// Auto-generated by tsbundle - do not edit export const files: { path: string; contentBase64: string }[] = [ { "path": "bundle.js", "contentBase64": "dmFyIHoxdD1PYmplY3QuY3JlYXRlLFMxdD1PYmplY3QuZnJlZXplLEU0PU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgQzF0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7dmFyIHFDYT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lczt2YXIgakNhPU9iamVjdC5nZXRQcm90b3R5cGVPZixWQ2E9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgVDF0PShzLGUpPT4oZT1TeW1ib2xbc10pP2U6U3ltYm9sLmZvcigiU3ltYm9sLiIrcyksYjc9cz0+e3Rocm93IFR5cGVFcnJvcihzKX07dmFyICQxdD0ocyxlLHQpPT5lIGluIHM/RTQocyxlLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTp0fSk6c1tlXT10O3ZhciBpPShzLGUpPT5FNChzLCJuYW1lIix7dmFsdWU6ZSxjb25maWd1cmFibGU6ITB9KTt2YXIgZz0ocyxlKT0+KCk9PihzJiYoZT1zKHM9MCkpLGUpO3ZhciBwbD0ocyxlKT0+KCk9PihlfHxzKChlPXtleHBvcnRzOnt9fSkuZXhwb3J0cyxlKSxlLmV4cG9ydHMpLHl0PShzLGUpPT57Zm9yKHZhciB0IGluIGUpRTQocyx0LHtnZXQ6ZVt0XSxlbnVtZXJhYmxlOiEwfSl9LFVDYT0ocyxlLHQsYSk9PntpZihlJiZ0eXBlb2YgZT09Im9iamVjdCJ8fHR5cGVvZiBlPT0iZnVuY3Rpb24iKWZvcihsZXQgciBvZiBxQ2EoZSkpIVZDYS5jYWxsKHMscikmJnIhPT10JiZFNChzLHIse2dldDooKT0+ZVtyXSxlbnVtZXJhYmxlOiEoYT1DMXQoZSxyKSl8fGEuZW51bWVyYWJsZX0pO3JldHVybiBzfTt2YXIgeG49KHMsZSx0KT0+KHQ9cyE9bnVsbD96MXQoakNhKHMpKTp7fSxVQ2EoZXx8IXN8fCFzLl9fZXNNb2R1bGU/RTQodCwiZGVmYXVsdCIse3ZhbHVlOnMsZW51bWVyYWJsZTohMH0pOnQscykpO3ZhciBSaT1zPT5bLCwsejF0KHM/LltUMXQoIm1ldGFkYXRhIildPz9udWxsKV0sRDF0PVsiY2xhc3MiLCJtZXRob2QiLCJnZXR0ZXIiLCJzZXR0ZXIiLCJhY2Nlc3NvciIsImZpZWxkIiwidmFsdWUiLCJnZXQiLCJzZXQiXSxLeD1zPT5zIT09dm9pZCAwJiZ0eXBlb2YgcyE9ImZ1bmN0aW9uIj9iNygiRnVuY3Rpb24gZXhwZWN0ZWQiKTpzLFdDYT0ocyxlLHQsYSxyKT0+KHtraW5kOkQxdFtzXSxuYW1lOmUsbWV0YWRhdGE6YSxhZGRJbml0aWFsaXplcjpuPT50Ll8/YjcoIkFscmVhZHkgaW5pdGlhbGl6ZWQiKTpyLnB1c2goS3gobnx8bnVsbCkpfSksR0NhPShzLGUpPT4kMXQoZSxUMXQoIm1ldGFkYXRhIiksc1szXSksaXQ9KHMsZSx0LGEpPT57Zm9yKHZhciByPTAsbj1zW2U+PjFdLG89biYmbi5sZW5ndGg7cjxvO3IrKyllJjE/bltyXS5jYWxsKHQpOmE9bltyXS5jYWxsKHQsYSk7cmV0dXJuIGF9LFJ0PShzLGUsdCxhLHIsbik9Pnt2YXIgbyxsLHAsZCx1LGM9ZSY3LGI9ISEoZSY4KSx2PSEhKGUmMTYpLHg9Yz4zP3MubGVuZ3RoKzE6Yz9iPzE6MjowLG09RDF0W2MrNV0sZj1jPjMmJihzW3gtMV09W10pLHk9c1t4XXx8KHNbeF09W10pLE09YyYmKCF2JiYhYiYmKHI9ci5wcm90b3R5cGUpLGM8NSYmKGM+M3x8IXYpJiZDMXQoYzw0P3I6e2dldFt0XSgpe3JldHVybiBfMXQodGhpcyxuKX0sc2V0W3RdKE4pe3JldHVybiBNMXQodGhpcyxuLE4pfX0sdCkpO2M/diYmYzw0JiZpKG4sKGM+Mj8ic2V0ICI6Yz4xPyJnZXQgIjoiIikrdCk6aShyLHQpO2Zvcih2YXIgej1hLmxlbmd0aC0xO3o+PTA7ei0tKWQ9V0NhKGMsdCxwPXt9LHNbM10seSksYyYmKGQuc3RhdGljPWIsZC5wcml2YXRlPXYsdT1kLmFjY2Vzcz17aGFzOnY/Tj0+S0NhKHIsTik6Tj0+dCBpbiBOfSxjXjMmJih1LmdldD12P049PihjXjE/XzF0OllDYSkoTixyLGNeND9uOk0uZ2V0KTpOPT5OW3RdKSxjPjImJih1LnNldD12PyhOLEMpPT5NMXQoTixyLEMsY140P246TS5zZXQpOihOLEMpPT5OW3RdPUMpKSxsPSgwLGFbel0pKGM/Yzw0P3Y/bjpNW21dOmM+ND92b2lkIDA6e2dldDpNLmdldCxzZXQ6TS5zZXR9OnIsZCkscC5fPTEsY140fHxsPT09dm9pZCAwP0t4KGwpJiYoYz40P2YudW5zaGlmdChsKTpjP3Y/bj1sOk1bbV09bDpyPWwpOnR5cGVvZiBsIT0ib2JqZWN0Inx8bD09PW51bGw/YjcoIk9iamVjdCBleHBlY3RlZCIpOihLeChvPWwuZ2V0KSYmKE0uZ2V0PW8pLEt4KG89bC5zZXQpJiYoTS5zZXQ9byksS3gobz1sLmluaXQpJiZmLnVuc2hpZnQobykpO3JldHVybiBjfHxHQ2EocyxyKSxNJiZFNChyLHQsTSksdj9jXjQ/bjpNOnJ9LHZpPShzLGUsdCk9PiQxdChzLHR5cGVvZiBlIT0ic3ltYm9sIj9lKyIiOmUsdCksRjJlPShzLGUsdCk9PmUuaGFzKHMpfHxiNygiQ2Fubm90ICIrdCksS0NhPShzLGUpPT5PYmplY3QoZSkhPT1lP2I3KCdDYW5ub3QgdXNlIHRoZSAiaW4iIG9wZXJhdG9yIG9uIHRoaXMgdmFsdWUnKTpzLmhhcyhlKSxfMXQ9KHMsZSx0KT0+KEYyZShzLGUsInJlYWQgZnJvbSBwcml2YXRlIGZpZWxkIiksdD90LmNhbGwocyk6ZS5nZXQocykpLGVhPShzLGUsdCk9PmUuaGFzKHMpP2I3KCJDYW5ub3QgYWRkIHRoZSBzYW1lIHByaXZhdGUgbWVtYmVyIG1vcmUgdGhhbiBvbmNlIik6ZSBpbnN0YW5jZW9mIFdlYWtTZXQ/ZS5hZGQocyk6ZS5zZXQocyx0KSxNMXQ9KHMsZSx0LGEpPT4oRjJlKHMsZSwid3JpdGUgdG8gcHJpdmF0ZSBmaWVsZCIpLGE/YS5jYWxsKHMsdCk6ZS5zZXQocyx0KSx0KSxZQ2E9KHMsZSx0KT0+KEYyZShzLGUsImFjY2VzcyBwcml2YXRlIG1ldGhvZCIpLHQpO3ZhciBiYz0ocyxlKT0+UzF0KEU0KHMsInJhdyIse3ZhbHVlOlMxdChlfHxzLnNsaWNlKCkpfSkpO3ZhciBTSixZeCxCMmUsTDF0LHY3LGFhLEosX0osWngsSDJlPWcoKCk9PntTSj1nbG9iYWxUaGlzLFl4PVNKLlNoYWRvd1Jvb3QmJihTSi5TaGFkeUNTUz09PXZvaWQgMHx8U0ouU2hhZHlDU1MubmF0aXZlU2hhZG93KSYmImFkb3B0ZWRTdHlsZVNoZWV0cyJpbiBEb2N1bWVudC5wcm90b3R5cGUmJiJyZXBsYWNlImluIENTU1N0eWxlU2hlZXQucHJvdG90eXBlLEIyZT1TeW1ib2woKSxMMXQ9bmV3IFdlYWtNYXAsdjc9Y2xhc3N7c3RhdGlje2kodGhpcywibiIpfWNvbnN0cnVjdG9yKGUsdCxhKXtpZih0aGlzLl8kY3NzUmVzdWx0JD0hMCxhIT09QjJlKXRocm93IEVycm9yKCJDU1NSZXN1bHQgaXMgbm90IGNvbnN0cnVjdGFibGUuIFVzZSBgdW5zYWZlQ1NTYCBvciBgY3NzYCBpbnN0ZWFkLiIpO3RoaXMuY3NzVGV4dD1lLHRoaXMudD10fWdldCBzdHlsZVNoZWV0KCl7bGV0IGU9dGhpcy5vLHQ9dGhpcy50O2lmKFl4JiZlPT09dm9pZCAwKXtsZXQgYT10IT09dm9pZCAwJiZ0Lmxlbmd0aD09PTE7YSYmKGU9TDF0LmdldCh0KSksZT09PXZvaWQgMCYmKCh0aGlzLm89ZT1uZXcgQ1NTU3R5bGVTaGVldCkucmVwbGFjZVN5bmModGhpcy5jc3NUZXh0KSxhJiZMMXQuc2V0KHQsZSkpfXJldHVybiBlfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuY3NzVGV4dH19LGFhPWkocz0+bmV3IHY3KHR5cGVvZiBzPT0ic3RyaW5nIj9zOnMrIiIsdm9pZCAwLEIyZSksInIiKSxKPWkoKHMsLi4uZSk9PntsZXQgdD1zLmxlbmd0aD09PTE/c1swXTplLnJlZHVjZSgoYSxyLG4pPT5hKyhvPT57aWYoby5fJGNzc1Jlc3VsdCQ9PT0hMClyZXR1cm4gby5jc3NUZXh0O2lmKHR5cGVvZiBvPT0ibnVtYmVyIilyZXR1cm4gbzt0aHJvdyBFcnJvcigiVmFsdWUgcGFzc2VkIHRvICdjc3MnIGZ1bmN0aW9uIG11c3QgYmUgYSAnY3NzJyBmdW5jdGlvbiByZXN1bHQ6ICIrbysiLiBVc2UgJ3Vuc2FmZUNTUycgdG8gcGFzcyBub24tbGl0ZXJhbCB2YWx1ZXMsIGJ1dCB0YWtlIGNhcmUgdG8gZW5zdXJlIHBhZ2Ugc2VjdXJpdHkuIil9KShyKStzW24rMV0sc1swXSk7cmV0dXJuIG5ldyB2Nyh0LHMsQjJlKX0sImkiKSxfSj1pKChzLGUpPT57aWYoWXgpcy5hZG9wdGVkU3R5bGVTaGVldHM9ZS5tYXAodD0+dCBpbnN0YW5jZW9mIENTU1N0eWxlU2hlZXQ/dDp0LnN0eWxlU2hlZXQpO2Vsc2UgZm9yKGxldCB0IG9mIGUpe2xldCBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIikscj1TSi5saXROb25jZTtyIT09dm9pZCAwJiZhLnNldEF0dHJpYnV0ZSgibm9uY2UiLHIpLGEudGV4dENvbnRlbnQ9dC5jc3NUZXh0LHMuYXBwZW5kQ2hpbGQoYSl9fSwiUyIpLFp4PVl4P3M9PnM6cz0+cyBpbnN0YW5jZW9mIENTU1N0eWxlU2hlZXQ/KGU9PntsZXQgdD0iIjtmb3IobGV0IGEgb2YgZS5jc3NSdWxlcyl0Kz1hLmNzc1RleHQ7cmV0dXJuIGFhKHQpfSkocyk6c30pO3ZhciBaQ2EsWENhLFFDYSxKQ2EsZVRhLHRUYSxNSixFMXQsYVRhLHNUYSxYeCx4NyxReCxQMXQsVjIsSng9ZygoKT0+e0gyZSgpO0gyZSgpOyh7aXM6WkNhLGRlZmluZVByb3BlcnR5OlhDYSxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6UUNhLGdldE93blByb3BlcnR5TmFtZXM6SkNhLGdldE93blByb3BlcnR5U3ltYm9sczplVGEsZ2V0UHJvdG90eXBlT2Y6dFRhfT1PYmplY3QpLE1KPWdsb2JhbFRoaXMsRTF0PU1KLnRydXN0ZWRUeXBlcyxhVGE9RTF0P0UxdC5lbXB0eVNjcmlwdDoiIixzVGE9TUoucmVhY3RpdmVFbGVtZW50UG9seWZpbGxTdXBwb3J0LFh4PWkoKHMsZSk9PnMsImQiKSx4Nz17dG9BdHRyaWJ1dGUocyxlKXtzd2l0Y2goZSl7Y2FzZSBCb29sZWFuOnM9cz9hVGE6bnVsbDticmVhaztjYXNlIE9iamVjdDpjYXNlIEFycmF5OnM9cz09bnVsbD9zOkpTT04uc3RyaW5naWZ5KHMpfXJldHVybiBzfSxmcm9tQXR0cmlidXRlKHMsZSl7bGV0IHQ9cztzd2l0Y2goZSl7Y2FzZSBCb29sZWFuOnQ9cyE9PW51bGw7YnJlYWs7Y2FzZSBOdW1iZXI6dD1zPT09bnVsbD9udWxsOk51bWJlcihzKTticmVhaztjYXNlIE9iamVjdDpjYXNlIEFycmF5OnRyeXt0PUpTT04ucGFyc2Uocyl9Y2F0Y2h7dD1udWxsfX1yZXR1cm4gdH19LFF4PWkoKHMsZSk9PiFaQ2EocyxlKSwiZiIpLFAxdD17YXR0cmlidXRlOiEwLHR5cGU6U3RyaW5nLGNvbnZlcnRlcjp4NyxyZWZsZWN0OiExLHVzZURlZmF1bHQ6ITEsaGFzQ2hhbmdlZDpReH07U3ltYm9sLm1ldGFkYXRhPz89U3ltYm9sKCJtZXRhZGF0YSIpLE1KLmxpdFByb3BlcnR5TWV0YWRhdGE/Pz1uZXcgV2Vha01hcDtWMj1jbGFzcyBleHRlbmRzIEhUTUxFbGVtZW50e3N0YXRpY3tpKHRoaXMsInkiKX1zdGF0aWMgYWRkSW5pdGlhbGl6ZXIoZSl7dGhpcy5fJEVpKCksKHRoaXMubD8/PVtdKS5wdXNoKGUpfXN0YXRpYyBnZXQgb2JzZXJ2ZWRBdHRyaWJ1dGVzKCl7cmV0dXJuIHRoaXMuZmluYWxpemUoKSx0aGlzLl8kRWgmJlsuLi50aGlzLl8kRWgua2V5cygpXX1zdGF0aWMgY3JlYXRlUHJvcGVydHkoZSx0PVAxdCl7aWYodC5zdGF0ZSYmKHQuYXR0cmlidXRlPSExKSx0aGlzLl8kRWkoKSx0aGlzLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eShlKSYmKCh0PU9iamVjdC5jcmVhdGUodCkpLndyYXBwZWQ9ITApLHRoaXMuZWxlbWVudFByb3BlcnRpZXMuc2V0KGUsdCksIXQubm9BY2Nlc3Nvcil7bGV0IGE9U3ltYm9sKCkscj10aGlzLmdldFByb3BlcnR5RGVzY3JpcHRvcihlLGEsdCk7ciE9PXZvaWQgMCYmWENhKHRoaXMucHJvdG90eXBlLGUscil9fXN0YXRpYyBnZXRQcm9wZXJ0eURlc2NyaXB0b3IoZSx0LGEpe2xldHtnZXQ6cixzZXQ6bn09UUNhKHRoaXMucHJvdG90eXBlLGUpPz97Z2V0KCl7cmV0dXJuIHRoaXNbdF19LHNldChvKXt0aGlzW3RdPW99fTtyZXR1cm57Z2V0OnIsc2V0KG8pe2xldCBsPXI/LmNhbGwodGhpcyk7bj8uY2FsbCh0aGlzLG8pLHRoaXMucmVxdWVzdFVwZGF0ZShlLGwsYSl9LGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwfX1zdGF0aWMgZ2V0UHJvcGVydHlPcHRpb25zKGUpe3JldHVybiB0aGlzLmVsZW1lbnRQcm9wZXJ0aWVzLmdldChlKT8/UDF0fXN0YXRpYyBfJEVpKCl7aWYodGhpcy5oYXNPd25Qcm9wZXJ0eShYeCgiZWxlbWVudFByb3BlcnRpZXMiKSkpcmV0dXJuO2xldCBlPXRUYSh0aGlzKTtlLmZpbmFsaXplKCksZS5sIT09dm9pZCAwJiYodGhpcy5sPVsuLi5lLmxdKSx0aGlzLmVsZW1lbnRQcm9wZXJ0aWVzPW5ldyBNYXAoZS5lbGVtZW50UHJvcGVydGllcyl9c3RhdGljIGZpbmFsaXplKCl7aWYodGhpcy5oYXNPd25Qcm9wZXJ0eShYeCgiZmluYWxpemVkIikpKXJldHVybjtpZih0aGlzLmZpbmFsaXplZD0hMCx0aGlzLl8kRWkoKSx0aGlzLmhhc093blByb3BlcnR5KFh4KCJwcm9wZXJ0aWVzIikpKXtsZXQgdD10aGlzLnByb3BlcnRpZXMsYT1bLi4uSkNhKHQpLC4uLmVUYSh0KV07Zm9yKGxldCByIG9mIGEpdGhpcy5jcmVhdGVQcm9wZXJ0eShyLHRbcl0pfWxldCBlPXRoaXNbU3ltYm9sLm1ldGFkYXRhXTtpZihlIT09bnVsbCl7bGV0IHQ9bGl0UHJvcGVydHlNZXRhZGF0YS5nZXQoZSk7aWYodCE9PXZvaWQgMClmb3IobGV0W2Escl1vZiB0KXRoaXMuZWxlbWVudFByb3BlcnRpZXMuc2V0KGEscil9dGhpcy5fJEVoPW5ldyBNYXA7Zm9yKGxldFt0LGFdb2YgdGhpcy5lbGVtZW50UHJvcGVydGllcyl7bGV0IHI9dGhpcy5fJEV1KHQsYSk7ciE9PXZvaWQgMCYmdGhpcy5fJEVoLnNldChyLHQpfXRoaXMuZWxlbWVudFN0eWxlcz10aGlzLmZpbmFsaXplU3R5bGVzKHRoaXMuc3R5bGVzKX1zdGF0aWMgZmluYWxpemVTdHlsZXMoZSl7bGV0IHQ9W107aWYoQXJyYXkuaXNBcnJheShlKSl7bGV0IGE9bmV3IFNldChlLmZsYXQoMS8wKS5yZXZlcnNlKCkpO2ZvcihsZXQgciBvZiBhKXQudW5zaGlmdChaeChyKSl9ZWxzZSBlIT09dm9pZCAwJiZ0LnB1c2goWngoZSkpO3JldHVybiB0fXN0YXRpYyBfJEV1KGUsdCl7bGV0IGE9dC5hdHRyaWJ1dGU7cmV0dXJuIGE9PT0hMT92b2lkIDA6dHlwZW9mIGE9PSJzdHJpbmciP2E6dHlwZW9mIGU9PSJzdHJpbmciP2UudG9Mb3dlckNhc2UoKTp2b2lkIDB9Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuXyRFcD12b2lkIDAsdGhpcy5pc1VwZGF0ZVBlbmRpbmc9ITEsdGhpcy5oYXNVcGRhdGVkPSExLHRoaXMuXyRFbT1udWxsLHRoaXMuXyRFdigpfV8kRXYoKXt0aGlzLl8kRVM9bmV3IFByb21pc2UoZT0+dGhpcy5lbmFibGVVcGRhdGluZz1lKSx0aGlzLl8kQUw9bmV3IE1hcCx0aGlzLl8kRV8oKSx0aGlzLnJlcXVlc3RVcGRhdGUoKSx0aGlzLmNvbnN0cnVjdG9yLmw/LmZvckVhY2goZT0+ZSh0aGlzKSl9YWRkQ29udHJvbGxlcihlKXsodGhpcy5fJEVPPz89bmV3IFNldCkuYWRkKGUpLHRoaXMucmVuZGVyUm9vdCE9PXZvaWQgMCYmdGhpcy5pc0Nvbm5lY3RlZCYmZS5ob3N0Q29ubmVjdGVkPy4oKX1yZW1vdmVDb250cm9sbGVyKGUpe3RoaXMuXyRFTz8uZGVsZXRlKGUpfV8kRV8oKXtsZXQgZT1uZXcgTWFwLHQ9dGhpcy5jb25zdHJ1Y3Rvci5lbGVtZW50UHJvcGVydGllcztmb3IobGV0IGEgb2YgdC5rZXlzKCkpdGhpcy5oYXNPd25Qcm9wZXJ0eShhKSYmKGUuc2V0KGEsdGhpc1thXSksZGVsZXRlIHRoaXNbYV0pO2Uuc2l6ZT4wJiYodGhpcy5fJEVwPWUpfWNyZWF0ZVJlbmRlclJvb3QoKXtsZXQgZT10aGlzLnNoYWRvd1Jvb3Q/P3RoaXMuYXR0YWNoU2hhZG93KHRoaXMuY29uc3RydWN0b3Iuc2hhZG93Um9vdE9wdGlvbnMpO3JldHVybiBfSihlLHRoaXMuY29uc3RydWN0b3IuZWxlbWVudFN0eWxlcyksZX1jb25uZWN0ZWRDYWxsYmFjaygpe3RoaXMucmVuZGVyUm9vdD8/PXRoaXMuY3JlYXRlUmVuZGVyUm9vdCgpLHRoaXMuZW5hYmxlVXBkYXRpbmcoITApLHRoaXMuXyRFTz8uZm9yRWFjaChlPT5lLmhvc3RDb25uZWN0ZWQ/LigpKX1lbmFibGVVcGRhdGluZyhlKXt9ZGlzY29ubmVjdGVkQ2FsbGJhY2soKXt0aGlzLl8kRU8/LmZvckVhY2goZT0+ZS5ob3N0RGlzY29ubmVjdGVkPy4oKSl9YXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKGUsdCxhKXt0aGlzLl8kQUsoZSxhKX1fJEVUKGUsdCl7bGV0IGE9dGhpcy5jb25zdHJ1Y3Rvci5lbGVtZW50UHJvcGVydGllcy5nZXQoZSkscj10aGlzLmNvbnN0cnVjdG9yLl8kRXUoZSxhKTtpZihyIT09dm9pZCAwJiZhLnJlZmxlY3Q9PT0hMCl7bGV0IG49KGEuY29udmVydGVyPy50b0F0dHJpYnV0ZSE9PXZvaWQgMD9hLmNvbnZlcnRlcjp4NykudG9BdHRyaWJ1dGUodCxhLnR5cGUpO3RoaXMuXyRFbT1lLG49PW51bGw/dGhpcy5yZW1vdmVBdHRyaWJ1dGUocik6dGhpcy5zZXRBdHRyaWJ1dGUocixuKSx0aGlzLl8kRW09bnVsbH19XyRBSyhlLHQpe2xldCBhPXRoaXMuY29uc3RydWN0b3Iscj1hLl8kRWguZ2V0KGUpO2lmKHIhPT12b2lkIDAmJnRoaXMuXyRFbSE9PXIpe2xldCBuPWEuZ2V0UHJvcGVydHlPcHRpb25zKHIpLG89dHlwZW9mIG4uY29udmVydGVyPT0iZnVuY3Rpb24iP3tmcm9tQXR0cmlidXRlOm4uY29udmVydGVyfTpuLmNvbnZlcnRlcj8uZnJvbUF0dHJpYnV0ZSE9PXZvaWQgMD9uLmNvbnZlcnRlcjp4Nzt0aGlzLl8kRW09cjtsZXQgbD1vLmZyb21BdHRyaWJ1dGUodCxuLnR5cGUpO3RoaXNbcl09bD8/dGhpcy5fJEVqPy5nZXQocik/P2wsdGhpcy5fJEVtPW51bGx9fXJlcXVlc3RVcGRhdGUoZSx0LGEscj0hMSxuKXtpZihlIT09dm9pZCAwKXtsZXQgbz10aGlzLmNvbnN0cnVjdG9yO2lmKHI9PT0hMSYmKG49dGhpc1tlXSksYT8/PW8uZ2V0UHJvcGVydHlPcHRpb25zKGUpLCEoKGEuaGFzQ2hhbmdlZD8/UXgpKG4sdCl8fGEudXNlRGVmYXVsdCYmYS5yZWZsZWN0JiZuPT09dGhpcy5fJEVqPy5nZXQoZSkmJiF0aGlzLmhhc0F0dHJpYnV0ZShvLl8kRXUoZSxhKSkpKXJldHVybjt0aGlzLkMoZSx0LGEpfXRoaXMuaXNVcGRhdGVQZW5kaW5nPT09ITEmJih0aGlzLl8kRVM9dGhpcy5fJEVQKCkpfUMoZSx0LHt1c2VEZWZhdWx0OmEscmVmbGVjdDpyLHdyYXBwZWQ6bn0sbyl7YSYmISh0aGlzLl8kRWo/Pz1uZXcgTWFwKS5oYXMoZSkmJih0aGlzLl8kRWouc2V0KGUsbz8/dD8/dGhpc1tlXSksbiE9PSEwfHxvIT09dm9pZCAwKXx8KHRoaXMuXyRBTC5oYXMoZSl8fCh0aGlzLmhhc1VwZGF0ZWR8fGF8fCh0PXZvaWQgMCksdGhpcy5fJEFMLnNldChlLHQpKSxyPT09ITAmJnRoaXMuXyRFbSE9PWUmJih0aGlzLl8kRXE/Pz1uZXcgU2V0KS5hZGQoZSkpfWFzeW5jIF8kRVAoKXt0aGlzLmlzVXBkYXRlUGVuZGluZz0hMDt0cnl7YXdhaXQgdGhpcy5fJEVTfWNhdGNoKHQpe1Byb21pc2UucmVqZWN0KHQpfWxldCBlPXRoaXMuc2NoZWR1bGVVcGRhdGUoKTtyZXR1cm4gZSE9bnVsbCYmYXdhaXQgZSwhdGhpcy5pc1VwZGF0ZVBlbmRpbmd9c2NoZWR1bGVVcGRhdGUoKXtyZXR1cm4gdGhpcy5wZXJmb3JtVXBkYXRlKCl9cGVyZm9ybVVwZGF0ZSgpe2lmKCF0aGlzLmlzVXBkYXRlUGVuZGluZylyZXR1cm47aWYoIXRoaXMuaGFzVXBkYXRlZCl7aWYodGhpcy5yZW5kZXJSb290Pz89dGhpcy5jcmVhdGVSZW5kZXJSb290KCksdGhpcy5fJEVwKXtmb3IobGV0W3Isbl1vZiB0aGlzLl8kRXApdGhpc1tyXT1uO3RoaXMuXyRFcD12b2lkIDB9bGV0IGE9dGhpcy5jb25zdHJ1Y3Rvci5lbGVtZW50UHJvcGVydGllcztpZihhLnNpemU+MClmb3IobGV0W3Isbl1vZiBhKXtsZXR7d3JhcHBlZDpvfT1uLGw9dGhpc1tyXTtvIT09ITB8fHRoaXMuXyRBTC5oYXMocil8fGw9PT12b2lkIDB8fHRoaXMuQyhyLHZvaWQgMCxuLGwpfX1sZXQgZT0hMSx0PXRoaXMuXyRBTDt0cnl7ZT10aGlzLnNob3VsZFVwZGF0ZSh0KSxlPyh0aGlzLndpbGxVcGRhdGUodCksdGhpcy5fJEVPPy5mb3JFYWNoKGE9PmEuaG9zdFVwZGF0ZT8uKCkpLHRoaXMudXBkYXRlKHQpKTp0aGlzLl8kRU0oKX1jYXRjaChhKXt0aHJvdyBlPSExLHRoaXMuXyRFTSgpLGF9ZSYmdGhpcy5fJEFFKHQpfXdpbGxVcGRhdGUoZSl7fV8kQUUoZSl7dGhpcy5fJEVPPy5mb3JFYWNoKHQ9PnQuaG9zdFVwZGF0ZWQ/LigpKSx0aGlzLmhhc1VwZGF0ZWR8fCh0aGlzLmhhc1VwZGF0ZWQ9ITAsdGhpcy5maXJzdFVwZGF0ZWQoZSkpLHRoaXMudXBkYXRlZChlKX1fJEVNKCl7dGhpcy5fJEFMPW5ldyBNYXAsdGhpcy5pc1VwZGF0ZVBlbmRpbmc9ITF9Z2V0IHVwZGF0ZUNvbXBsZXRlKCl7cmV0dXJuIHRoaXMuZ2V0VXBkYXRlQ29tcGxldGUoKX1nZXRVcGRhdGVDb21wbGV0ZSgpe3JldHVybiB0aGlzLl8kRVN9c2hvdWxkVXBkYXRlKGUpe3JldHVybiEwfXVwZGF0ZShlKXt0aGlzLl8kRXEmJj10aGlzLl8kRXEuZm9yRWFjaCh0PT50aGlzLl8kRVQodCx0aGlzW3RdKSksdGhpcy5fJEVNKCl9dXBkYXRlZChlKXt9Zmlyc3RVcGRhdGVkKGUpe319O1YyLmVsZW1lbnRTdHlsZXM9W10sVjIuc2hhZG93Um9vdE9wdGlvbnM9e21vZGU6Im9wZW4ifSxWMltYeCgiZWxlbWVudFByb3BlcnRpZXMiKV09bmV3IE1hcCxWMltYeCgiZmluYWxpemVkIildPW5ldyBNYXAsc1RhPy4oe1JlYWN0aXZlRWxlbWVudDpWMn0pLChNSi5yZWFjdGl2ZUVsZW1lbnRWZXJzaW9ucz8/PVtdKS5wdXNoKCIyLjEuMiIpfSk7ZnVuY3Rpb24gajF0KHMsZSl7aWYoIVUyZShzKXx8IXMuaGFzT3duUHJvcGVydHkoInJhdyIpKXRocm93IEVycm9yKCJpbnZhbGlkIHRlbXBsYXRlIHN0cmluZ3MgYXJyYXkiKTtyZXR1cm4gQTF0IT09dm9pZCAwP0ExdC5jcmVhdGVIVE1MKGUpOmV9ZnVuY3Rpb24gTjQocyxlLHQ9cyxhKXtpZihlPT09b2kpcmV0dXJuIGU7bGV0IHI9YSE9PXZvaWQgMD90Ll8kQ28/LlthXTp0Ll8kQ2wsbj10eShlKT92b2lkIDA6ZS5fJGxpdERpcmVjdGl2ZSQ7cmV0dXJuIHI/LmNvbnN0cnVjdG9yIT09biYmKHI/Ll8kQU8/LighMSksbj09PXZvaWQgMD9yPXZvaWQgMDoocj1uZXcgbihzKSxyLl8kQVQocyx0LGEpKSxhIT09dm9pZCAwPyh0Ll8kQ28/Pz1bXSlbYV09cjp0Ll8kQ2w9ciksciE9PXZvaWQgMCYmKGU9TjQocyxyLl8kQVMocyxlLnZhbHVlcykscixhKSksZX12YXIgcTJlLEkxdCx6SixBMXQsajJlLHIwLFYyZSxpVGEsUDQsZXksdHksVTJlLE4xdCxXMmUsYXksUjF0LE8xdCxJNCxGMXQsQjF0LEgxdCxHMmUsdyxLMmUsWTJlLG9pLHhpLHExdCxBNCxWMXQsc3ksQ0oseTcsUjQsVEosJEosREosTEosWjJlLHJUYSxoMSxmMT1nKCgpPT57cTJlPWdsb2JhbFRoaXMsSTF0PWkocz0+cywiaSIpLHpKPXEyZS50cnVzdGVkVHlwZXMsQTF0PXpKP3pKLmNyZWF0ZVBvbGljeSgibGl0LWh0bWwiLHtjcmVhdGVIVE1MOmkocz0+cywiY3JlYXRlSFRNTCIpfSk6dm9pZCAwLGoyZT0iJGxpdCQiLHIwPWBsaXQkJHtNYXRoLnJhbmRvbSgpLnRvRml4ZWQoOSkuc2xpY2UoMil9JGAsVjJlPSI/IityMCxpVGE9YDwke1YyZX0+YCxQND1kb2N1bWVudCxleT1pKCgpPT5QNC5jcmVhdGVDb21tZW50KCIiKSwiYyIpLHR5PWkocz0+cz09PW51bGx8fHR5cGVvZiBzIT0ib2JqZWN0IiYmdHlwZW9mIHMhPSJmdW5jdGlvbiIsImEiKSxVMmU9QXJyYXkuaXNBcnJheSxOMXQ9aShzPT5VMmUocyl8fHR5cGVvZiBzPy5bU3ltYm9sLml0ZXJhdG9yXT09ImZ1bmN0aW9uIiwiZCIpLFcyZT1gWyAJClxmXHJdYCxheT0vPCg/OighLS18XC9bXmEtekEtWl0pfChcLz9bYS16QS1aXVtePlxzXSopfChcLz8kKSkvZyxSMXQ9Ly0tPi9nLE8xdD0vPi9nLEk0PVJlZ0V4cChgPnwke1cyZX0oPzooW15cXHMiJz49L10rKSgke1cyZX0qPSR7VzJlfSooPzpbXiAJClxmXHIiJ1xgPD49XXwoInwnKXwpKXwkKWAsImciKSxGMXQ9LycvZyxCMXQ9LyIvZyxIMXQ9L14oPzpzY3JpcHR8c3R5bGV8dGV4dGFyZWF8dGl0bGUpJC9pLEcyZT1pKHM9PihlLC4uLnQpPT4oe18kbGl0VHlwZSQ6cyxzdHJpbmdzOmUsdmFsdWVzOnR9KSwieCIpLHc9RzJlKDEpLEsyZT1HMmUoMiksWTJlPUcyZSgzKSxvaT1TeW1ib2wuZm9yKCJsaXQtbm9DaGFuZ2UiKSx4aT1TeW1ib2wuZm9yKCJsaXQtbm90aGluZyIpLHExdD1uZXcgV2Vha01hcCxBND1QNC5jcmVhdGVUcmVlV2Fsa2VyKFA0LDEyOSk7aShqMXQsIlYiKTtWMXQ9aSgocyxlKT0+e2xldCB0PXMubGVuZ3RoLTEsYT1bXSxyLG49ZT09PTI/Ijxzdmc+IjplPT09Mz8iPG1hdGg+IjoiIixvPWF5O2ZvcihsZXQgbD0wO2w8dDtsKyspe2xldCBwPXNbbF0sZCx1LGM9LTEsYj0wO2Zvcig7YjxwLmxlbmd0aCYmKG8ubGFzdEluZGV4PWIsdT1vLmV4ZWMocCksdSE9PW51bGwpOyliPW8ubGFzdEluZGV4LG89PT1heT91WzFdPT09IiEtLSI/bz1SMXQ6dVsxXSE9PXZvaWQgMD9vPU8xdDp1WzJdIT09dm9pZCAwPyhIMXQudGVzdCh1WzJdKSYmKHI9UmVnRXhwKCI8LyIrdVsyXSwiZyIpKSxvPUk0KTp1WzNdIT09dm9pZCAwJiYobz1JNCk6bz09PUk0P3VbMF09PT0iPiI/KG89cj8/YXksYz0tMSk6dVsxXT09PXZvaWQgMD9jPS0yOihjPW8ubGFzdEluZGV4LXVbMl0ubGVuZ3RoLGQ9dVsxXSxvPXVbM109PT12b2lkIDA/STQ6dVszXT09PSciJz9CMXQ6RjF0KTpvPT09QjF0fHxvPT09RjF0P289STQ6bz09PVIxdHx8bz09PU8xdD9vPWF5OihvPUk0LHI9dm9pZCAwKTtsZXQgdj1vPT09STQmJnNbbCsxXS5zdGFydHNXaXRoKCIvPiIpPyIgIjoiIjtuKz1vPT09YXk/cCtpVGE6Yz49MD8oYS5wdXNoKGQpLHAuc2xpY2UoMCxjKStqMmUrcC5zbGljZShjKStyMCt2KTpwK3IwKyhjPT09LTI/bDp2KX1yZXR1cm5bajF0KHMsbisoc1t0XXx8Ijw/PiIpKyhlPT09Mj8iPC9zdmc+IjplPT09Mz8iPC9tYXRoPiI6IiIpKSxhXX0sIk4iKSxzeT1jbGFzcyBze3N0YXRpY3tpKHRoaXMsIlMiKX1jb25zdHJ1Y3Rvcih7c3RyaW5nczplLF8kbGl0VHlwZSQ6dH0sYSl7bGV0IHI7dGhpcy5wYXJ0cz1bXTtsZXQgbj0wLG89MCxsPWUubGVuZ3RoLTEscD10aGlzLnBhcnRzLFtkLHVdPVYxdChlLHQpO2lmKHRoaXMuZWw9cy5jcmVhdGVFbGVtZW50KGQsYSksQTQuY3VycmVudE5vZGU9dGhpcy5lbC5jb250ZW50LHQ9PT0yfHx0PT09Myl7bGV0IGM9dGhpcy5lbC5jb250ZW50LmZpcnN0Q2hpbGQ7Yy5yZXBsYWNlV2l0aCguLi5jLmNoaWxkTm9kZXMpfWZvcig7KHI9QTQubmV4dE5vZGUoKSkhPT1udWxsJiZwLmxlbmd0aDxsOyl7aWYoci5ub2RlVHlwZT09PTEpe2lmKHIuaGFzQXR0cmlidXRlcygpKWZvcihsZXQgYyBvZiByLmdldEF0dHJpYnV0ZU5hbWVzKCkpaWYoYy5lbmRzV2l0aChqMmUpKXtsZXQgYj11W28rK10sdj1yLmdldEF0dHJpYnV0ZShjKS5zcGxpdChyMCkseD0vKFsuP0BdKT8oLiopLy5leGVjKGIpO3AucHVzaCh7dHlwZToxLGluZGV4Om4sbmFtZTp4WzJdLHN0cmluZ3M6dixjdG9yOnhbMV09PT0iLiI/VEo6eFsxXT09PSI/Ij8kSjp4WzFdPT09IkAiP0RKOlI0fSksci5yZW1vdmVBdHRyaWJ1dGUoYyl9ZWxzZSBjLnN0YXJ0c1dpdGgocjApJiYocC5wdXNoKHt0eXBlOjYsaW5kZXg6bn0pLHIucmVtb3ZlQXR0cmlidXRlKGMpKTtpZihIMXQudGVzdChyLnRhZ05hbWUpKXtsZXQgYz1yLnRleHRDb250ZW50LnNwbGl0KHIwKSxiPWMubGVuZ3RoLTE7aWYoYj4wKXtyLnRleHRDb250ZW50PXpKP3pKLmVtcHR5U2NyaXB0OiIiO2ZvcihsZXQgdj0wO3Y8Yjt2Kyspci5hcHBlbmQoY1t2XSxleSgpKSxBNC5uZXh0Tm9kZSgpLHAucHVzaCh7dHlwZToyLGluZGV4Oisrbn0pO3IuYXBwZW5kKGNbYl0sZXkoKSl9fX1lbHNlIGlmKHIubm9kZVR5cGU9PT04KWlmKHIuZGF0YT09PVYyZSlwLnB1c2goe3R5cGU6MixpbmRleDpufSk7ZWxzZXtsZXQgYz0tMTtmb3IoOyhjPXIuZGF0YS5pbmRleE9mKHIwLGMrMSkpIT09LTE7KXAucHVzaCh7dHlwZTo3LGluZGV4Om59KSxjKz1yMC5sZW5ndGgtMX1uKyt9fXN0YXRpYyBjcmVhdGVFbGVtZW50KGUsdCl7bGV0IGE9UDQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtyZXR1cm4gYS5pbm5lckhUTUw9ZSxhfX07aShONCwiTSIpO0NKPWNsYXNze3N0YXRpY3tpKHRoaXMsIlIiKX1jb25zdHJ1Y3RvcihlLHQpe3RoaXMuXyRBVj1bXSx0aGlzLl8kQU49dm9pZCAwLHRoaXMuXyRBRD1lLHRoaXMuXyRBTT10fWdldCBwYXJlbnROb2RlKCl7cmV0dXJuIHRoaXMuXyRBTS5wYXJlbnROb2RlfWdldCBfJEFVKCl7cmV0dXJuIHRoaXMuXyRBTS5fJEFVfXUoZSl7bGV0e2VsOntjb250ZW50OnR9LHBhcnRzOmF9PXRoaXMuXyRBRCxyPShlPy5jcmVhdGlvblNjb3BlPz9QNCkuaW1wb3J0Tm9kZSh0LCEwKTtBNC5jdXJyZW50Tm9kZT1yO2xldCBuPUE0Lm5leHROb2RlKCksbz0wLGw9MCxwPWFbMF07Zm9yKDtwIT09dm9pZCAwOyl7aWYobz09PXAuaW5kZXgpe2xldCBkO3AudHlwZT09PTI/ZD1uZXcgeTcobixuLm5leHRTaWJsaW5nLHRoaXMsZSk6cC50eXBlPT09MT9kPW5ldyBwLmN0b3IobixwLm5hbWUscC5zdHJpbmdzLHRoaXMsZSk6cC50eXBlPT09NiYmKGQ9bmV3IExKKG4sdGhpcyxlKSksdGhpcy5fJEFWLnB1c2goZCkscD1hWysrbF19byE9PXA/LmluZGV4JiYobj1BNC5uZXh0Tm9kZSgpLG8rKyl9cmV0dXJuIEE0LmN1cnJlbnROb2RlPVA0LHJ9cChlKXtsZXQgdD0wO2ZvcihsZXQgYSBvZiB0aGlzLl8kQVYpYSE9PXZvaWQgMCYmKGEuc3RyaW5ncyE9PXZvaWQgMD8oYS5fJEFJKGUsYSx0KSx0Kz1hLnN0cmluZ3MubGVuZ3RoLTIpOmEuXyRBSShlW3RdKSksdCsrfX0seTc9Y2xhc3Mgc3tzdGF0aWN7aSh0aGlzLCJrIil9Z2V0IF8kQVUoKXtyZXR1cm4gdGhpcy5fJEFNPy5fJEFVPz90aGlzLl8kQ3Z9Y29uc3RydWN0b3IoZSx0LGEscil7dGhpcy50eXBlPTIsdGhpcy5fJEFIPXhpLHRoaXMuXyRBTj12b2lkIDAsdGhpcy5fJEFBPWUsdGhpcy5fJEFCPXQsdGhpcy5fJEFNPWEsdGhpcy5vcHRpb25zPXIsdGhpcy5fJEN2PXI/LmlzQ29ubmVjdGVkPz8hMH1nZXQgcGFyZW50Tm9kZSgpe2xldCBlPXRoaXMuXyRBQS5wYXJlbnROb2RlLHQ9dGhpcy5fJEFNO3JldHVybiB0IT09dm9pZCAwJiZlPy5ub2RlVHlwZT09PTExJiYoZT10LnBhcmVudE5vZGUpLGV9Z2V0IHN0YXJ0Tm9kZSgpe3JldHVybiB0aGlzLl8kQUF9Z2V0IGVuZE5vZGUoKXtyZXR1cm4gdGhpcy5fJEFCfV8kQUkoZSx0PXRoaXMpe2U9TjQodGhpcyxlLHQpLHR5KGUpP2U9PT14aXx8ZT09bnVsbHx8ZT09PSIiPyh0aGlzLl8kQUghPT14aSYmdGhpcy5fJEFSKCksdGhpcy5fJEFIPXhpKTplIT09dGhpcy5fJEFIJiZlIT09b2kmJnRoaXMuXyhlKTplLl8kbGl0VHlwZSQhPT12b2lkIDA/dGhpcy4kKGUpOmUubm9kZVR5cGUhPT12b2lkIDA/dGhpcy5UKGUpOk4xdChlKT90aGlzLmsoZSk6dGhpcy5fKGUpfU8oZSl7cmV0dXJuIHRoaXMuXyRBQS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLHRoaXMuXyRBQil9VChlKXt0aGlzLl8kQUghPT1lJiYodGhpcy5fJEFSKCksdGhpcy5fJEFIPXRoaXMuTyhlKSl9XyhlKXt0aGlzLl8kQUghPT14aSYmdHkodGhpcy5fJEFIKT90aGlzLl8kQUEubmV4dFNpYmxpbmcuZGF0YT1lOnRoaXMuVChQNC5jcmVhdGVUZXh0Tm9kZShlKSksdGhpcy5fJEFIPWV9JChlKXtsZXR7dmFsdWVzOnQsXyRsaXRUeXBlJDphfT1lLHI9dHlwZW9mIGE9PSJudW1iZXIiP3RoaXMuXyRBQyhlKTooYS5lbD09PXZvaWQgMCYmKGEuZWw9c3kuY3JlYXRlRWxlbWVudChqMXQoYS5oLGEuaFswXSksdGhpcy5vcHRpb25zKSksYSk7aWYodGhpcy5fJEFIPy5fJEFEPT09cil0aGlzLl8kQUgucCh0KTtlbHNle2xldCBuPW5ldyBDSihyLHRoaXMpLG89bi51KHRoaXMub3B0aW9ucyk7bi5wKHQpLHRoaXMuVChvKSx0aGlzLl8kQUg9bn19XyRBQyhlKXtsZXQgdD1xMXQuZ2V0KGUuc3RyaW5ncyk7cmV0dXJuIHQ9PT12b2lkIDAmJnExdC5zZXQoZS5zdHJpbmdzLHQ9bmV3IHN5KGUpKSx0fWsoZSl7VTJlKHRoaXMuXyRBSCl8fCh0aGlzLl8kQUg9W10sdGhpcy5fJEFSKCkpO2xldCB0PXRoaXMuXyRBSCxhLHI9MDtmb3IobGV0IG4gb2YgZSlyPT09dC5sZW5ndGg/dC5wdXNoKGE9bmV3IHModGhpcy5PKGV5KCkpLHRoaXMuTyhleSgpKSx0aGlzLHRoaXMub3B0aW9ucykpOmE9dFtyXSxhLl8kQUkobikscisrO3I8dC5sZW5ndGgmJih0aGlzLl8kQVIoYSYmYS5fJEFCLm5leHRTaWJsaW5nLHIpLHQubGVuZ3RoPXIpfV8kQVIoZT10aGlzLl8kQUEubmV4dFNpYmxpbmcsdCl7Zm9yKHRoaXMuXyRBUD8uKCExLCEwLHQpO2UhPT10aGlzLl8kQUI7KXtsZXQgYT1JMXQoZSkubmV4dFNpYmxpbmc7STF0KGUpLnJlbW92ZSgpLGU9YX19c2V0Q29ubmVjdGVkKGUpe3RoaXMuXyRBTT09PXZvaWQgMCYmKHRoaXMuXyRDdj1lLHRoaXMuXyRBUD8uKGUpKX19LFI0PWNsYXNze3N0YXRpY3tpKHRoaXMsIkgiKX1nZXQgdGFnTmFtZSgpe3JldHVybiB0aGlzLmVsZW1lbnQudGFnTmFtZX1nZXQgXyRBVSgpe3JldHVybiB0aGlzLl8kQU0uXyRBVX1jb25zdHJ1Y3RvcihlLHQsYSxyLG4pe3RoaXMudHlwZT0xLHRoaXMuXyRBSD14aSx0aGlzLl8kQU49dm9pZCAwLHRoaXMuZWxlbWVudD1lLHRoaXMubmFtZT10LHRoaXMuXyRBTT1yLHRoaXMub3B0aW9ucz1uLGEubGVuZ3RoPjJ8fGFbMF0hPT0iInx8YVsxXSE9PSIiPyh0aGlzLl8kQUg9QXJyYXkoYS5sZW5ndGgtMSkuZmlsbChuZXcgU3RyaW5nKSx0aGlzLnN0cmluZ3M9YSk6dGhpcy5fJEFIPXhpfV8kQUkoZSx0PXRoaXMsYSxyKXtsZXQgbj10aGlzLnN0cmluZ3Msbz0hMTtpZihuPT09dm9pZCAwKWU9TjQodGhpcyxlLHQsMCksbz0hdHkoZSl8fGUhPT10aGlzLl8kQUgmJmUhPT1vaSxvJiYodGhpcy5fJEFIPWUpO2Vsc2V7bGV0IGw9ZSxwLGQ7Zm9yKGU9blswXSxwPTA7cDxuLmxlbmd0aC0xO3ArKylkPU40KHRoaXMsbFthK3BdLHQscCksZD09PW9pJiYoZD10aGlzLl8kQUhbcF0pLG98fD0hdHkoZCl8fGQhPT10aGlzLl8kQUhbcF0sZD09PXhpP2U9eGk6ZSE9PXhpJiYoZSs9KGQ/PyIiKStuW3ArMV0pLHRoaXMuXyRBSFtwXT1kfW8mJiFyJiZ0aGlzLmooZSl9aihlKXtlPT09eGk/dGhpcy5lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSh0aGlzLm5hbWUpOnRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLGU/PyIiKX19LFRKPWNsYXNzIGV4dGVuZHMgUjR7c3RhdGlje2kodGhpcywiSSIpfWNvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnR5cGU9M31qKGUpe3RoaXMuZWxlbWVudFt0aGlzLm5hbWVdPWU9PT14aT92b2lkIDA6ZX19LCRKPWNsYXNzIGV4dGVuZHMgUjR7c3RhdGlje2kodGhpcywiTCIpfWNvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnR5cGU9NH1qKGUpe3RoaXMuZWxlbWVudC50b2dnbGVBdHRyaWJ1dGUodGhpcy5uYW1lLCEhZSYmZSE9PXhpKX19LERKPWNsYXNzIGV4dGVuZHMgUjR7c3RhdGlje2kodGhpcywieiIpfWNvbnN0cnVjdG9yKGUsdCxhLHIsbil7c3VwZXIoZSx0LGEscixuKSx0aGlzLnR5cGU9NX1fJEFJKGUsdD10aGlzKXtpZigoZT1ONCh0aGlzLGUsdCwwKT8/eGkpPT09b2kpcmV0dXJuO2xldCBhPXRoaXMuXyRBSCxyPWU9PT14aSYmYSE9PXhpfHxlLmNhcHR1cmUhPT1hLmNhcHR1cmV8fGUub25jZSE9PWEub25jZXx8ZS5wYXNzaXZlIT09YS5wYXNzaXZlLG49ZSE9PXhpJiYoYT09PXhpfHxyKTtyJiZ0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLm5hbWUsdGhpcyxhKSxuJiZ0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLm5hbWUsdGhpcyxlKSx0aGlzLl8kQUg9ZX1oYW5kbGVFdmVudChlKXt0eXBlb2YgdGhpcy5fJEFIPT0iZnVuY3Rpb24iP3RoaXMuXyRBSC5jYWxsKHRoaXMub3B0aW9ucz8uaG9zdD8/dGhpcy5lbGVtZW50LGUpOnRoaXMuXyRBSC5oYW5kbGVFdmVudChlKX19LExKPWNsYXNze3N0YXRpY3tpKHRoaXMsIloiKX1jb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5lbGVtZW50PWUsdGhpcy50eXBlPTYsdGhpcy5fJEFOPXZvaWQgMCx0aGlzLl8kQU09dCx0aGlzLm9wdGlvbnM9YX1nZXQgXyRBVSgpe3JldHVybiB0aGlzLl8kQU0uXyRBVX1fJEFJKGUpe040KHRoaXMsZSl9fSxaMmU9e006ajJlLFA6cjAsQTpWMmUsQzoxLEw6VjF0LFI6Q0osRDpOMXQsVjpONCxJOnk3LEg6UjQsTjokSixVOkRKLEI6VEosRjpMSn0sclRhPXEyZS5saXRIdG1sUG9seWZpbGxTdXBwb3J0O3JUYT8uKHN5LHk3KSwocTJlLmxpdEh0bWxWZXJzaW9ucz8/PVtdKS5wdXNoKCIzLjMuMiIpO2gxPWkoKHMsZSx0KT0+e2xldCBhPXQ/LnJlbmRlckJlZm9yZT8/ZSxyPWEuXyRsaXRQYXJ0JDtpZihyPT09dm9pZCAwKXtsZXQgbj10Py5yZW5kZXJCZWZvcmU/P251bGw7YS5fJGxpdFBhcnQkPXI9bmV3IHk3KGUuaW5zZXJ0QmVmb3JlKGV5KCksbiksbix2b2lkIDAsdD8/e30pfXJldHVybiByLl8kQUkocykscn0sIkQiKX0pO3ZhciBYMmUsbzAsb1RhLG5UYSxVMXQ9ZygoKT0+e0p4KCk7SngoKTtmMSgpO2YxKCk7WDJlPWdsb2JhbFRoaXMsbzA9Y2xhc3MgZXh0ZW5kcyBWMntzdGF0aWN7aSh0aGlzLCJpIil9Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMucmVuZGVyT3B0aW9ucz17aG9zdDp0aGlzfSx0aGlzLl8kRG89dm9pZCAwfWNyZWF0ZVJlbmRlclJvb3QoKXtsZXQgZT1zdXBlci5jcmVhdGVSZW5kZXJSb290KCk7cmV0dXJuIHRoaXMucmVuZGVyT3B0aW9ucy5yZW5kZXJCZWZvcmU/Pz1lLmZpcnN0Q2hpbGQsZX11cGRhdGUoZSl7bGV0IHQ9dGhpcy5yZW5kZXIoKTt0aGlzLmhhc1VwZGF0ZWR8fCh0aGlzLnJlbmRlck9wdGlvbnMuaXNDb25uZWN0ZWQ9dGhpcy5pc0Nvbm5lY3RlZCksc3VwZXIudXBkYXRlKGUpLHRoaXMuXyREbz1oMSh0LHRoaXMucmVuZGVyUm9vdCx0aGlzLnJlbmRlck9wdGlvbnMpfWNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLl8kRG8/LnNldENvbm5lY3RlZCghMCl9ZGlzY29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuXyREbz8uc2V0Q29ubmVjdGVkKCExKX1yZW5kZXIoKXtyZXR1cm4gb2l9fTtvMC5fJGxpdEVsZW1lbnQkPSEwLG8wLmZpbmFsaXplZD0hMCxYMmUubGl0RWxlbWVudEh5ZHJhdGVTdXBwb3J0Py4oe0xpdEVsZW1lbnQ6bzB9KTtvVGE9WDJlLmxpdEVsZW1lbnRQb2x5ZmlsbFN1cHBvcnQ7b1RhPy4oe0xpdEVsZW1lbnQ6bzB9KTtuVGE9e18kQUs6aSgocyxlLHQpPT57cy5fJEFLKGUsdCl9LCJfJEFLIiksXyRBTDppKHM9PnMuXyRBTCwiXyRBTCIpfTsoWDJlLmxpdEVsZW1lbnRWZXJzaW9ucz8/PVtdKS5wdXNoKCI0LjIuMiIpfSk7dmFyIGxUYSxXMXQ9ZygoKT0+e2xUYT0hMX0pO3ZhciB2Yz1nKCgpPT57SngoKTtmMSgpO1UxdCgpO1cxdCgpfSk7dmFyIGl5PXBsKEVKPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShFSiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksRUoudW5pPXZvaWQgMDt2YXIgY1RhPWkoKHM9InVuaSIpPT5gJHtzfV8keyJ4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHgiLnJlcGxhY2UoL1t4eV0vZyxlPT57bGV0IHQ9TWF0aC5yYW5kb20oKSoxNnwwO3JldHVybihlPT09IngiP3Q6dCYzfDgpLnRvU3RyaW5nKDE2KX0pfWAsInVuaSIpO0VKLnVuaT1jVGF9KTt2YXIgUEoscnAsSUo9ZygoKT0+e1BKPWNsYXNze3N0YXRpY3tpKHRoaXMsIkRlZmVycmVkIil9Y2xhaW0oKXtpZih0aGlzLmNsYWltZWQpdGhyb3cgbmV3IEVycm9yKCJEZWZlcnJlZCBhbHJlYWR5IGNsYWltZWQiKTt0aGlzLmNsYWltZWQ9ITB9Z2V0IGR1cmF0aW9uKCl7cmV0dXJuIHRoaXMuc3RvcHBlZEF0P3RoaXMuc3RvcHBlZEF0LXRoaXMuc3RhcnRlZEF0OkRhdGUubm93KCktdGhpcy5zdGFydGVkQXR9Y29uc3RydWN0b3IoKXt0aGlzLmNsYWltZWQ9ITEsdGhpcy5wcm9taXNlPW5ldyBQcm9taXNlKChlLHQpPT57dGhpcy5yZXNvbHZlPWE9Pnt0aGlzLnN0YXR1cz0iZnVsZmlsbGVkIix0aGlzLnN0b3BwZWRBdD1EYXRlLm5vdygpLGUoYSl9LHRoaXMucmVqZWN0PWE9Pnt0aGlzLnN0YXR1cz0icmVqZWN0ZWQiLHRoaXMuc3RvcHBlZEF0PURhdGUubm93KCksdChhKX0sdGhpcy5zdGFydGVkQXQ9RGF0ZS5ub3coKSx0aGlzLnN0YXR1cz0icGVuZGluZyJ9KX19LHJwPWkoKCk9Pm5ldyBQSiwiZGVmZXIiKX0pO3ZhciBBSixkVGEsRzF0PWcoKCk9PntJSigpO0FKPWNsYXNze3N0YXRpY3tpKHRoaXMsIkN1bXVsYXRpdmVEZWZlcnJlZCIpfWNvbnN0cnVjdG9yKCl7dGhpcy5hY2N1bXVsYXRlZFByb21pc2VzPVtdLHRoaXMuZGVmZXJyZWQ9cnAoKSx0aGlzLnByb21pc2U9dGhpcy5kZWZlcnJlZC5wcm9taXNlLHNldFRpbWVvdXQoYXN5bmMoKT0+e2Zvcig7dGhpcy5hY2N1bXVsYXRlZFByb21pc2VzLmxlbmd0aD4wOylhd2FpdCB0aGlzLmFjY3VtdWxhdGVkUHJvbWlzZXMuc2hpZnQoKTt0aGlzLmRlZmVycmVkLnJlc29sdmUoKX0sMCl9c3ViRGVmZXIoKXtsZXQgZT1ycCgpO3JldHVybiB0aGlzLmFkZFByb21pc2UoZS5wcm9taXNlKSxlfWFkZFByb21pc2UoZSl7dGhpcy5hY2N1bXVsYXRlZFByb21pc2VzLnB1c2goZSl9fSxkVGE9aSgoKT0+bmV3IEFKLCJjdW11bGF0aXZlRGVmZXIiKX0pO3ZhciBtdD17fTt5dChtdCx7Q3VtdWxhdGl2ZURlZmVycmVkOigpPT5BSixEZWZlcnJlZDooKT0+UEosY3VtdWxhdGl2ZURlZmVyOigpPT5kVGEsZGVmZXI6KCk9PnJwLGZyb21DYWxsYmFjazooKT0+Z1RhLGdldEZpcnN0VHJ1ZU9yRmFsc2U6KCk9Pm1UYSxtYXA6KCk9PmhUYSxyZWplY3RlZFByb21pc2U6KCk9PnBUYSxyZXNvbHZlZFByb21pc2U6KCk9PnVUYSx0aW1lb3V0QW5kQ29udGludWU6KCk9PmZUYSx0aW1lb3V0V3JhcDooKT0+SzF0fSk7ZnVuY3Rpb24gdVRhKHMpe3JldHVybiBQcm9taXNlLnJlc29sdmUocyl9dmFyIHBUYSxoVGEsSzF0LGZUYSxtVGEsZ1RhLGlvPWcoKCk9PntJSigpO0cxdCgpO0lKKCk7aSh1VGEsInJlc29sdmVkUHJvbWlzZSIpO3BUYT1pKHM9PlByb21pc2UucmVqZWN0KHMpLCJyZWplY3RlZFByb21pc2UiKSxoVGE9aShhc3luYyhzLGUpPT5Qcm9taXNlLmFsbChzLm1hcChlKSksIm1hcCIpLEsxdD1pKGFzeW5jKHMsZSx0PSEwKT0+bmV3IFByb21pc2UoKGEscik9PntzZXRUaW1lb3V0KCgpPT57dD9yKG5ldyBFcnJvcigidGltZW91dCIpKTphKG51bGwpfSxlKSxzLnRoZW4oYSxyKX0pLCJ0aW1lb3V0V3JhcCIpLGZUYT1pKGFzeW5jKHMsZT02ZTQpPT5LMXQocyxlLCExKSwidGltZW91dEFuZENvbnRpbnVlIiksbVRhPWkoYXN5bmMgcz0+e2xldCBlPXJwKCk7Zm9yKGxldCB0IG9mIHMpdC50aGVuKGE9PnthPT09ITAmJmUucmVzb2x2ZSghMCl9KTtyZXR1cm4gUHJvbWlzZS5hbGwocykudGhlbigoKT0+e2UucmVzb2x2ZSghMSl9KSxlLnByb21pc2V9LCJnZXRGaXJzdFRydWVPckZhbHNlIiksZ1RhPWkocz0+bmV3IFByb21pc2UoKGUsdCk9PntzKChhLHIpPT57YT90KGEpOmUocil9KX0pLCJmcm9tQ2FsbGJhY2siKX0pO3ZhciBOSj1nKCgpPT57aW8oKX0pO2Z1bmN0aW9uIExhKHMsZSl7aWYodHlwZW9mIGUhPSJmdW5jdGlvbiImJmUhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoZSkrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7UTJlKHMsZSk7ZnVuY3Rpb24gdCgpe3RoaXMuY29uc3RydWN0b3I9c31pKHQsIl9fIikscy5wcm90b3R5cGU9ZT09PW51bGw/T2JqZWN0LmNyZWF0ZShlKToodC5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3IHQpfWZ1bmN0aW9uIHZUYShzLGUpe3ZhciB0PXt9O2Zvcih2YXIgYSBpbiBzKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLGEpJiZlLmluZGV4T2YoYSk8MCYmKHRbYV09c1thXSk7aWYocyE9bnVsbCYmdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM9PSJmdW5jdGlvbiIpZm9yKHZhciByPTAsYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpO3I8YS5sZW5ndGg7cisrKWUuaW5kZXhPZihhW3JdKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocyxhW3JdKSYmKHRbYVtyXV09c1thW3JdXSk7cmV0dXJuIHR9ZnVuY3Rpb24geFRhKHMsZSx0LGEpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGgsbj1yPDM/ZTphPT09bnVsbD9hPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KTphLG87aWYodHlwZW9mIFJlZmxlY3Q9PSJvYmplY3QiJiZ0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZT09ImZ1bmN0aW9uIiluPVJlZmxlY3QuZGVjb3JhdGUocyxlLHQsYSk7ZWxzZSBmb3IodmFyIGw9cy5sZW5ndGgtMTtsPj0wO2wtLSkobz1zW2xdKSYmKG49KHI8Mz9vKG4pOnI+Mz9vKGUsdCxuKTpvKGUsdCkpfHxuKTtyZXR1cm4gcj4zJiZuJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LG4pLG59ZnVuY3Rpb24geVRhKHMsZSl7cmV0dXJuIGZ1bmN0aW9uKHQsYSl7ZSh0LGEscyl9fWZ1bmN0aW9uIHdUYShzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH1mdW5jdGlvbiBrVGEocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9ZnVuY3Rpb24gU1RhKHMpe3JldHVybiB0eXBlb2Ygcz09InN5bWJvbCI/czoiIi5jb25jYXQocyl9ZnVuY3Rpb24gX1RhKHMsZSx0KXtyZXR1cm4gdHlwZW9mIGU9PSJzeW1ib2wiJiYoZT1lLmRlc2NyaXB0aW9uPyJbIi5jb25jYXQoZS5kZXNjcmlwdGlvbiwiXSIpOiIiKSxPYmplY3QuZGVmaW5lUHJvcGVydHkocywibmFtZSIse2NvbmZpZ3VyYWJsZTohMCx2YWx1ZTp0PyIiLmNvbmNhdCh0LCIgIixlKTplfSl9ZnVuY3Rpb24gTVRhKHMsZSl7aWYodHlwZW9mIFJlZmxlY3Q9PSJvYmplY3QiJiZ0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YT09ImZ1bmN0aW9uIilyZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShzLGUpfWZ1bmN0aW9uIGFkZShzLGUsdCxhKXtmdW5jdGlvbiByKG4pe3JldHVybiBuIGluc3RhbmNlb2YgdD9uOm5ldyB0KGZ1bmN0aW9uKG8pe28obil9KX1yZXR1cm4gaShyLCJhZG9wdCIpLG5ldyh0fHwodD1Qcm9taXNlKSkoZnVuY3Rpb24obixvKXtmdW5jdGlvbiBsKHUpe3RyeXtkKGEubmV4dCh1KSl9Y2F0Y2goYyl7byhjKX19aShsLCJmdWxmaWxsZWQiKTtmdW5jdGlvbiBwKHUpe3RyeXtkKGEudGhyb3codSkpfWNhdGNoKGMpe28oYyl9fWkocCwicmVqZWN0ZWQiKTtmdW5jdGlvbiBkKHUpe3UuZG9uZT9uKHUudmFsdWUpOnIodS52YWx1ZSkudGhlbihsLHApfWkoZCwic3RlcCIpLGQoKGE9YS5hcHBseShzLGV8fFtdKSkubmV4dCgpKX0pfWZ1bmN0aW9uIHJ5KHMsZSl7dmFyIHQ9e2xhYmVsOjAsc2VudDppKGZ1bmN0aW9uKCl7aWYoblswXSYxKXRocm93IG5bMV07cmV0dXJuIG5bMV19LCJzZW50IiksdHJ5czpbXSxvcHM6W119LGEscixuLG89T2JqZWN0LmNyZWF0ZSgodHlwZW9mIEl0ZXJhdG9yPT0iZnVuY3Rpb24iP0l0ZXJhdG9yOk9iamVjdCkucHJvdG90eXBlKTtyZXR1cm4gby5uZXh0PWwoMCksby50aHJvdz1sKDEpLG8ucmV0dXJuPWwoMiksdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmKG9bU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksbztmdW5jdGlvbiBsKGQpe3JldHVybiBmdW5jdGlvbih1KXtyZXR1cm4gcChbZCx1XSl9fWZ1bmN0aW9uIHAoZCl7aWYoYSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtvJiYobz0wLGRbMF0mJih0PTApKSx0Oyl0cnl7aWYoYT0xLHImJihuPWRbMF0mMj9yLnJldHVybjpkWzBdP3IudGhyb3d8fCgobj1yLnJldHVybikmJm4uY2FsbChyKSwwKTpyLm5leHQpJiYhKG49bi5jYWxsKHIsZFsxXSkpLmRvbmUpcmV0dXJuIG47c3dpdGNoKHI9MCxuJiYoZD1bZFswXSYyLG4udmFsdWVdKSxkWzBdKXtjYXNlIDA6Y2FzZSAxOm49ZDticmVhaztjYXNlIDQ6cmV0dXJuIHQubGFiZWwrKyx7dmFsdWU6ZFsxXSxkb25lOiExfTtjYXNlIDU6dC5sYWJlbCsrLHI9ZFsxXSxkPVswXTtjb250aW51ZTtjYXNlIDc6ZD10Lm9wcy5wb3AoKSx0LnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZihuPXQudHJ5cywhKG49bi5sZW5ndGg+MCYmbltuLmxlbmd0aC0xXSkmJihkWzBdPT09Nnx8ZFswXT09PTIpKXt0PTA7Y29udGludWV9aWYoZFswXT09PTMmJighbnx8ZFsxXT5uWzBdJiZkWzFdPG5bM10pKXt0LmxhYmVsPWRbMV07YnJlYWt9aWYoZFswXT09PTYmJnQubGFiZWw8blsxXSl7dC5sYWJlbD1uWzFdLG49ZDticmVha31pZihuJiZ0LmxhYmVsPG5bMl0pe3QubGFiZWw9blsyXSx0Lm9wcy5wdXNoKGQpO2JyZWFrfW5bMl0mJnQub3BzLnBvcCgpLHQudHJ5cy5wb3AoKTtjb250aW51ZX1kPWUuY2FsbChzLHQpfWNhdGNoKHUpe2Q9WzYsdV0scj0wfWZpbmFsbHl7YT1uPTB9aWYoZFswXSY1KXRocm93IGRbMV07cmV0dXJue3ZhbHVlOmRbMF0/ZFsxXTp2b2lkIDAsZG9uZTohMH19fWZ1bmN0aW9uIHpUYShzLGUpe2Zvcih2YXIgdCBpbiBzKXQhPT0iZGVmYXVsdCImJiFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KSYmZWRlKGUscyx0KX1mdW5jdGlvbiBWbyhzKXt2YXIgZT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wuaXRlcmF0b3IsdD1lJiZzW2VdLGE9MDtpZih0KXJldHVybiB0LmNhbGwocyk7aWYocyYmdHlwZW9mIHMubGVuZ3RoPT0ibnVtYmVyIilyZXR1cm57bmV4dDppKGZ1bmN0aW9uKCl7cmV0dXJuIHMmJmE+PXMubGVuZ3RoJiYocz12b2lkIDApLHt2YWx1ZTpzJiZzW2ErK10sZG9uZTohc319LCJuZXh0Iil9O3Rocm93IG5ldyBUeXBlRXJyb3IoZT8iT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS4iOiJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIil9ZnVuY3Rpb24gT2kocyxlKXt2YXIgdD10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZzW1N5bWJvbC5pdGVyYXRvcl07aWYoIXQpcmV0dXJuIHM7dmFyIGE9dC5jYWxsKHMpLHIsbj1bXSxvO3RyeXtmb3IoOyhlPT09dm9pZCAwfHxlLS0gPjApJiYhKHI9YS5uZXh0KCkpLmRvbmU7KW4ucHVzaChyLnZhbHVlKX1jYXRjaChsKXtvPXtlcnJvcjpsfX1maW5hbGx5e3RyeXtyJiYhci5kb25lJiYodD1hLnJldHVybikmJnQuY2FsbChhKX1maW5hbGx5e2lmKG8pdGhyb3cgby5lcnJvcn19cmV0dXJuIG59ZnVuY3Rpb24gQ1RhKCl7Zm9yKHZhciBzPVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXM9cy5jb25jYXQoT2koYXJndW1lbnRzW2VdKSk7cmV0dXJuIHN9ZnVuY3Rpb24gVFRhKCl7Zm9yKHZhciBzPTAsZT0wLHQ9YXJndW1lbnRzLmxlbmd0aDtlPHQ7ZSsrKXMrPWFyZ3VtZW50c1tlXS5sZW5ndGg7Zm9yKHZhciBhPUFycmF5KHMpLHI9MCxlPTA7ZTx0O2UrKylmb3IodmFyIG49YXJndW1lbnRzW2VdLG89MCxsPW4ubGVuZ3RoO288bDtvKysscisrKWFbcl09bltvXTtyZXR1cm4gYX1mdW5jdGlvbiBPcihzLGUsdCl7aWYodHx8YXJndW1lbnRzLmxlbmd0aD09PTIpZm9yKHZhciBhPTAscj1lLmxlbmd0aCxuO2E8cjthKyspKG58fCEoYSBpbiBlKSkmJihufHwobj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlLDAsYSkpLG5bYV09ZVthXSk7cmV0dXJuIHMuY29uY2F0KG58fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpKX1mdW5jdGlvbiBuMChzKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIG4wPyh0aGlzLnY9cyx0aGlzKTpuZXcgbjAocyl9ZnVuY3Rpb24gc2RlKHMsZSx0KXtpZighU3ltYm9sLmFzeW5jSXRlcmF0b3IpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7dmFyIGE9dC5hcHBseShzLGV8fFtdKSxyLG49W107cmV0dXJuIHI9T2JqZWN0LmNyZWF0ZSgodHlwZW9mIEFzeW5jSXRlcmF0b3I9PSJmdW5jdGlvbiI/QXN5bmNJdGVyYXRvcjpPYmplY3QpLnByb3RvdHlwZSksbCgibmV4dCIpLGwoInRocm93IiksbCgicmV0dXJuIixvKSxyW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxyO2Z1bmN0aW9uIG8odil7cmV0dXJuIGZ1bmN0aW9uKHgpe3JldHVybiBQcm9taXNlLnJlc29sdmUoeCkudGhlbih2LGMpfX1mdW5jdGlvbiBsKHYseCl7YVt2XSYmKHJbdl09ZnVuY3Rpb24obSl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGYseSl7bi5wdXNoKFt2LG0sZix5XSk+MXx8cCh2LG0pfSl9LHgmJihyW3ZdPXgoclt2XSkpKX1mdW5jdGlvbiBwKHYseCl7dHJ5e2QoYVt2XSh4KSl9Y2F0Y2gobSl7YihuWzBdWzNdLG0pfX1mdW5jdGlvbiBkKHYpe3YudmFsdWUgaW5zdGFuY2VvZiBuMD9Qcm9taXNlLnJlc29sdmUodi52YWx1ZS52KS50aGVuKHUsYyk6YihuWzBdWzJdLHYpfWZ1bmN0aW9uIHUodil7cCgibmV4dCIsdil9ZnVuY3Rpb24gYyh2KXtwKCJ0aHJvdyIsdil9ZnVuY3Rpb24gYih2LHgpe3YoeCksbi5zaGlmdCgpLG4ubGVuZ3RoJiZwKG5bMF1bMF0sblswXVsxXSl9fWZ1bmN0aW9uICRUYShzKXt2YXIgZSx0O3JldHVybiBlPXt9LGEoIm5leHQiKSxhKCJ0aHJvdyIsZnVuY3Rpb24ocil7dGhyb3cgcn0pLGEoInJldHVybiIpLGVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxlO2Z1bmN0aW9uIGEocixuKXtlW3JdPXNbcl0/ZnVuY3Rpb24obyl7cmV0dXJuKHQ9IXQpP3t2YWx1ZTpuMChzW3JdKG8pKSxkb25lOiExfTpuP24obyk6b306bn19ZnVuY3Rpb24gaWRlKHMpe2lmKCFTeW1ib2wuYXN5bmNJdGVyYXRvcil0aHJvdyBuZXcgVHlwZUVycm9yKCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTt2YXIgZT1zW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSx0O3JldHVybiBlP2UuY2FsbChzKToocz10eXBlb2YgVm89PSJmdW5jdGlvbiI/Vm8ocyk6c1tTeW1ib2wuaXRlcmF0b3JdKCksdD17fSxhKCJuZXh0IiksYSgidGhyb3ciKSxhKCJyZXR1cm4iKSx0W1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSx0KTtmdW5jdGlvbiBhKG4pe3Rbbl09c1tuXSYmZnVuY3Rpb24obyl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGwscCl7bz1zW25dKG8pLHIobCxwLG8uZG9uZSxvLnZhbHVlKX0pfX1mdW5jdGlvbiByKG4sbyxsLHApe1Byb21pc2UucmVzb2x2ZShwKS50aGVuKGZ1bmN0aW9uKGQpe24oe3ZhbHVlOmQsZG9uZTpsfSl9LG8pfX1mdW5jdGlvbiBEVGEocyxlKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5P09iamVjdC5kZWZpbmVQcm9wZXJ0eShzLCJyYXciLHt2YWx1ZTplfSk6cy5yYXc9ZSxzfWZ1bmN0aW9uIEVUYShzKXtpZihzJiZzLl9fZXNNb2R1bGUpcmV0dXJuIHM7dmFyIGU9e307aWYocyE9bnVsbClmb3IodmFyIHQ9dGRlKHMpLGE9MDthPHQubGVuZ3RoO2ErKyl0W2FdIT09ImRlZmF1bHQiJiZlZGUoZSxzLHRbYV0pO3JldHVybiBMVGEoZSxzKSxlfWZ1bmN0aW9uIFBUYShzKXtyZXR1cm4gcyYmcy5fX2VzTW9kdWxlP3M6e2RlZmF1bHQ6c319ZnVuY3Rpb24gSVRhKHMsZSx0LGEpe2lmKHQ9PT0iYSImJiFhKXRocm93IG5ldyBUeXBlRXJyb3IoIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlciIpO2lmKHR5cGVvZiBlPT0iZnVuY3Rpb24iP3MhPT1lfHwhYTohZS5oYXMocykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0Iik7cmV0dXJuIHQ9PT0ibSI/YTp0PT09ImEiP2EuY2FsbChzKTphP2EudmFsdWU6ZS5nZXQocyl9ZnVuY3Rpb24gQVRhKHMsZSx0LGEscil7aWYoYT09PSJtIil0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIG1ldGhvZCBpcyBub3Qgd3JpdGFibGUiKTtpZihhPT09ImEiJiYhcil0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBzZXR0ZXIiKTtpZih0eXBlb2YgZT09ImZ1bmN0aW9uIj9zIT09ZXx8IXI6IWUuaGFzKHMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCB3cml0ZSBwcml2YXRlIG1lbWJlciB0byBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0Iik7cmV0dXJuIGE9PT0iYSI/ci5jYWxsKHMsdCk6cj9yLnZhbHVlPXQ6ZS5zZXQocyx0KSx0fWZ1bmN0aW9uIE5UYShzLGUpe2lmKGU9PT1udWxsfHx0eXBlb2YgZSE9Im9iamVjdCImJnR5cGVvZiBlIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCB1c2UgJ2luJyBvcGVyYXRvciBvbiBub24tb2JqZWN0Iik7cmV0dXJuIHR5cGVvZiBzPT0iZnVuY3Rpb24iP2U9PT1zOnMuaGFzKGUpfWZ1bmN0aW9uIFJUYShzLGUsdCl7aWYoZSE9bnVsbCl7aWYodHlwZW9mIGUhPSJvYmplY3QiJiZ0eXBlb2YgZSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQuIik7dmFyIGEscjtpZih0KXtpZighU3ltYm9sLmFzeW5jRGlzcG9zZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJTeW1ib2wuYXN5bmNEaXNwb3NlIGlzIG5vdCBkZWZpbmVkLiIpO2E9ZVtTeW1ib2wuYXN5bmNEaXNwb3NlXX1pZihhPT09dm9pZCAwKXtpZighU3ltYm9sLmRpc3Bvc2UpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3ltYm9sLmRpc3Bvc2UgaXMgbm90IGRlZmluZWQuIik7YT1lW1N5bWJvbC5kaXNwb3NlXSx0JiYocj1hKX1pZih0eXBlb2YgYSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3Qgbm90IGRpc3Bvc2FibGUuIik7ciYmKGE9aShmdW5jdGlvbigpe3RyeXtyLmNhbGwodGhpcyl9Y2F0Y2gobil7cmV0dXJuIFByb21pc2UucmVqZWN0KG4pfX0sImRpc3Bvc2UiKSkscy5zdGFjay5wdXNoKHt2YWx1ZTplLGRpc3Bvc2U6YSxhc3luYzp0fSl9ZWxzZSB0JiZzLnN0YWNrLnB1c2goe2FzeW5jOiEwfSk7cmV0dXJuIGV9ZnVuY3Rpb24gRlRhKHMpe2Z1bmN0aW9uIGUobil7cy5lcnJvcj1zLmhhc0Vycm9yP25ldyBPVGEobixzLmVycm9yLCJBbiBlcnJvciB3YXMgc3VwcHJlc3NlZCBkdXJpbmcgZGlzcG9zYWwuIik6bixzLmhhc0Vycm9yPSEwfWkoZSwiZmFpbCIpO3ZhciB0LGE9MDtmdW5jdGlvbiByKCl7Zm9yKDt0PXMuc3RhY2sucG9wKCk7KXRyeXtpZighdC5hc3luYyYmYT09PTEpcmV0dXJuIGE9MCxzLnN0YWNrLnB1c2godCksUHJvbWlzZS5yZXNvbHZlKCkudGhlbihyKTtpZih0LmRpc3Bvc2Upe3ZhciBuPXQuZGlzcG9zZS5jYWxsKHQudmFsdWUpO2lmKHQuYXN5bmMpcmV0dXJuIGF8PTIsUHJvbWlzZS5yZXNvbHZlKG4pLnRoZW4ocixmdW5jdGlvbihvKXtyZXR1cm4gZShvKSxyKCl9KX1lbHNlIGF8PTF9Y2F0Y2gobyl7ZShvKX1pZihhPT09MSlyZXR1cm4gcy5oYXNFcnJvcj9Qcm9taXNlLnJlamVjdChzLmVycm9yKTpQcm9taXNlLnJlc29sdmUoKTtpZihzLmhhc0Vycm9yKXRocm93IHMuZXJyb3J9cmV0dXJuIGkociwibmV4dCIpLHIoKX1mdW5jdGlvbiBCVGEocyxlKXtyZXR1cm4gdHlwZW9mIHM9PSJzdHJpbmciJiYvXlwuXC4/XC8vLnRlc3Qocyk/cy5yZXBsYWNlKC9cLih0c3gpJHwoKD86XC5kKT8pKCg/OlwuW14uL10rPyk/KVwuKFtjbV0/KXRzJC9pLGZ1bmN0aW9uKHQsYSxyLG4sbyl7cmV0dXJuIGE/ZT8iLmpzeCI6Ii5qcyI6ciYmKCFufHwhbyk/dDpyK24rIi4iK28udG9Mb3dlckNhc2UoKSsianMifSk6c312YXIgUTJlLEoyZSxlZGUsTFRhLHRkZSxPVGEscmlzLExzPWcoKCk9PntRMmU9aShmdW5jdGlvbihzLGUpe3JldHVybiBRMmU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHQsYSl7dC5fX3Byb3RvX189YX18fGZ1bmN0aW9uKHQsYSl7Zm9yKHZhciByIGluIGEpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEscikmJih0W3JdPWFbcl0pfSxRMmUocyxlKX0sImV4dGVuZFN0YXRpY3MiKTtpKExhLCJfX2V4dGVuZHMiKTtKMmU9aShmdW5jdGlvbigpe3JldHVybiBKMmU9T2JqZWN0LmFzc2lnbnx8aShmdW5jdGlvbihlKXtmb3IodmFyIHQsYT0xLHI9YXJndW1lbnRzLmxlbmd0aDthPHI7YSsrKXt0PWFyZ3VtZW50c1thXTtmb3IodmFyIG4gaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKSYmKGVbbl09dFtuXSl9cmV0dXJuIGV9LCJfX2Fzc2lnbiIpLEoyZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LCJfX2Fzc2lnbiIpO2kodlRhLCJfX3Jlc3QiKTtpKHhUYSwiX19kZWNvcmF0ZSIpO2koeVRhLCJfX3BhcmFtIik7aSh3VGEsIl9fZXNEZWNvcmF0ZSIpO2koa1RhLCJfX3J1bkluaXRpYWxpemVycyIpO2koU1RhLCJfX3Byb3BLZXkiKTtpKF9UYSwiX19zZXRGdW5jdGlvbk5hbWUiKTtpKE1UYSwiX19tZXRhZGF0YSIpO2koYWRlLCJfX2F3YWl0ZXIiKTtpKHJ5LCJfX2dlbmVyYXRvciIpO2VkZT1PYmplY3QuY3JlYXRlPyhmdW5jdGlvbihzLGUsdCxhKXthPT09dm9pZCAwJiYoYT10KTt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCk7KCFyfHwoImdldCJpbiByPyFlLl9fZXNNb2R1bGU6ci53cml0YWJsZXx8ci5jb25maWd1cmFibGUpKSYmKHI9e2VudW1lcmFibGU6ITAsZ2V0OmkoZnVuY3Rpb24oKXtyZXR1cm4gZVt0XX0sImdldCIpfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHMsYSxyKX0pOihmdW5jdGlvbihzLGUsdCxhKXthPT09dm9pZCAwJiYoYT10KSxzW2FdPWVbdF19KTtpKHpUYSwiX19leHBvcnRTdGFyIik7aShWbywiX192YWx1ZXMiKTtpKE9pLCJfX3JlYWQiKTtpKENUYSwiX19zcHJlYWQiKTtpKFRUYSwiX19zcHJlYWRBcnJheXMiKTtpKE9yLCJfX3NwcmVhZEFycmF5Iik7aShuMCwiX19hd2FpdCIpO2koc2RlLCJfX2FzeW5jR2VuZXJhdG9yIik7aSgkVGEsIl9fYXN5bmNEZWxlZ2F0b3IiKTtpKGlkZSwiX19hc3luY1ZhbHVlcyIpO2koRFRhLCJfX21ha2VUZW1wbGF0ZU9iamVjdCIpO0xUYT1PYmplY3QuY3JlYXRlPyhmdW5jdGlvbihzLGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShzLCJkZWZhdWx0Iix7ZW51bWVyYWJsZTohMCx2YWx1ZTplfSl9KTpmdW5jdGlvbihzLGUpe3MuZGVmYXVsdD1lfSx0ZGU9aShmdW5jdGlvbihzKXtyZXR1cm4gdGRlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHxmdW5jdGlvbihlKXt2YXIgdD1bXTtmb3IodmFyIGEgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxhKSYmKHRbdC5sZW5ndGhdPWEpO3JldHVybiB0fSx0ZGUocyl9LCJvd25LZXlzIik7aShFVGEsIl9faW1wb3J0U3RhciIpO2koUFRhLCJfX2ltcG9ydERlZmF1bHQiKTtpKElUYSwiX19jbGFzc1ByaXZhdGVGaWVsZEdldCIpO2koQVRhLCJfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0Iik7aShOVGEsIl9fY2xhc3NQcml2YXRlRmllbGRJbiIpO2koUlRhLCJfX2FkZERpc3Bvc2FibGVSZXNvdXJjZSIpO09UYT10eXBlb2YgU3VwcHJlc3NlZEVycm9yPT0iZnVuY3Rpb24iP1N1cHByZXNzZWRFcnJvcjpmdW5jdGlvbihzLGUsdCl7dmFyIGE9bmV3IEVycm9yKHQpO3JldHVybiBhLm5hbWU9IlN1cHByZXNzZWRFcnJvciIsYS5lcnJvcj1zLGEuc3VwcHJlc3NlZD1lLGF9O2koRlRhLCJfX2Rpc3Bvc2VSZXNvdXJjZXMiKTtpKEJUYSwiX19yZXdyaXRlUmVsYXRpdmVJbXBvcnRFeHRlbnNpb24iKTtyaXM9e19fZXh0ZW5kczpMYSxfX2Fzc2lnbjpKMmUsX19yZXN0OnZUYSxfX2RlY29yYXRlOnhUYSxfX3BhcmFtOnlUYSxfX2VzRGVjb3JhdGU6d1RhLF9fcnVuSW5pdGlhbGl6ZXJzOmtUYSxfX3Byb3BLZXk6U1RhLF9fc2V0RnVuY3Rpb25OYW1lOl9UYSxfX21ldGFkYXRhOk1UYSxfX2F3YWl0ZXI6YWRlLF9fZ2VuZXJhdG9yOnJ5LF9fY3JlYXRlQmluZGluZzplZGUsX19leHBvcnRTdGFyOnpUYSxfX3ZhbHVlczpWbyxfX3JlYWQ6T2ksX19zcHJlYWQ6Q1RhLF9fc3ByZWFkQXJyYXlzOlRUYSxfX3NwcmVhZEFycmF5Ok9yLF9fYXdhaXQ6bjAsX19hc3luY0dlbmVyYXRvcjpzZGUsX19hc3luY0RlbGVnYXRvcjokVGEsX19hc3luY1ZhbHVlczppZGUsX19tYWtlVGVtcGxhdGVPYmplY3Q6RFRhLF9faW1wb3J0U3RhcjpFVGEsX19pbXBvcnREZWZhdWx0OlBUYSxfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0OklUYSxfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0OkFUYSxfX2NsYXNzUHJpdmF0ZUZpZWxkSW46TlRhLF9fYWRkRGlzcG9zYWJsZVJlc291cmNlOlJUYSxfX2Rpc3Bvc2VSZXNvdXJjZXM6RlRhLF9fcmV3cml0ZVJlbGF0aXZlSW1wb3J0RXh0ZW5zaW9uOkJUYX19KTtmdW5jdGlvbiBzYShzKXtyZXR1cm4gdHlwZW9mIHM9PSJmdW5jdGlvbiJ9dmFyIHJvPWcoKCk9PntpKHNhLCJpc0Z1bmN0aW9uIil9KTtmdW5jdGlvbiBobChzKXt2YXIgZT1pKGZ1bmN0aW9uKGEpe0Vycm9yLmNhbGwoYSksYS5zdGFjaz1uZXcgRXJyb3IoKS5zdGFja30sIl9zdXBlciIpLHQ9cyhlKTtyZXR1cm4gdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQsdH12YXIgb3A9ZygoKT0+e2koaGwsImNyZWF0ZUVycm9yQ2xhc3MiKX0pO3ZhciBveSxyZGU9ZygoKT0+e29wKCk7b3k9aGwoZnVuY3Rpb24ocyl7cmV0dXJuIGkoZnVuY3Rpb24odCl7cyh0aGlzKSx0aGlzLm1lc3NhZ2U9dD90Lmxlbmd0aCtgIGVycm9ycyBvY2N1cnJlZCBkdXJpbmcgdW5zdWJzY3JpcHRpb246CmArdC5tYXAoZnVuY3Rpb24oYSxyKXtyZXR1cm4gcisxKyIpICIrYS50b1N0cmluZygpfSkuam9pbihgCiAgYCk6IiIsdGhpcy5uYW1lPSJVbnN1YnNjcmlwdGlvbkVycm9yIix0aGlzLmVycm9ycz10fSwiVW5zdWJzY3JpcHRpb25FcnJvckltcGwiKX0pfSk7ZnVuY3Rpb24gbTEocyxlKXtpZihzKXt2YXIgdD1zLmluZGV4T2YoZSk7MDw9dCYmcy5zcGxpY2UodCwxKX19dmFyIHc3PWcoKCk9PntpKG0xLCJhcnJSZW1vdmUiKX0pO2Z1bmN0aW9uIFJKKHMpe3JldHVybiBzIGluc3RhbmNlb2YgdHJ8fHMmJiJjbG9zZWQiaW4gcyYmc2Eocy5yZW1vdmUpJiZzYShzLmFkZCkmJnNhKHMudW5zdWJzY3JpYmUpfWZ1bmN0aW9uIFkxdChzKXtzYShzKT9zKCk6cy51bnN1YnNjcmliZSgpfXZhciB0cixvZGUsVTI9ZygoKT0+e0xzKCk7cm8oKTtyZGUoKTt3NygpO3RyPShmdW5jdGlvbigpe2Z1bmN0aW9uIHMoZSl7dGhpcy5pbml0aWFsVGVhcmRvd249ZSx0aGlzLmNsb3NlZD0hMSx0aGlzLl9wYXJlbnRhZ2U9bnVsbCx0aGlzLl9maW5hbGl6ZXJzPW51bGx9cmV0dXJuIGkocywiU3Vic2NyaXB0aW9uIikscy5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXt2YXIgZSx0LGEscixuO2lmKCF0aGlzLmNsb3NlZCl7dGhpcy5jbG9zZWQ9ITA7dmFyIG89dGhpcy5fcGFyZW50YWdlO2lmKG8paWYodGhpcy5fcGFyZW50YWdlPW51bGwsQXJyYXkuaXNBcnJheShvKSl0cnl7Zm9yKHZhciBsPVZvKG8pLHA9bC5uZXh0KCk7IXAuZG9uZTtwPWwubmV4dCgpKXt2YXIgZD1wLnZhbHVlO2QucmVtb3ZlKHRoaXMpfX1jYXRjaChtKXtlPXtlcnJvcjptfX1maW5hbGx5e3RyeXtwJiYhcC5kb25lJiYodD1sLnJldHVybikmJnQuY2FsbChsKX1maW5hbGx5e2lmKGUpdGhyb3cgZS5lcnJvcn19ZWxzZSBvLnJlbW92ZSh0aGlzKTt2YXIgdT10aGlzLmluaXRpYWxUZWFyZG93bjtpZihzYSh1KSl0cnl7dSgpfWNhdGNoKG0pe249bSBpbnN0YW5jZW9mIG95P20uZXJyb3JzOlttXX12YXIgYz10aGlzLl9maW5hbGl6ZXJzO2lmKGMpe3RoaXMuX2ZpbmFsaXplcnM9bnVsbDt0cnl7Zm9yKHZhciBiPVZvKGMpLHY9Yi5uZXh0KCk7IXYuZG9uZTt2PWIubmV4dCgpKXt2YXIgeD12LnZhbHVlO3RyeXtZMXQoeCl9Y2F0Y2gobSl7bj1uPz9bXSxtIGluc3RhbmNlb2Ygb3k/bj1PcihPcihbXSxPaShuKSksT2kobS5lcnJvcnMpKTpuLnB1c2gobSl9fX1jYXRjaChtKXthPXtlcnJvcjptfX1maW5hbGx5e3RyeXt2JiYhdi5kb25lJiYocj1iLnJldHVybikmJnIuY2FsbChiKX1maW5hbGx5e2lmKGEpdGhyb3cgYS5lcnJvcn19fWlmKG4pdGhyb3cgbmV3IG95KG4pfX0scy5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3ZhciB0O2lmKGUmJmUhPT10aGlzKWlmKHRoaXMuY2xvc2VkKVkxdChlKTtlbHNle2lmKGUgaW5zdGFuY2VvZiBzKXtpZihlLmNsb3NlZHx8ZS5faGFzUGFyZW50KHRoaXMpKXJldHVybjtlLl9hZGRQYXJlbnQodGhpcyl9KHRoaXMuX2ZpbmFsaXplcnM9KHQ9dGhpcy5fZmluYWxpemVycykhPT1udWxsJiZ0IT09dm9pZCAwP3Q6W10pLnB1c2goZSl9fSxzLnByb3RvdHlwZS5faGFzUGFyZW50PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3BhcmVudGFnZTtyZXR1cm4gdD09PWV8fEFycmF5LmlzQXJyYXkodCkmJnQuaW5jbHVkZXMoZSl9LHMucHJvdG90eXBlLl9hZGRQYXJlbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fcGFyZW50YWdlO3RoaXMuX3BhcmVudGFnZT1BcnJheS5pc0FycmF5KHQpPyh0LnB1c2goZSksdCk6dD9bdCxlXTplfSxzLnByb3RvdHlwZS5fcmVtb3ZlUGFyZW50PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3BhcmVudGFnZTt0PT09ZT90aGlzLl9wYXJlbnRhZ2U9bnVsbDpBcnJheS5pc0FycmF5KHQpJiZtMSh0LGUpfSxzLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fZmluYWxpemVyczt0JiZtMSh0LGUpLGUgaW5zdGFuY2VvZiBzJiZlLl9yZW1vdmVQYXJlbnQodGhpcyl9LHMuRU1QVFk9KGZ1bmN0aW9uKCl7dmFyIGU9bmV3IHM7cmV0dXJuIGUuY2xvc2VkPSEwLGV9KSgpLHN9KSgpLG9kZT10ci5FTVBUWTtpKFJKLCJpc1N1YnNjcmlwdGlvbiIpO2koWTF0LCJleGVjRmluYWxpemVyIil9KTt2YXIgeGMsazc9ZygoKT0+e3hjPXtvblVuaGFuZGxlZEVycm9yOm51bGwsb25TdG9wcGVkTm90aWZpY2F0aW9uOm51bGwsUHJvbWlzZTp2b2lkIDAsdXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZzohMSx1c2VEZXByZWNhdGVkTmV4dENvbnRleHQ6ITF9fSk7dmFyIFM3LG5kZT1nKCgpPT57THMoKTtTNz17c2V0VGltZW91dDppKGZ1bmN0aW9uKHMsZSl7Zm9yKHZhciB0PVtdLGE9MjthPGFyZ3VtZW50cy5sZW5ndGg7YSsrKXRbYS0yXT1hcmd1bWVudHNbYV07dmFyIHI9UzcuZGVsZWdhdGU7cmV0dXJuIHI/LnNldFRpbWVvdXQ/ci5zZXRUaW1lb3V0LmFwcGx5KHIsT3IoW3MsZV0sT2kodCkpKTpzZXRUaW1lb3V0LmFwcGx5KHZvaWQgMCxPcihbcyxlXSxPaSh0KSkpfSwic2V0VGltZW91dCIpLGNsZWFyVGltZW91dDppKGZ1bmN0aW9uKHMpe3ZhciBlPVM3LmRlbGVnYXRlO3JldHVybihlPy5jbGVhclRpbWVvdXR8fGNsZWFyVGltZW91dCkocyl9LCJjbGVhclRpbWVvdXQiKSxkZWxlZ2F0ZTp2b2lkIDB9fSk7ZnVuY3Rpb24gT0oocyl7Uzcuc2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBlPXhjLm9uVW5oYW5kbGVkRXJyb3I7aWYoZSllKHMpO2Vsc2UgdGhyb3cgc30pfXZhciBsZGU9ZygoKT0+e2s3KCk7bmRlKCk7aShPSiwicmVwb3J0VW5oYW5kbGVkRXJyb3IiKX0pO2Z1bmN0aW9uIHljKCl7fXZhciBPND1nKCgpPT57aSh5Yywibm9vcCIpfSk7ZnVuY3Rpb24gWDF0KHMpe3JldHVybiBjZGUoIkUiLHZvaWQgMCxzKX1mdW5jdGlvbiBRMXQocyl7cmV0dXJuIGNkZSgiTiIscyx2b2lkIDApfWZ1bmN0aW9uIGNkZShzLGUsdCl7cmV0dXJue2tpbmQ6cyx2YWx1ZTplLGVycm9yOnR9fXZhciBaMXQsSjF0PWcoKCk9PntaMXQ9KGZ1bmN0aW9uKCl7cmV0dXJuIGNkZSgiQyIsdm9pZCAwLHZvaWQgMCl9KSgpO2koWDF0LCJlcnJvck5vdGlmaWNhdGlvbiIpO2koUTF0LCJuZXh0Tm90aWZpY2F0aW9uIik7aShjZGUsImNyZWF0ZU5vdGlmaWNhdGlvbiIpfSk7ZnVuY3Rpb24gXzcocyl7aWYoeGMudXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZyl7dmFyIGU9IUY0O2lmKGUmJihGND17ZXJyb3JUaHJvd246ITEsZXJyb3I6bnVsbH0pLHMoKSxlKXt2YXIgdD1GNCxhPXQuZXJyb3JUaHJvd24scj10LmVycm9yO2lmKEY0PW51bGwsYSl0aHJvdyByfX1lbHNlIHMoKX1mdW5jdGlvbiBlMnQocyl7eGMudXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZyYmRjQmJihGNC5lcnJvclRocm93bj0hMCxGNC5lcnJvcj1zKX12YXIgRjQsRko9ZygoKT0+e2s3KCk7RjQ9bnVsbDtpKF83LCJlcnJvckNvbnRleHQiKTtpKGUydCwiY2FwdHVyZUVycm9yIil9KTtmdW5jdGlvbiBkZGUocyxlKXtyZXR1cm4gSFRhLmNhbGwocyxlKX1mdW5jdGlvbiBCSihzKXt4Yy51c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nP2UydChzKTpPSihzKX1mdW5jdGlvbiBqVGEocyl7dGhyb3cgc31mdW5jdGlvbiB1ZGUocyxlKXt2YXIgdD14Yy5vblN0b3BwZWROb3RpZmljYXRpb247dCYmUzcuc2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiB0KHMsZSl9KX12YXIgQjQsSFRhLHFUYSxucCxWVGEsbnk9ZygoKT0+e0xzKCk7cm8oKTtVMigpO2s3KCk7bGRlKCk7TzQoKTtKMXQoKTtuZGUoKTtGSigpO0I0PShmdW5jdGlvbihzKXtMYShlLHMpO2Z1bmN0aW9uIGUodCl7dmFyIGE9cy5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBhLmlzU3RvcHBlZD0hMSx0PyhhLmRlc3RpbmF0aW9uPXQsUkoodCkmJnQuYWRkKGEpKTphLmRlc3RpbmF0aW9uPVZUYSxhfXJldHVybiBpKGUsIlN1YnNjcmliZXIiKSxlLmNyZWF0ZT1mdW5jdGlvbih0LGEscil7cmV0dXJuIG5ldyBucCh0LGEscil9LGUucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24odCl7dGhpcy5pc1N0b3BwZWQ/dWRlKFExdCh0KSx0aGlzKTp0aGlzLl9uZXh0KHQpfSxlLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbih0KXt0aGlzLmlzU3RvcHBlZD91ZGUoWDF0KHQpLHRoaXMpOih0aGlzLmlzU3RvcHBlZD0hMCx0aGlzLl9lcnJvcih0KSl9LGUucHJvdG90eXBlLmNvbXBsZXRlPWZ1bmN0aW9uKCl7dGhpcy5pc1N0b3BwZWQ/dWRlKFoxdCx0aGlzKToodGhpcy5pc1N0b3BwZWQ9ITAsdGhpcy5fY29tcGxldGUoKSl9LGUucHJvdG90eXBlLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7dGhpcy5jbG9zZWR8fCh0aGlzLmlzU3RvcHBlZD0hMCxzLnByb3RvdHlwZS51bnN1YnNjcmliZS5jYWxsKHRoaXMpLHRoaXMuZGVzdGluYXRpb249bnVsbCl9LGUucHJvdG90eXBlLl9uZXh0PWZ1bmN0aW9uKHQpe3RoaXMuZGVzdGluYXRpb24ubmV4dCh0KX0sZS5wcm90b3R5cGUuX2Vycm9yPWZ1bmN0aW9uKHQpe3RyeXt0aGlzLmRlc3RpbmF0aW9uLmVycm9yKHQpfWZpbmFsbHl7dGhpcy51bnN1YnNjcmliZSgpfX0sZS5wcm90b3R5cGUuX2NvbXBsZXRlPWZ1bmN0aW9uKCl7dHJ5e3RoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKX1maW5hbGx5e3RoaXMudW5zdWJzY3JpYmUoKX19LGV9KSh0ciksSFRhPUZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kO2koZGRlLCJiaW5kIik7cVRhPShmdW5jdGlvbigpe2Z1bmN0aW9uIHMoZSl7dGhpcy5wYXJ0aWFsT2JzZXJ2ZXI9ZX1yZXR1cm4gaShzLCJDb25zdW1lck9ic2VydmVyIikscy5wcm90b3R5cGUubmV4dD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnBhcnRpYWxPYnNlcnZlcjtpZih0Lm5leHQpdHJ5e3QubmV4dChlKX1jYXRjaChhKXtCSihhKX19LHMucHJvdG90eXBlLmVycm9yPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucGFydGlhbE9ic2VydmVyO2lmKHQuZXJyb3IpdHJ5e3QuZXJyb3IoZSl9Y2F0Y2goYSl7QkooYSl9ZWxzZSBCSihlKX0scy5wcm90b3R5cGUuY29tcGxldGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnBhcnRpYWxPYnNlcnZlcjtpZihlLmNvbXBsZXRlKXRyeXtlLmNvbXBsZXRlKCl9Y2F0Y2godCl7QkoodCl9fSxzfSkoKSxucD0oZnVuY3Rpb24ocyl7TGEoZSxzKTtmdW5jdGlvbiBlKHQsYSxyKXt2YXIgbj1zLmNhbGwodGhpcyl8fHRoaXMsbztpZihzYSh0KXx8IXQpbz17bmV4dDp0Pz92b2lkIDAsZXJyb3I6YT8/dm9pZCAwLGNvbXBsZXRlOnI/P3ZvaWQgMH07ZWxzZXt2YXIgbDtuJiZ4Yy51c2VEZXByZWNhdGVkTmV4dENvbnRleHQ/KGw9T2JqZWN0LmNyZWF0ZSh0KSxsLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7cmV0dXJuIG4udW5zdWJzY3JpYmUoKX0sbz17bmV4dDp0Lm5leHQmJmRkZSh0Lm5leHQsbCksZXJyb3I6dC5lcnJvciYmZGRlKHQuZXJyb3IsbCksY29tcGxldGU6dC5jb21wbGV0ZSYmZGRlKHQuY29tcGxldGUsbCl9KTpvPXR9cmV0dXJuIG4uZGVzdGluYXRpb249bmV3IHFUYShvKSxufXJldHVybiBpKGUsIlNhZmVTdWJzY3JpYmVyIiksZX0pKEI0KTtpKEJKLCJoYW5kbGVVbmhhbmRsZWRFcnJvciIpO2koalRhLCJkZWZhdWx0RXJyb3JIYW5kbGVyIik7aSh1ZGUsImhhbmRsZVN0b3BwZWROb3RpZmljYXRpb24iKTtWVGE9e2Nsb3NlZDohMCxuZXh0OnljLGVycm9yOmpUYSxjb21wbGV0ZTp5Y319KTt2YXIgSDQsbHk9ZygoKT0+e0g0PShmdW5jdGlvbigpe3JldHVybiB0eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wub2JzZXJ2YWJsZXx8IkBAb2JzZXJ2YWJsZSJ9KSgpfSk7ZnVuY3Rpb24gVzIocyl7cmV0dXJuIHN9dmFyIE03PWcoKCk9PntpKFcyLCJpZGVudGl0eSIpfSk7ZnVuY3Rpb24gVVRhKCl7Zm9yKHZhciBzPVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXNbZV09YXJndW1lbnRzW2VdO3JldHVybiBwZGUocyl9ZnVuY3Rpb24gcGRlKHMpe3JldHVybiBzLmxlbmd0aD09PTA/VzI6cy5sZW5ndGg9PT0xP3NbMF06aShmdW5jdGlvbih0KXtyZXR1cm4gcy5yZWR1Y2UoZnVuY3Rpb24oYSxyKXtyZXR1cm4gcihhKX0sdCl9LCJwaXBlZCIpfXZhciBoZGU9ZygoKT0+e003KCk7aShVVGEsInBpcGUiKTtpKHBkZSwicGlwZUZyb21BcnJheSIpfSk7ZnVuY3Rpb24gdDJ0KHMpe3ZhciBlO3JldHVybihlPXM/P3hjLlByb21pc2UpIT09bnVsbCYmZSE9PXZvaWQgMD9lOlByb21pc2V9ZnVuY3Rpb24gV1RhKHMpe3JldHVybiBzJiZzYShzLm5leHQpJiZzYShzLmVycm9yKSYmc2Eocy5jb21wbGV0ZSl9ZnVuY3Rpb24gR1RhKHMpe3JldHVybiBzJiZzIGluc3RhbmNlb2YgQjR8fFdUYShzKSYmUkoocyl9dmFyIHJhLHluPWcoKCk9PntueSgpO1UyKCk7bHkoKTtoZGUoKTtrNygpO3JvKCk7RkooKTtyYT0oZnVuY3Rpb24oKXtmdW5jdGlvbiBzKGUpe2UmJih0aGlzLl9zdWJzY3JpYmU9ZSl9cmV0dXJuIGkocywiT2JzZXJ2YWJsZSIpLHMucHJvdG90eXBlLmxpZnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IHM7cmV0dXJuIHQuc291cmNlPXRoaXMsdC5vcGVyYXRvcj1lLHR9LHMucHJvdG90eXBlLnN1YnNjcmliZT1mdW5jdGlvbihlLHQsYSl7dmFyIHI9dGhpcyxuPUdUYShlKT9lOm5ldyBucChlLHQsYSk7cmV0dXJuIF83KGZ1bmN0aW9uKCl7dmFyIG89cixsPW8ub3BlcmF0b3IscD1vLnNvdXJjZTtuLmFkZChsP2wuY2FsbChuLHApOnA/ci5fc3Vic2NyaWJlKG4pOnIuX3RyeVN1YnNjcmliZShuKSl9KSxufSxzLnByb3RvdHlwZS5fdHJ5U3Vic2NyaWJlPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gdGhpcy5fc3Vic2NyaWJlKGUpfWNhdGNoKHQpe2UuZXJyb3IodCl9fSxzLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGUsdCl7dmFyIGE9dGhpcztyZXR1cm4gdD10MnQodCksbmV3IHQoZnVuY3Rpb24ocixuKXt2YXIgbz1uZXcgbnAoe25leHQ6aShmdW5jdGlvbihsKXt0cnl7ZShsKX1jYXRjaChwKXtuKHApLG8udW5zdWJzY3JpYmUoKX19LCJuZXh0IiksZXJyb3I6bixjb21wbGV0ZTpyfSk7YS5zdWJzY3JpYmUobyl9KX0scy5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4odD10aGlzLnNvdXJjZSk9PT1udWxsfHx0PT09dm9pZCAwP3ZvaWQgMDp0LnN1YnNjcmliZShlKX0scy5wcm90b3R5cGVbSDRdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHMucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspZVt0XT1hcmd1bWVudHNbdF07cmV0dXJuIHBkZShlKSh0aGlzKX0scy5wcm90b3R5cGUudG9Qcm9taXNlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIGU9dDJ0KGUpLG5ldyBlKGZ1bmN0aW9uKGEscil7dmFyIG47dC5zdWJzY3JpYmUoZnVuY3Rpb24obyl7cmV0dXJuIG49b30sZnVuY3Rpb24obyl7cmV0dXJuIHIobyl9LGZ1bmN0aW9uKCl7cmV0dXJuIGEobil9KX0pfSxzLmNyZWF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IHMoZSl9LHN9KSgpO2kodDJ0LCJnZXRQcm9taXNlQ3RvciIpO2koV1RhLCJpc09ic2VydmVyIik7aShHVGEsImlzU3Vic2NyaWJlciIpfSk7ZnVuY3Rpb24gZmRlKHMpe3JldHVybiBzYShzPy5saWZ0KX1mdW5jdGlvbiBYYShzKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoZmRlKGUpKXJldHVybiBlLmxpZnQoZnVuY3Rpb24odCl7dHJ5e3JldHVybiBzKHQsdGhpcyl9Y2F0Y2goYSl7dGhpcy5lcnJvcihhKX19KTt0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmFibGUgdG8gbGlmdCB1bmtub3duIE9ic2VydmFibGUgdHlwZSIpfX12YXIgd3I9ZygoKT0+e3JvKCk7aShmZGUsImhhc0xpZnQiKTtpKFhhLCJvcGVyYXRlIil9KTtmdW5jdGlvbiBFYShzLGUsdCxhLHIpe3JldHVybiBuZXcgYTJ0KHMsZSx0LGEscil9dmFyIGEydCxvbz1nKCgpPT57THMoKTtueSgpO2koRWEsImNyZWF0ZU9wZXJhdG9yU3Vic2NyaWJlciIpO2EydD0oZnVuY3Rpb24ocyl7TGEoZSxzKTtmdW5jdGlvbiBlKHQsYSxyLG4sbyxsKXt2YXIgcD1zLmNhbGwodGhpcyx0KXx8dGhpcztyZXR1cm4gcC5vbkZpbmFsaXplPW8scC5zaG91bGRVbnN1YnNjcmliZT1sLHAuX25leHQ9YT9mdW5jdGlvbihkKXt0cnl7YShkKX1jYXRjaCh1KXt0LmVycm9yKHUpfX06cy5wcm90b3R5cGUuX25leHQscC5fZXJyb3I9bj9mdW5jdGlvbihkKXt0cnl7bihkKX1jYXRjaCh1KXt0LmVycm9yKHUpfWZpbmFsbHl7dGhpcy51bnN1YnNjcmliZSgpfX06cy5wcm90b3R5cGUuX2Vycm9yLHAuX2NvbXBsZXRlPXI/ZnVuY3Rpb24oKXt0cnl7cigpfWNhdGNoKGQpe3QuZXJyb3IoZCl9ZmluYWxseXt0aGlzLnVuc3Vic2NyaWJlKCl9fTpzLnByb3RvdHlwZS5fY29tcGxldGUscH1yZXR1cm4gaShlLCJPcGVyYXRvclN1YnNjcmliZXIiKSxlLnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbigpe3ZhciB0O2lmKCF0aGlzLnNob3VsZFVuc3Vic2NyaWJlfHx0aGlzLnNob3VsZFVuc3Vic2NyaWJlKCkpe3ZhciBhPXRoaXMuY2xvc2VkO3MucHJvdG90eXBlLnVuc3Vic2NyaWJlLmNhbGwodGhpcyksIWEmJigodD10aGlzLm9uRmluYWxpemUpPT09bnVsbHx8dD09PXZvaWQgMHx8dC5jYWxsKHRoaXMpKX19LGV9KShCNCl9KTtmdW5jdGlvbiBISigpe3JldHVybiBYYShmdW5jdGlvbihzLGUpe3ZhciB0PW51bGw7cy5fcmVmQ291bnQrKzt2YXIgYT1FYShlLHZvaWQgMCx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7aWYoIXN8fHMuX3JlZkNvdW50PD0wfHwwPC0tcy5fcmVmQ291bnQpe3Q9bnVsbDtyZXR1cm59dmFyIHI9cy5fY29ubmVjdGlvbixuPXQ7dD1udWxsLHImJighbnx8cj09PW4pJiZyLnVuc3Vic2NyaWJlKCksZS51bnN1YnNjcmliZSgpfSk7cy5zdWJzY3JpYmUoYSksYS5jbG9zZWR8fCh0PXMuY29ubmVjdCgpKX0pfXZhciBxSj1nKCgpPT57d3IoKTtvbygpO2koSEosInJlZkNvdW50Iil9KTt2YXIgczJ0LGkydD1nKCgpPT57THMoKTt5bigpO1UyKCk7cUooKTtvbygpO3dyKCk7czJ0PShmdW5jdGlvbihzKXtMYShlLHMpO2Z1bmN0aW9uIGUodCxhKXt2YXIgcj1zLmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIHIuc291cmNlPXQsci5zdWJqZWN0RmFjdG9yeT1hLHIuX3N1YmplY3Q9bnVsbCxyLl9yZWZDb3VudD0wLHIuX2Nvbm5lY3Rpb249bnVsbCxmZGUodCkmJihyLmxpZnQ9dC5saWZ0KSxyfXJldHVybiBpKGUsIkNvbm5lY3RhYmxlT2JzZXJ2YWJsZSIpLGUucHJvdG90eXBlLl9zdWJzY3JpYmU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZ2V0U3ViamVjdCgpLnN1YnNjcmliZSh0KX0sZS5wcm90b3R5cGUuZ2V0U3ViamVjdD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3N1YmplY3Q7cmV0dXJuKCF0fHx0LmlzU3RvcHBlZCkmJih0aGlzLl9zdWJqZWN0PXRoaXMuc3ViamVjdEZhY3RvcnkoKSksdGhpcy5fc3ViamVjdH0sZS5wcm90b3R5cGUuX3RlYXJkb3duPWZ1bmN0aW9uKCl7dGhpcy5fcmVmQ291bnQ9MDt2YXIgdD10aGlzLl9jb25uZWN0aW9uO3RoaXMuX3N1YmplY3Q9dGhpcy5fY29ubmVjdGlvbj1udWxsLHQ/LnVuc3Vic2NyaWJlKCl9LGUucHJvdG90eXBlLmNvbm5lY3Q9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGE9dGhpcy5fY29ubmVjdGlvbjtpZighYSl7YT10aGlzLl9jb25uZWN0aW9uPW5ldyB0cjt2YXIgcj10aGlzLmdldFN1YmplY3QoKTthLmFkZCh0aGlzLnNvdXJjZS5zdWJzY3JpYmUoRWEocix2b2lkIDAsZnVuY3Rpb24oKXt0Ll90ZWFyZG93bigpLHIuY29tcGxldGUoKX0sZnVuY3Rpb24obil7dC5fdGVhcmRvd24oKSxyLmVycm9yKG4pfSxmdW5jdGlvbigpe3JldHVybiB0Ll90ZWFyZG93bigpfSkpKSxhLmNsb3NlZCYmKHRoaXMuX2Nvbm5lY3Rpb249bnVsbCxhPXRyLkVNUFRZKX1yZXR1cm4gYX0sZS5wcm90b3R5cGUucmVmQ291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gSEooKSh0aGlzKX0sZX0pKHJhKX0pO3ZhciBtZGUscjJ0PWcoKCk9PnttZGU9e25vdzppKGZ1bmN0aW9uKCl7cmV0dXJuKG1kZS5kZWxlZ2F0ZXx8cGVyZm9ybWFuY2UpLm5vdygpfSwibm93IiksZGVsZWdhdGU6dm9pZCAwfX0pO3ZhciBsMCxnZGU9ZygoKT0+e0xzKCk7VTIoKTtsMD17c2NoZWR1bGU6aShmdW5jdGlvbihzKXt2YXIgZT1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUsdD1jYW5jZWxBbmltYXRpb25GcmFtZSxhPWwwLmRlbGVnYXRlO2EmJihlPWEucmVxdWVzdEFuaW1hdGlvbkZyYW1lLHQ9YS5jYW5jZWxBbmltYXRpb25GcmFtZSk7dmFyIHI9ZShmdW5jdGlvbihuKXt0PXZvaWQgMCxzKG4pfSk7cmV0dXJuIG5ldyB0cihmdW5jdGlvbigpe3JldHVybiB0Py4ocil9KX0sInNjaGVkdWxlIikscmVxdWVzdEFuaW1hdGlvbkZyYW1lOmkoZnVuY3Rpb24oKXtmb3IodmFyIHM9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspc1tlXT1hcmd1bWVudHNbZV07dmFyIHQ9bDAuZGVsZWdhdGU7cmV0dXJuKHQ/LnJlcXVlc3RBbmltYXRpb25GcmFtZXx8cmVxdWVzdEFuaW1hdGlvbkZyYW1lKS5hcHBseSh2b2lkIDAsT3IoW10sT2kocykpKX0sInJlcXVlc3RBbmltYXRpb25GcmFtZSIpLGNhbmNlbEFuaW1hdGlvbkZyYW1lOmkoZnVuY3Rpb24oKXtmb3IodmFyIHM9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspc1tlXT1hcmd1bWVudHNbZV07dmFyIHQ9bDAuZGVsZWdhdGU7cmV0dXJuKHQ/LmNhbmNlbEFuaW1hdGlvbkZyYW1lfHxjYW5jZWxBbmltYXRpb25GcmFtZSkuYXBwbHkodm9pZCAwLE9yKFtdLE9pKHMpKSl9LCJjYW5jZWxBbmltYXRpb25GcmFtZSIpLGRlbGVnYXRlOnZvaWQgMH19KTtmdW5jdGlvbiBLVGEocyl7cmV0dXJuIHM/bzJ0KHMpOllUYX1mdW5jdGlvbiBvMnQocyl7cmV0dXJuIG5ldyByYShmdW5jdGlvbihlKXt2YXIgdD1zfHxtZGUsYT10Lm5vdygpLHI9MCxuPWkoZnVuY3Rpb24oKXtlLmNsb3NlZHx8KHI9bDAucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKG8pe3I9MDt2YXIgbD10Lm5vdygpO2UubmV4dCh7dGltZXN0YW1wOnM/bDpvLGVsYXBzZWQ6bC1hfSksbigpfSkpfSwicnVuIik7cmV0dXJuIG4oKSxmdW5jdGlvbigpe3ImJmwwLmNhbmNlbEFuaW1hdGlvbkZyYW1lKHIpfX0pfXZhciBZVGEsbjJ0PWcoKCk9Pnt5bigpO3IydCgpO2dkZSgpO2koS1RhLCJhbmltYXRpb25GcmFtZXMiKTtpKG8ydCwiYW5pbWF0aW9uRnJhbWVzRmFjdG9yeSIpO1lUYT1vMnQoKX0pO3ZhciBiZGUsdmRlPWcoKCk9PntvcCgpO2JkZT1obChmdW5jdGlvbihzKXtyZXR1cm4gaShmdW5jdGlvbigpe3ModGhpcyksdGhpcy5uYW1lPSJPYmplY3RVbnN1YnNjcmliZWRFcnJvciIsdGhpcy5tZXNzYWdlPSJvYmplY3QgdW5zdWJzY3JpYmVkIn0sIk9iamVjdFVuc3Vic2NyaWJlZEVycm9ySW1wbCIpfSl9KTt2YXIgVW8seGRlLHo3PWcoKCk9PntMcygpO3luKCk7VTIoKTt2ZGUoKTt3NygpO0ZKKCk7VW89KGZ1bmN0aW9uKHMpe0xhKGUscyk7ZnVuY3Rpb24gZSgpe3ZhciB0PXMuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gdC5jbG9zZWQ9ITEsdC5jdXJyZW50T2JzZXJ2ZXJzPW51bGwsdC5vYnNlcnZlcnM9W10sdC5pc1N0b3BwZWQ9ITEsdC5oYXNFcnJvcj0hMSx0LnRocm93bkVycm9yPW51bGwsdH1yZXR1cm4gaShlLCJTdWJqZWN0IiksZS5wcm90b3R5cGUubGlmdD1mdW5jdGlvbih0KXt2YXIgYT1uZXcgeGRlKHRoaXMsdGhpcyk7cmV0dXJuIGEub3BlcmF0b3I9dCxhfSxlLnByb3RvdHlwZS5fdGhyb3dJZkNsb3NlZD1mdW5jdGlvbigpe2lmKHRoaXMuY2xvc2VkKXRocm93IG5ldyBiZGV9LGUucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24odCl7dmFyIGE9dGhpcztfNyhmdW5jdGlvbigpe3ZhciByLG47aWYoYS5fdGhyb3dJZkNsb3NlZCgpLCFhLmlzU3RvcHBlZCl7YS5jdXJyZW50T2JzZXJ2ZXJzfHwoYS5jdXJyZW50T2JzZXJ2ZXJzPUFycmF5LmZyb20oYS5vYnNlcnZlcnMpKTt0cnl7Zm9yKHZhciBvPVZvKGEuY3VycmVudE9ic2VydmVycyksbD1vLm5leHQoKTshbC5kb25lO2w9by5uZXh0KCkpe3ZhciBwPWwudmFsdWU7cC5uZXh0KHQpfX1jYXRjaChkKXtyPXtlcnJvcjpkfX1maW5hbGx5e3RyeXtsJiYhbC5kb25lJiYobj1vLnJldHVybikmJm4uY2FsbChvKX1maW5hbGx5e2lmKHIpdGhyb3cgci5lcnJvcn19fX0pfSxlLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbih0KXt2YXIgYT10aGlzO183KGZ1bmN0aW9uKCl7aWYoYS5fdGhyb3dJZkNsb3NlZCgpLCFhLmlzU3RvcHBlZCl7YS5oYXNFcnJvcj1hLmlzU3RvcHBlZD0hMCxhLnRocm93bkVycm9yPXQ7Zm9yKHZhciByPWEub2JzZXJ2ZXJzO3IubGVuZ3RoOylyLnNoaWZ0KCkuZXJyb3IodCl9fSl9LGUucHJvdG90eXBlLmNvbXBsZXRlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztfNyhmdW5jdGlvbigpe2lmKHQuX3Rocm93SWZDbG9zZWQoKSwhdC5pc1N0b3BwZWQpe3QuaXNTdG9wcGVkPSEwO2Zvcih2YXIgYT10Lm9ic2VydmVyczthLmxlbmd0aDspYS5zaGlmdCgpLmNvbXBsZXRlKCl9fSl9LGUucHJvdG90eXBlLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7dGhpcy5pc1N0b3BwZWQ9dGhpcy5jbG9zZWQ9ITAsdGhpcy5vYnNlcnZlcnM9dGhpcy5jdXJyZW50T2JzZXJ2ZXJzPW51bGx9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwib2JzZXJ2ZWQiLHtnZXQ6aShmdW5jdGlvbigpe3ZhciB0O3JldHVybigodD10aGlzLm9ic2VydmVycyk9PT1udWxsfHx0PT09dm9pZCAwP3ZvaWQgMDp0Lmxlbmd0aCk+MH0sImdldCIpLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuX3RyeVN1YnNjcmliZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fdGhyb3dJZkNsb3NlZCgpLHMucHJvdG90eXBlLl90cnlTdWJzY3JpYmUuY2FsbCh0aGlzLHQpfSxlLnByb3RvdHlwZS5fc3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl90aHJvd0lmQ2xvc2VkKCksdGhpcy5fY2hlY2tGaW5hbGl6ZWRTdGF0dXNlcyh0KSx0aGlzLl9pbm5lclN1YnNjcmliZSh0KX0sZS5wcm90b3R5cGUuX2lubmVyU3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3ZhciBhPXRoaXMscj10aGlzLG49ci5oYXNFcnJvcixvPXIuaXNTdG9wcGVkLGw9ci5vYnNlcnZlcnM7cmV0dXJuIG58fG8/b2RlOih0aGlzLmN1cnJlbnRPYnNlcnZlcnM9bnVsbCxsLnB1c2godCksbmV3IHRyKGZ1bmN0aW9uKCl7YS5jdXJyZW50T2JzZXJ2ZXJzPW51bGwsbTEobCx0KX0pKX0sZS5wcm90b3R5cGUuX2NoZWNrRmluYWxpemVkU3RhdHVzZXM9ZnVuY3Rpb24odCl7dmFyIGE9dGhpcyxyPWEuaGFzRXJyb3Isbj1hLnRocm93bkVycm9yLG89YS5pc1N0b3BwZWQ7cj90LmVycm9yKG4pOm8mJnQuY29tcGxldGUoKX0sZS5wcm90b3R5cGUuYXNPYnNlcnZhYmxlPWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IHJhO3JldHVybiB0LnNvdXJjZT10aGlzLHR9LGUuY3JlYXRlPWZ1bmN0aW9uKHQsYSl7cmV0dXJuIG5ldyB4ZGUodCxhKX0sZX0pKHJhKSx4ZGU9KGZ1bmN0aW9uKHMpe0xhKGUscyk7ZnVuY3Rpb24gZSh0LGEpe3ZhciByPXMuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gci5kZXN0aW5hdGlvbj10LHIuc291cmNlPWEscn1yZXR1cm4gaShlLCJBbm9ueW1vdXNTdWJqZWN0IiksZS5wcm90b3R5cGUubmV4dD1mdW5jdGlvbih0KXt2YXIgYSxyOyhyPShhPXRoaXMuZGVzdGluYXRpb24pPT09bnVsbHx8YT09PXZvaWQgMD92b2lkIDA6YS5uZXh0KT09PW51bGx8fHI9PT12b2lkIDB8fHIuY2FsbChhLHQpfSxlLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbih0KXt2YXIgYSxyOyhyPShhPXRoaXMuZGVzdGluYXRpb24pPT09bnVsbHx8YT09PXZvaWQgMD92b2lkIDA6YS5lcnJvcik9PT1udWxsfHxyPT09dm9pZCAwfHxyLmNhbGwoYSx0KX0sZS5wcm90b3R5cGUuY29tcGxldGU9ZnVuY3Rpb24oKXt2YXIgdCxhOyhhPSh0PXRoaXMuZGVzdGluYXRpb24pPT09bnVsbHx8dD09PXZvaWQgMD92b2lkIDA6dC5jb21wbGV0ZSk9PT1udWxsfHxhPT09dm9pZCAwfHxhLmNhbGwodCl9LGUucHJvdG90eXBlLl9zdWJzY3JpYmU9ZnVuY3Rpb24odCl7dmFyIGEscjtyZXR1cm4ocj0oYT10aGlzLnNvdXJjZSk9PT1udWxsfHxhPT09dm9pZCAwP3ZvaWQgMDphLnN1YnNjcmliZSh0KSkhPT1udWxsJiZyIT09dm9pZCAwP3I6b2RlfSxlfSkoVW8pfSk7dmFyIEM3LGwydD1nKCgpPT57THMoKTt6NygpO0M3PShmdW5jdGlvbihzKXtMYShlLHMpO2Z1bmN0aW9uIGUodCl7dmFyIGE9cy5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBhLl92YWx1ZT10LGF9cmV0dXJuIGkoZSwiQmVoYXZpb3JTdWJqZWN0IiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ2YWx1ZSIse2dldDppKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VmFsdWUoKX0sImdldCIpLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbih0KXt2YXIgYT1zLnByb3RvdHlwZS5fc3Vic2NyaWJlLmNhbGwodGhpcyx0KTtyZXR1cm4hYS5jbG9zZWQmJnQubmV4dCh0aGlzLl92YWx1ZSksYX0sZS5wcm90b3R5cGUuZ2V0VmFsdWU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGE9dC5oYXNFcnJvcixyPXQudGhyb3duRXJyb3Isbj10Ll92YWx1ZTtpZihhKXRocm93IHI7cmV0dXJuIHRoaXMuX3Rocm93SWZDbG9zZWQoKSxufSxlLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKHQpe3MucHJvdG90eXBlLm5leHQuY2FsbCh0aGlzLHRoaXMuX3ZhbHVlPXQpfSxlfSkoVW8pfSk7dmFyIGN5LHlkZT1nKCgpPT57Y3k9e25vdzppKGZ1bmN0aW9uKCl7cmV0dXJuKGN5LmRlbGVnYXRlfHxEYXRlKS5ub3coKX0sIm5vdyIpLGRlbGVnYXRlOnZvaWQgMH19KTt2YXIgVDcsd2RlPWcoKCk9PntMcygpO3o3KCk7eWRlKCk7VDc9KGZ1bmN0aW9uKHMpe0xhKGUscyk7ZnVuY3Rpb24gZSh0LGEscil7dD09PXZvaWQgMCYmKHQ9MS8wKSxhPT09dm9pZCAwJiYoYT0xLzApLHI9PT12b2lkIDAmJihyPWN5KTt2YXIgbj1zLmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4uX2J1ZmZlclNpemU9dCxuLl93aW5kb3dUaW1lPWEsbi5fdGltZXN0YW1wUHJvdmlkZXI9cixuLl9idWZmZXI9W10sbi5faW5maW5pdGVUaW1lV2luZG93PSEwLG4uX2luZmluaXRlVGltZVdpbmRvdz1hPT09MS8wLG4uX2J1ZmZlclNpemU9TWF0aC5tYXgoMSx0KSxuLl93aW5kb3dUaW1lPU1hdGgubWF4KDEsYSksbn1yZXR1cm4gaShlLCJSZXBsYXlTdWJqZWN0IiksZS5wcm90b3R5cGUubmV4dD1mdW5jdGlvbih0KXt2YXIgYT10aGlzLHI9YS5pc1N0b3BwZWQsbj1hLl9idWZmZXIsbz1hLl9pbmZpbml0ZVRpbWVXaW5kb3csbD1hLl90aW1lc3RhbXBQcm92aWRlcixwPWEuX3dpbmRvd1RpbWU7cnx8KG4ucHVzaCh0KSwhbyYmbi5wdXNoKGwubm93KCkrcCkpLHRoaXMuX3RyaW1CdWZmZXIoKSxzLnByb3RvdHlwZS5uZXh0LmNhbGwodGhpcyx0KX0sZS5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbih0KXt0aGlzLl90aHJvd0lmQ2xvc2VkKCksdGhpcy5fdHJpbUJ1ZmZlcigpO2Zvcih2YXIgYT10aGlzLl9pbm5lclN1YnNjcmliZSh0KSxyPXRoaXMsbj1yLl9pbmZpbml0ZVRpbWVXaW5kb3csbz1yLl9idWZmZXIsbD1vLnNsaWNlKCkscD0wO3A8bC5sZW5ndGgmJiF0LmNsb3NlZDtwKz1uPzE6Mil0Lm5leHQobFtwXSk7cmV0dXJuIHRoaXMuX2NoZWNrRmluYWxpemVkU3RhdHVzZXModCksYX0sZS5wcm90b3R5cGUuX3RyaW1CdWZmZXI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGE9dC5fYnVmZmVyU2l6ZSxyPXQuX3RpbWVzdGFtcFByb3ZpZGVyLG49dC5fYnVmZmVyLG89dC5faW5maW5pdGVUaW1lV2luZG93LGw9KG8/MToyKSphO2lmKGE8MS8wJiZsPG4ubGVuZ3RoJiZuLnNwbGljZSgwLG4ubGVuZ3RoLWwpLCFvKXtmb3IodmFyIHA9ci5ub3coKSxkPTAsdT0xO3U8bi5sZW5ndGgmJm5bdV08PXA7dSs9MilkPXU7ZCYmbi5zcGxpY2UoMCxkKzEpfX0sZX0pKFVvKX0pO3ZhciBjMnQsZDJ0PWcoKCk9PntMcygpO3o3KCk7YzJ0PShmdW5jdGlvbihzKXtMYShlLHMpO2Z1bmN0aW9uIGUoKXt2YXIgdD1zIT09bnVsbCYmcy5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7cmV0dXJuIHQuX3ZhbHVlPW51bGwsdC5faGFzVmFsdWU9ITEsdC5faXNDb21wbGV0ZT0hMSx0fXJldHVybiBpKGUsIkFzeW5jU3ViamVjdCIpLGUucHJvdG90eXBlLl9jaGVja0ZpbmFsaXplZFN0YXR1c2VzPWZ1bmN0aW9uKHQpe3ZhciBhPXRoaXMscj1hLmhhc0Vycm9yLG49YS5faGFzVmFsdWUsbz1hLl92YWx1ZSxsPWEudGhyb3duRXJyb3IscD1hLmlzU3RvcHBlZCxkPWEuX2lzQ29tcGxldGU7cj90LmVycm9yKGwpOihwfHxkKSYmKG4mJnQubmV4dChvKSx0LmNvbXBsZXRlKCkpfSxlLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKHQpe3RoaXMuaXNTdG9wcGVkfHwodGhpcy5fdmFsdWU9dCx0aGlzLl9oYXNWYWx1ZT0hMCl9LGUucHJvdG90eXBlLmNvbXBsZXRlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxhPXQuX2hhc1ZhbHVlLHI9dC5fdmFsdWUsbj10Ll9pc0NvbXBsZXRlO258fCh0aGlzLl9pc0NvbXBsZXRlPSEwLGEmJnMucHJvdG90eXBlLm5leHQuY2FsbCh0aGlzLHIpLHMucHJvdG90eXBlLmNvbXBsZXRlLmNhbGwodGhpcykpfSxlfSkoVW8pfSk7dmFyIGtkZSx1MnQ9ZygoKT0+e0xzKCk7VTIoKTtrZGU9KGZ1bmN0aW9uKHMpe0xhKGUscyk7ZnVuY3Rpb24gZSh0LGEpe3JldHVybiBzLmNhbGwodGhpcyl8fHRoaXN9cmV0dXJuIGkoZSwiQWN0aW9uIiksZS5wcm90b3R5cGUuc2NoZWR1bGU9ZnVuY3Rpb24odCxhKXtyZXR1cm4gYT09PXZvaWQgMCYmKGE9MCksdGhpc30sZX0pKHRyKX0pO3ZhciBkeSxwMnQ9ZygoKT0+e0xzKCk7ZHk9e3NldEludGVydmFsOmkoZnVuY3Rpb24ocyxlKXtmb3IodmFyIHQ9W10sYT0yO2E8YXJndW1lbnRzLmxlbmd0aDthKyspdFthLTJdPWFyZ3VtZW50c1thXTt2YXIgcj1keS5kZWxlZ2F0ZTtyZXR1cm4gcj8uc2V0SW50ZXJ2YWw/ci5zZXRJbnRlcnZhbC5hcHBseShyLE9yKFtzLGVdLE9pKHQpKSk6c2V0SW50ZXJ2YWwuYXBwbHkodm9pZCAwLE9yKFtzLGVdLE9pKHQpKSl9LCJzZXRJbnRlcnZhbCIpLGNsZWFySW50ZXJ2YWw6aShmdW5jdGlvbihzKXt2YXIgZT1keS5kZWxlZ2F0ZTtyZXR1cm4oZT8uY2xlYXJJbnRlcnZhbHx8Y2xlYXJJbnRlcnZhbCkocyl9LCJjbGVhckludGVydmFsIiksZGVsZWdhdGU6dm9pZCAwfX0pO3ZhciBnMSwkNz1nKCgpPT57THMoKTt1MnQoKTtwMnQoKTt3NygpO2cxPShmdW5jdGlvbihzKXtMYShlLHMpO2Z1bmN0aW9uIGUodCxhKXt2YXIgcj1zLmNhbGwodGhpcyx0LGEpfHx0aGlzO3JldHVybiByLnNjaGVkdWxlcj10LHIud29yaz1hLHIucGVuZGluZz0hMSxyfXJldHVybiBpKGUsIkFzeW5jQWN0aW9uIiksZS5wcm90b3R5cGUuc2NoZWR1bGU9ZnVuY3Rpb24odCxhKXt2YXIgcjtpZihhPT09dm9pZCAwJiYoYT0wKSx0aGlzLmNsb3NlZClyZXR1cm4gdGhpczt0aGlzLnN0YXRlPXQ7dmFyIG49dGhpcy5pZCxvPXRoaXMuc2NoZWR1bGVyO3JldHVybiBuIT1udWxsJiYodGhpcy5pZD10aGlzLnJlY3ljbGVBc3luY0lkKG8sbixhKSksdGhpcy5wZW5kaW5nPSEwLHRoaXMuZGVsYXk9YSx0aGlzLmlkPShyPXRoaXMuaWQpIT09bnVsbCYmciE9PXZvaWQgMD9yOnRoaXMucmVxdWVzdEFzeW5jSWQobyx0aGlzLmlkLGEpLHRoaXN9LGUucHJvdG90eXBlLnJlcXVlc3RBc3luY0lkPWZ1bmN0aW9uKHQsYSxyKXtyZXR1cm4gcj09PXZvaWQgMCYmKHI9MCksZHkuc2V0SW50ZXJ2YWwodC5mbHVzaC5iaW5kKHQsdGhpcykscil9LGUucHJvdG90eXBlLnJlY3ljbGVBc3luY0lkPWZ1bmN0aW9uKHQsYSxyKXtpZihyPT09dm9pZCAwJiYocj0wKSxyIT1udWxsJiZ0aGlzLmRlbGF5PT09ciYmdGhpcy5wZW5kaW5nPT09ITEpcmV0dXJuIGE7YSE9bnVsbCYmZHkuY2xlYXJJbnRlcnZhbChhKX0sZS5wcm90b3R5cGUuZXhlY3V0ZT1mdW5jdGlvbih0LGEpe2lmKHRoaXMuY2xvc2VkKXJldHVybiBuZXcgRXJyb3IoImV4ZWN1dGluZyBhIGNhbmNlbGxlZCBhY3Rpb24iKTt0aGlzLnBlbmRpbmc9ITE7dmFyIHI9dGhpcy5fZXhlY3V0ZSh0LGEpO2lmKHIpcmV0dXJuIHI7dGhpcy5wZW5kaW5nPT09ITEmJnRoaXMuaWQhPW51bGwmJih0aGlzLmlkPXRoaXMucmVjeWNsZUFzeW5jSWQodGhpcy5zY2hlZHVsZXIsdGhpcy5pZCxudWxsKSl9LGUucHJvdG90eXBlLl9leGVjdXRlPWZ1bmN0aW9uKHQsYSl7dmFyIHI9ITEsbjt0cnl7dGhpcy53b3JrKHQpfWNhdGNoKG8pe3I9ITAsbj1vfHxuZXcgRXJyb3IoIlNjaGVkdWxlZCBhY3Rpb24gdGhyZXcgZmFsc3kgZXJyb3IiKX1pZihyKXJldHVybiB0aGlzLnVuc3Vic2NyaWJlKCksbn0sZS5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXtpZighdGhpcy5jbG9zZWQpe3ZhciB0PXRoaXMsYT10LmlkLHI9dC5zY2hlZHVsZXIsbj1yLmFjdGlvbnM7dGhpcy53b3JrPXRoaXMuc3RhdGU9dGhpcy5zY2hlZHVsZXI9bnVsbCx0aGlzLnBlbmRpbmc9ITEsbTEobix0aGlzKSxhIT1udWxsJiYodGhpcy5pZD10aGlzLnJlY3ljbGVBc3luY0lkKHIsYSxudWxsKSksdGhpcy5kZWxheT1udWxsLHMucHJvdG90eXBlLnVuc3Vic2NyaWJlLmNhbGwodGhpcyl9fSxlfSkoa2RlKX0pO2Z1bmN0aW9uIGgydChzKXtyZXR1cm4gcyBpbiBqSj8oZGVsZXRlIGpKW3NdLCEwKTohMX12YXIgWlRhLFNkZSxqSixfZGUsTW9zLGYydD1nKCgpPT57WlRhPTEsako9e307aShoMnQsImZpbmRBbmRDbGVhckhhbmRsZSIpO19kZT17c2V0SW1tZWRpYXRlOmkoZnVuY3Rpb24ocyl7dmFyIGU9WlRhKys7cmV0dXJuIGpKW2VdPSEwLFNkZXx8KFNkZT1Qcm9taXNlLnJlc29sdmUoKSksU2RlLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gaDJ0KGUpJiZzKCl9KSxlfSwic2V0SW1tZWRpYXRlIiksY2xlYXJJbW1lZGlhdGU6aShmdW5jdGlvbihzKXtoMnQocyl9LCJjbGVhckltbWVkaWF0ZSIpfSxNb3M9e3BlbmRpbmc6aShmdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyhqSikubGVuZ3RofSwicGVuZGluZyIpfX0pO3ZhciBYVGEsUVRhLHV5LG0ydD1nKCgpPT57THMoKTtmMnQoKTtYVGE9X2RlLnNldEltbWVkaWF0ZSxRVGE9X2RlLmNsZWFySW1tZWRpYXRlLHV5PXtzZXRJbW1lZGlhdGU6aShmdW5jdGlvbigpe2Zvcih2YXIgcz1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKylzW2VdPWFyZ3VtZW50c1tlXTt2YXIgdD11eS5kZWxlZ2F0ZTtyZXR1cm4odD8uc2V0SW1tZWRpYXRlfHxYVGEpLmFwcGx5KHZvaWQgMCxPcihbXSxPaShzKSkpfSwic2V0SW1tZWRpYXRlIiksY2xlYXJJbW1lZGlhdGU6aShmdW5jdGlvbihzKXt2YXIgZT11eS5kZWxlZ2F0ZTtyZXR1cm4oZT8uY2xlYXJJbW1lZGlhdGV8fFFUYSkocyl9LCJjbGVhckltbWVkaWF0ZSIpLGRlbGVnYXRlOnZvaWQgMH19KTt2YXIgTWRlLGcydD1nKCgpPT57THMoKTskNygpO20ydCgpO01kZT0oZnVuY3Rpb24ocyl7TGEoZSxzKTtmdW5jdGlvbiBlKHQsYSl7dmFyIHI9cy5jYWxsKHRoaXMsdCxhKXx8dGhpcztyZXR1cm4gci5zY2hlZHVsZXI9dCxyLndvcms9YSxyfXJldHVybiBpKGUsIkFzYXBBY3Rpb24iKSxlLnByb3RvdHlwZS5yZXF1ZXN0QXN5bmNJZD1mdW5jdGlvbih0LGEscil7cmV0dXJuIHI9PT12b2lkIDAmJihyPTApLHIhPT1udWxsJiZyPjA/cy5wcm90b3R5cGUucmVxdWVzdEFzeW5jSWQuY2FsbCh0aGlzLHQsYSxyKToodC5hY3Rpb25zLnB1c2godGhpcyksdC5fc2NoZWR1bGVkfHwodC5fc2NoZWR1bGVkPXV5LnNldEltbWVkaWF0ZSh0LmZsdXNoLmJpbmQodCx2b2lkIDApKSkpfSxlLnByb3RvdHlwZS5yZWN5Y2xlQXN5bmNJZD1mdW5jdGlvbih0LGEscil7dmFyIG47aWYocj09PXZvaWQgMCYmKHI9MCksciE9bnVsbD9yPjA6dGhpcy5kZWxheT4wKXJldHVybiBzLnByb3RvdHlwZS5yZWN5Y2xlQXN5bmNJZC5jYWxsKHRoaXMsdCxhLHIpO3ZhciBvPXQuYWN0aW9uczthIT1udWxsJiYoKG49b1tvLmxlbmd0aC0xXSk9PT1udWxsfHxuPT09dm9pZCAwP3ZvaWQgMDpuLmlkKSE9PWEmJih1eS5jbGVhckltbWVkaWF0ZShhKSx0Ll9zY2hlZHVsZWQ9PT1hJiYodC5fc2NoZWR1bGVkPXZvaWQgMCkpfSxlfSkoZzEpfSk7dmFyIHB5LHpkZT1nKCgpPT57eWRlKCk7cHk9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcyhlLHQpe3Q9PT12b2lkIDAmJih0PXMubm93KSx0aGlzLnNjaGVkdWxlckFjdGlvbkN0b3I9ZSx0aGlzLm5vdz10fXJldHVybiBpKHMsIlNjaGVkdWxlciIpLHMucHJvdG90eXBlLnNjaGVkdWxlPWZ1bmN0aW9uKGUsdCxhKXtyZXR1cm4gdD09PXZvaWQgMCYmKHQ9MCksbmV3IHRoaXMuc2NoZWR1bGVyQWN0aW9uQ3Rvcih0aGlzLGUpLnNjaGVkdWxlKGEsdCl9LHMubm93PWN5Lm5vdyxzfSkoKX0pO3ZhciBiMSxENz1nKCgpPT57THMoKTt6ZGUoKTtiMT0oZnVuY3Rpb24ocyl7TGEoZSxzKTtmdW5jdGlvbiBlKHQsYSl7YT09PXZvaWQgMCYmKGE9cHkubm93KTt2YXIgcj1zLmNhbGwodGhpcyx0LGEpfHx0aGlzO3JldHVybiByLmFjdGlvbnM9W10sci5fYWN0aXZlPSExLHJ9cmV0dXJuIGkoZSwiQXN5bmNTY2hlZHVsZXIiKSxlLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbih0KXt2YXIgYT10aGlzLmFjdGlvbnM7aWYodGhpcy5fYWN0aXZlKXthLnB1c2godCk7cmV0dXJufXZhciByO3RoaXMuX2FjdGl2ZT0hMDtkbyBpZihyPXQuZXhlY3V0ZSh0LnN0YXRlLHQuZGVsYXkpKWJyZWFrO3doaWxlKHQ9YS5zaGlmdCgpKTtpZih0aGlzLl9hY3RpdmU9ITEscil7Zm9yKDt0PWEuc2hpZnQoKTspdC51bnN1YnNjcmliZSgpO3Rocm93IHJ9fSxlfSkocHkpfSk7dmFyIENkZSxiMnQ9ZygoKT0+e0xzKCk7RDcoKTtDZGU9KGZ1bmN0aW9uKHMpe0xhKGUscyk7ZnVuY3Rpb24gZSgpe3JldHVybiBzIT09bnVsbCYmcy5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIGkoZSwiQXNhcFNjaGVkdWxlciIpLGUucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKHQpe3RoaXMuX2FjdGl2ZT0hMDt2YXIgYT10aGlzLl9zY2hlZHVsZWQ7dGhpcy5fc2NoZWR1bGVkPXZvaWQgMDt2YXIgcj10aGlzLmFjdGlvbnMsbjt0PXR8fHIuc2hpZnQoKTtkbyBpZihuPXQuZXhlY3V0ZSh0LnN0YXRlLHQuZGVsYXkpKWJyZWFrO3doaWxlKCh0PXJbMF0pJiZ0LmlkPT09YSYmci5zaGlmdCgpKTtpZih0aGlzLl9hY3RpdmU9ITEsbil7Zm9yKDsodD1yWzBdKSYmdC5pZD09PWEmJnIuc2hpZnQoKTspdC51bnN1YnNjcmliZSgpO3Rocm93IG59fSxlfSkoYjEpfSk7dmFyIHYydCxKVGEseDJ0PWcoKCk9PntnMnQoKTtiMnQoKTt2MnQ9bmV3IENkZShNZGUpLEpUYT12MnR9KTt2YXIgZmwsVGRlLGMwPWcoKCk9PnskNygpO0Q3KCk7Zmw9bmV3IGIxKGcxKSxUZGU9Zmx9KTt2YXIgJGRlLHkydD1nKCgpPT57THMoKTskNygpOyRkZT0oZnVuY3Rpb24ocyl7TGEoZSxzKTtmdW5jdGlvbiBlKHQsYSl7dmFyIHI9cy5jYWxsKHRoaXMsdCxhKXx8dGhpcztyZXR1cm4gci5zY2hlZHVsZXI9dCxyLndvcms9YSxyfXJldHVybiBpKGUsIlF1ZXVlQWN0aW9uIiksZS5wcm90b3R5cGUuc2NoZWR1bGU9ZnVuY3Rpb24odCxhKXtyZXR1cm4gYT09PXZvaWQgMCYmKGE9MCksYT4wP3MucHJvdG90eXBlLnNjaGVkdWxlLmNhbGwodGhpcyx0LGEpOih0aGlzLmRlbGF5PWEsdGhpcy5zdGF0ZT10LHRoaXMuc2NoZWR1bGVyLmZsdXNoKHRoaXMpLHRoaXMpfSxlLnByb3RvdHlwZS5leGVjdXRlPWZ1bmN0aW9uKHQsYSl7cmV0dXJuIGE+MHx8dGhpcy5jbG9zZWQ/cy5wcm90b3R5cGUuZXhlY3V0ZS5jYWxsKHRoaXMsdCxhKTp0aGlzLl9leGVjdXRlKHQsYSl9LGUucHJvdG90eXBlLnJlcXVlc3RBc3luY0lkPWZ1bmN0aW9uKHQsYSxyKXtyZXR1cm4gcj09PXZvaWQgMCYmKHI9MCksciE9bnVsbCYmcj4wfHxyPT1udWxsJiZ0aGlzLmRlbGF5PjA/cy5wcm90b3R5cGUucmVxdWVzdEFzeW5jSWQuY2FsbCh0aGlzLHQsYSxyKToodC5mbHVzaCh0aGlzKSwwKX0sZX0pKGcxKX0pO3ZhciBEZGUsdzJ0PWcoKCk9PntMcygpO0Q3KCk7RGRlPShmdW5jdGlvbihzKXtMYShlLHMpO2Z1bmN0aW9uIGUoKXtyZXR1cm4gcyE9PW51bGwmJnMuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBpKGUsIlF1ZXVlU2NoZWR1bGVyIiksZX0pKGIxKX0pO3ZhciBrMnQsZSRhLFMydD1nKCgpPT57eTJ0KCk7dzJ0KCk7azJ0PW5ldyBEZGUoJGRlKSxlJGE9azJ0fSk7dmFyIExkZSxfMnQ9ZygoKT0+e0xzKCk7JDcoKTtnZGUoKTtMZGU9KGZ1bmN0aW9uKHMpe0xhKGUscyk7ZnVuY3Rpb24gZSh0LGEpe3ZhciByPXMuY2FsbCh0aGlzLHQsYSl8fHRoaXM7cmV0dXJuIHIuc2NoZWR1bGVyPXQsci53b3JrPWEscn1yZXR1cm4gaShlLCJBbmltYXRpb25GcmFtZUFjdGlvbiIpLGUucHJvdG90eXBlLnJlcXVlc3RBc3luY0lkPWZ1bmN0aW9uKHQsYSxyKXtyZXR1cm4gcj09PXZvaWQgMCYmKHI9MCksciE9PW51bGwmJnI+MD9zLnByb3RvdHlwZS5yZXF1ZXN0QXN5bmNJZC5jYWxsKHRoaXMsdCxhLHIpOih0LmFjdGlvbnMucHVzaCh0aGlzKSx0Ll9zY2hlZHVsZWR8fCh0Ll9zY2hlZHVsZWQ9bDAucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7cmV0dXJuIHQuZmx1c2godm9pZCAwKX0pKSl9LGUucHJvdG90eXBlLnJlY3ljbGVBc3luY0lkPWZ1bmN0aW9uKHQsYSxyKXt2YXIgbjtpZihyPT09dm9pZCAwJiYocj0wKSxyIT1udWxsP3I+MDp0aGlzLmRlbGF5PjApcmV0dXJuIHMucHJvdG90eXBlLnJlY3ljbGVBc3luY0lkLmNhbGwodGhpcyx0LGEscik7dmFyIG89dC5hY3Rpb25zO2EhPW51bGwmJmE9PT10Ll9zY2hlZHVsZWQmJigobj1vW28ubGVuZ3RoLTFdKT09PW51bGx8fG49PT12b2lkIDA/dm9pZCAwOm4uaWQpIT09YSYmKGwwLmNhbmNlbEFuaW1hdGlvbkZyYW1lKGEpLHQuX3NjaGVkdWxlZD12b2lkIDApfSxlfSkoZzEpfSk7dmFyIEVkZSxNMnQ9ZygoKT0+e0xzKCk7RDcoKTtFZGU9KGZ1bmN0aW9uKHMpe0xhKGUscyk7ZnVuY3Rpb24gZSgpe3JldHVybiBzIT09bnVsbCYmcy5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIGkoZSwiQW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIiKSxlLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbih0KXt0aGlzLl9hY3RpdmU9ITA7dmFyIGE7dD9hPXQuaWQ6KGE9dGhpcy5fc2NoZWR1bGVkLHRoaXMuX3NjaGVkdWxlZD12b2lkIDApO3ZhciByPXRoaXMuYWN0aW9ucyxuO3Q9dHx8ci5zaGlmdCgpO2RvIGlmKG49dC5leGVjdXRlKHQuc3RhdGUsdC5kZWxheSkpYnJlYWs7d2hpbGUoKHQ9clswXSkmJnQuaWQ9PT1hJiZyLnNoaWZ0KCkpO2lmKHRoaXMuX2FjdGl2ZT0hMSxuKXtmb3IoOyh0PXJbMF0pJiZ0LmlkPT09YSYmci5zaGlmdCgpOyl0LnVuc3Vic2NyaWJlKCk7dGhyb3cgbn19LGV9KShiMSl9KTt2YXIgejJ0LHQkYSxDMnQ9ZygoKT0+e18ydCgpO00ydCgpO3oydD1uZXcgRWRlKExkZSksdCRhPXoydH0pO3ZhciBUMnQsUGRlLCQydD1nKCgpPT57THMoKTskNygpO1UyKCk7RDcoKTtUMnQ9KGZ1bmN0aW9uKHMpe0xhKGUscyk7ZnVuY3Rpb24gZSh0LGEpe3Q9PT12b2lkIDAmJih0PVBkZSksYT09PXZvaWQgMCYmKGE9MS8wKTt2YXIgcj1zLmNhbGwodGhpcyx0LGZ1bmN0aW9uKCl7cmV0dXJuIHIuZnJhbWV9KXx8dGhpcztyZXR1cm4gci5tYXhGcmFtZXM9YSxyLmZyYW1lPTAsci5pbmRleD0tMSxyfXJldHVybiBpKGUsIlZpcnR1YWxUaW1lU2NoZWR1bGVyIiksZS5wcm90b3R5cGUuZmx1c2g9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxhPXQuYWN0aW9ucyxyPXQubWF4RnJhbWVzLG4sbzsobz1hWzBdKSYmby5kZWxheTw9ciYmKGEuc2hpZnQoKSx0aGlzLmZyYW1lPW8uZGVsYXksIShuPW8uZXhlY3V0ZShvLnN0YXRlLG8uZGVsYXkpKSk7KTtpZihuKXtmb3IoO289YS5zaGlmdCgpOylvLnVuc3Vic2NyaWJlKCk7dGhyb3cgbn19LGUuZnJhbWVUaW1lRmFjdG9yPTEwLGV9KShiMSksUGRlPShmdW5jdGlvbihzKXtMYShlLHMpO2Z1bmN0aW9uIGUodCxhLHIpe3I9PT12b2lkIDAmJihyPXQuaW5kZXgrPTEpO3ZhciBuPXMuY2FsbCh0aGlzLHQsYSl8fHRoaXM7cmV0dXJuIG4uc2NoZWR1bGVyPXQsbi53b3JrPWEsbi5pbmRleD1yLG4uYWN0aXZlPSEwLG4uaW5kZXg9dC5pbmRleD1yLG59cmV0dXJuIGkoZSwiVmlydHVhbEFjdGlvbiIpLGUucHJvdG90eXBlLnNjaGVkdWxlPWZ1bmN0aW9uKHQsYSl7aWYoYT09PXZvaWQgMCYmKGE9MCksTnVtYmVyLmlzRmluaXRlKGEpKXtpZighdGhpcy5pZClyZXR1cm4gcy5wcm90b3R5cGUuc2NoZWR1bGUuY2FsbCh0aGlzLHQsYSk7dGhpcy5hY3RpdmU9ITE7dmFyIHI9bmV3IGUodGhpcy5zY2hlZHVsZXIsdGhpcy53b3JrKTtyZXR1cm4gdGhpcy5hZGQociksci5zY2hlZHVsZSh0LGEpfWVsc2UgcmV0dXJuIHRyLkVNUFRZfSxlLnByb3RvdHlwZS5yZXF1ZXN0QXN5bmNJZD1mdW5jdGlvbih0LGEscil7cj09PXZvaWQgMCYmKHI9MCksdGhpcy5kZWxheT10LmZyYW1lK3I7dmFyIG49dC5hY3Rpb25zO3JldHVybiBuLnB1c2godGhpcyksbi5zb3J0KGUuc29ydEFjdGlvbnMpLDF9LGUucHJvdG90eXBlLnJlY3ljbGVBc3luY0lkPWZ1bmN0aW9uKHQsYSxyKXtyPT09dm9pZCAwJiYocj0wKX0sZS5wcm90b3R5cGUuX2V4ZWN1dGU9ZnVuY3Rpb24odCxhKXtpZih0aGlzLmFjdGl2ZT09PSEwKXJldHVybiBzLnByb3RvdHlwZS5fZXhlY3V0ZS5jYWxsKHRoaXMsdCxhKX0sZS5zb3J0QWN0aW9ucz1mdW5jdGlvbih0LGEpe3JldHVybiB0LmRlbGF5PT09YS5kZWxheT90LmluZGV4PT09YS5pbmRleD8wOnQuaW5kZXg+YS5pbmRleD8xOi0xOnQuZGVsYXk+YS5kZWxheT8xOi0xfSxlfSkoZzEpfSk7ZnVuY3Rpb24gYSRhKHMpe3JldHVybiBzP3MkYShzKTpWSn1mdW5jdGlvbiBzJGEocyl7cmV0dXJuIG5ldyByYShmdW5jdGlvbihlKXtyZXR1cm4gcy5zY2hlZHVsZShmdW5jdGlvbigpe3JldHVybiBlLmNvbXBsZXRlKCl9KX0pfXZhciBWSixVSj1nKCgpPT57eW4oKTtWSj1uZXcgcmEoZnVuY3Rpb24ocyl7cmV0dXJuIHMuY29tcGxldGUoKX0pO2koYSRhLCJlbXB0eSIpO2kocyRhLCJlbXB0eVNjaGVkdWxlZCIpfSk7ZnVuY3Rpb24gV0oocyl7cmV0dXJuIHMmJnNhKHMuc2NoZWR1bGUpfXZhciBJZGU9ZygoKT0+e3JvKCk7aShXSiwiaXNTY2hlZHVsZXIiKX0pO2Z1bmN0aW9uIEFkZShzKXtyZXR1cm4gc1tzLmxlbmd0aC0xXX1mdW5jdGlvbiBEMnQocyl7cmV0dXJuIHNhKEFkZShzKSk/cy5wb3AoKTp2b2lkIDB9ZnVuY3Rpb24gRzIocyl7cmV0dXJuIFdKKEFkZShzKSk/cy5wb3AoKTp2b2lkIDB9ZnVuY3Rpb24gUm5zKHMsZSl7cmV0dXJuIHR5cGVvZiBBZGUocyk9PSJudW1iZXIiP3MucG9wKCk6ZX12YXIgTDc9ZygoKT0+e3JvKCk7SWRlKCk7aShBZGUsImxhc3QiKTtpKEQydCwicG9wUmVzdWx0U2VsZWN0b3IiKTtpKEcyLCJwb3BTY2hlZHVsZXIiKTtpKFJucywicG9wTnVtYmVyIil9KTt2YXIgRTcsR0o9ZygoKT0+e0U3PWkoKGZ1bmN0aW9uKHMpe3JldHVybiBzJiZ0eXBlb2Ygcy5sZW5ndGg9PSJudW1iZXIiJiZ0eXBlb2YgcyE9ImZ1bmN0aW9uIn0pLCJpc0FycmF5TGlrZSIpfSk7ZnVuY3Rpb24gS0oocyl7cmV0dXJuIHNhKHM/LnRoZW4pfXZhciBOZGU9ZygoKT0+e3JvKCk7aShLSiwiaXNQcm9taXNlIil9KTtmdW5jdGlvbiBZSihzKXtyZXR1cm4gc2Eoc1tINF0pfXZhciBSZGU9ZygoKT0+e2x5KCk7cm8oKTtpKFlKLCJpc0ludGVyb3BPYnNlcnZhYmxlIil9KTtmdW5jdGlvbiBaSihzKXtyZXR1cm4gU3ltYm9sLmFzeW5jSXRlcmF0b3ImJnNhKHM/LltTeW1ib2wuYXN5bmNJdGVyYXRvcl0pfXZhciBPZGU9ZygoKT0+e3JvKCk7aShaSiwiaXNBc3luY0l0ZXJhYmxlIil9KTtmdW5jdGlvbiBYSihzKXtyZXR1cm4gbmV3IFR5cGVFcnJvcigiWW91IHByb3ZpZGVkICIrKHMhPT1udWxsJiZ0eXBlb2Ygcz09Im9iamVjdCI/ImFuIGludmFsaWQgb2JqZWN0IjoiJyIrcysiJyIpKyIgd2hlcmUgYSBzdHJlYW0gd2FzIGV4cGVjdGVkLiBZb3UgY2FuIHByb3ZpZGUgYW4gT2JzZXJ2YWJsZSwgUHJvbWlzZSwgUmVhZGFibGVTdHJlYW0sIEFycmF5LCBBc3luY0l0ZXJhYmxlLCBvciBJdGVyYWJsZS4iKX12YXIgRmRlPWcoKCk9PntpKFhKLCJjcmVhdGVJbnZhbGlkT2JzZXJ2YWJsZVR5cGVFcnJvciIpfSk7ZnVuY3Rpb24gaSRhKCl7cmV0dXJuIHR5cGVvZiBTeW1ib2whPSJmdW5jdGlvbiJ8fCFTeW1ib2wuaXRlcmF0b3I/IkBAaXRlcmF0b3IiOlN5bWJvbC5pdGVyYXRvcn12YXIgUUosQmRlPWcoKCk9PntpKGkkYSwiZ2V0U3ltYm9sSXRlcmF0b3IiKTtRSj1pJGEoKX0pO2Z1bmN0aW9uIEpKKHMpe3JldHVybiBzYShzPy5bUUpdKX12YXIgSGRlPWcoKCk9PntCZGUoKTtybygpO2koSkosImlzSXRlcmFibGUiKX0pO2Z1bmN0aW9uIGVlZShzKXtyZXR1cm4gc2RlKHRoaXMsYXJndW1lbnRzLGkoZnVuY3Rpb24oKXt2YXIgdCxhLHIsbjtyZXR1cm4gcnkodGhpcyxmdW5jdGlvbihvKXtzd2l0Y2goby5sYWJlbCl7Y2FzZSAwOnQ9cy5nZXRSZWFkZXIoKSxvLmxhYmVsPTE7Y2FzZSAxOm8udHJ5cy5wdXNoKFsxLCw5LDEwXSksby5sYWJlbD0yO2Nhc2UgMjpyZXR1cm5bNCxuMCh0LnJlYWQoKSldO2Nhc2UgMzpyZXR1cm4gYT1vLnNlbnQoKSxyPWEudmFsdWUsbj1hLmRvbmUsbj9bNCxuMCh2b2lkIDApXTpbMyw1XTtjYXNlIDQ6cmV0dXJuWzIsby5zZW50KCldO2Nhc2UgNTpyZXR1cm5bNCxuMChyKV07Y2FzZSA2OnJldHVybls0LG8uc2VudCgpXTtjYXNlIDc6cmV0dXJuIG8uc2VudCgpLFszLDJdO2Nhc2UgODpyZXR1cm5bMywxMF07Y2FzZSA5OnJldHVybiB0LnJlbGVhc2VMb2NrKCksWzddO2Nhc2UgMTA6cmV0dXJuWzJdfX0pfSwicmVhZGFibGVTdHJlYW1MaWtlVG9Bc3luY0dlbmVyYXRvcl8xIikpfWZ1bmN0aW9uIHRlZShzKXtyZXR1cm4gc2Eocz8uZ2V0UmVhZGVyKX12YXIgYWVlPWcoKCk9PntMcygpO3JvKCk7aShlZWUsInJlYWRhYmxlU3RyZWFtTGlrZVRvQXN5bmNHZW5lcmF0b3IiKTtpKHRlZSwiaXNSZWFkYWJsZVN0cmVhbUxpa2UiKX0pO2Z1bmN0aW9uIG5pKHMpe2lmKHMgaW5zdGFuY2VvZiByYSlyZXR1cm4gcztpZihzIT1udWxsKXtpZihZSihzKSlyZXR1cm4gciRhKHMpO2lmKEU3KHMpKXJldHVybiBvJGEocyk7aWYoS0oocykpcmV0dXJuIG4kYShzKTtpZihaSihzKSlyZXR1cm4gTDJ0KHMpO2lmKEpKKHMpKXJldHVybiBsJGEocyk7aWYodGVlKHMpKXJldHVybiBjJGEocyl9dGhyb3cgWEoocyl9ZnVuY3Rpb24gciRhKHMpe3JldHVybiBuZXcgcmEoZnVuY3Rpb24oZSl7dmFyIHQ9c1tINF0oKTtpZihzYSh0LnN1YnNjcmliZSkpcmV0dXJuIHQuc3Vic2NyaWJlKGUpO3Rocm93IG5ldyBUeXBlRXJyb3IoIlByb3ZpZGVkIG9iamVjdCBkb2VzIG5vdCBjb3JyZWN0bHkgaW1wbGVtZW50IFN5bWJvbC5vYnNlcnZhYmxlIil9KX1mdW5jdGlvbiBvJGEocyl7cmV0dXJuIG5ldyByYShmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PHMubGVuZ3RoJiYhZS5jbG9zZWQ7dCsrKWUubmV4dChzW3RdKTtlLmNvbXBsZXRlKCl9KX1mdW5jdGlvbiBuJGEocyl7cmV0dXJuIG5ldyByYShmdW5jdGlvbihlKXtzLnRoZW4oZnVuY3Rpb24odCl7ZS5jbG9zZWR8fChlLm5leHQodCksZS5jb21wbGV0ZSgpKX0sZnVuY3Rpb24odCl7cmV0dXJuIGUuZXJyb3IodCl9KS50aGVuKG51bGwsT0opfSl9ZnVuY3Rpb24gbCRhKHMpe3JldHVybiBuZXcgcmEoZnVuY3Rpb24oZSl7dmFyIHQsYTt0cnl7Zm9yKHZhciByPVZvKHMpLG49ci5uZXh0KCk7IW4uZG9uZTtuPXIubmV4dCgpKXt2YXIgbz1uLnZhbHVlO2lmKGUubmV4dChvKSxlLmNsb3NlZClyZXR1cm59fWNhdGNoKGwpe3Q9e2Vycm9yOmx9fWZpbmFsbHl7dHJ5e24mJiFuLmRvbmUmJihhPXIucmV0dXJuKSYmYS5jYWxsKHIpfWZpbmFsbHl7aWYodCl0aHJvdyB0LmVycm9yfX1lLmNvbXBsZXRlKCl9KX1mdW5jdGlvbiBMMnQocyl7cmV0dXJuIG5ldyByYShmdW5jdGlvbihlKXtkJGEocyxlKS5jYXRjaChmdW5jdGlvbih0KXtyZXR1cm4gZS5lcnJvcih0KX0pfSl9ZnVuY3Rpb24gYyRhKHMpe3JldHVybiBMMnQoZWVlKHMpKX1mdW5jdGlvbiBkJGEocyxlKXt2YXIgdCxhLHIsbjtyZXR1cm4gYWRlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBvLGw7cmV0dXJuIHJ5KHRoaXMsZnVuY3Rpb24ocCl7c3dpdGNoKHAubGFiZWwpe2Nhc2UgMDpwLnRyeXMucHVzaChbMCw1LDYsMTFdKSx0PWlkZShzKSxwLmxhYmVsPTE7Y2FzZSAxOnJldHVybls0LHQubmV4dCgpXTtjYXNlIDI6aWYoYT1wLnNlbnQoKSwhIWEuZG9uZSlyZXR1cm5bMyw0XTtpZihvPWEudmFsdWUsZS5uZXh0KG8pLGUuY2xvc2VkKXJldHVyblsyXTtwLmxhYmVsPTM7Y2FzZSAzOnJldHVyblszLDFdO2Nhc2UgNDpyZXR1cm5bMywxMV07Y2FzZSA1OnJldHVybiBsPXAuc2VudCgpLHI9e2Vycm9yOmx9LFszLDExXTtjYXNlIDY6cmV0dXJuIHAudHJ5cy5wdXNoKFs2LCw5LDEwXSksYSYmIWEuZG9uZSYmKG49dC5yZXR1cm4pP1s0LG4uY2FsbCh0KV06WzMsOF07Y2FzZSA3OnAuc2VudCgpLHAubGFiZWw9ODtjYXNlIDg6cmV0dXJuWzMsMTBdO2Nhc2UgOTppZihyKXRocm93IHIuZXJyb3I7cmV0dXJuWzddO2Nhc2UgMTA6cmV0dXJuWzddO2Nhc2UgMTE6cmV0dXJuIGUuY29tcGxldGUoKSxbMl19fSl9KX12YXIgQWw9ZygoKT0+e0xzKCk7R0ooKTtOZGUoKTt5bigpO1JkZSgpO09kZSgpO0ZkZSgpO0hkZSgpO2FlZSgpO3JvKCk7bGRlKCk7bHkoKTtpKG5pLCJpbm5lckZyb20iKTtpKHIkYSwiZnJvbUludGVyb3BPYnNlcnZhYmxlIik7aShvJGEsImZyb21BcnJheUxpa2UiKTtpKG4kYSwiZnJvbVByb21pc2UiKTtpKGwkYSwiZnJvbUl0ZXJhYmxlIik7aShMMnQsImZyb21Bc3luY0l0ZXJhYmxlIik7aShjJGEsImZyb21SZWFkYWJsZVN0cmVhbUxpa2UiKTtpKGQkYSwicHJvY2VzcyIpfSk7ZnVuY3Rpb24gRnIocyxlLHQsYSxyKXthPT09dm9pZCAwJiYoYT0wKSxyPT09dm9pZCAwJiYocj0hMSk7dmFyIG49ZS5zY2hlZHVsZShmdW5jdGlvbigpe3QoKSxyP3MuYWRkKHRoaXMuc2NoZWR1bGUobnVsbCxhKSk6dGhpcy51bnN1YnNjcmliZSgpfSxhKTtpZihzLmFkZChuKSwhcilyZXR1cm4gbn12YXIgbHA9ZygoKT0+e2koRnIsImV4ZWN1dGVTY2hlZHVsZSIpfSk7ZnVuY3Rpb24gUDcocyxlKXtyZXR1cm4gZT09PXZvaWQgMCYmKGU9MCksWGEoZnVuY3Rpb24odCxhKXt0LnN1YnNjcmliZShFYShhLGZ1bmN0aW9uKHIpe3JldHVybiBGcihhLHMsZnVuY3Rpb24oKXtyZXR1cm4gYS5uZXh0KHIpfSxlKX0sZnVuY3Rpb24oKXtyZXR1cm4gRnIoYSxzLGZ1bmN0aW9uKCl7cmV0dXJuIGEuY29tcGxldGUoKX0sZSl9LGZ1bmN0aW9uKHIpe3JldHVybiBGcihhLHMsZnVuY3Rpb24oKXtyZXR1cm4gYS5lcnJvcihyKX0sZSl9KSl9KX12YXIgaHk9ZygoKT0+e2xwKCk7d3IoKTtvbygpO2koUDcsIm9ic2VydmVPbiIpfSk7ZnVuY3Rpb24gSTcocyxlKXtyZXR1cm4gZT09PXZvaWQgMCYmKGU9MCksWGEoZnVuY3Rpb24odCxhKXthLmFkZChzLnNjaGVkdWxlKGZ1bmN0aW9uKCl7cmV0dXJuIHQuc3Vic2NyaWJlKGEpfSxlKSl9KX12YXIgZnk9ZygoKT0+e3dyKCk7aShJNywic3Vic2NyaWJlT24iKX0pO2Z1bmN0aW9uIEUydChzLGUpe3JldHVybiBuaShzKS5waXBlKEk3KGUpLFA3KGUpKX12YXIgUDJ0PWcoKCk9PntBbCgpO2h5KCk7ZnkoKTtpKEUydCwic2NoZWR1bGVPYnNlcnZhYmxlIil9KTtmdW5jdGlvbiBJMnQocyxlKXtyZXR1cm4gbmkocykucGlwZShJNyhlKSxQNyhlKSl9dmFyIEEydD1nKCgpPT57QWwoKTtoeSgpO2Z5KCk7aShJMnQsInNjaGVkdWxlUHJvbWlzZSIpfSk7ZnVuY3Rpb24gTjJ0KHMsZSl7cmV0dXJuIG5ldyByYShmdW5jdGlvbih0KXt2YXIgYT0wO3JldHVybiBlLnNjaGVkdWxlKGZ1bmN0aW9uKCl7YT09PXMubGVuZ3RoP3QuY29tcGxldGUoKToodC5uZXh0KHNbYSsrXSksdC5jbG9zZWR8fHRoaXMuc2NoZWR1bGUoKSl9KX0pfXZhciBSMnQ9ZygoKT0+e3luKCk7aShOMnQsInNjaGVkdWxlQXJyYXkiKX0pO2Z1bmN0aW9uIE8ydChzLGUpe3JldHVybiBuZXcgcmEoZnVuY3Rpb24odCl7dmFyIGE7cmV0dXJuIEZyKHQsZSxmdW5jdGlvbigpe2E9c1tRSl0oKSxGcih0LGUsZnVuY3Rpb24oKXt2YXIgcixuLG87dHJ5e3I9YS5uZXh0KCksbj1yLnZhbHVlLG89ci5kb25lfWNhdGNoKGwpe3QuZXJyb3IobCk7cmV0dXJufW8/dC5jb21wbGV0ZSgpOnQubmV4dChuKX0sMCwhMCl9KSxmdW5jdGlvbigpe3JldHVybiBzYShhPy5yZXR1cm4pJiZhLnJldHVybigpfX0pfXZhciBGMnQ9ZygoKT0+e3luKCk7QmRlKCk7cm8oKTtscCgpO2koTzJ0LCJzY2hlZHVsZUl0ZXJhYmxlIil9KTtmdW5jdGlvbiBzZWUocyxlKXtpZighcyl0aHJvdyBuZXcgRXJyb3IoIkl0ZXJhYmxlIGNhbm5vdCBiZSBudWxsIik7cmV0dXJuIG5ldyByYShmdW5jdGlvbih0KXtGcih0LGUsZnVuY3Rpb24oKXt2YXIgYT1zW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpO0ZyKHQsZSxmdW5jdGlvbigpe2EubmV4dCgpLnRoZW4oZnVuY3Rpb24ocil7ci5kb25lP3QuY29tcGxldGUoKTp0Lm5leHQoci52YWx1ZSl9KX0sMCwhMCl9KX0pfXZhciBxZGU9ZygoKT0+e3luKCk7bHAoKTtpKHNlZSwic2NoZWR1bGVBc3luY0l0ZXJhYmxlIil9KTtmdW5jdGlvbiBCMnQocyxlKXtyZXR1cm4gc2VlKGVlZShzKSxlKX12YXIgSDJ0PWcoKCk9PntxZGUoKTthZWUoKTtpKEIydCwic2NoZWR1bGVSZWFkYWJsZVN0cmVhbUxpa2UiKX0pO2Z1bmN0aW9uIGpkZShzLGUpe2lmKHMhPW51bGwpe2lmKFlKKHMpKXJldHVybiBFMnQocyxlKTtpZihFNyhzKSlyZXR1cm4gTjJ0KHMsZSk7aWYoS0oocykpcmV0dXJuIEkydChzLGUpO2lmKFpKKHMpKXJldHVybiBzZWUocyxlKTtpZihKSihzKSlyZXR1cm4gTzJ0KHMsZSk7aWYodGVlKHMpKXJldHVybiBCMnQocyxlKX10aHJvdyBYSihzKX12YXIgVmRlPWcoKCk9PntQMnQoKTtBMnQoKTtSMnQoKTtGMnQoKTtxZGUoKTtSZGUoKTtOZGUoKTtHSigpO0hkZSgpO09kZSgpO0ZkZSgpO2FlZSgpO0gydCgpO2koamRlLCJzY2hlZHVsZWQiKX0pO2Z1bmN0aW9uIEsyKHMsZSl7cmV0dXJuIGU/amRlKHMsZSk6bmkocyl9dmFyIG15PWcoKCk9PntWZGUoKTtBbCgpO2koSzIsImZyb20iKX0pO2Z1bmN0aW9uIHE0KCl7Zm9yKHZhciBzPVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXNbZV09YXJndW1lbnRzW2VdO3ZhciB0PUcyKHMpO3JldHVybiBLMihzLHQpfXZhciBVZGU9ZygoKT0+e0w3KCk7bXkoKTtpKHE0LCJvZiIpfSk7ZnVuY3Rpb24gV2RlKHMsZSl7dmFyIHQ9c2Eocyk/czpmdW5jdGlvbigpe3JldHVybiBzfSxhPWkoZnVuY3Rpb24ocil7cmV0dXJuIHIuZXJyb3IodCgpKX0sImluaXQiKTtyZXR1cm4gbmV3IHJhKGU/ZnVuY3Rpb24ocil7cmV0dXJuIGUuc2NoZWR1bGUoYSwwLHIpfTphKX12YXIgR2RlPWcoKCk9Pnt5bigpO3JvKCk7aShXZGUsInRocm93RXJyb3IiKX0pO2Z1bmN0aW9uIHUkYShzLGUpe3ZhciB0LGEscixuPXMsbz1uLmtpbmQsbD1uLnZhbHVlLHA9bi5lcnJvcjtpZih0eXBlb2YgbyE9InN0cmluZyIpdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBub3RpZmljYXRpb24sIG1pc3NpbmcgImtpbmQiJyk7bz09PSJOIj8odD1lLm5leHQpPT09bnVsbHx8dD09PXZvaWQgMHx8dC5jYWxsKGUsbCk6bz09PSJFIj8oYT1lLmVycm9yKT09PW51bGx8fGE9PT12b2lkIDB8fGEuY2FsbChlLHApOihyPWUuY29tcGxldGUpPT09bnVsbHx8cj09PXZvaWQgMHx8ci5jYWxsKGUpfXZhciBLZGUscTJ0LGoydD1nKCgpPT57VUooKTtVZGUoKTtHZGUoKTtybygpOyhmdW5jdGlvbihzKXtzLk5FWFQ9Ik4iLHMuRVJST1I9IkUiLHMuQ09NUExFVEU9IkMifSkoS2RlfHwoS2RlPXt9KSk7cTJ0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHMoZSx0LGEpe3RoaXMua2luZD1lLHRoaXMudmFsdWU9dCx0aGlzLmVycm9yPWEsdGhpcy5oYXNWYWx1ZT1lPT09Ik4ifXJldHVybiBpKHMsIk5vdGlmaWNhdGlvbiIpLHMucHJvdG90eXBlLm9ic2VydmU9ZnVuY3Rpb24oZSl7cmV0dXJuIHUkYSh0aGlzLGUpfSxzLnByb3RvdHlwZS5kbz1mdW5jdGlvbihlLHQsYSl7dmFyIHI9dGhpcyxuPXIua2luZCxvPXIudmFsdWUsbD1yLmVycm9yO3JldHVybiBuPT09Ik4iP2U/LihvKTpuPT09IkUiP3Q/LihsKTphPy4oKX0scy5wcm90b3R5cGUuYWNjZXB0PWZ1bmN0aW9uKGUsdCxhKXt2YXIgcjtyZXR1cm4gc2EoKHI9ZSk9PT1udWxsfHxyPT09dm9pZCAwP3ZvaWQgMDpyLm5leHQpP3RoaXMub2JzZXJ2ZShlKTp0aGlzLmRvKGUsdCxhKX0scy5wcm90b3R5cGUudG9PYnNlcnZhYmxlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUua2luZCxhPWUudmFsdWUscj1lLmVycm9yLG49dD09PSJOIj9xNChhKTp0PT09IkUiP1dkZShmdW5jdGlvbigpe3JldHVybiByfSk6dD09PSJDIj9WSjowO2lmKCFuKXRocm93IG5ldyBUeXBlRXJyb3IoIlVuZXhwZWN0ZWQgbm90aWZpY2F0aW9uIGtpbmQgIit0KTtyZXR1cm4gbn0scy5jcmVhdGVOZXh0PWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgcygiTiIsZSl9LHMuY3JlYXRlRXJyb3I9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBzKCJFIix2b2lkIDAsZSl9LHMuY3JlYXRlQ29tcGxldGU9ZnVuY3Rpb24oKXtyZXR1cm4gcy5jb21wbGV0ZU5vdGlmaWNhdGlvbn0scy5jb21wbGV0ZU5vdGlmaWNhdGlvbj1uZXcgcygiQyIpLHN9KSgpO2kodSRhLCJvYnNlcnZlTm90aWZpY2F0aW9uIil9KTt2YXIgVjJ0PWcoKCk9Pnt9KTt2YXIgcCRhLFUydD1nKCgpPT57b3AoKTtwJGE9aGwoZnVuY3Rpb24ocyl7cmV0dXJuIGkoZnVuY3Rpb24oKXtzKHRoaXMpLHRoaXMubmFtZT0iRW1wdHlFcnJvciIsdGhpcy5tZXNzYWdlPSJubyBlbGVtZW50cyBpbiBzZXF1ZW5jZSJ9LCJFbXB0eUVycm9ySW1wbCIpfSl9KTt2YXIgVzJ0PWcoKCk9Pnt9KTt2YXIgRzJ0PWcoKCk9Pnt9KTt2YXIgaCRhLEsydD1nKCgpPT57b3AoKTtoJGE9aGwoZnVuY3Rpb24ocyl7cmV0dXJuIGkoZnVuY3Rpb24oKXtzKHRoaXMpLHRoaXMubmFtZT0iQXJndW1lbnRPdXRPZlJhbmdlRXJyb3IiLHRoaXMubWVzc2FnZT0iYXJndW1lbnQgb3V0IG9mIHJhbmdlIn0sIkFyZ3VtZW50T3V0T2ZSYW5nZUVycm9ySW1wbCIpfSl9KTt2YXIgZiRhLFkydD1nKCgpPT57b3AoKTtmJGE9aGwoZnVuY3Rpb24ocyl7cmV0dXJuIGkoZnVuY3Rpb24odCl7cyh0aGlzKSx0aGlzLm5hbWU9Ik5vdEZvdW5kRXJyb3IiLHRoaXMubWVzc2FnZT10fSwiTm90Rm91bmRFcnJvckltcGwiKX0pfSk7dmFyIG0kYSxaMnQ9ZygoKT0+e29wKCk7bSRhPWhsKGZ1bmN0aW9uKHMpe3JldHVybiBpKGZ1bmN0aW9uKHQpe3ModGhpcyksdGhpcy5uYW1lPSJTZXF1ZW5jZUVycm9yIix0aGlzLm1lc3NhZ2U9dH0sIlNlcXVlbmNlRXJyb3JJbXBsIil9KX0pO2Z1bmN0aW9uIGllZShzKXtyZXR1cm4gcyBpbnN0YW5jZW9mIERhdGUmJiFpc05hTihzKX12YXIgWWRlPWcoKCk9PntpKGllZSwiaXNWYWxpZERhdGUiKX0pO2Z1bmN0aW9uIFEydChzLGUpe3ZhciB0PWllZShzKT97Zmlyc3Q6c306dHlwZW9mIHM9PSJudW1iZXIiP3tlYWNoOnN9OnMsYT10LmZpcnN0LHI9dC5lYWNoLG49dC53aXRoLG89bj09PXZvaWQgMD9nJGE6bixsPXQuc2NoZWR1bGVyLHA9bD09PXZvaWQgMD9lPz9mbDpsLGQ9dC5tZXRhLHU9ZD09PXZvaWQgMD9udWxsOmQ7aWYoYT09bnVsbCYmcj09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJObyB0aW1lb3V0IHByb3ZpZGVkLiIpO3JldHVybiBYYShmdW5jdGlvbihjLGIpe3ZhciB2LHgsbT1udWxsLGY9MCx5PWkoZnVuY3Rpb24oTSl7eD1GcihiLHAsZnVuY3Rpb24oKXt0cnl7di51bnN1YnNjcmliZSgpLG5pKG8oe21ldGE6dSxsYXN0VmFsdWU6bSxzZWVuOmZ9KSkuc3Vic2NyaWJlKGIpfWNhdGNoKHope2IuZXJyb3Ioeil9fSxNKX0sInN0YXJ0VGltZXIiKTt2PWMuc3Vic2NyaWJlKEVhKGIsZnVuY3Rpb24oTSl7eD8udW5zdWJzY3JpYmUoKSxmKyssYi5uZXh0KG09TSkscj4wJiZ5KHIpfSx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7eD8uY2xvc2VkfHx4Py51bnN1YnNjcmliZSgpLG09bnVsbH0pKSwhZiYmeShhIT1udWxsP3R5cGVvZiBhPT0ibnVtYmVyIj9hOithLXAubm93KCk6cil9KX1mdW5jdGlvbiBnJGEocyl7dGhyb3cgbmV3IFgydChzKX12YXIgWDJ0LHJlZT1nKCgpPT57YzAoKTtZZGUoKTt3cigpO0FsKCk7b3AoKTtvbygpO2xwKCk7WDJ0PWhsKGZ1bmN0aW9uKHMpe3JldHVybiBpKGZ1bmN0aW9uKHQpe3Q9PT12b2lkIDAmJih0PW51bGwpLHModGhpcyksdGhpcy5tZXNzYWdlPSJUaW1lb3V0IGhhcyBvY2N1cnJlZCIsdGhpcy5uYW1lPSJUaW1lb3V0RXJyb3IiLHRoaXMuaW5mbz10fSwiVGltZW91dEVycm9ySW1wbCIpfSk7aShRMnQsInRpbWVvdXQiKTtpKGckYSwidGltZW91dEVycm9yRmFjdG9yeSIpfSk7ZnVuY3Rpb24gWTIocyxlKXtyZXR1cm4gWGEoZnVuY3Rpb24odCxhKXt2YXIgcj0wO3Quc3Vic2NyaWJlKEVhKGEsZnVuY3Rpb24obil7YS5uZXh0KHMuY2FsbChlLG4scisrKSl9KSl9KX12YXIgZ3k9ZygoKT0+e3dyKCk7b28oKTtpKFkyLCJtYXAiKX0pO2Z1bmN0aW9uIHYkYShzLGUpe3JldHVybiBiJGEoZSk/cy5hcHBseSh2b2lkIDAsT3IoW10sT2koZSkpKTpzKGUpfWZ1bmN0aW9uIG9lZShzKXtyZXR1cm4gWTIoZnVuY3Rpb24oZSl7cmV0dXJuIHYkYShzLGUpfSl9dmFyIGIkYSxaZGU9ZygoKT0+e0xzKCk7Z3koKTtiJGE9QXJyYXkuaXNBcnJheTtpKHYkYSwiY2FsbE9yQXBwbHkiKTtpKG9lZSwibWFwT25lT3JNYW55QXJncyIpfSk7dmFyIEoydD1nKCgpPT57fSk7dmFyIGVkdD1nKCgpPT57fSk7ZnVuY3Rpb24gdGR0KHMpe2lmKHMubGVuZ3RoPT09MSl7dmFyIGU9c1swXTtpZih4JGEoZSkpcmV0dXJue2FyZ3M6ZSxrZXlzOm51bGx9O2lmKFMkYShlKSl7dmFyIHQ9ayRhKGUpO3JldHVybnthcmdzOnQubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBlW2FdfSksa2V5czp0fX19cmV0dXJue2FyZ3M6cyxrZXlzOm51bGx9fWZ1bmN0aW9uIFMkYShzKXtyZXR1cm4gcyYmdHlwZW9mIHM9PSJvYmplY3QiJiZ5JGEocyk9PT13JGF9dmFyIHgkYSx5JGEsdyRhLGskYSxhZHQ9ZygoKT0+e3gkYT1BcnJheS5pc0FycmF5LHkkYT1PYmplY3QuZ2V0UHJvdG90eXBlT2YsdyRhPU9iamVjdC5wcm90b3R5cGUsayRhPU9iamVjdC5rZXlzO2kodGR0LCJhcmdzQXJnQXJyYXlPck9iamVjdCIpO2koUyRhLCJpc1BPSk8iKX0pO2Z1bmN0aW9uIHNkdChzLGUpe3JldHVybiBzLnJlZHVjZShmdW5jdGlvbih0LGEscil7cmV0dXJuIHRbYV09ZVtyXSx0fSx7fSl9dmFyIGlkdD1nKCgpPT57aShzZHQsImNyZWF0ZU9iamVjdCIpfSk7ZnVuY3Rpb24gWGRlKCl7Zm9yKHZhciBzPVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXNbZV09YXJndW1lbnRzW2VdO3ZhciB0PUcyKHMpLGE9RDJ0KHMpLHI9dGR0KHMpLG49ci5hcmdzLG89ci5rZXlzO2lmKG4ubGVuZ3RoPT09MClyZXR1cm4gSzIoW10sdCk7dmFyIGw9bmV3IHJhKF8kYShuLHQsbz9mdW5jdGlvbihwKXtyZXR1cm4gc2R0KG8scCl9OlcyKSk7cmV0dXJuIGE/bC5waXBlKG9lZShhKSk6bH1mdW5jdGlvbiBfJGEocyxlLHQpe3JldHVybiB0PT09dm9pZCAwJiYodD1XMiksZnVuY3Rpb24oYSl7cmR0KGUsZnVuY3Rpb24oKXtmb3IodmFyIHI9cy5sZW5ndGgsbj1uZXcgQXJyYXkociksbz1yLGw9cixwPWkoZnVuY3Rpb24odSl7cmR0KGUsZnVuY3Rpb24oKXt2YXIgYz1LMihzW3VdLGUpLGI9ITE7Yy5zdWJzY3JpYmUoRWEoYSxmdW5jdGlvbih2KXtuW3VdPXYsYnx8KGI9ITAsbC0tKSxsfHxhLm5leHQodChuLnNsaWNlKCkpKX0sZnVuY3Rpb24oKXstLW98fGEuY29tcGxldGUoKX0pKX0sYSl9LCJfbG9vcF8xIiksZD0wO2Q8cjtkKyspcChkKX0sYSl9fWZ1bmN0aW9uIHJkdChzLGUsdCl7cz9Gcih0LHMsZSk6ZSgpfXZhciBvZHQ9ZygoKT0+e3luKCk7YWR0KCk7bXkoKTtNNygpO1pkZSgpO0w3KCk7aWR0KCk7b28oKTtscCgpO2koWGRlLCJjb21iaW5lTGF0ZXN0Iik7aShfJGEsImNvbWJpbmVMYXRlc3RJbml0Iik7aShyZHQsIm1heWJlU2NoZWR1bGUiKX0pO2Z1bmN0aW9uIG5kdChzLGUsdCxhLHIsbixvLGwpe3ZhciBwPVtdLGQ9MCx1PTAsYz0hMSxiPWkoZnVuY3Rpb24oKXtjJiYhcC5sZW5ndGgmJiFkJiZlLmNvbXBsZXRlKCl9LCJjaGVja0NvbXBsZXRlIiksdj1pKGZ1bmN0aW9uKG0pe3JldHVybiBkPGE/eChtKTpwLnB1c2gobSl9LCJvdXRlck5leHQiKSx4PWkoZnVuY3Rpb24obSl7biYmZS5uZXh0KG0pLGQrKzt2YXIgZj0hMTtuaSh0KG0sdSsrKSkuc3Vic2NyaWJlKEVhKGUsZnVuY3Rpb24oeSl7cj8uKHkpLG4/dih5KTplLm5leHQoeSl9LGZ1bmN0aW9uKCl7Zj0hMH0sdm9pZCAwLGZ1bmN0aW9uKCl7aWYoZil0cnl7ZC0tO2Zvcih2YXIgeT1pKGZ1bmN0aW9uKCl7dmFyIE09cC5zaGlmdCgpO28/RnIoZSxvLGZ1bmN0aW9uKCl7cmV0dXJuIHgoTSl9KTp4KE0pfSwiX2xvb3BfMSIpO3AubGVuZ3RoJiZkPGE7KXkoKTtiKCl9Y2F0Y2goTSl7ZS5lcnJvcihNKX19KSl9LCJkb0lubmVyU3ViIik7cmV0dXJuIHMuc3Vic2NyaWJlKEVhKGUsdixmdW5jdGlvbigpe2M9ITAsYigpfSkpLGZ1bmN0aW9uKCl7bD8uKCl9fXZhciBsZHQ9ZygoKT0+e0FsKCk7bHAoKTtvbygpO2kobmR0LCJtZXJnZUludGVybmFscyIpfSk7ZnVuY3Rpb24gajQocyxlLHQpe3JldHVybiB0PT09dm9pZCAwJiYodD0xLzApLHNhKGUpP2o0KGZ1bmN0aW9uKGEscil7cmV0dXJuIFkyKGZ1bmN0aW9uKG4sbyl7cmV0dXJuIGUoYSxuLHIsbyl9KShuaShzKGEscikpKX0sdCk6KHR5cGVvZiBlPT0ibnVtYmVyIiYmKHQ9ZSksWGEoZnVuY3Rpb24oYSxyKXtyZXR1cm4gbmR0KGEscixzLHQpfSkpfXZhciBieT1nKCgpPT57Z3koKTtBbCgpO3dyKCk7bGR0KCk7cm8oKTtpKGo0LCJtZXJnZU1hcCIpfSk7ZnVuY3Rpb24gbmVlKHMpe3JldHVybiBzPT09dm9pZCAwJiYocz0xLzApLGo0KFcyLHMpfXZhciBsZWU9ZygoKT0+e2J5KCk7TTcoKTtpKG5lZSwibWVyZ2VBbGwiKX0pO2Z1bmN0aW9uIGNlZSgpe3JldHVybiBuZWUoMSl9dmFyIGRlZT1nKCgpPT57bGVlKCk7aShjZWUsImNvbmNhdEFsbCIpfSk7ZnVuY3Rpb24gdWVlKCl7Zm9yKHZhciBzPVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXNbZV09YXJndW1lbnRzW2VdO3JldHVybiBjZWUoKShLMihzLEcyKHMpKSl9dmFyIFFkZT1nKCgpPT57ZGVlKCk7TDcoKTtteSgpO2kodWVlLCJjb25jYXQiKX0pO3ZhciBjZHQ9ZygoKT0+e30pO3ZhciBkZHQ9ZygoKT0+e30pO3ZhciB1ZHQ9ZygoKT0+e30pO2Z1bmN0aW9uIFY0KHMsZSx0LGEpe2lmKHNhKHQpJiYoYT10LHQ9dm9pZCAwKSxhKXJldHVybiBWNChzLGUsdCkucGlwZShvZWUoYSkpO3ZhciByPU9pKEQkYShzKT96JGEubWFwKGZ1bmN0aW9uKGwpe3JldHVybiBmdW5jdGlvbihwKXtyZXR1cm4gc1tsXShlLHAsdCl9fSk6VCRhKHMpP00kYS5tYXAocGR0KHMsZSkpOiQkYShzKT9DJGEubWFwKHBkdChzLGUpKTpbXSwyKSxuPXJbMF0sbz1yWzFdO2lmKCFuJiZFNyhzKSlyZXR1cm4gajQoZnVuY3Rpb24obCl7cmV0dXJuIFY0KGwsZSx0KX0pKG5pKHMpKTtpZighbil0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGV2ZW50IHRhcmdldCIpO3JldHVybiBuZXcgcmEoZnVuY3Rpb24obCl7dmFyIHA9aShmdW5jdGlvbigpe2Zvcih2YXIgZD1bXSx1PTA7dTxhcmd1bWVudHMubGVuZ3RoO3UrKylkW3VdPWFyZ3VtZW50c1t1XTtyZXR1cm4gbC5uZXh0KDE8ZC5sZW5ndGg/ZDpkWzBdKX0sImhhbmRsZXIiKTtyZXR1cm4gbihwKSxmdW5jdGlvbigpe3JldHVybiBvKHApfX0pfWZ1bmN0aW9uIHBkdChzLGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIHNbdF0oZSxhKX19fWZ1bmN0aW9uIFQkYShzKXtyZXR1cm4gc2Eocy5hZGRMaXN0ZW5lcikmJnNhKHMucmVtb3ZlTGlzdGVuZXIpfWZ1bmN0aW9uICQkYShzKXtyZXR1cm4gc2Eocy5vbikmJnNhKHMub2ZmKX1mdW5jdGlvbiBEJGEocyl7cmV0dXJuIHNhKHMuYWRkRXZlbnRMaXN0ZW5lcikmJnNhKHMucmVtb3ZlRXZlbnRMaXN0ZW5lcil9dmFyIE0kYSx6JGEsQyRhLGhkdD1nKCgpPT57THMoKTtBbCgpO3luKCk7YnkoKTtHSigpO3JvKCk7WmRlKCk7TSRhPVsiYWRkTGlzdGVuZXIiLCJyZW1vdmVMaXN0ZW5lciJdLHokYT1bImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIl0sQyRhPVsib24iLCJvZmYiXTtpKFY0LCJmcm9tRXZlbnQiKTtpKHBkdCwidG9Db21tb25IYW5kbGVyUmVnaXN0cnkiKTtpKFQkYSwiaXNOb2RlU3R5bGVFdmVudEVtaXR0ZXIiKTtpKCQkYSwiaXNKUXVlcnlTdHlsZUV2ZW50RW1pdHRlciIpO2koRCRhLCJpc0V2ZW50VGFyZ2V0Iil9KTt2YXIgZmR0PWcoKCk9Pnt9KTt2YXIgbWR0PWcoKCk9Pnt9KTt2YXIgZ2R0PWcoKCk9Pnt9KTtmdW5jdGlvbiB2eShzLGUsdCl7cz09PXZvaWQgMCYmKHM9MCksdD09PXZvaWQgMCYmKHQ9VGRlKTt2YXIgYT0tMTtyZXR1cm4gZSE9bnVsbCYmKFdKKGUpP3Q9ZTphPWUpLG5ldyByYShmdW5jdGlvbihyKXt2YXIgbj1pZWUocyk/K3MtdC5ub3coKTpzO248MCYmKG49MCk7dmFyIG89MDtyZXR1cm4gdC5zY2hlZHVsZShmdW5jdGlvbigpe3IuY2xvc2VkfHwoci5uZXh0KG8rKyksMDw9YT90aGlzLnNjaGVkdWxlKHZvaWQgMCxhKTpyLmNvbXBsZXRlKCkpfSxuKX0pfXZhciBwZWU9ZygoKT0+e3luKCk7YzAoKTtJZGUoKTtZZGUoKTtpKHZ5LCJ0aW1lciIpfSk7ZnVuY3Rpb24gSmRlKHMsZSl7cmV0dXJuIHM9PT12b2lkIDAmJihzPTApLGU9PT12b2lkIDAmJihlPWZsKSxzPDAmJihzPTApLHZ5KHMscyxlKX12YXIgYmR0PWcoKCk9PntjMCgpO3BlZSgpO2koSmRlLCJpbnRlcnZhbCIpfSk7dmFyIHZkdD1nKCgpPT57fSk7ZnVuY3Rpb24gTCRhKCl7cmV0dXJuIHhkdH12YXIgeGR0LGUwZT1nKCgpPT57eW4oKTtPNCgpO3hkdD1uZXcgcmEoeWMpO2koTCRhLCJuZXZlciIpfSk7dmFyIHlkdD1nKCgpPT57fSk7dmFyIHdkdD1nKCgpPT57fSk7ZnVuY3Rpb24gaGVlKHMsZSl7cmV0dXJuIFhhKGZ1bmN0aW9uKHQsYSl7dmFyIHI9MDt0LnN1YnNjcmliZShFYShhLGZ1bmN0aW9uKG4pe3JldHVybiBzLmNhbGwoZSxuLHIrKykmJmEubmV4dChuKX0pKX0pfXZhciB0MGU9ZygoKT0+e3dyKCk7b28oKTtpKGhlZSwiZmlsdGVyIil9KTt2YXIga2R0PWcoKCk9Pnt9KTt2YXIgU2R0PWcoKCk9Pnt9KTt2YXIgX2R0PWcoKCk9Pnt9KTt2YXIgTWR0PWcoKCk9Pnt9KTt2YXIgemR0PWcoKCk9Pnt9KTt2YXIgQ2R0PWcoKCk9Pnt9KTt2YXIgYTBlPWcoKCk9Pnt9KTt2YXIgczBlPWcoKCk9Pnt9KTtmdW5jdGlvbiBmZWUocyl7cmV0dXJuIFhhKGZ1bmN0aW9uKGUsdCl7dmFyIGE9W107cmV0dXJuIGUuc3Vic2NyaWJlKEVhKHQsZnVuY3Rpb24ocil7cmV0dXJuIGEucHVzaChyKX0sZnVuY3Rpb24oKXt0Lm5leHQoYSksdC5jb21wbGV0ZSgpfSkpLG5pKHMpLnN1YnNjcmliZShFYSh0LGZ1bmN0aW9uKCl7dmFyIHI9YTthPVtdLHQubmV4dChyKX0seWMpKSxmdW5jdGlvbigpe2E9bnVsbH19KX12YXIgaTBlPWcoKCk9Pnt3cigpO080KCk7b28oKTtBbCgpO2koZmVlLCJidWZmZXIiKX0pO2Z1bmN0aW9uIG1lZShzLGUpe3JldHVybiBlPT09dm9pZCAwJiYoZT1udWxsKSxlPWU/P3MsWGEoZnVuY3Rpb24odCxhKXt2YXIgcj1bXSxuPTA7dC5zdWJzY3JpYmUoRWEoYSxmdW5jdGlvbihvKXt2YXIgbCxwLGQsdSxjPW51bGw7bisrJWU9PT0wJiZyLnB1c2goW10pO3RyeXtmb3IodmFyIGI9Vm8ociksdj1iLm5leHQoKTshdi5kb25lO3Y9Yi5uZXh0KCkpe3ZhciB4PXYudmFsdWU7eC5wdXNoKG8pLHM8PXgubGVuZ3RoJiYoYz1jPz9bXSxjLnB1c2goeCkpfX1jYXRjaCh5KXtsPXtlcnJvcjp5fX1maW5hbGx5e3RyeXt2JiYhdi5kb25lJiYocD1iLnJldHVybikmJnAuY2FsbChiKX1maW5hbGx5e2lmKGwpdGhyb3cgbC5lcnJvcn19aWYoYyl0cnl7Zm9yKHZhciBtPVZvKGMpLGY9bS5uZXh0KCk7IWYuZG9uZTtmPW0ubmV4dCgpKXt2YXIgeD1mLnZhbHVlO20xKHIseCksYS5uZXh0KHgpfX1jYXRjaCh5KXtkPXtlcnJvcjp5fX1maW5hbGx5e3RyeXtmJiYhZi5kb25lJiYodT1tLnJldHVybikmJnUuY2FsbChtKX1maW5hbGx5e2lmKGQpdGhyb3cgZC5lcnJvcn19fSxmdW5jdGlvbigpe3ZhciBvLGw7dHJ5e2Zvcih2YXIgcD1WbyhyKSxkPXAubmV4dCgpOyFkLmRvbmU7ZD1wLm5leHQoKSl7dmFyIHU9ZC52YWx1ZTthLm5leHQodSl9fWNhdGNoKGMpe289e2Vycm9yOmN9fWZpbmFsbHl7dHJ5e2QmJiFkLmRvbmUmJihsPXAucmV0dXJuKSYmbC5jYWxsKHApfWZpbmFsbHl7aWYobyl0aHJvdyBvLmVycm9yfX1hLmNvbXBsZXRlKCl9LHZvaWQgMCxmdW5jdGlvbigpe3I9bnVsbH0pKX0pfXZhciByMGU9ZygoKT0+e0xzKCk7d3IoKTtvbygpO3c3KCk7aShtZWUsImJ1ZmZlckNvdW50Iil9KTtmdW5jdGlvbiBnZWUocyl7Zm9yKHZhciBlLHQsYT1bXSxyPTE7cjxhcmd1bWVudHMubGVuZ3RoO3IrKylhW3ItMV09YXJndW1lbnRzW3JdO3ZhciBuPShlPUcyKGEpKSE9PW51bGwmJmUhPT12b2lkIDA/ZTpmbCxvPSh0PWFbMF0pIT09bnVsbCYmdCE9PXZvaWQgMD90Om51bGwsbD1hWzFdfHwxLzA7cmV0dXJuIFhhKGZ1bmN0aW9uKHAsZCl7dmFyIHU9W10sYz0hMSxiPWkoZnVuY3Rpb24obSl7dmFyIGY9bS5idWZmZXIseT1tLnN1YnM7eS51bnN1YnNjcmliZSgpLG0xKHUsbSksZC5uZXh0KGYpLGMmJnYoKX0sImVtaXQiKSx2PWkoZnVuY3Rpb24oKXtpZih1KXt2YXIgbT1uZXcgdHI7ZC5hZGQobSk7dmFyIGY9W10seT17YnVmZmVyOmYsc3ViczptfTt1LnB1c2goeSksRnIobSxuLGZ1bmN0aW9uKCl7cmV0dXJuIGIoeSl9LHMpfX0sInN0YXJ0QnVmZmVyIik7byE9PW51bGwmJm8+PTA/RnIoZCxuLHYsbywhMCk6Yz0hMCx2KCk7dmFyIHg9RWEoZCxmdW5jdGlvbihtKXt2YXIgZix5LE09dS5zbGljZSgpO3RyeXtmb3IodmFyIHo9Vm8oTSksTj16Lm5leHQoKTshTi5kb25lO049ei5uZXh0KCkpe3ZhciBDPU4udmFsdWUsXz1DLmJ1ZmZlcjtfLnB1c2gobSksbDw9Xy5sZW5ndGgmJmIoQyl9fWNhdGNoKE8pe2Y9e2Vycm9yOk99fWZpbmFsbHl7dHJ5e04mJiFOLmRvbmUmJih5PXoucmV0dXJuKSYmeS5jYWxsKHopfWZpbmFsbHl7aWYoZil0aHJvdyBmLmVycm9yfX19LGZ1bmN0aW9uKCl7Zm9yKDt1Py5sZW5ndGg7KWQubmV4dCh1LnNoaWZ0KCkuYnVmZmVyKTt4Py51bnN1YnNjcmliZSgpLGQuY29tcGxldGUoKSxkLnVuc3Vic2NyaWJlKCl9LHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiB1PW51bGx9KTtwLnN1YnNjcmliZSh4KX0pfXZhciBvMGU9ZygoKT0+e0xzKCk7VTIoKTt3cigpO29vKCk7dzcoKTtjMCgpO0w3KCk7bHAoKTtpKGdlZSwiYnVmZmVyVGltZSIpfSk7dmFyIG4wZT1nKCgpPT57fSk7dmFyIGwwZT1nKCgpPT57fSk7dmFyIGMwZT1nKCgpPT57fSk7dmFyIGQwZT1nKCgpPT57fSk7dmFyIHUwZT1nKCgpPT57fSk7dmFyIHAwZT1nKCgpPT57fSk7dmFyIGgwZT1nKCgpPT57fSk7dmFyIFRkdD1nKCgpPT57fSk7dmFyIGYwZT1nKCgpPT57fSk7dmFyIG0wZT1nKCgpPT57fSk7dmFyIGcwZT1nKCgpPT57fSk7dmFyICRkdD1nKCgpPT57fSk7dmFyIGIwZT1nKCgpPT57fSk7dmFyIHYwZT1nKCgpPT57fSk7dmFyIHgwZT1nKCgpPT57fSk7ZnVuY3Rpb24gYmVlKHMpe3JldHVybiBYYShmdW5jdGlvbihlLHQpe3ZhciBhPSExLHI9bnVsbCxuPW51bGwsbz1pKGZ1bmN0aW9uKCl7aWYobj8udW5zdWJzY3JpYmUoKSxuPW51bGwsYSl7YT0hMTt2YXIgbD1yO3I9bnVsbCx0Lm5leHQobCl9fSwiZW1pdCIpO2Uuc3Vic2NyaWJlKEVhKHQsZnVuY3Rpb24obCl7bj8udW5zdWJzY3JpYmUoKSxhPSEwLHI9bCxuPUVhKHQsbyx5YyksbmkocyhsKSkuc3Vic2NyaWJlKG4pfSxmdW5jdGlvbigpe28oKSx0LmNvbXBsZXRlKCl9LHZvaWQgMCxmdW5jdGlvbigpe3I9bj1udWxsfSkpfSl9dmFyIHkwZT1nKCgpPT57d3IoKTtPNCgpO29vKCk7QWwoKTtpKGJlZSwiZGVib3VuY2UiKX0pO2Z1bmN0aW9uIHZlZShzLGUpe3JldHVybiBlPT09dm9pZCAwJiYoZT1mbCksWGEoZnVuY3Rpb24odCxhKXt2YXIgcj1udWxsLG49bnVsbCxvPW51bGwsbD1pKGZ1bmN0aW9uKCl7aWYocil7ci51bnN1YnNjcmliZSgpLHI9bnVsbDt2YXIgZD1uO249bnVsbCxhLm5leHQoZCl9fSwiZW1pdCIpO2Z1bmN0aW9uIHAoKXt2YXIgZD1vK3MsdT1lLm5vdygpO2lmKHU8ZCl7cj10aGlzLnNjaGVkdWxlKHZvaWQgMCxkLXUpLGEuYWRkKHIpO3JldHVybn1sKCl9aShwLCJlbWl0V2hlbklkbGUiKSx0LnN1YnNjcmliZShFYShhLGZ1bmN0aW9uKGQpe249ZCxvPWUubm93KCkscnx8KHI9ZS5zY2hlZHVsZShwLHMpLGEuYWRkKHIpKX0sZnVuY3Rpb24oKXtsKCksYS5jb21wbGV0ZSgpfSx2b2lkIDAsZnVuY3Rpb24oKXtuPXI9bnVsbH0pKX0pfXZhciB3MGU9ZygoKT0+e2MwKCk7d3IoKTtvbygpO2kodmVlLCJkZWJvdW5jZVRpbWUiKX0pO3ZhciBrMGU9ZygoKT0+e30pO3ZhciBTMGU9ZygoKT0+e30pO3ZhciBfMGU9ZygoKT0+e30pO3ZhciBNMGU9ZygoKT0+e30pO3ZhciB6MGU9ZygoKT0+e30pO3ZhciBDMGU9ZygoKT0+e30pO3ZhciBUMGU9ZygoKT0+e30pO3ZhciAkMGU9ZygoKT0+e30pO2Z1bmN0aW9uIEE3KHMsZSl7cmV0dXJuIGU9PT12b2lkIDAmJihlPVcyKSxzPXM/P0UkYSxYYShmdW5jdGlvbih0LGEpe3ZhciByLG49ITA7dC5zdWJzY3JpYmUoRWEoYSxmdW5jdGlvbihvKXt2YXIgbD1lKG8pOyhufHwhcyhyLGwpKSYmKG49ITEscj1sLGEubmV4dChvKSl9KSl9KX1mdW5jdGlvbiBFJGEocyxlKXtyZXR1cm4gcz09PWV9dmFyIEQwZT1nKCgpPT57TTcoKTt3cigpO29vKCk7aShBNywiZGlzdGluY3RVbnRpbENoYW5nZWQiKTtpKEUkYSwiZGVmYXVsdENvbXBhcmUiKX0pO3ZhciBMMGU9ZygoKT0+e30pO3ZhciBFMGU9ZygoKT0+e30pO3ZhciBQMGU9ZygoKT0+e30pO3ZhciBJMGU9ZygoKT0+e30pO3ZhciBBMGU9ZygoKT0+e30pO3ZhciBOMGU9ZygoKT0+e30pO3ZhciBSMGU9ZygoKT0+e30pO3ZhciBPMGU9ZygoKT0+e30pO3ZhciBGMGU9ZygoKT0+e30pO3ZhciBCMGU9ZygoKT0+e30pO3ZhciBIMGU9ZygoKT0+e30pO3ZhciBxMGU9ZygoKT0+e30pO3ZhciBqMGU9ZygoKT0+e30pO3ZhciBWMGU9ZygoKT0+e30pO3ZhciBVMGU9ZygoKT0+e30pO3ZhciBXMGU9ZygoKT0+e30pO3ZhciBHMGU9ZygoKT0+e30pO3ZhciBLMGU9ZygoKT0+e30pO3ZhciBZMGU9ZygoKT0+e30pO3ZhciBaMGU9ZygoKT0+e30pO3ZhciBYMGU9ZygoKT0+e30pO3ZhciBRMGU9ZygoKT0+e30pO3ZhciBEZHQ9ZygoKT0+e30pO3ZhciBKMGU9ZygoKT0+e30pO3ZhciBldWU9ZygoKT0+e30pO3ZhciB0dWU9ZygoKT0+e30pO3ZhciBhdWU9ZygoKT0+e30pO3ZhciBzdWU9ZygoKT0+e30pO3ZhciBpdWU9ZygoKT0+e30pO3ZhciBydWU9ZygoKT0+e30pO3ZhciBvdWU9ZygoKT0+e30pO3ZhciBudWU9ZygoKT0+e30pO3ZhciBsdWU9ZygoKT0+e30pO3ZhciBjdWU9ZygoKT0+e30pO3ZhciBkdWU9ZygoKT0+e30pO3ZhciB1dWU9ZygoKT0+e30pO3ZhciBwdWU9ZygoKT0+e30pO3ZhciBodWU9ZygoKT0+e30pO3ZhciBmdWU9ZygoKT0+e30pO3ZhciBtdWU9ZygoKT0+e30pO3ZhciBndWU9ZygoKT0+e30pO3ZhciBidWU9ZygoKT0+e30pO2Z1bmN0aW9uIHhlZShzKXtzPT09dm9pZCAwJiYocz17fSk7dmFyIGU9cy5jb25uZWN0b3IsdD1lPT09dm9pZCAwP2Z1bmN0aW9uKCl7cmV0dXJuIG5ldyBVb306ZSxhPXMucmVzZXRPbkVycm9yLHI9YT09PXZvaWQgMD8hMDphLG49cy5yZXNldE9uQ29tcGxldGUsbz1uPT09dm9pZCAwPyEwOm4sbD1zLnJlc2V0T25SZWZDb3VudFplcm8scD1sPT09dm9pZCAwPyEwOmw7cmV0dXJuIGZ1bmN0aW9uKGQpe3ZhciB1LGMsYix2PTAseD0hMSxtPSExLGY9aShmdW5jdGlvbigpe2M/LnVuc3Vic2NyaWJlKCksYz12b2lkIDB9LCJjYW5jZWxSZXNldCIpLHk9aShmdW5jdGlvbigpe2YoKSx1PWI9dm9pZCAwLHg9bT0hMX0sInJlc2V0IiksTT1pKGZ1bmN0aW9uKCl7dmFyIHo9dTt5KCksej8udW5zdWJzY3JpYmUoKX0sInJlc2V0QW5kVW5zdWJzY3JpYmUiKTtyZXR1cm4gWGEoZnVuY3Rpb24oeixOKXt2KyssIW0mJiF4JiZmKCk7dmFyIEM9Yj1iPz90KCk7Ti5hZGQoZnVuY3Rpb24oKXt2LS0sdj09PTAmJiFtJiYheCYmKGM9dnVlKE0scCkpfSksQy5zdWJzY3JpYmUoTiksIXUmJnY+MCYmKHU9bmV3IG5wKHtuZXh0OmkoZnVuY3Rpb24oXyl7cmV0dXJuIEMubmV4dChfKX0sIm5leHQiKSxlcnJvcjppKGZ1bmN0aW9uKF8pe209ITAsZigpLGM9dnVlKHkscixfKSxDLmVycm9yKF8pfSwiZXJyb3IiKSxjb21wbGV0ZTppKGZ1bmN0aW9uKCl7eD0hMCxmKCksYz12dWUoeSxvKSxDLmNvbXBsZXRlKCl9LCJjb21wbGV0ZSIpfSksbmkoeikuc3Vic2NyaWJlKHUpKX0pKGQpfX1mdW5jdGlvbiB2dWUocyxlKXtmb3IodmFyIHQ9W10sYT0yO2E8YXJndW1lbnRzLmxlbmd0aDthKyspdFthLTJdPWFyZ3VtZW50c1thXTtpZihlPT09ITApe3MoKTtyZXR1cm59aWYoZSE9PSExKXt2YXIgcj1uZXcgbnAoe25leHQ6aShmdW5jdGlvbigpe3IudW5zdWJzY3JpYmUoKSxzKCl9LCJuZXh0Iil9KTtyZXR1cm4gbmkoZS5hcHBseSh2b2lkIDAsT3IoW10sT2kodCkpKSkuc3Vic2NyaWJlKHIpfX12YXIgeWVlPWcoKCk9PntMcygpO0FsKCk7ejcoKTtueSgpO3dyKCk7aSh4ZWUsInNoYXJlIik7aSh2dWUsImhhbmRsZVJlc2V0Iil9KTtmdW5jdGlvbiB3ZWUocyxlLHQpe3ZhciBhLHIsbixvLGw9ITE7cmV0dXJuIHMmJnR5cGVvZiBzPT0ib2JqZWN0Ij8oYT1zLmJ1ZmZlclNpemUsbz1hPT09dm9pZCAwPzEvMDphLHI9cy53aW5kb3dUaW1lLGU9cj09PXZvaWQgMD8xLzA6cixuPXMucmVmQ291bnQsbD1uPT09dm9pZCAwPyExOm4sdD1zLnNjaGVkdWxlcik6bz1zPz8xLzAseGVlKHtjb25uZWN0b3I6aShmdW5jdGlvbigpe3JldHVybiBuZXcgVDcobyxlLHQpfSwiY29ubmVjdG9yIikscmVzZXRPbkVycm9yOiEwLHJlc2V0T25Db21wbGV0ZTohMSxyZXNldE9uUmVmQ291bnRaZXJvOmx9KX12YXIgeHVlPWcoKCk9Pnt3ZGUoKTt5ZWUoKTtpKHdlZSwic2hhcmVSZXBsYXkiKX0pO3ZhciB5dWU9ZygoKT0+e30pO3ZhciB3dWU9ZygoKT0+e30pO3ZhciBrdWU9ZygoKT0+e30pO3ZhciBTdWU9ZygoKT0+e30pO3ZhciBfdWU9ZygoKT0+e30pO2Z1bmN0aW9uIGtlZSgpe2Zvcih2YXIgcz1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKylzW2VdPWFyZ3VtZW50c1tlXTt2YXIgdD1HMihzKTtyZXR1cm4gWGEoZnVuY3Rpb24oYSxyKXsodD91ZWUocyxhLHQpOnVlZShzLGEpKS5zdWJzY3JpYmUocil9KX12YXIgTXVlPWcoKCk9PntRZGUoKTtMNygpO3dyKCk7aShrZWUsInN0YXJ0V2l0aCIpfSk7dmFyIHp1ZT1nKCgpPT57fSk7dmFyIEN1ZT1nKCgpPT57fSk7dmFyIFR1ZT1nKCgpPT57fSk7dmFyICR1ZT1nKCgpPT57fSk7ZnVuY3Rpb24gTjcocyl7cmV0dXJuIFhhKGZ1bmN0aW9uKGUsdCl7bmkocykuc3Vic2NyaWJlKEVhKHQsZnVuY3Rpb24oKXtyZXR1cm4gdC5jb21wbGV0ZSgpfSx5YykpLCF0LmNsb3NlZCYmZS5zdWJzY3JpYmUodCl9KX12YXIgRHVlPWcoKCk9Pnt3cigpO29vKCk7QWwoKTtPNCgpO2koTjcsInRha2VVbnRpbCIpfSk7dmFyIEx1ZT1nKCgpPT57fSk7dmFyIEV1ZT1nKCgpPT57fSk7ZnVuY3Rpb24gU2VlKHMsZSl7cmV0dXJuIFhhKGZ1bmN0aW9uKHQsYSl7dmFyIHI9ZT8/e30sbj1yLmxlYWRpbmcsbz1uPT09dm9pZCAwPyEwOm4sbD1yLnRyYWlsaW5nLHA9bD09PXZvaWQgMD8hMTpsLGQ9ITEsdT1udWxsLGM9bnVsbCxiPSExLHY9aShmdW5jdGlvbigpe2M/LnVuc3Vic2NyaWJlKCksYz1udWxsLHAmJihmKCksYiYmYS5jb21wbGV0ZSgpKX0sImVuZFRocm90dGxpbmciKSx4PWkoZnVuY3Rpb24oKXtjPW51bGwsYiYmYS5jb21wbGV0ZSgpfSwiY2xlYW51cFRocm90dGxpbmciKSxtPWkoZnVuY3Rpb24oeSl7cmV0dXJuIGM9bmkocyh5KSkuc3Vic2NyaWJlKEVhKGEsdix4KSl9LCJzdGFydFRocm90dGxlIiksZj1pKGZ1bmN0aW9uKCl7aWYoZCl7ZD0hMTt2YXIgeT11O3U9bnVsbCxhLm5leHQoeSksIWImJm0oeSl9fSwic2VuZCIpO3Quc3Vic2NyaWJlKEVhKGEsZnVuY3Rpb24oeSl7ZD0hMCx1PXksIShjJiYhYy5jbG9zZWQpJiYobz9mKCk6bSh5KSl9LGZ1bmN0aW9uKCl7Yj0hMCwhKHAmJmQmJmMmJiFjLmNsb3NlZCkmJmEuY29tcGxldGUoKX0pKX0pfXZhciBfZWU9ZygoKT0+e3dyKCk7b28oKTtBbCgpO2koU2VlLCJ0aHJvdHRsZSIpfSk7ZnVuY3Rpb24gTWVlKHMsZSx0KXtlPT09dm9pZCAwJiYoZT1mbCk7dmFyIGE9dnkocyxlKTtyZXR1cm4gU2VlKGZ1bmN0aW9uKCl7cmV0dXJuIGF9LHQpfXZhciBQdWU9ZygoKT0+e2MwKCk7X2VlKCk7cGVlKCk7aShNZWUsInRocm90dGxlVGltZSIpfSk7ZnVuY3Rpb24gRWR0KHMpe3JldHVybiBzPT09dm9pZCAwJiYocz1mbCksWGEoZnVuY3Rpb24oZSx0KXt2YXIgYT1zLm5vdygpO2Uuc3Vic2NyaWJlKEVhKHQsZnVuY3Rpb24ocil7dmFyIG49cy5ub3coKSxvPW4tYTthPW4sdC5uZXh0KG5ldyBMZHQocixvKSl9KSl9KX12YXIgTGR0LEl1ZT1nKCgpPT57YzAoKTt3cigpO29vKCk7aShFZHQsInRpbWVJbnRlcnZhbCIpO0xkdD0oZnVuY3Rpb24oKXtmdW5jdGlvbiBzKGUsdCl7dGhpcy52YWx1ZT1lLHRoaXMuaW50ZXJ2YWw9dH1yZXR1cm4gaShzLCJUaW1lSW50ZXJ2YWwiKSxzfSkoKX0pO3ZhciBBdWU9ZygoKT0+e30pO3ZhciBOdWU9ZygoKT0+e30pO3ZhciBSdWU9ZygoKT0+e30pO3ZhciBPdWU9ZygoKT0+e30pO3ZhciBGdWU9ZygoKT0+e30pO3ZhciBCdWU9ZygoKT0+e30pO3ZhciBIdWU9ZygoKT0+e30pO3ZhciBxdWU9ZygoKT0+e30pO3ZhciBqdWU9ZygoKT0+e30pO3ZhciBQZHQ9ZygoKT0+e30pO3ZhciBWdWU9ZygoKT0+e30pO3ZhciBSNz1nKCgpPT57eW4oKTtpMnQoKTtseSgpO24ydCgpO3o3KCk7bDJ0KCk7d2RlKCk7ZDJ0KCk7eDJ0KCk7YzAoKTtTMnQoKTtDMnQoKTskMnQoKTt6ZGUoKTtVMigpO255KCk7ajJ0KCk7aGRlKCk7TzQoKTtNNygpO1YydCgpO1cydCgpO0cydCgpO0sydCgpO1UydCgpO1kydCgpO3ZkZSgpO1oydCgpO3JlZSgpO3JkZSgpO0oydCgpO2VkdCgpO29kdCgpO1FkZSgpO2RkdCgpO2NkdCgpO1VKKCk7dWR0KCk7bXkoKTtoZHQoKTtmZHQoKTttZHQoKTtnZHQoKTtiZHQoKTt2ZHQoKTtlMGUoKTtVZGUoKTt5ZHQoKTt3ZHQoKTtrZHQoKTtTZHQoKTtfZHQoKTtHZGUoKTtwZWUoKTtNZHQoKTt6ZHQoKTtWZGUoKTtVSigpO2UwZSgpO0NkdCgpO2s3KCk7YTBlKCk7czBlKCk7aTBlKCk7cjBlKCk7bzBlKCk7bjBlKCk7bDBlKCk7YzBlKCk7aDBlKCk7cDBlKCk7ZjBlKCk7ZGVlKCk7bTBlKCk7ZzBlKCk7YjBlKCk7djBlKCk7eDBlKCk7eTBlKCk7dzBlKCk7azBlKCk7QzBlKCk7ejBlKCk7VDBlKCk7JDBlKCk7RDBlKCk7TDBlKCk7UDBlKCk7STBlKCk7QTBlKCk7TzBlKCk7UjBlKCk7TjBlKCk7RjBlKCk7dDBlKCk7QjBlKCk7SDBlKCk7cTBlKCk7ajBlKCk7VjBlKCk7XzBlKCk7VTBlKCk7RzBlKCk7Z3koKTtNMGUoKTtLMGUoKTtZMGUoKTtsZWUoKTtaMGUoKTtieSgpO1gwZSgpO1EwZSgpO0owZSgpO2V1ZSgpO3R1ZSgpO2h5KCk7YXVlKCk7c3VlKCk7aXVlKCk7cnVlKCk7b3VlKCk7bnVlKCk7bHVlKCk7Y3VlKCk7ZDBlKCk7ZHVlKCk7dXVlKCk7cHVlKCk7aHVlKCk7cUooKTtmdWUoKTttdWUoKTtndWUoKTtidWUoKTt5ZWUoKTt4dWUoKTt5dWUoKTt3dWUoKTtrdWUoKTtTdWUoKTtfdWUoKTtNdWUoKTtmeSgpO0N1ZSgpO3p1ZSgpO1R1ZSgpOyR1ZSgpO1MwZSgpO1cwZSgpO0R1ZSgpO0x1ZSgpO0V1ZSgpO19lZSgpO1B1ZSgpO0UwZSgpO0l1ZSgpO3JlZSgpO0F1ZSgpO051ZSgpO3UwZSgpO1J1ZSgpO091ZSgpO0Z1ZSgpO0J1ZSgpO0h1ZSgpO3F1ZSgpO2p1ZSgpO1Z1ZSgpfSk7dmFyIElkdD1nKCgpPT57fSk7dmFyIEFkdD1nKCgpPT57fSk7dmFyIE5kdD1nKCgpPT57YTBlKCk7czBlKCk7aTBlKCk7cjBlKCk7bzBlKCk7bjBlKCk7bDBlKCk7YzBlKCk7aDBlKCk7cDBlKCk7VGR0KCk7ZjBlKCk7JGR0KCk7ZGVlKCk7bTBlKCk7ZzBlKCk7YjBlKCk7djBlKCk7eDBlKCk7eTBlKCk7dzBlKCk7azBlKCk7QzBlKCk7ejBlKCk7VDBlKCk7JDBlKCk7RDBlKCk7TDBlKCk7UDBlKCk7STBlKCk7QTBlKCk7TzBlKCk7UjBlKCk7TjBlKCk7RjBlKCk7dDBlKCk7QjBlKCk7SDBlKCk7cTBlKCk7ajBlKCk7VjBlKCk7XzBlKCk7VTBlKCk7RzBlKCk7Z3koKTtNMGUoKTtLMGUoKTtZMGUoKTtEZHQoKTtsZWUoKTtaMGUoKTtieSgpO1gwZSgpO1EwZSgpO0owZSgpO2V1ZSgpO3R1ZSgpO2h5KCk7YXVlKCk7c3VlKCk7SWR0KCk7aXVlKCk7cnVlKCk7b3VlKCk7bnVlKCk7bHVlKCk7QWR0KCk7Y3VlKCk7ZDBlKCk7ZHVlKCk7dXVlKCk7cHVlKCk7aHVlKCk7cUooKTtmdWUoKTttdWUoKTtndWUoKTtidWUoKTt5ZWUoKTt4dWUoKTt5dWUoKTt3dWUoKTtrdWUoKTtTdWUoKTtfdWUoKTtNdWUoKTtmeSgpO0N1ZSgpO3p1ZSgpO1R1ZSgpOyR1ZSgpO1MwZSgpO1cwZSgpO0R1ZSgpO0x1ZSgpO0V1ZSgpO19lZSgpO1B1ZSgpO0UwZSgpO0l1ZSgpO3JlZSgpO0F1ZSgpO051ZSgpO3UwZSgpO1J1ZSgpO091ZSgpO0Z1ZSgpO0J1ZSgpO0h1ZSgpO3F1ZSgpO1BkdCgpO2p1ZSgpO1Z1ZSgpfSk7dmFyIE83PXt9O3l0KE83LHtPYnNlcnZhYmxlOigpPT5yYSxSZXBsYXlTdWJqZWN0OigpPT5UNyxTdWJqZWN0OigpPT5VbyxTdWJzY3JpcHRpb246KCk9PnRyLGZyb206KCk9PksyLGZyb21FdmVudDooKT0+VjQsb2Y6KCk9PnE0LG9wczooKT0+Y0xhfSk7dmFyIGNMYSx6ZWU9ZygoKT0+e1I3KCk7TmR0KCk7Y0xhPXtidWZmZXI6ZmVlLGJ1ZmZlckNvdW50Om1lZSxidWZmZXJUaW1lOmdlZSxkZWJvdW5jZTpiZWUsZGVib3VuY2VUaW1lOnZlZSxmaWx0ZXI6aGVlLG1hcDpZMixzdGFydFdpdGg6a2VlLHRha2VVbnRpbDpONyx0aHJvdHRsZVRpbWU6TWVlfX0pO3ZhciBVdWUsUmR0PWcoKCk9PntOSigpO3plZSgpO1V1ZT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJPYnNlcnZhYmxlbWFwIil9Y29uc3RydWN0b3IoKXt0aGlzLm9ic2VydmFibGVFdmVudEVtaXR0ZXJCdW5kbGVBcnJheT1uZXcgQXJyYXksdGhpcy5vYnNlcnZhYmxlRXZlbnRUYXJnZXRCdW5kbGVBcnJheT1uZXcgQXJyYXl9Z2V0U3ViamVjdEZvckVtaXR0ZXJFdmVudChlLHQpe2xldCBhPXRoaXMub2JzZXJ2YWJsZUV2ZW50RW1pdHRlckJ1bmRsZUFycmF5LmZpbmQocj0+ci5ldmVudFJlZj09PWUmJnIuZXZlbnQ9PT10KTtpZihhKXJldHVybiBhLnN1YmplY3Q7e2xldCByPVY0KGUsdCksbj1uZXcgVW87ci5zdWJzY3JpYmUobik7bGV0IG89e3N1YmplY3Q6bixldmVudFJlZjplLGV2ZW50OnR9O3JldHVybiB0aGlzLm9ic2VydmFibGVFdmVudEVtaXR0ZXJCdW5kbGVBcnJheS5wdXNoKG8pLG8uc3ViamVjdH19Z2V0U3ViamVjdEZvckV2ZW50VGFyZ2V0KGUsdCl7bGV0IGE9dGhpcy5vYnNlcnZhYmxlRXZlbnRUYXJnZXRCdW5kbGVBcnJheS5maW5kKHI9PnIuZXZlbnRSZWY9PT1lJiZyLmV2ZW50PT09dCk7aWYoYSlyZXR1cm4gYS5zdWJqZWN0O3tsZXQgbj17c3ViamVjdDpuZXcgVW8sZXZlbnRSZWY6ZSxldmVudDp0fTtyZXR1cm4gdGhpcy5vYnNlcnZhYmxlRXZlbnRUYXJnZXRCdW5kbGVBcnJheS5wdXNoKG4pLG4uc3ViamVjdH19fX0pO3ZhciBXdWUsT2R0PWcoKCk9PntOSigpO3plZSgpO1d1ZT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJPYnNlcnZhYmxlSW50YWtlIil9Y29uc3RydWN0b3IoKXt0aGlzLm9ic2VydmFibGVGdW5jdGlvbnM9e25leHQ6aShlPT57fSwibmV4dCIpLGNvbXBsZXRlOmkoZT0+e30sImNvbXBsZXRlIil9LHRoaXMuZ2VuZXJhdG9yPW51bGwsdGhpcy5idWZmZXJlZD0hMSx0aGlzLnBheWxvYWRCdWZmZXI9W10sdGhpcy5vYnNlcnZhYmxlPW5ldyByYShlPT57dGhpcy5vYnNlcnZhYmxlRnVuY3Rpb25zLm5leHQ9KC4uLnQpPT5lLm5leHQodCksdGhpcy5vYnNlcnZhYmxlRnVuY3Rpb25zLmNvbXBsZXRlPSgpPT4odGhpcy5jb21wbGV0ZWREZWZmZXJlZC5yZXNvbHZlKCksZS5jb21wbGV0ZSgpKX0pLHRoaXMuY29tcGxldGVkRGVmZmVyZWQ9bXQuZGVmZXIoKSx0aGlzLmNvbXBsZXRlZD10aGlzLmNvbXBsZXRlZERlZmZlcmVkLnByb21pc2V9c2V0T2JzZXJ2YWJsZShlKXt0aGlzLm9ic2VydmFibGU9ZX1wdXNoKGUpe3RoaXMuYnVmZmVyZWQ/dGhpcy5wYXlsb2FkQnVmZmVyLnB1c2goZSk6dGhpcy5pbnRlcm5hbFB1c2goZSl9cHVzaE1hbnkoZSl7Zm9yKGxldCB0IG9mIGUpdGhpcy5wdXNoKHQpfXNldEdlbmVyYXRvcihlKXt0aGlzLmdlbmVyYXRvcj1lfW1ha2VCdWZmZXJlZCgpe3RoaXMuYnVmZmVyZWQ9ITB9c3Vic2NyaWJlKC4uLmUpe3JldHVybiB0aGlzLm9ic2VydmFibGUuc3Vic2NyaWJlKC4uLmUpfXJlcXVlc3QoZSl7aWYoZSE9PTApZm9yKGxldCB0PTA7dCE9PWU7dCsrKWlmKHRoaXMucGF5bG9hZEJ1ZmZlci5sZW5ndGg+MCl0aGlzLmludGVybmFsUHVzaCh0aGlzLnBheWxvYWRCdWZmZXIuc2hpZnQoKSk7ZWxzZXtsZXQgYT10aGlzLmdlbmVyYXRvci5uZXh0KCk7dGhpcy5pbnRlcm5hbFB1c2goYS52YWx1ZSl9fXNpZ25hbENvbXBsZXRlKCl7dGhpcy5vYnNlcnZhYmxlRnVuY3Rpb25zLmNvbXBsZXRlKCl9aW50ZXJuYWxQdXNoKGUpe3RoaXMub2JzZXJ2YWJsZUZ1bmN0aW9ucy5uZXh0KGUpfX19KTtmdW5jdGlvbiBkTGEocyl7cmV0dXJuIG5ldyByYShlPT57bGV0IHQ9aSgoKT0+cy5wYXVzZSgpLCJwYXVzZVN0cmVhbSIpLGE9aSgoKT0+cHJvY2Vzcy5uZXh0VGljaygoKT0+cy5yZXN1bWUoKSksInJlc3VtZVN0cmVhbSIpLHI9aShuPT57dCgpLGUubmV4dChuKSxhKCl9LCJvbkRhdGEiKTtyZXR1cm4gcy5vbigiZGF0YSIscikscy5vbigiZXJyb3IiLG49PmUuZXJyb3IobikpLHMub24oImVuZCIsKCk9PmUuY29tcGxldGUoKSkscy5vbigiY2xvc2UiLCgpPT5lLmNvbXBsZXRlKCkpLCgpPT57cy5yZW1vdmVMaXN0ZW5lcigiZGF0YSIscikscy5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLGUuZXJyb3IpLHMucmVtb3ZlTGlzdGVuZXIoImVuZCIsZS5jb21wbGV0ZSkscy5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLGUuY29tcGxldGUpfX0pfXZhciBGZHQ9ZygoKT0+e1I3KCk7aShkTGEsImZyb21TdHJlYW1XaXRoQmFja3ByZXNzdXJlIil9KTt2YXIgbHM9e307eXQobHMse09ic2VydmFibGVJbnRha2U6KCk9Pld1ZSxPYnNlcnZhYmxlbWFwOigpPT5VdWUsZnJvbVN0cmVhbVdpdGhCYWNrcHJlc3N1cmU6KCk9PmRMYSxyeGpzOigpPT5PN30pO3ZhciBaMj1nKCgpPT57TkooKTtSZHQoKTtPZHQoKTtGZHQoKTt6ZWUoKX0pO2Z1bmN0aW9uIEwocyl7cmV0dXJuKGUsdCk9PnR5cGVvZiB0PT0ib2JqZWN0Ij9CZHQocyxlLHQpOigoYSxyLG4pPT57bGV0IG89ci5oYXNPd25Qcm9wZXJ0eShuKTtyZXR1cm4gci5jb25zdHJ1Y3Rvci5jcmVhdGVQcm9wZXJ0eShuLGEpLG8/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLG4pOnZvaWQgMH0pKHMsZSx0KX12YXIgdUxhLEJkdCxDZWU9ZygoKT0+e0p4KCk7dUxhPXthdHRyaWJ1dGU6ITAsdHlwZTpTdHJpbmcsY29udmVydGVyOng3LHJlZmxlY3Q6ITEsaGFzQ2hhbmdlZDpReH0sQmR0PWkoKHM9dUxhLGUsdCk9PntsZXR7a2luZDphLG1ldGFkYXRhOnJ9PXQsbj1nbG9iYWxUaGlzLmxpdFByb3BlcnR5TWV0YWRhdGEuZ2V0KHIpO2lmKG49PT12b2lkIDAmJmdsb2JhbFRoaXMubGl0UHJvcGVydHlNZXRhZGF0YS5zZXQocixuPW5ldyBNYXApLGE9PT0ic2V0dGVyIiYmKChzPU9iamVjdC5jcmVhdGUocykpLndyYXBwZWQ9ITApLG4uc2V0KHQubmFtZSxzKSxhPT09ImFjY2Vzc29yIil7bGV0e25hbWU6b309dDtyZXR1cm57c2V0KGwpe2xldCBwPWUuZ2V0LmNhbGwodGhpcyk7ZS5zZXQuY2FsbCh0aGlzLGwpLHRoaXMucmVxdWVzdFVwZGF0ZShvLHAscywhMCxsKX0saW5pdChsKXtyZXR1cm4gbCE9PXZvaWQgMCYmdGhpcy5DKG8sdm9pZCAwLHMsbCksbH19fWlmKGE9PT0ic2V0dGVyIil7bGV0e25hbWU6b309dDtyZXR1cm4gZnVuY3Rpb24obCl7bGV0IHA9dGhpc1tvXTtlLmNhbGwodGhpcyxsKSx0aGlzLnJlcXVlc3RVcGRhdGUobyxwLHMsITAsbCl9fXRocm93IEVycm9yKCJVbnN1cHBvcnRlZCBkZWNvcmF0b3IgbG9jYXRpb246ICIrYSl9LCJyIik7aShMLCJuIil9KTt2YXIgSGR0PWcoKCk9PntDZWUoKX0pO3ZhciBxZHQ9ZygoKT0+e30pO3ZhciBYdD17fTt5dChYdCx7VGltZW91dDooKT0+VGVlLGRlbGF5Rm9yOigpPT5qZHQsZGVsYXlGb3JSYW5kb206KCk9PnBMYX0pO3ZhciBqZHQscExhLFRlZSxkMD1nKCgpPT57aW8oKTtqZHQ9aShhc3luYyhzLGUsdD0hMSk9Pihhd2FpdCBuZXcgVGVlKHMsbnVsbCx0KS5wcm9taXNlLGUpLCJkZWxheUZvciIpLHBMYT1pKGFzeW5jKHMsZSx0LGE9ITEpPT4oYXdhaXQgamR0KE1hdGgucmFuZG9tKCkqKGUtcykrcyxudWxsLGEpLHQpLCJkZWxheUZvclJhbmRvbSIpLFRlZT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJUaW1lb3V0Iil9Y29uc3RydWN0b3IoZSx0LGE9ITEpe3RoaXMuX2NhbmNlbGxlZD0hMSx0aGlzLnRpbWVvdXRJbk1pbGxpcz1lLHRoaXMuX2RlZmVycmVkPXJwKCksdGhpcy5wcm9taXNlPXRoaXMuX2RlZmVycmVkLnByb21pc2UsdGhpcy5fdGltZW91dD1zZXRUaW1lb3V0KCgpPT57dGhpcy5fY2FuY2VsbGVkfHx0aGlzLl9kZWZlcnJlZC5yZXNvbHZlKHQpfSxlKSx0aGlzLnN0YXJ0ZWQ9RGF0ZS5ub3coKSxhJiZ0aGlzLm1ha2VVbnJlZmVkKCl9bWFrZVVucmVmZWQoKXt0aGlzLl90aW1lb3V0LnVucmVmPy4oKX1jYW5jZWwoKXt0aGlzLl9jYW5jZWxsZWQ9ITAsY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVvdXQpfWdldFRpbWVMZWZ0KCl7bGV0IGU9dGhpcy5zdGFydGVkK3RoaXMudGltZW91dEluTWlsbGlzLURhdGUubm93KCk7cmV0dXJuIGU+MD9lOjB9fX0pO3ZhciB3Yz17fTt2YXIgVTQ9ZygoKT0+e30pO2Z1bmN0aW9uIFc0KHMpe2lmKHR5cGVvZiBzIT0ic3RyaW5nIil0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBhIHN0cmluZyIpO3JldHVybiBzLnJlcGxhY2UoL1t8XFx7fSgpW1xdXiQrKj8uXS9nLCJcXCQmIikucmVwbGFjZSgvLS9nLCJcXHgyZCIpfXZhciAkZWU9ZygoKT0+e2koVzQsImVzY2FwZVN0cmluZ1JlZ2V4cCIpfSk7dmFyIHh5PXt9O3l0KHh5LHtpc01hdGNoOigpPT5tTGEsbWF0Y2hlcjooKT0+ZkxhfSk7ZnVuY3Rpb24gZkxhKHMsZSx0KXtyZXR1cm4gVWR0KHMsZSx0LCExKX1mdW5jdGlvbiBtTGEocyxlLHQpe3JldHVybiBVZHQocyxlLHQsITApLmxlbmd0aD4wfXZhciBHdWUsVmR0LGhMYSxVZHQsV2R0PWcoKCk9PnskZWUoKTtHdWU9bmV3IE1hcCxWZHQ9aSgocyxlKT0+e2lmKCFBcnJheS5pc0FycmF5KHMpKXN3aXRjaCh0eXBlb2Ygcyl7Y2FzZSJzdHJpbmciOnM9W3NdO2JyZWFrO2Nhc2UidW5kZWZpbmVkIjpzPVtdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgJyR7ZX0nIHRvIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5LCBidXQgZ290IGEgdHlwZSBvZiAnJHt0eXBlb2Ygc30nYCl9cmV0dXJuIHMuZmlsdGVyKHQ9PntpZih0eXBlb2YgdCE9InN0cmluZyIpe2lmKHR5cGVvZiB0PiJ1IilyZXR1cm4hMTt0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCAnJHtlfScgdG8gYmUgYW4gYXJyYXkgb2Ygc3RyaW5ncywgYnV0IGZvdW5kIGEgdHlwZSBvZiAnJHt0eXBlb2YgdH0nIGluIHRoZSBhcnJheWApfXJldHVybiEwfSl9LCJzYW5pdGl6ZUFycmF5IiksaExhPWkoKHMsZSk9PntlPXtjYXNlU2Vuc2l0aXZlOiExLC4uLmV9O2xldCB0PXMrSlNPTi5zdHJpbmdpZnkoZSk7aWYoR3VlLmhhcyh0KSlyZXR1cm4gR3VlLmdldCh0KTtsZXQgYT1zWzBdPT09IiEiO2EmJihzPXMuc2xpY2UoMSkpLHM9VzQocykucmVwbGFjZSgvXFxcKi9nLCJbXFxzXFxTXSoiKTtsZXQgcj1uZXcgUmVnRXhwKGBeJHtzfSRgLGUuY2FzZVNlbnNpdGl2ZT8iIjoiaSIpO3JldHVybiByLm5lZ2F0ZWQ9YSxHdWUuc2V0KHQscikscn0sIm1ha2VSZWdleHAiKSxVZHQ9aSgocyxlLHQsYSk9PntpZihzPVZkdChzLCJpbnB1dHMiKSxlPVZkdChlLCJwYXR0ZXJucyIpLGUubGVuZ3RoPT09MClyZXR1cm5bXTtlPWUubWFwKG89PmhMYShvLHQpKTtsZXR7YWxsUGF0dGVybnM6cn09dHx8e30sbj1bXTtmb3IobGV0IG8gb2Ygcyl7bGV0IGwscD1bLi4uZV0uZmlsbCghMSk7Zm9yKGxldFtkLHVdb2YgZS5lbnRyaWVzKCkpaWYodS50ZXN0KG8pJiYocFtkXT0hMCxsPSF1Lm5lZ2F0ZWQsIWwpKWJyZWFrO2lmKCEobD09PSExfHxsPT09dm9pZCAwJiZlLnNvbWUoZD0+IWQubmVnYXRlZCl8fHImJnAuc29tZSgoZCx1KT0+IWQmJiFlW3VdLm5lZ2F0ZWQpKSYmKG4ucHVzaChvKSxhKSlicmVha31yZXR1cm4gbn0sImJhc2VNYXRjaGVyIik7aShmTGEsIm1hdGNoZXIiKTtpKG1MYSwiaXNNYXRjaCIpfSk7dmFyIEdkdD1nKCgpPT57V2R0KCl9KTt2YXIgeXk9e307eXQoeXkse1NtYXJ0TWF0Y2g6KCk9Pkt1ZX0pO3ZhciBLdWUsS2R0PWcoKCk9PntHZHQoKTtLdWU9Y2xhc3N7c3RhdGlje2kodGhpcywiU21hcnRNYXRjaCIpfWNvbnN0cnVjdG9yKGUpe3RoaXMud2lsZGNhcmQ9ZX1tYXRjaChlKXtyZXR1cm4geHkuaXNNYXRjaChlLHRoaXMud2lsZGNhcmQpfX19KTt2YXIgX3k9e307eXQoX3kse0Nyb246KCk9PmUwdCxDcm9uRGF0ZTooKT0+QnIsQ3JvblBhdHRlcm46KCk9PkRlZSxzY2hlZHVsZWRKb2JzOigpPT5GN30pO2Z1bmN0aW9uIHd5KHMpe3JldHVybiBEYXRlLlVUQyhzLnkscy5tLTEscy5kLHMuaCxzLmkscy5zKX1mdW5jdGlvbiBZdWUocyxlKXtyZXR1cm4gcy55PT09ZS55JiZzLm09PT1lLm0mJnMuZD09PWUuZCYmcy5oPT09ZS5oJiZzLmk9PT1lLmkmJnMucz09PWUuc31mdW5jdGlvbiBiTGEocyxlKXtsZXQgdD1uZXcgRGF0ZShEYXRlLnBhcnNlKHMpKTtpZihpc05hTih0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgSVNPODYwMSBwYXNzZWQgdG8gdGltZXpvbmUgcGFyc2VyLiIpO2xldCBhPXMuc3Vic3RyaW5nKDkpO3JldHVybiBhLmluY2x1ZGVzKCJaIil8fGEuaW5jbHVkZXMoIisiKXx8YS5pbmNsdWRlcygiLSIpP1p1ZSh0LmdldFVUQ0Z1bGxZZWFyKCksdC5nZXRVVENNb250aCgpKzEsdC5nZXRVVENEYXRlKCksdC5nZXRVVENIb3VycygpLHQuZ2V0VVRDTWludXRlcygpLHQuZ2V0VVRDU2Vjb25kcygpLCJFdGMvVVRDIik6WnVlKHQuZ2V0RnVsbFllYXIoKSx0LmdldE1vbnRoKCkrMSx0LmdldERhdGUoKSx0LmdldEhvdXJzKCksdC5nZXRNaW51dGVzKCksdC5nZXRTZWNvbmRzKCksZSl9ZnVuY3Rpb24gWWR0KHMsZSx0KXtyZXR1cm4gWmR0KGJMYShzLGUpLHQpfWZ1bmN0aW9uIFpkdChzLGUpe2xldCB0PW5ldyBEYXRlKHd5KHMpKSxhPWt5KHQscy50eikscj13eShzKSxuPXd5KGEpLG89ci1uLGw9bmV3IERhdGUodC5nZXRUaW1lKCkrbykscD1reShsLHMudHopO2lmKFl1ZShwLHMpKXtsZXQgYz1uZXcgRGF0ZShsLmdldFRpbWUoKS0zNmU1KSxiPWt5KGMscy50eik7cmV0dXJuIFl1ZShiLHMpP2M6bH1sZXQgZD1uZXcgRGF0ZShsLmdldFRpbWUoKSt3eShzKS13eShwKSksdT1reShkLHMudHopO2lmKFl1ZSh1LHMpKXJldHVybiBkO2lmKGUpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGRhdGUgcGFzc2VkIHRvIGZyb21UWigpIik7cmV0dXJuIGwuZ2V0VGltZSgpPmQuZ2V0VGltZSgpP2w6ZH1mdW5jdGlvbiBreShzLGUpe2xldCB0LGE7dHJ5e3Q9bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoImVuLVVTIix7dGltZVpvbmU6ZSx5ZWFyOiJudW1lcmljIixtb250aDoibnVtZXJpYyIsZGF5OiJudW1lcmljIixob3VyOiJudW1lcmljIixtaW51dGU6Im51bWVyaWMiLHNlY29uZDoibnVtZXJpYyIsaG91cjEyOiExfSksYT10LmZvcm1hdFRvUGFydHMocyl9Y2F0Y2gobil7bGV0IG89biBpbnN0YW5jZW9mIEVycm9yP24ubWVzc2FnZTpTdHJpbmcobik7dGhyb3cgbmV3IFJhbmdlRXJyb3IoYHRvVFo6IEludmFsaWQgdGltZXpvbmUgJyR7ZX0nIG9yIGRhdGUuIFBsZWFzZSBwcm92aWRlIGEgdmFsaWQgSUFOQSB0aW1lem9uZSAoZS5nLiwgJ0FtZXJpY2EvTmV3X1lvcmsnLCAnRXVyb3BlL1N0b2NraG9sbScpLiBPcmlnaW5hbCBlcnJvcjogJHtvfWApfWxldCByPXt5ZWFyOjAsbW9udGg6MCxkYXk6MCxob3VyOjAsbWludXRlOjAsc2Vjb25kOjB9O2ZvcihsZXQgbiBvZiBhKShuLnR5cGU9PT0ieWVhciJ8fG4udHlwZT09PSJtb250aCJ8fG4udHlwZT09PSJkYXkifHxuLnR5cGU9PT0iaG91ciJ8fG4udHlwZT09PSJtaW51dGUifHxuLnR5cGU9PT0ic2Vjb25kIikmJihyW24udHlwZV09cGFyc2VJbnQobi52YWx1ZSwxMCkpO2lmKGlzTmFOKHIueWVhcil8fGlzTmFOKHIubW9udGgpfHxpc05hTihyLmRheSl8fGlzTmFOKHIuaG91cil8fGlzTmFOKHIubWludXRlKXx8aXNOYU4oci5zZWNvbmQpKXRocm93IG5ldyBFcnJvcihgdG9UWjogRmFpbGVkIHRvIHBhcnNlIGFsbCBkYXRlIGNvbXBvbmVudHMgZnJvbSB0aW1lem9uZSAnJHtlfScuIFRoaXMgbWF5IGluZGljYXRlIGFuIGludmFsaWQgZGF0ZSBvciB0aW1lem9uZSBjb25maWd1cmF0aW9uLiBQYXJzZWQgY29tcG9uZW50czogJHtKU09OLnN0cmluZ2lmeShyKX1gKTtyZXR1cm4gci5ob3VyPT09MjQmJihyLmhvdXI9MCkse3k6ci55ZWFyLG06ci5tb250aCxkOnIuZGF5LGg6ci5ob3VyLGk6ci5taW51dGUsczpyLnNlY29uZCx0ejplfX1mdW5jdGlvbiBadWUocyxlLHQsYSxyLG4sbyl7cmV0dXJue3k6cyxtOmUsZDp0LGg6YSxpOnIsczpuLHR6Om99fWZ1bmN0aW9uIHZMYShzKXtpZihzPT09dm9pZCAwJiYocz17fSksZGVsZXRlIHMubmFtZSxzLmxlZ2FjeU1vZGUhPT12b2lkIDAmJnMuZG9tQW5kRG93PT09dm9pZCAwP3MuZG9tQW5kRG93PSFzLmxlZ2FjeU1vZGU6cy5kb21BbmREb3c9PT12b2lkIDAmJihzLmRvbUFuZERvdz0hMSkscy5sZWdhY3lNb2RlPSFzLmRvbUFuZERvdyxzLnBhdXNlZD1zLnBhdXNlZD09PXZvaWQgMD8hMTpzLnBhdXNlZCxzLm1heFJ1bnM9cy5tYXhSdW5zPT09dm9pZCAwPzEvMDpzLm1heFJ1bnMscy5jYXRjaD1zLmNhdGNoPT09dm9pZCAwPyExOnMuY2F0Y2gscy5pbnRlcnZhbD1zLmludGVydmFsPT09dm9pZCAwPzA6cGFyc2VJbnQocy5pbnRlcnZhbC50b1N0cmluZygpLDEwKSxzLnV0Y09mZnNldD1zLnV0Y09mZnNldD09PXZvaWQgMD92b2lkIDA6cGFyc2VJbnQocy51dGNPZmZzZXQudG9TdHJpbmcoKSwxMCkscy5kYXlPZmZzZXQ9cy5kYXlPZmZzZXQ9PT12b2lkIDA/MDpwYXJzZUludChzLmRheU9mZnNldC50b1N0cmluZygpLDEwKSxzLnVucmVmPXMudW5yZWY9PT12b2lkIDA/ITE6cy51bnJlZixzLm1vZGU9cy5tb2RlPT09dm9pZCAwPyJhdXRvIjpzLm1vZGUscy5hbHRlcm5hdGl2ZVdlZWtkYXlzPXMuYWx0ZXJuYXRpdmVXZWVrZGF5cz09PXZvaWQgMD8hMTpzLmFsdGVybmF0aXZlV2Vla2RheXMscy5zbG9wcHlSYW5nZXM9cy5zbG9wcHlSYW5nZXM9PT12b2lkIDA/ITE6cy5zbG9wcHlSYW5nZXMsIVsiYXV0byIsIjUtcGFydCIsIjYtcGFydCIsIjctcGFydCIsIjUtb3ItNi1wYXJ0cyIsIjYtb3ItNy1wYXJ0cyJdLmluY2x1ZGVzKHMubW9kZSkpdGhyb3cgbmV3IEVycm9yKCJDcm9uT3B0aW9uczogbW9kZSBtdXN0IGJlIG9uZSBvZiAnYXV0bycsICc1LXBhcnQnLCAnNi1wYXJ0JywgJzctcGFydCcsICc1LW9yLTYtcGFydHMnLCBvciAnNi1vci03LXBhcnRzJy4iKTtpZihzLnN0YXJ0QXQmJihzLnN0YXJ0QXQ9bmV3IEJyKHMuc3RhcnRBdCxzLnRpbWV6b25lKSkscy5zdG9wQXQmJihzLnN0b3BBdD1uZXcgQnIocy5zdG9wQXQscy50aW1lem9uZSkpLHMuaW50ZXJ2YWwhPT1udWxsKXtpZihpc05hTihzLmludGVydmFsKSl0aHJvdyBuZXcgRXJyb3IoIkNyb25PcHRpb25zOiBTdXBwbGllZCB2YWx1ZSBmb3IgaW50ZXJ2YWwgaXMgbm90IGEgbnVtYmVyIik7aWYocy5pbnRlcnZhbDwwKXRocm93IG5ldyBFcnJvcigiQ3Jvbk9wdGlvbnM6IFN1cHBsaWVkIHZhbHVlIGZvciBpbnRlcnZhbCBjYW4gbm90IGJlIG5lZ2F0aXZlIil9aWYocy51dGNPZmZzZXQhPT12b2lkIDApe2lmKGlzTmFOKHMudXRjT2Zmc2V0KSl0aHJvdyBuZXcgRXJyb3IoIkNyb25PcHRpb25zOiBJbnZhbGlkIHZhbHVlIHBhc3NlZCBmb3IgdXRjT2Zmc2V0LCBzaG91bGQgYmUgbnVtYmVyIHJlcHJlc2VudGluZyBtaW51dGVzIG9mZnNldCBmcm9tIFVUQy4iKTtpZihzLnV0Y09mZnNldDwtODcwfHxzLnV0Y09mZnNldD44NzApdGhyb3cgbmV3IEVycm9yKCJDcm9uT3B0aW9uczogdXRjT2Zmc2V0IG91dCBvZiBib3VuZHMuIik7aWYocy51dGNPZmZzZXQhPT12b2lkIDAmJnMudGltZXpvbmUpdGhyb3cgbmV3IEVycm9yKCJDcm9uT3B0aW9uczogQ29tYmluaW5nICd1dGNPZmZzZXQnIHdpdGggJ3RpbWV6b25lJyBpcyBub3QgYWxsb3dlZC4iKX1pZihzLnVucmVmIT09ITAmJnMudW5yZWYhPT0hMSl0aHJvdyBuZXcgRXJyb3IoIkNyb25PcHRpb25zOiBVbnJlZiBzaG91bGQgYmUgZWl0aGVyIHRydWUsIGZhbHNlIG9yIHVuZGVmaW5lZChmYWxzZSkuIik7aWYocy5kYXlPZmZzZXQhPT12b2lkIDAmJnMuZGF5T2Zmc2V0IT09MCYmaXNOYU4ocy5kYXlPZmZzZXQpKXRocm93IG5ldyBFcnJvcigiQ3Jvbk9wdGlvbnM6IEludmFsaWQgdmFsdWUgcGFzc2VkIGZvciBkYXlPZmZzZXQsIHNob3VsZCBiZSBhIG51bWJlciByZXByZXNlbnRpbmcgZGF5cyB0byBvZmZzZXQuIik7cmV0dXJuIHN9ZnVuY3Rpb24gU3kocyl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChzKT09PSJbb2JqZWN0IEZ1bmN0aW9uXSJ8fHR5cGVvZiBzPT0iZnVuY3Rpb24ifHxzIGluc3RhbmNlb2YgRnVuY3Rpb259ZnVuY3Rpb24geExhKHMpe3JldHVybiBTeShzKX1mdW5jdGlvbiB5TGEocyl7dHlwZW9mIERlbm88InUiJiZ0eXBlb2YgRGVuby51bnJlZlRpbWVyPCJ1Ij9EZW5vLnVucmVmVGltZXIocyk6cyYmdHlwZW9mIHMudW5yZWY8InUiJiZzLnVucmVmKCl9dmFyIFhkdCxEZWUsWHVlLGxpLEJyLFFkdCxGNyxlMHQsdDB0PWcoKCk9PntpKHd5LCJUIik7aShZdWUsIkQiKTtpKGJMYSwiQSIpO2koWWR0LCJ2Iik7aShaZHQsImsiKTtpKGt5LCJnIik7aShadWUsImIiKTtYZHQ9WzEsMiw0LDgsMTZdLERlZT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJDIil9cGF0dGVybjt0aW1lem9uZTttb2RlO2FsdGVybmF0aXZlV2Vla2RheXM7c2xvcHB5UmFuZ2VzO3NlY29uZDttaW51dGU7aG91cjtkYXk7bW9udGg7ZGF5T2ZXZWVrO3llYXI7bGFzdERheU9mTW9udGg7bGFzdFdlZWtkYXk7bmVhcmVzdFdlZWtkYXlzO3N0YXJET007c3RhckRPVztzdGFyWWVhcjt1c2VBbmRMb2dpYztjb25zdHJ1Y3RvcihzLGUsdCl7dGhpcy5wYXR0ZXJuPXMsdGhpcy50aW1lem9uZT1lLHRoaXMubW9kZT10Py5tb2RlPz8iYXV0byIsdGhpcy5hbHRlcm5hdGl2ZVdlZWtkYXlzPXQ/LmFsdGVybmF0aXZlV2Vla2RheXM/PyExLHRoaXMuc2xvcHB5UmFuZ2VzPXQ/LnNsb3BweVJhbmdlcz8/ITEsdGhpcy5zZWNvbmQ9QXJyYXkoNjApLmZpbGwoMCksdGhpcy5taW51dGU9QXJyYXkoNjApLmZpbGwoMCksdGhpcy5ob3VyPUFycmF5KDI0KS5maWxsKDApLHRoaXMuZGF5PUFycmF5KDMxKS5maWxsKDApLHRoaXMubW9udGg9QXJyYXkoMTIpLmZpbGwoMCksdGhpcy5kYXlPZldlZWs9QXJyYXkoNykuZmlsbCgwKSx0aGlzLnllYXI9QXJyYXkoMWU0KS5maWxsKDApLHRoaXMubGFzdERheU9mTW9udGg9ITEsdGhpcy5sYXN0V2Vla2RheT0hMSx0aGlzLm5lYXJlc3RXZWVrZGF5cz1BcnJheSgzMSkuZmlsbCgwKSx0aGlzLnN0YXJET009ITEsdGhpcy5zdGFyRE9XPSExLHRoaXMuc3RhclllYXI9ITEsdGhpcy51c2VBbmRMb2dpYz0hMSx0aGlzLnBhcnNlKCl9cGFyc2UoKXtpZighKHR5cGVvZiB0aGlzLnBhdHRlcm49PSJzdHJpbmcifHx0aGlzLnBhdHRlcm4gaW5zdGFuY2VvZiBTdHJpbmcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNyb25QYXR0ZXJuOiBQYXR0ZXJuIGhhcyB0byBiZSBvZiB0eXBlIHN0cmluZy4iKTt0aGlzLnBhdHRlcm4uaW5kZXhPZigiQCIpPj0wJiYodGhpcy5wYXR0ZXJuPXRoaXMuaGFuZGxlTmlja25hbWVzKHRoaXMucGF0dGVybikudHJpbSgpKTtsZXQgcz10aGlzLnBhdHRlcm4ubWF0Y2goL1xTKy9nKXx8WyIiXSxlPXMubGVuZ3RoO2lmKHMubGVuZ3RoPDV8fHMubGVuZ3RoPjcpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ3JvblBhdHRlcm46IGludmFsaWQgY29uZmlndXJhdGlvbiBmb3JtYXQgKCciK3RoaXMucGF0dGVybisiJyksIGV4YWN0bHkgZml2ZSwgc2l4LCBvciBzZXZlbiBzcGFjZSBzZXBhcmF0ZWQgcGFydHMgYXJlIHJlcXVpcmVkLiIpO2lmKHRoaXMubW9kZSE9PSJhdXRvIil7bGV0IGE7c3dpdGNoKHRoaXMubW9kZSl7Y2FzZSI1LXBhcnQiOmE9NTticmVhaztjYXNlIjYtcGFydCI6YT02O2JyZWFrO2Nhc2UiNy1wYXJ0IjphPTc7YnJlYWs7Y2FzZSI1LW9yLTYtcGFydHMiOmE9WzUsNl07YnJlYWs7Y2FzZSI2LW9yLTctcGFydHMiOmE9WzYsN107YnJlYWs7ZGVmYXVsdDphPTB9aWYoIShBcnJheS5pc0FycmF5KGEpP2EuaW5jbHVkZXMoZSk6ZT09PWEpKXtsZXQgcj1BcnJheS5pc0FycmF5KGEpP2Euam9pbigiIG9yICIpOmEudG9TdHJpbmcoKTt0aHJvdyBuZXcgVHlwZUVycm9yKGBDcm9uUGF0dGVybjogbW9kZSAnJHt0aGlzLm1vZGV9JyByZXF1aXJlcyBleGFjdGx5ICR7cn0gcGFydHMsIGJ1dCBwYXR0ZXJuICcke3RoaXMucGF0dGVybn0nIGhhcyAke2V9IHBhcnRzLmApfX1pZihzLmxlbmd0aD09PTUmJnMudW5zaGlmdCgiMCIpLHMubGVuZ3RoPT09NiYmcy5wdXNoKCIqIiksc1szXS50b1VwcGVyQ2FzZSgpPT09IkxXIj8odGhpcy5sYXN0V2Vla2RheT0hMCxzWzNdPSIiKTpzWzNdLnRvVXBwZXJDYXNlKCkuaW5kZXhPZigiTCIpPj0wJiYoc1szXT1zWzNdLnJlcGxhY2UoL0wvZ2ksIiIpLHRoaXMubGFzdERheU9mTW9udGg9ITApLHNbM109PSIqIiYmKHRoaXMuc3RhckRPTT0hMCksc1s2XT09IioiJiYodGhpcy5zdGFyWWVhcj0hMCksc1s0XS5sZW5ndGg+PTMmJihzWzRdPXRoaXMucmVwbGFjZUFscGhhTW9udGhzKHNbNF0pKSxzWzVdLmxlbmd0aD49MyYmKHNbNV09dGhpcy5hbHRlcm5hdGl2ZVdlZWtkYXlzP3RoaXMucmVwbGFjZUFscGhhRGF5c1F1YXJ0eihzWzVdKTp0aGlzLnJlcGxhY2VBbHBoYURheXMoc1s1XSkpLHNbNV0uc3RhcnRzV2l0aCgiKyIpJiYodGhpcy51c2VBbmRMb2dpYz0hMCxzWzVdPXNbNV0uc3Vic3RyaW5nKDEpLHNbNV09PT0iIikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ3JvblBhdHRlcm46IERheS1vZi13ZWVrIGZpZWxkIGNhbm5vdCBiZSBlbXB0eSBhZnRlciAnKycgbW9kaWZpZXIuIik7c3dpdGNoKHNbNV09PSIqIiYmKHRoaXMuc3RhckRPVz0hMCksdGhpcy5wYXR0ZXJuLmluZGV4T2YoIj8iKT49MCYmKHNbMF09c1swXS5yZXBsYWNlKC9cPy9nLCIqIiksc1sxXT1zWzFdLnJlcGxhY2UoL1w/L2csIioiKSxzWzJdPXNbMl0ucmVwbGFjZSgvXD8vZywiKiIpLHNbM109c1szXS5yZXBsYWNlKC9cPy9nLCIqIiksc1s0XT1zWzRdLnJlcGxhY2UoL1w/L2csIioiKSxzWzVdPXNbNV0ucmVwbGFjZSgvXD8vZywiKiIpLHNbNl0mJihzWzZdPXNbNl0ucmVwbGFjZSgvXD8vZywiKiIpKSksdGhpcy5tb2RlKXtjYXNlIjUtcGFydCI6c1swXT0iMCIsc1s2XT0iKiI7YnJlYWs7Y2FzZSI2LXBhcnQiOnNbNl09IioiO2JyZWFrO2Nhc2UiNS1vci02LXBhcnRzIjpzWzZdPSIqIjticmVhaztjYXNlIjYtb3ItNy1wYXJ0cyI6YnJlYWs7Y2FzZSI3LXBhcnQiOmNhc2UiYXV0byI6YnJlYWt9dGhpcy50aHJvd0F0SWxsZWdhbENoYXJhY3RlcnMocyksdGhpcy5wYXJ0VG9BcnJheSgic2Vjb25kIixzWzBdLDAsMSksdGhpcy5wYXJ0VG9BcnJheSgibWludXRlIixzWzFdLDAsMSksdGhpcy5wYXJ0VG9BcnJheSgiaG91ciIsc1syXSwwLDEpLHRoaXMucGFydFRvQXJyYXkoImRheSIsc1szXSwtMSwxKSx0aGlzLnBhcnRUb0FycmF5KCJtb250aCIsc1s0XSwtMSwxKTtsZXQgdD10aGlzLmFsdGVybmF0aXZlV2Vla2RheXM/LTE6MDt0aGlzLnBhcnRUb0FycmF5KCJkYXlPZldlZWsiLHNbNV0sdCw2MyksdGhpcy5wYXJ0VG9BcnJheSgieWVhciIsc1s2XSwwLDEpLCF0aGlzLmFsdGVybmF0aXZlV2Vla2RheXMmJnRoaXMuZGF5T2ZXZWVrWzddJiYodGhpcy5kYXlPZldlZWtbMF09dGhpcy5kYXlPZldlZWtbN10pfXBhcnRUb0FycmF5KHMsZSx0LGEpe2xldCByPXRoaXNbc10sbj1zPT09ImRheSImJnRoaXMubGFzdERheU9mTW9udGgsbz1zPT09ImRheSImJnRoaXMubGFzdFdlZWtkYXk7aWYoZT09PSIiJiYhbiYmIW8pdGhyb3cgbmV3IFR5cGVFcnJvcigiQ3JvblBhdHRlcm46IGNvbmZpZ3VyYXRpb24gZW50cnkgIitzKyIgKCIrZSsiKSBpcyBlbXB0eSwgY2hlY2sgZm9yIHRyYWlsaW5nIHNwYWNlcy4iKTtpZihlPT09IioiKXJldHVybiByLmZpbGwoYSk7bGV0IGw9ZS5zcGxpdCgiLCIpO2lmKGwubGVuZ3RoPjEpZm9yKGxldCBwPTA7cDxsLmxlbmd0aDtwKyspdGhpcy5wYXJ0VG9BcnJheShzLGxbcF0sdCxhKTtlbHNlIGUuaW5kZXhPZigiLSIpIT09LTEmJmUuaW5kZXhPZigiLyIpIT09LTE/dGhpcy5oYW5kbGVSYW5nZVdpdGhTdGVwcGluZyhlLHMsdCxhKTplLmluZGV4T2YoIi0iKSE9PS0xP3RoaXMuaGFuZGxlUmFuZ2UoZSxzLHQsYSk6ZS5pbmRleE9mKCIvIikhPT0tMT90aGlzLmhhbmRsZVN0ZXBwaW5nKGUscyx0LGEpOmUhPT0iIiYmdGhpcy5oYW5kbGVOdW1iZXIoZSxzLHQsYSl9dGhyb3dBdElsbGVnYWxDaGFyYWN0ZXJzKHMpe2ZvcihsZXQgZT0wO2U8cy5sZW5ndGg7ZSsrKWlmKChlPT09Mz8vW14vKjAtOSxcLVd3TGxdKy86ZT09PTU/L1teLyowLTksXC0jTGxdKy86L1teLyowLTksXC1dKy8pLnRlc3Qoc1tlXSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ3JvblBhdHRlcm46IGNvbmZpZ3VyYXRpb24gZW50cnkgIitlKyIgKCIrc1tlXSsiKSBjb250YWlucyBpbGxlZ2FsIGNoYXJhY3RlcnMuIil9aGFuZGxlTnVtYmVyKHMsZSx0LGEpe2xldCByPXRoaXMuZXh0cmFjdE50aChzLGUpLG49cy50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKCJXIik7aWYoZSE9PSJkYXkiJiZuKXRocm93IG5ldyBUeXBlRXJyb3IoIkNyb25QYXR0ZXJuOiBOZWFyZXN0IHdlZWtkYXkgbW9kaWZpZXIgKFcpIG9ubHkgYWxsb3dlZCBpbiBkYXktb2YtbW9udGguIik7biYmKGU9Im5lYXJlc3RXZWVrZGF5cyIpO2xldCBvPXBhcnNlSW50KHJbMF0sMTApK3Q7aWYoaXNOYU4obykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ3JvblBhdHRlcm46ICIrZSsiIGlzIG5vdCBhIG51bWJlcjogJyIrcysiJyIpO3RoaXMuc2V0UGFydChlLG8sclsxXXx8YSl9c2V0UGFydChzLGUsdCl7aWYoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLHMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNyb25QYXR0ZXJuOiBJbnZhbGlkIHBhcnQgc3BlY2lmaWVkOiAiK3MpO2lmKHM9PT0iZGF5T2ZXZWVrIil7aWYoZT09PTcmJihlPTApLGU8MHx8ZT42KXRocm93IG5ldyBSYW5nZUVycm9yKCJDcm9uUGF0dGVybjogSW52YWxpZCB2YWx1ZSBmb3IgZGF5T2ZXZWVrOiAiK2UpO3RoaXMuc2V0TnRoV2Vla2RheU9mTW9udGgoZSx0KTtyZXR1cm59aWYocz09PSJzZWNvbmQifHxzPT09Im1pbnV0ZSIpe2lmKGU8MHx8ZT49NjApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkNyb25QYXR0ZXJuOiBJbnZhbGlkIHZhbHVlIGZvciAiK3MrIjogIitlKX1lbHNlIGlmKHM9PT0iaG91ciIpe2lmKGU8MHx8ZT49MjQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkNyb25QYXR0ZXJuOiBJbnZhbGlkIHZhbHVlIGZvciAiK3MrIjogIitlKX1lbHNlIGlmKHM9PT0iZGF5Inx8cz09PSJuZWFyZXN0V2Vla2RheXMiKXtpZihlPDB8fGU+PTMxKXRocm93IG5ldyBSYW5nZUVycm9yKCJDcm9uUGF0dGVybjogSW52YWxpZCB2YWx1ZSBmb3IgIitzKyI6ICIrZSl9ZWxzZSBpZihzPT09Im1vbnRoIil7aWYoZTwwfHxlPj0xMil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQ3JvblBhdHRlcm46IEludmFsaWQgdmFsdWUgZm9yICIrcysiOiAiK2UpfWVsc2UgaWYocz09PSJ5ZWFyIiYmKGU8MXx8ZT49MWU0KSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQ3JvblBhdHRlcm46IEludmFsaWQgdmFsdWUgZm9yICIrcysiOiAiK2UrIiAoc3VwcG9ydGVkIHJhbmdlOiAxLTk5OTkpIik7dGhpc1tzXVtlXT10fXZhbGlkYXRlTm90TmFOKHMsZSl7aWYoaXNOYU4ocykpdGhyb3cgbmV3IFR5cGVFcnJvcihlKX12YWxpZGF0ZVJhbmdlKHMsZSx0LGEscil7aWYocz5lKXRocm93IG5ldyBUeXBlRXJyb3IoIkNyb25QYXR0ZXJuOiBGcm9tIHZhbHVlIGlzIGxhcmdlciB0aGFuIHRvIHZhbHVlOiAnIityKyInIik7aWYodCE9PXZvaWQgMCl7aWYodD09PTApdGhyb3cgbmV3IFR5cGVFcnJvcigiQ3JvblBhdHRlcm46IFN5bnRheCBlcnJvciwgaWxsZWdhbCBzdGVwcGluZzogMCIpO2lmKHQ+dGhpc1thXS5sZW5ndGgpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ3JvblBhdHRlcm46IFN5bnRheCBlcnJvciwgc3RlcHMgY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiBtYXhpbXVtIHZhbHVlIG9mIHBhcnQgKCIrdGhpc1thXS5sZW5ndGgrIikiKX19aGFuZGxlUmFuZ2VXaXRoU3RlcHBpbmcocyxlLHQsYSl7aWYocy50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKCJXIikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ3JvblBhdHRlcm46IFN5bnRheCBlcnJvciwgVyBpcyBub3QgYWxsb3dlZCBpbiByYW5nZXMgd2l0aCBzdGVwcGluZy4iKTtsZXQgcj10aGlzLmV4dHJhY3ROdGgocyxlKSxuPXJbMF0ubWF0Y2goL14oXGQrKS0oXGQrKVwvKFxkKykkLyk7aWYobj09PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ3JvblBhdHRlcm46IFN5bnRheCBlcnJvciwgaWxsZWdhbCByYW5nZSB3aXRoIHN0ZXBwaW5nOiAnIitzKyInIik7bGV0WyxvLGwscF09bixkPXBhcnNlSW50KG8sMTApK3QsdT1wYXJzZUludChsLDEwKSt0LGM9cGFyc2VJbnQocCwxMCk7dGhpcy52YWxpZGF0ZU5vdE5hTihkLCJDcm9uUGF0dGVybjogU3ludGF4IGVycm9yLCBpbGxlZ2FsIGxvd2VyIHJhbmdlIChOYU4pIiksdGhpcy52YWxpZGF0ZU5vdE5hTih1LCJDcm9uUGF0dGVybjogU3ludGF4IGVycm9yLCBpbGxlZ2FsIHVwcGVyIHJhbmdlIChOYU4pIiksdGhpcy52YWxpZGF0ZU5vdE5hTihjLCJDcm9uUGF0dGVybjogU3ludGF4IGVycm9yLCBpbGxlZ2FsIHN0ZXBwaW5nOiAoTmFOKSIpLHRoaXMudmFsaWRhdGVSYW5nZShkLHUsYyxlLHMpO2ZvcihsZXQgYj1kO2I8PXU7Yis9Yyl0aGlzLnNldFBhcnQoZSxiLHJbMV18fGEpfWV4dHJhY3ROdGgocyxlKXtsZXQgdD1zLGE7aWYodC5pbmNsdWRlcygiIyIpKXtpZihlIT09ImRheU9mV2VlayIpdGhyb3cgbmV3IEVycm9yKCJDcm9uUGF0dGVybjogbnRoICgjKSBvbmx5IGFsbG93ZWQgaW4gZGF5LW9mLXdlZWsgZmllbGQiKTthPXQuc3BsaXQoIiMiKVsxXSx0PXQuc3BsaXQoIiMiKVswXX1lbHNlIGlmKHQudG9VcHBlckNhc2UoKS5lbmRzV2l0aCgiTCIpKXtpZihlIT09ImRheU9mV2VlayIpdGhyb3cgbmV3IEVycm9yKCJDcm9uUGF0dGVybjogTCBtb2RpZmllciBvbmx5IGFsbG93ZWQgaW4gZGF5LW9mLXdlZWsgZmllbGQgKHVzZSBMIGFsb25lIGZvciBkYXktb2YtbW9udGgpIik7YT0iTCIsdD10LnNsaWNlKDAsLTEpfXJldHVyblt0LGFdfWhhbmRsZVJhbmdlKHMsZSx0LGEpe2lmKHMudG9VcHBlckNhc2UoKS5pbmNsdWRlcygiVyIpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNyb25QYXR0ZXJuOiBTeW50YXggZXJyb3IsIFcgaXMgbm90IGFsbG93ZWQgaW4gYSByYW5nZS4iKTtsZXQgcj10aGlzLmV4dHJhY3ROdGgocyxlKSxuPXJbMF0uc3BsaXQoIi0iKTtpZihuLmxlbmd0aCE9PTIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ3JvblBhdHRlcm46IFN5bnRheCBlcnJvciwgaWxsZWdhbCByYW5nZTogJyIrcysiJyIpO2xldCBvPXBhcnNlSW50KG5bMF0sMTApK3QsbD1wYXJzZUludChuWzFdLDEwKSt0O3RoaXMudmFsaWRhdGVOb3ROYU4obywiQ3JvblBhdHRlcm46IFN5bnRheCBlcnJvciwgaWxsZWdhbCBsb3dlciByYW5nZSAoTmFOKSIpLHRoaXMudmFsaWRhdGVOb3ROYU4obCwiQ3JvblBhdHRlcm46IFN5bnRheCBlcnJvciwgaWxsZWdhbCB1cHBlciByYW5nZSAoTmFOKSIpLHRoaXMudmFsaWRhdGVSYW5nZShvLGwsdm9pZCAwLGUscyk7Zm9yKGxldCBwPW87cDw9bDtwKyspdGhpcy5zZXRQYXJ0KGUscCxyWzFdfHxhKX1oYW5kbGVTdGVwcGluZyhzLGUsdCxhKXtpZihzLnRvVXBwZXJDYXNlKCkuaW5jbHVkZXMoIlciKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDcm9uUGF0dGVybjogU3ludGF4IGVycm9yLCBXIGlzIG5vdCBhbGxvd2VkIGluIHBhcnRzIHdpdGggc3RlcHBpbmcuIik7bGV0IHI9dGhpcy5leHRyYWN0TnRoKHMsZSksbj1yWzBdLnNwbGl0KCIvIik7aWYobi5sZW5ndGghPT0yKXRocm93IG5ldyBUeXBlRXJyb3IoIkNyb25QYXR0ZXJuOiBTeW50YXggZXJyb3IsIGlsbGVnYWwgc3RlcHBpbmc6ICciK3MrIiciKTtpZih0aGlzLnNsb3BweVJhbmdlcyluWzBdPT09IiImJihuWzBdPSIqIik7ZWxzZXtpZihuWzBdPT09IiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ3JvblBhdHRlcm46IFN5bnRheCBlcnJvciwgc3RlcHBpbmcgd2l0aCBtaXNzaW5nIHByZWZpeCAoJyIrcysiJykgaXMgbm90IGFsbG93ZWQuIFVzZSB3aWxkY2FyZCAoKi9zdGVwKSBvciByYW5nZSAobWluLW1heC9zdGVwKSBpbnN0ZWFkLiIpO2lmKG5bMF0hPT0iKiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ3JvblBhdHRlcm46IFN5bnRheCBlcnJvciwgc3RlcHBpbmcgd2l0aCBudW1lcmljIHByZWZpeCAoJyIrcysiJykgaXMgbm90IGFsbG93ZWQuIFVzZSB3aWxkY2FyZCAoKi9zdGVwKSBvciByYW5nZSAobWluLW1heC9zdGVwKSBpbnN0ZWFkLiIpfWxldCBvPTA7blswXSE9PSIqIiYmKG89cGFyc2VJbnQoblswXSwxMCkrdCk7bGV0IGw9cGFyc2VJbnQoblsxXSwxMCk7dGhpcy52YWxpZGF0ZU5vdE5hTihsLCJDcm9uUGF0dGVybjogU3ludGF4IGVycm9yLCBpbGxlZ2FsIHN0ZXBwaW5nOiAoTmFOKSIpLHRoaXMudmFsaWRhdGVSYW5nZSgwLHRoaXNbZV0ubGVuZ3RoLTEsbCxlLHMpO2ZvcihsZXQgcD1vO3A8dGhpc1tlXS5sZW5ndGg7cCs9bCl0aGlzLnNldFBhcnQoZSxwLHJbMV18fGEpfXJlcGxhY2VBbHBoYURheXMocyl7cmV0dXJuIHMucmVwbGFjZSgvLXN1bi9naSwiLTciKS5yZXBsYWNlKC9zdW4vZ2ksIjAiKS5yZXBsYWNlKC9tb24vZ2ksIjEiKS5yZXBsYWNlKC90dWUvZ2ksIjIiKS5yZXBsYWNlKC93ZWQvZ2ksIjMiKS5yZXBsYWNlKC90aHUvZ2ksIjQiKS5yZXBsYWNlKC9mcmkvZ2ksIjUiKS5yZXBsYWNlKC9zYXQvZ2ksIjYiKX1yZXBsYWNlQWxwaGFEYXlzUXVhcnR6KHMpe3JldHVybiBzLnJlcGxhY2UoL3N1bi9naSwiMSIpLnJlcGxhY2UoL21vbi9naSwiMiIpLnJlcGxhY2UoL3R1ZS9naSwiMyIpLnJlcGxhY2UoL3dlZC9naSwiNCIpLnJlcGxhY2UoL3RodS9naSwiNSIpLnJlcGxhY2UoL2ZyaS9naSwiNiIpLnJlcGxhY2UoL3NhdC9naSwiNyIpfXJlcGxhY2VBbHBoYU1vbnRocyhzKXtyZXR1cm4gcy5yZXBsYWNlKC9qYW4vZ2ksIjEiKS5yZXBsYWNlKC9mZWIvZ2ksIjIiKS5yZXBsYWNlKC9tYXIvZ2ksIjMiKS5yZXBsYWNlKC9hcHIvZ2ksIjQiKS5yZXBsYWNlKC9tYXkvZ2ksIjUiKS5yZXBsYWNlKC9qdW4vZ2ksIjYiKS5yZXBsYWNlKC9qdWwvZ2ksIjciKS5yZXBsYWNlKC9hdWcvZ2ksIjgiKS5yZXBsYWNlKC9zZXAvZ2ksIjkiKS5yZXBsYWNlKC9vY3QvZ2ksIjEwIikucmVwbGFjZSgvbm92L2dpLCIxMSIpLnJlcGxhY2UoL2RlYy9naSwiMTIiKX1oYW5kbGVOaWNrbmFtZXMocyl7bGV0IGU9cy50cmltKCkudG9Mb3dlckNhc2UoKTtpZihlPT09IkB5ZWFybHkifHxlPT09IkBhbm51YWxseSIpcmV0dXJuIjAgMCAxIDEgKiI7aWYoZT09PSJAbW9udGhseSIpcmV0dXJuIjAgMCAxICogKiI7aWYoZT09PSJAd2Vla2x5IilyZXR1cm4iMCAwICogKiAwIjtpZihlPT09IkBkYWlseSJ8fGU9PT0iQG1pZG5pZ2h0IilyZXR1cm4iMCAwICogKiAqIjtpZihlPT09IkBob3VybHkiKXJldHVybiIwICogKiAqICoiO2lmKGU9PT0iQHJlYm9vdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ3JvblBhdHRlcm46IEByZWJvb3QgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGVudmlyb25tZW50LiBUaGlzIGlzIGFuIGV2ZW50LWJhc2VkIHRyaWdnZXIgdGhhdCByZXF1aXJlcyBzeXN0ZW0gc3RhcnR1cCBkZXRlY3Rpb24uIik7cmV0dXJuIHN9c2V0TnRoV2Vla2RheU9mTW9udGgocyxlKXtpZih0eXBlb2YgZSE9Im51bWJlciImJmUudG9VcHBlckNhc2UoKT09PSJMIil0aGlzLmRheU9mV2Vla1tzXT10aGlzLmRheU9mV2Vla1tzXXwzMjtlbHNlIGlmKGU9PT02Myl0aGlzLmRheU9mV2Vla1tzXT02MztlbHNlIGlmKGU8NiYmZT4wKXRoaXMuZGF5T2ZXZWVrW3NdPXRoaXMuZGF5T2ZXZWVrW3NdfFhkdFtlLTFdO2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcihgQ3JvblBhdHRlcm46IG50aCB3ZWVrZGF5IG91dCBvZiByYW5nZSwgc2hvdWxkIGJlIDEtNSBvciBMLiBWYWx1ZTogJHtlfSwgVHlwZTogJHt0eXBlb2YgZX1gKX19LFh1ZT1bMzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdLGxpPVtbIm1vbnRoIiwieWVhciIsMF0sWyJkYXkiLCJtb250aCIsLTFdLFsiaG91ciIsImRheSIsMF0sWyJtaW51dGUiLCJob3VyIiwwXSxbInNlY29uZCIsIm1pbnV0ZSIsMF1dLEJyPWNsYXNzIEpkdHtzdGF0aWN7aSh0aGlzLCJzIil9dHo7bXM7c2Vjb25kO21pbnV0ZTtob3VyO2RheTttb250aDt5ZWFyO2NvbnN0cnVjdG9yKGUsdCl7aWYodGhpcy50ej10LGUmJmUgaW5zdGFuY2VvZiBEYXRlKWlmKCFpc05hTihlKSl0aGlzLmZyb21EYXRlKGUpO2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ3JvbkRhdGU6IEludmFsaWQgZGF0ZSBwYXNzZWQgdG8gQ3JvbkRhdGUgY29uc3RydWN0b3IiKTtlbHNlIGlmKGU9PW51bGwpdGhpcy5mcm9tRGF0ZShuZXcgRGF0ZSk7ZWxzZSBpZihlJiZ0eXBlb2YgZT09InN0cmluZyIpdGhpcy5mcm9tU3RyaW5nKGUpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIEpkdCl0aGlzLmZyb21Dcm9uRGF0ZShlKTtlbHNlIHRocm93IG5ldyBUeXBlRXJyb3IoIkNyb25EYXRlOiBJbnZhbGlkIHR5cGUgKCIrdHlwZW9mIGUrIikgcGFzc2VkIHRvIENyb25EYXRlIGNvbnN0cnVjdG9yIil9Z2V0TGFzdERheU9mTW9udGgoZSx0KXtyZXR1cm4gdCE9PTE/WHVlW3RdOm5ldyBEYXRlKERhdGUuVVRDKGUsdCsxLDApKS5nZXRVVENEYXRlKCl9Z2V0TGFzdFdlZWtkYXkoZSx0KXtsZXQgYT10aGlzLmdldExhc3REYXlPZk1vbnRoKGUsdCkscj1uZXcgRGF0ZShEYXRlLlVUQyhlLHQsYSkpLmdldFVUQ0RheSgpO3JldHVybiByPT09MD9hLTI6cj09PTY/YS0xOmF9Z2V0TmVhcmVzdFdlZWtkYXkoZSx0LGEpe2xldCByPXRoaXMuZ2V0TGFzdERheU9mTW9udGgoZSx0KTtpZihhPnIpcmV0dXJuLTE7bGV0IG49bmV3IERhdGUoRGF0ZS5VVEMoZSx0LGEpKS5nZXRVVENEYXkoKTtyZXR1cm4gbj09PTA/YT09PXI/YS0yOmErMTpuPT09Nj9hPT09MT9hKzI6YS0xOmF9aXNOdGhXZWVrZGF5T2ZNb250aChlLHQsYSxyKXtsZXQgbj1uZXcgRGF0ZShEYXRlLlVUQyhlLHQsYSkpLmdldFVUQ0RheSgpLG89MDtmb3IobGV0IGw9MTtsPD1hO2wrKyluZXcgRGF0ZShEYXRlLlVUQyhlLHQsbCkpLmdldFVUQ0RheSgpPT09biYmbysrO2lmKHImNjMmJlhkdFtvLTFdJnIpcmV0dXJuITA7aWYociYzMil7bGV0IGw9dGhpcy5nZXRMYXN0RGF5T2ZNb250aChlLHQpO2ZvcihsZXQgcD1hKzE7cDw9bDtwKyspaWYobmV3IERhdGUoRGF0ZS5VVEMoZSx0LHApKS5nZXRVVENEYXkoKT09PW4pcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuITF9ZnJvbURhdGUoZSl7aWYodGhpcy50eiE9PXZvaWQgMClpZih0eXBlb2YgdGhpcy50ej09Im51bWJlciIpdGhpcy5tcz1lLmdldFVUQ01pbGxpc2Vjb25kcygpLHRoaXMuc2Vjb25kPWUuZ2V0VVRDU2Vjb25kcygpLHRoaXMubWludXRlPWUuZ2V0VVRDTWludXRlcygpK3RoaXMudHosdGhpcy5ob3VyPWUuZ2V0VVRDSG91cnMoKSx0aGlzLmRheT1lLmdldFVUQ0RhdGUoKSx0aGlzLm1vbnRoPWUuZ2V0VVRDTW9udGgoKSx0aGlzLnllYXI9ZS5nZXRVVENGdWxsWWVhcigpLHRoaXMuYXBwbHkoKTtlbHNlIHRyeXtsZXQgdD1reShlLHRoaXMudHopO3RoaXMubXM9ZS5nZXRNaWxsaXNlY29uZHMoKSx0aGlzLnNlY29uZD10LnMsdGhpcy5taW51dGU9dC5pLHRoaXMuaG91cj10LmgsdGhpcy5kYXk9dC5kLHRoaXMubW9udGg9dC5tLTEsdGhpcy55ZWFyPXQueX1jYXRjaCh0KXtsZXQgYT10IGluc3RhbmNlb2YgRXJyb3I/dC5tZXNzYWdlOlN0cmluZyh0KTt0aHJvdyBuZXcgVHlwZUVycm9yKGBDcm9uRGF0ZTogRmFpbGVkIHRvIGNvbnZlcnQgZGF0ZSB0byB0aW1lem9uZSAnJHt0aGlzLnR6fScuIFRoaXMgbWF5IGhhcHBlbiB3aXRoIGludmFsaWQgdGltZXpvbmUgbmFtZXMgb3IgZGF0ZXMuIE9yaWdpbmFsIGVycm9yOiAke2F9YCl9ZWxzZSB0aGlzLm1zPWUuZ2V0TWlsbGlzZWNvbmRzKCksdGhpcy5zZWNvbmQ9ZS5nZXRTZWNvbmRzKCksdGhpcy5taW51dGU9ZS5nZXRNaW51dGVzKCksdGhpcy5ob3VyPWUuZ2V0SG91cnMoKSx0aGlzLmRheT1lLmdldERhdGUoKSx0aGlzLm1vbnRoPWUuZ2V0TW9udGgoKSx0aGlzLnllYXI9ZS5nZXRGdWxsWWVhcigpfWZyb21Dcm9uRGF0ZShlKXt0aGlzLnR6PWUudHosdGhpcy55ZWFyPWUueWVhcix0aGlzLm1vbnRoPWUubW9udGgsdGhpcy5kYXk9ZS5kYXksdGhpcy5ob3VyPWUuaG91cix0aGlzLm1pbnV0ZT1lLm1pbnV0ZSx0aGlzLnNlY29uZD1lLnNlY29uZCx0aGlzLm1zPWUubXN9YXBwbHkoKXtpZih0aGlzLm1vbnRoPjExfHx0aGlzLm1vbnRoPDB8fHRoaXMuZGF5Plh1ZVt0aGlzLm1vbnRoXXx8dGhpcy5kYXk8MXx8dGhpcy5ob3VyPjU5fHx0aGlzLm1pbnV0ZT41OXx8dGhpcy5zZWNvbmQ+NTl8fHRoaXMuaG91cjwwfHx0aGlzLm1pbnV0ZTwwfHx0aGlzLnNlY29uZDwwKXtsZXQgZT1uZXcgRGF0ZShEYXRlLlVUQyh0aGlzLnllYXIsdGhpcy5tb250aCx0aGlzLmRheSx0aGlzLmhvdXIsdGhpcy5taW51dGUsdGhpcy5zZWNvbmQsdGhpcy5tcykpO3JldHVybiB0aGlzLm1zPWUuZ2V0VVRDTWlsbGlzZWNvbmRzKCksdGhpcy5zZWNvbmQ9ZS5nZXRVVENTZWNvbmRzKCksdGhpcy5taW51dGU9ZS5nZXRVVENNaW51dGVzKCksdGhpcy5ob3VyPWUuZ2V0VVRDSG91cnMoKSx0aGlzLmRheT1lLmdldFVUQ0RhdGUoKSx0aGlzLm1vbnRoPWUuZ2V0VVRDTW9udGgoKSx0aGlzLnllYXI9ZS5nZXRVVENGdWxsWWVhcigpLCEwfWVsc2UgcmV0dXJuITF9ZnJvbVN0cmluZyhlKXtpZih0eXBlb2YgdGhpcy50ej09Im51bWJlciIpe2xldCB0PVlkdChlKTt0aGlzLm1zPXQuZ2V0VVRDTWlsbGlzZWNvbmRzKCksdGhpcy5zZWNvbmQ9dC5nZXRVVENTZWNvbmRzKCksdGhpcy5taW51dGU9dC5nZXRVVENNaW51dGVzKCksdGhpcy5ob3VyPXQuZ2V0VVRDSG91cnMoKSx0aGlzLmRheT10LmdldFVUQ0RhdGUoKSx0aGlzLm1vbnRoPXQuZ2V0VVRDTW9udGgoKSx0aGlzLnllYXI9dC5nZXRVVENGdWxsWWVhcigpLHRoaXMuYXBwbHkoKX1lbHNlIHJldHVybiB0aGlzLmZyb21EYXRlKFlkdChlLHRoaXMudHopKX1maW5kTmV4dChlLHQsYSxyKXtyZXR1cm4gdGhpcy5fZmluZE1hdGNoKGUsdCxhLHIsMSl9X2ZpbmRNYXRjaChlLHQsYSxyLG4pe2xldCBvPXRoaXNbdF0sbDthLmxhc3REYXlPZk1vbnRoJiYobD10aGlzLmdldExhc3REYXlPZk1vbnRoKHRoaXMueWVhcix0aGlzLm1vbnRoKSk7bGV0IHA9IWEuc3RhckRPVyYmdD09ImRheSI/bmV3IERhdGUoRGF0ZS5VVEModGhpcy55ZWFyLHRoaXMubW9udGgsMSwwLDAsMCwwKSkuZ2V0VVRDRGF5KCk6dm9pZCAwLGQ9dGhpc1t0XStyLHU9bj09PTE/Yz0+YzxhW3RdLmxlbmd0aDpjPT5jPj0wO2ZvcihsZXQgYz1kO3UoYyk7Yys9bil7bGV0IGI9YVt0XVtjXTtpZih0PT09ImRheSImJiFiKXtmb3IobGV0IHY9MDt2PGEubmVhcmVzdFdlZWtkYXlzLmxlbmd0aDt2KyspaWYoYS5uZWFyZXN0V2Vla2RheXNbdl0pe2xldCB4PXRoaXMuZ2V0TmVhcmVzdFdlZWtkYXkodGhpcy55ZWFyLHRoaXMubW9udGgsdi1yKTtpZih4PT09LTEpY29udGludWU7aWYoeD09PWMtcil7Yj0xO2JyZWFrfX19aWYodD09PSJkYXkiJiZhLmxhc3RXZWVrZGF5KXtsZXQgdj10aGlzLmdldExhc3RXZWVrZGF5KHRoaXMueWVhcix0aGlzLm1vbnRoKTtjLXI9PT12JiYoYj0xKX1pZih0PT09ImRheSImJmEubGFzdERheU9mTW9udGgmJmMtcj09bCYmKGI9MSksdD09PSJkYXkiJiYhYS5zdGFyRE9XKXtsZXQgdj1hLmRheU9mV2Vla1socCsoYy1yLTEpKSU3XTtpZih2JiZ2JjYzKXY9dGhpcy5pc050aFdlZWtkYXlPZk1vbnRoKHRoaXMueWVhcix0aGlzLm1vbnRoLGMtcix2KT8xOjA7ZWxzZSBpZih2KXRocm93IG5ldyBFcnJvcihgQ3JvbkRhdGU6IEludmFsaWQgdmFsdWUgZm9yIGRheU9mV2VlayBlbmNvdW50ZXJlZC4gJHt2fWApO2EudXNlQW5kTG9naWM/Yj1iJiZ2OiFlLmRvbUFuZERvdyYmIWEuc3RhckRPTT9iPWJ8fHY6Yj1iJiZ2fWlmKGIpcmV0dXJuIHRoaXNbdF09Yy1yLG8hPT10aGlzW3RdPzI6MX1yZXR1cm4gM31yZWN1cnNlKGUsdCxhKXtpZihhPT09MCYmIWUuc3RhclllYXIpe2lmKHRoaXMueWVhcj49MCYmdGhpcy55ZWFyPGUueWVhci5sZW5ndGgmJmUueWVhclt0aGlzLnllYXJdPT09MCl7bGV0IG49LTE7Zm9yKGxldCBvPXRoaXMueWVhcisxO288ZS55ZWFyLmxlbmd0aCYmbzwxZTQ7bysrKWlmKGUueWVhcltvXT09PTEpe249bzticmVha31pZihuPT09LTEpcmV0dXJuIG51bGw7dGhpcy55ZWFyPW4sdGhpcy5tb250aD0wLHRoaXMuZGF5PTEsdGhpcy5ob3VyPTAsdGhpcy5taW51dGU9MCx0aGlzLnNlY29uZD0wLHRoaXMubXM9MH1pZih0aGlzLnllYXI+PTFlNClyZXR1cm4gbnVsbH1sZXQgcj10aGlzLmZpbmROZXh0KHQsbGlbYV1bMF0sZSxsaVthXVsyXSk7aWYocj4xKXtsZXQgbj1hKzE7Zm9yKDtuPGxpLmxlbmd0aDspdGhpc1tsaVtuXVswXV09LWxpW25dWzJdLG4rKztpZihyPT09Myl7aWYodGhpc1tsaVthXVsxXV0rKyx0aGlzW2xpW2FdWzBdXT0tbGlbYV1bMl0sdGhpcy5hcHBseSgpLGE9PT0wJiYhZS5zdGFyWWVhcil7Zm9yKDt0aGlzLnllYXI+PTAmJnRoaXMueWVhcjxlLnllYXIubGVuZ3RoJiZlLnllYXJbdGhpcy55ZWFyXT09PTAmJnRoaXMueWVhcjwxZTQ7KXRoaXMueWVhcisrO2lmKHRoaXMueWVhcj49MWU0fHx0aGlzLnllYXI+PWUueWVhci5sZW5ndGgpcmV0dXJuIG51bGx9cmV0dXJuIHRoaXMucmVjdXJzZShlLHQsMCl9ZWxzZSBpZih0aGlzLmFwcGx5KCkpcmV0dXJuIHRoaXMucmVjdXJzZShlLHQsYS0xKX1yZXR1cm4gYSs9MSxhPj1saS5sZW5ndGg/dGhpczooZS5zdGFyWWVhcj90aGlzLnllYXI+PTNlMzp0aGlzLnllYXI+PTFlNCk/bnVsbDp0aGlzLnJlY3Vyc2UoZSx0LGEpfWluY3JlbWVudChlLHQsYSl7cmV0dXJuIHRoaXMuc2Vjb25kKz10LmludGVydmFsIT09dm9pZCAwJiZ0LmludGVydmFsPjEmJmE/dC5pbnRlcnZhbDoxLHRoaXMubXM9MCx0aGlzLmFwcGx5KCksdGhpcy5yZWN1cnNlKGUsdCwwKX1kZWNyZW1lbnQoZSx0KXtyZXR1cm4gdGhpcy5zZWNvbmQtPXQuaW50ZXJ2YWwhPT12b2lkIDAmJnQuaW50ZXJ2YWw+MT90LmludGVydmFsOjEsdGhpcy5tcz0wLHRoaXMuYXBwbHkoKSx0aGlzLnJlY3Vyc2VCYWNrd2FyZChlLHQsMCwwKX1yZWN1cnNlQmFja3dhcmQoZSx0LGEscj0wKXtpZihyPjFlNClyZXR1cm4gbnVsbDtpZihhPT09MCYmIWUuc3RhclllYXIpe2lmKHRoaXMueWVhcj49MCYmdGhpcy55ZWFyPGUueWVhci5sZW5ndGgmJmUueWVhclt0aGlzLnllYXJdPT09MCl7bGV0IG89LTE7Zm9yKGxldCBsPXRoaXMueWVhci0xO2w+PTA7bC0tKWlmKGUueWVhcltsXT09PTEpe289bDticmVha31pZihvPT09LTEpcmV0dXJuIG51bGw7dGhpcy55ZWFyPW8sdGhpcy5tb250aD0xMSx0aGlzLmRheT0zMSx0aGlzLmhvdXI9MjMsdGhpcy5taW51dGU9NTksdGhpcy5zZWNvbmQ9NTksdGhpcy5tcz0wfWlmKHRoaXMueWVhcjwwKXJldHVybiBudWxsfWxldCBuPXRoaXMuZmluZFByZXZpb3VzKHQsbGlbYV1bMF0sZSxsaVthXVsyXSk7aWYobj4xKXtsZXQgbz1hKzE7Zm9yKDtvPGxpLmxlbmd0aDspe2xldCBsPWxpW29dWzBdLHA9bGlbb11bMl0sZD10aGlzLmdldE1heFBhdHRlcm5WYWx1ZShsLGUscCk7dGhpc1tsXT1kLG8rK31pZihuPT09Myl7aWYodGhpc1tsaVthXVsxXV0tLSxhPT09MCl7bGV0IHU9dGhpcy5nZXRMYXN0RGF5T2ZNb250aCh0aGlzLnllYXIsdGhpcy5tb250aCk7dGhpcy5kYXk+dSYmKHRoaXMuZGF5PXUpfWlmKGE9PT0xKWlmKHRoaXMuZGF5PD0wKXRoaXMuZGF5PTE7ZWxzZXtsZXQgdT10aGlzLnllYXIsYz10aGlzLm1vbnRoO2Zvcig7YzwwOyljKz0xMix1LS07Zm9yKDtjPjExOyljLT0xMix1Kys7bGV0IGI9YyE9PTE/WHVlW2NdOm5ldyBEYXRlKERhdGUuVVRDKHUsYysxLDApKS5nZXRVVENEYXRlKCk7dGhpcy5kYXk+YiYmKHRoaXMuZGF5PWIpfXRoaXMuYXBwbHkoKTtsZXQgbD1saVthXVswXSxwPWxpW2FdWzJdLGQ9dGhpcy5nZXRNYXhQYXR0ZXJuVmFsdWUobCxlLHApO2lmKGw9PT0iZGF5Iil7bGV0IHU9dGhpcy5nZXRMYXN0RGF5T2ZNb250aCh0aGlzLnllYXIsdGhpcy5tb250aCk7dGhpc1tsXT1NYXRoLm1pbihkLHUpfWVsc2UgdGhpc1tsXT1kO2lmKHRoaXMuYXBwbHkoKSxhPT09MCl7bGV0IHU9bGlbMV1bMl0sYz10aGlzLmdldE1heFBhdHRlcm5WYWx1ZSgiZGF5IixlLHUpLGI9dGhpcy5nZXRMYXN0RGF5T2ZNb250aCh0aGlzLnllYXIsdGhpcy5tb250aCksdj1NYXRoLm1pbihjLGIpO3YhPT10aGlzLmRheSYmKHRoaXMuZGF5PXYsdGhpcy5ob3VyPXRoaXMuZ2V0TWF4UGF0dGVyblZhbHVlKCJob3VyIixlLGxpWzJdWzJdKSx0aGlzLm1pbnV0ZT10aGlzLmdldE1heFBhdHRlcm5WYWx1ZSgibWludXRlIixlLGxpWzNdWzJdKSx0aGlzLnNlY29uZD10aGlzLmdldE1heFBhdHRlcm5WYWx1ZSgic2Vjb25kIixlLGxpWzRdWzJdKSl9aWYoYT09PTAmJiFlLnN0YXJZZWFyKXtmb3IoO3RoaXMueWVhcj49MCYmdGhpcy55ZWFyPGUueWVhci5sZW5ndGgmJmUueWVhclt0aGlzLnllYXJdPT09MDspdGhpcy55ZWFyLS07aWYodGhpcy55ZWFyPDApcmV0dXJuIG51bGx9cmV0dXJuIHRoaXMucmVjdXJzZUJhY2t3YXJkKGUsdCwwLHIrMSl9ZWxzZSBpZih0aGlzLmFwcGx5KCkpcmV0dXJuIHRoaXMucmVjdXJzZUJhY2t3YXJkKGUsdCxhLTEscisxKX1yZXR1cm4gYSs9MSxhPj1saS5sZW5ndGg/dGhpczp0aGlzLnllYXI8MD9udWxsOnRoaXMucmVjdXJzZUJhY2t3YXJkKGUsdCxhLHIrMSl9Z2V0TWF4UGF0dGVyblZhbHVlKGUsdCxhKXtpZihlPT09ImRheSImJnQubGFzdERheU9mTW9udGgpcmV0dXJuIHRoaXMuZ2V0TGFzdERheU9mTW9udGgodGhpcy55ZWFyLHRoaXMubW9udGgpO2lmKGU9PT0iZGF5IiYmIXQuc3RhckRPVylyZXR1cm4gdGhpcy5nZXRMYXN0RGF5T2ZNb250aCh0aGlzLnllYXIsdGhpcy5tb250aCk7Zm9yKGxldCByPXRbZV0ubGVuZ3RoLTE7cj49MDtyLS0paWYodFtlXVtyXSlyZXR1cm4gci1hO3JldHVybiB0W2VdLmxlbmd0aC0xLWF9ZmluZFByZXZpb3VzKGUsdCxhLHIpe3JldHVybiB0aGlzLl9maW5kTWF0Y2goZSx0LGEsciwtMSl9Z2V0RGF0ZShlKXtyZXR1cm4gZXx8dGhpcy50ej09PXZvaWQgMD9uZXcgRGF0ZSh0aGlzLnllYXIsdGhpcy5tb250aCx0aGlzLmRheSx0aGlzLmhvdXIsdGhpcy5taW51dGUsdGhpcy5zZWNvbmQsdGhpcy5tcyk6dHlwZW9mIHRoaXMudHo9PSJudW1iZXIiP25ldyBEYXRlKERhdGUuVVRDKHRoaXMueWVhcix0aGlzLm1vbnRoLHRoaXMuZGF5LHRoaXMuaG91cix0aGlzLm1pbnV0ZS10aGlzLnR6LHRoaXMuc2Vjb25kLHRoaXMubXMpKTpaZHQoWnVlKHRoaXMueWVhcix0aGlzLm1vbnRoKzEsdGhpcy5kYXksdGhpcy5ob3VyLHRoaXMubWludXRlLHRoaXMuc2Vjb25kLHRoaXMudHopLCExKX1nZXRUaW1lKCl7cmV0dXJuIHRoaXMuZ2V0RGF0ZSghMSkuZ2V0VGltZSgpfW1hdGNoKGUsdCl7aWYoIWUuc3RhclllYXImJih0aGlzLnllYXI8MHx8dGhpcy55ZWFyPj1lLnllYXIubGVuZ3RofHxlLnllYXJbdGhpcy55ZWFyXT09PTApKXJldHVybiExO2ZvcihsZXQgYT0wO2E8bGkubGVuZ3RoO2ErKyl7bGV0IHI9bGlbYV1bMF0sbj1saVthXVsyXSxvPXRoaXNbcl07aWYobytuPDB8fG8rbj49ZVtyXS5sZW5ndGgpcmV0dXJuITE7bGV0IGw9ZVtyXVtvK25dO2lmKHI9PT0iZGF5Iil7aWYoIWwpe2ZvcihsZXQgcD0wO3A8ZS5uZWFyZXN0V2Vla2RheXMubGVuZ3RoO3ArKylpZihlLm5lYXJlc3RXZWVrZGF5c1twXSl7bGV0IGQ9dGhpcy5nZXROZWFyZXN0V2Vla2RheSh0aGlzLnllYXIsdGhpcy5tb250aCxwLW4pO2lmKGQhPT0tMSYmZD09PW8pe2w9MTticmVha319fWlmKGUubGFzdFdlZWtkYXkpe2xldCBwPXRoaXMuZ2V0TGFzdFdlZWtkYXkodGhpcy55ZWFyLHRoaXMubW9udGgpO289PT1wJiYobD0xKX1pZihlLmxhc3REYXlPZk1vbnRoKXtsZXQgcD10aGlzLmdldExhc3REYXlPZk1vbnRoKHRoaXMueWVhcix0aGlzLm1vbnRoKTtvPT09cCYmKGw9MSl9aWYoIWUuc3RhckRPVyl7bGV0IHA9bmV3IERhdGUoRGF0ZS5VVEModGhpcy55ZWFyLHRoaXMubW9udGgsMSwwLDAsMCwwKSkuZ2V0VVRDRGF5KCksZD1lLmRheU9mV2Vla1socCsoby0xKSklN107ZCYmZCY2MyYmKGQ9dGhpcy5pc050aFdlZWtkYXlPZk1vbnRoKHRoaXMueWVhcix0aGlzLm1vbnRoLG8sZCk/MTowKSxlLnVzZUFuZExvZ2ljP2w9bCYmZDohdC5kb21BbmREb3cmJiFlLnN0YXJET00/bD1sfHxkOmw9bCYmZH19aWYoIWwpcmV0dXJuITF9cmV0dXJuITB9fTtpKHZMYSwiUiIpO2koU3ksInAiKTtpKHhMYSwiXyIpO2koeUxhLCJ4Iik7UWR0PTMwKjFlMyxGNz1bXSxlMHQ9Y2xhc3N7c3RhdGlje2kodGhpcywiRSIpfW5hbWU7b3B0aW9ucztfc3RhdGVzO2ZuO2dldFR6KCl7cmV0dXJuIHRoaXMub3B0aW9ucy50aW1lem9uZXx8dGhpcy5vcHRpb25zLnV0Y09mZnNldH1hcHBseURheU9mZnNldChzKXtpZih0aGlzLm9wdGlvbnMuZGF5T2Zmc2V0IT09dm9pZCAwJiZ0aGlzLm9wdGlvbnMuZGF5T2Zmc2V0IT09MCl7bGV0IGU9dGhpcy5vcHRpb25zLmRheU9mZnNldCoyNCo2MCo2MCoxZTM7cmV0dXJuIG5ldyBEYXRlKHMuZ2V0VGltZSgpK2UpfXJldHVybiBzfWNvbnN0cnVjdG9yKHMsZSx0KXtsZXQgYSxyO2lmKFN5KGUpKXI9ZTtlbHNlIGlmKHR5cGVvZiBlPT0ib2JqZWN0IilhPWU7ZWxzZSBpZihlIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiQ3JvbjogSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgZm9yIG9wdGlvbnNJbi4gU2hvdWxkIGJlIG9uZSBvZiBmdW5jdGlvbiwgb3Igb2JqZWN0IChvcHRpb25zKS4iKTtpZihTeSh0KSlyPXQ7ZWxzZSBpZih0eXBlb2YgdD09Im9iamVjdCIpYT10O2Vsc2UgaWYodCE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoIkNyb246IEludmFsaWQgYXJndW1lbnQgcGFzc2VkIGZvciBmdW5jSW4uIFNob3VsZCBiZSBvbmUgb2YgZnVuY3Rpb24sIG9yIG9iamVjdCAob3B0aW9ucykuIik7aWYodGhpcy5uYW1lPWE/Lm5hbWUsdGhpcy5vcHRpb25zPXZMYShhKSx0aGlzLl9zdGF0ZXM9e2tpbGw6ITEsYmxvY2tpbmc6ITEscHJldmlvdXNSdW46dm9pZCAwLGN1cnJlbnRSdW46dm9pZCAwLG9uY2U6dm9pZCAwLGN1cnJlbnRUaW1lb3V0OnZvaWQgMCxtYXhSdW5zOmE/YS5tYXhSdW5zOnZvaWQgMCxwYXVzZWQ6YT9hLnBhdXNlZDohMSxwYXR0ZXJuOm5ldyBEZWUoIiogKiAqICogKiIsdm9pZCAwLHttb2RlOiJhdXRvIn0pfSxzJiYocyBpbnN0YW5jZW9mIERhdGV8fHR5cGVvZiBzPT0ic3RyaW5nIiYmcy5pbmRleE9mKCI6Iik+MCk/dGhpcy5fc3RhdGVzLm9uY2U9bmV3IEJyKHMsdGhpcy5nZXRUeigpKTp0aGlzLl9zdGF0ZXMucGF0dGVybj1uZXcgRGVlKHMsdGhpcy5vcHRpb25zLnRpbWV6b25lLHttb2RlOnRoaXMub3B0aW9ucy5tb2RlLGFsdGVybmF0aXZlV2Vla2RheXM6dGhpcy5vcHRpb25zLmFsdGVybmF0aXZlV2Vla2RheXMsc2xvcHB5UmFuZ2VzOnRoaXMub3B0aW9ucy5zbG9wcHlSYW5nZXN9KSx0aGlzLm5hbWUpe2lmKEY3LmZpbmQobj0+bi5uYW1lPT09dGhpcy5uYW1lKSl0aHJvdyBuZXcgRXJyb3IoIkNyb246IFRyaWVkIHRvIGluaXRpYWxpemUgbmV3IG5hbWVkIGpvYiAnIit0aGlzLm5hbWUrIicsIGJ1dCBuYW1lIGFscmVhZHkgdGFrZW4uIik7RjcucHVzaCh0aGlzKX1yZXR1cm4gciE9PXZvaWQgMCYmeExhKHIpJiYodGhpcy5mbj1yLHRoaXMuc2NoZWR1bGUoKSksdGhpc31uZXh0UnVuKHMpe2xldCBlPXRoaXMuX25leHQocyk7cmV0dXJuIGU/dGhpcy5hcHBseURheU9mZnNldChlLmdldERhdGUoITEpKTpudWxsfW5leHRSdW5zKHMsZSl7dGhpcy5fc3RhdGVzLm1heFJ1bnMhPT12b2lkIDAmJnM+dGhpcy5fc3RhdGVzLm1heFJ1bnMmJihzPXRoaXMuX3N0YXRlcy5tYXhSdW5zKTtsZXQgdD1lfHx0aGlzLl9zdGF0ZXMuY3VycmVudFJ1bnx8dm9pZCAwO3JldHVybiB0aGlzLl9lbnVtZXJhdGVSdW5zKHMsdCwibmV4dCIpfXByZXZpb3VzUnVucyhzLGUpe3JldHVybiB0aGlzLl9lbnVtZXJhdGVSdW5zKHMsZXx8dm9pZCAwLCJwcmV2aW91cyIpfV9lbnVtZXJhdGVSdW5zKHMsZSx0KXtsZXQgYT1bXSxyPWU/bmV3IEJyKGUsdGhpcy5nZXRUeigpKTpudWxsLG49dD09PSJuZXh0Ij90aGlzLl9uZXh0OnRoaXMuX3ByZXZpb3VzO2Zvcig7cy0tOyl7bGV0IG89bi5jYWxsKHRoaXMscik7aWYoIW8pYnJlYWs7bGV0IGw9by5nZXREYXRlKCExKTthLnB1c2godGhpcy5hcHBseURheU9mZnNldChsKSkscj1vfXJldHVybiBhfW1hdGNoKHMpe2lmKHRoaXMuX3N0YXRlcy5vbmNlKXtsZXQgdD1uZXcgQnIocyx0aGlzLmdldFR6KCkpO3QubXM9MDtsZXQgYT1uZXcgQnIodGhpcy5fc3RhdGVzLm9uY2UsdGhpcy5nZXRUeigpKTtyZXR1cm4gYS5tcz0wLHQuZ2V0VGltZSgpPT09YS5nZXRUaW1lKCl9bGV0IGU9bmV3IEJyKHMsdGhpcy5nZXRUeigpKTtyZXR1cm4gZS5tcz0wLGUubWF0Y2godGhpcy5fc3RhdGVzLnBhdHRlcm4sdGhpcy5vcHRpb25zKX1nZXRQYXR0ZXJuKCl7aWYoIXRoaXMuX3N0YXRlcy5vbmNlKXJldHVybiB0aGlzLl9zdGF0ZXMucGF0dGVybj90aGlzLl9zdGF0ZXMucGF0dGVybi5wYXR0ZXJuOnZvaWQgMH1nZXRPbmNlKCl7cmV0dXJuIHRoaXMuX3N0YXRlcy5vbmNlP3RoaXMuX3N0YXRlcy5vbmNlLmdldERhdGUoKTpudWxsfWlzUnVubmluZygpe2xldCBzPXRoaXMubmV4dFJ1bih0aGlzLl9zdGF0ZXMuY3VycmVudFJ1biksZT0hdGhpcy5fc3RhdGVzLnBhdXNlZCx0PXRoaXMuZm4hPT12b2lkIDAsYT0hdGhpcy5fc3RhdGVzLmtpbGw7cmV0dXJuIGUmJnQmJmEmJnMhPT1udWxsfWlzU3RvcHBlZCgpe3JldHVybiB0aGlzLl9zdGF0ZXMua2lsbH1pc0J1c3koKXtyZXR1cm4gdGhpcy5fc3RhdGVzLmJsb2NraW5nfWN1cnJlbnRSdW4oKXtyZXR1cm4gdGhpcy5fc3RhdGVzLmN1cnJlbnRSdW4/dGhpcy5fc3RhdGVzLmN1cnJlbnRSdW4uZ2V0RGF0ZSgpOm51bGx9cHJldmlvdXNSdW4oKXtyZXR1cm4gdGhpcy5fc3RhdGVzLnByZXZpb3VzUnVuP3RoaXMuX3N0YXRlcy5wcmV2aW91c1J1bi5nZXREYXRlKCk6bnVsbH1tc1RvTmV4dChzKXtsZXQgZT10aGlzLl9uZXh0KHMpO3JldHVybiBlP3MgaW5zdGFuY2VvZiBCcnx8cyBpbnN0YW5jZW9mIERhdGU/ZS5nZXRUaW1lKCktcy5nZXRUaW1lKCk6ZS5nZXRUaW1lKCktbmV3IEJyKHMpLmdldFRpbWUoKTpudWxsfXN0b3AoKXt0aGlzLl9zdGF0ZXMua2lsbD0hMCx0aGlzLl9zdGF0ZXMuY3VycmVudFRpbWVvdXQmJmNsZWFyVGltZW91dCh0aGlzLl9zdGF0ZXMuY3VycmVudFRpbWVvdXQpO2xldCBzPUY3LmluZGV4T2YodGhpcyk7cz49MCYmRjcuc3BsaWNlKHMsMSl9cGF1c2UoKXtyZXR1cm4gdGhpcy5fc3RhdGVzLnBhdXNlZD0hMCwhdGhpcy5fc3RhdGVzLmtpbGx9cmVzdW1lKCl7cmV0dXJuIHRoaXMuX3N0YXRlcy5wYXVzZWQ9ITEsIXRoaXMuX3N0YXRlcy5raWxsfXNjaGVkdWxlKHMpe2lmKHMmJnRoaXMuZm4pdGhyb3cgbmV3IEVycm9yKCJDcm9uOiBJdCBpcyBub3QgYWxsb3dlZCB0byBzY2hlZHVsZSB0d28gZnVuY3Rpb25zIHVzaW5nIHRoZSBzYW1lIENyb25lciBpbnN0YW5jZS4iKTtzJiYodGhpcy5mbj1zKTtsZXQgZT10aGlzLm1zVG9OZXh0KCksdD10aGlzLm5leHRSdW4odGhpcy5fc3RhdGVzLmN1cnJlbnRSdW4pO3JldHVybiBlPT1udWxsfHxpc05hTihlKXx8dD09PW51bGw/dGhpczooZT5RZHQmJihlPVFkdCksdGhpcy5fc3RhdGVzLmN1cnJlbnRUaW1lb3V0PXNldFRpbWVvdXQoKCk9PnRoaXMuX2NoZWNrVHJpZ2dlcih0KSxlKSx0aGlzLl9zdGF0ZXMuY3VycmVudFRpbWVvdXQmJnRoaXMub3B0aW9ucy51bnJlZiYmeUxhKHRoaXMuX3N0YXRlcy5jdXJyZW50VGltZW91dCksdGhpcyl9YXN5bmMgX3RyaWdnZXIocyl7dGhpcy5fc3RhdGVzLmJsb2NraW5nPSEwLHRoaXMuX3N0YXRlcy5jdXJyZW50UnVuPW5ldyBCcih2b2lkIDAsdGhpcy5nZXRUeigpKTt0cnl7aWYodGhpcy5vcHRpb25zLmNhdGNoKXRyeXt0aGlzLmZuIT09dm9pZCAwJiZhd2FpdCB0aGlzLmZuKHRoaXMsdGhpcy5vcHRpb25zLmNvbnRleHQpfWNhdGNoKGUpe2lmKFN5KHRoaXMub3B0aW9ucy5jYXRjaCkpdHJ5e3RoaXMub3B0aW9ucy5jYXRjaChlLHRoaXMpfWNhdGNoe319ZWxzZSB0aGlzLmZuIT09dm9pZCAwJiZhd2FpdCB0aGlzLmZuKHRoaXMsdGhpcy5vcHRpb25zLmNvbnRleHQpfWZpbmFsbHl7dGhpcy5fc3RhdGVzLnByZXZpb3VzUnVuPW5ldyBCcihzLHRoaXMuZ2V0VHooKSksdGhpcy5fc3RhdGVzLmJsb2NraW5nPSExfX1hc3luYyB0cmlnZ2VyKCl7YXdhaXQgdGhpcy5fdHJpZ2dlcigpfXJ1bnNMZWZ0KCl7cmV0dXJuIHRoaXMuX3N0YXRlcy5tYXhSdW5zfV9jaGVja1RyaWdnZXIocyl7bGV0IGU9bmV3IERhdGUsdD0hdGhpcy5fc3RhdGVzLnBhdXNlZCYmZS5nZXRUaW1lKCk+PXMuZ2V0VGltZSgpLGE9dGhpcy5fc3RhdGVzLmJsb2NraW5nJiZ0aGlzLm9wdGlvbnMucHJvdGVjdDt0JiYhYT8odGhpcy5fc3RhdGVzLm1heFJ1bnMhPT12b2lkIDAmJnRoaXMuX3N0YXRlcy5tYXhSdW5zLS0sdGhpcy5fdHJpZ2dlcigpKTp0JiZhJiZTeSh0aGlzLm9wdGlvbnMucHJvdGVjdCkmJnNldFRpbWVvdXQoKCk9PnRoaXMub3B0aW9ucy5wcm90ZWN0KHRoaXMpLDApLHRoaXMuc2NoZWR1bGUoKX1fbmV4dChzKXtsZXQgZT0hIShzfHx0aGlzLl9zdGF0ZXMuY3VycmVudFJ1biksdD0hMTshcyYmdGhpcy5vcHRpb25zLnN0YXJ0QXQmJnRoaXMub3B0aW9ucy5pbnRlcnZhbCYmKFtzLGVdPXRoaXMuX2NhbGN1bGF0ZVByZXZpb3VzUnVuKHMsZSksdD0hcykscz1uZXcgQnIocyx0aGlzLmdldFR6KCkpLHRoaXMub3B0aW9ucy5zdGFydEF0JiZzJiZzLmdldFRpbWUoKTx0aGlzLm9wdGlvbnMuc3RhcnRBdC5nZXRUaW1lKCkmJihzPXRoaXMub3B0aW9ucy5zdGFydEF0KTtsZXQgYT10aGlzLl9zdGF0ZXMub25jZXx8bmV3IEJyKHMsdGhpcy5nZXRUeigpKTtyZXR1cm4hdCYmYSE9PXRoaXMuX3N0YXRlcy5vbmNlJiYoYT1hLmluY3JlbWVudCh0aGlzLl9zdGF0ZXMucGF0dGVybix0aGlzLm9wdGlvbnMsZSkpLHRoaXMuX3N0YXRlcy5vbmNlJiZ0aGlzLl9zdGF0ZXMub25jZS5nZXRUaW1lKCk8PXMuZ2V0VGltZSgpfHxhPT09bnVsbHx8dGhpcy5fc3RhdGVzLm1heFJ1bnMhPT12b2lkIDAmJnRoaXMuX3N0YXRlcy5tYXhSdW5zPD0wfHx0aGlzLl9zdGF0ZXMua2lsbHx8dGhpcy5vcHRpb25zLnN0b3BBdCYmYS5nZXRUaW1lKCk+PXRoaXMub3B0aW9ucy5zdG9wQXQuZ2V0VGltZSgpP251bGw6YX1fcHJldmlvdXMocyl7bGV0IGU9bmV3IEJyKHMsdGhpcy5nZXRUeigpKTt0aGlzLm9wdGlvbnMuc3RvcEF0JiZlLmdldFRpbWUoKT50aGlzLm9wdGlvbnMuc3RvcEF0LmdldFRpbWUoKSYmKGU9dGhpcy5vcHRpb25zLnN0b3BBdCk7bGV0IHQ9bmV3IEJyKGUsdGhpcy5nZXRUeigpKTtyZXR1cm4gdGhpcy5fc3RhdGVzLm9uY2U/dGhpcy5fc3RhdGVzLm9uY2UuZ2V0VGltZSgpPGUuZ2V0VGltZSgpP3RoaXMuX3N0YXRlcy5vbmNlOm51bGw6KHQ9dC5kZWNyZW1lbnQodGhpcy5fc3RhdGVzLnBhdHRlcm4sdGhpcy5vcHRpb25zKSx0PT09bnVsbHx8dGhpcy5vcHRpb25zLnN0YXJ0QXQmJnQuZ2V0VGltZSgpPHRoaXMub3B0aW9ucy5zdGFydEF0LmdldFRpbWUoKT9udWxsOnQpfV9jYWxjdWxhdGVQcmV2aW91c1J1bihzLGUpe2xldCB0PW5ldyBCcih2b2lkIDAsdGhpcy5nZXRUeigpKSxhPXM7aWYodGhpcy5vcHRpb25zLnN0YXJ0QXQuZ2V0VGltZSgpPD10LmdldFRpbWUoKSl7YT10aGlzLm9wdGlvbnMuc3RhcnRBdDtsZXQgcj1hLmdldFRpbWUoKSt0aGlzLm9wdGlvbnMuaW50ZXJ2YWwqMWUzO2Zvcig7cjw9dC5nZXRUaW1lKCk7KWE9bmV3IEJyKGEsdGhpcy5nZXRUeigpKS5pbmNyZW1lbnQodGhpcy5fc3RhdGVzLnBhdHRlcm4sdGhpcy5vcHRpb25zLCEwKSxyPWEuZ2V0VGltZSgpK3RoaXMub3B0aW9ucy5pbnRlcnZhbCoxZTM7ZT0hMH1yZXR1cm4gYT09PW51bGwmJihhPXZvaWQgMCksW2EsZV19fX0pO3ZhciBFZWUsTXksd0xhLHU4cyxYMixQZWUsV28sTmwsQjcsUXVlLGNwLEg3LEllZSxBZWUsTmVlLFJlZSxHNCxxNyxMZWUsYTB0LEp1ZSxlcGUsczB0LHRwZSx3YT1nKCgpPT57RWVlPTcsTXk9MzY1LjI0MjUsd0xhPU1hdGgucG93KDEwLDgpKjI0KjYwKjYwKjFlMyx1OHM9LXdMYSxYMj02MDQ4ZTUsUGVlPTg2NGU1LFdvPTZlNCxObD0zNmU1LEI3PTFlMyxRdWU9NTI1NjAwLGNwPTQzMjAwLEg3PTE0NDAsSWVlPTYwLEFlZT0zLE5lZT0xMixSZWU9NCxHND0zNjAwLHE3PTYwLExlZT1HNCoyNCxhMHQ9TGVlKjcsSnVlPUxlZSozNjUuMjQyNSxlcGU9SnVlLzEyLHMwdD1lcGUqMyx0cGU9U3ltYm9sLmZvcigiY29uc3RydWN0RGF0ZUZyb20iKX0pO2Z1bmN0aW9uIHR0KHMsZSl7cmV0dXJuIHR5cGVvZiBzPT0iZnVuY3Rpb24iP3MoZSk6cyYmdHlwZW9mIHM9PSJvYmplY3QiJiZ0cGUgaW4gcz9zW3RwZV0oZSk6cyBpbnN0YW5jZW9mIERhdGU/bmV3IHMuY29uc3RydWN0b3IoZSk6bmV3IERhdGUoZSl9dmFyIGY4cyxHdD1nKCgpPT57d2EoKTtpKHR0LCJjb25zdHJ1Y3RGcm9tIik7ZjhzPXR0fSk7ZnVuY3Rpb24gQWUocyxlKXtyZXR1cm4gdHQoZXx8cyxzKX12YXIgdjhzLGF0PWcoKCk9PntHdCgpO2koQWUsInRvRGF0ZSIpO3Y4cz1BZX0pO2Z1bmN0aW9uIEhyKHMsZSx0KXtsZXQgYT1BZShzLHQ/LmluKTtyZXR1cm4gaXNOYU4oZSk/dHQodD8uaW58fHMsTmFOKTooZSYmYS5zZXREYXRlKGEuZ2V0RGF0ZSgpK2UpLGEpfXZhciBTOHMsUTI9ZygoKT0+e0d0KCk7YXQoKTtpKEhyLCJhZGREYXlzIik7UzhzPUhyfSk7ZnVuY3Rpb24gSjIocyxlLHQpe2xldCBhPUFlKHMsdD8uaW4pO2lmKGlzTmFOKGUpKXJldHVybiB0dCh0Py5pbnx8cyxOYU4pO2lmKCFlKXJldHVybiBhO2xldCByPWEuZ2V0RGF0ZSgpLG49dHQodD8uaW58fHMsYS5nZXRUaW1lKCkpO24uc2V0TW9udGgoYS5nZXRNb250aCgpK2UrMSwwKTtsZXQgbz1uLmdldERhdGUoKTtyZXR1cm4gcj49bz9uOihhLnNldEZ1bGxZZWFyKG4uZ2V0RnVsbFllYXIoKSxuLmdldE1vbnRoKCksciksYSl9dmFyIFQ4cyxqNz1nKCgpPT57R3QoKTthdCgpO2koSjIsImFkZE1vbnRocyIpO1Q4cz1KMn0pO2Z1bmN0aW9uIGRwKHMsZSx0KXtsZXR7eWVhcnM6YT0wLG1vbnRoczpyPTAsd2Vla3M6bj0wLGRheXM6bz0wLGhvdXJzOmw9MCxtaW51dGVzOnA9MCxzZWNvbmRzOmQ9MH09ZSx1PUFlKHMsdD8uaW4pLGM9cnx8YT9KMih1LHIrYSoxMik6dSxiPW98fG4/SHIoYyxvK24qNyk6Yyx2PXArbCo2MCxtPShkK3YqNjApKjFlMztyZXR1cm4gdHQodD8uaW58fHMsK2IrbSl9dmFyIEE4cyxhcGU9ZygoKT0+e1EyKCk7ajcoKTtHdCgpO2F0KCk7aShkcCwiYWRkIik7QThzPWRwfSk7ZnVuY3Rpb24gT2VlKHMsZSl7cmV0dXJuIEFlKHMsZT8uaW4pLmdldERheSgpPT09Nn12YXIgRjhzLHNwZT1nKCgpPT57YXQoKTtpKE9lZSwiaXNTYXR1cmRheSIpO0Y4cz1PZWV9KTtmdW5jdGlvbiBGZWUocyxlKXtyZXR1cm4gQWUocyxlPy5pbikuZ2V0RGF5KCk9PT0wfXZhciBqOHMsaXBlPWcoKCk9PnthdCgpO2koRmVlLCJpc1N1bmRheSIpO2o4cz1GZWV9KTtmdW5jdGlvbiBlZChzLGUpe2xldCB0PUFlKHMsZT8uaW4pLmdldERheSgpO3JldHVybiB0PT09MHx8dD09PTZ9dmFyIEc4cyx6eT1nKCgpPT57YXQoKTtpKGVkLCJpc1dlZWtlbmQiKTtHOHM9ZWR9KTtmdW5jdGlvbiBCZWUocyxlLHQpe2xldCBhPUFlKHMsdD8uaW4pLHI9ZWQoYSx0KTtpZihpc05hTihlKSlyZXR1cm4gdHQodD8uaW4sTmFOKTtsZXQgbj1hLmdldEhvdXJzKCksbz1lPDA/LTE6MSxsPU1hdGgudHJ1bmMoZS81KTthLnNldERhdGUoYS5nZXREYXRlKCkrbCo3KTtsZXQgcD1NYXRoLmFicyhlJTUpO2Zvcig7cD4wOylhLnNldERhdGUoYS5nZXREYXRlKCkrbyksZWQoYSx0KXx8KHAtPTEpO3JldHVybiByJiZlZChhLHQpJiZlIT09MCYmKE9lZShhLHQpJiZhLnNldERhdGUoYS5nZXREYXRlKCkrKG88MD8yOi0xKSksRmVlKGEsdCkmJmEuc2V0RGF0ZShhLmdldERhdGUoKSsobzwwPzE6LTIpKSksYS5zZXRIb3VycyhuKSxhfXZhciB0Z3MscnBlPWcoKCk9PntHdCgpO3NwZSgpO2lwZSgpO3p5KCk7YXQoKTtpKEJlZSwiYWRkQnVzaW5lc3NEYXlzIik7dGdzPUJlZX0pO2Z1bmN0aW9uIHVwKHMsZSx0KXtyZXR1cm4gdHQodD8uaW58fHMsK0FlKHMpK2UpfXZhciBvZ3MsQ3k9ZygoKT0+e0d0KCk7YXQoKTtpKHVwLCJhZGRNaWxsaXNlY29uZHMiKTtvZ3M9dXB9KTtmdW5jdGlvbiBIZWUocyxlLHQpe3JldHVybiB1cChzLGUqTmwsdCl9dmFyIHVncyxvcGU9ZygoKT0+e0N5KCk7d2EoKTtpKEhlZSwiYWRkSG91cnMiKTt1Z3M9SGVlfSk7ZnVuY3Rpb24gRXMoKXtyZXR1cm4gaTB0fWZ1bmN0aW9uIHIwdChzKXtpMHQ9c312YXIgaTB0LEdvPWcoKCk9PntpMHQ9e307aShFcywiZ2V0RGVmYXVsdE9wdGlvbnMiKTtpKHIwdCwic2V0RGVmYXVsdE9wdGlvbnMiKX0pO2Z1bmN0aW9uIEtzKHMsZSl7bGV0IHQ9RXMoKSxhPWU/LndlZWtTdGFydHNPbj8/ZT8ubG9jYWxlPy5vcHRpb25zPy53ZWVrU3RhcnRzT24/P3Qud2Vla1N0YXJ0c09uPz90LmxvY2FsZT8ub3B0aW9ucz8ud2Vla1N0YXJ0c09uPz8wLHI9QWUocyxlPy5pbiksbj1yLmdldERheSgpLG89KG48YT83OjApK24tYTtyZXR1cm4gci5zZXREYXRlKHIuZ2V0RGF0ZSgpLW8pLHIuc2V0SG91cnMoMCwwLDAsMCkscn12YXIgdmdzLHYxPWcoKCk9PntHbygpO2F0KCk7aShLcywic3RhcnRPZldlZWsiKTt2Z3M9S3N9KTtmdW5jdGlvbiBrcihzLGUpe3JldHVybiBLcyhzLHsuLi5lLHdlZWtTdGFydHNPbjoxfSl9dmFyIGtncyx0ZD1nKCgpPT57djEoKTtpKGtyLCJzdGFydE9mSVNPV2VlayIpO2tncz1rcn0pO2Z1bmN0aW9uIHduKHMsZSl7bGV0IHQ9QWUocyxlPy5pbiksYT10LmdldEZ1bGxZZWFyKCkscj10dCh0LDApO3Iuc2V0RnVsbFllYXIoYSsxLDAsNCksci5zZXRIb3VycygwLDAsMCwwKTtsZXQgbj1rcihyKSxvPXR0KHQsMCk7by5zZXRGdWxsWWVhcihhLDAsNCksby5zZXRIb3VycygwLDAsMCwwKTtsZXQgbD1rcihvKTtyZXR1cm4gdC5nZXRUaW1lKCk+PW4uZ2V0VGltZSgpP2ErMTp0LmdldFRpbWUoKT49bC5nZXRUaW1lKCk/YTphLTF9dmFyIFRncyxwcD1nKCgpPT57R3QoKTt0ZCgpO2F0KCk7aSh3biwiZ2V0SVNPV2Vla1llYXIiKTtUZ3M9d259KTtmdW5jdGlvbiBGaShzKXtsZXQgZT1BZShzKSx0PW5ldyBEYXRlKERhdGUuVVRDKGUuZ2V0RnVsbFllYXIoKSxlLmdldE1vbnRoKCksZS5nZXREYXRlKCksZS5nZXRIb3VycygpLGUuZ2V0TWludXRlcygpLGUuZ2V0U2Vjb25kcygpLGUuZ2V0TWlsbGlzZWNvbmRzKCkpKTtyZXR1cm4gdC5zZXRVVENGdWxsWWVhcihlLmdldEZ1bGxZZWFyKCkpLCtzLSt0fXZhciB1MD1nKCgpPT57YXQoKTtpKEZpLCJnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzIil9KTtmdW5jdGlvbiBWdChzLC4uLmUpe2xldCB0PXR0LmJpbmQobnVsbCxzfHxlLmZpbmQoYT0+dHlwZW9mIGE9PSJvYmplY3QiKSk7cmV0dXJuIGUubWFwKHQpfXZhciBScz1nKCgpPT57R3QoKTtpKFZ0LCJub3JtYWxpemVEYXRlcyIpfSk7ZnVuY3Rpb24gYWQocyxlKXtsZXQgdD1BZShzLGU/LmluKTtyZXR1cm4gdC5zZXRIb3VycygwLDAsMCwwKSx0fXZhciBPZ3MsVHk9ZygoKT0+e2F0KCk7aShhZCwic3RhcnRPZkRheSIpO09ncz1hZH0pO2Z1bmN0aW9uIG5vKHMsZSx0KXtsZXRbYSxyXT1WdCh0Py5pbixzLGUpLG49YWQoYSksbz1hZChyKSxsPStuLUZpKG4pLHA9K28tRmkobyk7cmV0dXJuIE1hdGgucm91bmQoKGwtcCkvUGVlKX12YXIgVWdzLHAwPWcoKCk9Pnt1MCgpO1JzKCk7d2EoKTtUeSgpO2kobm8sImRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyIpO1Vncz1ub30pO2Z1bmN0aW9uIFJsKHMsZSl7bGV0IHQ9d24ocyxlKSxhPXR0KGU/LmlufHxzLDApO3JldHVybiBhLnNldEZ1bGxZZWFyKHQsMCw0KSxhLnNldEhvdXJzKDAsMCwwLDApLGtyKGEpfXZhciBYZ3MsVjc9ZygoKT0+e0d0KCk7cHAoKTt0ZCgpO2koUmwsInN0YXJ0T2ZJU09XZWVrWWVhciIpO1hncz1SbH0pO2Z1bmN0aW9uIHFlZShzLGUsdCl7bGV0IGE9QWUocyx0Py5pbikscj1ubyhhLFJsKGEsdCkpLG49dHQodD8uaW58fHMsMCk7cmV0dXJuIG4uc2V0RnVsbFllYXIoZSwwLDQpLG4uc2V0SG91cnMoMCwwLDAsMCksYT1SbChuKSxhLnNldERhdGUoYS5nZXREYXRlKCkrciksYX12YXIgaTdzLG5wZT1nKCgpPT57R3QoKTtwMCgpO1Y3KCk7YXQoKTtpKHFlZSwic2V0SVNPV2Vla1llYXIiKTtpN3M9cWVlfSk7ZnVuY3Rpb24gamVlKHMsZSx0KXtyZXR1cm4gcWVlKHMsd24ocyx0KStlLHQpfXZhciBjN3MsbHBlPWcoKCk9PntwcCgpO25wZSgpO2koamVlLCJhZGRJU09XZWVrWWVhcnMiKTtjN3M9amVlfSk7ZnVuY3Rpb24gVTcocyxlLHQpe2xldCBhPUFlKHMsdD8uaW4pO3JldHVybiBhLnNldFRpbWUoYS5nZXRUaW1lKCkrZSpXbyksYX12YXIgZjdzLFZlZT1nKCgpPT57d2EoKTthdCgpO2koVTcsImFkZE1pbnV0ZXMiKTtmN3M9VTd9KTtmdW5jdGlvbiBXNyhzLGUsdCl7cmV0dXJuIEoyKHMsZSozLHQpfXZhciB2N3MsVWVlPWcoKCk9PntqNygpO2koVzcsImFkZFF1YXJ0ZXJzIik7djdzPVc3fSk7ZnVuY3Rpb24gV2VlKHMsZSx0KXtyZXR1cm4gdXAocyxlKjFlMyx0KX12YXIgazdzLGNwZT1nKCgpPT57Q3koKTtpKFdlZSwiYWRkU2Vjb25kcyIpO2s3cz1XZWV9KTtmdW5jdGlvbiBocChzLGUsdCl7cmV0dXJuIEhyKHMsZSo3LHQpfXZhciB6N3MsJHk9ZygoKT0+e1EyKCk7aShocCwiYWRkV2Vla3MiKTt6N3M9aHB9KTtmdW5jdGlvbiBHZWUocyxlLHQpe3JldHVybiBKMihzLGUqMTIsdCl9dmFyIEQ3cyxkcGU9ZygoKT0+e2o3KCk7aShHZWUsImFkZFllYXJzIik7RDdzPUdlZX0pO2Z1bmN0aW9uIG8wdChzLGUsdCl7bGV0W2Escl09WytBZShzLnN0YXJ0LHQ/LmluKSwrQWUocy5lbmQsdD8uaW4pXS5zb3J0KChsLHApPT5sLXApLFtuLG9dPVsrQWUoZS5zdGFydCx0Py5pbiksK0FlKGUuZW5kLHQ/LmluKV0uc29ydCgobCxwKT0+bC1wKTtyZXR1cm4gdD8uaW5jbHVzaXZlP2E8PW8mJm48PXI6YTxvJiZuPHJ9dmFyIEk3cyxuMHQ9ZygoKT0+e2F0KCk7aShvMHQsImFyZUludGVydmFsc092ZXJsYXBwaW5nIik7STdzPW8wdH0pO2Z1bmN0aW9uIEtlZShzLGUpe2xldCB0LGE9ZT8uaW47cmV0dXJuIHMuZm9yRWFjaChyPT57IWEmJnR5cGVvZiByPT0ib2JqZWN0IiYmKGE9dHQuYmluZChudWxsLHIpKTtsZXQgbj1BZShyLGEpOyghdHx8dDxufHxpc05hTigrbikpJiYodD1uKX0pLHR0KGEsdHx8TmFOKX12YXIgRjdzLHVwZT1nKCgpPT57R3QoKTthdCgpO2koS2VlLCJtYXgiKTtGN3M9S2VlfSk7ZnVuY3Rpb24gWWVlKHMsZSl7bGV0IHQsYT1lPy5pbjtyZXR1cm4gcy5mb3JFYWNoKHI9PnshYSYmdHlwZW9mIHI9PSJvYmplY3QiJiYoYT10dC5iaW5kKG51bGwscikpO2xldCBuPUFlKHIsYSk7KCF0fHx0Pm58fGlzTmFOKCtuKSkmJih0PW4pfSksdHQoYSx0fHxOYU4pfXZhciBWN3MscHBlPWcoKCk9PntHdCgpO2F0KCk7aShZZWUsIm1pbiIpO1Y3cz1ZZWV9KTtmdW5jdGlvbiBsMHQocyxlLHQpe2xldFthLHIsbl09VnQodD8uaW4scyxlLnN0YXJ0LGUuZW5kKTtyZXR1cm4gWWVlKFtLZWUoW2Escl0sdCksbl0sdCl9dmFyIFo3cyxjMHQ9ZygoKT0+e1JzKCk7dXBlKCk7cHBlKCk7aShsMHQsImNsYW1wIik7WjdzPWwwdH0pO2Z1bmN0aW9uIFplZShzLGUpe2xldCB0PStBZShzKTtpZihpc05hTih0KSlyZXR1cm4gTmFOO2xldCBhLHI7cmV0dXJuIGUuZm9yRWFjaCgobixvKT0+e2xldCBsPUFlKG4pO2lmKGlzTmFOKCtsKSl7YT1OYU4scj1OYU47cmV0dXJufWxldCBwPU1hdGguYWJzKHQtK2wpOyhhPT1udWxsfHxwPHIpJiYoYT1vLHI9cCl9KSxhfXZhciBlOXMsaHBlPWcoKCk9PnthdCgpO2koWmVlLCJjbG9zZXN0SW5kZXhUbyIpO2U5cz1aZWV9KTtmdW5jdGlvbiBkMHQocyxlLHQpe2xldFthLC4uLnJdPVZ0KHQ/LmluLHMsLi4uZSksbj1aZWUoYSxyKTtpZih0eXBlb2Ygbj09Im51bWJlciImJmlzTmFOKG4pKXJldHVybiB0dChhLE5hTik7aWYobiE9PXZvaWQgMClyZXR1cm4gcltuXX12YXIgbzlzLHUwdD1nKCgpPT57UnMoKTtocGUoKTtHdCgpO2koZDB0LCJjbG9zZXN0VG8iKTtvOXM9ZDB0fSk7ZnVuY3Rpb24gS28ocyxlKXtsZXQgdD0rQWUocyktK0FlKGUpO3JldHVybiB0PDA/LTE6dD4wPzE6dH12YXIgZDlzLEs0PWcoKCk9PnthdCgpO2koS28sImNvbXBhcmVBc2MiKTtkOXM9S299KTtmdW5jdGlvbiBwMHQocyxlKXtsZXQgdD0rQWUocyktK0FlKGUpO3JldHVybiB0PjA/LTE6dDwwPzE6dH12YXIgZjlzLGgwdD1nKCgpPT57YXQoKTtpKHAwdCwiY29tcGFyZURlc2MiKTtmOXM9cDB0fSk7ZnVuY3Rpb24gUGEocyl7cmV0dXJuIHR0KHMsRGF0ZS5ub3coKSl9dmFyIHY5cyxxcj1nKCgpPT57R3QoKTtpKFBhLCJjb25zdHJ1Y3ROb3ciKTt2OXM9UGF9KTtmdW5jdGlvbiBmMHQocyl7bGV0IGU9TWF0aC50cnVuYyhzLzcpO3JldHVybiBlPT09MD8wOmV9dmFyIGs5cyxtMHQ9ZygoKT0+e3dhKCk7aShmMHQsImRheXNUb1dlZWtzIik7azlzPWYwdH0pO2Z1bmN0aW9uIHNkKHMsZSx0KXtsZXRbYSxyXT1WdCh0Py5pbixzLGUpO3JldHVybithZChhKT09K2FkKHIpfXZhciBDOXMsRzc9ZygoKT0+e1JzKCk7VHkoKTtpKHNkLCJpc1NhbWVEYXkiKTtDOXM9c2R9KTtmdW5jdGlvbiBYZWUocyl7cmV0dXJuIHMgaW5zdGFuY2VvZiBEYXRlfHx0eXBlb2Ygcz09Im9iamVjdCImJk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChzKT09PSJbb2JqZWN0IERhdGVdIn12YXIgRDlzLGZwZT1nKCgpPT57aShYZWUsImlzRGF0ZSIpO0Q5cz1YZWV9KTtmdW5jdGlvbiBrbyhzKXtyZXR1cm4hKCFYZWUocykmJnR5cGVvZiBzIT0ibnVtYmVyInx8aXNOYU4oK0FlKHMpKSl9dmFyIEE5cyxoMD1nKCgpPT57ZnBlKCk7YXQoKTtpKGtvLCJpc1ZhbGlkIik7QTlzPWtvfSk7ZnVuY3Rpb24gZzB0KHMsZSx0KXtsZXRbYSxyXT1WdCh0Py5pbixzLGUpO2lmKCFrbyhhKXx8IWtvKHIpKXJldHVybiBOYU47bGV0IG49bm8oYSxyKSxvPW48MD8tMToxLGw9TWF0aC50cnVuYyhuLzcpLHA9bCo1LGQ9SHIocixsKjcpO2Zvcig7IXNkKGEsZCk7KXArPWVkKGQsdCk/MDpvLGQ9SHIoZCxvKTtyZXR1cm4gcD09PTA/MDpwfXZhciBWOXMsYjB0PWcoKCk9PntScygpO1EyKCk7cDAoKTtHNygpO2gwKCk7enkoKTtpKGcwdCwiZGlmZmVyZW5jZUluQnVzaW5lc3NEYXlzIik7VjlzPWcwdH0pO2Z1bmN0aW9uIFFlZShzLGUsdCl7bGV0W2Escl09VnQodD8uaW4scyxlKTtyZXR1cm4gd24oYSx0KS13bihyLHQpfXZhciBZOXMsbXBlPWcoKCk9PntScygpO3BwKCk7aShRZWUsImRpZmZlcmVuY2VJbkNhbGVuZGFySVNPV2Vla1llYXJzIik7WTlzPVFlZX0pO2Z1bmN0aW9uIHYwdChzLGUsdCl7bGV0W2Escl09VnQodD8uaW4scyxlKSxuPWtyKGEpLG89a3IociksbD0rbi1GaShuKSxwPStvLUZpKG8pO3JldHVybiBNYXRoLnJvdW5kKChsLXApL1gyKX12YXIgYWJzLHgwdD1nKCgpPT57dTAoKTtScygpO3dhKCk7dGQoKTtpKHYwdCwiZGlmZmVyZW5jZUluQ2FsZW5kYXJJU09XZWVrcyIpO2Ficz12MHR9KTtmdW5jdGlvbiBZNChzLGUsdCl7bGV0W2Escl09VnQodD8uaW4scyxlKSxuPWEuZ2V0RnVsbFllYXIoKS1yLmdldEZ1bGxZZWFyKCksbz1hLmdldE1vbnRoKCktci5nZXRNb250aCgpO3JldHVybiBuKjEyK299dmFyIG9icyxKZWU9ZygoKT0+e1JzKCk7aShZNCwiZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHMiKTtvYnM9WTR9KTtmdW5jdGlvbiBEeShzLGUpe2xldCB0PUFlKHMsZT8uaW4pO3JldHVybiBNYXRoLnRydW5jKHQuZ2V0TW9udGgoKS8zKSsxfXZhciBkYnMsZ3BlPWcoKCk9PnthdCgpO2koRHksImdldFF1YXJ0ZXIiKTtkYnM9RHl9KTtmdW5jdGlvbiBLNyhzLGUsdCl7bGV0W2Escl09VnQodD8uaW4scyxlKSxuPWEuZ2V0RnVsbFllYXIoKS1yLmdldEZ1bGxZZWFyKCksbz1EeShhKS1EeShyKTtyZXR1cm4gbio0K299dmFyIG1icyxicGU9ZygoKT0+e1JzKCk7Z3BlKCk7aShLNywiZGlmZmVyZW5jZUluQ2FsZW5kYXJRdWFydGVycyIpO21icz1LN30pO2Z1bmN0aW9uIFo0KHMsZSx0KXtsZXRbYSxyXT1WdCh0Py5pbixzLGUpLG49S3MoYSx0KSxvPUtzKHIsdCksbD0rbi1GaShuKSxwPStvLUZpKG8pO3JldHVybiBNYXRoLnJvdW5kKChsLXApL1gyKX12YXIga2JzLGV0ZT1nKCgpPT57dTAoKTtScygpO3dhKCk7djEoKTtpKFo0LCJkaWZmZXJlbmNlSW5DYWxlbmRhcldlZWtzIik7a2JzPVo0fSk7ZnVuY3Rpb24gZnAocyxlLHQpe2xldFthLHJdPVZ0KHQ/LmluLHMsZSk7cmV0dXJuIGEuZ2V0RnVsbFllYXIoKS1yLmdldEZ1bGxZZWFyKCl9dmFyIHpicyx0dGU9ZygoKT0+e1JzKCk7aShmcCwiZGlmZmVyZW5jZUluQ2FsZW5kYXJZZWFycyIpO3picz1mcH0pO2Z1bmN0aW9uIFk3KHMsZSx0KXtsZXRbYSxyXT1WdCh0Py5pbixzLGUpLG49eTB0KGEsciksbz1NYXRoLmFicyhubyhhLHIpKTthLnNldERhdGUoYS5nZXREYXRlKCktbipvKTtsZXQgbD0rKHkwdChhLHIpPT09LW4pLHA9biooby1sKTtyZXR1cm4gcD09PTA/MDpwfWZ1bmN0aW9uIHkwdChzLGUpe2xldCB0PXMuZ2V0RnVsbFllYXIoKS1lLmdldEZ1bGxZZWFyKCl8fHMuZ2V0TW9udGgoKS1lLmdldE1vbnRoKCl8fHMuZ2V0RGF0ZSgpLWUuZ2V0RGF0ZSgpfHxzLmdldEhvdXJzKCktZS5nZXRIb3VycygpfHxzLmdldE1pbnV0ZXMoKS1lLmdldE1pbnV0ZXMoKXx8cy5nZXRTZWNvbmRzKCktZS5nZXRTZWNvbmRzKCl8fHMuZ2V0TWlsbGlzZWNvbmRzKCktZS5nZXRNaWxsaXNlY29uZHMoKTtyZXR1cm4gdDwwPy0xOnQ+MD8xOnR9dmFyIExicyxhdGU9ZygoKT0+e1JzKCk7cDAoKTtpKFk3LCJkaWZmZXJlbmNlSW5EYXlzIik7aSh5MHQsImNvbXBhcmVMb2NhbEFzYyIpO0xicz1ZN30pO2Z1bmN0aW9uIFlvKHMpe3JldHVybiBlPT57bGV0IGE9KHM/TWF0aFtzXTpNYXRoLnRydW5jKShlKTtyZXR1cm4gYT09PTA/MDphfX12YXIgZjA9ZygoKT0+e2koWW8sImdldFJvdW5kaW5nTWV0aG9kIil9KTtmdW5jdGlvbiBYNChzLGUsdCl7bGV0W2Escl09VnQodD8uaW4scyxlKSxuPSgrYS0rcikvTmw7cmV0dXJuIFlvKHQ/LnJvdW5kaW5nTWV0aG9kKShuKX12YXIgRmJzLHN0ZT1nKCgpPT57ZjAoKTtScygpO3dhKCk7aShYNCwiZGlmZmVyZW5jZUluSG91cnMiKTtGYnM9WDR9KTtmdW5jdGlvbiBpdGUocyxlLHQpe3JldHVybiBqZWUocywtZSx0KX12YXIgamJzLHZwZT1nKCgpPT57bHBlKCk7aShpdGUsInN1YklTT1dlZWtZZWFycyIpO2picz1pdGV9KTtmdW5jdGlvbiB3MHQocyxlLHQpe2xldFthLHJdPVZ0KHQ/LmluLHMsZSksbj1LbyhhLHIpLG89TWF0aC5hYnMoUWVlKGEscix0KSksbD1pdGUoYSxuKm8sdCkscD0rKEtvKGwscik9PT0tbiksZD1uKihvLXApO3JldHVybiBkPT09MD8wOmR9dmFyIFpicyxrMHQ9ZygoKT0+e1JzKCk7SzQoKTttcGUoKTt2cGUoKTtpKHcwdCwiZGlmZmVyZW5jZUluSVNPV2Vla1llYXJzIik7WmJzPXcwdH0pO2Z1bmN0aW9uIFo3KHMsZSl7cmV0dXJuK0FlKHMpLStBZShlKX12YXIgZXZzLHJ0ZT1nKCgpPT57YXQoKTtpKFo3LCJkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMiKTtldnM9Wjd9KTtmdW5jdGlvbiBRNChzLGUsdCl7bGV0IGE9WjcocyxlKS9XbztyZXR1cm4gWW8odD8ucm91bmRpbmdNZXRob2QpKGEpfXZhciBvdnMsb3RlPWcoKCk9PntmMCgpO3dhKCk7cnRlKCk7aShRNCwiZGlmZmVyZW5jZUluTWludXRlcyIpO292cz1RNH0pO2Z1bmN0aW9uIFg3KHMsZSl7bGV0IHQ9QWUocyxlPy5pbik7cmV0dXJuIHQuc2V0SG91cnMoMjMsNTksNTksOTk5KSx0fXZhciBkdnMsbnRlPWcoKCk9PnthdCgpO2koWDcsImVuZE9mRGF5Iik7ZHZzPVg3fSk7ZnVuY3Rpb24gUTcocyxlKXtsZXQgdD1BZShzLGU/LmluKSxhPXQuZ2V0TW9udGgoKTtyZXR1cm4gdC5zZXRGdWxsWWVhcih0LmdldEZ1bGxZZWFyKCksYSsxLDApLHQuc2V0SG91cnMoMjMsNTksNTksOTk5KSx0fXZhciBmdnMsbHRlPWcoKCk9PnthdCgpO2koUTcsImVuZE9mTW9udGgiKTtmdnM9UTd9KTtmdW5jdGlvbiBjdGUocyxlKXtsZXQgdD1BZShzLGU/LmluKTtyZXR1cm4rWDcodCxlKT09K1E3KHQsZSl9dmFyIHl2cyx4cGU9ZygoKT0+e250ZSgpO2x0ZSgpO2F0KCk7aShjdGUsImlzTGFzdERheU9mTW9udGgiKTt5dnM9Y3RlfSk7ZnVuY3Rpb24gbXAocyxlLHQpe2xldFthLHIsbl09VnQodD8uaW4scyxzLGUpLG89S28ocixuKSxsPU1hdGguYWJzKFk0KHIsbikpO2lmKGw8MSlyZXR1cm4gMDtyLmdldE1vbnRoKCk9PT0xJiZyLmdldERhdGUoKT4yNyYmci5zZXREYXRlKDMwKSxyLnNldE1vbnRoKHIuZ2V0TW9udGgoKS1vKmwpO2xldCBwPUtvKHIsbik9PT0tbztjdGUoYSkmJmw9PT0xJiZLbyhhLG4pPT09MSYmKHA9ITEpO2xldCBkPW8qKGwtK3ApO3JldHVybiBkPT09MD8wOmR9dmFyIEN2cyxMeT1nKCgpPT57UnMoKTtLNCgpO0plZSgpO3hwZSgpO2kobXAsImRpZmZlcmVuY2VJbk1vbnRocyIpO0N2cz1tcH0pO2Z1bmN0aW9uIFMwdChzLGUsdCl7bGV0IGE9bXAocyxlLHQpLzM7cmV0dXJuIFlvKHQ/LnJvdW5kaW5nTWV0aG9kKShhKX12YXIgRXZzLF8wdD1nKCgpPT57ZjAoKTtMeSgpO2koUzB0LCJkaWZmZXJlbmNlSW5RdWFydGVycyIpO0V2cz1TMHR9KTtmdW5jdGlvbiBpZChzLGUsdCl7bGV0IGE9WjcocyxlKS8xZTM7cmV0dXJuIFlvKHQ/LnJvdW5kaW5nTWV0aG9kKShhKX12YXIgUnZzLEV5PWcoKCk9PntmMCgpO3J0ZSgpO2koaWQsImRpZmZlcmVuY2VJblNlY29uZHMiKTtSdnM9aWR9KTtmdW5jdGlvbiBNMHQocyxlLHQpe2xldCBhPVk3KHMsZSx0KS83O3JldHVybiBZbyh0Py5yb3VuZGluZ01ldGhvZCkoYSl9dmFyIHF2cyx6MHQ9ZygoKT0+e2YwKCk7YXRlKCk7aShNMHQsImRpZmZlcmVuY2VJbldlZWtzIik7cXZzPU0wdH0pO2Z1bmN0aW9uIGR0ZShzLGUsdCl7bGV0W2Escl09VnQodD8uaW4scyxlKSxuPUtvKGEsciksbz1NYXRoLmFicyhmcChhLHIpKTthLnNldEZ1bGxZZWFyKDE1ODQpLHIuc2V0RnVsbFllYXIoMTU4NCk7bGV0IGw9S28oYSxyKT09PS1uLHA9biooby0rbCk7cmV0dXJuIHA9PT0wPzA6cH12YXIgS3ZzLHlwZT1nKCgpPT57UnMoKTtLNCgpO3R0ZSgpO2koZHRlLCJkaWZmZXJlbmNlSW5ZZWFycyIpO0t2cz1kdGV9KTtmdW5jdGlvbiBsbyhzLGUpe2xldFt0LGFdPVZ0KHMsZS5zdGFydCxlLmVuZCk7cmV0dXJue3N0YXJ0OnQsZW5kOmF9fXZhciByZD1nKCgpPT57UnMoKTtpKGxvLCJub3JtYWxpemVJbnRlcnZhbCIpfSk7ZnVuY3Rpb24gdXRlKHMsZSl7bGV0e3N0YXJ0OnQsZW5kOmF9PWxvKGU/LmluLHMpLHI9K3Q+K2Esbj1yPyt0OithLG89cj9hOnQ7by5zZXRIb3VycygwLDAsMCwwKTtsZXQgbD1lPy5zdGVwPz8xO2lmKCFsKXJldHVybltdO2w8MCYmKGw9LWwscj0hcik7bGV0IHA9W107Zm9yKDsrbzw9bjspcC5wdXNoKHR0KHQsbykpLG8uc2V0RGF0ZShvLmdldERhdGUoKStsKSxvLnNldEhvdXJzKDAsMCwwLDApO3JldHVybiByP3AucmV2ZXJzZSgpOnB9dmFyIGF4cyx3cGU9ZygoKT0+e3JkKCk7R3QoKTtpKHV0ZSwiZWFjaERheU9mSW50ZXJ2YWwiKTtheHM9dXRlfSk7ZnVuY3Rpb24gQzB0KHMsZSl7bGV0e3N0YXJ0OnQsZW5kOmF9PWxvKGU/LmluLHMpLHI9K3Q+K2Esbj1yPyt0OithLG89cj9hOnQ7by5zZXRNaW51dGVzKDAsMCwwKTtsZXQgbD1lPy5zdGVwPz8xO2lmKCFsKXJldHVybltdO2w8MCYmKGw9LWwscj0hcik7bGV0IHA9W107Zm9yKDsrbzw9bjspcC5wdXNoKHR0KHQsbykpLG8uc2V0SG91cnMoby5nZXRIb3VycygpK2wpO3JldHVybiByP3AucmV2ZXJzZSgpOnB9dmFyIG54cyxUMHQ9ZygoKT0+e3JkKCk7R3QoKTtpKEMwdCwiZWFjaEhvdXJPZkludGVydmFsIik7bnhzPUMwdH0pO2Z1bmN0aW9uICQwdChzLGUpe2xldHtzdGFydDp0LGVuZDphfT1sbyhlPy5pbixzKTt0LnNldFNlY29uZHMoMCwwKTtsZXQgcj0rdD4rYSxuPXI/K3Q6K2Esbz1yP2E6dCxsPWU/LnN0ZXA/PzE7aWYoIWwpcmV0dXJuW107bDwwJiYobD0tbCxyPSFyKTtsZXQgcD1bXTtmb3IoOytvPD1uOylwLnB1c2godHQodCxvKSksbz1VNyhvLGwpO3JldHVybiByP3AucmV2ZXJzZSgpOnB9dmFyIGh4cyxEMHQ9ZygoKT0+e3JkKCk7VmVlKCk7R3QoKTtpKCQwdCwiZWFjaE1pbnV0ZU9mSW50ZXJ2YWwiKTtoeHM9JDB0fSk7ZnVuY3Rpb24gTDB0KHMsZSl7bGV0e3N0YXJ0OnQsZW5kOmF9PWxvKGU/LmluLHMpLHI9K3Q+K2Esbj1yPyt0OithLG89cj9hOnQ7by5zZXRIb3VycygwLDAsMCwwKSxvLnNldERhdGUoMSk7bGV0IGw9ZT8uc3RlcD8/MTtpZighbClyZXR1cm5bXTtsPDAmJihsPS1sLHI9IXIpO2xldCBwPVtdO2Zvcig7K288PW47KXAucHVzaCh0dCh0LG8pKSxvLnNldE1vbnRoKG8uZ2V0TW9udGgoKStsKTtyZXR1cm4gcj9wLnJldmVyc2UoKTpwfXZhciB2eHMsRTB0PWcoKCk9PntyZCgpO0d0KCk7aShMMHQsImVhY2hNb250aE9mSW50ZXJ2YWwiKTt2eHM9TDB0fSk7ZnVuY3Rpb24gb2QocyxlKXtsZXQgdD1BZShzLGU/LmluKSxhPXQuZ2V0TW9udGgoKSxyPWEtYSUzO3JldHVybiB0LnNldE1vbnRoKHIsMSksdC5zZXRIb3VycygwLDAsMCwwKSx0fXZhciBreHMscHRlPWcoKCk9PnthdCgpO2kob2QsInN0YXJ0T2ZRdWFydGVyIik7a3hzPW9kfSk7ZnVuY3Rpb24gUDB0KHMsZSl7bGV0e3N0YXJ0OnQsZW5kOmF9PWxvKGU/LmluLHMpLHI9K3Q+K2Esbj1yPytvZCh0KTorb2QoYSksbz1yP29kKGEpOm9kKHQpLGw9ZT8uc3RlcD8/MTtpZighbClyZXR1cm5bXTtsPDAmJihsPS1sLHI9IXIpO2xldCBwPVtdO2Zvcig7K288PW47KXAucHVzaCh0dCh0LG8pKSxvPVc3KG8sbCk7cmV0dXJuIHI/cC5yZXZlcnNlKCk6cH12YXIgJHhzLEkwdD1nKCgpPT57cmQoKTtVZWUoKTtHdCgpO3B0ZSgpO2koUDB0LCJlYWNoUXVhcnRlck9mSW50ZXJ2YWwiKTskeHM9UDB0fSk7ZnVuY3Rpb24gQTB0KHMsZSl7bGV0e3N0YXJ0OnQsZW5kOmF9PWxvKGU/LmluLHMpLHI9K3Q+K2Esbj1yP0tzKGEsZSk6S3ModCxlKSxvPXI/S3ModCxlKTpLcyhhLGUpO24uc2V0SG91cnMoMTUpLG8uc2V0SG91cnMoMTUpO2xldCBsPStvLmdldFRpbWUoKSxwPW4sZD1lPy5zdGVwPz8xO2lmKCFkKXJldHVybltdO2Q8MCYmKGQ9LWQscj0hcik7bGV0IHU9W107Zm9yKDsrcDw9bDspcC5zZXRIb3VycygwKSx1LnB1c2godHQodCxwKSkscD1ocChwLGQpLHAuc2V0SG91cnMoMTUpO3JldHVybiByP3UucmV2ZXJzZSgpOnV9dmFyIE54cyxOMHQ9ZygoKT0+e3JkKCk7JHkoKTtHdCgpO3YxKCk7aShBMHQsImVhY2hXZWVrT2ZJbnRlcnZhbCIpO054cz1BMHR9KTtmdW5jdGlvbiBKNyhzLGUpe2xldHtzdGFydDp0LGVuZDphfT1sbyhlPy5pbixzKSxyPXV0ZSh7c3RhcnQ6dCxlbmQ6YX0sZSksbj1bXSxvPTA7Zm9yKDtvPHIubGVuZ3RoOyl7bGV0IGw9cltvKytdO2VkKGwpJiZuLnB1c2godHQodCxsKSl9cmV0dXJuIG59dmFyIGp4cyxodGU9ZygoKT0+e3JkKCk7R3QoKTt3cGUoKTt6eSgpO2koSjcsImVhY2hXZWVrZW5kT2ZJbnRlcnZhbCIpO2p4cz1KN30pO2Z1bmN0aW9uIGdwKHMsZSl7bGV0IHQ9QWUocyxlPy5pbik7cmV0dXJuIHQuc2V0RGF0ZSgxKSx0LnNldEhvdXJzKDAsMCwwLDApLHR9dmFyIEd4cyxQeT1nKCgpPT57YXQoKTtpKGdwLCJzdGFydE9mTW9udGgiKTtHeHM9Z3B9KTtmdW5jdGlvbiBSMHQocyxlKXtsZXQgdD1ncChzLGUpLGE9UTcocyxlKTtyZXR1cm4gSjcoe3N0YXJ0OnQsZW5kOmF9LGUpfXZhciBKeHMsTzB0PWcoKCk9PntodGUoKTtsdGUoKTtQeSgpO2koUjB0LCJlYWNoV2Vla2VuZE9mTW9udGgiKTtKeHM9UjB0fSk7ZnVuY3Rpb24gZnRlKHMsZSl7bGV0IHQ9QWUocyxlPy5pbiksYT10LmdldEZ1bGxZZWFyKCk7cmV0dXJuIHQuc2V0RnVsbFllYXIoYSsxLDAsMCksdC5zZXRIb3VycygyMyw1OSw1OSw5OTkpLHR9dmFyIHN5cyxrcGU9ZygoKT0+e2F0KCk7aShmdGUsImVuZE9mWWVhciIpO3N5cz1mdGV9KTtmdW5jdGlvbiBlOShzLGUpe2xldCB0PUFlKHMsZT8uaW4pO3JldHVybiB0LnNldEZ1bGxZZWFyKHQuZ2V0RnVsbFllYXIoKSwwLDEpLHQuc2V0SG91cnMoMCwwLDAsMCksdH12YXIgbnlzLG10ZT1nKCgpPT57YXQoKTtpKGU5LCJzdGFydE9mWWVhciIpO255cz1lOX0pO2Z1bmN0aW9uIEYwdChzLGUpe2xldCB0PWU5KHMsZSksYT1mdGUocyxlKTtyZXR1cm4gSjcoe3N0YXJ0OnQsZW5kOmF9LGUpfXZhciBoeXMsQjB0PWcoKCk9PntodGUoKTtrcGUoKTttdGUoKTtpKEYwdCwiZWFjaFdlZWtlbmRPZlllYXIiKTtoeXM9RjB0fSk7ZnVuY3Rpb24gSDB0KHMsZSl7bGV0e3N0YXJ0OnQsZW5kOmF9PWxvKGU/LmluLHMpLHI9K3Q+K2Esbj1yPyt0OithLG89cj9hOnQ7by5zZXRIb3VycygwLDAsMCwwKSxvLnNldE1vbnRoKDAsMSk7bGV0IGw9ZT8uc3RlcD8/MTtpZighbClyZXR1cm5bXTtsPDAmJihsPS1sLHI9IXIpO2xldCBwPVtdO2Zvcig7K288PW47KXAucHVzaCh0dCh0LG8pKSxvLnNldEZ1bGxZZWFyKG8uZ2V0RnVsbFllYXIoKStsKTtyZXR1cm4gcj9wLnJldmVyc2UoKTpwfXZhciB2eXMscTB0PWcoKCk9PntyZCgpO0d0KCk7aShIMHQsImVhY2hZZWFyT2ZJbnRlcnZhbCIpO3Z5cz1IMHR9KTtmdW5jdGlvbiBqMHQocyxlKXtsZXQgdD1BZShzLGU/LmluKSxhPXQuZ2V0RnVsbFllYXIoKSxyPTkrTWF0aC5mbG9vcihhLzEwKSoxMDtyZXR1cm4gdC5zZXRGdWxsWWVhcihyLDExLDMxKSx0LnNldEhvdXJzKDIzLDU5LDU5LDk5OSksdH12YXIga3lzLFYwdD1nKCgpPT57YXQoKTtpKGowdCwiZW5kT2ZEZWNhZGUiKTtreXM9ajB0fSk7ZnVuY3Rpb24gVTB0KHMsZSl7bGV0IHQ9QWUocyxlPy5pbik7cmV0dXJuIHQuc2V0TWludXRlcyg1OSw1OSw5OTkpLHR9dmFyIHp5cyxXMHQ9ZygoKT0+e2F0KCk7aShVMHQsImVuZE9mSG91ciIpO3p5cz1VMHR9KTtmdW5jdGlvbiBndGUocyxlKXtsZXQgdD1FcygpLGE9ZT8ud2Vla1N0YXJ0c09uPz9lPy5sb2NhbGU/Lm9wdGlvbnM/LndlZWtTdGFydHNPbj8/dC53ZWVrU3RhcnRzT24/P3QubG9jYWxlPy5vcHRpb25zPy53ZWVrU3RhcnRzT24/PzAscj1BZShzLGU/LmluKSxuPXIuZ2V0RGF5KCksbz0objxhPy03OjApKzYtKG4tYSk7cmV0dXJuIHIuc2V0RGF0ZShyLmdldERhdGUoKStvKSxyLnNldEhvdXJzKDIzLDU5LDU5LDk5OSkscn12YXIgTHlzLFNwZT1nKCgpPT57R28oKTthdCgpO2koZ3RlLCJlbmRPZldlZWsiKTtMeXM9Z3RlfSk7ZnVuY3Rpb24gRzB0KHMsZSl7cmV0dXJuIGd0ZShzLHsuLi5lLHdlZWtTdGFydHNPbjoxfSl9dmFyIEF5cyxLMHQ9ZygoKT0+e1NwZSgpO2koRzB0LCJlbmRPZklTT1dlZWsiKTtBeXM9RzB0fSk7ZnVuY3Rpb24gWTB0KHMsZSl7bGV0IHQ9d24ocyxlKSxhPXR0KGU/LmlufHxzLDApO2Euc2V0RnVsbFllYXIodCsxLDAsNCksYS5zZXRIb3VycygwLDAsMCwwKTtsZXQgcj1rcihhLGUpO3JldHVybiByLnNldE1pbGxpc2Vjb25kcyhyLmdldE1pbGxpc2Vjb25kcygpLTEpLHJ9dmFyIEh5cyxaMHQ9ZygoKT0+e0d0KCk7cHAoKTt0ZCgpO2koWTB0LCJlbmRPZklTT1dlZWtZZWFyIik7SHlzPVkwdH0pO2Z1bmN0aW9uIFgwdChzLGUpe2xldCB0PUFlKHMsZT8uaW4pO3JldHVybiB0LnNldFNlY29uZHMoNTksOTk5KSx0fXZhciBVeXMsUTB0PWcoKCk9PnthdCgpO2koWDB0LCJlbmRPZk1pbnV0ZSIpO1V5cz1YMHR9KTtmdW5jdGlvbiBKMHQocyxlKXtsZXQgdD1BZShzLGU/LmluKSxhPXQuZ2V0TW9udGgoKSxyPWEtYSUzKzM7cmV0dXJuIHQuc2V0TW9udGgociwwKSx0LnNldEhvdXJzKDIzLDU5LDU5LDk5OSksdH12YXIgWXlzLGV1dD1nKCgpPT57YXQoKTtpKEowdCwiZW5kT2ZRdWFydGVyIik7WXlzPUowdH0pO2Z1bmN0aW9uIHR1dChzLGUpe2xldCB0PUFlKHMsZT8uaW4pO3JldHVybiB0LnNldE1pbGxpc2Vjb25kcyg5OTkpLHR9dmFyIEp5cyxhdXQ9ZygoKT0+e2F0KCk7aSh0dXQsImVuZE9mU2Vjb25kIik7SnlzPXR1dH0pO2Z1bmN0aW9uIHN1dChzKXtyZXR1cm4gWDcoRGF0ZS5ub3coKSxzKX12YXIgc3dzLGl1dD1nKCgpPT57bnRlKCk7aShzdXQsImVuZE9mVG9kYXkiKTtzd3M9c3V0fSk7ZnVuY3Rpb24gcnV0KHMpe2xldCBlPVBhKHM/LmluKSx0PWUuZ2V0RnVsbFllYXIoKSxhPWUuZ2V0TW9udGgoKSxyPWUuZ2V0RGF0ZSgpLG49UGEocz8uaW4pO3JldHVybiBuLnNldEZ1bGxZZWFyKHQsYSxyKzEpLG4uc2V0SG91cnMoMjMsNTksNTksOTk5KSxzPy5pbj9zLmluKG4pOm59dmFyIG53cyxvdXQ9ZygoKT0+e3FyKCk7aShydXQsImVuZE9mVG9tb3Jyb3ciKTtud3M9cnV0fSk7ZnVuY3Rpb24gbnV0KHMpe2xldCBlPVBhKHM/LmluKSx0PXR0KHM/LmluLDApO3JldHVybiB0LnNldEZ1bGxZZWFyKGUuZ2V0RnVsbFllYXIoKSxlLmdldE1vbnRoKCksZS5nZXREYXRlKCktMSksdC5zZXRIb3VycygyMyw1OSw1OSw5OTkpLHR9dmFyIHB3cyxsdXQ9ZygoKT0+e0d0KCk7cXIoKTtpKG51dCwiZW5kT2ZZZXN0ZXJkYXkiKTtwd3M9bnV0fSk7dmFyIGtMYSxjdXQsZHV0PWcoKCk9PntrTGE9e2xlc3NUaGFuWFNlY29uZHM6e29uZToibGVzcyB0aGFuIGEgc2Vjb25kIixvdGhlcjoibGVzcyB0aGFuIHt7Y291bnR9fSBzZWNvbmRzIn0seFNlY29uZHM6e29uZToiMSBzZWNvbmQiLG90aGVyOiJ7e2NvdW50fX0gc2Vjb25kcyJ9LGhhbGZBTWludXRlOiJoYWxmIGEgbWludXRlIixsZXNzVGhhblhNaW51dGVzOntvbmU6Imxlc3MgdGhhbiBhIG1pbnV0ZSIsb3RoZXI6Imxlc3MgdGhhbiB7e2NvdW50fX0gbWludXRlcyJ9LHhNaW51dGVzOntvbmU6IjEgbWludXRlIixvdGhlcjoie3tjb3VudH19IG1pbnV0ZXMifSxhYm91dFhIb3Vyczp7b25lOiJhYm91dCAxIGhvdXIiLG90aGVyOiJhYm91dCB7e2NvdW50fX0gaG91cnMifSx4SG91cnM6e29uZToiMSBob3VyIixvdGhlcjoie3tjb3VudH19IGhvdXJzIn0seERheXM6e29uZToiMSBkYXkiLG90aGVyOiJ7e2NvdW50fX0gZGF5cyJ9LGFib3V0WFdlZWtzOntvbmU6ImFib3V0IDEgd2VlayIsb3RoZXI6ImFib3V0IHt7Y291bnR9fSB3ZWVrcyJ9LHhXZWVrczp7b25lOiIxIHdlZWsiLG90aGVyOiJ7e2NvdW50fX0gd2Vla3MifSxhYm91dFhNb250aHM6e29uZToiYWJvdXQgMSBtb250aCIsb3RoZXI6ImFib3V0IHt7Y291bnR9fSBtb250aHMifSx4TW9udGhzOntvbmU6IjEgbW9udGgiLG90aGVyOiJ7e2NvdW50fX0gbW9udGhzIn0sYWJvdXRYWWVhcnM6e29uZToiYWJvdXQgMSB5ZWFyIixvdGhlcjoiYWJvdXQge3tjb3VudH19IHllYXJzIn0seFllYXJzOntvbmU6IjEgeWVhciIsb3RoZXI6Int7Y291bnR9fSB5ZWFycyJ9LG92ZXJYWWVhcnM6e29uZToib3ZlciAxIHllYXIiLG90aGVyOiJvdmVyIHt7Y291bnR9fSB5ZWFycyJ9LGFsbW9zdFhZZWFyczp7b25lOiJhbG1vc3QgMSB5ZWFyIixvdGhlcjoiYWxtb3N0IHt7Y291bnR9fSB5ZWFycyJ9fSxjdXQ9aSgocyxlLHQpPT57bGV0IGEscj1rTGFbc107cmV0dXJuIHR5cGVvZiByPT0ic3RyaW5nIj9hPXI6ZT09PTE/YT1yLm9uZTphPXIub3RoZXIucmVwbGFjZSgie3tjb3VudH19IixlLnRvU3RyaW5nKCkpLHQ/LmFkZFN1ZmZpeD90LmNvbXBhcmlzb24mJnQuY29tcGFyaXNvbj4wPyJpbiAiK2E6YSsiIGFnbyI6YX0sImZvcm1hdERpc3RhbmNlIil9KTtmdW5jdGlvbiBidGUocyl7cmV0dXJuKGU9e30pPT57bGV0IHQ9ZS53aWR0aD9TdHJpbmcoZS53aWR0aCk6cy5kZWZhdWx0V2lkdGg7cmV0dXJuIHMuZm9ybWF0c1t0XXx8cy5mb3JtYXRzW3MuZGVmYXVsdFdpZHRoXX19dmFyIHV1dD1nKCgpPT57aShidGUsImJ1aWxkRm9ybWF0TG9uZ0ZuIil9KTt2YXIgU0xhLF9MYSxNTGEscHV0LGh1dD1nKCgpPT57dXV0KCk7U0xhPXtmdWxsOiJFRUVFLCBNTU1NIGRvLCB5Iixsb25nOiJNTU1NIGRvLCB5IixtZWRpdW06Ik1NTSBkLCB5IixzaG9ydDoiTU0vZGQveXl5eSJ9LF9MYT17ZnVsbDoiaDptbTpzcyBhIHp6enoiLGxvbmc6Img6bW06c3MgYSB6IixtZWRpdW06Img6bW06c3MgYSIsc2hvcnQ6Img6bW0gYSJ9LE1MYT17ZnVsbDoie3tkYXRlfX0gJ2F0JyB7e3RpbWV9fSIsbG9uZzoie3tkYXRlfX0gJ2F0JyB7e3RpbWV9fSIsbWVkaXVtOiJ7e2RhdGV9fSwge3t0aW1lfX0iLHNob3J0OiJ7e2RhdGV9fSwge3t0aW1lfX0ifSxwdXQ9e2RhdGU6YnRlKHtmb3JtYXRzOlNMYSxkZWZhdWx0V2lkdGg6ImZ1bGwifSksdGltZTpidGUoe2Zvcm1hdHM6X0xhLGRlZmF1bHRXaWR0aDoiZnVsbCJ9KSxkYXRlVGltZTpidGUoe2Zvcm1hdHM6TUxhLGRlZmF1bHRXaWR0aDoiZnVsbCJ9KX19KTt2YXIgekxhLGZ1dCxtdXQ9ZygoKT0+e3pMYT17bGFzdFdlZWs6IidsYXN0JyBlZWVlICdhdCcgcCIseWVzdGVyZGF5OiIneWVzdGVyZGF5IGF0JyBwIix0b2RheToiJ3RvZGF5IGF0JyBwIix0b21vcnJvdzoiJ3RvbW9ycm93IGF0JyBwIixuZXh0V2VlazoiZWVlZSAnYXQnIHAiLG90aGVyOiJQIn0sZnV0PWkoKHMsZSx0LGEpPT56TGFbc10sImZvcm1hdFJlbGF0aXZlIil9KTtmdW5jdGlvbiB0OShzKXtyZXR1cm4oZSx0KT0+e2xldCBhPXQ/LmNvbnRleHQ/U3RyaW5nKHQuY29udGV4dCk6InN0YW5kYWxvbmUiLHI7aWYoYT09PSJmb3JtYXR0aW5nIiYmcy5mb3JtYXR0aW5nVmFsdWVzKXtsZXQgbz1zLmRlZmF1bHRGb3JtYXR0aW5nV2lkdGh8fHMuZGVmYXVsdFdpZHRoLGw9dD8ud2lkdGg/U3RyaW5nKHQud2lkdGgpOm87cj1zLmZvcm1hdHRpbmdWYWx1ZXNbbF18fHMuZm9ybWF0dGluZ1ZhbHVlc1tvXX1lbHNle2xldCBvPXMuZGVmYXVsdFdpZHRoLGw9dD8ud2lkdGg/U3RyaW5nKHQud2lkdGgpOnMuZGVmYXVsdFdpZHRoO3I9cy52YWx1ZXNbbF18fHMudmFsdWVzW29dfWxldCBuPXMuYXJndW1lbnRDYWxsYmFjaz9zLmFyZ3VtZW50Q2FsbGJhY2soZSk6ZTtyZXR1cm4gcltuXX19dmFyIGd1dD1nKCgpPT57aSh0OSwiYnVpbGRMb2NhbGl6ZUZuIil9KTt2YXIgQ0xhLFRMYSwkTGEsRExhLExMYSxFTGEsUExhLGJ1dCx2dXQ9ZygoKT0+e2d1dCgpO0NMYT17bmFycm93OlsiQiIsIkEiXSxhYmJyZXZpYXRlZDpbIkJDIiwiQUQiXSx3aWRlOlsiQmVmb3JlIENocmlzdCIsIkFubm8gRG9taW5pIl19LFRMYT17bmFycm93OlsiMSIsIjIiLCIzIiwiNCJdLGFiYnJldmlhdGVkOlsiUTEiLCJRMiIsIlEzIiwiUTQiXSx3aWRlOlsiMXN0IHF1YXJ0ZXIiLCIybmQgcXVhcnRlciIsIjNyZCBxdWFydGVyIiwiNHRoIHF1YXJ0ZXIiXX0sJExhPXtuYXJyb3c6WyJKIiwiRiIsIk0iLCJBIiwiTSIsIkoiLCJKIiwiQSIsIlMiLCJPIiwiTiIsIkQiXSxhYmJyZXZpYXRlZDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLHdpZGU6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdfSxETGE9e25hcnJvdzpbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSxzaG9ydDpbIlN1IiwiTW8iLCJUdSIsIldlIiwiVGgiLCJGciIsIlNhIl0sYWJicmV2aWF0ZWQ6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSx3aWRlOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXX0sTExhPXtuYXJyb3c6e2FtOiJhIixwbToicCIsbWlkbmlnaHQ6Im1pIixub29uOiJuIixtb3JuaW5nOiJtb3JuaW5nIixhZnRlcm5vb246ImFmdGVybm9vbiIsZXZlbmluZzoiZXZlbmluZyIsbmlnaHQ6Im5pZ2h0In0sYWJicmV2aWF0ZWQ6e2FtOiJBTSIscG06IlBNIixtaWRuaWdodDoibWlkbmlnaHQiLG5vb246Im5vb24iLG1vcm5pbmc6Im1vcm5pbmciLGFmdGVybm9vbjoiYWZ0ZXJub29uIixldmVuaW5nOiJldmVuaW5nIixuaWdodDoibmlnaHQifSx3aWRlOnthbToiYS5tLiIscG06InAubS4iLG1pZG5pZ2h0OiJtaWRuaWdodCIsbm9vbjoibm9vbiIsbW9ybmluZzoibW9ybmluZyIsYWZ0ZXJub29uOiJhZnRlcm5vb24iLGV2ZW5pbmc6ImV2ZW5pbmciLG5pZ2h0OiJuaWdodCJ9fSxFTGE9e25hcnJvdzp7YW06ImEiLHBtOiJwIixtaWRuaWdodDoibWkiLG5vb246Im4iLG1vcm5pbmc6ImluIHRoZSBtb3JuaW5nIixhZnRlcm5vb246ImluIHRoZSBhZnRlcm5vb24iLGV2ZW5pbmc6ImluIHRoZSBldmVuaW5nIixuaWdodDoiYXQgbmlnaHQifSxhYmJyZXZpYXRlZDp7YW06IkFNIixwbToiUE0iLG1pZG5pZ2h0OiJtaWRuaWdodCIsbm9vbjoibm9vbiIsbW9ybmluZzoiaW4gdGhlIG1vcm5pbmciLGFmdGVybm9vbjoiaW4gdGhlIGFmdGVybm9vbiIsZXZlbmluZzoiaW4gdGhlIGV2ZW5pbmciLG5pZ2h0OiJhdCBuaWdodCJ9LHdpZGU6e2FtOiJhLm0uIixwbToicC5tLiIsbWlkbmlnaHQ6Im1pZG5pZ2h0Iixub29uOiJub29uIixtb3JuaW5nOiJpbiB0aGUgbW9ybmluZyIsYWZ0ZXJub29uOiJpbiB0aGUgYWZ0ZXJub29uIixldmVuaW5nOiJpbiB0aGUgZXZlbmluZyIsbmlnaHQ6ImF0IG5pZ2h0In19LFBMYT1pKChzLGUpPT57bGV0IHQ9TnVtYmVyKHMpLGE9dCUxMDA7aWYoYT4yMHx8YTwxMClzd2l0Y2goYSUxMCl7Y2FzZSAxOnJldHVybiB0KyJzdCI7Y2FzZSAyOnJldHVybiB0KyJuZCI7Y2FzZSAzOnJldHVybiB0KyJyZCJ9cmV0dXJuIHQrInRoIn0sIm9yZGluYWxOdW1iZXIiKSxidXQ9e29yZGluYWxOdW1iZXI6UExhLGVyYTp0OSh7dmFsdWVzOkNMYSxkZWZhdWx0V2lkdGg6IndpZGUifSkscXVhcnRlcjp0OSh7dmFsdWVzOlRMYSxkZWZhdWx0V2lkdGg6IndpZGUiLGFyZ3VtZW50Q2FsbGJhY2s6aShzPT5zLTEsImFyZ3VtZW50Q2FsbGJhY2siKX0pLG1vbnRoOnQ5KHt2YWx1ZXM6JExhLGRlZmF1bHRXaWR0aDoid2lkZSJ9KSxkYXk6dDkoe3ZhbHVlczpETGEsZGVmYXVsdFdpZHRoOiJ3aWRlIn0pLGRheVBlcmlvZDp0OSh7dmFsdWVzOkxMYSxkZWZhdWx0V2lkdGg6IndpZGUiLGZvcm1hdHRpbmdWYWx1ZXM6RUxhLGRlZmF1bHRGb3JtYXR0aW5nV2lkdGg6IndpZGUifSl9fSk7ZnVuY3Rpb24gYTkocyl7cmV0dXJuKGUsdD17fSk9PntsZXQgYT10LndpZHRoLHI9YSYmcy5tYXRjaFBhdHRlcm5zW2FdfHxzLm1hdGNoUGF0dGVybnNbcy5kZWZhdWx0TWF0Y2hXaWR0aF0sbj1lLm1hdGNoKHIpO2lmKCFuKXJldHVybiBudWxsO2xldCBvPW5bMF0sbD1hJiZzLnBhcnNlUGF0dGVybnNbYV18fHMucGFyc2VQYXR0ZXJuc1tzLmRlZmF1bHRQYXJzZVdpZHRoXSxwPUFycmF5LmlzQXJyYXkobCk/QUxhKGwsYz0+Yy50ZXN0KG8pKTpJTGEobCxjPT5jLnRlc3QobykpLGQ7ZD1zLnZhbHVlQ2FsbGJhY2s/cy52YWx1ZUNhbGxiYWNrKHApOnAsZD10LnZhbHVlQ2FsbGJhY2s/dC52YWx1ZUNhbGxiYWNrKGQpOmQ7bGV0IHU9ZS5zbGljZShvLmxlbmd0aCk7cmV0dXJue3ZhbHVlOmQscmVzdDp1fX19ZnVuY3Rpb24gSUxhKHMsZSl7Zm9yKGxldCB0IGluIHMpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsdCkmJmUoc1t0XSkpcmV0dXJuIHR9ZnVuY3Rpb24gQUxhKHMsZSl7Zm9yKGxldCB0PTA7dDxzLmxlbmd0aDt0KyspaWYoZShzW3RdKSlyZXR1cm4gdH12YXIgeHV0PWcoKCk9PntpKGE5LCJidWlsZE1hdGNoRm4iKTtpKElMYSwiZmluZEtleSIpO2koQUxhLCJmaW5kSW5kZXgiKX0pO2Z1bmN0aW9uIHl1dChzKXtyZXR1cm4oZSx0PXt9KT0+e2xldCBhPWUubWF0Y2gocy5tYXRjaFBhdHRlcm4pO2lmKCFhKXJldHVybiBudWxsO2xldCByPWFbMF0sbj1lLm1hdGNoKHMucGFyc2VQYXR0ZXJuKTtpZighbilyZXR1cm4gbnVsbDtsZXQgbz1zLnZhbHVlQ2FsbGJhY2s/cy52YWx1ZUNhbGxiYWNrKG5bMF0pOm5bMF07bz10LnZhbHVlQ2FsbGJhY2s/dC52YWx1ZUNhbGxiYWNrKG8pOm87bGV0IGw9ZS5zbGljZShyLmxlbmd0aCk7cmV0dXJue3ZhbHVlOm8scmVzdDpsfX19dmFyIHd1dD1nKCgpPT57aSh5dXQsImJ1aWxkTWF0Y2hQYXR0ZXJuRm4iKX0pO3ZhciBOTGEsUkxhLE9MYSxGTGEsQkxhLEhMYSxxTGEsakxhLFZMYSxVTGEsV0xhLEdMYSxrdXQsU3V0PWcoKCk9Pnt4dXQoKTt3dXQoKTtOTGE9L14oXGQrKSh0aHxzdHxuZHxyZCk/L2ksUkxhPS9cZCsvaSxPTGE9e25hcnJvdzovXihifGEpL2ksYWJicmV2aWF0ZWQ6L14oYlwuP1xzP2NcLj98YlwuP1xzP2NcLj9ccz9lXC4/fGFcLj9ccz9kXC4/fGNcLj9ccz9lXC4/KS9pLHdpZGU6L14oYmVmb3JlIGNocmlzdHxiZWZvcmUgY29tbW9uIGVyYXxhbm5vIGRvbWluaXxjb21tb24gZXJhKS9pfSxGTGE9e2FueTpbL15iL2ksL14oYXxjKS9pXX0sQkxhPXtuYXJyb3c6L15bMTIzNF0vaSxhYmJyZXZpYXRlZDovXnFbMTIzNF0vaSx3aWRlOi9eWzEyMzRdKHRofHN0fG5kfHJkKT8gcXVhcnRlci9pfSxITGE9e2FueTpbLzEvaSwvMi9pLC8zL2ksLzQvaV19LHFMYT17bmFycm93Oi9eW2pmbWFzb25kXS9pLGFiYnJldmlhdGVkOi9eKGphbnxmZWJ8bWFyfGFwcnxtYXl8anVufGp1bHxhdWd8c2VwfG9jdHxub3Z8ZGVjKS9pLHdpZGU6L14oamFudWFyeXxmZWJydWFyeXxtYXJjaHxhcHJpbHxtYXl8anVuZXxqdWx5fGF1Z3VzdHxzZXB0ZW1iZXJ8b2N0b2Jlcnxub3ZlbWJlcnxkZWNlbWJlcikvaX0sakxhPXtuYXJyb3c6Wy9eai9pLC9eZi9pLC9ebS9pLC9eYS9pLC9ebS9pLC9eai9pLC9eai9pLC9eYS9pLC9ecy9pLC9eby9pLC9ebi9pLC9eZC9pXSxhbnk6Wy9eamEvaSwvXmYvaSwvXm1hci9pLC9eYXAvaSwvXm1heS9pLC9eanVuL2ksL15qdWwvaSwvXmF1L2ksL15zL2ksL15vL2ksL15uL2ksL15kL2ldfSxWTGE9e25hcnJvdzovXltzbXR3Zl0vaSxzaG9ydDovXihzdXxtb3x0dXx3ZXx0aHxmcnxzYSkvaSxhYmJyZXZpYXRlZDovXihzdW58bW9ufHR1ZXx3ZWR8dGh1fGZyaXxzYXQpL2ksd2lkZTovXihzdW5kYXl8bW9uZGF5fHR1ZXNkYXl8d2VkbmVzZGF5fHRodXJzZGF5fGZyaWRheXxzYXR1cmRheSkvaX0sVUxhPXtuYXJyb3c6Wy9ecy9pLC9ebS9pLC9edC9pLC9edy9pLC9edC9pLC9eZi9pLC9ecy9pXSxhbnk6Wy9ec3UvaSwvXm0vaSwvXnR1L2ksL153L2ksL150aC9pLC9eZi9pLC9ec2EvaV19LFdMYT17bmFycm93Oi9eKGF8cHxtaXxufChpbiB0aGV8YXQpIChtb3JuaW5nfGFmdGVybm9vbnxldmVuaW5nfG5pZ2h0KSkvaSxhbnk6L14oW2FwXVwuP1xzP21cLj98bWlkbmlnaHR8bm9vbnwoaW4gdGhlfGF0KSAobW9ybmluZ3xhZnRlcm5vb258ZXZlbmluZ3xuaWdodCkpL2l9LEdMYT17YW55OnthbTovXmEvaSxwbTovXnAvaSxtaWRuaWdodDovXm1pL2ksbm9vbjovXm5vL2ksbW9ybmluZzovbW9ybmluZy9pLGFmdGVybm9vbjovYWZ0ZXJub29uL2ksZXZlbmluZzovZXZlbmluZy9pLG5pZ2h0Oi9uaWdodC9pfX0sa3V0PXtvcmRpbmFsTnVtYmVyOnl1dCh7bWF0Y2hQYXR0ZXJuOk5MYSxwYXJzZVBhdHRlcm46UkxhLHZhbHVlQ2FsbGJhY2s6aShzPT5wYXJzZUludChzLDEwKSwidmFsdWVDYWxsYmFjayIpfSksZXJhOmE5KHttYXRjaFBhdHRlcm5zOk9MYSxkZWZhdWx0TWF0Y2hXaWR0aDoid2lkZSIscGFyc2VQYXR0ZXJuczpGTGEsZGVmYXVsdFBhcnNlV2lkdGg6ImFueSJ9KSxxdWFydGVyOmE5KHttYXRjaFBhdHRlcm5zOkJMYSxkZWZhdWx0TWF0Y2hXaWR0aDoid2lkZSIscGFyc2VQYXR0ZXJuczpITGEsZGVmYXVsdFBhcnNlV2lkdGg6ImFueSIsdmFsdWVDYWxsYmFjazppKHM9PnMrMSwidmFsdWVDYWxsYmFjayIpfSksbW9udGg6YTkoe21hdGNoUGF0dGVybnM6cUxhLGRlZmF1bHRNYXRjaFdpZHRoOiJ3aWRlIixwYXJzZVBhdHRlcm5zOmpMYSxkZWZhdWx0UGFyc2VXaWR0aDoiYW55In0pLGRheTphOSh7bWF0Y2hQYXR0ZXJuczpWTGEsZGVmYXVsdE1hdGNoV2lkdGg6IndpZGUiLHBhcnNlUGF0dGVybnM6VUxhLGRlZmF1bHRQYXJzZVdpZHRoOiJhbnkifSksZGF5UGVyaW9kOmE5KHttYXRjaFBhdHRlcm5zOldMYSxkZWZhdWx0TWF0Y2hXaWR0aDoiYW55IixwYXJzZVBhdHRlcm5zOkdMYSxkZWZhdWx0UGFyc2VXaWR0aDoiYW55In0pfX0pO3ZhciBtbCxId3MsX3V0PWcoKCk9PntkdXQoKTtodXQoKTttdXQoKTt2dXQoKTtTdXQoKTttbD17Y29kZToiZW4tVVMiLGZvcm1hdERpc3RhbmNlOmN1dCxmb3JtYXRMb25nOnB1dCxmb3JtYXRSZWxhdGl2ZTpmdXQsbG9jYWxpemU6YnV0LG1hdGNoOmt1dCxvcHRpb25zOnt3ZWVrU3RhcnRzT246MCxmaXJzdFdlZWtDb250YWluc0RhdGU6MX19LEh3cz1tbH0pO3ZhciBKND1nKCgpPT57X3V0KCl9KTtmdW5jdGlvbiB2dGUocyxlKXtsZXQgdD1BZShzLGU/LmluKTtyZXR1cm4gbm8odCxlOSh0KSkrMX12YXIgS3dzLF9wZT1nKCgpPT57cDAoKTttdGUoKTthdCgpO2kodnRlLCJnZXREYXlPZlllYXIiKTtLd3M9dnRlfSk7ZnVuY3Rpb24gczkocyxlKXtsZXQgdD1BZShzLGU/LmluKSxhPStrcih0KS0rUmwodCk7cmV0dXJuIE1hdGgucm91bmQoYS9YMikrMX12YXIgdGtzLHh0ZT1nKCgpPT57d2EoKTt0ZCgpO1Y3KCk7YXQoKTtpKHM5LCJnZXRJU09XZWVrIik7dGtzPXM5fSk7ZnVuY3Rpb24gYnAocyxlKXtsZXQgdD1BZShzLGU/LmluKSxhPXQuZ2V0RnVsbFllYXIoKSxyPUVzKCksbj1lPy5maXJzdFdlZWtDb250YWluc0RhdGU/P2U/LmxvY2FsZT8ub3B0aW9ucz8uZmlyc3RXZWVrQ29udGFpbnNEYXRlPz9yLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZT8/ci5sb2NhbGU/Lm9wdGlvbnM/LmZpcnN0V2Vla0NvbnRhaW5zRGF0ZT8/MSxvPXR0KGU/LmlufHxzLDApO28uc2V0RnVsbFllYXIoYSsxLDAsbiksby5zZXRIb3VycygwLDAsMCwwKTtsZXQgbD1LcyhvLGUpLHA9dHQoZT8uaW58fHMsMCk7cC5zZXRGdWxsWWVhcihhLDAsbikscC5zZXRIb3VycygwLDAsMCwwKTtsZXQgZD1LcyhwLGUpO3JldHVybit0Pj0rbD9hKzE6K3Q+PStkP2E6YS0xfXZhciBsa3MsSXk9ZygoKT0+e0dvKCk7R3QoKTt2MSgpO2F0KCk7aShicCwiZ2V0V2Vla1llYXIiKTtsa3M9YnB9KTtmdW5jdGlvbiBlMyhzLGUpe2xldCB0PUVzKCksYT1lPy5maXJzdFdlZWtDb250YWluc0RhdGU/P2U/LmxvY2FsZT8ub3B0aW9ucz8uZmlyc3RXZWVrQ29udGFpbnNEYXRlPz90LmZpcnN0V2Vla0NvbnRhaW5zRGF0ZT8/dC5sb2NhbGU/Lm9wdGlvbnM/LmZpcnN0V2Vla0NvbnRhaW5zRGF0ZT8/MSxyPWJwKHMsZSksbj10dChlPy5pbnx8cywwKTtyZXR1cm4gbi5zZXRGdWxsWWVhcihyLDAsYSksbi5zZXRIb3VycygwLDAsMCwwKSxLcyhuLGUpfXZhciBta3MseXRlPWcoKCk9PntHbygpO0d0KCk7SXkoKTt2MSgpO2koZTMsInN0YXJ0T2ZXZWVrWWVhciIpO21rcz1lM30pO2Z1bmN0aW9uIGk5KHMsZSl7bGV0IHQ9QWUocyxlPy5pbiksYT0rS3ModCxlKS0rZTModCxlKTtyZXR1cm4gTWF0aC5yb3VuZChhL1gyKSsxfXZhciBra3Msd3RlPWcoKCk9Pnt3YSgpO3YxKCk7eXRlKCk7YXQoKTtpKGk5LCJnZXRXZWVrIik7a2tzPWk5fSk7ZnVuY3Rpb24gUHQocyxlKXtsZXQgdD1zPDA/Ii0iOiIiLGE9TWF0aC5hYnMocykudG9TdHJpbmcoKS5wYWRTdGFydChlLCIwIik7cmV0dXJuIHQrYX12YXIgdDM9ZygoKT0+e2koUHQsImFkZExlYWRpbmdaZXJvcyIpfSk7dmFyIE9sLE1wZT1nKCgpPT57dDMoKTtPbD17eShzLGUpe2xldCB0PXMuZ2V0RnVsbFllYXIoKSxhPXQ+MD90OjEtdDtyZXR1cm4gUHQoZT09PSJ5eSI/YSUxMDA6YSxlLmxlbmd0aCl9LE0ocyxlKXtsZXQgdD1zLmdldE1vbnRoKCk7cmV0dXJuIGU9PT0iTSI/U3RyaW5nKHQrMSk6UHQodCsxLDIpfSxkKHMsZSl7cmV0dXJuIFB0KHMuZ2V0RGF0ZSgpLGUubGVuZ3RoKX0sYShzLGUpe2xldCB0PXMuZ2V0SG91cnMoKS8xMj49MT8icG0iOiJhbSI7c3dpdGNoKGUpe2Nhc2UiYSI6Y2FzZSJhYSI6cmV0dXJuIHQudG9VcHBlckNhc2UoKTtjYXNlImFhYSI6cmV0dXJuIHQ7Y2FzZSJhYWFhYSI6cmV0dXJuIHRbMF07ZGVmYXVsdDpyZXR1cm4gdD09PSJhbSI/ImEubS4iOiJwLm0uIn19LGgocyxlKXtyZXR1cm4gUHQocy5nZXRIb3VycygpJTEyfHwxMixlLmxlbmd0aCl9LEgocyxlKXtyZXR1cm4gUHQocy5nZXRIb3VycygpLGUubGVuZ3RoKX0sbShzLGUpe3JldHVybiBQdChzLmdldE1pbnV0ZXMoKSxlLmxlbmd0aCl9LHMocyxlKXtyZXR1cm4gUHQocy5nZXRTZWNvbmRzKCksZS5sZW5ndGgpfSxTKHMsZSl7bGV0IHQ9ZS5sZW5ndGgsYT1zLmdldE1pbGxpc2Vjb25kcygpLHI9TWF0aC50cnVuYyhhKk1hdGgucG93KDEwLHQtMykpO3JldHVybiBQdChyLGUubGVuZ3RoKX19fSk7ZnVuY3Rpb24gTXV0KHMsZT0iIil7bGV0IHQ9cz4wPyItIjoiKyIsYT1NYXRoLmFicyhzKSxyPU1hdGgudHJ1bmMoYS82MCksbj1hJTYwO3JldHVybiBuPT09MD90K1N0cmluZyhyKTp0K1N0cmluZyhyKStlK1B0KG4sMil9ZnVuY3Rpb24genV0KHMsZSl7cmV0dXJuIHMlNjA9PT0wPyhzPjA/Ii0iOiIrIikrUHQoTWF0aC5hYnMocykvNjAsMik6YTMocyxlKX1mdW5jdGlvbiBhMyhzLGU9IiIpe2xldCB0PXM+MD8iLSI6IisiLGE9TWF0aC5hYnMocykscj1QdChNYXRoLnRydW5jKGEvNjApLDIpLG49UHQoYSU2MCwyKTtyZXR1cm4gdCtyK2Urbn12YXIgcjksQXksQ3V0PWcoKCk9PntfcGUoKTt4dGUoKTtwcCgpO3d0ZSgpO0l5KCk7dDMoKTtNcGUoKTtyOT17YW06ImFtIixwbToicG0iLG1pZG5pZ2h0OiJtaWRuaWdodCIsbm9vbjoibm9vbiIsbW9ybmluZzoibW9ybmluZyIsYWZ0ZXJub29uOiJhZnRlcm5vb24iLGV2ZW5pbmc6ImV2ZW5pbmciLG5pZ2h0OiJuaWdodCJ9LEF5PXtHOmkoZnVuY3Rpb24ocyxlLHQpe2xldCBhPXMuZ2V0RnVsbFllYXIoKT4wPzE6MDtzd2l0Y2goZSl7Y2FzZSJHIjpjYXNlIkdHIjpjYXNlIkdHRyI6cmV0dXJuIHQuZXJhKGEse3dpZHRoOiJhYmJyZXZpYXRlZCJ9KTtjYXNlIkdHR0dHIjpyZXR1cm4gdC5lcmEoYSx7d2lkdGg6Im5hcnJvdyJ9KTtkZWZhdWx0OnJldHVybiB0LmVyYShhLHt3aWR0aDoid2lkZSJ9KX19LCJHIikseTppKGZ1bmN0aW9uKHMsZSx0KXtpZihlPT09InlvIil7bGV0IGE9cy5nZXRGdWxsWWVhcigpLHI9YT4wP2E6MS1hO3JldHVybiB0Lm9yZGluYWxOdW1iZXIocix7dW5pdDoieWVhciJ9KX1yZXR1cm4gT2wueShzLGUpfSwieSIpLFk6aShmdW5jdGlvbihzLGUsdCxhKXtsZXQgcj1icChzLGEpLG49cj4wP3I6MS1yO2lmKGU9PT0iWVkiKXtsZXQgbz1uJTEwMDtyZXR1cm4gUHQobywyKX1yZXR1cm4gZT09PSJZbyI/dC5vcmRpbmFsTnVtYmVyKG4se3VuaXQ6InllYXIifSk6UHQobixlLmxlbmd0aCl9LCJZIiksUjppKGZ1bmN0aW9uKHMsZSl7bGV0IHQ9d24ocyk7cmV0dXJuIFB0KHQsZS5sZW5ndGgpfSwiUiIpLHU6aShmdW5jdGlvbihzLGUpe2xldCB0PXMuZ2V0RnVsbFllYXIoKTtyZXR1cm4gUHQodCxlLmxlbmd0aCl9LCJ1IiksUTppKGZ1bmN0aW9uKHMsZSx0KXtsZXQgYT1NYXRoLmNlaWwoKHMuZ2V0TW9udGgoKSsxKS8zKTtzd2l0Y2goZSl7Y2FzZSJRIjpyZXR1cm4gU3RyaW5nKGEpO2Nhc2UiUVEiOnJldHVybiBQdChhLDIpO2Nhc2UiUW8iOnJldHVybiB0Lm9yZGluYWxOdW1iZXIoYSx7dW5pdDoicXVhcnRlciJ9KTtjYXNlIlFRUSI6cmV0dXJuIHQucXVhcnRlcihhLHt3aWR0aDoiYWJicmV2aWF0ZWQiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7Y2FzZSJRUVFRUSI6cmV0dXJuIHQucXVhcnRlcihhLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJmb3JtYXR0aW5nIn0pO2RlZmF1bHQ6cmV0dXJuIHQucXVhcnRlcihhLHt3aWR0aDoid2lkZSIsY29udGV4dDoiZm9ybWF0dGluZyJ9KX19LCJRIikscTppKGZ1bmN0aW9uKHMsZSx0KXtsZXQgYT1NYXRoLmNlaWwoKHMuZ2V0TW9udGgoKSsxKS8zKTtzd2l0Y2goZSl7Y2FzZSJxIjpyZXR1cm4gU3RyaW5nKGEpO2Nhc2UicXEiOnJldHVybiBQdChhLDIpO2Nhc2UicW8iOnJldHVybiB0Lm9yZGluYWxOdW1iZXIoYSx7dW5pdDoicXVhcnRlciJ9KTtjYXNlInFxcSI6cmV0dXJuIHQucXVhcnRlcihhLHt3aWR0aDoiYWJicmV2aWF0ZWQiLGNvbnRleHQ6InN0YW5kYWxvbmUifSk7Y2FzZSJxcXFxcSI6cmV0dXJuIHQucXVhcnRlcihhLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJzdGFuZGFsb25lIn0pO2RlZmF1bHQ6cmV0dXJuIHQucXVhcnRlcihhLHt3aWR0aDoid2lkZSIsY29udGV4dDoic3RhbmRhbG9uZSJ9KX19LCJxIiksTTppKGZ1bmN0aW9uKHMsZSx0KXtsZXQgYT1zLmdldE1vbnRoKCk7c3dpdGNoKGUpe2Nhc2UiTSI6Y2FzZSJNTSI6cmV0dXJuIE9sLk0ocyxlKTtjYXNlIk1vIjpyZXR1cm4gdC5vcmRpbmFsTnVtYmVyKGErMSx7dW5pdDoibW9udGgifSk7Y2FzZSJNTU0iOnJldHVybiB0Lm1vbnRoKGEse3dpZHRoOiJhYmJyZXZpYXRlZCIsY29udGV4dDoiZm9ybWF0dGluZyJ9KTtjYXNlIk1NTU1NIjpyZXR1cm4gdC5tb250aChhLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJmb3JtYXR0aW5nIn0pO2RlZmF1bHQ6cmV0dXJuIHQubW9udGgoYSx7d2lkdGg6IndpZGUiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSl9fSwiTSIpLEw6aShmdW5jdGlvbihzLGUsdCl7bGV0IGE9cy5nZXRNb250aCgpO3N3aXRjaChlKXtjYXNlIkwiOnJldHVybiBTdHJpbmcoYSsxKTtjYXNlIkxMIjpyZXR1cm4gUHQoYSsxLDIpO2Nhc2UiTG8iOnJldHVybiB0Lm9yZGluYWxOdW1iZXIoYSsxLHt1bml0OiJtb250aCJ9KTtjYXNlIkxMTCI6cmV0dXJuIHQubW9udGgoYSx7d2lkdGg6ImFiYnJldmlhdGVkIixjb250ZXh0OiJzdGFuZGFsb25lIn0pO2Nhc2UiTExMTEwiOnJldHVybiB0Lm1vbnRoKGEse3dpZHRoOiJuYXJyb3ciLGNvbnRleHQ6InN0YW5kYWxvbmUifSk7ZGVmYXVsdDpyZXR1cm4gdC5tb250aChhLHt3aWR0aDoid2lkZSIsY29udGV4dDoic3RhbmRhbG9uZSJ9KX19LCJMIiksdzppKGZ1bmN0aW9uKHMsZSx0LGEpe2xldCByPWk5KHMsYSk7cmV0dXJuIGU9PT0id28iP3Qub3JkaW5hbE51bWJlcihyLHt1bml0OiJ3ZWVrIn0pOlB0KHIsZS5sZW5ndGgpfSwidyIpLEk6aShmdW5jdGlvbihzLGUsdCl7bGV0IGE9czkocyk7cmV0dXJuIGU9PT0iSW8iP3Qub3JkaW5hbE51bWJlcihhLHt1bml0OiJ3ZWVrIn0pOlB0KGEsZS5sZW5ndGgpfSwiSSIpLGQ6aShmdW5jdGlvbihzLGUsdCl7cmV0dXJuIGU9PT0iZG8iP3Qub3JkaW5hbE51bWJlcihzLmdldERhdGUoKSx7dW5pdDoiZGF0ZSJ9KTpPbC5kKHMsZSl9LCJkIiksRDppKGZ1bmN0aW9uKHMsZSx0KXtsZXQgYT12dGUocyk7cmV0dXJuIGU9PT0iRG8iP3Qub3JkaW5hbE51bWJlcihhLHt1bml0OiJkYXlPZlllYXIifSk6UHQoYSxlLmxlbmd0aCl9LCJEIiksRTppKGZ1bmN0aW9uKHMsZSx0KXtsZXQgYT1zLmdldERheSgpO3N3aXRjaChlKXtjYXNlIkUiOmNhc2UiRUUiOmNhc2UiRUVFIjpyZXR1cm4gdC5kYXkoYSx7d2lkdGg6ImFiYnJldmlhdGVkIixjb250ZXh0OiJmb3JtYXR0aW5nIn0pO2Nhc2UiRUVFRUUiOnJldHVybiB0LmRheShhLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJmb3JtYXR0aW5nIn0pO2Nhc2UiRUVFRUVFIjpyZXR1cm4gdC5kYXkoYSx7d2lkdGg6InNob3J0Iixjb250ZXh0OiJmb3JtYXR0aW5nIn0pO2RlZmF1bHQ6cmV0dXJuIHQuZGF5KGEse3dpZHRoOiJ3aWRlIixjb250ZXh0OiJmb3JtYXR0aW5nIn0pfX0sIkUiKSxlOmkoZnVuY3Rpb24ocyxlLHQsYSl7bGV0IHI9cy5nZXREYXkoKSxuPShyLWEud2Vla1N0YXJ0c09uKzgpJTd8fDc7c3dpdGNoKGUpe2Nhc2UiZSI6cmV0dXJuIFN0cmluZyhuKTtjYXNlImVlIjpyZXR1cm4gUHQobiwyKTtjYXNlImVvIjpyZXR1cm4gdC5vcmRpbmFsTnVtYmVyKG4se3VuaXQ6ImRheSJ9KTtjYXNlImVlZSI6cmV0dXJuIHQuZGF5KHIse3dpZHRoOiJhYmJyZXZpYXRlZCIsY29udGV4dDoiZm9ybWF0dGluZyJ9KTtjYXNlImVlZWVlIjpyZXR1cm4gdC5kYXkocix7d2lkdGg6Im5hcnJvdyIsY29udGV4dDoiZm9ybWF0dGluZyJ9KTtjYXNlImVlZWVlZSI6cmV0dXJuIHQuZGF5KHIse3dpZHRoOiJzaG9ydCIsY29udGV4dDoiZm9ybWF0dGluZyJ9KTtkZWZhdWx0OnJldHVybiB0LmRheShyLHt3aWR0aDoid2lkZSIsY29udGV4dDoiZm9ybWF0dGluZyJ9KX19LCJlIiksYzppKGZ1bmN0aW9uKHMsZSx0LGEpe2xldCByPXMuZ2V0RGF5KCksbj0oci1hLndlZWtTdGFydHNPbis4KSU3fHw3O3N3aXRjaChlKXtjYXNlImMiOnJldHVybiBTdHJpbmcobik7Y2FzZSJjYyI6cmV0dXJuIFB0KG4sZS5sZW5ndGgpO2Nhc2UiY28iOnJldHVybiB0Lm9yZGluYWxOdW1iZXIobix7dW5pdDoiZGF5In0pO2Nhc2UiY2NjIjpyZXR1cm4gdC5kYXkocix7d2lkdGg6ImFiYnJldmlhdGVkIixjb250ZXh0OiJzdGFuZGFsb25lIn0pO2Nhc2UiY2NjY2MiOnJldHVybiB0LmRheShyLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJzdGFuZGFsb25lIn0pO2Nhc2UiY2NjY2NjIjpyZXR1cm4gdC5kYXkocix7d2lkdGg6InNob3J0Iixjb250ZXh0OiJzdGFuZGFsb25lIn0pO2RlZmF1bHQ6cmV0dXJuIHQuZGF5KHIse3dpZHRoOiJ3aWRlIixjb250ZXh0OiJzdGFuZGFsb25lIn0pfX0sImMiKSxpOmkoZnVuY3Rpb24ocyxlLHQpe2xldCBhPXMuZ2V0RGF5KCkscj1hPT09MD83OmE7c3dpdGNoKGUpe2Nhc2UiaSI6cmV0dXJuIFN0cmluZyhyKTtjYXNlImlpIjpyZXR1cm4gUHQocixlLmxlbmd0aCk7Y2FzZSJpbyI6cmV0dXJuIHQub3JkaW5hbE51bWJlcihyLHt1bml0OiJkYXkifSk7Y2FzZSJpaWkiOnJldHVybiB0LmRheShhLHt3aWR0aDoiYWJicmV2aWF0ZWQiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7Y2FzZSJpaWlpaSI6cmV0dXJuIHQuZGF5KGEse3dpZHRoOiJuYXJyb3ciLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7Y2FzZSJpaWlpaWkiOnJldHVybiB0LmRheShhLHt3aWR0aDoic2hvcnQiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7ZGVmYXVsdDpyZXR1cm4gdC5kYXkoYSx7d2lkdGg6IndpZGUiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSl9fSwiaSIpLGE6aShmdW5jdGlvbihzLGUsdCl7bGV0IHI9cy5nZXRIb3VycygpLzEyPj0xPyJwbSI6ImFtIjtzd2l0Y2goZSl7Y2FzZSJhIjpjYXNlImFhIjpyZXR1cm4gdC5kYXlQZXJpb2Qocix7d2lkdGg6ImFiYnJldmlhdGVkIixjb250ZXh0OiJmb3JtYXR0aW5nIn0pO2Nhc2UiYWFhIjpyZXR1cm4gdC5kYXlQZXJpb2Qocix7d2lkdGg6ImFiYnJldmlhdGVkIixjb250ZXh0OiJmb3JtYXR0aW5nIn0pLnRvTG93ZXJDYXNlKCk7Y2FzZSJhYWFhYSI6cmV0dXJuIHQuZGF5UGVyaW9kKHIse3dpZHRoOiJuYXJyb3ciLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7ZGVmYXVsdDpyZXR1cm4gdC5kYXlQZXJpb2Qocix7d2lkdGg6IndpZGUiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSl9fSwiYSIpLGI6aShmdW5jdGlvbihzLGUsdCl7bGV0IGE9cy5nZXRIb3VycygpLHI7c3dpdGNoKGE9PT0xMj9yPXI5Lm5vb246YT09PTA/cj1yOS5taWRuaWdodDpyPWEvMTI+PTE/InBtIjoiYW0iLGUpe2Nhc2UiYiI6Y2FzZSJiYiI6cmV0dXJuIHQuZGF5UGVyaW9kKHIse3dpZHRoOiJhYmJyZXZpYXRlZCIsY29udGV4dDoiZm9ybWF0dGluZyJ9KTtjYXNlImJiYiI6cmV0dXJuIHQuZGF5UGVyaW9kKHIse3dpZHRoOiJhYmJyZXZpYXRlZCIsY29udGV4dDoiZm9ybWF0dGluZyJ9KS50b0xvd2VyQ2FzZSgpO2Nhc2UiYmJiYmIiOnJldHVybiB0LmRheVBlcmlvZChyLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJmb3JtYXR0aW5nIn0pO2RlZmF1bHQ6cmV0dXJuIHQuZGF5UGVyaW9kKHIse3dpZHRoOiJ3aWRlIixjb250ZXh0OiJmb3JtYXR0aW5nIn0pfX0sImIiKSxCOmkoZnVuY3Rpb24ocyxlLHQpe2xldCBhPXMuZ2V0SG91cnMoKSxyO3N3aXRjaChhPj0xNz9yPXI5LmV2ZW5pbmc6YT49MTI/cj1yOS5hZnRlcm5vb246YT49ND9yPXI5Lm1vcm5pbmc6cj1yOS5uaWdodCxlKXtjYXNlIkIiOmNhc2UiQkIiOmNhc2UiQkJCIjpyZXR1cm4gdC5kYXlQZXJpb2Qocix7d2lkdGg6ImFiYnJldmlhdGVkIixjb250ZXh0OiJmb3JtYXR0aW5nIn0pO2Nhc2UiQkJCQkIiOnJldHVybiB0LmRheVBlcmlvZChyLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJmb3JtYXR0aW5nIn0pO2RlZmF1bHQ6cmV0dXJuIHQuZGF5UGVyaW9kKHIse3dpZHRoOiJ3aWRlIixjb250ZXh0OiJmb3JtYXR0aW5nIn0pfX0sIkIiKSxoOmkoZnVuY3Rpb24ocyxlLHQpe2lmKGU9PT0iaG8iKXtsZXQgYT1zLmdldEhvdXJzKCklMTI7cmV0dXJuIGE9PT0wJiYoYT0xMiksdC5vcmRpbmFsTnVtYmVyKGEse3VuaXQ6ImhvdXIifSl9cmV0dXJuIE9sLmgocyxlKX0sImgiKSxIOmkoZnVuY3Rpb24ocyxlLHQpe3JldHVybiBlPT09IkhvIj90Lm9yZGluYWxOdW1iZXIocy5nZXRIb3VycygpLHt1bml0OiJob3VyIn0pOk9sLkgocyxlKX0sIkgiKSxLOmkoZnVuY3Rpb24ocyxlLHQpe2xldCBhPXMuZ2V0SG91cnMoKSUxMjtyZXR1cm4gZT09PSJLbyI/dC5vcmRpbmFsTnVtYmVyKGEse3VuaXQ6ImhvdXIifSk6UHQoYSxlLmxlbmd0aCl9LCJLIiksazppKGZ1bmN0aW9uKHMsZSx0KXtsZXQgYT1zLmdldEhvdXJzKCk7cmV0dXJuIGE9PT0wJiYoYT0yNCksZT09PSJrbyI/dC5vcmRpbmFsTnVtYmVyKGEse3VuaXQ6ImhvdXIifSk6UHQoYSxlLmxlbmd0aCl9LCJrIiksbTppKGZ1bmN0aW9uKHMsZSx0KXtyZXR1cm4gZT09PSJtbyI/dC5vcmRpbmFsTnVtYmVyKHMuZ2V0TWludXRlcygpLHt1bml0OiJtaW51dGUifSk6T2wubShzLGUpfSwibSIpLHM6aShmdW5jdGlvbihzLGUsdCl7cmV0dXJuIGU9PT0ic28iP3Qub3JkaW5hbE51bWJlcihzLmdldFNlY29uZHMoKSx7dW5pdDoic2Vjb25kIn0pOk9sLnMocyxlKX0sInMiKSxTOmkoZnVuY3Rpb24ocyxlKXtyZXR1cm4gT2wuUyhzLGUpfSwiUyIpLFg6aShmdW5jdGlvbihzLGUsdCl7bGV0IGE9cy5nZXRUaW1lem9uZU9mZnNldCgpO2lmKGE9PT0wKXJldHVybiJaIjtzd2l0Y2goZSl7Y2FzZSJYIjpyZXR1cm4genV0KGEpO2Nhc2UiWFhYWCI6Y2FzZSJYWCI6cmV0dXJuIGEzKGEpO2RlZmF1bHQ6cmV0dXJuIGEzKGEsIjoiKX19LCJYIikseDppKGZ1bmN0aW9uKHMsZSx0KXtsZXQgYT1zLmdldFRpbWV6b25lT2Zmc2V0KCk7c3dpdGNoKGUpe2Nhc2UieCI6cmV0dXJuIHp1dChhKTtjYXNlInh4eHgiOmNhc2UieHgiOnJldHVybiBhMyhhKTtkZWZhdWx0OnJldHVybiBhMyhhLCI6Iil9fSwieCIpLE86aShmdW5jdGlvbihzLGUsdCl7bGV0IGE9cy5nZXRUaW1lem9uZU9mZnNldCgpO3N3aXRjaChlKXtjYXNlIk8iOmNhc2UiT08iOmNhc2UiT09PIjpyZXR1cm4iR01UIitNdXQoYSwiOiIpO2RlZmF1bHQ6cmV0dXJuIkdNVCIrYTMoYSwiOiIpfX0sIk8iKSx6OmkoZnVuY3Rpb24ocyxlLHQpe2xldCBhPXMuZ2V0VGltZXpvbmVPZmZzZXQoKTtzd2l0Y2goZSl7Y2FzZSJ6IjpjYXNlInp6IjpjYXNlInp6eiI6cmV0dXJuIkdNVCIrTXV0KGEsIjoiKTtkZWZhdWx0OnJldHVybiJHTVQiK2EzKGEsIjoiKX19LCJ6IiksdDppKGZ1bmN0aW9uKHMsZSx0KXtsZXQgYT1NYXRoLnRydW5jKCtzLzFlMyk7cmV0dXJuIFB0KGEsZS5sZW5ndGgpfSwidCIpLFQ6aShmdW5jdGlvbihzLGUsdCl7cmV0dXJuIFB0KCtzLGUubGVuZ3RoKX0sIlQiKX07aShNdXQsImZvcm1hdFRpbWV6b25lU2hvcnQiKTtpKHp1dCwiZm9ybWF0VGltZXpvbmVXaXRoT3B0aW9uYWxNaW51dGVzIik7aShhMywiZm9ybWF0VGltZXpvbmUiKX0pO3ZhciBUdXQsJHV0LEtMYSx2cCx6cGU9ZygoKT0+e1R1dD1pKChzLGUpPT57c3dpdGNoKHMpe2Nhc2UiUCI6cmV0dXJuIGUuZGF0ZSh7d2lkdGg6InNob3J0In0pO2Nhc2UiUFAiOnJldHVybiBlLmRhdGUoe3dpZHRoOiJtZWRpdW0ifSk7Y2FzZSJQUFAiOnJldHVybiBlLmRhdGUoe3dpZHRoOiJsb25nIn0pO2RlZmF1bHQ6cmV0dXJuIGUuZGF0ZSh7d2lkdGg6ImZ1bGwifSl9fSwiZGF0ZUxvbmdGb3JtYXR0ZXIiKSwkdXQ9aSgocyxlKT0+e3N3aXRjaChzKXtjYXNlInAiOnJldHVybiBlLnRpbWUoe3dpZHRoOiJzaG9ydCJ9KTtjYXNlInBwIjpyZXR1cm4gZS50aW1lKHt3aWR0aDoibWVkaXVtIn0pO2Nhc2UicHBwIjpyZXR1cm4gZS50aW1lKHt3aWR0aDoibG9uZyJ9KTtkZWZhdWx0OnJldHVybiBlLnRpbWUoe3dpZHRoOiJmdWxsIn0pfX0sInRpbWVMb25nRm9ybWF0dGVyIiksS0xhPWkoKHMsZSk9PntsZXQgdD1zLm1hdGNoKC8oUCspKHArKT8vKXx8W10sYT10WzFdLHI9dFsyXTtpZighcilyZXR1cm4gVHV0KHMsZSk7bGV0IG47c3dpdGNoKGEpe2Nhc2UiUCI6bj1lLmRhdGVUaW1lKHt3aWR0aDoic2hvcnQifSk7YnJlYWs7Y2FzZSJQUCI6bj1lLmRhdGVUaW1lKHt3aWR0aDoibWVkaXVtIn0pO2JyZWFrO2Nhc2UiUFBQIjpuPWUuZGF0ZVRpbWUoe3dpZHRoOiJsb25nIn0pO2JyZWFrO2RlZmF1bHQ6bj1lLmRhdGVUaW1lKHt3aWR0aDoiZnVsbCJ9KTticmVha31yZXR1cm4gbi5yZXBsYWNlKCJ7e2RhdGV9fSIsVHV0KGEsZSkpLnJlcGxhY2UoInt7dGltZX19IiwkdXQocixlKSl9LCJkYXRlVGltZUxvbmdGb3JtYXR0ZXIiKSx2cD17cDokdXQsUDpLTGF9fSk7ZnVuY3Rpb24ga3RlKHMpe3JldHVybiBZTGEudGVzdChzKX1mdW5jdGlvbiBTdGUocyl7cmV0dXJuIFpMYS50ZXN0KHMpfWZ1bmN0aW9uIE55KHMsZSx0KXtsZXQgYT1RTGEocyxlLHQpO2lmKGNvbnNvbGUud2FybihhKSxYTGEuaW5jbHVkZXMocykpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYSl9ZnVuY3Rpb24gUUxhKHMsZSx0KXtsZXQgYT1zWzBdPT09IlkiPyJ5ZWFycyI6ImRheXMgb2YgdGhlIG1vbnRoIjtyZXR1cm5gVXNlIFxgJHtzLnRvTG93ZXJDYXNlKCl9XGAgaW5zdGVhZCBvZiBcYCR7c31cYCAoaW4gXGAke2V9XGApIGZvciBmb3JtYXR0aW5nICR7YX0gdG8gdGhlIGlucHV0IFxgJHt0fVxgOyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRgfXZhciBZTGEsWkxhLFhMYSxDcGU9ZygoKT0+e1lMYT0vXkQrJC8sWkxhPS9eWSskLyxYTGE9WyJEIiwiREQiLCJZWSIsIllZWVkiXTtpKGt0ZSwiaXNQcm90ZWN0ZWREYXlPZlllYXJUb2tlbiIpO2koU3RlLCJpc1Byb3RlY3RlZFdlZWtZZWFyVG9rZW4iKTtpKE55LCJ3YXJuT3JUaHJvd1Byb3RlY3RlZEVycm9yIik7aShRTGEsIm1lc3NhZ2UiKX0pO2Z1bmN0aW9uIFJ5KHMsZSx0KXtsZXQgYT1FcygpLHI9dD8ubG9jYWxlPz9hLmxvY2FsZT8/bWwsbj10Py5maXJzdFdlZWtDb250YWluc0RhdGU/P3Q/LmxvY2FsZT8ub3B0aW9ucz8uZmlyc3RXZWVrQ29udGFpbnNEYXRlPz9hLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZT8/YS5sb2NhbGU/Lm9wdGlvbnM/LmZpcnN0V2Vla0NvbnRhaW5zRGF0ZT8/MSxvPXQ/LndlZWtTdGFydHNPbj8/dD8ubG9jYWxlPy5vcHRpb25zPy53ZWVrU3RhcnRzT24/P2Eud2Vla1N0YXJ0c09uPz9hLmxvY2FsZT8ub3B0aW9ucz8ud2Vla1N0YXJ0c09uPz8wLGw9QWUocyx0Py5pbik7aWYoIWtvKGwpKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIHRpbWUgdmFsdWUiKTtsZXQgcD1lLm1hdGNoKGVFYSkubWFwKHU9PntsZXQgYz11WzBdO2lmKGM9PT0icCJ8fGM9PT0iUCIpe2xldCBiPXZwW2NdO3JldHVybiBiKHUsci5mb3JtYXRMb25nKX1yZXR1cm4gdX0pLmpvaW4oIiIpLm1hdGNoKEpMYSkubWFwKHU9PntpZih1PT09IicnIilyZXR1cm57aXNUb2tlbjohMSx2YWx1ZToiJyJ9O2xldCBjPXVbMF07aWYoYz09PSInIilyZXR1cm57aXNUb2tlbjohMSx2YWx1ZTppRWEodSl9O2lmKEF5W2NdKXJldHVybntpc1Rva2VuOiEwLHZhbHVlOnV9O2lmKGMubWF0Y2goc0VhKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiRm9ybWF0IHN0cmluZyBjb250YWlucyBhbiB1bmVzY2FwZWQgbGF0aW4gYWxwaGFiZXQgY2hhcmFjdGVyIGAiK2MrImAiKTtyZXR1cm57aXNUb2tlbjohMSx2YWx1ZTp1fX0pO3IubG9jYWxpemUucHJlcHJvY2Vzc29yJiYocD1yLmxvY2FsaXplLnByZXByb2Nlc3NvcihsLHApKTtsZXQgZD17Zmlyc3RXZWVrQ29udGFpbnNEYXRlOm4sd2Vla1N0YXJ0c09uOm8sbG9jYWxlOnJ9O3JldHVybiBwLm1hcCh1PT57aWYoIXUuaXNUb2tlbilyZXR1cm4gdS52YWx1ZTtsZXQgYz11LnZhbHVlOyghdD8udXNlQWRkaXRpb25hbFdlZWtZZWFyVG9rZW5zJiZTdGUoYyl8fCF0Py51c2VBZGRpdGlvbmFsRGF5T2ZZZWFyVG9rZW5zJiZrdGUoYykpJiZOeShjLGUsU3RyaW5nKHMpKTtsZXQgYj1BeVtjWzBdXTtyZXR1cm4gYihsLGMsci5sb2NhbGl6ZSxkKX0pLmpvaW4oIiIpfWZ1bmN0aW9uIGlFYShzKXtsZXQgZT1zLm1hdGNoKHRFYSk7cmV0dXJuIGU/ZVsxXS5yZXBsYWNlKGFFYSwiJyIpOnN9dmFyIEpMYSxlRWEsdEVhLGFFYSxzRWEsWWtzLFRwZT1nKCgpPT57SjQoKTtHbygpO0N1dCgpO3pwZSgpO0NwZSgpO2gwKCk7YXQoKTtKTGE9L1t5WVFxTUx3SWREZWNpaEhLa21zXW98KFx3KVwxKnwnJ3wnKCcnfFteJ10pKygnfCQpfC4vZyxlRWE9L1ArcCt8UCt8cCt8Jyd8JygnJ3xbXiddKSsoJ3wkKXwuL2csdEVhPS9eJyhbXl0qPyknPyQvLGFFYT0vJycvZyxzRWE9L1thLXpBLVpdLztpKFJ5LCJmb3JtYXQiKTtpKGlFYSwiY2xlYW5Fc2NhcGVkU3RyaW5nIik7WWtzPVJ5fSk7ZnVuY3Rpb24gX3RlKHMsZSx0KXtsZXQgYT1FcygpLHI9dD8ubG9jYWxlPz9hLmxvY2FsZT8/bWwsbj0yNTIwLG89S28ocyxlKTtpZihpc05hTihvKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCB0aW1lIHZhbHVlIik7bGV0IGw9T2JqZWN0LmFzc2lnbih7fSx0LHthZGRTdWZmaXg6dD8uYWRkU3VmZml4LGNvbXBhcmlzb246b30pLFtwLGRdPVZ0KHQ/LmluLC4uLm8+MD9bZSxzXTpbcyxlXSksdT1pZChkLHApLGM9KEZpKGQpLUZpKHApKS8xZTMsYj1NYXRoLnJvdW5kKCh1LWMpLzYwKSx2O2lmKGI8MilyZXR1cm4gdD8uaW5jbHVkZVNlY29uZHM/dTw1P3IuZm9ybWF0RGlzdGFuY2UoImxlc3NUaGFuWFNlY29uZHMiLDUsbCk6dTwxMD9yLmZvcm1hdERpc3RhbmNlKCJsZXNzVGhhblhTZWNvbmRzIiwxMCxsKTp1PDIwP3IuZm9ybWF0RGlzdGFuY2UoImxlc3NUaGFuWFNlY29uZHMiLDIwLGwpOnU8NDA/ci5mb3JtYXREaXN0YW5jZSgiaGFsZkFNaW51dGUiLDAsbCk6dTw2MD9yLmZvcm1hdERpc3RhbmNlKCJsZXNzVGhhblhNaW51dGVzIiwxLGwpOnIuZm9ybWF0RGlzdGFuY2UoInhNaW51dGVzIiwxLGwpOmI9PT0wP3IuZm9ybWF0RGlzdGFuY2UoImxlc3NUaGFuWE1pbnV0ZXMiLDEsbCk6ci5mb3JtYXREaXN0YW5jZSgieE1pbnV0ZXMiLGIsbCk7aWYoYjw0NSlyZXR1cm4gci5mb3JtYXREaXN0YW5jZSgieE1pbnV0ZXMiLGIsbCk7aWYoYjw5MClyZXR1cm4gci5mb3JtYXREaXN0YW5jZSgiYWJvdXRYSG91cnMiLDEsbCk7aWYoYjxINyl7bGV0IHg9TWF0aC5yb3VuZChiLzYwKTtyZXR1cm4gci5mb3JtYXREaXN0YW5jZSgiYWJvdXRYSG91cnMiLHgsbCl9ZWxzZXtpZihiPG4pcmV0dXJuIHIuZm9ybWF0RGlzdGFuY2UoInhEYXlzIiwxLGwpO2lmKGI8Y3Ape2xldCB4PU1hdGgucm91bmQoYi9INyk7cmV0dXJuIHIuZm9ybWF0RGlzdGFuY2UoInhEYXlzIix4LGwpfWVsc2UgaWYoYjxjcCoyKXJldHVybiB2PU1hdGgucm91bmQoYi9jcCksci5mb3JtYXREaXN0YW5jZSgiYWJvdXRYTW9udGhzIix2LGwpfWlmKHY9bXAoZCxwKSx2PDEyKXtsZXQgeD1NYXRoLnJvdW5kKGIvY3ApO3JldHVybiByLmZvcm1hdERpc3RhbmNlKCJ4TW9udGhzIix4LGwpfWVsc2V7bGV0IHg9diUxMixtPU1hdGgudHJ1bmModi8xMik7cmV0dXJuIHg8Mz9yLmZvcm1hdERpc3RhbmNlKCJhYm91dFhZZWFycyIsbSxsKTp4PDk/ci5mb3JtYXREaXN0YW5jZSgib3ZlclhZZWFycyIsbSxsKTpyLmZvcm1hdERpc3RhbmNlKCJhbG1vc3RYWWVhcnMiLG0rMSxsKX19dmFyIG9TcywkcGU9ZygoKT0+e0o0KCk7R28oKTt1MCgpO1JzKCk7SzQoKTt3YSgpO0x5KCk7RXkoKTtpKF90ZSwiZm9ybWF0RGlzdGFuY2UiKTtvU3M9X3RlfSk7ZnVuY3Rpb24gTXRlKHMsZSx0KXtsZXQgYT1FcygpLHI9dD8ubG9jYWxlPz9hLmxvY2FsZT8/bWwsbj1LbyhzLGUpO2lmKGlzTmFOKG4pKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIHRpbWUgdmFsdWUiKTtsZXQgbz1PYmplY3QuYXNzaWduKHt9LHQse2FkZFN1ZmZpeDp0Py5hZGRTdWZmaXgsY29tcGFyaXNvbjpufSksW2wscF09VnQodD8uaW4sLi4ubj4wP1tlLHNdOltzLGVdKSxkPVlvKHQ/LnJvdW5kaW5nTWV0aG9kPz8icm91bmQiKSx1PXAuZ2V0VGltZSgpLWwuZ2V0VGltZSgpLGM9dS9XbyxiPUZpKHApLUZpKGwpLHY9KHUtYikvV28seD10Py51bml0LG07aWYoeD9tPXg6YzwxP209InNlY29uZCI6Yzw2MD9tPSJtaW51dGUiOmM8SDc/bT0iaG91ciI6djxjcD9tPSJkYXkiOnY8UXVlP209Im1vbnRoIjptPSJ5ZWFyIixtPT09InNlY29uZCIpe2xldCBmPWQodS8xZTMpO3JldHVybiByLmZvcm1hdERpc3RhbmNlKCJ4U2Vjb25kcyIsZixvKX1lbHNlIGlmKG09PT0ibWludXRlIil7bGV0IGY9ZChjKTtyZXR1cm4gci5mb3JtYXREaXN0YW5jZSgieE1pbnV0ZXMiLGYsbyl9ZWxzZSBpZihtPT09ImhvdXIiKXtsZXQgZj1kKGMvNjApO3JldHVybiByLmZvcm1hdERpc3RhbmNlKCJ4SG91cnMiLGYsbyl9ZWxzZSBpZihtPT09ImRheSIpe2xldCBmPWQodi9INyk7cmV0dXJuIHIuZm9ybWF0RGlzdGFuY2UoInhEYXlzIixmLG8pfWVsc2UgaWYobT09PSJtb250aCIpe2xldCBmPWQodi9jcCk7cmV0dXJuIGY9PT0xMiYmeCE9PSJtb250aCI/ci5mb3JtYXREaXN0YW5jZSgieFllYXJzIiwxLG8pOnIuZm9ybWF0RGlzdGFuY2UoInhNb250aHMiLGYsbyl9ZWxzZXtsZXQgZj1kKHYvUXVlKTtyZXR1cm4gci5mb3JtYXREaXN0YW5jZSgieFllYXJzIixmLG8pfX12YXIgZ1NzLERwZT1nKCgpPT57SjQoKTtHbygpO2YwKCk7dTAoKTtScygpO0s0KCk7d2EoKTtpKE10ZSwiZm9ybWF0RGlzdGFuY2VTdHJpY3QiKTtnU3M9TXRlfSk7ZnVuY3Rpb24gRHV0KHMsZSl7cmV0dXJuIF90ZShzLFBhKHMpLGUpfXZhciB3U3MsTHV0PWcoKCk9PntxcigpOyRwZSgpO2koRHV0LCJmb3JtYXREaXN0YW5jZVRvTm93Iik7d1NzPUR1dH0pO2Z1bmN0aW9uIEV1dChzLGUpe3JldHVybiBNdGUocyxQYShzKSxlKX12YXIgelNzLFB1dD1nKCgpPT57cXIoKTtEcGUoKTtpKEV1dCwiZm9ybWF0RGlzdGFuY2VUb05vd1N0cmljdCIpO3pTcz1FdXR9KTtmdW5jdGlvbiBJdXQocyxlKXtsZXQgdD1FcygpLGE9ZT8ubG9jYWxlPz90LmxvY2FsZT8/bWwscj1lPy5mb3JtYXQ/P3JFYSxuPWU/Lnplcm8/PyExLG89ZT8uZGVsaW1pdGVyPz8iICI7cmV0dXJuIGEuZm9ybWF0RGlzdGFuY2U/ci5yZWR1Y2UoKHAsZCk9PntsZXQgdT1geCR7ZC5yZXBsYWNlKC8oXi4pLyxiPT5iLnRvVXBwZXJDYXNlKCkpfWAsYz1zW2RdO3JldHVybiBjIT09dm9pZCAwJiYobnx8c1tkXSk/cC5jb25jYXQoYS5mb3JtYXREaXN0YW5jZSh1LGMpKTpwfSxbXSkuam9pbihvKToiIn12YXIgckVhLExTcyxBdXQ9ZygoKT0+e0o0KCk7R28oKTtyRWE9WyJ5ZWFycyIsIm1vbnRocyIsIndlZWtzIiwiZGF5cyIsImhvdXJzIiwibWludXRlcyIsInNlY29uZHMiXTtpKEl1dCwiZm9ybWF0RHVyYXRpb24iKTtMU3M9SXV0fSk7ZnVuY3Rpb24gTnV0KHMsZSl7bGV0IHQ9QWUocyxlPy5pbik7aWYoaXNOYU4oK3QpKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIHRpbWUgdmFsdWUiKTtsZXQgYT1lPy5mb3JtYXQ/PyJleHRlbmRlZCIscj1lPy5yZXByZXNlbnRhdGlvbj8/ImNvbXBsZXRlIixuPSIiLG89IiIsbD1hPT09ImV4dGVuZGVkIj8iLSI6IiIscD1hPT09ImV4dGVuZGVkIj8iOiI6IiI7aWYociE9PSJ0aW1lIil7bGV0IGQ9UHQodC5nZXREYXRlKCksMiksdT1QdCh0LmdldE1vbnRoKCkrMSwyKTtuPWAke1B0KHQuZ2V0RnVsbFllYXIoKSw0KX0ke2x9JHt1fSR7bH0ke2R9YH1pZihyIT09ImRhdGUiKXtsZXQgZD10LmdldFRpbWV6b25lT2Zmc2V0KCk7aWYoZCE9PTApe2xldCBtPU1hdGguYWJzKGQpLGY9UHQoTWF0aC50cnVuYyhtLzYwKSwyKSx5PVB0KG0lNjAsMik7bz1gJHtkPDA/IisiOiItIn0ke2Z9OiR7eX1gfWVsc2Ugbz0iWiI7bGV0IHU9UHQodC5nZXRIb3VycygpLDIpLGM9UHQodC5nZXRNaW51dGVzKCksMiksYj1QdCh0LmdldFNlY29uZHMoKSwyKSx2PW49PT0iIj8iIjoiVCIseD1bdSxjLGJdLmpvaW4ocCk7bj1gJHtufSR7dn0ke3h9JHtvfWB9cmV0dXJuIG59dmFyIE5TcyxSdXQ9ZygoKT0+e3QzKCk7YXQoKTtpKE51dCwiZm9ybWF0SVNPIik7TlNzPU51dH0pO2Z1bmN0aW9uIE91dChzLGUpe2xldCB0PUFlKHMsZT8uaW4pO2lmKCFrbyh0KSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCB0aW1lIHZhbHVlIik7bGV0IGE9ZT8uZm9ybWF0Pz8iZXh0ZW5kZWQiLHI9ZT8ucmVwcmVzZW50YXRpb24/PyJjb21wbGV0ZSIsbj0iIixvPWE9PT0iZXh0ZW5kZWQiPyItIjoiIixsPWE9PT0iZXh0ZW5kZWQiPyI6IjoiIjtpZihyIT09InRpbWUiKXtsZXQgcD1QdCh0LmdldERhdGUoKSwyKSxkPVB0KHQuZ2V0TW9udGgoKSsxLDIpO249YCR7UHQodC5nZXRGdWxsWWVhcigpLDQpfSR7b30ke2R9JHtvfSR7cH1gfWlmKHIhPT0iZGF0ZSIpe2xldCBwPVB0KHQuZ2V0SG91cnMoKSwyKSxkPVB0KHQuZ2V0TWludXRlcygpLDIpLHU9UHQodC5nZXRTZWNvbmRzKCksMik7bj1gJHtufSR7bj09PSIiPyIiOiIgIn0ke3B9JHtsfSR7ZH0ke2x9JHt1fWB9cmV0dXJuIG59dmFyIHFTcyxGdXQ9ZygoKT0+e3QzKCk7aDAoKTthdCgpO2koT3V0LCJmb3JtYXRJU085MDc1Iik7cVNzPU91dH0pO2Z1bmN0aW9uIEJ1dChzKXtsZXR7eWVhcnM6ZT0wLG1vbnRoczp0PTAsZGF5czphPTAsaG91cnM6cj0wLG1pbnV0ZXM6bj0wLHNlY29uZHM6bz0wfT1zO3JldHVybmBQJHtlfVkke3R9TSR7YX1EVCR7cn1IJHtufU0ke299U2B9dmFyIFVTcyxIdXQ9ZygoKT0+e2koQnV0LCJmb3JtYXRJU09EdXJhdGlvbiIpO1VTcz1CdXR9KTtmdW5jdGlvbiBxdXQocyxlKXtsZXQgdD1BZShzLGU/LmluKTtpZigha28odCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgdGltZSB2YWx1ZSIpO2xldCBhPWU/LmZyYWN0aW9uRGlnaXRzPz8wLHI9UHQodC5nZXREYXRlKCksMiksbj1QdCh0LmdldE1vbnRoKCkrMSwyKSxvPXQuZ2V0RnVsbFllYXIoKSxsPVB0KHQuZ2V0SG91cnMoKSwyKSxwPVB0KHQuZ2V0TWludXRlcygpLDIpLGQ9UHQodC5nZXRTZWNvbmRzKCksMiksdT0iIjtpZihhPjApe2xldCB2PXQuZ2V0TWlsbGlzZWNvbmRzKCkseD1NYXRoLnRydW5jKHYqTWF0aC5wb3coMTAsYS0zKSk7dT0iLiIrUHQoeCxhKX1sZXQgYz0iIixiPXQuZ2V0VGltZXpvbmVPZmZzZXQoKTtpZihiIT09MCl7bGV0IHY9TWF0aC5hYnMoYikseD1QdChNYXRoLnRydW5jKHYvNjApLDIpLG09UHQodiU2MCwyKTtjPWAke2I8MD8iKyI6Ii0ifSR7eH06JHttfWB9ZWxzZSBjPSJaIjtyZXR1cm5gJHtvfS0ke259LSR7cn1UJHtsfToke3B9OiR7ZH0ke3V9JHtjfWB9dmFyIFhTcyxqdXQ9ZygoKT0+e3QzKCk7aDAoKTthdCgpO2kocXV0LCJmb3JtYXRSRkMzMzM5Iik7WFNzPXF1dH0pO2Z1bmN0aW9uIFZ1dChzKXtsZXQgZT1BZShzKTtpZigha28oZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgdGltZSB2YWx1ZSIpO2xldCB0PW9FYVtlLmdldFVUQ0RheSgpXSxhPVB0KGUuZ2V0VVRDRGF0ZSgpLDIpLHI9bkVhW2UuZ2V0VVRDTW9udGgoKV0sbj1lLmdldFVUQ0Z1bGxZZWFyKCksbz1QdChlLmdldFVUQ0hvdXJzKCksMiksbD1QdChlLmdldFVUQ01pbnV0ZXMoKSwyKSxwPVB0KGUuZ2V0VVRDU2Vjb25kcygpLDIpO3JldHVybmAke3R9LCAke2F9ICR7cn0gJHtufSAke299OiR7bH06JHtwfSBHTVRgfXZhciBvRWEsbkVhLHNfcyxVdXQ9ZygoKT0+e3QzKCk7aDAoKTthdCgpO29FYT1bIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLG5FYT1bIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdO2koVnV0LCJmb3JtYXRSRkM3MjMxIik7c19zPVZ1dH0pO2Z1bmN0aW9uIFd1dChzLGUsdCl7bGV0W2Escl09VnQodD8uaW4scyxlKSxuPUVzKCksbz10Py5sb2NhbGU/P24ubG9jYWxlPz9tbCxsPXQ/LndlZWtTdGFydHNPbj8/dD8ubG9jYWxlPy5vcHRpb25zPy53ZWVrU3RhcnRzT24/P24ud2Vla1N0YXJ0c09uPz9uLmxvY2FsZT8ub3B0aW9ucz8ud2Vla1N0YXJ0c09uPz8wLHA9bm8oYSxyKTtpZihpc05hTihwKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCB0aW1lIHZhbHVlIik7bGV0IGQ7cDwtNj9kPSJvdGhlciI6cDwtMT9kPSJsYXN0V2VlayI6cDwwP2Q9Inllc3RlcmRheSI6cDwxP2Q9InRvZGF5IjpwPDI/ZD0idG9tb3Jyb3ciOnA8Nz9kPSJuZXh0V2VlayI6ZD0ib3RoZXIiO2xldCB1PW8uZm9ybWF0UmVsYXRpdmUoZCxhLHIse2xvY2FsZTpvLHdlZWtTdGFydHNPbjpsfSk7cmV0dXJuIFJ5KGEsdSx7bG9jYWxlOm8sd2Vla1N0YXJ0c09uOmx9KX12YXIgdV9zLEd1dD1nKCgpPT57SjQoKTtHbygpO1JzKCk7cDAoKTtUcGUoKTtpKFd1dCwiZm9ybWF0UmVsYXRpdmUiKTt1X3M9V3V0fSk7ZnVuY3Rpb24gS3V0KHMsZSl7cmV0dXJuIEFlKHMqMWUzLGU/LmluKX12YXIgbV9zLFl1dD1nKCgpPT57YXQoKTtpKEt1dCwiZnJvbVVuaXhUaW1lIik7bV9zPUt1dH0pO2Z1bmN0aW9uIHp0ZShzLGUpe3JldHVybiBBZShzLGU/LmluKS5nZXREYXRlKCl9dmFyIHhfcyxMcGU9ZygoKT0+e2F0KCk7aSh6dGUsImdldERhdGUiKTt4X3M9enRlfSk7ZnVuY3Rpb24geHAocyxlKXtyZXR1cm4gQWUocyxlPy5pbikuZ2V0RGF5KCl9dmFyIFNfcyxPeT1nKCgpPT57YXQoKTtpKHhwLCJnZXREYXkiKTtTX3M9eHB9KTtmdW5jdGlvbiBDdGUocyxlKXtsZXQgdD1BZShzLGU/LmluKSxhPXQuZ2V0RnVsbFllYXIoKSxyPXQuZ2V0TW9udGgoKSxuPXR0KHQsMCk7cmV0dXJuIG4uc2V0RnVsbFllYXIoYSxyKzEsMCksbi5zZXRIb3VycygwLDAsMCwwKSxuLmdldERhdGUoKX12YXIgVF9zLEVwZT1nKCgpPT57R3QoKTthdCgpO2koQ3RlLCJnZXREYXlzSW5Nb250aCIpO1Rfcz1DdGV9KTtmdW5jdGlvbiBUdGUocyxlKXtsZXQgYT1BZShzLGU/LmluKS5nZXRGdWxsWWVhcigpO3JldHVybiBhJTQwMD09PTB8fGElND09PTAmJmElMTAwIT09MH12YXIgRV9zLFBwZT1nKCgpPT57YXQoKTtpKFR0ZSwiaXNMZWFwWWVhciIpO0Vfcz1UdGV9KTtmdW5jdGlvbiBadXQocyxlKXtsZXQgdD1BZShzLGU/LmluKTtyZXR1cm4gTnVtYmVyLmlzTmFOKCt0KT9OYU46VHRlKHQpPzM2NjozNjV9dmFyIFJfcyxYdXQ9ZygoKT0+e1BwZSgpO2F0KCk7aShadXQsImdldERheXNJblllYXIiKTtSX3M9WnV0fSk7ZnVuY3Rpb24gUXV0KHMsZSl7bGV0IGE9QWUocyxlPy5pbikuZ2V0RnVsbFllYXIoKTtyZXR1cm4gTWF0aC5mbG9vcihhLzEwKSoxMH12YXIgSF9zLEp1dD1nKCgpPT57YXQoKTtpKFF1dCwiZ2V0RGVjYWRlIik7SF9zPVF1dH0pO2Z1bmN0aW9uICR0ZSgpe3JldHVybiBPYmplY3QuYXNzaWduKHt9LEVzKCkpfXZhciBVX3MsSXBlPWcoKCk9PntHbygpO2koJHRlLCJnZXREZWZhdWx0T3B0aW9ucyIpO1Vfcz0kdGV9KTtmdW5jdGlvbiBlcHQocyxlKXtyZXR1cm4gQWUocyxlPy5pbikuZ2V0SG91cnMoKX12YXIgWV9zLHRwdD1nKCgpPT57YXQoKTtpKGVwdCwiZ2V0SG91cnMiKTtZX3M9ZXB0fSk7ZnVuY3Rpb24gRHRlKHMsZSl7bGV0IHQ9QWUocyxlPy5pbikuZ2V0RGF5KCk7cmV0dXJuIHQ9PT0wPzc6dH12YXIgSl9zLEFwZT1nKCgpPT57YXQoKTtpKER0ZSwiZ2V0SVNPRGF5Iik7Sl9zPUR0ZX0pO2Z1bmN0aW9uIGFwdChzLGUpe2xldCB0PVJsKHMsZSkscj0rUmwoaHAodCw2MCkpLSt0O3JldHVybiBNYXRoLnJvdW5kKHIvWDIpfXZhciByTXMsc3B0PWcoKCk9PnskeSgpO3dhKCk7VjcoKTtpKGFwdCwiZ2V0SVNPV2Vla3NJblllYXIiKTtyTXM9YXB0fSk7ZnVuY3Rpb24gaXB0KHMpe3JldHVybiBBZShzKS5nZXRNaWxsaXNlY29uZHMoKX12YXIgY01zLHJwdD1nKCgpPT57YXQoKTtpKGlwdCwiZ2V0TWlsbGlzZWNvbmRzIik7Y01zPWlwdH0pO2Z1bmN0aW9uIG9wdChzLGUpe3JldHVybiBBZShzLGU/LmluKS5nZXRNaW51dGVzKCl9dmFyIGhNcyxucHQ9ZygoKT0+e2F0KCk7aShvcHQsImdldE1pbnV0ZXMiKTtoTXM9b3B0fSk7ZnVuY3Rpb24gbHB0KHMsZSl7cmV0dXJuIEFlKHMsZT8uaW4pLmdldE1vbnRoKCl9dmFyIGJNcyxjcHQ9ZygoKT0+e2F0KCk7aShscHQsImdldE1vbnRoIik7Yk1zPWxwdH0pO2Z1bmN0aW9uIGRwdChzLGUpe2xldFt0LGFdPVsrQWUocy5zdGFydCksK0FlKHMuZW5kKV0uc29ydCgoYyxiKT0+Yy1iKSxbcixuXT1bK0FlKGUuc3RhcnQpLCtBZShlLmVuZCldLnNvcnQoKGMsYik9PmMtYik7aWYoISh0PG4mJnI8YSkpcmV0dXJuIDA7bGV0IGw9cjx0P3Q6cixwPWwtRmkobCksZD1uPmE/YTpuLHU9ZC1GaShkKTtyZXR1cm4gTWF0aC5jZWlsKCh1LXApL1BlZSl9dmFyIFNNcyx1cHQ9ZygoKT0+e3UwKCk7d2EoKTthdCgpO2koZHB0LCJnZXRPdmVybGFwcGluZ0RheXNJbkludGVydmFscyIpO1NNcz1kcHR9KTtmdW5jdGlvbiBwcHQocyl7cmV0dXJuIEFlKHMpLmdldFNlY29uZHMoKX12YXIgQ01zLGhwdD1nKCgpPT57YXQoKTtpKHBwdCwiZ2V0U2Vjb25kcyIpO0NNcz1wcHR9KTtmdW5jdGlvbiBmcHQocyl7cmV0dXJuK0FlKHMpfXZhciBMTXMsbXB0PWcoKCk9PnthdCgpO2koZnB0LCJnZXRUaW1lIik7TE1zPWZwdH0pO2Z1bmN0aW9uIGdwdChzKXtyZXR1cm4gTWF0aC50cnVuYygrQWUocykvMWUzKX12YXIgQU1zLGJwdD1nKCgpPT57YXQoKTtpKGdwdCwiZ2V0VW5peFRpbWUiKTtBTXM9Z3B0fSk7ZnVuY3Rpb24gdnB0KHMsZSl7bGV0IHQ9RXMoKSxhPWU/LndlZWtTdGFydHNPbj8/ZT8ubG9jYWxlPy5vcHRpb25zPy53ZWVrU3RhcnRzT24/P3Qud2Vla1N0YXJ0c09uPz90LmxvY2FsZT8ub3B0aW9ucz8ud2Vla1N0YXJ0c09uPz8wLHI9enRlKEFlKHMsZT8uaW4pKTtpZihpc05hTihyKSlyZXR1cm4gTmFOO2xldCBuPXhwKGdwKHMsZSkpLG89YS1uO288PTAmJihvKz03KTtsZXQgbD1yLW87cmV0dXJuIE1hdGguY2VpbChsLzcpKzF9dmFyIGpNcyx4cHQ9ZygoKT0+e0dvKCk7THBlKCk7T3koKTtQeSgpO2F0KCk7aSh2cHQsImdldFdlZWtPZk1vbnRoIik7ak1zPXZwdH0pO2Z1bmN0aW9uIEx0ZShzLGUpe2xldCB0PUFlKHMsZT8uaW4pLGE9dC5nZXRNb250aCgpO3JldHVybiB0LnNldEZ1bGxZZWFyKHQuZ2V0RnVsbFllYXIoKSxhKzEsMCksdC5zZXRIb3VycygwLDAsMCwwKSxBZSh0LGU/LmluKX12YXIgR01zLE5wZT1nKCgpPT57YXQoKTtpKEx0ZSwibGFzdERheU9mTW9udGgiKTtHTXM9THRlfSk7ZnVuY3Rpb24geXB0KHMsZSl7bGV0IHQ9QWUocyxlPy5pbik7cmV0dXJuIFo0KEx0ZSh0LGUpLGdwKHQsZSksZSkrMX12YXIgZXpzLHdwdD1nKCgpPT57ZXRlKCk7TnBlKCk7UHkoKTthdCgpO2koeXB0LCJnZXRXZWVrc0luTW9udGgiKTtlenM9eXB0fSk7ZnVuY3Rpb24ga3B0KHMsZSl7cmV0dXJuIEFlKHMsZT8uaW4pLmdldEZ1bGxZZWFyKCl9dmFyIGl6cyxTcHQ9ZygoKT0+e2F0KCk7aShrcHQsImdldFllYXIiKTtpenM9a3B0fSk7ZnVuY3Rpb24gX3B0KHMpe3JldHVybiBNYXRoLnRydW5jKHMqTmwpfXZhciBsenMsTXB0PWcoKCk9Pnt3YSgpO2koX3B0LCJob3Vyc1RvTWlsbGlzZWNvbmRzIik7bHpzPV9wdH0pO2Z1bmN0aW9uIHpwdChzKXtyZXR1cm4gTWF0aC50cnVuYyhzKkllZSl9dmFyIHB6cyxDcHQ9ZygoKT0+e3dhKCk7aSh6cHQsImhvdXJzVG9NaW51dGVzIik7cHpzPXpwdH0pO2Z1bmN0aW9uIFRwdChzKXtyZXR1cm4gTWF0aC50cnVuYyhzKkc0KX12YXIgZ3pzLCRwdD1nKCgpPT57d2EoKTtpKFRwdCwiaG91cnNUb1NlY29uZHMiKTtnenM9VHB0fSk7ZnVuY3Rpb24gRHB0KHMsZSx0KXtsZXRbYSxyXT1WdCh0Py5pbixzLGUpO2lmKGlzTmFOKCthKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdGFydCBkYXRlIGlzIGludmFsaWQiKTtpZihpc05hTigrcikpdGhyb3cgbmV3IFR5cGVFcnJvcigiRW5kIGRhdGUgaXMgaW52YWxpZCIpO2lmKHQ/LmFzc2VydFBvc2l0aXZlJiYrYT4rcil0aHJvdyBuZXcgVHlwZUVycm9yKCJFbmQgZGF0ZSBtdXN0IGJlIGFmdGVyIHN0YXJ0IGRhdGUiKTtyZXR1cm57c3RhcnQ6YSxlbmQ6cn19dmFyIHl6cyxMcHQ9ZygoKT0+e1JzKCk7aShEcHQsImludGVydmFsIik7eXpzPURwdH0pO2Z1bmN0aW9uIEVwdChzLGUpe2xldHtzdGFydDp0LGVuZDphfT1sbyhlPy5pbixzKSxyPXt9LG49ZHRlKGEsdCk7biYmKHIueWVhcnM9bik7bGV0IG89ZHAodCx7eWVhcnM6ci55ZWFyc30pLGw9bXAoYSxvKTtsJiYoci5tb250aHM9bCk7bGV0IHA9ZHAobyx7bW9udGhzOnIubW9udGhzfSksZD1ZNyhhLHApO2QmJihyLmRheXM9ZCk7bGV0IHU9ZHAocCx7ZGF5czpyLmRheXN9KSxjPVg0KGEsdSk7YyYmKHIuaG91cnM9Yyk7bGV0IGI9ZHAodSx7aG91cnM6ci5ob3Vyc30pLHY9UTQoYSxiKTt2JiYoci5taW51dGVzPXYpO2xldCB4PWRwKGIse21pbnV0ZXM6ci5taW51dGVzfSksbT1pZChhLHgpO3JldHVybiBtJiYoci5zZWNvbmRzPW0pLHJ9dmFyIEx6cyxQcHQ9ZygoKT0+e3JkKCk7YXBlKCk7YXRlKCk7c3RlKCk7b3RlKCk7THkoKTtFeSgpO3lwZSgpO2koRXB0LCJpbnRlcnZhbFRvRHVyYXRpb24iKTtMenM9RXB0fSk7ZnVuY3Rpb24gSXB0KHMsZSx0KXtsZXQgYTtyZXR1cm4gbEVhKGUpP2E9ZTp0PWUsbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodD8ubG9jYWxlLGEpLmZvcm1hdChBZShzKSl9ZnVuY3Rpb24gbEVhKHMpe3JldHVybiBzIT09dm9pZCAwJiYhKCJsb2NhbGUiaW4gcyl9dmFyIEF6cyxBcHQ9ZygoKT0+e2F0KCk7aShJcHQsImludGxGb3JtYXQiKTtpKGxFYSwiaXNGb3JtYXRPcHRpb25zIik7QXpzPUlwdH0pO2Z1bmN0aW9uIE5wdChzLGUsdCl7bGV0IGE9MCxyLFtuLG9dPVZ0KHQ/LmluLHMsZSk7aWYodD8udW5pdClyPXQ/LnVuaXQscj09PSJzZWNvbmQiP2E9aWQobixvKTpyPT09Im1pbnV0ZSI/YT1RNChuLG8pOnI9PT0iaG91ciI/YT1YNChuLG8pOnI9PT0iZGF5Ij9hPW5vKG4sbyk6cj09PSJ3ZWVrIj9hPVo0KG4sbyk6cj09PSJtb250aCI/YT1ZNChuLG8pOnI9PT0icXVhcnRlciI/YT1LNyhuLG8pOnI9PT0ieWVhciImJihhPWZwKG4sbykpO2Vsc2V7bGV0IHA9aWQobixvKTtNYXRoLmFicyhwKTxxNz8oYT1pZChuLG8pLHI9InNlY29uZCIpOk1hdGguYWJzKHApPEc0PyhhPVE0KG4sbykscj0ibWludXRlIik6TWF0aC5hYnMocCk8TGVlJiZNYXRoLmFicyhubyhuLG8pKTwxPyhhPVg0KG4sbykscj0iaG91ciIpOk1hdGguYWJzKHApPGEwdCYmKGE9bm8obixvKSkmJk1hdGguYWJzKGEpPDc/cj0iZGF5IjpNYXRoLmFicyhwKTxlcGU/KGE9WjQobixvKSxyPSJ3ZWVrIik6TWF0aC5hYnMocCk8czB0PyhhPVk0KG4sbykscj0ibW9udGgiKTpNYXRoLmFicyhwKTxKdWU/SzcobixvKTw0PyhhPUs3KG4sbykscj0icXVhcnRlciIpOihhPWZwKG4sbykscj0ieWVhciIpOihhPWZwKG4sbykscj0ieWVhciIpfXJldHVybiBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQodD8ubG9jYWxlLHtudW1lcmljOiJhdXRvIiwuLi50fSkuZm9ybWF0KGEscil9dmFyIEt6cyxScHQ9ZygoKT0+e1JzKCk7d2EoKTtwMCgpO0plZSgpO2JwZSgpO2V0ZSgpO3R0ZSgpO3N0ZSgpO290ZSgpO0V5KCk7aShOcHQsImludGxGb3JtYXREaXN0YW5jZSIpO0t6cz1OcHR9KTtmdW5jdGlvbiBPcHQocyxlKXtyZXR1cm4rQWUocyk+K0FlKGUpfXZhciBRenMsRnB0PWcoKCk9PnthdCgpO2koT3B0LCJpc0FmdGVyIik7UXpzPU9wdH0pO2Z1bmN0aW9uIEJwdChzLGUpe3JldHVybitBZShzKTwrQWUoZSl9dmFyIGFDcyxIcHQ9ZygoKT0+e2F0KCk7aShCcHQsImlzQmVmb3JlIik7YUNzPUJwdH0pO2Z1bmN0aW9uIHFwdChzLGUpe3JldHVybitBZShzKT09K0FlKGUpfXZhciBvQ3MsanB0PWcoKCk9PnthdCgpO2kocXB0LCJpc0VxdWFsIik7b0NzPXFwdH0pO2Z1bmN0aW9uIFZwdChzLGUsdCl7bGV0IGE9bmV3IERhdGUocyxlLHQpO3JldHVybiBhLmdldEZ1bGxZZWFyKCk9PT1zJiZhLmdldE1vbnRoKCk9PT1lJiZhLmdldERhdGUoKT09PXR9dmFyIGNDcyxVcHQ9ZygoKT0+e2koVnB0LCJpc0V4aXN0cyIpO2NDcz1WcHR9KTtmdW5jdGlvbiBXcHQocyxlKXtyZXR1cm4gQWUocyxlPy5pbikuZ2V0RGF0ZSgpPT09MX12YXIgaENzLEdwdD1nKCgpPT57YXQoKTtpKFdwdCwiaXNGaXJzdERheU9mTW9udGgiKTtoQ3M9V3B0fSk7ZnVuY3Rpb24gS3B0KHMsZSl7cmV0dXJuIEFlKHMsZT8uaW4pLmdldERheSgpPT09NX12YXIgYkNzLFlwdD1nKCgpPT57YXQoKTtpKEtwdCwiaXNGcmlkYXkiKTtiQ3M9S3B0fSk7ZnVuY3Rpb24gWnB0KHMpe3JldHVybitBZShzKT5EYXRlLm5vdygpfXZhciB3Q3MsWHB0PWcoKCk9PnthdCgpO2koWnB0LCJpc0Z1dHVyZSIpO3dDcz1acHR9KTtmdW5jdGlvbiBFdGUocyxlKXtsZXQgdD1jRWEoZSk/bmV3IGUoMCk6dHQoZSwwKTtyZXR1cm4gdC5zZXRGdWxsWWVhcihzLmdldEZ1bGxZZWFyKCkscy5nZXRNb250aCgpLHMuZ2V0RGF0ZSgpKSx0LnNldEhvdXJzKHMuZ2V0SG91cnMoKSxzLmdldE1pbnV0ZXMoKSxzLmdldFNlY29uZHMoKSxzLmdldE1pbGxpc2Vjb25kcygpKSx0fWZ1bmN0aW9uIGNFYShzKXtyZXR1cm4gdHlwZW9mIHM9PSJmdW5jdGlvbiImJnMucHJvdG90eXBlPy5jb25zdHJ1Y3Rvcj09PXN9dmFyIE1DcyxScGU9ZygoKT0+e0d0KCk7aShFdGUsInRyYW5zcG9zZSIpO2koY0VhLCJpc0NvbnN0cnVjdG9yIik7TUNzPUV0ZX0pO3ZhciBkRWEsUHRlLEl0ZSxBdGUsT3BlPWcoKCk9PntHdCgpO1JwZSgpO2RFYT0xMCxQdGU9Y2xhc3N7c3RhdGlje2kodGhpcywiU2V0dGVyIil9c3ViUHJpb3JpdHk9MDt2YWxpZGF0ZShlLHQpe3JldHVybiEwfX0sSXRlPWNsYXNzIGV4dGVuZHMgUHRle3N0YXRpY3tpKHRoaXMsIlZhbHVlU2V0dGVyIil9Y29uc3RydWN0b3IoZSx0LGEscixuKXtzdXBlcigpLHRoaXMudmFsdWU9ZSx0aGlzLnZhbGlkYXRlVmFsdWU9dCx0aGlzLnNldFZhbHVlPWEsdGhpcy5wcmlvcml0eT1yLG4mJih0aGlzLnN1YlByaW9yaXR5PW4pfXZhbGlkYXRlKGUsdCl7cmV0dXJuIHRoaXMudmFsaWRhdGVWYWx1ZShlLHRoaXMudmFsdWUsdCl9c2V0KGUsdCxhKXtyZXR1cm4gdGhpcy5zZXRWYWx1ZShlLHQsdGhpcy52YWx1ZSxhKX19LEF0ZT1jbGFzcyBleHRlbmRzIFB0ZXtzdGF0aWN7aSh0aGlzLCJEYXRlVGltZXpvbmVTZXR0ZXIiKX1wcmlvcml0eT1kRWE7c3ViUHJpb3JpdHk9LTE7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigpLHRoaXMuY29udGV4dD1lfHwoYT0+dHQodCxhKSl9c2V0KGUsdCl7cmV0dXJuIHQudGltZXN0YW1wSXNTZXQ/ZTp0dChlLEV0ZShlLHRoaXMuY29udGV4dCkpfX19KTt2YXIgRXQseHM9ZygoKT0+e09wZSgpO0V0PWNsYXNze3N0YXRpY3tpKHRoaXMsIlBhcnNlciIpfXJ1bihlLHQsYSxyKXtsZXQgbj10aGlzLnBhcnNlKGUsdCxhLHIpO3JldHVybiBuP3tzZXR0ZXI6bmV3IEl0ZShuLnZhbHVlLHRoaXMudmFsaWRhdGUsdGhpcy5zZXQsdGhpcy5wcmlvcml0eSx0aGlzLnN1YlByaW9yaXR5KSxyZXN0Om4ucmVzdH06bnVsbH12YWxpZGF0ZShlLHQsYSl7cmV0dXJuITB9fX0pO3ZhciBOdGUsUXB0PWcoKCk9Pnt4cygpO050ZT1jbGFzcyBleHRlbmRzIEV0e3N0YXRpY3tpKHRoaXMsIkVyYVBhcnNlciIpfXByaW9yaXR5PTE0MDtwYXJzZShlLHQsYSl7c3dpdGNoKHQpe2Nhc2UiRyI6Y2FzZSJHRyI6Y2FzZSJHR0ciOnJldHVybiBhLmVyYShlLHt3aWR0aDoiYWJicmV2aWF0ZWQifSl8fGEuZXJhKGUse3dpZHRoOiJuYXJyb3cifSk7Y2FzZSJHR0dHRyI6cmV0dXJuIGEuZXJhKGUse3dpZHRoOiJuYXJyb3cifSk7ZGVmYXVsdDpyZXR1cm4gYS5lcmEoZSx7d2lkdGg6IndpZGUifSl8fGEuZXJhKGUse3dpZHRoOiJhYmJyZXZpYXRlZCJ9KXx8YS5lcmEoZSx7d2lkdGg6Im5hcnJvdyJ9KX19c2V0KGUsdCxhKXtyZXR1cm4gdC5lcmE9YSxlLnNldEZ1bGxZZWFyKGEsMCwxKSxlLnNldEhvdXJzKDAsMCwwLDApLGV9aW5jb21wYXRpYmxlVG9rZW5zPVsiUiIsInUiLCJ0IiwiVCJdfX0pO3ZhciBjcyxrYyxabz1nKCgpPT57Y3M9e21vbnRoOi9eKDFbMC0yXXwwP1xkKS8sZGF0ZTovXigzWzAtMV18WzAtMl0/XGQpLyxkYXlPZlllYXI6L14oMzZbMC02XXwzWzAtNV1cZHxbMC0yXT9cZD9cZCkvLHdlZWs6L14oNVswLTNdfFswLTRdP1xkKS8saG91cjIzaDovXigyWzAtM118WzAtMV0/XGQpLyxob3VyMjRoOi9eKDJbMC00XXxbMC0xXT9cZCkvLGhvdXIxMWg6L14oMVswLTFdfDA/XGQpLyxob3VyMTJoOi9eKDFbMC0yXXwwP1xkKS8sbWludXRlOi9eWzAtNV0/XGQvLHNlY29uZDovXlswLTVdP1xkLyxzaW5nbGVEaWdpdDovXlxkLyx0d29EaWdpdHM6L15cZHsxLDJ9Lyx0aHJlZURpZ2l0czovXlxkezEsM30vLGZvdXJEaWdpdHM6L15cZHsxLDR9LyxhbnlEaWdpdHNTaWduZWQ6L14tP1xkKy8sc2luZ2xlRGlnaXRTaWduZWQ6L14tP1xkLyx0d29EaWdpdHNTaWduZWQ6L14tP1xkezEsMn0vLHRocmVlRGlnaXRzU2lnbmVkOi9eLT9cZHsxLDN9Lyxmb3VyRGlnaXRzU2lnbmVkOi9eLT9cZHsxLDR9L30sa2M9e2Jhc2ljT3B0aW9uYWxNaW51dGVzOi9eKFsrLV0pKFxkezJ9KShcZHsyfSk/fFovLGJhc2ljOi9eKFsrLV0pKFxkezJ9KShcZHsyfSl8Wi8sYmFzaWNPcHRpb25hbFNlY29uZHM6L14oWystXSkoXGR7Mn0pKFxkezJ9KSgoXGR7Mn0pKT98Wi8sZXh0ZW5kZWQ6L14oWystXSkoXGR7Mn0pOihcZHsyfSl8Wi8sZXh0ZW5kZWRPcHRpb25hbFNlY29uZHM6L14oWystXSkoXGR7Mn0pOihcZHsyfSkoOihcZHsyfSkpP3xaL319KTtmdW5jdGlvbiBPcyhzLGUpe3JldHVybiBzJiZ7dmFsdWU6ZShzLnZhbHVlKSxyZXN0OnMucmVzdH19ZnVuY3Rpb24gdHMocyxlKXtsZXQgdD1lLm1hdGNoKHMpO3JldHVybiB0P3t2YWx1ZTpwYXJzZUludCh0WzBdLDEwKSxyZXN0OmUuc2xpY2UodFswXS5sZW5ndGgpfTpudWxsfWZ1bmN0aW9uIFNjKHMsZSl7bGV0IHQ9ZS5tYXRjaChzKTtpZighdClyZXR1cm4gbnVsbDtpZih0WzBdPT09IloiKXJldHVybnt2YWx1ZTowLHJlc3Q6ZS5zbGljZSgxKX07bGV0IGE9dFsxXT09PSIrIj8xOi0xLHI9dFsyXT9wYXJzZUludCh0WzJdLDEwKTowLG49dFszXT9wYXJzZUludCh0WzNdLDEwKTowLG89dFs1XT9wYXJzZUludCh0WzVdLDEwKTowO3JldHVybnt2YWx1ZTphKihyKk5sK24qV28rbypCNykscmVzdDplLnNsaWNlKHRbMF0ubGVuZ3RoKX19ZnVuY3Rpb24gUnRlKHMpe3JldHVybiB0cyhjcy5hbnlEaWdpdHNTaWduZWQscyl9ZnVuY3Rpb24gZ2EocyxlKXtzd2l0Y2gocyl7Y2FzZSAxOnJldHVybiB0cyhjcy5zaW5nbGVEaWdpdCxlKTtjYXNlIDI6cmV0dXJuIHRzKGNzLnR3b0RpZ2l0cyxlKTtjYXNlIDM6cmV0dXJuIHRzKGNzLnRocmVlRGlnaXRzLGUpO2Nhc2UgNDpyZXR1cm4gdHMoY3MuZm91ckRpZ2l0cyxlKTtkZWZhdWx0OnJldHVybiB0cyhuZXcgUmVnRXhwKCJeXFxkezEsIitzKyJ9IiksZSl9fWZ1bmN0aW9uIG85KHMsZSl7c3dpdGNoKHMpe2Nhc2UgMTpyZXR1cm4gdHMoY3Muc2luZ2xlRGlnaXRTaWduZWQsZSk7Y2FzZSAyOnJldHVybiB0cyhjcy50d29EaWdpdHNTaWduZWQsZSk7Y2FzZSAzOnJldHVybiB0cyhjcy50aHJlZURpZ2l0c1NpZ25lZCxlKTtjYXNlIDQ6cmV0dXJuIHRzKGNzLmZvdXJEaWdpdHNTaWduZWQsZSk7ZGVmYXVsdDpyZXR1cm4gdHMobmV3IFJlZ0V4cCgiXi0/XFxkezEsIitzKyJ9IiksZSl9fWZ1bmN0aW9uIG45KHMpe3N3aXRjaChzKXtjYXNlIm1vcm5pbmciOnJldHVybiA0O2Nhc2UiZXZlbmluZyI6cmV0dXJuIDE3O2Nhc2UicG0iOmNhc2Uibm9vbiI6Y2FzZSJhZnRlcm5vb24iOnJldHVybiAxMjtkZWZhdWx0OnJldHVybiAwfX1mdW5jdGlvbiBPdGUocyxlKXtsZXQgdD1lPjAsYT10P2U6MS1lLHI7aWYoYTw9NTApcj1zfHwxMDA7ZWxzZXtsZXQgbj1hKzUwLG89TWF0aC50cnVuYyhuLzEwMCkqMTAwLGw9cz49biUxMDA7cj1zK28tKGw/MTAwOjApfXJldHVybiB0P3I6MS1yfWZ1bmN0aW9uIEZ0ZShzKXtyZXR1cm4gcyU0MDA9PT0wfHxzJTQ9PT0wJiZzJTEwMCE9PTB9dmFyIFBzPWcoKCk9Pnt3YSgpO1pvKCk7aShPcywibWFwVmFsdWUiKTtpKHRzLCJwYXJzZU51bWVyaWNQYXR0ZXJuIik7aShTYywicGFyc2VUaW1lem9uZVBhdHRlcm4iKTtpKFJ0ZSwicGFyc2VBbnlEaWdpdHNTaWduZWQiKTtpKGdhLCJwYXJzZU5EaWdpdHMiKTtpKG85LCJwYXJzZU5EaWdpdHNTaWduZWQiKTtpKG45LCJkYXlQZXJpb2RFbnVtVG9Ib3VycyIpO2koT3RlLCJub3JtYWxpemVUd29EaWdpdFllYXIiKTtpKEZ0ZSwiaXNMZWFwWWVhckluZGV4Iil9KTt2YXIgQnRlLEpwdD1nKCgpPT57eHMoKTtQcygpO0J0ZT1jbGFzcyBleHRlbmRzIEV0e3N0YXRpY3tpKHRoaXMsIlllYXJQYXJzZXIiKX1wcmlvcml0eT0xMzA7aW5jb21wYXRpYmxlVG9rZW5zPVsiWSIsIlIiLCJ1IiwidyIsIkkiLCJpIiwiZSIsImMiLCJ0IiwiVCJdO3BhcnNlKGUsdCxhKXtsZXQgcj1pKG49Pih7eWVhcjpuLGlzVHdvRGlnaXRZZWFyOnQ9PT0ieXkifSksInZhbHVlQ2FsbGJhY2siKTtzd2l0Y2godCl7Y2FzZSJ5IjpyZXR1cm4gT3MoZ2EoNCxlKSxyKTtjYXNlInlvIjpyZXR1cm4gT3MoYS5vcmRpbmFsTnVtYmVyKGUse3VuaXQ6InllYXIifSkscik7ZGVmYXVsdDpyZXR1cm4gT3MoZ2EodC5sZW5ndGgsZSkscil9fXZhbGlkYXRlKGUsdCl7cmV0dXJuIHQuaXNUd29EaWdpdFllYXJ8fHQueWVhcj4wfXNldChlLHQsYSl7bGV0IHI9ZS5nZXRGdWxsWWVhcigpO2lmKGEuaXNUd29EaWdpdFllYXIpe2xldCBvPU90ZShhLnllYXIscik7cmV0dXJuIGUuc2V0RnVsbFllYXIobywwLDEpLGUuc2V0SG91cnMoMCwwLDAsMCksZX1sZXQgbj0hKCJlcmEiaW4gdCl8fHQuZXJhPT09MT9hLnllYXI6MS1hLnllYXI7cmV0dXJuIGUuc2V0RnVsbFllYXIobiwwLDEpLGUuc2V0SG91cnMoMCwwLDAsMCksZX19fSk7dmFyIEh0ZSxlaHQ9ZygoKT0+e0l5KCk7djEoKTt4cygpO1BzKCk7SHRlPWNsYXNzIGV4dGVuZHMgRXR7c3RhdGlje2kodGhpcywiTG9jYWxXZWVrWWVhclBhcnNlciIpfXByaW9yaXR5PTEzMDtwYXJzZShlLHQsYSl7bGV0IHI9aShuPT4oe3llYXI6bixpc1R3b0RpZ2l0WWVhcjp0PT09IllZIn0pLCJ2YWx1ZUNhbGxiYWNrIik7c3dpdGNoKHQpe2Nhc2UiWSI6cmV0dXJuIE9zKGdhKDQsZSkscik7Y2FzZSJZbyI6cmV0dXJuIE9zKGEub3JkaW5hbE51bWJlcihlLHt1bml0OiJ5ZWFyIn0pLHIpO2RlZmF1bHQ6cmV0dXJuIE9zKGdhKHQubGVuZ3RoLGUpLHIpfX12YWxpZGF0ZShlLHQpe3JldHVybiB0LmlzVHdvRGlnaXRZZWFyfHx0LnllYXI+MH1zZXQoZSx0LGEscil7bGV0IG49YnAoZSxyKTtpZihhLmlzVHdvRGlnaXRZZWFyKXtsZXQgbD1PdGUoYS55ZWFyLG4pO3JldHVybiBlLnNldEZ1bGxZZWFyKGwsMCxyLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSksZS5zZXRIb3VycygwLDAsMCwwKSxLcyhlLHIpfWxldCBvPSEoImVyYSJpbiB0KXx8dC5lcmE9PT0xP2EueWVhcjoxLWEueWVhcjtyZXR1cm4gZS5zZXRGdWxsWWVhcihvLDAsci5maXJzdFdlZWtDb250YWluc0RhdGUpLGUuc2V0SG91cnMoMCwwLDAsMCksS3MoZSxyKX1pbmNvbXBhdGlibGVUb2tlbnM9WyJ5IiwiUiIsInUiLCJRIiwicSIsIk0iLCJMIiwiSSIsImQiLCJEIiwiaSIsInQiLCJUIl19fSk7dmFyIHF0ZSx0aHQ9ZygoKT0+e3RkKCk7R3QoKTt4cygpO1BzKCk7cXRlPWNsYXNzIGV4dGVuZHMgRXR7c3RhdGlje2kodGhpcywiSVNPV2Vla1llYXJQYXJzZXIiKX1wcmlvcml0eT0xMzA7cGFyc2UoZSx0KXtyZXR1cm4gdD09PSJSIj9vOSg0LGUpOm85KHQubGVuZ3RoLGUpfXNldChlLHQsYSl7bGV0IHI9dHQoZSwwKTtyZXR1cm4gci5zZXRGdWxsWWVhcihhLDAsNCksci5zZXRIb3VycygwLDAsMCwwKSxrcihyKX1pbmNvbXBhdGlibGVUb2tlbnM9WyJHIiwieSIsIlkiLCJ1IiwiUSIsInEiLCJNIiwiTCIsInciLCJkIiwiRCIsImUiLCJjIiwidCIsIlQiXX19KTt2YXIganRlLGFodD1nKCgpPT57eHMoKTtQcygpO2p0ZT1jbGFzcyBleHRlbmRzIEV0e3N0YXRpY3tpKHRoaXMsIkV4dGVuZGVkWWVhclBhcnNlciIpfXByaW9yaXR5PTEzMDtwYXJzZShlLHQpe3JldHVybiB0PT09InUiP285KDQsZSk6bzkodC5sZW5ndGgsZSl9c2V0KGUsdCxhKXtyZXR1cm4gZS5zZXRGdWxsWWVhcihhLDAsMSksZS5zZXRIb3VycygwLDAsMCwwKSxlfWluY29tcGF0aWJsZVRva2Vucz1bIkciLCJ5IiwiWSIsIlIiLCJ3IiwiSSIsImkiLCJlIiwiYyIsInQiLCJUIl19fSk7dmFyIFZ0ZSxzaHQ9ZygoKT0+e3hzKCk7UHMoKTtWdGU9Y2xhc3MgZXh0ZW5kcyBFdHtzdGF0aWN7aSh0aGlzLCJRdWFydGVyUGFyc2VyIil9cHJpb3JpdHk9MTIwO3BhcnNlKGUsdCxhKXtzd2l0Y2godCl7Y2FzZSJRIjpjYXNlIlFRIjpyZXR1cm4gZ2EodC5sZW5ndGgsZSk7Y2FzZSJRbyI6cmV0dXJuIGEub3JkaW5hbE51bWJlcihlLHt1bml0OiJxdWFydGVyIn0pO2Nhc2UiUVFRIjpyZXR1cm4gYS5xdWFydGVyKGUse3dpZHRoOiJhYmJyZXZpYXRlZCIsY29udGV4dDoiZm9ybWF0dGluZyJ9KXx8YS5xdWFydGVyKGUse3dpZHRoOiJuYXJyb3ciLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7Y2FzZSJRUVFRUSI6cmV0dXJuIGEucXVhcnRlcihlLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJmb3JtYXR0aW5nIn0pO2RlZmF1bHQ6cmV0dXJuIGEucXVhcnRlcihlLHt3aWR0aDoid2lkZSIsY29udGV4dDoiZm9ybWF0dGluZyJ9KXx8YS5xdWFydGVyKGUse3dpZHRoOiJhYmJyZXZpYXRlZCIsY29udGV4dDoiZm9ybWF0dGluZyJ9KXx8YS5xdWFydGVyKGUse3dpZHRoOiJuYXJyb3ciLGNvbnRleHQ6ImZvcm1hdHRpbmcifSl9fXZhbGlkYXRlKGUsdCl7cmV0dXJuIHQ+PTEmJnQ8PTR9c2V0KGUsdCxhKXtyZXR1cm4gZS5zZXRNb250aCgoYS0xKSozLDEpLGUuc2V0SG91cnMoMCwwLDAsMCksZX1pbmNvbXBhdGlibGVUb2tlbnM9WyJZIiwiUiIsInEiLCJNIiwiTCIsInciLCJJIiwiZCIsIkQiLCJpIiwiZSIsImMiLCJ0IiwiVCJdfX0pO3ZhciBVdGUsaWh0PWcoKCk9Pnt4cygpO1BzKCk7VXRlPWNsYXNzIGV4dGVuZHMgRXR7c3RhdGlje2kodGhpcywiU3RhbmRBbG9uZVF1YXJ0ZXJQYXJzZXIiKX1wcmlvcml0eT0xMjA7cGFyc2UoZSx0LGEpe3N3aXRjaCh0KXtjYXNlInEiOmNhc2UicXEiOnJldHVybiBnYSh0Lmxlbmd0aCxlKTtjYXNlInFvIjpyZXR1cm4gYS5vcmRpbmFsTnVtYmVyKGUse3VuaXQ6InF1YXJ0ZXIifSk7Y2FzZSJxcXEiOnJldHVybiBhLnF1YXJ0ZXIoZSx7d2lkdGg6ImFiYnJldmlhdGVkIixjb250ZXh0OiJzdGFuZGFsb25lIn0pfHxhLnF1YXJ0ZXIoZSx7d2lkdGg6Im5hcnJvdyIsY29udGV4dDoic3RhbmRhbG9uZSJ9KTtjYXNlInFxcXFxIjpyZXR1cm4gYS5xdWFydGVyKGUse3dpZHRoOiJuYXJyb3ciLGNvbnRleHQ6InN0YW5kYWxvbmUifSk7ZGVmYXVsdDpyZXR1cm4gYS5xdWFydGVyKGUse3dpZHRoOiJ3aWRlIixjb250ZXh0OiJzdGFuZGFsb25lIn0pfHxhLnF1YXJ0ZXIoZSx7d2lkdGg6ImFiYnJldmlhdGVkIixjb250ZXh0OiJzdGFuZGFsb25lIn0pfHxhLnF1YXJ0ZXIoZSx7d2lkdGg6Im5hcnJvdyIsY29udGV4dDoic3RhbmRhbG9uZSJ9KX19dmFsaWRhdGUoZSx0KXtyZXR1cm4gdD49MSYmdDw9NH1zZXQoZSx0LGEpe3JldHVybiBlLnNldE1vbnRoKChhLTEpKjMsMSksZS5zZXRIb3VycygwLDAsMCwwKSxlfWluY29tcGF0aWJsZVRva2Vucz1bIlkiLCJSIiwiUSIsIk0iLCJMIiwidyIsIkkiLCJkIiwiRCIsImkiLCJlIiwiYyIsInQiLCJUIl19fSk7dmFyIFd0ZSxyaHQ9ZygoKT0+e1pvKCk7eHMoKTtQcygpO1d0ZT1jbGFzcyBleHRlbmRzIEV0e3N0YXRpY3tpKHRoaXMsIk1vbnRoUGFyc2VyIil9aW5jb21wYXRpYmxlVG9rZW5zPVsiWSIsIlIiLCJxIiwiUSIsIkwiLCJ3IiwiSSIsIkQiLCJpIiwiZSIsImMiLCJ0IiwiVCJdO3ByaW9yaXR5PTExMDtwYXJzZShlLHQsYSl7bGV0IHI9aShuPT5uLTEsInZhbHVlQ2FsbGJhY2siKTtzd2l0Y2godCl7Y2FzZSJNIjpyZXR1cm4gT3ModHMoY3MubW9udGgsZSkscik7Y2FzZSJNTSI6cmV0dXJuIE9zKGdhKDIsZSkscik7Y2FzZSJNbyI6cmV0dXJuIE9zKGEub3JkaW5hbE51bWJlcihlLHt1bml0OiJtb250aCJ9KSxyKTtjYXNlIk1NTSI6cmV0dXJuIGEubW9udGgoZSx7d2lkdGg6ImFiYnJldmlhdGVkIixjb250ZXh0OiJmb3JtYXR0aW5nIn0pfHxhLm1vbnRoKGUse3dpZHRoOiJuYXJyb3ciLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7Y2FzZSJNTU1NTSI6cmV0dXJuIGEubW9udGgoZSx7d2lkdGg6Im5hcnJvdyIsY29udGV4dDoiZm9ybWF0dGluZyJ9KTtkZWZhdWx0OnJldHVybiBhLm1vbnRoKGUse3dpZHRoOiJ3aWRlIixjb250ZXh0OiJmb3JtYXR0aW5nIn0pfHxhLm1vbnRoKGUse3dpZHRoOiJhYmJyZXZpYXRlZCIsY29udGV4dDoiZm9ybWF0dGluZyJ9KXx8YS5tb250aChlLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJmb3JtYXR0aW5nIn0pfX12YWxpZGF0ZShlLHQpe3JldHVybiB0Pj0wJiZ0PD0xMX1zZXQoZSx0LGEpe3JldHVybiBlLnNldE1vbnRoKGEsMSksZS5zZXRIb3VycygwLDAsMCwwKSxlfX19KTt2YXIgR3RlLG9odD1nKCgpPT57Wm8oKTt4cygpO1BzKCk7R3RlPWNsYXNzIGV4dGVuZHMgRXR7c3RhdGlje2kodGhpcywiU3RhbmRBbG9uZU1vbnRoUGFyc2VyIil9cHJpb3JpdHk9MTEwO3BhcnNlKGUsdCxhKXtsZXQgcj1pKG49Pm4tMSwidmFsdWVDYWxsYmFjayIpO3N3aXRjaCh0KXtjYXNlIkwiOnJldHVybiBPcyh0cyhjcy5tb250aCxlKSxyKTtjYXNlIkxMIjpyZXR1cm4gT3MoZ2EoMixlKSxyKTtjYXNlIkxvIjpyZXR1cm4gT3MoYS5vcmRpbmFsTnVtYmVyKGUse3VuaXQ6Im1vbnRoIn0pLHIpO2Nhc2UiTExMIjpyZXR1cm4gYS5tb250aChlLHt3aWR0aDoiYWJicmV2aWF0ZWQiLGNvbnRleHQ6InN0YW5kYWxvbmUifSl8fGEubW9udGgoZSx7d2lkdGg6Im5hcnJvdyIsY29udGV4dDoic3RhbmRhbG9uZSJ9KTtjYXNlIkxMTExMIjpyZXR1cm4gYS5tb250aChlLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJzdGFuZGFsb25lIn0pO2RlZmF1bHQ6cmV0dXJuIGEubW9udGgoZSx7d2lkdGg6IndpZGUiLGNvbnRleHQ6InN0YW5kYWxvbmUifSl8fGEubW9udGgoZSx7d2lkdGg6ImFiYnJldmlhdGVkIixjb250ZXh0OiJzdGFuZGFsb25lIn0pfHxhLm1vbnRoKGUse3dpZHRoOiJuYXJyb3ciLGNvbnRleHQ6InN0YW5kYWxvbmUifSl9fXZhbGlkYXRlKGUsdCl7cmV0dXJuIHQ+PTAmJnQ8PTExfXNldChlLHQsYSl7cmV0dXJuIGUuc2V0TW9udGgoYSwxKSxlLnNldEhvdXJzKDAsMCwwLDApLGV9aW5jb21wYXRpYmxlVG9rZW5zPVsiWSIsIlIiLCJxIiwiUSIsIk0iLCJ3IiwiSSIsIkQiLCJpIiwiZSIsImMiLCJ0IiwiVCJdfX0pO2Z1bmN0aW9uIEt0ZShzLGUsdCl7bGV0IGE9QWUocyx0Py5pbikscj1pOShhLHQpLWU7cmV0dXJuIGEuc2V0RGF0ZShhLmdldERhdGUoKS1yKjcpLEFlKGEsdD8uaW4pfXZhciAkVHMsRnBlPWcoKCk9Pnt3dGUoKTthdCgpO2koS3RlLCJzZXRXZWVrIik7JFRzPUt0ZX0pO3ZhciBZdGUsbmh0PWcoKCk9PntGcGUoKTt2MSgpO1pvKCk7eHMoKTtQcygpO1l0ZT1jbGFzcyBleHRlbmRzIEV0e3N0YXRpY3tpKHRoaXMsIkxvY2FsV2Vla1BhcnNlciIpfXByaW9yaXR5PTEwMDtwYXJzZShlLHQsYSl7c3dpdGNoKHQpe2Nhc2UidyI6cmV0dXJuIHRzKGNzLndlZWssZSk7Y2FzZSJ3byI6cmV0dXJuIGEub3JkaW5hbE51bWJlcihlLHt1bml0OiJ3ZWVrIn0pO2RlZmF1bHQ6cmV0dXJuIGdhKHQubGVuZ3RoLGUpfX12YWxpZGF0ZShlLHQpe3JldHVybiB0Pj0xJiZ0PD01M31zZXQoZSx0LGEscil7cmV0dXJuIEtzKEt0ZShlLGEscikscil9aW5jb21wYXRpYmxlVG9rZW5zPVsieSIsIlIiLCJ1IiwicSIsIlEiLCJNIiwiTCIsIkkiLCJkIiwiRCIsImkiLCJ0IiwiVCJdfX0pO2Z1bmN0aW9uIFp0ZShzLGUsdCl7bGV0IGE9QWUocyx0Py5pbikscj1zOShhLHQpLWU7cmV0dXJuIGEuc2V0RGF0ZShhLmdldERhdGUoKS1yKjcpLGF9dmFyIEhUcyxCcGU9ZygoKT0+e3h0ZSgpO2F0KCk7aShadGUsInNldElTT1dlZWsiKTtIVHM9WnRlfSk7dmFyIFh0ZSxsaHQ9ZygoKT0+e0JwZSgpO3RkKCk7Wm8oKTt4cygpO1BzKCk7WHRlPWNsYXNzIGV4dGVuZHMgRXR7c3RhdGlje2kodGhpcywiSVNPV2Vla1BhcnNlciIpfXByaW9yaXR5PTEwMDtwYXJzZShlLHQsYSl7c3dpdGNoKHQpe2Nhc2UiSSI6cmV0dXJuIHRzKGNzLndlZWssZSk7Y2FzZSJJbyI6cmV0dXJuIGEub3JkaW5hbE51bWJlcihlLHt1bml0OiJ3ZWVrIn0pO2RlZmF1bHQ6cmV0dXJuIGdhKHQubGVuZ3RoLGUpfX12YWxpZGF0ZShlLHQpe3JldHVybiB0Pj0xJiZ0PD01M31zZXQoZSx0LGEpe3JldHVybiBrcihadGUoZSxhKSl9aW5jb21wYXRpYmxlVG9rZW5zPVsieSIsIlkiLCJ1IiwicSIsIlEiLCJNIiwiTCIsInciLCJkIiwiRCIsImUiLCJjIiwidCIsIlQiXX19KTt2YXIgdUVhLHBFYSxRdGUsY2h0PWcoKCk9PntabygpO3hzKCk7UHMoKTt1RWE9WzMxLDI4LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXSxwRWE9WzMxLDI5LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXSxRdGU9Y2xhc3MgZXh0ZW5kcyBFdHtzdGF0aWN7aSh0aGlzLCJEYXRlUGFyc2VyIil9cHJpb3JpdHk9OTA7c3ViUHJpb3JpdHk9MTtwYXJzZShlLHQsYSl7c3dpdGNoKHQpe2Nhc2UiZCI6cmV0dXJuIHRzKGNzLmRhdGUsZSk7Y2FzZSJkbyI6cmV0dXJuIGEub3JkaW5hbE51bWJlcihlLHt1bml0OiJkYXRlIn0pO2RlZmF1bHQ6cmV0dXJuIGdhKHQubGVuZ3RoLGUpfX12YWxpZGF0ZShlLHQpe2xldCBhPWUuZ2V0RnVsbFllYXIoKSxyPUZ0ZShhKSxuPWUuZ2V0TW9udGgoKTtyZXR1cm4gcj90Pj0xJiZ0PD1wRWFbbl06dD49MSYmdDw9dUVhW25dfXNldChlLHQsYSl7cmV0dXJuIGUuc2V0RGF0ZShhKSxlLnNldEhvdXJzKDAsMCwwLDApLGV9aW5jb21wYXRpYmxlVG9rZW5zPVsiWSIsIlIiLCJxIiwiUSIsInciLCJJIiwiRCIsImkiLCJlIiwiYyIsInQiLCJUIl19fSk7dmFyIEp0ZSxkaHQ9ZygoKT0+e1pvKCk7eHMoKTtQcygpO0p0ZT1jbGFzcyBleHRlbmRzIEV0e3N0YXRpY3tpKHRoaXMsIkRheU9mWWVhclBhcnNlciIpfXByaW9yaXR5PTkwO3N1YnByaW9yaXR5PTE7cGFyc2UoZSx0LGEpe3N3aXRjaCh0KXtjYXNlIkQiOmNhc2UiREQiOnJldHVybiB0cyhjcy5kYXlPZlllYXIsZSk7Y2FzZSJEbyI6cmV0dXJuIGEub3JkaW5hbE51bWJlcihlLHt1bml0OiJkYXRlIn0pO2RlZmF1bHQ6cmV0dXJuIGdhKHQubGVuZ3RoLGUpfX12YWxpZGF0ZShlLHQpe2xldCBhPWUuZ2V0RnVsbFllYXIoKTtyZXR1cm4gRnRlKGEpP3Q+PTEmJnQ8PTM2Njp0Pj0xJiZ0PD0zNjV9c2V0KGUsdCxhKXtyZXR1cm4gZS5zZXRNb250aCgwLGEpLGUuc2V0SG91cnMoMCwwLDAsMCksZX1pbmNvbXBhdGlibGVUb2tlbnM9WyJZIiwiUiIsInEiLCJRIiwiTSIsIkwiLCJ3IiwiSSIsImQiLCJFIiwiaSIsImUiLCJjIiwidCIsIlQiXX19KTtmdW5jdGlvbiB5cChzLGUsdCl7bGV0IGE9RXMoKSxyPXQ/LndlZWtTdGFydHNPbj8/dD8ubG9jYWxlPy5vcHRpb25zPy53ZWVrU3RhcnRzT24/P2Eud2Vla1N0YXJ0c09uPz9hLmxvY2FsZT8ub3B0aW9ucz8ud2Vla1N0YXJ0c09uPz8wLG49QWUocyx0Py5pbiksbz1uLmdldERheSgpLHA9KGUlNys3KSU3LGQ9Ny1yLHU9ZTwwfHxlPjY/ZS0obytkKSU3OihwK2QpJTctKG8rZCklNztyZXR1cm4gSHIobix1LHQpfXZhciBkJHMsRnk9ZygoKT0+e0dvKCk7UTIoKTthdCgpO2koeXAsInNldERheSIpO2Qkcz15cH0pO3ZhciBlYWUsdWh0PWcoKCk9PntGeSgpO3hzKCk7ZWFlPWNsYXNzIGV4dGVuZHMgRXR7c3RhdGlje2kodGhpcywiRGF5UGFyc2VyIil9cHJpb3JpdHk9OTA7cGFyc2UoZSx0LGEpe3N3aXRjaCh0KXtjYXNlIkUiOmNhc2UiRUUiOmNhc2UiRUVFIjpyZXR1cm4gYS5kYXkoZSx7d2lkdGg6ImFiYnJldmlhdGVkIixjb250ZXh0OiJmb3JtYXR0aW5nIn0pfHxhLmRheShlLHt3aWR0aDoic2hvcnQiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSl8fGEuZGF5KGUse3dpZHRoOiJuYXJyb3ciLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7Y2FzZSJFRUVFRSI6cmV0dXJuIGEuZGF5KGUse3dpZHRoOiJuYXJyb3ciLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7Y2FzZSJFRUVFRUUiOnJldHVybiBhLmRheShlLHt3aWR0aDoic2hvcnQiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSl8fGEuZGF5KGUse3dpZHRoOiJuYXJyb3ciLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7ZGVmYXVsdDpyZXR1cm4gYS5kYXkoZSx7d2lkdGg6IndpZGUiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSl8fGEuZGF5KGUse3dpZHRoOiJhYmJyZXZpYXRlZCIsY29udGV4dDoiZm9ybWF0dGluZyJ9KXx8YS5kYXkoZSx7d2lkdGg6InNob3J0Iixjb250ZXh0OiJmb3JtYXR0aW5nIn0pfHxhLmRheShlLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJmb3JtYXR0aW5nIn0pfX12YWxpZGF0ZShlLHQpe3JldHVybiB0Pj0wJiZ0PD02fXNldChlLHQsYSxyKXtyZXR1cm4gZT15cChlLGEsciksZS5zZXRIb3VycygwLDAsMCwwKSxlfWluY29tcGF0aWJsZVRva2Vucz1bIkQiLCJpIiwiZSIsImMiLCJ0IiwiVCJdfX0pO3ZhciB0YWUscGh0PWcoKCk9PntGeSgpO3hzKCk7UHMoKTt0YWU9Y2xhc3MgZXh0ZW5kcyBFdHtzdGF0aWN7aSh0aGlzLCJMb2NhbERheVBhcnNlciIpfXByaW9yaXR5PTkwO3BhcnNlKGUsdCxhLHIpe2xldCBuPWkobz0+e2xldCBsPU1hdGguZmxvb3IoKG8tMSkvNykqNztyZXR1cm4obytyLndlZWtTdGFydHNPbis2KSU3K2x9LCJ2YWx1ZUNhbGxiYWNrIik7c3dpdGNoKHQpe2Nhc2UiZSI6Y2FzZSJlZSI6cmV0dXJuIE9zKGdhKHQubGVuZ3RoLGUpLG4pO2Nhc2UiZW8iOnJldHVybiBPcyhhLm9yZGluYWxOdW1iZXIoZSx7dW5pdDoiZGF5In0pLG4pO2Nhc2UiZWVlIjpyZXR1cm4gYS5kYXkoZSx7d2lkdGg6ImFiYnJldmlhdGVkIixjb250ZXh0OiJmb3JtYXR0aW5nIn0pfHxhLmRheShlLHt3aWR0aDoic2hvcnQiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSl8fGEuZGF5KGUse3dpZHRoOiJuYXJyb3ciLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7Y2FzZSJlZWVlZSI6cmV0dXJuIGEuZGF5KGUse3dpZHRoOiJuYXJyb3ciLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7Y2FzZSJlZWVlZWUiOnJldHVybiBhLmRheShlLHt3aWR0aDoic2hvcnQiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSl8fGEuZGF5KGUse3dpZHRoOiJuYXJyb3ciLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7ZGVmYXVsdDpyZXR1cm4gYS5kYXkoZSx7d2lkdGg6IndpZGUiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSl8fGEuZGF5KGUse3dpZHRoOiJhYmJyZXZpYXRlZCIsY29udGV4dDoiZm9ybWF0dGluZyJ9KXx8YS5kYXkoZSx7d2lkdGg6InNob3J0Iixjb250ZXh0OiJmb3JtYXR0aW5nIn0pfHxhLmRheShlLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJmb3JtYXR0aW5nIn0pfX12YWxpZGF0ZShlLHQpe3JldHVybiB0Pj0wJiZ0PD02fXNldChlLHQsYSxyKXtyZXR1cm4gZT15cChlLGEsciksZS5zZXRIb3VycygwLDAsMCwwKSxlfWluY29tcGF0aWJsZVRva2Vucz1bInkiLCJSIiwidSIsInEiLCJRIiwiTSIsIkwiLCJJIiwiZCIsIkQiLCJFIiwiaSIsImMiLCJ0IiwiVCJdfX0pO3ZhciBhYWUsaGh0PWcoKCk9PntGeSgpO3hzKCk7UHMoKTthYWU9Y2xhc3MgZXh0ZW5kcyBFdHtzdGF0aWN7aSh0aGlzLCJTdGFuZEFsb25lTG9jYWxEYXlQYXJzZXIiKX1wcmlvcml0eT05MDtwYXJzZShlLHQsYSxyKXtsZXQgbj1pKG89PntsZXQgbD1NYXRoLmZsb29yKChvLTEpLzcpKjc7cmV0dXJuKG8rci53ZWVrU3RhcnRzT24rNiklNytsfSwidmFsdWVDYWxsYmFjayIpO3N3aXRjaCh0KXtjYXNlImMiOmNhc2UiY2MiOnJldHVybiBPcyhnYSh0Lmxlbmd0aCxlKSxuKTtjYXNlImNvIjpyZXR1cm4gT3MoYS5vcmRpbmFsTnVtYmVyKGUse3VuaXQ6ImRheSJ9KSxuKTtjYXNlImNjYyI6cmV0dXJuIGEuZGF5KGUse3dpZHRoOiJhYmJyZXZpYXRlZCIsY29udGV4dDoic3RhbmRhbG9uZSJ9KXx8YS5kYXkoZSx7d2lkdGg6InNob3J0Iixjb250ZXh0OiJzdGFuZGFsb25lIn0pfHxhLmRheShlLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJzdGFuZGFsb25lIn0pO2Nhc2UiY2NjY2MiOnJldHVybiBhLmRheShlLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJzdGFuZGFsb25lIn0pO2Nhc2UiY2NjY2NjIjpyZXR1cm4gYS5kYXkoZSx7d2lkdGg6InNob3J0Iixjb250ZXh0OiJzdGFuZGFsb25lIn0pfHxhLmRheShlLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJzdGFuZGFsb25lIn0pO2RlZmF1bHQ6cmV0dXJuIGEuZGF5KGUse3dpZHRoOiJ3aWRlIixjb250ZXh0OiJzdGFuZGFsb25lIn0pfHxhLmRheShlLHt3aWR0aDoiYWJicmV2aWF0ZWQiLGNvbnRleHQ6InN0YW5kYWxvbmUifSl8fGEuZGF5KGUse3dpZHRoOiJzaG9ydCIsY29udGV4dDoic3RhbmRhbG9uZSJ9KXx8YS5kYXkoZSx7d2lkdGg6Im5hcnJvdyIsY29udGV4dDoic3RhbmRhbG9uZSJ9KX19dmFsaWRhdGUoZSx0KXtyZXR1cm4gdD49MCYmdDw9Nn1zZXQoZSx0LGEscil7cmV0dXJuIGU9eXAoZSxhLHIpLGUuc2V0SG91cnMoMCwwLDAsMCksZX1pbmNvbXBhdGlibGVUb2tlbnM9WyJ5IiwiUiIsInUiLCJxIiwiUSIsIk0iLCJMIiwiSSIsImQiLCJEIiwiRSIsImkiLCJlIiwidCIsIlQiXX19KTtmdW5jdGlvbiBzYWUocyxlLHQpe2xldCBhPUFlKHMsdD8uaW4pLHI9RHRlKGEsdCksbj1lLXI7cmV0dXJuIEhyKGEsbix0KX12YXIgRCRzLEhwZT1nKCgpPT57UTIoKTtBcGUoKTthdCgpO2koc2FlLCJzZXRJU09EYXkiKTtEJHM9c2FlfSk7dmFyIGlhZSxmaHQ9ZygoKT0+e0hwZSgpO3hzKCk7UHMoKTtpYWU9Y2xhc3MgZXh0ZW5kcyBFdHtzdGF0aWN7aSh0aGlzLCJJU09EYXlQYXJzZXIiKX1wcmlvcml0eT05MDtwYXJzZShlLHQsYSl7bGV0IHI9aShuPT5uPT09MD83Om4sInZhbHVlQ2FsbGJhY2siKTtzd2l0Y2godCl7Y2FzZSJpIjpjYXNlImlpIjpyZXR1cm4gZ2EodC5sZW5ndGgsZSk7Y2FzZSJpbyI6cmV0dXJuIGEub3JkaW5hbE51bWJlcihlLHt1bml0OiJkYXkifSk7Y2FzZSJpaWkiOnJldHVybiBPcyhhLmRheShlLHt3aWR0aDoiYWJicmV2aWF0ZWQiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSl8fGEuZGF5KGUse3dpZHRoOiJzaG9ydCIsY29udGV4dDoiZm9ybWF0dGluZyJ9KXx8YS5kYXkoZSx7d2lkdGg6Im5hcnJvdyIsY29udGV4dDoiZm9ybWF0dGluZyJ9KSxyKTtjYXNlImlpaWlpIjpyZXR1cm4gT3MoYS5kYXkoZSx7d2lkdGg6Im5hcnJvdyIsY29udGV4dDoiZm9ybWF0dGluZyJ9KSxyKTtjYXNlImlpaWlpaSI6cmV0dXJuIE9zKGEuZGF5KGUse3dpZHRoOiJzaG9ydCIsY29udGV4dDoiZm9ybWF0dGluZyJ9KXx8YS5kYXkoZSx7d2lkdGg6Im5hcnJvdyIsY29udGV4dDoiZm9ybWF0dGluZyJ9KSxyKTtkZWZhdWx0OnJldHVybiBPcyhhLmRheShlLHt3aWR0aDoid2lkZSIsY29udGV4dDoiZm9ybWF0dGluZyJ9KXx8YS5kYXkoZSx7d2lkdGg6ImFiYnJldmlhdGVkIixjb250ZXh0OiJmb3JtYXR0aW5nIn0pfHxhLmRheShlLHt3aWR0aDoic2hvcnQiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSl8fGEuZGF5KGUse3dpZHRoOiJuYXJyb3ciLGNvbnRleHQ6ImZvcm1hdHRpbmcifSkscil9fXZhbGlkYXRlKGUsdCl7cmV0dXJuIHQ+PTEmJnQ8PTd9c2V0KGUsdCxhKXtyZXR1cm4gZT1zYWUoZSxhKSxlLnNldEhvdXJzKDAsMCwwLDApLGV9aW5jb21wYXRpYmxlVG9rZW5zPVsieSIsIlkiLCJ1IiwicSIsIlEiLCJNIiwiTCIsInciLCJkIiwiRCIsIkUiLCJlIiwiYyIsInQiLCJUIl19fSk7dmFyIHJhZSxtaHQ9ZygoKT0+e3hzKCk7UHMoKTtyYWU9Y2xhc3MgZXh0ZW5kcyBFdHtzdGF0aWN7aSh0aGlzLCJBTVBNUGFyc2VyIil9cHJpb3JpdHk9ODA7cGFyc2UoZSx0LGEpe3N3aXRjaCh0KXtjYXNlImEiOmNhc2UiYWEiOmNhc2UiYWFhIjpyZXR1cm4gYS5kYXlQZXJpb2QoZSx7d2lkdGg6ImFiYnJldmlhdGVkIixjb250ZXh0OiJmb3JtYXR0aW5nIn0pfHxhLmRheVBlcmlvZChlLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJmb3JtYXR0aW5nIn0pO2Nhc2UiYWFhYWEiOnJldHVybiBhLmRheVBlcmlvZChlLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJmb3JtYXR0aW5nIn0pO2RlZmF1bHQ6cmV0dXJuIGEuZGF5UGVyaW9kKGUse3dpZHRoOiJ3aWRlIixjb250ZXh0OiJmb3JtYXR0aW5nIn0pfHxhLmRheVBlcmlvZChlLHt3aWR0aDoiYWJicmV2aWF0ZWQiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSl8fGEuZGF5UGVyaW9kKGUse3dpZHRoOiJuYXJyb3ciLGNvbnRleHQ6ImZvcm1hdHRpbmcifSl9fXNldChlLHQsYSl7cmV0dXJuIGUuc2V0SG91cnMobjkoYSksMCwwLDApLGV9aW5jb21wYXRpYmxlVG9rZW5zPVsiYiIsIkIiLCJIIiwiayIsInQiLCJUIl19fSk7dmFyIG9hZSxnaHQ9ZygoKT0+e3hzKCk7UHMoKTtvYWU9Y2xhc3MgZXh0ZW5kcyBFdHtzdGF0aWN7aSh0aGlzLCJBTVBNTWlkbmlnaHRQYXJzZXIiKX1wcmlvcml0eT04MDtwYXJzZShlLHQsYSl7c3dpdGNoKHQpe2Nhc2UiYiI6Y2FzZSJiYiI6Y2FzZSJiYmIiOnJldHVybiBhLmRheVBlcmlvZChlLHt3aWR0aDoiYWJicmV2aWF0ZWQiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSl8fGEuZGF5UGVyaW9kKGUse3dpZHRoOiJuYXJyb3ciLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7Y2FzZSJiYmJiYiI6cmV0dXJuIGEuZGF5UGVyaW9kKGUse3dpZHRoOiJuYXJyb3ciLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7ZGVmYXVsdDpyZXR1cm4gYS5kYXlQZXJpb2QoZSx7d2lkdGg6IndpZGUiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSl8fGEuZGF5UGVyaW9kKGUse3dpZHRoOiJhYmJyZXZpYXRlZCIsY29udGV4dDoiZm9ybWF0dGluZyJ9KXx8YS5kYXlQZXJpb2QoZSx7d2lkdGg6Im5hcnJvdyIsY29udGV4dDoiZm9ybWF0dGluZyJ9KX19c2V0KGUsdCxhKXtyZXR1cm4gZS5zZXRIb3VycyhuOShhKSwwLDAsMCksZX1pbmNvbXBhdGlibGVUb2tlbnM9WyJhIiwiQiIsIkgiLCJrIiwidCIsIlQiXX19KTt2YXIgbmFlLGJodD1nKCgpPT57eHMoKTtQcygpO25hZT1jbGFzcyBleHRlbmRzIEV0e3N0YXRpY3tpKHRoaXMsIkRheVBlcmlvZFBhcnNlciIpfXByaW9yaXR5PTgwO3BhcnNlKGUsdCxhKXtzd2l0Y2godCl7Y2FzZSJCIjpjYXNlIkJCIjpjYXNlIkJCQiI6cmV0dXJuIGEuZGF5UGVyaW9kKGUse3dpZHRoOiJhYmJyZXZpYXRlZCIsY29udGV4dDoiZm9ybWF0dGluZyJ9KXx8YS5kYXlQZXJpb2QoZSx7d2lkdGg6Im5hcnJvdyIsY29udGV4dDoiZm9ybWF0dGluZyJ9KTtjYXNlIkJCQkJCIjpyZXR1cm4gYS5kYXlQZXJpb2QoZSx7d2lkdGg6Im5hcnJvdyIsY29udGV4dDoiZm9ybWF0dGluZyJ9KTtkZWZhdWx0OnJldHVybiBhLmRheVBlcmlvZChlLHt3aWR0aDoid2lkZSIsY29udGV4dDoiZm9ybWF0dGluZyJ9KXx8YS5kYXlQZXJpb2QoZSx7d2lkdGg6ImFiYnJldmlhdGVkIixjb250ZXh0OiJmb3JtYXR0aW5nIn0pfHxhLmRheVBlcmlvZChlLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJmb3JtYXR0aW5nIn0pfX1zZXQoZSx0LGEpe3JldHVybiBlLnNldEhvdXJzKG45KGEpLDAsMCwwKSxlfWluY29tcGF0aWJsZVRva2Vucz1bImEiLCJiIiwidCIsIlQiXX19KTt2YXIgbGFlLHZodD1nKCgpPT57Wm8oKTt4cygpO1BzKCk7bGFlPWNsYXNzIGV4dGVuZHMgRXR7c3RhdGlje2kodGhpcywiSG91cjF0bzEyUGFyc2VyIil9cHJpb3JpdHk9NzA7cGFyc2UoZSx0LGEpe3N3aXRjaCh0KXtjYXNlImgiOnJldHVybiB0cyhjcy5ob3VyMTJoLGUpO2Nhc2UiaG8iOnJldHVybiBhLm9yZGluYWxOdW1iZXIoZSx7dW5pdDoiaG91ciJ9KTtkZWZhdWx0OnJldHVybiBnYSh0Lmxlbmd0aCxlKX19dmFsaWRhdGUoZSx0KXtyZXR1cm4gdD49MSYmdDw9MTJ9c2V0KGUsdCxhKXtsZXQgcj1lLmdldEhvdXJzKCk+PTEyO3JldHVybiByJiZhPDEyP2Uuc2V0SG91cnMoYSsxMiwwLDAsMCk6IXImJmE9PT0xMj9lLnNldEhvdXJzKDAsMCwwLDApOmUuc2V0SG91cnMoYSwwLDAsMCksZX1pbmNvbXBhdGlibGVUb2tlbnM9WyJIIiwiSyIsImsiLCJ0IiwiVCJdfX0pO3ZhciBjYWUseGh0PWcoKCk9PntabygpO3hzKCk7UHMoKTtjYWU9Y2xhc3MgZXh0ZW5kcyBFdHtzdGF0aWN7aSh0aGlzLCJIb3VyMHRvMjNQYXJzZXIiKX1wcmlvcml0eT03MDtwYXJzZShlLHQsYSl7c3dpdGNoKHQpe2Nhc2UiSCI6cmV0dXJuIHRzKGNzLmhvdXIyM2gsZSk7Y2FzZSJIbyI6cmV0dXJuIGEub3JkaW5hbE51bWJlcihlLHt1bml0OiJob3VyIn0pO2RlZmF1bHQ6cmV0dXJuIGdhKHQubGVuZ3RoLGUpfX12YWxpZGF0ZShlLHQpe3JldHVybiB0Pj0wJiZ0PD0yM31zZXQoZSx0LGEpe3JldHVybiBlLnNldEhvdXJzKGEsMCwwLDApLGV9aW5jb21wYXRpYmxlVG9rZW5zPVsiYSIsImIiLCJoIiwiSyIsImsiLCJ0IiwiVCJdfX0pO3ZhciBkYWUseWh0PWcoKCk9PntabygpO3hzKCk7UHMoKTtkYWU9Y2xhc3MgZXh0ZW5kcyBFdHtzdGF0aWN7aSh0aGlzLCJIb3VyMFRvMTFQYXJzZXIiKX1wcmlvcml0eT03MDtwYXJzZShlLHQsYSl7c3dpdGNoKHQpe2Nhc2UiSyI6cmV0dXJuIHRzKGNzLmhvdXIxMWgsZSk7Y2FzZSJLbyI6cmV0dXJuIGEub3JkaW5hbE51bWJlcihlLHt1bml0OiJob3VyIn0pO2RlZmF1bHQ6cmV0dXJuIGdhKHQubGVuZ3RoLGUpfX12YWxpZGF0ZShlLHQpe3JldHVybiB0Pj0wJiZ0PD0xMX1zZXQoZSx0LGEpe3JldHVybiBlLmdldEhvdXJzKCk+PTEyJiZhPDEyP2Uuc2V0SG91cnMoYSsxMiwwLDAsMCk6ZS5zZXRIb3VycyhhLDAsMCwwKSxlfWluY29tcGF0aWJsZVRva2Vucz1bImgiLCJIIiwiayIsInQiLCJUIl19fSk7dmFyIHVhZSx3aHQ9ZygoKT0+e1pvKCk7eHMoKTtQcygpO3VhZT1jbGFzcyBleHRlbmRzIEV0e3N0YXRpY3tpKHRoaXMsIkhvdXIxVG8yNFBhcnNlciIpfXByaW9yaXR5PTcwO3BhcnNlKGUsdCxhKXtzd2l0Y2godCl7Y2FzZSJrIjpyZXR1cm4gdHMoY3MuaG91cjI0aCxlKTtjYXNlImtvIjpyZXR1cm4gYS5vcmRpbmFsTnVtYmVyKGUse3VuaXQ6ImhvdXIifSk7ZGVmYXVsdDpyZXR1cm4gZ2EodC5sZW5ndGgsZSl9fXZhbGlkYXRlKGUsdCl7cmV0dXJuIHQ+PTEmJnQ8PTI0fXNldChlLHQsYSl7bGV0IHI9YTw9MjQ/YSUyNDphO3JldHVybiBlLnNldEhvdXJzKHIsMCwwLDApLGV9aW5jb21wYXRpYmxlVG9rZW5zPVsiYSIsImIiLCJoIiwiSCIsIksiLCJ0IiwiVCJdfX0pO3ZhciBwYWUsa2h0PWcoKCk9PntabygpO3hzKCk7UHMoKTtwYWU9Y2xhc3MgZXh0ZW5kcyBFdHtzdGF0aWN7aSh0aGlzLCJNaW51dGVQYXJzZXIiKX1wcmlvcml0eT02MDtwYXJzZShlLHQsYSl7c3dpdGNoKHQpe2Nhc2UibSI6cmV0dXJuIHRzKGNzLm1pbnV0ZSxlKTtjYXNlIm1vIjpyZXR1cm4gYS5vcmRpbmFsTnVtYmVyKGUse3VuaXQ6Im1pbnV0ZSJ9KTtkZWZhdWx0OnJldHVybiBnYSh0Lmxlbmd0aCxlKX19dmFsaWRhdGUoZSx0KXtyZXR1cm4gdD49MCYmdDw9NTl9c2V0KGUsdCxhKXtyZXR1cm4gZS5zZXRNaW51dGVzKGEsMCwwKSxlfWluY29tcGF0aWJsZVRva2Vucz1bInQiLCJUIl19fSk7dmFyIGhhZSxTaHQ9ZygoKT0+e1pvKCk7eHMoKTtQcygpO2hhZT1jbGFzcyBleHRlbmRzIEV0e3N0YXRpY3tpKHRoaXMsIlNlY29uZFBhcnNlciIpfXByaW9yaXR5PTUwO3BhcnNlKGUsdCxhKXtzd2l0Y2godCl7Y2FzZSJzIjpyZXR1cm4gdHMoY3Muc2Vjb25kLGUpO2Nhc2Uic28iOnJldHVybiBhLm9yZGluYWxOdW1iZXIoZSx7dW5pdDoic2Vjb25kIn0pO2RlZmF1bHQ6cmV0dXJuIGdhKHQubGVuZ3RoLGUpfX12YWxpZGF0ZShlLHQpe3JldHVybiB0Pj0wJiZ0PD01OX1zZXQoZSx0LGEpe3JldHVybiBlLnNldFNlY29uZHMoYSwwKSxlfWluY29tcGF0aWJsZVRva2Vucz1bInQiLCJUIl19fSk7dmFyIGZhZSxfaHQ9ZygoKT0+e3hzKCk7UHMoKTtmYWU9Y2xhc3MgZXh0ZW5kcyBFdHtzdGF0aWN7aSh0aGlzLCJGcmFjdGlvbk9mU2Vjb25kUGFyc2VyIil9cHJpb3JpdHk9MzA7cGFyc2UoZSx0KXtsZXQgYT1pKHI9Pk1hdGgudHJ1bmMocipNYXRoLnBvdygxMCwtdC5sZW5ndGgrMykpLCJ2YWx1ZUNhbGxiYWNrIik7cmV0dXJuIE9zKGdhKHQubGVuZ3RoLGUpLGEpfXNldChlLHQsYSl7cmV0dXJuIGUuc2V0TWlsbGlzZWNvbmRzKGEpLGV9aW5jb21wYXRpYmxlVG9rZW5zPVsidCIsIlQiXX19KTt2YXIgbWFlLE1odD1nKCgpPT57R3QoKTt1MCgpO1pvKCk7eHMoKTtQcygpO21hZT1jbGFzcyBleHRlbmRzIEV0e3N0YXRpY3tpKHRoaXMsIklTT1RpbWV6b25lV2l0aFpQYXJzZXIiKX1wcmlvcml0eT0xMDtwYXJzZShlLHQpe3N3aXRjaCh0KXtjYXNlIlgiOnJldHVybiBTYyhrYy5iYXNpY09wdGlvbmFsTWludXRlcyxlKTtjYXNlIlhYIjpyZXR1cm4gU2Moa2MuYmFzaWMsZSk7Y2FzZSJYWFhYIjpyZXR1cm4gU2Moa2MuYmFzaWNPcHRpb25hbFNlY29uZHMsZSk7Y2FzZSJYWFhYWCI6cmV0dXJuIFNjKGtjLmV4dGVuZGVkT3B0aW9uYWxTZWNvbmRzLGUpO2RlZmF1bHQ6cmV0dXJuIFNjKGtjLmV4dGVuZGVkLGUpfX1zZXQoZSx0LGEpe3JldHVybiB0LnRpbWVzdGFtcElzU2V0P2U6dHQoZSxlLmdldFRpbWUoKS1GaShlKS1hKX1pbmNvbXBhdGlibGVUb2tlbnM9WyJ0IiwiVCIsIngiXX19KTt2YXIgZ2FlLHpodD1nKCgpPT57R3QoKTt1MCgpO1pvKCk7eHMoKTtQcygpO2dhZT1jbGFzcyBleHRlbmRzIEV0e3N0YXRpY3tpKHRoaXMsIklTT1RpbWV6b25lUGFyc2VyIil9cHJpb3JpdHk9MTA7cGFyc2UoZSx0KXtzd2l0Y2godCl7Y2FzZSJ4IjpyZXR1cm4gU2Moa2MuYmFzaWNPcHRpb25hbE1pbnV0ZXMsZSk7Y2FzZSJ4eCI6cmV0dXJuIFNjKGtjLmJhc2ljLGUpO2Nhc2UieHh4eCI6cmV0dXJuIFNjKGtjLmJhc2ljT3B0aW9uYWxTZWNvbmRzLGUpO2Nhc2UieHh4eHgiOnJldHVybiBTYyhrYy5leHRlbmRlZE9wdGlvbmFsU2Vjb25kcyxlKTtkZWZhdWx0OnJldHVybiBTYyhrYy5leHRlbmRlZCxlKX19c2V0KGUsdCxhKXtyZXR1cm4gdC50aW1lc3RhbXBJc1NldD9lOnR0KGUsZS5nZXRUaW1lKCktRmkoZSktYSl9aW5jb21wYXRpYmxlVG9rZW5zPVsidCIsIlQiLCJYIl19fSk7dmFyIGJhZSxDaHQ9ZygoKT0+e0d0KCk7eHMoKTtQcygpO2JhZT1jbGFzcyBleHRlbmRzIEV0e3N0YXRpY3tpKHRoaXMsIlRpbWVzdGFtcFNlY29uZHNQYXJzZXIiKX1wcmlvcml0eT00MDtwYXJzZShlKXtyZXR1cm4gUnRlKGUpfXNldChlLHQsYSl7cmV0dXJuW3R0KGUsYSoxZTMpLHt0aW1lc3RhbXBJc1NldDohMH1dfWluY29tcGF0aWJsZVRva2Vucz0iKiJ9fSk7dmFyIHZhZSxUaHQ9ZygoKT0+e0d0KCk7eHMoKTtQcygpO3ZhZT1jbGFzcyBleHRlbmRzIEV0e3N0YXRpY3tpKHRoaXMsIlRpbWVzdGFtcE1pbGxpc2Vjb25kc1BhcnNlciIpfXByaW9yaXR5PTIwO3BhcnNlKGUpe3JldHVybiBSdGUoZSl9c2V0KGUsdCxhKXtyZXR1cm5bdHQoZSxhKSx7dGltZXN0YW1wSXNTZXQ6ITB9XX1pbmNvbXBhdGlibGVUb2tlbnM9IioifX0pO3ZhciB4YWUsJGh0PWcoKCk9PntRcHQoKTtKcHQoKTtlaHQoKTt0aHQoKTthaHQoKTtzaHQoKTtpaHQoKTtyaHQoKTtvaHQoKTtuaHQoKTtsaHQoKTtjaHQoKTtkaHQoKTt1aHQoKTtwaHQoKTtoaHQoKTtmaHQoKTttaHQoKTtnaHQoKTtiaHQoKTt2aHQoKTt4aHQoKTt5aHQoKTt3aHQoKTtraHQoKTtTaHQoKTtfaHQoKTtNaHQoKTt6aHQoKTtDaHQoKTtUaHQoKTt4YWU9e0c6bmV3IE50ZSx5Om5ldyBCdGUsWTpuZXcgSHRlLFI6bmV3IHF0ZSx1Om5ldyBqdGUsUTpuZXcgVnRlLHE6bmV3IFV0ZSxNOm5ldyBXdGUsTDpuZXcgR3RlLHc6bmV3IFl0ZSxJOm5ldyBYdGUsZDpuZXcgUXRlLEQ6bmV3IEp0ZSxFOm5ldyBlYWUsZTpuZXcgdGFlLGM6bmV3IGFhZSxpOm5ldyBpYWUsYTpuZXcgcmFlLGI6bmV3IG9hZSxCOm5ldyBuYWUsaDpuZXcgbGFlLEg6bmV3IGNhZSxLOm5ldyBkYWUsazpuZXcgdWFlLG06bmV3IHBhZSxzOm5ldyBoYWUsUzpuZXcgZmFlLFg6bmV3IG1hZSx4Om5ldyBnYWUsdDpuZXcgYmFlLFQ6bmV3IHZhZX19KTtmdW5jdGlvbiB5YWUocyxlLHQsYSl7bGV0IHI9aSgoKT0+dHQoYT8uaW58fHQsTmFOKSwiaW52YWxpZERhdGUiKSxuPSR0ZSgpLG89YT8ubG9jYWxlPz9uLmxvY2FsZT8/bWwsbD1hPy5maXJzdFdlZWtDb250YWluc0RhdGU/P2E/LmxvY2FsZT8ub3B0aW9ucz8uZmlyc3RXZWVrQ29udGFpbnNEYXRlPz9uLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZT8/bi5sb2NhbGU/Lm9wdGlvbnM/LmZpcnN0V2Vla0NvbnRhaW5zRGF0ZT8/MSxwPWE/LndlZWtTdGFydHNPbj8/YT8ubG9jYWxlPy5vcHRpb25zPy53ZWVrU3RhcnRzT24/P24ud2Vla1N0YXJ0c09uPz9uLmxvY2FsZT8ub3B0aW9ucz8ud2Vla1N0YXJ0c09uPz8wO2lmKCFlKXJldHVybiBzP3IoKTpBZSh0LGE/LmluKTtsZXQgZD17Zmlyc3RXZWVrQ29udGFpbnNEYXRlOmwsd2Vla1N0YXJ0c09uOnAsbG9jYWxlOm99LHU9W25ldyBBdGUoYT8uaW4sdCldLGM9ZS5tYXRjaChmRWEpLm1hcChmPT57bGV0IHk9ZlswXTtpZih5IGluIHZwKXtsZXQgTT12cFt5XTtyZXR1cm4gTShmLG8uZm9ybWF0TG9uZyl9cmV0dXJuIGZ9KS5qb2luKCIiKS5tYXRjaChoRWEpLGI9W107Zm9yKGxldCBmIG9mIGMpeyFhPy51c2VBZGRpdGlvbmFsV2Vla1llYXJUb2tlbnMmJlN0ZShmKSYmTnkoZixlLHMpLCFhPy51c2VBZGRpdGlvbmFsRGF5T2ZZZWFyVG9rZW5zJiZrdGUoZikmJk55KGYsZSxzKTtsZXQgeT1mWzBdLE09eGFlW3ldO2lmKE0pe2xldHtpbmNvbXBhdGlibGVUb2tlbnM6en09TTtpZihBcnJheS5pc0FycmF5KHopKXtsZXQgQz1iLmZpbmQoXz0+ei5pbmNsdWRlcyhfLnRva2VuKXx8Xy50b2tlbj09PXkpO2lmKEMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFRoZSBmb3JtYXQgc3RyaW5nIG11c3RuJ3QgY29udGFpbiBcYCR7Qy5mdWxsVG9rZW59XGAgYW5kIFxgJHtmfVxgIGF0IHRoZSBzYW1lIHRpbWVgKX1lbHNlIGlmKE0uaW5jb21wYXRpYmxlVG9rZW5zPT09IioiJiZiLmxlbmd0aD4wKXRocm93IG5ldyBSYW5nZUVycm9yKGBUaGUgZm9ybWF0IHN0cmluZyBtdXN0bid0IGNvbnRhaW4gXGAke2Z9XGAgYW5kIGFueSBvdGhlciB0b2tlbiBhdCB0aGUgc2FtZSB0aW1lYCk7Yi5wdXNoKHt0b2tlbjp5LGZ1bGxUb2tlbjpmfSk7bGV0IE49TS5ydW4ocyxmLG8ubWF0Y2gsZCk7aWYoIU4pcmV0dXJuIHIoKTt1LnB1c2goTi5zZXR0ZXIpLHM9Ti5yZXN0fWVsc2V7aWYoeS5tYXRjaCh2RWEpKXRocm93IG5ldyBSYW5nZUVycm9yKCJGb3JtYXQgc3RyaW5nIGNvbnRhaW5zIGFuIHVuZXNjYXBlZCBsYXRpbiBhbHBoYWJldCBjaGFyYWN0ZXIgYCIreSsiYCIpO2lmKGY9PT0iJyciP2Y9IiciOnk9PT0iJyImJihmPXhFYShmKSkscy5pbmRleE9mKGYpPT09MClzPXMuc2xpY2UoZi5sZW5ndGgpO2Vsc2UgcmV0dXJuIHIoKX19aWYocy5sZW5ndGg+MCYmYkVhLnRlc3QocykpcmV0dXJuIHIoKTtsZXQgdj11Lm1hcChmPT5mLnByaW9yaXR5KS5zb3J0KChmLHkpPT55LWYpLmZpbHRlcigoZix5LE0pPT5NLmluZGV4T2YoZik9PT15KS5tYXAoZj0+dS5maWx0ZXIoeT0+eS5wcmlvcml0eT09PWYpLnNvcnQoKHksTSk9Pk0uc3ViUHJpb3JpdHkteS5zdWJQcmlvcml0eSkpLm1hcChmPT5mWzBdKSx4PUFlKHQsYT8uaW4pO2lmKGlzTmFOKCt4KSlyZXR1cm4gcigpO2xldCBtPXt9O2ZvcihsZXQgZiBvZiB2KXtpZighZi52YWxpZGF0ZSh4LGQpKXJldHVybiByKCk7bGV0IHk9Zi5zZXQoeCxtLGQpO0FycmF5LmlzQXJyYXkoeSk/KHg9eVswXSxPYmplY3QuYXNzaWduKG0seVsxXSkpOng9eX1yZXR1cm4geH1mdW5jdGlvbiB4RWEocyl7cmV0dXJuIHMubWF0Y2gobUVhKVsxXS5yZXBsYWNlKGdFYSwiJyIpfXZhciBoRWEsZkVhLG1FYSxnRWEsYkVhLHZFYSxCTHMscXBlPWcoKCk9PntKNCgpO3pwZSgpO0NwZSgpO0d0KCk7SXBlKCk7YXQoKTtPcGUoKTskaHQoKTtoRWE9L1t5WVFxTUx3SWREZWNpaEhLa21zXW98KFx3KVwxKnwnJ3wnKCcnfFteJ10pKygnfCQpfC4vZyxmRWE9L1ArcCt8UCt8cCt8Jyd8JygnJ3xbXiddKSsoJ3wkKXwuL2csbUVhPS9eJyhbXl0qPyknPyQvLGdFYT0vJycvZyxiRWE9L1xTLyx2RWE9L1thLXpBLVpdLztpKHlhZSwicGFyc2UiKTtpKHhFYSwiY2xlYW5Fc2NhcGVkU3RyaW5nIik7QkxzPXlhZX0pO2Z1bmN0aW9uIERodChzLGUsdCl7cmV0dXJuIGtvKHlhZShzLGUsbmV3IERhdGUsdCkpfXZhciBVTHMsTGh0PWcoKCk9PntoMCgpO3FwZSgpO2koRGh0LCJpc01hdGNoIik7VUxzPURodH0pO2Z1bmN0aW9uIEVodChzLGUpe3JldHVybiBBZShzLGU/LmluKS5nZXREYXkoKT09PTF9dmFyIFlMcyxQaHQ9ZygoKT0+e2F0KCk7aShFaHQsImlzTW9uZGF5Iik7WUxzPUVodH0pO2Z1bmN0aW9uIElodChzKXtyZXR1cm4rQWUocyk8RGF0ZS5ub3coKX12YXIgSkxzLEFodD1nKCgpPT57YXQoKTtpKElodCwiaXNQYXN0Iik7SkxzPUlodH0pO2Z1bmN0aW9uIEJ5KHMsZSl7bGV0IHQ9QWUocyxlPy5pbik7cmV0dXJuIHQuc2V0TWludXRlcygwLDAsMCksdH12YXIgc0VzLGpwZT1nKCgpPT57YXQoKTtpKEJ5LCJzdGFydE9mSG91ciIpO3NFcz1CeX0pO2Z1bmN0aW9uIHdhZShzLGUsdCl7bGV0W2Escl09VnQodD8uaW4scyxlKTtyZXR1cm4rQnkoYSk9PStCeShyKX12YXIgbEVzLFZwZT1nKCgpPT57UnMoKTtqcGUoKTtpKHdhZSwiaXNTYW1lSG91ciIpO2xFcz13YWV9KTtmdW5jdGlvbiBsOShzLGUsdCl7bGV0W2Escl09VnQodD8uaW4scyxlKTtyZXR1cm4rS3MoYSx0KT09K0tzKHIsdCl9dmFyIGhFcyxrYWU9ZygoKT0+e1JzKCk7djEoKTtpKGw5LCJpc1NhbWVXZWVrIik7aEVzPWw5fSk7ZnVuY3Rpb24gU2FlKHMsZSx0KXtyZXR1cm4gbDkocyxlLHsuLi50LHdlZWtTdGFydHNPbjoxfSl9dmFyIGJFcyxVcGU9ZygoKT0+e2thZSgpO2koU2FlLCJpc1NhbWVJU09XZWVrIik7YkVzPVNhZX0pO2Z1bmN0aW9uIE5odChzLGUsdCl7bGV0W2Escl09VnQodD8uaW4scyxlKTtyZXR1cm4rUmwoYSk9PStSbChyKX12YXIga0VzLFJodD1nKCgpPT57VjcoKTtScygpO2koTmh0LCJpc1NhbWVJU09XZWVrWWVhciIpO2tFcz1OaHR9KTtmdW5jdGlvbiBIeShzLGUpe2xldCB0PUFlKHMsZT8uaW4pO3JldHVybiB0LnNldFNlY29uZHMoMCwwKSx0fXZhciB6RXMsV3BlPWcoKCk9PnthdCgpO2koSHksInN0YXJ0T2ZNaW51dGUiKTt6RXM9SHl9KTtmdW5jdGlvbiBfYWUocyxlKXtyZXR1cm4rSHkocyk9PStIeShlKX12YXIgREVzLEdwZT1nKCgpPT57V3BlKCk7aShfYWUsImlzU2FtZU1pbnV0ZSIpO0RFcz1fYWV9KTtmdW5jdGlvbiBNYWUocyxlLHQpe2xldFthLHJdPVZ0KHQ/LmluLHMsZSk7cmV0dXJuIGEuZ2V0RnVsbFllYXIoKT09PXIuZ2V0RnVsbFllYXIoKSYmYS5nZXRNb250aCgpPT09ci5nZXRNb250aCgpfXZhciBJRXMsS3BlPWcoKCk9PntScygpO2koTWFlLCJpc1NhbWVNb250aCIpO0lFcz1NYWV9KTtmdW5jdGlvbiB6YWUocyxlLHQpe2xldFthLHJdPVZ0KHQ/LmluLHMsZSk7cmV0dXJuK29kKGEpPT0rb2Qocil9dmFyIEZFcyxZcGU9ZygoKT0+e1JzKCk7cHRlKCk7aSh6YWUsImlzU2FtZVF1YXJ0ZXIiKTtGRXM9emFlfSk7ZnVuY3Rpb24gcXkocyxlKXtsZXQgdD1BZShzLGU/LmluKTtyZXR1cm4gdC5zZXRNaWxsaXNlY29uZHMoMCksdH12YXIgakVzLFpwZT1nKCgpPT57YXQoKTtpKHF5LCJzdGFydE9mU2Vjb25kIik7akVzPXF5fSk7ZnVuY3Rpb24gQ2FlKHMsZSl7cmV0dXJuK3F5KHMpPT0rcXkoZSl9dmFyIEdFcyxYcGU9ZygoKT0+e1pwZSgpO2koQ2FlLCJpc1NhbWVTZWNvbmQiKTtHRXM9Q2FlfSk7ZnVuY3Rpb24gVGFlKHMsZSx0KXtsZXRbYSxyXT1WdCh0Py5pbixzLGUpO3JldHVybiBhLmdldEZ1bGxZZWFyKCk9PT1yLmdldEZ1bGxZZWFyKCl9dmFyIFhFcyxRcGU9ZygoKT0+e1JzKCk7aShUYWUsImlzU2FtZVllYXIiKTtYRXM9VGFlfSk7ZnVuY3Rpb24gT2h0KHMsZSl7cmV0dXJuIHdhZShBZShzLGU/LmluKSxQYShlPy5pbnx8cykpfXZhciBzUHMsRmh0PWcoKCk9PntxcigpO1ZwZSgpO2F0KCk7aShPaHQsImlzVGhpc0hvdXIiKTtzUHM9T2h0fSk7ZnVuY3Rpb24gQmh0KHMsZSl7cmV0dXJuIFNhZSh0dChlPy5pbnx8cyxzKSxQYShlPy5pbnx8cykpfXZhciBjUHMsSGh0PWcoKCk9PntHdCgpO3FyKCk7VXBlKCk7aShCaHQsImlzVGhpc0lTT1dlZWsiKTtjUHM9Qmh0fSk7ZnVuY3Rpb24gcWh0KHMpe3JldHVybiBfYWUocyxQYShzKSl9dmFyIGZQcyxqaHQ9ZygoKT0+e3FyKCk7R3BlKCk7aShxaHQsImlzVGhpc01pbnV0ZSIpO2ZQcz1xaHR9KTtmdW5jdGlvbiBWaHQocyxlKXtyZXR1cm4gTWFlKHR0KGU/LmlufHxzLHMpLFBhKGU/LmlufHxzKSl9dmFyIHlQcyxVaHQ9ZygoKT0+e0d0KCk7cXIoKTtLcGUoKTtpKFZodCwiaXNUaGlzTW9udGgiKTt5UHM9Vmh0fSk7ZnVuY3Rpb24gV2h0KHMsZSl7cmV0dXJuIHphZSh0dChlPy5pbnx8cyxzKSxQYShlPy5pbnx8cykpfXZhciB6UHMsR2h0PWcoKCk9PntHdCgpO3FyKCk7WXBlKCk7aShXaHQsImlzVGhpc1F1YXJ0ZXIiKTt6UHM9V2h0fSk7ZnVuY3Rpb24gS2h0KHMpe3JldHVybiBDYWUocyxQYShzKSl9dmFyIExQcyxZaHQ9ZygoKT0+e3FyKCk7WHBlKCk7aShLaHQsImlzVGhpc1NlY29uZCIpO0xQcz1LaHR9KTtmdW5jdGlvbiBaaHQocyxlKXtyZXR1cm4gbDkodHQoZT8uaW58fHMscyksUGEoZT8uaW58fHMpLGUpfXZhciBSUHMsWGh0PWcoKCk9PntHdCgpO3FyKCk7a2FlKCk7aShaaHQsImlzVGhpc1dlZWsiKTtSUHM9Wmh0fSk7ZnVuY3Rpb24gUWh0KHMsZSl7cmV0dXJuIFRhZSh0dChlPy5pbnx8cyxzKSxQYShlPy5pbnx8cykpfXZhciBqUHMsSmh0PWcoKCk9PntHdCgpO3FyKCk7UXBlKCk7aShRaHQsImlzVGhpc1llYXIiKTtqUHM9UWh0fSk7ZnVuY3Rpb24gZTR0KHMsZSl7cmV0dXJuIEFlKHMsZT8uaW4pLmdldERheSgpPT09NH12YXIgR1BzLHQ0dD1nKCgpPT57YXQoKTtpKGU0dCwiaXNUaHVyc2RheSIpO0dQcz1lNHR9KTtmdW5jdGlvbiBhNHQocyxlKXtyZXR1cm4gc2QodHQoZT8uaW58fHMscyksUGEoZT8uaW58fHMpKX12YXIgSlBzLHM0dD1nKCgpPT57R3QoKTtxcigpO0c3KCk7aShhNHQsImlzVG9kYXkiKTtKUHM9YTR0fSk7ZnVuY3Rpb24gaTR0KHMsZSl7cmV0dXJuIHNkKHMsSHIoUGEoZT8uaW58fHMpLDEpLGUpfXZhciBySXMscjR0PWcoKCk9PntRMigpO3FyKCk7RzcoKTtpKGk0dCwiaXNUb21vcnJvdyIpO3JJcz1pNHR9KTtmdW5jdGlvbiBvNHQocyxlKXtyZXR1cm4gQWUocyxlPy5pbikuZ2V0RGF5KCk9PT0yfXZhciBjSXMsbjR0PWcoKCk9PnthdCgpO2kobzR0LCJpc1R1ZXNkYXkiKTtjSXM9bzR0fSk7ZnVuY3Rpb24gbDR0KHMsZSl7cmV0dXJuIEFlKHMsZT8uaW4pLmdldERheSgpPT09M312YXIgaElzLGM0dD1nKCgpPT57YXQoKTtpKGw0dCwiaXNXZWRuZXNkYXkiKTtoSXM9bDR0fSk7ZnVuY3Rpb24gZDR0KHMsZSx0KXtsZXQgYT0rQWUocyx0Py5pbiksW3Isbl09WytBZShlLnN0YXJ0LHQ/LmluKSwrQWUoZS5lbmQsdD8uaW4pXS5zb3J0KChvLGwpPT5vLWwpO3JldHVybiBhPj1yJiZhPD1ufXZhciBiSXMsdTR0PWcoKCk9PnthdCgpO2koZDR0LCJpc1dpdGhpbkludGVydmFsIik7YklzPWQ0dH0pO2Z1bmN0aW9uIHdwKHMsZSx0KXtyZXR1cm4gSHIocywtZSx0KX12YXIgd0lzLGp5PWcoKCk9PntRMigpO2kod3AsInN1YkRheXMiKTt3SXM9d3B9KTtmdW5jdGlvbiBwNHQocyxlKXtyZXR1cm4gc2QodHQoZT8uaW58fHMscyksd3AoUGEoZT8uaW58fHMpLDEpKX12YXIgVElzLGg0dD1nKCgpPT57R3QoKTtxcigpO0c3KCk7ankoKTtpKHA0dCwiaXNZZXN0ZXJkYXkiKTtUSXM9cDR0fSk7ZnVuY3Rpb24gZjR0KHMsZSl7bGV0IHQ9QWUocyxlPy5pbiksYT10LmdldEZ1bGxZZWFyKCkscj05K01hdGguZmxvb3IoYS8xMCkqMTA7cmV0dXJuIHQuc2V0RnVsbFllYXIocisxLDAsMCksdC5zZXRIb3VycygwLDAsMCwwKSxBZSh0LGU/LmluKX12YXIgRUlzLG00dD1nKCgpPT57YXQoKTtpKGY0dCwibGFzdERheU9mRGVjYWRlIik7RUlzPWY0dH0pO2Z1bmN0aW9uICRhZShzLGUpe2xldCB0PUVzKCksYT1lPy53ZWVrU3RhcnRzT24/P2U/LmxvY2FsZT8ub3B0aW9ucz8ud2Vla1N0YXJ0c09uPz90LndlZWtTdGFydHNPbj8/dC5sb2NhbGU/Lm9wdGlvbnM/LndlZWtTdGFydHNPbj8/MCxyPUFlKHMsZT8uaW4pLG49ci5nZXREYXkoKSxvPShuPGE/LTc6MCkrNi0obi1hKTtyZXR1cm4gci5zZXRIb3VycygwLDAsMCwwKSxyLnNldERhdGUoci5nZXREYXRlKCkrbykscn12YXIgUklzLEpwZT1nKCgpPT57R28oKTthdCgpO2koJGFlLCJsYXN0RGF5T2ZXZWVrIik7UklzPSRhZX0pO2Z1bmN0aW9uIGc0dChzLGUpe3JldHVybiAkYWUocyx7Li4uZSx3ZWVrU3RhcnRzT246MX0pfXZhciBISXMsYjR0PWcoKCk9PntKcGUoKTtpKGc0dCwibGFzdERheU9mSVNPV2VlayIpO0hJcz1nNHR9KTtmdW5jdGlvbiB2NHQocyxlKXtsZXQgdD13bihzLGUpLGE9dHQoZT8uaW58fHMsMCk7YS5zZXRGdWxsWWVhcih0KzEsMCw0KSxhLnNldEhvdXJzKDAsMCwwLDApO2xldCByPWtyKGEsZSk7cmV0dXJuIHIuc2V0RGF0ZShyLmdldERhdGUoKS0xKSxyfXZhciBHSXMseDR0PWcoKCk9PntHdCgpO3BwKCk7dGQoKTtpKHY0dCwibGFzdERheU9mSVNPV2Vla1llYXIiKTtHSXM9djR0fSk7ZnVuY3Rpb24geTR0KHMsZSl7bGV0IHQ9QWUocyxlPy5pbiksYT10LmdldE1vbnRoKCkscj1hLWElMyszO3JldHVybiB0LnNldE1vbnRoKHIsMCksdC5zZXRIb3VycygwLDAsMCwwKSx0fXZhciBYSXMsdzR0PWcoKCk9PnthdCgpO2koeTR0LCJsYXN0RGF5T2ZRdWFydGVyIik7WElzPXk0dH0pO2Z1bmN0aW9uIGs0dChzLGUpe2xldCB0PUFlKHMsZT8uaW4pLGE9dC5nZXRGdWxsWWVhcigpO3JldHVybiB0LnNldEZ1bGxZZWFyKGErMSwwLDApLHQuc2V0SG91cnMoMCwwLDAsMCksdH12YXIgdEFzLFM0dD1nKCgpPT57YXQoKTtpKGs0dCwibGFzdERheU9mWWVhciIpO3RBcz1rNHR9KTtmdW5jdGlvbiBfNHQocyxlKXtsZXQgdD1BZShzKTtpZigha28odCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgdGltZSB2YWx1ZSIpO2xldCBhPWUubWF0Y2goeUVhKTtyZXR1cm4gYT9hLm1hcChuPT57aWYobj09PSInJyIpcmV0dXJuIiciO2xldCBvPW5bMF07aWYobz09PSInIilyZXR1cm4gX0VhKG4pO2xldCBsPU9sW29dO2lmKGwpcmV0dXJuIGwodCxuKTtpZihvLm1hdGNoKFNFYSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkZvcm1hdCBzdHJpbmcgY29udGFpbnMgYW4gdW5lc2NhcGVkIGxhdGluIGFscGhhYmV0IGNoYXJhY3RlciBgIitvKyJgIik7cmV0dXJuIG59KS5qb2luKCIiKToiIn1mdW5jdGlvbiBfRWEocyl7bGV0IGU9cy5tYXRjaCh3RWEpO3JldHVybiBlP2VbMV0ucmVwbGFjZShrRWEsIiciKTpzfXZhciB5RWEsd0VhLGtFYSxTRWEsbkFzLE00dD1nKCgpPT57TXBlKCk7aDAoKTthdCgpO3lFYT0vKFx3KVwxKnwnJ3wnKCcnfFteJ10pKygnfCQpfC4vZyx3RWE9L14nKFteXSo/KSc/JC8sa0VhPS8nJy9nLFNFYT0vW2EtekEtWl0vO2koXzR0LCJsaWdodEZvcm1hdCIpO2koX0VhLCJjbGVhbkVzY2FwZWRTdHJpbmciKTtuQXM9XzR0fSk7ZnVuY3Rpb24gejR0KHt5ZWFyczpzLG1vbnRoczplLHdlZWtzOnQsZGF5czphLGhvdXJzOnIsbWludXRlczpuLHNlY29uZHM6b30pe2xldCBsPTA7cyYmKGwrPXMqMzY1LjI0MjUpLGUmJihsKz1lKigzNjUuMjQyNS8xMikpLHQmJihsKz10KjcpLGEmJihsKz1hKTtsZXQgcD1sKjI0KjYwKjYwO3JldHVybiByJiYocCs9cio2MCo2MCksbiYmKHArPW4qNjApLG8mJihwKz1vKSxNYXRoLnRydW5jKHAqMWUzKX12YXIgdUFzLEM0dD1nKCgpPT57d2EoKTtpKHo0dCwibWlsbGlzZWNvbmRzIik7dUFzPXo0dH0pO2Z1bmN0aW9uIFQ0dChzKXtsZXQgZT1zL05sO3JldHVybiBNYXRoLnRydW5jKGUpfXZhciBtQXMsJDR0PWcoKCk9Pnt3YSgpO2koVDR0LCJtaWxsaXNlY29uZHNUb0hvdXJzIik7bUFzPVQ0dH0pO2Z1bmN0aW9uIEQ0dChzKXtsZXQgZT1zL1dvO3JldHVybiBNYXRoLnRydW5jKGUpfXZhciB4QXMsTDR0PWcoKCk9Pnt3YSgpO2koRDR0LCJtaWxsaXNlY29uZHNUb01pbnV0ZXMiKTt4QXM9RDR0fSk7ZnVuY3Rpb24gRTR0KHMpe2xldCBlPXMvQjc7cmV0dXJuIE1hdGgudHJ1bmMoZSl9dmFyIFNBcyxQNHQ9ZygoKT0+e3dhKCk7aShFNHQsIm1pbGxpc2Vjb25kc1RvU2Vjb25kcyIpO1NBcz1FNHR9KTtmdW5jdGlvbiBJNHQocyl7bGV0IGU9cy9JZWU7cmV0dXJuIE1hdGgudHJ1bmMoZSl9dmFyIENBcyxBNHQ9ZygoKT0+e3dhKCk7aShJNHQsIm1pbnV0ZXNUb0hvdXJzIik7Q0FzPUk0dH0pO2Z1bmN0aW9uIE40dChzKXtyZXR1cm4gTWF0aC50cnVuYyhzKldvKX12YXIgTEFzLFI0dD1nKCgpPT57d2EoKTtpKE40dCwibWludXRlc1RvTWlsbGlzZWNvbmRzIik7TEFzPU40dH0pO2Z1bmN0aW9uIE80dChzKXtyZXR1cm4gTWF0aC50cnVuYyhzKnE3KX12YXIgQUFzLEY0dD1nKCgpPT57d2EoKTtpKE80dCwibWludXRlc1RvU2Vjb25kcyIpO0FBcz1PNHR9KTtmdW5jdGlvbiBCNHQocyl7bGV0IGU9cy9BZWU7cmV0dXJuIE1hdGgudHJ1bmMoZSl9dmFyIEZBcyxINHQ9ZygoKT0+e3dhKCk7aShCNHQsIm1vbnRoc1RvUXVhcnRlcnMiKTtGQXM9QjR0fSk7ZnVuY3Rpb24gcTR0KHMpe2xldCBlPXMvTmVlO3JldHVybiBNYXRoLnRydW5jKGUpfXZhciBqQXMsajR0PWcoKCk9Pnt3YSgpO2kocTR0LCJtb250aHNUb1llYXJzIik7akFzPXE0dH0pO2Z1bmN0aW9uIFhvKHMsZSx0KXtsZXQgYT1lLXhwKHMsdCk7cmV0dXJuIGE8PTAmJihhKz03KSxIcihzLGEsdCl9dmFyIEtBcyxtMD1nKCgpPT57UTIoKTtPeSgpO2koWG8sIm5leHREYXkiKTtLQXM9WG99KTtmdW5jdGlvbiBWNHQocyxlKXtyZXR1cm4gWG8ocyw1LGUpfXZhciBRQXMsVTR0PWcoKCk9PnttMCgpO2koVjR0LCJuZXh0RnJpZGF5Iik7UUFzPVY0dH0pO2Z1bmN0aW9uIFc0dChzLGUpe3JldHVybiBYbyhzLDEsZSl9dmFyIGFOcyxHNHQ9ZygoKT0+e20wKCk7aShXNHQsIm5leHRNb25kYXkiKTthTnM9VzR0fSk7ZnVuY3Rpb24gSzR0KHMsZSl7cmV0dXJuIFhvKHMsNixlKX12YXIgb05zLFk0dD1nKCgpPT57bTAoKTtpKEs0dCwibmV4dFNhdHVyZGF5Iik7b05zPUs0dH0pO2Z1bmN0aW9uIFo0dChzLGUpe3JldHVybiBYbyhzLDAsZSl9dmFyIGROcyxYNHQ9ZygoKT0+e20wKCk7aShaNHQsIm5leHRTdW5kYXkiKTtkTnM9WjR0fSk7ZnVuY3Rpb24gUTR0KHMsZSl7cmV0dXJuIFhvKHMsNCxlKX12YXIgZk5zLEo0dD1nKCgpPT57bTAoKTtpKFE0dCwibmV4dFRodXJzZGF5Iik7Zk5zPVE0dH0pO2Z1bmN0aW9uIGUzdChzLGUpe3JldHVybiBYbyhzLDIsZSl9dmFyIHZOcyx0M3Q9ZygoKT0+e20wKCk7aShlM3QsIm5leHRUdWVzZGF5Iik7dk5zPWUzdH0pO2Z1bmN0aW9uIGEzdChzLGUpe3JldHVybiBYbyhzLDMsZSl9dmFyIGtOcyxzM3Q9ZygoKT0+e20wKCk7aShhM3QsIm5leHRXZWRuZXNkYXkiKTtrTnM9YTN0fSk7ZnVuY3Rpb24gcjN0KHMsZSl7bGV0IHQ9aSgoKT0+dHQoZT8uaW4sTmFOKSwiaW52YWxpZERhdGUiKSxhPWU/LmFkZGl0aW9uYWxEaWdpdHM/PzIscj1URWEocyksbjtpZihyLmRhdGUpe2xldCBkPSRFYShyLmRhdGUsYSk7bj1ERWEoZC5yZXN0RGF0ZVN0cmluZyxkLnllYXIpfWlmKCFufHxpc05hTigrbikpcmV0dXJuIHQoKTtsZXQgbz0rbixsPTAscDtpZihyLnRpbWUmJihsPUxFYShyLnRpbWUpLGlzTmFOKGwpKSlyZXR1cm4gdCgpO2lmKHIudGltZXpvbmUpe2lmKHA9RUVhKHIudGltZXpvbmUpLGlzTmFOKHApKXJldHVybiB0KCl9ZWxzZXtsZXQgZD1uZXcgRGF0ZShvK2wpLHU9QWUoMCxlPy5pbik7cmV0dXJuIHUuc2V0RnVsbFllYXIoZC5nZXRVVENGdWxsWWVhcigpLGQuZ2V0VVRDTW9udGgoKSxkLmdldFVUQ0RhdGUoKSksdS5zZXRIb3VycyhkLmdldFVUQ0hvdXJzKCksZC5nZXRVVENNaW51dGVzKCksZC5nZXRVVENTZWNvbmRzKCksZC5nZXRVVENNaWxsaXNlY29uZHMoKSksdX1yZXR1cm4gQWUobytsK3AsZT8uaW4pfWZ1bmN0aW9uIFRFYShzKXtsZXQgZT17fSx0PXMuc3BsaXQoRGFlLmRhdGVUaW1lRGVsaW1pdGVyKSxhO2lmKHQubGVuZ3RoPjIpcmV0dXJuIGU7aWYoLzovLnRlc3QodFswXSk/YT10WzBdOihlLmRhdGU9dFswXSxhPXRbMV0sRGFlLnRpbWVab25lRGVsaW1pdGVyLnRlc3QoZS5kYXRlKSYmKGUuZGF0ZT1zLnNwbGl0KERhZS50aW1lWm9uZURlbGltaXRlcilbMF0sYT1zLnN1YnN0cihlLmRhdGUubGVuZ3RoLHMubGVuZ3RoKSkpLGEpe2xldCByPURhZS50aW1lem9uZS5leGVjKGEpO3I/KGUudGltZT1hLnJlcGxhY2UoclsxXSwiIiksZS50aW1lem9uZT1yWzFdKTplLnRpbWU9YX1yZXR1cm4gZX1mdW5jdGlvbiAkRWEocyxlKXtsZXQgdD1uZXcgUmVnRXhwKCJeKD86KFxcZHs0fXxbKy1dXFxkeyIrKDQrZSkrIn0pfChcXGR7Mn18WystXVxcZHsiKygyK2UpKyJ9KSQpIiksYT1zLm1hdGNoKHQpO2lmKCFhKXJldHVybnt5ZWFyOk5hTixyZXN0RGF0ZVN0cmluZzoiIn07bGV0IHI9YVsxXT9wYXJzZUludChhWzFdKTpudWxsLG49YVsyXT9wYXJzZUludChhWzJdKTpudWxsO3JldHVybnt5ZWFyOm49PT1udWxsP3I6bioxMDAscmVzdERhdGVTdHJpbmc6cy5zbGljZSgoYVsxXXx8YVsyXSkubGVuZ3RoKX19ZnVuY3Rpb24gREVhKHMsZSl7aWYoZT09PW51bGwpcmV0dXJuIG5ldyBEYXRlKE5hTik7bGV0IHQ9cy5tYXRjaChNRWEpO2lmKCF0KXJldHVybiBuZXcgRGF0ZShOYU4pO2xldCBhPSEhdFs0XSxyPVZ5KHRbMV0pLG49VnkodFsyXSktMSxvPVZ5KHRbM10pLGw9VnkodFs0XSkscD1WeSh0WzVdKS0xO2lmKGEpcmV0dXJuIFJFYShlLGwscCk/UEVhKGUsbCxwKTpuZXcgRGF0ZShOYU4pO3tsZXQgZD1uZXcgRGF0ZSgwKTtyZXR1cm4hQUVhKGUsbixvKXx8IU5FYShlLHIpP25ldyBEYXRlKE5hTik6KGQuc2V0VVRDRnVsbFllYXIoZSxuLE1hdGgubWF4KHIsbykpLGQpfX1mdW5jdGlvbiBWeShzKXtyZXR1cm4gcz9wYXJzZUludChzKToxfWZ1bmN0aW9uIExFYShzKXtsZXQgZT1zLm1hdGNoKHpFYSk7aWYoIWUpcmV0dXJuIE5hTjtsZXQgdD1laGUoZVsxXSksYT1laGUoZVsyXSkscj1laGUoZVszXSk7cmV0dXJuIE9FYSh0LGEscik/dCpObCthKldvK3IqMWUzOk5hTn1mdW5jdGlvbiBlaGUocyl7cmV0dXJuIHMmJnBhcnNlRmxvYXQocy5yZXBsYWNlKCIsIiwiLiIpKXx8MH1mdW5jdGlvbiBFRWEocyl7aWYocz09PSJaIilyZXR1cm4gMDtsZXQgZT1zLm1hdGNoKENFYSk7aWYoIWUpcmV0dXJuIDA7bGV0IHQ9ZVsxXT09PSIrIj8tMToxLGE9cGFyc2VJbnQoZVsyXSkscj1lWzNdJiZwYXJzZUludChlWzNdKXx8MDtyZXR1cm4gRkVhKGEscik/dCooYSpObCtyKldvKTpOYU59ZnVuY3Rpb24gUEVhKHMsZSx0KXtsZXQgYT1uZXcgRGF0ZSgwKTthLnNldFVUQ0Z1bGxZZWFyKHMsMCw0KTtsZXQgcj1hLmdldFVUQ0RheSgpfHw3LG49KGUtMSkqNyt0KzEtcjtyZXR1cm4gYS5zZXRVVENEYXRlKGEuZ2V0VVRDRGF0ZSgpK24pLGF9ZnVuY3Rpb24gaTN0KHMpe3JldHVybiBzJTQwMD09PTB8fHMlND09PTAmJnMlMTAwIT09MH1mdW5jdGlvbiBBRWEocyxlLHQpe3JldHVybiBlPj0wJiZlPD0xMSYmdD49MSYmdDw9KElFYVtlXXx8KGkzdChzKT8yOToyOCkpfWZ1bmN0aW9uIE5FYShzLGUpe3JldHVybiBlPj0xJiZlPD0oaTN0KHMpPzM2NjozNjUpfWZ1bmN0aW9uIFJFYShzLGUsdCl7cmV0dXJuIGU+PTEmJmU8PTUzJiZ0Pj0wJiZ0PD02fWZ1bmN0aW9uIE9FYShzLGUsdCl7cmV0dXJuIHM9PT0yND9lPT09MCYmdD09PTA6dD49MCYmdDw2MCYmZT49MCYmZTw2MCYmcz49MCYmczwyNX1mdW5jdGlvbiBGRWEocyxlKXtyZXR1cm4gZT49MCYmZTw9NTl9dmFyIERhZSxNRWEsekVhLENFYSxJRWEsVE5zLG8zdD1nKCgpPT57d2EoKTtHdCgpO2F0KCk7aShyM3QsInBhcnNlSVNPIik7RGFlPXtkYXRlVGltZURlbGltaXRlcjovW1QgXS8sdGltZVpvbmVEZWxpbWl0ZXI6L1taIF0vaSx0aW1lem9uZTovKFtaKy1dLiopJC99LE1FYT0vXi0/KD86KFxkezN9KXwoXGR7Mn0pKD86LT8oXGR7Mn0pKT98VyhcZHsyfSkoPzotPyhcZHsxfSkpP3wpJC8sekVhPS9eKFxkezJ9KD86Wy4sXVxkKik/KSg/Ojo/KFxkezJ9KD86Wy4sXVxkKik/KSk/KD86Oj8oXGR7Mn0oPzpbLixdXGQqKT8pKT8kLyxDRWE9L14oWystXSkoXGR7Mn0pKD86Oj8oXGR7Mn0pKT8kLztpKFRFYSwic3BsaXREYXRlU3RyaW5nIik7aSgkRWEsInBhcnNlWWVhciIpO2koREVhLCJwYXJzZURhdGUiKTtpKFZ5LCJwYXJzZURhdGVVbml0Iik7aShMRWEsInBhcnNlVGltZSIpO2koZWhlLCJwYXJzZVRpbWVVbml0Iik7aShFRWEsInBhcnNlVGltZXpvbmUiKTtpKFBFYSwiZGF5T2ZJU09XZWVrWWVhciIpO0lFYT1bMzEsbnVsbCwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMV07aShpM3QsImlzTGVhcFllYXJJbmRleCIpO2koQUVhLCJ2YWxpZGF0ZURhdGUiKTtpKE5FYSwidmFsaWRhdGVEYXlPZlllYXJEYXRlIik7aShSRWEsInZhbGlkYXRlV2Vla0RhdGUiKTtpKE9FYSwidmFsaWRhdGVUaW1lIik7aShGRWEsInZhbGlkYXRlVGltZXpvbmUiKTtUTnM9cjN0fSk7ZnVuY3Rpb24gbjN0KHMsZSl7bGV0IHQ9cy5tYXRjaCgvKFxkezR9KS0oXGR7Mn0pLShcZHsyfSlbVCBdKFxkezJ9KTooXGR7Mn0pOihcZHsyfSkoPzpcLihcZHswLDd9KSk/KD86WnwoLikoXGR7Mn0pOj8oXGR7Mn0pPyk/Lyk7cmV0dXJuIHQ/QWUoRGF0ZS5VVEMoK3RbMV0sK3RbMl0tMSwrdFszXSwrdFs0XS0oK3RbOV18fDApKih0WzhdPT0iLSI/LTE6MSksK3RbNV0tKCt0WzEwXXx8MCkqKHRbOF09PSItIj8tMToxKSwrdFs2XSwrKCh0WzddfHwiMCIpKyIwMCIpLnN1YnN0cmluZygwLDMpKSxlPy5pbik6QWUoTmFOLGU/LmluKX12YXIgRU5zLGwzdD1nKCgpPT57YXQoKTtpKG4zdCwicGFyc2VKU09OIik7RU5zPW4zdH0pO2Z1bmN0aW9uIFFvKHMsZSx0KXtsZXQgYT14cChzLHQpLWU7cmV0dXJuIGE8PTAmJihhKz03KSx3cChzLGEsdCl9dmFyIFJOcyxnMD1nKCgpPT57T3koKTtqeSgpO2koUW8sInByZXZpb3VzRGF5Iik7Uk5zPVFvfSk7ZnVuY3Rpb24gYzN0KHMsZSl7cmV0dXJuIFFvKHMsNSxlKX12YXIgSE5zLGQzdD1nKCgpPT57ZzAoKTtpKGMzdCwicHJldmlvdXNGcmlkYXkiKTtITnM9YzN0fSk7ZnVuY3Rpb24gdTN0KHMsZSl7cmV0dXJuIFFvKHMsMSxlKX12YXIgVU5zLHAzdD1nKCgpPT57ZzAoKTtpKHUzdCwicHJldmlvdXNNb25kYXkiKTtVTnM9dTN0fSk7ZnVuY3Rpb24gaDN0KHMsZSl7cmV0dXJuIFFvKHMsNixlKX12YXIgWU5zLGYzdD1nKCgpPT57ZzAoKTtpKGgzdCwicHJldmlvdXNTYXR1cmRheSIpO1lOcz1oM3R9KTtmdW5jdGlvbiBtM3QocyxlKXtyZXR1cm4gUW8ocywwLGUpfXZhciBKTnMsZzN0PWcoKCk9PntnMCgpO2kobTN0LCJwcmV2aW91c1N1bmRheSIpO0pOcz1tM3R9KTtmdW5jdGlvbiBiM3QocyxlKXtyZXR1cm4gUW8ocyw0LGUpfXZhciBzUnMsdjN0PWcoKCk9PntnMCgpO2koYjN0LCJwcmV2aW91c1RodXJzZGF5Iik7c1JzPWIzdH0pO2Z1bmN0aW9uIHgzdChzLGUpe3JldHVybiBRbyhzLDIsZSl9dmFyIG5Scyx5M3Q9ZygoKT0+e2cwKCk7aSh4M3QsInByZXZpb3VzVHVlc2RheSIpO25Scz14M3R9KTtmdW5jdGlvbiB3M3QocyxlKXtyZXR1cm4gUW8ocywzLGUpfXZhciB1UnMsazN0PWcoKCk9PntnMCgpO2kodzN0LCJwcmV2aW91c1dlZG5lc2RheSIpO3VScz13M3R9KTtmdW5jdGlvbiBTM3Qocyl7cmV0dXJuIE1hdGgudHJ1bmMocypBZWUpfXZhciBtUnMsXzN0PWcoKCk9Pnt3YSgpO2koUzN0LCJxdWFydGVyc1RvTW9udGhzIik7bVJzPVMzdH0pO2Z1bmN0aW9uIE0zdChzKXtsZXQgZT1zL1JlZTtyZXR1cm4gTWF0aC50cnVuYyhlKX12YXIgeFJzLHozdD1nKCgpPT57d2EoKTtpKE0zdCwicXVhcnRlcnNUb1llYXJzIik7eFJzPU0zdH0pO2Z1bmN0aW9uIEMzdChzLGUpe2xldCB0PWU/Lm5lYXJlc3RUbz8/MTtpZih0PDF8fHQ+MTIpcmV0dXJuIHR0KGU/LmlufHxzLE5hTik7bGV0IGE9QWUocyxlPy5pbikscj1hLmdldE1pbnV0ZXMoKS82MCxuPWEuZ2V0U2Vjb25kcygpLzYwLzYwLG89YS5nZXRNaWxsaXNlY29uZHMoKS8xZTMvNjAvNjAsbD1hLmdldEhvdXJzKCkrcituK28scD1lPy5yb3VuZGluZ01ldGhvZD8/InJvdW5kIix1PVlvKHApKGwvdCkqdDtyZXR1cm4gYS5zZXRIb3Vycyh1LDAsMCwwKSxhfXZhciBNUnMsVDN0PWcoKCk9PntmMCgpO0d0KCk7YXQoKTtpKEMzdCwicm91bmRUb05lYXJlc3RIb3VycyIpO01Scz1DM3R9KTtmdW5jdGlvbiAkM3QocyxlKXtsZXQgdD1lPy5uZWFyZXN0VG8/PzE7aWYodDwxfHx0PjMwKXJldHVybiB0dChzLE5hTik7bGV0IGE9QWUocyxlPy5pbikscj1hLmdldFNlY29uZHMoKS82MCxuPWEuZ2V0TWlsbGlzZWNvbmRzKCkvMWUzLzYwLG89YS5nZXRNaW51dGVzKCkrcituLGw9ZT8ucm91bmRpbmdNZXRob2Q/PyJyb3VuZCIsZD1ZbyhsKShvL3QpKnQ7cmV0dXJuIGEuc2V0TWludXRlcyhkLDAsMCksYX12YXIgTFJzLEQzdD1nKCgpPT57ZjAoKTtHdCgpO2F0KCk7aSgkM3QsInJvdW5kVG9OZWFyZXN0TWludXRlcyIpO0xScz0kM3R9KTtmdW5jdGlvbiBMM3Qocyl7bGV0IGU9cy9HNDtyZXR1cm4gTWF0aC50cnVuYyhlKX12YXIgQVJzLEUzdD1nKCgpPT57d2EoKTtpKEwzdCwic2Vjb25kc1RvSG91cnMiKTtBUnM9TDN0fSk7ZnVuY3Rpb24gUDN0KHMpe3JldHVybiBzKkI3fXZhciBGUnMsSTN0PWcoKCk9Pnt3YSgpO2koUDN0LCJzZWNvbmRzVG9NaWxsaXNlY29uZHMiKTtGUnM9UDN0fSk7ZnVuY3Rpb24gQTN0KHMpe2xldCBlPXMvcTc7cmV0dXJuIE1hdGgudHJ1bmMoZSl9dmFyIGpScyxOM3Q9ZygoKT0+e3dhKCk7aShBM3QsInNlY29uZHNUb01pbnV0ZXMiKTtqUnM9QTN0fSk7ZnVuY3Rpb24gYzkocyxlLHQpe2xldCBhPUFlKHMsdD8uaW4pLHI9YS5nZXRGdWxsWWVhcigpLG49YS5nZXREYXRlKCksbz10dCh0Py5pbnx8cywwKTtvLnNldEZ1bGxZZWFyKHIsZSwxNSksby5zZXRIb3VycygwLDAsMCwwKTtsZXQgbD1DdGUobyk7cmV0dXJuIGEuc2V0TW9udGgoZSxNYXRoLm1pbihuLGwpKSxhfXZhciBZUnMsTGFlPWcoKCk9PntHdCgpO0VwZSgpO2F0KCk7aShjOSwic2V0TW9udGgiKTtZUnM9Yzl9KTtmdW5jdGlvbiBSM3QocyxlLHQpe2xldCBhPUFlKHMsdD8uaW4pO3JldHVybiBpc05hTigrYSk/dHQodD8uaW58fHMsTmFOKTooZS55ZWFyIT1udWxsJiZhLnNldEZ1bGxZZWFyKGUueWVhciksZS5tb250aCE9bnVsbCYmKGE9YzkoYSxlLm1vbnRoKSksZS5kYXRlIT1udWxsJiZhLnNldERhdGUoZS5kYXRlKSxlLmhvdXJzIT1udWxsJiZhLnNldEhvdXJzKGUuaG91cnMpLGUubWludXRlcyE9bnVsbCYmYS5zZXRNaW51dGVzKGUubWludXRlcyksZS5zZWNvbmRzIT1udWxsJiZhLnNldFNlY29uZHMoZS5zZWNvbmRzKSxlLm1pbGxpc2Vjb25kcyE9bnVsbCYmYS5zZXRNaWxsaXNlY29uZHMoZS5taWxsaXNlY29uZHMpLGEpfXZhciB0T3MsTzN0PWcoKCk9PntHdCgpO0xhZSgpO2F0KCk7aShSM3QsInNldCIpO3RPcz1SM3R9KTtmdW5jdGlvbiBGM3QocyxlLHQpe2xldCBhPUFlKHMsdD8uaW4pO3JldHVybiBhLnNldERhdGUoZSksYX12YXIgck9zLEIzdD1nKCgpPT57YXQoKTtpKEYzdCwic2V0RGF0ZSIpO3JPcz1GM3R9KTtmdW5jdGlvbiBIM3QocyxlLHQpe2xldCBhPUFlKHMsdD8uaW4pO3JldHVybiBhLnNldE1vbnRoKDApLGEuc2V0RGF0ZShlKSxhfXZhciBjT3MscTN0PWcoKCk9PnthdCgpO2koSDN0LCJzZXREYXlPZlllYXIiKTtjT3M9SDN0fSk7ZnVuY3Rpb24gajN0KHMpe2xldCBlPXt9LHQ9RXMoKTtmb3IobGV0IGEgaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxhKSYmKGVbYV09dFthXSk7Zm9yKGxldCBhIGluIHMpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsYSkmJihzW2FdPT09dm9pZCAwP2RlbGV0ZSBlW2FdOmVbYV09c1thXSk7cjB0KGUpfXZhciBoT3MsVjN0PWcoKCk9PntHbygpO2koajN0LCJzZXREZWZhdWx0T3B0aW9ucyIpO2hPcz1qM3R9KTtmdW5jdGlvbiBVM3QocyxlLHQpe2xldCBhPUFlKHMsdD8uaW4pO3JldHVybiBhLnNldEhvdXJzKGUpLGF9dmFyIGJPcyxXM3Q9ZygoKT0+e2F0KCk7aShVM3QsInNldEhvdXJzIik7Yk9zPVUzdH0pO2Z1bmN0aW9uIEczdChzLGUsdCl7bGV0IGE9QWUocyx0Py5pbik7cmV0dXJuIGEuc2V0TWlsbGlzZWNvbmRzKGUpLGF9dmFyIHdPcyxLM3Q9ZygoKT0+e2F0KCk7aShHM3QsInNldE1pbGxpc2Vjb25kcyIpO3dPcz1HM3R9KTtmdW5jdGlvbiBZM3QocyxlLHQpe2xldCBhPUFlKHMsdD8uaW4pO3JldHVybiBhLnNldE1pbnV0ZXMoZSksYX12YXIgTU9zLFozdD1nKCgpPT57YXQoKTtpKFkzdCwic2V0TWludXRlcyIpO01Pcz1ZM3R9KTtmdW5jdGlvbiBYM3QocyxlLHQpe2xldCBhPUFlKHMsdD8uaW4pLHI9TWF0aC50cnVuYyhhLmdldE1vbnRoKCkvMykrMSxuPWUtcjtyZXR1cm4gYzkoYSxhLmdldE1vbnRoKCkrbiozKX12YXIgRE9zLFEzdD1nKCgpPT57TGFlKCk7YXQoKTtpKFgzdCwic2V0UXVhcnRlciIpO0RPcz1YM3R9KTtmdW5jdGlvbiBKM3QocyxlLHQpe2xldCBhPUFlKHMsdD8uaW4pO3JldHVybiBhLnNldFNlY29uZHMoZSksYX12YXIgSU9zLGVmdD1nKCgpPT57YXQoKTtpKEozdCwic2V0U2Vjb25kcyIpO0lPcz1KM3R9KTtmdW5jdGlvbiB0ZnQocyxlLHQpe2xldCBhPUVzKCkscj10Py5maXJzdFdlZWtDb250YWluc0RhdGU/P3Q/LmxvY2FsZT8ub3B0aW9ucz8uZmlyc3RXZWVrQ29udGFpbnNEYXRlPz9hLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZT8/YS5sb2NhbGU/Lm9wdGlvbnM/LmZpcnN0V2Vla0NvbnRhaW5zRGF0ZT8/MSxuPW5vKEFlKHMsdD8uaW4pLGUzKHMsdCksdCksbz10dCh0Py5pbnx8cywwKTtvLnNldEZ1bGxZZWFyKGUsMCxyKSxvLnNldEhvdXJzKDAsMCwwLDApO2xldCBsPWUzKG8sdCk7cmV0dXJuIGwuc2V0RGF0ZShsLmdldERhdGUoKStuKSxsfXZhciBxT3MsYWZ0PWcoKCk9PntHbygpO0d0KCk7cDAoKTt5dGUoKTthdCgpO2kodGZ0LCJzZXRXZWVrWWVhciIpO3FPcz10ZnR9KTtmdW5jdGlvbiBzZnQocyxlLHQpe2xldCBhPUFlKHMsdD8uaW4pO3JldHVybiBpc05hTigrYSk/dHQodD8uaW58fHMsTmFOKTooYS5zZXRGdWxsWWVhcihlKSxhKX12YXIgR09zLGlmdD1nKCgpPT57R3QoKTthdCgpO2koc2Z0LCJzZXRZZWFyIik7R09zPXNmdH0pO2Z1bmN0aW9uIHJmdChzLGUpe2xldCB0PUFlKHMsZT8uaW4pLGE9dC5nZXRGdWxsWWVhcigpLHI9TWF0aC5mbG9vcihhLzEwKSoxMDtyZXR1cm4gdC5zZXRGdWxsWWVhcihyLDAsMSksdC5zZXRIb3VycygwLDAsMCwwKSx0fXZhciBYT3Msb2Z0PWcoKCk9PnthdCgpO2kocmZ0LCJzdGFydE9mRGVjYWRlIik7WE9zPXJmdH0pO2Z1bmN0aW9uIG5mdChzKXtyZXR1cm4gYWQoRGF0ZS5ub3coKSxzKX12YXIgdEZzLGxmdD1nKCgpPT57VHkoKTtpKG5mdCwic3RhcnRPZlRvZGF5Iik7dEZzPW5mdH0pO2Z1bmN0aW9uIGNmdChzKXtsZXQgZT1QYShzPy5pbiksdD1lLmdldEZ1bGxZZWFyKCksYT1lLmdldE1vbnRoKCkscj1lLmdldERhdGUoKSxuPXR0KHM/LmluLDApO3JldHVybiBuLnNldEZ1bGxZZWFyKHQsYSxyKzEpLG4uc2V0SG91cnMoMCwwLDAsMCksbn12YXIgb0ZzLGRmdD1nKCgpPT57R3QoKTtxcigpO2koY2Z0LCJzdGFydE9mVG9tb3Jyb3ciKTtvRnM9Y2Z0fSk7ZnVuY3Rpb24gdWZ0KHMpe2xldCBlPVBhKHM/LmluKSx0PWUuZ2V0RnVsbFllYXIoKSxhPWUuZ2V0TW9udGgoKSxyPWUuZ2V0RGF0ZSgpLG49UGEocz8uaW4pO3JldHVybiBuLnNldEZ1bGxZZWFyKHQsYSxyLTEpLG4uc2V0SG91cnMoMCwwLDAsMCksbn12YXIgZEZzLHBmdD1nKCgpPT57cXIoKTtpKHVmdCwic3RhcnRPZlllc3RlcmRheSIpO2RGcz11ZnR9KTtmdW5jdGlvbiBFYWUocyxlLHQpe3JldHVybiBKMihzLC1lLHQpfXZhciBmRnMsdGhlPWcoKCk9PntqNygpO2koRWFlLCJzdWJNb250aHMiKTtmRnM9RWFlfSk7ZnVuY3Rpb24gaGZ0KHMsZSx0KXtsZXR7eWVhcnM6YT0wLG1vbnRoczpyPTAsd2Vla3M6bj0wLGRheXM6bz0wLGhvdXJzOmw9MCxtaW51dGVzOnA9MCxzZWNvbmRzOmQ9MH09ZSx1PUVhZShzLHIrYSoxMix0KSxjPXdwKHUsbytuKjcsdCksYj1wK2wqNjAseD0oZCtiKjYwKSoxZTM7cmV0dXJuIHR0KHQ/LmlufHxzLCtjLXgpfXZhciB5RnMsZmZ0PWcoKCk9PntHdCgpO2p5KCk7dGhlKCk7aShoZnQsInN1YiIpO3lGcz1oZnR9KTtmdW5jdGlvbiBtZnQocyxlLHQpe3JldHVybiBCZWUocywtZSx0KX12YXIgX0ZzLGdmdD1nKCgpPT57cnBlKCk7aShtZnQsInN1YkJ1c2luZXNzRGF5cyIpO19Gcz1tZnR9KTtmdW5jdGlvbiBiZnQocyxlLHQpe3JldHVybiBIZWUocywtZSx0KX12YXIgVEZzLHZmdD1nKCgpPT57b3BlKCk7aShiZnQsInN1YkhvdXJzIik7VEZzPWJmdH0pO2Z1bmN0aW9uIHhmdChzLGUsdCl7cmV0dXJuIHVwKHMsLWUsdCl9dmFyIEVGcyx5ZnQ9ZygoKT0+e0N5KCk7aSh4ZnQsInN1Yk1pbGxpc2Vjb25kcyIpO0VGcz14ZnR9KTtmdW5jdGlvbiB3ZnQocyxlLHQpe3JldHVybiBVNyhzLC1lLHQpfXZhciBORnMsa2Z0PWcoKCk9PntWZWUoKTtpKHdmdCwic3ViTWludXRlcyIpO05Gcz13ZnR9KTtmdW5jdGlvbiBTZnQocyxlLHQpe3JldHVybiBXNyhzLC1lLHQpfXZhciBCRnMsX2Z0PWcoKCk9PntVZWUoKTtpKFNmdCwic3ViUXVhcnRlcnMiKTtCRnM9U2Z0fSk7ZnVuY3Rpb24gTWZ0KHMsZSx0KXtyZXR1cm4gV2VlKHMsLWUsdCl9dmFyIFZGcyx6ZnQ9ZygoKT0+e2NwZSgpO2koTWZ0LCJzdWJTZWNvbmRzIik7VkZzPU1mdH0pO2Z1bmN0aW9uIENmdChzLGUsdCl7cmV0dXJuIGhwKHMsLWUsdCl9dmFyIEtGcyxUZnQ9ZygoKT0+eyR5KCk7aShDZnQsInN1YldlZWtzIik7S0ZzPUNmdH0pO2Z1bmN0aW9uICRmdChzLGUsdCl7cmV0dXJuIEdlZShzLC1lLHQpfXZhciBRRnMsRGZ0PWcoKCk9PntkcGUoKTtpKCRmdCwic3ViWWVhcnMiKTtRRnM9JGZ0fSk7ZnVuY3Rpb24gTGZ0KHMpe3JldHVybiBNYXRoLnRydW5jKHMqNyl9dmFyIGFCcyxFZnQ9ZygoKT0+e3dhKCk7aShMZnQsIndlZWtzVG9EYXlzIik7YUJzPUxmdH0pO2Z1bmN0aW9uIFBmdChzKXtyZXR1cm4gTWF0aC50cnVuYyhzKjM2NS4yNDI1KX12YXIgb0JzLElmdD1nKCgpPT57d2EoKTtpKFBmdCwieWVhcnNUb0RheXMiKTtvQnM9UGZ0fSk7ZnVuY3Rpb24gQWZ0KHMpe3JldHVybiBNYXRoLnRydW5jKHMqTmVlKX12YXIgZEJzLE5mdD1nKCgpPT57d2EoKTtpKEFmdCwieWVhcnNUb01vbnRocyIpO2RCcz1BZnR9KTtmdW5jdGlvbiBSZnQocyl7cmV0dXJuIE1hdGgudHJ1bmMocypSZWUpfXZhciBmQnMsT2Z0PWcoKCk9Pnt3YSgpO2koUmZ0LCJ5ZWFyc1RvUXVhcnRlcnMiKTtmQnM9UmZ0fSk7dmFyIFV5PXt9O3l0KFV5LHthZGQ6KCk9PmRwLGFkZEJ1c2luZXNzRGF5czooKT0+QmVlLGFkZERheXM6KCk9PkhyLGFkZEhvdXJzOigpPT5IZWUsYWRkSVNPV2Vla1llYXJzOigpPT5qZWUsYWRkTWlsbGlzZWNvbmRzOigpPT51cCxhZGRNaW51dGVzOigpPT5VNyxhZGRNb250aHM6KCk9PkoyLGFkZFF1YXJ0ZXJzOigpPT5XNyxhZGRTZWNvbmRzOigpPT5XZWUsYWRkV2Vla3M6KCk9PmhwLGFkZFllYXJzOigpPT5HZWUsYXJlSW50ZXJ2YWxzT3ZlcmxhcHBpbmc6KCk9Pm8wdCxjbGFtcDooKT0+bDB0LGNsb3Nlc3RJbmRleFRvOigpPT5aZWUsY2xvc2VzdFRvOigpPT5kMHQsY29tcGFyZUFzYzooKT0+S28sY29tcGFyZURlc2M6KCk9PnAwdCxjb25zdHJ1Y3RGcm9tOigpPT50dCxjb25zdHJ1Y3ROb3c6KCk9PlBhLGRheXNUb1dlZWtzOigpPT5mMHQsZGlmZmVyZW5jZUluQnVzaW5lc3NEYXlzOigpPT5nMHQsZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzOigpPT5ubyxkaWZmZXJlbmNlSW5DYWxlbmRhcklTT1dlZWtZZWFyczooKT0+UWVlLGRpZmZlcmVuY2VJbkNhbGVuZGFySVNPV2Vla3M6KCk9PnYwdCxkaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRoczooKT0+WTQsZGlmZmVyZW5jZUluQ2FsZW5kYXJRdWFydGVyczooKT0+SzcsZGlmZmVyZW5jZUluQ2FsZW5kYXJXZWVrczooKT0+WjQsZGlmZmVyZW5jZUluQ2FsZW5kYXJZZWFyczooKT0+ZnAsZGlmZmVyZW5jZUluRGF5czooKT0+WTcsZGlmZmVyZW5jZUluSG91cnM6KCk9Plg0LGRpZmZlcmVuY2VJbklTT1dlZWtZZWFyczooKT0+dzB0LGRpZmZlcmVuY2VJbk1pbGxpc2Vjb25kczooKT0+WjcsZGlmZmVyZW5jZUluTWludXRlczooKT0+UTQsZGlmZmVyZW5jZUluTW9udGhzOigpPT5tcCxkaWZmZXJlbmNlSW5RdWFydGVyczooKT0+UzB0LGRpZmZlcmVuY2VJblNlY29uZHM6KCk9PmlkLGRpZmZlcmVuY2VJbldlZWtzOigpPT5NMHQsZGlmZmVyZW5jZUluWWVhcnM6KCk9PmR0ZSxlYWNoRGF5T2ZJbnRlcnZhbDooKT0+dXRlLGVhY2hIb3VyT2ZJbnRlcnZhbDooKT0+QzB0LGVhY2hNaW51dGVPZkludGVydmFsOigpPT4kMHQsZWFjaE1vbnRoT2ZJbnRlcnZhbDooKT0+TDB0LGVhY2hRdWFydGVyT2ZJbnRlcnZhbDooKT0+UDB0LGVhY2hXZWVrT2ZJbnRlcnZhbDooKT0+QTB0LGVhY2hXZWVrZW5kT2ZJbnRlcnZhbDooKT0+SjcsZWFjaFdlZWtlbmRPZk1vbnRoOigpPT5SMHQsZWFjaFdlZWtlbmRPZlllYXI6KCk9PkYwdCxlYWNoWWVhck9mSW50ZXJ2YWw6KCk9PkgwdCxlbmRPZkRheTooKT0+WDcsZW5kT2ZEZWNhZGU6KCk9PmowdCxlbmRPZkhvdXI6KCk9PlUwdCxlbmRPZklTT1dlZWs6KCk9PkcwdCxlbmRPZklTT1dlZWtZZWFyOigpPT5ZMHQsZW5kT2ZNaW51dGU6KCk9PlgwdCxlbmRPZk1vbnRoOigpPT5RNyxlbmRPZlF1YXJ0ZXI6KCk9PkowdCxlbmRPZlNlY29uZDooKT0+dHV0LGVuZE9mVG9kYXk6KCk9PnN1dCxlbmRPZlRvbW9ycm93OigpPT5ydXQsZW5kT2ZXZWVrOigpPT5ndGUsZW5kT2ZZZWFyOigpPT5mdGUsZW5kT2ZZZXN0ZXJkYXk6KCk9Pm51dCxmb3JtYXQ6KCk9PlJ5LGZvcm1hdERhdGU6KCk9PlJ5LGZvcm1hdERpc3RhbmNlOigpPT5fdGUsZm9ybWF0RGlzdGFuY2VTdHJpY3Q6KCk9Pk10ZSxmb3JtYXREaXN0YW5jZVRvTm93OigpPT5EdXQsZm9ybWF0RGlzdGFuY2VUb05vd1N0cmljdDooKT0+RXV0LGZvcm1hdER1cmF0aW9uOigpPT5JdXQsZm9ybWF0SVNPOigpPT5OdXQsZm9ybWF0SVNPOTA3NTooKT0+T3V0LGZvcm1hdElTT0R1cmF0aW9uOigpPT5CdXQsZm9ybWF0UkZDMzMzOTooKT0+cXV0LGZvcm1hdFJGQzcyMzE6KCk9PlZ1dCxmb3JtYXRSZWxhdGl2ZTooKT0+V3V0LGZvcm1hdHRlcnM6KCk9PkF5LGZyb21Vbml4VGltZTooKT0+S3V0LGdldERhdGU6KCk9Pnp0ZSxnZXREYXk6KCk9PnhwLGdldERheU9mWWVhcjooKT0+dnRlLGdldERheXNJbk1vbnRoOigpPT5DdGUsZ2V0RGF5c0luWWVhcjooKT0+WnV0LGdldERlY2FkZTooKT0+UXV0LGdldERlZmF1bHRPcHRpb25zOigpPT4kdGUsZ2V0SG91cnM6KCk9PmVwdCxnZXRJU09EYXk6KCk9PkR0ZSxnZXRJU09XZWVrOigpPT5zOSxnZXRJU09XZWVrWWVhcjooKT0+d24sZ2V0SVNPV2Vla3NJblllYXI6KCk9PmFwdCxnZXRNaWxsaXNlY29uZHM6KCk9PmlwdCxnZXRNaW51dGVzOigpPT5vcHQsZ2V0TW9udGg6KCk9PmxwdCxnZXRPdmVybGFwcGluZ0RheXNJbkludGVydmFsczooKT0+ZHB0LGdldFF1YXJ0ZXI6KCk9PkR5LGdldFNlY29uZHM6KCk9PnBwdCxnZXRUaW1lOigpPT5mcHQsZ2V0VW5peFRpbWU6KCk9PmdwdCxnZXRXZWVrOigpPT5pOSxnZXRXZWVrT2ZNb250aDooKT0+dnB0LGdldFdlZWtZZWFyOigpPT5icCxnZXRXZWVrc0luTW9udGg6KCk9PnlwdCxnZXRZZWFyOigpPT5rcHQsaG91cnNUb01pbGxpc2Vjb25kczooKT0+X3B0LGhvdXJzVG9NaW51dGVzOigpPT56cHQsaG91cnNUb1NlY29uZHM6KCk9PlRwdCxpbnRlcnZhbDooKT0+RHB0LGludGVydmFsVG9EdXJhdGlvbjooKT0+RXB0LGludGxGb3JtYXQ6KCk9PklwdCxpbnRsRm9ybWF0RGlzdGFuY2U6KCk9Pk5wdCxpc0FmdGVyOigpPT5PcHQsaXNCZWZvcmU6KCk9PkJwdCxpc0RhdGU6KCk9PlhlZSxpc0VxdWFsOigpPT5xcHQsaXNFeGlzdHM6KCk9PlZwdCxpc0ZpcnN0RGF5T2ZNb250aDooKT0+V3B0LGlzRnJpZGF5OigpPT5LcHQsaXNGdXR1cmU6KCk9PlpwdCxpc0xhc3REYXlPZk1vbnRoOigpPT5jdGUsaXNMZWFwWWVhcjooKT0+VHRlLGlzTWF0Y2g6KCk9PkRodCxpc01vbmRheTooKT0+RWh0LGlzUGFzdDooKT0+SWh0LGlzU2FtZURheTooKT0+c2QsaXNTYW1lSG91cjooKT0+d2FlLGlzU2FtZUlTT1dlZWs6KCk9PlNhZSxpc1NhbWVJU09XZWVrWWVhcjooKT0+Tmh0LGlzU2FtZU1pbnV0ZTooKT0+X2FlLGlzU2FtZU1vbnRoOigpPT5NYWUsaXNTYW1lUXVhcnRlcjooKT0+emFlLGlzU2FtZVNlY29uZDooKT0+Q2FlLGlzU2FtZVdlZWs6KCk9Pmw5LGlzU2FtZVllYXI6KCk9PlRhZSxpc1NhdHVyZGF5OigpPT5PZWUsaXNTdW5kYXk6KCk9PkZlZSxpc1RoaXNIb3VyOigpPT5PaHQsaXNUaGlzSVNPV2VlazooKT0+Qmh0LGlzVGhpc01pbnV0ZTooKT0+cWh0LGlzVGhpc01vbnRoOigpPT5WaHQsaXNUaGlzUXVhcnRlcjooKT0+V2h0LGlzVGhpc1NlY29uZDooKT0+S2h0LGlzVGhpc1dlZWs6KCk9PlpodCxpc1RoaXNZZWFyOigpPT5RaHQsaXNUaHVyc2RheTooKT0+ZTR0LGlzVG9kYXk6KCk9PmE0dCxpc1RvbW9ycm93OigpPT5pNHQsaXNUdWVzZGF5OigpPT5vNHQsaXNWYWxpZDooKT0+a28saXNXZWRuZXNkYXk6KCk9Pmw0dCxpc1dlZWtlbmQ6KCk9PmVkLGlzV2l0aGluSW50ZXJ2YWw6KCk9PmQ0dCxpc1llc3RlcmRheTooKT0+cDR0LGxhc3REYXlPZkRlY2FkZTooKT0+ZjR0LGxhc3REYXlPZklTT1dlZWs6KCk9Pmc0dCxsYXN0RGF5T2ZJU09XZWVrWWVhcjooKT0+djR0LGxhc3REYXlPZk1vbnRoOigpPT5MdGUsbGFzdERheU9mUXVhcnRlcjooKT0+eTR0LGxhc3REYXlPZldlZWs6KCk9PiRhZSxsYXN0RGF5T2ZZZWFyOigpPT5rNHQsbGlnaHRGb3JtYXQ6KCk9Pl80dCxsaWdodEZvcm1hdHRlcnM6KCk9Pk9sLGxvbmdGb3JtYXR0ZXJzOigpPT52cCxtYXg6KCk9PktlZSxtaWxsaXNlY29uZHM6KCk9Pno0dCxtaWxsaXNlY29uZHNUb0hvdXJzOigpPT5UNHQsbWlsbGlzZWNvbmRzVG9NaW51dGVzOigpPT5ENHQsbWlsbGlzZWNvbmRzVG9TZWNvbmRzOigpPT5FNHQsbWluOigpPT5ZZWUsbWludXRlc1RvSG91cnM6KCk9Pkk0dCxtaW51dGVzVG9NaWxsaXNlY29uZHM6KCk9Pk40dCxtaW51dGVzVG9TZWNvbmRzOigpPT5PNHQsbW9udGhzVG9RdWFydGVyczooKT0+QjR0LG1vbnRoc1RvWWVhcnM6KCk9PnE0dCxuZXh0RGF5OigpPT5YbyxuZXh0RnJpZGF5OigpPT5WNHQsbmV4dE1vbmRheTooKT0+VzR0LG5leHRTYXR1cmRheTooKT0+SzR0LG5leHRTdW5kYXk6KCk9Plo0dCxuZXh0VGh1cnNkYXk6KCk9PlE0dCxuZXh0VHVlc2RheTooKT0+ZTN0LG5leHRXZWRuZXNkYXk6KCk9PmEzdCxwYXJzZTooKT0+eWFlLHBhcnNlSVNPOigpPT5yM3QscGFyc2VKU09OOigpPT5uM3QscGFyc2VyczooKT0+eGFlLHByZXZpb3VzRGF5OigpPT5RbyxwcmV2aW91c0ZyaWRheTooKT0+YzN0LHByZXZpb3VzTW9uZGF5OigpPT51M3QscHJldmlvdXNTYXR1cmRheTooKT0+aDN0LHByZXZpb3VzU3VuZGF5OigpPT5tM3QscHJldmlvdXNUaHVyc2RheTooKT0+YjN0LHByZXZpb3VzVHVlc2RheTooKT0+eDN0LHByZXZpb3VzV2VkbmVzZGF5OigpPT53M3QscXVhcnRlcnNUb01vbnRoczooKT0+UzN0LHF1YXJ0ZXJzVG9ZZWFyczooKT0+TTN0LHJvdW5kVG9OZWFyZXN0SG91cnM6KCk9PkMzdCxyb3VuZFRvTmVhcmVzdE1pbnV0ZXM6KCk9PiQzdCxzZWNvbmRzVG9Ib3VyczooKT0+TDN0LHNlY29uZHNUb01pbGxpc2Vjb25kczooKT0+UDN0LHNlY29uZHNUb01pbnV0ZXM6KCk9PkEzdCxzZXQ6KCk9PlIzdCxzZXREYXRlOigpPT5GM3Qsc2V0RGF5OigpPT55cCxzZXREYXlPZlllYXI6KCk9PkgzdCxzZXREZWZhdWx0T3B0aW9uczooKT0+ajN0LHNldEhvdXJzOigpPT5VM3Qsc2V0SVNPRGF5OigpPT5zYWUsc2V0SVNPV2VlazooKT0+WnRlLHNldElTT1dlZWtZZWFyOigpPT5xZWUsc2V0TWlsbGlzZWNvbmRzOigpPT5HM3Qsc2V0TWludXRlczooKT0+WTN0LHNldE1vbnRoOigpPT5jOSxzZXRRdWFydGVyOigpPT5YM3Qsc2V0U2Vjb25kczooKT0+SjN0LHNldFdlZWs6KCk9Pkt0ZSxzZXRXZWVrWWVhcjooKT0+dGZ0LHNldFllYXI6KCk9PnNmdCxzdGFydE9mRGF5OigpPT5hZCxzdGFydE9mRGVjYWRlOigpPT5yZnQsc3RhcnRPZkhvdXI6KCk9PkJ5LHN0YXJ0T2ZJU09XZWVrOigpPT5rcixzdGFydE9mSVNPV2Vla1llYXI6KCk9PlJsLHN0YXJ0T2ZNaW51dGU6KCk9Pkh5LHN0YXJ0T2ZNb250aDooKT0+Z3Asc3RhcnRPZlF1YXJ0ZXI6KCk9Pm9kLHN0YXJ0T2ZTZWNvbmQ6KCk9PnF5LHN0YXJ0T2ZUb2RheTooKT0+bmZ0LHN0YXJ0T2ZUb21vcnJvdzooKT0+Y2Z0LHN0YXJ0T2ZXZWVrOigpPT5LcyxzdGFydE9mV2Vla1llYXI6KCk9PmUzLHN0YXJ0T2ZZZWFyOigpPT5lOSxzdGFydE9mWWVzdGVyZGF5OigpPT51ZnQsc3ViOigpPT5oZnQsc3ViQnVzaW5lc3NEYXlzOigpPT5tZnQsc3ViRGF5czooKT0+d3Asc3ViSG91cnM6KCk9PmJmdCxzdWJJU09XZWVrWWVhcnM6KCk9Pml0ZSxzdWJNaWxsaXNlY29uZHM6KCk9PnhmdCxzdWJNaW51dGVzOigpPT53ZnQsc3ViTW9udGhzOigpPT5FYWUsc3ViUXVhcnRlcnM6KCk9PlNmdCxzdWJTZWNvbmRzOigpPT5NZnQsc3ViV2Vla3M6KCk9PkNmdCxzdWJZZWFyczooKT0+JGZ0LHRvRGF0ZTooKT0+QWUsdHJhbnNwb3NlOigpPT5FdGUsd2Vla3NUb0RheXM6KCk9PkxmdCx5ZWFyc1RvRGF5czooKT0+UGZ0LHllYXJzVG9Nb250aHM6KCk9PkFmdCx5ZWFyc1RvUXVhcnRlcnM6KCk9PlJmdH0pO3ZhciBGZnQ9ZygoKT0+e2FwZSgpO3JwZSgpO1EyKCk7b3BlKCk7bHBlKCk7Q3koKTtWZWUoKTtqNygpO1VlZSgpO2NwZSgpOyR5KCk7ZHBlKCk7bjB0KCk7YzB0KCk7aHBlKCk7dTB0KCk7SzQoKTtoMHQoKTtHdCgpO3FyKCk7bTB0KCk7YjB0KCk7cDAoKTttcGUoKTt4MHQoKTtKZWUoKTticGUoKTtldGUoKTt0dGUoKTthdGUoKTtzdGUoKTtrMHQoKTtydGUoKTtvdGUoKTtMeSgpO18wdCgpO0V5KCk7ejB0KCk7eXBlKCk7d3BlKCk7VDB0KCk7RDB0KCk7RTB0KCk7STB0KCk7TjB0KCk7aHRlKCk7TzB0KCk7QjB0KCk7cTB0KCk7bnRlKCk7VjB0KCk7VzB0KCk7SzB0KCk7WjB0KCk7UTB0KCk7bHRlKCk7ZXV0KCk7YXV0KCk7aXV0KCk7b3V0KCk7U3BlKCk7a3BlKCk7bHV0KCk7VHBlKCk7JHBlKCk7RHBlKCk7THV0KCk7UHV0KCk7QXV0KCk7UnV0KCk7RnV0KCk7SHV0KCk7anV0KCk7VXV0KCk7R3V0KCk7WXV0KCk7THBlKCk7T3koKTtfcGUoKTtFcGUoKTtYdXQoKTtKdXQoKTtJcGUoKTt0cHQoKTtBcGUoKTt4dGUoKTtwcCgpO3NwdCgpO3JwdCgpO25wdCgpO2NwdCgpO3VwdCgpO2dwZSgpO2hwdCgpO21wdCgpO2JwdCgpO3d0ZSgpO3hwdCgpO0l5KCk7d3B0KCk7U3B0KCk7TXB0KCk7Q3B0KCk7JHB0KCk7THB0KCk7UHB0KCk7QXB0KCk7UnB0KCk7RnB0KCk7SHB0KCk7ZnBlKCk7anB0KCk7VXB0KCk7R3B0KCk7WXB0KCk7WHB0KCk7eHBlKCk7UHBlKCk7TGh0KCk7UGh0KCk7QWh0KCk7RzcoKTtWcGUoKTtVcGUoKTtSaHQoKTtHcGUoKTtLcGUoKTtZcGUoKTtYcGUoKTtrYWUoKTtRcGUoKTtzcGUoKTtpcGUoKTtGaHQoKTtIaHQoKTtqaHQoKTtVaHQoKTtHaHQoKTtZaHQoKTtYaHQoKTtKaHQoKTt0NHQoKTtzNHQoKTtyNHQoKTtuNHQoKTtoMCgpO2M0dCgpO3p5KCk7dTR0KCk7aDR0KCk7bTR0KCk7YjR0KCk7eDR0KCk7TnBlKCk7dzR0KCk7SnBlKCk7UzR0KCk7TTR0KCk7dXBlKCk7QzR0KCk7JDR0KCk7TDR0KCk7UDR0KCk7cHBlKCk7QTR0KCk7UjR0KCk7RjR0KCk7SDR0KCk7ajR0KCk7bTAoKTtVNHQoKTtHNHQoKTtZNHQoKTtYNHQoKTtKNHQoKTt0M3QoKTtzM3QoKTtxcGUoKTtvM3QoKTtsM3QoKTtnMCgpO2QzdCgpO3AzdCgpO2YzdCgpO2czdCgpO3YzdCgpO3kzdCgpO2szdCgpO18zdCgpO3ozdCgpO1QzdCgpO0QzdCgpO0UzdCgpO0kzdCgpO04zdCgpO08zdCgpO0IzdCgpO0Z5KCk7cTN0KCk7VjN0KCk7VzN0KCk7SHBlKCk7QnBlKCk7bnBlKCk7SzN0KCk7WjN0KCk7TGFlKCk7UTN0KCk7ZWZ0KCk7RnBlKCk7YWZ0KCk7aWZ0KCk7VHkoKTtvZnQoKTtqcGUoKTt0ZCgpO1Y3KCk7V3BlKCk7UHkoKTtwdGUoKTtacGUoKTtsZnQoKTtkZnQoKTt2MSgpO3l0ZSgpO210ZSgpO3BmdCgpO2ZmdCgpO2dmdCgpO2p5KCk7dmZ0KCk7dnBlKCk7eWZ0KCk7a2Z0KCk7dGhlKCk7X2Z0KCk7emZ0KCk7VGZ0KCk7RGZ0KCk7YXQoKTtScGUoKTtFZnQoKTtJZnQoKTtOZnQoKTtPZnQoKX0pO3ZhciBCZnQ9cGwoKGFoZSxzaGUpPT57KGZ1bmN0aW9uKHMsZSl7dHlwZW9mIGFoZT09Im9iamVjdCImJnR5cGVvZiBzaGU8InUiP3NoZS5leHBvcnRzPWUoKTp0eXBlb2YgZGVmaW5lPT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kP2RlZmluZShlKToocz10eXBlb2YgZ2xvYmFsVGhpczwidSI/Z2xvYmFsVGhpczpzfHxzZWxmKS5kYXlqcz1lKCl9KShhaGUsKGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBzPTFlMyxlPTZlNCx0PTM2ZTUsYT0ibWlsbGlzZWNvbmQiLHI9InNlY29uZCIsbj0ibWludXRlIixvPSJob3VyIixsPSJkYXkiLHA9IndlZWsiLGQ9Im1vbnRoIix1PSJxdWFydGVyIixjPSJ5ZWFyIixiPSJkYXRlIix2PSJJbnZhbGlkIERhdGUiLHg9L14oXGR7NH0pWy0vXT8oXGR7MSwyfSk/Wy0vXT8oXGR7MCwyfSlbVHRcc10qKFxkezEsMn0pPzo/KFxkezEsMn0pPzo/KFxkezEsMn0pP1suOl0/KFxkKyk/JC8sbT0vXFsoW15cXV0rKV18WXsxLDR9fE17MSw0fXxEezEsMn18ZHsxLDR9fEh7MSwyfXxoezEsMn18YXxBfG17MSwyfXxzezEsMn18WnsxLDJ9fFNTUy9nLGY9e25hbWU6ImVuIix3ZWVrZGF5czoiU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXkiLnNwbGl0KCJfIiksbW9udGhzOiJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyIi5zcGxpdCgiXyIpLG9yZGluYWw6aShmdW5jdGlvbihTKXt2YXIgST1bInRoIiwic3QiLCJuZCIsInJkIl0sUD1TJTEwMDtyZXR1cm4iWyIrUysoSVsoUC0yMCklMTBdfHxJW1BdfHxJWzBdKSsiXSJ9LCJvcmRpbmFsIil9LHk9aShmdW5jdGlvbihTLEksUCl7dmFyIFI9U3RyaW5nKFMpO3JldHVybiFSfHxSLmxlbmd0aD49ST9TOiIiK0FycmF5KEkrMS1SLmxlbmd0aCkuam9pbihQKStTfSwibSIpLE09e3M6eSx6OmkoZnVuY3Rpb24oUyl7dmFyIEk9LVMudXRjT2Zmc2V0KCksUD1NYXRoLmFicyhJKSxSPU1hdGguZmxvb3IoUC82MCksSz1QJTYwO3JldHVybihJPD0wPyIrIjoiLSIpK3koUiwyLCIwIikrIjoiK3koSywyLCIwIil9LCJ6IiksbTppKGZ1bmN0aW9uIFMoSSxQKXtpZihJLmRhdGUoKTxQLmRhdGUoKSlyZXR1cm4tUyhQLEkpO3ZhciBSPTEyKihQLnllYXIoKS1JLnllYXIoKSkrKFAubW9udGgoKS1JLm1vbnRoKCkpLEs9SS5jbG9uZSgpLmFkZChSLGQpLFY9UC1LPDAsVz1JLmNsb25lKCkuYWRkKFIrKFY/LTE6MSksZCk7cmV0dXJuKygtKFIrKFAtSykvKFY/Sy1XOlctSykpfHwwKX0sInQiKSxhOmkoZnVuY3Rpb24oUyl7cmV0dXJuIFM8MD9NYXRoLmNlaWwoUyl8fDA6TWF0aC5mbG9vcihTKX0sImEiKSxwOmkoZnVuY3Rpb24oUyl7cmV0dXJue006ZCx5OmMsdzpwLGQ6bCxEOmIsaDpvLG06bixzOnIsbXM6YSxROnV9W1NdfHxTdHJpbmcoU3x8IiIpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvcyQvLCIiKX0sInAiKSx1OmkoZnVuY3Rpb24oUyl7cmV0dXJuIFM9PT12b2lkIDB9LCJ1Iil9LHo9ImVuIixOPXt9O05bel09Zjt2YXIgQz0iJGlzRGF5anNPYmplY3QiLF89aShmdW5jdGlvbihTKXtyZXR1cm4gUyBpbnN0YW5jZW9mIEh8fCEoIVN8fCFTW0NdKX0sIlMiKSxPPWkoZnVuY3Rpb24gUyhJLFAsUil7dmFyIEs7aWYoIUkpcmV0dXJuIHo7aWYodHlwZW9mIEk9PSJzdHJpbmciKXt2YXIgVj1JLnRvTG93ZXJDYXNlKCk7TltWXSYmKEs9ViksUCYmKE5bVl09UCxLPVYpO3ZhciBXPUkuc3BsaXQoIi0iKTtpZighSyYmVy5sZW5ndGg+MSlyZXR1cm4gUyhXWzBdKX1lbHNle3ZhciBtZT1JLm5hbWU7TlttZV09SSxLPW1lfXJldHVybiFSJiZLJiYoej1LKSxLfHwhUiYmen0sInQiKSwkPWkoZnVuY3Rpb24oUyxJKXtpZihfKFMpKXJldHVybiBTLmNsb25lKCk7dmFyIFA9dHlwZW9mIEk9PSJvYmplY3QiP0k6e307cmV0dXJuIFAuZGF0ZT1TLFAuYXJncz1hcmd1bWVudHMsbmV3IEgoUCl9LCJPIiksRT1NO0UubD1PLEUuaT1fLEUudz1mdW5jdGlvbihTLEkpe3JldHVybiAkKFMse2xvY2FsZTpJLiRMLHV0YzpJLiR1LHg6SS4keCwkb2Zmc2V0OkkuJG9mZnNldH0pfTt2YXIgSD0oZnVuY3Rpb24oKXtmdW5jdGlvbiBTKFApe3RoaXMuJEw9TyhQLmxvY2FsZSxudWxsLCEwKSx0aGlzLnBhcnNlKFApLHRoaXMuJHg9dGhpcy4keHx8UC54fHx7fSx0aGlzW0NdPSEwfWkoUywiTSIpO3ZhciBJPVMucHJvdG90eXBlO3JldHVybiBJLnBhcnNlPWZ1bmN0aW9uKFApe3RoaXMuJGQ9KGZ1bmN0aW9uKFIpe3ZhciBLPVIuZGF0ZSxWPVIudXRjO2lmKEs9PT1udWxsKXJldHVybiBuZXcgRGF0ZShOYU4pO2lmKEUudShLKSlyZXR1cm4gbmV3IERhdGU7aWYoSyBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIG5ldyBEYXRlKEspO2lmKHR5cGVvZiBLPT0ic3RyaW5nIiYmIS9aJC9pLnRlc3QoSykpe3ZhciBXPUsubWF0Y2goeCk7aWYoVyl7dmFyIG1lPVdbMl0tMXx8MCxCPShXWzddfHwiMCIpLnN1YnN0cmluZygwLDMpO3JldHVybiBWP25ldyBEYXRlKERhdGUuVVRDKFdbMV0sbWUsV1szXXx8MSxXWzRdfHwwLFdbNV18fDAsV1s2XXx8MCxCKSk6bmV3IERhdGUoV1sxXSxtZSxXWzNdfHwxLFdbNF18fDAsV1s1XXx8MCxXWzZdfHwwLEIpfX1yZXR1cm4gbmV3IERhdGUoSyl9KShQKSx0aGlzLmluaXQoKX0sSS5pbml0PWZ1bmN0aW9uKCl7dmFyIFA9dGhpcy4kZDt0aGlzLiR5PVAuZ2V0RnVsbFllYXIoKSx0aGlzLiRNPVAuZ2V0TW9udGgoKSx0aGlzLiREPVAuZ2V0RGF0ZSgpLHRoaXMuJFc9UC5nZXREYXkoKSx0aGlzLiRIPVAuZ2V0SG91cnMoKSx0aGlzLiRtPVAuZ2V0TWludXRlcygpLHRoaXMuJHM9UC5nZXRTZWNvbmRzKCksdGhpcy4kbXM9UC5nZXRNaWxsaXNlY29uZHMoKX0sSS4kdXRpbHM9ZnVuY3Rpb24oKXtyZXR1cm4gRX0sSS5pc1ZhbGlkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGQudG9TdHJpbmcoKSE9PXZ9LEkuaXNTYW1lPWZ1bmN0aW9uKFAsUil7dmFyIEs9JChQKTtyZXR1cm4gdGhpcy5zdGFydE9mKFIpPD1LJiZLPD10aGlzLmVuZE9mKFIpfSxJLmlzQWZ0ZXI9ZnVuY3Rpb24oUCxSKXtyZXR1cm4gJChQKTx0aGlzLnN0YXJ0T2YoUil9LEkuaXNCZWZvcmU9ZnVuY3Rpb24oUCxSKXtyZXR1cm4gdGhpcy5lbmRPZihSKTwkKFApfSxJLiRnPWZ1bmN0aW9uKFAsUixLKXtyZXR1cm4gRS51KFApP3RoaXNbUl06dGhpcy5zZXQoSyxQKX0sSS51bml4PWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZmxvb3IodGhpcy52YWx1ZU9mKCkvMWUzKX0sSS52YWx1ZU9mPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGQuZ2V0VGltZSgpfSxJLnN0YXJ0T2Y9ZnVuY3Rpb24oUCxSKXt2YXIgSz10aGlzLFY9ISFFLnUoUil8fFIsVz1FLnAoUCksbWU9aShmdW5jdGlvbihRLGllKXt2YXIgdGU9RS53KEsuJHU/RGF0ZS5VVEMoSy4keSxpZSxRKTpuZXcgRGF0ZShLLiR5LGllLFEpLEspO3JldHVybiBWP3RlOnRlLmVuZE9mKGwpfSwibCIpLEI9aShmdW5jdGlvbihRLGllKXtyZXR1cm4gRS53KEsudG9EYXRlKClbUV0uYXBwbHkoSy50b0RhdGUoInMiKSwoVj9bMCwwLDAsMF06WzIzLDU5LDU5LDk5OV0pLnNsaWNlKGllKSksSyl9LCIkIiksVT10aGlzLiRXLGhlPXRoaXMuJE0sRj10aGlzLiRELGo9InNldCIrKHRoaXMuJHU/IlVUQyI6IiIpO3N3aXRjaChXKXtjYXNlIGM6cmV0dXJuIFY/bWUoMSwwKTptZSgzMSwxMSk7Y2FzZSBkOnJldHVybiBWP21lKDEsaGUpOm1lKDAsaGUrMSk7Y2FzZSBwOnZhciB1ZT10aGlzLiRsb2NhbGUoKS53ZWVrU3RhcnR8fDAsbGU9KFU8dWU/VSs3OlUpLXVlO3JldHVybiBtZShWP0YtbGU6RisoNi1sZSksaGUpO2Nhc2UgbDpjYXNlIGI6cmV0dXJuIEIoaisiSG91cnMiLDApO2Nhc2UgbzpyZXR1cm4gQihqKyJNaW51dGVzIiwxKTtjYXNlIG46cmV0dXJuIEIoaisiU2Vjb25kcyIsMik7Y2FzZSByOnJldHVybiBCKGorIk1pbGxpc2Vjb25kcyIsMyk7ZGVmYXVsdDpyZXR1cm4gdGhpcy5jbG9uZSgpfX0sSS5lbmRPZj1mdW5jdGlvbihQKXtyZXR1cm4gdGhpcy5zdGFydE9mKFAsITEpfSxJLiRzZXQ9ZnVuY3Rpb24oUCxSKXt2YXIgSyxWPUUucChQKSxXPSJzZXQiKyh0aGlzLiR1PyJVVEMiOiIiKSxtZT0oSz17fSxLW2xdPVcrIkRhdGUiLEtbYl09VysiRGF0ZSIsS1tkXT1XKyJNb250aCIsS1tjXT1XKyJGdWxsWWVhciIsS1tvXT1XKyJIb3VycyIsS1tuXT1XKyJNaW51dGVzIixLW3JdPVcrIlNlY29uZHMiLEtbYV09VysiTWlsbGlzZWNvbmRzIixLKVtWXSxCPVY9PT1sP3RoaXMuJEQrKFItdGhpcy4kVyk6UjtpZihWPT09ZHx8Vj09PWMpe3ZhciBVPXRoaXMuY2xvbmUoKS5zZXQoYiwxKTtVLiRkW21lXShCKSxVLmluaXQoKSx0aGlzLiRkPVUuc2V0KGIsTWF0aC5taW4odGhpcy4kRCxVLmRheXNJbk1vbnRoKCkpKS4kZH1lbHNlIG1lJiZ0aGlzLiRkW21lXShCKTtyZXR1cm4gdGhpcy5pbml0KCksdGhpc30sSS5zZXQ9ZnVuY3Rpb24oUCxSKXtyZXR1cm4gdGhpcy5jbG9uZSgpLiRzZXQoUCxSKX0sSS5nZXQ9ZnVuY3Rpb24oUCl7cmV0dXJuIHRoaXNbRS5wKFApXSgpfSxJLmFkZD1mdW5jdGlvbihQLFIpe3ZhciBLLFY9dGhpcztQPU51bWJlcihQKTt2YXIgVz1FLnAoUiksbWU9aShmdW5jdGlvbihoZSl7dmFyIEY9JChWKTtyZXR1cm4gRS53KEYuZGF0ZShGLmRhdGUoKStNYXRoLnJvdW5kKGhlKlApKSxWKX0sInkiKTtpZihXPT09ZClyZXR1cm4gdGhpcy5zZXQoZCx0aGlzLiRNK1ApO2lmKFc9PT1jKXJldHVybiB0aGlzLnNldChjLHRoaXMuJHkrUCk7aWYoVz09PWwpcmV0dXJuIG1lKDEpO2lmKFc9PT1wKXJldHVybiBtZSg3KTt2YXIgQj0oSz17fSxLW25dPWUsS1tvXT10LEtbcl09cyxLKVtXXXx8MSxVPXRoaXMuJGQuZ2V0VGltZSgpK1AqQjtyZXR1cm4gRS53KFUsdGhpcyl9LEkuc3VidHJhY3Q9ZnVuY3Rpb24oUCxSKXtyZXR1cm4gdGhpcy5hZGQoLTEqUCxSKX0sSS5mb3JtYXQ9ZnVuY3Rpb24oUCl7dmFyIFI9dGhpcyxLPXRoaXMuJGxvY2FsZSgpO2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gSy5pbnZhbGlkRGF0ZXx8djt2YXIgVj1QfHwiWVlZWS1NTS1ERFRISDptbTpzc1oiLFc9RS56KHRoaXMpLG1lPXRoaXMuJEgsQj10aGlzLiRtLFU9dGhpcy4kTSxoZT1LLndlZWtkYXlzLEY9Sy5tb250aHMsaj1LLm1lcmlkaWVtLHVlPWkoZnVuY3Rpb24oaWUsdGUsZWUsa2Upe3JldHVybiBpZSYmKGllW3RlXXx8aWUoUixWKSl8fGVlW3RlXS5zbGljZSgwLGtlKX0sImgiKSxsZT1pKGZ1bmN0aW9uKGllKXtyZXR1cm4gRS5zKG1lJTEyfHwxMixpZSwiMCIpfSwiZCIpLFE9anx8ZnVuY3Rpb24oaWUsdGUsZWUpe3ZhciBrZT1pZTwxMj8iQU0iOiJQTSI7cmV0dXJuIGVlP2tlLnRvTG93ZXJDYXNlKCk6a2V9O3JldHVybiBWLnJlcGxhY2UobSwoZnVuY3Rpb24oaWUsdGUpe3JldHVybiB0ZXx8KGZ1bmN0aW9uKGVlKXtzd2l0Y2goZWUpe2Nhc2UiWVkiOnJldHVybiBTdHJpbmcoUi4keSkuc2xpY2UoLTIpO2Nhc2UiWVlZWSI6cmV0dXJuIEUucyhSLiR5LDQsIjAiKTtjYXNlIk0iOnJldHVybiBVKzE7Y2FzZSJNTSI6cmV0dXJuIEUucyhVKzEsMiwiMCIpO2Nhc2UiTU1NIjpyZXR1cm4gdWUoSy5tb250aHNTaG9ydCxVLEYsMyk7Y2FzZSJNTU1NIjpyZXR1cm4gdWUoRixVKTtjYXNlIkQiOnJldHVybiBSLiREO2Nhc2UiREQiOnJldHVybiBFLnMoUi4kRCwyLCIwIik7Y2FzZSJkIjpyZXR1cm4gU3RyaW5nKFIuJFcpO2Nhc2UiZGQiOnJldHVybiB1ZShLLndlZWtkYXlzTWluLFIuJFcsaGUsMik7Y2FzZSJkZGQiOnJldHVybiB1ZShLLndlZWtkYXlzU2hvcnQsUi4kVyxoZSwzKTtjYXNlImRkZGQiOnJldHVybiBoZVtSLiRXXTtjYXNlIkgiOnJldHVybiBTdHJpbmcobWUpO2Nhc2UiSEgiOnJldHVybiBFLnMobWUsMiwiMCIpO2Nhc2UiaCI6cmV0dXJuIGxlKDEpO2Nhc2UiaGgiOnJldHVybiBsZSgyKTtjYXNlImEiOnJldHVybiBRKG1lLEIsITApO2Nhc2UiQSI6cmV0dXJuIFEobWUsQiwhMSk7Y2FzZSJtIjpyZXR1cm4gU3RyaW5nKEIpO2Nhc2UibW0iOnJldHVybiBFLnMoQiwyLCIwIik7Y2FzZSJzIjpyZXR1cm4gU3RyaW5nKFIuJHMpO2Nhc2Uic3MiOnJldHVybiBFLnMoUi4kcywyLCIwIik7Y2FzZSJTU1MiOnJldHVybiBFLnMoUi4kbXMsMywiMCIpO2Nhc2UiWiI6cmV0dXJuIFd9cmV0dXJuIG51bGx9KShpZSl8fFcucmVwbGFjZSgiOiIsIiIpfSkpfSxJLnV0Y09mZnNldD1mdW5jdGlvbigpe3JldHVybiAxNSotTWF0aC5yb3VuZCh0aGlzLiRkLmdldFRpbWV6b25lT2Zmc2V0KCkvMTUpfSxJLmRpZmY9ZnVuY3Rpb24oUCxSLEspe3ZhciBWLFc9dGhpcyxtZT1FLnAoUiksQj0kKFApLFU9KEIudXRjT2Zmc2V0KCktdGhpcy51dGNPZmZzZXQoKSkqZSxoZT10aGlzLUIsRj1pKGZ1bmN0aW9uKCl7cmV0dXJuIEUubShXLEIpfSwiRCIpO3N3aXRjaChtZSl7Y2FzZSBjOlY9RigpLzEyO2JyZWFrO2Nhc2UgZDpWPUYoKTticmVhaztjYXNlIHU6Vj1GKCkvMzticmVhaztjYXNlIHA6Vj0oaGUtVSkvNjA0OGU1O2JyZWFrO2Nhc2UgbDpWPShoZS1VKS84NjRlNTticmVhaztjYXNlIG86Vj1oZS90O2JyZWFrO2Nhc2UgbjpWPWhlL2U7YnJlYWs7Y2FzZSByOlY9aGUvczticmVhaztkZWZhdWx0OlY9aGV9cmV0dXJuIEs/VjpFLmEoVil9LEkuZGF5c0luTW9udGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbmRPZihkKS4kRH0sSS4kbG9jYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIE5bdGhpcy4kTF19LEkubG9jYWxlPWZ1bmN0aW9uKFAsUil7aWYoIVApcmV0dXJuIHRoaXMuJEw7dmFyIEs9dGhpcy5jbG9uZSgpLFY9TyhQLFIsITApO3JldHVybiBWJiYoSy4kTD1WKSxLfSxJLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIEUudyh0aGlzLiRkLHRoaXMpfSxJLnRvRGF0ZT1mdW5jdGlvbigpe3JldHVybiBuZXcgRGF0ZSh0aGlzLnZhbHVlT2YoKSl9LEkudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpP3RoaXMudG9JU09TdHJpbmcoKTpudWxsfSxJLnRvSVNPU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGQudG9JU09TdHJpbmcoKX0sSS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRkLnRvVVRDU3RyaW5nKCl9LFN9KSgpLGs9SC5wcm90b3R5cGU7cmV0dXJuICQucHJvdG90eXBlPWssW1siJG1zIixhXSxbIiRzIixyXSxbIiRtIixuXSxbIiRIIixvXSxbIiRXIixsXSxbIiRNIixkXSxbIiR5IixjXSxbIiREIixiXV0uZm9yRWFjaCgoZnVuY3Rpb24oUyl7a1tTWzFdXT1mdW5jdGlvbihJKXtyZXR1cm4gdGhpcy4kZyhJLFNbMF0sU1sxXSl9fSkpLCQuZXh0ZW5kPWZ1bmN0aW9uKFMsSSl7cmV0dXJuIFMuJGl8fChTKEksSCwkKSxTLiRpPSEwKSwkfSwkLmxvY2FsZT1PLCQuaXNEYXlqcz1fLCQudW5peD1mdW5jdGlvbihTKXtyZXR1cm4gJCgxZTMqUyl9LCQuZW49Tlt6XSwkLkxzPU4sJC5wPXt9LCR9KSl9KTt2YXIgSGZ0PXBsKChpaGUscmhlKT0+eyhmdW5jdGlvbihzLGUpe3R5cGVvZiBpaGU9PSJvYmplY3QiJiZ0eXBlb2YgcmhlPCJ1Ij9yaGUuZXhwb3J0cz1lKCk6dHlwZW9mIGRlZmluZT09ImZ1bmN0aW9uIiYmZGVmaW5lLmFtZD9kZWZpbmUoZSk6KHM9dHlwZW9mIGdsb2JhbFRoaXM8InUiP2dsb2JhbFRoaXM6c3x8c2VsZikuZGF5anNfcGx1Z2luX2lzVG9kYXk9ZSgpfSkoaWhlLChmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtyZXR1cm4gZnVuY3Rpb24ocyxlLHQpe2UucHJvdG90eXBlLmlzVG9kYXk9ZnVuY3Rpb24oKXt2YXIgYT0iWVlZWS1NTS1ERCIscj10KCk7cmV0dXJuIHRoaXMuZm9ybWF0KGEpPT09ci5mb3JtYXQoYSl9fX0pKX0pO2Z1bmN0aW9uIEJFYShzKXtyZXR1cm57ZGF5czpNYXRoLnRydW5jKHMvODY0ZTUpLGhvdXJzOk1hdGgudHJ1bmMocy8zNmU1JTI0KSxtaW51dGVzOk1hdGgudHJ1bmMocy82ZTQlNjApLHNlY29uZHM6TWF0aC50cnVuYyhzLzFlMyU2MCksbWlsbGlzZWNvbmRzOk1hdGgudHJ1bmMocyUxZTMpLG1pY3Jvc2Vjb25kczpNYXRoLnRydW5jKHFmdChzKjFlMyklMWUzKSxuYW5vc2Vjb25kczpNYXRoLnRydW5jKHFmdChzKjFlNiklMWUzKX19ZnVuY3Rpb24gSEVhKHMpe3JldHVybntkYXlzOnMvODY0MDAwMDBuLGhvdXJzOnMvMzYwMDAwMG4lMjRuLG1pbnV0ZXM6cy82MDAwMG4lNjBuLHNlY29uZHM6cy8xMDAwbiU2MG4sbWlsbGlzZWNvbmRzOnMlMTAwMG4sbWljcm9zZWNvbmRzOjBuLG5hbm9zZWNvbmRzOjBufX1mdW5jdGlvbiBvaGUocyl7c3dpdGNoKHR5cGVvZiBzKXtjYXNlIm51bWJlciI6e2lmKE51bWJlci5pc0Zpbml0ZShzKSlyZXR1cm4gQkVhKHMpO2JyZWFrfWNhc2UiYmlnaW50IjpyZXR1cm4gSEVhKHMpfXRocm93IG5ldyBUeXBlRXJyb3IoIkV4cGVjdGVkIGEgZmluaXRlIG51bWJlciBvciBiaWdpbnQiKX12YXIgcWZ0LGpmdD1nKCgpPT57cWZ0PWkocz0+TnVtYmVyLmlzRmluaXRlKHMpP3M6MCwidG9aZXJvSWZJbmZpbml0eSIpO2koQkVhLCJwYXJzZU51bWJlciIpO2koSEVhLCJwYXJzZUJpZ2ludCIpO2kob2hlLCJwYXJzZU1pbGxpc2Vjb25kcyIpfSk7ZnVuY3Rpb24gV3kocyxlKXtsZXQgdD10eXBlb2Ygcz09ImJpZ2ludCI7aWYoIXQmJiFOdW1iZXIuaXNGaW5pdGUocykpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgYSBmaW5pdGUgbnVtYmVyIG9yIGJpZ2ludCIpO2U9ey4uLmV9O2xldCBhPXM8MD8iLSI6IiI7cz1zPDA/LXM6cyxlLmNvbG9uTm90YXRpb24mJihlLmNvbXBhY3Q9ITEsZS5mb3JtYXRTdWJNaWxsaXNlY29uZHM9ITEsZS5zZXBhcmF0ZU1pbGxpc2Vjb25kcz0hMSxlLnZlcmJvc2U9ITEpLGUuY29tcGFjdCYmKGUudW5pdENvdW50PTEsZS5zZWNvbmRzRGVjaW1hbERpZ2l0cz0wLGUubWlsbGlzZWNvbmRzRGVjaW1hbERpZ2l0cz0wKTtsZXQgcj1bXSxuPWkoKHUsYyk9PntsZXQgYj1NYXRoLmZsb29yKHUqMTAqKmMrVkVhKTtyZXR1cm4oTWF0aC5yb3VuZChiKS8xMCoqYykudG9GaXhlZChjKX0sImZsb29yRGVjaW1hbHMiKSxvPWkoKHUsYyxiLHYpPT57aWYoISgoci5sZW5ndGg9PT0wfHwhZS5jb2xvbk5vdGF0aW9uKSYmcUVhKHUpJiYhKGUuY29sb25Ob3RhdGlvbiYmYj09PSJtIikpKXtpZih2Pz89U3RyaW5nKHUpLGUuY29sb25Ob3RhdGlvbil7bGV0IHg9di5pbmNsdWRlcygiLiIpP3Yuc3BsaXQoIi4iKVswXS5sZW5ndGg6di5sZW5ndGgsbT1yLmxlbmd0aD4wPzI6MTt2PSIwIi5yZXBlYXQoTWF0aC5tYXgoMCxtLXgpKSt2fWVsc2Ugdis9ZS52ZXJib3NlPyIgIitqRWEoYyx1KTpiO3IucHVzaCh2KX19LCJhZGQiKSxsPW9oZShzKSxwPUJpZ0ludChsLmRheXMpO2lmKGUuaGlkZVllYXJBbmREYXlzP28oQmlnSW50KHApKjI0bitCaWdJbnQobC5ob3VycyksImhvdXIiLCJoIik6KGUuaGlkZVllYXI/byhwLCJkYXkiLCJkIik6KG8ocC8zNjVuLCJ5ZWFyIiwieSIpLG8ocCUzNjVuLCJkYXkiLCJkIikpLG8oTnVtYmVyKGwuaG91cnMpLCJob3VyIiwiaCIpKSxvKE51bWJlcihsLm1pbnV0ZXMpLCJtaW51dGUiLCJtIiksIWUuaGlkZVNlY29uZHMpaWYoZS5zZXBhcmF0ZU1pbGxpc2Vjb25kc3x8ZS5mb3JtYXRTdWJNaWxsaXNlY29uZHN8fCFlLmNvbG9uTm90YXRpb24mJnM8MWUzJiYhZS5zdWJTZWNvbmRzQXNEZWNpbWFscyl7bGV0IHU9TnVtYmVyKGwuc2Vjb25kcyksYz1OdW1iZXIobC5taWxsaXNlY29uZHMpLGI9TnVtYmVyKGwubWljcm9zZWNvbmRzKSx2PU51bWJlcihsLm5hbm9zZWNvbmRzKTtpZihvKHUsInNlY29uZCIsInMiKSxlLmZvcm1hdFN1Yk1pbGxpc2Vjb25kcylvKGMsIm1pbGxpc2Vjb25kIiwibXMiKSxvKGIsIm1pY3Jvc2Vjb25kIiwiXHhCNXMiKSxvKHYsIm5hbm9zZWNvbmQiLCJucyIpO2Vsc2V7bGV0IHg9YytiLzFlMyt2LzFlNixtPXR5cGVvZiBlLm1pbGxpc2Vjb25kc0RlY2ltYWxEaWdpdHM9PSJudW1iZXIiP2UubWlsbGlzZWNvbmRzRGVjaW1hbERpZ2l0czowLGY9eD49MT9NYXRoLnJvdW5kKHgpOk1hdGguY2VpbCh4KSx5PW0/eC50b0ZpeGVkKG0pOmY7byhOdW1iZXIucGFyc2VGbG9hdCh5KSwibWlsbGlzZWNvbmQiLCJtcyIseSl9fWVsc2V7bGV0IHU9KHQ/TnVtYmVyKHMlVUVhKTpzKS8xZTMlNjAsYz10eXBlb2YgZS5zZWNvbmRzRGVjaW1hbERpZ2l0cz09Im51bWJlciI/ZS5zZWNvbmRzRGVjaW1hbERpZ2l0czoxLGI9bih1LGMpLHY9ZS5rZWVwRGVjaW1hbHNPbldob2xlU2Vjb25kcz9iOmIucmVwbGFjZSgvXC4wKyQvLCIiKTtvKE51bWJlci5wYXJzZUZsb2F0KHYpLCJzZWNvbmQiLCJzIix2KX1pZihyLmxlbmd0aD09PTApcmV0dXJuIGErIjAiKyhlLnZlcmJvc2U/IiBtaWxsaXNlY29uZHMiOiJtcyIpO2xldCBkPWUuY29sb25Ob3RhdGlvbj8iOiI6IiAiO3JldHVybiB0eXBlb2YgZS51bml0Q291bnQ9PSJudW1iZXIiJiYocj1yLnNsaWNlKDAsTWF0aC5tYXgoZS51bml0Q291bnQsMSkpKSxhK3Iuam9pbihkKX12YXIgcUVhLGpFYSxWRWEsVUVhLFZmdD1nKCgpPT57amZ0KCk7cUVhPWkocz0+cz09PTB8fHM9PT0wbiwiaXNaZXJvIiksakVhPWkoKHMsZSk9PmU9PT0xfHxlPT09MW4/czpgJHtzfXNgLCJwbHVyYWxpemUiKSxWRWE9MWUtNyxVRWE9MjRuKjYwbio2MG4qMTAwMG47aShXeSwicHJldHR5TWlsbGlzZWNvbmRzIil9KTt2YXIgczMsVWZ0LGtwPWcoKCk9Pnt1OSgpO2QwKCk7aW8oKTt0MHQoKTtGZnQoKTtzMz14bihCZnQoKSwxKSxVZnQ9eG4oSGZ0KCksMSk7VmZ0KCk7czMuZGVmYXVsdC5leHRlbmQoVWZ0LmRlZmF1bHQpfSk7dmFyIEd5LG5oZT1nKCgpPT57a3AoKTtsaGUoKTtHeT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJDcm9uSm9iIil9Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuc3RhdHVzPSJpbml0aWFsIix0aGlzLm5leHRFeGVjdXRpb25Vbml4PTAsdGhpcy5jcm9uRXhwcmVzc2lvbj10LHRoaXMuam9iRnVuY3Rpb249YSx0aGlzLmNyb25QYXJzZXI9bmV3IF95LkNyb24odCl9Y2hlY2tFeGVjdXRpb24oKXtpZih0aGlzLnN0YXR1cz09PSJzdG9wcGVkIilyZXR1cm4gdGhpcy5uZXh0RXhlY3V0aW9uVW5peDtpZih0aGlzLm5leHRFeGVjdXRpb25Vbml4PT09MCYmdGhpcy5nZXROZXh0RXhlY3V0aW9uVGltZSgpLERhdGUubm93KCk+dGhpcy5uZXh0RXhlY3V0aW9uVW5peCl7bGV0IGU9dGhpcy5qb2JGdW5jdGlvbih0aGlzLm5leHRFeGVjdXRpb25Vbml4KTtlIGluc3RhbmNlb2YgUHJvbWlzZSYmZS5jYXRjaCh0PT5jb25zb2xlLmxvZyh0KSksdGhpcy5uZXh0RXhlY3V0aW9uVW5peD10aGlzLmdldE5leHRFeGVjdXRpb25UaW1lKCl9cmV0dXJuIHRoaXMubmV4dEV4ZWN1dGlvblVuaXh9Z2V0TmV4dEV4ZWN1dGlvblRpbWUoKXtyZXR1cm4gdGhpcy5uZXh0RXhlY3V0aW9uVW5peD1EYXRlLm5vdygpK3RoaXMuZ2V0VGltZVRvTmV4dEV4ZWN1dGlvbigpfWdldFRpbWVUb05leHRFeGVjdXRpb24oKXtyZXR1cm4gdGhpcy5jcm9uUGFyc2VyLm1zVG9OZXh0KCl9c3RhcnQoKXt0aGlzLnN0YXR1cz0ic3RhcnRlZCJ9c3RvcCgpe3RoaXMuc3RhdHVzPSJzdG9wcGVkIn19fSk7dmFyIGNoZSxsaGU9ZygoKT0+e2twKCk7bmhlKCk7Y2hlPWNsYXNze3N0YXRpY3tpKHRoaXMsIkNyb25NYW5hZ2VyIil9Y29uc3RydWN0b3IoKXt0aGlzLnN0YXR1cz0ic3RvcHBlZCIsdGhpcy5jcm9uam9icz1uZXcgRnMuT2JqZWN0TWFwLHRoaXMuY3ljbGVXYWtlRGVmZXJyZWQ9bnVsbH13YWtlQ3ljbGUoKXt0aGlzLmN5Y2xlV2FrZURlZmVycmVkJiZ0aGlzLmN5Y2xlV2FrZURlZmVycmVkLnN0YXR1cz09PSJwZW5kaW5nIiYmdGhpcy5jeWNsZVdha2VEZWZlcnJlZC5yZXNvbHZlKCl9YWRkQ3JvbmpvYihlLHQpe2xldCBhPW5ldyBHeSh0aGlzLGUsdCk7cmV0dXJuIHRoaXMuY3JvbmpvYnMuYWRkKGEpLHRoaXMuc3RhdHVzPT09InN0YXJ0ZWQiJiYoYS5zdGFydCgpLHRoaXMud2FrZUN5Y2xlKCkpLGF9cmVtb3ZlQ3JvbmpvYihlKXtlLnN0b3AoKSx0aGlzLmNyb25qb2JzLnJlbW92ZShlKSx0aGlzLnN0YXR1cz09PSJzdGFydGVkIiYmdGhpcy53YWtlQ3ljbGUoKX1zdGFydCgpe2lmKHRoaXMuc3RhdHVzIT09InN0YXJ0ZWQiKXt0aGlzLnN0YXR1cz0ic3RhcnRlZCI7Zm9yKGxldCBlIG9mIHRoaXMuY3JvbmpvYnMuZ2V0QXJyYXkoKSllLnN0YXJ0KCk7dGhpcy5ydW5Dcm9uQ3ljbGUoKX19YXN5bmMgcnVuQ3JvbkN5Y2xlKCl7Zm9yKDt0aGlzLnN0YXR1cz09PSJzdGFydGVkIjspe3RoaXMuY3ljbGVXYWtlRGVmZXJyZWQ9bmV3IG10LkRlZmVycmVkO2xldCBlPTEvMDtmb3IobGV0IHQgb2YgdGhpcy5jcm9uam9icy5nZXRBcnJheSgpKXt0LmNoZWNrRXhlY3V0aW9uKCk7bGV0IGE9dC5nZXRUaW1lVG9OZXh0RXhlY3V0aW9uKCk7YTxlJiYoZT1hKX1pZihlPDEvMCYmZT4wKXRoaXMuZXhlY3V0aW9uVGltZW91dD1uZXcgWHQuVGltZW91dChlKSxhd2FpdCBQcm9taXNlLnJhY2UoW3RoaXMuZXhlY3V0aW9uVGltZW91dC5wcm9taXNlLHRoaXMuY3ljbGVXYWtlRGVmZXJyZWQucHJvbWlzZV0pLHRoaXMuZXhlY3V0aW9uVGltZW91dC5jYW5jZWwoKTtlbHNle2lmKGU8PTApY29udGludWU7YXdhaXQgdGhpcy5jeWNsZVdha2VEZWZlcnJlZC5wcm9taXNlfX10aGlzLmN5Y2xlV2FrZURlZmVycmVkPW51bGx9c3RvcCgpe3RoaXMuc3RhdHVzPT09InN0YXJ0ZWQiJiYodGhpcy5zdGF0dXM9InN0b3BwZWQiLHRoaXMuZXhlY3V0aW9uVGltZW91dCYmdGhpcy5leGVjdXRpb25UaW1lb3V0LmNhbmNlbCgpLHRoaXMud2FrZUN5Y2xlKCkpO2ZvcihsZXQgZSBvZiB0aGlzLmNyb25qb2JzLmdldEFycmF5KCkpZS5zdG9wKCl9fX0pO3ZhciBTcCxkaGUsV0VhLEdFYSx1aGU9ZygoKT0+e2twKCk7U3A9e3llYXJzOmkoKHM9MSk9PnMqMzE1NGU3LCJ5ZWFycyIpLG1vbnRoczppKChzPTEpPT5zKjI2MjhlNiwibW9udGhzIiksd2Vla3M6aSgocz0xKT0+cyo2MDQ4ZTUsIndlZWtzIiksZGF5czppKChzPTEpPT5zKjg2NGU1LCJkYXlzIiksaG91cnM6aSgocz0xKT0+cyozNmU1LCJob3VycyIpLG1pbnV0ZXM6aSgocz0xKT0+cyo2ZTQsIm1pbnV0ZXMiKSxzZWNvbmRzOmkoKHM9MSk9PnMqMWUzLCJzZWNvbmRzIil9LGRoZT1pKHM9PntsZXQgZT0wLHQ9aShhPT57ZT1lK2F9LCJhZGRNaWxsaVNlY29uZHMiKTtyZXR1cm4gcy55ZWFycyYmdChTcC55ZWFycyhzLnllYXJzKSkscy5tb250aHMmJnQoU3AubW9udGhzKHMubW9udGhzKSkscy53ZWVrcyYmdChTcC53ZWVrcyhzLndlZWtzKSkscy5kYXlzJiZ0KFNwLmRheXMocy5kYXlzKSkscy5ob3VycyYmdChTcC5ob3VycyhzLmhvdXJzKSkscy5taW51dGVzJiZ0KFNwLm1pbnV0ZXMocy5taW51dGVzKSkscy5zZWNvbmRzJiZ0KFNwLnNlY29uZHMocy5zZWNvbmRzKSksZX0sImdldE1pbGxpU2Vjb25kc0Zyb21Vbml0cyIpLFdFYT1pKHM9Pld5KHMpLCJnZXRNaWxsaVNlY29uZHNBc0h1bWFuUmVhZGFibGVTdHJpbmciKSxHRWE9aShzPT5VeS5mb3JtYXREaXN0YW5jZVRvTm93KG5ldyBEYXRlKHMpKSwiZ2V0TWlsbGlTZWNvbmRzQXNIdW1hblJlYWRhYmxlQWdvVGltZSIpfSk7dmFyIHBoZSxXZnQ9ZygoKT0+e2twKCk7dWhlKCk7cGhlPWNsYXNzIHMgZXh0ZW5kcyBEYXRle3N0YXRpY3tpKHRoaXMsIkV4dGVuZGVkRGF0ZSIpfXN0YXRpYyBmcm9tTWlsbGlzKGUpe3JldHVybiBuZXcgcyhlKX1zdGF0aWMgZnJvbURhdGUoZSl7cmV0dXJuIG5ldyBzKGUuZ2V0VGltZSgpKX1zdGF0aWMgZnJvbUV1cm9wZWFuRGF0ZShlKXtsZXQgdD0vKC4qKVwuKC4qKVwuKC4qKS8uZXhlYyhlKSxyPW5ldyBEYXRlKHBhcnNlRmxvYXQodFszXSkscGFyc2VGbG9hdCh0WzJdKS0xLHBhcnNlRmxvYXQodFsxXSkpLmdldFRpbWUoKTtyZXR1cm4gbmV3IHMocil9c3RhdGljIGZyb21IeXBoZWREYXRlKGUpe2xldCB0PW5ldyBEYXRlKGUpLmdldFRpbWUoKTtyZXR1cm4gbmV3IHModCl9c3RhdGljIGZyb21FdXJvcGVhbkRhdGVBbmRUaW1lKGUsdD0iMTI6MDA6MDAiLGE9IkV1cm9wZS9CZXJsaW4iKXtsZXQgcj0vKC4qKVwuKC4qKVwuKC4qKS8uZXhlYyhlKSxuPWkoZD0+YDAke2R9YC5zbGljZSgtMiksInNsaWNlRGF0ZSIpLG89YCR7clszXX0tJHtuKHJbMl0pfS0ke24oclsxXSl9VCR7dH1gLHA9czMuZGVmYXVsdChvKS50b0RhdGUoKS5nZXRUaW1lKCk7cmV0dXJuIG5ldyBzKHApfWNvbnN0cnVjdG9yKGU9RGF0ZS5ub3coKSl7c3VwZXIoZSl9ZXhwb3J0VG9FdXJvcGVhbkRhdGUoKXtsZXQgZT10aGlzLmV4cG9ydFRvVW5pdHMoKTtyZXR1cm5gJHtlLmRheVN0cmluZ30uJHtlLm1vbnRoU3RyaW5nfS4ke2UueWVhclN0cmluZ31gfWV4cG9ydFRvSHlwaGVkU29ydGFibGVEYXRlKCl7bGV0IGU9dGhpcy5leHBvcnRUb1VuaXRzKCk7cmV0dXJuYCR7ZS55ZWFyU3RyaW5nfS0ke2UubW9udGhTdHJpbmd9LSR7ZS5kYXlTdHJpbmd9YH1leHBvcnRUb1VuaXRzKCl7bGV0IGU9WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLHQ9WyJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSIsIlN1bmRheSJdO3JldHVybnt5ZWFyOnRoaXMuZ2V0RnVsbFllYXIoKSx5ZWFyU3RyaW5nOmAke3RoaXMuZ2V0RnVsbFllYXIoKX1gLG1vbnRoOnRoaXMuZ2V0TW9udGgoKSsxLG1vbnRoU3RyaW5nOigiMCIrKHRoaXMuZ2V0TW9udGgoKSsxKSkuc2xpY2UoLTIpLG1vbnRoTmFtZTplW3RoaXMuZ2V0TW9udGgoKV0sZGF5OnRoaXMuZ2V0RGF0ZSgpLGRheVN0cmluZzooIjAiK3RoaXMuZ2V0RGF0ZSgpKS5zbGljZSgtMiksZGF5T2ZUaGVXZWVrOnRoaXMuZ2V0RGF5KCksZGF5T2ZUaGVXZWVrTmFtZTp0W3RoaXMuZ2V0RGF5KCldfX1mb3JtYXQoZSl7cmV0dXJuIHMzLmRlZmF1bHQodGhpcy5nZXRUaW1lKCkpLmZvcm1hdChlKX1pc1RvZGF5KCl7cmV0dXJuIHMzLmRlZmF1bHQodGhpcy5nZXRUaW1lKCkpLmlzVG9kYXkoKX1sZXNzVGltZVBhc3NlZFRvTm93KGUpe2xldCB0PWRoZShlKTtyZXR1cm4gRGF0ZS5ub3coKS10aGlzLmdldFRpbWUoKTx0fW1vcmVUaW1lUGFzc2VkVG9Ob3coZSl7cmV0dXJuIXRoaXMubGVzc1RpbWVQYXNzZWRUb05vdyhlKX19fSk7dmFyIGhoZSxHZnQ9ZygoKT0+e2hoZT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJIcnRNZWFzdXJlbWVudCIpfWNvbnN0cnVjdG9yKCl7dGhpcy5uYW5vU2Vjb25kcz1udWxsLHRoaXMubWlsbGlTZWNvbmRzPW51bGwsdGhpcy5fbWlsbGlTdGFydD1udWxsLHRoaXMuX21pbGxpRGlmZj1udWxsLHRoaXMuX3N0YXJ0ZWQ9ITF9c3RhcnQoKXt0aGlzLl9zdGFydGVkPSEwLHRoaXMuX21pbGxpU3RhcnQ9RGF0ZS5ub3coKX1zdG9wKCl7aWYodGhpcy5fc3RhcnRlZD09PSExKXtjb25zb2xlLmxvZygiSGFzbid0IHN0YXJ0ZWQgeWV0Iik7cmV0dXJufXJldHVybiB0aGlzLl9taWxsaURpZmY9RGF0ZS5ub3coKS10aGlzLl9taWxsaVN0YXJ0LHRoaXMubmFub1NlY29uZHM9dGhpcy5fbWlsbGlEaWZmKjFlMyx0aGlzLm1pbGxpU2Vjb25kcz10aGlzLl9taWxsaURpZmYsdGhpc31yZXNldCgpe3RoaXMubmFub1NlY29uZHM9bnVsbCx0aGlzLm1pbGxpU2Vjb25kcz1udWxsLHRoaXMuX21pbGxpU3RhcnQ9bnVsbCx0aGlzLl9taWxsaURpZmY9bnVsbCx0aGlzLl9zdGFydGVkPSExfX19KTt2YXIgZmhlLEtmdD1nKCgpPT57a3AoKTtmaGU9Y2xhc3N7c3RhdGlje2kodGhpcywiSW50ZXJ2YWwiKX1jb25zdHJ1Y3RvcihlKXt0aGlzLnN0YXR1cz0iaW5pdGlhbCIsdGhpcy5zdGF0dXNBdXRob3JpemF0aW9uPW51bGwsdGhpcy5pbnRlcnZhbEpvYnM9W10sdGhpcy5pbnRlcnZhbE1pbGxpc2Vjb25kcz1lfXN0YXJ0KCl7dGhpcy5zdGF0dXM9InN0YXJ0ZWQiO2xldCBlPW5ldyBEYXRlO3RoaXMuc3RhdHVzQXV0aG9yaXphdGlvbj1lLGkoYXN5bmMoKT0+e2Zvcig7dGhpcy5zdGF0dXM9PT0ic3RhcnRlZCImJnRoaXMuc3RhdHVzQXV0aG9yaXphdGlvbj09PWU7KWF3YWl0IFh0LmRlbGF5Rm9yKHRoaXMuaW50ZXJ2YWxNaWxsaXNlY29uZHMpLHRoaXMuZXhlY3V0ZUludGVydmFsSm9icygpfSwicnVuSW50ZXJ2YWwiKSgpfXN0b3AoKXt0aGlzLnN0YXR1cz0ic3RvcHBlZCIsdGhpcy5zdGF0dXNBdXRob3JpemF0aW9uPW51bGx9YWRkSW50ZXJ2YWxKb2IoZSl7dGhpcy5pbnRlcnZhbEpvYnMucHVzaChlKX1leGVjdXRlSW50ZXJ2YWxKb2JzKCl7Zm9yKGxldCBlIG9mIHRoaXMuaW50ZXJ2YWxKb2JzKWUoKX19fSk7dmFyIHA5LG1oZT1nKCgpPT57a3AoKTtwOT1jbGFzcyBze3N0YXRpY3tpKHRoaXMsIlRpbWVTdGFtcCIpfXN0YXRpYyBmcm9tTWlsbGlTZWNvbmRzKGUpe3JldHVybiBuZXcgcyhlKX1zdGF0aWMgZnJvbVRpbWVTdGFtcChlKXtsZXQgdD1uZXcgcztyZXR1cm4gdC5jaGFuZ2U9dC5taWxsaVNlY29uZHMtZS5taWxsaVNlY29uZHMsdH1jb25zdHJ1Y3RvcihlKXt0aGlzLmNoYW5nZT1udWxsLGU/dHlwZW9mIGU9PSJudW1iZXIiJiYodGhpcy5kYXRlPW5ldyBEYXRlKGUpKTp0aGlzLmRhdGU9bmV3IERhdGUsdGhpcy5taWxsaVNlY29uZHM9dGhpcy5kYXRlLmdldFRpbWUoKSx0aGlzLmVwb2NodGltZT1NYXRoLmZsb29yKHRoaXMubWlsbGlTZWNvbmRzLzFlMyl9aXNPbGRlclRoYW5PdGhlclRpbWVTdGFtcChlLHQ9MCl7cmV0dXJuIHRoaXMubWlsbGlTZWNvbmRzPGUubWlsbGlTZWNvbmRzLXR9aXNPbGRlclRoYW4oZSx0PTApe3JldHVybiB0aGlzLm1pbGxpU2Vjb25kcyt0PGUubWlsbGlTZWNvbmRzfWlzWW91bmdlclRoYW5PdGhlclRpbWVTdGFtcChlLHQ9MCl7cmV0dXJuIHRoaXMubWlsbGlTZWNvbmRzPmUubWlsbGlTZWNvbmRzK3R9aXNZb3VuZ2VyVGhhbk1pbGxpU2Vjb25kcyhlKXtsZXQgYT1uZXcgcygpLmVwb2NodGltZS1lLHI9bmV3IHMoYSk7cmV0dXJuIHRoaXMuaXNZb3VuZ2VyVGhhbk90aGVyVGltZVN0YW1wKHIpfX19KTt2YXIgZ2hlLFlmdD1nKCgpPT57a3AoKTttaGUoKTtnaGU9Y2xhc3N7c3RhdGlje2kodGhpcywiVGltZXIiKX1nZXQgdGltZUxlZnQoKXtyZXR1cm4gdGhpcy50aW1lSW5NaWxsaXNlY29uZHMtdGhpcy5wYXVzZWRBdC5jaGFuZ2V9Y29uc3RydWN0b3IoZSl7dGhpcy5zdGF0ZT0iaW5pdGlhdGVkIix0aGlzLmNvbXBsZXRlZERlZmVycmVkPW10LmRlZmVyKCksdGhpcy50aW1lSW5NaWxsaXNlY29uZHM9ZSx0aGlzLmNvbXBsZXRlZD10aGlzLmNvbXBsZXRlZERlZmVycmVkLnByb21pc2V9c3RhcnQoKXtpZighdGhpcy5zdGFydGVkQXQpdGhpcy5jdXJyZW50VGltZW91dD1zZXRUaW1lb3V0KCgpPT57dGhpcy5jb21wbGV0ZWREZWZlcnJlZC5yZXNvbHZlKCl9LHRoaXMudGltZUluTWlsbGlzZWNvbmRzKSx0aGlzLnN0YXJ0ZWRBdD1uZXcgcDk7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoInRpbWVyIGhhcyBiZWVuIHN0YXJ0ZWQgYmVmb3JlLiBQbGVhc2UgdXNlIHJlc3VtZSBpbnN0ZWFkIil9cGF1c2UoKXt0aGlzLnN0YXJ0ZWRBdCYmKGNsZWFyVGltZW91dCh0aGlzLmN1cnJlbnRUaW1lb3V0KSx0aGlzLmN1cnJlbnRUaW1lb3V0PW51bGwsdGhpcy5wYXVzZWRBdD1wOS5mcm9tVGltZVN0YW1wKHRoaXMuc3RhcnRlZEF0KSl9cmVzdW1lKCl7aWYodGhpcy5zdGFydGVkQXQpdGhpcy5jdXJyZW50VGltZW91dD1zZXRUaW1lb3V0KCgpPT57dGhpcy5jb21wbGV0ZWREZWZlcnJlZC5yZXNvbHZlKCl9LHRoaXMudGltZUxlZnQpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJ0aW1lciBoYXMgTk9UIGJlZW4gc3RhcnRlZCBiZWZvcmUuIFBsZWFzZSB1c2UgLnN0YXJ0KCkgaW5zdGVhZCIpfXJlc2V0KCl7dGhpcy5wYXVzZSgpLHRoaXMuc3RhcnRlZEF0PW51bGwsdGhpcy5wYXVzZWRBdD1udWxsfX19KTt2YXIgaTM9e307eXQoaTMse0Nyb25Kb2I6KCk9Pkd5LENyb25NYW5hZ2VyOigpPT5jaGUsRXh0ZW5kZWREYXRlOigpPT5waGUsSHJ0TWVhc3VyZW1lbnQ6KCk9PmhoZSxJbnRlcnZhbDooKT0+ZmhlLFRpbWVTdGFtcDooKT0+cDksVGltZXI6KCk9PmdoZSxnZXRNaWxsaVNlY29uZHNBc0h1bWFuUmVhZGFibGVBZ29UaW1lOigpPT5HRWEsZ2V0TWlsbGlTZWNvbmRzQXNIdW1hblJlYWRhYmxlU3RyaW5nOigpPT5XRWEsZ2V0TWlsbGlTZWNvbmRzRnJvbVVuaXRzOigpPT5kaGUsdW5pdHM6KCk9PlNwfSk7dmFyIFpmdD1nKCgpPT57bGhlKCk7bmhlKCk7V2Z0KCk7R2Z0KCk7S2Z0KCk7WWZ0KCk7bWhlKCk7dWhlKCl9KTt2YXIgUWZ0PXBsKChUVXMsWGZ0KT0+eyJ1c2Ugc3RyaWN0IjtYZnQuZXhwb3J0cz1jbGFzc3tzdGF0aWN7aSh0aGlzLCJTeW1ib2xUcmVlTm9kZSIpfWNvbnN0cnVjdG9yKCl7dGhpcy5wYXJlbnQ9bnVsbCx0aGlzLnByZXZpb3VzU2libGluZz1udWxsLHRoaXMubmV4dFNpYmxpbmc9bnVsbCx0aGlzLmZpcnN0Q2hpbGQ9bnVsbCx0aGlzLmxhc3RDaGlsZD1udWxsLHRoaXMuY2hpbGRyZW5WZXJzaW9uPTAsdGhpcy5jaGlsZEluZGV4Q2FjaGVkVXBUbz1udWxsLHRoaXMuY2FjaGVkSW5kZXg9LTEsdGhpcy5jYWNoZWRJbmRleFZlcnNpb249TmFOfWdldCBpc0F0dGFjaGVkKCl7cmV0dXJuISEodGhpcy5wYXJlbnR8fHRoaXMucHJldmlvdXNTaWJsaW5nfHx0aGlzLm5leHRTaWJsaW5nKX1nZXQgaGFzQ2hpbGRyZW4oKXtyZXR1cm4hIXRoaXMuZmlyc3RDaGlsZH1jaGlsZHJlbkNoYW5nZWQoKXt0aGlzLmNoaWxkcmVuVmVyc2lvbj10aGlzLmNoaWxkcmVuVmVyc2lvbisxJjQyOTQ5NjcyOTUsdGhpcy5jaGlsZEluZGV4Q2FjaGVkVXBUbz1udWxsfWdldENhY2hlZEluZGV4KGUpe3JldHVybiB0aGlzLmNhY2hlZEluZGV4VmVyc2lvbiE9PWUuY2hpbGRyZW5WZXJzaW9uPyh0aGlzLmNhY2hlZEluZGV4VmVyc2lvbj1OYU4sLTEpOnRoaXMuY2FjaGVkSW5kZXh9c2V0Q2FjaGVkSW5kZXgoZSx0KXt0aGlzLmNhY2hlZEluZGV4VmVyc2lvbj1lLmNoaWxkcmVuVmVyc2lvbix0aGlzLmNhY2hlZEluZGV4PXR9fX0pO3ZhciBlbXQ9cGwoKERVcyxKZnQpPT57InVzZSBzdHJpY3QiO0pmdC5leHBvcnRzPU9iamVjdC5mcmVlemUoe0RJU0NPTk5FQ1RFRDoxLFBSRUNFRElORzoyLEZPTExPV0lORzo0LENPTlRBSU5TOjgsQ09OVEFJTkVEX0JZOjE2fSl9KTt2YXIgcm10PXBsKChMVXMsaW10KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgdG10PVN5bWJvbCgpLGFtdD1TeW1ib2woKSxfcD1TeW1ib2woKSxzbXQ9U3ltYm9sKCkseDE9Y2xhc3N7c3RhdGlje2kodGhpcywiVHJlZUl0ZXJhdG9yIil9Y29uc3RydWN0b3IoZSx0LGEscil7dGhpc1t0bXRdPWUsdGhpc1thbXRdPXQsdGhpc1tfcF09YSx0aGlzW3NtdF09cn1uZXh0KCl7bGV0IGU9dGhpc1t0bXRdLHQ9dGhpc1tzbXRdLGE9dGhpc1thbXRdO2lmKCF0aGlzW19wXSlyZXR1cm57ZG9uZTohMCx2YWx1ZTphfTtsZXQgcj10aGlzW19wXTtyZXR1cm4gdD09PTE/dGhpc1tfcF09ZS5fbm9kZShyKS5wcmV2aW91c1NpYmxpbmc6dD09PTI/dGhpc1tfcF09ZS5fbm9kZShyKS5uZXh0U2libGluZzp0PT09Mz90aGlzW19wXT1lLl9ub2RlKHIpLnBhcmVudDp0PT09ND90aGlzW19wXT1lLnByZWNlZGluZyhyLHtyb290OmF9KTp0aGlzW19wXT1lLmZvbGxvd2luZyhyLHtyb290OmF9KSx7ZG9uZTohMSx2YWx1ZTpyfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh4MS5wcm90b3R5cGUsU3ltYm9sLml0ZXJhdG9yLHt2YWx1ZTppKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LCJ2YWx1ZSIpLHdyaXRhYmxlOiExfSkseDEuUFJFVj0xLHgxLk5FWFQ9Mix4MS5QQVJFTlQ9Myx4MS5QUkVDRURJTkc9NCx4MS5GT0xMT1dJTkc9NSxPYmplY3QuZnJlZXplKHgxKSxPYmplY3QuZnJlZXplKHgxLnByb3RvdHlwZSksaW10LmV4cG9ydHM9eDF9KTt2YXIgbm10PXBsKChQVXMsb210KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgWUVhPVFmdCgpLE1wPWVtdCgpLF9jPXJtdCgpO2Z1bmN0aW9uIGJoZSgpe3JldHVybiEwfWkoYmhlLCJyZXR1cm5UcnVlIik7ZnVuY3Rpb24gaDkocyxlKXtyZXR1cm4gc1tzLmxlbmd0aC0xLWVdfWkoaDksInJldmVyc2VBcnJheUluZGV4Iik7dmFyIFBhZT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJTeW1ib2xUcmVlIil9Y29uc3RydWN0b3IoZSl7dGhpcy5zeW1ib2w9U3ltYm9sKGV8fCJTeW1ib2xUcmVlIGRhdGEiKX1pbml0aWFsaXplKGUpe3JldHVybiB0aGlzLl9ub2RlKGUpLGV9X25vZGUoZSl7aWYoIWUpcmV0dXJuIG51bGw7bGV0IHQ9ZVt0aGlzLnN5bWJvbF07cmV0dXJuIHR8fChlW3RoaXMuc3ltYm9sXT1uZXcgWUVhKX1oYXNDaGlsZHJlbihlKXtyZXR1cm4gdGhpcy5fbm9kZShlKS5oYXNDaGlsZHJlbn1maXJzdENoaWxkKGUpe3JldHVybiB0aGlzLl9ub2RlKGUpLmZpcnN0Q2hpbGR9bGFzdENoaWxkKGUpe3JldHVybiB0aGlzLl9ub2RlKGUpLmxhc3RDaGlsZH1wcmV2aW91c1NpYmxpbmcoZSl7cmV0dXJuIHRoaXMuX25vZGUoZSkucHJldmlvdXNTaWJsaW5nfW5leHRTaWJsaW5nKGUpe3JldHVybiB0aGlzLl9ub2RlKGUpLm5leHRTaWJsaW5nfXBhcmVudChlKXtyZXR1cm4gdGhpcy5fbm9kZShlKS5wYXJlbnR9bGFzdEluY2x1c2l2ZURlc2NlbmRhbnQoZSl7bGV0IHQsYT1lO2Zvcig7dD10aGlzLl9ub2RlKGEpLmxhc3RDaGlsZDspYT10O3JldHVybiBhfXByZWNlZGluZyhlLHQpe2xldCBhPXQmJnQucm9vdDtpZihlPT09YSlyZXR1cm4gbnVsbDtsZXQgcj10aGlzLl9ub2RlKGUpLnByZXZpb3VzU2libGluZztyZXR1cm4gcj90aGlzLmxhc3RJbmNsdXNpdmVEZXNjZW5kYW50KHIpOnRoaXMuX25vZGUoZSkucGFyZW50fWZvbGxvd2luZyhlLHQpe2xldCBhPXQmJnQucm9vdCxuPSEodCYmdC5za2lwQ2hpbGRyZW4pJiZ0aGlzLl9ub2RlKGUpLmZpcnN0Q2hpbGQ7aWYobilyZXR1cm4gbjtsZXQgbz1lO2Rve2lmKG89PT1hKXJldHVybiBudWxsO2xldCBsPXRoaXMuX25vZGUobykubmV4dFNpYmxpbmc7aWYobClyZXR1cm4gbDtvPXRoaXMuX25vZGUobykucGFyZW50fXdoaWxlKG8pO3JldHVybiBudWxsfWNoaWxkcmVuVG9BcnJheShlLHQpe2xldCBhPXQmJnQuYXJyYXl8fFtdLHI9dCYmdC5maWx0ZXJ8fGJoZSxuPXQmJnQudGhpc0FyZ3x8dm9pZCAwLG89dGhpcy5fbm9kZShlKSxsPW8uZmlyc3RDaGlsZCxwPTA7Zm9yKDtsOyl7bGV0IGQ9dGhpcy5fbm9kZShsKTtkLnNldENhY2hlZEluZGV4KG8scCksci5jYWxsKG4sbCkmJmEucHVzaChsKSxsPWQubmV4dFNpYmxpbmcsKytwfXJldHVybiBhfWFuY2VzdG9yc1RvQXJyYXkoZSx0KXtsZXQgYT10JiZ0LmFycmF5fHxbXSxyPXQmJnQuZmlsdGVyfHxiaGUsbj10JiZ0LnRoaXNBcmd8fHZvaWQgMCxvPWU7Zm9yKDtvOylyLmNhbGwobixvKSYmYS5wdXNoKG8pLG89dGhpcy5fbm9kZShvKS5wYXJlbnQ7cmV0dXJuIGF9dHJlZVRvQXJyYXkoZSx0KXtsZXQgYT10JiZ0LmFycmF5fHxbXSxyPXQmJnQuZmlsdGVyfHxiaGUsbj10JiZ0LnRoaXNBcmd8fHZvaWQgMCxvPWU7Zm9yKDtvOylyLmNhbGwobixvKSYmYS5wdXNoKG8pLG89dGhpcy5mb2xsb3dpbmcobyx7cm9vdDplfSk7cmV0dXJuIGF9Y2hpbGRyZW5JdGVyYXRvcihlLHQpe2xldCBhPXQmJnQucmV2ZXJzZSxyPXRoaXMuX25vZGUoZSk7cmV0dXJuIG5ldyBfYyh0aGlzLGUsYT9yLmxhc3RDaGlsZDpyLmZpcnN0Q2hpbGQsYT9fYy5QUkVWOl9jLk5FWFQpfXByZXZpb3VzU2libGluZ3NJdGVyYXRvcihlKXtyZXR1cm4gbmV3IF9jKHRoaXMsZSx0aGlzLl9ub2RlKGUpLnByZXZpb3VzU2libGluZyxfYy5QUkVWKX1uZXh0U2libGluZ3NJdGVyYXRvcihlKXtyZXR1cm4gbmV3IF9jKHRoaXMsZSx0aGlzLl9ub2RlKGUpLm5leHRTaWJsaW5nLF9jLk5FWFQpfWFuY2VzdG9yc0l0ZXJhdG9yKGUpe3JldHVybiBuZXcgX2ModGhpcyxlLGUsX2MuUEFSRU5UKX10cmVlSXRlcmF0b3IoZSx0KXtsZXQgYT10JiZ0LnJldmVyc2U7cmV0dXJuIG5ldyBfYyh0aGlzLGUsYT90aGlzLmxhc3RJbmNsdXNpdmVEZXNjZW5kYW50KGUpOmUsYT9fYy5QUkVDRURJTkc6X2MuRk9MTE9XSU5HKX1pbmRleChlKXtsZXQgdD10aGlzLl9ub2RlKGUpLGE9dGhpcy5fbm9kZSh0LnBhcmVudCk7aWYoIWEpcmV0dXJuLTE7bGV0IHI9dC5nZXRDYWNoZWRJbmRleChhKTtpZihyPj0wKXJldHVybiByO3I9MDtsZXQgbj1hLmZpcnN0Q2hpbGQ7aWYoYS5jaGlsZEluZGV4Q2FjaGVkVXBUbyl7bGV0IG89dGhpcy5fbm9kZShhLmNoaWxkSW5kZXhDYWNoZWRVcFRvKTtuPW8ubmV4dFNpYmxpbmcscj1vLmdldENhY2hlZEluZGV4KGEpKzF9Zm9yKDtuOyl7bGV0IG89dGhpcy5fbm9kZShuKTtpZihvLnNldENhY2hlZEluZGV4KGEsciksbj09PWUpYnJlYWs7KytyLG49by5uZXh0U2libGluZ31yZXR1cm4gYS5jaGlsZEluZGV4Q2FjaGVkVXBUbz1lLHJ9Y2hpbGRyZW5Db3VudChlKXtsZXQgdD10aGlzLl9ub2RlKGUpO3JldHVybiB0Lmxhc3RDaGlsZD90aGlzLmluZGV4KHQubGFzdENoaWxkKSsxOjB9Y29tcGFyZVRyZWVQb3NpdGlvbihlLHQpe2lmKGU9PT10KXJldHVybiAwO2xldCBhPVtdO3tsZXQgdT1lO2Zvcig7dTspe2lmKHU9PT10KXJldHVybiBNcC5DT05UQUlOU3xNcC5QUkVDRURJTkc7YS5wdXNoKHUpLHU9dGhpcy5wYXJlbnQodSl9fWxldCByPVtdO3tsZXQgdT10O2Zvcig7dTspe2lmKHU9PT1lKXJldHVybiBNcC5DT05UQUlORURfQll8TXAuRk9MTE9XSU5HO3IucHVzaCh1KSx1PXRoaXMucGFyZW50KHUpfX1sZXQgbj1oOShhLDApO2lmKCFufHxuIT09aDkociwwKSlyZXR1cm4gTXAuRElTQ09OTkVDVEVEO2xldCBvPTAsbD1NYXRoLm1pbihhLmxlbmd0aCxyLmxlbmd0aCk7Zm9yKGxldCB1PTA7dTxsOysrdSl7bGV0IGM9aDkoYSx1KSxiPWg5KHIsdSk7aWYoYyE9PWIpYnJlYWs7bz11fWxldCBwPXRoaXMuaW5kZXgoaDkoYSxvKzEpKTtyZXR1cm4gdGhpcy5pbmRleChoOShyLG8rMSkpPHA/TXAuUFJFQ0VESU5HOk1wLkZPTExPV0lOR31yZW1vdmUoZSl7bGV0IHQ9dGhpcy5fbm9kZShlKSxhPXRoaXMuX25vZGUodC5wYXJlbnQpLHI9dGhpcy5fbm9kZSh0LnByZXZpb3VzU2libGluZyksbj10aGlzLl9ub2RlKHQubmV4dFNpYmxpbmcpO3JldHVybiBhJiYoYS5maXJzdENoaWxkPT09ZSYmKGEuZmlyc3RDaGlsZD10Lm5leHRTaWJsaW5nKSxhLmxhc3RDaGlsZD09PWUmJihhLmxhc3RDaGlsZD10LnByZXZpb3VzU2libGluZykpLHImJihyLm5leHRTaWJsaW5nPXQubmV4dFNpYmxpbmcpLG4mJihuLnByZXZpb3VzU2libGluZz10LnByZXZpb3VzU2libGluZyksdC5wYXJlbnQ9bnVsbCx0LnByZXZpb3VzU2libGluZz1udWxsLHQubmV4dFNpYmxpbmc9bnVsbCx0LmNhY2hlZEluZGV4PS0xLHQuY2FjaGVkSW5kZXhWZXJzaW9uPU5hTixhJiZhLmNoaWxkcmVuQ2hhbmdlZCgpLGV9aW5zZXJ0QmVmb3JlKGUsdCl7bGV0IGE9dGhpcy5fbm9kZShlKSxyPXRoaXMuX25vZGUoYS5wcmV2aW91c1NpYmxpbmcpLG49dGhpcy5fbm9kZSh0KSxvPXRoaXMuX25vZGUoYS5wYXJlbnQpO2lmKG4uaXNBdHRhY2hlZCl0aHJvdyBFcnJvcigiR2l2ZW4gb2JqZWN0IGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGlzIFN5bWJvbFRyZWUsIHJlbW92ZSBpdCBmaXJzdCIpO3JldHVybiBuLnBhcmVudD1hLnBhcmVudCxuLnByZXZpb3VzU2libGluZz1hLnByZXZpb3VzU2libGluZyxuLm5leHRTaWJsaW5nPWUsYS5wcmV2aW91c1NpYmxpbmc9dCxyJiYoci5uZXh0U2libGluZz10KSxvJiZvLmZpcnN0Q2hpbGQ9PT1lJiYoby5maXJzdENoaWxkPXQpLG8mJm8uY2hpbGRyZW5DaGFuZ2VkKCksdH1pbnNlcnRBZnRlcihlLHQpe2xldCBhPXRoaXMuX25vZGUoZSkscj10aGlzLl9ub2RlKGEubmV4dFNpYmxpbmcpLG49dGhpcy5fbm9kZSh0KSxvPXRoaXMuX25vZGUoYS5wYXJlbnQpO2lmKG4uaXNBdHRhY2hlZCl0aHJvdyBFcnJvcigiR2l2ZW4gb2JqZWN0IGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGlzIFN5bWJvbFRyZWUsIHJlbW92ZSBpdCBmaXJzdCIpO3JldHVybiBuLnBhcmVudD1hLnBhcmVudCxuLnByZXZpb3VzU2libGluZz1lLG4ubmV4dFNpYmxpbmc9YS5uZXh0U2libGluZyxhLm5leHRTaWJsaW5nPXQsciYmKHIucHJldmlvdXNTaWJsaW5nPXQpLG8mJm8ubGFzdENoaWxkPT09ZSYmKG8ubGFzdENoaWxkPXQpLG8mJm8uY2hpbGRyZW5DaGFuZ2VkKCksdH1wcmVwZW5kQ2hpbGQoZSx0KXtsZXQgYT10aGlzLl9ub2RlKGUpLHI9dGhpcy5fbm9kZSh0KTtpZihyLmlzQXR0YWNoZWQpdGhyb3cgRXJyb3IoIkdpdmVuIG9iamVjdCBpcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhpcyBTeW1ib2xUcmVlLCByZW1vdmUgaXQgZmlyc3QiKTtyZXR1cm4gYS5oYXNDaGlsZHJlbj90aGlzLmluc2VydEJlZm9yZShhLmZpcnN0Q2hpbGQsdCk6KHIucGFyZW50PWUsYS5maXJzdENoaWxkPXQsYS5sYXN0Q2hpbGQ9dCxhLmNoaWxkcmVuQ2hhbmdlZCgpKSx0fWFwcGVuZENoaWxkKGUsdCl7bGV0IGE9dGhpcy5fbm9kZShlKSxyPXRoaXMuX25vZGUodCk7aWYoci5pc0F0dGFjaGVkKXRocm93IEVycm9yKCJHaXZlbiBvYmplY3QgaXMgYWxyZWFkeSBwcmVzZW50IGluIHRoaXMgU3ltYm9sVHJlZSwgcmVtb3ZlIGl0IGZpcnN0Iik7cmV0dXJuIGEuaGFzQ2hpbGRyZW4/dGhpcy5pbnNlcnRBZnRlcihhLmxhc3RDaGlsZCx0KTooci5wYXJlbnQ9ZSxhLmZpcnN0Q2hpbGQ9dCxhLmxhc3RDaGlsZD10LGEuY2hpbGRyZW5DaGFuZ2VkKCkpLHR9fTtvbXQuZXhwb3J0cz1QYWUsUGFlLlRyZWVQb3NpdGlvbj1NcH0pO3ZhciBJYWUsTWM9ZygoKT0+e2QwKCk7S2R0KCk7aW8oKTtaMigpO1pmdCgpO0lhZT14bihubXQoKSwxKX0pO3ZhciB2aGUsbG10PWcoKCk9PntNYygpO3ZoZT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJBc3luY0V4ZWN1dGlvblN0YWNrIil9ZXhlY3V0aW9uU2xvdHM9W107aXNQcm9jZXNzaW5nPSExO25vbkV4Y2x1c2l2ZU1heENvbmN1cnJlbmN5PTEvMDtub25FeGNsdXNpdmVDdXJyZW50Q291bnQ9MDtub25FeGNsdXNpdmVQZW5kaW5nUXVldWU9W107YXN5bmMgZ2V0RXhjbHVzaXZlRXhlY3V0aW9uU2xvdChlLHQpe2xldCBhPW10LmRlZmVyKCkscj17ZnVuY1RvRXhlY3V0ZTplLGV4ZWN1dGlvbkRlZmVycmVkOmEsdGltZW91dDp0LG1vZGU6ImV4Y2x1c2l2ZSJ9O3JldHVybiB0aGlzLmV4ZWN1dGlvblNsb3RzLnB1c2gociksdGhpcy5wcm9jZXNzRXhlY3V0aW9uU2xvdHMoKSxhLnByb21pc2V9YXN5bmMgZ2V0Tm9uRXhjbHVzaXZlRXhlY3V0aW9uU2xvdChlLHQpe2xldCBhPW10LmRlZmVyKCkscj17ZnVuY1RvRXhlY3V0ZTplLGV4ZWN1dGlvbkRlZmVycmVkOmEsdGltZW91dDp0LG1vZGU6Im5vbmV4Y2x1c2l2ZSJ9O3JldHVybiB0aGlzLmV4ZWN1dGlvblNsb3RzLnB1c2gociksdGhpcy5wcm9jZXNzRXhlY3V0aW9uU2xvdHMoKSxhLnByb21pc2V9c2V0Tm9uRXhjbHVzaXZlTWF4Q29uY3VycmVuY3koZSl7aWYoIU51bWJlci5pc0Zpbml0ZShlKXx8ZTwxKXRocm93IG5ldyBFcnJvcigibm9uRXhjbHVzaXZlTWF4Q29uY3VycmVuY3kgbXVzdCBiZSBhIGZpbml0ZSBudW1iZXIgPj0gMSIpO3RoaXMubm9uRXhjbHVzaXZlTWF4Q29uY3VycmVuY3k9ZX1nZXROb25FeGNsdXNpdmVNYXhDb25jdXJyZW5jeSgpe3JldHVybiB0aGlzLm5vbkV4Y2x1c2l2ZU1heENvbmN1cnJlbmN5fWdldEFjdGl2ZU5vbkV4Y2x1c2l2ZUNvdW50KCl7cmV0dXJuIHRoaXMubm9uRXhjbHVzaXZlQ3VycmVudENvdW50fWdldFBlbmRpbmdOb25FeGNsdXNpdmVDb3VudCgpe3JldHVybiB0aGlzLm5vbkV4Y2x1c2l2ZVBlbmRpbmdRdWV1ZS5sZW5ndGh9YXN5bmMgcHJvY2Vzc0V4ZWN1dGlvblNsb3RzKCl7aWYoIXRoaXMuaXNQcm9jZXNzaW5nKXtmb3IodGhpcy5pc1Byb2Nlc3Npbmc9ITA7dGhpcy5leGVjdXRpb25TbG90cy5sZW5ndGg+MDspe2xldCBlPXRoaXMuZXhlY3V0aW9uU2xvdHNbMF07aWYoZS5tb2RlPT09ImV4Y2x1c2l2ZSIpYXdhaXQgdGhpcy5leGVjdXRlRXhjbHVzaXZlU2xvdChlKSx0aGlzLmV4ZWN1dGlvblNsb3RzLnNoaWZ0KCk7ZWxzZXtsZXQgdD1bXTtmb3IoO3RoaXMuZXhlY3V0aW9uU2xvdHMubGVuZ3RoPjAmJnRoaXMuZXhlY3V0aW9uU2xvdHNbMF0ubW9kZT09PSJub25leGNsdXNpdmUiOyl0LnB1c2godGhpcy5leGVjdXRpb25TbG90cy5zaGlmdCgpKTthd2FpdCB0aGlzLmV4ZWN1dGVOb25FeGNsdXNpdmVTbG90cyh0KX19dGhpcy5pc1Byb2Nlc3Npbmc9ITF9fWFzeW5jIGV4ZWN1dGVFeGNsdXNpdmVTbG90KGUpe3RyeXtpZihlLnRpbWVvdXQpe2xldCB0PW5ldyBYdC5UaW1lb3V0KGUudGltZW91dCk7dHJ5e2xldCBhPWF3YWl0IFByb21pc2UucmFjZShbZS5mdW5jVG9FeGVjdXRlKCksdC5wcm9taXNlLnRoZW4oKCk9Pnt0aHJvdyBuZXcgRXJyb3IoIlRpbWVvdXQgcmVhY2hlZCIpfSldKTt0LmNhbmNlbCgpLGUuZXhlY3V0aW9uRGVmZXJyZWQucmVzb2x2ZShhKX1jYXRjaChhKXt0aHJvdyB0LmNhbmNlbCgpLGF9fWVsc2V7bGV0IHQ9YXdhaXQgZS5mdW5jVG9FeGVjdXRlKCk7ZS5leGVjdXRpb25EZWZlcnJlZC5yZXNvbHZlKHQpfX1jYXRjaCh0KXtlLmV4ZWN1dGlvbkRlZmVycmVkLnJlamVjdCh0KX19YXN5bmMgZXhlY3V0ZU5vbkV4Y2x1c2l2ZVNsb3RzKGUpe2xldCB0PWUubWFwKGFzeW5jIGE9Pnthd2FpdCB0aGlzLndhaXRGb3JOb25FeGNsdXNpdmVTbG90KCk7dHJ5e2lmKGEudGltZW91dCl7bGV0IHI9bmV3IFh0LlRpbWVvdXQoYS50aW1lb3V0KTt0cnl7bGV0IG49YXdhaXQgUHJvbWlzZS5yYWNlKFthLmZ1bmNUb0V4ZWN1dGUoKSxyLnByb21pc2UudGhlbigoKT0+e3Rocm93IG5ldyBFcnJvcigiVGltZW91dCByZWFjaGVkIil9KV0pO3IuY2FuY2VsKCksYS5leGVjdXRpb25EZWZlcnJlZC5yZXNvbHZlKG4pfWNhdGNoKG4pe3Rocm93IHIuY2FuY2VsKCksbn19ZWxzZXtsZXQgcj1hd2FpdCBhLmZ1bmNUb0V4ZWN1dGUoKTthLmV4ZWN1dGlvbkRlZmVycmVkLnJlc29sdmUocil9fWNhdGNoKHIpe2EuZXhlY3V0aW9uRGVmZXJyZWQucmVqZWN0KHIpfWZpbmFsbHl7dGhpcy5yZWxlYXNlTm9uRXhjbHVzaXZlU2xvdCgpfX0pO2F3YWl0IFByb21pc2UuYWxsKHQpfXdhaXRGb3JOb25FeGNsdXNpdmVTbG90KCl7cmV0dXJuIHRoaXMubm9uRXhjbHVzaXZlQ3VycmVudENvdW50PHRoaXMubm9uRXhjbHVzaXZlTWF4Q29uY3VycmVuY3k/KHRoaXMubm9uRXhjbHVzaXZlQ3VycmVudENvdW50KyssUHJvbWlzZS5yZXNvbHZlKCkpOm5ldyBQcm9taXNlKGU9Pnt0aGlzLm5vbkV4Y2x1c2l2ZVBlbmRpbmdRdWV1ZS5wdXNoKCgpPT57dGhpcy5ub25FeGNsdXNpdmVDdXJyZW50Q291bnQrKyxlKCl9KX0pfXJlbGVhc2VOb25FeGNsdXNpdmVTbG90KCl7dGhpcy5ub25FeGNsdXNpdmVDdXJyZW50Q291bnQtLTtsZXQgZT10aGlzLm5vbkV4Y2x1c2l2ZVBlbmRpbmdRdWV1ZS5zaGlmdCgpO2UmJmUoKX19fSk7dmFyIHhoZSxjbXQ9ZygoKT0+e01jKCk7eGhlPWNsYXNze3N0YXRpY3tpKHRoaXMsIkJhY2twcmVzc3VyZWRBcnJheSIpfWRhdGE7aGlnaFdhdGVyTWFyaztoYXNTcGFjZT1uZXcgbHMucnhqcy5TdWJqZWN0O2l0ZW1zQXZhaWxhYmxlPW5ldyBscy5yeGpzLlN1YmplY3Q7aXNEZXN0cm95ZWQ9ITE7Y29uc3RydWN0b3IoZT0xNil7dGhpcy5kYXRhPVtdLHRoaXMuaGlnaFdhdGVyTWFyaz1lfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5kYXRhLmxlbmd0aH1wdXNoKGUpe3RoaXMuZGF0YS5wdXNoKGUpLHRoaXMuaXRlbXNBdmFpbGFibGUubmV4dCgiaXRlbXNBdmFpbGFibGUiKTtsZXQgdD10aGlzLmNoZWNrU3BhY2VBdmFpbGFibGUoKTtyZXR1cm4gdCYmdGhpcy5oYXNTcGFjZS5uZXh0KCJoYXNTcGFjZSIpLHR9cHVzaE1hbnkoZSl7Zm9yKGxldCB0IG9mIGUpdGhpcy5wdXNoKHQpO3JldHVybiB0aGlzLmNoZWNrU3BhY2VBdmFpbGFibGUoKX1zaGlmdCgpe2xldCBlPXRoaXMuZGF0YS5zaGlmdCgpO3JldHVybiB0aGlzLmNoZWNrU3BhY2VBdmFpbGFibGUoKSYmdGhpcy5oYXNTcGFjZS5uZXh0KCJoYXNTcGFjZSIpLGV9cGVlaygpe3JldHVybiB0aGlzLmRhdGFbMF19Y2hlY2tTcGFjZUF2YWlsYWJsZSgpe3JldHVybiB0aGlzLmRhdGEubGVuZ3RoPHRoaXMuaGlnaFdhdGVyTWFya31jaGVja0hhc0l0ZW1zKCl7cmV0dXJuIHRoaXMuZGF0YS5sZW5ndGg+MH13YWl0Rm9yU3BhY2UoKXtyZXR1cm4gbmV3IFByb21pc2UoZT0+e2lmKHRoaXMuY2hlY2tTcGFjZUF2YWlsYWJsZSgpfHx0aGlzLmlzRGVzdHJveWVkKWUoKTtlbHNle2xldCB0PXRoaXMuaGFzU3BhY2Uuc3Vic2NyaWJlKHtuZXh0OmkoKCk9Pnt0LnVuc3Vic2NyaWJlKCksZSgpfSwibmV4dCIpLGNvbXBsZXRlOmkoKCk9PntlKCl9LCJjb21wbGV0ZSIpfSl9fSl9d2FpdEZvckl0ZW1zKCl7cmV0dXJuIG5ldyBQcm9taXNlKGU9PntpZih0aGlzLmRhdGEubGVuZ3RoPjB8fHRoaXMuaXNEZXN0cm95ZWQpZSgpO2Vsc2V7bGV0IHQ9dGhpcy5pdGVtc0F2YWlsYWJsZS5zdWJzY3JpYmUoe25leHQ6aSgoKT0+e3QudW5zdWJzY3JpYmUoKSxlKCl9LCJuZXh0IiksY29tcGxldGU6aSgoKT0+e2UoKX0sImNvbXBsZXRlIil9KX19KX1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiB0aGlzLmRhdGFbU3ltYm9sLml0ZXJhdG9yXSgpfWRlc3Ryb3koKXt0aGlzLmlzRGVzdHJveWVkPSEwLHRoaXMuaGFzU3BhY2UuY29tcGxldGUoKSx0aGlzLml0ZW1zQXZhaWxhYmxlLmNvbXBsZXRlKCl9fX0pO3ZhciByMyxBYWU9ZygoKT0+e01jKCk7cjM9Y2xhc3Mgc3tzdGF0aWN7aSh0aGlzLCJGYXN0TWFwIil9bWFwT2JqZWN0PW5ldyBNYXA7aXNVbmlxdWVLZXkoZSl7cmV0dXJuIXRoaXMubWFwT2JqZWN0LmhhcyhlKX1oYXMoZSl7cmV0dXJuIHRoaXMubWFwT2JqZWN0LmhhcyhlKX1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLm1hcE9iamVjdC5zaXplfWFkZFRvTWFwKGUsdCxhKXtyZXR1cm4gdGhpcy5pc1VuaXF1ZUtleShlKXx8YSYmYS5mb3JjZT8odGhpcy5tYXBPYmplY3Quc2V0KGUsdCksITApOiExfWdldEJ5S2V5KGUpe3JldHVybiB0aGlzLm1hcE9iamVjdC5nZXQoZSl9cmVtb3ZlRnJvbU1hcChlKXtsZXQgdD10aGlzLm1hcE9iamVjdC5nZXQoZSk7cmV0dXJuIHRoaXMubWFwT2JqZWN0LmRlbGV0ZShlKSx0fWdldEtleXMoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLm1hcE9iamVjdC5rZXlzKCkpfXZhbHVlcygpe3JldHVybiBBcnJheS5mcm9tKHRoaXMubWFwT2JqZWN0LnZhbHVlcygpKX1lbnRyaWVzKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5tYXBPYmplY3QuZW50cmllcygpKX1jbGVhbigpe3RoaXMubWFwT2JqZWN0LmNsZWFyKCl9Y29uY2F0KGUpe2xldCB0PW5ldyBzO2ZvcihsZXQgYSBvZiB0aGlzLmdldEtleXMoKSl0LmFkZFRvTWFwKGEsdGhpcy5nZXRCeUtleShhKSk7Zm9yKGxldCBhIG9mIGUuZ2V0S2V5cygpKXQuYWRkVG9NYXAoYSxlLmdldEJ5S2V5KGEpLHtmb3JjZTohMH0pO3JldHVybiB0fWFkZEFsbEZyb21PdGhlcihlKXtmb3IobGV0IHQgb2YgZS5nZXRLZXlzKCkpdGhpcy5hZGRUb01hcCh0LGUuZ2V0QnlLZXkodCkse2ZvcmNlOiEwfSl9YXN5bmMgZmluZChlKXtmb3IobGV0IHQgb2YgdGhpcy5nZXRLZXlzKCkpe2xldCBhPXRoaXMuZ2V0QnlLZXkodCk7aWYoYXdhaXQgZShhKSlyZXR1cm4gYX19W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gdGhpcy5tYXBPYmplY3QuZW50cmllcygpfX19KTt2YXIgZG10LGIwLEt5PWcoKCk9PntNYygpO0FhZSgpO2RtdD1pKChzPSJ1bmkiKT0+YCR7c314eHh4eHh4eHh4eGAucmVwbGFjZSgvW3h5XS9nLGU9PntsZXQgdD1NYXRoLnJhbmRvbSgpKjE2fDA7cmV0dXJuKGU9PT0ieCI/dDp0JjN8OCkudG9TdHJpbmcoMTYpfSksInVuaSIpLGIwPWNsYXNzIHN7c3RhdGlje2kodGhpcywiT2JqZWN0TWFwIil9ZmFzdE1hcD1uZXcgcjM7cmV2ZXJzZU1hcD1uZXcgTWFwO2V2ZW50U3ViamVjdD1uZXcgbHMucnhqcy5TdWJqZWN0O2NvbnN0cnVjdG9yKCl7fWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5mYXN0TWFwLnNpemV9YWRkTWFwcGVkVW5pcXVlKGUsdCl7dGhpcy5mYXN0TWFwLmFkZFRvTWFwKGUsdCksdGhpcy5yZXZlcnNlTWFwLnNldCh0LGUpfWdldE1hcHBlZFVuaXF1ZShlKXtyZXR1cm4gdGhpcy5mYXN0TWFwLmdldEJ5S2V5KGUpfXJlbW92ZU1hcHBlZFVuaXF1ZShlKXtsZXQgdD10aGlzLmZhc3RNYXAucmVtb3ZlRnJvbU1hcChlKTtyZXR1cm4gdCE9PXZvaWQgMCYmKHRoaXMucmV2ZXJzZU1hcC5kZWxldGUodCksdGhpcy5ldmVudFN1YmplY3QubmV4dCh7b3BlcmF0aW9uOiJyZW1vdmUiLHBheWxvYWQ6dH0pKSx0fWFkZChlKXtsZXQgdD10aGlzLnJldmVyc2VNYXAuZ2V0KGUpO2lmKHQhPT12b2lkIDApcmV0dXJuIHQ7bGV0IGE9ZG10KCJrZXkiKTtyZXR1cm4gdGhpcy5hZGRNYXBwZWRVbmlxdWUoYSxlKSx0aGlzLmV2ZW50U3ViamVjdC5uZXh0KHtvcGVyYXRpb246ImFkZCIscGF5bG9hZDplfSksYX1hZGRBcnJheShlKXtmb3IobGV0IHQgb2YgZSl0aGlzLmFkZCh0KX1jaGVja0Zvck9iamVjdChlKXtyZXR1cm4gdGhpcy5yZXZlcnNlTWFwLmhhcyhlKX1nZXRLZXlGb3JPYmplY3QoZSl7cmV0dXJuIHRoaXMucmV2ZXJzZU1hcC5nZXQoZSk/P251bGx9YXN5bmMgZmluZChlKXtyZXR1cm4gdGhpcy5mYXN0TWFwLmZpbmQoZSl9ZmluZFN5bmMoZSl7Zm9yKGxldCB0IG9mIHRoaXMuZmFzdE1hcC5nZXRLZXlzKCkpaWYoZSh0aGlzLmZhc3RNYXAuZ2V0QnlLZXkodCkpKXJldHVybiB0aGlzLmdldE1hcHBlZFVuaXF1ZSh0KX1hc3luYyBmaW5kT25lQW5kUmVtb3ZlKGUpe2xldCB0PWF3YWl0IHRoaXMuZmluZChlKTtyZXR1cm4gdCYmdGhpcy5yZW1vdmUodCksdH1maW5kT25lQW5kUmVtb3ZlU3luYyhlKXtsZXQgdD10aGlzLmZpbmRTeW5jKGUpO3JldHVybiB0JiZ0aGlzLnJlbW92ZSh0KSx0fWFzeW5jIGZvckVhY2goZSl7Zm9yKGxldCB0IG9mIHRoaXMuZmFzdE1hcC5nZXRLZXlzKCkpYXdhaXQgZSh0aGlzLmZhc3RNYXAuZ2V0QnlLZXkodCkpfWdldE9uZUFuZFJlbW92ZSgpe2xldCBlPXRoaXMuZmFzdE1hcC5nZXRLZXlzKCk7aWYoZS5sZW5ndGg9PT0wKXJldHVybiBudWxsO3tsZXQgdD1lWzBdLGE9dGhpcy5mYXN0TWFwLnJlbW92ZUZyb21NYXAodCk7cmV0dXJuIHRoaXMucmV2ZXJzZU1hcC5kZWxldGUoYSksdGhpcy5ldmVudFN1YmplY3QubmV4dCh7b3BlcmF0aW9uOiJyZW1vdmUiLHBheWxvYWQ6YX0pLGF9fWdldEFycmF5KCl7cmV0dXJuIHRoaXMuZmFzdE1hcC52YWx1ZXMoKX1pc0VtcHR5KCl7cmV0dXJuIHRoaXMuZmFzdE1hcC5zaXplPT09MH1yZW1vdmUoZSl7bGV0IHQ9dGhpcy5yZXZlcnNlTWFwLmdldChlKTtpZih0IT09dm9pZCAwKXtsZXQgYT10aGlzLmZhc3RNYXAucmVtb3ZlRnJvbU1hcCh0KTtyZXR1cm4gdGhpcy5yZXZlcnNlTWFwLmRlbGV0ZShhKSx0aGlzLmV2ZW50U3ViamVjdC5uZXh0KHtvcGVyYXRpb246InJlbW92ZSIscGF5bG9hZDphfSksYX1yZXR1cm4gbnVsbH13aXBlKCl7bGV0IGU9dGhpcy5mYXN0TWFwLmdldEtleXMoKTtmb3IobGV0IHQgb2YgZSl7bGV0IGE9dGhpcy5mYXN0TWFwLnJlbW92ZUZyb21NYXAodCk7dGhpcy5yZXZlcnNlTWFwLmRlbGV0ZShhKSx0aGlzLmV2ZW50U3ViamVjdC5uZXh0KHtvcGVyYXRpb246InJlbW92ZSIscGF5bG9hZDphfSl9fWNvbmNhdChlKXtsZXQgdD1uZXcgczt0LmZhc3RNYXAuYWRkQWxsRnJvbU90aGVyKHRoaXMuZmFzdE1hcCksdC5mYXN0TWFwLmFkZEFsbEZyb21PdGhlcihlLmZhc3RNYXApO2ZvcihsZXQgYSBvZiB0LmZhc3RNYXAuZ2V0S2V5cygpKXQucmV2ZXJzZU1hcC5zZXQodC5mYXN0TWFwLmdldEJ5S2V5KGEpLGEpO3JldHVybiB0fWFkZEFsbEZyb21PdGhlcihlKXt0aGlzLmZhc3RNYXAuYWRkQWxsRnJvbU90aGVyKGUuZmFzdE1hcCk7Zm9yKGxldCB0IG9mIGUuZmFzdE1hcC5nZXRLZXlzKCkpdGhpcy5yZXZlcnNlTWFwLnNldChlLmZhc3RNYXAuZ2V0QnlLZXkodCksdCl9bWFwKGUpe3JldHVybiB0aGlzLmdldEFycmF5KCkubWFwKGUpfWZpbHRlcihlKXtyZXR1cm4gdGhpcy5nZXRBcnJheSgpLmZpbHRlcihlKX1yZWR1Y2UoZSx0KXtyZXR1cm4gdGhpcy5nZXRBcnJheSgpLnJlZHVjZShlLHQpfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuZ2V0QXJyYXkoKVtTeW1ib2wuaXRlcmF0b3JdKCl9ZGVzdHJveSgpe3RoaXMud2lwZSgpLHRoaXMucmV2ZXJzZU1hcC5jbGVhcigpLHRoaXMuZXZlbnRTdWJqZWN0LmNvbXBsZXRlKCl9fX0pO3ZhciBZeSx5aGU9ZygoKT0+e01jKCk7d2hlKCk7WXk9Y2xhc3N7c3RhdGlje2kodGhpcywiSW50ZXJlc3QiKX1vcHRpb25zO2ludGVyZXN0TWFwUmVmO29yaWdpbmFsSW50ZXJlc3Q7Y29tcGFyaXNvbkZ1bmM7ZGVzdHJ1Y3Rpb25UaW1lcj1uZXcgaTMuVGltZXIoMWU0KTtpc0Z1bGxmaWxsZWQ9ITE7aXNEZXN0cm95ZWQ9ITE7ZnVsbGZpbGxtZW50U3RvcmU9W107bWFya0xvc3RUaW1lb3V0PW51bGw7Z2V0IGNvbXBhcmlzb25TdHJpbmcoKXtyZXR1cm4gdGhpcy5jb21wYXJpc29uRnVuYyh0aGlzLm9yaWdpbmFsSW50ZXJlc3QpfWludGVyZXN0RGVmZXJyZWQ9bmV3IG10LkRlZmVycmVkO2ludGVyZXN0RnVsbGZpbGxlZD10aGlzLmludGVyZXN0RGVmZXJyZWQucHJvbWlzZTtmdWxsZmlsbEludGVyZXN0KGUpe3RoaXMuaXNGdWxsZmlsbGVkPSEwLHRoaXMuZnVsbGZpbGxtZW50U3RvcmU9W10sdGhpcy5pbnRlcmVzdERlZmVycmVkLnJlc29sdmUoZSksdGhpcy5kZXN0cm95KCl9Y29uc3RydWN0b3IoZSx0LGEscil7dGhpcy5pbnRlcmVzdE1hcFJlZj1lLHRoaXMub3JpZ2luYWxJbnRlcmVzdD10LHRoaXMuY29tcGFyaXNvbkZ1bmM9YSx0aGlzLm9wdGlvbnM9cix0aGlzLmRlc3RydWN0aW9uVGltZXIuY29tcGxldGVkLnRoZW4oKCk9Pnt0aGlzLmlzRGVzdHJveWVkfHx0aGlzLmRlc3Ryb3koKX0pLHRoaXMub3B0aW9ucz8ubWFya0xvc3RBZnRlckRlZmF1bHQmJih0aGlzLm1hcmtMb3N0VGltZW91dD1uZXcgWHQuVGltZW91dCh0aGlzLm9wdGlvbnMubWFya0xvc3RBZnRlckRlZmF1bHQpLHRoaXMubWFya0xvc3RUaW1lb3V0LnByb21pc2UudGhlbigoKT0+e3RoaXMuaXNEZXN0cm95ZWR8fHRoaXMubWFya0xvc3QoKX0pKX1kZXN0cm95KCl7dGhpcy5pc0Rlc3Ryb3llZHx8KHRoaXMuaXNEZXN0cm95ZWQ9ITAsdGhpcy5kZXN0cnVjdGlvblRpbWVyLnJlc2V0KCksdGhpcy5tYXJrTG9zdFRpbWVvdXQmJih0aGlzLm1hcmtMb3N0VGltZW91dC5jYW5jZWwoKSx0aGlzLm1hcmtMb3N0VGltZW91dD1udWxsKSx0aGlzLmZ1bGxmaWxsbWVudFN0b3JlPVtdLHRoaXMuaW50ZXJlc3RNYXBSZWYucmVtb3ZlSW50ZXJlc3QodGhpcyksIXRoaXMuaXNGdWxsZmlsbGVkJiZ0aGlzLm9wdGlvbnM/LmRlZmF1bHRGdWxsZmlsbG1lbnQmJih0aGlzLmlzRnVsbGZpbGxlZD0hMCx0aGlzLmludGVyZXN0RGVmZXJyZWQucmVzb2x2ZSh0aGlzLm9wdGlvbnMuZGVmYXVsdEZ1bGxmaWxsbWVudCkpKX1tYXJrTG9zdCgpe3RoaXMuZGVzdHJ1Y3Rpb25UaW1lci5zdGFydCgpfXJlbmV3KCl7dGhpcy5kZXN0cnVjdGlvblRpbWVyLnJlc2V0KCl9fX0pO3ZhciBraGUsd2hlPWcoKCk9PntNYygpO0t5KCk7eWhlKCk7a2hlPWNsYXNze3N0YXRpY3tpKHRoaXMsIkludGVyZXN0TWFwIil9b3B0aW9ucztpbnRlcmVzdE9iamVjdE1hcD1uZXcgYjA7aW50ZXJlc3RzQnlDb21wYXJpc29uU3RyaW5nPW5ldyBNYXA7Y29tcGFyaXNvbkZ1bmM7Y29uc3RydWN0b3IoZSx0PXt9KXt0aGlzLmNvbXBhcmlzb25GdW5jPWUsdGhpcy5vcHRpb25zPXR9YXN5bmMgYWRkSW50ZXJlc3QoZSx0KXtsZXQgYT10aGlzLmNvbXBhcmlzb25GdW5jKGUpLHIsbj10aGlzLmludGVyZXN0c0J5Q29tcGFyaXNvblN0cmluZy5nZXQoYSk7cmV0dXJuIG4/KHI9bixyLnJlbmV3KCkpOihyPW5ldyBZeSh0aGlzLGUsdGhpcy5jb21wYXJpc29uRnVuYyx7bWFya0xvc3RBZnRlckRlZmF1bHQ6dGhpcy5vcHRpb25zLm1hcmtMb3N0QWZ0ZXJEZWZhdWx0LGRlZmF1bHRGdWxsZmlsbG1lbnQ6dH0pLHRoaXMuaW50ZXJlc3RPYmplY3RNYXAuYWRkKHIpLHRoaXMuaW50ZXJlc3RzQnlDb21wYXJpc29uU3RyaW5nLnNldChhLHIpKSx0aGlzLmludGVyZXN0T2JzZXJ2YWJsZS5wdXNoKHIpLHJ9aW50ZXJlc3RPYnNlcnZhYmxlPW5ldyBscy5PYnNlcnZhYmxlSW50YWtlO3JlbW92ZUludGVyZXN0KGUpe3RoaXMuaW50ZXJlc3RPYmplY3RNYXAuZmluZE9uZUFuZFJlbW92ZVN5bmModD0+ZS5jb21wYXJpc29uU3RyaW5nPT09dC5jb21wYXJpc29uU3RyaW5nKSx0aGlzLmludGVyZXN0c0J5Q29tcGFyaXNvblN0cmluZy5kZWxldGUoZS5jb21wYXJpc29uU3RyaW5nKX1jaGVja0ludGVyZXN0KGUpe2xldCB0PXRoaXMuY29tcGFyaXNvbkZ1bmMoZSk7cmV0dXJuIHRoaXMuY2hlY2tJbnRlcmVzdEJ5U3RyaW5nKHQpfWNoZWNrSW50ZXJlc3RCeVN0cmluZyhlKXtyZXR1cm4gdGhpcy5pbnRlcmVzdHNCeUNvbXBhcmlzb25TdHJpbmcuaGFzKGUpfWluZm9ybUxvc3RJbnRlcmVzdChlKXtsZXQgdD10aGlzLmZpbmRJbnRlcmVzdChlKTt0JiZ0Lm1hcmtMb3N0KCl9ZmluZEludGVyZXN0KGUpe2xldCB0PXRoaXMuY29tcGFyaXNvbkZ1bmMoZSk7cmV0dXJuIHRoaXMuaW50ZXJlc3RzQnlDb21wYXJpc29uU3RyaW5nLmdldCh0KT8/bnVsbH1kZXN0cm95KCl7bGV0IGU9dGhpcy5pbnRlcmVzdE9iamVjdE1hcC5nZXRBcnJheSgpO2ZvcihsZXQgdCBvZiBlKXQuZGVzdHJveSgpO3RoaXMuaW50ZXJlc3RPYmplY3RNYXAud2lwZSgpLHRoaXMuaW50ZXJlc3RzQnlDb21wYXJpc29uU3RyaW5nLmNsZWFyKCksdGhpcy5pbnRlcmVzdE9ic2VydmFibGUuc2lnbmFsQ29tcGxldGUoKX19fSk7dmFyIFNoZSx1bXQ9ZygoKT0+e01jKCk7U2hlPWNsYXNze3N0YXRpY3tpKHRoaXMsIkxpbWl0ZWRBcnJheSIpfWFycmF5PVtdO2FycmF5TGltaXQ7Y29uc3RydWN0b3IoZSl7dGhpcy5hcnJheUxpbWl0PWV9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmFycmF5Lmxlbmd0aH1hZGRPbmUoZSl7dGhpcy5hcnJheS51bnNoaWZ0KGUpLHRoaXMuYXJyYXkubGVuZ3RoPnRoaXMuYXJyYXlMaW1pdCYmKHRoaXMuYXJyYXkubGVuZ3RoPXRoaXMuYXJyYXlMaW1pdCl9YWRkTWFueShlKXtmb3IobGV0IHQgb2YgZSl0aGlzLmFkZE9uZSh0KX1zZXRMaW1pdChlKXt0aGlzLmFycmF5TGltaXQ9ZSx0aGlzLmFycmF5Lmxlbmd0aD50aGlzLmFycmF5TGltaXQmJih0aGlzLmFycmF5Lmxlbmd0aD10aGlzLmFycmF5TGltaXQpfWdldEF2ZXJhZ2UoKXtpZih0aGlzLmFycmF5Lmxlbmd0aD09PTApcmV0dXJuIDA7aWYodHlwZW9mIHRoaXMuYXJyYXlbMF09PSJudW1iZXIiKXtsZXQgZT0wO2ZvcihsZXQgdCBvZiB0aGlzLmFycmF5KWU9ZSt0O3JldHVybiBlL3RoaXMuYXJyYXkubGVuZ3RofWVsc2UgcmV0dXJuIG51bGx9cmVtb3ZlKGUpe2xldCB0PXRoaXMuYXJyYXkuaW5kZXhPZihlKTtyZXR1cm4gdCE9PS0xPyh0aGlzLmFycmF5LnNwbGljZSh0LDEpLCEwKTohMX1jbGVhcigpe3RoaXMuYXJyYXkubGVuZ3RoPTB9Z2V0QXJyYXkoKXtyZXR1cm5bLi4udGhpcy5hcnJheV19W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gdGhpcy5hcnJheVtTeW1ib2wuaXRlcmF0b3JdKCl9fX0pO3ZhciBfaGUscG10PWcoKCk9PntNYygpO0t5KCk7X2hlPWNsYXNze3N0YXRpY3tpKHRoaXMsIkxvb3BUcmFja2VyIil9cmVmZXJlbmNlT2JqZWN0TWFwPW5ldyBiMDtjb25zdHJ1Y3Rvcigpe31jaGVja0FuZFRyYWNrKGUpe3JldHVybiB0aGlzLnJlZmVyZW5jZU9iamVjdE1hcC5jaGVja0Zvck9iamVjdChlKT8hMToodGhpcy5yZWZlcmVuY2VPYmplY3RNYXAuYWRkKGUpLCEwKX1yZXNldCgpe3RoaXMucmVmZXJlbmNlT2JqZWN0TWFwLndpcGUoKX1kZXN0cm95KCl7dGhpcy5yZWZlcmVuY2VPYmplY3RNYXAuZGVzdHJveSgpfX19KTt2YXIgWnksTWhlPWcoKCk9PntNYygpO1p5PWNsYXNze3N0YXRpY3tpKHRoaXMsIlN0cmluZ21hcCIpfV9zdHJpbmdBcnJheT1bXTtfdHJpZ2dlclVudGlsVHJ1ZUZ1bmN0aW9uQXJyYXk9W107Y29uc3RydWN0b3IoKXt9YWRkU3RyaW5nKGUpe3RoaXMuX3N0cmluZ0FycmF5LnB1c2goZSksdGhpcy5ub3RpZnlUcmlnZ2VyKCl9YWRkU3RyaW5nQXJyYXkoZSl7Zm9yKGxldCB0IG9mIGUpdGhpcy5hZGRTdHJpbmcodCl9cmVtb3ZlU3RyaW5nKGUpe3RoaXMuX3N0cmluZ0FycmF5PXRoaXMuX3N0cmluZ0FycmF5LmZpbHRlcih0PT50IT09ZSksdGhpcy5ub3RpZnlUcmlnZ2VyKCl9d2lwZSgpe3RoaXMuX3N0cmluZ0FycmF5PVtdLHRoaXMubm90aWZ5VHJpZ2dlcigpfWNoZWNrU3RyaW5nKGUpe3JldHVybiB0aGlzLl9zdHJpbmdBcnJheS5pbmRleE9mKGUpIT09LTF9Y2hlY2tNaW5pbWF0Y2goZSl7bGV0IHQ9bmV3IHl5LlNtYXJ0TWF0Y2goZSksYT0hMTtmb3IobGV0IHIgb2YgdGhpcy5fc3RyaW5nQXJyYXkpdC5tYXRjaChyKSYmKGE9ITApO3JldHVybiBhfWNoZWNrSXNFbXB0eSgpe3JldHVybiB0aGlzLl9zdHJpbmdBcnJheS5sZW5ndGg9PT0wfWdldFN0cmluZ0FycmF5KCl7bGV0IGU9W107Zm9yKGxldCB0IG9mIHRoaXMuX3N0cmluZ0FycmF5KWUucHVzaCh0KTtyZXR1cm4gZX1yZWdpc3RlclVudGlsVHJ1ZShlLHQpe2xldCBhPW10LmRlZmVyKCk7cmV0dXJuIHRoaXMuX3RyaWdnZXJVbnRpbFRydWVGdW5jdGlvbkFycmF5LnB1c2goKCk9PntsZXQgcj1lKHRoaXMuZ2V0U3RyaW5nQXJyYXkoKSk7cmV0dXJuIHI9PT0hMCYmKHQmJnQoKSxhLnJlc29sdmUoKSkscn0pLHRoaXMubm90aWZ5VHJpZ2dlcigpLGEucHJvbWlzZX1ub3RpZnlUcmlnZ2VyKCl7bGV0IGU9dGhpcy5fdHJpZ2dlclVudGlsVHJ1ZUZ1bmN0aW9uQXJyYXkuZmlsdGVyKHQ9PiF0KCkpO3RoaXMuX3RyaWdnZXJVbnRpbFRydWVGdW5jdGlvbkFycmF5PWV9ZGVzdHJveSgpe3RoaXMuX3N0cmluZ0FycmF5PVtdLHRoaXMuX3RyaWdnZXJVbnRpbFRydWVGdW5jdGlvbkFycmF5PVtdfX19KTt2YXIgWHksemhlPWcoKCk9PntNYygpO1h5PWNsYXNze3N0YXRpY3tpKHRoaXMsIlRpbWVkQWdncmVndG9yIil9b3B0aW9ucztzdG9yYWdlQXJyYXk9W107aXNTdG9wcGVkPSExO2NvbnN0cnVjdG9yKGUpe3RoaXMub3B0aW9ucz1lfWFnZ3JlZ2F0aW9uVGltZXI7Y2hlY2tBZ2dyZWdhdGlvblN0YXR1cygpe2lmKHRoaXMuaXNTdG9wcGVkKXJldHVybjtsZXQgZT1pKCgpPT57dGhpcy5hZ2dyZWdhdGlvblRpbWVyPW5ldyBpMy5UaW1lcih0aGlzLm9wdGlvbnMuYWdncmVnYXRpb25JbnRlcnZhbEluTWlsbGlzKSx0aGlzLmFnZ3JlZ2F0aW9uVGltZXIuY29tcGxldGVkLnRoZW4oKCk9PntpZih0aGlzLmlzU3RvcHBlZCl7dGhpcy5hZ2dyZWdhdGlvblRpbWVyPW51bGw7cmV0dXJufWxldCB0PXRoaXMuc3RvcmFnZUFycmF5O2lmKHQubGVuZ3RoPT09MCl7dGhpcy5hZ2dyZWdhdGlvblRpbWVyPW51bGw7cmV0dXJufXRoaXMuc3RvcmFnZUFycmF5PVtdLGUoKSx0aGlzLm9wdGlvbnMuZnVuY3Rpb25Gb3JBZ2dyZWdhdGlvbih0KX0pLHRoaXMuYWdncmVnYXRpb25UaW1lci5zdGFydCgpfSwiYWRkQWdncmVnYXRpb25UaW1lciIpO3RoaXMuYWdncmVnYXRpb25UaW1lcnx8ZSgpfWFkZChlKXt0aGlzLmlzU3RvcHBlZHx8KHRoaXMuc3RvcmFnZUFycmF5LnB1c2goZSksdGhpcy5jaGVja0FnZ3JlZ2F0aW9uU3RhdHVzKCkpfXN0b3AoZT0hMSl7aWYodGhpcy5pc1N0b3BwZWQ9ITAsdGhpcy5hZ2dyZWdhdGlvblRpbWVyJiYodGhpcy5hZ2dyZWdhdGlvblRpbWVyLnJlc2V0KCksdGhpcy5hZ2dyZWdhdGlvblRpbWVyPW51bGwpLGUmJnRoaXMuc3RvcmFnZUFycmF5Lmxlbmd0aD4wKXtsZXQgdD10aGlzLnN0b3JhZ2VBcnJheTt0aGlzLnN0b3JhZ2VBcnJheT1bXSx0aGlzLm9wdGlvbnMuZnVuY3Rpb25Gb3JBZ2dyZWdhdGlvbih0KX1lbHNlIHRoaXMuc3RvcmFnZUFycmF5PVtdfXJlc3RhcnQoKXt0aGlzLmlzU3RvcHBlZD0hMX19fSk7dmFyIENoZSxobXQ9ZygoKT0+e01jKCk7Q2hlPWNsYXNze3N0YXRpY3tpKHRoaXMsIlRyZWUiKX1zeW1ib2xUcmVlO2NvbnN0cnVjdG9yKCl7dGhpcy5zeW1ib2xUcmVlPW5ldyBJYWUuZGVmYXVsdH1pbml0aWFsaXplKGUpe3JldHVybiB0aGlzLnN5bWJvbFRyZWUuaW5pdGlhbGl6ZShlKX1oYXNDaGlsZHJlbihlKXtyZXR1cm4gdGhpcy5zeW1ib2xUcmVlLmhhc0NoaWxkcmVuKGUpfWZpcnN0Q2hpbGQoZSl7cmV0dXJuIHRoaXMuc3ltYm9sVHJlZS5maXJzdENoaWxkKGUpfWxhc3RDaGlsZChlKXtyZXR1cm4gdGhpcy5zeW1ib2xUcmVlLmxhc3RDaGlsZChlKX1wcmV2aW91c1NpYmxpbmcoZSl7cmV0dXJuIHRoaXMuc3ltYm9sVHJlZS5wcmV2aW91c1NpYmxpbmcoZSl9bmV4dFNpYmxpbmcoZSl7cmV0dXJuIHRoaXMuc3ltYm9sVHJlZS5uZXh0U2libGluZyhlKX1wYXJlbnQoZSl7cmV0dXJuIHRoaXMuc3ltYm9sVHJlZS5wYXJlbnQoZSl9bGFzdEluY2x1c2l2ZURlc2NlbmRhbnQoZSl7cmV0dXJuIHRoaXMuc3ltYm9sVHJlZS5sYXN0SW5jbHVzaXZlRGVzY2VuZGFudChlKX1wcmVjZWRpbmcoZSx0KXtyZXR1cm4gdGhpcy5zeW1ib2xUcmVlLnByZWNlZGluZyhlLHQpfWZvbGxvd2luZyhlLHQpe3JldHVybiB0aGlzLnN5bWJvbFRyZWUuZm9sbG93aW5nKGUsdCl9Y2hpbGRyZW5Ub0FycmF5KGUsdCl7cmV0dXJuIHRoaXMuc3ltYm9sVHJlZS5jaGlsZHJlblRvQXJyYXkoZSx0KX1hbmNlc3RvcnNUb0FycmF5KGUsdCl7cmV0dXJuIHRoaXMuc3ltYm9sVHJlZS5hbmNlc3RvcnNUb0FycmF5KGUsdCl9dHJlZVRvQXJyYXkoZSx0KXtyZXR1cm4gdGhpcy5zeW1ib2xUcmVlLnRyZWVUb0FycmF5KGUsdCl9Y2hpbGRyZW5JdGVyYXRvcihlLHQpe3JldHVybiB0aGlzLnN5bWJvbFRyZWUuY2hpbGRyZW5JdGVyYXRvcihlLHQpfXByZXZpb3VzU2libGluZ3NJdGVyYXRvcihlKXtyZXR1cm4gdGhpcy5zeW1ib2xUcmVlLnByZXZpb3VzU2libGluZ3NJdGVyYXRvcihlKX1uZXh0U2libGluZ3NJdGVyYXRvcihlKXtyZXR1cm4gdGhpcy5zeW1ib2xUcmVlLm5leHRTaWJsaW5nc0l0ZXJhdG9yKGUpfWFuY2VzdG9yc0l0ZXJhdG9yKGUpe3JldHVybiB0aGlzLnN5bWJvbFRyZWUuYW5jZXN0b3JzSXRlcmF0b3IoZSl9dHJlZUl0ZXJhdG9yKGUsdCl7cmV0dXJuIHRoaXMuc3ltYm9sVHJlZS50cmVlSXRlcmF0b3IoZSx0KX1pbmRleChlKXtyZXR1cm4gdGhpcy5zeW1ib2xUcmVlLmluZGV4KGUpfWNoaWxkcmVuQ291bnQoZSl7cmV0dXJuIHRoaXMuc3ltYm9sVHJlZS5jaGlsZHJlbkNvdW50KGUpfWNvbXBhcmVUcmVlUG9zaXRpb24oZSx0KXtyZXR1cm4gdGhpcy5zeW1ib2xUcmVlLmNvbXBhcmVUcmVlUG9zaXRpb24oZSx0KX1yZW1vdmUoZSl7cmV0dXJuIHRoaXMuc3ltYm9sVHJlZS5yZW1vdmUoZSl9aW5zZXJ0QmVmb3JlKGUsdCl7cmV0dXJuIHRoaXMuc3ltYm9sVHJlZS5pbnNlcnRCZWZvcmUoZSx0KX1pbnNlcnRBZnRlcihlLHQpe3JldHVybiB0aGlzLnN5bWJvbFRyZWUuaW5zZXJ0QWZ0ZXIoZSx0KX1wcmVwZW5kQ2hpbGQoZSx0KXtyZXR1cm4gdGhpcy5zeW1ib2xUcmVlLnByZXBlbmRDaGlsZChlLHQpfWFwcGVuZENoaWxkKGUsdCl7cmV0dXJuIHRoaXMuc3ltYm9sVHJlZS5hcHBlbmRDaGlsZChlLHQpfXRvSnNvbldpdGhIaWVyYWNoeShlKXtsZXQgdD1pKGE9PntsZXQgcj1bXTtpZih0aGlzLmhhc0NoaWxkcmVuKGEpKXtsZXQgbj10aGlzLmNoaWxkcmVuVG9BcnJheShhLHt9KTtmb3IobGV0IG8gb2YgbilyLnB1c2godChvKSl9cmV0dXJue2RhdGE6YSxjaGlsZHJlbjpyfX0sImJ1aWxkTm9kZSIpO3JldHVybiB0KGUpfWZyb21Kc29uV2l0aEhpZXJhY2h5KGUsdCl7bGV0IGE9aSgocixuKT0+e2xldCBvPXQ/dChyLmRhdGEpOnIuZGF0YTt0aGlzLmluaXRpYWxpemUobyksbiYmdGhpcy5hcHBlbmRDaGlsZChuLG8pO2ZvcihsZXQgbCBvZiByLmNoaWxkcmVuKWEobCxvKTtyZXR1cm4gb30sImJ1aWxkVHJlZSIpO3JldHVybiBhKGUpfX19KTt2YXIgRnM9e307eXQoRnMse0FzeW5jRXhlY3V0aW9uU3RhY2s6KCk9PnZoZSxCYWNrcHJlc3N1cmVkQXJyYXk6KCk9PnhoZSxGYXN0TWFwOigpPT5yMyxJbnRlcmVzdDooKT0+WXksSW50ZXJlc3RNYXA6KCk9PmtoZSxMaW1pdGVkQXJyYXk6KCk9PlNoZSxMb29wVHJhY2tlcjooKT0+X2hlLE9iamVjdE1hcDooKT0+YjAsU3RyaW5nbWFwOigpPT5aeSxUaW1lZEFnZ3JlZ2F0b3I6KCk9Plh5LFRpbWVkQWdncmVndG9yOigpPT5YeSxUcmVlOigpPT5DaGUsdW5pOigpPT5kbXR9KTt2YXIgdTk9ZygoKT0+e2xtdCgpO2NtdCgpO0FhZSgpO3doZSgpO3loZSgpO3VtdCgpO3BtdCgpO0t5KCk7TWhlKCk7emhlKCk7emhlKCk7aG10KCl9KTt2YXIgVHA9e307eXQoVHAse2FyZVVpbnQ4QXJyYXlzRXF1YWw6KCk9PnNQYSxhc3NlcnRVaW50OEFycmF5OigpPT5DcCxhc3NlcnRVaW50OEFycmF5T3JBcnJheUJ1ZmZlcjooKT0+dm10LGJhc2U2NFRvU3RyaW5nOigpPT5jUGEsYmFzZTY0VG9VaW50OEFycmF5OigpPT5rbXQsY29tcGFyZVVpbnQ4QXJyYXlzOigpPT5pUGEsY29uY2F0VWludDhBcnJheXM6KCk9PmFQYSxnZXRVaW50QkU6KCk9PmhQYSxoZXhUb1VpbnQ4QXJyYXk6KCk9PnBQYSxpbmNsdWRlczooKT0+ZlBhLGluZGV4T2Y6KCk9PlNtdCxpc1VpbnQ4QXJyYXk6KCk9PlRoZSxzdHJpbmdUb0Jhc2U2NDooKT0+bFBhLHN0cmluZ1RvVWludDhBcnJheTooKT0+eW10LHRvVWludDhBcnJheTooKT0+dFBhLHVpbnQ4QXJyYXlUb0Jhc2U2NDooKT0+d210LHVpbnQ4QXJyYXlUb0hleDooKT0+dVBhLHVpbnQ4QXJyYXlUb1N0cmluZzooKT0+eG10fSk7ZnVuY3Rpb24gZm10KHMsZSx0KXtyZXR1cm4gcz9zLmNvbnN0cnVjdG9yPT09ZT8hMDpaRWEuY2FsbChzKT09PXQ6ITF9ZnVuY3Rpb24gVGhlKHMpe3JldHVybiBmbXQocyxVaW50OEFycmF5LFhFYSl9ZnVuY3Rpb24gSkVhKHMpe3JldHVybiBmbXQocyxBcnJheUJ1ZmZlcixRRWEpfWZ1bmN0aW9uIGVQYShzKXtyZXR1cm4gVGhlKHMpfHxKRWEocyl9ZnVuY3Rpb24gQ3Aocyl7aWYoIVRoZShzKSl0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCBcYFVpbnQ4QXJyYXlcYCwgZ290IFxgJHt0eXBlb2Ygc31cYGApfWZ1bmN0aW9uIHZtdChzKXtpZighZVBhKHMpKXRocm93IG5ldyBUeXBlRXJyb3IoYEV4cGVjdGVkIFxgVWludDhBcnJheVxgIG9yIFxgQXJyYXlCdWZmZXJcYCwgZ290IFxgJHt0eXBlb2Ygc31cYGApfWZ1bmN0aW9uIHRQYShzKXtpZihzIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpcmV0dXJuIG5ldyBVaW50OEFycmF5KHMpO2lmKEFycmF5QnVmZmVyLmlzVmlldyhzKSlyZXR1cm4gbmV3IFVpbnQ4QXJyYXkocy5idWZmZXIscy5ieXRlT2Zmc2V0LHMuYnl0ZUxlbmd0aCk7dGhyb3cgbmV3IFR5cGVFcnJvcihgVW5zdXBwb3J0ZWQgdmFsdWUsIGdvdCBcYCR7dHlwZW9mIHN9XGAuYCl9ZnVuY3Rpb24gYVBhKHMsZSl7aWYocy5sZW5ndGg9PT0wKXJldHVybiBuZXcgVWludDhBcnJheSgwKTtlPz89cy5yZWR1Y2UoKHIsbik9PnIrbi5sZW5ndGgsMCk7bGV0IHQ9bmV3IFVpbnQ4QXJyYXkoZSksYT0wO2ZvcihsZXQgciBvZiBzKUNwKHIpLHQuc2V0KHIsYSksYSs9ci5sZW5ndGg7cmV0dXJuIHR9ZnVuY3Rpb24gc1BhKHMsZSl7aWYoQ3AocyksQ3AoZSkscz09PWUpcmV0dXJuITA7aWYocy5sZW5ndGghPT1lLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IHQ9MDt0PHMubGVuZ3RoO3QrKylpZihzW3RdIT09ZVt0XSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBpUGEocyxlKXtDcChzKSxDcChlKTtsZXQgdD1NYXRoLm1pbihzLmxlbmd0aCxlLmxlbmd0aCk7Zm9yKGxldCBhPTA7YTx0O2ErKyl7bGV0IHI9c1thXS1lW2FdO2lmKHIhPT0wKXJldHVybiBNYXRoLnNpZ24ocil9cmV0dXJuIE1hdGguc2lnbihzLmxlbmd0aC1lLmxlbmd0aCl9ZnVuY3Rpb24geG10KHMsZT0idXRmOCIpe3JldHVybiB2bXQocyksbW10W2VdPz89bmV3IGdsb2JhbFRoaXMuVGV4dERlY29kZXIoZSksbW10W2VdLmRlY29kZShzKX1mdW5jdGlvbiBReShzKXtpZih0eXBlb2YgcyE9InN0cmluZyIpdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgXGBzdHJpbmdcYCwgZ290IFxgJHt0eXBlb2Ygc31cYGApfWZ1bmN0aW9uIHltdChzKXtyZXR1cm4gUXkocyksclBhLmVuY29kZShzKX1mdW5jdGlvbiBvUGEocyl7cmV0dXJuIHMucmVwbGFjZUFsbCgiKyIsIi0iKS5yZXBsYWNlQWxsKCIvIiwiXyIpLnJlcGxhY2UoLz0rJC8sIiIpfWZ1bmN0aW9uIG5QYShzKXtsZXQgZT1zLnJlcGxhY2VBbGwoIi0iLCIrIikucmVwbGFjZUFsbCgiXyIsIi8iKSx0PSg0LWUubGVuZ3RoJTQpJTQ7cmV0dXJuIGUrIj0iLnJlcGVhdCh0KX1mdW5jdGlvbiB3bXQocyx7dXJsU2FmZTplPSExfT17fSl7Q3Aocyk7bGV0IHQ9IiI7Zm9yKGxldCBhPTA7YTxzLmxlbmd0aDthKz1nbXQpe2xldCByPXMuc3ViYXJyYXkoYSxhK2dtdCk7dCs9Z2xvYmFsVGhpcy5idG9hKFN0cmluZy5mcm9tQ29kZVBvaW50LmFwcGx5KHZvaWQgMCxyKSl9cmV0dXJuIGU/b1BhKHQpOnR9ZnVuY3Rpb24ga210KHMpe3JldHVybiBReShzKSxVaW50OEFycmF5LmZyb20oZ2xvYmFsVGhpcy5hdG9iKG5QYShzKSksZT0+ZS5jb2RlUG9pbnRBdCgwKSl9ZnVuY3Rpb24gbFBhKHMse3VybFNhZmU6ZT0hMX09e30pe3JldHVybiBReShzKSx3bXQoeW10KHMpLHt1cmxTYWZlOmV9KX1mdW5jdGlvbiBjUGEocyl7cmV0dXJuIFF5KHMpLHhtdChrbXQocykpfWZ1bmN0aW9uIHVQYShzKXtDcChzKTtsZXQgZT0iIjtmb3IobGV0IHQ9MDt0PHMubGVuZ3RoO3QrKyllKz1kUGFbc1t0XV07cmV0dXJuIGV9ZnVuY3Rpb24gcFBhKHMpe2lmKFF5KHMpLHMubGVuZ3RoJTIhPT0wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBIZXggc3RyaW5nIGxlbmd0aC4iKTtsZXQgZT1zLmxlbmd0aC8yLHQ9bmV3IFVpbnQ4QXJyYXkoZSk7Zm9yKGxldCBhPTA7YTxlO2ErKyl7bGV0IHI9Ym10W3NbYSoyXV0sbj1ibXRbc1thKjIrMV1dO2lmKHI9PT12b2lkIDB8fG49PT12b2lkIDApdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIEhleCBjaGFyYWN0ZXIgZW5jb3VudGVyZWQgYXQgcG9zaXRpb24gJHthKjJ9YCk7dFthXT1yPDw0fG59cmV0dXJuIHR9ZnVuY3Rpb24gaFBhKHMpe2xldHtieXRlTGVuZ3RoOmV9PXM7aWYoZT09PTYpcmV0dXJuIHMuZ2V0VWludDE2KDApKjIqKjMyK3MuZ2V0VWludDMyKDIpO2lmKGU9PT01KXJldHVybiBzLmdldFVpbnQ4KDApKjIqKjMyK3MuZ2V0VWludDMyKDEpO2lmKGU9PT00KXJldHVybiBzLmdldFVpbnQzMigwKTtpZihlPT09MylyZXR1cm4gcy5nZXRVaW50OCgwKSoyKioxNitzLmdldFVpbnQxNigxKTtpZihlPT09MilyZXR1cm4gcy5nZXRVaW50MTYoMCk7aWYoZT09PTEpcmV0dXJuIHMuZ2V0VWludDgoMCl9ZnVuY3Rpb24gU210KHMsZSl7bGV0IHQ9cy5sZW5ndGgsYT1lLmxlbmd0aDtpZihhPT09MHx8YT50KXJldHVybi0xO2xldCByPXQtYTtmb3IobGV0IG49MDtuPD1yO24rKyl7bGV0IG89ITA7Zm9yKGxldCBsPTA7bDxhO2wrKylpZihzW24rbF0hPT1lW2xdKXtvPSExO2JyZWFrfWlmKG8pcmV0dXJuIG59cmV0dXJuLTF9ZnVuY3Rpb24gZlBhKHMsZSl7cmV0dXJuIFNtdChzLGUpIT09LTF9dmFyIFpFYSxYRWEsUUVhLG1tdCxyUGEsZ210LGRQYSxibXQsX210PWcoKCk9PntaRWE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxYRWE9IltvYmplY3QgVWludDhBcnJheV0iLFFFYT0iW29iamVjdCBBcnJheUJ1ZmZlcl0iO2koZm10LCJpc1R5cGUiKTtpKFRoZSwiaXNVaW50OEFycmF5Iik7aShKRWEsImlzQXJyYXlCdWZmZXIiKTtpKGVQYSwiaXNVaW50OEFycmF5T3JBcnJheUJ1ZmZlciIpO2koQ3AsImFzc2VydFVpbnQ4QXJyYXkiKTtpKHZtdCwiYXNzZXJ0VWludDhBcnJheU9yQXJyYXlCdWZmZXIiKTtpKHRQYSwidG9VaW50OEFycmF5Iik7aShhUGEsImNvbmNhdFVpbnQ4QXJyYXlzIik7aShzUGEsImFyZVVpbnQ4QXJyYXlzRXF1YWwiKTtpKGlQYSwiY29tcGFyZVVpbnQ4QXJyYXlzIik7bW10PXt1dGY4Om5ldyBnbG9iYWxUaGlzLlRleHREZWNvZGVyKCJ1dGY4Iil9O2koeG10LCJ1aW50OEFycmF5VG9TdHJpbmciKTtpKFF5LCJhc3NlcnRTdHJpbmciKTtyUGE9bmV3IGdsb2JhbFRoaXMuVGV4dEVuY29kZXI7aSh5bXQsInN0cmluZ1RvVWludDhBcnJheSIpO2kob1BhLCJiYXNlNjRUb0Jhc2U2NFVybCIpO2koblBhLCJiYXNlNjRVcmxUb0Jhc2U2NCIpO2dtdD02NTUzNTtpKHdtdCwidWludDhBcnJheVRvQmFzZTY0Iik7aShrbXQsImJhc2U2NFRvVWludDhBcnJheSIpO2kobFBhLCJzdHJpbmdUb0Jhc2U2NCIpO2koY1BhLCJiYXNlNjRUb1N0cmluZyIpO2RQYT1BcnJheS5mcm9tKHtsZW5ndGg6MjU2fSwocyxlKT0+ZS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKTtpKHVQYSwidWludDhBcnJheVRvSGV4Iik7Ym10PXswOjAsMToxLDI6MiwzOjMsNDo0LDU6NSw2OjYsNzo3LDg6OCw5OjksYToxMCxiOjExLGM6MTIsZDoxMyxlOjE0LGY6MTUsQToxMCxCOjExLEM6MTIsRDoxMyxFOjE0LEY6MTV9O2kocFBhLCJoZXhUb1VpbnQ4QXJyYXkiKTtpKGhQYSwiZ2V0VWludEJFIik7aShTbXQsImluZGV4T2YiKTtpKGZQYSwiaW5jbHVkZXMiKX0pO3ZhciBNbXQ9ZygoKT0+e19tdCgpfSk7dmFyIHkxPXt9O3l0KHkxLHtiYXNlNjRUb1VpbnQ4QXJyYXk6KCk9PnZQYSxlbnN1cmVQdXJlVWludDhBcnJheTooKT0+d1BhLGlzQnVmZmVyTGlrZTooKT0+eVBhLGlzVWludDhBcnJheTooKT0+eFBhLHVJbnQ4QXJyYXlFeHRyYXM6KCk9PmdQYSx1SW50OEFycmF5VG9CYXNlNjQ6KCk9PmJQYX0pO2Z1bmN0aW9uIGJQYShzKXtyZXR1cm4gVHAudWludDhBcnJheVRvQmFzZTY0KHMpfWZ1bmN0aW9uIHZQYShzKXtyZXR1cm4gVHAuYmFzZTY0VG9VaW50OEFycmF5KHMpfWZ1bmN0aW9uIHlQYShzKXtyZXR1cm4gcyYmdHlwZW9mIHMuYnl0ZUxlbmd0aD09Im51bWJlciI/ITA6dHlwZW9mIEJ1ZmZlcjwidSImJkJ1ZmZlci5pc0J1ZmZlcj9CdWZmZXIuaXNCdWZmZXIocyk6ITF9ZnVuY3Rpb24gd1BhKHMpe2xldCBlPW5ldyBVaW50OEFycmF5KHMubGVuZ3RoKTtyZXR1cm4gZS5zZXQocyksZX12YXIgZ1BhLHhQYSwkaGU9ZygoKT0+e01tdCgpO2dQYT1UcDtpKGJQYSwidUludDhBcnJheVRvQmFzZTY0Iik7aSh2UGEsImJhc2U2NFRvVWludDhBcnJheSIpO3hQYT1pKHM9PlRwLmlzVWludDhBcnJheShzKSwiaXNVaW50OEFycmF5Iik7aSh5UGEsImlzQnVmZmVyTGlrZSIpO2kod1BhLCJlbnN1cmVQdXJlVWludDhBcnJheSIpfSk7dmFyIEp5PWcoKCk9PntpbygpfSk7dmFyIGV3LE5hZT1nKCgpPT57SnkoKTtldz1jbGFzc3tzdGF0aWN7aSh0aGlzLCJHdWFyZCIpfWNvbnN0cnVjdG9yKGUsdCl7dGhpcy5ndWFyZEZ1bmN0aW9uPWUsdGhpcy5vcHRpb25zPXR9YXN5bmMgZXhlYyhlKXtyZXR1cm4gYXdhaXQgdGhpcy5ndWFyZEZ1bmN0aW9uKGUpfWFzeW5jIGdldEZhaWxlZEhpbnQoZSl7cmV0dXJuIGF3YWl0IHRoaXMuZXhlYyhlKT9udWxsOnRoaXMub3B0aW9ucy5mYWlsZWRIaW50fX19KTt2YXIgdHcsRGhlPWcoKCk9PntKeSgpO3R3PWNsYXNzIGV4dGVuZHMgRXJyb3J7c3RhdGlje2kodGhpcywiR3VhcmRFcnJvciIpfWNvbnN0cnVjdG9yKGUpe3N1cGVyKGUpLHRoaXMubmFtZT0iR3VhcmRFcnJvciJ9fX0pO3ZhciBhdyxMaGU9ZygoKT0+e0p5KCk7TmFlKCk7YXc9Y2xhc3MgZXh0ZW5kcyBld3tzdGF0aWN7aSh0aGlzLCJHdWFyZFNldCIpfWNvbnN0cnVjdG9yKGU9W10pe3N1cGVyKGFzeW5jIHQ9PnRoaXMuYWxsR3VhcmRzUGFzcyh0KSksdGhpcy5ndWFyZHM9ZX1hc3luYyBleGVjQWxsV2l0aERhdGEoZSx0PXttb2RlOiJwYXJhbGxlbCIsc3RvcE9uRmFpbDohMX0pe2xldCBhPVtdO2ZvcihsZXQgbiBvZiB0aGlzLmd1YXJkcyl7bGV0IG89bi5leGVjKGUpO2lmKHQubW9kZT09PSJzZXJpYWwiJiZhd2FpdCBvLGEucHVzaChvKSx0LnN0b3BPbkZhaWwmJiFhd2FpdCBvKXJldHVybiBhd2FpdCBQcm9taXNlLmFsbChhKX1yZXR1cm4gYXdhaXQgUHJvbWlzZS5hbGwoYSl9YXN5bmMgYWxsR3VhcmRzUGFzcyhlLHQ9e21vZGU6InBhcmFsbGVsIixzdG9wT25GYWlsOiExfSl7cmV0dXJuKGF3YWl0IHRoaXMuZXhlY0FsbFdpdGhEYXRhKGUsdCkpLmV2ZXJ5KHI9PnIpfWFzeW5jIGFueUd1YXJkc1Bhc3MoZSl7cmV0dXJuKGF3YWl0IHRoaXMuZXhlY0FsbFdpdGhEYXRhKGUse21vZGU6InBhcmFsbGVsIixzdG9wT25GYWlsOiExfSkpLnNvbWUoYT0+YSl9Z2V0RmFpbGVkSGludChlKXtmb3IobGV0IHQgb2YgdGhpcy5ndWFyZHMpe2xldCBhPXQuZ2V0RmFpbGVkSGludChlKTtpZihhKXJldHVybiBhfX19fSk7dmFyIHYwPXt9O3l0KHYwLHtHdWFyZDooKT0+ZXcsR3VhcmRFcnJvcjooKT0+dHcsR3VhcmRTZXQ6KCk9PmF3LHBhc3NHdWFyZHNPclJlamVjdDooKT0+a1BhfSk7dmFyIGtQYSxFaGU9ZygoKT0+e0p5KCk7TmFlKCk7RGhlKCk7TmFlKCk7TGhlKCk7TGhlKCk7RGhlKCk7a1BhPWkoYXN5bmMocyxlKT0+e2xldCB0PW5ldyBhdyhlKTtpZighYXdhaXQgdC5hbGxHdWFyZHNQYXNzKHMpKXtsZXQgcj1hd2FpdCB0LmdldEZhaWxlZEhpbnQocyk7dGhyb3cgbmV3IHR3KGBHdWFyZHMgZmFpbGVkOgoke3J9CiAgICBgKX19LCJwYXNzR3VhcmRzT3JSZWplY3QiKX0pO3ZhciBmOSxQaGU9ZygoKT0+e2Y5PWNsYXNze3N0YXRpY3tpKHRoaXMsIkludGVyY2VwdG9yTWFuYWdlciIpfWNvbnN0cnVjdG9yKCl7dGhpcy5yZXF1ZXN0SW50ZXJjZXB0b3JzPVtdLHRoaXMucmVzcG9uc2VJbnRlcmNlcHRvcnM9W10sdGhpcy5lcnJvckludGVyY2VwdG9ycz1bXX1hZGRSZXF1ZXN0SW50ZXJjZXB0b3IoZSl7dGhpcy5yZXF1ZXN0SW50ZXJjZXB0b3JzLnB1c2goZSl9YWRkUmVzcG9uc2VJbnRlcmNlcHRvcihlKXt0aGlzLnJlc3BvbnNlSW50ZXJjZXB0b3JzLnB1c2goZSl9YWRkRXJyb3JJbnRlcmNlcHRvcihlKXt0aGlzLmVycm9ySW50ZXJjZXB0b3JzLnB1c2goZSl9cmVtb3ZlUmVxdWVzdEludGVyY2VwdG9yKGUpe2xldCB0PXRoaXMucmVxdWVzdEludGVyY2VwdG9ycy5pbmRleE9mKGUpO3Q+LTEmJnRoaXMucmVxdWVzdEludGVyY2VwdG9ycy5zcGxpY2UodCwxKX1yZW1vdmVSZXNwb25zZUludGVyY2VwdG9yKGUpe2xldCB0PXRoaXMucmVzcG9uc2VJbnRlcmNlcHRvcnMuaW5kZXhPZihlKTt0Pi0xJiZ0aGlzLnJlc3BvbnNlSW50ZXJjZXB0b3JzLnNwbGljZSh0LDEpfXJlbW92ZUVycm9ySW50ZXJjZXB0b3IoZSl7bGV0IHQ9dGhpcy5lcnJvckludGVyY2VwdG9ycy5pbmRleE9mKGUpO3Q+LTEmJnRoaXMuZXJyb3JJbnRlcmNlcHRvcnMuc3BsaWNlKHQsMSl9Y2xlYXJBbGwoKXt0aGlzLnJlcXVlc3RJbnRlcmNlcHRvcnM9W10sdGhpcy5yZXNwb25zZUludGVyY2VwdG9ycz1bXSx0aGlzLmVycm9ySW50ZXJjZXB0b3JzPVtdfWFzeW5jIHByb2Nlc3NSZXF1ZXN0KGUpe2xldCB0PWU7Zm9yKGxldCBhIG9mIHRoaXMucmVxdWVzdEludGVyY2VwdG9ycyl0cnl7dD1hd2FpdCBhKHQpfWNhdGNoKHIpe3Rocm93IGF3YWl0IHRoaXMucHJvY2Vzc0Vycm9yKHIgaW5zdGFuY2VvZiBFcnJvcj9yOm5ldyBFcnJvcihTdHJpbmcocikpKX1yZXR1cm4gdH1hc3luYyBwcm9jZXNzUmVzcG9uc2UoZSl7bGV0IHQ9ZTtmb3IobGV0IGEgb2YgdGhpcy5yZXNwb25zZUludGVyY2VwdG9ycyl0cnl7dD1hd2FpdCBhKHQpfWNhdGNoKHIpe3Rocm93IGF3YWl0IHRoaXMucHJvY2Vzc0Vycm9yKHIgaW5zdGFuY2VvZiBFcnJvcj9yOm5ldyBFcnJvcihTdHJpbmcocikpKX1yZXR1cm4gdH1hc3luYyBwcm9jZXNzRXJyb3IoZSl7bGV0IHQ9ZTtmb3IobGV0IGEgb2YgdGhpcy5lcnJvckludGVyY2VwdG9ycyl0cnl7dD1hd2FpdCBhKHQpfWNhdGNoKHIpe3Q9ciBpbnN0YW5jZW9mIEVycm9yP3I6bmV3IEVycm9yKFN0cmluZyhyKSl9cmV0dXJuIHR9Z2V0SW50ZXJjZXB0b3JDb3VudHMoKXtyZXR1cm57cmVxdWVzdDp0aGlzLnJlcXVlc3RJbnRlcmNlcHRvcnMubGVuZ3RoLHJlc3BvbnNlOnRoaXMucmVzcG9uc2VJbnRlcmNlcHRvcnMubGVuZ3RoLGVycm9yOnRoaXMuZXJyb3JJbnRlcmNlcHRvcnMubGVuZ3RofX19fSk7dmFyIHptdD1nKCgpPT57aW8oKX0pO3ZhciBDbXQ9ZygoKT0+e30pO3ZhciBJaGUsVG10PWcoKCk9Pnt6bXQoKTtDbXQoKTtJaGU9Y2xhc3N7c3RhdGlje2kodGhpcywiU21hcnRlbnYiKX1jb25zdHJ1Y3Rvcigpe3RoaXMubG9hZGVkU2NyaXB0cz1bXX1hc3luYyBnZXRFbnZBd2FyZU1vZHVsZShlKXtpZih0aGlzLmlzTm9kZSlyZXR1cm4gYXdhaXQgdGhpcy5nZXRTYWZlTm9kZU1vZHVsZShlLm5vZGVNb2R1bGVOYW1lKTtpZih0aGlzLmlzQnJvd3NlcilyZXR1cm4gYXdhaXQgdGhpcy5nZXRTYWZlV2ViTW9kdWxlKGUud2ViVXJsQXJnLGUuZ2V0RnVuY3Rpb24pO2NvbnNvbGUuZXJyb3IoInBsYXRmb3JtIGZvciBsb2FkaW5nIG5vdCBzdXBwb3J0ZWQgYnkgc21hcnRlbnYiKX1hc3luYyBnZXRTYWZlTm9kZU1vZHVsZShlLHQpe2lmKCF0aGlzLmlzTm9kZSYmIXRoaXMuaXNEZW5vJiYhdGhpcy5pc0J1bil7Y29uc29sZS5lcnJvcihgWW91IHRyaWVkIHRvIGxvYWQgYSBzZXJ2ZXIgbW9kdWxlIGluIGEgd3JvbmcgY29udGV4dDogJHtlfS4gVGhpcyBkb2VzIG5vdCB0aHJvdy5gKTtyZXR1cm59bGV0IGE9YXdhaXQgbmV3IEZ1bmN0aW9uKGByZXR1cm4gaW1wb3J0KCcke2V9JylgKSgpO3JldHVybiB0JiZhd2FpdCB0KGEpLGF9YXN5bmMgZ2V0U2FmZVdlYk1vZHVsZShlLHQpe2lmKCF0aGlzLmlzQnJvd3Nlcil7Y29uc29sZS5lcnJvcigiWW91IHRyaWVkIHRvIGxvYWQgYSB3ZWIgbW9kdWxlIGluIGEgd3JvbmcgY29udGV4dCIpO3JldHVybn1pZih0aGlzLmxvYWRlZFNjcmlwdHMuaW5jbHVkZXMoZSkpcmV0dXJuIHQoKTt0aGlzLmxvYWRlZFNjcmlwdHMucHVzaChlKTtsZXQgYT1tdC5kZWZlcigpLHI9Z2xvYmFsVGhpcztpZihyLmltcG9ydFNjcmlwdHMpci5pbXBvcnRTY3JpcHRzKGUpLGEucmVzb2x2ZSgpO2Vsc2V7bGV0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7bi5vbmxvYWQ9KCk9PnthLnJlc29sdmUoKX0sbi5zcmM9ZSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKG4pfXJldHVybiBhd2FpdCBhLnByb21pc2UsdCgpfWdldCBydW50aW1lRW52KCl7bGV0IGU9Z2xvYmFsVGhpcztyZXR1cm4gdHlwZW9mIGUuRGVubzwidSImJnR5cGVvZiBlLkRlbm8udmVyc2lvbjwidSI/ImRlbm8iOnR5cGVvZiBlLkJ1bjwidSImJnR5cGVvZiBlLkJ1bi52ZXJzaW9uPCJ1Ij8iYnVuIjp0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzPCJ1IiYmdHlwZW9mIGdsb2JhbFRoaXMucHJvY2Vzcz8udmVyc2lvbnM/Lm5vZGU8InUiPyJub2RlIjoodHlwZW9mIGdsb2JhbFRoaXMud2luZG93PCJ1IiYmdHlwZW9mIGdsb2JhbFRoaXMuZG9jdW1lbnQ8InUiLCJicm93c2VyIil9Z2V0IGlzQnJvd3Nlcigpe3JldHVybiB0aGlzLnJ1bnRpbWVFbnY9PT0iYnJvd3NlciJ9Z2V0IGlzTm9kZSgpe3JldHVybiB0aGlzLnJ1bnRpbWVFbnY9PT0ibm9kZSJ9Z2V0IGlzRGVubygpe3JldHVybiB0aGlzLnJ1bnRpbWVFbnY9PT0iZGVubyJ9Z2V0IGlzQnVuKCl7cmV0dXJuIHRoaXMucnVudGltZUVudj09PSJidW4ifWdldCB1c2VyQWdlbnQoKXtyZXR1cm4gdGhpcy5pc0Jyb3dzZXI/bmF2aWdhdG9yLnVzZXJBZ2VudDoidW5kZWZpbmVkIn1nZXQgbm9kZVZlcnNpb24oKXtyZXR1cm4gdGhpcy5pc05vZGU/cHJvY2Vzcy52ZXJzaW9uOiJ1bmRlZmluZWQifWdldCBkZW5vVmVyc2lvbigpe3JldHVybiB0aGlzLmlzRGVubz9nbG9iYWxUaGlzLkRlbm8/LnZlcnNpb24/LmRlbm8/PyJ1bmRlZmluZWQiOiJ1bmRlZmluZWQifWdldCBidW5WZXJzaW9uKCl7cmV0dXJuIHRoaXMuaXNCdW4/Z2xvYmFsVGhpcy5CdW4/LnZlcnNpb24/PyJ1bmRlZmluZWQiOiJ1bmRlZmluZWQifWFzeW5jIGdldFNhZmVNb2R1bGVGb3IoZSx0LGEpe2xldCByO2lmKEFycmF5LmlzQXJyYXkoZSk/cj1lLmZsYXRNYXAobj0+bj09PSJzZXJ2ZXIiP1sibm9kZSIsImRlbm8iLCJidW4iXTpbbl0pOmU9PT0ic2VydmVyIj9yPVsibm9kZSIsImRlbm8iLCJidW4iXTpyPVtlXSwhci5pbmNsdWRlcyh0aGlzLnJ1bnRpbWVFbnYpKXtjb25zb2xlLndhcm4oYE1vZHVsZSAiJHt0fSIgcmVxdWVzdGVkIGZvciBydW50aW1lKHMpIFske3Iuam9pbigiLCAiKX1dIGJ1dCBjdXJyZW50IHJ1bnRpbWUgaXMgIiR7dGhpcy5ydW50aW1lRW52fSIuIFNraXBwaW5nIGxvYWQuYCk7cmV0dXJufWlmKHRoaXMuaXNOb2RlfHx0aGlzLmlzRGVub3x8dGhpcy5pc0J1bilyZXR1cm4gYXdhaXQgdGhpcy5nZXRTYWZlTm9kZU1vZHVsZSh0KTtpZih0aGlzLmlzQnJvd3Nlcil7aWYoIWEpe2NvbnNvbGUuZXJyb3IoYEJyb3dzZXIgbW9kdWxlIGxvYWQgcmVxdWlyZXMgZ2V0RnVuY3Rpb24gcGFyYW1ldGVyIGZvciAiJHt0fSJgKTtyZXR1cm59cmV0dXJuIGF3YWl0IHRoaXMuZ2V0U2FmZVdlYk1vZHVsZSh0LGEpfX1nZXQgaXNDSSgpe3JldHVybiB0aGlzLmlzTm9kZT8hIXByb2Nlc3MuZW52LkNJOiExfWFzeW5jIGlzTWFjQXN5bmMoKXtyZXR1cm4gdGhpcy5pc05vZGV8fHRoaXMuaXNEZW5vfHx0aGlzLmlzQnVuPyhhd2FpdCB0aGlzLmdldFNhZmVOb2RlTW9kdWxlKHRoaXMuaXNEZW5vPyJub2RlOm9zIjoib3MiKSk/LnBsYXRmb3JtKCk9PT0iZGFyd2luIjohMX1hc3luYyBpc1dpbmRvd3NBc3luYygpe3JldHVybiB0aGlzLmlzTm9kZXx8dGhpcy5pc0Rlbm98fHRoaXMuaXNCdW4/KGF3YWl0IHRoaXMuZ2V0U2FmZU5vZGVNb2R1bGUodGhpcy5pc0Rlbm8/Im5vZGU6b3MiOiJvcyIpKT8ucGxhdGZvcm0oKT09PSJ3aW4zMiI6ITF9YXN5bmMgaXNMaW51eEFzeW5jKCl7cmV0dXJuIHRoaXMuaXNOb2RlfHx0aGlzLmlzRGVub3x8dGhpcy5pc0J1bj8oYXdhaXQgdGhpcy5nZXRTYWZlTm9kZU1vZHVsZSh0aGlzLmlzRGVubz8ibm9kZTpvcyI6Im9zIikpPy5wbGF0Zm9ybSgpPT09ImxpbnV4IjohMX1hc3luYyBwcmludEVudigpe3RoaXMuaXNOb2RlPyhjb25zb2xlLmxvZygicnVubmluZyBvbiBOT0RFIiksY29uc29sZS5sb2coIm5vZGUgdmVyc2lvbiBpcyAiK3RoaXMubm9kZVZlcnNpb24pKTp0aGlzLmlzRGVubz8oY29uc29sZS5sb2coInJ1bm5pbmcgb24gREVOTyIpLGNvbnNvbGUubG9nKCJkZW5vIHZlcnNpb24gaXMgIit0aGlzLmRlbm9WZXJzaW9uKSk6dGhpcy5pc0J1bj8oY29uc29sZS5sb2coInJ1bm5pbmcgb24gQlVOIiksY29uc29sZS5sb2coImJ1biB2ZXJzaW9uIGlzICIrdGhpcy5idW5WZXJzaW9uKSk6KGNvbnNvbGUubG9nKCJydW5uaW5nIG9uIEJST1dTRVIiKSxjb25zb2xlLmxvZygiYnJvd3NlciBpcyAiK3RoaXMudXNlckFnZW50KSl9fX0pO3ZhciB3MT17fTt5dCh3MSx7U21hcnRlbnY6KCk9PkloZX0pO3ZhciBzdz1nKCgpPT57VG10KCl9KTt2YXIgQWhlLGl3PWcoKCk9PntBaGU9eG4oaXkoKSwxKX0pO3ZhciBSYWU9e307eXQoUmFlLHtjcmVhdGVDcnlwdG9SYW5kb21TdHJpbmc6KCk9PlRQYSxjcmVhdGVSYW5kb21TdHJpbmc6KCk9PkNQYX0pO3ZhciBNUGEselBhLENQYSxUUGEsJG10PWcoKCk9PntpdygpO01QYT1pKChzLGUpPT57aWYodHlwZW9mIGdsb2JhbFRoaXM8InUiJiZnbG9iYWxUaGlzLmNyeXB0byYmZ2xvYmFsVGhpcy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKXtsZXQgdD1lLXMsYT1uZXcgVWludDMyQXJyYXkoMSk7cmV0dXJuIGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhKSxzK2FbMF0ldH1lbHNlIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKGUtcykpK3N9LCJnZXRSYW5kb21JbnQiKSx6UGE9aSgocyxlLHQpPT57bGV0IGE9e0E6IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIixhOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIsMDoiMDEyMzQ1Njc4OSIsIiEiOiIhQCMkJV4mKigpXystPVtde318OzosLjw+PyIsIioiOiJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSFAIyQlXiYqKClfKy09W117fXw7OiwuPD4/In0scj1zO2UmJmU+cy5sZW5ndGg/cj1zLnJlcGVhdChNYXRoLmNlaWwoZS9zLmxlbmd0aCkpLnNsaWNlKDAsZSk6ZSYmKHI9cy5zbGljZSgwLGUpKTtsZXQgbj0iIjtmb3IobGV0IG8gb2YgcilpZihhW29dKXtsZXQgbD1hW29dLHA9TVBhKDAsbC5sZW5ndGgpO24rPWxbcF19ZWxzZSBuKz1vO3JldHVybiBufSwiY3VzdG9tUmFuZG9tYXRpYyIpLENQYT1pKChzLGUsdCk9PnpQYShzLGUsdCksImNyZWF0ZVJhbmRvbVN0cmluZyIpLFRQYT1pKCgpPT5BaGUudW5pKCksImNyZWF0ZUNyeXB0b1JhbmRvbVN0cmluZyIpfSk7dmFyIE9hZT17fTt5dChPYWUse21ha2VFbnZPYmplY3Q6KCk9PiRQYX0pO3ZhciAkUGEsRG10PWcoKCk9PntpdygpOyRQYT1pKGZ1bmN0aW9uKHMpe2xldCBlPXt9LHQ9LyguKik9KC4qKS87aWYodHlwZW9mIHM8InUiKWZvcihsZXQgYSBvZiBzKXtsZXQgcj10LmV4ZWMoYSk7ciYmKGVbclsxXV09clsyXSl9cmV0dXJuIGV9LCJtYWtlRW52T2JqZWN0Iil9KTt2YXIgbmQ9e307eXQobmQse2luZGVudDooKT0+TFBhLGluZGVudFdpdGhQcmVmaXg6KCk9PkVQYSxub3JtYWxpemU6KCk9PlBQYX0pO3ZhciBOaGUsUmhlLERQYSxMUGEsRVBhLFBQYSxMbXQ9ZygoKT0+e2l3KCk7TmhlPWkocz0+e2xldCBlPXMuc3BsaXQoYApgKTtyZXR1cm4gRFBhKGUpfSwic3BsaXRTdHJpbmdBdExpbmVCcmVhayIpLFJoZT1pKHM9PntsZXQgZT0iIjtmb3IobGV0IHQgb2YgcyllPWUrdCtgCmA7cmV0dXJuIGV9LCJqb2luU3RyaW5nV2l0aExpbmVCcmVha3MiKSxEUGE9aShzPT57bGV0IGU9L15bXHNdKiQvO3JldHVybiBlLnRlc3Qoc1swXSkmJnMuc2hpZnQoKSxlLnRlc3Qoc1tzLmxlbmd0aC0xXSkmJnMucG9wKCksc30sImNsZWFuU3RyaW5nQXJyYXkiKSxMUGE9aSgocyxlKT0+e2xldCB0PU5oZShzKTtmb3IobGV0IHIgb2YgdClyPSIgIi5yZXBlYXQoZSkrcjtyZXR1cm4gUmhlKHQpfSwiaW5kZW50IiksRVBhPWkoKHMsZSk9PntsZXQgdCxhPU5oZShzKSxyPVtdO2ZvcihsZXQgbiBvZiBhKXIucHVzaChlK24pO3JldHVybiB0PVJoZShyKSx0fSwiaW5kZW50V2l0aFByZWZpeCIpLFBQYT1pKHM9PntsZXQgZSx0PU5oZShzKSxhLHI9L14oXHMqKS8sbj0vXihccyopJC87Zm9yKGxldCBwIG9mIHQpe2xldCBkPXIuZXhlYyhwKSx1PWQ/ZFsxXToiIjsodHlwZW9mIGE+InUifHx1Lmxlbmd0aDxhKSYmIW4udGVzdChwKSYmKGE9dS5sZW5ndGgpfWxldCBvPVtdLGw9YXx8MDtmb3IobGV0IHAgb2YgdClvLnB1c2gocC5zdWJzdHIobCkpO3JldHVybiBlPVJoZShvKSxlfSwibm9ybWFsaXplIil9KTt2YXIgRmFlPXt9O3l0KEZhZSx7cmVwbGFjZUFsbDooKT0+RW10LHN0YW5kYXJkOigpPT5BUGF9KTt2YXIgRW10LElQYSxBUGEsUG10PWcoKCk9PntFbXQ9aSgocyxlLHQpPT5zLnJlcGxhY2UobmV3IFJlZ0V4cChlLCJnIiksdCksInJlcGxhY2VBbGwiKSxJUGE9aShzPT57bGV0IGU9cy5zcGxpdChgCmApLHQ9MS8wO2ZvcihsZXQgYSBvZiBlKWlmKGEudHJpbSgpLmxlbmd0aD4wKXtsZXQgcj1hLm1hdGNoKC9eKFxzKikvKTtyJiYodD1NYXRoLm1pbih0LHJbMV0ubGVuZ3RoKSl9cmV0dXJuIHQ9PT0xLzB8fHQ9PT0wP3M6ZS5tYXAoYT0+YS5sZW5ndGg+PXQ/YS5zbGljZSh0KTphKS5qb2luKGAKYCl9LCJzdHJpcEluZGVudCIpLEFQYT1pKChzLGUpPT57bGV0IHQ9cztyZXR1cm4oIWV8fGUuc3RyaXBJbmRlbnQpJiYodD1JUGEodCkpLCghZXx8ZS5ub3JtYWxpemVOZXdsaW5lKSYmKHQ9dC5yZXBsYWNlKC9cclxuL2csYApgKSksKCFlfHxlLnJlcGxhY2VUYWJzKSYmKHQ9RW10KHQsIgkvIiwiICIpKSwoIWV8fGUuc3RyaXBMZWFkaW5nVHJhaWxpbmdFbXB0eUxpbmVzKSYmKHQ9dC5yZXBsYWNlKC9eXHMqW1xyXG5dL2dtLCIiKS5yZXBsYWNlKC9ccypbXHJcbl0kL2dtLCIiKSksKCFlfHxlLnN0cmlwQWxsRW1wdHlMaW5lcykmJih0PXQucmVwbGFjZSgvXlxzKltcclxuXS9nbSwiIikpLHR9LCJzdGFuZGFyZCIpfSk7dmFyIE9oZSxCYWUsbTksRmhlPWcoKCk9PntPaGU9e2VuY29kZTppKHM9PntpZih0eXBlb2YgQnVmZmVyPCJ1IilyZXR1cm4gQnVmZmVyLmZyb20ocywidXRmOCIpLnRvU3RyaW5nKCJiYXNlNjQiKTtpZih0eXBlb2YgYnRvYTwidSIpe2xldCBlPW5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShzKSx0PUFycmF5LmZyb20oZSxhPT5TdHJpbmcuZnJvbUNoYXJDb2RlKGEpKS5qb2luKCIiKTtyZXR1cm4gYnRvYSh0KX1lbHNle2xldCBlPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIix0PW5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShzKSxhPSIiLHI9MDtmb3IoO3I8dC5sZW5ndGg7KXtsZXQgbj10W3IrK10sbz1yPHQubGVuZ3RoP3RbcisrXTowLGw9cjx0Lmxlbmd0aD90W3IrK106MCxwPW48PDE2fG88PDh8bDthKz1lLmNoYXJBdChwPj4xOCY2MyksYSs9ZS5jaGFyQXQocD4+MTImNjMpLGErPXItMjx0Lmxlbmd0aD9lLmNoYXJBdChwPj42JjYzKToiPSIsYSs9ci0xPHQubGVuZ3RoP2UuY2hhckF0KHAmNjMpOiI9In1yZXR1cm4gYX19LCJlbmNvZGUiKSxkZWNvZGU6aShzPT57bGV0IGU9cy5yZXBsYWNlKC8tL2csIisiKS5yZXBsYWNlKC9fL2csIi8iKS5wYWRFbmQocy5sZW5ndGgrKDQtcy5sZW5ndGglNCklNCwiPSIpO2lmKHR5cGVvZiBCdWZmZXI8InUiKXJldHVybiBCdWZmZXIuZnJvbShlLCJiYXNlNjQiKS50b1N0cmluZygidXRmOCIpO2lmKHR5cGVvZiBhdG9iPCJ1Iil7bGV0IHQ9YXRvYihlKSxhPW5ldyBVaW50OEFycmF5KHQubGVuZ3RoKTtmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKylhW3JdPXQuY2hhckNvZGVBdChyKTtyZXR1cm4gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGEpfWVsc2V7bGV0IHQ9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLGE9W10scj0wO2Zvcig7cjxlLmxlbmd0aDspe2xldCBuPXQuaW5kZXhPZihlLmNoYXJBdChyKyspKSxvPXQuaW5kZXhPZihlLmNoYXJBdChyKyspKSxsPXQuaW5kZXhPZihlLmNoYXJBdChyKyspKSxwPXQuaW5kZXhPZihlLmNoYXJBdChyKyspKSxkPW48PDE4fG88PDEyfGw8PDZ8cDthLnB1c2goZD4+MTYmMjU1KSxsIT09NjQmJmEucHVzaChkPj44JjI1NSkscCE9PTY0JiZhLnB1c2goZCYyNTUpfXJldHVybiBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUobmV3IFVpbnQ4QXJyYXkoYSkpfX0sImRlY29kZSIpfSxCYWU9Y2xhc3N7c3RhdGlje2kodGhpcywiQmFzZTY0Iil9Y29uc3RydWN0b3IoZSx0KXtzd2l0Y2godCl7Y2FzZSJzdHJpbmciOnRoaXMucmVmU3RyaW5nPWU7YnJlYWs7Y2FzZSJiYXNlNjQiOnRoaXMucmVmU3RyaW5nPW05LmRlY29kZShlKTticmVhaztjYXNlImJhc2U2NHVyaSI6dGhpcy5yZWZTdHJpbmc9bTkuZGVjb2RlKGUpfX1nZXQgc2ltcGxlU3RyaW5nKCl7cmV0dXJuIHRoaXMucmVmU3RyaW5nfWdldCBiYXNlNjRTdHJpbmcoKXtyZXR1cm4gbTkuZW5jb2RlKHRoaXMucmVmU3RyaW5nKX1nZXQgYmFzZTY0VXJpU3RyaW5nKCl7cmV0dXJuIG05LmVuY29kZVVyaSh0aGlzLnJlZlN0cmluZyl9fSxtOT17ZW5jb2RlOmkocz0+T2hlLmVuY29kZShzKSwiZW5jb2RlIiksZW5jb2RlVXJpOmkocz0+T2hlLmVuY29kZShzKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpLnJlcGxhY2UoLz0vZywiIiksImVuY29kZVVyaSIpLGRlY29kZTppKHM9Pk9oZS5kZWNvZGUocyksImRlY29kZSIpLGlzQmFzZTY0Omkocz0+L14oW0EtWmEtejAtOSsvXXs0fSkqKFtBLVphLXowLTkrL117M309fFtBLVphLXowLTkrL117Mn09PSk/JC8udGVzdChzKSwiaXNCYXNlNjQiKX19KTt2YXIgSGFlPXt9O3l0KEhhZSx7aXNCYXNlNjQ6KCk9PlJQYSxpc1V0Zjg6KCk9Pk5QYX0pO3ZhciBOUGEsUlBhLEltdD1nKCgpPT57aXcoKTtGaGUoKTtOUGE9aShzPT57bGV0IHQ9bmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHMpLGE9MDtmb3IoO2E8dC5sZW5ndGg7KXtpZih0W2FdPT09OXx8dFthXT09PTEwfHx0W2FdPT09MTN8fDMyPD10W2FdJiZ0W2FdPD0xMjYpe2ErPTE7Y29udGludWV9aWYoMTk0PD10W2FdJiZ0W2FdPD0yMjMmJjEyODw9dFthKzFdJiZ0W2ErMV08PTE5MSl7YSs9Mjtjb250aW51ZX1pZih0W2FdPT09MjI0JiYxNjA8PXRbYSsxXSYmdFthKzFdPD0xOTEmJjEyODw9dFthKzJdJiZ0W2ErMl08PTE5MXx8KDIyNTw9dFthXSYmdFthXTw9MjM2fHx0W2FdPT09MjM4fHx0W2FdPT09MjM5KSYmMTI4PD10W2ErMV0mJnRbYSsxXTw9MTkxJiYxMjg8PXRbYSsyXSYmdFthKzJdPD0xOTF8fHRbYV09PT0yMzcmJjEyODw9dFthKzFdJiZ0W2ErMV08PTE1OSYmMTI4PD10W2ErMl0mJnRbYSsyXTw9MTkxKXthKz0zO2NvbnRpbnVlfWlmKHRbYV09PT0yNDAmJjE0NDw9dFthKzFdJiZ0W2ErMV08PTE5MSYmMTI4PD10W2ErMl0mJnRbYSsyXTw9MTkxJiYxMjg8PXRbYSszXSYmdFthKzNdPD0xOTF8fDI0MTw9dFthXSYmdFthXTw9MjQzJiYxMjg8PXRbYSsxXSYmdFthKzFdPD0xOTEmJjEyODw9dFthKzJdJiZ0W2ErMl08PTE5MSYmMTI4PD10W2ErM10mJnRbYSszXTw9MTkxfHx0W2FdPT09MjQ0JiYxMjg8PXRbYSsxXSYmdFthKzFdPD0xNDMmJjEyODw9dFthKzJdJiZ0W2ErMl08PTE5MSYmMTI4PD10W2ErM10mJnRbYSszXTw9MTkxKXthKz00O2NvbnRpbnVlfXJldHVybiExfXJldHVybiEwfSwiaXNVdGY4IiksUlBhPWkocz0+e2xldCBlPS9bXkEtWjAtOStcLz1dL2ksdD1zLmxlbmd0aDtpZighdHx8dCU0IT09MHx8ZS50ZXN0KHMpKXJldHVybiExO2xldCBhPXMuaW5kZXhPZigiPSIpO3JldHVybiBhPT09LTF8fGE9PT10LTF8fGE9PT10LTImJnNbdC0xXT09PSI9In0sImlzQmFzZTY0Iil9KTt2YXIgcWFlLEFtdD1nKCgpPT57cWFlPWNsYXNze3N0YXRpY3tpKHRoaXMsIkRvbWFpbiIpfWNvbnN0cnVjdG9yKGUpe3RoaXMucHJvdG9jb2w9dGhpcy5fcHJvdG9jb2xSZWdleChlKSx0aGlzLnByb3RvY29sfHwoZT1gaHR0cHM6Ly8ke2V9YCksdGhpcy5ub2RlUGFyc2VkVXJsPW5ldyBVUkwoZSksdGhpcy5wb3J0PXRoaXMubm9kZVBhcnNlZFVybC5wb3J0O2xldCB0PXRoaXMuX2RvbWFpblJlZ2V4KGUucmVwbGFjZSh0aGlzLm5vZGVQYXJzZWRVcmwucGF0aG5hbWUsIiIpKTtbdGhpcy5sZXZlbDEsdGhpcy5sZXZlbDIsdGhpcy5sZXZlbDMsdGhpcy5sZXZlbDQsdGhpcy5sZXZlbDVdPXQsdGhpcy5mdWxsTmFtZT0iIjtmb3IobGV0IGEgb2YgdCl0aGlzLmZ1bGxOYW1lPT09IiI/dGhpcy5mdWxsTmFtZT1hOnRoaXMuZnVsbE5hbWU9YSsiLiIrdGhpcy5mdWxsTmFtZTt0aGlzLnpvbmVOYW1lPVt0aGlzLmxldmVsMix0aGlzLmxldmVsMV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIi4iKSx0aGlzLnRvcExldmVsPXRoaXMubGV2ZWwxLHRoaXMuZG9tYWluTmFtZT10aGlzLmxldmVsMix0aGlzLnN1YkRvbWFpbj10aGlzLmxldmVsM31fZG9tYWluUmVnZXgoZSl7bGV0IGE9LyhbYS16QS1aMC05XC1cX10qKVwuezAsMX0oW2EtekEtWjAtOVwtXF9dKilcLnswLDF9KFthLXpBLVowLTlcLVxfXSopXC57MCwxfShbYS16QS1aMC05XC1cX10qKVwuezAsMX0oW2EtekEtWjAtOVwtXF9dKilcLnswLDF9JC8uZXhlYyhlKTtpZighYSlyZXR1cm5bXTtsZXQgcj1bLi4uYV0ucmV2ZXJzZSgpO3JldHVybiByLnBvcCgpLHIuZmlsdGVyKGZ1bmN0aW9uKG8pe3JldHVybiBvIT09IiJ9KX1fcHJvdG9jb2xSZWdleChlKXtsZXQgYT0vXihbYS16QS1aMC05XSopOlwvXC8vLmV4ZWMoZSk7aWYoYSlyZXR1cm4gYVsxXX1fcG9ydFJlZ2V4KGUpe2xldCBhPS9eKFthLXpBLVowLTldKik6XC9cLy8uZXhlYyhlKTtpZihhKXJldHVybiBhWzFdfX19KTt2YXIgamFlLE9QYSxObXQsUm10PWcoKCk9PntqYWU9Y2xhc3N7c3RhdGlje2kodGhpcywiR2l0UmVwbyIpfWNvbnN0cnVjdG9yKGUsdCl7bGV0IGE9T1BhKGUpO2lmKCFhKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBnaXQgcmVwb3NpdG9yeSBVUkw6ICR7ZX1gKTt0aGlzLmhvc3Q9YVsxXSx0aGlzLnVzZXI9YVsyXSx0aGlzLnJlcG89YVszXSx0aGlzLmFjY2Vzc1Rva2VuPXQsdGhpcy5zc2hVcmw9Tm10KHRoaXMuaG9zdCx0aGlzLnVzZXIsdGhpcy5yZXBvLHRoaXMuYWNjZXNzVG9rZW4sInNzaCIpLHRoaXMuaHR0cHNVcmw9Tm10KHRoaXMuaG9zdCx0aGlzLnVzZXIsdGhpcy5yZXBvLHRoaXMuYWNjZXNzVG9rZW4sImh0dHBzIil9fSxPUGE9aShmdW5jdGlvbihzKXtyZXR1cm4vKFthLXpBLVowLTlcLV9cLl0qKSg/OlwvfFw6KShbYS16QS1aMC05XC1fXC5dKikoPzpcLykoW2EtekEtWjAtOVwtX1wuXSopKD86XC5naXQpLy5leGVjKHMpfSwiZ2l0UmVnZXgiKSxObXQ9aShmdW5jdGlvbihzLGUsdCxhPSIiLHIpe3N3aXRjaChhIT09IiImJihhPWErIkAiKSxyKXtjYXNlImh0dHBzIjpyZXR1cm4iaHR0cHM6Ly8iK2ErcysiLyIrZSsiLyIrdCsiLmdpdCI7Y2FzZSJzc2giOnJldHVybiJnaXRAIitzKyI6IitlKyIvIit0KyIuZ2l0In19LCJnaXRMaW5rIil9KTt2YXIgYXI9e307eXQoYXIse0Jhc2U2NDooKT0+QmFlLERvbWFpbjooKT0+cWFlLEdpdFJlcG86KCk9PmphZSxiYXNlNjQ6KCk9Pm05LGNyZWF0ZTooKT0+UmFlLGRvY2tlcjooKT0+T2FlLGluZGVudDooKT0+bmQsbm9ybWFsaXplOigpPT5GYWUsdHlwZTooKT0+SGFlfSk7dmFyIG8zPWcoKCk9PnskbXQoKTtEbXQoKTtMbXQoKTtQbXQoKTtJbXQoKTtGaGUoKTtBbXQoKTtSbXQoKX0pO3ZhciBCaGU9cGwoKGJHcyxPbXQpPT57InVzZSBzdHJpY3QiO09tdC5leHBvcnRzPWZ1bmN0aW9uKHMsZSl7ZXx8KGU9e30pLHR5cGVvZiBlPT0iZnVuY3Rpb24iJiYoZT17Y21wOmV9KTt2YXIgdD10eXBlb2YgZS5jeWNsZXM9PSJib29sZWFuIj9lLmN5Y2xlczohMSxhPWUuY21wJiYoZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKG8pe3JldHVybiBmdW5jdGlvbihsLHApe3ZhciBkPXtrZXk6bCx2YWx1ZTpvW2xdfSx1PXtrZXk6cCx2YWx1ZTpvW3BdfTtyZXR1cm4gbihkLHUpfX19KShlLmNtcCkscj1bXTtyZXR1cm4gaSgoZnVuY3Rpb24gbihvKXtpZihvJiZvLnRvSlNPTiYmdHlwZW9mIG8udG9KU09OPT0iZnVuY3Rpb24iJiYobz1vLnRvSlNPTigpKSxvIT09dm9pZCAwKXtpZih0eXBlb2Ygbz09Im51bWJlciIpcmV0dXJuIGlzRmluaXRlKG8pPyIiK286Im51bGwiO2lmKHR5cGVvZiBvIT0ib2JqZWN0IilyZXR1cm4gSlNPTi5zdHJpbmdpZnkobyk7dmFyIGwscDtpZihBcnJheS5pc0FycmF5KG8pKXtmb3IocD0iWyIsbD0wO2w8by5sZW5ndGg7bCsrKWwmJihwKz0iLCIpLHArPW4ob1tsXSl8fCJudWxsIjtyZXR1cm4gcCsiXSJ9aWYobz09PW51bGwpcmV0dXJuIm51bGwiO2lmKHIuaW5kZXhPZihvKSE9PS0xKXtpZih0KXJldHVybiBKU09OLnN0cmluZ2lmeSgiX19jeWNsZV9fIik7dGhyb3cgbmV3IFR5cGVFcnJvcigiQ29udmVydGluZyBjaXJjdWxhciBzdHJ1Y3R1cmUgdG8gSlNPTiIpfXZhciBkPXIucHVzaChvKS0xLHU9T2JqZWN0LmtleXMobykuc29ydChhJiZhKG8pKTtmb3IocD0iIixsPTA7bDx1Lmxlbmd0aDtsKyspe3ZhciBjPXVbbF0sYj1uKG9bY10pO2ImJihwJiYocCs9IiwiKSxwKz1KU09OLnN0cmluZ2lmeShjKSsiOiIrYil9cmV0dXJuIHIuc3BsaWNlKGQsMSksInsiK3ArIn0ifX0pLCJzdHJpbmdpZnkiKShzKX19KTt2YXIgRm10LFZhZSxIaGU9ZygoKT0+e3N3KCk7bzMoKTtGbXQ9eG4oQmhlKCksMSksVmFlPUZtdC5kZWZhdWx0fSk7ZnVuY3Rpb24gQlBhKHMpe2xldCBlPUJtdCgpO3JldHVybiBlP2UuZnJvbShzKS50b1N0cmluZygiYmFzZTY0Iik6YnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLnMpKX1mdW5jdGlvbiBIUGEocyl7bGV0IGU9Qm10KCk7aWYoZSl7bGV0IHQ9ZS5mcm9tKHMsImJhc2U2NCIpO3JldHVybiBuZXcgVWludDhBcnJheSh0LmJ1ZmZlcix0LmJ5dGVPZmZzZXQsdC5ieXRlTGVuZ3RoKX1yZXR1cm4gbmV3IFVpbnQ4QXJyYXkoQXJyYXkuZnJvbShhdG9iKHMpKS5tYXAodD0+dC5jaGFyQ29kZUF0KDApKSl9ZnVuY3Rpb24gamhlKHMsZSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHMsVWFlLGUpfWZ1bmN0aW9uIFZoZShzKXtyZXR1cm4gSlNPTi5wYXJzZShzLEhtdCl9ZnVuY3Rpb24gcVBhKHMpe3JldHVybiBqbXQocykmJnMudHlwZT09PSJFbmNvZGVkQnVmZmVyIiYmcWhlKHMuZGF0YSl9ZnVuY3Rpb24galBhKHMpe3JldHVybiBqbXQocykmJnMudHlwZT09PSJCdWZmZXIiJiYocW10KHMuZGF0YSl8fHFoZShzLmRhdGEpKXx8cyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl9ZnVuY3Rpb24gcW10KHMpe3JldHVybiBBcnJheS5pc0FycmF5KHMpfWZ1bmN0aW9uIHFoZShzKXtyZXR1cm4gdHlwZW9mIHM9PSJzdHJpbmcifWZ1bmN0aW9uIGptdChzKXtyZXR1cm4gdHlwZW9mIHM9PSJvYmplY3QiJiZzIT09bnVsbH12YXIgQm10LFVhZSxIbXQsVm10PWcoKCk9PntIaGUoKTtCbXQ9aSgoKT0+Z2xvYmFsVGhpcy5CdWZmZXIsImdldE5vZGVCdWZmZXIiKTtpKEJQYSwiYmFzZTY0RW5jb2RlIik7aShIUGEsImJhc2U2NERlY29kZSIpO2koamhlLCJzdHJpbmdpZnkiKTtpKFZoZSwicGFyc2UiKTtVYWU9aSgocyxlKT0+e2lmKGpQYShlKSl7bGV0IHQ7aWYoImRhdGEiaW4gZSYmcW10KGUuZGF0YSkpdD1uZXcgVWludDhBcnJheShlLmRhdGEpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpdD1lO2Vsc2UgcmV0dXJuIGU7cmV0dXJue3R5cGU6IkVuY29kZWRCdWZmZXIiLGRhdGE6ImJhc2U2NDoiK0JQYSh0KX19cmV0dXJuIGV9LCJyZXBsYWNlciIpLEhtdD1pKChzLGUpPT57aWYocVBhKGUpJiZxaGUoZS5kYXRhKSYmZS5kYXRhLnN0YXJ0c1dpdGgoImJhc2U2NDoiKSl7bGV0IHQ9ZS5kYXRhLnNsaWNlKDcpO3JldHVybiBIUGEodCl9cmV0dXJuIGV9LCJyZXZpdmVyIik7aShxUGEsImlzRW5jb2RlZEJ1ZmZlciIpO2koalBhLCJpc0J1ZmZlckxpa2UiKTtpKHFtdCwiaXNBcnJheSIpO2kocWhlLCJpc1N0cmluZyIpO2koam10LCJpc09iamVjdCIpfSk7dmFyIGpyPXt9O3l0KGpyLHtTbWFydGpzb246KCk9PldoZSxkZWVwRXF1YWxKc29uTFN0cmluZ3M6KCk9PlhQYSxkZWVwRXF1YWxPYmplY3RzOigpPT5VbXQsZm9sZERlYzooKT0+WlBhLHBhcnNlOigpPT5XYWUscGFyc2VCYXNlNjQ6KCk9PllQYSxwYXJzZUpzb25MOigpPT5VaGUsc3RhYmxlT25lV2F5U3RyaW5naWZ5OigpPT5XUGEsc3RyaW5naWZ5OigpPT5uMyxzdHJpbmdpZnlCYXNlNjQ6KCk9PktQYSxzdHJpbmdpZnlKc29uTDooKT0+VVBhLHN0cmluZ2lmeVByZXR0eTooKT0+R1BhfSk7dmFyIFdhZSxVaGUsVVBhLFdQYSxuMyxHUGEsS1BhLFlQYSxXaGUsWlBhLFVtdCxYUGEsZzk9ZygoKT0+e0hoZSgpO1ZtdCgpO1dhZT1WaGUsVWhlPWkocz0+cy5zcGxpdChgCmApLnJlZHVjZSgoYSxyKT0+e2xldCBuPXIudHJpbSgpO3JldHVybiBuLmxlbmd0aD4wJiZhLnB1c2goV2FlKG4pKSxhfSxbXSksInBhcnNlSnNvbkwiKSxVUGE9aShzPT5zLm1hcChlPT5uMyhlKSkuam9pbihgCmApLCJzdHJpbmdpZnlKc29uTCIpLFdQYT1pKChzLGUsdD17fSk9PntsZXQgYT1uZXcgV2Vha1NldCxyPWkobD0+e2lmKGw9PT1udWxsfHx0eXBlb2YgbCE9Im9iamVjdCIpcmV0dXJuIGw7bGV0IHA9VWFlKCIiLGwpO2lmKHAmJnAudHlwZT09PSJFbmNvZGVkQnVmZmVyIiYmdHlwZW9mIHAuZGF0YT09InN0cmluZyIpcmV0dXJuIHA7aWYoYS5oYXMobCkpcmV0dXJuIl9fY3ljbGVfXyI7aWYoYS5hZGQobCksQXJyYXkuaXNBcnJheShsKSlyZXR1cm4gbC5tYXAodT0+cih1KSk7bGV0IGQ9e307Zm9yKGxldCB1IG9mIE9iamVjdC5rZXlzKGwpKXRyeXtkW3VdPXIobFt1XSl9Y2F0Y2h7ZFt1XT0iX191bnNlcmlhbGl6YWJsZV9fIn1yZXR1cm4gZH0sInNhbml0aXplIiksbj1yKHMpLG89ey4uLnQsY3ljbGVzOiEwfTtpZihlJiYhby5jbXApe2xldCBsPW5ldyBNYXA7ZS5mb3JFYWNoKChwLGQpPT5sLnNldChwLGQpKSxvLmNtcD0ocCxkKT0+e2xldCB1PWwuaGFzKHAua2V5KT9sLmdldChwLmtleSk6TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGM9bC5oYXMoZC5rZXkpP2wuZ2V0KGQua2V5KTpOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7cmV0dXJuIHUhPT1jP3UtYzpwLmtleTxkLmtleT8tMTpwLmtleT5kLmtleT8xOjB9fXJldHVybiBWYWUobixvKX0sInN0YWJsZU9uZVdheVN0cmluZ2lmeSIpLG4zPWkoKHMsZSx0PXt9KT0+e2xldCBhPWpoZShzKTtzPUpTT04ucGFyc2UoYSk7bGV0IHI9ey4uLnR9O2lmKGUmJiFyLmNtcCl7bGV0IG89bmV3IE1hcDtlLmZvckVhY2goKGwscCk9Pm8uc2V0KGwscCkpLHIuY21wPShsLHApPT57bGV0IGQ9by5oYXMobC5rZXkpP28uZ2V0KGwua2V5KTpOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksdT1vLmhhcyhwLmtleSk/by5nZXQocC5rZXkpOk51bWJlci5QT1NJVElWRV9JTkZJTklUWTtyZXR1cm4gZCE9PXU/ZC11Omwua2V5PHAua2V5Py0xOmwua2V5PnAua2V5PzE6MH19cmV0dXJuIFZhZShzLHIpfSwic3RyaW5naWZ5IiksR1BhPWkocz0+e2xldCBlPW4zKHMpLHQ9SlNPTi5wYXJzZShlKTtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCxudWxsLDIpfSwic3RyaW5naWZ5UHJldHR5IiksS1BhPWkoKC4uLnMpPT57bGV0IGU9bjMoLi4ucyk7cmV0dXJuIGFyLmJhc2U2NC5lbmNvZGVVcmkoZSl9LCJzdHJpbmdpZnlCYXNlNjQiKSxZUGE9aShzPT57bGV0IGU9YXIuYmFzZTY0LGE9KGUuZGVjb2RlVXJpfHxlLmRlY29kZSkocyk7cmV0dXJuIFdhZShhKX0sInBhcnNlQmFzZTY0IiksV2hlPWNsYXNzIHN7c3RhdGlje2kodGhpcywiU21hcnRqc29uIil9c3RhdGljIGVuZm9sZEZyb21PYmplY3QoZSl7bGV0IHQ9bmV3IHRoaXMsYT10LnNhdmVhYmxlUHJvcGVydGllc3x8W107Zm9yKGxldCByIGluIGUpYS5pbmRleE9mKHIpIT09LTEmJih0W3JdPWVbcl0pO3JldHVybiB0fXN0YXRpYyBlbmZvbGRGcm9tSnNvbihlKXtsZXQgdD1XYWUoZSk7cmV0dXJuIHRoaXMuZW5mb2xkRnJvbU9iamVjdCh0KX1zYXZlYWJsZVByb3BlcnRpZXM9W107Zm9sZFRvT2JqZWN0KCl7bGV0IGU9bmV3IFNldDtyZXR1cm4gZS5hZGQodGhpcyksdGhpcy5mb2xkVG9PYmplY3RJbnRlcm5hbChlKX1mb2xkVG9PYmplY3RJbnRlcm5hbChlKXtsZXQgdD17fSxhPWkobj0+e2lmKG4gaW5zdGFuY2VvZiBzKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgRXJyb3IoImN5Y2xlIGRldGVjdGVkIik7cmV0dXJuIGUuYWRkKG4pLG4uZm9sZFRvT2JqZWN0SW50ZXJuYWwoZSl9cmV0dXJuIEFycmF5LmlzQXJyYXkobik/bi5tYXAobz0+YShvKSk6c3RydWN0dXJlZENsb25lKG4pfSwiZm9sZFZhbHVlIikscj10aGlzLnNhdmVhYmxlUHJvcGVydGllc3x8W107Zm9yKGxldCBuIG9mIHIpe2xldCBvPXRoaXNbbl07dFtuXT1hKG8pfXJldHVybiB0fWZvbGRUb0pzb24oKXtsZXQgZT10aGlzLmZvbGRUb09iamVjdCgpO3JldHVybiBuMyhlKX19LFpQYT1pKCgpPT4ocyxlKT0+e2xldCB0PVN0cmluZyhlLm5hbWUpO2UuYWRkSW5pdGlhbGl6ZXIoZnVuY3Rpb24oKXt0aGlzLnNhdmVhYmxlUHJvcGVydGllc3x8KHRoaXMuc2F2ZWFibGVQcm9wZXJ0aWVzPVtdKSx0aGlzLnNhdmVhYmxlUHJvcGVydGllcy5pbmNsdWRlcyh0KXx8dGhpcy5zYXZlYWJsZVByb3BlcnRpZXMucHVzaCh0KX0pfSwiZm9sZERlYyIpLFVtdD1pKChzLGUpPT57bGV0IHQ9bjMocyksYT1uMyhlKTtyZXR1cm4gdD09PWF9LCJkZWVwRXF1YWxPYmplY3RzIiksWFBhPWkoKHMsZSk9PntsZXQgdD1VaGUocyksYT1VaGUoZSk7cmV0dXJuIFVtdCh0LGEpfSwiZGVlcEVxdWFsSnNvbkxTdHJpbmdzIil9KTt2YXIgb3c9e307eXQob3cse2RlbGV0ZURCOigpPT5lNnQsb3BlbkRCOigpPT5KbXQsdW53cmFwOigpPT5ydyx3cmFwOigpPT5sZH0pO2Z1bmN0aW9uIFFQYSgpe3JldHVybiBXbXR8fChXbXQ9W0lEQkRhdGFiYXNlLElEQk9iamVjdFN0b3JlLElEQkluZGV4LElEQkN1cnNvcixJREJUcmFuc2FjdGlvbl0pfWZ1bmN0aW9uIEpQYSgpe3JldHVybiBHbXR8fChHbXQ9W0lEQkN1cnNvci5wcm90b3R5cGUuYWR2YW5jZSxJREJDdXJzb3IucHJvdG90eXBlLmNvbnRpbnVlLElEQkN1cnNvci5wcm90b3R5cGUuY29udGludWVQcmltYXJ5S2V5XSl9ZnVuY3Rpb24gZUlhKHMpe2xldCBlPW5ldyBQcm9taXNlKCh0LGEpPT57bGV0IHI9aSgoKT0+e3MucmVtb3ZlRXZlbnRMaXN0ZW5lcigic3VjY2VzcyIsbikscy5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsbyl9LCJ1bmxpc3RlbiIpLG49aSgoKT0+e3QobGQocy5yZXN1bHQpKSxyKCl9LCJzdWNjZXNzIiksbz1pKCgpPT57YShzLmVycm9yKSxyKCl9LCJlcnJvciIpO3MuYWRkRXZlbnRMaXN0ZW5lcigic3VjY2VzcyIsbikscy5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsbyl9KTtyZXR1cm4gR2FlLnNldChlLHMpLGV9ZnVuY3Rpb24gdElhKHMpe2lmKEtoZS5oYXMocykpcmV0dXJuO2xldCBlPW5ldyBQcm9taXNlKCh0LGEpPT57bGV0IHI9aSgoKT0+e3MucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY29tcGxldGUiLG4pLHMucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLG8pLHMucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLG8pfSwidW5saXN0ZW4iKSxuPWkoKCk9Pnt0KCkscigpfSwiY29tcGxldGUiKSxvPWkoKCk9PnthKHMuZXJyb3J8fG5ldyBET01FeGNlcHRpb24oIkFib3J0RXJyb3IiLCJBYm9ydEVycm9yIikpLHIoKX0sImVycm9yIik7cy5hZGRFdmVudExpc3RlbmVyKCJjb21wbGV0ZSIsbikscy5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsbykscy5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsbyl9KTtLaGUuc2V0KHMsZSl9ZnVuY3Rpb24gS210KHMpe1poZT1zKFpoZSl9ZnVuY3Rpb24gYUlhKHMpe3JldHVybiBKUGEoKS5pbmNsdWRlcyhzKT9mdW5jdGlvbiguLi5lKXtyZXR1cm4gcy5hcHBseShydyh0aGlzKSxlKSxsZCh0aGlzLnJlcXVlc3QpfTpmdW5jdGlvbiguLi5lKXtyZXR1cm4gbGQocy5hcHBseShydyh0aGlzKSxlKSl9fWZ1bmN0aW9uIHNJYShzKXtyZXR1cm4gdHlwZW9mIHM9PSJmdW5jdGlvbiI/YUlhKHMpOihzIGluc3RhbmNlb2YgSURCVHJhbnNhY3Rpb24mJnRJYShzKSxHaGUocyxRUGEoKSk/bmV3IFByb3h5KHMsWmhlKTpzKX1mdW5jdGlvbiBsZChzKXtpZihzIGluc3RhbmNlb2YgSURCUmVxdWVzdClyZXR1cm4gZUlhKHMpO2lmKFloZS5oYXMocykpcmV0dXJuIFloZS5nZXQocyk7bGV0IGU9c0lhKHMpO3JldHVybiBlIT09cyYmKFloZS5zZXQocyxlKSxHYWUuc2V0KGUscykpLGV9ZnVuY3Rpb24gSm10KHMsZSx7YmxvY2tlZDp0LHVwZ3JhZGU6YSxibG9ja2luZzpyLHRlcm1pbmF0ZWQ6bn09e30pe2xldCBvPWluZGV4ZWREQi5vcGVuKHMsZSksbD1sZChvKTtyZXR1cm4gYSYmby5hZGRFdmVudExpc3RlbmVyKCJ1cGdyYWRlbmVlZGVkIixwPT57YShsZChvLnJlc3VsdCkscC5vbGRWZXJzaW9uLHAubmV3VmVyc2lvbixsZChvLnRyYW5zYWN0aW9uKSxwKX0pLHQmJm8uYWRkRXZlbnRMaXN0ZW5lcigiYmxvY2tlZCIscD0+dChwLm9sZFZlcnNpb24scC5uZXdWZXJzaW9uLHApKSxsLnRoZW4ocD0+e24mJnAuYWRkRXZlbnRMaXN0ZW5lcigiY2xvc2UiLCgpPT5uKCkpLHImJnAuYWRkRXZlbnRMaXN0ZW5lcigidmVyc2lvbmNoYW5nZSIsZD0+cihkLm9sZFZlcnNpb24sZC5uZXdWZXJzaW9uLGQpKX0pLmNhdGNoKCgpPT57fSksbH1mdW5jdGlvbiBlNnQocyx7YmxvY2tlZDplfT17fSl7bGV0IHQ9aW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKHMpO3JldHVybiBlJiZ0LmFkZEV2ZW50TGlzdGVuZXIoImJsb2NrZWQiLGE9PmUoYS5vbGRWZXJzaW9uLGEpKSxsZCh0KS50aGVuKCgpPT57fSl9ZnVuY3Rpb24gWW10KHMsZSl7aWYoIShzIGluc3RhbmNlb2YgSURCRGF0YWJhc2UmJiEoZSBpbiBzKSYmdHlwZW9mIGU9PSJzdHJpbmciKSlyZXR1cm47aWYoWGhlLmdldChlKSlyZXR1cm4gWGhlLmdldChlKTtsZXQgdD1lLnJlcGxhY2UoL0Zyb21JbmRleCQvLCIiKSxhPWUhPT10LHI9cklhLmluY2x1ZGVzKHQpO2lmKCEodCBpbihhP0lEQkluZGV4OklEQk9iamVjdFN0b3JlKS5wcm90b3R5cGUpfHwhKHJ8fGlJYS5pbmNsdWRlcyh0KSkpcmV0dXJuO2xldCBuPWkoYXN5bmMgZnVuY3Rpb24obywuLi5sKXtsZXQgcD10aGlzLnRyYW5zYWN0aW9uKG8scj8icmVhZHdyaXRlIjoicmVhZG9ubHkiKSxkPXAuc3RvcmU7cmV0dXJuIGEmJihkPWQuaW5kZXgobC5zaGlmdCgpKSksKGF3YWl0IFByb21pc2UuYWxsKFtkW3RdKC4uLmwpLHImJnAuZG9uZV0pKVswXX0sIm1ldGhvZCIpO3JldHVybiBYaGUuc2V0KGUsbiksbn1hc3luYyBmdW5jdGlvbipsSWEoLi4ucyl7bGV0IGU9dGhpcztpZihlIGluc3RhbmNlb2YgSURCQ3Vyc29yfHwoZT1hd2FpdCBlLm9wZW5DdXJzb3IoLi4ucykpLCFlKXJldHVybjtlPWU7bGV0IHQ9bmV3IFByb3h5KGUsbklhKTtmb3IoWG10LnNldCh0LGUpLEdhZS5zZXQodCxydyhlKSk7ZTspeWllbGQgdCxlPWF3YWl0KFFoZS5nZXQodCl8fGUuY29udGludWUoKSksUWhlLmRlbGV0ZSh0KX1mdW5jdGlvbiBRbXQocyxlKXtyZXR1cm4gZT09PVN5bWJvbC5hc3luY0l0ZXJhdG9yJiZHaGUocyxbSURCSW5kZXgsSURCT2JqZWN0U3RvcmUsSURCQ3Vyc29yXSl8fGU9PT0iaXRlcmF0ZSImJkdoZShzLFtJREJJbmRleCxJREJPYmplY3RTdG9yZV0pfXZhciBHaGUsV210LEdtdCxLaGUsWWhlLEdhZSxaaGUscncsaUlhLHJJYSxYaGUsb0lhLFptdCxRaGUsWG10LG5JYSx0NnQ9ZygoKT0+e0doZT1pKChzLGUpPT5lLnNvbWUodD0+cyBpbnN0YW5jZW9mIHQpLCJpbnN0YW5jZU9mQW55Iik7aShRUGEsImdldElkYlByb3h5YWJsZVR5cGVzIik7aShKUGEsImdldEN1cnNvckFkdmFuY2VNZXRob2RzIik7S2hlPW5ldyBXZWFrTWFwLFloZT1uZXcgV2Vha01hcCxHYWU9bmV3IFdlYWtNYXA7aShlSWEsInByb21pc2lmeVJlcXVlc3QiKTtpKHRJYSwiY2FjaGVEb25lUHJvbWlzZUZvclRyYW5zYWN0aW9uIik7WmhlPXtnZXQocyxlLHQpe2lmKHMgaW5zdGFuY2VvZiBJREJUcmFuc2FjdGlvbil7aWYoZT09PSJkb25lIilyZXR1cm4gS2hlLmdldChzKTtpZihlPT09InN0b3JlIilyZXR1cm4gdC5vYmplY3RTdG9yZU5hbWVzWzFdP3ZvaWQgMDp0Lm9iamVjdFN0b3JlKHQub2JqZWN0U3RvcmVOYW1lc1swXSl9cmV0dXJuIGxkKHNbZV0pfSxzZXQocyxlLHQpe3JldHVybiBzW2VdPXQsITB9LGhhcyhzLGUpe3JldHVybiBzIGluc3RhbmNlb2YgSURCVHJhbnNhY3Rpb24mJihlPT09ImRvbmUifHxlPT09InN0b3JlIik/ITA6ZSBpbiBzfX07aShLbXQsInJlcGxhY2VUcmFwcyIpO2koYUlhLCJ3cmFwRnVuY3Rpb24iKTtpKHNJYSwidHJhbnNmb3JtQ2FjaGFibGVWYWx1ZSIpO2kobGQsIndyYXAiKTtydz1pKHM9PkdhZS5nZXQocyksInVud3JhcCIpO2koSm10LCJvcGVuREIiKTtpKGU2dCwiZGVsZXRlREIiKTtpSWE9WyJnZXQiLCJnZXRLZXkiLCJnZXRBbGwiLCJnZXRBbGxLZXlzIiwiY291bnQiXSxySWE9WyJwdXQiLCJhZGQiLCJkZWxldGUiLCJjbGVhciJdLFhoZT1uZXcgTWFwO2koWW10LCJnZXRNZXRob2QiKSxLbXQocz0+KHsuLi5zLGdldDppKChlLHQsYSk9PlltdChlLHQpfHxzLmdldChlLHQsYSksImdldCIpLGhhczppKChlLHQpPT4hIVltdChlLHQpfHxzLmhhcyhlLHQpLCJoYXMiKX0pKTtvSWE9WyJjb250aW51ZSIsImNvbnRpbnVlUHJpbWFyeUtleSIsImFkdmFuY2UiXSxabXQ9e30sUWhlPW5ldyBXZWFrTWFwLFhtdD1uZXcgV2Vha01hcCxuSWE9e2dldChzLGUpe2lmKCFvSWEuaW5jbHVkZXMoZSkpcmV0dXJuIHNbZV07bGV0IHQ9Wm10W2VdO3JldHVybiB0fHwodD1abXRbZV09ZnVuY3Rpb24oLi4uYSl7UWhlLnNldCh0aGlzLFhtdC5nZXQodGhpcylbZV0oLi4uYSkpfSksdH19O2kobElhLCJpdGVyYXRlIik7aShRbXQsImlzSXRlcmF0b3JQcm9wIiksS210KHM9Pih7Li4ucyxnZXQoZSx0LGEpe3JldHVybiBRbXQoZSx0KT9sSWE6cy5nZXQoZSx0LGEpfSxoYXMoZSx0KXtyZXR1cm4gUW10KGUsdCl8fHMuaGFzKGUsdCl9fSkpfSk7dmFyIEpoZT1nKCgpPT57dTkoKTtzdygpO2c5KCk7aW8oKTtaMigpO1U0KCk7dDZ0KCl9KTt2YXIgbncsZTRlPWcoKCk9PntKaGUoKTtudz1jbGFzc3tzdGF0aWN7aSh0aGlzLCJXZWJTdG9yZSIpfWNvbnN0cnVjdG9yKGUpe3RoaXMuaW5pdENhbGxlZD0hMSx0aGlzLnJlYWR5RGVmZXJyZWQ9bXQuZGVmZXIoKSx0aGlzLm9wdGlvbnM9ZX1hc3luYyBpbml0KCl7aWYodGhpcy5pbml0Q2FsbGVkKXthd2FpdCB0aGlzLnJlYWR5RGVmZXJyZWQucHJvbWlzZTtyZXR1cm59dGhpcy5pbml0Q2FsbGVkPSEwO2xldCBlPW5ldyB3MS5TbWFydGVudjtpZighZS5pc0Jyb3dzZXImJiFnbG9iYWxUaGlzLmluZGV4ZWREQiYmKGNvbnNvbGUubG9nKCJoZXkiKSxjb25zb2xlLmxvZyhnbG9iYWxUaGlzLmluZGV4ZWREQiksYXdhaXQgZS5nZXRTYWZlTm9kZU1vZHVsZSgiZmFrZS1pbmRleGVkZGIvYXV0byIpLCFnbG9iYWxUaGlzLmluZGV4ZWREQikpe2xldCB0PWF3YWl0IGUuZ2V0U2FmZU5vZGVNb2R1bGUoImZha2UtaW5kZXhlZGRiIik7Z2xvYmFsVGhpcy5pbmRleGVkREI9bmV3IHQuSURCRmFjdG9yeX10aGlzLmRiPWF3YWl0IG93Lm9wZW5EQih0aGlzLm9wdGlvbnMuZGJOYW1lLDEse3VwZ3JhZGU6aSh0PT57dC5jcmVhdGVPYmplY3RTdG9yZSh0aGlzLm9wdGlvbnMuc3RvcmVOYW1lKX0sInVwZ3JhZGUiKX0pLHRoaXMucmVhZHlEZWZlcnJlZC5yZXNvbHZlKCl9YXN5bmMgZ2V0KGUpe3JldHVybiBhd2FpdCB0aGlzLmluaXQoKSx0aGlzLmRiLmdldCh0aGlzLm9wdGlvbnMuc3RvcmVOYW1lLGUpfWFzeW5jIGNoZWNrKGUpe3JldHVybiBhd2FpdCB0aGlzLmluaXQoKSwhIWF3YWl0IHRoaXMuZ2V0KGUpfWFzeW5jIHNldChlLHQpe3JldHVybiBhd2FpdCB0aGlzLmluaXQoKSx0aGlzLmRiLnB1dCh0aGlzLm9wdGlvbnMuc3RvcmVOYW1lLHQsZSl9YXN5bmMgZGVsZXRlKGUpe3JldHVybiBhd2FpdCB0aGlzLmluaXQoKSx0aGlzLmRiLmRlbGV0ZSh0aGlzLm9wdGlvbnMuc3RvcmVOYW1lLGUpfWFzeW5jIGNsZWFyKCl7cmV0dXJuIGF3YWl0IHRoaXMuaW5pdCgpLHRoaXMuZGIuY2xlYXIodGhpcy5vcHRpb25zLnN0b3JlTmFtZSl9YXN5bmMga2V5cygpe3JldHVybiBhd2FpdCB0aGlzLmluaXQoKSx0aGlzLmRiLmdldEFsbEtleXModGhpcy5vcHRpb25zLnN0b3JlTmFtZSl9fX0pO3ZhciB0NGUsczZ0PWcoKCk9PntlNGUoKTtKaGUoKTt0NGU9Y2xhc3N7c3RhdGlje2kodGhpcywiVHlwZWRyZXF1ZXN0Q2FjaGUiKX1jb25zdHJ1Y3RvcihlPSJkZWZhdWx0Iil7dGhpcy53ZWJzdG9yZT1uZXcgbncoe2RiTmFtZToidHJTdG9yZSIsc3RvcmVOYW1lOmB0clN0b3JlLSR7ZX1gfSl9YnVpbGRLZXkoZSl7cmV0dXJuIGpyLnN0cmluZ2lmeSh7bWV0aG9kOmUubWV0aG9kLHJlcXVlc3Q6ZS5yZXF1ZXN0fSl9YXN5bmMgc2V0QnlSZXF1ZXN0KGUpe2lmKCFlLnJlc3BvbnNlKXRocm93IG5ldyBFcnJvcigiWW91IGNhbm5vdCBzdG9yZSByZXF1ZXN0cyB3aXRob3V0IGEgcmVzcG9uc2UgcHJlc2VudCIpO2F3YWl0IHRoaXMud2Vic3RvcmUuc2V0KHRoaXMuYnVpbGRLZXkoZSksZSl9YXN5bmMgZ2V0QnlSZXF1ZXN0KGUpe3JldHVybiBhd2FpdCB0aGlzLndlYnN0b3JlLmdldCh0aGlzLmJ1aWxkS2V5KGUpKX19fSk7dmFyIGsxPXt9O3l0KGsxLHtUeXBlZHJlcXVlc3RDYWNoZTooKT0+dDRlLFdlYlN0b3JlOigpPT5ud30pO3ZhciBLYWU9ZygoKT0+e3M2dCgpO2U0ZSgpfSk7dmFyIGx3PWcoKCk9PntkMCgpO3N3KCk7ZzkoKTtpbygpO0thZSgpfSk7dmFyIGI5LFphZT1nKCgpPT57bHcoKTtiOT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJDYWNoZVN0b3JlIil9Y29uc3RydWN0b3IoZT0id2VicmVxdWVzdC12NCIsdD0iY2FjaGUiKXt0aGlzLndlYnN0b3JlPW5ldyBrMS5XZWJTdG9yZSh7ZGJOYW1lOmUsc3RvcmVOYW1lOnR9KSx0aGlzLmluaXRQcm9taXNlPXRoaXMuaW5pdCgpfWFzeW5jIGluaXQoKXt9Z2VuZXJhdGVDYWNoZUtleShlKXtsZXQgdD1lLnVybCxhPWUubWV0aG9kO3JldHVybiBhPT09IkdFVCI/dDpgJHthfToke3R9YH1hc3luYyBzZXQoZSx0KXthd2FpdCB0aGlzLmluaXRQcm9taXNlLGF3YWl0IHRoaXMud2Vic3RvcmUuc2V0KGUsdCl9YXN5bmMgZ2V0KGUpe2F3YWl0IHRoaXMuaW5pdFByb21pc2U7dHJ5e3JldHVybiBhd2FpdCB0aGlzLndlYnN0b3JlLmdldChlKXx8bnVsbH1jYXRjaHtyZXR1cm4gbnVsbH19YXN5bmMgaGFzKGUpe3JldHVybiBhd2FpdCB0aGlzLmluaXRQcm9taXNlLGF3YWl0IHRoaXMud2Vic3RvcmUuY2hlY2soZSl9YXN5bmMgZGVsZXRlKGUpe2F3YWl0IHRoaXMuaW5pdFByb21pc2UsYXdhaXQgdGhpcy53ZWJzdG9yZS5kZWxldGUoZSl9YXN5bmMgY2xlYXIoKXthd2FpdCB0aGlzLmluaXRQcm9taXNlLGF3YWl0IHRoaXMud2Vic3RvcmUuY2xlYXIoKX1yZXNwb25zZUZyb21DYWNoZUVudHJ5KGUpe2xldCB0PW5ldyBIZWFkZXJzKGUuaGVhZGVycyk7cmV0dXJuIG5ldyBSZXNwb25zZShlLnJlc3BvbnNlLHtzdGF0dXM6ZS5zdGF0dXMsc3RhdHVzVGV4dDplLnN0YXR1c1RleHQsaGVhZGVyczp0fSl9YXN5bmMgY2FjaGVFbnRyeUZyb21SZXNwb25zZShlLHQsYSl7bGV0IHI9dC5jbG9uZSgpLG49YXdhaXQgci5hcnJheUJ1ZmZlcigpLG89e307cmV0dXJuIHIuaGVhZGVycy5mb3JFYWNoKChsLHApPT57b1twXT1sfSkse3Jlc3BvbnNlOm4saGVhZGVyczpvLHRpbWVzdGFtcDpEYXRlLm5vdygpLGV0YWc6YT8uZXRhZ3x8ci5oZWFkZXJzLmdldCgiZXRhZyIpfHx2b2lkIDAsbGFzdE1vZGlmaWVkOmE/Lmxhc3RNb2RpZmllZHx8ci5oZWFkZXJzLmdldCgibGFzdC1tb2RpZmllZCIpfHx2b2lkIDAsbWF4QWdlOmE/Lm1heEFnZSx1cmw6ZSxzdGF0dXM6ci5zdGF0dXMsc3RhdHVzVGV4dDpyLnN0YXR1c1RleHR9fWFzeW5jIHBydW5lRXhwaXJlZCgpe3JldHVybiBhd2FpdCB0aGlzLmluaXRQcm9taXNlLDB9fX0pO2Z1bmN0aW9uIGNJYShzKXtsZXQgZT17bWF4QWdlOjAsaW1tdXRhYmxlOiExLG5vQ2FjaGU6ITEsbm9TdG9yZTohMSxtdXN0UmV2YWxpZGF0ZTohMX07aWYoIXMpcmV0dXJuIGU7bGV0IHQ9cy50b0xvd2VyQ2FzZSgpLnNwbGl0KCIsIikubWFwKGE9PmEudHJpbSgpKTtmb3IobGV0IGEgb2YgdClpZihhPT09Im5vLWNhY2hlIillLm5vQ2FjaGU9ITA7ZWxzZSBpZihhPT09Im5vLXN0b3JlIillLm5vU3RvcmU9ITA7ZWxzZSBpZihhPT09ImltbXV0YWJsZSIpZS5pbW11dGFibGU9ITA7ZWxzZSBpZihhPT09Im11c3QtcmV2YWxpZGF0ZSIpZS5tdXN0UmV2YWxpZGF0ZT0hMDtlbHNlIGlmKGEuc3RhcnRzV2l0aCgibWF4LWFnZT0iKSl7bGV0IHI9cGFyc2VJbnQoYS5zcGxpdCgiPSIpWzFdLDEwKTtpc05hTihyKXx8KGUubWF4QWdlPXIqMWUzKX1yZXR1cm4gZX1mdW5jdGlvbiBkSWEocyl7aWYocyl0cnl7cmV0dXJuIG5ldyBEYXRlKHMpLmdldFRpbWUoKX1jYXRjaHtyZXR1cm59fWZ1bmN0aW9uIGNkKHMpe2xldCBlPXMuZ2V0KCJjYWNoZS1jb250cm9sIiksdD1zLmdldCgiZXhwaXJlcyIpLGE9cy5nZXQoImV0YWciKSxyPXMuZ2V0KCJsYXN0LW1vZGlmaWVkIiksbj1jSWEoZSk7aWYobi5tYXhBZ2U9PT0wJiZ0KXtsZXQgbz1kSWEodCk7byYmKG4ubWF4QWdlPU1hdGgubWF4KDAsby1EYXRlLm5vdygpKSl9cmV0dXJue21heEFnZTpuLm1heEFnZXx8MCxldGFnOmF8fHZvaWQgMCxsYXN0TW9kaWZpZWQ6cnx8dm9pZCAwLGltbXV0YWJsZTpuLmltbXV0YWJsZXx8ITEsbm9DYWNoZTpuLm5vQ2FjaGV8fCExLG5vU3RvcmU6bi5ub1N0b3JlfHwhMSxtdXN0UmV2YWxpZGF0ZTpuLm11c3RSZXZhbGlkYXRlfHwhMX19ZnVuY3Rpb24gY3cocyxlKXtpZihlLm5vU3RvcmUpcmV0dXJuITE7aWYoZS5pbW11dGFibGUpcmV0dXJuITA7bGV0IHQ9RGF0ZS5ub3coKS1zLnRpbWVzdGFtcCxhPXMubWF4QWdlfHxlLm1heEFnZXx8MDtyZXR1cm4gYT09PTA/ITE6dDxhfWZ1bmN0aW9uIGR3KHMpe3JldHVybiBzLm5vQ2FjaGV8fHMubXVzdFJldmFsaWRhdGV9ZnVuY3Rpb24gWGFlKHMpe2xldCBlPXt9O3JldHVybiBzLmV0YWcmJihlWyJpZi1ub25lLW1hdGNoIl09cy5ldGFnKSxzLmxhc3RNb2RpZmllZCYmKGVbImlmLW1vZGlmaWVkLXNpbmNlIl09cy5sYXN0TW9kaWZpZWQpLGV9ZnVuY3Rpb24gUWFlKHMpe2xldCBlPXt9O3JldHVybiBzLmZvckVhY2goKHQsYSk9PntlW2FdPXR9KSxlfWZ1bmN0aW9uIGk2dChzKXtsZXQgZT1uZXcgSGVhZGVycztyZXR1cm4gT2JqZWN0LmVudHJpZXMocykuZm9yRWFjaCgoW3QsYV0pPT57ZS5zZXQodCxhKX0pLGV9dmFyIEphZT1nKCgpPT57aShjSWEsInBhcnNlQ2FjaGVDb250cm9sIik7aShkSWEsInBhcnNlRXhwaXJlcyIpO2koY2QsImV4dHJhY3RDYWNoZU1ldGFkYXRhIik7aShjdywiaXNGcmVzaCIpO2koZHcsInJlcXVpcmVzUmV2YWxpZGF0aW9uIik7aShYYWUsImNyZWF0ZUNvbmRpdGlvbmFsSGVhZGVycyIpO2koUWFlLCJoZWFkZXJzVG9PYmplY3QiKTtpKGk2dCwib2JqZWN0VG9IZWFkZXJzIil9KTtmdW5jdGlvbiByNnQocyl7c3dpdGNoKHMpe2Nhc2UibmV0d29yay1maXJzdCI6cmV0dXJuIG5ldyBlc2U7Y2FzZSJjYWNoZS1maXJzdCI6cmV0dXJuIG5ldyBhNGU7Y2FzZSJzdGFsZS13aGlsZS1yZXZhbGlkYXRlIjpyZXR1cm4gbmV3IHM0ZTtjYXNlIm5ldHdvcmstb25seSI6cmV0dXJuIG5ldyBpNGU7Y2FzZSJjYWNoZS1vbmx5IjpyZXR1cm4gbmV3IHI0ZTtkZWZhdWx0OnJldHVybiBuZXcgZXNlfX12YXIgZXNlLGE0ZSxzNGUsaTRlLHI0ZSxvNnQ9ZygoKT0+e1phZSgpO0phZSgpO2VzZT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJOZXR3b3JrRmlyc3RTdHJhdGVneSIpfWFzeW5jIGV4ZWN1dGUoZSl7dHJ5e2xldCB0PWF3YWl0IGUuZmV0Y2hGbihlLnJlcXVlc3QpO3JldHVybiB0Lm9rJiZhd2FpdCB0aGlzLmNhY2hlUmVzcG9uc2UoZSx0KSx7cmVzcG9uc2U6dCxmcm9tQ2FjaGU6ITEscmV2YWxpZGF0ZWQ6ITF9fWNhdGNoKHQpe2UubG9nZ2luZyYmY29uc29sZS5sb2coIlt3ZWJyZXF1ZXN0XSBOZXR3b3JrIGZhaWxlZCwgdHJ5aW5nIGNhY2hlOiIsdCk7bGV0IGE9YXdhaXQgZS5jYWNoZVN0b3JlLmdldChlLmNhY2hlS2V5KTtpZihhKXJldHVybntyZXNwb25zZTplLmNhY2hlU3RvcmUucmVzcG9uc2VGcm9tQ2FjaGVFbnRyeShhKSxmcm9tQ2FjaGU6ITAscmV2YWxpZGF0ZWQ6ITF9O3Rocm93IHR9fWFzeW5jIGNhY2hlUmVzcG9uc2UoZSx0KXtsZXQgYT1jZCh0LmhlYWRlcnMpO2lmKGEubm9TdG9yZSlyZXR1cm47bGV0IHI9YXdhaXQgZS5jYWNoZVN0b3JlLmNhY2hlRW50cnlGcm9tUmVzcG9uc2UoZS5yZXF1ZXN0LnVybCx0LGEpO2F3YWl0IGUuY2FjaGVTdG9yZS5zZXQoZS5jYWNoZUtleSxyKX19LGE0ZT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJDYWNoZUZpcnN0U3RyYXRlZ3kiKX1hc3luYyBleGVjdXRlKGUpe2xldCB0PWF3YWl0IGUuY2FjaGVTdG9yZS5nZXQoZS5jYWNoZUtleSk7aWYodCl7bGV0IG49Y2QobmV3IEhlYWRlcnModC5oZWFkZXJzKSk7aWYoY3codCxuKSlyZXR1cm4gZS5sb2dnaW5nJiZjb25zb2xlLmxvZygiW3dlYnJlcXVlc3RdIENhY2hlIGhpdCAoZnJlc2gpOiIsZS5yZXF1ZXN0LnVybCkse3Jlc3BvbnNlOmUuY2FjaGVTdG9yZS5yZXNwb25zZUZyb21DYWNoZUVudHJ5KHQpLGZyb21DYWNoZTohMCxyZXZhbGlkYXRlZDohMX07aWYoZHcobikmJih0LmV0YWd8fHQubGFzdE1vZGlmaWVkKSlyZXR1cm4gYXdhaXQgdGhpcy5yZXZhbGlkYXRlKGUsdCl9ZS5sb2dnaW5nJiZjb25zb2xlLmxvZygiW3dlYnJlcXVlc3RdIENhY2hlIG1pc3MsIGZldGNoaW5nOiIsZS5yZXF1ZXN0LnVybCk7bGV0IGE9YXdhaXQgZS5mZXRjaEZuKGUucmVxdWVzdCkscj1jZChhLmhlYWRlcnMpO2lmKCFyLm5vU3RvcmUpe2xldCBuPWF3YWl0IGUuY2FjaGVTdG9yZS5jYWNoZUVudHJ5RnJvbVJlc3BvbnNlKGUucmVxdWVzdC51cmwsYSxyKTthd2FpdCBlLmNhY2hlU3RvcmUuc2V0KGUuY2FjaGVLZXksbil9cmV0dXJue3Jlc3BvbnNlOmEsZnJvbUNhY2hlOiExLHJldmFsaWRhdGVkOiExfX1hc3luYyByZXZhbGlkYXRlKGUsdCl7bGV0IGE9WGFlKHQpLHI9bmV3IFJlcXVlc3QoZS5yZXF1ZXN0LnVybCx7bWV0aG9kOmUucmVxdWVzdC5tZXRob2QsaGVhZGVyczp7Li4uUWFlKGUucmVxdWVzdC5oZWFkZXJzKSwuLi5hfX0pO3RyeXtsZXQgbj1hd2FpdCBlLmZldGNoRm4ocik7aWYobi5zdGF0dXM9PT0zMDQpcmV0dXJuIGUubG9nZ2luZyYmY29uc29sZS5sb2coIlt3ZWJyZXF1ZXN0XSBDYWNoZSByZXZhbGlkYXRlZCAoMzA0KToiLGUucmVxdWVzdC51cmwpLHQudGltZXN0YW1wPURhdGUubm93KCksYXdhaXQgZS5jYWNoZVN0b3JlLnNldChlLmNhY2hlS2V5LHQpLHtyZXNwb25zZTplLmNhY2hlU3RvcmUucmVzcG9uc2VGcm9tQ2FjaGVFbnRyeSh0KSxmcm9tQ2FjaGU6ITAscmV2YWxpZGF0ZWQ6ITB9O2lmKG4ub2spe2xldCBvPWNkKG4uaGVhZGVycyk7aWYoIW8ubm9TdG9yZSl7bGV0IGw9YXdhaXQgZS5jYWNoZVN0b3JlLmNhY2hlRW50cnlGcm9tUmVzcG9uc2UoZS5yZXF1ZXN0LnVybCxuLG8pO2F3YWl0IGUuY2FjaGVTdG9yZS5zZXQoZS5jYWNoZUtleSxsKX19cmV0dXJue3Jlc3BvbnNlOm4sZnJvbUNhY2hlOiExLHJldmFsaWRhdGVkOiEwfX1jYXRjaChuKXtyZXR1cm4gZS5sb2dnaW5nJiZjb25zb2xlLmxvZygiW3dlYnJlcXVlc3RdIFJldmFsaWRhdGlvbiBmYWlsZWQsIHVzaW5nIGNhY2hlOiIsbikse3Jlc3BvbnNlOmUuY2FjaGVTdG9yZS5yZXNwb25zZUZyb21DYWNoZUVudHJ5KHQpLGZyb21DYWNoZTohMCxyZXZhbGlkYXRlZDohMX19fX0sczRlPWNsYXNze3N0YXRpY3tpKHRoaXMsIlN0YWxlV2hpbGVSZXZhbGlkYXRlU3RyYXRlZ3kiKX1hc3luYyBleGVjdXRlKGUpe2xldCB0PWF3YWl0IGUuY2FjaGVTdG9yZS5nZXQoZS5jYWNoZUtleSk7aWYodCl7bGV0IG49ZS5jYWNoZVN0b3JlLnJlc3BvbnNlRnJvbUNhY2hlRW50cnkodCk7cmV0dXJuIHRoaXMucmV2YWxpZGF0ZUluQmFja2dyb3VuZChlLHQpLmNhdGNoKG89PntlLmxvZ2dpbmcmJmNvbnNvbGUud2FybigiW3dlYnJlcXVlc3RdIEJhY2tncm91bmQgcmV2YWxpZGF0aW9uIGZhaWxlZDoiLG8pfSkse3Jlc3BvbnNlOm4sZnJvbUNhY2hlOiEwLHJldmFsaWRhdGVkOiExfX1sZXQgYT1hd2FpdCBlLmZldGNoRm4oZS5yZXF1ZXN0KSxyPWNkKGEuaGVhZGVycyk7aWYoIXIubm9TdG9yZSYmYS5vayl7bGV0IG49YXdhaXQgZS5jYWNoZVN0b3JlLmNhY2hlRW50cnlGcm9tUmVzcG9uc2UoZS5yZXF1ZXN0LnVybCxhLHIpO2F3YWl0IGUuY2FjaGVTdG9yZS5zZXQoZS5jYWNoZUtleSxuKX1yZXR1cm57cmVzcG9uc2U6YSxmcm9tQ2FjaGU6ITEscmV2YWxpZGF0ZWQ6ITF9fWFzeW5jIHJldmFsaWRhdGVJbkJhY2tncm91bmQoZSx0KXtsZXQgYT1jZChuZXcgSGVhZGVycyh0LmhlYWRlcnMpKTtpZighKGN3KHQsYSkmJiFkdyhhKSkpdHJ5e2xldCByPWF3YWl0IGUuZmV0Y2hGbihlLnJlcXVlc3QpO2lmKHIub2spe2xldCBuPWNkKHIuaGVhZGVycyk7aWYoIW4ubm9TdG9yZSl7bGV0IG89YXdhaXQgZS5jYWNoZVN0b3JlLmNhY2hlRW50cnlGcm9tUmVzcG9uc2UoZS5yZXF1ZXN0LnVybCxyLG4pO2F3YWl0IGUuY2FjaGVTdG9yZS5zZXQoZS5jYWNoZUtleSxvKSxlLmxvZ2dpbmcmJmNvbnNvbGUubG9nKCJbd2VicmVxdWVzdF0gQmFja2dyb3VuZCByZXZhbGlkYXRpb24gY29tcGxldGU6IixlLnJlcXVlc3QudXJsKX19fWNhdGNoKHIpe2UubG9nZ2luZyYmY29uc29sZS53YXJuKCJbd2VicmVxdWVzdF0gQmFja2dyb3VuZCByZXZhbGlkYXRpb24gZmFpbGVkOiIscil9fX0saTRlPWNsYXNze3N0YXRpY3tpKHRoaXMsIk5ldHdvcmtPbmx5U3RyYXRlZ3kiKX1hc3luYyBleGVjdXRlKGUpe3JldHVybntyZXNwb25zZTphd2FpdCBlLmZldGNoRm4oZS5yZXF1ZXN0KSxmcm9tQ2FjaGU6ITEscmV2YWxpZGF0ZWQ6ITF9fX0scjRlPWNsYXNze3N0YXRpY3tpKHRoaXMsIkNhY2hlT25seVN0cmF0ZWd5Iil9YXN5bmMgZXhlY3V0ZShlKXtsZXQgdD1hd2FpdCBlLmNhY2hlU3RvcmUuZ2V0KGUuY2FjaGVLZXkpO2lmKCF0KXRocm93IG5ldyBFcnJvcihgQ2FjaGUgbWlzcyBmb3IgJHtlLnJlcXVlc3QudXJsfSAoY2FjaGUtb25seSBtb2RlKWApO3JldHVybntyZXNwb25zZTplLmNhY2hlU3RvcmUucmVzcG9uc2VGcm9tQ2FjaGVFbnRyeSh0KSxmcm9tQ2FjaGU6ITAscmV2YWxpZGF0ZWQ6ITF9fX07aShyNnQsImdldFN0cmF0ZWd5SGFuZGxlciIpfSk7dmFyIHY5LG80ZT1nKCgpPT57WmFlKCk7bzZ0KCk7SmFlKCk7djk9Y2xhc3N7c3RhdGlje2kodGhpcywiQ2FjaGVNYW5hZ2VyIil9Y29uc3RydWN0b3IoZSx0KXt0aGlzLmNhY2hlU3RvcmU9bmV3IGI5KGUsdCl9YXN5bmMgZXhlY3V0ZShlLHQsYSl7bGV0IHI9dGhpcy5kZXRlcm1pbmVTdHJhdGVneShlLHQpO2lmKHI9PT0ibmV0d29yay1vbmx5IilyZXR1cm57cmVzcG9uc2U6YXdhaXQgYShlKSxmcm9tQ2FjaGU6ITEscmV2YWxpZGF0ZWQ6ITF9O2xldCBuPXRoaXMuZ2VuZXJhdGVDYWNoZUtleShlLHQpLG89cjZ0KHIpLGw9e3JlcXVlc3Q6ZSxjYWNoZUtleTpuLGNhY2hlU3RvcmU6dGhpcy5jYWNoZVN0b3JlLGZldGNoRm46YSxsb2dnaW5nOnQubG9nZ2luZ307cmV0dXJuIGF3YWl0IG8uZXhlY3V0ZShsKX1kZXRlcm1pbmVTdHJhdGVneShlLHQpe3JldHVybiB0LmNhY2hlU3RyYXRlZ3k/dC5jYWNoZVN0cmF0ZWd5OnQuY2FjaGU/dGhpcy5tYXBDYWNoZU1vZGVUb1N0cmF0ZWd5KHQuY2FjaGUpOmUuY2FjaGU/dGhpcy5tYXBDYWNoZU1vZGVUb1N0cmF0ZWd5KGUuY2FjaGUpOiJuZXR3b3JrLWZpcnN0In1tYXBDYWNoZU1vZGVUb1N0cmF0ZWd5KGUpe3N3aXRjaChlKXtjYXNlImRlZmF1bHQiOnJldHVybiJuZXR3b3JrLWZpcnN0IjtjYXNlIm5vLXN0b3JlIjpjYXNlInJlbG9hZCI6cmV0dXJuIm5ldHdvcmstb25seSI7Y2FzZSJuby1jYWNoZSI6cmV0dXJuIm5ldHdvcmstZmlyc3QiO2Nhc2UiZm9yY2UtY2FjaGUiOnJldHVybiJjYWNoZS1maXJzdCI7Y2FzZSJvbmx5LWlmLWNhY2hlZCI6cmV0dXJuImNhY2hlLW9ubHkiO2RlZmF1bHQ6cmV0dXJuIm5ldHdvcmstZmlyc3QifX1nZW5lcmF0ZUNhY2hlS2V5KGUsdCl7cmV0dXJuIHQuY2FjaGVLZXk/dHlwZW9mIHQuY2FjaGVLZXk9PSJmdW5jdGlvbiI/dC5jYWNoZUtleShlKTp0LmNhY2hlS2V5OnRoaXMuY2FjaGVTdG9yZS5nZW5lcmF0ZUNhY2hlS2V5KGUpfWFzeW5jIGNsZWFyKCl7YXdhaXQgdGhpcy5jYWNoZVN0b3JlLmNsZWFyKCl9YXN5bmMgZGVsZXRlKGUpe2F3YWl0IHRoaXMuY2FjaGVTdG9yZS5kZWxldGUoZSl9YXN5bmMgaGFzKGUpe3JldHVybiBhd2FpdCB0aGlzLmNhY2hlU3RvcmUuaGFzKGUpfWdldFN0b3JlKCl7cmV0dXJuIHRoaXMuY2FjaGVTdG9yZX19fSk7ZnVuY3Rpb24gbjZ0KHMpe3N3aXRjaChzKXtjYXNlImV4cG9uZW50aWFsIjpyZXR1cm4gbmV3IHRzZTtjYXNlImxpbmVhciI6cmV0dXJuIG5ldyBuNGU7Y2FzZSJjb25zdGFudCI6cmV0dXJuIG5ldyBsNGU7ZGVmYXVsdDpyZXR1cm4gbmV3IHRzZX19ZnVuY3Rpb24gbDZ0KHMsZT0uMSl7bGV0IHQ9cyplKk1hdGgucmFuZG9tKCk7cmV0dXJuIHMrdH12YXIgdHNlLG40ZSxsNGUsYzZ0PWcoKCk9Pnt0c2U9Y2xhc3N7c3RhdGlje2kodGhpcywiRXhwb25lbnRpYWxCYWNrb2ZmIil9Y2FsY3VsYXRlKGUsdCxhKXtsZXQgcj10Kk1hdGgucG93KDIsZS0xKTtyZXR1cm4gTWF0aC5taW4ocixhKX19LG40ZT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJMaW5lYXJCYWNrb2ZmIil9Y2FsY3VsYXRlKGUsdCxhKXtsZXQgcj10KmU7cmV0dXJuIE1hdGgubWluKHIsYSl9fSxsNGU9Y2xhc3N7c3RhdGlje2kodGhpcywiQ29uc3RhbnRCYWNrb2ZmIil9Y2FsY3VsYXRlKGUsdCxhKXtyZXR1cm4gTWF0aC5taW4odCxhKX19O2kobjZ0LCJnZXRCYWNrb2ZmQ2FsY3VsYXRvciIpO2kobDZ0LCJhZGRKaXR0ZXIiKX0pO3ZhciB4OSxjNGU9ZygoKT0+e2x3KCk7YzZ0KCk7eDk9Y2xhc3N7c3RhdGlje2kodGhpcywiUmV0cnlNYW5hZ2VyIil9Y29uc3RydWN0b3IoZT17fSl7dGhpcy5vcHRpb25zPXttYXhBdHRlbXB0czplLm1heEF0dGVtcHRzPz8zLGJhY2tvZmY6ZS5iYWNrb2ZmPz8iZXhwb25lbnRpYWwiLGluaXRpYWxEZWxheTplLmluaXRpYWxEZWxheT8/MWUzLG1heERlbGF5OmUubWF4RGVsYXk/PzNlNCxyZXRyeU9uOmUucmV0cnlPbj8/WzQwOCw0MjksNTAwLDUwMiw1MDMsNTA0XSxvblJldHJ5OmUub25SZXRyeT8/KCgpPT57fSl9fWFzeW5jIGV4ZWN1dGUoZSx0KXtsZXQgYSxyO2ZvcihsZXQgbj0xO248PXRoaXMub3B0aW9ucy5tYXhBdHRlbXB0cztuKyspdHJ5e2xldCBvPWF3YWl0IGUoKTtpZihvIGluc3RhbmNlb2YgUmVzcG9uc2UmJnRoaXMuc2hvdWxkUmV0cnlSZXNwb25zZShvKSl7aWYocj1vLG49PT10aGlzLm9wdGlvbnMubWF4QXR0ZW1wdHMpcmV0dXJuIG87bGV0IGw9dGhpcy5jYWxjdWxhdGVEZWxheShuKTt0aGlzLm9wdGlvbnMub25SZXRyeShuLG5ldyBFcnJvcihgSFRUUCAke28uc3RhdHVzfWApLGwpLGF3YWl0IHRoaXMuZGVsYXkobCk7Y29udGludWV9cmV0dXJuIG99Y2F0Y2gobyl7YT1vIGluc3RhbmNlb2YgRXJyb3I/bzpuZXcgRXJyb3IoU3RyaW5nKG8pKTtsZXQgbD10P3QobyxuKTp0aGlzLnNob3VsZFJldHJ5RXJyb3Iobyk7aWYobj09PXRoaXMub3B0aW9ucy5tYXhBdHRlbXB0c3x8IWwpdGhyb3cgYTtsZXQgcD10aGlzLmNhbGN1bGF0ZURlbGF5KG4pO3RoaXMub3B0aW9ucy5vblJldHJ5KG4sYSxwKSxhd2FpdCB0aGlzLmRlbGF5KHApfXRocm93IGF8fG5ldyBFcnJvcigiTWF4IHJldHJ5IGF0dGVtcHRzIHJlYWNoZWQiKX1hc3luYyBleGVjdXRlV2l0aEZhbGxiYWNrcyhlLHQsYSl7aWYoZS5sZW5ndGg9PT0wKXRocm93IG5ldyBFcnJvcigiTm8gVVJMcyBwcm92aWRlZCBmb3IgZmFsbGJhY2sgZXhlY3V0aW9uIik7bGV0IHIsbj1bXTtmb3IobGV0IG8gb2YgZSl0cnl7bGV0IGw9YXdhaXQgdGhpcy5leGVjdXRlKGFzeW5jKCk9PmF3YWl0IGEobyx0KSk7aWYobC5zdGF0dXM8NDAwfHxsLnN0YXR1cz49NDAwJiZsLnN0YXR1czw1MDAmJmwuc3RhdHVzIT09NDA4KXJldHVybiBsO24ucHVzaChvKSxyPW5ldyBFcnJvcihgUmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgJHtsLnN0YXR1c31gKX1jYXRjaChsKXtuLnB1c2gobykscj1sIGluc3RhbmNlb2YgRXJyb3I/bDpuZXcgRXJyb3IoU3RyaW5nKGwpKX10aHJvdyBuZXcgRXJyb3IoYEFsbCBVUkxzIGZhaWxlZDogJHtuLmpvaW4oIiwgIil9LiBMYXN0IGVycm9yOiAke3I/Lm1lc3NhZ2V8fCJVbmtub3duIGVycm9yIn1gKX1zaG91bGRSZXRyeVJlc3BvbnNlKGUpe2xldCB0PXRoaXMub3B0aW9ucy5yZXRyeU9uO3JldHVybiB0eXBlb2YgdD09ImZ1bmN0aW9uIj90KGUpOkFycmF5LmlzQXJyYXkodCk/dC5pbmNsdWRlcyhlLnN0YXR1cyk6ITF9c2hvdWxkUmV0cnlFcnJvcihlKXtpZihlIGluc3RhbmNlb2YgVHlwZUVycm9yJiZlLm1lc3NhZ2UuaW5jbHVkZXMoImZldGNoIil8fGUubmFtZT09PSJBYm9ydEVycm9yInx8ZS5tZXNzYWdlLmluY2x1ZGVzKCJ0aW1lb3V0IikpcmV0dXJuITA7bGV0IHQ9dGhpcy5vcHRpb25zLnJldHJ5T247cmV0dXJuIHR5cGVvZiB0PT0iZnVuY3Rpb24iP3Qodm9pZCAwLGUpOiExfWNhbGN1bGF0ZURlbGF5KGUpe2xldCBhPW42dCh0aGlzLm9wdGlvbnMuYmFja29mZikuY2FsY3VsYXRlKGUsdGhpcy5vcHRpb25zLmluaXRpYWxEZWxheSx0aGlzLm9wdGlvbnMubWF4RGVsYXkpO3JldHVybiBsNnQoYSl9YXN5bmMgZGVsYXkoZSl7YXdhaXQgWHQuZGVsYXlGb3IoZSl9fX0pO3ZhciB5OSxkNGU9ZygoKT0+e2x3KCk7eTk9Y2xhc3N7c3RhdGlje2kodGhpcywiUmVxdWVzdERlZHVwbGljYXRvciIpfWNvbnN0cnVjdG9yKCl7dGhpcy5pbkZsaWdodFJlcXVlc3RzPW5ldyBNYXB9Z2VuZXJhdGVLZXkoZSl7bGV0IHQ9ZS51cmwsYT1lLm1ldGhvZDtyZXR1cm4gYT09PSJHRVQifHxhPT09IkhFQUQiP2Ake2F9OiR7dH1gOmAke2F9OiR7dH06JHtEYXRlLm5vdygpfWB9YXN5bmMgZXhlY3V0ZShlLHQpe2xldCBhPXRoaXMuaW5GbGlnaHRSZXF1ZXN0cy5nZXQoZSk7aWYoYSlyZXR1cm57cmVzcG9uc2U6KGF3YWl0IGEucHJvbWlzZSkuY2xvbmUoKSx3YXNEZWR1cGxpY2F0ZWQ6ITB9O2xldCByPW10LmRlZmVyKCk7dGhpcy5pbkZsaWdodFJlcXVlc3RzLnNldChlLHIpO3RyeXtsZXQgbj1hd2FpdCB0KCk7cmV0dXJuIHIucmVzb2x2ZShuKSx0aGlzLmluRmxpZ2h0UmVxdWVzdHMuZGVsZXRlKGUpLHtyZXNwb25zZTpuLHdhc0RlZHVwbGljYXRlZDohMX19Y2F0Y2gobil7dGhyb3cgci5yZWplY3QobiksdGhpcy5pbkZsaWdodFJlcXVlc3RzLmRlbGV0ZShlKSxufX1pc0luRmxpZ2h0KGUpe3JldHVybiB0aGlzLmluRmxpZ2h0UmVxdWVzdHMuaGFzKGUpfWdldEluRmxpZ2h0Q291bnQoKXtyZXR1cm4gdGhpcy5pbkZsaWdodFJlcXVlc3RzLnNpemV9Y2xlYXIoKXt0aGlzLmluRmxpZ2h0UmVxdWVzdHMuY2xlYXIoKX19fSk7ZnVuY3Rpb24gdUlhKHMpe2xldCBlPW5ldyBBYm9ydENvbnRyb2xsZXIsdD1uZXcgWHQuVGltZW91dChzLG51bGwpO3JldHVybiB0LnByb21pc2UudGhlbigoKT0+e2UuYWJvcnQoKX0pLHtjb250cm9sbGVyOmUsY2xlYW51cDppKCgpPT57dC5jYW5jZWwoKX0sImNsZWFudXAiKX19YXN5bmMgZnVuY3Rpb24gdTRlKHMsZSx0KXtsZXR7Y29udHJvbGxlcjphLGNsZWFudXA6cn09dUlhKHQpO3RyeXtsZXQgbj1hd2FpdCBmZXRjaChzLHsuLi5lLHNpZ25hbDphLnNpZ25hbH0pO3JldHVybiByKCksbn1jYXRjaChuKXt0aHJvdyByKCksbiBpbnN0YW5jZW9mIEVycm9yJiZuLm5hbWU9PT0iQWJvcnRFcnJvciI/bmV3IEVycm9yKGBSZXF1ZXN0IHRpbWVvdXQgYWZ0ZXIgJHt0fW1zOiAke3N9YCk6bn19dmFyIGQ2dD1nKCgpPT57bHcoKTtpKHVJYSwiY3JlYXRlVGltZW91dENvbnRyb2xsZXIiKTtpKHU0ZSwiZmV0Y2hXaXRoVGltZW91dCIpfSk7dmFyIGwzLHA0ZT1nKCgpPT57UGhlKCk7bzRlKCk7YzRlKCk7ZDRlKCk7ZDZ0KCk7bDM9Y2xhc3N7c3RhdGlje2kodGhpcywiV2VicmVxdWVzdENsaWVudCIpfWNvbnN0cnVjdG9yKGU9e30pe3RoaXMuZGVmYXVsdE9wdGlvbnM9ZSx0aGlzLmludGVyY2VwdG9yTWFuYWdlcj1uZXcgZjksdGhpcy5jYWNoZU1hbmFnZXI9bmV3IHY5LHRoaXMuZGVkdXBsaWNhdG9yPW5ldyB5OX1hZGRSZXF1ZXN0SW50ZXJjZXB0b3IoZSl7dGhpcy5pbnRlcmNlcHRvck1hbmFnZXIuYWRkUmVxdWVzdEludGVyY2VwdG9yKGUpfWFkZFJlc3BvbnNlSW50ZXJjZXB0b3IoZSl7dGhpcy5pbnRlcmNlcHRvck1hbmFnZXIuYWRkUmVzcG9uc2VJbnRlcmNlcHRvcihlKX1hZGRFcnJvckludGVyY2VwdG9yKGUpe3RoaXMuaW50ZXJjZXB0b3JNYW5hZ2VyLmFkZEVycm9ySW50ZXJjZXB0b3IoZSl9cmVtb3ZlUmVxdWVzdEludGVyY2VwdG9yKGUpe3RoaXMuaW50ZXJjZXB0b3JNYW5hZ2VyLnJlbW92ZVJlcXVlc3RJbnRlcmNlcHRvcihlKX1yZW1vdmVSZXNwb25zZUludGVyY2VwdG9yKGUpe3RoaXMuaW50ZXJjZXB0b3JNYW5hZ2VyLnJlbW92ZVJlc3BvbnNlSW50ZXJjZXB0b3IoZSl9cmVtb3ZlRXJyb3JJbnRlcmNlcHRvcihlKXt0aGlzLmludGVyY2VwdG9yTWFuYWdlci5yZW1vdmVFcnJvckludGVyY2VwdG9yKGUpfWNsZWFySW50ZXJjZXB0b3JzKCl7dGhpcy5pbnRlcmNlcHRvck1hbmFnZXIuY2xlYXJBbGwoKX1hc3luYyBjbGVhckNhY2hlKCl7YXdhaXQgdGhpcy5jYWNoZU1hbmFnZXIuY2xlYXIoKX1hc3luYyByZXF1ZXN0KGUsdD17fSl7bGV0IGE9ey4uLnRoaXMuZGVmYXVsdE9wdGlvbnMsLi4udH0scjtpZih0eXBlb2YgZT09InN0cmluZyI/cj1uZXcgUmVxdWVzdChlLGEpOnI9ZSxyPWF3YWl0IHRoaXMuaW50ZXJjZXB0b3JNYW5hZ2VyLnByb2Nlc3NSZXF1ZXN0KHIpLGEuaW50ZXJjZXB0b3JzPy5yZXF1ZXN0KWZvcihsZXQgbyBvZiBhLmludGVyY2VwdG9ycy5yZXF1ZXN0KXI9YXdhaXQgbyhyKTtpZihhLmRlZHVwbGljYXRlPz8hMSl7bGV0IG89dGhpcy5kZWR1cGxpY2F0b3IuZ2VuZXJhdGVLZXkocik7cmV0dXJuKGF3YWl0IHRoaXMuZGVkdXBsaWNhdG9yLmV4ZWN1dGUobyxhc3luYygpPT5hd2FpdCB0aGlzLmV4ZWN1dGVSZXF1ZXN0KHIsYSkpKS5yZXNwb25zZX1yZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlUmVxdWVzdChyLGEpfWFzeW5jIGV4ZWN1dGVSZXF1ZXN0KGUsdCl7dHJ5e2xldCBhPXR5cGVvZiB0LnJldHJ5PT0ib2JqZWN0Ij90LnJldHJ5OnQucmV0cnk/e306dm9pZCAwLHI9aShhc3luYyBsPT57bGV0IHA9dC50aW1lb3V0Pz82ZTQ7cmV0dXJuIGF3YWl0IHU0ZShsLnVybCx7bWV0aG9kOmwubWV0aG9kLGhlYWRlcnM6bC5oZWFkZXJzLGJvZHk6bC5ib2R5LC4uLnR9LHApfSwiZmV0Y2hGbkZvclJlcXVlc3QiKSxuPWkoYXN5bmMobCxwKT0+e2xldCBkPXQudGltZW91dD8/NmU0O3JldHVybiBhd2FpdCB1NGUobCxwLGQpfSwiZmV0Y2hGbkZvckZhbGxiYWNrcyIpLG87aWYoYSl7bGV0IGw9bmV3IHg5KGEpO2lmKHQuZmFsbGJhY2tVcmxzJiZ0LmZhbGxiYWNrVXJscy5sZW5ndGg+MCl7bGV0IHA9W2UudXJsLC4uLnQuZmFsbGJhY2tVcmxzXTtvPWF3YWl0IGwuZXhlY3V0ZVdpdGhGYWxsYmFja3MocCx7bWV0aG9kOmUubWV0aG9kLGhlYWRlcnM6ZS5oZWFkZXJzLGJvZHk6ZS5ib2R5LC4uLnR9LG4pfWVsc2Ugbz1hd2FpdCBsLmV4ZWN1dGUoYXN5bmMoKT0+KGF3YWl0IHRoaXMuY2FjaGVNYW5hZ2VyLmV4ZWN1dGUoZSx0LHIpKS5yZXNwb25zZSl9ZWxzZSBvPShhd2FpdCB0aGlzLmNhY2hlTWFuYWdlci5leGVjdXRlKGUsdCxyKSkucmVzcG9uc2U7aWYobz1hd2FpdCB0aGlzLmludGVyY2VwdG9yTWFuYWdlci5wcm9jZXNzUmVzcG9uc2UobyksdC5pbnRlcmNlcHRvcnM/LnJlc3BvbnNlKWZvcihsZXQgbCBvZiB0LmludGVyY2VwdG9ycy5yZXNwb25zZSlvPWF3YWl0IGwobyk7cmV0dXJuIG99Y2F0Y2goYSl7dGhyb3cgYXdhaXQgdGhpcy5pbnRlcmNlcHRvck1hbmFnZXIucHJvY2Vzc0Vycm9yKGEgaW5zdGFuY2VvZiBFcnJvcj9hOm5ldyBFcnJvcihTdHJpbmcoYSkpKX19YXN5bmMgZ2V0SnNvbihlLHQ9e30pe2xldCBhPWF3YWl0IHRoaXMucmVxdWVzdChlLHsuLi50LG1ldGhvZDoiR0VUIixoZWFkZXJzOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24iLC4uLnQuaGVhZGVyc3x8e319fSk7aWYoIWEub2spdGhyb3cgbmV3IEVycm9yKGBIVFRQICR7YS5zdGF0dXN9OiAke2Euc3RhdHVzVGV4dH1gKTtyZXR1cm4gYXdhaXQgYS5qc29uKCl9YXN5bmMgcG9zdEpzb24oZSx0LGE9e30pe2xldCByPWF3YWl0IHRoaXMucmVxdWVzdChlLHsuLi5hLG1ldGhvZDoiUE9TVCIsaGVhZGVyczp7IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL2pzb24iLEFjY2VwdDoiYXBwbGljYXRpb24vanNvbiIsLi4uYS5oZWFkZXJzfHx7fX0sYm9keTpKU09OLnN0cmluZ2lmeSh0KX0pO2lmKCFyLm9rKXRocm93IG5ldyBFcnJvcihgSFRUUCAke3Iuc3RhdHVzfTogJHtyLnN0YXR1c1RleHR9YCk7cmV0dXJuIGF3YWl0IHIuanNvbigpfWFzeW5jIHB1dEpzb24oZSx0LGE9e30pe2xldCByPWF3YWl0IHRoaXMucmVxdWVzdChlLHsuLi5hLG1ldGhvZDoiUFVUIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiIsQWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIiwuLi5hLmhlYWRlcnN8fHt9fSxib2R5OkpTT04uc3RyaW5naWZ5KHQpfSk7aWYoIXIub2spdGhyb3cgbmV3IEVycm9yKGBIVFRQICR7ci5zdGF0dXN9OiAke3Iuc3RhdHVzVGV4dH1gKTtyZXR1cm4gYXdhaXQgci5qc29uKCl9YXN5bmMgZGVsZXRlSnNvbihlLHQ9e30pe2xldCBhPWF3YWl0IHRoaXMucmVxdWVzdChlLHsuLi50LG1ldGhvZDoiREVMRVRFIixoZWFkZXJzOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24iLC4uLnQuaGVhZGVyc3x8e319fSk7aWYoIWEub2spdGhyb3cgbmV3IEVycm9yKGBIVFRQICR7YS5zdGF0dXN9OiAke2Euc3RhdHVzVGV4dH1gKTtyZXR1cm4gYXdhaXQgYS5qc29uKCl9fX0pO2FzeW5jIGZ1bmN0aW9uIEZsKHMsZSl7bGV0IHQ9cyBpbnN0YW5jZW9mIFJlcXVlc3Q/cy51cmw6U3RyaW5nKHMpLGE9cyBpbnN0YW5jZW9mIFJlcXVlc3Q/czpuZXcgUmVxdWVzdCh0LGUpO3JldHVybiBhd2FpdCBTMS5yZXF1ZXN0KGEsZSl9dmFyIFMxLHU2dD1nKCgpPT57cDRlKCk7UzE9bmV3IGwzO2koRmwsIndlYnJlcXVlc3QiKSxGbC5nZXRKc29uPWFzeW5jIGZ1bmN0aW9uKHMsZSl7cmV0dXJuIGF3YWl0IFMxLmdldEpzb24ocyxlKX0sRmwucG9zdEpzb249YXN5bmMgZnVuY3Rpb24ocyxlLHQpe3JldHVybiBhd2FpdCBTMS5wb3N0SnNvbihzLGUsdCl9LEZsLnB1dEpzb249YXN5bmMgZnVuY3Rpb24ocyxlLHQpe3JldHVybiBhd2FpdCBTMS5wdXRKc29uKHMsZSx0KX0sRmwuZGVsZXRlSnNvbj1hc3luYyBmdW5jdGlvbihzLGUpe3JldHVybiBhd2FpdCBTMS5kZWxldGVKc29uKHMsZSl9LEZsLmFkZFJlcXVlc3RJbnRlcmNlcHRvcj1mdW5jdGlvbihzKXtTMS5hZGRSZXF1ZXN0SW50ZXJjZXB0b3Iocyl9LEZsLmFkZFJlc3BvbnNlSW50ZXJjZXB0b3I9ZnVuY3Rpb24ocyl7UzEuYWRkUmVzcG9uc2VJbnRlcmNlcHRvcihzKX0sRmwuYWRkRXJyb3JJbnRlcmNlcHRvcj1mdW5jdGlvbihzKXtTMS5hZGRFcnJvckludGVyY2VwdG9yKHMpfSxGbC5jbGVhckludGVyY2VwdG9ycz1mdW5jdGlvbigpe1MxLmNsZWFySW50ZXJjZXB0b3JzKCl9LEZsLmNsZWFyQ2FjaGU9YXN5bmMgZnVuY3Rpb24oKXthd2FpdCBTMS5jbGVhckNhY2hlKCl9LEZsLmNyZWF0ZUNsaWVudD1mdW5jdGlvbihzKXtyZXR1cm4gbmV3IGwzKHMpfSxGbC5nZXREZWZhdWx0Q2xpZW50PWZ1bmN0aW9uKCl7cmV0dXJuIFMxfX0pO3ZhciBfMT17fTt5dChfMSx7Q2FjaGVNYW5hZ2VyOigpPT52OSxDYWNoZVN0b3JlOigpPT5iOSxJbnRlcmNlcHRvck1hbmFnZXI6KCk9PmY5LFJlcXVlc3REZWR1cGxpY2F0b3I6KCk9Pnk5LFJldHJ5TWFuYWdlcjooKT0+eDksV2VicmVxdWVzdENsaWVudDooKT0+bDMsY3JlYXRlQ29uZGl0aW9uYWxIZWFkZXJzOigpPT5YYWUsZXh0cmFjdENhY2hlTWV0YWRhdGE6KCk9PmNkLGhlYWRlcnNUb09iamVjdDooKT0+UWFlLGlzRnJlc2g6KCk9PmN3LG9iamVjdFRvSGVhZGVyczooKT0+aTZ0LHJlcXVpcmVzUmV2YWxpZGF0aW9uOigpPT5kdyx3ZWJyZXF1ZXN0OigpPT5GbH0pO3ZhciBhc2U9ZygoKT0+e3U2dCgpO3A0ZSgpO280ZSgpO1phZSgpO2M0ZSgpO1BoZSgpO2Q0ZSgpO0phZSgpfSk7dmFyICRwLERwPWcoKCk9PntVNCgpOyRwPXhuKGl5KCksMSk7dTkoKTskaGUoKTtkMCgpO0VoZSgpO2lvKCk7YXNlKCl9KTt2YXIgTTEsdzk9ZygoKT0+e0RwKCk7TTE9Y2xhc3N7c3RhdGlje2kodGhpcywiVHlwZWRSZXNwb25zZUVycm9yIil9Y29uc3RydWN0b3IoZSx0KXt0aGlzLmVycm9yVGV4dD1lLHRoaXMuZXJyb3JEYXRhPXR9fX0pO3ZhciBpc2UscDZ0PWcoKCk9Pnt3OSgpO0RwKCk7aXNlPWNsYXNze3N0YXRpY3tpKHRoaXMsIlR5cGVkVG9vbHMiKX1jb25zdHJ1Y3Rvcigpe3RoaXMubG9jYWxEYXRhPXt9fWFzeW5jIHBhc3NHdWFyZHMoZSx0KXtsZXQgYT1uZXcgdjAuR3VhcmRTZXQoZSk7aWYoIWF3YWl0IGEuYWxsR3VhcmRzUGFzcyh0KSl7bGV0IG49YXdhaXQgYS5nZXRGYWlsZWRIaW50KHQpO3Rocm93IG5ldyBNMShgZ3VhcmQgZmFpbGVkOiAke259YCx7ZmFpbGVkSGludDpufSl9fX19KTt2YXIgaDRlLGY0ZT1nKCgpPT57RHAoKTt3OSgpO3A2dCgpO2g0ZT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJUeXBlZEhhbmRsZXIiKX1jb25zdHJ1Y3RvcihlLHQpe3RoaXMubWV0aG9kPWUsdGhpcy5oYW5kbGVyRnVuY3Rpb249dH1hc3luYyBhZGRSZXNwb25zZShlKXtpZihlLm1ldGhvZCE9PXRoaXMubWV0aG9kKXRocm93IG5ldyBFcnJvcigidGhpcyBoYW5kbGVyIGhhcyBiZWVuIGdpdmVuIGEgd3JvbmcgbWV0aG9kIHRvIGFuc3dlciB0by4gUGxlYXNlIHVzZSBhIFR5cGVkUm91dGVyIHRvIGZpbHRlciByZXF1ZXN0cyIpO2xldCB0LGE9bmV3IGlzZTtlLmxvY2FsRGF0YSYmKGEubG9jYWxEYXRhPWUubG9jYWxEYXRhKTtsZXQgcj1hd2FpdCB0aGlzLmhhbmRsZXJGdW5jdGlvbihlLnJlcXVlc3QsYSkuY2F0Y2gobj0+e24gaW5zdGFuY2VvZiBNMT90PW46Y29uc29sZS5sb2cobil9KTtyZXR1cm4gdCYmKGUuZXJyb3I9e3RleHQ6dC5lcnJvclRleHQsZGF0YTp0LmVycm9yRGF0YX0pLHImJihlLnJlc3BvbnNlPXIpLGU/LmNvcnJlbGF0aW9uPy5waGFzZSYmKGUuY29ycmVsYXRpb24ucGhhc2U9InJlc3BvbnNlIiksZX19fSk7dmFyIGMzLHV3PWcoKCk9PntEcCgpO3JzZSgpO2Y0ZSgpO200ZSgpO3c5KCk7YzM9Y2xhc3Mgc3tzdGF0aWN7aSh0aGlzLCJUeXBlZFJvdXRlciIpfWNvbnN0cnVjdG9yKCl7dGhpcy5ob29rcz17fSx0aGlzLnJvdXRlck1hcD1uZXcgRnMuT2JqZWN0TWFwLHRoaXMuaGFuZGxlck1hcD1uZXcgRnMuT2JqZWN0TWFwLHRoaXMucmVnaXN0ZXJlZFZpcnR1YWxTdHJlYW1zPW5ldyBGcy5PYmplY3RNYXAsdGhpcy5taWRkbGV3YXJlcz1bXSx0aGlzLmZpcmVFdmVudEludGVyZXN0TWFwPW5ldyBGcy5JbnRlcmVzdE1hcChlPT5lKX1zdGF0aWMgZ2V0IGdsb2JhbEhvb2tzKCl7cmV0dXJuIGdsb2JhbFRoaXMuX190eXBlZFJvdXRlckdsb2JhbEhvb2tzfHwoZ2xvYmFsVGhpcy5fX3R5cGVkUm91dGVyR2xvYmFsSG9va3M9e30pLGdsb2JhbFRoaXMuX190eXBlZFJvdXRlckdsb2JhbEhvb2tzfXN0YXRpYyBzZXQgZ2xvYmFsSG9va3MoZSl7Z2xvYmFsVGhpcy5fX3R5cGVkUm91dGVyR2xvYmFsSG9va3M9ZX1zdGF0aWMgc2V0R2xvYmFsSG9va3MoZSl7bGV0IHQ9cy5nbG9iYWxIb29rcztzLmdsb2JhbEhvb2tzPXsuLi50LC4uLmV9fXN0YXRpYyBjbGVhckdsb2JhbEhvb2tzKCl7Z2xvYmFsVGhpcy5fX3R5cGVkUm91dGVyR2xvYmFsSG9va3M9e319c2V0SG9va3MoZSl7dGhpcy5ob29rcz17Li4udGhpcy5ob29rcywuLi5lfX1jYWxsSG9vayhlLHQpe3RyeXtzLmdsb2JhbEhvb2tzW2VdPy4odCksdGhpcy5ob29rc1tlXT8uKHQpfWNhdGNoKGEpe2NvbnNvbGUuZXJyb3IoYFR5cGVkUm91dGVyIGhvb2sgZXJyb3IgKCR7ZX0pOmAsYSl9fWFkZE1pZGRsZXdhcmUoZSl7dGhpcy5taWRkbGV3YXJlcy5wdXNoKGUpfWFkZFR5cGVkSGFuZGxlcihlKXtpZih0aGlzLmdldFR5cGVkSGFuZGxlckZvck1ldGhvZChlLm1ldGhvZCkpdGhyb3cgbmV3IEVycm9yKGBhIFR5cGVkSGFuZGxlciBmb3IgJHtlLm1ldGhvZH0gYWxyZWR5IGV4aXN0cyEgQ2FuJ3QgYWRkIGFub3RoZXIgb25lLmApO3RoaXMuaGFuZGxlck1hcC5hZGQoZSl9YWRkVHlwZWRSb3V0ZXIoZSl7dGhpcy5yb3V0ZXJNYXAuZmluZFN5bmMoYT0+YT09PWUpfHwodGhpcy5yb3V0ZXJNYXAuYWRkKGUpLGUuYWRkVHlwZWRSb3V0ZXIodGhpcykpfWNoZWNrRm9yVHlwZWRIYW5kbGVyKGUpe3JldHVybiEhdGhpcy5nZXRUeXBlZEhhbmRsZXJGb3JNZXRob2QoZSl9Z2V0VHlwZWRIYW5kbGVyRm9yTWV0aG9kKGUsdD1bXSl7dC5wdXNoKHRoaXMpO2xldCBhO3JldHVybiBhPXRoaXMuaGFuZGxlck1hcC5maW5kU3luYyhyPT5yLm1ldGhvZD09PWUpLGF8fHRoaXMucm91dGVyTWFwLmdldEFycmF5KCkuZm9yRWFjaChyPT57IWEmJiF0LmluY2x1ZGVzKHIpJiYoYT1yLmdldFR5cGVkSGFuZGxlckZvck1ldGhvZChlLHQpKX0pLGF9Z2V0VHlwZWRIYW5kbGVyQW5kUm91dGVyKGUsdD1bXSl7dC5wdXNoKHRoaXMpO2xldCBhPXRoaXMuaGFuZGxlck1hcC5maW5kU3luYyhyPT5yLm1ldGhvZD09PWUpO2lmKGEpcmV0dXJue2hhbmRsZXI6YSxyb3V0ZXI6dGhpc307Zm9yKGxldCByIG9mIHRoaXMucm91dGVyTWFwLmdldEFycmF5KCkpaWYoIXQuaW5jbHVkZXMocikpe2xldCBuPXIuZ2V0VHlwZWRIYW5kbGVyQW5kUm91dGVyKGUsdCk7aWYobilyZXR1cm4gbn1yZXR1cm4gbnVsbH1zdGF0aWN7dGhpcy5kZWZhdWx0Um91dGVPcHRpb25zPXtsb2NhbFJlcXVlc3Q6ITEsc2tpcEhvb2tzOiExfX1hc3luYyByb3V0ZUFuZEFkZFJlc3BvbnNlKGUsdD17fSl7bGV0IGE9ey4uLnMuZGVmYXVsdFJvdXRlT3B0aW9ucywuLi50fTtpZihlPXoxLmRlY29kZVBheWxvYWRGcm9tTmV0d29yayhlLHt0eXBlZHJvdXRlcjp0aGlzfSksZS5sb2NhbERhdGE9ZS5sb2NhbERhdGF8fHt9LGUubG9jYWxEYXRhLmZpcnN0VHlwZWRyb3V0ZXI9dGhpcyxlLm1ldGhvZD09PSIjI1ZpcnR1YWxTdHJlYW0jIyIpe2xldCByPWF3YWl0IHRoaXMuaGFuZGxlU3RyZWFtVHlwZWRSZXF1ZXN0KGUpO3JldHVybiByLmxvY2FsRGF0YT1udWxsLHJ9aWYoZT8uY29ycmVsYXRpb24/LnBoYXNlPT09InJlcXVlc3QifHxhLmxvY2FsUmVxdWVzdCl7bGV0IHI9RGF0ZS5ub3coKTthLnNraXBIb29rc3x8dGhpcy5jYWxsSG9vaygib25JbmNvbWluZ1JlcXVlc3QiLHtjb3JyZWxhdGlvbklkOmUuY29ycmVsYXRpb24/LmlkfHwidW5rbm93biIsbWV0aG9kOmUubWV0aG9kLGRpcmVjdGlvbjoiaW5jb21pbmciLHBoYXNlOiJyZXF1ZXN0Iix0aW1lc3RhbXA6cixwYXlsb2FkOmUucmVxdWVzdH0pO2xldCBuPXRoaXMuZ2V0VHlwZWRIYW5kbGVyQW5kUm91dGVyKGUubWV0aG9kKTtpZighbilyZXR1cm4gY29uc29sZS5sb2coYENhbm5vdCBmaW5kIGhhbmRsZXIgZm9yIG1ldGhvZG5hbWUgJHtlLm1ldGhvZH1gKSxlLmVycm9yPXt0ZXh0OiJUaGVyZSBpcyBubyBhdmFpbGFibGUgbWV0aG9kIGZvciB0aGlzIGNhbGwgb24gdGhlIHNlcnZlciBzaWRlIixkYXRhOnt9fSxlLmNvcnJlbGF0aW9uLnBoYXNlPSJyZXNwb25zZSIsZS5sb2NhbERhdGE9bnVsbCxlPXoxLmVuY29kZVBheWxvYWRGb3JOZXR3b3JrKGUse3R5cGVkcm91dGVyOnRoaXN9KSxhLnNraXBIb29rc3x8dGhpcy5jYWxsSG9vaygib25PdXRnb2luZ1Jlc3BvbnNlIix7Y29ycmVsYXRpb25JZDplLmNvcnJlbGF0aW9uPy5pZHx8InVua25vd24iLG1ldGhvZDplLm1ldGhvZCxkaXJlY3Rpb246Im91dGdvaW5nIixwaGFzZToicmVzcG9uc2UiLHRpbWVzdGFtcDpEYXRlLm5vdygpLGR1cmF0aW9uTXM6RGF0ZS5ub3coKS1yLHBheWxvYWQ6ZS5yZXNwb25zZSxlcnJvcjplLmVycm9yPy50ZXh0fSksZTtsZXR7aGFuZGxlcjpvLHJvdXRlcjpsfT1uO2lmKGwubWlkZGxld2FyZXMubGVuZ3RoPjApdHJ5e2ZvcihsZXQgcCBvZiBsLm1pZGRsZXdhcmVzKWF3YWl0IHAoZSl9Y2F0Y2gocCl7cmV0dXJuIHAgaW5zdGFuY2VvZiBNMT9lLmVycm9yPXt0ZXh0OnAuZXJyb3JUZXh0LGRhdGE6cC5lcnJvckRhdGF8fHt9fTplLmVycm9yPXt0ZXh0OnAubWVzc2FnZXx8Ik1pZGRsZXdhcmUgZXJyb3IiLGRhdGE6e319LGUuY29ycmVsYXRpb24ucGhhc2U9InJlc3BvbnNlIixlLmxvY2FsRGF0YT1udWxsLGU9ejEuZW5jb2RlUGF5bG9hZEZvck5ldHdvcmsoZSx7dHlwZWRyb3V0ZXI6dGhpc30pLGEuc2tpcEhvb2tzfHx0aGlzLmNhbGxIb29rKCJvbk91dGdvaW5nUmVzcG9uc2UiLHtjb3JyZWxhdGlvbklkOmUuY29ycmVsYXRpb24/LmlkfHwidW5rbm93biIsbWV0aG9kOmUubWV0aG9kLGRpcmVjdGlvbjoib3V0Z29pbmciLHBoYXNlOiJyZXNwb25zZSIsdGltZXN0YW1wOkRhdGUubm93KCksZHVyYXRpb25NczpEYXRlLm5vdygpLXIscGF5bG9hZDplLnJlc3BvbnNlLGVycm9yOmUuZXJyb3I/LnRleHR9KSxlfXJldHVybiBlPWF3YWl0IG8uYWRkUmVzcG9uc2UoZSksZS5sb2NhbERhdGE9bnVsbCxlPXoxLmVuY29kZVBheWxvYWRGb3JOZXR3b3JrKGUse3R5cGVkcm91dGVyOnRoaXN9KSxhLnNraXBIb29rc3x8dGhpcy5jYWxsSG9vaygib25PdXRnb2luZ1Jlc3BvbnNlIix7Y29ycmVsYXRpb25JZDplLmNvcnJlbGF0aW9uPy5pZHx8InVua25vd24iLG1ldGhvZDplLm1ldGhvZCxkaXJlY3Rpb246Im91dGdvaW5nIixwaGFzZToicmVzcG9uc2UiLHRpbWVzdGFtcDpEYXRlLm5vdygpLGR1cmF0aW9uTXM6RGF0ZS5ub3coKS1yLHBheWxvYWQ6ZS5yZXNwb25zZSxlcnJvcjplLmVycm9yPy50ZXh0fSksZX1lbHNlIHJldHVybiBlPy5jb3JyZWxhdGlvbj8ucGhhc2U9PT0icmVzcG9uc2UiPyhhLnNraXBIb29rc3x8dGhpcy5jYWxsSG9vaygib25JbmNvbWluZ1Jlc3BvbnNlIix7Y29ycmVsYXRpb25JZDplLmNvcnJlbGF0aW9uPy5pZHx8InVua25vd24iLG1ldGhvZDplLm1ldGhvZCxkaXJlY3Rpb246ImluY29taW5nIixwaGFzZToicmVzcG9uc2UiLHRpbWVzdGFtcDpEYXRlLm5vdygpLHBheWxvYWQ6ZS5yZXNwb25zZSxlcnJvcjplLmVycm9yPy50ZXh0fSksdGhpcy5maXJlRXZlbnRJbnRlcmVzdE1hcC5maW5kSW50ZXJlc3QoZS5jb3JyZWxhdGlvbi5pZCk/LmZ1bGxmaWxsSW50ZXJlc3QoZSksbnVsbCk6KGNvbnNvbGUubG9nKCJyZWNlaXZlZCB3ZWlyZGx5IHNoYXBlZCByZXF1ZXN0IiksY29uc29sZS5sb2coZSksbnVsbCl9YXN5bmMgaGFuZGxlU3RyZWFtVHlwZWRSZXF1ZXN0KGUpe2xldCB0PWF3YWl0IHRoaXMucmVnaXN0ZXJlZFZpcnR1YWxTdHJlYW1zLmZpbmQoYXN5bmMgcj0+ci5zdHJlYW1JZD09PWUucmVxdWVzdC5zdHJlYW1JZCk7aWYodCljb25zb2xlLmxvZyhgc3VjY2VzczogZm91bmQgcmVsZXZhbnQgdmlydHVhbCBzdHJlYW0gd2l0aCBpZCAke2UucmVxdWVzdC5zdHJlYW1JZH1gKTtlbHNlIHJldHVybiBjb25zb2xlLmxvZyhgbm8gcmVsZXZhbnQgdmlydHVhbCBzdHJlYW0gZm91bmQgZm9yIHN0cmVhbSB3aXRoIGlkICR7ZS5yZXF1ZXN0LnN0cmVhbUlkfWApLGNvbnNvbGUubG9nKHRoaXMucmVnaXN0ZXJlZFZpcnR1YWxTdHJlYW1zLmdldEFycmF5KCkpLGU7cmV0dXJuIGF3YWl0IHQuaGFuZGxlU3RyZWFtVHIoZSl9fX0pO3ZhciBoNnQsejEscnNlPWcoKCk9PntEcCgpO3V3KCk7aDZ0PSIjIyMjIyMjIyMjIyMjQ0xPU0lORyBCSVQjIyMjIyMjIyMjIyMjIix6MT1jbGFzcyBze3N0YXRpY3tpKHRoaXMsIlZpcnR1YWxTdHJlYW0iKX1zdGF0aWMgZW5jb2RlUGF5bG9hZEZvck5ldHdvcmsoZSx0LGEscj1bXSl7cmV0dXJuIWV8fHkxLmlzQnVmZmVyTGlrZShlKT9lOmUgaW5zdGFuY2VvZiBzPyghZS5zaWRlJiZ0LnNlbmRNZXRob2QmJihlLnNpZGU9InJlcXVlc3RpbmciLGUuc2VuZE1ldGhvZD10LnNlbmRNZXRob2QpLCFlLnNpZGUmJnQudHlwZWRyb3V0ZXImJihlLnNpZGU9InJlc3BvbmRpbmciLGUudHlwZWRyb3V0ZXI9dC50eXBlZHJvdXRlcix0LnR5cGVkcm91dGVyLnJlZ2lzdGVyZWRWaXJ0dWFsU3RyZWFtcy5hZGQoZSkpLCFhLnJlc3BvbnNlfHxyLmluY2x1ZGVzKCJyZXNwb25zZSIpPyhlLnN0YXJ0S2VlcEFsaXZlTG9vcCgpLHtfaXNWaXJ0dWFsU3RyZWFtOiEwLHN0cmVhbUlkOmUuc3RyZWFtSWR9KTp7X09CTUlUVEVEX1ZJUlRVQUxfU1RSRUFNOiEwLHJlYXNvbjoicGF0aCBpcyB1bmRlciAucmVxdWVzdDogb2JtaXR0ZWQgZm9yIGRlZHVwbGljYXRpb24gcmVhc29ucyBpbiByZXNwb25zZSBjeWNsZS4ifSk6QXJyYXkuaXNBcnJheShlKT9lLm1hcCgobixvKT0+cy5lbmNvZGVQYXlsb2FkRm9yTmV0d29yayhuLHQsYXx8ZSxyLmNvbmNhdChTdHJpbmcobykpKSk6ZSE9PW51bGwmJnR5cGVvZiBlPT0ib2JqZWN0Ij9PYmplY3QuZW50cmllcyhlKS5yZWR1Y2UoKG4sW28sbF0pPT57bGV0IHA9ci5jb25jYXQobyk7cmV0dXJuIG5bb109cy5lbmNvZGVQYXlsb2FkRm9yTmV0d29yayhsLHQsYXx8ZSxwKSxufSx7fSk6ZX1zdGF0aWMgZGVjb2RlUGF5bG9hZEZyb21OZXR3b3JrKGUsdCl7aWYoeTEuaXNCdWZmZXJMaWtlKGUpfHxlIGluc3RhbmNlb2YgYzMpcmV0dXJuIGU7aWYoZSE9PW51bGwmJnR5cGVvZiBlPT0ib2JqZWN0Iil7aWYoZSBpbnN0YW5jZW9mIFNldHx8ZSBpbnN0YW5jZW9mIE1hcHx8ZSBpbnN0YW5jZW9mIERhdGV8fGUgaW5zdGFuY2VvZiBSZWdFeHB8fGUgaW5zdGFuY2VvZiBFcnJvcnx8ZSBpbnN0YW5jZW9mIFByb21pc2V8fHR5cGVvZiBlLnRoZW49PSJmdW5jdGlvbiIpcmV0dXJuIGU7aWYoZS5faXNWaXJ0dWFsU3RyZWFtKXtsZXQgYT1uZXcgcztyZXR1cm4gYS5zdHJlYW1JZD1lLnN0cmVhbUlkLCFhLnNpZGUmJnQuc2VuZE1ldGhvZCYmKGEuc2lkZT0icmVxdWVzdGluZyIsYS5zZW5kTWV0aG9kPXQuc2VuZE1ldGhvZCksIWEuc2lkZSYmdC50eXBlZHJvdXRlciYmKGEuc2lkZT0icmVzcG9uZGluZyIsYS50eXBlZHJvdXRlcj10LnR5cGVkcm91dGVyLHQudHlwZWRyb3V0ZXIucmVnaXN0ZXJlZFZpcnR1YWxTdHJlYW1zLmFkZChhKSksYS5zdGFydEtlZXBBbGl2ZUxvb3AoKSxhfWVsc2UgaWYoQXJyYXkuaXNBcnJheShlKSl7bGV0IGE9W107Zm9yKGxldCByIG9mIGUpYS5wdXNoKHMuZGVjb2RlUGF5bG9hZEZyb21OZXR3b3JrKHIsdCkpO3JldHVybiBhfWVsc2UgcmV0dXJuIE9iamVjdC5rZXlzKGUpLnJlZHVjZSgoYSxyKT0+KGFbcl09cy5kZWNvZGVQYXlsb2FkRnJvbU5ldHdvcmsoZVtyXSx0KSxhKSx7fSl9ZWxzZSByZXR1cm4gZX1jb25zdHJ1Y3Rvcigpe3RoaXMuc3RyZWFtSWQ9JHAudW5pKCksdGhpcy5rZWVwQWxpdmU9ITAsdGhpcy5zZW5kQmFja3ByZXNzdXJlZEFycmF5PW5ldyBGcy5CYWNrcHJlc3N1cmVkQXJyYXkoMTYpLHRoaXMucmVjZWl2ZUJhY2twcmVzc3VyZWRBcnJheT1uZXcgRnMuQmFja3ByZXNzdXJlZEFycmF5KDE2KX1zdGF0aWMgcmVjb25zdGl0dXRlQmluYXJ5RGF0YShlKXtpZihlPT1udWxsfHxlIGluc3RhbmNlb2YgVWludDhBcnJheXx8dHlwZW9mIEJ1ZmZlcjwidSImJkJ1ZmZlci5pc0J1ZmZlcihlKSlyZXR1cm4gZTtpZih0eXBlb2YgZT09Im9iamVjdCIpe2lmKGUudHlwZT09PSJCdWZmZXIiJiZBcnJheS5pc0FycmF5KGUuZGF0YSkpcmV0dXJuIG5ldyBVaW50OEFycmF5KGUuZGF0YSk7bGV0IHQ9T2JqZWN0LmtleXMoZSk7aWYodC5sZW5ndGg+MCYmdC5ldmVyeShhPT4vXlxkKyQvLnRlc3QoYSkpKXtsZXQgYT1uZXcgQXJyYXkodC5sZW5ndGgpO2ZvcihsZXQgciBvZiB0KWFbTnVtYmVyKHIpXT1lW3JdO2lmKGEuZXZlcnkocj0+dHlwZW9mIHI9PSJudW1iZXIiKSlyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYSl9fXJldHVybiBlfWFzeW5jIHdvcmtPblF1ZXVlKCl7aWYodGhpcy53b3JraW5nRGVmZXJyZWQpcmV0dXJuIHRoaXMud29ya2luZ0RlZmVycmVkLnByb21pc2U7aWYodGhpcy53b3JraW5nRGVmZXJyZWQ9bXQuZGVmZXIoKSx0aGlzLnNpZGU9PT0icmVxdWVzdGluZyIpe2xldCBlPSF0aGlzLnJlY2VpdmVCYWNrcHJlc3N1cmVkQXJyYXkuY2hlY2tTcGFjZUF2YWlsYWJsZSgpLHQ9ITEsYT0hMSxyPWkoYXN5bmMoKT0+e2xldCBuPWF3YWl0IHRoaXMuc2VuZE1ldGhvZCh7bWV0aG9kOiIjI1ZpcnR1YWxTdHJlYW0jIyIscmVxdWVzdDp7c3RyZWFtSWQ6dGhpcy5zdHJlYW1JZCxjeWNsZUlkOiRwLnVuaSgpLGN5Y2xlOiJyZXF1ZXN0IixtYWluUHVycG9zZToiZmVlZGJhY2siLG5leHQ6dGhpcy5zZW5kQmFja3ByZXNzdXJlZEFycmF5LmRhdGEubGVuZ3RoPjAsYmFja3ByZXNzdXJlOiF0aGlzLnJlY2VpdmVCYWNrcHJlc3N1cmVkQXJyYXkuY2hlY2tTcGFjZUF2YWlsYWJsZSgpfSxyZXNwb25zZTpudWxsfSkuY2F0Y2goKCk9Pntjb25zb2xlLmxvZygic3RyZWFtIGVuZGVkIGltbWF0dXJlbHkiKSx0aGlzLmtlZXBBbGl2ZT0hMX0pO24mJm4ucmVzcG9uc2UmJihhPW4ucmVzcG9uc2UuYmFja3ByZXNzdXJlLHQ9bi5yZXNwb25zZS5uZXh0KX0sImdldEZlZWRiYWNrIik7Zm9yKGF3YWl0IHIoKTt0aGlzLnNlbmRCYWNrcHJlc3N1cmVkQXJyYXkuZGF0YS5sZW5ndGg+MHx8dDspe2lmKGEpZm9yKDthOyljb25zb2xlLmxvZygid2FpdGluZyBmb3IgZmVlZGJhY2sgYmVjYXVzZSBvZiBiYWNrcHJlc3N1cmUuLi4iKSxhd2FpdCBYdC5kZWxheUZvcig1MCksYXdhaXQgcigpO2xldCBuO3RoaXMuc2VuZEJhY2twcmVzc3VyZWRBcnJheS5kYXRhLmxlbmd0aD4wJiYobj10aGlzLnNlbmRCYWNrcHJlc3N1cmVkQXJyYXkuc2hpZnQoKSk7bGV0IG87bz1hd2FpdCB0aGlzLnNlbmRNZXRob2Qoe21ldGhvZDoiIyNWaXJ0dWFsU3RyZWFtIyMiLHJlcXVlc3Q6e3N0cmVhbUlkOnRoaXMuc3RyZWFtSWQsY3ljbGVJZDokcC51bmkoKSxjeWNsZToicmVxdWVzdCIsbWFpblB1cnBvc2U6bj8iY2h1bmsiOiJyZWFkIixiYWNrcHJlc3N1cmU6ZSxuZXh0OnRoaXMuc2VuZEJhY2twcmVzc3VyZWRBcnJheS5kYXRhLmxlbmd0aD4wLC4uLm4/e2NodW5rRGF0YTpufTp7fX0scmVzcG9uc2U6bnVsbH0pLmNhdGNoKCgpPT4oY29uc29sZS5sb2coInN0cmVhbSBlbmRlZCBpbW1hdHVyZWx5IiksdGhpcy5rZWVwQWxpdmU9ITEsbnVsbCkpLG8mJm8ucmVzcG9uc2UmJm8ucmVzcG9uc2UuY2h1bmtEYXRhJiZ0aGlzLnJlY2VpdmVCYWNrcHJlc3N1cmVkQXJyYXkucHVzaChzLnJlY29uc3RpdHV0ZUJpbmFyeURhdGEoby5yZXNwb25zZS5jaHVua0RhdGEpKSxhPW8mJm8ucmVzcG9uc2UmJm8ucmVzcG9uc2UuYmFja3ByZXNzdXJlLGU9IXRoaXMucmVjZWl2ZUJhY2twcmVzc3VyZWRBcnJheS5jaGVja1NwYWNlQXZhaWxhYmxlKCksdD1vJiZvLnJlc3BvbnNlJiZvLnJlc3BvbnNlLm5leHR9fXRoaXMud29ya2luZ0RlZmVycmVkLnJlc29sdmUoKSx0aGlzLndvcmtpbmdEZWZlcnJlZD1udWxsfWFzeW5jIGhhbmRsZVN0cmVhbVRyKGUpe2lmKGUucmVxdWVzdC5rZWVwQWxpdmU9PT0hMCYmdGhpcy5rZWVwQWxpdmU9PT0hMD90aGlzLmxhc3RLZWVwQWxpdmVFdmVudD1EYXRlLm5vdygpOmUucmVxdWVzdC5rZWVwQWxpdmU9PT0hMSYmKHRoaXMua2VlcEFsaXZlPSExKSxlLnJlcXVlc3QubWFpblB1cnBvc2U9PT0ia2VlcEFsaXZlIiYmKGUucmVzcG9uc2U9e3N0cmVhbUlkOnRoaXMuc3RyZWFtSWQsY3ljbGVJZDplLnJlcXVlc3QuY3ljbGVJZCxjeWNsZToicmVzcG9uc2UiLG1haW5QdXJwb3NlOiJrZWVwQWxpdmUiLGtlZXBBbGl2ZTp0aGlzLmtlZXBBbGl2ZSxuZXh0OnRoaXMuc2VuZEJhY2twcmVzc3VyZWRBcnJheS5kYXRhLmxlbmd0aD4wLGJhY2twcmVzc3VyZTohdGhpcy5yZWNlaXZlQmFja3ByZXNzdXJlZEFycmF5LmNoZWNrU3BhY2VBdmFpbGFibGUoKX0pLGUucmVxdWVzdC5tYWluUHVycG9zZT09PSJmZWVkYmFjayImJihlLnJlc3BvbnNlPXtzdHJlYW1JZDp0aGlzLnN0cmVhbUlkLGN5Y2xlSWQ6ZS5yZXF1ZXN0LmN5Y2xlSWQsY3ljbGU6InJlc3BvbnNlIixtYWluUHVycG9zZToiZmVlZGJhY2siLG5leHQ6dGhpcy5zZW5kQmFja3ByZXNzdXJlZEFycmF5LmRhdGEubGVuZ3RoPjAsYmFja3ByZXNzdXJlOiF0aGlzLnJlY2VpdmVCYWNrcHJlc3N1cmVkQXJyYXkuY2hlY2tTcGFjZUF2YWlsYWJsZSgpfSksZS5yZXF1ZXN0Lm1haW5QdXJwb3NlPT09ImNodW5rIil7aWYodGhpcy5yZWNlaXZlQmFja3ByZXNzdXJlZEFycmF5LnB1c2gocy5yZWNvbnN0aXR1dGVCaW5hcnlEYXRhKGUucmVxdWVzdC5jaHVua0RhdGEpKSx0aGlzLnNlbmRCYWNrcHJlc3N1cmVkQXJyYXkuZGF0YS5sZW5ndGg+MCYmZS5yZXNwb25zZS5iYWNrcHJlc3N1cmU9PT0hMSl7bGV0IHQ9dGhpcy5zZW5kQmFja3ByZXNzdXJlZEFycmF5LnNoaWZ0KCk7ZS5yZXNwb25zZT17c3RyZWFtSWQ6dGhpcy5zdHJlYW1JZCxjeWNsZUlkOmUucmVxdWVzdC5jeWNsZUlkLGN5Y2xlOiJyZXNwb25zZSIsbWFpblB1cnBvc2U6ImNodW5rIixuZXh0OnRoaXMuc2VuZEJhY2twcmVzc3VyZWRBcnJheS5kYXRhLmxlbmd0aD4xLGJhY2twcmVzc3VyZTohdGhpcy5yZWNlaXZlQmFja3ByZXNzdXJlZEFycmF5LmNoZWNrU3BhY2VBdmFpbGFibGUoKSxjaHVua0RhdGE6dGhpcy5zZW5kQmFja3ByZXNzdXJlZEFycmF5LnNoaWZ0KCl9fWVsc2UgZS5yZXNwb25zZT17c3RyZWFtSWQ6dGhpcy5zdHJlYW1JZCxjeWNsZUlkOmUucmVxdWVzdC5jeWNsZUlkLGN5Y2xlOiJyZXNwb25zZSIsbWFpblB1cnBvc2U6ImZlZWRiYWNrIixuZXh0OnRoaXMuc2VuZEJhY2twcmVzc3VyZWRBcnJheS5kYXRhLmxlbmd0aD4wLGJhY2twcmVzc3VyZTohdGhpcy5yZWNlaXZlQmFja3ByZXNzdXJlZEFycmF5LmNoZWNrU3BhY2VBdmFpbGFibGUoKX07ZS5yZXF1ZXN0PW51bGx9cmV0dXJuIGV9YXN5bmMgY2xlYW51cCgpe3RoaXMudHlwZWRyb3V0ZXImJnRoaXMudHlwZWRyb3V0ZXIucmVnaXN0ZXJlZFZpcnR1YWxTdHJlYW1zLnJlbW92ZSh0aGlzKX1hc3luYyBzdGFydEtlZXBBbGl2ZUxvb3AoKXtpZih0aGlzLnNpZGU9PT0icmVzcG9uZGluZyIpcmV0dXJuO2F3YWl0IFh0LmRlbGF5Rm9yKDApLGNvbnNvbGUubG9nKGBzdGFydGluZyBrZWVwYWxpdmUgbG9vcCBvbiBzaWRlICR7dGhpcy5zaWRlfWApO2xldCBlPTA7Zm9yKDt0aGlzLmtlZXBBbGl2ZTspYXdhaXQgdGhpcy50cmlnZ2VyS2VlcEFsaXZlKCksYXdhaXQgWHQuZGVsYXlGb3IoMWUzKTthd2FpdCBYdC5kZWxheUZvcigxZTMpLGF3YWl0IHRoaXMuY2xlYW51cCgpLGNvbnNvbGUubG9nKGBjbGVhbmVkIHVwIGZvciBzdHJlYW0gJHt0aGlzLnN0cmVhbUlkfWApfWFzeW5jIHRyaWdnZXJLZWVwQWxpdmUoKXtpZih0aGlzLnNpZGU9PT0icmVxdWVzdGluZyIpe2NvbnNvbGUubG9nKCJrZWVwYWxpdmUgc2VudC4iKTtsZXQgZT1hd2FpdCB0aGlzLnNlbmRNZXRob2Qoe21ldGhvZDoiIyNWaXJ0dWFsU3RyZWFtIyMiLHJlcXVlc3Q6e3N0cmVhbUlkOnRoaXMuc3RyZWFtSWQsY3ljbGVJZDokcC51bmkoKSxjeWNsZToicmVxdWVzdCIsbWFpblB1cnBvc2U6ImtlZXBBbGl2ZSIsa2VlcEFsaXZlOnRoaXMua2VlcEFsaXZlfSxyZXNwb25zZTpudWxsfSkuY2F0Y2goKCk9Pnt0aGlzLmtlZXBBbGl2ZT0hMX0pO2UmJmUucmVzcG9uc2UmJmUucmVzcG9uc2Uua2VlcEFsaXZlPT09ITE/dGhpcy5rZWVwQWxpdmU9ITE6dGhpcy5sYXN0S2VlcEFsaXZlRXZlbnQ9RGF0ZS5ub3coKSxlJiZlLnJlc3BvbnNlJiZlLnJlc3BvbnNlLm5leHQmJnRoaXMud29ya09uUXVldWUoKX1EYXRlLm5vdygpLXRoaXMubGFzdEtlZXBBbGl2ZUV2ZW50PjFlNCYmKGNvbnNvbGUubG9nKGBjbG9zaW5nIHN0cmVhbSBmb3IgJHt0aGlzLnN0cmVhbUlkfWApLHRoaXMua2VlcEFsaXZlPSExKX1hc3luYyBzZW5kRGF0YShlKXt0aGlzLnNlbmRCYWNrcHJlc3N1cmVkQXJyYXkucHVzaChlKSx0aGlzLndvcmtPblF1ZXVlKCksYXdhaXQgdGhpcy5zZW5kQmFja3ByZXNzdXJlZEFycmF5LndhaXRGb3JTcGFjZSgpfWFzeW5jIGZldGNoRGF0YSgpe3JldHVybiB0aGlzLnJlY2VpdmVCYWNrcHJlc3N1cmVkQXJyYXkuaGFzU3BhY2UsYXdhaXQgdGhpcy5yZWNlaXZlQmFja3ByZXNzdXJlZEFycmF5LndhaXRGb3JJdGVtcygpLHRoaXMucmVjZWl2ZUJhY2twcmVzc3VyZWRBcnJheS5zaGlmdCgpfWFzeW5jIHJlYWRGcm9tV2Vic3RyZWFtKGUsdD0hMCl7bGV0IGE9ZS5nZXRSZWFkZXIoKSxyPSExO2Zvcig7IXI7KXtsZXR7dmFsdWU6bixkb25lOm99PWF3YWl0IGEucmVhZCgpO24mJmF3YWl0IHRoaXMuc2VuZERhdGEobikscj1vfXQmJmF3YWl0IHRoaXMuY2xvc2UoITApfWFzeW5jIHdyaXRlVG9XZWJzdHJlYW0oZSl7bGV0IHQ9ZS5nZXRXcml0ZXIoKTtmb3IoO3RoaXMua2VlcEFsaXZlfHx0aGlzLnJlY2VpdmVCYWNrcHJlc3N1cmVkQXJyYXkuY2hlY2tIYXNJdGVtcygpOyl7bGV0IGE9YXdhaXQgdGhpcy5mZXRjaERhdGEoKTtpZihhPT09aDZ0KXt0LnJlbGVhc2VMb2NrKCksYXdhaXQgZS5jbG9zZSgpO2JyZWFrfWF3YWl0IHQud3JpdGUoYSl9fWFzeW5jIGNsb3NlKGU9ITEpe2UmJnRoaXMuc2VuZERhdGEoaDZ0KSx0aGlzLmtlZXBBbGl2ZT0hMX19fSk7dmFyIGc0ZSxiNGU9ZygoKT0+e3V3KCk7RHAoKTtnNGU9Y2xhc3N7c3RhdGlje2kodGhpcywiVHlwZWRUYXJnZXQiKX1jb25zdHJ1Y3RvcihlKXtpZihlLnBvc3RNZXRob2RXaXRoVHlwZWRSb3V0ZXImJiFlLnR5cGVkUm91dGVyUmVmKXRocm93IG5ldyBFcnJvcigieW91IGhhdmUgdG8gc3BlY2lmeSBhIHR5cGVkcm91dGVyIHdoZW4gdXNpbmcgcG9zdG1ldGhvZCB3aXRoIHR5cGVkcm91dGVyIik7dGhpcy5vcHRpb25zPWV9YXN5bmMgcG9zdChlKXtsZXQgdDt0aGlzLm9wdGlvbnMudHlwZWRSb3V0ZXJSZWYmJih0PWF3YWl0IHRoaXMub3B0aW9ucy50eXBlZFJvdXRlclJlZi5maXJlRXZlbnRJbnRlcmVzdE1hcC5hZGRJbnRlcmVzdChlLmNvcnJlbGF0aW9uLmlkLGUpKTtsZXQgcj1hd2FpdCh0aGlzLm9wdGlvbnMucG9zdE1ldGhvZHx8dGhpcy5vcHRpb25zLnBvc3RNZXRob2RXaXRoVHlwZWRSb3V0ZXIpKGUpLG47cmV0dXJuIHQ/bj1hd2FpdCB0LmludGVyZXN0RnVsbGZpbGxlZDpyP249cjpuPWUsbn19fSk7ZnVuY3Rpb24gZjZ0KHMsZSl7dHJ5e2MzLmdsb2JhbEhvb2tzW3NdPy4oZSl9Y2F0Y2godCl7Y29uc29sZS5lcnJvcihgVHlwZWRSZXF1ZXN0IGhvb2sgZXJyb3IgKCR7c30pOmAsdCl9fXZhciBwSWEsdjRlLG00ZT1nKCgpPT57RHAoKTtyc2UoKTt3OSgpO3V3KCk7YjRlKCk7cElhPW5ldyBfMS5XZWJyZXF1ZXN0Q2xpZW50O2koZjZ0LCJjYWxsR2xvYmFsSG9vayIpO3Y0ZT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJUeXBlZFJlcXVlc3QiKX1jb25zdHJ1Y3RvcihlLHQpe3RoaXMuc2tpcEhvb2tzPSExLHR5cGVvZiBlPT0ic3RyaW5nIj90aGlzLnVybEVuZFBvaW50PWU6dGhpcy50eXBlZFRhcmdldD1lLHRoaXMubWV0aG9kPXR9YXN5bmMgZmlyZShlLHQ9ITEpe2xldCBhPURhdGUubm93KCkscj17bWV0aG9kOnRoaXMubWV0aG9kLHJlcXVlc3Q6ZSxyZXNwb25zZTpudWxsLGNvcnJlbGF0aW9uOntpZDokcC51bmkoKSxwaGFzZToicmVxdWVzdCJ9fTtyPXoxLmVuY29kZVBheWxvYWRGb3JOZXR3b3JrKHIse3NlbmRNZXRob2Q6aShvPT50aGlzLnBvc3RUck9iamVjdChvKSwic2VuZE1ldGhvZCIpfSksdGhpcy5za2lwSG9va3N8fGY2dCgib25PdXRnb2luZ1JlcXVlc3QiLHtjb3JyZWxhdGlvbklkOnIuY29ycmVsYXRpb24uaWQsbWV0aG9kOnRoaXMubWV0aG9kLGRpcmVjdGlvbjoib3V0Z29pbmciLHBoYXNlOiJyZXF1ZXN0Iix0aW1lc3RhbXA6YSxwYXlsb2FkOmV9KTtsZXQgbjtyZXR1cm4gbj1hd2FpdCB0aGlzLnBvc3RUck9iamVjdChyLHQpLG49ejEuZGVjb2RlUGF5bG9hZEZyb21OZXR3b3JrKG4se3NlbmRNZXRob2Q6aShvPT50aGlzLnBvc3RUck9iamVjdChvKSwic2VuZE1ldGhvZCIpfSksdGhpcy5za2lwSG9va3N8fGY2dCgib25JbmNvbWluZ1Jlc3BvbnNlIix7Y29ycmVsYXRpb25JZDpyLmNvcnJlbGF0aW9uLmlkLG1ldGhvZDp0aGlzLm1ldGhvZCxkaXJlY3Rpb246ImluY29taW5nIixwaGFzZToicmVzcG9uc2UiLHRpbWVzdGFtcDpEYXRlLm5vdygpLGR1cmF0aW9uTXM6RGF0ZS5ub3coKS1hLHBheWxvYWQ6bj8ucmVzcG9uc2UsZXJyb3I6bj8uZXJyb3I/LnRleHR9KSxuLnJlc3BvbnNlfWFzeW5jIHBvc3RUck9iamVjdChlLHQ9ITEpe2xldCBhO2lmKHRoaXMudXJsRW5kUG9pbnQ/YT1hd2FpdCBwSWEucG9zdEpzb24odGhpcy51cmxFbmRQb2ludCxlLHQ/e2NhY2hlU3RyYXRlZ3k6ImNhY2hlLWZpcnN0In06e30pOmE9YXdhaXQgdGhpcy50eXBlZFRhcmdldC5wb3N0KGUpLGEuZXJyb3Ipe2lmKGNvbnNvbGUuZXJyb3IoYG1ldGhvZDogPj4ke3RoaXMubWV0aG9kfTw8IGdvdCBhbiBFUlJPUjogIiR7YS5lcnJvci50ZXh0fSIgd2l0aCBkYXRhICR7SlNPTi5zdHJpbmdpZnkoYS5lcnJvci5kYXRhLG51bGwsMil9YCksIWEucmV0cnkpdGhyb3cgbmV3IE0xKGEuZXJyb3IudGV4dCxhLmVycm9yLmRhdGEpO3JldHVybiBudWxsfXJldHVybiBhLnJldHJ5JiYoY29uc29sZS5sb2coYHNlcnZlciByZXF1ZXN0ZWQgcmV0cnkgZm9yIHRoZSBmb2xsb3dpbmcgcmVhc29uOiAke2EucmV0cnkucmVhc29ufWApLGF3YWl0IFh0LmRlbGF5Rm9yKGEucmV0cnkud2FpdEZvck1zKSxhPWF3YWl0IHRoaXMucG9zdFRyT2JqZWN0KGUsdCkpLGF9fX0pO3ZhciBMcD17fTt5dChMcCx7VHlwZWRIYW5kbGVyOigpPT5oNGUsVHlwZWRSZXF1ZXN0OigpPT52NGUsVHlwZWRSZXNwb25zZUVycm9yOigpPT5NMSxUeXBlZFJvdXRlcjooKT0+YzMsVHlwZWRUYXJnZXQ6KCk9Pmc0ZSxWaXJ0dWFsU3RyZWFtOigpPT56MX0pO3ZhciBtNnQ9ZygoKT0+e200ZSgpO2Y0ZSgpO3V3KCk7dzkoKTtiNGUoKTtyc2UoKX0pO2Z1bmN0aW9uIGc2dChzKXtyZXR1cm4gcyYmdHlwZW9mIHMudGhlbj09ImZ1bmN0aW9uIn1mdW5jdGlvbiBkZChzLGUpe3JldHVybiBzfHwocz0wKSxuZXcgUHJvbWlzZShmdW5jdGlvbih0KXtyZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiB0KGUpfSxzKX0pfWZ1bmN0aW9uIHg2dChzLGUpe3JldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKGUtcysxKStzKX1mdW5jdGlvbiB4MCgpe3JldHVybiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMil9ZnVuY3Rpb24geTAoKXt2YXIgcz1EYXRlLm5vdygpKjFlMztyZXR1cm4gczw9eDRlJiYocz14NGUrMSkseDRlPXMsc31mdW5jdGlvbiB5NnQoKXtyZXR1cm4gdHlwZW9mIG5hdmlnYXRvcjwidSImJnR5cGVvZiBuYXZpZ2F0b3IubG9ja3M8InUiJiZ0eXBlb2YgbmF2aWdhdG9yLmxvY2tzLnJlcXVlc3Q9PSJmdW5jdGlvbiJ9dmFyIGI2dCx2NnQsQmwseDRlLEVwPWcoKCk9PntpKGc2dCwiaXNQcm9taXNlIik7YjZ0PVByb21pc2UucmVzb2x2ZSghMSksdjZ0PVByb21pc2UucmVzb2x2ZSghMCksQmw9UHJvbWlzZS5yZXNvbHZlKCk7aShkZCwic2xlZXAiKTtpKHg2dCwicmFuZG9tSW50Iik7aSh4MCwicmFuZG9tVG9rZW4iKTt4NGU9MDtpKHkwLCJtaWNyb1NlY29uZHMiKTtpKHk2dCwic3VwcG9ydHNXZWJMb2NrQVBJIil9KTtmdW5jdGlvbiBtSWEocyl7dmFyIGU9e3RpbWU6eTAoKSxtZXNzYWdlc0NhbGxiYWNrOm51bGwsYmM6bmV3IEJyb2FkY2FzdENoYW5uZWwocyksc3ViRm5zOltdfTtyZXR1cm4gZS5iYy5vbm1lc3NhZ2U9ZnVuY3Rpb24odCl7ZS5tZXNzYWdlc0NhbGxiYWNrJiZlLm1lc3NhZ2VzQ2FsbGJhY2sodC5kYXRhKX0sZX1mdW5jdGlvbiBnSWEocyl7cy5iYy5jbG9zZSgpLHMuc3ViRm5zPVtdfWZ1bmN0aW9uIGJJYShzLGUpe3RyeXtyZXR1cm4gcy5iYy5wb3N0TWVzc2FnZShlLCExKSxCbH1jYXRjaCh0KXtyZXR1cm4gUHJvbWlzZS5yZWplY3QodCl9fWZ1bmN0aW9uIHZJYShzLGUpe3MubWVzc2FnZXNDYWxsYmFjaz1lfWZ1bmN0aW9uIHhJYSgpe2lmKHR5cGVvZiBnbG9iYWxUaGlzPCJ1IiYmZ2xvYmFsVGhpcy5EZW5vJiZnbG9iYWxUaGlzLkRlbm8uYXJncylyZXR1cm4hMDtpZigodHlwZW9mIHdpbmRvdzwidSJ8fHR5cGVvZiBzZWxmPCJ1IikmJnR5cGVvZiBCcm9hZGNhc3RDaGFubmVsPT0iZnVuY3Rpb24iKXtpZihCcm9hZGNhc3RDaGFubmVsLl9wdWJrZXkpdGhyb3cgbmV3IEVycm9yKCJCcm9hZGNhc3RDaGFubmVsOiBEbyBub3Qgb3ZlcndyaXRlIHdpbmRvdy5Ccm9hZGNhc3RDaGFubmVsIHdpdGggdGhpcyBtb2R1bGUsIHRoaXMgaXMgbm90IGEgcG9seWZpbGwiKTtyZXR1cm4hMH1lbHNlIHJldHVybiExfWZ1bmN0aW9uIHlJYSgpe3JldHVybiAxNTB9dmFyIGhJYSxmSWEsdzZ0LGs2dD1nKCgpPT57RXAoKTtoSWE9eTAsZklhPSJuYXRpdmUiO2kobUlhLCJjcmVhdGUiKTtpKGdJYSwiY2xvc2UiKTtpKGJJYSwicG9zdE1lc3NhZ2UiKTtpKHZJYSwib25NZXNzYWdlIik7aSh4SWEsImNhbkJlVXNlZCIpO2koeUlhLCJhdmVyYWdlUmVzcG9uc2VUaW1lIik7dzZ0PXtjcmVhdGU6bUlhLGNsb3NlOmdJYSxvbk1lc3NhZ2U6dklhLHBvc3RNZXNzYWdlOmJJYSxjYW5CZVVzZWQ6eElhLHR5cGU6ZklhLGF2ZXJhZ2VSZXNwb25zZVRpbWU6eUlhLG1pY3JvU2Vjb25kczpoSWF9fSk7ZnVuY3Rpb24gd0lhKHMpe2xldCBlPXk0ZSgpLXMudHRsLHQ9cy5tYXBbU3ltYm9sLml0ZXJhdG9yXSgpO2Zvcig7Oyl7bGV0IGE9dC5uZXh0KCkudmFsdWU7aWYoIWEpYnJlYWs7bGV0IHI9YVswXTtpZihhWzFdPGUpcy5tYXAuZGVsZXRlKHIpO2Vsc2UgYnJlYWt9fWZ1bmN0aW9uIHk0ZSgpe3JldHVybiBEYXRlLm5vdygpfXZhciBrOSx3NGU9ZygoKT0+e2s5PWNsYXNze3N0YXRpY3tpKHRoaXMsIk9ibGl2aW91c1NldCIpfXR0bDttYXA9bmV3IE1hcDtfdG89ITE7Y29uc3RydWN0b3IoZSl7dGhpcy50dGw9ZX1oYXMoZSl7bGV0IHQ9dGhpcy5tYXAuZ2V0KGUpO3JldHVybiB0eXBlb2YgdD4idSI/ITE6dDx5NGUoKS10aGlzLnR0bD8odGhpcy5tYXAuZGVsZXRlKGUpLCExKTohMH1hZGQoZSl7dGhpcy5tYXAuZGVsZXRlKGUpLHRoaXMubWFwLnNldChlLHk0ZSgpKSx0aGlzLl90b3x8KHRoaXMuX3RvPSEwLHNldFRpbWVvdXQoKCk9Pnt0aGlzLl90bz0hMSx3SWEodGhpcyl9LDApKX1jbGVhcigpe3RoaXMubWFwLmNsZWFyKCl9fTtpKHdJYSwicmVtb3ZlVG9vT2xkVmFsdWVzIik7aSh5NGUsIm5vdyIpfSk7ZnVuY3Rpb24gZDMoKXt2YXIgcz1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06e30sZT1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHMpKTtyZXR1cm4gdHlwZW9mIGUud2ViV29ya2VyU3VwcG9ydD4idSImJihlLndlYldvcmtlclN1cHBvcnQ9ITApLGUuaWRifHwoZS5pZGI9e30pLGUuaWRiLnR0bHx8KGUuaWRiLnR0bD0xZTMqNDUpLGUuaWRiLmZhbGxiYWNrSW50ZXJ2YWx8fChlLmlkYi5mYWxsYmFja0ludGVydmFsPTE1MCkscy5pZGImJnR5cGVvZiBzLmlkYi5vbmNsb3NlPT0iZnVuY3Rpb24iJiYoZS5pZGIub25jbG9zZT1zLmlkYi5vbmNsb3NlKSxlLmxvY2Fsc3RvcmFnZXx8KGUubG9jYWxzdG9yYWdlPXt9KSxlLmxvY2Fsc3RvcmFnZS5yZW1vdmVUaW1lb3V0fHwoZS5sb2NhbHN0b3JhZ2UucmVtb3ZlVGltZW91dD0xZTMqNjApLHMubWV0aG9kcyYmKGUubWV0aG9kcz1zLm1ldGhvZHMpLGUubm9kZXx8KGUubm9kZT17fSksZS5ub2RlLnR0bHx8KGUubm9kZS50dGw9MWUzKjYwKjIpLGUubm9kZS5tYXhQYXJhbGxlbFdyaXRlc3x8KGUubm9kZS5tYXhQYXJhbGxlbFdyaXRlcz0yMDQ4KSx0eXBlb2YgZS5ub2RlLnVzZUZhc3RQYXRoPiJ1IiYmKGUubm9kZS51c2VGYXN0UGF0aD0hMCksZX12YXIgb3NlPWcoKCk9PntpKGQzLCJmaWxsT3B0aW9uc1dpdGhEZWZhdWx0cyIpfSk7ZnVuY3Rpb24gUzZ0KCl7aWYodHlwZW9mIGluZGV4ZWREQjwidSIpcmV0dXJuIGluZGV4ZWREQjtpZih0eXBlb2Ygd2luZG93PCJ1Iil7aWYodHlwZW9mIHdpbmRvdy5tb3pJbmRleGVkREI8InUiKXJldHVybiB3aW5kb3cubW96SW5kZXhlZERCO2lmKHR5cGVvZiB3aW5kb3cud2Via2l0SW5kZXhlZERCPCJ1IilyZXR1cm4gd2luZG93LndlYmtpdEluZGV4ZWREQjtpZih0eXBlb2Ygd2luZG93Lm1zSW5kZXhlZERCPCJ1IilyZXR1cm4gd2luZG93Lm1zSW5kZXhlZERCfXJldHVybiExfWZ1bmN0aW9uIG5zZShzKXtzLmNvbW1pdCYmcy5jb21taXQoKX1mdW5jdGlvbiBNSWEocyl7dmFyIGU9UzZ0KCksdD1TSWErcyxhPWUub3Blbih0KTtyZXR1cm4gYS5vbnVwZ3JhZGVuZWVkZWQ9ZnVuY3Rpb24ocil7dmFyIG49ci50YXJnZXQucmVzdWx0O24uY3JlYXRlT2JqZWN0U3RvcmUoQzEse2tleVBhdGg6ImlkIixhdXRvSW5jcmVtZW50OiEwfSl9LG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIsbil7YS5vbmVycm9yPWZ1bmN0aW9uKG8pe3JldHVybiBuKG8pfSxhLm9uc3VjY2Vzcz1mdW5jdGlvbigpe3IoYS5yZXN1bHQpfX0pfWZ1bmN0aW9uIHpJYShzLGUsdCl7dmFyIGE9RGF0ZS5ub3coKSxyPXt1dWlkOmUsdGltZTphLGRhdGE6dH0sbj1zLnRyYW5zYWN0aW9uKFtDMV0sInJlYWR3cml0ZSIscHcpO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihvLGwpe24ub25jb21wbGV0ZT1mdW5jdGlvbigpe3JldHVybiBvKCl9LG4ub25lcnJvcj1mdW5jdGlvbihkKXtyZXR1cm4gbChkKX07dmFyIHA9bi5vYmplY3RTdG9yZShDMSk7cC5hZGQociksbnNlKG4pfSl9ZnVuY3Rpb24gZ1lzKHMpe3ZhciBlPXMudHJhbnNhY3Rpb24oQzEsInJlYWRvbmx5IixwdyksdD1lLm9iamVjdFN0b3JlKEMxKSxhPVtdO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyKXt0Lm9wZW5DdXJzb3IoKS5vbnN1Y2Nlc3M9ZnVuY3Rpb24obil7dmFyIG89bi50YXJnZXQucmVzdWx0O28/KGEucHVzaChvLnZhbHVlKSxvLmNvbnRpbnVlKCkpOihuc2UoZSkscihhKSl9fSl9ZnVuY3Rpb24gQ0lhKHMsZSl7dmFyIHQ9cy50cmFuc2FjdGlvbihDMSwicmVhZG9ubHkiLHB3KSxhPXQub2JqZWN0U3RvcmUoQzEpLHI9W10sbj1JREJLZXlSYW5nZS5ib3VuZChlKzEsMS8wKTtpZihhLmdldEFsbCl7dmFyIG89YS5nZXRBbGwobik7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHAsZCl7by5vbmVycm9yPWZ1bmN0aW9uKHUpe3JldHVybiBkKHUpfSxvLm9uc3VjY2Vzcz1mdW5jdGlvbih1KXtwKHUudGFyZ2V0LnJlc3VsdCl9fSl9ZnVuY3Rpb24gbCgpe3RyeXtyZXR1cm4gbj1JREJLZXlSYW5nZS5ib3VuZChlKzEsMS8wKSxhLm9wZW5DdXJzb3Iobil9Y2F0Y2h7cmV0dXJuIGEub3BlbkN1cnNvcigpfX1yZXR1cm4gaShsLCJvcGVuQ3Vyc29yIiksbmV3IFByb21pc2UoZnVuY3Rpb24ocCxkKXt2YXIgdT1sKCk7dS5vbmVycm9yPWZ1bmN0aW9uKGMpe3JldHVybiBkKGMpfSx1Lm9uc3VjY2Vzcz1mdW5jdGlvbihjKXt2YXIgYj1jLnRhcmdldC5yZXN1bHQ7Yj9iLnZhbHVlLmlkPGUrMT9iLmNvbnRpbnVlKGUrMSk6KHIucHVzaChiLnZhbHVlKSxiLmNvbnRpbnVlKCkpOihuc2UodCkscChyKSl9fSl9ZnVuY3Rpb24gVElhKHMsZSl7aWYocy5jbG9zZWQpcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7dmFyIHQ9cy5kYi50cmFuc2FjdGlvbihDMSwicmVhZHdyaXRlIixwdyksYT10Lm9iamVjdFN0b3JlKEMxKTtyZXR1cm4gUHJvbWlzZS5hbGwoZS5tYXAoZnVuY3Rpb24ocil7dmFyIG49YS5kZWxldGUocik7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKG8pe24ub25zdWNjZXNzPWZ1bmN0aW9uKCl7cmV0dXJuIG8oKX19KX0pKX1mdW5jdGlvbiAkSWEocyxlKXt2YXIgdD1EYXRlLm5vdygpLWUsYT1zLnRyYW5zYWN0aW9uKEMxLCJyZWFkb25seSIscHcpLHI9YS5vYmplY3RTdG9yZShDMSksbj1bXTtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24obyl7ci5vcGVuQ3Vyc29yKCkub25zdWNjZXNzPWZ1bmN0aW9uKGwpe3ZhciBwPWwudGFyZ2V0LnJlc3VsdDtpZihwKXt2YXIgZD1wLnZhbHVlO2QudGltZTx0PyhuLnB1c2goZCkscC5jb250aW51ZSgpKToobnNlKGEpLG8obikpfWVsc2UgbyhuKX19KX1mdW5jdGlvbiBESWEocyl7cmV0dXJuICRJYShzLmRiLHMub3B0aW9ucy5pZGIudHRsKS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBUSWEocyxlLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZH0pKX0pfWZ1bmN0aW9uIExJYShzLGUpe3JldHVybiBlPWQzKGUpLE1JYShzKS50aGVuKGZ1bmN0aW9uKHQpe3ZhciBhPXtjbG9zZWQ6ITEsbGFzdEN1cnNvcklkOjAsY2hhbm5lbE5hbWU6cyxvcHRpb25zOmUsdXVpZDp4MCgpLGVNSXM6bmV3IGs5KGUuaWRiLnR0bCoyKSx3cml0ZUJsb2NrUHJvbWlzZTpCbCxtZXNzYWdlc0NhbGxiYWNrOm51bGwscmVhZFF1ZXVlUHJvbWlzZXM6W10sZGI6dH07cmV0dXJuIHQub25jbG9zZT1mdW5jdGlvbigpe2EuY2xvc2VkPSEwLGUuaWRiLm9uY2xvc2UmJmUuaWRiLm9uY2xvc2UoKX0sXzZ0KGEpLGF9KX1mdW5jdGlvbiBfNnQocyl7cy5jbG9zZWR8fE02dChzKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGRkKHMub3B0aW9ucy5pZGIuZmFsbGJhY2tJbnRlcnZhbCl9KS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIF82dChzKX0pfWZ1bmN0aW9uIEVJYShzLGUpe3JldHVybiEocy51dWlkPT09ZS51dWlkfHxlLmVNSXMuaGFzKHMuaWQpfHxzLmRhdGEudGltZTxlLm1lc3NhZ2VzQ2FsbGJhY2tUaW1lKX1mdW5jdGlvbiBNNnQocyl7cmV0dXJuIHMuY2xvc2VkP0JsOnMubWVzc2FnZXNDYWxsYmFjaz9DSWEocy5kYixzLmxhc3RDdXJzb3JJZCkudGhlbihmdW5jdGlvbihlKXt2YXIgdD1lLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4hIWF9KS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaWQ+cy5sYXN0Q3Vyc29ySWQmJihzLmxhc3RDdXJzb3JJZD1hLmlkKSxhfSkuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBFSWEoYSxzKX0pLnNvcnQoZnVuY3Rpb24oYSxyKXtyZXR1cm4gYS50aW1lLXIudGltZX0pO3JldHVybiB0LmZvckVhY2goZnVuY3Rpb24oYSl7cy5tZXNzYWdlc0NhbGxiYWNrJiYocy5lTUlzLmFkZChhLmlkKSxzLm1lc3NhZ2VzQ2FsbGJhY2soYS5kYXRhKSl9KSxCbH0pOkJsfWZ1bmN0aW9uIFBJYShzKXtzLmNsb3NlZD0hMCxzLmRiLmNsb3NlKCl9ZnVuY3Rpb24gSUlhKHMsZSl7cmV0dXJuIHMud3JpdGVCbG9ja1Byb21pc2U9cy53cml0ZUJsb2NrUHJvbWlzZS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHpJYShzLmRiLHMudXVpZCxlKX0pLnRoZW4oZnVuY3Rpb24oKXt4NnQoMCwxMCk9PT0wJiZESWEocyl9KSxzLndyaXRlQmxvY2tQcm9taXNlfWZ1bmN0aW9uIEFJYShzLGUsdCl7cy5tZXNzYWdlc0NhbGxiYWNrVGltZT10LHMubWVzc2FnZXNDYWxsYmFjaz1lLE02dChzKX1mdW5jdGlvbiBOSWEoKXtyZXR1cm4hIVM2dCgpfWZ1bmN0aW9uIFJJYShzKXtyZXR1cm4gcy5pZGIuZmFsbGJhY2tJbnRlcnZhbCoyfXZhciBrSWEsU0lhLEMxLHB3LF9JYSx6NnQsQzZ0PWcoKCk9PntFcCgpO3c0ZSgpO29zZSgpO2tJYT15MCxTSWE9InB1YmtleS5icm9hZGNhc3QtY2hhbm5lbC0wLSIsQzE9Im1lc3NhZ2VzIixwdz17ZHVyYWJpbGl0eToicmVsYXhlZCJ9LF9JYT0iaWRiIjtpKFM2dCwiZ2V0SWRiIik7aShuc2UsImNvbW1pdEluZGV4ZWREQlRyYW5zYWN0aW9uIik7aShNSWEsImNyZWF0ZURhdGFiYXNlIik7aSh6SWEsIndyaXRlTWVzc2FnZSIpO2koZ1lzLCJnZXRBbGxNZXNzYWdlcyIpO2koQ0lhLCJnZXRNZXNzYWdlc0hpZ2hlclRoYW4iKTtpKFRJYSwicmVtb3ZlTWVzc2FnZXNCeUlkIik7aSgkSWEsImdldE9sZE1lc3NhZ2VzIik7aShESWEsImNsZWFuT2xkTWVzc2FnZXMiKTtpKExJYSwiY3JlYXRlIik7aShfNnQsIl9yZWFkTG9vcCIpO2koRUlhLCJfZmlsdGVyTWVzc2FnZSIpO2koTTZ0LCJyZWFkTmV3TWVzc2FnZXMiKTtpKFBJYSwiY2xvc2UiKTtpKElJYSwicG9zdE1lc3NhZ2UiKTtpKEFJYSwib25NZXNzYWdlIik7aShOSWEsImNhbkJlVXNlZCIpO2koUklhLCJhdmVyYWdlUmVzcG9uc2VUaW1lIik7ejZ0PXtjcmVhdGU6TElhLGNsb3NlOlBJYSxvbk1lc3NhZ2U6QUlhLHBvc3RNZXNzYWdlOklJYSxjYW5CZVVzZWQ6TklhLHR5cGU6X0lhLGF2ZXJhZ2VSZXNwb25zZVRpbWU6UklhLG1pY3JvU2Vjb25kczprSWF9fSk7ZnVuY3Rpb24gVDZ0KCl7dmFyIHM7aWYodHlwZW9mIHdpbmRvdz4idSIpcmV0dXJuIG51bGw7dHJ5e3M9d2luZG93LmxvY2FsU3RvcmFnZSxzPXdpbmRvd1siaWU4LWV2ZW50bGlzdGVuZXIvc3RvcmFnZSJdfHx3aW5kb3cubG9jYWxTdG9yYWdlfWNhdGNoe31yZXR1cm4gc31mdW5jdGlvbiAkNnQocyl7cmV0dXJuIEZJYStzfWZ1bmN0aW9uIEhJYShzLGUpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbih0KXtkZCgpLnRoZW4oZnVuY3Rpb24oKXt2YXIgYT0kNnQocy5jaGFubmVsTmFtZSkscj17dG9rZW46eDAoKSx0aW1lOkRhdGUubm93KCksZGF0YTplLHV1aWQ6cy51dWlkfSxuPUpTT04uc3RyaW5naWZ5KHIpO1Q2dCgpLnNldEl0ZW0oYSxuKTt2YXIgbz1kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKTtvLmluaXRFdmVudCgic3RvcmFnZSIsITAsITApLG8ua2V5PWEsby5uZXdWYWx1ZT1uLHdpbmRvdy5kaXNwYXRjaEV2ZW50KG8pLHQoKX0pfSl9ZnVuY3Rpb24gcUlhKHMsZSl7dmFyIHQ9JDZ0KHMpLGE9aShmdW5jdGlvbihuKXtuLmtleT09PXQmJmUoSlNPTi5wYXJzZShuLm5ld1ZhbHVlKSl9LCJsaXN0ZW5lciIpO3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigic3RvcmFnZSIsYSksYX1mdW5jdGlvbiBqSWEocyl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInN0b3JhZ2UiLHMpfWZ1bmN0aW9uIFZJYShzLGUpe2lmKGU9ZDMoZSksIUQ2dCgpKXRocm93IG5ldyBFcnJvcigiQnJvYWRjYXN0Q2hhbm5lbDogbG9jYWxzdG9yYWdlIGNhbm5vdCBiZSB1c2VkIik7dmFyIHQ9eDAoKSxhPW5ldyBrOShlLmxvY2Fsc3RvcmFnZS5yZW1vdmVUaW1lb3V0KSxyPXtjaGFubmVsTmFtZTpzLHV1aWQ6dCxlTUlzOmF9O3JldHVybiByLmxpc3RlbmVyPXFJYShzLGZ1bmN0aW9uKG4pe3IubWVzc2FnZXNDYWxsYmFjayYmbi51dWlkIT09dCYmKCFuLnRva2VufHxhLmhhcyhuLnRva2VuKXx8bi5kYXRhLnRpbWUmJm4uZGF0YS50aW1lPHIubWVzc2FnZXNDYWxsYmFja1RpbWV8fChhLmFkZChuLnRva2VuKSxyLm1lc3NhZ2VzQ2FsbGJhY2sobi5kYXRhKSkpfSkscn1mdW5jdGlvbiBVSWEocyl7aklhKHMubGlzdGVuZXIpfWZ1bmN0aW9uIFdJYShzLGUsdCl7cy5tZXNzYWdlc0NhbGxiYWNrVGltZT10LHMubWVzc2FnZXNDYWxsYmFjaz1lfWZ1bmN0aW9uIEQ2dCgpe3ZhciBzPVQ2dCgpO2lmKCFzKXJldHVybiExO3RyeXt2YXIgZT0iX19icm9hZGNhc3RjaGFubmVsX2NoZWNrIjtzLnNldEl0ZW0oZSwid29ya3MiKSxzLnJlbW92ZUl0ZW0oZSl9Y2F0Y2h7cmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gR0lhKCl7dmFyIHM9MTIwLGU9bmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO3JldHVybiBlLmluY2x1ZGVzKCJzYWZhcmkiKSYmIWUuaW5jbHVkZXMoImNocm9tZSIpP3MqMjpzfXZhciBPSWEsRklhLEJJYSxMNnQsRTZ0PWcoKCk9Pnt3NGUoKTtvc2UoKTtFcCgpO09JYT15MCxGSWE9InB1YmtleS5icm9hZGNhc3RDaGFubmVsLSIsQklhPSJsb2NhbHN0b3JhZ2UiO2koVDZ0LCJnZXRMb2NhbFN0b3JhZ2UiKTtpKCQ2dCwic3RvcmFnZUtleSIpO2koSElhLCJwb3N0TWVzc2FnZSIpO2kocUlhLCJhZGRTdG9yYWdlRXZlbnRMaXN0ZW5lciIpO2koaklhLCJyZW1vdmVTdG9yYWdlRXZlbnRMaXN0ZW5lciIpO2koVklhLCJjcmVhdGUiKTtpKFVJYSwiY2xvc2UiKTtpKFdJYSwib25NZXNzYWdlIik7aShENnQsImNhbkJlVXNlZCIpO2koR0lhLCJhdmVyYWdlUmVzcG9uc2VUaW1lIik7TDZ0PXtjcmVhdGU6VklhLGNsb3NlOlVJYSxvbk1lc3NhZ2U6V0lhLHBvc3RNZXNzYWdlOkhJYSxjYW5CZVVzZWQ6RDZ0LHR5cGU6QklhLGF2ZXJhZ2VSZXNwb25zZVRpbWU6R0lhLG1pY3JvU2Vjb25kczpPSWF9fSk7ZnVuY3Rpb24gWUlhKHMpe3ZhciBlPXt0aW1lOlA2dCgpLG5hbWU6cyxtZXNzYWdlc0NhbGxiYWNrOm51bGx9O3JldHVybiBrNGUuYWRkKGUpLGV9ZnVuY3Rpb24gWklhKHMpe2s0ZS5kZWxldGUocyl9ZnVuY3Rpb24gWElhKHMsZSl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQpe3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGE9QXJyYXkuZnJvbShrNGUpO2EuZm9yRWFjaChmdW5jdGlvbihyKXtyLm5hbWU9PT1zLm5hbWUmJnIhPT1zJiZyLm1lc3NhZ2VzQ2FsbGJhY2smJnIudGltZTxlLnRpbWUmJnIubWVzc2FnZXNDYWxsYmFjayhlKX0pLHQoKX0sSTZ0KX0pfWZ1bmN0aW9uIFFJYShzLGUpe3MubWVzc2FnZXNDYWxsYmFjaz1lfWZ1bmN0aW9uIEpJYSgpe3JldHVybiEwfWZ1bmN0aW9uIGVBYSgpe3JldHVybiBJNnR9dmFyIFA2dCxLSWEsazRlLEk2dCxBNnQsTjZ0PWcoKCk9PntFcCgpO1A2dD15MCxLSWE9InNpbXVsYXRlIixrNGU9bmV3IFNldDtpKFlJYSwiY3JlYXRlIik7aShaSWEsImNsb3NlIik7STZ0PTU7aShYSWEsInBvc3RNZXNzYWdlIik7aShRSWEsIm9uTWVzc2FnZSIpO2koSklhLCJjYW5CZVVzZWQiKTtpKGVBYSwiYXZlcmFnZVJlc3BvbnNlVGltZSIpO0E2dD17Y3JlYXRlOllJYSxjbG9zZTpaSWEsb25NZXNzYWdlOlFJYSxwb3N0TWVzc2FnZTpYSWEsY2FuQmVVc2VkOkpJYSx0eXBlOktJYSxhdmVyYWdlUmVzcG9uc2VUaW1lOmVBYSxtaWNyb1NlY29uZHM6UDZ0fX0pO2Z1bmN0aW9uIFM0ZShzKXt2YXIgZT1bXS5jb25jYXQocy5tZXRob2RzLFI2dCkuZmlsdGVyKEJvb2xlYW4pO2lmKHMudHlwZSl7aWYocy50eXBlPT09InNpbXVsYXRlIilyZXR1cm4gQTZ0O3ZhciB0PWUuZmluZChmdW5jdGlvbihyKXtyZXR1cm4gci50eXBlPT09cy50eXBlfSk7aWYodClyZXR1cm4gdDt0aHJvdyBuZXcgRXJyb3IoIm1ldGhvZC10eXBlICIrcy50eXBlKyIgbm90IGZvdW5kIil9cy53ZWJXb3JrZXJTdXBwb3J0fHwoZT1lLmZpbHRlcihmdW5jdGlvbihyKXtyZXR1cm4gci50eXBlIT09ImlkYiJ9KSk7dmFyIGE9ZS5maW5kKGZ1bmN0aW9uKHIpe3JldHVybiByLmNhbkJlVXNlZCgpfSk7aWYoYSlyZXR1cm4gYTt0aHJvdyBuZXcgRXJyb3IoIk5vIHVzYWJsZSBtZXRob2QgZm91bmQgaW4gIitKU09OLnN0cmluZ2lmeShSNnQubWFwKGZ1bmN0aW9uKHIpe3JldHVybiByLnR5cGV9KSkpfXZhciBSNnQsTzZ0PWcoKCk9PntrNnQoKTtDNnQoKTtFNnQoKTtONnQoKTtSNnQ9W3c2dCx6NnQsTDZ0XTtpKFM0ZSwiY2hvb3NlTWV0aG9kIil9KTtmdW5jdGlvbiBhQWEocyl7cz1kMyhzKTt2YXIgZT1TNGUocyk7cmV0dXJuIGUudHlwZT09PSJub2RlIj9lLmNsZWFyTm9kZUZvbGRlcigpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4hMH0pOmI2dH1mdW5jdGlvbiBzQWEocyl7XzRlPXN9ZnVuY3Rpb24gRjZ0KHMsZSx0KXt2YXIgYT1zLm1ldGhvZC5taWNyb1NlY29uZHMoKSxyPXt0aW1lOmEsdHlwZTplLGRhdGE6dH0sbj1zLl9wcmVwUD9zLl9wcmVwUDpCbDtyZXR1cm4gbi50aGVuKGZ1bmN0aW9uKCl7dmFyIG89cy5tZXRob2QucG9zdE1lc3NhZ2Uocy5fc3RhdGUscik7cmV0dXJuIHMuX3VNUC5hZGQobyksby5jYXRjaCgpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gcy5fdU1QLmRlbGV0ZShvKX0pLG99KX1mdW5jdGlvbiBpQWEocyl7dmFyIGU9cy5tZXRob2QuY3JlYXRlKHMubmFtZSxzLm9wdGlvbnMpO2c2dChlKT8ocy5fcHJlcFA9ZSxlLnRoZW4oZnVuY3Rpb24odCl7cy5fc3RhdGU9dH0pKTpzLl9zdGF0ZT1lfWZ1bmN0aW9uIEI2dChzKXtyZXR1cm4gcy5fYWRkRUwubWVzc2FnZS5sZW5ndGg+MHx8cy5fYWRkRUwuaW50ZXJuYWwubGVuZ3RoPjB9ZnVuY3Rpb24gSDZ0KHMsZSx0KXtzLl9hZGRFTFtlXS5wdXNoKHQpLHJBYShzKX1mdW5jdGlvbiBxNnQocyxlLHQpe3MuX2FkZEVMW2VdPXMuX2FkZEVMW2VdLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gYSE9PXR9KSxvQWEocyl9ZnVuY3Rpb24gckFhKHMpe2lmKCFzLl9pTCYmQjZ0KHMpKXt2YXIgZT1pKGZ1bmN0aW9uKHIpe3MuX2FkZEVMW3IudHlwZV0uZm9yRWFjaChmdW5jdGlvbihuKXtyLnRpbWU+PW4udGltZSYmbi5mbihyLmRhdGEpfSl9LCJsaXN0ZW5lckZuIiksdD1zLm1ldGhvZC5taWNyb1NlY29uZHMoKTtzLl9wcmVwUD9zLl9wcmVwUC50aGVuKGZ1bmN0aW9uKCl7cy5faUw9ITAscy5tZXRob2Qub25NZXNzYWdlKHMuX3N0YXRlLGUsdCl9KToocy5faUw9ITAscy5tZXRob2Qub25NZXNzYWdlKHMuX3N0YXRlLGUsdCkpfX1mdW5jdGlvbiBvQWEocyl7aWYocy5faUwmJiFCNnQocykpe3MuX2lMPSExO3ZhciBlPXMubWV0aG9kLm1pY3JvU2Vjb25kcygpO3MubWV0aG9kLm9uTWVzc2FnZShzLl9zdGF0ZSxudWxsLGUpfX12YXIgTTRlLHRBYSx1MyxfNGUsajZ0PWcoKCk9PntFcCgpO082dCgpO29zZSgpO000ZT1uZXcgU2V0LHRBYT0wLHUzPWkoZnVuY3Rpb24oZSx0KXt0aGlzLmlkPXRBYSsrLE00ZS5hZGQodGhpcyksdGhpcy5uYW1lPWUsXzRlJiYodD1fNGUpLHRoaXMub3B0aW9ucz1kMyh0KSx0aGlzLm1ldGhvZD1TNGUodGhpcy5vcHRpb25zKSx0aGlzLl9pTD0hMSx0aGlzLl9vbk1MPW51bGwsdGhpcy5fYWRkRUw9e21lc3NhZ2U6W10saW50ZXJuYWw6W119LHRoaXMuX3VNUD1uZXcgU2V0LHRoaXMuX2JlZkM9W10sdGhpcy5fcHJlcFA9bnVsbCxpQWEodGhpcyl9LCJCcm9hZGNhc3RDaGFubmVsIik7dTMuX3B1YmtleT0hMDtpKGFBYSwiY2xlYXJOb2RlRm9sZGVyIik7aShzQWEsImVuZm9yY2VPcHRpb25zIiksdTMucHJvdG90eXBlPXtwb3N0TWVzc2FnZTppKGZ1bmN0aW9uKGUpe2lmKHRoaXMuY2xvc2VkKXRocm93IG5ldyBFcnJvcigiQnJvYWRjYXN0Q2hhbm5lbC5wb3N0TWVzc2FnZSgpOiBDYW5ub3QgcG9zdCBtZXNzYWdlIGFmdGVyIGNoYW5uZWwgaGFzIGNsb3NlZCAiK0pTT04uc3RyaW5naWZ5KGUpKTtyZXR1cm4gRjZ0KHRoaXMsIm1lc3NhZ2UiLGUpfSwicG9zdE1lc3NhZ2UiKSxwb3N0SW50ZXJuYWw6aShmdW5jdGlvbihlKXtyZXR1cm4gRjZ0KHRoaXMsImludGVybmFsIixlKX0sInBvc3RJbnRlcm5hbCIpLHNldCBvbm1lc3NhZ2Uocyl7dmFyIGU9dGhpcy5tZXRob2QubWljcm9TZWNvbmRzKCksdD17dGltZTplLGZuOnN9O3E2dCh0aGlzLCJtZXNzYWdlIix0aGlzLl9vbk1MKSxzJiZ0eXBlb2Ygcz09ImZ1bmN0aW9uIj8odGhpcy5fb25NTD10LEg2dCh0aGlzLCJtZXNzYWdlIix0KSk6dGhpcy5fb25NTD1udWxsfSxhZGRFdmVudExpc3RlbmVyOmkoZnVuY3Rpb24oZSx0KXt2YXIgYT10aGlzLm1ldGhvZC5taWNyb1NlY29uZHMoKSxyPXt0aW1lOmEsZm46dH07SDZ0KHRoaXMsZSxyKX0sImFkZEV2ZW50TGlzdGVuZXIiKSxyZW1vdmVFdmVudExpc3RlbmVyOmkoZnVuY3Rpb24oZSx0KXt2YXIgYT10aGlzLl9hZGRFTFtlXS5maW5kKGZ1bmN0aW9uKHIpe3JldHVybiByLmZuPT09dH0pO3E2dCh0aGlzLGUsYSl9LCJyZW1vdmVFdmVudExpc3RlbmVyIiksY2xvc2U6aShmdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYoIXRoaXMuY2xvc2VkKXtNNGUuZGVsZXRlKHRoaXMpLHRoaXMuY2xvc2VkPSEwO3ZhciB0PXRoaXMuX3ByZXBQP3RoaXMuX3ByZXBQOkJsO3JldHVybiB0aGlzLl9vbk1MPW51bGwsdGhpcy5fYWRkRUwubWVzc2FnZT1bXSx0LnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5hbGwoQXJyYXkuZnJvbShlLl91TVApKX0pLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5hbGwoZS5fYmVmQy5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGEoKX0pKX0pLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gZS5tZXRob2QuY2xvc2UoZS5fc3RhdGUpfSl9fSwiY2xvc2UiKSxnZXQgdHlwZSgpe3JldHVybiB0aGlzLm1ldGhvZC50eXBlfSxnZXQgaXNDbG9zZWQoKXtyZXR1cm4gdGhpcy5jbG9zZWR9fTtpKEY2dCwiX3Bvc3QiKTtpKGlBYSwiX3ByZXBhcmVDaGFubmVsIik7aShCNnQsIl9oYXNNZXNzYWdlTGlzdGVuZXJzIik7aShINnQsIl9hZGRMaXN0ZW5lck9iamVjdCIpO2kocTZ0LCJfcmVtb3ZlTGlzdGVuZXJPYmplY3QiKTtpKHJBYSwiX3N0YXJ0TGlzdGVuaW5nIik7aShvQWEsIl9zdG9wTGlzdGVuaW5nIil9KTtmdW5jdGlvbiBWNnQocyl7aWYodHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlPT0iZnVuY3Rpb24iJiZzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGUpe3ZhciBlPXNlbGYuY2xvc2UuYmluZChzZWxmKTtzZWxmLmNsb3NlPWZ1bmN0aW9uKCl7cmV0dXJuIHMoKSxlKCl9fWVsc2V7aWYodHlwZW9mIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyIT0iZnVuY3Rpb24iKXJldHVybjt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiYmVmb3JldW5sb2FkIixmdW5jdGlvbigpe3MoKX0sITApLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ1bmxvYWQiLGZ1bmN0aW9uKCl7cygpfSwhMCl9fXZhciBVNnQ9ZygoKT0+e2koVjZ0LCJhZGRCcm93c2VyIil9KTtmdW5jdGlvbiBXNnQocyl7cHJvY2Vzcy5vbigiZXhpdCIsZnVuY3Rpb24oKXtyZXR1cm4gcygpfSkscHJvY2Vzcy5vbigiYmVmb3JlRXhpdCIsZnVuY3Rpb24oKXtyZXR1cm4gcygpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gcHJvY2Vzcy5leGl0KCl9KX0pLHByb2Nlc3Mub24oIlNJR0lOVCIsZnVuY3Rpb24oKXtyZXR1cm4gcygpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gcHJvY2Vzcy5leGl0KCl9KX0pLHByb2Nlc3Mub24oInVuY2F1Z2h0RXhjZXB0aW9uIixmdW5jdGlvbihlKXtyZXR1cm4gcygpLnRoZW4oZnVuY3Rpb24oKXtjb25zb2xlLnRyYWNlKGUpLHByb2Nlc3MuZXhpdCgxMDEpfSl9KX12YXIgRzZ0PWcoKCk9PntpKFc2dCwiYWRkTm9kZSIpfSk7ZnVuY3Rpb24gY0FhKCl7SzZ0fHwoSzZ0PSEwLGxBYShkQWEpKX1mdW5jdGlvbiBZNnQocyl7aWYoY0FhKCksdHlwZW9mIHMhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKCJMaXN0ZW5lciBpcyBubyBmdW5jdGlvbiIpO3AzLmFkZChzKTt2YXIgZT17cmVtb3ZlOmkoZnVuY3Rpb24oKXtyZXR1cm4gcDMuZGVsZXRlKHMpfSwicmVtb3ZlIikscnVuOmkoZnVuY3Rpb24oKXtyZXR1cm4gcDMuZGVsZXRlKHMpLHMoKX0sInJ1biIpfTtyZXR1cm4gZX1mdW5jdGlvbiBkQWEoKXt2YXIgcz1bXTtyZXR1cm4gcDMuZm9yRWFjaChmdW5jdGlvbihlKXtzLnB1c2goZSgpKSxwMy5kZWxldGUoZSl9KSxQcm9taXNlLmFsbChzKX1mdW5jdGlvbiBWWXMoKXtwMy5jbGVhcigpfWZ1bmN0aW9uIFVZcygpe3JldHVybiBwMy5zaXplfXZhciBuQWEsbEFhLHAzLEs2dCxaNnQ9ZygoKT0+e1U2dCgpO0c2dCgpO25BYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodHlwZW9mIHByb2Nlc3M8InUiP3Byb2Nlc3M6MCk9PT0iW29iamVjdCBwcm9jZXNzXSIsbEFhPW5BYT9XNnQ6VjZ0LHAzPW5ldyBTZXQsSzZ0PSExO2koY0FhLCJzdGFydExpc3RlbmluZyIpO2koWTZ0LCJhZGQiKTtpKGRBYSwicnVuQWxsIik7aShWWXMsInJlbW92ZUFsbCIpO2koVVlzLCJnZXRTaXplIil9KTtmdW5jdGlvbiB3MChzLGUpe3ZhciB0PXtjb250ZXh0OiJsZWFkZXIiLGFjdGlvbjplLHRva2VuOnMudG9rZW59O3JldHVybiBzLmJyb2FkY2FzdENoYW5uZWwucG9zdEludGVybmFsKHQpfWZ1bmN0aW9uIGh3KHMpe3MuaXNMZWFkZXI9ITAscy5faGFzTGVhZGVyPSEwO3ZhciBlPVk2dChmdW5jdGlvbigpe3JldHVybiBzLmRpZSgpfSk7cy5fdW5sLnB1c2goZSk7dmFyIHQ9aShmdW5jdGlvbihyKXtyLmNvbnRleHQ9PT0ibGVhZGVyIiYmci5hY3Rpb249PT0iYXBwbHkiJiZ3MChzLCJ0ZWxsIiksci5jb250ZXh0PT09ImxlYWRlciImJnIuYWN0aW9uPT09InRlbGwiJiYhcy5fZHBMQyYmKHMuX2RwTEM9ITAscy5fZHBMKCksdzAocywidGVsbCIpKX0sImlzTGVhZGVyTGlzdGVuZXIiKTtyZXR1cm4gcy5icm9hZGNhc3RDaGFubmVsLmFkZEV2ZW50TGlzdGVuZXIoImludGVybmFsIix0KSxzLl9sc3Rucy5wdXNoKHQpLHcwKHMsInRlbGwiKX12YXIgbHNlPWcoKCk9PntaNnQoKTtpKHcwLCJzZW5kTGVhZGVyTWVzc2FnZSIpO2koaHcsImJlTGVhZGVyIil9KTt2YXIgejRlLFg2dCxRNnQ9ZygoKT0+e0VwKCk7bHNlKCk7ejRlPWkoZnVuY3Rpb24oZSx0KXt2YXIgYT10aGlzO3RoaXMuYnJvYWRjYXN0Q2hhbm5lbD1lLGUuX2JlZkMucHVzaChmdW5jdGlvbigpe3JldHVybiBhLmRpZSgpfSksdGhpcy5fb3B0aW9ucz10LHRoaXMuaXNMZWFkZXI9ITEsdGhpcy5pc0RlYWQ9ITEsdGhpcy50b2tlbj14MCgpLHRoaXMuX2xzdG5zPVtdLHRoaXMuX3VubD1bXSx0aGlzLl9kcEw9ZnVuY3Rpb24oKXt9LHRoaXMuX2RwTEM9ITEsdGhpcy5fd0tNQz17fSx0aGlzLmxOPSJwdWJrZXktYmN8fCIrZS5tZXRob2QudHlwZSsifHwiK2UubmFtZX0sIkxlYWRlckVsZWN0aW9uV2ViTG9jayIpLFg2dD0iTGVhZGVyRWxlY3Rpb25XZWJMb2NrLmRpZSgpIGNhbGxlZCI7ejRlLnByb3RvdHlwZT17aGFzTGVhZGVyOmkoZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBuYXZpZ2F0b3IubG9ja3MucXVlcnkoKS50aGVuKGZ1bmN0aW9uKHQpe3ZhciBhPXQuaGVsZD90LmhlbGQuZmlsdGVyKGZ1bmN0aW9uKHIpe3JldHVybiByLm5hbWU9PT1lLmxOfSk6W107cmV0dXJuISEoYSYmYS5sZW5ndGg+MCl9KX0sImhhc0xlYWRlciIpLGF3YWl0TGVhZGVyc2hpcDppKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcztpZighdGhpcy5fd0xNUCl7dGhpcy5fd0tNQy5jPW5ldyBBYm9ydENvbnRyb2xsZXI7dmFyIHQ9bmV3IFByb21pc2UoZnVuY3Rpb24oYSxyKXtlLl93S01DLnJlcz1hLGUuX3dLTUMucmVqPXJ9KTt0aGlzLl93TE1QPW5ldyBQcm9taXNlKGZ1bmN0aW9uKGEscil7bmF2aWdhdG9yLmxvY2tzLnJlcXVlc3QoZS5sTix7c2lnbmFsOmUuX3dLTUMuYy5zaWduYWx9LGZ1bmN0aW9uKCl7cmV0dXJuIGUuX3dLTUMuYz12b2lkIDAsaHcoZSksYSgpLHR9KS5jYXRjaChmdW5jdGlvbihuKXtuLm1lc3NhZ2UmJm4ubWVzc2FnZT09PVg2dHx8KGUuX3dLTUMucmVqJiZlLl93S01DLnJlaihuKSxyKG4pKX0pfSl9cmV0dXJuIHRoaXMuX3dMTVB9LCJhd2FpdExlYWRlcnNoaXAiKSxzZXQgb25kdXBsaWNhdGUocyl7fSxkaWU6aShmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIHRoaXMuX2xzdG5zLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIGUuYnJvYWRjYXN0Q2hhbm5lbC5yZW1vdmVFdmVudExpc3RlbmVyKCJpbnRlcm5hbCIsdCl9KSx0aGlzLl9sc3Rucz1bXSx0aGlzLl91bmwuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZW1vdmUoKX0pLHRoaXMuX3VubD1bXSx0aGlzLmlzTGVhZGVyJiYodGhpcy5pc0xlYWRlcj0hMSksdGhpcy5pc0RlYWQ9ITAsdGhpcy5fd0tNQy5yZXMmJnRoaXMuX3dLTUMucmVzKCksdGhpcy5fd0tNQy5jJiZ0aGlzLl93S01DLmMuYWJvcnQobmV3IEVycm9yKFg2dCkpLHcwKHRoaXMsImRlYXRoIil9LCJkaWUiKX19KTtmdW5jdGlvbiB1QWEocyl7cmV0dXJuIHMuaXNMZWFkZXI/Qmw6bmV3IFByb21pc2UoZnVuY3Rpb24oZSl7dmFyIHQ9ITE7ZnVuY3Rpb24gYSgpe3R8fCh0PSEwLHMuYnJvYWRjYXN0Q2hhbm5lbC5yZW1vdmVFdmVudExpc3RlbmVyKCJpbnRlcm5hbCIsbiksZSghMCkpfWkoYSwiZmluaXNoIikscy5hcHBseU9uY2UoKS50aGVuKGZ1bmN0aW9uKCl7cy5pc0xlYWRlciYmYSgpfSk7dmFyIHI9aShmdW5jdGlvbigpe3JldHVybiBkZChzLl9vcHRpb25zLmZhbGxiYWNrSW50ZXJ2YWwpLnRoZW4oZnVuY3Rpb24oKXtpZighKHMuaXNEZWFkfHx0KSlpZihzLmlzTGVhZGVyKWEoKTtlbHNlIHJldHVybiBzLmFwcGx5T25jZSghMCkudGhlbihmdW5jdGlvbigpe3MuaXNMZWFkZXI/YSgpOnIoKX0pfSl9LCJ0cnlPbkZhbGxCYWNrIik7cigpO3ZhciBuPWkoZnVuY3Rpb24obCl7bC5jb250ZXh0PT09ImxlYWRlciImJmwuYWN0aW9uPT09ImRlYXRoIiYmKHMuX2hhc0xlYWRlcj0hMSxzLmFwcGx5T25jZSgpLnRoZW4oZnVuY3Rpb24oKXtzLmlzTGVhZGVyJiZhKCl9KSl9LCJ3aGVuRGVhdGhMaXN0ZW5lciIpO3MuYnJvYWRjYXN0Q2hhbm5lbC5hZGRFdmVudExpc3RlbmVyKCJpbnRlcm5hbCIsbikscy5fbHN0bnMucHVzaChuKX0pfWZ1bmN0aW9uIHBBYShzLGUpe3JldHVybiBzfHwocz17fSkscz1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHMpKSxzLmZhbGxiYWNrSW50ZXJ2YWx8fChzLmZhbGxiYWNrSW50ZXJ2YWw9M2UzKSxzLnJlc3BvbnNlVGltZXx8KHMucmVzcG9uc2VUaW1lPWUubWV0aG9kLmF2ZXJhZ2VSZXNwb25zZVRpbWUoZS5vcHRpb25zKSksc31mdW5jdGlvbiBoQWEocyxlKXtpZihzLl9sZWFkZXJFbGVjdG9yKXRocm93IG5ldyBFcnJvcigiQnJvYWRjYXN0Q2hhbm5lbCBhbHJlYWR5IGhhcyBhIGxlYWRlci1lbGVjdG9yIik7ZT1wQWEoZSxzKTt2YXIgdD15NnQoKT9uZXcgejRlKHMsZSk6bmV3IEo2dChzLGUpO3JldHVybiBzLl9iZWZDLnB1c2goZnVuY3Rpb24oKXtyZXR1cm4gdC5kaWUoKX0pLHMuX2xlYWRlckVsZWN0b3I9dCx0fXZhciBKNnQsZTV0PWcoKCk9PntFcCgpO2xzZSgpO1E2dCgpO0o2dD1pKGZ1bmN0aW9uKGUsdCl7dmFyIGE9dGhpczt0aGlzLmJyb2FkY2FzdENoYW5uZWw9ZSx0aGlzLl9vcHRpb25zPXQsdGhpcy5pc0xlYWRlcj0hMSx0aGlzLl9oYXNMZWFkZXI9ITEsdGhpcy5pc0RlYWQ9ITEsdGhpcy50b2tlbj14MCgpLHRoaXMuX2FwbFE9QmwsdGhpcy5fYXBsUUM9MCx0aGlzLl91bmw9W10sdGhpcy5fbHN0bnM9W10sdGhpcy5fZHBMPWZ1bmN0aW9uKCl7fSx0aGlzLl9kcExDPSExO3ZhciByPWkoZnVuY3Rpb24obyl7by5jb250ZXh0PT09ImxlYWRlciImJihvLmFjdGlvbj09PSJkZWF0aCImJihhLl9oYXNMZWFkZXI9ITEpLG8uYWN0aW9uPT09InRlbGwiJiYoYS5faGFzTGVhZGVyPSEwKSl9LCJoYXNMZWFkZXJMaXN0ZW5lciIpO3RoaXMuYnJvYWRjYXN0Q2hhbm5lbC5hZGRFdmVudExpc3RlbmVyKCJpbnRlcm5hbCIsciksdGhpcy5fbHN0bnMucHVzaChyKX0sIkxlYWRlckVsZWN0aW9uIik7SjZ0LnByb3RvdHlwZT17aGFzTGVhZGVyOmkoZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2hhc0xlYWRlcil9LCJoYXNMZWFkZXIiKSxhcHBseU9uY2U6aShmdW5jdGlvbihlKXt2YXIgdD10aGlzO2lmKHRoaXMuaXNMZWFkZXIpcmV0dXJuIGRkKDAsITApO2lmKHRoaXMuaXNEZWFkKXJldHVybiBkZCgwLCExKTtpZih0aGlzLl9hcGxRQz4xKXJldHVybiB0aGlzLl9hcGxRO3ZhciBhPWkoZnVuY3Rpb24oKXtpZih0LmlzTGVhZGVyKXJldHVybiB2NnQ7dmFyIG49ITEsbyxsPW5ldyBQcm9taXNlKGZ1bmN0aW9uKHUpe289aShmdW5jdGlvbigpe249ITAsdSgpfSwic3RvcENyaXRlcmlhUHJvbWlzZVJlc29sdmUiKX0pLHA9aShmdW5jdGlvbihjKXtjLmNvbnRleHQ9PT0ibGVhZGVyIiYmYy50b2tlbiE9dC50b2tlbiYmKGMuYWN0aW9uPT09ImFwcGx5IiYmYy50b2tlbj50LnRva2VuJiZvKCksYy5hY3Rpb249PT0idGVsbCImJihvKCksdC5faGFzTGVhZGVyPSEwKSl9LCJoYW5kbGVNZXNzYWdlIik7dC5icm9hZGNhc3RDaGFubmVsLmFkZEV2ZW50TGlzdGVuZXIoImludGVybmFsIixwKTt2YXIgZD1lP3QuX29wdGlvbnMucmVzcG9uc2VUaW1lKjQ6dC5fb3B0aW9ucy5yZXNwb25zZVRpbWU7cmV0dXJuIHcwKHQsImFwcGx5IikudGhlbihmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJhY2UoW2RkKGQpLGwudGhlbihmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IpfSldKX0pLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdzAodCwiYXBwbHkiKX0pLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yYWNlKFtkZChkKSxsLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKX0pXSl9KS5jYXRjaChmdW5jdGlvbigpe30pLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdC5icm9hZGNhc3RDaGFubmVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoImludGVybmFsIixwKSxuPyExOmh3KHQpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4hMH0pfSl9LCJhcHBseVJ1biIpO3JldHVybiB0aGlzLl9hcGxRQz10aGlzLl9hcGxRQysxLHRoaXMuX2FwbFE9dGhpcy5fYXBsUS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGEoKX0pLnRoZW4oZnVuY3Rpb24oKXt0Ll9hcGxRQz10Ll9hcGxRQy0xfSksdGhpcy5fYXBsUS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHQuaXNMZWFkZXJ9KX0sImFwcGx5T25jZSIpLGF3YWl0TGVhZGVyc2hpcDppKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FMUHx8KHRoaXMuX2FMUD11QWEodGhpcykpLHRoaXMuX2FMUH0sImF3YWl0TGVhZGVyc2hpcCIpLHNldCBvbmR1cGxpY2F0ZShzKXt0aGlzLl9kcEw9c30sZGllOmkoZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiB0aGlzLl9sc3Rucy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmJyb2FkY2FzdENoYW5uZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaW50ZXJuYWwiLHQpfSksdGhpcy5fbHN0bnM9W10sdGhpcy5fdW5sLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQucmVtb3ZlKCl9KSx0aGlzLl91bmw9W10sdGhpcy5pc0xlYWRlciYmKHRoaXMuX2hhc0xlYWRlcj0hMSx0aGlzLmlzTGVhZGVyPSExKSx0aGlzLmlzRGVhZD0hMCx3MCh0aGlzLCJkZWF0aCIpfSwiZGllIil9O2kodUFhLCJfYXdhaXRMZWFkZXJzaGlwT25jZSIpO2kocEFhLCJmaWxsT3B0aW9uc1dpdGhEZWZhdWx0cyIpO2koaEFhLCJjcmVhdGVMZWFkZXJFbGVjdGlvbiIpfSk7dmFyIHQ1dD1nKCgpPT57ajZ0KCk7ZTV0KCk7bHNlKCl9KTt2YXIgYTV0PWcoKCk9PntkMCgpO1U0KCk7bTZ0KCk7dDV0KCl9KTt2YXIgQzRlLFQ0ZSxzNXQ9ZygoKT0+e2E1dCgpO0M0ZT1nbG9iYWxUaGlzLkJyb2FkY2FzdENoYW5uZWw7QzRlfHwoQzRlPXUzKTtUNGU9Y2xhc3N7c3RhdGlje2kodGhpcywiRGVlc0NvbW1zIil9Y29uc3RydWN0b3IoKXt0aGlzLmJyb2FkY2FzdENoYW5uZWw9bmV3IEM0ZSgiZGVlcy1jb21tcyIpLHRoaXMudHlwZWRyb3V0ZXI9bmV3IExwLlR5cGVkUm91dGVyLHRoaXMudHlwZWR0YXJnZXQ9bmV3IExwLlR5cGVkVGFyZ2V0KHtwb3N0TWV0aG9kV2l0aFR5cGVkUm91dGVyOmkoYXN5bmMgZT0+e3RoaXMucG9zdE1lc3NhZ2UoZSl9LCJwb3N0TWV0aG9kV2l0aFR5cGVkUm91dGVyIiksdHlwZWRSb3V0ZXJSZWY6dGhpcy50eXBlZHJvdXRlcn0pLHRoaXMuYnJvYWRjYXN0Q2hhbm5lbC5vbm1lc3NhZ2U9YXN5bmMgZT0+e2xldCB0PWUubWV0aG9kP2U6ZS5kYXRhO2NvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHQpKTtsZXQgYT1hd2FpdCB0aGlzLnR5cGVkcm91dGVyLnJvdXRlQW5kQWRkUmVzcG9uc2UodCx7c2tpcEhvb2tzOiEwfSk7YSYmIWEuZXJyb3ImJnRoaXMucG9zdE1lc3NhZ2UoYSl9fWNyZWF0ZVR5cGVkUmVxdWVzdChlKXtyZXR1cm4gbmV3IExwLlR5cGVkUmVxdWVzdCh0aGlzLnR5cGVkdGFyZ2V0LGUpfWFzeW5jIHBvc3RNZXNzYWdlKGUpe3RoaXMuYnJvYWRjYXN0Q2hhbm5lbC5wb3N0TWVzc2FnZShlKX1hc3luYyBjcmVhdGVUeXBlZEhhbmRsZXIoZSx0KXt0aGlzLnR5cGVkcm91dGVyLmFkZFR5cGVkSGFuZGxlcihuZXcgTHAuVHlwZWRIYW5kbGVyKGUsdCkpfX19KTt2YXIgZnc9e307eXQoZncse0RlZXNDb21tczooKT0+VDRlfSk7dmFyIGk1dD1nKCgpPT57czV0KCl9KTt2YXIgUHAsSXA9ZygoKT0+e1U0KCk7UHA9eG4oaXkoKSwxKTt1OSgpOyRoZSgpO2QwKCk7RWhlKCk7aW8oKTthc2UoKX0pO3ZhciBUMSxTOT1nKCgpPT57SXAoKTtUMT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJUeXBlZFJlc3BvbnNlRXJyb3IiKX1jb25zdHJ1Y3RvcihlLHQpe3RoaXMuZXJyb3JUZXh0PWUsdGhpcy5lcnJvckRhdGE9dH19fSk7dmFyIGRzZSxyNXQ9ZygoKT0+e1M5KCk7SXAoKTtkc2U9Y2xhc3N7c3RhdGlje2kodGhpcywiVHlwZWRUb29scyIpfWNvbnN0cnVjdG9yKCl7dGhpcy5sb2NhbERhdGE9e319YXN5bmMgcGFzc0d1YXJkcyhlLHQpe2xldCBhPW5ldyB2MC5HdWFyZFNldChlKTtpZighYXdhaXQgYS5hbGxHdWFyZHNQYXNzKHQpKXtsZXQgbj1hd2FpdCBhLmdldEZhaWxlZEhpbnQodCk7dGhyb3cgbmV3IFQxKGBndWFyZCBmYWlsZWQ6ICR7bn1gLHtmYWlsZWRIaW50Om59KX19fX0pO3ZhciAkNGUsRDRlPWcoKCk9PntJcCgpO1M5KCk7cjV0KCk7JDRlPWNsYXNze3N0YXRpY3tpKHRoaXMsIlR5cGVkSGFuZGxlciIpfWNvbnN0cnVjdG9yKGUsdCl7dGhpcy5tZXRob2Q9ZSx0aGlzLmhhbmRsZXJGdW5jdGlvbj10fWFzeW5jIGFkZFJlc3BvbnNlKGUpe2lmKGUubWV0aG9kIT09dGhpcy5tZXRob2QpdGhyb3cgbmV3IEVycm9yKCJ0aGlzIGhhbmRsZXIgaGFzIGJlZW4gZ2l2ZW4gYSB3cm9uZyBtZXRob2QgdG8gYW5zd2VyIHRvLiBQbGVhc2UgdXNlIGEgVHlwZWRSb3V0ZXIgdG8gZmlsdGVyIHJlcXVlc3RzIik7bGV0IHQsYT1uZXcgZHNlO2UubG9jYWxEYXRhJiYoYS5sb2NhbERhdGE9ZS5sb2NhbERhdGEpO2xldCByPWF3YWl0IHRoaXMuaGFuZGxlckZ1bmN0aW9uKGUucmVxdWVzdCxhKS5jYXRjaChuPT57biBpbnN0YW5jZW9mIFQxP3Q9bjpjb25zb2xlLmxvZyhuKX0pO3JldHVybiB0JiYoZS5lcnJvcj17dGV4dDp0LmVycm9yVGV4dCxkYXRhOnQuZXJyb3JEYXRhfSksciYmKGUucmVzcG9uc2U9ciksZT8uY29ycmVsYXRpb24/LnBoYXNlJiYoZS5jb3JyZWxhdGlvbi5waGFzZT0icmVzcG9uc2UiKSxlfX19KTt2YXIgaDMsbXc9ZygoKT0+e0lwKCk7dXNlKCk7RDRlKCk7TDRlKCk7UzkoKTtoMz1jbGFzcyBze3N0YXRpY3tpKHRoaXMsIlR5cGVkUm91dGVyIil9Y29uc3RydWN0b3IoKXt0aGlzLmhvb2tzPXt9LHRoaXMucm91dGVyTWFwPW5ldyBGcy5PYmplY3RNYXAsdGhpcy5oYW5kbGVyTWFwPW5ldyBGcy5PYmplY3RNYXAsdGhpcy5yZWdpc3RlcmVkVmlydHVhbFN0cmVhbXM9bmV3IEZzLk9iamVjdE1hcCx0aGlzLm1pZGRsZXdhcmVzPVtdLHRoaXMuZmlyZUV2ZW50SW50ZXJlc3RNYXA9bmV3IEZzLkludGVyZXN0TWFwKGU9PmUpfXN0YXRpYyBnZXQgZ2xvYmFsSG9va3MoKXtyZXR1cm4gZ2xvYmFsVGhpcy5fX3R5cGVkUm91dGVyR2xvYmFsSG9va3N8fChnbG9iYWxUaGlzLl9fdHlwZWRSb3V0ZXJHbG9iYWxIb29rcz17fSksZ2xvYmFsVGhpcy5fX3R5cGVkUm91dGVyR2xvYmFsSG9va3N9c3RhdGljIHNldCBnbG9iYWxIb29rcyhlKXtnbG9iYWxUaGlzLl9fdHlwZWRSb3V0ZXJHbG9iYWxIb29rcz1lfXN0YXRpYyBzZXRHbG9iYWxIb29rcyhlKXtsZXQgdD1zLmdsb2JhbEhvb2tzO3MuZ2xvYmFsSG9va3M9ey4uLnQsLi4uZX19c3RhdGljIGNsZWFyR2xvYmFsSG9va3MoKXtnbG9iYWxUaGlzLl9fdHlwZWRSb3V0ZXJHbG9iYWxIb29rcz17fX1zZXRIb29rcyhlKXt0aGlzLmhvb2tzPXsuLi50aGlzLmhvb2tzLC4uLmV9fWNhbGxIb29rKGUsdCl7dHJ5e3MuZ2xvYmFsSG9va3NbZV0/Lih0KSx0aGlzLmhvb2tzW2VdPy4odCl9Y2F0Y2goYSl7Y29uc29sZS5lcnJvcihgVHlwZWRSb3V0ZXIgaG9vayBlcnJvciAoJHtlfSk6YCxhKX19YWRkTWlkZGxld2FyZShlKXt0aGlzLm1pZGRsZXdhcmVzLnB1c2goZSl9YWRkVHlwZWRIYW5kbGVyKGUpe2lmKHRoaXMuZ2V0VHlwZWRIYW5kbGVyRm9yTWV0aG9kKGUubWV0aG9kKSl0aHJvdyBuZXcgRXJyb3IoYGEgVHlwZWRIYW5kbGVyIGZvciAke2UubWV0aG9kfSBhbHJlZHkgZXhpc3RzISBDYW4ndCBhZGQgYW5vdGhlciBvbmUuYCk7dGhpcy5oYW5kbGVyTWFwLmFkZChlKX1hZGRUeXBlZFJvdXRlcihlKXt0aGlzLnJvdXRlck1hcC5maW5kU3luYyhhPT5hPT09ZSl8fCh0aGlzLnJvdXRlck1hcC5hZGQoZSksZS5hZGRUeXBlZFJvdXRlcih0aGlzKSl9Y2hlY2tGb3JUeXBlZEhhbmRsZXIoZSl7cmV0dXJuISF0aGlzLmdldFR5cGVkSGFuZGxlckZvck1ldGhvZChlKX1nZXRUeXBlZEhhbmRsZXJGb3JNZXRob2QoZSx0PVtdKXt0LnB1c2godGhpcyk7bGV0IGE7cmV0dXJuIGE9dGhpcy5oYW5kbGVyTWFwLmZpbmRTeW5jKHI9PnIubWV0aG9kPT09ZSksYXx8dGhpcy5yb3V0ZXJNYXAuZ2V0QXJyYXkoKS5mb3JFYWNoKHI9PnshYSYmIXQuaW5jbHVkZXMocikmJihhPXIuZ2V0VHlwZWRIYW5kbGVyRm9yTWV0aG9kKGUsdCkpfSksYX1nZXRUeXBlZEhhbmRsZXJBbmRSb3V0ZXIoZSx0PVtdKXt0LnB1c2godGhpcyk7bGV0IGE9dGhpcy5oYW5kbGVyTWFwLmZpbmRTeW5jKHI9PnIubWV0aG9kPT09ZSk7aWYoYSlyZXR1cm57aGFuZGxlcjphLHJvdXRlcjp0aGlzfTtmb3IobGV0IHIgb2YgdGhpcy5yb3V0ZXJNYXAuZ2V0QXJyYXkoKSlpZighdC5pbmNsdWRlcyhyKSl7bGV0IG49ci5nZXRUeXBlZEhhbmRsZXJBbmRSb3V0ZXIoZSx0KTtpZihuKXJldHVybiBufXJldHVybiBudWxsfXN0YXRpY3t0aGlzLmRlZmF1bHRSb3V0ZU9wdGlvbnM9e2xvY2FsUmVxdWVzdDohMSxza2lwSG9va3M6ITF9fWFzeW5jIHJvdXRlQW5kQWRkUmVzcG9uc2UoZSx0PXt9KXtsZXQgYT17Li4ucy5kZWZhdWx0Um91dGVPcHRpb25zLC4uLnR9O2lmKGU9JDEuZGVjb2RlUGF5bG9hZEZyb21OZXR3b3JrKGUse3R5cGVkcm91dGVyOnRoaXN9KSxlLmxvY2FsRGF0YT1lLmxvY2FsRGF0YXx8e30sZS5sb2NhbERhdGEuZmlyc3RUeXBlZHJvdXRlcj10aGlzLGUubWV0aG9kPT09IiMjVmlydHVhbFN0cmVhbSMjIil7bGV0IHI9YXdhaXQgdGhpcy5oYW5kbGVTdHJlYW1UeXBlZFJlcXVlc3QoZSk7cmV0dXJuIHIubG9jYWxEYXRhPW51bGwscn1pZihlPy5jb3JyZWxhdGlvbj8ucGhhc2U9PT0icmVxdWVzdCJ8fGEubG9jYWxSZXF1ZXN0KXtsZXQgcj1EYXRlLm5vdygpO2Euc2tpcEhvb2tzfHx0aGlzLmNhbGxIb29rKCJvbkluY29taW5nUmVxdWVzdCIse2NvcnJlbGF0aW9uSWQ6ZS5jb3JyZWxhdGlvbj8uaWR8fCJ1bmtub3duIixtZXRob2Q6ZS5tZXRob2QsZGlyZWN0aW9uOiJpbmNvbWluZyIscGhhc2U6InJlcXVlc3QiLHRpbWVzdGFtcDpyLHBheWxvYWQ6ZS5yZXF1ZXN0fSk7bGV0IG49dGhpcy5nZXRUeXBlZEhhbmRsZXJBbmRSb3V0ZXIoZS5tZXRob2QpO2lmKCFuKXJldHVybiBjb25zb2xlLmxvZyhgQ2Fubm90IGZpbmQgaGFuZGxlciBmb3IgbWV0aG9kbmFtZSAke2UubWV0aG9kfWApLGUuZXJyb3I9e3RleHQ6IlRoZXJlIGlzIG5vIGF2YWlsYWJsZSBtZXRob2QgZm9yIHRoaXMgY2FsbCBvbiB0aGUgc2VydmVyIHNpZGUiLGRhdGE6e319LGUuY29ycmVsYXRpb24ucGhhc2U9InJlc3BvbnNlIixlLmxvY2FsRGF0YT1udWxsLGU9JDEuZW5jb2RlUGF5bG9hZEZvck5ldHdvcmsoZSx7dHlwZWRyb3V0ZXI6dGhpc30pLGEuc2tpcEhvb2tzfHx0aGlzLmNhbGxIb29rKCJvbk91dGdvaW5nUmVzcG9uc2UiLHtjb3JyZWxhdGlvbklkOmUuY29ycmVsYXRpb24/LmlkfHwidW5rbm93biIsbWV0aG9kOmUubWV0aG9kLGRpcmVjdGlvbjoib3V0Z29pbmciLHBoYXNlOiJyZXNwb25zZSIsdGltZXN0YW1wOkRhdGUubm93KCksZHVyYXRpb25NczpEYXRlLm5vdygpLXIscGF5bG9hZDplLnJlc3BvbnNlLGVycm9yOmUuZXJyb3I/LnRleHR9KSxlO2xldHtoYW5kbGVyOm8scm91dGVyOmx9PW47aWYobC5taWRkbGV3YXJlcy5sZW5ndGg+MCl0cnl7Zm9yKGxldCBwIG9mIGwubWlkZGxld2FyZXMpYXdhaXQgcChlKX1jYXRjaChwKXtyZXR1cm4gcCBpbnN0YW5jZW9mIFQxP2UuZXJyb3I9e3RleHQ6cC5lcnJvclRleHQsZGF0YTpwLmVycm9yRGF0YXx8e319OmUuZXJyb3I9e3RleHQ6cC5tZXNzYWdlfHwiTWlkZGxld2FyZSBlcnJvciIsZGF0YTp7fX0sZS5jb3JyZWxhdGlvbi5waGFzZT0icmVzcG9uc2UiLGUubG9jYWxEYXRhPW51bGwsZT0kMS5lbmNvZGVQYXlsb2FkRm9yTmV0d29yayhlLHt0eXBlZHJvdXRlcjp0aGlzfSksYS5za2lwSG9va3N8fHRoaXMuY2FsbEhvb2soIm9uT3V0Z29pbmdSZXNwb25zZSIse2NvcnJlbGF0aW9uSWQ6ZS5jb3JyZWxhdGlvbj8uaWR8fCJ1bmtub3duIixtZXRob2Q6ZS5tZXRob2QsZGlyZWN0aW9uOiJvdXRnb2luZyIscGhhc2U6InJlc3BvbnNlIix0aW1lc3RhbXA6RGF0ZS5ub3coKSxkdXJhdGlvbk1zOkRhdGUubm93KCktcixwYXlsb2FkOmUucmVzcG9uc2UsZXJyb3I6ZS5lcnJvcj8udGV4dH0pLGV9cmV0dXJuIGU9YXdhaXQgby5hZGRSZXNwb25zZShlKSxlLmxvY2FsRGF0YT1udWxsLGU9JDEuZW5jb2RlUGF5bG9hZEZvck5ldHdvcmsoZSx7dHlwZWRyb3V0ZXI6dGhpc30pLGEuc2tpcEhvb2tzfHx0aGlzLmNhbGxIb29rKCJvbk91dGdvaW5nUmVzcG9uc2UiLHtjb3JyZWxhdGlvbklkOmUuY29ycmVsYXRpb24/LmlkfHwidW5rbm93biIsbWV0aG9kOmUubWV0aG9kLGRpcmVjdGlvbjoib3V0Z29pbmciLHBoYXNlOiJyZXNwb25zZSIsdGltZXN0YW1wOkRhdGUubm93KCksZHVyYXRpb25NczpEYXRlLm5vdygpLXIscGF5bG9hZDplLnJlc3BvbnNlLGVycm9yOmUuZXJyb3I/LnRleHR9KSxlfWVsc2UgcmV0dXJuIGU/LmNvcnJlbGF0aW9uPy5waGFzZT09PSJyZXNwb25zZSI/KGEuc2tpcEhvb2tzfHx0aGlzLmNhbGxIb29rKCJvbkluY29taW5nUmVzcG9uc2UiLHtjb3JyZWxhdGlvbklkOmUuY29ycmVsYXRpb24/LmlkfHwidW5rbm93biIsbWV0aG9kOmUubWV0aG9kLGRpcmVjdGlvbjoiaW5jb21pbmciLHBoYXNlOiJyZXNwb25zZSIsdGltZXN0YW1wOkRhdGUubm93KCkscGF5bG9hZDplLnJlc3BvbnNlLGVycm9yOmUuZXJyb3I/LnRleHR9KSx0aGlzLmZpcmVFdmVudEludGVyZXN0TWFwLmZpbmRJbnRlcmVzdChlLmNvcnJlbGF0aW9uLmlkKT8uZnVsbGZpbGxJbnRlcmVzdChlKSxudWxsKTooY29uc29sZS5sb2coInJlY2VpdmVkIHdlaXJkbHkgc2hhcGVkIHJlcXVlc3QiKSxjb25zb2xlLmxvZyhlKSxudWxsKX1hc3luYyBoYW5kbGVTdHJlYW1UeXBlZFJlcXVlc3QoZSl7bGV0IHQ9YXdhaXQgdGhpcy5yZWdpc3RlcmVkVmlydHVhbFN0cmVhbXMuZmluZChhc3luYyByPT5yLnN0cmVhbUlkPT09ZS5yZXF1ZXN0LnN0cmVhbUlkKTtpZih0KWNvbnNvbGUubG9nKGBzdWNjZXNzOiBmb3VuZCByZWxldmFudCB2aXJ0dWFsIHN0cmVhbSB3aXRoIGlkICR7ZS5yZXF1ZXN0LnN0cmVhbUlkfWApO2Vsc2UgcmV0dXJuIGNvbnNvbGUubG9nKGBubyByZWxldmFudCB2aXJ0dWFsIHN0cmVhbSBmb3VuZCBmb3Igc3RyZWFtIHdpdGggaWQgJHtlLnJlcXVlc3Quc3RyZWFtSWR9YCksY29uc29sZS5sb2codGhpcy5yZWdpc3RlcmVkVmlydHVhbFN0cmVhbXMuZ2V0QXJyYXkoKSksZTtyZXR1cm4gYXdhaXQgdC5oYW5kbGVTdHJlYW1UcihlKX19fSk7dmFyIG81dCwkMSx1c2U9ZygoKT0+e0lwKCk7bXcoKTtvNXQ9IiMjIyMjIyMjIyMjIyNDTE9TSU5HIEJJVCMjIyMjIyMjIyMjIyMiLCQxPWNsYXNzIHN7c3RhdGlje2kodGhpcywiVmlydHVhbFN0cmVhbSIpfXN0YXRpYyBlbmNvZGVQYXlsb2FkRm9yTmV0d29yayhlLHQsYSxyPVtdKXtyZXR1cm4hZXx8eTEuaXNCdWZmZXJMaWtlKGUpP2U6ZSBpbnN0YW5jZW9mIHM/KCFlLnNpZGUmJnQuc2VuZE1ldGhvZCYmKGUuc2lkZT0icmVxdWVzdGluZyIsZS5zZW5kTWV0aG9kPXQuc2VuZE1ldGhvZCksIWUuc2lkZSYmdC50eXBlZHJvdXRlciYmKGUuc2lkZT0icmVzcG9uZGluZyIsZS50eXBlZHJvdXRlcj10LnR5cGVkcm91dGVyLHQudHlwZWRyb3V0ZXIucmVnaXN0ZXJlZFZpcnR1YWxTdHJlYW1zLmFkZChlKSksIWEucmVzcG9uc2V8fHIuaW5jbHVkZXMoInJlc3BvbnNlIik/KGUuc3RhcnRLZWVwQWxpdmVMb29wKCkse19pc1ZpcnR1YWxTdHJlYW06ITAsc3RyZWFtSWQ6ZS5zdHJlYW1JZH0pOntfT0JNSVRURURfVklSVFVBTF9TVFJFQU06ITAscmVhc29uOiJwYXRoIGlzIHVuZGVyIC5yZXF1ZXN0OiBvYm1pdHRlZCBmb3IgZGVkdXBsaWNhdGlvbiByZWFzb25zIGluIHJlc3BvbnNlIGN5Y2xlLiJ9KTpBcnJheS5pc0FycmF5KGUpP2UubWFwKChuLG8pPT5zLmVuY29kZVBheWxvYWRGb3JOZXR3b3JrKG4sdCxhfHxlLHIuY29uY2F0KFN0cmluZyhvKSkpKTplIT09bnVsbCYmdHlwZW9mIGU9PSJvYmplY3QiP09iamVjdC5lbnRyaWVzKGUpLnJlZHVjZSgobixbbyxsXSk9PntsZXQgcD1yLmNvbmNhdChvKTtyZXR1cm4gbltvXT1zLmVuY29kZVBheWxvYWRGb3JOZXR3b3JrKGwsdCxhfHxlLHApLG59LHt9KTplfXN0YXRpYyBkZWNvZGVQYXlsb2FkRnJvbU5ldHdvcmsoZSx0KXtpZih5MS5pc0J1ZmZlckxpa2UoZSl8fGUgaW5zdGFuY2VvZiBoMylyZXR1cm4gZTtpZihlIT09bnVsbCYmdHlwZW9mIGU9PSJvYmplY3QiKXtpZihlIGluc3RhbmNlb2YgU2V0fHxlIGluc3RhbmNlb2YgTWFwfHxlIGluc3RhbmNlb2YgRGF0ZXx8ZSBpbnN0YW5jZW9mIFJlZ0V4cHx8ZSBpbnN0YW5jZW9mIEVycm9yfHxlIGluc3RhbmNlb2YgUHJvbWlzZXx8dHlwZW9mIGUudGhlbj09ImZ1bmN0aW9uIilyZXR1cm4gZTtpZihlLl9pc1ZpcnR1YWxTdHJlYW0pe2xldCBhPW5ldyBzO3JldHVybiBhLnN0cmVhbUlkPWUuc3RyZWFtSWQsIWEuc2lkZSYmdC5zZW5kTWV0aG9kJiYoYS5zaWRlPSJyZXF1ZXN0aW5nIixhLnNlbmRNZXRob2Q9dC5zZW5kTWV0aG9kKSwhYS5zaWRlJiZ0LnR5cGVkcm91dGVyJiYoYS5zaWRlPSJyZXNwb25kaW5nIixhLnR5cGVkcm91dGVyPXQudHlwZWRyb3V0ZXIsdC50eXBlZHJvdXRlci5yZWdpc3RlcmVkVmlydHVhbFN0cmVhbXMuYWRkKGEpKSxhLnN0YXJ0S2VlcEFsaXZlTG9vcCgpLGF9ZWxzZSBpZihBcnJheS5pc0FycmF5KGUpKXtsZXQgYT1bXTtmb3IobGV0IHIgb2YgZSlhLnB1c2gocy5kZWNvZGVQYXlsb2FkRnJvbU5ldHdvcmsocix0KSk7cmV0dXJuIGF9ZWxzZSByZXR1cm4gT2JqZWN0LmtleXMoZSkucmVkdWNlKChhLHIpPT4oYVtyXT1zLmRlY29kZVBheWxvYWRGcm9tTmV0d29yayhlW3JdLHQpLGEpLHt9KX1lbHNlIHJldHVybiBlfWNvbnN0cnVjdG9yKCl7dGhpcy5zdHJlYW1JZD1QcC51bmkoKSx0aGlzLmtlZXBBbGl2ZT0hMCx0aGlzLnNlbmRCYWNrcHJlc3N1cmVkQXJyYXk9bmV3IEZzLkJhY2twcmVzc3VyZWRBcnJheSgxNiksdGhpcy5yZWNlaXZlQmFja3ByZXNzdXJlZEFycmF5PW5ldyBGcy5CYWNrcHJlc3N1cmVkQXJyYXkoMTYpfXN0YXRpYyByZWNvbnN0aXR1dGVCaW5hcnlEYXRhKGUpe2lmKGU9PW51bGx8fGUgaW5zdGFuY2VvZiBVaW50OEFycmF5fHx0eXBlb2YgQnVmZmVyPCJ1IiYmQnVmZmVyLmlzQnVmZmVyKGUpKXJldHVybiBlO2lmKHR5cGVvZiBlPT0ib2JqZWN0Iil7aWYoZS50eXBlPT09IkVuY29kZWRCdWZmZXIiJiZ0eXBlb2YgZS5kYXRhPT0ic3RyaW5nIiYmZS5kYXRhLnN0YXJ0c1dpdGgoImJhc2U2NDoiKSl7bGV0IGE9ZS5kYXRhLnNsaWNlKDcpO2lmKHR5cGVvZiBCdWZmZXI8InUiKXtsZXQgcj1CdWZmZXIuZnJvbShhLCJiYXNlNjQiKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoci5idWZmZXIsci5ieXRlT2Zmc2V0LHIuYnl0ZUxlbmd0aCl9cmV0dXJuIG5ldyBVaW50OEFycmF5KEFycmF5LmZyb20oYXRvYihhKSkubWFwKHI9PnIuY2hhckNvZGVBdCgwKSkpfWlmKGUudHlwZT09PSJCdWZmZXIiJiZBcnJheS5pc0FycmF5KGUuZGF0YSkpcmV0dXJuIG5ldyBVaW50OEFycmF5KGUuZGF0YSk7bGV0IHQ9T2JqZWN0LmtleXMoZSk7aWYodC5sZW5ndGg+MCYmdC5ldmVyeShhPT4vXlxkKyQvLnRlc3QoYSkpKXtsZXQgYT1uZXcgQXJyYXkodC5sZW5ndGgpO2ZvcihsZXQgciBvZiB0KWFbTnVtYmVyKHIpXT1lW3JdO2lmKGEuZXZlcnkocj0+dHlwZW9mIHI9PSJudW1iZXIiKSlyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYSl9fXJldHVybiBlfWFzeW5jIHdvcmtPblF1ZXVlKCl7aWYodGhpcy53b3JraW5nRGVmZXJyZWQpcmV0dXJuIHRoaXMud29ya2luZ0RlZmVycmVkLnByb21pc2U7aWYodGhpcy53b3JraW5nRGVmZXJyZWQ9bXQuZGVmZXIoKSx0aGlzLnNpZGU9PT0icmVxdWVzdGluZyIpe2xldCBlPSF0aGlzLnJlY2VpdmVCYWNrcHJlc3N1cmVkQXJyYXkuY2hlY2tTcGFjZUF2YWlsYWJsZSgpLHQ9ITEsYT0hMSxyPWkoYXN5bmMoKT0+e2xldCBuPWF3YWl0IHRoaXMuc2VuZE1ldGhvZCh7bWV0aG9kOiIjI1ZpcnR1YWxTdHJlYW0jIyIscmVxdWVzdDp7c3RyZWFtSWQ6dGhpcy5zdHJlYW1JZCxjeWNsZUlkOlBwLnVuaSgpLGN5Y2xlOiJyZXF1ZXN0IixtYWluUHVycG9zZToiZmVlZGJhY2siLG5leHQ6dGhpcy5zZW5kQmFja3ByZXNzdXJlZEFycmF5LmRhdGEubGVuZ3RoPjAsYmFja3ByZXNzdXJlOiF0aGlzLnJlY2VpdmVCYWNrcHJlc3N1cmVkQXJyYXkuY2hlY2tTcGFjZUF2YWlsYWJsZSgpfSxyZXNwb25zZTpudWxsfSkuY2F0Y2goKCk9Pntjb25zb2xlLmxvZygic3RyZWFtIGVuZGVkIGltbWF0dXJlbHkiKSx0aGlzLmtlZXBBbGl2ZT0hMX0pO24mJm4ucmVzcG9uc2UmJihhPW4ucmVzcG9uc2UuYmFja3ByZXNzdXJlLHQ9bi5yZXNwb25zZS5uZXh0KX0sImdldEZlZWRiYWNrIik7Zm9yKGF3YWl0IHIoKTt0aGlzLnNlbmRCYWNrcHJlc3N1cmVkQXJyYXkuZGF0YS5sZW5ndGg+MHx8dDspe2lmKGEpZm9yKDthOyljb25zb2xlLmxvZygid2FpdGluZyBmb3IgZmVlZGJhY2sgYmVjYXVzZSBvZiBiYWNrcHJlc3N1cmUuLi4iKSxhd2FpdCBYdC5kZWxheUZvcig1MCksYXdhaXQgcigpO2xldCBuO3RoaXMuc2VuZEJhY2twcmVzc3VyZWRBcnJheS5kYXRhLmxlbmd0aD4wJiYobj10aGlzLnNlbmRCYWNrcHJlc3N1cmVkQXJyYXkuc2hpZnQoKSk7bGV0IG87bz1hd2FpdCB0aGlzLnNlbmRNZXRob2Qoe21ldGhvZDoiIyNWaXJ0dWFsU3RyZWFtIyMiLHJlcXVlc3Q6e3N0cmVhbUlkOnRoaXMuc3RyZWFtSWQsY3ljbGVJZDpQcC51bmkoKSxjeWNsZToicmVxdWVzdCIsbWFpblB1cnBvc2U6bj8iY2h1bmsiOiJyZWFkIixiYWNrcHJlc3N1cmU6ZSxuZXh0OnRoaXMuc2VuZEJhY2twcmVzc3VyZWRBcnJheS5kYXRhLmxlbmd0aD4wLC4uLm4/e2NodW5rRGF0YTpufTp7fX0scmVzcG9uc2U6bnVsbH0pLmNhdGNoKCgpPT4oY29uc29sZS5sb2coInN0cmVhbSBlbmRlZCBpbW1hdHVyZWx5IiksdGhpcy5rZWVwQWxpdmU9ITEsbnVsbCkpLG8mJm8ucmVzcG9uc2UmJm8ucmVzcG9uc2UuY2h1bmtEYXRhJiZ0aGlzLnJlY2VpdmVCYWNrcHJlc3N1cmVkQXJyYXkucHVzaChzLnJlY29uc3RpdHV0ZUJpbmFyeURhdGEoby5yZXNwb25zZS5jaHVua0RhdGEpKSxhPW8mJm8ucmVzcG9uc2UmJm8ucmVzcG9uc2UuYmFja3ByZXNzdXJlLGU9IXRoaXMucmVjZWl2ZUJhY2twcmVzc3VyZWRBcnJheS5jaGVja1NwYWNlQXZhaWxhYmxlKCksdD1vJiZvLnJlc3BvbnNlJiZvLnJlc3BvbnNlLm5leHR9fXRoaXMud29ya2luZ0RlZmVycmVkLnJlc29sdmUoKSx0aGlzLndvcmtpbmdEZWZlcnJlZD1udWxsfWFzeW5jIGhhbmRsZVN0cmVhbVRyKGUpe2lmKGUucmVxdWVzdC5rZWVwQWxpdmU9PT0hMCYmdGhpcy5rZWVwQWxpdmU9PT0hMD90aGlzLmxhc3RLZWVwQWxpdmVFdmVudD1EYXRlLm5vdygpOmUucmVxdWVzdC5rZWVwQWxpdmU9PT0hMSYmKHRoaXMua2VlcEFsaXZlPSExKSxlLnJlcXVlc3QubWFpblB1cnBvc2U9PT0ia2VlcEFsaXZlIiYmKGUucmVzcG9uc2U9e3N0cmVhbUlkOnRoaXMuc3RyZWFtSWQsY3ljbGVJZDplLnJlcXVlc3QuY3ljbGVJZCxjeWNsZToicmVzcG9uc2UiLG1haW5QdXJwb3NlOiJrZWVwQWxpdmUiLGtlZXBBbGl2ZTp0aGlzLmtlZXBBbGl2ZSxuZXh0OnRoaXMuc2VuZEJhY2twcmVzc3VyZWRBcnJheS5kYXRhLmxlbmd0aD4wLGJhY2twcmVzc3VyZTohdGhpcy5yZWNlaXZlQmFja3ByZXNzdXJlZEFycmF5LmNoZWNrU3BhY2VBdmFpbGFibGUoKX0pLGUucmVxdWVzdC5tYWluUHVycG9zZT09PSJmZWVkYmFjayImJihlLnJlc3BvbnNlPXtzdHJlYW1JZDp0aGlzLnN0cmVhbUlkLGN5Y2xlSWQ6ZS5yZXF1ZXN0LmN5Y2xlSWQsY3ljbGU6InJlc3BvbnNlIixtYWluUHVycG9zZToiZmVlZGJhY2siLG5leHQ6dGhpcy5zZW5kQmFja3ByZXNzdXJlZEFycmF5LmRhdGEubGVuZ3RoPjAsYmFja3ByZXNzdXJlOiF0aGlzLnJlY2VpdmVCYWNrcHJlc3N1cmVkQXJyYXkuY2hlY2tTcGFjZUF2YWlsYWJsZSgpfSksZS5yZXF1ZXN0Lm1haW5QdXJwb3NlPT09ImNodW5rIil7aWYodGhpcy5yZWNlaXZlQmFja3ByZXNzdXJlZEFycmF5LnB1c2gocy5yZWNvbnN0aXR1dGVCaW5hcnlEYXRhKGUucmVxdWVzdC5jaHVua0RhdGEpKSx0aGlzLnNlbmRCYWNrcHJlc3N1cmVkQXJyYXkuZGF0YS5sZW5ndGg+MCYmZS5yZXNwb25zZS5iYWNrcHJlc3N1cmU9PT0hMSl7bGV0IHQ9dGhpcy5zZW5kQmFja3ByZXNzdXJlZEFycmF5LnNoaWZ0KCk7ZS5yZXNwb25zZT17c3RyZWFtSWQ6dGhpcy5zdHJlYW1JZCxjeWNsZUlkOmUucmVxdWVzdC5jeWNsZUlkLGN5Y2xlOiJyZXNwb25zZSIsbWFpblB1cnBvc2U6ImNodW5rIixuZXh0OnRoaXMuc2VuZEJhY2twcmVzc3VyZWRBcnJheS5kYXRhLmxlbmd0aD4xLGJhY2twcmVzc3VyZTohdGhpcy5yZWNlaXZlQmFja3ByZXNzdXJlZEFycmF5LmNoZWNrU3BhY2VBdmFpbGFibGUoKSxjaHVua0RhdGE6dGhpcy5zZW5kQmFja3ByZXNzdXJlZEFycmF5LnNoaWZ0KCl9fWVsc2UgZS5yZXNwb25zZT17c3RyZWFtSWQ6dGhpcy5zdHJlYW1JZCxjeWNsZUlkOmUucmVxdWVzdC5jeWNsZUlkLGN5Y2xlOiJyZXNwb25zZSIsbWFpblB1cnBvc2U6ImZlZWRiYWNrIixuZXh0OnRoaXMuc2VuZEJhY2twcmVzc3VyZWRBcnJheS5kYXRhLmxlbmd0aD4wLGJhY2twcmVzc3VyZTohdGhpcy5yZWNlaXZlQmFja3ByZXNzdXJlZEFycmF5LmNoZWNrU3BhY2VBdmFpbGFibGUoKX07ZS5yZXF1ZXN0PW51bGx9cmV0dXJuIGV9YXN5bmMgY2xlYW51cCgpe3RoaXMudHlwZWRyb3V0ZXImJnRoaXMudHlwZWRyb3V0ZXIucmVnaXN0ZXJlZFZpcnR1YWxTdHJlYW1zLnJlbW92ZSh0aGlzKX1hc3luYyBzdGFydEtlZXBBbGl2ZUxvb3AoKXtpZih0aGlzLnNpZGU9PT0icmVzcG9uZGluZyIpcmV0dXJuO2F3YWl0IFh0LmRlbGF5Rm9yKDApLGNvbnNvbGUubG9nKGBzdGFydGluZyBrZWVwYWxpdmUgbG9vcCBvbiBzaWRlICR7dGhpcy5zaWRlfWApO2xldCBlPTA7Zm9yKDt0aGlzLmtlZXBBbGl2ZTspYXdhaXQgdGhpcy50cmlnZ2VyS2VlcEFsaXZlKCksYXdhaXQgWHQuZGVsYXlGb3IoMWUzKTthd2FpdCBYdC5kZWxheUZvcigxZTMpLGF3YWl0IHRoaXMuY2xlYW51cCgpLGNvbnNvbGUubG9nKGBjbGVhbmVkIHVwIGZvciBzdHJlYW0gJHt0aGlzLnN0cmVhbUlkfWApfWFzeW5jIHRyaWdnZXJLZWVwQWxpdmUoKXtpZih0aGlzLnNpZGU9PT0icmVxdWVzdGluZyIpe2NvbnNvbGUubG9nKCJrZWVwYWxpdmUgc2VudC4iKTtsZXQgZT1hd2FpdCB0aGlzLnNlbmRNZXRob2Qoe21ldGhvZDoiIyNWaXJ0dWFsU3RyZWFtIyMiLHJlcXVlc3Q6e3N0cmVhbUlkOnRoaXMuc3RyZWFtSWQsY3ljbGVJZDpQcC51bmkoKSxjeWNsZToicmVxdWVzdCIsbWFpblB1cnBvc2U6ImtlZXBBbGl2ZSIsa2VlcEFsaXZlOnRoaXMua2VlcEFsaXZlfSxyZXNwb25zZTpudWxsfSkuY2F0Y2goKCk9Pnt0aGlzLmtlZXBBbGl2ZT0hMX0pO2UmJmUucmVzcG9uc2UmJmUucmVzcG9uc2Uua2VlcEFsaXZlPT09ITE/dGhpcy5rZWVwQWxpdmU9ITE6dGhpcy5sYXN0S2VlcEFsaXZlRXZlbnQ9RGF0ZS5ub3coKSxlJiZlLnJlc3BvbnNlJiZlLnJlc3BvbnNlLm5leHQmJnRoaXMud29ya09uUXVldWUoKX1EYXRlLm5vdygpLXRoaXMubGFzdEtlZXBBbGl2ZUV2ZW50PjFlNCYmKGNvbnNvbGUubG9nKGBjbG9zaW5nIHN0cmVhbSBmb3IgJHt0aGlzLnN0cmVhbUlkfWApLHRoaXMua2VlcEFsaXZlPSExKX1hc3luYyBzZW5kRGF0YShlKXt0aGlzLnNlbmRCYWNrcHJlc3N1cmVkQXJyYXkucHVzaChlKSx0aGlzLndvcmtPblF1ZXVlKCksYXdhaXQgdGhpcy5zZW5kQmFja3ByZXNzdXJlZEFycmF5LndhaXRGb3JTcGFjZSgpfWFzeW5jIGZldGNoRGF0YSgpe3JldHVybiB0aGlzLnJlY2VpdmVCYWNrcHJlc3N1cmVkQXJyYXkuaGFzU3BhY2UsYXdhaXQgdGhpcy5yZWNlaXZlQmFja3ByZXNzdXJlZEFycmF5LndhaXRGb3JJdGVtcygpLHRoaXMucmVjZWl2ZUJhY2twcmVzc3VyZWRBcnJheS5zaGlmdCgpfWFzeW5jIHJlYWRGcm9tV2Vic3RyZWFtKGUsdD0hMCl7bGV0IGE9ZS5nZXRSZWFkZXIoKSxyPSExO2Zvcig7IXI7KXtsZXR7dmFsdWU6bixkb25lOm99PWF3YWl0IGEucmVhZCgpO24mJmF3YWl0IHRoaXMuc2VuZERhdGEobikscj1vfXQmJmF3YWl0IHRoaXMuY2xvc2UoITApfWFzeW5jIHdyaXRlVG9XZWJzdHJlYW0oZSl7bGV0IHQ9ZS5nZXRXcml0ZXIoKTtmb3IoO3RoaXMua2VlcEFsaXZlfHx0aGlzLnJlY2VpdmVCYWNrcHJlc3N1cmVkQXJyYXkuY2hlY2tIYXNJdGVtcygpOyl7bGV0IGE9YXdhaXQgdGhpcy5mZXRjaERhdGEoKTtpZihhPT09bzV0KXt0LnJlbGVhc2VMb2NrKCksYXdhaXQgZS5jbG9zZSgpO2JyZWFrfWF3YWl0IHQud3JpdGUoYSl9fWFzeW5jIGNsb3NlKGU9ITEpe2UmJnRoaXMuc2VuZERhdGEobzV0KSx0aGlzLmtlZXBBbGl2ZT0hMX19fSk7dmFyIEU0ZSxQNGU9ZygoKT0+e213KCk7SXAoKTtFNGU9Y2xhc3N7c3RhdGlje2kodGhpcywiVHlwZWRUYXJnZXQiKX1jb25zdHJ1Y3RvcihlKXtpZihlLnBvc3RNZXRob2RXaXRoVHlwZWRSb3V0ZXImJiFlLnR5cGVkUm91dGVyUmVmKXRocm93IG5ldyBFcnJvcigieW91IGhhdmUgdG8gc3BlY2lmeSBhIHR5cGVkcm91dGVyIHdoZW4gdXNpbmcgcG9zdG1ldGhvZCB3aXRoIHR5cGVkcm91dGVyIik7dGhpcy5vcHRpb25zPWV9YXN5bmMgcG9zdChlKXtsZXQgdDt0aGlzLm9wdGlvbnMudHlwZWRSb3V0ZXJSZWYmJih0PWF3YWl0IHRoaXMub3B0aW9ucy50eXBlZFJvdXRlclJlZi5maXJlRXZlbnRJbnRlcmVzdE1hcC5hZGRJbnRlcmVzdChlLmNvcnJlbGF0aW9uLmlkLGUpKTtsZXQgcj1hd2FpdCh0aGlzLm9wdGlvbnMucG9zdE1ldGhvZHx8dGhpcy5vcHRpb25zLnBvc3RNZXRob2RXaXRoVHlwZWRSb3V0ZXIpKGUpLG47cmV0dXJuIHQ/bj1hd2FpdCB0LmludGVyZXN0RnVsbGZpbGxlZDpyP249cjpuPWUsbn19fSk7ZnVuY3Rpb24gbjV0KHMsZSl7dHJ5e2gzLmdsb2JhbEhvb2tzW3NdPy4oZSl9Y2F0Y2godCl7Y29uc29sZS5lcnJvcihgVHlwZWRSZXF1ZXN0IGhvb2sgZXJyb3IgKCR7c30pOmAsdCl9fXZhciBtQWEsZ3csTDRlPWcoKCk9PntJcCgpO3VzZSgpO1M5KCk7bXcoKTtQNGUoKTttQWE9bmV3IF8xLldlYnJlcXVlc3RDbGllbnQ7aShuNXQsImNhbGxHbG9iYWxIb29rIik7Z3c9Y2xhc3N7c3RhdGlje2kodGhpcywiVHlwZWRSZXF1ZXN0Iil9Y29uc3RydWN0b3IoZSx0KXt0aGlzLnNraXBIb29rcz0hMSx0eXBlb2YgZT09InN0cmluZyI/dGhpcy51cmxFbmRQb2ludD1lOnRoaXMudHlwZWRUYXJnZXQ9ZSx0aGlzLm1ldGhvZD10fWFzeW5jIGZpcmUoZSx0PSExKXtsZXQgYT1EYXRlLm5vdygpLHI9e21ldGhvZDp0aGlzLm1ldGhvZCxyZXF1ZXN0OmUscmVzcG9uc2U6bnVsbCxjb3JyZWxhdGlvbjp7aWQ6UHAudW5pKCkscGhhc2U6InJlcXVlc3QifX07cj0kMS5lbmNvZGVQYXlsb2FkRm9yTmV0d29yayhyLHtzZW5kTWV0aG9kOmkobz0+dGhpcy5wb3N0VHJPYmplY3QobyksInNlbmRNZXRob2QiKX0pLHRoaXMuc2tpcEhvb2tzfHxuNXQoIm9uT3V0Z29pbmdSZXF1ZXN0Iix7Y29ycmVsYXRpb25JZDpyLmNvcnJlbGF0aW9uLmlkLG1ldGhvZDp0aGlzLm1ldGhvZCxkaXJlY3Rpb246Im91dGdvaW5nIixwaGFzZToicmVxdWVzdCIsdGltZXN0YW1wOmEscGF5bG9hZDplfSk7bGV0IG47cmV0dXJuIG49YXdhaXQgdGhpcy5wb3N0VHJPYmplY3Qocix0KSxuPSQxLmRlY29kZVBheWxvYWRGcm9tTmV0d29yayhuLHtzZW5kTWV0aG9kOmkobz0+dGhpcy5wb3N0VHJPYmplY3QobyksInNlbmRNZXRob2QiKX0pLHRoaXMuc2tpcEhvb2tzfHxuNXQoIm9uSW5jb21pbmdSZXNwb25zZSIse2NvcnJlbGF0aW9uSWQ6ci5jb3JyZWxhdGlvbi5pZCxtZXRob2Q6dGhpcy5tZXRob2QsZGlyZWN0aW9uOiJpbmNvbWluZyIscGhhc2U6InJlc3BvbnNlIix0aW1lc3RhbXA6RGF0ZS5ub3coKSxkdXJhdGlvbk1zOkRhdGUubm93KCktYSxwYXlsb2FkOm4/LnJlc3BvbnNlLGVycm9yOm4/LmVycm9yPy50ZXh0fSksbi5yZXNwb25zZX1hc3luYyBwb3N0VHJPYmplY3QoZSx0PSExKXtsZXQgYTtpZih0aGlzLnVybEVuZFBvaW50P2E9YXdhaXQgbUFhLnBvc3RKc29uKHRoaXMudXJsRW5kUG9pbnQsZSx0P3tjYWNoZVN0cmF0ZWd5OiJjYWNoZS1maXJzdCJ9Ont9KTphPWF3YWl0IHRoaXMudHlwZWRUYXJnZXQucG9zdChlKSxhLmVycm9yKXtpZihjb25zb2xlLmVycm9yKGBtZXRob2Q6ID4+JHt0aGlzLm1ldGhvZH08PCBnb3QgYW4gRVJST1I6ICIke2EuZXJyb3IudGV4dH0iIHdpdGggZGF0YSAke0pTT04uc3RyaW5naWZ5KGEuZXJyb3IuZGF0YSxudWxsLDIpfWApLCFhLnJldHJ5KXRocm93IG5ldyBUMShhLmVycm9yLnRleHQsYS5lcnJvci5kYXRhKTtyZXR1cm4gbnVsbH1yZXR1cm4gYS5yZXRyeSYmKGNvbnNvbGUubG9nKGBzZXJ2ZXIgcmVxdWVzdGVkIHJldHJ5IGZvciB0aGUgZm9sbG93aW5nIHJlYXNvbjogJHthLnJldHJ5LnJlYXNvbn1gKSxhd2FpdCBYdC5kZWxheUZvcihhLnJldHJ5LndhaXRGb3JNcyksYT1hd2FpdCB0aGlzLnBvc3RUck9iamVjdChlLHQpKSxhfX19KTt2YXIgZ2w9e307eXQoZ2wse1R5cGVkSGFuZGxlcjooKT0+JDRlLFR5cGVkUmVxdWVzdDooKT0+Z3csVHlwZWRSZXNwb25zZUVycm9yOigpPT5UMSxUeXBlZFJvdXRlcjooKT0+aDMsVHlwZWRUYXJnZXQ6KCk9PkU0ZSxWaXJ0dWFsU3RyZWFtOigpPT4kMX0pO3ZhciBwc2U9ZygoKT0+e0w0ZSgpO0Q0ZSgpO213KCk7UzkoKTtQNGUoKTt1c2UoKX0pO2Z1bmN0aW9uIGRzKHMpe2lmKHMmJnR5cGVvZiBzPT0ib2JqZWN0Iilzd2l0Y2goc1tKb10pe2Nhc2UgemM6Y2FzZSB1ZDpyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBJYShzKXtpZihzJiZ0eXBlb2Ygcz09Im9iamVjdCIpc3dpdGNoKHNbSm9dKXtjYXNlIGJ3OmNhc2UgemM6Y2FzZSBibDpjYXNlIHVkOnJldHVybiEwfXJldHVybiExfXZhciBidyx2dyx6Yyxoc2UsYmwsdWQsSm8sdmwseGwseWwsQ2EsbGEsd2wseHcsdXM9ZygoKT0+e2J3PVN5bWJvbC5mb3IoInlhbWwuYWxpYXMiKSx2dz1TeW1ib2wuZm9yKCJ5YW1sLmRvY3VtZW50IiksemM9U3ltYm9sLmZvcigieWFtbC5tYXAiKSxoc2U9U3ltYm9sLmZvcigieWFtbC5wYWlyIiksYmw9U3ltYm9sLmZvcigieWFtbC5zY2FsYXIiKSx1ZD1TeW1ib2wuZm9yKCJ5YW1sLnNlcSIpLEpvPVN5bWJvbC5mb3IoInlhbWwubm9kZS50eXBlIiksdmw9aShzPT4hIXMmJnR5cGVvZiBzPT0ib2JqZWN0IiYmc1tKb109PT1idywiaXNBbGlhcyIpLHhsPWkocz0+ISFzJiZ0eXBlb2Ygcz09Im9iamVjdCImJnNbSm9dPT09dncsImlzRG9jdW1lbnQiKSx5bD1pKHM9PiEhcyYmdHlwZW9mIHM9PSJvYmplY3QiJiZzW0pvXT09PXpjLCJpc01hcCIpLENhPWkocz0+ISFzJiZ0eXBlb2Ygcz09Im9iamVjdCImJnNbSm9dPT09aHNlLCJpc1BhaXIiKSxsYT1pKHM9PiEhcyYmdHlwZW9mIHM9PSJvYmplY3QiJiZzW0pvXT09PWJsLCJpc1NjYWxhciIpLHdsPWkocz0+ISFzJiZ0eXBlb2Ygcz09Im9iamVjdCImJnNbSm9dPT09dWQsImlzU2VxIik7aShkcywiaXNDb2xsZWN0aW9uIik7aShJYSwiaXNOb2RlIik7eHc9aShzPT4obGEocyl8fGRzKHMpKSYmISFzLmFuY2hvciwiaGFzQW5jaG9yIil9KTtmdW5jdGlvbiBIbChzLGUpe2xldCB0PWM1dChlKTt4bChzKT9fOShudWxsLHMuY29udGVudHMsdCxPYmplY3QuZnJlZXplKFtzXSkpPT09cGQmJihzLmNvbnRlbnRzPW51bGwpOl85KG51bGwscyx0LE9iamVjdC5mcmVlemUoW10pKX1mdW5jdGlvbiBfOShzLGUsdCxhKXtsZXQgcj1kNXQocyxlLHQsYSk7aWYoSWEocil8fENhKHIpKXJldHVybiB1NXQocyxhLHIpLF85KHMscix0LGEpO2lmKHR5cGVvZiByIT0ic3ltYm9sIil7aWYoZHMoZSkpe2E9T2JqZWN0LmZyZWV6ZShhLmNvbmNhdChlKSk7Zm9yKGxldCBuPTA7bjxlLml0ZW1zLmxlbmd0aDsrK24pe2xldCBvPV85KG4sZS5pdGVtc1tuXSx0LGEpO2lmKHR5cGVvZiBvPT0ibnVtYmVyIiluPW8tMTtlbHNle2lmKG89PT1rbClyZXR1cm4ga2w7bz09PXBkJiYoZS5pdGVtcy5zcGxpY2UobiwxKSxuLT0xKX19fWVsc2UgaWYoQ2EoZSkpe2E9T2JqZWN0LmZyZWV6ZShhLmNvbmNhdChlKSk7bGV0IG49XzkoImtleSIsZS5rZXksdCxhKTtpZihuPT09a2wpcmV0dXJuIGtsO249PT1wZCYmKGUua2V5PW51bGwpO2xldCBvPV85KCJ2YWx1ZSIsZS52YWx1ZSx0LGEpO2lmKG89PT1rbClyZXR1cm4ga2w7bz09PXBkJiYoZS52YWx1ZT1udWxsKX19cmV0dXJuIHJ9YXN5bmMgZnVuY3Rpb24gZjMocyxlKXtsZXQgdD1jNXQoZSk7eGwocyk/YXdhaXQgTTkobnVsbCxzLmNvbnRlbnRzLHQsT2JqZWN0LmZyZWV6ZShbc10pKT09PXBkJiYocy5jb250ZW50cz1udWxsKTphd2FpdCBNOShudWxsLHMsdCxPYmplY3QuZnJlZXplKFtdKSl9YXN5bmMgZnVuY3Rpb24gTTkocyxlLHQsYSl7bGV0IHI9YXdhaXQgZDV0KHMsZSx0LGEpO2lmKElhKHIpfHxDYShyKSlyZXR1cm4gdTV0KHMsYSxyKSxNOShzLHIsdCxhKTtpZih0eXBlb2YgciE9InN5bWJvbCIpe2lmKGRzKGUpKXthPU9iamVjdC5mcmVlemUoYS5jb25jYXQoZSkpO2ZvcihsZXQgbj0wO248ZS5pdGVtcy5sZW5ndGg7KytuKXtsZXQgbz1hd2FpdCBNOShuLGUuaXRlbXNbbl0sdCxhKTtpZih0eXBlb2Ygbz09Im51bWJlciIpbj1vLTE7ZWxzZXtpZihvPT09a2wpcmV0dXJuIGtsO289PT1wZCYmKGUuaXRlbXMuc3BsaWNlKG4sMSksbi09MSl9fX1lbHNlIGlmKENhKGUpKXthPU9iamVjdC5mcmVlemUoYS5jb25jYXQoZSkpO2xldCBuPWF3YWl0IE05KCJrZXkiLGUua2V5LHQsYSk7aWYobj09PWtsKXJldHVybiBrbDtuPT09cGQmJihlLmtleT1udWxsKTtsZXQgbz1hd2FpdCBNOSgidmFsdWUiLGUudmFsdWUsdCxhKTtpZihvPT09a2wpcmV0dXJuIGtsO289PT1wZCYmKGUudmFsdWU9bnVsbCl9fXJldHVybiByfWZ1bmN0aW9uIGM1dChzKXtyZXR1cm4gdHlwZW9mIHM9PSJvYmplY3QiJiYocy5Db2xsZWN0aW9ufHxzLk5vZGV8fHMuVmFsdWUpP09iamVjdC5hc3NpZ24oe0FsaWFzOnMuTm9kZSxNYXA6cy5Ob2RlLFNjYWxhcjpzLk5vZGUsU2VxOnMuTm9kZX0scy5WYWx1ZSYme01hcDpzLlZhbHVlLFNjYWxhcjpzLlZhbHVlLFNlcTpzLlZhbHVlfSxzLkNvbGxlY3Rpb24mJntNYXA6cy5Db2xsZWN0aW9uLFNlcTpzLkNvbGxlY3Rpb259LHMpOnN9ZnVuY3Rpb24gZDV0KHMsZSx0LGEpe2lmKHR5cGVvZiB0PT0iZnVuY3Rpb24iKXJldHVybiB0KHMsZSxhKTtpZih5bChlKSlyZXR1cm4gdC5NYXA/LihzLGUsYSk7aWYod2woZSkpcmV0dXJuIHQuU2VxPy4ocyxlLGEpO2lmKENhKGUpKXJldHVybiB0LlBhaXI/LihzLGUsYSk7aWYobGEoZSkpcmV0dXJuIHQuU2NhbGFyPy4ocyxlLGEpO2lmKHZsKGUpKXJldHVybiB0LkFsaWFzPy4ocyxlLGEpfWZ1bmN0aW9uIHU1dChzLGUsdCl7bGV0IGE9ZVtlLmxlbmd0aC0xXTtpZihkcyhhKSlhLml0ZW1zW3NdPXQ7ZWxzZSBpZihDYShhKSlzPT09ImtleSI/YS5rZXk9dDphLnZhbHVlPXQ7ZWxzZSBpZih4bChhKSlhLmNvbnRlbnRzPXQ7ZWxzZXtsZXQgcj12bChhKT8iYWxpYXMiOiJzY2FsYXIiO3Rocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlcGxhY2Ugbm9kZSB3aXRoICR7cn0gcGFyZW50YCl9fXZhciBrbCxsNXQscGQseXc9ZygoKT0+e3VzKCk7a2w9U3ltYm9sKCJicmVhayB2aXNpdCIpLGw1dD1TeW1ib2woInNraXAgY2hpbGRyZW4iKSxwZD1TeW1ib2woInJlbW92ZSBub2RlIik7aShIbCwidmlzaXQiKSxIbC5CUkVBSz1rbCxIbC5TS0lQPWw1dCxIbC5SRU1PVkU9cGQ7aShfOSwidmlzaXRfIik7aShmMywidmlzaXRBc3luYyIpLGYzLkJSRUFLPWtsLGYzLlNLSVA9bDV0LGYzLlJFTU9WRT1wZDtpKE05LCJ2aXNpdEFzeW5jXyIpO2koYzV0LCJpbml0VmlzaXRvciIpO2koZDV0LCJjYWxsVmlzaXRvciIpO2kodTV0LCJyZXBsYWNlTm9kZSIpfSk7dmFyIGdBYSxiQWEsRDEsSTRlPWcoKCk9Pnt1cygpO3l3KCk7Z0FhPXsiISI6IiUyMSIsIiwiOiIlMkMiLCJbIjoiJTVCIiwiXSI6IiU1RCIsInsiOiIlN0IiLCJ9IjoiJTdEIn0sYkFhPWkocz0+cy5yZXBsYWNlKC9bISxbXF17fV0vZyxlPT5nQWFbZV0pLCJlc2NhcGVUYWdOYW1lIiksRDE9Y2xhc3Mgc3tzdGF0aWN7aSh0aGlzLCJEaXJlY3RpdmVzIil9Y29uc3RydWN0b3IoZSx0KXt0aGlzLmRvY1N0YXJ0PW51bGwsdGhpcy5kb2NFbmQ9ITEsdGhpcy55YW1sPU9iamVjdC5hc3NpZ24oe30scy5kZWZhdWx0WWFtbCxlKSx0aGlzLnRhZ3M9T2JqZWN0LmFzc2lnbih7fSxzLmRlZmF1bHRUYWdzLHQpfWNsb25lKCl7bGV0IGU9bmV3IHModGhpcy55YW1sLHRoaXMudGFncyk7cmV0dXJuIGUuZG9jU3RhcnQ9dGhpcy5kb2NTdGFydCxlfWF0RG9jdW1lbnQoKXtsZXQgZT1uZXcgcyh0aGlzLnlhbWwsdGhpcy50YWdzKTtzd2l0Y2godGhpcy55YW1sLnZlcnNpb24pe2Nhc2UiMS4xIjp0aGlzLmF0TmV4dERvY3VtZW50PSEwO2JyZWFrO2Nhc2UiMS4yIjp0aGlzLmF0TmV4dERvY3VtZW50PSExLHRoaXMueWFtbD17ZXhwbGljaXQ6cy5kZWZhdWx0WWFtbC5leHBsaWNpdCx2ZXJzaW9uOiIxLjIifSx0aGlzLnRhZ3M9T2JqZWN0LmFzc2lnbih7fSxzLmRlZmF1bHRUYWdzKTticmVha31yZXR1cm4gZX1hZGQoZSx0KXt0aGlzLmF0TmV4dERvY3VtZW50JiYodGhpcy55YW1sPXtleHBsaWNpdDpzLmRlZmF1bHRZYW1sLmV4cGxpY2l0LHZlcnNpb246IjEuMSJ9LHRoaXMudGFncz1PYmplY3QuYXNzaWduKHt9LHMuZGVmYXVsdFRhZ3MpLHRoaXMuYXROZXh0RG9jdW1lbnQ9ITEpO2xldCBhPWUudHJpbSgpLnNwbGl0KC9bIFx0XSsvKSxyPWEuc2hpZnQoKTtzd2l0Y2gocil7Y2FzZSIlVEFHIjp7aWYoYS5sZW5ndGghPT0yJiYodCgwLCIlVEFHIGRpcmVjdGl2ZSBzaG91bGQgY29udGFpbiBleGFjdGx5IHR3byBwYXJ0cyIpLGEubGVuZ3RoPDIpKXJldHVybiExO2xldFtuLG9dPWE7cmV0dXJuIHRoaXMudGFnc1tuXT1vLCEwfWNhc2UiJVlBTUwiOntpZih0aGlzLnlhbWwuZXhwbGljaXQ9ITAsYS5sZW5ndGghPT0xKXJldHVybiB0KDAsIiVZQU1MIGRpcmVjdGl2ZSBzaG91bGQgY29udGFpbiBleGFjdGx5IG9uZSBwYXJ0IiksITE7bGV0W25dPWE7aWYobj09PSIxLjEifHxuPT09IjEuMiIpcmV0dXJuIHRoaXMueWFtbC52ZXJzaW9uPW4sITA7e2xldCBvPS9eXGQrXC5cZCskLy50ZXN0KG4pO3JldHVybiB0KDYsYFVuc3VwcG9ydGVkIFlBTUwgdmVyc2lvbiAke259YCxvKSwhMX19ZGVmYXVsdDpyZXR1cm4gdCgwLGBVbmtub3duIGRpcmVjdGl2ZSAke3J9YCwhMCksITF9fXRhZ05hbWUoZSx0KXtpZihlPT09IiEiKXJldHVybiIhIjtpZihlWzBdIT09IiEiKXJldHVybiB0KGBOb3QgYSB2YWxpZCB0YWc6ICR7ZX1gKSxudWxsO2lmKGVbMV09PT0iPCIpe2xldCBvPWUuc2xpY2UoMiwtMSk7cmV0dXJuIG89PT0iISJ8fG89PT0iISEiPyh0KGBWZXJiYXRpbSB0YWdzIGFyZW4ndCByZXNvbHZlZCwgc28gJHtlfSBpcyBpbnZhbGlkLmApLG51bGwpOihlW2UubGVuZ3RoLTFdIT09Ij4iJiZ0KCJWZXJiYXRpbSB0YWdzIG11c3QgZW5kIHdpdGggYSA+Iiksbyl9bGV0WyxhLHJdPWUubWF0Y2goL14oLiohKShbXiFdKikkL3MpO3J8fHQoYFRoZSAke2V9IHRhZyBoYXMgbm8gc3VmZml4YCk7bGV0IG49dGhpcy50YWdzW2FdO2lmKG4pdHJ5e3JldHVybiBuK2RlY29kZVVSSUNvbXBvbmVudChyKX1jYXRjaChvKXtyZXR1cm4gdChTdHJpbmcobykpLG51bGx9cmV0dXJuIGE9PT0iISI/ZToodChgQ291bGQgbm90IHJlc29sdmUgdGFnOiAke2V9YCksbnVsbCl9dGFnU3RyaW5nKGUpe2ZvcihsZXRbdCxhXW9mIE9iamVjdC5lbnRyaWVzKHRoaXMudGFncykpaWYoZS5zdGFydHNXaXRoKGEpKXJldHVybiB0K2JBYShlLnN1YnN0cmluZyhhLmxlbmd0aCkpO3JldHVybiBlWzBdPT09IiEiP2U6YCE8JHtlfT5gfXRvU3RyaW5nKGUpe2xldCB0PXRoaXMueWFtbC5leHBsaWNpdD9bYCVZQU1MICR7dGhpcy55YW1sLnZlcnNpb258fCIxLjIifWBdOltdLGE9T2JqZWN0LmVudHJpZXModGhpcy50YWdzKSxyO2lmKGUmJmEubGVuZ3RoPjAmJklhKGUuY29udGVudHMpKXtsZXQgbj17fTtIbChlLmNvbnRlbnRzLChvLGwpPT57SWEobCkmJmwudGFnJiYobltsLnRhZ109ITApfSkscj1PYmplY3Qua2V5cyhuKX1lbHNlIHI9W107Zm9yKGxldFtuLG9db2YgYSluPT09IiEhIiYmbz09PSJ0YWc6eWFtbC5vcmcsMjAwMjoifHwoIWV8fHIuc29tZShsPT5sLnN0YXJ0c1dpdGgobykpKSYmdC5wdXNoKGAlVEFHICR7bn0gJHtvfWApO3JldHVybiB0LmpvaW4oYApgKX19O0QxLmRlZmF1bHRZYW1sPXtleHBsaWNpdDohMSx2ZXJzaW9uOiIxLjIifSxEMS5kZWZhdWx0VGFncz17IiEhIjoidGFnOnlhbWwub3JnLDIwMDI6In19KTtmdW5jdGlvbiB3dyhzKXtpZigvW1x4MDAtXHgxOVxzLFtcXXt9XS8udGVzdChzKSl7bGV0IHQ9YEFuY2hvciBtdXN0IG5vdCBjb250YWluIHdoaXRlc3BhY2Ugb3IgY29udHJvbCBjaGFyYWN0ZXJzOiAke0pTT04uc3RyaW5naWZ5KHMpfWA7dGhyb3cgbmV3IEVycm9yKHQpfXJldHVybiEwfWZ1bmN0aW9uIGZzZShzKXtsZXQgZT1uZXcgU2V0O3JldHVybiBIbChzLHtWYWx1ZSh0LGEpe2EuYW5jaG9yJiZlLmFkZChhLmFuY2hvcil9fSksZX1mdW5jdGlvbiBtc2UocyxlKXtmb3IobGV0IHQ9MTs7Kyt0KXtsZXQgYT1gJHtzfSR7dH1gO2lmKCFlLmhhcyhhKSlyZXR1cm4gYX19ZnVuY3Rpb24gQTRlKHMsZSl7bGV0IHQ9W10sYT1uZXcgTWFwLHI9bnVsbDtyZXR1cm57b25BbmNob3I6aShuPT57dC5wdXNoKG4pLHI/PyhyPWZzZShzKSk7bGV0IG89bXNlKGUscik7cmV0dXJuIHIuYWRkKG8pLG99LCJvbkFuY2hvciIpLHNldEFuY2hvcnM6aSgoKT0+e2ZvcihsZXQgbiBvZiB0KXtsZXQgbz1hLmdldChuKTtpZih0eXBlb2Ygbz09Im9iamVjdCImJm8uYW5jaG9yJiYobGEoby5ub2RlKXx8ZHMoby5ub2RlKSkpby5ub2RlLmFuY2hvcj1vLmFuY2hvcjtlbHNle2xldCBsPW5ldyBFcnJvcigiRmFpbGVkIHRvIHJlc29sdmUgcmVwZWF0ZWQgb2JqZWN0ICh0aGlzIHNob3VsZCBub3QgaGFwcGVuKSIpO3Rocm93IGwuc291cmNlPW4sbH19fSwic2V0QW5jaG9ycyIpLHNvdXJjZU9iamVjdHM6YX19dmFyIGdzZT1nKCgpPT57dXMoKTt5dygpO2kod3csImFuY2hvcklzVmFsaWQiKTtpKGZzZSwiYW5jaG9yTmFtZXMiKTtpKG1zZSwiZmluZE5ld0FuY2hvciIpO2koQTRlLCJjcmVhdGVOb2RlQW5jaG9ycyIpfSk7ZnVuY3Rpb24gazAocyxlLHQsYSl7aWYoYSYmdHlwZW9mIGE9PSJvYmplY3QiKWlmKEFycmF5LmlzQXJyYXkoYSkpZm9yKGxldCByPTAsbj1hLmxlbmd0aDtyPG47KytyKXtsZXQgbz1hW3JdLGw9azAocyxhLFN0cmluZyhyKSxvKTtsPT09dm9pZCAwP2RlbGV0ZSBhW3JdOmwhPT1vJiYoYVtyXT1sKX1lbHNlIGlmKGEgaW5zdGFuY2VvZiBNYXApZm9yKGxldCByIG9mIEFycmF5LmZyb20oYS5rZXlzKCkpKXtsZXQgbj1hLmdldChyKSxvPWswKHMsYSxyLG4pO289PT12b2lkIDA/YS5kZWxldGUocik6byE9PW4mJmEuc2V0KHIsbyl9ZWxzZSBpZihhIGluc3RhbmNlb2YgU2V0KWZvcihsZXQgciBvZiBBcnJheS5mcm9tKGEpKXtsZXQgbj1rMChzLGEscixyKTtuPT09dm9pZCAwP2EuZGVsZXRlKHIpOm4hPT1yJiYoYS5kZWxldGUociksYS5hZGQobikpfWVsc2UgZm9yKGxldFtyLG5db2YgT2JqZWN0LmVudHJpZXMoYSkpe2xldCBvPWswKHMsYSxyLG4pO289PT12b2lkIDA/ZGVsZXRlIGFbcl06byE9PW4mJihhW3JdPW8pfXJldHVybiBzLmNhbGwoZSx0LGEpfXZhciBONGU9ZygoKT0+e2koazAsImFwcGx5UmV2aXZlciIpfSk7ZnVuY3Rpb24gU3IocyxlLHQpe2lmKEFycmF5LmlzQXJyYXkocykpcmV0dXJuIHMubWFwKChhLHIpPT5TcihhLFN0cmluZyhyKSx0KSk7aWYocyYmdHlwZW9mIHMudG9KU09OPT0iZnVuY3Rpb24iKXtpZighdHx8IXh3KHMpKXJldHVybiBzLnRvSlNPTihlLHQpO2xldCBhPXthbGlhc0NvdW50OjAsY291bnQ6MSxyZXM6dm9pZCAwfTt0LmFuY2hvcnMuc2V0KHMsYSksdC5vbkNyZWF0ZT1uPT57YS5yZXM9bixkZWxldGUgdC5vbkNyZWF0ZX07bGV0IHI9cy50b0pTT04oZSx0KTtyZXR1cm4gdC5vbkNyZWF0ZSYmdC5vbkNyZWF0ZShyKSxyfXJldHVybiB0eXBlb2Ygcz09ImJpZ2ludCImJiF0Py5rZWVwP051bWJlcihzKTpzfXZhciBBcD1nKCgpPT57dXMoKTtpKFNyLCJ0b0pTIil9KTt2YXIgUzAsYnNlPWcoKCk9PntONGUoKTt1cygpO0FwKCk7UzA9Y2xhc3N7c3RhdGlje2kodGhpcywiTm9kZUJhc2UiKX1jb25zdHJ1Y3RvcihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxKbyx7dmFsdWU6ZX0pfWNsb25lKCl7bGV0IGU9T2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcyksT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModGhpcykpO3JldHVybiB0aGlzLnJhbmdlJiYoZS5yYW5nZT10aGlzLnJhbmdlLnNsaWNlKCkpLGV9dG9KUyhlLHttYXBBc01hcDp0LG1heEFsaWFzQ291bnQ6YSxvbkFuY2hvcjpyLHJldml2ZXI6bn09e30pe2lmKCF4bChlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBIGRvY3VtZW50IGFyZ3VtZW50IGlzIHJlcXVpcmVkIik7bGV0IG89e2FuY2hvcnM6bmV3IE1hcCxkb2M6ZSxrZWVwOiEwLG1hcEFzTWFwOnQ9PT0hMCxtYXBLZXlXYXJuZWQ6ITEsbWF4QWxpYXNDb3VudDp0eXBlb2YgYT09Im51bWJlciI/YToxMDB9LGw9U3IodGhpcywiIixvKTtpZih0eXBlb2Ygcj09ImZ1bmN0aW9uIilmb3IobGV0e2NvdW50OnAscmVzOmR9b2Ygby5hbmNob3JzLnZhbHVlcygpKXIoZCxwKTtyZXR1cm4gdHlwZW9mIG49PSJmdW5jdGlvbiI/azAobix7IiI6bH0sIiIsbCk6bH19fSk7ZnVuY3Rpb24gdnNlKHMsZSx0KXtpZih2bChlKSl7bGV0IGE9ZS5yZXNvbHZlKHMpLHI9dCYmYSYmdC5nZXQoYSk7cmV0dXJuIHI/ci5jb3VudCpyLmFsaWFzQ291bnQ6MH1lbHNlIGlmKGRzKGUpKXtsZXQgYT0wO2ZvcihsZXQgciBvZiBlLml0ZW1zKXtsZXQgbj12c2UocyxyLHQpO24+YSYmKGE9bil9cmV0dXJuIGF9ZWxzZSBpZihDYShlKSl7bGV0IGE9dnNlKHMsZS5rZXksdCkscj12c2UocyxlLnZhbHVlLHQpO3JldHVybiBNYXRoLm1heChhLHIpfXJldHVybiAxfXZhciBDYyxrdz1nKCgpPT57Z3NlKCk7eXcoKTt1cygpO2JzZSgpO0FwKCk7Q2M9Y2xhc3MgZXh0ZW5kcyBTMHtzdGF0aWN7aSh0aGlzLCJBbGlhcyIpfWNvbnN0cnVjdG9yKGUpe3N1cGVyKGJ3KSx0aGlzLnNvdXJjZT1lLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJ0YWciLHtzZXQoKXt0aHJvdyBuZXcgRXJyb3IoIkFsaWFzIG5vZGVzIGNhbm5vdCBoYXZlIHRhZ3MiKX19KX1yZXNvbHZlKGUsdCl7aWYodD8ubWF4QWxpYXNDb3VudD09PTApdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJBbGlhcyByZXNvbHV0aW9uIGlzIGRpc2FibGVkIik7bGV0IGE7dD8uYWxpYXNSZXNvbHZlQ2FjaGU/YT10LmFsaWFzUmVzb2x2ZUNhY2hlOihhPVtdLEhsKGUse05vZGU6aSgobixvKT0+eyh2bChvKXx8eHcobykpJiZhLnB1c2gobyl9LCJOb2RlIil9KSx0JiYodC5hbGlhc1Jlc29sdmVDYWNoZT1hKSk7bGV0IHI7Zm9yKGxldCBuIG9mIGEpe2lmKG49PT10aGlzKWJyZWFrO24uYW5jaG9yPT09dGhpcy5zb3VyY2UmJihyPW4pfXJldHVybiByfXRvSlNPTihlLHQpe2lmKCF0KXJldHVybntzb3VyY2U6dGhpcy5zb3VyY2V9O2xldHthbmNob3JzOmEsZG9jOnIsbWF4QWxpYXNDb3VudDpufT10LG89dGhpcy5yZXNvbHZlKHIsdCk7aWYoIW8pe2xldCBwPWBVbnJlc29sdmVkIGFsaWFzICh0aGUgYW5jaG9yIG11c3QgYmUgc2V0IGJlZm9yZSB0aGUgYWxpYXMpOiAke3RoaXMuc291cmNlfWA7dGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKHApfWxldCBsPWEuZ2V0KG8pO2lmKGx8fChTcihvLG51bGwsdCksbD1hLmdldChvKSksbD8ucmVzPT09dm9pZCAwKXtsZXQgcD0iVGhpcyBzaG91bGQgbm90IGhhcHBlbjogQWxpYXMgYW5jaG9yIHdhcyBub3QgcmVzb2x2ZWQ/Ijt0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IocCl9aWYobj49MCYmKGwuY291bnQrPTEsbC5hbGlhc0NvdW50PT09MCYmKGwuYWxpYXNDb3VudD12c2UocixvLGEpKSxsLmNvdW50KmwuYWxpYXNDb3VudD5uKSl7bGV0IHA9IkV4Y2Vzc2l2ZSBhbGlhcyBjb3VudCBpbmRpY2F0ZXMgYSByZXNvdXJjZSBleGhhdXN0aW9uIGF0dGFjayI7dGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKHApfXJldHVybiBsLnJlc310b1N0cmluZyhlLHQsYSl7bGV0IHI9YCoke3RoaXMuc291cmNlfWA7aWYoZSl7aWYod3codGhpcy5zb3VyY2UpLGUub3B0aW9ucy52ZXJpZnlBbGlhc09yZGVyJiYhZS5hbmNob3JzLmhhcyh0aGlzLnNvdXJjZSkpe2xldCBuPWBVbnJlc29sdmVkIGFsaWFzICh0aGUgYW5jaG9yIG11c3QgYmUgc2V0IGJlZm9yZSB0aGUgYWxpYXMpOiAke3RoaXMuc291cmNlfWA7dGhyb3cgbmV3IEVycm9yKG4pfWlmKGUuaW1wbGljaXRLZXkpcmV0dXJuYCR7cn0gYH1yZXR1cm4gcn19O2kodnNlLCJnZXRBbGlhc0NvdW50Iil9KTt2YXIgU3csTHQsX3I9ZygoKT0+e3VzKCk7YnNlKCk7QXAoKTtTdz1pKHM9PiFzfHx0eXBlb2YgcyE9ImZ1bmN0aW9uIiYmdHlwZW9mIHMhPSJvYmplY3QiLCJpc1NjYWxhclZhbHVlIiksTHQ9Y2xhc3MgZXh0ZW5kcyBTMHtzdGF0aWN7aSh0aGlzLCJTY2FsYXIiKX1jb25zdHJ1Y3RvcihlKXtzdXBlcihibCksdGhpcy52YWx1ZT1lfXRvSlNPTihlLHQpe3JldHVybiB0Py5rZWVwP3RoaXMudmFsdWU6U3IodGhpcy52YWx1ZSxlLHQpfXRvU3RyaW5nKCl7cmV0dXJuIFN0cmluZyh0aGlzLnZhbHVlKX19O0x0LkJMT0NLX0ZPTERFRD0iQkxPQ0tfRk9MREVEIixMdC5CTE9DS19MSVRFUkFMPSJCTE9DS19MSVRFUkFMIixMdC5QTEFJTj0iUExBSU4iLEx0LlFVT1RFX0RPVUJMRT0iUVVPVEVfRE9VQkxFIixMdC5RVU9URV9TSU5HTEU9IlFVT1RFX1NJTkdMRSJ9KTtmdW5jdGlvbiB4QWEocyxlLHQpe2lmKGUpe2xldCBhPXQuZmlsdGVyKG49Pm4udGFnPT09ZSkscj1hLmZpbmQobj0+IW4uZm9ybWF0KT8/YVswXTtpZighcil0aHJvdyBuZXcgRXJyb3IoYFRhZyAke2V9IG5vdCBmb3VuZGApO3JldHVybiByfXJldHVybiB0LmZpbmQoYT0+YS5pZGVudGlmeT8uKHMpJiYhYS5mb3JtYXQpfWZ1bmN0aW9uIGhkKHMsZSx0KXtpZih4bChzKSYmKHM9cy5jb250ZW50cyksSWEocykpcmV0dXJuIHM7aWYoQ2Eocykpe2xldCBjPXQuc2NoZW1hW3pjXS5jcmVhdGVOb2RlPy4odC5zY2hlbWEsbnVsbCx0KTtyZXR1cm4gYy5pdGVtcy5wdXNoKHMpLGN9KHMgaW5zdGFuY2VvZiBTdHJpbmd8fHMgaW5zdGFuY2VvZiBOdW1iZXJ8fHMgaW5zdGFuY2VvZiBCb29sZWFufHx0eXBlb2YgQmlnSW50PCJ1IiYmcyBpbnN0YW5jZW9mIEJpZ0ludCkmJihzPXMudmFsdWVPZigpKTtsZXR7YWxpYXNEdXBsaWNhdGVPYmplY3RzOmEsb25BbmNob3I6cixvblRhZ09iajpuLHNjaGVtYTpvLHNvdXJjZU9iamVjdHM6bH09dCxwO2lmKGEmJnMmJnR5cGVvZiBzPT0ib2JqZWN0Iil7aWYocD1sLmdldChzKSxwKXJldHVybiBwLmFuY2hvcj8/KHAuYW5jaG9yPXIocykpLG5ldyBDYyhwLmFuY2hvcik7cD17YW5jaG9yOm51bGwsbm9kZTpudWxsfSxsLnNldChzLHApfWU/LnN0YXJ0c1dpdGgoIiEhIikmJihlPXZBYStlLnNsaWNlKDIpKTtsZXQgZD14QWEocyxlLG8udGFncyk7aWYoIWQpe2lmKHMmJnR5cGVvZiBzLnRvSlNPTj09ImZ1bmN0aW9uIiYmKHM9cy50b0pTT04oKSksIXN8fHR5cGVvZiBzIT0ib2JqZWN0Iil7bGV0IGM9bmV3IEx0KHMpO3JldHVybiBwJiYocC5ub2RlPWMpLGN9ZD1zIGluc3RhbmNlb2YgTWFwP29bemNdOlN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3Qocyk/b1t1ZF06b1t6Y119biYmKG4oZCksZGVsZXRlIHQub25UYWdPYmopO2xldCB1PWQ/LmNyZWF0ZU5vZGU/ZC5jcmVhdGVOb2RlKHQuc2NoZW1hLHMsdCk6dHlwZW9mIGQ/Lm5vZGVDbGFzcz8uZnJvbT09ImZ1bmN0aW9uIj9kLm5vZGVDbGFzcy5mcm9tKHQuc2NoZW1hLHMsdCk6bmV3IEx0KHMpO3JldHVybiBlP3UudGFnPWU6ZC5kZWZhdWx0fHwodS50YWc9ZC50YWcpLHAmJihwLm5vZGU9dSksdX12YXIgdkFhLF93PWcoKCk9PntrdygpO3VzKCk7X3IoKTt2QWE9InRhZzp5YW1sLm9yZywyMDAyOiI7aSh4QWEsImZpbmRUYWdPYmplY3QiKTtpKGhkLCJjcmVhdGVOb2RlIil9KTtmdW5jdGlvbiB6OShzLGUsdCl7bGV0IGE9dDtmb3IobGV0IHI9ZS5sZW5ndGgtMTtyPj0wOy0tcil7bGV0IG49ZVtyXTtpZih0eXBlb2Ygbj09Im51bWJlciImJk51bWJlci5pc0ludGVnZXIobikmJm4+PTApe2xldCBvPVtdO29bbl09YSxhPW99ZWxzZSBhPW5ldyBNYXAoW1tuLGFdXSl9cmV0dXJuIGhkKGEsdm9pZCAwLHthbGlhc0R1cGxpY2F0ZU9iamVjdHM6ITEsa2VlcFVuZGVmaW5lZDohMSxvbkFuY2hvcjppKCgpPT57dGhyb3cgbmV3IEVycm9yKCJUaGlzIHNob3VsZCBub3QgaGFwcGVuLCBwbGVhc2UgcmVwb3J0IGEgYnVnLiIpfSwib25BbmNob3IiKSxzY2hlbWE6cyxzb3VyY2VPYmplY3RzOm5ldyBNYXB9KX12YXIgZzMsbTMseHNlPWcoKCk9PntfdygpO3VzKCk7YnNlKCk7aSh6OSwiY29sbGVjdGlvbkZyb21QYXRoIik7ZzM9aShzPT5zPT1udWxsfHx0eXBlb2Ygcz09Im9iamVjdCImJiEhc1tTeW1ib2wuaXRlcmF0b3JdKCkubmV4dCgpLmRvbmUsImlzRW1wdHlQYXRoIiksbTM9Y2xhc3MgZXh0ZW5kcyBTMHtzdGF0aWN7aSh0aGlzLCJDb2xsZWN0aW9uIil9Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywic2NoZW1hIix7dmFsdWU6dCxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMH0pfWNsb25lKGUpe2xldCB0PU9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHRoaXMpKTtyZXR1cm4gZSYmKHQuc2NoZW1hPWUpLHQuaXRlbXM9dC5pdGVtcy5tYXAoYT0+SWEoYSl8fENhKGEpP2EuY2xvbmUoZSk6YSksdGhpcy5yYW5nZSYmKHQucmFuZ2U9dGhpcy5yYW5nZS5zbGljZSgpKSx0fWFkZEluKGUsdCl7aWYoZzMoZSkpdGhpcy5hZGQodCk7ZWxzZXtsZXRbYSwuLi5yXT1lLG49dGhpcy5nZXQoYSwhMCk7aWYoZHMobikpbi5hZGRJbihyLHQpO2Vsc2UgaWYobj09PXZvaWQgMCYmdGhpcy5zY2hlbWEpdGhpcy5zZXQoYSx6OSh0aGlzLnNjaGVtYSxyLHQpKTtlbHNlIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgWUFNTCBjb2xsZWN0aW9uIGF0ICR7YX0uIFJlbWFpbmluZyBwYXRoOiAke3J9YCl9fWRlbGV0ZUluKGUpe2xldFt0LC4uLmFdPWU7aWYoYS5sZW5ndGg9PT0wKXJldHVybiB0aGlzLmRlbGV0ZSh0KTtsZXQgcj10aGlzLmdldCh0LCEwKTtpZihkcyhyKSlyZXR1cm4gci5kZWxldGVJbihhKTt0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIFlBTUwgY29sbGVjdGlvbiBhdCAke3R9LiBSZW1haW5pbmcgcGF0aDogJHthfWApfWdldEluKGUsdCl7bGV0W2EsLi4ucl09ZSxuPXRoaXMuZ2V0KGEsITApO3JldHVybiByLmxlbmd0aD09PTA/IXQmJmxhKG4pP24udmFsdWU6bjpkcyhuKT9uLmdldEluKHIsdCk6dm9pZCAwfWhhc0FsbE51bGxWYWx1ZXMoZSl7cmV0dXJuIHRoaXMuaXRlbXMuZXZlcnkodD0+e2lmKCFDYSh0KSlyZXR1cm4hMTtsZXQgYT10LnZhbHVlO3JldHVybiBhPT1udWxsfHxlJiZsYShhKSYmYS52YWx1ZT09bnVsbCYmIWEuY29tbWVudEJlZm9yZSYmIWEuY29tbWVudCYmIWEudGFnfSl9aGFzSW4oZSl7bGV0W3QsLi4uYV09ZTtpZihhLmxlbmd0aD09PTApcmV0dXJuIHRoaXMuaGFzKHQpO2xldCByPXRoaXMuZ2V0KHQsITApO3JldHVybiBkcyhyKT9yLmhhc0luKGEpOiExfXNldEluKGUsdCl7bGV0W2EsLi4ucl09ZTtpZihyLmxlbmd0aD09PTApdGhpcy5zZXQoYSx0KTtlbHNle2xldCBuPXRoaXMuZ2V0KGEsITApO2lmKGRzKG4pKW4uc2V0SW4ocix0KTtlbHNlIGlmKG49PT12b2lkIDAmJnRoaXMuc2NoZW1hKXRoaXMuc2V0KGEsejkodGhpcy5zY2hlbWEscix0KSk7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIFlBTUwgY29sbGVjdGlvbiBhdCAke2F9LiBSZW1haW5pbmcgcGF0aDogJHtyfWApfX19fSk7ZnVuY3Rpb24gcWwocyxlKXtyZXR1cm4vXlxuKyQvLnRlc3Qocyk/cy5zdWJzdHJpbmcoMSk6ZT9zLnJlcGxhY2UoL14oPyEgKiQpL2dtLGUpOnN9dmFyIFI0ZSxMMSxNdz1nKCgpPT57UjRlPWkocz0+cy5yZXBsYWNlKC9eKD8hJCkoPzogJCk/L2dtLCIjIiksInN0cmluZ2lmeUNvbW1lbnQiKTtpKHFsLCJpbmRlbnRDb21tZW50Iik7TDE9aSgocyxlLHQpPT5zLmVuZHNXaXRoKGAKYCk/cWwodCxlKTp0LmluY2x1ZGVzKGAKYCk/YApgK3FsKHQsZSk6KHMuZW5kc1dpdGgoIiAiKT8iIjoiICIpK3QsImxpbmVDb21tZW50Iil9KTtmdW5jdGlvbiBUOShzLGUsdD0iZmxvdyIse2luZGVudEF0U3RhcnQ6YSxsaW5lV2lkdGg6cj04MCxtaW5Db250ZW50V2lkdGg6bj0yMCxvbkZvbGQ6byxvbk92ZXJmbG93Omx9PXt9KXtpZighcnx8cjwwKXJldHVybiBzO3I8biYmKG49MCk7bGV0IHA9TWF0aC5tYXgoMStuLDErci1lLmxlbmd0aCk7aWYocy5sZW5ndGg8PXApcmV0dXJuIHM7bGV0IGQ9W10sdT17fSxjPXItZS5sZW5ndGg7dHlwZW9mIGE9PSJudW1iZXIiJiYoYT5yLU1hdGgubWF4KDIsbik/ZC5wdXNoKDApOmM9ci1hKTtsZXQgYix2LHg9ITEsbT0tMSxmPS0xLHk9LTE7dD09PXp3JiYobT1wNXQocyxtLGUubGVuZ3RoKSxtIT09LTEmJihjPW0rcCkpO2ZvcihsZXQgejt6PXNbbSs9MV07KXtpZih0PT09QzkmJno9PT0iXFwiKXtzd2l0Y2goZj1tLHNbbSsxXSl7Y2FzZSJ4IjptKz0zO2JyZWFrO2Nhc2UidSI6bSs9NTticmVhaztjYXNlIlUiOm0rPTk7YnJlYWs7ZGVmYXVsdDptKz0xfXk9bX1pZih6PT09YApgKXQ9PT16dyYmKG09cDV0KHMsbSxlLmxlbmd0aCkpLGM9bStlLmxlbmd0aCtwLGI9dm9pZCAwO2Vsc2V7aWYoej09PSIgIiYmdiYmdiE9PSIgIiYmdiE9PWAKYCYmdiE9PSIJIil7bGV0IE49c1ttKzFdO04mJk4hPT0iICImJk4hPT1gCmAmJk4hPT0iCSImJihiPW0pfWlmKG0+PWMpaWYoYilkLnB1c2goYiksYz1iK3AsYj12b2lkIDA7ZWxzZSBpZih0PT09Qzkpe2Zvcig7dj09PSIgInx8dj09PSIJIjspdj16LHo9c1ttKz0xXSx4PSEwO2xldCBOPW0+eSsxP20tMjpmLTE7aWYodVtOXSlyZXR1cm4gcztkLnB1c2goTiksdVtOXT0hMCxjPU4rcCxiPXZvaWQgMH1lbHNlIHg9ITB9dj16fWlmKHgmJmwmJmwoKSxkLmxlbmd0aD09PTApcmV0dXJuIHM7byYmbygpO2xldCBNPXMuc2xpY2UoMCxkWzBdKTtmb3IobGV0IHo9MDt6PGQubGVuZ3RoOysreil7bGV0IE49ZFt6XSxDPWRbeisxXXx8cy5sZW5ndGg7Tj09PTA/TT1gCiR7ZX0ke3Muc2xpY2UoMCxDKX1gOih0PT09QzkmJnVbTl0mJihNKz1gJHtzW05dfVxcYCksTSs9YAoke2V9JHtzLnNsaWNlKE4rMSxDKX1gKX1yZXR1cm4gTX1mdW5jdGlvbiBwNXQocyxlLHQpe2xldCBhPWUscj1lKzEsbj1zW3JdO2Zvcig7bj09PSIgInx8bj09PSIJIjspaWYoZTxyK3Qpbj1zWysrZV07ZWxzZXtkbyBuPXNbKytlXTt3aGlsZShuJiZuIT09YApgKTthPWUscj1lKzEsbj1zW3JdfXJldHVybiBhfXZhciB5c2UsencsQzksaDV0PWcoKCk9Pnt5c2U9ImZsb3ciLHp3PSJibG9jayIsQzk9InF1b3RlZCI7aShUOSwiZm9sZEZsb3dMaW5lcyIpO2kocDV0LCJjb25zdW1lTW9yZUluZGVudGVkTGluZXMiKX0pO2Z1bmN0aW9uIHlBYShzLGUsdCl7aWYoIWV8fGU8MClyZXR1cm4hMTtsZXQgYT1lLXQscj1zLmxlbmd0aDtpZihyPD1hKXJldHVybiExO2ZvcihsZXQgbj0wLG89MDtuPHI7KytuKWlmKHNbbl09PT1gCmApe2lmKG4tbz5hKXJldHVybiEwO2lmKG89bisxLHItbzw9YSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBDdyhzLGUpe2xldCB0PUpTT04uc3RyaW5naWZ5KHMpO2lmKGUub3B0aW9ucy5kb3VibGVRdW90ZWRBc0pTT04pcmV0dXJuIHQ7bGV0e2ltcGxpY2l0S2V5OmF9PWUscj1lLm9wdGlvbnMuZG91YmxlUXVvdGVkTWluTXVsdGlMaW5lTGVuZ3RoLG49ZS5pbmRlbnR8fChrc2Uocyk/IiAgIjoiIiksbz0iIixsPTA7Zm9yKGxldCBwPTAsZD10W3BdO2Q7ZD10WysrcF0paWYoZD09PSIgIiYmdFtwKzFdPT09IlxcIiYmdFtwKzJdPT09Im4iJiYobys9dC5zbGljZShsLHApKyJcXCAiLHArPTEsbD1wLGQ9IlxcIiksZD09PSJcXCIpc3dpdGNoKHRbcCsxXSl7Y2FzZSJ1Ijp7bys9dC5zbGljZShsLHApO2xldCB1PXQuc3Vic3RyKHArMiw0KTtzd2l0Y2godSl7Y2FzZSIwMDAwIjpvKz0iXFwwIjticmVhaztjYXNlIjAwMDciOm8rPSJcXGEiO2JyZWFrO2Nhc2UiMDAwYiI6bys9IlxcdiI7YnJlYWs7Y2FzZSIwMDFiIjpvKz0iXFxlIjticmVhaztjYXNlIjAwODUiOm8rPSJcXE4iO2JyZWFrO2Nhc2UiMDBhMCI6bys9IlxcXyI7YnJlYWs7Y2FzZSIyMDI4IjpvKz0iXFxMIjticmVhaztjYXNlIjIwMjkiOm8rPSJcXFAiO2JyZWFrO2RlZmF1bHQ6dS5zdWJzdHIoMCwyKT09PSIwMCI/bys9IlxceCIrdS5zdWJzdHIoMik6bys9dC5zdWJzdHIocCw2KX1wKz01LGw9cCsxfWJyZWFrO2Nhc2UibiI6aWYoYXx8dFtwKzJdPT09JyInfHx0Lmxlbmd0aDxyKXArPTE7ZWxzZXtmb3Iobys9dC5zbGljZShsLHApK2AKCmA7dFtwKzJdPT09IlxcIiYmdFtwKzNdPT09Im4iJiZ0W3ArNF0hPT0nIic7KW8rPWAKYCxwKz0yO28rPW4sdFtwKzJdPT09IiAiJiYobys9IlxcIikscCs9MSxsPXArMX1icmVhaztkZWZhdWx0OnArPTF9cmV0dXJuIG89bD9vK3Quc2xpY2UobCk6dCxhP286VDkobyxuLEM5LHdzZShlLCExKSl9ZnVuY3Rpb24gTzRlKHMsZSl7aWYoZS5vcHRpb25zLnNpbmdsZVF1b3RlPT09ITF8fGUuaW1wbGljaXRLZXkmJnMuaW5jbHVkZXMoYApgKXx8L1sgXHRdXG58XG5bIFx0XS8udGVzdChzKSlyZXR1cm4gQ3cocyxlKTtsZXQgdD1lLmluZGVudHx8KGtzZShzKT8iICAiOiIiKSxhPSInIitzLnJlcGxhY2UoLycvZywiJyciKS5yZXBsYWNlKC9cbisvZyxgJCYKJHt0fWApKyInIjtyZXR1cm4gZS5pbXBsaWNpdEtleT9hOlQ5KGEsdCx5c2Usd3NlKGUsITEpKX1mdW5jdGlvbiAkOShzLGUpe2xldHtzaW5nbGVRdW90ZTp0fT1lLm9wdGlvbnMsYTtpZih0PT09ITEpYT1DdztlbHNle2xldCByPXMuaW5jbHVkZXMoJyInKSxuPXMuaW5jbHVkZXMoIiciKTtyJiYhbj9hPU80ZTpuJiYhcj9hPUN3OmE9dD9PNGU6Q3d9cmV0dXJuIGEocyxlKX1mdW5jdGlvbiBTc2Uoe2NvbW1lbnQ6cyx0eXBlOmUsdmFsdWU6dH0sYSxyLG4pe2xldHtibG9ja1F1b3RlOm8sY29tbWVudFN0cmluZzpsLGxpbmVXaWR0aDpwfT1hLm9wdGlvbnM7aWYoIW98fC9cbltcdCBdKyQvLnRlc3QodCkpcmV0dXJuICQ5KHQsYSk7bGV0IGQ9YS5pbmRlbnR8fChhLmZvcmNlQmxvY2tJbmRlbnR8fGtzZSh0KT8iICAiOiIiKSx1PW89PT0ibGl0ZXJhbCI/ITA6bz09PSJmb2xkZWQifHxlPT09THQuQkxPQ0tfRk9MREVEPyExOmU9PT1MdC5CTE9DS19MSVRFUkFMPyEwOiF5QWEodCxwLGQubGVuZ3RoKTtpZighdClyZXR1cm4gdT9gfApgOmA+CmA7bGV0IGMsYjtmb3IoYj10Lmxlbmd0aDtiPjA7LS1iKXtsZXQgQz10W2ItMV07aWYoQyE9PWAKYCYmQyE9PSIJIiYmQyE9PSIgIilicmVha31sZXQgdj10LnN1YnN0cmluZyhiKSx4PXYuaW5kZXhPZihgCmApO3g9PT0tMT9jPSItIjp0PT09dnx8eCE9PXYubGVuZ3RoLTE/KGM9IisiLG4mJm4oKSk6Yz0iIix2JiYodD10LnNsaWNlKDAsLXYubGVuZ3RoKSx2W3YubGVuZ3RoLTFdPT09YApgJiYodj12LnNsaWNlKDAsLTEpKSx2PXYucmVwbGFjZShGNGUsYCQmJHtkfWApKTtsZXQgbT0hMSxmLHk9LTE7Zm9yKGY9MDtmPHQubGVuZ3RoOysrZil7bGV0IEM9dFtmXTtpZihDPT09IiAiKW09ITA7ZWxzZSBpZihDPT09YApgKXk9ZjtlbHNlIGJyZWFrfWxldCBNPXQuc3Vic3RyaW5nKDAseTxmP3krMTpmKTtNJiYodD10LnN1YnN0cmluZyhNLmxlbmd0aCksTT1NLnJlcGxhY2UoL1xuKy9nLGAkJiR7ZH1gKSk7bGV0IE49KG0/ZD8iMiI6IjEiOiIiKStjO2lmKHMmJihOKz0iICIrbChzLnJlcGxhY2UoLyA/W1xyXG5dKy9nLCIgIikpLHImJnIoKSksIXUpe2xldCBDPXQucmVwbGFjZSgvXG4rL2csYAokJmApLnJlcGxhY2UoLyg/Ol58XG4pKFtcdCBdLiopKD86KFtcblx0IF0qKVxuKD8hW1xuXHQgXSkpPy9nLCIkMSQyIikucmVwbGFjZSgvXG4rL2csYCQmJHtkfWApLF89ITEsTz13c2UoYSwhMCk7byE9PSJmb2xkZWQiJiZlIT09THQuQkxPQ0tfRk9MREVEJiYoTy5vbk92ZXJmbG93PSgpPT57Xz0hMH0pO2xldCAkPVQ5KGAke019JHtDfSR7dn1gLGQsencsTyk7aWYoIV8pcmV0dXJuYD4ke059CiR7ZH0keyR9YH1yZXR1cm4gdD10LnJlcGxhY2UoL1xuKy9nLGAkJiR7ZH1gKSxgfCR7Tn0KJHtkfSR7TX0ke3R9JHt2fWB9ZnVuY3Rpb24gd0FhKHMsZSx0LGEpe2xldHt0eXBlOnIsdmFsdWU6bn09cyx7YWN0dWFsU3RyaW5nOm8saW1wbGljaXRLZXk6bCxpbmRlbnQ6cCxpbmRlbnRTdGVwOmQsaW5GbG93OnV9PWU7aWYobCYmbi5pbmNsdWRlcyhgCmApfHx1JiYvW1tcXXt9LF0vLnRlc3QobikpcmV0dXJuICQ5KG4sZSk7aWYoL15bXG5cdCAsW1xde30jJiohfD4nIiVAYF18Xls/LV0kfF5bPy1dWyBcdF18W1xuOl1bIFx0XXxbIFx0XVxufFtcblx0IF0jfFtcblx0IDpdJC8udGVzdChuKSlyZXR1cm4gbHx8dXx8IW4uaW5jbHVkZXMoYApgKT8kOShuLGUpOlNzZShzLGUsdCxhKTtpZighbCYmIXUmJnIhPT1MdC5QTEFJTiYmbi5pbmNsdWRlcyhgCmApKXJldHVybiBTc2UocyxlLHQsYSk7aWYoa3NlKG4pKXtpZihwPT09IiIpcmV0dXJuIGUuZm9yY2VCbG9ja0luZGVudD0hMCxTc2UocyxlLHQsYSk7aWYobCYmcD09PWQpcmV0dXJuICQ5KG4sZSl9bGV0IGM9bi5yZXBsYWNlKC9cbisvZyxgJCYKJHtwfWApO2lmKG8pe2xldCBiPWkobT0+bS5kZWZhdWx0JiZtLnRhZyE9PSJ0YWc6eWFtbC5vcmcsMjAwMjpzdHIiJiZtLnRlc3Q/LnRlc3QoYyksInRlc3QiKSx7Y29tcGF0OnYsdGFnczp4fT1lLmRvYy5zY2hlbWE7aWYoeC5zb21lKGIpfHx2Py5zb21lKGIpKXJldHVybiAkOShuLGUpfXJldHVybiBsP2M6VDkoYyxwLHlzZSx3c2UoZSwhMSkpfWZ1bmN0aW9uIGZkKHMsZSx0LGEpe2xldHtpbXBsaWNpdEtleTpyLGluRmxvdzpufT1lLG89dHlwZW9mIHMudmFsdWU9PSJzdHJpbmciP3M6T2JqZWN0LmFzc2lnbih7fSxzLHt2YWx1ZTpTdHJpbmcocy52YWx1ZSl9KSx7dHlwZTpsfT1zO2whPT1MdC5RVU9URV9ET1VCTEUmJi9bXHgwMC1ceDA4XHgwYi1ceDFmXHg3Zi1ceDlmXHV7RDgwMH0tXHV7REZGRn1dL3UudGVzdChvLnZhbHVlKSYmKGw9THQuUVVPVEVfRE9VQkxFKTtsZXQgcD1pKHU9Pntzd2l0Y2godSl7Y2FzZSBMdC5CTE9DS19GT0xERUQ6Y2FzZSBMdC5CTE9DS19MSVRFUkFMOnJldHVybiByfHxuPyQ5KG8udmFsdWUsZSk6U3NlKG8sZSx0LGEpO2Nhc2UgTHQuUVVPVEVfRE9VQkxFOnJldHVybiBDdyhvLnZhbHVlLGUpO2Nhc2UgTHQuUVVPVEVfU0lOR0xFOnJldHVybiBPNGUoby52YWx1ZSxlKTtjYXNlIEx0LlBMQUlOOnJldHVybiB3QWEobyxlLHQsYSk7ZGVmYXVsdDpyZXR1cm4gbnVsbH19LCJfc3RyaW5naWZ5IiksZD1wKGwpO2lmKGQ9PT1udWxsKXtsZXR7ZGVmYXVsdEtleVR5cGU6dSxkZWZhdWx0U3RyaW5nVHlwZTpjfT1lLm9wdGlvbnMsYj1yJiZ1fHxjO2lmKGQ9cChiKSxkPT09bnVsbCl0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGRlZmF1bHQgc3RyaW5nIHR5cGUgJHtifWApfXJldHVybiBkfXZhciB3c2Usa3NlLEY0ZSxUdz1nKCgpPT57X3IoKTtoNXQoKTt3c2U9aSgocyxlKT0+KHtpbmRlbnRBdFN0YXJ0OmU/cy5pbmRlbnQubGVuZ3RoOnMuaW5kZW50QXRTdGFydCxsaW5lV2lkdGg6cy5vcHRpb25zLmxpbmVXaWR0aCxtaW5Db250ZW50V2lkdGg6cy5vcHRpb25zLm1pbkNvbnRlbnRXaWR0aH0pLCJnZXRGb2xkT3B0aW9ucyIpLGtzZT1pKHM9Pi9eKCV8LS0tfFwuXC5cLikvbS50ZXN0KHMpLCJjb250YWluc0RvY3VtZW50TWFya2VyIik7aSh5QWEsImxpbmVMZW5ndGhPdmVyTGltaXQiKTtpKEN3LCJkb3VibGVRdW90ZWRTdHJpbmciKTtpKE80ZSwic2luZ2xlUXVvdGVkU3RyaW5nIik7aSgkOSwicXVvdGVkU3RyaW5nIik7dHJ5e0Y0ZT1uZXcgUmVnRXhwKGAoXnwoPzwhCikpCisoPyEKfCQpYCwiZyIpfWNhdGNoe0Y0ZT0vXG4rKD8hXG58JCkvZ31pKFNzZSwiYmxvY2tTdHJpbmciKTtpKHdBYSwicGxhaW5TdHJpbmciKTtpKGZkLCJzdHJpbmdpZnlTdHJpbmciKX0pO2Z1bmN0aW9uICR3KHMsZSl7bGV0IHQ9T2JqZWN0LmFzc2lnbih7YmxvY2tRdW90ZTohMCxjb21tZW50U3RyaW5nOlI0ZSxkZWZhdWx0S2V5VHlwZTpudWxsLGRlZmF1bHRTdHJpbmdUeXBlOiJQTEFJTiIsZGlyZWN0aXZlczpudWxsLGRvdWJsZVF1b3RlZEFzSlNPTjohMSxkb3VibGVRdW90ZWRNaW5NdWx0aUxpbmVMZW5ndGg6NDAsZmFsc2VTdHI6ImZhbHNlIixmbG93Q29sbGVjdGlvblBhZGRpbmc6ITAsaW5kZW50U2VxOiEwLGxpbmVXaWR0aDo4MCxtaW5Db250ZW50V2lkdGg6MjAsbnVsbFN0cjoibnVsbCIsc2ltcGxlS2V5czohMSxzaW5nbGVRdW90ZTpudWxsLHRyYWlsaW5nQ29tbWE6ITEsdHJ1ZVN0cjoidHJ1ZSIsdmVyaWZ5QWxpYXNPcmRlcjohMH0scy5zY2hlbWEudG9TdHJpbmdPcHRpb25zLGUpLGE7c3dpdGNoKHQuY29sbGVjdGlvblN0eWxlKXtjYXNlImJsb2NrIjphPSExO2JyZWFrO2Nhc2UiZmxvdyI6YT0hMDticmVhaztkZWZhdWx0OmE9bnVsbH1yZXR1cm57YW5jaG9yczpuZXcgU2V0LGRvYzpzLGZsb3dDb2xsZWN0aW9uUGFkZGluZzp0LmZsb3dDb2xsZWN0aW9uUGFkZGluZz8iICI6IiIsaW5kZW50OiIiLGluZGVudFN0ZXA6dHlwZW9mIHQuaW5kZW50PT0ibnVtYmVyIj8iICIucmVwZWF0KHQuaW5kZW50KToiICAiLGluRmxvdzphLG9wdGlvbnM6dH19ZnVuY3Rpb24ga0FhKHMsZSl7aWYoZS50YWcpe2xldCByPXMuZmlsdGVyKG49Pm4udGFnPT09ZS50YWcpO2lmKHIubGVuZ3RoPjApcmV0dXJuIHIuZmluZChuPT5uLmZvcm1hdD09PWUuZm9ybWF0KT8/clswXX1sZXQgdCxhO2lmKGxhKGUpKXthPWUudmFsdWU7bGV0IHI9cy5maWx0ZXIobj0+bi5pZGVudGlmeT8uKGEpKTtpZihyLmxlbmd0aD4xKXtsZXQgbj1yLmZpbHRlcihvPT5vLnRlc3QpO24ubGVuZ3RoPjAmJihyPW4pfXQ9ci5maW5kKG49Pm4uZm9ybWF0PT09ZS5mb3JtYXQpPz9yLmZpbmQobj0+IW4uZm9ybWF0KX1lbHNlIGE9ZSx0PXMuZmluZChyPT5yLm5vZGVDbGFzcyYmYSBpbnN0YW5jZW9mIHIubm9kZUNsYXNzKTtpZighdCl7bGV0IHI9YT8uY29uc3RydWN0b3I/Lm5hbWU/PyhhPT09bnVsbD8ibnVsbCI6dHlwZW9mIGEpO3Rocm93IG5ldyBFcnJvcihgVGFnIG5vdCByZXNvbHZlZCBmb3IgJHtyfSB2YWx1ZWApfXJldHVybiB0fWZ1bmN0aW9uIFNBYShzLGUse2FuY2hvcnM6dCxkb2M6YX0pe2lmKCFhLmRpcmVjdGl2ZXMpcmV0dXJuIiI7bGV0IHI9W10sbj0obGEocyl8fGRzKHMpKSYmcy5hbmNob3I7biYmd3cobikmJih0LmFkZChuKSxyLnB1c2goYCYke259YCkpO2xldCBvPXMudGFnPz8oZS5kZWZhdWx0P251bGw6ZS50YWcpO3JldHVybiBvJiZyLnB1c2goYS5kaXJlY3RpdmVzLnRhZ1N0cmluZyhvKSksci5qb2luKCIgIil9ZnVuY3Rpb24gbWQocyxlLHQsYSl7aWYoQ2EocykpcmV0dXJuIHMudG9TdHJpbmcoZSx0LGEpO2lmKHZsKHMpKXtpZihlLmRvYy5kaXJlY3RpdmVzKXJldHVybiBzLnRvU3RyaW5nKGUpO2lmKGUucmVzb2x2ZWRBbGlhc2VzPy5oYXMocykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IHN0cmluZ2lmeSBjaXJjdWxhciBzdHJ1Y3R1cmUgd2l0aG91dCBhbGlhcyBub2RlcyIpO2UucmVzb2x2ZWRBbGlhc2VzP2UucmVzb2x2ZWRBbGlhc2VzLmFkZChzKTplLnJlc29sdmVkQWxpYXNlcz1uZXcgU2V0KFtzXSkscz1zLnJlc29sdmUoZS5kb2MpfWxldCByLG49SWEocyk/czplLmRvYy5jcmVhdGVOb2RlKHMse29uVGFnT2JqOmkocD0+cj1wLCJvblRhZ09iaiIpfSk7cj8/KHI9a0FhKGUuZG9jLnNjaGVtYS50YWdzLG4pKTtsZXQgbz1TQWEobixyLGUpO28ubGVuZ3RoPjAmJihlLmluZGVudEF0U3RhcnQ9KGUuaW5kZW50QXRTdGFydD8/MCkrby5sZW5ndGgrMSk7bGV0IGw9dHlwZW9mIHIuc3RyaW5naWZ5PT0iZnVuY3Rpb24iP3Iuc3RyaW5naWZ5KG4sZSx0LGEpOmxhKG4pP2ZkKG4sZSx0LGEpOm4udG9TdHJpbmcoZSx0LGEpO3JldHVybiBvP2xhKG4pfHxsWzBdPT09InsifHxsWzBdPT09IlsiP2Ake299ICR7bH1gOmAke299CiR7ZS5pbmRlbnR9JHtsfWA6bH12YXIgRHc9ZygoKT0+e2dzZSgpO3VzKCk7TXcoKTtUdygpO2koJHcsImNyZWF0ZVN0cmluZ2lmeUNvbnRleHQiKTtpKGtBYSwiZ2V0VGFnT2JqZWN0Iik7aShTQWEsInN0cmluZ2lmeVByb3BzIik7aShtZCwic3RyaW5naWZ5Iil9KTtmdW5jdGlvbiBCNGUoe2tleTpzLHZhbHVlOmV9LHQsYSxyKXtsZXR7YWxsTnVsbFZhbHVlczpuLGRvYzpvLGluZGVudDpsLGluZGVudFN0ZXA6cCxvcHRpb25zOntjb21tZW50U3RyaW5nOmQsaW5kZW50U2VxOnUsc2ltcGxlS2V5czpjfX09dCxiPUlhKHMpJiZzLmNvbW1lbnR8fG51bGw7aWYoYyl7aWYoYil0aHJvdyBuZXcgRXJyb3IoIldpdGggc2ltcGxlIGtleXMsIGtleSBub2RlcyBjYW5ub3QgaGF2ZSBjb21tZW50cyIpO2lmKGRzKHMpfHwhSWEocykmJnR5cGVvZiBzPT0ib2JqZWN0Iil7bGV0IE89IldpdGggc2ltcGxlIGtleXMsIGNvbGxlY3Rpb24gY2Fubm90IGJlIHVzZWQgYXMgYSBrZXkgdmFsdWUiO3Rocm93IG5ldyBFcnJvcihPKX19bGV0IHY9IWMmJighc3x8YiYmZT09bnVsbCYmIXQuaW5GbG93fHxkcyhzKXx8KGxhKHMpP3MudHlwZT09PUx0LkJMT0NLX0ZPTERFRHx8cy50eXBlPT09THQuQkxPQ0tfTElURVJBTDp0eXBlb2Ygcz09Im9iamVjdCIpKTt0PU9iamVjdC5hc3NpZ24oe30sdCx7YWxsTnVsbFZhbHVlczohMSxpbXBsaWNpdEtleTohdiYmKGN8fCFuKSxpbmRlbnQ6bCtwfSk7bGV0IHg9ITEsbT0hMSxmPW1kKHMsdCwoKT0+eD0hMCwoKT0+bT0hMCk7aWYoIXYmJiF0LmluRmxvdyYmZi5sZW5ndGg+MTAyNCl7aWYoYyl0aHJvdyBuZXcgRXJyb3IoIldpdGggc2ltcGxlIGtleXMsIHNpbmdsZSBsaW5lIHNjYWxhciBtdXN0IG5vdCBzcGFuIG1vcmUgdGhhbiAxMDI0IGNoYXJhY3RlcnMiKTt2PSEwfWlmKHQuaW5GbG93KXtpZihufHxlPT1udWxsKXJldHVybiB4JiZhJiZhKCksZj09PSIiPyI/Ijp2P2A/ICR7Zn1gOmZ9ZWxzZSBpZihuJiYhY3x8ZT09bnVsbCYmdilyZXR1cm4gZj1gPyAke2Z9YCxiJiYheD9mKz1MMShmLHQuaW5kZW50LGQoYikpOm0mJnImJnIoKSxmO3gmJihiPW51bGwpLHY/KGImJihmKz1MMShmLHQuaW5kZW50LGQoYikpKSxmPWA/ICR7Zn0KJHtsfTpgKTooZj1gJHtmfTpgLGImJihmKz1MMShmLHQuaW5kZW50LGQoYikpKSk7bGV0IHksTSx6O0lhKGUpPyh5PSEhZS5zcGFjZUJlZm9yZSxNPWUuY29tbWVudEJlZm9yZSx6PWUuY29tbWVudCk6KHk9ITEsTT1udWxsLHo9bnVsbCxlJiZ0eXBlb2YgZT09Im9iamVjdCImJihlPW8uY3JlYXRlTm9kZShlKSkpLHQuaW1wbGljaXRLZXk9ITEsIXYmJiFiJiZsYShlKSYmKHQuaW5kZW50QXRTdGFydD1mLmxlbmd0aCsxKSxtPSExLCF1JiZwLmxlbmd0aD49MiYmIXQuaW5GbG93JiYhdiYmd2woZSkmJiFlLmZsb3cmJiFlLnRhZyYmIWUuYW5jaG9yJiYodC5pbmRlbnQ9dC5pbmRlbnQuc3Vic3RyaW5nKDIpKTtsZXQgTj0hMSxDPW1kKGUsdCwoKT0+Tj0hMCwoKT0+bT0hMCksXz0iICI7aWYoYnx8eXx8TSl7aWYoXz15P2AKYDoiIixNKXtsZXQgTz1kKE0pO18rPWAKJHtxbChPLHQuaW5kZW50KX1gfUM9PT0iIiYmIXQuaW5GbG93P189PT1gCmAmJnomJihfPWAKCmApOl8rPWAKJHt0LmluZGVudH1gfWVsc2UgaWYoIXYmJmRzKGUpKXtsZXQgTz1DWzBdLCQ9Qy5pbmRleE9mKGAKYCksRT0kIT09LTEsSD10LmluRmxvdz8/ZS5mbG93Pz9lLml0ZW1zLmxlbmd0aD09PTA7aWYoRXx8IUgpe2xldCBrPSExO2lmKEUmJihPPT09IiYifHxPPT09IiEiKSl7bGV0IFM9Qy5pbmRleE9mKCIgIik7Tz09PSImIiYmUyE9PS0xJiZTPCQmJkNbUysxXT09PSIhIiYmKFM9Qy5pbmRleE9mKCIgIixTKzEpKSwoUz09PS0xfHwkPFMpJiYoaz0hMCl9a3x8KF89YAoke3QuaW5kZW50fWApfX1lbHNlKEM9PT0iInx8Q1swXT09PWAKYCkmJihfPSIiKTtyZXR1cm4gZis9XytDLHQuaW5GbG93P04mJmEmJmEoKTp6JiYhTj9mKz1MMShmLHQuaW5kZW50LGQoeikpOm0mJnImJnIoKSxmfXZhciBmNXQ9ZygoKT0+e3VzKCk7X3IoKTtEdygpO013KCk7aShCNGUsInN0cmluZ2lmeVBhaXIiKX0pO2Z1bmN0aW9uIF9BYShzLC4uLmUpe3M9PT0iZGVidWciJiZjb25zb2xlLmxvZyguLi5lKX1mdW5jdGlvbiBMdyhzLGUpeyhzPT09ImRlYnVnInx8cz09PSJ3YXJuIikmJmNvbnNvbGUud2FybihlKX12YXIgSDRlPWcoKCk9PntpKF9BYSwiZGVidWciKTtpKEx3LCJ3YXJuIil9KTtmdW5jdGlvbiBNc2UocyxlLHQpe2xldCBhPW01dChzLHQpO2lmKHdsKGEpKWZvcihsZXQgciBvZiBhLml0ZW1zKXE0ZShzLGUscik7ZWxzZSBpZihBcnJheS5pc0FycmF5KGEpKWZvcihsZXQgciBvZiBhKXE0ZShzLGUscik7ZWxzZSBxNGUocyxlLGEpfWZ1bmN0aW9uIHE0ZShzLGUsdCl7bGV0IGE9bTV0KHMsdCk7aWYoIXlsKGEpKXRocm93IG5ldyBFcnJvcigiTWVyZ2Ugc291cmNlcyBtdXN0IGJlIG1hcHMgb3IgbWFwIGFsaWFzZXMiKTtsZXQgcj1hLnRvSlNPTihudWxsLHMsTWFwKTtmb3IobGV0W24sb11vZiByKWUgaW5zdGFuY2VvZiBNYXA/ZS5oYXMobil8fGUuc2V0KG4sbyk6ZSBpbnN0YW5jZW9mIFNldD9lLmFkZChuKTpPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7dmFsdWU6byx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pO3JldHVybiBlfWZ1bmN0aW9uIG01dChzLGUpe3JldHVybiBzJiZ2bChlKT9lLnJlc29sdmUocy5kb2Mscyk6ZX12YXIgX3NlLFRjLGo0ZSx6c2U9ZygoKT0+e3VzKCk7X3IoKTtfc2U9Ijw8IixUYz17aWRlbnRpZnk6aShzPT5zPT09X3NlfHx0eXBlb2Ygcz09InN5bWJvbCImJnMuZGVzY3JpcHRpb249PT1fc2UsImlkZW50aWZ5IiksZGVmYXVsdDoia2V5Iix0YWc6InRhZzp5YW1sLm9yZywyMDAyOm1lcmdlIix0ZXN0Oi9ePDwkLyxyZXNvbHZlOmkoKCk9Pk9iamVjdC5hc3NpZ24obmV3IEx0KFN5bWJvbChfc2UpKSx7YWRkVG9KU01hcDpNc2V9KSwicmVzb2x2ZSIpLHN0cmluZ2lmeTppKCgpPT5fc2UsInN0cmluZ2lmeSIpfSxqNGU9aSgocyxlKT0+KFRjLmlkZW50aWZ5KGUpfHxsYShlKSYmKCFlLnR5cGV8fGUudHlwZT09PUx0LlBMQUlOKSYmVGMuaWRlbnRpZnkoZS52YWx1ZSkpJiZzPy5kb2Muc2NoZW1hLnRhZ3Muc29tZSh0PT50LnRhZz09PVRjLnRhZyYmdC5kZWZhdWx0KSwiaXNNZXJnZUtleSIpO2koTXNlLCJhZGRNZXJnZVRvSlNNYXAiKTtpKHE0ZSwibWVyZ2VWYWx1ZSIpO2kobTV0LCJyZXNvbHZlQWxpYXNWYWx1ZSIpfSk7ZnVuY3Rpb24gRXcocyxlLHtrZXk6dCx2YWx1ZTphfSl7aWYoSWEodCkmJnQuYWRkVG9KU01hcCl0LmFkZFRvSlNNYXAocyxlLGEpO2Vsc2UgaWYoajRlKHMsdCkpTXNlKHMsZSxhKTtlbHNle2xldCByPVNyKHQsIiIscyk7aWYoZSBpbnN0YW5jZW9mIE1hcCllLnNldChyLFNyKGEscixzKSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgU2V0KWUuYWRkKHIpO2Vsc2V7bGV0IG49TUFhKHQscixzKSxvPVNyKGEsbixzKTtuIGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7dmFsdWU6byx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pOmVbbl09b319cmV0dXJuIGV9ZnVuY3Rpb24gTUFhKHMsZSx0KXtpZihlPT09bnVsbClyZXR1cm4iIjtpZih0eXBlb2YgZSE9Im9iamVjdCIpcmV0dXJuIFN0cmluZyhlKTtpZihJYShzKSYmdD8uZG9jKXtsZXQgYT0kdyh0LmRvYyx7fSk7YS5hbmNob3JzPW5ldyBTZXQ7Zm9yKGxldCBuIG9mIHQuYW5jaG9ycy5rZXlzKCkpYS5hbmNob3JzLmFkZChuLmFuY2hvcik7YS5pbkZsb3c9ITAsYS5pblN0cmluZ2lmeUtleT0hMDtsZXQgcj1zLnRvU3RyaW5nKGEpO2lmKCF0Lm1hcEtleVdhcm5lZCl7bGV0IG49SlNPTi5zdHJpbmdpZnkocik7bi5sZW5ndGg+NDAmJihuPW4uc3Vic3RyaW5nKDAsMzYpKycuLi4iJyksTHcodC5kb2Mub3B0aW9ucy5sb2dMZXZlbCxgS2V5cyB3aXRoIGNvbGxlY3Rpb24gdmFsdWVzIHdpbGwgYmUgc3RyaW5naWZpZWQgZHVlIHRvIEpTIE9iamVjdCByZXN0cmljdGlvbnM6ICR7bn0uIFNldCBtYXBBc01hcDogdHJ1ZSB0byB1c2Ugb2JqZWN0IGtleXMuYCksdC5tYXBLZXlXYXJuZWQ9ITB9cmV0dXJuIHJ9cmV0dXJuIEpTT04uc3RyaW5naWZ5KGUpfXZhciBWNGU9ZygoKT0+e0g0ZSgpO3pzZSgpO0R3KCk7dXMoKTtBcCgpO2koRXcsImFkZFBhaXJUb0pTTWFwIik7aShNQWEsInN0cmluZ2lmeUtleSIpfSk7ZnVuY3Rpb24gYjMocyxlLHQpe2xldCBhPWhkKHMsdm9pZCAwLHQpLHI9aGQoZSx2b2lkIDAsdCk7cmV0dXJuIG5ldyBjaShhLHIpfXZhciBjaSxOcD1nKCgpPT57X3coKTtmNXQoKTtWNGUoKTt1cygpO2koYjMsImNyZWF0ZVBhaXIiKTtjaT1jbGFzcyBze3N0YXRpY3tpKHRoaXMsIlBhaXIiKX1jb25zdHJ1Y3RvcihlLHQ9bnVsbCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsSm8se3ZhbHVlOmhzZX0pLHRoaXMua2V5PWUsdGhpcy52YWx1ZT10fWNsb25lKGUpe2xldHtrZXk6dCx2YWx1ZTphfT10aGlzO3JldHVybiBJYSh0KSYmKHQ9dC5jbG9uZShlKSksSWEoYSkmJihhPWEuY2xvbmUoZSkpLG5ldyBzKHQsYSl9dG9KU09OKGUsdCl7bGV0IGE9dD8ubWFwQXNNYXA/bmV3IE1hcDp7fTtyZXR1cm4gRXcodCxhLHRoaXMpfXRvU3RyaW5nKGUsdCxhKXtyZXR1cm4gZT8uZG9jP0I0ZSh0aGlzLGUsdCxhKTpKU09OLnN0cmluZ2lmeSh0aGlzKX19fSk7ZnVuY3Rpb24gUHcocyxlLHQpe3JldHVybihlLmluRmxvdz8/cy5mbG93P0NBYTp6QWEpKHMsZSx0KX1mdW5jdGlvbiB6QWEoe2NvbW1lbnQ6cyxpdGVtczplfSx0LHtibG9ja0l0ZW1QcmVmaXg6YSxmbG93Q2hhcnM6cixpdGVtSW5kZW50Om4sb25DaG9tcEtlZXA6byxvbkNvbW1lbnQ6bH0pe2xldHtpbmRlbnQ6cCxvcHRpb25zOntjb21tZW50U3RyaW5nOmR9fT10LHU9T2JqZWN0LmFzc2lnbih7fSx0LHtpbmRlbnQ6bix0eXBlOm51bGx9KSxjPSExLGI9W107Zm9yKGxldCB4PTA7eDxlLmxlbmd0aDsrK3gpe2xldCBtPWVbeF0sZj1udWxsO2lmKElhKG0pKSFjJiZtLnNwYWNlQmVmb3JlJiZiLnB1c2goIiIpLENzZSh0LGIsbS5jb21tZW50QmVmb3JlLGMpLG0uY29tbWVudCYmKGY9bS5jb21tZW50KTtlbHNlIGlmKENhKG0pKXtsZXQgTT1JYShtLmtleSk/bS5rZXk6bnVsbDtNJiYoIWMmJk0uc3BhY2VCZWZvcmUmJmIucHVzaCgiIiksQ3NlKHQsYixNLmNvbW1lbnRCZWZvcmUsYykpfWM9ITE7bGV0IHk9bWQobSx1LCgpPT5mPW51bGwsKCk9PmM9ITApO2YmJih5Kz1MMSh5LG4sZChmKSkpLGMmJmYmJihjPSExKSxiLnB1c2goYSt5KX1sZXQgdjtpZihiLmxlbmd0aD09PTApdj1yLnN0YXJ0K3IuZW5kO2Vsc2V7dj1iWzBdO2ZvcihsZXQgeD0xO3g8Yi5sZW5ndGg7Kyt4KXtsZXQgbT1iW3hdO3YrPW0/YAoke3B9JHttfWA6YApgfX1yZXR1cm4gcz8odis9YApgK3FsKGQocykscCksbCYmbCgpKTpjJiZvJiZvKCksdn1mdW5jdGlvbiBDQWEoe2l0ZW1zOnN9LGUse2Zsb3dDaGFyczp0LGl0ZW1JbmRlbnQ6YX0pe2xldHtpbmRlbnQ6cixpbmRlbnRTdGVwOm4sZmxvd0NvbGxlY3Rpb25QYWRkaW5nOm8sb3B0aW9uczp7Y29tbWVudFN0cmluZzpsfX09ZTthKz1uO2xldCBwPU9iamVjdC5hc3NpZ24oe30sZSx7aW5kZW50OmEsaW5GbG93OiEwLHR5cGU6bnVsbH0pLGQ9ITEsdT0wLGM9W107Zm9yKGxldCB4PTA7eDxzLmxlbmd0aDsrK3gpe2xldCBtPXNbeF0sZj1udWxsO2lmKElhKG0pKW0uc3BhY2VCZWZvcmUmJmMucHVzaCgiIiksQ3NlKGUsYyxtLmNvbW1lbnRCZWZvcmUsITEpLG0uY29tbWVudCYmKGY9bS5jb21tZW50KTtlbHNlIGlmKENhKG0pKXtsZXQgTT1JYShtLmtleSk/bS5rZXk6bnVsbDtNJiYoTS5zcGFjZUJlZm9yZSYmYy5wdXNoKCIiKSxDc2UoZSxjLE0uY29tbWVudEJlZm9yZSwhMSksTS5jb21tZW50JiYoZD0hMCkpO2xldCB6PUlhKG0udmFsdWUpP20udmFsdWU6bnVsbDt6Pyh6LmNvbW1lbnQmJihmPXouY29tbWVudCksei5jb21tZW50QmVmb3JlJiYoZD0hMCkpOm0udmFsdWU9PW51bGwmJk0/LmNvbW1lbnQmJihmPU0uY29tbWVudCl9ZiYmKGQ9ITApO2xldCB5PW1kKG0scCwoKT0+Zj1udWxsKTtkfHwoZD1jLmxlbmd0aD51fHx5LmluY2x1ZGVzKGAKYCkpLHg8cy5sZW5ndGgtMT95Kz0iLCI6ZS5vcHRpb25zLnRyYWlsaW5nQ29tbWEmJihlLm9wdGlvbnMubGluZVdpZHRoPjAmJihkfHwoZD1jLnJlZHVjZSgoTSx6KT0+TSt6Lmxlbmd0aCsyLDIpKyh5Lmxlbmd0aCsyKT5lLm9wdGlvbnMubGluZVdpZHRoKSksZCYmKHkrPSIsIikpLGYmJih5Kz1MMSh5LGEsbChmKSkpLGMucHVzaCh5KSx1PWMubGVuZ3RofWxldHtzdGFydDpiLGVuZDp2fT10O2lmKGMubGVuZ3RoPT09MClyZXR1cm4gYit2O2lmKCFkKXtsZXQgeD1jLnJlZHVjZSgobSxmKT0+bStmLmxlbmd0aCsyLDIpO2Q9ZS5vcHRpb25zLmxpbmVXaWR0aD4wJiZ4PmUub3B0aW9ucy5saW5lV2lkdGh9aWYoZCl7bGV0IHg9Yjtmb3IobGV0IG0gb2YgYyl4Kz1tP2AKJHtufSR7cn0ke219YDpgCmA7cmV0dXJuYCR7eH0KJHtyfSR7dn1gfWVsc2UgcmV0dXJuYCR7Yn0ke299JHtjLmpvaW4oIiAiKX0ke299JHt2fWB9ZnVuY3Rpb24gQ3NlKHtpbmRlbnQ6cyxvcHRpb25zOntjb21tZW50U3RyaW5nOmV9fSx0LGEscil7aWYoYSYmciYmKGE9YS5yZXBsYWNlKC9eXG4rLywiIikpLGEpe2xldCBuPXFsKGUoYSkscyk7dC5wdXNoKG4udHJpbVN0YXJ0KCkpfX12YXIgVTRlPWcoKCk9Pnt1cygpO0R3KCk7TXcoKTtpKFB3LCJzdHJpbmdpZnlDb2xsZWN0aW9uIik7aSh6QWEsInN0cmluZ2lmeUJsb2NrQ29sbGVjdGlvbiIpO2koQ0FhLCJzdHJpbmdpZnlGbG93Q29sbGVjdGlvbiIpO2koQ3NlLCJhZGRDb21tZW50QmVmb3JlIil9KTtmdW5jdGlvbiBfMChzLGUpe2xldCB0PWxhKGUpP2UudmFsdWU6ZTtmb3IobGV0IGEgb2YgcylpZihDYShhKSYmKGEua2V5PT09ZXx8YS5rZXk9PT10fHxsYShhLmtleSkmJmEua2V5LnZhbHVlPT09dCkpcmV0dXJuIGF9dmFyIHlpLFJwPWcoKCk9PntVNGUoKTtWNGUoKTt4c2UoKTt1cygpO05wKCk7X3IoKTtpKF8wLCJmaW5kUGFpciIpO3lpPWNsYXNzIGV4dGVuZHMgbTN7c3RhdGlje2kodGhpcywiWUFNTE1hcCIpfXN0YXRpYyBnZXQgdGFnTmFtZSgpe3JldHVybiJ0YWc6eWFtbC5vcmcsMjAwMjptYXAifWNvbnN0cnVjdG9yKGUpe3N1cGVyKHpjLGUpLHRoaXMuaXRlbXM9W119c3RhdGljIGZyb20oZSx0LGEpe2xldHtrZWVwVW5kZWZpbmVkOnIscmVwbGFjZXI6bn09YSxvPW5ldyB0aGlzKGUpLGw9aSgocCxkKT0+e2lmKHR5cGVvZiBuPT0iZnVuY3Rpb24iKWQ9bi5jYWxsKHQscCxkKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkobikmJiFuLmluY2x1ZGVzKHApKXJldHVybjsoZCE9PXZvaWQgMHx8cikmJm8uaXRlbXMucHVzaChiMyhwLGQsYSkpfSwiYWRkIik7aWYodCBpbnN0YW5jZW9mIE1hcClmb3IobGV0W3AsZF1vZiB0KWwocCxkKTtlbHNlIGlmKHQmJnR5cGVvZiB0PT0ib2JqZWN0Iilmb3IobGV0IHAgb2YgT2JqZWN0LmtleXModCkpbChwLHRbcF0pO3JldHVybiB0eXBlb2YgZS5zb3J0TWFwRW50cmllcz09ImZ1bmN0aW9uIiYmby5pdGVtcy5zb3J0KGUuc29ydE1hcEVudHJpZXMpLG99YWRkKGUsdCl7bGV0IGE7Q2EoZSk/YT1lOiFlfHx0eXBlb2YgZSE9Im9iamVjdCJ8fCEoImtleSJpbiBlKT9hPW5ldyBjaShlLGU/LnZhbHVlKTphPW5ldyBjaShlLmtleSxlLnZhbHVlKTtsZXQgcj1fMCh0aGlzLml0ZW1zLGEua2V5KSxuPXRoaXMuc2NoZW1hPy5zb3J0TWFwRW50cmllcztpZihyKXtpZighdCl0aHJvdyBuZXcgRXJyb3IoYEtleSAke2Eua2V5fSBhbHJlYWR5IHNldGApO2xhKHIudmFsdWUpJiZTdyhhLnZhbHVlKT9yLnZhbHVlLnZhbHVlPWEudmFsdWU6ci52YWx1ZT1hLnZhbHVlfWVsc2UgaWYobil7bGV0IG89dGhpcy5pdGVtcy5maW5kSW5kZXgobD0+bihhLGwpPDApO289PT0tMT90aGlzLml0ZW1zLnB1c2goYSk6dGhpcy5pdGVtcy5zcGxpY2UobywwLGEpfWVsc2UgdGhpcy5pdGVtcy5wdXNoKGEpfWRlbGV0ZShlKXtsZXQgdD1fMCh0aGlzLml0ZW1zLGUpO3JldHVybiB0P3RoaXMuaXRlbXMuc3BsaWNlKHRoaXMuaXRlbXMuaW5kZXhPZih0KSwxKS5sZW5ndGg+MDohMX1nZXQoZSx0KXtsZXQgcj1fMCh0aGlzLml0ZW1zLGUpPy52YWx1ZTtyZXR1cm4oIXQmJmxhKHIpP3IudmFsdWU6cik/P3ZvaWQgMH1oYXMoZSl7cmV0dXJuISFfMCh0aGlzLml0ZW1zLGUpfXNldChlLHQpe3RoaXMuYWRkKG5ldyBjaShlLHQpLCEwKX10b0pTT04oZSx0LGEpe2xldCByPWE/bmV3IGE6dD8ubWFwQXNNYXA/bmV3IE1hcDp7fTt0Py5vbkNyZWF0ZSYmdC5vbkNyZWF0ZShyKTtmb3IobGV0IG4gb2YgdGhpcy5pdGVtcylFdyh0LHIsbik7cmV0dXJuIHJ9dG9TdHJpbmcoZSx0LGEpe2lmKCFlKXJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzKTtmb3IobGV0IHIgb2YgdGhpcy5pdGVtcylpZighQ2EocikpdGhyb3cgbmV3IEVycm9yKGBNYXAgaXRlbXMgbXVzdCBhbGwgYmUgcGFpcnM7IGZvdW5kICR7SlNPTi5zdHJpbmdpZnkocil9IGluc3RlYWRgKTtyZXR1cm4hZS5hbGxOdWxsVmFsdWVzJiZ0aGlzLmhhc0FsbE51bGxWYWx1ZXMoITEpJiYoZT1PYmplY3QuYXNzaWduKHt9LGUse2FsbE51bGxWYWx1ZXM6ITB9KSksUHcodGhpcyxlLHtibG9ja0l0ZW1QcmVmaXg6IiIsZmxvd0NoYXJzOntzdGFydDoieyIsZW5kOiJ9In0saXRlbUluZGVudDplLmluZGVudHx8IiIsb25DaG9tcEtlZXA6YSxvbkNvbW1lbnQ6dH0pfX19KTt2YXIgJGMsRDk9ZygoKT0+e3VzKCk7UnAoKTskYz17Y29sbGVjdGlvbjoibWFwIixkZWZhdWx0OiEwLG5vZGVDbGFzczp5aSx0YWc6InRhZzp5YW1sLm9yZywyMDAyOm1hcCIscmVzb2x2ZShzLGUpe3JldHVybiB5bChzKXx8ZSgiRXhwZWN0ZWQgYSBtYXBwaW5nIGZvciB0aGlzIHRhZyIpLHN9LGNyZWF0ZU5vZGU6aSgocyxlLHQpPT55aS5mcm9tKHMsZSx0KSwiY3JlYXRlTm9kZSIpfX0pO2Z1bmN0aW9uIFRzZShzKXtsZXQgZT1sYShzKT9zLnZhbHVlOnM7cmV0dXJuIGUmJnR5cGVvZiBlPT0ic3RyaW5nIiYmKGU9TnVtYmVyKGUpKSx0eXBlb2YgZT09Im51bWJlciImJk51bWJlci5pc0ludGVnZXIoZSkmJmU+PTA/ZTpudWxsfXZhciBWcixPcD1nKCgpPT57X3coKTtVNGUoKTt4c2UoKTt1cygpO19yKCk7QXAoKTtWcj1jbGFzcyBleHRlbmRzIG0ze3N0YXRpY3tpKHRoaXMsIllBTUxTZXEiKX1zdGF0aWMgZ2V0IHRhZ05hbWUoKXtyZXR1cm4idGFnOnlhbWwub3JnLDIwMDI6c2VxIn1jb25zdHJ1Y3RvcihlKXtzdXBlcih1ZCxlKSx0aGlzLml0ZW1zPVtdfWFkZChlKXt0aGlzLml0ZW1zLnB1c2goZSl9ZGVsZXRlKGUpe2xldCB0PVRzZShlKTtyZXR1cm4gdHlwZW9mIHQhPSJudW1iZXIiPyExOnRoaXMuaXRlbXMuc3BsaWNlKHQsMSkubGVuZ3RoPjB9Z2V0KGUsdCl7bGV0IGE9VHNlKGUpO2lmKHR5cGVvZiBhIT0ibnVtYmVyIilyZXR1cm47bGV0IHI9dGhpcy5pdGVtc1thXTtyZXR1cm4hdCYmbGEocik/ci52YWx1ZTpyfWhhcyhlKXtsZXQgdD1Uc2UoZSk7cmV0dXJuIHR5cGVvZiB0PT0ibnVtYmVyIiYmdDx0aGlzLml0ZW1zLmxlbmd0aH1zZXQoZSx0KXtsZXQgYT1Uc2UoZSk7aWYodHlwZW9mIGEhPSJudW1iZXIiKXRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYSB2YWxpZCBpbmRleCwgbm90ICR7ZX0uYCk7bGV0IHI9dGhpcy5pdGVtc1thXTtsYShyKSYmU3codCk/ci52YWx1ZT10OnRoaXMuaXRlbXNbYV09dH10b0pTT04oZSx0KXtsZXQgYT1bXTt0Py5vbkNyZWF0ZSYmdC5vbkNyZWF0ZShhKTtsZXQgcj0wO2ZvcihsZXQgbiBvZiB0aGlzLml0ZW1zKWEucHVzaChTcihuLFN0cmluZyhyKyspLHQpKTtyZXR1cm4gYX10b1N0cmluZyhlLHQsYSl7cmV0dXJuIGU/UHcodGhpcyxlLHtibG9ja0l0ZW1QcmVmaXg6Ii0gIixmbG93Q2hhcnM6e3N0YXJ0OiJbIixlbmQ6Il0ifSxpdGVtSW5kZW50OihlLmluZGVudHx8IiIpKyIgICIsb25DaG9tcEtlZXA6YSxvbkNvbW1lbnQ6dH0pOkpTT04uc3RyaW5naWZ5KHRoaXMpfXN0YXRpYyBmcm9tKGUsdCxhKXtsZXR7cmVwbGFjZXI6cn09YSxuPW5ldyB0aGlzKGUpO2lmKHQmJlN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QodCkpe2xldCBvPTA7Zm9yKGxldCBsIG9mIHQpe2lmKHR5cGVvZiByPT0iZnVuY3Rpb24iKXtsZXQgcD10IGluc3RhbmNlb2YgU2V0P2w6U3RyaW5nKG8rKyk7bD1yLmNhbGwodCxwLGwpfW4uaXRlbXMucHVzaChoZChsLHZvaWQgMCxhKSl9fXJldHVybiBufX07aShUc2UsImFzSXRlbUluZGV4Iil9KTt2YXIgRGMsTDk9ZygoKT0+e3VzKCk7T3AoKTtEYz17Y29sbGVjdGlvbjoic2VxIixkZWZhdWx0OiEwLG5vZGVDbGFzczpWcix0YWc6InRhZzp5YW1sLm9yZywyMDAyOnNlcSIscmVzb2x2ZShzLGUpe3JldHVybiB3bChzKXx8ZSgiRXhwZWN0ZWQgYSBzZXF1ZW5jZSBmb3IgdGhpcyB0YWciKSxzfSxjcmVhdGVOb2RlOmkoKHMsZSx0KT0+VnIuZnJvbShzLGUsdCksImNyZWF0ZU5vZGUiKX19KTt2YXIgTTAsSXc9ZygoKT0+e1R3KCk7TTA9e2lkZW50aWZ5Omkocz0+dHlwZW9mIHM9PSJzdHJpbmciLCJpZGVudGlmeSIpLGRlZmF1bHQ6ITAsdGFnOiJ0YWc6eWFtbC5vcmcsMjAwMjpzdHIiLHJlc29sdmU6aShzPT5zLCJyZXNvbHZlIiksc3RyaW5naWZ5KHMsZSx0LGEpe3JldHVybiBlPU9iamVjdC5hc3NpZ24oe2FjdHVhbFN0cmluZzohMH0sZSksZmQocyxlLHQsYSl9fX0pO3ZhciBGcCwkc2U9ZygoKT0+e19yKCk7RnA9e2lkZW50aWZ5Omkocz0+cz09bnVsbCwiaWRlbnRpZnkiKSxjcmVhdGVOb2RlOmkoKCk9Pm5ldyBMdChudWxsKSwiY3JlYXRlTm9kZSIpLGRlZmF1bHQ6ITAsdGFnOiJ0YWc6eWFtbC5vcmcsMjAwMjpudWxsIix0ZXN0Oi9eKD86fnxbTm5ddWxsfE5VTEwpPyQvLHJlc29sdmU6aSgoKT0+bmV3IEx0KG51bGwpLCJyZXNvbHZlIiksc3RyaW5naWZ5OmkoKHtzb3VyY2U6c30sZSk9PnR5cGVvZiBzPT0ic3RyaW5nIiYmRnAudGVzdC50ZXN0KHMpP3M6ZS5vcHRpb25zLm51bGxTdHIsInN0cmluZ2lmeSIpfX0pO3ZhciBFOSxXNGU9ZygoKT0+e19yKCk7RTk9e2lkZW50aWZ5Omkocz0+dHlwZW9mIHM9PSJib29sZWFuIiwiaWRlbnRpZnkiKSxkZWZhdWx0OiEwLHRhZzoidGFnOnlhbWwub3JnLDIwMDI6Ym9vbCIsdGVzdDovXig/OltUdF1ydWV8VFJVRXxbRmZdYWxzZXxGQUxTRSkkLyxyZXNvbHZlOmkocz0+bmV3IEx0KHNbMF09PT0idCJ8fHNbMF09PT0iVCIpLCJyZXNvbHZlIiksc3RyaW5naWZ5KHtzb3VyY2U6cyx2YWx1ZTplfSx0KXtpZihzJiZFOS50ZXN0LnRlc3Qocykpe2xldCBhPXNbMF09PT0idCJ8fHNbMF09PT0iVCI7aWYoZT09PWEpcmV0dXJuIHN9cmV0dXJuIGU/dC5vcHRpb25zLnRydWVTdHI6dC5vcHRpb25zLmZhbHNlU3RyfX19KTtmdW5jdGlvbiBTbyh7Zm9ybWF0OnMsbWluRnJhY3Rpb25EaWdpdHM6ZSx0YWc6dCx2YWx1ZTphfSl7aWYodHlwZW9mIGE9PSJiaWdpbnQiKXJldHVybiBTdHJpbmcoYSk7bGV0IHI9dHlwZW9mIGE9PSJudW1iZXIiP2E6TnVtYmVyKGEpO2lmKCFpc0Zpbml0ZShyKSlyZXR1cm4gaXNOYU4ocik/Ii5uYW4iOnI8MD8iLS5pbmYiOiIuaW5mIjtsZXQgbj1PYmplY3QuaXMoYSwtMCk/Ii0wIjpKU09OLnN0cmluZ2lmeShhKTtpZighcyYmZSYmKCF0fHx0PT09InRhZzp5YW1sLm9yZywyMDAyOmZsb2F0IikmJi9eLT9cZC8udGVzdChuKSYmIW4uaW5jbHVkZXMoImUiKSl7bGV0IG89bi5pbmRleE9mKCIuIik7bzwwJiYobz1uLmxlbmd0aCxuKz0iLiIpO2xldCBsPWUtKG4ubGVuZ3RoLW8tMSk7Zm9yKDtsLS0gPjA7KW4rPSIwIn1yZXR1cm4gbn12YXIgUDk9ZygoKT0+e2koU28sInN0cmluZ2lmeU51bWJlciIpfSk7dmFyIEF3LE53LFJ3LEc0ZT1nKCgpPT57X3IoKTtQOSgpO0F3PXtpZGVudGlmeTppKHM9PnR5cGVvZiBzPT0ibnVtYmVyIiwiaWRlbnRpZnkiKSxkZWZhdWx0OiEwLHRhZzoidGFnOnlhbWwub3JnLDIwMDI6ZmxvYXQiLHRlc3Q6L14oPzpbLStdP1wuKD86aW5mfEluZnxJTkYpfFwubmFufFwuTmFOfFwuTkFOKSQvLHJlc29sdmU6aShzPT5zLnNsaWNlKC0zKS50b0xvd2VyQ2FzZSgpPT09Im5hbiI/TmFOOnNbMF09PT0iLSI/TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZOk51bWJlci5QT1NJVElWRV9JTkZJTklUWSwicmVzb2x2ZSIpLHN0cmluZ2lmeTpTb30sTnc9e2lkZW50aWZ5Omkocz0+dHlwZW9mIHM9PSJudW1iZXIiLCJpZGVudGlmeSIpLGRlZmF1bHQ6ITAsdGFnOiJ0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdCIsZm9ybWF0OiJFWFAiLHRlc3Q6L15bLStdPyg/OlwuWzAtOV0rfFswLTldKyg/OlwuWzAtOV0qKT8pW2VFXVstK10/WzAtOV0rJC8scmVzb2x2ZTppKHM9PnBhcnNlRmxvYXQocyksInJlc29sdmUiKSxzdHJpbmdpZnkocyl7bGV0IGU9TnVtYmVyKHMudmFsdWUpO3JldHVybiBpc0Zpbml0ZShlKT9lLnRvRXhwb25lbnRpYWwoKTpTbyhzKX19LFJ3PXtpZGVudGlmeTppKHM9PnR5cGVvZiBzPT0ibnVtYmVyIiwiaWRlbnRpZnkiKSxkZWZhdWx0OiEwLHRhZzoidGFnOnlhbWwub3JnLDIwMDI6ZmxvYXQiLHRlc3Q6L15bLStdPyg/OlwuWzAtOV0rfFswLTldK1wuWzAtOV0qKSQvLHJlc29sdmUocyl7bGV0IGU9bmV3IEx0KHBhcnNlRmxvYXQocykpLHQ9cy5pbmRleE9mKCIuIik7cmV0dXJuIHQhPT0tMSYmc1tzLmxlbmd0aC0xXT09PSIwIiYmKGUubWluRnJhY3Rpb25EaWdpdHM9cy5sZW5ndGgtdC0xKSxlfSxzdHJpbmdpZnk6U299fSk7ZnVuY3Rpb24gZzV0KHMsZSx0KXtsZXR7dmFsdWU6YX09cztyZXR1cm4gRHNlKGEpJiZhPj0wP3QrYS50b1N0cmluZyhlKTpTbyhzKX12YXIgRHNlLEs0ZSxPdyxGdyxCdyxZNGU9ZygoKT0+e1A5KCk7RHNlPWkocz0+dHlwZW9mIHM9PSJiaWdpbnQifHxOdW1iZXIuaXNJbnRlZ2VyKHMpLCJpbnRJZGVudGlmeSIpLEs0ZT1pKChzLGUsdCx7aW50QXNCaWdJbnQ6YX0pPT5hP0JpZ0ludChzKTpwYXJzZUludChzLnN1YnN0cmluZyhlKSx0KSwiaW50UmVzb2x2ZSIpO2koZzV0LCJpbnRTdHJpbmdpZnkiKTtPdz17aWRlbnRpZnk6aShzPT5Ec2UocykmJnM+PTAsImlkZW50aWZ5IiksZGVmYXVsdDohMCx0YWc6InRhZzp5YW1sLm9yZywyMDAyOmludCIsZm9ybWF0OiJPQ1QiLHRlc3Q6L14wb1swLTddKyQvLHJlc29sdmU6aSgocyxlLHQpPT5LNGUocywyLDgsdCksInJlc29sdmUiKSxzdHJpbmdpZnk6aShzPT5nNXQocyw4LCIwbyIpLCJzdHJpbmdpZnkiKX0sRnc9e2lkZW50aWZ5OkRzZSxkZWZhdWx0OiEwLHRhZzoidGFnOnlhbWwub3JnLDIwMDI6aW50Iix0ZXN0Oi9eWy0rXT9bMC05XSskLyxyZXNvbHZlOmkoKHMsZSx0KT0+SzRlKHMsMCwxMCx0KSwicmVzb2x2ZSIpLHN0cmluZ2lmeTpTb30sQnc9e2lkZW50aWZ5Omkocz0+RHNlKHMpJiZzPj0wLCJpZGVudGlmeSIpLGRlZmF1bHQ6ITAsdGFnOiJ0YWc6eWFtbC5vcmcsMjAwMjppbnQiLGZvcm1hdDoiSEVYIix0ZXN0Oi9eMHhbMC05YS1mQS1GXSskLyxyZXNvbHZlOmkoKHMsZSx0KT0+SzRlKHMsMiwxNix0KSwicmVzb2x2ZSIpLHN0cmluZ2lmeTppKHM9Pmc1dChzLDE2LCIweCIpLCJzdHJpbmdpZnkiKX19KTt2YXIgWjRlLGI1dD1nKCgpPT57RDkoKTskc2UoKTtMOSgpO0l3KCk7VzRlKCk7RzRlKCk7WTRlKCk7WjRlPVskYyxEYyxNMCxGcCxFOSxPdyxGdyxCdyxBdyxOdyxSd119KTtmdW5jdGlvbiB2NXQocyl7cmV0dXJuIHR5cGVvZiBzPT0iYmlnaW50Inx8TnVtYmVyLmlzSW50ZWdlcihzKX12YXIgTHNlLFRBYSwkQWEsWDRlLHg1dD1nKCgpPT57X3IoKTtEOSgpO0w5KCk7aSh2NXQsImludElkZW50aWZ5Iik7THNlPWkoKHt2YWx1ZTpzfSk9PkpTT04uc3RyaW5naWZ5KHMpLCJzdHJpbmdpZnlKU09OIiksVEFhPVt7aWRlbnRpZnk6aShzPT50eXBlb2Ygcz09InN0cmluZyIsImlkZW50aWZ5IiksZGVmYXVsdDohMCx0YWc6InRhZzp5YW1sLm9yZywyMDAyOnN0ciIscmVzb2x2ZTppKHM9PnMsInJlc29sdmUiKSxzdHJpbmdpZnk6THNlfSx7aWRlbnRpZnk6aShzPT5zPT1udWxsLCJpZGVudGlmeSIpLGNyZWF0ZU5vZGU6aSgoKT0+bmV3IEx0KG51bGwpLCJjcmVhdGVOb2RlIiksZGVmYXVsdDohMCx0YWc6InRhZzp5YW1sLm9yZywyMDAyOm51bGwiLHRlc3Q6L15udWxsJC8scmVzb2x2ZTppKCgpPT5udWxsLCJyZXNvbHZlIiksc3RyaW5naWZ5OkxzZX0se2lkZW50aWZ5Omkocz0+dHlwZW9mIHM9PSJib29sZWFuIiwiaWRlbnRpZnkiKSxkZWZhdWx0OiEwLHRhZzoidGFnOnlhbWwub3JnLDIwMDI6Ym9vbCIsdGVzdDovXnRydWUkfF5mYWxzZSQvLHJlc29sdmU6aShzPT5zPT09InRydWUiLCJyZXNvbHZlIiksc3RyaW5naWZ5OkxzZX0se2lkZW50aWZ5OnY1dCxkZWZhdWx0OiEwLHRhZzoidGFnOnlhbWwub3JnLDIwMDI6aW50Iix0ZXN0Oi9eLT8oPzowfFsxLTldWzAtOV0qKSQvLHJlc29sdmU6aSgocyxlLHtpbnRBc0JpZ0ludDp0fSk9PnQ/QmlnSW50KHMpOnBhcnNlSW50KHMsMTApLCJyZXNvbHZlIiksc3RyaW5naWZ5OmkoKHt2YWx1ZTpzfSk9PnY1dChzKT9zLnRvU3RyaW5nKCk6SlNPTi5zdHJpbmdpZnkocyksInN0cmluZ2lmeSIpfSx7aWRlbnRpZnk6aShzPT50eXBlb2Ygcz09Im51bWJlciIsImlkZW50aWZ5IiksZGVmYXVsdDohMCx0YWc6InRhZzp5YW1sLm9yZywyMDAyOmZsb2F0Iix0ZXN0Oi9eLT8oPzowfFsxLTldWzAtOV0qKSg/OlwuWzAtOV0qKT8oPzpbZUVdWy0rXT9bMC05XSspPyQvLHJlc29sdmU6aShzPT5wYXJzZUZsb2F0KHMpLCJyZXNvbHZlIiksc3RyaW5naWZ5OkxzZX1dLCRBYT17ZGVmYXVsdDohMCx0YWc6IiIsdGVzdDovXi8scmVzb2x2ZShzLGUpe3JldHVybiBlKGBVbnJlc29sdmVkIHBsYWluIHNjYWxhciAke0pTT04uc3RyaW5naWZ5KHMpfWApLHN9fSxYNGU9WyRjLERjXS5jb25jYXQoVEFhLCRBYSl9KTt2YXIgSTksUTRlPWcoKCk9PntfcigpO1R3KCk7STk9e2lkZW50aWZ5Omkocz0+cyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXksImlkZW50aWZ5IiksZGVmYXVsdDohMSx0YWc6InRhZzp5YW1sLm9yZywyMDAyOmJpbmFyeSIscmVzb2x2ZShzLGUpe2lmKHR5cGVvZiBhdG9iPT0iZnVuY3Rpb24iKXtsZXQgdD1hdG9iKHMucmVwbGFjZSgvW1xuXHJdL2csIiIpKSxhPW5ldyBVaW50OEFycmF5KHQubGVuZ3RoKTtmb3IobGV0IHI9MDtyPHQubGVuZ3RoOysrcilhW3JdPXQuY2hhckNvZGVBdChyKTtyZXR1cm4gYX1lbHNlIHJldHVybiBlKCJUaGlzIGVudmlyb25tZW50IGRvZXMgbm90IHN1cHBvcnQgcmVhZGluZyBiaW5hcnkgdGFnczsgZWl0aGVyIEJ1ZmZlciBvciBhdG9iIGlzIHJlcXVpcmVkIiksc30sc3RyaW5naWZ5KHtjb21tZW50OnMsdHlwZTplLHZhbHVlOnR9LGEscixuKXtpZighdClyZXR1cm4iIjtsZXQgbz10LGw7aWYodHlwZW9mIGJ0b2E9PSJmdW5jdGlvbiIpe2xldCBwPSIiO2ZvcihsZXQgZD0wO2Q8by5sZW5ndGg7KytkKXArPVN0cmluZy5mcm9tQ2hhckNvZGUob1tkXSk7bD1idG9hKHApfWVsc2UgdGhyb3cgbmV3IEVycm9yKCJUaGlzIGVudmlyb25tZW50IGRvZXMgbm90IHN1cHBvcnQgd3JpdGluZyBiaW5hcnkgdGFnczsgZWl0aGVyIEJ1ZmZlciBvciBidG9hIGlzIHJlcXVpcmVkIik7aWYoZT8/KGU9THQuQkxPQ0tfTElURVJBTCksZSE9PUx0LlFVT1RFX0RPVUJMRSl7bGV0IHA9TWF0aC5tYXgoYS5vcHRpb25zLmxpbmVXaWR0aC1hLmluZGVudC5sZW5ndGgsYS5vcHRpb25zLm1pbkNvbnRlbnRXaWR0aCksZD1NYXRoLmNlaWwobC5sZW5ndGgvcCksdT1uZXcgQXJyYXkoZCk7Zm9yKGxldCBjPTAsYj0wO2M8ZDsrK2MsYis9cCl1W2NdPWwuc3Vic3RyKGIscCk7bD11LmpvaW4oZT09PUx0LkJMT0NLX0xJVEVSQUw/YApgOiIgIil9cmV0dXJuIGZkKHtjb21tZW50OnMsdHlwZTplLHZhbHVlOmx9LGEscixuKX19fSk7ZnVuY3Rpb24gRXNlKHMsZSl7aWYod2wocykpZm9yKGxldCB0PTA7dDxzLml0ZW1zLmxlbmd0aDsrK3Qpe2xldCBhPXMuaXRlbXNbdF07aWYoIUNhKGEpKXtpZih5bChhKSl7YS5pdGVtcy5sZW5ndGg+MSYmZSgiRWFjaCBwYWlyIG11c3QgaGF2ZSBpdHMgb3duIHNlcXVlbmNlIGluZGljYXRvciIpO2xldCByPWEuaXRlbXNbMF18fG5ldyBjaShuZXcgTHQobnVsbCkpO2lmKGEuY29tbWVudEJlZm9yZSYmKHIua2V5LmNvbW1lbnRCZWZvcmU9ci5rZXkuY29tbWVudEJlZm9yZT9gJHthLmNvbW1lbnRCZWZvcmV9CiR7ci5rZXkuY29tbWVudEJlZm9yZX1gOmEuY29tbWVudEJlZm9yZSksYS5jb21tZW50KXtsZXQgbj1yLnZhbHVlPz9yLmtleTtuLmNvbW1lbnQ9bi5jb21tZW50P2Ake2EuY29tbWVudH0KJHtuLmNvbW1lbnR9YDphLmNvbW1lbnR9YT1yfXMuaXRlbXNbdF09Q2EoYSk/YTpuZXcgY2koYSl9fWVsc2UgZSgiRXhwZWN0ZWQgYSBzZXF1ZW5jZSBmb3IgdGhpcyB0YWciKTtyZXR1cm4gc31mdW5jdGlvbiBQc2UocyxlLHQpe2xldHtyZXBsYWNlcjphfT10LHI9bmV3IFZyKHMpO3IudGFnPSJ0YWc6eWFtbC5vcmcsMjAwMjpwYWlycyI7bGV0IG49MDtpZihlJiZTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpKWZvcihsZXQgbyBvZiBlKXt0eXBlb2YgYT09ImZ1bmN0aW9uIiYmKG89YS5jYWxsKGUsU3RyaW5nKG4rKyksbykpO2xldCBsLHA7aWYoQXJyYXkuaXNBcnJheShvKSlpZihvLmxlbmd0aD09PTIpbD1vWzBdLHA9b1sxXTtlbHNlIHRocm93IG5ldyBUeXBlRXJyb3IoYEV4cGVjdGVkIFtrZXksIHZhbHVlXSB0dXBsZTogJHtvfWApO2Vsc2UgaWYobyYmbyBpbnN0YW5jZW9mIE9iamVjdCl7bGV0IGQ9T2JqZWN0LmtleXMobyk7aWYoZC5sZW5ndGg9PT0xKWw9ZFswXSxwPW9bbF07ZWxzZSB0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCB0dXBsZSB3aXRoIG9uZSBrZXksIG5vdCAke2QubGVuZ3RofSBrZXlzYCl9ZWxzZSBsPW87ci5pdGVtcy5wdXNoKGIzKGwscCx0KSl9cmV0dXJuIHJ9dmFyIEE5LElzZT1nKCgpPT57dXMoKTtOcCgpO19yKCk7T3AoKTtpKEVzZSwicmVzb2x2ZVBhaXJzIik7aShQc2UsImNyZWF0ZVBhaXJzIik7QTk9e2NvbGxlY3Rpb246InNlcSIsZGVmYXVsdDohMSx0YWc6InRhZzp5YW1sLm9yZywyMDAyOnBhaXJzIixyZXNvbHZlOkVzZSxjcmVhdGVOb2RlOlBzZX19KTt2YXIgdjMsTjksSjRlPWcoKCk9Pnt1cygpO0FwKCk7UnAoKTtPcCgpO0lzZSgpO3YzPWNsYXNzIHMgZXh0ZW5kcyBWcntzdGF0aWN7aSh0aGlzLCJZQU1MT01hcCIpfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLmFkZD15aS5wcm90b3R5cGUuYWRkLmJpbmQodGhpcyksdGhpcy5kZWxldGU9eWkucHJvdG90eXBlLmRlbGV0ZS5iaW5kKHRoaXMpLHRoaXMuZ2V0PXlpLnByb3RvdHlwZS5nZXQuYmluZCh0aGlzKSx0aGlzLmhhcz15aS5wcm90b3R5cGUuaGFzLmJpbmQodGhpcyksdGhpcy5zZXQ9eWkucHJvdG90eXBlLnNldC5iaW5kKHRoaXMpLHRoaXMudGFnPXMudGFnfXRvSlNPTihlLHQpe2lmKCF0KXJldHVybiBzdXBlci50b0pTT04oZSk7bGV0IGE9bmV3IE1hcDt0Py5vbkNyZWF0ZSYmdC5vbkNyZWF0ZShhKTtmb3IobGV0IHIgb2YgdGhpcy5pdGVtcyl7bGV0IG4sbztpZihDYShyKT8obj1TcihyLmtleSwiIix0KSxvPVNyKHIudmFsdWUsbix0KSk6bj1TcihyLCIiLHQpLGEuaGFzKG4pKXRocm93IG5ldyBFcnJvcigiT3JkZXJlZCBtYXBzIG11c3Qgbm90IGluY2x1ZGUgZHVwbGljYXRlIGtleXMiKTthLnNldChuLG8pfXJldHVybiBhfXN0YXRpYyBmcm9tKGUsdCxhKXtsZXQgcj1Qc2UoZSx0LGEpLG49bmV3IHRoaXM7cmV0dXJuIG4uaXRlbXM9ci5pdGVtcyxufX07djMudGFnPSJ0YWc6eWFtbC5vcmcsMjAwMjpvbWFwIjtOOT17Y29sbGVjdGlvbjoic2VxIixpZGVudGlmeTppKHM9PnMgaW5zdGFuY2VvZiBNYXAsImlkZW50aWZ5Iiksbm9kZUNsYXNzOnYzLGRlZmF1bHQ6ITEsdGFnOiJ0YWc6eWFtbC5vcmcsMjAwMjpvbWFwIixyZXNvbHZlKHMsZSl7bGV0IHQ9RXNlKHMsZSksYT1bXTtmb3IobGV0e2tleTpyfW9mIHQuaXRlbXMpbGEocikmJihhLmluY2x1ZGVzKHIudmFsdWUpP2UoYE9yZGVyZWQgbWFwcyBtdXN0IG5vdCBpbmNsdWRlIGR1cGxpY2F0ZSBrZXlzOiAke3IudmFsdWV9YCk6YS5wdXNoKHIudmFsdWUpKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdjMsdCl9LGNyZWF0ZU5vZGU6aSgocyxlLHQpPT52My5mcm9tKHMsZSx0KSwiY3JlYXRlTm9kZSIpfX0pO2Z1bmN0aW9uIHk1dCh7dmFsdWU6cyxzb3VyY2U6ZX0sdCl7cmV0dXJuIGUmJihzP0FzZTpOc2UpLnRlc3QudGVzdChlKT9lOnM/dC5vcHRpb25zLnRydWVTdHI6dC5vcHRpb25zLmZhbHNlU3RyfXZhciBBc2UsTnNlLHc1dD1nKCgpPT57X3IoKTtpKHk1dCwiYm9vbFN0cmluZ2lmeSIpO0FzZT17aWRlbnRpZnk6aShzPT5zPT09ITAsImlkZW50aWZ5IiksZGVmYXVsdDohMCx0YWc6InRhZzp5YW1sLm9yZywyMDAyOmJvb2wiLHRlc3Q6L14oPzpZfHl8W1l5XWVzfFlFU3xbVHRdcnVlfFRSVUV8W09vXW58T04pJC8scmVzb2x2ZTppKCgpPT5uZXcgTHQoITApLCJyZXNvbHZlIiksc3RyaW5naWZ5Onk1dH0sTnNlPXtpZGVudGlmeTppKHM9PnM9PT0hMSwiaWRlbnRpZnkiKSxkZWZhdWx0OiEwLHRhZzoidGFnOnlhbWwub3JnLDIwMDI6Ym9vbCIsdGVzdDovXig/Ok58bnxbTm5db3xOT3xbRmZdYWxzZXxGQUxTRXxbT29dZmZ8T0ZGKSQvLHJlc29sdmU6aSgoKT0+bmV3IEx0KCExKSwicmVzb2x2ZSIpLHN0cmluZ2lmeTp5NXR9fSk7dmFyIGUzZSx0M2UsYTNlLGs1dD1nKCgpPT57X3IoKTtQOSgpO2UzZT17aWRlbnRpZnk6aShzPT50eXBlb2Ygcz09Im51bWJlciIsImlkZW50aWZ5IiksZGVmYXVsdDohMCx0YWc6InRhZzp5YW1sLm9yZywyMDAyOmZsb2F0Iix0ZXN0Oi9eKD86Wy0rXT9cLig/OmluZnxJbmZ8SU5GKXxcLm5hbnxcLk5hTnxcLk5BTikkLyxyZXNvbHZlOmkocz0+cy5zbGljZSgtMykudG9Mb3dlckNhc2UoKT09PSJuYW4iP05hTjpzWzBdPT09Ii0iP051bWJlci5ORUdBVElWRV9JTkZJTklUWTpOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksInJlc29sdmUiKSxzdHJpbmdpZnk6U299LHQzZT17aWRlbnRpZnk6aShzPT50eXBlb2Ygcz09Im51bWJlciIsImlkZW50aWZ5IiksZGVmYXVsdDohMCx0YWc6InRhZzp5YW1sLm9yZywyMDAyOmZsb2F0Iixmb3JtYXQ6IkVYUCIsdGVzdDovXlstK10/KD86WzAtOV1bMC05X10qKT8oPzpcLlswLTlfXSopP1tlRV1bLStdP1swLTldKyQvLHJlc29sdmU6aShzPT5wYXJzZUZsb2F0KHMucmVwbGFjZSgvXy9nLCIiKSksInJlc29sdmUiKSxzdHJpbmdpZnkocyl7bGV0IGU9TnVtYmVyKHMudmFsdWUpO3JldHVybiBpc0Zpbml0ZShlKT9lLnRvRXhwb25lbnRpYWwoKTpTbyhzKX19LGEzZT17aWRlbnRpZnk6aShzPT50eXBlb2Ygcz09Im51bWJlciIsImlkZW50aWZ5IiksZGVmYXVsdDohMCx0YWc6InRhZzp5YW1sLm9yZywyMDAyOmZsb2F0Iix0ZXN0Oi9eWy0rXT8oPzpbMC05XVswLTlfXSopP1wuWzAtOV9dKiQvLHJlc29sdmUocyl7bGV0IGU9bmV3IEx0KHBhcnNlRmxvYXQocy5yZXBsYWNlKC9fL2csIiIpKSksdD1zLmluZGV4T2YoIi4iKTtpZih0IT09LTEpe2xldCBhPXMuc3Vic3RyaW5nKHQrMSkucmVwbGFjZSgvXy9nLCIiKTthW2EubGVuZ3RoLTFdPT09IjAiJiYoZS5taW5GcmFjdGlvbkRpZ2l0cz1hLmxlbmd0aCl9cmV0dXJuIGV9LHN0cmluZ2lmeTpTb319KTtmdW5jdGlvbiBSc2UocyxlLHQse2ludEFzQmlnSW50OmF9KXtsZXQgcj1zWzBdO2lmKChyPT09Ii0ifHxyPT09IisiKSYmKGUrPTEpLHM9cy5zdWJzdHJpbmcoZSkucmVwbGFjZSgvXy9nLCIiKSxhKXtzd2l0Y2godCl7Y2FzZSAyOnM9YDBiJHtzfWA7YnJlYWs7Y2FzZSA4OnM9YDBvJHtzfWA7YnJlYWs7Y2FzZSAxNjpzPWAweCR7c31gO2JyZWFrfWxldCBvPUJpZ0ludChzKTtyZXR1cm4gcj09PSItIj9CaWdJbnQoLTEpKm86b31sZXQgbj1wYXJzZUludChzLHQpO3JldHVybiByPT09Ii0iPy0xKm46bn1mdW5jdGlvbiBzM2UocyxlLHQpe2xldHt2YWx1ZTphfT1zO2lmKEh3KGEpKXtsZXQgcj1hLnRvU3RyaW5nKGUpO3JldHVybiBhPDA/Ii0iK3Qrci5zdWJzdHIoMSk6dCtyfXJldHVybiBTbyhzKX12YXIgSHcsaTNlLHIzZSxvM2UsbjNlLFM1dD1nKCgpPT57UDkoKTtIdz1pKHM9PnR5cGVvZiBzPT0iYmlnaW50Inx8TnVtYmVyLmlzSW50ZWdlcihzKSwiaW50SWRlbnRpZnkiKTtpKFJzZSwiaW50UmVzb2x2ZSIpO2koczNlLCJpbnRTdHJpbmdpZnkiKTtpM2U9e2lkZW50aWZ5Okh3LGRlZmF1bHQ6ITAsdGFnOiJ0YWc6eWFtbC5vcmcsMjAwMjppbnQiLGZvcm1hdDoiQklOIix0ZXN0Oi9eWy0rXT8wYlswLTFfXSskLyxyZXNvbHZlOmkoKHMsZSx0KT0+UnNlKHMsMiwyLHQpLCJyZXNvbHZlIiksc3RyaW5naWZ5Omkocz0+czNlKHMsMiwiMGIiKSwic3RyaW5naWZ5Iil9LHIzZT17aWRlbnRpZnk6SHcsZGVmYXVsdDohMCx0YWc6InRhZzp5YW1sLm9yZywyMDAyOmludCIsZm9ybWF0OiJPQ1QiLHRlc3Q6L15bLStdPzBbMC03X10rJC8scmVzb2x2ZTppKChzLGUsdCk9PlJzZShzLDEsOCx0KSwicmVzb2x2ZSIpLHN0cmluZ2lmeTppKHM9PnMzZShzLDgsIjAiKSwic3RyaW5naWZ5Iil9LG8zZT17aWRlbnRpZnk6SHcsZGVmYXVsdDohMCx0YWc6InRhZzp5YW1sLm9yZywyMDAyOmludCIsdGVzdDovXlstK10/WzAtOV1bMC05X10qJC8scmVzb2x2ZTppKChzLGUsdCk9PlJzZShzLDAsMTAsdCksInJlc29sdmUiKSxzdHJpbmdpZnk6U299LG4zZT17aWRlbnRpZnk6SHcsZGVmYXVsdDohMCx0YWc6InRhZzp5YW1sLm9yZywyMDAyOmludCIsZm9ybWF0OiJIRVgiLHRlc3Q6L15bLStdPzB4WzAtOWEtZkEtRl9dKyQvLHJlc29sdmU6aSgocyxlLHQpPT5Sc2UocywyLDE2LHQpLCJyZXNvbHZlIiksc3RyaW5naWZ5Omkocz0+czNlKHMsMTYsIjB4IiksInN0cmluZ2lmeSIpfX0pO3ZhciB4MyxSOSxsM2U9ZygoKT0+e3VzKCk7TnAoKTtScCgpO3gzPWNsYXNzIHMgZXh0ZW5kcyB5aXtzdGF0aWN7aSh0aGlzLCJZQU1MU2V0Iil9Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksdGhpcy50YWc9cy50YWd9YWRkKGUpe2xldCB0O0NhKGUpP3Q9ZTplJiZ0eXBlb2YgZT09Im9iamVjdCImJiJrZXkiaW4gZSYmInZhbHVlImluIGUmJmUudmFsdWU9PT1udWxsP3Q9bmV3IGNpKGUua2V5LG51bGwpOnQ9bmV3IGNpKGUsbnVsbCksXzAodGhpcy5pdGVtcyx0LmtleSl8fHRoaXMuaXRlbXMucHVzaCh0KX1nZXQoZSx0KXtsZXQgYT1fMCh0aGlzLml0ZW1zLGUpO3JldHVybiF0JiZDYShhKT9sYShhLmtleSk/YS5rZXkudmFsdWU6YS5rZXk6YX1zZXQoZSx0KXtpZih0eXBlb2YgdCE9ImJvb2xlYW4iKXRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYm9vbGVhbiB2YWx1ZSBmb3Igc2V0KGtleSwgdmFsdWUpIGluIGEgWUFNTCBzZXQsIG5vdCAke3R5cGVvZiB0fWApO2xldCBhPV8wKHRoaXMuaXRlbXMsZSk7YSYmIXQ/dGhpcy5pdGVtcy5zcGxpY2UodGhpcy5pdGVtcy5pbmRleE9mKGEpLDEpOiFhJiZ0JiZ0aGlzLml0ZW1zLnB1c2gobmV3IGNpKGUpKX10b0pTT04oZSx0KXtyZXR1cm4gc3VwZXIudG9KU09OKGUsdCxTZXQpfXRvU3RyaW5nKGUsdCxhKXtpZighZSlyZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcyk7aWYodGhpcy5oYXNBbGxOdWxsVmFsdWVzKCEwKSlyZXR1cm4gc3VwZXIudG9TdHJpbmcoT2JqZWN0LmFzc2lnbih7fSxlLHthbGxOdWxsVmFsdWVzOiEwfSksdCxhKTt0aHJvdyBuZXcgRXJyb3IoIlNldCBpdGVtcyBtdXN0IGFsbCBoYXZlIG51bGwgdmFsdWVzIil9c3RhdGljIGZyb20oZSx0LGEpe2xldHtyZXBsYWNlcjpyfT1hLG49bmV3IHRoaXMoZSk7aWYodCYmU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdCh0KSlmb3IobGV0IG8gb2YgdCl0eXBlb2Ygcj09ImZ1bmN0aW9uIiYmKG89ci5jYWxsKHQsbyxvKSksbi5pdGVtcy5wdXNoKGIzKG8sbnVsbCxhKSk7cmV0dXJuIG59fTt4My50YWc9InRhZzp5YW1sLm9yZywyMDAyOnNldCI7Ujk9e2NvbGxlY3Rpb246Im1hcCIsaWRlbnRpZnk6aShzPT5zIGluc3RhbmNlb2YgU2V0LCJpZGVudGlmeSIpLG5vZGVDbGFzczp4MyxkZWZhdWx0OiExLHRhZzoidGFnOnlhbWwub3JnLDIwMDI6c2V0IixjcmVhdGVOb2RlOmkoKHMsZSx0KT0+eDMuZnJvbShzLGUsdCksImNyZWF0ZU5vZGUiKSxyZXNvbHZlKHMsZSl7aWYoeWwocykpe2lmKHMuaGFzQWxsTnVsbFZhbHVlcyghMCkpcmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IHgzLHMpO2UoIlNldCBpdGVtcyBtdXN0IGFsbCBoYXZlIG51bGwgdmFsdWVzIil9ZWxzZSBlKCJFeHBlY3RlZCBhIG1hcHBpbmcgZm9yIHRoaXMgdGFnIik7cmV0dXJuIHN9fX0pO2Z1bmN0aW9uIGMzZShzLGUpe2xldCB0PXNbMF0sYT10PT09Ii0ifHx0PT09IisiP3Muc3Vic3RyaW5nKDEpOnMscj1pKG89PmU/QmlnSW50KG8pOk51bWJlcihvKSwibnVtIiksbj1hLnJlcGxhY2UoL18vZywiIikuc3BsaXQoIjoiKS5yZWR1Y2UoKG8sbCk9Pm8qcig2MCkrcihsKSxyKDApKTtyZXR1cm4gdD09PSItIj9yKC0xKSpuOm59ZnVuY3Rpb24gXzV0KHMpe2xldHt2YWx1ZTplfT1zLHQ9aShvPT5vLCJudW0iKTtpZih0eXBlb2YgZT09ImJpZ2ludCIpdD1pKG89PkJpZ0ludChvKSwibnVtIik7ZWxzZSBpZihpc05hTihlKXx8IWlzRmluaXRlKGUpKXJldHVybiBTbyhzKTtsZXQgYT0iIjtlPDAmJihhPSItIixlKj10KC0xKSk7bGV0IHI9dCg2MCksbj1bZSVyXTtyZXR1cm4gZTw2MD9uLnVuc2hpZnQoMCk6KGU9KGUtblswXSkvcixuLnVuc2hpZnQoZSVyKSxlPj02MCYmKGU9KGUtblswXSkvcixuLnVuc2hpZnQoZSkpKSxhK24ubWFwKG89PlN0cmluZyhvKS5wYWRTdGFydCgyLCIwIikpLmpvaW4oIjoiKS5yZXBsYWNlKC8wMDAwMDBcZCokLywiIil9dmFyIHF3LGp3LHkzLGQzZT1nKCgpPT57UDkoKTtpKGMzZSwicGFyc2VTZXhhZ2VzaW1hbCIpO2koXzV0LCJzdHJpbmdpZnlTZXhhZ2VzaW1hbCIpO3F3PXtpZGVudGlmeTppKHM9PnR5cGVvZiBzPT0iYmlnaW50Inx8TnVtYmVyLmlzSW50ZWdlcihzKSwiaWRlbnRpZnkiKSxkZWZhdWx0OiEwLHRhZzoidGFnOnlhbWwub3JnLDIwMDI6aW50Iixmb3JtYXQ6IlRJTUUiLHRlc3Q6L15bLStdP1swLTldWzAtOV9dKig/OjpbMC01XT9bMC05XSkrJC8scmVzb2x2ZTppKChzLGUse2ludEFzQmlnSW50OnR9KT0+YzNlKHMsdCksInJlc29sdmUiKSxzdHJpbmdpZnk6XzV0fSxqdz17aWRlbnRpZnk6aShzPT50eXBlb2Ygcz09Im51bWJlciIsImlkZW50aWZ5IiksZGVmYXVsdDohMCx0YWc6InRhZzp5YW1sLm9yZywyMDAyOmZsb2F0Iixmb3JtYXQ6IlRJTUUiLHRlc3Q6L15bLStdP1swLTldWzAtOV9dKig/OjpbMC01XT9bMC05XSkrXC5bMC05X10qJC8scmVzb2x2ZTppKHM9PmMzZShzLCExKSwicmVzb2x2ZSIpLHN0cmluZ2lmeTpfNXR9LHkzPXtpZGVudGlmeTppKHM9PnMgaW5zdGFuY2VvZiBEYXRlLCJpZGVudGlmeSIpLGRlZmF1bHQ6ITAsdGFnOiJ0YWc6eWFtbC5vcmcsMjAwMjp0aW1lc3RhbXAiLHRlc3Q6UmVnRXhwKCJeKFswLTldezR9KS0oWzAtOV17MSwyfSktKFswLTldezEsMn0pKD86KD86dHxUfFsgXFx0XSspKFswLTldezEsMn0pOihbMC05XXsxLDJ9KTooWzAtOV17MSwyfShcXC5bMC05XSspPykoPzpbIFxcdF0qKFp8Wy0rXVswMTJdP1swLTldKD86OlswLTldezJ9KT8pKT8pPyQiKSxyZXNvbHZlKHMpe2xldCBlPXMubWF0Y2goeTMudGVzdCk7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCIhIXRpbWVzdGFtcCBleHBlY3RzIGEgZGF0ZSwgc3RhcnRpbmcgd2l0aCB5eXl5LW1tLWRkIik7bGV0Wyx0LGEscixuLG8sbF09ZS5tYXAoTnVtYmVyKSxwPWVbN10/TnVtYmVyKChlWzddKyIwMCIpLnN1YnN0cigxLDMpKTowLGQ9RGF0ZS5VVEModCxhLTEscixufHwwLG98fDAsbHx8MCxwKSx1PWVbOF07aWYodSYmdSE9PSJaIil7bGV0IGM9YzNlKHUsITEpO01hdGguYWJzKGMpPDMwJiYoYyo9NjApLGQtPTZlNCpjfXJldHVybiBuZXcgRGF0ZShkKX0sc3RyaW5naWZ5OmkoKHt2YWx1ZTpzfSk9PnM/LnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvKFQwMDowMDowMCk/XC4wMDBaJC8sIiIpPz8iIiwic3RyaW5naWZ5Iil9fSk7dmFyIE9zZSxNNXQ9ZygoKT0+e0Q5KCk7JHNlKCk7TDkoKTtJdygpO1E0ZSgpO3c1dCgpO2s1dCgpO1M1dCgpO3pzZSgpO0o0ZSgpO0lzZSgpO2wzZSgpO2QzZSgpO09zZT1bJGMsRGMsTTAsRnAsQXNlLE5zZSxpM2UscjNlLG8zZSxuM2UsZTNlLHQzZSxhM2UsSTksVGMsTjksQTksUjkscXcsancseTNdfSk7ZnVuY3Rpb24gVncocyxlLHQpe2xldCBhPXo1dC5nZXQoZSk7aWYoYSYmIXMpcmV0dXJuIHQmJiFhLmluY2x1ZGVzKFRjKT9hLmNvbmNhdChUYyk6YS5zbGljZSgpO2xldCByPWE7aWYoIXIpaWYoQXJyYXkuaXNBcnJheShzKSlyPVtdO2Vsc2V7bGV0IG49QXJyYXkuZnJvbSh6NXQua2V5cygpKS5maWx0ZXIobz0+byE9PSJ5YW1sMTEiKS5tYXAobz0+SlNPTi5zdHJpbmdpZnkobykpLmpvaW4oIiwgIik7dGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHNjaGVtYSAiJHtlfSI7IHVzZSBvbmUgb2YgJHtufSBvciBkZWZpbmUgY3VzdG9tVGFncyBhcnJheWApfWlmKEFycmF5LmlzQXJyYXkocykpZm9yKGxldCBuIG9mIHMpcj1yLmNvbmNhdChuKTtlbHNlIHR5cGVvZiBzPT0iZnVuY3Rpb24iJiYocj1zKHIuc2xpY2UoKSkpO3JldHVybiB0JiYocj1yLmNvbmNhdChUYykpLHIucmVkdWNlKChuLG8pPT57bGV0IGw9dHlwZW9mIG89PSJzdHJpbmciP0M1dFtvXTpvO2lmKCFsKXtsZXQgcD1KU09OLnN0cmluZ2lmeShvKSxkPU9iamVjdC5rZXlzKEM1dCkubWFwKHU9PkpTT04uc3RyaW5naWZ5KHUpKS5qb2luKCIsICIpO3Rocm93IG5ldyBFcnJvcihgVW5rbm93biBjdXN0b20gdGFnICR7cH07IHVzZSBvbmUgb2YgJHtkfWApfXJldHVybiBuLmluY2x1ZGVzKGwpfHxuLnB1c2gobCksbn0sW10pfXZhciB6NXQsQzV0LHUzZSxUNXQ9ZygoKT0+e0Q5KCk7JHNlKCk7TDkoKTtJdygpO1c0ZSgpO0c0ZSgpO1k0ZSgpO2I1dCgpO3g1dCgpO1E0ZSgpO3pzZSgpO0o0ZSgpO0lzZSgpO001dCgpO2wzZSgpO2QzZSgpO3o1dD1uZXcgTWFwKFtbImNvcmUiLFo0ZV0sWyJmYWlsc2FmZSIsWyRjLERjLE0wXV0sWyJqc29uIixYNGVdLFsieWFtbDExIixPc2VdLFsieWFtbC0xLjEiLE9zZV1dKSxDNXQ9e2JpbmFyeTpJOSxib29sOkU5LGZsb2F0OlJ3LGZsb2F0RXhwOk53LGZsb2F0TmFOOkF3LGZsb2F0VGltZTpqdyxpbnQ6RncsaW50SGV4OkJ3LGludE9jdDpPdyxpbnRUaW1lOnF3LG1hcDokYyxtZXJnZTpUYyxudWxsOkZwLG9tYXA6TjkscGFpcnM6QTksc2VxOkRjLHNldDpSOSx0aW1lc3RhbXA6eTN9LHUzZT17InRhZzp5YW1sLm9yZywyMDAyOmJpbmFyeSI6STksInRhZzp5YW1sLm9yZywyMDAyOm1lcmdlIjpUYywidGFnOnlhbWwub3JnLDIwMDI6b21hcCI6TjksInRhZzp5YW1sLm9yZywyMDAyOnBhaXJzIjpBOSwidGFnOnlhbWwub3JnLDIwMDI6c2V0IjpSOSwidGFnOnlhbWwub3JnLDIwMDI6dGltZXN0YW1wIjp5M307aShWdywiZ2V0VGFncyIpfSk7dmFyIERBYSxCcCxwM2U9ZygoKT0+e3VzKCk7RDkoKTtMOSgpO0l3KCk7VDV0KCk7REFhPWkoKHMsZSk9PnMua2V5PGUua2V5Py0xOnMua2V5PmUua2V5PzE6MCwic29ydE1hcEVudHJpZXNCeUtleSIpLEJwPWNsYXNzIHN7c3RhdGlje2kodGhpcywiU2NoZW1hIil9Y29uc3RydWN0b3Ioe2NvbXBhdDplLGN1c3RvbVRhZ3M6dCxtZXJnZTphLHJlc29sdmVLbm93blRhZ3M6cixzY2hlbWE6bixzb3J0TWFwRW50cmllczpvLHRvU3RyaW5nRGVmYXVsdHM6bH0pe3RoaXMuY29tcGF0PUFycmF5LmlzQXJyYXkoZSk/VncoZSwiY29tcGF0Iik6ZT9WdyhudWxsLGUpOm51bGwsdGhpcy5uYW1lPXR5cGVvZiBuPT0ic3RyaW5nIiYmbnx8ImNvcmUiLHRoaXMua25vd25UYWdzPXI/dTNlOnt9LHRoaXMudGFncz1Wdyh0LHRoaXMubmFtZSxhKSx0aGlzLnRvU3RyaW5nT3B0aW9ucz1sPz9udWxsLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLHpjLHt2YWx1ZTokY30pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLGJsLHt2YWx1ZTpNMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLHVkLHt2YWx1ZTpEY30pLHRoaXMuc29ydE1hcEVudHJpZXM9dHlwZW9mIG89PSJmdW5jdGlvbiI/bzpvPT09ITA/REFhOm51bGx9Y2xvbmUoKXtsZXQgZT1PYmplY3QuY3JlYXRlKHMucHJvdG90eXBlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHRoaXMpKTtyZXR1cm4gZS50YWdzPXRoaXMudGFncy5zbGljZSgpLGV9fX0pO2Z1bmN0aW9uIGgzZShzLGUpe2xldCB0PVtdLGE9ZS5kaXJlY3RpdmVzPT09ITA7aWYoZS5kaXJlY3RpdmVzIT09ITEmJnMuZGlyZWN0aXZlcyl7bGV0IHA9cy5kaXJlY3RpdmVzLnRvU3RyaW5nKHMpO3A/KHQucHVzaChwKSxhPSEwKTpzLmRpcmVjdGl2ZXMuZG9jU3RhcnQmJihhPSEwKX1hJiZ0LnB1c2goIi0tLSIpO2xldCByPSR3KHMsZSkse2NvbW1lbnRTdHJpbmc6bn09ci5vcHRpb25zO2lmKHMuY29tbWVudEJlZm9yZSl7dC5sZW5ndGghPT0xJiZ0LnVuc2hpZnQoIiIpO2xldCBwPW4ocy5jb21tZW50QmVmb3JlKTt0LnVuc2hpZnQocWwocCwiIikpfWxldCBvPSExLGw9bnVsbDtpZihzLmNvbnRlbnRzKXtpZihJYShzLmNvbnRlbnRzKSl7aWYocy5jb250ZW50cy5zcGFjZUJlZm9yZSYmYSYmdC5wdXNoKCIiKSxzLmNvbnRlbnRzLmNvbW1lbnRCZWZvcmUpe2xldCB1PW4ocy5jb250ZW50cy5jb21tZW50QmVmb3JlKTt0LnB1c2gocWwodSwiIikpfXIuZm9yY2VCbG9ja0luZGVudD0hIXMuY29tbWVudCxsPXMuY29udGVudHMuY29tbWVudH1sZXQgcD1sP3ZvaWQgMDooKT0+bz0hMCxkPW1kKHMuY29udGVudHMsciwoKT0+bD1udWxsLHApO2wmJihkKz1MMShkLCIiLG4obCkpKSwoZFswXT09PSJ8Inx8ZFswXT09PSI+IikmJnRbdC5sZW5ndGgtMV09PT0iLS0tIj90W3QubGVuZ3RoLTFdPWAtLS0gJHtkfWA6dC5wdXNoKGQpfWVsc2UgdC5wdXNoKG1kKHMuY29udGVudHMscikpO2lmKHMuZGlyZWN0aXZlcz8uZG9jRW5kKWlmKHMuY29tbWVudCl7bGV0IHA9bihzLmNvbW1lbnQpO3AuaW5jbHVkZXMoYApgKT8odC5wdXNoKCIuLi4iKSx0LnB1c2gocWwocCwiIikpKTp0LnB1c2goYC4uLiAke3B9YCl9ZWxzZSB0LnB1c2goIi4uLiIpO2Vsc2V7bGV0IHA9cy5jb21tZW50O3AmJm8mJihwPXAucmVwbGFjZSgvXlxuKy8sIiIpKSxwJiYoKCFvfHxsKSYmdFt0Lmxlbmd0aC0xXSE9PSIiJiZ0LnB1c2goIiIpLHQucHVzaChxbChuKHApLCIiKSkpfXJldHVybiB0LmpvaW4oYApgKStgCmB9dmFyICQ1dD1nKCgpPT57dXMoKTtEdygpO013KCk7aShoM2UsInN0cmluZ2lmeURvY3VtZW50Iil9KTtmdW5jdGlvbiBPOShzKXtpZihkcyhzKSlyZXR1cm4hMDt0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIGEgWUFNTCBjb2xsZWN0aW9uIGFzIGRvY3VtZW50IGNvbnRlbnRzIil9dmFyIExjLFV3PWcoKCk9PntrdygpO3hzZSgpO3VzKCk7TnAoKTtBcCgpO3AzZSgpOyQ1dCgpO2dzZSgpO040ZSgpO193KCk7STRlKCk7TGM9Y2xhc3Mgc3tzdGF0aWN7aSh0aGlzLCJEb2N1bWVudCIpfWNvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmNvbW1lbnRCZWZvcmU9bnVsbCx0aGlzLmNvbW1lbnQ9bnVsbCx0aGlzLmVycm9ycz1bXSx0aGlzLndhcm5pbmdzPVtdLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLEpvLHt2YWx1ZTp2d30pO2xldCByPW51bGw7dHlwZW9mIHQ9PSJmdW5jdGlvbiJ8fEFycmF5LmlzQXJyYXkodCk/cj10OmE9PT12b2lkIDAmJnQmJihhPXQsdD12b2lkIDApO2xldCBuPU9iamVjdC5hc3NpZ24oe2ludEFzQmlnSW50OiExLGtlZXBTb3VyY2VUb2tlbnM6ITEsbG9nTGV2ZWw6Indhcm4iLHByZXR0eUVycm9yczohMCxzdHJpY3Q6ITAsc3RyaW5nS2V5czohMSx1bmlxdWVLZXlzOiEwLHZlcnNpb246IjEuMiJ9LGEpO3RoaXMub3B0aW9ucz1uO2xldHt2ZXJzaW9uOm99PW47YT8uX2RpcmVjdGl2ZXM/KHRoaXMuZGlyZWN0aXZlcz1hLl9kaXJlY3RpdmVzLmF0RG9jdW1lbnQoKSx0aGlzLmRpcmVjdGl2ZXMueWFtbC5leHBsaWNpdCYmKG89dGhpcy5kaXJlY3RpdmVzLnlhbWwudmVyc2lvbikpOnRoaXMuZGlyZWN0aXZlcz1uZXcgRDEoe3ZlcnNpb246b30pLHRoaXMuc2V0U2NoZW1hKG8sYSksdGhpcy5jb250ZW50cz1lPT09dm9pZCAwP251bGw6dGhpcy5jcmVhdGVOb2RlKGUscixhKX1jbG9uZSgpe2xldCBlPU9iamVjdC5jcmVhdGUocy5wcm90b3R5cGUse1tKb106e3ZhbHVlOnZ3fX0pO3JldHVybiBlLmNvbW1lbnRCZWZvcmU9dGhpcy5jb21tZW50QmVmb3JlLGUuY29tbWVudD10aGlzLmNvbW1lbnQsZS5lcnJvcnM9dGhpcy5lcnJvcnMuc2xpY2UoKSxlLndhcm5pbmdzPXRoaXMud2FybmluZ3Muc2xpY2UoKSxlLm9wdGlvbnM9T2JqZWN0LmFzc2lnbih7fSx0aGlzLm9wdGlvbnMpLHRoaXMuZGlyZWN0aXZlcyYmKGUuZGlyZWN0aXZlcz10aGlzLmRpcmVjdGl2ZXMuY2xvbmUoKSksZS5zY2hlbWE9dGhpcy5zY2hlbWEuY2xvbmUoKSxlLmNvbnRlbnRzPUlhKHRoaXMuY29udGVudHMpP3RoaXMuY29udGVudHMuY2xvbmUoZS5zY2hlbWEpOnRoaXMuY29udGVudHMsdGhpcy5yYW5nZSYmKGUucmFuZ2U9dGhpcy5yYW5nZS5zbGljZSgpKSxlfWFkZChlKXtPOSh0aGlzLmNvbnRlbnRzKSYmdGhpcy5jb250ZW50cy5hZGQoZSl9YWRkSW4oZSx0KXtPOSh0aGlzLmNvbnRlbnRzKSYmdGhpcy5jb250ZW50cy5hZGRJbihlLHQpfWNyZWF0ZUFsaWFzKGUsdCl7aWYoIWUuYW5jaG9yKXtsZXQgYT1mc2UodGhpcyk7ZS5hbmNob3I9IXR8fGEuaGFzKHQpP21zZSh0fHwiYSIsYSk6dH1yZXR1cm4gbmV3IENjKGUuYW5jaG9yKX1jcmVhdGVOb2RlKGUsdCxhKXtsZXQgcjtpZih0eXBlb2YgdD09ImZ1bmN0aW9uIillPXQuY2FsbCh7IiI6ZX0sIiIsZSkscj10O2Vsc2UgaWYoQXJyYXkuaXNBcnJheSh0KSl7bGV0IGY9aShNPT50eXBlb2YgTT09Im51bWJlciJ8fE0gaW5zdGFuY2VvZiBTdHJpbmd8fE0gaW5zdGFuY2VvZiBOdW1iZXIsImtleVRvU3RyIikseT10LmZpbHRlcihmKS5tYXAoU3RyaW5nKTt5Lmxlbmd0aD4wJiYodD10LmNvbmNhdCh5KSkscj10fWVsc2UgYT09PXZvaWQgMCYmdCYmKGE9dCx0PXZvaWQgMCk7bGV0e2FsaWFzRHVwbGljYXRlT2JqZWN0czpuLGFuY2hvclByZWZpeDpvLGZsb3c6bCxrZWVwVW5kZWZpbmVkOnAsb25UYWdPYmo6ZCx0YWc6dX09YT8/e30se29uQW5jaG9yOmMsc2V0QW5jaG9yczpiLHNvdXJjZU9iamVjdHM6dn09QTRlKHRoaXMsb3x8ImEiKSx4PXthbGlhc0R1cGxpY2F0ZU9iamVjdHM6bj8/ITAsa2VlcFVuZGVmaW5lZDpwPz8hMSxvbkFuY2hvcjpjLG9uVGFnT2JqOmQscmVwbGFjZXI6cixzY2hlbWE6dGhpcy5zY2hlbWEsc291cmNlT2JqZWN0czp2fSxtPWhkKGUsdSx4KTtyZXR1cm4gbCYmZHMobSkmJihtLmZsb3c9ITApLGIoKSxtfWNyZWF0ZVBhaXIoZSx0LGE9e30pe2xldCByPXRoaXMuY3JlYXRlTm9kZShlLG51bGwsYSksbj10aGlzLmNyZWF0ZU5vZGUodCxudWxsLGEpO3JldHVybiBuZXcgY2kocixuKX1kZWxldGUoZSl7cmV0dXJuIE85KHRoaXMuY29udGVudHMpP3RoaXMuY29udGVudHMuZGVsZXRlKGUpOiExfWRlbGV0ZUluKGUpe3JldHVybiBnMyhlKT90aGlzLmNvbnRlbnRzPT1udWxsPyExOih0aGlzLmNvbnRlbnRzPW51bGwsITApOk85KHRoaXMuY29udGVudHMpP3RoaXMuY29udGVudHMuZGVsZXRlSW4oZSk6ITF9Z2V0KGUsdCl7cmV0dXJuIGRzKHRoaXMuY29udGVudHMpP3RoaXMuY29udGVudHMuZ2V0KGUsdCk6dm9pZCAwfWdldEluKGUsdCl7cmV0dXJuIGczKGUpPyF0JiZsYSh0aGlzLmNvbnRlbnRzKT90aGlzLmNvbnRlbnRzLnZhbHVlOnRoaXMuY29udGVudHM6ZHModGhpcy5jb250ZW50cyk/dGhpcy5jb250ZW50cy5nZXRJbihlLHQpOnZvaWQgMH1oYXMoZSl7cmV0dXJuIGRzKHRoaXMuY29udGVudHMpP3RoaXMuY29udGVudHMuaGFzKGUpOiExfWhhc0luKGUpe3JldHVybiBnMyhlKT90aGlzLmNvbnRlbnRzIT09dm9pZCAwOmRzKHRoaXMuY29udGVudHMpP3RoaXMuY29udGVudHMuaGFzSW4oZSk6ITF9c2V0KGUsdCl7dGhpcy5jb250ZW50cz09bnVsbD90aGlzLmNvbnRlbnRzPXo5KHRoaXMuc2NoZW1hLFtlXSx0KTpPOSh0aGlzLmNvbnRlbnRzKSYmdGhpcy5jb250ZW50cy5zZXQoZSx0KX1zZXRJbihlLHQpe2czKGUpP3RoaXMuY29udGVudHM9dDp0aGlzLmNvbnRlbnRzPT1udWxsP3RoaXMuY29udGVudHM9ejkodGhpcy5zY2hlbWEsQXJyYXkuZnJvbShlKSx0KTpPOSh0aGlzLmNvbnRlbnRzKSYmdGhpcy5jb250ZW50cy5zZXRJbihlLHQpfXNldFNjaGVtYShlLHQ9e30pe3R5cGVvZiBlPT0ibnVtYmVyIiYmKGU9U3RyaW5nKGUpKTtsZXQgYTtzd2l0Y2goZSl7Y2FzZSIxLjEiOnRoaXMuZGlyZWN0aXZlcz90aGlzLmRpcmVjdGl2ZXMueWFtbC52ZXJzaW9uPSIxLjEiOnRoaXMuZGlyZWN0aXZlcz1uZXcgRDEoe3ZlcnNpb246IjEuMSJ9KSxhPXtyZXNvbHZlS25vd25UYWdzOiExLHNjaGVtYToieWFtbC0xLjEifTticmVhaztjYXNlIjEuMiI6Y2FzZSJuZXh0Ijp0aGlzLmRpcmVjdGl2ZXM/dGhpcy5kaXJlY3RpdmVzLnlhbWwudmVyc2lvbj1lOnRoaXMuZGlyZWN0aXZlcz1uZXcgRDEoe3ZlcnNpb246ZX0pLGE9e3Jlc29sdmVLbm93blRhZ3M6ITAsc2NoZW1hOiJjb3JlIn07YnJlYWs7Y2FzZSBudWxsOnRoaXMuZGlyZWN0aXZlcyYmZGVsZXRlIHRoaXMuZGlyZWN0aXZlcyxhPW51bGw7YnJlYWs7ZGVmYXVsdDp7bGV0IHI9SlNPTi5zdHJpbmdpZnkoZSk7dGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAnMS4xJywgJzEuMicgb3IgbnVsbCBhcyBmaXJzdCBhcmd1bWVudCwgYnV0IGZvdW5kOiAke3J9YCl9fWlmKHQuc2NoZW1hIGluc3RhbmNlb2YgT2JqZWN0KXRoaXMuc2NoZW1hPXQuc2NoZW1hO2Vsc2UgaWYoYSl0aGlzLnNjaGVtYT1uZXcgQnAoT2JqZWN0LmFzc2lnbihhLHQpKTtlbHNlIHRocm93IG5ldyBFcnJvcigiV2l0aCBhIG51bGwgWUFNTCB2ZXJzaW9uLCB0aGUgeyBzY2hlbWE6IFNjaGVtYSB9IG9wdGlvbiBpcyByZXF1aXJlZCIpfXRvSlMoe2pzb246ZSxqc29uQXJnOnQsbWFwQXNNYXA6YSxtYXhBbGlhc0NvdW50OnIsb25BbmNob3I6bixyZXZpdmVyOm99PXt9KXtsZXQgbD17YW5jaG9yczpuZXcgTWFwLGRvYzp0aGlzLGtlZXA6IWUsbWFwQXNNYXA6YT09PSEwLG1hcEtleVdhcm5lZDohMSxtYXhBbGlhc0NvdW50OnR5cGVvZiByPT0ibnVtYmVyIj9yOjEwMH0scD1Tcih0aGlzLmNvbnRlbnRzLHQ/PyIiLGwpO2lmKHR5cGVvZiBuPT0iZnVuY3Rpb24iKWZvcihsZXR7Y291bnQ6ZCxyZXM6dX1vZiBsLmFuY2hvcnMudmFsdWVzKCkpbih1LGQpO3JldHVybiB0eXBlb2Ygbz09ImZ1bmN0aW9uIj9rMChvLHsiIjpwfSwiIixwKTpwfXRvSlNPTihlLHQpe3JldHVybiB0aGlzLnRvSlMoe2pzb246ITAsanNvbkFyZzplLG1hcEFzTWFwOiExLG9uQW5jaG9yOnR9KX10b1N0cmluZyhlPXt9KXtpZih0aGlzLmVycm9ycy5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoIkRvY3VtZW50IHdpdGggZXJyb3JzIGNhbm5vdCBiZSBzdHJpbmdpZmllZCIpO2lmKCJpbmRlbnQiaW4gZSYmKCFOdW1iZXIuaXNJbnRlZ2VyKGUuaW5kZW50KXx8TnVtYmVyKGUuaW5kZW50KTw9MCkpe2xldCB0PUpTT04uc3RyaW5naWZ5KGUuaW5kZW50KTt0aHJvdyBuZXcgRXJyb3IoYCJpbmRlbnQiIG9wdGlvbiBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciwgbm90ICR7dH1gKX1yZXR1cm4gaDNlKHRoaXMsZSl9fTtpKE85LCJhc3NlcnRDb2xsZWN0aW9uIil9KTt2YXIgSHAsa24scXAsRjksV3c9ZygoKT0+e0hwPWNsYXNzIGV4dGVuZHMgRXJyb3J7c3RhdGlje2kodGhpcywiWUFNTEVycm9yIil9Y29uc3RydWN0b3IoZSx0LGEscil7c3VwZXIoKSx0aGlzLm5hbWU9ZSx0aGlzLmNvZGU9YSx0aGlzLm1lc3NhZ2U9cix0aGlzLnBvcz10fX0sa249Y2xhc3MgZXh0ZW5kcyBIcHtzdGF0aWN7aSh0aGlzLCJZQU1MUGFyc2VFcnJvciIpfWNvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigiWUFNTFBhcnNlRXJyb3IiLGUsdCxhKX19LHFwPWNsYXNzIGV4dGVuZHMgSHB7c3RhdGlje2kodGhpcywiWUFNTFdhcm5pbmciKX1jb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoIllBTUxXYXJuaW5nIixlLHQsYSl9fSxGOT1pKChzLGUpPT50PT57aWYodC5wb3NbMF09PT0tMSlyZXR1cm47dC5saW5lUG9zPXQucG9zLm1hcChsPT5lLmxpbmVQb3MobCkpO2xldHtsaW5lOmEsY29sOnJ9PXQubGluZVBvc1swXTt0Lm1lc3NhZ2UrPWAgYXQgbGluZSAke2F9LCBjb2x1bW4gJHtyfWA7bGV0IG49ci0xLG89cy5zdWJzdHJpbmcoZS5saW5lU3RhcnRzW2EtMV0sZS5saW5lU3RhcnRzW2FdKS5yZXBsYWNlKC9bXG5ccl0rJC8sIiIpO2lmKG4+PTYwJiZvLmxlbmd0aD44MCl7bGV0IGw9TWF0aC5taW4obi0zOSxvLmxlbmd0aC03OSk7bz0iXHUyMDI2IitvLnN1YnN0cmluZyhsKSxuLT1sLTF9aWYoby5sZW5ndGg+ODAmJihvPW8uc3Vic3RyaW5nKDAsNzkpKyJcdTIwMjYiKSxhPjEmJi9eICokLy50ZXN0KG8uc3Vic3RyaW5nKDAsbikpKXtsZXQgbD1zLnN1YnN0cmluZyhlLmxpbmVTdGFydHNbYS0yXSxlLmxpbmVTdGFydHNbYS0xXSk7bC5sZW5ndGg+ODAmJihsPWwuc3Vic3RyaW5nKDAsNzkpK2BcdTIwMjYKYCksbz1sK299aWYoL1teIF0vLnRlc3Qobykpe2xldCBsPTEscD10LmxpbmVQb3NbMV07cD8ubGluZT09PWEmJnAuY29sPnImJihsPU1hdGgubWF4KDEsTWF0aC5taW4ocC5jb2wtciw4MC1uKSkpO2xldCBkPSIgIi5yZXBlYXQobikrIl4iLnJlcGVhdChsKTt0Lm1lc3NhZ2UrPWA6Cgoke299CiR7ZH0KYH19LCJwcmV0dGlmeUVycm9yIil9KTtmdW5jdGlvbiBFMShzLHtmbG93OmUsaW5kaWNhdG9yOnQsbmV4dDphLG9mZnNldDpyLG9uRXJyb3I6bixwYXJlbnRJbmRlbnQ6byxzdGFydE9uTmV3bGluZTpsfSl7bGV0IHA9ITEsZD1sLHU9bCxjPSIiLGI9IiIsdj0hMSx4PSExLG09bnVsbCxmPW51bGwseT1udWxsLE09bnVsbCx6PW51bGwsTj1udWxsLEM9bnVsbDtmb3IobGV0ICQgb2Ygcylzd2l0Y2goeCYmKCQudHlwZSE9PSJzcGFjZSImJiQudHlwZSE9PSJuZXdsaW5lIiYmJC50eXBlIT09ImNvbW1hIiYmbigkLm9mZnNldCwiTUlTU0lOR19DSEFSIiwiVGFncyBhbmQgYW5jaG9ycyBtdXN0IGJlIHNlcGFyYXRlZCBmcm9tIHRoZSBuZXh0IHRva2VuIGJ5IHdoaXRlIHNwYWNlIikseD0hMSksbSYmKGQmJiQudHlwZSE9PSJjb21tZW50IiYmJC50eXBlIT09Im5ld2xpbmUiJiZuKG0sIlRBQl9BU19JTkRFTlQiLCJUYWJzIGFyZSBub3QgYWxsb3dlZCBhcyBpbmRlbnRhdGlvbiIpLG09bnVsbCksJC50eXBlKXtjYXNlInNwYWNlIjohZSYmKHQhPT0iZG9jLXN0YXJ0Inx8YT8udHlwZSE9PSJmbG93LWNvbGxlY3Rpb24iKSYmJC5zb3VyY2UuaW5jbHVkZXMoIgkiKSYmKG09JCksdT0hMDticmVhaztjYXNlImNvbW1lbnQiOnt1fHxuKCQsIk1JU1NJTkdfQ0hBUiIsIkNvbW1lbnRzIG11c3QgYmUgc2VwYXJhdGVkIGZyb20gb3RoZXIgdG9rZW5zIGJ5IHdoaXRlIHNwYWNlIGNoYXJhY3RlcnMiKTtsZXQgRT0kLnNvdXJjZS5zdWJzdHJpbmcoMSl8fCIgIjtjP2MrPWIrRTpjPUUsYj0iIixkPSExO2JyZWFrfWNhc2UibmV3bGluZSI6ZD9jP2MrPSQuc291cmNlOighTnx8dCE9PSJzZXEtaXRlbS1pbmQiKSYmKHA9ITApOmIrPSQuc291cmNlLGQ9ITAsdj0hMCwoZnx8eSkmJihNPSQpLHU9ITA7YnJlYWs7Y2FzZSJhbmNob3IiOmYmJm4oJCwiTVVMVElQTEVfQU5DSE9SUyIsIkEgbm9kZSBjYW4gaGF2ZSBhdCBtb3N0IG9uZSBhbmNob3IiKSwkLnNvdXJjZS5lbmRzV2l0aCgiOiIpJiZuKCQub2Zmc2V0KyQuc291cmNlLmxlbmd0aC0xLCJCQURfQUxJQVMiLCJBbmNob3IgZW5kaW5nIGluIDogaXMgYW1iaWd1b3VzIiwhMCksZj0kLEM/PyhDPSQub2Zmc2V0KSxkPSExLHU9ITEseD0hMDticmVhaztjYXNlInRhZyI6e3kmJm4oJCwiTVVMVElQTEVfVEFHUyIsIkEgbm9kZSBjYW4gaGF2ZSBhdCBtb3N0IG9uZSB0YWciKSx5PSQsQz8/KEM9JC5vZmZzZXQpLGQ9ITEsdT0hMSx4PSEwO2JyZWFrfWNhc2UgdDooZnx8eSkmJm4oJCwiQkFEX1BST1BfT1JERVIiLGBBbmNob3JzIGFuZCB0YWdzIG11c3QgYmUgYWZ0ZXIgdGhlICR7JC5zb3VyY2V9IGluZGljYXRvcmApLE4mJm4oJCwiVU5FWFBFQ1RFRF9UT0tFTiIsYFVuZXhwZWN0ZWQgJHskLnNvdXJjZX0gaW4gJHtlPz8iY29sbGVjdGlvbiJ9YCksTj0kLGQ9dD09PSJzZXEtaXRlbS1pbmQifHx0PT09ImV4cGxpY2l0LWtleS1pbmQiLHU9ITE7YnJlYWs7Y2FzZSJjb21tYSI6aWYoZSl7eiYmbigkLCJVTkVYUEVDVEVEX1RPS0VOIixgVW5leHBlY3RlZCAsIGluICR7ZX1gKSx6PSQsZD0hMSx1PSExO2JyZWFrfWRlZmF1bHQ6bigkLCJVTkVYUEVDVEVEX1RPS0VOIixgVW5leHBlY3RlZCAkeyQudHlwZX0gdG9rZW5gKSxkPSExLHU9ITF9bGV0IF89c1tzLmxlbmd0aC0xXSxPPV8/Xy5vZmZzZXQrXy5zb3VyY2UubGVuZ3RoOnI7cmV0dXJuIHgmJmEmJmEudHlwZSE9PSJzcGFjZSImJmEudHlwZSE9PSJuZXdsaW5lIiYmYS50eXBlIT09ImNvbW1hIiYmKGEudHlwZSE9PSJzY2FsYXIifHxhLnNvdXJjZSE9PSIiKSYmbihhLm9mZnNldCwiTUlTU0lOR19DSEFSIiwiVGFncyBhbmQgYW5jaG9ycyBtdXN0IGJlIHNlcGFyYXRlZCBmcm9tIHRoZSBuZXh0IHRva2VuIGJ5IHdoaXRlIHNwYWNlIiksbSYmKGQmJm0uaW5kZW50PD1vfHxhPy50eXBlPT09ImJsb2NrLW1hcCJ8fGE/LnR5cGU9PT0iYmxvY2stc2VxIikmJm4obSwiVEFCX0FTX0lOREVOVCIsIlRhYnMgYXJlIG5vdCBhbGxvd2VkIGFzIGluZGVudGF0aW9uIikse2NvbW1hOnosZm91bmQ6TixzcGFjZUJlZm9yZTpwLGNvbW1lbnQ6YyxoYXNOZXdsaW5lOnYsYW5jaG9yOmYsdGFnOnksbmV3bGluZUFmdGVyUHJvcDpNLGVuZDpPLHN0YXJ0OkM/P099fXZhciBHdz1nKCgpPT57aShFMSwicmVzb2x2ZVByb3BzIil9KTtmdW5jdGlvbiB6MChzKXtpZighcylyZXR1cm4gbnVsbDtzd2l0Y2gocy50eXBlKXtjYXNlImFsaWFzIjpjYXNlInNjYWxhciI6Y2FzZSJkb3VibGUtcXVvdGVkLXNjYWxhciI6Y2FzZSJzaW5nbGUtcXVvdGVkLXNjYWxhciI6aWYocy5zb3VyY2UuaW5jbHVkZXMoYApgKSlyZXR1cm4hMDtpZihzLmVuZCl7Zm9yKGxldCBlIG9mIHMuZW5kKWlmKGUudHlwZT09PSJuZXdsaW5lIilyZXR1cm4hMH1yZXR1cm4hMTtjYXNlImZsb3ctY29sbGVjdGlvbiI6Zm9yKGxldCBlIG9mIHMuaXRlbXMpe2ZvcihsZXQgdCBvZiBlLnN0YXJ0KWlmKHQudHlwZT09PSJuZXdsaW5lIilyZXR1cm4hMDtpZihlLnNlcCl7Zm9yKGxldCB0IG9mIGUuc2VwKWlmKHQudHlwZT09PSJuZXdsaW5lIilyZXR1cm4hMH1pZih6MChlLmtleSl8fHowKGUudmFsdWUpKXJldHVybiEwfXJldHVybiExO2RlZmF1bHQ6cmV0dXJuITB9fXZhciBGc2U9ZygoKT0+e2koejAsImNvbnRhaW5zTmV3bGluZSIpfSk7ZnVuY3Rpb24gQjkocyxlLHQpe2lmKGU/LnR5cGU9PT0iZmxvdy1jb2xsZWN0aW9uIil7bGV0IGE9ZS5lbmRbMF07YS5pbmRlbnQ9PT1zJiYoYS5zb3VyY2U9PT0iXSJ8fGEuc291cmNlPT09In0iKSYmejAoZSkmJnQoYSwiQkFEX0lOREVOVCIsIkZsb3cgZW5kIGluZGljYXRvciBzaG91bGQgYmUgbW9yZSBpbmRlbnRlZCB0aGFuIHBhcmVudCIsITApfX12YXIgZjNlPWcoKCk9PntGc2UoKTtpKEI5LCJmbG93SW5kZW50Q2hlY2siKX0pO2Z1bmN0aW9uIEt3KHMsZSx0KXtsZXR7dW5pcXVlS2V5czphfT1zLm9wdGlvbnM7aWYoYT09PSExKXJldHVybiExO2xldCByPXR5cGVvZiBhPT0iZnVuY3Rpb24iP2E6KG4sbyk9Pm49PT1vfHxsYShuKSYmbGEobykmJm4udmFsdWU9PT1vLnZhbHVlO3JldHVybiBlLnNvbWUobj0+cihuLmtleSx0KSl9dmFyIG0zZT1nKCgpPT57dXMoKTtpKEt3LCJtYXBJbmNsdWRlcyIpfSk7ZnVuY3Rpb24gZzNlKHtjb21wb3NlTm9kZTpzLGNvbXBvc2VFbXB0eU5vZGU6ZX0sdCxhLHIsbil7bGV0IG89bj8ubm9kZUNsYXNzPz95aSxsPW5ldyBvKHQuc2NoZW1hKTt0LmF0Um9vdCYmKHQuYXRSb290PSExKTtsZXQgcD1hLm9mZnNldCxkPW51bGw7Zm9yKGxldCB1IG9mIGEuaXRlbXMpe2xldHtzdGFydDpjLGtleTpiLHNlcDp2LHZhbHVlOnh9PXUsbT1FMShjLHtpbmRpY2F0b3I6ImV4cGxpY2l0LWtleS1pbmQiLG5leHQ6Yj8/dj8uWzBdLG9mZnNldDpwLG9uRXJyb3I6cixwYXJlbnRJbmRlbnQ6YS5pbmRlbnQsc3RhcnRPbk5ld2xpbmU6ITB9KSxmPSFtLmZvdW5kO2lmKGYpe2lmKGImJihiLnR5cGU9PT0iYmxvY2stc2VxIj9yKHAsIkJMT0NLX0FTX0lNUExJQ0lUX0tFWSIsIkEgYmxvY2sgc2VxdWVuY2UgbWF5IG5vdCBiZSB1c2VkIGFzIGFuIGltcGxpY2l0IG1hcCBrZXkiKToiaW5kZW50ImluIGImJmIuaW5kZW50IT09YS5pbmRlbnQmJnIocCwiQkFEX0lOREVOVCIsRDV0KSksIW0uYW5jaG9yJiYhbS50YWcmJiF2KXtkPW0uZW5kLG0uY29tbWVudCYmKGwuY29tbWVudD9sLmNvbW1lbnQrPWAKYCttLmNvbW1lbnQ6bC5jb21tZW50PW0uY29tbWVudCk7Y29udGludWV9KG0ubmV3bGluZUFmdGVyUHJvcHx8ejAoYikpJiZyKGI/P2NbYy5sZW5ndGgtMV0sIk1VTFRJTElORV9JTVBMSUNJVF9LRVkiLCJJbXBsaWNpdCBrZXlzIG5lZWQgdG8gYmUgb24gYSBzaW5nbGUgbGluZSIpfWVsc2UgbS5mb3VuZD8uaW5kZW50IT09YS5pbmRlbnQmJnIocCwiQkFEX0lOREVOVCIsRDV0KTt0LmF0S2V5PSEwO2xldCB5PW0uZW5kLE09Yj9zKHQsYixtLHIpOmUodCx5LGMsbnVsbCxtLHIpO3Quc2NoZW1hLmNvbXBhdCYmQjkoYS5pbmRlbnQsYixyKSx0LmF0S2V5PSExLEt3KHQsbC5pdGVtcyxNKSYmcih5LCJEVVBMSUNBVEVfS0VZIiwiTWFwIGtleXMgbXVzdCBiZSB1bmlxdWUiKTtsZXQgej1FMSh2Pz9bXSx7aW5kaWNhdG9yOiJtYXAtdmFsdWUtaW5kIixuZXh0Ongsb2Zmc2V0Ok0ucmFuZ2VbMl0sb25FcnJvcjpyLHBhcmVudEluZGVudDphLmluZGVudCxzdGFydE9uTmV3bGluZTohYnx8Yi50eXBlPT09ImJsb2NrLXNjYWxhciJ9KTtpZihwPXouZW5kLHouZm91bmQpe2YmJih4Py50eXBlPT09ImJsb2NrLW1hcCImJiF6Lmhhc05ld2xpbmUmJnIocCwiQkxPQ0tfQVNfSU1QTElDSVRfS0VZIiwiTmVzdGVkIG1hcHBpbmdzIGFyZSBub3QgYWxsb3dlZCBpbiBjb21wYWN0IG1hcHBpbmdzIiksdC5vcHRpb25zLnN0cmljdCYmbS5zdGFydDx6LmZvdW5kLm9mZnNldC0xMDI0JiZyKE0ucmFuZ2UsIktFWV9PVkVSXzEwMjRfQ0hBUlMiLCJUaGUgOiBpbmRpY2F0b3IgbXVzdCBiZSBhdCBtb3N0IDEwMjQgY2hhcnMgYWZ0ZXIgdGhlIHN0YXJ0IG9mIGFuIGltcGxpY2l0IGJsb2NrIG1hcHBpbmcga2V5IikpO2xldCBOPXg/cyh0LHgseixyKTplKHQscCx2LG51bGwseixyKTt0LnNjaGVtYS5jb21wYXQmJkI5KGEuaW5kZW50LHgscikscD1OLnJhbmdlWzJdO2xldCBDPW5ldyBjaShNLE4pO3Qub3B0aW9ucy5rZWVwU291cmNlVG9rZW5zJiYoQy5zcmNUb2tlbj11KSxsLml0ZW1zLnB1c2goQyl9ZWxzZXtmJiZyKE0ucmFuZ2UsIk1JU1NJTkdfQ0hBUiIsIkltcGxpY2l0IG1hcCBrZXlzIG5lZWQgdG8gYmUgZm9sbG93ZWQgYnkgbWFwIHZhbHVlcyIpLHouY29tbWVudCYmKE0uY29tbWVudD9NLmNvbW1lbnQrPWAKYCt6LmNvbW1lbnQ6TS5jb21tZW50PXouY29tbWVudCk7bGV0IE49bmV3IGNpKE0pO3Qub3B0aW9ucy5rZWVwU291cmNlVG9rZW5zJiYoTi5zcmNUb2tlbj11KSxsLml0ZW1zLnB1c2goTil9fXJldHVybiBkJiZkPHAmJnIoZCwiSU1QT1NTSUJMRSIsIk1hcCBjb21tZW50IHdpdGggdHJhaWxpbmcgY29udGVudCIpLGwucmFuZ2U9W2Eub2Zmc2V0LHAsZD8/cF0sbH12YXIgRDV0LEw1dD1nKCgpPT57TnAoKTtScCgpO0d3KCk7RnNlKCk7ZjNlKCk7bTNlKCk7RDV0PSJBbGwgbWFwcGluZyBpdGVtcyBtdXN0IHN0YXJ0IGF0IHRoZSBzYW1lIGNvbHVtbiI7aShnM2UsInJlc29sdmVCbG9ja01hcCIpfSk7ZnVuY3Rpb24gYjNlKHtjb21wb3NlTm9kZTpzLGNvbXBvc2VFbXB0eU5vZGU6ZX0sdCxhLHIsbil7bGV0IG89bj8ubm9kZUNsYXNzPz9WcixsPW5ldyBvKHQuc2NoZW1hKTt0LmF0Um9vdCYmKHQuYXRSb290PSExKSx0LmF0S2V5JiYodC5hdEtleT0hMSk7bGV0IHA9YS5vZmZzZXQsZD1udWxsO2ZvcihsZXR7c3RhcnQ6dSx2YWx1ZTpjfW9mIGEuaXRlbXMpe2xldCBiPUUxKHUse2luZGljYXRvcjoic2VxLWl0ZW0taW5kIixuZXh0OmMsb2Zmc2V0OnAsb25FcnJvcjpyLHBhcmVudEluZGVudDphLmluZGVudCxzdGFydE9uTmV3bGluZTohMH0pO2lmKCFiLmZvdW5kKWlmKGIuYW5jaG9yfHxiLnRhZ3x8YyljPy50eXBlPT09ImJsb2NrLXNlcSI/cihiLmVuZCwiQkFEX0lOREVOVCIsIkFsbCBzZXF1ZW5jZSBpdGVtcyBtdXN0IHN0YXJ0IGF0IHRoZSBzYW1lIGNvbHVtbiIpOnIocCwiTUlTU0lOR19DSEFSIiwiU2VxdWVuY2UgaXRlbSB3aXRob3V0IC0gaW5kaWNhdG9yIik7ZWxzZXtkPWIuZW5kLGIuY29tbWVudCYmKGwuY29tbWVudD1iLmNvbW1lbnQpO2NvbnRpbnVlfWxldCB2PWM/cyh0LGMsYixyKTplKHQsYi5lbmQsdSxudWxsLGIscik7dC5zY2hlbWEuY29tcGF0JiZCOShhLmluZGVudCxjLHIpLHA9di5yYW5nZVsyXSxsLml0ZW1zLnB1c2godil9cmV0dXJuIGwucmFuZ2U9W2Eub2Zmc2V0LHAsZD8/cF0sbH12YXIgRTV0PWcoKCk9PntPcCgpO0d3KCk7ZjNlKCk7aShiM2UsInJlc29sdmVCbG9ja1NlcSIpfSk7ZnVuY3Rpb24gUDEocyxlLHQsYSl7bGV0IHI9IiI7aWYocyl7bGV0IG49ITEsbz0iIjtmb3IobGV0IGwgb2Ygcyl7bGV0e3NvdXJjZTpwLHR5cGU6ZH09bDtzd2l0Y2goZCl7Y2FzZSJzcGFjZSI6bj0hMDticmVhaztjYXNlImNvbW1lbnQiOnt0JiYhbiYmYShsLCJNSVNTSU5HX0NIQVIiLCJDb21tZW50cyBtdXN0IGJlIHNlcGFyYXRlZCBmcm9tIG90aGVyIHRva2VucyBieSB3aGl0ZSBzcGFjZSBjaGFyYWN0ZXJzIik7bGV0IHU9cC5zdWJzdHJpbmcoMSl8fCIgIjtyP3IrPW8rdTpyPXUsbz0iIjticmVha31jYXNlIm5ld2xpbmUiOnImJihvKz1wKSxuPSEwO2JyZWFrO2RlZmF1bHQ6YShsLCJVTkVYUEVDVEVEX1RPS0VOIixgVW5leHBlY3RlZCAke2R9IGF0IG5vZGUgZW5kYCl9ZSs9cC5sZW5ndGh9fXJldHVybntjb21tZW50OnIsb2Zmc2V0OmV9fXZhciBIOT1nKCgpPT57aShQMSwicmVzb2x2ZUVuZCIpfSk7ZnVuY3Rpb24geTNlKHtjb21wb3NlTm9kZTpzLGNvbXBvc2VFbXB0eU5vZGU6ZX0sdCxhLHIsbil7bGV0IG89YS5zdGFydC5zb3VyY2U9PT0ieyIsbD1vPyJmbG93IG1hcCI6ImZsb3cgc2VxdWVuY2UiLHA9bj8ubm9kZUNsYXNzPz8obz95aTpWciksZD1uZXcgcCh0LnNjaGVtYSk7ZC5mbG93PSEwO2xldCB1PXQuYXRSb290O3UmJih0LmF0Um9vdD0hMSksdC5hdEtleSYmKHQuYXRLZXk9ITEpO2xldCBjPWEub2Zmc2V0K2Euc3RhcnQuc291cmNlLmxlbmd0aDtmb3IobGV0IGY9MDtmPGEuaXRlbXMubGVuZ3RoOysrZil7bGV0IHk9YS5pdGVtc1tmXSx7c3RhcnQ6TSxrZXk6eixzZXA6Tix2YWx1ZTpDfT15LF89RTEoTSx7ZmxvdzpsLGluZGljYXRvcjoiZXhwbGljaXQta2V5LWluZCIsbmV4dDp6Pz9OPy5bMF0sb2Zmc2V0OmMsb25FcnJvcjpyLHBhcmVudEluZGVudDphLmluZGVudCxzdGFydE9uTmV3bGluZTohMX0pO2lmKCFfLmZvdW5kKXtpZighXy5hbmNob3ImJiFfLnRhZyYmIU4mJiFDKXtmPT09MCYmXy5jb21tYT9yKF8uY29tbWEsIlVORVhQRUNURURfVE9LRU4iLGBVbmV4cGVjdGVkICwgaW4gJHtsfWApOmY8YS5pdGVtcy5sZW5ndGgtMSYmcihfLnN0YXJ0LCJVTkVYUEVDVEVEX1RPS0VOIixgVW5leHBlY3RlZCBlbXB0eSBpdGVtIGluICR7bH1gKSxfLmNvbW1lbnQmJihkLmNvbW1lbnQ/ZC5jb21tZW50Kz1gCmArXy5jb21tZW50OmQuY29tbWVudD1fLmNvbW1lbnQpLGM9Xy5lbmQ7Y29udGludWV9IW8mJnQub3B0aW9ucy5zdHJpY3QmJnowKHopJiZyKHosIk1VTFRJTElORV9JTVBMSUNJVF9LRVkiLCJJbXBsaWNpdCBrZXlzIG9mIGZsb3cgc2VxdWVuY2UgcGFpcnMgbmVlZCB0byBiZSBvbiBhIHNpbmdsZSBsaW5lIil9aWYoZj09PTApXy5jb21tYSYmcihfLmNvbW1hLCJVTkVYUEVDVEVEX1RPS0VOIixgVW5leHBlY3RlZCAsIGluICR7bH1gKTtlbHNlIGlmKF8uY29tbWF8fHIoXy5zdGFydCwiTUlTU0lOR19DSEFSIixgTWlzc2luZyAsIGJldHdlZW4gJHtsfSBpdGVtc2ApLF8uY29tbWVudCl7bGV0IE89IiI7ZTpmb3IobGV0ICQgb2YgTSlzd2l0Y2goJC50eXBlKXtjYXNlImNvbW1hIjpjYXNlInNwYWNlIjpicmVhaztjYXNlImNvbW1lbnQiOk89JC5zb3VyY2Uuc3Vic3RyaW5nKDEpO2JyZWFrIGU7ZGVmYXVsdDpicmVhayBlfWlmKE8pe2xldCAkPWQuaXRlbXNbZC5pdGVtcy5sZW5ndGgtMV07Q2EoJCkmJigkPSQudmFsdWU/PyQua2V5KSwkLmNvbW1lbnQ/JC5jb21tZW50Kz1gCmArTzokLmNvbW1lbnQ9TyxfLmNvbW1lbnQ9Xy5jb21tZW50LnN1YnN0cmluZyhPLmxlbmd0aCsxKX19aWYoIW8mJiFOJiYhXy5mb3VuZCl7bGV0IE89Qz9zKHQsQyxfLHIpOmUodCxfLmVuZCxOLG51bGwsXyxyKTtkLml0ZW1zLnB1c2goTyksYz1PLnJhbmdlWzJdLHgzZShDKSYmcihPLnJhbmdlLCJCTE9DS19JTl9GTE9XIix2M2UpfWVsc2V7dC5hdEtleT0hMDtsZXQgTz1fLmVuZCwkPXo/cyh0LHosXyxyKTplKHQsTyxNLG51bGwsXyxyKTt4M2UoeikmJnIoJC5yYW5nZSwiQkxPQ0tfSU5fRkxPVyIsdjNlKSx0LmF0S2V5PSExO2xldCBFPUUxKE4/P1tdLHtmbG93OmwsaW5kaWNhdG9yOiJtYXAtdmFsdWUtaW5kIixuZXh0OkMsb2Zmc2V0OiQucmFuZ2VbMl0sb25FcnJvcjpyLHBhcmVudEluZGVudDphLmluZGVudCxzdGFydE9uTmV3bGluZTohMX0pO2lmKEUuZm91bmQpe2lmKCFvJiYhXy5mb3VuZCYmdC5vcHRpb25zLnN0cmljdCl7aWYoTilmb3IobGV0IFMgb2YgTil7aWYoUz09PUUuZm91bmQpYnJlYWs7aWYoUy50eXBlPT09Im5ld2xpbmUiKXtyKFMsIk1VTFRJTElORV9JTVBMSUNJVF9LRVkiLCJJbXBsaWNpdCBrZXlzIG9mIGZsb3cgc2VxdWVuY2UgcGFpcnMgbmVlZCB0byBiZSBvbiBhIHNpbmdsZSBsaW5lIik7YnJlYWt9fV8uc3RhcnQ8RS5mb3VuZC5vZmZzZXQtMTAyNCYmcihFLmZvdW5kLCJLRVlfT1ZFUl8xMDI0X0NIQVJTIiwiVGhlIDogaW5kaWNhdG9yIG11c3QgYmUgYXQgbW9zdCAxMDI0IGNoYXJzIGFmdGVyIHRoZSBzdGFydCBvZiBhbiBpbXBsaWNpdCBmbG93IHNlcXVlbmNlIGtleSIpfX1lbHNlIEMmJigic291cmNlImluIEMmJkMuc291cmNlPy5bMF09PT0iOiI/cihDLCJNSVNTSU5HX0NIQVIiLGBNaXNzaW5nIHNwYWNlIGFmdGVyIDogaW4gJHtsfWApOnIoRS5zdGFydCwiTUlTU0lOR19DSEFSIixgTWlzc2luZyAsIG9yIDogYmV0d2VlbiAke2x9IGl0ZW1zYCkpO2xldCBIPUM/cyh0LEMsRSxyKTpFLmZvdW5kP2UodCxFLmVuZCxOLG51bGwsRSxyKTpudWxsO0g/eDNlKEMpJiZyKEgucmFuZ2UsIkJMT0NLX0lOX0ZMT1ciLHYzZSk6RS5jb21tZW50JiYoJC5jb21tZW50PyQuY29tbWVudCs9YApgK0UuY29tbWVudDokLmNvbW1lbnQ9RS5jb21tZW50KTtsZXQgaz1uZXcgY2koJCxIKTtpZih0Lm9wdGlvbnMua2VlcFNvdXJjZVRva2VucyYmKGsuc3JjVG9rZW49eSksbyl7bGV0IFM9ZDtLdyh0LFMuaXRlbXMsJCkmJnIoTywiRFVQTElDQVRFX0tFWSIsIk1hcCBrZXlzIG11c3QgYmUgdW5pcXVlIiksUy5pdGVtcy5wdXNoKGspfWVsc2V7bGV0IFM9bmV3IHlpKHQuc2NoZW1hKTtTLmZsb3c9ITAsUy5pdGVtcy5wdXNoKGspO2xldCBJPShIPz8kKS5yYW5nZTtTLnJhbmdlPVskLnJhbmdlWzBdLElbMV0sSVsyXV0sZC5pdGVtcy5wdXNoKFMpfWM9SD9ILnJhbmdlWzJdOkUuZW5kfX1sZXQgYj1vPyJ9IjoiXSIsW3YsLi4ueF09YS5lbmQsbT1jO2lmKHY/LnNvdXJjZT09PWIpbT12Lm9mZnNldCt2LnNvdXJjZS5sZW5ndGg7ZWxzZXtsZXQgZj1sWzBdLnRvVXBwZXJDYXNlKCkrbC5zdWJzdHJpbmcoMSkseT11P2Ake2Z9IG11c3QgZW5kIHdpdGggYSAke2J9YDpgJHtmfSBpbiBibG9jayBjb2xsZWN0aW9uIG11c3QgYmUgc3VmZmljaWVudGx5IGluZGVudGVkIGFuZCBlbmQgd2l0aCBhICR7Yn1gO3IoYyx1PyJNSVNTSU5HX0NIQVIiOiJCQURfSU5ERU5UIix5KSx2JiZ2LnNvdXJjZS5sZW5ndGghPT0xJiZ4LnVuc2hpZnQodil9aWYoeC5sZW5ndGg+MCl7bGV0IGY9UDEoeCxtLHQub3B0aW9ucy5zdHJpY3Qscik7Zi5jb21tZW50JiYoZC5jb21tZW50P2QuY29tbWVudCs9YApgK2YuY29tbWVudDpkLmNvbW1lbnQ9Zi5jb21tZW50KSxkLnJhbmdlPVthLm9mZnNldCxtLGYub2Zmc2V0XX1lbHNlIGQucmFuZ2U9W2Eub2Zmc2V0LG0sbV07cmV0dXJuIGR9dmFyIHYzZSx4M2UsUDV0PWcoKCk9Pnt1cygpO05wKCk7UnAoKTtPcCgpO0g5KCk7R3coKTtGc2UoKTttM2UoKTt2M2U9IkJsb2NrIGNvbGxlY3Rpb25zIGFyZSBub3QgYWxsb3dlZCB3aXRoaW4gZmxvdyBjb2xsZWN0aW9ucyIseDNlPWkocz0+cyYmKHMudHlwZT09PSJibG9jay1tYXAifHxzLnR5cGU9PT0iYmxvY2stc2VxIiksImlzQmxvY2siKTtpKHkzZSwicmVzb2x2ZUZsb3dDb2xsZWN0aW9uIil9KTtmdW5jdGlvbiB3M2UocyxlLHQsYSxyLG4pe2xldCBvPXQudHlwZT09PSJibG9jay1tYXAiP2czZShzLGUsdCxhLG4pOnQudHlwZT09PSJibG9jay1zZXEiP2IzZShzLGUsdCxhLG4pOnkzZShzLGUsdCxhLG4pLGw9by5jb25zdHJ1Y3RvcjtyZXR1cm4gcj09PSIhInx8cj09PWwudGFnTmFtZT8oby50YWc9bC50YWdOYW1lLG8pOihyJiYoby50YWc9ciksbyl9ZnVuY3Rpb24gazNlKHMsZSx0LGEscil7bGV0IG49YS50YWcsbz1uP2UuZGlyZWN0aXZlcy50YWdOYW1lKG4uc291cmNlLGI9PnIobiwiVEFHX1JFU09MVkVfRkFJTEVEIixiKSk6bnVsbDtpZih0LnR5cGU9PT0iYmxvY2stc2VxIil7bGV0e2FuY2hvcjpiLG5ld2xpbmVBZnRlclByb3A6dn09YSx4PWImJm4/Yi5vZmZzZXQ+bi5vZmZzZXQ/YjpuOmI/P247eCYmKCF2fHx2Lm9mZnNldDx4Lm9mZnNldCkmJnIoeCwiTUlTU0lOR19DSEFSIiwiTWlzc2luZyBuZXdsaW5lIGFmdGVyIGJsb2NrIHNlcXVlbmNlIHByb3BzIil9bGV0IGw9dC50eXBlPT09ImJsb2NrLW1hcCI/Im1hcCI6dC50eXBlPT09ImJsb2NrLXNlcSI/InNlcSI6dC5zdGFydC5zb3VyY2U9PT0ieyI/Im1hcCI6InNlcSI7aWYoIW58fCFvfHxvPT09IiEifHxvPT09eWkudGFnTmFtZSYmbD09PSJtYXAifHxvPT09VnIudGFnTmFtZSYmbD09PSJzZXEiKXJldHVybiB3M2UocyxlLHQscixvKTtsZXQgcD1lLnNjaGVtYS50YWdzLmZpbmQoYj0+Yi50YWc9PT1vJiZiLmNvbGxlY3Rpb249PT1sKTtpZighcCl7bGV0IGI9ZS5zY2hlbWEua25vd25UYWdzW29dO2lmKGI/LmNvbGxlY3Rpb249PT1sKWUuc2NoZW1hLnRhZ3MucHVzaChPYmplY3QuYXNzaWduKHt9LGIse2RlZmF1bHQ6ITF9KSkscD1iO2Vsc2UgcmV0dXJuIGI/cihuLCJCQURfQ09MTEVDVElPTl9UWVBFIixgJHtiLnRhZ30gdXNlZCBmb3IgJHtsfSBjb2xsZWN0aW9uLCBidXQgZXhwZWN0cyAke2IuY29sbGVjdGlvbj8/InNjYWxhciJ9YCwhMCk6cihuLCJUQUdfUkVTT0xWRV9GQUlMRUQiLGBVbnJlc29sdmVkIHRhZzogJHtvfWAsITApLHczZShzLGUsdCxyLG8pfWxldCBkPXczZShzLGUsdCxyLG8scCksdT1wLnJlc29sdmU/LihkLGI9PnIobiwiVEFHX1JFU09MVkVfRkFJTEVEIixiKSxlLm9wdGlvbnMpPz9kLGM9SWEodSk/dTpuZXcgTHQodSk7cmV0dXJuIGMucmFuZ2U9ZC5yYW5nZSxjLnRhZz1vLHA/LmZvcm1hdCYmKGMuZm9ybWF0PXAuZm9ybWF0KSxjfXZhciBJNXQ9ZygoKT0+e3VzKCk7X3IoKTtScCgpO09wKCk7TDV0KCk7RTV0KCk7UDV0KCk7aSh3M2UsInJlc29sdmVDb2xsZWN0aW9uIik7aShrM2UsImNvbXBvc2VDb2xsZWN0aW9uIil9KTtmdW5jdGlvbiBZdyhzLGUsdCl7bGV0IGE9ZS5vZmZzZXQscj1MQWEoZSxzLm9wdGlvbnMuc3RyaWN0LHQpO2lmKCFyKXJldHVybnt2YWx1ZToiIix0eXBlOm51bGwsY29tbWVudDoiIixyYW5nZTpbYSxhLGFdfTtsZXQgbj1yLm1vZGU9PT0iPiI/THQuQkxPQ0tfRk9MREVEOkx0LkJMT0NLX0xJVEVSQUwsbz1lLnNvdXJjZT9FQWEoZS5zb3VyY2UpOltdLGw9by5sZW5ndGg7Zm9yKGxldCBtPW8ubGVuZ3RoLTE7bT49MDstLW0pe2xldCBmPW9bbV1bMV07aWYoZj09PSIifHxmPT09IlxyIilsPW07ZWxzZSBicmVha31pZihsPT09MCl7bGV0IG09ci5jaG9tcD09PSIrIiYmby5sZW5ndGg+MD9gCmAucmVwZWF0KE1hdGgubWF4KDEsby5sZW5ndGgtMSkpOiIiLGY9YStyLmxlbmd0aDtyZXR1cm4gZS5zb3VyY2UmJihmKz1lLnNvdXJjZS5sZW5ndGgpLHt2YWx1ZTptLHR5cGU6bixjb21tZW50OnIuY29tbWVudCxyYW5nZTpbYSxmLGZdfX1sZXQgcD1lLmluZGVudCtyLmluZGVudCxkPWUub2Zmc2V0K3IubGVuZ3RoLHU9MDtmb3IobGV0IG09MDttPGw7KyttKXtsZXRbZix5XT1vW21dO2lmKHk9PT0iInx8eT09PSJcciIpci5pbmRlbnQ9PT0wJiZmLmxlbmd0aD5wJiYocD1mLmxlbmd0aCk7ZWxzZXtmLmxlbmd0aDxwJiZ0KGQrZi5sZW5ndGgsIk1JU1NJTkdfQ0hBUiIsIkJsb2NrIHNjYWxhcnMgd2l0aCBtb3JlLWluZGVudGVkIGxlYWRpbmcgZW1wdHkgbGluZXMgbXVzdCB1c2UgYW4gZXhwbGljaXQgaW5kZW50YXRpb24gaW5kaWNhdG9yIiksci5pbmRlbnQ9PT0wJiYocD1mLmxlbmd0aCksdT1tLHA9PT0wJiYhcy5hdFJvb3QmJnQoZCwiQkFEX0lOREVOVCIsIkJsb2NrIHNjYWxhciB2YWx1ZXMgaW4gY29sbGVjdGlvbnMgbXVzdCBiZSBpbmRlbnRlZCIpO2JyZWFrfWQrPWYubGVuZ3RoK3kubGVuZ3RoKzF9Zm9yKGxldCBtPW8ubGVuZ3RoLTE7bT49bDstLW0pb1ttXVswXS5sZW5ndGg+cCYmKGw9bSsxKTtsZXQgYz0iIixiPSIiLHY9ITE7Zm9yKGxldCBtPTA7bTx1OysrbSljKz1vW21dWzBdLnNsaWNlKHApK2AKYDtmb3IobGV0IG09dTttPGw7KyttKXtsZXRbZix5XT1vW21dO2QrPWYubGVuZ3RoK3kubGVuZ3RoKzE7bGV0IE09eVt5Lmxlbmd0aC0xXT09PSJcciI7aWYoTSYmKHk9eS5zbGljZSgwLC0xKSkseSYmZi5sZW5ndGg8cCl7bGV0IE49YEJsb2NrIHNjYWxhciBsaW5lcyBtdXN0IG5vdCBiZSBsZXNzIGluZGVudGVkIHRoYW4gdGhlaXIgJHtyLmluZGVudD8iZXhwbGljaXQgaW5kZW50YXRpb24gaW5kaWNhdG9yIjoiZmlyc3QgbGluZSJ9YDt0KGQteS5sZW5ndGgtKE0/MjoxKSwiQkFEX0lOREVOVCIsTiksZj0iIn1uPT09THQuQkxPQ0tfTElURVJBTD8oYys9YitmLnNsaWNlKHApK3ksYj1gCmApOmYubGVuZ3RoPnB8fHlbMF09PT0iCSI/KGI9PT0iICI/Yj1gCmA6IXYmJmI9PT1gCmAmJihiPWAKCmApLGMrPWIrZi5zbGljZShwKSt5LGI9YApgLHY9ITApOnk9PT0iIj9iPT09YApgP2MrPWAKYDpiPWAKYDooYys9Yit5LGI9IiAiLHY9ITEpfXN3aXRjaChyLmNob21wKXtjYXNlIi0iOmJyZWFrO2Nhc2UiKyI6Zm9yKGxldCBtPWw7bTxvLmxlbmd0aDsrK20pYys9YApgK29bbV1bMF0uc2xpY2UocCk7Y1tjLmxlbmd0aC0xXSE9PWAKYCYmKGMrPWAKYCk7YnJlYWs7ZGVmYXVsdDpjKz1gCmB9bGV0IHg9YStyLmxlbmd0aCtlLnNvdXJjZS5sZW5ndGg7cmV0dXJue3ZhbHVlOmMsdHlwZTpuLGNvbW1lbnQ6ci5jb21tZW50LHJhbmdlOlthLHgseF19fWZ1bmN0aW9uIExBYSh7b2Zmc2V0OnMscHJvcHM6ZX0sdCxhKXtpZihlWzBdLnR5cGUhPT0iYmxvY2stc2NhbGFyLWhlYWRlciIpcmV0dXJuIGEoZVswXSwiSU1QT1NTSUJMRSIsIkJsb2NrIHNjYWxhciBoZWFkZXIgbm90IGZvdW5kIiksbnVsbDtsZXR7c291cmNlOnJ9PWVbMF0sbj1yWzBdLG89MCxsPSIiLHA9LTE7Zm9yKGxldCBiPTE7YjxyLmxlbmd0aDsrK2Ipe2xldCB2PXJbYl07aWYoIWwmJih2PT09Ii0ifHx2PT09IisiKSlsPXY7ZWxzZXtsZXQgeD1OdW1iZXIodik7IW8mJng/bz14OnA9PT0tMSYmKHA9cytiKX19cCE9PS0xJiZhKHAsIlVORVhQRUNURURfVE9LRU4iLGBCbG9jayBzY2FsYXIgaGVhZGVyIGluY2x1ZGVzIGV4dHJhIGNoYXJhY3RlcnM6ICR7cn1gKTtsZXQgZD0hMSx1PSIiLGM9ci5sZW5ndGg7Zm9yKGxldCBiPTE7YjxlLmxlbmd0aDsrK2Ipe2xldCB2PWVbYl07c3dpdGNoKHYudHlwZSl7Y2FzZSJzcGFjZSI6ZD0hMDtjYXNlIm5ld2xpbmUiOmMrPXYuc291cmNlLmxlbmd0aDticmVhaztjYXNlImNvbW1lbnQiOnQmJiFkJiZhKHYsIk1JU1NJTkdfQ0hBUiIsIkNvbW1lbnRzIG11c3QgYmUgc2VwYXJhdGVkIGZyb20gb3RoZXIgdG9rZW5zIGJ5IHdoaXRlIHNwYWNlIGNoYXJhY3RlcnMiKSxjKz12LnNvdXJjZS5sZW5ndGgsdT12LnNvdXJjZS5zdWJzdHJpbmcoMSk7YnJlYWs7Y2FzZSJlcnJvciI6YSh2LCJVTkVYUEVDVEVEX1RPS0VOIix2Lm1lc3NhZ2UpLGMrPXYuc291cmNlLmxlbmd0aDticmVhaztkZWZhdWx0OntsZXQgeD1gVW5leHBlY3RlZCB0b2tlbiBpbiBibG9jayBzY2FsYXIgaGVhZGVyOiAke3YudHlwZX1gO2EodiwiVU5FWFBFQ1RFRF9UT0tFTiIseCk7bGV0IG09di5zb3VyY2U7bSYmdHlwZW9mIG09PSJzdHJpbmciJiYoYys9bS5sZW5ndGgpfX19cmV0dXJue21vZGU6bixpbmRlbnQ6byxjaG9tcDpsLGNvbW1lbnQ6dSxsZW5ndGg6Y319ZnVuY3Rpb24gRUFhKHMpe2xldCBlPXMuc3BsaXQoL1xuKCAqKS8pLHQ9ZVswXSxhPXQubWF0Y2goL14oICopLyksbj1bYT8uWzFdP1thWzFdLHQuc2xpY2UoYVsxXS5sZW5ndGgpXTpbIiIsdF1dO2ZvcihsZXQgbz0xO288ZS5sZW5ndGg7bys9MiluLnB1c2goW2Vbb10sZVtvKzFdXSk7cmV0dXJuIG59dmFyIFMzZT1nKCgpPT57X3IoKTtpKFl3LCJyZXNvbHZlQmxvY2tTY2FsYXIiKTtpKExBYSwicGFyc2VCbG9ja1NjYWxhckhlYWRlciIpO2koRUFhLCJzcGxpdExpbmVzIil9KTtmdW5jdGlvbiBadyhzLGUsdCl7bGV0e29mZnNldDphLHR5cGU6cixzb3VyY2U6bixlbmQ6b309cyxsLHAsZD1pKChiLHYseCk9PnQoYStiLHYseCksIl9vbkVycm9yIik7c3dpdGNoKHIpe2Nhc2Uic2NhbGFyIjpsPUx0LlBMQUlOLHA9UEFhKG4sZCk7YnJlYWs7Y2FzZSJzaW5nbGUtcXVvdGVkLXNjYWxhciI6bD1MdC5RVU9URV9TSU5HTEUscD1JQWEobixkKTticmVhaztjYXNlImRvdWJsZS1xdW90ZWQtc2NhbGFyIjpsPUx0LlFVT1RFX0RPVUJMRSxwPUFBYShuLGQpO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIHQocywiVU5FWFBFQ1RFRF9UT0tFTiIsYEV4cGVjdGVkIGEgZmxvdyBzY2FsYXIgdmFsdWUsIGJ1dCBmb3VuZDogJHtyfWApLHt2YWx1ZToiIix0eXBlOm51bGwsY29tbWVudDoiIixyYW5nZTpbYSxhK24ubGVuZ3RoLGErbi5sZW5ndGhdfX1sZXQgdT1hK24ubGVuZ3RoLGM9UDEobyx1LGUsdCk7cmV0dXJue3ZhbHVlOnAsdHlwZTpsLGNvbW1lbnQ6Yy5jb21tZW50LHJhbmdlOlthLHUsYy5vZmZzZXRdfX1mdW5jdGlvbiBQQWEocyxlKXtsZXQgdD0iIjtzd2l0Y2goc1swXSl7Y2FzZSIJIjp0PSJhIHRhYiBjaGFyYWN0ZXIiO2JyZWFrO2Nhc2UiLCI6dD0iZmxvdyBpbmRpY2F0b3IgY2hhcmFjdGVyICwiO2JyZWFrO2Nhc2UiJSI6dD0iZGlyZWN0aXZlIGluZGljYXRvciBjaGFyYWN0ZXIgJSI7YnJlYWs7Y2FzZSJ8IjpjYXNlIj4iOnt0PWBibG9jayBzY2FsYXIgaW5kaWNhdG9yICR7c1swXX1gO2JyZWFrfWNhc2UiQCI6Y2FzZSJgIjp7dD1gcmVzZXJ2ZWQgY2hhcmFjdGVyICR7c1swXX1gO2JyZWFrfX1yZXR1cm4gdCYmZSgwLCJCQURfU0NBTEFSX1NUQVJUIixgUGxhaW4gdmFsdWUgY2Fubm90IHN0YXJ0IHdpdGggJHt0fWApLEE1dChzKX1mdW5jdGlvbiBJQWEocyxlKXtyZXR1cm4oc1tzLmxlbmd0aC0xXSE9PSInInx8cy5sZW5ndGg9PT0xKSYmZShzLmxlbmd0aCwiTUlTU0lOR19DSEFSIiwiTWlzc2luZyBjbG9zaW5nICdxdW90ZSIpLEE1dChzLnNsaWNlKDEsLTEpKS5yZXBsYWNlKC8nJy9nLCInIil9ZnVuY3Rpb24gQTV0KHMpe2xldCBlLHQ7dHJ5e2U9bmV3IFJlZ0V4cChgKC4qPykoPzwhWyAJXSlbIAldKlxyPwpgLCJzeSIpLHQ9bmV3IFJlZ0V4cChgWyAJXSooLio/KSg/Oig/PCFbIAldKVsgCV0qKT9ccj8KYCwic3kiKX1jYXRjaHtlPS8oLio/KVsgXHRdKlxyP1xuL3N5LHQ9L1sgXHRdKiguKj8pWyBcdF0qXHI/XG4vc3l9bGV0IGE9ZS5leGVjKHMpO2lmKCFhKXJldHVybiBzO2xldCByPWFbMV0sbj0iICIsbz1lLmxhc3RJbmRleDtmb3IodC5sYXN0SW5kZXg9bzthPXQuZXhlYyhzKTspYVsxXT09PSIiP249PT1gCmA/cis9bjpuPWAKYDoocis9bithWzFdLG49IiAiKSxvPXQubGFzdEluZGV4O2xldCBsPS9bIFx0XSooLiopL3N5O3JldHVybiBsLmxhc3RJbmRleD1vLGE9bC5leGVjKHMpLHIrbisoYT8uWzFdPz8iIil9ZnVuY3Rpb24gQUFhKHMsZSl7bGV0IHQ9IiI7Zm9yKGxldCBhPTE7YTxzLmxlbmd0aC0xOysrYSl7bGV0IHI9c1thXTtpZighKHI9PT0iXHIiJiZzW2ErMV09PT1gCmApKWlmKHI9PT1gCmApe2xldHtmb2xkOm4sb2Zmc2V0Om99PU5BYShzLGEpO3QrPW4sYT1vfWVsc2UgaWYocj09PSJcXCIpe2xldCBuPXNbKythXSxvPVJBYVtuXTtpZihvKXQrPW87ZWxzZSBpZihuPT09YApgKWZvcihuPXNbYSsxXTtuPT09IiAifHxuPT09IgkiOyluPXNbKythKzFdO2Vsc2UgaWYobj09PSJcciImJnNbYSsxXT09PWAKYClmb3Iobj1zWysrYSsxXTtuPT09IiAifHxuPT09IgkiOyluPXNbKythKzFdO2Vsc2UgaWYobj09PSJ4Inx8bj09PSJ1Inx8bj09PSJVIil7bGV0IGw9bj09PSJ4Ij8yOm49PT0idSI/NDo4O3QrPU9BYShzLGErMSxsLGUpLGErPWx9ZWxzZXtsZXQgbD1zLnN1YnN0cihhLTEsMik7ZShhLTEsIkJBRF9EUV9FU0NBUEUiLGBJbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSAke2x9YCksdCs9bH19ZWxzZSBpZihyPT09IiAifHxyPT09IgkiKXtsZXQgbj1hLG89c1thKzFdO2Zvcig7bz09PSIgInx8bz09PSIJIjspbz1zWysrYSsxXTtvIT09YApgJiYhKG89PT0iXHIiJiZzW2ErMl09PT1gCmApJiYodCs9YT5uP3Muc2xpY2UobixhKzEpOnIpfWVsc2UgdCs9cn1yZXR1cm4oc1tzLmxlbmd0aC0xXSE9PSciJ3x8cy5sZW5ndGg9PT0xKSYmZShzLmxlbmd0aCwiTUlTU0lOR19DSEFSIiwnTWlzc2luZyBjbG9zaW5nICJxdW90ZScpLHR9ZnVuY3Rpb24gTkFhKHMsZSl7bGV0IHQ9IiIsYT1zW2UrMV07Zm9yKDsoYT09PSIgInx8YT09PSIJInx8YT09PWAKYHx8YT09PSJcciIpJiYhKGE9PT0iXHIiJiZzW2UrMl0hPT1gCmApOylhPT09YApgJiYodCs9YApgKSxlKz0xLGE9c1tlKzFdO3JldHVybiB0fHwodD0iICIpLHtmb2xkOnQsb2Zmc2V0OmV9fWZ1bmN0aW9uIE9BYShzLGUsdCxhKXtsZXQgcj1zLnN1YnN0cihlLHQpLG89ci5sZW5ndGg9PT10JiYvXlswLTlhLWZBLUZdKyQvLnRlc3Qocik/cGFyc2VJbnQociwxNik6TmFOO3RyeXtyZXR1cm4gU3RyaW5nLmZyb21Db2RlUG9pbnQobyl9Y2F0Y2h7bGV0IGw9cy5zdWJzdHIoZS0yLHQrMik7cmV0dXJuIGEoZS0yLCJCQURfRFFfRVNDQVBFIixgSW52YWxpZCBlc2NhcGUgc2VxdWVuY2UgJHtsfWApLGx9fXZhciBSQWEsXzNlPWcoKCk9PntfcigpO0g5KCk7aShadywicmVzb2x2ZUZsb3dTY2FsYXIiKTtpKFBBYSwicGxhaW5WYWx1ZSIpO2koSUFhLCJzaW5nbGVRdW90ZWRWYWx1ZSIpO2koQTV0LCJmb2xkTGluZXMiKTtpKEFBYSwiZG91YmxlUXVvdGVkVmFsdWUiKTtpKE5BYSwiZm9sZE5ld2xpbmUiKTtSQWE9ezA6IlwwIixhOiJceDA3IixiOiJcYiIsZToiXHgxQiIsZjoiXGYiLG46YApgLHI6IlxyIix0OiIJIix2OiJcdiIsTjoiXHg4NSIsXzoiXHhBMCIsTDoiXHUyMDI4IixQOiJcdTIwMjkiLCIgIjoiICIsJyInOiciJywiLyI6Ii8iLCJcXCI6IlxcIiwiCSI6IgkifTtpKE9BYSwicGFyc2VDaGFyQ29kZSIpfSk7ZnVuY3Rpb24gQnNlKHMsZSx0LGEpe2xldHt2YWx1ZTpyLHR5cGU6bixjb21tZW50Om8scmFuZ2U6bH09ZS50eXBlPT09ImJsb2NrLXNjYWxhciI/WXcocyxlLGEpOlp3KGUscy5vcHRpb25zLnN0cmljdCxhKSxwPXQ/cy5kaXJlY3RpdmVzLnRhZ05hbWUodC5zb3VyY2UsYz0+YSh0LCJUQUdfUkVTT0xWRV9GQUlMRUQiLGMpKTpudWxsLGQ7cy5vcHRpb25zLnN0cmluZ0tleXMmJnMuYXRLZXk/ZD1zLnNjaGVtYVtibF06cD9kPUZBYShzLnNjaGVtYSxyLHAsdCxhKTplLnR5cGU9PT0ic2NhbGFyIj9kPUJBYShzLHIsZSxhKTpkPXMuc2NoZW1hW2JsXTtsZXQgdTt0cnl7bGV0IGM9ZC5yZXNvbHZlKHIsYj0+YSh0Pz9lLCJUQUdfUkVTT0xWRV9GQUlMRUQiLGIpLHMub3B0aW9ucyk7dT1sYShjKT9jOm5ldyBMdChjKX1jYXRjaChjKXtsZXQgYj1jIGluc3RhbmNlb2YgRXJyb3I/Yy5tZXNzYWdlOlN0cmluZyhjKTthKHQ/P2UsIlRBR19SRVNPTFZFX0ZBSUxFRCIsYiksdT1uZXcgTHQocil9cmV0dXJuIHUucmFuZ2U9bCx1LnNvdXJjZT1yLG4mJih1LnR5cGU9bikscCYmKHUudGFnPXApLGQuZm9ybWF0JiYodS5mb3JtYXQ9ZC5mb3JtYXQpLG8mJih1LmNvbW1lbnQ9byksdX1mdW5jdGlvbiBGQWEocyxlLHQsYSxyKXtpZih0PT09IiEiKXJldHVybiBzW2JsXTtsZXQgbj1bXTtmb3IobGV0IGwgb2Ygcy50YWdzKWlmKCFsLmNvbGxlY3Rpb24mJmwudGFnPT09dClpZihsLmRlZmF1bHQmJmwudGVzdCluLnB1c2gobCk7ZWxzZSByZXR1cm4gbDtmb3IobGV0IGwgb2YgbilpZihsLnRlc3Q/LnRlc3QoZSkpcmV0dXJuIGw7bGV0IG89cy5rbm93blRhZ3NbdF07cmV0dXJuIG8mJiFvLmNvbGxlY3Rpb24/KHMudGFncy5wdXNoKE9iamVjdC5hc3NpZ24oe30sbyx7ZGVmYXVsdDohMSx0ZXN0OnZvaWQgMH0pKSxvKToocihhLCJUQUdfUkVTT0xWRV9GQUlMRUQiLGBVbnJlc29sdmVkIHRhZzogJHt0fWAsdCE9PSJ0YWc6eWFtbC5vcmcsMjAwMjpzdHIiKSxzW2JsXSl9ZnVuY3Rpb24gQkFhKHthdEtleTpzLGRpcmVjdGl2ZXM6ZSxzY2hlbWE6dH0sYSxyLG4pe2xldCBvPXQudGFncy5maW5kKGw9PihsLmRlZmF1bHQ9PT0hMHx8cyYmbC5kZWZhdWx0PT09ImtleSIpJiZsLnRlc3Q/LnRlc3QoYSkpfHx0W2JsXTtpZih0LmNvbXBhdCl7bGV0IGw9dC5jb21wYXQuZmluZChwPT5wLmRlZmF1bHQmJnAudGVzdD8udGVzdChhKSk/P3RbYmxdO2lmKG8udGFnIT09bC50YWcpe2xldCBwPWUudGFnU3RyaW5nKG8udGFnKSxkPWUudGFnU3RyaW5nKGwudGFnKSx1PWBWYWx1ZSBtYXkgYmUgcGFyc2VkIGFzIGVpdGhlciAke3B9IG9yICR7ZH1gO24ociwiVEFHX1JFU09MVkVfRkFJTEVEIix1LCEwKX19cmV0dXJuIG99dmFyIE41dD1nKCgpPT57dXMoKTtfcigpO1MzZSgpO18zZSgpO2koQnNlLCJjb21wb3NlU2NhbGFyIik7aShGQWEsImZpbmRTY2FsYXJUYWdCeU5hbWUiKTtpKEJBYSwiZmluZFNjYWxhclRhZ0J5VGVzdCIpfSk7ZnVuY3Rpb24gTTNlKHMsZSx0KXtpZihlKXt0Pz8odD1lLmxlbmd0aCk7Zm9yKGxldCBhPXQtMTthPj0wOy0tYSl7bGV0IHI9ZVthXTtzd2l0Y2goci50eXBlKXtjYXNlInNwYWNlIjpjYXNlImNvbW1lbnQiOmNhc2UibmV3bGluZSI6cy09ci5zb3VyY2UubGVuZ3RoO2NvbnRpbnVlfWZvcihyPWVbKythXTtyPy50eXBlPT09InNwYWNlIjspcys9ci5zb3VyY2UubGVuZ3RoLHI9ZVsrK2FdO2JyZWFrfX1yZXR1cm4gc312YXIgUjV0PWcoKCk9PntpKE0zZSwiZW1wdHlTY2FsYXJQb3NpdGlvbiIpfSk7ZnVuY3Rpb24gSHNlKHMsZSx0LGEpe2xldCByPXMuYXRLZXkse3NwYWNlQmVmb3JlOm4sY29tbWVudDpvLGFuY2hvcjpsLHRhZzpwfT10LGQsdT0hMDtzd2l0Y2goZS50eXBlKXtjYXNlImFsaWFzIjpkPXFBYShzLGUsYSksKGx8fHApJiZhKGUsIkFMSUFTX1BST1BTIiwiQW4gYWxpYXMgbm9kZSBtdXN0IG5vdCBzcGVjaWZ5IGFueSBwcm9wZXJ0aWVzIik7YnJlYWs7Y2FzZSJzY2FsYXIiOmNhc2Uic2luZ2xlLXF1b3RlZC1zY2FsYXIiOmNhc2UiZG91YmxlLXF1b3RlZC1zY2FsYXIiOmNhc2UiYmxvY2stc2NhbGFyIjpkPUJzZShzLGUscCxhKSxsJiYoZC5hbmNob3I9bC5zb3VyY2Uuc3Vic3RyaW5nKDEpKTticmVhaztjYXNlImJsb2NrLW1hcCI6Y2FzZSJibG9jay1zZXEiOmNhc2UiZmxvdy1jb2xsZWN0aW9uIjp0cnl7ZD1rM2UoSEFhLHMsZSx0LGEpLGwmJihkLmFuY2hvcj1sLnNvdXJjZS5zdWJzdHJpbmcoMSkpfWNhdGNoKGMpe2xldCBiPWMgaW5zdGFuY2VvZiBFcnJvcj9jLm1lc3NhZ2U6U3RyaW5nKGMpO2EoZSwiUkVTT1VSQ0VfRVhIQVVTVElPTiIsYil9YnJlYWs7ZGVmYXVsdDp7bGV0IGM9ZS50eXBlPT09ImVycm9yIj9lLm1lc3NhZ2U6YFVuc3VwcG9ydGVkIHRva2VuICh0eXBlOiAke2UudHlwZX0pYDthKGUsIlVORVhQRUNURURfVE9LRU4iLGMpLHU9ITF9fXJldHVybiBkPz8oZD1YdyhzLGUub2Zmc2V0LHZvaWQgMCxudWxsLHQsYSkpLGwmJmQuYW5jaG9yPT09IiImJmEobCwiQkFEX0FMSUFTIiwiQW5jaG9yIGNhbm5vdCBiZSBhbiBlbXB0eSBzdHJpbmciKSxyJiZzLm9wdGlvbnMuc3RyaW5nS2V5cyYmKCFsYShkKXx8dHlwZW9mIGQudmFsdWUhPSJzdHJpbmcifHxkLnRhZyYmZC50YWchPT0idGFnOnlhbWwub3JnLDIwMDI6c3RyIikmJmEocD8/ZSwiTk9OX1NUUklOR19LRVkiLCJXaXRoIHN0cmluZ0tleXMsIGFsbCBrZXlzIG11c3QgYmUgc3RyaW5ncyIpLG4mJihkLnNwYWNlQmVmb3JlPSEwKSxvJiYoZS50eXBlPT09InNjYWxhciImJmUuc291cmNlPT09IiI/ZC5jb21tZW50PW86ZC5jb21tZW50QmVmb3JlPW8pLHMub3B0aW9ucy5rZWVwU291cmNlVG9rZW5zJiZ1JiYoZC5zcmNUb2tlbj1lKSxkfWZ1bmN0aW9uIFh3KHMsZSx0LGEse3NwYWNlQmVmb3JlOnIsY29tbWVudDpuLGFuY2hvcjpvLHRhZzpsLGVuZDpwfSxkKXtsZXQgdT17dHlwZToic2NhbGFyIixvZmZzZXQ6TTNlKGUsdCxhKSxpbmRlbnQ6LTEsc291cmNlOiIifSxjPUJzZShzLHUsbCxkKTtyZXR1cm4gbyYmKGMuYW5jaG9yPW8uc291cmNlLnN1YnN0cmluZygxKSxjLmFuY2hvcj09PSIiJiZkKG8sIkJBRF9BTElBUyIsIkFuY2hvciBjYW5ub3QgYmUgYW4gZW1wdHkgc3RyaW5nIikpLHImJihjLnNwYWNlQmVmb3JlPSEwKSxuJiYoYy5jb21tZW50PW4sYy5yYW5nZVsyXT1wKSxjfWZ1bmN0aW9uIHFBYSh7b3B0aW9uczpzfSx7b2Zmc2V0OmUsc291cmNlOnQsZW5kOmF9LHIpe2xldCBuPW5ldyBDYyh0LnN1YnN0cmluZygxKSk7bi5zb3VyY2U9PT0iIiYmcihlLCJCQURfQUxJQVMiLCJBbGlhcyBjYW5ub3QgYmUgYW4gZW1wdHkgc3RyaW5nIiksbi5zb3VyY2UuZW5kc1dpdGgoIjoiKSYmcihlK3QubGVuZ3RoLTEsIkJBRF9BTElBUyIsIkFsaWFzIGVuZGluZyBpbiA6IGlzIGFtYmlndW91cyIsITApO2xldCBvPWUrdC5sZW5ndGgsbD1QMShhLG8scy5zdHJpY3Qscik7cmV0dXJuIG4ucmFuZ2U9W2UsbyxsLm9mZnNldF0sbC5jb21tZW50JiYobi5jb21tZW50PWwuY29tbWVudCksbn12YXIgSEFhLE81dD1nKCgpPT57a3coKTt1cygpO0k1dCgpO041dCgpO0g5KCk7UjV0KCk7SEFhPXtjb21wb3NlTm9kZTpIc2UsY29tcG9zZUVtcHR5Tm9kZTpYd307aShIc2UsImNvbXBvc2VOb2RlIik7aShYdywiY29tcG9zZUVtcHR5Tm9kZSIpO2kocUFhLCJjb21wb3NlQWxpYXMiKX0pO2Z1bmN0aW9uIHozZShzLGUse29mZnNldDp0LHN0YXJ0OmEsdmFsdWU6cixlbmQ6bn0sbyl7bGV0IGw9T2JqZWN0LmFzc2lnbih7X2RpcmVjdGl2ZXM6ZX0scykscD1uZXcgTGModm9pZCAwLGwpLGQ9e2F0S2V5OiExLGF0Um9vdDohMCxkaXJlY3RpdmVzOnAuZGlyZWN0aXZlcyxvcHRpb25zOnAub3B0aW9ucyxzY2hlbWE6cC5zY2hlbWF9LHU9RTEoYSx7aW5kaWNhdG9yOiJkb2Mtc3RhcnQiLG5leHQ6cj8/bj8uWzBdLG9mZnNldDp0LG9uRXJyb3I6byxwYXJlbnRJbmRlbnQ6MCxzdGFydE9uTmV3bGluZTohMH0pO3UuZm91bmQmJihwLmRpcmVjdGl2ZXMuZG9jU3RhcnQ9ITAsciYmKHIudHlwZT09PSJibG9jay1tYXAifHxyLnR5cGU9PT0iYmxvY2stc2VxIikmJiF1Lmhhc05ld2xpbmUmJm8odS5lbmQsIk1JU1NJTkdfQ0hBUiIsIkJsb2NrIGNvbGxlY3Rpb24gY2Fubm90IHN0YXJ0IG9uIHNhbWUgbGluZSB3aXRoIGRpcmVjdGl2ZXMtZW5kIG1hcmtlciIpKSxwLmNvbnRlbnRzPXI/SHNlKGQscix1LG8pOlh3KGQsdS5lbmQsYSxudWxsLHUsbyk7bGV0IGM9cC5jb250ZW50cy5yYW5nZVsyXSxiPVAxKG4sYywhMSxvKTtyZXR1cm4gYi5jb21tZW50JiYocC5jb21tZW50PWIuY29tbWVudCkscC5yYW5nZT1bdCxjLGIub2Zmc2V0XSxwfXZhciBGNXQ9ZygoKT0+e1V3KCk7TzV0KCk7SDkoKTtHdygpO2koejNlLCJjb21wb3NlRG9jIil9KTtmdW5jdGlvbiBRdyhzKXtpZih0eXBlb2Ygcz09Im51bWJlciIpcmV0dXJuW3MscysxXTtpZihBcnJheS5pc0FycmF5KHMpKXJldHVybiBzLmxlbmd0aD09PTI/czpbc1swXSxzWzFdXTtsZXR7b2Zmc2V0OmUsc291cmNlOnR9PXM7cmV0dXJuW2UsZSsodHlwZW9mIHQ9PSJzdHJpbmciP3QubGVuZ3RoOjEpXX1mdW5jdGlvbiBCNXQocyl7bGV0IGU9IiIsdD0hMSxhPSExO2ZvcihsZXQgcj0wO3I8cy5sZW5ndGg7KytyKXtsZXQgbj1zW3JdO3N3aXRjaChuWzBdKXtjYXNlIiMiOmUrPShlPT09IiI/IiI6YT9gCgpgOmAKYCkrKG4uc3Vic3RyaW5nKDEpfHwiICIpLHQ9ITAsYT0hMTticmVhaztjYXNlIiUiOnNbcisxXT8uWzBdIT09IiMiJiYocis9MSksdD0hMTticmVhaztkZWZhdWx0OnR8fChhPSEwKSx0PSExfX1yZXR1cm57Y29tbWVudDplLGFmdGVyRW1wdHlMaW5lOmF9fXZhciBDMCxDM2U9ZygoKT0+e0k0ZSgpO1V3KCk7V3coKTt1cygpO0Y1dCgpO0g5KCk7aShRdywiZ2V0RXJyb3JQb3MiKTtpKEI1dCwicGFyc2VQcmVsdWRlIik7QzA9Y2xhc3N7c3RhdGlje2kodGhpcywiQ29tcG9zZXIiKX1jb25zdHJ1Y3RvcihlPXt9KXt0aGlzLmRvYz1udWxsLHRoaXMuYXREaXJlY3RpdmVzPSExLHRoaXMucHJlbHVkZT1bXSx0aGlzLmVycm9ycz1bXSx0aGlzLndhcm5pbmdzPVtdLHRoaXMub25FcnJvcj0odCxhLHIsbik9PntsZXQgbz1Rdyh0KTtuP3RoaXMud2FybmluZ3MucHVzaChuZXcgcXAobyxhLHIpKTp0aGlzLmVycm9ycy5wdXNoKG5ldyBrbihvLGEscikpfSx0aGlzLmRpcmVjdGl2ZXM9bmV3IEQxKHt2ZXJzaW9uOmUudmVyc2lvbnx8IjEuMiJ9KSx0aGlzLm9wdGlvbnM9ZX1kZWNvcmF0ZShlLHQpe2xldHtjb21tZW50OmEsYWZ0ZXJFbXB0eUxpbmU6cn09QjV0KHRoaXMucHJlbHVkZSk7aWYoYSl7bGV0IG49ZS5jb250ZW50cztpZih0KWUuY29tbWVudD1lLmNvbW1lbnQ/YCR7ZS5jb21tZW50fQoke2F9YDphO2Vsc2UgaWYocnx8ZS5kaXJlY3RpdmVzLmRvY1N0YXJ0fHwhbillLmNvbW1lbnRCZWZvcmU9YTtlbHNlIGlmKGRzKG4pJiYhbi5mbG93JiZuLml0ZW1zLmxlbmd0aD4wKXtsZXQgbz1uLml0ZW1zWzBdO0NhKG8pJiYobz1vLmtleSk7bGV0IGw9by5jb21tZW50QmVmb3JlO28uY29tbWVudEJlZm9yZT1sP2Ake2F9CiR7bH1gOmF9ZWxzZXtsZXQgbz1uLmNvbW1lbnRCZWZvcmU7bi5jb21tZW50QmVmb3JlPW8/YCR7YX0KJHtvfWA6YX19dD8oQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoZS5lcnJvcnMsdGhpcy5lcnJvcnMpLEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGUud2FybmluZ3MsdGhpcy53YXJuaW5ncykpOihlLmVycm9ycz10aGlzLmVycm9ycyxlLndhcm5pbmdzPXRoaXMud2FybmluZ3MpLHRoaXMucHJlbHVkZT1bXSx0aGlzLmVycm9ycz1bXSx0aGlzLndhcm5pbmdzPVtdfXN0cmVhbUluZm8oKXtyZXR1cm57Y29tbWVudDpCNXQodGhpcy5wcmVsdWRlKS5jb21tZW50LGRpcmVjdGl2ZXM6dGhpcy5kaXJlY3RpdmVzLGVycm9yczp0aGlzLmVycm9ycyx3YXJuaW5nczp0aGlzLndhcm5pbmdzfX0qY29tcG9zZShlLHQ9ITEsYT0tMSl7Zm9yKGxldCByIG9mIGUpeWllbGQqdGhpcy5uZXh0KHIpO3lpZWxkKnRoaXMuZW5kKHQsYSl9Km5leHQoZSl7c3dpdGNoKGUudHlwZSl7Y2FzZSJkaXJlY3RpdmUiOnRoaXMuZGlyZWN0aXZlcy5hZGQoZS5zb3VyY2UsKHQsYSxyKT0+e2xldCBuPVF3KGUpO25bMF0rPXQsdGhpcy5vbkVycm9yKG4sIkJBRF9ESVJFQ1RJVkUiLGEscil9KSx0aGlzLnByZWx1ZGUucHVzaChlLnNvdXJjZSksdGhpcy5hdERpcmVjdGl2ZXM9ITA7YnJlYWs7Y2FzZSJkb2N1bWVudCI6e2xldCB0PXozZSh0aGlzLm9wdGlvbnMsdGhpcy5kaXJlY3RpdmVzLGUsdGhpcy5vbkVycm9yKTt0aGlzLmF0RGlyZWN0aXZlcyYmIXQuZGlyZWN0aXZlcy5kb2NTdGFydCYmdGhpcy5vbkVycm9yKGUsIk1JU1NJTkdfQ0hBUiIsIk1pc3NpbmcgZGlyZWN0aXZlcy1lbmQvZG9jLXN0YXJ0IGluZGljYXRvciBsaW5lIiksdGhpcy5kZWNvcmF0ZSh0LCExKSx0aGlzLmRvYyYmKHlpZWxkIHRoaXMuZG9jKSx0aGlzLmRvYz10LHRoaXMuYXREaXJlY3RpdmVzPSExO2JyZWFrfWNhc2UiYnl0ZS1vcmRlci1tYXJrIjpjYXNlInNwYWNlIjpicmVhaztjYXNlImNvbW1lbnQiOmNhc2UibmV3bGluZSI6dGhpcy5wcmVsdWRlLnB1c2goZS5zb3VyY2UpO2JyZWFrO2Nhc2UiZXJyb3IiOntsZXQgdD1lLnNvdXJjZT9gJHtlLm1lc3NhZ2V9OiAke0pTT04uc3RyaW5naWZ5KGUuc291cmNlKX1gOmUubWVzc2FnZSxhPW5ldyBrbihRdyhlKSwiVU5FWFBFQ1RFRF9UT0tFTiIsdCk7dGhpcy5hdERpcmVjdGl2ZXN8fCF0aGlzLmRvYz90aGlzLmVycm9ycy5wdXNoKGEpOnRoaXMuZG9jLmVycm9ycy5wdXNoKGEpO2JyZWFrfWNhc2UiZG9jLWVuZCI6e2lmKCF0aGlzLmRvYyl7bGV0IGE9IlVuZXhwZWN0ZWQgZG9jLWVuZCB3aXRob3V0IHByZWNlZGluZyBkb2N1bWVudCI7dGhpcy5lcnJvcnMucHVzaChuZXcga24oUXcoZSksIlVORVhQRUNURURfVE9LRU4iLGEpKTticmVha310aGlzLmRvYy5kaXJlY3RpdmVzLmRvY0VuZD0hMDtsZXQgdD1QMShlLmVuZCxlLm9mZnNldCtlLnNvdXJjZS5sZW5ndGgsdGhpcy5kb2Mub3B0aW9ucy5zdHJpY3QsdGhpcy5vbkVycm9yKTtpZih0aGlzLmRlY29yYXRlKHRoaXMuZG9jLCEwKSx0LmNvbW1lbnQpe2xldCBhPXRoaXMuZG9jLmNvbW1lbnQ7dGhpcy5kb2MuY29tbWVudD1hP2Ake2F9CiR7dC5jb21tZW50fWA6dC5jb21tZW50fXRoaXMuZG9jLnJhbmdlWzJdPXQub2Zmc2V0O2JyZWFrfWRlZmF1bHQ6dGhpcy5lcnJvcnMucHVzaChuZXcga24oUXcoZSksIlVORVhQRUNURURfVE9LRU4iLGBVbnN1cHBvcnRlZCB0b2tlbiAke2UudHlwZX1gKSl9fSplbmQoZT0hMSx0PS0xKXtpZih0aGlzLmRvYyl0aGlzLmRlY29yYXRlKHRoaXMuZG9jLCEwKSx5aWVsZCB0aGlzLmRvYyx0aGlzLmRvYz1udWxsO2Vsc2UgaWYoZSl7bGV0IGE9T2JqZWN0LmFzc2lnbih7X2RpcmVjdGl2ZXM6dGhpcy5kaXJlY3RpdmVzfSx0aGlzLm9wdGlvbnMpLHI9bmV3IExjKHZvaWQgMCxhKTt0aGlzLmF0RGlyZWN0aXZlcyYmdGhpcy5vbkVycm9yKHQsIk1JU1NJTkdfQ0hBUiIsIk1pc3NpbmcgZGlyZWN0aXZlcy1lbmQgaW5kaWNhdG9yIGxpbmUiKSxyLnJhbmdlPVswLHQsdF0sdGhpcy5kZWNvcmF0ZShyLCExKSx5aWVsZCByfX19fSk7ZnVuY3Rpb24gJDNlKHMsZT0hMCx0KXtpZihzKXtsZXQgYT1pKChyLG4sbyk9PntsZXQgbD10eXBlb2Ygcj09Im51bWJlciI/cjpBcnJheS5pc0FycmF5KHIpP3JbMF06ci5vZmZzZXQ7aWYodCl0KGwsbixvKTtlbHNlIHRocm93IG5ldyBrbihbbCxsKzFdLG4sbyl9LCJfb25FcnJvciIpO3N3aXRjaChzLnR5cGUpe2Nhc2Uic2NhbGFyIjpjYXNlInNpbmdsZS1xdW90ZWQtc2NhbGFyIjpjYXNlImRvdWJsZS1xdW90ZWQtc2NhbGFyIjpyZXR1cm4gWncocyxlLGEpO2Nhc2UiYmxvY2stc2NhbGFyIjpyZXR1cm4gWXcoe29wdGlvbnM6e3N0cmljdDplfX0scyxhKX19cmV0dXJuIG51bGx9ZnVuY3Rpb24gRDNlKHMsZSl7bGV0e2ltcGxpY2l0S2V5OnQ9ITEsaW5kZW50OmEsaW5GbG93OnI9ITEsb2Zmc2V0Om49LTEsdHlwZTpvPSJQTEFJTiJ9PWUsbD1mZCh7dHlwZTpvLHZhbHVlOnN9LHtpbXBsaWNpdEtleTp0LGluZGVudDphPjA/IiAiLnJlcGVhdChhKToiIixpbkZsb3c6cixvcHRpb25zOntibG9ja1F1b3RlOiEwLGxpbmVXaWR0aDotMX19KSxwPWUuZW5kPz9be3R5cGU6Im5ld2xpbmUiLG9mZnNldDotMSxpbmRlbnQ6YSxzb3VyY2U6YApgfV07c3dpdGNoKGxbMF0pe2Nhc2UifCI6Y2FzZSI+Ijp7bGV0IGQ9bC5pbmRleE9mKGAKYCksdT1sLnN1YnN0cmluZygwLGQpLGM9bC5zdWJzdHJpbmcoZCsxKStgCmAsYj1be3R5cGU6ImJsb2NrLXNjYWxhci1oZWFkZXIiLG9mZnNldDpuLGluZGVudDphLHNvdXJjZTp1fV07cmV0dXJuIEg1dChiLHApfHxiLnB1c2goe3R5cGU6Im5ld2xpbmUiLG9mZnNldDotMSxpbmRlbnQ6YSxzb3VyY2U6YApgfSkse3R5cGU6ImJsb2NrLXNjYWxhciIsb2Zmc2V0Om4saW5kZW50OmEscHJvcHM6Yixzb3VyY2U6Y319Y2FzZSciJzpyZXR1cm57dHlwZToiZG91YmxlLXF1b3RlZC1zY2FsYXIiLG9mZnNldDpuLGluZGVudDphLHNvdXJjZTpsLGVuZDpwfTtjYXNlIiciOnJldHVybnt0eXBlOiJzaW5nbGUtcXVvdGVkLXNjYWxhciIsb2Zmc2V0Om4saW5kZW50OmEsc291cmNlOmwsZW5kOnB9O2RlZmF1bHQ6cmV0dXJue3R5cGU6InNjYWxhciIsb2Zmc2V0Om4saW5kZW50OmEsc291cmNlOmwsZW5kOnB9fX1mdW5jdGlvbiBMM2UocyxlLHQ9e30pe2xldHthZnRlcktleTphPSExLGltcGxpY2l0S2V5OnI9ITEsaW5GbG93Om49ITEsdHlwZTpvfT10LGw9ImluZGVudCJpbiBzP3MuaW5kZW50Om51bGw7aWYoYSYmdHlwZW9mIGw9PSJudW1iZXIiJiYobCs9MiksIW8pc3dpdGNoKHMudHlwZSl7Y2FzZSJzaW5nbGUtcXVvdGVkLXNjYWxhciI6bz0iUVVPVEVfU0lOR0xFIjticmVhaztjYXNlImRvdWJsZS1xdW90ZWQtc2NhbGFyIjpvPSJRVU9URV9ET1VCTEUiO2JyZWFrO2Nhc2UiYmxvY2stc2NhbGFyIjp7bGV0IGQ9cy5wcm9wc1swXTtpZihkLnR5cGUhPT0iYmxvY2stc2NhbGFyLWhlYWRlciIpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGJsb2NrIHNjYWxhciBoZWFkZXIiKTtvPWQuc291cmNlWzBdPT09Ij4iPyJCTE9DS19GT0xERUQiOiJCTE9DS19MSVRFUkFMIjticmVha31kZWZhdWx0Om89IlBMQUlOIn1sZXQgcD1mZCh7dHlwZTpvLHZhbHVlOmV9LHtpbXBsaWNpdEtleTpyfHxsPT09bnVsbCxpbmRlbnQ6bCE9PW51bGwmJmw+MD8iICIucmVwZWF0KGwpOiIiLGluRmxvdzpuLG9wdGlvbnM6e2Jsb2NrUXVvdGU6ITAsbGluZVdpZHRoOi0xfX0pO3N3aXRjaChwWzBdKXtjYXNlInwiOmNhc2UiPiI6akFhKHMscCk7YnJlYWs7Y2FzZSciJzpUM2UocyxwLCJkb3VibGUtcXVvdGVkLXNjYWxhciIpO2JyZWFrO2Nhc2UiJyI6VDNlKHMscCwic2luZ2xlLXF1b3RlZC1zY2FsYXIiKTticmVhaztkZWZhdWx0OlQzZShzLHAsInNjYWxhciIpfX1mdW5jdGlvbiBqQWEocyxlKXtsZXQgdD1lLmluZGV4T2YoYApgKSxhPWUuc3Vic3RyaW5nKDAsdCkscj1lLnN1YnN0cmluZyh0KzEpK2AKYDtpZihzLnR5cGU9PT0iYmxvY2stc2NhbGFyIil7bGV0IG49cy5wcm9wc1swXTtpZihuLnR5cGUhPT0iYmxvY2stc2NhbGFyLWhlYWRlciIpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGJsb2NrIHNjYWxhciBoZWFkZXIiKTtuLnNvdXJjZT1hLHMuc291cmNlPXJ9ZWxzZXtsZXR7b2Zmc2V0Om59PXMsbz0iaW5kZW50ImluIHM/cy5pbmRlbnQ6LTEsbD1be3R5cGU6ImJsb2NrLXNjYWxhci1oZWFkZXIiLG9mZnNldDpuLGluZGVudDpvLHNvdXJjZTphfV07SDV0KGwsImVuZCJpbiBzP3MuZW5kOnZvaWQgMCl8fGwucHVzaCh7dHlwZToibmV3bGluZSIsb2Zmc2V0Oi0xLGluZGVudDpvLHNvdXJjZTpgCmB9KTtmb3IobGV0IHAgb2YgT2JqZWN0LmtleXMocykpcCE9PSJ0eXBlIiYmcCE9PSJvZmZzZXQiJiZkZWxldGUgc1twXTtPYmplY3QuYXNzaWduKHMse3R5cGU6ImJsb2NrLXNjYWxhciIsaW5kZW50Om8scHJvcHM6bCxzb3VyY2U6cn0pfX1mdW5jdGlvbiBINXQocyxlKXtpZihlKWZvcihsZXQgdCBvZiBlKXN3aXRjaCh0LnR5cGUpe2Nhc2Uic3BhY2UiOmNhc2UiY29tbWVudCI6cy5wdXNoKHQpO2JyZWFrO2Nhc2UibmV3bGluZSI6cmV0dXJuIHMucHVzaCh0KSwhMH1yZXR1cm4hMX1mdW5jdGlvbiBUM2UocyxlLHQpe3N3aXRjaChzLnR5cGUpe2Nhc2Uic2NhbGFyIjpjYXNlImRvdWJsZS1xdW90ZWQtc2NhbGFyIjpjYXNlInNpbmdsZS1xdW90ZWQtc2NhbGFyIjpzLnR5cGU9dCxzLnNvdXJjZT1lO2JyZWFrO2Nhc2UiYmxvY2stc2NhbGFyIjp7bGV0IGE9cy5wcm9wcy5zbGljZSgxKSxyPWUubGVuZ3RoO3MucHJvcHNbMF0udHlwZT09PSJibG9jay1zY2FsYXItaGVhZGVyIiYmKHItPXMucHJvcHNbMF0uc291cmNlLmxlbmd0aCk7Zm9yKGxldCBuIG9mIGEpbi5vZmZzZXQrPXI7ZGVsZXRlIHMucHJvcHMsT2JqZWN0LmFzc2lnbihzLHt0eXBlOnQsc291cmNlOmUsZW5kOmF9KTticmVha31jYXNlImJsb2NrLW1hcCI6Y2FzZSJibG9jay1zZXEiOntsZXQgcj17dHlwZToibmV3bGluZSIsb2Zmc2V0OnMub2Zmc2V0K2UubGVuZ3RoLGluZGVudDpzLmluZGVudCxzb3VyY2U6YApgfTtkZWxldGUgcy5pdGVtcyxPYmplY3QuYXNzaWduKHMse3R5cGU6dCxzb3VyY2U6ZSxlbmQ6W3JdfSk7YnJlYWt9ZGVmYXVsdDp7bGV0IGE9ImluZGVudCJpbiBzP3MuaW5kZW50Oi0xLHI9ImVuZCJpbiBzJiZBcnJheS5pc0FycmF5KHMuZW5kKT9zLmVuZC5maWx0ZXIobj0+bi50eXBlPT09InNwYWNlInx8bi50eXBlPT09ImNvbW1lbnQifHxuLnR5cGU9PT0ibmV3bGluZSIpOltdO2ZvcihsZXQgbiBvZiBPYmplY3Qua2V5cyhzKSluIT09InR5cGUiJiZuIT09Im9mZnNldCImJmRlbGV0ZSBzW25dO09iamVjdC5hc3NpZ24ocyx7dHlwZTp0LGluZGVudDphLHNvdXJjZTplLGVuZDpyfSl9fX12YXIgcTV0PWcoKCk9PntTM2UoKTtfM2UoKTtXdygpO1R3KCk7aSgkM2UsInJlc29sdmVBc1NjYWxhciIpO2koRDNlLCJjcmVhdGVTY2FsYXJUb2tlbiIpO2koTDNlLCJzZXRTY2FsYXJWYWx1ZSIpO2koakFhLCJzZXRCbG9ja1NjYWxhclZhbHVlIik7aShINXQsImFkZEVuZHRvQmxvY2tQcm9wcyIpO2koVDNlLCJzZXRGbG93U2NhbGFyVmFsdWUiKX0pO2Z1bmN0aW9uIHFzZShzKXtzd2l0Y2gocy50eXBlKXtjYXNlImJsb2NrLXNjYWxhciI6e2xldCBlPSIiO2ZvcihsZXQgdCBvZiBzLnByb3BzKWUrPXFzZSh0KTtyZXR1cm4gZStzLnNvdXJjZX1jYXNlImJsb2NrLW1hcCI6Y2FzZSJibG9jay1zZXEiOntsZXQgZT0iIjtmb3IobGV0IHQgb2Ygcy5pdGVtcyllKz1qc2UodCk7cmV0dXJuIGV9Y2FzZSJmbG93LWNvbGxlY3Rpb24iOntsZXQgZT1zLnN0YXJ0LnNvdXJjZTtmb3IobGV0IHQgb2Ygcy5pdGVtcyllKz1qc2UodCk7Zm9yKGxldCB0IG9mIHMuZW5kKWUrPXQuc291cmNlO3JldHVybiBlfWNhc2UiZG9jdW1lbnQiOntsZXQgZT1qc2Uocyk7aWYocy5lbmQpZm9yKGxldCB0IG9mIHMuZW5kKWUrPXQuc291cmNlO3JldHVybiBlfWRlZmF1bHQ6e2xldCBlPXMuc291cmNlO2lmKCJlbmQiaW4gcyYmcy5lbmQpZm9yKGxldCB0IG9mIHMuZW5kKWUrPXQuc291cmNlO3JldHVybiBlfX19ZnVuY3Rpb24ganNlKHtzdGFydDpzLGtleTplLHNlcDp0LHZhbHVlOmF9KXtsZXQgcj0iIjtmb3IobGV0IG4gb2YgcylyKz1uLnNvdXJjZTtpZihlJiYocis9cXNlKGUpKSx0KWZvcihsZXQgbiBvZiB0KXIrPW4uc291cmNlO3JldHVybiBhJiYocis9cXNlKGEpKSxyfXZhciBFM2UsajV0PWcoKCk9PntFM2U9aShzPT4idHlwZSJpbiBzP3FzZShzKTpqc2UocyksInN0cmluZ2lmeSIpO2kocXNlLCJzdHJpbmdpZnlUb2tlbiIpO2koanNlLCJzdHJpbmdpZnlJdGVtIil9KTtmdW5jdGlvbiBUMChzLGUpeyJ0eXBlImluIHMmJnMudHlwZT09PSJkb2N1bWVudCImJihzPXtzdGFydDpzLnN0YXJ0LHZhbHVlOnMudmFsdWV9KSxVNXQoT2JqZWN0LmZyZWV6ZShbXSkscyxlKX1mdW5jdGlvbiBVNXQocyxlLHQpe2xldCBhPXQoZSxzKTtpZih0eXBlb2YgYT09InN5bWJvbCIpcmV0dXJuIGE7Zm9yKGxldCByIG9mWyJrZXkiLCJ2YWx1ZSJdKXtsZXQgbj1lW3JdO2lmKG4mJiJpdGVtcyJpbiBuKXtmb3IobGV0IG89MDtvPG4uaXRlbXMubGVuZ3RoOysrbyl7bGV0IGw9VTV0KE9iamVjdC5mcmVlemUocy5jb25jYXQoW1tyLG9dXSkpLG4uaXRlbXNbb10sdCk7aWYodHlwZW9mIGw9PSJudW1iZXIiKW89bC0xO2Vsc2V7aWYobD09PVAzZSlyZXR1cm4gUDNlO2w9PT1WNXQmJihuLml0ZW1zLnNwbGljZShvLDEpLG8tPTEpfX10eXBlb2YgYT09ImZ1bmN0aW9uIiYmcj09PSJrZXkiJiYoYT1hKGUscykpfX1yZXR1cm4gdHlwZW9mIGE9PSJmdW5jdGlvbiI/YShlLHMpOmF9dmFyIFAzZSxWQWEsVjV0LFc1dD1nKCgpPT57UDNlPVN5bWJvbCgiYnJlYWsgdmlzaXQiKSxWQWE9U3ltYm9sKCJza2lwIGNoaWxkcmVuIiksVjV0PVN5bWJvbCgicmVtb3ZlIGl0ZW0iKTtpKFQwLCJ2aXNpdCIpLFQwLkJSRUFLPVAzZSxUMC5TS0lQPVZBYSxUMC5SRU1PVkU9VjV0LFQwLml0ZW1BdFBhdGg9KHMsZSk9PntsZXQgdD1zO2ZvcihsZXRbYSxyXW9mIGUpe2xldCBuPXQ/LlthXTtpZihuJiYiaXRlbXMiaW4gbil0PW4uaXRlbXNbcl07ZWxzZSByZXR1cm59cmV0dXJuIHR9LFQwLnBhcmVudENvbGxlY3Rpb249KHMsZSk9PntsZXQgdD1UMC5pdGVtQXRQYXRoKHMsZS5zbGljZSgwLC0xKSksYT1lW2UubGVuZ3RoLTFdWzBdLHI9dD8uW2FdO2lmKHImJiJpdGVtcyJpbiByKXJldHVybiByO3Rocm93IG5ldyBFcnJvcigiUGFyZW50IGNvbGxlY3Rpb24gbm90IGZvdW5kIil9O2koVTV0LCJfdmlzaXQiKX0pO3ZhciBKdz17fTt5dChKdyx7Qk9NOigpPT5xOSxET0NVTUVOVDooKT0+ajksRkxPV19FTkQ6KCk9PlY5LFNDQUxBUjooKT0+dzMsY3JlYXRlU2NhbGFyVG9rZW46KCk9PkQzZSxpc0NvbGxlY3Rpb246KCk9Pkc1dCxpc1NjYWxhcjooKT0+SzV0LHByZXR0eVRva2VuOigpPT5ZNXQscmVzb2x2ZUFzU2NhbGFyOigpPT4kM2Usc2V0U2NhbGFyVmFsdWU6KCk9PkwzZSxzdHJpbmdpZnk6KCk9PkUzZSx0b2tlblR5cGU6KCk9PlZzZSx2aXNpdDooKT0+VDB9KTtmdW5jdGlvbiBZNXQocyl7c3dpdGNoKHMpe2Nhc2UgcTk6cmV0dXJuIjxCT00+IjtjYXNlIGo5OnJldHVybiI8RE9DPiI7Y2FzZSBWOTpyZXR1cm4iPEZMT1dfRU5EPiI7Y2FzZSB3MzpyZXR1cm4iPFNDQUxBUj4iO2RlZmF1bHQ6cmV0dXJuIEpTT04uc3RyaW5naWZ5KHMpfX1mdW5jdGlvbiBWc2Uocyl7c3dpdGNoKHMpe2Nhc2UgcTk6cmV0dXJuImJ5dGUtb3JkZXItbWFyayI7Y2FzZSBqOTpyZXR1cm4iZG9jLW1vZGUiO2Nhc2UgVjk6cmV0dXJuImZsb3ctZXJyb3ItZW5kIjtjYXNlIHczOnJldHVybiJzY2FsYXIiO2Nhc2UiLS0tIjpyZXR1cm4iZG9jLXN0YXJ0IjtjYXNlIi4uLiI6cmV0dXJuImRvYy1lbmQiO2Nhc2UiIjpjYXNlYApgOmNhc2VgXHIKYDpyZXR1cm4ibmV3bGluZSI7Y2FzZSItIjpyZXR1cm4ic2VxLWl0ZW0taW5kIjtjYXNlIj8iOnJldHVybiJleHBsaWNpdC1rZXktaW5kIjtjYXNlIjoiOnJldHVybiJtYXAtdmFsdWUtaW5kIjtjYXNlInsiOnJldHVybiJmbG93LW1hcC1zdGFydCI7Y2FzZSJ9IjpyZXR1cm4iZmxvdy1tYXAtZW5kIjtjYXNlIlsiOnJldHVybiJmbG93LXNlcS1zdGFydCI7Y2FzZSJdIjpyZXR1cm4iZmxvdy1zZXEtZW5kIjtjYXNlIiwiOnJldHVybiJjb21tYSJ9c3dpdGNoKHNbMF0pe2Nhc2UiICI6Y2FzZSIJIjpyZXR1cm4ic3BhY2UiO2Nhc2UiIyI6cmV0dXJuImNvbW1lbnQiO2Nhc2UiJSI6cmV0dXJuImRpcmVjdGl2ZS1saW5lIjtjYXNlIioiOnJldHVybiJhbGlhcyI7Y2FzZSImIjpyZXR1cm4iYW5jaG9yIjtjYXNlIiEiOnJldHVybiJ0YWciO2Nhc2UiJyI6cmV0dXJuInNpbmdsZS1xdW90ZWQtc2NhbGFyIjtjYXNlJyInOnJldHVybiJkb3VibGUtcXVvdGVkLXNjYWxhciI7Y2FzZSJ8IjpjYXNlIj4iOnJldHVybiJibG9jay1zY2FsYXItaGVhZGVyIn1yZXR1cm4gbnVsbH12YXIgcTksajksVjksdzMsRzV0LEs1dCxVc2U9ZygoKT0+e3E1dCgpO2o1dCgpO1c1dCgpO3E5PSJcdUZFRkYiLGo5PSICIixWOT0iGCIsdzM9Ih8iLEc1dD1pKHM9PiEhcyYmIml0ZW1zImluIHMsImlzQ29sbGVjdGlvbiIpLEs1dD1pKHM9PiEhcyYmKHMudHlwZT09PSJzY2FsYXIifHxzLnR5cGU9PT0ic2luZ2xlLXF1b3RlZC1zY2FsYXIifHxzLnR5cGU9PT0iZG91YmxlLXF1b3RlZC1zY2FsYXIifHxzLnR5cGU9PT0iYmxvY2stc2NhbGFyIiksImlzU2NhbGFyIik7aShZNXQsInByZXR0eVRva2VuIik7aShWc2UsInRva2VuVHlwZSIpfSk7ZnVuY3Rpb24gSTEocyl7c3dpdGNoKHMpe2Nhc2Ugdm9pZCAwOmNhc2UiICI6Y2FzZWAKYDpjYXNlIlxyIjpjYXNlIgkiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fXZhciBaNXQsVUFhLFdzZSxXQWEsSTNlLGpwLEEzZT1nKCgpPT57VXNlKCk7aShJMSwiaXNFbXB0eSIpO1o1dD1uZXcgU2V0KCIwMTIzNDU2Nzg5QUJDREVGYWJjZGVmIiksVUFhPW5ldyBTZXQoIjAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6LSM7Lz86QCY9KyRfLiF+KicoKSIpLFdzZT1uZXcgU2V0KCIsW117fSIpLFdBYT1uZXcgU2V0KGAgLFtde30KXHIJYCksSTNlPWkocz0+IXN8fFdBYS5oYXMocyksImlzTm90QW5jaG9yQ2hhciIpLGpwPWNsYXNze3N0YXRpY3tpKHRoaXMsIkxleGVyIil9Y29uc3RydWN0b3IoKXt0aGlzLmF0RW5kPSExLHRoaXMuYmxvY2tTY2FsYXJJbmRlbnQ9LTEsdGhpcy5ibG9ja1NjYWxhcktlZXA9ITEsdGhpcy5idWZmZXI9IiIsdGhpcy5mbG93S2V5PSExLHRoaXMuZmxvd0xldmVsPTAsdGhpcy5pbmRlbnROZXh0PTAsdGhpcy5pbmRlbnRWYWx1ZT0wLHRoaXMubGluZUVuZFBvcz1udWxsLHRoaXMubmV4dD1udWxsLHRoaXMucG9zPTB9KmxleChlLHQ9ITEpe2lmKGUpe2lmKHR5cGVvZiBlIT0ic3RyaW5nIil0aHJvdyBUeXBlRXJyb3IoInNvdXJjZSBpcyBub3QgYSBzdHJpbmciKTt0aGlzLmJ1ZmZlcj10aGlzLmJ1ZmZlcj90aGlzLmJ1ZmZlcitlOmUsdGhpcy5saW5lRW5kUG9zPW51bGx9dGhpcy5hdEVuZD0hdDtsZXQgYT10aGlzLm5leHQ/PyJzdHJlYW0iO2Zvcig7YSYmKHR8fHRoaXMuaGFzQ2hhcnMoMSkpOylhPXlpZWxkKnRoaXMucGFyc2VOZXh0KGEpfWF0TGluZUVuZCgpe2xldCBlPXRoaXMucG9zLHQ9dGhpcy5idWZmZXJbZV07Zm9yKDt0PT09IiAifHx0PT09IgkiOyl0PXRoaXMuYnVmZmVyWysrZV07cmV0dXJuIXR8fHQ9PT0iIyJ8fHQ9PT1gCmA/ITA6dD09PSJcciI/dGhpcy5idWZmZXJbZSsxXT09PWAKYDohMX1jaGFyQXQoZSl7cmV0dXJuIHRoaXMuYnVmZmVyW3RoaXMucG9zK2VdfWNvbnRpbnVlU2NhbGFyKGUpe2xldCB0PXRoaXMuYnVmZmVyW2VdO2lmKHRoaXMuaW5kZW50TmV4dD4wKXtsZXQgYT0wO2Zvcig7dD09PSIgIjspdD10aGlzLmJ1ZmZlclsrK2ErZV07aWYodD09PSJcciIpe2xldCByPXRoaXMuYnVmZmVyW2ErZSsxXTtpZihyPT09YApgfHwhciYmIXRoaXMuYXRFbmQpcmV0dXJuIGUrYSsxfXJldHVybiB0PT09YApgfHxhPj10aGlzLmluZGVudE5leHR8fCF0JiYhdGhpcy5hdEVuZD9lK2E6LTF9aWYodD09PSItInx8dD09PSIuIil7bGV0IGE9dGhpcy5idWZmZXIuc3Vic3RyKGUsMyk7aWYoKGE9PT0iLS0tInx8YT09PSIuLi4iKSYmSTEodGhpcy5idWZmZXJbZSszXSkpcmV0dXJuLTF9cmV0dXJuIGV9Z2V0TGluZSgpe2xldCBlPXRoaXMubGluZUVuZFBvcztyZXR1cm4odHlwZW9mIGUhPSJudW1iZXIifHxlIT09LTEmJmU8dGhpcy5wb3MpJiYoZT10aGlzLmJ1ZmZlci5pbmRleE9mKGAKYCx0aGlzLnBvcyksdGhpcy5saW5lRW5kUG9zPWUpLGU9PT0tMT90aGlzLmF0RW5kP3RoaXMuYnVmZmVyLnN1YnN0cmluZyh0aGlzLnBvcyk6bnVsbDoodGhpcy5idWZmZXJbZS0xXT09PSJcciImJihlLT0xKSx0aGlzLmJ1ZmZlci5zdWJzdHJpbmcodGhpcy5wb3MsZSkpfWhhc0NoYXJzKGUpe3JldHVybiB0aGlzLnBvcytlPD10aGlzLmJ1ZmZlci5sZW5ndGh9c2V0TmV4dChlKXtyZXR1cm4gdGhpcy5idWZmZXI9dGhpcy5idWZmZXIuc3Vic3RyaW5nKHRoaXMucG9zKSx0aGlzLnBvcz0wLHRoaXMubGluZUVuZFBvcz1udWxsLHRoaXMubmV4dD1lLG51bGx9cGVlayhlKXtyZXR1cm4gdGhpcy5idWZmZXIuc3Vic3RyKHRoaXMucG9zLGUpfSpwYXJzZU5leHQoZSl7c3dpdGNoKGUpe2Nhc2Uic3RyZWFtIjpyZXR1cm4geWllbGQqdGhpcy5wYXJzZVN0cmVhbSgpO2Nhc2UibGluZS1zdGFydCI6cmV0dXJuIHlpZWxkKnRoaXMucGFyc2VMaW5lU3RhcnQoKTtjYXNlImJsb2NrLXN0YXJ0IjpyZXR1cm4geWllbGQqdGhpcy5wYXJzZUJsb2NrU3RhcnQoKTtjYXNlImRvYyI6cmV0dXJuIHlpZWxkKnRoaXMucGFyc2VEb2N1bWVudCgpO2Nhc2UiZmxvdyI6cmV0dXJuIHlpZWxkKnRoaXMucGFyc2VGbG93Q29sbGVjdGlvbigpO2Nhc2UicXVvdGVkLXNjYWxhciI6cmV0dXJuIHlpZWxkKnRoaXMucGFyc2VRdW90ZWRTY2FsYXIoKTtjYXNlImJsb2NrLXNjYWxhciI6cmV0dXJuIHlpZWxkKnRoaXMucGFyc2VCbG9ja1NjYWxhcigpO2Nhc2UicGxhaW4tc2NhbGFyIjpyZXR1cm4geWllbGQqdGhpcy5wYXJzZVBsYWluU2NhbGFyKCl9fSpwYXJzZVN0cmVhbSgpe2xldCBlPXRoaXMuZ2V0TGluZSgpO2lmKGU9PT1udWxsKXJldHVybiB0aGlzLnNldE5leHQoInN0cmVhbSIpO2lmKGVbMF09PT1xOSYmKHlpZWxkKnRoaXMucHVzaENvdW50KDEpLGU9ZS5zdWJzdHJpbmcoMSkpLGVbMF09PT0iJSIpe2xldCB0PWUubGVuZ3RoLGE9ZS5pbmRleE9mKCIjIik7Zm9yKDthIT09LTE7KXtsZXQgbj1lW2EtMV07aWYobj09PSIgInx8bj09PSIJIil7dD1hLTE7YnJlYWt9ZWxzZSBhPWUuaW5kZXhPZigiIyIsYSsxKX1mb3IoOzspe2xldCBuPWVbdC0xXTtpZihuPT09IiAifHxuPT09IgkiKXQtPTE7ZWxzZSBicmVha31sZXQgcj0oeWllbGQqdGhpcy5wdXNoQ291bnQodCkpKyh5aWVsZCp0aGlzLnB1c2hTcGFjZXMoITApKTtyZXR1cm4geWllbGQqdGhpcy5wdXNoQ291bnQoZS5sZW5ndGgtciksdGhpcy5wdXNoTmV3bGluZSgpLCJzdHJlYW0ifWlmKHRoaXMuYXRMaW5lRW5kKCkpe2xldCB0PXlpZWxkKnRoaXMucHVzaFNwYWNlcyghMCk7cmV0dXJuIHlpZWxkKnRoaXMucHVzaENvdW50KGUubGVuZ3RoLXQpLHlpZWxkKnRoaXMucHVzaE5ld2xpbmUoKSwic3RyZWFtIn1yZXR1cm4geWllbGQgajkseWllbGQqdGhpcy5wYXJzZUxpbmVTdGFydCgpfSpwYXJzZUxpbmVTdGFydCgpe2xldCBlPXRoaXMuY2hhckF0KDApO2lmKCFlJiYhdGhpcy5hdEVuZClyZXR1cm4gdGhpcy5zZXROZXh0KCJsaW5lLXN0YXJ0Iik7aWYoZT09PSItInx8ZT09PSIuIil7aWYoIXRoaXMuYXRFbmQmJiF0aGlzLmhhc0NoYXJzKDQpKXJldHVybiB0aGlzLnNldE5leHQoImxpbmUtc3RhcnQiKTtsZXQgdD10aGlzLnBlZWsoMyk7aWYoKHQ9PT0iLS0tInx8dD09PSIuLi4iKSYmSTEodGhpcy5jaGFyQXQoMykpKXJldHVybiB5aWVsZCp0aGlzLnB1c2hDb3VudCgzKSx0aGlzLmluZGVudFZhbHVlPTAsdGhpcy5pbmRlbnROZXh0PTAsdD09PSItLS0iPyJkb2MiOiJzdHJlYW0ifXJldHVybiB0aGlzLmluZGVudFZhbHVlPXlpZWxkKnRoaXMucHVzaFNwYWNlcyghMSksdGhpcy5pbmRlbnROZXh0PnRoaXMuaW5kZW50VmFsdWUmJiFJMSh0aGlzLmNoYXJBdCgxKSkmJih0aGlzLmluZGVudE5leHQ9dGhpcy5pbmRlbnRWYWx1ZSkseWllbGQqdGhpcy5wYXJzZUJsb2NrU3RhcnQoKX0qcGFyc2VCbG9ja1N0YXJ0KCl7bGV0W2UsdF09dGhpcy5wZWVrKDIpO2lmKCF0JiYhdGhpcy5hdEVuZClyZXR1cm4gdGhpcy5zZXROZXh0KCJibG9jay1zdGFydCIpO2lmKChlPT09Ii0ifHxlPT09Ij8ifHxlPT09IjoiKSYmSTEodCkpe2xldCBhPSh5aWVsZCp0aGlzLnB1c2hDb3VudCgxKSkrKHlpZWxkKnRoaXMucHVzaFNwYWNlcyghMCkpO3JldHVybiB0aGlzLmluZGVudE5leHQ9dGhpcy5pbmRlbnRWYWx1ZSsxLHRoaXMuaW5kZW50VmFsdWUrPWEseWllbGQqdGhpcy5wYXJzZUJsb2NrU3RhcnQoKX1yZXR1cm4iZG9jIn0qcGFyc2VEb2N1bWVudCgpe3lpZWxkKnRoaXMucHVzaFNwYWNlcyghMCk7bGV0IGU9dGhpcy5nZXRMaW5lKCk7aWYoZT09PW51bGwpcmV0dXJuIHRoaXMuc2V0TmV4dCgiZG9jIik7bGV0IHQ9eWllbGQqdGhpcy5wdXNoSW5kaWNhdG9ycygpO3N3aXRjaChlW3RdKXtjYXNlIiMiOnlpZWxkKnRoaXMucHVzaENvdW50KGUubGVuZ3RoLXQpO2Nhc2Ugdm9pZCAwOnJldHVybiB5aWVsZCp0aGlzLnB1c2hOZXdsaW5lKCkseWllbGQqdGhpcy5wYXJzZUxpbmVTdGFydCgpO2Nhc2UieyI6Y2FzZSJbIjpyZXR1cm4geWllbGQqdGhpcy5wdXNoQ291bnQoMSksdGhpcy5mbG93S2V5PSExLHRoaXMuZmxvd0xldmVsPTEsImZsb3ciO2Nhc2UifSI6Y2FzZSJdIjpyZXR1cm4geWllbGQqdGhpcy5wdXNoQ291bnQoMSksImRvYyI7Y2FzZSIqIjpyZXR1cm4geWllbGQqdGhpcy5wdXNoVW50aWwoSTNlKSwiZG9jIjtjYXNlJyInOmNhc2UiJyI6cmV0dXJuIHlpZWxkKnRoaXMucGFyc2VRdW90ZWRTY2FsYXIoKTtjYXNlInwiOmNhc2UiPiI6cmV0dXJuIHQrPXlpZWxkKnRoaXMucGFyc2VCbG9ja1NjYWxhckhlYWRlcigpLHQrPXlpZWxkKnRoaXMucHVzaFNwYWNlcyghMCkseWllbGQqdGhpcy5wdXNoQ291bnQoZS5sZW5ndGgtdCkseWllbGQqdGhpcy5wdXNoTmV3bGluZSgpLHlpZWxkKnRoaXMucGFyc2VCbG9ja1NjYWxhcigpO2RlZmF1bHQ6cmV0dXJuIHlpZWxkKnRoaXMucGFyc2VQbGFpblNjYWxhcigpfX0qcGFyc2VGbG93Q29sbGVjdGlvbigpe2xldCBlLHQsYT0tMTtkbyBlPXlpZWxkKnRoaXMucHVzaE5ld2xpbmUoKSxlPjA/KHQ9eWllbGQqdGhpcy5wdXNoU3BhY2VzKCExKSx0aGlzLmluZGVudFZhbHVlPWE9dCk6dD0wLHQrPXlpZWxkKnRoaXMucHVzaFNwYWNlcyghMCk7d2hpbGUoZSt0PjApO2xldCByPXRoaXMuZ2V0TGluZSgpO2lmKHI9PT1udWxsKXJldHVybiB0aGlzLnNldE5leHQoImZsb3ciKTtpZigoYSE9PS0xJiZhPHRoaXMuaW5kZW50TmV4dCYmclswXSE9PSIjInx8YT09PTAmJihyLnN0YXJ0c1dpdGgoIi0tLSIpfHxyLnN0YXJ0c1dpdGgoIi4uLiIpKSYmSTEoclszXSkpJiYhKGE9PT10aGlzLmluZGVudE5leHQtMSYmdGhpcy5mbG93TGV2ZWw9PT0xJiYoclswXT09PSJdInx8clswXT09PSJ9IikpKXJldHVybiB0aGlzLmZsb3dMZXZlbD0wLHlpZWxkIFY5LHlpZWxkKnRoaXMucGFyc2VMaW5lU3RhcnQoKTtsZXQgbj0wO2Zvcig7cltuXT09PSIsIjspbis9eWllbGQqdGhpcy5wdXNoQ291bnQoMSksbis9eWllbGQqdGhpcy5wdXNoU3BhY2VzKCEwKSx0aGlzLmZsb3dLZXk9ITE7c3dpdGNoKG4rPXlpZWxkKnRoaXMucHVzaEluZGljYXRvcnMoKSxyW25dKXtjYXNlIHZvaWQgMDpyZXR1cm4iZmxvdyI7Y2FzZSIjIjpyZXR1cm4geWllbGQqdGhpcy5wdXNoQ291bnQoci5sZW5ndGgtbiksImZsb3ciO2Nhc2UieyI6Y2FzZSJbIjpyZXR1cm4geWllbGQqdGhpcy5wdXNoQ291bnQoMSksdGhpcy5mbG93S2V5PSExLHRoaXMuZmxvd0xldmVsKz0xLCJmbG93IjtjYXNlIn0iOmNhc2UiXSI6cmV0dXJuIHlpZWxkKnRoaXMucHVzaENvdW50KDEpLHRoaXMuZmxvd0tleT0hMCx0aGlzLmZsb3dMZXZlbC09MSx0aGlzLmZsb3dMZXZlbD8iZmxvdyI6ImRvYyI7Y2FzZSIqIjpyZXR1cm4geWllbGQqdGhpcy5wdXNoVW50aWwoSTNlKSwiZmxvdyI7Y2FzZSciJzpjYXNlIiciOnJldHVybiB0aGlzLmZsb3dLZXk9ITAseWllbGQqdGhpcy5wYXJzZVF1b3RlZFNjYWxhcigpO2Nhc2UiOiI6e2xldCBvPXRoaXMuY2hhckF0KDEpO2lmKHRoaXMuZmxvd0tleXx8STEobyl8fG89PT0iLCIpcmV0dXJuIHRoaXMuZmxvd0tleT0hMSx5aWVsZCp0aGlzLnB1c2hDb3VudCgxKSx5aWVsZCp0aGlzLnB1c2hTcGFjZXMoITApLCJmbG93In1kZWZhdWx0OnJldHVybiB0aGlzLmZsb3dLZXk9ITEseWllbGQqdGhpcy5wYXJzZVBsYWluU2NhbGFyKCl9fSpwYXJzZVF1b3RlZFNjYWxhcigpe2xldCBlPXRoaXMuY2hhckF0KDApLHQ9dGhpcy5idWZmZXIuaW5kZXhPZihlLHRoaXMucG9zKzEpO2lmKGU9PT0iJyIpZm9yKDt0IT09LTEmJnRoaXMuYnVmZmVyW3QrMV09PT0iJyI7KXQ9dGhpcy5idWZmZXIuaW5kZXhPZigiJyIsdCsyKTtlbHNlIGZvcig7dCE9PS0xOyl7bGV0IG49MDtmb3IoO3RoaXMuYnVmZmVyW3QtMS1uXT09PSJcXCI7KW4rPTE7aWYobiUyPT09MClicmVhazt0PXRoaXMuYnVmZmVyLmluZGV4T2YoJyInLHQrMSl9bGV0IGE9dGhpcy5idWZmZXIuc3Vic3RyaW5nKDAsdCkscj1hLmluZGV4T2YoYApgLHRoaXMucG9zKTtpZihyIT09LTEpe2Zvcig7ciE9PS0xOyl7bGV0IG49dGhpcy5jb250aW51ZVNjYWxhcihyKzEpO2lmKG49PT0tMSlicmVhaztyPWEuaW5kZXhPZihgCmAsbil9ciE9PS0xJiYodD1yLShhW3ItMV09PT0iXHIiPzI6MSkpfWlmKHQ9PT0tMSl7aWYoIXRoaXMuYXRFbmQpcmV0dXJuIHRoaXMuc2V0TmV4dCgicXVvdGVkLXNjYWxhciIpO3Q9dGhpcy5idWZmZXIubGVuZ3RofXJldHVybiB5aWVsZCp0aGlzLnB1c2hUb0luZGV4KHQrMSwhMSksdGhpcy5mbG93TGV2ZWw/ImZsb3ciOiJkb2MifSpwYXJzZUJsb2NrU2NhbGFySGVhZGVyKCl7dGhpcy5ibG9ja1NjYWxhckluZGVudD0tMSx0aGlzLmJsb2NrU2NhbGFyS2VlcD0hMTtsZXQgZT10aGlzLnBvcztmb3IoOzspe2xldCB0PXRoaXMuYnVmZmVyWysrZV07aWYodD09PSIrIil0aGlzLmJsb2NrU2NhbGFyS2VlcD0hMDtlbHNlIGlmKHQ+IjAiJiZ0PD0iOSIpdGhpcy5ibG9ja1NjYWxhckluZGVudD1OdW1iZXIodCktMTtlbHNlIGlmKHQhPT0iLSIpYnJlYWt9cmV0dXJuIHlpZWxkKnRoaXMucHVzaFVudGlsKHQ9PkkxKHQpfHx0PT09IiMiKX0qcGFyc2VCbG9ja1NjYWxhcigpe2xldCBlPXRoaXMucG9zLTEsdD0wLGE7ZTpmb3IobGV0IG49dGhpcy5wb3M7YT10aGlzLmJ1ZmZlcltuXTsrK24pc3dpdGNoKGEpe2Nhc2UiICI6dCs9MTticmVhaztjYXNlYApgOmU9bix0PTA7YnJlYWs7Y2FzZSJcciI6e2xldCBvPXRoaXMuYnVmZmVyW24rMV07aWYoIW8mJiF0aGlzLmF0RW5kKXJldHVybiB0aGlzLnNldE5leHQoImJsb2NrLXNjYWxhciIpO2lmKG89PT1gCmApYnJlYWt9ZGVmYXVsdDpicmVhayBlfWlmKCFhJiYhdGhpcy5hdEVuZClyZXR1cm4gdGhpcy5zZXROZXh0KCJibG9jay1zY2FsYXIiKTtpZih0Pj10aGlzLmluZGVudE5leHQpe3RoaXMuYmxvY2tTY2FsYXJJbmRlbnQ9PT0tMT90aGlzLmluZGVudE5leHQ9dDp0aGlzLmluZGVudE5leHQ9dGhpcy5ibG9ja1NjYWxhckluZGVudCsodGhpcy5pbmRlbnROZXh0PT09MD8xOnRoaXMuaW5kZW50TmV4dCk7ZG97bGV0IG49dGhpcy5jb250aW51ZVNjYWxhcihlKzEpO2lmKG49PT0tMSlicmVhaztlPXRoaXMuYnVmZmVyLmluZGV4T2YoYApgLG4pfXdoaWxlKGUhPT0tMSk7aWYoZT09PS0xKXtpZighdGhpcy5hdEVuZClyZXR1cm4gdGhpcy5zZXROZXh0KCJibG9jay1zY2FsYXIiKTtlPXRoaXMuYnVmZmVyLmxlbmd0aH19bGV0IHI9ZSsxO2ZvcihhPXRoaXMuYnVmZmVyW3JdO2E9PT0iICI7KWE9dGhpcy5idWZmZXJbKytyXTtpZihhPT09IgkiKXtmb3IoO2E9PT0iCSJ8fGE9PT0iICJ8fGE9PT0iXHIifHxhPT09YApgOylhPXRoaXMuYnVmZmVyWysrcl07ZT1yLTF9ZWxzZSBpZighdGhpcy5ibG9ja1NjYWxhcktlZXApZG97bGV0IG49ZS0xLG89dGhpcy5idWZmZXJbbl07bz09PSJcciImJihvPXRoaXMuYnVmZmVyWy0tbl0pO2xldCBsPW47Zm9yKDtvPT09IiAiOylvPXRoaXMuYnVmZmVyWy0tbl07aWYobz09PWAKYCYmbj49dGhpcy5wb3MmJm4rMSt0PmwpZT1uO2Vsc2UgYnJlYWt9d2hpbGUoITApO3JldHVybiB5aWVsZCB3Myx5aWVsZCp0aGlzLnB1c2hUb0luZGV4KGUrMSwhMCkseWllbGQqdGhpcy5wYXJzZUxpbmVTdGFydCgpfSpwYXJzZVBsYWluU2NhbGFyKCl7bGV0IGU9dGhpcy5mbG93TGV2ZWw+MCx0PXRoaXMucG9zLTEsYT10aGlzLnBvcy0xLHI7Zm9yKDtyPXRoaXMuYnVmZmVyWysrYV07KWlmKHI9PT0iOiIpe2xldCBuPXRoaXMuYnVmZmVyW2ErMV07aWYoSTEobil8fGUmJldzZS5oYXMobikpYnJlYWs7dD1hfWVsc2UgaWYoSTEocikpe2xldCBuPXRoaXMuYnVmZmVyW2ErMV07aWYocj09PSJcciImJihuPT09YApgPyhhKz0xLHI9YApgLG49dGhpcy5idWZmZXJbYSsxXSk6dD1hKSxuPT09IiMifHxlJiZXc2UuaGFzKG4pKWJyZWFrO2lmKHI9PT1gCmApe2xldCBvPXRoaXMuY29udGludWVTY2FsYXIoYSsxKTtpZihvPT09LTEpYnJlYWs7YT1NYXRoLm1heChhLG8tMil9fWVsc2V7aWYoZSYmV3NlLmhhcyhyKSlicmVhazt0PWF9cmV0dXJuIXImJiF0aGlzLmF0RW5kP3RoaXMuc2V0TmV4dCgicGxhaW4tc2NhbGFyIik6KHlpZWxkIHczLHlpZWxkKnRoaXMucHVzaFRvSW5kZXgodCsxLCEwKSxlPyJmbG93IjoiZG9jIil9KnB1c2hDb3VudChlKXtyZXR1cm4gZT4wPyh5aWVsZCB0aGlzLmJ1ZmZlci5zdWJzdHIodGhpcy5wb3MsZSksdGhpcy5wb3MrPWUsZSk6MH0qcHVzaFRvSW5kZXgoZSx0KXtsZXQgYT10aGlzLmJ1ZmZlci5zbGljZSh0aGlzLnBvcyxlKTtyZXR1cm4gYT8oeWllbGQgYSx0aGlzLnBvcys9YS5sZW5ndGgsYS5sZW5ndGgpOih0JiYoeWllbGQiIiksMCl9KnB1c2hJbmRpY2F0b3JzKCl7c3dpdGNoKHRoaXMuY2hhckF0KDApKXtjYXNlIiEiOnJldHVybih5aWVsZCp0aGlzLnB1c2hUYWcoKSkrKHlpZWxkKnRoaXMucHVzaFNwYWNlcyghMCkpKyh5aWVsZCp0aGlzLnB1c2hJbmRpY2F0b3JzKCkpO2Nhc2UiJiI6cmV0dXJuKHlpZWxkKnRoaXMucHVzaFVudGlsKEkzZSkpKyh5aWVsZCp0aGlzLnB1c2hTcGFjZXMoITApKSsoeWllbGQqdGhpcy5wdXNoSW5kaWNhdG9ycygpKTtjYXNlIi0iOmNhc2UiPyI6Y2FzZSI6Ijp7bGV0IGU9dGhpcy5mbG93TGV2ZWw+MCx0PXRoaXMuY2hhckF0KDEpO2lmKEkxKHQpfHxlJiZXc2UuaGFzKHQpKXJldHVybiBlP3RoaXMuZmxvd0tleSYmKHRoaXMuZmxvd0tleT0hMSk6dGhpcy5pbmRlbnROZXh0PXRoaXMuaW5kZW50VmFsdWUrMSwoeWllbGQqdGhpcy5wdXNoQ291bnQoMSkpKyh5aWVsZCp0aGlzLnB1c2hTcGFjZXMoITApKSsoeWllbGQqdGhpcy5wdXNoSW5kaWNhdG9ycygpKX19cmV0dXJuIDB9KnB1c2hUYWcoKXtpZih0aGlzLmNoYXJBdCgxKT09PSI8Iil7bGV0IGU9dGhpcy5wb3MrMix0PXRoaXMuYnVmZmVyW2VdO2Zvcig7IUkxKHQpJiZ0IT09Ij4iOyl0PXRoaXMuYnVmZmVyWysrZV07cmV0dXJuIHlpZWxkKnRoaXMucHVzaFRvSW5kZXgodD09PSI+Ij9lKzE6ZSwhMSl9ZWxzZXtsZXQgZT10aGlzLnBvcysxLHQ9dGhpcy5idWZmZXJbZV07Zm9yKDt0OylpZihVQWEuaGFzKHQpKXQ9dGhpcy5idWZmZXJbKytlXTtlbHNlIGlmKHQ9PT0iJSImJlo1dC5oYXModGhpcy5idWZmZXJbZSsxXSkmJlo1dC5oYXModGhpcy5idWZmZXJbZSsyXSkpdD10aGlzLmJ1ZmZlcltlKz0zXTtlbHNlIGJyZWFrO3JldHVybiB5aWVsZCp0aGlzLnB1c2hUb0luZGV4KGUsITEpfX0qcHVzaE5ld2xpbmUoKXtsZXQgZT10aGlzLmJ1ZmZlclt0aGlzLnBvc107cmV0dXJuIGU9PT1gCmA/eWllbGQqdGhpcy5wdXNoQ291bnQoMSk6ZT09PSJcciImJnRoaXMuY2hhckF0KDEpPT09YApgP3lpZWxkKnRoaXMucHVzaENvdW50KDIpOjB9KnB1c2hTcGFjZXMoZSl7bGV0IHQ9dGhpcy5wb3MtMSxhO2RvIGE9dGhpcy5idWZmZXJbKyt0XTt3aGlsZShhPT09IiAifHxlJiZhPT09IgkiKTtsZXQgcj10LXRoaXMucG9zO3JldHVybiByPjAmJih5aWVsZCB0aGlzLmJ1ZmZlci5zdWJzdHIodGhpcy5wb3MsciksdGhpcy5wb3M9dCkscn0qcHVzaFVudGlsKGUpe2xldCB0PXRoaXMucG9zLGE9dGhpcy5idWZmZXJbdF07Zm9yKDshZShhKTspYT10aGlzLmJ1ZmZlclsrK3RdO3JldHVybiB5aWVsZCp0aGlzLnB1c2hUb0luZGV4KHQsITEpfX19KTt2YXIgVnAsTjNlPWcoKCk9PntWcD1jbGFzc3tzdGF0aWN7aSh0aGlzLCJMaW5lQ291bnRlciIpfWNvbnN0cnVjdG9yKCl7dGhpcy5saW5lU3RhcnRzPVtdLHRoaXMuYWRkTmV3TGluZT1lPT50aGlzLmxpbmVTdGFydHMucHVzaChlKSx0aGlzLmxpbmVQb3M9ZT0+e2xldCB0PTAsYT10aGlzLmxpbmVTdGFydHMubGVuZ3RoO2Zvcig7dDxhOyl7bGV0IG49dCthPj4xO3RoaXMubGluZVN0YXJ0c1tuXTxlP3Q9bisxOmE9bn1pZih0aGlzLmxpbmVTdGFydHNbdF09PT1lKXJldHVybntsaW5lOnQrMSxjb2w6MX07aWYodD09PTApcmV0dXJue2xpbmU6MCxjb2w6ZX07bGV0IHI9dGhpcy5saW5lU3RhcnRzW3QtMV07cmV0dXJue2xpbmU6dCxjb2w6ZS1yKzF9fX19fSk7ZnVuY3Rpb24gVXAocyxlKXtmb3IobGV0IHQ9MDt0PHMubGVuZ3RoOysrdClpZihzW3RdLnR5cGU9PT1lKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIFg1dChzKXtmb3IobGV0IGU9MDtlPHMubGVuZ3RoOysrZSlzd2l0Y2goc1tlXS50eXBlKXtjYXNlInNwYWNlIjpjYXNlImNvbW1lbnQiOmNhc2UibmV3bGluZSI6YnJlYWs7ZGVmYXVsdDpyZXR1cm4gZX1yZXR1cm4tMX1mdW5jdGlvbiBRNXQocyl7c3dpdGNoKHM/LnR5cGUpe2Nhc2UiYWxpYXMiOmNhc2Uic2NhbGFyIjpjYXNlInNpbmdsZS1xdW90ZWQtc2NhbGFyIjpjYXNlImRvdWJsZS1xdW90ZWQtc2NhbGFyIjpjYXNlImZsb3ctY29sbGVjdGlvbiI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gR3NlKHMpe3N3aXRjaChzLnR5cGUpe2Nhc2UiZG9jdW1lbnQiOnJldHVybiBzLnN0YXJ0O2Nhc2UiYmxvY2stbWFwIjp7bGV0IGU9cy5pdGVtc1tzLml0ZW1zLmxlbmd0aC0xXTtyZXR1cm4gZS5zZXA/P2Uuc3RhcnR9Y2FzZSJibG9jay1zZXEiOnJldHVybiBzLml0ZW1zW3MuaXRlbXMubGVuZ3RoLTFdLnN0YXJ0O2RlZmF1bHQ6cmV0dXJuW119fWZ1bmN0aW9uIFU5KHMpe2lmKHMubGVuZ3RoPT09MClyZXR1cm5bXTtsZXQgZT1zLmxlbmd0aDtlOmZvcig7LS1lPj0wOylzd2l0Y2goc1tlXS50eXBlKXtjYXNlImRvYy1zdGFydCI6Y2FzZSJleHBsaWNpdC1rZXktaW5kIjpjYXNlIm1hcC12YWx1ZS1pbmQiOmNhc2Uic2VxLWl0ZW0taW5kIjpjYXNlIm5ld2xpbmUiOmJyZWFrIGV9Zm9yKDtzWysrZV0/LnR5cGU9PT0ic3BhY2UiOyk7cmV0dXJuIHMuc3BsaWNlKGUscy5sZW5ndGgpfWZ1bmN0aW9uIEo1dChzKXtpZihzLnN0YXJ0LnR5cGU9PT0iZmxvdy1zZXEtc3RhcnQiKWZvcihsZXQgZSBvZiBzLml0ZW1zKWUuc2VwJiYhZS52YWx1ZSYmIVVwKGUuc3RhcnQsImV4cGxpY2l0LWtleS1pbmQiKSYmIVVwKGUuc2VwLCJtYXAtdmFsdWUtaW5kIikmJihlLmtleSYmKGUudmFsdWU9ZS5rZXkpLGRlbGV0ZSBlLmtleSxRNXQoZS52YWx1ZSk/ZS52YWx1ZS5lbmQ/QXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoZS52YWx1ZS5lbmQsZS5zZXApOmUudmFsdWUuZW5kPWUuc2VwOkFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGUuc3RhcnQsZS5zZXApLGRlbGV0ZSBlLnNlcCl9dmFyICQwLFIzZT1nKCgpPT57VXNlKCk7QTNlKCk7aShVcCwiaW5jbHVkZXNUb2tlbiIpO2koWDV0LCJmaW5kTm9uRW1wdHlJbmRleCIpO2koUTV0LCJpc0Zsb3dUb2tlbiIpO2koR3NlLCJnZXRQcmV2UHJvcHMiKTtpKFU5LCJnZXRGaXJzdEtleVN0YXJ0UHJvcHMiKTtpKEo1dCwiZml4Rmxvd1NlcUl0ZW1zIik7JDA9Y2xhc3N7c3RhdGlje2kodGhpcywiUGFyc2VyIil9Y29uc3RydWN0b3IoZSl7dGhpcy5hdE5ld0xpbmU9ITAsdGhpcy5hdFNjYWxhcj0hMSx0aGlzLmluZGVudD0wLHRoaXMub2Zmc2V0PTAsdGhpcy5vbktleUxpbmU9ITEsdGhpcy5zdGFjaz1bXSx0aGlzLnNvdXJjZT0iIix0aGlzLnR5cGU9IiIsdGhpcy5sZXhlcj1uZXcganAsdGhpcy5vbk5ld0xpbmU9ZX0qcGFyc2UoZSx0PSExKXt0aGlzLm9uTmV3TGluZSYmdGhpcy5vZmZzZXQ9PT0wJiZ0aGlzLm9uTmV3TGluZSgwKTtmb3IobGV0IGEgb2YgdGhpcy5sZXhlci5sZXgoZSx0KSl5aWVsZCp0aGlzLm5leHQoYSk7dHx8KHlpZWxkKnRoaXMuZW5kKCkpfSpuZXh0KGUpe2lmKHRoaXMuc291cmNlPWUsdGhpcy5hdFNjYWxhcil7dGhpcy5hdFNjYWxhcj0hMSx5aWVsZCp0aGlzLnN0ZXAoKSx0aGlzLm9mZnNldCs9ZS5sZW5ndGg7cmV0dXJufWxldCB0PVZzZShlKTtpZih0KWlmKHQ9PT0ic2NhbGFyIil0aGlzLmF0TmV3TGluZT0hMSx0aGlzLmF0U2NhbGFyPSEwLHRoaXMudHlwZT0ic2NhbGFyIjtlbHNle3N3aXRjaCh0aGlzLnR5cGU9dCx5aWVsZCp0aGlzLnN0ZXAoKSx0KXtjYXNlIm5ld2xpbmUiOnRoaXMuYXROZXdMaW5lPSEwLHRoaXMuaW5kZW50PTAsdGhpcy5vbk5ld0xpbmUmJnRoaXMub25OZXdMaW5lKHRoaXMub2Zmc2V0K2UubGVuZ3RoKTticmVhaztjYXNlInNwYWNlIjp0aGlzLmF0TmV3TGluZSYmZVswXT09PSIgIiYmKHRoaXMuaW5kZW50Kz1lLmxlbmd0aCk7YnJlYWs7Y2FzZSJleHBsaWNpdC1rZXktaW5kIjpjYXNlIm1hcC12YWx1ZS1pbmQiOmNhc2Uic2VxLWl0ZW0taW5kIjp0aGlzLmF0TmV3TGluZSYmKHRoaXMuaW5kZW50Kz1lLmxlbmd0aCk7YnJlYWs7Y2FzZSJkb2MtbW9kZSI6Y2FzZSJmbG93LWVycm9yLWVuZCI6cmV0dXJuO2RlZmF1bHQ6dGhpcy5hdE5ld0xpbmU9ITF9dGhpcy5vZmZzZXQrPWUubGVuZ3RofWVsc2V7bGV0IGE9YE5vdCBhIFlBTUwgdG9rZW46ICR7ZX1gO3lpZWxkKnRoaXMucG9wKHt0eXBlOiJlcnJvciIsb2Zmc2V0OnRoaXMub2Zmc2V0LG1lc3NhZ2U6YSxzb3VyY2U6ZX0pLHRoaXMub2Zmc2V0Kz1lLmxlbmd0aH19KmVuZCgpe2Zvcig7dGhpcy5zdGFjay5sZW5ndGg+MDspeWllbGQqdGhpcy5wb3AoKX1nZXQgc291cmNlVG9rZW4oKXtyZXR1cm57dHlwZTp0aGlzLnR5cGUsb2Zmc2V0OnRoaXMub2Zmc2V0LGluZGVudDp0aGlzLmluZGVudCxzb3VyY2U6dGhpcy5zb3VyY2V9fSpzdGVwKCl7bGV0IGU9dGhpcy5wZWVrKDEpO2lmKHRoaXMudHlwZT09PSJkb2MtZW5kIiYmZT8udHlwZSE9PSJkb2MtZW5kIil7Zm9yKDt0aGlzLnN0YWNrLmxlbmd0aD4wOyl5aWVsZCp0aGlzLnBvcCgpO3RoaXMuc3RhY2sucHVzaCh7dHlwZToiZG9jLWVuZCIsb2Zmc2V0OnRoaXMub2Zmc2V0LHNvdXJjZTp0aGlzLnNvdXJjZX0pO3JldHVybn1pZighZSlyZXR1cm4geWllbGQqdGhpcy5zdHJlYW0oKTtzd2l0Y2goZS50eXBlKXtjYXNlImRvY3VtZW50IjpyZXR1cm4geWllbGQqdGhpcy5kb2N1bWVudChlKTtjYXNlImFsaWFzIjpjYXNlInNjYWxhciI6Y2FzZSJzaW5nbGUtcXVvdGVkLXNjYWxhciI6Y2FzZSJkb3VibGUtcXVvdGVkLXNjYWxhciI6cmV0dXJuIHlpZWxkKnRoaXMuc2NhbGFyKGUpO2Nhc2UiYmxvY2stc2NhbGFyIjpyZXR1cm4geWllbGQqdGhpcy5ibG9ja1NjYWxhcihlKTtjYXNlImJsb2NrLW1hcCI6cmV0dXJuIHlpZWxkKnRoaXMuYmxvY2tNYXAoZSk7Y2FzZSJibG9jay1zZXEiOnJldHVybiB5aWVsZCp0aGlzLmJsb2NrU2VxdWVuY2UoZSk7Y2FzZSJmbG93LWNvbGxlY3Rpb24iOnJldHVybiB5aWVsZCp0aGlzLmZsb3dDb2xsZWN0aW9uKGUpO2Nhc2UiZG9jLWVuZCI6cmV0dXJuIHlpZWxkKnRoaXMuZG9jdW1lbnRFbmQoZSl9eWllbGQqdGhpcy5wb3AoKX1wZWVrKGUpe3JldHVybiB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLWVdfSpwb3AoZSl7bGV0IHQ9ZT8/dGhpcy5zdGFjay5wb3AoKTtpZighdCl5aWVsZHt0eXBlOiJlcnJvciIsb2Zmc2V0OnRoaXMub2Zmc2V0LHNvdXJjZToiIixtZXNzYWdlOiJUcmllZCB0byBwb3AgYW4gZW1wdHkgc3RhY2sifTtlbHNlIGlmKHRoaXMuc3RhY2subGVuZ3RoPT09MCl5aWVsZCB0O2Vsc2V7bGV0IGE9dGhpcy5wZWVrKDEpO3N3aXRjaCh0LnR5cGU9PT0iYmxvY2stc2NhbGFyIj90LmluZGVudD0iaW5kZW50ImluIGE/YS5pbmRlbnQ6MDp0LnR5cGU9PT0iZmxvdy1jb2xsZWN0aW9uIiYmYS50eXBlPT09ImRvY3VtZW50IiYmKHQuaW5kZW50PTApLHQudHlwZT09PSJmbG93LWNvbGxlY3Rpb24iJiZKNXQodCksYS50eXBlKXtjYXNlImRvY3VtZW50IjphLnZhbHVlPXQ7YnJlYWs7Y2FzZSJibG9jay1zY2FsYXIiOmEucHJvcHMucHVzaCh0KTticmVhaztjYXNlImJsb2NrLW1hcCI6e2xldCByPWEuaXRlbXNbYS5pdGVtcy5sZW5ndGgtMV07aWYoci52YWx1ZSl7YS5pdGVtcy5wdXNoKHtzdGFydDpbXSxrZXk6dCxzZXA6W119KSx0aGlzLm9uS2V5TGluZT0hMDtyZXR1cm59ZWxzZSBpZihyLnNlcClyLnZhbHVlPXQ7ZWxzZXtPYmplY3QuYXNzaWduKHIse2tleTp0LHNlcDpbXX0pLHRoaXMub25LZXlMaW5lPSFyLmV4cGxpY2l0S2V5O3JldHVybn1icmVha31jYXNlImJsb2NrLXNlcSI6e2xldCByPWEuaXRlbXNbYS5pdGVtcy5sZW5ndGgtMV07ci52YWx1ZT9hLml0ZW1zLnB1c2goe3N0YXJ0OltdLHZhbHVlOnR9KTpyLnZhbHVlPXQ7YnJlYWt9Y2FzZSJmbG93LWNvbGxlY3Rpb24iOntsZXQgcj1hLml0ZW1zW2EuaXRlbXMubGVuZ3RoLTFdOyFyfHxyLnZhbHVlP2EuaXRlbXMucHVzaCh7c3RhcnQ6W10sa2V5OnQsc2VwOltdfSk6ci5zZXA/ci52YWx1ZT10Ok9iamVjdC5hc3NpZ24ocix7a2V5OnQsc2VwOltdfSk7cmV0dXJufWRlZmF1bHQ6eWllbGQqdGhpcy5wb3AoKSx5aWVsZCp0aGlzLnBvcCh0KX1pZigoYS50eXBlPT09ImRvY3VtZW50Inx8YS50eXBlPT09ImJsb2NrLW1hcCJ8fGEudHlwZT09PSJibG9jay1zZXEiKSYmKHQudHlwZT09PSJibG9jay1tYXAifHx0LnR5cGU9PT0iYmxvY2stc2VxIikpe2xldCByPXQuaXRlbXNbdC5pdGVtcy5sZW5ndGgtMV07ciYmIXIuc2VwJiYhci52YWx1ZSYmci5zdGFydC5sZW5ndGg+MCYmWDV0KHIuc3RhcnQpPT09LTEmJih0LmluZGVudD09PTB8fHIuc3RhcnQuZXZlcnkobj0+bi50eXBlIT09ImNvbW1lbnQifHxuLmluZGVudDx0LmluZGVudCkpJiYoYS50eXBlPT09ImRvY3VtZW50Ij9hLmVuZD1yLnN0YXJ0OmEuaXRlbXMucHVzaCh7c3RhcnQ6ci5zdGFydH0pLHQuaXRlbXMuc3BsaWNlKC0xLDEpKX19fSpzdHJlYW0oKXtzd2l0Y2godGhpcy50eXBlKXtjYXNlImRpcmVjdGl2ZS1saW5lIjp5aWVsZHt0eXBlOiJkaXJlY3RpdmUiLG9mZnNldDp0aGlzLm9mZnNldCxzb3VyY2U6dGhpcy5zb3VyY2V9O3JldHVybjtjYXNlImJ5dGUtb3JkZXItbWFyayI6Y2FzZSJzcGFjZSI6Y2FzZSJjb21tZW50IjpjYXNlIm5ld2xpbmUiOnlpZWxkIHRoaXMuc291cmNlVG9rZW47cmV0dXJuO2Nhc2UiZG9jLW1vZGUiOmNhc2UiZG9jLXN0YXJ0Ijp7bGV0IGU9e3R5cGU6ImRvY3VtZW50IixvZmZzZXQ6dGhpcy5vZmZzZXQsc3RhcnQ6W119O3RoaXMudHlwZT09PSJkb2Mtc3RhcnQiJiZlLnN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbiksdGhpcy5zdGFjay5wdXNoKGUpO3JldHVybn19eWllbGR7dHlwZToiZXJyb3IiLG9mZnNldDp0aGlzLm9mZnNldCxtZXNzYWdlOmBVbmV4cGVjdGVkICR7dGhpcy50eXBlfSB0b2tlbiBpbiBZQU1MIHN0cmVhbWAsc291cmNlOnRoaXMuc291cmNlfX0qZG9jdW1lbnQoZSl7aWYoZS52YWx1ZSlyZXR1cm4geWllbGQqdGhpcy5saW5lRW5kKGUpO3N3aXRjaCh0aGlzLnR5cGUpe2Nhc2UiZG9jLXN0YXJ0Ijp7WDV0KGUuc3RhcnQpIT09LTE/KHlpZWxkKnRoaXMucG9wKCkseWllbGQqdGhpcy5zdGVwKCkpOmUuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtyZXR1cm59Y2FzZSJhbmNob3IiOmNhc2UidGFnIjpjYXNlInNwYWNlIjpjYXNlImNvbW1lbnQiOmNhc2UibmV3bGluZSI6ZS5zdGFydC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO3JldHVybn1sZXQgdD10aGlzLnN0YXJ0QmxvY2tWYWx1ZShlKTt0P3RoaXMuc3RhY2sucHVzaCh0KTp5aWVsZHt0eXBlOiJlcnJvciIsb2Zmc2V0OnRoaXMub2Zmc2V0LG1lc3NhZ2U6YFVuZXhwZWN0ZWQgJHt0aGlzLnR5cGV9IHRva2VuIGluIFlBTUwgZG9jdW1lbnRgLHNvdXJjZTp0aGlzLnNvdXJjZX19KnNjYWxhcihlKXtpZih0aGlzLnR5cGU9PT0ibWFwLXZhbHVlLWluZCIpe2xldCB0PUdzZSh0aGlzLnBlZWsoMikpLGE9VTkodCkscjtlLmVuZD8ocj1lLmVuZCxyLnB1c2godGhpcy5zb3VyY2VUb2tlbiksZGVsZXRlIGUuZW5kKTpyPVt0aGlzLnNvdXJjZVRva2VuXTtsZXQgbj17dHlwZToiYmxvY2stbWFwIixvZmZzZXQ6ZS5vZmZzZXQsaW5kZW50OmUuaW5kZW50LGl0ZW1zOlt7c3RhcnQ6YSxrZXk6ZSxzZXA6cn1dfTt0aGlzLm9uS2V5TGluZT0hMCx0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdPW59ZWxzZSB5aWVsZCp0aGlzLmxpbmVFbmQoZSl9KmJsb2NrU2NhbGFyKGUpe3N3aXRjaCh0aGlzLnR5cGUpe2Nhc2Uic3BhY2UiOmNhc2UiY29tbWVudCI6Y2FzZSJuZXdsaW5lIjplLnByb3BzLnB1c2godGhpcy5zb3VyY2VUb2tlbik7cmV0dXJuO2Nhc2Uic2NhbGFyIjppZihlLnNvdXJjZT10aGlzLnNvdXJjZSx0aGlzLmF0TmV3TGluZT0hMCx0aGlzLmluZGVudD0wLHRoaXMub25OZXdMaW5lKXtsZXQgdD10aGlzLnNvdXJjZS5pbmRleE9mKGAKYCkrMTtmb3IoO3QhPT0wOyl0aGlzLm9uTmV3TGluZSh0aGlzLm9mZnNldCt0KSx0PXRoaXMuc291cmNlLmluZGV4T2YoYApgLHQpKzF9eWllbGQqdGhpcy5wb3AoKTticmVhaztkZWZhdWx0OnlpZWxkKnRoaXMucG9wKCkseWllbGQqdGhpcy5zdGVwKCl9fSpibG9ja01hcChlKXtsZXQgdD1lLml0ZW1zW2UuaXRlbXMubGVuZ3RoLTFdO3N3aXRjaCh0aGlzLnR5cGUpe2Nhc2UibmV3bGluZSI6aWYodGhpcy5vbktleUxpbmU9ITEsdC52YWx1ZSl7bGV0IGE9ImVuZCJpbiB0LnZhbHVlP3QudmFsdWUuZW5kOnZvaWQgMDsoQXJyYXkuaXNBcnJheShhKT9hW2EubGVuZ3RoLTFdOnZvaWQgMCk/LnR5cGU9PT0iY29tbWVudCI/YT8ucHVzaCh0aGlzLnNvdXJjZVRva2VuKTplLml0ZW1zLnB1c2goe3N0YXJ0Olt0aGlzLnNvdXJjZVRva2VuXX0pfWVsc2UgdC5zZXA/dC5zZXAucHVzaCh0aGlzLnNvdXJjZVRva2VuKTp0LnN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbik7cmV0dXJuO2Nhc2Uic3BhY2UiOmNhc2UiY29tbWVudCI6aWYodC52YWx1ZSllLml0ZW1zLnB1c2goe3N0YXJ0Olt0aGlzLnNvdXJjZVRva2VuXX0pO2Vsc2UgaWYodC5zZXApdC5zZXAucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtlbHNle2lmKHRoaXMuYXRJbmRlbnRlZENvbW1lbnQodC5zdGFydCxlLmluZGVudCkpe2xldCByPWUuaXRlbXNbZS5pdGVtcy5sZW5ndGgtMl0/LnZhbHVlPy5lbmQ7aWYoQXJyYXkuaXNBcnJheShyKSl7QXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkocix0LnN0YXJ0KSxyLnB1c2godGhpcy5zb3VyY2VUb2tlbiksZS5pdGVtcy5wb3AoKTtyZXR1cm59fXQuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKX1yZXR1cm59aWYodGhpcy5pbmRlbnQ+PWUuaW5kZW50KXtsZXQgYT0hdGhpcy5vbktleUxpbmUmJnRoaXMuaW5kZW50PT09ZS5pbmRlbnQscj1hJiYodC5zZXB8fHQuZXhwbGljaXRLZXkpJiZ0aGlzLnR5cGUhPT0ic2VxLWl0ZW0taW5kIixuPVtdO2lmKHImJnQuc2VwJiYhdC52YWx1ZSl7bGV0IG89W107Zm9yKGxldCBsPTA7bDx0LnNlcC5sZW5ndGg7KytsKXtsZXQgcD10LnNlcFtsXTtzd2l0Y2gocC50eXBlKXtjYXNlIm5ld2xpbmUiOm8ucHVzaChsKTticmVhaztjYXNlInNwYWNlIjpicmVhaztjYXNlImNvbW1lbnQiOnAuaW5kZW50PmUuaW5kZW50JiYoby5sZW5ndGg9MCk7YnJlYWs7ZGVmYXVsdDpvLmxlbmd0aD0wfX1vLmxlbmd0aD49MiYmKG49dC5zZXAuc3BsaWNlKG9bMV0pKX1zd2l0Y2godGhpcy50eXBlKXtjYXNlImFuY2hvciI6Y2FzZSJ0YWciOnJ8fHQudmFsdWU/KG4ucHVzaCh0aGlzLnNvdXJjZVRva2VuKSxlLml0ZW1zLnB1c2goe3N0YXJ0Om59KSx0aGlzLm9uS2V5TGluZT0hMCk6dC5zZXA/dC5zZXAucHVzaCh0aGlzLnNvdXJjZVRva2VuKTp0LnN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbik7cmV0dXJuO2Nhc2UiZXhwbGljaXQta2V5LWluZCI6IXQuc2VwJiYhdC5leHBsaWNpdEtleT8odC5zdGFydC5wdXNoKHRoaXMuc291cmNlVG9rZW4pLHQuZXhwbGljaXRLZXk9ITApOnJ8fHQudmFsdWU/KG4ucHVzaCh0aGlzLnNvdXJjZVRva2VuKSxlLml0ZW1zLnB1c2goe3N0YXJ0Om4sZXhwbGljaXRLZXk6ITB9KSk6dGhpcy5zdGFjay5wdXNoKHt0eXBlOiJibG9jay1tYXAiLG9mZnNldDp0aGlzLm9mZnNldCxpbmRlbnQ6dGhpcy5pbmRlbnQsaXRlbXM6W3tzdGFydDpbdGhpcy5zb3VyY2VUb2tlbl0sZXhwbGljaXRLZXk6ITB9XX0pLHRoaXMub25LZXlMaW5lPSEwO3JldHVybjtjYXNlIm1hcC12YWx1ZS1pbmQiOmlmKHQuZXhwbGljaXRLZXkpaWYodC5zZXApaWYodC52YWx1ZSllLml0ZW1zLnB1c2goe3N0YXJ0OltdLGtleTpudWxsLHNlcDpbdGhpcy5zb3VyY2VUb2tlbl19KTtlbHNlIGlmKFVwKHQuc2VwLCJtYXAtdmFsdWUtaW5kIikpdGhpcy5zdGFjay5wdXNoKHt0eXBlOiJibG9jay1tYXAiLG9mZnNldDp0aGlzLm9mZnNldCxpbmRlbnQ6dGhpcy5pbmRlbnQsaXRlbXM6W3tzdGFydDpuLGtleTpudWxsLHNlcDpbdGhpcy5zb3VyY2VUb2tlbl19XX0pO2Vsc2UgaWYoUTV0KHQua2V5KSYmIVVwKHQuc2VwLCJuZXdsaW5lIikpe2xldCBvPVU5KHQuc3RhcnQpLGw9dC5rZXkscD10LnNlcDtwLnB1c2godGhpcy5zb3VyY2VUb2tlbiksZGVsZXRlIHQua2V5LGRlbGV0ZSB0LnNlcCx0aGlzLnN0YWNrLnB1c2goe3R5cGU6ImJsb2NrLW1hcCIsb2Zmc2V0OnRoaXMub2Zmc2V0LGluZGVudDp0aGlzLmluZGVudCxpdGVtczpbe3N0YXJ0Om8sa2V5Omwsc2VwOnB9XX0pfWVsc2Ugbi5sZW5ndGg+MD90LnNlcD10LnNlcC5jb25jYXQobix0aGlzLnNvdXJjZVRva2VuKTp0LnNlcC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO2Vsc2UgaWYoVXAodC5zdGFydCwibmV3bGluZSIpKU9iamVjdC5hc3NpZ24odCx7a2V5Om51bGwsc2VwOlt0aGlzLnNvdXJjZVRva2VuXX0pO2Vsc2V7bGV0IG89VTkodC5zdGFydCk7dGhpcy5zdGFjay5wdXNoKHt0eXBlOiJibG9jay1tYXAiLG9mZnNldDp0aGlzLm9mZnNldCxpbmRlbnQ6dGhpcy5pbmRlbnQsaXRlbXM6W3tzdGFydDpvLGtleTpudWxsLHNlcDpbdGhpcy5zb3VyY2VUb2tlbl19XX0pfWVsc2UgdC5zZXA/dC52YWx1ZXx8cj9lLml0ZW1zLnB1c2goe3N0YXJ0Om4sa2V5Om51bGwsc2VwOlt0aGlzLnNvdXJjZVRva2VuXX0pOlVwKHQuc2VwLCJtYXAtdmFsdWUtaW5kIik/dGhpcy5zdGFjay5wdXNoKHt0eXBlOiJibG9jay1tYXAiLG9mZnNldDp0aGlzLm9mZnNldCxpbmRlbnQ6dGhpcy5pbmRlbnQsaXRlbXM6W3tzdGFydDpbXSxrZXk6bnVsbCxzZXA6W3RoaXMuc291cmNlVG9rZW5dfV19KTp0LnNlcC5wdXNoKHRoaXMuc291cmNlVG9rZW4pOk9iamVjdC5hc3NpZ24odCx7a2V5Om51bGwsc2VwOlt0aGlzLnNvdXJjZVRva2VuXX0pO3RoaXMub25LZXlMaW5lPSEwO3JldHVybjtjYXNlImFsaWFzIjpjYXNlInNjYWxhciI6Y2FzZSJzaW5nbGUtcXVvdGVkLXNjYWxhciI6Y2FzZSJkb3VibGUtcXVvdGVkLXNjYWxhciI6e2xldCBvPXRoaXMuZmxvd1NjYWxhcih0aGlzLnR5cGUpO3J8fHQudmFsdWU/KGUuaXRlbXMucHVzaCh7c3RhcnQ6bixrZXk6byxzZXA6W119KSx0aGlzLm9uS2V5TGluZT0hMCk6dC5zZXA/dGhpcy5zdGFjay5wdXNoKG8pOihPYmplY3QuYXNzaWduKHQse2tleTpvLHNlcDpbXX0pLHRoaXMub25LZXlMaW5lPSEwKTtyZXR1cm59ZGVmYXVsdDp7bGV0IG89dGhpcy5zdGFydEJsb2NrVmFsdWUoZSk7aWYobyl7aWYoby50eXBlPT09ImJsb2NrLXNlcSIpe2lmKCF0LmV4cGxpY2l0S2V5JiZ0LnNlcCYmIVVwKHQuc2VwLCJuZXdsaW5lIikpe3lpZWxkKnRoaXMucG9wKHt0eXBlOiJlcnJvciIsb2Zmc2V0OnRoaXMub2Zmc2V0LG1lc3NhZ2U6IlVuZXhwZWN0ZWQgYmxvY2stc2VxLWluZCBvbiBzYW1lIGxpbmUgd2l0aCBrZXkiLHNvdXJjZTp0aGlzLnNvdXJjZX0pO3JldHVybn19ZWxzZSBhJiZlLml0ZW1zLnB1c2goe3N0YXJ0Om59KTt0aGlzLnN0YWNrLnB1c2gobyk7cmV0dXJufX19fXlpZWxkKnRoaXMucG9wKCkseWllbGQqdGhpcy5zdGVwKCl9KmJsb2NrU2VxdWVuY2UoZSl7bGV0IHQ9ZS5pdGVtc1tlLml0ZW1zLmxlbmd0aC0xXTtzd2l0Y2godGhpcy50eXBlKXtjYXNlIm5ld2xpbmUiOmlmKHQudmFsdWUpe2xldCBhPSJlbmQiaW4gdC52YWx1ZT90LnZhbHVlLmVuZDp2b2lkIDA7KEFycmF5LmlzQXJyYXkoYSk/YVthLmxlbmd0aC0xXTp2b2lkIDApPy50eXBlPT09ImNvbW1lbnQiP2E/LnB1c2godGhpcy5zb3VyY2VUb2tlbik6ZS5pdGVtcy5wdXNoKHtzdGFydDpbdGhpcy5zb3VyY2VUb2tlbl19KX1lbHNlIHQuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtyZXR1cm47Y2FzZSJzcGFjZSI6Y2FzZSJjb21tZW50IjppZih0LnZhbHVlKWUuaXRlbXMucHVzaCh7c3RhcnQ6W3RoaXMuc291cmNlVG9rZW5dfSk7ZWxzZXtpZih0aGlzLmF0SW5kZW50ZWRDb21tZW50KHQuc3RhcnQsZS5pbmRlbnQpKXtsZXQgcj1lLml0ZW1zW2UuaXRlbXMubGVuZ3RoLTJdPy52YWx1ZT8uZW5kO2lmKEFycmF5LmlzQXJyYXkocikpe0FycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KHIsdC5zdGFydCksci5wdXNoKHRoaXMuc291cmNlVG9rZW4pLGUuaXRlbXMucG9wKCk7cmV0dXJufX10LnN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbil9cmV0dXJuO2Nhc2UiYW5jaG9yIjpjYXNlInRhZyI6aWYodC52YWx1ZXx8dGhpcy5pbmRlbnQ8PWUuaW5kZW50KWJyZWFrO3Quc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtyZXR1cm47Y2FzZSJzZXEtaXRlbS1pbmQiOmlmKHRoaXMuaW5kZW50IT09ZS5pbmRlbnQpYnJlYWs7dC52YWx1ZXx8VXAodC5zdGFydCwic2VxLWl0ZW0taW5kIik/ZS5pdGVtcy5wdXNoKHtzdGFydDpbdGhpcy5zb3VyY2VUb2tlbl19KTp0LnN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbik7cmV0dXJufWlmKHRoaXMuaW5kZW50PmUuaW5kZW50KXtsZXQgYT10aGlzLnN0YXJ0QmxvY2tWYWx1ZShlKTtpZihhKXt0aGlzLnN0YWNrLnB1c2goYSk7cmV0dXJufX15aWVsZCp0aGlzLnBvcCgpLHlpZWxkKnRoaXMuc3RlcCgpfSpmbG93Q29sbGVjdGlvbihlKXtsZXQgdD1lLml0ZW1zW2UuaXRlbXMubGVuZ3RoLTFdO2lmKHRoaXMudHlwZT09PSJmbG93LWVycm9yLWVuZCIpe2xldCBhO2RvIHlpZWxkKnRoaXMucG9wKCksYT10aGlzLnBlZWsoMSk7d2hpbGUoYT8udHlwZT09PSJmbG93LWNvbGxlY3Rpb24iKX1lbHNlIGlmKGUuZW5kLmxlbmd0aD09PTApe3N3aXRjaCh0aGlzLnR5cGUpe2Nhc2UiY29tbWEiOmNhc2UiZXhwbGljaXQta2V5LWluZCI6IXR8fHQuc2VwP2UuaXRlbXMucHVzaCh7c3RhcnQ6W3RoaXMuc291cmNlVG9rZW5dfSk6dC5zdGFydC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO3JldHVybjtjYXNlIm1hcC12YWx1ZS1pbmQiOiF0fHx0LnZhbHVlP2UuaXRlbXMucHVzaCh7c3RhcnQ6W10sa2V5Om51bGwsc2VwOlt0aGlzLnNvdXJjZVRva2VuXX0pOnQuc2VwP3Quc2VwLnB1c2godGhpcy5zb3VyY2VUb2tlbik6T2JqZWN0LmFzc2lnbih0LHtrZXk6bnVsbCxzZXA6W3RoaXMuc291cmNlVG9rZW5dfSk7cmV0dXJuO2Nhc2Uic3BhY2UiOmNhc2UiY29tbWVudCI6Y2FzZSJuZXdsaW5lIjpjYXNlImFuY2hvciI6Y2FzZSJ0YWciOiF0fHx0LnZhbHVlP2UuaXRlbXMucHVzaCh7c3RhcnQ6W3RoaXMuc291cmNlVG9rZW5dfSk6dC5zZXA/dC5zZXAucHVzaCh0aGlzLnNvdXJjZVRva2VuKTp0LnN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbik7cmV0dXJuO2Nhc2UiYWxpYXMiOmNhc2Uic2NhbGFyIjpjYXNlInNpbmdsZS1xdW90ZWQtc2NhbGFyIjpjYXNlImRvdWJsZS1xdW90ZWQtc2NhbGFyIjp7bGV0IHI9dGhpcy5mbG93U2NhbGFyKHRoaXMudHlwZSk7IXR8fHQudmFsdWU/ZS5pdGVtcy5wdXNoKHtzdGFydDpbXSxrZXk6cixzZXA6W119KTp0LnNlcD90aGlzLnN0YWNrLnB1c2gocik6T2JqZWN0LmFzc2lnbih0LHtrZXk6cixzZXA6W119KTtyZXR1cm59Y2FzZSJmbG93LW1hcC1lbmQiOmNhc2UiZmxvdy1zZXEtZW5kIjplLmVuZC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO3JldHVybn1sZXQgYT10aGlzLnN0YXJ0QmxvY2tWYWx1ZShlKTthP3RoaXMuc3RhY2sucHVzaChhKTooeWllbGQqdGhpcy5wb3AoKSx5aWVsZCp0aGlzLnN0ZXAoKSl9ZWxzZXtsZXQgYT10aGlzLnBlZWsoMik7aWYoYS50eXBlPT09ImJsb2NrLW1hcCImJih0aGlzLnR5cGU9PT0ibWFwLXZhbHVlLWluZCImJmEuaW5kZW50PT09ZS5pbmRlbnR8fHRoaXMudHlwZT09PSJuZXdsaW5lIiYmIWEuaXRlbXNbYS5pdGVtcy5sZW5ndGgtMV0uc2VwKSl5aWVsZCp0aGlzLnBvcCgpLHlpZWxkKnRoaXMuc3RlcCgpO2Vsc2UgaWYodGhpcy50eXBlPT09Im1hcC12YWx1ZS1pbmQiJiZhLnR5cGUhPT0iZmxvdy1jb2xsZWN0aW9uIil7bGV0IHI9R3NlKGEpLG49VTkocik7SjV0KGUpO2xldCBvPWUuZW5kLnNwbGljZSgxLGUuZW5kLmxlbmd0aCk7by5wdXNoKHRoaXMuc291cmNlVG9rZW4pO2xldCBsPXt0eXBlOiJibG9jay1tYXAiLG9mZnNldDplLm9mZnNldCxpbmRlbnQ6ZS5pbmRlbnQsaXRlbXM6W3tzdGFydDpuLGtleTplLHNlcDpvfV19O3RoaXMub25LZXlMaW5lPSEwLHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV09bH1lbHNlIHlpZWxkKnRoaXMubGluZUVuZChlKX19Zmxvd1NjYWxhcihlKXtpZih0aGlzLm9uTmV3TGluZSl7bGV0IHQ9dGhpcy5zb3VyY2UuaW5kZXhPZihgCmApKzE7Zm9yKDt0IT09MDspdGhpcy5vbk5ld0xpbmUodGhpcy5vZmZzZXQrdCksdD10aGlzLnNvdXJjZS5pbmRleE9mKGAKYCx0KSsxfXJldHVybnt0eXBlOmUsb2Zmc2V0OnRoaXMub2Zmc2V0LGluZGVudDp0aGlzLmluZGVudCxzb3VyY2U6dGhpcy5zb3VyY2V9fXN0YXJ0QmxvY2tWYWx1ZShlKXtzd2l0Y2godGhpcy50eXBlKXtjYXNlImFsaWFzIjpjYXNlInNjYWxhciI6Y2FzZSJzaW5nbGUtcXVvdGVkLXNjYWxhciI6Y2FzZSJkb3VibGUtcXVvdGVkLXNjYWxhciI6cmV0dXJuIHRoaXMuZmxvd1NjYWxhcih0aGlzLnR5cGUpO2Nhc2UiYmxvY2stc2NhbGFyLWhlYWRlciI6cmV0dXJue3R5cGU6ImJsb2NrLXNjYWxhciIsb2Zmc2V0OnRoaXMub2Zmc2V0LGluZGVudDp0aGlzLmluZGVudCxwcm9wczpbdGhpcy5zb3VyY2VUb2tlbl0sc291cmNlOiIifTtjYXNlImZsb3ctbWFwLXN0YXJ0IjpjYXNlImZsb3ctc2VxLXN0YXJ0IjpyZXR1cm57dHlwZToiZmxvdy1jb2xsZWN0aW9uIixvZmZzZXQ6dGhpcy5vZmZzZXQsaW5kZW50OnRoaXMuaW5kZW50LHN0YXJ0OnRoaXMuc291cmNlVG9rZW4saXRlbXM6W10sZW5kOltdfTtjYXNlInNlcS1pdGVtLWluZCI6cmV0dXJue3R5cGU6ImJsb2NrLXNlcSIsb2Zmc2V0OnRoaXMub2Zmc2V0LGluZGVudDp0aGlzLmluZGVudCxpdGVtczpbe3N0YXJ0Olt0aGlzLnNvdXJjZVRva2VuXX1dfTtjYXNlImV4cGxpY2l0LWtleS1pbmQiOnt0aGlzLm9uS2V5TGluZT0hMDtsZXQgdD1Hc2UoZSksYT1VOSh0KTtyZXR1cm4gYS5wdXNoKHRoaXMuc291cmNlVG9rZW4pLHt0eXBlOiJibG9jay1tYXAiLG9mZnNldDp0aGlzLm9mZnNldCxpbmRlbnQ6dGhpcy5pbmRlbnQsaXRlbXM6W3tzdGFydDphLGV4cGxpY2l0S2V5OiEwfV19fWNhc2UibWFwLXZhbHVlLWluZCI6e3RoaXMub25LZXlMaW5lPSEwO2xldCB0PUdzZShlKSxhPVU5KHQpO3JldHVybnt0eXBlOiJibG9jay1tYXAiLG9mZnNldDp0aGlzLm9mZnNldCxpbmRlbnQ6dGhpcy5pbmRlbnQsaXRlbXM6W3tzdGFydDphLGtleTpudWxsLHNlcDpbdGhpcy5zb3VyY2VUb2tlbl19XX19fXJldHVybiBudWxsfWF0SW5kZW50ZWRDb21tZW50KGUsdCl7cmV0dXJuIHRoaXMudHlwZSE9PSJjb21tZW50Inx8dGhpcy5pbmRlbnQ8PXQ/ITE6ZS5ldmVyeShhPT5hLnR5cGU9PT0ibmV3bGluZSJ8fGEudHlwZT09PSJzcGFjZSIpfSpkb2N1bWVudEVuZChlKXt0aGlzLnR5cGUhPT0iZG9jLW1vZGUiJiYoZS5lbmQ/ZS5lbmQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTplLmVuZD1bdGhpcy5zb3VyY2VUb2tlbl0sdGhpcy50eXBlPT09Im5ld2xpbmUiJiYoeWllbGQqdGhpcy5wb3AoKSkpfSpsaW5lRW5kKGUpe3N3aXRjaCh0aGlzLnR5cGUpe2Nhc2UiY29tbWEiOmNhc2UiZG9jLXN0YXJ0IjpjYXNlImRvYy1lbmQiOmNhc2UiZmxvdy1zZXEtZW5kIjpjYXNlImZsb3ctbWFwLWVuZCI6Y2FzZSJtYXAtdmFsdWUtaW5kIjp5aWVsZCp0aGlzLnBvcCgpLHlpZWxkKnRoaXMuc3RlcCgpO2JyZWFrO2Nhc2UibmV3bGluZSI6dGhpcy5vbktleUxpbmU9ITE7ZGVmYXVsdDplLmVuZD9lLmVuZC5wdXNoKHRoaXMuc291cmNlVG9rZW4pOmUuZW5kPVt0aGlzLnNvdXJjZVRva2VuXSx0aGlzLnR5cGU9PT0ibmV3bGluZSImJih5aWVsZCp0aGlzLnBvcCgpKX19fX0pO2Z1bmN0aW9uIGU4dChzKXtsZXQgZT1zLnByZXR0eUVycm9ycyE9PSExO3JldHVybntsaW5lQ291bnRlcjpzLmxpbmVDb3VudGVyfHxlJiZuZXcgVnB8fG51bGwscHJldHR5RXJyb3JzOmV9fWZ1bmN0aW9uIEtzZShzLGU9e30pe2xldHtsaW5lQ291bnRlcjp0LHByZXR0eUVycm9yczphfT1lOHQoZSkscj1uZXcgJDAodD8uYWRkTmV3TGluZSksbj1uZXcgQzAoZSksbz1BcnJheS5mcm9tKG4uY29tcG9zZShyLnBhcnNlKHMpKSk7aWYoYSYmdClmb3IobGV0IGwgb2YgbylsLmVycm9ycy5mb3JFYWNoKEY5KHMsdCkpLGwud2FybmluZ3MuZm9yRWFjaChGOShzLHQpKTtyZXR1cm4gby5sZW5ndGg+MD9vOk9iamVjdC5hc3NpZ24oW10se2VtcHR5OiEwfSxuLnN0cmVhbUluZm8oKSl9ZnVuY3Rpb24gZWsocyxlPXt9KXtsZXR7bGluZUNvdW50ZXI6dCxwcmV0dHlFcnJvcnM6YX09ZTh0KGUpLHI9bmV3ICQwKHQ/LmFkZE5ld0xpbmUpLG49bmV3IEMwKGUpLG89bnVsbDtmb3IobGV0IGwgb2Ygbi5jb21wb3NlKHIucGFyc2UocyksITAscy5sZW5ndGgpKWlmKCFvKW89bDtlbHNlIGlmKG8ub3B0aW9ucy5sb2dMZXZlbCE9PSJzaWxlbnQiKXtvLmVycm9ycy5wdXNoKG5ldyBrbihsLnJhbmdlLnNsaWNlKDAsMiksIk1VTFRJUExFX0RPQ1MiLCJTb3VyY2UgY29udGFpbnMgbXVsdGlwbGUgZG9jdW1lbnRzOyBwbGVhc2UgdXNlIFlBTUwucGFyc2VBbGxEb2N1bWVudHMoKSIpKTticmVha31yZXR1cm4gYSYmdCYmKG8uZXJyb3JzLmZvckVhY2goRjkocyx0KSksby53YXJuaW5ncy5mb3JFYWNoKEY5KHMsdCkpKSxvfWZ1bmN0aW9uIFlzZShzLGUsdCl7bGV0IGE7dHlwZW9mIGU9PSJmdW5jdGlvbiI/YT1lOnQ9PT12b2lkIDAmJmUmJnR5cGVvZiBlPT0ib2JqZWN0IiYmKHQ9ZSk7bGV0IHI9ZWsocyx0KTtpZighcilyZXR1cm4gbnVsbDtpZihyLndhcm5pbmdzLmZvckVhY2gobj0+THcoci5vcHRpb25zLmxvZ0xldmVsLG4pKSxyLmVycm9ycy5sZW5ndGg+MCl7aWYoci5vcHRpb25zLmxvZ0xldmVsIT09InNpbGVudCIpdGhyb3cgci5lcnJvcnNbMF07ci5lcnJvcnM9W119cmV0dXJuIHIudG9KUyhPYmplY3QuYXNzaWduKHtyZXZpdmVyOmF9LHQpKX1mdW5jdGlvbiBac2UocyxlLHQpe2xldCBhPW51bGw7aWYodHlwZW9mIGU9PSJmdW5jdGlvbiJ8fEFycmF5LmlzQXJyYXkoZSk/YT1lOnQ9PT12b2lkIDAmJmUmJih0PWUpLHR5cGVvZiB0PT0ic3RyaW5nIiYmKHQ9dC5sZW5ndGgpLHR5cGVvZiB0PT0ibnVtYmVyIil7bGV0IHI9TWF0aC5yb3VuZCh0KTt0PXI8MT92b2lkIDA6cj44P3tpbmRlbnQ6OH06e2luZGVudDpyfX1pZihzPT09dm9pZCAwKXtsZXR7a2VlcFVuZGVmaW5lZDpyfT10Pz9lPz97fTtpZighcilyZXR1cm59cmV0dXJuIHhsKHMpJiYhYT9zLnRvU3RyaW5nKHQpOm5ldyBMYyhzLGEsdCkudG9TdHJpbmcodCl9dmFyIHQ4dD1nKCgpPT57QzNlKCk7VXcoKTtXdygpO0g0ZSgpO3VzKCk7TjNlKCk7UjNlKCk7aShlOHQsInBhcnNlT3B0aW9ucyIpO2koS3NlLCJwYXJzZUFsbERvY3VtZW50cyIpO2koZWssInBhcnNlRG9jdW1lbnQiKTtpKFlzZSwicGFyc2UiKTtpKFpzZSwic3RyaW5naWZ5Iil9KTt2YXIgTzNlPXt9O3l0KE8zZSx7QWxpYXM6KCk9PkNjLENTVDooKT0+SncsQ29tcG9zZXI6KCk9PkMwLERvY3VtZW50OigpPT5MYyxMZXhlcjooKT0+anAsTGluZUNvdW50ZXI6KCk9PlZwLFBhaXI6KCk9PmNpLFBhcnNlcjooKT0+JDAsU2NhbGFyOigpPT5MdCxTY2hlbWE6KCk9PkJwLFlBTUxFcnJvcjooKT0+SHAsWUFNTE1hcDooKT0+eWksWUFNTFBhcnNlRXJyb3I6KCk9PmtuLFlBTUxTZXE6KCk9PlZyLFlBTUxXYXJuaW5nOigpPT5xcCxpc0FsaWFzOigpPT52bCxpc0NvbGxlY3Rpb246KCk9PmRzLGlzRG9jdW1lbnQ6KCk9PnhsLGlzTWFwOigpPT55bCxpc05vZGU6KCk9PklhLGlzUGFpcjooKT0+Q2EsaXNTY2FsYXI6KCk9PmxhLGlzU2VxOigpPT53bCxwYXJzZTooKT0+WXNlLHBhcnNlQWxsRG9jdW1lbnRzOigpPT5Lc2UscGFyc2VEb2N1bWVudDooKT0+ZWssc3RyaW5naWZ5OigpPT5ac2UsdmlzaXQ6KCk9PkhsLHZpc2l0QXN5bmM6KCk9PmYzfSk7dmFyIEYzZT1nKCgpPT57QzNlKCk7VXcoKTtwM2UoKTtXdygpO2t3KCk7dXMoKTtOcCgpO19yKCk7UnAoKTtPcCgpO1VzZSgpO0EzZSgpO04zZSgpO1IzZSgpO3Q4dCgpO3l3KCl9KTt2YXIgazM9e307eXQoazMse0FsaWFzOigpPT5DYyxDU1Q6KCk9Pkp3LENvbXBvc2VyOigpPT5DMCxEb2N1bWVudDooKT0+TGMsTGV4ZXI6KCk9PmpwLExpbmVDb3VudGVyOigpPT5WcCxQYWlyOigpPT5jaSxQYXJzZXI6KCk9PiQwLFNjYWxhcjooKT0+THQsU2NoZW1hOigpPT5CcCxZQU1MRXJyb3I6KCk9PkhwLFlBTUxNYXA6KCk9PnlpLFlBTUxQYXJzZUVycm9yOigpPT5rbixZQU1MU2VxOigpPT5WcixZQU1MV2FybmluZzooKT0+cXAsZGVmYXVsdDooKT0+R0FhLGlzQWxpYXM6KCk9PnZsLGlzQ29sbGVjdGlvbjooKT0+ZHMsaXNEb2N1bWVudDooKT0+eGwsaXNNYXA6KCk9PnlsLGlzTm9kZTooKT0+SWEsaXNQYWlyOigpPT5DYSxpc1NjYWxhcjooKT0+bGEsaXNTZXE6KCk9PndsLHBhcnNlOigpPT5Zc2UscGFyc2VBbGxEb2N1bWVudHM6KCk9PktzZSxwYXJzZURvY3VtZW50OigpPT5layxzdHJpbmdpZnk6KCk9PlpzZSx2aXNpdDooKT0+SGwsdmlzaXRBc3luYzooKT0+ZjN9KTt2YXIgR0FhLGE4dD1nKCgpPT57RjNlKCk7RjNlKCk7R0FhPU8zZX0pO3ZhciBzOHQ9ZygoKT0+e2E4dCgpfSk7dmFyIHRrPXt9O3l0KHRrLHtnZXRZYW1sRG9jRnJvbVN0cmluZzooKT0+WEFhLG9iamVjdFRvWWFtbFN0cmluZzooKT0+WkFhLHlhbWxTdHJpbmdUb09iamVjdDooKT0+WUFhfSk7dmFyIFlBYSxaQWEsWEFhLGk4dD1nKCgpPT57czh0KCk7WUFhPWkoYXN5bmMgcz0+azMucGFyc2UocyksInlhbWxTdHJpbmdUb09iamVjdCIpLFpBYT1pKGFzeW5jIHM9PmszLnN0cmluZ2lmeShzKSwib2JqZWN0VG9ZYW1sU3RyaW5nIiksWEFhPWkoYXN5bmMgcz0+azMucGFyc2VEb2N1bWVudChzKSwiZ2V0WWFtbERvY0Zyb21TdHJpbmciKX0pO2Z1bmN0aW9uIEIzZShzKXtpZihzKXRocm93IHN9dmFyIHI4dD1nKCgpPT57aShCM2UsImJhaWwiKX0pO3ZhciBmOHQ9cGwoKFdzaSxoOHQpPT57InVzZSBzdHJpY3QiO3ZhciBYc2U9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxvOHQ9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxuOHQ9T2JqZWN0LmRlZmluZVByb3BlcnR5LGw4dD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGM4dD1pKGZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgQXJyYXkuaXNBcnJheT09ImZ1bmN0aW9uIj9BcnJheS5pc0FycmF5KGUpOm84dC5jYWxsKGUpPT09IltvYmplY3QgQXJyYXldIn0sImlzQXJyYXkiKSxkOHQ9aShmdW5jdGlvbihlKXtpZighZXx8bzh0LmNhbGwoZSkhPT0iW29iamVjdCBPYmplY3RdIilyZXR1cm4hMTt2YXIgdD1Yc2UuY2FsbChlLCJjb25zdHJ1Y3RvciIpLGE9ZS5jb25zdHJ1Y3RvciYmZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUmJlhzZS5jYWxsKGUuY29uc3RydWN0b3IucHJvdG90eXBlLCJpc1Byb3RvdHlwZU9mIik7aWYoZS5jb25zdHJ1Y3RvciYmIXQmJiFhKXJldHVybiExO3ZhciByO2ZvcihyIGluIGUpO3JldHVybiB0eXBlb2Ygcj4idSJ8fFhzZS5jYWxsKGUscil9LCJpc1BsYWluT2JqZWN0IiksdTh0PWkoZnVuY3Rpb24oZSx0KXtuOHQmJnQubmFtZT09PSJfX3Byb3RvX18iP244dChlLHQubmFtZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsdmFsdWU6dC5uZXdWYWx1ZSx3cml0YWJsZTohMH0pOmVbdC5uYW1lXT10Lm5ld1ZhbHVlfSwic2V0UHJvcGVydHkiKSxwOHQ9aShmdW5jdGlvbihlLHQpe2lmKHQ9PT0iX19wcm90b19fIilpZihYc2UuY2FsbChlLHQpKXtpZihsOHQpcmV0dXJuIGw4dChlLHQpLnZhbHVlfWVsc2UgcmV0dXJuO3JldHVybiBlW3RdfSwiZ2V0UHJvcGVydHkiKTtoOHQuZXhwb3J0cz1pKGZ1bmN0aW9uIHMoKXt2YXIgZSx0LGEscixuLG8sbD1hcmd1bWVudHNbMF0scD0xLGQ9YXJndW1lbnRzLmxlbmd0aCx1PSExO2Zvcih0eXBlb2YgbD09ImJvb2xlYW4iJiYodT1sLGw9YXJndW1lbnRzWzFdfHx7fSxwPTIpLChsPT1udWxsfHx0eXBlb2YgbCE9Im9iamVjdCImJnR5cGVvZiBsIT0iZnVuY3Rpb24iKSYmKGw9e30pO3A8ZDsrK3ApaWYoZT1hcmd1bWVudHNbcF0sZSE9bnVsbClmb3IodCBpbiBlKWE9cDh0KGwsdCkscj1wOHQoZSx0KSxsIT09ciYmKHUmJnImJihkOHQocil8fChuPWM4dChyKSkpPyhuPyhuPSExLG89YSYmYzh0KGEpP2E6W10pOm89YSYmZDh0KGEpP2E6e30sdTh0KGwse25hbWU6dCxuZXdWYWx1ZTpzKHUsbyxyKX0pKTp0eXBlb2YgcjwidSImJnU4dChsLHtuYW1lOnQsbmV3VmFsdWU6cn0pKTtyZXR1cm4gbH0sImV4dGVuZCIpfSk7dmFyIFdwPWcoKCk9Pnt9KTtmdW5jdGlvbiBhayhzKXtpZih0eXBlb2YgcyE9Im9iamVjdCJ8fHM9PT1udWxsKXJldHVybiExO2xldCBlPU9iamVjdC5nZXRQcm90b3R5cGVPZihzKTtyZXR1cm4oZT09PW51bGx8fGU9PT1PYmplY3QucHJvdG90eXBlfHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk9PT1udWxsKSYmIShTeW1ib2wudG9TdHJpbmdUYWcgaW4gcykmJiEoU3ltYm9sLml0ZXJhdG9yIGluIHMpfXZhciBtOHQ9ZygoKT0+e2koYWssImlzUGxhaW5PYmplY3QiKX0pO2Z1bmN0aW9uIEgzZSgpe2xldCBzPVtdLGU9e3J1bjp0LHVzZTphfTtyZXR1cm4gZTtmdW5jdGlvbiB0KC4uLnIpe2xldCBuPS0xLG89ci5wb3AoKTtpZih0eXBlb2YgbyE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBmdW5jdGlvbiBhcyBsYXN0IGFyZ3VtZW50LCBub3QgIitvKTtsKG51bGwsLi4ucik7ZnVuY3Rpb24gbChwLC4uLmQpe2xldCB1PXNbKytuXSxjPS0xO2lmKHApe28ocCk7cmV0dXJufWZvcig7KytjPHIubGVuZ3RoOykoZFtjXT09PW51bGx8fGRbY109PT12b2lkIDApJiYoZFtjXT1yW2NdKTtyPWQsdT9nOHQodSxsKSguLi5kKTpvKG51bGwsLi4uZCl9aShsLCJuZXh0Iil9ZnVuY3Rpb24gYShyKXtpZih0eXBlb2YgciE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBgbWlkZGVsd2FyZWAgdG8gYmUgYSBmdW5jdGlvbiwgbm90ICIrcik7cmV0dXJuIHMucHVzaChyKSxlfX1mdW5jdGlvbiBnOHQocyxlKXtsZXQgdDtyZXR1cm4gYTtmdW5jdGlvbiBhKC4uLm8pe2xldCBsPXMubGVuZ3RoPm8ubGVuZ3RoLHA7bCYmby5wdXNoKHIpO3RyeXtwPXMuYXBwbHkodGhpcyxvKX1jYXRjaChkKXtsZXQgdT1kO2lmKGwmJnQpdGhyb3cgdTtyZXR1cm4gcih1KX1sfHwocCYmcC50aGVuJiZ0eXBlb2YgcC50aGVuPT0iZnVuY3Rpb24iP3AudGhlbihuLHIpOnAgaW5zdGFuY2VvZiBFcnJvcj9yKHApOm4ocCkpfWZ1bmN0aW9uIHIobywuLi5sKXt0fHwodD0hMCxlKG8sLi4ubCkpfWZ1bmN0aW9uIG4obyl7cihudWxsLG8pfX12YXIgYjh0PWcoKCk9PntpKEgzZSwidHJvdWdoIik7aShnOHQsIndyYXAiKX0pO3ZhciB2OHQ9ZygoKT0+e2I4dCgpfSk7ZnVuY3Rpb24gR3Aocyl7cmV0dXJuIXN8fHR5cGVvZiBzIT0ib2JqZWN0Ij8iIjoicG9zaXRpb24iaW4gc3x8InR5cGUiaW4gcz94OHQocy5wb3NpdGlvbik6InN0YXJ0ImluIHN8fCJlbmQiaW4gcz94OHQocyk6ImxpbmUiaW4gc3x8ImNvbHVtbiJpbiBzP3EzZShzKToiIn1mdW5jdGlvbiBxM2Uocyl7cmV0dXJuIHk4dChzJiZzLmxpbmUpKyI6Iit5OHQocyYmcy5jb2x1bW4pfWZ1bmN0aW9uIHg4dChzKXtyZXR1cm4gcTNlKHMmJnMuc3RhcnQpKyItIitxM2UocyYmcy5lbmQpfWZ1bmN0aW9uIHk4dChzKXtyZXR1cm4gcyYmdHlwZW9mIHM9PSJudW1iZXIiP3M6MX12YXIgdzh0PWcoKCk9PntpKEdwLCJzdHJpbmdpZnlQb3NpdGlvbiIpO2kocTNlLCJwb2ludCIpO2koeDh0LCJwb3NpdGlvbiIpO2koeTh0LCJpbmRleCIpfSk7dmFyIGozZT1nKCgpPT57dzh0KCl9KTt2YXIgY28sazh0PWcoKCk9PntqM2UoKTtjbz1jbGFzcyBleHRlbmRzIEVycm9ye3N0YXRpY3tpKHRoaXMsIlZGaWxlTWVzc2FnZSIpfWNvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigpLHR5cGVvZiB0PT0ic3RyaW5nIiYmKGE9dCx0PXZvaWQgMCk7bGV0IHI9IiIsbj17fSxvPSExO2lmKHQmJigibGluZSJpbiB0JiYiY29sdW1uImluIHQ/bj17cGxhY2U6dH06InN0YXJ0ImluIHQmJiJlbmQiaW4gdD9uPXtwbGFjZTp0fToidHlwZSJpbiB0P249e2FuY2VzdG9yczpbdF0scGxhY2U6dC5wb3NpdGlvbn06bj17Li4udH0pLHR5cGVvZiBlPT0ic3RyaW5nIj9yPWU6IW4uY2F1c2UmJmUmJihvPSEwLHI9ZS5tZXNzYWdlLG4uY2F1c2U9ZSksIW4ucnVsZUlkJiYhbi5zb3VyY2UmJnR5cGVvZiBhPT0ic3RyaW5nIil7bGV0IHA9YS5pbmRleE9mKCI6Iik7cD09PS0xP24ucnVsZUlkPWE6KG4uc291cmNlPWEuc2xpY2UoMCxwKSxuLnJ1bGVJZD1hLnNsaWNlKHArMSkpfWlmKCFuLnBsYWNlJiZuLmFuY2VzdG9ycyYmbi5hbmNlc3RvcnMpe2xldCBwPW4uYW5jZXN0b3JzW24uYW5jZXN0b3JzLmxlbmd0aC0xXTtwJiYobi5wbGFjZT1wLnBvc2l0aW9uKX1sZXQgbD1uLnBsYWNlJiYic3RhcnQiaW4gbi5wbGFjZT9uLnBsYWNlLnN0YXJ0Om4ucGxhY2U7dGhpcy5hbmNlc3RvcnM9bi5hbmNlc3RvcnN8fHZvaWQgMCx0aGlzLmNhdXNlPW4uY2F1c2V8fHZvaWQgMCx0aGlzLmNvbHVtbj1sP2wuY29sdW1uOnZvaWQgMCx0aGlzLmZhdGFsPXZvaWQgMCx0aGlzLmZpbGU9IiIsdGhpcy5tZXNzYWdlPXIsdGhpcy5saW5lPWw/bC5saW5lOnZvaWQgMCx0aGlzLm5hbWU9R3Aobi5wbGFjZSl8fCIxOjEiLHRoaXMucGxhY2U9bi5wbGFjZXx8dm9pZCAwLHRoaXMucmVhc29uPXRoaXMubWVzc2FnZSx0aGlzLnJ1bGVJZD1uLnJ1bGVJZHx8dm9pZCAwLHRoaXMuc291cmNlPW4uc291cmNlfHx2b2lkIDAsdGhpcy5zdGFjaz1vJiZuLmNhdXNlJiZ0eXBlb2Ygbi5jYXVzZS5zdGFjaz09InN0cmluZyI/bi5jYXVzZS5zdGFjazoiIix0aGlzLmFjdHVhbD12b2lkIDAsdGhpcy5leHBlY3RlZD12b2lkIDAsdGhpcy5ub3RlPXZvaWQgMCx0aGlzLnVybD12b2lkIDB9fTtjby5wcm90b3R5cGUuZmlsZT0iIixjby5wcm90b3R5cGUubmFtZT0iIixjby5wcm90b3R5cGUucmVhc29uPSIiLGNvLnByb3RvdHlwZS5tZXNzYWdlPSIiLGNvLnByb3RvdHlwZS5zdGFjaz0iIixjby5wcm90b3R5cGUuY29sdW1uPXZvaWQgMCxjby5wcm90b3R5cGUubGluZT12b2lkIDAsY28ucHJvdG90eXBlLmFuY2VzdG9ycz12b2lkIDAsY28ucHJvdG90eXBlLmNhdXNlPXZvaWQgMCxjby5wcm90b3R5cGUuZmF0YWw9dm9pZCAwLGNvLnByb3RvdHlwZS5wbGFjZT12b2lkIDAsY28ucHJvdG90eXBlLnJ1bGVJZD12b2lkIDAsY28ucHJvdG90eXBlLnNvdXJjZT12b2lkIDB9KTt2YXIgUzh0PWcoKCk9PntrOHQoKX0pO2Z1bmN0aW9uIFFBYShzLGUpe2lmKGUhPT12b2lkIDAmJnR5cGVvZiBlIT0ic3RyaW5nIil0aHJvdyBuZXcgVHlwZUVycm9yKCciZXh0IiBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nJyk7c2socyk7bGV0IHQ9MCxhPS0xLHI9cy5sZW5ndGgsbjtpZihlPT09dm9pZCAwfHxlLmxlbmd0aD09PTB8fGUubGVuZ3RoPnMubGVuZ3RoKXtmb3IoO3ItLTspaWYocy5jb2RlUG9pbnRBdChyKT09PTQ3KXtpZihuKXt0PXIrMTticmVha319ZWxzZSBhPDAmJihuPSEwLGE9cisxKTtyZXR1cm4gYTwwPyIiOnMuc2xpY2UodCxhKX1pZihlPT09cylyZXR1cm4iIjtsZXQgbz0tMSxsPWUubGVuZ3RoLTE7Zm9yKDtyLS07KWlmKHMuY29kZVBvaW50QXQocik9PT00Nyl7aWYobil7dD1yKzE7YnJlYWt9fWVsc2UgbzwwJiYobj0hMCxvPXIrMSksbD4tMSYmKHMuY29kZVBvaW50QXQocik9PT1lLmNvZGVQb2ludEF0KGwtLSk/bDwwJiYoYT1yKToobD0tMSxhPW8pKTtyZXR1cm4gdD09PWE/YT1vOmE8MCYmKGE9cy5sZW5ndGgpLHMuc2xpY2UodCxhKX1mdW5jdGlvbiBKQWEocyl7aWYoc2socykscy5sZW5ndGg9PT0wKXJldHVybiIuIjtsZXQgZT0tMSx0PXMubGVuZ3RoLGE7Zm9yKDstLXQ7KWlmKHMuY29kZVBvaW50QXQodCk9PT00Nyl7aWYoYSl7ZT10O2JyZWFrfX1lbHNlIGF8fChhPSEwKTtyZXR1cm4gZTwwP3MuY29kZVBvaW50QXQoMCk9PT00Nz8iLyI6Ii4iOmU9PT0xJiZzLmNvZGVQb2ludEF0KDApPT09NDc/Ii8vIjpzLnNsaWNlKDAsZSl9ZnVuY3Rpb24gZU5hKHMpe3NrKHMpO2xldCBlPXMubGVuZ3RoLHQ9LTEsYT0wLHI9LTEsbj0wLG87Zm9yKDtlLS07KXtsZXQgbD1zLmNvZGVQb2ludEF0KGUpO2lmKGw9PT00Nyl7aWYobyl7YT1lKzE7YnJlYWt9Y29udGludWV9dDwwJiYobz0hMCx0PWUrMSksbD09PTQ2P3I8MD9yPWU6biE9PTEmJihuPTEpOnI+LTEmJihuPS0xKX1yZXR1cm4gcjwwfHx0PDB8fG49PT0wfHxuPT09MSYmcj09PXQtMSYmcj09PWErMT8iIjpzLnNsaWNlKHIsdCl9ZnVuY3Rpb24gdE5hKC4uLnMpe2xldCBlPS0xLHQ7Zm9yKDsrK2U8cy5sZW5ndGg7KXNrKHNbZV0pLHNbZV0mJih0PXQ9PT12b2lkIDA/c1tlXTp0KyIvIitzW2VdKTtyZXR1cm4gdD09PXZvaWQgMD8iLiI6YU5hKHQpfWZ1bmN0aW9uIGFOYShzKXtzayhzKTtsZXQgZT1zLmNvZGVQb2ludEF0KDApPT09NDcsdD1zTmEocywhZSk7cmV0dXJuIHQubGVuZ3RoPT09MCYmIWUmJih0PSIuIiksdC5sZW5ndGg+MCYmcy5jb2RlUG9pbnRBdChzLmxlbmd0aC0xKT09PTQ3JiYodCs9Ii8iKSxlPyIvIit0OnR9ZnVuY3Rpb24gc05hKHMsZSl7bGV0IHQ9IiIsYT0wLHI9LTEsbj0wLG89LTEsbCxwO2Zvcig7KytvPD1zLmxlbmd0aDspe2lmKG88cy5sZW5ndGgpbD1zLmNvZGVQb2ludEF0KG8pO2Vsc2V7aWYobD09PTQ3KWJyZWFrO2w9NDd9aWYobD09PTQ3KXtpZighKHI9PT1vLTF8fG49PT0xKSlpZihyIT09by0xJiZuPT09Mil7aWYodC5sZW5ndGg8Mnx8YSE9PTJ8fHQuY29kZVBvaW50QXQodC5sZW5ndGgtMSkhPT00Nnx8dC5jb2RlUG9pbnRBdCh0Lmxlbmd0aC0yKSE9PTQ2KXtpZih0Lmxlbmd0aD4yKXtpZihwPXQubGFzdEluZGV4T2YoIi8iKSxwIT09dC5sZW5ndGgtMSl7cDwwPyh0PSIiLGE9MCk6KHQ9dC5zbGljZSgwLHApLGE9dC5sZW5ndGgtMS10Lmxhc3RJbmRleE9mKCIvIikpLHI9byxuPTA7Y29udGludWV9fWVsc2UgaWYodC5sZW5ndGg+MCl7dD0iIixhPTAscj1vLG49MDtjb250aW51ZX19ZSYmKHQ9dC5sZW5ndGg+MD90KyIvLi4iOiIuLiIsYT0yKX1lbHNlIHQubGVuZ3RoPjA/dCs9Ii8iK3Muc2xpY2UocisxLG8pOnQ9cy5zbGljZShyKzEsbyksYT1vLXItMTtyPW8sbj0wfWVsc2UgbD09PTQ2JiZuPi0xP24rKzpuPS0xfXJldHVybiB0fWZ1bmN0aW9uIHNrKHMpe2lmKHR5cGVvZiBzIT0ic3RyaW5nIil0aHJvdyBuZXcgVHlwZUVycm9yKCJQYXRoIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkICIrSlNPTi5zdHJpbmdpZnkocykpfXZhciBBMSxfOHQ9ZygoKT0+e0ExPXtiYXNlbmFtZTpRQWEsZGlybmFtZTpKQWEsZXh0bmFtZTplTmEsam9pbjp0TmEsc2VwOiIvIn07aShRQWEsImJhc2VuYW1lIik7aShKQWEsImRpcm5hbWUiKTtpKGVOYSwiZXh0bmFtZSIpO2kodE5hLCJqb2luIik7aShhTmEsIm5vcm1hbGl6ZSIpO2koc05hLCJub3JtYWxpemVTdHJpbmciKTtpKHNrLCJhc3NlcnRQYXRoIil9KTtmdW5jdGlvbiBpTmEoKXtyZXR1cm4iLyJ9dmFyIE04dCx6OHQ9ZygoKT0+e004dD17Y3dkOmlOYX07aShpTmEsImN3ZCIpfSk7ZnVuY3Rpb24gVzkocyl7cmV0dXJuISEocyE9PW51bGwmJnR5cGVvZiBzPT0ib2JqZWN0IiYmImhyZWYiaW4gcyYmcy5ocmVmJiYicHJvdG9jb2wiaW4gcyYmcy5wcm90b2NvbCYmcy5hdXRoPT09dm9pZCAwKX12YXIgVjNlPWcoKCk9PntpKFc5LCJpc1VybCIpfSk7ZnVuY3Rpb24gQzh0KHMpe2lmKHR5cGVvZiBzPT0ic3RyaW5nIilzPW5ldyBVUkwocyk7ZWxzZSBpZighVzkocykpe2xldCBlPW5ldyBUeXBlRXJyb3IoJ1RoZSAicGF0aCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIHN0cmluZyBvciBhbiBpbnN0YW5jZSBvZiBVUkwuIFJlY2VpdmVkIGAnK3MrImAiKTt0aHJvdyBlLmNvZGU9IkVSUl9JTlZBTElEX0FSR19UWVBFIixlfWlmKHMucHJvdG9jb2whPT0iZmlsZToiKXtsZXQgZT1uZXcgVHlwZUVycm9yKCJUaGUgVVJMIG11c3QgYmUgb2Ygc2NoZW1lIGZpbGUiKTt0aHJvdyBlLmNvZGU9IkVSUl9JTlZBTElEX1VSTF9TQ0hFTUUiLGV9cmV0dXJuIHJOYShzKX1mdW5jdGlvbiByTmEocyl7aWYocy5ob3N0bmFtZSE9PSIiKXtsZXQgYT1uZXcgVHlwZUVycm9yKCdGaWxlIFVSTCBob3N0IG11c3QgYmUgImxvY2FsaG9zdCIgb3IgZW1wdHkgb24gZGFyd2luJyk7dGhyb3cgYS5jb2RlPSJFUlJfSU5WQUxJRF9GSUxFX1VSTF9IT1NUIixhfWxldCBlPXMucGF0aG5hbWUsdD0tMTtmb3IoOysrdDxlLmxlbmd0aDspaWYoZS5jb2RlUG9pbnRBdCh0KT09PTM3JiZlLmNvZGVQb2ludEF0KHQrMSk9PT01MCl7bGV0IGE9ZS5jb2RlUG9pbnRBdCh0KzIpO2lmKGE9PT03MHx8YT09PTEwMil7bGV0IHI9bmV3IFR5cGVFcnJvcigiRmlsZSBVUkwgcGF0aCBtdXN0IG5vdCBpbmNsdWRlIGVuY29kZWQgLyBjaGFyYWN0ZXJzIik7dGhyb3cgci5jb2RlPSJFUlJfSU5WQUxJRF9GSUxFX1VSTF9QQVRIIixyfX1yZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGUpfXZhciBUOHQ9ZygoKT0+e1YzZSgpO1YzZSgpO2koQzh0LCJ1cmxUb1BhdGgiKTtpKHJOYSwiZ2V0UGF0aEZyb21VUkxQb3NpeCIpfSk7ZnVuY3Rpb24gVzNlKHMsZSl7aWYocyYmcy5pbmNsdWRlcyhBMS5zZXApKXRocm93IG5ldyBFcnJvcigiYCIrZSsiYCBjYW5ub3QgYmUgYSBwYXRoOiBkaWQgbm90IGV4cGVjdCBgIitBMS5zZXArImAiKX1mdW5jdGlvbiBHM2UocyxlKXtpZighcyl0aHJvdyBuZXcgRXJyb3IoImAiK2UrImAgY2Fubm90IGJlIGVtcHR5Iil9ZnVuY3Rpb24gJDh0KHMsZSl7aWYoIXMpdGhyb3cgbmV3IEVycm9yKCJTZXR0aW5nIGAiK2UrImAgcmVxdWlyZXMgYHBhdGhgIHRvIGJlIHNldCB0b28iKX1mdW5jdGlvbiBvTmEocyl7cmV0dXJuISEocyYmdHlwZW9mIHM9PSJvYmplY3QiJiYiYnl0ZUxlbmd0aCJpbiBzJiYiYnl0ZU9mZnNldCJpbiBzKX12YXIgVTNlLGlrLEQ4dD1nKCgpPT57Uzh0KCk7Xzh0KCk7ejh0KCk7VDh0KCk7VTNlPVsiaGlzdG9yeSIsInBhdGgiLCJiYXNlbmFtZSIsInN0ZW0iLCJleHRuYW1lIiwiZGlybmFtZSJdLGlrPWNsYXNze3N0YXRpY3tpKHRoaXMsIlZGaWxlIil9Y29uc3RydWN0b3IoZSl7bGV0IHQ7ZT9XOShlKT90PXtwYXRoOmV9OnR5cGVvZiBlPT0ic3RyaW5nInx8b05hKGUpP3Q9e3ZhbHVlOmV9OnQ9ZTp0PXt9LHRoaXMuY3dkPSJjd2QiaW4gdD8iIjpNOHQuY3dkKCksdGhpcy5kYXRhPXt9LHRoaXMuaGlzdG9yeT1bXSx0aGlzLm1lc3NhZ2VzPVtdLHRoaXMudmFsdWUsdGhpcy5tYXAsdGhpcy5yZXN1bHQsdGhpcy5zdG9yZWQ7bGV0IGE9LTE7Zm9yKDsrK2E8VTNlLmxlbmd0aDspe2xldCBuPVUzZVthXTtuIGluIHQmJnRbbl0hPT12b2lkIDAmJnRbbl0hPT1udWxsJiYodGhpc1tuXT1uPT09Imhpc3RvcnkiP1suLi50W25dXTp0W25dKX1sZXQgcjtmb3IociBpbiB0KVUzZS5pbmNsdWRlcyhyKXx8KHRoaXNbcl09dFtyXSl9Z2V0IGJhc2VuYW1lKCl7cmV0dXJuIHR5cGVvZiB0aGlzLnBhdGg9PSJzdHJpbmciP0ExLmJhc2VuYW1lKHRoaXMucGF0aCk6dm9pZCAwfXNldCBiYXNlbmFtZShlKXtHM2UoZSwiYmFzZW5hbWUiKSxXM2UoZSwiYmFzZW5hbWUiKSx0aGlzLnBhdGg9QTEuam9pbih0aGlzLmRpcm5hbWV8fCIiLGUpfWdldCBkaXJuYW1lKCl7cmV0dXJuIHR5cGVvZiB0aGlzLnBhdGg9PSJzdHJpbmciP0ExLmRpcm5hbWUodGhpcy5wYXRoKTp2b2lkIDB9c2V0IGRpcm5hbWUoZSl7JDh0KHRoaXMuYmFzZW5hbWUsImRpcm5hbWUiKSx0aGlzLnBhdGg9QTEuam9pbihlfHwiIix0aGlzLmJhc2VuYW1lKX1nZXQgZXh0bmFtZSgpe3JldHVybiB0eXBlb2YgdGhpcy5wYXRoPT0ic3RyaW5nIj9BMS5leHRuYW1lKHRoaXMucGF0aCk6dm9pZCAwfXNldCBleHRuYW1lKGUpe2lmKFczZShlLCJleHRuYW1lIiksJDh0KHRoaXMuZGlybmFtZSwiZXh0bmFtZSIpLGUpe2lmKGUuY29kZVBvaW50QXQoMCkhPT00Nil0aHJvdyBuZXcgRXJyb3IoImBleHRuYW1lYCBtdXN0IHN0YXJ0IHdpdGggYC5gIik7aWYoZS5pbmNsdWRlcygiLiIsMSkpdGhyb3cgbmV3IEVycm9yKCJgZXh0bmFtZWAgY2Fubm90IGNvbnRhaW4gbXVsdGlwbGUgZG90cyIpfXRoaXMucGF0aD1BMS5qb2luKHRoaXMuZGlybmFtZSx0aGlzLnN0ZW0rKGV8fCIiKSl9Z2V0IHBhdGgoKXtyZXR1cm4gdGhpcy5oaXN0b3J5W3RoaXMuaGlzdG9yeS5sZW5ndGgtMV19c2V0IHBhdGgoZSl7VzkoZSkmJihlPUM4dChlKSksRzNlKGUsInBhdGgiKSx0aGlzLnBhdGghPT1lJiZ0aGlzLmhpc3RvcnkucHVzaChlKX1nZXQgc3RlbSgpe3JldHVybiB0eXBlb2YgdGhpcy5wYXRoPT0ic3RyaW5nIj9BMS5iYXNlbmFtZSh0aGlzLnBhdGgsdGhpcy5leHRuYW1lKTp2b2lkIDB9c2V0IHN0ZW0oZSl7RzNlKGUsInN0ZW0iKSxXM2UoZSwic3RlbSIpLHRoaXMucGF0aD1BMS5qb2luKHRoaXMuZGlybmFtZXx8IiIsZSsodGhpcy5leHRuYW1lfHwiIikpfWZhaWwoZSx0LGEpe2xldCByPXRoaXMubWVzc2FnZShlLHQsYSk7dGhyb3cgci5mYXRhbD0hMCxyfWluZm8oZSx0LGEpe2xldCByPXRoaXMubWVzc2FnZShlLHQsYSk7cmV0dXJuIHIuZmF0YWw9dm9pZCAwLHJ9bWVzc2FnZShlLHQsYSl7bGV0IHI9bmV3IGNvKGUsdCxhKTtyZXR1cm4gdGhpcy5wYXRoJiYoci5uYW1lPXRoaXMucGF0aCsiOiIrci5uYW1lLHIuZmlsZT10aGlzLnBhdGgpLHIuZmF0YWw9ITEsdGhpcy5tZXNzYWdlcy5wdXNoKHIpLHJ9dG9TdHJpbmcoZSl7cmV0dXJuIHRoaXMudmFsdWU9PT12b2lkIDA/IiI6dHlwZW9mIHRoaXMudmFsdWU9PSJzdHJpbmciP3RoaXMudmFsdWU6bmV3IFRleHREZWNvZGVyKGV8fHZvaWQgMCkuZGVjb2RlKHRoaXMudmFsdWUpfX07aShXM2UsImFzc2VydFBhcnQiKTtpKEczZSwiYXNzZXJ0Tm9uRW1wdHkiKTtpKCQ4dCwiYXNzZXJ0UGF0aCIpO2kob05hLCJpc1VpbnQ4QXJyYXkiKX0pO3ZhciBMOHQ9ZygoKT0+e0Q4dCgpfSk7dmFyIEU4dCxQOHQ9ZygoKT0+e0U4dD1pKChmdW5jdGlvbihzKXtsZXQgYT10aGlzLmNvbnN0cnVjdG9yLnByb3RvdHlwZSxyPWFbc10sbj1pKGZ1bmN0aW9uKCl7cmV0dXJuIHIuYXBwbHkobixhcmd1bWVudHMpfSwiYXBwbHkiKTtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKG4sYSksbn0pLCJDYWxsYWJsZUluc3RhbmNlIil9KTtmdW5jdGlvbiBZM2UocyxlKXtpZih0eXBlb2YgZSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYCIrcysiYCB3aXRob3V0IGBwYXJzZXJgIil9ZnVuY3Rpb24gWjNlKHMsZSl7aWYodHlwZW9mIGUhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGAiK3MrImAgd2l0aG91dCBgY29tcGlsZXJgIil9ZnVuY3Rpb24gWDNlKHMsZSl7aWYoZSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBjYWxsIGAiK3MrImAgb24gYSBmcm96ZW4gcHJvY2Vzc29yLlxuQ3JlYXRlIGEgbmV3IHByb2Nlc3NvciBmaXJzdCwgYnkgY2FsbGluZyBpdDogdXNlIGBwcm9jZXNzb3IoKWAgaW5zdGVhZCBvZiBgcHJvY2Vzc29yYC4iKX1mdW5jdGlvbiBJOHQocyl7aWYoIWFrKHMpfHx0eXBlb2Ygcy50eXBlIT0ic3RyaW5nIil0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBub2RlLCBnb3QgYCIrcysiYCIpfWZ1bmN0aW9uIEE4dChzLGUsdCl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJgIitzKyJgIGZpbmlzaGVkIGFzeW5jLiBVc2UgYCIrZSsiYCBpbnN0ZWFkIil9ZnVuY3Rpb24gUXNlKHMpe3JldHVybiBsTmEocyk/czpuZXcgaWsocyl9ZnVuY3Rpb24gbE5hKHMpe3JldHVybiEhKHMmJnR5cGVvZiBzPT0ib2JqZWN0IiYmIm1lc3NhZ2UiaW4gcyYmIm1lc3NhZ2VzImluIHMpfWZ1bmN0aW9uIGNOYShzKXtyZXR1cm4gdHlwZW9mIHM9PSJzdHJpbmcifHxkTmEocyl9ZnVuY3Rpb24gZE5hKHMpe3JldHVybiEhKHMmJnR5cGVvZiBzPT0ib2JqZWN0IiYmImJ5dGVMZW5ndGgiaW4gcyYmImJ5dGVPZmZzZXQiaW4gcyl9dmFyIEpzZSxuTmEsSzNlLHJrLE44dD1nKCgpPT57cjh0KCk7SnNlPXhuKGY4dCgpLDEpO1dwKCk7bTh0KCk7djh0KCk7TDh0KCk7UDh0KCk7bk5hPXt9Lmhhc093blByb3BlcnR5LEszZT1jbGFzcyBzIGV4dGVuZHMgRTh0e3N0YXRpY3tpKHRoaXMsIlByb2Nlc3NvciIpfWNvbnN0cnVjdG9yKCl7c3VwZXIoImNvcHkiKSx0aGlzLkNvbXBpbGVyPXZvaWQgMCx0aGlzLlBhcnNlcj12b2lkIDAsdGhpcy5hdHRhY2hlcnM9W10sdGhpcy5jb21waWxlcj12b2lkIDAsdGhpcy5mcmVlemVJbmRleD0tMSx0aGlzLmZyb3plbj12b2lkIDAsdGhpcy5uYW1lc3BhY2U9e30sdGhpcy5wYXJzZXI9dm9pZCAwLHRoaXMudHJhbnNmb3JtZXJzPUgzZSgpfWNvcHkoKXtsZXQgZT1uZXcgcyx0PS0xO2Zvcig7Kyt0PHRoaXMuYXR0YWNoZXJzLmxlbmd0aDspe2xldCBhPXRoaXMuYXR0YWNoZXJzW3RdO2UudXNlKC4uLmEpfXJldHVybiBlLmRhdGEoKDAsSnNlLmRlZmF1bHQpKCEwLHt9LHRoaXMubmFtZXNwYWNlKSksZX1kYXRhKGUsdCl7cmV0dXJuIHR5cGVvZiBlPT0ic3RyaW5nIj9hcmd1bWVudHMubGVuZ3RoPT09Mj8oWDNlKCJkYXRhIix0aGlzLmZyb3plbiksdGhpcy5uYW1lc3BhY2VbZV09dCx0aGlzKTpuTmEuY2FsbCh0aGlzLm5hbWVzcGFjZSxlKSYmdGhpcy5uYW1lc3BhY2VbZV18fHZvaWQgMDplPyhYM2UoImRhdGEiLHRoaXMuZnJvemVuKSx0aGlzLm5hbWVzcGFjZT1lLHRoaXMpOnRoaXMubmFtZXNwYWNlfWZyZWV6ZSgpe2lmKHRoaXMuZnJvemVuKXJldHVybiB0aGlzO2xldCBlPXRoaXM7Zm9yKDsrK3RoaXMuZnJlZXplSW5kZXg8dGhpcy5hdHRhY2hlcnMubGVuZ3RoOyl7bGV0W3QsLi4uYV09dGhpcy5hdHRhY2hlcnNbdGhpcy5mcmVlemVJbmRleF07aWYoYVswXT09PSExKWNvbnRpbnVlO2FbMF09PT0hMCYmKGFbMF09dm9pZCAwKTtsZXQgcj10LmNhbGwoZSwuLi5hKTt0eXBlb2Ygcj09ImZ1bmN0aW9uIiYmdGhpcy50cmFuc2Zvcm1lcnMudXNlKHIpfXJldHVybiB0aGlzLmZyb3plbj0hMCx0aGlzLmZyZWV6ZUluZGV4PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSx0aGlzfXBhcnNlKGUpe3RoaXMuZnJlZXplKCk7bGV0IHQ9UXNlKGUpLGE9dGhpcy5wYXJzZXJ8fHRoaXMuUGFyc2VyO3JldHVybiBZM2UoInBhcnNlIixhKSxhKFN0cmluZyh0KSx0KX1wcm9jZXNzKGUsdCl7bGV0IGE9dGhpcztyZXR1cm4gdGhpcy5mcmVlemUoKSxZM2UoInByb2Nlc3MiLHRoaXMucGFyc2VyfHx0aGlzLlBhcnNlciksWjNlKCJwcm9jZXNzIix0aGlzLmNvbXBpbGVyfHx0aGlzLkNvbXBpbGVyKSx0P3Iodm9pZCAwLHQpOm5ldyBQcm9taXNlKHIpO2Z1bmN0aW9uIHIobixvKXtsZXQgbD1Rc2UoZSkscD1hLnBhcnNlKGwpO2EucnVuKHAsbCxmdW5jdGlvbih1LGMsYil7aWYodXx8IWN8fCFiKXJldHVybiBkKHUpO2xldCB2PWMseD1hLnN0cmluZ2lmeSh2LGIpO2NOYSh4KT9iLnZhbHVlPXg6Yi5yZXN1bHQ9eCxkKHUsYil9KTtmdW5jdGlvbiBkKHUsYyl7dXx8IWM/byh1KTpuP24oYyk6dCh2b2lkIDAsYyl9aShkLCJyZWFsRG9uZSIpfWkociwiZXhlY3V0b3IiKX1wcm9jZXNzU3luYyhlKXtsZXQgdD0hMSxhO3JldHVybiB0aGlzLmZyZWV6ZSgpLFkzZSgicHJvY2Vzc1N5bmMiLHRoaXMucGFyc2VyfHx0aGlzLlBhcnNlciksWjNlKCJwcm9jZXNzU3luYyIsdGhpcy5jb21waWxlcnx8dGhpcy5Db21waWxlciksdGhpcy5wcm9jZXNzKGUsciksQTh0KCJwcm9jZXNzU3luYyIsInByb2Nlc3MiLHQpLGE7ZnVuY3Rpb24gcihuLG8pe3Q9ITAsQjNlKG4pLGE9b31pKHIsInJlYWxEb25lIil9cnVuKGUsdCxhKXtJOHQoZSksdGhpcy5mcmVlemUoKTtsZXQgcj10aGlzLnRyYW5zZm9ybWVycztyZXR1cm4hYSYmdHlwZW9mIHQ9PSJmdW5jdGlvbiImJihhPXQsdD12b2lkIDApLGE/bih2b2lkIDAsYSk6bmV3IFByb21pc2Uobik7ZnVuY3Rpb24gbihvLGwpe2xldCBwPVFzZSh0KTtyLnJ1bihlLHAsZCk7ZnVuY3Rpb24gZCh1LGMsYil7bGV0IHY9Y3x8ZTt1P2wodSk6bz9vKHYpOmEodm9pZCAwLHYsYil9aShkLCJyZWFsRG9uZSIpfWkobiwiZXhlY3V0b3IiKX1ydW5TeW5jKGUsdCl7bGV0IGE9ITEscjtyZXR1cm4gdGhpcy5ydW4oZSx0LG4pLEE4dCgicnVuU3luYyIsInJ1biIsYSkscjtmdW5jdGlvbiBuKG8sbCl7QjNlKG8pLHI9bCxhPSEwfWkobiwicmVhbERvbmUiKX1zdHJpbmdpZnkoZSx0KXt0aGlzLmZyZWV6ZSgpO2xldCBhPVFzZSh0KSxyPXRoaXMuY29tcGlsZXJ8fHRoaXMuQ29tcGlsZXI7cmV0dXJuIFozZSgic3RyaW5naWZ5IixyKSxJOHQoZSkscihlLGEpfXVzZShlLC4uLnQpe2xldCBhPXRoaXMuYXR0YWNoZXJzLHI9dGhpcy5uYW1lc3BhY2U7aWYoWDNlKCJ1c2UiLHRoaXMuZnJvemVuKSxlIT1udWxsKWlmKHR5cGVvZiBlPT0iZnVuY3Rpb24iKXAoZSx0KTtlbHNlIGlmKHR5cGVvZiBlPT0ib2JqZWN0IilBcnJheS5pc0FycmF5KGUpP2woZSk6byhlKTtlbHNlIHRocm93IG5ldyBUeXBlRXJyb3IoIkV4cGVjdGVkIHVzYWJsZSB2YWx1ZSwgbm90IGAiK2UrImAiKTtyZXR1cm4gdGhpcztmdW5jdGlvbiBuKGQpe2lmKHR5cGVvZiBkPT0iZnVuY3Rpb24iKXAoZCxbXSk7ZWxzZSBpZih0eXBlb2YgZD09Im9iamVjdCIpaWYoQXJyYXkuaXNBcnJheShkKSl7bGV0W3UsLi4uY109ZDtwKHUsYyl9ZWxzZSBvKGQpO2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgdXNhYmxlIHZhbHVlLCBub3QgYCIrZCsiYCIpfWZ1bmN0aW9uIG8oZCl7aWYoISgicGx1Z2lucyJpbiBkKSYmISgic2V0dGluZ3MiaW4gZCkpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB1c2FibGUgdmFsdWUgYnV0IHJlY2VpdmVkIGFuIGVtcHR5IHByZXNldCwgd2hpY2ggaXMgcHJvYmFibHkgYSBtaXN0YWtlOiBwcmVzZXRzIHR5cGljYWxseSBjb21lIHdpdGggYHBsdWdpbnNgIGFuZCBzb21ldGltZXMgd2l0aCBgc2V0dGluZ3NgLCBidXQgdGhpcyBoYXMgbmVpdGhlciIpO2woZC5wbHVnaW5zKSxkLnNldHRpbmdzJiYoci5zZXR0aW5ncz0oMCxKc2UuZGVmYXVsdCkoITAsci5zZXR0aW5ncyxkLnNldHRpbmdzKSl9ZnVuY3Rpb24gbChkKXtsZXQgdT0tMTtpZihkIT1udWxsKWlmKEFycmF5LmlzQXJyYXkoZCkpZm9yKDsrK3U8ZC5sZW5ndGg7KXtsZXQgYz1kW3VdO24oYyl9ZWxzZSB0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBhIGxpc3Qgb2YgcGx1Z2lucywgbm90IGAiK2QrImAiKX1mdW5jdGlvbiBwKGQsdSl7bGV0IGM9LTEsYj0tMTtmb3IoOysrYzxhLmxlbmd0aDspaWYoYVtjXVswXT09PWQpe2I9YzticmVha31pZihiPT09LTEpYS5wdXNoKFtkLC4uLnVdKTtlbHNlIGlmKHUubGVuZ3RoPjApe2xldFt2LC4uLnhdPXUsbT1hW2JdWzFdO2FrKG0pJiZhayh2KSYmKHY9KDAsSnNlLmRlZmF1bHQpKCEwLG0sdikpLGFbYl09W2QsdiwuLi54XX19fX0scms9bmV3IEszZSgpLmZyZWV6ZSgpO2koWTNlLCJhc3NlcnRQYXJzZXIiKTtpKFozZSwiYXNzZXJ0Q29tcGlsZXIiKTtpKFgzZSwiYXNzZXJ0VW5mcm96ZW4iKTtpKEk4dCwiYXNzZXJ0Tm9kZSIpO2koQTh0LCJhc3NlcnREb25lIik7aShRc2UsInZmaWxlIik7aShsTmEsImxvb2tzTGlrZUFWRmlsZSIpO2koY05hLCJsb29rc0xpa2VBVmFsdWUiKTtpKGROYSwiaXNVaW50OEFycmF5Iil9KTt2YXIgUjh0PWcoKCk9PntOOHQoKX0pO2Z1bmN0aW9uIEs5KHMsZSl7bGV0IHQ9U3RyaW5nKHMpO2lmKHR5cGVvZiBlIT0ic3RyaW5nIil0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBjaGFyYWN0ZXIiKTtsZXQgYT0wLHI9dC5pbmRleE9mKGUpO2Zvcig7ciE9PS0xOylhKysscj10LmluZGV4T2YoZSxyK2UubGVuZ3RoKTtyZXR1cm4gYX12YXIgUTNlPWcoKCk9PntpKEs5LCJjY291bnQiKX0pO2Z1bmN0aW9uIFMzKHMpe3JldHVybiBzIT09bnVsbCYmKHM8MzJ8fHM9PT0xMjcpfWZ1bmN0aW9uIHZ0KHMpe3JldHVybiBzIT09bnVsbCYmczwtMn1mdW5jdGlvbiBBYShzKXtyZXR1cm4gcyE9PW51bGwmJihzPDB8fHM9PT0zMil9ZnVuY3Rpb24gSHQocyl7cmV0dXJuIHM9PT0tMnx8cz09PS0xfHxzPT09MzJ9ZnVuY3Rpb24gS3Aocyl7cmV0dXJuIGU7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gdCE9PW51bGwmJnQ+LTEmJnMudGVzdChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKX19dmFyIFVyLEJpLE84dCxvayxGOHQsQjh0LF8zLGdkLFZhPWcoKCk9PntVcj1LcCgvW0EtWmEtel0vKSxCaT1LcCgvW1xkQS1aYS16XS8pLE84dD1LcCgvWyMtJyorXC0tOT0/QS1aXi1+XS8pO2koUzMsImFzY2lpQ29udHJvbCIpO29rPUtwKC9cZC8pLEY4dD1LcCgvW1xkQS1GYS1mXS8pLEI4dD1LcCgvWyEtLzotQFstYHstfl0vKTtpKHZ0LCJtYXJrZG93bkxpbmVFbmRpbmciKTtpKEFhLCJtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlIik7aShIdCwibWFya2Rvd25TcGFjZSIpO18zPUtwKC9ccHtQfXxccHtTfS91KSxnZD1LcCgvXHMvKTtpKEtwLCJyZWdleENoZWNrIil9KTtmdW5jdGlvbiB1TmEocyl7bGV0IGU9W10sdD0tMTtmb3IoOysrdDxzLmxlbmd0aDspZVt0XT1EMChzW3RdKTtyZXR1cm4gZWllKGEpO2Z1bmN0aW9uIGEoLi4ucil7bGV0IG49LTE7Zm9yKDsrK248ZS5sZW5ndGg7KWlmKGVbbl0uYXBwbHkodGhpcyxyKSlyZXR1cm4hMDtyZXR1cm4hMX19ZnVuY3Rpb24gcE5hKHMpe2xldCBlPXM7cmV0dXJuIGVpZSh0KTtmdW5jdGlvbiB0KGEpe2xldCByPWEsbjtmb3IobiBpbiBzKWlmKHJbbl0hPT1lW25dKXJldHVybiExO3JldHVybiEwfX1mdW5jdGlvbiBoTmEocyl7cmV0dXJuIGVpZShlKTtmdW5jdGlvbiBlKHQpe3JldHVybiB0JiZ0LnR5cGU9PT1zfX1mdW5jdGlvbiBlaWUocyl7cmV0dXJuIGU7ZnVuY3Rpb24gZSh0LGEscil7cmV0dXJuISEoSDh0KHQpJiZzLmNhbGwodGhpcyx0LHR5cGVvZiBhPT0ibnVtYmVyIj9hOnZvaWQgMCxyfHx2b2lkIDApKX19ZnVuY3Rpb24gZk5hKCl7cmV0dXJuITB9ZnVuY3Rpb24gSDh0KHMpe3JldHVybiBzIT09bnVsbCYmdHlwZW9mIHM9PSJvYmplY3QiJiYidHlwZSJpbiBzfXZhciBxOHQsRDAsajh0PWcoKCk9PntxOHQ9aSgoZnVuY3Rpb24ocyxlLHQsYSxyKXtsZXQgbj1EMChlKTtpZih0IT1udWxsJiYodHlwZW9mIHQhPSJudW1iZXIifHx0PDB8fHQ9PT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpKXRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgcG9zaXRpdmUgZmluaXRlIGluZGV4Iik7aWYoYSE9bnVsbCYmKCFxOHQoYSl8fCFhLmNoaWxkcmVuKSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHBhcmVudCBub2RlIik7aWYoYT09bnVsbCE9KHQ9PW51bGwpKXRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgYm90aCBwYXJlbnQgYW5kIGluZGV4Iik7cmV0dXJuIEg4dChzKT9uLmNhbGwocixzLHQsYSk6ITF9KSwiaXMiKSxEMD1pKChmdW5jdGlvbihzKXtpZihzPT1udWxsKXJldHVybiBmTmE7aWYodHlwZW9mIHM9PSJmdW5jdGlvbiIpcmV0dXJuIGVpZShzKTtpZih0eXBlb2Ygcz09Im9iamVjdCIpcmV0dXJuIEFycmF5LmlzQXJyYXkocyk/dU5hKHMpOnBOYShzKTtpZih0eXBlb2Ygcz09InN0cmluZyIpcmV0dXJuIGhOYShzKTt0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIGZ1bmN0aW9uLCBzdHJpbmcsIG9yIG9iamVjdCBhcyB0ZXN0Iil9KSwiY29udmVydCIpO2kodU5hLCJhbnlGYWN0b3J5Iik7aShwTmEsInByb3BlcnRpZXNGYWN0b3J5Iik7aShoTmEsInR5cGVGYWN0b3J5Iik7aShlaWUsImNhc3RGYWN0b3J5Iik7aShmTmEsIm9rIik7aShIOHQsImxvb2tzTGlrZUFOb2RlIil9KTt2YXIgdGllPWcoKCk9PntqOHQoKX0pO3ZhciBWOHQ9ZygoKT0+e30pO2Z1bmN0aW9uIG5rKHMsZSx0LGEpe2xldCByO3R5cGVvZiBlPT0iZnVuY3Rpb24iJiZ0eXBlb2YgdCE9ImZ1bmN0aW9uIj8oYT10LHQ9ZSk6cj1lO2xldCBuPUQwKHIpLG89YT8tMToxO2wocyx2b2lkIDAsW10pKCk7ZnVuY3Rpb24gbChwLGQsdSl7bGV0IGM9cCYmdHlwZW9mIHA9PSJvYmplY3QiP3A6e307aWYodHlwZW9mIGMudHlwZT09InN0cmluZyIpe2xldCB2PXR5cGVvZiBjLnRhZ05hbWU9PSJzdHJpbmciP2MudGFnTmFtZTp0eXBlb2YgYy5uYW1lPT0ic3RyaW5nIj9jLm5hbWU6dm9pZCAwO09iamVjdC5kZWZpbmVQcm9wZXJ0eShiLCJuYW1lIix7dmFsdWU6Im5vZGUgKCIrKHAudHlwZSsodj8iPCIrdisiPiI6IiIpKSsiKSJ9KX1yZXR1cm4gYjtmdW5jdGlvbiBiKCl7bGV0IHY9VTh0LHgsbSxmO2lmKCghZXx8bihwLGQsdVt1Lmxlbmd0aC0xXXx8dm9pZCAwKSkmJih2PW1OYSh0KHAsdSkpLHZbMF09PT1NMykpcmV0dXJuIHY7aWYoImNoaWxkcmVuImluIHAmJnAuY2hpbGRyZW4pe2xldCB5PXA7aWYoeS5jaGlsZHJlbiYmdlswXSE9PXNpZSlmb3IobT0oYT95LmNoaWxkcmVuLmxlbmd0aDotMSkrbyxmPXUuY29uY2F0KHkpO20+LTEmJm08eS5jaGlsZHJlbi5sZW5ndGg7KXtsZXQgTT15LmNoaWxkcmVuW21dO2lmKHg9bChNLG0sZikoKSx4WzBdPT09TTMpcmV0dXJuIHg7bT10eXBlb2YgeFsxXT09Im51bWJlciI/eFsxXTptK299fXJldHVybiB2fX1pKGwsImZhY3RvcnkiKX1mdW5jdGlvbiBtTmEocyl7cmV0dXJuIEFycmF5LmlzQXJyYXkocyk/czp0eXBlb2Ygcz09Im51bWJlciI/W2FpZSxzXTpzPT1udWxsP1U4dDpbc119dmFyIFU4dCxhaWUsTTMsc2llLFc4dD1nKCgpPT57dGllKCk7Vjh0KCk7VTh0PVtdLGFpZT0hMCxNMz0hMSxzaWU9InNraXAiO2kobmssInZpc2l0UGFyZW50cyIpO2kobU5hLCJ0b1Jlc3VsdCIpfSk7dmFyIGlpZT1nKCgpPT57Vzh0KCl9KTtmdW5jdGlvbiBKM2UocyxlLHQpe2xldCByPUQwKCh0fHx7fSkuaWdub3JlfHxbXSksbj1nTmEoZSksbz0tMTtmb3IoOysrbzxuLmxlbmd0aDspbmsocywidGV4dCIsbCk7ZnVuY3Rpb24gbChkLHUpe2xldCBjPS0xLGI7Zm9yKDsrK2M8dS5sZW5ndGg7KXtsZXQgdj11W2NdLHg9Yj9iLmNoaWxkcmVuOnZvaWQgMDtpZihyKHYseD94LmluZGV4T2Yodik6dm9pZCAwLGIpKXJldHVybjtiPXZ9aWYoYilyZXR1cm4gcChkLHUpfWkobCwidmlzaXRvciIpO2Z1bmN0aW9uIHAoZCx1KXtsZXQgYz11W3UubGVuZ3RoLTFdLGI9bltvXVswXSx2PW5bb11bMV0seD0wLGY9Yy5jaGlsZHJlbi5pbmRleE9mKGQpLHk9ITEsTT1bXTtiLmxhc3RJbmRleD0wO2xldCB6PWIuZXhlYyhkLnZhbHVlKTtmb3IoO3o7KXtsZXQgTj16LmluZGV4LEM9e2luZGV4OnouaW5kZXgsaW5wdXQ6ei5pbnB1dCxzdGFjazpbLi4udSxkXX0sXz12KC4uLnosQyk7aWYodHlwZW9mIF89PSJzdHJpbmciJiYoXz1fLmxlbmd0aD4wP3t0eXBlOiJ0ZXh0Iix2YWx1ZTpffTp2b2lkIDApLF89PT0hMT9iLmxhc3RJbmRleD1OKzE6KHghPT1OJiZNLnB1c2goe3R5cGU6InRleHQiLHZhbHVlOmQudmFsdWUuc2xpY2UoeCxOKX0pLEFycmF5LmlzQXJyYXkoXyk/TS5wdXNoKC4uLl8pOl8mJk0ucHVzaChfKSx4PU4relswXS5sZW5ndGgseT0hMCksIWIuZ2xvYmFsKWJyZWFrO3o9Yi5leGVjKGQudmFsdWUpfXJldHVybiB5Pyh4PGQudmFsdWUubGVuZ3RoJiZNLnB1c2goe3R5cGU6InRleHQiLHZhbHVlOmQudmFsdWUuc2xpY2UoeCl9KSxjLmNoaWxkcmVuLnNwbGljZShmLDEsLi4uTSkpOk09W2RdLGYrTS5sZW5ndGh9aShwLCJoYW5kbGVyIil9ZnVuY3Rpb24gZ05hKHMpe2xldCBlPVtdO2lmKCFBcnJheS5pc0FycmF5KHMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkV4cGVjdGVkIGZpbmQgYW5kIHJlcGxhY2UgdHVwbGUgb3IgbGlzdCBvZiB0dXBsZXMiKTtsZXQgdD0hc1swXXx8QXJyYXkuaXNBcnJheShzWzBdKT9zOltzXSxhPS0xO2Zvcig7KythPHQubGVuZ3RoOyl7bGV0IHI9dFthXTtlLnB1c2goW2JOYShyWzBdKSx2TmEoclsxXSldKX1yZXR1cm4gZX1mdW5jdGlvbiBiTmEocyl7cmV0dXJuIHR5cGVvZiBzPT0ic3RyaW5nIj9uZXcgUmVnRXhwKFc0KHMpLCJnIik6c31mdW5jdGlvbiB2TmEocyl7cmV0dXJuIHR5cGVvZiBzPT0iZnVuY3Rpb24iP3M6ZnVuY3Rpb24oKXtyZXR1cm4gc319dmFyIEc4dD1nKCgpPT57JGVlKCk7aWllKCk7dGllKCk7aShKM2UsImZpbmRBbmRSZXBsYWNlIik7aShnTmEsInRvUGFpcnMiKTtpKGJOYSwidG9FeHByZXNzaW9uIik7aSh2TmEsInRvRnVuY3Rpb24iKX0pO3ZhciBLOHQ9ZygoKT0+e0c4dCgpfSk7ZnVuY3Rpb24gc2ZlKCl7cmV0dXJue3RyYW5zZm9ybXM6W19OYV0sZW50ZXI6e2xpdGVyYWxBdXRvbGluazp4TmEsbGl0ZXJhbEF1dG9saW5rRW1haWw6YWZlLGxpdGVyYWxBdXRvbGlua0h0dHA6YWZlLGxpdGVyYWxBdXRvbGlua1d3dzphZmV9LGV4aXQ6e2xpdGVyYWxBdXRvbGluazpTTmEsbGl0ZXJhbEF1dG9saW5rRW1haWw6a05hLGxpdGVyYWxBdXRvbGlua0h0dHA6eU5hLGxpdGVyYWxBdXRvbGlua1d3dzp3TmF9fX1mdW5jdGlvbiBpZmUoKXtyZXR1cm57dW5zYWZlOlt7Y2hhcmFjdGVyOiJAIixiZWZvcmU6IlsrXFwtLlxcd10iLGFmdGVyOiJbXFwtLlxcd10iLGluQ29uc3RydWN0OmVmZSxub3RJbkNvbnN0cnVjdDp0ZmV9LHtjaGFyYWN0ZXI6Ii4iLGJlZm9yZToiW1d3XSIsYWZ0ZXI6IltcXC0uXFx3XSIsaW5Db25zdHJ1Y3Q6ZWZlLG5vdEluQ29uc3RydWN0OnRmZX0se2NoYXJhY3RlcjoiOiIsYmVmb3JlOiJbcHNdIixhZnRlcjoiXFwvIixpbkNvbnN0cnVjdDplZmUsbm90SW5Db25zdHJ1Y3Q6dGZlfV19fWZ1bmN0aW9uIHhOYShzKXt0aGlzLmVudGVyKHt0eXBlOiJsaW5rIix0aXRsZTpudWxsLHVybDoiIixjaGlsZHJlbjpbXX0scyl9ZnVuY3Rpb24gYWZlKHMpe3RoaXMuY29uZmlnLmVudGVyLmF1dG9saW5rUHJvdG9jb2wuY2FsbCh0aGlzLHMpfWZ1bmN0aW9uIHlOYShzKXt0aGlzLmNvbmZpZy5leGl0LmF1dG9saW5rUHJvdG9jb2wuY2FsbCh0aGlzLHMpfWZ1bmN0aW9uIHdOYShzKXt0aGlzLmNvbmZpZy5leGl0LmRhdGEuY2FsbCh0aGlzLHMpO2xldCBlPXRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV07ZS50eXBlLGUudXJsPSJodHRwOi8vIit0aGlzLnNsaWNlU2VyaWFsaXplKHMpfWZ1bmN0aW9uIGtOYShzKXt0aGlzLmNvbmZpZy5leGl0LmF1dG9saW5rRW1haWwuY2FsbCh0aGlzLHMpfWZ1bmN0aW9uIFNOYShzKXt0aGlzLmV4aXQocyl9ZnVuY3Rpb24gX05hKHMpe0ozZShzLFtbLyhodHRwcz86XC9cL3x3d3coPz1cLikpKFstLlx3XSspKFteIFx0XHJcbl0qKS9naSxNTmFdLFsvKD88PV58XHN8XHB7UH18XHB7U30pKFstLlx3K10rKUAoWy1cd10rKD86XC5bLVx3XSspKykvZ3Usek5hXV0se2lnbm9yZTpbImxpbmsiLCJsaW5rUmVmZXJlbmNlIl19KX1mdW5jdGlvbiBNTmEocyxlLHQsYSxyKXtsZXQgbj0iIjtpZighWTh0KHIpfHwoL153L2kudGVzdChlKSYmKHQ9ZSt0LGU9IiIsbj0iaHR0cDovLyIpLCFDTmEodCkpKXJldHVybiExO2xldCBvPVROYSh0K2EpO2lmKCFvWzBdKXJldHVybiExO2xldCBsPXt0eXBlOiJsaW5rIix0aXRsZTpudWxsLHVybDpuK2Urb1swXSxjaGlsZHJlbjpbe3R5cGU6InRleHQiLHZhbHVlOmUrb1swXX1dfTtyZXR1cm4gb1sxXT9bbCx7dHlwZToidGV4dCIsdmFsdWU6b1sxXX1dOmx9ZnVuY3Rpb24gek5hKHMsZSx0LGEpe3JldHVybiFZOHQoYSwhMCl8fC9bLVxkX10kLy50ZXN0KHQpPyExOnt0eXBlOiJsaW5rIix0aXRsZTpudWxsLHVybDoibWFpbHRvOiIrZSsiQCIrdCxjaGlsZHJlbjpbe3R5cGU6InRleHQiLHZhbHVlOmUrIkAiK3R9XX19ZnVuY3Rpb24gQ05hKHMpe2xldCBlPXMuc3BsaXQoIi4iKTtyZXR1cm4hKGUubGVuZ3RoPDJ8fGVbZS5sZW5ndGgtMV0mJigvXy8udGVzdChlW2UubGVuZ3RoLTFdKXx8IS9bYS16QS1aXGRdLy50ZXN0KGVbZS5sZW5ndGgtMV0pKXx8ZVtlLmxlbmd0aC0yXSYmKC9fLy50ZXN0KGVbZS5sZW5ndGgtMl0pfHwhL1thLXpBLVpcZF0vLnRlc3QoZVtlLmxlbmd0aC0yXSkpKX1mdW5jdGlvbiBUTmEocyl7bGV0IGU9L1shIiYnKSwuOjs8Pj9cXX1dKyQvLmV4ZWMocyk7aWYoIWUpcmV0dXJuW3Msdm9pZCAwXTtzPXMuc2xpY2UoMCxlLmluZGV4KTtsZXQgdD1lWzBdLGE9dC5pbmRleE9mKCIpIikscj1LOShzLCIoIiksbj1LOShzLCIpIik7Zm9yKDthIT09LTEmJnI+bjspcys9dC5zbGljZSgwLGErMSksdD10LnNsaWNlKGErMSksYT10LmluZGV4T2YoIikiKSxuKys7cmV0dXJuW3MsdF19ZnVuY3Rpb24gWTh0KHMsZSl7bGV0IHQ9cy5pbnB1dC5jaGFyQ29kZUF0KHMuaW5kZXgtMSk7cmV0dXJuKHMuaW5kZXg9PT0wfHxnZCh0KXx8XzModCkpJiYoIWV8fHQhPT00Nyl9dmFyIGVmZSx0ZmUsWjh0PWcoKCk9PntRM2UoKTtXcCgpO1ZhKCk7Szh0KCk7ZWZlPSJwaHJhc2luZyIsdGZlPVsiYXV0b2xpbmsiLCJsaW5rIiwiaW1hZ2UiLCJsYWJlbCJdO2koc2ZlLCJnZm1BdXRvbGlua0xpdGVyYWxGcm9tTWFya2Rvd24iKTtpKGlmZSwiZ2ZtQXV0b2xpbmtMaXRlcmFsVG9NYXJrZG93biIpO2koeE5hLCJlbnRlckxpdGVyYWxBdXRvbGluayIpO2koYWZlLCJlbnRlckxpdGVyYWxBdXRvbGlua1ZhbHVlIik7aSh5TmEsImV4aXRMaXRlcmFsQXV0b2xpbmtIdHRwIik7aSh3TmEsImV4aXRMaXRlcmFsQXV0b2xpbmtXd3ciKTtpKGtOYSwiZXhpdExpdGVyYWxBdXRvbGlua0VtYWlsIik7aShTTmEsImV4aXRMaXRlcmFsQXV0b2xpbmsiKTtpKF9OYSwidHJhbnNmb3JtR2ZtQXV0b2xpbmtMaXRlcmFscyIpO2koTU5hLCJmaW5kVXJsIik7aSh6TmEsImZpbmRFbWFpbCIpO2koQ05hLCJpc0NvcnJlY3REb21haW4iKTtpKFROYSwic3BsaXRVcmwiKTtpKFk4dCwicHJldmlvdXMiKX0pO3ZhciBYOHQ9ZygoKT0+e1o4dCgpfSk7ZnVuY3Rpb24gSGkocyl7cmV0dXJuIHMucmVwbGFjZSgvW1x0XG5cciBdKy9nLCIgIikucmVwbGFjZSgvXiB8ICQvZywiIikudG9Mb3dlckNhc2UoKS50b1VwcGVyQ2FzZSgpfXZhciBZcD1nKCgpPT57aShIaSwibm9ybWFsaXplSWRlbnRpZmllciIpfSk7ZnVuY3Rpb24gJE5hKCl7dGhpcy5idWZmZXIoKX1mdW5jdGlvbiBETmEocyl7dGhpcy5lbnRlcih7dHlwZToiZm9vdG5vdGVSZWZlcmVuY2UiLGlkZW50aWZpZXI6IiIsbGFiZWw6IiJ9LHMpfWZ1bmN0aW9uIExOYSgpe3RoaXMuYnVmZmVyKCl9ZnVuY3Rpb24gRU5hKHMpe3RoaXMuZW50ZXIoe3R5cGU6ImZvb3Rub3RlRGVmaW5pdGlvbiIsaWRlbnRpZmllcjoiIixsYWJlbDoiIixjaGlsZHJlbjpbXX0scyl9ZnVuY3Rpb24gUE5hKHMpe2xldCBlPXRoaXMucmVzdW1lKCksdD10aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdO3QudHlwZSx0LmlkZW50aWZpZXI9SGkodGhpcy5zbGljZVNlcmlhbGl6ZShzKSkudG9Mb3dlckNhc2UoKSx0LmxhYmVsPWV9ZnVuY3Rpb24gSU5hKHMpe3RoaXMuZXhpdChzKX1mdW5jdGlvbiBBTmEocyl7bGV0IGU9dGhpcy5yZXN1bWUoKSx0PXRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV07dC50eXBlLHQuaWRlbnRpZmllcj1IaSh0aGlzLnNsaWNlU2VyaWFsaXplKHMpKS50b0xvd2VyQ2FzZSgpLHQubGFiZWw9ZX1mdW5jdGlvbiBOTmEocyl7dGhpcy5leGl0KHMpfWZ1bmN0aW9uIFJOYSgpe3JldHVybiJbIn1mdW5jdGlvbiBROHQocyxlLHQsYSl7bGV0IHI9dC5jcmVhdGVUcmFja2VyKGEpLG49ci5tb3ZlKCJbXiIpLG89dC5lbnRlcigiZm9vdG5vdGVSZWZlcmVuY2UiKSxsPXQuZW50ZXIoInJlZmVyZW5jZSIpO3JldHVybiBuKz1yLm1vdmUodC5zYWZlKHQuYXNzb2NpYXRpb25JZChzKSx7YWZ0ZXI6Il0iLGJlZm9yZTpufSkpLGwoKSxvKCksbis9ci5tb3ZlKCJdIiksbn1mdW5jdGlvbiByZmUoKXtyZXR1cm57ZW50ZXI6e2dmbUZvb3Rub3RlQ2FsbFN0cmluZzokTmEsZ2ZtRm9vdG5vdGVDYWxsOkROYSxnZm1Gb290bm90ZURlZmluaXRpb25MYWJlbFN0cmluZzpMTmEsZ2ZtRm9vdG5vdGVEZWZpbml0aW9uOkVOYX0sZXhpdDp7Z2ZtRm9vdG5vdGVDYWxsU3RyaW5nOlBOYSxnZm1Gb290bm90ZUNhbGw6SU5hLGdmbUZvb3Rub3RlRGVmaW5pdGlvbkxhYmVsU3RyaW5nOkFOYSxnZm1Gb290bm90ZURlZmluaXRpb246Tk5hfX19ZnVuY3Rpb24gb2ZlKHMpe2xldCBlPSExO3JldHVybiBzJiZzLmZpcnN0TGluZUJsYW5rJiYoZT0hMCkse2hhbmRsZXJzOntmb290bm90ZURlZmluaXRpb246dCxmb290bm90ZVJlZmVyZW5jZTpROHR9LHVuc2FmZTpbe2NoYXJhY3RlcjoiWyIsaW5Db25zdHJ1Y3Q6WyJsYWJlbCIsInBocmFzaW5nIiwicmVmZXJlbmNlIl19XX07ZnVuY3Rpb24gdChhLHIsbixvKXtsZXQgbD1uLmNyZWF0ZVRyYWNrZXIobykscD1sLm1vdmUoIlteIiksZD1uLmVudGVyKCJmb290bm90ZURlZmluaXRpb24iKSx1PW4uZW50ZXIoImxhYmVsIik7cmV0dXJuIHArPWwubW92ZShuLnNhZmUobi5hc3NvY2lhdGlvbklkKGEpLHtiZWZvcmU6cCxhZnRlcjoiXSJ9KSksdSgpLHArPWwubW92ZSgiXToiKSxhLmNoaWxkcmVuJiZhLmNoaWxkcmVuLmxlbmd0aD4wJiYobC5zaGlmdCg0KSxwKz1sLm1vdmUoKGU/YApgOiIgIikrbi5pbmRlbnRMaW5lcyhuLmNvbnRhaW5lckZsb3coYSxsLmN1cnJlbnQoKSksZT9KOHQ6T05hKSkpLGQoKSxwfWkodCwiZm9vdG5vdGVEZWZpbml0aW9uIil9ZnVuY3Rpb24gT05hKHMsZSx0KXtyZXR1cm4gZT09PTA/czpKOHQocyxlLHQpfWZ1bmN0aW9uIEo4dChzLGUsdCl7cmV0dXJuKHQ/IiI6IiAgICAiKStzfXZhciBlZ3Q9ZygoKT0+e1dwKCk7WXAoKTtROHQucGVlaz1STmE7aSgkTmEsImVudGVyRm9vdG5vdGVDYWxsU3RyaW5nIik7aShETmEsImVudGVyRm9vdG5vdGVDYWxsIik7aShMTmEsImVudGVyRm9vdG5vdGVEZWZpbml0aW9uTGFiZWxTdHJpbmciKTtpKEVOYSwiZW50ZXJGb290bm90ZURlZmluaXRpb24iKTtpKFBOYSwiZXhpdEZvb3Rub3RlQ2FsbFN0cmluZyIpO2koSU5hLCJleGl0Rm9vdG5vdGVDYWxsIik7aShBTmEsImV4aXRGb290bm90ZURlZmluaXRpb25MYWJlbFN0cmluZyIpO2koTk5hLCJleGl0Rm9vdG5vdGVEZWZpbml0aW9uIik7aShSTmEsImZvb3Rub3RlUmVmZXJlbmNlUGVlayIpO2koUTh0LCJmb290bm90ZVJlZmVyZW5jZSIpO2kocmZlLCJnZm1Gb290bm90ZUZyb21NYXJrZG93biIpO2kob2ZlLCJnZm1Gb290bm90ZVRvTWFya2Rvd24iKTtpKE9OYSwibWFwRXhjZXB0Rmlyc3QiKTtpKEo4dCwibWFwQWxsIil9KTt2YXIgdGd0PWcoKCk9PntlZ3QoKX0pO2Z1bmN0aW9uIG5mZSgpe3JldHVybntjYW5Db250YWluRW9sczpbImRlbGV0ZSJdLGVudGVyOntzdHJpa2V0aHJvdWdoOkJOYX0sZXhpdDp7c3RyaWtldGhyb3VnaDpITmF9fX1mdW5jdGlvbiBsZmUoKXtyZXR1cm57dW5zYWZlOlt7Y2hhcmFjdGVyOiJ+IixpbkNvbnN0cnVjdDoicGhyYXNpbmciLG5vdEluQ29uc3RydWN0OkZOYX1dLGhhbmRsZXJzOntkZWxldGU6YWd0fX19ZnVuY3Rpb24gQk5hKHMpe3RoaXMuZW50ZXIoe3R5cGU6ImRlbGV0ZSIsY2hpbGRyZW46W119LHMpfWZ1bmN0aW9uIEhOYShzKXt0aGlzLmV4aXQocyl9ZnVuY3Rpb24gYWd0KHMsZSx0LGEpe2xldCByPXQuY3JlYXRlVHJhY2tlcihhKSxuPXQuZW50ZXIoInN0cmlrZXRocm91Z2giKSxvPXIubW92ZSgifn4iKTtyZXR1cm4gbys9dC5jb250YWluZXJQaHJhc2luZyhzLHsuLi5yLmN1cnJlbnQoKSxiZWZvcmU6byxhZnRlcjoifiJ9KSxvKz1yLm1vdmUoIn5+IiksbigpLG99ZnVuY3Rpb24gcU5hKCl7cmV0dXJuIn4ifXZhciBGTmEsc2d0PWcoKCk9PntGTmE9WyJhdXRvbGluayIsImRlc3RpbmF0aW9uTGl0ZXJhbCIsImRlc3RpbmF0aW9uUmF3IiwicmVmZXJlbmNlIiwidGl0bGVRdW90ZSIsInRpdGxlQXBvc3Ryb3BoZSJdO2FndC5wZWVrPXFOYTtpKG5mZSwiZ2ZtU3RyaWtldGhyb3VnaEZyb21NYXJrZG93biIpO2kobGZlLCJnZm1TdHJpa2V0aHJvdWdoVG9NYXJrZG93biIpO2koQk5hLCJlbnRlclN0cmlrZXRocm91Z2giKTtpKEhOYSwiZXhpdFN0cmlrZXRocm91Z2giKTtpKGFndCwiaGFuZGxlRGVsZXRlIik7aShxTmEsInBlZWtEZWxldGUiKX0pO3ZhciBpZ3Q9ZygoKT0+e3NndCgpfSk7ZnVuY3Rpb24gak5hKHMpe3JldHVybiBzLmxlbmd0aH1mdW5jdGlvbiBvZ3QocyxlKXtsZXQgdD1lfHx7fSxhPSh0LmFsaWdufHxbXSkuY29uY2F0KCkscj10LnN0cmluZ0xlbmd0aHx8ak5hLG49W10sbz1bXSxsPVtdLHA9W10sZD0wLHU9LTE7Zm9yKDsrK3U8cy5sZW5ndGg7KXtsZXQgbT1bXSxmPVtdLHk9LTE7Zm9yKHNbdV0ubGVuZ3RoPmQmJihkPXNbdV0ubGVuZ3RoKTsrK3k8c1t1XS5sZW5ndGg7KXtsZXQgTT1WTmEoc1t1XVt5XSk7aWYodC5hbGlnbkRlbGltaXRlcnMhPT0hMSl7bGV0IHo9cihNKTtmW3ldPXosKHBbeV09PT12b2lkIDB8fHo+cFt5XSkmJihwW3ldPXopfW0ucHVzaChNKX1vW3VdPW0sbFt1XT1mfWxldCBjPS0xO2lmKHR5cGVvZiBhPT0ib2JqZWN0IiYmImxlbmd0aCJpbiBhKWZvcig7KytjPGQ7KW5bY109cmd0KGFbY10pO2Vsc2V7bGV0IG09cmd0KGEpO2Zvcig7KytjPGQ7KW5bY109bX1jPS0xO2xldCBiPVtdLHY9W107Zm9yKDsrK2M8ZDspe2xldCBtPW5bY10sZj0iIix5PSIiO209PT05OT8oZj0iOiIseT0iOiIpOm09PT0xMDg/Zj0iOiI6bT09PTExNCYmKHk9IjoiKTtsZXQgTT10LmFsaWduRGVsaW1pdGVycz09PSExPzE6TWF0aC5tYXgoMSxwW2NdLWYubGVuZ3RoLXkubGVuZ3RoKSx6PWYrIi0iLnJlcGVhdChNKSt5O3QuYWxpZ25EZWxpbWl0ZXJzIT09ITEmJihNPWYubGVuZ3RoK00reS5sZW5ndGgsTT5wW2NdJiYocFtjXT1NKSx2W2NdPU0pLGJbY109en1vLnNwbGljZSgxLDAsYiksbC5zcGxpY2UoMSwwLHYpLHU9LTE7bGV0IHg9W107Zm9yKDsrK3U8by5sZW5ndGg7KXtsZXQgbT1vW3VdLGY9bFt1XTtjPS0xO2xldCB5PVtdO2Zvcig7KytjPGQ7KXtsZXQgTT1tW2NdfHwiIix6PSIiLE49IiI7aWYodC5hbGlnbkRlbGltaXRlcnMhPT0hMSl7bGV0IEM9cFtjXS0oZltjXXx8MCksXz1uW2NdO189PT0xMTQ/ej0iICIucmVwZWF0KEMpOl89PT05OT9DJTI/KHo9IiAiLnJlcGVhdChDLzIrLjUpLE49IiAiLnJlcGVhdChDLzItLjUpKTooej0iICIucmVwZWF0KEMvMiksTj16KTpOPSIgIi5yZXBlYXQoQyl9dC5kZWxpbWl0ZXJTdGFydCE9PSExJiYhYyYmeS5wdXNoKCJ8IiksdC5wYWRkaW5nIT09ITEmJiEodC5hbGlnbkRlbGltaXRlcnM9PT0hMSYmTT09PSIiKSYmKHQuZGVsaW1pdGVyU3RhcnQhPT0hMXx8YykmJnkucHVzaCgiICIpLHQuYWxpZ25EZWxpbWl0ZXJzIT09ITEmJnkucHVzaCh6KSx5LnB1c2goTSksdC5hbGlnbkRlbGltaXRlcnMhPT0hMSYmeS5wdXNoKE4pLHQucGFkZGluZyE9PSExJiZ5LnB1c2goIiAiKSwodC5kZWxpbWl0ZXJFbmQhPT0hMXx8YyE9PWQtMSkmJnkucHVzaCgifCIpfXgucHVzaCh0LmRlbGltaXRlckVuZD09PSExP3kuam9pbigiIikucmVwbGFjZSgvICskLywiIik6eS5qb2luKCIiKSl9cmV0dXJuIHguam9pbihgCmApfWZ1bmN0aW9uIFZOYShzKXtyZXR1cm4gcz09bnVsbD8iIjpTdHJpbmcocyl9ZnVuY3Rpb24gcmd0KHMpe2xldCBlPXR5cGVvZiBzPT0ic3RyaW5nIj9zLmNvZGVQb2ludEF0KDApOjA7cmV0dXJuIGU9PT02N3x8ZT09PTk5Pzk5OmU9PT03Nnx8ZT09PTEwOD8xMDg6ZT09PTgyfHxlPT09MTE0PzExNDowfXZhciBuZ3Q9ZygoKT0+e2koak5hLCJkZWZhdWx0U3RyaW5nTGVuZ3RoIik7aShvZ3QsIm1hcmtkb3duVGFibGUiKTtpKFZOYSwic2VyaWFsaXplIik7aShyZ3QsInRvQWxpZ25tZW50Iil9KTtmdW5jdGlvbiByaWUocyxlKXtsZXQgdD1lfHx7fTtmdW5jdGlvbiBhKHIsLi4ubil7bGV0IG89YS5pbnZhbGlkLGw9YS5oYW5kbGVycztpZihyJiZsZ3QuY2FsbChyLHMpKXtsZXQgcD1TdHJpbmcocltzXSk7bz1sZ3QuY2FsbChsLHApP2xbcF06YS51bmtub3dufWlmKG8pcmV0dXJuIG8uY2FsbCh0aGlzLHIsLi4ubil9cmV0dXJuIGkoYSwib25lIiksYS5oYW5kbGVycz10LmhhbmRsZXJzfHx7fSxhLmludmFsaWQ9dC5pbnZhbGlkLGEudW5rbm93bj10LnVua25vd24sYX12YXIgbGd0LGNmZT1nKCgpPT57bGd0PXt9Lmhhc093blByb3BlcnR5O2kocmllLCJ6d2l0Y2giKX0pO2Z1bmN0aW9uIGRmZShzLGUpe2xldCB0PS0xLGE7aWYoZS5leHRlbnNpb25zKWZvcig7Kyt0PGUuZXh0ZW5zaW9ucy5sZW5ndGg7KWRmZShzLGUuZXh0ZW5zaW9uc1t0XSk7Zm9yKGEgaW4gZSlpZihVTmEuY2FsbChlLGEpKXN3aXRjaChhKXtjYXNlImV4dGVuc2lvbnMiOmJyZWFrO2Nhc2UidW5zYWZlIjp7Y2d0KHNbYV0sZVthXSk7YnJlYWt9Y2FzZSJqb2luIjp7Y2d0KHNbYV0sZVthXSk7YnJlYWt9Y2FzZSJoYW5kbGVycyI6e1dOYShzW2FdLGVbYV0pO2JyZWFrfWRlZmF1bHQ6cy5vcHRpb25zW2FdPWVbYV19cmV0dXJuIHN9ZnVuY3Rpb24gY2d0KHMsZSl7ZSYmcy5wdXNoKC4uLmUpfWZ1bmN0aW9uIFdOYShzLGUpe2UmJk9iamVjdC5hc3NpZ24ocyxlKX12YXIgVU5hLGRndD1nKCgpPT57VU5hPXt9Lmhhc093blByb3BlcnR5O2koZGZlLCJjb25maWd1cmUiKTtpKGNndCwibGlzdCIpO2koV05hLCJtYXAiKX0pO2Z1bmN0aW9uIHVndChzLGUsdCxhKXtsZXQgcj10LmVudGVyKCJibG9ja3F1b3RlIiksbj10LmNyZWF0ZVRyYWNrZXIoYSk7bi5tb3ZlKCI+ICIpLG4uc2hpZnQoMik7bGV0IG89dC5pbmRlbnRMaW5lcyh0LmNvbnRhaW5lckZsb3cocyxuLmN1cnJlbnQoKSksR05hKTtyZXR1cm4gcigpLG99ZnVuY3Rpb24gR05hKHMsZSx0KXtyZXR1cm4iPiIrKHQ/IiI6IiAiKStzfXZhciBwZ3Q9ZygoKT0+e2kodWd0LCJibG9ja3F1b3RlIik7aShHTmEsIm1hcCIpfSk7ZnVuY3Rpb24gb2llKHMsZSl7cmV0dXJuIGhndChzLGUuaW5Db25zdHJ1Y3QsITApJiYhaGd0KHMsZS5ub3RJbkNvbnN0cnVjdCwhMSl9ZnVuY3Rpb24gaGd0KHMsZSx0KXtpZih0eXBlb2YgZT09InN0cmluZyImJihlPVtlXSksIWV8fGUubGVuZ3RoPT09MClyZXR1cm4gdDtsZXQgYT0tMTtmb3IoOysrYTxlLmxlbmd0aDspaWYocy5pbmNsdWRlcyhlW2FdKSlyZXR1cm4hMDtyZXR1cm4hMX12YXIgdWZlPWcoKCk9PntpKG9pZSwicGF0dGVybkluU2NvcGUiKTtpKGhndCwibGlzdEluU2NvcGUiKX0pO2Z1bmN0aW9uIHBmZShzLGUsdCxhKXtsZXQgcj0tMTtmb3IoOysrcjx0LnVuc2FmZS5sZW5ndGg7KWlmKHQudW5zYWZlW3JdLmNoYXJhY3Rlcj09PWAKYCYmb2llKHQuc3RhY2ssdC51bnNhZmVbcl0pKXJldHVybi9bIFx0XS8udGVzdChhLmJlZm9yZSk/IiI6IiAiO3JldHVybmBcXApgfXZhciBmZ3Q9ZygoKT0+e3VmZSgpO2kocGZlLCJoYXJkQnJlYWsiKX0pO2Z1bmN0aW9uIG1ndChzLGUpe2xldCB0PVN0cmluZyhzKSxhPXQuaW5kZXhPZihlKSxyPWEsbj0wLG89MDtpZih0eXBlb2YgZSE9InN0cmluZyIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgc3Vic3RyaW5nIik7Zm9yKDthIT09LTE7KWE9PT1yPysrbj5vJiYobz1uKTpuPTEscj1hK2UubGVuZ3RoLGE9dC5pbmRleE9mKGUscik7cmV0dXJuIG99dmFyIGdndD1nKCgpPT57aShtZ3QsImxvbmdlc3RTdHJlYWsiKX0pO2Z1bmN0aW9uIGxrKHMsZSl7cmV0dXJuISEoZS5vcHRpb25zLmZlbmNlcz09PSExJiZzLnZhbHVlJiYhcy5sYW5nJiYvW14gXHJcbl0vLnRlc3Qocy52YWx1ZSkmJiEvXltcdCBdKig/OltcclxuXXwkKXwoPzpefFtcclxuXSlbXHQgXSokLy50ZXN0KHMudmFsdWUpKX12YXIgaGZlPWcoKCk9PntpKGxrLCJmb3JtYXRDb2RlQXNJbmRlbnRlZCIpfSk7ZnVuY3Rpb24gYmd0KHMpe2xldCBlPXMub3B0aW9ucy5mZW5jZXx8ImAiO2lmKGUhPT0iYCImJmUhPT0ifiIpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgc2VyaWFsaXplIGNvZGUgd2l0aCBgIitlKyJgIGZvciBgb3B0aW9ucy5mZW5jZWAsIGV4cGVjdGVkIGBgIGAgYGAgb3IgYH5gIik7cmV0dXJuIGV9dmFyIHZndD1nKCgpPT57aShiZ3QsImNoZWNrRmVuY2UiKX0pO2Z1bmN0aW9uIHhndChzLGUsdCxhKXtsZXQgcj1iZ3QodCksbj1zLnZhbHVlfHwiIixvPXI9PT0iYCI/IkdyYXZlQWNjZW50IjoiVGlsZGUiO2lmKGxrKHMsdCkpe2xldCBjPXQuZW50ZXIoImNvZGVJbmRlbnRlZCIpLGI9dC5pbmRlbnRMaW5lcyhuLEtOYSk7cmV0dXJuIGMoKSxifWxldCBsPXQuY3JlYXRlVHJhY2tlcihhKSxwPXIucmVwZWF0KE1hdGgubWF4KG1ndChuLHIpKzEsMykpLGQ9dC5lbnRlcigiY29kZUZlbmNlZCIpLHU9bC5tb3ZlKHApO2lmKHMubGFuZyl7bGV0IGM9dC5lbnRlcihgY29kZUZlbmNlZExhbmcke299YCk7dSs9bC5tb3ZlKHQuc2FmZShzLmxhbmcse2JlZm9yZTp1LGFmdGVyOiIgIixlbmNvZGU6WyJgIl0sLi4ubC5jdXJyZW50KCl9KSksYygpfWlmKHMubGFuZyYmcy5tZXRhKXtsZXQgYz10LmVudGVyKGBjb2RlRmVuY2VkTWV0YSR7b31gKTt1Kz1sLm1vdmUoIiAiKSx1Kz1sLm1vdmUodC5zYWZlKHMubWV0YSx7YmVmb3JlOnUsYWZ0ZXI6YApgLGVuY29kZTpbImAiXSwuLi5sLmN1cnJlbnQoKX0pKSxjKCl9cmV0dXJuIHUrPWwubW92ZShgCmApLG4mJih1Kz1sLm1vdmUobitgCmApKSx1Kz1sLm1vdmUocCksZCgpLHV9ZnVuY3Rpb24gS05hKHMsZSx0KXtyZXR1cm4odD8iIjoiICAgICIpK3N9dmFyIHlndD1nKCgpPT57Z2d0KCk7aGZlKCk7dmd0KCk7aSh4Z3QsImNvZGUiKTtpKEtOYSwibWFwIil9KTtmdW5jdGlvbiBZOShzKXtsZXQgZT1zLm9wdGlvbnMucXVvdGV8fCciJztpZihlIT09JyInJiZlIT09IiciKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHNlcmlhbGl6ZSB0aXRsZSB3aXRoIGAiK2UrImAgZm9yIGBvcHRpb25zLnF1b3RlYCwgZXhwZWN0ZWQgYFwiYCwgb3IgYCdgIik7cmV0dXJuIGV9dmFyIG5pZT1nKCgpPT57aShZOSwiY2hlY2tRdW90ZSIpfSk7ZnVuY3Rpb24gd2d0KHMsZSx0LGEpe2xldCByPVk5KHQpLG49cj09PSciJz8iUXVvdGUiOiJBcG9zdHJvcGhlIixvPXQuZW50ZXIoImRlZmluaXRpb24iKSxsPXQuZW50ZXIoImxhYmVsIikscD10LmNyZWF0ZVRyYWNrZXIoYSksZD1wLm1vdmUoIlsiKTtyZXR1cm4gZCs9cC5tb3ZlKHQuc2FmZSh0LmFzc29jaWF0aW9uSWQocykse2JlZm9yZTpkLGFmdGVyOiJdIiwuLi5wLmN1cnJlbnQoKX0pKSxkKz1wLm1vdmUoIl06ICIpLGwoKSwhcy51cmx8fC9bXDAtIFx1MDA3Rl0vLnRlc3Qocy51cmwpPyhsPXQuZW50ZXIoImRlc3RpbmF0aW9uTGl0ZXJhbCIpLGQrPXAubW92ZSgiPCIpLGQrPXAubW92ZSh0LnNhZmUocy51cmwse2JlZm9yZTpkLGFmdGVyOiI+IiwuLi5wLmN1cnJlbnQoKX0pKSxkKz1wLm1vdmUoIj4iKSk6KGw9dC5lbnRlcigiZGVzdGluYXRpb25SYXciKSxkKz1wLm1vdmUodC5zYWZlKHMudXJsLHtiZWZvcmU6ZCxhZnRlcjpzLnRpdGxlPyIgIjpgCmAsLi4ucC5jdXJyZW50KCl9KSkpLGwoKSxzLnRpdGxlJiYobD10LmVudGVyKGB0aXRsZSR7bn1gKSxkKz1wLm1vdmUoIiAiK3IpLGQrPXAubW92ZSh0LnNhZmUocy50aXRsZSx7YmVmb3JlOmQsYWZ0ZXI6ciwuLi5wLmN1cnJlbnQoKX0pKSxkKz1wLm1vdmUociksbCgpKSxvKCksZH12YXIga2d0PWcoKCk9PntuaWUoKTtpKHdndCwiZGVmaW5pdGlvbiIpfSk7ZnVuY3Rpb24gU2d0KHMpe2xldCBlPXMub3B0aW9ucy5lbXBoYXNpc3x8IioiO2lmKGUhPT0iKiImJmUhPT0iXyIpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgc2VyaWFsaXplIGVtcGhhc2lzIHdpdGggYCIrZSsiYCBmb3IgYG9wdGlvbnMuZW1waGFzaXNgLCBleHBlY3RlZCBgKmAsIG9yIGBfYCIpO3JldHVybiBlfXZhciBfZ3Q9ZygoKT0+e2koU2d0LCJjaGVja0VtcGhhc2lzIil9KTtmdW5jdGlvbiBqbChzKXtyZXR1cm4iJiN4IitzLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpKyI7In12YXIgWjk9ZygoKT0+e2koamwsImVuY29kZUNoYXJhY3RlclJlZmVyZW5jZSIpfSk7ZnVuY3Rpb24gTDAocyl7aWYocz09PW51bGx8fEFhKHMpfHxnZChzKSlyZXR1cm4gMTtpZihfMyhzKSlyZXR1cm4gMn12YXIgbGllPWcoKCk9PntWYSgpO2koTDAsImNsYXNzaWZ5Q2hhcmFjdGVyIil9KTtmdW5jdGlvbiBYOShzLGUsdCl7bGV0IGE9TDAocykscj1MMChlKTtyZXR1cm4gYT09PXZvaWQgMD9yPT09dm9pZCAwP3Q9PT0iXyI/e2luc2lkZTohMCxvdXRzaWRlOiEwfTp7aW5zaWRlOiExLG91dHNpZGU6ITF9OnI9PT0xP3tpbnNpZGU6ITAsb3V0c2lkZTohMH06e2luc2lkZTohMSxvdXRzaWRlOiEwfTphPT09MT9yPT09dm9pZCAwP3tpbnNpZGU6ITEsb3V0c2lkZTohMX06cj09PTE/e2luc2lkZTohMCxvdXRzaWRlOiEwfTp7aW5zaWRlOiExLG91dHNpZGU6ITF9OnI9PT12b2lkIDA/e2luc2lkZTohMSxvdXRzaWRlOiExfTpyPT09MT97aW5zaWRlOiEwLG91dHNpZGU6ITF9OntpbnNpZGU6ITEsb3V0c2lkZTohMX19dmFyIGZmZT1nKCgpPT57bGllKCk7aShYOSwiZW5jb2RlSW5mbyIpfSk7ZnVuY3Rpb24gbWZlKHMsZSx0LGEpe2xldCByPVNndCh0KSxuPXQuZW50ZXIoImVtcGhhc2lzIiksbz10LmNyZWF0ZVRyYWNrZXIoYSksbD1vLm1vdmUocikscD1vLm1vdmUodC5jb250YWluZXJQaHJhc2luZyhzLHthZnRlcjpyLGJlZm9yZTpsLC4uLm8uY3VycmVudCgpfSkpLGQ9cC5jaGFyQ29kZUF0KDApLHU9WDkoYS5iZWZvcmUuY2hhckNvZGVBdChhLmJlZm9yZS5sZW5ndGgtMSksZCxyKTt1Lmluc2lkZSYmKHA9amwoZCkrcC5zbGljZSgxKSk7bGV0IGM9cC5jaGFyQ29kZUF0KHAubGVuZ3RoLTEpLGI9WDkoYS5hZnRlci5jaGFyQ29kZUF0KDApLGMscik7Yi5pbnNpZGUmJihwPXAuc2xpY2UoMCwtMSkramwoYykpO2xldCB2PW8ubW92ZShyKTtyZXR1cm4gbigpLHQuYXR0ZW50aW9uRW5jb2RlU3Vycm91bmRpbmdJbmZvPXthZnRlcjpiLm91dHNpZGUsYmVmb3JlOnUub3V0c2lkZX0sbCtwK3Z9ZnVuY3Rpb24gWU5hKHMsZSx0KXtyZXR1cm4gdC5vcHRpb25zLmVtcGhhc2lzfHwiKiJ9dmFyIE1ndD1nKCgpPT57X2d0KCk7WjkoKTtmZmUoKTttZmUucGVlaz1ZTmE7aShtZmUsImVtcGhhc2lzIik7aShZTmEsImVtcGhhc2lzUGVlayIpfSk7ZnVuY3Rpb24gY2socyxlLHQsYSl7bGV0IHIsbixvO3R5cGVvZiBlPT0iZnVuY3Rpb24iJiZ0eXBlb2YgdCE9ImZ1bmN0aW9uIj8obj12b2lkIDAsbz1lLHI9dCk6KG49ZSxvPXQscj1hKSxuayhzLG4sbCxyKTtmdW5jdGlvbiBsKHAsZCl7bGV0IHU9ZFtkLmxlbmd0aC0xXSxjPXU/dS5jaGlsZHJlbi5pbmRleE9mKHApOnZvaWQgMDtyZXR1cm4gbyhwLGMsdSl9aShsLCJvdmVybG9hZCIpfXZhciB6Z3Q9ZygoKT0+e2lpZSgpO2lpZSgpO2koY2ssInZpc2l0Iil9KTt2YXIgZ2ZlPWcoKCk9Pnt6Z3QoKX0pO2Z1bmN0aW9uIHozKHMsZSl7bGV0IHQ9ZXx8Wk5hLGE9dHlwZW9mIHQuaW5jbHVkZUltYWdlQWx0PT0iYm9vbGVhbiI/dC5pbmNsdWRlSW1hZ2VBbHQ6ITAscj10eXBlb2YgdC5pbmNsdWRlSHRtbD09ImJvb2xlYW4iP3QuaW5jbHVkZUh0bWw6ITA7cmV0dXJuIENndChzLGEscil9ZnVuY3Rpb24gQ2d0KHMsZSx0KXtpZihYTmEocykpe2lmKCJ2YWx1ZSJpbiBzKXJldHVybiBzLnR5cGU9PT0iaHRtbCImJiF0PyIiOnMudmFsdWU7aWYoZSYmImFsdCJpbiBzJiZzLmFsdClyZXR1cm4gcy5hbHQ7aWYoImNoaWxkcmVuImluIHMpcmV0dXJuIFRndChzLmNoaWxkcmVuLGUsdCl9cmV0dXJuIEFycmF5LmlzQXJyYXkocyk/VGd0KHMsZSx0KToiIn1mdW5jdGlvbiBUZ3QocyxlLHQpe2xldCBhPVtdLHI9LTE7Zm9yKDsrK3I8cy5sZW5ndGg7KWFbcl09Q2d0KHNbcl0sZSx0KTtyZXR1cm4gYS5qb2luKCIiKX1mdW5jdGlvbiBYTmEocyl7cmV0dXJuISEocyYmdHlwZW9mIHM9PSJvYmplY3QiKX12YXIgWk5hLCRndD1nKCgpPT57Wk5hPXt9O2koejMsInRvU3RyaW5nIik7aShDZ3QsIm9uZSIpO2koVGd0LCJhbGwiKTtpKFhOYSwibm9kZSIpfSk7dmFyIGNpZT1nKCgpPT57JGd0KCl9KTtmdW5jdGlvbiBkaWUocyxlKXtsZXQgdD0hMTtyZXR1cm4gY2socyxmdW5jdGlvbihhKXtpZigidmFsdWUiaW4gYSYmL1xyP1xufFxyLy50ZXN0KGEudmFsdWUpfHxhLnR5cGU9PT0iYnJlYWsiKXJldHVybiB0PSEwLE0zfSksISEoKCFzLmRlcHRofHxzLmRlcHRoPDMpJiZ6MyhzKSYmKGUub3B0aW9ucy5zZXRleHR8fHQpKX12YXIgYmZlPWcoKCk9PntnZmUoKTtjaWUoKTtpKGRpZSwiZm9ybWF0SGVhZGluZ0FzU2V0ZXh0Iil9KTtmdW5jdGlvbiBEZ3QocyxlLHQsYSl7bGV0IHI9TWF0aC5tYXgoTWF0aC5taW4oNixzLmRlcHRofHwxKSwxKSxuPXQuY3JlYXRlVHJhY2tlcihhKTtpZihkaWUocyx0KSl7bGV0IHU9dC5lbnRlcigiaGVhZGluZ1NldGV4dCIpLGM9dC5lbnRlcigicGhyYXNpbmciKSxiPXQuY29udGFpbmVyUGhyYXNpbmcocyx7Li4ubi5jdXJyZW50KCksYmVmb3JlOmAKYCxhZnRlcjpgCmB9KTtyZXR1cm4gYygpLHUoKSxiK2AKYCsocj09PTE/Ij0iOiItIikucmVwZWF0KGIubGVuZ3RoLShNYXRoLm1heChiLmxhc3RJbmRleE9mKCJcciIpLGIubGFzdEluZGV4T2YoYApgKSkrMSkpfWxldCBvPSIjIi5yZXBlYXQociksbD10LmVudGVyKCJoZWFkaW5nQXR4IikscD10LmVudGVyKCJwaHJhc2luZyIpO24ubW92ZShvKyIgIik7bGV0IGQ9dC5jb250YWluZXJQaHJhc2luZyhzLHtiZWZvcmU6IiMgIixhZnRlcjpgCmAsLi4ubi5jdXJyZW50KCl9KTtyZXR1cm4vXltcdCBdLy50ZXN0KGQpJiYoZD1qbChkLmNoYXJDb2RlQXQoMCkpK2Quc2xpY2UoMSkpLGQ9ZD9vKyIgIitkOm8sdC5vcHRpb25zLmNsb3NlQXR4JiYoZCs9IiAiK28pLHAoKSxsKCksZH12YXIgTGd0PWcoKCk9PntaOSgpO2JmZSgpO2koRGd0LCJoZWFkaW5nIil9KTtmdW5jdGlvbiB2ZmUocyl7cmV0dXJuIHMudmFsdWV8fCIifWZ1bmN0aW9uIFFOYSgpe3JldHVybiI8In12YXIgRWd0PWcoKCk9Pnt2ZmUucGVlaz1RTmE7aSh2ZmUsImh0bWwiKTtpKFFOYSwiaHRtbFBlZWsiKX0pO2Z1bmN0aW9uIHhmZShzLGUsdCxhKXtsZXQgcj1ZOSh0KSxuPXI9PT0nIic/IlF1b3RlIjoiQXBvc3Ryb3BoZSIsbz10LmVudGVyKCJpbWFnZSIpLGw9dC5lbnRlcigibGFiZWwiKSxwPXQuY3JlYXRlVHJhY2tlcihhKSxkPXAubW92ZSgiIVsiKTtyZXR1cm4gZCs9cC5tb3ZlKHQuc2FmZShzLmFsdCx7YmVmb3JlOmQsYWZ0ZXI6Il0iLC4uLnAuY3VycmVudCgpfSkpLGQrPXAubW92ZSgiXSgiKSxsKCksIXMudXJsJiZzLnRpdGxlfHwvW1wwLSBcdTAwN0ZdLy50ZXN0KHMudXJsKT8obD10LmVudGVyKCJkZXN0aW5hdGlvbkxpdGVyYWwiKSxkKz1wLm1vdmUoIjwiKSxkKz1wLm1vdmUodC5zYWZlKHMudXJsLHtiZWZvcmU6ZCxhZnRlcjoiPiIsLi4ucC5jdXJyZW50KCl9KSksZCs9cC5tb3ZlKCI+IikpOihsPXQuZW50ZXIoImRlc3RpbmF0aW9uUmF3IiksZCs9cC5tb3ZlKHQuc2FmZShzLnVybCx7YmVmb3JlOmQsYWZ0ZXI6cy50aXRsZT8iICI6IikiLC4uLnAuY3VycmVudCgpfSkpKSxsKCkscy50aXRsZSYmKGw9dC5lbnRlcihgdGl0bGUke259YCksZCs9cC5tb3ZlKCIgIityKSxkKz1wLm1vdmUodC5zYWZlKHMudGl0bGUse2JlZm9yZTpkLGFmdGVyOnIsLi4ucC5jdXJyZW50KCl9KSksZCs9cC5tb3ZlKHIpLGwoKSksZCs9cC5tb3ZlKCIpIiksbygpLGR9ZnVuY3Rpb24gSk5hKCl7cmV0dXJuIiEifXZhciBQZ3Q9ZygoKT0+e25pZSgpO3hmZS5wZWVrPUpOYTtpKHhmZSwiaW1hZ2UiKTtpKEpOYSwiaW1hZ2VQZWVrIil9KTtmdW5jdGlvbiB5ZmUocyxlLHQsYSl7bGV0IHI9cy5yZWZlcmVuY2VUeXBlLG49dC5lbnRlcigiaW1hZ2VSZWZlcmVuY2UiKSxvPXQuZW50ZXIoImxhYmVsIiksbD10LmNyZWF0ZVRyYWNrZXIoYSkscD1sLm1vdmUoIiFbIiksZD10LnNhZmUocy5hbHQse2JlZm9yZTpwLGFmdGVyOiJdIiwuLi5sLmN1cnJlbnQoKX0pO3ArPWwubW92ZShkKyJdWyIpLG8oKTtsZXQgdT10LnN0YWNrO3Quc3RhY2s9W10sbz10LmVudGVyKCJyZWZlcmVuY2UiKTtsZXQgYz10LnNhZmUodC5hc3NvY2lhdGlvbklkKHMpLHtiZWZvcmU6cCxhZnRlcjoiXSIsLi4ubC5jdXJyZW50KCl9KTtyZXR1cm4gbygpLHQuc3RhY2s9dSxuKCkscj09PSJmdWxsInx8IWR8fGQhPT1jP3ArPWwubW92ZShjKyJdIik6cj09PSJzaG9ydGN1dCI/cD1wLnNsaWNlKDAsLTEpOnArPWwubW92ZSgiXSIpLHB9ZnVuY3Rpb24gZVJhKCl7cmV0dXJuIiEifXZhciBJZ3Q9ZygoKT0+e3lmZS5wZWVrPWVSYTtpKHlmZSwiaW1hZ2VSZWZlcmVuY2UiKTtpKGVSYSwiaW1hZ2VSZWZlcmVuY2VQZWVrIil9KTtmdW5jdGlvbiB3ZmUocyxlLHQpe2xldCBhPXMudmFsdWV8fCIiLHI9ImAiLG49LTE7Zm9yKDtuZXcgUmVnRXhwKCIoXnxbXmBdKSIrcisiKFteYF18JCkiKS50ZXN0KGEpOylyKz0iYCI7Zm9yKC9bXiBcclxuXS8udGVzdChhKSYmKC9eWyBcclxuXS8udGVzdChhKSYmL1sgXHJcbl0kLy50ZXN0KGEpfHwvXmB8YCQvLnRlc3QoYSkpJiYoYT0iICIrYSsiICIpOysrbjx0LnVuc2FmZS5sZW5ndGg7KXtsZXQgbz10LnVuc2FmZVtuXSxsPXQuY29tcGlsZVBhdHRlcm4obykscDtpZihvLmF0QnJlYWspZm9yKDtwPWwuZXhlYyhhKTspe2xldCBkPXAuaW5kZXg7YS5jaGFyQ29kZUF0KGQpPT09MTAmJmEuY2hhckNvZGVBdChkLTEpPT09MTMmJmQtLSxhPWEuc2xpY2UoMCxkKSsiICIrYS5zbGljZShwLmluZGV4KzEpfX1yZXR1cm4gcithK3J9ZnVuY3Rpb24gdFJhKCl7cmV0dXJuImAifXZhciBBZ3Q9ZygoKT0+e3dmZS5wZWVrPXRSYTtpKHdmZSwiaW5saW5lQ29kZSIpO2kodFJhLCJpbmxpbmVDb2RlUGVlayIpfSk7ZnVuY3Rpb24ga2ZlKHMsZSl7bGV0IHQ9ejMocyk7cmV0dXJuISEoIWUub3B0aW9ucy5yZXNvdXJjZUxpbmsmJnMudXJsJiYhcy50aXRsZSYmcy5jaGlsZHJlbiYmcy5jaGlsZHJlbi5sZW5ndGg9PT0xJiZzLmNoaWxkcmVuWzBdLnR5cGU9PT0idGV4dCImJih0PT09cy51cmx8fCJtYWlsdG86Iit0PT09cy51cmwpJiYvXlthLXpdW2EteisuLV0rOi9pLnRlc3Qocy51cmwpJiYhL1tcMC0gPD5cdTAwN0ZdLy50ZXN0KHMudXJsKSl9dmFyIE5ndD1nKCgpPT57Y2llKCk7aShrZmUsImZvcm1hdExpbmtBc0F1dG9saW5rIil9KTtmdW5jdGlvbiBTZmUocyxlLHQsYSl7bGV0IHI9WTkodCksbj1yPT09JyInPyJRdW90ZSI6IkFwb3N0cm9waGUiLG89dC5jcmVhdGVUcmFja2VyKGEpLGwscDtpZihrZmUocyx0KSl7bGV0IHU9dC5zdGFjazt0LnN0YWNrPVtdLGw9dC5lbnRlcigiYXV0b2xpbmsiKTtsZXQgYz1vLm1vdmUoIjwiKTtyZXR1cm4gYys9by5tb3ZlKHQuY29udGFpbmVyUGhyYXNpbmcocyx7YmVmb3JlOmMsYWZ0ZXI6Ij4iLC4uLm8uY3VycmVudCgpfSkpLGMrPW8ubW92ZSgiPiIpLGwoKSx0LnN0YWNrPXUsY31sPXQuZW50ZXIoImxpbmsiKSxwPXQuZW50ZXIoImxhYmVsIik7bGV0IGQ9by5tb3ZlKCJbIik7cmV0dXJuIGQrPW8ubW92ZSh0LmNvbnRhaW5lclBocmFzaW5nKHMse2JlZm9yZTpkLGFmdGVyOiJdKCIsLi4uby5jdXJyZW50KCl9KSksZCs9by5tb3ZlKCJdKCIpLHAoKSwhcy51cmwmJnMudGl0bGV8fC9bXDAtIFx1MDA3Rl0vLnRlc3Qocy51cmwpPyhwPXQuZW50ZXIoImRlc3RpbmF0aW9uTGl0ZXJhbCIpLGQrPW8ubW92ZSgiPCIpLGQrPW8ubW92ZSh0LnNhZmUocy51cmwse2JlZm9yZTpkLGFmdGVyOiI+IiwuLi5vLmN1cnJlbnQoKX0pKSxkKz1vLm1vdmUoIj4iKSk6KHA9dC5lbnRlcigiZGVzdGluYXRpb25SYXciKSxkKz1vLm1vdmUodC5zYWZlKHMudXJsLHtiZWZvcmU6ZCxhZnRlcjpzLnRpdGxlPyIgIjoiKSIsLi4uby5jdXJyZW50KCl9KSkpLHAoKSxzLnRpdGxlJiYocD10LmVudGVyKGB0aXRsZSR7bn1gKSxkKz1vLm1vdmUoIiAiK3IpLGQrPW8ubW92ZSh0LnNhZmUocy50aXRsZSx7YmVmb3JlOmQsYWZ0ZXI6ciwuLi5vLmN1cnJlbnQoKX0pKSxkKz1vLm1vdmUocikscCgpKSxkKz1vLm1vdmUoIikiKSxsKCksZH1mdW5jdGlvbiBhUmEocyxlLHQpe3JldHVybiBrZmUocyx0KT8iPCI6IlsifXZhciBSZ3Q9ZygoKT0+e25pZSgpO05ndCgpO1NmZS5wZWVrPWFSYTtpKFNmZSwibGluayIpO2koYVJhLCJsaW5rUGVlayIpfSk7ZnVuY3Rpb24gX2ZlKHMsZSx0LGEpe2xldCByPXMucmVmZXJlbmNlVHlwZSxuPXQuZW50ZXIoImxpbmtSZWZlcmVuY2UiKSxvPXQuZW50ZXIoImxhYmVsIiksbD10LmNyZWF0ZVRyYWNrZXIoYSkscD1sLm1vdmUoIlsiKSxkPXQuY29udGFpbmVyUGhyYXNpbmcocyx7YmVmb3JlOnAsYWZ0ZXI6Il0iLC4uLmwuY3VycmVudCgpfSk7cCs9bC5tb3ZlKGQrIl1bIiksbygpO2xldCB1PXQuc3RhY2s7dC5zdGFjaz1bXSxvPXQuZW50ZXIoInJlZmVyZW5jZSIpO2xldCBjPXQuc2FmZSh0LmFzc29jaWF0aW9uSWQocykse2JlZm9yZTpwLGFmdGVyOiJdIiwuLi5sLmN1cnJlbnQoKX0pO3JldHVybiBvKCksdC5zdGFjaz11LG4oKSxyPT09ImZ1bGwifHwhZHx8ZCE9PWM/cCs9bC5tb3ZlKGMrIl0iKTpyPT09InNob3J0Y3V0Ij9wPXAuc2xpY2UoMCwtMSk6cCs9bC5tb3ZlKCJdIikscH1mdW5jdGlvbiBzUmEoKXtyZXR1cm4iWyJ9dmFyIE9ndD1nKCgpPT57X2ZlLnBlZWs9c1JhO2koX2ZlLCJsaW5rUmVmZXJlbmNlIik7aShzUmEsImxpbmtSZWZlcmVuY2VQZWVrIil9KTtmdW5jdGlvbiBROShzKXtsZXQgZT1zLm9wdGlvbnMuYnVsbGV0fHwiKiI7aWYoZSE9PSIqIiYmZSE9PSIrIiYmZSE9PSItIil0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBzZXJpYWxpemUgaXRlbXMgd2l0aCBgIitlKyJgIGZvciBgb3B0aW9ucy5idWxsZXRgLCBleHBlY3RlZCBgKmAsIGArYCwgb3IgYC1gIik7cmV0dXJuIGV9dmFyIHVpZT1nKCgpPT57aShROSwiY2hlY2tCdWxsZXQiKX0pO2Z1bmN0aW9uIEZndChzKXtsZXQgZT1ROShzKSx0PXMub3B0aW9ucy5idWxsZXRPdGhlcjtpZighdClyZXR1cm4gZT09PSIqIj8iLSI6IioiO2lmKHQhPT0iKiImJnQhPT0iKyImJnQhPT0iLSIpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgc2VyaWFsaXplIGl0ZW1zIHdpdGggYCIrdCsiYCBmb3IgYG9wdGlvbnMuYnVsbGV0T3RoZXJgLCBleHBlY3RlZCBgKmAsIGArYCwgb3IgYC1gIik7aWYodD09PWUpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBgYnVsbGV0YCAoYCIrZSsiYCkgYW5kIGBidWxsZXRPdGhlcmAgKGAiK3QrImApIHRvIGJlIGRpZmZlcmVudCIpO3JldHVybiB0fXZhciBCZ3Q9ZygoKT0+e3VpZSgpO2koRmd0LCJjaGVja0J1bGxldE90aGVyIil9KTtmdW5jdGlvbiBIZ3Qocyl7bGV0IGU9cy5vcHRpb25zLmJ1bGxldE9yZGVyZWR8fCIuIjtpZihlIT09Ii4iJiZlIT09IikiKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHNlcmlhbGl6ZSBpdGVtcyB3aXRoIGAiK2UrImAgZm9yIGBvcHRpb25zLmJ1bGxldE9yZGVyZWRgLCBleHBlY3RlZCBgLmAgb3IgYClgIik7cmV0dXJuIGV9dmFyIHFndD1nKCgpPT57aShIZ3QsImNoZWNrQnVsbGV0T3JkZXJlZCIpfSk7ZnVuY3Rpb24gcGllKHMpe2xldCBlPXMub3B0aW9ucy5ydWxlfHwiKiI7aWYoZSE9PSIqIiYmZSE9PSItIiYmZSE9PSJfIil0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBzZXJpYWxpemUgcnVsZXMgd2l0aCBgIitlKyJgIGZvciBgb3B0aW9ucy5ydWxlYCwgZXhwZWN0ZWQgYCpgLCBgLWAsIG9yIGBfYCIpO3JldHVybiBlfXZhciBNZmU9ZygoKT0+e2kocGllLCJjaGVja1J1bGUiKX0pO2Z1bmN0aW9uIGpndChzLGUsdCxhKXtsZXQgcj10LmVudGVyKCJsaXN0Iiksbj10LmJ1bGxldEN1cnJlbnQsbz1zLm9yZGVyZWQ/SGd0KHQpOlE5KHQpLGw9cy5vcmRlcmVkP289PT0iLiI/IikiOiIuIjpGZ3QodCkscD1lJiZ0LmJ1bGxldExhc3RVc2VkP289PT10LmJ1bGxldExhc3RVc2VkOiExO2lmKCFzLm9yZGVyZWQpe2xldCB1PXMuY2hpbGRyZW4/cy5jaGlsZHJlblswXTp2b2lkIDA7aWYoKG89PT0iKiJ8fG89PT0iLSIpJiZ1JiYoIXUuY2hpbGRyZW58fCF1LmNoaWxkcmVuWzBdKSYmdC5zdGFja1t0LnN0YWNrLmxlbmd0aC0xXT09PSJsaXN0IiYmdC5zdGFja1t0LnN0YWNrLmxlbmd0aC0yXT09PSJsaXN0SXRlbSImJnQuc3RhY2tbdC5zdGFjay5sZW5ndGgtM109PT0ibGlzdCImJnQuc3RhY2tbdC5zdGFjay5sZW5ndGgtNF09PT0ibGlzdEl0ZW0iJiZ0LmluZGV4U3RhY2tbdC5pbmRleFN0YWNrLmxlbmd0aC0xXT09PTAmJnQuaW5kZXhTdGFja1t0LmluZGV4U3RhY2subGVuZ3RoLTJdPT09MCYmdC5pbmRleFN0YWNrW3QuaW5kZXhTdGFjay5sZW5ndGgtM109PT0wJiYocD0hMCkscGllKHQpPT09byYmdSl7bGV0IGM9LTE7Zm9yKDsrK2M8cy5jaGlsZHJlbi5sZW5ndGg7KXtsZXQgYj1zLmNoaWxkcmVuW2NdO2lmKGImJmIudHlwZT09PSJsaXN0SXRlbSImJmIuY2hpbGRyZW4mJmIuY2hpbGRyZW5bMF0mJmIuY2hpbGRyZW5bMF0udHlwZT09PSJ0aGVtYXRpY0JyZWFrIil7cD0hMDticmVha319fX1wJiYobz1sKSx0LmJ1bGxldEN1cnJlbnQ9bztsZXQgZD10LmNvbnRhaW5lckZsb3cocyxhKTtyZXR1cm4gdC5idWxsZXRMYXN0VXNlZD1vLHQuYnVsbGV0Q3VycmVudD1uLHIoKSxkfXZhciBWZ3Q9ZygoKT0+e3VpZSgpO0JndCgpO3FndCgpO01mZSgpO2koamd0LCJsaXN0Iil9KTtmdW5jdGlvbiBVZ3Qocyl7bGV0IGU9cy5vcHRpb25zLmxpc3RJdGVtSW5kZW50fHwib25lIjtpZihlIT09InRhYiImJmUhPT0ib25lIiYmZSE9PSJtaXhlZCIpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgc2VyaWFsaXplIGl0ZW1zIHdpdGggYCIrZSsiYCBmb3IgYG9wdGlvbnMubGlzdEl0ZW1JbmRlbnRgLCBleHBlY3RlZCBgdGFiYCwgYG9uZWAsIG9yIGBtaXhlZGAiKTtyZXR1cm4gZX12YXIgV2d0PWcoKCk9PntpKFVndCwiY2hlY2tMaXN0SXRlbUluZGVudCIpfSk7ZnVuY3Rpb24gR2d0KHMsZSx0LGEpe2xldCByPVVndCh0KSxuPXQuYnVsbGV0Q3VycmVudHx8UTkodCk7ZSYmZS50eXBlPT09Imxpc3QiJiZlLm9yZGVyZWQmJihuPSh0eXBlb2YgZS5zdGFydD09Im51bWJlciImJmUuc3RhcnQ+LTE/ZS5zdGFydDoxKSsodC5vcHRpb25zLmluY3JlbWVudExpc3RNYXJrZXI9PT0hMT8wOmUuY2hpbGRyZW4uaW5kZXhPZihzKSkrbik7bGV0IG89bi5sZW5ndGgrMTsocj09PSJ0YWIifHxyPT09Im1peGVkIiYmKGUmJmUudHlwZT09PSJsaXN0IiYmZS5zcHJlYWR8fHMuc3ByZWFkKSkmJihvPU1hdGguY2VpbChvLzQpKjQpO2xldCBsPXQuY3JlYXRlVHJhY2tlcihhKTtsLm1vdmUobisiICIucmVwZWF0KG8tbi5sZW5ndGgpKSxsLnNoaWZ0KG8pO2xldCBwPXQuZW50ZXIoImxpc3RJdGVtIiksZD10LmluZGVudExpbmVzKHQuY29udGFpbmVyRmxvdyhzLGwuY3VycmVudCgpKSx1KTtyZXR1cm4gcCgpLGQ7ZnVuY3Rpb24gdShjLGIsdil7cmV0dXJuIGI/KHY/IiI6IiAiLnJlcGVhdChvKSkrYzoodj9uOm4rIiAiLnJlcGVhdChvLW4ubGVuZ3RoKSkrY31pKHUsIm1hcCIpfXZhciBLZ3Q9ZygoKT0+e3VpZSgpO1dndCgpO2koR2d0LCJsaXN0SXRlbSIpfSk7ZnVuY3Rpb24gWWd0KHMsZSx0LGEpe2xldCByPXQuZW50ZXIoInBhcmFncmFwaCIpLG49dC5lbnRlcigicGhyYXNpbmciKSxvPXQuY29udGFpbmVyUGhyYXNpbmcocyxhKTtyZXR1cm4gbigpLHIoKSxvfXZhciBaZ3Q9ZygoKT0+e2koWWd0LCJwYXJhZ3JhcGgiKX0pO3ZhciB6ZmUsWGd0PWcoKCk9Pnt0aWUoKTt6ZmU9RDAoWyJicmVhayIsImRlbGV0ZSIsImVtcGhhc2lzIiwiZm9vdG5vdGUiLCJmb290bm90ZVJlZmVyZW5jZSIsImltYWdlIiwiaW1hZ2VSZWZlcmVuY2UiLCJpbmxpbmVDb2RlIiwiaW5saW5lTWF0aCIsImxpbmsiLCJsaW5rUmVmZXJlbmNlIiwibWR4SnN4VGV4dEVsZW1lbnQiLCJtZHhUZXh0RXhwcmVzc2lvbiIsInN0cm9uZyIsInRleHQiLCJ0ZXh0RGlyZWN0aXZlIl0pfSk7dmFyIFFndD1nKCgpPT57WGd0KCl9KTtmdW5jdGlvbiBKZ3QocyxlLHQsYSl7cmV0dXJuKHMuY2hpbGRyZW4uc29tZShmdW5jdGlvbihvKXtyZXR1cm4gemZlKG8pfSk/dC5jb250YWluZXJQaHJhc2luZzp0LmNvbnRhaW5lckZsb3cpLmNhbGwodCxzLGEpfXZhciBlN3Q9ZygoKT0+e1FndCgpO2koSmd0LCJyb290Iil9KTtmdW5jdGlvbiB0N3Qocyl7bGV0IGU9cy5vcHRpb25zLnN0cm9uZ3x8IioiO2lmKGUhPT0iKiImJmUhPT0iXyIpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgc2VyaWFsaXplIHN0cm9uZyB3aXRoIGAiK2UrImAgZm9yIGBvcHRpb25zLnN0cm9uZ2AsIGV4cGVjdGVkIGAqYCwgb3IgYF9gIik7cmV0dXJuIGV9dmFyIGE3dD1nKCgpPT57aSh0N3QsImNoZWNrU3Ryb25nIil9KTtmdW5jdGlvbiBDZmUocyxlLHQsYSl7bGV0IHI9dDd0KHQpLG49dC5lbnRlcigic3Ryb25nIiksbz10LmNyZWF0ZVRyYWNrZXIoYSksbD1vLm1vdmUocityKSxwPW8ubW92ZSh0LmNvbnRhaW5lclBocmFzaW5nKHMse2FmdGVyOnIsYmVmb3JlOmwsLi4uby5jdXJyZW50KCl9KSksZD1wLmNoYXJDb2RlQXQoMCksdT1YOShhLmJlZm9yZS5jaGFyQ29kZUF0KGEuYmVmb3JlLmxlbmd0aC0xKSxkLHIpO3UuaW5zaWRlJiYocD1qbChkKStwLnNsaWNlKDEpKTtsZXQgYz1wLmNoYXJDb2RlQXQocC5sZW5ndGgtMSksYj1YOShhLmFmdGVyLmNoYXJDb2RlQXQoMCksYyxyKTtiLmluc2lkZSYmKHA9cC5zbGljZSgwLC0xKStqbChjKSk7bGV0IHY9by5tb3ZlKHIrcik7cmV0dXJuIG4oKSx0LmF0dGVudGlvbkVuY29kZVN1cnJvdW5kaW5nSW5mbz17YWZ0ZXI6Yi5vdXRzaWRlLGJlZm9yZTp1Lm91dHNpZGV9LGwrcCt2fWZ1bmN0aW9uIGlSYShzLGUsdCl7cmV0dXJuIHQub3B0aW9ucy5zdHJvbmd8fCIqIn12YXIgczd0PWcoKCk9PnthN3QoKTtaOSgpO2ZmZSgpO0NmZS5wZWVrPWlSYTtpKENmZSwic3Ryb25nIik7aShpUmEsInN0cm9uZ1BlZWsiKX0pO2Z1bmN0aW9uIGk3dChzLGUsdCxhKXtyZXR1cm4gdC5zYWZlKHMudmFsdWUsYSl9dmFyIHI3dD1nKCgpPT57aShpN3QsInRleHQiKX0pO2Z1bmN0aW9uIG83dChzKXtsZXQgZT1zLm9wdGlvbnMucnVsZVJlcGV0aXRpb258fDM7aWYoZTwzKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHNlcmlhbGl6ZSBydWxlcyB3aXRoIHJlcGV0aXRpb24gYCIrZSsiYCBmb3IgYG9wdGlvbnMucnVsZVJlcGV0aXRpb25gLCBleHBlY3RlZCBgM2Agb3IgbW9yZSIpO3JldHVybiBlfXZhciBuN3Q9ZygoKT0+e2kobzd0LCJjaGVja1J1bGVSZXBldGl0aW9uIil9KTtmdW5jdGlvbiBsN3QocyxlLHQpe2xldCBhPShwaWUodCkrKHQub3B0aW9ucy5ydWxlU3BhY2VzPyIgIjoiIikpLnJlcGVhdChvN3QodCkpO3JldHVybiB0Lm9wdGlvbnMucnVsZVNwYWNlcz9hLnNsaWNlKDAsLTEpOmF9dmFyIGM3dD1nKCgpPT57bjd0KCk7TWZlKCk7aShsN3QsInRoZW1hdGljQnJlYWsiKX0pO3ZhciBDMyxUZmU9ZygoKT0+e3BndCgpO2ZndCgpO3lndCgpO2tndCgpO01ndCgpO0xndCgpO0VndCgpO1BndCgpO0lndCgpO0FndCgpO1JndCgpO09ndCgpO1ZndCgpO0tndCgpO1pndCgpO2U3dCgpO3M3dCgpO3I3dCgpO2M3dCgpO0MzPXtibG9ja3F1b3RlOnVndCxicmVhazpwZmUsY29kZTp4Z3QsZGVmaW5pdGlvbjp3Z3QsZW1waGFzaXM6bWZlLGhhcmRCcmVhazpwZmUsaGVhZGluZzpEZ3QsaHRtbDp2ZmUsaW1hZ2U6eGZlLGltYWdlUmVmZXJlbmNlOnlmZSxpbmxpbmVDb2RlOndmZSxsaW5rOlNmZSxsaW5rUmVmZXJlbmNlOl9mZSxsaXN0OmpndCxsaXN0SXRlbTpHZ3QscGFyYWdyYXBoOllndCxyb290OkpndCxzdHJvbmc6Q2ZlLHRleHQ6aTd0LHRoZW1hdGljQnJlYWs6bDd0fX0pO2Z1bmN0aW9uIHJSYShzLGUsdCxhKXtpZihlLnR5cGU9PT0iY29kZSImJmxrKGUsYSkmJihzLnR5cGU9PT0ibGlzdCJ8fHMudHlwZT09PWUudHlwZSYmbGsocyxhKSkpcmV0dXJuITE7aWYoInNwcmVhZCJpbiB0JiZ0eXBlb2YgdC5zcHJlYWQ9PSJib29sZWFuIilyZXR1cm4gcy50eXBlPT09InBhcmFncmFwaCImJihzLnR5cGU9PT1lLnR5cGV8fGUudHlwZT09PSJkZWZpbml0aW9uInx8ZS50eXBlPT09ImhlYWRpbmciJiZkaWUoZSxhKSk/dm9pZCAwOnQuc3ByZWFkPzE6MH12YXIgZDd0LHU3dD1nKCgpPT57aGZlKCk7YmZlKCk7ZDd0PVtyUmFdO2koclJhLCJqb2luRGVmYXVsdHMiKX0pO3ZhciBUMyxwN3QsaDd0PWcoKCk9PntUMz1bImF1dG9saW5rIiwiZGVzdGluYXRpb25MaXRlcmFsIiwiZGVzdGluYXRpb25SYXciLCJyZWZlcmVuY2UiLCJ0aXRsZVF1b3RlIiwidGl0bGVBcG9zdHJvcGhlIl0scDd0PVt7Y2hhcmFjdGVyOiIJIixhZnRlcjoiW1xcclxcbl0iLGluQ29uc3RydWN0OiJwaHJhc2luZyJ9LHtjaGFyYWN0ZXI6IgkiLGJlZm9yZToiW1xcclxcbl0iLGluQ29uc3RydWN0OiJwaHJhc2luZyJ9LHtjaGFyYWN0ZXI6IgkiLGluQ29uc3RydWN0OlsiY29kZUZlbmNlZExhbmdHcmF2ZUFjY2VudCIsImNvZGVGZW5jZWRMYW5nVGlsZGUiXX0se2NoYXJhY3RlcjoiXHIiLGluQ29uc3RydWN0OlsiY29kZUZlbmNlZExhbmdHcmF2ZUFjY2VudCIsImNvZGVGZW5jZWRMYW5nVGlsZGUiLCJjb2RlRmVuY2VkTWV0YUdyYXZlQWNjZW50IiwiY29kZUZlbmNlZE1ldGFUaWxkZSIsImRlc3RpbmF0aW9uTGl0ZXJhbCIsImhlYWRpbmdBdHgiXX0se2NoYXJhY3RlcjpgCmAsaW5Db25zdHJ1Y3Q6WyJjb2RlRmVuY2VkTGFuZ0dyYXZlQWNjZW50IiwiY29kZUZlbmNlZExhbmdUaWxkZSIsImNvZGVGZW5jZWRNZXRhR3JhdmVBY2NlbnQiLCJjb2RlRmVuY2VkTWV0YVRpbGRlIiwiZGVzdGluYXRpb25MaXRlcmFsIiwiaGVhZGluZ0F0eCJdfSx7Y2hhcmFjdGVyOiIgIixhZnRlcjoiW1xcclxcbl0iLGluQ29uc3RydWN0OiJwaHJhc2luZyJ9LHtjaGFyYWN0ZXI6IiAiLGJlZm9yZToiW1xcclxcbl0iLGluQ29uc3RydWN0OiJwaHJhc2luZyJ9LHtjaGFyYWN0ZXI6IiAiLGluQ29uc3RydWN0OlsiY29kZUZlbmNlZExhbmdHcmF2ZUFjY2VudCIsImNvZGVGZW5jZWRMYW5nVGlsZGUiXX0se2NoYXJhY3RlcjoiISIsYWZ0ZXI6IlxcWyIsaW5Db25zdHJ1Y3Q6InBocmFzaW5nIixub3RJbkNvbnN0cnVjdDpUM30se2NoYXJhY3RlcjonIicsaW5Db25zdHJ1Y3Q6InRpdGxlUXVvdGUifSx7YXRCcmVhazohMCxjaGFyYWN0ZXI6IiMifSx7Y2hhcmFjdGVyOiIjIixpbkNvbnN0cnVjdDoiaGVhZGluZ0F0eCIsYWZ0ZXI6YCg/OltccgpdfCQpYH0se2NoYXJhY3RlcjoiJiIsYWZ0ZXI6IlsjQS1aYS16XSIsaW5Db25zdHJ1Y3Q6InBocmFzaW5nIn0se2NoYXJhY3RlcjoiJyIsaW5Db25zdHJ1Y3Q6InRpdGxlQXBvc3Ryb3BoZSJ9LHtjaGFyYWN0ZXI6IigiLGluQ29uc3RydWN0OiJkZXN0aW5hdGlvblJhdyJ9LHtiZWZvcmU6IlxcXSIsY2hhcmFjdGVyOiIoIixpbkNvbnN0cnVjdDoicGhyYXNpbmciLG5vdEluQ29uc3RydWN0OlQzfSx7YXRCcmVhazohMCxiZWZvcmU6IlxcZCsiLGNoYXJhY3RlcjoiKSJ9LHtjaGFyYWN0ZXI6IikiLGluQ29uc3RydWN0OiJkZXN0aW5hdGlvblJhdyJ9LHthdEJyZWFrOiEwLGNoYXJhY3RlcjoiKiIsYWZ0ZXI6YCg/OlsgCVxyCipdKWB9LHtjaGFyYWN0ZXI6IioiLGluQ29uc3RydWN0OiJwaHJhc2luZyIsbm90SW5Db25zdHJ1Y3Q6VDN9LHthdEJyZWFrOiEwLGNoYXJhY3RlcjoiKyIsYWZ0ZXI6YCg/OlsgCVxyCl0pYH0se2F0QnJlYWs6ITAsY2hhcmFjdGVyOiItIixhZnRlcjpgKD86WyAJXHIKLV0pYH0se2F0QnJlYWs6ITAsYmVmb3JlOiJcXGQrIixjaGFyYWN0ZXI6Ii4iLGFmdGVyOmAoPzpbIAlccgpdfCQpYH0se2F0QnJlYWs6ITAsY2hhcmFjdGVyOiI8IixhZnRlcjoiWyEvP0EtWmEtel0ifSx7Y2hhcmFjdGVyOiI8IixhZnRlcjoiWyEvP0EtWmEtel0iLGluQ29uc3RydWN0OiJwaHJhc2luZyIsbm90SW5Db25zdHJ1Y3Q6VDN9LHtjaGFyYWN0ZXI6IjwiLGluQ29uc3RydWN0OiJkZXN0aW5hdGlvbkxpdGVyYWwifSx7YXRCcmVhazohMCxjaGFyYWN0ZXI6Ij0ifSx7YXRCcmVhazohMCxjaGFyYWN0ZXI6Ij4ifSx7Y2hhcmFjdGVyOiI+IixpbkNvbnN0cnVjdDoiZGVzdGluYXRpb25MaXRlcmFsIn0se2F0QnJlYWs6ITAsY2hhcmFjdGVyOiJbIn0se2NoYXJhY3RlcjoiWyIsaW5Db25zdHJ1Y3Q6InBocmFzaW5nIixub3RJbkNvbnN0cnVjdDpUM30se2NoYXJhY3RlcjoiWyIsaW5Db25zdHJ1Y3Q6WyJsYWJlbCIsInJlZmVyZW5jZSJdfSx7Y2hhcmFjdGVyOiJcXCIsYWZ0ZXI6IltcXHJcXG5dIixpbkNvbnN0cnVjdDoicGhyYXNpbmcifSx7Y2hhcmFjdGVyOiJdIixpbkNvbnN0cnVjdDpbImxhYmVsIiwicmVmZXJlbmNlIl19LHthdEJyZWFrOiEwLGNoYXJhY3RlcjoiXyJ9LHtjaGFyYWN0ZXI6Il8iLGluQ29uc3RydWN0OiJwaHJhc2luZyIsbm90SW5Db25zdHJ1Y3Q6VDN9LHthdEJyZWFrOiEwLGNoYXJhY3RlcjoiYCJ9LHtjaGFyYWN0ZXI6ImAiLGluQ29uc3RydWN0OlsiY29kZUZlbmNlZExhbmdHcmF2ZUFjY2VudCIsImNvZGVGZW5jZWRNZXRhR3JhdmVBY2NlbnQiXX0se2NoYXJhY3RlcjoiYCIsaW5Db25zdHJ1Y3Q6InBocmFzaW5nIixub3RJbkNvbnN0cnVjdDpUM30se2F0QnJlYWs6ITAsY2hhcmFjdGVyOiJ+In1dfSk7ZnVuY3Rpb24gWnAocyl7bGV0IGU9IiYiK3MrIjsiO2Y3dC5pbm5lckhUTUw9ZTtsZXQgdD1mN3QudGV4dENvbnRlbnQ7cmV0dXJuIHQuY2hhckNvZGVBdCh0Lmxlbmd0aC0xKT09PTU5JiZzIT09InNlbWkifHx0PT09ZT8hMTp0fXZhciBmN3QsZGs9ZygoKT0+e2Y3dD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpIik7aShacCwiZGVjb2RlTmFtZWRDaGFyYWN0ZXJSZWZlcmVuY2UiKX0pO2Z1bmN0aW9uIEo5KHMsZSl7bGV0IHQ9TnVtYmVyLnBhcnNlSW50KHMsZSk7cmV0dXJuIHQ8OXx8dD09PTExfHx0PjEzJiZ0PDMyfHx0PjEyNiYmdDwxNjB8fHQ+NTUyOTUmJnQ8NTczNDR8fHQ+NjQ5NzUmJnQ8NjUwMDh8fCh0JjY1NTM1KT09PTY1NTM1fHwodCY2NTUzNSk9PT02NTUzNHx8dD4xMTE0MTExPyJcdUZGRkQiOlN0cmluZy5mcm9tQ29kZVBvaW50KHQpfXZhciBoaWU9ZygoKT0+e2koSjksImRlY29kZU51bWVyaWNDaGFyYWN0ZXJSZWZlcmVuY2UiKX0pO2Z1bmN0aW9uIGZpZShzKXtyZXR1cm4gcy5yZXBsYWNlKG9SYSxuUmEpfWZ1bmN0aW9uIG5SYShzLGUsdCl7aWYoZSlyZXR1cm4gZTtpZih0LmNoYXJDb2RlQXQoMCk9PT0zNSl7bGV0IHI9dC5jaGFyQ29kZUF0KDEpLG49cj09PTEyMHx8cj09PTg4O3JldHVybiBKOSh0LnNsaWNlKG4/MjoxKSxuPzE2OjEwKX1yZXR1cm4gWnAodCl8fHN9dmFyIG9SYSwkZmU9ZygoKT0+e2RrKCk7aGllKCk7b1JhPS9cXChbIS0vOi1AWy1gey1+XSl8JigjKD86XGR7MSw3fXx4W1xkYS1mXXsxLDZ9KXxbXGRhLXpdezEsMzF9KTsvZ2k7aShmaWUsImRlY29kZVN0cmluZyIpO2koblJhLCJkZWNvZGUiKX0pO2Z1bmN0aW9uIG03dChzKXtyZXR1cm4gcy5sYWJlbHx8IXMuaWRlbnRpZmllcj9zLmxhYmVsfHwiIjpmaWUocy5pZGVudGlmaWVyKX12YXIgZzd0PWcoKCk9PnskZmUoKTtpKG03dCwiYXNzb2NpYXRpb24iKX0pO2Z1bmN0aW9uIGI3dChzKXtpZighcy5fY29tcGlsZWQpe2xldCBlPShzLmF0QnJlYWs/IltcXHJcXG5dW1xcdCBdKiI6IiIpKyhzLmJlZm9yZT8iKD86IitzLmJlZm9yZSsiKSI6IiIpO3MuX2NvbXBpbGVkPW5ldyBSZWdFeHAoKGU/IigiK2UrIikiOiIiKSsoL1t8XFx7fSgpW1xdXiQrKj8uLV0vLnRlc3Qocy5jaGFyYWN0ZXIpPyJcXCI6IiIpK3MuY2hhcmFjdGVyKyhzLmFmdGVyPyIoPzoiK3MuYWZ0ZXIrIikiOiIiKSwiZyIpfXJldHVybiBzLl9jb21waWxlZH12YXIgdjd0PWcoKCk9PntpKGI3dCwiY29tcGlsZVBhdHRlcm4iKX0pO2Z1bmN0aW9uIHg3dChzLGUsdCl7bGV0IGE9ZS5pbmRleFN0YWNrLHI9cy5jaGlsZHJlbnx8W10sbj1bXSxvPS0xLGw9dC5iZWZvcmUscDthLnB1c2goLTEpO2xldCBkPWUuY3JlYXRlVHJhY2tlcih0KTtmb3IoOysrbzxyLmxlbmd0aDspe2xldCB1PXJbb10sYztpZihhW2EubGVuZ3RoLTFdPW8sbysxPHIubGVuZ3RoKXtsZXQgeD1lLmhhbmRsZS5oYW5kbGVyc1tyW28rMV0udHlwZV07eCYmeC5wZWVrJiYoeD14LnBlZWspLGM9eD94KHJbbysxXSxzLGUse2JlZm9yZToiIixhZnRlcjoiIiwuLi5kLmN1cnJlbnQoKX0pLmNoYXJBdCgwKToiIn1lbHNlIGM9dC5hZnRlcjtuLmxlbmd0aD4wJiYobD09PSJcciJ8fGw9PT1gCmApJiZ1LnR5cGU9PT0iaHRtbCImJihuW24ubGVuZ3RoLTFdPW5bbi5sZW5ndGgtMV0ucmVwbGFjZSgvKFxyP1xufFxyKSQvLCIgIiksbD0iICIsZD1lLmNyZWF0ZVRyYWNrZXIodCksZC5tb3ZlKG4uam9pbigiIikpKTtsZXQgYj1lLmhhbmRsZSh1LHMsZSx7Li4uZC5jdXJyZW50KCksYWZ0ZXI6YyxiZWZvcmU6bH0pO3AmJnA9PT1iLnNsaWNlKDAsMSkmJihiPWpsKHAuY2hhckNvZGVBdCgwKSkrYi5zbGljZSgxKSk7bGV0IHY9ZS5hdHRlbnRpb25FbmNvZGVTdXJyb3VuZGluZ0luZm87ZS5hdHRlbnRpb25FbmNvZGVTdXJyb3VuZGluZ0luZm89dm9pZCAwLHA9dm9pZCAwLHYmJihuLmxlbmd0aD4wJiZ2LmJlZm9yZSYmbD09PW5bbi5sZW5ndGgtMV0uc2xpY2UoLTEpJiYobltuLmxlbmd0aC0xXT1uW24ubGVuZ3RoLTFdLnNsaWNlKDAsLTEpK2psKGwuY2hhckNvZGVBdCgwKSkpLHYuYWZ0ZXImJihwPWMpKSxkLm1vdmUoYiksbi5wdXNoKGIpLGw9Yi5zbGljZSgtMSl9cmV0dXJuIGEucG9wKCksbi5qb2luKCIiKX12YXIgeTd0PWcoKCk9PntaOSgpO2koeDd0LCJjb250YWluZXJQaHJhc2luZyIpfSk7ZnVuY3Rpb24gdzd0KHMsZSx0KXtsZXQgYT1lLmluZGV4U3RhY2sscj1zLmNoaWxkcmVufHxbXSxuPWUuY3JlYXRlVHJhY2tlcih0KSxvPVtdLGw9LTE7Zm9yKGEucHVzaCgtMSk7KytsPHIubGVuZ3RoOyl7bGV0IHA9cltsXTthW2EubGVuZ3RoLTFdPWwsby5wdXNoKG4ubW92ZShlLmhhbmRsZShwLHMsZSx7YmVmb3JlOmAKYCxhZnRlcjpgCmAsLi4ubi5jdXJyZW50KCl9KSkpLHAudHlwZSE9PSJsaXN0IiYmKGUuYnVsbGV0TGFzdFVzZWQ9dm9pZCAwKSxsPHIubGVuZ3RoLTEmJm8ucHVzaChuLm1vdmUobFJhKHAscltsKzFdLHMsZSkpKX1yZXR1cm4gYS5wb3AoKSxvLmpvaW4oIiIpfWZ1bmN0aW9uIGxSYShzLGUsdCxhKXtsZXQgcj1hLmpvaW4ubGVuZ3RoO2Zvcig7ci0tOyl7bGV0IG49YS5qb2luW3JdKHMsZSx0LGEpO2lmKG49PT0hMHx8bj09PTEpYnJlYWs7aWYodHlwZW9mIG49PSJudW1iZXIiKXJldHVybmAKYC5yZXBlYXQoMStuKTtpZihuPT09ITEpcmV0dXJuYAoKPCEtLS0tPgoKYH1yZXR1cm5gCgpgfXZhciBrN3Q9ZygoKT0+e2kodzd0LCJjb250YWluZXJGbG93Iik7aShsUmEsImJldHdlZW4iKX0pO2Z1bmN0aW9uIFM3dChzLGUpe2xldCB0PVtdLGE9MCxyPTAsbjtmb3IoO249Y1JhLmV4ZWMocyk7KW8ocy5zbGljZShhLG4uaW5kZXgpKSx0LnB1c2goblswXSksYT1uLmluZGV4K25bMF0ubGVuZ3RoLHIrKztyZXR1cm4gbyhzLnNsaWNlKGEpKSx0LmpvaW4oIiIpO2Z1bmN0aW9uIG8obCl7dC5wdXNoKGUobCxyLCFsKSl9aShvLCJvbmUiKX12YXIgY1JhLF83dD1nKCgpPT57Y1JhPS9ccj9cbnxcci9nO2koUzd0LCJpbmRlbnRMaW5lcyIpfSk7ZnVuY3Rpb24gejd0KHMsZSx0KXtsZXQgYT0odC5iZWZvcmV8fCIiKSsoZXx8IiIpKyh0LmFmdGVyfHwiIikscj1bXSxuPVtdLG89e30sbD0tMTtmb3IoOysrbDxzLnVuc2FmZS5sZW5ndGg7KXtsZXQgdT1zLnVuc2FmZVtsXTtpZighb2llKHMuc3RhY2ssdSkpY29udGludWU7bGV0IGM9cy5jb21waWxlUGF0dGVybih1KSxiO2Zvcig7Yj1jLmV4ZWMoYSk7KXtsZXQgdj0iYmVmb3JlImluIHV8fCEhdS5hdEJyZWFrLHg9ImFmdGVyImluIHUsbT1iLmluZGV4Kyh2P2JbMV0ubGVuZ3RoOjApO3IuaW5jbHVkZXMobSk/KG9bbV0uYmVmb3JlJiYhdiYmKG9bbV0uYmVmb3JlPSExKSxvW21dLmFmdGVyJiYheCYmKG9bbV0uYWZ0ZXI9ITEpKTooci5wdXNoKG0pLG9bbV09e2JlZm9yZTp2LGFmdGVyOnh9KX19ci5zb3J0KGRSYSk7bGV0IHA9dC5iZWZvcmU/dC5iZWZvcmUubGVuZ3RoOjAsZD1hLmxlbmd0aC0odC5hZnRlcj90LmFmdGVyLmxlbmd0aDowKTtmb3IobD0tMTsrK2w8ci5sZW5ndGg7KXtsZXQgdT1yW2xdO3U8cHx8dT49ZHx8dSsxPGQmJnJbbCsxXT09PXUrMSYmb1t1XS5hZnRlciYmIW9bdSsxXS5iZWZvcmUmJiFvW3UrMV0uYWZ0ZXJ8fHJbbC0xXT09PXUtMSYmb1t1XS5iZWZvcmUmJiFvW3UtMV0uYmVmb3JlJiYhb1t1LTFdLmFmdGVyfHwocCE9PXUmJm4ucHVzaChNN3QoYS5zbGljZShwLHUpLCJcXCIpKSxwPXUsL1shLS86LUBbLWB7LX5dLy50ZXN0KGEuY2hhckF0KHUpKSYmKCF0LmVuY29kZXx8IXQuZW5jb2RlLmluY2x1ZGVzKGEuY2hhckF0KHUpKSk/bi5wdXNoKCJcXCIpOihuLnB1c2goamwoYS5jaGFyQ29kZUF0KHUpKSkscCsrKSl9cmV0dXJuIG4ucHVzaChNN3QoYS5zbGljZShwLGQpLHQuYWZ0ZXIpKSxuLmpvaW4oIiIpfWZ1bmN0aW9uIGRSYShzLGUpe3JldHVybiBzLWV9ZnVuY3Rpb24gTTd0KHMsZSl7bGV0IHQ9L1xcKD89WyEtLzotQFstYHstfl0pL2csYT1bXSxyPVtdLG49cytlLG89LTEsbD0wLHA7Zm9yKDtwPXQuZXhlYyhuKTspYS5wdXNoKHAuaW5kZXgpO2Zvcig7KytvPGEubGVuZ3RoOylsIT09YVtvXSYmci5wdXNoKHMuc2xpY2UobCxhW29dKSksci5wdXNoKCJcXCIpLGw9YVtvXTtyZXR1cm4gci5wdXNoKHMuc2xpY2UobCkpLHIuam9pbigiIil9dmFyIEM3dD1nKCgpPT57WjkoKTt1ZmUoKTtpKHo3dCwic2FmZSIpO2koZFJhLCJudW1lcmljYWwiKTtpKE03dCwiZXNjYXBlQmFja3NsYXNoZXMiKX0pO2Z1bmN0aW9uIFQ3dChzKXtsZXQgZT1zfHx7fSx0PWUubm93fHx7fSxhPWUubGluZVNoaWZ0fHwwLHI9dC5saW5lfHwxLG49dC5jb2x1bW58fDE7cmV0dXJue21vdmU6cCxjdXJyZW50Om8sc2hpZnQ6bH07ZnVuY3Rpb24gbygpe3JldHVybntub3c6e2xpbmU6cixjb2x1bW46bn0sbGluZVNoaWZ0OmF9fWZ1bmN0aW9uIGwoZCl7YSs9ZH1mdW5jdGlvbiBwKGQpe2xldCB1PWR8fCIiLGM9dS5zcGxpdCgvXHI/XG58XHIvZyksYj1jW2MubGVuZ3RoLTFdO3JldHVybiByKz1jLmxlbmd0aC0xLG49Yy5sZW5ndGg9PT0xP24rYi5sZW5ndGg6MStiLmxlbmd0aCthLHV9fXZhciAkN3Q9ZygoKT0+e2koVDd0LCJ0cmFjayIpfSk7ZnVuY3Rpb24gRGZlKHMsZSl7bGV0IHQ9ZXx8e30sYT17YXNzb2NpYXRpb25JZDptN3QsY29udGFpbmVyUGhyYXNpbmc6ZlJhLGNvbnRhaW5lckZsb3c6bVJhLGNyZWF0ZVRyYWNrZXI6VDd0LGNvbXBpbGVQYXR0ZXJuOmI3dCxlbnRlcjpuLGhhbmRsZXJzOnsuLi5DM30saGFuZGxlOnZvaWQgMCxpbmRlbnRMaW5lczpTN3QsaW5kZXhTdGFjazpbXSxqb2luOlsuLi5kN3RdLG9wdGlvbnM6e30sc2FmZTpnUmEsc3RhY2s6W10sdW5zYWZlOlsuLi5wN3RdfTtkZmUoYSx0KSxhLm9wdGlvbnMudGlnaHREZWZpbml0aW9ucyYmYS5qb2luLnB1c2goaFJhKSxhLmhhbmRsZT1yaWUoInR5cGUiLHtpbnZhbGlkOnVSYSx1bmtub3duOnBSYSxoYW5kbGVyczphLmhhbmRsZXJzfSk7bGV0IHI9YS5oYW5kbGUocyx2b2lkIDAsYSx7YmVmb3JlOmAKYCxhZnRlcjpgCmAsbm93OntsaW5lOjEsY29sdW1uOjF9LGxpbmVTaGlmdDowfSk7cmV0dXJuIHImJnIuY2hhckNvZGVBdChyLmxlbmd0aC0xKSE9PTEwJiZyLmNoYXJDb2RlQXQoci5sZW5ndGgtMSkhPT0xMyYmKHIrPWAKYCkscjtmdW5jdGlvbiBuKG8pe3JldHVybiBhLnN0YWNrLnB1c2gobyksbDtmdW5jdGlvbiBsKCl7YS5zdGFjay5wb3AoKX1pKGwsImV4aXQiKX1pKG4sImVudGVyIil9ZnVuY3Rpb24gdVJhKHMpe3Rocm93IG5ldyBFcnJvcigiQ2Fubm90IGhhbmRsZSB2YWx1ZSBgIitzKyJgLCBleHBlY3RlZCBub2RlIil9ZnVuY3Rpb24gcFJhKHMpe2xldCBlPXM7dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgaGFuZGxlIHVua25vd24gbm9kZSBgIitlLnR5cGUrImAiKX1mdW5jdGlvbiBoUmEocyxlKXtpZihzLnR5cGU9PT0iZGVmaW5pdGlvbiImJnMudHlwZT09PWUudHlwZSlyZXR1cm4gMH1mdW5jdGlvbiBmUmEocyxlKXtyZXR1cm4geDd0KHMsdGhpcyxlKX1mdW5jdGlvbiBtUmEocyxlKXtyZXR1cm4gdzd0KHMsdGhpcyxlKX1mdW5jdGlvbiBnUmEocyxlKXtyZXR1cm4gejd0KHRoaXMscyxlKX12YXIgRDd0PWcoKCk9PntjZmUoKTtkZ3QoKTtUZmUoKTt1N3QoKTtoN3QoKTtnN3QoKTt2N3QoKTt5N3QoKTtrN3QoKTtfN3QoKTtDN3QoKTskN3QoKTtpKERmZSwidG9NYXJrZG93biIpO2kodVJhLCJpbnZhbGlkIik7aShwUmEsInVua25vd24iKTtpKGhSYSwiam9pbkRlZmluaXRpb24iKTtpKGZSYSwiY29udGFpbmVyUGhyYXNpbmdCb3VuZCIpO2kobVJhLCJjb250YWluZXJGbG93Qm91bmQiKTtpKGdSYSwic2FmZUJvdW5kIil9KTt2YXIgbWllPWcoKCk9PntEN3QoKTtUZmUoKX0pO2Z1bmN0aW9uIEVmZSgpe3JldHVybntlbnRlcjp7dGFibGU6YlJhLHRhYmxlRGF0YTpMN3QsdGFibGVIZWFkZXI6TDd0LHRhYmxlUm93OnhSYX0sZXhpdDp7Y29kZVRleHQ6eVJhLHRhYmxlOnZSYSx0YWJsZURhdGE6TGZlLHRhYmxlSGVhZGVyOkxmZSx0YWJsZVJvdzpMZmV9fX1mdW5jdGlvbiBiUmEocyl7bGV0IGU9cy5fYWxpZ247dGhpcy5lbnRlcih7dHlwZToidGFibGUiLGFsaWduOmUubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0PT09Im5vbmUiP251bGw6dH0pLGNoaWxkcmVuOltdfSxzKSx0aGlzLmRhdGEuaW5UYWJsZT0hMH1mdW5jdGlvbiB2UmEocyl7dGhpcy5leGl0KHMpLHRoaXMuZGF0YS5pblRhYmxlPXZvaWQgMH1mdW5jdGlvbiB4UmEocyl7dGhpcy5lbnRlcih7dHlwZToidGFibGVSb3ciLGNoaWxkcmVuOltdfSxzKX1mdW5jdGlvbiBMZmUocyl7dGhpcy5leGl0KHMpfWZ1bmN0aW9uIEw3dChzKXt0aGlzLmVudGVyKHt0eXBlOiJ0YWJsZUNlbGwiLGNoaWxkcmVuOltdfSxzKX1mdW5jdGlvbiB5UmEocyl7bGV0IGU9dGhpcy5yZXN1bWUoKTt0aGlzLmRhdGEuaW5UYWJsZSYmKGU9ZS5yZXBsYWNlKC9cXChbXFx8XSkvZyx3UmEpKTtsZXQgdD10aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdO3QudHlwZSx0LnZhbHVlPWUsdGhpcy5leGl0KHMpfWZ1bmN0aW9uIHdSYShzLGUpe3JldHVybiBlPT09InwiP2U6c31mdW5jdGlvbiBQZmUocyl7bGV0IGU9c3x8e30sdD1lLnRhYmxlQ2VsbFBhZGRpbmcsYT1lLnRhYmxlUGlwZUFsaWduLHI9ZS5zdHJpbmdMZW5ndGgsbj10PyIgIjoifCI7cmV0dXJue3Vuc2FmZTpbe2NoYXJhY3RlcjoiXHIiLGluQ29uc3RydWN0OiJ0YWJsZUNlbGwifSx7Y2hhcmFjdGVyOmAKYCxpbkNvbnN0cnVjdDoidGFibGVDZWxsIn0se2F0QnJlYWs6ITAsY2hhcmFjdGVyOiJ8IixhZnRlcjoiWwkgOi1dIn0se2NoYXJhY3RlcjoifCIsaW5Db25zdHJ1Y3Q6InRhYmxlQ2VsbCJ9LHthdEJyZWFrOiEwLGNoYXJhY3RlcjoiOiIsYWZ0ZXI6Ii0ifSx7YXRCcmVhazohMCxjaGFyYWN0ZXI6Ii0iLGFmdGVyOiJbOnwtXSJ9XSxoYW5kbGVyczp7aW5saW5lQ29kZTpiLHRhYmxlOm8sdGFibGVDZWxsOnAsdGFibGVSb3c6bH19O2Z1bmN0aW9uIG8odix4LG0sZil7cmV0dXJuIGQodSh2LG0sZiksdi5hbGlnbil9ZnVuY3Rpb24gbCh2LHgsbSxmKXtsZXQgeT1jKHYsbSxmKSxNPWQoW3ldKTtyZXR1cm4gTS5zbGljZSgwLE0uaW5kZXhPZihgCmApKX1mdW5jdGlvbiBwKHYseCxtLGYpe2xldCB5PW0uZW50ZXIoInRhYmxlQ2VsbCIpLE09bS5lbnRlcigicGhyYXNpbmciKSx6PW0uY29udGFpbmVyUGhyYXNpbmcodix7Li4uZixiZWZvcmU6bixhZnRlcjpufSk7cmV0dXJuIE0oKSx5KCksen1mdW5jdGlvbiBkKHYseCl7cmV0dXJuIG9ndCh2LHthbGlnbjp4LGFsaWduRGVsaW1pdGVyczphLHBhZGRpbmc6dCxzdHJpbmdMZW5ndGg6cn0pfWZ1bmN0aW9uIHUodix4LG0pe2xldCBmPXYuY2hpbGRyZW4seT0tMSxNPVtdLHo9eC5lbnRlcigidGFibGUiKTtmb3IoOysreTxmLmxlbmd0aDspTVt5XT1jKGZbeV0seCxtKTtyZXR1cm4geigpLE19ZnVuY3Rpb24gYyh2LHgsbSl7bGV0IGY9di5jaGlsZHJlbix5PS0xLE09W10sej14LmVudGVyKCJ0YWJsZVJvdyIpO2Zvcig7Kyt5PGYubGVuZ3RoOylNW3ldPXAoZlt5XSx2LHgsbSk7cmV0dXJuIHooKSxNfWZ1bmN0aW9uIGIodix4LG0pe2xldCBmPUMzLmlubGluZUNvZGUodix4LG0pO3JldHVybiBtLnN0YWNrLmluY2x1ZGVzKCJ0YWJsZUNlbGwiKSYmKGY9Zi5yZXBsYWNlKC9cfC9nLCJcXCQmIikpLGZ9fXZhciBFN3Q9ZygoKT0+e1dwKCk7bmd0KCk7bWllKCk7aShFZmUsImdmbVRhYmxlRnJvbU1hcmtkb3duIik7aShiUmEsImVudGVyVGFibGUiKTtpKHZSYSwiZXhpdFRhYmxlIik7aSh4UmEsImVudGVyUm93Iik7aShMZmUsImV4aXQiKTtpKEw3dCwiZW50ZXJDZWxsIik7aSh5UmEsImV4aXRDb2RlVGV4dCIpO2kod1JhLCJyZXBsYWNlIik7aShQZmUsImdmbVRhYmxlVG9NYXJrZG93biIpfSk7dmFyIFA3dD1nKCgpPT57RTd0KCl9KTtmdW5jdGlvbiBJZmUoKXtyZXR1cm57ZXhpdDp7dGFza0xpc3RDaGVja1ZhbHVlQ2hlY2tlZDpJN3QsdGFza0xpc3RDaGVja1ZhbHVlVW5jaGVja2VkOkk3dCxwYXJhZ3JhcGg6a1JhfX19ZnVuY3Rpb24gQWZlKCl7cmV0dXJue3Vuc2FmZTpbe2F0QnJlYWs6ITAsY2hhcmFjdGVyOiItIixhZnRlcjoiWzp8LV0ifV0saGFuZGxlcnM6e2xpc3RJdGVtOlNSYX19fWZ1bmN0aW9uIEk3dChzKXtsZXQgZT10aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTJdO2UudHlwZSxlLmNoZWNrZWQ9cy50eXBlPT09InRhc2tMaXN0Q2hlY2tWYWx1ZUNoZWNrZWQifWZ1bmN0aW9uIGtSYShzKXtsZXQgZT10aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTJdO2lmKGUmJmUudHlwZT09PSJsaXN0SXRlbSImJnR5cGVvZiBlLmNoZWNrZWQ9PSJib29sZWFuIil7bGV0IHQ9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXTt0LnR5cGU7bGV0IGE9dC5jaGlsZHJlblswXTtpZihhJiZhLnR5cGU9PT0idGV4dCIpe2xldCByPWUuY2hpbGRyZW4sbj0tMSxvO2Zvcig7KytuPHIubGVuZ3RoOyl7bGV0IGw9cltuXTtpZihsLnR5cGU9PT0icGFyYWdyYXBoIil7bz1sO2JyZWFrfX1vPT09dCYmKGEudmFsdWU9YS52YWx1ZS5zbGljZSgxKSxhLnZhbHVlLmxlbmd0aD09PTA/dC5jaGlsZHJlbi5zaGlmdCgpOnQucG9zaXRpb24mJmEucG9zaXRpb24mJnR5cGVvZiBhLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldD09Im51bWJlciImJihhLnBvc2l0aW9uLnN0YXJ0LmNvbHVtbisrLGEucG9zaXRpb24uc3RhcnQub2Zmc2V0KyssdC5wb3NpdGlvbi5zdGFydD1PYmplY3QuYXNzaWduKHt9LGEucG9zaXRpb24uc3RhcnQpKSl9fXRoaXMuZXhpdChzKX1mdW5jdGlvbiBTUmEocyxlLHQsYSl7bGV0IHI9cy5jaGlsZHJlblswXSxuPXR5cGVvZiBzLmNoZWNrZWQ9PSJib29sZWFuIiYmciYmci50eXBlPT09InBhcmFncmFwaCIsbz0iWyIrKHMuY2hlY2tlZD8ieCI6IiAiKSsiXSAiLGw9dC5jcmVhdGVUcmFja2VyKGEpO24mJmwubW92ZShvKTtsZXQgcD1DMy5saXN0SXRlbShzLGUsdCx7Li4uYSwuLi5sLmN1cnJlbnQoKX0pO3JldHVybiBuJiYocD1wLnJlcGxhY2UoL14oPzpbKistXXxcZCtcLikoW1xyXG5dfCB7MSwzfSkvLGQpKSxwO2Z1bmN0aW9uIGQodSl7cmV0dXJuIHUrb31pKGQsImNoZWNrIil9dmFyIEE3dD1nKCgpPT57V3AoKTttaWUoKTtpKElmZSwiZ2ZtVGFza0xpc3RJdGVtRnJvbU1hcmtkb3duIik7aShBZmUsImdmbVRhc2tMaXN0SXRlbVRvTWFya2Rvd24iKTtpKEk3dCwiZXhpdENoZWNrIik7aShrUmEsImV4aXRQYXJhZ3JhcGhXaXRoVGFza0xpc3RJdGVtIik7aShTUmEsImxpc3RJdGVtV2l0aFRhc2tMaXN0SXRlbSIpfSk7dmFyIE43dD1nKCgpPT57QTd0KCl9KTtmdW5jdGlvbiBOZmUoKXtyZXR1cm5bc2ZlKCkscmZlKCksbmZlKCksRWZlKCksSWZlKCldfWZ1bmN0aW9uIFJmZShzKXtyZXR1cm57ZXh0ZW5zaW9uczpbaWZlKCksb2ZlKHMpLGxmZSgpLFBmZShzKSxBZmUoKV19fXZhciBSN3Q9ZygoKT0+e1g4dCgpO3RndCgpO2lndCgpO1A3dCgpO043dCgpO2koTmZlLCJnZm1Gcm9tTWFya2Rvd24iKTtpKFJmZSwiZ2ZtVG9NYXJrZG93biIpfSk7dmFyIE83dD1nKCgpPT57Ujd0KCl9KTtmdW5jdGlvbiBzcihzLGUsdCxhKXtsZXQgcj1zLmxlbmd0aCxuPTAsbztpZihlPDA/ZT0tZT5yPzA6citlOmU9ZT5yP3I6ZSx0PXQ+MD90OjAsYS5sZW5ndGg8MWU0KW89QXJyYXkuZnJvbShhKSxvLnVuc2hpZnQoZSx0KSxzLnNwbGljZSguLi5vKTtlbHNlIGZvcih0JiZzLnNwbGljZShlLHQpO248YS5sZW5ndGg7KW89YS5zbGljZShuLG4rMWU0KSxvLnVuc2hpZnQoZSwwKSxzLnNwbGljZSguLi5vKSxuKz0xZTQsZSs9MWU0fWZ1bmN0aW9uIE1yKHMsZSl7cmV0dXJuIHMubGVuZ3RoPjA/KHNyKHMscy5sZW5ndGgsMCxlKSxzKTplfXZhciBiZD1nKCgpPT57aShzciwic3BsaWNlIik7aShNciwicHVzaCIpfSk7ZnVuY3Rpb24gZ2llKHMpe2xldCBlPXt9LHQ9LTE7Zm9yKDsrK3Q8cy5sZW5ndGg7KV9SYShlLHNbdF0pO3JldHVybiBlfWZ1bmN0aW9uIF9SYShzLGUpe2xldCB0O2Zvcih0IGluIGUpe2xldCByPShPZmUuY2FsbChzLHQpP3NbdF06dm9pZCAwKXx8KHNbdF09e30pLG49ZVt0XSxvO2lmKG4pZm9yKG8gaW4gbil7T2ZlLmNhbGwocixvKXx8KHJbb109W10pO2xldCBsPW5bb107TVJhKHJbb10sQXJyYXkuaXNBcnJheShsKT9sOmw/W2xdOltdKX19fWZ1bmN0aW9uIE1SYShzLGUpe2xldCB0PS0xLGE9W107Zm9yKDsrK3Q8ZS5sZW5ndGg7KShlW3RdLmFkZD09PSJhZnRlciI/czphKS5wdXNoKGVbdF0pO3NyKHMsMCwwLGEpfWZ1bmN0aW9uIGJpZShzKXtsZXQgZT17fSx0PS0xO2Zvcig7Kyt0PHMubGVuZ3RoOyl6UmEoZSxzW3RdKTtyZXR1cm4gZX1mdW5jdGlvbiB6UmEocyxlKXtsZXQgdDtmb3IodCBpbiBlKXtsZXQgcj0oT2ZlLmNhbGwocyx0KT9zW3RdOnZvaWQgMCl8fChzW3RdPXt9KSxuPWVbdF0sbztpZihuKWZvcihvIGluIG4pcltvXT1uW29dfX12YXIgT2ZlLHZpZT1nKCgpPT57YmQoKTtPZmU9e30uaGFzT3duUHJvcGVydHk7aShnaWUsImNvbWJpbmVFeHRlbnNpb25zIik7aShfUmEsInN5bnRheEV4dGVuc2lvbiIpO2koTVJhLCJjb25zdHJ1Y3RzIik7aShiaWUsImNvbWJpbmVIdG1sRXh0ZW5zaW9ucyIpO2koelJhLCJodG1sRXh0ZW5zaW9uIil9KTtmdW5jdGlvbiBIZmUoKXtyZXR1cm57dGV4dDp2ZH19ZnVuY3Rpb24gJFJhKHMsZSx0KXtsZXQgYT10aGlzLHIsbjtyZXR1cm4gbztmdW5jdGlvbiBvKGMpe3JldHVybiFGZmUoYyl8fCFXN3QuY2FsbChhLGEucHJldmlvdXMpfHxCZmUoYS5ldmVudHMpP3QoYyk6KHMuZW50ZXIoImxpdGVyYWxBdXRvbGluayIpLHMuZW50ZXIoImxpdGVyYWxBdXRvbGlua0VtYWlsIiksbChjKSl9ZnVuY3Rpb24gbChjKXtyZXR1cm4gRmZlKGMpPyhzLmNvbnN1bWUoYyksbCk6Yz09PTY0PyhzLmNvbnN1bWUoYykscCk6dChjKX1mdW5jdGlvbiBwKGMpe3JldHVybiBjPT09NDY/cy5jaGVjayhUUmEsdSxkKShjKTpjPT09NDV8fGM9PT05NXx8QmkoYyk/KG49ITAscy5jb25zdW1lKGMpLHApOnUoYyl9ZnVuY3Rpb24gZChjKXtyZXR1cm4gcy5jb25zdW1lKGMpLHI9ITAscH1mdW5jdGlvbiB1KGMpe3JldHVybiBuJiZyJiZVcihhLnByZXZpb3VzKT8ocy5leGl0KCJsaXRlcmFsQXV0b2xpbmtFbWFpbCIpLHMuZXhpdCgibGl0ZXJhbEF1dG9saW5rIiksZShjKSk6dChjKX19ZnVuY3Rpb24gRFJhKHMsZSx0KXtsZXQgYT10aGlzO3JldHVybiByO2Z1bmN0aW9uIHIobyl7cmV0dXJuIG8hPT04NyYmbyE9PTExOXx8IVY3dC5jYWxsKGEsYS5wcmV2aW91cyl8fEJmZShhLmV2ZW50cyk/dChvKToocy5lbnRlcigibGl0ZXJhbEF1dG9saW5rIikscy5lbnRlcigibGl0ZXJhbEF1dG9saW5rV3d3Iikscy5jaGVjayhDUmEscy5hdHRlbXB0KEY3dCxzLmF0dGVtcHQoQjd0LG4pLHQpLHQpKG8pKX1mdW5jdGlvbiBuKG8pe3JldHVybiBzLmV4aXQoImxpdGVyYWxBdXRvbGlua1d3dyIpLHMuZXhpdCgibGl0ZXJhbEF1dG9saW5rIiksZShvKX19ZnVuY3Rpb24gTFJhKHMsZSx0KXtsZXQgYT10aGlzLHI9IiIsbj0hMTtyZXR1cm4gbztmdW5jdGlvbiBvKGMpe3JldHVybihjPT09NzJ8fGM9PT0xMDQpJiZVN3QuY2FsbChhLGEucHJldmlvdXMpJiYhQmZlKGEuZXZlbnRzKT8ocy5lbnRlcigibGl0ZXJhbEF1dG9saW5rIikscy5lbnRlcigibGl0ZXJhbEF1dG9saW5rSHR0cCIpLHIrPVN0cmluZy5mcm9tQ29kZVBvaW50KGMpLHMuY29uc3VtZShjKSxsKTp0KGMpfWZ1bmN0aW9uIGwoYyl7aWYoVXIoYykmJnIubGVuZ3RoPDUpcmV0dXJuIHIrPVN0cmluZy5mcm9tQ29kZVBvaW50KGMpLHMuY29uc3VtZShjKSxsO2lmKGM9PT01OCl7bGV0IGI9ci50b0xvd2VyQ2FzZSgpO2lmKGI9PT0iaHR0cCJ8fGI9PT0iaHR0cHMiKXJldHVybiBzLmNvbnN1bWUoYykscH1yZXR1cm4gdChjKX1mdW5jdGlvbiBwKGMpe3JldHVybiBjPT09NDc/KHMuY29uc3VtZShjKSxuP2Q6KG49ITAscCkpOnQoYyl9ZnVuY3Rpb24gZChjKXtyZXR1cm4gYz09PW51bGx8fFMzKGMpfHxBYShjKXx8Z2QoYyl8fF8zKGMpP3QoYyk6cy5hdHRlbXB0KEY3dCxzLmF0dGVtcHQoQjd0LHUpLHQpKGMpfWZ1bmN0aW9uIHUoYyl7cmV0dXJuIHMuZXhpdCgibGl0ZXJhbEF1dG9saW5rSHR0cCIpLHMuZXhpdCgibGl0ZXJhbEF1dG9saW5rIiksZShjKX19ZnVuY3Rpb24gRVJhKHMsZSx0KXtsZXQgYT0wO3JldHVybiByO2Z1bmN0aW9uIHIobyl7cmV0dXJuKG89PT04N3x8bz09PTExOSkmJmE8Mz8oYSsrLHMuY29uc3VtZShvKSxyKTpvPT09NDYmJmE9PT0zPyhzLmNvbnN1bWUobyksbik6dChvKX1mdW5jdGlvbiBuKG8pe3JldHVybiBvPT09bnVsbD90KG8pOmUobyl9fWZ1bmN0aW9uIFBSYShzLGUsdCl7bGV0IGEscixuO3JldHVybiBvO2Z1bmN0aW9uIG8oZCl7cmV0dXJuIGQ9PT00Nnx8ZD09PTk1P3MuY2hlY2soSDd0LHAsbCkoZCk6ZD09PW51bGx8fEFhKGQpfHxnZChkKXx8ZCE9PTQ1JiZfMyhkKT9wKGQpOihuPSEwLHMuY29uc3VtZShkKSxvKX1mdW5jdGlvbiBsKGQpe3JldHVybiBkPT09OTU/YT0hMDoocj1hLGE9dm9pZCAwKSxzLmNvbnN1bWUoZCksb31mdW5jdGlvbiBwKGQpe3JldHVybiByfHxhfHwhbj90KGQpOmUoZCl9fWZ1bmN0aW9uIElSYShzLGUpe2xldCB0PTAsYT0wO3JldHVybiByO2Z1bmN0aW9uIHIobyl7cmV0dXJuIG89PT00MD8odCsrLHMuY29uc3VtZShvKSxyKTpvPT09NDEmJmE8dD9uKG8pOm89PT0zM3x8bz09PTM0fHxvPT09Mzh8fG89PT0zOXx8bz09PTQxfHxvPT09NDJ8fG89PT00NHx8bz09PTQ2fHxvPT09NTh8fG89PT01OXx8bz09PTYwfHxvPT09NjN8fG89PT05M3x8bz09PTk1fHxvPT09MTI2P3MuY2hlY2soSDd0LGUsbikobyk6bz09PW51bGx8fEFhKG8pfHxnZChvKT9lKG8pOihzLmNvbnN1bWUobykscil9ZnVuY3Rpb24gbihvKXtyZXR1cm4gbz09PTQxJiZhKysscy5jb25zdW1lKG8pLHJ9fWZ1bmN0aW9uIEFSYShzLGUsdCl7cmV0dXJuIGE7ZnVuY3Rpb24gYShsKXtyZXR1cm4gbD09PTMzfHxsPT09MzR8fGw9PT0zOXx8bD09PTQxfHxsPT09NDJ8fGw9PT00NHx8bD09PTQ2fHxsPT09NTh8fGw9PT01OXx8bD09PTYzfHxsPT09OTV8fGw9PT0xMjY/KHMuY29uc3VtZShsKSxhKTpsPT09Mzg/KHMuY29uc3VtZShsKSxuKTpsPT09OTM/KHMuY29uc3VtZShsKSxyKTpsPT09NjB8fGw9PT1udWxsfHxBYShsKXx8Z2QobCk/ZShsKTp0KGwpfWZ1bmN0aW9uIHIobCl7cmV0dXJuIGw9PT1udWxsfHxsPT09NDB8fGw9PT05MXx8QWEobCl8fGdkKGwpP2UobCk6YShsKX1mdW5jdGlvbiBuKGwpe3JldHVybiBVcihsKT9vKGwpOnQobCl9ZnVuY3Rpb24gbyhsKXtyZXR1cm4gbD09PTU5PyhzLmNvbnN1bWUobCksYSk6VXIobCk/KHMuY29uc3VtZShsKSxvKTp0KGwpfX1mdW5jdGlvbiBOUmEocyxlLHQpe3JldHVybiBhO2Z1bmN0aW9uIGEobil7cmV0dXJuIHMuY29uc3VtZShuKSxyfWZ1bmN0aW9uIHIobil7cmV0dXJuIEJpKG4pP3Qobik6ZShuKX19ZnVuY3Rpb24gVjd0KHMpe3JldHVybiBzPT09bnVsbHx8cz09PTQwfHxzPT09NDJ8fHM9PT05NXx8cz09PTkxfHxzPT09OTN8fHM9PT0xMjZ8fEFhKHMpfWZ1bmN0aW9uIFU3dChzKXtyZXR1cm4hVXIocyl9ZnVuY3Rpb24gVzd0KHMpe3JldHVybiEocz09PTQ3fHxGZmUocykpfWZ1bmN0aW9uIEZmZShzKXtyZXR1cm4gcz09PTQzfHxzPT09NDV8fHM9PT00Nnx8cz09PTk1fHxCaShzKX1mdW5jdGlvbiBCZmUocyl7bGV0IGU9cy5sZW5ndGgsdD0hMTtmb3IoO2UtLTspe2xldCBhPXNbZV1bMV07aWYoKGEudHlwZT09PSJsYWJlbExpbmsifHxhLnR5cGU9PT0ibGFiZWxJbWFnZSIpJiYhYS5fYmFsYW5jZWQpe3Q9ITA7YnJlYWt9aWYoYS5fZ2ZtQXV0b2xpbmtMaXRlcmFsV2Fsa2VkSW50byl7dD0hMTticmVha319cmV0dXJuIHMubGVuZ3RoPjAmJiF0JiYoc1tzLmxlbmd0aC0xXVsxXS5fZ2ZtQXV0b2xpbmtMaXRlcmFsV2Fsa2VkSW50bz0hMCksdH12YXIgQ1JhLEY3dCxCN3QsSDd0LFRSYSxxN3Qsajd0LEUwLHZkLEc3dD1nKCgpPT57VmEoKTtDUmE9e3Rva2VuaXplOkVSYSxwYXJ0aWFsOiEwfSxGN3Q9e3Rva2VuaXplOlBSYSxwYXJ0aWFsOiEwfSxCN3Q9e3Rva2VuaXplOklSYSxwYXJ0aWFsOiEwfSxIN3Q9e3Rva2VuaXplOkFSYSxwYXJ0aWFsOiEwfSxUUmE9e3Rva2VuaXplOk5SYSxwYXJ0aWFsOiEwfSxxN3Q9e25hbWU6Ind3d0F1dG9saW5rIix0b2tlbml6ZTpEUmEscHJldmlvdXM6Vjd0fSxqN3Q9e25hbWU6InByb3RvY29sQXV0b2xpbmsiLHRva2VuaXplOkxSYSxwcmV2aW91czpVN3R9LEUwPXtuYW1lOiJlbWFpbEF1dG9saW5rIix0b2tlbml6ZTokUmEscHJldmlvdXM6Vzd0fSx2ZD17fTtpKEhmZSwiZ2ZtQXV0b2xpbmtMaXRlcmFsIik7Zm9yKHZhciAkMz00ODskMzwxMjM7KXZkWyQzXT1FMCwkMysrLCQzPT09NTg/JDM9NjU6JDM9PT05MSYmKCQzPTk3KTt2ZFs0M109RTAsdmRbNDVdPUUwLHZkWzQ2XT1FMCx2ZFs5NV09RTAsdmRbNzJdPVtFMCxqN3RdLHZkWzEwNF09W0UwLGo3dF0sdmRbODddPVtFMCxxN3RdLHZkWzExOV09W0UwLHE3dF07aSgkUmEsInRva2VuaXplRW1haWxBdXRvbGluayIpO2koRFJhLCJ0b2tlbml6ZVd3d0F1dG9saW5rIik7aShMUmEsInRva2VuaXplUHJvdG9jb2xBdXRvbGluayIpO2koRVJhLCJ0b2tlbml6ZVd3d1ByZWZpeCIpO2koUFJhLCJ0b2tlbml6ZURvbWFpbiIpO2koSVJhLCJ0b2tlbml6ZVBhdGgiKTtpKEFSYSwidG9rZW5pemVUcmFpbCIpO2koTlJhLCJ0b2tlbml6ZUVtYWlsRG9tYWluRG90VHJhaWwiKTtpKFY3dCwicHJldmlvdXNXd3ciKTtpKFU3dCwicHJldmlvdXNQcm90b2NvbCIpO2koVzd0LCJwcmV2aW91c0VtYWlsIik7aShGZmUsImdmbUF0ZXh0Iik7aShCZmUsInByZXZpb3VzVW5iYWxhbmNlZCIpfSk7ZnVuY3Rpb24geGllKHMpe3JldHVybiBzLnJlcGxhY2UoL1siJjw+XS9nLGUpO2Z1bmN0aW9uIGUodCl7cmV0dXJuIiYiK1JSYVt0XSsiOyJ9fXZhciBSUmEscWZlPWcoKCk9PntSUmE9eyciJzoicXVvdCIsIiYiOiJhbXAiLCI8IjoibHQiLCI+IjoiZ3QifTtpKHhpZSwiZW5jb2RlIil9KTtmdW5jdGlvbiB4ZChzLGUpe2xldCB0PXhpZShWbChzfHwiIikpO2lmKCFlKXJldHVybiB0O2xldCBhPXQuaW5kZXhPZigiOiIpLHI9dC5pbmRleE9mKCI/Iiksbj10LmluZGV4T2YoIiMiKSxvPXQuaW5kZXhPZigiLyIpO3JldHVybiBhPDB8fG8+LTEmJmE+b3x8cj4tMSYmYT5yfHxuPi0xJiZhPm58fGUudGVzdCh0LnNsaWNlKDAsYSkpP3Q6IiJ9ZnVuY3Rpb24gVmwocyl7bGV0IGU9W10sdD0tMSxhPTAscj0wO2Zvcig7Kyt0PHMubGVuZ3RoOyl7bGV0IG49cy5jaGFyQ29kZUF0KHQpLG89IiI7aWYobj09PTM3JiZCaShzLmNoYXJDb2RlQXQodCsxKSkmJkJpKHMuY2hhckNvZGVBdCh0KzIpKSlyPTI7ZWxzZSBpZihuPDEyOCkvWyEjJCYtOz0/LVpfYS16fl0vLnRlc3QoU3RyaW5nLmZyb21DaGFyQ29kZShuKSl8fChvPVN0cmluZy5mcm9tQ2hhckNvZGUobikpO2Vsc2UgaWYobj41NTI5NSYmbjw1NzM0NCl7bGV0IGw9cy5jaGFyQ29kZUF0KHQrMSk7bjw1NjMyMCYmbD41NjMxOSYmbDw1NzM0ND8obz1TdHJpbmcuZnJvbUNoYXJDb2RlKG4sbCkscj0xKTpvPSJcdUZGRkQifWVsc2Ugbz1TdHJpbmcuZnJvbUNoYXJDb2RlKG4pO28mJihlLnB1c2gocy5zbGljZShhLHQpLGVuY29kZVVSSUNvbXBvbmVudChvKSksYT10K3IrMSxvPSIiKSxyJiYodCs9cixyPTApfXJldHVybiBlLmpvaW4oIiIpK3Muc2xpY2UoYSl9dmFyIHlkPWcoKCk9PntWYSgpO3FmZSgpO2koeGQsInNhbml0aXplVXJpIik7aShWbCwibm9ybWFsaXplVXJpIil9KTtmdW5jdGlvbiBWZmUoKXtyZXR1cm57ZXhpdDp7bGl0ZXJhbEF1dG9saW5rRW1haWw6RlJhLGxpdGVyYWxBdXRvbGlua0h0dHA6QlJhLGxpdGVyYWxBdXRvbGlua1d3dzpPUmF9fX1mdW5jdGlvbiBPUmEocyl7amZlLmNhbGwodGhpcyxzLCJodHRwOi8vIil9ZnVuY3Rpb24gRlJhKHMpe2pmZS5jYWxsKHRoaXMscywibWFpbHRvOiIpfWZ1bmN0aW9uIEJSYShzKXtqZmUuY2FsbCh0aGlzLHMpfWZ1bmN0aW9uIGpmZShzLGUpe2xldCB0PXRoaXMuc2xpY2VTZXJpYWxpemUocyk7dGhpcy50YWcoJzxhIGhyZWY9IicreGQoKGV8fCIiKSt0KSsnIj4nKSx0aGlzLnJhdyh0aGlzLmVuY29kZSh0KSksdGhpcy50YWcoIjwvYT4iKX12YXIgSzd0PWcoKCk9Pnt5ZCgpO2koVmZlLCJnZm1BdXRvbGlua0xpdGVyYWxIdG1sIik7aShPUmEsImxpdGVyYWxBdXRvbGlua1d3dyIpO2koRlJhLCJsaXRlcmFsQXV0b2xpbmtFbWFpbCIpO2koQlJhLCJsaXRlcmFsQXV0b2xpbmtIdHRwIik7aShqZmUsImFuY2hvckZyb21Ub2tlbiIpfSk7dmFyIFk3dD1nKCgpPT57Rzd0KCk7Szd0KCl9KTtmdW5jdGlvbiBYcChzLGUsdCl7bGV0IGE9W10scj0tMTtmb3IoOysrcjxzLmxlbmd0aDspe2xldCBuPXNbcl0ucmVzb2x2ZUFsbDtuJiYhYS5pbmNsdWRlcyhuKSYmKGU9bihlLHQpLGEucHVzaChuKSl9cmV0dXJuIGV9dmFyIHVrPWcoKCk9PntpKFhwLCJyZXNvbHZlQWxsIil9KTtmdW5jdGlvbiBIUmEocyxlKXtsZXQgdD0tMSxhLHIsbixvLGwscCxkLHU7Zm9yKDsrK3Q8cy5sZW5ndGg7KWlmKHNbdF1bMF09PT0iZW50ZXIiJiZzW3RdWzFdLnR5cGU9PT0iYXR0ZW50aW9uU2VxdWVuY2UiJiZzW3RdWzFdLl9jbG9zZSl7Zm9yKGE9dDthLS07KWlmKHNbYV1bMF09PT0iZXhpdCImJnNbYV1bMV0udHlwZT09PSJhdHRlbnRpb25TZXF1ZW5jZSImJnNbYV1bMV0uX29wZW4mJmUuc2xpY2VTZXJpYWxpemUoc1thXVsxXSkuY2hhckNvZGVBdCgwKT09PWUuc2xpY2VTZXJpYWxpemUoc1t0XVsxXSkuY2hhckNvZGVBdCgwKSl7aWYoKHNbYV1bMV0uX2Nsb3NlfHxzW3RdWzFdLl9vcGVuKSYmKHNbdF1bMV0uZW5kLm9mZnNldC1zW3RdWzFdLnN0YXJ0Lm9mZnNldCklMyYmISgoc1thXVsxXS5lbmQub2Zmc2V0LXNbYV1bMV0uc3RhcnQub2Zmc2V0K3NbdF1bMV0uZW5kLm9mZnNldC1zW3RdWzFdLnN0YXJ0Lm9mZnNldCklMykpY29udGludWU7cD1zW2FdWzFdLmVuZC5vZmZzZXQtc1thXVsxXS5zdGFydC5vZmZzZXQ+MSYmc1t0XVsxXS5lbmQub2Zmc2V0LXNbdF1bMV0uc3RhcnQub2Zmc2V0PjE/MjoxO2xldCBjPXsuLi5zW2FdWzFdLmVuZH0sYj17Li4uc1t0XVsxXS5zdGFydH07Wjd0KGMsLXApLFo3dChiLHApLG89e3R5cGU6cD4xPyJzdHJvbmdTZXF1ZW5jZSI6ImVtcGhhc2lzU2VxdWVuY2UiLHN0YXJ0OmMsZW5kOnsuLi5zW2FdWzFdLmVuZH19LGw9e3R5cGU6cD4xPyJzdHJvbmdTZXF1ZW5jZSI6ImVtcGhhc2lzU2VxdWVuY2UiLHN0YXJ0OnsuLi5zW3RdWzFdLnN0YXJ0fSxlbmQ6Yn0sbj17dHlwZTpwPjE/InN0cm9uZ1RleHQiOiJlbXBoYXNpc1RleHQiLHN0YXJ0OnsuLi5zW2FdWzFdLmVuZH0sZW5kOnsuLi5zW3RdWzFdLnN0YXJ0fX0scj17dHlwZTpwPjE/InN0cm9uZyI6ImVtcGhhc2lzIixzdGFydDp7Li4uby5zdGFydH0sZW5kOnsuLi5sLmVuZH19LHNbYV1bMV0uZW5kPXsuLi5vLnN0YXJ0fSxzW3RdWzFdLnN0YXJ0PXsuLi5sLmVuZH0sZD1bXSxzW2FdWzFdLmVuZC5vZmZzZXQtc1thXVsxXS5zdGFydC5vZmZzZXQmJihkPU1yKGQsW1siZW50ZXIiLHNbYV1bMV0sZV0sWyJleGl0IixzW2FdWzFdLGVdXSkpLGQ9TXIoZCxbWyJlbnRlciIscixlXSxbImVudGVyIixvLGVdLFsiZXhpdCIsbyxlXSxbImVudGVyIixuLGVdXSksZD1NcihkLFhwKGUucGFyc2VyLmNvbnN0cnVjdHMuaW5zaWRlU3Bhbi5udWxsLHMuc2xpY2UoYSsxLHQpLGUpKSxkPU1yKGQsW1siZXhpdCIsbixlXSxbImVudGVyIixsLGVdLFsiZXhpdCIsbCxlXSxbImV4aXQiLHIsZV1dKSxzW3RdWzFdLmVuZC5vZmZzZXQtc1t0XVsxXS5zdGFydC5vZmZzZXQ/KHU9MixkPU1yKGQsW1siZW50ZXIiLHNbdF1bMV0sZV0sWyJleGl0IixzW3RdWzFdLGVdXSkpOnU9MCxzcihzLGEtMSx0LWErMyxkKSx0PWErZC5sZW5ndGgtdS0yO2JyZWFrfX1mb3IodD0tMTsrK3Q8cy5sZW5ndGg7KXNbdF1bMV0udHlwZT09PSJhdHRlbnRpb25TZXF1ZW5jZSImJihzW3RdWzFdLnR5cGU9ImRhdGEiKTtyZXR1cm4gc31mdW5jdGlvbiBxUmEocyxlKXtsZXQgdD10aGlzLnBhcnNlci5jb25zdHJ1Y3RzLmF0dGVudGlvbk1hcmtlcnMubnVsbCxhPXRoaXMucHJldmlvdXMscj1MMChhKSxuO3JldHVybiBvO2Z1bmN0aW9uIG8ocCl7cmV0dXJuIG49cCxzLmVudGVyKCJhdHRlbnRpb25TZXF1ZW5jZSIpLGwocCl9ZnVuY3Rpb24gbChwKXtpZihwPT09bilyZXR1cm4gcy5jb25zdW1lKHApLGw7bGV0IGQ9cy5leGl0KCJhdHRlbnRpb25TZXF1ZW5jZSIpLHU9TDAocCksYz0hdXx8dT09PTImJnJ8fHQuaW5jbHVkZXMocCksYj0hcnx8cj09PTImJnV8fHQuaW5jbHVkZXMoYSk7cmV0dXJuIGQuX29wZW49ISEobj09PTQyP2M6YyYmKHJ8fCFiKSksZC5fY2xvc2U9ISEobj09PTQyP2I6YiYmKHV8fCFjKSksZShwKX19ZnVuY3Rpb24gWjd0KHMsZSl7cy5jb2x1bW4rPWUscy5vZmZzZXQrPWUscy5fYnVmZmVySW5kZXgrPWV9dmFyIHBrLFg3dD1nKCgpPT57YmQoKTtsaWUoKTt1aygpO3BrPXtuYW1lOiJhdHRlbnRpb24iLHJlc29sdmVBbGw6SFJhLHRva2VuaXplOnFSYX07aShIUmEsInJlc29sdmVBbGxBdHRlbnRpb24iKTtpKHFSYSwidG9rZW5pemVBdHRlbnRpb24iKTtpKFo3dCwibW92ZVBvaW50Iil9KTtmdW5jdGlvbiBqUmEocyxlLHQpe2xldCBhPTA7cmV0dXJuIHI7ZnVuY3Rpb24gcih2KXtyZXR1cm4gcy5lbnRlcigiYXV0b2xpbmsiKSxzLmVudGVyKCJhdXRvbGlua01hcmtlciIpLHMuY29uc3VtZSh2KSxzLmV4aXQoImF1dG9saW5rTWFya2VyIikscy5lbnRlcigiYXV0b2xpbmtQcm90b2NvbCIpLG59ZnVuY3Rpb24gbih2KXtyZXR1cm4gVXIodik/KHMuY29uc3VtZSh2KSxvKTp2PT09NjQ/dCh2KTpkKHYpfWZ1bmN0aW9uIG8odil7cmV0dXJuIHY9PT00M3x8dj09PTQ1fHx2PT09NDZ8fEJpKHYpPyhhPTEsbCh2KSk6ZCh2KX1mdW5jdGlvbiBsKHYpe3JldHVybiB2PT09NTg/KHMuY29uc3VtZSh2KSxhPTAscCk6KHY9PT00M3x8dj09PTQ1fHx2PT09NDZ8fEJpKHYpKSYmYSsrPDMyPyhzLmNvbnN1bWUodiksbCk6KGE9MCxkKHYpKX1mdW5jdGlvbiBwKHYpe3JldHVybiB2PT09NjI/KHMuZXhpdCgiYXV0b2xpbmtQcm90b2NvbCIpLHMuZW50ZXIoImF1dG9saW5rTWFya2VyIikscy5jb25zdW1lKHYpLHMuZXhpdCgiYXV0b2xpbmtNYXJrZXIiKSxzLmV4aXQoImF1dG9saW5rIiksZSk6dj09PW51bGx8fHY9PT0zMnx8dj09PTYwfHxTMyh2KT90KHYpOihzLmNvbnN1bWUodikscCl9ZnVuY3Rpb24gZCh2KXtyZXR1cm4gdj09PTY0PyhzLmNvbnN1bWUodiksdSk6Tzh0KHYpPyhzLmNvbnN1bWUodiksZCk6dCh2KX1mdW5jdGlvbiB1KHYpe3JldHVybiBCaSh2KT9jKHYpOnQodil9ZnVuY3Rpb24gYyh2KXtyZXR1cm4gdj09PTQ2PyhzLmNvbnN1bWUodiksYT0wLHUpOnY9PT02Mj8ocy5leGl0KCJhdXRvbGlua1Byb3RvY29sIikudHlwZT0iYXV0b2xpbmtFbWFpbCIscy5lbnRlcigiYXV0b2xpbmtNYXJrZXIiKSxzLmNvbnN1bWUodikscy5leGl0KCJhdXRvbGlua01hcmtlciIpLHMuZXhpdCgiYXV0b2xpbmsiKSxlKTpiKHYpfWZ1bmN0aW9uIGIodil7aWYoKHY9PT00NXx8QmkodikpJiZhKys8NjMpe2xldCB4PXY9PT00NT9iOmM7cmV0dXJuIHMuY29uc3VtZSh2KSx4fXJldHVybiB0KHYpfX12YXIgVWZlLFE3dD1nKCgpPT57VmEoKTtVZmU9e25hbWU6ImF1dG9saW5rIix0b2tlbml6ZTpqUmF9O2koalJhLCJ0b2tlbml6ZUF1dG9saW5rIil9KTtmdW5jdGlvbiBLdChzLGUsdCxhKXtsZXQgcj1hP2EtMTpOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksbj0wO3JldHVybiBvO2Z1bmN0aW9uIG8ocCl7cmV0dXJuIEh0KHApPyhzLmVudGVyKHQpLGwocCkpOmUocCl9ZnVuY3Rpb24gbChwKXtyZXR1cm4gSHQocCkmJm4rKzxyPyhzLmNvbnN1bWUocCksbCk6KHMuZXhpdCh0KSxlKHApKX19dmFyIGlyPWcoKCk9PntWYSgpO2koS3QsImZhY3RvcnlTcGFjZSIpfSk7ZnVuY3Rpb24gVlJhKHMsZSx0KXtyZXR1cm4gYTtmdW5jdGlvbiBhKG4pe3JldHVybiBIdChuKT9LdChzLHIsImxpbmVQcmVmaXgiKShuKTpyKG4pfWZ1bmN0aW9uIHIobil7cmV0dXJuIG49PT1udWxsfHx2dChuKT9lKG4pOnQobil9fXZhciB3ZCx5aWU9ZygoKT0+e2lyKCk7VmEoKTt3ZD17cGFydGlhbDohMCx0b2tlbml6ZTpWUmF9O2koVlJhLCJ0b2tlbml6ZUJsYW5rTGluZSIpfSk7ZnVuY3Rpb24gVVJhKHMsZSx0KXtsZXQgYT10aGlzO3JldHVybiByO2Z1bmN0aW9uIHIobyl7aWYobz09PTYyKXtsZXQgbD1hLmNvbnRhaW5lclN0YXRlO3JldHVybiBsLm9wZW58fChzLmVudGVyKCJibG9ja1F1b3RlIix7X2NvbnRhaW5lcjohMH0pLGwub3Blbj0hMCkscy5lbnRlcigiYmxvY2tRdW90ZVByZWZpeCIpLHMuZW50ZXIoImJsb2NrUXVvdGVNYXJrZXIiKSxzLmNvbnN1bWUobykscy5leGl0KCJibG9ja1F1b3RlTWFya2VyIiksbn1yZXR1cm4gdChvKX1mdW5jdGlvbiBuKG8pe3JldHVybiBIdChvKT8ocy5lbnRlcigiYmxvY2tRdW90ZVByZWZpeFdoaXRlc3BhY2UiKSxzLmNvbnN1bWUobykscy5leGl0KCJibG9ja1F1b3RlUHJlZml4V2hpdGVzcGFjZSIpLHMuZXhpdCgiYmxvY2tRdW90ZVByZWZpeCIpLGUpOihzLmV4aXQoImJsb2NrUXVvdGVQcmVmaXgiKSxlKG8pKX19ZnVuY3Rpb24gV1JhKHMsZSx0KXtsZXQgYT10aGlzO3JldHVybiByO2Z1bmN0aW9uIHIobyl7cmV0dXJuIEh0KG8pP0t0KHMsbiwibGluZVByZWZpeCIsYS5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoImNvZGVJbmRlbnRlZCIpP3ZvaWQgMDo0KShvKTpuKG8pfWZ1bmN0aW9uIG4obyl7cmV0dXJuIHMuYXR0ZW1wdCh3aWUsZSx0KShvKX19ZnVuY3Rpb24gR1JhKHMpe3MuZXhpdCgiYmxvY2tRdW90ZSIpfXZhciB3aWUsSjd0PWcoKCk9PntpcigpO1ZhKCk7d2llPXtjb250aW51YXRpb246e3Rva2VuaXplOldSYX0sZXhpdDpHUmEsbmFtZToiYmxvY2tRdW90ZSIsdG9rZW5pemU6VVJhfTtpKFVSYSwidG9rZW5pemVCbG9ja1F1b3RlU3RhcnQiKTtpKFdSYSwidG9rZW5pemVCbG9ja1F1b3RlQ29udGludWF0aW9uIik7aShHUmEsImV4aXQiKX0pO2Z1bmN0aW9uIEtSYShzLGUsdCl7cmV0dXJuIGE7ZnVuY3Rpb24gYShuKXtyZXR1cm4gcy5lbnRlcigiY2hhcmFjdGVyRXNjYXBlIikscy5lbnRlcigiZXNjYXBlTWFya2VyIikscy5jb25zdW1lKG4pLHMuZXhpdCgiZXNjYXBlTWFya2VyIikscn1mdW5jdGlvbiByKG4pe3JldHVybiBCOHQobik/KHMuZW50ZXIoImNoYXJhY3RlckVzY2FwZVZhbHVlIikscy5jb25zdW1lKG4pLHMuZXhpdCgiY2hhcmFjdGVyRXNjYXBlVmFsdWUiKSxzLmV4aXQoImNoYXJhY3RlckVzY2FwZSIpLGUpOnQobil9fXZhciBraWUsZTl0PWcoKCk9PntWYSgpO2tpZT17bmFtZToiY2hhcmFjdGVyRXNjYXBlIix0b2tlbml6ZTpLUmF9O2koS1JhLCJ0b2tlbml6ZUNoYXJhY3RlckVzY2FwZSIpfSk7ZnVuY3Rpb24gWVJhKHMsZSx0KXtsZXQgYT10aGlzLHI9MCxuLG87cmV0dXJuIGw7ZnVuY3Rpb24gbChjKXtyZXR1cm4gcy5lbnRlcigiY2hhcmFjdGVyUmVmZXJlbmNlIikscy5lbnRlcigiY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VyIikscy5jb25zdW1lKGMpLHMuZXhpdCgiY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VyIikscH1mdW5jdGlvbiBwKGMpe3JldHVybiBjPT09MzU/KHMuZW50ZXIoImNoYXJhY3RlclJlZmVyZW5jZU1hcmtlck51bWVyaWMiKSxzLmNvbnN1bWUoYykscy5leGl0KCJjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJOdW1lcmljIiksZCk6KHMuZW50ZXIoImNoYXJhY3RlclJlZmVyZW5jZVZhbHVlIiksbj0zMSxvPUJpLHUoYykpfWZ1bmN0aW9uIGQoYyl7cmV0dXJuIGM9PT04OHx8Yz09PTEyMD8ocy5lbnRlcigiY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VySGV4YWRlY2ltYWwiKSxzLmNvbnN1bWUoYykscy5leGl0KCJjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJIZXhhZGVjaW1hbCIpLHMuZW50ZXIoImNoYXJhY3RlclJlZmVyZW5jZVZhbHVlIiksbj02LG89Rjh0LHUpOihzLmVudGVyKCJjaGFyYWN0ZXJSZWZlcmVuY2VWYWx1ZSIpLG49NyxvPW9rLHUoYykpfWZ1bmN0aW9uIHUoYyl7aWYoYz09PTU5JiZyKXtsZXQgYj1zLmV4aXQoImNoYXJhY3RlclJlZmVyZW5jZVZhbHVlIik7cmV0dXJuIG89PT1CaSYmIVpwKGEuc2xpY2VTZXJpYWxpemUoYikpP3QoYyk6KHMuZW50ZXIoImNoYXJhY3RlclJlZmVyZW5jZU1hcmtlciIpLHMuY29uc3VtZShjKSxzLmV4aXQoImNoYXJhY3RlclJlZmVyZW5jZU1hcmtlciIpLHMuZXhpdCgiY2hhcmFjdGVyUmVmZXJlbmNlIiksZSl9cmV0dXJuIG8oYykmJnIrKzxuPyhzLmNvbnN1bWUoYyksdSk6dChjKX19dmFyIFNpZSx0OXQ9ZygoKT0+e2RrKCk7VmEoKTtTaWU9e25hbWU6ImNoYXJhY3RlclJlZmVyZW5jZSIsdG9rZW5pemU6WVJhfTtpKFlSYSwidG9rZW5pemVDaGFyYWN0ZXJSZWZlcmVuY2UiKX0pO2Z1bmN0aW9uIFpSYShzLGUsdCl7bGV0IGE9dGhpcyxyPXtwYXJ0aWFsOiEwLHRva2VuaXplOkN9LG49MCxvPTAsbDtyZXR1cm4gcDtmdW5jdGlvbiBwKF8pe3JldHVybiBkKF8pfWZ1bmN0aW9uIGQoXyl7bGV0IE89YS5ldmVudHNbYS5ldmVudHMubGVuZ3RoLTFdO3JldHVybiBuPU8mJk9bMV0udHlwZT09PSJsaW5lUHJlZml4Ij9PWzJdLnNsaWNlU2VyaWFsaXplKE9bMV0sITApLmxlbmd0aDowLGw9XyxzLmVudGVyKCJjb2RlRmVuY2VkIikscy5lbnRlcigiY29kZUZlbmNlZEZlbmNlIikscy5lbnRlcigiY29kZUZlbmNlZEZlbmNlU2VxdWVuY2UiKSx1KF8pfWZ1bmN0aW9uIHUoXyl7cmV0dXJuIF89PT1sPyhvKysscy5jb25zdW1lKF8pLHUpOm88Mz90KF8pOihzLmV4aXQoImNvZGVGZW5jZWRGZW5jZVNlcXVlbmNlIiksSHQoXyk/S3QocyxjLCJ3aGl0ZXNwYWNlIikoXyk6YyhfKSl9ZnVuY3Rpb24gYyhfKXtyZXR1cm4gXz09PW51bGx8fHZ0KF8pPyhzLmV4aXQoImNvZGVGZW5jZWRGZW5jZSIpLGEuaW50ZXJydXB0P2UoXyk6cy5jaGVjayhhOXQsbSxOKShfKSk6KHMuZW50ZXIoImNvZGVGZW5jZWRGZW5jZUluZm8iKSxzLmVudGVyKCJjaHVua1N0cmluZyIse2NvbnRlbnRUeXBlOiJzdHJpbmcifSksYihfKSl9ZnVuY3Rpb24gYihfKXtyZXR1cm4gXz09PW51bGx8fHZ0KF8pPyhzLmV4aXQoImNodW5rU3RyaW5nIikscy5leGl0KCJjb2RlRmVuY2VkRmVuY2VJbmZvIiksYyhfKSk6SHQoXyk/KHMuZXhpdCgiY2h1bmtTdHJpbmciKSxzLmV4aXQoImNvZGVGZW5jZWRGZW5jZUluZm8iKSxLdChzLHYsIndoaXRlc3BhY2UiKShfKSk6Xz09PTk2JiZfPT09bD90KF8pOihzLmNvbnN1bWUoXyksYil9ZnVuY3Rpb24gdihfKXtyZXR1cm4gXz09PW51bGx8fHZ0KF8pP2MoXyk6KHMuZW50ZXIoImNvZGVGZW5jZWRGZW5jZU1ldGEiKSxzLmVudGVyKCJjaHVua1N0cmluZyIse2NvbnRlbnRUeXBlOiJzdHJpbmcifSkseChfKSl9ZnVuY3Rpb24geChfKXtyZXR1cm4gXz09PW51bGx8fHZ0KF8pPyhzLmV4aXQoImNodW5rU3RyaW5nIikscy5leGl0KCJjb2RlRmVuY2VkRmVuY2VNZXRhIiksYyhfKSk6Xz09PTk2JiZfPT09bD90KF8pOihzLmNvbnN1bWUoXykseCl9ZnVuY3Rpb24gbShfKXtyZXR1cm4gcy5hdHRlbXB0KHIsTixmKShfKX1mdW5jdGlvbiBmKF8pe3JldHVybiBzLmVudGVyKCJsaW5lRW5kaW5nIikscy5jb25zdW1lKF8pLHMuZXhpdCgibGluZUVuZGluZyIpLHl9ZnVuY3Rpb24geShfKXtyZXR1cm4gbj4wJiZIdChfKT9LdChzLE0sImxpbmVQcmVmaXgiLG4rMSkoXyk6TShfKX1mdW5jdGlvbiBNKF8pe3JldHVybiBfPT09bnVsbHx8dnQoXyk/cy5jaGVjayhhOXQsbSxOKShfKToocy5lbnRlcigiY29kZUZsb3dWYWx1ZSIpLHooXykpfWZ1bmN0aW9uIHooXyl7cmV0dXJuIF89PT1udWxsfHx2dChfKT8ocy5leGl0KCJjb2RlRmxvd1ZhbHVlIiksTShfKSk6KHMuY29uc3VtZShfKSx6KX1mdW5jdGlvbiBOKF8pe3JldHVybiBzLmV4aXQoImNvZGVGZW5jZWQiKSxlKF8pfWZ1bmN0aW9uIEMoXyxPLCQpe2xldCBFPTA7cmV0dXJuIEg7ZnVuY3Rpb24gSChSKXtyZXR1cm4gXy5lbnRlcigibGluZUVuZGluZyIpLF8uY29uc3VtZShSKSxfLmV4aXQoImxpbmVFbmRpbmciKSxrfWZ1bmN0aW9uIGsoUil7cmV0dXJuIF8uZW50ZXIoImNvZGVGZW5jZWRGZW5jZSIpLEh0KFIpP0t0KF8sUywibGluZVByZWZpeCIsYS5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoImNvZGVJbmRlbnRlZCIpP3ZvaWQgMDo0KShSKTpTKFIpfWZ1bmN0aW9uIFMoUil7cmV0dXJuIFI9PT1sPyhfLmVudGVyKCJjb2RlRmVuY2VkRmVuY2VTZXF1ZW5jZSIpLEkoUikpOiQoUil9ZnVuY3Rpb24gSShSKXtyZXR1cm4gUj09PWw/KEUrKyxfLmNvbnN1bWUoUiksSSk6RT49bz8oXy5leGl0KCJjb2RlRmVuY2VkRmVuY2VTZXF1ZW5jZSIpLEh0KFIpP0t0KF8sUCwid2hpdGVzcGFjZSIpKFIpOlAoUikpOiQoUil9ZnVuY3Rpb24gUChSKXtyZXR1cm4gUj09PW51bGx8fHZ0KFIpPyhfLmV4aXQoImNvZGVGZW5jZWRGZW5jZSIpLE8oUikpOiQoUil9fX1mdW5jdGlvbiBYUmEocyxlLHQpe2xldCBhPXRoaXM7cmV0dXJuIHI7ZnVuY3Rpb24gcihvKXtyZXR1cm4gbz09PW51bGw/dChvKToocy5lbnRlcigibGluZUVuZGluZyIpLHMuY29uc3VtZShvKSxzLmV4aXQoImxpbmVFbmRpbmciKSxuKX1mdW5jdGlvbiBuKG8pe3JldHVybiBhLnBhcnNlci5sYXp5W2Eubm93KCkubGluZV0/dChvKTplKG8pfX12YXIgYTl0LF9pZSxzOXQ9ZygoKT0+e2lyKCk7VmEoKTthOXQ9e3BhcnRpYWw6ITAsdG9rZW5pemU6WFJhfSxfaWU9e2NvbmNyZXRlOiEwLG5hbWU6ImNvZGVGZW5jZWQiLHRva2VuaXplOlpSYX07aShaUmEsInRva2VuaXplQ29kZUZlbmNlZCIpO2koWFJhLCJ0b2tlbml6ZU5vbkxhenlDb250aW51YXRpb24iKX0pO2Z1bmN0aW9uIEpSYShzLGUsdCl7bGV0IGE9dGhpcztyZXR1cm4gcjtmdW5jdGlvbiByKGQpe3JldHVybiBzLmVudGVyKCJjb2RlSW5kZW50ZWQiKSxLdChzLG4sImxpbmVQcmVmaXgiLDUpKGQpfWZ1bmN0aW9uIG4oZCl7bGV0IHU9YS5ldmVudHNbYS5ldmVudHMubGVuZ3RoLTFdO3JldHVybiB1JiZ1WzFdLnR5cGU9PT0ibGluZVByZWZpeCImJnVbMl0uc2xpY2VTZXJpYWxpemUodVsxXSwhMCkubGVuZ3RoPj00P28oZCk6dChkKX1mdW5jdGlvbiBvKGQpe3JldHVybiBkPT09bnVsbD9wKGQpOnZ0KGQpP3MuYXR0ZW1wdChRUmEsbyxwKShkKToocy5lbnRlcigiY29kZUZsb3dWYWx1ZSIpLGwoZCkpfWZ1bmN0aW9uIGwoZCl7cmV0dXJuIGQ9PT1udWxsfHx2dChkKT8ocy5leGl0KCJjb2RlRmxvd1ZhbHVlIiksbyhkKSk6KHMuY29uc3VtZShkKSxsKX1mdW5jdGlvbiBwKGQpe3JldHVybiBzLmV4aXQoImNvZGVJbmRlbnRlZCIpLGUoZCl9fWZ1bmN0aW9uIGVPYShzLGUsdCl7bGV0IGE9dGhpcztyZXR1cm4gcjtmdW5jdGlvbiByKG8pe3JldHVybiBhLnBhcnNlci5sYXp5W2Eubm93KCkubGluZV0/dChvKTp2dChvKT8ocy5lbnRlcigibGluZUVuZGluZyIpLHMuY29uc3VtZShvKSxzLmV4aXQoImxpbmVFbmRpbmciKSxyKTpLdChzLG4sImxpbmVQcmVmaXgiLDUpKG8pfWZ1bmN0aW9uIG4obyl7bGV0IGw9YS5ldmVudHNbYS5ldmVudHMubGVuZ3RoLTFdO3JldHVybiBsJiZsWzFdLnR5cGU9PT0ibGluZVByZWZpeCImJmxbMl0uc2xpY2VTZXJpYWxpemUobFsxXSwhMCkubGVuZ3RoPj00P2Uobyk6dnQobyk/cihvKTp0KG8pfX12YXIgaGssUVJhLGk5dD1nKCgpPT57aXIoKTtWYSgpO2hrPXtuYW1lOiJjb2RlSW5kZW50ZWQiLHRva2VuaXplOkpSYX0sUVJhPXtwYXJ0aWFsOiEwLHRva2VuaXplOmVPYX07aShKUmEsInRva2VuaXplQ29kZUluZGVudGVkIik7aShlT2EsInRva2VuaXplRnVydGhlclN0YXJ0Iil9KTtmdW5jdGlvbiB0T2Eocyl7bGV0IGU9cy5sZW5ndGgtNCx0PTMsYSxyO2lmKChzW3RdWzFdLnR5cGU9PT0ibGluZUVuZGluZyJ8fHNbdF1bMV0udHlwZT09PSJzcGFjZSIpJiYoc1tlXVsxXS50eXBlPT09ImxpbmVFbmRpbmcifHxzW2VdWzFdLnR5cGU9PT0ic3BhY2UiKSl7Zm9yKGE9dDsrK2E8ZTspaWYoc1thXVsxXS50eXBlPT09ImNvZGVUZXh0RGF0YSIpe3NbdF1bMV0udHlwZT0iY29kZVRleHRQYWRkaW5nIixzW2VdWzFdLnR5cGU9ImNvZGVUZXh0UGFkZGluZyIsdCs9MixlLT0yO2JyZWFrfX1mb3IoYT10LTEsZSsrOysrYTw9ZTspcj09PXZvaWQgMD9hIT09ZSYmc1thXVsxXS50eXBlIT09ImxpbmVFbmRpbmciJiYocj1hKTooYT09PWV8fHNbYV1bMV0udHlwZT09PSJsaW5lRW5kaW5nIikmJihzW3JdWzFdLnR5cGU9ImNvZGVUZXh0RGF0YSIsYSE9PXIrMiYmKHNbcl1bMV0uZW5kPXNbYS0xXVsxXS5lbmQscy5zcGxpY2UocisyLGEtci0yKSxlLT1hLXItMixhPXIrMikscj12b2lkIDApO3JldHVybiBzfWZ1bmN0aW9uIGFPYShzKXtyZXR1cm4gcyE9PTk2fHx0aGlzLmV2ZW50c1t0aGlzLmV2ZW50cy5sZW5ndGgtMV1bMV0udHlwZT09PSJjaGFyYWN0ZXJFc2NhcGUifWZ1bmN0aW9uIHNPYShzLGUsdCl7bGV0IGE9dGhpcyxyPTAsbixvO3JldHVybiBsO2Z1bmN0aW9uIGwoYil7cmV0dXJuIHMuZW50ZXIoImNvZGVUZXh0Iikscy5lbnRlcigiY29kZVRleHRTZXF1ZW5jZSIpLHAoYil9ZnVuY3Rpb24gcChiKXtyZXR1cm4gYj09PTk2PyhzLmNvbnN1bWUoYikscisrLHApOihzLmV4aXQoImNvZGVUZXh0U2VxdWVuY2UiKSxkKGIpKX1mdW5jdGlvbiBkKGIpe3JldHVybiBiPT09bnVsbD90KGIpOmI9PT0zMj8ocy5lbnRlcigic3BhY2UiKSxzLmNvbnN1bWUoYikscy5leGl0KCJzcGFjZSIpLGQpOmI9PT05Nj8obz1zLmVudGVyKCJjb2RlVGV4dFNlcXVlbmNlIiksbj0wLGMoYikpOnZ0KGIpPyhzLmVudGVyKCJsaW5lRW5kaW5nIikscy5jb25zdW1lKGIpLHMuZXhpdCgibGluZUVuZGluZyIpLGQpOihzLmVudGVyKCJjb2RlVGV4dERhdGEiKSx1KGIpKX1mdW5jdGlvbiB1KGIpe3JldHVybiBiPT09bnVsbHx8Yj09PTMyfHxiPT09OTZ8fHZ0KGIpPyhzLmV4aXQoImNvZGVUZXh0RGF0YSIpLGQoYikpOihzLmNvbnN1bWUoYiksdSl9ZnVuY3Rpb24gYyhiKXtyZXR1cm4gYj09PTk2PyhzLmNvbnN1bWUoYiksbisrLGMpOm49PT1yPyhzLmV4aXQoImNvZGVUZXh0U2VxdWVuY2UiKSxzLmV4aXQoImNvZGVUZXh0IiksZShiKSk6KG8udHlwZT0iY29kZVRleHREYXRhIix1KGIpKX19dmFyIFdmZSxyOXQ9ZygoKT0+e1ZhKCk7V2ZlPXtuYW1lOiJjb2RlVGV4dCIscHJldmlvdXM6YU9hLHJlc29sdmU6dE9hLHRva2VuaXplOnNPYX07aSh0T2EsInJlc29sdmVDb2RlVGV4dCIpO2koYU9hLCJwcmV2aW91cyIpO2koc09hLCJ0b2tlbml6ZUNvZGVUZXh0Iil9KTtmdW5jdGlvbiBmayhzLGUpe2xldCB0PTA7aWYoZS5sZW5ndGg8MWU0KXMucHVzaCguLi5lKTtlbHNlIGZvcig7dDxlLmxlbmd0aDspcy5wdXNoKC4uLmUuc2xpY2UodCx0KzFlNCkpLHQrPTFlNH12YXIgbWssR2ZlPWcoKCk9Pnttaz1jbGFzc3tzdGF0aWN7aSh0aGlzLCJTcGxpY2VCdWZmZXIiKX1jb25zdHJ1Y3RvcihlKXt0aGlzLmxlZnQ9ZT9bLi4uZV06W10sdGhpcy5yaWdodD1bXX1nZXQoZSl7aWYoZTwwfHxlPj10aGlzLmxlZnQubGVuZ3RoK3RoaXMucmlnaHQubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJDYW5ub3QgYWNjZXNzIGluZGV4IGAiK2UrImAgaW4gYSBzcGxpY2UgYnVmZmVyIG9mIHNpemUgYCIrKHRoaXMubGVmdC5sZW5ndGgrdGhpcy5yaWdodC5sZW5ndGgpKyJgIik7cmV0dXJuIGU8dGhpcy5sZWZ0Lmxlbmd0aD90aGlzLmxlZnRbZV06dGhpcy5yaWdodFt0aGlzLnJpZ2h0Lmxlbmd0aC1lK3RoaXMubGVmdC5sZW5ndGgtMV19Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmxlZnQubGVuZ3RoK3RoaXMucmlnaHQubGVuZ3RofXNoaWZ0KCl7cmV0dXJuIHRoaXMuc2V0Q3Vyc29yKDApLHRoaXMucmlnaHQucG9wKCl9c2xpY2UoZSx0KXtsZXQgYT10Pz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7cmV0dXJuIGE8dGhpcy5sZWZ0Lmxlbmd0aD90aGlzLmxlZnQuc2xpY2UoZSxhKTplPnRoaXMubGVmdC5sZW5ndGg/dGhpcy5yaWdodC5zbGljZSh0aGlzLnJpZ2h0Lmxlbmd0aC1hK3RoaXMubGVmdC5sZW5ndGgsdGhpcy5yaWdodC5sZW5ndGgtZSt0aGlzLmxlZnQubGVuZ3RoKS5yZXZlcnNlKCk6dGhpcy5sZWZ0LnNsaWNlKGUpLmNvbmNhdCh0aGlzLnJpZ2h0LnNsaWNlKHRoaXMucmlnaHQubGVuZ3RoLWErdGhpcy5sZWZ0Lmxlbmd0aCkucmV2ZXJzZSgpKX1zcGxpY2UoZSx0LGEpe2xldCByPXR8fDA7dGhpcy5zZXRDdXJzb3IoTWF0aC50cnVuYyhlKSk7bGV0IG49dGhpcy5yaWdodC5zcGxpY2UodGhpcy5yaWdodC5sZW5ndGgtcixOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpO3JldHVybiBhJiZmayh0aGlzLmxlZnQsYSksbi5yZXZlcnNlKCl9cG9wKCl7cmV0dXJuIHRoaXMuc2V0Q3Vyc29yKE51bWJlci5QT1NJVElWRV9JTkZJTklUWSksdGhpcy5sZWZ0LnBvcCgpfXB1c2goZSl7dGhpcy5zZXRDdXJzb3IoTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKSx0aGlzLmxlZnQucHVzaChlKX1wdXNoTWFueShlKXt0aGlzLnNldEN1cnNvcihOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpLGZrKHRoaXMubGVmdCxlKX11bnNoaWZ0KGUpe3RoaXMuc2V0Q3Vyc29yKDApLHRoaXMucmlnaHQucHVzaChlKX11bnNoaWZ0TWFueShlKXt0aGlzLnNldEN1cnNvcigwKSxmayh0aGlzLnJpZ2h0LGUucmV2ZXJzZSgpKX1zZXRDdXJzb3IoZSl7aWYoIShlPT09dGhpcy5sZWZ0Lmxlbmd0aHx8ZT50aGlzLmxlZnQubGVuZ3RoJiZ0aGlzLnJpZ2h0Lmxlbmd0aD09PTB8fGU8MCYmdGhpcy5sZWZ0Lmxlbmd0aD09PTApKWlmKGU8dGhpcy5sZWZ0Lmxlbmd0aCl7bGV0IHQ9dGhpcy5sZWZ0LnNwbGljZShlLE51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7ZmsodGhpcy5yaWdodCx0LnJldmVyc2UoKSl9ZWxzZXtsZXQgdD10aGlzLnJpZ2h0LnNwbGljZSh0aGlzLmxlZnQubGVuZ3RoK3RoaXMucmlnaHQubGVuZ3RoLWUsTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKTtmayh0aGlzLmxlZnQsdC5yZXZlcnNlKCkpfX19O2koZmssImNodW5rZWRQdXNoIil9KTtmdW5jdGlvbiBNaWUocyl7bGV0IGU9e30sdD0tMSxhLHIsbixvLGwscCxkLHU9bmV3IG1rKHMpO2Zvcig7Kyt0PHUubGVuZ3RoOyl7Zm9yKDt0IGluIGU7KXQ9ZVt0XTtpZihhPXUuZ2V0KHQpLHQmJmFbMV0udHlwZT09PSJjaHVua0Zsb3ciJiZ1LmdldCh0LTEpWzFdLnR5cGU9PT0ibGlzdEl0ZW1QcmVmaXgiJiYocD1hWzFdLl90b2tlbml6ZXIuZXZlbnRzLG49MCxuPHAubGVuZ3RoJiZwW25dWzFdLnR5cGU9PT0ibGluZUVuZGluZ0JsYW5rIiYmKG4rPTIpLG48cC5sZW5ndGgmJnBbbl1bMV0udHlwZT09PSJjb250ZW50IikpZm9yKDsrK248cC5sZW5ndGgmJnBbbl1bMV0udHlwZSE9PSJjb250ZW50IjspcFtuXVsxXS50eXBlPT09ImNodW5rVGV4dCImJihwW25dWzFdLl9pc0luRmlyc3RDb250ZW50T2ZMaXN0SXRlbT0hMCxuKyspO2lmKGFbMF09PT0iZW50ZXIiKWFbMV0uY29udGVudFR5cGUmJihPYmplY3QuYXNzaWduKGUsaU9hKHUsdCkpLHQ9ZVt0XSxkPSEwKTtlbHNlIGlmKGFbMV0uX2NvbnRhaW5lcil7Zm9yKG49dCxyPXZvaWQgMDtuLS07KWlmKG89dS5nZXQobiksb1sxXS50eXBlPT09ImxpbmVFbmRpbmcifHxvWzFdLnR5cGU9PT0ibGluZUVuZGluZ0JsYW5rIilvWzBdPT09ImVudGVyIiYmKHImJih1LmdldChyKVsxXS50eXBlPSJsaW5lRW5kaW5nQmxhbmsiKSxvWzFdLnR5cGU9ImxpbmVFbmRpbmciLHI9bik7ZWxzZSBpZighKG9bMV0udHlwZT09PSJsaW5lUHJlZml4Inx8b1sxXS50eXBlPT09Imxpc3RJdGVtSW5kZW50IikpYnJlYWs7ciYmKGFbMV0uZW5kPXsuLi51LmdldChyKVsxXS5zdGFydH0sbD11LnNsaWNlKHIsdCksbC51bnNoaWZ0KGEpLHUuc3BsaWNlKHIsdC1yKzEsbCkpfX1yZXR1cm4gc3IocywwLE51bWJlci5QT1NJVElWRV9JTkZJTklUWSx1LnNsaWNlKDApKSwhZH1mdW5jdGlvbiBpT2EocyxlKXtsZXQgdD1zLmdldChlKVsxXSxhPXMuZ2V0KGUpWzJdLHI9ZS0xLG49W10sbz10Ll90b2tlbml6ZXI7b3x8KG89YS5wYXJzZXJbdC5jb250ZW50VHlwZV0odC5zdGFydCksdC5fY29udGVudFR5cGVUZXh0VHJhaWxpbmcmJihvLl9jb250ZW50VHlwZVRleHRUcmFpbGluZz0hMCkpO2xldCBsPW8uZXZlbnRzLHA9W10sZD17fSx1LGMsYj0tMSx2PXQseD0wLG09MCxmPVttXTtmb3IoO3Y7KXtmb3IoO3MuZ2V0KCsrcilbMV0hPT12Oyk7bi5wdXNoKHIpLHYuX3Rva2VuaXplcnx8KHU9YS5zbGljZVN0cmVhbSh2KSx2Lm5leHR8fHUucHVzaChudWxsKSxjJiZvLmRlZmluZVNraXAodi5zdGFydCksdi5faXNJbkZpcnN0Q29udGVudE9mTGlzdEl0ZW0mJihvLl9nZm1UYXNrbGlzdEZpcnN0Q29udGVudE9mTGlzdEl0ZW09ITApLG8ud3JpdGUodSksdi5faXNJbkZpcnN0Q29udGVudE9mTGlzdEl0ZW0mJihvLl9nZm1UYXNrbGlzdEZpcnN0Q29udGVudE9mTGlzdEl0ZW09dm9pZCAwKSksYz12LHY9di5uZXh0fWZvcih2PXQ7KytiPGwubGVuZ3RoOylsW2JdWzBdPT09ImV4aXQiJiZsW2ItMV1bMF09PT0iZW50ZXIiJiZsW2JdWzFdLnR5cGU9PT1sW2ItMV1bMV0udHlwZSYmbFtiXVsxXS5zdGFydC5saW5lIT09bFtiXVsxXS5lbmQubGluZSYmKG09YisxLGYucHVzaChtKSx2Ll90b2tlbml6ZXI9dm9pZCAwLHYucHJldmlvdXM9dm9pZCAwLHY9di5uZXh0KTtmb3Ioby5ldmVudHM9W10sdj8odi5fdG9rZW5pemVyPXZvaWQgMCx2LnByZXZpb3VzPXZvaWQgMCk6Zi5wb3AoKSxiPWYubGVuZ3RoO2ItLTspe2xldCB5PWwuc2xpY2UoZltiXSxmW2IrMV0pLE09bi5wb3AoKTtwLnB1c2goW00sTSt5Lmxlbmd0aC0xXSkscy5zcGxpY2UoTSwyLHkpfWZvcihwLnJldmVyc2UoKSxiPS0xOysrYjxwLmxlbmd0aDspZFt4K3BbYl1bMF1dPXgrcFtiXVsxXSx4Kz1wW2JdWzFdLXBbYl1bMF0tMTtyZXR1cm4gZH12YXIgS2ZlPWcoKCk9PntiZCgpO0dmZSgpO0dmZSgpO2koTWllLCJzdWJ0b2tlbml6ZSIpO2koaU9hLCJzdWJjb250ZW50Iil9KTtmdW5jdGlvbiBvT2Eocyl7cmV0dXJuIE1pZShzKSxzfWZ1bmN0aW9uIG5PYShzLGUpe2xldCB0O3JldHVybiBhO2Z1bmN0aW9uIGEobCl7cmV0dXJuIHMuZW50ZXIoImNvbnRlbnQiKSx0PXMuZW50ZXIoImNodW5rQ29udGVudCIse2NvbnRlbnRUeXBlOiJjb250ZW50In0pLHIobCl9ZnVuY3Rpb24gcihsKXtyZXR1cm4gbD09PW51bGw/bihsKTp2dChsKT9zLmNoZWNrKHJPYSxvLG4pKGwpOihzLmNvbnN1bWUobCkscil9ZnVuY3Rpb24gbihsKXtyZXR1cm4gcy5leGl0KCJjaHVua0NvbnRlbnQiKSxzLmV4aXQoImNvbnRlbnQiKSxlKGwpfWZ1bmN0aW9uIG8obCl7cmV0dXJuIHMuY29uc3VtZShsKSxzLmV4aXQoImNodW5rQ29udGVudCIpLHQubmV4dD1zLmVudGVyKCJjaHVua0NvbnRlbnQiLHtjb250ZW50VHlwZToiY29udGVudCIscHJldmlvdXM6dH0pLHQ9dC5uZXh0LHJ9fWZ1bmN0aW9uIGxPYShzLGUsdCl7bGV0IGE9dGhpcztyZXR1cm4gcjtmdW5jdGlvbiByKG8pe3JldHVybiBzLmV4aXQoImNodW5rQ29udGVudCIpLHMuZW50ZXIoImxpbmVFbmRpbmciKSxzLmNvbnN1bWUobykscy5leGl0KCJsaW5lRW5kaW5nIiksS3QocyxuLCJsaW5lUHJlZml4Iil9ZnVuY3Rpb24gbihvKXtpZihvPT09bnVsbHx8dnQobykpcmV0dXJuIHQobyk7bGV0IGw9YS5ldmVudHNbYS5ldmVudHMubGVuZ3RoLTFdO3JldHVybiFhLnBhcnNlci5jb25zdHJ1Y3RzLmRpc2FibGUubnVsbC5pbmNsdWRlcygiY29kZUluZGVudGVkIikmJmwmJmxbMV0udHlwZT09PSJsaW5lUHJlZml4IiYmbFsyXS5zbGljZVNlcmlhbGl6ZShsWzFdLCEwKS5sZW5ndGg+PTQ/ZShvKTpzLmludGVycnVwdChhLnBhcnNlci5jb25zdHJ1Y3RzLmZsb3csdCxlKShvKX19dmFyIFlmZSxyT2Esbzl0PWcoKCk9PntpcigpO1ZhKCk7S2ZlKCk7WWZlPXtyZXNvbHZlOm9PYSx0b2tlbml6ZTpuT2F9LHJPYT17cGFydGlhbDohMCx0b2tlbml6ZTpsT2F9O2kob09hLCJyZXNvbHZlQ29udGVudCIpO2kobk9hLCJ0b2tlbml6ZUNvbnRlbnQiKTtpKGxPYSwidG9rZW5pemVDb250aW51YXRpb24iKX0pO2Z1bmN0aW9uIHppZShzLGUsdCxhLHIsbixvLGwscCl7bGV0IGQ9cHx8TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLHU9MDtyZXR1cm4gYztmdW5jdGlvbiBjKHkpe3JldHVybiB5PT09NjA/KHMuZW50ZXIoYSkscy5lbnRlcihyKSxzLmVudGVyKG4pLHMuY29uc3VtZSh5KSxzLmV4aXQobiksYik6eT09PW51bGx8fHk9PT0zMnx8eT09PTQxfHxTMyh5KT90KHkpOihzLmVudGVyKGEpLHMuZW50ZXIobykscy5lbnRlcihsKSxzLmVudGVyKCJjaHVua1N0cmluZyIse2NvbnRlbnRUeXBlOiJzdHJpbmcifSksbSh5KSl9ZnVuY3Rpb24gYih5KXtyZXR1cm4geT09PTYyPyhzLmVudGVyKG4pLHMuY29uc3VtZSh5KSxzLmV4aXQobikscy5leGl0KHIpLHMuZXhpdChhKSxlKToocy5lbnRlcihsKSxzLmVudGVyKCJjaHVua1N0cmluZyIse2NvbnRlbnRUeXBlOiJzdHJpbmcifSksdih5KSl9ZnVuY3Rpb24gdih5KXtyZXR1cm4geT09PTYyPyhzLmV4aXQoImNodW5rU3RyaW5nIikscy5leGl0KGwpLGIoeSkpOnk9PT1udWxsfHx5PT09NjB8fHZ0KHkpP3QoeSk6KHMuY29uc3VtZSh5KSx5PT09OTI/eDp2KX1mdW5jdGlvbiB4KHkpe3JldHVybiB5PT09NjB8fHk9PT02Mnx8eT09PTkyPyhzLmNvbnN1bWUoeSksdik6dih5KX1mdW5jdGlvbiBtKHkpe3JldHVybiF1JiYoeT09PW51bGx8fHk9PT00MXx8QWEoeSkpPyhzLmV4aXQoImNodW5rU3RyaW5nIikscy5leGl0KGwpLHMuZXhpdChvKSxzLmV4aXQoYSksZSh5KSk6dTxkJiZ5PT09NDA/KHMuY29uc3VtZSh5KSx1KyssbSk6eT09PTQxPyhzLmNvbnN1bWUoeSksdS0tLG0pOnk9PT1udWxsfHx5PT09MzJ8fHk9PT00MHx8UzMoeSk/dCh5KToocy5jb25zdW1lKHkpLHk9PT05Mj9mOm0pfWZ1bmN0aW9uIGYoeSl7cmV0dXJuIHk9PT00MHx8eT09PTQxfHx5PT09OTI/KHMuY29uc3VtZSh5KSxtKTptKHkpfX12YXIgWmZlPWcoKCk9PntWYSgpO2koemllLCJmYWN0b3J5RGVzdGluYXRpb24iKX0pO2Z1bmN0aW9uIENpZShzLGUsdCxhLHIsbil7bGV0IG89dGhpcyxsPTAscDtyZXR1cm4gZDtmdW5jdGlvbiBkKHYpe3JldHVybiBzLmVudGVyKGEpLHMuZW50ZXIocikscy5jb25zdW1lKHYpLHMuZXhpdChyKSxzLmVudGVyKG4pLHV9ZnVuY3Rpb24gdSh2KXtyZXR1cm4gbD45OTl8fHY9PT1udWxsfHx2PT09OTF8fHY9PT05MyYmIXB8fHY9PT05NCYmIWwmJiJfaGlkZGVuRm9vdG5vdGVTdXBwb3J0ImluIG8ucGFyc2VyLmNvbnN0cnVjdHM/dCh2KTp2PT09OTM/KHMuZXhpdChuKSxzLmVudGVyKHIpLHMuY29uc3VtZSh2KSxzLmV4aXQocikscy5leGl0KGEpLGUpOnZ0KHYpPyhzLmVudGVyKCJsaW5lRW5kaW5nIikscy5jb25zdW1lKHYpLHMuZXhpdCgibGluZUVuZGluZyIpLHUpOihzLmVudGVyKCJjaHVua1N0cmluZyIse2NvbnRlbnRUeXBlOiJzdHJpbmcifSksYyh2KSl9ZnVuY3Rpb24gYyh2KXtyZXR1cm4gdj09PW51bGx8fHY9PT05MXx8dj09PTkzfHx2dCh2KXx8bCsrPjk5OT8ocy5leGl0KCJjaHVua1N0cmluZyIpLHUodikpOihzLmNvbnN1bWUodikscHx8KHA9IUh0KHYpKSx2PT09OTI/YjpjKX1mdW5jdGlvbiBiKHYpe3JldHVybiB2PT09OTF8fHY9PT05Mnx8dj09PTkzPyhzLmNvbnN1bWUodiksbCsrLGMpOmModil9fXZhciBYZmU9ZygoKT0+e1ZhKCk7aShDaWUsImZhY3RvcnlMYWJlbCIpfSk7ZnVuY3Rpb24gVGllKHMsZSx0LGEscixuKXtsZXQgbztyZXR1cm4gbDtmdW5jdGlvbiBsKGIpe3JldHVybiBiPT09MzR8fGI9PT0zOXx8Yj09PTQwPyhzLmVudGVyKGEpLHMuZW50ZXIocikscy5jb25zdW1lKGIpLHMuZXhpdChyKSxvPWI9PT00MD80MTpiLHApOnQoYil9ZnVuY3Rpb24gcChiKXtyZXR1cm4gYj09PW8/KHMuZW50ZXIocikscy5jb25zdW1lKGIpLHMuZXhpdChyKSxzLmV4aXQoYSksZSk6KHMuZW50ZXIobiksZChiKSl9ZnVuY3Rpb24gZChiKXtyZXR1cm4gYj09PW8/KHMuZXhpdChuKSxwKG8pKTpiPT09bnVsbD90KGIpOnZ0KGIpPyhzLmVudGVyKCJsaW5lRW5kaW5nIikscy5jb25zdW1lKGIpLHMuZXhpdCgibGluZUVuZGluZyIpLEt0KHMsZCwibGluZVByZWZpeCIpKToocy5lbnRlcigiY2h1bmtTdHJpbmciLHtjb250ZW50VHlwZToic3RyaW5nIn0pLHUoYikpfWZ1bmN0aW9uIHUoYil7cmV0dXJuIGI9PT1vfHxiPT09bnVsbHx8dnQoYik/KHMuZXhpdCgiY2h1bmtTdHJpbmciKSxkKGIpKToocy5jb25zdW1lKGIpLGI9PT05Mj9jOnUpfWZ1bmN0aW9uIGMoYil7cmV0dXJuIGI9PT1vfHxiPT09OTI/KHMuY29uc3VtZShiKSx1KTp1KGIpfX12YXIgUWZlPWcoKCk9PntpcigpO1ZhKCk7aShUaWUsImZhY3RvcnlUaXRsZSIpfSk7ZnVuY3Rpb24gRDMocyxlKXtsZXQgdDtyZXR1cm4gYTtmdW5jdGlvbiBhKHIpe3JldHVybiB2dChyKT8ocy5lbnRlcigibGluZUVuZGluZyIpLHMuY29uc3VtZShyKSxzLmV4aXQoImxpbmVFbmRpbmciKSx0PSEwLGEpOkh0KHIpP0t0KHMsYSx0PyJsaW5lUHJlZml4IjoibGluZVN1ZmZpeCIpKHIpOmUocil9fXZhciBKZmU9ZygoKT0+e2lyKCk7VmEoKTtpKEQzLCJmYWN0b3J5V2hpdGVzcGFjZSIpfSk7ZnVuY3Rpb24gZE9hKHMsZSx0KXtsZXQgYT10aGlzLHI7cmV0dXJuIG47ZnVuY3Rpb24gbih2KXtyZXR1cm4gcy5lbnRlcigiZGVmaW5pdGlvbiIpLG8odil9ZnVuY3Rpb24gbyh2KXtyZXR1cm4gQ2llLmNhbGwoYSxzLGwsdCwiZGVmaW5pdGlvbkxhYmVsIiwiZGVmaW5pdGlvbkxhYmVsTWFya2VyIiwiZGVmaW5pdGlvbkxhYmVsU3RyaW5nIikodil9ZnVuY3Rpb24gbCh2KXtyZXR1cm4gcj1IaShhLnNsaWNlU2VyaWFsaXplKGEuZXZlbnRzW2EuZXZlbnRzLmxlbmd0aC0xXVsxXSkuc2xpY2UoMSwtMSkpLHY9PT01OD8ocy5lbnRlcigiZGVmaW5pdGlvbk1hcmtlciIpLHMuY29uc3VtZSh2KSxzLmV4aXQoImRlZmluaXRpb25NYXJrZXIiKSxwKTp0KHYpfWZ1bmN0aW9uIHAodil7cmV0dXJuIEFhKHYpP0QzKHMsZCkodik6ZCh2KX1mdW5jdGlvbiBkKHYpe3JldHVybiB6aWUocyx1LHQsImRlZmluaXRpb25EZXN0aW5hdGlvbiIsImRlZmluaXRpb25EZXN0aW5hdGlvbkxpdGVyYWwiLCJkZWZpbml0aW9uRGVzdGluYXRpb25MaXRlcmFsTWFya2VyIiwiZGVmaW5pdGlvbkRlc3RpbmF0aW9uUmF3IiwiZGVmaW5pdGlvbkRlc3RpbmF0aW9uU3RyaW5nIikodil9ZnVuY3Rpb24gdSh2KXtyZXR1cm4gcy5hdHRlbXB0KGNPYSxjLGMpKHYpfWZ1bmN0aW9uIGModil7cmV0dXJuIEh0KHYpP0t0KHMsYiwid2hpdGVzcGFjZSIpKHYpOmIodil9ZnVuY3Rpb24gYih2KXtyZXR1cm4gdj09PW51bGx8fHZ0KHYpPyhzLmV4aXQoImRlZmluaXRpb24iKSxhLnBhcnNlci5kZWZpbmVkLnB1c2gociksZSh2KSk6dCh2KX19ZnVuY3Rpb24gdU9hKHMsZSx0KXtyZXR1cm4gYTtmdW5jdGlvbiBhKGwpe3JldHVybiBBYShsKT9EMyhzLHIpKGwpOnQobCl9ZnVuY3Rpb24gcihsKXtyZXR1cm4gVGllKHMsbix0LCJkZWZpbml0aW9uVGl0bGUiLCJkZWZpbml0aW9uVGl0bGVNYXJrZXIiLCJkZWZpbml0aW9uVGl0bGVTdHJpbmciKShsKX1mdW5jdGlvbiBuKGwpe3JldHVybiBIdChsKT9LdChzLG8sIndoaXRlc3BhY2UiKShsKTpvKGwpfWZ1bmN0aW9uIG8obCl7cmV0dXJuIGw9PT1udWxsfHx2dChsKT9lKGwpOnQobCl9fXZhciBlbWUsY09hLG45dD1nKCgpPT57WmZlKCk7WGZlKCk7aXIoKTtRZmUoKTtKZmUoKTtWYSgpO1lwKCk7ZW1lPXtuYW1lOiJkZWZpbml0aW9uIix0b2tlbml6ZTpkT2F9LGNPYT17cGFydGlhbDohMCx0b2tlbml6ZTp1T2F9O2koZE9hLCJ0b2tlbml6ZURlZmluaXRpb24iKTtpKHVPYSwidG9rZW5pemVUaXRsZUJlZm9yZSIpfSk7ZnVuY3Rpb24gcE9hKHMsZSx0KXtyZXR1cm4gYTtmdW5jdGlvbiBhKG4pe3JldHVybiBzLmVudGVyKCJoYXJkQnJlYWtFc2NhcGUiKSxzLmNvbnN1bWUobikscn1mdW5jdGlvbiByKG4pe3JldHVybiB2dChuKT8ocy5leGl0KCJoYXJkQnJlYWtFc2NhcGUiKSxlKG4pKTp0KG4pfX12YXIgdG1lLGw5dD1nKCgpPT57VmEoKTt0bWU9e25hbWU6ImhhcmRCcmVha0VzY2FwZSIsdG9rZW5pemU6cE9hfTtpKHBPYSwidG9rZW5pemVIYXJkQnJlYWtFc2NhcGUiKX0pO2Z1bmN0aW9uIGhPYShzLGUpe2xldCB0PXMubGVuZ3RoLTIsYT0zLHIsbjtyZXR1cm4gc1thXVsxXS50eXBlPT09IndoaXRlc3BhY2UiJiYoYSs9MiksdC0yPmEmJnNbdF1bMV0udHlwZT09PSJ3aGl0ZXNwYWNlIiYmKHQtPTIpLHNbdF1bMV0udHlwZT09PSJhdHhIZWFkaW5nU2VxdWVuY2UiJiYoYT09PXQtMXx8dC00PmEmJnNbdC0yXVsxXS50eXBlPT09IndoaXRlc3BhY2UiKSYmKHQtPWErMT09PXQ/Mjo0KSx0PmEmJihyPXt0eXBlOiJhdHhIZWFkaW5nVGV4dCIsc3RhcnQ6c1thXVsxXS5zdGFydCxlbmQ6c1t0XVsxXS5lbmR9LG49e3R5cGU6ImNodW5rVGV4dCIsc3RhcnQ6c1thXVsxXS5zdGFydCxlbmQ6c1t0XVsxXS5lbmQsY29udGVudFR5cGU6InRleHQifSxzcihzLGEsdC1hKzEsW1siZW50ZXIiLHIsZV0sWyJlbnRlciIsbixlXSxbImV4aXQiLG4sZV0sWyJleGl0IixyLGVdXSkpLHN9ZnVuY3Rpb24gZk9hKHMsZSx0KXtsZXQgYT0wO3JldHVybiByO2Z1bmN0aW9uIHIodSl7cmV0dXJuIHMuZW50ZXIoImF0eEhlYWRpbmciKSxuKHUpfWZ1bmN0aW9uIG4odSl7cmV0dXJuIHMuZW50ZXIoImF0eEhlYWRpbmdTZXF1ZW5jZSIpLG8odSl9ZnVuY3Rpb24gbyh1KXtyZXR1cm4gdT09PTM1JiZhKys8Nj8ocy5jb25zdW1lKHUpLG8pOnU9PT1udWxsfHxBYSh1KT8ocy5leGl0KCJhdHhIZWFkaW5nU2VxdWVuY2UiKSxsKHUpKTp0KHUpfWZ1bmN0aW9uIGwodSl7cmV0dXJuIHU9PT0zNT8ocy5lbnRlcigiYXR4SGVhZGluZ1NlcXVlbmNlIikscCh1KSk6dT09PW51bGx8fHZ0KHUpPyhzLmV4aXQoImF0eEhlYWRpbmciKSxlKHUpKTpIdCh1KT9LdChzLGwsIndoaXRlc3BhY2UiKSh1KToocy5lbnRlcigiYXR4SGVhZGluZ1RleHQiKSxkKHUpKX1mdW5jdGlvbiBwKHUpe3JldHVybiB1PT09MzU/KHMuY29uc3VtZSh1KSxwKToocy5leGl0KCJhdHhIZWFkaW5nU2VxdWVuY2UiKSxsKHUpKX1mdW5jdGlvbiBkKHUpe3JldHVybiB1PT09bnVsbHx8dT09PTM1fHxBYSh1KT8ocy5leGl0KCJhdHhIZWFkaW5nVGV4dCIpLGwodSkpOihzLmNvbnN1bWUodSksZCl9fXZhciBhbWUsYzl0PWcoKCk9PntpcigpO1ZhKCk7YmQoKTthbWU9e25hbWU6ImhlYWRpbmdBdHgiLHJlc29sdmU6aE9hLHRva2VuaXplOmZPYX07aShoT2EsInJlc29sdmVIZWFkaW5nQXR4Iik7aShmT2EsInRva2VuaXplSGVhZGluZ0F0eCIpfSk7dmFyIGQ5dCxzbWUsdTl0PWcoKCk9PntkOXQ9WyJhZGRyZXNzIiwiYXJ0aWNsZSIsImFzaWRlIiwiYmFzZSIsImJhc2Vmb250IiwiYmxvY2txdW90ZSIsImJvZHkiLCJjYXB0aW9uIiwiY2VudGVyIiwiY29sIiwiY29sZ3JvdXAiLCJkZCIsImRldGFpbHMiLCJkaWFsb2ciLCJkaXIiLCJkaXYiLCJkbCIsImR0IiwiZmllbGRzZXQiLCJmaWdjYXB0aW9uIiwiZmlndXJlIiwiZm9vdGVyIiwiZm9ybSIsImZyYW1lIiwiZnJhbWVzZXQiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaGVhZGVyIiwiaHIiLCJodG1sIiwiaWZyYW1lIiwibGVnZW5kIiwibGkiLCJsaW5rIiwibWFpbiIsIm1lbnUiLCJtZW51aXRlbSIsIm5hdiIsIm5vZnJhbWVzIiwib2wiLCJvcHRncm91cCIsIm9wdGlvbiIsInAiLCJwYXJhbSIsInNlYXJjaCIsInNlY3Rpb24iLCJzdW1tYXJ5IiwidGFibGUiLCJ0Ym9keSIsInRkIiwidGZvb3QiLCJ0aCIsInRoZWFkIiwidGl0bGUiLCJ0ciIsInRyYWNrIiwidWwiXSxzbWU9WyJwcmUiLCJzY3JpcHQiLCJzdHlsZSIsInRleHRhcmVhIl19KTtmdW5jdGlvbiBiT2Eocyl7bGV0IGU9cy5sZW5ndGg7Zm9yKDtlLS0mJiEoc1tlXVswXT09PSJlbnRlciImJnNbZV1bMV0udHlwZT09PSJodG1sRmxvdyIpOyk7cmV0dXJuIGU+MSYmc1tlLTJdWzFdLnR5cGU9PT0ibGluZVByZWZpeCImJihzW2VdWzFdLnN0YXJ0PXNbZS0yXVsxXS5zdGFydCxzW2UrMV1bMV0uc3RhcnQ9c1tlLTJdWzFdLnN0YXJ0LHMuc3BsaWNlKGUtMiwyKSksc31mdW5jdGlvbiB2T2EocyxlLHQpe2xldCBhPXRoaXMscixuLG8sbCxwO3JldHVybiBkO2Z1bmN0aW9uIGQoRil7cmV0dXJuIHUoRil9ZnVuY3Rpb24gdShGKXtyZXR1cm4gcy5lbnRlcigiaHRtbEZsb3ciKSxzLmVudGVyKCJodG1sRmxvd0RhdGEiKSxzLmNvbnN1bWUoRiksY31mdW5jdGlvbiBjKEYpe3JldHVybiBGPT09MzM/KHMuY29uc3VtZShGKSxiKTpGPT09NDc/KHMuY29uc3VtZShGKSxuPSEwLG0pOkY9PT02Mz8ocy5jb25zdW1lKEYpLHI9MyxhLmludGVycnVwdD9lOkIpOlVyKEYpPyhzLmNvbnN1bWUoRiksbz1TdHJpbmcuZnJvbUNoYXJDb2RlKEYpLGYpOnQoRil9ZnVuY3Rpb24gYihGKXtyZXR1cm4gRj09PTQ1PyhzLmNvbnN1bWUoRikscj0yLHYpOkY9PT05MT8ocy5jb25zdW1lKEYpLHI9NSxsPTAseCk6VXIoRik/KHMuY29uc3VtZShGKSxyPTQsYS5pbnRlcnJ1cHQ/ZTpCKTp0KEYpfWZ1bmN0aW9uIHYoRil7cmV0dXJuIEY9PT00NT8ocy5jb25zdW1lKEYpLGEuaW50ZXJydXB0P2U6Qik6dChGKX1mdW5jdGlvbiB4KEYpe2xldCBqPSJDREFUQVsiO3JldHVybiBGPT09ai5jaGFyQ29kZUF0KGwrKyk/KHMuY29uc3VtZShGKSxsPT09ai5sZW5ndGg/YS5pbnRlcnJ1cHQ/ZTpTOngpOnQoRil9ZnVuY3Rpb24gbShGKXtyZXR1cm4gVXIoRik/KHMuY29uc3VtZShGKSxvPVN0cmluZy5mcm9tQ2hhckNvZGUoRiksZik6dChGKX1mdW5jdGlvbiBmKEYpe2lmKEY9PT1udWxsfHxGPT09NDd8fEY9PT02Mnx8QWEoRikpe2xldCBqPUY9PT00Nyx1ZT1vLnRvTG93ZXJDYXNlKCk7cmV0dXJuIWomJiFuJiZzbWUuaW5jbHVkZXModWUpPyhyPTEsYS5pbnRlcnJ1cHQ/ZShGKTpTKEYpKTpkOXQuaW5jbHVkZXMoby50b0xvd2VyQ2FzZSgpKT8ocj02LGo/KHMuY29uc3VtZShGKSx5KTphLmludGVycnVwdD9lKEYpOlMoRikpOihyPTcsYS5pbnRlcnJ1cHQmJiFhLnBhcnNlci5sYXp5W2Eubm93KCkubGluZV0/dChGKTpuP00oRik6eihGKSl9cmV0dXJuIEY9PT00NXx8QmkoRik/KHMuY29uc3VtZShGKSxvKz1TdHJpbmcuZnJvbUNoYXJDb2RlKEYpLGYpOnQoRil9ZnVuY3Rpb24geShGKXtyZXR1cm4gRj09PTYyPyhzLmNvbnN1bWUoRiksYS5pbnRlcnJ1cHQ/ZTpTKTp0KEYpfWZ1bmN0aW9uIE0oRil7cmV0dXJuIEh0KEYpPyhzLmNvbnN1bWUoRiksTSk6SChGKX1mdW5jdGlvbiB6KEYpe3JldHVybiBGPT09NDc/KHMuY29uc3VtZShGKSxIKTpGPT09NTh8fEY9PT05NXx8VXIoRik/KHMuY29uc3VtZShGKSxOKTpIdChGKT8ocy5jb25zdW1lKEYpLHopOkgoRil9ZnVuY3Rpb24gTihGKXtyZXR1cm4gRj09PTQ1fHxGPT09NDZ8fEY9PT01OHx8Rj09PTk1fHxCaShGKT8ocy5jb25zdW1lKEYpLE4pOkMoRil9ZnVuY3Rpb24gQyhGKXtyZXR1cm4gRj09PTYxPyhzLmNvbnN1bWUoRiksXyk6SHQoRik/KHMuY29uc3VtZShGKSxDKTp6KEYpfWZ1bmN0aW9uIF8oRil7cmV0dXJuIEY9PT1udWxsfHxGPT09NjB8fEY9PT02MXx8Rj09PTYyfHxGPT09OTY/dChGKTpGPT09MzR8fEY9PT0zOT8ocy5jb25zdW1lKEYpLHA9RixPKTpIdChGKT8ocy5jb25zdW1lKEYpLF8pOiQoRil9ZnVuY3Rpb24gTyhGKXtyZXR1cm4gRj09PXA/KHMuY29uc3VtZShGKSxwPW51bGwsRSk6Rj09PW51bGx8fHZ0KEYpP3QoRik6KHMuY29uc3VtZShGKSxPKX1mdW5jdGlvbiAkKEYpe3JldHVybiBGPT09bnVsbHx8Rj09PTM0fHxGPT09Mzl8fEY9PT00N3x8Rj09PTYwfHxGPT09NjF8fEY9PT02Mnx8Rj09PTk2fHxBYShGKT9DKEYpOihzLmNvbnN1bWUoRiksJCl9ZnVuY3Rpb24gRShGKXtyZXR1cm4gRj09PTQ3fHxGPT09NjJ8fEh0KEYpP3ooRik6dChGKX1mdW5jdGlvbiBIKEYpe3JldHVybiBGPT09NjI/KHMuY29uc3VtZShGKSxrKTp0KEYpfWZ1bmN0aW9uIGsoRil7cmV0dXJuIEY9PT1udWxsfHx2dChGKT9TKEYpOkh0KEYpPyhzLmNvbnN1bWUoRiksayk6dChGKX1mdW5jdGlvbiBTKEYpe3JldHVybiBGPT09NDUmJnI9PT0yPyhzLmNvbnN1bWUoRiksSyk6Rj09PTYwJiZyPT09MT8ocy5jb25zdW1lKEYpLFYpOkY9PT02MiYmcj09PTQ/KHMuY29uc3VtZShGKSxVKTpGPT09NjMmJnI9PT0zPyhzLmNvbnN1bWUoRiksQik6Rj09PTkzJiZyPT09NT8ocy5jb25zdW1lKEYpLG1lKTp2dChGKSYmKHI9PT02fHxyPT09Nyk/KHMuZXhpdCgiaHRtbEZsb3dEYXRhIikscy5jaGVjayhtT2EsaGUsSSkoRikpOkY9PT1udWxsfHx2dChGKT8ocy5leGl0KCJodG1sRmxvd0RhdGEiKSxJKEYpKToocy5jb25zdW1lKEYpLFMpfWZ1bmN0aW9uIEkoRil7cmV0dXJuIHMuY2hlY2soZ09hLFAsaGUpKEYpfWZ1bmN0aW9uIFAoRil7cmV0dXJuIHMuZW50ZXIoImxpbmVFbmRpbmciKSxzLmNvbnN1bWUoRikscy5leGl0KCJsaW5lRW5kaW5nIiksUn1mdW5jdGlvbiBSKEYpe3JldHVybiBGPT09bnVsbHx8dnQoRik/SShGKToocy5lbnRlcigiaHRtbEZsb3dEYXRhIiksUyhGKSl9ZnVuY3Rpb24gSyhGKXtyZXR1cm4gRj09PTQ1PyhzLmNvbnN1bWUoRiksQik6UyhGKX1mdW5jdGlvbiBWKEYpe3JldHVybiBGPT09NDc/KHMuY29uc3VtZShGKSxvPSIiLFcpOlMoRil9ZnVuY3Rpb24gVyhGKXtpZihGPT09NjIpe2xldCBqPW8udG9Mb3dlckNhc2UoKTtyZXR1cm4gc21lLmluY2x1ZGVzKGopPyhzLmNvbnN1bWUoRiksVSk6UyhGKX1yZXR1cm4gVXIoRikmJm8ubGVuZ3RoPDg/KHMuY29uc3VtZShGKSxvKz1TdHJpbmcuZnJvbUNoYXJDb2RlKEYpLFcpOlMoRil9ZnVuY3Rpb24gbWUoRil7cmV0dXJuIEY9PT05Mz8ocy5jb25zdW1lKEYpLEIpOlMoRil9ZnVuY3Rpb24gQihGKXtyZXR1cm4gRj09PTYyPyhzLmNvbnN1bWUoRiksVSk6Rj09PTQ1JiZyPT09Mj8ocy5jb25zdW1lKEYpLEIpOlMoRil9ZnVuY3Rpb24gVShGKXtyZXR1cm4gRj09PW51bGx8fHZ0KEYpPyhzLmV4aXQoImh0bWxGbG93RGF0YSIpLGhlKEYpKToocy5jb25zdW1lKEYpLFUpfWZ1bmN0aW9uIGhlKEYpe3JldHVybiBzLmV4aXQoImh0bWxGbG93IiksZShGKX19ZnVuY3Rpb24geE9hKHMsZSx0KXtsZXQgYT10aGlzO3JldHVybiByO2Z1bmN0aW9uIHIobyl7cmV0dXJuIHZ0KG8pPyhzLmVudGVyKCJsaW5lRW5kaW5nIikscy5jb25zdW1lKG8pLHMuZXhpdCgibGluZUVuZGluZyIpLG4pOnQobyl9ZnVuY3Rpb24gbihvKXtyZXR1cm4gYS5wYXJzZXIubGF6eVthLm5vdygpLmxpbmVdP3Qobyk6ZShvKX19ZnVuY3Rpb24geU9hKHMsZSx0KXtyZXR1cm4gYTtmdW5jdGlvbiBhKHIpe3JldHVybiBzLmVudGVyKCJsaW5lRW5kaW5nIikscy5jb25zdW1lKHIpLHMuZXhpdCgibGluZUVuZGluZyIpLHMuYXR0ZW1wdCh3ZCxlLHQpfX12YXIgaW1lLG1PYSxnT2EscDl0PWcoKCk9PntWYSgpO3U5dCgpO3lpZSgpO2ltZT17Y29uY3JldGU6ITAsbmFtZToiaHRtbEZsb3ciLHJlc29sdmVUbzpiT2EsdG9rZW5pemU6dk9hfSxtT2E9e3BhcnRpYWw6ITAsdG9rZW5pemU6eU9hfSxnT2E9e3BhcnRpYWw6ITAsdG9rZW5pemU6eE9hfTtpKGJPYSwicmVzb2x2ZVRvSHRtbEZsb3ciKTtpKHZPYSwidG9rZW5pemVIdG1sRmxvdyIpO2koeE9hLCJ0b2tlbml6ZU5vbkxhenlDb250aW51YXRpb25TdGFydCIpO2koeU9hLCJ0b2tlbml6ZUJsYW5rTGluZUJlZm9yZSIpfSk7ZnVuY3Rpb24gd09hKHMsZSx0KXtsZXQgYT10aGlzLHIsbixvO3JldHVybiBsO2Z1bmN0aW9uIGwoQil7cmV0dXJuIHMuZW50ZXIoImh0bWxUZXh0Iikscy5lbnRlcigiaHRtbFRleHREYXRhIikscy5jb25zdW1lKEIpLHB9ZnVuY3Rpb24gcChCKXtyZXR1cm4gQj09PTMzPyhzLmNvbnN1bWUoQiksZCk6Qj09PTQ3PyhzLmNvbnN1bWUoQiksQyk6Qj09PTYzPyhzLmNvbnN1bWUoQikseik6VXIoQik/KHMuY29uc3VtZShCKSwkKTp0KEIpfWZ1bmN0aW9uIGQoQil7cmV0dXJuIEI9PT00NT8ocy5jb25zdW1lKEIpLHUpOkI9PT05MT8ocy5jb25zdW1lKEIpLG49MCx4KTpVcihCKT8ocy5jb25zdW1lKEIpLE0pOnQoQil9ZnVuY3Rpb24gdShCKXtyZXR1cm4gQj09PTQ1PyhzLmNvbnN1bWUoQiksdik6dChCKX1mdW5jdGlvbiBjKEIpe3JldHVybiBCPT09bnVsbD90KEIpOkI9PT00NT8ocy5jb25zdW1lKEIpLGIpOnZ0KEIpPyhvPWMsVihCKSk6KHMuY29uc3VtZShCKSxjKX1mdW5jdGlvbiBiKEIpe3JldHVybiBCPT09NDU/KHMuY29uc3VtZShCKSx2KTpjKEIpfWZ1bmN0aW9uIHYoQil7cmV0dXJuIEI9PT02Mj9LKEIpOkI9PT00NT9iKEIpOmMoQil9ZnVuY3Rpb24geChCKXtsZXQgVT0iQ0RBVEFbIjtyZXR1cm4gQj09PVUuY2hhckNvZGVBdChuKyspPyhzLmNvbnN1bWUoQiksbj09PVUubGVuZ3RoP206eCk6dChCKX1mdW5jdGlvbiBtKEIpe3JldHVybiBCPT09bnVsbD90KEIpOkI9PT05Mz8ocy5jb25zdW1lKEIpLGYpOnZ0KEIpPyhvPW0sVihCKSk6KHMuY29uc3VtZShCKSxtKX1mdW5jdGlvbiBmKEIpe3JldHVybiBCPT09OTM/KHMuY29uc3VtZShCKSx5KTptKEIpfWZ1bmN0aW9uIHkoQil7cmV0dXJuIEI9PT02Mj9LKEIpOkI9PT05Mz8ocy5jb25zdW1lKEIpLHkpOm0oQil9ZnVuY3Rpb24gTShCKXtyZXR1cm4gQj09PW51bGx8fEI9PT02Mj9LKEIpOnZ0KEIpPyhvPU0sVihCKSk6KHMuY29uc3VtZShCKSxNKX1mdW5jdGlvbiB6KEIpe3JldHVybiBCPT09bnVsbD90KEIpOkI9PT02Mz8ocy5jb25zdW1lKEIpLE4pOnZ0KEIpPyhvPXosVihCKSk6KHMuY29uc3VtZShCKSx6KX1mdW5jdGlvbiBOKEIpe3JldHVybiBCPT09NjI/SyhCKTp6KEIpfWZ1bmN0aW9uIEMoQil7cmV0dXJuIFVyKEIpPyhzLmNvbnN1bWUoQiksXyk6dChCKX1mdW5jdGlvbiBfKEIpe3JldHVybiBCPT09NDV8fEJpKEIpPyhzLmNvbnN1bWUoQiksXyk6TyhCKX1mdW5jdGlvbiBPKEIpe3JldHVybiB2dChCKT8obz1PLFYoQikpOkh0KEIpPyhzLmNvbnN1bWUoQiksTyk6SyhCKX1mdW5jdGlvbiAkKEIpe3JldHVybiBCPT09NDV8fEJpKEIpPyhzLmNvbnN1bWUoQiksJCk6Qj09PTQ3fHxCPT09NjJ8fEFhKEIpP0UoQik6dChCKX1mdW5jdGlvbiBFKEIpe3JldHVybiBCPT09NDc/KHMuY29uc3VtZShCKSxLKTpCPT09NTh8fEI9PT05NXx8VXIoQik/KHMuY29uc3VtZShCKSxIKTp2dChCKT8obz1FLFYoQikpOkh0KEIpPyhzLmNvbnN1bWUoQiksRSk6SyhCKX1mdW5jdGlvbiBIKEIpe3JldHVybiBCPT09NDV8fEI9PT00Nnx8Qj09PTU4fHxCPT09OTV8fEJpKEIpPyhzLmNvbnN1bWUoQiksSCk6ayhCKX1mdW5jdGlvbiBrKEIpe3JldHVybiBCPT09NjE/KHMuY29uc3VtZShCKSxTKTp2dChCKT8obz1rLFYoQikpOkh0KEIpPyhzLmNvbnN1bWUoQiksayk6RShCKX1mdW5jdGlvbiBTKEIpe3JldHVybiBCPT09bnVsbHx8Qj09PTYwfHxCPT09NjF8fEI9PT02Mnx8Qj09PTk2P3QoQik6Qj09PTM0fHxCPT09Mzk/KHMuY29uc3VtZShCKSxyPUIsSSk6dnQoQik/KG89UyxWKEIpKTpIdChCKT8ocy5jb25zdW1lKEIpLFMpOihzLmNvbnN1bWUoQiksUCl9ZnVuY3Rpb24gSShCKXtyZXR1cm4gQj09PXI/KHMuY29uc3VtZShCKSxyPXZvaWQgMCxSKTpCPT09bnVsbD90KEIpOnZ0KEIpPyhvPUksVihCKSk6KHMuY29uc3VtZShCKSxJKX1mdW5jdGlvbiBQKEIpe3JldHVybiBCPT09bnVsbHx8Qj09PTM0fHxCPT09Mzl8fEI9PT02MHx8Qj09PTYxfHxCPT09OTY/dChCKTpCPT09NDd8fEI9PT02Mnx8QWEoQik/RShCKToocy5jb25zdW1lKEIpLFApfWZ1bmN0aW9uIFIoQil7cmV0dXJuIEI9PT00N3x8Qj09PTYyfHxBYShCKT9FKEIpOnQoQil9ZnVuY3Rpb24gSyhCKXtyZXR1cm4gQj09PTYyPyhzLmNvbnN1bWUoQikscy5leGl0KCJodG1sVGV4dERhdGEiKSxzLmV4aXQoImh0bWxUZXh0IiksZSk6dChCKX1mdW5jdGlvbiBWKEIpe3JldHVybiBzLmV4aXQoImh0bWxUZXh0RGF0YSIpLHMuZW50ZXIoImxpbmVFbmRpbmciKSxzLmNvbnN1bWUoQikscy5leGl0KCJsaW5lRW5kaW5nIiksV31mdW5jdGlvbiBXKEIpe3JldHVybiBIdChCKT9LdChzLG1lLCJsaW5lUHJlZml4IixhLnBhcnNlci5jb25zdHJ1Y3RzLmRpc2FibGUubnVsbC5pbmNsdWRlcygiY29kZUluZGVudGVkIik/dm9pZCAwOjQpKEIpOm1lKEIpfWZ1bmN0aW9uIG1lKEIpe3JldHVybiBzLmVudGVyKCJodG1sVGV4dERhdGEiKSxvKEIpfX12YXIgcm1lLGg5dD1nKCgpPT57aXIoKTtWYSgpO3JtZT17bmFtZToiaHRtbFRleHQiLHRva2VuaXplOndPYX07aSh3T2EsInRva2VuaXplSHRtbFRleHQiKX0pO2Z1bmN0aW9uIE1PYShzKXtsZXQgZT0tMSx0PVtdO2Zvcig7KytlPHMubGVuZ3RoOyl7bGV0IGE9c1tlXVsxXTtpZih0LnB1c2goc1tlXSksYS50eXBlPT09ImxhYmVsSW1hZ2UifHxhLnR5cGU9PT0ibGFiZWxMaW5rInx8YS50eXBlPT09ImxhYmVsRW5kIil7bGV0IHI9YS50eXBlPT09ImxhYmVsSW1hZ2UiPzQ6MjthLnR5cGU9ImRhdGEiLGUrPXJ9fXJldHVybiBzLmxlbmd0aCE9PXQubGVuZ3RoJiZzcihzLDAscy5sZW5ndGgsdCksc31mdW5jdGlvbiB6T2EocyxlKXtsZXQgdD1zLmxlbmd0aCxhPTAscixuLG8sbDtmb3IoO3QtLTspaWYocj1zW3RdWzFdLG4pe2lmKHIudHlwZT09PSJsaW5rInx8ci50eXBlPT09ImxhYmVsTGluayImJnIuX2luYWN0aXZlKWJyZWFrO3NbdF1bMF09PT0iZW50ZXIiJiZyLnR5cGU9PT0ibGFiZWxMaW5rIiYmKHIuX2luYWN0aXZlPSEwKX1lbHNlIGlmKG8pe2lmKHNbdF1bMF09PT0iZW50ZXIiJiYoci50eXBlPT09ImxhYmVsSW1hZ2UifHxyLnR5cGU9PT0ibGFiZWxMaW5rIikmJiFyLl9iYWxhbmNlZCYmKG49dCxyLnR5cGUhPT0ibGFiZWxMaW5rIikpe2E9MjticmVha319ZWxzZSByLnR5cGU9PT0ibGFiZWxFbmQiJiYobz10KTtsZXQgcD17dHlwZTpzW25dWzFdLnR5cGU9PT0ibGFiZWxMaW5rIj8ibGluayI6ImltYWdlIixzdGFydDp7Li4uc1tuXVsxXS5zdGFydH0sZW5kOnsuLi5zW3MubGVuZ3RoLTFdWzFdLmVuZH19LGQ9e3R5cGU6ImxhYmVsIixzdGFydDp7Li4uc1tuXVsxXS5zdGFydH0sZW5kOnsuLi5zW29dWzFdLmVuZH19LHU9e3R5cGU6ImxhYmVsVGV4dCIsc3RhcnQ6ey4uLnNbbithKzJdWzFdLmVuZH0sZW5kOnsuLi5zW28tMl1bMV0uc3RhcnR9fTtyZXR1cm4gbD1bWyJlbnRlciIscCxlXSxbImVudGVyIixkLGVdXSxsPU1yKGwscy5zbGljZShuKzEsbithKzMpKSxsPU1yKGwsW1siZW50ZXIiLHUsZV1dKSxsPU1yKGwsWHAoZS5wYXJzZXIuY29uc3RydWN0cy5pbnNpZGVTcGFuLm51bGwscy5zbGljZShuK2ErNCxvLTMpLGUpKSxsPU1yKGwsW1siZXhpdCIsdSxlXSxzW28tMl0sc1tvLTFdLFsiZXhpdCIsZCxlXV0pLGw9TXIobCxzLnNsaWNlKG8rMSkpLGw9TXIobCxbWyJleGl0IixwLGVdXSksc3IocyxuLHMubGVuZ3RoLGwpLHN9ZnVuY3Rpb24gQ09hKHMsZSx0KXtsZXQgYT10aGlzLHI9YS5ldmVudHMubGVuZ3RoLG4sbztmb3IoO3ItLTspaWYoKGEuZXZlbnRzW3JdWzFdLnR5cGU9PT0ibGFiZWxJbWFnZSJ8fGEuZXZlbnRzW3JdWzFdLnR5cGU9PT0ibGFiZWxMaW5rIikmJiFhLmV2ZW50c1tyXVsxXS5fYmFsYW5jZWQpe249YS5ldmVudHNbcl1bMV07YnJlYWt9cmV0dXJuIGw7ZnVuY3Rpb24gbChiKXtyZXR1cm4gbj9uLl9pbmFjdGl2ZT9jKGIpOihvPWEucGFyc2VyLmRlZmluZWQuaW5jbHVkZXMoSGkoYS5zbGljZVNlcmlhbGl6ZSh7c3RhcnQ6bi5lbmQsZW5kOmEubm93KCl9KSkpLHMuZW50ZXIoImxhYmVsRW5kIikscy5lbnRlcigibGFiZWxNYXJrZXIiKSxzLmNvbnN1bWUoYikscy5leGl0KCJsYWJlbE1hcmtlciIpLHMuZXhpdCgibGFiZWxFbmQiKSxwKTp0KGIpfWZ1bmN0aW9uIHAoYil7cmV0dXJuIGI9PT00MD9zLmF0dGVtcHQoa09hLHUsbz91OmMpKGIpOmI9PT05MT9zLmF0dGVtcHQoU09hLHUsbz9kOmMpKGIpOm8/dShiKTpjKGIpfWZ1bmN0aW9uIGQoYil7cmV0dXJuIHMuYXR0ZW1wdChfT2EsdSxjKShiKX1mdW5jdGlvbiB1KGIpe3JldHVybiBlKGIpfWZ1bmN0aW9uIGMoYil7cmV0dXJuIG4uX2JhbGFuY2VkPSEwLHQoYil9fWZ1bmN0aW9uIFRPYShzLGUsdCl7cmV0dXJuIGE7ZnVuY3Rpb24gYShjKXtyZXR1cm4gcy5lbnRlcigicmVzb3VyY2UiKSxzLmVudGVyKCJyZXNvdXJjZU1hcmtlciIpLHMuY29uc3VtZShjKSxzLmV4aXQoInJlc291cmNlTWFya2VyIikscn1mdW5jdGlvbiByKGMpe3JldHVybiBBYShjKT9EMyhzLG4pKGMpOm4oYyl9ZnVuY3Rpb24gbihjKXtyZXR1cm4gYz09PTQxP3UoYyk6emllKHMsbyxsLCJyZXNvdXJjZURlc3RpbmF0aW9uIiwicmVzb3VyY2VEZXN0aW5hdGlvbkxpdGVyYWwiLCJyZXNvdXJjZURlc3RpbmF0aW9uTGl0ZXJhbE1hcmtlciIsInJlc291cmNlRGVzdGluYXRpb25SYXciLCJyZXNvdXJjZURlc3RpbmF0aW9uU3RyaW5nIiwzMikoYyl9ZnVuY3Rpb24gbyhjKXtyZXR1cm4gQWEoYyk/RDMocyxwKShjKTp1KGMpfWZ1bmN0aW9uIGwoYyl7cmV0dXJuIHQoYyl9ZnVuY3Rpb24gcChjKXtyZXR1cm4gYz09PTM0fHxjPT09Mzl8fGM9PT00MD9UaWUocyxkLHQsInJlc291cmNlVGl0bGUiLCJyZXNvdXJjZVRpdGxlTWFya2VyIiwicmVzb3VyY2VUaXRsZVN0cmluZyIpKGMpOnUoYyl9ZnVuY3Rpb24gZChjKXtyZXR1cm4gQWEoYyk/RDMocyx1KShjKTp1KGMpfWZ1bmN0aW9uIHUoYyl7cmV0dXJuIGM9PT00MT8ocy5lbnRlcigicmVzb3VyY2VNYXJrZXIiKSxzLmNvbnN1bWUoYykscy5leGl0KCJyZXNvdXJjZU1hcmtlciIpLHMuZXhpdCgicmVzb3VyY2UiKSxlKTp0KGMpfX1mdW5jdGlvbiAkT2EocyxlLHQpe2xldCBhPXRoaXM7cmV0dXJuIHI7ZnVuY3Rpb24gcihsKXtyZXR1cm4gQ2llLmNhbGwoYSxzLG4sbywicmVmZXJlbmNlIiwicmVmZXJlbmNlTWFya2VyIiwicmVmZXJlbmNlU3RyaW5nIikobCl9ZnVuY3Rpb24gbihsKXtyZXR1cm4gYS5wYXJzZXIuZGVmaW5lZC5pbmNsdWRlcyhIaShhLnNsaWNlU2VyaWFsaXplKGEuZXZlbnRzW2EuZXZlbnRzLmxlbmd0aC0xXVsxXSkuc2xpY2UoMSwtMSkpKT9lKGwpOnQobCl9ZnVuY3Rpb24gbyhsKXtyZXR1cm4gdChsKX19ZnVuY3Rpb24gRE9hKHMsZSx0KXtyZXR1cm4gYTtmdW5jdGlvbiBhKG4pe3JldHVybiBzLmVudGVyKCJyZWZlcmVuY2UiKSxzLmVudGVyKCJyZWZlcmVuY2VNYXJrZXIiKSxzLmNvbnN1bWUobikscy5leGl0KCJyZWZlcmVuY2VNYXJrZXIiKSxyfWZ1bmN0aW9uIHIobil7cmV0dXJuIG49PT05Mz8ocy5lbnRlcigicmVmZXJlbmNlTWFya2VyIikscy5jb25zdW1lKG4pLHMuZXhpdCgicmVmZXJlbmNlTWFya2VyIikscy5leGl0KCJyZWZlcmVuY2UiKSxlKTp0KG4pfX12YXIgTDMsa09hLFNPYSxfT2EsJGllPWcoKCk9PntaZmUoKTtYZmUoKTtRZmUoKTtKZmUoKTtWYSgpO2JkKCk7WXAoKTt1aygpO0wzPXtuYW1lOiJsYWJlbEVuZCIscmVzb2x2ZUFsbDpNT2EscmVzb2x2ZVRvOnpPYSx0b2tlbml6ZTpDT2F9LGtPYT17dG9rZW5pemU6VE9hfSxTT2E9e3Rva2VuaXplOiRPYX0sX09hPXt0b2tlbml6ZTpET2F9O2koTU9hLCJyZXNvbHZlQWxsTGFiZWxFbmQiKTtpKHpPYSwicmVzb2x2ZVRvTGFiZWxFbmQiKTtpKENPYSwidG9rZW5pemVMYWJlbEVuZCIpO2koVE9hLCJ0b2tlbml6ZVJlc291cmNlIik7aSgkT2EsInRva2VuaXplUmVmZXJlbmNlRnVsbCIpO2koRE9hLCJ0b2tlbml6ZVJlZmVyZW5jZUNvbGxhcHNlZCIpfSk7ZnVuY3Rpb24gTE9hKHMsZSx0KXtsZXQgYT10aGlzO3JldHVybiByO2Z1bmN0aW9uIHIobCl7cmV0dXJuIHMuZW50ZXIoImxhYmVsSW1hZ2UiKSxzLmVudGVyKCJsYWJlbEltYWdlTWFya2VyIikscy5jb25zdW1lKGwpLHMuZXhpdCgibGFiZWxJbWFnZU1hcmtlciIpLG59ZnVuY3Rpb24gbihsKXtyZXR1cm4gbD09PTkxPyhzLmVudGVyKCJsYWJlbE1hcmtlciIpLHMuY29uc3VtZShsKSxzLmV4aXQoImxhYmVsTWFya2VyIikscy5leGl0KCJsYWJlbEltYWdlIiksbyk6dChsKX1mdW5jdGlvbiBvKGwpe3JldHVybiBsPT09OTQmJiJfaGlkZGVuRm9vdG5vdGVTdXBwb3J0ImluIGEucGFyc2VyLmNvbnN0cnVjdHM/dChsKTplKGwpfX12YXIgb21lLGY5dD1nKCgpPT57JGllKCk7b21lPXtuYW1lOiJsYWJlbFN0YXJ0SW1hZ2UiLHJlc29sdmVBbGw6TDMucmVzb2x2ZUFsbCx0b2tlbml6ZTpMT2F9O2koTE9hLCJ0b2tlbml6ZUxhYmVsU3RhcnRJbWFnZSIpfSk7ZnVuY3Rpb24gRU9hKHMsZSx0KXtsZXQgYT10aGlzO3JldHVybiByO2Z1bmN0aW9uIHIobyl7cmV0dXJuIHMuZW50ZXIoImxhYmVsTGluayIpLHMuZW50ZXIoImxhYmVsTWFya2VyIikscy5jb25zdW1lKG8pLHMuZXhpdCgibGFiZWxNYXJrZXIiKSxzLmV4aXQoImxhYmVsTGluayIpLG59ZnVuY3Rpb24gbihvKXtyZXR1cm4gbz09PTk0JiYiX2hpZGRlbkZvb3Rub3RlU3VwcG9ydCJpbiBhLnBhcnNlci5jb25zdHJ1Y3RzP3Qobyk6ZShvKX19dmFyIG5tZSxtOXQ9ZygoKT0+eyRpZSgpO25tZT17bmFtZToibGFiZWxTdGFydExpbmsiLHJlc29sdmVBbGw6TDMucmVzb2x2ZUFsbCx0b2tlbml6ZTpFT2F9O2koRU9hLCJ0b2tlbml6ZUxhYmVsU3RhcnRMaW5rIil9KTtmdW5jdGlvbiBQT2EocyxlKXtyZXR1cm4gdDtmdW5jdGlvbiB0KGEpe3JldHVybiBzLmVudGVyKCJsaW5lRW5kaW5nIikscy5jb25zdW1lKGEpLHMuZXhpdCgibGluZUVuZGluZyIpLEt0KHMsZSwibGluZVByZWZpeCIpfX12YXIgZ2ssZzl0PWcoKCk9PntpcigpO1ZhKCk7Z2s9e25hbWU6ImxpbmVFbmRpbmciLHRva2VuaXplOlBPYX07aShQT2EsInRva2VuaXplTGluZUVuZGluZyIpfSk7ZnVuY3Rpb24gSU9hKHMsZSx0KXtsZXQgYT0wLHI7cmV0dXJuIG47ZnVuY3Rpb24gbihkKXtyZXR1cm4gcy5lbnRlcigidGhlbWF0aWNCcmVhayIpLG8oZCl9ZnVuY3Rpb24gbyhkKXtyZXR1cm4gcj1kLGwoZCl9ZnVuY3Rpb24gbChkKXtyZXR1cm4gZD09PXI/KHMuZW50ZXIoInRoZW1hdGljQnJlYWtTZXF1ZW5jZSIpLHAoZCkpOmE+PTMmJihkPT09bnVsbHx8dnQoZCkpPyhzLmV4aXQoInRoZW1hdGljQnJlYWsiKSxlKGQpKTp0KGQpfWZ1bmN0aW9uIHAoZCl7cmV0dXJuIGQ9PT1yPyhzLmNvbnN1bWUoZCksYSsrLHApOihzLmV4aXQoInRoZW1hdGljQnJlYWtTZXF1ZW5jZSIpLEh0KGQpP0t0KHMsbCwid2hpdGVzcGFjZSIpKGQpOmwoZCkpfX12YXIgRTMsbG1lPWcoKCk9PntpcigpO1ZhKCk7RTM9e25hbWU6InRoZW1hdGljQnJlYWsiLHRva2VuaXplOklPYX07aShJT2EsInRva2VuaXplVGhlbWF0aWNCcmVhayIpfSk7ZnVuY3Rpb24gUk9hKHMsZSx0KXtsZXQgYT10aGlzLHI9YS5ldmVudHNbYS5ldmVudHMubGVuZ3RoLTFdLG49ciYmclsxXS50eXBlPT09ImxpbmVQcmVmaXgiP3JbMl0uc2xpY2VTZXJpYWxpemUoclsxXSwhMCkubGVuZ3RoOjAsbz0wO3JldHVybiBsO2Z1bmN0aW9uIGwodil7bGV0IHg9YS5jb250YWluZXJTdGF0ZS50eXBlfHwodj09PTQyfHx2PT09NDN8fHY9PT00NT8ibGlzdFVub3JkZXJlZCI6Imxpc3RPcmRlcmVkIik7aWYoeD09PSJsaXN0VW5vcmRlcmVkIj8hYS5jb250YWluZXJTdGF0ZS5tYXJrZXJ8fHY9PT1hLmNvbnRhaW5lclN0YXRlLm1hcmtlcjpvayh2KSl7aWYoYS5jb250YWluZXJTdGF0ZS50eXBlfHwoYS5jb250YWluZXJTdGF0ZS50eXBlPXgscy5lbnRlcih4LHtfY29udGFpbmVyOiEwfSkpLHg9PT0ibGlzdFVub3JkZXJlZCIpcmV0dXJuIHMuZW50ZXIoImxpc3RJdGVtUHJlZml4Iiksdj09PTQyfHx2PT09NDU/cy5jaGVjayhFMyx0LGQpKHYpOmQodik7aWYoIWEuaW50ZXJydXB0fHx2PT09NDkpcmV0dXJuIHMuZW50ZXIoImxpc3RJdGVtUHJlZml4Iikscy5lbnRlcigibGlzdEl0ZW1WYWx1ZSIpLHAodil9cmV0dXJuIHQodil9ZnVuY3Rpb24gcCh2KXtyZXR1cm4gb2sodikmJisrbzwxMD8ocy5jb25zdW1lKHYpLHApOighYS5pbnRlcnJ1cHR8fG88MikmJihhLmNvbnRhaW5lclN0YXRlLm1hcmtlcj92PT09YS5jb250YWluZXJTdGF0ZS5tYXJrZXI6dj09PTQxfHx2PT09NDYpPyhzLmV4aXQoImxpc3RJdGVtVmFsdWUiKSxkKHYpKTp0KHYpfWZ1bmN0aW9uIGQodil7cmV0dXJuIHMuZW50ZXIoImxpc3RJdGVtTWFya2VyIikscy5jb25zdW1lKHYpLHMuZXhpdCgibGlzdEl0ZW1NYXJrZXIiKSxhLmNvbnRhaW5lclN0YXRlLm1hcmtlcj1hLmNvbnRhaW5lclN0YXRlLm1hcmtlcnx8dixzLmNoZWNrKHdkLGEuaW50ZXJydXB0P3Q6dSxzLmF0dGVtcHQoQU9hLGIsYykpfWZ1bmN0aW9uIHUodil7cmV0dXJuIGEuY29udGFpbmVyU3RhdGUuaW5pdGlhbEJsYW5rTGluZT0hMCxuKyssYih2KX1mdW5jdGlvbiBjKHYpe3JldHVybiBIdCh2KT8ocy5lbnRlcigibGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlIikscy5jb25zdW1lKHYpLHMuZXhpdCgibGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlIiksYik6dCh2KX1mdW5jdGlvbiBiKHYpe3JldHVybiBhLmNvbnRhaW5lclN0YXRlLnNpemU9bithLnNsaWNlU2VyaWFsaXplKHMuZXhpdCgibGlzdEl0ZW1QcmVmaXgiKSwhMCkubGVuZ3RoLGUodil9fWZ1bmN0aW9uIE9PYShzLGUsdCl7bGV0IGE9dGhpcztyZXR1cm4gYS5jb250YWluZXJTdGF0ZS5fY2xvc2VGbG93PXZvaWQgMCxzLmNoZWNrKHdkLHIsbik7ZnVuY3Rpb24gcihsKXtyZXR1cm4gYS5jb250YWluZXJTdGF0ZS5mdXJ0aGVyQmxhbmtMaW5lcz1hLmNvbnRhaW5lclN0YXRlLmZ1cnRoZXJCbGFua0xpbmVzfHxhLmNvbnRhaW5lclN0YXRlLmluaXRpYWxCbGFua0xpbmUsS3QocyxlLCJsaXN0SXRlbUluZGVudCIsYS5jb250YWluZXJTdGF0ZS5zaXplKzEpKGwpfWkociwib25CbGFuayIpO2Z1bmN0aW9uIG4obCl7cmV0dXJuIGEuY29udGFpbmVyU3RhdGUuZnVydGhlckJsYW5rTGluZXN8fCFIdChsKT8oYS5jb250YWluZXJTdGF0ZS5mdXJ0aGVyQmxhbmtMaW5lcz12b2lkIDAsYS5jb250YWluZXJTdGF0ZS5pbml0aWFsQmxhbmtMaW5lPXZvaWQgMCxvKGwpKTooYS5jb250YWluZXJTdGF0ZS5mdXJ0aGVyQmxhbmtMaW5lcz12b2lkIDAsYS5jb250YWluZXJTdGF0ZS5pbml0aWFsQmxhbmtMaW5lPXZvaWQgMCxzLmF0dGVtcHQoTk9hLGUsbykobCkpfWkobiwibm90QmxhbmsiKTtmdW5jdGlvbiBvKGwpe3JldHVybiBhLmNvbnRhaW5lclN0YXRlLl9jbG9zZUZsb3c9ITAsYS5pbnRlcnJ1cHQ9dm9pZCAwLEt0KHMscy5hdHRlbXB0KGVuLGUsdCksImxpbmVQcmVmaXgiLGEucGFyc2VyLmNvbnN0cnVjdHMuZGlzYWJsZS5udWxsLmluY2x1ZGVzKCJjb2RlSW5kZW50ZWQiKT92b2lkIDA6NCkobCl9aShvLCJub3RJbkN1cnJlbnRJdGVtIil9ZnVuY3Rpb24gRk9hKHMsZSx0KXtsZXQgYT10aGlzO3JldHVybiBLdChzLHIsImxpc3RJdGVtSW5kZW50IixhLmNvbnRhaW5lclN0YXRlLnNpemUrMSk7ZnVuY3Rpb24gcihuKXtsZXQgbz1hLmV2ZW50c1thLmV2ZW50cy5sZW5ndGgtMV07cmV0dXJuIG8mJm9bMV0udHlwZT09PSJsaXN0SXRlbUluZGVudCImJm9bMl0uc2xpY2VTZXJpYWxpemUob1sxXSwhMCkubGVuZ3RoPT09YS5jb250YWluZXJTdGF0ZS5zaXplP2Uobik6dChuKX19ZnVuY3Rpb24gQk9hKHMpe3MuZXhpdCh0aGlzLmNvbnRhaW5lclN0YXRlLnR5cGUpfWZ1bmN0aW9uIEhPYShzLGUsdCl7bGV0IGE9dGhpcztyZXR1cm4gS3QocyxyLCJsaXN0SXRlbVByZWZpeFdoaXRlc3BhY2UiLGEucGFyc2VyLmNvbnN0cnVjdHMuZGlzYWJsZS5udWxsLmluY2x1ZGVzKCJjb2RlSW5kZW50ZWQiKT92b2lkIDA6NSk7ZnVuY3Rpb24gcihuKXtsZXQgbz1hLmV2ZW50c1thLmV2ZW50cy5sZW5ndGgtMV07cmV0dXJuIUh0KG4pJiZvJiZvWzFdLnR5cGU9PT0ibGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlIj9lKG4pOnQobil9fXZhciBlbixBT2EsTk9hLGI5dD1nKCgpPT57aXIoKTtWYSgpO3lpZSgpO2xtZSgpO2VuPXtjb250aW51YXRpb246e3Rva2VuaXplOk9PYX0sZXhpdDpCT2EsbmFtZToibGlzdCIsdG9rZW5pemU6Uk9hfSxBT2E9e3BhcnRpYWw6ITAsdG9rZW5pemU6SE9hfSxOT2E9e3BhcnRpYWw6ITAsdG9rZW5pemU6Rk9hfTtpKFJPYSwidG9rZW5pemVMaXN0U3RhcnQiKTtpKE9PYSwidG9rZW5pemVMaXN0Q29udGludWF0aW9uIik7aShGT2EsInRva2VuaXplSW5kZW50Iik7aShCT2EsInRva2VuaXplTGlzdEVuZCIpO2koSE9hLCJ0b2tlbml6ZUxpc3RJdGVtUHJlZml4V2hpdGVzcGFjZSIpfSk7ZnVuY3Rpb24gcU9hKHMsZSl7bGV0IHQ9cy5sZW5ndGgsYSxyLG47Zm9yKDt0LS07KWlmKHNbdF1bMF09PT0iZW50ZXIiKXtpZihzW3RdWzFdLnR5cGU9PT0iY29udGVudCIpe2E9dDticmVha31zW3RdWzFdLnR5cGU9PT0icGFyYWdyYXBoIiYmKHI9dCl9ZWxzZSBzW3RdWzFdLnR5cGU9PT0iY29udGVudCImJnMuc3BsaWNlKHQsMSksIW4mJnNbdF1bMV0udHlwZT09PSJkZWZpbml0aW9uIiYmKG49dCk7bGV0IG89e3R5cGU6InNldGV4dEhlYWRpbmciLHN0YXJ0OnsuLi5zW2FdWzFdLnN0YXJ0fSxlbmQ6ey4uLnNbcy5sZW5ndGgtMV1bMV0uZW5kfX07cmV0dXJuIHNbcl1bMV0udHlwZT0ic2V0ZXh0SGVhZGluZ1RleHQiLG4/KHMuc3BsaWNlKHIsMCxbImVudGVyIixvLGVdKSxzLnNwbGljZShuKzEsMCxbImV4aXQiLHNbYV1bMV0sZV0pLHNbYV1bMV0uZW5kPXsuLi5zW25dWzFdLmVuZH0pOnNbYV1bMV09byxzLnB1c2goWyJleGl0IixvLGVdKSxzfWZ1bmN0aW9uIGpPYShzLGUsdCl7bGV0IGE9dGhpcyxyO3JldHVybiBuO2Z1bmN0aW9uIG4oZCl7bGV0IHU9YS5ldmVudHMubGVuZ3RoLGM7Zm9yKDt1LS07KWlmKGEuZXZlbnRzW3VdWzFdLnR5cGUhPT0ibGluZUVuZGluZyImJmEuZXZlbnRzW3VdWzFdLnR5cGUhPT0ibGluZVByZWZpeCImJmEuZXZlbnRzW3VdWzFdLnR5cGUhPT0iY29udGVudCIpe2M9YS5ldmVudHNbdV1bMV0udHlwZT09PSJwYXJhZ3JhcGgiO2JyZWFrfXJldHVybiFhLnBhcnNlci5sYXp5W2Eubm93KCkubGluZV0mJihhLmludGVycnVwdHx8Yyk/KHMuZW50ZXIoInNldGV4dEhlYWRpbmdMaW5lIikscj1kLG8oZCkpOnQoZCl9ZnVuY3Rpb24gbyhkKXtyZXR1cm4gcy5lbnRlcigic2V0ZXh0SGVhZGluZ0xpbmVTZXF1ZW5jZSIpLGwoZCl9ZnVuY3Rpb24gbChkKXtyZXR1cm4gZD09PXI/KHMuY29uc3VtZShkKSxsKToocy5leGl0KCJzZXRleHRIZWFkaW5nTGluZVNlcXVlbmNlIiksSHQoZCk/S3QocyxwLCJsaW5lU3VmZml4IikoZCk6cChkKSl9ZnVuY3Rpb24gcChkKXtyZXR1cm4gZD09PW51bGx8fHZ0KGQpPyhzLmV4aXQoInNldGV4dEhlYWRpbmdMaW5lIiksZShkKSk6dChkKX19dmFyIERpZSx2OXQ9ZygoKT0+e2lyKCk7VmEoKTtEaWU9e25hbWU6InNldGV4dFVuZGVybGluZSIscmVzb2x2ZVRvOnFPYSx0b2tlbml6ZTpqT2F9O2kocU9hLCJyZXNvbHZlVG9TZXRleHRVbmRlcmxpbmUiKTtpKGpPYSwidG9rZW5pemVTZXRleHRVbmRlcmxpbmUiKX0pO3ZhciBMaWU9ZygoKT0+e1g3dCgpO1E3dCgpO3lpZSgpO0o3dCgpO2U5dCgpO3Q5dCgpO3M5dCgpO2k5dCgpO3I5dCgpO285dCgpO245dCgpO2w5dCgpO2M5dCgpO3A5dCgpO2g5dCgpOyRpZSgpO2Y5dCgpO205dCgpO2c5dCgpO2I5dCgpO3Y5dCgpO2xtZSgpfSk7ZnVuY3Rpb24gY21lKCl7cmV0dXJue2RvY3VtZW50Ons5MTp7bmFtZToiZ2ZtRm9vdG5vdGVEZWZpbml0aW9uIix0b2tlbml6ZTpLT2EsY29udGludWF0aW9uOnt0b2tlbml6ZTpZT2F9LGV4aXQ6Wk9hfX0sdGV4dDp7OTE6e25hbWU6ImdmbUZvb3Rub3RlQ2FsbCIsdG9rZW5pemU6R09hfSw5Mzp7bmFtZToiZ2ZtUG90ZW50aWFsRm9vdG5vdGVDYWxsIixhZGQ6ImFmdGVyIix0b2tlbml6ZTpVT2EscmVzb2x2ZVRvOldPYX19fX1mdW5jdGlvbiBVT2EocyxlLHQpe2xldCBhPXRoaXMscj1hLmV2ZW50cy5sZW5ndGgsbj1hLnBhcnNlci5nZm1Gb290bm90ZXN8fChhLnBhcnNlci5nZm1Gb290bm90ZXM9W10pLG87Zm9yKDtyLS07KXtsZXQgcD1hLmV2ZW50c1tyXVsxXTtpZihwLnR5cGU9PT0ibGFiZWxJbWFnZSIpe289cDticmVha31pZihwLnR5cGU9PT0iZ2ZtRm9vdG5vdGVDYWxsInx8cC50eXBlPT09ImxhYmVsTGluayJ8fHAudHlwZT09PSJsYWJlbCJ8fHAudHlwZT09PSJpbWFnZSJ8fHAudHlwZT09PSJsaW5rIilicmVha31yZXR1cm4gbDtmdW5jdGlvbiBsKHApe2lmKCFvfHwhby5fYmFsYW5jZWQpcmV0dXJuIHQocCk7bGV0IGQ9SGkoYS5zbGljZVNlcmlhbGl6ZSh7c3RhcnQ6by5lbmQsZW5kOmEubm93KCl9KSk7cmV0dXJuIGQuY29kZVBvaW50QXQoMCkhPT05NHx8IW4uaW5jbHVkZXMoZC5zbGljZSgxKSk/dChwKToocy5lbnRlcigiZ2ZtRm9vdG5vdGVDYWxsTGFiZWxNYXJrZXIiKSxzLmNvbnN1bWUocCkscy5leGl0KCJnZm1Gb290bm90ZUNhbGxMYWJlbE1hcmtlciIpLGUocCkpfX1mdW5jdGlvbiBXT2EocyxlKXtsZXQgdD1zLmxlbmd0aCxhO2Zvcig7dC0tOylpZihzW3RdWzFdLnR5cGU9PT0ibGFiZWxJbWFnZSImJnNbdF1bMF09PT0iZW50ZXIiKXthPXNbdF1bMV07YnJlYWt9c1t0KzFdWzFdLnR5cGU9ImRhdGEiLHNbdCszXVsxXS50eXBlPSJnZm1Gb290bm90ZUNhbGxMYWJlbE1hcmtlciI7bGV0IHI9e3R5cGU6ImdmbUZvb3Rub3RlQ2FsbCIsc3RhcnQ6T2JqZWN0LmFzc2lnbih7fSxzW3QrM11bMV0uc3RhcnQpLGVuZDpPYmplY3QuYXNzaWduKHt9LHNbcy5sZW5ndGgtMV1bMV0uZW5kKX0sbj17dHlwZToiZ2ZtRm9vdG5vdGVDYWxsTWFya2VyIixzdGFydDpPYmplY3QuYXNzaWduKHt9LHNbdCszXVsxXS5lbmQpLGVuZDpPYmplY3QuYXNzaWduKHt9LHNbdCszXVsxXS5lbmQpfTtuLmVuZC5jb2x1bW4rKyxuLmVuZC5vZmZzZXQrKyxuLmVuZC5fYnVmZmVySW5kZXgrKztsZXQgbz17dHlwZToiZ2ZtRm9vdG5vdGVDYWxsU3RyaW5nIixzdGFydDpPYmplY3QuYXNzaWduKHt9LG4uZW5kKSxlbmQ6T2JqZWN0LmFzc2lnbih7fSxzW3MubGVuZ3RoLTFdWzFdLnN0YXJ0KX0sbD17dHlwZToiY2h1bmtTdHJpbmciLGNvbnRlbnRUeXBlOiJzdHJpbmciLHN0YXJ0Ok9iamVjdC5hc3NpZ24oe30sby5zdGFydCksZW5kOk9iamVjdC5hc3NpZ24oe30sby5lbmQpfSxwPVtzW3QrMV0sc1t0KzJdLFsiZW50ZXIiLHIsZV0sc1t0KzNdLHNbdCs0XSxbImVudGVyIixuLGVdLFsiZXhpdCIsbixlXSxbImVudGVyIixvLGVdLFsiZW50ZXIiLGwsZV0sWyJleGl0IixsLGVdLFsiZXhpdCIsbyxlXSxzW3MubGVuZ3RoLTJdLHNbcy5sZW5ndGgtMV0sWyJleGl0IixyLGVdXTtyZXR1cm4gcy5zcGxpY2UodCxzLmxlbmd0aC10KzEsLi4ucCksc31mdW5jdGlvbiBHT2EocyxlLHQpe2xldCBhPXRoaXMscj1hLnBhcnNlci5nZm1Gb290bm90ZXN8fChhLnBhcnNlci5nZm1Gb290bm90ZXM9W10pLG49MCxvO3JldHVybiBsO2Z1bmN0aW9uIGwoYyl7cmV0dXJuIHMuZW50ZXIoImdmbUZvb3Rub3RlQ2FsbCIpLHMuZW50ZXIoImdmbUZvb3Rub3RlQ2FsbExhYmVsTWFya2VyIikscy5jb25zdW1lKGMpLHMuZXhpdCgiZ2ZtRm9vdG5vdGVDYWxsTGFiZWxNYXJrZXIiKSxwfWZ1bmN0aW9uIHAoYyl7cmV0dXJuIGMhPT05ND90KGMpOihzLmVudGVyKCJnZm1Gb290bm90ZUNhbGxNYXJrZXIiKSxzLmNvbnN1bWUoYykscy5leGl0KCJnZm1Gb290bm90ZUNhbGxNYXJrZXIiKSxzLmVudGVyKCJnZm1Gb290bm90ZUNhbGxTdHJpbmciKSxzLmVudGVyKCJjaHVua1N0cmluZyIpLmNvbnRlbnRUeXBlPSJzdHJpbmciLGQpfWZ1bmN0aW9uIGQoYyl7aWYobj45OTl8fGM9PT05MyYmIW98fGM9PT1udWxsfHxjPT09OTF8fEFhKGMpKXJldHVybiB0KGMpO2lmKGM9PT05Myl7cy5leGl0KCJjaHVua1N0cmluZyIpO2xldCBiPXMuZXhpdCgiZ2ZtRm9vdG5vdGVDYWxsU3RyaW5nIik7cmV0dXJuIHIuaW5jbHVkZXMoSGkoYS5zbGljZVNlcmlhbGl6ZShiKSkpPyhzLmVudGVyKCJnZm1Gb290bm90ZUNhbGxMYWJlbE1hcmtlciIpLHMuY29uc3VtZShjKSxzLmV4aXQoImdmbUZvb3Rub3RlQ2FsbExhYmVsTWFya2VyIikscy5leGl0KCJnZm1Gb290bm90ZUNhbGwiKSxlKTp0KGMpfXJldHVybiBBYShjKXx8KG89ITApLG4rKyxzLmNvbnN1bWUoYyksYz09PTkyP3U6ZH1mdW5jdGlvbiB1KGMpe3JldHVybiBjPT09OTF8fGM9PT05Mnx8Yz09PTkzPyhzLmNvbnN1bWUoYyksbisrLGQpOmQoYyl9fWZ1bmN0aW9uIEtPYShzLGUsdCl7bGV0IGE9dGhpcyxyPWEucGFyc2VyLmdmbUZvb3Rub3Rlc3x8KGEucGFyc2VyLmdmbUZvb3Rub3Rlcz1bXSksbixvPTAsbDtyZXR1cm4gcDtmdW5jdGlvbiBwKHgpe3JldHVybiBzLmVudGVyKCJnZm1Gb290bm90ZURlZmluaXRpb24iKS5fY29udGFpbmVyPSEwLHMuZW50ZXIoImdmbUZvb3Rub3RlRGVmaW5pdGlvbkxhYmVsIikscy5lbnRlcigiZ2ZtRm9vdG5vdGVEZWZpbml0aW9uTGFiZWxNYXJrZXIiKSxzLmNvbnN1bWUoeCkscy5leGl0KCJnZm1Gb290bm90ZURlZmluaXRpb25MYWJlbE1hcmtlciIpLGR9ZnVuY3Rpb24gZCh4KXtyZXR1cm4geD09PTk0PyhzLmVudGVyKCJnZm1Gb290bm90ZURlZmluaXRpb25NYXJrZXIiKSxzLmNvbnN1bWUoeCkscy5leGl0KCJnZm1Gb290bm90ZURlZmluaXRpb25NYXJrZXIiKSxzLmVudGVyKCJnZm1Gb290bm90ZURlZmluaXRpb25MYWJlbFN0cmluZyIpLHMuZW50ZXIoImNodW5rU3RyaW5nIikuY29udGVudFR5cGU9InN0cmluZyIsdSk6dCh4KX1mdW5jdGlvbiB1KHgpe2lmKG8+OTk5fHx4PT09OTMmJiFsfHx4PT09bnVsbHx8eD09PTkxfHxBYSh4KSlyZXR1cm4gdCh4KTtpZih4PT09OTMpe3MuZXhpdCgiY2h1bmtTdHJpbmciKTtsZXQgbT1zLmV4aXQoImdmbUZvb3Rub3RlRGVmaW5pdGlvbkxhYmVsU3RyaW5nIik7cmV0dXJuIG49SGkoYS5zbGljZVNlcmlhbGl6ZShtKSkscy5lbnRlcigiZ2ZtRm9vdG5vdGVEZWZpbml0aW9uTGFiZWxNYXJrZXIiKSxzLmNvbnN1bWUoeCkscy5leGl0KCJnZm1Gb290bm90ZURlZmluaXRpb25MYWJlbE1hcmtlciIpLHMuZXhpdCgiZ2ZtRm9vdG5vdGVEZWZpbml0aW9uTGFiZWwiKSxifXJldHVybiBBYSh4KXx8KGw9ITApLG8rKyxzLmNvbnN1bWUoeCkseD09PTkyP2M6dX1mdW5jdGlvbiBjKHgpe3JldHVybiB4PT09OTF8fHg9PT05Mnx8eD09PTkzPyhzLmNvbnN1bWUoeCksbysrLHUpOnUoeCl9ZnVuY3Rpb24gYih4KXtyZXR1cm4geD09PTU4PyhzLmVudGVyKCJkZWZpbml0aW9uTWFya2VyIikscy5jb25zdW1lKHgpLHMuZXhpdCgiZGVmaW5pdGlvbk1hcmtlciIpLHIuaW5jbHVkZXMobil8fHIucHVzaChuKSxLdChzLHYsImdmbUZvb3Rub3RlRGVmaW5pdGlvbldoaXRlc3BhY2UiKSk6dCh4KX1mdW5jdGlvbiB2KHgpe3JldHVybiBlKHgpfX1mdW5jdGlvbiBZT2EocyxlLHQpe3JldHVybiBzLmNoZWNrKHdkLGUscy5hdHRlbXB0KFZPYSxlLHQpKX1mdW5jdGlvbiBaT2Eocyl7cy5leGl0KCJnZm1Gb290bm90ZURlZmluaXRpb24iKX1mdW5jdGlvbiBYT2EocyxlLHQpe2xldCBhPXRoaXM7cmV0dXJuIEt0KHMsciwiZ2ZtRm9vdG5vdGVEZWZpbml0aW9uSW5kZW50Iiw1KTtmdW5jdGlvbiByKG4pe2xldCBvPWEuZXZlbnRzW2EuZXZlbnRzLmxlbmd0aC0xXTtyZXR1cm4gbyYmb1sxXS50eXBlPT09ImdmbUZvb3Rub3RlRGVmaW5pdGlvbkluZGVudCImJm9bMl0uc2xpY2VTZXJpYWxpemUob1sxXSwhMCkubGVuZ3RoPT09ND9lKG4pOnQobil9fXZhciBWT2EseDl0PWcoKCk9PntMaWUoKTtpcigpO1ZhKCk7WXAoKTtWT2E9e3Rva2VuaXplOlhPYSxwYXJ0aWFsOiEwfTtpKGNtZSwiZ2ZtRm9vdG5vdGUiKTtpKFVPYSwidG9rZW5pemVQb3RlbnRpYWxHZm1Gb290bm90ZUNhbGwiKTtpKFdPYSwicmVzb2x2ZVRvUG90ZW50aWFsR2ZtRm9vdG5vdGVDYWxsIik7aShHT2EsInRva2VuaXplR2ZtRm9vdG5vdGVDYWxsIik7aShLT2EsInRva2VuaXplRGVmaW5pdGlvblN0YXJ0Iik7aShZT2EsInRva2VuaXplRGVmaW5pdGlvbkNvbnRpbnVhdGlvbiIpO2koWk9hLCJnZm1Gb290bm90ZURlZmluaXRpb25FbmQiKTtpKFhPYSwidG9rZW5pemVJbmRlbnQiKX0pO2Z1bmN0aW9uIHk5dChzLGUpe3JldHVybiJCYWNrIHRvIHJlZmVyZW5jZSAiKyhzKzEpKyhlPjE/Ii0iK2U6IiIpfWZ1bmN0aW9uIGRtZShzKXtsZXQgZT1zfHxKT2EsdD1lLmxhYmVsfHwiRm9vdG5vdGVzIixhPWUubGFiZWxUYWdOYW1lfHwiaDIiLHI9ZS5sYWJlbEF0dHJpYnV0ZXM9PT1udWxsfHxlLmxhYmVsQXR0cmlidXRlcz09PXZvaWQgMD8nY2xhc3M9InNyLW9ubHkiJzplLmxhYmVsQXR0cmlidXRlcyxuPWUuYmFja0xhYmVsfHx5OXQsbz1lLmNsb2JiZXJQcmVmaXg9PT1udWxsfHxlLmNsb2JiZXJQcmVmaXg9PT12b2lkIDA/InVzZXItY29udGVudC0iOmUuY2xvYmJlclByZWZpeDtyZXR1cm57ZW50ZXI6e2dmbUZvb3Rub3RlRGVmaW5pdGlvbigpe3RoaXMuZ2V0RGF0YSgidGlnaHRTdGFjayIpLnB1c2goITEpfSxnZm1Gb290bm90ZURlZmluaXRpb25MYWJlbFN0cmluZygpe3RoaXMuYnVmZmVyKCl9LGdmbUZvb3Rub3RlQ2FsbFN0cmluZygpe3RoaXMuYnVmZmVyKCl9fSxleGl0OntnZm1Gb290bm90ZURlZmluaXRpb24oKXtsZXQgbD10aGlzLmdldERhdGEoImdmbUZvb3Rub3RlRGVmaW5pdGlvbnMiKSxwPXRoaXMuZ2V0RGF0YSgiZ2ZtRm9vdG5vdGVEZWZpbml0aW9uU3RhY2siKSxkPXRoaXMuZ2V0RGF0YSgidGlnaHRTdGFjayIpLHU9cC5wb3AoKSxjPXRoaXMucmVzdW1lKCk7bHx8dGhpcy5zZXREYXRhKCJnZm1Gb290bm90ZURlZmluaXRpb25zIixsPXt9KSxRT2EuY2FsbChsLHUpfHwobFt1XT1jKSxkLnBvcCgpLHRoaXMuc2V0RGF0YSgic2x1cnBPbmVMaW5lRW5kaW5nIiwhMCksdGhpcy5zZXREYXRhKCJsYXN0V2FzVGFnIil9LGdmbUZvb3Rub3RlRGVmaW5pdGlvbkxhYmVsU3RyaW5nKGwpe2xldCBwPXRoaXMuZ2V0RGF0YSgiZ2ZtRm9vdG5vdGVEZWZpbml0aW9uU3RhY2siKTtwfHx0aGlzLnNldERhdGEoImdmbUZvb3Rub3RlRGVmaW5pdGlvblN0YWNrIixwPVtdKSxwLnB1c2goSGkodGhpcy5zbGljZVNlcmlhbGl6ZShsKSkpLHRoaXMucmVzdW1lKCksdGhpcy5idWZmZXIoKX0sZ2ZtRm9vdG5vdGVDYWxsU3RyaW5nKGwpe2xldCBwPXRoaXMuZ2V0RGF0YSgiZ2ZtRm9vdG5vdGVDYWxsT3JkZXIiKSxkPXRoaXMuZ2V0RGF0YSgiZ2ZtRm9vdG5vdGVDYWxsQ291bnRzIiksdT1IaSh0aGlzLnNsaWNlU2VyaWFsaXplKGwpKSxjO3RoaXMucmVzdW1lKCkscHx8dGhpcy5zZXREYXRhKCJnZm1Gb290bm90ZUNhbGxPcmRlciIscD1bXSksZHx8dGhpcy5zZXREYXRhKCJnZm1Gb290bm90ZUNhbGxDb3VudHMiLGQ9e30pO2xldCBiPXAuaW5kZXhPZih1KSx2PXhkKHUudG9Mb3dlckNhc2UoKSk7Yj09PS0xPyhwLnB1c2godSksZFt1XT0xLGM9cC5sZW5ndGgpOihkW3VdKyssYz1iKzEpO2xldCB4PWRbdV07dGhpcy50YWcoJzxzdXA+PGEgaHJlZj0iIycrbysiZm4tIit2KyciIGlkPSInK28rImZucmVmLSIrdisoeD4xPyItIit4OiIiKSsnIiBkYXRhLWZvb3Rub3RlLXJlZj0iIiBhcmlhLWRlc2NyaWJlZGJ5PSJmb290bm90ZS1sYWJlbCI+JytTdHJpbmcoYykrIjwvYT48L3N1cD4iKX0sbnVsbCgpe2xldCBsPXRoaXMuZ2V0RGF0YSgiZ2ZtRm9vdG5vdGVDYWxsT3JkZXIiKXx8W10scD10aGlzLmdldERhdGEoImdmbUZvb3Rub3RlQ2FsbENvdW50cyIpfHx7fSxkPXRoaXMuZ2V0RGF0YSgiZ2ZtRm9vdG5vdGVEZWZpbml0aW9ucyIpfHx7fSx1PS0xO2ZvcihsLmxlbmd0aD4wJiYodGhpcy5saW5lRW5kaW5nSWZOZWVkZWQoKSx0aGlzLnRhZygnPHNlY3Rpb24gZGF0YS1mb290bm90ZXM9IiIgY2xhc3M9ImZvb3Rub3RlcyI+PCcrYSsnIGlkPSJmb290bm90ZS1sYWJlbCInKyhyPyIgIityOiIiKSsiPiIpLHRoaXMucmF3KHRoaXMuZW5jb2RlKHQpKSx0aGlzLnRhZygiPC8iK2ErIj4iKSx0aGlzLmxpbmVFbmRpbmdJZk5lZWRlZCgpLHRoaXMudGFnKCI8b2w+IikpOysrdTxsLmxlbmd0aDspe2xldCBjPWxbdV0sYj14ZChjLnRvTG93ZXJDYXNlKCkpLHY9MCx4PVtdO2Zvcig7Kyt2PD1wW2NdOyl4LnB1c2goJzxhIGhyZWY9IiMnK28rImZucmVmLSIrYisodj4xPyItIit2OiIiKSsnIiBkYXRhLWZvb3Rub3RlLWJhY2tyZWY9IiIgYXJpYS1sYWJlbD0iJyt0aGlzLmVuY29kZSh0eXBlb2Ygbj09InN0cmluZyI/bjpuKHUsdikpKyciIGNsYXNzPSJkYXRhLWZvb3Rub3RlLWJhY2tyZWYiPlx1MjFBOScrKHY+MT8iPHN1cD4iK3YrIjwvc3VwPiI6IiIpKyI8L2E+Iik7bGV0IG09eC5qb2luKCIgIiksZj0hMTt0aGlzLmxpbmVFbmRpbmdJZk5lZWRlZCgpLHRoaXMudGFnKCc8bGkgaWQ9IicrbysiZm4tIitiKyciPicpLHRoaXMubGluZUVuZGluZ0lmTmVlZGVkKCksdGhpcy50YWcoZFtjXS5yZXBsYWNlKC88XC9wPig/OlxyP1xufFxyKT8kLyxmdW5jdGlvbih5KXtyZXR1cm4gZj0hMCwiICIrbSt5fSkpLGZ8fCh0aGlzLmxpbmVFbmRpbmdJZk5lZWRlZCgpLHRoaXMudGFnKG0pKSx0aGlzLmxpbmVFbmRpbmdJZk5lZWRlZCgpLHRoaXMudGFnKCI8L2xpPiIpfWwubGVuZ3RoPjAmJih0aGlzLmxpbmVFbmRpbmdJZk5lZWRlZCgpLHRoaXMudGFnKCI8L29sPiIpLHRoaXMubGluZUVuZGluZ0lmTmVlZGVkKCksdGhpcy50YWcoIjwvc2VjdGlvbj4iKSl9fX19dmFyIFFPYSxKT2Esdzl0PWcoKCk9PntZcCgpO3lkKCk7UU9hPXt9Lmhhc093blByb3BlcnR5LEpPYT17fTtpKHk5dCwiZGVmYXVsdEJhY2tMYWJlbCIpO2koZG1lLCJnZm1Gb290bm90ZUh0bWwiKX0pO3ZhciBrOXQ9ZygoKT0+e3g5dCgpO3c5dCgpfSk7ZnVuY3Rpb24gdW1lKCl7cmV0dXJue2VudGVyOntzdHJpa2V0aHJvdWdoKCl7dGhpcy50YWcoIjxkZWw+Iil9fSxleGl0OntzdHJpa2V0aHJvdWdoKCl7dGhpcy50YWcoIjwvZGVsPiIpfX19fXZhciBTOXQ9ZygoKT0+e2kodW1lLCJnZm1TdHJpa2V0aHJvdWdoSHRtbCIpfSk7ZnVuY3Rpb24gcG1lKHMpe2xldCB0PShzfHx7fSkuc2luZ2xlVGlsZGUsYT17bmFtZToic3RyaWtldGhyb3VnaCIsdG9rZW5pemU6bixyZXNvbHZlQWxsOnJ9O3JldHVybiB0PT1udWxsJiYodD0hMCkse3RleHQ6ezEyNjphfSxpbnNpZGVTcGFuOntudWxsOlthXX0sYXR0ZW50aW9uTWFya2Vyczp7bnVsbDpbMTI2XX19O2Z1bmN0aW9uIHIobyxsKXtsZXQgcD0tMTtmb3IoOysrcDxvLmxlbmd0aDspaWYob1twXVswXT09PSJlbnRlciImJm9bcF1bMV0udHlwZT09PSJzdHJpa2V0aHJvdWdoU2VxdWVuY2VUZW1wb3JhcnkiJiZvW3BdWzFdLl9jbG9zZSl7bGV0IGQ9cDtmb3IoO2QtLTspaWYob1tkXVswXT09PSJleGl0IiYmb1tkXVsxXS50eXBlPT09InN0cmlrZXRocm91Z2hTZXF1ZW5jZVRlbXBvcmFyeSImJm9bZF1bMV0uX29wZW4mJm9bcF1bMV0uZW5kLm9mZnNldC1vW3BdWzFdLnN0YXJ0Lm9mZnNldD09PW9bZF1bMV0uZW5kLm9mZnNldC1vW2RdWzFdLnN0YXJ0Lm9mZnNldCl7b1twXVsxXS50eXBlPSJzdHJpa2V0aHJvdWdoU2VxdWVuY2UiLG9bZF1bMV0udHlwZT0ic3RyaWtldGhyb3VnaFNlcXVlbmNlIjtsZXQgdT17dHlwZToic3RyaWtldGhyb3VnaCIsc3RhcnQ6T2JqZWN0LmFzc2lnbih7fSxvW2RdWzFdLnN0YXJ0KSxlbmQ6T2JqZWN0LmFzc2lnbih7fSxvW3BdWzFdLmVuZCl9LGM9e3R5cGU6InN0cmlrZXRocm91Z2hUZXh0IixzdGFydDpPYmplY3QuYXNzaWduKHt9LG9bZF1bMV0uZW5kKSxlbmQ6T2JqZWN0LmFzc2lnbih7fSxvW3BdWzFdLnN0YXJ0KX0sYj1bWyJlbnRlciIsdSxsXSxbImVudGVyIixvW2RdWzFdLGxdLFsiZXhpdCIsb1tkXVsxXSxsXSxbImVudGVyIixjLGxdXSx2PWwucGFyc2VyLmNvbnN0cnVjdHMuaW5zaWRlU3Bhbi5udWxsO3YmJnNyKGIsYi5sZW5ndGgsMCxYcCh2LG8uc2xpY2UoZCsxLHApLGwpKSxzcihiLGIubGVuZ3RoLDAsW1siZXhpdCIsYyxsXSxbImVudGVyIixvW3BdWzFdLGxdLFsiZXhpdCIsb1twXVsxXSxsXSxbImV4aXQiLHUsbF1dKSxzcihvLGQtMSxwLWQrMyxiKSxwPWQrYi5sZW5ndGgtMjticmVha319Zm9yKHA9LTE7KytwPG8ubGVuZ3RoOylvW3BdWzFdLnR5cGU9PT0ic3RyaWtldGhyb3VnaFNlcXVlbmNlVGVtcG9yYXJ5IiYmKG9bcF1bMV0udHlwZT0iZGF0YSIpO3JldHVybiBvfWkociwicmVzb2x2ZUFsbFN0cmlrZXRocm91Z2giKTtmdW5jdGlvbiBuKG8sbCxwKXtsZXQgZD10aGlzLnByZXZpb3VzLHU9dGhpcy5ldmVudHMsYz0wO3JldHVybiBiO2Z1bmN0aW9uIGIoeCl7cmV0dXJuIGQ9PT0xMjYmJnVbdS5sZW5ndGgtMV1bMV0udHlwZSE9PSJjaGFyYWN0ZXJFc2NhcGUiP3AoeCk6KG8uZW50ZXIoInN0cmlrZXRocm91Z2hTZXF1ZW5jZVRlbXBvcmFyeSIpLHYoeCkpfWZ1bmN0aW9uIHYoeCl7bGV0IG09TDAoZCk7aWYoeD09PTEyNilyZXR1cm4gYz4xP3AoeCk6KG8uY29uc3VtZSh4KSxjKyssdik7aWYoYzwyJiYhdClyZXR1cm4gcCh4KTtsZXQgZj1vLmV4aXQoInN0cmlrZXRocm91Z2hTZXF1ZW5jZVRlbXBvcmFyeSIpLHk9TDAoeCk7cmV0dXJuIGYuX29wZW49IXl8fHk9PT0yJiYhIW0sZi5fY2xvc2U9IW18fG09PT0yJiYhIXksbCh4KX19aShuLCJ0b2tlbml6ZVN0cmlrZXRocm91Z2giKX12YXIgXzl0PWcoKCk9PntiZCgpO2xpZSgpO3VrKCk7aShwbWUsImdmbVN0cmlrZXRocm91Z2giKX0pO3ZhciBNOXQ9ZygoKT0+e1M5dCgpO185dCgpfSk7ZnVuY3Rpb24gZm1lKCl7cmV0dXJue2VudGVyOnt0YWJsZShzKXtsZXQgZT1zLl9hbGlnbjt0aGlzLmxpbmVFbmRpbmdJZk5lZWRlZCgpLHRoaXMudGFnKCI8dGFibGU+IiksdGhpcy5zZXREYXRhKCJ0YWJsZUFsaWduIixlKX0sdGFibGVCb2R5KCl7dGhpcy50YWcoIjx0Ym9keT4iKX0sdGFibGVEYXRhKCl7bGV0IHM9dGhpcy5nZXREYXRhKCJ0YWJsZUFsaWduIiksZT10aGlzLmdldERhdGEoInRhYmxlQ29sdW1uIiksdD1obWVbc1tlXV07dD09PXZvaWQgMD90aGlzLmJ1ZmZlcigpOih0aGlzLmxpbmVFbmRpbmdJZk5lZWRlZCgpLHRoaXMudGFnKCI8dGQiK3QrIj4iKSl9LHRhYmxlSGVhZCgpe3RoaXMubGluZUVuZGluZ0lmTmVlZGVkKCksdGhpcy50YWcoIjx0aGVhZD4iKX0sdGFibGVIZWFkZXIoKXtsZXQgcz10aGlzLmdldERhdGEoInRhYmxlQWxpZ24iKSxlPXRoaXMuZ2V0RGF0YSgidGFibGVDb2x1bW4iKSx0PWhtZVtzW2VdXTt0aGlzLmxpbmVFbmRpbmdJZk5lZWRlZCgpLHRoaXMudGFnKCI8dGgiK3QrIj4iKX0sdGFibGVSb3coKXt0aGlzLnNldERhdGEoInRhYmxlQ29sdW1uIiwwKSx0aGlzLmxpbmVFbmRpbmdJZk5lZWRlZCgpLHRoaXMudGFnKCI8dHI+Iil9fSxleGl0Ontjb2RlVGV4dERhdGEocyl7bGV0IGU9dGhpcy5zbGljZVNlcmlhbGl6ZShzKTt0aGlzLmdldERhdGEoInRhYmxlQWxpZ24iKSYmKGU9ZS5yZXBsYWNlKC9cXChbXFx8XSkvZyxlRmEpKSx0aGlzLnJhdyh0aGlzLmVuY29kZShlKSl9LHRhYmxlKCl7dGhpcy5zZXREYXRhKCJ0YWJsZUFsaWduIiksdGhpcy5zZXREYXRhKCJzbHVycEFsbExpbmVFbmRpbmdzIiksdGhpcy5saW5lRW5kaW5nSWZOZWVkZWQoKSx0aGlzLnRhZygiPC90YWJsZT4iKX0sdGFibGVCb2R5KCl7dGhpcy5saW5lRW5kaW5nSWZOZWVkZWQoKSx0aGlzLnRhZygiPC90Ym9keT4iKX0sdGFibGVEYXRhKCl7bGV0IHM9dGhpcy5nZXREYXRhKCJ0YWJsZUFsaWduIiksZT10aGlzLmdldERhdGEoInRhYmxlQ29sdW1uIik7ZSBpbiBzPyh0aGlzLnRhZygiPC90ZD4iKSx0aGlzLnNldERhdGEoInRhYmxlQ29sdW1uIixlKzEpKTp0aGlzLnJlc3VtZSgpfSx0YWJsZUhlYWQoKXt0aGlzLmxpbmVFbmRpbmdJZk5lZWRlZCgpLHRoaXMudGFnKCI8L3RoZWFkPiIpfSx0YWJsZUhlYWRlcigpe2xldCBzPXRoaXMuZ2V0RGF0YSgidGFibGVDb2x1bW4iKTt0aGlzLnRhZygiPC90aD4iKSx0aGlzLnNldERhdGEoInRhYmxlQ29sdW1uIixzKzEpfSx0YWJsZVJvdygpe2xldCBzPXRoaXMuZ2V0RGF0YSgidGFibGVBbGlnbiIpLGU9dGhpcy5nZXREYXRhKCJ0YWJsZUNvbHVtbiIpO2Zvcig7ZTxzLmxlbmd0aDspdGhpcy5saW5lRW5kaW5nSWZOZWVkZWQoKSx0aGlzLnRhZygiPHRkIitobWVbc1tlXV0rIj48L3RkPiIpLGUrKzt0aGlzLnNldERhdGEoInRhYmxlQ29sdW1uIixlKSx0aGlzLmxpbmVFbmRpbmdJZk5lZWRlZCgpLHRoaXMudGFnKCI8L3RyPiIpfX19fWZ1bmN0aW9uIGVGYShzLGUpe3JldHVybiBlPT09InwiP2U6c312YXIgaG1lLHo5dD1nKCgpPT57aG1lPXtub25lOiIiLGxlZnQ6JyBhbGlnbj0ibGVmdCInLHJpZ2h0OicgYWxpZ249InJpZ2h0IicsY2VudGVyOicgYWxpZ249ImNlbnRlciInfTtpKGZtZSwiZ2ZtVGFibGVIdG1sIik7aShlRmEsInJlcGxhY2UiKX0pO2Z1bmN0aW9uIHRGYShzLGUsdCxhKXtsZXQgcj0wO2lmKCEodD09PTAmJmEubGVuZ3RoPT09MCkpe2Zvcig7cjxzLm1hcC5sZW5ndGg7KXtpZihzLm1hcFtyXVswXT09PWUpe3MubWFwW3JdWzFdKz10LHMubWFwW3JdWzJdLnB1c2goLi4uYSk7cmV0dXJufXIrPTF9cy5tYXAucHVzaChbZSx0LGFdKX19dmFyIEVpZSxDOXQ9ZygoKT0+e0VpZT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJFZGl0TWFwIil9Y29uc3RydWN0b3IoKXt0aGlzLm1hcD1bXX1hZGQoZSx0LGEpe3RGYSh0aGlzLGUsdCxhKX1jb25zdW1lKGUpe2lmKHRoaXMubWFwLnNvcnQoZnVuY3Rpb24obixvKXtyZXR1cm4gblswXS1vWzBdfSksdGhpcy5tYXAubGVuZ3RoPT09MClyZXR1cm47bGV0IHQ9dGhpcy5tYXAubGVuZ3RoLGE9W107Zm9yKDt0PjA7KXQtPTEsYS5wdXNoKGUuc2xpY2UodGhpcy5tYXBbdF1bMF0rdGhpcy5tYXBbdF1bMV0pLHRoaXMubWFwW3RdWzJdKSxlLmxlbmd0aD10aGlzLm1hcFt0XVswXTthLnB1c2goZS5zbGljZSgpKSxlLmxlbmd0aD0wO2xldCByPWEucG9wKCk7Zm9yKDtyOyl7Zm9yKGxldCBuIG9mIHIpZS5wdXNoKG4pO3I9YS5wb3AoKX10aGlzLm1hcC5sZW5ndGg9MH19O2kodEZhLCJhZGRJbXBsZW1lbnRhdGlvbiIpfSk7ZnVuY3Rpb24gVDl0KHMsZSl7bGV0IHQ9ITEsYT1bXTtmb3IoO2U8cy5sZW5ndGg7KXtsZXQgcj1zW2VdO2lmKHQpe2lmKHJbMF09PT0iZW50ZXIiKXJbMV0udHlwZT09PSJ0YWJsZUNvbnRlbnQiJiZhLnB1c2goc1tlKzFdWzFdLnR5cGU9PT0idGFibGVEZWxpbWl0ZXJNYXJrZXIiPyJsZWZ0Ijoibm9uZSIpO2Vsc2UgaWYoclsxXS50eXBlPT09InRhYmxlQ29udGVudCIpe2lmKHNbZS0xXVsxXS50eXBlPT09InRhYmxlRGVsaW1pdGVyTWFya2VyIil7bGV0IG49YS5sZW5ndGgtMTthW25dPWFbbl09PT0ibGVmdCI/ImNlbnRlciI6InJpZ2h0In19ZWxzZSBpZihyWzFdLnR5cGU9PT0idGFibGVEZWxpbWl0ZXJSb3ciKWJyZWFrfWVsc2UgclswXT09PSJlbnRlciImJnJbMV0udHlwZT09PSJ0YWJsZURlbGltaXRlclJvdyImJih0PSEwKTtlKz0xfXJldHVybiBhfXZhciAkOXQ9ZygoKT0+e2koVDl0LCJnZm1UYWJsZUFsaWduIil9KTtmdW5jdGlvbiBtbWUoKXtyZXR1cm57Zmxvdzp7bnVsbDp7bmFtZToidGFibGUiLHRva2VuaXplOmFGYSxyZXNvbHZlQWxsOnNGYX19fX1mdW5jdGlvbiBhRmEocyxlLHQpe2xldCBhPXRoaXMscj0wLG49MCxvO3JldHVybiBsO2Z1bmN0aW9uIGwoSCl7bGV0IGs9YS5ldmVudHMubGVuZ3RoLTE7Zm9yKDtrPi0xOyl7bGV0IFA9YS5ldmVudHNba11bMV0udHlwZTtpZihQPT09ImxpbmVFbmRpbmcifHxQPT09ImxpbmVQcmVmaXgiKWstLTtlbHNlIGJyZWFrfWxldCBTPWs+LTE/YS5ldmVudHNba11bMV0udHlwZTpudWxsLEk9Uz09PSJ0YWJsZUhlYWQifHxTPT09InRhYmxlUm93Ij9fOnA7cmV0dXJuIEk9PT1fJiZhLnBhcnNlci5sYXp5W2Eubm93KCkubGluZV0/dChIKTpJKEgpfWZ1bmN0aW9uIHAoSCl7cmV0dXJuIHMuZW50ZXIoInRhYmxlSGVhZCIpLHMuZW50ZXIoInRhYmxlUm93IiksZChIKX1mdW5jdGlvbiBkKEgpe3JldHVybiBIPT09MTI0fHwobz0hMCxuKz0xKSx1KEgpfWZ1bmN0aW9uIHUoSCl7cmV0dXJuIEg9PT1udWxsP3QoSCk6dnQoSCk/bj4xPyhuPTAsYS5pbnRlcnJ1cHQ9ITAscy5leGl0KCJ0YWJsZVJvdyIpLHMuZW50ZXIoImxpbmVFbmRpbmciKSxzLmNvbnN1bWUoSCkscy5leGl0KCJsaW5lRW5kaW5nIiksdik6dChIKTpIdChIKT9LdChzLHUsIndoaXRlc3BhY2UiKShIKToobis9MSxvJiYobz0hMSxyKz0xKSxIPT09MTI0PyhzLmVudGVyKCJ0YWJsZUNlbGxEaXZpZGVyIikscy5jb25zdW1lKEgpLHMuZXhpdCgidGFibGVDZWxsRGl2aWRlciIpLG89ITAsdSk6KHMuZW50ZXIoImRhdGEiKSxjKEgpKSl9ZnVuY3Rpb24gYyhIKXtyZXR1cm4gSD09PW51bGx8fEg9PT0xMjR8fEFhKEgpPyhzLmV4aXQoImRhdGEiKSx1KEgpKToocy5jb25zdW1lKEgpLEg9PT05Mj9iOmMpfWZ1bmN0aW9uIGIoSCl7cmV0dXJuIEg9PT05Mnx8SD09PTEyND8ocy5jb25zdW1lKEgpLGMpOmMoSCl9ZnVuY3Rpb24gdihIKXtyZXR1cm4gYS5pbnRlcnJ1cHQ9ITEsYS5wYXJzZXIubGF6eVthLm5vdygpLmxpbmVdP3QoSCk6KHMuZW50ZXIoInRhYmxlRGVsaW1pdGVyUm93Iiksbz0hMSxIdChIKT9LdChzLHgsImxpbmVQcmVmaXgiLGEucGFyc2VyLmNvbnN0cnVjdHMuZGlzYWJsZS5udWxsLmluY2x1ZGVzKCJjb2RlSW5kZW50ZWQiKT92b2lkIDA6NCkoSCk6eChIKSl9ZnVuY3Rpb24geChIKXtyZXR1cm4gSD09PTQ1fHxIPT09NTg/ZihIKTpIPT09MTI0PyhvPSEwLHMuZW50ZXIoInRhYmxlQ2VsbERpdmlkZXIiKSxzLmNvbnN1bWUoSCkscy5leGl0KCJ0YWJsZUNlbGxEaXZpZGVyIiksbSk6QyhIKX1mdW5jdGlvbiBtKEgpe3JldHVybiBIdChIKT9LdChzLGYsIndoaXRlc3BhY2UiKShIKTpmKEgpfWZ1bmN0aW9uIGYoSCl7cmV0dXJuIEg9PT01OD8obis9MSxvPSEwLHMuZW50ZXIoInRhYmxlRGVsaW1pdGVyTWFya2VyIikscy5jb25zdW1lKEgpLHMuZXhpdCgidGFibGVEZWxpbWl0ZXJNYXJrZXIiKSx5KTpIPT09NDU/KG4rPTEseShIKSk6SD09PW51bGx8fHZ0KEgpP04oSCk6QyhIKX1mdW5jdGlvbiB5KEgpe3JldHVybiBIPT09NDU/KHMuZW50ZXIoInRhYmxlRGVsaW1pdGVyRmlsbGVyIiksTShIKSk6QyhIKX1mdW5jdGlvbiBNKEgpe3JldHVybiBIPT09NDU/KHMuY29uc3VtZShIKSxNKTpIPT09NTg/KG89ITAscy5leGl0KCJ0YWJsZURlbGltaXRlckZpbGxlciIpLHMuZW50ZXIoInRhYmxlRGVsaW1pdGVyTWFya2VyIikscy5jb25zdW1lKEgpLHMuZXhpdCgidGFibGVEZWxpbWl0ZXJNYXJrZXIiKSx6KToocy5leGl0KCJ0YWJsZURlbGltaXRlckZpbGxlciIpLHooSCkpfWZ1bmN0aW9uIHooSCl7cmV0dXJuIEh0KEgpP0t0KHMsTiwid2hpdGVzcGFjZSIpKEgpOk4oSCl9ZnVuY3Rpb24gTihIKXtyZXR1cm4gSD09PTEyND94KEgpOkg9PT1udWxsfHx2dChIKT8hb3x8ciE9PW4/QyhIKToocy5leGl0KCJ0YWJsZURlbGltaXRlclJvdyIpLHMuZXhpdCgidGFibGVIZWFkIiksZShIKSk6QyhIKX1mdW5jdGlvbiBDKEgpe3JldHVybiB0KEgpfWZ1bmN0aW9uIF8oSCl7cmV0dXJuIHMuZW50ZXIoInRhYmxlUm93IiksTyhIKX1mdW5jdGlvbiBPKEgpe3JldHVybiBIPT09MTI0PyhzLmVudGVyKCJ0YWJsZUNlbGxEaXZpZGVyIikscy5jb25zdW1lKEgpLHMuZXhpdCgidGFibGVDZWxsRGl2aWRlciIpLE8pOkg9PT1udWxsfHx2dChIKT8ocy5leGl0KCJ0YWJsZVJvdyIpLGUoSCkpOkh0KEgpP0t0KHMsTywid2hpdGVzcGFjZSIpKEgpOihzLmVudGVyKCJkYXRhIiksJChIKSl9ZnVuY3Rpb24gJChIKXtyZXR1cm4gSD09PW51bGx8fEg9PT0xMjR8fEFhKEgpPyhzLmV4aXQoImRhdGEiKSxPKEgpKToocy5jb25zdW1lKEgpLEg9PT05Mj9FOiQpfWZ1bmN0aW9uIEUoSCl7cmV0dXJuIEg9PT05Mnx8SD09PTEyND8ocy5jb25zdW1lKEgpLCQpOiQoSCl9fWZ1bmN0aW9uIHNGYShzLGUpe2xldCB0PS0xLGE9ITAscj0wLG49WzAsMCwwLDBdLG89WzAsMCwwLDBdLGw9ITEscD0wLGQsdSxjLGI9bmV3IEVpZTtmb3IoOysrdDxzLmxlbmd0aDspe2xldCB2PXNbdF0seD12WzFdO3ZbMF09PT0iZW50ZXIiP3gudHlwZT09PSJ0YWJsZUhlYWQiPyhsPSExLHAhPT0wJiYoRDl0KGIsZSxwLGQsdSksdT12b2lkIDAscD0wKSxkPXt0eXBlOiJ0YWJsZSIsc3RhcnQ6T2JqZWN0LmFzc2lnbih7fSx4LnN0YXJ0KSxlbmQ6T2JqZWN0LmFzc2lnbih7fSx4LmVuZCl9LGIuYWRkKHQsMCxbWyJlbnRlciIsZCxlXV0pKTp4LnR5cGU9PT0idGFibGVSb3cifHx4LnR5cGU9PT0idGFibGVEZWxpbWl0ZXJSb3ciPyhhPSEwLGM9dm9pZCAwLG49WzAsMCwwLDBdLG89WzAsdCsxLDAsMF0sbCYmKGw9ITEsdT17dHlwZToidGFibGVCb2R5IixzdGFydDpPYmplY3QuYXNzaWduKHt9LHguc3RhcnQpLGVuZDpPYmplY3QuYXNzaWduKHt9LHguZW5kKX0sYi5hZGQodCwwLFtbImVudGVyIix1LGVdXSkpLHI9eC50eXBlPT09InRhYmxlRGVsaW1pdGVyUm93Ij8yOnU/MzoxKTpyJiYoeC50eXBlPT09ImRhdGEifHx4LnR5cGU9PT0idGFibGVEZWxpbWl0ZXJNYXJrZXIifHx4LnR5cGU9PT0idGFibGVEZWxpbWl0ZXJGaWxsZXIiKT8oYT0hMSxvWzJdPT09MCYmKG5bMV0hPT0wJiYob1swXT1vWzFdLGM9UGllKGIsZSxuLHIsdm9pZCAwLGMpLG49WzAsMCwwLDBdKSxvWzJdPXQpKTp4LnR5cGU9PT0idGFibGVDZWxsRGl2aWRlciImJihhP2E9ITE6KG5bMV0hPT0wJiYob1swXT1vWzFdLGM9UGllKGIsZSxuLHIsdm9pZCAwLGMpKSxuPW8sbz1bblsxXSx0LDAsMF0pKTp4LnR5cGU9PT0idGFibGVIZWFkIj8obD0hMCxwPXQpOngudHlwZT09PSJ0YWJsZVJvdyJ8fHgudHlwZT09PSJ0YWJsZURlbGltaXRlclJvdyI/KHA9dCxuWzFdIT09MD8ob1swXT1vWzFdLGM9UGllKGIsZSxuLHIsdCxjKSk6b1sxXSE9PTAmJihjPVBpZShiLGUsbyxyLHQsYykpLHI9MCk6ciYmKHgudHlwZT09PSJkYXRhInx8eC50eXBlPT09InRhYmxlRGVsaW1pdGVyTWFya2VyInx8eC50eXBlPT09InRhYmxlRGVsaW1pdGVyRmlsbGVyIikmJihvWzNdPXQpfWZvcihwIT09MCYmRDl0KGIsZSxwLGQsdSksYi5jb25zdW1lKGUuZXZlbnRzKSx0PS0xOysrdDxlLmV2ZW50cy5sZW5ndGg7KXtsZXQgdj1lLmV2ZW50c1t0XTt2WzBdPT09ImVudGVyIiYmdlsxXS50eXBlPT09InRhYmxlIiYmKHZbMV0uX2FsaWduPVQ5dChlLmV2ZW50cyx0KSl9cmV0dXJuIHN9ZnVuY3Rpb24gUGllKHMsZSx0LGEscixuKXtsZXQgbz1hPT09MT8idGFibGVIZWFkZXIiOmE9PT0yPyJ0YWJsZURlbGltaXRlciI6InRhYmxlRGF0YSIsbD0idGFibGVDb250ZW50Ijt0WzBdIT09MCYmKG4uZW5kPU9iamVjdC5hc3NpZ24oe30sZWIoZS5ldmVudHMsdFswXSkpLHMuYWRkKHRbMF0sMCxbWyJleGl0IixuLGVdXSkpO2xldCBwPWViKGUuZXZlbnRzLHRbMV0pO2lmKG49e3R5cGU6byxzdGFydDpPYmplY3QuYXNzaWduKHt9LHApLGVuZDpPYmplY3QuYXNzaWduKHt9LHApfSxzLmFkZCh0WzFdLDAsW1siZW50ZXIiLG4sZV1dKSx0WzJdIT09MCl7bGV0IGQ9ZWIoZS5ldmVudHMsdFsyXSksdT1lYihlLmV2ZW50cyx0WzNdKSxjPXt0eXBlOmwsc3RhcnQ6T2JqZWN0LmFzc2lnbih7fSxkKSxlbmQ6T2JqZWN0LmFzc2lnbih7fSx1KX07aWYocy5hZGQodFsyXSwwLFtbImVudGVyIixjLGVdXSksYSE9PTIpe2xldCBiPWUuZXZlbnRzW3RbMl1dLHY9ZS5ldmVudHNbdFszXV07aWYoYlsxXS5lbmQ9T2JqZWN0LmFzc2lnbih7fSx2WzFdLmVuZCksYlsxXS50eXBlPSJjaHVua1RleHQiLGJbMV0uY29udGVudFR5cGU9InRleHQiLHRbM10+dFsyXSsxKXtsZXQgeD10WzJdKzEsbT10WzNdLXRbMl0tMTtzLmFkZCh4LG0sW10pfX1zLmFkZCh0WzNdKzEsMCxbWyJleGl0IixjLGVdXSl9cmV0dXJuIHIhPT12b2lkIDAmJihuLmVuZD1PYmplY3QuYXNzaWduKHt9LGViKGUuZXZlbnRzLHIpKSxzLmFkZChyLDAsW1siZXhpdCIsbixlXV0pLG49dm9pZCAwKSxufWZ1bmN0aW9uIEQ5dChzLGUsdCxhLHIpe2xldCBuPVtdLG89ZWIoZS5ldmVudHMsdCk7ciYmKHIuZW5kPU9iamVjdC5hc3NpZ24oe30sbyksbi5wdXNoKFsiZXhpdCIscixlXSkpLGEuZW5kPU9iamVjdC5hc3NpZ24oe30sbyksbi5wdXNoKFsiZXhpdCIsYSxlXSkscy5hZGQodCsxLDAsbil9ZnVuY3Rpb24gZWIocyxlKXtsZXQgdD1zW2VdLGE9dFswXT09PSJlbnRlciI/InN0YXJ0IjoiZW5kIjtyZXR1cm4gdFsxXVthXX12YXIgTDl0PWcoKCk9PntpcigpO1ZhKCk7Qzl0KCk7JDl0KCk7aShtbWUsImdmbVRhYmxlIik7aShhRmEsInRva2VuaXplVGFibGUiKTtpKHNGYSwicmVzb2x2ZVRhYmxlIik7aShQaWUsImZsdXNoQ2VsbCIpO2koRDl0LCJmbHVzaFRhYmxlRW5kIik7aShlYiwiZ2V0UG9pbnQiKX0pO3ZhciBFOXQ9ZygoKT0+e3o5dCgpO0w5dCgpfSk7ZnVuY3Rpb24gZ21lKCl7cmV0dXJue2V4aXQ6e2h0bWxGbG93RGF0YShzKXtJOXQuY2FsbCh0aGlzLHMsUDl0KX0saHRtbFRleHREYXRhKHMpe0k5dC5jYWxsKHRoaXMscyxpRmEpfX19fWZ1bmN0aW9uIEk5dChzLGUpe2xldCB0PXRoaXMuc2xpY2VTZXJpYWxpemUocyk7dGhpcy5vcHRpb25zLmFsbG93RGFuZ2Vyb3VzSHRtbCYmKHQ9dC5yZXBsYWNlKGUsIiZsdDskMSQyIikpLHRoaXMucmF3KHRoaXMuZW5jb2RlKHQpKX12YXIgUDl0LGlGYSxBOXQ9ZygoKT0+e1A5dD0vPChcLz8pKGlmcmFtZXxub2VtYmVkfG5vZnJhbWVzfHBsYWludGV4dHxzY3JpcHR8c3R5bGV8dGl0bGV8dGV4dGFyZWF8eG1wKSg/PVtcdFxuXGZcciAvPl0pL2dpLGlGYT1uZXcgUmVnRXhwKCJeIitQOXQuc291cmNlLCJpIik7aShnbWUsImdmbVRhZ2ZpbHRlckh0bWwiKTtpKEk5dCwiZXhpdEh0bWxEYXRhIil9KTt2YXIgTjl0PWcoKCk9PntBOXQoKX0pO2Z1bmN0aW9uIGJtZSgpe3JldHVybntlbnRlcjp7dGFza0xpc3RDaGVjaygpe3RoaXMudGFnKCc8aW5wdXQgdHlwZT0iY2hlY2tib3giIGRpc2FibGVkPSIiICcpfX0sZXhpdDp7dGFza0xpc3RDaGVjaygpe3RoaXMudGFnKCIvPiIpfSx0YXNrTGlzdENoZWNrVmFsdWVDaGVja2VkKCl7dGhpcy50YWcoJ2NoZWNrZWQ9IiIgJyl9fX19dmFyIFI5dD1nKCgpPT57aShibWUsImdmbVRhc2tMaXN0SXRlbUh0bWwiKX0pO2Z1bmN0aW9uIHZtZSgpe3JldHVybnt0ZXh0Ons5MTpyRmF9fX1mdW5jdGlvbiBvRmEocyxlLHQpe2xldCBhPXRoaXM7cmV0dXJuIHI7ZnVuY3Rpb24gcihwKXtyZXR1cm4gYS5wcmV2aW91cyE9PW51bGx8fCFhLl9nZm1UYXNrbGlzdEZpcnN0Q29udGVudE9mTGlzdEl0ZW0/dChwKToocy5lbnRlcigidGFza0xpc3RDaGVjayIpLHMuZW50ZXIoInRhc2tMaXN0Q2hlY2tNYXJrZXIiKSxzLmNvbnN1bWUocCkscy5leGl0KCJ0YXNrTGlzdENoZWNrTWFya2VyIiksbil9ZnVuY3Rpb24gbihwKXtyZXR1cm4gQWEocCk/KHMuZW50ZXIoInRhc2tMaXN0Q2hlY2tWYWx1ZVVuY2hlY2tlZCIpLHMuY29uc3VtZShwKSxzLmV4aXQoInRhc2tMaXN0Q2hlY2tWYWx1ZVVuY2hlY2tlZCIpLG8pOnA9PT04OHx8cD09PTEyMD8ocy5lbnRlcigidGFza0xpc3RDaGVja1ZhbHVlQ2hlY2tlZCIpLHMuY29uc3VtZShwKSxzLmV4aXQoInRhc2tMaXN0Q2hlY2tWYWx1ZUNoZWNrZWQiKSxvKTp0KHApfWZ1bmN0aW9uIG8ocCl7cmV0dXJuIHA9PT05Mz8ocy5lbnRlcigidGFza0xpc3RDaGVja01hcmtlciIpLHMuY29uc3VtZShwKSxzLmV4aXQoInRhc2tMaXN0Q2hlY2tNYXJrZXIiKSxzLmV4aXQoInRhc2tMaXN0Q2hlY2siKSxsKTp0KHApfWZ1bmN0aW9uIGwocCl7cmV0dXJuIHZ0KHApP2UocCk6SHQocCk/cy5jaGVjayh7dG9rZW5pemU6bkZhfSxlLHQpKHApOnQocCl9fWZ1bmN0aW9uIG5GYShzLGUsdCl7cmV0dXJuIEt0KHMsYSwid2hpdGVzcGFjZSIpO2Z1bmN0aW9uIGEocil7cmV0dXJuIHI9PT1udWxsP3Qocik6ZShyKX19dmFyIHJGYSxPOXQ9ZygoKT0+e2lyKCk7VmEoKTtyRmE9e25hbWU6InRhc2tsaXN0Q2hlY2siLHRva2VuaXplOm9GYX07aSh2bWUsImdmbVRhc2tMaXN0SXRlbSIpO2kob0ZhLCJ0b2tlbml6ZVRhc2tsaXN0Q2hlY2siKTtpKG5GYSwic3BhY2VUaGVuTm9uU3BhY2UiKX0pO3ZhciBGOXQ9ZygoKT0+e1I5dCgpO085dCgpfSk7ZnVuY3Rpb24gQjl0KHMpe3JldHVybiBnaWUoW0hmZSgpLGNtZSgpLHBtZShzKSxtbWUoKSx2bWUoKV0pfWZ1bmN0aW9uIGowaShzKXtyZXR1cm4gYmllKFtWZmUoKSxkbWUocyksdW1lKCksZm1lKCksZ21lKCksYm1lKCldKX12YXIgSDl0PWcoKCk9Pnt2aWUoKTtZN3QoKTtrOXQoKTtNOXQoKTtFOXQoKTtOOXQoKTtGOXQoKTtpKEI5dCwiZ2ZtIik7aShqMGksImdmbUh0bWwiKX0pO2Z1bmN0aW9uIHRiKHMpe2xldCBlPXRoaXMsdD1zfHxsRmEsYT1lLmRhdGEoKSxyPWEubWljcm9tYXJrRXh0ZW5zaW9uc3x8KGEubWljcm9tYXJrRXh0ZW5zaW9ucz1bXSksbj1hLmZyb21NYXJrZG93bkV4dGVuc2lvbnN8fChhLmZyb21NYXJrZG93bkV4dGVuc2lvbnM9W10pLG89YS50b01hcmtkb3duRXh0ZW5zaW9uc3x8KGEudG9NYXJrZG93bkV4dGVuc2lvbnM9W10pO3IucHVzaChCOXQodCkpLG4ucHVzaChOZmUoKSksby5wdXNoKFJmZSh0KSl9dmFyIGxGYSxxOXQ9ZygoKT0+e083dCgpO0g5dCgpO2xGYT17fTtpKHRiLCJyZW1hcmtHZm0iKX0pO3ZhciBqOXQ9ZygoKT0+e3E5dCgpfSk7ZnVuY3Rpb24geG1lKHMpe2xldCBlPXN8fHt9LHQ9ITAsYT17fSxyPVtbXV0sbj1bXSxvPVtdLHA9YmllKFt7ZW50ZXI6e2Jsb2NrUXVvdGU6Uixjb2RlRmVuY2VkOm1lLGNvZGVGZW5jZWRGZW5jZUluZm86Zixjb2RlRmVuY2VkRmVuY2VNZXRhOmYsY29kZUluZGVudGVkOmhlLGNvZGVUZXh0OmNlLGNvbnRlbnQ6VGUsZGVmaW5pdGlvbjp5ZSxkZWZpbml0aW9uRGVzdGluYXRpb25TdHJpbmc6QSxkZWZpbml0aW9uTGFiZWxTdHJpbmc6ZixkZWZpbml0aW9uVGl0bGVTdHJpbmc6ZixlbXBoYXNpczpnZSxodG1sRmxvdzpXZSxodG1sVGV4dDpNZSxpbWFnZTpqLGxhYmVsOmYsbGluazp1ZSxsaXN0SXRlbU1hcmtlcjprLGxpc3RJdGVtVmFsdWU6SCxsaXN0T3JkZXJlZDokLGxpc3RVbm9yZGVyZWQ6RSxwYXJhZ3JhcGg6VixyZWZlcmVuY2U6ZixyZXNvdXJjZTp0ZSxyZXNvdXJjZURlc3RpbmF0aW9uU3RyaW5nOmVlLHJlc291cmNlVGl0bGVTdHJpbmc6ZixzZXRleHRIZWFkaW5nOkJlLHN0cm9uZzpJZX0sZXhpdDp7YXR4SGVhZGluZzpEZSxhdHhIZWFkaW5nU2VxdWVuY2U6UmUsYXV0b2xpbmtFbWFpbDpqYSxhdXRvbGlua1Byb3RvY29sOlp0LGJsb2NrUXVvdGU6SyxjaGFyYWN0ZXJFc2NhcGVWYWx1ZTp2ZSxjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJIZXhhZGVjaW1hbDpvdCxjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJOdW1lcmljOm90LGNoYXJhY3RlclJlZmVyZW5jZVZhbHVlOlV0LGNvZGVGZW5jZWQ6Rixjb2RlRmVuY2VkRmVuY2U6VSxjb2RlRmVuY2VkRmVuY2VJbmZvOkIsY29kZUZlbmNlZEZlbmNlTWV0YTpPLGNvZGVGbG93VmFsdWU6RWUsY29kZUluZGVudGVkOkYsY29kZVRleHQ6ZGUsY29kZVRleHREYXRhOnZlLGRhdGE6dmUsZGVmaW5pdGlvbjphZSxkZWZpbml0aW9uRGVzdGluYXRpb25TdHJpbmc6c2UsZGVmaW5pdGlvbkxhYmVsU3RyaW5nOnEsZGVmaW5pdGlvblRpdGxlU3RyaW5nOm9lLGVtcGhhc2lzOkxlLGhhcmRCcmVha0VzY2FwZTpqZSxoYXJkQnJlYWtUcmFpbGluZzpqZSxodG1sRmxvdzpzdCxodG1sRmxvd0RhdGE6dmUsaHRtbFRleHQ6c3QsaHRtbFRleHREYXRhOnZlLGltYWdlOlosbGFiZWw6USxsYWJlbFRleHQ6bGUsbGluZUVuZGluZzpiZSxsaW5rOlosbGlzdE9yZGVyZWQ6UyxsaXN0VW5vcmRlcmVkOkkscGFyYWdyYXBoOlcscmVmZXJlbmNlOk8scmVmZXJlbmNlU3RyaW5nOmllLHJlc291cmNlOk8scmVzb3VyY2VEZXN0aW5hdGlvblN0cmluZzprZSxyZXNvdXJjZVRpdGxlU3RyaW5nOlgsc2V0ZXh0SGVhZGluZzpDZSxzZXRleHRIZWFkaW5nTGluZVNlcXVlbmNlOl9lLHNldGV4dEhlYWRpbmdUZXh0OkdlLHN0cm9uZzpLZSx0aGVtYXRpY0JyZWFrOlllfX0sLi4uZS5odG1sRXh0ZW5zaW9uc3x8W11dKSxkPXtkZWZpbml0aW9uczphLHRpZ2h0U3RhY2s6b30sdT17YnVmZmVyOmYsZW5jb2RlOl8sZ2V0RGF0YTptLGxpbmVFbmRpbmdJZk5lZWRlZDpDLG9wdGlvbnM6ZSxyYXc6eixyZXN1bWU6eSxzZXREYXRhOngsdGFnOk19LGM9ZS5kZWZhdWx0TGluZUVuZGluZztyZXR1cm4gYjtmdW5jdGlvbiBiKGV0KXtsZXQgYnQ9LTEseWE9MCxlcz1bXSxycz1bXSxwcz1bXTtmb3IoOysrYnQ8ZXQubGVuZ3RoOykhYyYmKGV0W2J0XVsxXS50eXBlPT09ImxpbmVFbmRpbmcifHxldFtidF1bMV0udHlwZT09PSJsaW5lRW5kaW5nQmxhbmsiKSYmKGM9ZXRbYnRdWzJdLnNsaWNlU2VyaWFsaXplKGV0W2J0XVsxXSkpLChldFtidF1bMV0udHlwZT09PSJsaXN0T3JkZXJlZCJ8fGV0W2J0XVsxXS50eXBlPT09Imxpc3RVbm9yZGVyZWQiKSYmKGV0W2J0XVswXT09PSJlbnRlciI/ZXMucHVzaChidCk6dihldC5zbGljZShlcy5wb3AoKSxidCkpKSxldFtidF1bMV0udHlwZT09PSJkZWZpbml0aW9uIiYmKGV0W2J0XVswXT09PSJlbnRlciI/KHBzPU1yKHBzLGV0LnNsaWNlKHlhLGJ0KSkseWE9YnQpOihycz1NcihycyxldC5zbGljZSh5YSxidCsxKSkseWE9YnQrMSkpO3JzPU1yKHJzLHBzKSxycz1NcihycyxldC5zbGljZSh5YSkpLGJ0PS0xO2xldCBucz1ycztmb3IocC5lbnRlci5udWxsJiZwLmVudGVyLm51bGwuY2FsbCh1KTsrK2J0PGV0Lmxlbmd0aDspe2xldCB0aT1wW25zW2J0XVswXV0sYWk9bnNbYnRdWzFdLnR5cGUsemU9dGlbYWldO1Y5dC5jYWxsKHRpLGFpKSYmemUmJnplLmNhbGwoe3NsaWNlU2VyaWFsaXplOm5zW2J0XVsyXS5zbGljZVNlcmlhbGl6ZSwuLi51fSxuc1tidF1bMV0pfXJldHVybiBwLmV4aXQubnVsbCYmcC5leGl0Lm51bGwuY2FsbCh1KSxyWzBdLmpvaW4oIiIpfWZ1bmN0aW9uIHYoZXQpe2xldCBidD1ldC5sZW5ndGgseWE9MCxlcz0wLHJzPSExLHBzO2Zvcig7Kyt5YTxidDspe2xldCBucz1ldFt5YV07aWYobnNbMV0uX2NvbnRhaW5lcilwcz12b2lkIDAsbnNbMF09PT0iZW50ZXIiP2VzKys6ZXMtLTtlbHNlIHN3aXRjaChuc1sxXS50eXBlKXtjYXNlImxpc3RJdGVtUHJlZml4Ijp7bnNbMF09PT0iZXhpdCImJihwcz0hMCk7YnJlYWt9Y2FzZSJsaW5lUHJlZml4IjpicmVhaztjYXNlImxpbmVFbmRpbmdCbGFuayI6e25zWzBdPT09ImVudGVyIiYmIWVzJiYocHM/cHM9dm9pZCAwOnJzPSEwKTticmVha31kZWZhdWx0OnBzPXZvaWQgMH19ZXRbMF1bMV0uX2xvb3NlPXJzfWZ1bmN0aW9uIHgoZXQsYnQpe2RbZXRdPWJ0fWZ1bmN0aW9uIG0oZXQpe3JldHVybiBkW2V0XX1mdW5jdGlvbiBmKCl7ci5wdXNoKFtdKX1mdW5jdGlvbiB5KCl7cmV0dXJuIHIucG9wKCkuam9pbigiIil9ZnVuY3Rpb24gTShldCl7dCYmKHgoImxhc3RXYXNUYWciLCEwKSxyW3IubGVuZ3RoLTFdLnB1c2goZXQpKX1mdW5jdGlvbiB6KGV0KXt4KCJsYXN0V2FzVGFnIikscltyLmxlbmd0aC0xXS5wdXNoKGV0KX1mdW5jdGlvbiBOKCl7eihjfHxgCmApfWZ1bmN0aW9uIEMoKXtsZXQgZXQ9cltyLmxlbmd0aC0xXSxidD1ldFtldC5sZW5ndGgtMV0seWE9YnQ/YnQuY2hhckNvZGVBdChidC5sZW5ndGgtMSk6bnVsbDt5YT09PTEwfHx5YT09PTEzfHx5YT09PW51bGx8fE4oKX1mdW5jdGlvbiBfKGV0KXtyZXR1cm4gbSgiaWdub3JlRW5jb2RlIik/ZXQ6eGllKGV0KX1mdW5jdGlvbiBPKCl7eSgpfWZ1bmN0aW9uICQoZXQpe28ucHVzaCghZXQuX2xvb3NlKSxDKCksTSgiPG9sIikseCgiZXhwZWN0Rmlyc3RJdGVtIiwhMCl9ZnVuY3Rpb24gRShldCl7by5wdXNoKCFldC5fbG9vc2UpLEMoKSxNKCI8dWwiKSx4KCJleHBlY3RGaXJzdEl0ZW0iLCEwKX1mdW5jdGlvbiBIKGV0KXtpZihtKCJleHBlY3RGaXJzdEl0ZW0iKSl7bGV0IGJ0PU51bWJlci5wYXJzZUludCh0aGlzLnNsaWNlU2VyaWFsaXplKGV0KSwxMCk7YnQhPT0xJiZNKCcgc3RhcnQ9IicrXyhTdHJpbmcoYnQpKSsnIicpfX1mdW5jdGlvbiBrKCl7bSgiZXhwZWN0Rmlyc3RJdGVtIik/TSgiPiIpOlAoKSxDKCksTSgiPGxpPiIpLHgoImV4cGVjdEZpcnN0SXRlbSIpLHgoImxhc3RXYXNUYWciKX1mdW5jdGlvbiBTKCl7UCgpLG8ucG9wKCksTigpLE0oIjwvb2w+Iil9ZnVuY3Rpb24gSSgpe1AoKSxvLnBvcCgpLE4oKSxNKCI8L3VsPiIpfWZ1bmN0aW9uIFAoKXttKCJsYXN0V2FzVGFnIikmJiFtKCJzbHVycEFsbExpbmVFbmRpbmdzIikmJkMoKSxNKCI8L2xpPiIpLHgoInNsdXJwQWxsTGluZUVuZGluZ3MiKX1mdW5jdGlvbiBSKCl7by5wdXNoKCExKSxDKCksTSgiPGJsb2NrcXVvdGU+Iil9ZnVuY3Rpb24gSygpe28ucG9wKCksQygpLE0oIjwvYmxvY2txdW90ZT4iKSx4KCJzbHVycEFsbExpbmVFbmRpbmdzIil9ZnVuY3Rpb24gVigpe29bby5sZW5ndGgtMV18fChDKCksTSgiPHA+IikpLHgoInNsdXJwQWxsTGluZUVuZGluZ3MiKX1mdW5jdGlvbiBXKCl7b1tvLmxlbmd0aC0xXT94KCJzbHVycEFsbExpbmVFbmRpbmdzIiwhMCk6TSgiPC9wPiIpfWZ1bmN0aW9uIG1lKCl7QygpLE0oIjxwcmU+PGNvZGUiKSx4KCJmZW5jZXNDb3VudCIsMCl9ZnVuY3Rpb24gQigpe2xldCBldD15KCk7TSgnIGNsYXNzPSJsYW5ndWFnZS0nK2V0KyciJyl9ZnVuY3Rpb24gVSgpe2xldCBldD1tKCJmZW5jZXNDb3VudCIpfHwwO2V0fHwoTSgiPiIpLHgoInNsdXJwT25lTGluZUVuZGluZyIsITApKSx4KCJmZW5jZXNDb3VudCIsZXQrMSl9ZnVuY3Rpb24gaGUoKXtDKCksTSgiPHByZT48Y29kZT4iKX1mdW5jdGlvbiBGKCl7bGV0IGV0PW0oImZlbmNlc0NvdW50Iik7ZXQhPT12b2lkIDAmJmV0PDImJmQudGlnaHRTdGFjay5sZW5ndGg+MCYmIW0oImxhc3RXYXNUYWciKSYmTigpLG0oImZsb3dDb2RlU2VlbkRhdGEiKSYmQygpLE0oIjwvY29kZT48L3ByZT4iKSxldCE9PXZvaWQgMCYmZXQ8MiYmQygpLHgoImZsb3dDb2RlU2VlbkRhdGEiKSx4KCJmZW5jZXNDb3VudCIpLHgoInNsdXJwT25lTGluZUVuZGluZyIpfWZ1bmN0aW9uIGooKXtuLnB1c2goe2ltYWdlOiEwfSksdD12b2lkIDB9ZnVuY3Rpb24gdWUoKXtuLnB1c2goe30pfWZ1bmN0aW9uIGxlKGV0KXtuW24ubGVuZ3RoLTFdLmxhYmVsSWQ9dGhpcy5zbGljZVNlcmlhbGl6ZShldCl9ZnVuY3Rpb24gUSgpe25bbi5sZW5ndGgtMV0ubGFiZWw9eSgpfWZ1bmN0aW9uIGllKGV0KXtuW24ubGVuZ3RoLTFdLnJlZmVyZW5jZUlkPXRoaXMuc2xpY2VTZXJpYWxpemUoZXQpfWZ1bmN0aW9uIHRlKCl7ZigpLG5bbi5sZW5ndGgtMV0uZGVzdGluYXRpb249IiJ9ZnVuY3Rpb24gZWUoKXtmKCkseCgiaWdub3JlRW5jb2RlIiwhMCl9ZnVuY3Rpb24ga2UoKXtuW24ubGVuZ3RoLTFdLmRlc3RpbmF0aW9uPXkoKSx4KCJpZ25vcmVFbmNvZGUiKX1mdW5jdGlvbiBYKCl7bltuLmxlbmd0aC0xXS50aXRsZT15KCl9ZnVuY3Rpb24gWigpe2xldCBldD1uLmxlbmd0aC0xLGJ0PW5bZXRdLHlhPWJ0LnJlZmVyZW5jZUlkfHxidC5sYWJlbElkLGVzPWJ0LmRlc3RpbmF0aW9uPT09dm9pZCAwP2FbSGkoeWEpXTpidDtmb3IodD0hMDtldC0tOylpZihuW2V0XS5pbWFnZSl7dD12b2lkIDA7YnJlYWt9YnQuaW1hZ2U/KE0oJzxpbWcgc3JjPSInK3hkKGVzLmRlc3RpbmF0aW9uLGUuYWxsb3dEYW5nZXJvdXNQcm90b2NvbD92b2lkIDA6Y0ZhKSsnIiBhbHQ9IicpLHooYnQubGFiZWwpLE0oJyInKSk6TSgnPGEgaHJlZj0iJyt4ZChlcy5kZXN0aW5hdGlvbixlLmFsbG93RGFuZ2Vyb3VzUHJvdG9jb2w/dm9pZCAwOlU5dCkrJyInKSxNKGVzLnRpdGxlPycgdGl0bGU9IicrZXMudGl0bGUrJyInOiIiKSxidC5pbWFnZT9NKCIgLz4iKTooTSgiPiIpLHooYnQubGFiZWwpLE0oIjwvYT4iKSksbi5wb3AoKX1mdW5jdGlvbiB5ZSgpe2YoKSxuLnB1c2goe30pfWZ1bmN0aW9uIHEoZXQpe3koKSxuW24ubGVuZ3RoLTFdLmxhYmVsSWQ9dGhpcy5zbGljZVNlcmlhbGl6ZShldCl9ZnVuY3Rpb24gQSgpe2YoKSx4KCJpZ25vcmVFbmNvZGUiLCEwKX1mdW5jdGlvbiBzZSgpe25bbi5sZW5ndGgtMV0uZGVzdGluYXRpb249eSgpLHgoImlnbm9yZUVuY29kZSIpfWZ1bmN0aW9uIG9lKCl7bltuLmxlbmd0aC0xXS50aXRsZT15KCl9ZnVuY3Rpb24gYWUoKXtsZXQgZXQ9bltuLmxlbmd0aC0xXSxidD1IaShldC5sYWJlbElkKTt5KCksVjl0LmNhbGwoYSxidCl8fChhW2J0XT1uW24ubGVuZ3RoLTFdKSxuLnBvcCgpfWZ1bmN0aW9uIFRlKCl7eCgic2x1cnBBbGxMaW5lRW5kaW5ncyIsITApfWZ1bmN0aW9uIFJlKGV0KXttKCJoZWFkaW5nUmFuayIpfHwoeCgiaGVhZGluZ1JhbmsiLHRoaXMuc2xpY2VTZXJpYWxpemUoZXQpLmxlbmd0aCksQygpLE0oIjxoIittKCJoZWFkaW5nUmFuayIpKyI+IikpfWZ1bmN0aW9uIEJlKCl7ZigpLHgoInNsdXJwQWxsTGluZUVuZGluZ3MiKX1mdW5jdGlvbiBHZSgpe3goInNsdXJwQWxsTGluZUVuZGluZ3MiLCEwKX1mdW5jdGlvbiBEZSgpe00oIjwvaCIrbSgiaGVhZGluZ1JhbmsiKSsiPiIpLHgoImhlYWRpbmdSYW5rIil9ZnVuY3Rpb24gX2UoZXQpe3goImhlYWRpbmdSYW5rIix0aGlzLnNsaWNlU2VyaWFsaXplKGV0KS5jaGFyQ29kZUF0KDApPT09NjE/MToyKX1mdW5jdGlvbiBDZSgpe2xldCBldD15KCk7QygpLE0oIjxoIittKCJoZWFkaW5nUmFuayIpKyI+IikseihldCksTSgiPC9oIittKCJoZWFkaW5nUmFuayIpKyI+IikseCgic2x1cnBBbGxMaW5lRW5kaW5ncyIpLHgoImhlYWRpbmdSYW5rIil9ZnVuY3Rpb24gdmUoZXQpe3ooXyh0aGlzLnNsaWNlU2VyaWFsaXplKGV0KSkpfWZ1bmN0aW9uIGJlKGV0KXtpZighbSgic2x1cnBBbGxMaW5lRW5kaW5ncyIpKXtpZihtKCJzbHVycE9uZUxpbmVFbmRpbmciKSl7eCgic2x1cnBPbmVMaW5lRW5kaW5nIik7cmV0dXJufWlmKG0oImluQ29kZVRleHQiKSl7eigiICIpO3JldHVybn16KF8odGhpcy5zbGljZVNlcmlhbGl6ZShldCkpKX19ZnVuY3Rpb24gRWUoZXQpe3ooXyh0aGlzLnNsaWNlU2VyaWFsaXplKGV0KSkpLHgoImZsb3dDb2RlU2VlbkRhdGEiLCEwKX1mdW5jdGlvbiBqZSgpe00oIjxiciAvPiIpfWZ1bmN0aW9uIFdlKCl7QygpLE1lKCl9ZnVuY3Rpb24gc3QoKXt4KCJpZ25vcmVFbmNvZGUiKX1mdW5jdGlvbiBNZSgpe2UuYWxsb3dEYW5nZXJvdXNIdG1sJiZ4KCJpZ25vcmVFbmNvZGUiLCEwKX1mdW5jdGlvbiBnZSgpe00oIjxlbT4iKX1mdW5jdGlvbiBJZSgpe00oIjxzdHJvbmc+Iil9ZnVuY3Rpb24gY2UoKXt4KCJpbkNvZGVUZXh0IiwhMCksTSgiPGNvZGU+Iil9ZnVuY3Rpb24gZGUoKXt4KCJpbkNvZGVUZXh0IiksTSgiPC9jb2RlPiIpfWZ1bmN0aW9uIExlKCl7TSgiPC9lbT4iKX1mdW5jdGlvbiBLZSgpe00oIjwvc3Ryb25nPiIpfWZ1bmN0aW9uIFllKCl7QygpLE0oIjxociAvPiIpfWZ1bmN0aW9uIG90KGV0KXt4KCJjaGFyYWN0ZXJSZWZlcmVuY2VUeXBlIixldC50eXBlKX1mdW5jdGlvbiBVdChldCl7bGV0IGJ0PXRoaXMuc2xpY2VTZXJpYWxpemUoZXQpLHlhPW0oImNoYXJhY3RlclJlZmVyZW5jZVR5cGUiKT9KOShidCxtKCJjaGFyYWN0ZXJSZWZlcmVuY2VUeXBlIik9PT0iY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VyTnVtZXJpYyI/MTA6MTYpOlpwKGJ0KTt6KF8oeWEpKSx4KCJjaGFyYWN0ZXJSZWZlcmVuY2VUeXBlIil9ZnVuY3Rpb24gWnQoZXQpe2xldCBidD10aGlzLnNsaWNlU2VyaWFsaXplKGV0KTtNKCc8YSBocmVmPSInK3hkKGJ0LGUuYWxsb3dEYW5nZXJvdXNQcm90b2NvbD92b2lkIDA6VTl0KSsnIj4nKSx6KF8oYnQpKSxNKCI8L2E+Iil9ZnVuY3Rpb24gamEoZXQpe2xldCBidD10aGlzLnNsaWNlU2VyaWFsaXplKGV0KTtNKCc8YSBocmVmPSInK3hkKCJtYWlsdG86IitidCkrJyI+JykseihfKGJ0KSksTSgiPC9hPiIpfX12YXIgVjl0LFU5dCxjRmEseW1lPWcoKCk9PntkaygpO2JkKCk7dmllKCk7aGllKCk7cWZlKCk7WXAoKTt5ZCgpO1Y5dD17fS5oYXNPd25Qcm9wZXJ0eSxVOXQ9L14oaHR0cHM/fGlyY3M/fG1haWx0b3x4bXBwKSQvaSxjRmE9L15odHRwcz8kL2k7aSh4bWUsImNvbXBpbGUiKX0pO2Z1bmN0aW9uIGRGYShzKXtsZXQgZT1zLmF0dGVtcHQodGhpcy5wYXJzZXIuY29uc3RydWN0cy5jb250ZW50SW5pdGlhbCxhLHIpLHQ7cmV0dXJuIGU7ZnVuY3Rpb24gYShsKXtpZihsPT09bnVsbCl7cy5jb25zdW1lKGwpO3JldHVybn1yZXR1cm4gcy5lbnRlcigibGluZUVuZGluZyIpLHMuY29uc3VtZShsKSxzLmV4aXQoImxpbmVFbmRpbmciKSxLdChzLGUsImxpbmVQcmVmaXgiKX1mdW5jdGlvbiByKGwpe3JldHVybiBzLmVudGVyKCJwYXJhZ3JhcGgiKSxuKGwpfWZ1bmN0aW9uIG4obCl7bGV0IHA9cy5lbnRlcigiY2h1bmtUZXh0Iix7Y29udGVudFR5cGU6InRleHQiLHByZXZpb3VzOnR9KTtyZXR1cm4gdCYmKHQubmV4dD1wKSx0PXAsbyhsKX1mdW5jdGlvbiBvKGwpe2lmKGw9PT1udWxsKXtzLmV4aXQoImNodW5rVGV4dCIpLHMuZXhpdCgicGFyYWdyYXBoIikscy5jb25zdW1lKGwpO3JldHVybn1yZXR1cm4gdnQobCk/KHMuY29uc3VtZShsKSxzLmV4aXQoImNodW5rVGV4dCIpLG4pOihzLmNvbnN1bWUobCksbyl9fXZhciBXOXQsRzl0PWcoKCk9PntpcigpO1ZhKCk7Vzl0PXt0b2tlbml6ZTpkRmF9O2koZEZhLCJpbml0aWFsaXplQ29udGVudCIpfSk7ZnVuY3Rpb24gdUZhKHMpe2xldCBlPXRoaXMsdD1bXSxhPTAscixuLG87cmV0dXJuIGw7ZnVuY3Rpb24gbCh6KXtpZihhPHQubGVuZ3RoKXtsZXQgTj10W2FdO3JldHVybiBlLmNvbnRhaW5lclN0YXRlPU5bMV0scy5hdHRlbXB0KE5bMF0uY29udGludWF0aW9uLHAsZCkoeil9cmV0dXJuIGQoeil9ZnVuY3Rpb24gcCh6KXtpZihhKyssZS5jb250YWluZXJTdGF0ZS5fY2xvc2VGbG93KXtlLmNvbnRhaW5lclN0YXRlLl9jbG9zZUZsb3c9dm9pZCAwLHImJk0oKTtsZXQgTj1lLmV2ZW50cy5sZW5ndGgsQz1OLF87Zm9yKDtDLS07KWlmKGUuZXZlbnRzW0NdWzBdPT09ImV4aXQiJiZlLmV2ZW50c1tDXVsxXS50eXBlPT09ImNodW5rRmxvdyIpe189ZS5ldmVudHNbQ11bMV0uZW5kO2JyZWFrfXkoYSk7bGV0IE89Tjtmb3IoO088ZS5ldmVudHMubGVuZ3RoOyllLmV2ZW50c1tPXVsxXS5lbmQ9ey4uLl99LE8rKztyZXR1cm4gc3IoZS5ldmVudHMsQysxLDAsZS5ldmVudHMuc2xpY2UoTikpLGUuZXZlbnRzLmxlbmd0aD1PLGQoeil9cmV0dXJuIGwoeil9ZnVuY3Rpb24gZCh6KXtpZihhPT09dC5sZW5ndGgpe2lmKCFyKXJldHVybiBiKHopO2lmKHIuY3VycmVudENvbnN0cnVjdCYmci5jdXJyZW50Q29uc3RydWN0LmNvbmNyZXRlKXJldHVybiB4KHopO2UuaW50ZXJydXB0PSEhKHIuY3VycmVudENvbnN0cnVjdCYmIXIuX2dmbVRhYmxlRHluYW1pY0ludGVycnVwdEhhY2spfXJldHVybiBlLmNvbnRhaW5lclN0YXRlPXt9LHMuY2hlY2soSzl0LHUsYykoeil9ZnVuY3Rpb24gdSh6KXtyZXR1cm4gciYmTSgpLHkoYSksYih6KX1mdW5jdGlvbiBjKHope3JldHVybiBlLnBhcnNlci5sYXp5W2Uubm93KCkubGluZV09YSE9PXQubGVuZ3RoLG89ZS5ub3coKS5vZmZzZXQseCh6KX1mdW5jdGlvbiBiKHope3JldHVybiBlLmNvbnRhaW5lclN0YXRlPXt9LHMuYXR0ZW1wdChLOXQsdix4KSh6KX1mdW5jdGlvbiB2KHope3JldHVybiBhKyssdC5wdXNoKFtlLmN1cnJlbnRDb25zdHJ1Y3QsZS5jb250YWluZXJTdGF0ZV0pLGIoeil9ZnVuY3Rpb24geCh6KXtpZih6PT09bnVsbCl7ciYmTSgpLHkoMCkscy5jb25zdW1lKHopO3JldHVybn1yZXR1cm4gcj1yfHxlLnBhcnNlci5mbG93KGUubm93KCkpLHMuZW50ZXIoImNodW5rRmxvdyIse190b2tlbml6ZXI6cixjb250ZW50VHlwZToiZmxvdyIscHJldmlvdXM6bn0pLG0oeil9ZnVuY3Rpb24gbSh6KXtpZih6PT09bnVsbCl7ZihzLmV4aXQoImNodW5rRmxvdyIpLCEwKSx5KDApLHMuY29uc3VtZSh6KTtyZXR1cm59cmV0dXJuIHZ0KHopPyhzLmNvbnN1bWUoeiksZihzLmV4aXQoImNodW5rRmxvdyIpKSxhPTAsZS5pbnRlcnJ1cHQ9dm9pZCAwLGwpOihzLmNvbnN1bWUoeiksbSl9ZnVuY3Rpb24gZih6LE4pe2xldCBDPWUuc2xpY2VTdHJlYW0oeik7aWYoTiYmQy5wdXNoKG51bGwpLHoucHJldmlvdXM9bixuJiYobi5uZXh0PXopLG49eixyLmRlZmluZVNraXAoei5zdGFydCksci53cml0ZShDKSxlLnBhcnNlci5sYXp5W3ouc3RhcnQubGluZV0pe2xldCBfPXIuZXZlbnRzLmxlbmd0aDtmb3IoO18tLTspaWYoci5ldmVudHNbX11bMV0uc3RhcnQub2Zmc2V0PG8mJighci5ldmVudHNbX11bMV0uZW5kfHxyLmV2ZW50c1tfXVsxXS5lbmQub2Zmc2V0Pm8pKXJldHVybjtsZXQgTz1lLmV2ZW50cy5sZW5ndGgsJD1PLEUsSDtmb3IoOyQtLTspaWYoZS5ldmVudHNbJF1bMF09PT0iZXhpdCImJmUuZXZlbnRzWyRdWzFdLnR5cGU9PT0iY2h1bmtGbG93Iil7aWYoRSl7SD1lLmV2ZW50c1skXVsxXS5lbmQ7YnJlYWt9RT0hMH1mb3IoeShhKSxfPU87XzxlLmV2ZW50cy5sZW5ndGg7KWUuZXZlbnRzW19dWzFdLmVuZD17Li4uSH0sXysrO3NyKGUuZXZlbnRzLCQrMSwwLGUuZXZlbnRzLnNsaWNlKE8pKSxlLmV2ZW50cy5sZW5ndGg9X319ZnVuY3Rpb24geSh6KXtsZXQgTj10Lmxlbmd0aDtmb3IoO04tLSA+ejspe2xldCBDPXRbTl07ZS5jb250YWluZXJTdGF0ZT1DWzFdLENbMF0uZXhpdC5jYWxsKGUscyl9dC5sZW5ndGg9en1mdW5jdGlvbiBNKCl7ci53cml0ZShbbnVsbF0pLG49dm9pZCAwLHI9dm9pZCAwLGUuY29udGFpbmVyU3RhdGUuX2Nsb3NlRmxvdz12b2lkIDB9fWZ1bmN0aW9uIHBGYShzLGUsdCl7cmV0dXJuIEt0KHMscy5hdHRlbXB0KHRoaXMucGFyc2VyLmNvbnN0cnVjdHMuZG9jdW1lbnQsZSx0KSwibGluZVByZWZpeCIsdGhpcy5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoImNvZGVJbmRlbnRlZCIpP3ZvaWQgMDo0KX12YXIgWTl0LEs5dCxaOXQ9ZygoKT0+e2lyKCk7VmEoKTtiZCgpO1k5dD17dG9rZW5pemU6dUZhfSxLOXQ9e3Rva2VuaXplOnBGYX07aSh1RmEsImluaXRpYWxpemVEb2N1bWVudCIpO2kocEZhLCJ0b2tlbml6ZUNvbnRhaW5lciIpfSk7ZnVuY3Rpb24gaEZhKHMpe2xldCBlPXRoaXMsdD1zLmF0dGVtcHQod2QsYSxzLmF0dGVtcHQodGhpcy5wYXJzZXIuY29uc3RydWN0cy5mbG93SW5pdGlhbCxyLEt0KHMscy5hdHRlbXB0KHRoaXMucGFyc2VyLmNvbnN0cnVjdHMuZmxvdyxyLHMuYXR0ZW1wdChZZmUscikpLCJsaW5lUHJlZml4IikpKTtyZXR1cm4gdDtmdW5jdGlvbiBhKG4pe2lmKG49PT1udWxsKXtzLmNvbnN1bWUobik7cmV0dXJufXJldHVybiBzLmVudGVyKCJsaW5lRW5kaW5nQmxhbmsiKSxzLmNvbnN1bWUobikscy5leGl0KCJsaW5lRW5kaW5nQmxhbmsiKSxlLmN1cnJlbnRDb25zdHJ1Y3Q9dm9pZCAwLHR9ZnVuY3Rpb24gcihuKXtpZihuPT09bnVsbCl7cy5jb25zdW1lKG4pO3JldHVybn1yZXR1cm4gcy5lbnRlcigibGluZUVuZGluZyIpLHMuY29uc3VtZShuKSxzLmV4aXQoImxpbmVFbmRpbmciKSxlLmN1cnJlbnRDb25zdHJ1Y3Q9dm9pZCAwLHR9fXZhciBYOXQsUTl0PWcoKCk9PntMaWUoKTtpcigpO1ZhKCk7WDl0PXt0b2tlbml6ZTpoRmF9O2koaEZhLCJpbml0aWFsaXplRmxvdyIpfSk7ZnVuY3Rpb24gSjl0KHMpe3JldHVybntyZXNvbHZlQWxsOmVidChzPT09InRleHQiP2ZGYTp2b2lkIDApLHRva2VuaXplOmV9O2Z1bmN0aW9uIGUodCl7bGV0IGE9dGhpcyxyPXRoaXMucGFyc2VyLmNvbnN0cnVjdHNbc10sbj10LmF0dGVtcHQocixvLGwpO3JldHVybiBvO2Z1bmN0aW9uIG8odSl7cmV0dXJuIGQodSk/bih1KTpsKHUpfWZ1bmN0aW9uIGwodSl7aWYodT09PW51bGwpe3QuY29uc3VtZSh1KTtyZXR1cm59cmV0dXJuIHQuZW50ZXIoImRhdGEiKSx0LmNvbnN1bWUodSkscH1mdW5jdGlvbiBwKHUpe3JldHVybiBkKHUpPyh0LmV4aXQoImRhdGEiKSxuKHUpKToodC5jb25zdW1lKHUpLHApfWZ1bmN0aW9uIGQodSl7aWYodT09PW51bGwpcmV0dXJuITA7bGV0IGM9clt1XSxiPS0xO2lmKGMpZm9yKDsrK2I8Yy5sZW5ndGg7KXtsZXQgdj1jW2JdO2lmKCF2LnByZXZpb3VzfHx2LnByZXZpb3VzLmNhbGwoYSxhLnByZXZpb3VzKSlyZXR1cm4hMH1yZXR1cm4hMX19fWZ1bmN0aW9uIGVidChzKXtyZXR1cm4gZTtmdW5jdGlvbiBlKHQsYSl7bGV0IHI9LTEsbjtmb3IoOysrcjw9dC5sZW5ndGg7KW49PT12b2lkIDA/dFtyXSYmdFtyXVsxXS50eXBlPT09ImRhdGEiJiYobj1yLHIrKyk6KCF0W3JdfHx0W3JdWzFdLnR5cGUhPT0iZGF0YSIpJiYociE9PW4rMiYmKHRbbl1bMV0uZW5kPXRbci0xXVsxXS5lbmQsdC5zcGxpY2UobisyLHItbi0yKSxyPW4rMiksbj12b2lkIDApO3JldHVybiBzP3ModCxhKTp0fX1mdW5jdGlvbiBmRmEocyxlKXtsZXQgdD0wO2Zvcig7Kyt0PD1zLmxlbmd0aDspaWYoKHQ9PT1zLmxlbmd0aHx8c1t0XVsxXS50eXBlPT09ImxpbmVFbmRpbmciKSYmc1t0LTFdWzFdLnR5cGU9PT0iZGF0YSIpe2xldCBhPXNbdC0xXVsxXSxyPWUuc2xpY2VTdHJlYW0oYSksbj1yLmxlbmd0aCxvPS0xLGw9MCxwO2Zvcig7bi0tOyl7bGV0IGQ9cltuXTtpZih0eXBlb2YgZD09InN0cmluZyIpe2ZvcihvPWQubGVuZ3RoO2QuY2hhckNvZGVBdChvLTEpPT09MzI7KWwrKyxvLS07aWYobylicmVhaztvPS0xfWVsc2UgaWYoZD09PS0yKXA9ITAsbCsrO2Vsc2UgaWYoZCE9PS0xKXtuKys7YnJlYWt9fWlmKGUuX2NvbnRlbnRUeXBlVGV4dFRyYWlsaW5nJiZ0PT09cy5sZW5ndGgmJihsPTApLGwpe2xldCBkPXt0eXBlOnQ9PT1zLmxlbmd0aHx8cHx8bDwyPyJsaW5lU3VmZml4IjoiaGFyZEJyZWFrVHJhaWxpbmciLHN0YXJ0OntfYnVmZmVySW5kZXg6bj9vOmEuc3RhcnQuX2J1ZmZlckluZGV4K28sX2luZGV4OmEuc3RhcnQuX2luZGV4K24sbGluZTphLmVuZC5saW5lLGNvbHVtbjphLmVuZC5jb2x1bW4tbCxvZmZzZXQ6YS5lbmQub2Zmc2V0LWx9LGVuZDp7Li4uYS5lbmR9fTthLmVuZD17Li4uZC5zdGFydH0sYS5zdGFydC5vZmZzZXQ9PT1hLmVuZC5vZmZzZXQ/T2JqZWN0LmFzc2lnbihhLGQpOihzLnNwbGljZSh0LDAsWyJlbnRlciIsZCxlXSxbImV4aXQiLGQsZV0pLHQrPTIpfXQrK31yZXR1cm4gc312YXIgdGJ0LGFidCxzYnQsd21lPWcoKCk9Pnt0YnQ9e3Jlc29sdmVBbGw6ZWJ0KCl9LGFidD1KOXQoInN0cmluZyIpLHNidD1KOXQoInRleHQiKTtpKEo5dCwiaW5pdGlhbGl6ZUZhY3RvcnkiKTtpKGVidCwiY3JlYXRlUmVzb2x2ZXIiKTtpKGZGYSwicmVzb2x2ZUFsbExpbmVTdWZmaXhlcyIpfSk7dmFyIGttZT17fTt5dChrbWUse2F0dGVudGlvbk1hcmtlcnM6KCk9PmtGYSxjb250ZW50SW5pdGlhbDooKT0+Z0ZhLGRpc2FibGU6KCk9PlNGYSxkb2N1bWVudDooKT0+bUZhLGZsb3c6KCk9PnZGYSxmbG93SW5pdGlhbDooKT0+YkZhLGluc2lkZVNwYW46KCk9PndGYSxzdHJpbmc6KCk9PnhGYSx0ZXh0OigpPT55RmF9KTt2YXIgbUZhLGdGYSxiRmEsdkZhLHhGYSx5RmEsd0ZhLGtGYSxTRmEsaWJ0PWcoKCk9PntMaWUoKTt3bWUoKTttRmE9ezQyOmVuLDQzOmVuLDQ1OmVuLDQ4OmVuLDQ5OmVuLDUwOmVuLDUxOmVuLDUyOmVuLDUzOmVuLDU0OmVuLDU1OmVuLDU2OmVuLDU3OmVuLDYyOndpZX0sZ0ZhPXs5MTplbWV9LGJGYT17Wy0yXTpoayxbLTFdOmhrLDMyOmhrfSx2RmE9ezM1OmFtZSw0MjpFMyw0NTpbRGllLEUzXSw2MDppbWUsNjE6RGllLDk1OkUzLDk2Ol9pZSwxMjY6X2llfSx4RmE9ezM4OlNpZSw5MjpraWV9LHlGYT17Wy01XTpnayxbLTRdOmdrLFstM106Z2ssMzM6b21lLDM4OlNpZSw0Mjpwayw2MDpbVWZlLHJtZV0sOTE6bm1lLDkyOlt0bWUsa2llXSw5MzpMMyw5NTpwayw5NjpXZmV9LHdGYT17bnVsbDpbcGssdGJ0XX0sa0ZhPXtudWxsOls0Miw5NV19LFNGYT17bnVsbDpbXX19KTtmdW5jdGlvbiByYnQocyxlLHQpe2xldCBhPXtfYnVmZmVySW5kZXg6LTEsX2luZGV4OjAsbGluZTp0JiZ0LmxpbmV8fDEsY29sdW1uOnQmJnQuY29sdW1ufHwxLG9mZnNldDp0JiZ0Lm9mZnNldHx8MH0scj17fSxuPVtdLG89W10sbD1bXSxwPSEwLGQ9e2F0dGVtcHQ6RShPKSxjaGVjazpFKCQpLGNvbnN1bWU6TixlbnRlcjpDLGV4aXQ6XyxpbnRlcnJ1cHQ6RSgkLHtpbnRlcnJ1cHQ6ITB9KX0sdT17Y29kZTpudWxsLGNvbnRhaW5lclN0YXRlOnt9LGRlZmluZVNraXA6eSxldmVudHM6W10sbm93OmYscGFyc2VyOnMscHJldmlvdXM6bnVsbCxzbGljZVNlcmlhbGl6ZTp4LHNsaWNlU3RyZWFtOm0sd3JpdGU6dn0sYz1lLnRva2VuaXplLmNhbGwodSxkKSxiO3JldHVybiBlLnJlc29sdmVBbGwmJm4ucHVzaChlKSx1O2Z1bmN0aW9uIHYoSSl7cmV0dXJuIG89TXIobyxJKSxNKCksb1tvLmxlbmd0aC0xXSE9PW51bGw/W106KEgoZSwwKSx1LmV2ZW50cz1YcChuLHUuZXZlbnRzLHUpLHUuZXZlbnRzKX1pKHYsIndyaXRlIik7ZnVuY3Rpb24geChJLFApe3JldHVybiBNRmEobShJKSxQKX1pKHgsInNsaWNlU2VyaWFsaXplIik7ZnVuY3Rpb24gbShJKXtyZXR1cm4gX0ZhKG8sSSl9aShtLCJzbGljZVN0cmVhbSIpO2Z1bmN0aW9uIGYoKXtsZXR7X2J1ZmZlckluZGV4OkksX2luZGV4OlAsbGluZTpSLGNvbHVtbjpLLG9mZnNldDpWfT1hO3JldHVybntfYnVmZmVySW5kZXg6SSxfaW5kZXg6UCxsaW5lOlIsY29sdW1uOkssb2Zmc2V0OlZ9fWkoZiwibm93Iik7ZnVuY3Rpb24geShJKXtyW0kubGluZV09SS5jb2x1bW4sUygpfWkoeSwiZGVmaW5lU2tpcCIpO2Z1bmN0aW9uIE0oKXtsZXQgSTtmb3IoO2EuX2luZGV4PG8ubGVuZ3RoOyl7bGV0IFA9b1thLl9pbmRleF07aWYodHlwZW9mIFA9PSJzdHJpbmciKWZvcihJPWEuX2luZGV4LGEuX2J1ZmZlckluZGV4PDAmJihhLl9idWZmZXJJbmRleD0wKTthLl9pbmRleD09PUkmJmEuX2J1ZmZlckluZGV4PFAubGVuZ3RoOyl6KFAuY2hhckNvZGVBdChhLl9idWZmZXJJbmRleCkpO2Vsc2UgeihQKX19aShNLCJtYWluIik7ZnVuY3Rpb24geihJKXtwPXZvaWQgMCxiPUksYz1jKEkpfWkoeiwiZ28iKTtmdW5jdGlvbiBOKEkpe3Z0KEkpPyhhLmxpbmUrKyxhLmNvbHVtbj0xLGEub2Zmc2V0Kz1JPT09LTM/MjoxLFMoKSk6SSE9PS0xJiYoYS5jb2x1bW4rKyxhLm9mZnNldCsrKSxhLl9idWZmZXJJbmRleDwwP2EuX2luZGV4Kys6KGEuX2J1ZmZlckluZGV4KyssYS5fYnVmZmVySW5kZXg9PT1vW2EuX2luZGV4XS5sZW5ndGgmJihhLl9idWZmZXJJbmRleD0tMSxhLl9pbmRleCsrKSksdS5wcmV2aW91cz1JLHA9ITB9aShOLCJjb25zdW1lIik7ZnVuY3Rpb24gQyhJLFApe2xldCBSPVB8fHt9O3JldHVybiBSLnR5cGU9SSxSLnN0YXJ0PWYoKSx1LmV2ZW50cy5wdXNoKFsiZW50ZXIiLFIsdV0pLGwucHVzaChSKSxSfWkoQywiZW50ZXIiKTtmdW5jdGlvbiBfKEkpe2xldCBQPWwucG9wKCk7cmV0dXJuIFAuZW5kPWYoKSx1LmV2ZW50cy5wdXNoKFsiZXhpdCIsUCx1XSksUH1pKF8sImV4aXQiKTtmdW5jdGlvbiBPKEksUCl7SChJLFAuZnJvbSl9aShPLCJvbnN1Y2Nlc3NmdWxjb25zdHJ1Y3QiKTtmdW5jdGlvbiAkKEksUCl7UC5yZXN0b3JlKCl9aSgkLCJvbnN1Y2Nlc3NmdWxjaGVjayIpO2Z1bmN0aW9uIEUoSSxQKXtyZXR1cm4gUjtmdW5jdGlvbiBSKEssVixXKXtsZXQgbWUsQixVLGhlO3JldHVybiBBcnJheS5pc0FycmF5KEspP2ooSyk6InRva2VuaXplImluIEs/aihbS10pOkYoSyk7ZnVuY3Rpb24gRihpZSl7cmV0dXJuIHRlO2Z1bmN0aW9uIHRlKGVlKXtsZXQga2U9ZWUhPT1udWxsJiZpZVtlZV0sWD1lZSE9PW51bGwmJmllLm51bGwsWj1bLi4uQXJyYXkuaXNBcnJheShrZSk/a2U6a2U/W2tlXTpbXSwuLi5BcnJheS5pc0FycmF5KFgpP1g6WD9bWF06W11dO3JldHVybiBqKFopKGVlKX19ZnVuY3Rpb24gaihpZSl7cmV0dXJuIG1lPWllLEI9MCxpZS5sZW5ndGg9PT0wP1c6dWUoaWVbQl0pfWZ1bmN0aW9uIHVlKGllKXtyZXR1cm4gdGU7ZnVuY3Rpb24gdGUoZWUpe3JldHVybiBoZT1rKCksVT1pZSxpZS5wYXJ0aWFsfHwodS5jdXJyZW50Q29uc3RydWN0PWllKSxpZS5uYW1lJiZ1LnBhcnNlci5jb25zdHJ1Y3RzLmRpc2FibGUubnVsbC5pbmNsdWRlcyhpZS5uYW1lKT9RKGVlKTppZS50b2tlbml6ZS5jYWxsKFA/T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKHUpLFApOnUsZCxsZSxRKShlZSl9fWZ1bmN0aW9uIGxlKGllKXtyZXR1cm4gcD0hMCxJKFUsaGUpLFZ9ZnVuY3Rpb24gUShpZSl7cmV0dXJuIHA9ITAsaGUucmVzdG9yZSgpLCsrQjxtZS5sZW5ndGg/dWUobWVbQl0pOld9fX1pKEUsImNvbnN0cnVjdEZhY3RvcnkiKTtmdW5jdGlvbiBIKEksUCl7SS5yZXNvbHZlQWxsJiYhbi5pbmNsdWRlcyhJKSYmbi5wdXNoKEkpLEkucmVzb2x2ZSYmc3IodS5ldmVudHMsUCx1LmV2ZW50cy5sZW5ndGgtUCxJLnJlc29sdmUodS5ldmVudHMuc2xpY2UoUCksdSkpLEkucmVzb2x2ZVRvJiYodS5ldmVudHM9SS5yZXNvbHZlVG8odS5ldmVudHMsdSkpfWkoSCwiYWRkUmVzdWx0Iik7ZnVuY3Rpb24gaygpe2xldCBJPWYoKSxQPXUucHJldmlvdXMsUj11LmN1cnJlbnRDb25zdHJ1Y3QsSz11LmV2ZW50cy5sZW5ndGgsVj1BcnJheS5mcm9tKGwpO3JldHVybntmcm9tOksscmVzdG9yZTpXfTtmdW5jdGlvbiBXKCl7YT1JLHUucHJldmlvdXM9UCx1LmN1cnJlbnRDb25zdHJ1Y3Q9Uix1LmV2ZW50cy5sZW5ndGg9SyxsPVYsUygpfX1pKGssInN0b3JlIik7ZnVuY3Rpb24gUygpe2EubGluZSBpbiByJiZhLmNvbHVtbjwyJiYoYS5jb2x1bW49clthLmxpbmVdLGEub2Zmc2V0Kz1yW2EubGluZV0tMSl9aShTLCJhY2NvdW50Rm9yUG90ZW50aWFsU2tpcCIpfWZ1bmN0aW9uIF9GYShzLGUpe2xldCB0PWUuc3RhcnQuX2luZGV4LGE9ZS5zdGFydC5fYnVmZmVySW5kZXgscj1lLmVuZC5faW5kZXgsbj1lLmVuZC5fYnVmZmVySW5kZXgsbztpZih0PT09cilvPVtzW3RdLnNsaWNlKGEsbildO2Vsc2V7aWYobz1zLnNsaWNlKHQsciksYT4tMSl7bGV0IGw9b1swXTt0eXBlb2YgbD09InN0cmluZyI/b1swXT1sLnNsaWNlKGEpOm8uc2hpZnQoKX1uPjAmJm8ucHVzaChzW3JdLnNsaWNlKDAsbikpfXJldHVybiBvfWZ1bmN0aW9uIE1GYShzLGUpe2xldCB0PS0xLGE9W10scjtmb3IoOysrdDxzLmxlbmd0aDspe2xldCBuPXNbdF0sbztpZih0eXBlb2Ygbj09InN0cmluZyIpbz1uO2Vsc2Ugc3dpdGNoKG4pe2Nhc2UtNTp7bz0iXHIiO2JyZWFrfWNhc2UtNDp7bz1gCmA7YnJlYWt9Y2FzZS0zOntvPWBccgpgO2JyZWFrfWNhc2UtMjp7bz1lPyIgIjoiCSI7YnJlYWt9Y2FzZS0xOntpZighZSYmciljb250aW51ZTtvPSIgIjticmVha31kZWZhdWx0Om89U3RyaW5nLmZyb21DaGFyQ29kZShuKX1yPW49PT0tMixhLnB1c2gobyl9cmV0dXJuIGEuam9pbigiIil9dmFyIG9idD1nKCgpPT57VmEoKTtiZCgpO3VrKCk7aShyYnQsImNyZWF0ZVRva2VuaXplciIpO2koX0ZhLCJzbGljZUNodW5rcyIpO2koTUZhLCJzZXJpYWxpemVDaHVua3MiKX0pO2Z1bmN0aW9uIGJrKHMpe2xldCBhPXtjb25zdHJ1Y3RzOmdpZShba21lLC4uLihzfHx7fSkuZXh0ZW5zaW9uc3x8W11dKSxjb250ZW50OnIoVzl0KSxkZWZpbmVkOltdLGRvY3VtZW50OnIoWTl0KSxmbG93OnIoWDl0KSxsYXp5Ont9LHN0cmluZzpyKGFidCksdGV4dDpyKHNidCl9O3JldHVybiBhO2Z1bmN0aW9uIHIobil7cmV0dXJuIG87ZnVuY3Rpb24gbyhsKXtyZXR1cm4gcmJ0KGEsbixsKX19fXZhciBTbWU9ZygoKT0+e3ZpZSgpO0c5dCgpO1o5dCgpO1E5dCgpO3dtZSgpO2lidCgpO29idCgpO2koYmssInBhcnNlIil9KTtmdW5jdGlvbiB2ayhzKXtmb3IoOyFNaWUocyk7KTtyZXR1cm4gc312YXIgX21lPWcoKCk9PntLZmUoKTtpKHZrLCJwb3N0cHJvY2VzcyIpfSk7ZnVuY3Rpb24geGsoKXtsZXQgcz0xLGU9IiIsdD0hMCxhO3JldHVybiByO2Z1bmN0aW9uIHIobixvLGwpe2xldCBwPVtdLGQsdSxjLGIsdjtmb3Iobj1lKyh0eXBlb2Ygbj09InN0cmluZyI/bi50b1N0cmluZygpOm5ldyBUZXh0RGVjb2RlcihvfHx2b2lkIDApLmRlY29kZShuKSksYz0wLGU9IiIsdCYmKG4uY2hhckNvZGVBdCgwKT09PTY1Mjc5JiZjKyssdD12b2lkIDApO2M8bi5sZW5ndGg7KXtpZihuYnQubGFzdEluZGV4PWMsZD1uYnQuZXhlYyhuKSxiPWQmJmQuaW5kZXghPT12b2lkIDA/ZC5pbmRleDpuLmxlbmd0aCx2PW4uY2hhckNvZGVBdChiKSwhZCl7ZT1uLnNsaWNlKGMpO2JyZWFrfWlmKHY9PT0xMCYmYz09PWImJmEpcC5wdXNoKC0zKSxhPXZvaWQgMDtlbHNlIHN3aXRjaChhJiYocC5wdXNoKC01KSxhPXZvaWQgMCksYzxiJiYocC5wdXNoKG4uc2xpY2UoYyxiKSkscys9Yi1jKSx2KXtjYXNlIDA6e3AucHVzaCg2NTUzMykscysrO2JyZWFrfWNhc2UgOTp7Zm9yKHU9TWF0aC5jZWlsKHMvNCkqNCxwLnB1c2goLTIpO3MrKzx1OylwLnB1c2goLTEpO2JyZWFrfWNhc2UgMTA6e3AucHVzaCgtNCkscz0xO2JyZWFrfWRlZmF1bHQ6YT0hMCxzPTF9Yz1iKzF9cmV0dXJuIGwmJihhJiZwLnB1c2goLTUpLGUmJnAucHVzaChlKSxwLnB1c2gobnVsbCkpLHB9fXZhciBuYnQsTW1lPWcoKCk9PntuYnQ9L1tcMFx0XG5ccl0vZztpKHhrLCJwcmVwcm9jZXNzIil9KTtmdW5jdGlvbiBLdWkocyxlLHQpe3JldHVybiB0eXBlb2YgZSE9InN0cmluZyImJih0PWUsZT12b2lkIDApLHhtZSh0KSh2ayhiayh0KS5kb2N1bWVudCgpLndyaXRlKHhrKCkocyxlLCEwKSkpKX12YXIgbGJ0PWcoKCk9Pnt5bWUoKTtTbWUoKTtfbWUoKTtNbWUoKTt5bWUoKTtTbWUoKTtfbWUoKTtNbWUoKTtpKEt1aSwibWljcm9tYXJrIil9KTtmdW5jdGlvbiB6bWUocyxlLHQpe3JldHVybiBlJiZ0eXBlb2YgZT09Im9iamVjdCImJih0PWUsZT12b2lkIDApLHpGYSh0KSh2ayhiayh0KS5kb2N1bWVudCgpLndyaXRlKHhrKCkocyxlLCEwKSkpKX1mdW5jdGlvbiB6RmEocyl7bGV0IGU9e3RyYW5zZm9ybXM6W10sY2FuQ29udGFpbkVvbHM6WyJlbXBoYXNpcyIsImZyYWdtZW50IiwiaGVhZGluZyIsInBhcmFncmFwaCIsInN0cm9uZyJdLGVudGVyOnthdXRvbGluazpuKGFlKSxhdXRvbGlua1Byb3RvY29sOkUsYXV0b2xpbmtFbWFpbDpFLGF0eEhlYWRpbmc6bihxKSxibG9ja1F1b3RlOm4oZWUpLGNoYXJhY3RlckVzY2FwZTpFLGNoYXJhY3RlclJlZmVyZW5jZTpFLGNvZGVGZW5jZWQ6bihrZSksY29kZUZlbmNlZEZlbmNlSW5mbzpvLGNvZGVGZW5jZWRGZW5jZU1ldGE6byxjb2RlSW5kZW50ZWQ6bihrZSxvKSxjb2RlVGV4dDpuKFgsbyksY29kZVRleHREYXRhOkUsZGF0YTpFLGNvZGVGbG93VmFsdWU6RSxkZWZpbml0aW9uOm4oWiksZGVmaW5pdGlvbkRlc3RpbmF0aW9uU3RyaW5nOm8sZGVmaW5pdGlvbkxhYmVsU3RyaW5nOm8sZGVmaW5pdGlvblRpdGxlU3RyaW5nOm8sZW1waGFzaXM6bih5ZSksaGFyZEJyZWFrRXNjYXBlOm4oQSksaGFyZEJyZWFrVHJhaWxpbmc6bihBKSxodG1sRmxvdzpuKHNlLG8pLGh0bWxGbG93RGF0YTpFLGh0bWxUZXh0Om4oc2UsbyksaHRtbFRleHREYXRhOkUsaW1hZ2U6bihvZSksbGFiZWw6byxsaW5rOm4oYWUpLGxpc3RJdGVtOm4oUmUpLGxpc3RJdGVtVmFsdWU6YixsaXN0T3JkZXJlZDpuKFRlLGMpLGxpc3RVbm9yZGVyZWQ6bihUZSkscGFyYWdyYXBoOm4oQmUpLHJlZmVyZW5jZTpGLHJlZmVyZW5jZVN0cmluZzpvLHJlc291cmNlRGVzdGluYXRpb25TdHJpbmc6byxyZXNvdXJjZVRpdGxlU3RyaW5nOm8sc2V0ZXh0SGVhZGluZzpuKHEpLHN0cm9uZzpuKEdlKSx0aGVtYXRpY0JyZWFrOm4oX2UpfSxleGl0OnthdHhIZWFkaW5nOnAoKSxhdHhIZWFkaW5nU2VxdWVuY2U6QyxhdXRvbGluazpwKCksYXV0b2xpbmtFbWFpbDp0ZSxhdXRvbGlua1Byb3RvY29sOmllLGJsb2NrUXVvdGU6cCgpLGNoYXJhY3RlckVzY2FwZVZhbHVlOkgsY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VySGV4YWRlY2ltYWw6dWUsY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VyTnVtZXJpYzp1ZSxjaGFyYWN0ZXJSZWZlcmVuY2VWYWx1ZTpsZSxjaGFyYWN0ZXJSZWZlcmVuY2U6USxjb2RlRmVuY2VkOnAoZiksY29kZUZlbmNlZEZlbmNlOm0sY29kZUZlbmNlZEZlbmNlSW5mbzp2LGNvZGVGZW5jZWRGZW5jZU1ldGE6eCxjb2RlRmxvd1ZhbHVlOkgsY29kZUluZGVudGVkOnAoeSksY29kZVRleHQ6cChSKSxjb2RlVGV4dERhdGE6SCxkYXRhOkgsZGVmaW5pdGlvbjpwKCksZGVmaW5pdGlvbkRlc3RpbmF0aW9uU3RyaW5nOk4sZGVmaW5pdGlvbkxhYmVsU3RyaW5nOk0sZGVmaW5pdGlvblRpdGxlU3RyaW5nOnosZW1waGFzaXM6cCgpLGhhcmRCcmVha0VzY2FwZTpwKFMpLGhhcmRCcmVha1RyYWlsaW5nOnAoUyksaHRtbEZsb3c6cChJKSxodG1sRmxvd0RhdGE6SCxodG1sVGV4dDpwKFApLGh0bWxUZXh0RGF0YTpILGltYWdlOnAoViksbGFiZWw6bWUsbGFiZWxUZXh0OlcsbGluZUVuZGluZzprLGxpbms6cChLKSxsaXN0SXRlbTpwKCksbGlzdE9yZGVyZWQ6cCgpLGxpc3RVbm9yZGVyZWQ6cCgpLHBhcmFncmFwaDpwKCkscmVmZXJlbmNlU3RyaW5nOmoscmVzb3VyY2VEZXN0aW5hdGlvblN0cmluZzpCLHJlc291cmNlVGl0bGVTdHJpbmc6VSxyZXNvdXJjZTpoZSxzZXRleHRIZWFkaW5nOnAoJCksc2V0ZXh0SGVhZGluZ0xpbmVTZXF1ZW5jZTpPLHNldGV4dEhlYWRpbmdUZXh0Ol8sc3Ryb25nOnAoKSx0aGVtYXRpY0JyZWFrOnAoKX19O2RidChlLChzfHx7fSkubWRhc3RFeHRlbnNpb25zfHxbXSk7bGV0IHQ9e307cmV0dXJuIGE7ZnVuY3Rpb24gYShDZSl7bGV0IHZlPXt0eXBlOiJyb290IixjaGlsZHJlbjpbXX0sYmU9e3N0YWNrOlt2ZV0sdG9rZW5TdGFjazpbXSxjb25maWc6ZSxlbnRlcjpsLGV4aXQ6ZCxidWZmZXI6byxyZXN1bWU6dSxkYXRhOnR9LEVlPVtdLGplPS0xO2Zvcig7KytqZTxDZS5sZW5ndGg7KWlmKENlW2plXVsxXS50eXBlPT09Imxpc3RPcmRlcmVkInx8Q2VbamVdWzFdLnR5cGU9PT0ibGlzdFVub3JkZXJlZCIpaWYoQ2VbamVdWzBdPT09ImVudGVyIilFZS5wdXNoKGplKTtlbHNle2xldCBXZT1FZS5wb3AoKTtqZT1yKENlLFdlLGplKX1mb3IoamU9LTE7KytqZTxDZS5sZW5ndGg7KXtsZXQgV2U9ZVtDZVtqZV1bMF1dO2NidC5jYWxsKFdlLENlW2plXVsxXS50eXBlKSYmV2VbQ2VbamVdWzFdLnR5cGVdLmNhbGwoT2JqZWN0LmFzc2lnbih7c2xpY2VTZXJpYWxpemU6Q2VbamVdWzJdLnNsaWNlU2VyaWFsaXplfSxiZSksQ2VbamVdWzFdKX1pZihiZS50b2tlblN0YWNrLmxlbmd0aD4wKXtsZXQgV2U9YmUudG9rZW5TdGFja1tiZS50b2tlblN0YWNrLmxlbmd0aC0xXTsoV2VbMV18fHVidCkuY2FsbChiZSx2b2lkIDAsV2VbMF0pfWZvcih2ZS5wb3NpdGlvbj17c3RhcnQ6UXAoQ2UubGVuZ3RoPjA/Q2VbMF1bMV0uc3RhcnQ6e2xpbmU6MSxjb2x1bW46MSxvZmZzZXQ6MH0pLGVuZDpRcChDZS5sZW5ndGg+MD9DZVtDZS5sZW5ndGgtMl1bMV0uZW5kOntsaW5lOjEsY29sdW1uOjEsb2Zmc2V0OjB9KX0samU9LTE7KytqZTxlLnRyYW5zZm9ybXMubGVuZ3RoOyl2ZT1lLnRyYW5zZm9ybXNbamVdKHZlKXx8dmU7cmV0dXJuIHZlfWZ1bmN0aW9uIHIoQ2UsdmUsYmUpe2xldCBFZT12ZS0xLGplPS0xLFdlPSExLHN0LE1lLGdlLEllO2Zvcig7KytFZTw9YmU7KXtsZXQgY2U9Q2VbRWVdO3N3aXRjaChjZVsxXS50eXBlKXtjYXNlImxpc3RVbm9yZGVyZWQiOmNhc2UibGlzdE9yZGVyZWQiOmNhc2UiYmxvY2tRdW90ZSI6e2NlWzBdPT09ImVudGVyIj9qZSsrOmplLS0sSWU9dm9pZCAwO2JyZWFrfWNhc2UibGluZUVuZGluZ0JsYW5rIjp7Y2VbMF09PT0iZW50ZXIiJiYoc3QmJiFJZSYmIWplJiYhZ2UmJihnZT1FZSksSWU9dm9pZCAwKTticmVha31jYXNlImxpbmVQcmVmaXgiOmNhc2UibGlzdEl0ZW1WYWx1ZSI6Y2FzZSJsaXN0SXRlbU1hcmtlciI6Y2FzZSJsaXN0SXRlbVByZWZpeCI6Y2FzZSJsaXN0SXRlbVByZWZpeFdoaXRlc3BhY2UiOmJyZWFrO2RlZmF1bHQ6SWU9dm9pZCAwfWlmKCFqZSYmY2VbMF09PT0iZW50ZXIiJiZjZVsxXS50eXBlPT09Imxpc3RJdGVtUHJlZml4Inx8amU9PT0tMSYmY2VbMF09PT0iZXhpdCImJihjZVsxXS50eXBlPT09Imxpc3RVbm9yZGVyZWQifHxjZVsxXS50eXBlPT09Imxpc3RPcmRlcmVkIikpe2lmKHN0KXtsZXQgZGU9RWU7Zm9yKE1lPXZvaWQgMDtkZS0tOyl7bGV0IExlPUNlW2RlXTtpZihMZVsxXS50eXBlPT09ImxpbmVFbmRpbmcifHxMZVsxXS50eXBlPT09ImxpbmVFbmRpbmdCbGFuayIpe2lmKExlWzBdPT09ImV4aXQiKWNvbnRpbnVlO01lJiYoQ2VbTWVdWzFdLnR5cGU9ImxpbmVFbmRpbmdCbGFuayIsV2U9ITApLExlWzFdLnR5cGU9ImxpbmVFbmRpbmciLE1lPWRlfWVsc2UgaWYoIShMZVsxXS50eXBlPT09ImxpbmVQcmVmaXgifHxMZVsxXS50eXBlPT09ImJsb2NrUXVvdGVQcmVmaXgifHxMZVsxXS50eXBlPT09ImJsb2NrUXVvdGVQcmVmaXhXaGl0ZXNwYWNlInx8TGVbMV0udHlwZT09PSJibG9ja1F1b3RlTWFya2VyInx8TGVbMV0udHlwZT09PSJsaXN0SXRlbUluZGVudCIpKWJyZWFrfWdlJiYoIU1lfHxnZTxNZSkmJihzdC5fc3ByZWFkPSEwKSxzdC5lbmQ9T2JqZWN0LmFzc2lnbih7fSxNZT9DZVtNZV1bMV0uc3RhcnQ6Y2VbMV0uZW5kKSxDZS5zcGxpY2UoTWV8fEVlLDAsWyJleGl0IixzdCxjZVsyXV0pLEVlKyssYmUrK31pZihjZVsxXS50eXBlPT09Imxpc3RJdGVtUHJlZml4Iil7bGV0IGRlPXt0eXBlOiJsaXN0SXRlbSIsX3NwcmVhZDohMSxzdGFydDpPYmplY3QuYXNzaWduKHt9LGNlWzFdLnN0YXJ0KSxlbmQ6dm9pZCAwfTtzdD1kZSxDZS5zcGxpY2UoRWUsMCxbImVudGVyIixkZSxjZVsyXV0pLEVlKyssYmUrKyxnZT12b2lkIDAsSWU9ITB9fX1yZXR1cm4gQ2VbdmVdWzFdLl9zcHJlYWQ9V2UsYmV9ZnVuY3Rpb24gbihDZSx2ZSl7cmV0dXJuIGJlO2Z1bmN0aW9uIGJlKEVlKXtsLmNhbGwodGhpcyxDZShFZSksRWUpLHZlJiZ2ZS5jYWxsKHRoaXMsRWUpfX1mdW5jdGlvbiBvKCl7dGhpcy5zdGFjay5wdXNoKHt0eXBlOiJmcmFnbWVudCIsY2hpbGRyZW46W119KX1mdW5jdGlvbiBsKENlLHZlLGJlKXt0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdLmNoaWxkcmVuLnB1c2goQ2UpLHRoaXMuc3RhY2sucHVzaChDZSksdGhpcy50b2tlblN0YWNrLnB1c2goW3ZlLGJlfHx2b2lkIDBdKSxDZS5wb3NpdGlvbj17c3RhcnQ6UXAodmUuc3RhcnQpLGVuZDp2b2lkIDB9fWZ1bmN0aW9uIHAoQ2Upe3JldHVybiB2ZTtmdW5jdGlvbiB2ZShiZSl7Q2UmJkNlLmNhbGwodGhpcyxiZSksZC5jYWxsKHRoaXMsYmUpfX1mdW5jdGlvbiBkKENlLHZlKXtsZXQgYmU9dGhpcy5zdGFjay5wb3AoKSxFZT10aGlzLnRva2VuU3RhY2sucG9wKCk7aWYoRWUpRWVbMF0udHlwZSE9PUNlLnR5cGUmJih2ZT92ZS5jYWxsKHRoaXMsQ2UsRWVbMF0pOihFZVsxXXx8dWJ0KS5jYWxsKHRoaXMsQ2UsRWVbMF0pKTtlbHNlIHRocm93IG5ldyBFcnJvcigiQ2Fubm90IGNsb3NlIGAiK0NlLnR5cGUrImAgKCIrR3Aoe3N0YXJ0OkNlLnN0YXJ0LGVuZDpDZS5lbmR9KSsiKTogaXRcdTIwMTlzIG5vdCBvcGVuIik7YmUucG9zaXRpb24uZW5kPVFwKENlLmVuZCl9ZnVuY3Rpb24gdSgpe3JldHVybiB6Myh0aGlzLnN0YWNrLnBvcCgpKX1mdW5jdGlvbiBjKCl7dGhpcy5kYXRhLmV4cGVjdGluZ0ZpcnN0TGlzdEl0ZW1WYWx1ZT0hMH1mdW5jdGlvbiBiKENlKXtpZih0aGlzLmRhdGEuZXhwZWN0aW5nRmlyc3RMaXN0SXRlbVZhbHVlKXtsZXQgdmU9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0yXTt2ZS5zdGFydD1OdW1iZXIucGFyc2VJbnQodGhpcy5zbGljZVNlcmlhbGl6ZShDZSksMTApLHRoaXMuZGF0YS5leHBlY3RpbmdGaXJzdExpc3RJdGVtVmFsdWU9dm9pZCAwfX1mdW5jdGlvbiB2KCl7bGV0IENlPXRoaXMucmVzdW1lKCksdmU9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXTt2ZS5sYW5nPUNlfWZ1bmN0aW9uIHgoKXtsZXQgQ2U9dGhpcy5yZXN1bWUoKSx2ZT10aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdO3ZlLm1ldGE9Q2V9ZnVuY3Rpb24gbSgpe3RoaXMuZGF0YS5mbG93Q29kZUluc2lkZXx8KHRoaXMuYnVmZmVyKCksdGhpcy5kYXRhLmZsb3dDb2RlSW5zaWRlPSEwKX1mdW5jdGlvbiBmKCl7bGV0IENlPXRoaXMucmVzdW1lKCksdmU9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXTt2ZS52YWx1ZT1DZS5yZXBsYWNlKC9eKFxyP1xufFxyKXwoXHI/XG58XHIpJC9nLCIiKSx0aGlzLmRhdGEuZmxvd0NvZGVJbnNpZGU9dm9pZCAwfWZ1bmN0aW9uIHkoKXtsZXQgQ2U9dGhpcy5yZXN1bWUoKSx2ZT10aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdO3ZlLnZhbHVlPUNlLnJlcGxhY2UoLyhccj9cbnxccikkL2csIiIpfWZ1bmN0aW9uIE0oQ2Upe2xldCB2ZT10aGlzLnJlc3VtZSgpLGJlPXRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV07YmUubGFiZWw9dmUsYmUuaWRlbnRpZmllcj1IaSh0aGlzLnNsaWNlU2VyaWFsaXplKENlKSkudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiB6KCl7bGV0IENlPXRoaXMucmVzdW1lKCksdmU9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXTt2ZS50aXRsZT1DZX1mdW5jdGlvbiBOKCl7bGV0IENlPXRoaXMucmVzdW1lKCksdmU9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXTt2ZS51cmw9Q2V9ZnVuY3Rpb24gQyhDZSl7bGV0IHZlPXRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV07aWYoIXZlLmRlcHRoKXtsZXQgYmU9dGhpcy5zbGljZVNlcmlhbGl6ZShDZSkubGVuZ3RoO3ZlLmRlcHRoPWJlfX1mdW5jdGlvbiBfKCl7dGhpcy5kYXRhLnNldGV4dEhlYWRpbmdTbHVycExpbmVFbmRpbmc9ITB9ZnVuY3Rpb24gTyhDZSl7bGV0IHZlPXRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV07dmUuZGVwdGg9dGhpcy5zbGljZVNlcmlhbGl6ZShDZSkuY29kZVBvaW50QXQoMCk9PT02MT8xOjJ9ZnVuY3Rpb24gJCgpe3RoaXMuZGF0YS5zZXRleHRIZWFkaW5nU2x1cnBMaW5lRW5kaW5nPXZvaWQgMH1mdW5jdGlvbiBFKENlKXtsZXQgYmU9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXS5jaGlsZHJlbixFZT1iZVtiZS5sZW5ndGgtMV07KCFFZXx8RWUudHlwZSE9PSJ0ZXh0IikmJihFZT1EZSgpLEVlLnBvc2l0aW9uPXtzdGFydDpRcChDZS5zdGFydCksZW5kOnZvaWQgMH0sYmUucHVzaChFZSkpLHRoaXMuc3RhY2sucHVzaChFZSl9ZnVuY3Rpb24gSChDZSl7bGV0IHZlPXRoaXMuc3RhY2sucG9wKCk7dmUudmFsdWUrPXRoaXMuc2xpY2VTZXJpYWxpemUoQ2UpLHZlLnBvc2l0aW9uLmVuZD1RcChDZS5lbmQpfWZ1bmN0aW9uIGsoQ2Upe2xldCB2ZT10aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdO2lmKHRoaXMuZGF0YS5hdEhhcmRCcmVhayl7bGV0IGJlPXZlLmNoaWxkcmVuW3ZlLmNoaWxkcmVuLmxlbmd0aC0xXTtiZS5wb3NpdGlvbi5lbmQ9UXAoQ2UuZW5kKSx0aGlzLmRhdGEuYXRIYXJkQnJlYWs9dm9pZCAwO3JldHVybn0hdGhpcy5kYXRhLnNldGV4dEhlYWRpbmdTbHVycExpbmVFbmRpbmcmJmUuY2FuQ29udGFpbkVvbHMuaW5jbHVkZXModmUudHlwZSkmJihFLmNhbGwodGhpcyxDZSksSC5jYWxsKHRoaXMsQ2UpKX1mdW5jdGlvbiBTKCl7dGhpcy5kYXRhLmF0SGFyZEJyZWFrPSEwfWZ1bmN0aW9uIEkoKXtsZXQgQ2U9dGhpcy5yZXN1bWUoKSx2ZT10aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdO3ZlLnZhbHVlPUNlfWZ1bmN0aW9uIFAoKXtsZXQgQ2U9dGhpcy5yZXN1bWUoKSx2ZT10aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdO3ZlLnZhbHVlPUNlfWZ1bmN0aW9uIFIoKXtsZXQgQ2U9dGhpcy5yZXN1bWUoKSx2ZT10aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdO3ZlLnZhbHVlPUNlfWZ1bmN0aW9uIEsoKXtsZXQgQ2U9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXTtpZih0aGlzLmRhdGEuaW5SZWZlcmVuY2Upe2xldCB2ZT10aGlzLmRhdGEucmVmZXJlbmNlVHlwZXx8InNob3J0Y3V0IjtDZS50eXBlKz0iUmVmZXJlbmNlIixDZS5yZWZlcmVuY2VUeXBlPXZlLGRlbGV0ZSBDZS51cmwsZGVsZXRlIENlLnRpdGxlfWVsc2UgZGVsZXRlIENlLmlkZW50aWZpZXIsZGVsZXRlIENlLmxhYmVsO3RoaXMuZGF0YS5yZWZlcmVuY2VUeXBlPXZvaWQgMH1mdW5jdGlvbiBWKCl7bGV0IENlPXRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV07aWYodGhpcy5kYXRhLmluUmVmZXJlbmNlKXtsZXQgdmU9dGhpcy5kYXRhLnJlZmVyZW5jZVR5cGV8fCJzaG9ydGN1dCI7Q2UudHlwZSs9IlJlZmVyZW5jZSIsQ2UucmVmZXJlbmNlVHlwZT12ZSxkZWxldGUgQ2UudXJsLGRlbGV0ZSBDZS50aXRsZX1lbHNlIGRlbGV0ZSBDZS5pZGVudGlmaWVyLGRlbGV0ZSBDZS5sYWJlbDt0aGlzLmRhdGEucmVmZXJlbmNlVHlwZT12b2lkIDB9ZnVuY3Rpb24gVyhDZSl7bGV0IHZlPXRoaXMuc2xpY2VTZXJpYWxpemUoQ2UpLGJlPXRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMl07YmUubGFiZWw9ZmllKHZlKSxiZS5pZGVudGlmaWVyPUhpKHZlKS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIG1lKCl7bGV0IENlPXRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV0sdmU9dGhpcy5yZXN1bWUoKSxiZT10aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdO2lmKHRoaXMuZGF0YS5pblJlZmVyZW5jZT0hMCxiZS50eXBlPT09ImxpbmsiKXtsZXQgRWU9Q2UuY2hpbGRyZW47YmUuY2hpbGRyZW49RWV9ZWxzZSBiZS5hbHQ9dmV9ZnVuY3Rpb24gQigpe2xldCBDZT10aGlzLnJlc3VtZSgpLHZlPXRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV07dmUudXJsPUNlfWZ1bmN0aW9uIFUoKXtsZXQgQ2U9dGhpcy5yZXN1bWUoKSx2ZT10aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdO3ZlLnRpdGxlPUNlfWZ1bmN0aW9uIGhlKCl7dGhpcy5kYXRhLmluUmVmZXJlbmNlPXZvaWQgMH1mdW5jdGlvbiBGKCl7dGhpcy5kYXRhLnJlZmVyZW5jZVR5cGU9ImNvbGxhcHNlZCJ9ZnVuY3Rpb24gaihDZSl7bGV0IHZlPXRoaXMucmVzdW1lKCksYmU9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXTtiZS5sYWJlbD12ZSxiZS5pZGVudGlmaWVyPUhpKHRoaXMuc2xpY2VTZXJpYWxpemUoQ2UpKS50b0xvd2VyQ2FzZSgpLHRoaXMuZGF0YS5yZWZlcmVuY2VUeXBlPSJmdWxsIn1mdW5jdGlvbiB1ZShDZSl7dGhpcy5kYXRhLmNoYXJhY3RlclJlZmVyZW5jZVR5cGU9Q2UudHlwZX1mdW5jdGlvbiBsZShDZSl7bGV0IHZlPXRoaXMuc2xpY2VTZXJpYWxpemUoQ2UpLGJlPXRoaXMuZGF0YS5jaGFyYWN0ZXJSZWZlcmVuY2VUeXBlLEVlO2JlPyhFZT1KOSh2ZSxiZT09PSJjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJOdW1lcmljIj8xMDoxNiksdGhpcy5kYXRhLmNoYXJhY3RlclJlZmVyZW5jZVR5cGU9dm9pZCAwKTpFZT1acCh2ZSk7bGV0IGplPXRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV07amUudmFsdWUrPUVlfWZ1bmN0aW9uIFEoQ2Upe2xldCB2ZT10aGlzLnN0YWNrLnBvcCgpO3ZlLnBvc2l0aW9uLmVuZD1RcChDZS5lbmQpfWZ1bmN0aW9uIGllKENlKXtILmNhbGwodGhpcyxDZSk7bGV0IHZlPXRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV07dmUudXJsPXRoaXMuc2xpY2VTZXJpYWxpemUoQ2UpfWZ1bmN0aW9uIHRlKENlKXtILmNhbGwodGhpcyxDZSk7bGV0IHZlPXRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV07dmUudXJsPSJtYWlsdG86Iit0aGlzLnNsaWNlU2VyaWFsaXplKENlKX1mdW5jdGlvbiBlZSgpe3JldHVybnt0eXBlOiJibG9ja3F1b3RlIixjaGlsZHJlbjpbXX19ZnVuY3Rpb24ga2UoKXtyZXR1cm57dHlwZToiY29kZSIsbGFuZzpudWxsLG1ldGE6bnVsbCx2YWx1ZToiIn19ZnVuY3Rpb24gWCgpe3JldHVybnt0eXBlOiJpbmxpbmVDb2RlIix2YWx1ZToiIn19ZnVuY3Rpb24gWigpe3JldHVybnt0eXBlOiJkZWZpbml0aW9uIixpZGVudGlmaWVyOiIiLGxhYmVsOm51bGwsdGl0bGU6bnVsbCx1cmw6IiJ9fWZ1bmN0aW9uIHllKCl7cmV0dXJue3R5cGU6ImVtcGhhc2lzIixjaGlsZHJlbjpbXX19ZnVuY3Rpb24gcSgpe3JldHVybnt0eXBlOiJoZWFkaW5nIixkZXB0aDowLGNoaWxkcmVuOltdfX1mdW5jdGlvbiBBKCl7cmV0dXJue3R5cGU6ImJyZWFrIn19ZnVuY3Rpb24gc2UoKXtyZXR1cm57dHlwZToiaHRtbCIsdmFsdWU6IiJ9fWZ1bmN0aW9uIG9lKCl7cmV0dXJue3R5cGU6ImltYWdlIix0aXRsZTpudWxsLHVybDoiIixhbHQ6bnVsbH19ZnVuY3Rpb24gYWUoKXtyZXR1cm57dHlwZToibGluayIsdGl0bGU6bnVsbCx1cmw6IiIsY2hpbGRyZW46W119fWZ1bmN0aW9uIFRlKENlKXtyZXR1cm57dHlwZToibGlzdCIsb3JkZXJlZDpDZS50eXBlPT09Imxpc3RPcmRlcmVkIixzdGFydDpudWxsLHNwcmVhZDpDZS5fc3ByZWFkLGNoaWxkcmVuOltdfX1mdW5jdGlvbiBSZShDZSl7cmV0dXJue3R5cGU6Imxpc3RJdGVtIixzcHJlYWQ6Q2UuX3NwcmVhZCxjaGVja2VkOm51bGwsY2hpbGRyZW46W119fWZ1bmN0aW9uIEJlKCl7cmV0dXJue3R5cGU6InBhcmFncmFwaCIsY2hpbGRyZW46W119fWZ1bmN0aW9uIEdlKCl7cmV0dXJue3R5cGU6InN0cm9uZyIsY2hpbGRyZW46W119fWZ1bmN0aW9uIERlKCl7cmV0dXJue3R5cGU6InRleHQiLHZhbHVlOiIifX1mdW5jdGlvbiBfZSgpe3JldHVybnt0eXBlOiJ0aGVtYXRpY0JyZWFrIn19fWZ1bmN0aW9uIFFwKHMpe3JldHVybntsaW5lOnMubGluZSxjb2x1bW46cy5jb2x1bW4sb2Zmc2V0OnMub2Zmc2V0fX1mdW5jdGlvbiBkYnQocyxlKXtsZXQgdD0tMTtmb3IoOysrdDxlLmxlbmd0aDspe2xldCBhPWVbdF07QXJyYXkuaXNBcnJheShhKT9kYnQocyxhKTpDRmEocyxhKX19ZnVuY3Rpb24gQ0ZhKHMsZSl7bGV0IHQ7Zm9yKHQgaW4gZSlpZihjYnQuY2FsbChlLHQpKXN3aXRjaCh0KXtjYXNlImNhbkNvbnRhaW5Fb2xzIjp7bGV0IGE9ZVt0XTthJiZzW3RdLnB1c2goLi4uYSk7YnJlYWt9Y2FzZSJ0cmFuc2Zvcm1zIjp7bGV0IGE9ZVt0XTthJiZzW3RdLnB1c2goLi4uYSk7YnJlYWt9Y2FzZSJlbnRlciI6Y2FzZSJleGl0Ijp7bGV0IGE9ZVt0XTthJiZPYmplY3QuYXNzaWduKHNbdF0sYSk7YnJlYWt9fX1mdW5jdGlvbiB1YnQocyxlKXt0aHJvdyBzP25ldyBFcnJvcigiQ2Fubm90IGNsb3NlIGAiK3MudHlwZSsiYCAoIitHcCh7c3RhcnQ6cy5zdGFydCxlbmQ6cy5lbmR9KSsiKTogYSBkaWZmZXJlbnQgdG9rZW4gKGAiK2UudHlwZSsiYCwgIitHcCh7c3RhcnQ6ZS5zdGFydCxlbmQ6ZS5lbmR9KSsiKSBpcyBvcGVuIik6bmV3IEVycm9yKCJDYW5ub3QgY2xvc2UgZG9jdW1lbnQsIGEgdG9rZW4gKGAiK2UudHlwZSsiYCwgIitHcCh7c3RhcnQ6ZS5zdGFydCxlbmQ6ZS5lbmR9KSsiKSBpcyBzdGlsbCBvcGVuIil9dmFyIGNidCxwYnQ9ZygoKT0+e2NpZSgpO2xidCgpO2hpZSgpOyRmZSgpO1lwKCk7ZGsoKTtqM2UoKTtjYnQ9e30uaGFzT3duUHJvcGVydHk7aSh6bWUsImZyb21NYXJrZG93biIpO2koekZhLCJjb21waWxlciIpO2koUXAsInBvaW50Iik7aShkYnQsImNvbmZpZ3VyZSIpO2koQ0ZhLCJleHRlbnNpb24iKTtpKHVidCwiZGVmYXVsdE9uRXJyb3IiKX0pO3ZhciBoYnQ9ZygoKT0+e3BidCgpfSk7ZnVuY3Rpb24gYWIocyl7bGV0IGU9dGhpcztlLnBhcnNlcj10O2Z1bmN0aW9uIHQoYSl7cmV0dXJuIHptZShhLHsuLi5lLmRhdGEoInNldHRpbmdzIiksLi4ucyxleHRlbnNpb25zOmUuZGF0YSgibWljcm9tYXJrRXh0ZW5zaW9ucyIpfHxbXSxtZGFzdEV4dGVuc2lvbnM6ZS5kYXRhKCJmcm9tTWFya2Rvd25FeHRlbnNpb25zIil8fFtdfSl9aSh0LCJwYXJzZXIiKX12YXIgZmJ0PWcoKCk9PntoYnQoKTtpKGFiLCJyZW1hcmtQYXJzZSIpfSk7dmFyIG1idD1nKCgpPT57ZmJ0KCl9KTt2YXIgZ2J0PXBsKChicGksQ21lKT0+eyhmdW5jdGlvbigpe3ZhciBzO3R5cGVvZiBDbWU8InUiP3M9Q21lLmV4cG9ydHM9YTpzPShmdW5jdGlvbigpe3JldHVybiB0aGlzfHwoMCxldmFsKSgidGhpcyIpfSkoKSxzLmZvcm1hdD1hLHMudnNwcmludGY9dCx0eXBlb2YgY29uc29sZTwidSImJnR5cGVvZiBjb25zb2xlLmxvZz09ImZ1bmN0aW9uIiYmKHMucHJpbnRmPWUpO2Z1bmN0aW9uIGUoKXtjb25zb2xlLmxvZyhhLmFwcGx5KG51bGwsYXJndW1lbnRzKSl9aShlLCJwcmludGYiKTtmdW5jdGlvbiB0KHIsbil7cmV0dXJuIGEuYXBwbHkobnVsbCxbcl0uY29uY2F0KG4pKX1pKHQsInZzcHJpbnRmIik7ZnVuY3Rpb24gYShyKXtmb3IodmFyIG49MSxvPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSxsPTAscD1yLmxlbmd0aCxkPSIiLHUsYz0hMSxiLHYseD0hMSxtLGY9aShmdW5jdGlvbigpe3JldHVybiBvW24rK119LCJuZXh0QXJnIikseT1pKGZ1bmN0aW9uKCl7Zm9yKHZhciBNPSIiOy9cZC8udGVzdChyW2xdKTspTSs9cltsKytdLHU9cltsXTtyZXR1cm4gTS5sZW5ndGg+MD9wYXJzZUludChNKTpudWxsfSwic2x1cnBOdW1iZXIiKTtsPHA7KytsKWlmKHU9cltsXSxjKXN3aXRjaChjPSExLHU9PSIuIj8oeD0hMSx1PXJbKytsXSk6dT09IjAiJiZyW2wrMV09PSIuIj8oeD0hMCxsKz0yLHU9cltsXSk6eD0hMCxtPXkoKSx1KXtjYXNlImIiOmQrPXBhcnNlSW50KGYoKSwxMCkudG9TdHJpbmcoMik7YnJlYWs7Y2FzZSJjIjpiPWYoKSx0eXBlb2YgYj09InN0cmluZyJ8fGIgaW5zdGFuY2VvZiBTdHJpbmc/ZCs9YjpkKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGIsMTApKTticmVhaztjYXNlImQiOmQrPXBhcnNlSW50KGYoKSwxMCk7YnJlYWs7Y2FzZSJmIjp2PVN0cmluZyhwYXJzZUZsb2F0KGYoKSkudG9GaXhlZChtfHw2KSksZCs9eD92OnYucmVwbGFjZSgvXjAvLCIiKTticmVhaztjYXNlImoiOmQrPUpTT04uc3RyaW5naWZ5KGYoKSk7YnJlYWs7Y2FzZSJvIjpkKz0iMCIrcGFyc2VJbnQoZigpLDEwKS50b1N0cmluZyg4KTticmVhaztjYXNlInMiOmQrPWYoKTticmVhaztjYXNlIngiOmQrPSIweCIrcGFyc2VJbnQoZigpLDEwKS50b1N0cmluZygxNik7YnJlYWs7Y2FzZSJYIjpkKz0iMHgiK3BhcnNlSW50KGYoKSwxMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7YnJlYWs7ZGVmYXVsdDpkKz11O2JyZWFrfWVsc2UgdT09PSIlIj9jPSEwOmQrPXU7cmV0dXJuIGR9aShhLCJmb3JtYXQiKX0pKCl9KTtmdW5jdGlvbiBQMyhzKXtyZXR1cm4gZS5kaXNwbGF5TmFtZT1zLmRpc3BsYXlOYW1lfHxzLm5hbWUsZTtmdW5jdGlvbiBlKHQsLi4uYSl7bGV0IHI9dCYmKDAsYmJ0LmRlZmF1bHQpKHQsLi4uYSk7cmV0dXJuIG5ldyBzKHIpfWkoZSwiRm9ybWF0dGVkRXJyb3IiKX12YXIgYmJ0LHlrLHZidD1nKCgpPT57YmJ0PXhuKGdidCgpLDEpLHlrPU9iamVjdC5hc3NpZ24oUDMoRXJyb3IpLHtldmFsOlAzKEV2YWxFcnJvcikscmFuZ2U6UDMoUmFuZ2VFcnJvcikscmVmZXJlbmNlOlAzKFJlZmVyZW5jZUVycm9yKSxzeW50YXg6UDMoU3ludGF4RXJyb3IpLHR5cGU6UDMoVHlwZUVycm9yKSx1cmk6UDMoVVJJRXJyb3IpfSk7aShQMywiY3JlYXRlIil9KTtmdW5jdGlvbiBzYihzKXtsZXQgZT1bXSx0PS0xLGE9QXJyYXkuaXNBcnJheShzKT9zOnM/W3NdOlsieWFtbCJdO2Zvcig7Kyt0PGEubGVuZ3RoOyllW3RdPVRGYShhW3RdKTtyZXR1cm4gZX1mdW5jdGlvbiBURmEocyl7bGV0IGU9cztpZih0eXBlb2YgZT09InN0cmluZyIpe2lmKCFJaWUuY2FsbCh4YnQsZSkpdGhyb3cgeWsoIk1pc3NpbmcgbWF0dGVyIGRlZmluaXRpb24gZm9yIGAlc2AiLGUpO2U9e3R5cGU6ZSxtYXJrZXI6eGJ0W2VdfX1lbHNlIGlmKHR5cGVvZiBlIT0ib2JqZWN0Iil0aHJvdyB5aygiRXhwZWN0ZWQgbWF0dGVyIHRvIGJlIGFuIG9iamVjdCwgbm90IGAlamAiLGUpO2lmKCFJaWUuY2FsbChlLCJ0eXBlIikpdGhyb3cgeWsoIk1pc3NpbmcgYHR5cGVgIGluIG1hdHRlciBgJWpgIixlKTtpZighSWllLmNhbGwoZSwiZmVuY2UiKSYmIUlpZS5jYWxsKGUsIm1hcmtlciIpKXRocm93IHlrKCJNaXNzaW5nIGBtYXJrZXJgIG9yIGBmZW5jZWAgaW4gbWF0dGVyIGAlamAiLGUpO3JldHVybiBlfXZhciBJaWUseGJ0LFRtZT1nKCgpPT57dmJ0KCk7SWllPXt9Lmhhc093blByb3BlcnR5LHhidD17eWFtbDoiLSIsdG9tbDoiKyJ9O2koc2IsInRvTWF0dGVycyIpO2koVEZhLCJtYXR0ZXIiKX0pO2Z1bmN0aW9uIERtZShzKXtsZXQgZT1zYihzKSx0PXt9LGE9LTE7Zm9yKDsrK2E8ZS5sZW5ndGg7KXtsZXQgcj1lW2FdLG49JG1lKHIsIm9wZW4iKS5jaGFyQ29kZUF0KDApLG89JEZhKHIpLGw9dFtuXTtBcnJheS5pc0FycmF5KGwpP2wucHVzaChvKTp0W25dPVtvXX1yZXR1cm57Zmxvdzp0fX1mdW5jdGlvbiAkRmEocyl7bGV0IGU9cy5hbnl3aGVyZSx0PXMudHlwZSxhPXQrIkZlbmNlIixyPWErIlNlcXVlbmNlIixuPXQrIlZhbHVlIixvPXt0b2tlbml6ZTp1LHBhcnRpYWw6ITB9LGwscD0wO3JldHVybnt0b2tlbml6ZTpkLGNvbmNyZXRlOiEwfTtmdW5jdGlvbiBkKGMsYix2KXtsZXQgeD10aGlzO3JldHVybiBtO2Z1bmN0aW9uIG0oTyl7bGV0ICQ9eC5ub3coKTtyZXR1cm4gJC5jb2x1bW49PT0xJiYoJC5saW5lPT09MXx8ZSkmJihsPSRtZShzLCJvcGVuIikscD0wLE89PT1sLmNoYXJDb2RlQXQocCkpPyhjLmVudGVyKHQpLGMuZW50ZXIoYSksYy5lbnRlcihyKSxmKE8pKTp2KE8pfWZ1bmN0aW9uIGYoTyl7cmV0dXJuIHA9PT1sLmxlbmd0aD8oYy5leGl0KHIpLEh0KE8pPyhjLmVudGVyKCJ3aGl0ZXNwYWNlIikseShPKSk6TShPKSk6Tz09PWwuY2hhckNvZGVBdChwKyspPyhjLmNvbnN1bWUoTyksZik6dihPKX1mdW5jdGlvbiB5KE8pe3JldHVybiBIdChPKT8oYy5jb25zdW1lKE8pLHkpOihjLmV4aXQoIndoaXRlc3BhY2UiKSxNKE8pKX1mdW5jdGlvbiBNKE8pe3JldHVybiB2dChPKT8oYy5leGl0KGEpLGMuZW50ZXIoImxpbmVFbmRpbmciKSxjLmNvbnN1bWUoTyksYy5leGl0KCJsaW5lRW5kaW5nIiksbD0kbWUocywiY2xvc2UiKSxwPTAsYy5hdHRlbXB0KG8sXyx6KSk6dihPKX1mdW5jdGlvbiB6KE8pe3JldHVybiBPPT09bnVsbHx8dnQoTyk/QyhPKTooYy5lbnRlcihuKSxOKE8pKX1mdW5jdGlvbiBOKE8pe3JldHVybiBPPT09bnVsbHx8dnQoTyk/KGMuZXhpdChuKSxDKE8pKTooYy5jb25zdW1lKE8pLE4pfWZ1bmN0aW9uIEMoTyl7cmV0dXJuIE89PT1udWxsP3YoTyk6KGMuZW50ZXIoImxpbmVFbmRpbmciKSxjLmNvbnN1bWUoTyksYy5leGl0KCJsaW5lRW5kaW5nIiksYy5hdHRlbXB0KG8sXyx6KSl9ZnVuY3Rpb24gXyhPKXtyZXR1cm4gYy5leGl0KHQpLGIoTyl9fWZ1bmN0aW9uIHUoYyxiLHYpe2xldCB4PTA7cmV0dXJuIG07ZnVuY3Rpb24gbSh6KXtyZXR1cm4gej09PWwuY2hhckNvZGVBdCh4KT8oYy5lbnRlcihhKSxjLmVudGVyKHIpLGYoeikpOnYoeil9ZnVuY3Rpb24gZih6KXtyZXR1cm4geD09PWwubGVuZ3RoPyhjLmV4aXQociksSHQoeik/KGMuZW50ZXIoIndoaXRlc3BhY2UiKSx5KHopKTpNKHopKTp6PT09bC5jaGFyQ29kZUF0KHgrKyk/KGMuY29uc3VtZSh6KSxmKTp2KHopfWZ1bmN0aW9uIHkoeil7cmV0dXJuIEh0KHopPyhjLmNvbnN1bWUoeikseSk6KGMuZXhpdCgid2hpdGVzcGFjZSIpLE0oeikpfWZ1bmN0aW9uIE0oeil7cmV0dXJuIHo9PT1udWxsfHx2dCh6KT8oYy5leGl0KGEpLGIoeikpOnYoeil9fX1mdW5jdGlvbiAkbWUocyxlKXtyZXR1cm4gcy5tYXJrZXI/eWJ0KHMubWFya2VyLGUpLnJlcGVhdCgzKTp5YnQocy5mZW5jZSxlKX1mdW5jdGlvbiB5YnQocyxlKXtyZXR1cm4gdHlwZW9mIHM9PSJzdHJpbmciP3M6c1tlXX12YXIgd2J0PWcoKCk9PntWYSgpO1RtZSgpO2koRG1lLCJmcm9udG1hdHRlciIpO2koJEZhLCJjcmVhdGVDb25zdHJ1Y3QiKTtpKCRtZSwiZmVuY2UiKTtpKHlidCwicGljayIpfSk7dmFyIGtidD1nKCgpPT57fSk7dmFyIExtZT1nKCgpPT57d2J0KCk7a2J0KCk7VG1lKCl9KTtmdW5jdGlvbiBQbWUocyl7bGV0IGU9c2IocyksdD17fSxhPXt9LHI9LTE7Zm9yKDsrK3I8ZS5sZW5ndGg7KXtsZXQgbj1lW3JdO3Rbbi50eXBlXT1ERmEobiksYVtuLnR5cGVdPUxGYSxhW24udHlwZSsiVmFsdWUiXT1FRmF9cmV0dXJue2VudGVyOnQsZXhpdDphfX1mdW5jdGlvbiBERmEocyl7cmV0dXJuIGU7ZnVuY3Rpb24gZSh0KXt0aGlzLmVudGVyKHt0eXBlOnMudHlwZSx2YWx1ZToiIn0sdCksdGhpcy5idWZmZXIoKX19ZnVuY3Rpb24gTEZhKHMpe2xldCBlPXRoaXMucmVzdW1lKCksdD10aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdOyJ2YWx1ZSJpbiB0LHRoaXMuZXhpdChzKSx0LnZhbHVlPWUucmVwbGFjZSgvXihccj9cbnxccil8KFxyP1xufFxyKSQvZywiIil9ZnVuY3Rpb24gRUZhKHMpe3RoaXMuY29uZmlnLmVudGVyLmRhdGEuY2FsbCh0aGlzLHMpLHRoaXMuY29uZmlnLmV4aXQuZGF0YS5jYWxsKHRoaXMscyl9ZnVuY3Rpb24gSW1lKHMpe2xldCBlPVtdLHQ9e30sYT1zYihzKSxyPS0xO2Zvcig7KytyPGEubGVuZ3RoOyl7bGV0IG49YVtyXTt0W24udHlwZV09UEZhKG4pO2xldCBvPUVtZShuLCJvcGVuIik7ZS5wdXNoKHthdEJyZWFrOiEwLGNoYXJhY3RlcjpvLmNoYXJBdCgwKSxhZnRlcjpXNChvLmNoYXJBdCgxKSl9KX1yZXR1cm57dW5zYWZlOmUsaGFuZGxlcnM6dH19ZnVuY3Rpb24gUEZhKHMpe2xldCBlPUVtZShzLCJvcGVuIiksdD1FbWUocywiY2xvc2UiKTtyZXR1cm4gYTtmdW5jdGlvbiBhKHIpe3JldHVybiBlKyhyLnZhbHVlP2AKYCtyLnZhbHVlOiIiKStgCmArdH19ZnVuY3Rpb24gRW1lKHMsZSl7cmV0dXJuIHMubWFya2VyP1NidChzLm1hcmtlcixlKS5yZXBlYXQoMyk6U2J0KHMuZmVuY2UsZSl9ZnVuY3Rpb24gU2J0KHMsZSl7cmV0dXJuIHR5cGVvZiBzPT0ic3RyaW5nIj9zOnNbZV19dmFyIF9idD1nKCgpPT57V3AoKTtMbWUoKTskZWUoKTtpKFBtZSwiZnJvbnRtYXR0ZXJGcm9tTWFya2Rvd24iKTtpKERGYSwib3BlbmVyIik7aShMRmEsImNsb3NlIik7aShFRmEsInZhbHVlIik7aShJbWUsImZyb250bWF0dGVyVG9NYXJrZG93biIpO2koUEZhLCJoYW5kbGVyIik7aShFbWUsImZlbmNlIik7aShTYnQsInBpY2siKX0pO3ZhciBNYnQ9ZygoKT0+e19idCgpfSk7ZnVuY3Rpb24gaWIocyl7bGV0IGU9dGhpcyx0PXN8fElGYSxhPWUuZGF0YSgpLHI9YS5taWNyb21hcmtFeHRlbnNpb25zfHwoYS5taWNyb21hcmtFeHRlbnNpb25zPVtdKSxuPWEuZnJvbU1hcmtkb3duRXh0ZW5zaW9uc3x8KGEuZnJvbU1hcmtkb3duRXh0ZW5zaW9ucz1bXSksbz1hLnRvTWFya2Rvd25FeHRlbnNpb25zfHwoYS50b01hcmtkb3duRXh0ZW5zaW9ucz1bXSk7ci5wdXNoKERtZSh0KSksbi5wdXNoKFBtZSh0KSksby5wdXNoKEltZSh0KSl9dmFyIElGYSx6YnQ9ZygoKT0+e01idCgpO0xtZSgpO0lGYT0ieWFtbCI7aShpYiwicmVtYXJrRnJvbnRtYXR0ZXIiKX0pO3ZhciBDYnQ9ZygoKT0+e3pidCgpfSk7dmFyIEFtZT1nKCgpPT57fSk7dmFyIEFGYSxUYnQsTkZhLEZpZSwkYnQ9ZygoKT0+e0FtZSgpO0FGYT10eXBlb2Ygc2VsZj09Im9iamVjdCI/c2VsZjpnbG9iYWxUaGlzLFRidD1pKChzLGUpPT57c3dpdGNoKHMpe2Nhc2UiRnVuY3Rpb24iOmNhc2UiU2hhcmVkV29ya2VyIjpjYXNlIldvcmtlciI6Y2FzZSJldmFsIjpjYXNlInNldEludGVydmFsIjpjYXNlInNldFRpbWVvdXQiOnRocm93IG5ldyBUeXBlRXJyb3IoInVuYWJsZSB0byBkZXNlcmlhbGl6ZSAiK3MpfXJldHVybiBuZXcgQUZhW3NdKGUpfSwiZ3VhcmQiKSxORmE9aSgocyxlKT0+e2xldCB0PWkoKHIsbik9PihzLnNldChuLHIpLHIpLCJhcyIpLGE9aShyPT57aWYocy5oYXMocikpcmV0dXJuIHMuZ2V0KHIpO2xldFtuLG9dPWVbcl07c3dpdGNoKG4pe2Nhc2UgMDpjYXNlLTE6cmV0dXJuIHQobyxyKTtjYXNlIDE6e2xldCBsPXQoW10scik7Zm9yKGxldCBwIG9mIG8pbC5wdXNoKGEocCkpO3JldHVybiBsfWNhc2UgMjp7bGV0IGw9dCh7fSxyKTtmb3IobGV0W3AsZF1vZiBvKWxbYShwKV09YShkKTtyZXR1cm4gbH1jYXNlIDM6cmV0dXJuIHQobmV3IERhdGUobykscik7Y2FzZSA0OntsZXR7c291cmNlOmwsZmxhZ3M6cH09bztyZXR1cm4gdChuZXcgUmVnRXhwKGwscCkscil9Y2FzZSA1OntsZXQgbD10KG5ldyBNYXAscik7Zm9yKGxldFtwLGRdb2YgbylsLnNldChhKHApLGEoZCkpO3JldHVybiBsfWNhc2UgNjp7bGV0IGw9dChuZXcgU2V0LHIpO2ZvcihsZXQgcCBvZiBvKWwuYWRkKGEocCkpO3JldHVybiBsfWNhc2UgNzp7bGV0e25hbWU6bCxtZXNzYWdlOnB9PW87cmV0dXJuIHQoVGJ0KGwscCkscil9Y2FzZSA4OnJldHVybiB0KEJpZ0ludChvKSxyKTtjYXNlIkJpZ0ludCI6cmV0dXJuIHQoT2JqZWN0KEJpZ0ludChvKSkscik7Y2FzZSJBcnJheUJ1ZmZlciI6cmV0dXJuIHQobmV3IFVpbnQ4QXJyYXkobykuYnVmZmVyLG8pO2Nhc2UiRGF0YVZpZXciOntsZXR7YnVmZmVyOmx9PW5ldyBVaW50OEFycmF5KG8pO3JldHVybiB0KG5ldyBEYXRhVmlldyhsKSxvKX19cmV0dXJuIHQoVGJ0KG4sbykscil9LCJ1bnBhaXIiKTtyZXR1cm4gYX0sImRlc2VyaWFsaXplciIpLEZpZT1pKHM9Pk5GYShuZXcgTWFwLHMpKDApLCJkZXNlcmlhbGl6ZSIpfSk7dmFyIG9iLFJGYSxPRmEsU2ssQmllLEZGYSxIaWUsRGJ0PWcoKCk9PntBbWUoKTtvYj0iIix7dG9TdHJpbmc6UkZhfT17fSx7a2V5czpPRmF9PU9iamVjdCxTaz1pKHM9PntsZXQgZT10eXBlb2YgcztpZihlIT09Im9iamVjdCJ8fCFzKXJldHVyblswLGVdO2xldCB0PVJGYS5jYWxsKHMpLnNsaWNlKDgsLTEpO3N3aXRjaCh0KXtjYXNlIkFycmF5IjpyZXR1cm5bMSxvYl07Y2FzZSJPYmplY3QiOnJldHVyblsyLG9iXTtjYXNlIkRhdGUiOnJldHVyblszLG9iXTtjYXNlIlJlZ0V4cCI6cmV0dXJuWzQsb2JdO2Nhc2UiTWFwIjpyZXR1cm5bNSxvYl07Y2FzZSJTZXQiOnJldHVybls2LG9iXTtjYXNlIkRhdGFWaWV3IjpyZXR1cm5bMSx0XX1yZXR1cm4gdC5pbmNsdWRlcygiQXJyYXkiKT9bMSx0XTp0LmluY2x1ZGVzKCJFcnJvciIpP1s3LHRdOlsyLHRdfSwidHlwZU9mIiksQmllPWkoKFtzLGVdKT0+cz09PTAmJihlPT09ImZ1bmN0aW9uInx8ZT09PSJzeW1ib2wiKSwic2hvdWxkU2tpcCIpLEZGYT1pKChzLGUsdCxhKT0+e2xldCByPWkoKG8sbCk9PntsZXQgcD1hLnB1c2gobyktMTtyZXR1cm4gdC5zZXQobCxwKSxwfSwiYXMiKSxuPWkobz0+e2lmKHQuaGFzKG8pKXJldHVybiB0LmdldChvKTtsZXRbbCxwXT1TayhvKTtzd2l0Y2gobCl7Y2FzZSAwOntsZXQgdT1vO3N3aXRjaChwKXtjYXNlImJpZ2ludCI6bD04LHU9by50b1N0cmluZygpO2JyZWFrO2Nhc2UiZnVuY3Rpb24iOmNhc2Uic3ltYm9sIjppZihzKXRocm93IG5ldyBUeXBlRXJyb3IoInVuYWJsZSB0byBzZXJpYWxpemUgIitwKTt1PW51bGw7YnJlYWs7Y2FzZSJ1bmRlZmluZWQiOnJldHVybiByKFstMV0sbyl9cmV0dXJuIHIoW2wsdV0sbyl9Y2FzZSAxOntpZihwKXtsZXQgYj1vO3JldHVybiBwPT09IkRhdGFWaWV3Ij9iPW5ldyBVaW50OEFycmF5KG8uYnVmZmVyKTpwPT09IkFycmF5QnVmZmVyIiYmKGI9bmV3IFVpbnQ4QXJyYXkobykpLHIoW3AsWy4uLmJdXSxvKX1sZXQgdT1bXSxjPXIoW2wsdV0sbyk7Zm9yKGxldCBiIG9mIG8pdS5wdXNoKG4oYikpO3JldHVybiBjfWNhc2UgMjp7aWYocClzd2l0Y2gocCl7Y2FzZSJCaWdJbnQiOnJldHVybiByKFtwLG8udG9TdHJpbmcoKV0sbyk7Y2FzZSJCb29sZWFuIjpjYXNlIk51bWJlciI6Y2FzZSJTdHJpbmciOnJldHVybiByKFtwLG8udmFsdWVPZigpXSxvKX1pZihlJiYidG9KU09OImluIG8pcmV0dXJuIG4oby50b0pTT04oKSk7bGV0IHU9W10sYz1yKFtsLHVdLG8pO2ZvcihsZXQgYiBvZiBPRmEobykpKHN8fCFCaWUoU2sob1tiXSkpKSYmdS5wdXNoKFtuKGIpLG4ob1tiXSldKTtyZXR1cm4gY31jYXNlIDM6cmV0dXJuIHIoW2wsby50b0lTT1N0cmluZygpXSxvKTtjYXNlIDQ6e2xldHtzb3VyY2U6dSxmbGFnczpjfT1vO3JldHVybiByKFtsLHtzb3VyY2U6dSxmbGFnczpjfV0sbyl9Y2FzZSA1OntsZXQgdT1bXSxjPXIoW2wsdV0sbyk7Zm9yKGxldFtiLHZdb2Ygbykoc3x8IShCaWUoU2soYikpfHxCaWUoU2sodikpKSkmJnUucHVzaChbbihiKSxuKHYpXSk7cmV0dXJuIGN9Y2FzZSA2OntsZXQgdT1bXSxjPXIoW2wsdV0sbyk7Zm9yKGxldCBiIG9mIG8pKHN8fCFCaWUoU2soYikpKSYmdS5wdXNoKG4oYikpO3JldHVybiBjfX1sZXR7bWVzc2FnZTpkfT1vO3JldHVybiByKFtsLHtuYW1lOnAsbWVzc2FnZTpkfV0sbyl9LCJwYWlyIik7cmV0dXJuIG59LCJzZXJpYWxpemVyIiksSGllPWkoKHMse2pzb246ZSxsb3NzeTp0fT17fSk9PntsZXQgYT1bXTtyZXR1cm4gRkZhKCEoZXx8dCksISFlLG5ldyBNYXAsYSkocyksYX0sInNlcmlhbGl6ZSIpfSk7dmFyIEpwLHFpZT1nKCgpPT57JGJ0KCk7RGJ0KCk7SnA9dHlwZW9mIHN0cnVjdHVyZWRDbG9uZT09ImZ1bmN0aW9uIj8ocyxlKT0+ZSYmKCJqc29uImluIGV8fCJsb3NzeSJpbiBlKT9GaWUoSGllKHMsZSkpOnN0cnVjdHVyZWRDbG9uZShzKToocyxlKT0+RmllKEhpZShzLGUpKX0pO2Z1bmN0aW9uIExidChzKXtyZXR1cm4gZTtmdW5jdGlvbiBlKHQpe2xldCBhPXQmJnQucG9zaXRpb24mJnQucG9zaXRpb25bc118fHt9O2lmKHR5cGVvZiBhLmxpbmU9PSJudW1iZXIiJiZhLmxpbmU+MCYmdHlwZW9mIGEuY29sdW1uPT0ibnVtYmVyIiYmYS5jb2x1bW4+MClyZXR1cm57bGluZTphLmxpbmUsY29sdW1uOmEuY29sdW1uLG9mZnNldDp0eXBlb2YgYS5vZmZzZXQ9PSJudW1iZXIiJiZhLm9mZnNldD4tMT9hLm9mZnNldDp2b2lkIDB9fX1mdW5jdGlvbiBfayhzKXtsZXQgZT1WaWUocyksdD1qaWUocyk7aWYoZSYmdClyZXR1cm57c3RhcnQ6ZSxlbmQ6dH19dmFyIGppZSxWaWUsRWJ0PWcoKCk9PntqaWU9TGJ0KCJlbmQiKSxWaWU9TGJ0KCJzdGFydCIpO2koTGJ0LCJwb2ludCIpO2koX2ssInBvc2l0aW9uIil9KTt2YXIgVWllPWcoKCk9PntFYnQoKX0pO3ZhciBJMyxXaWUsRm1lPWcoKCk9PntJMz1bImFyaWFEZXNjcmliZWRCeSIsImFyaWFMYWJlbCIsImFyaWFMYWJlbGxlZEJ5Il0sV2llPXthbmNlc3RvcnM6e3Rib2R5OlsidGFibGUiXSx0ZDpbInRhYmxlIl0sdGg6WyJ0YWJsZSJdLHRoZWFkOlsidGFibGUiXSx0Zm9vdDpbInRhYmxlIl0sdHI6WyJ0YWJsZSJdfSxhdHRyaWJ1dGVzOnthOlsuLi5JMywiZGF0YUZvb3Rub3RlQmFja3JlZiIsImRhdGFGb290bm90ZVJlZiIsWyJjbGFzc05hbWUiLCJkYXRhLWZvb3Rub3RlLWJhY2tyZWYiXSwiaHJlZiJdLGJsb2NrcXVvdGU6WyJjaXRlIl0sY29kZTpbWyJjbGFzc05hbWUiLC9ebGFuZ3VhZ2UtLi9dXSxkZWw6WyJjaXRlIl0sZGl2OlsiaXRlbVNjb3BlIiwiaXRlbVR5cGUiXSxkbDpbLi4uSTNdLGgyOltbImNsYXNzTmFtZSIsInNyLW9ubHkiXV0saW1nOlsuLi5JMywibG9uZ0Rlc2MiLCJzcmMiXSxpbnB1dDpbWyJkaXNhYmxlZCIsITBdLFsidHlwZSIsImNoZWNrYm94Il1dLGluczpbImNpdGUiXSxsaTpbWyJjbGFzc05hbWUiLCJ0YXNrLWxpc3QtaXRlbSJdXSxvbDpbLi4uSTMsWyJjbGFzc05hbWUiLCJjb250YWlucy10YXNrLWxpc3QiXV0scTpbImNpdGUiXSxzZWN0aW9uOlsiZGF0YUZvb3Rub3RlcyIsWyJjbGFzc05hbWUiLCJmb290bm90ZXMiXV0sc291cmNlOlsic3JjU2V0Il0sc3VtbWFyeTpbLi4uSTNdLHRhYmxlOlsuLi5JM10sdWw6Wy4uLkkzLFsiY2xhc3NOYW1lIiwiY29udGFpbnMtdGFzay1saXN0Il1dLCIqIjpbImFiYnIiLCJhY2NlcHQiLCJhY2NlcHRDaGFyc2V0IiwiYWNjZXNzS2V5IiwiYWN0aW9uIiwiYWxpZ24iLCJhbHQiLCJheGlzIiwiYm9yZGVyIiwiY2VsbFBhZGRpbmciLCJjZWxsU3BhY2luZyIsImNoYXIiLCJjaGFyT2ZmIiwiY2hhclNldCIsImNoZWNrZWQiLCJjbGVhciIsImNvbFNwYW4iLCJjb2xvciIsImNvbHMiLCJjb21wYWN0IiwiY29vcmRzIiwiZGF0ZVRpbWUiLCJkaXIiLCJlbmNUeXBlIiwiZnJhbWUiLCJoU3BhY2UiLCJoZWFkZXJzIiwiaGVpZ2h0IiwiaHJlZkxhbmciLCJodG1sRm9yIiwiaWQiLCJpc01hcCIsIml0ZW1Qcm9wIiwibGFiZWwiLCJsYW5nIiwibWF4TGVuZ3RoIiwibWVkaWEiLCJtZXRob2QiLCJtdWx0aXBsZSIsIm5hbWUiLCJub0hyZWYiLCJub1NoYWRlIiwibm9XcmFwIiwib3BlbiIsInByb21wdCIsInJlYWRPbmx5IiwicmV2Iiwicm93U3BhbiIsInJvd3MiLCJydWxlcyIsInNjb3BlIiwic2VsZWN0ZWQiLCJzaGFwZSIsInNpemUiLCJzcGFuIiwic3RhcnQiLCJzdW1tYXJ5IiwidGFiSW5kZXgiLCJ0aXRsZSIsInVzZU1hcCIsInZBbGlnbiIsInZhbHVlIiwid2lkdGgiXX0sY2xvYmJlcjpbImFyaWFEZXNjcmliZWRCeSIsImFyaWFMYWJlbGxlZEJ5IiwiaWQiLCJuYW1lIl0sY2xvYmJlclByZWZpeDoidXNlci1jb250ZW50LSIscHJvdG9jb2xzOntjaXRlOlsiaHR0cCIsImh0dHBzIl0saHJlZjpbImh0dHAiLCJodHRwcyIsImlyYyIsImlyY3MiLCJtYWlsdG8iLCJ4bXBwIl0sbG9uZ0Rlc2M6WyJodHRwIiwiaHR0cHMiXSxzcmM6WyJodHRwIiwiaHR0cHMiXX0scmVxdWlyZWQ6e2lucHV0OntkaXNhYmxlZDohMCx0eXBlOiJjaGVja2JveCJ9fSxzdHJpcDpbInNjcmlwdCJdLHRhZ05hbWVzOlsiYSIsImIiLCJibG9ja3F1b3RlIiwiYnIiLCJjb2RlIiwiZGQiLCJkZWwiLCJkZXRhaWxzIiwiZGl2IiwiZGwiLCJkdCIsImVtIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaHIiLCJpIiwiaW1nIiwiaW5wdXQiLCJpbnMiLCJrYmQiLCJsaSIsIm9sIiwicCIsInBpY3R1cmUiLCJwcmUiLCJxIiwicnAiLCJydCIsInJ1YnkiLCJzIiwic2FtcCIsInNlY3Rpb24iLCJzb3VyY2UiLCJzcGFuIiwic3RyaWtlIiwic3Ryb25nIiwic3ViIiwic3VtbWFyeSIsInN1cCIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRmb290IiwidGgiLCJ0aGVhZCIsInRyIiwidHQiLCJ1bCIsInZhciJdfX0pO2Z1bmN0aW9uIEJtZShzLGUpe2xldCB0PXt0eXBlOiJyb290IixjaGlsZHJlbjpbXX0sYT17c2NoZW1hOmU/ey4uLldpZSwuLi5lfTpXaWUsc3RhY2s6W119LHI9UGJ0KGEscyk7cmV0dXJuIHImJihBcnJheS5pc0FycmF5KHIpP3IubGVuZ3RoPT09MT90PXJbMF06dC5jaGlsZHJlbj1yOnQ9ciksdH1mdW5jdGlvbiBQYnQocyxlKXtpZihlJiZ0eXBlb2YgZT09Im9iamVjdCIpe2xldCB0PWU7c3dpdGNoKHR5cGVvZiB0LnR5cGU9PSJzdHJpbmciP3QudHlwZToiIil7Y2FzZSJjb21tZW50IjpyZXR1cm4gQkZhKHMsdCk7Y2FzZSJkb2N0eXBlIjpyZXR1cm4gSEZhKHMsdCk7Y2FzZSJlbGVtZW50IjpyZXR1cm4gcUZhKHMsdCk7Y2FzZSJyb290IjpyZXR1cm4gakZhKHMsdCk7Y2FzZSJ0ZXh0IjpyZXR1cm4gVkZhKHMsdCk7ZGVmYXVsdDp9fX1mdW5jdGlvbiBCRmEocyxlKXtpZihzLnNjaGVtYS5hbGxvd0NvbW1lbnRzKXtsZXQgdD10eXBlb2YgZS52YWx1ZT09InN0cmluZyI/ZS52YWx1ZToiIixhPXQuaW5kZXhPZigiLS0+Iiksbj17dHlwZToiY29tbWVudCIsdmFsdWU6YTwwP3Q6dC5zbGljZSgwLGEpfTtyZXR1cm4gTWsobixlKSxufX1mdW5jdGlvbiBIRmEocyxlKXtpZihzLnNjaGVtYS5hbGxvd0RvY3R5cGVzKXtsZXQgdD17dHlwZToiZG9jdHlwZSJ9O3JldHVybiBNayh0LGUpLHR9fWZ1bmN0aW9uIHFGYShzLGUpe2xldCB0PXR5cGVvZiBlLnRhZ05hbWU9PSJzdHJpbmciP2UudGFnTmFtZToiIjtzLnN0YWNrLnB1c2godCk7bGV0IGE9SWJ0KHMsZS5jaGlsZHJlbikscj1VRmEocyxlLnByb3BlcnRpZXMpO3Muc3RhY2sucG9wKCk7bGV0IG49ITE7aWYodCYmdCE9PSIqIiYmKCFzLnNjaGVtYS50YWdOYW1lc3x8cy5zY2hlbWEudGFnTmFtZXMuaW5jbHVkZXModCkpJiYobj0hMCxzLnNjaGVtYS5hbmNlc3RvcnMmJmVoLmNhbGwocy5zY2hlbWEuYW5jZXN0b3JzLHQpKSl7bGV0IGw9cy5zY2hlbWEuYW5jZXN0b3JzW3RdLHA9LTE7Zm9yKG49ITE7KytwPGwubGVuZ3RoOylzLnN0YWNrLmluY2x1ZGVzKGxbcF0pJiYobj0hMCl9aWYoIW4pcmV0dXJuIHMuc2NoZW1hLnN0cmlwJiYhcy5zY2hlbWEuc3RyaXAuaW5jbHVkZXModCk/YTp2b2lkIDA7bGV0IG89e3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6dCxwcm9wZXJ0aWVzOnIsY2hpbGRyZW46YX07cmV0dXJuIE1rKG8sZSksb31mdW5jdGlvbiBqRmEocyxlKXtsZXQgYT17dHlwZToicm9vdCIsY2hpbGRyZW46SWJ0KHMsZS5jaGlsZHJlbil9O3JldHVybiBNayhhLGUpLGF9ZnVuY3Rpb24gVkZhKHMsZSl7bGV0IGE9e3R5cGU6InRleHQiLHZhbHVlOnR5cGVvZiBlLnZhbHVlPT0ic3RyaW5nIj9lLnZhbHVlOiIifTtyZXR1cm4gTWsoYSxlKSxhfWZ1bmN0aW9uIElidChzLGUpe2xldCB0PVtdO2lmKEFycmF5LmlzQXJyYXkoZSkpe2xldCBhPWUscj0tMTtmb3IoOysrcjxhLmxlbmd0aDspe2xldCBuPVBidChzLGFbcl0pO24mJihBcnJheS5pc0FycmF5KG4pP3QucHVzaCguLi5uKTp0LnB1c2gobikpfX1yZXR1cm4gdH1mdW5jdGlvbiBVRmEocyxlKXtsZXQgdD1zLnN0YWNrW3Muc3RhY2subGVuZ3RoLTFdLGE9cy5zY2hlbWEuYXR0cmlidXRlcyxyPXMuc2NoZW1hLnJlcXVpcmVkLG49YSYmZWguY2FsbChhLHQpP2FbdF06dm9pZCAwLG89YSYmZWguY2FsbChhLCIqIik/YVsiKiJdOnZvaWQgMCxsPWUmJnR5cGVvZiBlPT0ib2JqZWN0Ij9lOnt9LHA9e30sZDtmb3IoZCBpbiBsKWlmKGVoLmNhbGwobCxkKSl7bGV0IHU9bFtkXSxjPUFidChzLFJidChuLGQpLGQsdSk7Yz09bnVsbCYmKGM9QWJ0KHMsUmJ0KG8sZCksZCx1KSksYyE9bnVsbCYmKHBbZF09Yyl9aWYociYmZWguY2FsbChyLHQpKXtsZXQgdT1yW3RdO2ZvcihkIGluIHUpZWguY2FsbCh1LGQpJiYhZWguY2FsbChwLGQpJiYocFtkXT11W2RdKX1yZXR1cm4gcH1mdW5jdGlvbiBBYnQocyxlLHQsYSl7cmV0dXJuIGU/QXJyYXkuaXNBcnJheShhKT9XRmEocyxlLHQsYSk6TmJ0KHMsZSx0LGEpOnZvaWQgMH1mdW5jdGlvbiBXRmEocyxlLHQsYSl7bGV0IHI9LTEsbj1bXTtmb3IoOysrcjxhLmxlbmd0aDspe2xldCBvPU5idChzLGUsdCxhW3JdKTsodHlwZW9mIG89PSJudW1iZXIifHx0eXBlb2Ygbz09InN0cmluZyIpJiZuLnB1c2gobyl9cmV0dXJuIG59ZnVuY3Rpb24gTmJ0KHMsZSx0LGEpe2lmKCEodHlwZW9mIGEhPSJib29sZWFuIiYmdHlwZW9mIGEhPSJudW1iZXIiJiZ0eXBlb2YgYSE9InN0cmluZyIpJiZHRmEocyx0LGEpKXtpZih0eXBlb2YgZT09Im9iamVjdCImJmUubGVuZ3RoPjEpe2xldCByPSExLG49MDtmb3IoOysrbjxlLmxlbmd0aDspe2xldCBvPWVbbl07aWYobyYmdHlwZW9mIG89PSJvYmplY3QiJiYiZmxhZ3MiaW4gbyl7aWYoby50ZXN0KFN0cmluZyhhKSkpe3I9ITA7YnJlYWt9fWVsc2UgaWYobz09PWEpe3I9ITA7YnJlYWt9fWlmKCFyKXJldHVybn1yZXR1cm4gcy5zY2hlbWEuY2xvYmJlciYmcy5zY2hlbWEuY2xvYmJlclByZWZpeCYmcy5zY2hlbWEuY2xvYmJlci5pbmNsdWRlcyh0KT9zLnNjaGVtYS5jbG9iYmVyUHJlZml4K2E6YX19ZnVuY3Rpb24gR0ZhKHMsZSx0KXtsZXQgYT1zLnNjaGVtYS5wcm90b2NvbHMmJmVoLmNhbGwocy5zY2hlbWEucHJvdG9jb2xzLGUpP3Muc2NoZW1hLnByb3RvY29sc1tlXTp2b2lkIDA7aWYoIWF8fGEubGVuZ3RoPT09MClyZXR1cm4hMDtsZXQgcj1TdHJpbmcodCksbj1yLmluZGV4T2YoIjoiKSxvPXIuaW5kZXhPZigiPyIpLGw9ci5pbmRleE9mKCIjIikscD1yLmluZGV4T2YoIi8iKTtpZihuPDB8fHA+LTEmJm4+cHx8bz4tMSYmbj5vfHxsPi0xJiZuPmwpcmV0dXJuITA7bGV0IGQ9LTE7Zm9yKDsrK2Q8YS5sZW5ndGg7KXtsZXQgdT1hW2RdO2lmKG49PT11Lmxlbmd0aCYmci5zbGljZSgwLHUubGVuZ3RoKT09PXUpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gTWsocyxlKXtsZXQgdD1fayhlKTtlLmRhdGEmJihzLmRhdGE9SnAoZS5kYXRhKSksdCYmKHMucG9zaXRpb249dCl9ZnVuY3Rpb24gUmJ0KHMsZSl7bGV0IHQsYT0tMTtpZihzKWZvcig7KythPHMubGVuZ3RoOyl7bGV0IHI9c1thXSxuPXR5cGVvZiByPT0ic3RyaW5nIj9yOnJbMF07aWYobj09PWUpcmV0dXJuIHI7bj09PSJkYXRhKiImJih0PXIpfWlmKGUubGVuZ3RoPjQmJmUuc2xpY2UoMCw0KS50b0xvd2VyQ2FzZSgpPT09ImRhdGEiKXJldHVybiB0fXZhciBlaCxPYnQ9ZygoKT0+e3FpZSgpO1VpZSgpO0ZtZSgpO2VoPXt9Lmhhc093blByb3BlcnR5O2koQm1lLCJzYW5pdGl6ZSIpO2koUGJ0LCJ0cmFuc2Zvcm0iKTtpKEJGYSwiY29tbWVudCIpO2koSEZhLCJkb2N0eXBlIik7aShxRmEsImVsZW1lbnQiKTtpKGpGYSwicm9vdCIpO2koVkZhLCJ0ZXh0Iik7aShJYnQsImNoaWxkcmVuIik7aShVRmEsInByb3BlcnRpZXMiKTtpKEFidCwicHJvcGVydHlWYWx1ZSIpO2koV0ZhLCJwcm9wZXJ0eVZhbHVlTWFueSIpO2koTmJ0LCJwcm9wZXJ0eVZhbHVlUHJpbWl0aXZlIik7aShHRmEsInNhZmVQcm90b2NvbCIpO2koTWssInBhdGNoIik7aShSYnQsImZpbmREZWZpbml0aW9uIil9KTt2YXIgRmJ0PWcoKCk9PntPYnQoKTtGbWUoKX0pO2Z1bmN0aW9uIEJidChzLGUpe2xldCB0PXt0eXBlOiJlbGVtZW50Iix0YWdOYW1lOiJibG9ja3F1b3RlIixwcm9wZXJ0aWVzOnt9LGNoaWxkcmVuOnMud3JhcChzLmFsbChlKSwhMCl9O3JldHVybiBzLnBhdGNoKGUsdCkscy5hcHBseURhdGEoZSx0KX12YXIgSGJ0PWcoKCk9PntpKEJidCwiYmxvY2txdW90ZSIpfSk7ZnVuY3Rpb24gcWJ0KHMsZSl7bGV0IHQ9e3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6ImJyIixwcm9wZXJ0aWVzOnt9LGNoaWxkcmVuOltdfTtyZXR1cm4gcy5wYXRjaChlLHQpLFtzLmFwcGx5RGF0YShlLHQpLHt0eXBlOiJ0ZXh0Iix2YWx1ZTpgCmB9XX12YXIgamJ0PWcoKCk9PntpKHFidCwiaGFyZEJyZWFrIil9KTtmdW5jdGlvbiBWYnQocyxlKXtsZXQgdD1lLnZhbHVlP2UudmFsdWUrYApgOiIiLGE9e30scj1lLmxhbmc/ZS5sYW5nLnNwbGl0KC9ccysvKTpbXTtyLmxlbmd0aD4wJiYoYS5jbGFzc05hbWU9WyJsYW5ndWFnZS0iK3JbMF1dKTtsZXQgbj17dHlwZToiZWxlbWVudCIsdGFnTmFtZToiY29kZSIscHJvcGVydGllczphLGNoaWxkcmVuOlt7dHlwZToidGV4dCIsdmFsdWU6dH1dfTtyZXR1cm4gZS5tZXRhJiYobi5kYXRhPXttZXRhOmUubWV0YX0pLHMucGF0Y2goZSxuKSxuPXMuYXBwbHlEYXRhKGUsbiksbj17dHlwZToiZWxlbWVudCIsdGFnTmFtZToicHJlIixwcm9wZXJ0aWVzOnt9LGNoaWxkcmVuOltuXX0scy5wYXRjaChlLG4pLG59dmFyIFVidD1nKCgpPT57aShWYnQsImNvZGUiKX0pO2Z1bmN0aW9uIFdidChzLGUpe2xldCB0PXt0eXBlOiJlbGVtZW50Iix0YWdOYW1lOiJkZWwiLHByb3BlcnRpZXM6e30sY2hpbGRyZW46cy5hbGwoZSl9O3JldHVybiBzLnBhdGNoKGUsdCkscy5hcHBseURhdGEoZSx0KX12YXIgR2J0PWcoKCk9PntpKFdidCwic3RyaWtldGhyb3VnaCIpfSk7ZnVuY3Rpb24gS2J0KHMsZSl7bGV0IHQ9e3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6ImVtIixwcm9wZXJ0aWVzOnt9LGNoaWxkcmVuOnMuYWxsKGUpfTtyZXR1cm4gcy5wYXRjaChlLHQpLHMuYXBwbHlEYXRhKGUsdCl9dmFyIFlidD1nKCgpPT57aShLYnQsImVtcGhhc2lzIil9KTtmdW5jdGlvbiBaYnQocyxlKXtsZXQgdD10eXBlb2Ygcy5vcHRpb25zLmNsb2JiZXJQcmVmaXg9PSJzdHJpbmciP3Mub3B0aW9ucy5jbG9iYmVyUHJlZml4OiJ1c2VyLWNvbnRlbnQtIixhPVN0cmluZyhlLmlkZW50aWZpZXIpLnRvVXBwZXJDYXNlKCkscj1WbChhLnRvTG93ZXJDYXNlKCkpLG49cy5mb290bm90ZU9yZGVyLmluZGV4T2YoYSksbyxsPXMuZm9vdG5vdGVDb3VudHMuZ2V0KGEpO2w9PT12b2lkIDA/KGw9MCxzLmZvb3Rub3RlT3JkZXIucHVzaChhKSxvPXMuZm9vdG5vdGVPcmRlci5sZW5ndGgpOm89bisxLGwrPTEscy5mb290bm90ZUNvdW50cy5zZXQoYSxsKTtsZXQgcD17dHlwZToiZWxlbWVudCIsdGFnTmFtZToiYSIscHJvcGVydGllczp7aHJlZjoiIyIrdCsiZm4tIityLGlkOnQrImZucmVmLSIrcisobD4xPyItIitsOiIiKSxkYXRhRm9vdG5vdGVSZWY6ITAsYXJpYURlc2NyaWJlZEJ5OlsiZm9vdG5vdGUtbGFiZWwiXX0sY2hpbGRyZW46W3t0eXBlOiJ0ZXh0Iix2YWx1ZTpTdHJpbmcobyl9XX07cy5wYXRjaChlLHApO2xldCBkPXt0eXBlOiJlbGVtZW50Iix0YWdOYW1lOiJzdXAiLHByb3BlcnRpZXM6e30sY2hpbGRyZW46W3BdfTtyZXR1cm4gcy5wYXRjaChlLGQpLHMuYXBwbHlEYXRhKGUsZCl9dmFyIFhidD1nKCgpPT57eWQoKTtpKFpidCwiZm9vdG5vdGVSZWZlcmVuY2UiKX0pO2Z1bmN0aW9uIFFidChzLGUpe2xldCB0PXt0eXBlOiJlbGVtZW50Iix0YWdOYW1lOiJoIitlLmRlcHRoLHByb3BlcnRpZXM6e30sY2hpbGRyZW46cy5hbGwoZSl9O3JldHVybiBzLnBhdGNoKGUsdCkscy5hcHBseURhdGEoZSx0KX12YXIgSmJ0PWcoKCk9PntpKFFidCwiaGVhZGluZyIpfSk7ZnVuY3Rpb24gZXZ0KHMsZSl7aWYocy5vcHRpb25zLmFsbG93RGFuZ2Vyb3VzSHRtbCl7bGV0IHQ9e3R5cGU6InJhdyIsdmFsdWU6ZS52YWx1ZX07cmV0dXJuIHMucGF0Y2goZSx0KSxzLmFwcGx5RGF0YShlLHQpfX12YXIgdHZ0PWcoKCk9PntpKGV2dCwiaHRtbCIpfSk7ZnVuY3Rpb24gR2llKHMsZSl7bGV0IHQ9ZS5yZWZlcmVuY2VUeXBlLGE9Il0iO2lmKHQ9PT0iY29sbGFwc2VkIj9hKz0iW10iOnQ9PT0iZnVsbCImJihhKz0iWyIrKGUubGFiZWx8fGUuaWRlbnRpZmllcikrIl0iKSxlLnR5cGU9PT0iaW1hZ2VSZWZlcmVuY2UiKXJldHVyblt7dHlwZToidGV4dCIsdmFsdWU6IiFbIitlLmFsdCthfV07bGV0IHI9cy5hbGwoZSksbj1yWzBdO24mJm4udHlwZT09PSJ0ZXh0Ij9uLnZhbHVlPSJbIituLnZhbHVlOnIudW5zaGlmdCh7dHlwZToidGV4dCIsdmFsdWU6IlsifSk7bGV0IG89cltyLmxlbmd0aC0xXTtyZXR1cm4gbyYmby50eXBlPT09InRleHQiP28udmFsdWUrPWE6ci5wdXNoKHt0eXBlOiJ0ZXh0Iix2YWx1ZTphfSkscn12YXIgSG1lPWcoKCk9PntpKEdpZSwicmV2ZXJ0Iil9KTtmdW5jdGlvbiBhdnQocyxlKXtsZXQgdD1TdHJpbmcoZS5pZGVudGlmaWVyKS50b1VwcGVyQ2FzZSgpLGE9cy5kZWZpbml0aW9uQnlJZC5nZXQodCk7aWYoIWEpcmV0dXJuIEdpZShzLGUpO2xldCByPXtzcmM6VmwoYS51cmx8fCIiKSxhbHQ6ZS5hbHR9O2EudGl0bGUhPT1udWxsJiZhLnRpdGxlIT09dm9pZCAwJiYoci50aXRsZT1hLnRpdGxlKTtsZXQgbj17dHlwZToiZWxlbWVudCIsdGFnTmFtZToiaW1nIixwcm9wZXJ0aWVzOnIsY2hpbGRyZW46W119O3JldHVybiBzLnBhdGNoKGUsbikscy5hcHBseURhdGEoZSxuKX12YXIgc3Z0PWcoKCk9Pnt5ZCgpO0htZSgpO2koYXZ0LCJpbWFnZVJlZmVyZW5jZSIpfSk7ZnVuY3Rpb24gaXZ0KHMsZSl7bGV0IHQ9e3NyYzpWbChlLnVybCl9O2UuYWx0IT09bnVsbCYmZS5hbHQhPT12b2lkIDAmJih0LmFsdD1lLmFsdCksZS50aXRsZSE9PW51bGwmJmUudGl0bGUhPT12b2lkIDAmJih0LnRpdGxlPWUudGl0bGUpO2xldCBhPXt0eXBlOiJlbGVtZW50Iix0YWdOYW1lOiJpbWciLHByb3BlcnRpZXM6dCxjaGlsZHJlbjpbXX07cmV0dXJuIHMucGF0Y2goZSxhKSxzLmFwcGx5RGF0YShlLGEpfXZhciBydnQ9ZygoKT0+e3lkKCk7aShpdnQsImltYWdlIil9KTtmdW5jdGlvbiBvdnQocyxlKXtsZXQgdD17dHlwZToidGV4dCIsdmFsdWU6ZS52YWx1ZS5yZXBsYWNlKC9ccj9cbnxcci9nLCIgIil9O3MucGF0Y2goZSx0KTtsZXQgYT17dHlwZToiZWxlbWVudCIsdGFnTmFtZToiY29kZSIscHJvcGVydGllczp7fSxjaGlsZHJlbjpbdF19O3JldHVybiBzLnBhdGNoKGUsYSkscy5hcHBseURhdGEoZSxhKX12YXIgbnZ0PWcoKCk9PntpKG92dCwiaW5saW5lQ29kZSIpfSk7ZnVuY3Rpb24gbHZ0KHMsZSl7bGV0IHQ9U3RyaW5nKGUuaWRlbnRpZmllcikudG9VcHBlckNhc2UoKSxhPXMuZGVmaW5pdGlvbkJ5SWQuZ2V0KHQpO2lmKCFhKXJldHVybiBHaWUocyxlKTtsZXQgcj17aHJlZjpWbChhLnVybHx8IiIpfTthLnRpdGxlIT09bnVsbCYmYS50aXRsZSE9PXZvaWQgMCYmKHIudGl0bGU9YS50aXRsZSk7bGV0IG49e3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6ImEiLHByb3BlcnRpZXM6cixjaGlsZHJlbjpzLmFsbChlKX07cmV0dXJuIHMucGF0Y2goZSxuKSxzLmFwcGx5RGF0YShlLG4pfXZhciBjdnQ9ZygoKT0+e3lkKCk7SG1lKCk7aShsdnQsImxpbmtSZWZlcmVuY2UiKX0pO2Z1bmN0aW9uIGR2dChzLGUpe2xldCB0PXtocmVmOlZsKGUudXJsKX07ZS50aXRsZSE9PW51bGwmJmUudGl0bGUhPT12b2lkIDAmJih0LnRpdGxlPWUudGl0bGUpO2xldCBhPXt0eXBlOiJlbGVtZW50Iix0YWdOYW1lOiJhIixwcm9wZXJ0aWVzOnQsY2hpbGRyZW46cy5hbGwoZSl9O3JldHVybiBzLnBhdGNoKGUsYSkscy5hcHBseURhdGEoZSxhKX12YXIgdXZ0PWcoKCk9Pnt5ZCgpO2koZHZ0LCJsaW5rIil9KTtmdW5jdGlvbiBodnQocyxlLHQpe2xldCBhPXMuYWxsKGUpLHI9dD9LRmEodCk6cHZ0KGUpLG49e30sbz1bXTtpZih0eXBlb2YgZS5jaGVja2VkPT0iYm9vbGVhbiIpe2xldCB1PWFbMF0sYzt1JiZ1LnR5cGU9PT0iZWxlbWVudCImJnUudGFnTmFtZT09PSJwIj9jPXU6KGM9e3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6InAiLHByb3BlcnRpZXM6e30sY2hpbGRyZW46W119LGEudW5zaGlmdChjKSksYy5jaGlsZHJlbi5sZW5ndGg+MCYmYy5jaGlsZHJlbi51bnNoaWZ0KHt0eXBlOiJ0ZXh0Iix2YWx1ZToiICJ9KSxjLmNoaWxkcmVuLnVuc2hpZnQoe3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6ImlucHV0Iixwcm9wZXJ0aWVzOnt0eXBlOiJjaGVja2JveCIsY2hlY2tlZDplLmNoZWNrZWQsZGlzYWJsZWQ6ITB9LGNoaWxkcmVuOltdfSksbi5jbGFzc05hbWU9WyJ0YXNrLWxpc3QtaXRlbSJdfWxldCBsPS0xO2Zvcig7KytsPGEubGVuZ3RoOyl7bGV0IHU9YVtsXTsocnx8bCE9PTB8fHUudHlwZSE9PSJlbGVtZW50Inx8dS50YWdOYW1lIT09InAiKSYmby5wdXNoKHt0eXBlOiJ0ZXh0Iix2YWx1ZTpgCmB9KSx1LnR5cGU9PT0iZWxlbWVudCImJnUudGFnTmFtZT09PSJwIiYmIXI/by5wdXNoKC4uLnUuY2hpbGRyZW4pOm8ucHVzaCh1KX1sZXQgcD1hW2EubGVuZ3RoLTFdO3AmJihyfHxwLnR5cGUhPT0iZWxlbWVudCJ8fHAudGFnTmFtZSE9PSJwIikmJm8ucHVzaCh7dHlwZToidGV4dCIsdmFsdWU6YApgfSk7bGV0IGQ9e3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6ImxpIixwcm9wZXJ0aWVzOm4sY2hpbGRyZW46b307cmV0dXJuIHMucGF0Y2goZSxkKSxzLmFwcGx5RGF0YShlLGQpfWZ1bmN0aW9uIEtGYShzKXtsZXQgZT0hMTtpZihzLnR5cGU9PT0ibGlzdCIpe2U9cy5zcHJlYWR8fCExO2xldCB0PXMuY2hpbGRyZW4sYT0tMTtmb3IoOyFlJiYrK2E8dC5sZW5ndGg7KWU9cHZ0KHRbYV0pfXJldHVybiBlfWZ1bmN0aW9uIHB2dChzKXtsZXQgZT1zLnNwcmVhZDtyZXR1cm4gZT8/cy5jaGlsZHJlbi5sZW5ndGg+MX12YXIgZnZ0PWcoKCk9PntpKGh2dCwibGlzdEl0ZW0iKTtpKEtGYSwibGlzdExvb3NlIik7aShwdnQsImxpc3RJdGVtTG9vc2UiKX0pO2Z1bmN0aW9uIG12dChzLGUpe2xldCB0PXt9LGE9cy5hbGwoZSkscj0tMTtmb3IodHlwZW9mIGUuc3RhcnQ9PSJudW1iZXIiJiZlLnN0YXJ0IT09MSYmKHQuc3RhcnQ9ZS5zdGFydCk7KytyPGEubGVuZ3RoOyl7bGV0IG89YVtyXTtpZihvLnR5cGU9PT0iZWxlbWVudCImJm8udGFnTmFtZT09PSJsaSImJm8ucHJvcGVydGllcyYmQXJyYXkuaXNBcnJheShvLnByb3BlcnRpZXMuY2xhc3NOYW1lKSYmby5wcm9wZXJ0aWVzLmNsYXNzTmFtZS5pbmNsdWRlcygidGFzay1saXN0LWl0ZW0iKSl7dC5jbGFzc05hbWU9WyJjb250YWlucy10YXNrLWxpc3QiXTticmVha319bGV0IG49e3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6ZS5vcmRlcmVkPyJvbCI6InVsIixwcm9wZXJ0aWVzOnQsY2hpbGRyZW46cy53cmFwKGEsITApfTtyZXR1cm4gcy5wYXRjaChlLG4pLHMuYXBwbHlEYXRhKGUsbil9dmFyIGd2dD1nKCgpPT57aShtdnQsImxpc3QiKX0pO2Z1bmN0aW9uIGJ2dChzLGUpe2xldCB0PXt0eXBlOiJlbGVtZW50Iix0YWdOYW1lOiJwIixwcm9wZXJ0aWVzOnt9LGNoaWxkcmVuOnMuYWxsKGUpfTtyZXR1cm4gcy5wYXRjaChlLHQpLHMuYXBwbHlEYXRhKGUsdCl9dmFyIHZ2dD1nKCgpPT57aShidnQsInBhcmFncmFwaCIpfSk7ZnVuY3Rpb24geHZ0KHMsZSl7bGV0IHQ9e3R5cGU6InJvb3QiLGNoaWxkcmVuOnMud3JhcChzLmFsbChlKSl9O3JldHVybiBzLnBhdGNoKGUsdCkscy5hcHBseURhdGEoZSx0KX12YXIgeXZ0PWcoKCk9PntpKHh2dCwicm9vdCIpfSk7ZnVuY3Rpb24gd3Z0KHMsZSl7bGV0IHQ9e3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6InN0cm9uZyIscHJvcGVydGllczp7fSxjaGlsZHJlbjpzLmFsbChlKX07cmV0dXJuIHMucGF0Y2goZSx0KSxzLmFwcGx5RGF0YShlLHQpfXZhciBrdnQ9ZygoKT0+e2kod3Z0LCJzdHJvbmciKX0pO2Z1bmN0aW9uIFN2dChzLGUpe2xldCB0PXMuYWxsKGUpLGE9dC5zaGlmdCgpLHI9W107aWYoYSl7bGV0IG89e3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6InRoZWFkIixwcm9wZXJ0aWVzOnt9LGNoaWxkcmVuOnMud3JhcChbYV0sITApfTtzLnBhdGNoKGUuY2hpbGRyZW5bMF0sbyksci5wdXNoKG8pfWlmKHQubGVuZ3RoPjApe2xldCBvPXt0eXBlOiJlbGVtZW50Iix0YWdOYW1lOiJ0Ym9keSIscHJvcGVydGllczp7fSxjaGlsZHJlbjpzLndyYXAodCwhMCl9LGw9VmllKGUuY2hpbGRyZW5bMV0pLHA9amllKGUuY2hpbGRyZW5bZS5jaGlsZHJlbi5sZW5ndGgtMV0pO2wmJnAmJihvLnBvc2l0aW9uPXtzdGFydDpsLGVuZDpwfSksci5wdXNoKG8pfWxldCBuPXt0eXBlOiJlbGVtZW50Iix0YWdOYW1lOiJ0YWJsZSIscHJvcGVydGllczp7fSxjaGlsZHJlbjpzLndyYXAociwhMCl9O3JldHVybiBzLnBhdGNoKGUsbikscy5hcHBseURhdGEoZSxuKX12YXIgX3Z0PWcoKCk9PntVaWUoKTtpKFN2dCwidGFibGUiKX0pO2Z1bmN0aW9uIE12dChzLGUsdCl7bGV0IGE9dD90LmNoaWxkcmVuOnZvaWQgMCxuPShhP2EuaW5kZXhPZihlKToxKT09PTA/InRoIjoidGQiLG89dCYmdC50eXBlPT09InRhYmxlIj90LmFsaWduOnZvaWQgMCxsPW8/by5sZW5ndGg6ZS5jaGlsZHJlbi5sZW5ndGgscD0tMSxkPVtdO2Zvcig7KytwPGw7KXtsZXQgYz1lLmNoaWxkcmVuW3BdLGI9e30sdj1vP29bcF06dm9pZCAwO3YmJihiLmFsaWduPXYpO2xldCB4PXt0eXBlOiJlbGVtZW50Iix0YWdOYW1lOm4scHJvcGVydGllczpiLGNoaWxkcmVuOltdfTtjJiYoeC5jaGlsZHJlbj1zLmFsbChjKSxzLnBhdGNoKGMseCkseD1zLmFwcGx5RGF0YShjLHgpKSxkLnB1c2goeCl9bGV0IHU9e3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6InRyIixwcm9wZXJ0aWVzOnt9LGNoaWxkcmVuOnMud3JhcChkLCEwKX07cmV0dXJuIHMucGF0Y2goZSx1KSxzLmFwcGx5RGF0YShlLHUpfXZhciB6dnQ9ZygoKT0+e2koTXZ0LCJ0YWJsZVJvdyIpfSk7ZnVuY3Rpb24gQ3Z0KHMsZSl7bGV0IHQ9e3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6InRkIixwcm9wZXJ0aWVzOnt9LGNoaWxkcmVuOnMuYWxsKGUpfTtyZXR1cm4gcy5wYXRjaChlLHQpLHMuYXBwbHlEYXRhKGUsdCl9dmFyIFR2dD1nKCgpPT57aShDdnQsInRhYmxlQ2VsbCIpfSk7ZnVuY3Rpb24gRHZ0KHMpe2xldCBlPVN0cmluZyhzKSx0PS9ccj9cbnxcci9nLGE9dC5leGVjKGUpLHI9MCxuPVtdO2Zvcig7YTspbi5wdXNoKCR2dChlLnNsaWNlKHIsYS5pbmRleCkscj4wLCEwKSxhWzBdKSxyPWEuaW5kZXgrYVswXS5sZW5ndGgsYT10LmV4ZWMoZSk7cmV0dXJuIG4ucHVzaCgkdnQoZS5zbGljZShyKSxyPjAsITEpKSxuLmpvaW4oIiIpfWZ1bmN0aW9uICR2dChzLGUsdCl7bGV0IGE9MCxyPXMubGVuZ3RoO2lmKGUpe2xldCBuPXMuY29kZVBvaW50QXQoYSk7Zm9yKDtuPT09OXx8bj09PTMyOylhKyssbj1zLmNvZGVQb2ludEF0KGEpfWlmKHQpe2xldCBuPXMuY29kZVBvaW50QXQoci0xKTtmb3IoO249PT05fHxuPT09MzI7KXItLSxuPXMuY29kZVBvaW50QXQoci0xKX1yZXR1cm4gcj5hP3Muc2xpY2UoYSxyKToiIn12YXIgbTRpLGc0aSxMdnQ9ZygoKT0+e200aT05LGc0aT0zMjtpKER2dCwidHJpbUxpbmVzIik7aSgkdnQsInRyaW1MaW5lIil9KTtmdW5jdGlvbiBFdnQocyxlKXtsZXQgdD17dHlwZToidGV4dCIsdmFsdWU6RHZ0KFN0cmluZyhlLnZhbHVlKSl9O3JldHVybiBzLnBhdGNoKGUsdCkscy5hcHBseURhdGEoZSx0KX12YXIgUHZ0PWcoKCk9PntMdnQoKTtpKEV2dCwidGV4dCIpfSk7ZnVuY3Rpb24gSXZ0KHMsZSl7bGV0IHQ9e3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6ImhyIixwcm9wZXJ0aWVzOnt9LGNoaWxkcmVuOltdfTtyZXR1cm4gcy5wYXRjaChlLHQpLHMuYXBwbHlEYXRhKGUsdCl9dmFyIEF2dD1nKCgpPT57aShJdnQsInRoZW1hdGljQnJlYWsiKX0pO2Z1bmN0aW9uIEtpZSgpe312YXIgcW1lLGptZT1nKCgpPT57SGJ0KCk7amJ0KCk7VWJ0KCk7R2J0KCk7WWJ0KCk7WGJ0KCk7SmJ0KCk7dHZ0KCk7c3Z0KCk7cnZ0KCk7bnZ0KCk7Y3Z0KCk7dXZ0KCk7ZnZ0KCk7Z3Z0KCk7dnZ0KCk7eXZ0KCk7a3Z0KCk7X3Z0KCk7enZ0KCk7VHZ0KCk7UHZ0KCk7QXZ0KCk7cW1lPXtibG9ja3F1b3RlOkJidCxicmVhazpxYnQsY29kZTpWYnQsZGVsZXRlOldidCxlbXBoYXNpczpLYnQsZm9vdG5vdGVSZWZlcmVuY2U6WmJ0LGhlYWRpbmc6UWJ0LGh0bWw6ZXZ0LGltYWdlUmVmZXJlbmNlOmF2dCxpbWFnZTppdnQsaW5saW5lQ29kZTpvdnQsbGlua1JlZmVyZW5jZTpsdnQsbGluazpkdnQsbGlzdEl0ZW06aHZ0LGxpc3Q6bXZ0LHBhcmFncmFwaDpidnQscm9vdDp4dnQsc3Ryb25nOnd2dCx0YWJsZTpTdnQsdGFibGVDZWxsOkN2dCx0YWJsZVJvdzpNdnQsdGV4dDpFdnQsdGhlbWF0aWNCcmVhazpJdnQsdG9tbDpLaWUseWFtbDpLaWUsZGVmaW5pdGlvbjpLaWUsZm9vdG5vdGVEZWZpbml0aW9uOktpZX07aShLaWUsImlnbm9yZSIpfSk7ZnVuY3Rpb24gTnZ0KHMsZSl7bGV0IHQ9W3t0eXBlOiJ0ZXh0Iix2YWx1ZToiXHUyMUE5In1dO3JldHVybiBlPjEmJnQucHVzaCh7dHlwZToiZWxlbWVudCIsdGFnTmFtZToic3VwIixwcm9wZXJ0aWVzOnt9LGNoaWxkcmVuOlt7dHlwZToidGV4dCIsdmFsdWU6U3RyaW5nKGUpfV19KSx0fWZ1bmN0aW9uIFJ2dChzLGUpe3JldHVybiJCYWNrIHRvIHJlZmVyZW5jZSAiKyhzKzEpKyhlPjE/Ii0iK2U6IiIpfWZ1bmN0aW9uIE92dChzKXtsZXQgZT10eXBlb2Ygcy5vcHRpb25zLmNsb2JiZXJQcmVmaXg9PSJzdHJpbmciP3Mub3B0aW9ucy5jbG9iYmVyUHJlZml4OiJ1c2VyLWNvbnRlbnQtIix0PXMub3B0aW9ucy5mb290bm90ZUJhY2tDb250ZW50fHxOdnQsYT1zLm9wdGlvbnMuZm9vdG5vdGVCYWNrTGFiZWx8fFJ2dCxyPXMub3B0aW9ucy5mb290bm90ZUxhYmVsfHwiRm9vdG5vdGVzIixuPXMub3B0aW9ucy5mb290bm90ZUxhYmVsVGFnTmFtZXx8ImgyIixvPXMub3B0aW9ucy5mb290bm90ZUxhYmVsUHJvcGVydGllc3x8e2NsYXNzTmFtZTpbInNyLW9ubHkiXX0sbD1bXSxwPS0xO2Zvcig7KytwPHMuZm9vdG5vdGVPcmRlci5sZW5ndGg7KXtsZXQgZD1zLmZvb3Rub3RlQnlJZC5nZXQocy5mb290bm90ZU9yZGVyW3BdKTtpZighZCljb250aW51ZTtsZXQgdT1zLmFsbChkKSxjPVN0cmluZyhkLmlkZW50aWZpZXIpLnRvVXBwZXJDYXNlKCksYj1WbChjLnRvTG93ZXJDYXNlKCkpLHY9MCx4PVtdLG09cy5mb290bm90ZUNvdW50cy5nZXQoYyk7Zm9yKDttIT09dm9pZCAwJiYrK3Y8PW07KXt4Lmxlbmd0aD4wJiZ4LnB1c2goe3R5cGU6InRleHQiLHZhbHVlOiIgIn0pO2xldCBNPXR5cGVvZiB0PT0ic3RyaW5nIj90OnQocCx2KTt0eXBlb2YgTT09InN0cmluZyImJihNPXt0eXBlOiJ0ZXh0Iix2YWx1ZTpNfSkseC5wdXNoKHt0eXBlOiJlbGVtZW50Iix0YWdOYW1lOiJhIixwcm9wZXJ0aWVzOntocmVmOiIjIitlKyJmbnJlZi0iK2IrKHY+MT8iLSIrdjoiIiksZGF0YUZvb3Rub3RlQmFja3JlZjoiIixhcmlhTGFiZWw6dHlwZW9mIGE9PSJzdHJpbmciP2E6YShwLHYpLGNsYXNzTmFtZTpbImRhdGEtZm9vdG5vdGUtYmFja3JlZiJdfSxjaGlsZHJlbjpBcnJheS5pc0FycmF5KE0pP006W01dfSl9bGV0IGY9dVt1Lmxlbmd0aC0xXTtpZihmJiZmLnR5cGU9PT0iZWxlbWVudCImJmYudGFnTmFtZT09PSJwIil7bGV0IE09Zi5jaGlsZHJlbltmLmNoaWxkcmVuLmxlbmd0aC0xXTtNJiZNLnR5cGU9PT0idGV4dCI/TS52YWx1ZSs9IiAiOmYuY2hpbGRyZW4ucHVzaCh7dHlwZToidGV4dCIsdmFsdWU6IiAifSksZi5jaGlsZHJlbi5wdXNoKC4uLngpfWVsc2UgdS5wdXNoKC4uLngpO2xldCB5PXt0eXBlOiJlbGVtZW50Iix0YWdOYW1lOiJsaSIscHJvcGVydGllczp7aWQ6ZSsiZm4tIitifSxjaGlsZHJlbjpzLndyYXAodSwhMCl9O3MucGF0Y2goZCx5KSxsLnB1c2goeSl9aWYobC5sZW5ndGghPT0wKXJldHVybnt0eXBlOiJlbGVtZW50Iix0YWdOYW1lOiJzZWN0aW9uIixwcm9wZXJ0aWVzOntkYXRhRm9vdG5vdGVzOiEwLGNsYXNzTmFtZTpbImZvb3Rub3RlcyJdfSxjaGlsZHJlbjpbe3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6bixwcm9wZXJ0aWVzOnsuLi5KcChvKSxpZDoiZm9vdG5vdGUtbGFiZWwifSxjaGlsZHJlbjpbe3R5cGU6InRleHQiLHZhbHVlOnJ9XX0se3R5cGU6InRleHQiLHZhbHVlOmAKYH0se3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6Im9sIixwcm9wZXJ0aWVzOnt9LGNoaWxkcmVuOnMud3JhcChsLCEwKX0se3R5cGU6InRleHQiLHZhbHVlOmAKYH1dfX12YXIgVm1lPWcoKCk9PntxaWUoKTt5ZCgpO2koTnZ0LCJkZWZhdWx0Rm9vdG5vdGVCYWNrQ29udGVudCIpO2koUnZ0LCJkZWZhdWx0Rm9vdG5vdGVCYWNrTGFiZWwiKTtpKE92dCwiZm9vdGVyIil9KTtmdW5jdGlvbiBCdnQocyxlKXtsZXQgdD1lfHxZRmEsYT1uZXcgTWFwLHI9bmV3IE1hcCxuPW5ldyBNYXAsbz17Li4ucW1lLC4uLnQuaGFuZGxlcnN9LGw9e2FsbDpkLGFwcGx5RGF0YTpYRmEsZGVmaW5pdGlvbkJ5SWQ6YSxmb290bm90ZUJ5SWQ6cixmb290bm90ZUNvdW50czpuLGZvb3Rub3RlT3JkZXI6W10saGFuZGxlcnM6byxvbmU6cCxvcHRpb25zOnQscGF0Y2g6WkZhLHdyYXA6SkZhfTtyZXR1cm4gY2socyxmdW5jdGlvbih1KXtpZih1LnR5cGU9PT0iZGVmaW5pdGlvbiJ8fHUudHlwZT09PSJmb290bm90ZURlZmluaXRpb24iKXtsZXQgYz11LnR5cGU9PT0iZGVmaW5pdGlvbiI/YTpyLGI9U3RyaW5nKHUuaWRlbnRpZmllcikudG9VcHBlckNhc2UoKTtjLmhhcyhiKXx8Yy5zZXQoYix1KX19KSxsO2Z1bmN0aW9uIHAodSxjKXtsZXQgYj11LnR5cGUsdj1sLmhhbmRsZXJzW2JdO2lmKFVtZS5jYWxsKGwuaGFuZGxlcnMsYikmJnYpcmV0dXJuIHYobCx1LGMpO2lmKGwub3B0aW9ucy5wYXNzVGhyb3VnaCYmbC5vcHRpb25zLnBhc3NUaHJvdWdoLmluY2x1ZGVzKGIpKXtpZigiY2hpbGRyZW4iaW4gdSl7bGV0e2NoaWxkcmVuOm0sLi4uZn09dSx5PUpwKGYpO3JldHVybiB5LmNoaWxkcmVuPWwuYWxsKHUpLHl9cmV0dXJuIEpwKHUpfXJldHVybihsLm9wdGlvbnMudW5rbm93bkhhbmRsZXJ8fFFGYSkobCx1LGMpfWkocCwib25lIik7ZnVuY3Rpb24gZCh1KXtsZXQgYz1bXTtpZigiY2hpbGRyZW4iaW4gdSl7bGV0IGI9dS5jaGlsZHJlbix2PS0xO2Zvcig7Kyt2PGIubGVuZ3RoOyl7bGV0IHg9bC5vbmUoYlt2XSx1KTtpZih4KXtpZih2JiZiW3YtMV0udHlwZT09PSJicmVhayImJighQXJyYXkuaXNBcnJheSh4KSYmeC50eXBlPT09InRleHQiJiYoeC52YWx1ZT1GdnQoeC52YWx1ZSkpLCFBcnJheS5pc0FycmF5KHgpJiZ4LnR5cGU9PT0iZWxlbWVudCIpKXtsZXQgbT14LmNoaWxkcmVuWzBdO20mJm0udHlwZT09PSJ0ZXh0IiYmKG0udmFsdWU9RnZ0KG0udmFsdWUpKX1BcnJheS5pc0FycmF5KHgpP2MucHVzaCguLi54KTpjLnB1c2goeCl9fX1yZXR1cm4gY31pKGQsImFsbCIpfWZ1bmN0aW9uIFpGYShzLGUpe3MucG9zaXRpb24mJihlLnBvc2l0aW9uPV9rKHMpKX1mdW5jdGlvbiBYRmEocyxlKXtsZXQgdD1lO2lmKHMmJnMuZGF0YSl7bGV0IGE9cy5kYXRhLmhOYW1lLHI9cy5kYXRhLmhDaGlsZHJlbixuPXMuZGF0YS5oUHJvcGVydGllcztpZih0eXBlb2YgYT09InN0cmluZyIpaWYodC50eXBlPT09ImVsZW1lbnQiKXQudGFnTmFtZT1hO2Vsc2V7bGV0IG89ImNoaWxkcmVuImluIHQ/dC5jaGlsZHJlbjpbdF07dD17dHlwZToiZWxlbWVudCIsdGFnTmFtZTphLHByb3BlcnRpZXM6e30sY2hpbGRyZW46b319dC50eXBlPT09ImVsZW1lbnQiJiZuJiZPYmplY3QuYXNzaWduKHQucHJvcGVydGllcyxKcChuKSksImNoaWxkcmVuImluIHQmJnQuY2hpbGRyZW4mJnIhPT1udWxsJiZyIT09dm9pZCAwJiYodC5jaGlsZHJlbj1yKX1yZXR1cm4gdH1mdW5jdGlvbiBRRmEocyxlKXtsZXQgdD1lLmRhdGF8fHt9LGE9InZhbHVlImluIGUmJiEoVW1lLmNhbGwodCwiaFByb3BlcnRpZXMiKXx8VW1lLmNhbGwodCwiaENoaWxkcmVuIikpP3t0eXBlOiJ0ZXh0Iix2YWx1ZTplLnZhbHVlfTp7dHlwZToiZWxlbWVudCIsdGFnTmFtZToiZGl2Iixwcm9wZXJ0aWVzOnt9LGNoaWxkcmVuOnMuYWxsKGUpfTtyZXR1cm4gcy5wYXRjaChlLGEpLHMuYXBwbHlEYXRhKGUsYSl9ZnVuY3Rpb24gSkZhKHMsZSl7bGV0IHQ9W10sYT0tMTtmb3IoZSYmdC5wdXNoKHt0eXBlOiJ0ZXh0Iix2YWx1ZTpgCmB9KTsrK2E8cy5sZW5ndGg7KWEmJnQucHVzaCh7dHlwZToidGV4dCIsdmFsdWU6YApgfSksdC5wdXNoKHNbYV0pO3JldHVybiBlJiZzLmxlbmd0aD4wJiZ0LnB1c2goe3R5cGU6InRleHQiLHZhbHVlOmAKYH0pLHR9ZnVuY3Rpb24gRnZ0KHMpe2xldCBlPTAsdD1zLmNoYXJDb2RlQXQoZSk7Zm9yKDt0PT09OXx8dD09PTMyOyllKyssdD1zLmNoYXJDb2RlQXQoZSk7cmV0dXJuIHMuc2xpY2UoZSl9dmFyIFVtZSxZRmEsSHZ0PWcoKCk9PntxaWUoKTtnZmUoKTtVaWUoKTtqbWUoKTtVbWU9e30uaGFzT3duUHJvcGVydHksWUZhPXt9O2koQnZ0LCJjcmVhdGVTdGF0ZSIpO2koWkZhLCJwYXRjaCIpO2koWEZhLCJhcHBseURhdGEiKTtpKFFGYSwiZGVmYXVsdFVua25vd25IYW5kbGVyIik7aShKRmEsIndyYXAiKTtpKEZ2dCwidHJpbU1hcmtkb3duU3BhY2VTdGFydCIpfSk7ZnVuY3Rpb24gV21lKHMsZSl7bGV0IHQ9QnZ0KHMsZSksYT10Lm9uZShzLHZvaWQgMCkscj1PdnQodCksbj1BcnJheS5pc0FycmF5KGEpP3t0eXBlOiJyb290IixjaGlsZHJlbjphfTphfHx7dHlwZToicm9vdCIsY2hpbGRyZW46W119O3JldHVybiByJiYoImNoaWxkcmVuImluIG4sbi5jaGlsZHJlbi5wdXNoKHt0eXBlOiJ0ZXh0Iix2YWx1ZTpgCmB9LHIpKSxufXZhciBxdnQ9ZygoKT0+e1dwKCk7Vm1lKCk7SHZ0KCk7aShXbWUsInRvSGFzdCIpfSk7dmFyIGp2dD1nKCgpPT57am1lKCk7cXZ0KCk7Vm1lKCl9KTt2YXIgVnZ0LFV2dD1nKCgpPT57VnZ0PVsiYXJlYSIsImJhc2UiLCJiYXNlZm9udCIsImJnc291bmQiLCJiciIsImNvbCIsImNvbW1hbmQiLCJlbWJlZCIsImZyYW1lIiwiaHIiLCJpbWFnZSIsImltZyIsImlucHV0Iiwia2V5Z2VuIiwibGluayIsIm1ldGEiLCJwYXJhbSIsInNvdXJjZSIsInRyYWNrIiwid2JyIl19KTt2YXIgUDAsR21lPWcoKCk9PntQMD1jbGFzc3tzdGF0aWN7aSh0aGlzLCJTY2hlbWEiKX1jb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5ub3JtYWw9dCx0aGlzLnByb3BlcnR5PWUsYSYmKHRoaXMuc3BhY2U9YSl9fTtQMC5wcm90b3R5cGUubm9ybWFsPXt9LFAwLnByb3RvdHlwZS5wcm9wZXJ0eT17fSxQMC5wcm90b3R5cGUuc3BhY2U9dm9pZCAwfSk7ZnVuY3Rpb24gS21lKHMsZSl7bGV0IHQ9e30sYT17fTtmb3IobGV0IHIgb2YgcylPYmplY3QuYXNzaWduKHQsci5wcm9wZXJ0eSksT2JqZWN0LmFzc2lnbihhLHIubm9ybWFsKTtyZXR1cm4gbmV3IFAwKHQsYSxlKX12YXIgV3Z0PWcoKCk9PntHbWUoKTtpKEttZSwibWVyZ2UiKX0pO2Z1bmN0aW9uIG5iKHMpe3JldHVybiBzLnRvTG93ZXJDYXNlKCl9dmFyIFlpZT1nKCgpPT57aShuYiwibm9ybWFsaXplIil9KTt2YXIgdW8sWW1lPWcoKCk9Pnt1bz1jbGFzc3tzdGF0aWN7aSh0aGlzLCJJbmZvIil9Y29uc3RydWN0b3IoZSx0KXt0aGlzLmF0dHJpYnV0ZT10LHRoaXMucHJvcGVydHk9ZX19O3VvLnByb3RvdHlwZS5hdHRyaWJ1dGU9IiIsdW8ucHJvdG90eXBlLmJvb2xlYW5pc2g9ITEsdW8ucHJvdG90eXBlLmJvb2xlYW49ITEsdW8ucHJvdG90eXBlLmNvbW1hT3JTcGFjZVNlcGFyYXRlZD0hMSx1by5wcm90b3R5cGUuY29tbWFTZXBhcmF0ZWQ9ITEsdW8ucHJvdG90eXBlLmRlZmluZWQ9ITEsdW8ucHJvdG90eXBlLm11c3RVc2VQcm9wZXJ0eT0hMSx1by5wcm90b3R5cGUubnVtYmVyPSExLHVvLnByb3RvdHlwZS5vdmVybG9hZGVkQm9vbGVhbj0hMSx1by5wcm90b3R5cGUucHJvcGVydHk9IiIsdW8ucHJvdG90eXBlLnNwYWNlU2VwYXJhdGVkPSExLHVvLnByb3RvdHlwZS5zcGFjZT12b2lkIDB9KTt2YXIgems9e307eXQoemsse2Jvb2xlYW46KCk9PnBhLGJvb2xlYW5pc2g6KCk9PnFpLGNvbW1hT3JTcGFjZVNlcGFyYXRlZDooKT0+U2wsY29tbWFTZXBhcmF0ZWQ6KCk9PnRoLG51bWJlcjooKT0+bnQsb3ZlcmxvYWRlZEJvb2xlYW46KCk9PlppZSxzcGFjZVNlcGFyYXRlZDooKT0+QnN9KTtmdW5jdGlvbiBBMygpe3JldHVybiAyKiorK2VCYX12YXIgZUJhLHBhLHFpLFppZSxudCxCcyx0aCxTbCxDaz1nKCgpPT57ZUJhPTAscGE9QTMoKSxxaT1BMygpLFppZT1BMygpLG50PUEzKCksQnM9QTMoKSx0aD1BMygpLFNsPUEzKCk7aShBMywiaW5jcmVtZW50Iil9KTtmdW5jdGlvbiBHdnQocyxlLHQpe3QmJihzW2VdPXQpfXZhciBabWUsTjMsWG1lPWcoKCk9PntZbWUoKTtDaygpO1ptZT1PYmplY3Qua2V5cyh6ayksTjM9Y2xhc3MgZXh0ZW5kcyB1b3tzdGF0aWN7aSh0aGlzLCJEZWZpbmVkSW5mbyIpfWNvbnN0cnVjdG9yKGUsdCxhLHIpe2xldCBuPS0xO2lmKHN1cGVyKGUsdCksR3Z0KHRoaXMsInNwYWNlIixyKSx0eXBlb2YgYT09Im51bWJlciIpZm9yKDsrK248Wm1lLmxlbmd0aDspe2xldCBvPVptZVtuXTtHdnQodGhpcyxabWVbbl0sKGEmemtbb10pPT09emtbb10pfX19O04zLnByb3RvdHlwZS5kZWZpbmVkPSEwO2koR3Z0LCJtYXJrIil9KTtmdW5jdGlvbiBFYyhzKXtsZXQgZT17fSx0PXt9O2ZvcihsZXRbYSxyXW9mIE9iamVjdC5lbnRyaWVzKHMucHJvcGVydGllcykpe2xldCBuPW5ldyBOMyhhLHMudHJhbnNmb3JtKHMuYXR0cmlidXRlc3x8e30sYSkscixzLnNwYWNlKTtzLm11c3RVc2VQcm9wZXJ0eSYmcy5tdXN0VXNlUHJvcGVydHkuaW5jbHVkZXMoYSkmJihuLm11c3RVc2VQcm9wZXJ0eT0hMCksZVthXT1uLHRbbmIoYSldPWEsdFtuYihuLmF0dHJpYnV0ZSldPWF9cmV0dXJuIG5ldyBQMChlLHQscy5zcGFjZSl9dmFyIFIzPWcoKCk9PntZaWUoKTtYbWUoKTtHbWUoKTtpKEVjLCJjcmVhdGUiKX0pO3ZhciBRbWUsS3Z0PWcoKCk9PntSMygpO0NrKCk7UW1lPUVjKHtwcm9wZXJ0aWVzOnthcmlhQWN0aXZlRGVzY2VuZGFudDpudWxsLGFyaWFBdG9taWM6cWksYXJpYUF1dG9Db21wbGV0ZTpudWxsLGFyaWFCdXN5OnFpLGFyaWFDaGVja2VkOnFpLGFyaWFDb2xDb3VudDpudCxhcmlhQ29sSW5kZXg6bnQsYXJpYUNvbFNwYW46bnQsYXJpYUNvbnRyb2xzOkJzLGFyaWFDdXJyZW50Om51bGwsYXJpYURlc2NyaWJlZEJ5OkJzLGFyaWFEZXRhaWxzOm51bGwsYXJpYURpc2FibGVkOnFpLGFyaWFEcm9wRWZmZWN0OkJzLGFyaWFFcnJvck1lc3NhZ2U6bnVsbCxhcmlhRXhwYW5kZWQ6cWksYXJpYUZsb3dUbzpCcyxhcmlhR3JhYmJlZDpxaSxhcmlhSGFzUG9wdXA6bnVsbCxhcmlhSGlkZGVuOnFpLGFyaWFJbnZhbGlkOm51bGwsYXJpYUtleVNob3J0Y3V0czpudWxsLGFyaWFMYWJlbDpudWxsLGFyaWFMYWJlbGxlZEJ5OkJzLGFyaWFMZXZlbDpudCxhcmlhTGl2ZTpudWxsLGFyaWFNb2RhbDpxaSxhcmlhTXVsdGlMaW5lOnFpLGFyaWFNdWx0aVNlbGVjdGFibGU6cWksYXJpYU9yaWVudGF0aW9uOm51bGwsYXJpYU93bnM6QnMsYXJpYVBsYWNlaG9sZGVyOm51bGwsYXJpYVBvc0luU2V0Om50LGFyaWFQcmVzc2VkOnFpLGFyaWFSZWFkT25seTpxaSxhcmlhUmVsZXZhbnQ6bnVsbCxhcmlhUmVxdWlyZWQ6cWksYXJpYVJvbGVEZXNjcmlwdGlvbjpCcyxhcmlhUm93Q291bnQ6bnQsYXJpYVJvd0luZGV4Om50LGFyaWFSb3dTcGFuOm50LGFyaWFTZWxlY3RlZDpxaSxhcmlhU2V0U2l6ZTpudCxhcmlhU29ydDpudWxsLGFyaWFWYWx1ZU1heDpudCxhcmlhVmFsdWVNaW46bnQsYXJpYVZhbHVlTm93Om50LGFyaWFWYWx1ZVRleHQ6bnVsbCxyb2xlOm51bGx9LHRyYW5zZm9ybShzLGUpe3JldHVybiBlPT09InJvbGUiP2U6ImFyaWEtIitlLnNsaWNlKDQpLnRvTG93ZXJDYXNlKCl9fSl9KTtmdW5jdGlvbiBYaWUocyxlKXtyZXR1cm4gZSBpbiBzP3NbZV06ZX12YXIgSm1lPWcoKCk9PntpKFhpZSwiY2FzZVNlbnNpdGl2ZVRyYW5zZm9ybSIpfSk7ZnVuY3Rpb24gUWllKHMsZSl7cmV0dXJuIFhpZShzLGUudG9Mb3dlckNhc2UoKSl9dmFyIGU2ZT1nKCgpPT57Sm1lKCk7aShRaWUsImNhc2VJbnNlbnNpdGl2ZVRyYW5zZm9ybSIpfSk7dmFyIFl2dCxadnQ9ZygoKT0+e2U2ZSgpO1IzKCk7Q2soKTtZdnQ9RWMoe2F0dHJpYnV0ZXM6e2FjY2VwdGNoYXJzZXQ6ImFjY2VwdC1jaGFyc2V0IixjbGFzc25hbWU6ImNsYXNzIixodG1sZm9yOiJmb3IiLGh0dHBlcXVpdjoiaHR0cC1lcXVpdiJ9LG11c3RVc2VQcm9wZXJ0eTpbImNoZWNrZWQiLCJtdWx0aXBsZSIsIm11dGVkIiwic2VsZWN0ZWQiXSxwcm9wZXJ0aWVzOnthYmJyOm51bGwsYWNjZXB0OnRoLGFjY2VwdENoYXJzZXQ6QnMsYWNjZXNzS2V5OkJzLGFjdGlvbjpudWxsLGFsbG93Om51bGwsYWxsb3dGdWxsU2NyZWVuOnBhLGFsbG93UGF5bWVudFJlcXVlc3Q6cGEsYWxsb3dVc2VyTWVkaWE6cGEsYWx0Om51bGwsYXM6bnVsbCxhc3luYzpwYSxhdXRvQ2FwaXRhbGl6ZTpudWxsLGF1dG9Db21wbGV0ZTpCcyxhdXRvRm9jdXM6cGEsYXV0b1BsYXk6cGEsYmxvY2tpbmc6QnMsY2FwdHVyZTpudWxsLGNoYXJTZXQ6bnVsbCxjaGVja2VkOnBhLGNpdGU6bnVsbCxjbGFzc05hbWU6QnMsY29sczpudCxjb2xTcGFuOm51bGwsY29udGVudDpudWxsLGNvbnRlbnRFZGl0YWJsZTpxaSxjb250cm9sczpwYSxjb250cm9sc0xpc3Q6QnMsY29vcmRzOm50fHRoLGNyb3NzT3JpZ2luOm51bGwsZGF0YTpudWxsLGRhdGVUaW1lOm51bGwsZGVjb2Rpbmc6bnVsbCxkZWZhdWx0OnBhLGRlZmVyOnBhLGRpcjpudWxsLGRpck5hbWU6bnVsbCxkaXNhYmxlZDpwYSxkb3dubG9hZDpaaWUsZHJhZ2dhYmxlOnFpLGVuY1R5cGU6bnVsbCxlbnRlcktleUhpbnQ6bnVsbCxmZXRjaFByaW9yaXR5Om51bGwsZm9ybTpudWxsLGZvcm1BY3Rpb246bnVsbCxmb3JtRW5jVHlwZTpudWxsLGZvcm1NZXRob2Q6bnVsbCxmb3JtTm9WYWxpZGF0ZTpwYSxmb3JtVGFyZ2V0Om51bGwsaGVhZGVyczpCcyxoZWlnaHQ6bnQsaGlkZGVuOlppZSxoaWdoOm50LGhyZWY6bnVsbCxocmVmTGFuZzpudWxsLGh0bWxGb3I6QnMsaHR0cEVxdWl2OkJzLGlkOm51bGwsaW1hZ2VTaXplczpudWxsLGltYWdlU3JjU2V0Om51bGwsaW5lcnQ6cGEsaW5wdXRNb2RlOm51bGwsaW50ZWdyaXR5Om51bGwsaXM6bnVsbCxpc01hcDpwYSxpdGVtSWQ6bnVsbCxpdGVtUHJvcDpCcyxpdGVtUmVmOkJzLGl0ZW1TY29wZTpwYSxpdGVtVHlwZTpCcyxraW5kOm51bGwsbGFiZWw6bnVsbCxsYW5nOm51bGwsbGFuZ3VhZ2U6bnVsbCxsaXN0Om51bGwsbG9hZGluZzpudWxsLGxvb3A6cGEsbG93Om50LG1hbmlmZXN0Om51bGwsbWF4Om51bGwsbWF4TGVuZ3RoOm50LG1lZGlhOm51bGwsbWV0aG9kOm51bGwsbWluOm51bGwsbWluTGVuZ3RoOm50LG11bHRpcGxlOnBhLG11dGVkOnBhLG5hbWU6bnVsbCxub25jZTpudWxsLG5vTW9kdWxlOnBhLG5vVmFsaWRhdGU6cGEsb25BYm9ydDpudWxsLG9uQWZ0ZXJQcmludDpudWxsLG9uQXV4Q2xpY2s6bnVsbCxvbkJlZm9yZU1hdGNoOm51bGwsb25CZWZvcmVQcmludDpudWxsLG9uQmVmb3JlVG9nZ2xlOm51bGwsb25CZWZvcmVVbmxvYWQ6bnVsbCxvbkJsdXI6bnVsbCxvbkNhbmNlbDpudWxsLG9uQ2FuUGxheTpudWxsLG9uQ2FuUGxheVRocm91Z2g6bnVsbCxvbkNoYW5nZTpudWxsLG9uQ2xpY2s6bnVsbCxvbkNsb3NlOm51bGwsb25Db250ZXh0TG9zdDpudWxsLG9uQ29udGV4dE1lbnU6bnVsbCxvbkNvbnRleHRSZXN0b3JlZDpudWxsLG9uQ29weTpudWxsLG9uQ3VlQ2hhbmdlOm51bGwsb25DdXQ6bnVsbCxvbkRibENsaWNrOm51bGwsb25EcmFnOm51bGwsb25EcmFnRW5kOm51bGwsb25EcmFnRW50ZXI6bnVsbCxvbkRyYWdFeGl0Om51bGwsb25EcmFnTGVhdmU6bnVsbCxvbkRyYWdPdmVyOm51bGwsb25EcmFnU3RhcnQ6bnVsbCxvbkRyb3A6bnVsbCxvbkR1cmF0aW9uQ2hhbmdlOm51bGwsb25FbXB0aWVkOm51bGwsb25FbmRlZDpudWxsLG9uRXJyb3I6bnVsbCxvbkZvY3VzOm51bGwsb25Gb3JtRGF0YTpudWxsLG9uSGFzaENoYW5nZTpudWxsLG9uSW5wdXQ6bnVsbCxvbkludmFsaWQ6bnVsbCxvbktleURvd246bnVsbCxvbktleVByZXNzOm51bGwsb25LZXlVcDpudWxsLG9uTGFuZ3VhZ2VDaGFuZ2U6bnVsbCxvbkxvYWQ6bnVsbCxvbkxvYWRlZERhdGE6bnVsbCxvbkxvYWRlZE1ldGFkYXRhOm51bGwsb25Mb2FkRW5kOm51bGwsb25Mb2FkU3RhcnQ6bnVsbCxvbk1lc3NhZ2U6bnVsbCxvbk1lc3NhZ2VFcnJvcjpudWxsLG9uTW91c2VEb3duOm51bGwsb25Nb3VzZUVudGVyOm51bGwsb25Nb3VzZUxlYXZlOm51bGwsb25Nb3VzZU1vdmU6bnVsbCxvbk1vdXNlT3V0Om51bGwsb25Nb3VzZU92ZXI6bnVsbCxvbk1vdXNlVXA6bnVsbCxvbk9mZmxpbmU6bnVsbCxvbk9ubGluZTpudWxsLG9uUGFnZUhpZGU6bnVsbCxvblBhZ2VTaG93Om51bGwsb25QYXN0ZTpudWxsLG9uUGF1c2U6bnVsbCxvblBsYXk6bnVsbCxvblBsYXlpbmc6bnVsbCxvblBvcFN0YXRlOm51bGwsb25Qcm9ncmVzczpudWxsLG9uUmF0ZUNoYW5nZTpudWxsLG9uUmVqZWN0aW9uSGFuZGxlZDpudWxsLG9uUmVzZXQ6bnVsbCxvblJlc2l6ZTpudWxsLG9uU2Nyb2xsOm51bGwsb25TY3JvbGxFbmQ6bnVsbCxvblNlY3VyaXR5UG9saWN5VmlvbGF0aW9uOm51bGwsb25TZWVrZWQ6bnVsbCxvblNlZWtpbmc6bnVsbCxvblNlbGVjdDpudWxsLG9uU2xvdENoYW5nZTpudWxsLG9uU3RhbGxlZDpudWxsLG9uU3RvcmFnZTpudWxsLG9uU3VibWl0Om51bGwsb25TdXNwZW5kOm51bGwsb25UaW1lVXBkYXRlOm51bGwsb25Ub2dnbGU6bnVsbCxvblVuaGFuZGxlZFJlamVjdGlvbjpudWxsLG9uVW5sb2FkOm51bGwsb25Wb2x1bWVDaGFuZ2U6bnVsbCxvbldhaXRpbmc6bnVsbCxvbldoZWVsOm51bGwsb3BlbjpwYSxvcHRpbXVtOm50LHBhdHRlcm46bnVsbCxwaW5nOkJzLHBsYWNlaG9sZGVyOm51bGwscGxheXNJbmxpbmU6cGEscG9wb3ZlcjpudWxsLHBvcG92ZXJUYXJnZXQ6bnVsbCxwb3BvdmVyVGFyZ2V0QWN0aW9uOm51bGwscG9zdGVyOm51bGwscHJlbG9hZDpudWxsLHJlYWRPbmx5OnBhLHJlZmVycmVyUG9saWN5Om51bGwscmVsOkJzLHJlcXVpcmVkOnBhLHJldmVyc2VkOnBhLHJvd3M6bnQscm93U3BhbjpudCxzYW5kYm94OkJzLHNjb3BlOm51bGwsc2NvcGVkOnBhLHNlYW1sZXNzOnBhLHNlbGVjdGVkOnBhLHNoYWRvd1Jvb3RDbG9uYWJsZTpwYSxzaGFkb3dSb290RGVsZWdhdGVzRm9jdXM6cGEsc2hhZG93Um9vdE1vZGU6bnVsbCxzaGFwZTpudWxsLHNpemU6bnQsc2l6ZXM6bnVsbCxzbG90Om51bGwsc3BhbjpudCxzcGVsbENoZWNrOnFpLHNyYzpudWxsLHNyY0RvYzpudWxsLHNyY0xhbmc6bnVsbCxzcmNTZXQ6bnVsbCxzdGFydDpudCxzdGVwOm51bGwsc3R5bGU6bnVsbCx0YWJJbmRleDpudCx0YXJnZXQ6bnVsbCx0aXRsZTpudWxsLHRyYW5zbGF0ZTpudWxsLHR5cGU6bnVsbCx0eXBlTXVzdE1hdGNoOnBhLHVzZU1hcDpudWxsLHZhbHVlOnFpLHdpZHRoOm50LHdyYXA6bnVsbCx3cml0aW5nU3VnZ2VzdGlvbnM6bnVsbCxhbGlnbjpudWxsLGFMaW5rOm51bGwsYXJjaGl2ZTpCcyxheGlzOm51bGwsYmFja2dyb3VuZDpudWxsLGJnQ29sb3I6bnVsbCxib3JkZXI6bnQsYm9yZGVyQ29sb3I6bnVsbCxib3R0b21NYXJnaW46bnQsY2VsbFBhZGRpbmc6bnVsbCxjZWxsU3BhY2luZzpudWxsLGNoYXI6bnVsbCxjaGFyT2ZmOm51bGwsY2xhc3NJZDpudWxsLGNsZWFyOm51bGwsY29kZTpudWxsLGNvZGVCYXNlOm51bGwsY29kZVR5cGU6bnVsbCxjb2xvcjpudWxsLGNvbXBhY3Q6cGEsZGVjbGFyZTpwYSxldmVudDpudWxsLGZhY2U6bnVsbCxmcmFtZTpudWxsLGZyYW1lQm9yZGVyOm51bGwsaFNwYWNlOm50LGxlZnRNYXJnaW46bnQsbGluazpudWxsLGxvbmdEZXNjOm51bGwsbG93U3JjOm51bGwsbWFyZ2luSGVpZ2h0Om50LG1hcmdpbldpZHRoOm50LG5vUmVzaXplOnBhLG5vSHJlZjpwYSxub1NoYWRlOnBhLG5vV3JhcDpwYSxvYmplY3Q6bnVsbCxwcm9maWxlOm51bGwscHJvbXB0Om51bGwscmV2Om51bGwscmlnaHRNYXJnaW46bnQscnVsZXM6bnVsbCxzY2hlbWU6bnVsbCxzY3JvbGxpbmc6cWksc3RhbmRieTpudWxsLHN1bW1hcnk6bnVsbCx0ZXh0Om51bGwsdG9wTWFyZ2luOm50LHZhbHVlVHlwZTpudWxsLHZlcnNpb246bnVsbCx2QWxpZ246bnVsbCx2TGluazpudWxsLHZTcGFjZTpudCxhbGxvd1RyYW5zcGFyZW5jeTpudWxsLGF1dG9Db3JyZWN0Om51bGwsYXV0b1NhdmU6bnVsbCxkaXNhYmxlUGljdHVyZUluUGljdHVyZTpwYSxkaXNhYmxlUmVtb3RlUGxheWJhY2s6cGEscHJlZml4Om51bGwscHJvcGVydHk6bnVsbCxyZXN1bHRzOm50LHNlY3VyaXR5Om51bGwsdW5zZWxlY3RhYmxlOm51bGx9LHNwYWNlOiJodG1sIix0cmFuc2Zvcm06UWllfSl9KTt2YXIgWHZ0LFF2dD1nKCgpPT57Sm1lKCk7UjMoKTtDaygpO1h2dD1FYyh7YXR0cmlidXRlczp7YWNjZW50SGVpZ2h0OiJhY2NlbnQtaGVpZ2h0IixhbGlnbm1lbnRCYXNlbGluZToiYWxpZ25tZW50LWJhc2VsaW5lIixhcmFiaWNGb3JtOiJhcmFiaWMtZm9ybSIsYmFzZWxpbmVTaGlmdDoiYmFzZWxpbmUtc2hpZnQiLGNhcEhlaWdodDoiY2FwLWhlaWdodCIsY2xhc3NOYW1lOiJjbGFzcyIsY2xpcFBhdGg6ImNsaXAtcGF0aCIsY2xpcFJ1bGU6ImNsaXAtcnVsZSIsY29sb3JJbnRlcnBvbGF0aW9uOiJjb2xvci1pbnRlcnBvbGF0aW9uIixjb2xvckludGVycG9sYXRpb25GaWx0ZXJzOiJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMiLGNvbG9yUHJvZmlsZToiY29sb3ItcHJvZmlsZSIsY29sb3JSZW5kZXJpbmc6ImNvbG9yLXJlbmRlcmluZyIsY3Jvc3NPcmlnaW46ImNyb3Nzb3JpZ2luIixkYXRhVHlwZToiZGF0YXR5cGUiLGRvbWluYW50QmFzZWxpbmU6ImRvbWluYW50LWJhc2VsaW5lIixlbmFibGVCYWNrZ3JvdW5kOiJlbmFibGUtYmFja2dyb3VuZCIsZmlsbE9wYWNpdHk6ImZpbGwtb3BhY2l0eSIsZmlsbFJ1bGU6ImZpbGwtcnVsZSIsZmxvb2RDb2xvcjoiZmxvb2QtY29sb3IiLGZsb29kT3BhY2l0eToiZmxvb2Qtb3BhY2l0eSIsZm9udEZhbWlseToiZm9udC1mYW1pbHkiLGZvbnRTaXplOiJmb250LXNpemUiLGZvbnRTaXplQWRqdXN0OiJmb250LXNpemUtYWRqdXN0Iixmb250U3RyZXRjaDoiZm9udC1zdHJldGNoIixmb250U3R5bGU6ImZvbnQtc3R5bGUiLGZvbnRWYXJpYW50OiJmb250LXZhcmlhbnQiLGZvbnRXZWlnaHQ6ImZvbnQtd2VpZ2h0IixnbHlwaE5hbWU6ImdseXBoLW5hbWUiLGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsOiJnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIixnbHlwaE9yaWVudGF0aW9uVmVydGljYWw6ImdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsIixocmVmTGFuZzoiaHJlZmxhbmciLGhvcml6QWR2WDoiaG9yaXotYWR2LXgiLGhvcml6T3JpZ2luWDoiaG9yaXotb3JpZ2luLXgiLGhvcml6T3JpZ2luWToiaG9yaXotb3JpZ2luLXkiLGltYWdlUmVuZGVyaW5nOiJpbWFnZS1yZW5kZXJpbmciLGxldHRlclNwYWNpbmc6ImxldHRlci1zcGFjaW5nIixsaWdodGluZ0NvbG9yOiJsaWdodGluZy1jb2xvciIsbWFya2VyRW5kOiJtYXJrZXItZW5kIixtYXJrZXJNaWQ6Im1hcmtlci1taWQiLG1hcmtlclN0YXJ0OiJtYXJrZXItc3RhcnQiLG5hdkRvd246Im5hdi1kb3duIixuYXZEb3duTGVmdDoibmF2LWRvd24tbGVmdCIsbmF2RG93blJpZ2h0OiJuYXYtZG93bi1yaWdodCIsbmF2TGVmdDoibmF2LWxlZnQiLG5hdk5leHQ6Im5hdi1uZXh0IixuYXZQcmV2OiJuYXYtcHJldiIsbmF2UmlnaHQ6Im5hdi1yaWdodCIsbmF2VXA6Im5hdi11cCIsbmF2VXBMZWZ0OiJuYXYtdXAtbGVmdCIsbmF2VXBSaWdodDoibmF2LXVwLXJpZ2h0IixvbkFib3J0OiJvbmFib3J0IixvbkFjdGl2YXRlOiJvbmFjdGl2YXRlIixvbkFmdGVyUHJpbnQ6Im9uYWZ0ZXJwcmludCIsb25CZWZvcmVQcmludDoib25iZWZvcmVwcmludCIsb25CZWdpbjoib25iZWdpbiIsb25DYW5jZWw6Im9uY2FuY2VsIixvbkNhblBsYXk6Im9uY2FucGxheSIsb25DYW5QbGF5VGhyb3VnaDoib25jYW5wbGF5dGhyb3VnaCIsb25DaGFuZ2U6Im9uY2hhbmdlIixvbkNsaWNrOiJvbmNsaWNrIixvbkNsb3NlOiJvbmNsb3NlIixvbkNvcHk6Im9uY29weSIsb25DdWVDaGFuZ2U6Im9uY3VlY2hhbmdlIixvbkN1dDoib25jdXQiLG9uRGJsQ2xpY2s6Im9uZGJsY2xpY2siLG9uRHJhZzoib25kcmFnIixvbkRyYWdFbmQ6Im9uZHJhZ2VuZCIsb25EcmFnRW50ZXI6Im9uZHJhZ2VudGVyIixvbkRyYWdFeGl0OiJvbmRyYWdleGl0IixvbkRyYWdMZWF2ZToib25kcmFnbGVhdmUiLG9uRHJhZ092ZXI6Im9uZHJhZ292ZXIiLG9uRHJhZ1N0YXJ0OiJvbmRyYWdzdGFydCIsb25Ecm9wOiJvbmRyb3AiLG9uRHVyYXRpb25DaGFuZ2U6Im9uZHVyYXRpb25jaGFuZ2UiLG9uRW1wdGllZDoib25lbXB0aWVkIixvbkVuZDoib25lbmQiLG9uRW5kZWQ6Im9uZW5kZWQiLG9uRXJyb3I6Im9uZXJyb3IiLG9uRm9jdXM6Im9uZm9jdXMiLG9uRm9jdXNJbjoib25mb2N1c2luIixvbkZvY3VzT3V0OiJvbmZvY3Vzb3V0Iixvbkhhc2hDaGFuZ2U6Im9uaGFzaGNoYW5nZSIsb25JbnB1dDoib25pbnB1dCIsb25JbnZhbGlkOiJvbmludmFsaWQiLG9uS2V5RG93bjoib25rZXlkb3duIixvbktleVByZXNzOiJvbmtleXByZXNzIixvbktleVVwOiJvbmtleXVwIixvbkxvYWQ6Im9ubG9hZCIsb25Mb2FkZWREYXRhOiJvbmxvYWRlZGRhdGEiLG9uTG9hZGVkTWV0YWRhdGE6Im9ubG9hZGVkbWV0YWRhdGEiLG9uTG9hZFN0YXJ0OiJvbmxvYWRzdGFydCIsb25NZXNzYWdlOiJvbm1lc3NhZ2UiLG9uTW91c2VEb3duOiJvbm1vdXNlZG93biIsb25Nb3VzZUVudGVyOiJvbm1vdXNlZW50ZXIiLG9uTW91c2VMZWF2ZToib25tb3VzZWxlYXZlIixvbk1vdXNlTW92ZToib25tb3VzZW1vdmUiLG9uTW91c2VPdXQ6Im9ubW91c2VvdXQiLG9uTW91c2VPdmVyOiJvbm1vdXNlb3ZlciIsb25Nb3VzZVVwOiJvbm1vdXNldXAiLG9uTW91c2VXaGVlbDoib25tb3VzZXdoZWVsIixvbk9mZmxpbmU6Im9ub2ZmbGluZSIsb25PbmxpbmU6Im9ub25saW5lIixvblBhZ2VIaWRlOiJvbnBhZ2VoaWRlIixvblBhZ2VTaG93OiJvbnBhZ2VzaG93IixvblBhc3RlOiJvbnBhc3RlIixvblBhdXNlOiJvbnBhdXNlIixvblBsYXk6Im9ucGxheSIsb25QbGF5aW5nOiJvbnBsYXlpbmciLG9uUG9wU3RhdGU6Im9ucG9wc3RhdGUiLG9uUHJvZ3Jlc3M6Im9ucHJvZ3Jlc3MiLG9uUmF0ZUNoYW5nZToib25yYXRlY2hhbmdlIixvblJlcGVhdDoib25yZXBlYXQiLG9uUmVzZXQ6Im9ucmVzZXQiLG9uUmVzaXplOiJvbnJlc2l6ZSIsb25TY3JvbGw6Im9uc2Nyb2xsIixvblNlZWtlZDoib25zZWVrZWQiLG9uU2Vla2luZzoib25zZWVraW5nIixvblNlbGVjdDoib25zZWxlY3QiLG9uU2hvdzoib25zaG93IixvblN0YWxsZWQ6Im9uc3RhbGxlZCIsb25TdG9yYWdlOiJvbnN0b3JhZ2UiLG9uU3VibWl0OiJvbnN1Ym1pdCIsb25TdXNwZW5kOiJvbnN1c3BlbmQiLG9uVGltZVVwZGF0ZToib250aW1ldXBkYXRlIixvblRvZ2dsZToib250b2dnbGUiLG9uVW5sb2FkOiJvbnVubG9hZCIsb25Wb2x1bWVDaGFuZ2U6Im9udm9sdW1lY2hhbmdlIixvbldhaXRpbmc6Im9ud2FpdGluZyIsb25ab29tOiJvbnpvb20iLG92ZXJsaW5lUG9zaXRpb246Im92ZXJsaW5lLXBvc2l0aW9uIixvdmVybGluZVRoaWNrbmVzczoib3ZlcmxpbmUtdGhpY2tuZXNzIixwYWludE9yZGVyOiJwYWludC1vcmRlciIscGFub3NlMToicGFub3NlLTEiLHBvaW50ZXJFdmVudHM6InBvaW50ZXItZXZlbnRzIixyZWZlcnJlclBvbGljeToicmVmZXJyZXJwb2xpY3kiLHJlbmRlcmluZ0ludGVudDoicmVuZGVyaW5nLWludGVudCIsc2hhcGVSZW5kZXJpbmc6InNoYXBlLXJlbmRlcmluZyIsc3RvcENvbG9yOiJzdG9wLWNvbG9yIixzdG9wT3BhY2l0eToic3RvcC1vcGFjaXR5IixzdHJpa2V0aHJvdWdoUG9zaXRpb246InN0cmlrZXRocm91Z2gtcG9zaXRpb24iLHN0cmlrZXRocm91Z2hUaGlja25lc3M6InN0cmlrZXRocm91Z2gtdGhpY2tuZXNzIixzdHJva2VEYXNoQXJyYXk6InN0cm9rZS1kYXNoYXJyYXkiLHN0cm9rZURhc2hPZmZzZXQ6InN0cm9rZS1kYXNob2Zmc2V0IixzdHJva2VMaW5lQ2FwOiJzdHJva2UtbGluZWNhcCIsc3Ryb2tlTGluZUpvaW46InN0cm9rZS1saW5lam9pbiIsc3Ryb2tlTWl0ZXJMaW1pdDoic3Ryb2tlLW1pdGVybGltaXQiLHN0cm9rZU9wYWNpdHk6InN0cm9rZS1vcGFjaXR5IixzdHJva2VXaWR0aDoic3Ryb2tlLXdpZHRoIix0YWJJbmRleDoidGFiaW5kZXgiLHRleHRBbmNob3I6InRleHQtYW5jaG9yIix0ZXh0RGVjb3JhdGlvbjoidGV4dC1kZWNvcmF0aW9uIix0ZXh0UmVuZGVyaW5nOiJ0ZXh0LXJlbmRlcmluZyIsdHJhbnNmb3JtT3JpZ2luOiJ0cmFuc2Zvcm0tb3JpZ2luIix0eXBlT2Y6InR5cGVvZiIsdW5kZXJsaW5lUG9zaXRpb246InVuZGVybGluZS1wb3NpdGlvbiIsdW5kZXJsaW5lVGhpY2tuZXNzOiJ1bmRlcmxpbmUtdGhpY2tuZXNzIix1bmljb2RlQmlkaToidW5pY29kZS1iaWRpIix1bmljb2RlUmFuZ2U6InVuaWNvZGUtcmFuZ2UiLHVuaXRzUGVyRW06InVuaXRzLXBlci1lbSIsdkFscGhhYmV0aWM6InYtYWxwaGFiZXRpYyIsdkhhbmdpbmc6InYtaGFuZ2luZyIsdklkZW9ncmFwaGljOiJ2LWlkZW9ncmFwaGljIix2TWF0aGVtYXRpY2FsOiJ2LW1hdGhlbWF0aWNhbCIsdmVjdG9yRWZmZWN0OiJ2ZWN0b3ItZWZmZWN0Iix2ZXJ0QWR2WToidmVydC1hZHYteSIsdmVydE9yaWdpblg6InZlcnQtb3JpZ2luLXgiLHZlcnRPcmlnaW5ZOiJ2ZXJ0LW9yaWdpbi15Iix3b3JkU3BhY2luZzoid29yZC1zcGFjaW5nIix3cml0aW5nTW9kZToid3JpdGluZy1tb2RlIix4SGVpZ2h0OiJ4LWhlaWdodCIscGxheWJhY2tPcmRlcjoicGxheWJhY2tvcmRlciIsdGltZWxpbmVCZWdpbjoidGltZWxpbmViZWdpbiJ9LHByb3BlcnRpZXM6e2Fib3V0OlNsLGFjY2VudEhlaWdodDpudCxhY2N1bXVsYXRlOm51bGwsYWRkaXRpdmU6bnVsbCxhbGlnbm1lbnRCYXNlbGluZTpudWxsLGFscGhhYmV0aWM6bnQsYW1wbGl0dWRlOm50LGFyYWJpY0Zvcm06bnVsbCxhc2NlbnQ6bnQsYXR0cmlidXRlTmFtZTpudWxsLGF0dHJpYnV0ZVR5cGU6bnVsbCxhemltdXRoOm50LGJhbmR3aWR0aDpudWxsLGJhc2VsaW5lU2hpZnQ6bnVsbCxiYXNlRnJlcXVlbmN5Om51bGwsYmFzZVByb2ZpbGU6bnVsbCxiYm94Om51bGwsYmVnaW46bnVsbCxiaWFzOm50LGJ5Om51bGwsY2FsY01vZGU6bnVsbCxjYXBIZWlnaHQ6bnQsY2xhc3NOYW1lOkJzLGNsaXA6bnVsbCxjbGlwUGF0aDpudWxsLGNsaXBQYXRoVW5pdHM6bnVsbCxjbGlwUnVsZTpudWxsLGNvbG9yOm51bGwsY29sb3JJbnRlcnBvbGF0aW9uOm51bGwsY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczpudWxsLGNvbG9yUHJvZmlsZTpudWxsLGNvbG9yUmVuZGVyaW5nOm51bGwsY29udGVudDpudWxsLGNvbnRlbnRTY3JpcHRUeXBlOm51bGwsY29udGVudFN0eWxlVHlwZTpudWxsLGNyb3NzT3JpZ2luOm51bGwsY3Vyc29yOm51bGwsY3g6bnVsbCxjeTpudWxsLGQ6bnVsbCxkYXRhVHlwZTpudWxsLGRlZmF1bHRBY3Rpb246bnVsbCxkZXNjZW50Om50LGRpZmZ1c2VDb25zdGFudDpudCxkaXJlY3Rpb246bnVsbCxkaXNwbGF5Om51bGwsZHVyOm51bGwsZGl2aXNvcjpudCxkb21pbmFudEJhc2VsaW5lOm51bGwsZG93bmxvYWQ6cGEsZHg6bnVsbCxkeTpudWxsLGVkZ2VNb2RlOm51bGwsZWRpdGFibGU6bnVsbCxlbGV2YXRpb246bnQsZW5hYmxlQmFja2dyb3VuZDpudWxsLGVuZDpudWxsLGV2ZW50Om51bGwsZXhwb25lbnQ6bnQsZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDpudWxsLGZpbGw6bnVsbCxmaWxsT3BhY2l0eTpudCxmaWxsUnVsZTpudWxsLGZpbHRlcjpudWxsLGZpbHRlclJlczpudWxsLGZpbHRlclVuaXRzOm51bGwsZmxvb2RDb2xvcjpudWxsLGZsb29kT3BhY2l0eTpudWxsLGZvY3VzYWJsZTpudWxsLGZvY3VzSGlnaGxpZ2h0Om51bGwsZm9udEZhbWlseTpudWxsLGZvbnRTaXplOm51bGwsZm9udFNpemVBZGp1c3Q6bnVsbCxmb250U3RyZXRjaDpudWxsLGZvbnRTdHlsZTpudWxsLGZvbnRWYXJpYW50Om51bGwsZm9udFdlaWdodDpudWxsLGZvcm1hdDpudWxsLGZyOm51bGwsZnJvbTpudWxsLGZ4Om51bGwsZnk6bnVsbCxnMTp0aCxnMjp0aCxnbHlwaE5hbWU6dGgsZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWw6bnVsbCxnbHlwaE9yaWVudGF0aW9uVmVydGljYWw6bnVsbCxnbHlwaFJlZjpudWxsLGdyYWRpZW50VHJhbnNmb3JtOm51bGwsZ3JhZGllbnRVbml0czpudWxsLGhhbmRsZXI6bnVsbCxoYW5naW5nOm50LGhhdGNoQ29udGVudFVuaXRzOm51bGwsaGF0Y2hVbml0czpudWxsLGhlaWdodDpudWxsLGhyZWY6bnVsbCxocmVmTGFuZzpudWxsLGhvcml6QWR2WDpudCxob3Jpek9yaWdpblg6bnQsaG9yaXpPcmlnaW5ZOm50LGlkOm51bGwsaWRlb2dyYXBoaWM6bnQsaW1hZ2VSZW5kZXJpbmc6bnVsbCxpbml0aWFsVmlzaWJpbGl0eTpudWxsLGluOm51bGwsaW4yOm51bGwsaW50ZXJjZXB0Om50LGs6bnQsazE6bnQsazI6bnQsazM6bnQsazQ6bnQsa2VybmVsTWF0cml4OlNsLGtlcm5lbFVuaXRMZW5ndGg6bnVsbCxrZXlQb2ludHM6bnVsbCxrZXlTcGxpbmVzOm51bGwsa2V5VGltZXM6bnVsbCxrZXJuaW5nOm51bGwsbGFuZzpudWxsLGxlbmd0aEFkanVzdDpudWxsLGxldHRlclNwYWNpbmc6bnVsbCxsaWdodGluZ0NvbG9yOm51bGwsbGltaXRpbmdDb25lQW5nbGU6bnQsbG9jYWw6bnVsbCxtYXJrZXJFbmQ6bnVsbCxtYXJrZXJNaWQ6bnVsbCxtYXJrZXJTdGFydDpudWxsLG1hcmtlckhlaWdodDpudWxsLG1hcmtlclVuaXRzOm51bGwsbWFya2VyV2lkdGg6bnVsbCxtYXNrOm51bGwsbWFza0NvbnRlbnRVbml0czpudWxsLG1hc2tVbml0czpudWxsLG1hdGhlbWF0aWNhbDpudWxsLG1heDpudWxsLG1lZGlhOm51bGwsbWVkaWFDaGFyYWN0ZXJFbmNvZGluZzpudWxsLG1lZGlhQ29udGVudEVuY29kaW5nczpudWxsLG1lZGlhU2l6ZTpudCxtZWRpYVRpbWU6bnVsbCxtZXRob2Q6bnVsbCxtaW46bnVsbCxtb2RlOm51bGwsbmFtZTpudWxsLG5hdkRvd246bnVsbCxuYXZEb3duTGVmdDpudWxsLG5hdkRvd25SaWdodDpudWxsLG5hdkxlZnQ6bnVsbCxuYXZOZXh0Om51bGwsbmF2UHJldjpudWxsLG5hdlJpZ2h0Om51bGwsbmF2VXA6bnVsbCxuYXZVcExlZnQ6bnVsbCxuYXZVcFJpZ2h0Om51bGwsbnVtT2N0YXZlczpudWxsLG9ic2VydmVyOm51bGwsb2Zmc2V0Om51bGwsb25BYm9ydDpudWxsLG9uQWN0aXZhdGU6bnVsbCxvbkFmdGVyUHJpbnQ6bnVsbCxvbkJlZm9yZVByaW50Om51bGwsb25CZWdpbjpudWxsLG9uQ2FuY2VsOm51bGwsb25DYW5QbGF5Om51bGwsb25DYW5QbGF5VGhyb3VnaDpudWxsLG9uQ2hhbmdlOm51bGwsb25DbGljazpudWxsLG9uQ2xvc2U6bnVsbCxvbkNvcHk6bnVsbCxvbkN1ZUNoYW5nZTpudWxsLG9uQ3V0Om51bGwsb25EYmxDbGljazpudWxsLG9uRHJhZzpudWxsLG9uRHJhZ0VuZDpudWxsLG9uRHJhZ0VudGVyOm51bGwsb25EcmFnRXhpdDpudWxsLG9uRHJhZ0xlYXZlOm51bGwsb25EcmFnT3ZlcjpudWxsLG9uRHJhZ1N0YXJ0Om51bGwsb25Ecm9wOm51bGwsb25EdXJhdGlvbkNoYW5nZTpudWxsLG9uRW1wdGllZDpudWxsLG9uRW5kOm51bGwsb25FbmRlZDpudWxsLG9uRXJyb3I6bnVsbCxvbkZvY3VzOm51bGwsb25Gb2N1c0luOm51bGwsb25Gb2N1c091dDpudWxsLG9uSGFzaENoYW5nZTpudWxsLG9uSW5wdXQ6bnVsbCxvbkludmFsaWQ6bnVsbCxvbktleURvd246bnVsbCxvbktleVByZXNzOm51bGwsb25LZXlVcDpudWxsLG9uTG9hZDpudWxsLG9uTG9hZGVkRGF0YTpudWxsLG9uTG9hZGVkTWV0YWRhdGE6bnVsbCxvbkxvYWRTdGFydDpudWxsLG9uTWVzc2FnZTpudWxsLG9uTW91c2VEb3duOm51bGwsb25Nb3VzZUVudGVyOm51bGwsb25Nb3VzZUxlYXZlOm51bGwsb25Nb3VzZU1vdmU6bnVsbCxvbk1vdXNlT3V0Om51bGwsb25Nb3VzZU92ZXI6bnVsbCxvbk1vdXNlVXA6bnVsbCxvbk1vdXNlV2hlZWw6bnVsbCxvbk9mZmxpbmU6bnVsbCxvbk9ubGluZTpudWxsLG9uUGFnZUhpZGU6bnVsbCxvblBhZ2VTaG93Om51bGwsb25QYXN0ZTpudWxsLG9uUGF1c2U6bnVsbCxvblBsYXk6bnVsbCxvblBsYXlpbmc6bnVsbCxvblBvcFN0YXRlOm51bGwsb25Qcm9ncmVzczpudWxsLG9uUmF0ZUNoYW5nZTpudWxsLG9uUmVwZWF0Om51bGwsb25SZXNldDpudWxsLG9uUmVzaXplOm51bGwsb25TY3JvbGw6bnVsbCxvblNlZWtlZDpudWxsLG9uU2Vla2luZzpudWxsLG9uU2VsZWN0Om51bGwsb25TaG93Om51bGwsb25TdGFsbGVkOm51bGwsb25TdG9yYWdlOm51bGwsb25TdWJtaXQ6bnVsbCxvblN1c3BlbmQ6bnVsbCxvblRpbWVVcGRhdGU6bnVsbCxvblRvZ2dsZTpudWxsLG9uVW5sb2FkOm51bGwsb25Wb2x1bWVDaGFuZ2U6bnVsbCxvbldhaXRpbmc6bnVsbCxvblpvb206bnVsbCxvcGFjaXR5Om51bGwsb3BlcmF0b3I6bnVsbCxvcmRlcjpudWxsLG9yaWVudDpudWxsLG9yaWVudGF0aW9uOm51bGwsb3JpZ2luOm51bGwsb3ZlcmZsb3c6bnVsbCxvdmVybGF5Om51bGwsb3ZlcmxpbmVQb3NpdGlvbjpudCxvdmVybGluZVRoaWNrbmVzczpudCxwYWludE9yZGVyOm51bGwscGFub3NlMTpudWxsLHBhdGg6bnVsbCxwYXRoTGVuZ3RoOm50LHBhdHRlcm5Db250ZW50VW5pdHM6bnVsbCxwYXR0ZXJuVHJhbnNmb3JtOm51bGwscGF0dGVyblVuaXRzOm51bGwscGhhc2U6bnVsbCxwaW5nOkJzLHBpdGNoOm51bGwscGxheWJhY2tPcmRlcjpudWxsLHBvaW50ZXJFdmVudHM6bnVsbCxwb2ludHM6bnVsbCxwb2ludHNBdFg6bnQscG9pbnRzQXRZOm50LHBvaW50c0F0WjpudCxwcmVzZXJ2ZUFscGhhOm51bGwscHJlc2VydmVBc3BlY3RSYXRpbzpudWxsLHByaW1pdGl2ZVVuaXRzOm51bGwscHJvcGFnYXRlOm51bGwscHJvcGVydHk6U2wscjpudWxsLHJhZGl1czpudWxsLHJlZmVycmVyUG9saWN5Om51bGwscmVmWDpudWxsLHJlZlk6bnVsbCxyZWw6U2wscmV2OlNsLHJlbmRlcmluZ0ludGVudDpudWxsLHJlcGVhdENvdW50Om51bGwscmVwZWF0RHVyOm51bGwscmVxdWlyZWRFeHRlbnNpb25zOlNsLHJlcXVpcmVkRmVhdHVyZXM6U2wscmVxdWlyZWRGb250czpTbCxyZXF1aXJlZEZvcm1hdHM6U2wscmVzb3VyY2U6bnVsbCxyZXN0YXJ0Om51bGwscmVzdWx0Om51bGwscm90YXRlOm51bGwscng6bnVsbCxyeTpudWxsLHNjYWxlOm51bGwsc2VlZDpudWxsLHNoYXBlUmVuZGVyaW5nOm51bGwsc2lkZTpudWxsLHNsb3BlOm51bGwsc25hcHNob3RUaW1lOm51bGwsc3BlY3VsYXJDb25zdGFudDpudCxzcGVjdWxhckV4cG9uZW50Om50LHNwcmVhZE1ldGhvZDpudWxsLHNwYWNpbmc6bnVsbCxzdGFydE9mZnNldDpudWxsLHN0ZERldmlhdGlvbjpudWxsLHN0ZW1oOm51bGwsc3RlbXY6bnVsbCxzdGl0Y2hUaWxlczpudWxsLHN0b3BDb2xvcjpudWxsLHN0b3BPcGFjaXR5Om51bGwsc3RyaWtldGhyb3VnaFBvc2l0aW9uOm50LHN0cmlrZXRocm91Z2hUaGlja25lc3M6bnQsc3RyaW5nOm51bGwsc3Ryb2tlOm51bGwsc3Ryb2tlRGFzaEFycmF5OlNsLHN0cm9rZURhc2hPZmZzZXQ6bnVsbCxzdHJva2VMaW5lQ2FwOm51bGwsc3Ryb2tlTGluZUpvaW46bnVsbCxzdHJva2VNaXRlckxpbWl0Om50LHN0cm9rZU9wYWNpdHk6bnQsc3Ryb2tlV2lkdGg6bnVsbCxzdHlsZTpudWxsLHN1cmZhY2VTY2FsZTpudCxzeW5jQmVoYXZpb3I6bnVsbCxzeW5jQmVoYXZpb3JEZWZhdWx0Om51bGwsc3luY01hc3RlcjpudWxsLHN5bmNUb2xlcmFuY2U6bnVsbCxzeW5jVG9sZXJhbmNlRGVmYXVsdDpudWxsLHN5c3RlbUxhbmd1YWdlOlNsLHRhYkluZGV4Om50LHRhYmxlVmFsdWVzOm51bGwsdGFyZ2V0Om51bGwsdGFyZ2V0WDpudCx0YXJnZXRZOm50LHRleHRBbmNob3I6bnVsbCx0ZXh0RGVjb3JhdGlvbjpudWxsLHRleHRSZW5kZXJpbmc6bnVsbCx0ZXh0TGVuZ3RoOm51bGwsdGltZWxpbmVCZWdpbjpudWxsLHRpdGxlOm51bGwsdHJhbnNmb3JtQmVoYXZpb3I6bnVsbCx0eXBlOm51bGwsdHlwZU9mOlNsLHRvOm51bGwsdHJhbnNmb3JtOm51bGwsdHJhbnNmb3JtT3JpZ2luOm51bGwsdTE6bnVsbCx1MjpudWxsLHVuZGVybGluZVBvc2l0aW9uOm50LHVuZGVybGluZVRoaWNrbmVzczpudCx1bmljb2RlOm51bGwsdW5pY29kZUJpZGk6bnVsbCx1bmljb2RlUmFuZ2U6bnVsbCx1bml0c1BlckVtOm50LHZhbHVlczpudWxsLHZBbHBoYWJldGljOm50LHZNYXRoZW1hdGljYWw6bnQsdmVjdG9yRWZmZWN0Om51bGwsdkhhbmdpbmc6bnQsdklkZW9ncmFwaGljOm50LHZlcnNpb246bnVsbCx2ZXJ0QWR2WTpudCx2ZXJ0T3JpZ2luWDpudCx2ZXJ0T3JpZ2luWTpudCx2aWV3Qm94Om51bGwsdmlld1RhcmdldDpudWxsLHZpc2liaWxpdHk6bnVsbCx3aWR0aDpudWxsLHdpZHRoczpudWxsLHdvcmRTcGFjaW5nOm51bGwsd3JpdGluZ01vZGU6bnVsbCx4Om51bGwseDE6bnVsbCx4MjpudWxsLHhDaGFubmVsU2VsZWN0b3I6bnVsbCx4SGVpZ2h0Om50LHk6bnVsbCx5MTpudWxsLHkyOm51bGwseUNoYW5uZWxTZWxlY3RvcjpudWxsLHo6bnVsbCx6b29tQW5kUGFuOm51bGx9LHNwYWNlOiJzdmciLHRyYW5zZm9ybTpYaWV9KX0pO3ZhciB0NmUsSnZ0PWcoKCk9PntSMygpO3Q2ZT1FYyh7cHJvcGVydGllczp7eExpbmtBY3R1YXRlOm51bGwseExpbmtBcmNSb2xlOm51bGwseExpbmtIcmVmOm51bGwseExpbmtSb2xlOm51bGwseExpbmtTaG93Om51bGwseExpbmtUaXRsZTpudWxsLHhMaW5rVHlwZTpudWxsfSxzcGFjZToieGxpbmsiLHRyYW5zZm9ybShzLGUpe3JldHVybiJ4bGluazoiK2Uuc2xpY2UoNSkudG9Mb3dlckNhc2UoKX19KX0pO3ZhciBhNmUsZXh0PWcoKCk9PntSMygpO2U2ZSgpO2E2ZT1FYyh7YXR0cmlidXRlczp7eG1sbnN4bGluazoieG1sbnM6eGxpbmsifSxwcm9wZXJ0aWVzOnt4bWxuc1hMaW5rOm51bGwseG1sbnM6bnVsbH0sc3BhY2U6InhtbG5zIix0cmFuc2Zvcm06UWllfSl9KTt2YXIgczZlLHR4dD1nKCgpPT57UjMoKTtzNmU9RWMoe3Byb3BlcnRpZXM6e3htbEJhc2U6bnVsbCx4bWxMYW5nOm51bGwseG1sU3BhY2U6bnVsbH0sc3BhY2U6InhtbCIsdHJhbnNmb3JtKHMsZSl7cmV0dXJuInhtbDoiK2Uuc2xpY2UoMykudG9Mb3dlckNhc2UoKX19KX0pO3ZhciBheHQ9ZygoKT0+e30pO2Z1bmN0aW9uIGk2ZShzLGUpe2xldCB0PW5iKGUpLGE9ZSxyPXVvO2lmKHQgaW4gcy5ub3JtYWwpcmV0dXJuIHMucHJvcGVydHlbcy5ub3JtYWxbdF1dO2lmKHQubGVuZ3RoPjQmJnQuc2xpY2UoMCw0KT09PSJkYXRhIiYmYUJhLnRlc3QoZSkpe2lmKGUuY2hhckF0KDQpPT09Ii0iKXtsZXQgbj1lLnNsaWNlKDUpLnJlcGxhY2Uoc3h0LGlCYSk7YT0iZGF0YSIrbi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStuLnNsaWNlKDEpfWVsc2V7bGV0IG49ZS5zbGljZSg0KTtpZighc3h0LnRlc3Qobikpe2xldCBvPW4ucmVwbGFjZSh0QmEsc0JhKTtvLmNoYXJBdCgwKSE9PSItIiYmKG89Ii0iK28pLGU9ImRhdGEiK299fXI9TjN9cmV0dXJuIG5ldyByKGEsZSl9ZnVuY3Rpb24gc0JhKHMpe3JldHVybiItIitzLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gaUJhKHMpe3JldHVybiBzLmNoYXJBdCgxKS50b1VwcGVyQ2FzZSgpfXZhciB0QmEsc3h0LGFCYSxpeHQ9ZygoKT0+e1htZSgpO1ltZSgpO1lpZSgpO3RCYT0vW0EtWl0vZyxzeHQ9Ly1bYS16XS9nLGFCYT0vXmRhdGFbLVx3LjpdKyQvaTtpKGk2ZSwiZmluZCIpO2koc0JhLCJrZWJhYiIpO2koaUJhLCJjYW1lbGNhc2UiKX0pO3ZhciByeHQsSmllLHI2ZT1nKCgpPT57V3Z0KCk7S3Z0KCk7WnZ0KCk7UXZ0KCk7SnZ0KCk7ZXh0KCk7dHh0KCk7YXh0KCk7aXh0KCk7WWllKCk7cnh0PUttZShbUW1lLFl2dCx0NmUsYTZlLHM2ZV0sImh0bWwiKSxKaWU9S21lKFtRbWUsWHZ0LHQ2ZSxhNmUsczZlXSwic3ZnIil9KTtmdW5jdGlvbiBvNmUocyxlKXtpZihzPXMucmVwbGFjZShlLnN1YnNldD9jQmEoZS5zdWJzZXQpOnJCYSxhKSxlLnN1YnNldHx8ZS5lc2NhcGVPbmx5KXJldHVybiBzO3JldHVybiBzLnJlcGxhY2Uob0JhLHQpLnJlcGxhY2UobkJhLGEpO2Z1bmN0aW9uIHQocixuLG8pe3JldHVybiBlLmZvcm1hdCgoci5jaGFyQ29kZUF0KDApLTU1Mjk2KSoxMDI0K3IuY2hhckNvZGVBdCgxKS01NjMyMCs2NTUzNixvLmNoYXJDb2RlQXQobisyKSxlKX1mdW5jdGlvbiBhKHIsbixvKXtyZXR1cm4gZS5mb3JtYXQoci5jaGFyQ29kZUF0KDApLG8uY2hhckNvZGVBdChuKzEpLGUpfX1mdW5jdGlvbiBjQmEocyl7bGV0IGU9b3h0LmdldChzKTtyZXR1cm4gZXx8KGU9ZEJhKHMpLG94dC5zZXQocyxlKSksZX1mdW5jdGlvbiBkQmEocyl7bGV0IGU9W10sdD0tMTtmb3IoOysrdDxzLmxlbmd0aDspZS5wdXNoKHNbdF0ucmVwbGFjZShsQmEsIlxcJCYiKSk7cmV0dXJuIG5ldyBSZWdFeHAoIig/OiIrZS5qb2luKCJ8IikrIikiLCJnIil9dmFyIHJCYSxvQmEsbkJhLGxCYSxveHQsbnh0PWcoKCk9PntyQmE9L1siJic8PmBdL2csb0JhPS9bXHVEODAwLVx1REJGRl1bXHVEQzAwLVx1REZGRl0vZyxuQmE9L1tceDAxLVx0XHZcZlx4MEUtXHgxRlx4N0ZceDgxXHg4RFx4OEZceDkwXHg5RFx4QTAtXHVGRkZGXS9nLGxCYT0vW3xcXHt9KClbXF1eJCsqPy5dL2csb3h0PW5ldyBXZWFrTWFwO2kobzZlLCJjb3JlIik7aShjQmEsImNoYXJhY3RlcnNUb0V4cHJlc3Npb25DYWNoZWQiKTtpKGRCYSwiY2hhcmFjdGVyc1RvRXhwcmVzc2lvbiIpfSk7ZnVuY3Rpb24gbHh0KHMsZSx0KXtsZXQgYT0iJiN4IitzLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO3JldHVybiB0JiZlJiYhdUJhLnRlc3QoU3RyaW5nLmZyb21DaGFyQ29kZShlKSk/YTphKyI7In12YXIgdUJhLGN4dD1nKCgpPT57dUJhPS9bXGRBLUZhLWZdLztpKGx4dCwidG9IZXhhZGVjaW1hbCIpfSk7ZnVuY3Rpb24gZHh0KHMsZSx0KXtsZXQgYT0iJiMiK1N0cmluZyhzKTtyZXR1cm4gdCYmZSYmIXBCYS50ZXN0KFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpP2E6YSsiOyJ9dmFyIHBCYSx1eHQ9ZygoKT0+e3BCYT0vXGQvO2koZHh0LCJ0b0RlY2ltYWwiKX0pO3ZhciBweHQsaHh0PWcoKCk9PntweHQ9WyJBRWxpZyIsIkFNUCIsIkFhY3V0ZSIsIkFjaXJjIiwiQWdyYXZlIiwiQXJpbmciLCJBdGlsZGUiLCJBdW1sIiwiQ09QWSIsIkNjZWRpbCIsIkVUSCIsIkVhY3V0ZSIsIkVjaXJjIiwiRWdyYXZlIiwiRXVtbCIsIkdUIiwiSWFjdXRlIiwiSWNpcmMiLCJJZ3JhdmUiLCJJdW1sIiwiTFQiLCJOdGlsZGUiLCJPYWN1dGUiLCJPY2lyYyIsIk9ncmF2ZSIsIk9zbGFzaCIsIk90aWxkZSIsIk91bWwiLCJRVU9UIiwiUkVHIiwiVEhPUk4iLCJVYWN1dGUiLCJVY2lyYyIsIlVncmF2ZSIsIlV1bWwiLCJZYWN1dGUiLCJhYWN1dGUiLCJhY2lyYyIsImFjdXRlIiwiYWVsaWciLCJhZ3JhdmUiLCJhbXAiLCJhcmluZyIsImF0aWxkZSIsImF1bWwiLCJicnZiYXIiLCJjY2VkaWwiLCJjZWRpbCIsImNlbnQiLCJjb3B5IiwiY3VycmVuIiwiZGVnIiwiZGl2aWRlIiwiZWFjdXRlIiwiZWNpcmMiLCJlZ3JhdmUiLCJldGgiLCJldW1sIiwiZnJhYzEyIiwiZnJhYzE0IiwiZnJhYzM0IiwiZ3QiLCJpYWN1dGUiLCJpY2lyYyIsImlleGNsIiwiaWdyYXZlIiwiaXF1ZXN0IiwiaXVtbCIsImxhcXVvIiwibHQiLCJtYWNyIiwibWljcm8iLCJtaWRkb3QiLCJuYnNwIiwibm90IiwibnRpbGRlIiwib2FjdXRlIiwib2NpcmMiLCJvZ3JhdmUiLCJvcmRmIiwib3JkbSIsIm9zbGFzaCIsIm90aWxkZSIsIm91bWwiLCJwYXJhIiwicGx1c21uIiwicG91bmQiLCJxdW90IiwicmFxdW8iLCJyZWciLCJzZWN0Iiwic2h5Iiwic3VwMSIsInN1cDIiLCJzdXAzIiwic3psaWciLCJ0aG9ybiIsInRpbWVzIiwidWFjdXRlIiwidWNpcmMiLCJ1Z3JhdmUiLCJ1bWwiLCJ1dW1sIiwieWFjdXRlIiwieWVuIiwieXVtbCJdfSk7dmFyIGVyZSxmeHQ9ZygoKT0+e2VyZT17bmJzcDoiXHhBMCIsaWV4Y2w6Ilx4QTEiLGNlbnQ6Ilx4QTIiLHBvdW5kOiJceEEzIixjdXJyZW46Ilx4QTQiLHllbjoiXHhBNSIsYnJ2YmFyOiJceEE2IixzZWN0OiJceEE3Iix1bWw6Ilx4QTgiLGNvcHk6Ilx4QTkiLG9yZGY6Ilx4QUEiLGxhcXVvOiJceEFCIixub3Q6Ilx4QUMiLHNoeToiXHhBRCIscmVnOiJceEFFIixtYWNyOiJceEFGIixkZWc6Ilx4QjAiLHBsdXNtbjoiXHhCMSIsc3VwMjoiXHhCMiIsc3VwMzoiXHhCMyIsYWN1dGU6Ilx4QjQiLG1pY3JvOiJceEI1IixwYXJhOiJceEI2IixtaWRkb3Q6Ilx4QjciLGNlZGlsOiJceEI4IixzdXAxOiJceEI5IixvcmRtOiJceEJBIixyYXF1bzoiXHhCQiIsZnJhYzE0OiJceEJDIixmcmFjMTI6Ilx4QkQiLGZyYWMzNDoiXHhCRSIsaXF1ZXN0OiJceEJGIixBZ3JhdmU6Ilx4QzAiLEFhY3V0ZToiXHhDMSIsQWNpcmM6Ilx4QzIiLEF0aWxkZToiXHhDMyIsQXVtbDoiXHhDNCIsQXJpbmc6Ilx4QzUiLEFFbGlnOiJceEM2IixDY2VkaWw6Ilx4QzciLEVncmF2ZToiXHhDOCIsRWFjdXRlOiJceEM5IixFY2lyYzoiXHhDQSIsRXVtbDoiXHhDQiIsSWdyYXZlOiJceENDIixJYWN1dGU6Ilx4Q0QiLEljaXJjOiJceENFIixJdW1sOiJceENGIixFVEg6Ilx4RDAiLE50aWxkZToiXHhEMSIsT2dyYXZlOiJceEQyIixPYWN1dGU6Ilx4RDMiLE9jaXJjOiJceEQ0IixPdGlsZGU6Ilx4RDUiLE91bWw6Ilx4RDYiLHRpbWVzOiJceEQ3IixPc2xhc2g6Ilx4RDgiLFVncmF2ZToiXHhEOSIsVWFjdXRlOiJceERBIixVY2lyYzoiXHhEQiIsVXVtbDoiXHhEQyIsWWFjdXRlOiJceEREIixUSE9STjoiXHhERSIsc3psaWc6Ilx4REYiLGFncmF2ZToiXHhFMCIsYWFjdXRlOiJceEUxIixhY2lyYzoiXHhFMiIsYXRpbGRlOiJceEUzIixhdW1sOiJceEU0IixhcmluZzoiXHhFNSIsYWVsaWc6Ilx4RTYiLGNjZWRpbDoiXHhFNyIsZWdyYXZlOiJceEU4IixlYWN1dGU6Ilx4RTkiLGVjaXJjOiJceEVBIixldW1sOiJceEVCIixpZ3JhdmU6Ilx4RUMiLGlhY3V0ZToiXHhFRCIsaWNpcmM6Ilx4RUUiLGl1bWw6Ilx4RUYiLGV0aDoiXHhGMCIsbnRpbGRlOiJceEYxIixvZ3JhdmU6Ilx4RjIiLG9hY3V0ZToiXHhGMyIsb2NpcmM6Ilx4RjQiLG90aWxkZToiXHhGNSIsb3VtbDoiXHhGNiIsZGl2aWRlOiJceEY3Iixvc2xhc2g6Ilx4RjgiLHVncmF2ZToiXHhGOSIsdWFjdXRlOiJceEZBIix1Y2lyYzoiXHhGQiIsdXVtbDoiXHhGQyIseWFjdXRlOiJceEZEIix0aG9ybjoiXHhGRSIseXVtbDoiXHhGRiIsZm5vZjoiXHUwMTkyIixBbHBoYToiXHUwMzkxIixCZXRhOiJcdTAzOTIiLEdhbW1hOiJcdTAzOTMiLERlbHRhOiJcdTAzOTQiLEVwc2lsb246Ilx1MDM5NSIsWmV0YToiXHUwMzk2IixFdGE6Ilx1MDM5NyIsVGhldGE6Ilx1MDM5OCIsSW90YToiXHUwMzk5IixLYXBwYToiXHUwMzlBIixMYW1iZGE6Ilx1MDM5QiIsTXU6Ilx1MDM5QyIsTnU6Ilx1MDM5RCIsWGk6Ilx1MDM5RSIsT21pY3JvbjoiXHUwMzlGIixQaToiXHUwM0EwIixSaG86Ilx1MDNBMSIsU2lnbWE6Ilx1MDNBMyIsVGF1OiJcdTAzQTQiLFVwc2lsb246Ilx1MDNBNSIsUGhpOiJcdTAzQTYiLENoaToiXHUwM0E3IixQc2k6Ilx1MDNBOCIsT21lZ2E6Ilx1MDNBOSIsYWxwaGE6Ilx1MDNCMSIsYmV0YToiXHUwM0IyIixnYW1tYToiXHUwM0IzIixkZWx0YToiXHUwM0I0IixlcHNpbG9uOiJcdTAzQjUiLHpldGE6Ilx1MDNCNiIsZXRhOiJcdTAzQjciLHRoZXRhOiJcdTAzQjgiLGlvdGE6Ilx1MDNCOSIsa2FwcGE6Ilx1MDNCQSIsbGFtYmRhOiJcdTAzQkIiLG11OiJcdTAzQkMiLG51OiJcdTAzQkQiLHhpOiJcdTAzQkUiLG9taWNyb246Ilx1MDNCRiIscGk6Ilx1MDNDMCIscmhvOiJcdTAzQzEiLHNpZ21hZjoiXHUwM0MyIixzaWdtYToiXHUwM0MzIix0YXU6Ilx1MDNDNCIsdXBzaWxvbjoiXHUwM0M1IixwaGk6Ilx1MDNDNiIsY2hpOiJcdTAzQzciLHBzaToiXHUwM0M4IixvbWVnYToiXHUwM0M5Iix0aGV0YXN5bToiXHUwM0QxIix1cHNpaDoiXHUwM0QyIixwaXY6Ilx1MDNENiIsYnVsbDoiXHUyMDIyIixoZWxsaXA6Ilx1MjAyNiIscHJpbWU6Ilx1MjAzMiIsUHJpbWU6Ilx1MjAzMyIsb2xpbmU6Ilx1MjAzRSIsZnJhc2w6Ilx1MjA0NCIsd2VpZXJwOiJcdTIxMTgiLGltYWdlOiJcdTIxMTEiLHJlYWw6Ilx1MjExQyIsdHJhZGU6Ilx1MjEyMiIsYWxlZnN5bToiXHUyMTM1IixsYXJyOiJcdTIxOTAiLHVhcnI6Ilx1MjE5MSIscmFycjoiXHUyMTkyIixkYXJyOiJcdTIxOTMiLGhhcnI6Ilx1MjE5NCIsY3JhcnI6Ilx1MjFCNSIsbEFycjoiXHUyMUQwIix1QXJyOiJcdTIxRDEiLHJBcnI6Ilx1MjFEMiIsZEFycjoiXHUyMUQzIixoQXJyOiJcdTIxRDQiLGZvcmFsbDoiXHUyMjAwIixwYXJ0OiJcdTIyMDIiLGV4aXN0OiJcdTIyMDMiLGVtcHR5OiJcdTIyMDUiLG5hYmxhOiJcdTIyMDciLGlzaW46Ilx1MjIwOCIsbm90aW46Ilx1MjIwOSIsbmk6Ilx1MjIwQiIscHJvZDoiXHUyMjBGIixzdW06Ilx1MjIxMSIsbWludXM6Ilx1MjIxMiIsbG93YXN0OiJcdTIyMTciLHJhZGljOiJcdTIyMUEiLHByb3A6Ilx1MjIxRCIsaW5maW46Ilx1MjIxRSIsYW5nOiJcdTIyMjAiLGFuZDoiXHUyMjI3IixvcjoiXHUyMjI4IixjYXA6Ilx1MjIyOSIsY3VwOiJcdTIyMkEiLGludDoiXHUyMjJCIix0aGVyZTQ6Ilx1MjIzNCIsc2ltOiJcdTIyM0MiLGNvbmc6Ilx1MjI0NSIsYXN5bXA6Ilx1MjI0OCIsbmU6Ilx1MjI2MCIsZXF1aXY6Ilx1MjI2MSIsbGU6Ilx1MjI2NCIsZ2U6Ilx1MjI2NSIsc3ViOiJcdTIyODIiLHN1cDoiXHUyMjgzIixuc3ViOiJcdTIyODQiLHN1YmU6Ilx1MjI4NiIsc3VwZToiXHUyMjg3IixvcGx1czoiXHUyMjk1IixvdGltZXM6Ilx1MjI5NyIscGVycDoiXHUyMkE1IixzZG90OiJcdTIyQzUiLGxjZWlsOiJcdTIzMDgiLHJjZWlsOiJcdTIzMDkiLGxmbG9vcjoiXHUyMzBBIixyZmxvb3I6Ilx1MjMwQiIsbGFuZzoiXHUyMzI5IixyYW5nOiJcdTIzMkEiLGxvejoiXHUyNUNBIixzcGFkZXM6Ilx1MjY2MCIsY2x1YnM6Ilx1MjY2MyIsaGVhcnRzOiJcdTI2NjUiLGRpYW1zOiJcdTI2NjYiLHF1b3Q6JyInLGFtcDoiJiIsbHQ6IjwiLGd0OiI+IixPRWxpZzoiXHUwMTUyIixvZWxpZzoiXHUwMTUzIixTY2Fyb246Ilx1MDE2MCIsc2Nhcm9uOiJcdTAxNjEiLFl1bWw6Ilx1MDE3OCIsY2lyYzoiXHUwMkM2Iix0aWxkZToiXHUwMkRDIixlbnNwOiJcdTIwMDIiLGVtc3A6Ilx1MjAwMyIsdGhpbnNwOiJcdTIwMDkiLHp3bmo6Ilx1MjAwQyIsendqOiJcdTIwMEQiLGxybToiXHUyMDBFIixybG06Ilx1MjAwRiIsbmRhc2g6Ilx1MjAxMyIsbWRhc2g6Ilx1MjAxNCIsbHNxdW86Ilx1MjAxOCIscnNxdW86Ilx1MjAxOSIsc2JxdW86Ilx1MjAxQSIsbGRxdW86Ilx1MjAxQyIscmRxdW86Ilx1MjAxRCIsYmRxdW86Ilx1MjAxRSIsZGFnZ2VyOiJcdTIwMjAiLERhZ2dlcjoiXHUyMDIxIixwZXJtaWw6Ilx1MjAzMCIsbHNhcXVvOiJcdTIwMzkiLHJzYXF1bzoiXHUyMDNBIixldXJvOiJcdTIwQUMifX0pO3ZhciBteHQsZ3h0PWcoKCk9PntteHQ9WyJjZW50IiwiY29weSIsImRpdmlkZSIsImd0IiwibHQiLCJub3QiLCJwYXJhIiwidGltZXMiXX0pO2Z1bmN0aW9uIHZ4dChzLGUsdCxhKXtsZXQgcj1TdHJpbmcuZnJvbUNoYXJDb2RlKHMpO2lmKGJ4dC5jYWxsKG42ZSxyKSl7bGV0IG49bjZlW3JdLG89IiYiK247cmV0dXJuIHQmJnB4dC5pbmNsdWRlcyhuKSYmIW14dC5pbmNsdWRlcyhuKSYmKCFhfHxlJiZlIT09NjEmJmhCYS50ZXN0KFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpKT9vOm8rIjsifXJldHVybiIifXZhciBieHQsbjZlLHRyZSxoQmEseHh0PWcoKCk9PntoeHQoKTtmeHQoKTtneHQoKTtieHQ9e30uaGFzT3duUHJvcGVydHksbjZlPXt9O2Zvcih0cmUgaW4gZXJlKWJ4dC5jYWxsKGVyZSx0cmUpJiYobjZlW2VyZVt0cmVdXT10cmUpO2hCYT0vW15cZEEtWmEtel0vO2kodnh0LCJ0b05hbWVkIil9KTtmdW5jdGlvbiB5eHQocyxlLHQpe2xldCBhPWx4dChzLGUsdC5vbWl0T3B0aW9uYWxTZW1pY29sb25zKSxyO2lmKCh0LnVzZU5hbWVkUmVmZXJlbmNlc3x8dC51c2VTaG9ydGVzdFJlZmVyZW5jZXMpJiYocj12eHQocyxlLHQub21pdE9wdGlvbmFsU2VtaWNvbG9ucyx0LmF0dHJpYnV0ZSkpLCh0LnVzZVNob3J0ZXN0UmVmZXJlbmNlc3x8IXIpJiZ0LnVzZVNob3J0ZXN0UmVmZXJlbmNlcyl7bGV0IG49ZHh0KHMsZSx0Lm9taXRPcHRpb25hbFNlbWljb2xvbnMpO24ubGVuZ3RoPGEubGVuZ3RoJiYoYT1uKX1yZXR1cm4gciYmKCF0LnVzZVNob3J0ZXN0UmVmZXJlbmNlc3x8ci5sZW5ndGg8YS5sZW5ndGgpP3I6YX12YXIgd3h0PWcoKCk9PntjeHQoKTt1eHQoKTt4eHQoKTtpKHl4dCwiZm9ybWF0U21hcnQiKX0pO2Z1bmN0aW9uIGt4dChzKXtyZXR1cm4iJiN4IitzLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpKyI7In12YXIgU3h0PWcoKCk9PntpKGt4dCwiZm9ybWF0QmFzaWMiKX0pO2Z1bmN0aW9uIEkwKHMsZSl7cmV0dXJuIG82ZShzLE9iamVjdC5hc3NpZ24oe2Zvcm1hdDp5eHR9LGUpKX1mdW5jdGlvbiBWZmkocyxlKXtyZXR1cm4gbzZlKHMsT2JqZWN0LmFzc2lnbih7Zm9ybWF0Omt4dH0sZSkpfXZhciBfeHQ9ZygoKT0+e254dCgpO3d4dCgpO1N4dCgpO2koSTAsInN0cmluZ2lmeUVudGl0aWVzIik7aShWZmksInN0cmluZ2lmeUVudGl0aWVzTGlnaHQiKX0pO3ZhciBhcmU9ZygoKT0+e194dCgpfSk7ZnVuY3Rpb24gTXh0KHMsZSx0LGEpe3JldHVybiBhLnNldHRpbmdzLmJvZ3VzQ29tbWVudHM/Ijw/IitJMChzLnZhbHVlLE9iamVjdC5hc3NpZ24oe30sYS5zZXR0aW5ncy5jaGFyYWN0ZXJSZWZlcmVuY2VzLHtzdWJzZXQ6bUJhfSkpKyI+IjoiPCEtLSIrcy52YWx1ZS5yZXBsYWNlKGZCYSxyKSsiLS0+IjtmdW5jdGlvbiByKG4pe3JldHVybiBJMChuLE9iamVjdC5hc3NpZ24oe30sYS5zZXR0aW5ncy5jaGFyYWN0ZXJSZWZlcmVuY2VzLHtzdWJzZXQ6Z0JhfSkpfX12YXIgZkJhLG1CYSxnQmEsenh0PWcoKCk9PnthcmUoKTtmQmE9L14+fF4tPnw8IS0tfC0tPnwtLSE+fDwhLSQvZyxtQmE9WyI+Il0sZ0JhPVsiPCIsIj4iXTtpKE14dCwiY29tbWVudCIpfSk7ZnVuY3Rpb24gQ3h0KHMsZSx0LGEpe3JldHVybiI8ISIrKGEuc2V0dGluZ3MudXBwZXJEb2N0eXBlPyJET0NUWVBFIjoiZG9jdHlwZSIpKyhhLnNldHRpbmdzLnRpZ2h0RG9jdHlwZT8iIjoiICIpKyJodG1sPiJ9dmFyIFR4dD1nKCgpPT57aShDeHQsImRvY3R5cGUiKX0pO2Z1bmN0aW9uIGVtaShzKXtsZXQgZT1bXSx0PVN0cmluZyhzfHwiIiksYT10LmluZGV4T2YoIiwiKSxyPTAsbj0hMTtmb3IoOyFuOyl7YT09PS0xJiYoYT10Lmxlbmd0aCxuPSEwKTtsZXQgbz10LnNsaWNlKHIsYSkudHJpbSgpOyhvfHwhbikmJmUucHVzaChvKSxyPWErMSxhPXQuaW5kZXhPZigiLCIscil9cmV0dXJuIGV9ZnVuY3Rpb24gJHh0KHMsZSl7bGV0IHQ9ZXx8e307cmV0dXJuKHNbcy5sZW5ndGgtMV09PT0iIj9bLi4ucywiIl06cykuam9pbigodC5wYWRSaWdodD8iICI6IiIpKyIsIisodC5wYWRMZWZ0PT09ITE/IiI6IiAiKSkudHJpbSgpfXZhciBEeHQ9ZygoKT0+e2koZW1pLCJwYXJzZSIpO2koJHh0LCJzdHJpbmdpZnkiKX0pO2Z1bmN0aW9uIHNtaShzKXtsZXQgZT1TdHJpbmcoc3x8IiIpLnRyaW0oKTtyZXR1cm4gZT9lLnNwbGl0KC9bIFx0XG5cclxmXSsvZyk6W119ZnVuY3Rpb24gTHh0KHMpe3JldHVybiBzLmpvaW4oIiAiKS50cmltKCl9dmFyIEV4dD1nKCgpPT57aShzbWksInBhcnNlIik7aShMeHQsInN0cmluZ2lmeSIpfSk7ZnVuY3Rpb24gTzMocyl7cmV0dXJuIHR5cGVvZiBzPT0ib2JqZWN0Ij9zLnR5cGU9PT0idGV4dCI/UHh0KHMudmFsdWUpOiExOlB4dChzKX1mdW5jdGlvbiBQeHQocyl7cmV0dXJuIHMucmVwbGFjZShiQmEsIiIpPT09IiJ9dmFyIGJCYSxJeHQ9ZygoKT0+e2JCYT0vWyBcdFxuXGZccl0vZztpKE8zLCJ3aGl0ZXNwYWNlIik7aShQeHQsImVtcHR5Iil9KTt2YXIgc3JlPWcoKCk9PntJeHQoKX0pO2Z1bmN0aW9uIEF4dChzKXtyZXR1cm4gZTtmdW5jdGlvbiBlKHQsYSxyKXtsZXQgbj10P3QuY2hpbGRyZW46dkJhLG89KGF8fDApK3MsbD1uW29dO2lmKCFyKWZvcig7bCYmTzMobCk7KW8rPXMsbD1uW29dO3JldHVybiBsfX12YXIgcnIsbDZlLHZCYSxjNmU9ZygoKT0+e3NyZSgpO3JyPUF4dCgxKSxsNmU9QXh0KC0xKSx2QmE9W107aShBeHQsInNpYmxpbmdzIil9KTtmdW5jdGlvbiBpcmUocyl7cmV0dXJuIGU7ZnVuY3Rpb24gZSh0LGEscil7cmV0dXJuIHhCYS5jYWxsKHMsdC50YWdOYW1lKSYmc1t0LnRhZ05hbWVdKHQsYSxyKX19dmFyIHhCYSxkNmU9ZygoKT0+e3hCYT17fS5oYXNPd25Qcm9wZXJ0eTtpKGlyZSwib21pc3Npb24iKX0pO2Z1bmN0aW9uIHU2ZShzLGUsdCl7bGV0IGE9cnIodCxlLCEwKTtyZXR1cm4hYXx8YS50eXBlIT09ImNvbW1lbnQiJiYhKGEudHlwZT09PSJ0ZXh0IiYmTzMoYS52YWx1ZS5jaGFyQXQoMCkpKX1mdW5jdGlvbiB5QmEocyxlLHQpe2xldCBhPXJyKHQsZSk7cmV0dXJuIWF8fGEudHlwZSE9PSJjb21tZW50In1mdW5jdGlvbiB3QmEocyxlLHQpe2xldCBhPXJyKHQsZSk7cmV0dXJuIWF8fGEudHlwZSE9PSJjb21tZW50In1mdW5jdGlvbiBrQmEocyxlLHQpe2xldCBhPXJyKHQsZSk7cmV0dXJuIGE/YS50eXBlPT09ImVsZW1lbnQiJiYoYS50YWdOYW1lPT09ImFkZHJlc3MifHxhLnRhZ05hbWU9PT0iYXJ0aWNsZSJ8fGEudGFnTmFtZT09PSJhc2lkZSJ8fGEudGFnTmFtZT09PSJibG9ja3F1b3RlInx8YS50YWdOYW1lPT09ImRldGFpbHMifHxhLnRhZ05hbWU9PT0iZGl2Inx8YS50YWdOYW1lPT09ImRsInx8YS50YWdOYW1lPT09ImZpZWxkc2V0Inx8YS50YWdOYW1lPT09ImZpZ2NhcHRpb24ifHxhLnRhZ05hbWU9PT0iZmlndXJlInx8YS50YWdOYW1lPT09ImZvb3RlciJ8fGEudGFnTmFtZT09PSJmb3JtInx8YS50YWdOYW1lPT09ImgxInx8YS50YWdOYW1lPT09ImgyInx8YS50YWdOYW1lPT09ImgzInx8YS50YWdOYW1lPT09Img0Inx8YS50YWdOYW1lPT09Img1Inx8YS50YWdOYW1lPT09Img2Inx8YS50YWdOYW1lPT09ImhlYWRlciJ8fGEudGFnTmFtZT09PSJoZ3JvdXAifHxhLnRhZ05hbWU9PT0iaHIifHxhLnRhZ05hbWU9PT0ibWFpbiJ8fGEudGFnTmFtZT09PSJtZW51Inx8YS50YWdOYW1lPT09Im5hdiJ8fGEudGFnTmFtZT09PSJvbCJ8fGEudGFnTmFtZT09PSJwInx8YS50YWdOYW1lPT09InByZSJ8fGEudGFnTmFtZT09PSJzZWN0aW9uInx8YS50YWdOYW1lPT09InRhYmxlInx8YS50YWdOYW1lPT09InVsIik6IXR8fCEodC50eXBlPT09ImVsZW1lbnQiJiYodC50YWdOYW1lPT09ImEifHx0LnRhZ05hbWU9PT0iYXVkaW8ifHx0LnRhZ05hbWU9PT0iZGVsInx8dC50YWdOYW1lPT09ImlucyJ8fHQudGFnTmFtZT09PSJtYXAifHx0LnRhZ05hbWU9PT0ibm9zY3JpcHQifHx0LnRhZ05hbWU9PT0idmlkZW8iKSl9ZnVuY3Rpb24gU0JhKHMsZSx0KXtsZXQgYT1ycih0LGUpO3JldHVybiFhfHxhLnR5cGU9PT0iZWxlbWVudCImJmEudGFnTmFtZT09PSJsaSJ9ZnVuY3Rpb24gX0JhKHMsZSx0KXtsZXQgYT1ycih0LGUpO3JldHVybiEhKGEmJmEudHlwZT09PSJlbGVtZW50IiYmKGEudGFnTmFtZT09PSJkdCJ8fGEudGFnTmFtZT09PSJkZCIpKX1mdW5jdGlvbiBNQmEocyxlLHQpe2xldCBhPXJyKHQsZSk7cmV0dXJuIWF8fGEudHlwZT09PSJlbGVtZW50IiYmKGEudGFnTmFtZT09PSJkdCJ8fGEudGFnTmFtZT09PSJkZCIpfWZ1bmN0aW9uIE54dChzLGUsdCl7bGV0IGE9cnIodCxlKTtyZXR1cm4hYXx8YS50eXBlPT09ImVsZW1lbnQiJiYoYS50YWdOYW1lPT09InJwInx8YS50YWdOYW1lPT09InJ0Iil9ZnVuY3Rpb24gekJhKHMsZSx0KXtsZXQgYT1ycih0LGUpO3JldHVybiFhfHxhLnR5cGU9PT0iZWxlbWVudCImJmEudGFnTmFtZT09PSJvcHRncm91cCJ9ZnVuY3Rpb24gQ0JhKHMsZSx0KXtsZXQgYT1ycih0LGUpO3JldHVybiFhfHxhLnR5cGU9PT0iZWxlbWVudCImJihhLnRhZ05hbWU9PT0ib3B0aW9uInx8YS50YWdOYW1lPT09Im9wdGdyb3VwIil9ZnVuY3Rpb24gVEJhKHMsZSx0KXtsZXQgYT1ycih0LGUpO3JldHVybiEhKGEmJmEudHlwZT09PSJlbGVtZW50IiYmKGEudGFnTmFtZT09PSJ0Ym9keSJ8fGEudGFnTmFtZT09PSJ0Zm9vdCIpKX1mdW5jdGlvbiAkQmEocyxlLHQpe2xldCBhPXJyKHQsZSk7cmV0dXJuIWF8fGEudHlwZT09PSJlbGVtZW50IiYmKGEudGFnTmFtZT09PSJ0Ym9keSJ8fGEudGFnTmFtZT09PSJ0Zm9vdCIpfWZ1bmN0aW9uIERCYShzLGUsdCl7cmV0dXJuIXJyKHQsZSl9ZnVuY3Rpb24gTEJhKHMsZSx0KXtsZXQgYT1ycih0LGUpO3JldHVybiFhfHxhLnR5cGU9PT0iZWxlbWVudCImJmEudGFnTmFtZT09PSJ0ciJ9ZnVuY3Rpb24gUnh0KHMsZSx0KXtsZXQgYT1ycih0LGUpO3JldHVybiFhfHxhLnR5cGU9PT0iZWxlbWVudCImJihhLnRhZ05hbWU9PT0idGQifHxhLnRhZ05hbWU9PT0idGgiKX12YXIgVGsscDZlPWcoKCk9PntzcmUoKTtjNmUoKTtkNmUoKTtUaz1pcmUoe2JvZHk6d0JhLGNhcHRpb246dTZlLGNvbGdyb3VwOnU2ZSxkZDpNQmEsZHQ6X0JhLGhlYWQ6dTZlLGh0bWw6eUJhLGxpOlNCYSxvcHRncm91cDp6QmEsb3B0aW9uOkNCYSxwOmtCYSxycDpOeHQscnQ6Tnh0LHRib2R5OiRCYSx0ZDpSeHQsdGZvb3Q6REJhLHRoOlJ4dCx0aGVhZDpUQmEsdHI6TEJhfSk7aSh1NmUsImhlYWRPckNvbGdyb3VwT3JDYXB0aW9uIik7aSh5QmEsImh0bWwiKTtpKHdCYSwiYm9keSIpO2koa0JhLCJwIik7aShTQmEsImxpIik7aShfQmEsImR0Iik7aShNQmEsImRkIik7aShOeHQsInJ1YnlFbGVtZW50Iik7aSh6QmEsIm9wdGdyb3VwIik7aShDQmEsIm9wdGlvbiIpO2koVEJhLCJ0aGVhZCIpO2koJEJhLCJ0Ym9keSIpO2koREJhLCJ0Zm9vdCIpO2koTEJhLCJ0ciIpO2koUnh0LCJjZWxscyIpfSk7ZnVuY3Rpb24gRUJhKHMpe2xldCBlPXJyKHMsLTEpO3JldHVybiFlfHxlLnR5cGUhPT0iY29tbWVudCJ9ZnVuY3Rpb24gUEJhKHMpe2xldCBlPW5ldyBTZXQ7Zm9yKGxldCBhIG9mIHMuY2hpbGRyZW4paWYoYS50eXBlPT09ImVsZW1lbnQiJiYoYS50YWdOYW1lPT09ImJhc2UifHxhLnRhZ05hbWU9PT0idGl0bGUiKSl7aWYoZS5oYXMoYS50YWdOYW1lKSlyZXR1cm4hMTtlLmFkZChhLnRhZ05hbWUpfWxldCB0PXMuY2hpbGRyZW5bMF07cmV0dXJuIXR8fHQudHlwZT09PSJlbGVtZW50In1mdW5jdGlvbiBJQmEocyl7bGV0IGU9cnIocywtMSwhMCk7cmV0dXJuIWV8fGUudHlwZSE9PSJjb21tZW50IiYmIShlLnR5cGU9PT0idGV4dCImJk8zKGUudmFsdWUuY2hhckF0KDApKSkmJiEoZS50eXBlPT09ImVsZW1lbnQiJiYoZS50YWdOYW1lPT09Im1ldGEifHxlLnRhZ05hbWU9PT0ibGluayJ8fGUudGFnTmFtZT09PSJzY3JpcHQifHxlLnRhZ05hbWU9PT0ic3R5bGUifHxlLnRhZ05hbWU9PT0idGVtcGxhdGUiKSl9ZnVuY3Rpb24gQUJhKHMsZSx0KXtsZXQgYT1sNmUodCxlKSxyPXJyKHMsLTEsITApO3JldHVybiB0JiZhJiZhLnR5cGU9PT0iZWxlbWVudCImJmEudGFnTmFtZT09PSJjb2xncm91cCImJlRrKGEsdC5jaGlsZHJlbi5pbmRleE9mKGEpLHQpPyExOiEhKHImJnIudHlwZT09PSJlbGVtZW50IiYmci50YWdOYW1lPT09ImNvbCIpfWZ1bmN0aW9uIE5CYShzLGUsdCl7bGV0IGE9bDZlKHQsZSkscj1ycihzLC0xKTtyZXR1cm4gdCYmYSYmYS50eXBlPT09ImVsZW1lbnQiJiYoYS50YWdOYW1lPT09InRoZWFkInx8YS50YWdOYW1lPT09InRib2R5IikmJlRrKGEsdC5jaGlsZHJlbi5pbmRleE9mKGEpLHQpPyExOiEhKHImJnIudHlwZT09PSJlbGVtZW50IiYmci50YWdOYW1lPT09InRyIil9dmFyIE94dCxGeHQ9ZygoKT0+e3NyZSgpO2M2ZSgpO3A2ZSgpO2Q2ZSgpO094dD1pcmUoe2JvZHk6SUJhLGNvbGdyb3VwOkFCYSxoZWFkOlBCYSxodG1sOkVCYSx0Ym9keTpOQmF9KTtpKEVCYSwiaHRtbCIpO2koUEJhLCJoZWFkIik7aShJQmEsImJvZHkiKTtpKEFCYSwiY29sZ3JvdXAiKTtpKE5CYSwidGJvZHkiKX0pO2Z1bmN0aW9uIEJ4dChzLGUsdCxhKXtsZXQgcj1hLnNjaGVtYSxuPXIuc3BhY2U9PT0ic3ZnIj8hMTphLnNldHRpbmdzLm9taXRPcHRpb25hbFRhZ3Msbz1yLnNwYWNlPT09InN2ZyI/YS5zZXR0aW5ncy5jbG9zZUVtcHR5RWxlbWVudHM6YS5zZXR0aW5ncy52b2lkcy5pbmNsdWRlcyhzLnRhZ05hbWUudG9Mb3dlckNhc2UoKSksbD1bXSxwO3Iuc3BhY2U9PT0iaHRtbCImJnMudGFnTmFtZT09PSJzdmciJiYoYS5zY2hlbWE9SmllKTtsZXQgZD1SQmEoYSxzLnByb3BlcnRpZXMpLHU9YS5hbGwoci5zcGFjZT09PSJodG1sIiYmcy50YWdOYW1lPT09InRlbXBsYXRlIj9zLmNvbnRlbnQ6cyk7cmV0dXJuIGEuc2NoZW1hPXIsdSYmKG89ITEpLChkfHwhbnx8IU94dChzLGUsdCkpJiYobC5wdXNoKCI8IixzLnRhZ05hbWUsZD8iICIrZDoiIiksbyYmKHIuc3BhY2U9PT0ic3ZnInx8YS5zZXR0aW5ncy5jbG9zZVNlbGZDbG9zaW5nKSYmKHA9ZC5jaGFyQXQoZC5sZW5ndGgtMSksKCFhLnNldHRpbmdzLnRpZ2h0U2VsZkNsb3Npbmd8fHA9PT0iLyJ8fHAmJnAhPT0nIicmJnAhPT0iJyIpJiZsLnB1c2goIiAiKSxsLnB1c2goIi8iKSksbC5wdXNoKCI+IikpLGwucHVzaCh1KSwhbyYmKCFufHwhVGsocyxlLHQpKSYmbC5wdXNoKCI8LyIrcy50YWdOYW1lKyI+IiksbC5qb2luKCIiKX1mdW5jdGlvbiBSQmEocyxlKXtsZXQgdD1bXSxhPS0xLHI7aWYoZSl7Zm9yKHIgaW4gZSlpZihlW3JdIT09bnVsbCYmZVtyXSE9PXZvaWQgMCl7bGV0IG49T0JhKHMscixlW3JdKTtuJiZ0LnB1c2gobil9fWZvcig7KythPHQubGVuZ3RoOyl7bGV0IG49cy5zZXR0aW5ncy50aWdodEF0dHJpYnV0ZXM/dFthXS5jaGFyQXQodFthXS5sZW5ndGgtMSk6dm9pZCAwO2EhPT10Lmxlbmd0aC0xJiZuIT09JyInJiZuIT09IiciJiYodFthXSs9IiAiKX1yZXR1cm4gdC5qb2luKCIiKX1mdW5jdGlvbiBPQmEocyxlLHQpe2xldCBhPWk2ZShzLnNjaGVtYSxlKSxyPXMuc2V0dGluZ3MuYWxsb3dQYXJzZUVycm9ycyYmcy5zY2hlbWEuc3BhY2U9PT0iaHRtbCI/MDoxLG49cy5zZXR0aW5ncy5hbGxvd0Rhbmdlcm91c0NoYXJhY3RlcnM/MDoxLG89cy5xdW90ZSxsO2lmKGEub3ZlcmxvYWRlZEJvb2xlYW4mJih0PT09YS5hdHRyaWJ1dGV8fHQ9PT0iIik/dD0hMDooYS5ib29sZWFufHxhLm92ZXJsb2FkZWRCb29sZWFuKSYmKHR5cGVvZiB0IT0ic3RyaW5nInx8dD09PWEuYXR0cmlidXRlfHx0PT09IiIpJiYodD0hIXQpLHQ9PW51bGx8fHQ9PT0hMXx8dHlwZW9mIHQ9PSJudW1iZXIiJiZOdW1iZXIuaXNOYU4odCkpcmV0dXJuIiI7bGV0IHA9STAoYS5hdHRyaWJ1dGUsT2JqZWN0LmFzc2lnbih7fSxzLnNldHRpbmdzLmNoYXJhY3RlclJlZmVyZW5jZXMse3N1YnNldDpycmUubmFtZVtyXVtuXX0pKTtyZXR1cm4gdD09PSEwfHwodD1BcnJheS5pc0FycmF5KHQpPyhhLmNvbW1hU2VwYXJhdGVkPyR4dDpMeHQpKHQse3BhZExlZnQ6IXMuc2V0dGluZ3MudGlnaHRDb21tYVNlcGFyYXRlZExpc3RzfSk6U3RyaW5nKHQpLHMuc2V0dGluZ3MuY29sbGFwc2VFbXB0eUF0dHJpYnV0ZXMmJiF0KT9wOihzLnNldHRpbmdzLnByZWZlclVucXVvdGVkJiYobD1JMCh0LE9iamVjdC5hc3NpZ24oe30scy5zZXR0aW5ncy5jaGFyYWN0ZXJSZWZlcmVuY2VzLHthdHRyaWJ1dGU6ITAsc3Vic2V0OnJyZS51bnF1b3RlZFtyXVtuXX0pKSksbCE9PXQmJihzLnNldHRpbmdzLnF1b3RlU21hcnQmJks5KHQsbyk+SzkodCxzLmFsdGVybmF0aXZlKSYmKG89cy5hbHRlcm5hdGl2ZSksbD1vK0kwKHQsT2JqZWN0LmFzc2lnbih7fSxzLnNldHRpbmdzLmNoYXJhY3RlclJlZmVyZW5jZXMse3N1YnNldDoobz09PSInIj9ycmUuc2luZ2xlOnJyZS5kb3VibGUpW3JdW25dLGF0dHJpYnV0ZTohMH0pKStvKSxwKyhsJiYiPSIrbCkpfXZhciBycmUsSHh0PWcoKCk9PntRM2UoKTtEeHQoKTtyNmUoKTtFeHQoKTthcmUoKTtwNmUoKTtGeHQoKTtycmU9e25hbWU6W1tgCQpcZlxyICYvPT5gLnNwbGl0KCIiKSxgCQpcZlxyICImJy89PlxgYC5zcGxpdCgiIildLFtgXDAJClxmXHIgIiYnLzw9PmAuc3BsaXQoIiIpLGBcMAkKXGZcciAiJicvPD0+XGBgLnNwbGl0KCIiKV1dLHVucXVvdGVkOltbYAkKXGZcciAmPmAuc3BsaXQoIiIpLGBcMAkKXGZcciAiJic8PT5cYGAuc3BsaXQoIiIpXSxbYFwwCQpcZlxyICImJzw9PlxgYC5zcGxpdCgiIiksYFwwCQpcZlxyICImJzw9PlxgYC5zcGxpdCgiIildXSxzaW5nbGU6W1siJiciLnNwbGl0KCIiKSwiXCImJ2AiLnNwbGl0KCIiKV0sWyJcMCYnIi5zcGxpdCgiIiksIlwwXCImJ2AiLnNwbGl0KCIiKV1dLGRvdWJsZTpbWyciJicuc3BsaXQoIiIpLCJcIiYnYCIuc3BsaXQoIiIpXSxbJ1wwIiYnLnNwbGl0KCIiKSwiXDBcIiYnYCIuc3BsaXQoIiIpXV19O2koQnh0LCJlbGVtZW50Iik7aShSQmEsInNlcmlhbGl6ZUF0dHJpYnV0ZXMiKTtpKE9CYSwic2VyaWFsaXplQXR0cmlidXRlIil9KTtmdW5jdGlvbiBvcmUocyxlLHQsYSl7cmV0dXJuIHQmJnQudHlwZT09PSJlbGVtZW50IiYmKHQudGFnTmFtZT09PSJzY3JpcHQifHx0LnRhZ05hbWU9PT0ic3R5bGUiKT9zLnZhbHVlOkkwKHMudmFsdWUsT2JqZWN0LmFzc2lnbih7fSxhLnNldHRpbmdzLmNoYXJhY3RlclJlZmVyZW5jZXMse3N1YnNldDpGQmF9KSl9dmFyIEZCYSxoNmU9ZygoKT0+e2FyZSgpO0ZCYT1bIjwiLCImIl07aShvcmUsInRleHQiKX0pO2Z1bmN0aW9uIHF4dChzLGUsdCxhKXtyZXR1cm4gYS5zZXR0aW5ncy5hbGxvd0Rhbmdlcm91c0h0bWw/cy52YWx1ZTpvcmUocyxlLHQsYSl9dmFyIGp4dD1nKCgpPT57aDZlKCk7aShxeHQsInJhdyIpfSk7ZnVuY3Rpb24gVnh0KHMsZSx0LGEpe3JldHVybiBhLmFsbChzKX12YXIgVXh0PWcoKCk9PntpKFZ4dCwicm9vdCIpfSk7ZnVuY3Rpb24gQkJhKHMpe3Rocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgbm9kZSwgbm90IGAiK3MrImAiKX1mdW5jdGlvbiBIQmEocyl7bGV0IGU9czt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBjb21waWxlIHVua25vd24gbm9kZSBgIitlLnR5cGUrImAiKX12YXIgV3h0LEd4dD1nKCgpPT57Y2ZlKCk7enh0KCk7VHh0KCk7SHh0KCk7anh0KCk7VXh0KCk7aDZlKCk7V3h0PXJpZSgidHlwZSIse2ludmFsaWQ6QkJhLHVua25vd246SEJhLGhhbmRsZXJzOntjb21tZW50Ok14dCxkb2N0eXBlOkN4dCxlbGVtZW50OkJ4dCxyYXc6cXh0LHJvb3Q6Vnh0LHRleHQ6b3JlfX0pO2koQkJhLCJpbnZhbGlkIik7aShIQmEsInVua25vd24iKX0pO2Z1bmN0aW9uIGY2ZShzLGUpe2xldCB0PWV8fHFCYSxhPXQucXVvdGV8fCciJyxyPWE9PT0nIic/IiciOiciJztpZihhIT09JyInJiZhIT09IiciKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBxdW90ZSBgIithKyJgLCBleHBlY3RlZCBgJ2Agb3IgYFwiYCIpO3JldHVybntvbmU6VUJhLGFsbDpXQmEsc2V0dGluZ3M6e29taXRPcHRpb25hbFRhZ3M6dC5vbWl0T3B0aW9uYWxUYWdzfHwhMSxhbGxvd1BhcnNlRXJyb3JzOnQuYWxsb3dQYXJzZUVycm9yc3x8ITEsYWxsb3dEYW5nZXJvdXNDaGFyYWN0ZXJzOnQuYWxsb3dEYW5nZXJvdXNDaGFyYWN0ZXJzfHwhMSxxdW90ZVNtYXJ0OnQucXVvdGVTbWFydHx8ITEscHJlZmVyVW5xdW90ZWQ6dC5wcmVmZXJVbnF1b3RlZHx8ITEsdGlnaHRBdHRyaWJ1dGVzOnQudGlnaHRBdHRyaWJ1dGVzfHwhMSx1cHBlckRvY3R5cGU6dC51cHBlckRvY3R5cGV8fCExLHRpZ2h0RG9jdHlwZTp0LnRpZ2h0RG9jdHlwZXx8ITEsYm9ndXNDb21tZW50czp0LmJvZ3VzQ29tbWVudHN8fCExLHRpZ2h0Q29tbWFTZXBhcmF0ZWRMaXN0czp0LnRpZ2h0Q29tbWFTZXBhcmF0ZWRMaXN0c3x8ITEsdGlnaHRTZWxmQ2xvc2luZzp0LnRpZ2h0U2VsZkNsb3Npbmd8fCExLGNvbGxhcHNlRW1wdHlBdHRyaWJ1dGVzOnQuY29sbGFwc2VFbXB0eUF0dHJpYnV0ZXN8fCExLGFsbG93RGFuZ2Vyb3VzSHRtbDp0LmFsbG93RGFuZ2Vyb3VzSHRtbHx8ITEsdm9pZHM6dC52b2lkc3x8VnZ0LGNoYXJhY3RlclJlZmVyZW5jZXM6dC5jaGFyYWN0ZXJSZWZlcmVuY2VzfHxqQmEsY2xvc2VTZWxmQ2xvc2luZzp0LmNsb3NlU2VsZkNsb3Npbmd8fCExLGNsb3NlRW1wdHlFbGVtZW50czp0LmNsb3NlRW1wdHlFbGVtZW50c3x8ITF9LHNjaGVtYTp0LnNwYWNlPT09InN2ZyI/SmllOnJ4dCxxdW90ZTphLGFsdGVybmF0aXZlOnJ9Lm9uZShBcnJheS5pc0FycmF5KHMpP3t0eXBlOiJyb290IixjaGlsZHJlbjpzfTpzLHZvaWQgMCx2b2lkIDApfWZ1bmN0aW9uIFVCYShzLGUsdCl7cmV0dXJuIFd4dChzLGUsdCx0aGlzKX1mdW5jdGlvbiBXQmEocyl7bGV0IGU9W10sdD1zJiZzLmNoaWxkcmVufHxWQmEsYT0tMTtmb3IoOysrYTx0Lmxlbmd0aDspZVthXT10aGlzLm9uZSh0W2FdLGEscyk7cmV0dXJuIGUuam9pbigiIil9dmFyIHFCYSxqQmEsVkJhLEt4dD1nKCgpPT57VXZ0KCk7cjZlKCk7R3h0KCk7cUJhPXt9LGpCYT17fSxWQmE9W107aShmNmUsInRvSHRtbCIpO2koVUJhLCJvbmUiKTtpKFdCYSwiYWxsIil9KTt2YXIgWXh0PWcoKCk9PntLeHQoKX0pO2Z1bmN0aW9uIGxiKHMpe2xldCBlPXRoaXMse2hhbmRsZXJzOnQsc2FuaXRpemU6YSwuLi5yfT1zfHxHQmEsbj0hMSxvO3R5cGVvZiBhPT0iYm9vbGVhbiI/bj0hYTphJiYobz1hKSxlLmNvbXBpbGVyPWw7ZnVuY3Rpb24gbChwLGQpe2xldCB1PVdtZShwLHtoYW5kbGVyczp0LGFsbG93RGFuZ2Vyb3VzSHRtbDpufSksYz1uP3U6Qm1lKHUsbyksYj1mNmUoYyx7Li4ucixhbGxvd0Rhbmdlcm91c0h0bWw6bn0pO3JldHVybiBkLmV4dG5hbWUmJihkLmV4dG5hbWU9Ii5odG1sIikscCYmcC50eXBlPT09InJvb3QiJiZiJiYvW15cclxuXS8udGVzdChiLmNoYXJBdChiLmxlbmd0aC0xKSk/YitgCmA6Yn1pKGwsImNvbXBpbGVyIil9dmFyIEdCYSxaeHQ9ZygoKT0+e0ZidCgpO2p2dCgpO1l4dCgpO0dCYT17fTtpKGxiLCJyZW1hcmtIdG1sIil9KTt2YXIgWHh0PWcoKCk9PntaeHQoKX0pO2Z1bmN0aW9uIGNiKHMpe2xldCBlPXRoaXM7ZS5jb21waWxlcj10O2Z1bmN0aW9uIHQoYSl7cmV0dXJuIERmZShhLHsuLi5lLmRhdGEoInNldHRpbmdzIiksLi4ucyxleHRlbnNpb25zOmUuZGF0YSgidG9NYXJrZG93bkV4dGVuc2lvbnMiKXx8W119KX1pKHQsImNvbXBpbGVyIil9dmFyIFF4dD1nKCgpPT57bWllKCk7aShjYiwicmVtYXJrU3RyaW5naWZ5Iil9KTt2YXIgSnh0PWcoKCk9PntReHQoKX0pO2Z1bmN0aW9uIEtCYShzKXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgdD1hcmd1bWVudHNbZV07Zm9yKHZhciBhIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsYSkmJihzW2FdPXRbYV0pfXJldHVybiBzfWZ1bmN0aW9uIG02ZShzLGUpe3JldHVybiBBcnJheShlKzEpLmpvaW4ocyl9ZnVuY3Rpb24gZXl0KHMpe3JldHVybiBzLnJlcGxhY2UoL15cbiovLCIiKX1mdW5jdGlvbiB0eXQocyl7Zm9yKHZhciBlPXMubGVuZ3RoO2U+MCYmc1tlLTFdPT09YApgOyllLS07cmV0dXJuIHMuc3Vic3RyaW5nKDAsZSl9ZnVuY3Rpb24gYXl0KHMpe3JldHVybiB0eXQoZXl0KHMpKX1mdW5jdGlvbiBnNmUocyl7cmV0dXJuIGI2ZShzLFlCYSl9ZnVuY3Rpb24gaXl0KHMpe3JldHVybiBiNmUocyxzeXQpfWZ1bmN0aW9uIFpCYShzKXtyZXR1cm4gb3l0KHMsc3l0KX1mdW5jdGlvbiBYQmEocyl7cmV0dXJuIGI2ZShzLHJ5dCl9ZnVuY3Rpb24gUUJhKHMpe3JldHVybiBveXQocyxyeXQpfWZ1bmN0aW9uIGI2ZShzLGUpe3JldHVybiBlLmluZGV4T2Yocy5ub2RlTmFtZSk+PTB9ZnVuY3Rpb24gb3l0KHMsZSl7cmV0dXJuIHMuZ2V0RWxlbWVudHNCeVRhZ05hbWUmJmUuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gcy5nZXRFbGVtZW50c0J5VGFnTmFtZSh0KS5sZW5ndGh9KX1mdW5jdGlvbiBueXQocyl7cmV0dXJuIEpCYS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5yZXBsYWNlKHRbMF0sdFsxXSl9LHMpfWZ1bmN0aW9uIG5yZShzKXtyZXR1cm4gcz9zLnJlcGxhY2UoLyhcbitccyopKy9nLGAKYCk6IiJ9ZnVuY3Rpb24gdjZlKHMpe3ZhciBlPXMucmVwbGFjZSgvKFs8PigpXSkvZywiXFwkMSIpO3JldHVybiBlLmluZGV4T2YoIiAiKT49MD8iPCIrZSsiPiI6ZX1mdW5jdGlvbiB4NmUocyl7cmV0dXJuIHMucmVwbGFjZSgvIi9nLCdcXCInKX1mdW5jdGlvbiBseXQocyl7dGhpcy5vcHRpb25zPXMsdGhpcy5fa2VlcD1bXSx0aGlzLl9yZW1vdmU9W10sdGhpcy5ibGFua1J1bGU9e3JlcGxhY2VtZW50OnMuYmxhbmtSZXBsYWNlbWVudH0sdGhpcy5rZWVwUmVwbGFjZW1lbnQ9cy5rZWVwUmVwbGFjZW1lbnQsdGhpcy5kZWZhdWx0UnVsZT17cmVwbGFjZW1lbnQ6cy5kZWZhdWx0UmVwbGFjZW1lbnR9LHRoaXMuYXJyYXk9W107Zm9yKHZhciBlIGluIHMucnVsZXMpdGhpcy5hcnJheS5wdXNoKHMucnVsZXNbZV0pfWZ1bmN0aW9uIHk2ZShzLGUsdCl7Zm9yKHZhciBhPTA7YTxzLmxlbmd0aDthKyspe3ZhciByPXNbYV07aWYoZUhhKHIsZSx0KSlyZXR1cm4gcn19ZnVuY3Rpb24gZUhhKHMsZSx0KXt2YXIgYT1zLmZpbHRlcjtpZih0eXBlb2YgYT09InN0cmluZyIpe2lmKGE9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpcmV0dXJuITB9ZWxzZSBpZihBcnJheS5pc0FycmF5KGEpKXtpZihhLmluZGV4T2YoZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKT4tMSlyZXR1cm4hMH1lbHNlIGlmKHR5cGVvZiBhPT0iZnVuY3Rpb24iKXtpZihhLmNhbGwocyxlLHQpKXJldHVybiEwfWVsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiYGZpbHRlcmAgbmVlZHMgdG8gYmUgYSBzdHJpbmcsIGFycmF5LCBvciBmdW5jdGlvbiIpfWZ1bmN0aW9uIHRIYShzKXt2YXIgZT1zLmVsZW1lbnQsdD1zLmlzQmxvY2ssYT1zLmlzVm9pZCxyPXMuaXNQcmV8fGZ1bmN0aW9uKGMpe3JldHVybiBjLm5vZGVOYW1lPT09IlBSRSJ9O2lmKCEoIWUuZmlyc3RDaGlsZHx8cihlKSkpe2Zvcih2YXIgbj1udWxsLG89ITEsbD1udWxsLHA9Y3l0KGwsZSxyKTtwIT09ZTspe2lmKHAubm9kZVR5cGU9PT0zfHxwLm5vZGVUeXBlPT09NCl7dmFyIGQ9cC5kYXRhLnJlcGxhY2UoL1sgXHJcblx0XSsvZywiICIpO2lmKCghbnx8LyAkLy50ZXN0KG4uZGF0YSkpJiYhbyYmZFswXT09PSIgIiYmKGQ9ZC5zdWJzdHIoMSkpLCFkKXtwPXc2ZShwKTtjb250aW51ZX1wLmRhdGE9ZCxuPXB9ZWxzZSBpZihwLm5vZGVUeXBlPT09MSl0KHApfHxwLm5vZGVOYW1lPT09IkJSIj8obiYmKG4uZGF0YT1uLmRhdGEucmVwbGFjZSgvICQvLCIiKSksbj1udWxsLG89ITEpOmEocCl8fHIocCk/KG49bnVsbCxvPSEwKTpuJiYobz0hMSk7ZWxzZXtwPXc2ZShwKTtjb250aW51ZX12YXIgdT1jeXQobCxwLHIpO2w9cCxwPXV9biYmKG4uZGF0YT1uLmRhdGEucmVwbGFjZSgvICQvLCIiKSxuLmRhdGF8fHc2ZShuKSl9fWZ1bmN0aW9uIHc2ZShzKXt2YXIgZT1zLm5leHRTaWJsaW5nfHxzLnBhcmVudE5vZGU7cmV0dXJuIHMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzKSxlfWZ1bmN0aW9uIGN5dChzLGUsdCl7cmV0dXJuIHMmJnMucGFyZW50Tm9kZT09PWV8fHQoZSk/ZS5uZXh0U2libGluZ3x8ZS5wYXJlbnROb2RlOmUuZmlyc3RDaGlsZHx8ZS5uZXh0U2libGluZ3x8ZS5wYXJlbnROb2RlfWZ1bmN0aW9uIGFIYSgpe3ZhciBzPWs2ZS5ET01QYXJzZXIsZT0hMTt0cnl7bmV3IHMoKS5wYXJzZUZyb21TdHJpbmcoIiIsInRleHQvaHRtbCIpJiYoZT0hMCl9Y2F0Y2h7fXJldHVybiBlfWZ1bmN0aW9uIHNIYSgpe3ZhciBzPWkoZnVuY3Rpb24oKXt9LCJQYXJzZXIiKTtyZXR1cm4gaUhhKCk/cy5wcm90b3R5cGUucGFyc2VGcm9tU3RyaW5nPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyB3aW5kb3cuQWN0aXZlWE9iamVjdCgiaHRtbGZpbGUiKTtyZXR1cm4gdC5kZXNpZ25Nb2RlPSJvbiIsdC5vcGVuKCksdC53cml0ZShlKSx0LmNsb3NlKCksdH06cy5wcm90b3R5cGUucGFyc2VGcm9tU3RyaW5nPWZ1bmN0aW9uKGUpe3ZhciB0PWRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIik7cmV0dXJuIHQub3BlbigpLHQud3JpdGUoZSksdC5jbG9zZSgpLHR9LHN9ZnVuY3Rpb24gaUhhKCl7dmFyIHM9ITE7dHJ5e2RvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIikub3BlbigpfWNhdGNoe2s2ZS5BY3RpdmVYT2JqZWN0JiYocz0hMCl9cmV0dXJuIHN9ZnVuY3Rpb24gb0hhKHMsZSl7dmFyIHQ7aWYodHlwZW9mIHM9PSJzdHJpbmciKXt2YXIgYT1uSGEoKS5wYXJzZUZyb21TdHJpbmcoJzx4LXR1cm5kb3duIGlkPSJ0dXJuZG93bi1yb290Ij4nK3MrIjwveC10dXJuZG93bj4iLCJ0ZXh0L2h0bWwiKTt0PWEuZ2V0RWxlbWVudEJ5SWQoInR1cm5kb3duLXJvb3QiKX1lbHNlIHQ9cy5jbG9uZU5vZGUoITApO3JldHVybiB0SGEoe2VsZW1lbnQ6dCxpc0Jsb2NrOmc2ZSxpc1ZvaWQ6aXl0LGlzUHJlOmUucHJlZm9ybWF0dGVkQ29kZT9sSGE6bnVsbH0pLHR9ZnVuY3Rpb24gbkhhKCl7cmV0dXJuIFM2ZT1TNmV8fG5ldyBySGEsUzZlfWZ1bmN0aW9uIGxIYShzKXtyZXR1cm4gcy5ub2RlTmFtZT09PSJQUkUifHxzLm5vZGVOYW1lPT09IkNPREUifWZ1bmN0aW9uIGNIYShzLGUpe3JldHVybiBzLmlzQmxvY2s9ZzZlKHMpLHMuaXNDb2RlPXMubm9kZU5hbWU9PT0iQ09ERSJ8fHMucGFyZW50Tm9kZS5pc0NvZGUscy5pc0JsYW5rPWRIYShzKSxzLmZsYW5raW5nV2hpdGVzcGFjZT11SGEocyxlKSxzfWZ1bmN0aW9uIGRIYShzKXtyZXR1cm4haXl0KHMpJiYhWEJhKHMpJiYvXlxzKiQvaS50ZXN0KHMudGV4dENvbnRlbnQpJiYhWkJhKHMpJiYhUUJhKHMpfWZ1bmN0aW9uIHVIYShzLGUpe2lmKHMuaXNCbG9ja3x8ZS5wcmVmb3JtYXR0ZWRDb2RlJiZzLmlzQ29kZSlyZXR1cm57bGVhZGluZzoiIix0cmFpbGluZzoiIn07dmFyIHQ9cEhhKHMudGV4dENvbnRlbnQpO3JldHVybiB0LmxlYWRpbmdBc2NpaSYmZHl0KCJsZWZ0IixzLGUpJiYodC5sZWFkaW5nPXQubGVhZGluZ05vbkFzY2lpKSx0LnRyYWlsaW5nQXNjaWkmJmR5dCgicmlnaHQiLHMsZSkmJih0LnRyYWlsaW5nPXQudHJhaWxpbmdOb25Bc2NpaSkse2xlYWRpbmc6dC5sZWFkaW5nLHRyYWlsaW5nOnQudHJhaWxpbmd9fWZ1bmN0aW9uIHBIYShzKXt2YXIgZT1zLm1hdGNoKC9eKChbIFx0XHJcbl0qKShccyopKSg/Oig/PVxTKVtcc1xTXSpcUyk/KChccyo/KShbIFx0XHJcbl0qKSkkLyk7cmV0dXJue2xlYWRpbmc6ZVsxXSxsZWFkaW5nQXNjaWk6ZVsyXSxsZWFkaW5nTm9uQXNjaWk6ZVszXSx0cmFpbGluZzplWzRdLHRyYWlsaW5nTm9uQXNjaWk6ZVs1XSx0cmFpbGluZ0FzY2lpOmVbNl19fWZ1bmN0aW9uIGR5dChzLGUsdCl7dmFyIGEscixuO3JldHVybiBzPT09ImxlZnQiPyhhPWUucHJldmlvdXNTaWJsaW5nLHI9LyAkLyk6KGE9ZS5uZXh0U2libGluZyxyPS9eIC8pLGEmJihhLm5vZGVUeXBlPT09Mz9uPXIudGVzdChhLm5vZGVWYWx1ZSk6dC5wcmVmb3JtYXR0ZWRDb2RlJiZhLm5vZGVOYW1lPT09IkNPREUiP249ITE6YS5ub2RlVHlwZT09PTEmJiFnNmUoYSkmJihuPXIudGVzdChhLnRleHRDb250ZW50KSkpLG59ZnVuY3Rpb24gYWgocyl7aWYoISh0aGlzIGluc3RhbmNlb2YgYWgpKXJldHVybiBuZXcgYWgocyk7dmFyIGU9e3J1bGVzOnRuLGhlYWRpbmdTdHlsZToic2V0ZXh0IixocjoiKiAqICoiLGJ1bGxldExpc3RNYXJrZXI6IioiLGNvZGVCbG9ja1N0eWxlOiJpbmRlbnRlZCIsZmVuY2U6ImBgYCIsZW1EZWxpbWl0ZXI6Il8iLHN0cm9uZ0RlbGltaXRlcjoiKioiLGxpbmtTdHlsZToiaW5saW5lZCIsbGlua1JlZmVyZW5jZVN0eWxlOiJmdWxsIixicjoiICAiLHByZWZvcm1hdHRlZENvZGU6ITEsYmxhbmtSZXBsYWNlbWVudDppKGZ1bmN0aW9uKHQsYSl7cmV0dXJuIGEuaXNCbG9jaz9gCgpgOiIifSwiYmxhbmtSZXBsYWNlbWVudCIpLGtlZXBSZXBsYWNlbWVudDppKGZ1bmN0aW9uKHQsYSl7cmV0dXJuIGEuaXNCbG9jaz9gCgpgK2Eub3V0ZXJIVE1MK2AKCmA6YS5vdXRlckhUTUx9LCJrZWVwUmVwbGFjZW1lbnQiKSxkZWZhdWx0UmVwbGFjZW1lbnQ6aShmdW5jdGlvbih0LGEpe3JldHVybiBhLmlzQmxvY2s/YAoKYCt0K2AKCmA6dH0sImRlZmF1bHRSZXBsYWNlbWVudCIpfTt0aGlzLm9wdGlvbnM9S0JhKHt9LGUscyksdGhpcy5ydWxlcz1uZXcgbHl0KHRoaXMub3B0aW9ucyl9ZnVuY3Rpb24gdXl0KHMpe3ZhciBlPXRoaXM7cmV0dXJuIGhIYS5jYWxsKHMuY2hpbGROb2RlcyxmdW5jdGlvbih0LGEpe2E9bmV3IGNIYShhLGUub3B0aW9ucyk7dmFyIHI9IiI7cmV0dXJuIGEubm9kZVR5cGU9PT0zP3I9YS5pc0NvZGU/YS5ub2RlVmFsdWU6ZS5lc2NhcGUoYS5ub2RlVmFsdWUpOmEubm9kZVR5cGU9PT0xJiYocj1tSGEuY2FsbChlLGEpKSxweXQodCxyKX0sIiIpfWZ1bmN0aW9uIGZIYShzKXt2YXIgZT10aGlzO3JldHVybiB0aGlzLnJ1bGVzLmZvckVhY2goZnVuY3Rpb24odCl7dHlwZW9mIHQuYXBwZW5kPT0iZnVuY3Rpb24iJiYocz1weXQocyx0LmFwcGVuZChlLm9wdGlvbnMpKSl9KSxzLnJlcGxhY2UoL15bXHRcclxuXSsvLCIiKS5yZXBsYWNlKC9bXHRcclxuXHNdKyQvLCIiKX1mdW5jdGlvbiBtSGEocyl7dmFyIGU9dGhpcy5ydWxlcy5mb3JOb2RlKHMpLHQ9dXl0LmNhbGwodGhpcyxzKSxhPXMuZmxhbmtpbmdXaGl0ZXNwYWNlO3JldHVybihhLmxlYWRpbmd8fGEudHJhaWxpbmcpJiYodD10LnRyaW0oKSksYS5sZWFkaW5nK2UucmVwbGFjZW1lbnQodCxzLHRoaXMub3B0aW9ucykrYS50cmFpbGluZ31mdW5jdGlvbiBweXQocyxlKXt2YXIgdD10eXQocyksYT1leXQoZSkscj1NYXRoLm1heChzLmxlbmd0aC10Lmxlbmd0aCxlLmxlbmd0aC1hLmxlbmd0aCksbj1gCgpgLnN1YnN0cmluZygwLHIpO3JldHVybiB0K24rYX1mdW5jdGlvbiBnSGEocyl7cmV0dXJuIHMhPW51bGwmJih0eXBlb2Ygcz09InN0cmluZyJ8fHMubm9kZVR5cGUmJihzLm5vZGVUeXBlPT09MXx8cy5ub2RlVHlwZT09PTl8fHMubm9kZVR5cGU9PT0xMSkpfXZhciBZQmEsc3l0LHJ5dCxKQmEsdG4sazZlLHJIYSxTNmUsaEhhLGh5dD1nKCgpPT57aShLQmEsImV4dGVuZCIpO2kobTZlLCJyZXBlYXQiKTtpKGV5dCwidHJpbUxlYWRpbmdOZXdsaW5lcyIpO2kodHl0LCJ0cmltVHJhaWxpbmdOZXdsaW5lcyIpO2koYXl0LCJ0cmltTmV3bGluZXMiKTtZQmE9WyJBRERSRVNTIiwiQVJUSUNMRSIsIkFTSURFIiwiQVVESU8iLCJCTE9DS1FVT1RFIiwiQk9EWSIsIkNBTlZBUyIsIkNFTlRFUiIsIkREIiwiRElSIiwiRElWIiwiREwiLCJEVCIsIkZJRUxEU0VUIiwiRklHQ0FQVElPTiIsIkZJR1VSRSIsIkZPT1RFUiIsIkZPUk0iLCJGUkFNRVNFVCIsIkgxIiwiSDIiLCJIMyIsIkg0IiwiSDUiLCJINiIsIkhFQURFUiIsIkhHUk9VUCIsIkhSIiwiSFRNTCIsIklTSU5ERVgiLCJMSSIsIk1BSU4iLCJNRU5VIiwiTkFWIiwiTk9GUkFNRVMiLCJOT1NDUklQVCIsIk9MIiwiT1VUUFVUIiwiUCIsIlBSRSIsIlNFQ1RJT04iLCJUQUJMRSIsIlRCT0RZIiwiVEQiLCJURk9PVCIsIlRIIiwiVEhFQUQiLCJUUiIsIlVMIl07aShnNmUsImlzQmxvY2siKTtzeXQ9WyJBUkVBIiwiQkFTRSIsIkJSIiwiQ09MIiwiQ09NTUFORCIsIkVNQkVEIiwiSFIiLCJJTUciLCJJTlBVVCIsIktFWUdFTiIsIkxJTksiLCJNRVRBIiwiUEFSQU0iLCJTT1VSQ0UiLCJUUkFDSyIsIldCUiJdO2koaXl0LCJpc1ZvaWQiKTtpKFpCYSwiaGFzVm9pZCIpO3J5dD1bIkEiLCJUQUJMRSIsIlRIRUFEIiwiVEJPRFkiLCJURk9PVCIsIlRIIiwiVEQiLCJJRlJBTUUiLCJTQ1JJUFQiLCJBVURJTyIsIlZJREVPIl07aShYQmEsImlzTWVhbmluZ2Z1bFdoZW5CbGFuayIpO2koUUJhLCJoYXNNZWFuaW5nZnVsV2hlbkJsYW5rIik7aShiNmUsImlzIik7aShveXQsImhhcyIpO0pCYT1bWy9cXC9nLCJcXFxcIl0sWy9cKi9nLCJcXCoiXSxbL14tL2csIlxcLSJdLFsvXlwrIC9nLCJcXCsgIl0sWy9eKD0rKS9nLCJcXCQxIl0sWy9eKCN7MSw2fSkgL2csIlxcJDEgIl0sWy9gL2csIlxcYCJdLFsvXn5+fi9nLCJcXH5+fiJdLFsvXFsvZywiXFxbIl0sWy9cXS9nLCJcXF0iXSxbL14+L2csIlxcPiJdLFsvXy9nLCJcXF8iXSxbL14oXGQrKVwuIC9nLCIkMVxcLiAiXV07aShueXQsImVzY2FwZU1hcmtkb3duIik7dG49e307dG4ucGFyYWdyYXBoPXtmaWx0ZXI6InAiLHJlcGxhY2VtZW50OmkoZnVuY3Rpb24ocyl7cmV0dXJuYAoKYCtzK2AKCmB9LCJyZXBsYWNlbWVudCIpfSx0bi5saW5lQnJlYWs9e2ZpbHRlcjoiYnIiLHJlcGxhY2VtZW50OmkoZnVuY3Rpb24ocyxlLHQpe3JldHVybiB0LmJyK2AKYH0sInJlcGxhY2VtZW50Iil9LHRuLmhlYWRpbmc9e2ZpbHRlcjpbImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiJdLHJlcGxhY2VtZW50OmkoZnVuY3Rpb24ocyxlLHQpe3ZhciBhPU51bWJlcihlLm5vZGVOYW1lLmNoYXJBdCgxKSk7aWYodC5oZWFkaW5nU3R5bGU9PT0ic2V0ZXh0IiYmYTwzKXt2YXIgcj1tNmUoYT09PTE/Ij0iOiItIixzLmxlbmd0aCk7cmV0dXJuYAoKYCtzK2AKYCtyK2AKCmB9ZWxzZSByZXR1cm5gCgpgK202ZSgiIyIsYSkrIiAiK3MrYAoKYH0sInJlcGxhY2VtZW50Iil9LHRuLmJsb2NrcXVvdGU9e2ZpbHRlcjoiYmxvY2txdW90ZSIscmVwbGFjZW1lbnQ6aShmdW5jdGlvbihzKXtyZXR1cm4gcz1heXQocykucmVwbGFjZSgvXi9nbSwiPiAiKSxgCgpgK3MrYAoKYH0sInJlcGxhY2VtZW50Iil9LHRuLmxpc3Q9e2ZpbHRlcjpbInVsIiwib2wiXSxyZXBsYWNlbWVudDppKGZ1bmN0aW9uKHMsZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3JldHVybiB0Lm5vZGVOYW1lPT09IkxJIiYmdC5sYXN0RWxlbWVudENoaWxkPT09ZT9gCmArczpgCgpgK3MrYAoKYH0sInJlcGxhY2VtZW50Iil9LHRuLmxpc3RJdGVtPXtmaWx0ZXI6ImxpIixyZXBsYWNlbWVudDppKGZ1bmN0aW9uKHMsZSx0KXt2YXIgYT10LmJ1bGxldExpc3RNYXJrZXIrIiAgICIscj1lLnBhcmVudE5vZGU7aWYoci5ub2RlTmFtZT09PSJPTCIpe3ZhciBuPXIuZ2V0QXR0cmlidXRlKCJzdGFydCIpLG89QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChyLmNoaWxkcmVuLGUpO2E9KG4/TnVtYmVyKG4pK286bysxKSsiLiAgIn12YXIgbD0vXG4kLy50ZXN0KHMpO3JldHVybiBzPWF5dChzKSsobD9gCmA6IiIpLHM9cy5yZXBsYWNlKC9cbi9nbSxgCmArIiAiLnJlcGVhdChhLmxlbmd0aCkpLGErcysoZS5uZXh0U2libGluZz9gCmA6IiIpfSwicmVwbGFjZW1lbnQiKX0sdG4uaW5kZW50ZWRDb2RlQmxvY2s9e2ZpbHRlcjppKGZ1bmN0aW9uKHMsZSl7cmV0dXJuIGUuY29kZUJsb2NrU3R5bGU9PT0iaW5kZW50ZWQiJiZzLm5vZGVOYW1lPT09IlBSRSImJnMuZmlyc3RDaGlsZCYmcy5maXJzdENoaWxkLm5vZGVOYW1lPT09IkNPREUifSwiZmlsdGVyIikscmVwbGFjZW1lbnQ6aShmdW5jdGlvbihzLGUsdCl7cmV0dXJuYAoKICAgIGArZS5maXJzdENoaWxkLnRleHRDb250ZW50LnJlcGxhY2UoL1xuL2csYAogICAgYCkrYAoKYH0sInJlcGxhY2VtZW50Iil9LHRuLmZlbmNlZENvZGVCbG9jaz17ZmlsdGVyOmkoZnVuY3Rpb24ocyxlKXtyZXR1cm4gZS5jb2RlQmxvY2tTdHlsZT09PSJmZW5jZWQiJiZzLm5vZGVOYW1lPT09IlBSRSImJnMuZmlyc3RDaGlsZCYmcy5maXJzdENoaWxkLm5vZGVOYW1lPT09IkNPREUifSwiZmlsdGVyIikscmVwbGFjZW1lbnQ6aShmdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWUuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiLHI9KGEubWF0Y2goL2xhbmd1YWdlLShcUyspLyl8fFtudWxsLCIiXSlbMV0sbj1lLmZpcnN0Q2hpbGQudGV4dENvbnRlbnQsbz10LmZlbmNlLmNoYXJBdCgwKSxsPTMscD1uZXcgUmVnRXhwKCJeIitvKyJ7Myx9IiwiZ20iKSxkO2Q9cC5leGVjKG4pOylkWzBdLmxlbmd0aD49bCYmKGw9ZFswXS5sZW5ndGgrMSk7dmFyIHU9bTZlKG8sbCk7cmV0dXJuYAoKYCt1K3IrYApgK24ucmVwbGFjZSgvXG4kLywiIikrYApgK3UrYAoKYH0sInJlcGxhY2VtZW50Iil9LHRuLmhvcml6b250YWxSdWxlPXtmaWx0ZXI6ImhyIixyZXBsYWNlbWVudDppKGZ1bmN0aW9uKHMsZSx0KXtyZXR1cm5gCgpgK3QuaHIrYAoKYH0sInJlcGxhY2VtZW50Iil9LHRuLmlubGluZUxpbms9e2ZpbHRlcjppKGZ1bmN0aW9uKHMsZSl7cmV0dXJuIGUubGlua1N0eWxlPT09ImlubGluZWQiJiZzLm5vZGVOYW1lPT09IkEiJiZzLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSwiZmlsdGVyIikscmVwbGFjZW1lbnQ6aShmdW5jdGlvbihzLGUpe3ZhciB0PXY2ZShlLmdldEF0dHJpYnV0ZSgiaHJlZiIpKSxhPXg2ZShucmUoZS5nZXRBdHRyaWJ1dGUoInRpdGxlIikpKSxyPWE/JyAiJythKyciJzoiIjtyZXR1cm4iWyIrcysiXSgiK3QrcisiKSJ9LCJyZXBsYWNlbWVudCIpfSx0bi5yZWZlcmVuY2VMaW5rPXtmaWx0ZXI6aShmdW5jdGlvbihzLGUpe3JldHVybiBlLmxpbmtTdHlsZT09PSJyZWZlcmVuY2VkIiYmcy5ub2RlTmFtZT09PSJBIiYmcy5nZXRBdHRyaWJ1dGUoImhyZWYiKX0sImZpbHRlciIpLHJlcGxhY2VtZW50OmkoZnVuY3Rpb24ocyxlLHQpe3ZhciBhPXY2ZShlLmdldEF0dHJpYnV0ZSgiaHJlZiIpKSxyPW5yZShlLmdldEF0dHJpYnV0ZSgidGl0bGUiKSk7ciYmKHI9JyAiJyt4NmUocikrJyInKTt2YXIgbixvO3N3aXRjaCh0LmxpbmtSZWZlcmVuY2VTdHlsZSl7Y2FzZSJjb2xsYXBzZWQiOm49IlsiK3MrIl1bXSIsbz0iWyIrcysiXTogIithK3I7YnJlYWs7Y2FzZSJzaG9ydGN1dCI6bj0iWyIrcysiXSIsbz0iWyIrcysiXTogIithK3I7YnJlYWs7ZGVmYXVsdDp2YXIgbD10aGlzLnJlZmVyZW5jZXMubGVuZ3RoKzE7bj0iWyIrcysiXVsiK2wrIl0iLG89IlsiK2wrIl06ICIrYStyfXJldHVybiB0aGlzLnJlZmVyZW5jZXMucHVzaChvKSxufSwicmVwbGFjZW1lbnQiKSxyZWZlcmVuY2VzOltdLGFwcGVuZDppKGZ1bmN0aW9uKHMpe3ZhciBlPSIiO3JldHVybiB0aGlzLnJlZmVyZW5jZXMubGVuZ3RoJiYoZT1gCgpgK3RoaXMucmVmZXJlbmNlcy5qb2luKGAKYCkrYAoKYCx0aGlzLnJlZmVyZW5jZXM9W10pLGV9LCJhcHBlbmQiKX0sdG4uZW1waGFzaXM9e2ZpbHRlcjpbImVtIiwiaSJdLHJlcGxhY2VtZW50OmkoZnVuY3Rpb24ocyxlLHQpe3JldHVybiBzLnRyaW0oKT90LmVtRGVsaW1pdGVyK3MrdC5lbURlbGltaXRlcjoiIn0sInJlcGxhY2VtZW50Iil9LHRuLnN0cm9uZz17ZmlsdGVyOlsic3Ryb25nIiwiYiJdLHJlcGxhY2VtZW50OmkoZnVuY3Rpb24ocyxlLHQpe3JldHVybiBzLnRyaW0oKT90LnN0cm9uZ0RlbGltaXRlcitzK3Quc3Ryb25nRGVsaW1pdGVyOiIifSwicmVwbGFjZW1lbnQiKX0sdG4uY29kZT17ZmlsdGVyOmkoZnVuY3Rpb24ocyl7dmFyIGU9cy5wcmV2aW91c1NpYmxpbmd8fHMubmV4dFNpYmxpbmcsdD1zLnBhcmVudE5vZGUubm9kZU5hbWU9PT0iUFJFIiYmIWU7cmV0dXJuIHMubm9kZU5hbWU9PT0iQ09ERSImJiF0fSwiZmlsdGVyIikscmVwbGFjZW1lbnQ6aShmdW5jdGlvbihzKXtpZighcylyZXR1cm4iIjtzPXMucmVwbGFjZSgvXHI/XG58XHIvZywiICIpO2Zvcih2YXIgZT0vXmB8XiAuKj9bXiBdLiogJHxgJC8udGVzdChzKT8iICI6IiIsdD0iYCIsYT1zLm1hdGNoKC9gKy9nbSl8fFtdO2EuaW5kZXhPZih0KSE9PS0xOyl0PXQrImAiO3JldHVybiB0K2UrcytlK3R9LCJyZXBsYWNlbWVudCIpfSx0bi5pbWFnZT17ZmlsdGVyOiJpbWciLHJlcGxhY2VtZW50OmkoZnVuY3Rpb24ocyxlKXt2YXIgdD1ueXQobnJlKGUuZ2V0QXR0cmlidXRlKCJhbHQiKSkpLGE9djZlKGUuZ2V0QXR0cmlidXRlKCJzcmMiKXx8IiIpLHI9bnJlKGUuZ2V0QXR0cmlidXRlKCJ0aXRsZSIpKSxuPXI/JyAiJyt4NmUocikrJyInOiIiO3JldHVybiBhPyIhWyIrdCsiXSgiK2ErbisiKSI6IiJ9LCJyZXBsYWNlbWVudCIpfTtpKG5yZSwiY2xlYW5BdHRyaWJ1dGUiKTtpKHY2ZSwiZXNjYXBlTGlua0Rlc3RpbmF0aW9uIik7aSh4NmUsImVzY2FwZUxpbmtUaXRsZSIpO2kobHl0LCJSdWxlcyIpLGx5dC5wcm90b3R5cGU9e2FkZDppKGZ1bmN0aW9uKHMsZSl7dGhpcy5hcnJheS51bnNoaWZ0KGUpfSwiYWRkIiksa2VlcDppKGZ1bmN0aW9uKHMpe3RoaXMuX2tlZXAudW5zaGlmdCh7ZmlsdGVyOnMscmVwbGFjZW1lbnQ6dGhpcy5rZWVwUmVwbGFjZW1lbnR9KX0sImtlZXAiKSxyZW1vdmU6aShmdW5jdGlvbihzKXt0aGlzLl9yZW1vdmUudW5zaGlmdCh7ZmlsdGVyOnMscmVwbGFjZW1lbnQ6aShmdW5jdGlvbigpe3JldHVybiIifSwicmVwbGFjZW1lbnQiKX0pfSwicmVtb3ZlIiksZm9yTm9kZTppKGZ1bmN0aW9uKHMpe2lmKHMuaXNCbGFuaylyZXR1cm4gdGhpcy5ibGFua1J1bGU7dmFyIGU7cmV0dXJuKGU9eTZlKHRoaXMuYXJyYXkscyx0aGlzLm9wdGlvbnMpKXx8KGU9eTZlKHRoaXMuX2tlZXAscyx0aGlzLm9wdGlvbnMpKXx8KGU9eTZlKHRoaXMuX3JlbW92ZSxzLHRoaXMub3B0aW9ucykpP2U6dGhpcy5kZWZhdWx0UnVsZX0sImZvck5vZGUiKSxmb3JFYWNoOmkoZnVuY3Rpb24ocyl7Zm9yKHZhciBlPTA7ZTx0aGlzLmFycmF5Lmxlbmd0aDtlKyspcyh0aGlzLmFycmF5W2VdLGUpfSwiZm9yRWFjaCIpfTtpKHk2ZSwiZmluZFJ1bGUiKTtpKGVIYSwiZmlsdGVyVmFsdWUiKTtpKHRIYSwiY29sbGFwc2VXaGl0ZXNwYWNlIik7aSh3NmUsInJlbW92ZSIpO2koY3l0LCJuZXh0Iik7azZlPXR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp7fTtpKGFIYSwiY2FuUGFyc2VIVE1MTmF0aXZlbHkiKTtpKHNIYSwiY3JlYXRlSFRNTFBhcnNlciIpO2koaUhhLCJzaG91bGRVc2VBY3RpdmVYIik7ckhhPWFIYSgpP2s2ZS5ET01QYXJzZXI6c0hhKCk7aShvSGEsIlJvb3ROb2RlIik7aShuSGEsImh0bWxQYXJzZXIiKTtpKGxIYSwiaXNQcmVPckNvZGUiKTtpKGNIYSwiTm9kZSIpO2koZEhhLCJpc0JsYW5rIik7aSh1SGEsImZsYW5raW5nV2hpdGVzcGFjZSIpO2kocEhhLCJlZGdlV2hpdGVzcGFjZSIpO2koZHl0LCJpc0ZsYW5rZWRCeVdoaXRlc3BhY2UiKTtoSGE9QXJyYXkucHJvdG90eXBlLnJlZHVjZTtpKGFoLCJUdXJuZG93blNlcnZpY2UiKSxhaC5wcm90b3R5cGU9e3R1cm5kb3duOmkoZnVuY3Rpb24ocyl7aWYoIWdIYShzKSl0aHJvdyBuZXcgVHlwZUVycm9yKHMrIiBpcyBub3QgYSBzdHJpbmcsIG9yIGFuIGVsZW1lbnQvZG9jdW1lbnQvZnJhZ21lbnQgbm9kZS4iKTtpZihzPT09IiIpcmV0dXJuIiI7dmFyIGU9dXl0LmNhbGwodGhpcyxuZXcgb0hhKHMsdGhpcy5vcHRpb25zKSk7cmV0dXJuIGZIYS5jYWxsKHRoaXMsZSl9LCJ0dXJuZG93biIpLHVzZTppKGZ1bmN0aW9uKHMpe2lmKEFycmF5LmlzQXJyYXkocykpZm9yKHZhciBlPTA7ZTxzLmxlbmd0aDtlKyspdGhpcy51c2Uoc1tlXSk7ZWxzZSBpZih0eXBlb2Ygcz09ImZ1bmN0aW9uIilzKHRoaXMpO2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigicGx1Z2luIG11c3QgYmUgYSBGdW5jdGlvbiBvciBhbiBBcnJheSBvZiBGdW5jdGlvbnMiKTtyZXR1cm4gdGhpc30sInVzZSIpLGFkZFJ1bGU6aShmdW5jdGlvbihzLGUpe3JldHVybiB0aGlzLnJ1bGVzLmFkZChzLGUpLHRoaXN9LCJhZGRSdWxlIiksa2VlcDppKGZ1bmN0aW9uKHMpe3JldHVybiB0aGlzLnJ1bGVzLmtlZXAocyksdGhpc30sImtlZXAiKSxyZW1vdmU6aShmdW5jdGlvbihzKXtyZXR1cm4gdGhpcy5ydWxlcy5yZW1vdmUocyksdGhpc30sInJlbW92ZSIpLGVzY2FwZTppKGZ1bmN0aW9uKHMpe3JldHVybiBueXQocyl9LCJlc2NhcGUiKX07aSh1eXQsInByb2Nlc3MiKTtpKGZIYSwicG9zdFByb2Nlc3MiKTtpKG1IYSwicmVwbGFjZW1lbnRGb3JOb2RlIik7aShweXQsImpvaW4iKTtpKGdIYSwiY2FuQ29udmVydCIpfSk7dmFyICQ2ZT17fTt5dCgkNmUse2dmbTooKT0+Z3l0LGhpZ2hsaWdodGVkQ29kZUJsb2NrOigpPT5NNmUsc3RyaWtldGhyb3VnaDooKT0+ejZlLHRhYmxlczooKT0+QzZlLHRhc2tMaXN0SXRlbXM6KCk9PlQ2ZX0pO2Z1bmN0aW9uIE02ZShzKXtzLmFkZFJ1bGUoImhpZ2hsaWdodGVkQ29kZUJsb2NrIix7ZmlsdGVyOmkoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5maXJzdENoaWxkO3JldHVybiBlLm5vZGVOYW1lPT09IkRJViImJmZ5dC50ZXN0KGUuY2xhc3NOYW1lKSYmdCYmdC5ub2RlTmFtZT09PSJQUkUifSwiZmlsdGVyIikscmVwbGFjZW1lbnQ6aShmdW5jdGlvbihlLHQsYSl7dmFyIHI9dC5jbGFzc05hbWV8fCIiLG49KHIubWF0Y2goZnl0KXx8W251bGwsIiJdKVsxXTtyZXR1cm5gCgpgK2EuZmVuY2UrbitgCmArdC5maXJzdENoaWxkLnRleHRDb250ZW50K2AKYCthLmZlbmNlK2AKCmB9LCJyZXBsYWNlbWVudCIpfSl9ZnVuY3Rpb24gejZlKHMpe3MuYWRkUnVsZSgic3RyaWtldGhyb3VnaCIse2ZpbHRlcjpbImRlbCIsInMiLCJzdHJpa2UiXSxyZXBsYWNlbWVudDppKGZ1bmN0aW9uKGUpe3JldHVybiJ+IitlKyJ+In0sInJlcGxhY2VtZW50Iil9KX1mdW5jdGlvbiBfNmUocyl7dmFyIGU9cy5wYXJlbnROb2RlO3JldHVybiBlLm5vZGVOYW1lPT09IlRIRUFEInx8ZS5maXJzdENoaWxkPT09cyYmKGUubm9kZU5hbWU9PT0iVEFCTEUifHx4SGEoZSkpJiZ2SGEuY2FsbChzLmNoaWxkTm9kZXMsZnVuY3Rpb24odCl7cmV0dXJuIHQubm9kZU5hbWU9PT0iVEgifSl9ZnVuY3Rpb24geEhhKHMpe3ZhciBlPXMucHJldmlvdXNTaWJsaW5nO3JldHVybiBzLm5vZGVOYW1lPT09IlRCT0RZIiYmKCFlfHxlLm5vZGVOYW1lPT09IlRIRUFEIiYmL15ccyokL2kudGVzdChlLnRleHRDb250ZW50KSl9ZnVuY3Rpb24gbXl0KHMsZSl7dmFyIHQ9YkhhLmNhbGwoZS5wYXJlbnROb2RlLmNoaWxkTm9kZXMsZSksYT0iICI7cmV0dXJuIHQ9PT0wJiYoYT0ifCAiKSxhK3MrIiB8In1mdW5jdGlvbiBDNmUocyl7cy5rZWVwKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5vZGVOYW1lPT09IlRBQkxFIiYmIV82ZSh0LnJvd3NbMF0pfSk7Zm9yKHZhciBlIGluIGRiKXMuYWRkUnVsZShlLGRiW2VdKX1mdW5jdGlvbiBUNmUocyl7cy5hZGRSdWxlKCJ0YXNrTGlzdEl0ZW1zIix7ZmlsdGVyOmkoZnVuY3Rpb24oZSl7cmV0dXJuIGUudHlwZT09PSJjaGVja2JveCImJmUucGFyZW50Tm9kZS5ub2RlTmFtZT09PSJMSSJ9LCJmaWx0ZXIiKSxyZXBsYWNlbWVudDppKGZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQuY2hlY2tlZD8iW3hdIjoiWyBdIikrIiAifSwicmVwbGFjZW1lbnQiKX0pfWZ1bmN0aW9uIGd5dChzKXtzLnVzZShbTTZlLHo2ZSxDNmUsVDZlXSl9dmFyIGZ5dCxiSGEsdkhhLGRiLGJ5dD1nKCgpPT57Znl0PS9oaWdobGlnaHQtKD86dGV4dHxzb3VyY2UpLShbYS16MC05XSspLztpKE02ZSwiaGlnaGxpZ2h0ZWRDb2RlQmxvY2siKTtpKHo2ZSwic3RyaWtldGhyb3VnaCIpO2JIYT1BcnJheS5wcm90b3R5cGUuaW5kZXhPZix2SGE9QXJyYXkucHJvdG90eXBlLmV2ZXJ5LGRiPXt9O2RiLnRhYmxlQ2VsbD17ZmlsdGVyOlsidGgiLCJ0ZCJdLHJlcGxhY2VtZW50OmkoZnVuY3Rpb24ocyxlKXtyZXR1cm4gbXl0KHMsZSl9LCJyZXBsYWNlbWVudCIpfSxkYi50YWJsZVJvdz17ZmlsdGVyOiJ0ciIscmVwbGFjZW1lbnQ6aShmdW5jdGlvbihzLGUpe3ZhciB0PSIiLGE9e2xlZnQ6IjotLSIscmlnaHQ6Ii0tOiIsY2VudGVyOiI6LToifTtpZihfNmUoZSkpZm9yKHZhciByPTA7cjxlLmNoaWxkTm9kZXMubGVuZ3RoO3IrKyl7dmFyIG49Ii0tLSIsbz0oZS5jaGlsZE5vZGVzW3JdLmdldEF0dHJpYnV0ZSgiYWxpZ24iKXx8IiIpLnRvTG93ZXJDYXNlKCk7byYmKG49YVtvXXx8biksdCs9bXl0KG4sZS5jaGlsZE5vZGVzW3JdKX1yZXR1cm5gCmArcysodD9gCmArdDoiIil9LCJyZXBsYWNlbWVudCIpfSxkYi50YWJsZT17ZmlsdGVyOmkoZnVuY3Rpb24ocyl7cmV0dXJuIHMubm9kZU5hbWU9PT0iVEFCTEUiJiZfNmUocy5yb3dzWzBdKX0sImZpbHRlciIpLHJlcGxhY2VtZW50OmkoZnVuY3Rpb24ocyl7cmV0dXJuIHM9cy5yZXBsYWNlKGAKCmAsYApgKSxgCgpgK3MrYAoKYH0sInJlcGxhY2VtZW50Iil9LGRiLnRhYmxlU2VjdGlvbj17ZmlsdGVyOlsidGhlYWQiLCJ0Ym9keSIsInRmb290Il0scmVwbGFjZW1lbnQ6aShmdW5jdGlvbihzKXtyZXR1cm4gc30sInJlcGxhY2VtZW50Iil9O2koXzZlLCJpc0hlYWRpbmdSb3ciKTtpKHhIYSwiaXNGaXJzdFRib2R5Iik7aShteXQsImNlbGwiKTtpKEM2ZSwidGFibGVzIik7aShUNmUsInRhc2tMaXN0SXRlbXMiKTtpKGd5dCwiZ2ZtIil9KTt2YXIgRDZlLEw2ZT1nKCgpPT57aTh0KCk7Ujh0KCk7ajl0KCk7bWJ0KCk7Q2J0KCk7WHh0KCk7Snh0KCk7aHl0KCk7Ynl0KCk7RDZlPSQ2ZX0pO3ZhciB5SGEsbHJlLHh5dD1nKCgpPT57TDZlKCk7eUhhPWkocz0+cy50eXBlPT09InlhbWwiJiYidmFsdWUiaW4gcyYmdHlwZW9mIHMudmFsdWU9PSJzdHJpbmciLCJpc1lhbWxOb2RlIiksbHJlPWNsYXNzIHN7c3RhdGlje2kodGhpcywiTWRQYXJzZWRSZXN1bHQiKX1jb25zdHJ1Y3Rvcigpe3RoaXMub3JpZ2luYWxTdHJpbmc9IiIsdGhpcy50aXRsZT0iIix0aGlzLmh0bWw9IiIsdGhpcy5mcm9udG1hdHRlckRhdGE9e319c3RhdGljIGFzeW5jIGNyZWF0ZUZyb21NYXJrZG93blN0cmluZyhlKXtsZXQgdD1uZXcgcztyZXR1cm4gYXdhaXQgdC51cGRhdGVGcm9tTWFya2Rvd25TdHJpbmcoZSksdH1hc3luYyB1cGRhdGVGcm9tTWFya2Rvd25TdHJpbmcoZSl7dGhpcy5vcmlnaW5hbFN0cmluZz1lO2xldCB0LGE9YXdhaXQgcmsoKS51c2UoYWIpLnVzZSh0YikudXNlKGliLFsieWFtbCIsInRvbWwiXSkudXNlKGNiKS51c2UobGIpLnVzZSgoKT0+cj0+e2xldCBuPXIuY2hpbGRyZW4uZmluZCh5SGEpO24mJih0PW4udmFsdWUpfSkucHJvY2VzcyhlKTt0aGlzLmh0bWw9YS50b1N0cmluZygpLHQ/dGhpcy5mcm9udG1hdHRlckRhdGE9YXdhaXQgdGsueWFtbFN0cmluZ1RvT2JqZWN0KHQpOnRoaXMuZnJvbnRtYXR0ZXJEYXRhPXt9fX19KTt2YXIgJGs9e307eXQoJGsse1NtYXJ0TWFya2Rvd246KCk9PkU2ZX0pO3ZhciBFNmUseXl0PWcoKCk9PntMNmUoKTt4eXQoKTtFNmU9Y2xhc3Mgc3tzdGF0aWN7aSh0aGlzLCJTbWFydE1hcmtkb3duIil9c3RhdGljIGFzeW5jIGVhc3lNYXJrZG93blRvSHRtbChlKXtyZXR1cm4oYXdhaXQgbmV3IHMoKS5nZXRNZFBhcnNlZFJlc3VsdEZyb21NYXJrZG93bihlKSkuaHRtbH1jb25zdHJ1Y3Rvcigpe31hc3luYyBnZXRNZFBhcnNlZFJlc3VsdEZyb21NYXJrZG93bihlKXtyZXR1cm4gYXdhaXQgbHJlLmNyZWF0ZUZyb21NYXJrZG93blN0cmluZyhlKX1odG1sVG9NYXJrZG93bihlKXtsZXQgdD1uZXcgYWgoe2hlYWRpbmdTdHlsZToiYXR4Iixjb2RlQmxvY2tTdHlsZToiZmVuY2VkIn0pO3JldHVybiB0LnVzZShENmUuZ2ZtKSx0LnR1cm5kb3duKGUpfX19KTt2YXIgenl0PXBsKE4xPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShOMSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTjEuUGF0aEVycm9yPU4xLlRva2VuRGF0YT12b2lkIDAsTjEucGFyc2U9QTZlLE4xLmNvbXBpbGU9X0hhLE4xLm1hdGNoPXpIYSxOMS5wYXRoVG9SZWdleHA9U3l0LE4xLnN0cmluZ2lmeT1USGE7dmFyIFA2ZT0iLyIsSTZlPWkocz0+cywiTk9PUF9WQUxVRSIpLHdIYT0vXlskX1xwe0lEX1N0YXJ0fV0kL3Usd3l0PS9eWyRcdTIwMGNcdTIwMGRccHtJRF9Db250aW51ZX1dJC91LGtIYT0vXlskX1xwe0lEX1N0YXJ0fV1bJFx1MjAwY1x1MjAwZFxwe0lEX0NvbnRpbnVlfV0qJC91O2Z1bmN0aW9uIFNIYShzKXtyZXR1cm4gcy5yZXBsYWNlKC9be30oKVxbXF0rPyE6KlxcXS9nLCJcXCQmIil9aShTSGEsImVzY2FwZVRleHQiKTtmdW5jdGlvbiBBMChzKXtyZXR1cm4gcy5yZXBsYWNlKC9bLisqP14ke30oKVtcXXwvXFxdL2csIlxcJCYiKX1pKEEwLCJlc2NhcGUiKTt2YXIgY3JlPWNsYXNze3N0YXRpY3tpKHRoaXMsIlRva2VuRGF0YSIpfWNvbnN0cnVjdG9yKGUsdCl7dGhpcy50b2tlbnM9ZSx0aGlzLm9yaWdpbmFsUGF0aD10fX07TjEuVG9rZW5EYXRhPWNyZTt2YXIga2Q9Y2xhc3MgZXh0ZW5kcyBUeXBlRXJyb3J7c3RhdGlje2kodGhpcywiUGF0aEVycm9yIil9Y29uc3RydWN0b3IoZSx0KXtsZXQgYT1lO3QmJihhKz1gOiAke3R9YCksYSs9IjsgdmlzaXQgaHR0cHM6Ly9naXQubmV3L3BhdGhUb1JlZ2V4cEVycm9yIGZvciBpbmZvIixzdXBlcihhKSx0aGlzLm9yaWdpbmFsUGF0aD10fX07TjEuUGF0aEVycm9yPWtkO2Z1bmN0aW9uIEE2ZShzLGU9e30pe2xldHtlbmNvZGVQYXRoOnQ9STZlfT1lLGE9Wy4uLnNdLHI9MDtmdW5jdGlvbiBuKG8pe2xldCBsPVtdLHA9IiI7ZnVuY3Rpb24gZCgpe3AmJihsLnB1c2goe3R5cGU6InRleHQiLHZhbHVlOnQocCl9KSxwPSIiKX1mb3IoaShkLCJ3cml0ZVBhdGgiKTtyPGEubGVuZ3RoOyl7bGV0IHU9YVtyKytdO2lmKHU9PT1vKXJldHVybiBkKCksbDtpZih1PT09IlxcIil7aWYocj09PWEubGVuZ3RoKXRocm93IG5ldyBrZChgVW5leHBlY3RlZCBlbmQgYWZ0ZXIgXFwgYXQgaW5kZXggJHtyfWAscyk7cCs9YVtyKytdO2NvbnRpbnVlfWlmKHU9PT0iOiJ8fHU9PT0iKiIpe2xldCBjPXU9PT0iOiI/InBhcmFtIjoid2lsZGNhcmQiLGI9IiI7aWYod0hhLnRlc3QoYVtyXSkpZG8gYis9YVtyKytdO3doaWxlKHd5dC50ZXN0KGFbcl0pKTtlbHNlIGlmKGFbcl09PT0nIicpe2xldCB2PXI7Zm9yKDtyPGEubGVuZ3RoOyl7aWYoYVsrK3JdPT09JyInKXtyKyssdj0wO2JyZWFrfWFbcl09PT0iXFwiJiZyKyssYis9YVtyXX1pZih2KXRocm93IG5ldyBrZChgVW50ZXJtaW5hdGVkIHF1b3RlIGF0IGluZGV4ICR7dn1gLHMpfWlmKCFiKXRocm93IG5ldyBrZChgTWlzc2luZyBwYXJhbWV0ZXIgbmFtZSBhdCBpbmRleCAke3J9YCxzKTtkKCksbC5wdXNoKHt0eXBlOmMsbmFtZTpifSk7Y29udGludWV9aWYodT09PSJ7Iil7ZCgpLGwucHVzaCh7dHlwZToiZ3JvdXAiLHRva2VuczpuKCJ9Iil9KTtjb250aW51ZX1pZih1PT09In0ifHx1PT09IigifHx1PT09IikifHx1PT09IlsifHx1PT09Il0ifHx1PT09IisifHx1PT09Ij8ifHx1PT09IiEiKXRocm93IG5ldyBrZChgVW5leHBlY3RlZCAke3V9IGF0IGluZGV4ICR7ci0xfWAscyk7cCs9dX1pZihvKXRocm93IG5ldyBrZChgVW5leHBlY3RlZCBlbmQgYXQgaW5kZXggJHtyfSwgZXhwZWN0ZWQgJHtvfWAscyk7cmV0dXJuIGQoKSxsfXJldHVybiBpKG4sImNvbnN1bWVVbnRpbCIpLG5ldyBjcmUobigiIikscyl9aShBNmUsInBhcnNlIik7ZnVuY3Rpb24gX0hhKHMsZT17fSl7bGV0e2VuY29kZTp0PWVuY29kZVVSSUNvbXBvbmVudCxkZWxpbWl0ZXI6YT1QNmV9PWUscj10eXBlb2Ygcz09Im9iamVjdCI/czpBNmUocyxlKSxuPWt5dChyLnRva2VucyxhLHQpO3JldHVybiBpKGZ1bmN0aW9uKGw9e30pe2xldCBwPVtdLGQ9bihsLHApO2lmKHAubGVuZ3RoKXRocm93IG5ldyBUeXBlRXJyb3IoYE1pc3NpbmcgcGFyYW1ldGVyczogJHtwLmpvaW4oIiwgIil9YCk7cmV0dXJuIGR9LCJwYXRoIil9aShfSGEsImNvbXBpbGUiKTtmdW5jdGlvbiBreXQocyxlLHQpe2xldCBhPXMubWFwKHI9Pk1IYShyLGUsdCkpO3JldHVybihyLG4pPT57bGV0IG89IiI7Zm9yKGxldCBsIG9mIGEpbys9bChyLG4pO3JldHVybiBvfX1pKGt5dCwidG9rZW5zVG9GdW5jdGlvbiIpO2Z1bmN0aW9uIE1IYShzLGUsdCl7aWYocy50eXBlPT09InRleHQiKXJldHVybigpPT5zLnZhbHVlO2lmKHMudHlwZT09PSJncm91cCIpe2xldCByPWt5dChzLnRva2VucyxlLHQpO3JldHVybihuLG8pPT57bGV0IGw9by5sZW5ndGgscD1yKG4sbyk7cmV0dXJuIG8ubGVuZ3RoPT09bD9wOihvLmxlbmd0aD1sLCIiKX19bGV0IGE9dHx8STZlO3JldHVybiBzLnR5cGU9PT0id2lsZGNhcmQiJiZ0IT09ITE/KHIsbik9PntsZXQgbz1yW3MubmFtZV07aWYobz09bnVsbClyZXR1cm4gbi5wdXNoKHMubmFtZSksIiI7aWYoIUFycmF5LmlzQXJyYXkobyl8fG8ubGVuZ3RoPT09MCl0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCAiJHtzLm5hbWV9IiB0byBiZSBhIG5vbi1lbXB0eSBhcnJheWApO2xldCBsPSIiO2ZvcihsZXQgcD0wO3A8by5sZW5ndGg7cCsrKXtpZih0eXBlb2Ygb1twXSE9InN0cmluZyIpdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgIiR7cy5uYW1lfS8ke3B9IiB0byBiZSBhIHN0cmluZ2ApO3A+MCYmKGwrPWUpLGwrPWEob1twXSl9cmV0dXJuIGx9OihyLG4pPT57bGV0IG89cltzLm5hbWVdO2lmKG89PW51bGwpcmV0dXJuIG4ucHVzaChzLm5hbWUpLCIiO2lmKHR5cGVvZiBvIT0ic3RyaW5nIil0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCAiJHtzLm5hbWV9IiB0byBiZSBhIHN0cmluZ2ApO3JldHVybiBhKG8pfX1pKE1IYSwidG9rZW5Ub0Z1bmN0aW9uIik7ZnVuY3Rpb24gekhhKHMsZT17fSl7bGV0e2RlY29kZTp0PWRlY29kZVVSSUNvbXBvbmVudCxkZWxpbWl0ZXI6YT1QNmV9PWUse3JlZ2V4cDpyLGtleXM6bn09U3l0KHMsZSksbz1uLm1hcChsPT50PT09ITE/STZlOmwudHlwZT09PSJwYXJhbSI/dDpwPT5wLnNwbGl0KGEpLm1hcCh0KSk7cmV0dXJuIGkoZnVuY3Rpb24ocCl7bGV0IGQ9ci5leGVjKHApO2lmKCFkKXJldHVybiExO2xldCB1PWRbMF0sYz1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgYj0xO2I8ZC5sZW5ndGg7YisrKXtpZihkW2JdPT09dm9pZCAwKWNvbnRpbnVlO2xldCB2PW5bYi0xXSx4PW9bYi0xXTtjW3YubmFtZV09eChkW2JdKX1yZXR1cm57cGF0aDp1LHBhcmFtczpjfX0sIm1hdGNoIil9aSh6SGEsIm1hdGNoIik7ZnVuY3Rpb24gU3l0KHMsZT17fSl7bGV0e2RlbGltaXRlcjp0PVA2ZSxlbmQ6YT0hMCxzZW5zaXRpdmU6cj0hMSx0cmFpbGluZzpuPSEwfT1lLG89W10sbD0iIixwPTA7ZnVuY3Rpb24gZChjKXtpZihBcnJheS5pc0FycmF5KGMpKXtmb3IobGV0IHYgb2YgYylkKHYpO3JldHVybn1sZXQgYj10eXBlb2YgYz09Im9iamVjdCI/YzpBNmUoYyxlKTtONmUoYi50b2tlbnMsMCxbXSx2PT57aWYocD49MjU2KXRocm93IG5ldyBrZCgiVG9vIG1hbnkgcGF0aCBjb21iaW5hdGlvbnMiLGIub3JpZ2luYWxQYXRoKTtwPjAmJihsKz0ifCIpLGwrPUNIYSh2LHQsbyxiLm9yaWdpbmFsUGF0aCkscCsrfSl9aShkLCJwcm9jZXNzIiksZChzKTtsZXQgdT1gXig/OiR7bH0pYDtyZXR1cm4gbiYmKHUrPSIoPzoiK0EwKHQpKyIkKT8iKSx1Kz1hPyIkIjoiKD89IitBMCh0KSsifCQpIix7cmVnZXhwOm5ldyBSZWdFeHAodSxyPyIiOiJpIiksa2V5czpvfX1pKFN5dCwicGF0aFRvUmVnZXhwIik7ZnVuY3Rpb24gTjZlKHMsZSx0LGEpe2Zvcig7ZTxzLmxlbmd0aDspe2xldCByPXNbZSsrXTtpZihyLnR5cGU9PT0iZ3JvdXAiKXtsZXQgbj10Lmxlbmd0aDtONmUoci50b2tlbnMsMCx0LG89Pk42ZShzLGUsbyxhKSksdC5sZW5ndGg9bjtjb250aW51ZX10LnB1c2gocil9YSh0KX1pKE42ZSwiZmxhdHRlbiIpO2Z1bmN0aW9uIENIYShzLGUsdCxhKXtsZXQgcj0iIixuPSIiLG89IiIsbD0wLHA9MCxkPTA7ZnVuY3Rpb24gdShiLHYpe2Zvcig7YjxzLmxlbmd0aDspe2xldCB4PXNbYisrXTtpZih4LnR5cGU9PT12KXJldHVybiEwO2lmKHgudHlwZT09PSJ0ZXh0IiYmeC52YWx1ZS5pbmNsdWRlcyhlKSlicmVha31yZXR1cm4hMX1pKHUsImhhc0luU2VnbWVudCIpO2Z1bmN0aW9uIGMoYil7bGV0IHY9IiI7Zm9yKDtiPHMubGVuZ3RoOyl7bGV0IHg9c1tiKytdO2lmKHgudHlwZSE9PSJ0ZXh0IilicmVhazt2Kz14LnZhbHVlfXJldHVybiB2fWZvcihpKGMsInBlZWtUZXh0Iik7ZDxzLmxlbmd0aDspe2xldCBiPXNbZCsrXTtpZihiLnR5cGU9PT0idGV4dCIpe3IrPUEwKGIudmFsdWUpLG4rPWIudmFsdWUsbD09PTImJihvKz1iLnZhbHVlKSxiLnZhbHVlLmluY2x1ZGVzKGUpJiYocD0wKTtjb250aW51ZX1pZihiLnR5cGU9PT0icGFyYW0ifHxiLnR5cGU9PT0id2lsZGNhcmQiKXtpZihsJiYhbil0aHJvdyBuZXcga2QoYE1pc3NpbmcgdGV4dCBiZWZvcmUgIiR7Yi5uYW1lfSIgJHtiLnR5cGV9YCxhKTtiLnR5cGU9PT0icGFyYW0iPyhyKz1wJjI/YCgke3NoKGUsbil9KylgOnUoZCwid2lsZGNhcmQiKT9gKCR7c2goZSxjKGQpKX0rKWA6cCYxP2AoJHtzaChlLG4pfSt8JHtBMChuKX0pYDpgKCR7c2goZSwiIil9KylgLHB8PWw9MSk6KHIrPXAmMj9gKCR7c2gobiwiIil9KylgOm8/YCgke3NoKG8sIiIpfSt8JHtzaChlLCIiKX0rKWA6IihbXl0rKSIsbz0iIixwfD1sPTIpLHQucHVzaChiKSxuPSIiO2NvbnRpbnVlfXRocm93IG5ldyBUeXBlRXJyb3IoYFVua25vd24gdG9rZW4gdHlwZTogJHtiLnR5cGV9YCl9cmV0dXJuIHJ9aShDSGEsInRvUmVnRXhwU291cmNlIik7ZnVuY3Rpb24gc2gocyxlKXtyZXR1cm4gZS5sZW5ndGg+cy5sZW5ndGg/c2goZSxzKToocz09PWUmJihlPSIiKSxlLmxlbmd0aD4xP2AoPzooPyEke0EwKHMpfXwke0EwKGUpfSlbXl0pYDpzLmxlbmd0aD4xP2AoPzooPyEke0EwKHMpfSlbXiR7QTAoZSl9XSlgOmBbXiR7QTAocytlKX1dYCl9aShzaCwibmVnYXRlIik7ZnVuY3Rpb24gX3l0KHMsZSl7bGV0IHQ9IiI7Zm9yKDtlPHMubGVuZ3RoOyl7bGV0IGE9c1tlKytdO2lmKGEudHlwZT09PSJ0ZXh0Iil7dCs9U0hhKGEudmFsdWUpO2NvbnRpbnVlfWlmKGEudHlwZT09PSJncm91cCIpe3QrPSJ7IitfeXQoYS50b2tlbnMsMCkrIn0iO2NvbnRpbnVlfWlmKGEudHlwZT09PSJwYXJhbSIpe3QrPSI6IitNeXQoYS5uYW1lLHNbZV0pO2NvbnRpbnVlfWlmKGEudHlwZT09PSJ3aWxkY2FyZCIpe3QrPSIqIitNeXQoYS5uYW1lLHNbZV0pO2NvbnRpbnVlfXRocm93IG5ldyBUeXBlRXJyb3IoYFVua25vd24gdG9rZW4gdHlwZTogJHthLnR5cGV9YCl9cmV0dXJuIHR9aShfeXQsInN0cmluZ2lmeVRva2VucyIpO2Z1bmN0aW9uIFRIYShzKXtyZXR1cm4gX3l0KHMudG9rZW5zLDApfWkoVEhhLCJzdHJpbmdpZnkiKTtmdW5jdGlvbiBNeXQocyxlKXtyZXR1cm4ha0hhLnRlc3Qocyl8fGU/LnR5cGU9PT0idGV4dCImJnd5dC50ZXN0KGUudmFsdWVbMF0pP0pTT04uc3RyaW5naWZ5KHMpOnN9aShNeXQsInN0cmluZ2lmeU5hbWUiKX0pO3ZhciBSNmUsTzZlPWcoKCk9Pnt1OSgpO1oyKCk7UjZlPXhuKHp5dCgpLDEpfSk7dmFyIGRyZSxDeXQ9ZygoKT0+e082ZSgpO2RyZT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJRdWVyeVBhcmFtcyIpfWNvbnN0cnVjdG9yKCl7fWdldEFsbEFzT2JqZWN0KCl7bGV0IGU9bmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtyZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKGUuZW50cmllcygpKX1zZXRRdWVyeVBhcmFtKGUsdCxhPSJyZXBsYWNlIil7dmFyIHI9bmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtyLnNldChlLHQpLGE9PT0icHVzaCI/aGlzdG9yeS5wdXNoU3RhdGUobnVsbCxudWxsLCI/IityLnRvU3RyaW5nKCkpOmhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsbnVsbCwiPyIrci50b1N0cmluZygpKX1kZWxldGVRdWVyeVBhcmFtKGUsdD0icmVwbGFjZSIpe3ZhciBhPW5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7YS5kZWxldGUoZSksdD09PSJwdXNoIj9oaXN0b3J5LnB1c2hTdGF0ZShudWxsLG51bGwsIj8iK2EudG9TdHJpbmcoKSk6aGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCxudWxsLCI/IithLnRvU3RyaW5nKCkpfWdldFF1ZXJ5UGFyYW0oZSl7cmV0dXJuIHRoaXMuZ2V0QWxsQXNPYmplY3QoKVtlXX19fSk7dmFyIFI2aSxGNmUsVHl0PWcoKCk9PntPNmUoKTtDeXQoKTtSNmk9aShzPT57Y29uc29sZS5sb2coYCVjW1JvdXRlcl0lYyAke3N9YCwiY29sb3I6IHJnYigyNTUsIDEwNSwgMTAwKTsiLCJjb2xvcjogaW5oZXJpdCIpfSwicm91dGVMb2ciKSxGNmU9Y2xhc3Mgc3tzdGF0aWN7aSh0aGlzLCJTbWFydFJvdXRlciIpfWNvbnN0cnVjdG9yKGUsdD0iIil7dGhpcy5vcHRpb25zPXtkZWJ1ZzohMX0sdGhpcy5xdWVyeVBhcmFtcz1uZXcgZHJlLHRoaXMucm91dGVzPVtdLHRoaXMub3B0aW9ucz17Li4udGhpcy5vcHRpb25zLC4uLmV9LHRoaXMuYmFzZVBhdGg9dCx0aGlzLnBvcHN0YXRlTGlzdGVuZXI9YT0+e2EucHJldmVudERlZmF1bHQoKSx0aGlzLl9oYW5kbGVSb3V0ZVN0YXRlKCl9LHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwb3BzdGF0ZSIsdGhpcy5wb3BzdGF0ZUxpc3RlbmVyKX1jcmVhdGVTdWJSb3V0ZXIoZSx0KXtsZXQgYT1gJHt0aGlzLmJhc2VQYXRofSR7ZX1gO3JldHVybiBuZXcgcyh7Li4udGhpcy5vcHRpb25zLC4uLnR9LGEpfWFzeW5jIHB1c2hVcmwoZT0iLyIsdD17fSl7bGV0IGE9YCR7dGhpcy5iYXNlUGF0aH0ke2V9YDthIT09d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lP3dpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSh0LHdpbmRvdy5kb2N1bWVudC50aXRsZSxhKTp3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUodCx3aW5kb3cuZG9jdW1lbnQudGl0bGUsYSksYXdhaXQgdGhpcy5faGFuZGxlUm91dGVTdGF0ZSgpfW9uKGUsdCl7bGV0IGE9YCR7dGhpcy5iYXNlUGF0aH0ke2V9YCxyPXttYXRjaEZ1bmN0aW9uOlI2ZS5tYXRjaChhKSxoYW5kbGVyOnR9O3JldHVybiB0aGlzLnJvdXRlcy5wdXNoKHIpLGkoKCk9Pnt0aGlzLnJvdXRlcy5zcGxpY2UodGhpcy5yb3V0ZXMuaW5kZXhPZihyKSwxKX0sInJlbW92ZUZ1bmN0aW9uIil9YXN5bmMgX2hhbmRsZVJvdXRlU3RhdGUoKXtsZXQgZT13aW5kb3cubG9jYXRpb24ucGF0aG5hbWUsdD10aGlzLnJvdXRlcy5maWx0ZXIoYT0+ISFhLm1hdGNoRnVuY3Rpb24oZSkpO2ZvcihsZXQgYSBvZiB0KXtsZXQgcj1hLm1hdGNoRnVuY3Rpb24oZSk7YS5oYW5kbGVyKHsuLi5yLnZhbHVlT2YoKSxxdWVyeVBhcmFtczp0aGlzLnF1ZXJ5UGFyYW1zLmdldEFsbEFzT2JqZWN0KCl9KX19ZGVzdHJveSgpe3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb3BzdGF0ZSIsdGhpcy5wb3BzdGF0ZUxpc3RlbmVyKSx0aGlzLnJvdXRlcz1bXX19fSk7dmFyIEYzPXt9O3l0KEYzLHtTbWFydFJvdXRlcjooKT0+RjZlfSk7dmFyICR5dD1nKCgpPT57VHl0KCl9KTt2YXIgRHl0PWcoKCk9PntzdygpO2c5KCl9KTtmdW5jdGlvbiBTZChzLGUpe3JldHVybiBzPj4+ZXxzPDwzMi1lfWZ1bmN0aW9uIFBIYShzLGUpe2xldCB0PWVbMF0sYT1lWzFdLHI9ZVsyXSxuPWVbM10sbz1lWzRdLGw9ZVs1XSxwPWVbNl0sZD1lWzddO2ZvcihsZXQgdT0wO3U8NjQ7dSsrKXtpZih1Pj0xNil7bGV0IHk9U2Qoc1t1LTE1XSw3KV5TZChzW3UtMTVdLDE4KV5zW3UtMTVdPj4+MyxNPVNkKHNbdS0yXSwxNyleU2Qoc1t1LTJdLDE5KV5zW3UtMl0+Pj4xMDtzW3VdPXNbdS0xNl0reStzW3UtN10rTT4+PjB9bGV0IGM9U2Qobyw2KV5TZChvLDExKV5TZChvLDI1KSxiPW8mbF5+byZwLHY9ZCtjK2IrTEhhW3VdK3NbdV0+Pj4wLHg9U2QodCwyKV5TZCh0LDEzKV5TZCh0LDIyKSxtPXQmYV50JnJeYSZyLGY9eCttPj4+MDtkPXAscD1sLGw9byxvPW4rdj4+PjAsbj1yLHI9YSxhPXQsdD12K2Y+Pj4wfWVbMF09ZVswXSt0Pj4+MCxlWzFdPWVbMV0rYT4+PjAsZVsyXT1lWzJdK3I+Pj4wLGVbM109ZVszXStuPj4+MCxlWzRdPWVbNF0rbz4+PjAsZVs1XT1lWzVdK2w+Pj4wLGVbNl09ZVs2XStwPj4+MCxlWzddPWVbN10rZD4+PjB9ZnVuY3Rpb24gQjZlKHMpe2xldCBlPVsuLi5FSGFdLHQ9cy5sZW5ndGgsYT10Kjgscj10JTY0PDU2PzU2LXQlNjQ6MTIwLXQlNjQsbj1uZXcgVWludDhBcnJheSh0K3IrOCk7bi5zZXQocyksblt0XT0xMjg7bGV0IG89bmV3IERhdGFWaWV3KG4uYnVmZmVyKTtvLnNldFVpbnQzMihuLmxlbmd0aC04LDAsITEpLG8uc2V0VWludDMyKG4ubGVuZ3RoLTQsYT4+PjAsITEpO2ZvcihsZXQgcD0wO3A8bi5sZW5ndGg7cCs9NjQpe2xldCBkPW5ldyBBcnJheSg2NCk7Zm9yKGxldCB1PTA7dTwxNjt1KyspZFt1XT1vLmdldFVpbnQzMihwK3UqNCwhMSk7UEhhKGQsZSl9bGV0IGw9IiI7Zm9yKGxldCBwPTA7cDw4O3ArKylsKz1lW3BdLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIik7cmV0dXJuIGx9dmFyIExIYSxFSGEsTHl0PWcoKCk9PntMSGE9WzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF0sRUhhPVsxNzc5MDMzNzAzLDMxNDQxMzQyNzcsMTAxMzkwNDI0MiwyNzczNDgwNzYyLDEzNTk4OTMxMTksMjYwMDgyMjkyNCw1Mjg3MzQ2MzUsMTU0MTQ1OTIyNV07aShTZCwicm90ciIpO2koUEhhLCJzaGEyNTZUcmFuc2Zvcm0iKTtpKEI2ZSwic2hhMjU2RmFsbGJhY2siKX0pO3ZhciBEaz17fTt5dChEayx7bWQ1RnJvbVN0cmluZzooKT0+RkhhLHNoYTI1NkZyb21CdWZmZXI6KCk9PkFIYSxzaGEyNTZGcm9tRmlsZTooKT0+T0hhLHNoYTI1NkZyb21TdHJlYW06KCk9PlJIYSxzaGEyNTZGcm9tU3RyaW5nOigpPT5JeXQsc2hhMjU2RnJvbVN0cmluZ1N5bmM6KCk9PklIYSxzaGEyNjVGcm9tT2JqZWN0OigpPT5OSGF9KTt2YXIgRXl0LFB5dCxJeXQsSUhhLEFIYSxOSGEsUkhhLE9IYSxGSGEsQXl0PWcoKCk9PntEeXQoKTtMeXQoKTtFeXQ9aShzPT57bGV0IGU9W10sdD1uZXcgRGF0YVZpZXcocyk7Zm9yKGxldCBhPTA7YTx0LmJ5dGVMZW5ndGg7YSs9NCl7bGV0IG49dC5nZXRVaW50MzIoYSkudG9TdHJpbmcoMTYpLG89IjAwMDAwMDAwIixsPShvK24pLnNsaWNlKC1vLmxlbmd0aCk7ZS5wdXNoKGwpfXJldHVybiBlLmpvaW4oIiIpfSwiaGV4IiksUHl0PWkoKCk9PnR5cGVvZiBjcnlwdG88InUiJiZjcnlwdG8uc3VidGxlIT09dm9pZCAwLCJpc0NyeXB0b1N1YnRsZUF2YWlsYWJsZSIpLEl5dD1pKGFzeW5jIHM9PntsZXQgZT1uZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUocyk7aWYoUHl0KCkpe2xldCB0PWF3YWl0IGNyeXB0by5zdWJ0bGUuZGlnZXN0KCJTSEEtMjU2IixlKTtyZXR1cm4gRXl0KHQpfWVsc2UgcmV0dXJuIEI2ZShlKX0sInNoYTI1NkZyb21TdHJpbmciKSxJSGE9aShzPT57dGhyb3cgY29uc29sZS53YXJuKCJzaGEyNTZGcm9tU3RyaW5nU3luYyBpcyBub3QgdHJ1bHkgc3luY2hyb25vdXMgaW4gYnJvd3NlciBlbnZpcm9ubWVudCIpLG5ldyBFcnJvcigic2hhMjU2RnJvbVN0cmluZ1N5bmMgaXMgbm90IHN1cHBvcnRlZCBpbiBicm93c2VyIGVudmlyb25tZW50LiBVc2Ugc2hhMjU2RnJvbVN0cmluZyBpbnN0ZWFkLiIpfSwic2hhMjU2RnJvbVN0cmluZ1N5bmMiKSxBSGE9aShhc3luYyBzPT57aWYoUHl0KCkpe2xldCBlO2lmKHMgaW5zdGFuY2VvZiBVaW50OEFycmF5KXtsZXQgcj1zO2U9ci5idWZmZXIuc2xpY2Uoci5ieXRlT2Zmc2V0LHIuYnl0ZU9mZnNldCtyLmJ5dGVMZW5ndGgpfWVsc2UgZT1zO2xldCB0PWF3YWl0IGNyeXB0by5zdWJ0bGUuZGlnZXN0KCJTSEEtMjU2IixlKTtyZXR1cm4gRXl0KHQpfWVsc2V7bGV0IGU9cyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXk/czpuZXcgVWludDhBcnJheShzKTtyZXR1cm4gQjZlKGUpfX0sInNoYTI1NkZyb21CdWZmZXIiKSxOSGE9aShhc3luYyBzPT57bGV0IGU9anIuc3RyaW5naWZ5KHMpO3JldHVybiBhd2FpdCBJeXQoZSl9LCJzaGEyNjVGcm9tT2JqZWN0IiksUkhhPWkocz0+e3Rocm93IG5ldyBFcnJvcigic2hhMjU2RnJvbVN0cmVhbSBpcyBub3Qgc3VwcG9ydGVkIGluIGJyb3dzZXIgZW52aXJvbm1lbnQiKX0sInNoYTI1NkZyb21TdHJlYW0iKSxPSGE9aShhc3luYyBzPT57dGhyb3cgbmV3IEVycm9yKCJzaGEyNTZGcm9tRmlsZSBpcyBub3Qgc3VwcG9ydGVkIGluIGJyb3dzZXIgZW52aXJvbm1lbnQiKX0sInNoYTI1NkZyb21GaWxlIiksRkhhPWkoYXN5bmMgcz0+e3Rocm93IG5ldyBFcnJvcigibWQ1RnJvbVN0cmluZyBpcyBub3Qgc3VwcG9ydGVkIGluIGJyb3dzZXIgZW52aXJvbm1lbnQuIFdlYiBDcnlwdG8gQVBJIGRvZXMgbm90IHN1cHBvcnQgTUQ1LiIpfSwibWQ1RnJvbVN0cmluZyIpfSk7dmFyIHVyZT1nKCgpPT57QXl0KCk7ZzkoKTtpbygpO1oyKCk7S2FlKCl9KTt2YXIgTGssSDZlPWcoKCk9PntwcmUoKTtMaz1jbGFzc3tzdGF0aWN7aSh0aGlzLCJTdGF0ZUFjdGlvbiIpfWNvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdGF0ZVBhcnRSZWY9ZSx0aGlzLmFjdGlvbkRlZj10fXRyaWdnZXIoZSl7cmV0dXJuIHRoaXMuc3RhdGVQYXJ0UmVmLmRpc3BhdGNoQWN0aW9uKHRoaXMsZSl9fX0pO2Z1bmN0aW9uIEhIYSgpe3JldHVybiB0eXBlb2YgZG9jdW1lbnQ+InUiP3E0KCEwKTpuZXcgcmEocz0+e3MubmV4dCghZG9jdW1lbnQuaGlkZGVuKTtsZXQgZT1pKCgpPT5zLm5leHQoIWRvY3VtZW50LmhpZGRlbiksImhhbmRsZXIiKTtyZXR1cm4gZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsZSksKCk9PmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLGUpfSl9dmFyIHViLHE2ZT1nKCgpPT57UjcoKTtpKEhIYSwiY3JlYXRlVmlzaWJpbGl0eU9ic2VydmFibGUiKTt1Yj1jbGFzc3tzdGF0aWN7aSh0aGlzLCJTdGF0ZVByb2Nlc3MiKX1jb25zdHJ1Y3RvcihlLHQpe3RoaXMuc3RhdHVzU3ViamVjdD1uZXcgQzcoImlkbGUiKSx0aGlzLnByb2R1Y2VyU3Vic2NyaXB0aW9uPW51bGwsdGhpcy5hdXRvUGF1c2VTdWJzY3JpcHRpb249bnVsbCx0aGlzLnByb2Nlc3NpbmdRdWV1ZT1Qcm9taXNlLnJlc29sdmUoKSx0aGlzLnN0YXRlUGFydFJlZj1lLHRoaXMucHJvZHVjZXJGbj10LnByb2R1Y2VyLHRoaXMucmVkdWNlcj10LnJlZHVjZXIsdGhpcy5zaWRlRWZmZWN0PXQuc2lkZUVmZmVjdCx0aGlzLmF1dG9QYXVzZU9wdGlvbj10LmF1dG9QYXVzZT8/ITF9Z2V0IHN0YXR1cygpe3JldHVybiB0aGlzLnN0YXR1c1N1YmplY3QuZ2V0VmFsdWUoKX1nZXQgc3RhdHVzJCgpe3JldHVybiB0aGlzLnN0YXR1c1N1YmplY3QuYXNPYnNlcnZhYmxlKCl9c3RhcnQoKXtpZih0aGlzLnN0YXR1cz09PSJkaXNwb3NlZCIpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgc3RhcnQgYSBkaXNwb3NlZCBwcm9jZXNzIik7dGhpcy5zdGF0dXMhPT0icnVubmluZyImJih0aGlzLnN0YXR1c1N1YmplY3QubmV4dCgicnVubmluZyIpLHRoaXMuc3Vic2NyaWJlUHJvZHVjZXIoKSx0aGlzLnNldHVwQXV0b1BhdXNlKCkpfXBhdXNlKCl7aWYodGhpcy5zdGF0dXM9PT0iZGlzcG9zZWQiKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHBhdXNlIGEgZGlzcG9zZWQgcHJvY2VzcyIpO3RoaXMuc3RhdHVzPT09InJ1bm5pbmciJiYodGhpcy5zdGF0dXNTdWJqZWN0Lm5leHQoInBhdXNlZCIpLHRoaXMudW5zdWJzY3JpYmVQcm9kdWNlcigpKX1yZXN1bWUoKXtpZih0aGlzLnN0YXR1cz09PSJkaXNwb3NlZCIpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcmVzdW1lIGEgZGlzcG9zZWQgcHJvY2VzcyIpO3RoaXMuc3RhdHVzPT09InBhdXNlZCImJih0aGlzLnN0YXR1c1N1YmplY3QubmV4dCgicnVubmluZyIpLHRoaXMuc3Vic2NyaWJlUHJvZHVjZXIoKSl9ZGlzcG9zZSgpe3RoaXMuc3RhdHVzIT09ImRpc3Bvc2VkIiYmKHRoaXMudW5zdWJzY3JpYmVQcm9kdWNlcigpLHRoaXMudGVhcmRvd25BdXRvUGF1c2UoKSx0aGlzLnN0YXR1c1N1YmplY3QubmV4dCgiZGlzcG9zZWQiKSx0aGlzLnN0YXR1c1N1YmplY3QuY29tcGxldGUoKSx0aGlzLnN0YXRlUGFydFJlZi5fcmVtb3ZlUHJvY2Vzcyh0aGlzKSl9c3Vic2NyaWJlUHJvZHVjZXIoKXt0aGlzLnVuc3Vic2NyaWJlUHJvZHVjZXIoKTtsZXQgZT10aGlzLnByb2R1Y2VyRm4oKTt0aGlzLnByb2R1Y2VyU3Vic2NyaXB0aW9uPWUuc3Vic2NyaWJlKHtuZXh0OmkodD0+e3RoaXMucHJvY2Vzc2luZ1F1ZXVlPXRoaXMucHJvY2Vzc2luZ1F1ZXVlLnRoZW4oYXN5bmMoKT0+e3RyeXtpZih0aGlzLnNpZGVFZmZlY3QpYXdhaXQgdGhpcy5zaWRlRWZmZWN0KHQpO2Vsc2UgaWYodGhpcy5yZWR1Y2VyKXtsZXQgYT10aGlzLnN0YXRlUGFydFJlZi5nZXRTdGF0ZSgpO2EhPT12b2lkIDAmJmF3YWl0IHRoaXMuc3RhdGVQYXJ0UmVmLnNldFN0YXRlKHRoaXMucmVkdWNlcihhLHQpKX19Y2F0Y2goYSl7Y29uc29sZS5lcnJvcigiU3RhdGVQcm9jZXNzIHZhbHVlIGhhbmRsaW5nIGVycm9yOiIsYSl9fSl9LCJuZXh0IiksZXJyb3I6aSh0PT57Y29uc29sZS5lcnJvcigiU3RhdGVQcm9jZXNzIHByb2R1Y2VyIGVycm9yOiIsdCksdGhpcy5zdGF0dXM9PT0icnVubmluZyImJih0aGlzLnN0YXR1c1N1YmplY3QubmV4dCgicGF1c2VkIiksdGhpcy51bnN1YnNjcmliZVByb2R1Y2VyKCkpfSwiZXJyb3IiKX0pfXVuc3Vic2NyaWJlUHJvZHVjZXIoKXt0aGlzLnByb2R1Y2VyU3Vic2NyaXB0aW9uJiYodGhpcy5wcm9kdWNlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMucHJvZHVjZXJTdWJzY3JpcHRpb249bnVsbCl9c2V0dXBBdXRvUGF1c2UoKXtpZih0aGlzLnRlYXJkb3duQXV0b1BhdXNlKCksIXRoaXMuYXV0b1BhdXNlT3B0aW9uKXJldHVybjtsZXQgZT10aGlzLmF1dG9QYXVzZU9wdGlvbj09PSJ2aXNpYmlsaXR5Ij9ISGEoKTp0aGlzLmF1dG9QYXVzZU9wdGlvbjt0aGlzLmF1dG9QYXVzZVN1YnNjcmlwdGlvbj1lLnN1YnNjcmliZSh0PT57IXQmJnRoaXMuc3RhdHVzPT09InJ1bm5pbmciP3RoaXMucGF1c2UoKTp0JiZ0aGlzLnN0YXR1cz09PSJwYXVzZWQiJiZ0aGlzLnJlc3VtZSgpfSl9dGVhcmRvd25BdXRvUGF1c2UoKXt0aGlzLmF1dG9QYXVzZVN1YnNjcmlwdGlvbiYmKHRoaXMuYXV0b1BhdXNlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5hdXRvUGF1c2VTdWJzY3JpcHRpb249bnVsbCl9fX0pO2Z1bmN0aW9uIHFIYShzKXtyZXR1cm4gbmV3IHJhKGU9PntpZihzLmFib3J0ZWQpe2UubmV4dCgpLGUuY29tcGxldGUoKTtyZXR1cm59bGV0IHQ9aSgoKT0+e2UubmV4dCgpLGUuY29tcGxldGUoKX0sImhhbmRsZXIiKTtyZXR1cm4gcy5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsdCksKCk9PnMucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLHQpfSl9dmFyIEVrLHByZT1nKCgpPT57dXJlKCk7UjcoKTtINmUoKTtxNmUoKTtpKHFIYSwiZnJvbUFib3J0U2lnbmFsIik7RWs9Y2xhc3Mgc3tzdGF0aWN7aSh0aGlzLCJTdGF0ZVBhcnQiKX1zdGF0aWN7dGhpcy5NQVhfTkVTVEVEX0RJU1BBVENIX0RFUFRIPTEwfWNvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdGF0ZT1uZXcgQzcodm9pZCAwKSx0aGlzLmRpc3Bvc2VkPSExLHRoaXMuY3VtdWxhdGl2ZURlZmVycmVkPW10LmN1bXVsYXRpdmVEZWZlcigpLHRoaXMubXV0YXRpb25RdWV1ZT1Qcm9taXNlLnJlc29sdmUoKSx0aGlzLnBlbmRpbmdDdW11bGF0aXZlTm90aWZpY2F0aW9uPW51bGwsdGhpcy53ZWJTdG9yZT1udWxsLHRoaXMubWlkZGxld2FyZXM9W10sdGhpcy5wcm9jZXNzZXM9W10sdGhpcy5zZWxlY3RvckNhY2hlPW5ldyBXZWFrTWFwLHRoaXMuZGVmYXVsdFNlbGVjdE9ic2VydmFibGU9bnVsbCx0aGlzLm5hbWU9ZSx0JiYodGhpcy53ZWJTdG9yZU9wdGlvbnM9dCl9YXN5bmMgaW5pdCgpe2lmKHRoaXMud2ViU3RvcmVPcHRpb25zKXt0aGlzLndlYlN0b3JlPW5ldyBrMS5XZWJTdG9yZSh0aGlzLndlYlN0b3JlT3B0aW9ucyksYXdhaXQgdGhpcy53ZWJTdG9yZS5pbml0KCk7bGV0IGU9YXdhaXQgdGhpcy53ZWJTdG9yZS5nZXQoU3RyaW5nKHRoaXMubmFtZSkpO2UmJnRoaXMudmFsaWRhdGVTdGF0ZShlKSYmKHRoaXMuc3RhdGVTdG9yZT1lLGF3YWl0IHRoaXMubm90aWZ5Q2hhbmdlKCkpfX1nZXRTdGF0ZSgpe3JldHVybiB0aGlzLnN0YXRlU3RvcmV9YWRkTWlkZGxld2FyZShlKXtyZXR1cm4gdGhpcy5taWRkbGV3YXJlcy5wdXNoKGUpLCgpPT57bGV0IHQ9dGhpcy5taWRkbGV3YXJlcy5pbmRleE9mKGUpO3QhPT0tMSYmdGhpcy5taWRkbGV3YXJlcy5zcGxpY2UodCwxKX19YXN5bmMgc2V0U3RhdGUoZSl7aWYodGhpcy5kaXNwb3NlZCl0aHJvdyBuZXcgRXJyb3IoYFN0YXRlUGFydCAnJHt0aGlzLm5hbWV9JyBoYXMgYmVlbiBkaXNwb3NlZGApO3JldHVybiB0aGlzLm11dGF0aW9uUXVldWU9dGhpcy5tdXRhdGlvblF1ZXVlLnRoZW4oKCk9PnRoaXMuYXBwbHlTdGF0ZShlKSwoKT0+dGhpcy5hcHBseVN0YXRlKGUpKX1hc3luYyBhcHBseVN0YXRlKGUpe2xldCB0PWU7Zm9yKGxldCBhIG9mIHRoaXMubWlkZGxld2FyZXMpdD1hd2FpdCBhKHQsdGhpcy5zdGF0ZVN0b3JlKTtpZighdGhpcy52YWxpZGF0ZVN0YXRlKHQpKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzdGF0ZSBzdHJ1Y3R1cmUgZm9yIHN0YXRlIHBhcnQgJyR7dGhpcy5uYW1lfSdgKTtyZXR1cm4gdGhpcy53ZWJTdG9yZSYmYXdhaXQgdGhpcy53ZWJTdG9yZS5zZXQoU3RyaW5nKHRoaXMubmFtZSksdCksdGhpcy5zdGF0ZVN0b3JlPXQsYXdhaXQgdGhpcy5ub3RpZnlDaGFuZ2UoKSx0aGlzLnN0YXRlU3RvcmV9dmFsaWRhdGVTdGF0ZShlKXtyZXR1cm4gZSE9bnVsbH1hc3luYyBub3RpZnlDaGFuZ2UoKXtsZXQgZT10aGlzLnN0YXRlU3RvcmU7aWYoZT09PXZvaWQgMClyZXR1cm47aWYodGhpcy5zbWFydHN0YXRlUmVmPy5pc0JhdGNoaW5nKXt0aGlzLnNtYXJ0c3RhdGVSZWYucmVnaXN0ZXJQZW5kaW5nTm90aWZpY2F0aW9uKHRoaXMpO3JldHVybn1sZXQgdD1pKGFzeW5jIGE9PmF3YWl0IERrLnNoYTI1NkZyb21TdHJpbmcoanIuc3RhYmxlT25lV2F5U3RyaW5naWZ5KGEpKSwiY3JlYXRlU3RhdGVIYXNoIik7dHJ5e2xldCBhPWF3YWl0IHQoZSk7aWYodGhpcy5sYXN0U3RhdGVOb3RpZmljYXRpb25QYXlsb2FkSGFzaCYmYT09PXRoaXMubGFzdFN0YXRlTm90aWZpY2F0aW9uUGF5bG9hZEhhc2gpcmV0dXJuO3RoaXMubGFzdFN0YXRlTm90aWZpY2F0aW9uUGF5bG9hZEhhc2g9YX1jYXRjaChhKXtjb25zb2xlLmVycm9yKGBTdGF0ZSBoYXNoIGNvbXB1dGF0aW9uIGZhaWxlZCBmb3IgJyR7dGhpcy5uYW1lfSc6YCxhKX10aGlzLnN0YXRlLm5leHQoZSl9bm90aWZ5Q2hhbmdlQ3VtdWxhdGl2ZSgpe3RoaXMucGVuZGluZ0N1bXVsYXRpdmVOb3RpZmljYXRpb24mJmNsZWFyVGltZW91dCh0aGlzLnBlbmRpbmdDdW11bGF0aXZlTm90aWZpY2F0aW9uKSx0aGlzLnBlbmRpbmdDdW11bGF0aXZlTm90aWZpY2F0aW9uPXNldFRpbWVvdXQoKCk9Pnt0aGlzLnBlbmRpbmdDdW11bGF0aXZlTm90aWZpY2F0aW9uPW51bGwsdGhpcy5zdGF0ZVN0b3JlIT09dm9pZCAwJiZ0aGlzLm5vdGlmeUNoYW5nZSgpLmNhdGNoKGU9Pntjb25zb2xlLmVycm9yKGBub3RpZnlDaGFuZ2VDdW11bGF0aXZlIGZhaWxlZCBmb3IgJyR7dGhpcy5uYW1lfSc6YCxlKX0pfSwwKX1zZWxlY3QoZSx0KXtsZXQgYT10Py5zaWduYWwhPW51bGw7aWYoIWEpe2lmKGUpe2lmKHRoaXMuc2VsZWN0b3JDYWNoZS5oYXMoZSkpcmV0dXJuIHRoaXMuc2VsZWN0b3JDYWNoZS5nZXQoZSl9ZWxzZSBpZih0aGlzLmRlZmF1bHRTZWxlY3RPYnNlcnZhYmxlKXJldHVybiB0aGlzLmRlZmF1bHRTZWxlY3RPYnNlcnZhYmxlfWxldCByPWV8fChwPT5wKSxuPVN5bWJvbCgic2VsZWN0b3ItZXJyb3IiKSxvPXRoaXMuc3RhdGUucGlwZShscy5yeGpzLm9wcy5maWx0ZXIocD0+cCE9PXZvaWQgMCksbHMucnhqcy5vcHMubWFwKHA9Pnt0cnl7cmV0dXJuIHIocCl9Y2F0Y2goZCl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoYFNlbGVjdG9yIGVycm9yIGluIHN0YXRlIHBhcnQgJyR7dGhpcy5uYW1lfSc6YCxkKSxufX0pLGxzLnJ4anMub3BzLmZpbHRlcihwPT5wIT09biksQTcoKHAsZCk9PkpTT04uc3RyaW5naWZ5KHApPT09SlNPTi5zdHJpbmdpZnkoZCkpKTtpZihhKXJldHVybiBvPW8ucGlwZShONyhxSGEodC5zaWduYWwpKSksbztsZXQgbD1vLnBpcGUod2VlKHtidWZmZXJTaXplOjEscmVmQ291bnQ6ITB9KSk7cmV0dXJuIGU/dGhpcy5zZWxlY3RvckNhY2hlLnNldChlLGwpOnRoaXMuZGVmYXVsdFNlbGVjdE9ic2VydmFibGU9bCxsfWNyZWF0ZUFjdGlvbihlKXtyZXR1cm4gbmV3IExrKHRoaXMsZSl9Y3JlYXRlQWN0aW9uQ29udGV4dChlKXtsZXQgdD10aGlzO3JldHVybntkaXNwYXRjaDppKGFzeW5jKGEscik9PntpZihlPj1zLk1BWF9ORVNURURfRElTUEFUQ0hfREVQVEgpdGhyb3cgbmV3IEVycm9yKGBNYXhpbXVtIG5lc3RlZCBhY3Rpb24gZGlzcGF0Y2ggZGVwdGggKCR7cy5NQVhfTkVTVEVEX0RJU1BBVENIX0RFUFRIfSkgZXhjZWVkZWQuIENoZWNrIGZvciBjaXJjdWxhciBhY3Rpb24gZGlzcGF0Y2hlcy5gKTtsZXQgbj10LmNyZWF0ZUFjdGlvbkNvbnRleHQoZSsxKSxvPWF3YWl0IGEuYWN0aW9uRGVmKHQscixuKTtyZXR1cm4gdC5hcHBseVN0YXRlKG8pfSwiZGlzcGF0Y2giKX19YXN5bmMgZGlzcGF0Y2hBY3Rpb24oZSx0KXtpZih0aGlzLmRpc3Bvc2VkKXRocm93IG5ldyBFcnJvcihgU3RhdGVQYXJ0ICcke3RoaXMubmFtZX0nIGhhcyBiZWVuIGRpc3Bvc2VkYCk7YXdhaXQgdGhpcy5jdW11bGF0aXZlRGVmZXJyZWQucHJvbWlzZTtsZXQgYT1pKGFzeW5jKCk9PntsZXQgcj10aGlzLmNyZWF0ZUFjdGlvbkNvbnRleHQoMCksbj1hd2FpdCBlLmFjdGlvbkRlZih0aGlzLHQscik7cmV0dXJuIHRoaXMuYXBwbHlTdGF0ZShuKX0sImV4ZWN1dGUiKTtyZXR1cm4gdGhpcy5tdXRhdGlvblF1ZXVlPXRoaXMubXV0YXRpb25RdWV1ZS50aGVuKGEsYSl9YXN5bmMgd2FpdFVudGlsUHJlc2VudChlLHQpe2xldCBhLHI7dHlwZW9mIHQ9PSJudW1iZXIiP2E9dDp0JiYoYT10LnRpbWVvdXRNcyxyPXQuc2lnbmFsKTtsZXQgbj1tdC5kZWZlcigpLG89dGhpcy5zZWxlY3QoZSksbD0hMTtpZihyPy5hYm9ydGVkKXRocm93IG5ldyBFcnJvcigiQWJvcnRlZCIpO2xldCBwPW8uc3Vic2NyaWJlKGM9PntjIT1udWxsJiYhbCYmKGw9ITAsbi5yZXNvbHZlKGMpKX0pLGQ7YSYmKGQ9c2V0VGltZW91dCgoKT0+e2x8fChsPSEwLHAudW5zdWJzY3JpYmUoKSxuLnJlamVjdChuZXcgRXJyb3IoYHdhaXRVbnRpbFByZXNlbnQgdGltZWQgb3V0IGFmdGVyICR7YX1tc2ApKSl9LGEpKTtsZXQgdT1yPygpPT57bHx8KGw9ITAscC51bnN1YnNjcmliZSgpLGQmJmNsZWFyVGltZW91dChkKSxuLnJlamVjdChuZXcgRXJyb3IoIkFib3J0ZWQiKSkpfTp2b2lkIDA7ciYmdSYmci5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsdSk7dHJ5e3JldHVybiBhd2FpdCBuLnByb21pc2V9ZmluYWxseXtwLnVuc3Vic2NyaWJlKCksZCYmY2xlYXJUaW1lb3V0KGQpLHImJnUmJnIucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLHUpfX1hc3luYyBzdGF0ZVNldHVwKGUpe2xldCB0PWUodGhpcyk7dGhpcy5jdW11bGF0aXZlRGVmZXJyZWQuYWRkUHJvbWlzZSh0KSxhd2FpdCB0aGlzLnNldFN0YXRlKGF3YWl0IHQpfWNyZWF0ZVByb2Nlc3MoZSl7aWYodGhpcy5kaXNwb3NlZCl0aHJvdyBuZXcgRXJyb3IoYFN0YXRlUGFydCAnJHt0aGlzLm5hbWV9JyBoYXMgYmVlbiBkaXNwb3NlZGApO2xldCB0PW5ldyB1Yih0aGlzLGUpO3JldHVybiB0aGlzLnByb2Nlc3Nlcy5wdXNoKHQpLGUuYXV0b1N0YXJ0JiZ0LnN0YXJ0KCksdH1jcmVhdGVTY2hlZHVsZWRBY3Rpb24oZSl7aWYodGhpcy5kaXNwb3NlZCl0aHJvdyBuZXcgRXJyb3IoYFN0YXRlUGFydCAnJHt0aGlzLm5hbWV9JyBoYXMgYmVlbiBkaXNwb3NlZGApO2xldCB0PW5ldyB1Yih0aGlzLHtwcm9kdWNlcjppKCgpPT5KZGUoZS5pbnRlcnZhbE1zKSwicHJvZHVjZXIiKSxzaWRlRWZmZWN0OmkoYXN5bmMoKT0+e2F3YWl0IGUuYWN0aW9uLnRyaWdnZXIoZS5wYXlsb2FkKX0sInNpZGVFZmZlY3QiKSxhdXRvUGF1c2U6ZS5hdXRvUGF1c2U/PyExfSk7cmV0dXJuIHRoaXMucHJvY2Vzc2VzLnB1c2godCksdC5zdGFydCgpLHR9X3JlbW92ZVByb2Nlc3MoZSl7bGV0IHQ9dGhpcy5wcm9jZXNzZXMuaW5kZXhPZihlKTt0IT09LTEmJnRoaXMucHJvY2Vzc2VzLnNwbGljZSh0LDEpfWRpc3Bvc2UoKXtpZighdGhpcy5kaXNwb3NlZCl7dGhpcy5kaXNwb3NlZD0hMDtmb3IobGV0IGUgb2ZbLi4udGhpcy5wcm9jZXNzZXNdKWUuZGlzcG9zZSgpO3RoaXMucHJvY2Vzc2VzLmxlbmd0aD0wLHRoaXMuc3RhdGUuY29tcGxldGUoKSx0aGlzLm11dGF0aW9uUXVldWU9UHJvbWlzZS5yZXNvbHZlKCksdGhpcy5wZW5kaW5nQ3VtdWxhdGl2ZU5vdGlmaWNhdGlvbiYmKGNsZWFyVGltZW91dCh0aGlzLnBlbmRpbmdDdW11bGF0aXZlTm90aWZpY2F0aW9uKSx0aGlzLnBlbmRpbmdDdW11bGF0aXZlTm90aWZpY2F0aW9uPW51bGwpLHRoaXMubWlkZGxld2FyZXMubGVuZ3RoPTAsdGhpcy5zZWxlY3RvckNhY2hlPW5ldyBXZWFrTWFwLHRoaXMuZGVmYXVsdFNlbGVjdE9ic2VydmFibGU9bnVsbCx0aGlzLndlYlN0b3JlPW51bGwsdGhpcy5zbWFydHN0YXRlUmVmPXZvaWQgMCx0aGlzLnN0YXRlU3RvcmU9dm9pZCAwfX19fSk7ZnVuY3Rpb24gajZlKHMsZSl7cmV0dXJuIFhkZShzLm1hcCh0PT50LnNlbGVjdCgpKSkucGlwZShZMih0PT5lKC4uLnQpKSxBNygodCxhKT0+SlNPTi5zdHJpbmdpZnkodCk9PT1KU09OLnN0cmluZ2lmeShhKSkpfXZhciBWNmU9ZygoKT0+e3VyZSgpO1I3KCk7aShqNmUsImNvbXB1dGVkIil9KTt2YXIgVTZlLE55dD1nKCgpPT57dXJlKCk7cHJlKCk7VjZlKCk7VTZlPWNsYXNze3N0YXRpY3tpKHRoaXMsIlNtYXJ0c3RhdGUiKX1jb25zdHJ1Y3Rvcigpe3RoaXMuc3RhdGVQYXJ0TWFwPXt9LHRoaXMucGVuZGluZ1N0YXRlUGFydENyZWF0aW9uPW5ldyBNYXAsdGhpcy5iYXRjaERlcHRoPTAsdGhpcy5pc0ZsdXNoaW5nPSExLHRoaXMucGVuZGluZ05vdGlmaWNhdGlvbnM9bmV3IFNldH1nZXQgaXNCYXRjaGluZygpe3JldHVybiB0aGlzLmJhdGNoRGVwdGg+MH1yZWdpc3RlclBlbmRpbmdOb3RpZmljYXRpb24oZSl7dGhpcy5wZW5kaW5nTm90aWZpY2F0aW9ucy5hZGQoZSl9YXN5bmMgYmF0Y2goZSl7dGhpcy5iYXRjaERlcHRoKys7dHJ5e2F3YWl0IGUoKX1maW5hbGx5e2lmKHRoaXMuYmF0Y2hEZXB0aC0tLHRoaXMuYmF0Y2hEZXB0aD09PTAmJiF0aGlzLmlzRmx1c2hpbmcpe3RoaXMuaXNGbHVzaGluZz0hMDt0cnl7Zm9yKDt0aGlzLnBlbmRpbmdOb3RpZmljYXRpb25zLnNpemU+MDspe2xldCB0PVsuLi50aGlzLnBlbmRpbmdOb3RpZmljYXRpb25zXTt0aGlzLnBlbmRpbmdOb3RpZmljYXRpb25zLmNsZWFyKCk7Zm9yKGxldCBhIG9mIHQpdHJ5e2F3YWl0IGEubm90aWZ5Q2hhbmdlKCl9Y2F0Y2gocil7Y29uc29sZS5lcnJvcigiRXJyb3IgZmx1c2hpbmcgbm90aWZpY2F0aW9uIGZvciBzdGF0ZSBwYXJ0OiIscil9fX1maW5hbGx5e3RoaXMuaXNGbHVzaGluZz0hMX19fX1jb21wdXRlZChlLHQpe3JldHVybiBqNmUoZSx0KX1kaXNwb3NlKCl7Zm9yKGxldCBlIG9mIE9iamVjdC5rZXlzKHRoaXMuc3RhdGVQYXJ0TWFwKSl7bGV0IHQ9dGhpcy5zdGF0ZVBhcnRNYXBbZV07dCYmdC5kaXNwb3NlKCl9dGhpcy5zdGF0ZVBhcnRNYXA9e30sdGhpcy5wZW5kaW5nU3RhdGVQYXJ0Q3JlYXRpb24uY2xlYXIoKSx0aGlzLnBlbmRpbmdOb3RpZmljYXRpb25zLmNsZWFyKCl9YXN5bmMgZ2V0U3RhdGVQYXJ0KGUsdCxhPSJzb2Z0Iil7bGV0IHI9dGhpcy5wZW5kaW5nU3RhdGVQYXJ0Q3JlYXRpb24uZ2V0KGUpO2lmKHIpcmV0dXJuIHI7bGV0IG49dGhpcy5zdGF0ZVBhcnRNYXBbZV07aWYobilzd2l0Y2goYSl7Y2FzZSJtYW5kYXRvcnkiOnRocm93IG5ldyBFcnJvcihgU3RhdGUgcGFydCAnJHtlfScgYWxyZWFkeSBleGlzdHMsIGJ1dCBpbml0TW9kZSBpcyAnbWFuZGF0b3J5J2ApO2Nhc2UiZm9yY2UiOm4uZGlzcG9zZSgpO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIG59ZWxzZSBpZih0PT09dm9pZCAwKXRocm93IG5ldyBFcnJvcihgU3RhdGUgcGFydCAnJHtlfScgZG9lcyBub3QgZXhpc3QgYW5kIG5vIGluaXRpYWwgc3RhdGUgcHJvdmlkZWRgKTtsZXQgbz10aGlzLmNyZWF0ZVN0YXRlUGFydChlLHQsYSk7dGhpcy5wZW5kaW5nU3RhdGVQYXJ0Q3JlYXRpb24uc2V0KGUsbyk7dHJ5e3JldHVybiBhd2FpdCBvfWZpbmFsbHl7dGhpcy5wZW5kaW5nU3RhdGVQYXJ0Q3JlYXRpb24uZGVsZXRlKGUpfX1hc3luYyBjcmVhdGVTdGF0ZVBhcnQoZSx0LGE9InNvZnQiKXtsZXQgcj1uZXcgRWsoZSxhPT09InBlcnNpc3RlbnQiP3tkYk5hbWU6InNtYXJ0c3RhdGUiLHN0b3JlTmFtZTplfTp2b2lkIDApO3Iuc21hcnRzdGF0ZVJlZj10aGlzLGF3YWl0IHIuaW5pdCgpO2xldCBuPXIuZ2V0U3RhdGUoKTtyZXR1cm4gYT09PSJwZXJzaXN0ZW50IiYmbiE9PXZvaWQgMD9hd2FpdCByLnNldFN0YXRlKHsuLi50LC4uLm59KTphd2FpdCByLnNldFN0YXRlKHQpLHRoaXMuc3RhdGVQYXJ0TWFwW2VdPXIscn19fSk7ZnVuY3Rpb24gakhhKHMsZSl7bGV0e2NvbnRleHQ6dCxzdGF0ZVBhcnQ6YSxzZWxlY3RvckZuOnJ9PWUsbj1uZXcgU2V0LG89YS5zZWxlY3Qocikuc3Vic2NyaWJlKGQ9Pntmb3IobGV0IHUgb2Ygbil1KGQpfSksbD1pKCgpPT57bGV0IGQ9YS5nZXRTdGF0ZSgpO2lmKGQhPT12b2lkIDApcmV0dXJuIHI/cihkKTpkfSwiZ2V0VmFsdWUiKSxwPWkoZD0+e2xldCB1PWQsYz11LmRldGFpbDtpZighKCFjfHxjLmNvbnRleHQhPT10KSlpZih1LnN0b3BQcm9wYWdhdGlvbigpLGMuc3Vic2NyaWJlKXtsZXQgYj1jLmNhbGxiYWNrO24uYWRkKGIpO2xldCB2PWkoKCk9Pm4uZGVsZXRlKGIpLCJ1bnN1YnNjcmliZSIpO2IobCgpLHYpfWVsc2UgYy5jYWxsYmFjayhsKCkpfSwiaGFuZGxlciIpO3JldHVybiBzLmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHQtcmVxdWVzdCIscCksKCk9PntzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNvbnRleHQtcmVxdWVzdCIscCksby51bnN1YnNjcmliZSgpLG4uY2xlYXIoKX19dmFyIFJ5dD1nKCgpPT57aShqSGEsImF0dGFjaENvbnRleHRQcm92aWRlciIpfSk7dmFyIEIzPXt9O3l0KEIzLHtTbWFydHN0YXRlOigpPT5VNmUsU3RhdGVBY3Rpb246KCk9PkxrLFN0YXRlUGFydDooKT0+RWssU3RhdGVQcm9jZXNzOigpPT51YixhdHRhY2hDb250ZXh0UHJvdmlkZXI6KCk9PmpIYSxjb21wdXRlZDooKT0+ajZlfSk7dmFyIE95dD1nKCgpPT57Tnl0KCk7cHJlKCk7SDZlKCk7VjZlKCk7Unl0KCk7cTZlKCl9KTt2YXIgRnl0PWcoKCk9Pnt9KTt2YXIgVzZlLEJ5dD1nKCgpPT57Rnl0KCk7VzZlPWNsYXNzIHN7c3RhdGlje2kodGhpcywiU21hcnR1cmwiKX1zdGF0aWMgY3JlYXRlRnJvbVVybChlLHQpe2xldCBhPW5ldyBVUkwoZSkscj17fSxuPVtdO2Euc2VhcmNoJiZhLnNlYXJjaC5yZXBsYWNlKCI/IiwiIikuc3BsaXQoIiYiKS5tYXAoZD0+e24ucHVzaCh7a2V5OmQuc3BsaXQoIj0iKVswXSx2YWx1ZTpkLnNwbGl0KCI9IilbMV19KX0pO2ZvcihsZXQgZCBvZiBuKXJbZC5rZXldPWQudmFsdWU7aWYodD8uc2VhcmNoUGFyYW1zKWZvcihsZXQgZCBvZiBPYmplY3Qua2V5cyh0LnNlYXJjaFBhcmFtcykpcltkXT10LnNlYXJjaFBhcmFtc1tkXTtsZXQgbz1hLnBhdGhuYW1lfHwiIjtpZihPYmplY3Qua2V5cyhyKS5sZW5ndGg+MCl7bys9Ij8iO2xldCBkPSEwO2ZvcihsZXQgdSBvZiBPYmplY3Qua2V5cyhyKSlkP2Q9ITE6bys9IiYiLG8rPWAke3V9PSR7clt1XX1gfWxldCBsPXsuLi5hLGhyZWY6YS5ocmVmLG9yaWdpbjphLm9yaWdpbixwcm90b2NvbDphLnByb3RvY29sLHVzZXJuYW1lOmEudXNlcm5hbWUscGFzc3dvcmQ6YS5wYXNzd29yZCxob3N0OmEuaG9zdCxob3N0bmFtZTphLmhvc3RuYW1lLHBvcnQ6YS5wb3J0LHBhdGg6byxwYXRobmFtZTphLnBhdGhuYW1lLHNlYXJjaDphLnNlYXJjaCxzZWFyY2hQYXJhbXM6cixoYXNoOmEuaGFzaH07IWwucG9ydCYmbC5wcm90b2NvbD09PSJodHRwczoiJiYobC5wb3J0PSI0NDMiKSwhbC5wb3J0JiZsLnByb3RvY29sPT09Imh0dHA6IiYmKGwucG9ydD0iODAiKTtsZXQgcD1uZXcgcztyZXR1cm4gT2JqZWN0LmFzc2lnbihwLGwpLHB9c3RhdGljIGNyZWF0ZUZyb21QYXJzZWRVcmwoZSl7bGV0IHQ9bmV3IHM7cmV0dXJuIE9iamVjdC5hc3NpZ24odCxlKSx0fWNvbnN0cnVjdG9yKCl7dGhpcy5zZWFyY2hQYXJhbXM9e319Y2xvbmUoKXtsZXQgZT1uZXcgcztyZXR1cm4gT2JqZWN0LmFzc2lnbihlLHRoaXMpLGUuc2VhcmNoUGFyYW1zPXsuLi50aGlzLnNlYXJjaFBhcmFtc30sZX1zZXQoZSx0KXtyZXR1cm4gdGhpc1tlXT10LHRoaXN9dG9TdHJpbmcoKXtsZXQgZT0iIjtyZXR1cm4gdGhpcy51c2VybmFtZSYmIXRoaXMucGFzc3dvcmQmJihlPWAke3RoaXMudXNlcm5hbWV9QGApLHRoaXMudXNlcm5hbWUmJnRoaXMucGFzc3dvcmQmJihlPWAke3RoaXMudXNlcm5hbWV9OiR7dGhpcy5wYXNzd29yZH1AYCksYCR7dGhpcy5wcm90b2NvbH0vLyR7ZX0ke3RoaXMuaG9zdG5hbWV9OiR7dGhpcy5wb3J0fSR7dGhpcy5wYXRofWB9fX0pO3ZhciBSMT17fTt5dChSMSx7U21hcnR1cmw6KCk9Plc2ZX0pO3ZhciBHNmU9ZygoKT0+e0J5dCgpfSk7dmFyIEh5dD1nKCgpPT57fSk7dmFyIEs2ZT1nKCgpPT57U24oKTtTbigpfSk7dmFyIHF5dD1nKCgpPT57fSk7dmFyIGp5dD1nKCgpPT57fSk7dmFyIFZ5dD1nKCgpPT57fSk7dmFyIFV5dD1nKCgpPT57fSk7dmFyIFk2ZT17fTt2YXIgWjZlPWcoKCk9PntxeXQoKTtqeXQoKTtWeXQoKTtVeXQoKX0pO3ZhciBXeXQ9ZygoKT0+e1o2ZSgpO2hyZSgpfSk7dmFyIEd5dD1nKCgpPT57U24oKX0pO3ZhciBLeXQ9ZygoKT0+e30pO3ZhciBZeXQ9ZygoKT0+e1NuKCl9KTt2YXIgWnl0PWcoKCk9PntTbigpfSk7dmFyIFh5dD1nKCgpPT57fSk7dmFyIFF5dD1nKCgpPT57fSk7dmFyIEp5dD1nKCgpPT57fSk7dmFyIFg2ZT17fTt2YXIgZnJlPWcoKCk9PntHeXQoKTtLeXQoKTtZeXQoKTtaeXQoKTtYeXQoKTtReXQoKTtKeXQoKX0pO3ZhciBld3Q9ZygoKT0+e2ZyZSgpO0s2ZSgpfSk7dmFyIHR3dD1nKCgpPT57aHJlKCk7ZnJlKCl9KTt2YXIgYXd0PWcoKCk9Pnt9KTt2YXIgc3d0PWcoKCk9Pnt9KTt2YXIgUTZlPXt9O3ZhciBocmU9ZygoKT0+e0h5dCgpO0s2ZSgpO1d5dCgpO2V3dCgpO3R3dCgpO2F3dCgpO3N3dCgpfSk7dmFyIGl3dD1nKCgpPT57fSk7dmFyIHJ3dD1nKCgpPT57fSk7dmFyIEo2ZT17fTt2YXIgb3d0PWcoKCk9Pntpd3QoKTtyd3QoKX0pO3ZhciBud3Q9ZygoKT0+e30pO3ZhciBsd3Q9ZygoKT0+e30pO3ZhciBlNWU9e307dmFyIGN3dD1nKCgpPT57bnd0KCk7bHd0KCl9KTt2YXIgdDVlPXt9O3ZhciBkd3Q9ZygoKT0+e30pO3ZhciBhNWU9ZygoKT0+e1NuKCl9KTt2YXIgdXd0PWcoKCk9PntTbigpfSk7dmFyIHB3dD1nKCgpPT57YTVlKCl9KTt2YXIgczVlPXt9O3ZhciBod3Q9ZygoKT0+e2E1ZSgpO3V3dCgpO3B3dCgpfSk7dmFyIGZ3dD1nKCgpPT57fSk7dmFyIG13dD1nKCgpPT57fSk7dmFyIGk1ZT17fTt2YXIgZ3d0PWcoKCk9Pntmd3QoKTttd3QoKX0pO3ZhciByNWU9ZygoKT0+e30pO3ZhciBvNWUsYnd0PWcoKCk9PntyNWUoKTtvNWU9Y2xhc3N7c3RhdGlje2kodGhpcywiSUNuYW1lRGVzY3JpcHRvciIpfX19KTt2YXIgdnd0PWcoKCk9Pnt9KTt2YXIgeHd0PWcoKCk9Pnt9KTt2YXIgeXd0PWcoKCk9Pnt9KTt2YXIgd3d0PWcoKCk9Pnt9KTt2YXIga3d0PWcoKCk9Pnt9KTt2YXIgU3d0PWcoKCk9Pnt9KTt2YXIgX3d0PWcoKCk9Pnt9KTt2YXIgTXd0PWcoKCk9Pnt9KTt2YXIgend0PWcoKCk9Pnt9KTt2YXIgQ3d0PWcoKCk9Pnt9KTt2YXIgbXJlPXt9O3l0KG1yZSx7SUNuYW1lRGVzY3JpcHRvcjooKT0+bzVlfSk7dmFyIFR3dD1nKCgpPT57cjVlKCk7Ynd0KCk7dnd0KCk7eHd0KCk7eXd0KCk7d3d0KCk7a3d0KCk7U3d0KCk7X3d0KCk7TXd0KCk7end0KCk7Q3d0KCl9KTt2YXIgbjVlPWcoKCk9Pnt9KTt2YXIgJHd0PWcoKCk9PntuNWUoKX0pO3ZhciBsNWU9e307dmFyIER3dD1nKCgpPT57JHd0KCk7bjVlKCl9KTt2YXIgYzVlPXt9O3ZhciBMd3Q9ZygoKT0+e30pO3ZhciBFd3Q9ZygoKT0+e30pO3ZhciBQd3Q9ZygoKT0+e30pO3ZhciBJd3Q9ZygoKT0+e30pO3ZhciBkNWU9e307dmFyIEF3dD1nKCgpPT57RXd0KCk7UHd0KCk7SXd0KCl9KTt2YXIgTnd0PWcoKCk9Pnt9KTt2YXIgSDM9e307eXQoSDMse2J1c2luZXNzOigpPT5RNmUsY29kZTooKT0+SjZlLGNvbnRhaW5lcjooKT0+ZTVlLGNvbnRlbnQ6KCk9PnM1ZSxkYXRhYmFzZTooKT0+WTZlLGRlc2NyaXB0b3JzOigpPT50NWUsZmluYW5jZTooKT0+WDZlLGdlbmVyYWw6KCk9Pmk1ZSxuZXR3b3JrOigpPT5tcmUsc2FhczooKT0+bDVlLHN0b3JhZ2U6KCk9PmM1ZSx3ZWJzaXRlOigpPT5kNWV9KTt2YXIgU249ZygoKT0+e2hyZSgpO293dCgpO2N3dCgpO1o2ZSgpO2R3dCgpO2ZyZSgpO2h3dCgpO2d3dCgpO1R3dCgpO0R3dCgpO0x3dCgpO0F3dCgpO053dCgpfSk7dmFyIE4wPWcoKCk9PntpbygpO1NuKCl9KTt2YXIgZ3JlPWcoKCk9PntOMCgpfSk7dmFyIGloLFBrPWcoKCk9PntOMCgpO2loPWNsYXNze3N0YXRpY3tpKHRoaXMsIlRhZyIpfWNvbnN0cnVjdG9yKCl7dGhpcy50YWdMZXZlbD0ibGV2ZWxib3VuZCJ9YXBwZW5kVG9Eb20oKXshdGhpcy5lbGVtZW50UmVmLnBhcmVudEVsZW1lbnQmJiF0aGlzLmVsZW1lbnRSZWYucGFyZW50Tm9kZSYmZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnRSZWYpfXJlbW92ZUZyb21Eb20oKXt0aGlzLmVsZW1lbnRSZWYucGFyZW50RWxlbWVudD90aGlzLmVsZW1lbnRSZWYucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLmVsZW1lbnRSZWYpOnRoaXMuZWxlbWVudFJlZi5wYXJlbnROb2RlJiZ0aGlzLmVsZW1lbnRSZWYucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmVsZW1lbnRSZWYpfX19KTt2YXIgcTMsYnJlPWcoKCk9PntOMCgpO2dyZSgpO1BrKCk7cTM9Y2xhc3MgcyBleHRlbmRzIGloe3N0YXRpY3tpKHRoaXMsIkpzb25MZFRhZyIpfXN0YXRpYyBjcmVhdGVDb21wYW55SnNvbkxkKGUpe2xldCB0PXsiQGNvbnRleHQiOiJodHRwczovL3NjaGVtYS5vcmciLCJAdHlwZSI6IkNvcnBvcmF0aW9uIixuYW1lOmUubmFtZSxhbHRlcm5hdGVOYW1lOmUubmFtZS5yZXBsYWNlKCIgR21iSCIsIiIpLHVybDplLndlYnNpdGUsbG9nbzplLmxvZ29VcmwsY29udGFjdFBvaW50OnsiQHR5cGUiOiJDb250YWN0UG9pbnQiLHRlbGVwaG9uZTplLnBob25lLGNvbnRhY3RUeXBlOiJjdXN0b21lciBzZXJ2aWNlIixhcmVhU2VydmVkOiJERSIsYXZhaWxhYmxlTGFuZ3VhZ2U6WyJlbiIsIkdlcm1hbiJdfSxzYW1lQXM6W119LGE9ZS5zb2NpYWxzPy5maW5kKG89Pm8udHlwZT09PSJmYWNlYm9vayIpPy51cmw7YSYmdC5zYW1lQXMucHVzaChhKTtsZXQgcj1lLnNvY2lhbHM/LmZpbmQobz0+by50eXBlPT09InR3aXR0ZXIiKT8udXJsO3JldHVybiByJiZ0LnNhbWVBcy5wdXNoKHIpLG5ldyBzKHQpfXN0YXRpYyBjcmVhdGVOZXdzQXJ0aWNsZUpzb25MZChlKXtsZXQgdD17IkBjb250ZXh0IjoiaHR0cHM6Ly9zY2hlbWEub3JnIiwiQHR5cGUiOiJOZXdzQXJ0aWNsZSIsbWFpbkVudGl0eU9mUGFnZTp7IkB0eXBlIjoiV2ViUGFnZSIsIkBpZCI6d2luZG93LmxvY2F0aW9uLmhyZWZ9LGhlYWRsaW5lOiJBcnRpY2xlIGhlYWRsaW5lIixpbWFnZTpbZS5mZWF0dXJlZEltYWdlVXJsXSxkYXRlUHVibGlzaGVkOm5ldyBEYXRlKGUudGltZXN0YW1wKS50b0lTT1N0cmluZygpLGRhdGVNb2RpZmllZDpuZXcgRGF0ZShlLnRpbWVzdGFtcCkudG9JU09TdHJpbmcoKSxhdXRob3I6eyJAdHlwZSI6IlBlcnNvbiIsbmFtZTpgJHtlLmF1dGhvci5maXJzdE5hbWV9ICR7ZS5hdXRob3Iuc3VyTmFtZX1gfSxwdWJsaXNoZXI6eyJAdHlwZSI6Ik9yZ2FuaXphdGlvbiIsbmFtZTplLmF1dGhvci5zdXJOYW1lLGxvZ286eyJAdHlwZSI6IkltYWdlT2JqZWN0Iix1cmw6ZS5hdXRob3Iuc3VyTmFtZX19LGRlc2NyaXB0aW9uOmUuYXV0aG9yLmZpcnN0TmFtZX07cmV0dXJuIG5ldyBzKHQpfXN0YXRpYyBjcmVhdGVQcm9kdWN0SnNvbkxkKGUsdCl7bGV0IGE9eyJAY29udGV4dCI6Imh0dHBzOi8vc2NoZW1hLm9yZyIsIkB0eXBlIjoiU29mdHdhcmVBcHBsaWNhdGlvbiIsbmFtZTplLm5hbWUsZGVzY3JpcHRpb246ZS5kZXNjcmlwdGlvbixvcGVyYXRpbmdTeXN0ZW06ZS5vcyxhcHBsaWNhdGlvbkNhdGVnb3J5OmUuY2F0ZWdvcnksb2ZmZXJzOnsiQHR5cGUiOiJPZmZlciIsbmFtZToiVXNlci1iYXNlZCBQbGFuIixwcmljZVNwZWNpZmljYXRpb246eyJAdHlwZSI6IlByb3BlcnR5VmFsdWVTcGVjaWZpY2F0aW9uIix2YWx1ZU5hbWU6Ik51bWJlciBvZiBVc2VycyIsdmFsdWVSZXF1aXJlZDohMCxwcmljZToiNC45OSIscHJpY2VDdXJyZW5jeToiRVVSIn19LHB1Ymxpc2hlcjp0P3RoaXMuY3JlYXRlQ29tcGFueUpzb25MZCh0KS5lbGVtZW50UmVmLnRleHRDb250ZW50OnZvaWQgMCxzY3JlZW5zaG90OiJodHRwczovL3d3dy5zb2NpYWwuaW8vc2NyZWVuc2hvdC5wbmciLHVybDoiaHR0cHM6Ly93d3cuc29jaWFsLmlvLyJ9O3JldHVybiBuZXcgcyhhKX1jb25zdHJ1Y3RvcihlKXtzdXBlcigpO2xldCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO3QudHlwZT0iYXBwbGljYXRpb24vbGQranNvbiIsdC50ZXh0PUpTT04uc3RyaW5naWZ5KGUpLHRoaXMuZWxlbWVudFJlZj10fX19KTt2YXIgX24sdnJlPWcoKCk9PntOMCgpO1BrKCk7X249Y2xhc3MgcyBleHRlbmRzIGloe3N0YXRpY3tpKHRoaXMsIk9wZW5ncmFwaFRhZyIpfXN0YXRpYyBjcmVhdGVOZXdzQXJ0aWNsZU9nVGFncyhlKXtsZXQgdD1bXTtyZXR1cm4gdC5wdXNoKG5ldyBzKCJvZzp1cmwiLGUudXJsPz9nbG9iYWxUaGlzLmxvY2F0aW9uLmhyZWYpKSx0LnB1c2gobmV3IHMoIm9nOnRpdGxlIixlLnRpdGxlKSksdC5wdXNoKG5ldyBzKCJvZzpkZXNjcmlwdGlvbiIsZS5jb250ZW50KSksdC5wdXNoKG5ldyBzKCJvZzppbWFnZSIsZS5mZWF0dXJlZEltYWdlVXJsPz8iIikpLHR9c3RhdGljIGNyZWF0ZVByb2R1Y3RPZ1RhZ3MoZSl7bGV0IHQ9W107cmV0dXJuIHQucHVzaChuZXcgcygib2c6dHlwZSIsInByb2R1Y3QiKSksdC5wdXNoKG5ldyBzKCJvZzp1cmwiLGdsb2JhbFRoaXMubG9jYXRpb24uaHJlZikpLHQucHVzaChuZXcgcygib2c6dGl0bGUiLGAke2UubmFtZX0gLSAke2Uuc2xvZ2FufWApKSx0LnB1c2gobmV3IHMoIm9nOnNpdGVfbmFtZSIsZS5uYW1lKSksdC5wdXNoKG5ldyBzKCJvZzpkZXNjcmlwdGlvbiIsZS5kZXNjcmlwdGlvbikpLHQucHVzaChuZXcgcygib2c6aW1hZ2UiLGUubG9nb0xpbmspKSx0fXN0YXRpYyBjcmVhdGVDb21wYW55T2dUYWdzKGUpe2xldCB0PVtdO3JldHVybiB0LnB1c2gobmV3IHMoIm9nOnR5cGUiLCJjb21wYW55IikpLHQucHVzaChuZXcgcygib2c6dXJsIixnbG9iYWxUaGlzLmxvY2F0aW9uLmhyZWYpKSx0LnB1c2gobmV3IHMoIm9nOnRpdGxlIixlLm5hbWUpKSx0LnB1c2gobmV3IHMoIm9nOnNpdGVfbmFtZSIsZS5uYW1lKSksdC5wdXNoKG5ldyBzKCJvZzpkZXNjcmlwdGlvbiIsZS5kZXNjcmlwdGlvbikpLHQucHVzaChuZXcgcygib2c6aW1hZ2UiLGUubG9nb1VybD8/IiIpKSx0fWNvbnN0cnVjdG9yKGUsdCl7c3VwZXIoKTtsZXQgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJtZXRhIik7YS5zZXRBdHRyaWJ1dGUoInByb3BlcnR5IixlKSxhLmNvbnRlbnQ9dCx0aGlzLmVsZW1lbnRSZWY9YX19fSk7dmFyIHBiLHU1ZT1nKCgpPT57UGsoKTticmUoKTt2cmUoKTtwNWUoKTtOMCgpO3BiPWNsYXNze3N0YXRpY3tpKHRoaXMsIlRhZ0xldmVsIil9c2V0IHRpdGxlKGUpe3RoaXMudGl0bGVTdG9yZT1lLHRoaXMuc3RhdGU9PT0iZW5hYmxlZCImJihkb2N1bWVudC50aXRsZT10aGlzLnRpdGxlU3RvcmUpfWdldCB0aXRsZSgpe3JldHVybiB0aGlzLnRpdGxlU3RvcmV9Y29uc3RydWN0b3IoZSx0KXt0aGlzLnRhZ3M9W10sdGhpcy5zdGF0ZT0iZGlzYWJsZWQiLHRoaXMudGFnTWFuYWdlclJlZj1lLHRoaXMudHlwZT10fWFkZFRhZyhlKXtpZihlIGluc3RhbmNlb2YgQXJyYXkpZm9yKGxldCB0IG9mIGUpdGhpcy5hZGRUYWcodCk7ZWxzZSB0aGlzLnRhZ3MucHVzaChlKSx0aGlzLnN0YXRlPT09ImVuYWJsZWQiJiZlLmFwcGVuZFRvRG9tKCl9YXN5bmMgYWRkQ29tcGFueUluZm8oZSl7dGhpcy5hZGRUYWcocTMuY3JlYXRlQ29tcGFueUpzb25MZChlKSksdGhpcy5hZGRUYWcobmV3IF9uKCJvZzp0eXBlIiwiYnVzaW5lc3MuYnVzaW5lc3MiKSksdGhpcy5hZGRUYWcobmV3IF9uKCJvZzp0aXRsZSIsZS5uYW1lKSksdGhpcy5hZGRUYWcobmV3IF9uKCJvZzp1cmwiLGUud2Vic2l0ZT8/IiIpKSx0aGlzLmFkZFRhZyhuZXcgX24oIm9nOmltYWdlIixlLmxvZ29Vcmw/PyIiKSksdGhpcy5hZGRUYWcobmV3IF9uKCJidXNpbmVzczpjb250YWN0X2RhdGE6c3RyZWV0X2FkZHJlc3MiLGAke2UuYWRkcmVzcy5zdHJlZXROYW1lfSAke2UuYWRkcmVzcy5ob3VzZU51bWJlcn1gKSksdGhpcy5hZGRUYWcobmV3IF9uKCJidXNpbmVzczpjb250YWN0X2RhdGE6bG9jYWxpdHkiLGUuYWRkcmVzcy5wb3N0YWxDb2RlKSksdGhpcy5hZGRUYWcobmV3IF9uKCJidXNpbmVzczpjb250YWN0X2RhdGE6cmVnaW9uIixlLmFkZHJlc3MuY2l0eSkpLHRoaXMuYWRkVGFnKG5ldyBfbigiYnVzaW5lc3M6Y29udGFjdF9kYXRhOnBvc3RhbF9jb2RlIixlLmFkZHJlc3MucG9zdGFsQ29kZSkpLHRoaXMuYWRkVGFnKG5ldyBfbigiYnVzaW5lc3M6Y29udGFjdF9kYXRhOmNvdW50cnlfbmFtZSIsZS5hZGRyZXNzLmNvdW50cnkpKX1hZGROZXdzQXJ0aWNsZUluZm8oZSl7dGhpcy5hZGRUYWcocTMuY3JlYXRlTmV3c0FydGljbGVKc29uTGQoZSkpLHRoaXMuYWRkVGFnKF9uLmNyZWF0ZU5ld3NBcnRpY2xlT2dUYWdzKGUpKX1hZGRQcm9kdWN0SW5mbyhlLHQpe3RoaXMuYWRkVGFnKHEzLmNyZWF0ZVByb2R1Y3RKc29uTGQoZSx0KSksdGhpcy5hZGRUYWcoX24uY3JlYXRlUHJvZHVjdE9nVGFncyhlKSl9YXN5bmMgZW5hYmxlKCl7dGhpcy50aXRsZSYmKGRvY3VtZW50LnRpdGxlPXRoaXMudGl0bGUpO2ZvcihsZXQgZSBvZiB0aGlzLnRhZ3MpZS5hcHBlbmRUb0RvbSgpO3RoaXMuc3RhdGU9ImVuYWJsZWQifWFzeW5jIGRpc2FibGUoKXtmb3IobGV0IGUgb2YgdGhpcy50YWdzKWUucmVtb3ZlRnJvbURvbSgpO3RoaXMuc3RhdGU9ImRpc2FibGVkIn19fSk7dmFyIFBjLGg1ZT1nKCgpPT57UGsoKTtQYz1jbGFzcyBleHRlbmRzIGloe3N0YXRpY3tpKHRoaXMsIk1ldGFUYWciKX1jb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCk7bGV0IGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibWV0YSIpO2EubmFtZT1lLGEuY29udGVudD10LHRoaXMuZWxlbWVudFJlZj1hfX19KTt2YXIgeHJlLHA1ZT1nKCgpPT57dTVlKCk7TjAoKTtncmUoKTtoNWUoKTticmUoKTt2cmUoKTt4cmU9Y2xhc3N7c3RhdGlje2kodGhpcywiVGFnTWFuYWdlciIpfWNvbnN0cnVjdG9yKCl7dGhpcy5nbG9iYWxMZXZlbD1uZXcgcGIodGhpcywiZ2xvYmFsIiksdGhpcy5iYXNlTGV2ZWw9bmV3IHBiKHRoaXMsImJhc2UiKX1hc3luYyBzZXR1cChlKXtzd2l0Y2godGhpcy5nbG9iYWxMZXZlbC5hZGRUYWcobmV3IFBjKCJnb29nbGUiLCJub3RyYW5zbGF0ZSIpKSx0aGlzLmdsb2JhbExldmVsLmFkZFRhZyhuZXcgUGMoInJldmlzaXQtYWZ0ZXIiLCIxIGRheXMiKSksZS50d2l0dGVySGFuZGxlJiYodGhpcy5nbG9iYWxMZXZlbC5hZGRUYWcobmV3IFBjKCJ0d2l0dGVyOmNhcmQiLCJzdW1tYXJ5X2xhcmdlX2ltYWdlIikpLHRoaXMuZ2xvYmFsTGV2ZWwuYWRkVGFnKG5ldyBQYygidHdpdHRlcjpzaXRlIixlLnR3aXR0ZXJIYW5kbGUpKSx0aGlzLmdsb2JhbExldmVsLmFkZFRhZyhuZXcgUGMoInR3aXR0ZXI6Y3JlYXRvciIsZS50d2l0dGVySGFuZGxlKSkpLHRoaXMuYmFzZUxldmVsLnRpdGxlPWUudGl0bGUsZS5kZXNjcmlwdGlvbiYmdGhpcy5iYXNlTGV2ZWwuYWRkVGFnKG5ldyBQYygiZGVzY3JpcHRpb24iLGUuZGVzY3JpcHRpb24pKSxlLmNhbm9uaWNhbERvbWFpbiYmdGhpcy5iYXNlTGV2ZWwuYWRkVGFnKG5ldyBQYygiY2Fub25pY2FsIixlLmNhbm9uaWNhbERvbWFpbikpLCEwKXtjYXNlKGUubGRDb21wYW55JiYhZS5sZFByb2R1Y3QpOnRoaXMuYmFzZUxldmVsLmFkZENvbXBhbnlJbmZvKGUubGRDb21wYW55KTticmVhaztjYXNlISFlLmxkUHJvZHVjdDp0aGlzLmJhc2VMZXZlbC5hZGRQcm9kdWN0SW5mbyhlLmxkUHJvZHVjdCxlLmxkQ29tcGFueSk7YnJlYWt9YXdhaXQgdGhpcy5nbG9iYWxMZXZlbC5lbmFibGUoKSx0aGlzLmFjdGl2ZUxldmVsPXRoaXMuYmFzZUxldmVsLGF3YWl0IHRoaXMuYWN0aXZlTGV2ZWwuZW5hYmxlKCl9YXN5bmMgc2V0U3ViUGFnZUxldmVsKGUpe2xldCB0PW5ldyBwYih0aGlzLCJzdWJwYWdlIik7cmV0dXJuIHQudGl0bGU9ZS50aXRsZSxlLmRlc2NyaXB0aW9uJiZ0LmFkZFRhZyhuZXcgUGMoImRlc2NyaXB0aW9uIixlLmRlc2NyaXB0aW9uKSksYXdhaXQgdGhpcy5hY3RpdmVMZXZlbC5kaXNhYmxlKCksdGhpcy5hY3RpdmVMZXZlbD10LGF3YWl0IHRoaXMuYWN0aXZlTGV2ZWwuZW5hYmxlKCksdH1hc3luYyByZXZlcnRUb0Jhc2VMZXZlbCgpe3RoaXMuYWN0aXZlTGV2ZWwhPT10aGlzLmJhc2VMZXZlbCYmKGF3YWl0IHRoaXMuYWN0aXZlTGV2ZWwuZGlzYWJsZSgpLHRoaXMuYWN0aXZlTGV2ZWw9dGhpcy5iYXNlTGV2ZWwsYXdhaXQgdGhpcy5hY3RpdmVMZXZlbC5lbmFibGUoKSl9fX0pO3ZhciBJayxSd3Q9ZygoKT0+e04wKCk7Z3JlKCk7cDVlKCk7dTVlKCk7SWs9Y2xhc3N7c3RhdGlje2kodGhpcywiV2ViU2V0dXAiKX1jb25zdHJ1Y3RvcihlKXt0aGlzLnRhZ01hbmFnZXI9bmV3IHhyZSx0aGlzLnJlYWR5RGVmZXJyZWQ9bXQuZGVmZXIoKSx0aGlzLnJlYWR5Rm9yU21hcnRzc3JEZWZlcnJlZD1tdC5kZWZlcigpLHRoaXMucmVhZHlQcm9taXNlPXRoaXMucmVhZHlEZWZlcnJlZC5wcm9taXNlLHRoaXMucmVhZHlGb3JTbWFydHNzclByb21pc2U9dGhpcy5yZWFkeUZvclNtYXJ0c3NyRGVmZXJyZWQucHJvbWlzZSx0aGlzLm9wdGlvbnM9ZSx0aGlzLnNldHVwKCkudGhlbigoKT0+e3RoaXMucmVhZHlEZWZlcnJlZC5yZXNvbHZlKCksdGhpcy5vcHRpb25zLnNtYXJ0c3NyV2FpdEZvclJlYWR5U2lnbmFsfHx0aGlzLnJlYWR5Rm9yU21hcnRzc3JEZWZlcnJlZC5yZXNvbHZlKCl9KX1hc3luYyBzZXR1cChlKXtlJiYodGhpcy5vcHRpb25zPWUpLGF3YWl0IHRoaXMudGFnTWFuYWdlci5zZXR1cCh0aGlzLm9wdGlvbnMubWV0YU9iamVjdCl9cmV2ZXJ0VG9CYXNlTGV2ZWwoKXt0aGlzLnRhZ01hbmFnZXIucmV2ZXJ0VG9CYXNlTGV2ZWwoKX1hc3luYyBzZXRTdWJMZXZlbChlKXtyZXR1cm4gYXdhaXQgdGhpcy50YWdNYW5hZ2VyLnNldFN1YlBhZ2VMZXZlbChlKX1mbGFzaFRpdGxlKGUpe31pbmZvcm1SZWFkeUZvclNtYXJ0c3NyKCl7dGhpcy5vcHRpb25zLnNtYXJ0c3NyV2FpdEZvclJlYWR5U2lnbmFsfHxjb25zb2xlLmVycm9yKCJZb3UgaGF2ZSBub3QgaW5kaWNhdGVkIHRoYXQgeW91IGluZm9ybSBzbWFydHNzciBieSBhIGRlZGljYXRlZCBzaWduYWwhIFBsZWFzZSBjb25zaWRlciBkb2luZyBzbyEiKSx0aGlzLnJlYWR5Rm9yU21hcnRzc3JEZWZlcnJlZC5yZXNvbHZlKCl9fX0pO3ZhciBmNWUsT3d0PWcoKCk9PntOMCgpO2Y1ZT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJUaXRsZSIpfX19KTt2YXIgbTVlPXt9O3l0KG01ZSx7SnNvbkxkVGFnOigpPT5xMyxNZXRhVGFnOigpPT5QYyxPcGVuZ3JhcGhUYWc6KCk9Pl9uLFRpdGxlOigpPT5mNWUsV2ViU2V0dXA6KCk9PklrfSk7dmFyIHlyZT1nKCgpPT57Und0KCk7aDVlKCk7dnJlKCk7YnJlKCk7T3d0KCl9KTtmdW5jdGlvbiBGd3QocyxlLHQpe3JldHVybiBNYXRoLm1heChzLE1hdGgubWluKGUsdCkpfWZ1bmN0aW9uIFdIYShzLGUsdCl7cmV0dXJuKDEtdCkqcyt0KmV9ZnVuY3Rpb24gR0hhKHMsZSx0LGEpe3JldHVybiBXSGEocyxlLDEtTWF0aC5leHAoLXQqYSkpfWZ1bmN0aW9uIEtIYShzLGUpe3JldHVybihzJWUrZSklZX1mdW5jdGlvbiBaSGEocyxlKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24oLi4uYSl7bGV0IHI9dGhpcztjbGVhclRpbWVvdXQodCksdD1zZXRUaW1lb3V0KCgpPT57dD12b2lkIDAscy5hcHBseShyLGEpfSxlKX19dmFyIFVIYSxZSGEsWEhhLEJ3dCxId3QscmgsUUhhLHF3dCxBayxqd3Q9ZygoKT0+e1VIYT0iMS4zLjE3IjtpKEZ3dCwiY2xhbXAiKTtpKFdIYSwibGVycCIpO2koR0hhLCJkYW1wIik7aShLSGEsIm1vZHVsbyIpO1lIYT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJBbmltYXRlIil9aXNSdW5uaW5nPSExO3ZhbHVlPTA7ZnJvbT0wO3RvPTA7Y3VycmVudFRpbWU9MDtsZXJwO2R1cmF0aW9uO2Vhc2luZztvblVwZGF0ZTthZHZhbmNlKHMpe2lmKCF0aGlzLmlzUnVubmluZylyZXR1cm47bGV0IGU9ITE7aWYodGhpcy5kdXJhdGlvbiYmdGhpcy5lYXNpbmcpe3RoaXMuY3VycmVudFRpbWUrPXM7bGV0IHQ9Rnd0KDAsdGhpcy5jdXJyZW50VGltZS90aGlzLmR1cmF0aW9uLDEpO2U9dD49MTtsZXQgYT1lPzE6dGhpcy5lYXNpbmcodCk7dGhpcy52YWx1ZT10aGlzLmZyb20rKHRoaXMudG8tdGhpcy5mcm9tKSphfWVsc2UgdGhpcy5sZXJwPyh0aGlzLnZhbHVlPUdIYSh0aGlzLnZhbHVlLHRoaXMudG8sdGhpcy5sZXJwKjYwLHMpLE1hdGgucm91bmQodGhpcy52YWx1ZSk9PT10aGlzLnRvJiYodGhpcy52YWx1ZT10aGlzLnRvLGU9ITApKToodGhpcy52YWx1ZT10aGlzLnRvLGU9ITApO2UmJnRoaXMuc3RvcCgpLHRoaXMub25VcGRhdGU/Lih0aGlzLnZhbHVlLGUpfXN0b3AoKXt0aGlzLmlzUnVubmluZz0hMX1mcm9tVG8ocyxlLHtsZXJwOnQsZHVyYXRpb246YSxlYXNpbmc6cixvblN0YXJ0Om4sb25VcGRhdGU6b30pe3RoaXMuZnJvbT10aGlzLnZhbHVlPXMsdGhpcy50bz1lLHRoaXMubGVycD10LHRoaXMuZHVyYXRpb249YSx0aGlzLmVhc2luZz1yLHRoaXMuY3VycmVudFRpbWU9MCx0aGlzLmlzUnVubmluZz0hMCxuPy4oKSx0aGlzLm9uVXBkYXRlPW99fTtpKFpIYSwiZGVib3VuY2UiKTtYSGE9Y2xhc3N7c3RhdGlje2kodGhpcywiRGltZW5zaW9ucyIpfWNvbnN0cnVjdG9yKHMsZSx7YXV0b1Jlc2l6ZTp0PSEwLGRlYm91bmNlOmE9MjUwfT17fSl7dGhpcy53cmFwcGVyPXMsdGhpcy5jb250ZW50PWUsdCYmKHRoaXMuZGVib3VuY2VkUmVzaXplPVpIYSh0aGlzLnJlc2l6ZSxhKSx0aGlzLndyYXBwZXIgaW5zdGFuY2VvZiBXaW5kb3c/d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5kZWJvdW5jZWRSZXNpemUsITEpOih0aGlzLndyYXBwZXJSZXNpemVPYnNlcnZlcj1uZXcgUmVzaXplT2JzZXJ2ZXIodGhpcy5kZWJvdW5jZWRSZXNpemUpLHRoaXMud3JhcHBlclJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy53cmFwcGVyKSksdGhpcy5jb250ZW50UmVzaXplT2JzZXJ2ZXI9bmV3IFJlc2l6ZU9ic2VydmVyKHRoaXMuZGVib3VuY2VkUmVzaXplKSx0aGlzLmNvbnRlbnRSZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuY29udGVudCkpLHRoaXMucmVzaXplKCl9d2lkdGg9MDtoZWlnaHQ9MDtzY3JvbGxIZWlnaHQ9MDtzY3JvbGxXaWR0aD0wO2RlYm91bmNlZFJlc2l6ZTt3cmFwcGVyUmVzaXplT2JzZXJ2ZXI7Y29udGVudFJlc2l6ZU9ic2VydmVyO2Rlc3Ryb3koKXt0aGlzLndyYXBwZXJSZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpLHRoaXMuY29udGVudFJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCksdGhpcy53cmFwcGVyPT09d2luZG93JiZ0aGlzLmRlYm91bmNlZFJlc2l6ZSYmd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5kZWJvdW5jZWRSZXNpemUsITEpfXJlc2l6ZT1pKCgpPT57dGhpcy5vbldyYXBwZXJSZXNpemUoKSx0aGlzLm9uQ29udGVudFJlc2l6ZSgpfSwicmVzaXplIik7b25XcmFwcGVyUmVzaXplPWkoKCk9Pnt0aGlzLndyYXBwZXIgaW5zdGFuY2VvZiBXaW5kb3c/KHRoaXMud2lkdGg9d2luZG93LmlubmVyV2lkdGgsdGhpcy5oZWlnaHQ9d2luZG93LmlubmVySGVpZ2h0KToodGhpcy53aWR0aD10aGlzLndyYXBwZXIuY2xpZW50V2lkdGgsdGhpcy5oZWlnaHQ9dGhpcy53cmFwcGVyLmNsaWVudEhlaWdodCl9LCJvbldyYXBwZXJSZXNpemUiKTtvbkNvbnRlbnRSZXNpemU9aSgoKT0+e3RoaXMud3JhcHBlciBpbnN0YW5jZW9mIFdpbmRvdz8odGhpcy5zY3JvbGxIZWlnaHQ9dGhpcy5jb250ZW50LnNjcm9sbEhlaWdodCx0aGlzLnNjcm9sbFdpZHRoPXRoaXMuY29udGVudC5zY3JvbGxXaWR0aCk6KHRoaXMuc2Nyb2xsSGVpZ2h0PXRoaXMud3JhcHBlci5zY3JvbGxIZWlnaHQsdGhpcy5zY3JvbGxXaWR0aD10aGlzLndyYXBwZXIuc2Nyb2xsV2lkdGgpfSwib25Db250ZW50UmVzaXplIik7Z2V0IGxpbWl0KCl7cmV0dXJue3g6dGhpcy5zY3JvbGxXaWR0aC10aGlzLndpZHRoLHk6dGhpcy5zY3JvbGxIZWlnaHQtdGhpcy5oZWlnaHR9fX0sQnd0PWNsYXNze3N0YXRpY3tpKHRoaXMsIkVtaXR0ZXIiKX1ldmVudHM9e307ZW1pdChzLC4uLmUpe2xldCB0PXRoaXMuZXZlbnRzW3NdfHxbXTtmb3IobGV0IGE9MCxyPXQubGVuZ3RoO2E8cjthKyspdFthXT8uKC4uLmUpfW9uKHMsZSl7cmV0dXJuIHRoaXMuZXZlbnRzW3NdPy5wdXNoKGUpfHwodGhpcy5ldmVudHNbc109W2VdKSwoKT0+e3RoaXMuZXZlbnRzW3NdPXRoaXMuZXZlbnRzW3NdPy5maWx0ZXIodD0+ZSE9PXQpfX1vZmYocyxlKXt0aGlzLmV2ZW50c1tzXT10aGlzLmV2ZW50c1tzXT8uZmlsdGVyKHQ9PmUhPT10KX1kZXN0cm95KCl7dGhpcy5ldmVudHM9e319fSxId3Q9MTAwLzYscmg9e3Bhc3NpdmU6ITF9LFFIYT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJWaXJ0dWFsU2Nyb2xsIil9Y29uc3RydWN0b3IocyxlPXt3aGVlbE11bHRpcGxpZXI6MSx0b3VjaE11bHRpcGxpZXI6MX0pe3RoaXMuZWxlbWVudD1zLHRoaXMub3B0aW9ucz1lLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMub25XaW5kb3dSZXNpemUsITEpLHRoaXMub25XaW5kb3dSZXNpemUoKSx0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2hlZWwiLHRoaXMub25XaGVlbCxyaCksdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHRoaXMub25Ub3VjaFN0YXJ0LHJoKSx0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIix0aGlzLm9uVG91Y2hNb3ZlLHJoKSx0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLHRoaXMub25Ub3VjaEVuZCxyaCl9dG91Y2hTdGFydD17eDowLHk6MH07bGFzdERlbHRhPXt4OjAseTowfTt3aW5kb3c9e3dpZHRoOjAsaGVpZ2h0OjB9O2VtaXR0ZXI9bmV3IEJ3dDtvbihzLGUpe3JldHVybiB0aGlzLmVtaXR0ZXIub24ocyxlKX1kZXN0cm95KCl7dGhpcy5lbWl0dGVyLmRlc3Ryb3koKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLm9uV2luZG93UmVzaXplLCExKSx0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2hlZWwiLHRoaXMub25XaGVlbCxyaCksdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHRoaXMub25Ub3VjaFN0YXJ0LHJoKSx0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIix0aGlzLm9uVG91Y2hNb3ZlLHJoKSx0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLHRoaXMub25Ub3VjaEVuZCxyaCl9b25Ub3VjaFN0YXJ0PWkocz0+e2xldHtjbGllbnRYOmUsY2xpZW50WTp0fT1zLnRhcmdldFRvdWNoZXM/cy50YXJnZXRUb3VjaGVzWzBdOnM7dGhpcy50b3VjaFN0YXJ0Lng9ZSx0aGlzLnRvdWNoU3RhcnQueT10LHRoaXMubGFzdERlbHRhPXt4OjAseTowfSx0aGlzLmVtaXR0ZXIuZW1pdCgic2Nyb2xsIix7ZGVsdGFYOjAsZGVsdGFZOjAsZXZlbnQ6c30pfSwib25Ub3VjaFN0YXJ0Iik7b25Ub3VjaE1vdmU9aShzPT57bGV0e2NsaWVudFg6ZSxjbGllbnRZOnR9PXMudGFyZ2V0VG91Y2hlcz9zLnRhcmdldFRvdWNoZXNbMF06cyxhPS0oZS10aGlzLnRvdWNoU3RhcnQueCkqdGhpcy5vcHRpb25zLnRvdWNoTXVsdGlwbGllcixyPS0odC10aGlzLnRvdWNoU3RhcnQueSkqdGhpcy5vcHRpb25zLnRvdWNoTXVsdGlwbGllcjt0aGlzLnRvdWNoU3RhcnQueD1lLHRoaXMudG91Y2hTdGFydC55PXQsdGhpcy5sYXN0RGVsdGE9e3g6YSx5OnJ9LHRoaXMuZW1pdHRlci5lbWl0KCJzY3JvbGwiLHtkZWx0YVg6YSxkZWx0YVk6cixldmVudDpzfSl9LCJvblRvdWNoTW92ZSIpO29uVG91Y2hFbmQ9aShzPT57dGhpcy5lbWl0dGVyLmVtaXQoInNjcm9sbCIse2RlbHRhWDp0aGlzLmxhc3REZWx0YS54LGRlbHRhWTp0aGlzLmxhc3REZWx0YS55LGV2ZW50OnN9KX0sIm9uVG91Y2hFbmQiKTtvbldoZWVsPWkocz0+e2xldHtkZWx0YVg6ZSxkZWx0YVk6dCxkZWx0YU1vZGU6YX09cyxyPWE9PT0xP0h3dDphPT09Mj90aGlzLndpbmRvdy53aWR0aDoxLG49YT09PTE/SHd0OmE9PT0yP3RoaXMud2luZG93LmhlaWdodDoxO2UqPXIsdCo9bixlKj10aGlzLm9wdGlvbnMud2hlZWxNdWx0aXBsaWVyLHQqPXRoaXMub3B0aW9ucy53aGVlbE11bHRpcGxpZXIsdGhpcy5lbWl0dGVyLmVtaXQoInNjcm9sbCIse2RlbHRhWDplLGRlbHRhWTp0LGV2ZW50OnN9KX0sIm9uV2hlZWwiKTtvbldpbmRvd1Jlc2l6ZT1pKCgpPT57dGhpcy53aW5kb3c9e3dpZHRoOndpbmRvdy5pbm5lcldpZHRoLGhlaWdodDp3aW5kb3cuaW5uZXJIZWlnaHR9fSwib25XaW5kb3dSZXNpemUiKX0scXd0PWkocz0+TWF0aC5taW4oMSwxLjAwMS1NYXRoLnBvdygyLC0xMCpzKSksImRlZmF1bHRFYXNpbmciKSxBaz1jbGFzc3tzdGF0aWN7aSh0aGlzLCJMZW5pcyIpfV9pc1Njcm9sbGluZz0hMTtfaXNTdG9wcGVkPSExO19pc0xvY2tlZD0hMTtfcHJldmVudE5leHROYXRpdmVTY3JvbGxFdmVudD0hMTtfcmVzZXRWZWxvY2l0eVRpbWVvdXQ9bnVsbDtfcmFmSWQ9bnVsbDtpc1RvdWNoaW5nO3RpbWU9MDt1c2VyRGF0YT17fTtsYXN0VmVsb2NpdHk9MDt2ZWxvY2l0eT0wO2RpcmVjdGlvbj0wO29wdGlvbnM7dGFyZ2V0U2Nyb2xsO2FuaW1hdGVkU2Nyb2xsO2FuaW1hdGU9bmV3IFlIYTtlbWl0dGVyPW5ldyBCd3Q7ZGltZW5zaW9uczt2aXJ0dWFsU2Nyb2xsO2NvbnN0cnVjdG9yKHt3cmFwcGVyOnM9d2luZG93LGNvbnRlbnQ6ZT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsZXZlbnRzVGFyZ2V0OnQ9cyxzbW9vdGhXaGVlbDphPSEwLHN5bmNUb3VjaDpyPSExLHN5bmNUb3VjaExlcnA6bj0uMDc1LHRvdWNoSW5lcnRpYUV4cG9uZW50Om89MS43LGR1cmF0aW9uOmwsZWFzaW5nOnAsbGVycDpkPS4xLGluZmluaXRlOnU9ITEsb3JpZW50YXRpb246Yz0idmVydGljYWwiLGdlc3R1cmVPcmllbnRhdGlvbjpiPWM9PT0iaG9yaXpvbnRhbCI/ImJvdGgiOiJ2ZXJ0aWNhbCIsdG91Y2hNdWx0aXBsaWVyOnY9MSx3aGVlbE11bHRpcGxpZXI6eD0xLGF1dG9SZXNpemU6bT0hMCxwcmV2ZW50OmYsdmlydHVhbFNjcm9sbDp5LG92ZXJzY3JvbGw6TT0hMCxhdXRvUmFmOno9ITEsYW5jaG9yczpOPSExLGF1dG9Ub2dnbGU6Qz0hMSxhbGxvd05lc3RlZFNjcm9sbDpfPSExLF9fZXhwZXJpbWVudGFsX19uYWl2ZURpbWVuc2lvbnM6Tz0hMSxuYWl2ZURpbWVuc2lvbnM6JD1PLHN0b3BJbmVydGlhT25OYXZpZ2F0ZTpFPSExfT17fSl7d2luZG93LmxlbmlzVmVyc2lvbj1VSGEsKCFzfHxzPT09ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSYmKHM9d2luZG93KSx0eXBlb2YgbD09Im51bWJlciImJnR5cGVvZiBwIT0iZnVuY3Rpb24iP3A9cXd0OnR5cGVvZiBwPT0iZnVuY3Rpb24iJiZ0eXBlb2YgbCE9Im51bWJlciImJihsPTEpLHRoaXMub3B0aW9ucz17d3JhcHBlcjpzLGNvbnRlbnQ6ZSxldmVudHNUYXJnZXQ6dCxzbW9vdGhXaGVlbDphLHN5bmNUb3VjaDpyLHN5bmNUb3VjaExlcnA6bix0b3VjaEluZXJ0aWFFeHBvbmVudDpvLGR1cmF0aW9uOmwsZWFzaW5nOnAsbGVycDpkLGluZmluaXRlOnUsZ2VzdHVyZU9yaWVudGF0aW9uOmIsb3JpZW50YXRpb246Yyx0b3VjaE11bHRpcGxpZXI6dix3aGVlbE11bHRpcGxpZXI6eCxhdXRvUmVzaXplOm0scHJldmVudDpmLHZpcnR1YWxTY3JvbGw6eSxvdmVyc2Nyb2xsOk0sYXV0b1JhZjp6LGFuY2hvcnM6TixhdXRvVG9nZ2xlOkMsYWxsb3dOZXN0ZWRTY3JvbGw6XyxuYWl2ZURpbWVuc2lvbnM6JCxzdG9wSW5lcnRpYU9uTmF2aWdhdGU6RX0sdGhpcy5kaW1lbnNpb25zPW5ldyBYSGEocyxlLHthdXRvUmVzaXplOm19KSx0aGlzLnVwZGF0ZUNsYXNzTmFtZSgpLHRoaXMudGFyZ2V0U2Nyb2xsPXRoaXMuYW5pbWF0ZWRTY3JvbGw9dGhpcy5hY3R1YWxTY3JvbGwsdGhpcy5vcHRpb25zLndyYXBwZXIuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLm9uTmF0aXZlU2Nyb2xsLCExKSx0aGlzLm9wdGlvbnMud3JhcHBlci5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGxlbmQiLHRoaXMub25TY3JvbGxFbmQse2NhcHR1cmU6ITB9KSwodGhpcy5vcHRpb25zLmFuY2hvcnN8fHRoaXMub3B0aW9ucy5zdG9wSW5lcnRpYU9uTmF2aWdhdGUpJiZ0aGlzLm9wdGlvbnMud3JhcHBlci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5vbkNsaWNrLCExKSx0aGlzLm9wdGlvbnMud3JhcHBlci5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsdGhpcy5vblBvaW50ZXJEb3duLCExKSx0aGlzLnZpcnR1YWxTY3JvbGw9bmV3IFFIYSh0LHt0b3VjaE11bHRpcGxpZXI6dix3aGVlbE11bHRpcGxpZXI6eH0pLHRoaXMudmlydHVhbFNjcm9sbC5vbigic2Nyb2xsIix0aGlzLm9uVmlydHVhbFNjcm9sbCksdGhpcy5vcHRpb25zLmF1dG9Ub2dnbGUmJih0aGlzLmNoZWNrT3ZlcmZsb3coKSx0aGlzLnJvb3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLHRoaXMub25UcmFuc2l0aW9uRW5kLHtwYXNzaXZlOiEwfSkpLHRoaXMub3B0aW9ucy5hdXRvUmFmJiYodGhpcy5fcmFmSWQ9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMucmFmKSl9ZGVzdHJveSgpe3RoaXMuZW1pdHRlci5kZXN0cm95KCksdGhpcy5vcHRpb25zLndyYXBwZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLm9uTmF0aXZlU2Nyb2xsLCExKSx0aGlzLm9wdGlvbnMud3JhcHBlci5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGxlbmQiLHRoaXMub25TY3JvbGxFbmQse2NhcHR1cmU6ITB9KSx0aGlzLm9wdGlvbnMud3JhcHBlci5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsdGhpcy5vblBvaW50ZXJEb3duLCExKSwodGhpcy5vcHRpb25zLmFuY2hvcnN8fHRoaXMub3B0aW9ucy5zdG9wSW5lcnRpYU9uTmF2aWdhdGUpJiZ0aGlzLm9wdGlvbnMud3JhcHBlci5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5vbkNsaWNrLCExKSx0aGlzLnZpcnR1YWxTY3JvbGwuZGVzdHJveSgpLHRoaXMuZGltZW5zaW9ucy5kZXN0cm95KCksdGhpcy5jbGVhblVwQ2xhc3NOYW1lKCksdGhpcy5fcmFmSWQmJmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3JhZklkKX1vbihzLGUpe3JldHVybiB0aGlzLmVtaXR0ZXIub24ocyxlKX1vZmYocyxlKXtyZXR1cm4gdGhpcy5lbWl0dGVyLm9mZihzLGUpfW9uU2Nyb2xsRW5kPWkocz0+e3MgaW5zdGFuY2VvZiBDdXN0b21FdmVudHx8KHRoaXMuaXNTY3JvbGxpbmc9PT0ic21vb3RoInx8dGhpcy5pc1Njcm9sbGluZz09PSExKSYmcy5zdG9wUHJvcGFnYXRpb24oKX0sIm9uU2Nyb2xsRW5kIik7ZGlzcGF0Y2hTY3JvbGxlbmRFdmVudD1pKCgpPT57dGhpcy5vcHRpb25zLndyYXBwZXIuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInNjcm9sbGVuZCIse2J1YmJsZXM6dGhpcy5vcHRpb25zLndyYXBwZXI9PT13aW5kb3csZGV0YWlsOntsZW5pc1Njcm9sbEVuZDohMH19KSl9LCJkaXNwYXRjaFNjcm9sbGVuZEV2ZW50Iik7Z2V0IG92ZXJmbG93KCl7bGV0IHM9dGhpcy5pc0hvcml6b250YWw/Im92ZXJmbG93LXgiOiJvdmVyZmxvdy15IjtyZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnJvb3RFbGVtZW50KVtzXX1jaGVja092ZXJmbG93KCl7WyJoaWRkZW4iLCJjbGlwIl0uaW5jbHVkZXModGhpcy5vdmVyZmxvdyk/dGhpcy5pbnRlcm5hbFN0b3AoKTp0aGlzLmludGVybmFsU3RhcnQoKX1vblRyYW5zaXRpb25FbmQ9aShzPT57cy5wcm9wZXJ0eU5hbWUuaW5jbHVkZXMoIm92ZXJmbG93IikmJnRoaXMuY2hlY2tPdmVyZmxvdygpfSwib25UcmFuc2l0aW9uRW5kIik7c2V0U2Nyb2xsKHMpe3RoaXMuaXNIb3Jpem9udGFsP3RoaXMub3B0aW9ucy53cmFwcGVyLnNjcm9sbFRvKHtsZWZ0OnMsYmVoYXZpb3I6Imluc3RhbnQifSk6dGhpcy5vcHRpb25zLndyYXBwZXIuc2Nyb2xsVG8oe3RvcDpzLGJlaGF2aW9yOiJpbnN0YW50In0pfW9uQ2xpY2s9aShzPT57bGV0IHQ9cy5jb21wb3NlZFBhdGgoKS5maWx0ZXIoYT0+YSBpbnN0YW5jZW9mIEhUTUxBbmNob3JFbGVtZW50JiZhLmdldEF0dHJpYnV0ZSgiaHJlZiIpKTtpZih0aGlzLm9wdGlvbnMuYW5jaG9ycyl7bGV0IGE9dC5maW5kKHI9PnIuZ2V0QXR0cmlidXRlKCJocmVmIik/LmluY2x1ZGVzKCIjIikpO2lmKGEpe2xldCByPWEuZ2V0QXR0cmlidXRlKCJocmVmIik7aWYocil7bGV0IG49dHlwZW9mIHRoaXMub3B0aW9ucy5hbmNob3JzPT0ib2JqZWN0IiYmdGhpcy5vcHRpb25zLmFuY2hvcnM/dGhpcy5vcHRpb25zLmFuY2hvcnM6dm9pZCAwLG89YCMke3Iuc3BsaXQoIiMiKVsxXX1gO3RoaXMuc2Nyb2xsVG8obyxuKX19fXRoaXMub3B0aW9ucy5zdG9wSW5lcnRpYU9uTmF2aWdhdGUmJnQuZmluZChyPT5yLmhvc3Q9PT13aW5kb3cubG9jYXRpb24uaG9zdCkmJnRoaXMucmVzZXQoKX0sIm9uQ2xpY2siKTtvblBvaW50ZXJEb3duPWkocz0+e3MuYnV0dG9uPT09MSYmdGhpcy5yZXNldCgpfSwib25Qb2ludGVyRG93biIpO29uVmlydHVhbFNjcm9sbD1pKHM9PntpZih0eXBlb2YgdGhpcy5vcHRpb25zLnZpcnR1YWxTY3JvbGw9PSJmdW5jdGlvbiImJnRoaXMub3B0aW9ucy52aXJ0dWFsU2Nyb2xsKHMpPT09ITEpcmV0dXJuO2xldHtkZWx0YVg6ZSxkZWx0YVk6dCxldmVudDphfT1zO2lmKHRoaXMuZW1pdHRlci5lbWl0KCJ2aXJ0dWFsLXNjcm9sbCIse2RlbHRhWDplLGRlbHRhWTp0LGV2ZW50OmF9KSxhLmN0cmxLZXl8fGEubGVuaXNTdG9wUHJvcGFnYXRpb24pcmV0dXJuO2xldCByPWEudHlwZS5pbmNsdWRlcygidG91Y2giKSxuPWEudHlwZS5pbmNsdWRlcygid2hlZWwiKTt0aGlzLmlzVG91Y2hpbmc9YS50eXBlPT09InRvdWNoc3RhcnQifHxhLnR5cGU9PT0idG91Y2htb3ZlIjtsZXQgbz1lPT09MCYmdD09PTA7aWYodGhpcy5vcHRpb25zLnN5bmNUb3VjaCYmciYmYS50eXBlPT09InRvdWNoc3RhcnQiJiZvJiYhdGhpcy5pc1N0b3BwZWQmJiF0aGlzLmlzTG9ja2VkKXt0aGlzLnJlc2V0KCk7cmV0dXJufWxldCBwPXRoaXMub3B0aW9ucy5nZXN0dXJlT3JpZW50YXRpb249PT0idmVydGljYWwiJiZ0PT09MHx8dGhpcy5vcHRpb25zLmdlc3R1cmVPcmllbnRhdGlvbj09PSJob3Jpem9udGFsIiYmZT09PTA7aWYob3x8cClyZXR1cm47bGV0IGQ9YS5jb21wb3NlZFBhdGgoKTtkPWQuc2xpY2UoMCxkLmluZGV4T2YodGhpcy5yb290RWxlbWVudCkpO2xldCB1PXRoaXMub3B0aW9ucy5wcmV2ZW50O2lmKGQuZmluZChmPT5mIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQmJih0eXBlb2YgdT09ImZ1bmN0aW9uIiYmdT8uKGYpfHxmLmhhc0F0dHJpYnV0ZT8uKCJkYXRhLWxlbmlzLXByZXZlbnQiKXx8ciYmZi5oYXNBdHRyaWJ1dGU/LigiZGF0YS1sZW5pcy1wcmV2ZW50LXRvdWNoIil8fG4mJmYuaGFzQXR0cmlidXRlPy4oImRhdGEtbGVuaXMtcHJldmVudC13aGVlbCIpfHx0aGlzLm9wdGlvbnMuYWxsb3dOZXN0ZWRTY3JvbGwmJnRoaXMuY2hlY2tOZXN0ZWRTY3JvbGwoZix7ZGVsdGFYOmUsZGVsdGFZOnR9KSkpKXJldHVybjtpZih0aGlzLmlzU3RvcHBlZHx8dGhpcy5pc0xvY2tlZCl7YS5jYW5jZWxhYmxlJiZhLnByZXZlbnREZWZhdWx0KCk7cmV0dXJufWlmKCEodGhpcy5vcHRpb25zLnN5bmNUb3VjaCYmcnx8dGhpcy5vcHRpb25zLnNtb290aFdoZWVsJiZuKSl7dGhpcy5pc1Njcm9sbGluZz0ibmF0aXZlIix0aGlzLmFuaW1hdGUuc3RvcCgpLGEubGVuaXNTdG9wUHJvcGFnYXRpb249ITA7cmV0dXJufWxldCBiPXQ7dGhpcy5vcHRpb25zLmdlc3R1cmVPcmllbnRhdGlvbj09PSJib3RoIj9iPU1hdGguYWJzKHQpPk1hdGguYWJzKGUpP3Q6ZTp0aGlzLm9wdGlvbnMuZ2VzdHVyZU9yaWVudGF0aW9uPT09Imhvcml6b250YWwiJiYoYj1lKSwoIXRoaXMub3B0aW9ucy5vdmVyc2Nyb2xsfHx0aGlzLm9wdGlvbnMuaW5maW5pdGV8fHRoaXMub3B0aW9ucy53cmFwcGVyIT09d2luZG93JiZ0aGlzLmxpbWl0PjAmJih0aGlzLmFuaW1hdGVkU2Nyb2xsPjAmJnRoaXMuYW5pbWF0ZWRTY3JvbGw8dGhpcy5saW1pdHx8dGhpcy5hbmltYXRlZFNjcm9sbD09PTAmJnQ+MHx8dGhpcy5hbmltYXRlZFNjcm9sbD09PXRoaXMubGltaXQmJnQ8MCkpJiYoYS5sZW5pc1N0b3BQcm9wYWdhdGlvbj0hMCksYS5jYW5jZWxhYmxlJiZhLnByZXZlbnREZWZhdWx0KCk7bGV0IHY9ciYmdGhpcy5vcHRpb25zLnN5bmNUb3VjaCxtPXImJmEudHlwZT09PSJ0b3VjaGVuZCI7bSYmKGI9TWF0aC5zaWduKHRoaXMudmVsb2NpdHkpKk1hdGgucG93KE1hdGguYWJzKHRoaXMudmVsb2NpdHkpLHRoaXMub3B0aW9ucy50b3VjaEluZXJ0aWFFeHBvbmVudCkpLHRoaXMuc2Nyb2xsVG8odGhpcy50YXJnZXRTY3JvbGwrYix7cHJvZ3JhbW1hdGljOiExLC4uLnY/e2xlcnA6bT90aGlzLm9wdGlvbnMuc3luY1RvdWNoTGVycDoxfTp7bGVycDp0aGlzLm9wdGlvbnMubGVycCxkdXJhdGlvbjp0aGlzLm9wdGlvbnMuZHVyYXRpb24sZWFzaW5nOnRoaXMub3B0aW9ucy5lYXNpbmd9fSl9LCJvblZpcnR1YWxTY3JvbGwiKTtyZXNpemUoKXt0aGlzLmRpbWVuc2lvbnMucmVzaXplKCksdGhpcy5hbmltYXRlZFNjcm9sbD10aGlzLnRhcmdldFNjcm9sbD10aGlzLmFjdHVhbFNjcm9sbCx0aGlzLmVtaXQoKX1lbWl0KCl7dGhpcy5lbWl0dGVyLmVtaXQoInNjcm9sbCIsdGhpcyl9b25OYXRpdmVTY3JvbGw9aSgoKT0+e2lmKHRoaXMuX3Jlc2V0VmVsb2NpdHlUaW1lb3V0IT09bnVsbCYmKGNsZWFyVGltZW91dCh0aGlzLl9yZXNldFZlbG9jaXR5VGltZW91dCksdGhpcy5fcmVzZXRWZWxvY2l0eVRpbWVvdXQ9bnVsbCksdGhpcy5fcHJldmVudE5leHROYXRpdmVTY3JvbGxFdmVudCl7dGhpcy5fcHJldmVudE5leHROYXRpdmVTY3JvbGxFdmVudD0hMTtyZXR1cm59aWYodGhpcy5pc1Njcm9sbGluZz09PSExfHx0aGlzLmlzU2Nyb2xsaW5nPT09Im5hdGl2ZSIpe2xldCBzPXRoaXMuYW5pbWF0ZWRTY3JvbGw7dGhpcy5hbmltYXRlZFNjcm9sbD10aGlzLnRhcmdldFNjcm9sbD10aGlzLmFjdHVhbFNjcm9sbCx0aGlzLmxhc3RWZWxvY2l0eT10aGlzLnZlbG9jaXR5LHRoaXMudmVsb2NpdHk9dGhpcy5hbmltYXRlZFNjcm9sbC1zLHRoaXMuZGlyZWN0aW9uPU1hdGguc2lnbih0aGlzLmFuaW1hdGVkU2Nyb2xsLXMpLHRoaXMuaXNTdG9wcGVkfHwodGhpcy5pc1Njcm9sbGluZz0ibmF0aXZlIiksdGhpcy5lbWl0KCksdGhpcy52ZWxvY2l0eSE9PTAmJih0aGlzLl9yZXNldFZlbG9jaXR5VGltZW91dD1zZXRUaW1lb3V0KCgpPT57dGhpcy5sYXN0VmVsb2NpdHk9dGhpcy52ZWxvY2l0eSx0aGlzLnZlbG9jaXR5PTAsdGhpcy5pc1Njcm9sbGluZz0hMSx0aGlzLmVtaXQoKX0sNDAwKSl9fSwib25OYXRpdmVTY3JvbGwiKTtyZXNldCgpe3RoaXMuaXNMb2NrZWQ9ITEsdGhpcy5pc1Njcm9sbGluZz0hMSx0aGlzLmFuaW1hdGVkU2Nyb2xsPXRoaXMudGFyZ2V0U2Nyb2xsPXRoaXMuYWN0dWFsU2Nyb2xsLHRoaXMubGFzdFZlbG9jaXR5PXRoaXMudmVsb2NpdHk9MCx0aGlzLmFuaW1hdGUuc3RvcCgpfXN0YXJ0KCl7aWYodGhpcy5pc1N0b3BwZWQpe2lmKHRoaXMub3B0aW9ucy5hdXRvVG9nZ2xlKXt0aGlzLnJvb3RFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJvdmVyZmxvdyIpO3JldHVybn10aGlzLmludGVybmFsU3RhcnQoKX19aW50ZXJuYWxTdGFydCgpe3RoaXMuaXNTdG9wcGVkJiYodGhpcy5yZXNldCgpLHRoaXMuaXNTdG9wcGVkPSExLHRoaXMuZW1pdCgpKX1zdG9wKCl7aWYoIXRoaXMuaXNTdG9wcGVkKXtpZih0aGlzLm9wdGlvbnMuYXV0b1RvZ2dsZSl7dGhpcy5yb290RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgib3ZlcmZsb3ciLCJjbGlwIik7cmV0dXJufXRoaXMuaW50ZXJuYWxTdG9wKCl9fWludGVybmFsU3RvcCgpe3RoaXMuaXNTdG9wcGVkfHwodGhpcy5yZXNldCgpLHRoaXMuaXNTdG9wcGVkPSEwLHRoaXMuZW1pdCgpKX1yYWY9aShzPT57bGV0IGU9cy0odGhpcy50aW1lfHxzKTt0aGlzLnRpbWU9cyx0aGlzLmFuaW1hdGUuYWR2YW5jZShlKi4wMDEpLHRoaXMub3B0aW9ucy5hdXRvUmFmJiYodGhpcy5fcmFmSWQ9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMucmFmKSl9LCJyYWYiKTtzY3JvbGxUbyhzLHtvZmZzZXQ6ZT0wLGltbWVkaWF0ZTp0PSExLGxvY2s6YT0hMSxwcm9ncmFtbWF0aWM6cj0hMCxsZXJwOm49cj90aGlzLm9wdGlvbnMubGVycDp2b2lkIDAsZHVyYXRpb246bz1yP3RoaXMub3B0aW9ucy5kdXJhdGlvbjp2b2lkIDAsZWFzaW5nOmw9cj90aGlzLm9wdGlvbnMuZWFzaW5nOnZvaWQgMCxvblN0YXJ0OnAsb25Db21wbGV0ZTpkLGZvcmNlOnU9ITEsdXNlckRhdGE6Y309e30pe2lmKCEoKHRoaXMuaXNTdG9wcGVkfHx0aGlzLmlzTG9ja2VkKSYmIXUpKXtpZih0eXBlb2Ygcz09InN0cmluZyImJlsidG9wIiwibGVmdCIsInN0YXJ0IiwiIyJdLmluY2x1ZGVzKHMpKXM9MDtlbHNlIGlmKHR5cGVvZiBzPT0ic3RyaW5nIiYmWyJib3R0b20iLCJyaWdodCIsImVuZCJdLmluY2x1ZGVzKHMpKXM9dGhpcy5saW1pdDtlbHNle2xldCBiO2lmKHR5cGVvZiBzPT0ic3RyaW5nIj8oYj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHMpLGJ8fChzPT09IiN0b3AiP3M9MDpjb25zb2xlLndhcm4oIkxlbmlzOiBUYXJnZXQgbm90IGZvdW5kIixzKSkpOnMgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCYmcz8ubm9kZVR5cGUmJihiPXMpLGIpe2lmKHRoaXMub3B0aW9ucy53cmFwcGVyIT09d2luZG93KXtsZXQgeD10aGlzLnJvb3RFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2UtPXRoaXMuaXNIb3Jpem9udGFsP3gubGVmdDp4LnRvcH1sZXQgdj1iLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3M9KHRoaXMuaXNIb3Jpem9udGFsP3YubGVmdDp2LnRvcCkrdGhpcy5hbmltYXRlZFNjcm9sbH19aWYodHlwZW9mIHM9PSJudW1iZXIiKXtpZihzKz1lLHM9TWF0aC5yb3VuZChzKSx0aGlzLm9wdGlvbnMuaW5maW5pdGUpe2lmKHIpe3RoaXMudGFyZ2V0U2Nyb2xsPXRoaXMuYW5pbWF0ZWRTY3JvbGw9dGhpcy5zY3JvbGw7bGV0IGI9cy10aGlzLmFuaW1hdGVkU2Nyb2xsO2I+dGhpcy5saW1pdC8yP3M9cy10aGlzLmxpbWl0OmI8LXRoaXMubGltaXQvMiYmKHM9cyt0aGlzLmxpbWl0KX19ZWxzZSBzPUZ3dCgwLHMsdGhpcy5saW1pdCk7aWYocz09PXRoaXMudGFyZ2V0U2Nyb2xsKXtwPy4odGhpcyksZD8uKHRoaXMpO3JldHVybn1pZih0aGlzLnVzZXJEYXRhPWM/P3t9LHQpe3RoaXMuYW5pbWF0ZWRTY3JvbGw9dGhpcy50YXJnZXRTY3JvbGw9cyx0aGlzLnNldFNjcm9sbCh0aGlzLnNjcm9sbCksdGhpcy5yZXNldCgpLHRoaXMucHJldmVudE5leHROYXRpdmVTY3JvbGxFdmVudCgpLHRoaXMuZW1pdCgpLGQ/Lih0aGlzKSx0aGlzLnVzZXJEYXRhPXt9LHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3RoaXMuZGlzcGF0Y2hTY3JvbGxlbmRFdmVudCgpfSk7cmV0dXJufXJ8fCh0aGlzLnRhcmdldFNjcm9sbD1zKSx0eXBlb2Ygbz09Im51bWJlciImJnR5cGVvZiBsIT0iZnVuY3Rpb24iP2w9cXd0OnR5cGVvZiBsPT0iZnVuY3Rpb24iJiZ0eXBlb2YgbyE9Im51bWJlciImJihvPTEpLHRoaXMuYW5pbWF0ZS5mcm9tVG8odGhpcy5hbmltYXRlZFNjcm9sbCxzLHtkdXJhdGlvbjpvLGVhc2luZzpsLGxlcnA6bixvblN0YXJ0OmkoKCk9PnthJiYodGhpcy5pc0xvY2tlZD0hMCksdGhpcy5pc1Njcm9sbGluZz0ic21vb3RoIixwPy4odGhpcyl9LCJvblN0YXJ0Iiksb25VcGRhdGU6aSgoYix2KT0+e3RoaXMuaXNTY3JvbGxpbmc9InNtb290aCIsdGhpcy5sYXN0VmVsb2NpdHk9dGhpcy52ZWxvY2l0eSx0aGlzLnZlbG9jaXR5PWItdGhpcy5hbmltYXRlZFNjcm9sbCx0aGlzLmRpcmVjdGlvbj1NYXRoLnNpZ24odGhpcy52ZWxvY2l0eSksdGhpcy5hbmltYXRlZFNjcm9sbD1iLHRoaXMuc2V0U2Nyb2xsKHRoaXMuc2Nyb2xsKSxyJiYodGhpcy50YXJnZXRTY3JvbGw9Yiksdnx8dGhpcy5lbWl0KCksdiYmKHRoaXMucmVzZXQoKSx0aGlzLmVtaXQoKSxkPy4odGhpcyksdGhpcy51c2VyRGF0YT17fSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pnt0aGlzLmRpc3BhdGNoU2Nyb2xsZW5kRXZlbnQoKX0pLHRoaXMucHJldmVudE5leHROYXRpdmVTY3JvbGxFdmVudCgpKX0sIm9uVXBkYXRlIil9KX19fXByZXZlbnROZXh0TmF0aXZlU2Nyb2xsRXZlbnQoKXt0aGlzLl9wcmV2ZW50TmV4dE5hdGl2ZVNjcm9sbEV2ZW50PSEwLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3RoaXMuX3ByZXZlbnROZXh0TmF0aXZlU2Nyb2xsRXZlbnQ9ITF9KX1jaGVja05lc3RlZFNjcm9sbChzLHtkZWx0YVg6ZSxkZWx0YVk6dH0pe2xldCBhPURhdGUubm93KCkscj1zLl9sZW5pcz8/PXt9LG4sbyxsLHAsZCx1LGMsYix2PXRoaXMub3B0aW9ucy5nZXN0dXJlT3JpZW50YXRpb247aWYoYS0oci50aW1lPz8wKT4yZTMpe3IudGltZT1EYXRlLm5vdygpO2xldCBDPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHMpO3IuY29tcHV0ZWRTdHlsZT1DO2xldCBfPUMub3ZlcmZsb3dYLE89Qy5vdmVyZmxvd1k7aWYobj1bImF1dG8iLCJvdmVybGF5Iiwic2Nyb2xsIl0uaW5jbHVkZXMoXyksbz1bImF1dG8iLCJvdmVybGF5Iiwic2Nyb2xsIl0uaW5jbHVkZXMoTyksci5oYXNPdmVyZmxvd1g9bixyLmhhc092ZXJmbG93WT1vLCFuJiYhb3x8dj09PSJ2ZXJ0aWNhbCImJiFvfHx2PT09Imhvcml6b250YWwiJiYhbilyZXR1cm4hMTtkPXMuc2Nyb2xsV2lkdGgsdT1zLnNjcm9sbEhlaWdodCxjPXMuY2xpZW50V2lkdGgsYj1zLmNsaWVudEhlaWdodCxsPWQ+YyxwPXU+YixyLmlzU2Nyb2xsYWJsZVg9bCxyLmlzU2Nyb2xsYWJsZVk9cCxyLnNjcm9sbFdpZHRoPWQsci5zY3JvbGxIZWlnaHQ9dSxyLmNsaWVudFdpZHRoPWMsci5jbGllbnRIZWlnaHQ9Yn1lbHNlIGw9ci5pc1Njcm9sbGFibGVYLHA9ci5pc1Njcm9sbGFibGVZLG49ci5oYXNPdmVyZmxvd1gsbz1yLmhhc092ZXJmbG93WSxkPXIuc2Nyb2xsV2lkdGgsdT1yLnNjcm9sbEhlaWdodCxjPXIuY2xpZW50V2lkdGgsYj1yLmNsaWVudEhlaWdodDtpZighbiYmIW98fCFsJiYhcHx8dj09PSJ2ZXJ0aWNhbCImJighb3x8IXApfHx2PT09Imhvcml6b250YWwiJiYoIW58fCFsKSlyZXR1cm4hMTtsZXQgeDtpZih2PT09Imhvcml6b250YWwiKXg9IngiO2Vsc2UgaWYodj09PSJ2ZXJ0aWNhbCIpeD0ieSI7ZWxzZXtsZXQgQz1lIT09MCxfPXQhPT0wO0MmJm4mJmwmJih4PSJ4IiksXyYmbyYmcCYmKHg9InkiKX1pZigheClyZXR1cm4hMTtsZXQgbSxmLHksTSx6O2lmKHg9PT0ieCIpbT1zLnNjcm9sbExlZnQsZj1kLWMseT1lLE09bix6PWw7ZWxzZSBpZih4PT09InkiKW09cy5zY3JvbGxUb3AsZj11LWIseT10LE09byx6PXA7ZWxzZSByZXR1cm4hMTtyZXR1cm4oeT4wP208ZjptPjApJiZNJiZ6fWdldCByb290RWxlbWVudCgpe3JldHVybiB0aGlzLm9wdGlvbnMud3JhcHBlcj09PXdpbmRvdz9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ6dGhpcy5vcHRpb25zLndyYXBwZXJ9Z2V0IGxpbWl0KCl7cmV0dXJuIHRoaXMub3B0aW9ucy5uYWl2ZURpbWVuc2lvbnM/dGhpcy5pc0hvcml6b250YWw/dGhpcy5yb290RWxlbWVudC5zY3JvbGxXaWR0aC10aGlzLnJvb3RFbGVtZW50LmNsaWVudFdpZHRoOnRoaXMucm9vdEVsZW1lbnQuc2Nyb2xsSGVpZ2h0LXRoaXMucm9vdEVsZW1lbnQuY2xpZW50SGVpZ2h0OnRoaXMuZGltZW5zaW9ucy5saW1pdFt0aGlzLmlzSG9yaXpvbnRhbD8ieCI6InkiXX1nZXQgaXNIb3Jpem9udGFsKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5vcmllbnRhdGlvbj09PSJob3Jpem9udGFsIn1nZXQgYWN0dWFsU2Nyb2xsKCl7bGV0IHM9dGhpcy5vcHRpb25zLndyYXBwZXI7cmV0dXJuIHRoaXMuaXNIb3Jpem9udGFsP3Muc2Nyb2xsWD8/cy5zY3JvbGxMZWZ0OnMuc2Nyb2xsWT8/cy5zY3JvbGxUb3B9Z2V0IHNjcm9sbCgpe3JldHVybiB0aGlzLm9wdGlvbnMuaW5maW5pdGU/S0hhKHRoaXMuYW5pbWF0ZWRTY3JvbGwsdGhpcy5saW1pdCk6dGhpcy5hbmltYXRlZFNjcm9sbH1nZXQgcHJvZ3Jlc3MoKXtyZXR1cm4gdGhpcy5saW1pdD09PTA/MTp0aGlzLnNjcm9sbC90aGlzLmxpbWl0fWdldCBpc1Njcm9sbGluZygpe3JldHVybiB0aGlzLl9pc1Njcm9sbGluZ31zZXQgaXNTY3JvbGxpbmcocyl7dGhpcy5faXNTY3JvbGxpbmchPT1zJiYodGhpcy5faXNTY3JvbGxpbmc9cyx0aGlzLnVwZGF0ZUNsYXNzTmFtZSgpKX1nZXQgaXNTdG9wcGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RvcHBlZH1zZXQgaXNTdG9wcGVkKHMpe3RoaXMuX2lzU3RvcHBlZCE9PXMmJih0aGlzLl9pc1N0b3BwZWQ9cyx0aGlzLnVwZGF0ZUNsYXNzTmFtZSgpKX1nZXQgaXNMb2NrZWQoKXtyZXR1cm4gdGhpcy5faXNMb2NrZWR9c2V0IGlzTG9ja2VkKHMpe3RoaXMuX2lzTG9ja2VkIT09cyYmKHRoaXMuX2lzTG9ja2VkPXMsdGhpcy51cGRhdGVDbGFzc05hbWUoKSl9Z2V0IGlzU21vb3RoKCl7cmV0dXJuIHRoaXMuaXNTY3JvbGxpbmc9PT0ic21vb3RoIn1nZXQgY2xhc3NOYW1lKCl7bGV0IHM9ImxlbmlzIjtyZXR1cm4gdGhpcy5vcHRpb25zLmF1dG9Ub2dnbGUmJihzKz0iIGxlbmlzLWF1dG9Ub2dnbGUiKSx0aGlzLmlzU3RvcHBlZCYmKHMrPSIgbGVuaXMtc3RvcHBlZCIpLHRoaXMuaXNMb2NrZWQmJihzKz0iIGxlbmlzLWxvY2tlZCIpLHRoaXMuaXNTY3JvbGxpbmcmJihzKz0iIGxlbmlzLXNjcm9sbGluZyIpLHRoaXMuaXNTY3JvbGxpbmc9PT0ic21vb3RoIiYmKHMrPSIgbGVuaXMtc21vb3RoIiksc311cGRhdGVDbGFzc05hbWUoKXt0aGlzLmNsZWFuVXBDbGFzc05hbWUoKSx0aGlzLnJvb3RFbGVtZW50LmNsYXNzTmFtZT1gJHt0aGlzLnJvb3RFbGVtZW50LmNsYXNzTmFtZX0gJHt0aGlzLmNsYXNzTmFtZX1gLnRyaW0oKX1jbGVhblVwQ2xhc3NOYW1lKCl7dGhpcy5yb290RWxlbWVudC5jbGFzc05hbWU9dGhpcy5yb290RWxlbWVudC5jbGFzc05hbWUucmVwbGFjZSgvbGVuaXMoLVx3Kyk/L2csIiIpLnRyaW0oKX19fSk7dmFyIFZ3dD1wbCgoZzVlLGI1ZSk9PnsoZnVuY3Rpb24ocyxlKXt0eXBlb2YgZzVlPT0ib2JqZWN0IiYmdHlwZW9mIGI1ZTwidSI/YjVlLmV4cG9ydHM9ZSgpOnR5cGVvZiBkZWZpbmU9PSJmdW5jdGlvbiImJmRlZmluZS5hbWQ/ZGVmaW5lKGUpOihzPXN8fHNlbGYscy5Td2VldFNjcm9sbD1lKCkpfSkoZzVlLGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBzPWkoZnVuY3Rpb24oKXtyZXR1cm4gcz1PYmplY3QuYXNzaWdufHxpKGZ1bmN0aW9uKGllKXtmb3IodmFyIHRlLGVlPTEsa2U9YXJndW1lbnRzLmxlbmd0aDtlZTxrZTtlZSsrKXt0ZT1hcmd1bWVudHNbZWVdO2Zvcih2YXIgWCBpbiB0ZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGUsWCkmJihpZVtYXT10ZVtYXSl9cmV0dXJuIGllfSwiX19hc3NpZ24iKSxzLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sIl9fYXNzaWduIiksZT0hISh0eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93LmRvY3VtZW50JiZ3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCksdD1lP3dpbmRvdy5oaXN0b3J5JiYicHVzaFN0YXRlImluIHdpbmRvdy5oaXN0b3J5JiZ3aW5kb3cubG9jYXRpb24ucHJvdG9jb2whPT0iZmlsZToiOiExLGE9KGZ1bmN0aW9uKCl7dmFyIFE9ITE7aWYoIWUpcmV0dXJuIFE7dHJ5e3ZhciBpZT13aW5kb3csdGU9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJwYXNzaXZlIix7Z2V0OmkoZnVuY3Rpb24oKXtRPSEwfSwiZ2V0Iil9KTtpZS5hZGRFdmVudExpc3RlbmVyKCJ0ZXN0IixudWxsLHRlKSxpZS5yZW1vdmVFdmVudExpc3RlbmVyKCJ0ZXN0IixudWxsLHRlKX1jYXRjaHt9cmV0dXJuIFF9KSgpLHI9aShmdW5jdGlvbihRKXtyZXR1cm4gdHlwZW9mIFE9PSJzdHJpbmcifSwiaXNTdHJpbmciKSxuPWkoZnVuY3Rpb24oUSl7cmV0dXJuIHR5cGVvZiBRPT0iZnVuY3Rpb24ifSwiaXNGdW5jdGlvbiIpLG89aShmdW5jdGlvbihRKXtyZXR1cm4gQXJyYXkuaXNBcnJheShRKX0sImlzQXJyYXkiKSxsPWkoZnVuY3Rpb24oUSl7cmV0dXJuIW8oUSkmJlEtcGFyc2VGbG9hdChRKSsxPj0wfSwiaXNOdW1lcmljIikscD1pKGZ1bmN0aW9uKFEsaWUpe3JldHVybiBRJiZRLmhhc093blByb3BlcnR5KGllKX0sImhhc1Byb3AiKSxkPWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6bnVsbCx1PWU/d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lLmJpbmQod2luZG93KTpudWxsLGM9TWF0aC5jb3MsYj1NYXRoLnNpbix2PU1hdGgucG93LHg9TWF0aC5zcXJ0LG09TWF0aC5QSSxmPXtsaW5lYXI6aShmdW5jdGlvbihRKXtyZXR1cm4gUX0sImxpbmVhciIpLGVhc2VJblF1YWQ6aShmdW5jdGlvbihRLGllLHRlLGVlLGtlKXtyZXR1cm4gZWUqKGllLz1rZSkqaWUrdGV9LCJlYXNlSW5RdWFkIiksZWFzZU91dFF1YWQ6aShmdW5jdGlvbihRLGllLHRlLGVlLGtlKXtyZXR1cm4tZWUqKGllLz1rZSkqKGllLTIpK3RlfSwiZWFzZU91dFF1YWQiKSxlYXNlSW5PdXRRdWFkOmkoZnVuY3Rpb24oUSxpZSx0ZSxlZSxrZSl7cmV0dXJuKGllLz1rZS8yKTwxP2VlLzIqaWUqaWUrdGU6LWVlLzIqKC0taWUqKGllLTIpLTEpK3RlfSwiZWFzZUluT3V0UXVhZCIpLGVhc2VJbkN1YmljOmkoZnVuY3Rpb24oUSxpZSx0ZSxlZSxrZSl7cmV0dXJuIGVlKihpZS89a2UpKmllKmllK3RlfSwiZWFzZUluQ3ViaWMiKSxlYXNlT3V0Q3ViaWM6aShmdW5jdGlvbihRLGllLHRlLGVlLGtlKXtyZXR1cm4gZWUqKChpZT1pZS9rZS0xKSppZSppZSsxKSt0ZX0sImVhc2VPdXRDdWJpYyIpLGVhc2VJbk91dEN1YmljOmkoZnVuY3Rpb24oUSxpZSx0ZSxlZSxrZSl7cmV0dXJuKGllLz1rZS8yKTwxP2VlLzIqaWUqaWUqaWUrdGU6ZWUvMiooKGllLT0yKSppZSppZSsyKSt0ZX0sImVhc2VJbk91dEN1YmljIiksZWFzZUluUXVhcnQ6aShmdW5jdGlvbihRLGllLHRlLGVlLGtlKXtyZXR1cm4gZWUqKGllLz1rZSkqaWUqaWUqaWUrdGV9LCJlYXNlSW5RdWFydCIpLGVhc2VPdXRRdWFydDppKGZ1bmN0aW9uKFEsaWUsdGUsZWUsa2Upe3JldHVybi1lZSooKGllPWllL2tlLTEpKmllKmllKmllLTEpK3RlfSwiZWFzZU91dFF1YXJ0IiksZWFzZUluT3V0UXVhcnQ6aShmdW5jdGlvbihRLGllLHRlLGVlLGtlKXtyZXR1cm4oaWUvPWtlLzIpPDE/ZWUvMippZSppZSppZSppZSt0ZTotZWUvMiooKGllLT0yKSppZSppZSppZS0yKSt0ZX0sImVhc2VJbk91dFF1YXJ0IiksZWFzZUluUXVpbnQ6aShmdW5jdGlvbihRLGllLHRlLGVlLGtlKXtyZXR1cm4gZWUqKGllLz1rZSkqaWUqaWUqaWUqaWUrdGV9LCJlYXNlSW5RdWludCIpLGVhc2VPdXRRdWludDppKGZ1bmN0aW9uKFEsaWUsdGUsZWUsa2Upe3JldHVybiBlZSooKGllPWllL2tlLTEpKmllKmllKmllKmllKzEpK3RlfSwiZWFzZU91dFF1aW50IiksZWFzZUluT3V0UXVpbnQ6aShmdW5jdGlvbihRLGllLHRlLGVlLGtlKXtyZXR1cm4oaWUvPWtlLzIpPDE/ZWUvMippZSppZSppZSppZSppZSt0ZTplZS8yKigoaWUtPTIpKmllKmllKmllKmllKzIpK3RlfSwiZWFzZUluT3V0UXVpbnQiKSxlYXNlSW5TaW5lOmkoZnVuY3Rpb24oUSxpZSx0ZSxlZSxrZSl7cmV0dXJuLWVlKmMoaWUva2UqKG0vMikpK2VlK3RlfSwiZWFzZUluU2luZSIpLGVhc2VPdXRTaW5lOmkoZnVuY3Rpb24oUSxpZSx0ZSxlZSxrZSl7cmV0dXJuIGVlKmIoaWUva2UqKG0vMikpK3RlfSwiZWFzZU91dFNpbmUiKSxlYXNlSW5PdXRTaW5lOmkoZnVuY3Rpb24oUSxpZSx0ZSxlZSxrZSl7cmV0dXJuLWVlLzIqKGMobSppZS9rZSktMSkrdGV9LCJlYXNlSW5PdXRTaW5lIiksZWFzZUluRXhwbzppKGZ1bmN0aW9uKFEsaWUsdGUsZWUsa2Upe3JldHVybiBpZT09PTA/dGU6ZWUqdigyLDEwKihpZS9rZS0xKSkrdGV9LCJlYXNlSW5FeHBvIiksZWFzZU91dEV4cG86aShmdW5jdGlvbihRLGllLHRlLGVlLGtlKXtyZXR1cm4gaWU9PT1rZT90ZStlZTplZSooLXYoMiwtMTAqaWUva2UpKzEpK3RlfSwiZWFzZU91dEV4cG8iKSxlYXNlSW5PdXRFeHBvOmkoZnVuY3Rpb24oUSxpZSx0ZSxlZSxrZSl7cmV0dXJuIGllPT09MD90ZTppZT09PWtlP3RlK2VlOihpZS89a2UvMik8MT9lZS8yKnYoMiwxMCooaWUtMSkpK3RlOmVlLzIqKC12KDIsLTEwKi0taWUpKzIpK3RlfSwiZWFzZUluT3V0RXhwbyIpLGVhc2VJbkNpcmM6aShmdW5jdGlvbihRLGllLHRlLGVlLGtlKXtyZXR1cm4tZWUqKHgoMS0oaWUvPWtlKSppZSktMSkrdGV9LCJlYXNlSW5DaXJjIiksZWFzZU91dENpcmM6aShmdW5jdGlvbihRLGllLHRlLGVlLGtlKXtyZXR1cm4gZWUqeCgxLShpZT1pZS9rZS0xKSppZSkrdGV9LCJlYXNlT3V0Q2lyYyIpLGVhc2VJbk91dENpcmM6aShmdW5jdGlvbihRLGllLHRlLGVlLGtlKXtyZXR1cm4oaWUvPWtlLzIpPDE/LWVlLzIqKHgoMS1pZSppZSktMSkrdGU6ZWUvMiooeCgxLShpZS09MikqaWUpKzEpK3RlfSwiZWFzZUluT3V0Q2lyYyIpfSx5PWkoZnVuY3Rpb24oUSl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKFE/ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChRKTpbXSl9LCIkJCIpLE09aShmdW5jdGlvbihRKXtyZXR1cm4geShRKS5zaGlmdCgpfHxudWxsfSwiJCIpLHo9aShmdW5jdGlvbihRKXtyZXR1cm4gUSBpbnN0YW5jZW9mIEVsZW1lbnR9LCJpc0VsZW1lbnQiKSxOPWkoZnVuY3Rpb24oUSl7cmV0dXJuIFE9PT13aW5kb3d9LCJpc1dpbmRvdyIpLEM9aShmdW5jdGlvbihRKXtyZXR1cm4gUT09PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8UT09PWRvY3VtZW50LmJvZHl9LCJpc1Jvb3RDb250YWluZXIiKSxfPWkoZnVuY3Rpb24oUSxpZSl7aWYoeihpZSkpcmV0dXJuIFE9PT1pZTtmb3IodmFyIHRlPXkoaWUpLGVlPXRlLmxlbmd0aDstLWVlPj0wJiZ0ZVtlZV0hPT1ROyk7cmV0dXJuIGVlPi0xfSwibWF0Y2hlcyIpLE89aShmdW5jdGlvbihRKXtyZXR1cm4gTWF0aC5tYXgoUS5zY3JvbGxIZWlnaHQsUS5jbGllbnRIZWlnaHQsUS5vZmZzZXRIZWlnaHQpfSwiZ2V0SGVpZ2h0IiksJD1pKGZ1bmN0aW9uKFEpe3JldHVybiBNYXRoLm1heChRLnNjcm9sbFdpZHRoLFEuY2xpZW50V2lkdGgsUS5vZmZzZXRXaWR0aCl9LCJnZXRXaWR0aCIpLEU9aShmdW5jdGlvbihRKXtyZXR1cm57d2lkdGg6JChRKSxoZWlnaHQ6TyhRKX19LCJnZXRTaXplIiksSD1pKGZ1bmN0aW9uKFEpe3ZhciBpZT1OKFEpfHxDKFEpO3JldHVybnt2aWV3cG9ydDp7d2lkdGg6aWU/TWF0aC5taW4od2luZG93LmlubmVyV2lkdGgsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoKTpRLmNsaWVudFdpZHRoLGhlaWdodDppZT93aW5kb3cuaW5uZXJIZWlnaHQ6US5jbGllbnRIZWlnaHR9LHNpemU6aWU/e3dpZHRoOk1hdGgubWF4KCQoZG9jdW1lbnQuYm9keSksJChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpKSxoZWlnaHQ6TWF0aC5tYXgoTyhkb2N1bWVudC5ib2R5KSxPKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkpfTpFKFEpfX0sImdldFZpZXdwb3J0QW5kRWxlbWVudFNpemVzIiksaz17eToic2Nyb2xsVG9wIix4OiJzY3JvbGxMZWZ0In0sUz17eToicGFnZVlPZmZzZXQiLHg6InBhZ2VYT2Zmc2V0In0sST1pKGZ1bmN0aW9uKFEsaWUpe3JldHVybiBOKFEpP1FbU1tpZV1dOlFba1tpZV1dfSwiZ2V0U2Nyb2xsIiksUD1pKGZ1bmN0aW9uKFEsaWUsdGUpe2lmKE4oUSkpe3ZhciBlZT10ZT09PSJ5IjtRLnNjcm9sbFRvKGVlP1EucGFnZVhPZmZzZXQ6aWUsZWU/aWU6US5wYWdlWU9mZnNldCl9ZWxzZSBRW2tbdGVdXT1pZX0sInNldFNjcm9sbCIpLFI9aShmdW5jdGlvbihRLGllKXt2YXIgdGU9US5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZih0ZS53aWR0aHx8dGUuaGVpZ2h0KXt2YXIgZWU9e3RvcDowLGxlZnQ6MH0sa2U9dm9pZCAwO2lmKE4oaWUpfHxDKGllKSlrZT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsZWUudG9wPXdpbmRvd1tTLnldLGVlLmxlZnQ9d2luZG93W1MueF07ZWxzZXtrZT1pZTt2YXIgWD1rZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtlZS50b3A9WC50b3AqLTEra2Vbay55XSxlZS5sZWZ0PVgubGVmdCotMStrZVtrLnhdfXJldHVybnt0b3A6dGUudG9wK2VlLnRvcC1rZS5jbGllbnRUb3AsbGVmdDp0ZS5sZWZ0K2VlLmxlZnQta2UuY2xpZW50TGVmdH19cmV0dXJuIHRlfSwiZ2V0T2Zmc2V0IiksSz0oZnVuY3Rpb24oKXtyZXR1cm4gZT8ib253aGVlbCJpbiBkb2N1bWVudD8id2hlZWwiOiJtb3VzZXdoZWVsIjoid2hlZWwifSkoKSxWPWkoZnVuY3Rpb24oUSl7cmV0dXJuIFE9PT0id2hlZWwiP0s6UX0sImV2ZW50TmFtZSIpLFc9aShmdW5jdGlvbihRLGllLHRlLGVlLGtlKXt0ZS5zcGxpdCgiICIpLmZvckVhY2goZnVuY3Rpb24oWCl7UVtpZV0oVihYKSxlZSxhP3twYXNzaXZlOmtlfTohMSl9KX0sImFwcGx5IiksbWU9aShmdW5jdGlvbihRLGllLHRlLGVlKXtyZXR1cm4gVyhRLCJhZGRFdmVudExpc3RlbmVyIixpZSx0ZSxlZSl9LCJhZGRFdmVudCIpLEI9aShmdW5jdGlvbihRLGllLHRlLGVlKXtyZXR1cm4gVyhRLCJyZW1vdmVFdmVudExpc3RlbmVyIixpZSx0ZSxlZSl9LCJyZW1vdmVFdmVudCIpLFU9L14oXCt8LSk9KFxkKyg/OlwuXGQrKT8pJC8saGU9aShmdW5jdGlvbihRLGllKXt2YXIgdGU9e3RvcDowLGxlZnQ6MCxyZWxhdGl2ZTohMX07aWYocChRLCJ0b3AiKXx8cChRLCJsZWZ0IikpdGU9cyh7fSx0ZSxRKTtlbHNlIGlmKG8oUSkpaWYoUS5sZW5ndGg+MSl0ZS50b3A9UVswXSx0ZS5sZWZ0PVFbMV07ZWxzZSBpZihRLmxlbmd0aD09PTEpdGUudG9wPWllP1FbMF06MCx0ZS5sZWZ0PWllPzA6UVswXTtlbHNlIHJldHVybiBudWxsO2Vsc2UgaWYobChRKSlpZT90ZS50b3A9UTp0ZS5sZWZ0PVE7ZWxzZSBpZihyKFEpKXt2YXIgZWU9US50cmltKCkubWF0Y2goVSk7aWYoIWVlKXJldHVybiBudWxsO3ZhciBrZT1lZVsxXSxYPXBhcnNlSW50KGVlWzJdLDEwKTtrZT09PSIrIj8odGUudG9wPWllP1g6MCx0ZS5sZWZ0PWllPzA6WCk6KHRlLnRvcD1pZT8tWDowLHRlLmxlZnQ9aWU/MDotWCksdGUucmVsYXRpdmU9ITB9ZWxzZSByZXR1cm4gbnVsbDtyZXR1cm4gdGV9LCJwYXJzZUNvb3JkaW5hdGUiKSxGPXt0cmlnZ2VyOiJbZGF0YS1zY3JvbGxdIixoZWFkZXI6IltkYXRhLXNjcm9sbC1oZWFkZXJdIixkdXJhdGlvbjoxZTMsZWFzaW5nOiJlYXNlT3V0UXVpbnQiLG9mZnNldDowLHZlcnRpY2FsOiEwLGhvcml6b250YWw6ITEsY2FuY2VsbGFibGU6ITAsdXBkYXRlVVJMOiExLHByZXZlbnREZWZhdWx0OiEwLHN0b3BQcm9wYWdhdGlvbjohMCxiZWZvcmU6bnVsbCxhZnRlcjpudWxsLGNhbmNlbDpudWxsLGNvbXBsZXRlOm51bGwsc3RlcDpudWxsfSxqPSJjbGljayIsdWU9IndoZWVsIHRvdWNoc3RhcnQgdG91Y2htb3ZlIixsZT0oZnVuY3Rpb24oKXtmdW5jdGlvbiBRKGllLHRlKXt2YXIgZWU9dGhpczt0aGlzLiRlbD1udWxsLHRoaXMuY3R4PXskdHJpZ2dlcjpudWxsLG9wdHM6bnVsbCxwcm9ncmVzczohMSxwb3M6bnVsbCxzdGFydFBvczpudWxsLGVhc2luZzpudWxsLHN0YXJ0OjAsaWQ6MCxjYW5jZWw6ITEsaGFzaDpudWxsfSx0aGlzLmxvb3A9ZnVuY3Rpb24oWCl7dmFyIFo9ZWUseWU9Wi4kZWwscT1aLmN0eDtpZihxLnN0YXJ0fHwocS5zdGFydD1YKSwhcS5wcm9ncmVzc3x8IXllKXtlZS5zdG9wKCk7cmV0dXJufXZhciBBPXEub3B0cyxzZT1xLnBvcyxvZT1xLnN0YXJ0LGFlPXEuc3RhcnRQb3MsVGU9cS5lYXNpbmcsUmU9QS5kdXJhdGlvbixCZT17dG9wOiJ5IixsZWZ0OiJ4In0sR2U9WC1vZSxEZT1NYXRoLm1pbigxLE1hdGgubWF4KEdlL1JlLDApKTtPYmplY3Qua2V5cyhzZSkuZm9yRWFjaChmdW5jdGlvbihfZSl7dmFyIENlPXNlW19lXSx2ZT1hZVtfZV0sYmU9Q2UtdmU7aWYoYmUhPT0wKXt2YXIgRWU9VGUoRGUsUmUqRGUsMCwxLFJlKTtQKHllLE1hdGgucm91bmQodmUrYmUqRWUpLEJlW19lXSl9fSksR2U8PVJlPyhlZS5ob29rKEEsInN0ZXAiLERlKSxxLmlkPVEucmFmKGVlLmxvb3ApKTplZS5zdG9wKCEwKX0sdGhpcy5oYW5kbGVDbGljaz1mdW5jdGlvbihYKXtmb3IodmFyIFo9ZWUub3B0cyx5ZT1YLnRhcmdldDt5ZSYmeWUhPT1kb2N1bWVudDt5ZT15ZS5wYXJlbnROb2RlKWlmKF8oeWUsWi50cmlnZ2VyKSl7dmFyIHE9SlNPTi5wYXJzZSh5ZS5nZXRBdHRyaWJ1dGUoImRhdGEtc2Nyb2xsLW9wdGlvbnMiKXx8Int9IiksQT15ZS5nZXRBdHRyaWJ1dGUoImRhdGEtc2Nyb2xsIiksc2U9QXx8eWUuZ2V0QXR0cmlidXRlKCJocmVmIiksb2U9cyh7fSxaLHEpLGFlPW9lLnByZXZlbnREZWZhdWx0LFRlPW9lLnN0b3BQcm9wYWdhdGlvbixSZT1vZS52ZXJ0aWNhbCxCZT1vZS5ob3Jpem9udGFsO2FlJiZYLnByZXZlbnREZWZhdWx0KCksVGUmJlguc3RvcFByb3BhZ2F0aW9uKCksZWUuY3R4LiR0cmlnZ2VyPXllLEJlJiZSZT9lZS50byhzZSxvZSk6UmU/ZWUudG9Ub3Aoc2Usb2UpOkJlJiZlZS50b0xlZnQoc2Usb2UpO2JyZWFrfX0sdGhpcy5oYW5kbGVTdG9wPWZ1bmN0aW9uKFgpe3ZhciBaPWVlLmN0eCx5ZT1aLm9wdHM7eWUmJnllLmNhbmNlbGxhYmxlPyhaLmNhbmNlbD0hMCxlZS5zdG9wKCkpOlgucHJldmVudERlZmF1bHQoKX0sdGhpcy5vcHRzPXMoe30sRixpZXx8e30pO3ZhciBrZT1udWxsO2UmJih0eXBlb2YgdGU9PSJzdHJpbmciP2tlPU0odGUpOnRlIT1udWxsP2tlPXRlOmtlPXdpbmRvdyksdGhpcy4kZWw9a2Usa2UmJnRoaXMuYmluZCghMCwhMSl9cmV0dXJuIGkoUSwiU3dlZXRTY3JvbGwiKSxRLmNyZWF0ZT1mdW5jdGlvbihpZSx0ZSl7cmV0dXJuIG5ldyBRKGllLHRlKX0sUS5wcm90b3R5cGUudG89ZnVuY3Rpb24oaWUsdGUpe2lmKGUpe3ZhciBlZT10aGlzLGtlPWVlLiRlbCxYPWVlLmN0eCxaPWVlLm9wdHMseWU9WC4kdHJpZ2dlcixxPXMoe30sWix0ZXx8e30pLEE9cS5vZmZzZXQsc2U9cS52ZXJ0aWNhbCxvZT1xLmhvcml6b250YWwsYWU9eihxLmhlYWRlcik/cS5oZWFkZXI6TShxLmhlYWRlciksVGU9L14jLyxSZT1yKGllKSYmVGUudGVzdChpZSk/aWU6bnVsbDtpZihYLm9wdHM9cSxYLmNhbmNlbD0hMSxYLmhhc2g9UmUsdGhpcy5zdG9wKCksISFrZSl7dmFyIEJlPWhlKEEsc2UpLEdlPWhlKGllLHNlKSxEZT17dG9wOjAsbGVmdDowfTtpZihHZSlpZihHZS5yZWxhdGl2ZSl7dmFyIF9lPUkoa2Usc2U/InkiOiJ4Iik7RGUudG9wPXNlP19lK0dlLnRvcDpHZS50b3AsRGUubGVmdD1zZT9HZS5sZWZ0Ol9lK0dlLmxlZnR9ZWxzZSBEZT1HZTtlbHNlIGlmKHIoaWUpJiZpZSE9PSIjIil7dmFyIENlPU0oaWUpO2lmKCFDZSlyZXR1cm47RGU9UihDZSxrZSl9QmUmJihEZS50b3ArPUJlLnRvcCxEZS5sZWZ0Kz1CZS5sZWZ0KSxhZSYmKERlLnRvcD1NYXRoLm1heCgwLERlLnRvcC1FKGFlKS5oZWlnaHQpKTt2YXIgdmU9SChrZSksYmU9dmUudmlld3BvcnQsRWU9dmUuc2l6ZTtpZihEZS50b3A9c2U/TWF0aC5tYXgoMCxNYXRoLm1pbihFZS5oZWlnaHQtYmUuaGVpZ2h0LERlLnRvcCkpOkkoa2UsInkiKSxEZS5sZWZ0PW9lP01hdGgubWF4KDAsTWF0aC5taW4oRWUud2lkdGgtYmUud2lkdGgsRGUubGVmdCkpOkkoa2UsIngiKSx0aGlzLmhvb2socSwiYmVmb3JlIixEZSx5ZSk9PT0hMSl7WC5vcHRzPW51bGw7cmV0dXJufVgucG9zPURlLHRoaXMuc3RhcnQocSksdGhpcy5iaW5kKCExLCEwKX19fSxRLnByb3RvdHlwZS50b1RvcD1mdW5jdGlvbihpZSx0ZSl7dGhpcy50byhpZSxzKHt9LHRlfHx7fSx7dmVydGljYWw6ITAsaG9yaXpvbnRhbDohMX0pKX0sUS5wcm90b3R5cGUudG9MZWZ0PWZ1bmN0aW9uKGllLHRlKXt0aGlzLnRvKGllLHMoe30sdGV8fHt9LHt2ZXJ0aWNhbDohMSxob3Jpem9udGFsOiEwfSkpfSxRLnByb3RvdHlwZS50b0VsZW1lbnQ9ZnVuY3Rpb24oaWUsdGUpe3ZhciBlZT10aGlzLiRlbDshZXx8IWVlfHx0aGlzLnRvKFIoaWUsZWUpLHRlfHx7fSl9LFEucHJvdG90eXBlLnN0b3A9ZnVuY3Rpb24oaWUpe2llPT09dm9pZCAwJiYoaWU9ITEpO3ZhciB0ZT10aGlzLGVlPXRlLiRlbCxrZT10ZS5jdHgsWD1rZS5wb3M7IWVlfHwha2UucHJvZ3Jlc3N8fChRLmNhZihrZS5pZCksa2UucHJvZ3Jlc3M9ITEsa2Uuc3RhcnQ9MCxrZS5pZD0wLGllJiZYJiYoUChlZSxYLmxlZnQsIngiKSxQKGVlLFgudG9wLCJ5IikpLHRoaXMuY29tcGxldGUoKSl9LFEucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihpZSl7aWYodGhpcy4kZWwpe3ZhciB0ZT1zKHt9LHRoaXMub3B0cyxpZSk7dGhpcy5zdG9wKCksdGhpcy51bmJpbmQoITAsITApLHRoaXMub3B0cz10ZSx0aGlzLmJpbmQoITAsITEpfX0sUS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuJGVsJiYodGhpcy5zdG9wKCksdGhpcy51bmJpbmQoITAsITApLHRoaXMuJGVsPW51bGwpfSxRLnByb3RvdHlwZS5vbkJlZm9yZT1mdW5jdGlvbihpZSx0ZSl7cmV0dXJuITB9LFEucHJvdG90eXBlLm9uU3RlcD1mdW5jdGlvbihpZSl7fSxRLnByb3RvdHlwZS5vbkFmdGVyPWZ1bmN0aW9uKGllLHRlKXt9LFEucHJvdG90eXBlLm9uQ2FuY2VsPWZ1bmN0aW9uKCl7fSxRLnByb3RvdHlwZS5vbkNvbXBsZXRlPWZ1bmN0aW9uKGllKXt9LFEucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKGllKXt2YXIgdGU9dGhpcy5jdHg7dGUub3B0cz1pZSx0ZS5wcm9ncmVzcz0hMCx0ZS5lYXNpbmc9bihpZS5lYXNpbmcpP2llLmVhc2luZzpmW2llLmVhc2luZ107dmFyIGVlPXRoaXMuJGVsLGtlPXt0b3A6SShlZSwieSIpLGxlZnQ6SShlZSwieCIpfTt0ZS5zdGFydFBvcz1rZSx0ZS5pZD1RLnJhZih0aGlzLmxvb3ApfSxRLnByb3RvdHlwZS5jb21wbGV0ZT1mdW5jdGlvbigpe3ZhciBpZT10aGlzLHRlPWllLiRlbCxlZT1pZS5jdHgsa2U9ZWUuaGFzaCxYPWVlLmNhbmNlbCxaPWVlLm9wdHMseWU9ZWUucG9zLHE9ZWUuJHRyaWdnZXI7aWYoISghdGV8fCFaKSl7aWYoa2UhPW51bGwmJmtlIT09d2luZG93LmxvY2F0aW9uLmhhc2gpe3ZhciBBPVoudXBkYXRlVVJMO2UmJnQmJkEhPT0hMSYmd2luZG93Lmhpc3RvcnlbQT09PSJyZXBsYWNlIj8icmVwbGFjZVN0YXRlIjoicHVzaFN0YXRlIl0obnVsbCwiIixrZSl9dGhpcy51bmJpbmQoITEsITApLGVlLm9wdHM9bnVsbCxlZS4kdHJpZ2dlcj1udWxsLFg/dGhpcy5ob29rKFosImNhbmNlbCIpOnRoaXMuaG9vayhaLCJhZnRlciIseWUscSksdGhpcy5ob29rKFosImNvbXBsZXRlIixYKX19LFEucHJvdG90eXBlLmhvb2s9ZnVuY3Rpb24oaWUsdGUpe2Zvcih2YXIgZWU9W10sa2U9MjtrZTxhcmd1bWVudHMubGVuZ3RoO2tlKyspZWVba2UtMl09YXJndW1lbnRzW2tlXTt2YXIgWCxaPWllW3RlXSx5ZSxxO3JldHVybiBuKFopJiYoeWU9Wi5hcHBseSh0aGlzLGVlLmNvbmNhdChbdGhpc10pKSkscT0oWD10aGlzKVsib24iKyh0ZVswXS50b1VwcGVyQ2FzZSgpK3RlLnNsaWNlKDEpKV0uYXBwbHkoWCxlZSkseWUhPT12b2lkIDA/eWU6cX0sUS5wcm90b3R5cGUuYmluZD1mdW5jdGlvbihpZSx0ZSl7dmFyIGVlPXRoaXMsa2U9ZWUuJGVsLFg9ZWUuY3R4Lm9wdHM7a2UmJihpZSYmbWUoa2Usaix0aGlzLmhhbmRsZUNsaWNrLCExKSx0ZSYmbWUoa2UsdWUsdGhpcy5oYW5kbGVTdG9wLFg/WC5jYW5jZWxsYWJsZTohMCkpfSxRLnByb3RvdHlwZS51bmJpbmQ9ZnVuY3Rpb24oaWUsdGUpe3ZhciBlZT10aGlzLGtlPWVlLiRlbCxYPWVlLmN0eC5vcHRzO2tlJiYoaWUmJkIoa2Usaix0aGlzLmhhbmRsZUNsaWNrLCExKSx0ZSYmQihrZSx1ZSx0aGlzLmhhbmRsZVN0b3AsWD9YLmNhbmNlbGxhYmxlOiEwKSl9LFEucmFmPWQsUS5jYWY9dSxRfSkoKTtyZXR1cm4gbGV9KX0pO3ZhciBoYixKSGEsZmI9ZygoKT0+e2k1dCgpO3BzZSgpO2QwKCk7ZzkoKTt5eXQoKTtpbygpOyR5dCgpO1oyKCk7T3l0KCk7bzMoKTtHNmUoKTthc2UoKTt5cmUoKTtLYWUoKTtLeSgpO01oZSgpO0FhZSgpO2p3dCgpO2hiPXhuKFZ3dCgpLDEpLEpIYT17T2JqZWN0TWFwOmIwLFN0cmluZ21hcDpaeSxGYXN0TWFwOnIzfX0pO3ZhciBNaT17fTt5dChNaSx7Y29udGFpbmVyQ29udGV4dFN0eWxlczooKT0+YXFhLGNzc0ZvckNvbnN0cmFpbnQ6KCk9PmVxYSxjc3NGb3JDb25zdHJhaW50Q29udGFpbmVyOigpPT50cWEsY3NzRm9yQ29udGFpbmVyOigpPT5Yd3QsY3NzRm9yRGVza3RvcDooKT0+c3FhLGNzc0Zvck5vdGVib29rOigpPT5pcWEsY3NzRm9yUGhhYmxldDooKT0+b3FhLGNzc0ZvclBob25lOigpPT5ucWEsY3NzRm9yVGFibGV0OigpPT5ycWEsY3NzRm9yVmlld3BvcnQ6KCk9PmozLGRlc2t0b3A6KCk9Pld3dCxub3RlYm9vazooKT0+R3d0LHBoYWJsZXQ6KCk9Pll3dCxwaG9uZTooKT0+Wnd0LHRhYmxldDooKT0+S3d0fSk7dmFyIFd3dCxHd3QsS3d0LFl3dCxad3QsVXd0LGozLFh3dCxlcWEsdHFhLGFxYSxzcWEsaXFhLHJxYSxvcWEsbnFhLHY1ZT1nKCgpPT57bWIoKTt2YygpO1d3dD0xNjAwLEd3dD0xMjQwLEt3dD0xMDI0LFl3dD02MDAsWnd0PTQwMCxVd3Q9aShzPT57bGV0IGU9W107cmV0dXJuIHMubWluV2lkdGgmJmUucHVzaChgKG1pbi13aWR0aDogJHtzLm1pbldpZHRofXB4KWApLHMubWF4V2lkdGgmJmUucHVzaChgKG1heC13aWR0aDogJHtzLm1heFdpZHRofXB4KWApLGUuam9pbigiIGFuZCAiKX0sImJ1aWxkQ29uZGl0aW9uIiksajM9aSgocyxlKT0+YWEoYAogICAgQGNvbnRhaW5lciB3Y2NUb29sc1ZpZXdwb3J0ICR7ZX0gewogICAgICAke3MuY3NzVGV4dH0KICAgIH0KICAgIEBtZWRpYSAke2V9IHsKICAgICAgJHtzLmNzc1RleHR9CiAgICB9CiAgYCksImNzc0ZvclZpZXdwb3J0IiksWHd0PWkoKHMsZSx0KT0+YWEoYAogICAgQGNvbnRhaW5lciAke3R9ICR7ZX0gewogICAgICAke3MuY3NzVGV4dH0KICAgIH0KICBgKSwiY3NzRm9yQ29udGFpbmVyIiksZXFhPWkocz0+ZT0+ajMoZSxVd3QocykpLCJjc3NGb3JDb25zdHJhaW50IiksdHFhPWkoKHMsZSk9PnQ9Plh3dCh0LFV3dChzKSxlKSwiY3NzRm9yQ29uc3RyYWludENvbnRhaW5lciIpLGFxYT1pKHM9PkpgCiAgOmhvc3QgewogICAgY29udGFpbmVyLXR5cGU6IGlubGluZS1zaXplOwogICAgY29udGFpbmVyLW5hbWU6ICR7YWEocyl9OwogIH0KYCwiY29udGFpbmVyQ29udGV4dFN0eWxlcyIpLHNxYT1pKHM9PmozKHMsYChtaW4td2lkdGg6ICR7V3d0fXB4KWApLCJjc3NGb3JEZXNrdG9wIiksaXFhPWkocz0+ajMocyxgKG1heC13aWR0aDogJHtHd3R9cHgpYCksImNzc0Zvck5vdGVib29rIikscnFhPWkocz0+ajMocyxgKG1heC13aWR0aDogJHtLd3R9cHgpYCksImNzc0ZvclRhYmxldCIpLG9xYT1pKHM9PmozKHMsYChtYXgtd2lkdGg6ICR7WXd0fXB4KWApLCJjc3NGb3JQaGFibGV0IiksbnFhPWkocz0+ajMocyxgKG1heC13aWR0aDogJHtad3R9cHgpYCksImNzc0ZvclBob25lIil9KTt2YXIga3JlLFF3dD1nKCgpPT57ZmIoKTtrcmU9Y2xhc3N7c3RhdGlje2kodGhpcywiU2Nyb2xsZXIiKX1kb210b29sc0luc3RhbmNlO2Rpc3Bvc2VkPSExO3Njcm9sbENhbGxiYWNrcz1bXTtsZW5pc0luc3RhbmNlPW51bGw7bGVuaXNTY3JvbGxVbnN1YnNjcmliZT1udWxsO25hdGl2ZVNjcm9sbExpc3RlbmVyQXR0YWNoZWQ9ITE7aGFuZGxlTmF0aXZlU2Nyb2xsPWkoZT0+e3RoaXMuZXhlY3V0ZVNjcm9sbENhbGxiYWNrcygpfSwiaGFuZGxlTmF0aXZlU2Nyb2xsIik7aGFuZGxlTGVuaXNTY3JvbGw9aShlPT57dGhpcy5leGVjdXRlU2Nyb2xsQ2FsbGJhY2tzKCl9LCJoYW5kbGVMZW5pc1Njcm9sbCIpO2NvbnN0cnVjdG9yKGUpe3RoaXMuZG9tdG9vbHNJbnN0YW5jZT1lLHRoaXMuYXR0YWNoTmF0aXZlU2Nyb2xsTGlzdGVuZXIoKX1zd2VldFNjcm9sbGVyPW5ldyBoYi5kZWZhdWx0KHt9KTthc3luYyB0b0VsZW1lbnQoZSx0KXt0aGlzLnN3ZWV0U2Nyb2xsZXIudG9FbGVtZW50KGUsdCksdD8uZHVyYXRpb24mJmF3YWl0IFh0LmRlbGF5Rm9yKHQuZHVyYXRpb24pfWFzeW5jIGRldGVjdE5hdGl2ZVNtb290aFNjcm9sbCgpe2xldCBlPWdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5zY3JvbGxCZWhhdmlvcix0PWRvY3VtZW50LmJvZHk/Z2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5zY3JvbGxCZWhhdmlvcjoiYXV0byI7aWYoZT09PSJzbW9vdGgifHx0PT09InNtb290aCIpcmV0dXJuITA7bGV0IGE9bXQuZGVmZXIoKSxyPTEyLG49MyxvPS43NSxsPTEyMDAscD1bXSxkPWkodj0+e3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ3aGVlbCIsdSksd2luZG93LmNsZWFyVGltZW91dChiKSxhLnJlc29sdmUodil9LCJmaW5hbGl6ZSIpO2Z1bmN0aW9uIHUodil7cC5wdXNoKHYuZGVsdGFZKSxwLmxlbmd0aD49ciYmYygpfWkodSwib25XaGVlbCIpO2Z1bmN0aW9uIGMoKXtpZihwLmxlbmd0aDwyKXtkKCExKTtyZXR1cm59bGV0IHY9cC5sZW5ndGgtMSx4PTA7Zm9yKGxldCBmPTA7Zjx2O2YrKylNYXRoLmFicyhwW2YrMV0tcFtmXSk8PW4mJngrKztsZXQgbT14L3Y7ZChtPj1vKX1pKGMsImFuYWx5emVFdmVudHMiKTtsZXQgYj13aW5kb3cuc2V0VGltZW91dCgoKT0+e2MoKX0sbCk7cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ3aGVlbCIsdSx7cGFzc2l2ZTohMH0pLGEucHJvbWlzZX1hc3luYyBlbmFibGVMZW5pc1Njcm9sbChlKXtpZih0aGlzLmRpc3Bvc2VkKXJldHVybjt0aGlzLmxlbmlzSW5zdGFuY2UmJnRoaXMuZGlzYWJsZUxlbmlzU2Nyb2xsKCk7bGV0IHQ9bmV3IEFrKHthdXRvUmFmOiEwfSk7aWYoZT8uZGlzYWJsZU9uTmF0aXZlU21vb3RoU2Nyb2xsJiZhd2FpdCB0aGlzLmRldGVjdE5hdGl2ZVNtb290aFNjcm9sbCgpKXt0LmRlc3Ryb3koKTtyZXR1cm59dGhpcy5sZW5pc0luc3RhbmNlPXQsdGhpcy5kZXRhY2hOYXRpdmVTY3JvbGxMaXN0ZW5lcigpLHRoaXMuYXR0YWNoTGVuaXNTY3JvbGxMaXN0ZW5lcigpfWRpc2FibGVMZW5pc1Njcm9sbCgpe3RoaXMubGVuaXNJbnN0YW5jZSYmKHRoaXMuZGV0YWNoTGVuaXNTY3JvbGxMaXN0ZW5lcigpLHRoaXMubGVuaXNJbnN0YW5jZS5kZXN0cm95KCksdGhpcy5sZW5pc0luc3RhbmNlPW51bGwsdGhpcy5hdHRhY2hOYXRpdmVTY3JvbGxMaXN0ZW5lcigpKX1vblNjcm9sbChlKXtyZXR1cm4gdGhpcy5zY3JvbGxDYWxsYmFja3MucHVzaChlKSwoKT0+e3RoaXMuc2Nyb2xsQ2FsbGJhY2tzPXRoaXMuc2Nyb2xsQ2FsbGJhY2tzLmZpbHRlcih0PT50IT09ZSl9fWV4ZWN1dGVTY3JvbGxDYWxsYmFja3MoKXt0aGlzLnNjcm9sbENhbGxiYWNrcy5mb3JFYWNoKGU9Pnt0cnl7ZSgpfWNhdGNoKHQpe2NvbnNvbGUuZXJyb3IoIkVycm9yIGluIHNjcm9sbCBjYWxsYmFjazoiLHQpfX0pfWF0dGFjaE5hdGl2ZVNjcm9sbExpc3RlbmVyKCl7dGhpcy5uYXRpdmVTY3JvbGxMaXN0ZW5lckF0dGFjaGVkfHx0aGlzLmRpc3Bvc2VkfHwod2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5oYW5kbGVOYXRpdmVTY3JvbGwpLHRoaXMubmF0aXZlU2Nyb2xsTGlzdGVuZXJBdHRhY2hlZD0hMCl9ZGV0YWNoTmF0aXZlU2Nyb2xsTGlzdGVuZXIoKXt0aGlzLm5hdGl2ZVNjcm9sbExpc3RlbmVyQXR0YWNoZWQmJih3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLmhhbmRsZU5hdGl2ZVNjcm9sbCksdGhpcy5uYXRpdmVTY3JvbGxMaXN0ZW5lckF0dGFjaGVkPSExKX1hdHRhY2hMZW5pc1Njcm9sbExpc3RlbmVyKCl7dGhpcy5sZW5pc0luc3RhbmNlJiYhdGhpcy5sZW5pc1Njcm9sbFVuc3Vic2NyaWJlJiYodGhpcy5sZW5pc1Njcm9sbFVuc3Vic2NyaWJlPXRoaXMubGVuaXNJbnN0YW5jZS5vbigic2Nyb2xsIix0aGlzLmhhbmRsZUxlbmlzU2Nyb2xsKSl9ZGV0YWNoTGVuaXNTY3JvbGxMaXN0ZW5lcigpe3RoaXMubGVuaXNTY3JvbGxVbnN1YnNjcmliZSYmKHRoaXMubGVuaXNTY3JvbGxVbnN1YnNjcmliZSgpLHRoaXMubGVuaXNTY3JvbGxVbnN1YnNjcmliZT1udWxsKX1kaXNwb3NlKCl7dGhpcy5kaXNwb3NlZHx8KHRoaXMuZGlzcG9zZWQ9ITAsdGhpcy5kZXRhY2hMZW5pc1Njcm9sbExpc3RlbmVyKCksdGhpcy5sZW5pc0luc3RhbmNlPy5kZXN0cm95KCksdGhpcy5sZW5pc0luc3RhbmNlPW51bGwsdGhpcy5kZXRhY2hOYXRpdmVTY3JvbGxMaXN0ZW5lcigpLHRoaXMuc2Nyb2xsQ2FsbGJhY2tzPVtdLHRoaXMuc3dlZXRTY3JvbGxlci5kZXN0cm95KCkpfX19KTt2YXIgU3JlLEp3dD1nKCgpPT57bWIoKTtmYigpO1NyZT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJUaGVtZU1hbmFnZXIiKX1kb210b29sc1JlZjtnb0JyaWdodEJvb2xlYW49ITE7cHJlZmVycmVkQ29sb3JTY2hlbWVNZWRpYU1hdGNoPXdpbmRvdy5tYXRjaE1lZGlhKCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGxpZ2h0KSIpO3RoZW1lT2JzZXJ2YWJsZT1uZXcgbHMucnhqcy5SZXBsYXlTdWJqZWN0KDEpO2F1dG9tYXRpY0dsb2JhbFRoZW1lQ2hhbmdlU3Vic2NyaXB0aW9uPW51bGw7cHJlZmVycmVkQ29sb3JTY2hlbWVDaGFuZ2VIYW5kbGVyPWkoZT0+e3RoaXMuZ29CcmlnaHRCb29sZWFuPWUubWF0Y2hlcyx0aGlzLnVwZGF0ZUFsbENvbm5lY3RlZEVsZW1lbnRzKCl9LCJwcmVmZXJyZWRDb2xvclNjaGVtZUNoYW5nZUhhbmRsZXIiKTtjb25zdHJ1Y3RvcihlKXt0aGlzLmRvbXRvb2xzUmVmPWUsdGhpcy5nb0JyaWdodEJvb2xlYW49dGhpcy5wcmVmZXJyZWRDb2xvclNjaGVtZU1lZGlhTWF0Y2gubWF0Y2hlcyx0aGlzLnByZWZlcnJlZENvbG9yU2NoZW1lTWVkaWFNYXRjaC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLHRoaXMucHJlZmVycmVkQ29sb3JTY2hlbWVDaGFuZ2VIYW5kbGVyKSx0aGlzLnVwZGF0ZUFsbENvbm5lY3RlZEVsZW1lbnRzKCl9YXN5bmMgZW5hYmxlQXV0b21hdGljR2xvYmFsVGhlbWVDaGFuZ2UoKXthd2FpdCB0aGlzLmRvbXRvb2xzUmVmLmRvbVJlYWR5LnByb21pc2UsdGhpcy5hdXRvbWF0aWNHbG9iYWxUaGVtZUNoYW5nZVN1YnNjcmlwdGlvbnx8KHRoaXMuYXV0b21hdGljR2xvYmFsVGhlbWVDaGFuZ2VTdWJzY3JpcHRpb249dGhpcy50aGVtZU9ic2VydmFibGUuc3Vic2NyaWJlKHtuZXh0OmkoZT0+e2RvY3VtZW50LmJvZHkuc3R5bGUuYmFja2dyb3VuZD1lPyIjZmZmIjoiIzAwMCJ9LCJuZXh0Iil9KSl9dXBkYXRlQWxsQ29ubmVjdGVkRWxlbWVudHMoKXt0aGlzLmRvbXRvb2xzUmVmLmRpc3Bvc2VkfHx0aGlzLnRoZW1lT2JzZXJ2YWJsZS5uZXh0KHRoaXMuZ29CcmlnaHRCb29sZWFuKX1nb0JyaWdodCgpe3RoaXMuZ29CcmlnaHRCb29sZWFuPSEwLHRoaXMudXBkYXRlQWxsQ29ubmVjdGVkRWxlbWVudHMoKX1nb0RhcmsoKXt0aGlzLmdvQnJpZ2h0Qm9vbGVhbj0hMSx0aGlzLnVwZGF0ZUFsbENvbm5lY3RlZEVsZW1lbnRzKCl9dG9nZ2xlRGFya0JyaWdodCgpe3RoaXMuZ29CcmlnaHRCb29sZWFuPSF0aGlzLmdvQnJpZ2h0Qm9vbGVhbix0aGlzLnVwZGF0ZUFsbENvbm5lY3RlZEVsZW1lbnRzKCl9ZGlzcG9zZSgpe3RoaXMucHJlZmVycmVkQ29sb3JTY2hlbWVNZWRpYU1hdGNoLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNoYW5nZSIsdGhpcy5wcmVmZXJyZWRDb2xvclNjaGVtZUNoYW5nZUhhbmRsZXIpLHRoaXMuYXV0b21hdGljR2xvYmFsVGhlbWVDaGFuZ2VTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCksdGhpcy5hdXRvbWF0aWNHbG9iYWxUaGVtZUNoYW5nZVN1YnNjcmlwdGlvbj1udWxsLHRoaXMudGhlbWVPYnNlcnZhYmxlLmNvbXBsZXRlKCl9fX0pO3ZhciBaZSxfcmUsZWt0PWcoKCk9PntmYigpOyhmdW5jdGlvbihzKXtzW3MuQmFja3NwYWNlPThdPSJCYWNrc3BhY2UiLHNbcy5UYWI9OV09IlRhYiIsc1tzLkVudGVyPTEzXT0iRW50ZXIiLHNbcy5TaGlmdD0xNl09IlNoaWZ0IixzW3MuQ3RybD0xN109IkN0cmwiLHNbcy5BbHQ9MThdPSJBbHQiLHNbcy5QYXVzZUJyZWFrPTE5XT0iUGF1c2VCcmVhayIsc1tzLkNhcHNMb2NrPTIwXT0iQ2Fwc0xvY2siLHNbcy5Fc2NhcGU9MjddPSJFc2NhcGUiLHNbcy5TcGFjZT0zMl09IlNwYWNlIixzW3MuUGFnZVVwPTMzXT0iUGFnZVVwIixzW3MuUGFnZURvd249MzRdPSJQYWdlRG93biIsc1tzLkVuZD0zNV09IkVuZCIsc1tzLkhvbWU9MzZdPSJIb21lIixzW3MuTGVmdEFycm93PTM3XT0iTGVmdEFycm93IixzW3MuVXBBcnJvdz0zOF09IlVwQXJyb3ciLHNbcy5SaWdodEFycm93PTM5XT0iUmlnaHRBcnJvdyIsc1tzLkRvd25BcnJvdz00MF09IkRvd25BcnJvdyIsc1tzLkluc2VydD00NV09Ikluc2VydCIsc1tzLkRlbGV0ZT00Nl09IkRlbGV0ZSIsc1tzLlplcm89NDhdPSJaZXJvIixzW3MuQ2xvc2VkUGFyZW49NDhdPSJDbG9zZWRQYXJlbiIsc1tzLk9uZT00OV09Ik9uZSIsc1tzLkV4Y2xhbWF0aW9uTWFyaz00OV09IkV4Y2xhbWF0aW9uTWFyayIsc1tzLlR3bz01MF09IlR3byIsc1tzLkF0U2lnbj01MF09IkF0U2lnbiIsc1tzLlRocmVlPTUxXT0iVGhyZWUiLHNbcy5Qb3VuZFNpZ249NTFdPSJQb3VuZFNpZ24iLHNbcy5IYXNoPTUxXT0iSGFzaCIsc1tzLkZvdXI9NTJdPSJGb3VyIixzW3MuRG9sbGFyU2lnbj01Ml09IkRvbGxhclNpZ24iLHNbcy5GaXZlPTUzXT0iRml2ZSIsc1tzLlBlcmNlbnRTaWduPTUzXT0iUGVyY2VudFNpZ24iLHNbcy5TaXg9NTRdPSJTaXgiLHNbcy5DYXJldD01NF09IkNhcmV0IixzW3MuSGF0PTU0XT0iSGF0IixzW3MuU2V2ZW49NTVdPSJTZXZlbiIsc1tzLkFtcGVyc2FuZD01NV09IkFtcGVyc2FuZCIsc1tzLkVpZ2h0PTU2XT0iRWlnaHQiLHNbcy5TdGFyPTU2XT0iU3RhciIsc1tzLkFzdGVyaWs9NTZdPSJBc3RlcmlrIixzW3MuTmluZT01N109Ik5pbmUiLHNbcy5PcGVuUGFyZW49NTddPSJPcGVuUGFyZW4iLHNbcy5BPTY1XT0iQSIsc1tzLkI9NjZdPSJCIixzW3MuQz02N109IkMiLHNbcy5EPTY4XT0iRCIsc1tzLkU9NjldPSJFIixzW3MuRj03MF09IkYiLHNbcy5HPTcxXT0iRyIsc1tzLkg9NzJdPSJIIixzW3MuST03M109IkkiLHNbcy5KPTc0XT0iSiIsc1tzLks9NzVdPSJLIixzW3MuTD03Nl09IkwiLHNbcy5NPTc3XT0iTSIsc1tzLk49NzhdPSJOIixzW3MuTz03OV09Ik8iLHNbcy5QPTgwXT0iUCIsc1tzLlE9ODFdPSJRIixzW3MuUj04Ml09IlIiLHNbcy5TPTgzXT0iUyIsc1tzLlQ9ODRdPSJUIixzW3MuVT04NV09IlUiLHNbcy5WPTg2XT0iViIsc1tzLlc9ODddPSJXIixzW3MuWD04OF09IlgiLHNbcy5ZPTg5XT0iWSIsc1tzLlo9OTBdPSJaIixzW3MuTGVmdFdpbmRvd0tleT05MV09IkxlZnRXaW5kb3dLZXkiLHNbcy5SaWdodFdpbmRvd0tleT05Ml09IlJpZ2h0V2luZG93S2V5IixzW3MuU2VsZWN0S2V5PTkzXT0iU2VsZWN0S2V5IixzW3MuTnVtcGFkMD05Nl09Ik51bXBhZDAiLHNbcy5OdW1wYWQxPTk3XT0iTnVtcGFkMSIsc1tzLk51bXBhZDI9OThdPSJOdW1wYWQyIixzW3MuTnVtcGFkMz05OV09Ik51bXBhZDMiLHNbcy5OdW1wYWQ0PTEwMF09Ik51bXBhZDQiLHNbcy5OdW1wYWQ1PTEwMV09Ik51bXBhZDUiLHNbcy5OdW1wYWQ2PTEwMl09Ik51bXBhZDYiLHNbcy5OdW1wYWQ3PTEwM109Ik51bXBhZDciLHNbcy5OdW1wYWQ4PTEwNF09Ik51bXBhZDgiLHNbcy5OdW1wYWQ5PTEwNV09Ik51bXBhZDkiLHNbcy5NdWx0aXBseT0xMDZdPSJNdWx0aXBseSIsc1tzLkFkZD0xMDddPSJBZGQiLHNbcy5TdWJ0cmFjdD0xMDldPSJTdWJ0cmFjdCIsc1tzLkRlY2ltYWxQb2ludD0xMTBdPSJEZWNpbWFsUG9pbnQiLHNbcy5EaXZpZGU9MTExXT0iRGl2aWRlIixzW3MuRjE9MTEyXT0iRjEiLHNbcy5GMj0xMTNdPSJGMiIsc1tzLkYzPTExNF09IkYzIixzW3MuRjQ9MTE1XT0iRjQiLHNbcy5GNT0xMTZdPSJGNSIsc1tzLkY2PTExN109IkY2IixzW3MuRjc9MTE4XT0iRjciLHNbcy5GOD0xMTldPSJGOCIsc1tzLkY5PTEyMF09IkY5IixzW3MuRjEwPTEyMV09IkYxMCIsc1tzLkYxMT0xMjJdPSJGMTEiLHNbcy5GMTI9MTIzXT0iRjEyIixzW3MuTnVtTG9jaz0xNDRdPSJOdW1Mb2NrIixzW3MuU2Nyb2xsTG9jaz0xNDVdPSJTY3JvbGxMb2NrIixzW3MuU2VtaUNvbG9uPTE4Nl09IlNlbWlDb2xvbiIsc1tzLkVxdWFscz0xODddPSJFcXVhbHMiLHNbcy5Db21tYT0xODhdPSJDb21tYSIsc1tzLkRhc2g9MTg5XT0iRGFzaCIsc1tzLlBlcmlvZD0xOTBdPSJQZXJpb2QiLHNbcy5VbmRlclNjb3JlPTE4OV09IlVuZGVyU2NvcmUiLHNbcy5QbHVzU2lnbj0xODddPSJQbHVzU2lnbiIsc1tzLkZvcndhcmRTbGFzaD0xOTFdPSJGb3J3YXJkU2xhc2giLHNbcy5UaWxkZT0xOTJdPSJUaWxkZSIsc1tzLkdyYXZlQWNjZW50PTE5Ml09IkdyYXZlQWNjZW50IixzW3MuT3BlbkJyYWNrZXQ9MjE5XT0iT3BlbkJyYWNrZXQiLHNbcy5DbG9zZWRCcmFja2V0PTIyMV09IkNsb3NlZEJyYWNrZXQiLHNbcy5RdW90ZT0yMjJdPSJRdW90ZSJ9KShaZXx8KFplPXt9KSk7X3JlPWNsYXNze3N0YXRpY3tpKHRoaXMsIktleWJvYXJkIil9ZG9tTm9kZTttYXBDb21ib3NUb0hhbmRsZXJzPW5ldyBNYXA7cHJlc3NlZEtleXM9bmV3IFNldDtsaXN0ZW5pbmc9ITE7Y29uc3RydWN0b3IoZSl7dGhpcy5kb21Ob2RlPWUsdGhpcy5zdGFydExpc3RlbmluZygpfWtleUVudW09WmU7b24oZSl7bGV0IHQ9bmV3IGxzLnJ4anMuU3ViamVjdDtyZXR1cm4gdGhpcy5yZWdpc3RlcktleXMoZSx0KSx0fXRyaWdnZXJLZXlQcmVzcyhlKXtsZXQgdD10aGlzLm5vcm1hbGl6ZUtleXMoZSk7Zm9yKGxldCBhIG9mIHQpdGhpcy5wcmVzc2VkS2V5cy5hZGQoYSk7dGhpcy5jaGVja01hdGNoaW5nS2V5Ym9hcmRTdWJqZWN0cyh0aGlzLmNyZWF0ZUtleWJvYXJkRXZlbnQodCkpO2ZvcihsZXQgYSBvZiB0KXRoaXMucHJlc3NlZEtleXMuZGVsZXRlKGEpfXN0YXJ0TGlzdGVuaW5nKCl7dGhpcy5saXN0ZW5pbmd8fCh0aGlzLmRvbU5vZGUuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5oYW5kbGVLZXlEb3duKSx0aGlzLmRvbU5vZGUuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLHRoaXMuaGFuZGxlS2V5VXApLHRoaXMubGlzdGVuaW5nPSEwKX1zdG9wTGlzdGVuaW5nKCl7dGhpcy5saXN0ZW5pbmcmJih0aGlzLmRvbU5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5oYW5kbGVLZXlEb3duKSx0aGlzLmRvbU5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5dXAiLHRoaXMuaGFuZGxlS2V5VXApLHRoaXMubGlzdGVuaW5nPSExKX1jbGVhcigpe3RoaXMuc3RvcExpc3RlbmluZygpO2ZvcihsZXQgZSBvZiB0aGlzLm1hcENvbWJvc1RvSGFuZGxlcnMudmFsdWVzKCkpZm9yKGxldCB0IG9mIGUuc3ViamVjdHMpdC5jb21wbGV0ZSgpO3RoaXMubWFwQ29tYm9zVG9IYW5kbGVycy5jbGVhcigpLHRoaXMucHJlc3NlZEtleXMuY2xlYXIoKX1kaXNwb3NlKCl7dGhpcy5jbGVhcigpfWhhbmRsZUtleURvd249aShlPT57bGV0IHQ9dGhpcy5yZXNvbHZlS2V5KGUpO3QhPT1udWxsJiYodGhpcy5wcmVzc2VkS2V5cy5hZGQodCksdGhpcy5jaGVja01hdGNoaW5nS2V5Ym9hcmRTdWJqZWN0cyhlKSl9LCJoYW5kbGVLZXlEb3duIik7Y2hlY2tNYXRjaGluZ0tleWJvYXJkU3ViamVjdHMoZSl7dGhpcy5tYXBDb21ib3NUb0hhbmRsZXJzLmZvckVhY2godD0+e2lmKHRoaXMuYXJlQWxsS2V5c1ByZXNzZWQodC5rZXlzKSlmb3IobGV0IGEgb2YgdC5zdWJqZWN0cylhLm5leHQoZSl9KX1oYW5kbGVLZXlVcD1pKGU9PntsZXQgdD10aGlzLnJlc29sdmVLZXkoZSk7dCE9PW51bGwmJnRoaXMucHJlc3NlZEtleXMuZGVsZXRlKHQpfSwiaGFuZGxlS2V5VXAiKTthcmVBbGxLZXlzUHJlc3NlZChlKXtsZXQgdD0hMDtyZXR1cm4gZS5mb3JFYWNoKGE9Pnt0aGlzLnByZXNzZWRLZXlzLmhhcyhhKXx8KHQ9ITEpfSksdH1yZWdpc3RlcktleXMoZSx0KXtsZXQgYT10aGlzLm5vcm1hbGl6ZUtleXMoZSkscj1hLmpvaW4oIisiKSxuPXRoaXMubWFwQ29tYm9zVG9IYW5kbGVycy5nZXQocik7aWYoIW4pe3RoaXMubWFwQ29tYm9zVG9IYW5kbGVycy5zZXQocix7a2V5czphLHN1YmplY3RzOlt0XX0pO3JldHVybn1uLnN1YmplY3RzLnB1c2godCl9bm9ybWFsaXplS2V5cyhlKXtyZXR1cm5bLi4ubmV3IFNldChlKV0uc29ydCgodCxhKT0+dC1hKX1yZXNvbHZlS2V5KGUpe3JldHVybiB0aGlzLnJlc29sdmVLZXlGcm9tQ29kZShlLmNvZGUpPz90aGlzLnJlc29sdmVLZXlGcm9tS2V5KGUua2V5KT8/dGhpcy5yZXNvbHZlS2V5RnJvbUtleUNvZGUoZS5rZXlDb2RlKX1yZXNvbHZlS2V5RnJvbUNvZGUoZSl7aWYoIWUpcmV0dXJuIG51bGw7aWYoZS5zdGFydHNXaXRoKCJLZXkiKSYmZS5sZW5ndGg9PT00KXJldHVybiBaZVtlLnNsaWNlKDMpXT8/bnVsbDtpZihlLnN0YXJ0c1dpdGgoIkRpZ2l0IikmJmUubGVuZ3RoPT09NilyZXR1cm4gdGhpcy5yZXNvbHZlS2V5RnJvbUtleShlLnNsaWNlKDUpKTtzd2l0Y2goZSl7Y2FzZSJCYWNrc3BhY2UiOnJldHVybiBaZS5CYWNrc3BhY2U7Y2FzZSJUYWIiOnJldHVybiBaZS5UYWI7Y2FzZSJFbnRlciI6Y2FzZSJOdW1wYWRFbnRlciI6cmV0dXJuIFplLkVudGVyO2Nhc2UiU2hpZnRMZWZ0IjpjYXNlIlNoaWZ0UmlnaHQiOnJldHVybiBaZS5TaGlmdDtjYXNlIkNvbnRyb2xMZWZ0IjpjYXNlIkNvbnRyb2xSaWdodCI6cmV0dXJuIFplLkN0cmw7Y2FzZSJBbHRMZWZ0IjpjYXNlIkFsdFJpZ2h0IjpyZXR1cm4gWmUuQWx0O2Nhc2UiUGF1c2UiOnJldHVybiBaZS5QYXVzZUJyZWFrO2Nhc2UiQ2Fwc0xvY2siOnJldHVybiBaZS5DYXBzTG9jaztjYXNlIkVzY2FwZSI6cmV0dXJuIFplLkVzY2FwZTtjYXNlIlNwYWNlIjpyZXR1cm4gWmUuU3BhY2U7Y2FzZSJQYWdlVXAiOnJldHVybiBaZS5QYWdlVXA7Y2FzZSJQYWdlRG93biI6cmV0dXJuIFplLlBhZ2VEb3duO2Nhc2UiRW5kIjpyZXR1cm4gWmUuRW5kO2Nhc2UiSG9tZSI6cmV0dXJuIFplLkhvbWU7Y2FzZSJBcnJvd0xlZnQiOnJldHVybiBaZS5MZWZ0QXJyb3c7Y2FzZSJBcnJvd1VwIjpyZXR1cm4gWmUuVXBBcnJvdztjYXNlIkFycm93UmlnaHQiOnJldHVybiBaZS5SaWdodEFycm93O2Nhc2UiQXJyb3dEb3duIjpyZXR1cm4gWmUuRG93bkFycm93O2Nhc2UiSW5zZXJ0IjpyZXR1cm4gWmUuSW5zZXJ0O2Nhc2UiRGVsZXRlIjpyZXR1cm4gWmUuRGVsZXRlO2Nhc2UiTWV0YUxlZnQiOnJldHVybiBaZS5MZWZ0V2luZG93S2V5O2Nhc2UiTWV0YVJpZ2h0IjpyZXR1cm4gWmUuUmlnaHRXaW5kb3dLZXk7Y2FzZSJDb250ZXh0TWVudSI6cmV0dXJuIFplLlNlbGVjdEtleTtjYXNlIk51bXBhZDAiOnJldHVybiBaZS5OdW1wYWQwO2Nhc2UiTnVtcGFkMSI6cmV0dXJuIFplLk51bXBhZDE7Y2FzZSJOdW1wYWQyIjpyZXR1cm4gWmUuTnVtcGFkMjtjYXNlIk51bXBhZDMiOnJldHVybiBaZS5OdW1wYWQzO2Nhc2UiTnVtcGFkNCI6cmV0dXJuIFplLk51bXBhZDQ7Y2FzZSJOdW1wYWQ1IjpyZXR1cm4gWmUuTnVtcGFkNTtjYXNlIk51bXBhZDYiOnJldHVybiBaZS5OdW1wYWQ2O2Nhc2UiTnVtcGFkNyI6cmV0dXJuIFplLk51bXBhZDc7Y2FzZSJOdW1wYWQ4IjpyZXR1cm4gWmUuTnVtcGFkODtjYXNlIk51bXBhZDkiOnJldHVybiBaZS5OdW1wYWQ5O2Nhc2UiTnVtcGFkTXVsdGlwbHkiOnJldHVybiBaZS5NdWx0aXBseTtjYXNlIk51bXBhZEFkZCI6cmV0dXJuIFplLkFkZDtjYXNlIk51bXBhZFN1YnRyYWN0IjpyZXR1cm4gWmUuU3VidHJhY3Q7Y2FzZSJOdW1wYWREZWNpbWFsIjpyZXR1cm4gWmUuRGVjaW1hbFBvaW50O2Nhc2UiTnVtcGFkRGl2aWRlIjpyZXR1cm4gWmUuRGl2aWRlO2Nhc2UiRjEiOnJldHVybiBaZS5GMTtjYXNlIkYyIjpyZXR1cm4gWmUuRjI7Y2FzZSJGMyI6cmV0dXJuIFplLkYzO2Nhc2UiRjQiOnJldHVybiBaZS5GNDtjYXNlIkY1IjpyZXR1cm4gWmUuRjU7Y2FzZSJGNiI6cmV0dXJuIFplLkY2O2Nhc2UiRjciOnJldHVybiBaZS5GNztjYXNlIkY4IjpyZXR1cm4gWmUuRjg7Y2FzZSJGOSI6cmV0dXJuIFplLkY5O2Nhc2UiRjEwIjpyZXR1cm4gWmUuRjEwO2Nhc2UiRjExIjpyZXR1cm4gWmUuRjExO2Nhc2UiRjEyIjpyZXR1cm4gWmUuRjEyO2Nhc2UiTnVtTG9jayI6cmV0dXJuIFplLk51bUxvY2s7Y2FzZSJTY3JvbGxMb2NrIjpyZXR1cm4gWmUuU2Nyb2xsTG9jaztjYXNlIlNlbWljb2xvbiI6cmV0dXJuIFplLlNlbWlDb2xvbjtjYXNlIkVxdWFsIjpyZXR1cm4gWmUuRXF1YWxzO2Nhc2UiQ29tbWEiOnJldHVybiBaZS5Db21tYTtjYXNlIk1pbnVzIjpyZXR1cm4gWmUuRGFzaDtjYXNlIlBlcmlvZCI6cmV0dXJuIFplLlBlcmlvZDtjYXNlIlNsYXNoIjpyZXR1cm4gWmUuRm9yd2FyZFNsYXNoO2Nhc2UiQmFja3F1b3RlIjpyZXR1cm4gWmUuVGlsZGU7Y2FzZSJCcmFja2V0TGVmdCI6cmV0dXJuIFplLk9wZW5CcmFja2V0O2Nhc2UiQnJhY2tldFJpZ2h0IjpyZXR1cm4gWmUuQ2xvc2VkQnJhY2tldDtjYXNlIlF1b3RlIjpyZXR1cm4gWmUuUXVvdGU7ZGVmYXVsdDpyZXR1cm4gbnVsbH19cmVzb2x2ZUtleUZyb21LZXkoZSl7aWYoIWUpcmV0dXJuIG51bGw7aWYoZS5sZW5ndGg9PT0xKXtsZXQgdD1lLnRvVXBwZXJDYXNlKCk7aWYodD49IkEiJiZ0PD0iWiIpcmV0dXJuIFplW3RdPz9udWxsO3N3aXRjaChlKXtjYXNlIjAiOnJldHVybiBaZS5aZXJvO2Nhc2UiMSI6cmV0dXJuIFplLk9uZTtjYXNlIjIiOnJldHVybiBaZS5Ud287Y2FzZSIzIjpyZXR1cm4gWmUuVGhyZWU7Y2FzZSI0IjpyZXR1cm4gWmUuRm91cjtjYXNlIjUiOnJldHVybiBaZS5GaXZlO2Nhc2UiNiI6cmV0dXJuIFplLlNpeDtjYXNlIjciOnJldHVybiBaZS5TZXZlbjtjYXNlIjgiOnJldHVybiBaZS5FaWdodDtjYXNlIjkiOnJldHVybiBaZS5OaW5lO2Nhc2UiICI6cmV0dXJuIFplLlNwYWNlO2Nhc2UiOyI6cmV0dXJuIFplLlNlbWlDb2xvbjtjYXNlIj0iOnJldHVybiBaZS5FcXVhbHM7Y2FzZSIsIjpyZXR1cm4gWmUuQ29tbWE7Y2FzZSItIjpyZXR1cm4gWmUuRGFzaDtjYXNlIi4iOnJldHVybiBaZS5QZXJpb2Q7Y2FzZSIvIjpyZXR1cm4gWmUuRm9yd2FyZFNsYXNoO2Nhc2UiYCI6cmV0dXJuIFplLlRpbGRlO2Nhc2UiWyI6cmV0dXJuIFplLk9wZW5CcmFja2V0O2Nhc2UiXSI6cmV0dXJuIFplLkNsb3NlZEJyYWNrZXQ7Y2FzZSInIjpyZXR1cm4gWmUuUXVvdGU7ZGVmYXVsdDpyZXR1cm4gbnVsbH19c3dpdGNoKGUpe2Nhc2UiQmFja3NwYWNlIjpyZXR1cm4gWmUuQmFja3NwYWNlO2Nhc2UiVGFiIjpyZXR1cm4gWmUuVGFiO2Nhc2UiRW50ZXIiOnJldHVybiBaZS5FbnRlcjtjYXNlIlNoaWZ0IjpyZXR1cm4gWmUuU2hpZnQ7Y2FzZSJDb250cm9sIjpyZXR1cm4gWmUuQ3RybDtjYXNlIkFsdCI6cmV0dXJuIFplLkFsdDtjYXNlIlBhdXNlIjpyZXR1cm4gWmUuUGF1c2VCcmVhaztjYXNlIkNhcHNMb2NrIjpyZXR1cm4gWmUuQ2Fwc0xvY2s7Y2FzZSJFc2NhcGUiOnJldHVybiBaZS5Fc2NhcGU7Y2FzZSJQYWdlVXAiOnJldHVybiBaZS5QYWdlVXA7Y2FzZSJQYWdlRG93biI6cmV0dXJuIFplLlBhZ2VEb3duO2Nhc2UiRW5kIjpyZXR1cm4gWmUuRW5kO2Nhc2UiSG9tZSI6cmV0dXJuIFplLkhvbWU7Y2FzZSJBcnJvd0xlZnQiOnJldHVybiBaZS5MZWZ0QXJyb3c7Y2FzZSJBcnJvd1VwIjpyZXR1cm4gWmUuVXBBcnJvdztjYXNlIkFycm93UmlnaHQiOnJldHVybiBaZS5SaWdodEFycm93O2Nhc2UiQXJyb3dEb3duIjpyZXR1cm4gWmUuRG93bkFycm93O2Nhc2UiSW5zZXJ0IjpyZXR1cm4gWmUuSW5zZXJ0O2Nhc2UiRGVsZXRlIjpyZXR1cm4gWmUuRGVsZXRlO2Nhc2UiTWV0YSI6cmV0dXJuIFplLkxlZnRXaW5kb3dLZXk7Y2FzZSJDb250ZXh0TWVudSI6cmV0dXJuIFplLlNlbGVjdEtleTtjYXNlIk51bUxvY2siOnJldHVybiBaZS5OdW1Mb2NrO2Nhc2UiU2Nyb2xsTG9jayI6cmV0dXJuIFplLlNjcm9sbExvY2s7ZGVmYXVsdDpyZXR1cm4gbnVsbH19cmVzb2x2ZUtleUZyb21LZXlDb2RlKGUpe3JldHVybiB0eXBlb2YgZSE9Im51bWJlciI/bnVsbDp0eXBlb2YgWmVbZV08InUiP2U6bnVsbH1jcmVhdGVLZXlib2FyZEV2ZW50KGUpe2xldCB0PWVbZS5sZW5ndGgtMV0/P1plLkVudGVyLGE9dGhpcy5nZXRLZXlEZXNjcmlwdG9yKHQpO3JldHVybiBuZXcgS2V5Ym9hcmRFdmVudCgia2V5ZG93biIse2tleTphLmtleSxjb2RlOmEuY29kZSxjdHJsS2V5OmUuaW5jbHVkZXMoWmUuQ3RybCksc2hpZnRLZXk6ZS5pbmNsdWRlcyhaZS5TaGlmdCksYWx0S2V5OmUuaW5jbHVkZXMoWmUuQWx0KSxtZXRhS2V5OmUuaW5jbHVkZXMoWmUuTGVmdFdpbmRvd0tleSl8fGUuaW5jbHVkZXMoWmUuUmlnaHRXaW5kb3dLZXkpfSl9Z2V0S2V5RGVzY3JpcHRvcihlKXtzd2l0Y2goZSl7Y2FzZSBaZS5DdHJsOnJldHVybntrZXk6IkNvbnRyb2wiLGNvZGU6IkNvbnRyb2xMZWZ0In07Y2FzZSBaZS5TaGlmdDpyZXR1cm57a2V5OiJTaGlmdCIsY29kZToiU2hpZnRMZWZ0In07Y2FzZSBaZS5BbHQ6cmV0dXJue2tleToiQWx0Iixjb2RlOiJBbHRMZWZ0In07Y2FzZSBaZS5FbnRlcjpyZXR1cm57a2V5OiJFbnRlciIsY29kZToiRW50ZXIifTtjYXNlIFplLlNwYWNlOnJldHVybntrZXk6IiAiLGNvZGU6IlNwYWNlIn07ZGVmYXVsdDp7bGV0IHQ9WmVbZV07aWYodCYmdC5sZW5ndGg9PT0xJiZ0Pj0iQSImJnQ8PSJaIilyZXR1cm57a2V5OnQudG9Mb3dlckNhc2UoKSxjb2RlOmBLZXkke3R9YH07aWYoZT49WmUuWmVybyYmZTw9WmUuTmluZSl7bGV0IGE9U3RyaW5nKGUtWmUuWmVybyk7cmV0dXJue2tleTphLGNvZGU6YERpZ2l0JHthfWB9fXJldHVybntrZXk6dD8/IlVuaWRlbnRpZmllZCIsY29kZToiVW5pZGVudGlmaWVkIn19fX19fSk7dmFyIGppLG1iPWcoKCk9PntmYigpO3Y1ZSgpO1F3dCgpO3lyZSgpO0p3dCgpO2VrdCgpO2ppPWNsYXNzIHN7c3RhdGlje2kodGhpcywiRG9tVG9vbHMiKX1zdGF0aWMgaW5pdGlhbGl6YXRpb25Qcm9taXNlPW51bGw7c3RhdGljIGFzeW5jIHNldHVwRG9tVG9vbHMoZT17fSl7aWYoZS5pZ25vcmVHbG9iYWwpe2xldCB0PW5ldyBzKGUpO3JldHVybiBhd2FpdCB0LmluaXRpYWxpemF0aW9uUHJvbWlzZSx0fWlmKGdsb2JhbFRoaXMuZGVlc0RvbVRvb2xzJiYhZ2xvYmFsVGhpcy5kZWVzRG9tVG9vbHMuZGlzcG9zZWQpcmV0dXJuIGF3YWl0IGdsb2JhbFRoaXMuZGVlc0RvbVRvb2xzLmluaXRpYWxpemF0aW9uUHJvbWlzZSxnbG9iYWxUaGlzLmRlZXNEb21Ub29scztpZighcy5pbml0aWFsaXphdGlvblByb21pc2Upe2xldCB0PW5ldyBzKGUpO2dsb2JhbFRoaXMuZGVlc0RvbVRvb2xzPXQscy5pbml0aWFsaXphdGlvblByb21pc2U9dC5pbml0aWFsaXphdGlvblByb21pc2UudGhlbigoKT0+dCkuY2F0Y2goYT0+e3Rocm93IGdsb2JhbFRoaXMuZGVlc0RvbVRvb2xzPT09dCYmKGdsb2JhbFRoaXMuZGVlc0RvbVRvb2xzPXZvaWQgMCkscy5pbml0aWFsaXphdGlvblByb21pc2U9bnVsbCxhfSl9cmV0dXJuIGF3YWl0IHMuaW5pdGlhbGl6YXRpb25Qcm9taXNlfXN0YXRpYyBnZXRHbG9iYWxEb21Ub29sc1N5bmMoKXtsZXQgZT1nbG9iYWxUaGlzLmRlZXNEb21Ub29scztpZighZXx8ZS5kaXNwb3NlZCl0aHJvdyBuZXcgRXJyb3IoIllvdSB0cmllZCB0byBhY2Nlc3MgZG9tdG9vbHMgc3luY2hyb25vdXNseSB0b28gZWFybHkiKTtyZXR1cm4gZX1lbGVtZW50cz17aGVhZEVsZW1lbnQ6bnVsbCxib2R5RWxlbWVudDpudWxsfTt3ZWJzZXR1cD1uZXcgSWsoe21ldGFPYmplY3Q6e3RpdGxlOiIifX0pO3NtYXJ0c3RhdGU9bmV3IEIzLlNtYXJ0c3RhdGU7ZG9tVG9vbHNTdGF0ZVBhcnQ9dGhpcy5zbWFydHN0YXRlLmdldFN0YXRlUGFydCgiZG9tdG9vbHMiLHt2aXJ0dWFsVmlld3BvcnQ6Im5hdGl2ZSIsand0OiIifSk7cm91dGVyPW5ldyBGMy5TbWFydFJvdXRlcih7ZGVidWc6ITF9KTtjb252ZW5pZW5jZT17dHlwZWRyZXF1ZXN0OmdsLHNtYXJ0ZGVsYXk6WHQsc21hcnRqc29uOmpyLHNtYXJ0dXJsOlIxfTtkZWVzQ29tbXM9bmV3IGZ3LkRlZXNDb21tcztzY3JvbGxlcj1uZXcga3JlKHRoaXMpO3RoZW1lTWFuYWdlcj1uZXcgU3JlKHRoaXMpO2tleWJvYXJkPW51bGw7ZGlzcG9zZWQ9ITE7ZG9tVG9vbHNSZWFkeT1tdC5kZWZlcigpO2RvbVJlYWR5PW10LmRlZmVyKCk7Z2xvYmFsU3R5bGVzUmVhZHk9bXQuZGVmZXIoKTtpbml0aWFsaXphdGlvblByb21pc2U7bWFuYWdlZERvbU5vZGVzPVtdO3JlYWR5U3RhdGVDaGFuZ2VkRnVuYz1pKCgpPT57dGhpcy50cnlNYXJrRG9tUmVhZHkoKX0sInJlYWR5U3RhdGVDaGFuZ2VkRnVuYyIpO2NvbnN0cnVjdG9yKGUpe3RoaXMuaW5pdGlhbGl6YXRpb25Qcm9taXNlPXRoaXMuaW5pdGlhbGl6ZSgpfXJ1bk9uY2VQcm9taXNlTWFwPW5ldyBNYXA7YXN5bmMgaW5pdGlhbGl6ZSgpe3RoaXMudHJ5TWFya0RvbVJlYWR5KCksdGhpcy5kb21SZWFkeS5zdGF0dXM9PT0icGVuZGluZyImJmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInJlYWR5c3RhdGVjaGFuZ2UiLHRoaXMucmVhZHlTdGF0ZUNoYW5nZWRGdW5jKSx0aGlzLmRvbVRvb2xzUmVhZHkuc3RhdHVzPT09InBlbmRpbmciJiZ0aGlzLmRvbVRvb2xzUmVhZHkucmVzb2x2ZSgpfXRyeU1hcmtEb21SZWFkeSgpe3RoaXMuZGlzcG9zZWR8fHRoaXMuZG9tUmVhZHkuc3RhdHVzIT09InBlbmRpbmcifHxkb2N1bWVudC5yZWFkeVN0YXRlIT09ImludGVyYWN0aXZlIiYmZG9jdW1lbnQucmVhZHlTdGF0ZSE9PSJjb21wbGV0ZSJ8fCFkb2N1bWVudC5oZWFkfHwhZG9jdW1lbnQuYm9keXx8KHRoaXMuZWxlbWVudHMuaGVhZEVsZW1lbnQ9ZG9jdW1lbnQuaGVhZCx0aGlzLmVsZW1lbnRzLmJvZHlFbGVtZW50PWRvY3VtZW50LmJvZHksdGhpcy5rZXlib2FyZHx8KHRoaXMua2V5Ym9hcmQ9bmV3IF9yZShkb2N1bWVudC5ib2R5KSksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVhZHlzdGF0ZWNoYW5nZSIsdGhpcy5yZWFkeVN0YXRlQ2hhbmdlZEZ1bmMpLHRoaXMuZG9tUmVhZHkucmVzb2x2ZSgpKX10cmFja01hbmFnZWREb21Ob2RlKGUpe3JldHVybiB0aGlzLm1hbmFnZWREb21Ob2Rlcy5wdXNoKGUpLGV9Z2V0SGVhZE9yQm9keUVsZW1lbnQoKXtsZXQgZT10aGlzLmVsZW1lbnRzLmhlYWRFbGVtZW50fHxkb2N1bWVudC5oZWFkfHx0aGlzLmVsZW1lbnRzLmJvZHlFbGVtZW50fHxkb2N1bWVudC5ib2R5O2lmKCFlKXRocm93IG5ldyBFcnJvcigiRG9tVG9vbHMgY291bGQgbm90IGZpbmQgYSBET00gdGFyZ2V0IGVsZW1lbnQgdG8gYXR0YWNoIHJlc291cmNlcyB0byIpO3JldHVybiBlfWFzeW5jIHJ1bk9uY2UoZSx0KXtsZXQgYT10aGlzLnJ1bk9uY2VQcm9taXNlTWFwLmdldChlKTtyZXR1cm4gYXx8KGE9UHJvbWlzZS5yZXNvbHZlKCkudGhlbihhc3luYygpPT5hd2FpdCB0KCkpLHRoaXMucnVuT25jZVByb21pc2VNYXAuc2V0KGUsYSkpLGF3YWl0IGF9YXN5bmMgc2V0R2xvYmFsU3R5bGVzKGUpe2F3YWl0IHRoaXMuZG9tUmVhZHkucHJvbWlzZTtsZXQgdD10aGlzLnRyYWNrTWFuYWdlZERvbU5vZGUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKSk7dC50eXBlPSJ0ZXh0L2NzcyIsdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlKSksdGhpcy5nZXRIZWFkT3JCb2R5RWxlbWVudCgpLmFwcGVuZENoaWxkKHQpfWFzeW5jIHNldEV4dGVybmFsU2NyaXB0KGUpe2F3YWl0IHRoaXMuZG9tUmVhZHkucHJvbWlzZTtsZXQgdD1tdC5kZWZlcigpLGE9dGhpcy50cmFja01hbmFnZWREb21Ob2RlKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpKTthLnNyYz1lLGEuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsKCk9Pnt0LnJlc29sdmUoKX0pLGEuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCgpPT57dC5yZWplY3QobmV3IEVycm9yKGBGYWlsZWQgdG8gbG9hZCBleHRlcm5hbCBzY3JpcHQ6ICR7ZX1gKSl9KSx0aGlzLmdldEhlYWRPckJvZHlFbGVtZW50KCkuYXBwZW5kKGEpLGF3YWl0IHQucHJvbWlzZX1hc3luYyBzZXRFeHRlcm5hbENzcyhlKXthd2FpdCB0aGlzLmRvbVJlYWR5LnByb21pc2U7bGV0IHQ9bXQuZGVmZXIoKSxhPXRoaXMudHJhY2tNYW5hZ2VkRG9tTm9kZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIikpO2EucmVsPSJzdHlsZXNoZWV0IixhLmNyb3NzT3JpZ2luPSJhbm9ueW1vdXMiLGEuaHJlZj1lLGEuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsKCk9Pnt0LnJlc29sdmUoKX0pLGEuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCgpPT57dC5yZWplY3QobmV3IEVycm9yKGBGYWlsZWQgdG8gbG9hZCBleHRlcm5hbCBzdHlsZXNoZWV0OiAke2V9YCkpfSksdGhpcy5nZXRIZWFkT3JCb2R5RWxlbWVudCgpLmFwcGVuZChhKSxhd2FpdCB0LnByb21pc2V9YXN5bmMgc2V0V2Vic2l0ZUluZm8oZSl7YXdhaXQgdGhpcy53ZWJzZXR1cC5zZXR1cChlKSxhd2FpdCB0aGlzLndlYnNldHVwLnJlYWR5UHJvbWlzZX1kaXNwb3NlKCl7aWYoIXRoaXMuZGlzcG9zZWQpe3RoaXMuZGlzcG9zZWQ9ITAsZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVhZHlzdGF0ZWNoYW5nZSIsdGhpcy5yZWFkeVN0YXRlQ2hhbmdlZEZ1bmMpLHRoaXMua2V5Ym9hcmQ/LmRpc3Bvc2UoKSx0aGlzLmtleWJvYXJkPW51bGwsdGhpcy5zY3JvbGxlci5kaXNwb3NlKCksdGhpcy50aGVtZU1hbmFnZXIuZGlzcG9zZSgpO2ZvcihsZXQgZSBvZiB0aGlzLm1hbmFnZWREb21Ob2RlcyllLnJlbW92ZSgpO3RoaXMubWFuYWdlZERvbU5vZGVzLmxlbmd0aD0wLGdsb2JhbFRoaXMuZGVlc0RvbVRvb2xzPT09dGhpcyYmKGdsb2JhbFRoaXMuZGVlc0RvbVRvb2xzPXZvaWQgMCxzLmluaXRpYWxpemF0aW9uUHJvbWlzZT1udWxsKX19fX0pO3ZhciBNcmUsdGt0LGFrdD1nKCgpPT57bWIoKTt2YygpO01yZT0oKCk9PntsZXQgcz1uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIk1hYyBPUyBYIik9PT0tMT9KYGAuY3NzVGV4dDoiIjtyZXR1cm4gSmAKICAgIC8qIHdpZHRoICovCiAgICA6Oi13ZWJraXQtc2Nyb2xsYmFyIHsKICAgICAgd2lkdGg6IDBweDsKICAgIH0KICAgIGJvZHkgewogICAgICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7CiAgICB9CiAgYC5jc3NUZXh0fSkoKSx0a3Q9SmAKICAvKgogIEBmb250LWZhY2UgewogICAgZm9udC1mYW1pbHk6ICdNYXRlcmlhbCBJY29ucyc7CiAgICBmb250LXN0eWxlOiBub3JtYWw7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21hdGVyaWFsaWNvbnMvdjQyL2ZsVWhScTZ0elpjbFFFSi1WZGctSXVpYURzTmNJaFE4dFEud29mZjIpCiAgICAgIGZvcm1hdCgnd29mZjInKTsKICB9ICovCgogIC8qIGdsb2JhbCBib2R5IHN0eWxlcyAqLwogIGJvZHkgewogICAgbWFyZ2luOiAwcHg7CiAgICBmb250LWZhbWlseTogJ0dlaXN0IFNhbnMnLCAnSW50ZXInLCBzYW5zLXNlcmlmOwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICB9CgogIC8qIHNjcm9sbCBiYXIgc3R5bGVzICovCiAgJHthYShNcmUpfQpgLmNzc1RleHR9KTt2YXIgdGE9e307eXQodGEse3NldHVwOigpPT5kcWEsc3RhdGljU3R5bGVzOigpPT5scWEsc3R5bGVzOigpPT5jcWF9KTt2YXIgbHFhLGNxYSxkcWEsc2t0PWcoKCk9PnttYigpO2FrdCgpO3ZjKCk7bHFhPUpgCiAgKiB7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMXMsIGNvbG9yIDAuMXM7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIH0KCiAgOmhvc3QgewogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGZvbnQtZmFtaWx5OiAnR2Vpc3QgU2FucycsICdJbnRlcicsIHNhbnMtc2VyaWY7CiAgfQoKICAke2FhKE1yZSl9CmAsY3FhPXdgCiAgPHN0eWxlPgogICAgKiB7CiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xcywgY29sb3IgMC4xczsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIH0KCiAgICA6aG9zdCB7CiAgICAgIGZvbnQtZmFtaWx5OiAnR2Vpc3QgU2FucycsICdJbnRlcicsIHNhbnMtc2VyaWY7CiAgICB9CgogICAgJHtNcmV9CiAgPC9zdHlsZT4KYCxkcWE9aShhc3luYyhzLGU9e30pPT57bGV0IHQ9YXdhaXQgamkuc2V0dXBEb21Ub29scyhlKTtyZXR1cm4gYXdhaXQgdC5ydW5PbmNlKCJlbGVtZW50QmFzaWNTZXR1cCIsYXN5bmMoKT0+e2F3YWl0IHQuc2V0R2xvYmFsU3R5bGVzKHRrdCl9KSx0Lmdsb2JhbFN0eWxlc1JlYWR5LnN0YXR1cz09PSJwZW5kaW5nIiYmdC5nbG9iYWxTdHlsZXNSZWFkeS5yZXNvbHZlKCksYXdhaXQgdC5nbG9iYWxTdHlsZXNSZWFkeS5wcm9taXNlLHR9LCJzZXR1cCIpfSk7dmFyIHpyZT17fTt5dCh6cmUse2Nzc0dyaWRDb2x1bW5zOigpPT51cWF9KTt2YXIgdXFhLGlrdD1nKCgpPT57dXFhPWkoKHMsZSk9PntsZXQgdD0iIjtmb3IobGV0IGE9MDthPHM7YSsrKXQrPWAgY2FsYygoMTAwJS8ke3N9KSAtICgke2UqKHMtMSl9cHgvJHtzfSkpYDtyZXR1cm4gdH0sImNzc0dyaWRDb2x1bW5zIil9KTt2YXIgdXQ9e307eXQodXQse1N3ZWV0U2Nyb2xsOigpPT5oYi5kZWZhdWx0LHNtYXJ0ZGVsYXk6KCk9Plh0LHNtYXJ0bWFya2Rvd246KCk9PiRrLHNtYXJ0cHJvbWlzZTooKT0+bXQsc21hcnRyb3V0ZXI6KCk9PkYzLHNtYXJ0cng6KCk9PmxzLHNtYXJ0c3RhdGU6KCk9PkIzLHNtYXJ0c3RyaW5nOigpPT5hcixzbWFydHVybDooKT0+UjEsdHlwZWRyZXF1ZXN0OigpPT5nbH0pO3ZhciBya3Q9ZygoKT0+e2ZiKCl9KTt2YXIgbHQ9e307eXQobHQse0RvbVRvb2xzOigpPT5qaSxUeXBlZFJlcXVlc3Q6KCk9Pmd3LGJyZWFrcG9pbnRzOigpPT5NaSxjc3M6KCk9PnpyZSxlbGVtZW50QmFzaWM6KCk9PnRhLHBsdWdpbnM6KCk9PnV0fSk7dmFyIGt0PWcoKCk9PntxZHQoKTtza3QoKTt2NWUoKTtpa3QoKTttYigpO3BzZSgpO3lyZSgpO3JrdCgpfSk7dmFyIHg1ZSxvaCx5NWU9ZygoKT0+e3g1ZT14bihpeSgpLDEpO1oyKCk7dmMoKTtIZHQoKTtrdCgpO29oPXtjc3M6Six1bnNhZmVDU1M6YWEsTGl0RWxlbWVudDpvMCxwcm9wZXJ0eTpMfX0pO3ZhciBDcmUsbmt0PWcoKCk9Pnt2YygpO3k1ZSgpO2t0KCk7Q3JlPWNsYXNzIHN7c3RhdGlje2kodGhpcywiQ3NzTWFuYWdlciIpfXN0YXRpYyBpbnN0YW5jZT1udWxsO3N0YXRpYyBnZXRTaW5nbGV0b24oKXtyZXR1cm4gcy5pbnN0YW5jZXx8KHMuaW5zdGFuY2U9bmV3IHMpLHMuaW5zdGFuY2V9ZG9tdG9vbHNQcm9taXNlPWppLnNldHVwRG9tVG9vbHMoKTtnb0JyaWdodD0hMTtiZFZhclRyaXBsZXRTdG9yZT1bXTtjb25zdHJ1Y3Rvcigpe3RoaXMuZG9tdG9vbHNQcm9taXNlLnRoZW4oYXN5bmMgZT0+e2UudGhlbWVNYW5hZ2VyLnRoZW1lT2JzZXJ2YWJsZS5zdWJzY3JpYmUoYXN5bmMgdD0+e3RoaXMuZ29CcmlnaHQ9dCxhd2FpdCBlLmRvbVJlYWR5LnByb21pc2U7Zm9yKGxldCBhIG9mIHRoaXMuYmRWYXJUcmlwbGV0U3RvcmUpZG9jdW1lbnQuYm9keS5zdHlsZS5zZXRQcm9wZXJ0eShhLmNzc1Zhck5hbWUsdGhpcy5nb0JyaWdodD9hLmJyaWdodFZhbHVlOmEuZGFya1ZhbHVlKX0pfSl9Z2V0IGRlZmF1bHRTdHlsZXMoKXtyZXR1cm4gdGEuc3RhdGljU3R5bGVzfWdldENvbnRhaW5lck5hbWVGcm9tQ2xhc3MoZSl7cmV0dXJuIGUuaXN8fGUubmFtZS5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCIkMS0kMiIpLnRvTG93ZXJDYXNlKCl9Y3NzRm9yRGVza3RvcChlLHQpe3JldHVybiB0P2FhKE1pLmNzc0ZvckNvbnRhaW5lcihlLGAobWluLXdpZHRoOiAke01pLmRlc2t0b3B9cHgpYCx0aGlzLmdldENvbnRhaW5lck5hbWVGcm9tQ2xhc3ModCkpKTphYShNaS5jc3NGb3JEZXNrdG9wKGUpKX1jc3NGb3JOb3RlYm9vayhlLHQpe3JldHVybiB0P2FhKE1pLmNzc0ZvckNvbnRhaW5lcihlLGAobWF4LXdpZHRoOiAke01pLm5vdGVib29rfXB4KWAsdGhpcy5nZXRDb250YWluZXJOYW1lRnJvbUNsYXNzKHQpKSk6YWEoTWkuY3NzRm9yTm90ZWJvb2soZSkpfWNzc0ZvclRhYmxldChlLHQpe3JldHVybiB0P2FhKE1pLmNzc0ZvckNvbnRhaW5lcihlLGAobWF4LXdpZHRoOiAke01pLnRhYmxldH1weClgLHRoaXMuZ2V0Q29udGFpbmVyTmFtZUZyb21DbGFzcyh0KSkpOmFhKE1pLmNzc0ZvclRhYmxldChlKSl9Y3NzRm9yUGhhYmxldChlLHQpe3JldHVybiB0P2FhKE1pLmNzc0ZvckNvbnRhaW5lcihlLGAobWF4LXdpZHRoOiAke01pLnBoYWJsZXR9cHgpYCx0aGlzLmdldENvbnRhaW5lck5hbWVGcm9tQ2xhc3ModCkpKTphYShNaS5jc3NGb3JQaGFibGV0KGUpKX1jc3NGb3JQaG9uZShlLHQpe3JldHVybiB0P2FhKE1pLmNzc0ZvckNvbnRhaW5lcihlLGAobWF4LXdpZHRoOiAke01pLnBob25lfXB4KWAsdGhpcy5nZXRDb250YWluZXJOYW1lRnJvbUNsYXNzKHQpKSk6YWEoTWkuY3NzRm9yUGhvbmUoZSkpfWNzc0ZvckNvbnN0cmFpbnQoZSl7cmV0dXJuIHQ9PmFhKE1pLmNzc0ZvckNvbnN0cmFpbnQoZSkodCkpfWJkVGhlbWUoZSx0KXtsZXQgYSxyO2ppLmdldEdsb2JhbERvbVRvb2xzU3luYygpP3I9amkuZ2V0R2xvYmFsRG9tVG9vbHNTeW5jKCkudGhlbWVNYW5hZ2VyLmdvQnJpZ2h0Qm9vbGVhbj9lOnQ6cj10O2xldCBuPXRoaXMuYmRWYXJUcmlwbGV0U3RvcmUuZmluZChvPT5vLmRhcmtWYWx1ZT09PXQmJm8uYnJpZ2h0VmFsdWU9PT1lKTtpZihuKWE9bi5jc3NWYXJOYW1lO2Vsc2V7bGV0IG89e2Nzc1Zhck5hbWU6YC0tJHt4NWUudW5pKCl9YCxicmlnaHRWYWx1ZTplLGRhcmtWYWx1ZTp0fTt0aGlzLmJkVmFyVHJpcGxldFN0b3JlLnB1c2gobyksdGhpcy5kb210b29sc1Byb21pc2UudGhlbihhc3luYyBsPT57YXdhaXQgbC5kb21SZWFkeS5wcm9taXNlLGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoby5jc3NWYXJOYW1lLHIpfSksYT1vLmNzc1Zhck5hbWV9cmV0dXJuIG9oLnVuc2FmZUNTUyhgdmFyKCR7YX0sICR7cn0pYCl9Y3NzR3JpZENvbHVtbnM9aSgoZSx0KT0+e2xldCBhPSIiO2ZvcihsZXQgcj0wO3I8ZTtyKyspYSs9YCBjYWxjKCgxMDAlLyR7ZX0pIC0gKCR7dCooZS0xKX1weC8ke2V9KSlgO3JldHVybiBvaC51bnNhZmVDU1MoYSl9LCJjc3NHcmlkQ29sdW1ucyIpfX0pO3ZhciB3NWUscHFhLGs1ZSxocWEsbGt0LFRyZSxNbixmcWEsbXFhLGNrdD1nKCgpPT57ZjEoKTt3NWU9U3ltYm9sLmZvcigiIikscHFhPWkocz0+e2lmKHM/LnI9PT13NWUpcmV0dXJuIHM/Ll8kbGl0U3RhdGljJH0sIm8iKSxrNWU9aShzPT4oe18kbGl0U3RhdGljJDpzLHI6dzVlfSksInMiKSxocWE9aSgocywuLi5lKT0+KHtfJGxpdFN0YXRpYyQ6ZS5yZWR1Y2UoKHQsYSxyKT0+dCsobj0+e2lmKG4uXyRsaXRTdGF0aWMkIT09dm9pZCAwKXJldHVybiBuLl8kbGl0U3RhdGljJDt0aHJvdyBFcnJvcihgVmFsdWUgcGFzc2VkIHRvICdsaXRlcmFsJyBmdW5jdGlvbiBtdXN0IGJlIGEgJ2xpdGVyYWwnIHJlc3VsdDogJHtufS4gVXNlICd1bnNhZmVTdGF0aWMnIHRvIHBhc3Mgbm9uLWxpdGVyYWwgdmFsdWVzLCBidXQKICAgICAgICAgICAgdGFrZSBjYXJlIHRvIGVuc3VyZSBwYWdlIHNlY3VyaXR5LmApfSkoYSkrc1tyKzFdLHNbMF0pLHI6dzVlfSksImkiKSxsa3Q9bmV3IE1hcCxUcmU9aShzPT4oZSwuLi50KT0+e2xldCBhPXQubGVuZ3RoLHIsbixvPVtdLGw9W10scCxkPTAsdT0hMTtmb3IoO2Q8YTspe2ZvcihwPWVbZF07ZDxhJiYobj10W2RdLChyPXBxYShuKSkhPT12b2lkIDApOylwKz1yK2VbKytkXSx1PSEwO2QhPT1hJiZsLnB1c2gobiksby5wdXNoKHApLGQrK31pZihkPT09YSYmby5wdXNoKGVbYV0pLHUpe2xldCBjPW8uam9pbigiJCRsaXQkJCIpOyhlPWxrdC5nZXQoYykpPT09dm9pZCAwJiYoby5yYXc9byxsa3Quc2V0KGMsZT1vKSksdD1sfXJldHVybiBzKGUsLi4udCl9LCJuIiksTW49VHJlKHcpLGZxYT1UcmUoSzJlKSxtcWE9VHJlKFkyZSl9KTt2YXIgZGt0PWcoKCk9Pntja3QoKX0pO3ZhciBfZCx6cixJYyxSMD1nKCgpPT57X2Q9e0FUVFJJQlVURToxLENISUxEOjIsUFJPUEVSVFk6MyxCT09MRUFOX0FUVFJJQlVURTo0LEVWRU5UOjUsRUxFTUVOVDo2fSx6cj1pKHM9PiguLi5lKT0+KHtfJGxpdERpcmVjdGl2ZSQ6cyx2YWx1ZXM6ZX0pLCJlIiksSWM9Y2xhc3N7c3RhdGlje2kodGhpcywiaSIpfWNvbnN0cnVjdG9yKGUpe31nZXQgXyRBVSgpe3JldHVybiB0aGlzLl8kQU0uXyRBVX1fJEFUKGUsdCxhKXt0aGlzLl8kQ3Q9ZSx0aGlzLl8kQU09dCx0aGlzLl8kQ2k9YX1fJEFTKGUsdCl7cmV0dXJuIHRoaXMudXBkYXRlKGUsdCl9dXBkYXRlKGUsdCl7cmV0dXJuIHRoaXMucmVuZGVyKC4uLnQpfX19KTt2YXIgZ2IsVjMsdWt0PWcoKCk9PntmMSgpO1IwKCk7Z2I9Y2xhc3MgZXh0ZW5kcyBJY3tzdGF0aWN7aSh0aGlzLCJlIil9Y29uc3RydWN0b3IoZSl7aWYoc3VwZXIoZSksdGhpcy5pdD14aSxlLnR5cGUhPT1fZC5DSElMRCl0aHJvdyBFcnJvcih0aGlzLmNvbnN0cnVjdG9yLmRpcmVjdGl2ZU5hbWUrIigpIGNhbiBvbmx5IGJlIHVzZWQgaW4gY2hpbGQgYmluZGluZ3MiKX1yZW5kZXIoZSl7aWYoZT09PXhpfHxlPT1udWxsKXJldHVybiB0aGlzLl90PXZvaWQgMCx0aGlzLml0PWU7aWYoZT09PW9pKXJldHVybiBlO2lmKHR5cGVvZiBlIT0ic3RyaW5nIil0aHJvdyBFcnJvcih0aGlzLmNvbnN0cnVjdG9yLmRpcmVjdGl2ZU5hbWUrIigpIGNhbGxlZCB3aXRoIGEgbm9uLXN0cmluZyB2YWx1ZSIpO2lmKGU9PT10aGlzLml0KXJldHVybiB0aGlzLl90O3RoaXMuaXQ9ZTtsZXQgdD1bZV07cmV0dXJuIHQucmF3PXQsdGhpcy5fdD17XyRsaXRUeXBlJDp0aGlzLmNvbnN0cnVjdG9yLnJlc3VsdFR5cGUsc3RyaW5nczp0LHZhbHVlczpbXX19fTtnYi5kaXJlY3RpdmVOYW1lPSJ1bnNhZmVIVE1MIixnYi5yZXN1bHRUeXBlPTE7VjM9enIoZ2IpfSk7dmFyIHBrdD1nKCgpPT57dWt0KCl9KTt2YXIgUzVlLF81ZT1nKCgpPT57UzVlPWkocz0+KGUsdCk9Pnt0IT09dm9pZCAwP3QuYWRkSW5pdGlhbGl6ZXIoKCk9PntjdXN0b21FbGVtZW50cy5kZWZpbmUocyxlKX0pOmN1c3RvbUVsZW1lbnRzLmRlZmluZShzLGUpfSwidCIpfSk7dmFyIGhrdD1nKCgpPT57XzVlKCl9KTtmdW5jdGlvbiBuZShzKXtyZXR1cm4oZSx0KT0+e2lmKGUuaXM9cyxlLm5hbWUpe2xldCBhPWdxYShlLm5hbWUpO2EhPT1zJiZjb25zb2xlLndhcm4oYFtkZWVzLWVsZW1lbnRdIENsYXNzICIke2UubmFtZX0iIGtlYmFiLWNhc2VzIHRvICIke2F9IiBidXQgdGFnIGlzICIke3N9Ii4gQ29udGFpbmVyIHF1ZXJpZXMgdXNlIC5pcyAoIiR7c30iKS5gKX1yZXR1cm4gUzVlKHMpKGUsdCl9fXZhciBncWEsZmt0PWcoKCk9Pntoa3QoKTtncWE9aShzPT5zLnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2csIiQxLSQyIikudG9Mb3dlckNhc2UoKSwiY2FtZWxUb0tlYmFiIik7aShuZSwiY3VzdG9tRWxlbWVudCIpfSk7ZnVuY3Rpb24gWShzKXtyZXR1cm4gTCh7Li4ucyxzdGF0ZTohMCxhdHRyaWJ1dGU6ITF9KX12YXIgbWt0PWcoKCk9PntDZWUoKTtpKFksInIiKX0pO2Z1bmN0aW9uIGJxYShzKXtyZXR1cm4oZSx0KT0+e2xldCBhPXR5cGVvZiBlPT0iZnVuY3Rpb24iP2U6ZVt0XTtPYmplY3QuYXNzaWduKGEscyl9fXZhciBna3Q9ZygoKT0+e2koYnFhLCJ0Iil9KTt2YXIgQWMsYmI9ZygoKT0+e0FjPWkoKHMsZSx0KT0+KHQuY29uZmlndXJhYmxlPSEwLHQuZW51bWVyYWJsZT0hMCxSZWZsZWN0LmRlY29yYXRlJiZ0eXBlb2YgZSE9Im9iamVjdCImJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShzLGUsdCksdCksImUiKX0pO2Z1bmN0aW9uIE01ZShzLGUpe3JldHVybih0LGEscik9PntsZXQgbj1pKG89Pm8ucmVuZGVyUm9vdD8ucXVlcnlTZWxlY3RvcihzKT8/bnVsbCwibyIpO2lmKGUpe2xldHtnZXQ6byxzZXQ6bH09dHlwZW9mIGE9PSJvYmplY3QiP3Q6cj8/KCgpPT57bGV0IHA9U3ltYm9sKCk7cmV0dXJue2dldCgpe3JldHVybiB0aGlzW3BdfSxzZXQoZCl7dGhpc1twXT1kfX19KSgpO3JldHVybiBBYyh0LGEse2dldCgpe2xldCBwPW8uY2FsbCh0aGlzKTtyZXR1cm4gcD09PXZvaWQgMCYmKHA9bih0aGlzKSwocCE9PW51bGx8fHRoaXMuaGFzVXBkYXRlZCkmJmwuY2FsbCh0aGlzLHApKSxwfX0pfXJldHVybiBBYyh0LGEse2dldCgpe3JldHVybiBuKHRoaXMpfX0pfX12YXIgYmt0PWcoKCk9PntiYigpO2koTTVlLCJlIil9KTtmdW5jdGlvbiB6NWUocyl7cmV0dXJuKGUsdCk9PkFjKGUsdCx7Z2V0KCl7cmV0dXJuKHRoaXMucmVuZGVyUm9vdD8/KHZxYT8/PWRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSkpLnF1ZXJ5U2VsZWN0b3JBbGwocyl9fSl9dmFyIHZxYSx2a3Q9ZygoKT0+e2JiKCk7aSh6NWUsInIiKX0pO2Z1bmN0aW9uIEM1ZShzKXtyZXR1cm4oZSx0KT0+QWMoZSx0LHthc3luYyBnZXQoKXtyZXR1cm4gYXdhaXQgdGhpcy51cGRhdGVDb21wbGV0ZSx0aGlzLnJlbmRlclJvb3Q/LnF1ZXJ5U2VsZWN0b3Iocyk/P251bGx9fSl9dmFyIHhrdD1nKCgpPT57YmIoKTtpKEM1ZSwiciIpfSk7ZnVuY3Rpb24geHFhKHMpe3JldHVybihlLHQpPT57bGV0e3Nsb3Q6YSxzZWxlY3RvcjpyfT1zPz97fSxuPSJzbG90IisoYT9gW25hbWU9JHthfV1gOiI6bm90KFtuYW1lXSkiKTtyZXR1cm4gQWMoZSx0LHtnZXQoKXtsZXQgbz10aGlzLnJlbmRlclJvb3Q/LnF1ZXJ5U2VsZWN0b3IobiksbD1vPy5hc3NpZ25lZEVsZW1lbnRzKHMpPz9bXTtyZXR1cm4gcj09PXZvaWQgMD9sOmwuZmlsdGVyKHA9PnAubWF0Y2hlcyhyKSl9fSl9fXZhciB5a3Q9ZygoKT0+e2JiKCk7aSh4cWEsIm8iKX0pO2Z1bmN0aW9uIHlxYShzKXtyZXR1cm4oZSx0KT0+e2xldHtzbG90OmF9PXM/P3t9LHI9InNsb3QiKyhhP2BbbmFtZT0ke2F9XWA6Ijpub3QoW25hbWVdKSIpO3JldHVybiBBYyhlLHQse2dldCgpe3JldHVybiB0aGlzLnJlbmRlclJvb3Q/LnF1ZXJ5U2VsZWN0b3Iocik/LmFzc2lnbmVkTm9kZXMocyk/P1tdfX0pfX12YXIgd2t0PWcoKCk9PntiYigpO2koeXFhLCJuIil9KTt2YXIga2t0PWcoKCk9PntfNWUoKTtDZWUoKTtta3QoKTtna3QoKTtia3QoKTt2a3QoKTt4a3QoKTt5a3QoKTt3a3QoKX0pO3ZhciBTa3QsJHJlLHdlLF9rdD1nKCgpPT57eTVlKCk7dmMoKTtTa3Q9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LCRyZT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sd2U9KCgpPT57bGV0IHM9b2guTGl0RWxlbWVudCxlLHQ9W10sYT1bXSxyLG49W10sbz1bXTtyZXR1cm4gY2xhc3MgZXh0ZW5kcyBze3N0YXRpY3tpKHRoaXMsIkRlZXNFbGVtZW50Iil9c3RhdGlje2xldCBwPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHNbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO2U9W29oLnByb3BlcnR5KHt0eXBlOkJvb2xlYW59KV0scj1bb2gucHJvcGVydHkoKV0sU2t0KHRoaXMsbnVsbCxlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZ29CcmlnaHQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZD0+ImdvQnJpZ2h0ImluIGQsImhhcyIpLGdldDppKGQ9PmQuZ29CcmlnaHQsImdldCIpLHNldDppKChkLHUpPT57ZC5nb0JyaWdodD11fSwic2V0Iil9LG1ldGFkYXRhOnB9LHQsYSksU2t0KHRoaXMsbnVsbCxyLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZG9tdG9vbHMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZD0+ImRvbXRvb2xzImluIGQsImhhcyIpLGdldDppKGQ9PmQuZG9tdG9vbHMsImdldCIpLHNldDppKChkLHUpPT57ZC5kb210b29scz11fSwic2V0Iil9LG1ldGFkYXRhOnB9LG4sbykscCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpwfSl9c3RhdGljIGdldENvbnRhaW5lck5hbWUoKXtyZXR1cm4gdGhpcy5pc3x8dGhpcy5uYW1lLnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2csIiQxLSQyIikudG9Mb3dlckNhc2UoKX1zdGF0aWMgY3NzRm9yQ29uc3RyYWludChwKXtyZXR1cm4gZD0+bHQuYnJlYWtwb2ludHMuY3NzRm9yQ29uc3RyYWludENvbnRhaW5lcihwLHRoaXMuZ2V0Q29udGFpbmVyTmFtZSgpKShkKX0jZT0kcmUodGhpcyx0LCExKTtnZXQgZ29CcmlnaHQoKXtyZXR1cm4gdGhpcy4jZX1zZXQgZ29CcmlnaHQocCl7dGhpcy4jZT1wfWRvbXRvb2xzUHJvbWlzZT0kcmUodGhpcyxhKTsjdD0kcmUodGhpcyxuLHZvaWQgMCk7Z2V0IGRvbXRvb2xzKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGRvbXRvb2xzKHApe3RoaXMuI3Q9cH1yeFN1YnNjcmlwdGlvbnM9KCRyZSh0aGlzLG8pLFtdKTt0aGVtZVN1YnNjcmlwdGlvbjtlbGVtZW50RG9tUmVhZHlEZWZlcnJlZD1sdC5wbHVnaW5zLnNtYXJ0cHJvbWlzZS5kZWZlcigpO2VsZW1lbnREb21SZWFkeT10aGlzLmVsZW1lbnREb21SZWFkeURlZmVycmVkLnByb21pc2U7Y29uc3RydWN0b3IocD17fSl7c3VwZXIoKSx0aGlzLmRvbXRvb2xzUHJvbWlzZT1sdC5lbGVtZW50QmFzaWMuc2V0dXAodGhpcyxwKSx0aGlzLmRvbXRvb2xzUHJvbWlzZS50aGVuKGQ9Pnt0aGlzLmRvbXRvb2xzPWR9KX1hc3luYyBjb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7bGV0IHA9YXdhaXQgdGhpcy5kb210b29sc1Byb21pc2U7dGhpcy50aGVtZVN1YnNjcmlwdGlvbj1wLnRoZW1lTWFuYWdlci50aGVtZU9ic2VydmFibGUuc3Vic2NyaWJlKGQ9Pnt0aGlzLmdvQnJpZ2h0PWQsdGhpcy50aGVtZUNoYW5nZWQmJnRoaXMudGhlbWVDaGFuZ2VkKGQpfSksdGhpcy5yeFN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnRoZW1lU3Vic2NyaXB0aW9uKTtmb3IobGV0IGQgb2YgdGhpcy5zdGFydHVwRnVuY3Rpb25zKWF3YWl0IGQoKTt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJkZWVzRWxlbWVudENvbm5lY3RlZCIpKX1maXJzdFVwZGF0ZWQocCl7c3VwZXIuZmlyc3RVcGRhdGVkKHApLHRoaXMuZWxlbWVudERvbVJlYWR5RGVmZXJyZWQucmVzb2x2ZSgpfXN0YXJ0dXBGdW5jdGlvbnM9W107cmVnaXN0ZXJTdGFydHVwRnVuY3Rpb24ocCl7dGhpcy5zdGFydHVwRnVuY3Rpb25zLnB1c2gocCl9Z2FyYmFnZUZ1bmN0aW9ucz1bXTtyZWdpc3RlckdhcmJhZ2VGdW5jdGlvbihwKXt0aGlzLmdhcmJhZ2VGdW5jdGlvbnMucHVzaChwKX1hc3luYyBkaXNjb25uZWN0ZWRDYWxsYmFjaygpe2F3YWl0IHRoaXMuZG9tdG9vbHNQcm9taXNlLHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7Zm9yKGxldCBwIG9mIHRoaXMucnhTdWJzY3JpcHRpb25zKXAudW5zdWJzY3JpYmUoKTtmb3IobGV0IHAgb2YgdGhpcy5nYXJiYWdlRnVuY3Rpb25zKWF3YWl0IHAoKTt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJkZWVzRWxlbWVudERpc2Nvbm5lY3RlZCIpKX19fSkoKX0pO2Z1bmN0aW9uIHZiKCl7cmV0dXJuIGZ1bmN0aW9uKHMpe2xldCBlPXMuaXN8fHMubmFtZS5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCIkMS0kMiIpLnRvTG93ZXJDYXNlKCksdD1zLm5hbWU/d3FhKHMubmFtZSk6bnVsbDtpZih0JiZ0IT09ZSl7bGV0IG49aShsPT5sJiZsLmNzc1RleHQmJmwuY3NzVGV4dC5pbmNsdWRlcyhgQGNvbnRhaW5lciAke3R9YCk/YWEobC5jc3NUZXh0LnJlcGxhY2VBbGwoYEBjb250YWluZXIgJHt0fWAsYEBjb250YWluZXIgJHtlfWApKTpsLCJmaXhTdHlsZSIpLG89cy5zdHlsZXM7QXJyYXkuaXNBcnJheShvKT9zLnN0eWxlcz1vLm1hcChuKTpvJiYocy5zdHlsZXM9bihvKSl9bGV0IGE9TWkuY29udGFpbmVyQ29udGV4dFN0eWxlcyhlKSxyPXMuc3R5bGVzO3JldHVybiBBcnJheS5pc0FycmF5KHIpP3Muc3R5bGVzPVsuLi5yLGFdOnI/cy5zdHlsZXM9W3IsYV06cy5zdHlsZXM9W2FdLHN9fXZhciB3cWEsTWt0PWcoKCk9Pnt2YygpO2t0KCk7d3FhPWkocz0+cy5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCIkMS0kMiIpLnRvTG93ZXJDYXNlKCksImNhbWVsVG9LZWJhYiIpO2kodmIsImNvbnRhaW5lclJlc3BvbnNpdmUiKX0pO3ZhciBrcWEsemt0LFQ1ZSxTcWEsX3FhLE1xYSx6cWEsQ3FhLCQ1ZSxDa3QsTzAsTzEsVHFhLE5rLEQ1ZSxSayxMNWUseGI9ZygoKT0+e2YxKCk7KHtJOmtxYX09WjJlKSx6a3Q9aShzPT5zLCJpIiksVDVlPWkocz0+cz09PW51bGx8fHR5cGVvZiBzIT0ib2JqZWN0IiYmdHlwZW9mIHMhPSJmdW5jdGlvbiIsIm4iKSxTcWE9e0hUTUw6MSxTVkc6MixNQVRITUw6M30sX3FhPWkoKHMsZSk9PmU9PT12b2lkIDA/cz8uXyRsaXRUeXBlJCE9PXZvaWQgMDpzPy5fJGxpdFR5cGUkPT09ZSwibCIpLE1xYT1pKHM9PnM/Ll8kbGl0VHlwZSQ/LmghPW51bGwsImQiKSx6cWE9aShzPT5zPy5fJGxpdERpcmVjdGl2ZSQhPT12b2lkIDAsImMiKSxDcWE9aShzPT5zPy5fJGxpdERpcmVjdGl2ZSQsImYiKSwkNWU9aShzPT5zLnN0cmluZ3M9PT12b2lkIDAsInIiKSxDa3Q9aSgoKT0+ZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgiIiksInMiKSxPMD1pKChzLGUsdCk9PntsZXQgYT1zLl8kQUEucGFyZW50Tm9kZSxyPWU9PT12b2lkIDA/cy5fJEFCOmUuXyRBQTtpZih0PT09dm9pZCAwKXtsZXQgbj1hLmluc2VydEJlZm9yZShDa3QoKSxyKSxvPWEuaW5zZXJ0QmVmb3JlKENrdCgpLHIpO3Q9bmV3IGtxYShuLG8scyxzLm9wdGlvbnMpfWVsc2V7bGV0IG49dC5fJEFCLm5leHRTaWJsaW5nLG89dC5fJEFNLGw9byE9PXM7aWYobCl7bGV0IHA7dC5fJEFRPy4ocyksdC5fJEFNPXMsdC5fJEFQIT09dm9pZCAwJiYocD1zLl8kQVUpIT09by5fJEFVJiZ0Ll8kQVAocCl9aWYobiE9PXJ8fGwpe2xldCBwPXQuXyRBQTtmb3IoO3AhPT1uOyl7bGV0IGQ9emt0KHApLm5leHRTaWJsaW5nO3prdChhKS5pbnNlcnRCZWZvcmUocCxyKSxwPWR9fX1yZXR1cm4gdH0sInYiKSxPMT1pKChzLGUsdD1zKT0+KHMuXyRBSShlLHQpLHMpLCJ1IiksVHFhPXt9LE5rPWkoKHMsZT1UcWEpPT5zLl8kQUg9ZSwicCIpLEQ1ZT1pKHM9PnMuXyRBSCwiTSIpLFJrPWkocz0+e3MuXyRBUigpLHMuXyRBQS5yZW1vdmUoKX0sImgiKSxMNWU9aShzPT57cy5fJEFSKCl9LCJqIil9KTtmdW5jdGlvbiAkcWEocyl7dGhpcy5fJEFOIT09dm9pZCAwPyhEcmUodGhpcyksdGhpcy5fJEFNPXMsVGt0KHRoaXMpKTp0aGlzLl8kQU09c31mdW5jdGlvbiBEcWEocyxlPSExLHQ9MCl7bGV0IGE9dGhpcy5fJEFILHI9dGhpcy5fJEFOO2lmKHIhPT12b2lkIDAmJnIuc2l6ZSE9PTApaWYoZSlpZihBcnJheS5pc0FycmF5KGEpKWZvcihsZXQgbj10O248YS5sZW5ndGg7bisrKU9rKGFbbl0sITEpLERyZShhW25dKTtlbHNlIGEhPW51bGwmJihPayhhLCExKSxEcmUoYSkpO2Vsc2UgT2sodGhpcyxzKX12YXIgT2ssRHJlLFRrdCxMcWEsVWwsTHJlPWcoKCk9Pnt4YigpO1IwKCk7UjAoKTtPaz1pKChzLGUpPT57bGV0IHQ9cy5fJEFOO2lmKHQ9PT12b2lkIDApcmV0dXJuITE7Zm9yKGxldCBhIG9mIHQpYS5fJEFPPy4oZSwhMSksT2soYSxlKTtyZXR1cm4hMH0sInMiKSxEcmU9aShzPT57bGV0IGUsdDtkb3tpZigoZT1zLl8kQU0pPT09dm9pZCAwKWJyZWFrO3Q9ZS5fJEFOLHQuZGVsZXRlKHMpLHM9ZX13aGlsZSh0Py5zaXplPT09MCl9LCJvIiksVGt0PWkocz0+e2ZvcihsZXQgZTtlPXMuXyRBTTtzPWUpe2xldCB0PWUuXyRBTjtpZih0PT09dm9pZCAwKWUuXyRBTj10PW5ldyBTZXQ7ZWxzZSBpZih0LmhhcyhzKSlicmVhazt0LmFkZChzKSxMcWEoZSl9fSwiciIpO2koJHFhLCJoIik7aShEcWEsIm4iKTtMcWE9aShzPT57cy50eXBlPT1fZC5DSElMRCYmKHMuXyRBUD8/PURxYSxzLl8kQVE/Pz0kcWEpfSwiYyIpLFVsPWNsYXNzIGV4dGVuZHMgSWN7c3RhdGlje2kodGhpcywiZiIpfWNvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl8kQU49dm9pZCAwfV8kQVQoZSx0LGEpe3N1cGVyLl8kQVQoZSx0LGEpLFRrdCh0aGlzKSx0aGlzLmlzQ29ubmVjdGVkPWUuXyRBVX1fJEFPKGUsdD0hMCl7ZSE9PXRoaXMuaXNDb25uZWN0ZWQmJih0aGlzLmlzQ29ubmVjdGVkPWUsZT90aGlzLnJlY29ubmVjdGVkPy4oKTp0aGlzLmRpc2Nvbm5lY3RlZD8uKCkpLHQmJihPayh0aGlzLGUpLERyZSh0aGlzKSl9c2V0VmFsdWUoZSl7aWYoJDVlKHRoaXMuXyRDdCkpdGhpcy5fJEN0Ll8kQUkoZSx0aGlzKTtlbHNle2xldCB0PVsuLi50aGlzLl8kQ3QuXyRBSF07dFt0aGlzLl8kQ2ldPWUsdGhpcy5fJEN0Ll8kQUkodCx0aGlzLDApfX1kaXNjb25uZWN0ZWQoKXt9cmVjb25uZWN0ZWQoKXt9fX0pO3ZhciBFcmU9ZygoKT0+e0xyZSgpfSk7dmFyIEU1ZSwka3QsRXFhLERrdD1nKCgpPT57dmMoKTtFcmUoKTtFNWU9Y2xhc3MgZXh0ZW5kcyBVbHtzdGF0aWN7aSh0aGlzLCJSZXNvbHZlRGlyZWN0aXZlIil9cHJvbWlzZTtoYXNQcm9taXNlU2V0dGxlZD0hMTtyZW5kZXIoZSl7cmV0dXJuIHRoaXMucHJvbWlzZSE9PWUmJih0aGlzLnByb21pc2U9ZSx0aGlzLmlzQ29ubmVjdGVkJiZ0aGlzLmhhbmRsZVByb21pc2UoZSkpLG9pfWhhbmRsZVByb21pc2UoZSl7dGhpcy5oYXNQcm9taXNlU2V0dGxlZD0hMSxlLnRoZW4odD0+e3RoaXMucHJvbWlzZT09PWUmJiF0aGlzLmhhc1Byb21pc2VTZXR0bGVkJiYodGhpcy5zZXRWYWx1ZSh0KSx0aGlzLmhhc1Byb21pc2VTZXR0bGVkPSEwKX0pLmNhdGNoKHQ9Pnt0aGlzLnByb21pc2U9PT1lJiYhdGhpcy5oYXNQcm9taXNlU2V0dGxlZCYmKHRoaXMuc2V0VmFsdWUodCksdGhpcy5oYXNQcm9taXNlU2V0dGxlZD0hMCl9KX1kaXNjb25uZWN0ZWQoKXt0aGlzLmhhc1Byb21pc2VTZXR0bGVkPSEwfXJlY29ubmVjdGVkKCl7dGhpcy5oYXNQcm9taXNlU2V0dGxlZHx8dGhpcy5oYW5kbGVQcm9taXNlKHRoaXMucHJvbWlzZSl9fSwka3Q9enIoRTVlKSxFcWE9aShzPT4ka3QocygpKSwicmVzb2x2ZUV4ZWMiKX0pO3ZhciBQNWUsUHFhLExrdD1nKCgpPT57dmMoKTtFcmUoKTtaMigpO1A1ZT1jbGFzcyBleHRlbmRzIFVse3N0YXRpY3tpKHRoaXMsIlN1YnNjcmliZURpcmVjdGl2ZSIpfW9ic2VydmFibGU7c3ViPW51bGw7cmVuZGVyKGUpe3JldHVybiB0aGlzLm9ic2VydmFibGUhPT1lJiYodGhpcy5zdWI/LnVuc3Vic2NyaWJlKCksdGhpcy5vYnNlcnZhYmxlPWUsdGhpcy5pc0Nvbm5lY3RlZCYmdGhpcy5zdWJzY3JpYmUoZSkpLG9pfXN1YnNjcmliZShlKXt0aGlzLnN1Yj1lLnN1YnNjcmliZSh0PT57dGhpcy5zZXRWYWx1ZSh0KX0pfWRpc2Nvbm5lY3RlZCgpe3RoaXMuc3ViPy51bnN1YnNjcmliZSgpfXJlY29ubmVjdGVkKCl7dGhpcy5zdWJzY3JpYmUodGhpcy5vYnNlcnZhYmxlKX19LFBxYT16cihQNWUpfSk7dmFyIEk1ZSxFa3QsUGt0PWcoKCk9Pnt2YygpO0VyZSgpO1oyKCk7STVlPWNsYXNzIGV4dGVuZHMgVWx7c3RhdGlje2kodGhpcywiU3Vic2NyaWJlV2l0aFRlbXBsYXRlRGlyZWN0aXZlIil9b2JzZXJ2YWJsZTt0ZW1wbGF0ZUZuO3N1Yj1udWxsO3JlbmRlcihlLHQpe3JldHVybih0aGlzLm9ic2VydmFibGUhPT1lfHx0aGlzLnRlbXBsYXRlRm4hPT10KSYmKHRoaXMuc3ViPy51bnN1YnNjcmliZSgpLHRoaXMub2JzZXJ2YWJsZT1lLHRoaXMudGVtcGxhdGVGbj10LHRoaXMuaXNDb25uZWN0ZWQmJnRoaXMuc3RhcnRTdWJzY3JpcHRpb24oKSksb2l9c3RhcnRTdWJzY3JpcHRpb24oKXt0aGlzLnN1Yj10aGlzLm9ic2VydmFibGUuc3Vic2NyaWJlKGU9PntsZXQgdD10aGlzLnRlbXBsYXRlRm4oZSk7dGhpcy5zZXRWYWx1ZSh0KX0pfWRpc2Nvbm5lY3RlZCgpe3RoaXMuc3ViPy51bnN1YnNjcmliZSgpfXJlY29ubmVjdGVkKCl7dGhpcy5zdGFydFN1YnNjcmlwdGlvbigpfX0sRWt0PXpyKEk1ZSl9KTt2YXIgQTVlLFUzLFczLE41ZT1nKCgpPT57QTVlPWkoYXN5bmMocyxlKT0+e2ZvciBhd2FpdChsZXQgdCBvZiBzKWlmKGF3YWl0IGUodCk9PT0hMSlyZXR1cm59LCJ0IiksVTM9Y2xhc3N7c3RhdGlje2kodGhpcywicyIpfWNvbnN0cnVjdG9yKGUpe3RoaXMuRz1lfWRpc2Nvbm5lY3QoKXt0aGlzLkc9dm9pZCAwfXJlY29ubmVjdChlKXt0aGlzLkc9ZX1kZXJlZigpe3JldHVybiB0aGlzLkd9fSxXMz1jbGFzc3tzdGF0aWN7aSh0aGlzLCJpIil9Y29uc3RydWN0b3IoKXt0aGlzLlk9dm9pZCAwLHRoaXMuWj12b2lkIDB9Z2V0KCl7cmV0dXJuIHRoaXMuWX1wYXVzZSgpe3RoaXMuWT8/PW5ldyBQcm9taXNlKGU9PnRoaXMuWj1lKX1yZXN1bWUoKXt0aGlzLlo/LigpLHRoaXMuWT10aGlzLlo9dm9pZCAwfX19KTt2YXIgSWt0LEFrdCxQcmUsUjVlLE5rdD1nKCgpPT57ZjEoKTt4YigpO0xyZSgpO041ZSgpO1IwKCk7SWt0PWkocz0+IVQ1ZShzKSYmdHlwZW9mIHMudGhlbj09ImZ1bmN0aW9uIiwibiIpLEFrdD0xMDczNzQxODIzLFByZT1jbGFzcyBleHRlbmRzIFVse3N0YXRpY3tpKHRoaXMsImMiKX1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fJEN3dD1Ba3QsdGhpcy5fJENidD1bXSx0aGlzLl8kQ0s9bmV3IFUzKHRoaXMpLHRoaXMuXyRDWD1uZXcgVzN9cmVuZGVyKC4uLmUpe3JldHVybiBlLmZpbmQodD0+IUlrdCh0KSk/P29pfXVwZGF0ZShlLHQpe2xldCBhPXRoaXMuXyRDYnQscj1hLmxlbmd0aDt0aGlzLl8kQ2J0PXQ7bGV0IG49dGhpcy5fJENLLG89dGhpcy5fJENYO3RoaXMuaXNDb25uZWN0ZWR8fHRoaXMuZGlzY29ubmVjdGVkKCk7Zm9yKGxldCBsPTA7bDx0Lmxlbmd0aCYmIShsPnRoaXMuXyRDd3QpO2wrKyl7bGV0IHA9dFtsXTtpZighSWt0KHApKXJldHVybiB0aGlzLl8kQ3d0PWwscDtsPHImJnA9PT1hW2xdfHwodGhpcy5fJEN3dD1Ba3Qscj0wLFByb21pc2UucmVzb2x2ZShwKS50aGVuKGFzeW5jIGQ9Pntmb3IoO28uZ2V0KCk7KWF3YWl0IG8uZ2V0KCk7bGV0IHU9bi5kZXJlZigpO2lmKHUhPT12b2lkIDApe2xldCBjPXUuXyRDYnQuaW5kZXhPZihwKTtjPi0xJiZjPHUuXyRDd3QmJih1Ll8kQ3d0PWMsdS5zZXRWYWx1ZShkKSl9fSkpfXJldHVybiBvaX1kaXNjb25uZWN0ZWQoKXt0aGlzLl8kQ0suZGlzY29ubmVjdCgpLHRoaXMuXyRDWC5wYXVzZSgpfXJlY29ubmVjdGVkKCl7dGhpcy5fJENLLnJlY29ubmVjdCh0aGlzKSx0aGlzLl8kQ1gucmVzdW1lKCl9fSxSNWU9enIoUHJlKX0pO3ZhciBSa3Q9ZygoKT0+e05rdCgpfSk7dmFyIHliLElxYSxPa3Q9ZygoKT0+e2YxKCk7THJlKCk7TjVlKCk7UjAoKTt5Yj1jbGFzcyBleHRlbmRzIFVse3N0YXRpY3tpKHRoaXMsIm8iKX1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fJENLPW5ldyBVMyh0aGlzKSx0aGlzLl8kQ1g9bmV3IFczfXJlbmRlcihlLHQpe3JldHVybiBvaX11cGRhdGUoZSxbdCxhXSl7aWYodGhpcy5pc0Nvbm5lY3RlZHx8dGhpcy5kaXNjb25uZWN0ZWQoKSx0PT09dGhpcy5fJENKKXJldHVybiBvaTt0aGlzLl8kQ0o9dDtsZXQgcj0wLHtfJENLOm4sXyRDWDpvfT10aGlzO3JldHVybiBBNWUodCxhc3luYyBsPT57Zm9yKDtvLmdldCgpOylhd2FpdCBvLmdldCgpO2xldCBwPW4uZGVyZWYoKTtpZihwIT09dm9pZCAwKXtpZihwLl8kQ0ohPT10KXJldHVybiExO2EhPT12b2lkIDAmJihsPWEobCxyKSkscC5jb21taXRWYWx1ZShsLHIpLHIrK31yZXR1cm4hMH0pLG9pfWNvbW1pdFZhbHVlKGUsdCl7dGhpcy5zZXRWYWx1ZShlKX1kaXNjb25uZWN0ZWQoKXt0aGlzLl8kQ0suZGlzY29ubmVjdCgpLHRoaXMuXyRDWC5wYXVzZSgpfXJlY29ubmVjdGVkKCl7dGhpcy5fJENLLnJlY29ubmVjdCh0aGlzKSx0aGlzLl8kQ1gucmVzdW1lKCl9fSxJcWE9enIoeWIpfSk7dmFyIE81ZSxGa3Q9ZygoKT0+e1IwKCk7T2t0KCk7eGIoKTtPNWU9enIoY2xhc3MgZXh0ZW5kcyB5Yntjb25zdHJ1Y3RvcihzKXtpZihzdXBlcihzKSxzLnR5cGUhPT1fZC5DSElMRCl0aHJvdyBFcnJvcigiYXN5bmNBcHBlbmQgY2FuIG9ubHkgYmUgdXNlZCBpbiBjaGlsZCBleHByZXNzaW9ucyIpfXVwZGF0ZShzLGUpe3JldHVybiB0aGlzLl8kQ3R0PXMsc3VwZXIudXBkYXRlKHMsZSl9Y29tbWl0VmFsdWUocyxlKXtlPT09MCYmTDVlKHRoaXMuXyRDdHQpO2xldCB0PU8wKHRoaXMuXyRDdHQpO08xKHQscyl9fSl9KTt2YXIgQmt0PWcoKCk9PntGa3QoKX0pO3ZhciBGNWUsSGt0PWcoKCk9PntmMSgpO1IwKCk7eGIoKTtGNWU9enIoY2xhc3MgZXh0ZW5kcyBJY3tjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5rZXk9eGl9cmVuZGVyKHMsZSl7cmV0dXJuIHRoaXMua2V5PXMsZX11cGRhdGUocyxbZSx0XSl7cmV0dXJuIGUhPT10aGlzLmtleSYmKE5rKHMpLHRoaXMua2V5PWUpLHR9fSl9KTt2YXIgcWt0PWcoKCk9PntIa3QoKX0pO3ZhciBqa3QsQjVlLFZrdD1nKCgpPT57ZjEoKTtSMCgpO3hiKCk7amt0PWkoKHMsZSx0KT0+e2xldCBhPW5ldyBNYXA7Zm9yKGxldCByPWU7cjw9dDtyKyspYS5zZXQoc1tyXSxyKTtyZXR1cm4gYX0sInUiKSxCNWU9enIoY2xhc3MgZXh0ZW5kcyBJY3tjb25zdHJ1Y3RvcihzKXtpZihzdXBlcihzKSxzLnR5cGUhPT1fZC5DSElMRCl0aHJvdyBFcnJvcigicmVwZWF0KCkgY2FuIG9ubHkgYmUgdXNlZCBpbiB0ZXh0IGV4cHJlc3Npb25zIil9ZHQocyxlLHQpe2xldCBhO3Q9PT12b2lkIDA/dD1lOmUhPT12b2lkIDAmJihhPWUpO2xldCByPVtdLG49W10sbz0wO2ZvcihsZXQgbCBvZiBzKXJbb109YT9hKGwsbyk6byxuW29dPXQobCxvKSxvKys7cmV0dXJue3ZhbHVlczpuLGtleXM6cn19cmVuZGVyKHMsZSx0KXtyZXR1cm4gdGhpcy5kdChzLGUsdCkudmFsdWVzfXVwZGF0ZShzLFtlLHQsYV0pe2xldCByPUQ1ZShzKSx7dmFsdWVzOm4sa2V5czpvfT10aGlzLmR0KGUsdCxhKTtpZighQXJyYXkuaXNBcnJheShyKSlyZXR1cm4gdGhpcy51dD1vLG47bGV0IGw9dGhpcy51dD8/PVtdLHA9W10sZCx1LGM9MCxiPXIubGVuZ3RoLTEsdj0wLHg9bi5sZW5ndGgtMTtmb3IoO2M8PWImJnY8PXg7KWlmKHJbY109PT1udWxsKWMrKztlbHNlIGlmKHJbYl09PT1udWxsKWItLTtlbHNlIGlmKGxbY109PT1vW3ZdKXBbdl09TzEocltjXSxuW3ZdKSxjKyssdisrO2Vsc2UgaWYobFtiXT09PW9beF0pcFt4XT1PMShyW2JdLG5beF0pLGItLSx4LS07ZWxzZSBpZihsW2NdPT09b1t4XSlwW3hdPU8xKHJbY10sblt4XSksTzAocyxwW3grMV0scltjXSksYysrLHgtLTtlbHNlIGlmKGxbYl09PT1vW3ZdKXBbdl09TzEocltiXSxuW3ZdKSxPMChzLHJbY10scltiXSksYi0tLHYrKztlbHNlIGlmKGQ9PT12b2lkIDAmJihkPWprdChvLHYseCksdT1qa3QobCxjLGIpKSxkLmhhcyhsW2NdKSlpZihkLmhhcyhsW2JdKSl7bGV0IG09dS5nZXQob1t2XSksZj1tIT09dm9pZCAwP3JbbV06bnVsbDtpZihmPT09bnVsbCl7bGV0IHk9TzAocyxyW2NdKTtPMSh5LG5bdl0pLHBbdl09eX1lbHNlIHBbdl09TzEoZixuW3ZdKSxPMChzLHJbY10sZiksclttXT1udWxsO3YrK31lbHNlIFJrKHJbYl0pLGItLTtlbHNlIFJrKHJbY10pLGMrKztmb3IoO3Y8PXg7KXtsZXQgbT1PMChzLHBbeCsxXSk7TzEobSxuW3ZdKSxwW3YrK109bX1mb3IoO2M8PWI7KXtsZXQgbT1yW2MrK107bSE9PW51bGwmJlJrKG0pfXJldHVybiB0aGlzLnV0PW8sTmsocyxwKSxvaX19KX0pO3ZhciBVa3Q9ZygoKT0+e1ZrdCgpfSk7dmFyIFZpPXt9O3l0KFZpLHthc3luY0FwcGVuZDooKT0+TzVlLGtleWVkOigpPT5GNWUscmVwZWF0OigpPT5CNWUscmVzb2x2ZTooKT0+JGt0LHJlc29sdmVFeGVjOigpPT5FcWEsc3Vic2NyaWJlOigpPT5QcWEsc3Vic2NyaWJlV2l0aFRlbXBsYXRlOigpPT5Fa3QsdW50aWw6KCk9PlI1ZX0pO3ZhciBXa3Q9ZygoKT0+e0RrdCgpO0xrdCgpO1BrdCgpO1JrdCgpO0JrdCgpO3FrdCgpO1VrdCgpfSk7dmFyIEczPXt9O3l0KEczLHtEZWVzRWxlbWVudDooKT0+d2UsY29udGFpbmVyUmVzcG9uc2l2ZTooKT0+dmIsY3NzOigpPT5KLGNzc01hbmFnZXI6KCk9PmgsY3VzdG9tRWxlbWVudDooKT0+bmUsZGlyZWN0aXZlczooKT0+VmksZG9tdG9vbHM6KCk9Pmx0LGh0bWw6KCk9PncscHJvcGVydHk6KCk9PkwscXVlcnk6KCk9Pk01ZSxxdWVyeUFsbDooKT0+ejVlLHF1ZXJ5QXN5bmM6KCk9PkM1ZSxyZW5kZXI6KCk9PmgxLHN0YXRlOigpPT5ZLHN0YXRpYzooKT0+TW4sdW5zYWZlQ1NTOigpPT5hYSx1bnNhZmVIVE1MOigpPT5WMyx1bnNhZmVTdGF0aWM6KCk9Pms1ZX0pO3ZhciBoLHBlPWcoKCk9Pntua3QoKTt2YygpO2RrdCgpO3BrdCgpO2ZrdCgpO2trdCgpO2t0KCk7X2t0KCk7TWt0KCk7V2t0KCk7aD1DcmUuZ2V0U2luZ2xldG9uKCl9KTtmdW5jdGlvbiBBcWEocyxlKXtsZXQgdD1XcltzXTtyZXR1cm4gdHlwZW9mIHQ9PSJvYmplY3QiJiZlP3RbZV18fCJhdXRvIjp0eXBlb2YgdD09Im51bWJlciI/dDoiYXV0byJ9dmFyIFdyLE5xYSxJcmUseGEsem49ZygoKT0+e1dyPXtiYXNlOntjb250ZW50OiJhdXRvIixpbnB1dEVsZW1lbnRzOjF9LGZpeGVkOnthcHBCYXI6MTAsc2lkZU1lbnU6MTAsbW9iaWxlTmF2OjI1MH0sYmFja2Ryb3A6e2Ryb3Bkb3duOjE5OTksbW9kYWw6Mjk5OSxjb250ZXh0TWVudTozOTk5fSxvdmVybGF5Ontkcm9wZG93bjoyZTMsbW9kYWw6M2UzLGNvbnRleHRNZW51OjRlMyx0b2FzdDo1ZTN9LG1vZGFsRHJvcGRvd246MzUwMCx3eXNpd3lnTWVudXM6NDUwMH07aShBcWEsImdldFpJbmRleCIpO05xYT17ImRlZXMtbW9kYWwiOldyLm92ZXJsYXkubW9kYWwsImRlZXMtd2luZG93bGF5ZXIiOldyLm92ZXJsYXkuZHJvcGRvd24sImRlZXMtY29udGV4dG1lbnUiOldyLm92ZXJsYXkuY29udGV4dE1lbnUsImRlZXMtdG9hc3QiOldyLm92ZXJsYXkudG9hc3QsImRlZXMtYXBwdWktbWFpbm1lbnUiOldyLmZpeGVkLmFwcEJhciwiZGVlcy1tb2JpbGVuYXZpZ2F0aW9uIjpXci5maXhlZC5tb2JpbGVOYXYsImRlZXMtc2xhc2gtbWVudSI6V3Iud3lzaXd5Z01lbnVzLCJkZWVzLWZvcm1hdHRpbmctbWVudSI6V3Iud3lzaXd5Z01lbnVzfSxJcmU9Y2xhc3Mgc3tzdGF0aWN7aSh0aGlzLCJaSW5kZXhSZWdpc3RyeSIpfXN0YXRpYyBpbnN0YW5jZTthY3RpdmVFbGVtZW50cz1uZXcgU2V0O2VsZW1lbnRaSW5kZXhNYXA9bmV3IFdlYWtNYXA7Y3VycmVudFpJbmRleD0xZTM7Y29uc3RydWN0b3IoKXt9c3RhdGljIGdldEluc3RhbmNlKCl7cmV0dXJuIHMuaW5zdGFuY2V8fChzLmluc3RhbmNlPW5ldyBzKSxzLmluc3RhbmNlfWdldE5leHRaSW5kZXgoKXtyZXR1cm4gdGhpcy5jdXJyZW50WkluZGV4Kz0xMCx0aGlzLmN1cnJlbnRaSW5kZXh9cmVnaXN0ZXIoZSx0KXt0aGlzLmFjdGl2ZUVsZW1lbnRzLmFkZChlKSx0aGlzLmVsZW1lbnRaSW5kZXhNYXAuc2V0KGUsdCl9dW5yZWdpc3RlcihlKXt0aGlzLmFjdGl2ZUVsZW1lbnRzLmRlbGV0ZShlKSx0aGlzLmVsZW1lbnRaSW5kZXhNYXAuZGVsZXRlKGUpLHRoaXMuYWN0aXZlRWxlbWVudHMuc2l6ZT09PTAmJih0aGlzLmN1cnJlbnRaSW5kZXg9MWUzKX1nZXRFbGVtZW50WkluZGV4KGUpe3JldHVybiB0aGlzLmVsZW1lbnRaSW5kZXhNYXAuZ2V0KGUpfWdldEFjdGl2ZUNvdW50KCl7cmV0dXJuIHRoaXMuYWN0aXZlRWxlbWVudHMuc2l6ZX1nZXRDdXJyZW50WkluZGV4KCl7cmV0dXJuIHRoaXMuY3VycmVudFpJbmRleH1jbGVhcigpe3RoaXMuYWN0aXZlRWxlbWVudHMuY2xlYXIoKSx0aGlzLmVsZW1lbnRaSW5kZXhNYXA9bmV3IFdlYWtNYXAsdGhpcy5jdXJyZW50WkluZGV4PTFlM31nZXRBY3RpdmVFbGVtZW50c0luT3JkZXIoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmFjdGl2ZUVsZW1lbnRzKS5zb3J0KChlLHQpPT57bGV0IGE9dGhpcy5lbGVtZW50WkluZGV4TWFwLmdldChlKXx8MCxyPXRoaXMuZWxlbWVudFpJbmRleE1hcC5nZXQodCl8fDA7cmV0dXJuIGEtcn0pfX0seGE9SXJlLmdldEluc3RhbmNlKCl9KTt2YXIgV2wsVWksV2ksSGUscHQ9ZygoKT0+e3BlKCk7V2w9e2NvbG9yczp7bGlnaHQ6e2JnUHJpbWFyeToiaHNsKDAgMCUgMTAwJSkiLGJnU2Vjb25kYXJ5OiJoc2woMCAwJSA5OCUpIixiZ1RlcnRpYXJ5OiJoc2woMCAwJSA5NiUpIix0ZXh0UHJpbWFyeToiaHNsKDAgMCUgMy45JSkiLHRleHRTZWNvbmRhcnk6ImhzbCgwIDAlIDIwJSkiLHRleHRNdXRlZDoiaHNsKDAgMCUgNDUlKSIsdGV4dFdhcm06IiM3ODcxNmMiLGJvcmRlckRlZmF1bHQ6ImhzbCgwIDAlIDg5LjglKSIsYm9yZGVyU3VidGxlOiJoc2woMCAwJSA5MyUpIixib3JkZXJTdHJvbmc6ImhzbCgwIDAlIDgwJSkiLGFjY2VudFByaW1hcnk6IiMzYjgyZjYiLGFjY2VudFN1Y2Nlc3M6IiMyMmM1NWUiLGFjY2VudFdhcm5pbmc6IiNmNTllMGIiLGFjY2VudEVycm9yOiIjZWY0NDQ0IixiYWRnZURlZmF1bHRCZzoiI2Y0ZjRmNSIsYmFkZ2VEZWZhdWx0Rmc6IiMzZjNmNDYiLGJhZGdlU3VjY2Vzc0JnOiIjZGNmY2U3IixiYWRnZVN1Y2Nlc3NGZzoiIzE2NjUzNCIsYmFkZ2VXYXJuaW5nQmc6IiNmZWYzYzciLGJhZGdlV2FybmluZ0ZnOiIjOTI0MDBlIixiYWRnZUVycm9yQmc6IiNmZWUyZTIiLGJhZGdlRXJyb3JGZzoiIzk5MWIxYiJ9LGRhcms6e2JnUHJpbWFyeToiaHNsKDAgMCUgMy45JSkiLGJnU2Vjb25kYXJ5OiJoc2woMCAwJSAzLjklKSIsYmdUZXJ0aWFyeToiaHNsKDAgMCUgNyUpIix0ZXh0UHJpbWFyeToiaHNsKDAgMCUgOTglKSIsdGV4dFNlY29uZGFyeToiaHNsKDAgMCUgNjMuOSUpIix0ZXh0TXV0ZWQ6ImhzbCgwIDAlIDU1JSkiLHRleHRXYXJtOiIjYjVhOTlhIixib3JkZXJEZWZhdWx0OiJoc2woMCAwJSAxNC45JSkiLGJvcmRlclN1YnRsZToiaHNsKDAgMCUgMTElKSIsYm9yZGVyU3Ryb25nOiJoc2woMCAwJSAyMCUpIixhY2NlbnRQcmltYXJ5OiIjM2I4MmY2IixhY2NlbnRTdWNjZXNzOiIjMjJjNTVlIixhY2NlbnRXYXJuaW5nOiIjZjU5ZTBiIixhY2NlbnRFcnJvcjoiI2VmNDQ0NCIsYmFkZ2VEZWZhdWx0Qmc6IiMyNzI3MmEiLGJhZGdlRGVmYXVsdEZnOiIjYTFhMWFhIixiYWRnZVN1Y2Nlc3NCZzoiIzE0NTMyZCIsYmFkZ2VTdWNjZXNzRmc6IiM0YWRlODAiLGJhZGdlV2FybmluZ0JnOiIjNDUxYTAzIixiYWRnZVdhcm5pbmdGZzoiI2ZiYmYyNCIsYmFkZ2VFcnJvckJnOiIjNDUwYTBhIixiYWRnZUVycm9yRmc6IiNmODcxNzEifX0sc3BhY2luZzp7eHM6IjRweCIsc206IjhweCIsbWQ6IjEycHgiLGxnOiIxNnB4Iix4bDoiMjRweCIsIjJ4bCI6IjMycHgiLCIzeGwiOiI0OHB4In0scmFkaXVzOnt4czoiMnB4IixzbToiNHB4IixtZDoiNnB4IixsZzoiOHB4Iix4bDoiMTJweCIsZnVsbDoiOTk5cHgifSxzaGFkb3dzOnt4czoiMCAxcHggMnB4IDAgcmdiKDAgMCAwIC8gMC4wNSkiLHNtOiIwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEpIixtZDoiMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xNSkiLGxnOiIwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xNSkifSx0cmFuc2l0aW9uczp7ZmFzdDoiMC4xcyIsZGVmYXVsdDoiMC4xNXMiLHNsb3c6IjAuMnMiLHNsb3dlcjoiMC4zcyJ9LGNvbnRyb2xIZWlnaHRzOntzbToiMzJweCIsbWQ6IjM2cHgiLGxnOiI0MHB4Iix4bDoiNDhweCJ9fSxVaT1XbC5jb2xvcnMubGlnaHQsV2k9V2wuY29sb3JzLmRhcmssSGU9SmAKICA6aG9zdCB7CiAgICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgKiBDb2xvcnMg4oCUIEJhY2tncm91bmQgKGZyb20gdGhlbWVEZWZhdWx0cykKICAgICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KICAgIC0tZGVlcy1jb2xvci1iZy1wcmltYXJ5OiAke2guYmRUaGVtZShVaS5iZ1ByaW1hcnksV2kuYmdQcmltYXJ5KX07CiAgICAtLWRlZXMtY29sb3ItYmctc2Vjb25kYXJ5OiAke2guYmRUaGVtZShVaS5iZ1NlY29uZGFyeSxXaS5iZ1NlY29uZGFyeSl9OwogICAgLS1kZWVzLWNvbG9yLWJnLXRlcnRpYXJ5OiAke2guYmRUaGVtZShVaS5iZ1RlcnRpYXJ5LFdpLmJnVGVydGlhcnkpfTsKCiAgICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgKiBDb2xvcnMg4oCUIFRleHQgKGZyb20gdGhlbWVEZWZhdWx0cykKICAgICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KICAgIC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnk6ICR7aC5iZFRoZW1lKFVpLnRleHRQcmltYXJ5LFdpLnRleHRQcmltYXJ5KX07CiAgICAtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnk6ICR7aC5iZFRoZW1lKFVpLnRleHRTZWNvbmRhcnksV2kudGV4dFNlY29uZGFyeSl9OwogICAgLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQ6ICR7aC5iZFRoZW1lKFVpLnRleHRNdXRlZCxXaS50ZXh0TXV0ZWQpfTsKCiAgICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgKiBDb2xvcnMg4oCUIEJvcmRlciAoZnJvbSB0aGVtZURlZmF1bHRzKQogICAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogICAgLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0OiAke2guYmRUaGVtZShVaS5ib3JkZXJEZWZhdWx0LFdpLmJvcmRlckRlZmF1bHQpfTsKICAgIC0tZGVlcy1jb2xvci1ib3JkZXItc3VidGxlOiAke2guYmRUaGVtZShVaS5ib3JkZXJTdWJ0bGUsV2kuYm9yZGVyU3VidGxlKX07CiAgICAtLWRlZXMtY29sb3ItYm9yZGVyLXN0cm9uZzogJHtoLmJkVGhlbWUoVWkuYm9yZGVyU3Ryb25nLFdpLmJvcmRlclN0cm9uZyl9OwoKICAgIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAqIENvbG9ycyDigJQgV2FybSBUZXh0IChmcm9tIHRoZW1lRGVmYXVsdHMpCiAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAgICAtLWRlZXMtY29sb3ItdGV4dC13YXJtOiAke2guYmRUaGVtZShVaS50ZXh0V2FybSxXaS50ZXh0V2FybSl9OwoKICAgIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAqIENvbG9ycyDigJQgQWNjZW50IChmcm9tIHRoZW1lRGVmYXVsdHMpCiAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAgICAtLWRlZXMtY29sb3ItYWNjZW50LXByaW1hcnk6ICR7aC5iZFRoZW1lKFVpLmFjY2VudFByaW1hcnksV2kuYWNjZW50UHJpbWFyeSl9OwogICAgLS1kZWVzLWNvbG9yLWFjY2VudC1zdWNjZXNzOiAke2guYmRUaGVtZShVaS5hY2NlbnRTdWNjZXNzLFdpLmFjY2VudFN1Y2Nlc3MpfTsKICAgIC0tZGVlcy1jb2xvci1hY2NlbnQtd2FybmluZzogJHtoLmJkVGhlbWUoVWkuYWNjZW50V2FybmluZyxXaS5hY2NlbnRXYXJuaW5nKX07CiAgICAtLWRlZXMtY29sb3ItYWNjZW50LWVycm9yOiAke2guYmRUaGVtZShVaS5hY2NlbnRFcnJvcixXaS5hY2NlbnRFcnJvcil9OwoKICAgIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAqIENvbG9ycyDigJQgQmFkZ2UgKGZyb20gdGhlbWVEZWZhdWx0cykKICAgICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KICAgIC0tZGVlcy1jb2xvci1iYWRnZS1kZWZhdWx0LWJnOiAke2guYmRUaGVtZShVaS5iYWRnZURlZmF1bHRCZyxXaS5iYWRnZURlZmF1bHRCZyl9OwogICAgLS1kZWVzLWNvbG9yLWJhZGdlLWRlZmF1bHQtZmc6ICR7aC5iZFRoZW1lKFVpLmJhZGdlRGVmYXVsdEZnLFdpLmJhZGdlRGVmYXVsdEZnKX07CiAgICAtLWRlZXMtY29sb3ItYmFkZ2Utc3VjY2Vzcy1iZzogJHtoLmJkVGhlbWUoVWkuYmFkZ2VTdWNjZXNzQmcsV2kuYmFkZ2VTdWNjZXNzQmcpfTsKICAgIC0tZGVlcy1jb2xvci1iYWRnZS1zdWNjZXNzLWZnOiAke2guYmRUaGVtZShVaS5iYWRnZVN1Y2Nlc3NGZyxXaS5iYWRnZVN1Y2Nlc3NGZyl9OwogICAgLS1kZWVzLWNvbG9yLWJhZGdlLXdhcm5pbmctYmc6ICR7aC5iZFRoZW1lKFVpLmJhZGdlV2FybmluZ0JnLFdpLmJhZGdlV2FybmluZ0JnKX07CiAgICAtLWRlZXMtY29sb3ItYmFkZ2Utd2FybmluZy1mZzogJHtoLmJkVGhlbWUoVWkuYmFkZ2VXYXJuaW5nRmcsV2kuYmFkZ2VXYXJuaW5nRmcpfTsKICAgIC0tZGVlcy1jb2xvci1iYWRnZS1lcnJvci1iZzogJHtoLmJkVGhlbWUoVWkuYmFkZ2VFcnJvckJnLFdpLmJhZGdlRXJyb3JCZyl9OwogICAgLS1kZWVzLWNvbG9yLWJhZGdlLWVycm9yLWZnOiAke2guYmRUaGVtZShVaS5iYWRnZUVycm9yRmcsV2kuYmFkZ2VFcnJvckZnKX07CgogICAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICogQ29sb3JzIOKAlCBJbnRlcmFjdGl2ZSBTdGF0ZXMKICAgICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KICAgIC0tZGVlcy1jb2xvci1ob3ZlcjogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wNCkiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDYpIil9OwogICAgLS1kZWVzLWNvbG9yLWFjdGl2ZTogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wNikiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpIil9OwogICAgLS1kZWVzLWNvbG9yLXByZXNzZWQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMDgpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKSIpfTsKICAgIC0tZGVlcy1jb2xvci1yb3ctaG92ZXI6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUgLyAwLjA2KSIsImhzbCgyMTcuMiA5MS4yJSA1OS44JSAvIDAuMDgpIil9OwoKICAgIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAqIENvbG9ycyDigJQgRm9jdXMgUmluZwogICAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogICAgLS1kZWVzLWNvbG9yLWZvY3VzLXJpbmc6ICR7aC5iZFRoZW1lKCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC40KSIsInJnYmEoNTksIDEzMCwgMjQ2LCAwLjQpIil9OwoKICAgIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAqIENvbG9ycyDigJQgVG9vbHRpcCAoaW52ZXJ0ZWQgY29udHJhc3QpCiAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAgICAtLWRlZXMtY29sb3ItdG9vbHRpcC1iZzogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgLS1kZWVzLWNvbG9yLXRvb2x0aXAtZmc6ICR7aC5iZFRoZW1lKCIjZmFmYWZhIiwiIzE4MTgxYiIpfTsKCiAgICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgKiBDb2xvcnMg4oCUIExpbmsKICAgICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KICAgIC0tZGVlcy1jb2xvci1saW5rOiAke2guYmRUaGVtZSgiIzNiODJmNiIsIiM2MGE1ZmEiKX07CiAgICAtLWRlZXMtY29sb3ItbGluay1ob3ZlcjogJHtoLmJkVGhlbWUoIiMyNTYzZWIiLCIjOTNiYmZkIil9OwoKICAgIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAqIENvbG9ycyDigJQgQ29kZQogICAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogICAgLS1kZWVzLWNvbG9yLWNvZGUtYmc6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMDYpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpIil9OwogICAgLS1kZWVzLWNvbG9yLWNvZGUtYmxvY2stYmc6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzE4MTgxYiIpfTsKCiAgICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgKiBDb2xvcnMg4oCUIFNlbGVjdGlvbgogICAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogICAgLS1kZWVzLWNvbG9yLXNlbGVjdGlvbjogJHtoLmJkVGhlbWUoInJnYmEoNTksIDEzMCwgMjQ2LCAwLjIpIiwicmdiYSg1OSwgMTMwLCAyNDYsIDAuMykiKX07CgogICAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICogQ29sb3JzIOKAlCBTY3JvbGxiYXIKICAgICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KICAgIC0tZGVlcy1jb2xvci1zY3JvbGxiYXItdGh1bWI6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMTUpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSIpfTsKICAgIC0tZGVlcy1jb2xvci1zY3JvbGxiYXItdGh1bWItaG92ZXI6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMjUpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KSIpfTsKCiAgICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgKiBTcGFjaW5nIFNjYWxlCiAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAgICAtLWRlZXMtc3BhY2luZy14czogNHB4OwogICAgLS1kZWVzLXNwYWNpbmctc206IDhweDsKICAgIC0tZGVlcy1zcGFjaW5nLW1kOiAxMnB4OwogICAgLS1kZWVzLXNwYWNpbmctbGc6IDE2cHg7CiAgICAtLWRlZXMtc3BhY2luZy14bDogMjRweDsKICAgIC0tZGVlcy1zcGFjaW5nLTJ4bDogMzJweDsKICAgIC0tZGVlcy1zcGFjaW5nLTN4bDogNDhweDsKCiAgICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgKiBCb3JkZXIgUmFkaXVzIFNjYWxlCiAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAgICAtLWRlZXMtcmFkaXVzLXhzOiAycHg7CiAgICAtLWRlZXMtcmFkaXVzLXNtOiA0cHg7CiAgICAtLWRlZXMtcmFkaXVzLW1kOiA2cHg7CiAgICAtLWRlZXMtcmFkaXVzLWxnOiA4cHg7CiAgICAtLWRlZXMtcmFkaXVzLXhsOiAxMnB4OwogICAgLS1kZWVzLXJhZGl1cy1mdWxsOiA5OTlweDsKCiAgICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgKiBTaGFkb3cgRWxldmF0aW9uIFNjYWxlCiAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAgICAtLWRlZXMtc2hhZG93LXhzOiAwIDFweCAycHggMCByZ2IoMCAwIDAgLyAwLjA1KTsKICAgIC0tZGVlcy1zaGFkb3ctc206IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgICAtLWRlZXMtc2hhZG93LW1kOiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjE1KTsKICAgIC0tZGVlcy1zaGFkb3ctbGc6IDAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjE1KTsKCiAgICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgKiBUcmFuc2l0aW9uIER1cmF0aW9uIFNjYWxlCiAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAgICAtLWRlZXMtdHJhbnNpdGlvbi1mYXN0OiAwLjFzOwogICAgLS1kZWVzLXRyYW5zaXRpb24tZGVmYXVsdDogMC4xNXM7CiAgICAtLWRlZXMtdHJhbnNpdGlvbi1zbG93OiAwLjJzOwogICAgLS1kZWVzLXRyYW5zaXRpb24tc2xvd2VyOiAwLjNzOwoKICAgIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAqIENvbnRyb2wgSGVpZ2h0IFNjYWxlCiAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAgICAtLWRlZXMtY29udHJvbC1oZWlnaHQtc206IDMycHg7CiAgICAtLWRlZXMtY29udHJvbC1oZWlnaHQtbWQ6IDM2cHg7CiAgICAtLWRlZXMtY29udHJvbC1oZWlnaHQtbGc6IDQwcHg7CiAgICAtLWRlZXMtY29udHJvbC1oZWlnaHQteGw6IDQ4cHg7CiAgfQpgfSk7dmFyIHBvPWcoKCk9PntpbygpO1NuKCl9KTt2YXIgR2t0LEtrdD1nKCgpPT57cGUoKTtwbygpO29yKCk7R2t0PWkoKCk9PndgCjxzdHlsZT4KICAud2l0aE1hcmdpbiB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1hcmdpbjogMjBweDsKICB9CiAgLmRlbW8tY29udGFpbmVyIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgZ2FwOiAyMHB4OwogICAgcGFkZGluZzogMjBweDsKICAgIG1pbi1oZWlnaHQ6IDQwMHB4OwogIH0KICAuZGVtby1hcmVhIHsKICAgIHBhZGRpbmc6IDQwcHg7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBjdXJzb3I6IGNvbnRleHQtbWVudTsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4yczsKICB9CiAgLmRlbW8tYXJlYTpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDIpOwogIH0KPC9zdHlsZT4KPGRpdiBjbGFzcz0iZGVtby1jb250YWluZXIiPgogIDxkZWVzLXBhbmVsIGhlYWRpbmc9IkJhc2ljIENvbnRleHQgTWVudSB3aXRoIE5lc3RlZCBTdWJtZW51cyI+CiAgICA8ZGl2IGNsYXNzPSJkZW1vLWFyZWEiIEBjb250ZXh0bWVudT0ke3M9PntrYS5vcGVuQ29udGV4dE1lbnVXaXRoT3B0aW9ucyhzLFt7bmFtZToiRmlsZSIsaWNvbk5hbWU6ImZpbGVUZXh0IixhY3Rpb246aShhc3luYygpPT57fSwiYWN0aW9uIiksc3VibWVudTpbe25hbWU6Ik5ldyIsaWNvbk5hbWU6ImZpbGVQbHVzIixzaG9ydGN1dDoiQ21kK04iLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJOZXcgZmlsZSIpLCJhY3Rpb24iKX0se25hbWU6Ik9wZW4iLGljb25OYW1lOiJmb2xkZXJPcGVuIixzaG9ydGN1dDoiQ21kK08iLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJPcGVuIGZpbGUiKSwiYWN0aW9uIil9LHtuYW1lOiJTYXZlIixpY29uTmFtZToic2F2ZSIsc2hvcnRjdXQ6IkNtZCtTIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiU2F2ZSIpLCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJFeHBvcnQgYXMgUERGIixpY29uTmFtZToiZG93bmxvYWQiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJFeHBvcnQgUERGIiksImFjdGlvbiIpfSx7bmFtZToiRXhwb3J0IGFzIEhUTUwiLGljb25OYW1lOiJjb2RlIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiRXhwb3J0IEhUTUwiKSwiYWN0aW9uIil9XX0se25hbWU6IkVkaXQiLGljb25OYW1lOiJlZGl0MyIsYWN0aW9uOmkoYXN5bmMoKT0+e30sImFjdGlvbiIpLHN1Ym1lbnU6W3tuYW1lOiJDdXQiLGljb25OYW1lOiJzY2lzc29ycyIsc2hvcnRjdXQ6IkNtZCtYIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiQ3V0IiksImFjdGlvbiIpfSx7bmFtZToiQ29weSIsaWNvbk5hbWU6ImNvcHkiLHNob3J0Y3V0OiJDbWQrQyIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIkNvcHkiKSwiYWN0aW9uIil9LHtuYW1lOiJQYXN0ZSIsaWNvbk5hbWU6ImNsaXBib2FyZCIsc2hvcnRjdXQ6IkNtZCtWIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiUGFzdGUiKSwiYWN0aW9uIil9LHtkaXZpZGVyOiEwfSx7bmFtZToiRmluZCIsaWNvbk5hbWU6InNlYXJjaCIsc2hvcnRjdXQ6IkNtZCtGIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiRmluZCIpLCJhY3Rpb24iKX0se25hbWU6IlJlcGxhY2UiLGljb25OYW1lOiJyZXBlYXQiLHNob3J0Y3V0OiJDbWQrSCIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIlJlcGxhY2UiKSwiYWN0aW9uIil9XX0se25hbWU6IlZpZXciLGljb25OYW1lOiJleWUiLGFjdGlvbjppKGFzeW5jKCk9Pnt9LCJhY3Rpb24iKSxzdWJtZW51Olt7bmFtZToiWm9vbSBJbiIsaWNvbk5hbWU6Inpvb21JbiIsc2hvcnRjdXQ6IkNtZCsrIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiWm9vbSBpbiIpLCJhY3Rpb24iKX0se25hbWU6Ilpvb20gT3V0IixpY29uTmFtZToiem9vbU91dCIsc2hvcnRjdXQ6IkNtZCstIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiWm9vbSBvdXQiKSwiYWN0aW9uIil9LHtuYW1lOiJSZXNldCBab29tIixpY29uTmFtZToibWF4aW1pemUyIixzaG9ydGN1dDoiQ21kKzAiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJSZXNldCB6b29tIiksImFjdGlvbiIpfSx7ZGl2aWRlcjohMH0se25hbWU6IkZ1bGwgU2NyZWVuIixpY29uTmFtZToibWF4aW1pemUiLHNob3J0Y3V0OiJGMTEiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJGdWxsIHNjcmVlbiIpLCJhY3Rpb24iKX1dfSx7ZGl2aWRlcjohMH0se25hbWU6IlNldHRpbmdzIixpY29uTmFtZToic2V0dGluZ3MiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJTZXR0aW5ncyIpLCJhY3Rpb24iKX0se25hbWU6IkhlbHAiLGljb25OYW1lOiJoZWxwQ2lyY2xlIixhY3Rpb246aShhc3luYygpPT57fSwiYWN0aW9uIiksc3VibWVudTpbe25hbWU6IkRvY3VtZW50YXRpb24iLGljb25OYW1lOiJib29rIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiRG9jdW1lbnRhdGlvbiIpLCJhY3Rpb24iKX0se25hbWU6IktleWJvYXJkIFNob3J0Y3V0cyIsaWNvbk5hbWU6ImtleWJvYXJkIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiU2hvcnRjdXRzIiksImFjdGlvbiIpfSx7ZGl2aWRlcjohMH0se25hbWU6IkFib3V0IixpY29uTmFtZToiaW5mbyIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIkFib3V0IiksImFjdGlvbiIpfV19XSl9fT4KICAgICAgPGgzPlJpZ2h0LWNsaWNrIGFueXdoZXJlIGluIHRoaXMgYXJlYTwvaDM+CiAgICAgIDxwPkEgY29udGV4dCBtZW51IHdpdGggbmVzdGVkIHN1Ym1lbnVzIHdpbGwgYXBwZWFyPC9wPgogICAgPC9kaXY+CiAgPC9kZWVzLXBhbmVsPgogIDxkZWVzLXBhbmVsIGhlYWRpbmc9IkNvbXBvbmVudC1TcGVjaWZpYyBDb250ZXh0IE1lbnUiPgogICAgPGRlZXMtYnV0dG9uIHN0eWxlPSJtYXJnaW46IDIwcHg7IiBAY29udGV4dG1lbnU9JHtzPT57a2Eub3BlbkNvbnRleHRNZW51V2l0aE9wdGlvbnMocyxbe25hbWU6IkJ1dHRvbiBBY3Rpb25zIixpY29uTmFtZToibW91c2VQb2ludGVyIixhY3Rpb246aShhc3luYygpPT57fSwiYWN0aW9uIiksc3VibWVudTpbe25hbWU6IkNsaWNrIixpY29uTmFtZToibW91c2UiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJDbGljayBhY3Rpb24iKSwiYWN0aW9uIil9LHtuYW1lOiJEb3VibGUgQ2xpY2siLGljb25OYW1lOiJ6YXAiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJEb3VibGUgY2xpY2siKSwiYWN0aW9uIil9LHtuYW1lOiJMb25nIFByZXNzIixpY29uTmFtZToiY2xvY2siLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJMb25nIHByZXNzIiksImFjdGlvbiIpfV19LHtuYW1lOiJCdXR0b24gU3RhdGUiLGljb25OYW1lOiJ0b2dnbGVMZWZ0IixhY3Rpb246aShhc3luYygpPT57fSwiYWN0aW9uIiksc3VibWVudTpbe25hbWU6IkVuYWJsZSIsaWNvbk5hbWU6ImNoZWNrQ2lyY2xlIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiRW5hYmxlIiksImFjdGlvbiIpfSx7bmFtZToiRGlzYWJsZSIsaWNvbk5hbWU6InhDaXJjbGUiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJEaXNhYmxlIiksImFjdGlvbiIpfSx7ZGl2aWRlcjohMH0se25hbWU6IlNob3ciLGljb25OYW1lOiJleWUiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJTaG93IiksImFjdGlvbiIpfSx7bmFtZToiSGlkZSIsaWNvbk5hbWU6ImV5ZU9mZiIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIkhpZGUiKSwiYWN0aW9uIil9XX0se2RpdmlkZXI6ITB9LHtuYW1lOiJEaXNhYmxlZCBBY3Rpb24iLGljb25OYW1lOiJiYW4iLGRpc2FibGVkOiEwLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJUaGlzIHNob3VsZCBub3QgcnVuIiksImFjdGlvbiIpfSx7bmFtZToiUHJvcGVydGllcyIsaWNvbk5hbWU6InNldHRpbmdzIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiQnV0dG9uIHByb3BlcnRpZXMiKSwiYWN0aW9uIil9XSl9fT5SaWdodC1jbGljayBvbiB0aGlzIGJ1dHRvbjwvZGVlcy1idXR0b24+CiAgPC9kZWVzLXBhbmVsPgoKICA8ZGVlcy1wYW5lbCBoZWFkaW5nPSJBZHZhbmNlZCBDb250ZXh0IE1lbnUgRXhhbXBsZSI+CiAgICA8ZGl2IGNsYXNzPSJkZW1vLWFyZWEiIEBjb250ZXh0bWVudT0ke3M9PntrYS5vcGVuQ29udGV4dE1lbnVXaXRoT3B0aW9ucyhzLFt7bmFtZToiRm9ybWF0IixpY29uTmFtZToidHlwZSIsYWN0aW9uOmkoYXN5bmMoKT0+e30sImFjdGlvbiIpLHN1Ym1lbnU6W3tuYW1lOiJCb2xkIixpY29uTmFtZToiYm9sZCIsc2hvcnRjdXQ6IkNtZCtCIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiQm9sZCIpLCJhY3Rpb24iKX0se25hbWU6Ikl0YWxpYyIsaWNvbk5hbWU6Iml0YWxpYyIsc2hvcnRjdXQ6IkNtZCtJIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiSXRhbGljIiksImFjdGlvbiIpfSx7bmFtZToiVW5kZXJsaW5lIixpY29uTmFtZToidW5kZXJsaW5lIixzaG9ydGN1dDoiQ21kK1UiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJVbmRlcmxpbmUiKSwiYWN0aW9uIil9LHtkaXZpZGVyOiEwfSx7bmFtZToiRm9udCBTaXplIixpY29uTmFtZToidHlwZSIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIkZvbnQgc2l6ZSBtZW51IiksImFjdGlvbiIpfSx7bmFtZToiRm9udCBDb2xvciIsaWNvbk5hbWU6InBhbGV0dGUiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJGb250IGNvbG9yIG1lbnUiKSwiYWN0aW9uIil9XX0se25hbWU6IlRyYW5zZm9ybSIsaWNvbk5hbWU6InNodWZmbGUiLGFjdGlvbjppKGFzeW5jKCk9Pnt9LCJhY3Rpb24iKSxzdWJtZW51Olt7bmFtZToiVG8gVXBwZXJjYXNlIixpY29uTmFtZToiYXJyb3dVcCIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIlVwcGVyY2FzZSIpLCJhY3Rpb24iKX0se25hbWU6IlRvIExvd2VyY2FzZSIsaWNvbk5hbWU6ImFycm93RG93biIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIkxvd2VyY2FzZSIpLCJhY3Rpb24iKX0se25hbWU6IkNhcGl0YWxpemUiLGljb25OYW1lOiJ0eXBlIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiQ2FwaXRhbGl6ZSIpLCJhY3Rpb24iKX1dfSx7ZGl2aWRlcjohMH0se25hbWU6IkRlbGV0ZSIsaWNvbk5hbWU6InRyYXNoMiIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIkRlbGV0ZSIpLCJhY3Rpb24iKX1dKX19PgogICAgICA8aDM+QWR2YW5jZWQgTmVzdGVkIE1lbnUgRXhhbXBsZTwvaDM+CiAgICAgIDxwPlRoaXMgc2hvd3MgZGVlcGx5IG5lc3RlZCBzdWJtZW51cyBhbmQgdmFyaW91cyBmb3JtYXR0aW5nIG9wdGlvbnM8L3A+CiAgICA8L2Rpdj4KICA8L2RlZXMtcGFuZWw+CiAgCiAgPGRlZXMtcGFuZWwgaGVhZGluZz0iU3RhdGljIENvbnRleHQgTWVudSAoQWx3YXlzIFZpc2libGUpIj4KICAgIDxkZWVzLWNvbnRleHRtZW51CiAgICAgIGNsYXNzPSJ3aXRoTWFyZ2luIgogICAgICAubWVudUl0ZW1zPSR7W3tuYW1lOiJQcm9qZWN0IixpY29uTmFtZToiZm9sZGVyIixhY3Rpb246aShhc3luYygpPT57fSwiYWN0aW9uIiksc3VibWVudTpbe25hbWU6Ik5ldyBQcm9qZWN0IixpY29uTmFtZToiZm9sZGVyUGx1cyIsc2hvcnRjdXQ6IkNtZCtTaGlmdCtOIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiTmV3IHByb2plY3QiKSwiYWN0aW9uIil9LHtuYW1lOiJPcGVuIFByb2plY3QiLGljb25OYW1lOiJmb2xkZXJPcGVuIixzaG9ydGN1dDoiQ21kK1NoaWZ0K08iLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJPcGVuIHByb2plY3QiKSwiYWN0aW9uIil9LHtkaXZpZGVyOiEwfSx7bmFtZToiUmVjZW50IFByb2plY3RzIixpY29uTmFtZToiY2xvY2siLGFjdGlvbjppKGFzeW5jKCk9Pnt9LCJhY3Rpb24iKSxzdWJtZW51Olt7bmFtZToiUHJvamVjdCBBbHBoYSIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIk9wZW4gQWxwaGEiKSwiYWN0aW9uIil9LHtuYW1lOiJQcm9qZWN0IEJldGEiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJPcGVuIEJldGEiKSwiYWN0aW9uIil9LHtuYW1lOiJQcm9qZWN0IEdhbW1hIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiT3BlbiBHYW1tYSIpLCJhY3Rpb24iKX1dfV19LHtuYW1lOiJUb29scyIsaWNvbk5hbWU6InRvb2wiLGFjdGlvbjppKGFzeW5jKCk9Pnt9LCJhY3Rpb24iKSxzdWJtZW51Olt7bmFtZToiVGVybWluYWwiLGljb25OYW1lOiJ0ZXJtaW5hbCIsc2hvcnRjdXQ6IkNtZCtUIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiVGVybWluYWwiKSwiYWN0aW9uIil9LHtuYW1lOiJDb25zb2xlIixpY29uTmFtZToibW9uaXRvciIsc2hvcnRjdXQ6IkNtZCtLIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiQ29uc29sZSIpLCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJFeHRlbnNpb25zIixpY29uTmFtZToicGFja2FnZSIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIkV4dGVuc2lvbnMiKSwiYWN0aW9uIil9XX0se2RpdmlkZXI6ITB9LHtuYW1lOiJQcmVmZXJlbmNlcyIsaWNvbk5hbWU6InNsaWRlcnMiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJQcmVmZXJlbmNlcyIpLCJhY3Rpb24iKX1dfQogICAgPjwvZGVlcy1jb250ZXh0bWVudT4KICA8L2RlZXMtcGFuZWw+CjwvZGl2PgpgLCJkZW1vRnVuYyIpfSk7dmFyIEZrLEYwLGhvLEYxPWcoKCk9PntwZSgpO3puKCk7Rms9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LEYwPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxobz0oKCk9PntsZXQgcz1bbmUoImRlZXMtd2luZG93bGF5ZXIiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXTt2YXIgeT1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1dpbmRvd0xheWVyIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IE09dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bWSgpXSxwPVtZKCldLGM9W1koKV0seD1bTCh7dHlwZTpCb29sZWFufSldLEZrKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToib3B0aW9ucyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4ib3B0aW9ucyJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56Lm9wdGlvbnMsImdldCIpLHNldDppKCh6LE4pPT57ei5vcHRpb25zPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sbyxsKSxGayh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImJhY2tkcm9wWkluZGV4IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJiYWNrZHJvcFpJbmRleCJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LmJhY2tkcm9wWkluZGV4LCJnZXQiKSxzZXQ6aSgoeixOKT0+e3ouYmFja2Ryb3BaSW5kZXg9Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxkLHUpLEZrKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY29udGVudFpJbmRleCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4iY29udGVudFpJbmRleCJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LmNvbnRlbnRaSW5kZXgsImdldCIpLHNldDppKCh6LE4pPT57ei5jb250ZW50WkluZGV4PU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sYix2KSxGayh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InZpc2libGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoej0+InZpc2libGUiaW4geiwiaGFzIiksZ2V0Omkoej0+ei52aXNpYmxlLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3oudmlzaWJsZT1OfSwic2V0Iil9LG1ldGFkYXRhOk19LG0sZiksRmsobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6TX0sbnVsbCx0KSx5PWE9ZS52YWx1ZSxNJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOk19KX1zdGF0aWMgZGVtbz1pKCgpPT53YDxkZWVzLXdpbmRvd2xheWVyPjwvZGVlcy13aW5kb3dsYXllcj5gLCJkZW1vIik7c3RhdGljIGRlbW9Hcm91cHM9WyJPdmVybGF5Il07c3RhdGljIGFzeW5jIGNyZWF0ZUFuZFNob3coTSl7bGV0IHo9bHQuRG9tVG9vbHMuZ2V0R2xvYmFsRG9tVG9vbHNTeW5jKCksTj1uZXcgeTtyZXR1cm4gTi5vcHRpb25zPXsuLi5OLm9wdGlvbnMsLi4uTX0sZG9jdW1lbnQuYm9keS5hcHBlbmQoTiksYXdhaXQgei5jb252ZW5pZW5jZS5zbWFydGRlbGF5LmRlbGF5Rm9yKDApLE4uc2hvdygpLE59I2U9RjAodGhpcyxvLHtibHVyOiExfSk7Z2V0IG9wdGlvbnMoKXtyZXR1cm4gdGhpcy4jZX1zZXQgb3B0aW9ucyhNKXt0aGlzLiNlPU19I3Q9KEYwKHRoaXMsbCksRjAodGhpcyxkLDFlMykpO2dldCBiYWNrZHJvcFpJbmRleCgpe3JldHVybiB0aGlzLiN0fXNldCBiYWNrZHJvcFpJbmRleChNKXt0aGlzLiN0PU19I2E9KEYwKHRoaXMsdSksRjAodGhpcyxiLDEwMDEpKTtnZXQgY29udGVudFpJbmRleCgpe3JldHVybiB0aGlzLiNhfXNldCBjb250ZW50WkluZGV4KE0pe3RoaXMuI2E9TX0jcz0oRjAodGhpcyx2KSxGMCh0aGlzLG0sITEpKTtnZXQgdmlzaWJsZSgpe3JldHVybiB0aGlzLiNzfXNldCB2aXNpYmxlKE0pe3RoaXMuI3M9TX1jb25zdHJ1Y3Rvcigpe3N1cGVyKCksRjAodGhpcyxmKSxsdC5lbGVtZW50QmFzaWMuc2V0dXAoKX1yZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgJHtsdC5lbGVtZW50QmFzaWMuc3R5bGVzfQogICAgICA8c3R5bGU+CiAgICAgICAgLndpbmRvd092ZXJsYXkgewogICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7CiAgICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgICAgdG9wOiAwcHg7CiAgICAgICAgICBsZWZ0OiAwcHg7CiAgICAgICAgICBoZWlnaHQ6IDEwMHZoOwogICAgICAgICAgd2lkdGg6IDEwMHZ3OwogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4wKTsKICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYnJpZ2h0bmVzcygxKSAke3RoaXMub3B0aW9ucy5ibHVyPyJibHVyKDBweCkiOiIifTsKICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgICAgei1pbmRleDogJHt0aGlzLmJhY2tkcm9wWkluZGV4fTsKICAgICAgICB9CiAgICAgICAgLnNsb3RDb250ZW50IHsKICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICAgIGhlaWdodDogMTAwdmg7CiAgICAgICAgICB3aWR0aDogMTAwdnc7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgei1pbmRleDogJHt0aGlzLmNvbnRlbnRaSW5kZXh9OwogICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5zbG90Q29udGVudCA+ICogewogICAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC52aXNpYmxlIHsKICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4yKTsKICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYnJpZ2h0bmVzcygwLjkpICR7dGhpcy5vcHRpb25zLmJsdXI/ImJsdXIoMnB4KSI6IiJ9OwogICAgICAgICAgcG9pbnRlci1ldmVudHM6IGFsbDsKICAgICAgICB9CiAgICAgIDwvc3R5bGU+CiAgICAgIDxkaXYgQGNsaWNrPSR7dGhpcy5kaXNwYXRjaENsaWNrZWR9IGNsYXNzPSJ3aW5kb3dPdmVybGF5ICR7dGhpcy52aXNpYmxlPyJ2aXNpYmxlIjpudWxsfSI+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzbG90Q29udGVudCI+CiAgICAgICAgPHNsb3Q+PC9zbG90PgogICAgICA8L2Rpdj4KICAgIGB9Zmlyc3RVcGRhdGVkKCl7c2V0VGltZW91dCgoKT0+e3RoaXMudmlzaWJsZT0hMH0sMTAwKX1kaXNwYXRjaENsaWNrZWQoKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjbGlja2VkIikpfXRvZ2dsZVZpc2liaWxpdHkoKXt0aGlzLnZpc2libGU9IXRoaXMudmlzaWJsZX1nZXRDb250ZW50WkluZGV4KCl7cmV0dXJuIHRoaXMuY29udGVudFpJbmRleH1hc3luYyBzaG93KCl7bGV0IE09YXdhaXQgdGhpcy5kb210b29sc1Byb21pc2U7dGhpcy5iYWNrZHJvcFpJbmRleD14YS5nZXROZXh0WkluZGV4KCksdGhpcy5jb250ZW50WkluZGV4PXhhLmdldE5leHRaSW5kZXgoKSx4YS5yZWdpc3Rlcih0aGlzLHRoaXMuYmFja2Ryb3BaSW5kZXgpLGF3YWl0IE0uY29udmVuaWVuY2Uuc21hcnRkZWxheS5kZWxheUZvcigwKSx0aGlzLnZpc2libGU9ITB9YXN5bmMgaGlkZSgpe2F3YWl0KGF3YWl0IHRoaXMuZG9tdG9vbHNQcm9taXNlKS5jb252ZW5pZW5jZS5zbWFydGRlbGF5LmRlbGF5Rm9yKDApLHRoaXMudmlzaWJsZT0hMX1hc3luYyBkZXN0cm95KCl7bGV0IE09YXdhaXQgdGhpcy5kb210b29sc1Byb21pc2U7YXdhaXQgdGhpcy5oaWRlKCksYXdhaXQgTS5jb252ZW5pZW5jZS5zbWFydGRlbGF5LmRlbGF5Rm9yKDMwMCkseGEudW5yZWdpc3Rlcih0aGlzKSx0aGlzLnJlbW92ZSgpfXN0YXRpY3tGMChhLHQpfX07cmV0dXJuIHk9YX0pKCl9KTtmdW5jdGlvbiBINWUocyxlKXsoZT09bnVsbHx8ZT5zLmxlbmd0aCkmJihlPXMubGVuZ3RoKTtmb3IodmFyIHQ9MCxhPUFycmF5KGUpO3Q8ZTt0KyspYVt0XT1zW3RdO3JldHVybiBhfWZ1bmN0aW9uIE9xYShzKXtpZihBcnJheS5pc0FycmF5KHMpKXJldHVybiBzfWZ1bmN0aW9uIEZxYShzKXtpZihBcnJheS5pc0FycmF5KHMpKXJldHVybiBINWUocyl9ZnVuY3Rpb24gQnFhKHMsZSl7aWYoIShzIGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gWWt0KHMsZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0Kyspe3ZhciBhPWVbdF07YS5lbnVtZXJhYmxlPWEuZW51bWVyYWJsZXx8ITEsYS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGEmJihhLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkocyxYa3QoYS5rZXkpLGEpfX1mdW5jdGlvbiBIcWEocyxlLHQpe3JldHVybiBlJiZZa3Qocy5wcm90b3R5cGUsZSksdCYmWWt0KHMsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHMsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksc31mdW5jdGlvbiBBcmUocyxlKXt2YXIgdD10eXBlb2YgU3ltYm9sPCJ1IiYmc1tTeW1ib2wuaXRlcmF0b3JdfHxzWyJAQGl0ZXJhdG9yIl07aWYoIXQpe2lmKEFycmF5LmlzQXJyYXkocyl8fCh0PXE1ZShzKSl8fGUmJnMmJnR5cGVvZiBzLmxlbmd0aD09Im51bWJlciIpe3QmJihzPXQpO3ZhciBhPTAscj1pKGZ1bmN0aW9uKCl7fSwiRiIpO3JldHVybntzOnIsbjppKGZ1bmN0aW9uKCl7cmV0dXJuIGE+PXMubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTpzW2ErK119fSwibiIpLGU6aShmdW5jdGlvbihwKXt0aHJvdyBwfSwiZSIpLGY6cn19dGhyb3cgbmV3IFR5cGVFcnJvcihgSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLgpJbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuYCl9dmFyIG4sbz0hMCxsPSExO3JldHVybntzOmkoZnVuY3Rpb24oKXt0PXQuY2FsbChzKX0sInMiKSxuOmkoZnVuY3Rpb24oKXt2YXIgcD10Lm5leHQoKTtyZXR1cm4gbz1wLmRvbmUscH0sIm4iKSxlOmkoZnVuY3Rpb24ocCl7bD0hMCxuPXB9LCJlIiksZjppKGZ1bmN0aW9uKCl7dHJ5e298fHQucmV0dXJuPT1udWxsfHx0LnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBufX0sImYiKX19ZnVuY3Rpb24gaGEocyxlLHQpe3JldHVybihlPVhrdChlKSlpbiBzP09iamVjdC5kZWZpbmVQcm9wZXJ0eShzLGUse3ZhbHVlOnQsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpzW2VdPXQsc31mdW5jdGlvbiBxcWEocyxlKXtpZih0eXBlb2YgZSE9ImZ1bmN0aW9uIiYmZSE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtzLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6cyx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHMsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZSYmTnJlKHMsZSl9ZnVuY3Rpb24ganFhKHMpe2lmKHR5cGVvZiBTeW1ib2w8InUiJiZzW1N5bWJvbC5pdGVyYXRvcl0hPW51bGx8fHNbIkBAaXRlcmF0b3IiXSE9bnVsbClyZXR1cm4gQXJyYXkuZnJvbShzKX1mdW5jdGlvbiBWcWEocyxlKXt2YXIgdD1zPT1udWxsP251bGw6dHlwZW9mIFN5bWJvbDwidSImJnNbU3ltYm9sLml0ZXJhdG9yXXx8c1siQEBpdGVyYXRvciJdO2lmKHQhPW51bGwpe3ZhciBhLHIsbixvLGw9W10scD0hMCxkPSExO3RyeXtpZihuPSh0PXQuY2FsbChzKSkubmV4dCxlPT09MCl7aWYoT2JqZWN0KHQpIT09dClyZXR1cm47cD0hMX1lbHNlIGZvcig7IShwPShhPW4uY2FsbCh0KSkuZG9uZSkmJihsLnB1c2goYS52YWx1ZSksbC5sZW5ndGghPT1lKTtwPSEwKTt9Y2F0Y2godSl7ZD0hMCxyPXV9ZmluYWxseXt0cnl7aWYoIXAmJnQucmV0dXJuIT1udWxsJiYobz10LnJldHVybigpLE9iamVjdChvKSE9PW8pKXJldHVybn1maW5hbGx5e2lmKGQpdGhyb3cgcn19cmV0dXJuIGx9fWZ1bmN0aW9uIFVxYSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuCkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5gKX1mdW5jdGlvbiBXcWEoKXt0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS4KSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLmApfWZ1bmN0aW9uIFprdChzLGUpe3ZhciB0PU9iamVjdC5rZXlzKHMpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7ZSYmKGE9YS5maWx0ZXIoZnVuY3Rpb24ocil7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocyxyKS5lbnVtZXJhYmxlfSkpLHQucHVzaC5hcHBseSh0LGEpfXJldHVybiB0fWZ1bmN0aW9uIGR0KHMpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciB0PWFyZ3VtZW50c1tlXSE9bnVsbD9hcmd1bWVudHNbZV06e307ZSUyP1prdChPYmplY3QodCksITApLmZvckVhY2goZnVuY3Rpb24oYSl7aGEocyxhLHRbYV0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMocyxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSk6Wmt0KE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbihhKXtPYmplY3QuZGVmaW5lUHJvcGVydHkocyxhLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxhKSl9KX1yZXR1cm4gc31mdW5jdGlvbiBOcmUocyxlKXtyZXR1cm4gTnJlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHQsYSl7cmV0dXJuIHQuX19wcm90b19fPWEsdH0sTnJlKHMsZSl9ZnVuY3Rpb24gUnJlKHMsZSl7cmV0dXJuIE9xYShzKXx8VnFhKHMsZSl8fHE1ZShzLGUpfHxVcWEoKX1mdW5jdGlvbiBCMShzKXtyZXR1cm4gRnFhKHMpfHxqcWEocyl8fHE1ZShzKXx8V3FhKCl9ZnVuY3Rpb24gR3FhKHMsZSl7aWYodHlwZW9mIHMhPSJvYmplY3QifHwhcylyZXR1cm4gczt2YXIgdD1zW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodCE9PXZvaWQgMCl7dmFyIGE9dC5jYWxsKHMsZXx8ImRlZmF1bHQiKTtpZih0eXBlb2YgYSE9Im9iamVjdCIpcmV0dXJuIGE7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oZT09PSJzdHJpbmciP1N0cmluZzpOdW1iZXIpKHMpfWZ1bmN0aW9uIFhrdChzKXt2YXIgZT1HcWEocywic3RyaW5nIik7cmV0dXJuIHR5cGVvZiBlPT0ic3ltYm9sIj9lOmUrIiJ9ZnVuY3Rpb24gT3JlKHMpeyJAYmFiZWwvaGVscGVycyAtIHR5cGVvZiI7cmV0dXJuIE9yZT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0eXBlb2YgU3ltYm9sLml0ZXJhdG9yPT0ic3ltYm9sIj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZ0eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sT3JlKHMpfWZ1bmN0aW9uIHE1ZShzLGUpe2lmKHMpe2lmKHR5cGVvZiBzPT0ic3RyaW5nIilyZXR1cm4gSDVlKHMsZSk7dmFyIHQ9e30udG9TdHJpbmcuY2FsbChzKS5zbGljZSg4LC0xKTtyZXR1cm4gdD09PSJPYmplY3QiJiZzLmNvbnN0cnVjdG9yJiYodD1zLmNvbnN0cnVjdG9yLm5hbWUpLHQ9PT0iTWFwInx8dD09PSJTZXQiP0FycmF5LmZyb20ocyk6dD09PSJBcmd1bWVudHMifHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdCh0KT9INWUocyxlKTp2b2lkIDB9fWZ1bmN0aW9uIGFuKCl7YW49aShmdW5jdGlvbihyLG4pe3JldHVybiBuZXcgdChyLHZvaWQgMCxuKX0sIl93cmFwUmVnRXhwIik7dmFyIHM9UmVnRXhwLnByb3RvdHlwZSxlPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHQocixuLG8pe3ZhciBsPVJlZ0V4cChyLG4pO3JldHVybiBlLnNldChsLG98fGUuZ2V0KHIpKSxOcmUobCx0LnByb3RvdHlwZSl9aSh0LCJCYWJlbFJlZ0V4cCIpO2Z1bmN0aW9uIGEocixuKXt2YXIgbz1lLmdldChuKTtyZXR1cm4gT2JqZWN0LmtleXMobykucmVkdWNlKGZ1bmN0aW9uKGwscCl7dmFyIGQ9b1twXTtpZih0eXBlb2YgZD09Im51bWJlciIpbFtwXT1yW2RdO2Vsc2V7Zm9yKHZhciB1PTA7cltkW3VdXT09PXZvaWQgMCYmdSsxPGQubGVuZ3RoOyl1Kys7bFtwXT1yW2RbdV1dfXJldHVybiBsfSxPYmplY3QuY3JlYXRlKG51bGwpKX1yZXR1cm4gaShhLCJidWlsZEdyb3VwcyIpLHFxYSh0LFJlZ0V4cCksdC5wcm90b3R5cGUuZXhlYz1mdW5jdGlvbihyKXt2YXIgbj1zLmV4ZWMuY2FsbCh0aGlzLHIpO2lmKG4pe24uZ3JvdXBzPWEobix0aGlzKTt2YXIgbz1uLmluZGljZXM7byYmKG8uZ3JvdXBzPWEobyx0aGlzKSl9cmV0dXJuIG59LHQucHJvdG90eXBlW1N5bWJvbC5yZXBsYWNlXT1mdW5jdGlvbihyLG4pe2lmKHR5cGVvZiBuPT0ic3RyaW5nIil7dmFyIG89ZS5nZXQodGhpcyk7cmV0dXJuIHNbU3ltYm9sLnJlcGxhY2VdLmNhbGwodGhpcyxyLG4ucmVwbGFjZSgvXCQ8KFtePl0rKSg+fCQpL2csZnVuY3Rpb24ocCxkLHUpe2lmKHU9PT0iIilyZXR1cm4gcDt2YXIgYz1vW2RdO3JldHVybiBBcnJheS5pc0FycmF5KGMpPyIkIitjLmpvaW4oIiQiKTp0eXBlb2YgYz09Im51bWJlciI/IiQiK2M6IiJ9KSl9aWYodHlwZW9mIG49PSJmdW5jdGlvbiIpe3ZhciBsPXRoaXM7cmV0dXJuIHNbU3ltYm9sLnJlcGxhY2VdLmNhbGwodGhpcyxyLGZ1bmN0aW9uKCl7dmFyIHA9YXJndW1lbnRzO3JldHVybiB0eXBlb2YgcFtwLmxlbmd0aC0xXSE9Im9iamVjdCImJihwPVtdLnNsaWNlLmNhbGwocCkpLnB1c2goYShwLGwpKSxuLmFwcGx5KHRoaXMscCl9KX1yZXR1cm4gc1tTeW1ib2wucmVwbGFjZV0uY2FsbCh0aGlzLHIsbil9LGFuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBIayhzKXtyZXR1cm4gbmV3IFByb3h5KHMse2dldDppKGZ1bmN0aW9uKHQsYSl7cmV0dXJuIGEgaW4gdD90W2FdOnRbX29dfSwiZ2V0Iil9KX1mdW5jdGlvbiBBVmEocyl7dmFyIGU9ZGkucXVlcnlTZWxlY3Rvcigic2NyaXB0WyIrcysiXSIpO2lmKGUpcmV0dXJuIGUuZ2V0QXR0cmlidXRlKHMpfWZ1bmN0aW9uIE5WYShzKXtyZXR1cm4gcz09PSIiPyEwOnM9PT0iZmFsc2UiPyExOnM9PT0idHJ1ZSI/ITA6c31mdW5jdGlvbiBSVmEocyl7cmV0dXJuIGprLnB1c2gocyksZnVuY3Rpb24oKXtqay5zcGxpY2UoamsuaW5kZXhPZihzKSwxKX19ZnVuY3Rpb24gT1ZhKHMpe2lmKCEoIXN8fCFCMCkpe3ZhciBlPWRpLmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7ZS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJ0ZXh0L2NzcyIpLGUuaW5uZXJIVE1MPXM7Zm9yKHZhciB0PWRpLmhlYWQuY2hpbGROb2RlcyxhPW51bGwscj10Lmxlbmd0aC0xO3I+LTE7ci0tKXt2YXIgbj10W3JdLG89KG4udGFnTmFtZXx8IiIpLnRvVXBwZXJDYXNlKCk7WyJTVFlMRSIsIkxJTksiXS5pbmRleE9mKG8pPi0xJiYoYT1uKX1yZXR1cm4gZGkuaGVhZC5pbnNlcnRCZWZvcmUoZSxhKSxzfX1mdW5jdGlvbiBIU3QoKXtmb3IodmFyIHM9MTIsZT0iIjtzLS0gPjA7KWUrPUZWYVtNYXRoLnJhbmRvbSgpKjYyfDBdO3JldHVybiBlfWZ1bmN0aW9uIGtiKHMpe2Zvcih2YXIgZT1bXSx0PShzfHxbXSkubGVuZ3RoPj4+MDt0LS07KWVbdF09c1t0XTtyZXR1cm4gZX1mdW5jdGlvbiBhOGUocyl7cmV0dXJuIHMuY2xhc3NMaXN0P2tiKHMuY2xhc3NMaXN0KToocy5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKS5zcGxpdCgiICIpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZX0pfWZ1bmN0aW9uIHFTdChzKXtyZXR1cm4iIi5jb25jYXQocykucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIEJWYShzKXtyZXR1cm4gT2JqZWN0LmtleXMoc3x8e30pLnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiBlKyIiLmNvbmNhdCh0LCc9IicpLmNvbmNhdChxU3Qoc1t0XSksJyIgJyl9LCIiKS50cmltKCl9ZnVuY3Rpb24gSHJlKHMpe3JldHVybiBPYmplY3Qua2V5cyhzfHx7fSkucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrIiIuY29uY2F0KHQsIjogIikuY29uY2F0KHNbdF0udHJpbSgpLCI7Iil9LCIiKX1mdW5jdGlvbiBzOGUocyl7cmV0dXJuIHMuc2l6ZSE9PU1kLnNpemV8fHMueCE9PU1kLnh8fHMueSE9PU1kLnl8fHMucm90YXRlIT09TWQucm90YXRlfHxzLmZsaXBYfHxzLmZsaXBZfWZ1bmN0aW9uIEhWYShzKXt2YXIgZT1zLnRyYW5zZm9ybSx0PXMuY29udGFpbmVyV2lkdGgsYT1zLmljb25XaWR0aCxyPXt0cmFuc2Zvcm06InRyYW5zbGF0ZSgiLmNvbmNhdCh0LzIsIiAyNTYpIil9LG49InRyYW5zbGF0ZSgiLmNvbmNhdChlLngqMzIsIiwgIikuY29uY2F0KGUueSozMiwiKSAiKSxvPSJzY2FsZSgiLmNvbmNhdChlLnNpemUvMTYqKGUuZmxpcFg/LTE6MSksIiwgIikuY29uY2F0KGUuc2l6ZS8xNiooZS5mbGlwWT8tMToxKSwiKSAiKSxsPSJyb3RhdGUoIi5jb25jYXQoZS5yb3RhdGUsIiAwIDApIikscD17dHJhbnNmb3JtOiIiLmNvbmNhdChuLCIgIikuY29uY2F0KG8sIiAiKS5jb25jYXQobCl9LGQ9e3RyYW5zZm9ybToidHJhbnNsYXRlKCIuY29uY2F0KGEvMiotMSwiIC0yNTYpIil9O3JldHVybntvdXRlcjpyLGlubmVyOnAscGF0aDpkfX1mdW5jdGlvbiBxVmEocyl7dmFyIGU9cy50cmFuc2Zvcm0sdD1zLndpZHRoLGE9dD09PXZvaWQgMD9HNWU6dCxyPXMuaGVpZ2h0LG49cj09PXZvaWQgMD9HNWU6cixvPXMuc3RhcnRDZW50ZXJlZCxsPW89PT12b2lkIDA/ITE6byxwPSIiO3JldHVybiBsJiZyU3Q/cCs9InRyYW5zbGF0ZSgiLmNvbmNhdChlLngvbGgtYS8yLCJlbSwgIikuY29uY2F0KGUueS9saC1uLzIsImVtKSAiKTpsP3ArPSJ0cmFuc2xhdGUoY2FsYygtNTAlICsgIi5jb25jYXQoZS54L2xoLCJlbSksIGNhbGMoLTUwJSArICIpLmNvbmNhdChlLnkvbGgsImVtKSkgIik6cCs9InRyYW5zbGF0ZSgiLmNvbmNhdChlLngvbGgsImVtLCAiKS5jb25jYXQoZS55L2xoLCJlbSkgIikscCs9InNjYWxlKCIuY29uY2F0KGUuc2l6ZS9saCooZS5mbGlwWD8tMToxKSwiLCAiKS5jb25jYXQoZS5zaXplL2xoKihlLmZsaXBZPy0xOjEpLCIpICIpLHArPSJyb3RhdGUoIi5jb25jYXQoZS5yb3RhdGUsImRlZykgIikscH1mdW5jdGlvbiBqU3QoKXt2YXIgcz1MU3QsZT1FU3QsdD1XdC5jc3NQcmVmaXgsYT1XdC5yZXBsYWNlbWVudENsYXNzLHI9alZhO2lmKHQhPT1zfHxhIT09ZSl7dmFyIG49bmV3IFJlZ0V4cCgiXFwuIi5jb25jYXQocywiXFwtIiksImciKSxvPW5ldyBSZWdFeHAoIlxcLS0iLmNvbmNhdChzLCJcXC0iKSwiZyIpLGw9bmV3IFJlZ0V4cCgiXFwuIi5jb25jYXQoZSksImciKTtyPXIucmVwbGFjZShuLCIuIi5jb25jYXQodCwiLSIpKS5yZXBsYWNlKG8sIi0tIi5jb25jYXQodCwiLSIpKS5yZXBsYWNlKGwsIi4iLmNvbmNhdChhKSl9cmV0dXJuIHJ9ZnVuY3Rpb24gaThlKCl7V3QuYXV0b0FkZENzcyYmIVZTdCYmKE9WYShqU3QoKSksVlN0PSEwKX1mdW5jdGlvbiBVVmEocyl7QjAmJihxcmU/c2V0VGltZW91dChzLDApOlVTdC5wdXNoKHMpKX1mdW5jdGlvbiBWayhzKXt2YXIgZT1zLnRhZyx0PXMuYXR0cmlidXRlcyxhPXQ9PT12b2lkIDA/e306dCxyPXMuY2hpbGRyZW4sbj1yPT09dm9pZCAwP1tdOnI7cmV0dXJuIHR5cGVvZiBzPT0ic3RyaW5nIj9xU3Qocyk6IjwiLmNvbmNhdChlLCIgIikuY29uY2F0KEJWYShhKSwiPiIpLmNvbmNhdChuLm1hcChWaykuam9pbigiIiksIjwvIikuY29uY2F0KGUsIj4iKX1mdW5jdGlvbiBHU3QocyxlLHQpe2lmKHMmJnNbZV0mJnNbZV1bdF0pcmV0dXJue3ByZWZpeDplLGljb25OYW1lOnQsaWNvbjpzW2VdW3RdfX1mdW5jdGlvbiBLU3Qocyl7cmV0dXJuIEIxKHMpLmxlbmd0aCE9PTE/bnVsbDpzLmNvZGVQb2ludEF0KDApLnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBZU3Qocyl7cmV0dXJuIE9iamVjdC5rZXlzKHMpLnJlZHVjZShmdW5jdGlvbihlLHQpe3ZhciBhPXNbdF0scj0hIWEuaWNvbjtyZXR1cm4gcj9lW2EuaWNvbk5hbWVdPWEuaWNvbjplW3RdPWEsZX0se30pfWZ1bmN0aW9uIG84ZShzLGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTp7fSxhPXQuc2tpcEhvb2tzLHI9YT09PXZvaWQgMD8hMTphLG49WVN0KGUpO3R5cGVvZiBIMS5ob29rcy5hZGRQYWNrPT0iZnVuY3Rpb24iJiYhcj9IMS5ob29rcy5hZGRQYWNrKHMsWVN0KGUpKTpIMS5zdHlsZXNbc109ZHQoZHQoe30sSDEuc3R5bGVzW3NdfHx7fSksbikscz09PSJmYXMiJiZvOGUoImZhIixlKX1mdW5jdGlvbiBZVmEocyl7cmV0dXJufklWYS5pbmRleE9mKHMpfWZ1bmN0aW9uIFpWYShzLGUpe3ZhciB0PWUuc3BsaXQoIi0iKSxhPXRbMF0scj10LnNsaWNlKDEpLmpvaW4oIi0iKTtyZXR1cm4gYT09PXMmJnIhPT0iIiYmIVlWYShyKT9yOm51bGx9ZnVuY3Rpb24gYzhlKHMsZSl7cmV0dXJuKFhTdFtzXXx8e30pW2VdfWZ1bmN0aW9uIFhWYShzLGUpe3JldHVybihRU3Rbc118fHt9KVtlXX1mdW5jdGlvbiBZMyhzLGUpe3JldHVybih0X3Rbc118fHt9KVtlXX1mdW5jdGlvbiBzX3Qocyl7cmV0dXJuIEpTdFtzXXx8e3ByZWZpeDpudWxsLGljb25OYW1lOm51bGx9fWZ1bmN0aW9uIFFWYShzKXt2YXIgZT1lX3Rbc10sdD1jOGUoImZhcyIscyk7cmV0dXJuIGV8fCh0P3twcmVmaXg6ImZhcyIsaWNvbk5hbWU6dH06bnVsbCl8fHtwcmVmaXg6bnVsbCxpY29uTmFtZTpudWxsfX1mdW5jdGlvbiBjaCgpe3JldHVybiBsOGV9ZnVuY3Rpb24gSlZhKHMpe3ZhciBlPV9vLHQ9WlN0LnJlZHVjZShmdW5jdGlvbihhLHIpe3JldHVybiBhW3JdPSIiLmNvbmNhdChXdC5jc3NQcmVmaXgsIi0iKS5jb25jYXQociksYX0se30pO3JldHVybiBNU3QuZm9yRWFjaChmdW5jdGlvbihhKXsocy5pbmNsdWRlcyh0W2FdKXx8cy5zb21lKGZ1bmN0aW9uKHIpe3JldHVybiBLVmFbYV0uaW5jbHVkZXMocil9KSkmJihlPWEpfSksZX1mdW5jdGlvbiBqcmUocyl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9LHQ9ZS5mYW1pbHksYT10PT09dm9pZCAwP19vOnQscj0kVmFbYV1bc107aWYoYT09PUJrJiYhcylyZXR1cm4iZmFkIjt2YXIgbj1SU3RbYV1bc118fFJTdFthXVtyXSxvPXMgaW4gSDEuc3R5bGVzP3M6bnVsbCxsPW58fG98fG51bGw7cmV0dXJuIGx9ZnVuY3Rpb24gZVVhKHMpe3ZhciBlPVtdLHQ9bnVsbDtyZXR1cm4gcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciByPVpWYShXdC5jc3NQcmVmaXgsYSk7cj90PXI6YSYmZS5wdXNoKGEpfSkse2ljb25OYW1lOnQscmVzdDplfX1mdW5jdGlvbiByX3Qocyl7cmV0dXJuIHMuc29ydCgpLmZpbHRlcihmdW5jdGlvbihlLHQsYSl7cmV0dXJuIGEuaW5kZXhPZihlKT09PXR9KX1mdW5jdGlvbiBWcmUocyl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9LHQ9ZS5za2lwTG9va3VwcyxhPXQ9PT12b2lkIDA/ITE6dCxyPW51bGwsbj1yX3Qocy5maWx0ZXIoZnVuY3Rpb24odil7cmV0dXJuIG9fdC5pbmNsdWRlcyh2KX0pKSxvPXJfdChzLmZpbHRlcihmdW5jdGlvbih2KXtyZXR1cm4hb190LmluY2x1ZGVzKHYpfSkpLGw9bi5maWx0ZXIoZnVuY3Rpb24odil7cmV0dXJuIHI9diwhblN0LmluY2x1ZGVzKHYpfSkscD1ScmUobCwxKSxkPXBbMF0sdT1kPT09dm9pZCAwP251bGw6ZCxjPUpWYShuKSxiPWR0KGR0KHt9LGVVYShvKSkse30se3ByZWZpeDpqcmUodSx7ZmFtaWx5OmN9KX0pO3JldHVybiBkdChkdChkdCh7fSxiKSxpVWEoe3ZhbHVlczpzLGZhbWlseTpjLHN0eWxlczpVayxjb25maWc6V3QsY2Fub25pY2FsOmIsZ2l2ZW5QcmVmaXg6cn0pKSx0VWEoYSxyLGIpKX1mdW5jdGlvbiB0VWEocyxlLHQpe3ZhciBhPXQucHJlZml4LHI9dC5pY29uTmFtZTtpZihzfHwhYXx8IXIpcmV0dXJue3ByZWZpeDphLGljb25OYW1lOnJ9O3ZhciBuPWU9PT0iZmEiP3NfdChyKTp7fSxvPVkzKGEscik7cmV0dXJuIHI9bi5pY29uTmFtZXx8b3x8cixhPW4ucHJlZml4fHxhLGE9PT0iZmFyIiYmIVVrLmZhciYmVWsuZmFzJiYhV3QuYXV0b0ZldGNoU3ZnJiYoYT0iZmFzIikse3ByZWZpeDphLGljb25OYW1lOnJ9fWZ1bmN0aW9uIGlVYShzKXt2YXIgZT1zLnZhbHVlcyx0PXMuZmFtaWx5LGE9cy5jYW5vbmljYWwscj1zLmdpdmVuUHJlZml4LG49cj09PXZvaWQgMD8iIjpyLG89cy5zdHlsZXMsbD1vPT09dm9pZCAwP3t9Om8scD1zLmNvbmZpZyxkPXA9PT12b2lkIDA/e306cCx1PXQ9PT1CayxjPWUuaW5jbHVkZXMoImZhLWR1b3RvbmUiKXx8ZS5pbmNsdWRlcygiZmFkIiksYj1kLmZhbWlseURlZmF1bHQ9PT0iZHVvdG9uZSIsdj1hLnByZWZpeD09PSJmYWQifHxhLnByZWZpeD09PSJmYS1kdW90b25lIjtpZighdSYmKGN8fGJ8fHYpJiYoYS5wcmVmaXg9ImZhZCIpLChlLmluY2x1ZGVzKCJmYS1icmFuZHMiKXx8ZS5pbmNsdWRlcygiZmFiIikpJiYoYS5wcmVmaXg9ImZhYiIpLCFhLnByZWZpeCYmYVVhLmluY2x1ZGVzKHQpKXt2YXIgeD1PYmplY3Qua2V5cyhsKS5maW5kKGZ1bmN0aW9uKGYpe3JldHVybiBzVWEuaW5jbHVkZXMoZil9KTtpZih4fHxkLmF1dG9GZXRjaFN2Zyl7dmFyIG09eGphLmdldCh0KS5kZWZhdWx0U2hvcnRQcmVmaXhJZDthLnByZWZpeD1tLGEuaWNvbk5hbWU9WTMoYS5wcmVmaXgsYS5pY29uTmFtZSl8fGEuaWNvbk5hbWV9fXJldHVybihhLnByZWZpeD09PSJmYSJ8fG49PT0iZmEiKSYmKGEucHJlZml4PWNoKCl8fCJmYXMiKSxhfWZ1bmN0aW9uIG5VYShzLGUpe3ZhciB0PWUubWl4b3V0c1RvO3JldHVybiBuX3Q9cyxTYj17fSxPYmplY3Qua2V5cyhfYikuZm9yRWFjaChmdW5jdGlvbihhKXtvVWEuaW5kZXhPZihhKT09PS0xJiZkZWxldGUgX2JbYV19KSxuX3QuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgcj1hLm1peG91dD9hLm1peG91dCgpOnt9O2lmKE9iamVjdC5rZXlzKHIpLmZvckVhY2goZnVuY3Rpb24obyl7dHlwZW9mIHJbb109PSJmdW5jdGlvbiImJih0W29dPXJbb10pLE9yZShyW29dKT09PSJvYmplY3QiJiZPYmplY3Qua2V5cyhyW29dKS5mb3JFYWNoKGZ1bmN0aW9uKGwpe3Rbb118fCh0W29dPXt9KSx0W29dW2xdPXJbb11bbF19KX0pLGEuaG9va3Mpe3ZhciBuPWEuaG9va3MoKTtPYmplY3Qua2V5cyhuKS5mb3JFYWNoKGZ1bmN0aW9uKG8pe1NiW29dfHwoU2Jbb109W10pLFNiW29dLnB1c2gobltvXSl9KX1hLnByb3ZpZGVzJiZhLnByb3ZpZGVzKF9iKX0pLHR9ZnVuY3Rpb24gZDhlKHMsZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsYT1uZXcgQXJyYXkodD4yP3QtMjowKSxyPTI7cjx0O3IrKylhW3ItMl09YXJndW1lbnRzW3JdO3ZhciBuPVNiW3NdfHxbXTtyZXR1cm4gbi5mb3JFYWNoKGZ1bmN0aW9uKG8pe2U9by5hcHBseShudWxsLFtlXS5jb25jYXQoYSkpfSksZX1mdW5jdGlvbiBaMyhzKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlPjE/ZS0xOjApLGE9MTthPGU7YSsrKXRbYS0xXT1hcmd1bWVudHNbYV07dmFyIHI9U2Jbc118fFtdO3IuZm9yRWFjaChmdW5jdGlvbihuKXtuLmFwcGx5KG51bGwsdCl9KX1mdW5jdGlvbiBkaCgpe3ZhciBzPWFyZ3VtZW50c1swXSxlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gX2Jbc10/X2Jbc10uYXBwbHkobnVsbCxlKTp2b2lkIDB9ZnVuY3Rpb24gdThlKHMpe3MucHJlZml4PT09ImZhIiYmKHMucHJlZml4PSJmYXMiKTt2YXIgZT1zLmljb25OYW1lLHQ9cy5wcmVmaXh8fGNoKCk7aWYoZSlyZXR1cm4gZT1ZMyh0LGUpfHxlLEdTdChsX3QuZGVmaW5pdGlvbnMsdCxlKXx8R1N0KEgxLnN0eWxlcyx0LGUpfWZ1bmN0aW9uIFVyZShzLGUpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocywiYWJzdHJhY3QiLHtnZXQ6ZX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzLCJodG1sIix7Z2V0OmkoZnVuY3Rpb24oKXtyZXR1cm4gcy5hYnN0cmFjdC5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIFZrKGEpfSl9LCJnZXQiKX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzLCJub2RlIix7Z2V0OmkoZnVuY3Rpb24oKXtpZihCMCl7dmFyIGE9ZGkuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIGEuaW5uZXJIVE1MPXMuaHRtbCxhLmNoaWxkcmVufX0sImdldCIpfSksc31mdW5jdGlvbiBwVWEocyl7dmFyIGU9cy5jaGlsZHJlbix0PXMubWFpbixhPXMubWFzayxyPXMuYXR0cmlidXRlcyxuPXMuc3R5bGVzLG89cy50cmFuc2Zvcm07aWYoczhlKG8pJiZ0LmZvdW5kJiYhYS5mb3VuZCl7dmFyIGw9dC53aWR0aCxwPXQuaGVpZ2h0LGQ9e3g6bC9wLzIseTouNX07ci5zdHlsZT1IcmUoZHQoZHQoe30sbikse30seyJ0cmFuc2Zvcm0tb3JpZ2luIjoiIi5jb25jYXQoZC54K28ueC8xNiwiZW0gIikuY29uY2F0KGQueStvLnkvMTYsImVtIil9KSl9cmV0dXJuW3t0YWc6InN2ZyIsYXR0cmlidXRlczpyLGNoaWxkcmVuOmV9XX1mdW5jdGlvbiBoVWEocyl7dmFyIGU9cy5wcmVmaXgsdD1zLmljb25OYW1lLGE9cy5jaGlsZHJlbixyPXMuYXR0cmlidXRlcyxuPXMuc3ltYm9sLG89bj09PSEwPyIiLmNvbmNhdChlLCItIikuY29uY2F0KFd0LmNzc1ByZWZpeCwiLSIpLmNvbmNhdCh0KTpuO3JldHVyblt7dGFnOiJzdmciLGF0dHJpYnV0ZXM6e3N0eWxlOiJkaXNwbGF5OiBub25lOyJ9LGNoaWxkcmVuOlt7dGFnOiJzeW1ib2wiLGF0dHJpYnV0ZXM6ZHQoZHQoe30scikse30se2lkOm99KSxjaGlsZHJlbjphfV19XX1mdW5jdGlvbiBmVWEocyl7dmFyIGU9WyJhcmlhLWxhYmVsIiwiYXJpYS1sYWJlbGxlZGJ5IiwidGl0bGUiLCJyb2xlIl07cmV0dXJuIGUuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gdCBpbiBzfSl9ZnVuY3Rpb24gcDhlKHMpe3ZhciBlPXMuaWNvbnMsdD1lLm1haW4sYT1lLm1hc2sscj1zLnByZWZpeCxuPXMuaWNvbk5hbWUsbz1zLnRyYW5zZm9ybSxsPXMuc3ltYm9sLHA9cy5tYXNrSWQsZD1zLmV4dHJhLHU9cy53YXRjaGFibGUsYz11PT09dm9pZCAwPyExOnUsYj1hLmZvdW5kP2E6dCx2PWIud2lkdGgseD1iLmhlaWdodCxtPVtXdC5yZXBsYWNlbWVudENsYXNzLG4/IiIuY29uY2F0KFd0LmNzc1ByZWZpeCwiLSIpLmNvbmNhdChuKToiIl0uZmlsdGVyKGZ1bmN0aW9uKEMpe3JldHVybiBkLmNsYXNzZXMuaW5kZXhPZihDKT09PS0xfSkuZmlsdGVyKGZ1bmN0aW9uKEMpe3JldHVybiBDIT09IiJ8fCEhQ30pLmNvbmNhdChkLmNsYXNzZXMpLmpvaW4oIiAiKSxmPXtjaGlsZHJlbjpbXSxhdHRyaWJ1dGVzOmR0KGR0KHt9LGQuYXR0cmlidXRlcykse30seyJkYXRhLXByZWZpeCI6ciwiZGF0YS1pY29uIjpuLGNsYXNzOm0scm9sZTpkLmF0dHJpYnV0ZXMucm9sZXx8ImltZyIsdmlld0JveDoiMCAwICIuY29uY2F0KHYsIiAiKS5jb25jYXQoeCl9KX07IWZVYShkLmF0dHJpYnV0ZXMpJiYhZC5hdHRyaWJ1dGVzWyJhcmlhLWhpZGRlbiJdJiYoZi5hdHRyaWJ1dGVzWyJhcmlhLWhpZGRlbiJdPSJ0cnVlIiksYyYmKGYuYXR0cmlidXRlc1tLM109IiIpO3ZhciB5PWR0KGR0KHt9LGYpLHt9LHtwcmVmaXg6cixpY29uTmFtZTpuLG1haW46dCxtYXNrOmEsbWFza0lkOnAsdHJhbnNmb3JtOm8sc3ltYm9sOmwsc3R5bGVzOmR0KHt9LGQuc3R5bGVzKX0pLE09YS5mb3VuZCYmdC5mb3VuZD9kaCgiZ2VuZXJhdGVBYnN0cmFjdE1hc2siLHkpfHx7Y2hpbGRyZW46W10sYXR0cmlidXRlczp7fX06ZGgoImdlbmVyYXRlQWJzdHJhY3RJY29uIix5KXx8e2NoaWxkcmVuOltdLGF0dHJpYnV0ZXM6e319LHo9TS5jaGlsZHJlbixOPU0uYXR0cmlidXRlcztyZXR1cm4geS5jaGlsZHJlbj16LHkuYXR0cmlidXRlcz1OLGw/aFVhKHkpOnBVYSh5KX1mdW5jdGlvbiBjX3Qocyl7dmFyIGU9cy5jb250ZW50LHQ9cy53aWR0aCxhPXMuaGVpZ2h0LHI9cy50cmFuc2Zvcm0sbj1zLmV4dHJhLG89cy53YXRjaGFibGUsbD1vPT09dm9pZCAwPyExOm8scD1kdChkdCh7fSxuLmF0dHJpYnV0ZXMpLHt9LHtjbGFzczpuLmNsYXNzZXMuam9pbigiICIpfSk7bCYmKHBbSzNdPSIiKTt2YXIgZD1kdCh7fSxuLnN0eWxlcyk7czhlKHIpJiYoZC50cmFuc2Zvcm09cVZhKHt0cmFuc2Zvcm06cixzdGFydENlbnRlcmVkOiEwLHdpZHRoOnQsaGVpZ2h0OmF9KSxkWyItd2Via2l0LXRyYW5zZm9ybSJdPWQudHJhbnNmb3JtKTt2YXIgdT1IcmUoZCk7dS5sZW5ndGg+MCYmKHAuc3R5bGU9dSk7dmFyIGM9W107cmV0dXJuIGMucHVzaCh7dGFnOiJzcGFuIixhdHRyaWJ1dGVzOnAsY2hpbGRyZW46W2VdfSksY31mdW5jdGlvbiBtVWEocyl7dmFyIGU9cy5jb250ZW50LHQ9cy5leHRyYSxhPWR0KGR0KHt9LHQuYXR0cmlidXRlcykse30se2NsYXNzOnQuY2xhc3Nlcy5qb2luKCIgIil9KSxyPUhyZSh0LnN0eWxlcyk7ci5sZW5ndGg+MCYmKGEuc3R5bGU9cik7dmFyIG49W107cmV0dXJuIG4ucHVzaCh7dGFnOiJzcGFuIixhdHRyaWJ1dGVzOmEsY2hpbGRyZW46W2VdfSksbn1mdW5jdGlvbiBmOGUocyl7dmFyIGU9c1swXSx0PXNbMV0sYT1zLnNsaWNlKDQpLHI9UnJlKGEsMSksbj1yWzBdLG89bnVsbDtyZXR1cm4gQXJyYXkuaXNBcnJheShuKT9vPXt0YWc6ImciLGF0dHJpYnV0ZXM6e2NsYXNzOiIiLmNvbmNhdChXdC5jc3NQcmVmaXgsIi0iKS5jb25jYXQodDhlLkdST1VQKX0sY2hpbGRyZW46W3t0YWc6InBhdGgiLGF0dHJpYnV0ZXM6e2NsYXNzOiIiLmNvbmNhdChXdC5jc3NQcmVmaXgsIi0iKS5jb25jYXQodDhlLlNFQ09OREFSWSksZmlsbDoiY3VycmVudENvbG9yIixkOm5bMF19fSx7dGFnOiJwYXRoIixhdHRyaWJ1dGVzOntjbGFzczoiIi5jb25jYXQoV3QuY3NzUHJlZml4LCItIikuY29uY2F0KHQ4ZS5QUklNQVJZKSxmaWxsOiJjdXJyZW50Q29sb3IiLGQ6blsxXX19XX06bz17dGFnOiJwYXRoIixhdHRyaWJ1dGVzOntmaWxsOiJjdXJyZW50Q29sb3IiLGQ6bn19LHtmb3VuZDohMCx3aWR0aDplLGhlaWdodDp0LGljb246b319ZnVuY3Rpb24gYlVhKHMsZSl7IUFTdCYmIVd0LnNob3dNaXNzaW5nSWNvbnMmJnMmJmNvbnNvbGUuZXJyb3IoJ0ljb24gd2l0aCBuYW1lICInLmNvbmNhdChzLCciIGFuZCBwcmVmaXggIicpLmNvbmNhdChlLCciIGlzIG1pc3NpbmcuJykpfWZ1bmN0aW9uIG04ZShzLGUpe3ZhciB0PWU7cmV0dXJuIGU9PT0iZmEiJiZXdC5zdHlsZURlZmF1bHQhPT1udWxsJiYoZT1jaCgpKSxuZXcgUHJvbWlzZShmdW5jdGlvbihhLHIpe2lmKHQ9PT0iZmEiKXt2YXIgbj1zX3Qocyl8fHt9O3M9bi5pY29uTmFtZXx8cyxlPW4ucHJlZml4fHxlfWlmKHMmJmUmJmg4ZVtlXSYmaDhlW2VdW3NdKXt2YXIgbz1oOGVbZV1bc107cmV0dXJuIGEoZjhlKG8pKX1iVWEocyxlKSxhKGR0KGR0KHt9LGdVYSkse30se2ljb246V3Quc2hvd01pc3NpbmdJY29ucyYmcz9kaCgibWlzc2luZ0ljb25BYnN0cmFjdCIpfHx7fTp7fX0pKX0pfWZ1bmN0aW9uIHBfdChzKXt2YXIgZT1zLmdldEF0dHJpYnV0ZT9zLmdldEF0dHJpYnV0ZShLMyk6bnVsbDtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmcifWZ1bmN0aW9uIHhVYShzKXt2YXIgZT1zLmdldEF0dHJpYnV0ZT9zLmdldEF0dHJpYnV0ZShZNWUpOm51bGwsdD1zLmdldEF0dHJpYnV0ZT9zLmdldEF0dHJpYnV0ZShaNWUpOm51bGw7cmV0dXJuIGUmJnR9ZnVuY3Rpb24geVVhKHMpe3JldHVybiBzJiZzLmNsYXNzTGlzdCYmcy5jbGFzc0xpc3QuY29udGFpbnMmJnMuY2xhc3NMaXN0LmNvbnRhaW5zKFd0LnJlcGxhY2VtZW50Q2xhc3MpfWZ1bmN0aW9uIHdVYSgpe2lmKFd0LmF1dG9SZXBsYWNlU3ZnPT09ITApcmV0dXJuIEdyZS5yZXBsYWNlO3ZhciBzPUdyZVtXdC5hdXRvUmVwbGFjZVN2Z107cmV0dXJuIHN8fEdyZS5yZXBsYWNlfWZ1bmN0aW9uIGtVYShzKXtyZXR1cm4gZGkuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIscyl9ZnVuY3Rpb24gU1VhKHMpe3JldHVybiBkaS5jcmVhdGVFbGVtZW50KHMpfWZ1bmN0aW9uIGhfdChzKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e30sdD1lLmNlRm4sYT10PT09dm9pZCAwP3MudGFnPT09InN2ZyI/a1VhOlNVYTp0O2lmKHR5cGVvZiBzPT0ic3RyaW5nIilyZXR1cm4gZGkuY3JlYXRlVGV4dE5vZGUocyk7dmFyIHI9YShzLnRhZyk7T2JqZWN0LmtleXMocy5hdHRyaWJ1dGVzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihvKXtyLnNldEF0dHJpYnV0ZShvLHMuYXR0cmlidXRlc1tvXSl9KTt2YXIgbj1zLmNoaWxkcmVufHxbXTtyZXR1cm4gbi5mb3JFYWNoKGZ1bmN0aW9uKG8pe3IuYXBwZW5kQ2hpbGQoaF90KG8se2NlRm46YX0pKX0pLHJ9ZnVuY3Rpb24gX1VhKHMpe3ZhciBlPSIgIi5jb25jYXQocy5vdXRlckhUTUwsIiAiKTtyZXR1cm4gZT0iIi5jb25jYXQoZSwiRm9udCBBd2Vzb21lIGZvbnRhd2Vzb21lLmNvbSAiKSxlfWZ1bmN0aW9uIGZfdChzKXtzKCl9ZnVuY3Rpb24gbV90KHMsZSl7dmFyIHQ9dHlwZW9mIGU9PSJmdW5jdGlvbiI/ZTpXcmU7aWYocy5sZW5ndGg9PT0wKXQoKTtlbHNle3ZhciBhPWZfdDtXdC5tdXRhdGVBcHByb2FjaD09PUNWYSYmKGE9bmgucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxmX3QpLGEoZnVuY3Rpb24oKXt2YXIgcj13VWEoKSxuPWI4ZS5iZWdpbigibXV0YXRlIik7cy5tYXAociksbigpLHQoKX0pfX1mdW5jdGlvbiBnX3QoKXt2OGU9ITB9ZnVuY3Rpb24geDhlKCl7djhlPSExfWZ1bmN0aW9uIGJfdChzKXtpZihpU3QmJld0Lm9ic2VydmVNdXRhdGlvbnMpe3ZhciBlPXMudHJlZUNhbGxiYWNrLHQ9ZT09PXZvaWQgMD9XcmU6ZSxhPXMubm9kZUNhbGxiYWNrLHI9YT09PXZvaWQgMD9XcmU6YSxuPXMucHNldWRvRWxlbWVudHNDYWxsYmFjayxvPW49PT12b2lkIDA/V3JlOm4sbD1zLm9ic2VydmVNdXRhdGlvbnNSb290LHA9bD09PXZvaWQgMD9kaTpsO0tyZT1uZXcgaVN0KGZ1bmN0aW9uKGQpe2lmKCF2OGUpe3ZhciB1PWNoKCk7a2IoZCkuZm9yRWFjaChmdW5jdGlvbihjKXtpZihjLnR5cGU9PT0iY2hpbGRMaXN0IiYmYy5hZGRlZE5vZGVzLmxlbmd0aD4wJiYhcF90KGMuYWRkZWROb2Rlc1swXSkmJihXdC5zZWFyY2hQc2V1ZG9FbGVtZW50cyYmbyhjLnRhcmdldCksdChjLnRhcmdldCkpLGMudHlwZT09PSJhdHRyaWJ1dGVzIiYmYy50YXJnZXQucGFyZW50Tm9kZSYmV3Quc2VhcmNoUHNldWRvRWxlbWVudHMmJm8oW2MudGFyZ2V0XSwhMCksYy50eXBlPT09ImF0dHJpYnV0ZXMiJiZwX3QoYy50YXJnZXQpJiZ+UFZhLmluZGV4T2YoYy5hdHRyaWJ1dGVOYW1lKSlpZihjLmF0dHJpYnV0ZU5hbWU9PT0iY2xhc3MiJiZ4VWEoYy50YXJnZXQpKXt2YXIgYj1WcmUoYThlKGMudGFyZ2V0KSksdj1iLnByZWZpeCx4PWIuaWNvbk5hbWU7Yy50YXJnZXQuc2V0QXR0cmlidXRlKFk1ZSx2fHx1KSx4JiZjLnRhcmdldC5zZXRBdHRyaWJ1dGUoWjVlLHgpfWVsc2UgeVVhKGMudGFyZ2V0KSYmcihjLnRhcmdldCl9KX19KSxCMCYmS3JlLm9ic2VydmUocCx7Y2hpbGRMaXN0OiEwLGF0dHJpYnV0ZXM6ITAsY2hhcmFjdGVyRGF0YTohMCxzdWJ0cmVlOiEwfSl9fWZ1bmN0aW9uIE1VYSgpe0tyZSYmS3JlLmRpc2Nvbm5lY3QoKX1mdW5jdGlvbiB6VWEocyl7dmFyIGU9cy5nZXRBdHRyaWJ1dGUoInN0eWxlIiksdD1bXTtyZXR1cm4gZSYmKHQ9ZS5zcGxpdCgiOyIpLnJlZHVjZShmdW5jdGlvbihhLHIpe3ZhciBuPXIuc3BsaXQoIjoiKSxvPW5bMF0sbD1uLnNsaWNlKDEpO3JldHVybiBvJiZsLmxlbmd0aD4wJiYoYVtvXT1sLmpvaW4oIjoiKS50cmltKCkpLGF9LHt9KSksdH1mdW5jdGlvbiBDVWEocyl7dmFyIGU9cy5nZXRBdHRyaWJ1dGUoImRhdGEtcHJlZml4IiksdD1zLmdldEF0dHJpYnV0ZSgiZGF0YS1pY29uIiksYT1zLmlubmVyVGV4dCE9PXZvaWQgMD9zLmlubmVyVGV4dC50cmltKCk6IiIscj1WcmUoYThlKHMpKTtyZXR1cm4gci5wcmVmaXh8fChyLnByZWZpeD1jaCgpKSxlJiZ0JiYoci5wcmVmaXg9ZSxyLmljb25OYW1lPXQpLHIuaWNvbk5hbWUmJnIucHJlZml4fHwoci5wcmVmaXgmJmEubGVuZ3RoPjAmJihyLmljb25OYW1lPVhWYShyLnByZWZpeCxzLmlubmVyVGV4dCl8fGM4ZShyLnByZWZpeCxLU3Qocy5pbm5lclRleHQpKSksIXIuaWNvbk5hbWUmJld0LmF1dG9GZXRjaFN2ZyYmcy5maXJzdENoaWxkJiZzLmZpcnN0Q2hpbGQubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERSYmKHIuaWNvbk5hbWU9cy5maXJzdENoaWxkLmRhdGEpKSxyfWZ1bmN0aW9uIFRVYShzKXt2YXIgZT1rYihzLmF0dHJpYnV0ZXMpLnJlZHVjZShmdW5jdGlvbih0LGEpe3JldHVybiB0Lm5hbWUhPT0iY2xhc3MiJiZ0Lm5hbWUhPT0ic3R5bGUiJiYodFthLm5hbWVdPWEudmFsdWUpLHR9LHt9KTtyZXR1cm4gZX1mdW5jdGlvbiAkVWEoKXtyZXR1cm57aWNvbk5hbWU6bnVsbCxwcmVmaXg6bnVsbCx0cmFuc2Zvcm06TWQsc3ltYm9sOiExLG1hc2s6e2ljb25OYW1lOm51bGwscHJlZml4Om51bGwscmVzdDpbXX0sbWFza0lkOm51bGwsZXh0cmE6e2NsYXNzZXM6W10sc3R5bGVzOnt9LGF0dHJpYnV0ZXM6e319fX1mdW5jdGlvbiB2X3Qocyl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOntzdHlsZVBhcnNlcjohMH0sdD1DVWEocyksYT10Lmljb25OYW1lLHI9dC5wcmVmaXgsbj10LnJlc3Qsbz1UVWEocyksbD1kOGUoInBhcnNlTm9kZUF0dHJpYnV0ZXMiLHt9LHMpLHA9ZS5zdHlsZVBhcnNlcj96VWEocyk6W107cmV0dXJuIGR0KHtpY29uTmFtZTphLHByZWZpeDpyLHRyYW5zZm9ybTpNZCxtYXNrOntpY29uTmFtZTpudWxsLHByZWZpeDpudWxsLHJlc3Q6W119LG1hc2tJZDpudWxsLHN5bWJvbDohMSxleHRyYTp7Y2xhc3NlczpuLHN0eWxlczpwLGF0dHJpYnV0ZXM6b319LGwpfWZ1bmN0aW9uIHhfdChzKXt2YXIgZT1XdC5hdXRvUmVwbGFjZVN2Zz09PSJuZXN0Ij92X3Qocyx7c3R5bGVQYXJzZXI6ITF9KTp2X3Qocyk7cmV0dXJufmUuZXh0cmEuY2xhc3Nlcy5pbmRleE9mKE9TdCk/ZGgoImdlbmVyYXRlTGF5ZXJzVGV4dCIscyxlKTpkaCgiZ2VuZXJhdGVTdmdSZXBsYWNlbWVudE11dGF0aW9uIixzLGUpfWZ1bmN0aW9uIExVYSgpe3JldHVybltdLmNvbmNhdChCMSh6U3QpLEIxKCRTdCkpfWZ1bmN0aW9uIHlfdChzKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06bnVsbDtpZighQjApcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO3ZhciB0PWRpLmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QsYT1pKGZ1bmN0aW9uKGMpe3JldHVybiB0LmFkZCgiIi5jb25jYXQoUFN0LCItIikuY29uY2F0KGMpKX0sImhjbEFkZCIpLHI9aShmdW5jdGlvbihjKXtyZXR1cm4gdC5yZW1vdmUoIiIuY29uY2F0KFBTdCwiLSIpLmNvbmNhdChjKSl9LCJoY2xSZW1vdmUiKSxuPVd0LmF1dG9GZXRjaFN2Zz9MVWEoKTpuU3QuY29uY2F0KE9iamVjdC5rZXlzKERVYSkpO24uaW5jbHVkZXMoImZhIil8fG4ucHVzaCgiZmEiKTt2YXIgbz1bIi4iLmNvbmNhdChPU3QsIjpub3QoWyIpLmNvbmNhdChLMywiXSkiKV0uY29uY2F0KG4ubWFwKGZ1bmN0aW9uKHUpe3JldHVybiIuIi5jb25jYXQodSwiOm5vdChbIikuY29uY2F0KEszLCJdKSIpfSkpLmpvaW4oIiwgIik7aWYoby5sZW5ndGg9PT0wKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTt2YXIgbD1bXTt0cnl7bD1rYihzLnF1ZXJ5U2VsZWN0b3JBbGwobykpfWNhdGNoe31pZihsLmxlbmd0aD4wKWEoInBlbmRpbmciKSxyKCJjb21wbGV0ZSIpO2Vsc2UgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO3ZhciBwPWI4ZS5iZWdpbigib25UcmVlIiksZD1sLnJlZHVjZShmdW5jdGlvbih1LGMpe3RyeXt2YXIgYj14X3QoYyk7YiYmdS5wdXNoKGIpfWNhdGNoKHYpe0FTdHx8di5uYW1lPT09Ik1pc3NpbmdJY29uIiYmY29uc29sZS5lcnJvcih2KX1yZXR1cm4gdX0sW10pO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbih1LGMpe1Byb21pc2UuYWxsKGQpLnRoZW4oZnVuY3Rpb24oYil7bV90KGIsZnVuY3Rpb24oKXthKCJhY3RpdmUiKSxhKCJjb21wbGV0ZSIpLHIoInBlbmRpbmciKSx0eXBlb2YgZT09ImZ1bmN0aW9uIiYmZSgpLHAoKSx1KCl9KX0pLmNhdGNoKGZ1bmN0aW9uKGIpe3AoKSxjKGIpfSl9KX1mdW5jdGlvbiBFVWEocyl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOm51bGw7eF90KHMpLnRoZW4oZnVuY3Rpb24odCl7dCYmbV90KFt0XSxlKX0pfWZ1bmN0aW9uIFBVYShzKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9LGE9KGV8fHt9KS5pY29uP2U6dThlKGV8fHt9KSxyPXQubWFzaztyZXR1cm4gciYmKHI9KHJ8fHt9KS5pY29uP3I6dThlKHJ8fHt9KSkscyhhLGR0KGR0KHt9LHQpLHt9LHttYXNrOnJ9KSl9fWZ1bmN0aW9uIEJVYShzKXt2YXIgZT1zLnJlcGxhY2Uod190LCIiKTtyZXR1cm4gS1N0KEIxKGUpWzBdfHwiIil9ZnVuY3Rpb24gSFVhKHMpe3ZhciBlPXMuZ2V0UHJvcGVydHlWYWx1ZSgiZm9udC1mZWF0dXJlLXNldHRpbmdzIikuaW5jbHVkZXMoInNzMDEiKSx0PXMuZ2V0UHJvcGVydHlWYWx1ZSgiY29udGVudCIpLGE9dC5yZXBsYWNlKHdfdCwiIikscj1hLmNvZGVQb2ludEF0KDApLG49cj49a190WzBdJiZyPD1rX3RbMV0sbz1hLmxlbmd0aD09PTI/YVswXT09PWFbMV06ITE7cmV0dXJuIG58fG98fGV9ZnVuY3Rpb24gcVVhKHMsZSl7dmFyIHQ9cy5yZXBsYWNlKC9eWyciXXxbJyJdJC9nLCIiKS50b0xvd2VyQ2FzZSgpLGE9cGFyc2VJbnQoZSkscj1pc05hTihhKT8ibm9ybWFsIjphO3JldHVybih5OGVbdF18fHt9KVtyXXx8RlVhW3RdfWZ1bmN0aW9uIF9fdChzLGUpe3ZhciB0PSIiLmNvbmNhdCh6VmEpLmNvbmNhdChlLnJlcGxhY2UoIjoiLCItIikpO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihhLHIpe2lmKHMuZ2V0QXR0cmlidXRlKHQpIT09bnVsbClyZXR1cm4gYSgpO3ZhciBuPWtiKHMuY2hpbGRyZW4pLG89bi5maWx0ZXIoZnVuY3Rpb24oXyl7cmV0dXJuIF8uZ2V0QXR0cmlidXRlKEs1ZSk9PT1lfSlbMF0sbD1uaC5nZXRDb21wdXRlZFN0eWxlKHMsZSkscD1sLmdldFByb3BlcnR5VmFsdWUoImZvbnQtZmFtaWx5IiksZD1wLm1hdGNoKExWYSksdT1sLmdldFByb3BlcnR5VmFsdWUoImZvbnQtd2VpZ2h0IiksYz1sLmdldFByb3BlcnR5VmFsdWUoImNvbnRlbnQiKTtpZihvJiYhZClyZXR1cm4gcy5yZW1vdmVDaGlsZChvKSxhKCk7aWYoZCYmYyE9PSJub25lIiYmYyE9PSIiKXt2YXIgYj1sLmdldFByb3BlcnR5VmFsdWUoImNvbnRlbnQiKSx2PXFVYShwLHUpLHg9QlVhKGIpLG09ZFswXS5zdGFydHNXaXRoKCJGb250QXdlc29tZSIpLGY9SFVhKGwpLHk9YzhlKHYseCksTT15O2lmKG0pe3ZhciB6PVFWYSh4KTt6Lmljb25OYW1lJiZ6LnByZWZpeCYmKHk9ei5pY29uTmFtZSx2PXoucHJlZml4KX1pZih5JiYhZiYmKCFvfHxvLmdldEF0dHJpYnV0ZShZNWUpIT09dnx8by5nZXRBdHRyaWJ1dGUoWjVlKSE9PU0pKXtzLnNldEF0dHJpYnV0ZSh0LE0pLG8mJnMucmVtb3ZlQ2hpbGQobyk7dmFyIE49JFVhKCksQz1OLmV4dHJhO0MuYXR0cmlidXRlc1tLNWVdPWUsbThlKHksdikudGhlbihmdW5jdGlvbihfKXt2YXIgTz1wOGUoZHQoZHQoe30sTikse30se2ljb25zOnttYWluOl8sbWFzazppX3QoKX0scHJlZml4OnYsaWNvbk5hbWU6TSxleHRyYTpDLHdhdGNoYWJsZTohMH0pKSwkPWRpLmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJzdmciKTtlPT09Ijo6YmVmb3JlIj9zLmluc2VydEJlZm9yZSgkLHMuZmlyc3RDaGlsZCk6cy5hcHBlbmRDaGlsZCgkKSwkLm91dGVySFRNTD1PLm1hcChmdW5jdGlvbihFKXtyZXR1cm4gVmsoRSl9KS5qb2luKGAKYCkscy5yZW1vdmVBdHRyaWJ1dGUodCksYSgpfSkuY2F0Y2gocil9ZWxzZSBhKCl9ZWxzZSBhKCl9KX1mdW5jdGlvbiBqVWEocyl7cmV0dXJuIFByb21pc2UuYWxsKFtfX3QocywiOjpiZWZvcmUiKSxfX3QocywiOjphZnRlciIpXSl9ZnVuY3Rpb24gVlVhKHMpe3JldHVybiBzLnBhcmVudE5vZGUhPT1kb2N1bWVudC5oZWFkJiYhflRWYS5pbmRleE9mKHMudGFnTmFtZS50b1VwcGVyQ2FzZSgpKSYmIXMuZ2V0QXR0cmlidXRlKEs1ZSkmJighcy5wYXJlbnROb2RlfHxzLnBhcmVudE5vZGUudGFnTmFtZSE9PSJzdmciKX1mdW5jdGlvbiBNX3Qocyl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOiExO2lmKEIwKXt2YXIgdDtpZihlKXQ9cztlbHNlIGlmKFd0LnNlYXJjaFBzZXVkb0VsZW1lbnRzRnVsbFNjYW4pdD1zLnF1ZXJ5U2VsZWN0b3JBbGwoIioiKTtlbHNle3ZhciBhPW5ldyBTZXQscj1BcmUoZG9jdW1lbnQuc3R5bGVTaGVldHMpLG47dHJ5e2ZvcihyLnMoKTshKG49ci5uKCkpLmRvbmU7KXt2YXIgbz1uLnZhbHVlO3RyeXt2YXIgbD1BcmUoby5jc3NSdWxlcykscDt0cnl7Zm9yKGwucygpOyEocD1sLm4oKSkuZG9uZTspe3ZhciBkPXAudmFsdWUsdT1XVWEoZC5zZWxlY3RvclRleHQpLGM9QXJlKHUpLGI7dHJ5e2ZvcihjLnMoKTshKGI9Yy5uKCkpLmRvbmU7KXt2YXIgdj1iLnZhbHVlO2EuYWRkKHYpfX1jYXRjaChtKXtjLmUobSl9ZmluYWxseXtjLmYoKX19fWNhdGNoKG0pe2wuZShtKX1maW5hbGx5e2wuZigpfX1jYXRjaChtKXtXdC5zZWFyY2hQc2V1ZG9FbGVtZW50c1dhcm5pbmdzJiZjb25zb2xlLndhcm4oIkZvbnQgQXdlc29tZTogY2Fubm90IHBhcnNlIHN0eWxlc2hlZXQ6ICIuY29uY2F0KG8uaHJlZiwiICgiKS5jb25jYXQobS5tZXNzYWdlLGApCklmIGl0IGRlY2xhcmVzIGFueSBGb250IEF3ZXNvbWUgQ1NTIHBzZXVkby1lbGVtZW50cywgdGhleSB3aWxsIG5vdCBiZSByZW5kZXJlZCBhcyBTVkcgaWNvbnMuIEFkZCBjcm9zc29yaWdpbj0iYW5vbnltb3VzIiB0byB0aGUgPGxpbms+LCBlbmFibGUgc2VhcmNoUHNldWRvRWxlbWVudHNGdWxsU2NhbiBmb3Igc2xvd2VyIGJ1dCBtb3JlIHRob3JvdWdoIERPTSBwYXJzaW5nLCBvciBzdXBwcmVzcyB0aGlzIHdhcm5pbmcgYnkgc2V0dGluZyBzZWFyY2hQc2V1ZG9FbGVtZW50c1dhcm5pbmdzIHRvIGZhbHNlLmApKX19fWNhdGNoKG0pe3IuZShtKX1maW5hbGx5e3IuZigpfWlmKCFhLnNpemUpcmV0dXJuO3ZhciB4PUFycmF5LmZyb20oYSkuam9pbigiLCAiKTt0cnl7dD1zLnF1ZXJ5U2VsZWN0b3JBbGwoeCl9Y2F0Y2h7fX1yZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24obSxmKXt2YXIgeT1rYih0KS5maWx0ZXIoVlVhKS5tYXAoalVhKSxNPWI4ZS5iZWdpbigic2VhcmNoUHNldWRvRWxlbWVudHMiKTtnX3QoKSxQcm9taXNlLmFsbCh5KS50aGVuKGZ1bmN0aW9uKCl7TSgpLHg4ZSgpLG0oKX0pLmNhdGNoKGZ1bmN0aW9uKCl7TSgpLHg4ZSgpLGYoKX0pfSl9fWZ1bmN0aW9uIFRfdChzKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06ITA7cmV0dXJuIHMuYXR0cmlidXRlcyYmKHMuYXR0cmlidXRlcy5maWxsfHxlKSYmKHMuYXR0cmlidXRlcy5maWxsPSJibGFjayIpLHN9ZnVuY3Rpb24gWlVhKHMpe3JldHVybiBzLnRhZz09PSJnIj9zLmNoaWxkcmVuOltzXX12YXIgUWt0LGo1ZSxKa3QsZVN0LHRTdCxLcWEsYVN0LHNTdCxuaCxkaSxpU3QsRnJlLEx2aSxCMCxyU3QsVjVlLFlxYSxacWEsb1N0LFhxYSxuU3QsX28sQmssbFN0LGNTdCxkU3QsdVN0LHBTdCxoU3QsZlN0LG1TdCxnU3QsYlN0LHZTdCx4U3QseVN0LHdTdCxrU3QsU1N0LF9TdCxRcWEsSnFhLGVqYSx0amEsYWphLHNqYSxpamEscmphLG9qYSxuamEsbGphLGNqYSxkamEsdWphLHBqYSxoamEsZmphLG1qYSxnamEsTVN0LEV2aSxiamEsdmphLHhqYSx5amEselN0LENTdCx3amEsa2phLFNqYSxfamEsTWphLFB2aSx6amEsQ2phLFRqYSxUU3QsVTVlLEJyZSwkamEsRGphLExqYSxFamEsUGphLElqYSxBamEsTmphLFJqYSxPamEsRmphLEJqYSxIamEscWphLGpqYSxWamEsVWphLFdqYSxHamEsS2phLFlqYSxaamEsWGphLFFqYSxKamEsZVZhLHRWYSxhVmEsc1ZhLGlWYSxyVmEsb1ZhLG5WYSxsVmEsY1ZhLGRWYSx1VmEscFZhLGhWYSxJdmksZlZhLG1WYSxnVmEsYlZhLEF2aSx2VmEseFZhLFc1ZSx5VmEsJFN0LHdWYSxEU3Qsa1ZhLFNWYSxfVmEsTVZhLEgwLEc1ZSxMU3QsRVN0LEszLEs1ZSx6VmEsWTVlLFo1ZSxQU3QsQ1ZhLFRWYSxJU3QsQVN0LE5TdCwkVmEsWDVlLFJTdCxRNWUsSjVlLGU4ZSxOdmksRFZhLE9TdCxMVmEsRVZhLFJ2aSxQVmEsdDhlLElWYSxxayxCU3Qsd2IsV3QsamssbGgsTWQsRlZhLGpWYSxWU3QsVlZhLHEwLEgxLFVTdCxXU3QscXJlLFdWYSxyOGUsbjhlLHExLE92aSxGdmksVWssR1ZhLFpTdCxLVmEsbDhlLFhTdCxRU3QsSlN0LGVfdCx0X3QsYV90LGlfdCxvX3QsYVVhLHNVYSxyVWEsbl90LFNiLF9iLG9VYSxsX3QsbFVhLGNVYSxkVWEsX2wsdVVhLGg4ZSxnVWEsZF90LGc4ZSxXayx2VWEsdV90LGI4ZSxXcmUsR3JlLHY4ZSxLcmUsRFVhLElVYSxBVWEsTlVhLFJVYSxPVWEsd190LGtfdCxTX3QseThlLEZVYSxVVWEsV1VhLEdVYSx6X3QsS1VhLENfdCxZVWEsdzhlLFhVYSxRVWEsSlVhLGVXYSx0V2EsYVdhLHNXYSxpV2EscldhLG9XYSxuV2EsR2ssbFdhLGNXYSxkV2EsRlN0LGs4ZT1nKCgpPT57aShINWUsIl9hcnJheUxpa2VUb0FycmF5Iik7aShPcWEsIl9hcnJheVdpdGhIb2xlcyIpO2koRnFhLCJfYXJyYXlXaXRob3V0SG9sZXMiKTtpKEJxYSwiX2NsYXNzQ2FsbENoZWNrIik7aShZa3QsIl9kZWZpbmVQcm9wZXJ0aWVzIik7aShIcWEsIl9jcmVhdGVDbGFzcyIpO2koQXJlLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIpO2koaGEsIl9kZWZpbmVQcm9wZXJ0eSIpO2kocXFhLCJfaW5oZXJpdHMiKTtpKGpxYSwiX2l0ZXJhYmxlVG9BcnJheSIpO2koVnFhLCJfaXRlcmFibGVUb0FycmF5TGltaXQiKTtpKFVxYSwiX25vbkl0ZXJhYmxlUmVzdCIpO2koV3FhLCJfbm9uSXRlcmFibGVTcHJlYWQiKTtpKFprdCwib3duS2V5cyIpO2koZHQsIl9vYmplY3RTcHJlYWQyIik7aShOcmUsIl9zZXRQcm90b3R5cGVPZiIpO2koUnJlLCJfc2xpY2VkVG9BcnJheSIpO2koQjEsIl90b0NvbnN1bWFibGVBcnJheSIpO2koR3FhLCJfdG9QcmltaXRpdmUiKTtpKFhrdCwiX3RvUHJvcGVydHlLZXkiKTtpKE9yZSwiX3R5cGVvZiIpO2kocTVlLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiKTtpKGFuLCJfd3JhcFJlZ0V4cCIpO1FrdD1pKGZ1bmN0aW9uKCl7fSwibm9vcCIpLGo1ZT17fSxKa3Q9e30sZVN0PW51bGwsdFN0PXttYXJrOlFrdCxtZWFzdXJlOlFrdH07dHJ5e3R5cGVvZiB3aW5kb3c8InUiJiYoajVlPXdpbmRvdyksdHlwZW9mIGRvY3VtZW50PCJ1IiYmKEprdD1kb2N1bWVudCksdHlwZW9mIE11dGF0aW9uT2JzZXJ2ZXI8InUiJiYoZVN0PU11dGF0aW9uT2JzZXJ2ZXIpLHR5cGVvZiBwZXJmb3JtYW5jZTwidSImJih0U3Q9cGVyZm9ybWFuY2UpfWNhdGNoe31LcWE9ajVlLm5hdmlnYXRvcnx8e30sYVN0PUtxYS51c2VyQWdlbnQsc1N0PWFTdD09PXZvaWQgMD8iIjphU3Qsbmg9ajVlLGRpPUprdCxpU3Q9ZVN0LEZyZT10U3QsTHZpPSEhbmguZG9jdW1lbnQsQjA9ISFkaS5kb2N1bWVudEVsZW1lbnQmJiEhZGkuaGVhZCYmdHlwZW9mIGRpLmFkZEV2ZW50TGlzdGVuZXI9PSJmdW5jdGlvbiImJnR5cGVvZiBkaS5jcmVhdGVFbGVtZW50PT0iZnVuY3Rpb24iLHJTdD1+c1N0LmluZGV4T2YoIk1TSUUiKXx8fnNTdC5pbmRleE9mKCJUcmlkZW50LyIpLFlxYT0vZmEoa3xrZHxzfHJ8bHx0fGR8ZHJ8ZGx8ZHR8YnxzbHJ8c2xwcnx3c2J8dGx8bnN8bmRzfGVzfGd0fGpyfGpmcnxqZHJ8dXNifHVmc2J8dWRzYnxjcnxzc3xzcnxzbHxzdHxzZHN8c2RyfHNkbHxzZHQpP1tcLVwgXS8sWnFhPS9Gb250ID9Bd2Vzb21lID8oWzU2NyBdKikoU29saWR8UmVndWxhcnxMaWdodHxUaGlufER1b3RvbmV8QnJhbmRzfEZyZWV8UHJvfFNoYXJwIER1b3RvbmV8U2hhcnB8S2l0fE5vdGRvZyBEdW98Tm90ZG9nfENoaXNlbHxFdGNofEdyYXBoaXRlfFRodW1icHJpbnR8SmVsbHkgRmlsbHxKZWxseSBEdW98SmVsbHl8VXRpbGl0eXxVdGlsaXR5IEZpbGx8VXRpbGl0eSBEdW98U2xhYiBQcmVzc3xTbGFifFdoaXRlYm9hcmQpPy4qL2ksb1N0PXtjbGFzc2ljOntmYToic29saWQiLGZhczoic29saWQiLCJmYS1zb2xpZCI6InNvbGlkIixmYXI6InJlZ3VsYXIiLCJmYS1yZWd1bGFyIjoicmVndWxhciIsZmFsOiJsaWdodCIsImZhLWxpZ2h0IjoibGlnaHQiLGZhdDoidGhpbiIsImZhLXRoaW4iOiJ0aGluIixmYWI6ImJyYW5kcyIsImZhLWJyYW5kcyI6ImJyYW5kcyJ9LGR1b3RvbmU6e2ZhOiJzb2xpZCIsZmFkOiJzb2xpZCIsImZhLXNvbGlkIjoic29saWQiLCJmYS1kdW90b25lIjoic29saWQiLGZhZHI6InJlZ3VsYXIiLCJmYS1yZWd1bGFyIjoicmVndWxhciIsZmFkbDoibGlnaHQiLCJmYS1saWdodCI6ImxpZ2h0IixmYWR0OiJ0aGluIiwiZmEtdGhpbiI6InRoaW4ifSxzaGFycDp7ZmE6InNvbGlkIixmYXNzOiJzb2xpZCIsImZhLXNvbGlkIjoic29saWQiLGZhc3I6InJlZ3VsYXIiLCJmYS1yZWd1bGFyIjoicmVndWxhciIsZmFzbDoibGlnaHQiLCJmYS1saWdodCI6ImxpZ2h0IixmYXN0OiJ0aGluIiwiZmEtdGhpbiI6InRoaW4ifSwic2hhcnAtZHVvdG9uZSI6e2ZhOiJzb2xpZCIsZmFzZHM6InNvbGlkIiwiZmEtc29saWQiOiJzb2xpZCIsZmFzZHI6InJlZ3VsYXIiLCJmYS1yZWd1bGFyIjoicmVndWxhciIsZmFzZGw6ImxpZ2h0IiwiZmEtbGlnaHQiOiJsaWdodCIsZmFzZHQ6InRoaW4iLCJmYS10aGluIjoidGhpbiJ9LHNsYWI6eyJmYS1yZWd1bGFyIjoicmVndWxhciIsZmFzbHI6InJlZ3VsYXIifSwic2xhYi1wcmVzcyI6eyJmYS1yZWd1bGFyIjoicmVndWxhciIsZmFzbHByOiJyZWd1bGFyIn0sdGh1bWJwcmludDp7ImZhLWxpZ2h0IjoibGlnaHQiLGZhdGw6ImxpZ2h0In0sd2hpdGVib2FyZDp7ImZhLXNlbWlib2xkIjoic2VtaWJvbGQiLGZhd3NiOiJzZW1pYm9sZCJ9LG5vdGRvZzp7ImZhLXNvbGlkIjoic29saWQiLGZhbnM6InNvbGlkIn0sIm5vdGRvZy1kdW8iOnsiZmEtc29saWQiOiJzb2xpZCIsZmFuZHM6InNvbGlkIn0sZXRjaDp7ImZhLXNvbGlkIjoic29saWQiLGZhZXM6InNvbGlkIn0sZ3JhcGhpdGU6eyJmYS10aGluIjoidGhpbiIsZmFndDoidGhpbiJ9LGplbGx5OnsiZmEtcmVndWxhciI6InJlZ3VsYXIiLGZhanI6InJlZ3VsYXIifSwiamVsbHktZmlsbCI6eyJmYS1yZWd1bGFyIjoicmVndWxhciIsZmFqZnI6InJlZ3VsYXIifSwiamVsbHktZHVvIjp7ImZhLXJlZ3VsYXIiOiJyZWd1bGFyIixmYWpkcjoicmVndWxhciJ9LGNoaXNlbDp7ImZhLXJlZ3VsYXIiOiJyZWd1bGFyIixmYWNyOiJyZWd1bGFyIn0sdXRpbGl0eTp7ImZhLXNlbWlib2xkIjoic2VtaWJvbGQiLGZhdXNiOiJzZW1pYm9sZCJ9LCJ1dGlsaXR5LWR1byI6eyJmYS1zZW1pYm9sZCI6InNlbWlib2xkIixmYXVkc2I6InNlbWlib2xkIn0sInV0aWxpdHktZmlsbCI6eyJmYS1zZW1pYm9sZCI6InNlbWlib2xkIixmYXVmc2I6InNlbWlib2xkIn19LFhxYT17R1JPVVA6ImR1b3RvbmUtZ3JvdXAiLFNXQVBfT1BBQ0lUWToic3dhcC1vcGFjaXR5IixQUklNQVJZOiJwcmltYXJ5IixTRUNPTkRBUlk6InNlY29uZGFyeSJ9LG5TdD1bImZhLWNsYXNzaWMiLCJmYS1kdW90b25lIiwiZmEtc2hhcnAiLCJmYS1zaGFycC1kdW90b25lIiwiZmEtdGh1bWJwcmludCIsImZhLXdoaXRlYm9hcmQiLCJmYS1ub3Rkb2ciLCJmYS1ub3Rkb2ctZHVvIiwiZmEtY2hpc2VsIiwiZmEtZXRjaCIsImZhLWdyYXBoaXRlIiwiZmEtamVsbHkiLCJmYS1qZWxseS1maWxsIiwiZmEtamVsbHktZHVvIiwiZmEtc2xhYiIsImZhLXNsYWItcHJlc3MiLCJmYS11dGlsaXR5IiwiZmEtdXRpbGl0eS1kdW8iLCJmYS11dGlsaXR5LWZpbGwiXSxfbz0iY2xhc3NpYyIsQms9ImR1b3RvbmUiLGxTdD0ic2hhcnAiLGNTdD0ic2hhcnAtZHVvdG9uZSIsZFN0PSJjaGlzZWwiLHVTdD0iZXRjaCIscFN0PSJncmFwaGl0ZSIsaFN0PSJqZWxseSIsZlN0PSJqZWxseS1kdW8iLG1TdD0iamVsbHktZmlsbCIsZ1N0PSJub3Rkb2ciLGJTdD0ibm90ZG9nLWR1byIsdlN0PSJzbGFiIix4U3Q9InNsYWItcHJlc3MiLHlTdD0idGh1bWJwcmludCIsd1N0PSJ1dGlsaXR5IixrU3Q9InV0aWxpdHktZHVvIixTU3Q9InV0aWxpdHktZmlsbCIsX1N0PSJ3aGl0ZWJvYXJkIixRcWE9IkNsYXNzaWMiLEpxYT0iRHVvdG9uZSIsZWphPSJTaGFycCIsdGphPSJTaGFycCBEdW90b25lIixhamE9IkNoaXNlbCIsc2phPSJFdGNoIixpamE9IkdyYXBoaXRlIixyamE9IkplbGx5IixvamE9IkplbGx5IER1byIsbmphPSJKZWxseSBGaWxsIixsamE9Ik5vdGRvZyIsY2phPSJOb3Rkb2cgRHVvIixkamE9IlNsYWIiLHVqYT0iU2xhYiBQcmVzcyIscGphPSJUaHVtYnByaW50IixoamE9IlV0aWxpdHkiLGZqYT0iVXRpbGl0eSBEdW8iLG1qYT0iVXRpbGl0eSBGaWxsIixnamE9IldoaXRlYm9hcmQiLE1TdD1bX28sQmssbFN0LGNTdCxkU3QsdVN0LHBTdCxoU3QsZlN0LG1TdCxnU3QsYlN0LHZTdCx4U3QseVN0LHdTdCxrU3QsU1N0LF9TdF0sRXZpPShWNWU9e30saGEoaGEoaGEoaGEoaGEoaGEoaGEoaGEoaGEoaGEoVjVlLF9vLFFxYSksQmssSnFhKSxsU3QsZWphKSxjU3QsdGphKSxkU3QsYWphKSx1U3Qsc2phKSxwU3QsaWphKSxoU3QscmphKSxmU3Qsb2phKSxtU3QsbmphKSxoYShoYShoYShoYShoYShoYShoYShoYShoYShWNWUsZ1N0LGxqYSksYlN0LGNqYSksdlN0LGRqYSkseFN0LHVqYSkseVN0LHBqYSksd1N0LGhqYSksa1N0LGZqYSksU1N0LG1qYSksX1N0LGdqYSkpLGJqYT17Y2xhc3NpYzp7OTAwOiJmYXMiLDQwMDoiZmFyIixub3JtYWw6ImZhciIsMzAwOiJmYWwiLDEwMDoiZmF0In0sZHVvdG9uZTp7OTAwOiJmYWQiLDQwMDoiZmFkciIsMzAwOiJmYWRsIiwxMDA6ImZhZHQifSxzaGFycDp7OTAwOiJmYXNzIiw0MDA6ImZhc3IiLDMwMDoiZmFzbCIsMTAwOiJmYXN0In0sInNoYXJwLWR1b3RvbmUiOns5MDA6ImZhc2RzIiw0MDA6ImZhc2RyIiwzMDA6ImZhc2RsIiwxMDA6ImZhc2R0In0sc2xhYjp7NDAwOiJmYXNsciJ9LCJzbGFiLXByZXNzIjp7NDAwOiJmYXNscHIifSx3aGl0ZWJvYXJkOns2MDA6ImZhd3NiIn0sdGh1bWJwcmludDp7MzAwOiJmYXRsIn0sbm90ZG9nOns5MDA6ImZhbnMifSwibm90ZG9nLWR1byI6ezkwMDoiZmFuZHMifSxldGNoOns5MDA6ImZhZXMifSxncmFwaGl0ZTp7MTAwOiJmYWd0In0sY2hpc2VsOns0MDA6ImZhY3IifSxqZWxseTp7NDAwOiJmYWpyIn0sImplbGx5LWZpbGwiOns0MDA6ImZhamZyIn0sImplbGx5LWR1byI6ezQwMDoiZmFqZHIifSx1dGlsaXR5Ons2MDA6ImZhdXNiIn0sInV0aWxpdHktZHVvIjp7NjAwOiJmYXVkc2IifSwidXRpbGl0eS1maWxsIjp7NjAwOiJmYXVmc2IifX0sdmphPXsiRm9udCBBd2Vzb21lIDcgRnJlZSI6ezkwMDoiZmFzIiw0MDA6ImZhciJ9LCJGb250IEF3ZXNvbWUgNyBQcm8iOns5MDA6ImZhcyIsNDAwOiJmYXIiLG5vcm1hbDoiZmFyIiwzMDA6ImZhbCIsMTAwOiJmYXQifSwiRm9udCBBd2Vzb21lIDcgQnJhbmRzIjp7NDAwOiJmYWIiLG5vcm1hbDoiZmFiIn0sIkZvbnQgQXdlc29tZSA3IER1b3RvbmUiOns5MDA6ImZhZCIsNDAwOiJmYWRyIixub3JtYWw6ImZhZHIiLDMwMDoiZmFkbCIsMTAwOiJmYWR0In0sIkZvbnQgQXdlc29tZSA3IFNoYXJwIjp7OTAwOiJmYXNzIiw0MDA6ImZhc3IiLG5vcm1hbDoiZmFzciIsMzAwOiJmYXNsIiwxMDA6ImZhc3QifSwiRm9udCBBd2Vzb21lIDcgU2hhcnAgRHVvdG9uZSI6ezkwMDoiZmFzZHMiLDQwMDoiZmFzZHIiLG5vcm1hbDoiZmFzZHIiLDMwMDoiZmFzZGwiLDEwMDoiZmFzZHQifSwiRm9udCBBd2Vzb21lIDcgSmVsbHkiOns0MDA6ImZhanIiLG5vcm1hbDoiZmFqciJ9LCJGb250IEF3ZXNvbWUgNyBKZWxseSBGaWxsIjp7NDAwOiJmYWpmciIsbm9ybWFsOiJmYWpmciJ9LCJGb250IEF3ZXNvbWUgNyBKZWxseSBEdW8iOns0MDA6ImZhamRyIixub3JtYWw6ImZhamRyIn0sIkZvbnQgQXdlc29tZSA3IFNsYWIiOns0MDA6ImZhc2xyIixub3JtYWw6ImZhc2xyIn0sIkZvbnQgQXdlc29tZSA3IFNsYWIgUHJlc3MiOns0MDA6ImZhc2xwciIsbm9ybWFsOiJmYXNscHIifSwiRm9udCBBd2Vzb21lIDcgVGh1bWJwcmludCI6ezMwMDoiZmF0bCIsbm9ybWFsOiJmYXRsIn0sIkZvbnQgQXdlc29tZSA3IE5vdGRvZyI6ezkwMDoiZmFucyIsbm9ybWFsOiJmYW5zIn0sIkZvbnQgQXdlc29tZSA3IE5vdGRvZyBEdW8iOns5MDA6ImZhbmRzIixub3JtYWw6ImZhbmRzIn0sIkZvbnQgQXdlc29tZSA3IEV0Y2giOns5MDA6ImZhZXMiLG5vcm1hbDoiZmFlcyJ9LCJGb250IEF3ZXNvbWUgNyBHcmFwaGl0ZSI6ezEwMDoiZmFndCIsbm9ybWFsOiJmYWd0In0sIkZvbnQgQXdlc29tZSA3IENoaXNlbCI6ezQwMDoiZmFjciIsbm9ybWFsOiJmYWNyIn0sIkZvbnQgQXdlc29tZSA3IFdoaXRlYm9hcmQiOns2MDA6ImZhd3NiIixub3JtYWw6ImZhd3NiIn0sIkZvbnQgQXdlc29tZSA3IFV0aWxpdHkiOns2MDA6ImZhdXNiIixub3JtYWw6ImZhdXNiIn0sIkZvbnQgQXdlc29tZSA3IFV0aWxpdHkgRHVvIjp7NjAwOiJmYXVkc2IiLG5vcm1hbDoiZmF1ZHNiIn0sIkZvbnQgQXdlc29tZSA3IFV0aWxpdHkgRmlsbCI6ezYwMDoiZmF1ZnNiIixub3JtYWw6ImZhdWZzYiJ9fSx4amE9bmV3IE1hcChbWyJjbGFzc2ljIix7ZGVmYXVsdFNob3J0UHJlZml4SWQ6ImZhcyIsZGVmYXVsdFN0eWxlSWQ6InNvbGlkIixzdHlsZUlkczpbInNvbGlkIiwicmVndWxhciIsImxpZ2h0IiwidGhpbiIsImJyYW5kcyJdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjkwMH1dLFsiZHVvdG9uZSIse2RlZmF1bHRTaG9ydFByZWZpeElkOiJmYWQiLGRlZmF1bHRTdHlsZUlkOiJzb2xpZCIsc3R5bGVJZHM6WyJzb2xpZCIsInJlZ3VsYXIiLCJsaWdodCIsInRoaW4iXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo5MDB9XSxbInNoYXJwIix7ZGVmYXVsdFNob3J0UHJlZml4SWQ6ImZhc3MiLGRlZmF1bHRTdHlsZUlkOiJzb2xpZCIsc3R5bGVJZHM6WyJzb2xpZCIsInJlZ3VsYXIiLCJsaWdodCIsInRoaW4iXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo5MDB9XSxbInNoYXJwLWR1b3RvbmUiLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDoiZmFzZHMiLGRlZmF1bHRTdHlsZUlkOiJzb2xpZCIsc3R5bGVJZHM6WyJzb2xpZCIsInJlZ3VsYXIiLCJsaWdodCIsInRoaW4iXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo5MDB9XSxbImNoaXNlbCIse2RlZmF1bHRTaG9ydFByZWZpeElkOiJmYWNyIixkZWZhdWx0U3R5bGVJZDoicmVndWxhciIsc3R5bGVJZHM6WyJyZWd1bGFyIl0sZnV0dXJlU3R5bGVJZHM6W10sZGVmYXVsdEZvbnRXZWlnaHQ6NDAwfV0sWyJldGNoIix7ZGVmYXVsdFNob3J0UHJlZml4SWQ6ImZhZXMiLGRlZmF1bHRTdHlsZUlkOiJzb2xpZCIsc3R5bGVJZHM6WyJzb2xpZCJdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjkwMH1dLFsiZ3JhcGhpdGUiLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDoiZmFndCIsZGVmYXVsdFN0eWxlSWQ6InRoaW4iLHN0eWxlSWRzOlsidGhpbiJdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjEwMH1dLFsiamVsbHkiLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDoiZmFqciIsZGVmYXVsdFN0eWxlSWQ6InJlZ3VsYXIiLHN0eWxlSWRzOlsicmVndWxhciJdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjQwMH1dLFsiamVsbHktZHVvIix7ZGVmYXVsdFNob3J0UHJlZml4SWQ6ImZhamRyIixkZWZhdWx0U3R5bGVJZDoicmVndWxhciIsc3R5bGVJZHM6WyJyZWd1bGFyIl0sZnV0dXJlU3R5bGVJZHM6W10sZGVmYXVsdEZvbnRXZWlnaHQ6NDAwfV0sWyJqZWxseS1maWxsIix7ZGVmYXVsdFNob3J0UHJlZml4SWQ6ImZhamZyIixkZWZhdWx0U3R5bGVJZDoicmVndWxhciIsc3R5bGVJZHM6WyJyZWd1bGFyIl0sZnV0dXJlU3R5bGVJZHM6W10sZGVmYXVsdEZvbnRXZWlnaHQ6NDAwfV0sWyJub3Rkb2ciLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDoiZmFucyIsZGVmYXVsdFN0eWxlSWQ6InNvbGlkIixzdHlsZUlkczpbInNvbGlkIl0sZnV0dXJlU3R5bGVJZHM6W10sZGVmYXVsdEZvbnRXZWlnaHQ6OTAwfV0sWyJub3Rkb2ctZHVvIix7ZGVmYXVsdFNob3J0UHJlZml4SWQ6ImZhbmRzIixkZWZhdWx0U3R5bGVJZDoic29saWQiLHN0eWxlSWRzOlsic29saWQiXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo5MDB9XSxbInNsYWIiLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDoiZmFzbHIiLGRlZmF1bHRTdHlsZUlkOiJyZWd1bGFyIixzdHlsZUlkczpbInJlZ3VsYXIiXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo0MDB9XSxbInNsYWItcHJlc3MiLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDoiZmFzbHByIixkZWZhdWx0U3R5bGVJZDoicmVndWxhciIsc3R5bGVJZHM6WyJyZWd1bGFyIl0sZnV0dXJlU3R5bGVJZHM6W10sZGVmYXVsdEZvbnRXZWlnaHQ6NDAwfV0sWyJ0aHVtYnByaW50Iix7ZGVmYXVsdFNob3J0UHJlZml4SWQ6ImZhdGwiLGRlZmF1bHRTdHlsZUlkOiJsaWdodCIsc3R5bGVJZHM6WyJsaWdodCJdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjMwMH1dLFsidXRpbGl0eSIse2RlZmF1bHRTaG9ydFByZWZpeElkOiJmYXVzYiIsZGVmYXVsdFN0eWxlSWQ6InNlbWlib2xkIixzdHlsZUlkczpbInNlbWlib2xkIl0sZnV0dXJlU3R5bGVJZHM6W10sZGVmYXVsdEZvbnRXZWlnaHQ6NjAwfV0sWyJ1dGlsaXR5LWR1byIse2RlZmF1bHRTaG9ydFByZWZpeElkOiJmYXVkc2IiLGRlZmF1bHRTdHlsZUlkOiJzZW1pYm9sZCIsc3R5bGVJZHM6WyJzZW1pYm9sZCJdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjYwMH1dLFsidXRpbGl0eS1maWxsIix7ZGVmYXVsdFNob3J0UHJlZml4SWQ6ImZhdWZzYiIsZGVmYXVsdFN0eWxlSWQ6InNlbWlib2xkIixzdHlsZUlkczpbInNlbWlib2xkIl0sZnV0dXJlU3R5bGVJZHM6W10sZGVmYXVsdEZvbnRXZWlnaHQ6NjAwfV0sWyJ3aGl0ZWJvYXJkIix7ZGVmYXVsdFNob3J0UHJlZml4SWQ6ImZhd3NiIixkZWZhdWx0U3R5bGVJZDoic2VtaWJvbGQiLHN0eWxlSWRzOlsic2VtaWJvbGQiXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo2MDB9XV0pLHlqYT17Y2hpc2VsOntyZWd1bGFyOiJmYWNyIn0sY2xhc3NpYzp7YnJhbmRzOiJmYWIiLGxpZ2h0OiJmYWwiLHJlZ3VsYXI6ImZhciIsc29saWQ6ImZhcyIsdGhpbjoiZmF0In0sZHVvdG9uZTp7bGlnaHQ6ImZhZGwiLHJlZ3VsYXI6ImZhZHIiLHNvbGlkOiJmYWQiLHRoaW46ImZhZHQifSxldGNoOntzb2xpZDoiZmFlcyJ9LGdyYXBoaXRlOnt0aGluOiJmYWd0In0samVsbHk6e3JlZ3VsYXI6ImZhanIifSwiamVsbHktZHVvIjp7cmVndWxhcjoiZmFqZHIifSwiamVsbHktZmlsbCI6e3JlZ3VsYXI6ImZhamZyIn0sbm90ZG9nOntzb2xpZDoiZmFucyJ9LCJub3Rkb2ctZHVvIjp7c29saWQ6ImZhbmRzIn0sc2hhcnA6e2xpZ2h0OiJmYXNsIixyZWd1bGFyOiJmYXNyIixzb2xpZDoiZmFzcyIsdGhpbjoiZmFzdCJ9LCJzaGFycC1kdW90b25lIjp7bGlnaHQ6ImZhc2RsIixyZWd1bGFyOiJmYXNkciIsc29saWQ6ImZhc2RzIix0aGluOiJmYXNkdCJ9LHNsYWI6e3JlZ3VsYXI6ImZhc2xyIn0sInNsYWItcHJlc3MiOntyZWd1bGFyOiJmYXNscHIifSx0aHVtYnByaW50OntsaWdodDoiZmF0bCJ9LHV0aWxpdHk6e3NlbWlib2xkOiJmYXVzYiJ9LCJ1dGlsaXR5LWR1byI6e3NlbWlib2xkOiJmYXVkc2IifSwidXRpbGl0eS1maWxsIjp7c2VtaWJvbGQ6ImZhdWZzYiJ9LHdoaXRlYm9hcmQ6e3NlbWlib2xkOiJmYXdzYiJ9fSx6U3Q9WyJmYWsiLCJmYS1raXQiLCJmYWtkIiwiZmEta2l0LWR1b3RvbmUiXSxDU3Q9e2tpdDp7ZmFrOiJraXQiLCJmYS1raXQiOiJraXQifSwia2l0LWR1b3RvbmUiOntmYWtkOiJraXQtZHVvdG9uZSIsImZhLWtpdC1kdW90b25lIjoia2l0LWR1b3RvbmUifX0sd2phPVsia2l0Il0sa2phPSJraXQiLFNqYT0ia2l0LWR1b3RvbmUiLF9qYT0iS2l0IixNamE9IktpdCBEdW90b25lIixQdmk9aGEoaGEoe30sa2phLF9qYSksU2phLE1qYSksemphPXtraXQ6eyJmYS1raXQiOiJmYWsifSwia2l0LWR1b3RvbmUiOnsiZmEta2l0LWR1b3RvbmUiOiJmYWtkIn19LENqYT17IkZvbnQgQXdlc29tZSBLaXQiOns0MDA6ImZhayIsbm9ybWFsOiJmYWsifSwiRm9udCBBd2Vzb21lIEtpdCBEdW90b25lIjp7NDAwOiJmYWtkIixub3JtYWw6ImZha2QifX0sVGphPXtraXQ6e2ZhazoiZmEta2l0In0sImtpdC1kdW90b25lIjp7ZmFrZDoiZmEta2l0LWR1b3RvbmUifX0sVFN0PXtraXQ6e2tpdDoiZmFrIn0sImtpdC1kdW90b25lIjp7ImtpdC1kdW90b25lIjoiZmFrZCJ9fSxCcmU9e0dST1VQOiJkdW90b25lLWdyb3VwIixTV0FQX09QQUNJVFk6InN3YXAtb3BhY2l0eSIsUFJJTUFSWToicHJpbWFyeSIsU0VDT05EQVJZOiJzZWNvbmRhcnkifSwkamE9WyJmYS1jbGFzc2ljIiwiZmEtZHVvdG9uZSIsImZhLXNoYXJwIiwiZmEtc2hhcnAtZHVvdG9uZSIsImZhLXRodW1icHJpbnQiLCJmYS13aGl0ZWJvYXJkIiwiZmEtbm90ZG9nIiwiZmEtbm90ZG9nLWR1byIsImZhLWNoaXNlbCIsImZhLWV0Y2giLCJmYS1ncmFwaGl0ZSIsImZhLWplbGx5IiwiZmEtamVsbHktZmlsbCIsImZhLWplbGx5LWR1byIsImZhLXNsYWIiLCJmYS1zbGFiLXByZXNzIiwiZmEtdXRpbGl0eSIsImZhLXV0aWxpdHktZHVvIiwiZmEtdXRpbGl0eS1maWxsIl0sRGphPSJjbGFzc2ljIixMamE9ImR1b3RvbmUiLEVqYT0ic2hhcnAiLFBqYT0ic2hhcnAtZHVvdG9uZSIsSWphPSJjaGlzZWwiLEFqYT0iZXRjaCIsTmphPSJncmFwaGl0ZSIsUmphPSJqZWxseSIsT2phPSJqZWxseS1kdW8iLEZqYT0iamVsbHktZmlsbCIsQmphPSJub3Rkb2ciLEhqYT0ibm90ZG9nLWR1byIscWphPSJzbGFiIixqamE9InNsYWItcHJlc3MiLFZqYT0idGh1bWJwcmludCIsVWphPSJ1dGlsaXR5IixXamE9InV0aWxpdHktZHVvIixHamE9InV0aWxpdHktZmlsbCIsS2phPSJ3aGl0ZWJvYXJkIixZamE9IkNsYXNzaWMiLFpqYT0iRHVvdG9uZSIsWGphPSJTaGFycCIsUWphPSJTaGFycCBEdW90b25lIixKamE9IkNoaXNlbCIsZVZhPSJFdGNoIix0VmE9IkdyYXBoaXRlIixhVmE9IkplbGx5IixzVmE9IkplbGx5IER1byIsaVZhPSJKZWxseSBGaWxsIixyVmE9Ik5vdGRvZyIsb1ZhPSJOb3Rkb2cgRHVvIixuVmE9IlNsYWIiLGxWYT0iU2xhYiBQcmVzcyIsY1ZhPSJUaHVtYnByaW50IixkVmE9IlV0aWxpdHkiLHVWYT0iVXRpbGl0eSBEdW8iLHBWYT0iVXRpbGl0eSBGaWxsIixoVmE9IldoaXRlYm9hcmQiLEl2aT0oVTVlPXt9LGhhKGhhKGhhKGhhKGhhKGhhKGhhKGhhKGhhKGhhKFU1ZSxEamEsWWphKSxMamEsWmphKSxFamEsWGphKSxQamEsUWphKSxJamEsSmphKSxBamEsZVZhKSxOamEsdFZhKSxSamEsYVZhKSxPamEsc1ZhKSxGamEsaVZhKSxoYShoYShoYShoYShoYShoYShoYShoYShoYShVNWUsQmphLHJWYSksSGphLG9WYSkscWphLG5WYSksamphLGxWYSksVmphLGNWYSksVWphLGRWYSksV2phLHVWYSksR2phLHBWYSksS2phLGhWYSkpLGZWYT0ia2l0IixtVmE9ImtpdC1kdW90b25lIixnVmE9IktpdCIsYlZhPSJLaXQgRHVvdG9uZSIsQXZpPWhhKGhhKHt9LGZWYSxnVmEpLG1WYSxiVmEpLHZWYT17Y2xhc3NpYzp7ImZhLWJyYW5kcyI6ImZhYiIsImZhLWR1b3RvbmUiOiJmYWQiLCJmYS1saWdodCI6ImZhbCIsImZhLXJlZ3VsYXIiOiJmYXIiLCJmYS1zb2xpZCI6ImZhcyIsImZhLXRoaW4iOiJmYXQifSxkdW90b25lOnsiZmEtcmVndWxhciI6ImZhZHIiLCJmYS1saWdodCI6ImZhZGwiLCJmYS10aGluIjoiZmFkdCJ9LHNoYXJwOnsiZmEtc29saWQiOiJmYXNzIiwiZmEtcmVndWxhciI6ImZhc3IiLCJmYS1saWdodCI6ImZhc2wiLCJmYS10aGluIjoiZmFzdCJ9LCJzaGFycC1kdW90b25lIjp7ImZhLXNvbGlkIjoiZmFzZHMiLCJmYS1yZWd1bGFyIjoiZmFzZHIiLCJmYS1saWdodCI6ImZhc2RsIiwiZmEtdGhpbiI6ImZhc2R0In0sc2xhYjp7ImZhLXJlZ3VsYXIiOiJmYXNsciJ9LCJzbGFiLXByZXNzIjp7ImZhLXJlZ3VsYXIiOiJmYXNscHIifSx3aGl0ZWJvYXJkOnsiZmEtc2VtaWJvbGQiOiJmYXdzYiJ9LHRodW1icHJpbnQ6eyJmYS1saWdodCI6ImZhdGwifSxub3Rkb2c6eyJmYS1zb2xpZCI6ImZhbnMifSwibm90ZG9nLWR1byI6eyJmYS1zb2xpZCI6ImZhbmRzIn0sZXRjaDp7ImZhLXNvbGlkIjoiZmFlcyJ9LGdyYXBoaXRlOnsiZmEtdGhpbiI6ImZhZ3QifSxqZWxseTp7ImZhLXJlZ3VsYXIiOiJmYWpyIn0sImplbGx5LWZpbGwiOnsiZmEtcmVndWxhciI6ImZhamZyIn0sImplbGx5LWR1byI6eyJmYS1yZWd1bGFyIjoiZmFqZHIifSxjaGlzZWw6eyJmYS1yZWd1bGFyIjoiZmFjciJ9LHV0aWxpdHk6eyJmYS1zZW1pYm9sZCI6ImZhdXNiIn0sInV0aWxpdHktZHVvIjp7ImZhLXNlbWlib2xkIjoiZmF1ZHNiIn0sInV0aWxpdHktZmlsbCI6eyJmYS1zZW1pYm9sZCI6ImZhdWZzYiJ9fSx4VmE9e2NsYXNzaWM6WyJmYXMiLCJmYXIiLCJmYWwiLCJmYXQiLCJmYWQiXSxkdW90b25lOlsiZmFkciIsImZhZGwiLCJmYWR0Il0sc2hhcnA6WyJmYXNzIiwiZmFzciIsImZhc2wiLCJmYXN0Il0sInNoYXJwLWR1b3RvbmUiOlsiZmFzZHMiLCJmYXNkciIsImZhc2RsIiwiZmFzZHQiXSxzbGFiOlsiZmFzbHIiXSwic2xhYi1wcmVzcyI6WyJmYXNscHIiXSx3aGl0ZWJvYXJkOlsiZmF3c2IiXSx0aHVtYnByaW50OlsiZmF0bCJdLG5vdGRvZzpbImZhbnMiXSwibm90ZG9nLWR1byI6WyJmYW5kcyJdLGV0Y2g6WyJmYWVzIl0sZ3JhcGhpdGU6WyJmYWd0Il0samVsbHk6WyJmYWpyIl0sImplbGx5LWZpbGwiOlsiZmFqZnIiXSwiamVsbHktZHVvIjpbImZhamRyIl0sY2hpc2VsOlsiZmFjciJdLHV0aWxpdHk6WyJmYXVzYiJdLCJ1dGlsaXR5LWR1byI6WyJmYXVkc2IiXSwidXRpbGl0eS1maWxsIjpbImZhdWZzYiJdfSxXNWU9e2NsYXNzaWM6e2ZhYjoiZmEtYnJhbmRzIixmYWQ6ImZhLWR1b3RvbmUiLGZhbDoiZmEtbGlnaHQiLGZhcjoiZmEtcmVndWxhciIsZmFzOiJmYS1zb2xpZCIsZmF0OiJmYS10aGluIn0sZHVvdG9uZTp7ZmFkcjoiZmEtcmVndWxhciIsZmFkbDoiZmEtbGlnaHQiLGZhZHQ6ImZhLXRoaW4ifSxzaGFycDp7ZmFzczoiZmEtc29saWQiLGZhc3I6ImZhLXJlZ3VsYXIiLGZhc2w6ImZhLWxpZ2h0IixmYXN0OiJmYS10aGluIn0sInNoYXJwLWR1b3RvbmUiOntmYXNkczoiZmEtc29saWQiLGZhc2RyOiJmYS1yZWd1bGFyIixmYXNkbDoiZmEtbGlnaHQiLGZhc2R0OiJmYS10aGluIn0sc2xhYjp7ZmFzbHI6ImZhLXJlZ3VsYXIifSwic2xhYi1wcmVzcyI6e2Zhc2xwcjoiZmEtcmVndWxhciJ9LHdoaXRlYm9hcmQ6e2Zhd3NiOiJmYS1zZW1pYm9sZCJ9LHRodW1icHJpbnQ6e2ZhdGw6ImZhLWxpZ2h0In0sbm90ZG9nOntmYW5zOiJmYS1zb2xpZCJ9LCJub3Rkb2ctZHVvIjp7ZmFuZHM6ImZhLXNvbGlkIn0sZXRjaDp7ZmFlczoiZmEtc29saWQifSxncmFwaGl0ZTp7ZmFndDoiZmEtdGhpbiJ9LGplbGx5OntmYWpyOiJmYS1yZWd1bGFyIn0sImplbGx5LWZpbGwiOntmYWpmcjoiZmEtcmVndWxhciJ9LCJqZWxseS1kdW8iOntmYWpkcjoiZmEtcmVndWxhciJ9LGNoaXNlbDp7ZmFjcjoiZmEtcmVndWxhciJ9LHV0aWxpdHk6e2ZhdXNiOiJmYS1zZW1pYm9sZCJ9LCJ1dGlsaXR5LWR1byI6e2ZhdWRzYjoiZmEtc2VtaWJvbGQifSwidXRpbGl0eS1maWxsIjp7ZmF1ZnNiOiJmYS1zZW1pYm9sZCJ9fSx5VmE9WyJmYS1zb2xpZCIsImZhLXJlZ3VsYXIiLCJmYS1saWdodCIsImZhLXRoaW4iLCJmYS1kdW90b25lIiwiZmEtYnJhbmRzIiwiZmEtc2VtaWJvbGQiXSwkU3Q9WyJmYSIsImZhcyIsImZhciIsImZhbCIsImZhdCIsImZhZCIsImZhZHIiLCJmYWRsIiwiZmFkdCIsImZhYiIsImZhc3MiLCJmYXNyIiwiZmFzbCIsImZhc3QiLCJmYXNkcyIsImZhc2RyIiwiZmFzZGwiLCJmYXNkdCIsImZhc2xyIiwiZmFzbHByIiwiZmF3c2IiLCJmYXRsIiwiZmFucyIsImZhbmRzIiwiZmFlcyIsImZhZ3QiLCJmYWpyIiwiZmFqZnIiLCJmYWpkciIsImZhY3IiLCJmYXVzYiIsImZhdWRzYiIsImZhdWZzYiJdLmNvbmNhdCgkamEseVZhKSx3VmE9WyJzb2xpZCIsInJlZ3VsYXIiLCJsaWdodCIsInRoaW4iLCJkdW90b25lIiwiYnJhbmRzIiwic2VtaWJvbGQiXSxEU3Q9WzEsMiwzLDQsNSw2LDcsOCw5LDEwXSxrVmE9RFN0LmNvbmNhdChbMTEsMTIsMTMsMTQsMTUsMTYsMTcsMTgsMTksMjBdKSxTVmE9WyJhdyIsImZ3IiwicHVsbC1sZWZ0IiwicHVsbC1yaWdodCJdLF9WYT1bXS5jb25jYXQoQjEoT2JqZWN0LmtleXMoeFZhKSksd1ZhLFNWYSxbIjJ4cyIsInhzIiwic20iLCJsZyIsInhsIiwiMnhsIiwiYmVhdCIsImJvcmRlciIsImZhZGUiLCJiZWF0LWZhZGUiLCJib3VuY2UiLCJmbGlwLWJvdGgiLCJmbGlwLWhvcml6b250YWwiLCJmbGlwLXZlcnRpY2FsIiwiZmxpcCIsImludmVyc2UiLCJsYXllcnMiLCJsYXllcnMtYm90dG9tLWxlZnQiLCJsYXllcnMtYm90dG9tLXJpZ2h0IiwibGF5ZXJzLWNvdW50ZXIiLCJsYXllcnMtdGV4dCIsImxheWVycy10b3AtbGVmdCIsImxheWVycy10b3AtcmlnaHQiLCJsaSIsInB1bGwtZW5kIiwicHVsbC1zdGFydCIsInB1bHNlIiwicm90YXRlLTE4MCIsInJvdGF0ZS0yNzAiLCJyb3RhdGUtOTAiLCJyb3RhdGUtYnkiLCJzaGFrZSIsInNwaW4tcHVsc2UiLCJzcGluLXJldmVyc2UiLCJzcGluIiwic3RhY2stMXgiLCJzdGFjay0yeCIsInN0YWNrIiwidWwiLCJ3aWR0aC1hdXRvIiwid2lkdGgtZml4ZWQiLEJyZS5HUk9VUCxCcmUuU1dBUF9PUEFDSVRZLEJyZS5QUklNQVJZLEJyZS5TRUNPTkRBUlldKS5jb25jYXQoRFN0Lm1hcChmdW5jdGlvbihzKXtyZXR1cm4iIi5jb25jYXQocywieCIpfSkpLmNvbmNhdChrVmEubWFwKGZ1bmN0aW9uKHMpe3JldHVybiJ3LSIuY29uY2F0KHMpfSkpLE1WYT17IkZvbnQgQXdlc29tZSA1IEZyZWUiOns5MDA6ImZhcyIsNDAwOiJmYXIifSwiRm9udCBBd2Vzb21lIDUgUHJvIjp7OTAwOiJmYXMiLDQwMDoiZmFyIixub3JtYWw6ImZhciIsMzAwOiJmYWwifSwiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjp7NDAwOiJmYWIiLG5vcm1hbDoiZmFiIn0sIkZvbnQgQXdlc29tZSA1IER1b3RvbmUiOns5MDA6ImZhZCJ9fSxIMD0iX19fRk9OVF9BV0VTT01FX19fIixHNWU9MTYsTFN0PSJmYSIsRVN0PSJzdmctaW5saW5lLS1mYSIsSzM9ImRhdGEtZmEtaTJzdmciLEs1ZT0iZGF0YS1mYS1wc2V1ZG8tZWxlbWVudCIselZhPSJkYXRhLWZhLXBzZXVkby1lbGVtZW50LXBlbmRpbmciLFk1ZT0iZGF0YS1wcmVmaXgiLFo1ZT0iZGF0YS1pY29uIixQU3Q9ImZvbnRhd2Vzb21lLWkyc3ZnIixDVmE9ImFzeW5jIixUVmE9WyJIVE1MIiwiSEVBRCIsIlNUWUxFIiwiU0NSSVBUIl0sSVN0PVsiOjpiZWZvcmUiLCI6OmFmdGVyIiwiOmJlZm9yZSIsIjphZnRlciJdLEFTdD0oZnVuY3Rpb24oKXt0cnl7cmV0dXJuITB9Y2F0Y2h7cmV0dXJuITF9fSkoKTtpKEhrLCJmYW1pbHlQcm94eSIpO05TdD1kdCh7fSxvU3QpO05TdFtfb109ZHQoZHQoZHQoZHQoe30seyJmYS1kdW90b25lIjoiZHVvdG9uZSJ9KSxvU3RbX29dKSxDU3Qua2l0KSxDU3RbImtpdC1kdW90b25lIl0pOyRWYT1IayhOU3QpLFg1ZT1kdCh7fSx5amEpO1g1ZVtfb109ZHQoZHQoZHQoZHQoe30se2R1b3RvbmU6ImZhZCJ9KSxYNWVbX29dKSxUU3Qua2l0KSxUU3RbImtpdC1kdW90b25lIl0pO1JTdD1IayhYNWUpLFE1ZT1kdCh7fSxXNWUpO1E1ZVtfb109ZHQoZHQoe30sUTVlW19vXSksVGphLmtpdCk7SjVlPUhrKFE1ZSksZThlPWR0KHt9LHZWYSk7ZThlW19vXT1kdChkdCh7fSxlOGVbX29dKSx6amEua2l0KTtOdmk9SGsoZThlKSxEVmE9WXFhLE9TdD0iZmEtbGF5ZXJzLXRleHQiLExWYT1acWEsRVZhPWR0KHt9LGJqYSksUnZpPUhrKEVWYSksUFZhPVsiY2xhc3MiLCJkYXRhLXByZWZpeCIsImRhdGEtaWNvbiIsImRhdGEtZmEtdHJhbnNmb3JtIiwiZGF0YS1mYS1tYXNrIl0sdDhlPVhxYSxJVmE9W10uY29uY2F0KEIxKHdqYSksQjEoX1ZhKSkscWs9bmguRm9udEF3ZXNvbWVDb25maWd8fHt9O2koQVZhLCJnZXRBdHRyQ29uZmlnIik7aShOVmEsImNvZXJjZSIpLGRpJiZ0eXBlb2YgZGkucXVlcnlTZWxlY3Rvcj09ImZ1bmN0aW9uIiYmKEZTdD1bWyJkYXRhLWZhbWlseS1wcmVmaXgiLCJmYW1pbHlQcmVmaXgiXSxbImRhdGEtY3NzLXByZWZpeCIsImNzc1ByZWZpeCJdLFsiZGF0YS1mYW1pbHktZGVmYXVsdCIsImZhbWlseURlZmF1bHQiXSxbImRhdGEtc3R5bGUtZGVmYXVsdCIsInN0eWxlRGVmYXVsdCJdLFsiZGF0YS1yZXBsYWNlbWVudC1jbGFzcyIsInJlcGxhY2VtZW50Q2xhc3MiXSxbImRhdGEtYXV0by1yZXBsYWNlLXN2ZyIsImF1dG9SZXBsYWNlU3ZnIl0sWyJkYXRhLWF1dG8tYWRkLWNzcyIsImF1dG9BZGRDc3MiXSxbImRhdGEtc2VhcmNoLXBzZXVkby1lbGVtZW50cyIsInNlYXJjaFBzZXVkb0VsZW1lbnRzIl0sWyJkYXRhLXNlYXJjaC1wc2V1ZG8tZWxlbWVudHMtd2FybmluZ3MiLCJzZWFyY2hQc2V1ZG9FbGVtZW50c1dhcm5pbmdzIl0sWyJkYXRhLXNlYXJjaC1wc2V1ZG8tZWxlbWVudHMtZnVsbC1zY2FuIiwic2VhcmNoUHNldWRvRWxlbWVudHNGdWxsU2NhbiJdLFsiZGF0YS1vYnNlcnZlLW11dGF0aW9ucyIsIm9ic2VydmVNdXRhdGlvbnMiXSxbImRhdGEtbXV0YXRlLWFwcHJvYWNoIiwibXV0YXRlQXBwcm9hY2giXSxbImRhdGEta2VlcC1vcmlnaW5hbC1zb3VyY2UiLCJrZWVwT3JpZ2luYWxTb3VyY2UiXSxbImRhdGEtbWVhc3VyZS1wZXJmb3JtYW5jZSIsIm1lYXN1cmVQZXJmb3JtYW5jZSJdLFsiZGF0YS1zaG93LW1pc3NpbmctaWNvbnMiLCJzaG93TWlzc2luZ0ljb25zIl1dLEZTdC5mb3JFYWNoKGZ1bmN0aW9uKHMpe3ZhciBlPVJyZShzLDIpLHQ9ZVswXSxhPWVbMV0scj1OVmEoQVZhKHQpKTtyIT1udWxsJiYocWtbYV09cil9KSk7QlN0PXtzdHlsZURlZmF1bHQ6InNvbGlkIixmYW1pbHlEZWZhdWx0Ol9vLGNzc1ByZWZpeDpMU3QscmVwbGFjZW1lbnRDbGFzczpFU3QsYXV0b1JlcGxhY2VTdmc6ITAsYXV0b0FkZENzczohMCxzZWFyY2hQc2V1ZG9FbGVtZW50czohMSxzZWFyY2hQc2V1ZG9FbGVtZW50c1dhcm5pbmdzOiEwLHNlYXJjaFBzZXVkb0VsZW1lbnRzRnVsbFNjYW46ITEsb2JzZXJ2ZU11dGF0aW9uczohMCxtdXRhdGVBcHByb2FjaDoiYXN5bmMiLGtlZXBPcmlnaW5hbFNvdXJjZTohMCxtZWFzdXJlUGVyZm9ybWFuY2U6ITEsc2hvd01pc3NpbmdJY29uczohMH07cWsuZmFtaWx5UHJlZml4JiYocWsuY3NzUHJlZml4PXFrLmZhbWlseVByZWZpeCk7d2I9ZHQoZHQoe30sQlN0KSxxayk7d2IuYXV0b1JlcGxhY2VTdmd8fCh3Yi5vYnNlcnZlTXV0YXRpb25zPSExKTtXdD17fTtPYmplY3Qua2V5cyhCU3QpLmZvckVhY2goZnVuY3Rpb24ocyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KFd0LHMse2VudW1lcmFibGU6ITAsc2V0OmkoZnVuY3Rpb24odCl7d2Jbc109dCxqay5mb3JFYWNoKGZ1bmN0aW9uKGEpe3JldHVybiBhKFd0KX0pfSwic2V0IiksZ2V0OmkoZnVuY3Rpb24oKXtyZXR1cm4gd2Jbc119LCJnZXQiKX0pfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFd0LCJmYW1pbHlQcmVmaXgiLHtlbnVtZXJhYmxlOiEwLHNldDppKGZ1bmN0aW9uKGUpe3diLmNzc1ByZWZpeD1lLGprLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQoV3QpfSl9LCJzZXQiKSxnZXQ6aShmdW5jdGlvbigpe3JldHVybiB3Yi5jc3NQcmVmaXh9LCJnZXQiKX0pLG5oLkZvbnRBd2Vzb21lQ29uZmlnPVd0O2prPVtdO2koUlZhLCJvbkNoYW5nZSIpO2xoPUc1ZSxNZD17c2l6ZToxNix4OjAseTowLHJvdGF0ZTowLGZsaXBYOiExLGZsaXBZOiExfTtpKE9WYSwiaW5zZXJ0Q3NzIik7RlZhPSIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiI7aShIU3QsIm5leHRVbmlxdWVJZCIpO2koa2IsInRvQXJyYXkiKTtpKGE4ZSwiY2xhc3NBcnJheSIpO2kocVN0LCJodG1sRXNjYXBlIik7aShCVmEsImpvaW5BdHRyaWJ1dGVzIik7aShIcmUsImpvaW5TdHlsZXMiKTtpKHM4ZSwidHJhbnNmb3JtSXNNZWFuaW5nZnVsIik7aShIVmEsInRyYW5zZm9ybUZvclN2ZyIpO2kocVZhLCJ0cmFuc2Zvcm1Gb3JDc3MiKTtqVmE9YDpyb290LCA6aG9zdCB7CiAgLS1mYS1mb250LXNvbGlkOiBub3JtYWwgOTAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBGcmVlJzsKICAtLWZhLWZvbnQtcmVndWxhcjogbm9ybWFsIDQwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgRnJlZSc7CiAgLS1mYS1mb250LWxpZ2h0OiBub3JtYWwgMzAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBQcm8nOwogIC0tZmEtZm9udC10aGluOiBub3JtYWwgMTAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBQcm8nOwogIC0tZmEtZm9udC1kdW90b25lOiBub3JtYWwgOTAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBEdW90b25lJzsKICAtLWZhLWZvbnQtZHVvdG9uZS1yZWd1bGFyOiBub3JtYWwgNDAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBEdW90b25lJzsKICAtLWZhLWZvbnQtZHVvdG9uZS1saWdodDogbm9ybWFsIDMwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgRHVvdG9uZSc7CiAgLS1mYS1mb250LWR1b3RvbmUtdGhpbjogbm9ybWFsIDEwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgRHVvdG9uZSc7CiAgLS1mYS1mb250LWJyYW5kczogbm9ybWFsIDQwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgQnJhbmRzJzsKICAtLWZhLWZvbnQtc2hhcnAtc29saWQ6IG5vcm1hbCA5MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IFNoYXJwJzsKICAtLWZhLWZvbnQtc2hhcnAtcmVndWxhcjogbm9ybWFsIDQwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgU2hhcnAnOwogIC0tZmEtZm9udC1zaGFycC1saWdodDogbm9ybWFsIDMwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgU2hhcnAnOwogIC0tZmEtZm9udC1zaGFycC10aGluOiBub3JtYWwgMTAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBTaGFycCc7CiAgLS1mYS1mb250LXNoYXJwLWR1b3RvbmUtc29saWQ6IG5vcm1hbCA5MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IFNoYXJwIER1b3RvbmUnOwogIC0tZmEtZm9udC1zaGFycC1kdW90b25lLXJlZ3VsYXI6IG5vcm1hbCA0MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IFNoYXJwIER1b3RvbmUnOwogIC0tZmEtZm9udC1zaGFycC1kdW90b25lLWxpZ2h0OiBub3JtYWwgMzAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBTaGFycCBEdW90b25lJzsKICAtLWZhLWZvbnQtc2hhcnAtZHVvdG9uZS10aGluOiBub3JtYWwgMTAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBTaGFycCBEdW90b25lJzsKICAtLWZhLWZvbnQtc2xhYi1yZWd1bGFyOiBub3JtYWwgNDAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBTbGFiJzsKICAtLWZhLWZvbnQtc2xhYi1wcmVzcy1yZWd1bGFyOiBub3JtYWwgNDAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBTbGFiIFByZXNzJzsKICAtLWZhLWZvbnQtd2hpdGVib2FyZC1zZW1pYm9sZDogbm9ybWFsIDYwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgV2hpdGVib2FyZCc7CiAgLS1mYS1mb250LXRodW1icHJpbnQtbGlnaHQ6IG5vcm1hbCAzMDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IFRodW1icHJpbnQnOwogIC0tZmEtZm9udC1ub3Rkb2ctc29saWQ6IG5vcm1hbCA5MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IE5vdGRvZyc7CiAgLS1mYS1mb250LW5vdGRvZy1kdW8tc29saWQ6IG5vcm1hbCA5MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IE5vdGRvZyBEdW8nOwogIC0tZmEtZm9udC1ldGNoLXNvbGlkOiBub3JtYWwgOTAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBFdGNoJzsKICAtLWZhLWZvbnQtZ3JhcGhpdGUtdGhpbjogbm9ybWFsIDEwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgR3JhcGhpdGUnOwogIC0tZmEtZm9udC1qZWxseS1yZWd1bGFyOiBub3JtYWwgNDAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBKZWxseSc7CiAgLS1mYS1mb250LWplbGx5LWZpbGwtcmVndWxhcjogbm9ybWFsIDQwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgSmVsbHkgRmlsbCc7CiAgLS1mYS1mb250LWplbGx5LWR1by1yZWd1bGFyOiBub3JtYWwgNDAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBKZWxseSBEdW8nOwogIC0tZmEtZm9udC1jaGlzZWwtcmVndWxhcjogbm9ybWFsIDQwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgQ2hpc2VsJzsKICAtLWZhLWZvbnQtdXRpbGl0eS1zZW1pYm9sZDogbm9ybWFsIDYwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgVXRpbGl0eSc7CiAgLS1mYS1mb250LXV0aWxpdHktZHVvLXNlbWlib2xkOiBub3JtYWwgNjAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBVdGlsaXR5IER1byc7CiAgLS1mYS1mb250LXV0aWxpdHktZmlsbC1zZW1pYm9sZDogbm9ybWFsIDYwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgVXRpbGl0eSBGaWxsJzsKfQoKLnN2Zy1pbmxpbmUtLWZhIHsKICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsKICBkaXNwbGF5OiB2YXIoLS1mYS1kaXNwbGF5LCBpbmxpbmUtYmxvY2spOwogIGhlaWdodDogMWVtOwogIG92ZXJmbG93OiB2aXNpYmxlOwogIHZlcnRpY2FsLWFsaWduOiAtMC4xMjVlbTsKICB3aWR0aDogdmFyKC0tZmEtd2lkdGgsIDEuMjVlbSk7Cn0KLnN2Zy1pbmxpbmUtLWZhLmZhLTJ4cyB7CiAgdmVydGljYWwtYWxpZ246IDAuMWVtOwp9Ci5zdmctaW5saW5lLS1mYS5mYS14cyB7CiAgdmVydGljYWwtYWxpZ246IDBlbTsKfQouc3ZnLWlubGluZS0tZmEuZmEtc20gewogIHZlcnRpY2FsLWFsaWduOiAtMC4wNzE0Mjg1NzE0ZW07Cn0KLnN2Zy1pbmxpbmUtLWZhLmZhLWxnIHsKICB2ZXJ0aWNhbC1hbGlnbjogLTAuMmVtOwp9Ci5zdmctaW5saW5lLS1mYS5mYS14bCB7CiAgdmVydGljYWwtYWxpZ246IC0wLjI1ZW07Cn0KLnN2Zy1pbmxpbmUtLWZhLmZhLTJ4bCB7CiAgdmVydGljYWwtYWxpZ246IC0wLjMxMjVlbTsKfQouc3ZnLWlubGluZS0tZmEuZmEtcHVsbC1sZWZ0LAouc3ZnLWlubGluZS0tZmEgLmZhLXB1bGwtc3RhcnQgewogIGZsb2F0OiBpbmxpbmUtc3RhcnQ7CiAgbWFyZ2luLWlubGluZS1lbmQ6IHZhcigtLWZhLXB1bGwtbWFyZ2luLCAwLjNlbSk7Cn0KLnN2Zy1pbmxpbmUtLWZhLmZhLXB1bGwtcmlnaHQsCi5zdmctaW5saW5lLS1mYSAuZmEtcHVsbC1lbmQgewogIGZsb2F0OiBpbmxpbmUtZW5kOwogIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IHZhcigtLWZhLXB1bGwtbWFyZ2luLCAwLjNlbSk7Cn0KLnN2Zy1pbmxpbmUtLWZhLmZhLWxpIHsKICB3aWR0aDogdmFyKC0tZmEtbGktd2lkdGgsIDJlbSk7CiAgaW5zZXQtaW5saW5lLXN0YXJ0OiBjYWxjKC0xICogdmFyKC0tZmEtbGktd2lkdGgsIDJlbSkpOwogIGluc2V0LWJsb2NrLXN0YXJ0OiAwLjI1ZW07IC8qIHN5bmNpbmcgdmVydGljYWwgYWxpZ25tZW50IHdpdGggV2ViIEZvbnQgcmVuZGVyaW5nICovCn0KCi5mYS1sYXllcnMtY291bnRlciwgLmZhLWxheWVycy10ZXh0IHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLmZhLWxheWVycyB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGhlaWdodDogMWVtOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgdmVydGljYWwtYWxpZ246IC0wLjEyNWVtOwogIHdpZHRoOiB2YXIoLS1mYS13aWR0aCwgMS4yNWVtKTsKfQouZmEtbGF5ZXJzIC5zdmctaW5saW5lLS1mYSB7CiAgaW5zZXQ6IDA7CiAgbWFyZ2luOiBhdXRvOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyOwp9CgouZmEtbGF5ZXJzLXRleHQgewogIGxlZnQ6IDUwJTsKICB0b3A6IDUwJTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyOwp9CgouZmEtbGF5ZXJzLWNvdW50ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWZhLWNvdW50ZXItYmFja2dyb3VuZC1jb2xvciwgI2ZmMjUzYSk7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tZmEtY291bnRlci1ib3JkZXItcmFkaXVzLCAxZW0pOwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgY29sb3I6IHZhcigtLWZhLWludmVyc2UsICNmZmYpOwogIGxpbmUtaGVpZ2h0OiB2YXIoLS1mYS1jb3VudGVyLWxpbmUtaGVpZ2h0LCAxKTsKICBtYXgtd2lkdGg6IHZhcigtLWZhLWNvdW50ZXItbWF4LXdpZHRoLCA1ZW0pOwogIG1pbi13aWR0aDogdmFyKC0tZmEtY291bnRlci1taW4td2lkdGgsIDEuNWVtKTsKICBvdmVyZmxvdzogaGlkZGVuOwogIHBhZGRpbmc6IHZhcigtLWZhLWNvdW50ZXItcGFkZGluZywgMC4yNWVtIDAuNWVtKTsKICByaWdodDogdmFyKC0tZmEtcmlnaHQsIDApOwogIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogIHRvcDogdmFyKC0tZmEtdG9wLCAwKTsKICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWNvdW50ZXItc2NhbGUsIDAuMjUpKTsKICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgcmlnaHQ7Cn0KCi5mYS1sYXllcnMtYm90dG9tLXJpZ2h0IHsKICBib3R0b206IHZhcigtLWZhLWJvdHRvbSwgMCk7CiAgcmlnaHQ6IHZhcigtLWZhLXJpZ2h0LCAwKTsKICB0b3A6IGF1dG87CiAgdHJhbnNmb3JtOiBzY2FsZSh2YXIoLS1mYS1sYXllcnMtc2NhbGUsIDAuMjUpKTsKICB0cmFuc2Zvcm0tb3JpZ2luOiBib3R0b20gcmlnaHQ7Cn0KCi5mYS1sYXllcnMtYm90dG9tLWxlZnQgewogIGJvdHRvbTogdmFyKC0tZmEtYm90dG9tLCAwKTsKICBsZWZ0OiB2YXIoLS1mYS1sZWZ0LCAwKTsKICByaWdodDogYXV0bzsKICB0b3A6IGF1dG87CiAgdHJhbnNmb3JtOiBzY2FsZSh2YXIoLS1mYS1sYXllcnMtc2NhbGUsIDAuMjUpKTsKICB0cmFuc2Zvcm0tb3JpZ2luOiBib3R0b20gbGVmdDsKfQoKLmZhLWxheWVycy10b3AtcmlnaHQgewogIHRvcDogdmFyKC0tZmEtdG9wLCAwKTsKICByaWdodDogdmFyKC0tZmEtcmlnaHQsIDApOwogIHRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtbGF5ZXJzLXNjYWxlLCAwLjI1KSk7CiAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIHJpZ2h0Owp9CgouZmEtbGF5ZXJzLXRvcC1sZWZ0IHsKICBsZWZ0OiB2YXIoLS1mYS1sZWZ0LCAwKTsKICByaWdodDogYXV0bzsKICB0b3A6IHZhcigtLWZhLXRvcCwgMCk7CiAgdHJhbnNmb3JtOiBzY2FsZSh2YXIoLS1mYS1sYXllcnMtc2NhbGUsIDAuMjUpKTsKICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgbGVmdDsKfQoKLmZhLTF4IHsKICBmb250LXNpemU6IDFlbTsKfQoKLmZhLTJ4IHsKICBmb250LXNpemU6IDJlbTsKfQoKLmZhLTN4IHsKICBmb250LXNpemU6IDNlbTsKfQoKLmZhLTR4IHsKICBmb250LXNpemU6IDRlbTsKfQoKLmZhLTV4IHsKICBmb250LXNpemU6IDVlbTsKfQoKLmZhLTZ4IHsKICBmb250LXNpemU6IDZlbTsKfQoKLmZhLTd4IHsKICBmb250LXNpemU6IDdlbTsKfQoKLmZhLTh4IHsKICBmb250LXNpemU6IDhlbTsKfQoKLmZhLTl4IHsKICBmb250LXNpemU6IDllbTsKfQoKLmZhLTEweCB7CiAgZm9udC1zaXplOiAxMGVtOwp9CgouZmEtMnhzIHsKICBmb250LXNpemU6IGNhbGMoMTAgLyAxNiAqIDFlbSk7IC8qIGNvbnZlcnRzIGEgMTBweCBzaXplIGludG8gYW4gZW0tYmFzZWQgdmFsdWUgdGhhdCdzIHJlbGF0aXZlIHRvIHRoZSBzY2FsZSdzIDE2cHggYmFzZSAqLwogIGxpbmUtaGVpZ2h0OiBjYWxjKDEgLyAxMCAqIDFlbSk7IC8qIHNldHMgdGhlIGxpbmUtaGVpZ2h0IG9mIHRoZSBpY29uIGJhY2sgdG8gdGhhdCBvZiBpdCdzIHBhcmVudCAqLwogIHZlcnRpY2FsLWFsaWduOiBjYWxjKCg2IC8gMTAgLSAwLjM3NSkgKiAxZW0pOyAvKiB2ZXJ0aWNhbGx5IGNlbnRlcnMgdGhlIGljb24gdGFraW5nIGludG8gYWNjb3VudCB0aGUgc3Vycm91bmRpbmcgdGV4dCdzIGRlc2NlbmRlciAqLwp9CgouZmEteHMgewogIGZvbnQtc2l6ZTogY2FsYygxMiAvIDE2ICogMWVtKTsgLyogY29udmVydHMgYSAxMnB4IHNpemUgaW50byBhbiBlbS1iYXNlZCB2YWx1ZSB0aGF0J3MgcmVsYXRpdmUgdG8gdGhlIHNjYWxlJ3MgMTZweCBiYXNlICovCiAgbGluZS1oZWlnaHQ6IGNhbGMoMSAvIDEyICogMWVtKTsgLyogc2V0cyB0aGUgbGluZS1oZWlnaHQgb2YgdGhlIGljb24gYmFjayB0byB0aGF0IG9mIGl0J3MgcGFyZW50ICovCiAgdmVydGljYWwtYWxpZ246IGNhbGMoKDYgLyAxMiAtIDAuMzc1KSAqIDFlbSk7IC8qIHZlcnRpY2FsbHkgY2VudGVycyB0aGUgaWNvbiB0YWtpbmcgaW50byBhY2NvdW50IHRoZSBzdXJyb3VuZGluZyB0ZXh0J3MgZGVzY2VuZGVyICovCn0KCi5mYS1zbSB7CiAgZm9udC1zaXplOiBjYWxjKDE0IC8gMTYgKiAxZW0pOyAvKiBjb252ZXJ0cyBhIDE0cHggc2l6ZSBpbnRvIGFuIGVtLWJhc2VkIHZhbHVlIHRoYXQncyByZWxhdGl2ZSB0byB0aGUgc2NhbGUncyAxNnB4IGJhc2UgKi8KICBsaW5lLWhlaWdodDogY2FsYygxIC8gMTQgKiAxZW0pOyAvKiBzZXRzIHRoZSBsaW5lLWhlaWdodCBvZiB0aGUgaWNvbiBiYWNrIHRvIHRoYXQgb2YgaXQncyBwYXJlbnQgKi8KICB2ZXJ0aWNhbC1hbGlnbjogY2FsYygoNiAvIDE0IC0gMC4zNzUpICogMWVtKTsgLyogdmVydGljYWxseSBjZW50ZXJzIHRoZSBpY29uIHRha2luZyBpbnRvIGFjY291bnQgdGhlIHN1cnJvdW5kaW5nIHRleHQncyBkZXNjZW5kZXIgKi8KfQoKLmZhLWxnIHsKICBmb250LXNpemU6IGNhbGMoMjAgLyAxNiAqIDFlbSk7IC8qIGNvbnZlcnRzIGEgMjBweCBzaXplIGludG8gYW4gZW0tYmFzZWQgdmFsdWUgdGhhdCdzIHJlbGF0aXZlIHRvIHRoZSBzY2FsZSdzIDE2cHggYmFzZSAqLwogIGxpbmUtaGVpZ2h0OiBjYWxjKDEgLyAyMCAqIDFlbSk7IC8qIHNldHMgdGhlIGxpbmUtaGVpZ2h0IG9mIHRoZSBpY29uIGJhY2sgdG8gdGhhdCBvZiBpdCdzIHBhcmVudCAqLwogIHZlcnRpY2FsLWFsaWduOiBjYWxjKCg2IC8gMjAgLSAwLjM3NSkgKiAxZW0pOyAvKiB2ZXJ0aWNhbGx5IGNlbnRlcnMgdGhlIGljb24gdGFraW5nIGludG8gYWNjb3VudCB0aGUgc3Vycm91bmRpbmcgdGV4dCdzIGRlc2NlbmRlciAqLwp9CgouZmEteGwgewogIGZvbnQtc2l6ZTogY2FsYygyNCAvIDE2ICogMWVtKTsgLyogY29udmVydHMgYSAyNHB4IHNpemUgaW50byBhbiBlbS1iYXNlZCB2YWx1ZSB0aGF0J3MgcmVsYXRpdmUgdG8gdGhlIHNjYWxlJ3MgMTZweCBiYXNlICovCiAgbGluZS1oZWlnaHQ6IGNhbGMoMSAvIDI0ICogMWVtKTsgLyogc2V0cyB0aGUgbGluZS1oZWlnaHQgb2YgdGhlIGljb24gYmFjayB0byB0aGF0IG9mIGl0J3MgcGFyZW50ICovCiAgdmVydGljYWwtYWxpZ246IGNhbGMoKDYgLyAyNCAtIDAuMzc1KSAqIDFlbSk7IC8qIHZlcnRpY2FsbHkgY2VudGVycyB0aGUgaWNvbiB0YWtpbmcgaW50byBhY2NvdW50IHRoZSBzdXJyb3VuZGluZyB0ZXh0J3MgZGVzY2VuZGVyICovCn0KCi5mYS0yeGwgewogIGZvbnQtc2l6ZTogY2FsYygzMiAvIDE2ICogMWVtKTsgLyogY29udmVydHMgYSAzMnB4IHNpemUgaW50byBhbiBlbS1iYXNlZCB2YWx1ZSB0aGF0J3MgcmVsYXRpdmUgdG8gdGhlIHNjYWxlJ3MgMTZweCBiYXNlICovCiAgbGluZS1oZWlnaHQ6IGNhbGMoMSAvIDMyICogMWVtKTsgLyogc2V0cyB0aGUgbGluZS1oZWlnaHQgb2YgdGhlIGljb24gYmFjayB0byB0aGF0IG9mIGl0J3MgcGFyZW50ICovCiAgdmVydGljYWwtYWxpZ246IGNhbGMoKDYgLyAzMiAtIDAuMzc1KSAqIDFlbSk7IC8qIHZlcnRpY2FsbHkgY2VudGVycyB0aGUgaWNvbiB0YWtpbmcgaW50byBhY2NvdW50IHRoZSBzdXJyb3VuZGluZyB0ZXh0J3MgZGVzY2VuZGVyICovCn0KCi5mYS13aWR0aC1hdXRvIHsKICAtLWZhLXdpZHRoOiBhdXRvOwp9CgouZmEtZncsCi5mYS13aWR0aC1maXhlZCB7CiAgLS1mYS13aWR0aDogMS4yNWVtOwp9CgouZmEtdWwgewogIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsKICBtYXJnaW4taW5saW5lLXN0YXJ0OiB2YXIoLS1mYS1saS1tYXJnaW4sIDIuNWVtKTsKICBwYWRkaW5nLWlubGluZS1zdGFydDogMDsKfQouZmEtdWwgPiBsaSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouZmEtbGkgewogIGluc2V0LWlubGluZS1zdGFydDogY2FsYygtMSAqIHZhcigtLWZhLWxpLXdpZHRoLCAyZW0pKTsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHdpZHRoOiB2YXIoLS1mYS1saS13aWR0aCwgMmVtKTsKICBsaW5lLWhlaWdodDogaW5oZXJpdDsKfQoKLyogSGVhZHMgVXA6IEJvcmRlcmVkIEljb25zIHdpbGwgbm90IGJlIHN1cHBvcnRlZCBpbiB0aGUgZnV0dXJlIQogIC0gVGhpcyBmZWF0dXJlIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlIG9mIEZvbnQgQXdlc29tZSAodjgpIQogIC0gWW91IG1heSBjb250aW51ZSB0byB1c2UgaXQgaW4gdGhpcyB2ZXJzaW9uICp2NyksIGJ1dCBpdCB3aWxsIG5vdCBiZSBzdXBwb3J0ZWQgaW4gRm9udCBBd2Vzb21lIHY4LgoqLwovKiBOb3RlczoKKiAtLUB7di4kY3NzLXByZWZpeH0tYm9yZGVyLXdpZHRoID0gMS8xNiBieSBkZWZhdWx0ICh0byByZW5kZXIgYXMgfjFweCBiYXNlZCBvbiBhIDE2cHggZGVmYXVsdCBmb250LXNpemUpCiogLS1Ae3YuJGNzcy1wcmVmaXh9LWJvcmRlci1wYWRkaW5nID0KICAqKiAzLzE2IGZvciB2ZXJ0aWNhbCBwYWRkaW5nICh0byBnaXZlIH4ycHggb2YgdmVydGljYWwgd2hpdGVzcGFjZSBhcm91bmQgYW4gaWNvbiBjb25zaWRlcmluZyBpdCdzIHZlcnRpY2FsIGFsaWdubWVudCkKICAqKiA0LzE2IGZvciBob3Jpem9udGFsIHBhZGRpbmcgKHRvIGdpdmUgfjRweCBvZiBob3Jpem9udGFsIHdoaXRlc3BhY2UgYXJvdW5kIGFuIGljb24pCiovCi5mYS1ib3JkZXIgewogIGJvcmRlci1jb2xvcjogdmFyKC0tZmEtYm9yZGVyLWNvbG9yLCAjZWVlKTsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1mYS1ib3JkZXItcmFkaXVzLCAwLjFlbSk7CiAgYm9yZGVyLXN0eWxlOiB2YXIoLS1mYS1ib3JkZXItc3R5bGUsIHNvbGlkKTsKICBib3JkZXItd2lkdGg6IHZhcigtLWZhLWJvcmRlci13aWR0aCwgMC4wNjI1ZW0pOwogIGJveC1zaXppbmc6IHZhcigtLWZhLWJvcmRlci1ib3gtc2l6aW5nLCBjb250ZW50LWJveCk7CiAgcGFkZGluZzogdmFyKC0tZmEtYm9yZGVyLXBhZGRpbmcsIDAuMTg3NWVtIDAuMjVlbSk7Cn0KCi5mYS1wdWxsLWxlZnQsCi5mYS1wdWxsLXN0YXJ0IHsKICBmbG9hdDogaW5saW5lLXN0YXJ0OwogIG1hcmdpbi1pbmxpbmUtZW5kOiB2YXIoLS1mYS1wdWxsLW1hcmdpbiwgMC4zZW0pOwp9CgouZmEtcHVsbC1yaWdodCwKLmZhLXB1bGwtZW5kIHsKICBmbG9hdDogaW5saW5lLWVuZDsKICBtYXJnaW4taW5saW5lLXN0YXJ0OiB2YXIoLS1mYS1wdWxsLW1hcmdpbiwgMC4zZW0pOwp9CgouZmEtYmVhdCB7CiAgYW5pbWF0aW9uLW5hbWU6IGZhLWJlYXQ7CiAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1mYS1hbmltYXRpb24tZGVsYXksIDBzKTsKICBhbmltYXRpb24tZGlyZWN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZGlyZWN0aW9uLCBub3JtYWwpOwogIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWR1cmF0aW9uLCAxcyk7CiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogdmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgaW5maW5pdGUpOwogIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsIGVhc2UtaW4tb3V0KTsKfQoKLmZhLWJvdW5jZSB7CiAgYW5pbWF0aW9uLW5hbWU6IGZhLWJvdW5jZTsKICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMHMpOwogIGFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDFzKTsKICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7CiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZywgY3ViaWMtYmV6aWVyKDAuMjgsIDAuODQsIDAuNDIsIDEpKTsKfQoKLmZhLWZhZGUgewogIGFuaW1hdGlvbi1uYW1lOiBmYS1mYWRlOwogIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LCAwcyk7CiAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTsKICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwgMXMpOwogIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IHZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsIGluZmluaXRlKTsKICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjYsIDEpKTsKfQoKLmZhLWJlYXQtZmFkZSB7CiAgYW5pbWF0aW9uLW5hbWU6IGZhLWJlYXQtZmFkZTsKICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMHMpOwogIGFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDFzKTsKICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7CiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZywgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC42LCAxKSk7Cn0KCi5mYS1mbGlwIHsKICBhbmltYXRpb24tbmFtZTogZmEtZmxpcDsKICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMHMpOwogIGFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDFzKTsKICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7CiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZywgZWFzZS1pbi1vdXQpOwp9CgouZmEtc2hha2UgewogIGFuaW1hdGlvbi1uYW1lOiBmYS1zaGFrZTsKICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMHMpOwogIGFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDFzKTsKICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7CiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZywgbGluZWFyKTsKfQoKLmZhLXNwaW4gewogIGFuaW1hdGlvbi1uYW1lOiBmYS1zcGluOwogIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LCAwcyk7CiAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTsKICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwgMnMpOwogIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IHZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsIGluZmluaXRlKTsKICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBsaW5lYXIpOwp9CgouZmEtc3Bpbi1yZXZlcnNlIHsKICAtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb246IHJldmVyc2U7Cn0KCi5mYS1wdWxzZSwKLmZhLXNwaW4tcHVsc2UgewogIGFuaW1hdGlvbi1uYW1lOiBmYS1zcGluOwogIGFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDFzKTsKICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7CiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZywgc3RlcHMoOCkpOwp9CgpAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogIC5mYS1iZWF0LAogIC5mYS1ib3VuY2UsCiAgLmZhLWZhZGUsCiAgLmZhLWJlYXQtZmFkZSwKICAuZmEtZmxpcCwKICAuZmEtcHVsc2UsCiAgLmZhLXNoYWtlLAogIC5mYS1zcGluLAogIC5mYS1zcGluLXB1bHNlIHsKICAgIGFuaW1hdGlvbjogbm9uZSAhaW1wb3J0YW50OwogICAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50OwogIH0KfQpAa2V5ZnJhbWVzIGZhLWJlYXQgewogIDAlLCA5MCUgewogICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICB9CiAgNDUlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtYmVhdC1zY2FsZSwgMS4yNSkpOwogIH0KfQpAa2V5ZnJhbWVzIGZhLWJvdW5jZSB7CiAgMCUgewogICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKSB0cmFuc2xhdGVZKDApOwogIH0KICAxMCUgewogICAgdHJhbnNmb3JtOiBzY2FsZSh2YXIoLS1mYS1ib3VuY2Utc3RhcnQtc2NhbGUteCwgMS4xKSwgdmFyKC0tZmEtYm91bmNlLXN0YXJ0LXNjYWxlLXksIDAuOSkpIHRyYW5zbGF0ZVkoMCk7CiAgfQogIDMwJSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWJvdW5jZS1qdW1wLXNjYWxlLXgsIDAuOSksIHZhcigtLWZhLWJvdW5jZS1qdW1wLXNjYWxlLXksIDEuMSkpIHRyYW5zbGF0ZVkodmFyKC0tZmEtYm91bmNlLWhlaWdodCwgLTAuNWVtKSk7CiAgfQogIDUwJSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWJvdW5jZS1sYW5kLXNjYWxlLXgsIDEuMDUpLCB2YXIoLS1mYS1ib3VuY2UtbGFuZC1zY2FsZS15LCAwLjk1KSkgdHJhbnNsYXRlWSgwKTsKICB9CiAgNTclIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSwgMSkgdHJhbnNsYXRlWSh2YXIoLS1mYS1ib3VuY2UtcmVib3VuZCwgLTAuMTI1ZW0pKTsKICB9CiAgNjQlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSwgMSkgdHJhbnNsYXRlWSgwKTsKICB9CiAgMTAwJSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEsIDEpIHRyYW5zbGF0ZVkoMCk7CiAgfQp9CkBrZXlmcmFtZXMgZmEtZmFkZSB7CiAgNTAlIHsKICAgIG9wYWNpdHk6IHZhcigtLWZhLWZhZGUtb3BhY2l0eSwgMC40KTsKICB9Cn0KQGtleWZyYW1lcyBmYS1iZWF0LWZhZGUgewogIDAlLCAxMDAlIHsKICAgIG9wYWNpdHk6IHZhcigtLWZhLWJlYXQtZmFkZS1vcGFjaXR5LCAwLjQpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICB9CiAgNTAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWJlYXQtZmFkZS1zY2FsZSwgMS4xMjUpKTsKICB9Cn0KQGtleWZyYW1lcyBmYS1mbGlwIHsKICA1MCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUzZCh2YXIoLS1mYS1mbGlwLXgsIDApLCB2YXIoLS1mYS1mbGlwLXksIDEpLCB2YXIoLS1mYS1mbGlwLXosIDApLCB2YXIoLS1mYS1mbGlwLWFuZ2xlLCAtMTgwZGVnKSk7CiAgfQp9CkBrZXlmcmFtZXMgZmEtc2hha2UgewogIDAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKC0xNWRlZyk7CiAgfQogIDQlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDE1ZGVnKTsKICB9CiAgOCUsIDI0JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtMThkZWcpOwogIH0KICAxMiUsIDI4JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxOGRlZyk7CiAgfQogIDE2JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtMjJkZWcpOwogIH0KICAyMCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMjJkZWcpOwogIH0KICAzMiUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoLTEyZGVnKTsKICB9CiAgMzYlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDEyZGVnKTsKICB9CiAgNDAlLCAxMDAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogIH0KfQpAa2V5ZnJhbWVzIGZhLXNwaW4gewogIDAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogIH0KICAxMDAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgfQp9Ci5mYS1yb3RhdGUtOTAgewogIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKfQoKLmZhLXJvdGF0ZS0xODAgewogIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7Cn0KCi5mYS1yb3RhdGUtMjcwIHsKICB0cmFuc2Zvcm06IHJvdGF0ZSgyNzBkZWcpOwp9CgouZmEtZmxpcC1ob3Jpem9udGFsIHsKICB0cmFuc2Zvcm06IHNjYWxlKC0xLCAxKTsKfQoKLmZhLWZsaXAtdmVydGljYWwgewogIHRyYW5zZm9ybTogc2NhbGUoMSwgLTEpOwp9CgouZmEtZmxpcC1ib3RoLAouZmEtZmxpcC1ob3Jpem9udGFsLmZhLWZsaXAtdmVydGljYWwgewogIHRyYW5zZm9ybTogc2NhbGUoLTEsIC0xKTsKfQoKLmZhLXJvdGF0ZS1ieSB7CiAgdHJhbnNmb3JtOiByb3RhdGUodmFyKC0tZmEtcm90YXRlLWFuZ2xlLCAwKSk7Cn0KCi5zdmctaW5saW5lLS1mYSAuZmEtcHJpbWFyeSB7CiAgZmlsbDogdmFyKC0tZmEtcHJpbWFyeS1jb2xvciwgY3VycmVudENvbG9yKTsKICBvcGFjaXR5OiB2YXIoLS1mYS1wcmltYXJ5LW9wYWNpdHksIDEpOwp9Cgouc3ZnLWlubGluZS0tZmEgLmZhLXNlY29uZGFyeSB7CiAgZmlsbDogdmFyKC0tZmEtc2Vjb25kYXJ5LWNvbG9yLCBjdXJyZW50Q29sb3IpOwogIG9wYWNpdHk6IHZhcigtLWZhLXNlY29uZGFyeS1vcGFjaXR5LCAwLjQpOwp9Cgouc3ZnLWlubGluZS0tZmEuZmEtc3dhcC1vcGFjaXR5IC5mYS1wcmltYXJ5IHsKICBvcGFjaXR5OiB2YXIoLS1mYS1zZWNvbmRhcnktb3BhY2l0eSwgMC40KTsKfQoKLnN2Zy1pbmxpbmUtLWZhLmZhLXN3YXAtb3BhY2l0eSAuZmEtc2Vjb25kYXJ5IHsKICBvcGFjaXR5OiB2YXIoLS1mYS1wcmltYXJ5LW9wYWNpdHksIDEpOwp9Cgouc3ZnLWlubGluZS0tZmEgbWFzayAuZmEtcHJpbWFyeSwKLnN2Zy1pbmxpbmUtLWZhIG1hc2sgLmZhLXNlY29uZGFyeSB7CiAgZmlsbDogYmxhY2s7Cn0KCi5zdmctaW5saW5lLS1mYS5mYS1pbnZlcnNlIHsKICBmaWxsOiB2YXIoLS1mYS1pbnZlcnNlLCAjZmZmKTsKfQoKLmZhLXN0YWNrIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgaGVpZ2h0OiAyZW07CiAgbGluZS1oZWlnaHQ6IDJlbTsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICB3aWR0aDogMi41ZW07Cn0KCi5mYS1pbnZlcnNlIHsKICBjb2xvcjogdmFyKC0tZmEtaW52ZXJzZSwgI2ZmZik7Cn0KCi5zdmctaW5saW5lLS1mYS5mYS1zdGFjay0xeCB7CiAgLS1mYS13aWR0aDogMS4yNWVtOwogIGhlaWdodDogMWVtOwogIHdpZHRoOiB2YXIoLS1mYS13aWR0aCk7Cn0KLnN2Zy1pbmxpbmUtLWZhLmZhLXN0YWNrLTJ4IHsKICAtLWZhLXdpZHRoOiAyLjVlbTsKICBoZWlnaHQ6IDJlbTsKICB3aWR0aDogdmFyKC0tZmEtd2lkdGgpOwp9CgouZmEtc3RhY2stMXgsCi5mYS1zdGFjay0yeCB7CiAgaW5zZXQ6IDA7CiAgbWFyZ2luOiBhdXRvOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB6LWluZGV4OiB2YXIoLS1mYS1zdGFjay16LWluZGV4LCBhdXRvKTsKfWA7aShqU3QsImNzcyIpO1ZTdD0hMTtpKGk4ZSwiZW5zdXJlQ3NzIik7VlZhPXttaXhvdXQ6aShmdW5jdGlvbigpe3JldHVybntkb206e2NzczpqU3QsaW5zZXJ0Q3NzOmk4ZX19fSwibWl4b3V0IiksaG9va3M6aShmdW5jdGlvbigpe3JldHVybntiZWZvcmVET01FbGVtZW50Q3JlYXRpb246aShmdW5jdGlvbigpe2k4ZSgpfSwiYmVmb3JlRE9NRWxlbWVudENyZWF0aW9uIiksYmVmb3JlSTJzdmc6aShmdW5jdGlvbigpe2k4ZSgpfSwiYmVmb3JlSTJzdmciKX19LCJob29rcyIpfSxxMD1uaHx8e307cTBbSDBdfHwocTBbSDBdPXt9KSxxMFtIMF0uc3R5bGVzfHwocTBbSDBdLnN0eWxlcz17fSkscTBbSDBdLmhvb2tzfHwocTBbSDBdLmhvb2tzPXt9KSxxMFtIMF0uc2hpbXN8fChxMFtIMF0uc2hpbXM9W10pO0gxPXEwW0gwXSxVU3Q9W10sV1N0PWkoZnVuY3Rpb24oKXtkaS5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixXU3QpLHFyZT0xLFVTdC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0pfSwibGlzdGVuZXIiKSxxcmU9ITE7QjAmJihxcmU9KGRpLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbD8vXmxvYWRlZHxeYy86L15sb2FkZWR8Xml8XmMvKS50ZXN0KGRpLnJlYWR5U3RhdGUpLHFyZXx8ZGkuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsV1N0KSk7aShVVmEsImRvbXJlYWR5Iik7aShWaywidG9IdG1sIik7aShHU3QsImljb25Gcm9tTWFwcGluZyIpO1dWYT1pKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGEscixuLG8pe3JldHVybiBlLmNhbGwodCxhLHIsbixvKX19LCJiaW5kSW50ZXJuYWw0IikscjhlPWkoZnVuY3Rpb24oZSx0LGEscil7dmFyIG49T2JqZWN0LmtleXMoZSksbz1uLmxlbmd0aCxsPXIhPT12b2lkIDA/V1ZhKHQscik6dCxwLGQsdTtmb3IoYT09PXZvaWQgMD8ocD0xLHU9ZVtuWzBdXSk6KHA9MCx1PWEpO3A8bztwKyspZD1uW3BdLHU9bCh1LGVbZF0sZCxlKTtyZXR1cm4gdX0sImZhc3RSZWR1Y2VPYmplY3QiKTtpKEtTdCwidG9IZXgiKTtpKFlTdCwibm9ybWFsaXplSWNvbnMiKTtpKG84ZSwiZGVmaW5lSWNvbnMiKTtuOGU9MSxxMT0yLE92aT1bW3ExLGFuKC9wYXRoIG9wYWNpdHk9IihbXiJdKikiLipkPSIoW14iXSopIi4qcGF0aC4qZD0iKFteIl0qKSIvLHtkMjoyLGQxOjN9KV0sW3ExLGFuKC9wYXRoIG9wYWNpdHk9IihbXiJdKikiLipkPSIoW14iXSopIi8se2QyOjJ9KV0sW244ZSxhbigvcGF0aCBmaWxsPSJjdXJyZW50Q29sb3IiLipkPSIoW14iXSspIi8se2QxOjF9KV1dLEZ2aT1bW3ExLGFuKC9wYXRoIGNsYXNzPSIoW14iXSpzZWNvbmRhcnlbXiJdKikiLipkPSIoW14iXSspIi4qcGF0aCBjbGFzcz0iKFteIl0qcHJpbWFyeVteIl0qKSIuKmQ9IihbXiJdKykiLyx7YXR0cjI6MSxkMjoyLGF0dHIxOjMsZDE6NH0pXSxbcTEsYW4oL3BhdGggY2xhc3M9IihbXiJdKnByaW1hcnlbXiJdKikiLipkPSIoW14iXSspIi4qcGF0aCBjbGFzcz0iKFteIl0qc2Vjb25kYXJ5W14iXSopIi4qZD0iKFteIl0rKSIvLHthdHRyMToxLGQxOjIsYXR0cjI6MyxkMjo0fSldLFtxMSxhbigvcGF0aCBjbGFzcz0iKFteIl0qcHJpbWFyeVteIl0qKSIuKmQ9IihbXiJdKykiLyx7YXR0cjE6MSxkMToyfSldLFtxMSxhbigvcGF0aCBjbGFzcz0iKFteIl0qc2Vjb25kYXJ5W14iXSopIi4qZD0iKFteIl0rKSIvLHthdHRyMjoxLGQyOjJ9KV0sW3ExLGFuKC9wYXRoIGQ9IihbXiJdKykiLipjbGFzcz0iKFteIl0qc2Vjb25kYXJ5W14iXSopIi4qcGF0aCBkPSIoW14iXSspIi4qY2xhc3M9IihbXiJdKnByaW1hcnlbXiJdKikiLyx7ZDI6MSxhdHRyMjoyLGQxOjMsYXR0cjE6NH0pXSxbcTEsYW4oL3BhdGggZD0iKFteIl0rKSIuKmNsYXNzPSIoW14iXSpwcmltYXJ5W14iXSopIi4qcGF0aCBkPSIoW14iXSspIi4qY2xhc3M9IihbXiJdKnNlY29uZGFyeVteIl0qKSIvLHtkMToxLGF0dHIxOjIsZDI6MyxhdHRyMjo0fSldLFtxMSxhbigvcGF0aCBkPSIoW14iXSspIi4qY2xhc3M9IihbXiJdKnByaW1hcnlbXiJdKikiLyx7ZDE6MSxhdHRyMToyfSldLFtxMSxhbigvcGF0aCBkPSIoW14iXSspIi4qY2xhc3M9IihbXiJdKnNlY29uZGFyeVteIl0qKSIvLHtkMjoxLGF0dHIyOjJ9KV0sW3ExLGFuKC9wYXRoIGQ9IihbXiJdKykiLipwYXRoIGQ9IihbXiJdKykiLyx7ZDE6MSxkMjoyfSldLFtuOGUsYW4oL3BhdGggZD0iKFteIl0rKSIvLHtkMToxfSldLFtuOGUsYW4oL3BhdGggc3R5bGU9IihbXiJdKykiLipkPSIoW14iXSspIi8se2F0dHIxOjEsZDE6Mn0pXV0sVWs9SDEuc3R5bGVzLEdWYT1IMS5zaGltcyxaU3Q9T2JqZWN0LmtleXMoSjVlKSxLVmE9WlN0LnJlZHVjZShmdW5jdGlvbihzLGUpe3JldHVybiBzW2VdPU9iamVjdC5rZXlzKEo1ZVtlXSksc30se30pLGw4ZT1udWxsLFhTdD17fSxRU3Q9e30sSlN0PXt9LGVfdD17fSx0X3Q9e307aShZVmEsImlzUmVzZXJ2ZWQiKTtpKFpWYSwiZ2V0SWNvbk5hbWUiKTthX3Q9aShmdW5jdGlvbigpe3ZhciBlPWkoZnVuY3Rpb24obil7cmV0dXJuIHI4ZShVayxmdW5jdGlvbihvLGwscCl7cmV0dXJuIG9bcF09cjhlKGwsbix7fSksb30se30pfSwibG9va3VwIik7WFN0PWUoZnVuY3Rpb24ocixuLG8pe2lmKG5bM10mJihyW25bM11dPW8pLG5bMl0pe3ZhciBsPW5bMl0uZmlsdGVyKGZ1bmN0aW9uKHApe3JldHVybiB0eXBlb2YgcD09Im51bWJlciJ9KTtsLmZvckVhY2goZnVuY3Rpb24ocCl7cltwLnRvU3RyaW5nKDE2KV09b30pfXJldHVybiByfSksUVN0PWUoZnVuY3Rpb24ocixuLG8pe2lmKHJbb109byxuWzJdKXt2YXIgbD1uWzJdLmZpbHRlcihmdW5jdGlvbihwKXtyZXR1cm4gdHlwZW9mIHA9PSJzdHJpbmcifSk7bC5mb3JFYWNoKGZ1bmN0aW9uKHApe3JbcF09b30pfXJldHVybiByfSksdF90PWUoZnVuY3Rpb24ocixuLG8pe3ZhciBsPW5bMl07cmV0dXJuIHJbb109byxsLmZvckVhY2goZnVuY3Rpb24ocCl7cltwXT1vfSkscn0pO3ZhciB0PSJmYXIiaW4gVWt8fFd0LmF1dG9GZXRjaFN2ZyxhPXI4ZShHVmEsZnVuY3Rpb24ocixuKXt2YXIgbz1uWzBdLGw9blsxXSxwPW5bMl07cmV0dXJuIGw9PT0iZmFyIiYmIXQmJihsPSJmYXMiKSx0eXBlb2Ygbz09InN0cmluZyImJihyLm5hbWVzW29dPXtwcmVmaXg6bCxpY29uTmFtZTpwfSksdHlwZW9mIG89PSJudW1iZXIiJiYoci51bmljb2Rlc1tvLnRvU3RyaW5nKDE2KV09e3ByZWZpeDpsLGljb25OYW1lOnB9KSxyfSx7bmFtZXM6e30sdW5pY29kZXM6e319KTtKU3Q9YS5uYW1lcyxlX3Q9YS51bmljb2RlcyxsOGU9anJlKFd0LnN0eWxlRGVmYXVsdCx7ZmFtaWx5Old0LmZhbWlseURlZmF1bHR9KX0sImJ1aWxkIik7UlZhKGZ1bmN0aW9uKHMpe2w4ZT1qcmUocy5zdHlsZURlZmF1bHQse2ZhbWlseTpXdC5mYW1pbHlEZWZhdWx0fSl9KSxhX3QoKTtpKGM4ZSwiYnlVbmljb2RlIik7aShYVmEsImJ5TGlnYXR1cmUiKTtpKFkzLCJieUFsaWFzIik7aShzX3QsImJ5T2xkTmFtZSIpO2koUVZhLCJieU9sZFVuaWNvZGUiKTtpKGNoLCJnZXREZWZhdWx0VXNhYmxlUHJlZml4Iik7aV90PWkoZnVuY3Rpb24oKXtyZXR1cm57cHJlZml4Om51bGwsaWNvbk5hbWU6bnVsbCxyZXN0OltdfX0sImVtcHR5Q2Fub25pY2FsSWNvbiIpO2koSlZhLCJnZXRGYW1pbHlJZCIpO2koanJlLCJnZXRDYW5vbmljYWxQcmVmaXgiKTtpKGVVYSwibW92ZU5vbkZhQ2xhc3Nlc1RvUmVzdCIpO2kocl90LCJzb3J0ZWRVbmlxdWVWYWx1ZXMiKTtvX3Q9JFN0LmNvbmNhdCh6U3QpO2koVnJlLCJnZXRDYW5vbmljYWxJY29uIik7aSh0VWEsImFwcGx5U2hpbUFuZEFsaWFzIik7YVVhPU1TdC5maWx0ZXIoZnVuY3Rpb24ocyl7cmV0dXJuIHMhPT1fb3x8cyE9PUJrfSksc1VhPU9iamVjdC5rZXlzKFc1ZSkuZmlsdGVyKGZ1bmN0aW9uKHMpe3JldHVybiBzIT09X299KS5tYXAoZnVuY3Rpb24ocyl7cmV0dXJuIE9iamVjdC5rZXlzKFc1ZVtzXSl9KS5mbGF0KCk7aShpVWEsImdldERlZmF1bHRDYW5vbmljYWxQcmVmaXgiKTtyVWE9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcygpe0JxYSh0aGlzLHMpLHRoaXMuZGVmaW5pdGlvbnM9e319cmV0dXJuIGkocywiTGlicmFyeSIpLEhxYShzLFt7a2V5OiJhZGQiLHZhbHVlOmkoZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxhPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkoYSksbj0wO248YTtuKyspcltuXT1hcmd1bWVudHNbbl07dmFyIG89ci5yZWR1Y2UodGhpcy5fcHVsbERlZmluaXRpb25zLHt9KTtPYmplY3Qua2V5cyhvKS5mb3JFYWNoKGZ1bmN0aW9uKGwpe3QuZGVmaW5pdGlvbnNbbF09ZHQoZHQoe30sdC5kZWZpbml0aW9uc1tsXXx8e30pLG9bbF0pLG84ZShsLG9bbF0pO3ZhciBwPUo1ZVtfb11bbF07cCYmbzhlKHAsb1tsXSksYV90KCl9KX0sImFkZCIpfSx7a2V5OiJyZXNldCIsdmFsdWU6aShmdW5jdGlvbigpe3RoaXMuZGVmaW5pdGlvbnM9e319LCJyZXNldCIpfSx7a2V5OiJfcHVsbERlZmluaXRpb25zIix2YWx1ZTppKGZ1bmN0aW9uKHQsYSl7dmFyIHI9YS5wcmVmaXgmJmEuaWNvbk5hbWUmJmEuaWNvbj97MDphfTphO3JldHVybiBPYmplY3Qua2V5cyhyKS5tYXAoZnVuY3Rpb24obil7dmFyIG89cltuXSxsPW8ucHJlZml4LHA9by5pY29uTmFtZSxkPW8uaWNvbix1PWRbMl07dFtsXXx8KHRbbF09e30pLHUubGVuZ3RoPjAmJnUuZm9yRWFjaChmdW5jdGlvbihjKXt0eXBlb2YgYz09InN0cmluZyImJih0W2xdW2NdPWQpfSksdFtsXVtwXT1kfSksdH0sIl9wdWxsRGVmaW5pdGlvbnMiKX1dKX0pKCksbl90PVtdLFNiPXt9LF9iPXt9LG9VYT1PYmplY3Qua2V5cyhfYik7aShuVWEsInJlZ2lzdGVyUGx1Z2lucyIpO2koZDhlLCJjaGFpbkhvb2tzIik7aShaMywiY2FsbEhvb2tzIik7aShkaCwiY2FsbFByb3ZpZGVkIik7aSh1OGUsImZpbmRJY29uRGVmaW5pdGlvbiIpO2xfdD1uZXcgclVhLGxVYT1pKGZ1bmN0aW9uKCl7V3QuYXV0b1JlcGxhY2VTdmc9ITEsV3Qub2JzZXJ2ZU11dGF0aW9ucz0hMSxaMygibm9BdXRvIil9LCJub0F1dG8iKSxjVWE9e2kyc3ZnOmkoZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06e307cmV0dXJuIEIwPyhaMygiYmVmb3JlSTJzdmciLGUpLGRoKCJwc2V1ZG9FbGVtZW50czJzdmciLGUpLGRoKCJpMnN2ZyIsZSkpOlByb21pc2UucmVqZWN0KG5ldyBFcnJvcigiT3BlcmF0aW9uIHJlcXVpcmVzIGEgRE9NIG9mIHNvbWUga2luZC4iKSl9LCJpMnN2ZyIpLHdhdGNoOmkoZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06e30sdD1lLmF1dG9SZXBsYWNlU3ZnUm9vdDtXdC5hdXRvUmVwbGFjZVN2Zz09PSExJiYoV3QuYXV0b1JlcGxhY2VTdmc9ITApLFd0Lm9ic2VydmVNdXRhdGlvbnM9ITAsVVZhKGZ1bmN0aW9uKCl7dVVhKHthdXRvUmVwbGFjZVN2Z1Jvb3Q6dH0pLFozKCJ3YXRjaCIsZSl9KX0sIndhdGNoIil9LGRVYT17aWNvbjppKGZ1bmN0aW9uKGUpe2lmKGU9PT1udWxsKXJldHVybiBudWxsO2lmKE9yZShlKT09PSJvYmplY3QiJiZlLnByZWZpeCYmZS5pY29uTmFtZSlyZXR1cm57cHJlZml4OmUucHJlZml4LGljb25OYW1lOlkzKGUucHJlZml4LGUuaWNvbk5hbWUpfHxlLmljb25OYW1lfTtpZihBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD09PTIpe3ZhciB0PWVbMV0uaW5kZXhPZigiZmEtIik9PT0wP2VbMV0uc2xpY2UoMyk6ZVsxXSxhPWpyZShlWzBdKTtyZXR1cm57cHJlZml4OmEsaWNvbk5hbWU6WTMoYSx0KXx8dH19aWYodHlwZW9mIGU9PSJzdHJpbmciJiYoZS5pbmRleE9mKCIiLmNvbmNhdChXdC5jc3NQcmVmaXgsIi0iKSk+LTF8fGUubWF0Y2goRFZhKSkpe3ZhciByPVZyZShlLnNwbGl0KCIgIikse3NraXBMb29rdXBzOiEwfSk7cmV0dXJue3ByZWZpeDpyLnByZWZpeHx8Y2goKSxpY29uTmFtZTpZMyhyLnByZWZpeCxyLmljb25OYW1lKXx8ci5pY29uTmFtZX19aWYodHlwZW9mIGU9PSJzdHJpbmciKXt2YXIgbj1jaCgpO3JldHVybntwcmVmaXg6bixpY29uTmFtZTpZMyhuLGUpfHxlfX19LCJpY29uIil9LF9sPXtub0F1dG86bFVhLGNvbmZpZzpXdCxkb206Y1VhLHBhcnNlOmRVYSxsaWJyYXJ5OmxfdCxmaW5kSWNvbkRlZmluaXRpb246dThlLHRvSHRtbDpWa30sdVVhPWkoZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06e30sdD1lLmF1dG9SZXBsYWNlU3ZnUm9vdCxhPXQ9PT12b2lkIDA/ZGk6dDsoT2JqZWN0LmtleXMoSDEuc3R5bGVzKS5sZW5ndGg+MHx8V3QuYXV0b0ZldGNoU3ZnKSYmQjAmJld0LmF1dG9SZXBsYWNlU3ZnJiZfbC5kb20uaTJzdmcoe25vZGU6YX0pfSwiYXV0b1JlcGxhY2UiKTtpKFVyZSwiZG9tVmFyaWFudHMiKTtpKHBVYSwiYXNJY29uIik7aShoVWEsImFzU3ltYm9sIik7aShmVWEsImlzTGFiZWxlZCIpO2kocDhlLCJtYWtlSW5saW5lU3ZnQWJzdHJhY3QiKTtpKGNfdCwibWFrZUxheWVyc1RleHRBYnN0cmFjdCIpO2kobVVhLCJtYWtlTGF5ZXJzQ291bnRlckFic3RyYWN0Iik7aDhlPUgxLnN0eWxlcztpKGY4ZSwiYXNGb3VuZEljb24iKTtnVWE9e2ZvdW5kOiExLHdpZHRoOjUxMixoZWlnaHQ6NTEyfTtpKGJVYSwibWF5YmVOb3RpZnlNaXNzaW5nIik7aShtOGUsImZpbmRJY29uIik7ZF90PWkoZnVuY3Rpb24oKXt9LCJub29wIiksZzhlPVd0Lm1lYXN1cmVQZXJmb3JtYW5jZSYmRnJlJiZGcmUubWFyayYmRnJlLm1lYXN1cmU/RnJlOnttYXJrOmRfdCxtZWFzdXJlOmRfdH0sV2s9J0ZBICI3LjIuMCInLHZVYT1pKGZ1bmN0aW9uKGUpe3JldHVybiBnOGUubWFyaygiIi5jb25jYXQoV2ssIiAiKS5jb25jYXQoZSwiIGJlZ2lucyIpKSxmdW5jdGlvbigpe3JldHVybiB1X3QoZSl9fSwiYmVnaW4iKSx1X3Q9aShmdW5jdGlvbihlKXtnOGUubWFyaygiIi5jb25jYXQoV2ssIiAiKS5jb25jYXQoZSwiIGVuZHMiKSksZzhlLm1lYXN1cmUoIiIuY29uY2F0KFdrLCIgIikuY29uY2F0KGUpLCIiLmNvbmNhdChXaywiICIpLmNvbmNhdChlLCIgYmVnaW5zIiksIiIuY29uY2F0KFdrLCIgIikuY29uY2F0KGUsIiBlbmRzIikpfSwiZW5kIiksYjhlPXtiZWdpbjp2VWEsZW5kOnVfdH0sV3JlPWkoZnVuY3Rpb24oKXt9LCJub29wIik7aShwX3QsImlzV2F0Y2hlZCIpO2koeFVhLCJoYXNQcmVmaXhBbmRJY29uIik7aSh5VWEsImhhc0JlZW5SZXBsYWNlZCIpO2kod1VhLCJnZXRNdXRhdG9yIik7aShrVWEsImNyZWF0ZUVsZW1lbnROUyIpO2koU1VhLCJjcmVhdGVFbGVtZW50Iik7aShoX3QsImNvbnZlcnRTVkciKTtpKF9VYSwibm9kZUFzQ29tbWVudCIpO0dyZT17cmVwbGFjZTppKGZ1bmN0aW9uKGUpe3ZhciB0PWVbMF07aWYodC5wYXJlbnROb2RlKWlmKGVbMV0uZm9yRWFjaChmdW5jdGlvbihyKXt0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGhfdChyKSx0KX0pLHQuZ2V0QXR0cmlidXRlKEszKT09PW51bGwmJld0LmtlZXBPcmlnaW5hbFNvdXJjZSl7dmFyIGE9ZGkuY3JlYXRlQ29tbWVudChfVWEodCkpO3QucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoYSx0KX1lbHNlIHQucmVtb3ZlKCl9LCJyZXBsYWNlIiksbmVzdDppKGZ1bmN0aW9uKGUpe3ZhciB0PWVbMF0sYT1lWzFdO2lmKH5hOGUodCkuaW5kZXhPZihXdC5yZXBsYWNlbWVudENsYXNzKSlyZXR1cm4gR3JlLnJlcGxhY2UoZSk7dmFyIHI9bmV3IFJlZ0V4cCgiIi5jb25jYXQoV3QuY3NzUHJlZml4LCItLioiKSk7aWYoZGVsZXRlIGFbMF0uYXR0cmlidXRlcy5pZCxhWzBdLmF0dHJpYnV0ZXMuY2xhc3Mpe3ZhciBuPWFbMF0uYXR0cmlidXRlcy5jbGFzcy5zcGxpdCgiICIpLnJlZHVjZShmdW5jdGlvbihsLHApe3JldHVybiBwPT09V3QucmVwbGFjZW1lbnRDbGFzc3x8cC5tYXRjaChyKT9sLnRvU3ZnLnB1c2gocCk6bC50b05vZGUucHVzaChwKSxsfSx7dG9Ob2RlOltdLHRvU3ZnOltdfSk7YVswXS5hdHRyaWJ1dGVzLmNsYXNzPW4udG9Tdmcuam9pbigiICIpLG4udG9Ob2RlLmxlbmd0aD09PTA/dC5yZW1vdmVBdHRyaWJ1dGUoImNsYXNzIik6dC5zZXRBdHRyaWJ1dGUoImNsYXNzIixuLnRvTm9kZS5qb2luKCIgIikpfXZhciBvPWEubWFwKGZ1bmN0aW9uKGwpe3JldHVybiBWayhsKX0pLmpvaW4oYApgKTt0LnNldEF0dHJpYnV0ZShLMywiIiksdC5pbm5lckhUTUw9b30sIm5lc3QiKX07aShmX3QsInBlcmZvcm1PcGVyYXRpb25TeW5jIik7aShtX3QsInBlcmZvcm0iKTt2OGU9ITE7aShnX3QsImRpc2FibGVPYnNlcnZhdGlvbiIpO2koeDhlLCJlbmFibGVPYnNlcnZhdGlvbiIpO0tyZT1udWxsO2koYl90LCJvYnNlcnZlIik7aShNVWEsImRpc2Nvbm5lY3QiKTtpKHpVYSwic3R5bGVQYXJzZXIiKTtpKENVYSwiY2xhc3NQYXJzZXIiKTtpKFRVYSwiYXR0cmlidXRlc1BhcnNlciIpO2koJFVhLCJibGFua01ldGEiKTtpKHZfdCwicGFyc2VNZXRhIik7RFVhPUgxLnN0eWxlcztpKHhfdCwiZ2VuZXJhdGVNdXRhdGlvbiIpO2koTFVhLCJnZXRLbm93blByZWZpeGVzIik7aSh5X3QsIm9uVHJlZSIpO2koRVVhLCJvbk5vZGUiKTtpKFBVYSwicmVzb2x2ZUljb25zIik7SVVhPWkoZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9LGE9dC50cmFuc2Zvcm0scj1hPT09dm9pZCAwP01kOmEsbj10LnN5bWJvbCxvPW49PT12b2lkIDA/ITE6bixsPXQubWFzayxwPWw9PT12b2lkIDA/bnVsbDpsLGQ9dC5tYXNrSWQsdT1kPT09dm9pZCAwP251bGw6ZCxjPXQuY2xhc3NlcyxiPWM9PT12b2lkIDA/W106Yyx2PXQuYXR0cmlidXRlcyx4PXY9PT12b2lkIDA/e306dixtPXQuc3R5bGVzLGY9bT09PXZvaWQgMD97fTptO2lmKGUpe3ZhciB5PWUucHJlZml4LE09ZS5pY29uTmFtZSx6PWUuaWNvbjtyZXR1cm4gVXJlKGR0KHt0eXBlOiJpY29uIn0sZSksZnVuY3Rpb24oKXtyZXR1cm4gWjMoImJlZm9yZURPTUVsZW1lbnRDcmVhdGlvbiIse2ljb25EZWZpbml0aW9uOmUscGFyYW1zOnR9KSxwOGUoe2ljb25zOnttYWluOmY4ZSh6KSxtYXNrOnA/ZjhlKHAuaWNvbik6e2ZvdW5kOiExLHdpZHRoOm51bGwsaGVpZ2h0Om51bGwsaWNvbjp7fX19LHByZWZpeDp5LGljb25OYW1lOk0sdHJhbnNmb3JtOmR0KGR0KHt9LE1kKSxyKSxzeW1ib2w6byxtYXNrSWQ6dSxleHRyYTp7YXR0cmlidXRlczp4LHN0eWxlczpmLGNsYXNzZXM6Yn19KX0pfX0sInJlbmRlciIpLEFVYT17bWl4b3V0OmkoZnVuY3Rpb24oKXtyZXR1cm57aWNvbjpQVWEoSVVhKX19LCJtaXhvdXQiKSxob29rczppKGZ1bmN0aW9uKCl7cmV0dXJue211dGF0aW9uT2JzZXJ2ZXJDYWxsYmFja3M6aShmdW5jdGlvbih0KXtyZXR1cm4gdC50cmVlQ2FsbGJhY2s9eV90LHQubm9kZUNhbGxiYWNrPUVVYSx0fSwibXV0YXRpb25PYnNlcnZlckNhbGxiYWNrcyIpfX0sImhvb2tzIikscHJvdmlkZXM6aShmdW5jdGlvbihlKXtlLmkyc3ZnPWZ1bmN0aW9uKHQpe3ZhciBhPXQubm9kZSxyPWE9PT12b2lkIDA/ZGk6YSxuPXQuY2FsbGJhY2ssbz1uPT09dm9pZCAwP2Z1bmN0aW9uKCl7fTpuO3JldHVybiB5X3QocixvKX0sZS5nZW5lcmF0ZVN2Z1JlcGxhY2VtZW50TXV0YXRpb249ZnVuY3Rpb24odCxhKXt2YXIgcj1hLmljb25OYW1lLG49YS5wcmVmaXgsbz1hLnRyYW5zZm9ybSxsPWEuc3ltYm9sLHA9YS5tYXNrLGQ9YS5tYXNrSWQsdT1hLmV4dHJhO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihjLGIpe1Byb21pc2UuYWxsKFttOGUocixuKSxwLmljb25OYW1lP204ZShwLmljb25OYW1lLHAucHJlZml4KTpQcm9taXNlLnJlc29sdmUoe2ZvdW5kOiExLHdpZHRoOjUxMixoZWlnaHQ6NTEyLGljb246e319KV0pLnRoZW4oZnVuY3Rpb24odil7dmFyIHg9UnJlKHYsMiksbT14WzBdLGY9eFsxXTtjKFt0LHA4ZSh7aWNvbnM6e21haW46bSxtYXNrOmZ9LHByZWZpeDpuLGljb25OYW1lOnIsdHJhbnNmb3JtOm8sc3ltYm9sOmwsbWFza0lkOmQsZXh0cmE6dSx3YXRjaGFibGU6ITB9KV0pfSkuY2F0Y2goYil9KX0sZS5nZW5lcmF0ZUFic3RyYWN0SWNvbj1mdW5jdGlvbih0KXt2YXIgYT10LmNoaWxkcmVuLHI9dC5hdHRyaWJ1dGVzLG49dC5tYWluLG89dC50cmFuc2Zvcm0sbD10LnN0eWxlcyxwPUhyZShsKTtwLmxlbmd0aD4wJiYoci5zdHlsZT1wKTt2YXIgZDtyZXR1cm4gczhlKG8pJiYoZD1kaCgiZ2VuZXJhdGVBYnN0cmFjdFRyYW5zZm9ybUdyb3VwaW5nIix7bWFpbjpuLHRyYW5zZm9ybTpvLGNvbnRhaW5lcldpZHRoOm4ud2lkdGgsaWNvbldpZHRoOm4ud2lkdGh9KSksYS5wdXNoKGR8fG4uaWNvbikse2NoaWxkcmVuOmEsYXR0cmlidXRlczpyfX19LCJwcm92aWRlcyIpfSxOVWE9e21peG91dDppKGZ1bmN0aW9uKCl7cmV0dXJue2xheWVyOmkoZnVuY3Rpb24odCl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9LHI9YS5jbGFzc2VzLG49cj09PXZvaWQgMD9bXTpyO3JldHVybiBVcmUoe3R5cGU6ImxheWVyIn0sZnVuY3Rpb24oKXtaMygiYmVmb3JlRE9NRWxlbWVudENyZWF0aW9uIix7YXNzZW1ibGVyOnQscGFyYW1zOmF9KTt2YXIgbz1bXTtyZXR1cm4gdChmdW5jdGlvbihsKXtBcnJheS5pc0FycmF5KGwpP2wubWFwKGZ1bmN0aW9uKHApe289by5jb25jYXQocC5hYnN0cmFjdCl9KTpvPW8uY29uY2F0KGwuYWJzdHJhY3QpfSksW3t0YWc6InNwYW4iLGF0dHJpYnV0ZXM6e2NsYXNzOlsiIi5jb25jYXQoV3QuY3NzUHJlZml4LCItbGF5ZXJzIildLmNvbmNhdChCMShuKSkuam9pbigiICIpfSxjaGlsZHJlbjpvfV19KX0sImxheWVyIil9fSwibWl4b3V0Iil9LFJVYT17bWl4b3V0OmkoZnVuY3Rpb24oKXtyZXR1cm57Y291bnRlcjppKGZ1bmN0aW9uKHQpe3ZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fSxyPWEudGl0bGUsbj1yPT09dm9pZCAwP251bGw6cixvPWEuY2xhc3NlcyxsPW89PT12b2lkIDA/W106byxwPWEuYXR0cmlidXRlcyxkPXA9PT12b2lkIDA/e306cCx1PWEuc3R5bGVzLGM9dT09PXZvaWQgMD97fTp1O3JldHVybiBVcmUoe3R5cGU6ImNvdW50ZXIiLGNvbnRlbnQ6dH0sZnVuY3Rpb24oKXtyZXR1cm4gWjMoImJlZm9yZURPTUVsZW1lbnRDcmVhdGlvbiIse2NvbnRlbnQ6dCxwYXJhbXM6YX0pLG1VYSh7Y29udGVudDp0LnRvU3RyaW5nKCksdGl0bGU6bixleHRyYTp7YXR0cmlidXRlczpkLHN0eWxlczpjLGNsYXNzZXM6WyIiLmNvbmNhdChXdC5jc3NQcmVmaXgsIi1sYXllcnMtY291bnRlciIpXS5jb25jYXQoQjEobCkpfX0pfSl9LCJjb3VudGVyIil9fSwibWl4b3V0Iil9LE9VYT17bWl4b3V0OmkoZnVuY3Rpb24oKXtyZXR1cm57dGV4dDppKGZ1bmN0aW9uKHQpe3ZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fSxyPWEudHJhbnNmb3JtLG49cj09PXZvaWQgMD9NZDpyLG89YS5jbGFzc2VzLGw9bz09PXZvaWQgMD9bXTpvLHA9YS5hdHRyaWJ1dGVzLGQ9cD09PXZvaWQgMD97fTpwLHU9YS5zdHlsZXMsYz11PT09dm9pZCAwP3t9OnU7cmV0dXJuIFVyZSh7dHlwZToidGV4dCIsY29udGVudDp0fSxmdW5jdGlvbigpe3JldHVybiBaMygiYmVmb3JlRE9NRWxlbWVudENyZWF0aW9uIix7Y29udGVudDp0LHBhcmFtczphfSksY190KHtjb250ZW50OnQsdHJhbnNmb3JtOmR0KGR0KHt9LE1kKSxuKSxleHRyYTp7YXR0cmlidXRlczpkLHN0eWxlczpjLGNsYXNzZXM6WyIiLmNvbmNhdChXdC5jc3NQcmVmaXgsIi1sYXllcnMtdGV4dCIpXS5jb25jYXQoQjEobCkpfX0pfSl9LCJ0ZXh0Iil9fSwibWl4b3V0IikscHJvdmlkZXM6aShmdW5jdGlvbihlKXtlLmdlbmVyYXRlTGF5ZXJzVGV4dD1mdW5jdGlvbih0LGEpe3ZhciByPWEudHJhbnNmb3JtLG49YS5leHRyYSxvPW51bGwsbD1udWxsO2lmKHJTdCl7dmFyIHA9cGFyc2VJbnQoZ2V0Q29tcHV0ZWRTdHlsZSh0KS5mb250U2l6ZSwxMCksZD10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO289ZC53aWR0aC9wLGw9ZC5oZWlnaHQvcH1yZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFt0LGNfdCh7Y29udGVudDp0LmlubmVySFRNTCx3aWR0aDpvLGhlaWdodDpsLHRyYW5zZm9ybTpyLGV4dHJhOm4sd2F0Y2hhYmxlOiEwfSldKX19LCJwcm92aWRlcyIpfSx3X3Q9bmV3IFJlZ0V4cCgnIicsInVnIiksa190PVsxMTA1OTIwLDExMTIzMTldLFNfdD1kdChkdChkdChkdCh7fSx7Rm9udEF3ZXNvbWU6e25vcm1hbDoiZmFzIiw0MDA6ImZhcyJ9fSksdmphKSxNVmEpLENqYSkseThlPU9iamVjdC5rZXlzKFNfdCkucmVkdWNlKGZ1bmN0aW9uKHMsZSl7cmV0dXJuIHNbZS50b0xvd2VyQ2FzZSgpXT1TX3RbZV0sc30se30pLEZVYT1PYmplY3Qua2V5cyh5OGUpLnJlZHVjZShmdW5jdGlvbihzLGUpe3ZhciB0PXk4ZVtlXTtyZXR1cm4gc1tlXT10WzkwMF18fEIxKE9iamVjdC5lbnRyaWVzKHQpKVswXVsxXSxzfSx7fSk7aShCVWEsImhleFZhbHVlRnJvbUNvbnRlbnQiKTtpKEhVYSwiaXNTZWNvbmRhcnlMYXllciIpO2kocVVhLCJnZXRQcmVmaXgiKTtpKF9fdCwicmVwbGFjZUZvclBvc2l0aW9uIik7aShqVWEsInJlcGxhY2UiKTtpKFZVYSwicHJvY2Vzc2FibGUiKTtVVWE9aShmdW5jdGlvbihlKXtyZXR1cm4hIWUmJklTdC5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiBlLmluY2x1ZGVzKHQpfSl9LCJoYXNQc2V1ZG9FbGVtZW50IiksV1VhPWkoZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuW107dmFyIHQ9bmV3IFNldCxhPWUuc3BsaXQoLywoPyFbXigpXSpcKSkvKS5tYXAoZnVuY3Rpb24ocCl7cmV0dXJuIHAudHJpbSgpfSk7YT1hLmZsYXRNYXAoZnVuY3Rpb24ocCl7cmV0dXJuIHAuaW5jbHVkZXMoIigiKT9wOnAuc3BsaXQoIiwiKS5tYXAoZnVuY3Rpb24oZCl7cmV0dXJuIGQudHJpbSgpfSl9KTt2YXIgcj1BcmUoYSksbjt0cnl7Zm9yKHIucygpOyEobj1yLm4oKSkuZG9uZTspe3ZhciBvPW4udmFsdWU7aWYoVVVhKG8pKXt2YXIgbD1JU3QucmVkdWNlKGZ1bmN0aW9uKHAsZCl7cmV0dXJuIHAucmVwbGFjZShkLCIiKX0sbyk7bCE9PSIiJiZsIT09IioiJiZ0LmFkZChsKX19fWNhdGNoKHApe3IuZShwKX1maW5hbGx5e3IuZigpfXJldHVybiB0fSwicGFyc2VDU1NSdWxlRm9yUHNldWRvcyIpO2koTV90LCJzZWFyY2hQc2V1ZG9FbGVtZW50cyIpO0dVYT17aG9va3M6aShmdW5jdGlvbigpe3JldHVybnttdXRhdGlvbk9ic2VydmVyQ2FsbGJhY2tzOmkoZnVuY3Rpb24odCl7cmV0dXJuIHQucHNldWRvRWxlbWVudHNDYWxsYmFjaz1NX3QsdH0sIm11dGF0aW9uT2JzZXJ2ZXJDYWxsYmFja3MiKX19LCJob29rcyIpLHByb3ZpZGVzOmkoZnVuY3Rpb24oZSl7ZS5wc2V1ZG9FbGVtZW50czJzdmc9ZnVuY3Rpb24odCl7dmFyIGE9dC5ub2RlLHI9YT09PXZvaWQgMD9kaTphO1d0LnNlYXJjaFBzZXVkb0VsZW1lbnRzJiZNX3Qocil9fSwicHJvdmlkZXMiKX0sel90PSExLEtVYT17bWl4b3V0OmkoZnVuY3Rpb24oKXtyZXR1cm57ZG9tOnt1bndhdGNoOmkoZnVuY3Rpb24oKXtnX3QoKSx6X3Q9ITB9LCJ1bndhdGNoIil9fX0sIm1peG91dCIpLGhvb2tzOmkoZnVuY3Rpb24oKXtyZXR1cm57Ym9vdHN0cmFwOmkoZnVuY3Rpb24oKXtiX3QoZDhlKCJtdXRhdGlvbk9ic2VydmVyQ2FsbGJhY2tzIix7fSkpfSwiYm9vdHN0cmFwIiksbm9BdXRvOmkoZnVuY3Rpb24oKXtNVWEoKX0sIm5vQXV0byIpLHdhdGNoOmkoZnVuY3Rpb24odCl7dmFyIGE9dC5vYnNlcnZlTXV0YXRpb25zUm9vdDt6X3Q/eDhlKCk6Yl90KGQ4ZSgibXV0YXRpb25PYnNlcnZlckNhbGxiYWNrcyIse29ic2VydmVNdXRhdGlvbnNSb290OmF9KSl9LCJ3YXRjaCIpfX0sImhvb2tzIil9LENfdD1pKGZ1bmN0aW9uKGUpe3ZhciB0PXtzaXplOjE2LHg6MCx5OjAsZmxpcFg6ITEsZmxpcFk6ITEscm90YXRlOjB9O3JldHVybiBlLnRvTG93ZXJDYXNlKCkuc3BsaXQoIiAiKS5yZWR1Y2UoZnVuY3Rpb24oYSxyKXt2YXIgbj1yLnRvTG93ZXJDYXNlKCkuc3BsaXQoIi0iKSxvPW5bMF0sbD1uLnNsaWNlKDEpLmpvaW4oIi0iKTtpZihvJiZsPT09ImgiKXJldHVybiBhLmZsaXBYPSEwLGE7aWYobyYmbD09PSJ2IilyZXR1cm4gYS5mbGlwWT0hMCxhO2lmKGw9cGFyc2VGbG9hdChsKSxpc05hTihsKSlyZXR1cm4gYTtzd2l0Y2gobyl7Y2FzZSJncm93IjphLnNpemU9YS5zaXplK2w7YnJlYWs7Y2FzZSJzaHJpbmsiOmEuc2l6ZT1hLnNpemUtbDticmVhaztjYXNlImxlZnQiOmEueD1hLngtbDticmVhaztjYXNlInJpZ2h0IjphLng9YS54K2w7YnJlYWs7Y2FzZSJ1cCI6YS55PWEueS1sO2JyZWFrO2Nhc2UiZG93biI6YS55PWEueStsO2JyZWFrO2Nhc2Uicm90YXRlIjphLnJvdGF0ZT1hLnJvdGF0ZStsO2JyZWFrfXJldHVybiBhfSx0KX0sInBhcnNlVHJhbnNmb3JtU3RyaW5nIiksWVVhPXttaXhvdXQ6aShmdW5jdGlvbigpe3JldHVybntwYXJzZTp7dHJhbnNmb3JtOmkoZnVuY3Rpb24odCl7cmV0dXJuIENfdCh0KX0sInRyYW5zZm9ybSIpfX19LCJtaXhvdXQiKSxob29rczppKGZ1bmN0aW9uKCl7cmV0dXJue3BhcnNlTm9kZUF0dHJpYnV0ZXM6aShmdW5jdGlvbih0LGEpe3ZhciByPWEuZ2V0QXR0cmlidXRlKCJkYXRhLWZhLXRyYW5zZm9ybSIpO3JldHVybiByJiYodC50cmFuc2Zvcm09Q190KHIpKSx0fSwicGFyc2VOb2RlQXR0cmlidXRlcyIpfX0sImhvb2tzIikscHJvdmlkZXM6aShmdW5jdGlvbihlKXtlLmdlbmVyYXRlQWJzdHJhY3RUcmFuc2Zvcm1Hcm91cGluZz1mdW5jdGlvbih0KXt2YXIgYT10Lm1haW4scj10LnRyYW5zZm9ybSxuPXQuY29udGFpbmVyV2lkdGgsbz10Lmljb25XaWR0aCxsPXt0cmFuc2Zvcm06InRyYW5zbGF0ZSgiLmNvbmNhdChuLzIsIiAyNTYpIil9LHA9InRyYW5zbGF0ZSgiLmNvbmNhdChyLngqMzIsIiwgIikuY29uY2F0KHIueSozMiwiKSAiKSxkPSJzY2FsZSgiLmNvbmNhdChyLnNpemUvMTYqKHIuZmxpcFg/LTE6MSksIiwgIikuY29uY2F0KHIuc2l6ZS8xNiooci5mbGlwWT8tMToxKSwiKSAiKSx1PSJyb3RhdGUoIi5jb25jYXQoci5yb3RhdGUsIiAwIDApIiksYz17dHJhbnNmb3JtOiIiLmNvbmNhdChwLCIgIikuY29uY2F0KGQsIiAiKS5jb25jYXQodSl9LGI9e3RyYW5zZm9ybToidHJhbnNsYXRlKCIuY29uY2F0KG8vMiotMSwiIC0yNTYpIil9LHY9e291dGVyOmwsaW5uZXI6YyxwYXRoOmJ9O3JldHVybnt0YWc6ImciLGF0dHJpYnV0ZXM6ZHQoe30sdi5vdXRlciksY2hpbGRyZW46W3t0YWc6ImciLGF0dHJpYnV0ZXM6ZHQoe30sdi5pbm5lciksY2hpbGRyZW46W3t0YWc6YS5pY29uLnRhZyxjaGlsZHJlbjphLmljb24uY2hpbGRyZW4sYXR0cmlidXRlczpkdChkdCh7fSxhLmljb24uYXR0cmlidXRlcyksdi5wYXRoKX1dfV19fX0sInByb3ZpZGVzIil9LHc4ZT17eDowLHk6MCx3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIn07aShUX3QsImZpbGxCbGFjayIpO2koWlVhLCJkZUdyb3VwIik7WFVhPXtob29rczppKGZ1bmN0aW9uKCl7cmV0dXJue3BhcnNlTm9kZUF0dHJpYnV0ZXM6aShmdW5jdGlvbih0LGEpe3ZhciByPWEuZ2V0QXR0cmlidXRlKCJkYXRhLWZhLW1hc2siKSxuPXI/VnJlKHIuc3BsaXQoIiAiKS5tYXAoZnVuY3Rpb24obyl7cmV0dXJuIG8udHJpbSgpfSkpOmlfdCgpO3JldHVybiBuLnByZWZpeHx8KG4ucHJlZml4PWNoKCkpLHQubWFzaz1uLHQubWFza0lkPWEuZ2V0QXR0cmlidXRlKCJkYXRhLWZhLW1hc2staWQiKSx0fSwicGFyc2VOb2RlQXR0cmlidXRlcyIpfX0sImhvb2tzIikscHJvdmlkZXM6aShmdW5jdGlvbihlKXtlLmdlbmVyYXRlQWJzdHJhY3RNYXNrPWZ1bmN0aW9uKHQpe3ZhciBhPXQuY2hpbGRyZW4scj10LmF0dHJpYnV0ZXMsbj10Lm1haW4sbz10Lm1hc2ssbD10Lm1hc2tJZCxwPXQudHJhbnNmb3JtLGQ9bi53aWR0aCx1PW4uaWNvbixjPW8ud2lkdGgsYj1vLmljb24sdj1IVmEoe3RyYW5zZm9ybTpwLGNvbnRhaW5lcldpZHRoOmMsaWNvbldpZHRoOmR9KSx4PXt0YWc6InJlY3QiLGF0dHJpYnV0ZXM6ZHQoZHQoe30sdzhlKSx7fSx7ZmlsbDoid2hpdGUifSl9LG09dS5jaGlsZHJlbj97Y2hpbGRyZW46dS5jaGlsZHJlbi5tYXAoVF90KX06e30sZj17dGFnOiJnIixhdHRyaWJ1dGVzOmR0KHt9LHYuaW5uZXIpLGNoaWxkcmVuOltUX3QoZHQoe3RhZzp1LnRhZyxhdHRyaWJ1dGVzOmR0KGR0KHt9LHUuYXR0cmlidXRlcyksdi5wYXRoKX0sbSkpXX0seT17dGFnOiJnIixhdHRyaWJ1dGVzOmR0KHt9LHYub3V0ZXIpLGNoaWxkcmVuOltmXX0sTT0ibWFzay0iLmNvbmNhdChsfHxIU3QoKSksej0iY2xpcC0iLmNvbmNhdChsfHxIU3QoKSksTj17dGFnOiJtYXNrIixhdHRyaWJ1dGVzOmR0KGR0KHt9LHc4ZSkse30se2lkOk0sbWFza1VuaXRzOiJ1c2VyU3BhY2VPblVzZSIsbWFza0NvbnRlbnRVbml0czoidXNlclNwYWNlT25Vc2UifSksY2hpbGRyZW46W3gseV19LEM9e3RhZzoiZGVmcyIsY2hpbGRyZW46W3t0YWc6ImNsaXBQYXRoIixhdHRyaWJ1dGVzOntpZDp6fSxjaGlsZHJlbjpaVWEoYil9LE5dfTtyZXR1cm4gYS5wdXNoKEMse3RhZzoicmVjdCIsYXR0cmlidXRlczpkdCh7ZmlsbDoiY3VycmVudENvbG9yIiwiY2xpcC1wYXRoIjoidXJsKCMiLmNvbmNhdCh6LCIpIiksbWFzazoidXJsKCMiLmNvbmNhdChNLCIpIil9LHc4ZSl9KSx7Y2hpbGRyZW46YSxhdHRyaWJ1dGVzOnJ9fX0sInByb3ZpZGVzIil9LFFVYT17cHJvdmlkZXM6aShmdW5jdGlvbihlKXt2YXIgdD0hMTtuaC5tYXRjaE1lZGlhJiYodD1uaC5tYXRjaE1lZGlhKCIocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSIpLm1hdGNoZXMpLGUubWlzc2luZ0ljb25BYnN0cmFjdD1mdW5jdGlvbigpe3ZhciBhPVtdLHI9e2ZpbGw6ImN1cnJlbnRDb2xvciJ9LG49e2F0dHJpYnV0ZVR5cGU6IlhNTCIscmVwZWF0Q291bnQ6ImluZGVmaW5pdGUiLGR1cjoiMnMifTthLnB1c2goe3RhZzoicGF0aCIsYXR0cmlidXRlczpkdChkdCh7fSxyKSx7fSx7ZDoiTTE1Ni41LDQ0Ny43bC0xMi42LDI5LjVjLTE4LjctOS41LTM1LjktMjEuMi01MS41LTM0LjlsMjIuNy0yMi43QzEyNy42LDQzMC41LDE0MS41LDQ0MCwxNTYuNSw0NDcuN3ogTTQwLjYsMjcySDguNSBjMS40LDIxLjIsNS40LDQxLjcsMTEuNyw2MS4xTDUwLDMyMS4yQzQ1LjEsMzA1LjUsNDEuOCwyODksNDAuNiwyNzJ6IE00MC42LDI0MGMxLjQtMTguOCw1LjItMzcsMTEuMS01NC4xbC0yOS41LTEyLjYgQzE0LjcsMTk0LjMsMTAsMjE2LjcsOC41LDI0MEg0MC42eiBNNjQuMywxNTYuNWM3LjgtMTQuOSwxNy4yLTI4LjgsMjguMS00MS41TDY5LjcsOTIuM2MtMTMuNywxNS42LTI1LjUsMzIuOC0zNC45LDUxLjUgTDY0LjMsMTU2LjV6IE0zOTcsNDE5LjZjLTEzLjksMTItMjkuNCwyMi4zLTQ2LjEsMzAuNGwxMS45LDI5LjhjMjAuNy05LjksMzkuOC0yMi42LDU2LjktMzcuNkwzOTcsNDE5LjZ6IE0xMTUsOTIuNCBjMTMuOS0xMiwyOS40LTIyLjMsNDYuMS0zMC40bC0xMS45LTI5LjhjLTIwLjcsOS45LTM5LjgsMjIuNi01Ni44LDM3LjZMMTE1LDkyLjR6IE00NDcuNywzNTUuNWMtNy44LDE0LjktMTcuMiwyOC44LTI4LjEsNDEuNSBsMjIuNywyMi43YzEzLjctMTUuNiwyNS41LTMyLjksMzQuOS01MS41TDQ0Ny43LDM1NS41eiBNNDcxLjQsMjcyYy0xLjQsMTguOC01LjIsMzctMTEuMSw1NC4xbDI5LjUsMTIuNiBjNy41LTIxLjEsMTIuMi00My41LDEzLjYtNjYuOEg0NzEuNHogTTMyMS4yLDQ2MmMtMTUuNyw1LTMyLjIsOC4yLTQ5LjIsOS40djMyLjFjMjEuMi0xLjQsNDEuNy01LjQsNjEuMS0xMS43TDMyMS4yLDQ2MnogTTI0MCw0NzEuNGMtMTguOC0xLjQtMzctNS4yLTU0LjEtMTEuMWwtMTIuNiwyOS41YzIxLjEsNy41LDQzLjUsMTIuMiw2Ni44LDEzLjZWNDcxLjR6IE00NjIsMTkwLjhjNSwxNS43LDguMiwzMi4yLDkuNCw0OS4yaDMyLjEgYy0xLjQtMjEuMi01LjQtNDEuNy0xMS43LTYxLjFMNDYyLDE5MC44eiBNOTIuNCwzOTdjLTEyLTEzLjktMjIuMy0yOS40LTMwLjQtNDYuMWwtMjkuOCwxMS45YzkuOSwyMC43LDIyLjYsMzkuOCwzNy42LDU2LjkgTDkyLjQsMzk3eiBNMjcyLDQwLjZjMTguOCwxLjQsMzYuOSw1LjIsNTQuMSwxMS4xbDEyLjYtMjkuNUMzMTcuNywxNC43LDI5NS4zLDEwLDI3Miw4LjVWNDAuNnogTTE5MC44LDUwIGMxNS43LTUsMzIuMi04LjIsNDkuMi05LjRWOC41Yy0yMS4yLDEuNC00MS43LDUuNC02MS4xLDExLjdMMTkwLjgsNTB6IE00NDIuMyw5Mi4zTDQxOS42LDExNWMxMiwxMy45LDIyLjMsMjkuNCwzMC41LDQ2LjEgbDI5LjgtMTEuOUM0NzAsMTI4LjUsNDU3LjMsMTA5LjQsNDQyLjMsOTIuM3ogTTM5Nyw5Mi40bDIyLjctMjIuN2MtMTUuNi0xMy43LTMyLjgtMjUuNS01MS41LTM0LjlsLTEyLjYsMjkuNSBDMzcwLjQsNzIuMSwzODQuNCw4MS41LDM5Nyw5Mi40eiJ9KX0pO3ZhciBvPWR0KGR0KHt9LG4pLHt9LHthdHRyaWJ1dGVOYW1lOiJvcGFjaXR5In0pLGw9e3RhZzoiY2lyY2xlIixhdHRyaWJ1dGVzOmR0KGR0KHt9LHIpLHt9LHtjeDoiMjU2IixjeToiMzY0IixyOiIyOCJ9KSxjaGlsZHJlbjpbXX07cmV0dXJuIHR8fGwuY2hpbGRyZW4ucHVzaCh7dGFnOiJhbmltYXRlIixhdHRyaWJ1dGVzOmR0KGR0KHt9LG4pLHt9LHthdHRyaWJ1dGVOYW1lOiJyIix2YWx1ZXM6IjI4OzE0OzI4OzI4OzE0OzI4OyJ9KX0se3RhZzoiYW5pbWF0ZSIsYXR0cmlidXRlczpkdChkdCh7fSxvKSx7fSx7dmFsdWVzOiIxOzA7MTsxOzA7MTsifSl9KSxhLnB1c2gobCksYS5wdXNoKHt0YWc6InBhdGgiLGF0dHJpYnV0ZXM6ZHQoZHQoe30scikse30se29wYWNpdHk6IjEiLGQ6Ik0yNjMuNywzMTJoLTE2Yy02LjYsMC0xMi01LjQtMTItMTJjMC03MSw3Ny40LTYzLjksNzcuNC0xMDcuOGMwLTIwLTE3LjgtNDAuMi01Ny40LTQwLjJjLTI5LjEsMC00NC4zLDkuNi01OS4yLDI4LjcgYy0zLjksNS0xMS4xLDYtMTYuMiwyLjRsLTEzLjEtOS4yYy01LjYtMy45LTYuOS0xMS44LTIuNi0xNy4yYzIxLjItMjcuMiw0Ni40LTQ0LjcsOTEuMi00NC43YzUyLjMsMCw5Ny40LDI5LjgsOTcuNCw4MC4yIGMwLDY3LjYtNzcuNCw2My41LTc3LjQsMTA3LjhDMjc1LjcsMzA2LjYsMjcwLjMsMzEyLDI2My43LDMxMnoifSksY2hpbGRyZW46dD9bXTpbe3RhZzoiYW5pbWF0ZSIsYXR0cmlidXRlczpkdChkdCh7fSxvKSx7fSx7dmFsdWVzOiIxOzA7MDswOzA7MTsifSl9XX0pLHR8fGEucHVzaCh7dGFnOiJwYXRoIixhdHRyaWJ1dGVzOmR0KGR0KHt9LHIpLHt9LHtvcGFjaXR5OiIwIixkOiJNMjMyLjUsMTM0LjVsNywxNjhjMC4zLDYuNCw1LjYsMTEuNSwxMiwxMS41aDljNi40LDAsMTEuNy01LjEsMTItMTEuNWw3LTE2OGMwLjMtNi44LTUuMi0xMi41LTEyLTEyLjVoLTIzIEMyMzcuNywxMjIsMjMyLjIsMTI3LjcsMjMyLjUsMTM0LjV6In0pLGNoaWxkcmVuOlt7dGFnOiJhbmltYXRlIixhdHRyaWJ1dGVzOmR0KGR0KHt9LG8pLHt9LHt2YWx1ZXM6IjA7MDsxOzE7MDswOyJ9KX1dfSkse3RhZzoiZyIsYXR0cmlidXRlczp7Y2xhc3M6Im1pc3NpbmcifSxjaGlsZHJlbjphfX19LCJwcm92aWRlcyIpfSxKVWE9e2hvb2tzOmkoZnVuY3Rpb24oKXtyZXR1cm57cGFyc2VOb2RlQXR0cmlidXRlczppKGZ1bmN0aW9uKHQsYSl7dmFyIHI9YS5nZXRBdHRyaWJ1dGUoImRhdGEtZmEtc3ltYm9sIiksbj1yPT09bnVsbD8hMTpyPT09IiI/ITA6cjtyZXR1cm4gdC5zeW1ib2w9bix0fSwicGFyc2VOb2RlQXR0cmlidXRlcyIpfX0sImhvb2tzIil9LGVXYT1bVlZhLEFVYSxOVWEsUlVhLE9VYSxHVWEsS1VhLFlVYSxYVWEsUVVhLEpVYV07blVhKGVXYSx7bWl4b3V0c1RvOl9sfSk7dFdhPV9sLm5vQXV0byxhV2E9X2wuY29uZmlnLHNXYT1fbC5saWJyYXJ5LGlXYT1fbC5kb20scldhPV9sLnBhcnNlLG9XYT1fbC5maW5kSWNvbkRlZmluaXRpb24sbldhPV9sLnRvSHRtbCxHaz1fbC5pY29uLGxXYT1fbC5sYXllcixjV2E9X2wudGV4dCxkV2E9X2wuY291bnRlcn0pO3ZhciB1V2EsUzhlLCRfdCxEX3QsTF90LEVfdCxfOGUsUF90LElfdCxBX3QsTl90LFJfdCxPX3QsRl90LEJfdCxIX3QscV90LGpfdCxWX3QsVV90LFdfdCxHX3QsS190LFlfdCxaX3QsWF90LFFfdCxKX3QsZU10LE04ZSx0TXQsYU10LHNNdCxpTXQsck10LG9NdCxuTXQsbE10LGNNdCxkTXQsdU10LHBNdCxoTXQsZk10LG1NdCxnTXQsYk10LHZNdCx4TXQsejhlLHlNdCx3TXQsa010LFNNdCxfTXQsTU10LHpNdCxDTXQsVE10LCRNdCxETXQsTE10LEVNdCxQTXQsSU10LEFNdCxOTXQsUk10LE9NdCxGTXQsQk10LEM4ZSxITXQscU10LGpNdCxWTXQsVU10LFdNdCxHTXQsS010LFlNdCxaTXQsWE10LFFNdCxKTXQsZXp0LHR6dCxhenQsc3p0LGl6dCxyenQsb3p0LG56dCxsenQsY3p0LGR6dCx1enQscHp0LGh6dCxmenQsbXp0LGd6dCxienQsdnp0LHh6dCx5enQsd3p0LGt6dCxTenQsX3p0LE16dCx6enQsQ3p0LE1iLFR6dCwkenQsVDhlLER6dCxMenQsRXp0LCQ4ZSxQenQsSXp0LFlyZSxBenQsTnp0LEQ4ZSxSenQsT3p0LEZ6dCxCenQsSHp0LEw4ZSxxenQsanp0LFZ6dCxVenQsV3p0LEd6dCxLenQsWXp0LFp6dCxYenQsRThlLFF6dCxKenQsZUN0LHRDdCxhQ3Qsc0N0LGlDdCxyQ3Qsb0N0LFA4ZSxuQ3QsbEN0LGNDdCxkQ3QsdUN0LHBDdCxoQ3QsZkN0LEk4ZSxtQ3QsZ0N0LGJDdCxBOGUsdkN0LHhDdCx5Q3Qsd0N0LGtDdCxTQ3QsX0N0LE1DdCx6Q3QsQ0N0LFRDdCwkQ3QsREN0LExDdCxFQ3QsUEN0LElDdCxBQ3QsTkN0LFJDdCxPQ3QsRkN0LEJDdCxIQ3QscUN0LGpDdCxWQ3QsTjhlLFVDdCxXQ3QsR0N0LEtDdCxZQ3QsWkN0LFhDdCxSOGUsUUN0LEpDdCxlVHQsdFR0LGFUdCxzVHQsaVR0LHJUdCxvVHQsblR0LGxUdCxjVHQsZFR0LHVUdCxwVHQsaFR0LGZUdCxtVHQsZ1R0LGJUdCx2VHQseFR0LHlUdCx3VHQsa1R0LFNUdCxfVHQsTVR0LHpUdCxDVHQsVFR0LCRUdCxEVHQsTFR0LEVUdCxQVHQsSVR0LEFUdCxOVHQsUlR0LE9UdCxGVHQsemIsQlR0LEhUdCxxVHQsalR0LFZUdCxPOGUsVVR0LFdUdCxHVHQsQ2IsS1R0LFlUdCxaVHQsWFR0LFFUdCxKVHQsRjhlLGUkdCx0JHQsYSR0LHMkdCxpJHQsciR0LG8kdCxuJHQsbCR0LGMkdCxkJHQsdSR0LHAkdCxoJHQsZiR0LG0kdCxYMyxnJHQsYiR0LHYkdCx4JHQseSR0LHckdCxrJHQsUyR0LF8kdCxNJHQseiR0LEMkdCxUJHQsJCR0LEQkdCxMJHQsRSR0LFAkdCxJJHQsQSR0LE4kdCxSJHQsTyR0LEYkdCxCJHQsSCR0LHEkdCxqJHQsViR0LFUkdCxXJHQsRyR0LEskdCxZJHQsWiR0LFgkdCxRJHQsSiR0LGVEdCxCOGUsdER0LGFEdCxzRHQsaUR0LHJEdCxvRHQsbkR0LGxEdCxjRHQsZER0LHVEdCxwRHQsaER0LGZEdCxtRHQsSDhlLGdEdCxiRHQsdkR0LHhEdCx5RHQsd0R0LHE4ZSxrRHQsU0R0LF9EdCxNRHQsekR0LENEdCxURHQsJER0LEREdCxMRHQsRUR0LFBEdCxJRHQsQUR0LE5EdCxSRHQsT0R0LEZEdCxCRHQsSER0LHFEdCxqRHQsVkR0LFVEdCxXRHQsR0R0LEtEdCxZRHQsajhlLFRiLFpEdCxYRHQsUUR0LEpEdCxlTHQsdEx0LGFMdCxzTHQsaUx0LHJMdCxvTHQsbkx0LFY4ZSxsTHQsY0x0LGRMdCx1THQscEx0LGhMdCxmTHQsbUx0LCRiLGdMdCxiTHQsdkx0LHhMdCx5THQsd0x0LGtMdCxTTHQsX0x0LE1MdCx6THQsQ0x0LFRMdCxVOGUsJEx0LERMdCxMTHQsRUx0LFBMdCxJTHQsQUx0LE5MdCxSTHQsT0x0LEZMdCxCTHQsSEx0LHFMdCxqTHQsVkx0LFVMdCxXOGUsV0x0LEdMdCxLTHQsRzhlLFlMdCxaTHQsWEx0LFFMdCxEYixKTHQsSzhlLGVFdCx0RXQsYUV0LHNFdCxpRXQsckV0LFk4ZSxvRXQsbkV0LGxFdCxjRXQsZEV0LHVFdCxwRXQsaEV0LGZFdCxtRXQsZ0V0LGJFdCx2RXQseEV0LHlFdCx3RXQsa0V0LFNFdCxfRXQsTUV0LHpFdCxDRXQsVEV0LCRFdCxERXQsWjhlLExFdCxFRXQsUEV0LElFdCxBRXQsTkV0LFJFdCxPRXQsWDhlLEZFdCxCRXQsSEV0LHFFdCxqRXQsVkV0LFVFdCxXRXQsR0V0LEtFdCxZRXQsWkV0LFhFdCxRRXQsUThlLEpFdCxlUHQsdFB0LGFQdCxzUHQsaVB0LHJQdCxvUHQsblB0LGxQdCxjUHQsZFB0LHVQdCxwUHQsaFB0LEo4ZSxmUHQsbVB0LGdQdCxiUHQsdlB0LHhQdCx5UHQsd1B0LGtQdCxTUHQsX1B0LE1QdCx6UHQsQ1B0LExiLFRQdCwkUHQsRFB0LExQdCxFUHQsUFB0LElQdCxBUHQsTlB0LFJQdCxlZ2UsT1B0LEZQdCxCUHQsSFB0LHFQdCxqUHQsVlB0LFVQdCxXUHQsR1B0LEtQdCxZUHQsWlB0LFhQdCxRUHQsSlB0LGVJdCx0SXQsYUl0LHNJdCxpSXQsckl0LG9JdCxuSXQsbEl0LGNJdCxkSXQsdUl0LHBJdCxoSXQsZkl0LG1JdCxnSXQsYkl0LHZJdCx4SXQseUl0LHdJdCx0Z2Usa0l0LFNJdCxfSXQsTUl0LHpJdCxhZ2UsQ0l0LFRJdCwkSXQsREl0LExJdCxFSXQscFdhLHNnZT1nKCgpPT57dVdhPSJmYWIiLFM4ZT17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzcXVhcmUtZ2l0aHViIixpY29uOls0NDgsNTEyLFsiZ2l0aHViLXNxdWFyZSJdLCJmMDkyIiwiTTQ0OCA5NmMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwek0yNjUuOCA0MDcuN2MwLTEuOCAwLTYgLjEtMTEuNiAuMS0xMS40IC4xLTI4LjggLjEtNDMuNyAwLTE1LjYtNS4yLTI1LjUtMTEuMy0zMC43IDM3LTQuMSA3Ni05LjIgNzYtNzMuMSAwLTE4LjItNi41LTI3LjMtMTcuMS0zOSAxLjctNC4zIDcuNC0yMi0xLjctNDUtMTMuOS00LjMtNDUuNyAxNy45LTQ1LjcgMTcuOS0yNi42LTcuNS01Ni42LTcuNS04My4yIDAgMCAwLTMxLjgtMjIuMi00NS43LTE3LjktOS4xIDIyLjktMy41IDQwLjYtMS43IDQ1LTEwLjYgMTEuNy0xNS42IDIwLjgtMTUuNiAzOSAwIDYzLjYgMzcuMyA2OSA3NC4zIDczLjEtNC44IDQuMy05LjEgMTEuNy0xMC42IDIyLjMtOS41IDQuMy0zMy44IDExLjctNDguMy0xMy45LTkuMS0xNS44LTI1LjUtMTcuMS0yNS41LTE3LjEtMTYuMi0uMi0xLjEgMTAuMi0xLjEgMTAuMiAxMC44IDUgMTguNCAyNC4yIDE4LjQgMjQuMiA5LjcgMjkuNyA1Ni4xIDE5LjcgNTYuMSAxOS43IDAgOSAuMSAyMS43IC4xIDMwLjYgMCA0LjggLjEgOC42IC4xIDEwIDAgNC4zLTMgOS41LTExLjUgOC02Ni0yMi4xLTExMi4yLTg0LjktMTEyLjItMTU4LjMgMC05MS44IDcwLjItMTYxLjUgMTYyLTE2MS41UzM4OCAxNjUuNiAzODggMjU3LjRjLjEgNzMuNC00NC43IDEzNi4zLTExMC43IDE1OC4zLTguNCAxLjUtMTEuNS0zLjctMTEuNS04em0tOTAuNS01NC44Yy0uMi0xLjUgMS4xLTIuOCAzLTMuMiAxLjktLjIgMy43IC42IDMuOSAxLjkgLjMgMS4zLTEgMi42LTMgMy0xLjkgLjQtMy43LS40LTMuOS0xLjd6bS05LjEgMy4yYy0yLjIgLjItMy43LS45LTMuNy0yLjQgMC0xLjMgMS41LTIuNCAzLjUtMi40IDEuOS0uMiAzLjcgLjkgMy43IDIuNCAwIDEuMy0xLjUgMi40LTMuNSAyLjR6bS0xNC4zLTIuMmMtMS45LS40LTMuMi0xLjktMi44LTMuMnMyLjQtMS45IDQuMS0xLjVjMiAuNiAzLjMgMi4xIDIuOCAzLjQtLjQgMS4zLTIuNCAxLjktNC4xIDEuM3ptLTEyLjUtNy4zYy0xLjUtMS4zLTEuOS0zLjItLjktNC4xIC45LTEuMSAyLjgtLjkgNC4zIC42IDEuMyAxLjMgMS44IDMuMyAuOSA0LjEtLjkgMS4xLTIuOCAuOS00LjMtLjZ6bS04LjUtMTBjLTEuMS0xLjUtMS4xLTMuMiAwLTMuOSAxLjEtLjkgMi44LS4yIDMuNyAxLjMgMS4xIDEuNSAxLjEgMy4zIDAgNC4xLS45IC42LTIuNiAwLTMuNy0xLjV6bS02LjMtOC44Yy0xLjEtMS4zLTEuMy0yLjgtLjQtMy41IC45LS45IDIuNC0uNCAzLjUgLjYgMS4xIDEuMyAxLjMgMi44IC40IDMuNS0uOSAuOS0yLjQgLjQtMy41LS42em0tNi02LjRjLTEuMy0uNi0xLjktMS43LTEuNS0yLjYgLjQtLjYgMS41LS45IDIuOC0uNCAxLjMgLjcgMS45IDEuOCAxLjUgMi42LS40IC45LTEuNyAxLjEtMi44IC40eiJdfSwkX3Q9UzhlLERfdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ0aGluay1wZWFrcyIsaWNvbjpbNTc2LDUxMixbXSwiZjczMSIsIk00NjUuNCA0MDkuNGw4Ny4xLTE1MC4yLTMyLS4zLTU1LjEgOTUtMjA2LjItMzUzLjktMjM2LjIgNDA3LjQgMzIgLjMgMjA0LjItMzUyLjEgMjA2LjIgMzUzLjh6TTExMC4xIDM2NS4zbDMyLjEgMCAxMTcuNC0yMDIuNSAyMDMuNCAzNDkuMSAzMi41IC4xLTIzNS44LTQwNC42LTE0OS42IDI1Ny45eiJdfSxMX3Q9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZ29vZ2xlLWRyaXZlIixpY29uOls1MTIsNTEyLFtdLCJmM2FhIiwiTTMzOSAzMTQuOUwxNzUuNCAzMiAzMzYuNiAzMiA1MDAuMiAzMTQuOSAzMzkgMzE0Ljl6TTIwMS41IDMzOC41bC04MC42IDE0MS41IDMxMC41IDAgODAuNi0xNDEuNS0zMTAuNSAwek0xNTQuMSA2Ny40TDAgMzM4LjUgODAuNiA0ODAgMjM3IDIwOC44IDE1NC4xIDY3LjR6Il19LEVfdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJhdXRvcHJlZml4ZXIiLGljb246WzY0MCw1MTIsW10sImY0MWMiLCJNMzE4LjQgMTZsLTE2MSA0ODAgNzcuNSAwIDI1LjQtODEuNCAxMTkuNSAwIDI1LjIgODEuNCA3Ny41IDAtMTY0LjEtNDgwek0yNzguMSAzNTcuOWw0MS4yLTEzMC40IDEuNSAwIDQwLjkgMTMwLjQtODMuNiAwek02NDAgNDA1TDYzMCAzNzMuNiA0NjIuMSAzNTggNDgxLjUgNDE0LjUgNjQwIDQwNXpNMTc3LjkgMzU4TDEwIDM3My43IDAgNDA1IDE1OC41IDQxNC40IDE3Ny45IDM1OHoiXX0sXzhlPXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNxdWFyZS12aWFkZW8iLGljb246WzQ0OCw1MTIsWyJ2aWFkZW8tc3F1YXJlIl0sImYyYWEiLCJNNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjB6TTExOC4zIDM4MS4yYy02OC03My42LTE5LjgtMTk2LjEgODEuMi0xOTYuMSAxMy4zIDAgMjYuNiAyLjEgMzkuMSA2LjctNC4zIDguNC03LjMgMTcuNi04LjQgMjcuMS05LjctNC4xLTIwLjItNi0zMC43LTYtNDguOCAwLTg0LjYgNDEuNy04NC42IDg4LjkgMCA0MyAyOC41IDc4LjcgNjkuNSA4NS45IDYxLjUtMjQgNzIuOS0xMTcuNiA3Mi45LTE3NSAwLTcuMyAwLTE0LjgtLjYtMjIuMS0xMS4yLTMyLjktMjYuNi02NC42LTQ0LjItOTQuNSAyNy4xIDE4LjMgNDEuOSA2Mi41IDQ0LjIgOTQuMWwwIC40YzcuNyAyMi41IDExLjggNDYuMiAxMS44IDcwIDAgNTQuMS0yMS45IDk5LTY4LjMgMTI4LjJsLTIuNCAuMmM1MCAxIDg2LjItMzguNiA4Ni4yLTg3LjIgMC0xMi4yLTIuMS0yNC4zLTYuOS0zNS43IDkuNS0xLjkgMTguNS01LjYgMjYuNC0xMC41IDE1LjMgMzYuNiAxMi42IDg3LjMtMjIuOCAxMjUuNi00Mi40IDQ2LjItMTIwIDQ2LjYtMTYyLjQgMHpNMjc0LjYgMjE3LjZjMjEuOS0xMiA0OS42LTMwLjcgNjIuMy01MyAxLjUtMyA0LjEtOC42IDQuNS0xMi0xMi41IDI3LjktNDQuMiA0OS44LTczLjkgNTYuNy00LjctNy4zLTcuNS0xNS41LTcuNS0yNC4zIDAtMTAuMyA1LjItMjQuMSAxMi45LTMxLjYgOC4zLTcuOSAxOC0xMC45IDI3LjktMTQuMSAxNi01LjEgMzIuNS0xMC4zIDQ0LjUtMzUuOSAzMi41IDQ2LjIgMTMuMSAxMzAuMy0zNi4zIDEzMC4zLTEzLjMgMC0yNS4xLTcuMS0zNC40LTE2LjF6Il19LFBfdD1fOGUsSV90PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImNwYW5lbCIsaWNvbjpbNjQwLDUxMixbXSwiZjM4OCIsIk0yMTAuMyAyMjAuMmMtNS42LTI0LjgtMjYuOS00MS4yLTUxLTQxLjJsLTM3IDBjLTcuMSAwLTEyLjUgNC41LTE0LjMgMTAuOUw3My4xIDMyMCA5Ny44IDMxOS45YzYuOCAwIDEyLjMtNC41IDE0LjItMTAuN2wyNS44LTk1LjcgMTkuOCAwYzguNCAwIDE2LjIgNS42IDE4LjMgMTQuOCAyLjUgMTAuOS01LjkgMjIuNi0xOC4zIDIyLjZsLTEwLjMgMGMtNyAwLTEyLjUgNC42LTE0LjMgMTAuOGwtNi40IDIzLjggMzIgMGMzNy4yIDAgNTguMy0zNi4yIDUxLjctNjUuM3ptLTE1Ni41IDI4bDE4LjYgMGM2LjkgMCAxMi40LTQuNCAxNC4zLTEwLjlsNi4yLTIzLjYtNDAgMEMzMCAyMTMuNyA5IDIyNy44IDEuNyAyNTQuOC03IDI4OC42IDE4LjUgMzIwIDUyIDMyMGwxMi40IDAgNy4xLTI2LjFjMS4yLTQuNC0yLjItOC4zLTYuNC04LjNsLTExLjMgMGMtMjQuNyAwLTI0LjktMzcuNCAwLTM3LjR6bTI0Ny41LTM0LjhsLTc3LjkgMC0zLjUgMTMuNGMtMi40IDkuNiA0LjUgMTguNSAxNC4yIDE4LjVsNTcuNSAwYzQgMCAyLjQgNC4zIDIuMSA1LjNsLTguNiAzMS44Yy0uNCAxLjQtLjkgNS4zLTUuNSA1LjNsLTM0LjkgMGMtNS4zIDAtNS4zLTcuOSAwLTcuOWwyMS42IDBjNi44IDAgMTIuMy00LjYgMTQuMi0xMC44bDMuNS0xMy4yLTQ4LjQgMGMtMzkuMiAwLTQzLjYgNjMuOC0uNyA2My44bDU3LjUgLjJjMTEuMiAwIDIwLjYtNy4yIDIzLjQtMTcuOGwxNC01MS44YzQuOC0xOS4yLTkuNy0zNi44LTI4LjUtMzYuOHpNNjMzLjEgMTc5bC0xOC45IDBjLTQuOSAwLTkuMiAzLjItMTAuNCA3LjlMNTY4LjIgMzIwYzIwLjcgMCAzOS44LTEzLjggNDQuOS0zNC41bDI2LjUtOTguMmMxLjItNC4zLTItOC4zLTYuNS04LjN6TTM5Ni44IDIxMy43bDAgLjEtNDguMyAwLTI2LjIgOThjLTEuMiA0LjQgMi4yIDguMyA2LjQgOC4zbDE4LjkgMGM0LjggMCA5LjItMyAxMC40LTcuOGwxNy4yLTY0IDE5LjggMGMxMi41IDAgMjEuNCAxMS44IDE4LjEgMjMuNGwtMTAuNiA0MGMtMS4yIDQuMyAxLjkgOC4zIDYuNCA4LjNsMTkuMSAwYzQuNiAwIDkuMS0yLjkgMTAuMy03LjhsOC44LTMzLjFjOS0zMy4xLTE1LjktNjUuNC01MC4zLTY1LjR6bTk4LjMgNzQuNmMtMy42IDAtNi0zLjQtNS4xLTYuN2w4LTMwYy45LTMuOSAzLjctNiA3LjgtNmwzMi45IDBjMi42IDAgNC42IDIuNCAzLjkgNS4xbC0uNyAyLjZjLS42IDItMS45IDMtMy45IDNsLTIxLjYgMGMtNyAwLTEyLjYgNC42LTE0LjIgMTAuOGwtMy41IDEzIDUzLjQgMGMxMC41IDAgMjAuMy02LjYgMjMuMi0xNy42bDMuMi0xMmM0LjktMTkuMS05LjMtMzYuOC0yOC4zLTM2LjhsLTQ3LjMgMGMtMTcuOSAwLTMzLjggMTItMzguNiAyOS42bC0xMC44IDQwYy01IDE3LjcgOC4zIDM2LjcgMjguMyAzNi43bDY2LjcgMGM2LjggMCAxMi4zLTQuNSAxNC4yLTEwLjdsNS43LTIxLTczLjMgMHoiXX0sQV90PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6Im1lbmRlbGV5IixpY29uOls2NDAsNTEyLFtdLCJmN2IzIiwiTTYyNC42IDMyNS4yYy0xMi4zLTEyLjQtMjkuNy0xOS4yLTQ4LjQtMTcuMi00My4zLTEtNDkuNy0zNC45LTM3LjUtOTguOCAyMi44LTU3LjUtMTQuOS0xMzEuNS04Ny40LTEzMC44LTc3LjQgLjctODEuNyA4Mi0xMzAuOSA4Mi00OC4xIDAtNTQtODEuMy0xMzAuOS04Mi03Mi45LS44LTExMC4xIDczLjMtODcuNCAxMzAuOCAxMi4yIDYzLjkgNS44IDk3LjgtMzcuNSA5OC44LTIxLjItMi4zLTM3IDYuNS01MyAyMi41LTE5LjkgMTkuNy0xOS4zIDk0LjggNDIuNiAxMDIuNiA0Ny4xIDUuOSA4MS42LTQyLjkgNjEuMi04Ny44LTQ3LjMtMTAzLjcgMTg1LjktMTA2LjEgMTQ2LjUtOC4yLS4xIC4xLS4yIC4yLS4zIC40LTI2LjggNDIuOCA2LjggOTcuNCA1OC44IDk1LjIgNTIuMSAyLjEgODUuNC01Mi42IDU4LjgtOTUuMi0uMS0uMi0uMi0uMy0uMy0uNC0zOS40LTk3LjkgMTkzLjgtOTUuNSAxNDYuNSA4LjItNC42IDEwLTYuNyAyMS4zLTUuNyAzMyA0LjkgNTMuNCA2OC43IDc0LjEgMTA0LjkgMzUuMiAxNy44LTE0LjggMjMuMS02NS42IDAtODguM3pNMzIwLjcgMzA2LjFsLS42IDBjLTQzLjQgMC02Mi44LTM3LjUtNjIuOC02Mi44IDAtMzQuNyAyOC4yLTYyLjggNjIuOC02Mi44bC42IDBjMzQuNyAwIDYyLjggMjguMSA2Mi44IDYyLjggMCAyNS0xOS4yIDYyLjgtNjIuOCA2Mi44eiJdfSxOX3Q9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZHJhZnQyZGlnaXRhbCIsaWNvbjpbNTEyLDUxMixbXSwiZjM5NiIsIk00OTYgMzk4LjFsLTE0NC04Mi4yIDAgNjQuNy05MS4zIDBjMzAuOC0zNSA4MS44LTk1LjkgMTExLjgtMTQ5LjMgMzUuMi02Mi42IDE2LjEtMTIzLjQtMTIuOC0xNTMuMy00LjQtNC42LTYyLjItNjIuOS0xNjYtNDEuMi01OS4xIDEyLjQtODkuNCA0My40LTEwNC4zIDY3LjMtMTMuMSAyMC45LTE3IDM5LjgtMTguMiA0Ny43LTUuNSAzMyAxOS40IDY3LjEgNTYuNyA2Ny4xIDMxLjcgMCA1Ny4zLTI1LjcgNTcuMy01Ny40IDAtMjcuMS0xOS43LTUyLjEtNDgtNTYuOCAxLjgtNy4zIDE3LjctMjEuMSAyNi4zLTI0LjcgNDEuMS0xNy4zIDc4IDUuMiA4My4zIDMzLjUgOC4zIDQ0LjMtMzcuMSA5MC40LTY5LjcgMTI3LjYtNzYuNiA4Ny0xNDIuOCAxNTUuNy0xNjEuMSAxNzQuOGwzMzYtLjEgMCA2NC4yIDE0NC04MS45ek0zODUuOSAzNzFsNDcuMSAyNy4yLTQ3LjEgMjcuMiAwLTU0LjR6TTEwNS40IDE2MS40YTIyLjQgMjIuNCAwIDEgMSA0NC44IDAgMjIuNCAyMi40IDAgMSAxIC00NC44IDB6TTk4LjUgMzgwLjVjMjUuNi0yNy40IDk3LjctMTA0LjcgMTUwLjgtMTY5LjkgMzUuMS00My4xIDQwLjMtODIuNCAyOC40LTExMi43LTcuNC0xOC44LTE3LjUtMzAuMi0yNC4zLTM1LjcgNDUuMyAyLjEgNjggMjMuNCA4Mi4yIDM4LjMgMCAwIDQyLjQgNDguMiA1LjggMTEzLjMtMzcgNjUuOS0xMTAuOSAxNDcuNS0xMjguNSAxNjYuN2wtMTE0LjQgMHoiXX0sUl90PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InJlcGx5ZCIsaWNvbjpbNDQ4LDUxMixbXSwiZjNlNiIsIk0zMjAgNDgwbC0xOTIgMEM1Ny42IDQ4MCAwIDQyMi40IDAgMzUyTDAgMTYwQzAgODkuNiA1Ny42IDMyIDEyOCAzMmwxOTIgMGM3MC40IDAgMTI4IDU3LjYgMTI4IDEyOGwwIDE5MmMwIDcwLjQtNTcuNiAxMjgtMTI4IDEyOHpNMTkzLjQgMjczLjJjLTYuMS0yLTExLjYtMy4xLTE2LjQtMy4xLTcuMiAwLTEzLjUgMS45LTE4LjkgNS42cy05LjYgOS0xMi44IDE1LjhsLTEuMSAwLTQuMi0xOC4zLTI4IDAgMCAxMzguOSAzNi4xIDAgMC04OS43YzEuNS01LjQgNC40LTkuOCA4LjctMTMuMnM5LjgtNS4xIDE2LjItNS4xYzQuNiAwIDkuOCAxIDE1LjYgMy4xbDQuOC0zNHpNMzA4LjYgMzc2LjZjLTMuMiAyLjQtNy43IDQuOC0xMy43IDcuMXMtMTIuOCAzLjUtMjAuNCAzLjVjLTEyLjIgMC0yMS4xLTMtMjYuNS04LjktNS41LTUuOS04LjUtMTQuNy05LTI2LjRsODMuMyAwYy45LTQuOCAxLjYtOS40IDIuMS0xMy45IC41LTQuNCAuNy04LjYgLjctMTIuNSAwLTEwLjctMS42LTE5LjctNC43LTI2LjktMy4yLTcuMi03LjMtMTMtMTIuNS0xNy4yLTUuMi00LjMtMTEuMS03LjMtMTcuOC05LjItNi43LTEuOC0xMy41LTIuOC0yMC42LTIuOC0yMS4xIDAtMzcuNSA2LjEtNDkuMiAxOC4zcy0xNy41IDMwLjUtMTcuNSA1NWMwIDIyLjggNS4yIDQwLjcgMTUuNiA1My43IDEwLjQgMTMuMSAyNi44IDE5LjYgNDkuMiAxOS42IDEwLjcgMCAyMC45LTEuNSAzMC40LTQuNnMxNy4xLTYuOCAyMi42LTExLjJsLTEyLTIzLjZ6bS0yMS44LTcwLjNjMy44IDUuNCA1LjMgMTMuMSA0LjYgMjMuMWwtNTEuNyAwYy45LTkuNCAzLjctMTcgOC4yLTIyLjZzMTEuNS04LjUgMjEtOC41YzguMi0uMSAxNC4xIDIuNiAxNy45IDh6bTc5LjkgMi41YzQuMSAzLjkgOS40IDUuOCAxNi4xIDUuOCA3IDAgMTIuNi0xLjkgMTYuNy01LjhzNi4xLTkuMSA2LjEtMTUuNi0yLTExLjYtNi4xLTE1LjQtOS42LTUuNy0xNi43LTUuN2MtNi43IDAtMTIgMS45LTE2LjEgNS43cy02LjEgOC45LTYuMSAxNS40IDIgMTEuNyA2LjEgMTUuNnptMCAxMDAuNWM0LjEgMy45IDkuNCA1LjggMTYuMSA1LjggNyAwIDEyLjYtMS45IDE2LjctNS44czYuMS05LjEgNi4xLTE1LjYtMi0xMS42LTYuMS0xNS40LTkuNi01LjctMTYuNy01LjdjLTYuNyAwLTEyIDEuOS0xNi4xIDUuN3MtNi4xIDguOS02LjEgMTUuNGMwIDYuNiAyIDExLjcgNi4xIDE1LjZ6Il19LE9fdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJlbXBpcmUiLGljb246WzUxMiw1MTIsW10sImYxZDEiLCJNMjk1LjYgNTQuMmMtMTAuOC0yLjItMjIuMS0zLjMtMzMuNS0zLjZsMC0xOC4yYzc4LjEgMi4yIDE0Ni4xIDQ0IDE4NC42IDEwNi42bC0xNS44IDkuMWMtNi4xLTkuNy0xMi43LTE4LjgtMjAuMi0yNy4xbC0xOCAxNS41Yy0yNi0yOS42LTYxLjQtNTAuNy0xMDEuOS01OC40bDQuOC0yMy45ek02MS40IDMyMi40bDIzLTcuN2MtNi40LTE4LjMtMTAtMzguMi0xMC01OC43czMuMy00MC40IDkuNy01OC43bC0yMi43LTcuN2MzLjYtMTAuOCA4LjMtMjEuMyAxMy42LTMxbC0xNS44LTkuMUM0MiAxODEgMzIuMSAyMTcuNSAzMi4xIDI1NnMxMCA3NSAyNy4xIDEwNi42TDc1IDM1My41Yy01LjMtMTAtOS43LTIwLjMtMTMuNi0zMS4xek0yMjEuMSA0MzRjLTQwLjQtOC03NS44LTI5LjEtMTAxLjktNTguN2wtMTggMTUuOGMtNy41LTguNi0xNC40LTE3LjctMjAuMi0yNy40bC0xNiA5LjRjMzguNSA2Mi4zIDEwNi44IDEwNC4zIDE4NC45IDEwNi42bDAtMTguM2MtMTEuMy0uMy0yMi43LTEuNy0zMy41LTMuNmw0LjctMjMuOHpNMTAxLjMgMTIwLjlsMTggMTUuNWMyNi0yOS42IDYxLjQtNTAuNyAxMDEuOS01OC40bC00LjctMjMuOGMxMC44LTIuMiAyMi4xLTMuMyAzMy41LTMuNmwwLTE4LjJDMTcxLjkgMzQuNiAxMDMuOSA3Ni40IDY1LjQgMTM5bDE1LjggOS4xYzYtOS43IDEyLjYtMTguOSAyMC4xLTI3LjJ6TTQxMC43IDM5MS4xbC0xOC0xNS44Yy0yNiAyOS42LTYxLjQgNTAuNy0xMDEuOSA1OC43bDQuNyAyMy44Yy0xMC44IDEuOS0yMi4xIDMuMy0zMy41IDMuNmwwIDE4LjNjNzguMS0yLjIgMTQ2LjQtNDQuMyAxODQuOS0xMDYuNmwtMTYuMS05LjRjLTUuNyA5LjctMTIuNiAxOC44LTIwLjEgMjcuNHpNOCAyNTZhMjQ4IDI0OCAwIDEgMSA0OTYgMCAyNDggMjQ4IDAgMSAxIC00OTYgMHptNDgzLjggMGEyMzUuOCAyMzUuOCAwIDEgMCAtNDcxLjYgMCAyMzUuOCAyMzUuOCAwIDEgMCA0NzEuNiAwem0tMzktMTA2LjZMNDM3IDE1OC41YzUuMyA5LjcgMTAgMjAuMiAxMy42IDMxbC0yMi43IDcuN2M2LjQgMTguMyA5LjcgMzguMiA5LjcgNTguN3MtMy42IDQwLjQtMTAgNTguN2wyMyA3LjdjLTMuOSAxMC44LTguMyAyMS0xMy42IDMxbDE1LjggOS4xQzQ3MCAzMzEgNDc5LjkgMjk0LjUgNDc5LjkgMjU2cy05LjktNzUtMjcuMS0xMDYuNnptLTE4MyAxNzcuN2MxNi4zLTMuMyAzMC40LTExLjYgNDAuNy0yMy41bDUxLjIgNDQuOGMxMS45LTEzLjYgMjEuMy0yOS4zIDI3LjEtNDYuOGwtNjQuMi0yMi4xYzIuNS03LjUgMy45LTE1LjIgMy45LTIzLjVzLTEuNC0xNi4xLTMuOS0yMy41bDY0LjUtMjIuMWMtNi4xLTE3LjQtMTUuNS0zMy4yLTI3LjQtNDYuOGwtNTEuMiA0NC44Yy0xMC4yLTExLjktMjQuNC0yMC41LTQwLjctMjMuOGwxMy4zLTY2LjRjLTguNi0xLjktMTcuNy0yLjgtMjcuMS0yLjhzLTE4LjUgLjgtMjcuMSAyLjhsMTMuMyA2Ni40Yy0xNi4zIDMuMy0zMC40IDExLjktNDAuNyAyMy44bC01MS4yLTQ0LjhjLTExLjkgMTMuNi0yMS4zIDI5LjMtMjcuNCA0Ni44bDY0LjUgMjIuMWMtMi41IDcuNS0zLjkgMTUuMi0zLjkgMjMuNXMxLjQgMTYuMSAzLjkgMjMuNWwtNjQuMiAyMi4xYzUuOCAxNy40IDE1LjIgMzMuMiAyNy4xIDQ2LjhsNTEuMi00NC44YzEwLjIgMTEuOSAyNC40IDIwLjIgNDAuNyAyMy41bC0xMy4zIDY2LjdjOC42IDEuNyAxNy43IDIuOCAyNy4xIDIuOHMxOC41LTEuMSAyNy4xLTIuOGwtMTMuMy02Ni43eiJdfSxGX3Q9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiYWNjZXNzaWJsZS1pY29uIixpY29uOls0NDgsNTEyLFs2MjEwN10sImYzNjgiLCJNNDIzLjkgMjU1LjhMNDExIDQxMy4xYy0zLjMgNDAuNy02My45IDM1LjEtNjAuNi00LjlsMTAtMTIyLjUtNDEuMSAyLjNjMTAuMSAyMC43IDE1LjggNDMuOSAxNS44IDY4LjUgMCA0MS4yLTE2LjEgNzguNy00Mi4zIDEwNi41bC0zOS4zLTM5LjNjNTcuOS02My43IDEzLjEtMTY3LjItNzQtMTY3LjItMjUuOSAwLTQ5LjUgOS45LTY3LjIgMjZMNzMgMjQzLjJjMjItMjAuNyA1MC4xLTM1LjEgODEuNC00MC4ybDc1LjMtODUuNy00Mi42LTI0LjgtNTEuNiA0NkMxMDUuNSAxNjUuMyA2NC45IDEyMCA5NSA5My4xbDY4LTYwLjdjOS44LTguOCAyNC4xLTEwLjIgMzUuNS0zLjYgMCAwIDEzOS4zIDgwLjkgMTM5LjUgODEuMSAxNi4yIDEwLjEgMjAuNyAzNiA2LjEgNTIuNmwtNTguNCA2Ni41IDEwNi4xLTUuOWMxOC41LTEuMSAzMy42IDE0LjQgMzIuMSAzMi43ek0zNTkgMTAxLjhBNTAuOSA1MC45IDAgMSAwIDM1OSAwIDUwLjkgNTAuOSAwIDEgMCAzNTkgMTAxLjh6TTE3OS42IDQ1Ni41Yy04MC42IDAtMTI3LjQtOTAuNi04Mi43LTE1Ni4xTDU3LjIgMjYwLjdDMzYuNCAyODcgMjQgMzIwLjMgMjQgMzU2LjQgMjQgNDg3LjEgMTc0LjcgNTU3LjggMjc1LjQgNDc4LjlsLTM5LjctMzkuN2MtMTYgMTAuOS0zNS4zIDE3LjMtNTYuMSAxNy4zeiJdfSxCX3Q9e3ByZWZpeDoiZmFiIixpY29uTmFtZToicXVvcmEiLGljb246WzQ0OCw1MTIsW10sImYyYzQiLCJNNDQwLjcgMzg2LjdsLTI5LjMgMGMtMS41IDEzLjUtMTAuNSAzMC44LTMzIDMwLjgtMjAuNSAwLTM1LjMtMTQuMi00OS41LTM1LjggNDQuMi0zNC4yIDc0LjctODcuNSA3NC43LTE1MyAuMS0xMTcuNS05Ni42LTE5Ni43LTE5OC40LTE5Ni43LTk5LjcgMC0xOTcuNyA3OS43LTE5Ny43IDE5Ni43IDAgMTM0LjEgMTMxLjMgMjIxLjYgMjQ5IDE4OSAxOS43IDMzLjYgNDUuNyA2Mi4zIDk1LjIgNjIuMyA4MS44IDAgOTAuOC03NS4zIDg5LTkzLjN6TTI5Ny4yIDMyOS4yYy0xOS41LTI5LjItNDMuNy01Mi4yLTkxLjUtNTIuMi0zMC41IDAtNTQuMyAxMC02OSAyMi44bDEyLjIgMjQuM2M2LjItMyAxMy00IDE5LjgtNCAzNS41IDAgNTMuNyAzMC44IDY5LjIgNjEuMy0xMCAzLTIwLjcgNC4yLTMyLjcgNC4yLTc1IDAtMTA3LjUtNTMtMTA3LjUtMTU2LjcgMC0xMDQuNCAzMi41LTE1Ny45IDEwNy41LTE1Ny45IDc2LjIgMCAxMDguNyA1My41IDEwOC43IDE1Ny43IC4xIDQxLjgtNS40IDc1LjYtMTYuNyAxMDAuNXoiXX0sSF90PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImNjLWpjYiIsaWNvbjpbNTc2LDUxMixbXSwiZjI0YiIsIk00MzEuNSAyNDQuM2wwLTMyLjNjNDEuMiAwIDM4LjUgLjIgMzguNSAuMiA3LjMgMS4zIDEzLjMgNy4zIDEzLjMgMTYgMCA4LjgtNiAxNC41LTEzLjMgMTUuOC0xLjIgLjQtMy4zIC4zLTM4LjUgLjN6bTQyLjggMjAuMmMtMi44LS43LTMuMy0uNS00Mi44LS41bDAgMzVjMzkuNiAwIDQwIC4yIDQyLjgtLjUgNy41LTEuNSAxMy41LTggMTMuNS0xNyAwLTguNy02LTE1LjUtMTMuNS0xN3pNNTc2IDgwbDAgMzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4TDQ4IDQ4MGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhMMCA4MEMwIDUzLjUgMjEuNSAzMiA0OCAzMmw0ODAgMGMyNi41IDAgNDggMjEuNSA0OCA0OHpNMTgyIDE5Mi4zbC01NyAwYzAgNjcuMSAxMC43IDEwOS43LTM1LjggMTA5LjctMTkuNSAwLTM4LjgtNS43LTU3LjItMTQuOGwwIDI4YzMwIDguMyA2OCA4LjMgNjggOC4zIDk3LjkgMCA4Mi00Ny43IDgyLTEzMS4yem0xNzguNSA0LjVjLTYzLjQtMTYtMTY1LTE0LjktMTY1IDU5LjMgMCA3Ny4xIDEwOC4yIDczLjYgMTY1IDU5LjJsMC0yOC4zQzMxMi45IDMxMS43IDI1MyAzMDkgMjUzIDI1NnM1OS44LTU1LjYgMTA3LjUtMzEuMmwwLTI4ek01NDQgMjg2LjVjMC0xOC41LTE2LjUtMzAuNS0zOC0zMmwwLS44YzE5LjUtMi43IDMwLjMtMTUuNSAzMC4zLTMwLjIgMC0xOS0xNS43LTMwLTM3LTMxIDAgMCA2LjMtLjMtMTIwLjMtLjNsMCAxMjcuNSAxMjIuNyAwYzI0LjMgLjEgNDIuMy0xMi45IDQyLjMtMzMuMnoiXX0scV90PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImZlZG9yYSIsaWNvbjpbNDQ4LDUxMixbXSwiZjc5OCIsIk0wIDI1NS44Qy4xIDEzMi4yIDEwMC4zIDMyIDIyNCAzMlM0NDggMTMyLjMgNDQ4IDI1NiAzNDcuOCA0NzkuOSAyMjQuMSA0ODBMNTAuOSA0ODBDMjIuOCA0ODAgLjEgNDU3LjMgMCA0MjkuMmwwIDAgMC0xNzMuNCAwIDB6bTM0Mi42LTYzLjFjMC0zOS43LTM1LjYtNjguNS03My4yLTY4LjUtMzQuOSAwLTY1LjggMjYuMy03MC4xIDU5LjktLjIgMy44LS40IDUtLjQgOC41LS4xIDIxLjEgMCA0Mi44LS44IDY0LjQgLjkgMjYuMSAxIDUyLjEgMCA3Ni42IDAgMjcuMS0xOS40IDQ1LjUtNDQuNyA0NS41cy00NS44LTIwLjItNDUuOC00NS41Yy41LTI3LjcgMjIuNi00NS4zIDQ4LjUtNDYuMWwuMiAwIDI2LjMtLjIgMC0zNy4zLTI2LjMgLjJjLTQ3LjEtLjQtODQuNiAzNi41LTg1LjkgODMuNCAwIDQ1LjYgMzcuNSA4Mi45IDgzIDgyLjkgNDMgMCA3OC43LTMzLjYgODIuNi03NS42bC4yLTUzLjUgMzIuNi0uM2MyNS4zIC4yIDI1LTM3LjgtLjItMzcuM2wtMzIuNCAuM2MwLTYuNCAuMS0xMi44IC4xLTE5LjIgLjEtMTIuNyAuMS0yNS40LS4xLTM4LjIgLjEtMTYuNSAxNS44LTMxLjIgMzMuMi0zMS4yIDE3LjUgMCAzNS45IDguNyAzNS45IDMxLjIgMCAzLjItLjEgNS4xLS4zIDYuMy0xLjkgMTAuNSA1LjIgMjAuNCAxNS43IDIxLjkgMTAuNiAxLjUgMjAuMi02LjEgMjEuMi0xNi42IC42LTQuMiAuNy03LjkgLjctMTEuNnoiXX0sal90PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImR1b2xpbmdvIixpY29uOls1NzYsNTEyLFtdLCJlODEyIiwiTTUwNC4zIDIzMC41YzEwLjQgODguNS00My40IDE3Mi4xLTEyOC4yIDE5OXMtMTc2LjYtMTAuMy0yMTguOS04OC43Yy03MiAzLTEzNy40LTM5LjgtMTYzLjItMTA1LjUtMi42LTYuNi0xLjktMTQgMS45LTE5LjlzMTAuMi05LjcgMTcuMi0xMC4xbDk2LjEtNi0yMy44LTc1LjljLTYuMy0yMC0yLjItNDEuOSAxMS01OC4zczMzLjctMjUgNTQuNS0yM2M1Mi4yIDUgODYuOCA0LjggMTA0LS42UzMwMCAxNi43IDMzOS0xNi45YzE1LjktMTMuNyAzNy43LTE4LjUgNTcuOC0xMi43czM2LjEgMjEuMyA0Mi40IDQxLjRMNDYyLjggODcgNTQzLjYgMzcuM2M2LTMuNyAxMy40LTQuMyAxOS45LTEuNnMxMS4zIDguMyAxMi45IDE1LjJjMTYuMiA2OC4yLTEyLjQgMTQwLjMtNzIuMSAxNzkuNXpNMjU4LjUgNDc1LjlsMCAwYzE1LjEgNy41IDIxLjUgMjUuOCAxNC4yIDQxcy0yNS40IDIxLjktNDAuNyAxNC45bC00My45LTIxYy0xNS4xLTcuNS0yMS41LTI1LjgtMTQuMi00MXMyNS40LTIxLjkgNDAuNy0xNC45bDQzLjggMjF6TTU2NC42IDM0NS43YzE0LjggOC40IDIwIDI3LjMgMTEuNiA0Mi4ybC0yMy45IDQyLjRjLTguNyAxNC4zLTI3LjEgMTkuMi00MS42IDEwLjlzLTE5LjktMjYuNi0xMi00MS40bDIzLjktNDIuNGM0LTcuMSAxMC43LTEyLjQgMTguNi0xNC42czE2LjMtMS4yIDIzLjQgMi45eiJdfSxWX3Q9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZmlyc3RkcmFmdCIsaWNvbjpbMzg0LDUxMixbXSwiZjNhMSIsIk0zODQgMTkybC02NCAwIDAgMTI4LTEyOCAwIDAgMTI4LTE5MiAwIDAtMjUuNiAxNjYuNCAwIDAtMTI4IDEyOCAwIDAtMTI4IDg5LjYgMCAwIDI1LjZ6bS0yNS42IDM4LjRsMCAxMjgtMTI4IDAgMCAxMjgtMTY2LjQgMCAwIDI1LjYgMTkyIDAgMC0xMjggMTI4IDAgMC0xNTMuNi0yNS42IDB6bTI1LjYgMTkybC04OS42IDAgMCA4OS42IDI1LjYgMCAwLTY0IDY0IDAgMC0yNS42ek0wIDBsMCAzODQgMTI4IDAgMC0xMjggMTI4IDAgMC0xMjggMTI4IDAgMC0xMjgtMzg0IDB6Il19LFVfdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJmcmVlYnNkIixpY29uOls0NDgsNTEyLFtdLCJmM2E0IiwiTTMwMy43IDk2LjJjMTEuMS0xMS4xIDExNS41LTc3IDEzOS4yLTUzLjIgMjMuNyAyMy43LTQyLjEgMTI4LjEtNTMuMiAxMzkuMnMtMzkuNCAuOS02My4xLTIyLjljLTIzLjgtMjMuNy0zNC4xLTUyLTIyLjktNjMuMXpNMTA5LjkgNjguMUM3My42IDQ3LjUgMjIgMjQuNiA1LjYgNDEuMS0xMSA1Ny43IDEyLjcgMTEwLjUgMzMuNSAxNDYuOCA1MiAxMTQuNiA3OC4zIDg3LjUgMTA5LjkgNjguMXpNNDA2LjcgMTc0YzMuMyAxMS4zIDIuNyAyMC43LTIuNyAyNi4xLTIwLjMgMjAuMy04Ny41LTI3LTEwOS4zLTcwLjEtMTgtMzIuMy0xMS4xLTUzLjQgMTQuOS00OC43IDUuNy0zLjYgMTIuMy03LjYgMTkuNi0xMS42LTI5LjgtMTUuNS02My42LTI0LjMtOTkuNS0yNC4zLTExOS4xIDAtMjE1LjYgOTYuNS0yMTUuNiAyMTUuNiAwIDExOSA5Ni41IDIxNS42IDIxNS42IDIxNS42UzQ0NS4zIDM4MC4xIDQ0NS4zIDI2MWMwLTM4LjQtMTAuMS03NC41LTI3LjctMTA1LjgtMy45IDctNy42IDEzLjMtMTAuOSAxOC44eiJdfSxXX3Q9e3ByZWZpeDoiZmFiIixpY29uTmFtZToib2R5c2VlIixpY29uOls1MTIsNTEyLFtdLCJlNWM2IiwiTTQwNi43IDQ2M2MtNDIuMyAzMC44LTk0LjQgNDktMTUwLjcgNDktMTExLjEgMC0yMDUuNy03MC44LTI0MS4xLTE2OS44IDIuNCAxLjcgNS45IDMuNiA3LjkgNC40IDE2LjMgNy40IDQwLjEtNS40IDYyLjktMjguNyA2LjktNi45IDE0LjQtMTIuNCAyMi44LTE3LjMgMTguMy0xMS45IDM3LjYtMjAuOCA1OC40LTI3LjIgMCAwIDIyLjMgMzQuMiA0My4xIDc0LjhzLTIyLjMgNTQtMjcuMiA1NGMtLjMgMC0uOCAwLTEuNS0uMS0xMS0uNS03MC0zLTU2IDUxLjEgMTQuOSA1Ny40IDk3LjUgMzYuNiAxMzkuNiA4LjlzMzEuNy0xMTguMyAzMS43LTExOC4zYzQxLjEtNi40IDU0IDM3LjEgNTcuOSA1OS40IC44IDQuNiAxLjEgOS45IDEuNCAxNS41IDEuMSAyMS4yIDIuMyA0NS42IDM1LjMgNDYuNCA1LjMgMCAxMC42LS44IDE1LjUtMmwwLS4xem0tOTUuMy0yMy43Yy0yLS41LTMuNS0yLjUtMy01IDEtMi41IDMtMy41IDUtM3MzLjUgMyAzIDUtMi41IDMuNS01IDN6bS0yMDctOTUuNmMxLjUtLjUgMy41IDEgNCAzIDAgMi0xIDQtMyA0LTEuNSAuNS0zLjUtMS00LTMtLjUtMS41IDEtMy41IDMtNHpNNDUxLjggNDIxYzM3LjUtNDQuNiA2MC4yLTEwMi4yIDYwLjItMTY1IDAtNjcuNS0yNi4xLTEyOC45LTY4LjgtMTc0LjctLjEgMjMuNS02LjEgNDguMi0xNi44IDY5LjItMTEuOSAyMC4zLTQ5IDU4LjktNjkuOCA3OC43LS43IC4zLTEuMSAuOS0xLjUgMS40LS4yIC4yLS4zIC40LS41IC42LTUgNi45LTQgMTYuOCAzIDIxLjggMjEuMyAxNS44IDU2LjQgNDUuNiA1OS40IDcyLjggMy41IDM0LjkgMjcuOSA3NS42IDM0LjIgODYuMiAuOCAxLjMgMS4zIDIuMSAxLjQgMi40IDAgMi4yLS40IDQuMy0uOCA2LjVsMCAuMXpNMzkwLjcgMjUxYy0uNSAzIDEgNS45IDQgNi40czUuOS0xIDYuNC00LTEtNS45LTQtNi40Yy0zLTEtNS45IDEtNi40IDR6bTYxLjQtNjAuOWwtMTEuNCA1LjQtMyAxMi45LTUuNC0xMS40LTEyLjktMyAxMS40LTUuNCAzLTEyLjkgNS40IDExLjQgMTIuOSAzek0zOTUuNSA0MS4zYy0xNi4yIDguMi0yMi4xIDMyLjgtMjkgNjEuNC0uMyAxLjQtLjcgMi44LTEgNC4yLTkuNSAzOC41LTMwLjYgMzcuNi00MS43IDM3LjItMS4xIDAtMi0uMS0yLjktLjEtNS4xIDAtNi00LTguOS0xNy4xLTIuNi0xMi4xLTYuOS0zMi0xNy45LTYzLjYtMjIuNy02NS44LTgyLjctNDkuNC0xMjguMi0yMi4yLTU1LjMgMzMuMS0zNC40IDEwMS45LTE5LjggMTQ5LjQgLjcgMi4yIDEuNCA0LjQgMiA2LjYtNCA0LTEzLjggNy41LTI2IDExLjktMTIuMSA0LjMtMjYuNiA5LjUtNDAuMyAxNi45LTMzLjkgMTgtNzAuMyA0OS03OS44IDYyLjYtMS4zLTEwLjctMi0yMS41LTItMzIuNSAwLTE0MS40IDExNC42LTI1NiAyNTYtMjU2IDUxLjQgMCA5OS40IDE1LjIgMTM5LjUgNDEuM3pNNTguOSAxODkuNmMtMS41LTItNC41LTMtNi40LTEuNXMtMyA0LjUtMS41IDYuNCA0LjUgMyA2LjQgMS41YzIuNS0xLjUgMy00LjUgMS41LTYuNHpNMzI3LjMgNjQuOWMyLTEuNSA1LS41IDYuNCAxLjUgMS41IDIuNSAxIDUuNC0xLjUgNi40LTIgMS41LTUgLjUtNi40LTEuNXMtLjUtNSAxLjUtNi40ek05NS4xIDEwNWMtLjUgMS41IC41IDMgMiAzIDEuNSAuNSAzLS41IDMtMiAuNS0xLjUtLjUtMy0yLTNzLTMgLjUtMyAyem04NC43LS41Yy0zLjUtNDMuMSAzNy4xLTU0IDM3LjEtNTQgNDQuMS0xNS40IDU2IDUuOSA2Ni40IDM3LjZzMyA0Mi42LTM4LjYgNTguOS02MS45LTQuNS02NC45LTQyLjZsMCAuMXptODkuNiAxNC45bDEgMGMyLjUgMCA1LTIgNS01IDItNi45IDEtMTQuNC0yLTIwLjgtMS41LTItNC0zLjUtNi40LTIuNS0zIDEtNC41IDQtMy41IDYuOSAyIDQuNSAzIDkuOSAxLjUgMTQuOS0uNSAzIDEuNSA1LjkgNC41IDYuNGwtLjEgLjF6bS05LjktNDEuNmMtMiAwLTQtMS01LTNzLTItMy41LTMtNWMtMi0yLTItNS40IDAtNy40czUuNC0yIDcuNCAwYzIgMi41IDMuNSA1IDUgNy40cy41IDUuOS0yLjUgNy40Yy0uNiAwLTEgLjItMS4zIC4zLS4yIC4xLS40IC4yLS42IC4ybDAgLjF6Il19LEdfdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJnZy1jaXJjbGUiLGljb246WzUxMiw1MTIsW10sImYyNjEiLCJNMjU3LjUgOGEyNDggMjQ4IDAgMSAwIDAgNDk2IDI0OCAyNDggMCAxIDAgMC00OTZ6TTIwOCAzODIuOGwtMTI1LjctMTI1LjcgMTI1LjctMTI1LjcgMzUuMiAzNS40LTI0LjIgMjQuMi0xMS4xLTExLjEtNzcuMiA3Ny4yIDc3LjIgNzcuMiAyNi42LTI2LjYtNTMuMS01Mi45IDI0LjQtMjQuNCA3Ny4yIDc3LjItNzUgNzUuMnptOTktMi4ybC0zNS4yLTM1LjIgMjQuMS0yNC40IDExLjEgMTEuMSA3Ny4yLTc3LjItNzcuMi03Ny4yLTI2LjUgMjYuNSA1My4xIDUyLjktMjQuNCAyNC40LTc3LjItNzcuMiA3NS03NSAxMjUuNyAxMjUuNy0xMjUuNyAxMjUuNnoiXX0sS190PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImNsb3VkZmxhcmUiLGljb246WzY0MCw1MTIsW10sImUwN2QiLCJNNDA3LjkgMzE5LjlMMTc3LjEgMzE3Yy0uNyAwLTEuNC0uMi0yLS41cy0xLjItLjgtMS42LTEuNGMtLjQtLjYtLjctMS4zLS43LTJzMC0xLjQgLjItMi4xYy40LTEuMSAxLjEtMi4xIDIuMS0yLjhzMi4xLTEuMiAzLjMtMS4ybDIzMi45LTIuOWMyNy42LTEuMyA1Ny41LTIzLjYgNjgtNTAuOGwxMy4zLTM0LjVjLjQtLjkgLjUtMS45IC41LTIuOSAwLS41LS4xLTEuMS0uMi0xLjYtNy40LTMyLjItMjUtNjEuMS01MC4zLTgyLjNzLTU2LjctMzMuNy04OS43LTM1LjUtNjUuNiA3LjMtOTMgMjUuNy00OCA0NS4zLTU4LjggNzYuNWMtMTEuMy04LjUtMjQuOS0xMy4zLTM5LTEzLjdzLTI4IDMuNS0zOS44IDExLjQtMjAuOCAxOS4xLTI1LjkgMzIuMy01LjkgMjcuNi0yLjQgNDEuM2MtNTIuMyAxLjUtOTQuMiA0NC4xLTk0LjIgOTYuNSAwIDQuNyAuMyA5LjMgMSAxNCAuMiAxLjEgLjcgMi4xIDEuNSAyLjhzMS45IDEuMSAyLjkgMS4xbDQyNi4xIC4xYzAgMCAuMSAwIC4xIDAgMS4yIDAgMi4zLS40IDMuMy0xLjFzMS42LTEuNyAyLTIuOWwzLjMtMTEuM2MzLjktMTMuNCAyLjQtMjUuOC00LjEtMzQuOS02LTguNC0xNi4xLTEzLjMtMjguMi0xMy45em0xMDUuOS05OC44Yy0yLjEgMC00LjMgLjEtNi40IC4yLS44IC4xLTEuNSAuMy0yLjEgLjhzLTEgMS4xLTEuMyAxLjhsLTkuMSAzMS4yYy0zLjkgMTMuNC0yLjQgMjUuOCA0LjEgMzQuOSA2IDguNCAxNi4xIDEzLjMgMjguMiAxMy45bDQ5LjIgMi45Yy43IDAgMS40IC4yIDIgLjVzMS4xIC44IDEuNSAxLjRjLjQgLjYgLjcgMS4zIC44IDJzMCAxLjUtLjIgMi4xYy0uNCAxLjEtMS4xIDIuMS0yLjEgMi44cy0yLjEgMS4yLTMuMyAxLjJsLTUxLjEgMi45Yy0yNy44IDEuMy01Ny43IDIzLjYtNjguMSA1MC44bC0zLjcgOS42Yy0uMiAuNC0uMiAuOC0uMiAxLjNzLjIgLjggLjQgMS4yIC42IC43IC45IC45IC44IC4zIDEuMiAuM2MwIDAgLjEgMCAuMSAwbDE3NS45IDBjMSAwIDItLjMgMi44LS45czEuNC0xLjUgMS43LTIuNGMzLjEtMTEuMSA0LjctMjIuNSA0LjctMzQgMC02OS4zLTU2LjUtMTI1LjUtMTI2LjEtMTI1LjV6Il19LFlfdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJoYWNrZXJyYW5rIixpY29uOls1MTIsNTEyLFtdLCJmNWY3IiwiTTQ3Ny45IDEyOEM0NjMuNCAxMDMgMjg1LjUgMCAyNTYuNSAwcy0yMDYuOSAxMDIuOC0yMjEuMyAxMjgtMTQuNSAyMzAuOCAwIDI1NiAxOTIuNCAxMjggMjIxLjMgMTI4IDIwNi44LTEwMi45IDIyMS4zLTEyOCAxNC41LTIzMSAwLTI1NnpNMzE2LjUgNDE0LjJjLTQgMC00MC45LTM1LjgtMzgtMzguNyAuOS0uOSA2LjMtMS41IDE3LjUtMS44IDAtMjYuMiAuNi02OC42IC45LTg2LjMgMC0yLS40LTMuNC0uNC01LjhsLTc5LjkgMGMwIDcuMS0uNSAzNi4yIDEuNCA3Mi45IC4yIDQuNS0xLjYgNi01LjcgNS45LTEwLjEgMC0yMC4zLS4xLTMwLjQtLjEtNC4xIDAtNS45LTEuNS01LjctNi4xIC45LTMzLjQgMy04NC0uMi0yMTIuN2wwLTMuMmMtOS43LS40LTE2LjQtMS0xNy4zLTEuOC0yLjktMi45IDM0LjUtMzguNyAzOC41LTM4LjdzNDEuMiAzNS44IDM4LjMgMzguN2MtLjkgLjktNy45IDEuNS0xNi44IDEuOGwwIDMuMmMtMi40IDI1LjgtMiA3OS42LTIuNiAxMDUuNGw4MC4zIDBjMC00LjYgLjQtMzQuNy0xLjItODMuNi0uMS0zLjQgMS01LjIgNC4yLTUuMiAxMS4xLS4xIDIyLjItLjEgMzMuMi0uMSAzLjUgMCA0LjYgMS43IDQuNSA1LjQtMy43IDE5MS4zLS43IDE3Ny45LS43IDIxMC4zIDguOSAuNCAxNi44IDEgMTcuNyAxLjggMi45IDIuOS0zMy42IDM4LjctMzcuNiAzOC43bDAgMHoiXX0sWl90PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNreWF0bGFzIixpY29uOls2NDAsNTEyLFtdLCJmMjE2IiwiTTY0MCAzMjkuM2MwIDY1LjktNTIuNSAxMTQuNC0xMTcuNSAxMTQuNC0xNjUuOSAwLTE5Ni42LTI0OS43LTM1OS43LTI0OS43LTE0Ni45IDAtMTQ3LjEgMjEyLjIgNS42IDIxMi4yIDQyLjUgMCA5MC45LTE3LjggMTI1LjMtNDIuNSA1LjYtNC4xIDE2LjktMTYuMyAyMi44LTE2LjNzMTAuOSA1IDEwLjkgMTAuOWMwIDcuOC0xMy4xIDE5LjEtMTguNyAyNC4xLTQwLjkgMzUuNi0xMDAuMyA2MS4yLTE1NC43IDYxLjItODMuNCAuMS0xNTQtNTktMTU0LTE0NC45UzY3LjUgMTQ5LjYgMTUyLjggMTQ5LjZjMTg1LjMgMCAyMjIuNSAyNDUuOSAzNjEuOSAyNDUuOSA5OS45IDAgOTQuOC0xMzkuNyAzLjQtMTM5LjctMTcuNSAwLTM1IDExLjYtNDYuOSAxMS42LTguNCAwLTE1LjktNy4yLTE1LjktMTUuNiAwLTExLjYgNS4zLTIzLjcgNS4zLTM2LjMgMC02Ni42LTUwLjktMTE0LjctMTE2LjktMTE0LjctNTMuMSAwLTgwIDM2LjktODguOCAzNi45LTYuMiAwLTExLjItNS0xMS4yLTExLjIgMC01LjYgNC4xLTEwLjMgNy44LTE0LjQgMjUuMy0yOC44IDY0LjctNDMuNyAxMDIuOC00My43IDc5LjQgMCAxMzkuMSA1OC40IDEzOS4xIDEzNy44IDAgNi45LS4zIDEzLjctMS4yIDIwLjYgMTEuOS0zLjEgMjQuMS00LjcgMzUuOS00LjcgNjAuNyAwIDExMS45IDQ1LjMgMTExLjkgMTA3LjJ6Il19LFhfdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJkZXNrcHJvIixpY29uOls0NDgsNTEyLFtdLCJmMzhmIiwiTTEyMiA0MDYuMmw4NCAwYzIzLjEgMCA0My45LTMuNSA2Mi42LTEwLjcgMTguNy03LjEgMzQuNy0xNy4xIDQ4LTMwLjEgMTMuMy0xMy40IDIzLjYtMjkuMiAzMC43LTQ3LjUgMy45LTkuNiA2LjgtMTkuOCA4LjYtMzAuNmw3My43IDBjLTIuNSAyMS4zLTcuNyA0MS4zLTE1LjUgNjAtMTEuMSAyNy4yLTI2LjkgNTAuOC00Ny4zIDcwLjktMjAgMTkuNi00NC4yIDM0LjgtNzIuNiA0NS40cy02MCAxNi05NC43IDE2bC0xNDkuOCAuMiAwLTE5Mi40IDcyLjMtLjIgMCAxMTguOHpNMTk5LjQgMzJjMzQuNyAwIDY2LjIgNS40IDk0LjcgMTYgMjguNSAxMC43IDUyLjkgMjYuMSA3My4zIDQ2LjIgMjAuNCAxOS42IDM2LjIgNDMuMiA0Ny4zIDcwLjkgNy41IDE4LjMgMTIuNCAzOC4xIDE0LjkgNTkuM2wtNzMuNy0uMWMtMS45LTEwLjUtNC43LTIwLjUtOC42LTI5LjktNy4xLTE4LjctMTcuMy0zNC41LTMwLjctNDcuNS0xMy4zLTEzLjQtMjkuMy0yMy42LTQ4LTMwLjgtMTguNi03LjEtMzkuNS0xMC43LTYyLjctMTAuN2wtODQgMCAwIDExOC44LTcyLjIgLjIgMC0xOTIuMyAxNDkuNy0uMXoiXX0sUV90PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InJlc29sdmluZyIsaWNvbjpbNTEyLDUxMixbXSwiZjNlNyIsIk0yODkuMiAyNzguMmM0Ni0xMy4zIDQ5LjYtMjMuNSA0NC00My40TDMyMiAxOTUuNWMtNi4xLTIwLjktMTguNC0yOC4xLTcxLjEtMTIuOGwtMTg4LjIgNTQuMSAyOC42IDk4LjYgMTk3LjktNTcuMnpNMjU2LjUgOEMxMzkuNCA4IDQxLjIgODguNyAxNS4yIDE5Ny41bDIyMS45LTYzLjljMzQuOC0xMC4yIDU0LjItMTEuNyA3OS4zLTguMiAzNi4zIDYuMSA1Mi43IDI1IDYxLjQgNTUuMmwxMC43IDM3LjhjOC4yIDI4LjEgMSA1MC42LTIzLjUgNzMuNi0xOS40IDE3LjQtMzEuMiAyNC41LTYxLjQgMzMuMmwtOTIuNiAyNi42IDIyMC40IDI3LjEgOS43IDM0LjItNDguMSAxMy4zLTI4Ni44LTM3LjMgMjMgODAuMkMxNjYgNDkxLjMgMjA5LjUgNTA0IDI1NS41IDUwNCAzOTIuNSA1MDQgNTA0IDM5Mi42IDUwNCAyNTUuNyA1MDUgMTE5LjQgMzkzLjUgOCAyNTYuNSA4ek00Ni4zIDM4OC42TDggMjU2LjhjMCA0OC41IDE0LjMgOTMuNCAzOC4zIDEzMS44eiJdfSxKX3Q9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiYmxhY2tiZXJyeSIsaWNvbjpbNTEyLDUxMixbXSwiZjM3YiIsIk0xNjYgMTE2LjljMCAyMy40LTE2LjQgNDkuMS03Mi41IDQ5LjFsLTcwLjEgMCAyMS04OC44IDY3LjggMGM0Mi4xIDAgNTMuOCAyMy4zIDUzLjggMzkuN3pNMjkyLjIgNzcuMmwtNjcuOCAwLTE4LjcgODguOCA3MC4xIDBjNTMuOCAwIDcwLjEtMjUuNyA3MC4xLTQ5LjEgLjEtMTYuNC0xMS42LTM5LjctNTMuNy0zOS43ek04OC44IDIwOC4xbC02Ny44IDAtMjEgODguOCA3MC4xIDBjNTYuMSAwIDcyLjUtMjMuNCA3Mi41LTQ5LjEgMC0xNi4zLTExLjctMzkuNy01My44LTM5Ljd6bTE4MC4xIDBsLTY3LjggMC0xOC43IDg4LjggNzAuMSAwYzUzLjggMCA3MC4xLTIzLjQgNzAuMS00OS4xIDAtMTYuMy0xMS43LTM5LjctNTMuNy0zOS43em0xODkuMy01My44bC02Ny44IDAtMTguNyA4OC44IDcwLjEgMGM1My44IDAgNzAuMS0yMy40IDcwLjEtNDkuMSAuMS0xNi4zLTExLjYtMzkuNy01My43LTM5Ljd6bS0yOCAxMzcuOWwtNjcuOCAwLTE4LjcgODguOCA3MC4xIDBjNTYuMSAwIDcwLjEtMjMuNCA3MC4xLTQ5LjEgMC0xNi4zLTExLjYtMzkuNy01My43LTM5Ljd6TTI0MC44IDM0NmwtNjcuOCAwLTE4LjcgODguOCA3MC4xIDBjNTYuMSAwIDcwLjEtMjUuNyA3MC4xLTQ5LjEgLjEtMTYuMy0xMS42LTM5LjctNTMuNy0zOS43eiJdfSxlTXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToic3RyaXBlLXMiLGljb246WzM4NCw1MTIsW10sImY0MmEiLCJNMTU1LjYgMTU0LjZjMC0yMi4zIDE4LjYtMzAuOSA0OC40LTMwLjkgNDMuNCAwIDk4LjUgMTMuMyAxNDEuOSAzNi43bDAtMTM0LjNjLTQ3LjMtMTguOS05NC41LTI2LjEtMTQxLjgtMjYuMS0xMTUuNyAwLTE5Mi44IDYwLjQtMTkyLjggMTYxLjQgMCAxNTcuOSAyMTYuOCAxMzIuMyAyMTYuOCAyMDAuNCAwIDI2LjQtMjIuOSAzNC45LTU0LjcgMzQuOS00Ny4yIDAtMTA4LjItMTkuNS0xNTYuMS00NS41bDAgMTI4LjVjNDkuMyAyMS4zIDEwMi4zIDMyLjMgMTU2IDMyLjQgMTE4LjYgMCAyMDAuMy01MSAyMDAuMy0xNTMuNiAwLTE3MC4yLTIxOC0xMzkuNy0yMTgtMjAzLjl6Il19LE04ZT17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzcXVhcmUtYmVoYW5jZSIsaWNvbjpbNDQ4LDUxMixbImJlaGFuY2Utc3F1YXJlIl0sImYxYjUiLCJNMTU1LjMgMzE4LjRjMTcuMiAwIDMxLjItNi4xIDMxLjItMjUuNCAwLTE5LjctMTEuNy0yNy40LTMwLjMtMjcuNWwtNDYgMCAwIDUyLjkgNDUuMSAwem0tNS40LTEyOS42bC0zOS42IDAgMCA0NC44IDQyLjcgMGMxNS4xIDAgMjUuOC02LjYgMjUuOC0yMi45IDAtMTcuNy0xMy43LTIxLjktMjguOS0yMS45em0xMjkuNSA3NC44bDYyLjIgMGMtMS43LTE4LjUtMTEuMy0yOS43LTMwLjUtMjkuNy0xOC4zIDAtMzAuNSAxMS40LTMxLjcgMjkuN3pNMzg0IDMyTDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjR6TTM0OS41IDE4NWwtNzcuOCAwIDAtMTguOSA3Ny44IDAgMCAxOC45ek0xOTMuNyAyNDMuN2MyMy42IDYuNyAzNSAyNy41IDM1IDUxLjYgMCAzOS0zMi43IDU1LjctNjcuNiA1NS45bC05My4xIDAgMC0xOTIgOTAuNSAwYzMyLjkgMCA2MS40IDkuMyA2MS40IDQ3LjUgMCAxOS4zLTkgMjguOC0yNi4yIDM3em0xMTguNy0zOC42YzQzLjUgMCA2Ny42IDM0LjMgNjcuNiA3NS40IDAgMS42LS4xIDMuMy0uMiA1IDAgLjgtLjEgMS41LS4xIDIuMmwtMTAwLjIgMGMwIDIyLjIgMTEuNyAzNS4zIDM0LjEgMzUuMyAxMS42IDAgMjYuNS02LjIgMzAuMi0xOC4xbDMzLjcgMGMtMTAuNCAzMS45LTMxLjkgNDYuOC02NS4xIDQ2LjgtNDMuOCAwLTcxLjEtMjkuNy03MS4xLTczIDAtNDEuOCAyOC43LTczLjYgNzEuMS03My42eiJdfSx0TXQ9TThlLGFNdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzZXJ2aWNlc3RhY2siLGljb246WzUxMiw1MTIsW10sImYzZWMiLCJNOTYgMjE2YzgxLjcgMTAuMiAyNzMuNyAxMDIuMyAzMDQgMjMyTDggNDQ4Yzk5LjUtOC4xIDE4NC41LTEzNyA4OC0yMzJ6TTEyOCA2NGMzMi4zIDM1LjYgNDcuNyA4My45IDQ2LjQgMTMzLjYgODIuOSAzMy43IDIwNy4zIDEyMy43IDIzMy42IDI1MC40bDk2IDBDNDYzLjMgMjMxLjkgMjMwLjggNzkuNSAxMjggNjR6Il19LHNNdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJyb2NrZXRjaGF0IixpY29uOls1NzYsNTEyLFtdLCJmM2U4IiwiTTI4NC41IDIyNC44Yy02LjcgMC0xMy4zIDIuMS0xOC45IDUuOHMtOS45IDkuMS0xMi41IDE1LjQtMy4yIDEzLjEtMS45IDE5LjcgNC42IDEyLjcgOS40IDE3LjQgMTAuOSA4IDE3LjUgOS4zIDEzLjUgLjYgMTkuNy0yIDExLjUtNyAxNS4zLTEyLjYgNS43LTEyLjIgNS43LTE4LjljMC05LjEtMy43LTE3LjgtMTAuMS0yNC4ycy0xNS4xLTEwLTI0LjItOS45em0tMTEwLjQgMGMtNi43IDAtMTMuMyAyLjEtMTguOSA1LjhzLTkuOSA5LjEtMTIuNSAxNS40LTMuMiAxMy4xLTEuOSAxOS43IDQuNiAxMi43IDkuNCAxNy40IDEwLjkgOCAxNy41IDkuMyAxMy41IC42IDE5LjctMiAxMS41LTcgMTUuMy0xMi42IDUuNy0xMi4yIDUuNy0xOC45YzAtOS4xLTMuNy0xNy44LTEwLjEtMjQuMnMtMTUuMS0xMC0yNC4yLTEwbDAgMHptMjIwLjkgMGEzNC4xIDM0LjEgMCAxIDAgLjQgNjguMiAzNC4xIDM0LjEgMCAxIDAgLS40LTY4LjJ6bTE1My44LTU1LjNjLTE1LjUtMjQuMi0zNy4zLTQ1LjYtNjQuNy02My42LTUyLjktMzQuOC0xMjIuNC01NC0xOTUuNy01NC0yNC4yIDAtNDguMyAyLjEtNzIgNi40LTE0LjktMTQuMy0zMS41LTI2LjYtNDkuNS0zNi42LTY2LjgtMzMuMy0xMjUuNi0yMC45LTE1NS4zLTEwLjItMi4zIC44LTQuMyAyLjEtNS45IDMuOXMtMi43IDMuOS0zLjMgNi4yLS41IDQuNyAuMSA3LjEgMS44IDQuNCAzLjUgNi4xQzI3IDU2LjUgNjEuNiA5OS4zIDUzLjEgMTM4LjMgMjAgMTcyLjIgMiAyMTMgMiAyNTUuNiAyIDI5OSAyMCAzMzkuOCA1My4xIDM3My43IDYxLjYgNDEyLjcgMjcgNDU1LjYgNiA0NzcuMiA0LjMgNDc5IDMuMiA0ODEuMSAyLjUgNDgzLjRzLS43IDQuNy0uMSA3IDEuNyA0LjUgMy4zIDYuMiAzLjYgMy4xIDUuOSAzLjljMjkuNyAxMC43IDg4LjUgMjMuMSAxNTUuMy0xMC4yIDE4LTEwIDM0LjctMjIuMyA0OS41LTM2LjYgMjMuOCA0LjMgNDcuOSA2LjQgNzIgNi40IDczLjMgMCAxNDIuOC0xOS4yIDE5NS43LTU0IDI3LjQtMTggNDkuMS0zOS40IDY0LjctNjMuNiAxNy4zLTI2LjkgMjYuMS01NS45IDI2LjEtODYuMSAwLTMxLTguOC02MC0yNi4xLTg2LjlsMCAwek0yODUuNCA0MDkuOWMtMzAuMiAuMS02MC4zLTMuOC04OS40LTExLjVsLTIwLjEgMTkuNGMtMTEuMiAxMC43LTIzLjYgMjAtMzcuMSAyNy42LTE2LjQgOC4yLTM0LjIgMTMuMy01Mi41IDE0LjkgMS0xLjggMS45LTMuNiAyLjgtNS40IDIwLjItMzcuMSAyNS42LTcwLjUgMTYuMy0xMDAuMS0zMy0yNi01Mi44LTU5LjItNTIuOC05NS40IDAtODMuMSAxMDQuMy0xNTAuNSAyMzIuOC0xNTAuNXMyMzIuOSA2Ny40IDIzMi45IDE1MC41YzAgODMuMS0xMDQuMyAxNTAuNS0yMzIuOSAxNTAuNXoiXX0saU10PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InJlYmVsIixpY29uOls1MTIsNTEyLFtdLCJmMWQwIiwiTTI1Ni45IDUwNGMtMTM5LjMgMC0yNDcuNS0xMTYuMi0yNDMuMy0yNTQuMSAyLjgtNzkuMiA0My4yLTE1Mi4yIDExNi41LTIwMC40IC4zIDAgMS45LS42IDEuMSAuOC01LjggNS41LTExMS4zIDEyOS44LTE0LjEgMjI2LjQgNDkuOCA0OS41IDkwIDIuNSA5MCAyLjUgMzguNS01MC4xLS42LTEyNS45LS42LTEyNS45LTEwLTI0LjktNDUuNy00MC4xLTQ1LjctNDAuMWwyOC44LTMxLjhjMjQuNCAxMC41IDQzLjIgMzguNyA0My4yIDM4LjcgLjgtMjkuNi0yMS45LTYxLjQtMjEuOS02MS40TDI1NS41IDggMjk5LjggNTguMWMtMjAuNSAyOC44LTIxLjkgNjIuNi0yMS45IDYyLjYgMTMuOC0yMyA0My41LTM5LjMgNDMuNS0zOS4zbDI4LjUgMzEuOGMtMjcuNCA4LjktNDUuNCAzOS45LTQ1LjQgMzkuOS0xNS44IDI4LjUtMjcuMSA4OS40IC42IDEyNy4zIDMyLjQgNDQuNiA4Ny43LTIuOCA4Ny43LTIuOCAxMDIuNy05MS45LTEwLjUtMjI1LTEwLjUtMjI1LTYuMS01LjUgLjgtMi44IC44LTIuOCA1MC4xIDM2LjUgMTE0LjYgODQuNCAxMTYuMiAyMDQuOCAyIDE0NS42LTk5LjkgMjQ5LjQtMjQyLjQgMjQ5LjR6Il19LHJNdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzcXVhcmUtd2ViLWF3ZXNvbWUiLGljb246WzQ0OCw1MTIsW10sImU2ODMiLCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMnpNMjM1IDE3Ny42bDUzIDQ2LjQgNTIuMi0xMC40Yy0yLjYtMy45LTQuMi04LjUtNC4yLTEzLjYgMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGMwIDEzLTEwLjMgMjMuNi0yMy4yIDI0TDMwNC41IDM0OS4xYy01LjIgMTEuNS0xNi42IDE4LjktMjkuMiAxOC45bC0xMDIuNiAwYy0xMi42IDAtMjQtNy40LTI5LjItMTguOUw4Ny4yIDIyNGMtMTIuOS0uNC0yMy4yLTExLTIzLjItMjQgMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGMwIDUtMS41IDkuNy00LjIgMTMuNkwxNjAgMjI0IDIxMy4xIDE3Ny42Yy04LjktNC4xLTE1LTEzLjEtMTUtMjMuNiAwLTE0LjQgMTEuNi0yNiAyNi0yNnMyNiAxMS42IDI2IDI2YzAgMTAuNS02LjIgMTkuNS0xNS4xIDIzLjZ6Il19LG9NdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJsaW5rdHJlZSIsaWNvbjpbNDQ4LDUxMixbXSwiZTdkOCIsIk0xNiAxNzMuNGwxMjUuOCAwLTg5LjQtODUuNCA0OS41LTUxIDg1LjIgODcuOCAwLTEyNC44IDczLjkgMCAwIDEyNC44IDg1LjItODcuNiA0OS40IDUwLjgtODkuNCA4NS4yIDEyNS43IDAgMCA3MC41LTEyNi40IDAgOTAgODcuNi00OS4zIDQ5LjgtMTIyLjItMTIzLTEyMi4yIDEyMy00OS41LTQ5LjYgOTAtODcuNi0xMjYuNCAwIDAtNzAuNXpNMTg2LjkgMzQ0LjhsNzMuOSAwIDAgMTY3LjItNzMuOSAwIDAtMTY3LjJ6Il19LG5NdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzaW1wbHlidWlsdCIsaWNvbjpbNTEyLDUxMixbXSwiZjIxNSIsIk00ODEuNiA2NGwtMTA2IDBDMzYxLjEgNjQgMzQ5IDc1LjggMzQ5IDkwLjNsMCAzOS42LTE4NS4zIDAgMC0zOS42YzAtMTQuNS0xMi0yNi4zLTI2LjYtMjYuM2wtMTA2IDBDMTYuNSA2NCA0LjcgNzUuOCA0LjcgOTAuM2wwIDMzMS40YzAgMTQuNSAxMS44IDI2LjMgMjYuNiAyNi4zbDQ1MC40IDBjMTQuOCAwIDI2LjYtMTEuOCAyNi42LTI2LjNsMC0zMzEuNGMtLjItMTQuNS0xMi0yNi4zLTI2LjctMjYuM3pNMTUwLjUgMjIyLjdhNjYuNSA2Ni41IDAgMSAxIC0uMyAxMzMuMSA2Ni41IDY2LjUgMCAxIDEgLjMtMTMzLjF6bTIxMS45IC4xYTY2LjUgNjYuNSAwIDEgMSAuMyAxMzIuOSA2Ni41IDY2LjUgMCAxIDEgLS4zLTEzMi45eiJdfSxsTXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToic3R1YmJlciIsaWNvbjpbNDQ4LDUxMixbXSwiZTVjNyIsIk0xMzYuNSAyOTQuMmw1OC44IDIyLjljOS4xLTM2LjggMjUuNC02MS4xIDU1LTYxLjEgNDkuNCAwIDcxLjQgNjMuNiAxNDIuNCA2My42IDE1LjYgMCAzNS45LTIuOCA1NS4zLTEzLjNsMCA2MS43YzAgNjEuOC01MC40IDExMi0xMTIuMyAxMTJMMCA0ODAgNDEuOCA0MjQgMCAzNjggNDEuNyAzMTIgMCAyNTYuMSA0MS44IDIwMC4xIDAgMTQ0LjEgNDEuOCA4OCAwIDMyIDMzNS43IDMyQzM5Ny42IDMyIDQ0OCA4Mi4zIDQ0OCAxNDQuMWwwIDUxLjNjLTkuMiAzNi4zLTI1LjkgNjAuNi01NSA2MC42LTQ5LjYgMC03MS42LTYzLjUtMTQyLjQtNjMuNS0zNS45IDAtOTUuMiAxNC42LTExNC4xIDEwMS42bDAgLjF6Il19LGNNdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJhcHBlciIsaWNvbjpbNjQwLDUxMixbXSwiZjM3MSIsIk00Mi4xIDIzOS4xYzIyLjIgMCAyOSAyLjggMzMuNSAxNC42bC44IDAgMC0yMi45YzAtMTEuMy00LjgtMTUuNC0xNy45LTE1LjQtMTEuMyAwLTE0LjQgMi41LTE1LjEgMTIuOGwtMzguNiAwYy4zLTEzLjkgMS41LTE5LjEgNS44LTI0LjQgNy4zLTguOCAxOC45LTExLjggNDYuMS0xMS44IDMzIDAgNDcuMSA1IDUzLjkgMTguOSAyIDQuMyA0IDE1LjYgNCAyMy43bDAgNzYuMy0zOC4zIDAgMS4zLTE5LjEtMSAwYy01LjMgMTUuNi0xMy42IDIwLjQtMzUuNSAyMC40LTMwLjMgMC00MS4xLTEwLjEtNDEuMS0zNy4zIDAtMjUuMiAxMi4zLTM1LjggNDIuMS0zNS44em0xNy4xIDQ4LjFjMTMuMSAwIDE2LjktMyAxNi45LTEzLjQgMC05LjEtNC4zLTExLjYtMTkuNi0xMS42LTEzLjEgMC0xNy45IDMtMTcuOSAxMi4xLS4xIDEwLjQgMy43IDEyLjkgMjAuNiAxMi45ek0xMzcgMTkyLjNsMzguMyAwLTEuNSAyMC42IC44IDBjOS4xLTE3LjEgMTUuOS0yMC45IDM3LjUtMjAuOSAxNC40IDAgMjQuNyAzIDMxLjUgOS4xIDkuOCA4LjYgMTIuOCAyMC40IDEyLjggNDguMSAwIDMwLTMgNDMuMS0xMi4xIDUyLjktNi44IDcuMy0xNi40IDEwLjEtMzMuMiAxMC4xLTIwLjQgMC0yOS4yLTUuNS0zMy44LTIxLjJsLS44IDAgMCA3MC4zLTM5LjUgMCAwLTE2OXpNMjE3LjkgMjUzYzAtMjcuNS0zLjMtMzIuNS0yMC43LTMyLjUtMTYuOSAwLTIwLjcgNS0yMC43IDI4LjcgMCAyOCAzLjUgMzMuNSAyMS4yIDMzLjUgMTYuNCAwIDIwLjItNS42IDIwLjItMjkuN3ptNTcuOS02MC43bDM4LjMgMC0xLjUgMjAuNiAuOCAwYzkuMS0xNy4xIDE1LjktMjAuOSAzNy41LTIwLjkgMTQuNCAwIDI0LjcgMyAzMS41IDkuMSA5LjggOC42IDEyLjggMjAuNCAxMi44IDQ4LjEgMCAzMC0zIDQzLjEtMTIuMSA1Mi45LTYuOCA3LjMtMTYuNCAxMC4xLTMzLjMgMTAuMS0yMC40IDAtMjkuMi01LjUtMzMuOC0yMS4ybC0uOCAwIDAgNzAuMy0zOS41IDAgMC0xNjkgLjEgMHpNMzU2LjcgMjUzYzAtMjcuNS0zLjMtMzIuNS0yMC43LTMyLjUtMTYuOSAwLTIwLjcgNS0yMC43IDI4LjcgMCAyOCAzLjUgMzMuNSAyMS4yIDMzLjUgMTYuNCAwIDIwLjItNS42IDIwLjItMjkuN3ptNTMuOC0zLjhjMC0yNS40IDMuMy0zNy44IDEyLjMtNDUuOCA4LjgtOC4xIDIyLjItMTEuMyA0NS4xLTExLjMgNDIuOCAwIDU1LjcgMTIuOCA1NS43IDU1LjdsMCAxMS4xLTc1LjMgMGMtLjMgMi0uMyA0LS4zIDQuOCAwIDE2LjkgNC41IDIxLjkgMjAuMSAyMS45IDEzLjkgMCAxNy45LTMgMTcuOS0xMy45bDM3LjUgMCAwIDIuM2MwIDkuOC0yLjUgMTguOS02LjggMjQuNy03LjMgOS44LTE5LjYgMTMuNi00NC4zIDEzLjYtMjcuNSAwLTQxLjYtMy4zLTUwLjYtMTIuMy04LjUtOC41LTExLjMtMjEuMy0xMS4zLTUwLjh6bTc2LjQtMTEuNmMtLjMtMS44LS4zLTMuMy0uMy0zLjggMC0xMi4zLTMuMy0xNC42LTE5LjYtMTQuNi0xNC40IDAtMTcuMSAzLTE4LjEgMTUuMWwtLjMgMy4zIDM4LjMgMHptNTUuNi00NS4zbDM4LjMgMC0xLjggMTkuOSAuNyAwYzYuOC0xNC45IDE0LjQtMjAuMiAyOS43LTIwLjIgMTAuOCAwIDE5LjEgMy4zIDIzLjQgOS4zIDUuMyA3LjMgNi44IDE0LjQgNi44IDM0IDAgMS41IDAgNSAuMiA5LjNsLTM1IDBjLjMtMS44IC4zLTMuMyAuMy00IDAtMTUuNC0yLTE5LjQtMTAuMy0xOS40LTYuMyAwLTEwLjggMy4zLTEzLjEgOS4zLTEgMy0xIDQuMy0xIDEyLjNsMCA2OC0zOC4zIDAgMC0xMTguNSAuMSAweiJdfSxkTXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZ29vZ2xlLXNjaG9sYXIiLGljb246WzUxMiw1MTIsW10sImU2M2IiLCJNMzkwLjkgMjk4LjVzMCAuMSAuMSAuMWM5LjIgMTkuNCAxNC40IDQxLjEgMTQuNCA2NC0uMSA4Mi41LTY2LjkgMTQ5LjQtMTQ5LjQgMTQ5LjRTMTA2LjcgNDQ1LjEgMTA2LjcgMzYyLjdjMC0yMi45IDUuMi00NC42IDE0LjQtNjQgMS43LTMuNiAzLjYtNy4yIDUuNi0xMC43IDQuNC03LjYgOS40LTE0LjcgMTUtMjEuMyAyNy40LTMyLjYgNjguNS01My4zIDExNC40LTUzLjMgMzMuNiAwIDY0LjYgMTEuMSA4OS42IDI5LjkgOS4xIDYuOSAxNy40IDE0LjcgMjQuOCAyMy41IDUuNiA2LjYgMTAuNiAxMy44IDE1IDIxLjMgMiAzLjQgMy44IDcgNS41IDEwLjVsLS4xLS4xem0yNi40LTE4LjhjLTMwLjEtNTguNC05MS05OC40LTE2MS4zLTk4LjRzLTEzMS4yIDQwLTE2MS4zIDk4LjRsLTk0LjctNzcgMjU2LTIwMi43IDI1NiAyMDIuNy05NC43IDc3LjEgMC0uMXoiXX0sdU10PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6Inlhcm4iLGljb246WzUxMiw1MTIsW10sImY3ZTMiLCJNNDAxLjkgMzQ1LjJjLTM5IDkuMy00OC40IDMyLjEtMTA0IDQ3LjQgMCAwLTIuNyA0LTEwLjQgNS44LTEzLjQgMy4zLTYzLjkgNi02OC41IDYuMS0xMi40IC4xLTE5LjktMy4yLTIyLTguMi02LjQtMTUuMyA5LjItMjIgOS4yLTIyLTguMS01LTktOS45LTkuOC04LjEtMi40IDUuOC0zLjYgMjAuMS0xMC4xIDI2LjUtOC44IDguOS0yNS41IDUuOS0zNS4zIC44LTEwLjgtNS43IC44LTE5LjIgLjgtMTkuMnMtNS44IDMuNC0xMC41LTMuNmMtNi05LjMtMTcuMS0zNy4zIDExLjUtNjItMS4zLTEwLjEtNC42LTUzLjcgNDAuNi04NS42IDAgMC0yMC42LTIyLjgtMTIuOS00My4zIDUtMTMuNCA3LTEzLjMgOC42LTEzLjkgNS43LTIuMiAxMS4zLTQuNiAxNS40LTkuMSAyMC42LTIyLjIgNDYuOC0xOCA0Ni44LTE4czEyLjQtMzcuOCAyMy45LTMwLjRjMy41IDIuMyAxNi4zIDMwLjYgMTYuMyAzMC42czEzLjYtNy45IDE1LjEtNWM4LjIgMTYgOS4yIDQ2LjUgNS42IDY1LjEtNi4xIDMwLjYtMjEuNCA0Ny4xLTI3LjYgNTcuNS0xLjQgMi40IDE2LjUgMTAgMjcuOCA0MS4zIDEwLjQgMjguNiAxLjEgNTIuNyAyLjggNTUuMyAuOCAxLjQgMTMuNyAuOCAzNi40LTEzLjIgMTIuOC03LjkgMjguMS0xNi45IDQ1LjQtMTcgMTYuNy0uNSAxNy42IDE5LjIgNC45IDIyLjJ6TTggMjU2YTI0OCAyNDggMCAxIDEgNDk2IDAgMjQ4IDI0OCAwIDEgMSAtNDk2IDB6bTQxNi43IDc1LjJjLTEuNy0xMy42LTEzLjItMjMtMjgtMjIuOC0yMiAuMy00MC41IDExLjctNTIuOCAxOS4yLTQuOCAzLTguOSA1LjItMTIuNCA2LjggMy4xLTQ0LjUtMjIuNS03My4xLTI4LjctNzkuNCA3LjgtMTEuMyAxOC40LTI3LjggMjMuNC01My4yIDQuMy0yMS43IDMtNTUuNS02LjktNzQuNS0xLjYtMy4xLTcuNC0xMS4yLTIxLTcuNC05LjctMjAtMTMtMjIuMS0xNS42LTIzLjgtMS4xLS43LTIzLjYtMTYuNC00MS40IDI4LTEyLjIgLjktMzEuMyA1LjMtNDcuNSAyMi44LTIgMi4yLTUuOSAzLjgtMTAuMSA1LjRsLjEgMGMtOC40IDMtMTIuMyA5LjktMTYuOSAyMi4zLTYuNSAxNy40IC4yIDM0LjYgNi44IDQ1LjctMTcuOCAxNS45LTM3IDM5LjgtMzUuNyA4Mi41LTM0IDM2LTExLjggNzMtNS42IDc5LjYtMS42IDExLjEgMy43IDE5LjQgMTIgMjMuOCAxMi42IDYuNyAzMC4zIDkuNiA0My45IDIuOCA0LjkgNS4yIDEzLjggMTAuMSAzMCAxMC4xIDYuOCAwIDU4LTIuOSA3Mi42LTYuNSA2LjgtMS42IDExLjUtNC41IDE0LjYtNy4xIDkuOC0zLjEgMzYuOC0xMi4zIDYyLjItMjguNyAxOC0xMS43IDI0LjItMTQuMiAzNy42LTE3LjQgMTIuOS0zLjIgMjEtMTUuMSAxOS40LTI4LjJ6Il19LHBNdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzdGFjay1vdmVyZmxvdyIsaWNvbjpbMzg0LDUxMixbXSwiZjE2YyIsIk0yOTEgMzExbC0xOTUuNy00MS4zLTguMiAzOS4zIDE5NS43IDQxIDguMi0zOXptNTEtODdMMTg4LjUgOTUuNyAxNjMgMTI2LjUgMzE2LjUgMjU0LjggMzQyIDIyNHptLTMxLjIgMzkuN0wxMjkuNSAxNzkgMTEyLjggMjE1LjUgMjk0IDMwMCAzMTAuOCAyNjMuN3pNMjYyLjMgMzJsLTMyIDI0IDExOS4zIDE2MC4zIDMyLTI0LTExOS4zLTE2MC4zem0yMC41IDMyOGwtMjAwIDAgMCAzOS43IDIwMCAwIDAtMzkuN3ptMzkuNyA4MGwtMjc5LjUgMCAwLTEyMC00MCAwIDAgMTYwIDM1OS41IDAgMC0xNjAtNDAgMCAwIDEyMHoiXX0saE10PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImJsdWV0b290aCIsaWNvbjpbMzg0LDUxMixbXSwiZjI5MyIsIk0yNjAuNiAxNzEuMWwtNDIuOSA0Mi45LS4zLTg2IDQzLjIgNDMuMXpNMjE3LjQgMzkwLjlsNDMuMS00My4xLTQyLjktNDIuOS0uMiA4NnpNMzg0IDI1OS40QzM4NCA0NjUgMzEyLjEgNTEyIDE5OC45IDUxMlMwIDQ2NSAwIDI1OS40IDgzLjQgMCAxOTYuNiAwIDM4NCA1My45IDM4NCAyNTkuNHptLTE1OC41IDBsNzkuNC04OC42LTEyNS4xLTEzNC4zIDAgMTc2LjktNzMuOC03My44LTI3IDI2LjkgOTIuNyA5My05Mi43IDkzIDI2LjkgMjYuOSA3My44LTczLjggMi4zIDE3MCAxMjcuNC0xMjcuNS04My45LTg4Ljd6Il19LGZNdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJjcmVhdGl2ZS1jb21tb25zLW5jLWpwIixpY29uOls1MTIsNTEyLFtdLCJmNGVhIiwiTTI1NS43IDhDMTExLjYgOCA4IDEyNC44IDggMjU2IDggMzkyLjQgMTE5LjggNTA0IDI1NS43IDUwNCAzODUuOSA1MDQgNTA0IDQwMy4yIDUwNCAyNTYgNTA0IDExNy4yIDM5Ni41IDggMjU1LjcgOHptLjYgNDUwLjdjLTExMiAwLTIwMy42LTkyLjUtMjAzLjYtMjAyLjcgMC0yMS4xIDMtNDEuMiA5LTYwLjNsMTI3IDU2LjUtMjcuOSAwIDAgMzguNiA1OC4xIDAgNS43IDExLjggMCAxOC43LTYzLjggMCAwIDM4LjcgNjMuOCAwIDAgNTYgNjEuNyAwIDAtNTYgNjQuMiAwIDAtMzUuNyA4MSAzNi4xYy0xLjUgMi4yLTU3LjEgOTguMy0xNzUuMiA5OC4zem04Ny42LTEzNy4zbC01Ny42IDAgMC0xOC43IDIuOS01LjYgNTQuNyAyNC4zem02LjUtNTEuNGwwLTE3LjgtMzguNiAwIDYzLTExNi02NS44IDAtNDMuNCA5Ni0yMy0xMC4yLTM5LjYtODUuNy02NS44IDAgMjcuMyA1MS04MS45LTM2LjVjMjcuOC00NC4xIDgyLjYtOTguMSAxNzMuNy05OC4xIDExMi44IDAgMjAzIDkwIDIwMyAyMDMuNCAwIDIxLTIuNyA0MC42LTcuOSA1OUwzNTAuNCAyNzB6Il19LG1NdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJyZWRkaXQiLGljb246WzUxMiw1MTIsW10sImYxYTEiLCJNMCAyNTZDMCAxMTQuNiAxMTQuNiAwIDI1NiAwUzUxMiAxMTQuNiA1MTIgMjU2IDM5Ny40IDUxMiAyNTYgNTEyTDM3LjEgNTEyYy0xMy43IDAtMjAuNS0xNi41LTEwLjktMjYuMkw3NSA0MzdDMjguNyAzOTAuNyAwIDMyNi43IDAgMjU2ek0zNDkuNiAxNTMuNmMyMy42IDAgNDIuNy0xOS4xIDQyLjctNDIuN3MtMTkuMS00Mi43LTQyLjctNDIuN2MtMjAuNiAwLTM3LjggMTQuNi00MS44IDM0LTM0LjUgMy43LTYxLjQgMzMtNjEuNCA2OC40bDAgLjJjLTM3LjUgMS42LTcxLjggMTIuMy05OSAyOS4xLTEwLjEtNy44LTIyLjgtMTIuNS0zNi41LTEyLjUtMzMgMC01OS44IDI2LjgtNTkuOCA1OS44IDAgMjQgMTQuMSA0NC42IDM0LjQgNTQuMSAyIDY5LjQgNzcuNiAxMjUuMiAxNzAuNiAxMjUuMnMxNjguNy01NS45IDE3MC42LTEyNS4zYzIwLjItOS42IDM0LjEtMzAuMiAzNC4xLTU0IDAtMzMtMjYuOC01OS44LTU5LjgtNTkuOC0xMy43IDAtMjYuMyA0LjYtMzYuNCAxMi40LTI3LjQtMTctNjIuMS0yNy43LTEwMC0yOS4xbDAtLjJjMC0yNS40IDE4LjktNDYuNSA0My40LTQ5LjkgNC40IDE4LjggMjEuMyAzMi44IDQxLjUgMzIuOGwuMSAuMnpNMTc3LjEgMjQ2LjljMTYuNyAwIDI5LjUgMTcuNiAyOC41IDM5LjNzLTEzLjUgMjkuNi0zMC4zIDI5LjYtMzEuNC04LjgtMzAuNC0zMC41IDE1LjQtMzguMyAzMi4xLTM4LjNsLjEtLjF6bTE5MC4xIDM4LjNjMSAyMS43LTEzLjcgMzAuNS0zMC40IDMwLjVzLTI5LjMtNy45LTMwLjMtMjkuNiAxMS44LTM5LjMgMjguNS0zOS4zIDMxLjIgMTYuNiAzMi4xIDM4LjNsLjEgLjF6bS00OC4xIDU2LjdjLTEwLjMgMjQuNi0zNC42IDQxLjktNjMgNDEuOXMtNTIuNy0xNy4zLTYzLTQxLjljLTEuMi0yLjkgLjgtNi4yIDMuOS02LjUgMTguNC0xLjkgMzguMy0yLjkgNTkuMS0yLjlzNDAuNyAxIDU5LjEgMi45YzMuMSAuMyA1LjEgMy42IDMuOSA2LjV6Il19LGdNdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJjb25uZWN0ZGV2ZWxvcCIsaWNvbjpbNTc2LDUxMixbXSwiZjIwZSIsIk01NTAuOCAyNDFsLTUwLjEtODYuOGMxLjEtMi4xIDEuOS00LjYgMS45LTcuMiAwLTgtNi43LTE0LjctMTQuNy0xNUw0MzIuNCAzNi4xYy41LTEuNiAxLjEtMy4yIDEuMS00LjggMC04LjYtNy0xNS4zLTE1LjMtMTUuMy00LjggMC04LjggMi4xLTExLjggNS42bC0xMDYuNiAwYy0yLjctMy41LTYuNy01LjYtMTEuNS01LjZzLTguOCAyLjEtMTEuNSA1LjZsLTEwNi4xIDBjLTIuOS0zLjUtNy01LjYtMTEuOC01LjYtOC4zIDAtMTUuMyA2LjctMTUuMyAxNS4zIDAgMS42IC41IDMuNSAxLjEgNC44bC01NiA5Ny4yYy01LjQgMi40LTkuMSA3LjUtOS4xIDEzLjcgMCAuNSAuMyAxLjEgLjMgMS42TDI2LjYgMjQwLjdjLTcuMiAxLjMtMTIuNiA3LjUtMTIuNiAxNSAwIDcuMiA1LjEgMTMuNCAxMi4xIDE1bDU1LjIgOTUuNGMtLjUgMS42LS44IDIuOS0uOCA0LjggMCA3LjIgNS4xIDEzLjQgMTIuMSAxNC43bDUxLjcgODkuN2MtLjUgMS42LTEuMSAzLjUtMS4xIDUuNCAwIDguNiA3IDE1LjMgMTUuMyAxNS4zIDQuOCAwIDguOC0yLjEgMTEuNS01LjRsMTA2LjkgMGMyLjcgMy4yIDcgNS40IDExLjUgNS40czguOC0yLjEgMTEuNS01LjRsMTA3LjEgMGMyLjcgMi45IDYuNyA0LjggMTEgNC44IDguNiAwIDE1LjMtNyAxNS4zLTE1LjMgMC0xLjYtLjMtMi45LS44LTQuM2w1MS43LTkwLjNjNy0xLjMgMTIuMS03LjUgMTIuMS0xNC43IDAtMS42LS4zLTMuMi0uOC00LjhsNTQuOS05NS40YzctMS4zIDEyLjMtNy41IDEyLjMtMTUgMC03LjItNS4xLTEzLjQtMTEuOC0xNC43em0tMzk3IDIwOS43bC00My43LTc1LjggNDMuNyAwIDAgNzUuOHptMC04My44bC00My43IDBjLS4zLTEuMS0uOC0yLjEtMS4zLTMuMmw0NS00Ny40IDAgNTAuNnptMC02Mi40bC01MC40IDUzLjNjLTEuMy0uNS0yLjctMS4zLTQtMS42TDQzLjcgMjU5LjhjLjUtMS4zIC41LTIuNyAuNS00czAtMi40LS4zLTMuNWw1Mi05MGMyLjctLjMgNS40LTEuMSA3LjgtMi43bDUwLjEgNTIgMCA5Mi45em0wLTEwMi4zTDEwOCAxNTQuOGMxLjMtMi4xIDIuMS00LjggMi4xLTcuOCAwLS4zLS4zLS44LS4zLTEuMWw0My45LTE1LjggMCA3Mi4xem0wLTgwLjZsLTQzLjcgMTUuOCA0My43LTc1LjUgMCA1OS43em0zMjYuNSAzOS4xbC44IDEuMy0zNS40IDE2Ny4xLTYzLjgtNjcuMiA5OC0xMDEuNSAuMyAuM3pNMjkyLjEgMzU1LjFsMTEuNSAxMS44LTIyLjggMCAxMS4zLTExLjh6bS0uMy0xMS4zbC04My4zLTg1LjQgNzkuNi04NC40IDgzIDg3LjYtNzkuMyA4Mi4yem01LjQgNS45bDc5LjMtODIuMiA2Ny41IDcxLjMtNS45IDI4LjEtMTI0IDAtMTYuOS0xNy4xek00MTAuNyA0NC40YzEuMSAuNSAyLjEgMS4xIDMuNSAxLjNsNTcuOSAxMDAuNyAwIC41YzAgMi45IC44IDUuNiAyLjEgNy44bC05Ny41IDEwMS4yLTgzLTg3LjYgMTE3LjEtMTI0em0tOS4xLTIuMWwtMTEzLjYgMTIwLjMtNTcuMS02MC4zIDE2Ni4zLTYwIDQuMyAwem0tMTIzLjUgMGMyLjcgMi43IDYuMiA0LjMgMTAuMiA0LjNzNy41LTEuNiAxMC4yLTQuM2w3NSAwLTE0OC40IDUzLjYtNTAuOS01My42IDEwMy45IDB6TTE2MS45IDQ3LjlsMS4xLTIuMWMuOS0uMiAxLjgtLjUgMi43LS44bDUxLjIgNTMuOC01NC45IDE5LjggMC03MC43em0wIDc5LjNsNjAuOC0yMiA1OS43IDYzLjItNzkuNiA4NC4xLTQxLTQyLjEgMC04My4zem0wIDkyLjdsMzYuNCAzNy44LTM2LjQgMzguMyAwLTc2LjF6bTAgODcuOWw0Mi4xLTQ0LjUgODIuOCA4Ni0xNy4xIDE3LjctMTA3LjcgMCAwLTU5LjJ6bTcgMTYyLjFjLTEuNi0xLjYtMy41LTIuNy01LjktMy41bC0xLjEtMS42IDAtODkuNyA5OS45IDAtOTEuNiA5NC44LTEuMyAwem0xMjkuOSAwYy0yLjctMi40LTYuNC00LjMtMTAuNC00LjNzLTcuOCAxLjktMTAuNCA0LjNsLTk2LjQgMCA5MS42LTk0LjggMzguMyAwIDkxLjYgOTQuOC0xMDQuMiAwem0xMjAtMTEuOGwtNC4zIDcuNWMtMS4zIC4zLTIuNCAuOC0zLjUgMS4zbC04OS4yLTkxLjkgMTE0LjQgMC0xNy40IDgzem0xMi45LTIyLjJsMTIuOS02MC44IDIyIDAtMzQuOCA2MC44em0zNC44LTY4LjhsLTIwLjQgMCA0LjYtMjEuMiAxNy4xIDE4LjJjLS41IC44LTEuMSAxLjktMS4zIDIuOXptNjYuMi0xMDcuNGwtNTUuNCA5Ni43Yy0xLjMgLjUtMi43IDEuMS00IDEuOWwtMjAuNi0yMiAzNC42LTE2My45IDQ1LjggNzkuM2MtLjMgMS4zLS44IDIuNy0uOCA0LjMgMCAxLjMgLjMgMi40IC41IDMuN3oiXX0sYk10PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InJlc2VhcmNoZ2F0ZSIsaWNvbjpbNDQ4LDUxMixbXSwiZjRmOCIsIk0wIDMybDAgNDQ4IDQ0OCAwIDAtNDQ4LTQ0OCAwek0yNjIuMiAzNjYuNGMtNi42IDMtMzMuMiA2LTUwLTE0LjItOS4yLTEwLjYtMjUuMy0zMy4zLTQyLjItNjMuNi04LjkgMC0xNC43IDAtMjEuNC0uNmwwIDQ2LjRjMCAyMy41IDYgMjEuMiAyNS44IDIzLjlsMCA4LjFjLTYuOS0uMy0yMy4xLS44LTM1LjYtLjgtMTMuMSAwLTI2LjEgLjYtMzMuNiAuOGwwLTguMWMxNS41LTIuOSAyMi0xLjMgMjItMjMuOWwwLTEwOS40YzAtMjIuNi02LjQtMjEtMjItMjMuOWwwLTguMWMyNS44IDEgNTMuMS0uNiA3MC45LS42IDMxLjcgMCA1NS45IDE0LjQgNTUuOSA0NS42IDAgMjEuMS0xNi43IDQyLjItMzkuMiA0Ny41IDEzLjYgMjQuMiAzMCA0NS42IDQyLjIgNTguOSA3LjIgNy44IDE3LjIgMTQuNyAyNy4yIDE0LjdsMCA3LjN6bTIyLjktMTM1Yy0yMy4zIDAtMzIuMi0xNS43LTMyLjItMzIuMmwwLTMyLjJjMC0xMi4yIDguOC0zMC40IDM0LTMwLjRzMzAuNCAxNy45IDMwLjQgMTcuOWwtMTAuNyA3LjJzLTUuNS0xMi41LTE5LjctMTIuNWMtNy45IDAtMTkuNyA3LjMtMTkuNyAxOS43bDAgMjYuOGMwIDEzLjQgNi42IDIzLjMgMTcuOSAyMy4zIDE0LjEgMCAyMS41LTEwLjkgMjEuNS0yNi44bC0xNy45IDAgMC0xMC43IDMwLjQgMGMwIDIwLjUgNC43IDQ5LjktMzQgNDkuOXpNMTY4LjYgMjc2LjFjLTkuNCAwLTEzLjYtLjMtMjAtLjhsMC02OS43YzYuNC0uNiAxNS0uNiAyMi41LS42IDIzLjMgMCAzNy4yIDEyLjIgMzcuMiAzNC41IDAgMjEuOS0xNSAzNi42LTM5LjcgMzYuNnoiXX0sdk10PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNpZ25hbC1tZXNzZW5nZXIiLGljb246WzUxMiw1MTIsW10sImU2NjMiLCJNMjU2IDBjLTEzLjMgMC0yNi4zIDEtMzkuMSAzbDMuNyAyMy43QzIzMi4xIDI0LjkgMjQ0IDI0IDI1NiAyNHMyMy45IC45IDM1LjQgMi43TDI5NS4xIDNDMjgyLjMgMSAyNjkuMyAwIDI1NiAwem02MC44IDcuM2wtNS43IDIzLjNjMjMuNCA1LjcgNDUuNCAxNC45IDY1LjQgMjcuMWwxMi41LTIwLjVjLTIyLjEtMTMuNC00Ni40LTIzLjYtNzIuMi0yOS45em03Ni40IDYxLjZjMTkuMSAxNCAzNiAzMC45IDUwLjEgNTAuMWwxOS40LTE0LjJDNDQ3IDgzLjYgNDI4LjQgNjUgNDA3LjMgNDkuNUwzOTMuMSA2OC44em04MS43IDU0LjJsLTIwLjUgMTIuNWMxMi4yIDIwIDIxLjQgNDIgMjcuMSA2NS40bDIzLjMtNS43Yy02LjMtMjUuOC0xNi41LTUwLjEtMjkuOS03Mi4yem0xMC41IDk3LjVjMS44IDExLjUgMi43IDIzLjQgMi43IDM1LjRzLS45IDIzLjktMi43IDM1LjRsMjMuNyAzLjdjMS45LTEyLjcgMy0yNS44IDMtMzkuMXMtMS0yNi4zLTMtMzkuMWwtMjMuNyAzLjd6bS0zMSAxNTUuOWwyMC41IDEyLjVjMTMuNC0yMi4xIDIzLjYtNDYuNCAyOS45LTcyLjJsLTIzLjMtNS43Yy01LjcgMjMuNC0xNC45IDQ1LjQtMjcuMSA2NS40em04LjIgMzAuOGwtMTkuNC0xNC4yYy0xNCAxOS4xLTMwLjkgMzYtNTAuMSA1MC4xbDE0LjIgMTkuNGMyMS4xLTE1LjUgMzkuOC0zNC4xIDU1LjItNTUuMnptLTg2LjEgNDdjLTIwIDEyLjItNDIgMjEuNC02NS40IDI3LjFsNS43IDIzLjNjMjUuOC02LjMgNTAuMS0xNi41IDcyLjItMjkuOWwtMTIuNS0yMC41ek0yOTUuMSA1MDlsLTMuNy0yMy43QzI3OS45IDQ4Ny4xIDI2OCA0ODggMjU2IDQ4OHMtMjMuOS0uOS0zNS40LTIuN0wyMTYuOSA1MDljMTIuNyAxLjkgMjUuOCAzIDM5LjEgM3MyNi4zLTEgMzkuMS0zem0tOTQuMS0yNy42Yy0xNy42LTQuMy0zNC40LTEwLjYtNTAuMS0xOC42bC03LjgtNC0zMi44IDcuNyA1LjUgMjMuNCAyNC4zLTUuN2MxNy40IDguOSAzNS45IDE1LjggNTUuMyAyMC41bDUuNy0yMy4zek05NS40IDQ5NC42TDkwIDQ3MS4zIDQ4LjMgNDgxYy0xMC40IDIuNC0xOS43LTYuOS0xNy4zLTE3LjNsOS43LTQxLjYtMjMuNC01LjUtOS43IDQxLjZDMS4yIDQ4NiAyNiA1MTAuOCA1My44IDUwNC40bDQxLjYtOS43em0tNTAtOTIuOWw3LjctMzIuOC00LTcuOGMtOC0xNS43LTE0LjMtMzIuNS0xOC42LTUwLjFMNy4zIDMxNi43QzEyIDMzNi4xIDE4LjkgMzU0LjcgMjcuNyAzNzJsLTUuNyAyNC4zIDIzLjQgNS41ek0zIDI5NS4xbDIzLjctMy43QzI0LjkgMjc5LjkgMjQgMjY4IDI0IDI1NnMuOS0yMy45IDIuNy0zNS40TDMgMjE2LjlDMSAyMjkuNyAwIDI0Mi43IDAgMjU2czEgMjYuMyAzIDM5LjF6bTI3LjYtOTQuMWM1LjctMjMuNCAxNC45LTQ1LjQgMjcuMS02NS40TDM3LjIgMTIzLjFjLTEzLjQgMjIuMS0yMy42IDQ2LjQtMjkuOSA3Mi4ybDIzLjMgNS43em0xOC45LTk2LjJsMTkuNCAxNC4yYzE0LTE5LjEgMzAuOS0zNiA1MC4xLTUwLjFMMTA0LjcgNDkuNUM4My42IDY1IDY1IDgzLjYgNDkuNSAxMDQuN3ptODYuMS00N2MyMC0xMi4yIDQyLTIxLjQgNjUuNC0yNy4xTDE5NS4yIDcuM2MtMjUuOCA2LjMtNTAuMSAxNi41LTcyLjIgMjkuOWwxMi41IDIwLjV6TTI1NiA0NjRjMTE0LjkgMCAyMDgtOTMuMSAyMDgtMjA4UzM3MC45IDQ4IDI1NiA0OCA0OCAxNDEuMSA0OCAyNTZjMCAzNi40IDkuNCA3MC43IDI1LjggMTAwLjUgMS42IDIuOSAyLjEgNi4yIDEuNCA5LjRsLTIxLjYgOTIuNSA5Mi41LTIxLjZjMy4yLS43IDYuNS0uMiA5LjQgMS40IDI5LjggMTYuNSA2NCAyNS44IDEwMC41IDI1Ljh6Il19LHhNdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ4aW5nIixpY29uOlszODQsNTEyLFtdLCJmMTY4IiwiTTE2Mi43IDIxMGMtMS44IDMuMy0yNS4yIDQ0LjQtNzAuMSAxMjMuNS00LjkgOC4zLTEwLjggMTIuNS0xNy43IDEyLjVMOS44IDM0NmMtNy43IDAtMTIuMS03LjUtOC41LTE0LjRsNjktMTIxLjNjLjIgMCAuMi0uMSAwLS4zTDI2LjQgMTM0LjRjLTQuMy03LjggLjMtMTQuMSA4LjUtMTQuMWw2NS4xIDBjNy4zIDAgMTMuMyA0LjEgMTggMTIuMkwxNjIuNyAyMTB6TTM4Mi42IDQ2LjFsLTE0NCAyNTMgMCAuMyA5MS42IDE2Ni42YzMuOSA3LjEgLjIgMTQuMS04LjUgMTQuMWwtNjUuMiAwYy03LjYgMC0xMy42LTQtMTgtMTIuMkwxNDYuMSAyOTkuNGMzLjMtNS44IDUxLjUtOTAuOCAxNDQuOC0yNTUuMiA0LjYtOC4xIDEwLjQtMTIuMiAxNy41LTEyLjJsNjUuNyAwYzggMCAxMi4zIDYuNyA4LjUgMTQuMXoiXX0sejhlPXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNxdWFyZS1qcyIsaWNvbjpbNDQ4LDUxMixbImpzLXNxdWFyZSJdLCJmM2I5IiwiTTQ0OCA5NmMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwek0xODAuOSA0NDQuOWMtMzMuNyAwLTUzLjItMTcuNC02My4yLTM4LjVMMTUyIDM4NS43YzYuNiAxMS43IDEyLjYgMjEuNiAyNy4xIDIxLjYgMTMuOCAwIDIyLjYtNS40IDIyLjYtMjYuNWwwLTE0My4xIDQyLjEgMCAwIDE0My43YzAgNDMuNi0yNS42IDYzLjUtNjIuOSA2My41em04NS44LTQzTDMwMSAzODIuMWM5IDE0LjcgMjAuOCAyNS42IDQxLjUgMjUuNiAxNy40IDAgMjguNi04LjcgMjguNi0yMC44IDAtMTQuNC0xMS40LTE5LjUtMzAuNy0yOGwtMTAuNS00LjVjLTMwLjQtMTIuOS01MC41LTI5LjItNTAuNS02My41IDAtMzEuNiAyNC4xLTU1LjYgNjEuNi01NS42IDI2LjggMCA0NiA5LjMgNTkuOCAzMy43TDM2OCAyOTBjLTcuMi0xMi45LTE1LTE4LTI3LjEtMTgtMTIuMyAwLTIwLjEgNy44LTIwLjEgMTggMCAxMi42IDcuOCAxNy43IDI1LjkgMjUuNmwxMC41IDQuNWMzNS44IDE1LjMgNTUuOSAzMSA1NS45IDY2LjIgMCAzNy44LTI5LjggNTguNi02OS43IDU4LjYtMzkuMSAwLTY0LjQtMTguNi03Ni43LTQzeiJdfSx5TXQ9ejhlLHdNdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJmb250aWNvbnMiLGljb246WzQ0OCw1MTIsW10sImYyODAiLCJNMCAzMmwwIDQ0OCA0NDggMCAwLTQ0OC00NDggMHpNMTg3IDE3Mi45Yy0xOC40IDAtMTkgOS45LTE5IDI3LjRsMCAyMy4zYzAgMi40LTMuNSA0LjQtLjYgNC40bDY3LjQgMC0xMS4xIDM3LjMtNTUuNyAwIDAgMTEyLjljMCA1LjgtMiA2LjcgMy4yIDcuM2w0My41IDQuMSAwIDI1LjEtMTMwLjcgMCAwLTI1LjcgMjEuMy0yYzUuMi0uNiA2LjctMi4zIDYuNy03LjlsMC0xMTEuNGMwLTIuMy0yLjktMi4zLTUuOC0yLjNsLTIyLjIgMCAwLTM3LjQgMjggMCAwLTIxYzAtNDkuNiAyNi41LTcwIDc3LjMtNzAgMzQuMSAwIDY0LjcgOC4yIDY0LjcgNTIuOGwtNTAuNyA2LjFjLjMtMTguNy00LjQtMjMtMTYuMy0yM3ptNzQuMyAyNDEuOGwwLTI1LjEgMjAuNC0yLjZjNS4yLS42IDcuNi0xLjcgNy42LTcuM2wwLTEwNy45YzAtNC4xLTIuOS02LjctNi43LTcuOWwtMjQuMi02LjQgNi43LTI5LjUgODAuMiAwIDAgMTUxLjdjMCA1LjgtMi42IDYuNCAyLjkgNy4zbDE1LjcgMi42IDAgMjUuMS0xMDIuNiAwem04MC44LTI1NS41bDkgMzMuMi03LjMgNy4zLTMxLjItMTYuNi0zMS4yIDE2LjYtNy4zLTcuMyA5LTMzLjItMjEuOC0yNC4yIDMuNS05LjYgMjcuNyAwIDE1LjUtMjggOS4zIDAgMTUuNSAyOCAyNy43IDAgMy41IDkuNi0yMS45IDI0LjJ6Il19LGtNdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ1cHMiLGljb246WzM4NCw1MTIsW10sImY3ZTAiLCJNMTAzLjIgMzAzYy01LjIgMy42LTMyLjYgMTMuMS0zMi42LTE5bDAtMTA0LTMyLjcgMCAwIDEwMi42YzAgNzQuOSA4MC4yIDUxLjEgOTcuOSAzOWwwLTE0MS42LTMyLjYgMCAwIDEyM3pNNCA3NC44TDQgMjk1LjdjMCAxMDMuNyA3NC45IDEzNS4yIDE4Ny43IDE4NC4xIDExMi40LTQ4LjkgMTg3LjctODAuMiAxODcuNy0xODQuMWwwLTIyMC45QzI2My4xIDEzLjIgOTcuNiAyNS4yIDQgNzQuOHpNMzYyLjEgMjk1LjdjMCA4Ni42LTUzLjIgMTEzLjYtMTcwLjQgMTY1LjMtMTE3LjUtNTEuOC0xNzAuNS03OC43LTE3MC41LTE2NS4zbDAtMTI2LjRjMTAyLjMtOTMuOCAyMzEuNi0xMDAgMzQwLjktODkuOGwwIDIxNi4yek0xNTIuNSAxODguM2wwIDIxMi44IDMyLjcgMCAwLTY4LjdjMjQuNCA3LjMgNzEuNy0yLjYgNzEuNy03OC41IDAtOTcuNC04MC43LTgwLjktMTA0LjQtNjUuNnptMzIuNyAxMTcuM2wwLTEwMC4zYzguNC00LjIgMzguNC0xMi43IDM4LjQgNDkuMyAwIDY3LjktMzYuNCA1MS44LTM4LjQgNTF6bTc5LjEtODYuNGMuMSA0Ny4zIDUxLjYgNDIuNSA1Mi4yIDcwLjQgLjYgMjMuNS0zMC40IDIzLTUwLjggNC45bDAgMzAuMWMzNi4yIDIxLjUgODEuOSA4LjEgODMuMi0zMy41IDEuNy01MS41LTU0LjEtNDYuNi01My40LTczLjIgLjYtMjAuMyAzMC42LTIwLjUgNDguNS0yLjJsMC0yOC40Yy0yOC41LTIyLTc5LjktOS4yLTc5LjcgMzEuOXoiXX0sU010PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImFtYXpvbi1wYXkiLGljb246WzY0MCw1MTIsW10sImY0MmMiLCJNMTQgMzI1LjNjMi4zLTQuMiA1LjItNC45IDkuNy0yLjUgMTAuNCA1LjYgMjAuNiAxMS40IDMxLjIgMTYuNyA0MC42IDIwLjIgODMuMyAzNS44IDEyNy40IDQ2LjMgMjAuOCA1IDQxLjkgOSA2My4yIDExLjggMzEuNSA0LjIgNjMuMiA2IDk1IDUuMiAxNy40LS40IDM0LjgtMS44IDUyLjEtMy44IDU2LjItNi42IDExMS4xLTIxIDE2My4zLTQyLjggMi45LTEuMiA1LjktMiA5LjEtMS4yIDYuNyAxLjggOSA5IDQuMSAxMy45LTMgMi43LTYuMiA1LjItOS42IDcuNC0zMC43IDIxLjEtNjQuMiAzNi40LTk5LjYgNDcuOS0yNC41IDcuOS00OS42IDEzLjgtNzUuMSAxNy42LTE3LjYgMi43LTM1LjQgNC4zLTUzLjIgNC44LS44IDAtMS43IC4yLTIuNSAuM2wtMjEuMSAwYy0uOC0uMS0xLjctLjItMi41LS4zLTMuNi0uMi03LjItLjMtMTAuNy0uNC0xNi45LS44LTMzLjctMi41LTUwLjQtNS4zLTI3LjQtNC41LTU0LjMtMTEuNS04MC40LTIwLjktNTMuNy0xOS40LTEwMy4xLTQ4LjktMTQ1LjYtODctMS44LTEuNi0zLTMuOC00LjQtNS43bDAtMnpNMTcyIDY1LjFsLTQuMyAuNmMtMTMuOCAxLjctMjYuOCA2LjktMzggMTUuMS0yLjQgMS43LTQuNiAzLjUtNy4xIDUuNC0uMi0uNC0uMy0uOS0uNC0xLjQtLjQtMi43LS44LTUuNS0xLjMtOC4yLS43LTQuNi0zLTYuNi03LjYtNi42bC0xMS41IDBjLTYuOSAwLTguMiAxLjMtOC4yIDguMmwwIDIwOS4zYzAgMSAwIDIgLjEgMyAuMiAzIDIgNC45IDQuOSA1IDcgLjEgMTQuMSAuMSAyMS4xIDAgMi45IDAgNC43LTIgNS01IC4xLTEgLjEtMiAuMS0zbDAtNzIuNGMxLjEgLjkgMS43IDEuNCAyLjIgMS45IDE3LjkgMTQuOSAzOC41IDE5LjggNjEgMTUuNCAyMC40LTQgMzQuNi0xNi41IDQzLjgtMzQuOSA3LTEzLjkgOS45LTI4LjcgMTAuMy00NC4xIC41LTE3LjEtMS4yLTMzLjktOC4xLTQ5LjgtOC41LTE5LjYtMjIuNi0zMi41LTQzLjktMzYuOS0zLjItLjctNi41LTEtOS44LTEuNS0yLjgtLjEtNS41LS4xLTguMy0uMXpNMTI0LjYgMTA3Yy0uMS0uNyAuMS0xLjMgLjQtMS45cy44LTEuMSAxLjMtMS40YzEzLjctOS41IDI4LjgtMTQuNSA0NS42LTEzLjIgMTQuOSAxLjEgMjcuMSA4LjQgMzMuNSAyNS45IDMuOSAxMC43IDQuOSAyMS44IDQuOSAzMyAwIDEwLjQtLjggMjAuNi00IDMwLjYtNi44IDIxLjMtMjIuNCAyOS40LTQyLjYgMjguNS0xNC0uNi0yNi4yLTYtMzcuNC0xMy45LS42LS4zLTEtLjgtMS4zLTEuNHMtLjQtMS4yLS40LTEuOWMuMS0xNC4xIDAtMjguMSAwLTQyLjJzLjEtMjggMC00Mi4xek0zMzAuMyA2NS4xYy0xIC4xLTIgLjMtMi45IC40LTkuNyAuNC0xOS40IDEuOC0yOC45IDQuMS02LjEgMS42LTEyIDMuOC0xNy45IDUuOC0zLjYgMS4yLTUuNCAzLjgtNS4zIDcuNyAuMSAzLjMtLjEgNi42IDAgOS45IC4xIDQuOCAyLjEgNi4xIDYuOCA0LjkgNy44LTIgMTUuNi00LjIgMjMuNS01LjcgMTIuMy0yLjMgMjQuNy0zLjMgMzcuMi0xLjQgNi41IDEgMTIuNiAyLjkgMTYuOCA4LjQgMy43IDQuOCA1LjEgMTAuNSA1LjMgMTYuNCAuMyA4LjMgLjIgMTYuNiAuMyAyNC45IDAgLjUtLjEgLjktLjIgMS40LS41LS4xLS45IDAtMS4zLS4xLTEwLjUtMi42LTIxLjItNC4yLTMyLTQuOS0xMS4zLS42LTIyLjUgLjEtMzMuMyAzLjktMTIuOSA0LjUtMjMuMyAxMi4zLTI5LjQgMjQuOS00LjcgOS44LTUuNCAyMC4yLTMuOSAzMC43IDIgMTQgOSAyNC44IDIxLjQgMzEuNyAxMS45IDYuNiAyNC44IDcuNCAzNy45IDUuNCAxNS4xLTIuMyAyOC41LTguNyA0MC4zLTE4LjQgLjUtLjQgMS0uOCAxLjYtMS4xIC42IDMuOCAxLjEgNy40IDEuOCAxMSAuNiAzLjEgMi41IDUuMSA1LjQgNS4yIDUuNCAuMSAxMC45IC4xIDE2LjMgMCAxLjMgMCAyLjUtLjUgMy40LTEuNHMxLjQtMi4xIDEuNS0zLjNjLjEtLjkgLjEtMS45IC4xLTIuOGwwLTEwNmMwLTQuMy0uMy04LjYtLjktMTIuOS0xLjktMTIuOS03LjQtMjMuNS0xOS0zMC40LTYuNy00LTE0LjEtNi0yMS44LTcuMS0zLjYtLjUtNy4yLS44LTEwLjgtMS4zLTMuOSAuMS03LjkgLjEtMTEuOSAuMXptMzUgMTI3LjdjMCAuNi0uMSAxLjItLjMgMS43cy0uNyAxLTEuMiAxLjNjLTExLjIgOC4xLTIzLjUgMTMuNS0zNy40IDE0LjktNS43IC42LTExLjQgLjQtMTYuOC0xLjgtMy0xLjEtNS42LTIuOS03LjgtNS4ycy0zLjctNS4xLTQuNi04LjFjLTItNi4zLTItMTMuMS0uMS0xOS40IDIuNS04LjMgOC40LTEzIDE2LjQtMTUuNiA4LTIuNCAxNi41LTMuMiAyNC44LTIuMiA4LjQgLjcgMTYuNiAyLjMgMjUgMy40IDEuNiAuMiAyLjEgMSAyLjEgMi42LS4xIDQuOCAwIDkuNSAwIDE0LjNzLS4yIDkuNC0uMSAxNC4xek02MjUuMiAzMjIuMmMtMS01LTQuOC02LjktOS4xLTguMy02LjgtMi4xLTEzLjktMy41LTIxLTMuOS0xMy4xLTEuMS0yNi4zLS41LTM5LjIgMS45LTE0LjMgMi43LTI3LjkgNy4zLTQwIDE1LjYtMS40IC45LTIuNyAyLjEtMy43IDMuNS0uNCAuNi0uNiAxLjMtLjcgMS45czAgMS40IC4yIDIuMWMuNCAxLjUgMi4xIDEuOSAzLjYgMS44IC43IDAgMS41IDAgMi4yLS4xIDcuOC0uOCAxNS41LTEuNyAyMy4zLTIuNSAxMS40LTEuMSAyMi45LTEuOCAzNC4zLS45IDQuOSAuNCA5LjcgMS4zIDE0LjQgMi43IDUuMSAxLjQgNy40IDUuMiA3LjYgMTAuNCAuNCA4LTEuNCAxNS43LTMuNSAyMy4zLTQuMSAxNS40LTEwIDMwLjMtMTUuOCA0NS4xLS40IDEtLjggMi0xIDMtLjUgMi45IDEuMiA0LjggNC4xIDQuMSAxLjgtLjQgMy40LTEuMyA0LjgtMi41IDQuNS00LjIgOC44LTguNyAxMi43LTEzLjQgMTIuOC0xNi40IDIwLjMtMzUuMyAyNC43LTU1LjYgLjgtMy42IDEuNC03LjMgMi4xLTEwLjlsMC0xNy4zek00OTMuMSAxOTljLTEyLjktMzUuNy0yNS44LTcxLjQtMzguNy0xMDcuMi0yLTUuNy00LjItMTEuMy02LjMtMTYuOS0xLjEtMi45LTMuMi00LjgtNi40LTQuOC03LjYtLjEtMTUuMi0uMi0yMi45LS4xLTIuNSAwLTMuNyAyLTMuMiA0LjUgLjUgMi4xIDEuMSA0LjEgMS45IDYuMSAxOS42IDQ4LjUgMzkuMyA5NyA1OS4xIDE0NS41IDEuNyA0LjEgMi4xIDcuNiAuMiAxMS44LTMuMyA3LjMtNS45IDE1LTkuMyAyMi4zLTMgNi41LTggMTEuNC0xNS4yIDEzLjMtNSAxLjMtMTAuMiAxLjctMTUuNCAxLjEtMi41LS4yLTUtLjgtNy41LTEtMy40LS4yLTUuMSAxLjMtNS4yIDQuOC0uMSAzLjMtLjEgNi42IDAgOS45IC4xIDUuNSAyIDggNy40IDguOSA1LjYgMS4xIDExLjIgMS44IDE2LjkgMiAxNy4xIC40IDMwLjctNi41IDM5LjUtMjEuNCAzLjUtNS45IDYuNi0xMiA5LjItMTguNCAyMy43LTU5LjggNDcuMi0xMTkuNyA3MC42LTE3OS42IC43LTEuOCAxLjMtMy42IDEuNi01LjUgLjQtMi44LS45LTQuNC0zLjctNC40LTYuNi0uMS0xMy4zIDAtMTkuOSAwLTEuNy0uMS0zLjQgLjMtNC43IDEuM3MtMi40IDIuMy0zIDMuOWMtLjUgMS40LTEuMSAyLjctMS42IDQuMWwtMzQuOCAxMDBjLTIuNSA3LjItNS4xIDE0LjUtNy43IDIyLjItLjQtMS4xLS42LTEuNy0uOS0yLjR6Il19LF9NdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJwYW5kb3JhIixpY29uOlszODQsNTEyLFtdLCJlN2RhIiwiTTIwMS4zIDMyTDAgMzIgMCA0ODAgMTIwLjIgNDgwYzExLjIgMCAyMC4zLTkuMSAyMC4zLTIwLjNsMC04Ni4xIDMwLjEgMGMxNDcuMSAwIDIwNy4zLTgyLjkgMjA3LjMtMTc5LjkgMC0xMTkuNy05MC45LTE2MS44LTE3Ni41LTE2MS44eiJdfSxNTXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToib3BlbmlkIixpY29uOls0NDgsNTEyLFtdLCJmMTliIiwiTTI3MS41IDQzMmwtNjggMzJDODguNSA0NTMuNyAwIDM5Mi41IDAgMzE4LjIgMCAyNDYuNyA4Mi41IDE4Ny4yIDE5MS43IDE3My45bDAgNDNjLTcxLjUgMTIuNS0xMjQgNTMtMTI0IDEwMS4zIDAgNTEgNTguNSA5My4zIDEzNS43IDEwM2wwLTM0MCA2OC0zMy4yIDAgMzg0IC4xIDB6TTQ0OCAyOTFsLTEzMS4zLTI4LjUgMzYuOC0yMC43Yy0xOS41LTExLjUtNDMuNS0yMC03MC0yNC44bDAtNDNjNDYuMiA1LjUgODcuNyAxOS41IDEyMC4zIDM5LjNsMzUtMTkuOCA5LjIgOTcuNXoiXX0sek10PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InZzY28iLGljb246WzUxMiw1MTIsW10sImU3ZGQiLCJNMzU3LjYgMjU2YzAtMjcuMS0xMC42LTUyLjUtMjkuNy03MS43cy00NC42LTI5LjctNzEuNy0yOS43bC0uMSAwYy0yNy4xIDAtNTIuNiAxMC42LTcxLjcgMjkuN3MtMjkuNyA0NC42LTI5LjcgNzEuN2MwIDI3LjEgMTAuNiA1Mi41IDI5LjcgNzEuNyAxOS4yIDE5LjIgNDQuNiAyOS43IDcxLjcgMjkuN2wuMSAwYzI3LjEgMCA1Mi42LTEwLjYgNzEuNy0yOS43IDE5LjItMTkuMiAyOS43LTQ0LjYgMjkuNy03MS43ek0xNzYuMyA0ODIuMWMyMyA4LjEgNDcgMTIuNiA3MS42IDEzLjRsMC01OS4xYy0xNy4xLS43LTMzLjUtMy44LTQ5LTguOWwtMjIuNiA1NC42em0xMzctNTQuNmMtMTUuNSA1LjEtMzIgOC4yLTQ5IDguOWwwIDU5LjFjMjQuNi0uOCA0OC42LTUuMyA3MS42LTEzLjRsLTIyLjYtNTQuNnpNOTIuNSA0MzEuMmMyMC4yIDE4LjkgNDMuMyAzNCA2OC43IDQ1bDIyLjUtNTQuNWMtMTguMy03LjktMzUuMS0xOC44LTQ5LjgtMzEuOUw5Mi41IDQzMS4yem0yODUuOS00MS40Yy0xNC42IDEzLjItMzEuNCAyNC00OS44IDMxLjlsMjIuNSA1NC41YzI1LjQtMTEgNDguNC0yNi4xIDY4LjctNDVsLTQxLjQtNDEuNHpNMTQ1LjQgMzc4LjJjMTMuNiAxMi4xIDI5IDIxLjkgNDUuOCAyOSAxOCA3LjYgMzcuMSAxMiA1Ni43IDEyLjlsMC00Ni44Yy0yNi40LTEuOC01MC4zLTEyLjMtNjkuMS0yOC42bC0zMy40IDMzLjR6bTE4OC0zMy40Yy0xOC44IDE2LjMtNDIuNyAyNi44LTY5LjEgMjguNmwwIDQ2LjhjMTkuNi0uOSAzOC43LTUuMyA1Ni43LTEyLjkgMTYuOC03LjEgMzIuMi0xNi45IDQ1LjgtMjlsLTMzLjQtMzMuNHpNMzguNSAzNTYuNmMxMC43IDIzLjIgMjUgNDQuMyA0Mi41IDYzLjFsNDEuMy00MS4zYy0xMi40LTEzLjQtMjIuOS0yOC42LTMwLjktNDUuMkwzOC41IDM1Ni42em0zODIuNC0yMy41Yy04IDE2LjYtMTguNSAzMS45LTMwLjkgNDUuMmw0MS4zIDQxLjNjMTcuNS0xOC43IDMxLjgtMzkuOSA0Mi41LTYzLjFsLTUyLjktMjMuNXptLTMzMS02OWMxLjEgMTguOCA1LjQgMzcuMiAxMi44IDU0LjUgNy41IDE3LjggMTggMzQgMzEuMiA0OC4ybDMzLjUtMzMuNWMtMTYuNC0xOC44LTI2LjktNDIuOC0yOC43LTY5LjJsLTQ4LjggMHptMjgzLjcgMGMtMS44IDI2LjQtMTIuMyA1MC40LTI4LjcgNjkuMmwzMy41IDMzLjVjMTMuMS0xNC4yIDIzLjYtMzAuNCAzMS4yLTQ4LjIgNy4zLTE3LjQgMTEuNi0zNS43IDEyLjctNTQuNWwtNDguNyAwem0tMzU3LjEgMGMuOSAyNi43IDYuMSA1Mi43IDE1LjYgNzcuNUw4NSAzMTguMmMtNi40LTE3LTEwLjMtMzUuMS0xMS4zLTU0bC01Ny4xIDB6bTQyMi4xIDBjLTEgMTguOS01IDM3LjEtMTEuMyA1NGw1Mi44IDIzLjVjOS41LTI0LjggMTQuNy01MC44IDE1LjYtNzcuNWwtNTcuMSAwek0zMi4xIDE3MC40Yy05LjUgMjQuOC0xNC43IDUwLjgtMTUuNiA3Ny41bDU3LjEgMGMxLTE4LjkgNS0zNy4xIDExLjMtNTRMMzIuMSAxNzAuNHptMTAxLjctMjUuMmMtMTMuMSAxNC4yLTIzLjYgMzAuNC0zMS4yIDQ4LjItNy4zIDE3LjQtMTEuNiAzNS43LTEyLjggNTQuNWw0OC44IDBjMS44LTI2LjQgMTIuMy01MC40IDI4LjctNjkuMmwtMzMuNS0zMy41em0yMTEuMSAzMy41YzE2LjQgMTguOCAyNi45IDQyLjggMjguNyA2OS4ybDQ4LjcgMGMtMS4xLTE4LjgtNS40LTM3LjItMTIuNy01NC41LTcuNS0xNy44LTE4LTM0LTMxLjItNDguMmwtMzMuNSAzMy41em04Mi40IDE1LjJjNi40IDE3IDEwLjMgMzUuMSAxMS4zIDU0bDU3LjEgMGMtLjktMjYuNy02LjEtNTIuNy0xNS42LTc3LjVsLTUyLjggMjMuNXpNODEgOTIuM0M2My40IDExMSA0OS4yIDEzMi4yIDM4LjUgMTU1LjRsNTIuOSAyMy41YzgtMTYuNiAxOC41LTMxLjkgMzAuOS00NS4yTDgxIDkyLjN6bTMwOSA0MS4zYzEyLjQgMTMuNCAyMi45IDI4LjYgMzAuOSA0NS4ybDUyLjktMjMuNWMtMTAuNy0yMy4yLTI1LTQ0LjMtNDIuNS02My4xTDM5MCAxMzMuN3pNMjQ4IDkxLjhjLTE5LjYgLjktMzguNyA1LjMtNTYuNyAxMi45LTE2LjggNy4xLTMyLjIgMTYuOS00NS44IDI5bDMzLjQgMzMuNGMxOC44LTE2LjMgNDIuNy0yNi44IDY5LjEtMjguNmwwLTQ2Ljd6bTE2LjMgNDYuN2MyNi40IDEuOCA1MC4zIDEyLjMgNjkuMSAyOC42bDMzLjQtMzMuNGMtMTMuNi0xMi4xLTI5LTIxLjktNDUuOC0yOS0xOC03LjYtMzcuMS0xMi01Ni43LTEyLjlsMCA0Ni43ek0xNjEuMiAzNS44Yy0yNS40IDExLTQ4LjQgMjYuMS02OC43IDQ1bDQxLjQgNDEuNGMxNC43LTEzLjIgMzEuNC0yNCA0OS44LTMxLjlMMTYxLjIgMzUuOHpNMzI4LjYgOTAuM2MxOC4zIDcuOSAzNS4xIDE4LjggNDkuOCAzMS45bDQxLjQtNDEuNGMtMjAuMi0xOC45LTQzLjMtMzQtNjguNy00NUwzMjguNiA5MC4zek0yNDggMTYuNGMtMjQuNiAuOC00OC42IDUuMy03MS42IDEzLjRsMjIuNiA1NC42YzE1LjUtNS4xIDMyLTguMiA0OS04LjlsMC01OS4xem0xNi4zIDU5LjFjMTcuMSAuNyAzMy41IDMuOCA0OSA4LjlsMjIuNi01NC42Yy0yMy04LjEtNDctMTIuNi03MS42LTEzLjRsMCA1OS4xek01MTIuMiAyNjQuMmwtLjIgMEM1MDcuOCAzOTkgMzk5LjIgNTA3LjcgMjY0LjMgNTExLjlsMCAuMS0xNi4zIDAgMC0uMUMxMTMuMSA1MDcuNyA0LjUgMzk5IC4yIDI2NC4xbC0uMiAwIDAtMTYuMyAuMiAwQzQuNSAxMTMgMTEzLjEgNC4zIDI0OCAuMWwwLS4xIDE2LjMgMCAwIC4xQzM5OS4yIDQuMyA1MDcuOCAxMTMgNTEyIDI0Ny45bC4yIDAgMCAxNi4zeiJdfSxDTXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZ2xvYmFsZWFrcyIsaWNvbjpbNDQ4LDUxMixbXSwiZTg1ZCIsIk00MTEuMiAzMi4yYzIwLjIgMCAzNi44IDE2LjYgMzYuOCAzNi45bDAgMzczLjhjMCAyMC4yLTE2LjYgMzYuOS0zNi44IDM2LjlsLTk0LjQgMCAyOC03OS40YzMuMS04LjgtMS42LTE4LjctMTAuNC0yMS44LTEuNi0uNS0yLjYtMS00LjItMXMtMy42IDAtNS4yIC41Yy01LjIgMS05LjkgNS4yLTExLjkgMTAuOWwtNi4yIDE2LjYgMC02Ny41YzAtMTAuOS03LjgtMTkuNy0xOC4yLTIxLjhsLTcuMiAwYy0uNSAwLTEgMC0xLjYgLjUtLjUgMC0xIC41LTEuNiAuNS0yLjYgMS01LjIgMi42LTcuMiA0LjFsMC00LjFjMC01LjctMi42LTEwLjQtNS43LTE0bC0xLTFjLTEtMS0yLjYtMi4xLTQuMi0yLjZsMC0yNi41YzAtNS4yLTQuMS05LjMtOS4zLTkuM2wtMzkuOSAwYy02LjcgMC0xMS40LTcuMy04LjMtMTMuNUwyODMuMSA4NC4xYzE0LjUtMzEuMSA0NS42LTUxLjQgODAuNC01MS45bDQ3LjcgMHptLTE2NiAwYzE3LjYgMCAzMC4xIDE2LjEgMjggMzIuMi0yLjYgMy42LTQuNyA3LjgtNi4yIDEwLjlMMTg2LjYgMjQxLjVjLTguOCAxOC43IDQuMiA0MCAyNC40IDQwbDMwLjYgMCAwIDE2LjFjLTcuOCAzLjEtMTMgMTAuOS0xMyAxOS43bDAgMy42Yy0zLjYtMy42LTguOC01LjctMTQuNS01LjctMTEuOSAwLTIxLjggOS45LTIxLjggMjEuOGwwIDE5LjItMy4xIDBjLTkuMyAwLTE3LjEgNy44LTE3LjEgMTcuMWwwIDEwNS45LTk1LjQgMGMtNDIgMC03Mi42LTQwLjUtNjEuMi04MS41IDEtMy4xIDQuMi01LjIgNy4zLTQuN2wyMS4yIDBjMjQuNCAwIDQ0LjYtMjAuMiA0NC42LTQ1LjJsMC00LjJjMC0yNC45LTE5LjctNDUuMi00NC42LTQ1LjItLjUgMC0xLS41LTEtMWw4LjgtMzIuN2MyLjEtNi4yLTIuNi0xMS45LTguOC0xMS45bC0zMy4yIDBjLTYuNyAwLTExLjQtNy4zLTguMy0xMy41TDc2LjcgODQuN2MxNi4xLTMyLjIgNDguMi01Mi40IDg0LTUyLjRsODQuNSAwek0xMzMuNyAxNDQuNGMtMTAuNCAwLTE4LjcgOC4zLTE4LjcgMTguNyAwIDkuOSA4LjMgMTguNyAxOC43IDE4LjcgMTAuNCAwIDE4LjctOC4zIDE4LjctMTguN3MtOC4zLTE4LjctMTguNy0xOC43em0yMDIuOCAwYTE4LjYgMTguNiAwIDEgMCAtLjIgMzcuMiAxOC42IDE4LjYgMCAxIDAgLjItMzcuMnoiXX0sVE10PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InZlbm1vIixpY29uOls2NDAsNTEyLFtdLCJlODVhIiwiTTY3LjggMjAyLjdjMi40IDUgMy45IDExIDMuOSAxOS44IDAgMTYuMi0xMS41IDM5LjgtMjAuNyA1NC45bC05LjktNzkuNy00MSAzLjkgMTguOCAxMTIgNDYuOSAwYzIwLjUtMjYuOSA0NS44LTY1LjMgNDUuOC05NC44IDAtOS4zLTEuOS0xNi42LTYuMy0yMy43bC0zNy40IDcuNXptMTEzLTcuMWMtNDIuOCAwLTYzLjUgMzctNjMuNSA3MS45IDAgMjYuOSAxMi44IDQ4LjUgNDguNCA0OC41IDE0IDAgMjguNS0zIDM3LjgtNy41bDUtMzMuNmMtMTMuMiA2LjctMjMuMyA5LjMtMzMuOSA5LjMtOS43IDAtMTcuMS01LjItMTcuMS0xOC4zIDIyLS4yIDYwLTkuMyA2MC0zOC44IDAtMTguMy0xMy4yLTMxLjUtMzYuNy0zMS41bDAgMHptLTIyLjUgNDguOWMxLjEtMTIuOSAxMS0yMiAxOC42LTIyIDQuMyAwIDggMi42IDggNy43IDAgMTAuOC0xOSAxNC4yLTI2LjYgMTQuMmwwIDB6bTE1MC4yLTQ4LjljLTE1LjMgMC0yNi4xIDUuOC0zNC4zIDExLjJsLS40LTkuMy0zNC44IDAtMTguNCAxMTYuMSA0MC4yIDAgMTIuNy04MS40YzMuNS0xLjcgOC42LTQuMSAxMy44LTQuMSAzLjkgMCA3LjEgMS4zIDcuMSA2LjUgMCAyLjItLjcgNi0uOSA4bC0xMS4yIDcxLjEgNDAgMCAxMi4zLTc3LjVjLjctNC4xIDEuMy0xMC4zIDEuMy0xNC42IDAtMTUuNS03LjEtMjUuOS0yNy40LTI1Ljl6bTE4My4yIDBjLTE0LjkgMC0yNS43IDQuNS0zNy4yIDEyLjctNC4xLTcuMy0xMi4zLTEyLjctMjQuOC0xMi43LTE0LjUgMC0yNS4zIDUuOC0zMy4zIDExLjZsLTEuMS05LjctMzQuNCAwLTE4LjQgMTE2LjEgNDAuMiAwIDEyLjgtODEuNGMzLjUtMS43IDguNi00LjEgMTMuOC00LjEgMy45IDAgNy4xIDEuMyA3LjEgNy4xIDAgMS41LS40IDMuOS0uNiA1LjhsLTExLjQgNzIuNiA0MCAwIDEyLjctODEuNGMzLjctMS45IDguNi00LjEgMTMuNi00LjEgMy45IDAgNy4xIDEuMyA3LjEgNy4xIDAgMS41LS40IDMuOS0uNyA1LjhsLTExLjQgNzIuNiA0MCAwIDEyLjMtNzcuNWMuNy00LjEgMS4zLTEwLjMgMS4zLTE0LjYgMC0xNS41LTcuMS0yNS45LTI3LjctMjUuOWwwIDB6bTEwMi4yIDBjLTQ0LjcgMC02NC4yIDM0LjMtNjQuMiA3MC45IDAgMjcuOCAxMS4yIDUwIDQ1LjEgNTAgNDUuOCAwIDY1LTM3LjUgNjUtNzMuNyAwLTI3LjQtMTIuMy00Ny4yLTQ2LTQ3LjJ6bS0xMy40IDkwYy03LjEgMC0xMC4xLTYuNy0xMC4xLTE3LjUgMC0xNC4yIDMuMi00MiAxOS00MiA3LjEgMCA5LjUgNi41IDkuNSAxNS45IDAgMTQuMi0zLjUgNDMuNS0xOC40IDQzLjV6Il19LCRNdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ1YnVudHUiLGljb246WzU3Niw1MTIsW10sImY3ZGYiLCJNNDY5LjIgNzVjMC0yMC4xLTgtMzkuMy0yMi4yLTUzLjVzLTMzLjQtMjIuMi01My41LTIyLjItMzkuMyA4LTUzLjUgMjIuMi0yMi4yIDMzLjQtMjIuMiA1My41YzAgMjAuMSA4IDM5LjMgMjIuMSA1My41czMzLjQgMjIuMSA1My41IDIyLjEgMzkuMy04IDUzLjUtMjIuMSAyMi4xLTMzLjQgMjIuMS01My41bC4xIDB6bS0zMTUgMTY1LjdhNzUuNiA3NS42IDAgMSAwIC0xNTEuMiAwIDc1LjYgNzUuNiAwIDEgMCAxNTEuMiAwek01NyAzNDZjMTguNiA0Ni45IDUxIDg3IDkzIDExNS4xczkxLjUgNDIuNiAxNDIgNDEuN2MtMTQuNy0xOC42LTIyLjktNDEuNS0yMy4yLTY1LjItNi44LS45LTEzLjMtMi4xLTE5LjUtMy40LTI2LjgtNS43LTUxLjktMTcuMy03My42LTM0cy0zOS4zLTM4LjEtNTEuNy02Mi41Yy0yMC45IDkuOS00NC41IDEyLjgtNjcuMSA4LjJsLjEgLjF6bTM5NS4xIDg5LjhhNzUuNiA3NS42IDAgMSAwIC0xNTEuMiAwIDc1LjYgNzUuNiAwIDEgMCAxNTEuMiAwek00NDQgMzUxLjZjMTguNSAxNC44IDMxLjYgMzUuMiAzNy4yIDU4LjIgMzMuMy00MS4zIDUyLjYtOTIuMiA1NC44LTE0NS4ycy0xMi41LTEwNS40LTQyLjItMTQ5LjRjLTguNiAyMS41LTI0IDM5LjYtNDMuOCA1MS42IDE1LjQgMjguNiAyMi45IDYwLjggMjEuOSA5My4ycy0xMC43IDY0LTI4IDkxLjZsLjEgMHpNMTAxLjEgMTM1LjRjMTIuNCAyLjcgMjQuMyA3LjUgMzUuMSAxNC4zIDE2LjYtMjQuMiAzOC45LTQ0LjEgNjQuOC01OFMyNTUuOCA3MC40IDI4NS4yIDcwYy4yLTUuOSAuOS0xMS45IDItMTcuNyAzLjYtMTYuNyAxMS4xLTMyLjMgMjEuOC00NS41LTQ3LjctMy44LTk1LjQgNi0xMzcuNiAyOC41Uzk0LjMgOTEuNyA3MC44IDEzMy40YzIuNy0uMiA1LjMtLjMgOC0uMyA3LjUgMCAxNSAuOCAyMi40IDIuM2wtLjEgMHoiXX0sRE10PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InZpYWNvaW4iLGljb246WzM4NCw1MTIsW10sImYyMzciLCJNMzg0IDMybC02NCAwLTgwLjcgMTkyLTk0LjUgMC04MC44LTE5Mi02NCAwIDQ4IDExMi00OCAwIDAgNDggNjguNSAwIDEzLjggMzItODIuMyAwIDAgNDggMTAyLjggMCA4OS4yIDIwOCA4OS4yLTIwOCAxMDIuOCAwIDAtNDgtODIuMyAwIDEzLjgtMzIgNjguNSAwIDAtNDgtNDggMCA0OC0xMTJ6TTE5MiAzMzZsLTI3LTY0IDU0IDAtMjcgNjR6Il19LExNdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ6aGlodSIsaWNvbjpbNjQwLDUxMixbXSwiZjYzZiIsIk0xNzAuNSAxNDguMWwwIDIxNy41IDIzLjQgMCA3LjcgMjYuNCA0Mi0yNi40IDQ5LjUgMCAwLTIxNy41LTEyMi43IDB6bTk3LjggMTkzLjlsLTI3LjkgMC0yNy45IDE3LjUtNS4xLTE3LjUtMTEuOSAwIDAtMTcwLjMgNzIuOCAwIDAgMTcwLjN6TTE0OS44IDI0Ny43bC01Mi4zIDBjMS43LTI3LjEgMi4yLTUxLjYgMi4yLTczLjVsNTEuMiAwczItMjIuNi04LjYtMjIuM2wtODguNSAwYzMuNS0xMy4xIDcuOS0yNi43IDEzLjEtNDAuNyAwIDAtMjQuMSAwLTMyLjMgMjEuNi0zLjQgOC45LTEzLjIgNDMuMS0zMC43IDc4LjEgNS45LS42IDI1LjQtMS4yIDM2LjgtMjIuMiAyLjEtNS45IDIuNS02LjcgNS4xLTE0LjVsMjguOSAwYzAgMTAuNS0xLjIgNjYuOS0xLjcgNzMuNGwtNTIuMyAwYy0xMS43IDAtMTUuNiAyMy42LTE1LjYgMjMuNmw2NS42IDBjLTQuNCA0OS45LTI4IDkxLjktNzAuOCAxMjUuMSAyMC41IDUuOSA0MC45LS45IDUxLTkuOSAwIDAgMjMtMjAuOSAzNS42LTY5LjNsNTQgNjQuOXM3LjktMjYuOS0xLjItNDBjLTcuNi04LjktMjguMS0zMy4xLTM2LjgtNDEuOEw4Ny45IDMxMmM0LjQtMTQgNy0yNy42IDcuOS00MC43bDYxLjYgMHMtLjEtMjMuNi03LjYtMjMuNmwwIDB6bTQxMi0xLjZjMjAuOC0yNS42IDQ1LTU4LjYgNDUtNTguNnMtMTguNi0xNC44LTI3LjQtNC4xYy02IDguMi0zNi44IDQ4LjItMzYuOCA0OC4ybDE5LjIgMTQuNHpNNDExLjggMTg3Yy05LTguMi0yNS45IDIuMS0yNS45IDIuMXMzOS41IDU1IDQxLjEgNTcuNGwxOS41LTEzLjdzLTI1LjctMzcuNi0zNC43LTQ1LjlsMCAwIDAgMHpNNjQwIDI1OC40Yy0xOS44IDAtMTMwLjkgLjktMTMxLjEgLjlsMC0xMDFjNC44IDAgMTIuNC0uNCAyMi44LTEuMiA0MC45LTIuNCA3MC4xLTQgODcuOC00LjggMCAwIDEyLjItMjcuMi0uNi0zMy40LTMuMS0xLjItMjMuMiA0LjYtMjMuMiA0LjZzLTE2NS4yIDE2LjUtMjMyLjQgMThjMS42IDguOCA3LjYgMTcuMSAxNS44IDE5LjYgMTMuMyAzLjUgMjIuNyAxLjcgNDkuMiAuOSAyNC44LTEuNiA0My43LTIuNCA1Ni41LTIuNGwwIDk5LjgtMTMzLjUgMHMyLjggMjIuMyAyNS41IDIyLjlsMTA3LjkgMCAwIDcwLjljMCAxNC0xMS4yIDIyLTI0LjUgMjEuMS0xNC4xIC4xLTI2LjEtMS4xLTQxLjctMS44IDIgNCA2LjMgMTQuNCAxOS4zIDIxLjggOS45IDQuOCAxNi4yIDYuNiAyNiA2LjYgMjkuNiAwIDQ1LjctMTcuMyA0NC45LTQ1LjNsMC03My4zIDEyMi40IDBjOS43IDAgOC43LTIzLjggOC43LTIzLjhsMCAweiJdfSxFTXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToieWFuZGV4IixpY29uOlsyNTYsNTEyLFtdLCJmNDEzIiwiTTE1My4xIDMxNS44TDY1LjcgNTEyIDIgNTEyIDk4IDMwMi4yQzUyLjkgMjc5LjMgMjIuOCAyMzcuOCAyMi44IDE2MS4xIDIyLjcgNTMuNyA5MC44IDAgMTcxLjcgMGw4Mi4zIDAgMCA1MTItNTUuMSAwIDAtMTk2LjItNDUuOCAwek0xOTguOSA0Ni41bC0yOS40IDBjLTQ0LjQgMC04Ny40IDI5LjQtODcuNCAxMTQuNiAwIDgyLjMgMzkuNCAxMDguOCA4Ny40IDEwOC44bDI5LjQgMCAwLTIyMy40eiJdfSxQTXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToicGl4aXYiLGljb246WzQ0OCw1MTIsW10sImU2NDAiLCJNOTYgMzJDNDMgMzIgMCA3NSAwIDEyOEwwIDM4NGMwIDUzIDQzIDk2IDk2IDk2bDI1NiAwYzUzIDAgOTYtNDMgOTYtOTZsMC0yNTZjMC01My00My05Ni05Ni05Nkw5NiAzMnptNzcuNyAyMTcuM2E2MC4xIDYwLjEgMCAxIDAgMTIwLjMgMCA2MC4xIDYwLjEgMCAxIDAgLTEyMC4zIDB6TTExOS4xIDM4Ny44Yy0uMy0uOC0uNS0xLjctLjUtMi42bDAtMjQ0LjNjMC0xLjggLjctMy42IDItNC45czMtMiA0LjktMmwxNi45IDBjMS4yIDAgMi4zIC4zIDMuMyAuOHMxLjkgMS4zIDIuNSAyLjNsMTQgMjEuOGMxOS43LTE1LjYgNDQuNS0yNSA3MS42LTI1IDYzLjYgMCAxMTUuMiA1MS42IDExNS4yIDExNS4yUzI5Ny41IDM2NC41IDIzMy44IDM2NC41Yy0yMiAwLTQyLjYtNi4yLTYwLjEtMTYuOWwwIDM3LjZjMCAuOS0uMiAxLjgtLjUgMi42cy0uOSAxLjYtMS41IDIuMi0xLjQgMS4xLTIuMiAxLjUtMS43IC41LTIuNiAuNWwtNDEuMyAwYy0uOSAwLTEuOC0uMi0yLjYtLjVzLTEuNi0uOS0yLjItMS41LTEuMS0xLjQtMS41LTIuMnoiXX0sSU10PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6Im9wZW5haSIsaWNvbjpbNTEyLDUxMixbXSwiZTdjZiIsIk0xOTYuNCAxODUuOGwwLTQ4LjZjMC00LjEgMS41LTcuMiA1LjEtOS4ybDk3LjgtNTYuM2MxMy4zLTcuNyAyOS4yLTExLjMgNDUuNi0xMS4zIDYxLjQgMCAxMDAuNCA0Ny42IDEwMC40IDk4LjMgMCAzLjYgMCA3LjctLjUgMTEuOEwzNDMuMyAxMTEuMWMtNi4xLTMuNi0xMi4zLTMuNi0xOC40IDBMMTk2LjQgMTg1Ljh6TTQyNC43IDM3NS4ybDAtMTE2LjJjMC03LjItMy4xLTEyLjMtOS4yLTE1LjlMMjg3IDE2OC40IDMyOSAxNDQuM2MzLjYtMiA2LjctMiAxMC4yIDBMNDM3IDIwMC43YzI4LjIgMTYuNCA0Ny4xIDUxLjIgNDcuMSA4NSAwIDM4LjktMjMgNzQuOC01OS40IDg5LjZsMCAwek0xNjYuMiAyNzIuOGwtNDItMjQuNmMtMy42LTItNS4xLTUuMS01LjEtOS4ybDAtMTEyLjZjMC01NC44IDQyLTk2LjMgOTguOC05Ni4zIDIxLjUgMCA0MS41IDcuMiA1OC40IDIwTDE3NS40IDEwOC41Yy02LjEgMy42LTkuMiA4LjctOS4yIDE1LjlsMCAxNDguNSAwIDB6bTkwLjQgNTIuMmwtNjAuMi0zMy44IDAtNzEuNyA2MC4yLTMzLjggNjAuMiAzMy44IDAgNzEuNy02MC4yIDMzLjh6bTM4LjcgMTU1LjdjLTIxLjUgMC00MS41LTcuMi01OC40LTIwbDEwMC45LTU4LjRjNi4xLTMuNiA5LjItOC43IDkuMi0xNS45bDAtMTQ4LjUgNDIuNSAyNC42YzMuNiAyIDUuMSA1LjEgNS4xIDkuMmwwIDExMi42YzAgNTQuOC00Mi41IDk2LjMtOTkuMyA5Ni4zbDAgMHpNMTczLjggMzY2LjVMNzYuMSAzMTAuMmMtMjguMi0xNi40LTQ3LjEtNTEuMi00Ny4xLTg1IDAtMzkuNCAyMy42LTc0LjggNTkuOS04OS42bDAgMTE2LjdjMCA3LjIgMy4xIDEyLjMgOS4yIDE1LjlsMTI4IDc0LjItNDIgMjQuMWMtMy42IDItNi43IDItMTAuMiAwem0tNS42IDg0Yy01Ny45IDAtMTAwLjQtNDMuNS0xMDAuNC05Ny4zIDAtNC4xIC41LTguMiAxLTEyLjNsMTAwLjkgNTguNGM2LjEgMy42IDEyLjMgMy42IDE4LjQgMGwxMjguNS03NC4yIDAgNDguNmMwIDQuMS0xLjUgNy4yLTUuMSA5LjJsLTk3LjggNTYuM2MtMTMuMyA3LjctMjkuMiAxMS4zLTQ1LjYgMTEuM2wwIDB6bTEyNyA2MC45YzYyIDAgMTEzLjctNDQgMTI1LjQtMTAyLjQgNTcuMy0xNC45IDk0LjItNjguNiA5NC4yLTEyMy40IDAtMzUuOC0xNS40LTcwLjctNDMtOTUuNyAyLjYtMTAuOCA0LjEtMjEuNSA0LjEtMzIuMyAwLTczLjItNTkuNC0xMjgtMTI4LTEyOC0xMy44IDAtMjcuMSAyLTQwLjQgNi43LTIzLTIyLjUtNTQuOC0zNi45LTg5LjYtMzYuOS02MiAwLTExMy43IDQ0LTEyNS40IDEwMi40LTU3LjMgMTQuOC05NC4yIDY4LjYtOTQuMiAxMjMuNCAwIDM1LjggMTUuNCA3MC43IDQzIDk1LjctMi42IDEwLjgtNC4xIDIxLjUtNC4xIDMyLjMgMCA3My4yIDU5LjQgMTI4IDEyOCAxMjggMTMuOCAwIDI3LjEtMiA0MC40LTYuNyAyMyAyMi41IDU0LjggMzYuOSA4OS42IDM2Ljl6Il19LEFNdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzaXRoIixpY29uOls0NDgsNTEyLFtdLCJmNTEyIiwiTTAgMzJsNjkuNyAxMTguOC01OC45LTExLjUgNjkuOCA5MWMtMyAxNy0zIDM0LjQgMCA1MS40bC02OS44IDkxIDU4LjktMTEuNS02OS43IDExOC44IDExOC44LTY5LjctMTEuNSA1OC45IDkxLTY5LjhjMTcgMyAzNC41IDMgNTEuNSAwbDkxIDY5LjgtMTEuNS01OC45IDExOC43IDY5LjctNjkuNy0xMTguOCA1OC45IDExLjUtNjkuOC05MWMzLTE3IDMtMzQuNCAwLTUxLjRsNjkuOC05MS01OC45IDExLjUgNjkuNy0xMTguOC0xMTguNyA2OS43IDExLjUtNTguOS05MS4xIDY5LjljLTguNS0xLjUtMTcuMS0yLjMtMjUuNy0yLjNzLTE3LjIgLjgtMjUuNyAyLjNMMTA3LjIgNDIuOCAxMTguOCAxMDEuNyAwIDMyek0yMjQgMzgwLjJhMTI0LjIgMTI0LjIgMCAxIDEgMC0yNDguNCAxMjQuMiAxMjQuMiAwIDEgMSAwIDI0OC40em0wLTIxMS44YTg3LjYgODcuNiAwIDEgMCAwIDE3NS4xIDg3LjYgODcuNiAwIDEgMCAwLTE3NS4xeiJdfSxOTXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToianVsaWEiLGljb246WzY0MCw1MTIsW10sImU4NTIiLCJNMTI0IDQwNi41YzAgMTYuMS0xLjggMjkuMS01LjQgMzlzLTguOCAxNy42LTE1LjUgMjMuMS0xNC43IDkuMS0yNC4xIDExLTE5LjggMi44LTMxLjIgMi44Yy0xNS41IDAtMjcuMy0yLjQtMzUuNS03LjNTMCA0NjQuNSAwIDQ1Ny43YzAtNS42IDIuMy0xMC40IDYuOS0xNC4zczEwLjgtNS44IDE4LjUtNS44YzUuOCAwIDEwLjQgMS42IDEzLjkgNC43czYuMyA2LjIgOC42IDkuM2MyLjYgMy40IDQuOCA1LjYgNi41IDYuOHMzLjQgMS43IDQuOCAxLjdjMy4xIDAgNS40LTEuOCA3LTUuNHMyLjQtMTAuNyAyLjQtMjEuMmwwLTE5OC43IDU1LjQtMTUuMiAwIDE4Ni45em03OC45LTE4MS42bDAgMTI3LjljMCAzLjYgLjcgNi45IDIuMSAxMHMzLjMgNS44IDUuNyA4LjEgNS4yIDQuMSA4LjUgNS40IDYuNyAyLjEgMTAuNCAyLjFjNC4yIDAgOC45LTIuMyAxNC43LTYuNCA5LjItNi40IDE0LjctMTAuOSAxNC43LTE2LjFsMC0xMzEgNTUuMSAwIDAgMTgxLjYtNTUuMSAwIDAtMTYuOWMtNy4zIDYuMS0xNSAxMS0yMy4yIDE0LjdzLTE2LjIgNS42LTIzLjkgNS42Yy05IDAtMTcuNC0xLjUtMjUuMS00LjVzLTE0LjUtNy0yMC4zLTEyLjItMTAuNC0xMS4yLTEzLjctMTguMWMtMy4zLTYuOS01LTE0LjMtNS0yMi4ybDAtMTI3LjkgNTUuMSAwek0zOTEuNCA0MDYuNWwtNTQuOSAwIDAtMjU0LjYgNTQuOS0xNS4yIDAgMjY5Ljh6bTIyLjktMTcxLjdsNTUuMS0xNS4yIDAgMTg2LjktNTUuMSAwIDAtMTcxLjd6bTE3MC4zIDc3LjljLTUuMyAyLjMtMTAuNyA0LjktMTYuMSA3LjlzLTEwLjMgNi4yLTE0LjcgOS44LTggNy4zLTEwLjggMTEuNC00LjEgOC4yLTQuMSAxMi42YzAgMy40IC40IDYuNiAxLjMgOS44czIuMSA1LjggMy44IDguMSAzLjQgNC4xIDUuMyA1LjQgNCAyLjEgNi4zIDIuMWM0LjUgMCA5LjEtMS40IDEzLjctNC4xczkuNy02LjIgMTUuNC0xMC40bDAtNTIuNXpNNjQwIDQwNi41bC01NS40IDAgMC0xNC41Yy0zLjEgMi42LTYgNS04LjkgNy4xcy02LjIgNC4xLTkuOCA1LjctNy43IDIuOS0xMi4yIDMuOGMtNC41IC45LTkuOCAxLjMtMTUuOSAxLjMtOC40IDAtMTUuOS0xLjItMjIuNi0zLjYtNi43LTIuNC0xMi40LTUuNy0xNy05LjlzLTguMy05LjEtMTAuOC0xNC45Yy0yLjUtNS43LTMuOC0xMi0zLjgtMTguNyAwLTYuOSAxLjMtMTMuMiA0LTE4LjkgMi43LTUuNiA2LjMtMTAuNyAxMC45LTE1LjIgNC42LTQuNSA5LjktOC41IDE2LjEtMTIuMXMxMi43LTYuOCAxOS43LTkuOCAxNC4zLTUuNyAyMS45LTguMiAxNS4xLTQuOSAyMi41LTcuMWw2LTEuNSAwLTE3LjljMC0xMS42LTIuMi0xOS44LTYuNi0yNC43cy0xMC40LTcuMy0xNy44LTcuM2MtOC43IDAtMTQuOCAyLjEtMTguMSA2LjNzLTUuMSA5LjMtNS4xIDE1LjJjMCAzLjQtLjQgNi43LTEuMSA5LjktLjcgMy4yLTIgNi0zLjcgOC41cy00LjMgNC40LTcuNiA1LjhjLTMuMyAxLjUtNy41IDIuMi0xMi41IDIuMi03LjcgMC0xNC0yLjItMTguOS02LjYtNC44LTQuNC03LjMtMTAtNy4zLTE2LjggMC02LjMgMi4xLTEyLjEgNi40LTE3LjUgNC4zLTUuNCAxMC0xMCAxNy4zLTEzLjkgNy4zLTMuOSAxNS42LTYuOSAyNS4xLTkuMnMxOS42LTMuNCAzMC4yLTMuNGMxMy4xIDAgMjQuMyAxLjIgMzMuNyAzLjVzMTcuMiA1LjcgMjMuMyAxMCAxMC42IDkuNiAxMy41IDE1LjcgNC40IDEzIDQuNCAyMC42bDAgMTM2LjF6TTYwIDE3Mi45YTM3LjQgMzcuNCAwIDEgMSA3NC45IDAgMzcuNCAzNy40IDAgMSAxIC03NC45IDB6TTQ1Mi4yIDk1YTM3LjQgMzcuNCAwIDEgMSA3NC45IDAgMzcuNCAzNy40IDAgMSAxIC03NC45IDB6bTQ1IDc3LjlhMzcuNCAzNy40IDAgMSAxIDc0LjkgMCAzNy40IDM3LjQgMCAxIDEgLTc0LjkgMHptLTg5LjkgMGEzNy40IDM3LjQgMCAxIDEgNzQuOSAwIDM3LjQgMzcuNCAwIDEgMSAtNzQuOSAweiJdfSxSTXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToibmZjLWRpcmVjdGlvbmFsIixpY29uOls1MTIsNTEyLFtdLCJlNTMwIiwiTTIxMS44IDQ4OC42YzEuNiAyLjUgMi4xIDUuNiAxLjQgOC41LS42IDIuOS0yLjQgNS41LTQuOSA3LjEtMi42IDEuNi01LjYgMi4xLTguNiAxLjUtNjEuNC0xMy45LTExNS42LTQ5LjktMTUyLjItMTAxLjJTLTUuNCAyOTAuMyAxLjYgMjI3LjdjNy02Mi43IDM2LjgtMTIwLjUgODMuNy0xNjIuNSA0Ni45LTQyIDEwNy43LTY1LjIgMTcwLjctNjUuMiAxLjUgMCAyLjEgLjMgNC4zIC45IDEuNCAuNiAxLjggMS40IDMuNyAyLjUgMS4xIDEuMSAxLjkgMi4zIDIuNSAzLjcgLjUgMS40IC44IDIuOCAuOCA0LjNsMCAxMDEgMjQuNS0yNS45YzEtMS4xIDIuMi0yIDMuNi0yLjYgMS4zLS42IDIuOC0uOSA0LjMtMSAxLjUtLjEgMi45IC4yIDQuMyAuN3MyLjcgMS4zIDMuOCAyLjRjMSAxIDEuOSAyLjIgMi41IDMuNiAuNiAxLjMgMSAyLjggMSA0LjNzLS4yIDMtLjcgNC4zYy0uNiAxLjQtMS40IDIuNi0yLjQgMy43bC00NCA0Ni42Yy0xLjEgMS4xLTIuMyAyLTMuNyAyLjYtMS41IC42LTMgLjktNS40IC45LS42IDAtMi4yLS4zLTMuNi0uOXMtMi43LTEuNS0zLjctMi42bC00NC4xLTQ2LjZjLTItMi4yLTMuMS01LjEtMy04LjEgMC0zIDEuMy02LjcgMy41LTcuOSAyLjItMi4xIDUuMS0zLjIgOC4xLTMuMSAzIC4xIDUuOCAxLjMgNy45IDMuNWwyNC41IDI2IDAtODkuNWMtNTYuNCAyLjgtMTA5LjggMjUuOC0xNTAuNSA2NS00MC42IDM5LjEtNjUuNyA5MS43LTcwLjYgMTQ3LjlTMzQuNCAzNDguMSA2Ny43IDM5My43YzMyLjQgNDUuNSA4MiA3Ny41IDEzNyA4OS45IDIuOSAuNyA1LjUgMi41IDcuMSA1ek0xNzEuNCAxMjYuMWMtLjggMS4zLTEuOSAyLjQtMy4xIDMuMi0yMC41IDEzLjktMzcuMiAzMi42LTQ4LjggNTQuNXMtMTcuNyA0Ni4zLTE3LjcgNzEuMSA2LjEgNDkuMiAxNy43IDcwLjJjMTEuNiAyMi44IDI4LjMgNDEuNSA0OC44IDU1LjQgMi41IDEuNyA0LjIgNC4zIDQuNyA3LjMgLjYgMi45LS45IDYtMS43IDguNC0xLjcgMi41LTUuMiA0LjItNy4zIDMuOS0yLjkgMS40LTYgLjgtOC40LS45LTIzLjYtMTYtNDIuOC0zNy41LTU2LjEtNjIuNy0xMy4zLTI1LjEtMjAuMy01My4xLTIwLjMtODEuNiAwLTI4LjQgNy01Ni41IDIwLjMtODEuNiAxMy4zLTI1LjIgMzIuNS00Ni43IDU2LjEtNjIuNyAxLjItLjggMi42LTEuNCA0LTEuOCAxLjUtLjMgMy0uMyA0LjUgMCAxLjQgLjIgMi44IC44IDQuMSAxLjZzMi4zIDEuOSAzLjIgMy4xYy44IDEuMiAxLjQgMi42IDEuNyA0LjFzLjMgMyAwIDQuNGMtLjMgMS41LS44IDIuOS0xLjcgNC4xek0zNDAuOSAzODMuNWMuOC0xLjIgMS45LTIuMyAyLjItMy4xbDAtLjFjMjEuMy0xNCAzOC0zMi43IDQ5LjYtNTQuNiAxMS41LTIxLjggMTcuNS00Ni4yIDE3LjUtNzAuOXMtNi00OS4xLTE3LjUtNzFjLTExLjYtMjIuNy0yOC4zLTQwLjUtNDkuNi01NC41LS4zLS44LTEuNC0xLjktMi4yLTMuMS0uOC0xLjMtMS40LTIuNy0xLjYtNC4xLTEuMi0xLjUtLjMtMyAwLTQuNCAuMy0xLjUgLjktMi45IDEuNy00LjEgLjktMS4yIDEuMS0yLjMgMy4yLTMuMSAxLjItLjggMi42LTEuMyA0LjEtMS42czIuOS0uMyA0LjQgMCAyLjggLjkgNC4xIDEuOGMyMy40IDE2IDQyLjcgMzcuNSA1NS45IDYyLjYgMTMuMyAyNS4xIDE5LjQgNTMuMSAxOS40IDgxLjUgMCAyOC41LTYuMSA1Ni41LTE5LjQgODEuNi0xMy4yIDI1LjEtMzIuNSA0Ni42LTU1LjkgNjIuNi0xLjMgLjktMi42IDEuNS00LjEgMS44cy0yLjkgLjMtNC40IDAtMi45LTEuNy00LjEtMS42Yy0yLjEtLjgtMi4zLTEuOS0zLjItMy4xLS44LTEuMi0xLjQtMi42LTEuNy00LjEtLjMtMS40LTEuMi0yLjkgMC00LjQgLjItMS40IC44LTIuOCAxLjYtNC4xek0zMTIuMyA2LjNjNTYuMiAxMi43IDEwNi40IDQ0IDE0Mi43IDg4LjcgMzAuNCAzNy42IDQ5LjYgODMgNTUuMyAxMzEgNS42IDQ4LTIuNCA5Ni43LTIzLjIgMTQwLjMtMjAuOSA0My42LTUzLjYgODAuNS05NC41IDEwNi4zLTQwLjkgMjUuNy04OC4yIDM5LjQtMTM2LjYgMzkuNC0xLjUgMC0yLjktLjMtNC4zLS45LTEuNC0uNS0yLjYtMS40LTMuNy0yLjQtMS45LTEuMS0xLjktMi4zLTIuNC0zLjctLjYtMS40LS45LTIuOC0uOS00LjNsMC05OS4yLTI0LjUgMjZjLTIuMSAyLjItNC45IDIuNi03LjkgMy42LTMgLjEtNS45LTEuMS04LjEtNC0yLjItMS4yLTMuNS00LTMuNS03LS4xLTMgMS01LjkgMy04LjFsNDQuMS00Ni42YzEuMy0yLjIgNS4xLTMuNCA3LjMtMy40IDQgMCA2LjkgMS4yIDkuMSAzLjRsNDQgNDYuNmMyLjEgMi4yIDMuMiA1LjEgMy4xIDguMXMtMS40IDUuOC0zLjUgN2MtMi4yIDIuOS01LjEgNC4xLTguMSA0LTMtMS01LjktMS40LTcuOS0zLjZsLTI0LjUtMjUuOSAwIDg3LjVjNTYuNC0yLjggMTA5LjgtMjUuOCAxNTAuNS02NSA0MC43LTQwIDY1LjgtOTEuNyA3MC43LTE0Ny45IDQuOC01Ny4xLTEwLjgtMTEyLjMtNDQuMS0xNTcuOS0zMy4zLTQ1LjYtODItNzcuNS0xMzctODkuOS0xLjUtLjMtMi44LS45LTQuMS0xLjgtMS4yLS45LTIuMi0xLjktMy0zLjItLjgtMS4yLTIuMi0yLjYtMS42LTQuMS0uMi0xLjUtLjItMyAuMS00LjQgLjQtMS40IDEtMi44IDEuOC00IC45LTEuMiAyLTIuMiAzLjItMyAxLjMtLjggMi43LTEuMyA0LjEtMS42IDEuNS0uMyAzLS4yIDQuNCAuMXptNDAuOCAyNDkuOGMwIDMxLjQtMTcuNSA2MS4xLTQ5LjMgODMuNS0yLjEgMS41LTQuOCAyLjMtNy40IDItMi43LS4yLTUuMi0xLjMtNy0zLjJsLTcwLjEtNjkuOGMtMi4yLTIuMS00LjItNS0zLjQtOCAwLTMgMS4yLTUuOSAzLjMtOCAyLjItMi4xIDUtMy4zIDgtMy4zczUuOSAxLjIgOCAzLjNsNjMuMSA2Mi44YzIwLjgtMTcuMSAzMi4yLTM3LjkgMzIuMi01OS4zIDAtMjMuOS0xNC4xLTQ3LTM5LjctNjUuMS0yLjUtMS43LTQuMS00LjMtNC42LTcuMy0uNS0yLjkgLjEtNiAxLjktOC40IDEuNy0yLjUgNC4zLTQuMSA3LjMtNC42IDIuOS0uNSA2IC4xIDguNCAxLjkgMzEuOCAyMi40IDQ5LjMgNTIuMSA0OS4zIDgzLjV6TTIxNi43IDM0MS41Yy0zIC41LTYtLjItOC41LTEuOS0zMS43LTIyLjQtNTAuMS01Mi4xLTUwLjEtODMuNXMxOC40LTYxLjEgNTAuMS04My41YzIuMi0xLjYgNC45LTIuMyA3LjUtMi4xIDIuNyAuMyA1LjEgMS40IDcgMy4zbDcwLjEgNjkuOGMyLjEgMi4xIDMuMyA1IDMuMyA4cy0yIDUuOC0zLjMgOGMtMi4xIDIuMS01IDMuMy03LjkgMy4zLTMgMC02LjgtMS4yLTgtMy4zbC02My4xLTYyLjljLTIwLjkgMTcuMy0zMi4yIDM4LTMyLjIgNTkuNCAwIDIzIDE0LjEgNDcgMzkuNyA2NSAyLjQgMS44IDQuMSA0LjQgNC42IDcuNCAuNSAyLjktLjIgNS45LTEuOSA4LjQtMS43IDIuNC00LjQgNC4xLTcuMyA0LjZ6Il19LE9NdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJjcmVhdGl2ZS1jb21tb25zLWJ5IixpY29uOls1MTIsNTEyLFtdLCJmNGU3IiwiTTMyMi45IDE5NC40bDAgMTAxLjQtMjguMyAwIDAgMTIwLjUtNzcuMSAwIDAtMTIwLjQtMjguMyAwIDAtMTAxLjVjMC00LjQgMS42LTguMiA0LjYtMTEuMyAzLjEtMy4xIDYuOS00LjcgMTEuMy00LjdsMTAxLjkgMGM0LjEgMCA3LjggMS42IDExLjEgNC43IDMuMSAzLjIgNC44IDYuOSA0LjggMTEuM3ptLTMyLjUtNjQuNWEzNC41IDM0LjUgMCAxIDEgLTY5IC44IDM0LjUgMzQuNSAwIDEgMSA2OS0uOHpNMjU1LjYgOEMzOTcuNCA4IDUwNCAxMTguMSA1MDQgMjU2IDUwNCA0MDMuMSAzODUuNSA1MDQgMjU1LjYgNTA0IDEyMS42IDUwNCA4IDM5NC41IDggMjU2IDggMTIzLjEgMTEyLjcgOCAyNTUuNiA4em0uOCA0NC43Yy0xMTguMiAwLTIwMy43IDk3LjktMjAzLjcgMjAzLjMgMCAxMDkuOCA5MS4yIDIwMi44IDIwMy43IDIwMi44IDEwMy4yIDAgMjAyLjgtODEuMSAyMDIuOC0yMDIuOCAuMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zeiJdfSxGTXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToidW1icmFjbyIsaWNvbjpbNTEyLDUxMixbXSwiZjhlOCIsIk0yNTYuMyA4YTI0OCAyNDggMCAxIDAgLS43IDQ5NiAyNDggMjQ4IDAgMSAwIC43LTQ5NnptMTQ1IDI2NmMtLjggMjcuMS01LjQgNDguOC0xNCA2NXMtMjMuMSAyNy45LTQzLjUgMzVjLTIwLjQgNy4xLTQ4LjkgMTAuNi04NS40IDEwLjVsLTQuNiAwYy0zNi41IC4xLTY1LTMuMy04NS40LTEwLjVzLTM0LjktMTguOC00My41LTM1Yy04LjYtMTYuMi0xMy4yLTM3LjktMTQtNjUtLjctMTAuMi0uNy0yMC41IDAtMzAuNyAuNC0xNC43IDEuNi0yOS4zIDMuNi00My45IDEuOS0xMy40IDMuNi0yMi42IDUuNC0zMiAxLTQuOSAxLjMtNi40IDEuOC04LjQgLjMtMS4xIC45LTIuMSAxLjgtMi44czItMS4xIDMuMS0xLjFsLjcgMCAzMiA1YzEuMiAuMiAyLjIgLjggMyAxLjdzMS4yIDIuMSAxLjIgMy4zYzAgLjMgMCAuNSAwIC44bC0xLjcgOC44Yy0xLjYgOC44LTMuMiAyMC4xLTQuOCAzMy43LTEuNyAxNC0yLjUgMjguMS0yLjYgNDIuMi0uMiAyNyAyLjUgNDYuOSA4LjEgNTkuOCAyLjggNi40IDcuMiAxMiAxMi42IDE2LjRzMTEuOSA3LjQgMTguNyA4LjhjMTguOCA0IDM4LjEgNS43IDU3LjMgNS4xbDEwLjMgMGMxOS4yIC42IDM4LjUtMS4yIDU3LjMtNS4yIDYuOC0xLjQgMTMuMi00LjUgMTguNi04LjhzOS43LTEwIDEyLjUtMTYuNGM1LjctMTIuOSA4LjQtMzIuOSA4LjEtNTkuOC0uMS0xNC4xLTEtMjguMi0yLjYtNDIuMS0xLjctMTMuNi0zLjMtMjQuOC00LjktMzMuN2wtMS43LTguOGMwLS4zIDAtLjUgMC0uOCAwLTEuMiAuNC0yLjQgMS4yLTMuM3MxLjgtMS41IDMtMS43bDMyLTUgLjggMGMxLjEgMCAyLjIgLjQgMy4xIDEuMXMxLjUgMS43IDEuOCAyLjhjLjYgMiAuOCAzLjYgMS44IDguNCAxLjggOS42IDMuNSAxOC44IDUuNCAzMiAyIDE0LjYgMy4yIDI5LjIgMy42IDQzLjkgLjcgMTAuMiAuNyAyMC41IDAgMzAuN2wwIDB6Il19LEJNdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJob29saSIsaWNvbjpbNjQwLDUxMixbXSwiZjQyNyIsIk0xNDQuNSAzNTJsMzguMyAuOGMtMTMuMi00LjYtMjYtMTAuMi0zOC4zLTE2LjhsMCAxNnptNTcuNy01LjNsMCA1LjMtMTkuNCAuOGMzNi41IDEyLjUgNjkuOSAxNC4yIDk0LjcgNy4yLTE5LjkgLjItNDUuOC0yLjYtNzUuMy0xMy4zek02MTEuMSAyMzEuNWMxNS45IDAgMjguOS0xMi45IDI4LjktMjguOXMtMTIuOS0yNC41LTI4LjktMjQuNWMtMTUuOSAwLTI4LjkgOC42LTI4LjkgMjQuNXMxMi45IDI4LjkgMjguOSAyOC45ek01ODIuMSAzNTJsNTcuOSAwIDAtMTEwLjUtNTcuOSAwIDAgMTEwLjV6bS03My43IDBsNTcuOSAwIDAtMTk1LjMtNTcuOSAyNy4zIDAgMTY4em0tMzEtMTE5LjRjLTE4LjItMTguMi01MC40LTE3LjEtNTAuNC0xNy4xcy0zMi4zLTEuMS01MC40IDE3LjFjLTE4LjIgMTguMi0xNi44IDMzLjktMTYuOCA1Mi42cy0xLjQgMzQuMyAxNi44IDUyLjUgNTAuNCAxNy4xIDUwLjQgMTcuMSAzMi4zIDEuMSA1MC40LTE3LjFjMTguMi0xOC4yIDE2LjgtMzMuOCAxNi44LTUyLjUtLjEtMTguOCAxLjMtMzQuNS0xNi44LTUyLjZ6bS0zOS44IDcxLjljMCAzLjYtMS44IDEyLjUtMTAuNyAxMi41cy0xMC43LTguOS0xMC43LTEyLjVsMC00MC40YzAtOC43IDcuMy0xMC45IDEwLjctMTAuOXMxMC43IDIuMSAxMC43IDEwLjlsMCA0MC40ek0zMzEuNCAyMzIuNmMtMTguMi0xOC4yLTUwLjQtMTcuMS01MC40LTE3LjFzLTMyLjItMS4xLTUwLjQgMTcuMWMtMS45IDEuOS0zLjcgMy45LTUuMyA2LTM4LjItMjkuNi03Mi41LTQ2LjUtMTAyLjEtNjEuMWwwLTIwLjctMjIuNSAxMC42Yy01NC40LTIyLjEtODktMTguMi05Ny4zIC4xIDAgMC0yNC45IDMyLjggNjEuOCAxMTAuOGwwIDczLjcgNTcuOSAwIDAtMjguNmMtNi41LTQuMi0xMy04LjctMTkuNC0xMy42LTE0LjgtMTEuMi0yNy40LTIxLjYtMzguNC0zMS40bDAtMzFjMTMuMSAxNC43IDMwLjUgMzEuNCA1My40IDUwLjNsNC41IDMuNiAwLTI5LjhjMC02LjkgMS43LTE4LjIgMTAuOC0xOC4yczEwLjYgNi45IDEwLjYgMTVsMCA0OC43YzE4IDEyLjIgMzcuMyAyMi4xIDU3LjcgMjkuNmwwLTkzLjljMC0xOC43LTEzLjQtMzcuNC00MC42LTM3LjQtMTUuOC0uMS0zMC41IDguMi0zOC41IDIxLjlsMC01NC4zYzQxLjkgMjAuOSA4My45IDQ2LjUgOTkuOSA1OC4zLTEwLjIgMTQuNi05LjMgMjguMS05LjMgNDMuNyAwIDE4LjctMS40IDM0LjMgMTYuOCA1Mi41czUwLjQgMTcuMSA1MC40IDE3LjEgMzIuMyAxLjEgNTAuNC0xNy4xYzE4LjItMTguMiAxNi43LTMzLjggMTYuNy01Mi41IDAtMTguNSAxLjUtMzQuMi0xNi43LTUyLjN6TTY1LjIgMTg0bDAgNjMuM2MtNDguNy01NC41LTM4LjktNzYtMzUuMi03OS4xIDEzLjUtMTEuNCAzNy41LTggNjQuNCAyLjFMNjUuMiAxODR6TTI5MS43IDMwNC41YzAgMy42LTEuOCAxMi41LTEwLjcgMTIuNXMtMTAuNy04LjktMTAuNy0xMi41bDAtNDAuNGMwLTguNyA3LjMtMTAuOSAxMC43LTEwLjlzMTAuNyAyLjEgMTAuNyAxMC45bDAgNDAuNHoiXX0sQzhlPXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNxdWFyZS1naXQiLGljb246WzQ0OCw1MTIsWyJnaXQtc3F1YXJlIl0sImYxZDIiLCJNMTIwLjggMzM1LjVjLTUuOS0uNC0xMi42LS44LTIwLjItMS4zLTMuMyA0LjEtNi42IDguNC02LjYgMTMuNSAwIDE4LjUgNjUuNSAxOC41IDY1LjUtMS41IDAtOC4zLTcuNC04LjctMzguOC0xMC43bC4xIDB6bTcuOC0xMTcuOWMtMzIuMyAwLTMzLjcgNDQuNS0uNyA0NC41IDMyLjUgMCAzMS43LTQ0LjUgLjctNDQuNXpNMzg0IDMyTDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjR6TTI0My45IDE3Mi4yYy0xNC41IDAtMjIuOS04LjQtMjIuOS0yMi45czguNC0yMi4zIDIyLjktMjIuM2MxNC43IDAgMjMuMSA3LjggMjMuMSAyMi4zcy04LjQgMjIuOS0yMy4xIDIyLjl6TTE0OS42IDE5NWw0OS41IDAgMCAyMS42LTIzLjQgMS44YzQuNiA1LjggOS40IDE0IDkuNCAyNS43IDAgNDguNy01Ny4yIDQ3LjItNzQuMiA0Mi40bC04LjQgMTMuNGM1IC4zIDkuOCAuNiAxNC4zIC44IDU2LjMgMy4yIDgwLjUgNC42IDgwLjUgMzguNSAwIDI5LjItMjUuNyA0NS43LTY5LjkgNDUuNy00NiAwLTYzLjUtMTEuNi02My41LTMxLjcgMC0xMS40IDUuMS0xNy41IDE0LTI1LjktOC40LTMuNS0xMS4yLTkuOS0xMS4yLTE2LjggMC05LjYgNy40LTE2LjMgMjMtMzAuNmwuMi0uMmMtMTIuNC02LjEtMjEuOC0xOS4zLTIxLjgtMzguMSAwLTUxLjYgNTYuNi01My4zIDgxLjYtNDYuOGwtLjEgLjJ6TTI3MC41IDMwMy4xbDEzIDEuOCAwIDIwLjEtNzIuNCAwIDAtMjAuMWMyLjctLjQgNS0uNyA2LjktLjkgOS45LTEuMiAxMC4xLTEuMyAxMC4xLTZsMC03NC43YzAtNC40LS45LTQuNy0xMC4xLTcuOC0xLjktLjctNC4yLTEuNC02LjktMi40bDIuOC0yMC42IDUyLjYgMCAwIDEwNS41YzAgNC4xIC4yIDQuNiA0LjEgNS4xbC0uMSAwem0xMDYuNi0xMC40TDM4NCAzMTVjLTEwLjkgNS40LTI2LjkgMTAuMi00MS40IDEwLjItMzAuMiAwLTQxLjctMTIuMi00MS43LTQwLjlsMC02Ni42YzAtLjggMC0xLjQtLjItMS44LS44LTEuMi00LjItLjctMTkuNi0uN2wwLTIyLjZjMjIuMy0yLjUgMzEuMi0xMy43IDM0LTQxLjRsMjQuMiAwYzAgMzMuMy0uNiAzOCAuNyAzOC42IC4zIC4xIC43IDAgMS4zIDBsMzUuOCAwIDAgMjUuNC0zNy44IDAgMCA2MS42Yy0uMiA2LjMtLjkgMzAuNCAzNy45IDE1LjlsLS4xIDB6Il19LEhNdD1DOGUscU10PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6Im9kbm9rbGFzc25pa2kiLGljb246WzMyMCw1MTIsW10sImYyNjMiLCJNMjc1LjEgMzM0Yy0yNy40IDE3LjQtNjUuMSAyNC4zLTkwIDI2LjlsMjAuOSAyMC42IDc2LjMgNzYuM2MyNy45IDI4LjYtMTcuNSA3My4zLTQ1LjcgNDUuNy0xOS4xLTE5LjQtNDcuMS00Ny40LTc2LjMtNzYuNkw4NCA1MDMuNGMtMjguMiAyNy41LTczLjYtMTcuNi00NS40LTQ1LjcgMTkuNC0xOS40IDQ3LjEtNDcuNCA3Ni4zLTc2LjNsMjAuNi0yMC42Yy0yNC42LTIuNi02Mi45LTkuMS05MC42LTI2LjktMzIuNi0yMS00Ni45LTMzLjMtMzQuMy01OSA3LjQtMTQuNiAyNy43LTI2LjkgNTQuNi01LjcgMCAwIDM2LjMgMjguOSA5NC45IDI4LjlTMjU1IDI2OS4yIDI1NSAyNjkuMmMyNi45LTIxLjEgNDcuMS04LjkgNTQuNiA1LjcgMTIuNCAyNS43LTEuOSAzOC0zNC41IDU5LjF6bTE0LjYtMjA0LjdhMTI5LjcgMTI5LjcgMCAxIDEgLTI1OS40IC40IDEyOS43IDEyOS43IDAgMSAxIDI1OS40LS40em0tMTkzLjQgLjRhNjMuNyA2My43IDAgMSAwIDEyNy40LS40IDYzLjcgNjMuNyAwIDEgMCAtMTI3LjQgLjR6Il19LGpNdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJkcnVwYWwiLGljb246WzM4NCw1MTIsW10sImYxYTkiLCJNMjcyLjMgMTA4LjFDMjM2LjUgNzIuNSAyMDIuNSAzOC40IDE5Mi40IDAgMTgyLjQgMzguNCAxNDguMSA3Mi41IDExMi40IDEwOC4xIDU4LjggMTYxLjctMS45IDIyMi40LTEuOSAzMTMuNC00LjMgNDIwLjcgODAuOCA1MDkuNiAxODguMSA1MTJzMTk2LjItODIuOCAxOTguNS0xOTAuMWMuMS0yLjggLjEtNS42IDAtOC41IDAtOTEuMS02MC44LTE1MS43LTExNC4zLTIwNS4zek05OCAzMzEuMWMtNS45IDcuNS0xMSAxNS42LTE1LjIgMjQuMi0uMyAuNy0uOCAxLjMtMS4zIDEuOHMtMS4yIC44LTIgMWwtMS43IDBjLTQuMyAwLTkuMi04LjUtOS4yLTguNS0xLjMtMi0yLjUtNC4yLTMuNy02LjRsLS44LTEuOGMtMTEuMi0yNS43LTEuNS02Mi4zLTEuNS02Mi4zIDQuOC0xNy44IDEyLjctMzQuNyAyMy4yLTQ5LjkgNi40LTkuNiAxMy41LTE4LjkgMjEtMjcuN2w5LjIgOS4yIDQzLjUgNDQuNGMuOCAuOSAxLjMgMi4xIDEuMyAzLjNzLS41IDIuNC0xLjMgMy4zTDExNC4xIDMxMi4zIDk4IDMzMS4xem05Ni42IDEyNy4zYy0xMi45LS4xLTI1LjYtMy45LTM2LjQtMTFzLTE5LjQtMTcuMS0yNC42LTI4LjktNy0yNC45LTUtMzcuNyA3LjYtMjQuNyAxNi4yLTM0LjRjMTQuMi0xNi45IDMxLjUtMzMuNSA1MC4zLTU1LjMgMjIuMyAyMy44IDM2LjkgNDAuMSA1MS4yIDU4IDEuMSAxLjQgMi4xIDIuOSAzIDQuNCA3LjggMTEuMSAxMiAyNC40IDEyIDM4IDAgOC44LTEuNyAxNy40LTUgMjUuNXMtOC4yIDE1LjUtMTQuNCAyMS43LTEzLjUgMTEuMS0yMS42IDE0LjUtMTYuNyA1LjEtMjUuNSA1LjFsLS4yIDB6TTMyMC43IDM1MS42Yy0uNCAxLjQtMS4yIDIuNi0yLjMgMy42cy0yLjQgMS42LTMuOCAxLjhsLTEuMyAwYy0yLjYtLjktNC45LTIuNy02LjMtNS4xLTExLjYtMTcuNS0yNC45LTMzLjktMzkuNS00OWwtMTcuOC0xOC40LTU5LjEtNjEuM2MtMTIuNC0xMS41LTI0LjItMjMuNi0zNS40LTM2LjMtLjMtLjUtLjYtLjktLjktMS40LTItMi44LTMuNi01LjktNC43LTkuMmwwLTEuOGMtLjgtNS0uNC0xMC4xIDEuMi0xNXM0LjQtOS4yIDgtMTIuN2MxMS40LTExLjQgMjMtMjMgMzMuOC0zNC45IDEyIDEzLjMgMjQuOCAyNiAzNy40IDM4LjYgMjUuOCAyNCA0OS4xIDUwLjUgNjkuNiA3OS4xIDE3LjMgMjQuNSAyNi43IDUzLjggMjcgODMuOC0uMSAxMi45LTIuMiAyNS44LTYgMzguMnoiXX0sVk10PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImJsb2dnZXItYiIsaWNvbjpbNDQ4LDUxMixbXSwiZjM3ZCIsIk00NDYuNiAyMjIuN2MtMS44LTgtNi44LTE1LjQtMTIuNS0xOC41LTEuOC0xLTEzLTIuMi0yNS0yLjctMjAuMS0uOS0yMi4zLTEuMy0yOC43LTUtMTAuMS01LjktMTIuOC0xMi4zLTEyLjktMjkuNS0uMS0zMy0xMy44LTYzLjctNDAuOS05MS4zLTE5LjMtMTkuNy00MC45LTMzLTY1LjUtNDAuNS01LjktMS44LTE5LjEtMi40LTYzLjMtMi45LTY5LjQtLjgtODQuOCAuNi0xMDguNCAxMC00My41IDE3LjItNzQuNyA1My44LTg2LjEgMTAwLjYtMi4xIDguOC0yLjYgMjIuOS0zLjEgMTAzLjktLjYgMTAxLjUgLjEgMTE2LjQgNi40IDEzNi41IDE1LjYgNDkuNiA1OS45IDg2LjMgMTA0LjQgOTQuMyAxNC44IDIuNyAxOTcuMyAzLjMgMjE2IC44IDMyLjUtNC40IDU4LTE3LjUgODEuOS00MS45IDE3LjMtMTcuNyAyOC4xLTM2LjggMzUuMi02Mi4xIDQuOS0xNy42IDQuNS0xNDIuOCAyLjUtMTUxLjd6TTEyNC41IDE1OS4xYzcuOC03LjkgMTAtOC4yIDU4LjgtOC4yIDQzLjkgMCA0NS40IC4xIDUxLjggMy40IDkuMyA0LjcgMTMuNCAxMS4zIDEzLjQgMjEuOSAwIDkuNS0zLjggMTYuMi0xMi4zIDIxLjYtNC42IDIuOS03LjMgMy4xLTUwLjMgMy4zLTI2LjUgLjItNDcuNy0uNC01MC44LTEuMi0xNi42LTQuNy0yMi44LTI4LjUtMTAuNi00MC44ek0zMTYuMyAzNTguOWwtMTQuOSAyLjQtNzcuNSAuOWMtNjguMSAuOC04Ny4zLS40LTkwLjktMi03LjEtMy4xLTEzLjgtMTEuNy0xNC45LTE5LjQtMS4xLTcuMyAyLjYtMTcuMyA4LjItMjIuNCA3LjEtNi40IDEwLjItNi42IDk3LjMtNi43IDg5LjYtLjEgODkuMS0uMSA5Ny42IDcuOCAxMi4xIDExLjMgOS41IDMxLjItNC45IDM5LjR6Il19LFVNdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJpbnZpc2lvbiIsaWNvbjpbNDQ4LDUxMixbXSwiZjdiMCIsIk00MDcuNCAzMkw0MC42IDMyQzE4LjIgMzIgMCA1MC4yIDAgNzIuNkwwIDQzOS40QzAgNDYxLjggMTguMiA0ODAgNDAuNiA0ODBsMzY2LjggMGMyMi40IDAgNDAuNi0xOC4yIDQwLjYtNDAuNmwwLTM2Ni44QzQ0OCA1MC4yIDQyOS44IDMyIDQwNy40IDMyek0xNzYuMSAxNDUuNmMuNCAyMy40LTIyLjQgMjcuMy0yNi42IDI3LjQtMTQuOSAwLTI3LjEtMTItMjcuMS0yNyAuMS0zNS4yIDUzLjEtMzUuNSA1My43LS40ek0zMzIuOCAzNzdjLTY1LjYgMC0zNC4xLTc0LTI1LTEwNi42IDE0LjEtNDYuNC00NS4yLTU5LTU5LjkgLjdsLTI1LjggMTAzLjMtNDUuMSAwIDguMS0zMi41Yy0zMS41IDUxLjgtOTQuNiA0NC40LTk0LjYtNC4zIC4xLTE0LjMgLjktMTQgMjMtMTA0LjFsLTMxLjggMCA5LjctMzUuNiA3Ni40IDBjLTMzLjYgMTMzLjctMzIuNiAxMjYuOS0zMi45IDEzOC4yIDAgMjAuOSA0MC45IDEzLjUgNTcuNC0yMy4ybDE5LjgtNzkuNC0zMi4zIDAgOS43LTM1LjYgNjguOCAwLTguOSA0MC41YzQwLjUtNzUuNSAxMjcuOS00Ny44IDEwMS44IDM4LTE0LjIgNTEuMS0xNC42IDUwLjctMTQuOSA1OC44IDAgMTUuNSAxNy41IDIyLjYgMzEuOC0xNi45TDM4NiAzMjVjLTEwLjUgMzYuNy0yOS40IDUyLTUzLjIgNTJ6Il19LFdNdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJmYWNlYm9vay1mIixpY29uOlszMjAsNTEyLFtdLCJmMzllIiwiTTgwIDI5OS4zbDAgMjEyLjcgMTE2IDAgMC0yMTIuNyA4Ni41IDAgMTgtOTcuOC0xMDQuNSAwIDAtMzQuNmMwLTUxLjcgMjAuMy03MS41IDcyLjctNzEuNSAxNi4zIDAgMjkuNCAuNCAzNyAxLjJsMC04OC43QzI5MS40IDQgMjU2LjQgMCAyMzYuMiAwIDEyOS4zIDAgODAgNTAuNSA4MCAxNTkuNGwwIDQyLjEtNjYgMCAwIDk3LjggNjYgMHoiXX0sR010PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImNlbnRvcyIsaWNvbjpbNDQ4LDUxMixbXSwiZjc4OSIsIk0yODkuNiA5Ny41bDMxLjYgMzEuNy03Ni4zIDc2LjUgMC0xMDguMiA0NC43IDB6TTEyNy4yIDEyOS4ybDc2LjMgNzYuNSAwLTEwOC4yLTQ0LjcgMC0zMS42IDMxLjd6bTQxLjUtNDEuNmw0NC43IDAgMCAxMjcuOSAxMC44IDEwLjggMTAuOC0xMC44IDAtMTI3LjkgNDQuNyAwLTU1LjUtNTUuNi01NS41IDU1LjZ6bTI2LjIgMTY4LjFsLTEwLjgtMTAuOC0xMjguNiAwIDAtNDQuOC01NS41IDU1LjYgNTUuNSA1NS42IDAtNDQuOCAxMjguNiAwIDEwLjgtMTAuOHpNMjc0LjIgMjM1bDEwNy45IDAgMC00NC44LTMxLjYtMzEuNy03Ni4zIDc2LjV6bTE3My4zIDIwLjdsLTU1LjUtNTUuNiAwIDQ0LjgtMTI3LjcgMC0xMC44IDEwLjggMTAuOCAxMC44IDEyNy43IDAgMCA0NC44IDU1LjUtNTUuNnpNNjUuNCAxNzYuMmwzMi41LTMxLjcgOTAuMyA5MC41IDE1LjMgMCAwLTE1LjMtOTAuMy05MC41IDMxLjYtMzEuNy03OS40IDAgMCA3OC43ek0zODIuMSA5Ny41bC03OC41IDAgMzEuNiAzMS43LTkwLjMgOTAuNSAwIDE1LjMgMTUuMyAwIDkwLjMtOTAuNSAzMS42IDMxLjcgMC03OC43ek0yMDMuNSA0MTMuOWwwLTEwOC4xLTc2LjMgNzYuNSAzMS42IDMxLjcgNDQuNyAwIDAtLjF6TTY1LjQgMjM1bDEwOC44IDAtNzYuMy03Ni41LTMyLjUgMzEuNyAwIDQ0Ljh6TTM4Mi4xIDMzNS4ybC0zMS42IDMxLjctOTAuMy05MC41LTE1LjMgMCAwIDE1LjMgOTAuMyA5MC41LTMxLjYgMzEuNyA3OC41IDAgMC03OC43em0wLTU4LjhsLTEwNy45IDAgNzYuMyA3Ni41IDMxLjYtMzEuNyAwLTQ0Ljh6TTMyMS4yIDM4Mi4ybC03Ni4zLTc2LjUgMCAxMDguMSA0NC43IDAgMzEuNi0zMS42ek05Ny45IDM1Mi45bDc2LjMtNzYuNS0xMDguOCAwIDAgNDQuOCAzMi41IDMxLjd6bTE4MS44IDcwLjlsLTQ0LjcgMCAwLTEyNy45LTEwLjgtMTAuOC0xMC44IDEwLjggMCAxMjcuOS00NC43IDAgNTUuNSA1NS42IDU1LjUtNTUuNnpNMTEzLjIgMzgyLjJsOTAuMy05MC41IDAtMTUuMy0xNS4zIDAtOTAuMyA5MC41LTMyLjUtMzEuNyAwIDc4LjcgNzkuNCAwLTMxLjYtMzEuN3oiXX0sS010PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNjYWxld2F5IixpY29uOls0NDgsNTEyLFtdLCJlODU5IiwiTTI0My40IDExNy4zbC04NC4zIDBjLTE4LjUgMi4xLTMyLjcgMTcuNS0zMy40IDM2bDAgMTIxLjljMCA4LjIgMy4yIDE1LjMgOC41IDIwLjdzMTIuNSA4LjYgMjAuNiA4LjZjMTYgMCAyOS4yLTEzLjIgMjkuMi0yOS4ybDAtNzcuNGMwLTEyLjEgMTAtMjIuMSAyMi4xLTIyLjFsMzguMSAwYzguMiAwIDE1LjMtMy4yIDIwLjYtOC42czguNS0xMi44IDguNS0yMWMwLTE2LTEzLjktMjguOS0yOS45LTI4Ljl6TTIwNS4zIDM5NS40bDg0LjMgMGMxOC41LTIuMSAzMi43LTE3LjUgMzMuNC0zNmwwLTEyMS45YzAtOC4yLTMuMi0xNS4zLTguNS0yMC43cy0xMi41LTguNi0yMC42LTguNmMtMTYgMC0yOS4yIDEzLjItMjkuMiAyOS4ybDAgNzcuNGMwIDEyLjEtMTAgMjIuMS0yMi4xIDIyLjFsLTM4LjEgMGMtOC4yIDAtMTUuMyAzLjItMjAuNiA4LjZzLTguNSAxMi44LTguNSAyMWMuNCAxNiAxMy45IDI4LjkgMjkuOSAyOC45ek0xMDQuMyAwTDI1Ny42IDBjMTAxIDAgMTgyLjUgODEuNiAxODIuMSAxODIuOWwwIDI0Mi44Yy00LjYgNDYtNDIgODIuNC04OC4yIDg2LjNMMTkwIDUxMkM4OS4zIDUxMiA3LjUgNDMwIDcuNSAzMjkuMUw3LjUgOTdjMC01My41IDQzLjQtOTcgOTYuOC05N3pNMzgxLjcgMTgyLjljMC02OC41LTU1LjktMTI0LjQtMTI0LjItMTI0LjRsLTE1MyAwQzgzLjMgNTguNSA2Ni4yIDc1LjYgNjYuMiA5N2wwIDIzMi4xYzAgNjguOCA1NS41IDEyNC40IDEyNC4yIDEyNC40bDE1OC43IDBjMTYuNy0yLjEgMjkuOS0xNSAzMi43LTMxLjRsMC0yMzkuMnoiXX0sWU10PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImNjLWFtYXpvbi1wYXkiLGljb246WzU3Niw1MTIsW10sImY0MmQiLCJNMTI0LjcgMjAxLjhjLjEtMTEuOCAwLTIzLjUgMC0zNS4zbDAtMzUuM2MwLTEuMyAuNC0yIDEuNC0yLjcgMTEuNS04IDI0LjEtMTIuMSAzOC4yLTExLjEgMTIuNSAuOSAyMi43IDcgMjguMSAyMS43IDMuMyA4LjkgNC4xIDE4LjIgNC4xIDI3LjcgMCA4LjctLjcgMTcuMy0zLjQgMjUuNi01LjcgMTcuOC0xOC43IDI0LjctMzUuNyAyMy45LTExLjctLjUtMjEuOS01LTMxLjQtMTEuNy0uOS0uOC0xLjQtMS42LTEuMy0yLjh6bTE1NC45IDE0LjZjNC42IDEuOCA5LjMgMiAxNC4xIDEuNSAxMS42LTEuMiAyMS45LTUuNyAzMS4zLTEyLjUgLjktLjYgMS4zLTEuMyAxLjMtMi41LS4xLTMuOSAwLTcuOSAwLTExLjggMC00LS4xLTggMC0xMiAwLTEuNC0uNC0yLTEuOC0yLjItNy0uOS0xMy45LTIuMi0yMC45LTIuOS03LS42LTE0LS4zLTIwLjggMS45LTYuNyAyLjItMTEuNyA2LjItMTMuNyAxMy4xLTEuNiA1LjQtMS42IDEwLjggLjEgMTYuMiAxLjYgNS41IDUuMiA5LjIgMTAuNCAxMS4yek01NzYgODBsMCAzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNDgwYy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDgwQzAgNTMuNSAyMS41IDMyIDQ4IDMybDQ4MCAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4ek0zNjguNSAxMDMuOWMuNCAxLjcgLjkgMy40IDEuNiA1LjEgMTYuNSA0MC42IDMyLjkgODEuMyA0OS41IDEyMS45IDEuNCAzLjUgMS43IDYuNCAuMiA5LjktMi44IDYuMi00LjkgMTIuNi03LjggMTguNy0yLjYgNS41LTYuNyA5LjUtMTIuNyAxMS4yLTQuMiAxLjEtOC41IDEuMy0xMi45IC45LTIuMS0uMi00LjItLjctNi4zLS44LTIuOC0uMi00LjIgMS4xLTQuMyA0LS4xIDIuOC0uMSA1LjYgMCA4LjMgLjEgNC42IDEuNiA2LjcgNi4yIDcuNSA0LjcgLjggOS40IDEuNiAxNC4yIDEuNyAxNC4zIC4zIDI1LjctNS40IDMzLjEtMTcuOSAyLjktNC45IDUuNi0xMC4xIDcuNy0xNS40IDE5LjgtNTAuMSAzOS41LTEwMC4zIDU5LjItMTUwLjUgLjYtMS41IDEuMS0zIDEuMy00LjYgLjQtMi40LS43LTMuNi0zLjEtMy43LTUuNi0uMS0xMS4xIDAtMTYuNyAwLTMuMSAwLTUuMyAxLjQtNi40IDQuMy0uNCAxLjEtLjkgMi4zLTEuMyAzLjRsLTI5LjEgODMuN2MtMi4xIDYuMS00LjIgMTIuMS02LjUgMTguNi0uNC0uOS0uNi0xLjQtLjgtMS45LTEwLjgtMjkuOS0yMS42LTU5LjktMzIuNC04OS44LTEuNy00LjctMy41LTkuNS01LjMtMTQuMi0uOS0yLjUtMi43LTQtNS40LTQtNi40LS4xLTEyLjgtLjItMTkuMi0uMS0yLjIgMC0zLjMgMS42LTIuOCAzLjd6TTI0Mi40IDIwNmMxLjcgMTEuNyA3LjYgMjAuOCAxOCAyNi42IDkuOSA1LjUgMjAuNyA2LjIgMzEuNyA0LjYgMTIuNy0xLjkgMjMuOS03LjMgMzMuOC0xNS41IC40LS4zIC44LS42IDEuNC0xIC41IDMuMiAuOSA2LjIgMS41IDkuMiAuNSAyLjYgMi4xIDQuMyA0LjUgNC40IDQuNiAuMSA5LjEgLjEgMTMuNyAwIDIuMy0uMSAzLjgtMS42IDQtMy45IC4xLS44IC4xLTEuNiAuMS0yLjNsMC04OC44YzAtMy42LS4yLTcuMi0uNy0xMC44LTEuNi0xMC44LTYuMi0xOS43LTE1LjktMjUuNC01LjYtMy4zLTExLjgtNS0xOC4yLTUuOS0zLS40LTYtLjctOS4xLTEuMWwtMTAgMGMtLjggLjEtMS42IC4zLTIuNSAuMy04LjIgLjQtMTYuMyAxLjQtMjQuMiAzLjUtNS4xIDEuMy0xMCAzLjItMTUgNC45LTMgMS00LjUgMy4yLTQuNCA2LjUgLjEgMi44LS4xIDUuNiAwIDguMyAuMSA0LjEgMS44IDUuMiA1LjcgNC4xIDYuNS0xLjcgMTMuMS0zLjUgMTkuNy00LjggMTAuMy0xLjkgMjAuNy0yLjcgMzEuMS0xLjIgNS40IC44IDEwLjUgMi40IDE0LjEgNyAzLjEgNCA0LjIgOC44IDQuNCAxMy43IC4zIDYuOSAuMiAxMy45IC4zIDIwLjggMCAuNC0uMSAuNy0uMiAxLjItLjQgMC0uOCAwLTEuMS0uMS04LjgtMi4xLTE3LjctMy42LTI2LjgtNC4xLTkuNS0uNS0xOC45IC4xLTI3LjkgMy4yLTEwLjggMy44LTE5LjUgMTAuMy0yNC42IDIwLjgtNC4xIDguMy00LjYgMTctMy40IDI1Ljh6TTk4LjcgMTA2LjlsMCAxNzUuM2MwIC44IDAgMS43IC4xIDIuNSAuMiAyLjUgMS43IDQuMSA0LjEgNC4yIDUuOSAuMSAxMS44IC4xIDE3LjcgMCAyLjUgMCA0LTEuNyA0LjEtNC4xIC4xLS44IC4xLTEuNyAuMS0yLjVsMC02MC43Yy45IC43IDEuNCAxLjIgMS45IDEuNiAxNSAxMi41IDMyLjIgMTYuNiA1MS4xIDEyLjkgMTcuMS0zLjQgMjguOS0xMy45IDM2LjctMjkuMiA1LjgtMTEuNiA4LjMtMjQuMSA4LjctMzcgLjUtMTQuMy0xLTI4LjQtNi44LTQxLjctNy4xLTE2LjQtMTguOS0yNy4zLTM2LjctMzAuOS0yLjctLjYtNS41LS44LTguMi0xLjJsLTcgMGMtMS4yIC4yLTIuNCAuMy0zLjYgLjUtMTEuNyAxLjQtMjIuMyA1LjgtMzEuOCAxMi43LTIgMS40LTMuOSAzLTUuOSA0LjUtLjEtLjUtLjMtLjgtLjQtMS4yLS40LTIuMy0uNy00LjYtMS4xLTYuOS0uNi0zLjktMi41LTUuNS02LjQtNS42bC05LjcgMGMtNS45LS4xLTYuOSAxLTYuOSA2Ljh6TTQ5My42IDMzOWMtMi43LS43LTUuMSAwLTcuNiAxLTQzLjkgMTguNC04OS41IDMwLjItMTM2LjggMzUuOC0xNC41IDEuNy0yOS4xIDIuOC00My43IDMuMi0yNi42IC43LTUzLjItLjgtNzkuNi00LjMtMTcuOC0yLjQtMzUuNS01LjctNTMtOS45LTM3LTguOS03Mi43LTIxLjctMTA2LjctMzguOC04LjgtNC40LTE3LjQtOS4zLTI2LjEtMTQtMy44LTIuMS02LjItMS41LTguMiAyLjFsMCAxLjdjMS4yIDEuNiAyLjIgMy40IDMuNyA0LjggMzYgMzIuMiA3Ni42IDU2LjUgMTIyIDcyLjkgMjEuOSA3LjkgNDQuNCAxMy43IDY3LjMgMTcuNSAxNCAyLjMgMjggMy44IDQyLjIgNC41IDMgLjEgNiAuMiA5IC40IC43IDAgMS40IC4yIDIuMSAuM2wxNy43IDBjLjctLjEgMS40LS4zIDIuMS0uMyAxNC45LS40IDI5LjgtMS44IDQ0LjYtNCAyMS40LTMuMiA0Mi40LTguMSA2Mi45LTE0LjcgMjkuNi05LjYgNTcuNy0yMi40IDgzLjQtNDAuMSAyLjgtMS45IDUuNy0zLjggOC02LjIgNC4zLTQuNCAyLjMtMTAuNC0zLjMtMTEuOXpNNTQ0IDMxMS4zYy0uOC00LjItNC01LjgtNy42LTctNS43LTEuOS0xMS42LTIuOC0xNy42LTMuMy0xMS0uOS0yMi0uNC0zMi44IDEuNi0xMiAyLjItMjMuNCA2LjEtMzMuNSAxMy4xLTEuMiAuOC0yLjQgMS44LTMuMSAzLS42IC45LS43IDIuMy0uNSAzLjQgLjMgMS4zIDEuNyAxLjYgMyAxLjUgLjYgMCAxLjIgMCAxLjgtLjFsMTkuNS0yLjFjOS42LS45IDE5LjItMS41IDI4LjgtLjggNC4xIC4zIDguMSAxLjIgMTIgMi4yIDQuMyAxLjEgNi4yIDQuNCA2LjQgOC43IC4zIDYuNy0xLjIgMTMuMS0yLjkgMTkuNS0zLjUgMTIuOS04LjMgMjUuNC0xMy4zIDM3LjgtLjMgLjgtLjcgMS43LS44IDIuNS0uNCAyLjUgMSA0IDMuNCAzLjUgMS40LS4zIDMtMS4xIDQtMi4xIDMuNy0zLjYgNy41LTcuMiAxMC42LTExLjIgMTAuNy0xMy44IDE3LTI5LjYgMjAuNy00Ni42IC43LTMgMS4yLTYuMSAxLjctOS4xIC4yLTQuNyAuMi05LjYgLjItMTQuNXoiXX0sWk10PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImViYXkiLGljb246WzY0MCw1MTIsW10sImY0ZjQiLCJNNjA2LjUgMTg5LjVsLTU0LjggMTA5LjktNTQuOS0xMDkuOS0zNy41IDAgMTAuOSAyMC42Yy0xMS41LTE5LTM1LjktMjYtNjMuMy0yNi0zMS44IDAtNjcuOSA4LjctNzEuNSA0My4xbDMzLjcgMGMxLjQtMTMuOCAxNS43LTIxLjggMzUtMjEuOCAyNiAwIDQxIDkuNiA0MSAzM2wwIDMuNGMtMTIuNyAwLTI4IC4xLTQxLjcgLjQtNDIuNCAuOS02OS42IDEwLTc2LjcgMzQuNCAxLTUuMiAxLjUtMTAuNiAxLjUtMTYuMiAwLTUyLjEtMzkuNy03Ni4yLTc1LjQtNzYuMi0yMS4zIDAtNDMgNS41LTU4LjcgMjQuMmwwLTgwLjYtMzIuMSAwIDAgMTY5LjVjMCAxMC4zLS42IDIyLjktMS4xIDMzLjFsMzEuNSAwYy43LTYuMyAxLjEtMTIuOSAxLjEtMTkuNSAxMy42IDE2LjYgMzUuNCAyNC45IDU4LjcgMjQuOSAzNi45IDAgNjQuOS0yMS45IDczLjMtNTQuMi0uNSAyLjgtLjcgNS44LS43IDkgMCAyNC4xIDIxLjEgNDUgNjAuNiA0NSAyNi42IDAgNDUuOC01LjcgNjEuOS0yNS41IDAgNi42IC4zIDEzLjMgMS4xIDIwLjJsMjkuOCAwYy0uNy04LjItMS0xNy41LTEtMjYuOGwwLTY1LjZjMC05LjMtMS43LTE3LjItNC44LTIzLjhsNjEuNSAxMTYuMS0yOC41IDU0LjEgMzUuOSAwIDk5LjItMTk0LjgtMzQgMHpNMjQ0LjIgMzEzLjhjLTI5LjYgMC01MC4yLTIxLjUtNTAuMi01My44IDAtMzIuNCAyMC42LTUzLjggNTAuMi01My44IDI5LjggMCA1MC4yIDIxLjQgNTAuMiA1My44IDAgMzIuMy0yMC40IDUzLjgtNTAuMiA1My44em0yMDAuOS00Ny4zYzAgMzAtMTcuOSA0OC40LTUxLjYgNDguNC0yNS4xIDAtMzUtMTMuNC0zNS0yNS44IDAtMTkuMSAxOC4xLTI0LjQgNDcuMi0yNS4zIDEzLjEtLjUgMjcuNi0uNiAzOS40LS42bDAgMy4zek0zMy4yIDI2OC4xbDEyOC44IDAgMC04LjVjMC01MS43LTMzLjEtNzUuNC03OC40LTc1LjQtNTYuOCAwLTgzIDMwLjgtODMgNzcuNiAwIDQyLjUgMjUuMyA3NCA4Mi41IDc0IDMxLjQgMCA2OC0xMS43IDc0LjQtNDYuMWwtMzMuMSAwYy0xMiAzNS44LTg3LjcgMzYuNy05MS4yLTIxLjZ6bTk1LTIxLjRsLTk0LjQgMGM2LjktNTYuNiA5Mi4xLTU0LjcgOTQuNCAweiJdfSxYTXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiY29udGFvIixpY29uOls1MTIsNTEyLFtdLCJmMjZkIiwiTTQ1LjQgMzA1YzE0LjQgNjcuMSAyNi40IDEyOSA2OC4yIDE3NUwzNCA0ODBjLTE4LjcgMC0zNC0xNS4yLTM0LTM0TDAgNjZDMCA0Ny4zIDE1LjIgMzIgMzQgMzJsNTcuNyAwYy0xMy44IDEyLjYtMjYuMSAyNy4yLTM2LjkgNDMuNi00NS40IDcwLTI3IDE0Ni44LTkuNCAyMjkuNHpNNDc4IDMybC05MC4yIDBjMjEuNCAyMS40IDM5LjIgNDkuNSA1Mi43IDg0LjFMMzAzLjQgMTQ1LjRjLTE0LjktMjktMzcuOC01My4zLTgyLjYtNDMuOS0yNC42IDUuMy00MSAxOS4zLTQ4LjMgMzQuNi04LjggMTguNy0xMy4yIDM5LjggOC4yIDE0MC4zIDIxLjEgMTAwLjIgMzMuNyAxMTcuNyA0OS41IDEzMS4yIDEyLjkgMTEuMSAzMy40IDE3IDU4LjMgMTEuNyA0NC41LTkuNCA1NS43LTQwLjcgNTcuNC03My4ybDEzNy40LTI5LjZjMy4yIDcxLjUtMTguNyAxMjUuMi01Ny40IDE2My42bDUyLjEgMGMxOC43IDAgMzQtMTUuMiAzNC0zNEw1MTIgNjZjMC0xOC44LTE1LjItMzQtMzQtMzR6Il19LFFNdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJlbGxvIixpY29uOls1MTIsNTEyLFtdLCJmNWYxIiwiTTI1NiA4YTI0OCAyNDggMCAxIDAgMCA0OTYgMjQ4IDI0OCAwIDEgMCAwLTQ5NnpNMzk5LjggMjkzLjJDMzgzLjMgMzU4LjUgMzIzLjggNDA0LjggMjU2IDQwNC44UzEyOC43IDM1OC41IDExMi4yIDI5My4yYy0xLjYtNy40IDIuNS0xNS43IDkuOS0xNy40czE1LjcgMi41IDE3LjQgOS45YzE0IDUyLjkgNjIgOTAuMSAxMTYuNiA5MC4xczEwMi41LTM3LjIgMTE2LjYtOTAuMWMxLjctNy40IDkuOS0xMi40IDE3LjQtOS45IDcuNCAxLjcgMTIuNCA5LjkgOS45IDE3LjR6Il19LEpNdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzaXN0cml4IixpY29uOls0NDgsNTEyLFtdLCJmM2VlIiwiTTQ0OCA0NDlMMzAxLjIgMzAwLjJjMjAtMjcuOSAzMS45LTYyLjIgMzEuOS05OS4yIDAtOTMuMS03NC43LTE2OC45LTE2Ni41LTE2OC45LTkxLjktLjEtMTY2LjYgNzUuNy0xNjYuNiAxNjguOFM3NC43IDM2OS44IDE2Ni41IDM2OS44YzM5LjggMCA3Ni4zLTE0LjIgMTA1LTM3LjlMNDE3LjUgNDgwIDQ0OCA0NDl6TTE2Ni41IDMzMC44Yy03MC42IDAtMTI4LjEtNTguMy0xMjguMS0xMjkuOVM5NS45IDcxIDE2Ni41IDcxIDI5NC42IDEyOS4zIDI5NC42IDIwMC45IDIzNy4yIDMzMC44IDE2Ni41IDMzMC44eiJdfSxlenQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToicGVyaXNjb3BlIixpY29uOls0NDgsNTEyLFtdLCJmM2RhIiwiTTM3MCA2My42Yy0zOC42LTQxLTg5LjUtNjMuNi0xNDMuNC02My42LTExNC43IDAtMjA4LjEgOTYuMi0yMDguMSAyMTQuNCAwIDc1LjEgNTcuOCAxNTkuOCA4Mi43IDE5Mi43IDM2LjYgNDguNCA5MS40IDEwNC45IDEyNS40IDEwNC45IDQxLjYgMCAxMTIuOS05NC4yIDEyMC45LTEwNSAyNC42LTMzLjEgODItMTE4LjMgODItMTkyLjYgMC01Ni41LTIxLjEtMTEwLjEtNTkuNS0xNTAuOHpNMjI2LjYgNDkzLjljLTQyLjUgMC0xOTAtMTY3LjMtMTkwLTI3OS40IDAtMTA3LjQgODMuOS0xOTYuMyAxOTAtMTk2LjMgMTAwLjggMCAxODQuNyA4OSAxODQuNyAxOTYuMyAuMSAxMTIuMS0xNDcuNCAyNzkuNC0xODQuNyAyNzkuNHpNMzM4IDIwNi44YzAgNTkuMS01MS4xIDEwOS43LTExMC44IDEwOS43LTEwMC42IDAtMTUwLjctMTA4LjItOTIuOS0xODEuOGwwIC40YzAgMjQuNSAyMC4xIDQ0LjQgNDQuOCA0NC40czQ0LjgtMTkuOSA0NC44LTQ0LjRjMC0xOC4yLTExLjEtMzMuOC0yNi45LTQwLjcgNzYuNi0xOS4yIDE0MSAzOS4zIDE0MSAxMTIuNHoiXX0sdHp0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImV4cGVkaXRlZHNzbCIsaWNvbjpbNTEyLDUxMixbXSwiZjIzZSIsIk0yNTYgNDMuNGEyMTIuNiAyMTIuNiAwIDEgMCAwIDQyNS4yIDIxMi42IDIxMi42IDAgMSAwIDAtNDI1LjJ6TTE1OC42IDE3Ni4zYzAtNTMuNyA0My43LTk3LjQgOTcuNC05Ny40czk3LjQgNDMuNyA5Ny40IDk3LjRsMCAyNi42YzAgNS0zLjkgOC45LTguOSA4LjlsLTE3LjcgMGMtNSAwLTguOS0zLjktOC45LTguOWwwLTI2LjZjMC04Mi4xLTEyNC04Mi4xLTEyNCAwbDAgMjYuNmMwIDUtMy45IDguOS04LjkgOC45bC0xNy43IDBjLTUgMC04LjktMy45LTguOS04LjlsMC0yNi42IC4yIDB6TTM5Ny43IDM4MGMwIDkuNy04IDE3LjctMTcuNyAxNy43bC0yNDggMGMtOS43IDAtMTcuNy04LTE3LjctMTcuN2wwLTE0MS43YzAtOS43IDgtMTcuNyAxNy43LTE3LjdsMjQ4IDBjOS43IDAgMTcuNyA4IDE3LjcgMTcuN2wwIDE0MS43em0tMjQ4LTEzNy4zbDAgMTMyLjljMCAyLjUtMS45IDQuNC00LjQgNC40bC04LjkgMGMtMi41IDAtNC40LTEuOS00LjQtNC40bDAtMTMyLjljMC0yLjUgMS45LTQuNCA0LjQtNC40bDguOSAwYzIuNSAwIDQuNCAxLjkgNC40IDQuNHptMTQxLjcgNDguN2MwIDEzLTcuMiAyNC40LTE3LjcgMzAuNGwwIDMxLjZjMCA1LTMuOSA4LjktOC45IDguOWwtMTcuNyAwYy01IDAtOC45LTMuOS04LjktOC45bDAtMzEuNmMtMTAuNS02LjEtMTcuNy0xNy40LTE3LjctMzAuNCAwLTE5LjcgMTUuOC0zNS40IDM1LjQtMzUuNHMzNS41IDE1LjggMzUuNSAzNS40ek0yNTYgOGEyNDggMjQ4IDAgMSAwIDAgNDk2IDI0OCAyNDggMCAxIDAgMC00OTZ6bTAgMTcuN2EyMzAuMyAyMzAuMyAwIDEgMSAwIDQ2MC42IDIzMC4zIDIzMC4zIDAgMSAxIDAtNDYwLjZ6Il19LGF6dD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJuYXBzdGVyIixpY29uOls1MTIsNTEyLFtdLCJmM2QyIiwiTTMwNi4zIDM3My42Yy0xNC4yIDEzLjYtMzEuMyAyNC4xLTUwLjQgMzAuNS0xOS02LjQtMzYuMi0xNi45LTUwLjMtMzAuNWwxMDAuNyAwem00NC0xOTkuNmMyMC0xNi45IDQzLjYtMjkuMiA2OS42LTM2LjJsMCAxNjEuMmMwIDIxOS40LTMyOCAyMTcuNi0zMjggLjNsMC0xNjEuNmMyNS45IDYuOSA0OS42IDE5LjYgNjkuNSAzNi40IDU2LjgtNDAgMTMyLjUtMzkuOSAxODguOS0uMXpNMTQxLjUgMTE1LjVjNjQuNC02MCAxNjQuMy02MC4xIDIyOC45LS4yLTcuMSAzLjUtMTMuOSA3LjMtMjAuNiAxMS41LTU4LjctMzAuNS0xMjkuMi0zMC40LTE4Ny45IC4xLTYuMy00LTEzLjktOC4yLTIwLjQtMTEuNHpNNTEuOCA5My4ybDAgNjkuM2MtNTguNCAzNi41LTU4LjQgMTIxLjEgLjEgMTU4LjMgMjYuNCAyNDUuMSAzODEuNyAyNDAuMyA0MDcuNiAxLjVsLjMtMS43YzU4LjctMzYuMyA1OC45LTEyMS43IC4yLTE1OC4ybDAtNjkuMmMtMTcuMyAuNS0zNCAzLTUwLjEgNy40LTgyLTkxLjUtMjI1LjUtOTEuNS0zMDcuNSAuMS0xNi4zLTQuNC0zMy4xLTctNTAuNi03LjV6TTI2Ny4yIDM1MnMzNi0uMyA2MS4zLTEuNWMxMC4yLS41IDIxLjEtNCAyNS41LTYuNSAyNi4zLTE1LjEgMjUuNC0zOS4yIDI2LjItNDcuNC03OS41LS42LTk5LjktMy45LTExMyA1NS40ek0xMzEuNyAyOTYuN2MuOCA4LjItLjEgMzIuMyAyNi4yIDQ3LjQgNC40IDIuNSAxNS4yIDYgMjUuNSA2LjUgMjUuMyAxLjEgNjEuMyAxLjUgNjEuMyAxLjUtMTMuMi01OS40LTMzLjctNTYuMS0xMTMtNTUuNHpNMzAwLjggNDIwLjFjLTMuMi01LjMtNi45LTcuMy02LjktNy4zLTI0LjggNy4zLTUyLjIgNi45LTc1LjkgMCAwIDAtMi45IDEuNS02LjQgNi42LTIuOCA0LjEtMy43IDkuNi0zLjcgOS42IDI5LjEgMTcuNiA2Ny4xIDE3LjYgOTYuMiAwLS4xLS4xLS4zLTQtMy4zLTguOXoiXX0sc3p0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImRlbGljaW91cyIsaWNvbjpbNDQ4LDUxMixbXSwiZjFhNSIsIk00NDYuNiA2OGMtLjQtMS41LS45LTMtMS40LTQuNS0uOS0yLjUtMi00LjgtMy4zLTcuMS0xLjQtMi40LTMtNC44LTQuNy02LjktMi4xLTIuNS00LjQtNC44LTYuOS02LjgtMS4xLS45LTIuMi0xLjctMy4zLTIuNS0xLjMtLjktMi42LTEuNy00LTIuNC0xLjgtMS0zLjYtMS44LTUuNS0yLjUtMS43LS43LTMuNS0xLjMtNS40LTEuNy0zLjgtMS03LjktMS41LTEyLTEuNWwtMzUyIDBDMjEuNiAzMiAuMSA1My41IC4xIDgwbDAgMzUyYzAgNC4xIC41IDguMiAxLjUgMTIgMiA3LjcgNS44IDE0LjYgMTEgMjAuMyAxIDEuMSAyLjEgMi4yIDMuMyAzLjMgNS43IDUuMiAxMi42IDkgMjAuMyAxMSAzLjggMSA3LjkgMS41IDEyIDEuNWwzNTIgMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTM1Mi4xYy0uMS00LjEtLjYtOC4yLTEuNi0xMnpNNDE2LjEgNDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMTc2IDAgMC0xOTItMTkyIDAgMC0xNzZjMC04LjggNy4yLTE2IDE2LTE2bDE3NiAwIDAgMTkyIDE5MiAwIDAgMTc2eiJdfSxpenQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZ3VpbGRlZCIsaWNvbjpbNDQ4LDUxMixbXSwiZTA3ZSIsIk00NDMuOSA2NEw1IDY0YzAgMTAzLjMgMjIuMiAxODAuMSA0My40IDIyMi40IDY0LjEgMTI3LjggMTc2IDE2MS42IDE3Ny4zIDE2MS42IDU1LjctMjAuNSAxMDQuNS01Ni4zIDE0MC42LTEwMy41IDI1LjktMzMuOSA1My4xLTg3LjIgNjUuOS0xNDUuOGwtMjU5LjkgMGM0LjEgMzYuNCAyMi4yIDY3LjkgNDUuMSA4Ni45bDg4LjYgMGMtMTcgMjguMi00OC4yIDU0LjQtODAuNSA2OS41LTMxLjItMTMuMy02OS4xLTQ2LjUtOTYuNS05OC40LTI2LjctNTMuOC0yNy4xLTEwNS45LTI3LjEtMTA1LjlsMzM2LjEgMGM0LTI4LjggNS45LTU3LjkgNS45LTg2Ljl6Il19LHJ6dD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJvYnNpZGlhbiIsaWNvbjpbMzg0LDUxMixbXSwiZTg3OSIsIk0xNDIuMyAzMjAuM2MzNi4xLTguMiA3MC4zLTExIDEwMS4zIC43IDMxLjggMTEuOSA2MS43IDM5LjYgODYuNyA5Ni04LjEgMTcuNy0xMi40IDM2LjktMTQuNyA1My44LTMuMSAyMi45LTI1LjQgNDAuNy00Ny43IDM0LjYtMzEuNy04LjctNjguMy0yMi4zLTEwMS4zLTI0LjktNC40LS4zLTUwLjYtMy44LTUwLjYtMy44LTEuNy0uMS0zLjQtLjQtNS4xLS44IDMxLjUtNjQuMiAzOC4yLTExNS4xIDMxLjMtMTU1LjR6TTU1IDIxOS41YzIyLjMgMTQuOCA0OS41IDM3LjggNjQuMSA3My42IDE2LjEgMzkuNCAxNy44IDk1LjctMjEuNiAxNzYuMS0xLS44LTIuMS0xLjctMy0yLjdMNy40IDM3Ni44Yy05LjUtOS44LTEyLjEtMjQuNC02LjUtMzYuOSAuNi0xLjMgNDQuNi05OC4zIDU0LjEtMTIwLjR6bTI2NC4zLTkxLjNjNC45IDYuMiA3LjQgMTQgNy40IDIxLjkgLjEgMjAuOCAxLjggNjMuNiAxMy4zIDkxLjIgMTEuMiAyNi44IDMxLjggNTUuOCA0Mi41IDcwIDQuMSA1LjUgNC44IDEyLjkgMS4zIDE4LjctNy42IDEyLjgtMjIuNiAzNy41LTQzLjggNjkuMi0uMyAuNC0uNiAuOS0uOCAxLjMtMjUuMi01Mi4yLTU1LjktODAuNy05MC40LTkzLjYtOS42LTMuNi0xOS41LTYtMjkuNC03LjMtMTcuOC00NS44LTIzLjItNzkuNy0yMi0xMDYuNCAxLjItMjcuNCA5LjItNDcuOCAxOC4yLTY2LjMgOC45LTE4LjEgMTkuOC0zNS45IDI0LjktNTUuNyAzLjItMTIuNSA0LjItMjUuOCAxLjctNDAuOWw3Ny4xIDk4ek0xODQuMiAxNC4xYzEwLjMtOS4yIDI0LjYtMTAuOCAzNi4zLTUuNSA5LjYgMjQuNiA5LjcgNDIuOCA1LjYgNTguOC00LjYgMTcuOC0xNC4xIDMzLTIzLjkgNTIuOC05LjYgMTkuNS0xOC40IDQyLTE5LjcgNzIuMy0xLjIgMjcuOSA0LjEgNjEuOSAyMC40IDEwNS44LTIxLS42LTQyLjUgMi42LTYzLjcgNy40LTEuNy02LjQtMy44LTEyLjQtNi4xLTE4LjItMTcuMy00Mi4yLTQ5LjktNjcuOS03NC4xLTgzLjMgMy4xLTE4LjcgOC4yLTU1LjQgMTEuNi03Ny41IDEuMi03LjYgNC45LTE0LjYgMTAuNy0xOS44TDE4NC4yIDE0LjF6Il19LG96dD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ4Ym94IixpY29uOls1MTIsNTEyLFtdLCJmNDEyIiwiTTM2OS45IDMxOC4yYzQ0LjMgNTQuMyA2NC43IDk4LjggNTQuNCAxMTguNy03LjkgMTUuMS01Ni43IDQ0LjYtOTIuNiA1NS45LTI5LjYgOS4zLTY4LjQgMTMuMy0xMDAuNCAxMC4yLTM4LjItMy43LTc2LjktMTcuNC0xMTAuMS0zOS0yNy45LTE4LjItMzQuMi0yNS43LTM0LjItNDAuNiAwLTI5LjkgMzIuOS04Mi4zIDg5LjItMTQyLjEgMzItMzMuOSA3Ni41LTczLjcgODEuNC03Mi42IDkuNCAyLjEgODQuMyA3NS4xIDExMi4zIDEwOS41ek0xODguNiAxNDMuOGMtMjkuNy0yNi45LTU4LjEtNTMuOS04Ni40LTYzLjQtMTUuMi01LjEtMTYuMy00LjgtMjguNyA4LjEtMjkuMiAzMC40LTUzLjUgNzkuNy02MC4zIDEyMi40LTUuNCAzNC4yLTYuMSA0My44LTQuMiA2MC41IDUuNiA1MC41IDE3LjMgODUuNCA0MC41IDEyMC45IDkuNSAxNC42IDEyLjEgMTcuMyA5LjMgOS45LTQuMi0xMS0uMy0zNy41IDkuNS02NCAxNC4zLTM5IDUzLjktMTEyLjkgMTIwLjMtMTk0LjR6bTMxMS42IDYzLjVjLTE2LjktODAtNjcuNS0xMzAuMy03NC42LTEzMC4zLTcuMyAwLTI0LjIgNi41LTM2IDEzLjktMjMuMyAxNC41LTQxIDMxLjQtNjQuMyA1Mi44IDQyLjQgNTMuMyAxMDIuMiAxMzkuNCAxMjIuOSAyMDIuMyA2LjggMjAuNyA5LjcgNDEuMSA3LjQgNTIuMy0xLjcgOC41LTEuNyA4LjUgMS40IDQuNiA2LjEtNy43IDE5LjktMzEuMyAyNS40LTQzLjUgNy40LTE2LjIgMTUtNDAuMiAxOC42LTU4LjcgNC4zLTIyLjUgMy45LTcwLjgtLjgtOTMuNHpNMTQxLjMgNDNjNDcuNy0yLjUgMTA5LjcgMzQuNSAxMTQuMyAzNS40IC43IC4xIDEwLjQtNC4yIDIxLjYtOS43IDYzLjktMzEuMSA5NC0yNS44IDEwNy40LTI1LjItNjMuOS0zOS4zLTE1Mi43LTUwLTIzMy45LTExLjctMjMuNCAxMS4xLTI0IDExLjktOS40IDExLjJ6Il19LG56dD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ1bnRhcHBkIixpY29uOls2NDAsNTEyLFtdLCJmNDA1IiwiTTQwMS41IDQ5LjlDMzIxLjcgMjEwIDMxNi45IDIwMi40IDMxMy42IDIyMy4xbC01LjIgMzIuOGMtMS45IDEyLTYuNiAyMy41LTEzLjcgMzMuNEwxNDUuOCA0OTcuMWMtNy42IDEwLjYtMjAuNCAxNi4yLTMzLjQgMTQuNi00MC4zLTUtNzcuOC0zMi4yLTk1LjMtNjguNS01LjctMTEuOC00LjUtMjUuOCAzLjEtMzYuNEwxNjkuMSAxOTguOWM3LjEtOS45IDE2LjQtMTggMjcuMi0yMy43bDI5LjMtMTUuNWMxOC41LTkuOCA5LjctMTEuOSAxMzUuNi0xMzguOSAxLTQuOCAxLTcuMyAzLjYtOCAzLS43IDYuNi0xIDYuMy00LjZsLS40LTQuNmMtLjItMS45IDEuMy0zLjYgMy4yLTMuNiA0LjUtLjEgMTMuMiAxLjIgMjUuNiAxMCAxMi4zIDguOSAxNi40IDE2LjggMTcuNyAyMS4xIC42IDEuOC0uNiAzLjctMi40IDQuMmwtNC41IDEuMWMtMy40IC45LTIuNSA0LjQtMi4zIDcuNCAuMSAyLjgtMi4zIDMuNi02LjUgNi4xek0yMzAuMyAzNi40YzMuNCAuOSAyLjUgNC40IDIuMyA3LjQtLjIgMi43IDIuMSAzLjUgNi40IDYgNy45IDE1LjkgMTUuMyAzMC41IDIyLjIgNDQgLjcgMS4zIDIuMyAxLjUgMy4zIC41IDExLjItMTIgMjQuNi0yNi4yIDQwLjUtNDIuNiAxLjMtMS40IDEuNC0zLjUgLjEtNC45LTgtOC4yLTE2LjUtMTYuOS0yNS42LTI2LjEtMS00LjctMS03LjMtMy42LTgtMy0uOC02LjYtMS02LjMtNC42IC4zLTMuMyAxLjQtOC4xLTIuOC04LjItNC41LS4xLTEzLjIgMS4xLTI1LjYgMTAtMTIuMyA4LjktMTYuNCAxNi44LTE3LjcgMjEuMS0xLjQgNC4yIDMuNiA0LjYgNi44IDUuNHpNNjIwLjIgNDA2LjdMNDcxLjQgMTk4LjhjLTEzLjItMTguNS0yNi42LTIzLjQtNTYuNC0zOS4xLTExLjItNS45LTE0LjItMTAuOS0zMC41LTI4LjktMS0xLjEtMi45LS45LTMuNiAuNS00Ni4zIDg4LjgtNDcuMSA4Mi44LTQ5IDk0LjgtMS43IDEwLjctMS4zIDIwIC4zIDI5LjggMS45IDEyIDYuNiAyMy41IDEzLjcgMzMuNEw0OTQuOCA0OTcuMmM3LjYgMTAuNiAyMC4yIDE2LjIgMzMuMSAxNC43IDQwLjMtNC45IDc4LTMyIDk1LjctNjguNiA1LjQtMTEuOSA0LjMtMjUuOS0zLjQtMzYuNnoiXX0sbHp0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6Imdvb2dsZS1wbHVzLWciLGljb246WzY0MCw1MTIsW10sImYwZDUiLCJNMzg2LjMgMjI4LjVjMS44IDkuNyAzLjEgMTkuNCAzLjEgMzIgMCAxMDkuOC03My42IDE4Ny41LTE4NC40IDE4Ny41LTEwNi4xIDAtMTkyLTg1LjktMTkyLTE5MlM5OC45IDY0IDIwNSA2NGM1MS45IDAgOTUuMSAxOC45IDEyOC42IDUwLjNsLTUyLjEgNTBjLTE0LjEtMTMuNi0zOS0yOS42LTc2LjUtMjkuNi02NS41IDAtMTE4LjkgNTQuMi0xMTguOSAxMjEuM1MxMzkuNSAzNzcuMyAyMDUgMzc3LjNjNzYgMCAxMDQuNS01NC43IDEwOS04Mi44bC0xMDkgMCAwLTY2IDE4MS4zIDAgMCAwem0xODUuNCA2LjRsMC01NS43LTU2IDAgMCA1NS43LTU1LjcgMCAwIDU2IDU1LjcgMCAwIDU1LjcgNTYgMCAwLTU1LjcgNTUuNyAwIDAtNTYtNTUuNyAweiJdfSxjenQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZ2l0aHViLWFsdCIsaWNvbjpbNTEyLDUxMixbXSwiZjExMyIsIk0yMDIuMSAzMjguN2MwIDIwLjktMTAuOSA1NS4xLTM2LjcgNTUuMXMtMzYuNy0zNC4yLTM2LjctNTUuMSAxMC45LTU1LjEgMzYuNy01NS4xIDM2LjcgMzQuMiAzNi43IDU1LjF6TTQ5NiAyNzguMmMwIDMxLjktMy4yIDY1LjctMTcuNSA5NS0zNy45IDc2LjYtMTQyLjEgNzQuOC0yMTYuNyA3NC44LTc1LjggMC0xODYuMiAyLjctMjI1LjYtNzQuOC0xNC42LTI5LTIwLjItNjMuMS0yMC4yLTk1IDAtNDEuOSAxMy45LTgxLjUgNDEuNS0xMTMuNi01LjItMTUuOC03LjctMzIuNC03LjctNDguOCAwLTIxLjUgNC45LTMyLjMgMTQuNi01MS44IDQ1LjMgMCA3NC4zIDkgMTA4LjggMzYgMjktNi45IDU4LjgtMTAgODguNy0xMCAyNyAwIDU0LjIgMi45IDgwLjQgOS4yIDM0LTI2LjcgNjMtMzUuMiAxMDcuOC0zNS4yIDkuOCAxOS41IDE0LjYgMzAuMyAxNC42IDUxLjggMCAxNi40LTIuNiAzMi43LTcuNyA0OC4yIDI3LjUgMzIuNCAzOSA3Mi4zIDM5IDExNC4yem0tNjQuMyA1MC41YzAtNDMuOS0yNi43LTgyLjYtNzMuNS04Mi42LTE4LjkgMC0zNyAzLjQtNTYgNi0xNC45IDIuMy0yOS44IDMuMi00NS4xIDMuMi0xNS4yIDAtMzAuMS0uOS00NS4xLTMuMi0xOC43LTIuNi0zNy02LTU2LTYtNDYuOCAwLTczLjUgMzguNy03My41IDgyLjYgMCA4Ny44IDgwLjQgMTAxLjMgMTUwLjQgMTAxLjNsNDguMiAwYzcwLjMgMCAxNTAuNi0xMy40IDE1MC42LTEwMS4zem0tODIuNi01NS4xYy0yNS44IDAtMzYuNyAzNC4yLTM2LjcgNTUuMXMxMC45IDU1LjEgMzYuNyA1NS4xIDM2LjctMzQuMiAzNi43LTU1LjEtMTAuOS01NS4xLTM2LjctNTUuMXoiXX0sZHp0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImdldC1wb2NrZXQiLGljb246WzQ0OCw1MTIsW10sImYyNjUiLCJNNDA3LjYgNjRsLTM2NyAwQzE4LjUgNjQgMCA4Mi41IDAgMTA0LjZMMCAyMzkuOEMwIDM2NC41IDk5LjcgNDY0IDIyNC4yIDQ2NCAzNDguMiA0NjQgNDQ4IDM2NC41IDQ0OCAyMzkuOGwwLTEzNS4yQzQ0OCA4Mi4yIDQzMC4zIDY0IDQwNy42IDY0em0tMTYyIDI2OC41Yy0xMi40IDExLjgtMzEuNCAxMS4xLTQyLjQgMC0xMTMuNy0xMDguOS0xMTQuOS0xMDUuMS0xMTQuOS0xMjMuMiAwLTE2LjkgMTMuOC0zMC43IDMwLjctMzAuNyAxNyAwIDE2LjEgMy44IDEwNS4yIDg5LjMgOTAuNi04Ni45IDg4LjYtODkuMyAxMDUuNS04OS4zczMwLjcgMTMuOCAzMC43IDMwLjdjMCAxNy44LTIuOSAxNS43LTExNC44IDEyMy4yeiJdfSx1enQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZ2xpZGUiLGljb246WzQ0OCw1MTIsW10sImYyYTUiLCJNMjUyLjggMTQ4LjZjMCA4LjgtMS42IDE3LjctMy40IDI2LjQtNS44IDI3LjgtMTEuNiA1NS44LTE3LjMgODMuNi0xLjQgNi4zLTguMyA0LjktMTMuNyA0LjktMjMuOCAwLTMwLjUtMjYtMzAuNS00NS41IDAtMjkuMyAxMS4yLTY4LjEgMzguNS04My4xIDQuMy0yLjUgOS4yLTQuMiAxNC4xLTQuMiAxMS40IDAgMTIuMyA4LjMgMTIuMyAxNy45ek00NDggODBsMCAzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNDgwYy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDgwQzAgNTMuNSAyMS41IDMyIDQ4IDMybDM1MiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4ek0zODQgMjY3YzAtNS4xLTIwLjgtMzcuNy0yNS41LTM5LjUtMi4yLS45LTcuMi0yLjMtOS42LTIuMy0yMy4xIDAtMzguNyAxMC41LTU4LjIgMjEuNWwtLjUtLjVjNC4zLTI5LjQgMTQuNi01Ny4yIDE0LjYtODcuNCAwLTQ0LjYtMjMuOC02Mi43LTY3LjUtNjIuNy03MS43IDAtMTA4IDcwLjgtMTA4IDEyMy41IDAgNTQuNyAzMiA4NSA4Ni4zIDg1IDcuNSAwIDYuOS0uNiA2LjkgMi4zLTEwLjUgODAuMy01Ni41IDgyLjktNTYuNSA1OC45IDAtMjQuNCAyOC0zNi41IDI4LjMtMzgtLjItNy42LTI5LjMtMTcuMi0zNi43LTE3LjItMjEuMSAwLTMyLjcgMzMtMzIuNyA1MC42IDAgMzIuMyAyMC40IDU0LjcgNTMuMyA1NC43IDQ4LjIgMCA4My40LTQ5LjcgOTQuMy05MS43IDkuNC0zNy43IDctMzkuNCAxMi4zLTQyLjEgMjAtMTAuMSAzNS44LTE2LjggNTguNC0xNi44IDExLjEgMCAxOSAyLjMgMzYuNyA1LjIgMS44IC4xIDQuMS0xLjcgNC4xLTMuNXoiXX0scHp0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImJpdHkiLGljb246WzUxMiw1MTIsW10sImYzN2EiLCJNODYuNSA2Ny4yYzk1LjQtODkuMiAyNDYuMS05MS4yIDM0My4xIDMuOCAxNC4zIDE0LjEtNi40IDM3LjEtMjIuNCAyMS41LTg0LjgtODIuNC0yMTUuOC04MC4zLTI5OC45LTMuMi0xNi4zIDE1LjEtMzYuNS04LjMtMjEuOC0yMi4xem05OC45IDQxOC42YzE5LjMgNS43IDI5LjMtMjMuNiA3LjktMzAtMTEyLjItMzMuOS0xNzUuOC0xNDkuNy0xNDcuNS0yNjEgNS0xOS42LTI0LjktMjguMS0zMC4yLTcuMS0zMi4xIDEyNy40IDQxLjEgMjU5LjggMTY5LjggMjk4LjF6bTE0OC4xLTJjMTIxLjktNDAuMiAxOTIuOS0xNjYuOSAxNjQuNC0yOTEtNC41LTE5LjctMzQuOS0xMy44LTMwIDcuOSAyNC4yIDEwNy43LTM3LjEgMjE3LjktMTQzLjIgMjUzLjQtMjEuMiA3LTEwLjQgMzYgOC44IDI5Ljd6bS02Mi45LTc5bC4yLTcxLjhjMC04LjItNi42LTE0LjgtMTQuOC0xNC44cy0xNC44IDYuNy0xNC44IDE0LjhsLS4yIDcxLjhjMCA4LjIgNi42IDE0LjggMTQuOCAxNC44czE0LjgtNi42IDE0LjgtMTQuOHptNzEtMjY5YzIuMSA5MC45IDQuNyAxMzEuOS04NS41IDEzMi41LTkyLjUtLjctODYuOS00NC4zLTg1LjUtMTMyLjUgMC0yMS44LTMyLjUtMTkuNi0zMi41IDBsMCA3MS42YzAgNjkuMyA2MC43IDkwLjkgMTE4IDkwLjEgNTcuMyAuOCAxMTgtMjAuOCAxMTgtOTAuMWwwLTcxLjZjMC0xOS42LTMyLjUtMjEuOC0zMi41IDB6Il19LGh6dD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ3cGV4cGxvcmVyIixpY29uOls1MTIsNTEyLFtdLCJmMmRlIiwiTTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDAgMjU2IDI1NiAwIDEgMSAtNTEyIDB6bTQ4MCAwYTIyNCAyMjQgMCAxIDAgLTQ0OCAwIDIyNCAyMjQgMCAxIDAgNDQ4IDB6TTE2MC45IDEyNC42bDg2LjkgMzcuMS0zNy4xIDg2LjktODYuOS0zNy4xIDM3LjEtODYuOXptMTEwIDE2OS4xbDQ2LjYgOTQtMTQuNiAwLTUwLTEwMC00OC45IDEwMC0xNCAwIDUxLjEtMTA2LjktMjIuMy05LjQgNi0xNCA2OC42IDI5LjEtNiAxNC4zLTE2LjUtNy4xek0yNTkuMSAxNzcuNGw2OC42IDI5LjQtMjkuNCA2OC4zLTY4LjMtMjkuMSAyOS4xLTY4LjZ6bTgwLjMgNDIuOWw1NC42IDIzLjEtMjMuNCA1NC4zLTU0LjMtMjMuMSAyMy4xLTU0LjN6Il19LGZ6dD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJtZWdhcG9ydCIsaWNvbjpbNTEyLDUxMixbXSwiZjVhMyIsIk0yMjIuNSAyMDkuNmwwIDY2LjIgMzMuNSAzMy41IDMzLjMtMzMuMyAwLTY2LjQtMzMuNC0zMy40LTMzLjQgMzMuNHpNMjU2IDhhMjQ4IDI0OCAwIDEgMCAwIDQ5NiAyNDggMjQ4IDAgMSAwIDAtNDk2ek00MDEuMSA0MjIuNGwtMjYuMSAxOS4yLTI2LTE5LjIgMC02NS41LTMzLjQtMzMuNC0zMy40IDMzLjQgMCA2NS41LTI2LjIgMTkuMi0yNi4xLTE5LjIgMC02NS41LTMzLjQtMzMuNC0zMy41IDMzLjQgMCA2NS41LTI2LjEgMTkuMi0yNi4xLTE5LjIgMC04NyA1OS41LTU5LjUgMC04Ny45IDU5LjUtNTkuNSAwLTc1LjYgMjYuMS0xOS4yIDI2LjEgMTkuMiAwIDc1LjYgNTkuNSA1OS41IDAgODcuNiA1OS43IDU5LjcgMCA4Ny4xLS4xIDB6Il19LG16dD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJsZWV0Y29kZSIsaWNvbjpbNDQ4LDUxMixbXSwiZTg2YSIsIk0yMzUuNCA5LjNDMjQ2LjUtMi41IDI2NS4xLTMuMiAyNzcgNy45czEyLjUgMjkuOCAxLjQgNDEuNmwtNDMgNDZjMjEuNSAzLjMgNDIuMSAxMS44IDU5LjEgMjUuNmw3NC42IDYwLjNjMTIuNiAxMC4yIDE0LjYgMjguOCA0LjQgNDEuNHMtMjguNyAxNC42LTQxLjQgNC40bC03NC42LTYwLjNjLTI2LjItMjEuMS03MS45LTE4LjItOTQuNSA1LjlMODEgMjYxYy0yMS41IDIzLTE5LjEgNjAgNS42IDg0LjJsOTEuMiA4OS40YzI0LjkgMjQgNjUuNiAyNCA5MC4xLS40bDUxLjEtNTFjMTEuNS0xMS41IDMwLjEtMTEuNSA0MS42IC4xczExLjQgMzAuMi0uMSA0MS43bC01MS4xIDUxYy00Ny4xIDQ3LjEtMTI0IDQ3LjctMTcxLjkgMS42bC05Mi05MC4yQy0xLjQgMzQxLjMtNiAyNjcuOSAzOCAyMjAuN0wyMzUuNCA5LjN6TTQxMS43IDI3My4yYzE2LjIgMCAyOS40IDEzLjIgMjkuNCAyOS41cy0xMy4yIDI5LjUtMjkuNCAyOS41bC0yMTYuOSAwYy0xNi4yIDAtMjkuNC0xMy4yLTI5LjQtMjkuNXMxMy4yLTI5LjUgMjkuNC0yOS41bDIxNi45IDB6Il19LGd6dD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJtZGIiLGljb246WzU3Niw1MTIsW10sImY4Y2EiLCJNMTcuNCAxNjAuNGwtMTAuNCAxOTEuNiA0My45IDAgNS42LTc5LjggMjcuOSA3OS44IDQ0LjcgMCAyNS41LTc3LjQgNC44IDc3LjQgNDUuNSAwLTEyLjgtMTkxLjYtNDUuNSAwLTQwLjcgMTE3LjMtNDIuMy0xMTcuMy00Ni4zIDB6bTI4MSAwbC00Ny45IDAgMCAxOTEuNiA0Ny45IDBzOTUgLjggOTQuMi05NS44Yy0uOC05NC4yLTk0LjItOTUuOC05NC4yLTk1LjhsMCAwem0tMS4yIDE0Ni41bDAtMTAyLjFzNDYgNC4zIDQ2LjggNTAuNi00Ni44IDUxLjUtNDYuOCA1MS41bDAgMHptMjM4LjMtNzQuMmM3LjItMTEuNCAxMC0yNSA4LTM4LjMtNS4zLTM1LjgtNTUuMS0zNC4zLTU1LjEtMzQuM2wtNTEuOSAwIDAgMTkxLjYgNDUuNSAwczg3IDQuOCA4Ny02My44YzAtNDMuMS0zMy41LTU1LjEtMzMuNS01NS4xbDAgMHptLTUxLjktMzEuOXMxMy42LTEuNiAxNiA5LjZjMS40IDYuNy00IDEyLTQgMTJsLTEyIDAgMC0yMS42em0tLjEgMTA5LjVsLjEtMjQuOSAwLTE4LjIgLjEgMHM0MS42LTQuNyA0MS4yIDIyLjRjLS4zIDI1LjctNDEuMyAyMC43LTQxLjMgMjAuN2wwIDB6Il19LGJ6dD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJwYWdlNCIsaWNvbjpbNTEyLDUxMixbXSwiZjNkNyIsIk0yNTYgNTA0QzExOSA1MDQgOCAzOTMgOCAyNTZTMTE5IDggMjU2IDhjMjAuOSAwIDQxLjMgMi42IDYwLjcgNy41TDUwLjMgMzkyIDI1NiAzOTIgMjU2IDUwNHptMC0xNDMuNmwwLTIxMy42LTE0OS40IDIxMy42IDE0OS40IDB6TTM1MiAzOTJsMCA5Mi43YzQ1LjctMTkuMiA4NC41LTUxLjcgMTExLjQtOTIuN0wzNTIgMzkyem01Ny40LTEzOC4ybC0yMS4yIDguNCAyMS4yIDguMyAwLTE2Ljd6bS0yMC4zIDU0LjVjLTYuNyAwLTggNi4zLTggMTIuOWwwIDcuNyAxNi4yIDAgMC0xMGMwLTUuOS0yLjMtMTAuNi04LjItMTAuNnpNNTA0IDI1NmMwIDM3LjMtOC4yIDcyLjctMjMgMTA0LjRsLTEyOSAwIDAtMzMzLjFDNDQxLjMgNjQuOCA1MDQgMTUzLjEgNTA0IDI1NnpNMzY4LjQgMTQzLjZsNjguMiAwIDAtNDcuNi0xMy45IDAgMCAzMi42LTEzLjkgMCAwLTI5LjYtMTMuOSAwIDAgMjkuNi0xMi43IDAgMC0zMi42LTEzLjkgMCAwIDQ3LjYgLjEgMHptNjguMSAxODUuM2wtMjYuNSAwIDAtMTFjMC0xNS40LTUuNi0yNS4yLTIwLjktMjUuMi0xNS40IDAtMjAuNyAxMC42LTIwLjcgMjUuOWwwIDI1LjMgNjguMiAwIDAtMTUtLjEgMHptMC0xMDNsLTY4LjIgMjkuNyAwIDEyLjQgNjguMiAyOS41IDAtMTYuNi0xNC40LTUuNyAwLTI2LjUgMTQuNC01LjkgMC0xNi45em0tNC44LTY4LjVsLTM1LjYgMCAwIDI2LjYgMTMuOSAwIDAtMTIuMiAxMSAwYzguNiAxNS44IDEuMyAzNS4zLTE4LjYgMzUuMy0yMi41IDAtMjguMy0yNS4zLTE1LjUtMzcuN2wtMTEuNi0xMC42Yy0xNi4yIDE3LjUtMTIuMiA2My45IDI3LjEgNjMuOSAzNCAwIDQ0LjctMzUuOSAyOS4zLTY1LjN6Il19LHZ6dD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ0aGUtcmVkLXlldGkiLGljb246WzUxMiw1MTIsW10sImY2OWQiLCJNNDg4LjcgMjQxLjdsMjAuNyA3LjFjLTkuNi0yMy45LTIzLjktMzctMzEuNy00NC44bDcuMS0xOC4yYy4yIDAgMTIuMy0yNy44LTIuNS0zMC43LS42LTExLjMtNi42LTI3LTE4LjQtMjctNy42LTEwLjYtMTcuNy0xMi4zLTMwLjctNS45LTkuMSA0LjQtMTcuNiAxMC0yNS4zIDE2LjUtNS4zLTYuNC0zIC40LTMtMjkuOC0zNy4xLTI0LjMtNDUuNC0xMS43LTc0LjggM2wuNSAuNWMtMjItNy43LTQ1LjEtMTIuMi02OC40LTEzLjMtNS41LTguNy0xOC42LTE5LjEtMjUuMS0yNS4xbDI0LjggNy4xYy01LjUtNS41LTI2LjgtMTIuOS0zNC4yLTE1LjIgMTguMi00LjEgMjkuOC0yMC44IDQyLjUtMzMtMzQuOS0xMC4xLTY3LjktNS45LTk3LjkgMTEuOGwxMi00NC4yLTEuOC0uNWMtMzEuNiAyNC4yLTMzIDQxLjktMzMuNyA0NS41LS45LTIuNC02LjMtMTkuNi0xNS4yLTI3LTMuMyA4LjEtMy41IDE3LjEtLjUgMjUuMyAzIDguNCA1LjkgMTQuOCA4LjQgMTguOS0xNi0zLjMtMjguMy00LjktNDkuMiAwbC0zLjcgMCAzMyAxNC4zYy0yMC4yIDE4LjktMzYuMSA0MS45LTQ2LjcgNjcuNGwtMS43IDguNCAxLjcgMS43IDcuNi00LjdjLTMuMyAxMS42LTUuMyAxOS40LTYuNiAyNS44LTEwLjkgMTIuMi0yMC4yIDI1LjgtMjcuOCA0MC4zLTE1IDEtMzEuOCAxMC44LTQwLjMgMTQuM2wzIDMuNCAyOC44IDFjLS41IDEtLjcgMi4yLTEuMiAzLjItNy4zIDYuNC0zOS44IDM3LjctMzMgODAuN2wyMC4yLTIyLjRjLjUgMS43IC43IDMuNCAxLjIgNS4yIDAgMjUuNSAuNCA4OS42IDY0LjkgMTUwLjUgNDMuNiA0MCA5NiA2MC4yIDE1Ny41IDYwLjIgMTIxLjcgMCAyMjMtODcuMyAyMjMtMjExLjUgNi44LTkuNy0xLjIgMyAxNi43LTI1LjFsMTMgMTQuMyAyLjUtLjVjLTEuOC0xMS43LTQuOC0yMy4xLTguOS0zNC4yLTEuNS00LjgtMy44LTkuMy02LjgtMTMuM2wwIDB6TTM5OC41IDExMS4ybC0uNSAyMS45YzUuNSAxOC4xIDE2LjkgMTcuMiAyMi40IDE3LjJsLTMuNC00LjcgMjIuNC01LjRjLTkgLjUtMTggLjUtMjcgMCAxMi44LTIuMSAzMy4zLTI5IDQzLTExLjMgMy40IDcuNiA2LjQgMTcuMiA5LjMgMjcuOGwxLjctNS45Yy0xLjMtNS0xLjgtMTAuMS0xLjctMTUuMiA1LjQgLjUgOC44IDMuNCA5LjMgMTAuMSAuNSA2LjQgMS43IDE0LjggMy40IDI1LjNsNC43LTExLjNjNC42IDAgNC41LTMuNi0yLjUgMjAuNy0yMC45LTguNy0zNS4xLTguNC00Ni41LTguNGwxOC4yLTE2Yy0yNS4zIDguMi0zMyAxMC44LTU0LjggMjAuOS0xLjEtNS40LTUtMTMuNS0xNi0xOS45LTMuMiAzLjgtMi44IC45LS43IDE0LjhsLTIuNSAwYy0xLjItOC4yLTQuMS0xNi04LjQtMjMuMWw0LjItMy40YzguNC03LjEgMTEuOC0xNC4zIDEwLjYtMjEuOS0uNS02LjQtNS40LTEzLjUtMTMuNS0yMC43IDUuNi0zLjQgMTUuMi0uNCAyOC4zIDguNXptLTM5LjYtMTAuMWMyLjcgMS45IDExLjQgNS40IDE4LjkgMTcuMiA0LjIgOC40IDQgOS44IDMuNCAxMS4xLS41IDIuNC0uNSA0LjMtMyA3LjEtMS43IDIuNS01LjQgNC43LTExLjggNy42LTcuNi0xMy0xNi41LTIzLjYtMjcuOC0zMS4ybDIwLjMtMTEuOHptLTI2Ny40IDQybDEuMi0xLjdjMS4yLTIuOSA0LjItNy42IDkuMy0xNS4ybDIuNS0zLjQtMTMgMTIuMyA1LjQtNC43LTEwLjEgOS4zLTQuMiAxLjJjMTIuMy0yNC4xIDIzLjEtNDEuMyAzMi41LTUwLjIgOS4zLTkuMyAxNi0xNiAyMC4yLTE5LjRsLTYuNCAxLjJjLTExLjMtNC4yLTE5LjQtNy4xLTI0LjgtOC40IDIuNS0uNSAzLjctLjUgMy4yLS41IDEwLjMgMCAxNy41IC41IDIwLjkgMS4yIDUuMiAxLjcgMTAuNiAyLjUgMTYgMi41bC41LTEuNy04LjQtMzUuOCAxMy41IDI5YzIuOC00LjQgNC44LTkuMiA1LjktMTQuMyAxLjctNi40IDUuNC0xMyAxMC4xLTE5LjRzNy42LTEwLjYgOS4zLTExLjNjLTIuNiA4LjMtNC43IDE2LjgtNi40IDI1LjNsLTEuNyA3LjEtLjUgNC43IDIuNSAyLjVjMjEuOS0xMy41IDQ1LjUtMTkuNCA3MS4zLTE4LjlsMjEuMSAuNWMtMTEuOCAxMy41LTI3LjggMjEuOS00OC41IDI0LjgtNy43IDEuNC0xNS42IDIuNC0yMy40IDIuOWwtLjItLjUtMi41LTEuMmMtNC44LTEtOS43LS4zLTE0IDItMi41LS4yLTQuOS0uNS03LjEtLjdsLTIuNSAxLjcgLjUgMS4yYzIgLjIgMy45IC41IDYuMiAuN2wtMiAzLjQgMy40LS41LTEwLjYgMTEuM2MtNC4yIDMtNS40IDYuNC00LjIgOS4zbDUuNC0zLjQgMS4yIDBjNi4xLTguMiAxNS4yLTEzLjYgMjUuMy0xNS4ybDAtM2M2LjQgLjUgMTMgMSAxOS40IDEuMiA2LjQgMCA4LjQgLjUgNS40IDEuMiA3LjIgNCAxNC4xIDguNiAyMC43IDEzLjUgMTMuNSAxMC4xIDIzLjYgMjEuOSAzMCAzNS40IDguOCAxOC4yIDEzLjUgMzcuMSAxMy41IDU2LjYgMCA5LjUtMSAxOS0zIDI4LjMtMy41IDE1LjktOC45IDMxLjMtMTYgNDZsMi41IC41YzE4LjItMTkuNyA0MS45LTE2IDQ5LjItMTZsLTYuNCA1LjkgMjIuNCAxNy43LTEuNyAzMC43Yy01LjQtMTIuMy0xNi41LTIxLjEtMzMtMjcuOCAxNi41IDE0LjggMjMuNiAyMS4xIDIxLjkgMjAuMi00LjgtMi44LTMuNS0xLjktMTAuOC0zLjcgNC4xIDQuMSAxNy41IDE4LjggMTguMiAyMC43bC4yIC4yLS4yIC4yYzAgMS44IDEuNi0xLjItMTQgMjIuOS03NS4yLTE1LjMtMTA2LjMtNDIuNy0xNDEuMi02My4ybDExLjggMS4yYy0xMS44LTE4LjUtMTUuNi0xNy43LTM4LjQtMjYuMWwxMC42LTguNGMtOC44LTMtMTguMi0zLTI4LjMgLjVsNy42LTEwLjYtMS4yLTEuN2MtMTQuOSA0LjMtMTkuOCA5LjItMjIuNiAxMS4zLTEuMS01LjUtMi44LTEyLjQtMTIuMy0yOC44bC0xLjIgMjctMTMuMi01YzEuNS0yNS4yIDUuNC01MC41IDEzLjItNzQuNnpNMzY4IDQ3My4xYy00OS45IDI1LTU2LjEgMjIuNC01OSAyMy45LTI5LjgtMTEuOC01MC45LTMxLjctNjMuNS01OC44bDMwIDE2LjVjLTkuOC05LjMtMTguMy0xNi41LTM4LjQtNDQuM2wxMS44IDIzLjEtMTcuNy03LjZjMTQuMiAyMS4xIDIzLjUgNTEuNyA2Ni42IDczLjUtMTIwLjggMjQuMi0xOTktNzIuMS0yMDAuOS03NC4zIDExLjEgOS4yIDIyLjkgMTcuNSAzNS40IDI0LjggMy40IDEuNyA3LjEgMi41IDEwLjEgMS4ybC0xNi0yMC43YzkuMiA0LjIgOS41IDQuNSA2OS4xIDI5LTQyLjUtMjAuNy03My44LTQwLjgtOTMuMi02MC4yLS41IDYuNC0xLjIgMTAuMS0xLjIgMTAuMSA4LjcgNy4zIDE1LjggMTYuNCAyMC43IDI2LjYtMzktMTguOS01Ny42LTQ3LjYtNzEuMy04Mi42IDQ5LjkgNTUuMSAxMTguOSAzNy41IDEyMC41IDM3LjEgMzQuOCAxNi40IDY5LjkgMjMuNiAxMTMuOSAxMC42IDMuMyAwIDIwLjMgMTcgMjUuMyAzOS4xbDQuMi0zLTIuNS0yMy42YzkgOSAyNC45IDIyLjYgMzQuNCAxMy0xNS42LTUuMy0yMy41LTkuNS0yOS41LTMxLjcgNC42IDQuMiA3LjYgOSAyNy44IDE1bDEuMi0xLjItMTAuNS0xNC4yYzExLjctNC44LTMuNSAxIDMyLTEwLjggNC4zIDM0LjMgOSA0OS4yIC43IDg5LjV6TTQ4My4zIDI1OC43bC0yLjUgLjUgMyA5LjNjLTMuNSA1LjktMjMuNyA0NC4zLTcxLjYgNzkuNy0zOS41IDI5LjgtNzYuNiAzOS4xLTgwLjkgNDAuM2wtNy42LTcuMS0xLjIgMyAxNC4zIDE2LTcuMS00LjcgMy40IDQuMi0xLjIgMC0yMS45LTEzLjUgOS4zIDI2LjYtMTktMjcuOS0xLjIgMi41IDcuNiAyOWMtNi4xLTguMi0yMS0zMi42LTU2LjgtMzkuNmwzMi41IDIxLjJjLTMxLjIgNC43LTYzIDIuNS05My4yLTYuNC00LjItMS4yLTguOS0yLjUtMTMuNS00LjJsMS4yLTMtNDQuOC0yMi40IDI2LjEgMjIuNGMtNTcuNyA5LjEtMTEzLTI1LjQtMTI2LjQtODMuNEwyOS4zIDI4NC44IDcgMzA3LjFjMTkuNS01Ny41IDI1LjYtNTcuOSA1MS40LTcwLjEtOS4xLTUuMy0xLjYtMy4zLTM4LjQtOS4zIDE1LjgtNS44IDMzLTE1LjQgNzMgNS4yIDEuMi0uNyAyLjQtMS4zIDMuNy0xLjcgLjYtMy4yIC40LS44IDEtMTEuOCAzLjkgMTAgMy42IDguNyAzIDkuM2wxLjcgLjVjMTIuNy02LjUgOC45LTQuNSAxNy04LjlsLTUuNCAxMy41IDIyLjMtNS44LTguNCA4LjQgMi41IDIuNWM0LjUtMS44IDMwLjMgMy40IDQwLjggMTZsLTIzLjYtMi41YzM5LjQgMjMgNTEuNSA1NCA1NS44IDY5LjZsMS43LTEuMmMtMi44LTIyLjMtMTIuNC0zMy45LTE2LTQwLjEgNC4yIDUgMzkuMiAzNC42IDExMC40IDQ2LTExLjMtLjUtMjMuMSA1LjQtMzQuOSAxOC45bDQ2LjctMjAuMi05LjMgMjEuOWM3LjYtMTAuMSAxNC44LTIzLjYgMjEuMi0zOS42bDAtLjUgMS4yLTMtMS4yIDE2YzEzLjUtNDEuOCAyNS4zLTc4LjUgMzUuNC0xMDkuN2wxMy41LTI3LjggMC0yLTUuNC00LjIgMTAuMSAwIDUuOSA0LjIgMi41LTEuMi0zLjQtMTYgMTIuMyAxOC45IDQxLjgtMjAuMi0xNC44IDEzIC41IDIuOSAxNy43LS41YzExLjEgLjQgMjIuMSAxLjggMzMgNC4ybC0yMy42IDIuNS0xLjIgMyAyNi42IDIzLjFjOS45IDkuOSAxOC45IDIwLjYgMjcgMzItMTEuMi0zLjMtMTAuMy0zLjQtMjEuMi0zLjRsMTIuMyAzMi41LTguOS0xMi44em0tNi4xLTcxLjNsLTMuOSAxMy0xNC4zLTExLjggMTguMi0xLjJ6bS0yNTQuOCA3LjFjMS43IDEwLjYgNC43IDE3LjcgOC44IDIxLjktOS4zIDYuNi0yNy41IDEzLjktNDYuNSAxNmwuNSAxLjJjOC4zIDEuMyAxNi45IC40IDI0LjgtMi41bC03LjEgMTNjNC4yLTEuNyAxMC4xLTcuMSAxNy43LTE0LjggMTEuOS01LjUgMTIuNy01LjEgMjAuMi0xNi0xMi43LTYuNC0xNS43LTEzLjctMTguNC0xOC44em0zLjctMTAyLjNjLTYuNC0zLjQtMTAuNiAzLTEyLjMgMTguOXMyLjUgMjkuNSAxMS44IDM5LjYgMTguMiAxMC42IDI2LjEgMyAzLjQtMjMuNi0xMS4zLTQ3LjdjLTMuNS01LjctOC40LTEwLjUtMTQuMy0xMy44bDAgMHptLTQuNyA0Ni4zYzUuNCAyLjIgMTAuNSAxLjkgMTIuMy0xMC42bDAtNC43LTEuMiAuNWMtNC4zLTMuMS0yLjUtNC41LTEuNy02LjJsLjUtLjVjLS45LTEuMi01LTguMS0xMi41IDQuNy0uNS0xMy41IC41LTIxLjkgMy0yNC44IDEuMi0yLjUgNC43LTEuMiAxMS4zIDQuMiA2LjQgNS40IDExLjMgMTYgMTUuMiAzMi41IDYuNSAyOC0xOS44IDI2LjItMjYuOSA0Ljl6bS00NS01LjVjMS42IC4zIDkuMy0xLjEgOS4zLTE0LjhsLS41IDBjLTUuNC0xLjEtMi4yLTUuNS0uNy01LjktMS43LTMtMy40LTQuMi01LjQtNC43LTguMSAwLTExLjYgMTIuNy04LjEgMjEuMiAuNSAxLjEgMS4zIDIgMi4yIDIuOHMyIDEuMiAzLjIgMS40bDAgMHptNDAuMS01MC4xbC0yLjUgLjUgLjUgM2M5LjEtLjUgMTguMSAxLjUgMjYuMSA1LjktMi41LTUuNS0xMC0xNC4zLTI4LjMtMTQuM2wuNSAyLjUgMy43IDIuNHptLTcxLjggNDkuNGMyMS43IDE2LjggMTYuNSAyMS40IDQ2LjUgMjMuNmwtMi45LTQuN2M4LjQtNy4yIDEzLjctMTcuMyAxNC44LTI4LjMgMS43LTE2LTEuMi0yOS41LTguOC00MS4zbDEzLTcuNmMwLS4zIDAtLjYtLjEtLjlzLS4yLS42LS40LS44Yy0yLjItLjktNC42LTEuMi03LS45cy00LjYgMS4yLTYuNSAyLjZjLTEyLjcgNi43LTI4IDIwLjktMjkgMjIuNC0xLjcgMS43LTMuNCA1LjktNS40IDEzLjUtMS45IDcuNy0yLjkgMTUuNi0yLjkgMjMuNi00LjctOC0xMC41LTYuNC0xOS45LTUuOWw3LjEgNy42Yy0xNi41IDAtMjMuMyAxNS40LTIzLjYgMTYgNi44IDAgNC42LTcuNiAzMC0xMi4zLTQuMy02LjMtMy4zLTUtNC45LTYuNnptMTguNy0xOC43YzEuMi03LjYgMy40LTEzIDYuNC0xNy4yIDUuNC02LjQgMTAuNi0xMC4xIDE2LTExLjggNC4yLTEuNyA3LjEgMS4yIDEwLjEgOS4zIDIuNSA4LjIgMy41IDE2LjggMyAyNS4zLS41IDkuMy0zLjQgMTcuMi04LjQgMjMuMS0yLjkgMy40LTUuNCA1LjktNi40IDcuNi0zLjggLjQtNy42IC4yLTExLjMtLjVsLTcuMS0zLjQtNS40LTYuNGMuOC0xMCAxLjMtMTguOCAzLjEtMjZ6bTQyIDU2LjFjLTM0LjggMTQuNC0zNC43IDE0LTM2LjEgMTQuMy0yMC44IDQuNy0xOS0yNC40LTE4LjktMjQuOGw1LjktMS4yLS41LTIuNWMtMjAuMi0yLjYtMzEgNC4yLTMyLjUgNC45IC41IC41IDMgMy40IDUuOSA5LjMgNC4yLTYuNCA4LjgtMTAuMSAxNS4yLTEwLjYtMS43IDExLjItMS4yIDIyLjcgMS43IDMzLjcgLjEgLjUgMi42IDE3LjQgMjcuNSAyNC4xIDExLjMgMyAyNyAxLjIgNDguOS01LjRsLTkuMiAuNWMtNC4yLTE0LjgtNi40LTI0LjgtNS45LTI5LjUgMTEuMy04LjggMjEuOS0xMS4zIDMwLjctNy42bDIuNSAwLTExLjgtNy42LTcuMSAuNWMtNS45IDEuMi0xMi4zIDQuMi0xOS40IDguNGwzLjEtNi41eiJdfSx4enQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiamlyYSIsaWNvbjpbNTEyLDUxMixbXSwiZjdiMSIsIk00OTguNSAyNDEuN2MtNzIuOS03Mi43LTE2OS40LTE2OS45LTI0MS41LTI0MS43LTE2NS41IDE2NC45LTI0Mi41IDI0MS43LTI0Mi41IDI0MS43LTcuOSA3LjktNy45IDIwLjcgMCAyOC43IDEzMi44IDEzMi4zIDYxLjggNjEuNSAyNDIuNSAyNDEuNiAzNzkuNC0zNzggMTUuNy0xNi43IDI0MS41LTI0MS43IDgtNy45IDgtMjAuNyAwLTI4LjZ6TTI1NyAzMzEuN2wtNzYtNzUuNyA3Ni03NS43IDc2IDc1LjctNzYgNzUuN3oiXX0seXp0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImZlZGV4IixpY29uOls2NDAsNTEyLFtdLCJmNzk3IiwiTTU4NiAyODQuNWw1My4zLTU5LjktNjIuNCAwLTIxLjcgMjQuOC0yMi41LTI0LjgtMTE4LjcgMCAwLTE2IDU2LjEgMCAwLTQ4LjEtMTUxLjIgMCAwIDc1LjUtLjUgMGMtOS42LTExLTIxLjUtMTQuOC0zNS40LTE0LjgtMjguNCAwLTQ5LjggMTkuNC01Ny4zIDQ0LjktMTgtNTkuNC05Ny40LTU3LjYtMTIxLjktMTRsMC0yNC4yLTU0LjggMCAwLTI2LjIgNjAgMCAwLTQxLjEtMTA5IDAgMCAxODQuNCA0OSAwIDAtNzcuNSA0OC45IDBjLTEuNSA1LjctMi4zIDExLjgtMi4zIDE4LjIgMCA3My4xIDEwMi42IDkxLjQgMTMwLjIgMjMuN2wtNDIgMGMtMTQuNyAyMC45LTQ1LjggOC45LTQ1LjgtMTQuNmw4NS41IDBjMy43IDMwLjUgMjcuNCA1Ni45IDYwLjEgNTYuOSAxNC4xIDAgMjctNi45IDM0LjktMTguNmwuNSAwIDAgMTEuOSAyMTIuMiAwIDIyLjEtMjUgMjIuMyAyNSA2NC40IDAtNTQtNjAuNXpNMTM5LjMgMjY3LjljNi4xLTI2LjMgNDEuNy0yNS42IDQ2LjUgMGwtNDYuNSAwem0xNTMuNCA0OC45Yy0zNC42IDAtMzQtNjIuOCAwLTYyLjggMzIuNiAwIDM0LjUgNjIuOCAwIDYyLjh6bTE2Ny44IDE5LjFsLTk0LjQgMCAwLTE2Ni41IDk1IDAgMCAzMC4yLTU2LjEgMCAwIDMzLjkgNTUuNSAwIDAgMjguMS01Ni4xIDAgMCA0NC43IDU2LjEgMCAwIDI5LjZ6bS00NS45LTM5LjhsMC0yNC40IDU2LjEgMCAwLTQ0IDUwLjcgNTctNTAuNyA1NyAwLTQ1LjYtNTYuMSAwem0xMzguNiAxMC4zbC0yNi4xIDI5LjUtMzguMSAwIDQ1LjYtNTEuMi00NS42LTUxLjIgMzkuNyAwIDI2LjYgMjkuMyAyNS42LTI5LjMgMzguNSAwLTQ1LjQgNTEgNDYgNTEuNC00MC41IDAtMjYuMy0yOS41eiJdfSx3enQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZXZlcm5vdGUiLGljb246WzM4NCw1MTIsW10sImY4MzkiLCJNMTIxLjEgMTMyLjJjMS42IDIyLjMtMTcuNiAyMS42LTIxLjYgMjEuNi02OC45IDAtNzMuNi0xLTgzLjYgMy4zLS42IC4yLS43IDAtLjQtLjRMMTI0LjEgNDYuNGMuNC0uNCAuNi0uMiAuNCAuNC00LjQgMTAtMy40IDE1LjEtMy40IDg1LjR6bTc5IDMwOGMtMTQuNy0zNy4xIDEzLTc2LjkgNTIuNS03Ni42IDE3LjUgMCAyMi42IDIzLjIgNy45IDMxLjQtNi4yIDMuMy0yNC45IDEuNy0yNS4xIDE5LjIgMCAxNy4xIDE5LjcgMjUgMzEuMiAyNC45IDYgMCAxMS45LTEuMiAxNy41LTMuNXMxMC42LTUuNyAxNC44LTkuOSA3LjYtOS4zIDkuOS0xNC44IDMuNS0xMS41IDMuNS0xNy41bDAtLjFjMC0xMS42LTcuOC00Ny4yLTQ3LjUtNTUuMy03LjctMS41LTY1LTYuMy02OC40LTUwLjUtMy43IDE2LjktMTcuNCA2My41LTQzLjEgNjkuMS04LjcgMS45LTY5LjcgNy42LTExMi45LTM2LjggMCAwLTE4LjYtMTUuMi0yOC4yLTU4LTMuNC0xNS43LTkuMy0zOS43LTExLjEtNjIgMC0xOCAxMS4xLTMwLjQgMjUuMS0zMi4yIDgxIDAgOTAgMi4zIDEwMS03LjggOS44LTkuMiA3LjgtMTUuNSA3LjgtMTAyLjggMS04LjMgNy44LTMwLjggNTMuNC0yNC4xIDYgLjkgMzEuOSA0LjIgMzcuNSAzMC42TDI5MCA3NC44YzIwLjQgMy43IDcwLjkgNyA4MC42IDU3LjkgMjIuNyAxMjEuMSA4LjkgMjM4LjUgNy44IDIzOC41LTE2IDExNC40LTExMS4xIDEwOC45LTExMS4xIDEwOC45LTE5LS4yLTU0LjItOS40LTY3LjMtMzkuOGwwIDB6TTI4MSAyMzUuNGMtMSAxLjktMi4yIDYgLjkgNyAxNC4xIDQuOSAzOS44IDYuOCA0NS45IDUuNSAzLjEtLjIgMy4xLTQuNCAyLjUtNi42LTMuNS0yMS44LTQwLjgtMjYuNS00OS4yLTUuOWwwIDB6Il19LGt6dD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ1c2IiLGljb246WzY0MCw1MTIsW10sImYyODciLCJNNjMzLjUgMjU2YzAgMy4xLTEuNyA2LjEtNC41IDcuNUw1MzkuOSAzMTdjLTEuNCAuOC0yLjggMS40LTQuNSAxLjQtMS40IDAtMy4xLS4zLTQuNS0xLjEtMi44LTEuNy00LjUtNC41LTQuNS03LjhsMC0zNS42LTIzMC43IDBjMjUuMyAzOS42IDQwLjUgMTA2LjkgNjkuNiAxMDYuOWwyNi43IDAgMC0yNi44YzAtNSAzLjktOC45IDguOS04LjlsODkuMSAwYzUgMCA4LjkgMy45IDguOSA4LjlsMCA4OS4xYzAgNS0zLjkgOC45LTguOSA4LjlsLTg5LjEgMGMtNSAwLTguOS0zLjktOC45LTguOWwwLTI2LjctMjYuNyAwYy03NS40IDAtODEuMS0xNDIuNS0xMjQuNy0xNDIuNWwtMTAwLjMgMGMtOC4xIDMwLjYtMzUuOSA1My41LTY5IDUzLjUtMzkuMy0uMS03MS4zLTMyLjEtNzEuMy03MS40czMyLTcxLjMgNzEuMy03MS4zYzMzLjEgMCA2MSAyMi44IDY5IDUzLjUgMzkuMSAwIDQzLjkgOS41IDc0LjYtNjAuNCA0MC4xLTg5LjEgNTguMS04Mi4xIDEwOC45LTgyLjEgNy41LTIwLjkgMjctMzUuNiA1MC40LTM1LjYgMjkuNSAwIDUzLjUgMjMuOSA1My41IDUzLjVzLTIzLjkgNTMuNS01My41IDUzLjVjLTIzLjQgMC00Mi45LTE0LjgtNTAuNC0zNS42bC0yOS44IDBjLTI5LjEgMC00NC4zIDY3LjQtNjkuNiAxMDYuOWwzMDIuMSAwIDAtMzUuNmMwLTMuMyAxLjctNi4xIDQuNS03LjhzNi40LTEuNCA4LjkgLjNMNjI5IDI0OC44YzIuOCAxLjEgNC41IDQuMSA0LjUgNy4yeiJdfSxTenQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiYW5ncnljcmVhdGl2ZSIsaWNvbjpbNjQwLDUxMixbXSwiZjM2ZSIsIk02NDAgMjM4LjJsLTMuMiAyOC4yLTM0LjUgMi4zLTIgMTguMSAzNC41LTIuMy0zLjIgMjguMi0zNC40IDIuMi0yLjMgMjAuMSAzNC40LTIuMi0zIDI2LjEtNjQuNyA0LjEgMTIuNy0xMTMuMi00Ny4zIDExNS40LTMxLjkgMi0yMy44LTExNy44IDMwLjMtMiAxMy42IDc5LjQgMzEuNy04Mi40IDkzLjEtNi4yek00MjYuOCAzNzEuNWwyOC4zLTEuOCAxMi45LTEyMC4xLTI4LjQgMS45LTEyLjggMTIwek0xNjIgMzg4LjFsLTE5LjQtMzYtMy41IDM3LjQtMjguMiAxLjcgMi43LTI5LjFjLTExIDE4LTMyIDM0LjMtNTYuOSAzNS44LTMyLjggMi01OS43LTIwLjktNTYuNC01OC4yIDIuNi0yOS4zIDI2LjctNjIuOCA2Ny41LTY1LjQgMzcuNy0yLjQgNDcuNiAyMy4yIDUxLjMgMjguOGwyLjgtMzAuOCAzOC45LTIuNWMyMC4xLTEuMyAzOC43IDMuNyA0Mi41IDIzLjdsMi42LTI2LjYgNjQuOC00LjItMi43IDI3LjktMzYuNCAyLjQtMS43IDE3LjkgMzYuNC0yLjMtMi43IDI3LjktMzYuNCAyLjMtMS45IDE5LjkgMzYuMy0yLjMtMi4xIDIwLjggNTUtMTE3LjIgMjMuOC0xLjYgMzIuMSAxMTAuNiA4LjktODUuNi0yMi4zIDEuNCAyLjktMjcuOSA3NS00LjktMyAyOC0yNC4zIDEuNi05LjcgOTEuOS01OCAzLjctNC4zLTE1LjYtMzkuNCAyLjUtOCAxNi4zLTEyNi4yIDcuN3ptLTQ0LjMtNzAuMmwtMjYuNCAxLjdjLTYuNy0xMi40LTE0LjQtMTYuNi0yNi4zLTE1LjgtMTkgMS4yLTMzLjMgMTcuNS0zNC42IDMzLjMtMS40IDE2IDcuMyAzMi41IDI4LjcgMzEuMiAxMi44LS44IDIxLjMtOC42IDI4LjktMTguOWwyNy0xLjcgMi43LTI5Ljh6bTU2LjEtNy43YzEuMi0xMi45LTcuNi0xMy42LTI2LjEtMTIuNEwxNDUgMzI2LjNjMTQuMi0uOSAyNy41LTIuMSAyOC44LTE2LjF6TTE5NC45IDM4MWw1LjgtNjBjLTUgMTMuNS0xNC43IDIxLjEtMjcuOSAyNi42TDE5NC45IDM4MXptMTM1LjQtNDVsLTcuOS0zNy44LTE1LjggMzkuMyAyMy43LTEuNXpNMTYwLjIgMjYxLjRsLTQuMy0xNy41LTM5LjYgMi42LTguMSAxOC4yLTMxLjkgMi4xIDU3LTEyMS45IDIzLjktMS42IDMwLjcgMTAyIDkuOS0xMDQuNyAyNy0xLjggMzcuOCA2My42IDYuNS02Ni42IDI4LjUtMS45LTQgNDEuMmM3LjQtMTMuNSAyMi45LTQ0LjcgNjMuNi00Ny41IDQwLjUtMi44IDUyLjQgMjkuMyA1My40IDMwLjNsMy4zLTMyIDM5LjMtMi43YzEyLjctLjkgMjcuOCAuMyAzNi4zIDkuN2wtNC40LTExLjkgMzIuMi0yLjIgMTIuOSA0My4yIDIzLTQ1LjcgMzEtMi4yLTQzLjYgNzguNC00LjggNDQuMy0yOC40IDEuOSA0LjgtNDQuMy0xNS44LTQzYzEgMjIuMy05LjIgNDAuMS0zMiA0OS42bDI1LjIgMzguOC0zNi40IDIuNC0xOS4yLTM2LjgtNCAzOC4zLTI4LjQgMS45IDMuMy0zMS41Yy02LjcgOS4zLTE5LjcgMzUuNC01OS42IDM4LTI2LjIgMS43LTQ1LjYtMTAuMy01NS40LTM5LjJsLTQgNDAuMy0yNSAxLjYtMzcuNi02My4zLTYuMyA2Ni4yLTU2LjggMy43em0yNzYuNi04Mi4xYzEwLjItLjcgMTcuNS0yLjEgMjEuNi00LjMgNC41LTIuNCA3LTYuNCA3LjYtMTIuMSAuNi01LjMtLjYtOC44LTMuNC0xMC40LTMuNi0yLjEtMTAuNi0yLjgtMjIuOS0ybC0yLjkgMjguOHpNMzI3LjcgMjE0YzUuNiA1LjkgMTIuNyA4LjUgMjEuMyA3LjkgNC43LS4zIDkuMS0xLjggMTMuMy00LjEgNS41LTMgMTAuNi04IDE1LjEtMTQuM2wtMzQuMiAyLjMgMi40LTIzLjkgNjMuMS00LjMgMS4yLTEyLTMxLjIgMi4xYy00LjEtMy43LTcuOC02LjYtMTEuMS04LjEtNC0xLjctOC4xLTIuOC0xMi4yLTIuNS04IC41LTE1LjMgMy42LTIyIDkuMi03LjcgNi40LTEyIDE0LjUtMTIuOSAyNC40LTEuMSA5LjYgMS40IDE3LjMgNy4yIDIzLjN6bS0yMDEuMyA4LjJsMjMuOC0xLjYtOC4zLTM3LjYtMTUuNSAzOS4yeiJdfSxfenQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToibWl6dW5pIixpY29uOls1MTIsNTEyLFtdLCJmM2NjIiwiTTI1NiA4YTI0OCAyNDggMCAxIDAgMCA0OTYgMjQ4IDI0OCAwIDEgMCAwLTQ5NnpNMTc2IDM1OS45Yy0zMS40IDEwLjYtNTguOCAyNy4zLTgwIDQ4LjJMOTYgMTM2YzAtMjIuMSAxNy45LTQwIDQwLTQwczQwIDE3LjkgNDAgNDBsMCAyMjMuOXpNMjk2IDM1MGMtMTIuOS0yLTI2LjItMy4xLTM5LjgtMy4xLTEzLjggMC0yNy4yIDEuMS00MC4yIDMuMWwwLTIxNGMwLTIyLjEgMTcuOS00MCA0MC00MHM0MCAxNy45IDQwIDQwbDAgMjE0em0xMjAgNTcuN2MtMjEuMi0yMC44LTQ4LjYtMzcuNC04MC00OEwzMzYgMTM2YzAtMjIuMSAxNy45LTQwIDQwLTQwczQwIDE3LjkgNDAgNDBsMCAyNzEuN3oiXX0sTXp0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6Iml0Y2gtaW8iLGljb246WzUxMiw1MTIsW10sImY4M2EiLCJNNzEuOSAzNC44QzUwLjIgNDcuNyA3LjQgOTYuOCA3IDEwOS43bDAgMjEuM2MwIDI3LjEgMjUuMyA1MC44IDQ4LjIgNTAuOCAyNy42IDAgNTAuNS0yMi44IDUwLjUtNTAgMCAyNy4xIDIyLjIgNTAgNDkuOCA1MHM0OS0yMi44IDQ5LTUwYzAgMjcuMSAyMy42IDUwIDUxLjIgNTBsLjUgMGMyNy42IDAgNTEuMi0yMi44IDUxLjItNTAgMCAyNy4xIDIxLjUgNTAgNDkgNTBzNDkuOC0yMi44IDQ5LjgtNTBjMCAyNy4xIDIzIDUwIDUwLjUgNTAgMjMgMCA0OC4zLTIzLjggNDguMy01MC44bDAtMjEuM2MtLjQtMTIuOS00My4yLTYyLjEtNjQuOS03NS02Ny40LTIuMy0xMTQuMi0yLjctMTg0LTIuN1M5MS4xIDMzLjEgNzEuOSAzNC44ek0yMDQuMiAxNjkuMmMtMjIgMzguNC03Ny45IDM4LjctOTkuOCAuMi0xMy4yIDIzLjEtNDMuMiAzMi4xLTU2IDI3LjctMy45IDQwLjItMTMuNyAyMzcuMSAxNy43IDI2OS4yIDgwIDE4LjcgMzAyLjEgMTguMSAzNzkuOCAwIDMxLjYtMzIuMyAyMS4zLTIzMiAxNy43LTI2OS4yLTEyLjkgNC40LTQyLjktNC42LTU2LTI3LjctMjIgMzguNS03Ny44IDM4LjEtOTkuOC0uMi03LjEgMTIuNS0yMyAyOC45LTUxLjggMjguOS0xMC40IC4zLTIwLjgtMi4yLTI5LjktNy4zcy0xNi43LTEyLjYtMjEuOS0yMS42bDAgMHptLTQxLjYgNTMuOGMxNi41IDAgMzEuMSAwIDQ5LjIgMTkuOCAyOS4zLTMgNTguOS0zIDg4LjIgMCAxOC4yLTE5LjcgMzIuOC0xOS43IDQ5LjItMTkuNyA1Mi4zIDAgNjUuMiA3Ny41IDgzLjkgMTQ0LjQgMTcuMyA2Mi4yLTUuNSA2My43LTM0IDYzLjctNDIuMS0xLjYtNjUuNS0zMi4yLTY1LjUtNjIuOC0zOS4zIDYuNC0xMDEuOSA4LjgtMTU1LjYgMCAwIDMwLjYtMjMuMyA2MS4yLTY1LjUgNjIuOC0yOC40LS4xLTUxLjItMS42LTMzLjktNjMuNyAxOC43LTY3IDMxLjYtMTQ0LjQgODMuOS0xNDQuNGwwLS4xek0yNTYgMjcwLjhzLTQ0LjQgNDAuOC01Mi40IDU1LjJsMjktMS4yIDAgMjUuM2MwIDEuNSAyMS4zIC4yIDIzLjMgLjIgMTEuNiAuNSAyMy4zIDEgMjMuMy0uMmwwLTI1LjMgMjkgMS4yYy04LTE0LjUtNTIuNC01NS4yLTUyLjQtNTUuMmwuMSAweiJdfSx6enQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToid2luZG93cyIsaWNvbjpbNDQ4LDUxMixbXSwiZjE3YSIsIk0wIDkzLjdsMTgzLjYtMjUuMyAwIDE3Ny40LTE4My42IDAgMC0xNTIuMXpNMCA0MTguM2wxODMuNiAyNS4zIDAtMTc1LjItMTgzLjYgMCAwIDE0OS45em0yMDMuOCAyOGwyNDQuMiAzMy43IDAtMjExLjYtMjQ0LjIgMCAwIDE3Ny45em0wLTM4MC42bDAgMTgwLjEgMjQ0LjIgMCAwLTIxMy44LTI0NC4yIDMzLjd6Il19LEN6dD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzdHVtYmxldXBvbiIsaWNvbjpbNTEyLDUxMixbXSwiZjFhNCIsIk01MDIuOSAyNjZsMCA2OS43YzAgNjIuMS01MC4zIDExMi40LTExMi40IDExMi40LTYxLjggMC0xMTIuNC00OS44LTExMi40LTExMS4zbDAtNzAuMiAzNC4zIDE2IDUxLjEtMTUuMiAwIDcwLjZjMCAxNC43IDEyIDI2LjUgMjYuNyAyNi41UzQxNyAzNTIuNyA0MTcgMzM4bDAtNzIgODUuOSAwek0yNzguMiAyMDcuOGwzNC4zIDE2IDUxLjEtMTUuMiAwLTM1LjZjMC02MC41LTUxLjEtMTA5LTExMi4xLTEwOS02MC44IDAtMTEyLjEgNDguMi0xMTIuMSAxMDguMmwwIDE2Mi40YzAgMTQuOS0xMiAyNi43LTI2LjcgMjYuN1M4NiAzNDkuNSA4NiAzMzQuNmwwLTY4LjYtODYgMCAwIDY5LjdjMCA2MiA1MC4zIDExMi4zIDExMi40IDExMi4zIDYxLjYgMCAxMTIuNC00OS41IDExMi40LTExMC44bDAtMTYwLjNjMC0xNC43IDEyLTI2LjcgMjYuNy0yNi43czI2LjcgMTIgMjYuNyAyNi43bDAgMzAuOXoiXX0sTWI9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZ29vZ2xlIixpY29uOls1MTIsNTEyLFtdLCJmMWEwIiwiTTUwMCAyNjEuOEM1MDAgNDAzLjMgNDAzLjEgNTA0IDI2MCA1MDQgMTIyLjggNTA0IDEyIDM5My4yIDEyIDI1NlMxMjIuOCA4IDI2MCA4YzY2LjggMCAxMjMgMjQuNSAxNjYuMyA2NC45bC02Ny41IDY0LjljLTg4LjMtODUuMi0yNTIuNS0yMS4yLTI1Mi41IDExOC4yIDAgODYuNSA2OS4xIDE1Ni42IDE1My43IDE1Ni42IDk4LjIgMCAxMzUtNzAuNCAxNDAuOC0xMDYuOWwtMTQwLjggMCAwLTg1LjMgMjM2LjEgMGMyLjMgMTIuNyAzLjkgMjQuOSAzLjkgNDEuNHoiXX0sVHp0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImRpc2NvcmQiLGljb246WzU3Niw1MTIsW10sImYzOTIiLCJNNDkyLjUgNjkuOGMtLjItLjMtLjQtLjYtLjgtLjctMzguMS0xNy41LTc4LjQtMzAtMTE5LjctMzcuMS0uNC0uMS0uOCAwLTEuMSAuMXMtLjYgLjQtLjggLjhjLTUuNSA5LjktMTAuNSAyMC4yLTE0LjkgMzAuNi00NC42LTYuOC04OS45LTYuOC0xMzQuNCAwLTQuNS0xMC41LTkuNS0yMC43LTE1LjEtMzAuNi0uMi0uMy0uNS0uNi0uOC0uOHMtLjctLjItMS4xLS4yYy00MS4zIDcuMS04MS42IDE5LjYtMTE5LjcgMzcuMS0uMyAuMS0uNiAuNC0uOCAuNy03Ni4yIDExMy44LTk3LjEgMjI0LjktODYuOSAzMzQuNSAwIC4zIC4xIC41IC4yIC44cy4zIC40IC41IC42YzQ0LjQgMzIuOSA5NCA1OCAxNDYuOCA3NC4yIC40IC4xIC44IC4xIDEuMSAwcy43LS40IC45LS43YzExLjMtMTUuNCAyMS40LTMxLjggMzAtNDguOCAuMS0uMiAuMi0uNSAuMi0uOHMwLS41LS4xLS44LS4yLS41LS40LS42LS40LS4zLS43LS40Yy0xNS44LTYuMS0zMS4yLTEzLjQtNDUuOS0yMS45LS4zLS4yLS41LS40LS43LS42cy0uMy0uNi0uMy0uOSAwLS42IC4yLS45IC4zLS41IC42LS43YzMuMS0yLjMgNi4yLTQuNyA5LjEtNy4xIC4zLS4yIC42LS40IC45LS40cy43IDAgMSAuMWM5Ni4yIDQzLjkgMjAwLjQgNDMuOSAyOTUuNSAwIC4zLS4xIC43LS4yIDEtLjJzLjcgLjIgLjkgLjRjMi45IDIuNCA2IDQuOSA5LjEgNy4yIC4yIC4yIC40IC40IC42IC43cy4yIC42IC4yIC45LS4xIC42LS4zIC45LS40IC41LS42IC42Yy0xNC43IDguNi0zMCAxNS45LTQ1LjkgMjEuOC0uMiAuMS0uNSAuMi0uNyAuNHMtLjMgLjQtLjQgLjctLjEgLjUtLjEgLjggLjEgLjUgLjIgLjhjOC44IDE3IDE4LjggMzMuMyAzMCA0OC44IC4yIC4zIC42IC42IC45IC43cy44IC4xIDEuMSAwYzUyLjktMTYuMiAxMDIuNi00MS4zIDE0Ny4xLTc0LjIgLjItLjIgLjQtLjQgLjUtLjZzLjItLjUgLjItLjhjMTIuMy0xMjYuOC0yMC41LTIzNi45LTg2LjktMzM0LjV6bS0zMDIgMjY3LjdjLTI5IDAtNTIuOC0yNi42LTUyLjgtNTkuMnMyMy40LTU5LjIgNTIuOC01OS4yYzI5LjcgMCA1My4zIDI2LjggNTIuOCA1OS4yIDAgMzIuNy0yMy40IDU5LjItNTIuOCA1OS4yem0xOTUuNCAwYy0yOSAwLTUyLjgtMjYuNi01Mi44LTU5LjJzMjMuNC01OS4yIDUyLjgtNTkuMmMyOS43IDAgNTMuMyAyNi44IDUyLjggNTkuMiAwIDMyLjctMjMuMiA1OS4yLTUyLjggNTkuMnoiXX0sJHp0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImhhY2tlci1uZXdzIixpY29uOls0NDgsNTEyLFtdLCJmMWQ0IiwiTTAgMzJsMCA0NDggNDQ4IDAgMC00NDgtNDQ4IDB6TTIxLjIgMjI5LjJsLS4yIDBjLjEtLjEgLjItLjMgLjMtLjQgMCAuMSAwIC4zLS4xIC40em0yMTggNTMuOWwwIDEwMC45LTMxLjQgMCAwLTEwMi43LTc5LjgtMTUzLjMgMzcuMyAwYzUyLjUgOTguMyA0OS4yIDEwMS4yIDU5LjMgMTI1LjYgMTIuMy0yNyA1LjgtMjQuNCA2MC42LTEyNS42bDM0LjggMC04MC44IDE1NS4xeiJdfSxUOGU9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZWxldmVudHkiLGljb246WzY0MCw1MTIsWyIxMXR5Il0sImU3ZDYiLCJNNjE1LjMgMTY4LjVjMi4zIDAgNC42IC43IDYuNiAyLjIgMS45IDEuNCAzLjEgMy4zIDMuOCA1IDEuNCAzLjMgMS44IDcuMyAxLjggMTEuMyAwIDIuMi0uMyA0LjktLjcgNy42bDAgLjQtNTAuOSAyNjQuOSAwIDBjLTQgMjIuMS04LjUgMzkuNC0xMy42IDUxLjctNSAxMi4xLTEwLjkgMjEuNi0xOC42IDI3bDAgMGMtNy41IDUuMy0xNi45IDcuNy0yNy42IDhsLTMgMGMtMTYgMC0yOS4zLTQuMi0zNi45LTE0LjgtLjEtLjEtLjEtLjEtLjItLjItLjEtLjItLjMtLjQtLjUtLjZsMCAwYy0xLjgtMi40LTIuNS01LjItMi45LTcuNC0uNS0yLjgtLjctNi4xLS43LTkuOCAwLTcuMyAuNi0xMy41IDIuMS0xOC4yIDEuNC00LjQgNC44LTEwLjQgMTIuMi0xMC40bDEuMyAuMWMuMiAwIC40IC4xIC41IC4xIC4zIC4xIC42IC4xIC44IC4yIC42IC4xIDEuMyAuMyAyLjIgLjZsNy42IDIuMiAuMSAwIDcuNiAyLjFjLjkgLjIgMS43IC40IDIuMiAuNSAuNCAuMSAuNiAuMSAuNyAuMSAwIDAgLjEgMCAuMi0uMSAuMS0uMSAuNC0uMiAuOC0uNiAuOS0uOSAyLjItMi42IDMuNi01LjcgMi42LTUuOCA0LjItMTQuNyA0LjItMjcuNCAwLS43LS4zLTMuNC0xLjMtOC45LS45LTUuMS0yLjMtMTIuMi00LjItMjEuMWwtNTYtMjMyLjktLjEtLjQgMC0uM2MtLjQtMi43LS43LTUuMy0uNy03LjMgMC0zLjcgLjQtNy41IDEuNy0xMC42IC43LTEuNiAxLjgtMy40IDMuNS00LjkgMS45LTEuNSA0LjItMi4zIDYuNS0yLjNsMzQuNiAwYzQuNiAwIDguNyAxLjcgMTEuOSA1bDEuMyAxLjVjMS4yIDEuNiAyIDMuNCAyLjcgNS4yIC45IDIuNCAxLjUgNS4xIDIgOC4xbDMwLjQgMTYxLjIgMjMuOC0xNjBjLjgtNS44IDIuMi0xMS40IDUuMS0xNS4xIDMtMy44IDcuMi01LjggMTItNS44bDI0IDB6TTM3NS4xIDM0LjZjMi42IDAgNS4xIC43IDcuNCAyLjMgMi4yIDEuNSAzLjcgMy42IDQuNyA1LjcgMS45IDQgMi41IDkuMSAyLjUgMTQuNWwwIDExMS4yYzAgLjEgMCAuMiAwIC4zbDMyLjQgMGMyLjUgMCA1IC42IDcuMiAyLjEgMi4yIDEuNCAzLjcgMy40IDQuOCA1LjUgMiAzLjkgMi42IDguOCAyLjYgMTMuOWwwIDE1LjRjMCA1LS42IDkuOC0yLjYgMTMuNy0xLjEgMi0yLjYgNC00LjggNS40LTIuMiAxLjQtNC43IDItNy4xIDJsLTMyLjUgMCAwIDE0NS44YzAgMTAuOCAuNyAxOS41IDIgMjYuMiAxLjQgNi45IDMuMSAxMC45IDQuNyAxMi45IDEuMiAxLjUgMi4yIDIuNSAzLjEgMy4ybDIuMiAxLjQgLjEgLjEgMi45IC44YzEuMiAuMiAyLjYgLjMgNC4zIC4zbDIwLjMgMGM0LjUgMCA4LjkgMS43IDExLjggNS44IDIuNiAzLjYgMy4zIDguMSAzLjMgMTIuMmwwIDE3LjJjMCA0LjUtLjggOS4zLTMuNCAxMy4xLTMgNC4yLTcuNSA2LTEyLjMgNmwwIDAtMjkuMSAuMWMtOCAwLTE1LS42LTIxLjItMS43LTYuNy0xLjMtMTMuNC00LjEtMjAuMS04LjEtNy4yLTQuNC0xMy0xMC4zLTE3LjUtMTcuOC00LjUtNy41LTcuOS0xNy41LTEwLjUtMjkuNS0yLjYtMTIuMi0zLjktMjYuNi0zLjktNDNsMC0xNDQuOS0xMy40IDBjLTIuNCAwLTQuOS0uNi03LjEtMi0yLjItMS40LTMuNy0zLjQtNC44LTUuNC0yLTMuOS0yLjYtOC43LTIuNi0xMy43bDAtMTUuNGMwLTUuMSAuNi0xMCAyLjYtMTMuOSAxLjEtMi4xIDIuNi00IDQuOC01LjUgMi4yLTEuNSA0LjctMi4xIDcuMi0yLjFsMTMuNCAwIDAtLjYgNS4yLTExMS4yIDAtLjEgLjMtMy45Yy41LTMuOCAxLjMtNy40IDIuNy0xMC4zIDIuMS00LjIgNi03LjkgMTEuOC03LjlsMjguNiAwem0tMjY4IDExLjdjMS44IC4zIDMuNiAuOSA1LjMgMi4xIDIuMSAxLjUgMy41IDMuNSA0LjQgNS40IDEuNyAzLjcgMi4zIDguNCAyLjMgMTMuMmwwIDM3Ny44YzAgNi43LS42IDEyLjYtMi40IDE3LjEtLjkgMi4zLTIuMyA0LjctNC40IDYuNS0yLjMgMi01LjEgMy04LjEgM2wtNDMuNyAwYy0zIDAtNS44LTEuMS04LjEtMy4xLTIuMS0xLjktMy40LTQuMy00LjItNi41LTEuNy00LjUtMi4zLTEwLjMtMi4zLTE3bDAtMzE1LjhjLTQuOCAxLjItOC43IDIuMi0xMS41IDIuOS0xLjkgLjUtMy40IC44LTQuNCAxLjEtLjUgLjEtLjkgLjItMS4yIC4zLS4xIDAtLjMgLjEtLjUgLjEtLjEgMC0uMiAwLS4zIC4xIDAgMC0uMiAwLS4zIDAgMCAwLS4yIDAtLjQgMGwwIDBjLS4xIDAtLjMgMC0uNCAwLS4xIDAtLjIgMC0uMiAwLTIuMiAuMS00LjUtLjQtNi42LTEuNy0yLjMtMS40LTMuOC0zLjQtNC43LTUuMy0xLjgtMy43LTIuMy04LjQtMi4zLTEzbDAtMjcuNGMwLTQuNCAuNy04LjggMi42LTEyLjQgMi4xLTMuOSA1LjUtNi42IDkuOC03LjZsNzUuNS0xOS41YzEuNC0uNCAyLjktLjUgNC40LS41bDEuOCAuMXptMTQzLjgtLjVjMS44IC4zIDMuNiAuOSA1LjIgMi4xIDIuMSAxLjUgMy41IDMuNSA0LjQgNS40IDEuNyAzLjcgMi4yIDguNCAyLjIgMTMuMmwwIDM3Ny44YzAgNi43LS42IDEyLjYtMi40IDE3LjEtLjkgMi4zLTIuMyA0LjctNC40IDYuNS0yLjMgMi01LjEgMy04LjEgM2wtNDMuNyAwYy0zIDAtNS44LTEuMS04LjEtMy4xLTIuMS0xLjktMy40LTQuMy00LjItNi41LTEuNy00LjUtMi4zLTEwLjMtMi4zLTE3bDAtMzE1LjhjLTQuOCAxLjItOC43IDIuMi0xMS41IDIuOS0xLjkgLjUtMy40IC44LTQuNCAxLjEtLjUgLjEtLjkgLjItMS4yIC4zLS4xIDAtLjMgLjEtLjUgLjEtLjEgMC0uMiAwLS4zIC4xLS4xIDAtLjIgMC0uMyAwIDAgMC0uMiAwLS40IDBsMCAwYy0uMSAwLS4yIDAtLjMgMC0uMSAwLS4yIDAtLjMgMC0yLjIgLjEtNC41LS40LTYuNi0xLjctMi4zLTEuNC0zLjgtMy40LTQuNy01LjMtMS44LTMuNy0yLjMtOC4zLTIuMy0xM2wwLTI3LjRjMC00LjQgLjctOC43IDIuNi0xMi40IDIuMS0zLjkgNS41LTYuNiA5LjgtNy42bDc1LjQtMTkuNGMxLjQtLjQgMi45LS41IDQuNC0uNWwxLjggLjF6Il19LER6dD1UOGUsTHp0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InRlYW1zcGVhayIsaWNvbjpbNTc2LDUxMixbXSwiZjRmOSIsIk0xNTIuOCAzNy4yYy0zMi4yIDM4LjEtNTYuMSA4Mi42LTY5LjkgMTMwLjUgMCAuMi0uMSAuMy0uMSAuNS0zOS4zIDE2LjItNjYuOCA1NC44LTY2LjggOTkuOCAwIDU5LjYgNDguNCAxMDggMTA4IDEwOHMxMDgtNDguNCAxMDgtMTA4YzAtNTMuNS0zOC45LTk3LjktOTAtMTA2LjUgMTUuNy00MS44IDQwLjQtNzkuNiA3Mi4zLTExMC43IDEuOC0xLjYgNC0yLjYgNi4zLTMuMSAzNy4yLTExLjUgNzYuNy0xMy4zIDExNC44LTUuMiAxMTkuMyAyNS4xIDE5OC42IDEzOC4yIDE4MS43IDI1OC44LTguNCA2Mi42LTM4LjYgMTEyLjctODcuNyAxNTEuNC01MC4xIDM5LjctMTA3LjUgNTQuMy0xNzAuMiA1Mi4ybC0yNC0xYzEyLjQgMi44IDI1IDQuOSAzNy42IDYuMyA0MC43IDQuMiA4MS40IDIuMSAxMjAuMS0xMi41IDk0LTM1LjUgMTQ5LjMtMTAyLjMgMTYyLjktMjAyLjUgNC44LTUyLjYtNS44LTEwNS40LTMwLjgtMTUyLTcwLjQtMTMxLjktMjM0LjItMTgxLjYtMzY2LTExMS4yLTIuNCAxLjQtNC41IDMuMS02LjMgNS4ybC4xIDB6TTMwOS40IDQzMy45Yy0yLjEgMTEuNS00LjIgMjEuOS0xNC42IDMxLjMgNTMuMi0xIDEyMy4yLTI5LjIgMTYxLjgtOTcuMSAzOS43LTY5LjkgMzcuNi0xMzkuOS02LjMtMjA3LjgtMzYuNS01NS4zLTg5LjgtODIuNC0xNTYuNi04Ni42IDEuNSAyLjMgMy4yIDQuNCA1LjIgNi4zbDUuMiA2LjNjMjUuMSAzMS4zIDM3LjYgNjcuOSA0Mi44IDEwNy41IDIuMSAxNS43LTEgMzAuMy0xMy42IDQxLjgtNC4yIDMuMS01LjIgNi4zLTQuMiAxMC40bDcuMyAxNy43IDI5LjMgNTQuM2M1LjIgMTEuNSA0LjIgMTkuOC02LjMgMjguMi0zLjIgMi41LTYuNyA0LjYtMTAuNCA2LjNsLTE4LjggOC40IDMuMSAxMy42YzMuMSA2LjMgMSAxMi41LTMuMSAxNy43LTIuNSAyLjQtMy44IDUuOS0zLjEgOS40IDIuMSAxMS41LTIuMSAxOS44LTEyLjUgMjUuMS0yLjEgMS00LjIgNS4yLTUuMiA3LjNsMC0uMXptLTEzMy42LTMuMWMxNi43IDExLjUgMzQuNSAyMC45IDUzLjIgMjYuMSAyNCA1LjIgNDEuOC02LjMgNDQuOS0zMC4zIDEtOC40IDUuMi0xNC42IDEyLjUtMTcuNyA3LjMtNC4yIDguNC03LjMgMi4xLTEzLjZsLTkuNC04LjQgMTMuNi00LjJjNi4zLTIuMSA3LjMtNS4yIDUuMi0xMS41LTEuNC0zLTIuNC02LjItMy4xLTkuNC0zLjEtMTQuNi0yLjEtMTUuNyAxMS41LTE4LjggOC40LTMuMSAxNS43LTYuMyAyMS45LTEyLjUgMy4xLTIuMSAzLjEtNC4yIDEtOC40bC0xNi43LTMwLjNjLTEtMS45LTIuMS0zLjgtMy4xLTUuNy02LjQtMTEuNy0xMy0yMy42LTE1LjctMzcuMS0yLjEtOS40LTEtMTcuNyA4LjQtMjQgNS4yLTQuMiA4LjQtOS40IDguNC0xNi43LS40LTEwLjEtMS41LTIwLjMtMy4xLTMwLjMtNi4zLTM3LjYtMjMtNjguOS01MS4yLTk1LTUuMi00LjItOS40LTYuMy0xNi43LTQuMmwtMzUuNiAxMi43IDYgMy42YzYuMyAzLjcgMTIuMiA3LjMgMTcgMTIuMSAzMC4zIDI2LjEgNDEuOCA2MS42IDQ1LjkgMTAwLjIgMSA4LjQgMCAxNi43LTcuMyAyMS45LTguNCA1LjItMTAuNCAxMi41LTcuMyAyMC45IDQuOSAxMy4yIDEwLjQgMjYgMTYuNyAzOC42TDI5MS42IDMxOGMtNi4zIDguNC0xMy42IDExLjUtMjEuOSAxNC42LTEyLjUgMy4xLTE0LjYgNy4zLTEwLjQgMjAuOSAuNiAxLjUgMS40IDIuOCAyLjEgNC4yIDIuMSA1LjIgMSA4LjQtNC4yIDEwLjRsLTEyLjUgMy4xIDUuMiA0LjIgNC4yIDQuMmM0LjIgNS4yIDQuMiA4LjQtMi4xIDEwLjQtNy4zIDQuMi0xMS41IDkuNC0xMS41IDE3LjcgMCAxMi41LTcuMyAxOS44LTE4LjggMjQtMy44IDEtNy42IDEuNS0xMS41IDFsLTM0LjUtMi4xIC4xIC4yeiJdfSxFenQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToic3VwcGxlIixpY29uOls2NDAsNTEyLFtdLCJmM2Y5IiwiTTY0MCAyNjIuNWMwIDY0LjEtMTA5IDExNi4xLTI0My41IDExNi4xLTI0LjggMC00OC42LTEuOC03MS4xLTUgNy43IC40IDE1LjUgLjYgMjMuNCAuNiAxMzQuNSAwIDI0My41LTU2LjkgMjQzLjUtMTI3LjEgMC0yOS40LTE5LjEtNTYuNC01MS4yLTc4IDYwIDIxLjEgOTguOSA1NS4xIDk4LjkgOTMuNHpNNDcuNyAyMjcuOWMtLjEtNzAuMiAxMDguOC0xMjcuMyAyNDMuMy0xMjcuNiA3LjkgMCAxNS42IC4yIDIzLjMgLjUtMjIuNS0zLjItNDYuMy00LjktNzEtNC45LTEzNC41IC40LTI0My40IDUyLjYtMjQzLjMgMTE2LjcgLjEgMzguMyAzOS4xIDcyLjMgOTkuMyA5My4zLTMyLjMtMjEuNS01MS41LTQ4LjYtNTEuNi03OHptNjAuMiAzOS45UzExOC40IDI4MSAxMzcuMiAyODFjMTcuOSAwIDI4LjQtMTEuNSAyOC40LTI1LjEgMC0yOC00MC4yLTI1LjEtNDAuMi0zOS43IDAtNS40IDUuMy05LjEgMTIuNS05LjEgNS43IDAgMTEuMyAyLjYgMTEuMyA2LjZsMCAzLjkgMTQuMiAwIDAtNy45YzAtMTIuMS0xNS40LTE2LjgtMjUuNC0xNi44LTE2LjUgMC0yOC41IDEwLjItMjguNSAyNC4xIDAgMjYuNiA0MC4yIDI1LjQgNDAuMiAzOS45IDAgNi42LTUuOCAxMC4xLTEyLjMgMTAuMS0xMS45IDAtMjAuNy0xMC4xLTIwLjctMTAuMWwtOC44IDEwLjl6bTEyMC44LTczLjZsMCA1NC40YzAgMTEuMy03LjEgMTcuOC0xNy44IDE3LjhzLTE3LjgtNi41LTE3LjgtMTcuN2wwLTU0LjUtMTUuOCAwIDAgNTVjMCAxOC45IDEzLjQgMzEuOSAzMy43IDMxLjkgMjAuMSAwIDMzLjQtMTMgMzMuNC0zMS45bDAtNTUtMTUuNyAwem0zNC40IDg1LjRsMTUuOCAwIDAtMjkuNSAxNS41IDBjMTYgMCAyNy4yLTExLjUgMjcuMi0yOC4xcy0xMS4yLTI3LjgtMjcuMi0yNy44bC0zOS4xIDAgMCAxMy40IDcuOCAwIDAgNzJ6bTE1LjgtNDNsMC0yOS4xIDEyLjkgMGM4LjcgMCAxMy43IDUuNyAxMy43IDE0LjQgMCA4LjktNS4xIDE0LjctMTQgMTQuN2wtMTIuNiAwem01NyA0M2wxNS44IDAgMC0yOS41IDE1LjUgMGMxNiAwIDI3LjItMTEuNSAyNy4yLTI4LjFzLTExLjItMjcuOC0yNy4yLTI3LjhsLTM5LjEgMCAwIDEzLjQgNy44IDAgMCA3MnptMTUuNy00M2wwLTI5LjEgMTIuOSAwYzguNyAwIDEzLjcgNS43IDEzLjcgMTQuNCAwIDguOS01IDE0LjctMTQgMTQuN2wtMTIuNiAwem01Ny4xIDM0LjhjMCA1LjggMi40IDguMiA4LjIgOC4ybDM3LjYgMGM1LjggMCA4LjItMi40IDguMi04LjJsMC0xMy0xNC4zIDAgMCA1LjJjMCAxLjctMSAyLjYtMi42IDIuNmwtMTguNiAwYy0xLjcgMC0yLjYtMS0yLjYtMi42bDAtNjEuMmMwLTUuNy0yLjQtOC4yLTguMi04LjJsLTE1LjQgMCAwIDEzLjQgNS4yIDBjMS43IDAgMi42IDEgMi42IDIuNmwwIDYxLjItLjEgMHptNjMuNCAwYzAgNS44IDIuNCA4LjIgOC4yIDguMmwzOC43IDBjNS43IDAgOC4yLTIuNCA4LjItOC4ybDAtMTMtMTQuMyAwIDAgNS4yYzAgMS43LTEgMi42LTIuNiAyLjZsLTE5LjcgMGMtMS43IDAtMi42LTEtMi42LTIuNmwwLTIwLjMgMjcuNyAwIDAtMTMuNC0yNy43IDAgMC0yMi40IDE5LjIgMGMxLjcgMCAyLjYgMSAyLjYgMi42bDAgNS4yIDE0LjIgMCAwLTEzYzAtNS43LTIuNS04LjItOC4yLTguMmwtNTEuNiAwIDAgMTMuNCA3LjggMCAwIDYzLjkgLjEgMHptNTguOS03NmwwIDUuOSAxLjYgMCAwLTUuOSAyLjcgMCAwLTEuMi03IDAgMCAxLjIgMi43IDB6bTUuNy0xLjJsMCA3LjEgMS41IDAgMC01LjcgMi4zIDUuNyAxLjMgMCAyLjMtNS43IDAgNS43IDEuNSAwIDAtNy4xLTIuMyAwLTIuMSA1LjEtMi4xLTUuMS0yLjQgMHoiXX0sJDhlPXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNxdWFyZS10d2l0dGVyIixpY29uOls0NDgsNTEyLFsidHdpdHRlci1zcXVhcmUiXSwiZjA4MSIsIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyek0zNTEuMyAxOTkuM2MwIDg2LjctNjYgMTg2LjYtMTg2LjYgMTg2LjYtMzcuMiAwLTcxLjctMTAuOC0xMDAuNy0yOS40IDUuMyAuNiAxMC40IC44IDE1LjggLjggMzAuNyAwIDU4LjktMTAuNCA4MS40LTI4LTI4LjgtLjYtNTMtMTkuNS02MS4zLTQ1LjUgMTAuMSAxLjUgMTkuMiAxLjUgMjkuNi0xLjItMzAtNi4xLTUyLjUtMzIuNS01Mi41LTY0LjRsMC0uOGM4LjcgNC45IDE4LjkgNy45IDI5LjYgOC4zLTktNi0xNi40LTE0LjEtMjEuNS0yMy42cy03LjgtMjAuMi03LjctMzFjMC0xMi4yIDMuMi0yMy40IDguOS0zMy4xIDMyLjMgMzkuOCA4MC44IDY1LjggMTM1LjIgNjguNi05LjMtNDQuNSAyNC04MC42IDY0LTgwLjYgMTguOSAwIDM1LjkgNy45IDQ3LjkgMjAuNyAxNC44LTIuOCAyOS04LjMgNDEuNi0xNS44LTQuOSAxNS4yLTE1LjIgMjgtMjguOCAzNi4xIDEzLjItMS40IDI2LTUuMSAzNy44LTEwLjItOC45IDEzLjEtMjAuMSAyNC43LTMyLjkgMzQgLjIgMi44IC4yIDUuNyAuMiA4LjV6Il19LFB6dD0kOGUsSXp0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InZpbSIsaWNvbjpbNTEyLDUxMixbXSwiZTg4YSIsIk0zMDMuMyA1NC41bDAtMTIuMyA0LTMuNyA3LjktNy4yIDMuNS0zLjIgMTY4IDAgMTUuMSAxNS4xIDAgMzguOS0zLjUgMy42LTgwLjkgODIuOSA4Ni45IDg2LjktOTEuMiA5MS4yIDguOSAwIDcuNi04LjMgMS0uOWMxLjEtLjggMi41LTEuMiAzLjktMS4ybDI4LjkgMCAxLjUgLjJjMS41IC40IDIuOCAxLjIgMy44IDIuNWw3LjYgMTAuMmMxLjMgMS43IDEuNiAzLjkgMSA1LjlsLTIyLjMgNzIuNSAxLjIgMGMyLjIgMCA0LjIgMS4xIDUuNSAyLjlzMS41IDQuMSAuNyA2LjFMNDU5IDQ0NWMtMSAyLjYtMy40IDQuMi02LjIgNC4ybC00MC40IDBjLTIuMSAwLTQuMS0xLTUuMy0yLjdzLTEuNi0zLjktMS01LjlsMjAtNjMuMi0yMi4yIDAtMTYuMiA1MC43YzIuMSAuMSA0LjEgMS4xIDUuMyAyLjkgMS4yIDEuOCAxLjQgNC4yIC42IDYuMmwtMy4zIDcuOWMtMSAyLjUtMy41IDQuMS02LjEgNC4xbC0zNi44IDBjLTIuMSAwLTQuMS0xLTUuNC0yLjdzLTEuNi0zLjktMS01LjlsMTAtMzIuMS0yMy45IDIzLjhjLjMgMS4yIC4zIDIuNS0uMSAzLjhsLTIuOSA4LjZjLS45IDIuNy0zLjQgNC41LTYuMyA0LjVsLTcuNCAwLTU0LjYgNTQuNi04My44LTgzLjgtMzEuNiAzMi41LTMuNiAzLjctNDkuMiAwLTIuOC0xLjdjLTguOC01LjEtMTQuOC04LjUtMTcuOS0xMC4zbDAtMTI5LjMtNTguNS01OC41IDIuNi0yLjYgNTUuOS01NiAwLTk5LjQtMTIuNiAwLTEwLjgtMTAuOC0zLjYtMy42IDAtNDAuNyAzLjItMy41IDcuOS04LjUgMy43LTMuOSAxNjYuNiAwIDggOCAyNy40LTI3LjQgNDYuNCA0Ni40em0tMjUxLTUuNmwwIDMwLjMgOS40IDcuOCAxOC45IDAgMCAzNDcuOSAxMS40IDEwLjMgMzguMiAwIDkxLTkzYzAtLjQgLjEtLjggLjItMS4xbDIuNi0xMC41Yy43LTIuOSAzLjQtNSA2LjQtNWw3LjEgMCAxNS41LTE1LjktMi0yYy0xLjgtMS44LTIuNC00LjUtMS41LTYuOWw2LjktMTkuM2MuNC0xLjEgMS4xLTIgMS45LTIuOGw2LjktNS45YzEuMi0xIDIuOC0xLjYgNC4zLTEuNmwxOS43IDAgMS4zIC4yYy4xIDAgLjEgLjEgLjIgLjFsMTk5LjItMjAzLjUgMC0yOC43LTguMi03LjQtMTU2LjIgMC03LjggNy44IDAgMzAuNSA4LjIgNy40IDIxIDAtMTQ3IDE0Ni40IDAtMTQ2LjYgMTYuOSAwIDguNy04LjcgMC0yNy43LTcuNC05LjktMTU3LjYgMC04IDh6TTIyNy42IDM1Mi43bDE0LjggMC0zMS44IDkwLjkgNDUuMyAwIDMtOS42LTEyLjUgMCAzMS41LTkxLjktNDcuNiAwLTIuNiAxMC41em0xMzYuOSAxbC0xNi40IDAtMTAuNS0xMC44LTM1LjggMC0zLjMgOS44IDExLjggMC0zMC41IDg5LjkgMzguMSAwIDIuOS04LjYtOC44IDAgMjAtNjMgMzcuOCAwLTIyLjMgNzEuNiAzNi44IDAgMy4zLTcuOS04LjggMCAyMC4zLTY0IDM2LjEgMC0yMi43IDcxLjkgNDAuNCAwIDMuMy04LjYtMTAuMiAwIDI1LTgxLjEtNy41LTEwLjItMjguOSAwLTkuNSAxMC41LTE3LjQgMC05LjktMTAuOC0yMy4zIDAtOS44IDExLjJ6TTI2Mi41IDI5My42bC02LjkgMTkuMyA1LjMgNS4zIDIxLjMgMCA1LjYtNS42IDUuOS0yMC4zLTQuNi00LjYtMTkuNyAwLTYuOSA1Ljl6Il19LFlyZT17cHJlZml4OiJmYWIiLGljb25OYW1lOiJmb250LWF3ZXNvbWUiLGljb246WzUxMiw1MTIsWzYyNTAxLDYyNjk0LCJmb250LWF3ZXNvbWUtZmxhZyIsImZvbnQtYXdlc29tZS1sb2dvLWZ1bGwiXSwiZjJiNCIsIk05MS43IDk2QzEwNi4zIDg2LjggMTE2IDcwLjUgMTE2IDUyIDExNiAyMy4zIDkyLjcgMCA2NCAwUzEyIDIzLjMgMTIgNTJjMCAxNi43IDcuOCAzMS41IDIwIDQxbDAgNDE5IDY0IDAgMC02NCAzNzMuNiAwYzE0LjYgMCAyNi40LTExLjggMjYuNC0yNi40IDAtMy43LS44LTcuMy0yLjMtMTAuN0w0MzIgMjcyIDQ5My43IDEzMy4xYzEuNS0zLjQgMi4zLTcgMi4zLTEwLjcgMC0xNC42LTExLjgtMjYuNC0yNi40LTI2LjRMOTEuNyA5NnoiXX0sQXp0PVlyZSxOenQ9WXJlLEQ4ZT17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ3aXJzaW5kaGFuZHdlcmsiLGljb246WzQ0OCw1MTIsWyJ3c2giXSwiZTJkMCIsIk0xOC45IDQ3OS44bDgzLjQgMCAwLTExMi04My40IDQ3IDAgNjV6bTMyOSAwbDgyLjQgMCAwLTY1LTgyLjQtNDcgMCAxMTJ6bTAtNDQ4bDAgMjE5LjgtMTIzLjYtNzIuNC0xMjEuNyA3Mi40IDAtMjE5LjgtODMuNyAwIDAgMzYwLjggMjA1LjQtMTIyLjMgMjA2IDEyMi4zIDAtMzYwLjgtODIuMyAweiJdfSxSenQ9RDhlLE96dD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ6b29tIixpY29uOls2NDAsNTEyLFtdLCJlODdiIiwiTTEzNC4yIDMyNi42bC0xMTQuNCAwYy04IDAtMTUuMi00LjgtMTguMy0xMi4yUy4xIDI5OC42IDUuOCAyOTIuOWw3OS4zLTc5LjMtNTYuOCAwQzEyLjcgMjEzLjYgMCAyMDEgMCAxODUuNGwxMDUuNSAwYzggMCAxNS4yIDQuOCAxOC4zIDEyLjJzMS40IDE1LjktNC4zIDIxLjZsLTc5LjMgNzkuMyA2NS43IDBjMTUuNiAwIDI4LjMgMTIuNiAyOC4zIDI4LjN6TTY0MCAyMzguM2MwLTMwLjQtMjQuNy01NS4xLTU1LjEtNTUuMS0xNi4yIDAtMzAuOSA3LjEtNDEgMTguMy0xMC4xLTExLjItMjQuNy0xOC4zLTQxLTE4LjMtMzAuNCAwLTU1LjEgMjQuNy01NS4xIDU1LjFsMCA4OC4zYzE1LjYgMCAyOC4zLTEyLjcgMjguMy0yOC4zbDAtNjBjMC0xNC44IDEyLTI2LjggMjYuOC0yNi44czI2LjggMTIgMjYuOCAyNi44bDAgNjBjMCAxNS42IDEyLjYgMjguMyAyOC4zIDI4LjNsMC04OC4zYzAtMTQuOCAxMi0yNi44IDI2LjgtMjYuOHMyNi44IDEyIDI2LjggMjYuOGwwIDYwYzAgMTUuNiAxMi42IDI4LjMgMjguMyAyOC4zbDAtODguM3pNMjg4LjIgMjU2YTcyLjggNzIuOCAwIDEgMSAxNDUuNSAwIDcyLjggNzIuOCAwIDEgMSAtMTQ1LjUgMHptMTE3LjMgMGE0NC41IDQ0LjUgMCAxIDAgLTg5IDAgNDQuNSA0NC41IDAgMSAwIDg5IDB6bS0yNzQuMSAwYTcyLjggNzIuOCAwIDEgMSAxNDUuNSAwIDcyLjggNzIuOCAwIDEgMSAtMTQ1LjUgMHptMTE3LjMgMGE0NC41IDQ0LjUgMCAxIDAgLTg5IDAgNDQuNSA0NC41IDAgMSAwIDg5IDB6Il19LEZ6dD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJjb25mbHVlbmNlIixpY29uOls1MTIsNTEyLFtdLCJmNzhkIiwiTTIuOCA0MTIuMmMtNC41IDcuNi0yLjEgMTcuNSA1LjUgMjIuMmwxMDUuOSA2NS4yYzcuNyA0LjcgMTcuNyAyLjQgMjIuNC01LjMgMC0uMSAuMS0uMiAuMS0uMiA2Ny4xLTExMi4yIDgwLjUtOTUuOSAyODAuOS0uNyA4LjEgMy45IDE3LjggLjQgMjEuNy03LjcgLjEtLjEgLjEtLjMgLjItLjRsNTAuNC0xMTQuMWMzLjYtOC4xLS4xLTE3LjYtOC4xLTIxLjMtMjIuMi0xMC40LTY2LjItMzEuMi0xMDUuOS01MC4zLTI0Ny45LTEyMC42LTMzMC44IDQ1LjctMzczLjEgMTEyLjZ6TTUxMC4yIDEwMC4xYzQuNS03LjYgMi4xLTE3LjUtNS41LTIyLjJMMzk4LjkgMTIuOGMtNy41LTUtMTcuNi0zLjEtMjIuNiA0LjQtLjIgLjMtLjQgLjYtLjYgMS02Ny4zIDExMi42LTgxLjEgOTUuNi0yODAuNiAuOS04LjEtMy45LTE3LjgtLjQtMjEuNyA3LjctLjEgLjEtLjEgLjMtLjIgLjRMMjIuNyAxNDEuM2MtMy42IDguMSAuMSAxNy42IDguMSAyMS4zIDIyLjIgMTAuNCA2Ni4zIDMxLjIgMTA2IDUwLjQgMjQ4IDEyMCAzMzAuOC00NS40IDM3My40LTExMi45eiJdfSxCenQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZGlnZyIsaWNvbjpbNTEyLDUxMixbXSwiZjFhNiIsIk04MS43IDE3Mi4zbC04MS43IDAgMCAxNzQuNCAxMzIuNyAwIDAtMjUwLjctNTEgMCAwIDc2LjN6bTAgMTMzLjRsLTMwLjggMCAwLTkyLjMgMzAuOCAwIDAgOTIuM3pNMzc4LjkgMTcyLjNsMCAxNzQuNCA4MS44IDAgMCAyOC41LTgxLjggMCAwIDQwLjggMTMzLjEgMCAwLTI0My43LTEzMy4xIDB6bTgxLjggMTMzLjRsLTMwLjggMCAwLTkyLjMgMzAuOCAwIDAgOTIuM3ptLTIzNS42IDQxbDgyLjEgMCAwIDI4LjUtODIuMSAwIDAgNDAuOCAxMzMuMyAwIDAtMjQzLjctMTMzLjMgMCAwIDE3NC40em01MS4yLTEzMy4zbDMwLjggMCAwIDkyLjMtMzAuOCAwIDAtOTIuM3pNMTUzLjMgOTZsNTEuMyAwIDAgNTEtNTEuMyAwIDAtNTF6bTAgNzYuM2w1MS4zIDAgMCAxNzQuNC01MS4zIDAgMC0xNzQuNHoiXX0sSHp0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InRocmVhZHMiLGljb246WzQ0OCw1MTIsW10sImU2MTgiLCJNMzMxLjUgMjM1LjdjMi4yIC45IDQuMiAxLjkgNi4zIDIuOCAyOS4yIDE0LjEgNTAuNiAzNS4yIDYxLjggNjEuNCAxNS43IDM2LjUgMTcuMiA5NS44LTMwLjMgMTQzLjItMzYuMiAzNi4yLTgwLjMgNTIuNS0xNDIuNiA1M2wtLjMgMGMtNzAuMi0uNS0xMjQuMS0yNC4xLTE2MC40LTcwLjItMzIuMy00MS00OC45LTk4LjEtNDkuNS0xNjkuNmwwLS41QzE3IDE4NC4zIDMzLjYgMTI3LjIgNjUuOSA4Ni4yIDEwMi4yIDQwLjEgMTU2LjIgMTYuNSAyMjYuNCAxNmwuMyAwYzcwLjMgLjUgMTI0LjkgMjQgMTYyLjMgNjkuOSAxOC40IDIyLjcgMzIgNTAgNDAuNiA4MS43bC00MC40IDEwLjhjLTcuMS0yNS44LTE3LjgtNDcuOC0zMi4yLTY1LjQtMjkuMi0zNS44LTczLTU0LjItMTMwLjUtNTQuNi01NyAuNS0xMDAuMSAxOC44LTEyOC4yIDU0LjQtMjYuMiAzMy4zLTM5LjggODEuNS00MC4zIDE0My4yIC41IDYxLjcgMTQuMSAxMDkuOSA0MC4zIDE0My4zIDI4IDM1LjYgNzEuMiA1My45IDEyOC4yIDU0LjQgNTEuNC0uNCA4NS40LTEyLjYgMTEzLjctNDAuOSAzMi4zLTMyLjIgMzEuNy03MS44IDIxLjQtOTUuOS02LjEtMTQuMi0xNy4xLTI2LTMxLjktMzQuOS0zLjcgMjYuOS0xMS44IDQ4LjMtMjQuNyA2NC44LTE3LjEgMjEuOC00MS40IDMzLjYtNzIuNyAzNS4zLTIzLjYgMS4zLTQ2LjMtNC40LTYzLjktMTYtMjAuOC0xMy44LTMzLTM0LjgtMzQuMy01OS4zLTIuNS00OC4zIDM1LjctODMgOTUuMi04Ni40IDIxLjEtMS4yIDQwLjktLjMgNTkuMiAyLjgtMi40LTE0LjgtNy4zLTI2LjYtMTQuNi0zNS4yLTEwLTExLjctMjUuNi0xNy43LTQ2LjItMTcuOGwtLjcgMGMtMTYuNiAwLTM5IDQuNi01My4zIDI2LjNsLTM0LjQtMjMuNmMxOS4yLTI5LjEgNTAuMy00NS4xIDg3LjgtNDUuMWwuOCAwYzYyLjYgLjQgOTkuOSAzOS41IDEwMy43IDEwNy43bC0uMiAuMiAuMSAwem0tMTU2IDY4LjhjMS4zIDI1LjEgMjguNCAzNi44IDU0LjYgMzUuMyAyNS42LTEuNCA1NC42LTExLjQgNTkuNS03My4yLTEzLjItMi45LTI3LjgtNC40LTQzLjQtNC40LTQuOCAwLTkuNiAuMS0xNC40IC40LTQyLjkgMi40LTU3LjIgMjMuMi01Ni4yIDQxLjhsLS4xIC4xeiJdfSxMOGU9e3ByZWZpeDoiZmFiIixpY29uTmFtZToid3ByZXNzciIsaWNvbjpbNTEyLDUxMixbInJlbmRhY3QiXSwiZjNlNCIsIk0yNTYgOGEyNDggMjQ4IDAgMSAwIDAgNDk2IDI0OCAyNDggMCAxIDAgMC00OTZ6TTQyNy4zIDE2Ni42Yy0xNS4yIDM0LjUtMzAuNCA2OS00NS42IDEwMy41LTIuNCA1LjUtNi45IDguMi0xMyA4LjItMjMgMC00NiAuMS02OSAwLTUuMSAwLTguMiAxLjktMTAuMyA2LjctMTAuMiAyMy42LTIwLjYgNDctMzEgNzAuNS0xLjUgMy41LTQuMSA1LjMtNy45IDUuMy00NS45IDAtOTEuOSAwLTEzNy44IDAtMy4xIDAtNS42LTEuMS03LjctMy40LTExLjItMTIuMy0yMi41LTI0LjYtMzMuNy0zNi45LTIuNy0zLTIuOC02LjItMS4yLTkuNyA4LjctMTkuNSAxNy4zLTM5LjEgMjUuOS01OC43IDEyLjktMjkuNCAyNS45LTU4LjcgMzguNy04OC4xIDEuNy0zLjkgNC4zLTUuNyA4LjUtNS43IDE0LjIgLjEgMjguNSAwIDQyLjcgMCA2LjIgMCA5LjIgNC44IDYuNyAxMC42LTEzLjYgMzAuOC0yNy4yIDYxLjYtNDAuNyA5Mi4zLTUuNyAxMy0xMS40IDI2LTE3LjEgMzktMy45IDkgNy4xIDEyIDExIDUuNiAuMi0uNC0xLjQgNC4yIDMwLTY3LjcgMS40LTMuMSAzLjQtNC40IDYuOC00LjQgMTUuMiAuMSAzMC40IDAgNDUuNiAwIDUuNiAwIDcuOSAzLjYgNS43IDguNy04LjMgMTktMTYuNyAzNy45LTI1IDU2LjktNSAxMS40IDguMSAxMi41IDExLjMgNS4zIDAtLjEgMjcuOS02My4zIDMyLjItNzMuMiAyLTQuNiA1LjQtNi41IDEwLjMtNi41IDI2LjQgLjEgNTIuOSAwIDc5LjMgMCAxMi40IDAgMTMuOS0xMy42IDMuOS0xMy42LTI1LjMgMC01MC41IDAtNzUuOCAwLTYuMyAwLTcuOC0yLjUtNS4zLTguMyA1LjgtMTMuMSAxMS42LTI2LjEgMTcuMy0zOS4yIDEuNy00IDQuNS01LjggOC44LTUuOCAyMy4xIC4xIDI2IDAgMTMwLjggMCA2LjEgMCA4IDIuOCA1LjYgOC4zeiJdfSxxenQ9TDhlLGp6dD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ5b2FzdCIsaWNvbjpbNDQ4LDUxMixbXSwiZjJiMSIsIk05MS4zIDc2bDE4NiAwLTcgMTguOS0xNzkgMGMtMzkuNyAwLTcxLjkgMzEuNi03MS45IDcwLjNsMCAyMDUuNGMwIDM1LjQgMjQuOSA3MC4zIDg0IDcwLjNsMCAxOS4xLTEyLjEgMEM0MS4yIDQ2MCAwIDQxOS44IDAgMzcwLjVMMCAxNjUuMkMwIDExNS45IDQwLjcgNzYgOTEuMyA3NnpNMzIwLjQgMjBsNjYuNSAwYy0xNDMuOCAzNzguMS0xNDUuNyAzOTguOS0xODQuNyA0MzkuMy0yMC44IDIxLjYtNDkuMyAzMS43LTc4LjMgMzIuN2wwLTUxLjFjNDkuMi03LjcgNjQuNi00OS45IDY0LjYtNzUuMyAwLTIwLjEgLjYtMTIuNi04Mi4xLTIyMy4ybDYxLjQgMCA1MC40IDE1Ni42IDEwMi4yLTI3OXpNNDQ4IDE2MS41bDAgMjk4LjUtMjE0IDBjNi42LTkuNiAxMC43LTE2LjMgMTIuMS0xOS40bDE4Mi41IDAgMC0yNzkuMWMwLTMyLjUtMTcuMS01MS45LTQ4LjItNjIuOUwzODcuMSA4MWM0MS43IDEzLjYgNjAuOSA0My4xIDYwLjkgODAuNXoiXX0sVnp0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6Im5pbWJsciIsaWNvbjpbMzg0LDUxMixbXSwiZjVhOCIsIk0yNDYuNiAzNTMuM2EyNyAyNyAwIDEgMSAwLTU0IDI3IDI3IDAgMSAxIDAgNTR6bS03OS40LTI3YTI3LjEgMjcuMSAwIDEgMSAtNTQuMyAwIDI3LjEgMjcuMSAwIDEgMSA1NC4zIDB6TTE5MS44IDE1OUMxNTcgMTU5IDg5LjQgMTc4LjggNTkuMiAyMjdMMTQgMCAxNCAzMzUuNUMxNCA0MzMuMSA5My42IDUxMiAxOTEuOCA1MTJTMzY5LjUgNDMzIDM2OS41IDMzNS41IDI5MC4xIDE1OSAxOTEuOCAxNTl6bTAgMzA4LjFjLTczLjMgMC0xMzIuNS01OC45LTEzMi41LTEzMS42czU5LjItMTMxLjYgMTMyLjUtMTMxLjYgMTMyLjUgNTguOSAxMzIuNSAxMzEuNS01OS4zIDEzMS42LTEzMi41IDEzMS42bDAgLjF6Il19LFV6dD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJwaXhlbGZlZCIsaWNvbjpbNTEyLDUxMixbXSwiZTdkYiIsIk0yNTYgMGEyNTYgMjU2IDAgMSAxIDAgNTEyIDI1NiAyNTYgMCAxIDEgMC01MTJ6TTIzNS43IDMxMS45bDQ3IDBjNDQuMiAwIDgwLjEtMzQuOSA4MC4xLTc4cy0zNS45LTc4LTgwLjEtNzhsLTY3LjggMGMtMjUuNSAwLTQ2LjIgMjAuMS00Ni4yIDQ1bDAgMTc1LjEgNjctNjQuMXoiXX0sV3p0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InlhaG9vIixpY29uOls1MTIsNTEyLFtdLCJmMTllIiwiTTIyMy44IDE0MS4xbC01Ni43IDE0My4yLTU2LTE0My4yLTk2LjEgMCAxMDUuOCAyNDkuMS0zOC42IDg5LjggOTQuMiAwIDE0MC45LTMzOC45LTkzLjYgMHpNMzI5LjIgMjc2LjlhNTguMiA1OC4yIDAgMSAwIDAgMTE2LjQgNTguMiA1OC4yIDAgMSAwIDAtMTE2LjR6TTM5NC43IDMybC05MyAyMjMuNSAxMDQuOCAwIDkyLjYtMjIzLjUtMTA0LjQgMHoiXX0sR3p0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImJsdWVza3kiLGljb246WzU3Niw1MTIsW10sImU2NzEiLCJNNDA3LjggMjk0LjdjLTMuMy0uNC02LjctLjgtMTAtMS4zIDMuNCAuNCA2LjcgLjkgMTAgMS4zek0yODggMjI3LjFDMjYxLjkgMTc2LjQgMTkwLjkgODEuOSAxMjQuOSAzNS4zIDYxLjYtOS40IDM3LjUtMS43IDIxLjYgNS41IDMuMyAxMy44IDAgNDEuOSAwIDU4LjRTOS4xIDE5NCAxNSAyMTMuOWMxOS41IDY1LjcgODkuMSA4Ny45IDE1My4yIDgwLjcgMy4zLS41IDYuNi0uOSAxMC0xLjQtMy4zIC41LTYuNiAxLTEwIDEuNC05My45IDE0LTE3Ny4zIDQ4LjItNjcuOSAxNjkuOSAxMjAuMyAxMjQuNiAxNjQuOC0yNi43IDE4Ny43LTEwMy40IDIyLjkgNzYuNyA0OS4yIDIyMi41IDE4NS42IDEwMy40IDEwMi40LTEwMy40IDI4LjEtMTU2LTY1LjgtMTY5LjktMy4zLS40LTYuNy0uOC0xMC0xLjMgMy40IC40IDYuNyAuOSAxMCAxLjMgNjQuMSA3LjEgMTMzLjYtMTUuMSAxNTMuMi04MC43IDUuOS0xOS45IDE1LTEzOC45IDE1LTE1NS41cy0zLjMtNDQuNy0yMS42LTUyLjljLTE1LjgtNy4xLTQwLTE0LjktMTAzLjIgMjkuOC02Ni4xIDQ2LjYtMTM3LjEgMTQxLjEtMTYzLjIgMTkxLjh6Il19LEt6dD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzY3JpYmQiLGljb246WzM4NCw1MTIsW10sImYyOGEiLCJNNDIuNiAyNTIuN2MtMTYuMS0xOS0yNC43LTQ1LjktMjQuOC03OS45IDAtMTAwLjQgNzUuMi0xNTMuMSAxNjcuMi0xNTMuMSA5OC42LTEuNiAxNTYuOCA0OSAxODQuMyA3MC42bC01MC41IDcyLjEtMzcuMy0yNC42IDI2LjktMzguNmMtMzYuNS0yNC03OS40LTM2LjUtMTIzLTM1LjgtNTAuNy0uOC0xMTEuNyAyNy4yLTExMS43IDc2LjIgMCAxOC43IDExLjIgMjAuNyAyOC42IDE1LjYgMjMuMy01LjMgNDEuOSAuNiA1NS44IDE0IDI2LjQgMjQuMyAyMy4yIDY3LjYtLjcgOTEuOS0yOS4yIDI5LjUtODUuMiAyNy4zLTExNC44LTguNHptMzE3LjcgNS45Yy0xNS41LTE4LjgtMzguOS0yOS40LTYzLjItMjguNi0zOC4xLTItNzEuMSAyOC03MC41IDY3LjItLjcgMTYuOCA2IDMzIDE4LjQgNDQuMyAxNC4xIDEzLjkgMzMgMTkuNyA1Ni4zIDE0LjQgMTcuNC01LjEgMjguNi0zLjEgMjguNiAxNS42IDAgNC4zLS41IDguNS0xLjQgMTIuNy0xNi43IDQwLjktNTkuNSA2NC40LTEyMS40IDY0LjQtNTEuOSAuMi0xMDIuNC0xNi40LTE0NC4xLTQ3LjNsMzMuNy0zOS40LTM1LjYtMjcuNC02MC44IDcxLjggMTUuNCAxMy44YzUyLjUgNDYuOCAxMjAuNCA3Mi41IDE5MC43IDcyLjIgNTEuNCAwIDk0LjQtMTAuNSAxMzMuNi00NC4xIDU3LjEtNTEuNCA1NC4yLTE0OS4yIDIwLjMtMTg5LjZ6Il19LFl6dD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJjcmVhdGl2ZS1jb21tb25zLXBkIixpY29uOls1MTIsNTEyLFtdLCJmNGVjIiwiTTI1NiA4YTI0OCAyNDggMCAxIDAgMCA0OTYgMjQ4IDI0OCAwIDEgMCAwLTQ5NnptMCA0NDkuNWMtMTM5LjIgMC0yMzUuOC0xMzgtMTkwLjItMjY3LjlsNzguOCAzNS4xYy0yLjEgMTAuNS0zLjMgMjEuNS0zLjMgMzIuOSAwIDk5IDczLjkgMTI2LjkgMTIwLjQgMTI2LjkgMjIuOSAwIDUzLjUtNi43IDc5LjQtMjkuNUwzMDUgMzExLjFjLTUuNSA2LjMtMTcuNiAxNi43LTM2LjMgMTYuNy0zNy44IDAtNTMuNy0zOS45LTUzLjktNzEuOSAyMzAuNCAxMDIuNiAyMTYuNSA5Ni41IDIxNy45IDk2LjgtMzQuMyA2Mi40LTEwMC42IDEwNC44LTE3Ni43IDEwNC44em0xOTQuMi0xNTBsLTIyNC0xMDBjMTguOC0zNCA1NC45LTMwLjcgNzQuNy0xMWw0MC40LTQxLjZjLTI3LjEtMjMuMy01OC0yNy41LTc4LjEtMjcuNS00Ny40IDAtODAuOSAyMC41LTEwMC43IDUxLjZMODcuNiAxNDUuNmMzNi4xLTU0LjkgOTguMS05MS4yIDE2OC41LTkxLjIgMTExLjEgMCAyMDEuNSA5MC40IDIwMS41IDIwMS41IDAgMTgtMi40IDM1LjQtNi44IDUyLS4zLS4xLS40LS4yLS42LS40eiJdfSxaenQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZWFybHliaXJkcyIsaWNvbjpbNTEyLDUxMixbXSwiZjM5YSIsIk0zMjkuMyA0Ny41YzEuMi0xMyAyMS4zLTE0IDM2LjYtOC43IC45IC4zIDI2LjIgOS43IDE5IDE1LjItMjcuOS03LjQtNTYuNCAxOC4yLTU1LjYtNi41em0tMjAxIDYuOWMzMC43LTguMSA2MiAyMCA2MS4xLTcuMS0xLjMtMTQuMi0yMy40LTE1LjMtNDAuMi05LjYtMSAuMy0yOC43IDEwLjUtMjAuOSAxNi43ek0zMzUuNSAxNjBhMTYgMTYgMCAxIDAgMCAzMiAxNiAxNiAwIDEgMCAwLTMyem0tMTU5LjcgMGExNiAxNiAwIDEgMCAwIDMyIDE2IDE2IDAgMSAwIDAtMzJ6TTQ5NC4zIDMyMy4yYy05LjkgMjQtNDAuNyAxMS02My45LTEuMi0xMy41IDY5LjEtNTguMSAxMTEuNC0xMjYuMyAxMjQuMiAuMyAuOS0yLS4xIDI0IDEgMzMuNiAxLjQgNjMuOC0zLjEgOTcuNC04LTE5LjgtMTMuOC0xMS40LTM3LjEtOS44LTM4LjEgMS40LS45IDE0LjcgMS43IDIxLjYgMTEuNSA4LjYtMTIuNSAyOC40LTE0LjggMzAuMi0xMy42IDEuNiAxLjEgNi42IDIwLjktNi45IDM0LjYgNC43LS45IDguMi0xLjYgOS44LTIuMSAyLjYtLjggMTcuNyAxMS4zIDMuMSAxMy4zLTE0LjMgMi4zLTIyLjYgNS4xLTQ3LjEgMTAuOC00NS45IDEwLjctODUuOSAxMS44LTExNy43IDEyLjhsMSAxMS42YzMuOCAxOC4xLTIzLjQgMjQuMy0yNy42IDYuMiAuOCAxNy45LTI3LjEgMjEuOC0yOC40LTFsLS41IDUuM2MtLjcgMTguNC0yOC40IDE3LjktMjguMy0uNi03LjUgMTMuNS0yOC4xIDYuOC0yNi40LTguNWwxLjItMTIuNGMtMzYuNyAuOS01OS43IDMuMS02MS44IDMuMS0yMC45IDAtMjAuOS0zMS42IDAtMzEuNiAyLjQgMCAyNy43IDEuMyA2My4yIDIuOC02MS4xLTE1LjUtMTAzLjctNTUtMTE0LjktMTE4LjItMjUgMTIuOC01Ny41IDI2LjgtNjguMiAuOC0xMC41LTI1LjQgMjEuNS00Mi42IDY2LjgtNzMuNCAuNy02LjYgMS42LTEzLjMgMi43LTE5LjgtMTQuNC0xOS42LTExLjYtMzYuMy0xNi4xLTYwLjQtMTYuOCAyLjQtMjMuMi05LjEtMjMuNi0yMy4xIC4zLTcuMyAyLjEtMTQuOSAyLjQtMTUuNCAxLjEtMS44IDEwLjEtMiAxMi43LTIuNiA2LTMxLjcgNTAuNi0zMy4yIDkwLjktMzQuNSAxOS43LTIxLjggNDUuMi00MS41IDgwLjktNDguMy0xNS4zLTE5LjQtMy40LTM5LjktMi40LTQwLjQgMS43LS44IDIxLjIgNC4zIDI2LjMgMjMuMiA1LjItOC44IDE4LjMtMTEuNCAxOS42LTEwLjcgMS4xIC42IDYuNCAxNS00LjkgMjUuOSA0MC4zIDMuNSA3Mi4yIDI0LjcgOTYgNTAuNyAzNi4xIDEuNSA3MS44IDUuOSA3Ny4xIDM0IDIuNyAuNiAxMS42IC44IDEyLjcgMi42IC4zIC41IDIuMSA4LjEgMi40IDE1LjQtLjUgMTMuOS02LjggMjUuNC0yMy42IDIzLjEtMy4yIDE3LjMtMi43IDMyLjktOC43IDQ3LjcgMi40IDExLjcgNCAyMy44IDQuOCAzNi40IDM3IDI1LjQgNzAuMyA0Mi41IDYwLjMgNjYuOXpNMjIzLjUgMTU5LjljLjktNDQtMzcuOS00Mi4yLTc4LjYtNDAuMy0yMS43IDEtMzguOSAxLjktNDUuNSAxMy45LTExLjQgMjAuOSA1LjkgOTIuOSAyMy4yIDEwMS4yIDkuOCA0LjcgNzMuNCA3LjkgODYuMy03LjEgOC4yLTkuNCAxNS00OS40IDE0LjYtNjcuN3ptNTIgNTguM2MtNC4zLTEyLjQtNi0zMC4xLTE1LjMtMzIuNy0yLS41LTktLjUtMTEgMC0xMCAyLjgtMTAuOCAyMi4xLTE3IDM3LjIgMTUuNCAwIDE5LjMgOS43IDIzLjcgOS43IDQuMyAwIDYuMy0xMS4zIDE5LjYtMTQuMnptMTM1LjctODQuN2MtNi42LTEyLjEtMjQuOC0xMi45LTQ2LjUtMTMuOS00MC4yLTEuOS03OC4yLTMuOC03Ny4zIDQwLjMtLjUgMTguMyA1IDU4LjMgMTMuMiA2Ny44IDEzIDE0LjkgNzYuNiAxMS44IDg2LjMgNy4xIDE1LjgtNy42IDM2LjUtNzguOSAyNC4zLTEwMS4zeiJdfSxYenQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToic3ltZm9ueWNhc3RzIixpY29uOls1NzYsNTEyLFtdLCJlOGFiIiwiTTI5My44IDM0Mi41YzMuNC0xLjUgNi44LTEuNSAxMC4yIDBsNTQuMiAyMi42YzIuNiAuOSA0LjcgMi42IDYuMiA0LjhzMi4zIDQuOCAyLjMgNy42YzAgMTkuNC0zLjYgMzcuMi0xMC43IDUzLjQtNi4yIDEzLjYtMTQuNSAyNS40LTI0LjggMzUuNi04LjcgOC41LTE3LjcgMTQuNi0yNy4xIDE4LjQtMy40IDEuNS02LjggMS41LTEwLjIgMC0xMC43LTQuMy0yMC42LTExLjMtMjkuNy0yMC45LTEwLTEwLjQtMTcuOC0yMi41LTIzLjUtMzYuNC02LjQtMTUuNi05LjYtMzIuMy05LjYtNTAgMC0yLjggLjctNS40IDIuMi03LjYgMS41LTIuMyAzLjYtMy45IDYuMi00LjhsNTQuMi0yMi42ek00NzkuNyA0ODMuOGE3MC4xIDcwLjEgMCAxIDEgMC0xNDAuMiA3MC4xIDcwLjEgMCAxIDEgMCAxNDAuMnpNMjQ0LjYgMzc3LjZjMCAxNS4zIDIuNiAyOS43IDcuOSA0My4yIDQuOSAxMi40IDExLjYgMjMuMyAyMC4xIDMyLjUgOC4xIDguOSAxNi45IDE1LjMgMjYuMyAxOS4yIDkuMi0zLjggMTcuOC0xMCAyNS43LTE4LjcgOC43LTkuMiAxNS40LTE5LjkgMjAuMy0zMi4yIDUuNS0xMy43IDguMi0yOC40IDguMi00NC4xbC01NC4yLTIyLjYtNTQuMiAyMi42em0yMzUuMS0yMC4zYTU2LjUgNTYuNSAwIDEgMCAwIDExMyA1Ni41IDU2LjUgMCAxIDAgMC0xMTN6bS0zNTIuOCAyLjNjNC4xIDAgNy42IDEuMyAxMC40IDMuOSAyLjggMi42IDQuMiA1LjkgNC4yIDkuNmwwIDE2LjQgMzEuMS0xOS4yYzEuNS0xLjEgMy4yLTEuNyA1LjEtMS43IDIuNCAwIDQuNiAuOCA2LjMgMi41czIuNyAzLjggMi43IDYuMmwwIDcyLjZjMCAyLjYtLjkgNC44LTIuNyA2LjVzLTMuOSAyLjUtNi4zIDIuNWMtMS45IDAtMy42LS42LTUuMS0xLjdsLTMxLjEtMTkuMiAwIDE2LjRjMCAzLjgtMS40IDctNC4yIDkuNnMtNi4zIDQtMTAuNCA0bC04OC4yIDBjLTQuMSAwLTcuNi0xLjMtMTAuNS00cy00LjItNS44LTQuMi05LjZsMC04MS4zYzAtMy44IDEuNC03IDQuMi05LjZzNi4zLTMuOSAxMC41LTMuOWw4OC4yIDB6bTE3MiA5Ny44Yy0xMS4zLTctMjAuNC0xNi40LTI3LjQtMjguMy03LjUtMTIuNC0xMS45LTI2LjYtMTMtNDIuNGw0MC40LTE3IDAgODcuNnpNMzcuNSAzNzMuNGwwIDgwLjhjLjIgLjIgLjYgLjMgMS4yIC4zbDg4LjIgMGMuNCAwIC43LS4xIDEuMS0uM2wwLTgwLjhjLS4yLS4yLS42LS4zLTEuMi0uM2wtODguMSAwYy0uNCAwLS44IC4xLTEuMiAuM3ptNDE4LjQgNS4xYzIuMy0xLjMgNC41LTEuMyA2LjggMGw0OS44IDMwLjJjMi4zIDEuMyAzLjQgMy4zIDMuNCA1LjlzLTEuMSA0LjYtMy40IDUuOWwtNDkuOCAyOC42Yy0yLjMgMS4zLTQuNSAxLjMtNi44IDBzLTMuNC0zLjMtMy40LTUuOWwwLTU4LjhjMC0yLjYgMS4xLTQuNiAzLjQtNS45ek0xNDEuNSA0MDUuNWwwIDE2LjQgMzEuNyAxOS44IDAtNTYtMzEuNyAxOS44ek00NTEuMSA1LjJjMzUuOC0xLjIgNjIuOSAxNS4xIDYzLjggNDAuOCAuNCAxMC45LTUuOSAzMi4yLTI3LjggMzMtMTYuMyAuNi0yNy42LTkuMi0yOC4xLTI0LjEtLjItNS40IDEuMi0xMC4yIDQuOS0xNS44IDMuNi03LjEgNC40LTcuOSA0LjMtMTEtLjMtOS40LTE0LjUtOS43LTE4LjMtOS41LTUzIDEuOC02Ni45IDczLjMtNzguMiAxMzEuNWwtNS42IDMwLjdjMzAuNSA0LjUgNTIuMi0xIDY0LjItOC44IDE3LTExLTQuOC0yMi40LTItMzUgMi44LTEyLjggMTQuNC0xOSAyMy43LTE5LjIgMTIuOS0uMyAyMi4yIDEzLjEgMjEuOSAyNi43LS41IDIyLjYtMzAuNCA1My42LTkwLjIgNTIuMy03LjMtLjItMTQtLjctMjAuMi0xLjRsLTExLjMgNjIuM2MtMyAxNC02LjMgMjkuNS0xMC43IDQ1LjhsMjA0IDAgLjkgLjFjLjMgLjEgLjYgLjEgLjggLjIgMi4yIC42IDQgMi41IDQuNSA0LjggLjYgMi44LTEgNi0zLjcgNy4yLS41IC4yLTEuMSAuNC0xLjcgLjUtLjMgMC0uNiAwLS45IC4xbC01MTUuMyAwYy0uNy0uMS0uOSAwLTEuNy0uMi0yLjUtLjctNC40LTMuMS00LjYtNS43LS4yLTIuMyAxLTQuNiAzLTUuOCAuNy0uNSAxLjYtLjggMi40LS45IC4zIDAgLjYgMCAuOC0uMWw0OC40IDBjLTE3LjItMTYuOC0yMC0zNy4yLTE2LTUwLjUgNS40LTE3LjYgMTkuNC0yMC45IDMzLTE2LjcgMTQuNiA0LjUgMjAuMyAyMi4zIDE2LjIgMzYtLjUgMS41LTEuMiAzLjktMi44IDcuMi0xLjcgMy44LTQuOCA3LjEtNi4yIDExLjUtMS41IDQuOSAuNyA5LjEgNC41IDEyLjZsNTguOSAwYzQuMi00IDcuNC05IDkuMS0xNC42IDUuMy0xNy01LjUtMjguOS0xMC0zMy41bC0yMS43LTIzLjJjLTkuOS0xMS4xLTMxLjctNDEuOS0yMS4xLTc2LjUgNC4xLTEzLjQgMTIuOC0yNy41IDI1LjMtMzYuOSAyNi41LTE5LjcgNTUuMy0yMyA4Mi43LTE1LjEgMzUuNSAxMC4yIDUyLjUgMzMuNyA3NC42IDUxLjggMTIuNC0zNi4zIDI5LjUtNzEuOSA1NS4zLTEwMS45IDIzLjMtMjcuMyA1NC42LTQ3LjEgOTAuNC00OC4zek0yMjkuNiAxMjEuM2MtMjIuMi02LTM1LjctLjktNDUuMiAxMS4yLTExLjMgMTQuMy03LjUgMzIuOCAzLjMgNDMuN2wxOCAxOS45YzIyIDI1LjUgMzQuMSA0NS4zIDI5LjYgNzItMi4yIDEzLjEtOC41IDI1LjItMTcuOSAzNS4zbDU0LjIgMGMxLTUuMSAyLTEwLjQgMy4xLTE1LjhsMy42LTIxLjljNS45LTI5LjQgMTIuNC02Mi4yIDIyLjMtOTQuOC0yNC4xLTE4LjEtMzguNS00MC43LTcwLjktNDkuNXoiXX0sRThlPXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNxdWFyZS1vZG5va2xhc3NuaWtpIixpY29uOls0NDgsNTEyLFsib2Rub2tsYXNzbmlraS1zcXVhcmUiXSwiZjI2NCIsIk0yMjQgMTM3LjFjLTUuNC0uMy0xMC44IC42LTE1LjkgMi40cy05LjcgNC44LTEzLjYgOC41LTcgOC4yLTkuMiAxMy4yLTMuMiAxMC4zLTMuMiAxNS43IDEuMSAxMC44IDMuMiAxNS43IDUuMyA5LjUgOS4yIDEzLjIgOC42IDYuNiAxMy42IDguNSAxMC41IDIuNyAxNS45IDIuNGM1LjQgLjMgMTAuOC0uNiAxNS45LTIuNHM5LjctNC44IDEzLjYtOC41IDctOC4yIDkuMi0xMy4yIDMuMi0xMC4zIDMuMi0xNS43LTEuMS0xMC44LTMuMi0xNS43LTUuMy05LjUtOS4yLTEzLjItOC42LTYuNi0xMy42LTguNS0xMC41LTIuNy0xNS45LTIuNHpNMzg0IDMyTDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjR6TTIyNCAyNThhODEgODEgMCAxIDEgMC0xNjIuMSA4MSA4MSAwIDEgMSAwIDE2Mi4xem01OS4zIDYuMmMxNi44LTEzLjIgMjkuNS01LjUgMzQuMSAzLjYgNy44IDE2LTEuMSAyMy43LTIxLjUgMzctMTcuMSAxMC45LTQwLjcgMTUuMi01Ni4yIDE2LjhsMTMgMTIuOSA0Ny43IDQ3LjdjMTcuNCAxNy45LTExIDQ1LjgtMjguNiAyOC42LTEyLTEyLjItMjkuNS0yOS43LTQ3LjctNDcuOWwtNDcuNyA0Ny45Yy0xNy43IDE3LjItNDYtMTEtMjguNC0yOC42IDMuNy0zLjcgNy45LTcuOSAxMi41LTEyLjUgMTAuNC0xMC40IDIyLjYtMjIuNyAzNS4yLTM1LjJsMTIuOS0xMi45Yy0xNS40LTEuNi0zOS4zLTUuNy01Ni42LTE2LjgtMjAuMy0xMy4zLTI5LjMtMjAuOS0yMS40LTM3IDQuNi05LjEgMTcuMy0xNi44IDM0LjEtMy42IDAgMCAyMi43IDE4IDU5LjMgMThzNTkuMy0xOCA1OS4zLTE4eiJdfSxRenQ9RThlLEp6dD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJtYXJrZG93biIsaWNvbjpbNjQwLDUxMixbXSwiZjYwZiIsIk01OTMuOCA1OS4xbC01NDcuNiAwQzIwLjcgNTkuMSAwIDc5LjggMCAxMDUuMkwwIDQwNi43YzAgMjUuNSAyMC43IDQ2LjIgNDYuMiA0Ni4ybDU0Ny43IDBjMjUuNSAwIDQ2LjItMjAuNyA0Ni4xLTQ2LjFsMC0zMDEuNmMwLTI1LjQtMjAuNy00Ni4xLTQ2LjItNDYuMXpNMzM4LjUgMzYwLjZsLTYxLjUgMCAwLTEyMC02MS41IDc2LjktNjEuNS03Ni45IDAgMTIwLTYxLjcgMCAwLTIwOS4yIDYxLjUgMCA2MS41IDc2LjkgNjEuNS03Ni45IDYxLjUgMCAwIDIwOS4yIC4yIDB6bTEzNS4zIDMuMWwtOTIuMy0xMDcuNyA2MS41IDAgMC0xMDQuNiA2MS41IDAgMCAxMDQuNiA2MS41IDAtOTIuMiAxMDcuN3oiXX0sZUN0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InR5cG8zIixpY29uOls0NDgsNTEyLFtdLCJmNDJiIiwiTTE3OC43IDc4LjRjMC0yNC43IDUuNC0zMi40IDEzLjktMzkuNC02OS41IDguNS0xNDkuMyAzNC0xNzYuMyA2Ni40LTUuNCA3LjctOS4zIDIwLjgtOS4zIDM3LjEgMCAxMDMuNSAxMDYuOCAzMzcuNSAxODQuMSAzMzcuNSAzNi4zIDAgOTcuMy01OS41IDE0Ni43LTEzOS03IDIuMy0xMS42IDIuMy0xOC41IDIuMy01Ny4yIDAtMTQwLjYtMTk4LjUtMTQwLjYtMjY0Ljl6TTMwMS41IDMyYy0zMC4xIDAtNDEuNyA1LjQtNDEuNyAzNi4zIDAgNjYuNCA1My44IDE5OC41IDEwMS43IDE5OC41IDI2LjMgMCA3OC44LTk5LjcgNzguOC0xODIuMyAwLTQwLjktNjctNTIuNS0xMzguOC01Mi41eiJdfSx0Q3Q9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiam9vbWxhIixpY29uOls0NDgsNTEyLFtdLCJmMWFhIiwiTS42IDkyLjFjMC0zMy4zIDI2LjgtNjAuMSA1OS44LTYwLjEgMzAgMCA1NC41IDIxLjkgNTkuMiA1MC4yIDMyLjYtNy42IDY3LjEgLjYgOTYuNSAzMGwtNDQuMyA0NC4zYy0yMC41LTIwLjUtNDIuNi0xNi4zLTU1LjQtMy41LTE0LjMgMTQuMy0xNC4zIDM3LjkgMCA1Mi4ybDk5LjUgOTkuNS00NCA0NC4zYy04Ny43LTg3LjItNDkuNy00OS43LTk5LjgtOTkuNy0yNi44LTI2LjUtMzUtNjQuOC0yNC44LTk4LjktMjYuOS01LjgtNDYuNy0yOS43LTQ2LjctNTguM3pNMTMwLjEgMjA4LjVsNDQuMyA0NC4zYzEwLTEwIDg5LjctODkuNyA5OS43LTk5LjggMTQuMy0xNC4zIDM3LjYtMTQuMyA1MS45IDAgMTIuOCAxMi44IDE3IDM1LTMuNSA1NS40bDQ0IDQ0LjNjMzEuMi0zMS4yIDM4LjUtNjcuNiAyOC45LTEwMS4yIDI5LjItNC4xIDUxLjktMjkuMiA1MS45LTU5LjUgMC0zMy4yLTI2LjgtNjAuMS01OS44LTYwLjEtMzAuMyAwLTU1LjQgMjIuNS01OS41IDUxLjYtMzMuOC05LjktNzEuNy0xLjUtOTguMyAyNS4xLTE4LjMgMTkuMS03MS4xIDcxLjUtOTkuNiA5OS45ek0zOTYuNCAzNjAuN2M4LjItMzIuNy0uOS02OC41LTI2LjMtOTMuOS0xMS44LTEyLjIgNSA0LjctOTkuNS05OS43bC00NC4zIDQ0LjMgOTkuNyA5OS43YzE0LjMgMTQuMyAxNC4zIDM3LjYgMCA1MS45LTEyLjggMTIuOC0zNSAxNy01NS40LTMuNWwtNDQgNDQuM2MyNy42IDMwLjIgNjggMzguOCAxMDIuNyAyOCA1LjUgMjcuNCAyOS43IDQ4LjEgNTguOSA0OC4xIDMzIDAgNTkuOC0yNi44IDU5LjgtNjAuMSAwLTMwLjItMjIuNS01NS01MS42LTU5LjF6bS04NC4zLTUzLjFsLTQ0LTQ0LjNjLTg3IDg2LjQtNTAuNCA1MC40LTk5LjcgOTkuOC0xNC4zIDE0LjMtMzcuNiAxNC4zLTUxLjkgMC0xMy4xLTEzLjQtMTYuOS0zNS4zIDMuMi01NS40bC00NC00NC4zYy0zMC4yIDMwLjItMzggNjUuMi0yOS41IDk4LjMtMjYuNyA2LTQ2LjIgMjkuOS00Ni4yIDU4LjIgMCAzMy4zIDI2LjggNjAuMSA1OS44IDYwLjEgMjguNiAwIDUyLjUtMTkuOCA1OC42LTQ2LjcgMzIuNyA4LjIgNjguNS0uNiA5NC4yLTI2IDMyLjEtMzIgMTIuMi0xMi40IDk5LjUtOTkuN3oiXX0sYUN0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6IndlaXhpbiIsaWNvbjpbNTc2LDUxMixbXSwiZjFkNyIsIk0zODUuMiAxNjcuNmM2LjQgMCAxMi42IC4zIDE4LjggMS4xLTE2LjYtNzguNC0xMDAuNy0xMzYuNy0xOTYuMy0xMzYuNy0xMDcuMiAwLTE5NC43IDcyLjgtMTk0LjcgMTY1LjQgMCA1My40IDI5LjMgOTcuNSA3Ny45IDEzMS42bC0xOS4zIDU4LjYgNjgtMzQuMWMyNC40IDQuOCA0My44IDkuNyA2OC4yIDkuNyA2LjIgMCAxMi4xLS4zIDE4LjMtLjgtNC0xMi45LTYuMi0yNi42LTYuMi00MC44LS4xLTg0LjkgNzIuOS0xNTQgMTY1LjMtMTU0ek0yODAuNyAxMTQuN2MxNC41IDAgMjQuMiA5LjcgMjQuMiAyNC40IDAgMTQuNS05LjcgMjQuMi0yNC4yIDI0LjItMTQuOCAwLTI5LjMtOS43LTI5LjMtMjQuMiAuMS0xNC43IDE0LjYtMjQuNCAyOS4zLTI0LjR6TTE0NC4zIDE2My4zYy0xNC41IDAtMjkuMy05LjctMjkuMy0yNC4yIDAtMTQuOCAxNC44LTI0LjQgMjkuMy0yNC40IDE0LjggMCAyNC40IDkuNyAyNC40IDI0LjQgMCAxNC42LTkuNiAyNC4yLTI0LjQgMjQuMnpNNTYzIDMxOS40YzAtNzcuOS03Ny45LTE0MS4zLTE2NS40LTE0MS4zLTkyLjcgMC0xNjUuNCA2My40LTE2NS40IDE0MS4zUzMwNSA0NjAuNyAzOTcuNiA0NjAuN2MxOS4zIDAgMzguOS01LjEgNTguNi05LjlsNTMuNCAyOS4zLTE0LjgtNDguNkM1MzQgNDAyLjEgNTYzIDM2My4yIDU2MyAzMTkuNHpNMzQzLjkgMjk0LjljLTkuNyAwLTE5LjMtOS43LTE5LjMtMTkuNiAwLTkuNyA5LjctMTkuMyAxOS4zLTE5LjMgMTQuOCAwIDI0LjQgOS43IDI0LjQgMTkuMyAwIDEwLTkuNyAxOS42LTI0LjQgMTkuNnptMTA3LjEgMGMtOS43IDAtMTkuMy05LjctMTkuMy0xOS42IDAtOS43IDkuNy0xOS4zIDE5LjMtMTkuMyAxNC41IDAgMjQuNCA5LjcgMjQuNCAxOS4zIC4xIDEwLTkuOSAxOS42LTI0LjQgMTkuNnoiXX0sc0N0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImdydW50IixpY29uOlszODQsNTEyLFtdLCJmM2FkIiwiTTYxLjYgMTg5LjNjLTEuMSAxMCA1LjIgMTkuMSA1LjIgMTkuMSAuNy03LjUgMi4yLTEyLjggNC0xNi42IC40IDEwLjMgMy4yIDIzLjUgMTIuOCAzNC4xIDYuOSA3LjYgMzUuNiAyMy4zIDU0LjkgNi4xIDEgMi40IDIuMSA1LjMgMyA4LjUgMi45IDEwLjMtMi43IDI1LjMtMi43IDI1LjNzMTUuMS0xNy4xIDEzLjktMzIuNWMxMC44LS41IDIxLjQtOC40IDIxLjEtMTkuNSAwIDAtMTguOSAxMC40LTM1LjUtOC44LTkuNy0xMS4yLTQwLjktNDItODMuMS0zMS44IDQuMyAxIDguOSAyLjQgMTMuNSA0LjFsLS4xIDBjLTQuMiAyLTYuNSA3LjEtNyAxMnptMjguMy0xLjhjMTkuNSAxMSAzNy40IDI1LjcgNDQuOSAzNy01LjcgMy4zLTIxLjcgMTAuNC0zOC0xLjctMTAuMy03LjYtOS44LTI2LjItNi45LTM1LjN6TTIzMiAyMzMuM2MtMS4yIDE1LjUgMTMuOSAzMi41IDEzLjkgMzIuNXMtNS42LTE1LTIuNy0yNS4zYy45LTMuMiAyLTYgMy04LjUgMTkuMyAxNy4zIDQ4IDEuNSA1NC44LTYuMSA5LjYtMTAuNiAxMi4zLTIzLjggMTIuOC0zNC4xIDEuOCAzLjggMy40IDkuMSA0IDE2LjYgMCAwIDYuNC05LjEgNS4yLTE5LjEtLjYtNS0yLjktMTAtNy0xMS44bC0uMSAwYzQuNi0xLjggOS4yLTMuMiAxMy41LTQuMS00Mi4zLTEwLjItNzMuNCAyMC42LTgzLjEgMzEuOC0xNi43IDE5LjItMzUuNSA4LjgtMzUuNSA4LjgtLjIgMTAuOSAxMC40IDE4LjkgMjEuMiAxOS4zem02Mi43LTQ1LjhjMyA5LjEgMy40IDI3LjctNyAzNS40LTE2LjMgMTIuMS0zMi4yIDUtMzcuOSAxLjYgNy41LTExLjQgMjUuNC0yNiA0NC45LTM3em0tMTM0LjQgMjMxbC0yOS40IDBjLTUuNSAwLTguMiAxLjYtOS41IDIuOS0xLjkgMi0yLjIgNC43LS45IDguMSAzLjUgOS4xIDExLjQgMTYuNSAxMy43IDE4LjYgMy4xIDIuNyA3LjUgNC4zIDExLjggNC4zIDQuNCAwIDguMy0xLjcgMTEtNC42IDcuNS04LjIgMTEuOS0xNy4xIDEzLTE5LjggLjYtMS41IDEuMy00LjUtLjktNi44LTEuOC0xLjgtNC43LTIuNy04LjgtMi43ek0zNDkuNSAzMTcuM2MtMi40IDE3LjktMTMgMzMuOC0yNC42IDQzLjctMy4xLTIyLjctMy43LTU1LjUtMy43LTYyLjQgMC0xNC43IDkuNS0yNC41IDEyLjItMjYuMSAyLjUtMS41IDUuNC0zIDguMy00LjYgMTgtOS42IDQwLjQtMjEuNiA0MC40LTQzLjcgMC0xNi4yLTkuMy0yMy4yLTE1LjQtMjcuOC0uOC0uNi0xLjUtMS4xLTIuMi0xLjctMi4xLTEuNy0zLjctMy00LjMtNC40LTQuNC05LjgtMy42LTM0LjItMS43LTM3LjYgLjYtLjYgMTYuNy0yMC45IDExLjgtMzkuMi0yLTcuNC02LjktMTMuMy0xNC4xLTE3LTUuMy0yLjctMTEuOS00LjItMTkuNS00LjUtLjEtMi0uNS0zLjktLjktNS45LS42LTIuNi0xLjEtNS4zLS45LTguMSAuNC00LjcgLjgtOSAyLjItMTEuMyA4LjQtMTMuMyAyOC44LTE3LjYgMjktMTcuNmwxMi4zLTIuNC04LjEtOS41Yy0uMS0uMi0xNy4zLTE3LjUtNDYuMy0xNy41LTcuOSAwLTE2IDEuMy0yNC4xIDMuOS0yNC4yIDcuOC00Mi45IDMwLjUtNDkuNCAzOS4zLTMuMS0xLTYuMy0xLjktOS42LTIuNy00LjItMTUuOCA5LTM4LjUgOS0zOC41cy0xMy42LTMtMzMuNyAxNS4yYy0yLjYtNi41LTguMS0yMC41LTEuOC0zNy4yLTI5LjUgMTAuNC0zNi45IDI2LjMtMzkuMSA0MC43LTcuNi01LjQtNi43LTIzLjEtNy4yLTI3LjYtNy41IC45LTI5LjIgMjEuOS0yOC4yIDQ4LjMtMiAuNS0zLjkgMS4xLTUuOSAxLjctNi41LTguOC0yNS4xLTMxLjUtNDkuNC0zOS4zLTcuOS0yLjItMTYtMy41LTIzLjktMy41LTI5IDAtNDYuMSAxNy4zLTQ2LjMgMTcuNWwtOC4xIDkuNCAxMi4zIDIuNGMuMiAwIDIwLjYgNC4zIDI5IDE3LjYgMS40IDIuMiAxLjggNi42IDIuMiAxMS4zIC4yIDIuOC0uNCA1LjUtLjkgOC4xLS40IDEuOS0uOCAzLjktLjkgNS45LTcuNyAuMy0xNC4yIDEuOC0xOS41IDQuNS03LjIgMy43LTEyLjEgOS42LTE0LjEgMTctNSAxOC4yIDExLjIgMzguNSAxMS44IDM5LjIgMS45IDMuNCAyLjcgMjcuOC0xLjcgMzcuNi0uNiAxLjQtMi4yIDIuNy00LjMgNC40LS43IC41LTEuNCAxLjEtMi4yIDEuNy02LjEgNC42LTE1LjQgMTEuNy0xNS40IDI3LjggMCAyMi4xIDIyLjQgMzQuMSA0MC40IDQzLjcgMyAxLjYgNS44IDMuMSA4LjMgNC42IDIuNyAxLjYgMTIuMiAxMS40IDEyLjIgMjYuMSAwIDYuOS0uNiAzOS43LTMuNyA2Mi40LTExLjYtOS45LTIyLjItMjUuOS0yNC42LTQzLjggMCAwLTI5LjIgMjIuNi0yMC42IDcwLjggNS4yIDI5LjUgMjMuMiA0Ni4xIDQ3IDU0LjcgOC44IDE5LjEgMjkuNCA0NS43IDY3LjMgNDkuNiAxNC40IDExLjggMzQuNCAxOS41IDYzLjYgMTkuNWwuMiAwYzI5LjEgMCA0OS4xLTcuNyA2My42LTE5LjUgMzcuOS0zLjkgNTguNS0zMC41IDY3LjMtNDkuNiAyMy44LTguNyA0MS43LTI1LjIgNDctNTQuNyA4LjItNDguNC0yMS4xLTcwLjktMjEuMS03MC45ek0zMDYgMzcuN2M1LjYtMS44IDExLjYtMi43IDE3LjctMi43IDExIDAgMTkuOSAzIDI0LjcgNS0zLjEgMS40LTYuNCAzLjItOS43IDUuMy0yLjQtLjQtNS42LS44LTkuMi0uOC0xMC41IDAtMjAuNSAzLjEtMjguNyA4LjktMTIuMyA4LjctMTggMTYuOS0yMC43IDIyLjQtMi4yLTEuMy00LjUtMi41LTcuMS0zLjctMS42LS44LTMuMS0xLjUtNC43LTIuMiA2LjEtOS4xIDE5LjktMjYuNSAzNy43LTMyLjJ6bTIxIDE4LjJjLS44IDEtMS42IDIuMS0yLjMgMy4yLTMuMyA1LjItMy45IDExLjYtNC40IDE3LjgtLjUgNi40LTEuMSAxMi41LTQuNCAxNy00LjIgLjgtOC4xIDEuNy0xMS41IDIuNy0yLjMtMy4xLTUuNi03LTEwLjUtMTEuMiAxLjQtNC44IDUuNS0xNi4xIDEzLjUtMjIuNSA1LjYtNC4zIDEyLjItNi43IDE5LjYtN3pNNDUuOSA0NS4zYy0zLjMtMi4yLTYuNi00LTkuNy01LjMgNC44LTIgMTMuNy01IDI0LjctNSA2LjEgMCAxMiAuOSAxNy43IDIuNyAxNy44IDUuOCAzMS42IDIzLjIgMzcuNyAzMi4xLTEuNiAuNy0zLjIgMS40LTQuOCAyLjItMi41IDEuMi00LjkgMi41LTcuMSAzLjctMi42LTUuNC04LjMtMTMuNy0yMC43LTIyLjQtOC4zLTUuOC0xOC4yLTguOS0yOC44LTguOS0zLjQgLjEtNi42IC41LTkgLjl6TTkwLjYgODUuNGMtNC45IDQuMi04LjMgOC0xMC41IDExLjItMy40LS45LTcuMy0xLjktMTEuNS0yLjctMy4zLTQuNC0zLjgtMTAuNS00LjMtMTYuOS0uNS02LjItMS4xLTEyLjYtNC40LTE3LjgtLjctMS4xLTEuNS0yLjItMi4zLTMuMiA3LjQgLjMgMTQgMi42IDE5LjUgNyA4IDYuMyAxMi4xIDE3LjYgMTMuNSAyMi40ek01OC40IDI1OS45Yy0yLjctMS42LTUuNi0zLjEtOC40LTQuNi0xNC45LTgtMzAuMi0xNi4zLTMwLjItMzAuNSAwLTExLjEgNC4zLTE0LjYgOC45LTE4LjJsLjUtLjRjLjctLjYgMS40LTEuMiAyLjItMS44LS45IDcuMi0xLjkgMTMuMy0yLjcgMTQuOSAwIDAgMTIuMS0xNSAxNS43LTQ0LjMgMS40LTExLjUtMS4xLTM0LjMtNS4xLTQzIC4yIDQuOSAwIDkuOC0uMyAxNC40LS40LS44LS44LTEuNi0xLjMtMi4yLTMuMi00LTExLjgtMTcuNS05LjQtMjYuNiAuOS0zLjUgMy4xLTYgNi43LTcuOCAzLjgtMS45IDguOC0yLjkgMTUuMS0yLjkgMTIuMyAwIDI1LjkgMy43IDMyLjkgNiAyNS4xIDggNTUuNCAzMC45IDY0LjEgMzcuNyAuMiAuMiAuNCAuMyAuNCAuM2w1LjYgMy45LTMuNS01LjhjLS4yLS4zLTE5LjEtMzEuNC01My4yLTQ2LjUgMi0yLjkgNy40LTguMSAyMS42LTE1LjEgMjEuNC0xMC41IDQ2LjUtMTUuOCA3NC4zLTE1LjggMjcuOSAwIDUyLjkgNS4zIDc0LjMgMTUuOCAxNC4yIDYuOSAxOS42IDEyLjIgMjEuNiAxNS4xLTM0IDE1LjEtNTIuOSA0Ni4yLTUzLjEgNDYuNWwtMy41IDUuOCA1LjYtMy45cy4yLS4xIC40LS4zYzguNy02LjggMzktMjkuOCA2NC4xLTM3LjcgNy0yLjIgMjAuNi02IDMyLjktNiA2LjMgMCAxMS4zIDEgMTUuMSAyLjkgMy41IDEuOCA1LjcgNC40IDYuNyA3LjggMi41IDkuMS02LjEgMjIuNi05LjQgMjYuNi0uNSAuNi0uOSAxLjMtMS4zIDIuMi0uMy00LjYtLjUtOS41LS4zLTE0LjQtNCA4LjgtNi41IDMxLjUtNS4xIDQzIDMuNiAyOS4zIDE1LjcgNDQuMyAxNS43IDQ0LjMtLjgtMS42LTEuOC03LjctMi43LTE0LjkgLjcgLjYgMS41IDEuMiAyLjIgMS44bC41IC40YzQuNiAzLjcgOC45IDcuMSA4LjkgMTguMiAwIDE0LjItMTUuNCAyMi41LTMwLjIgMzAuNS0yLjkgMS41LTUuNyAzLjEtOC40IDQuNi04LjcgNS0xOCAxNi43LTE5LjEgMzQuMi0uOSAxNC42IC45IDQ5LjkgMy40IDc1LjktMTIuNCA0LjgtMjYuNyA2LjQtMzkuNyA2LjgtMi00LjEtMy45LTguNS01LjUtMTMuMS0uNy0yLTE5LjYtNTEuMS0yNi40LTYyLjIgNS41IDM5IDE3LjUgNzMuNyAyMy41IDg5LjYtMy41LS41LTcuMy0uNy0xMS43LS43bC0xMTcgMGMtNC40IDAtOC4zIC4zLTExLjcgLjcgNi0xNS45IDE4LjEtNTAuNiAyMy41LTg5LjYtNi44IDExLjItMjUuNyA2MC4zLTI2LjQgNjIuMi0xLjYgNC42LTMuNSA5LTUuNSAxMy4xLTEzLS40LTI3LjItMi0zOS43LTYuOCAyLjUtMjYgNC4zLTYxLjIgMy40LTc1LjktLjktMTcuNC0xMC4zLTI5LjItMTktMzQuMnpNMzUuMSA0MDQuNmMtMTIuMS0yMC04LjctNTQuMS0zLjctNTkuMSAxMC45IDM0LjQgNDcuMiA0NC4zIDc0LjQgNDUuNC0yLjcgNC4yLTUuMiA3LjYtNyAxMGwtMS40IDEuNGMtNy4yIDcuOC04LjYgMTguNS00LjEgMzEuOC0yMi43LS4xLTQ2LjMtOS44LTU4LjItMjkuNXptNDUuNyA0My41YzYgMS4xIDEyLjIgMS45IDE4LjYgMi40IDMuNSA4IDcuNCAxNS45IDEyLjMgMjMuMS0xNC40LTUuOS0yNC40LTE2LTMwLjktMjUuNXptMTExLjUgNTAuMWMtNjAuNi0uMS03OC4zLTQ1LjgtODQuOS02NC43LTMuNy0xMC41LTMuNC0xOC4yIC45LTIzLjEgMi45LTMuMyA5LjUtNy4yIDI0LjYtNy4ybDExOC44IDBjMTUuMSAwIDIxLjggMy45IDI0LjYgNy4yIDQuMiA0LjggNC41IDEyLjYgLjkgMjMuMS02LjYgMTguOC0yNC4zIDY0LjYtODQuOSA2NC43em04MC42LTI0LjZjNC45LTcuMiA4LjgtMTUuMSAxMi4zLTIzLjEgNi40LS41IDEyLjYtMS4zIDE4LjYtMi40LTYuNSA5LjUtMTYuNSAxOS42LTMwLjkgMjUuNXptNzYuNi02OWMtMTIgMTkuNy0zNS42IDI5LjMtNTguMSAyOS43IDQuNS0xMy4zIDMuMS0yNC4xLTQuMS0zMS44LS40LS41LS45LTEtMS40LTEuNS0xLjgtMi40LTQuMy01LjgtNy0xMCAyNy4yLTEuMiA2My41LTExIDc0LjQtNDUuNCA1IDUgOC40IDM5LjEtMy44IDU5ek0xOTIuMiAxODcuN2wuMiAwYzEyLjctLjEgMjcuMi0xNy44IDI3LjItMTcuOC05LjkgNi0xOC44IDguMS0yNy4zIDguMy04LjUtLjItMTcuNC0yLjMtMjcuMy04LjMgMCAwIDE0LjUgMTcuNiAyNy4yIDE3Ljh6bTYxLjcgMjMwLjdsLTI5LjQgMGMtNC4yIDAtNy4yIC45LTguOSAyLjctMi4yIDIuMy0xLjUgNS4yLS45IDYuNyAxIDIuNiA1LjUgMTEuMyAxMyAxOS4zIDIuNyAyLjkgNi42IDQuNSAxMSA0LjVzOC43LTEuNiAxMS44LTQuMmMyLjMtMiAxMC4yLTkuMiAxMy43LTE4LjEgMS4zLTMuMyAxLTYtLjktNy45LTEuMy0xLjMtNC0yLjktOS40LTN6Il19LGlDdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzdXBwb3J0bm93IixpY29uOls2NDAsNTEyLFtdLCJlODMzIiwiTTAgMTkxLjlsMjAzLjktLjFjMS44LS42IDIuNS05LjUgMy4yLTEyLjIgMy4zLTEzLjUgOC40LTI2LjQgMTQuOC0zOC43bC0xNjAuMiAwIDAtNDguMiAyMzQuNSAwIDAgMzljLTUxLjIgMzYuMS01Ni40IDkyLjYtMjMuNiAxNDMuOSAzMy4xIDUxLjcgOTMuNCA4OC4xIDE0OS41IDExMC41IDY3LjgtMjUuMiAxNjQuOS04OS45IDE2OS40LTE2OS42IDMuMS01NS4zLTQyLjItMTAxLjgtOTguNy05MS44LTQxLjUgNy40LTYyLjEgNDYuNy01NC44IDg2LjRsLTQ4LjIgMGMtNy4zLTU2LjYgMjIuOC0xMTIuNiA3OC40LTEzMC4zIDc4LjctMjUuMSAxNTkuNSAyOCAxNzAuNCAxMDguOCAxNS4yIDExMi4zLTk1LjUgMTk5LjktMTg4LjEgMjM3LjgtNC40IDEuOC0yNC40IDEwLjEtMjcuNSAxMC4xbC0yODAuMyAwIDAtNDguMiAxNzguNSAwLTM4LjEtMjguOS0yMy4yLTIyLjEtMTk4LjMgMCAwLTQ4LjIgMTYzLjEgMGMtNy4xLTExLjYtMTIuMy0yNC4zLTE2LjEtMzcuNC0uNy0yLjUtMi4xLTEyLTMuOC0xMi42bC0yMDQuOS0uMSAwLTQ4LjIgMCAweiJdfSxyQ3Q9e3ByZWZpeDoiZmFiIixpY29uTmFtZToicm9ja3JtcyIsaWNvbjpbNTEyLDUxMixbXSwiZjNlOSIsIk0yNTYgOGEyNDggMjQ4IDAgMSAwIDAgNDk2IDI0OCAyNDggMCAxIDAgMC00OTZ6TTQxMy40IDQyNy41bC05MCAwLTExMi0xMzEuM2MtMTcuOS0yMC40LTMuOS01Ni4xIDI2LjYtNTYuMWw3NS4zIDAtODQuNi05OS4zLTg0LjMgOTguOS05MCAwIDE0Ny4xLTE3Mi41YzE0LjQtMTguNCA0MS4zLTE3LjMgNTQuNSAwTDQxMy43IDI1Mi4zYzE5IDIyLjggMiA1Ny4yLTI3LjYgNTYuMS0uNiAwLTc0LjIgLjItNzQuMiAuMkw0MTMuNCA0MjcuNXoiXX0sb0N0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InVuc3BsYXNoIixpY29uOls0NDgsNTEyLFtdLCJlMDdjIiwiTTQ0OCAyMzAuMmwwIDI0OS44LTQ0OCAwIDAtMjQ5LjggMTQxLjEgMCAwIDEyNC45IDE2NS43IDAgMC0xMjQuOSAxNDEuMSAwek0zMDYuOSAzMmwtMTY1LjcgMCAwIDEyNC45IDE2NS43IDAgMC0xMjQuOXoiXX0sUDhlPXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNxdWFyZS1pbnN0YWdyYW0iLGljb246WzQ0OCw1MTIsWyJpbnN0YWdyYW0tc3F1YXJlIl0sImUwNTUiLCJNMTk0LjQgMjExLjdhNTMuMyA1My4zIDAgMSAwIDU5LjIgODguNiA1My4zIDUzLjMgMCAxIDAgLTU5LjItODguNnptMTQyLjMtNjguNGMtNS4yLTUuMi0xMS41LTkuMy0xOC40LTEyLTE4LjEtNy4xLTU3LjYtNi44LTgzLjEtNi41LTQuMSAwLTcuOSAuMS0xMS4yIC4xcy03LjIgMC0xMS40LS4xYy0yNS41LS4zLTY0LjgtLjctODIuOSA2LjUtNi45IDIuNy0xMy4xIDYuOC0xOC40IDEycy05LjMgMTEuNS0xMiAxOC40Yy03LjEgMTguMS02LjcgNTcuNy02LjUgODMuMiAwIDQuMSAuMSA3LjkgLjEgMTEuMXMwIDctLjEgMTEuMWMtLjIgMjUuNS0uNiA2NS4xIDYuNSA4My4yIDIuNyA2LjkgNi44IDEzLjEgMTIgMTguNHMxMS41IDkuMyAxOC40IDEyYzE4LjEgNy4xIDU3LjYgNi44IDgzLjEgNi41IDQuMSAwIDcuOS0uMSAxMS4yLS4xczcuMiAwIDExLjQgLjFjMjUuNSAuMyA2NC44IC43IDgyLjktNi41IDYuOS0yLjcgMTMuMS02LjggMTguNC0xMnM5LjMtMTEuNSAxMi0xOC40YzcuMi0xOCA2LjgtNTcuNCA2LjUtODMgMC00LjItLjEtOC4xLS4xLTExLjRzMC03LjEgLjEtMTEuNGMuMy0yNS41IC43LTY0LjktNi41LTgzLTIuNy02LjktNi44LTEzLjEtMTItMTguNGwwIC4yem0tNjcuMSA0NC41YzE4LjEgMTIuMSAzMC42IDMwLjkgMzQuOSA1Mi4ycy0uMiA0My41LTEyLjMgNjEuNmMtNiA5LTEzLjcgMTYuNi0yMi42IDIyLjZzLTE5IDEwLjEtMjkuNiAxMi4yYy0yMS4zIDQuMi00My41LS4yLTYxLjYtMTIuM3MtMzAuNi0zMC45LTM0LjktNTIuMiAuMi00My41IDEyLjItNjEuNiAzMC45LTMwLjYgNTIuMi0zNC45IDQzLjUgLjIgNjEuNiAxMi4ybC4xIDB6bTI5LjItMS4zYy0zLjEtMi4xLTUuNi01LjEtNy4xLTguNnMtMS44LTcuMy0xLjEtMTEuMSAyLjYtNy4xIDUuMi05LjggNi4xLTQuNSA5LjgtNS4yIDcuNi0uNCAxMS4xIDEuMSA2LjUgMy45IDguNiA3IDMuMiA2LjggMy4yIDEwLjZjMCAyLjUtLjUgNS0xLjQgNy4zcy0yLjQgNC40LTQuMSA2LjItMy45IDMuMi02LjIgNC4yLTQuOCAxLjUtNy4zIDEuNWMtMy44IDAtNy41LTEuMS0xMC42LTMuMmwtLjEgMHpNNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjB6TTM1NyAzODljLTE4LjcgMTguNy00MS40IDI0LjYtNjcgMjUuOS0yNi40IDEuNS0xMDUuNiAxLjUtMTMyIDAtMjUuNi0xLjMtNDguMy03LjItNjctMjUuOXMtMjQuNi00MS40LTI1LjgtNjdjLTEuNS0yNi40LTEuNS0xMDUuNiAwLTEzMiAxLjMtMjUuNiA3LjEtNDguMyAyNS44LTY3czQxLjUtMjQuNiA2Ny0yNS44YzI2LjQtMS41IDEwNS42LTEuNSAxMzIgMCAyNS42IDEuMyA0OC4zIDcuMSA2NyAyNS44czI0LjYgNDEuNCAyNS44IDY3YzEuNSAyNi4zIDEuNSAxMDUuNCAwIDEzMS45LTEuMyAyNS42LTcuMSA0OC4zLTI1LjggNjdsMCAuMXoiXX0sbkN0PVA4ZSxsQ3Q9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZmlyc3Qtb3JkZXItYWx0IixpY29uOls1MTIsNTEyLFtdLCJmNTBhIiwiTTI1NiA4YTI0OCAyNDggMCAxIDAgMCA0OTYgMjQ4IDI0OCAwIDEgMCAwLTQ5NnptMCA3LjhhMjQwLjIgMjQwLjIgMCAxIDEgMCA0ODAuNCAyNDAuMiAyNDAuMiAwIDEgMSAwLTQ4MC40em0wIDIwLjVhMjE5LjcgMjE5LjcgMCAxIDAgMCA0MzkuNCAyMTkuNyAyMTkuNyAwIDEgMCAwLTQzOS40em0wIDguMmEyMTEuNSAyMTEuNSAwIDEgMSAwIDQyMyAyMTEuNSAyMTEuNSAwIDEgMSAwLTQyM3ptMTg2LjIgMjYwYy00LjQgMTcuMS0xMS4yIDMzLjUtMjAuMSA0OC43bC03NC4xLTM1LjkgNjEuNSA1NC44Yy0xMC42IDE0LjEtMjMuMiAyNi42LTM3LjIgMzcuM2wtNTQuOC02MS42IDM1LjkgNzQuM2MtMTUuMiA5LTMxLjYgMTUuOC00OC42IDIwLjJsLTI3LjMtNzguNSA0LjggODIuOWMtOC42IDEuMi0xNy40IDEuOC0yNi4zIDEuOHMtMTcuNy0uNi0yNi4zLTEuOGw0LjgtODIuNS0yNy4yIDc4Yy0xNy4xLTQuNS0zMy40LTExLjMtNDguNy0yMC4ybDM1LjktNzQuMy01NC45IDYxLjZjLTE0LTEwLjctMjYuNi0yMy4yLTM3LjItMzcuM2w2MS42LTU0LjktNzQuMyAzNS45QzgwLjcgMzM4IDc0IDMyMS43IDY5LjUgMzA0LjZsNzcuOC0yNy4xLTgyLjIgNC44Yy0xLjItOC42LTEuOC0xNy4zLTEuOC0yNi4yIDAtOSAuNi0xNy44IDEuOC0yNi41bDgyLjQgNC44LTc3LjktMjcuMmM0LjUtMTcuMSAxMS4zLTMzLjUgMjAuMi00OC43bDc0LjIgMzUuOS02MS41LTU0LjljMTAuNy0xNCAyMy4yLTI2LjYgMzcuMy0zNy4ybDU0LjggNjEuNS0zNS44LTc0LjJjMTUuMi04LjkgMzEuNi0xNS43IDQ4LjYtMjAuMWwyNi45IDc3LjItNC43LTgxLjZjOC42LTEuMiAxNy40LTEuOCAyNi4zLTEuOHMxNy43IC42IDI2LjMgMS44bC00LjcgODIuMiAyNy03Ny44YzE3LjMgNC41IDMzLjYgMTEuNCA0OC42IDIwLjJsLTM1LjggNzQuMSA1NC43LTYxLjVjMTQuMSAxMC43IDI2LjYgMjMuMiAzNy4yIDM3LjJsLTYxLjQgNTQuOCA3NC4xLTM1LjljOC45IDE1LjIgMTUuNyAzMS42IDIwLjIgNDguNmwtNzcuOCAyNy4xIDgyLjItNC43YzEuMiA4LjcgMS44IDE3LjUgMS44IDI2LjUgMCA4LjktLjYgMTcuNi0xLjggMjYuMmwtODIuMS00LjcgNzcuNyAyNy4xeiJdfSxjQ3Q9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZnVsY3J1bSIsaWNvbjpbMjU2LDUxMixbXSwiZjUwYiIsIk02My44IDE2NC4xTDI4LjQgMjA3LjctNyAxNjQuMSAyOC40IDEyMC42IDYzLjggMTY0LjF6TTExMi4yIDBsLTIwLjUgMTk4LjItNTEgNTcuOCA1MSA1Ny44IDIwLjUgMTk4LjIgMC0yMTEuMS00MS4xLTQ0LjkgNDEuMS00NC45IDAtMjExLjF6bTc5LjcgMTY0LjFsMzUuNCA0My42IDM1LjQtNDMuNi0zNS40LTQzLjUtMzUuNCA0My41em0tNDguNSA0N2w0MS4xIDQ0LjktNDEuMSA0NC45IDAgMjExLjEgMjAuNi0xOTguMiA1MS01Ny44LTUxLTU3LjgtMjAuNi0xOTguMiAwIDIxMS4xeiJdfSxkQ3Q9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiYXJjaC1saW51eCIsaWNvbjpbNTc2LDUxMixbXSwiZTg2NyIsIk0yODguNy03LjhjLTI0LjEgNTktMzguNiA5Ny43LTY1LjQgMTU1IDE2LjQgMTcuNCAzNi42IDM3LjYgNjkuNCA2MC41LTM1LjItMTQuNS01OS4yLTI4LjktNzcuMi00NC0zNC4zIDcxLjYtODguMSAxNzMuNS0xOTcuMiAzNjkuNCA4NS43LTQ5LjUgMTUyLjItODAgMjE0LjEtOTEuNi0yLjctMTEuNC00LjEtMjMuOC00LTM2LjdsLjEtMi43YzEuNC01NC45IDI5LjktOTcuMiA2My44LTk0LjRzNjAuMiA0OS44IDU4LjggMTA0LjdjLS4zIDEwLjMtMS40IDIwLjItMy40IDI5LjQgNjEuMiAxMiAxMjcgNDIuNCAyMTEuNiA5MS4yLTE2LjctMzAuNy0zMS42LTU4LjMtNDUuOC04NC43LTIyLjQtMTcuNC00NS43LTM5LjktOTMuMy02NC40IDMyLjcgOC41IDU2LjMgMTguMyA3NC41IDI5LjMtMTQ0LjUtMjY5LjEtMTU2LjItMzA0LjgtMjA1LjgtNDIxLjF6Il19LHVDdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJmZWRpdmVyc2UiLGljb246WzU3Niw1MTIsW10sImU4NjUiLCJNMzk0LjggNTI2LjlhNTQgNTQgMCAxIDEgNS44LTEwNy44IDU0IDU0IDAgMSAxIC01LjggMTA3Ljh6bS01MC4xLTgwLjZjLTUuNSAxMC45LTcuNCAyMy4zLTUuNiAzNS40TDE2OC43IDQ1NC40YzUuNS0xMC45IDcuNS0yMy4zIDUuNy0zNS40bDE3MC4zIDI3LjN6TTExMi43IDQ4MS42YTU0IDU0IDAgMSAxIDUuOS0xMDcuOCA1NCA1NCAwIDEgMSAtNS45IDEwNy44em0yNTcuNy02MS40Yy0xMC45IDUuNi0xOS43IDE0LjQtMjUuNCAyNS4zbC03MC42LTcwLjkgMzMuNi0xNyA2Mi40IDYyLjd6TTQ4Ni4xIDI2MWM4LjcgOC42IDE5LjggMTQuMyAzMS45IDE2LjRMNDM5LjQgNDMwLjhjLTguNy04LjYtMTkuOC0xNC4zLTMxLjktMTYuNEw0ODYuMSAyNjF6TTM3Ni43IDIxOS4zbDMwLjUgMTk1LjFjLTEyLjEtMS45LTI0LjUtLjEtMzUuNCA1LjNsLTMyLjItMjA2LjMgMzcuMiA2ek0zNTAuNCAzMjguOUwxNzQuMiA0MTguMmMtMi0xMi4xLTcuNi0yMy4yLTE2LjItMzJsMTg2LjYtOTQuNiA1LjggMzcuMnptLTE1Mi43LTIybC00MC4zIDc4LjdjLTguNy04LjYtMTkuOC0xNC4zLTMxLjktMTYuM2w0NS42LTg5IDI2LjYgMjYuN3pNMTI0LjcgMzY5Yy0xMi4xLTEuOC0yNC40IC4yLTM1LjQgNS42TDYyLjcgMjA0LjNjMTIuMSAxLjggMjQuNS0uMSAzNS40LTUuNkwxMjQuNyAzNjl6bTE0Ny4xLTQ3LjhsLTMzLjYgMTctMTM5LjQtMTM5LjljMTAuOS01LjYgMTkuNy0xNC40IDI1LjQtMjUuM0wyNzEuOCAzMjEuMnptMTk3LjUtOTIuOGMyIDEyLjEgNy42IDIzLjIgMTYuMiAzMS45bC04OS4zIDQ1LjItNS44LTM3LjIgNzguOS00MHptNTUuNiA0NC4zYTU0IDU0IDAgMSAxIDUuOS0xMDcuOCA1NCA1NCAwIDEgMSAtNS45IDEwNy44ek0yODQuNiA1OC43YzguNyA4LjYgMTkuOCAxNC4zIDMxLjggMTYuM2wtOTUuMyAxODYuMS0yNi42LTI2LjcgOTAtMTc1Ljh6TTQ3NC45IDE5Mi4xYy01LjUgMTAuOS03LjUgMjMuMy01LjcgMzUuM2wtMjA2LjQtMzMuMSAxNy4yLTMzLjUgMTk1IDMxLjN6TTY4LjcgMTk5LjZBNTQgNTQgMCAxIDEgNzQuNiA5MS44IDU0IDU0IDAgMSAxIDY4LjcgMTk5LjZ6bTQzMi0zMy40Yy0xMC45IDUuNi0xOS43IDE0LjQtMjUuNCAyNS4zTDM1My41IDY5LjNjMTAuOS01LjYgMTkuNy0xNC40IDI1LjQtMjUuM0w1MDAuNiAxNjYuMnpNMjI5LjMgMTUyLjZsLTE3LjIgMzMuNS04Ny40LTE0YzUuNC0xMC45IDcuNC0yMy4zIDUuNS0zNS40bDk5IDE1Ljl6bTEzOS41IDE1LjlsLTM3LjItNi0xMy42LTg3LjJjMTIuMSAxLjcgMjQuNS0uMyAzNS4zLTUuOWwxNS41IDk5LjF6TTI2Ny44IDI2LjJjMiAxMi4xIDcuNiAyMy4yIDE2LjIgMzEuOWwtMTUzLjkgNzhjLTItMTIuMS03LjYtMjMuMi0xNi4yLTMxLjlsMTUzLjktNzh6bTU1LjYgNDQuM2E1NCA1NCAwIDEgMSA1LjgtMTA3LjggNTQgNTQgMCAxIDEgLTUuOCAxMDcuOHoiXX0scEN0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImJyYXZlLXJldmVyc2UiLGljb246WzQ0OCw1MTIsW10sImU2M2QiLCJNMjk4LjUgMGMzIDAgNS44IDEuMyA3LjggMy42bDM4LjEgNDRjLjUtLjEgMS0uMiAxLjUtLjMgOS4yLTEuNiAxOC42LTIuMiAyNy43LTEuMiAxMS42IDEuNCAyMS41IDUuNCAyOC45IDEyLjkgNy43IDcuOCAxNS40IDE1LjggMjIuNiAyMy42IDIuNSAyLjcgNC45IDUuMiA2LjkgNy40IC43IC44IDEuNCAxLjUgMS45IDIgMy40IDMuNyA0LjIgOC4xIDIuNyAxMS45bC05LjggMjQuNiAxMy4xIDM4LjFjLjcgMiAuOCA0LjEgLjIgNi4yLS4xIC40LS4xIC40LS41IDIuMWwtMS41IDUuOGMtMS42IDYuMy0zLjUgMTMuMy01LjQgMjAuOS01LjYgMjEuNi0xMS4yIDQzLjItMTYuNCA2My40LTEyLjkgNDkuOS0yMS40IDgyLjctMjMuNCA5MC45LTExLjEgNDQuNS0xOS45IDYwLTQ4LjMgODAuMy0yNC45IDE3LjgtNzYuOCA1My42LTg2LjggNjAtMSAuNi0yIDEuMy0zLjQgMi4zLS41IC40LTMuMiAyLjItMy45IDIuNy00LjkgMy4zLTguMyA1LjUtMTIuMSA3LjMtNC43IDIuMi05LjMgMy41LTEzLjkgMy41cy05LjEtMS4yLTEzLjktMy41Yy0zLjctMS44LTcuMi0zLjktMTIuMS03LjMtLjgtLjUtMy40LTIuNC0zLjktMi43LTEuNC0xLTIuNS0xLjctMy40LTIuMy0xMC02LjQtNjEuOS00Mi4xLTg2LjgtNjAtMjguNC0yMC40LTM3LjItMzUuOC00OC4zLTgwLjMtMi04LjItMTAuNS00MS0yMy4zLTkwLjUtNS4zLTIwLjYtMTAuOS00Mi4yLTE2LjUtNjMuOC0yLTcuNi0zLjgtMTQuNi01LjQtMjAuOWwtMS41LTUuOC0uNS0yLjFjLS41LTItLjQtNC4yIC4yLTYuMmwxMy4xLTM4LjEtOS45LTI0LjVjLTEuNS0zLjgtLjctOC4yIDItMTEuMiAxLjItMS4zIDEuOC0yIDIuNi0yLjggMi0yLjIgNC40LTQuNyA2LjktNy40IDcuMy03LjcgMTUtMTUuNyAyMi43LTIzLjUgNy40LTcuNSAxNy4zLTExLjYgMjguOS0xMi45IDkuMS0xLjEgMTguNS0uNSAyNy43IDEuMiAuNSAuMSAxIC4yIDEuNSAuM2wzOC4xLTQ0YzItMi40IDQuOC0zLjcgNy44LTMuN2wxNDggMHptLTQuNyAyMS4xbC0xMzguNiAwLTM5LjEgNDUuMWMtMi42IDMtNi43IDQuMy0xMC42IDMuMi0uMi0uMS0uNy0uMi0xLjUtLjQtMS4zLS4zLTIuOS0uNi00LjUtLjktNy40LTEuMy0xNC45LTEuOC0yMS43LTEtNy4zIC45LTEzIDMuMi0xNi42IDYuOS03LjYgNy43LTE1LjIgMTUuNi0yMi4zIDIzLjMtMS43IDEuOC0zLjMgMy41LTQuOCA1LjFsOC44IDIyYzEgMi40IDEgNSAuMiA3LjVMMjkuNyAxNzAuNmMuNCAxLjQgLjUgMS45IDEuMiA0LjggMS42IDYuMyAzLjUgMTMuMyA1LjQgMjAuOSA1LjYgMjEuNiAxMS4yIDQzLjIgMTYuNCA2My40IDEyLjkgNTAgMjEuNCA4Mi44IDIzLjQgOTEgMTAuMSA0MC4xIDE2LjQgNTEuMyA0MC4yIDY4LjMgMjQuNiAxNy42IDc2LjMgNTMuMiA4NS45IDU5LjMgMS4yIC44IDIuNSAxLjYgNCAyLjcgLjYgLjQgMy4yIDIuMiAzLjkgMi43IDQgMi44IDYuNyA0LjQgOS4yIDUuNiAyLjIgMSAzLjkgMS41IDUuMSAxLjVzMi45LS41IDUuMS0xLjVjMi41LTEuMiA1LjItMi44IDkuMi01LjYgLjctLjUgMy4zLTIuMyAzLjktMi43IDEuNi0xLjEgMi44LTEuOSA0LTIuNyA5LjYtNi4xIDYxLjMtNDEuNyA4NS45LTU5LjMgMjMuOC0xNy4xIDMwLjItMjguMiA0MC4xLTY4LjMgMi4xLTguMyAxMC41LTQxLjEgMjMuMy05MC43IDUuMy0yMC42IDEwLjktNDIuMiAxNi41LTYzLjggMi03LjYgMy44LTE0LjYgNS40LTIwLjkgLjctMi45IC45LTMuNCAxLjItNC44bC0xMy4zLTM4LjhjLS44LTIuNC0uOC01LjEgLjItNy41bDguOC0yMmMtMS41LTEuNi0zLjEtMy4zLTQuOC01LjEtNy4yLTcuNi0xNC43LTE1LjUtMjIuMy0yMy4zLTMuNy0zLjctOS4zLTYtMTYuNi02LjktNi44LS44LTE0LjQtLjMtMjEuNyAxLTEuNyAuMy0zLjIgLjYtNC41IC45LS44IC4yLTEuMyAuMy0xLjUgLjQtMy44IDEuMS03LjktLjItMTAuNi0zLjJMMjkzLjggMjEuMXpNMjI0LjUgMzE2YzIuOCAwIDIwLjkgNi41IDM1LjQgMTQuMXMyNSAxMyAyOC4zIDE1LjIgMS4zIDYuMi0xLjcgOC40LTQ0LjEgMzQuNi00OC4xIDM4LjItOS44IDkuNS0xMy44IDkuNS05LjgtNS45LTEzLjgtOS41LTQ1LjEtMzYtNDguMS0zOC4yLTUuMS02LjItMS43LTguNCAxMy45LTcuNSAyOC4zLTE1LjIgMzIuNS0xNC4xIDM1LjQtMTQuMWwtLjIgMHptLjEtMjMwLjdjLjcgMCA4LjggLjIgMjAuNSA0LjIgMTIuMyA0LjIgMjUuNyA5LjQgMzEuOSA5LjRzNTEuOS04LjkgNTEuOS04LjkgNTQuMiA2Ni43IDU0LjIgODEtNi44IDE4LTEzLjcgMjUuNC0zNi44IDM5LjgtNDAuNyA0My45LTExLjkgMTAuNS03LjEgMjEuOCAxMS43IDI1LjggMy45IDQwLjQtMjEgMjQuNC0yOS40IDIyLjgtMjguNC0xMi4yLTM1LjctMTcuMS0zMC41LTI0LjMtMzAuNS0zMS44IDI0LTIwLjggMjguNC0yMy45IDI0LjctMTQuOCAyNS4xLTE5LjQgLjMtNi01LjctMTcuNC0xNi43LTI2LjctMTQuOS0zNi44IDE5LjEtMTUuNCAzMS41LTIwLjIgMzYuMi0xMy43IDM5LjItMTUuMSAyLjItMi43LTYuOC0zLjYtMzQuNi00LjMtNDYuMS0xLjEtMzEuMiA4LjItMzIuOCAxMC45LTMgMi43LTEuNCAxMS44IDEwLjEgNTIuOCAxMC45IDYwLjYgMi40IDEyLjktNS44IDE0LjgtMjIuMSA1LjItMjYuOCA1LjItMTguNi0zLjMtMjYuOC01LjItNi42LTctNS44LTE0LjggOS4zLTUxLjUgMTAuOS02MC42IC4yLTkuMi0xLjQtMTEuOC0yMS4zLTcuNi0zMi44LTEwLjktMzcuMSAuMi00Ni4xIDEuMS05LjggMi4yLTYuOCAzLjYgMjYuOCAxMC40IDM5LjIgMTUuMSAyOS43IDEwIDMxLjUgMjAuMi05IDI1LjQtMTQuOSAzNi44LTYuMSAxMi44LTUuNyAxNy40IDIwLjYgMTYuNCAyNS4xIDE5LjQgMjguNCAxNi40IDI4LjQgMjMuOS0yMy4yIDI3LTMwLjUgMzEuOC0yNy4yIDE1LjQtMzUuNyAxNy4xLTIxLjctOC4yLTI5LjQtMjIuOC0uOC0yOS4xIDMuOS00MC40LTMuMy0xNy43LTcuMS0yMS44LTMzLjgtMzYuNS00MC43LTQzLjktMTMuNy0xMS4yLTEzLjctMjUuNCA1NC4yLTgxIDU0LjItODEgNDUuOCA4LjkgNTEuOSA4LjkgMTkuNS01LjIgMzEuOS05LjQgMjAuNi00LjIgMjAuNi00LjJsLS4zIDB6Il19LGhDdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJhdmlhbmV4IixpY29uOls1MTIsNTEyLFtdLCJmMzc0IiwiTTQ1My4yIDMybC0zMTIgMEMxMDIuMyAzMiA2NSA2My4yIDU3LjkgMTAxLjdMMS4zIDQxMC4zQy01LjggNDQ4LjggMjAgNDgwIDU5IDQ4MGwzMTIgMGMzOC45IDAgNzYuMi0zMS4yIDgzLjMtNjkuN0w1MTEgMTAxLjhDNTE4IDYzLjIgNDkyLjIgMzIgNDUzLjIgMzJ6TTM5NSAzNzkuM2wtMzIgMTMuNS0xMTUuNC0xMTBjLTE0LjcgMTAtMjkuMiAxOS41LTQxLjcgMjcuMWwyMi4xIDY0LjItMTcuOSAxMi43LTQwLjYtNjEtNTIuNC00OC4xIDE1LjctMTUuNCA1OCAzMS4xYzkuMy0xMC41IDIwLjgtMjIuNiAzMi44LTM0LjlsLTIwLjUtMjkuNi02OC44LTk5LjggMTguOC0yOC45IDguOS00LjggMTAzLjEgMTEyLjQgNC45IDQuNWMxOS40LTE4LjggMzMuOC0zMi40IDMzLjgtMzIuNCA3LjctNi41IDIxLjUtMi45IDMwLjcgNy45IDkgMTAuNSAxMC42IDI0LjcgMi43IDMxLjMtMS44IDEuMy0xNS41IDExLjQtMzUuMyAyNS42bDQuNSA3LjMgOTQuOSAxMTkuNC02LjMgNy45eiJdfSxmQ3Q9e3ByZWZpeDoiZmFiIixpY29uTmFtZToibnM4IixpY29uOls2NDAsNTEyLFtdLCJmM2Q1IiwiTTEwNC4zIDI2OS4ybDI2LjEgMCAwLTI2LjItMjYuMSAwIDAgMjYuMnpNMTU2LjggMjQzbC0uMS0yNi4yIDAtLjljLS4yLTEwLjQtNC40LTIwLjMtMTEuOS0yNy42cy0xNy41LTExLjMtMjcuOS0xMS4xLTIwLjMgNC40LTI3LjYgMTEuOC0xMS4zIDE3LjUtMTEuMiAyNy45bDAgLjIgMjYuNCAwIDAtLjJjLjEtMy40IDEuNS02LjYgMy45LTlzNS43LTMuNyA5LjEtMy43IDYuNyAxLjMgOS4xIDMuNyAzLjggNS42IDMuOSA5bDAgMjYuMiAyNi4zIDB6bTUyLjQgMjUuOGMwIDEyLTIuNCAyMy44LTYuOSAzNC45cy0xMS4zIDIxLjEtMTkuNyAyOS42LTE4LjUgMTUuMi0yOS42IDE5LjctMjIuOSA2LjktMzQuOSA2LjlsLS42IDBjLTI0LjIgMC00Ny4zLTkuNi02NC40LTI2LjdTMjYuMyAyOTMgMjYuMyAyNjguOGwtMjYuMyAwIDAgLjJjMCAxNS40IDMuMSAzMC43IDkgNDQuOXMxNC42IDI3LjIgMjUuNSAzOC4xIDIzLjkgMTkuNSAzOC4xIDI1LjQgMjkuNSA4LjkgNDQuOSA4LjlsLjggMGMxNS40IDAgMzAuNy0zIDQ0LjktOXMyNy4yLTE0LjYgMzguMS0yNS41IDE5LjUtMjMuOCAyNS40LTM4LjEgOC45LTI5LjUgOC45LTQ0LjlsMC0yNi0yNi4zIDAgMCAyNnptLTE1Ny4yIDBjLjEgMTcuMyA3IDMzLjkgMTkuMiA0Ni4xczI4LjggMTkuMSA0Ni4xIDE5LjEgMzMuOS02LjkgNDYuMS0xOS4xIDE5LjItMjguOCAxOS4yLTQ2LjFsLTI2LjMgMGMtLjIgMTAuMi00LjQgMjAtMTEuNyAyNy4ycy0xNy4xIDExLjItMjcuNCAxMS4yLTIwLjEtNC0yNy40LTExLjItMTEuNS0xNi45LTExLjctMjcuMmwwLTI2LTI2LjMgMCAwLTI2LjZjLjMtMTcuMyA3LjQtMzMuOCAxOS43LTQ1LjhzMjktMTguOCA0Ni4zLTE4LjYgMzMuOCA3LjIgNDUuOSAxOS41IDE4LjkgMjguOSAxOC45IDQ2LjJsMCAyNS4zIDI2LjMgMCAwLTI1LjNjMC0yNC4zLTkuNy00Ny43LTI2LjktNjQuOXMtNDAuNS0yNi45LTY0LjktMjYuOS00Ny43IDkuNy02NC45IDI2LjktMjYuOSA0MC41LTI2LjkgNjQuOWwwIDI1LjQgMjYuMyAwIDAgMjZ6bTQxOC40LTcxLjJjMTMuNyAwIDI0LjYgNi42IDMwLjEgMTguM2wuNyAxLjUgMjMuMi0xMS41LS42LTEuNGMtOC0xOS4zLTI4LjUtMzEuMy01My40LTMxLjMtMjMuMSAwLTQzLjYgMTEuNC01MSAyOC40LS4xIDI2LjktLjIgMjMuOSAwIDI0LjggNC43IDExIDE0LjYgMTkuNCAyOC43IDI0LjIgNi41IDIgMTMuMSAzLjMgMTkuOCA0IDUuNSAuNyAxMC42IDEuNCAxNS44IDMuMSA2LjQgMi4xIDEwLjUgNS4zIDEyLjggOS44bDAgOS45Yy0zLjcgNy41LTEzLjggMTIuMy0yNS44IDEyLjMtMTQuMyAwLTI2LTYuOS0zMS45LTE5bC0uNy0xLjUtMjMgMTEuNSAuNiAxLjRjNy45IDE5LjQgMjkuNiAzMiA1NS4zIDMyIDIzLjYgMCA0NC42LTExLjQgNTIuMy0yOC40bC4yLTI1LjktLjItLjdjLTQuOS0xMS0xNS4yLTE5LjYtMjguOS0yNC4yLTcuNy0yLjctMTQuMy0zLjYtMjAuNy00LjQtNS0uNS0xMC0xLjUtMTQuOC0yLjktNi4zLTEuOS0xMC40LTUuMS0xMi42LTkuNmwwLTguNGMzLjQtNy40IDEyLjktMTIuMSAyNC4yLTEyLjFsMCAwek0yODcuNiAzMTEuM2wyNi4xIDAgMC02OC40LTI2LjEgMCAwIDY4LjR6TTYzOS44IDI1OGMtMi45LTYuMy04LjMtMTItMTUuNC0xNi43IDUuNi0zLjggMTAuMS05LjEgMTMtMTUuM2wuMi0yNS4zLS4yLS43Yy03LjQtMTYtMjYuNy0yNi43LTQ4LjItMjYuN1M1NDguNSAxODQgNTQxLjEgMjAwbC0uMiAyNS4zIC4yIC43YzIuOSA2LjEgNy40IDExLjQgMTMgMTUuMy03LjIgNC43LTEyLjUgMTAuNS0xNS40IDE2LjdsLS4yIDI4LjkgLjIgLjdjNy42IDE2IDI3LjkgMjYuNyA1MC42IDI2LjdzNDMuMS0xMC43IDUwLjYtMjYuN2wuMi0yOC45LS4yLS43em0tNzMuMi01MC44YzMuNi02LjMgMTIuNi0xMC41IDIyLjYtMTAuNXMxOSA0LjIgMjIuNiAxMC41bDAgMTMuN2MtMy41IDYuMi0xMi42IDEwLjMtMjIuNiAxMC4zcy0xOS4xLTQuMi0yMi42LTEwLjNsMC0xMy43em00Ny4zIDcyLjJjLTMuOCA2LjYtMTMuMyAxMC45LTI0LjcgMTAuOS0xMS4xIDAtMjEtNC40LTI0LjctMTAuOWwwLTE2LjJjMy43LTYuMyAxMy41LTEwLjUgMjQuNy0xMC41IDExLjMgMCAyMC45IDQuMSAyNC43IDEwLjVsMCAxNi4yek0zNzYuNCAyNjZsLTU5LjgtODkuNy0yOSAwIDAgNDAuNiAyNi41IDAgMCAuNCA2Mi41IDk0LjEgMjUuNyAwIDAtMTM1LjEtMjUuOSAwIDAgODkuN3oiXX0sSThlPXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNxdWFyZS1waW50ZXJlc3QiLGljb246WzQ0OCw1MTIsWyJwaW50ZXJlc3Qtc3F1YXJlIl0sImYwZDMiLCJNMzg0IDMyTDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsNzIuNiAwLTIuMi0uOGMtNS40LTQ4LjEtMy4xLTU3LjUgMTUuNy0xMzQuNyAzLjktMTYgOC41LTM1IDEzLjktNTcuOSAwIDAtNy4zLTE0LjgtNy4zLTM2LjUgMC03MC43IDc1LjUtNzggNzUuNS0yNSAwIDEzLjUtNS40IDMxLjEtMTEuMiA0OS44LTMuMyAxMC42LTYuNiAyMS41LTkuMSAzMi01LjcgMjQuNSAxMi4zIDQ0LjQgMzYuNCA0NC40IDQzLjcgMCA3Ny4yLTQ2IDc3LjItMTEyLjQgMC01OC44LTQyLjMtOTkuOS0xMDIuNi05OS45LTY5LjkgMC0xMTAuOSA1Mi40LTExMC45IDEwNi42IDAgMjEuMSA4LjIgNDMuNyAxOC4zIDU2IDIgMi40IDIuMyA0LjUgMS43IDctMS4xIDQuNy0zLjEgMTIuOS00LjcgMTkuMi0xIDQtMS44IDcuMy0yLjEgOC42LTEuMSA0LjUtMy41IDUuNS04LjIgMy4zLTMwLjYtMTQuMy00OS44LTU5LjEtNDkuOC05NS4xIDAtNzcuNSA1Ni4yLTE0OC42IDE2Mi4yLTE0OC42IDg1LjIgMCAxNTEuNCA2MC43IDE1MS40IDE0MS44IDAgODQuNi01My4zIDE1Mi43LTEyNy40IDE1Mi43LTI0LjkgMC00OC4zLTEyLjktNTYuMy0yOC4yIDAgMC0xMi4zIDQ2LjktMTUuMyA1OC40LTUgMTkuMy0xNy42IDQyLjktMjcuNCA1OS4zTDM4NCA0ODBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjR6Il19LG1DdD1JOGUsZ0N0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImJsdWV0b290aC1iIixpY29uOlsyNTYsNTEyLFtdLCJmMjk0IiwiTTE2NC45IDI2MEwyNTcuNSAxNTYuNyAxMTEuNiAwIDExMS42IDIwNi4zIDI1LjQgMTIwLjItNiAxNTEuNiAxMDIuMSAyNjAtNiAzNjguNCAyNS40IDM5OS44IDExMS42IDMxMy43IDExNC4zIDUxMiAyNjIuOCAzNjMuNCAxNjQuOSAyNjB6bTQwLjktMTAzbC01MCA1MC0uMy0xMDAuMyA1MC4zIDUwLjN6bS01MCAxNTZsNTAgNTAtNTAuMyA1MC4zIC4zLTEwMC4zeiJdfSxiQ3Q9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZ3JpcGZpcmUiLGljb246WzMyMCw1MTIsW10sImYzYWMiLCJNODAuNSAzMDEuNGMwLTczLjggMTA1LjEtMTIyLjUgMTA1LjEtMjAzIDAtNDcuMS0zNC04OC0zOS4xLTkwLjQgLjQgMy4zIC42IDYuNyAuNiAxMCAwIDkyLjEtMTQ3LjEgMTUzLjktMTQ3LjEgMjY4LjYgMCA0OS44IDMyLjIgNzkuMiA2Ni41IDEwOC4zIDY1LjEgNDYuNyA3OC4xIDcxLjQgNzguMSA4Ni42IDAgMTAuMS00LjggMTctNC44IDIyLjMgMTMuMS0xNi43IDE3LjQtMzEuOSAxNy41LTQ2LjQgMC0yOS42LTIxLjctNTYuMy00NC4yLTg2LjUtMTYtMjIuMy0zMi42LTQyLjYtMzIuNi02OS41em0yMDUuMy0zOWMtMTIuMS02Ni44LTc4LTEyNC40LTk0LjctMTMwLjlsNCA3LjJjMi40IDUuMSAzLjQgMTAuOSAzLjQgMTcuMSAwIDQ0LjctNTQuMiAxMTEuMi01Ni42IDExNi43LTIuMiA1LjEtMy4yIDEwLjUtMy4yIDE1LjggMCAyMC4xIDE1LjIgNDIuMSAxNy45IDQyLjEgMi40IDAgNTYuNi01NS40IDU4LjEtODcuNyA2LjQgMTEuNyA5LjEgMjIuNiA5LjEgMzMuNCAwIDQxLjItNDEuOCA5Ni45LTQxLjggOTYuOSAwIDExLjYgMzEuOSA1My4yIDM1LjUgNTMuMiAxIDAgMi4yLTEuNCAzLjItMi40IDM3LjktMzkuMyA2Ny4zLTg1IDY3LjMtMTM2LjggMC04LS43LTE2LjItMi4yLTI0LjZ6Il19LEE4ZT17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzcXVhcmUtZ29vZ2xlLXBsdXMiLGljb246WzQ0OCw1MTIsWyJnb29nbGUtcGx1cy1zcXVhcmUiXSwiZjBkNCIsIk00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMHpNNjQgMjU2YzAtNTUuMyA0NC43LTEwMCAxMDAtMTAwIDI3IDAgNDkuNSA5LjggNjcgMjYuMmwtMjcuMSAyNi4xYy03LjQtNy4xLTIwLjMtMTUuNC0zOS44LTE1LjQtMzQuMSAwLTYxLjkgMjguMi02MS45IDYzLjIgMCAzNC45IDI3LjggNjMuMiA2MS45IDYzLjIgMzkuNiAwIDU0LjQtMjguNSA1Ni44LTQzLjFsLTU2LjkgMCAwLTM0LjQgOTQuNCAwYzEgNSAxLjYgMTAuMSAxLjYgMTYuNiAwIDU3LjEtMzguMyA5Ny42LTk2IDk3LjYtNTUuMyAwLTEwMC00NC43LTEwMC0xMDB6bTI5MSAxOC4ybDAgMjktMjkuMiAwIDAtMjktMjkgMCAwLTI5LjIgMjkgMCAwLTI5IDI5LjIgMCAwIDI5IDI5IDAgMCAyOS4yLTI5IDB6Il19LHZDdD1BOGUseEN0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImdpdGVlIixpY29uOls1MTIsNTEyLFtdLCJlODYzIiwiTTI1NiA1MTJhMjU2IDI1NiAwIDEgMSAwLTUxMiAyNTYgMjU2IDAgMSAxIDAgNTEyek0zODUuNiAxMTMuOGwwIDAtMTc3IDBjLTUyLjQgMC05NC44IDQyLjQtOTQuOCA5NC44bDAgMTc3YzAgNyA1LjcgMTIuNiAxMi42IDEyLjZsMTg2LjUgMGM0Ny4xIDAgODUuMy0zOC4yIDg1LjMtODUuM2wwLTcyLjdjMC03LTUuNy0xMi42LTEyLjYtMTIuNmwtMTQ1LjQgMGMtNyAwLTEyLjYgNS43LTEyLjYgMTIuNmwwIDMxLjZjMCA2LjYgNS4xIDEyLjEgMTEuNiAxMi42bDEgMCA4OC41IDBjNi42IDAgMTIuMSA1LjEgMTIuNiAxMS42bDAgMSAwIDYuM2MwIDIwLjktMTcgMzcuOS0zNy45IDM3LjlsLTEyMC4xIDBjLTcgMC0xMi42LTUuNy0xMi42LTEyLjZsMC0xMjAuMWMwLTIwLjQgMTYuMS0zNy4xIDM2LjQtMzcuOWwxLjYgMCAxNzcgMGM3IDAgMTIuNi01LjcgMTIuNi0xMi42bDAtMzEuNmMwLTctNS42LTEyLjYtMTIuNi0xMi42eiJdfSx5Q3Q9e3ByZWZpeDoiZmFiIixpY29uTmFtZToieG1wcCIsaWNvbjpbNTc2LDUxMixbXSwiZTg2NCIsIk0wIDQ3LjJjMy41IDEzNy4xIDExNy4xIDI3OC42IDI1Mi45IDM1Ni43LTMxLjUgMjUtNjcuMiA0NC4xLTEwNi4yIDUzLjlsMCA1LjRjNTYuNC0yLjMgOTguMS0yMC4xIDE0MS4zLTQwLjcgNjUuNyAzNC42IDEyMi4yIDM5LjkgMTQxLjQgNDAuN2wwLTUuNGMtMzktOS44LTc0LjctMjguOC0xMDYuMi01My44IDEzNS43LTc4LjIgMjQ5LjMtMjE5LjggMjUyLjgtMzU2LjgtNTguNCAyNS43LTExOS4xIDQ0LjItMTgwLjEgNjIuM2wwIDBjMy40IDU5LTIwLjIgMTcwLjQtMTA3LjkgMjYyLjMtODguNC05Mi4zLTExMS4yLTIwNC4xLTEwNy44LTI2Mi4zbDAgMEMxMTcuNyA5Mi42IDU5LjMgNzAuMiAwIDQ3LjJ6TTkzLjkgOTdsNzMuNiAyMS44QzE2NS40IDIxNiAyMjYuOCAzNTggMzQxLjMgNDMyLjIgMTkwLjUgMzc2LjkgODkuOSAyMTUuNyA5My45IDk3em0zODguMyAwYzMuMyA5OS02NS42IDIyNC43LTE3MS43IDI5Ni40LTQuNy00LjEtOS4zLTguNC0xMy44LTEyLjcgNzctODAuMiAxMTMuMi0xODYuMyAxMTEuOS0yNjEuOUw0ODIuMSA5N3pNMjY0LjUgNDEwLjVjMyAxLjYgNS45IDMuMiA4LjkgNC43LTEyLjUgNi40LTI1LjQgMTIuMS0zOC42IDE3IDEwLjMtNi43IDIwLjItMTMuOSAyOS43LTIxLjd6Il19LHdDdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJhcHAtc3RvcmUiLGljb246WzUxMiw1MTIsW10sImYzNmYiLCJNMjU1LjkgMTIwLjlsOS4xLTE1LjdjNS42LTkuOCAxOC4xLTEzLjEgMjcuOS03LjVzMTMuMSAxOC4xIDcuNSAyNy45bC04Ny41IDE1MS41IDYzLjMgMGMyMC41IDAgMzIgMjQuMSAyMy4xIDQwLjhsLTE4NS41IDBjLTExLjMgMC0yMC40LTkuMS0yMC40LTIwLjRzOS4xLTIwLjQgMjAuNC0yMC40bDUyIDAgNjYuNi0xMTUuNC0yMC44LTM2LjFjLTUuNi05LjgtMi4zLTIyLjIgNy41LTI3LjkgOS44LTUuNiAyMi4yLTIuMyAyNy45IDcuNWw4LjkgMTUuN3ptLTc4LjcgMjE4bC0xOS42IDM0Yy01LjYgOS44LTE4LjEgMTMuMS0yNy45IDcuNXMtMTMuMS0xOC4xLTcuNS0yNy45bDE0LjYtMjUuMmMxNi40LTUuMSAyOS44LTEuMiA0MC40IDExLjZ6bTE2OC45LTYxLjdsNTMuMSAwYzExLjMgMCAyMC40IDkuMSAyMC40IDIwLjRTNDEwLjUgMzE4IDM5OS4yIDMxOGwtMjkuNSAwIDE5LjkgMzQuNWM1LjYgOS44IDIuMyAyMi4yLTcuNSAyNy45LTkuOCA1LjYtMjIuMiAyLjMtMjcuOS03LjUtMzMuNS01OC4xLTU4LjctMTAxLjYtNzUuNC0xMzAuNi0xNy4xLTI5LjUtNC45LTU5LjEgNy4yLTY5LjEgMTMuNCAyMyAzMy40IDU3LjcgNjAuMSAxMDR6TTI1NiA4YTI0OCAyNDggMCAxIDAgMCA0OTYgMjQ4IDI0OCAwIDEgMCAwLTQ5NnpNNDAgMjU2YTIxNiAyMTYgMCAxIDEgNDMyIDAgMjE2IDIxNiAwIDEgMSAtNDMyIDB6Il19LGtDdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ3aXgiLGljb246WzY0MCw1MTIsW10sImY1Y2YiLCJNMzkzLjQgMTMxLjdjMCAxMyAyLjEgMzIuNy0yOC43IDQzLjgtOS41IDMuNC0xNiA5LjctMTYgOS43IDAtMzEgNC43LTQyLjIgMTcuNC00OC45IDkuOC01LjEgMjcuMi00LjYgMjcuMi00LjZ6TTI3Ny42IDE2Ny4ybC0zNC4yIDEzMi43LTI4LjUtMTA4LjZjLTcuNy0zMi0yMC44LTQ4LjUtNDguNC00OC41LTI3LjQgMC00MC43IDE2LjItNDguNCA0OC41TDg5LjUgMjk5LjkgNTUuMyAxNjcuMkM0OS43IDE0MC41IDIzLjkgMTI5IDAgMTMyTDY1LjYgMzc5LjlzMjEuNiAxLjYgMzIuNS00YzE0LjItNy4yIDIxLTEyLjggMjkuNi00Ni42IDcuNy0zMC4xIDI5LjEtMTE4LjQgMzEuMS0xMjQuNyA0LjgtMTQuOSAxMS4xLTEzLjggMTUuNCAwIDIgNi4zIDIzLjUgOTQuNiAzMS4xIDEyNC43IDguNiAzMy43IDE1LjQgMzkuMyAyOS42IDQ2LjYgMTAuOCA1LjUgMzIuNSA0IDMyLjUgNEwzMzIuOSAxMzJjLTI0LjQtMy4xLTQ5LjggOC45LTU1LjMgMzUuM3ptMTE1LjggNS4ycy00LjEgNi4zLTEzLjUgMTEuNmMtNiAzLjQtMTEuOCA1LjYtMTggOC42LTE1LjEgNy4zLTEzLjIgMTMuOS0xMy4yIDM1LjJsMCAxNTIuMXMxNi42IDIuMSAyNy40LTMuNGMxMy45LTcuMSAxNy4xLTE0IDE3LjMtNDQuOGwwLTE1MC4zIDAgMCAwLTl6bTE2My40IDg0LjFMNjQwIDEzMi44cy0zNS4xLTYtNTIuNSA5LjhjLTEzLjMgMTIuMS0yNC40IDI5LjYtNTQuMiA3Mi41LS41IC43LTYuMyAxMC41LTEzLjEgMC0yOS4zLTQyLjItNDAuOC02MC4zLTU0LjItNzIuNS0xNy40LTE1LjgtNTIuNS05LjgtNTIuNS05LjhsODMuMiAxMjMuNy04MyAxMjMuNHMzNi42IDQuNiA1NC0xMS4yYzExLjUtMTAuNSAxNy42LTIwLjQgNTIuNS03MC43IDYuOC0xMC41IDEyLjYtLjggMTMuMSAwIDI5LjQgNDIuNCAzOS4yIDU4LjEgNTMuMSA3MC43IDE3LjQgMTUuOCA1My4zIDExLjIgNTMuMyAxMS4ybC04My0xMjMuNHoiXX0sU0N0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImludGVyY29tIixpY29uOls0NDgsNTEyLFtdLCJmN2FmIiwiTTM5MiAzMkw1NiAzMkMyNS4xIDMyIDAgNTcuMSAwIDg4TDAgNDI0YzAgMzAuOSAyNS4xIDU2IDU2IDU2bDMzNiAwYzMwLjkgMCA1Ni0yNS4xIDU2LTU2bDAtMzM2YzAtMzAuOS0yNS4xLTU2LTU2LTU2ek0yODMuNyAxMTQuMWMwLTE5LjggMjkuOS0xOS44IDI5LjkgMGwwIDE5OS41YzAgMTkuOC0yOS45IDE5LjgtMjkuOSAwbDAtMTk5LjV6bS03NC42LTcuNWMwLTE5LjggMjkuOS0xOS44IDI5LjkgMGwwIDIxNi41YzAgMTkuOC0yOS45IDE5LjgtMjkuOSAwbDAtMjE2LjV6bS03NC43IDcuNWMwLTE5LjggMjkuOS0xOS44IDI5LjkgMGwwIDE5OS41YzAgMTkuOC0yOS45IDE5LjgtMjkuOSAwbDAtMTk5LjV6TTU5LjcgMTQ0YzAtMTkuOCAyOS45LTE5LjggMjkuOSAwbDAgMTM0LjNjMCAxOS44LTI5LjkgMTkuOC0yOS45IDBsMC0xMzQuM3pNMzgzLjEgMzcxLjhjLTcyLjggNjMtMjQxLjcgNjUuNC0zMTguMSAwLTE1LTEyLjggNC40LTM1LjUgMTkuNC0yMi43IDY1LjkgNTUuMyAyMTYuMSA1My45IDI3OS4zIDAgMTQuOS0xMi45IDM0LjMgOS44IDE5LjQgMjIuN3ptNS4yLTkzLjVjMCAxOS44LTI5LjkgMTkuOC0yOS45IDBsMC0xMzQuM2MwLTE5LjggMjkuOS0xOS44IDI5LjkgMGwwIDEzNC4zeiJdfSxfQ3Q9e3ByZWZpeDoiZmFiIixpY29uTmFtZToicmVhY3RldXJvcGUiLGljb246WzU3Niw1MTIsW10sImY3NWQiLCJNMjUwLjcgMjExLjdsNS44LTQuMSA1LjggNC4xLTIuMS02LjggNS43LTQuMy03LjEtLjEtMi4zLTYuOC0yLjMgNi44LTcuMiAuMSA1LjcgNC4zLTIgNi44em02My43IDBsNS44LTQuMSA1LjggNC4xLTIuMS02LjggNS43LTQuMy03LjItLjEtMi4zLTYuOC0yLjMgNi44LTcuMiAuMSA1LjcgNC4zLTEuOSA2Ljh6bS05MS4zIDUwLjVsLTMuNCAwYy00LjggMC0zLjggNC0zLjggMTIuMSAwIDQuNy0yLjMgNi4xLTUuOCA2LjFzLTUuOC0xLjQtNS44LTYuMWwwLTM2LjZjMC00LjcgMi4zLTYuMSA1LjgtNi4xczUuOCAxLjQgNS44IDYuMWMwIDcuMi0uNyAxMC41IDMuOCAxMC41bDMuNCAwYzQuNy0uMSAzLjgtMy45IDMuOC0xMi4zIDAtOS45LTYuNy0xNC4xLTE2LjgtMTQuMWwtLjIgMGMtMTAuMSAwLTE2LjggNC4yLTE2LjggMTQuMWwwIDQwLjFjMCAxMC40IDYuNyAxNC4xIDE2LjggMTQuMWwuMiAwYzEwLjEgMCAxNi44LTMuOCAxNi44LTE0LjEgMC05LjkgMS4xLTEzLjgtMy44LTEzLjh6bS04MC43IDE3LjRsLTE0LjcgMCAwLTE5LjMgMTEuNCAwYzIuNSAwIDMuOC0xLjMgMy44LTMuOGwwLTIuMWMwLTIuNS0xLjMtMy44LTMuOC0zLjhsLTExLjQgMCAwLTE4LjMgMTQuNCAwYzIuNSAwIDMuOC0xLjMgMy44LTMuOGwwLTIuMWMwLTIuNS0xLjMtMy44LTMuOC0zLjhsLTIxLjcgMGMtMi40LS4xLTMuNyAxLjMtMy43IDMuOGwwIDU5LjFjMCAyLjUgMS4zIDMuOCAzLjggMy44bDIxLjkgMGMyLjUgMCAzLjgtMS4zIDMuOC0zLjhsMC0yLjFjMC0yLjUtMS4zLTMuOC0zLjgtMy44em0tNDItMTguNWM0LjYtMiA3LjMtNiA3LjMtMTIuNGwwLTExLjljMC0xMC4xLTYuNy0xNC4xLTE2LjgtMTQuMWwtMTMuNCAwYy0yLjUgMC0zLjggMS4zLTMuOCAzLjhsMCA1OS4xYzAgMi41IDEuMyAzLjggMy44IDMuOGwzLjQgMGMyLjUgMCAzLjgtMS4zIDMuOC0zLjhsMC0yMi45IDUuNiAwIDcuNCAyMy41Yy4yIDEgLjggMS44IDEuNiAyLjRzMS44IC45IDIuNyAuOGwzLjMgMGMyLjggMCA0LTEuOCAzLjItNC40bC04LjEtMjMuOXptLTMuOC0xNGMwIDQuOC0yLjUgNi4xLTYuMSA2LjFsLTUuOCAwIDAtMjAuOSA1LjggMGMzLjYgMCA2LjEgMS4zIDYuMSA2LjFsMCA4Ljd6TTE3Ni4xIDIyNmMtLjEtLjUtLjItMS0uNC0xLjRzLS42LS44LTEtMS4xLS44LS42LTEuMy0uNy0xLS4yLTEuNS0uMWwtNi45IDBjLS41IDAtMSAwLTEuNCAuMnMtLjkgLjQtMS4zIC43LS43IC43LS45IDEuMS0uNCAuOS0uNCAxLjRsLTExIDU5LjJjLS41IDIuNyAuOSA0LjEgMy40IDQuMWwzIDBjLjUgLjEgMSAwIDEuNS0uMnMuOS0uNCAxLjMtLjcgLjctLjcgLjktMS4yIC40LS45IC40LTEuNGwxLjgtMTEuMyAxMi4yIDAgMS44IDExLjNjMCAuNSAuMiAxIC40IDEuNHMuNSAuOSAuOSAxLjIgLjggLjYgMS4zIC43IDEgLjIgMS41IC4ybDMuNSAwYzIuNiAwIDMuOS0xLjQgMy40LTQuMUwxNzYuMSAyMjZ6bS0xMi4zIDM5LjNsNC43LTI5LjcgNC43IDI5LjctOS40IDB6bTg5LjMgMjAuMmwwLTUzLjIgNy41IDBjMi41IDAgMy44LTEuMyAzLjgtMy44bDAtMi4xYzAtMi41LTEuMy0zLjgtMy44LTMuOGwtMjUuOCAwYy0yLjUgMC0zLjggMS4zLTMuOCAzLjhsMCAyLjFjMCAyLjUgMS4zIDMuOCAzLjggMy44bDcuMyAwIDAgNTMuMmMwIDIuNSAxLjMgMy44IDMuOCAzLjhsMy40IDBjMi41IDAgMy44LTEuMyAzLjgtMy44bDAgMHptMjQ4LS44bC0xOS40IDAgMC0yNi43IDE2LjEgMGMuMyAwIC41IDAgLjgtLjFzLjUtLjIgLjctLjQgLjMtLjQgLjQtLjcgLjEtLjUgLjEtLjhsMC0uOGMwLS4zIDAtLjUtLjEtLjhzLS4yLS41LS40LS43LS40LS4zLS43LS40LS41LS4xLS44LS4xbC0xNi4xIDAgMC0yNS44IDE5LjEgMGMuMyAwIC41IDAgLjgtLjFzLjUtLjIgLjctLjQgLjMtLjQgLjQtLjcgLjEtLjUgLjEtLjhsMC0uOGMwLS4zIDAtLjUtLjEtLjhzLS4yLS41LS40LS43LS40LS4zLS43LS40LS41LS4xLS44LS4xbC0yMi4yIDBjLS4zLS4xLS41LS4xLS44IDBzLS41IC4yLS43IC40LS4zIC40LS40IC43LS4xIC41LS4xIC44bDAgNjNjMCAuMyAwIC41IC4xIC44cy4yIC41IC40IC42IC40IC4zIC43IC40IC41IC4xIC44IC4xbDIyLjUgMGMuMyAwIC41IDAgLjgtLjFzLjUtLjIgLjctLjQgLjMtLjQgLjQtLjYgLjEtLjUgLjEtLjhsMC0uOGMwLS4zIDAtLjUtLjEtLjhzLS4yLS41LS40LS43LS40LS4zLS43LS40LS41LS4xLS44LS4xbDAgMHpNNDA4IDIyMS44bC0uOCAwYy0xMC4xIDAtMTUuMyA0LjctMTUuMyAxNC4xbDAgNDAuMWMwIDkuMyA1LjIgMTQuMSAxNS4zIDE0LjFsLjggMGMxMC4xIDAgMTUuMy00LjggMTUuMy0xNC4xbDAtNDAuMWMwLTkuNC01LjItMTQuMS0xNS4zLTE0LjFsMCAwem0xMC4yIDUyLjRjLS4xIDgtMyAxMS4xLTEwLjUgMTEuMXMtMTAuNS0zLjEtMTAuNS0xMS4xbDAtMzYuNmMwLTcuOSAzLTExLjEgMTAuNS0xMS4xczEwLjUgMy4yIDEwLjUgMTEuMWwwIDM2LjZ6bS00Ni41LTE0LjVjNi4xLTEuNiA5LjItNi4xIDkuMi0xMy4zbDAtOS43YzAtOS40LTUuMi0xNC4xLTE1LjMtMTQuMWwtMTMuNyAwYy0uMyAwLS41IDAtLjggLjFzLS41IC4yLS43IC40LS4zIC40LS40IC42LS4xIC41LS4xIC44bDAgNjNjMCAuMyAwIC41IC4xIC44cy4yIC41IC40IC42IC40IC4zIC43IC40IC41IC4xIC44IC4xbDEuMiAwYy4zIDAgLjUgMCAuOC0uMXMuNS0uMiAuNi0uNCAuMy0uNCAuNC0uNiAuMS0uNSAuMS0uOGwwLTI2LjkgMTEuNiAwIDEwLjQgMjcuMmMuMiAuNSAuNSAuOSAuOSAxLjFzLjkgLjQgMS40IC40bDEuNSAwYzEuNCAwIDItMSAxLjUtMi4zbC0xMC42LTI3LjN6bS02LjQtMy45bC0xMC4yIDAgMC0yOC41IDEwLjIgMGM3LjUgMCAxMC41IDMuMSAxMC41IDExLjFsMCA2LjRjMCA3LjgtMyAxMS0xMC41IDExbDAgMHptODUuOS0zMy4xbC0xMy43IDBjLS4zLS4xLS41LS4xLS44IDBzLS41IC4yLS43IC40LS4zIC40LS40IC43LS4xIC41LS4xIC44bDAgNjNjMCAuMyAwIC41IC4xIC44cy4yIC41IC40IC42IC40IC4zIC43IC40IC41IC4xIC44IC4xbDEuMiAwYy4zIDAgLjUgMCAuOC0uMXMuNS0uMiAuNi0uNCAuMy0uNCAuNC0uNiAuMS0uNSAuMS0uOGwwLTI2LjEgMTAuNiAwYzEwLjEgMCAxNS4zLTQuOCAxNS4zLTE0LjFsMC0xMC41YzAtOS40LTUuMi0xNC4xLTE1LjMtMTQuMXptMTAuMiAyMi44YzAgNy45LTMgMTEuMS0xMC41IDExLjFsLTEwLjIgMCAwLTI5LjIgMTAuMiAwYzcuNS0uMSAxMC41IDMuMSAxMC41IDExbDAgNy4xek0yNTkuNiAzMDhsLTIuMy02LjgtMi4zIDYuOC03LjEgLjEgNS43IDQuMy0yLjEgNi44IDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjMtNy4xLS4xek00ODcuMiAxNzEuOWMtMTEuNy00LjQtMjMuNS04LjEtMzUuNi0xMS4zIDE5LjYtNzggMTEuNi0xMzQuNy0yMi4zLTE1My45LTM0LjUtMTkuNC04NS45IDQuMy0xMzguMiA1NS4yIDMuNCAzLjMgNi44IDYuNyAxMC4yIDEwLjIgODIuNS04MCAxMTkuNi01My41IDEyMC45LTUyLjggMjIuNCAxMi43IDM2IDU1LjggMTUuNSAxMzcuOC0yNy44LTYuNC01Ni4xLTEwLjctODQuNi0xMy03MS45LTEwMC41LTE0MC42LTE0Mi4xLTE4Mi4yLTE0Mi4xLTMwLjggMC00My44IDIxLTQ3LjYgMjcuNy0xOC4xIDMyLTEzLjMgODQuMiAuMSAxMzMuOC03MC41IDIwLjMtMTIwLjcgNTQuMS0xMjAuMyA5NSAuNSA1OS42IDEwMy4yIDg3LjggMTIyLjEgOTIuOC0yMC41IDgxLjktMTAuMSAxMzUuNiAyMi4zIDE1My45IDI4IDE1LjggNzUuMSA2IDEzOC4yLTU1LjItMy40LTMuMy02LjgtNi43LTEwLjItMTAuMi04Mi41IDgwLTExOS43IDUzLjUtMTIwLjkgNTIuOC0yMi4zLTEyLjYtMzYtNTUuNi0xNS41LTEzNy45IDEyLjQgMi45IDQxLjggOS41IDg0LjYgMTMgNzEuOSAxMDAuNCAxNDAuNiAxNDIgMTgyLjEgMTQyIDMwLjggMCA0My44LTIxIDQ3LjYtMjcuNyAxOC0zMS45IDEzLjMtODQuMS0uMS0xMzMuOCAxNTIuMy00My44IDE1Ni4yLTEzMC4yIDMzLjktMTc2LjNsMCAwek0xMzYgMzYuOGMyLjktNS4xIDExLjktMjAuMyAzNC45LTIwLjMgMzYuOCAwIDk4LjggMzkuNiAxNjMuMyAxMjYuMi0zMS4zLTEuOC02Mi43LTEuNS05My45IC45IDEzLTE4LjMgMjcuMS0zNS44IDQyLjItNTIuNC0zLjQtMy41LTYuOC02LjktMTAuMi0xMC4yLTE4LjMgMjAuMi0zNS4zIDQxLjctNTAuNyA2NC4yLTI4LjUgMi43LTU2LjcgNy42LTg0LjQgMTQuNi0uMi0xLjQtMjQuMy04Mi4yLTEuMi0xMjNsMCAwek00NDAuOCA0NzUuMWMtMi45IDUuMS0xMS44IDIwLjMtMzQuOSAyMC4zLTM2LjcgMC05OC43LTM5LjQtMTYzLjMtMTI2LjIgMzEuMyAxLjggNjIuNyAxLjUgOTMuOS0uOS0xMyAxOC4zLTI3LjEgMzUuOC00Mi4yIDUyLjQgMy40IDMuNSA2LjggNi45IDEwLjIgMTAuMiAxOC40LTIwLjIgMzUuMy00MS43IDUwLjctNjQuMiA0Ny4zLTQuNyA4MC4zLTEzLjUgODQuNC0xNC42IDIyLjcgODQuNCA0LjUgMTE3IDEuMiAxMjN6bTkuMS0xMzguNmMtMy42LTExLjktNy43LTI0LjEtMTIuNC0zNi40LTIuMSAwLTQuMi0uNS02LjEtMS41cy0zLjUtMi40LTQuNi00LjJsLS4xIC4xYy0xLjYgMS41LTMuNCAyLjctNS40IDMuNiA1LjcgMTQuMyAxMC42IDI4LjQgMTQuNyA0Mi4yLTIzLjcgNi00Ny43IDEwLjMtNzIgMTMgMy41LTUuMyAxNy4yLTI2LjIgMzIuMi01NC4yLTIuMS0uOC00LjItMS45LTYtMy4yLTEuMSAxLjItMy42IDQuMi0xMC45IDQuMi02LjIgMTEuMi0xNy40IDMwLjktMzMuOSA1NS4yLTM3LjQgMy4zLTc1IDMuNi0xMTIuNCAxLTcuOS0xMS4yLTIxLjUtMzEuMS0zNi44LTU3LjgtMS0uNC0yLS45LTMtMS41LTEuOSAxLjYtMy45IDMuMi0xMi42IDMuMiA2LjMgMTEuMiAxNy41IDMwLjcgMzMuOCA1NC42LTI0LjMtMi4zLTQ4LjQtNi4yLTcyLjItMTEuNyAzLjktMTQgOC42LTI4LjMgMTQuMS00Mi45LTMuMiAwLTUuNCAuMi04LjQtMS0yLjIgLjgtNC42IDEuMS02LjkgMS00LjkgMTMuNC05LjEgMjYuNS0xMi43IDM5LjQtMTU5LjktNDIuNi0xNDAuMy0xMjMuNi0xLjUtMTY0IDMuNiAxMS45IDcuNyAyNC4xIDEyLjQgMzYuNCAxMC40IDAgMTIuOSAzLjQgMTQuNCA1LjMgLjctLjggMS40LTEuNiAyLjMtMi4yLTUuOC0xNC43LTEwLjktMjkuMi0xNS4yLTQzLjMgNy0xLjggMzIuNC04LjQgNzItMTMtMTUuOSAyNC4zLTI2LjcgNDMuOS0zMi44IDU1LjMgMy4xIDEuOCA1LjMgNC42IDYuNCA4IDIuNS0zLjcgNi4xLTYuNiAxMC4yLTguNCA2LjUtMTEuNyAxNy45LTMxLjkgMzQuOC01Ni45IDM3LjQtMy4zIDc1LTMuNiAxMTIuNC0xIDMxLjUgNDQuNiAyOC45IDQ4LjEgNDIuNSA2NC41IDIuNi0zLjUgNi4zLTYgMTAuNC03LjQtNi40LTExLjQtMTcuNi0zMS0zNC4zLTU1LjUgNDAuNCA0LjEgNjUgMTAgNzIuMiAxMS43LTQgMTQuNC04LjkgMjkuMi0xNC42IDQ0LjIgMi41IDEgNC44IDIuNCA2LjggNC4zbC4xIC4xYzEtMS41IDIuMy0yLjggMy44LTMuOHMzLjMtMS42IDUuMS0xLjhjNC45LTEzLjQgOS4yLTI2LjYgMTIuOC0zOS41IDExLjcgMy4xIDIzLjIgNi44IDM0LjUgMTEgMTA2LjEgMzkuOSA3NCA4Ny45IDcyLjYgOTAuNC0xOS44IDM1LjEtODAuMSA1NS4yLTEwNS43IDYyLjV6bS0xMTQuNC0xMTRsLTEuMiAwYy0uMyAwLS41IDAtLjggLjFzLS41IC4yLS42IC40LS4zIC40LS40IC42LS4xIC41LS4xIC44bDAgNDkuOGMwIDcuOS0yLjYgMTEuMS0xMC4xIDExLjFzLTEwLjEtMy4xLTEwLjEtMTEuMWwwLTQ5LjhjMC0uMyAwLS41LS4xLS44cy0uMi0uNS0uNC0uNy0uNC0uMy0uNy0uNC0uNS0uMS0uOC0uMWwtMS4yIDBjLS4zIDAtLjUgMC0uOCAuMXMtLjUgLjItLjcgLjQtLjMgLjQtLjQgLjYtLjEgLjUtLjEgLjhsMCA1MS41YzAgOS42IDUgMTQuMSAxNS4xIDE0LjFsLjQgMGMxMC4xIDAgMTUuMS00LjYgMTUuMS0xNC4xbDAtNTEuNWMwLS4zLS4xLS41LS4yLS44cy0uMy0uNS0uNS0uNi0uNC0uMy0uNy0uNC0uNS0uMS0uOC0uMXpNMzIxLjggMzA4bC0yLjMtNi44LTIuMyA2LjgtNy4xIC4xIDUuNyA0LjMtMi4xIDYuOCA1LjgtNC4xIDUuOCA0LjEtMi4xLTYuOCA1LjctNC4zLTcuMS0uMXptLTMxLjEgNy40bC0yLjMtNi44LTIuMyA2LjgtNy4xIC4xIDUuNyA0LjMtMi4xIDYuOCA1LjgtNC4xIDUuOCA0LjEtMi4xLTYuOCA1LjctNC4zLTcuMS0uMXptNS4xLTMwLjhsLTE5LjQgMCAwLTI2LjcgMTYuMSAwYy4zIDAgLjUgMCAuOC0uMXMuNS0uMiAuNy0uNCAuMy0uNCAuNC0uNyAuMS0uNSAuMS0uOGwwLS44YzAtLjMgMC0uNS0uMS0uOHMtLjItLjUtLjQtLjctLjQtLjMtLjctLjQtLjUtLjEtLjgtLjFsLTE2LjEgMCAwLTI1LjggMTkuMSAwYy4zIDAgLjUgMCAuOC0uMXMuNS0uMiAuNy0uNCAuMy0uNCAuNC0uNyAuMS0uNSAuMS0uOGwwLS44YzAtLjMgMC0uNS0uMS0uOHMtLjItLjUtLjQtLjctLjQtLjMtLjctLjQtLjUtLjEtLjgtLjFsLTIyLjIgMGMtLjMgMC0uNSAwLS44IC4xcy0uNSAuMi0uNyAuNC0uMyAuNC0uNCAuNi0uMSAuNS0uMSAuOGwwIDYzYzAgLjMgMCAuNSAuMSAuOHMuMiAuNSAuNCAuNiAuNCAuMyAuNyAuNCAuNSAuMSAuOCAuMWwyMi41IDBjLjMgMCAuNSAwIC44LS4xcy41LS4yIC43LS40IC4zLS40IC40LS43IC4xLS41IC4xLS44bDAtLjhjMC0uMyAwLS42LS4xLS44cy0uMi0uNS0uNC0uNy0uNC0uNC0uNy0uNC0uNS0uMS0uOC0uMWwwIDB6bS03LjQtOTkuNGwtMi4zIDYuOC03LjEgLjEgNS43IDQuMy0yLjEgNi44IDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjMtNy4xLS4xLTIuMy02Ljh6Il19LE1DdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ3YXplIixpY29uOls1MTIsNTEyLFtdLCJmODNmIiwiTTUwMi42IDIwMS43YzE0LjUgODUuOS0zMC45IDE2Ny45LTExMy4yIDIwOC4xIDEzIDM0LjEtMTIuNCA3MC4yLTQ4LjMgNzAuMi0xMy4yIDAtMjYtNS4xLTM1LjYtMTQuMnMtMTUuMy0yMS42LTE2LTM0LjhjLTYuNCAuMi02NC4yIDAtNzYuMy0uNi0uMyA2LjgtMS45IDEzLjUtNC43IDE5LjZzLTYuOSAxMS43LTExLjkgMTYuMy0xMC44IDguMi0xNy4yIDEwLjUtMTMuMiAzLjQtMTkuOSAzLjFjLTMzLjktMS40LTU4LTM0LjgtNDctNjcuOS0zNy4yLTEzLjEtNzIuNS0zNC45LTk5LjYtNzAuOC0xMy0xNy4zLS41LTQxLjggMjAuOC00MS44IDQ2LjMgMCAzMi4yLTU0LjIgNDMuMi0xMTAuMyAxOC40LTkzLjkgMTE2LjgtMTU3LjEgMjExLjctMTU3LjEgMTAyLjUgMCAxOTcuMiA3MC43IDIxNC4xIDE2OS43ek0zNzMuOSAzODguM2M0Mi0xOS4yIDgxLjMtNTYuNyA5Ni4zLTEwMi4xIDQwLjUtMTIzLjEtNjQuMi0yMjgtMTgxLjctMjI4LTgzLjQgMC0xNzAuMyA1NS40LTE4Ni4xIDEzNi05LjUgNDguOSA1IDEzMS40LTY4LjcgMTMxLjQgMjQuOSAzMy4xIDU4LjMgNTIuNiA5My43IDY0IDI0LjctMjEuOCA2My45LTE1LjUgNzkuOCAxNC4zIDE0LjIgMSA3OS4yIDEuMiA4Ny45IC44IDMuNS02LjkgOC41LTEyLjkgMTQuNy0xNy41czEzLjItNy45IDIwLjgtOS41IDE1LjQtMS40IDIyLjkgLjQgMTQuNSA1LjMgMjAuNSAxMC4yek0yMDUuNSAxODcuMWMwLTM0LjcgNTAuOC0zNC43IDUwLjggMHMtNTAuOCAzNC43LTUwLjggMHptMTE2LjYgMGMwLTM0LjcgNTAuOS0zNC43IDUwLjkgMHMtNTAuOSAzNC44LTUwLjkgMHpNMTk5LjUgMjU3LjhjLTMuNC0xNi45IDIyLjItMjIuMiAyNS42LTUuMmwuMSAuM2M0LjEgMjEuNCAyOS44IDQ0IDY0LjEgNDMuMSAzNS43LS45IDU5LjMtMjIuMiA2NC4xLTQyLjggNC41LTE2LjEgMjguNi0xMC40IDI1LjUgNi01LjIgMjIuMi0zMS4yIDYyLTkxLjUgNjIuOS00Mi42IDAtODAuOS0yNy44LTg3LjktNjQuMmwwIDB6Il19LHpDdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJjcmVhdGl2ZS1jb21tb25zLXJlbWl4IixpY29uOls1MTIsNTEyLFtdLCJmNGVlIiwiTTI1NS42IDhDMzk3LjQgOCA1MDQgMTE4LjEgNTA0IDI1NiA1MDQgNDAzLjEgMzg1LjUgNTA0IDI1NS42IDUwNCAxMjEuNiA1MDQgOCAzOTQuNSA4IDI1NiA4IDEyMy4xIDExMi43IDggMjU1LjYgOHptLjggNDQuN2MtMTE4LjIgMC0yMDMuNyA5Ny45LTIwMy43IDIwMy4zIDAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjggLjEtMTEzLjgtOTAuMi0yMDMuMy0yMDIuOC0yMDMuM3pNNDE4LjEgMjYwLjRsNC45IDIuMiAwIDcwYy03LjIgMy42LTYzLjQgMjcuNS02Ny4zIDI4LjgtNi41LTEuOC0xMTMuNy00Ni44LTEzNy4zLTU2LjJsLTY0LjIgMjYuNi02My4zLTI3LjUgMC02My44IDU5LjMtMjQuOGMtLjctLjctLjQgNS0uNC03MC40bDY3LjMtMjkuNyAxNTEuOSA2Mi45IDAgNjEuNiA0OS4xIDIwLjN6bS03MC40IDgxLjVsMC00My44LS40IDAgMC0xLjgtMTEzLjgtNDYuNSAwIDQ1LjIgMTEzLjggNDYuOSAwLS40IC40IC40em03LjUtNTcuNmwzOS45LTE2LjQtMzYuOC0xNS41LTM5IDE2LjQgMzUuOSAxNS41em01Mi4zIDM4LjFsMC00My00NC4zIDE4LjYgMCA0My40IDQ0LjMtMTl6Il19LENDdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJiYW5kY2FtcCIsaWNvbjpbNTEyLDUxMixbXSwiZjJkNSIsIk0yNTYgOGEyNDggMjQ4IDAgMSAwIDAgNDk2IDI0OCAyNDggMCAxIDAgMC00OTZ6bTQ4LjIgMzI2LjFsLTE4MSAwIDg0LjctMTU2LjEgMTgxIDAtODQuNyAxNTYuMXoiXX0sVEN0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNxdWFyZS13ZWItYXdlc29tZS1zdHJva2UiLGljb246WzQ0OCw1MTIsW10sImU2ODQiLCJNNjQgNjRDNDYuMyA2NCAzMiA3OC4zIDMyIDk2bDAgMzIwYzAgMTcuNyAxNC4zIDMyIDMyIDMybDMyMCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMzIwYzAtMTcuNy0xNC4zLTMyLTMyLTMyTDY0IDY0ek0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDMyMCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NnptMjM1IDgxLjZsNTMgNDYuNCA1Mi4yLTEwLjRjLTIuNi0zLjktNC4yLTguNS00LjItMTMuNiAwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0YzAgMTMtMTAuMyAyMy42LTIzLjIgMjRMMzA0LjUgMzQ5LjFjLTUuMiAxMS41LTE2LjYgMTguOS0yOS4yIDE4LjlsLTEwMi42IDBjLTEyLjYgMC0yNC03LjQtMjkuMi0xOC45TDg3LjIgMjI0Yy0xMi45LS40LTIzLjItMTEtMjMuMi0yNCAwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0YzAgNS0xLjUgOS43LTQuMiAxMy42TDE2MCAyMjQgMjEzLjEgMTc3LjZjLTguOS00LjEtMTUtMTMuMS0xNS0yMy42IDAtMTQuNCAxMS42LTI2IDI2LTI2czI2IDExLjYgMjYgMjZjMCAxMC41LTYuMiAxOS41LTE1LjEgMjMuNnoiXX0sJEN0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InZpbWVvLXYiLGljb246WzQ0OCw1MTIsW10sImYyN2QiLCJNNDQ3LjggMTUzLjZjLTIgNDMuNi0zMi40IDEwMy4zLTkxLjQgMTc5LjEtNjAuOSA3OS4yLTExMi40IDExOC44LTE1NC42IDExOC44LTI2LjEgMC00OC4yLTI0LjEtNjYuMy03Mi4zLTM1LjItMTI5LjItNTAuMi0yMDQuOS03OS4zLTIwNC45LTMuNCAwLTE1LjEgNy4xLTM1LjIgMjEuMUwwIDE2OC4yYzUxLjYtNDUuMyAxMDAuOS05NS43IDEzMS44LTk4LjUgMzQuOS0zLjQgNTYuMyAyMC41IDY0LjQgNzEuNSAyOC43IDE4MS41IDQxLjQgMjA4LjkgOTMuNiAxMjYuNyAxOC43LTI5LjYgMjguOC01Mi4xIDMwLjItNjcuNiA0LjgtNDUuOS0zNS44LTQyLjgtNjMuMy0zMSAyMi03Mi4xIDY0LjEtMTA3LjEgMTI2LjItMTA1LjEgNDUuOCAxLjIgNjcuNSAzMS4xIDY0LjkgODkuNHoiXX0sREN0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InN0cmF2YSIsaWNvbjpbMzg0LDUxMixbXSwiZjQyOCIsIk0xNTguNCAwTDcgMjkyIDk2LjIgMjkyIDE1OC40IDE3NS45IDIyMC4xIDI5MiAzMDguNiAyOTIgMTU4LjQgMHpNMzA4LjYgMjkybC00My45IDg4LjItNDQuNi04OC4yLTY3LjYgMCAxMTIuMiAyMjAgMTExLjUtMjIwLTY3LjYgMHoiXX0sTEN0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InVuaXJlZ2lzdHJ5IixpY29uOlszODQsNTEyLFtdLCJmNDA0IiwiTTE5MiA0ODBjMzkuNSAwIDc2LjItMTEuOCAxMDYuOC0zMi4ybC0yMTMuNSAwQzExNS44IDQ2OC4yIDE1Mi41IDQ4MCAxOTIgNDgwek0xMDIuOSAyODYuOWwwLTEyLjQtMTAyLjkgMCAwIDEyLjRjMCAyLjUgMCA1IC4xIDcuNGwxMDMuMSAwYy0uMi0yLjQtLjMtNC45LS4zLTcuNHptMjAuNSA1N2wtMTE0LjkgMGMyLjYgOC41IDUuOCAxNi44IDkuNiAyNC44bDEzOC4zIDBjLTEyLjktNS43LTI0LjEtMTQuMi0zMy0yNC44em0tMTcuNy0zNC43bC0xMDQuNCAwYy45IDcuNiAyLjIgMTUgMy45IDIyLjNsMTA5LjcgMGMtNC02LjktNy4yLTE0LjQtOS4yLTIyLjN6bS0yLjgtNjkuM2wtMTAyLjkgMCAwIDE3LjMgMTAyLjkgMCAwLTE3LjN6bTAtMTczLjJsLTEwMi45IDAgMCA0LjkgMTAyLjkgMCAwLTQuOXptMC0zNC43bC0xMDIuOSAwIDAgMi41IDEwMi45IDAgMC0yLjV6bTAgNjkuM2wtMTAyLjkgMCAwIDcuNCAxMDIuOSAwIDAtNy40em0wIDEwNGwtMTAyLjkgMCAwIDE0LjggMTAyLjkgMCAwLTE0Ljh6bTAtNjkuM2wtMTAyLjkgMCAwIDkuOSAxMDIuOSAwIDAtOS45em0wIDM0LjZsLTEwMi45IDAgMCAxMi40IDEwMi45IDAgMC0xMi40ek0yNjkuMSAzMzEuNWwxMDkuNyAwYzEuOC03LjMgMy4xLTE0LjcgMy45LTIyLjNsLTEwNC40IDBjLTIuMSA3LjktNS4yIDE1LjQtOS4yIDIyLjN6bTEyLTE4NS43bDEwMi45IDAgMC05LjgtMTAyLjkgMCAwIDkuOHptMCAzNy4ybDEwMi45IDAgMC0xMi40LTEwMi45IDAgMCAxMi40em0wLTc0LjNsMTAyLjkgMCAwLTcuNC0xMDIuOSAwIDAgNy40em0wLTc2LjdsMCAyLjUgMTAyLjkgMCAwLTIuNS0xMDIuOSAwek03OC4xIDQ0Mi45bDIyNy43IDBjMTEuOC04LjcgMjIuNy0xOC42IDMyLjItMjkuN2wtMjkzLjEgMGM5LjYgMTEgMjEuNCAyMSAzMy4yIDI5Ljd6bTIwMy0zNzEuM2wxMDIuOSAwIDAtNC45LTEwMi45IDAgMCA0Ljl6bTAgMTQ4LjVsMTAyLjkgMCAwLTE0LjgtMTAyLjkgMCAwIDE0Ljh6TTM4LjggNDA1LjdsMzA1LjMgMGM2LjctOC41IDEyLjYtMTcuNiAxNy44LTI3LjJMMjMgMzc4LjVjNS4yIDkuNiA5LjIgMTguNyAxNS44IDI3LjJ6bTE4OC44LTM3LjFsMTM5LjQgMGMzLjctOCA1LjgtMTYuMiA4LjUtMjQuOGwtMTE1IDBjLTguOCAxMC43LTIwLjEgMTkuMi0zMi45IDI0Ljh6bTUzLjUtODEuN2MwIDIuNS0uMSA1LS40IDcuNGwxMDMuMSAwYy4xLTIuNSAuMi00LjkgLjItNy40bDAtMTIuNC0xMDIuOSAwIDAgMTIuNHptMC0yOS43bDEwMi45IDAgMC0xNy4zLTEwMi45IDAgMCAxNy4zeiJdfSxFQ3Q9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiY2MtZGluZXJzLWNsdWIiLGljb246WzU3Niw1MTIsW10sImYyNGMiLCJNMjM5LjcgNzkuOWExNzUuOCAxNzUuOCAwIDEgMCAwIDM1MS42IDE3NS44IDE3NS44IDAgMSAwIDAtMzUxLjZ6TTE5OS44IDM1OS41Yy00MS43LTE1LjktNzEuNC01Ni40LTcxLjQtMTAzLjhzMjkuNy04Ny45IDcxLjQtMTA0LjFsMCAyMDcuOXptNzkuOCAuM2wwLTIwOC4yYzQxLjcgMTYuMiA3MS40IDU2LjcgNzEuNCAxMDQuMXMtMjkuNyA4Ny45LTcxLjQgMTA0LjF6TTUyOCAzMkw0OCAzMkMyMS41IDMyIDAgNTMuNSAwIDgwTDAgNDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDQ4MCAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtMzUyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0zMjkuNyA0NDhsLTkwLjMgMEMxMzMuMiA0NDggNDUuNiAzNjIuNSA0NS42IDI1Ny44IDQ1LjYgMTQzLjIgMTMzLjIgNjQgMjM5LjQgNjRsOTAuMyAwYzEwNSAwIDIwMC43IDc5LjIgMjAwLjcgMTkzLjggMCAxMDQuNy05NS43IDE5MC4yLTIwMC43IDE5MC4yeiJdfSxQQ3Q9e3ByZWZpeDoiZmFiIixpY29uTmFtZToia3ViZXJuZXRlcyIsaWNvbjpbNTEyLDUxMixbXSwiZTg1NyIsIk0yNTYgMzE2LjFjMy41LS4xIDcuMiAyIDguOSA1LjFMMjkzIDM3MS43Yy0zLjYgMS4yLTcuMyAyLjMtMTEuMiAzLjEtMjEuNCA0LjktNDIuNyAzLjQtNjItMy4ybDI3LjktNTAuNGMxLjctMy4xIDQuOS01IDguMi01LjF6bTUwLjUtMjMuNGw1Ny4yIDkuN2MtOC40IDIzLjUtMjQuNCA0My45LTQ1LjggNTcuNWwtMjIuMi01My42Yy0yLTQuNyAuMS0xMC40IDQuOC0xMi42IDEuOS0uOSA0LjEtMS4zIDYtLjl6bS04OS4xIDcuN2MuNSAyLjEgLjMgNC4yLS41IDZsLTIxLjggNTMuM2MtMjAuNS0xMy4yLTM2LjktMzIuOS00NS43LTU3LjFsNTYuNy05LjZjNS4xLS45IDEwLjEgMi40IDExLjMgNy41em01OC44LTQxbC0zLjkgMTcuMS0xNS44IDcuNi0xNS45LTcuNy00LTE3LjEgMTEtMTMuNyAxNy43IDAgMTEgMTMuN3ptLTczLjctMTYuN2MzLjkgMy40IDQuNCA5LjUgMS4yIDEzLjYtMS4zIDEuNy0zLjEgMi44LTUgMy4zbC01NS4zIDE2LjJjLTIuOC0yNS43IDMuMy01MC43IDE2LjEtNzEuNmw0My4xIDM4LjZ6bTE1MC43LTM4LjVjNi40IDEwLjQgMTEuMiAyMiAxNC4xIDM0LjYgMi45IDEyLjQgMy42IDI0LjggMi40IDM2LjhsLTU1LjYtMTZjLTUtMS40LTguMS02LjctNi45LTExLjcgLjUtMi4xIDEuNi0zLjggMy4xLTUuMWw0Mi45LTM4LjV6bS0xMTMuOCA0LjRjLS4yIDUuMi00LjcgOS40LTkuOSA5LjQtMi4xIDAtNC4xLS43LTUuNy0xLjhsLTQ3LjMtMzMuNGMxNC41LTE0LjMgMzMuMS0yNC44IDU0LjUtMjkuNyAzLjktLjkgNy44LTEuNiAxMS43LTJsLTMuMyA1Ny42em0zMC44LTU3LjZjMjUgMy4xIDQ4LjEgMTQuNCA2NS44IDMxLjdsLTQ3LjEgMzMuMmMtNC4yIDMtMTAgMi4zLTEzLjMtMS44LTEuMy0xLjctMi0zLjYtMi4xLTUuNmwtMy4zLTU3LjV6TTI1NC41LTEuM2M1LjktLjMgMTEuNyAuOSAxNyAzLjRMNDU1IDg5LjdjNC43IDIuMyA4LjkgNS42IDEyLjIgOS43czUuNiA4LjggNi44IDEzLjlsNDUuMyAxOTYuOWMxLjIgNS4xIDEuMiAxMC40IDAgMTUuNXMtMy41IDkuOS02LjggMTMuOUwzODUuNiA0OTcuNmMtMy4zIDQuMS03LjUgNy40LTEyLjIgOS42cy0xMCAzLjQtMTUuMiAzLjRsLTIwMy42IDBjLTUuMyAwLTEwLjUtMS4yLTE1LjItMy40cy04LjktNS41LTEyLjItOS42TC4yIDMzOS43Yy0uNy0uOS0xLjQtMS44LTItMi44LTIuNi0zLjktNC4zLTguMy01LjEtMTIuOXMtLjctOS4zIC4zLTEzLjhMMzguNyAxMTMuNGMxLjItNS4xIDMuNS05LjkgNi44LTEzLjlzNy41LTcuNCAxMi4yLTkuN0wyNDEuMSAyLjFjNC4yLTIgOC44LTMuMiAxMy40LTMuNHptMS44IDY3Yy02LjEgMC0xMSA1LjUtMTEgMTIuMiAwIC4xIDAgLjIgMCAuMyAwIC45LS4xIDIgMCAyLjggLjEgMy45IDEgNi45IDEuNSAxMC40IC45IDcuNyAxLjcgMTQgMS4yIDE5LjktLjUgMi4yLTIuMSA0LjMtMy42IDUuN2wtLjIgNC42Yy02LjYgLjUtMTMuMiAxLjYtMTkuOCAzLjEtMjguNSA2LjUtNTMuMSAyMS4xLTcxLjggNDEtMS4yLS44LTMuMy0yLjMtNC0yLjgtMiAuMy00IC45LTYuNS0uNi00LjktMy4zLTkuNC03LjktMTQuOC0xMy40LTIuNS0yLjYtNC4zLTUuMS03LjItNy43LS43LS42LTEuNy0xLjQtMi40LTItMi4zLTEuOC01LTIuOC03LjctMi45LTMuNC0uMS02LjYgMS4yLTguOCAzLjktMy44IDQuNy0yLjUgMTIgMi43IDE2LjIgLjEgMCAuMSAuMSAuMiAuMSAuNyAuNiAxLjYgMS4zIDIuMyAxLjggMy4xIDIuMyA2IDMuNSA5LjEgNS4zIDYuNiA0LjEgMTIgNy40IDE2LjMgMTEuNSAxLjcgMS44IDIgNC45IDIuMiA2LjNsMy41IDMuMmMtMTguOCAyOC40LTI3LjYgNjMuNC0yMi40IDk5LjFsLTQuNiAxLjNjLTEuMiAxLjYtMi45IDQtNC43IDQuNy01LjYgMS44LTEyIDIuNC0xOS43IDMuMy0zLjYgLjMtNi43IC4xLTEwLjUgLjgtLjggLjItMiAuNC0yLjkgLjdsLS4xIDAtLjIgLjFjLTYuNSAxLjYtMTAuNyA3LjUtOS4zIDEzLjQgMS4zIDUuOSA3LjcgOS40IDE0LjIgOGwuMiAwYy4xIDAgLjEtLjEgLjItLjEgLjktLjIgMi4xLS40IDIuOC0uNiAzLjgtMSA2LjUtMi41IDkuOC0zLjggNy4zLTIuNiAxMy4zLTQuOCAxOS4yLTUuNiAyLjQtLjIgNSAxLjUgNi4zIDIuMmw0LjgtLjhjMTEgMzQuMSAzNC4xIDYxLjcgNjMuMyA3OS4xbC0yIDQuOGMuNyAxLjkgMS41IDQuNCAxIDYuMi0yLjEgNS41LTUuOCAxMS40LTkuOSAxNy45LTIgMy00LjEgNS4zLTUuOSA4LjgtLjQgLjgtMSAyLjEtMS40IDMtMi44IDYtLjggMTMgNC43IDE1LjYgNS41IDIuNiAxMi4yLS4xIDE1LjItNi4ybDAgMGMuNC0uOSAxLTIgMS40LTIuOCAxLjYtMy42IDIuMS02LjYgMy4yLTEwLjEgMi45LTcuMyA0LjUtMTQuOSA4LjUtMTkuNyAxLjEtMS4zIDIuOS0xLjggNC44LTIuM2wyLjUtNC41YzI1LjUgOS44IDU0IDEyLjQgODIuNSA1LjkgNi41LTEuNSAxMi44LTMuNCAxOC44LTUuNyAuNyAxLjIgMiAzLjYgMi4zIDQuMiAxLjkgLjYgMy45IC45IDUuNiAzLjQgMyA1LjEgNSAxMS4yIDcuNSAxOC41IDEuMSAzLjQgMS42IDYuNSAzLjIgMTAuMSAuNCAuOCAxIDIgMS40IDIuOCAyLjkgNi4xIDkuNyA4LjggMTUuMiA2LjIgNS40LTIuNiA3LjUtOS42IDQuNy0xNS42LS40LS45LTEtMi4xLTEuNC0zLTEuOC0zLjQtMy45LTUuNy01LjktOC43LTQuMi02LjUtNy42LTExLjktOS44LTE3LjQtLjktMi44IC4yLTQuNiAuOC02LjUtLjQtLjUtMS4zLTMuMi0xLjgtNC40IDMwLjQtMTcuOSA1Mi44LTQ2LjYgNjMuMy03OS42IDEuNCAuMiAzLjkgLjcgNC43IC44IDEuNy0xLjEgMy4yLTIuNSA2LjItMi4zIDUuOSAuOCAxMS45IDMgMTkuMiA1LjYgMy40IDEuMyA2LjEgMi44IDkuOCAzLjggLjggLjIgMS45IC40IDIuOCAuNiAuMSAwIC4xIDAgLjIgLjFsLjIgMGM2LjUgMS40IDEyLjgtMi4yIDE0LjItOHMtMi44LTExLjgtOS4zLTEzLjRjLS45LS4yLTIuMy0uNi0zLjItLjctMy44LS43LTYuOS0uNS0xMC41LS44LTcuNy0uOC0xNC0xLjQtMTkuNy0zLjItMi4zLS45LTQtMy43LTQuOC00LjhsLTQuNC0xLjNjMi4zLTE2LjYgMS43LTMzLjktMi4zLTUxLjMtNC0xNy41LTExLjEtMzMuNS0yMC42LTQ3LjYgMS4xLTEgMy4zLTIuOSAzLjktMy41IC4yLTIgMC00IDIuMS02LjIgNC4zLTQuMSA5LjgtNy40IDE2LjMtMTEuNSAzLjEtMS44IDYtMyA5LjEtNS4zIC43LS41IDEuNy0xLjMgMi40LTEuOSA1LjMtNC4yIDYuNS0xMS40IDIuNy0xNi4ycy0xMS4xLTUuMi0xNi40LTFjLS43IC42LTEuOCAxLjQtMi40IDItMi45IDIuNS00LjggNS03LjIgNy43LTUuNCA1LjUtOS45IDEwLjEtMTQuOCAxMy40LTIuMSAxLjItNS4zIC44LTYuNyAuN2wtNC4yIDNjLTIzLjgtMjUtNTYuMi00MS05MS4yLTQ0LjEtLjEtMS41LS4yLTQuMS0uMi00LjktMS40LTEuNC0zLjItMi41LTMuNi01LjUtLjUtNS45IC4zLTEyLjMgMS4zLTE5LjkgLjUtMy42IDEuNC02LjYgMS41LTEwLjQgMC0uOSAwLTIuMiAwLTMuMSAwLTYuNy00LjktMTIuMi0xMS0xMi4yeiJdfSxJQ3Q9e3ByZWZpeDoiZmFiIixpY29uTmFtZToicGludGVyZXN0IixpY29uOls1MTIsNTEyLFtdLCJmMGQyIiwiTTUwNCAyNTZjMCAxMzctMTExIDI0OC0yNDggMjQ4LTI1LjYgMC01MC4yLTMuOS03My40LTExLjEgMTAuMS0xNi41IDI1LjItNDMuNSAzMC44LTY1IDMtMTEuNiAxNS40LTU5IDE1LjQtNTkgOC4xIDE1LjQgMzEuNyAyOC41IDU2LjggMjguNSA3NC44IDAgMTI4LjctNjguOCAxMjguNy0xNTQuMyAwLTgxLjktNjYuOS0xNDMuMi0xNTIuOS0xNDMuMi0xMDcgMC0xNjMuOSA3MS44LTE2My45IDE1MC4xIDAgMzYuNCAxOS40IDgxLjcgNTAuMyA5Ni4xIDQuNyAyLjIgNy4yIDEuMiA4LjMtMy4zIC44LTMuNCA1LTIwLjMgNi45LTI4LjEgLjYtMi41IC4zLTQuNy0xLjctNy4xLTEwLjEtMTIuNS0xOC4zLTM1LjMtMTguMy01Ni42IDAtNTQuNyA0MS40LTEwNy42IDExMi0xMDcuNiA2MC45IDAgMTAzLjYgNDEuNSAxMDMuNiAxMDAuOSAwIDY3LjEtMzMuOSAxMTMuNi03OCAxMTMuNi0yNC4zIDAtNDIuNi0yMC4xLTM2LjctNDQuOCA3LTI5LjUgMjAuNS02MS4zIDIwLjUtODIuNiAwLTE5LTEwLjItMzQuOS0zMS40LTM0LjktMjQuOSAwLTQ0LjkgMjUuNy00NC45IDYwLjIgMCAyMiA3LjQgMzYuOCA3LjQgMzYuOHMtMjQuNSAxMDMuOC0yOSAxMjMuMkMxNjEuNSA0MzcuMiAxNjMuNSA0NjcuNCAxNjUuNiA0ODcgNzMuNCA0NTAuOSA4IDM2MS4xIDggMjU2IDggMTE5IDExOSA4IDI1NiA4UzUwNCAxMTkgNTA0IDI1NnoiXX0sQUN0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImFsZ29saWEiLGljb246WzUxMiw1MTIsW10sImYzNmMiLCJNMjU2IDBjLTEzOS45IDAtMjU0IDExMi43LTI1NiAyNTIuMS0yIDE0MS41IDExMi45IDI1OC43IDI1NC41IDI1OS41IDQzLjcgLjMgODUuOS0xMC40IDEyMy4zLTMwLjcgMy42LTIgNC4yLTcgMS4xLTkuN2wtMjQtMjEuMmMtNC45LTQuMy0xMS44LTUuNS0xNy44LTMtMjYuMSAxMS4xLTU0LjUgMTYuOC04My43IDE2LjQtMTE0LjQtMS41LTIwNi45LTk2LjYtMjA1LjEtMjExIDEuOC0xMTIuOSA5NC4zLTIwNC4yIDIwNy43LTIwNC4ybDIwNy43IDAgMCAzNjktMTE3LjgtMTA0LjdjLTMuOC0zLjQtOS43LTIuNy0xMi43IDEuMy0xOC45IDI1LTQ5LjcgNDAuNi04My45IDM4LjItNDcuNS0zLjMtODUuOS00MS41LTg5LjUtODguOS00LjItNTYuNiA0MC42LTEwMy45IDk2LjMtMTAzLjkgNTAuNCAwIDkxLjkgMzguOCA5Ni4yIDg4IC40IDQuNCAyLjQgOC41IDUuNyAxMS40bDMwLjcgMjcuMmMzLjUgMy4xIDkgMS4yIDkuOS0zLjQgMi4yLTExLjggMy0yNC4yIDIuMS0zNi44LTQuOS03Mi02My4zLTEzMC0xMzUuNC0xMzQuNC04Mi43LTUuMS0xNTEuOCA1OS41LTE1NCAxNDAuNi0yLjEgNzguOSA2Mi42IDE0NyAxNDEuNiAxNDguNyAzMyAuNyA2My42LTkuNiA4OC4zLTI3LjZMNDk1IDUwOS40YzYuNiA1LjggMTcgMS4yIDE3LTcuN2wwLTQ5MmMwLTUuNC00LjQtOS43LTkuNy05LjdMMjU2IDB6Il19LE5DdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzdGFja3BhdGgiLGljb246WzQ0OCw1MTIsW10sImY4NDIiLCJNMjQ0LjYgMjMyLjRjMCA4LjUtNC4zIDIwLjUtMjEuMyAyMC41bC0xOS42IDAgMC00MS41IDE5LjYgMGMxNy4xIDAgMjEuMyAxMi40IDIxLjMgMjF6TTQ0OCAzMmwwIDQ0OC00NDggMCAwLTQ0OCA0NDggMHpNMTUxLjMgMjg3LjhjMC0yMS4yLTEyLjEtMzQuNS00Ni43LTQ0LjgtMjAuNi03LjQtMjYtMTAuOS0yNi0xOC42czctMTQuNiAyMC40LTE0LjZjMTQuMSAwIDIwLjggOC40IDIwLjggMTguNGwzMC43IDAgLjItLjZjLjUtMTkuNi0xNS4xLTQxLjYtNTEuMS00MS42LTIzLjQgMC01Mi42IDEwLjgtNTIuNiAzOC4zIDAgMTkuNCA5LjIgMzEuMyA1MC43IDQ0LjQgMTcuMyA2LjIgMjEuOSAxMC40IDIxLjkgMTkuNSAwIDE1LjItMTkuMSAxNC4yLTE5LjUgMTQuMi0yMC40IDAtMjUuNy05LjEtMjUuNy0yMS45bC0zMC44IDAtLjIgLjZjLS43IDMxLjMgMjguNCA0NS4yIDU2LjYgNDUuMiAzMCAwIDUxLjEtMTMuNiA1MS4xLTM4LjN6bTEyNS40LTU1LjZjMC0yNS4zLTE4LjQtNDUuNS01My40LTQ1LjVsLTUxLjggMCAwIDEzOC4yIDMyLjIgMCAwLTQ3LjQgMTkuNiAwYzMwLjMgMCA1My40LTE2IDUzLjQtNDUuNHpNMjk3LjkgMzI1bDQ5LjEtMTM4LjItMzEuMSAwLTQ3LjkgMTM4LjIgMjkuOSAwek00MDQuNSAxODYuOGwtMzEuMSAwLTQ3LjkgMTM4LjIgMjkuOSAwIDQ5LjEtMTM4LjJ6Il19LFJDdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJvY3RvcHVzLWRlcGxveSIsaWNvbjpbNTEyLDUxMixbXSwiZTA4MiIsIk00NTUuNyAzNDkuMmMtNDUuOS0zOS4xLTM2LjctNzcuOS0xNi4xLTEyOC4xIDM1LjctODctMjMuNS0xODYuOS0xMDkuNi0yMTIuOC05Mi45LTI3LjktMTk1LjcgMTYtMjMwLjMgMTA4LjgtOC43IDIzLjUtMTIuNSA0OC41LTExIDczLjUgMS43IDI5LjUgMTQuNyA1MyAyNC4xIDgwLjMgMTcuMiA1MC4yLTI4LjEgOTIuNy02Ni43IDExNy42LTQ2LjggMzAuMi0zNi4zIDM5LjktOC40IDQxLjkgMjMuNCAxLjcgNDQuNS00LjUgNjUuMy0xNSA5LjItNC42IDQwLjctMTguOSA0NS4xLTI4LjYtMTIuMiAyNi42LTM3IDcyLjctMjEuNSAxMDIuMSAxOS4xIDM2LjIgNjcuMS0zMS44IDc2LjctNDUuOCA4LjYtMTIuNiA0My04MS4zIDYzLjYtNDYuOSAxOC45IDMxLjQgOC42IDc2LjQgMzUuNyAxMDQuNiAzMi45IDM0LjIgNTEuMi0xOC4zIDUxLjQtNDQuMiAuMi0xNi40LTYuMS05NS45IDI5LjktNTkuOSAyMS40IDIxLjQgNTIuOSA3MS4yIDg4LjYgNjcgMzguNy00LjUtMjIuMS02OC0yOC4zLTc4LjcgNS40IDQuMyA1My43IDM0LjEgNTMuOCA5LjUgLjEtMTguOC0zMC4xLTM0LjctNDIuNS00NS4zeiJdfSxPQ3Q9e3ByZWZpeDoiZmFiIixpY29uTmFtZToieWFtbWVyIixpY29uOls1MTIsNTEyLFtdLCJmODQwIiwiTTUwMC43IDE1OS41Yy0uNC0xLjgtMS4yLTMuNC0yLjMtNC44cy0yLjUtMi42LTQuMS0zLjVjLTMuMS0xLjYtNi43LTItMTAuMS0xLjFsLTI2LjQgNi42IDAtLjItMjIuMyA1LjgtMS4yIC4zLS42LTIuMmMtMTUuNS01OC4zLTQ1LTExMS45LTg2LjEtMTU2LjItMi42LTIuNy02LjEtNC4yLTkuOC00LjNzLTcuMyAxLjMtMTAgMy44bC0xMDIuOSAxMDIuNy0xOTkuOSAwYy02LjYgMC0xMi45IDIuNi0xNy42IDcuM1MwIDEyNC44IDAgMTMxLjRsMCAyNDlDMCAzODcgMi42IDM5My4zIDcuMyAzOThzMTEgNy4zIDE3LjYgNy4zTDIyNSA0MDUuMyAzMjguMSA1MDhjMi42IDIuNiA2IDQgOS43IDRzNy4xLTEuNCA5LjctNGMuMS0uMSAuMi0uMyAuNC0uNCAyOS4zLTMxLjUgNTIuOC02Ny44IDY5LjYtMTA3LjQgNi45LTE2LjUgMTIuNy0zMy41IDE3LjMtNTAuOGwwIDAgMjAuNCA1LjMgMC0uMSAyOC4zIDcuM2MuOSAuMiAxLjcgLjQgMi42IC41IDEuNCAuMiAyLjggLjIgNC4xLS4xIDIuNS0uNSA0LjgtMS43IDYuNy0zLjRzMy4yLTQgMy44LTYuNWMxNS4yLTYzLjQgMTUuMi0xMjkuNiAuMS0xOTNsMCAwek0zMzcuMSAyNC43bDAgMCAwIDAgMCAwek0yMjYuOSAxODkuOGwtNTIuNiA5MS4zYy0xIDEuNy0xLjUgMy43LTEuNSA1LjdsMCA0Ni4yYzAgNS44LTIuMyAxMS40LTYuNSAxNS42cy05LjcgNi40LTE1LjYgNi40bC0zLjQgMGMtNS44IDAtMTEuNC0yLjMtMTUuNi02LjRzLTYuNS05LjctNi41LTE1LjZsMC00NS43YzAtMS45LS41LTMuOC0xLjQtNS41TDcyLjMgMTg5LjZjLTEuOS0zLjQtMi44LTcuMS0yLjgtMTFzMS4xLTcuNiAzLTEwLjkgNC43LTYuMSA4LjEtOCA3LjEtMi45IDExLTIuOWwzLjMgMGM0IDAgOCAxLjEgMTEuNSAzLjJzNi4zIDUuMSA4LjEgOC43bDM2LjQgNzAuMyAzNy41LTcwLjVjMS44LTMuNSA0LjYtNi40IDcuOS04LjRzNy4yLTMuMiAxMS4xLTMuMiA3LjggLjkgMTEuMiAyLjggNi4zIDQuNyA4LjIgOC4xYzIgMy4zIDMgNy4xIDMgMTFzLTEgNy43LTMgMTFsMCAwek0zMzcuMSAyNC43YzM1LjkgNDAuNiA2MS45IDg5IDc1LjggMTQxLjNsLjYgMi0xMTQuMSAyOS42IDAtNjYuMWMwLTYuNi0yLjctMTIuOS03LjMtMTcuNnMtMTEtNy4zLTE3LjYtNy4zbC0xOS40IDAgODIuMS04MS44ek0zOTcuNiAzOTJsMCAwIDAgMGMtMTQuNyAzNC44LTM1LjEgNjctNjAuMiA5NS4ybC04Mi4yLTgxLjkgMTkuMiAwYzYuNiAwIDEyLjktMi42IDE3LjYtNy4zczcuMy0xMSA3LjMtMTcuNmwwLTY2LjIgMTE0LjYgMjkuOWMtNC40IDE2LjMtOS44IDMyLjMtMTYuMyA0Ny45bDAgMHptODQtNTIuNGwwIDAtNTAuNi0xMy4xLTEzMS43LTM0LjMgMC03Mi41IDExOS43LTMxIDQuNS0xLjJjMjkuOS03LjcgNDkuMi0xMi44IDU4LjEtMTUuMSAxMiA1NS4xIDEyIDExMi4xIDAgMTY3LjJ6Il19LEZDdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJtb2R4IixpY29uOls0NDgsNTEyLFtdLCJmMjg1IiwiTTM1NiAyNDEuOGwzNi43IDIzLjcgMCAyMTQuNS0xMzMtODMuOCA5Ni4zLTE1NC40ek00NDAgNzVsLTIxMy43IDAtMjMgMzcuOCAxNTMuNSA5Ni41IDgzLjItMTM0LjN6TTM1MSAyMTcuOGwtMjk1LjgtMTg1LjggMCAyMTQuNSA0NiAyOSAyNDkuOC01Ny43ek05NyAyOTQuMkw4IDQzNyAyMjEuNyA0MzcgMzQ2LjcgMjM2LjUgOTcgMjk0LjJ6Il19LEJDdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzcXVhcmUtdGhyZWFkcyIsaWNvbjpbNDQ4LDUxMixbXSwiZTYxOSIsIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyek0yOTQuMiAyNDQuM2MxOS41IDkuMyAzMy43IDIzLjUgNDEuMiA0MC45IDEwLjQgMjQuMyAxMS40IDYzLjktMjAuMiA5NS40LTI0LjIgMjQuMS01My41IDM1LTk1LjEgMzUuM2wtLjIgMGMtNDYuOC0uMy04Mi44LTE2LjEtMTA2LjktNDYuOC0yMS41LTI3LjMtMzIuNi02NS40LTMzLTExMy4xbDAtLjJjLjQtNDcuNyAxMS41LTg1LjcgMzMtMTEzLjEgMjQuMi0zMC43IDYwLjItNDYuNSAxMDYuOS00Ni44bC4yIDBjNDYuOSAuMyA4My4zIDE2IDEwOC4yIDQ2LjYgMTIuMyAxNS4xIDIxLjMgMzMuMyAyNyA1NC40bC0yNi45IDcuMmMtNC43LTE3LjItMTEuOS0zMS45LTIxLjQtNDMuNi0xOS40LTIzLjktNDguNy0zNi4xLTg3LTM2LjQtMzggLjMtNjYuOCAxMi41LTg1LjUgMzYuMi0xNy41IDIyLjMtMjYuNiA1NC40LTI2LjkgOTUuNSAuMyA0MS4xIDkuNCA3My4zIDI2LjkgOTUuNSAxOC43IDIzLjggNDcuNCAzNiA4NS41IDM2LjIgMzQuMy0uMyA1Ni45LTguNCA3NS44LTI3LjMgMjEuNS0yMS41IDIxLjEtNDcuOSAxNC4yLTY0LTQtOS40LTExLjQtMTcuMy0yMS4zLTIzLjMtMi40IDE4LTcuOSAzMi4yLTE2LjUgNDMuMi0xMS40IDE0LjUtMjcuNyAyMi40LTQ4LjQgMjMuNS0xNS43IC45LTMwLjgtMi45LTQyLjYtMTAuNy0xMy45LTkuMi0yMi0yMy4yLTIyLjktMzkuNS0xLjctMzIuMiAyMy44LTU1LjMgNjMuNS01Ny42IDE0LjEtLjggMjcuMy0uMiAzOS41IDEuOS0xLjYtOS45LTQuOS0xNy43LTkuOC0yMy40LTYuNy03LjgtMTcuMS0xMS44LTMwLjgtMTEuOWwtLjQgMGMtMTEgMC0yNiAzLjEtMzUuNiAxNy42bC0yMy0xNS44YzEyLjgtMTkuNCAzMy42LTMwLjEgNTguNS0zMC4xbC42IDBjNDEuOCAuMyA2Ni42IDI2LjMgNjkuMSA3MS44IDEuNCAuNiAyLjggMS4yIDQuMiAxLjlsLjEgLjV6bS03MS44IDY3LjVjMTctLjkgMzYuNC03LjYgMzkuNy00OC44LTguOC0xLjktMTguNi0yLjktMjktMi45LTMuMiAwLTYuNCAuMS05LjYgLjMtMjguNiAxLjYtMzguMSAxNS41LTM3LjQgMjcuOSAuOSAxNi43IDE5IDI0LjUgMzYuNCAyMy42bC0uMS0uMXoiXX0sSEN0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6Im9sZC1yZXB1YmxpYyIsaWNvbjpbNTEyLDUxMixbXSwiZjUxMCIsIk0yNDMuOCAxMC4yYzcuNS0uMyAxNS0uMyAyMi41LS4xIDMuNiAuMSA3LjIgLjQgMTAuOCAuNyA0LjkgLjMgOS44IDEgMTQuNyAxLjYgMi45IC40IDUuOCAxIDguNyAxLjUgNy45IDEuMyAxNS43IDMuMyAyMy40IDUuNCAxMi4yIDMuNSAyNC4yIDcuOSAzNS44IDEzLjIgMjYuNiAxMi4yIDUwLjkgMjkuMiA3MS42IDQ5LjkgMjAgMjAuMSAzNi43IDQzLjUgNDguOSA2OS4yIDEuMSAyLjYgMi40IDUuMSAzLjUgNy43IDIuOCA2LjQgNS40IDEzIDcuNiAxOS42IDQuMSAxMi4zIDcuMyAyNSA5LjQgMzcuOCAuNiAzLjEgMSA2LjMgMS40IDkuNSAuNSAzLjggLjkgNy43IDEuMiAxMS42IC44IDguMyAuOCAxNi43IC44IDI1LjEtLjEgNS0uMyA5LjktLjcgMTQuOS0uMiAzLjQtLjUgNi44LTEgMTAuMS0uNCAyLjctLjYgNS41LTEuMSA4LjItLjkgNS4xLTEuNyAxMC4zLTIuOSAxNS40LTQuMSAxOC41LTEwLjMgMzYuNi0xOC41IDUzLjYtMTUuOCAzMi44LTM4LjggNjIuMi02Ny4xIDg1LjEtMTcuMyAxNC4xLTM2LjQgMjUuOS01Ni45IDM0LjktNi4yIDIuNy0xMi41IDUuMy0xOC45IDcuNC0zLjUgMS4yLTcgMi40LTEwLjYgMy40LTYuNiAxLjktMTMuMyAzLjYtMjAgNS00LjcgLjktOS4zIDEuNy0xNCAyLjUtNS4zIC43LTEwLjUgMS40LTE1LjggMS43LTYuNyAuNy0xMy40IC44LTIwLjEgLjgtNi44IDAtMTMuNi0uMS0yMC40LS44LTMuMy0uMi02LjYtLjUtOS44LTEtMi43LS40LTUuNS0uNi04LjItMS4xLTQuMS0uNy04LjItMS40LTEyLjQtMi4yLTQuMi0uOS04LjUtMS45LTEyLjctMy04LjYtMi4yLTE3LjEtNS0yNS40LTguMS0xMC41LTQuMS0yMC44LTguNy0zMC42LTE0LjItMi4xLTEuMi00LjMtMi4zLTYuNC0zLjYtMTEuMi02LjYtMjEuOS0xNC4xLTMxLjktMjIuMy0zNC43LTI4LjQtNjEuNC02Ni40LTc2LjQtMTA4LjctMy4xLTguNy01LjctMTcuNi03LjgtMjYuNy0xLjUtNi4yLTIuNS0xMi40LTMuNi0xOC43LS40LTIuMy0uNi00LjctMS03LjEtLjYtNC0uOC04LTEuMi0xMS45LS44LTkuNS0uNy0xOS0uNS0yOC41IC4xLTMuNSAuMy03IC43LTEwLjUgLjMtMy4yIC41LTYuNCAuOS05LjUgLjQtMi44IC43LTUuNiAxLjItOC40IC43LTMuOSAxLjMtNy45IDIuMS0xMS44IDMuNC0xNi41IDguNS0zMi43IDE1LjMtNDguMiAxLjItMi45IDIuNi01LjcgMy45LTguNiA4LjEtMTYuNyAxNy45LTMyLjYgMjkuNS00Ny4xIDIwLTI1LjQgNDUuMS00Ni43IDczLjMtNjIuNSA3LjUtNC4yIDE1LjItOCAyMy4xLTExLjQgMTUuOC02LjkgMzIuNC0xMiA0OS4zLTE1LjQgMy41LS43IDctMS4yIDEwLjYtMS44IDIuNi0uNSA1LjMtLjcgNy45LTEuMSAzLjUtLjUgNy4xLS43IDEwLjYtMSAyLjUtLjIgNC45LS40IDcuNC0uNXptOC42IDI0LjRjLTkuMiAuMS0xOC40IDEtMjcuNiAyLjItNy4zIDEuMS0xNC41IDIuNi0yMS43IDQuMy0xMy45IDMuNS0yNy41IDguMy00MC41IDE0LjQtMTAuNSA1LTIwLjYgMTAuNy0zMC4yIDE3LjItNC4yIDIuOS04LjQgNS44LTEyLjMgOS01LjEgNC0xMCA4LjItMTQuNyAxMi42LTIuNSAyLjItNC44IDQuNy03LjIgNy4xLTI4LjIgMjguOC00OC40IDY1LjQtNTcuNSAxMDQuNy0yIDguNC0zLjUgMTctNC40IDI1LjYtMS4xIDguOS0xLjQgMTcuOS0xLjQgMjYuOCAuMSA3LjEgLjQgMTQuMyAxLjIgMjEuNCAuNiA3LjEgMS45IDE0LjIgMy4yIDIxLjIgMS4xIDQuNiAyIDkuMyAzLjMgMTMuOSA2LjMgMjMuNCAxNi41IDQ1LjcgMzAuMSA2NS44IDguNiAxMyAxOC44IDI0LjkgMzAgMzUuOCAxNi4zIDE1LjggMzUgMjkgNTUuMyAzOS4yIDcuMyAzLjUgMTQuNyA2LjkgMjIuMyA5LjYgNSAxLjggMTAuMSAzLjYgMTUuMiA1IDExLjMgMy4yIDIyLjggNS42IDM0LjQgNy4xIDIuOSAuMyA1LjggLjYgOC43IC45IDEzLjggMS4xIDI3LjcgMSA0MS41LS40IDQuNC0uNiA4LjktMSAxMy4zLTEuOCAzLjYtLjcgNy4zLTEuMiAxMC45LTIuMSA0LjEtMSA4LjMtMS45IDEyLjQtMy4xIDI2LjUtNy4zIDUxLjYtMTkuNyA3My42LTM2LjIgMTUuOC0xMS44IDMwLTI1LjggNDIuMS00MS4zIDMuMy00IDYuMi04LjMgOS4xLTEyLjYgMy40LTUuMSA2LjYtMTAuMiA5LjYtMTUuNSAyLjQtNC40IDQuNy04LjkgNy0xMy40IDUuNy0xMi4xIDEwLjMtMjQuNiAxMy44LTM3LjUgMi42LTEwIDQuNy0yMC4yIDUuOS0zMC40IDEuOC0xMy41IDEuOS0yNy4xIDEuMy00MC43LS4zLTMuOS0uNy03LjgtMS0xMS43LTIuMi0xOS4xLTYuOC0zNy45LTEzLjgtNTUuOC02LTE1LjEtMTMuNS0yOS42LTIyLjYtNDMuMS0xMi43LTE4LjgtMjguMi0zNS43LTQ2LTQ5LjgtMjUtMjAtNTQuNS0zNC41LTg1LjYtNDIuMS03LjgtMS45LTE1LjctMy4zLTIzLjYtNC40LTMuOS0uNi03LjgtLjgtMTEuOC0xLjItNy40LS42LTE0LjgtLjctMjIuMi0uNnpNMTQ3LjMgODMuNWMxMy4zLTguOSAyOC4xLTE1LjQgNDMuMy0yMC4yLTMuMiAxLjgtNi40IDMuNC05LjUgNS4zLTExLjIgNi43LTIxLjUgMTQuOS0zMC40IDI0LjUtNi44IDcuNC0xMi44IDE1LjctMTcgMjQuOS0zLjMgNi45LTUuNiAxNC4yLTYuOSAyMS43LS45IDQuOC0xLjMgOS44LTEuMiAxNC44IC4xIDEzLjcgNC40IDI3LjEgMTEuMyAzOC44IDUuOSAxMC4yIDEzLjYgMTkuMyAyMi40IDI3LjMgNC45IDQuNCAxMC4yIDguMSAxNSAxMi42IDIuMyAyLjIgNC41IDQuNCA2LjQgNi45IDIuNiAzLjMgNC45IDcgNiAxMS4xIC45IDMgLjcgNi4yIC43IDkuMyAwIDQuMSAwIDguMiAwIDEyLjMgLjEgMy41IDAgNy4xIC4xIDEwLjYgLjEgMi40IDAgNC44IC4xIDcuMSAuMiA1LjggLjEgMTEuNSAuMSAxNy4zIC4xIDIuOSAwIDUuOCAuMSA4LjcgMCAxLjYgLjEgMy4zIDAgNC45LS45IC4xLTEuOCAuMi0yLjcgLjItMTEgMC0yMS45LTIuNi0zMi02LjktNi0yLjctMTEuOC01LjktMTcuMS05LjgtNS44LTQuMi0xMS4xLTktMTUuOC0xNC4zLTYuNS03LjItMTItMTUuNC0xNi42LTIzLjktMS4xLTItMi4yLTQtMy4yLTYuMS0xLjItMi42LTIuNi01LjEtMy43LTcuOC00LTkuNy02LjYtMTkuOS04LjEtMzAuMy0uNS00LjQtMS4xLTguOS0xLjItMTMuMy0uNy0xNS43IC44LTMxLjYgNC43LTQ2LjggMi4xLTguMiA0LjgtMTYuMiA4LjMtMjMuOCA2LjMtMTQuMiAxNS4zLTI3LjIgMjYuMy0zOC4yIDYuMy02LjIgMTMuMS0xMS44IDIwLjUtMTYuN3pNMzIyLjcgNjMuNGMyLjcgLjcgNS40IDEuNyA4LjEgMi43IDYuNCAyLjMgMTIuNyA0LjggMTguNyA4IDEzLjEgNi40IDI1LjMgMTQuOCAzNS44IDI1IDEwLjIgMTAgMTguNyAyMS42IDI1LjEgMzQuMyAxLjMgMi43IDIuNiA1LjUgMy44IDguMyA2LjMgMTUuMSAxMCAzMS4zIDExLjIgNDcuNiAuNCA0LjUgLjQgOS4xIC41IDEzLjYgLjEgMTEuNi0xLjUgMjMuMy00LjMgMzQuNS0yIDcuMy00LjMgMTQuNS03LjkgMjEuMi0zLjIgNi42LTYuNyAxMy4yLTEwLjggMTkuMi02LjkgMTAuNS0xNS42IDE5LjktMjUuOCAyNy4yLTEwLjUgNy42LTIyLjYgMTMtMzUuNCAxNS40LTMuNSAuNy03LjEgMS4xLTEwLjcgMS4yLTEuOCAuMS0zLjcgLjItNS42LS4xLS4zLTIuMSAwLTQuMyAwLTYuNSAwLTMuNyAuMS03LjQgLjEtMTEuMiAuMi03IDAtMTQuMSAuMi0yMS4xIDAtMi40IDAtNC44IDAtNy4xIC4yLTUuMSAwLTEwLjEgLjEtMTUuMiAuMS0zLS4yLTYgLjUtOSAuNy0yLjUgMS44LTQuOSAzLjEtNy4xIDQuNS03LjMgMTEuMS0xMyAxNy43LTE4LjMgNS40LTQuMiAxMC41LTguOCAxNS0xMy44IDcuNy04LjQgMTQuMi0xNy45IDE4LjgtMjguMyAyLjUtNS45IDQuNS0xMi4xIDUuNS0xOC41IC45LTQuNCAxLjEtOC44IDEtMTMuMyAwLTcuOC0xLjQtMTUuNi0zLjYtMjMuMi0xLjgtNS43LTQuMy0xMS4yLTcuMS0xNi40LTMuOS02LjktOC42LTEzLjMtMTQtMTkuMi05LjktMTAuOC0yMS44LTE5LjktMzQuNi0yNy4xLTEuOC0xLTMuOC0xLjgtNS42LTN6TTIyMS45IDEyMS45YzEtMS4yIDItMi4zIDMuMS0zLjQtLjYgLjktMS4zIDEuOC0yIDIuNy0zLjEgMy45LTUuNSA4LjMtNyAxMy4xLS45IDMuMy0xLjcgNi42LTEuNyAxMC0uMSAyLjUtLjEgNS4xIC4zIDcuNiAxLjEgNy42IDQuMyAxNC45IDguOCAyMS4xIDIgMi43IDQuMiA1LjMgNi45IDcuMyAxLjYgMS4zIDMuNSAyLjEgNS4zIDMgMy4xIDEuNyA2LjMgMy4yIDkuMSA1LjUgMi43IDIuMSA0LjYgNS4zIDQuNCA4LjggMCA3My43IDAgMTQ3LjMgMCAyMjEgMCAxLjQtLjEgMi43IDAgNCAuMSAxLjUgLjggMi44IDEuNSA0LjEgLjkgMS43IDEuOCAzLjMgMy4yIDQuNiAuOSAuOCAyIDEuNCAzLjIgMS4yIDEuNS0uMiAyLjctMS40IDMuNC0yLjYgMS0xLjUgMS43LTMuMiAyLjMtNC45IC44LTIuMSAuNC00LjQgLjUtNi42IC4xLTQgMC04LjEgLjEtMTIuMSAwLTUuOSAwLTExLjggLjEtMTcuNyAuMS0zLjYgMC03LjIgLjEtMTAuOSAuMi00IDAtOC4xIC4xLTEyLjEgMC02IDAtMTIgLjEtMTggLjEtMy42IDAtNy4yIC4xLTEwLjkgLjEtMy45IDAtNy45IC4xLTExLjggMC02IDAtMTIgLjEtMTggLjItMy45IDAtNy45IC4yLTExLjggLjMgMS40IC4xIDIuOSAuMiA0LjQgLjIgMy42IC40IDcuMiAuOCAxMC44IC4zIDMuNCAuNCA2LjkgLjkgMTAuMyAuNCAzLjEgLjUgNi4yIDEgOS4zIC42IDQuMSAuOSA4LjIgMS41IDEyLjMgMS41IDkgMi44IDE4LjEgNS4xIDI3IDEuMSA0LjggMi40IDkuNiA0IDE0LjMgMi41IDcuOSA1LjcgMTUuNyAxMC4zIDIyLjYgMS43IDIuNiAzLjkgNSA2LjEgNy4yIC4zIC4yIC42IC41IC45IC43IC42IC4zIDEuMy0uMSAxLjctLjYgLjctLjkgMS4yLTEuOSAxLjctMi45IDQuMS03LjggOC4yLTE1LjYgMTIuMy0yMy4zIC43LTEuMyAxLjQtMi42IDIuNi0zLjYgMS44LTEuNiAzLjgtMi43IDYtMy42IDIuOS0xLjIgNS45LTIuMiA5LTIuNCA2LjYtLjYgMTMuMSAuNyAxOS42IDEuOCAzLjcgLjYgNy40IDEuMiAxMS4xIDEuNCAzLjcgLjEgNy41IC4xIDExLjItLjMgOC42LS45IDE3LTMgMjQuOS02LjIgNS4zLTIuMiAxMC41LTQuOCAxNS4zLTcuOSAxMS41LTcuMiAyMS41LTE2LjYgMzAtMjcgMS4yLTEuNCAyLjItMi45IDMuNS00LjMtMS4yIDMuMi0yLjcgNi40LTQuMiA5LjUtMS4zIDIuOS0yLjggNS42LTQuMyA4LjQtNS4yIDkuNi0xMSAxOC45LTE3LjggMjcuNS00IDUuMi04LjUgMTAuMS0xMy4zIDE0LjYtNi42IDYuMS0xNC4xIDExLjQtMjIuNCAxNC44LTguMiAzLjQtMTcuMyA0LjYtMjYuMSAzLjMtMy42LS42LTctMS43LTEwLjQtMi45LTIuOC0xLTUuNC0yLjQtOC0zLjctMy40LTEuNy02LjYtMy44LTkuNy02LjEgMi43IDMuMSA1LjcgNS45IDguNyA4LjYgNC4zIDMuOCA4LjcgNy4zIDEzLjYgMTAuMiA0IDIuNSA4LjMgNC40IDEyLjggNS41IDEuNSAuNCAzIC41IDQuNSAuNi0xLjMgMS4xLTIuNiAyLTQgMy05LjYgNi41LTIwIDExLjktMzAuNyAxNi40LTIwLjkgOC43LTQzLjIgMTQtNjUuNyAxNS4zLTQuNyAuMi05LjMgLjQtMTQgLjQtNS0uMS0xMC0uMS0xNC45LS43LTExLjItLjgtMjIuMy0yLjctMzMuMi01LjQtMTAuNC0yLjctMjAuNi02LjEtMzAuMy0xMC42LTguNy0zLjktMTcuMS04LjQtMjUtMTMuOC0xLjgtMS4zLTMuNy0yLjUtNS40LTQuMSA2LjYtMS4yIDEzLTMuNCAxOS02LjUgNS43LTIuOSAxMS02LjcgMTUuNi0xMS4xIDIuMi0yLjIgNC4zLTQuNiA2LjItNy4xLTMuNCAyLjEtNi45IDQuMi0xMC42IDUuOC00LjQgMi4yLTkuMSAzLjgtMTMuOCA1LTUuNyAxLjUtMTEuNyAxLjctMTcuNiAxLjEtOC4xLTEtMTUuOS00LjMtMjIuNS05LTQuMy0yLjktOC4yLTYuNC0xMi0xMC4xLTkuOS0xMC4yLTE4LjItMjEuOC0yNS43LTMzLjktMy45LTYuMy03LjUtMTIuNy0xMS4xLTE5LjItMS0yLTIuMS00LjEtMy4yLTYuMSAyLjggMi45IDUuNiA2IDguNCA4LjkgMTkuMiAxOS4yIDM3LjYgMzIuMyA1My43IDM1LjUgMy4xIC43IDYuMyAuNSA5LjUgLjggMi44IC4zIDUuNiAuMiA4LjMgLjMgNSAuMSAxMC4xIDAgMTUuMi0uMiAzLjYtLjIgNy4zLS43IDEwLjktMS4xIDIuMS0uMiA0LjEtLjcgNi4xLTEuMiAzLjktMSA4LjEtMSAxMS44IC42IDQuOCAxLjggOC40IDUuNiAxMS40IDkuNyAyLjIgMyA0LjEgNi4yIDUuNyA5LjYgMS4yIDIuNCAyLjUgNC44IDMuNiA3LjMgMSAyLjIgMi4yIDQuNCAzLjQgNi41IC43IDEgMS40IDIuMiAyLjYgMi42IDEuMS0uOCAxLjctMS45IDIuMy0zIDIuMS00LjIgMy40LTguNiA0LjktMTMgMi02LjYgMy44LTEzLjMgNS4yLTIwIDIuMi05LjMgMy4yLTE4LjcgNC41LTI4LjEgLjYtNCAuOC04IDEuMy0xMiAuOS0xMC42IDEuOS0yMS4zIDIuMi0zMS45IC4xLTEuOSAuMi0zLjcgLjMtNS42IDAtNC4zIC4yLTguNyAuMi0xMyAwLTIuNCAwLTQuOCAwLTcuMSAwLTUuMS0uMi0xMC4xLS4yLTE1LjItLjItNi42LS43LTEzLjItMS4zLTE5LjgtLjctNS45LTEuNS0xMS44LTMuMS0xNy41LTItNy43LTUuNi0xNS05LjgtMjEuOC0zLjItNS4xLTYuOC05LjktMTEuMS0xNC0zLjktMy45LTguNi03LjEtMTMuOS04LjQtMS41LS40LTMuMS0uNC00LjYtLjYgLjEtMyAuNy01LjkgMS4zLTguOCAxLjYtNy43IDMuOC0xNS4zIDYuOC0yMi42IDEuNS00IDMuNC03LjkgNS40LTExLjcgMy40LTYuNiA3LjYtMTIuOCAxMi41LTE4LjV6bTMxLjMgMS43Yy40LS4xIC43LS4xIDEuMS0uMiAuMiAxLjggLjEgMy42IC4xIDUuNGwwIDM4LjFjMCAxLjcgLjEgMy41LS4yIDUuMi0uNCAwLS43IDAtMS4xIDAtLjktMy44LTEuNy03LjYtMi42LTExLjMtLjQtMS41LS42LTMuMS0xLjEtNC42LTEuNy0uMi0zLjQtLjItNS4yLS4yLTUuMSAwLTEwLjEgMC0xNS4yIDAtMS43IDAtMy4zIC4xLTUgMCAwLS40LS4zLS45IC4yLTEuMiAxLjMtLjcgMi43LS45IDQuMS0xLjQgMy40LTEuMSA2LjktMi4yIDEwLjMtMy4zIDEuNC0uNSAyLjktLjcgNC4yLTEuNSAwLS42IDAtMS4xIDAtMS43LTEuMi0uNi0yLjUtLjktMy44LTEuMy0zLjEtMS02LjMtMi05LjQtMy0xLjgtLjYtMy43LTEtNS40LTEuOCAwLS40LS4xLS43LS4xLTEuMSA1LjEtLjIgMTAuMiAuMSAxNS4zLS4xIDMuNC0uMSA2LjcgLjEgMTAuMS0uMSAuMS0uNCAuMy0uOCAuNC0xLjIgMS4xLTQuOSAyLjMtOS44IDMuNC0xNC43em02LS4yYy40IDAgLjcgLjEgMS4xIC4yIDEgMy44IDEuNyA3LjggMi43IDExLjYgLjQgMS40IC42IDIuOSAxIDQuMyAyLjUgLjIgNS4xIDAgNy42IDAgNS4yIC4xIDEwLjMgLjEgMTUuNSAuMSAuOCAwIDEuNSAwIDIuMyAuMSAwIC40LS4xIC43LS4xIDEuMS0xLjggLjgtMy44IDEuMi01LjcgMS45LTMuNyAxLjItNy41IDIuNC0xMS4yIDMuNi0uNiAuMi0xLjEgLjQtMS43IC42LS4yIC42LS4yIDEuMS0uMSAxLjcgLjkgLjUgMS44IC44IDIuOCAxLjEgNC45IDEuNSA5LjcgMy4xIDE0LjYgNC42IC40IC4xIC44IC4zIDEuMSAuNSAuNCAuMyAuMiAuOCAuMiAxLjItMS43IC4xLTMuMyAwLTUgMC01LjIgMC0xMC4zIDAtMTUuNSAwLTEuNiAwLTMuMiAwLTQuOCAuMi0uNSAxLjctLjcgMy40LTEuMiA1LjEtLjkgMy42LTEuNSA3LjItMi41IDEwLjgtLjQgMC0uNyAwLTEuMSAuMS0uMy0xLjctLjItMy41LS4yLTUuMmwwLTM4LjFjMC0xLjgtLjEtMy42IC4xLTUuNHptLTE4NiA0NWMxLjEtMi4yIDIuMS00LjQgMy40LTYuNS0xLjggNy42LTIuOSAxNS4zLTMuNiAyMy0uOCA3LjctLjggMTUuNS0uNSAyMy4yIDEuMSAxOS45IDUuNSAzOS44IDE0LjIgNTcuOSAzIDYgNi40IDExLjggMTAuNSAxNy4xIDYuMSA3LjUgMTIuNSAxNC44IDE5LjggMjEuMSA0LjggNC4xIDEwIDcuOCAxNS41IDEwLjggMy4zIDEuNyA2LjUgMy40IDkuOSA0LjcgNSAyIDEwLjIgMy42IDE1LjQgNC45IDMuOCAxIDcuOCAxLjQgMTEuNSAyLjcgNSAxLjYgOS41IDQuNiAxMyA4LjQgNC45IDUuMiA4LjEgMTEuOSAxMC4yIDE4LjcgMSAyLjkgMS42IDUuOSAyLjIgOC45IC4yIC44IC4yIDEuNSAuMiAyLjMtNi41IDIuOC0xMy4zIDUuMS0yMC4zIDYuMi00LjEgLjgtOC4zIDEtMTIuNSAxLjEtMTAuMiAuMi0yMC41LTEuOC0zMC4xLTUuMS0zLjctMS40LTcuNS0yLjktMTEtNC43LTguMS0zLjgtMTUuNi04LjctMjIuNS0xNC41LTIuOS0yLjYtNS44LTUuMS04LjQtOC05LjItOS44LTE2LjMtMjEuNC0yMS44LTMzLjctMi40LTUuNS00LjYtMTEuMi02LjQtMTctMS4yLTMuOS0yLjQtNy45LTMuMy0xMS45LS43LTIuOS0xLjItNS45LTEuOS04LjktLjUtMi4xLS43LTQuMy0xLTYuNS0uOC01LjQtMS4zLTEwLjktMS4zLTE2LjQgLjEtNi4yIC4yLTEyLjQgMS4xLTE4LjUgLjQtMi45IC43LTUuNyAxLjItOC42IDEtNS43IDIuMS0xMS40IDMuNy0xNi45IDMuMS0xMS42IDcuNS0yMyAxMi43LTMzLjh6bTM2My43LTYuNGMxLjEgMS43IDEuOSAzLjUgMi44IDUuMyAyLjEgNC41IDQuMiA4LjkgNiAxMy41IDcuNiAxOC44IDEyLjMgMzguOCAxMyA1OSAwIDEuOCAuMSAzLjUgLjEgNS4zIC4xIDkuNi0xLjMgMTkuMS0zLjIgMjguNS0uNyAzLjYtMS41IDcuMi0yLjYgMTAuNy00IDE0LjctMTAgMjktMTguNCA0MS44LTguMiAxMi42LTE5IDIzLjUtMzEuOCAzMS40LTUuNyAzLjYtMTEuOCA2LjYtMTggOS4yLTUuOCAyLjItMTEuNyA0LTE3LjggNS4xLTYuNCAxLTEyLjkgMS41LTE5LjQgMS4yLTcuOS0uNS0xNS44LTIuMS0yMy4yLTQuOC0xLjktLjgtMy45LTEuNS01LjgtMi4zLS4yLTEuNSAuMi0zIC41LTQuNSAxLjItNS43IDMtMTEuNCA1LjctMTYuNiAyLjQtNC41IDUuNS04LjcgOS41LTExLjkgMi40LTIuMSA1LjItMy42IDguMi00LjggMy42LTEuNSA3LjUtMiAxMS4yLTIuOCA3LjItMS43IDE0LjQtMy45IDIxLjItNyAxMC4zLTQuNyAxOS43LTExLjQgMjcuNi0xOS41IDEuNi0xLjYgMy4yLTMuMiA0LjctNC45IDMuNC0zLjggNi43LTcuNiA5LjgtMTEuNSA3LjUtMTAuMSAxMi44LTIxLjYgMTYuNy0zMy41IDEuNi01LjMgMy4yLTEwLjYgNC4yLTE2LjEgLjYtMi45IDEtNS44IDEuNS04LjcgLjktNi4xIDEuNi0xMi4yIDEuNy0xOC40IC4xLTYuNiAuMS0xMy4zLS41LTE5LjktLjctOC0xLjktMTYtMy43LTIzLjh6Il19LHFDdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzdXNlIixpY29uOls2NDAsNTEyLFtdLCJmN2Q2IiwiTTYwNC41IDIxMGExMC40IDEwLjQgMCAxIDEgLTExLjQtMTcuNCAxMC40IDEwLjQgMCAxIDEgMTEuNCAxNy40ek02MjEgMTg3LjJhMzguNSAzOC41IDAgMSAxIC03NSAxNy42IDM4LjUgMzguNSAwIDEgMSA3NS0xNy42ek00MzMuNyAzMzYuN2MzLjIgNC42IDUuOCA5IDcuMyAxMy40IDEgMy4xIDIuNCA3LjMgNS41IDguOSAuMiAuMSAuMyAuMiAuNSAuMiA1LjcgMi4xIDIwLjMgMS43IDIwLjMgMS43bDI2LjggMGMyLjMgMCAyMi40IDAgMjEuOS0yLjMtMi40LTEwLjgtMTQuOS0xMi43LTI0LjQtMTguMy04LjctNS4yLTE3LTExLjEtMjAuOC0yMS4zLTItNS4yLS44LTE3LjQgMi42LTIxLjggMi41LTMuMiA2LjEtNS4zIDEwLTYuMiA0LjMtLjkgOC44LS4xIDEzLjEgLjMgNS4zIC41IDEwLjYgMS41IDE1LjkgMi4yIDEwLjMgMS4zIDIwLjYgMS45IDMxIDEuNiAxNy4xLS41IDM0LjItMy4yIDUwLjQtOC43IDExLjMtMy44IDIyLjQtOC45IDMyLTE2LjEgMTAuOS04LjEgOC4xLTcuNC0zLTYuMi0xMy4zIDEuNC0yNi42IDEuNi0zOS45IC44LTEyLjQtLjctMjQuNy0yLjItMzUuOS03LjktOC44LTQuNi0xNi40LTkuMS0yMy40LTE2LjItMS0xLjEtMS43LTQuMiAuMi02LjIgMS45LTEuOSA1LjgtLjggNyAuMiAxMi4yIDEwLjIgMzAuNSAxOC42IDQ5LjMgMTkuNSAxMC4yIC41IDIwLjEgLjcgMzAuNCAuMyA1LjEtLjIgMTIuOC0uMiAxNy45LS4zIDIuNiAwIDkuOCAuNyAxMS4yLTIuMSAuNC0uOCAuNC0xLjggLjMtMi43LTEuNS00MC45LTQuNS04Ni45LTQ3LjMtMTA2LjUtMzEuOS0xNC42LTc5LjctMzcuMi05OS45LTQ2LjYtNC43LTIuMi0xMC4yIDEuMy0xMC4yIDYuNSAwIDEzLjYgLjcgMzMuMyAuNyA1MS4xLTkuNy05LjktMjYtMTYuMS0zOC40LTIxLjgtMTQuMS02LjUtMjguNy0xMi00My41LTE2LjYtMjkuOC05LjItNjAuNy0xNC45LTkxLjctMTgtMzUuMi0zLjUtNzEtMS44LTEwNS43IDUuMy01Ni45IDEyLjItMTEzLjEgMzkuNy0xNTUuNyA3OS44LTI2LjEgMjQuNi00Ni42IDU5LjctNDggOTUuMi0yIDUwLjMgMTIuMSA3Ny4zIDM4IDEwNS4yIDQxLjMgNDQuNCAxMzAuMiA1MC42IDE2Ni4yLTIgMTYuMi0yMy43IDE5LjctNTUuOCA4LTgyLTExLjgtMjYuMi0zOC44LTQ1LjEtNjcuNC00Ni0yMi4yLS43LTQ1LjkgMTAuNi01NC41IDMxLjEtNi41IDE1LjctMi44IDM1LjEgOSA0Ny4zIDQuNiA0LjggMTAuOSA4LjcgMTcuNyA3LjEgNC0uOSA3LjQtMy45IDgtOCAuOS02LTQuNC05LjktNy42LTE0LjUtNS44LTguMy00LjctMjAuOSAyLjctMjcuOSA2LjItNiAxNS4zLTcuOCAyMy45LTcuNyA4IDAgMTYuMiAxLjQgMjMuMSA1LjUgOS43IDUuNyAxNi4yIDE2LjIgMTguNCAyNy4yIDYuNyAzMy0yMC4yIDU5LjktNTYuNiA2Mi0xOC42IDEuMS0zNy42LTMuOC01Mi4xLTE1LjUtMzYuOS0yOS44LTQ1LjktOTAuMy0zLjgtMTIyLjcgNDAtMzAuNyA5MC40LTIyLjggMTIwLjItNi44IDIzLjggMTIuOCA0MS41IDMzLjYgNTUgNTYuNyA2LjcgMTEuNiAxMi41IDIzLjcgMTcuOCAzNi4xIDUuMSAxMS44IDkuOSAyMy44IDIwLjIgMzIuNSA2LjggNS44IDE1LjIgNS42IDI0LjEgNS42bDUwLjggMGM2LjkgMCA1LjItNC42IDIuMi03LjctNi43LTYuOS0xNi40LTguNC0yNS40LTEwLjktMjAuNS01LjYtMTguNC0zMi44LTEyLjctMzIuOCAxOC4zIDAgMTguOSAuNiAzNC45IC4zIDIzLjItLjMgMzAuMi0xLjcgNDguMyA1IDkuNyAzLjYgMTkgMTMuMSAyNS4xIDIxLjd6Il19LGpDdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJhcHAtc3RvcmUtaW9zIixpY29uOls0NDgsNTEyLFtdLCJmMzcwIiwiTTQwMCAzMkw0OCAzMkMyMS41IDMyIDAgNTMuNSAwIDgwTDAgNDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDM1MiAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtMzUyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0xMjcgMzg0LjVjLTUuNSA5LjYtMTcuOCAxMi44LTI3LjMgNy4zLTkuNi01LjUtMTIuOC0xNy44LTcuMy0yNy4zbDE0LjMtMjQuN2MxNi4xLTQuOSAyOS4zLTEuMSAzOS42IDExLjRMMTI3IDM4NC41em0xMzguOS01My45TDg0IDMzMC42Yy0xMSAwLTIwLTktMjAtMjBzOS0yMCAyMC0yMGw1MSAwIDY1LjQtMTEzLjItMjAuNS0zNS40Yy01LjUtOS42LTIuMi0yMS44IDcuMy0yNy4zIDkuNi01LjUgMjEuOC0yLjIgMjcuMyA3LjNsOC45IDE1LjQgOC45LTE1LjRjNS41LTkuNiAxNy44LTEyLjggMjcuMy03LjMgOS42IDUuNSAxMi44IDE3LjggNy4zIDI3LjNsLTg1LjggMTQ4LjYgNjIuMSAwYzIwLjIgMCAzMS41IDIzLjcgMjIuNyA0MHptOTguMSAwbC0yOSAwIDE5LjYgMzMuOWM1LjUgOS42IDIuMiAyMS44LTcuMyAyNy4zLTkuNiA1LjUtMjEuOCAyLjItMjcuMy03LjMtMzIuOS01Ni45LTU3LjUtOTkuNy03NC0xMjguMS0xNi43LTI5LTQuOC01OCA3LjEtNjcuOCAxMy4xIDIyLjcgMzIuNyA1Ni43IDU4LjkgMTAybDUyIDBjMTEgMCAyMCA5IDIwIDIwIDAgMTEuMS05IDIwLTIwIDIweiJdfSxWQ3Q9e3ByZWZpeDoiZmFiIixpY29uTmFtZToidWx0cmFseXRpY3MteW9sbyIsaWNvbjpbNTEyLDUxMixbXSwiZTg2ZiIsIk0zODMuNSAxMC44YzYxLjgtLjIgMTEyLjMgNTAuNiAxMTIuMyAxMTIuOS0uMiAyLjcgMCAwLS4xIDMuM2wuMyAuM2MtMS41IDg5LjktNTMgMTY4LjQtMTI3LjQgMjA4LjVsMCA1Mi44YzAgNjIuNi01MS4xIDExMy41LTExMy43IDExMi45LTYyLS42LTExMS40LTUyLjItMTExLjQtMTE0LjNsMC01MS4yYy00MC43LTIxLjktNzQuNS01NS4yLTk3LTk1LjYgMjMuMiAxNi41IDUxLjcgMjYgODIgMjUuOSA3OC42LS4yIDE0Mi4yLTY0IDE0Mi4zLTE0Mi41IC4xLTYyLjMgNTAuNS0xMTIuNyAxMTIuOS0xMTIuOXptLTI1NSAyMjUuOGExMTIuOSAxMTIuOSAwIDEgMSAwLTIyNS44IDExMi45IDExMi45IDAgMSAxIDAgMjI1Ljh6Il19LE44ZT17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzcXVhcmUtZHJpYmJibGUiLGljb246WzQ0OCw1MTIsWyJkcmliYmJsZS1zcXVhcmUiXSwiZjM5NyIsIk0xNjUuOSAxMzIuNWMtMzguMyAxOC02Ni44IDUzLjMtNzUuNyA5NS43IDYuMSAuMSA2Mi40IC4zIDEyNi40LTE2LjctMjIuNy00MC4yLTQ3LjEtNzQuMS01MC43LTc5em0yNi4xLTkuMWMzLjggNS4xIDI4LjYgMzguOSA1MSA4MCA0OC42LTE4LjMgNjkuMS00NS45IDcxLjYtNDkuNC0zMy42LTI5LjgtNzkuMy00MS4xLTEyMi42LTMwLjZ6TTI3Ny40IDM4MmMtMi0xMi0xMC01My44LTI5LjItMTAzLjYtNTUuMSAxOC44LTkzLjggNTYuNC0xMDguMSA4NS42IDQwLjUgMzEuNiA5My4zIDM2LjcgMTM3LjMgMTh6TTIyNy44IDIzMi42QzE1OS42IDI1MyA5My40IDI1Mi4yIDg3LjQgMjUybDAgNC4yYzAgMzUuMSAxMy4zIDY3LjEgMzUuMSA5MS40IDIyLjItMzcuOSA2Ny4xLTc3LjkgMTE2LjUtOTEuOC0zLjQtNy44LTcuMi0xNS41LTExLjEtMjMuMmwtLjEgMHptNzIuNSAxMzYuOWMzMC43LTIwLjcgNTIuNS01My42IDU4LjYtOTEuNi00LjYtMS41LTQyLjMtMTIuNy04NS4xLTUuOCAxNy45IDQ5LjEgMjUuMSA4OS4xIDI2LjUgOTcuNHptLTM0LjgtMTE5YzQ1LjUtNS43IDkwLjcgMy40IDk1LjIgNC40LS4zLTMyLjMtMTEuOC02MS45LTMwLjktODUuMS0yLjkgMy45LTI1LjggMzMuMi03Ni4zIDUzLjkgNC44IDkuOCA4LjMgMTcuOCAxMiAyNi44ek0zODQgMzJMNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NHpNMjI0IDk2YTE2MCAxNjAgMCAxIDEgMCAzMjAgMTYwIDE2MCAwIDEgMSAwLTMyMHoiXX0sVUN0PU44ZSxXQ3Q9e3ByZWZpeDoiZmFiIixpY29uTmFtZToidWlraXQiLGljb246WzQ0OCw1MTIsW10sImY0MDMiLCJNNDQzLjkgMTI4bDAgMjU2LTIyNS45IDEyOC0yMTgtMTI4IDAtMjE0LjMgODcuNiA0NS4xIDAgMTE3IDEzMy41IDc1LjUgMTM1LjgtNzUuNSAwLTE1MS0xMDEuMS01Ny42IDg3LjYtNTMuMSAxMDAuNSA1Ny45ek0zMDguNiA0OS4xbC04NC44LTQ5LjEtODguNiA1NC44IDg2IDQ3LjMgODcuNC01M3oiXX0sR0N0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InN1cGVycG93ZXJzIixpY29uOls0NDgsNTEyLFtdLCJmMmRkIiwiTTQ0OCAzMmMtODMuMyAxMS0xNjYuOCAyMi0yNTAgMzMtOTIgMTIuNS0xNjMuMyA4Ni43LTE2OSAxODAtMy4zIDU1LjUgMTggMTA5LjUgNTcuOCAxNDguMkwwIDQ4MGM4My4zLTExIDE2Ni41LTIyIDI0OS44LTMzIDkxLjgtMTIuNSAxNjMuMy04Ni44IDE2OC43LTE3OS44IDMuNS01NS41LTE4LTEwOS41LTU3LjctMTQ4LjJMNDQ4IDMyek0zNjguMyAyNjQuM2MtNC4yIDc5LjUtNzQgMTM5LjItMTUyLjggMTM0LjUtNzkuNS00LjctMTQwLjctNzEtMTM2LjMtMTUxIDQuNS03OS4yIDc0LjMtMTM5LjMgMTUzLTEzNC41IDc5LjMgNC43IDE0MC41IDcxIDEzNi4xIDE1MXoiXX0sS0N0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InlvdXR1YmUiLGljb246WzU3Niw1MTIsWzYxODAyXSwiZjE2NyIsIk01NDkuNyAxMjQuMUM1NDMuNSAxMDAuNCA1MjQuOSA4MS44IDUwMS40IDc1LjUgNDU4LjkgNjQgMjg4LjEgNjQgMjg4LjEgNjRTMTE3LjMgNjQgNzQuNyA3NS41QzUxLjIgODEuOCAzMi43IDEwMC40IDI2LjQgMTI0LjEgMTUgMTY3IDE1IDI1Ni40IDE1IDI1Ni40czAgODkuNCAxMS40IDEzMi4zYzYuMyAyMy42IDI0LjggNDEuNSA0OC4zIDQ3LjggNDIuNiAxMS41IDIxMy40IDExLjUgMjEzLjQgMTEuNXMxNzAuOCAwIDIxMy40LTExLjVjMjMuNS02LjMgNDItMjQuMiA0OC4zLTQ3LjggMTEuNC00Mi45IDExLjQtMTMyLjMgMTEuNC0xMzIuM3MwLTg5LjQtMTEuNC0xMzIuM3pNMjMyLjIgMzM3LjZsMC0xNjIuNCAxNDIuNyA4MS4yLTE0Mi43IDgxLjJ6Il19LFlDdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJlbWJlciIsaWNvbjpbNjQwLDUxMixbXSwiZjQyMyIsIk02MzkuOSAyNTQuNmMtMS4xLTEwLjctMTAuNy02LjgtMTAuNy02LjhzLTE1LjYgMTIuMS0yOS4zIDEwLjdjLTEzLjctMS4zLTkuNC0zMi05LjQtMzJzMy0yOC4xLTUuMS0zMC40Yy04LjEtMi40LTE4IDcuMy0xOCA3LjNzLTEyLjQgMTMuNy0xOC4zIDMxLjJsLTEuNiAuNXMxLjktMzAuNi0uMy0zNy42Yy0xLjYtMy41LTE2LjQtMy4yLTE4LjggM3MtMTQuMiA0OS4yLTE1IDY3LjJjMCAwLTIzLjEgMTkuNi00My4zIDIyLjhzLTI1LTkuNC0yNS05LjQgNTQuOC0xNS4zIDUyLjktNTkuMS00NC4yLTI3LjYtNDktMjRjLTQuNiAzLjUtMjkuNCAxOC40LTM2LjYgNTkuNy0uMiAxLjQtLjcgNy41LS43IDcuNXMtMjEuMiAxNC4yLTMzIDE4YzAgMCAzMy01NS42LTcuMy04MC45LTExLjQtNi44LTIxLjMtLjUtMjcuMiA1LjMgMTMuNi0xNy4zIDQ2LjQtNjQuMiAzNi45LTEwNS4yLTUuOC0yNC40LTE4LTI3LjEtMjkuMi0yMy4xLTE3IDYuNy0yMy41IDE2LjctMjMuNSAxNi43cy0yMiAzMi0yNy4xIDc5LjUtMTIuNiAxMDUuMS0xMi42IDEwNS4xLTEwLjUgMTAuMi0yMC4yIDEwLjctNS40LTI4LjctNS40LTI4LjcgNy41LTQ0LjYgNy01Mi4xLTEuMS0xMS42LTkuOS0xNC4yYy04LjktMi43LTE4LjUgOC42LTE4LjUgOC42cy0yNS41IDM4LjctMjcuNyA0NC42bC0xLjMgMi40LTEuMy0xLjZzMTgtNTIuNyAuOC01My41LTI4LjUgMTguOC0yOC41IDE4LjgtMTkuNiAzMi44LTIwLjQgMzYuNWwtMS4zLTEuNnM4LjEtMzguMiA2LjQtNDcuNmMtMS42LTkuNC0xMC41LTcuNS0xMC41LTcuNXMtMTEuMy0xLjMtMTQuMiA1LjktMTMuNyA1NS4zLTE1IDcwLjdjMCAwLTI4LjIgMjAuMi00Ni44IDIwLjQtMTguNSAuMy0xNi43LTExLjgtMTYuNy0xMS44czY4LTIzLjMgNDkuNC02OS4yYy04LjMtMTEuOC0xOC0xNS41LTMxLjctMTUuMy0xMy43IC4zLTMwLjMgOC42LTQxLjMgMzMuMy01LjMgMTEuOC02LjggMjMtNy44IDMxLjUgMCAwLTEyLjMgMi40LTE4LjgtMi45cy0xMCAwLTEwIDAtMTEuMiAxNC0uMSAxOC4zIDI4LjEgNi4xIDI4LjEgNi4xYzEuNiA3LjUgNi4yIDE5LjUgMTkuNiAyOS43IDIwLjIgMTUuMyA1OC44LTEuMyA1OC44LTEuM2wxNS45LTguOHMuNSAxNC42IDEyLjEgMTYuNyAxNi40IDEgMzYuNS00Ny45YzExLjgtMjUgMTIuNi0yMy42IDEyLjYtMjMuNmwxLjMtLjNzLTkuMSA0Ni44LTUuNiA1OS43QzE4Ny43IDMxOS40IDIwMyAzMTggMjAzIDMxOHM4LjMgMi40IDE1LTIxLjIgMTkuNi00OS45IDE5LjYtNDkuOWwxLjYgMHMtNS42IDQ4LjEgMyA2My43IDMwLjkgNS4zIDMwLjkgNS4zIDE1LjYtNy44IDE4LTEwLjJjMCAwIDE4LjUgMTUuOCA0NC42IDEyLjkgNTguMy0xMS41IDc5LjEtMjUuOSA3OS4xLTI1LjlzMTAgMjQuNCA0MS4xIDI2LjdjMzUuNSAyLjcgNTQuOC0xOC42IDU0LjgtMTguNnMtLjMgMTMuNSAxMi4xIDE4LjYgMjAuNy0yMi44IDIwLjctMjIuOGwyMC43LTU3LjIgMS45IDBzMS4xIDM3LjMgMjEuNSA0My4yIDQ3LTEzLjcgNDctMTMuNyA2LjQtMy41IDUuMy0xNC4zem0tNTc4IDUuM2MuOC0zMiAyMS44LTQ1LjkgMjktMzkgNy4zIDcgNC42IDIyLTkuMSAzMS40LTEzLjcgOS41LTE5LjkgNy42LTE5LjkgNy42ek0zMzQuNyAxMzYuMXMxOS4xLTQ5LjcgMjMuNi0yNS41LTQwIDk2LjItNDAgOTYuMmMuNS0xNi4yIDE2LjQtNzAuNyAxNi40LTcwLjd6bTIyLjggMTM4LjRjLTEyLjYgMzMtNDMuMyAxOS42LTQzLjMgMTkuNnMtMy41LTExLjggNi40LTQ0LjkgMzMuMy0yMC4yIDMzLjMtMjAuMiAxNi4yIDEyLjQgMy42IDQ1LjV6bTg0LjYtMTQuNnMtMy0xMC41IDguMS0zMC42YzExLTIwLjIgMTkuNi05LjEgMTkuNi05LjFzOS40IDEwLjItMS4zIDI1LjUtMjYuNCAxNC4yLTI2LjQgMTQuMnoiXX0sWkN0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImJvb3RzdHJhcCIsaWNvbjpbNTc2LDUxMixbXSwiZjgzNiIsIk0zMzMuNSAyMDEuNGMwLTIyLjEtMTUuNi0zNC4zLTQzLTM0LjNsLTUwLjQgMCAwIDcxLjIgNDIuNSAwYzMyLjgtLjEgNTAuOS0xMy4zIDUwLjktMzYuOXpNNTE3IDE4OC42Yy05LjUtMzAuOS0xMC45LTY4LjgtOS44LTk4LjEgMS4xLTMwLjUtMjIuNy01OC41LTU0LjctNTguNUwxMjMuNyAzMmMtMzIuMSAwLTU1LjggMjguMS01NC43IDU4LjUgMSAyOS4zLS4zIDY3LjItOS44IDk4LjEtOS42IDMxLTI1LjcgNTAuNi01Mi4yIDUzLjFsMCAyOC41YzI2LjQgMi41IDQyLjYgMjIuMSA1Mi4yIDUzLjEgOS41IDMwLjkgMTAuOSA2OC44IDkuOCA5OC4xLTEuMSAzMC41IDIyLjcgNTguNSA1NC43IDU4LjVsMzI4LjcgMGMzMi4xIDAgNTUuOC0yOC4xIDU0LjctNTguNS0xLTI5LjMgLjMtNjcuMiA5LjgtOTguMSA5LjYtMzEgMjUuNy01MC42IDUyLjEtNTMuMWwwLTI4LjVjLTI2LjMtMi41LTQyLjUtMjIuMS01Mi01My4xek0zMDAuMiAzNzUuMWwtOTcuOSAwIDAtMjM4LjMgOTcuNCAwYzQzLjMgMCA3MS43IDIzLjQgNzEuNyA1OS40IDAgMjUuMy0xOS4xIDQ3LjktNDMuNSA1MS44bDAgMS4zYzMzLjIgMy42IDU1LjUgMjYuNiA1NS41IDU4LjMgMCA0Mi4xLTMxLjMgNjcuNS04My4yIDY3LjV6bS0xMC0xMDguN2wtNTAuMSAwIDAgNzguNCA1Mi4zIDBjMzQuMiAwIDUyLjMtMTMuNyA1Mi4zLTM5LjUgMC0yNS43LTE4LjYtMzguOS01NC41LTM4Ljl6Il19LFhDdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJpdHVuZXMiLGljb246WzQ0OCw1MTIsW10sImYzYjQiLCJNMjIzLjYgODAuM2ExNzEuMyAxNzEuMyAwIDEgMCAuMiAzNDIuNSAxNzEuMyAxNzEuMyAwIDEgMCAtLjItMzQyLjV6bTc5LjQgMjQwYy0zLjIgMTMuNi0xMy41IDIxLjItMjcuMyAyMy44LTEyLjEgMi4yLTIyLjIgMi44LTMxLjktNS0xMS44LTEwLTEyLTI2LjQtMS40LTM2LjggOC40LTggMjAuMy05LjYgMzgtMTIuOCAzLS41IDUuNi0xLjIgNy43LTMuNyAzLjItMy42IDIuMi0yIDIuMi04MC44IDAtNS42LTIuNy03LjEtOC40LTYuMS00IC43LTkxLjkgMTcuMS05MS45IDE3LjEtNSAxLjEtNi43IDIuNi02LjcgOC4zIDAgMTE2LjEgLjUgMTEwLjgtMS4yIDExOC41LTIuMSA5LTcuNiAxNS44LTE0LjkgMTkuNi04LjMgNC42LTIzLjQgNi42LTMxLjQgNS4yLTIxLjQtNC0yOC45LTI4LjctMTQuNC00Mi45IDguNC04IDIwLjMtOS42IDM4LTEyLjggMy0uNSA1LjYtMS4yIDcuNy0zLjcgNS01LjcgLjktMTI3IDIuNi0xMzMuNyAuNC0yLjYgMS41LTQuOCAzLjUtNi40IDIuMS0xLjcgNS44LTIuNyA2LjctMi43IDEwMS0xOSAxMTMuMy0yMS40IDExNS4xLTIxLjQgNS43LS40IDkgMyA5IDguNy0uMSAxNzAuNiAuNCAxNjEuNC0xIDE2Ny42ek0zNDUuMiAzMkwxMDIuOCAzMkM0NS45IDMyIDAgNzcuOSAwIDEzNC44TDAgMzc3LjJDMCA0MzQuMSA0NS45IDQ4MCAxMDIuOCA0ODBsMjQyLjQgMGM1NyAwIDEwMi44LTQ1LjkgMTAyLjgtMTAyLjhsMC0yNDIuNEM0NDggNzcuOSA0MDIuMSAzMiAzNDUuMiAzMnpNMjIzLjYgNTlhMTkyLjUgMTkyLjUgMCAxIDEgMCAzODUgMTkyLjUgMTkyLjUgMCAxIDEgMC0zODV6Il19LFI4ZT17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzcXVhcmUteGluZyIsaWNvbjpbNDQ4LDUxMixbInhpbmctc3F1YXJlIl0sImYxNjkiLCJNNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjB6TTkzLjggMzIwLjJjLTUuNSAwLTguNy01LjMtNi0xMC4zbDQ5LjMtODYuN2MuMSAwIC4xLS4xIDAtLjJsLTMxLjQtNTRjLTMtNS42IC4yLTEwLjEgNi0xMC4xbDQ2LjYgMGM1LjIgMCA5LjUgMi45IDEyLjkgOC43bDMxLjkgNTUuM2MtMS4zIDIuMy0xOCAzMS43LTUwLjEgODguMi0zLjUgNi4yLTcuNyA5LjEtMTIuNiA5LjFsLTQ2LjYgMHptMTYzLjUtMzMuNGwwIC4yIDY1LjUgMTE5YzIuOCA1LjEgLjEgMTAuMS02IDEwLjFsLTQ2LjYgMGMtNS41IDAtOS43LTIuOS0xMi45LTguN2wtNjYtMTIwLjNjMS44LTMuMiAyMi45LTQwLjQgNjMuMy0xMTEuNiAxMS43LTIwLjcgMjUuMS00NC4zIDQwLjEtNzAuOCAzLjMtNS44IDcuNC04LjcgMTIuNS04LjdsNDYuOSAwYzUuNy0uMSA4LjggNC43IDYgMTBMMjU3LjMgMjg2Ljh6Il19LFFDdD1SOGUsSkN0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImNzczMtYWx0IixpY29uOlszODQsNTEyLFtdLCJmMzhiIiwiTTAgMzJMMzQuOSA0MjcuOCAxOTIgNDgwIDM0OS4xIDQyNy44IDM4NCAzMiAwIDMyem0zMTMuMSA4MGwtNC44IDQ3LjMtMTE1LjMgNDkuMy0uMyAuMSAxMTEuNSAwLTEyLjggMTQ2LjYtOTguMiAyOC43LTk4LjgtMjkuMi02LjQtNzMuOSA0OC45IDAgMy4yIDM4LjMgNTIuNiAxMy4zIDU0LjctMTUuNCAzLjctNjEuNi0xNjYuMy0uNSAwLS4xLS4yIC4xLTMuNi00Ni4zIDExMi4xLTQ2LjcgNi41LTIuNy0xMjIuOSAwLTUuOC00Ny4zIDI0Mi4yIDB6Il19LGVUdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzcXVhcmVzcGFjZSIsaWNvbjpbNTEyLDUxMixbXSwiZjViZSIsIk0xODYuMSAzNDMuM2MtOS43IDkuNy05LjcgMjUuMyAwIDM0LjlzMjUuMyA5LjYgMzQuOSAwTDM3OC4zIDIyMS4xYzE5LjMtMTkuMyA1MC42LTE5LjMgNjkuOSAwczE5LjMgNTAuNiAwIDY5LjlMMjk0IDQ0NS4xYzE5LjMgMTkuMyA1MC41IDE5LjMgNjkuOCAwbDAgMCAxMTkuMy0xMTkuMmMzOC42LTM4LjYgMzguNi0xMDEuMSAwLTEzOS43LTM4LjYtMzguNi0xMDEuMi0zOC42LTEzOS43IDBMMTg2LjEgMzQzLjN6TTQzMC43IDIzOC41Yy05LjctOS43LTI1LjMtOS43LTM0LjkgMEwyMzguNSAzOTUuN2MtMTkuMyAxOS4zLTUwLjUgMTkuMy02OS44IDBsMCAwYy05LjYtOS42LTI1LjMtOS43LTM0LjkgMGwwIDBjLTkuNyA5LjYtOS43IDI1LjMgMCAzNC45bDAgMGMzOC42IDM4LjYgMTAxLjEgMzguNiAxMzkuNyAwTDQzMC43IDI3My41YzkuNi05LjcgOS42LTI1LjMgMC0zNC45em0tMjYyIDg3LjNMMzI1LjkgMTY4LjdjOS42LTkuNiA5LjYtMjUuMyAwLTM0LjktOS42LTkuNi0yNS4zLTkuNi0zNC45IDBMMTMzLjcgMjkwLjljLTE5LjMgMTkuMy01MC42IDE5LjMtNjkuOSAwbDAgMGMtMTkuMy0xOS4zLTE5LjMtNTAuNSAwLTY5LjhsMCAwIDE1NC4yLTE1NC4yYy0xOS4zLTE5LjMtNTAuNS0xOS4zLTY5LjggMGwwIDAtMTE5LjIgMTE5LjNjLTM4LjYgMzguNi0zOC42IDEwMS4xIDAgMTM5LjcgMzguNiAzOC42IDEwMS4xIDM4LjYgMTM5LjcgMHpNODEuMyAyNzMuNWM5LjYgOS42IDI1LjMgOS42IDM0LjkgMEwyNzMuNSAxMTYuM2MxOS4zLTE5LjMgNTAuNi0xOS4zIDY5LjggMGwwIDBjOS43IDkuNiAyNS4zIDkuNiAzNC45IDBzOS42LTI1LjMgMC0zNC45Yy0zOC42LTM4LjYtMTAxLjEtMzguNi0xMzkuNyAwTDgxLjMgMjM4LjVjLTkuNiA5LjYtOS42IDI1LjMgMCAzNC45bDAgMHoiXX0sdFR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InRyZWxsbyIsaWNvbjpbNDQ4LDUxMixbXSwiZjE4MSIsIk0zOTIuMyAzMkw1Ni4xIDMyYy0zMSAwLTU2LjEgMjUuMS01Ni4xIDU2LS4xIDAgMC00IDAgMzM2IDAgMzAuOSAyNS4xIDU2IDU2IDU2bDMzNi4yIDBjMzAuOC0uMiA1NS43LTI1LjIgNTUuNy01NmwwLTMzNmMuMS0zMC44LTI0LjgtNTUuOC01NS42LTU2ek0xOTcgMzcxLjNjLS4yIDE0LjctMTIuMSAyNi42LTI2LjkgMjYuNmwtODIuNyAwYy0xNC44IC4xLTI2LjktMTEuOC0yNy0yNi42bDAtMjU0LjJjMC0xNC44IDEyLTI2LjkgMjYuOS0yNi45bDgyLjkgMGMxNC44IDAgMjYuOSAxMiAyNi45IDI2LjlsMCAyNTQuMi0uMSAwem0xOTMuMS0xMTJjMCAxNC44LTEyIDI2LjktMjYuOSAyNi45bC04MSAwYy0xNC44IDAtMjYuOS0xMi0yNi45LTI2LjlsMC0xNDIuMWMwLTE0LjggMTItMjYuOSAyNi44LTI2LjlsODEuMSAwYzE0LjggMCAyNi45IDEyIDI2LjkgMjYuOWwwIDE0Mi4xeiJdfSxhVHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToidmlhZGVvIixpY29uOls0NDgsNTEyLFtdLCJmMmE5IiwiTTI3Ni40IDE1MC41bDAgLjdjLTE3LjktNTIuNi00Mi42LTEwMy40LTcwLjgtMTUxLjIgNDMuMyAyOS4yIDY3IDEwMCA3MC44IDE1MC41em0zMi43IDEyMS43YzcuNiAxOC4yIDExIDM3LjUgMTEgNTcgMCA3Ny43LTU3LjggMTQxLTEzNy44IDEzOS40bDMuOC0uM2M3NC4yLTQ2LjcgMTA5LjMtMTE4LjYgMTA5LjMtMjA1LjEgMC0zOC4xLTYuNS03NS45LTE4LjktMTEyIDEgMTEuNyAxIDIzLjcgMSAzNS40IDAgOTEuOC0xOC4xIDI0MS42LTExNi42IDI4MC02NS43LTExLjQtMTExLjMtNjguNi0xMTEuMy0xMzcuNCAwLTc1LjYgNTcuNC0xNDIuMyAxMzUuNC0xNDIuMyAxNi44IDAgMzMuNyAzLjEgNDkuMSA5LjYgMS43LTE1LjEgNi41LTI5LjkgMTMuNC00My4zLTE5LjktNy4yLTQxLjItMTAuNy02Mi41LTEwLjctMTYxLjUgMC0yMzguNyAxOTUuOS0xMjkuOSAzMTMuNyA2Ny45IDc0LjYgMTkyIDczLjkgMjU5LjggMCA1Ni42LTYxLjMgNjAuOS0xNDIuNCAzNi40LTIwMS0xMi43IDgtMjcuMSAxMy45LTQyLjIgMTd6TTQxOC4zIDExLjdjLTMxIDY2LjUtODEuMyA0Ny4yLTExNS44IDgwLjEtMTIuNCAxMi0yMC42IDM0LTIwLjYgNTAuNSAwIDE0LjEgNC41IDI3LjEgMTIgMzguOCA0Ny40LTExIDk4LjMtNDYgMTE4LjItOTAuNy0uNyA1LjUtNC44IDE0LjQtNy4yIDE5LjItMjAuMyAzNS43LTY0LjYgNjUuNi05OS43IDg0LjkgMTQuOCAxNC40IDMzLjcgMjUuOCA1NSAyNS44IDc5IDAgMTEwLjEtMTM0LjYgNTguMS0yMDguNnoiXX0sc1R0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNlYXJjaGVuZ2luIixpY29uOls0NDgsNTEyLFtdLCJmM2ViIiwiTTIxNC42IDEzMC4zbC02Ny4yIDI4LjIgMC0xMTUuMy01NC43IDE5MC4zIDU0LjctMjQuMiAwIDEzMC4zIDY3LjItMjA5LjN6TTEzMS40IDMzLjZsLTEuMyA0LjctMTUuMiA1Mi45Qzc0LjYgMTA2LjcgNDYgMTQ1LjggNDYgMTkxLjUgNDYgMjQzLjggODAuMyAyODcuNCAxMjkuNCAyOTdsMCA1My42QzUxLjUgMzQwLjEtNiAyNzIuNC02IDE5MS42LTYgMTExLjEgNTMuOCA0NC40IDEzMS40IDMzLjZ6TTQ0Mi44IDQ4MC44Yy0xMS4yIDExLjItMjMuMSAxMi4zLTI4LjYgMTAuNS01LjQtMS44LTI3LjEtMTkuOS02MC40LTQ0LjQtMzMuMy0yNC42LTMzLjYtMzUuNy00My01Ni43LTkuNC0yMC45LTMwLjQtNDIuNi01Ny41LTUyLjRsLTkuNy0xNC43Yy0yNC43IDE2LjktNTMgMjYuOS04MS4zIDI4LjdsMi4xLTYuNiAxNS45LTQ5LjVjNDYuNS0xMS45IDgwLjktNTQgODAuOS0xMDQuMiAwLTU0LjUtMzguNC0xMDIuMS05Ni0xMDcuMWwwLTUyLjFjODMuMiA1LjEgMTQ4LjggNzQuNSAxNDguOCAxNTkuMyAwIDMzLjYtMTEuMiA2NC43LTI5IDkwLjRsMTQuNiA5LjZjOS44IDI3LjEgMzEuNSA0OCA1Mi40IDU3LjRzMzIuMiA5LjcgNTYuOCA0M2MyNC42IDMzLjIgNDIuNyA1NC45IDQ0LjUgNjAuM3MuNyAxNy4zLTEwLjUgMjguNXptLTkuOS0xNy45YzAtNC40LTMuNi04LTgtOHMtOCAzLjYtOCA4IDMuNiA4IDggOCA4LTMuNiA4LTh6Il19LGlUdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ1bnJlYWwtZW5naW5lIixpY29uOls1MTIsNTEyLFtdLCJlODVjIiwiTTI1NiA1MTJhMjU2IDI1NiAwIDEgMCAwLTUxMiAyNTYgMjU2IDAgMSAwIDAgNTEyem02NS41LTExMy43bC0yNS4xLTI4LjMtNDIuNCA0Mi42Yy0yNC4xLS4zLTQ3LjktNi4yLTY5LjMtMTcuMnMtNDAuMS0yNi45LTU0LjUtNDYuM2M0LjUgMS40IDkuMiAyLjMgMTMuOSAyLjYgNi45IC4xIDE0LjUtMi40IDE0LjUtMTQuMWwwLTExNS4xYy4xLTMtLjUtNS45LTEuNy04LjZzLTMuMS01LTUuNC02LjktNS0zLjEtNy45LTMuNy01LjktLjUtOC44IC4yYy0xOS42IDQuNS0zNS4zIDUzLjUtMzUuMyA1My41LS4yLTIyLjYgNC41LTQ1IDEzLjgtNjUuNnMyMy0zOSA0MC4xLTUzLjhjMjIuNS0xOS41IDUwLjEtMzIuMiA3OS42LTM2LjctMjEuNCAxMi4yLTMzLjUgMzIuMS0zMy41IDQ4LjkgMCAyNi45IDE2LjIgMjMuNiAyMSAxOS43bDAgMTU1LjNjLjggMS45IDEuOSAzLjggMy4yIDUuNSAyLjEgMyA1IDUuNCA4LjIgN3M2LjkgMi41IDEwLjUgMi41YzE2LjIgMCAzNy4zLTE4LjUgMzcuMy0xOC41bDAtMTI1LjdjMC0xMi44LTkuNi0yOC4yLTE5LjMtMzMuNSAwIDAgMTcuOS0zLjIgMzEuNyA3LjQgMi42LTMuMiA1LjMtNi4yIDguMi05LjEgMzIuMi0zMS42IDYyLjUtNDAuNiA4Ny43LTQ1LjEgMCAwLTQ1LjkgMzYuMS00NS45IDg0LjUgMCAzNiAuOSAxMjMuOCAuOSAxMjMuOCAxNyAxNi40IDQyLjQtNy4zIDY1LjItMzAuOC00LjQgMjEuMy0yNCA3NS45LTg2LjYgMTA1LjR6Il19LHJUdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJwYXlwYWwiLGljb246WzM4NCw1MTIsW10sImYxZWQiLCJNMTExLjkgMjk1LjljLTMuNSAxOS4yLTE3LjQgMTA4LjctMjEuNSAxMzQtLjMgMS44LTEgMi41LTMgMi41bC03NC42IDBjLTcuNiAwLTEzLjEtNi42LTEyLjEtMTMuOUw1OS4zIDQ2LjZjMS41LTkuNiAxMC4xLTE2LjkgMjAtMTYuOSAxNTIuMyAwIDE2NS4xLTMuNyAyMDQgMTEuNCA2MC4xIDIzLjMgNjUuNiA3OS41IDQ0IDE0MC4zLTIxLjUgNjIuNi03Mi41IDg5LjUtMTQwLjEgOTAuMy00My40IC43LTY5LjUtNy03NS4zIDI0LjJ6TTM1Ny42IDE1MmMtMS44LTEuMy0yLjUtMS44LTMgMS4zLTIgMTEuNC01LjEgMjIuNS04LjggMzMuNi0zOS45IDExMy44LTE1MC41IDEwMy45LTIwNC41IDEwMy45LTYuMSAwLTEwLjEgMy4zLTEwLjkgOS40LTIyLjYgMTQwLjQtMjcuMSAxNjkuNy0yNy4xIDE2OS43LTEgNy4xIDMuNSAxMi45IDEwLjYgMTIuOWw2My41IDBjOC42IDAgMTUuNy02LjMgMTcuNC0xNC45IC43LTUuNC0xLjEgNi4xIDE0LjQtOTEuMyA0LjYtMjIgMTQuMy0xOS43IDI5LjMtMTkuNyA3MSAwIDEyNi40LTI4LjggMTQyLjktMTEyLjMgNi41LTM0LjggNC42LTcxLjQtMjMuOC05Mi42eiJdfSxvVHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToic3F1YXJlLWJsdWVza3kiLGljb246WzQ0OCw1MTIsW10sImU2YTMiLCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMnpNMjI0IDI0Ny40YzE0LjUtMzAgNTQtODUuOCA5MC43LTExMy4zIDI2LjUtMTkuOSA2OS4zLTM1LjIgNjkuMyAxMy43IDAgOS44LTUuNiA4Mi4xLTguOSA5My44LTExLjQgNDAuOC01MyA1MS4yLTkwIDQ0LjkgNjQuNyAxMSA4MS4yIDQ3LjUgNDUuNiA4NC02Ny41IDY5LjMtOTctMTcuNC0xMDQuNi0zOS42bC0uMy0uOWMtLjktMi42LTEuNC00LjEtMS44LTQuMXMtLjkgMS41LTEuOCA0LjFjLS4xIC4zLS4yIC42LS4zIC45LTcuNiAyMi4yLTM3LjEgMTA4LjgtMTA0LjYgMzkuNi0zNS41LTM2LjUtMTkuMS03MyA0NS42LTg0LTM3IDYuMy03OC42LTQuMS05MC00NC45LTMuMy0xMS43LTguOS04NC04LjktOTMuOCAwLTQ4LjkgNDIuOS0zMy41IDY5LjMtMTMuNyAzNi43IDI3LjUgNzYuMiA4My40IDkwLjcgMTEzLjN6Il19LG5UdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJkLWFuZC1kLWJleW9uZCIsaWNvbjpbNjQwLDUxMixbXSwiZjZjYSIsIk0zMTMuOCAyNDEuNWMxMy44IDAgMjEtMTAuMSAyNC44LTE3LjktMS0xLjEtNS00LjItNy40LTYuNi0yLjQgNC4zLTguMiAxMC43LTEzLjkgMTAuNy0xMC4yIDAtMTUuNC0xNC43LTMuMi0yNi42LS41LS4yLTQuMy0xLjgtOCAyLjQgMC0zIDEtNS4xIDIuMS02LjYtMy41IDEuMy05LjggNS42LTExLjQgNy45IC4yLTUuOCAxLjYtNy41IC42LTlsLS4yLS4ycy04LjUgNS42LTkuMyAxNC43YzAgMCAxLjEtMS42IDIuMS0xLjkgLjYtLjMgMS4zIDAgLjYgMS45LS4yIC42LTUuOCAxNS43IDUuMSAyNi0uNi0xLjYtMS45LTcuNiAyLjQtMS45LS4zIC4xIDUuOCA3LjEgMTUuNyA3LjF6bTUyLjQtMjEuMWMwLTQtNC45LTQuNC01LjYtNC41IDIgMy45IC45IDcuNSAuMiA5IDIuNS0uNCA1LjQtMS42IDUuNC00LjV6bTEwLjMgNS4yYzAtNi40LTYuMi0xMS40LTEzLjUtMTAuNyA4IDEuMyA1LjYgMTMuOC01IDExLjQgMy43LTIuNiAzLjItOS45LTEuMy0xMi41IDEuNCA0LjItMyA4LjItNy40IDQuNi0yLjQtMS45LTgtNi42LTEwLjYtOC42LTIuNC0yLjEtNS41LTEtNi42LTEuOC0xLjMtMS4xLS41LTMuOC0yLjItNS0xLjYtLjgtMy0uMy00LjgtMS0xLjYtLjYtMi43LTEuOS0yLjYtMy41LTIuNSA0LjQgMy40IDYuMyA0LjUgOC41IDEgMS45LS44IDQuOCA0IDguNSAxNC44IDExLjYgOS4xIDggMTAuNCAxOC4xIC42IDQuMyA0LjIgNi43IDYuNCA3LjQtMi4xLTEuOS0yLjktNi40IDAtOS4zIDAgMTMuOSAxOS4yIDEzLjMgMjMuMSA2LjQtMi40IDEuMS03LS4yLTktMS45IDcuNyAxIDE0LjItNC4xIDE0LjYtMTAuNnptLTM5LjQtMTguNGMyIC44IDEuNiAuNyA2LjQgNC41IDEwLjItMjQuNSAyMS43LTE1LjcgMjItMTUuNSAyLjItMS45IDkuOC0zLjggMTMuOC0yLjctMi40LTIuNy03LjUtNi4yLTEzLjMtNi4yLTQuNyAwLTcuNCAyLjItOCAxLjMtLjgtMS40IDMuMi0zLjQgMy4yLTMuNC01LjQgLjItOS42IDYuNy0xMS4yIDUuOS0xLjEtLjUgMS40LTMuNyAxLjQtMy43LTUuMSAyLjktOS4zIDkuMS0xMC4yIDEzIDQuNi01LjggMTMuOC05LjggMTkuNy05LTEwLjUgLjUtMTkuNSA5LjctMjMuOCAxNS44em0yNDIuNSA1MS45Yy0yMC43IDAtNDAgMS4zLTUwLjMgMi4xbDcuNCA4LjIgMCA3Ny4yLTcuNCA4LjJjMTAuNCAuOCAzMC45IDIuMSA1MS42IDIuMSA0Mi4xIDAgNTkuMS0yMC43IDU5LjEtNDguOSAwLTI5LjMtMjMuMi00OC45LTYwLjQtNDguOXptLTE1LjEgNzUuNmwwLTUzLjNjMzAuMS0zLjMgNDYuOCAzLjggNDYuOCAyNi4zIDAgMjUuNi0yMS40IDMwLjItNDYuOCAyN3pNMzAxLjYgMTgxYy0xLTMuNC0uMi02LjkgMS4xLTkuNCAxIDMgMi42IDYuNCA3LjUgOS0uNS0yLjQtLjItNS42IC41LTgtMS40LTUuNCAyLjEtOS45IDYuNC05LjkgNi45IDAgOC41IDguOCA0LjcgMTQuNCAyLjEgMy4yIDUuNSA1LjYgNy43IDcuOCAzLjItMy43IDUuNS05LjUgNS41LTEzLjggMC04LjItNS41LTE1LjktMTYuNy0xNi41LTIwLS45LTIwLjIgMTYuNi0yMCAxOC45IC41IDUuMiAzLjQgNy44IDMuMyA3LjV6bS0uNCA2Yy0uNSAxLjgtNyAzLjctMTAuMiA2LjkgNC44LTEgNy0uMiA3LjggMS44IC41IDEuNC0uMiAzLjQtLjUgNS42IDEuNi0xLjggNy01LjUgMTEtNi4yLTEtLjMtMy40LS44LTQuMy0uOCAyLjktMy40IDkuMy00LjUgMTIuOC0zLjctMi4yLS4yLTYuNyAxLjEtOC41IDIuNiAxLjYgLjMgMyAuNiA0LjMgMS4xLTIuMSAuOC00LjggMy40LTUuOCA2LjEgNy01IDEzLjEgNS4yIDcgOC4yIC44IC4yIDIuNyAwIDMuNS0uNS0uMyAxLjEtMS45IDMtMyAzLjQgMi45IDAgNy0xLjkgOC4yLTQuNiAwIDAtMS44IC42LTIuNi0uMnMuMy00LjMgLjMtNC4zYy0yLjMgMi45LTMuNC0xLjMtMS4zLTQuMi0xLS4zLTMuNS0uNi00LjYtLjUgMy4yLTEuMSAxMC40LTEuOCAxMS4yLS4zIC42IDEuMS0xIDMuNC0xIDMuNCA0LS41IDguMyAxLjEgNi43IDUuMSAyLjktMS40IDUuNS01LjkgNC44LTEwLjQtLjMgMS0xLjYgMi40LTIuOSAyLjcgLjItMS40LTEtMi4yLTEuOS0yLjYgMS43LTkuNi0xNC42LTE0LjItMTQuMS0yMy45LTEgMS4zLTEuOCA1LS44IDcuMSAyLjcgMy4yIDguNyA2LjcgMTAuMSAxMi4yLTIuNi02LjQtMTUuMS0xMS40LTE0LjYtMjAuMi0xLjYgMS42LTIuNiA3LjgtMS4zIDExIDIuNCAxLjQgNC41IDMuOCA0LjggNi4xLTIuMi01LjEtMTEuNC02LjEtMTMuOS0xMi4yLS42IDIuMi0uMyA1IDEgNi43IDAgMC0yLjItLjgtNy0uNiAxLjcgLjYgNS4xIDMuNSA0LjggNS4yem0yNS45IDcuNGMtMi43IDAtMy41LTIuMS00LjItNC4zIDMuMyAxLjMgNC4yIDQuMyA0LjIgNC4zem0zOC45IDMuN2wtMS0uNmMtMS4xLTEtMi45LTEuNC00LjctMS40LTIuOSAwLTUuOCAxLjMtNy41IDMuNC0uOCAuOC0xLjQgMS44LTIuMSAyLjZsMCAxNS43YzMuNSAyLjYgNy4xLTIuOSAzLTcuMiAxLjUgLjMgNC42IDIuNyA1LjEgMy4yIDAgMCAyLjYtLjUgNS0uNSAyLjEgMCAzLjkgLjMgNS42IDEuMWwwLTE4LjRjLTEuMSAuNS0yLjIgMS0yLjcgMS40bC0uNyAuN3pNNzkuOSAzMDUuOWMxNy4yLTQuNiAxNi4yLTE4IDE2LjItMTkuOSAwLTIwLjYtMjQuMS0yNS0zNy0yNWwtNTYuMSAwIDguMyA4LjYgMCAyOS41LTExLjMgMCAxMS40IDE0LjYgMCAzMi4zLTguNCA4LjZjNjEuNyAwIDczLjggMS41IDg2LjQtNS45IDYuNy00IDkuOS05LjggOS45LTE3LjYgMC01LjEgMi42LTE4LjgtMTkuNC0yNS4yek0zOC42IDI3OC40YzIwIDAgMjkuNi0uOCAyOS42IDkuMWwwIDNjMCAxMi4xLTE5IDguOC0yOS42IDguOGwwLTIwLjl6bTAgNTkuMmwwLTIyLjZjMTIuMiAwIDMyLjctMi4zIDMyLjcgOC44bDAgNC41IC4yIDBjMCAxMS4yLTEyLjUgOS4zLTMyLjkgOS4zem0xMDEuMi0xOS4zbDIzLjEgLjIgMC0uMiAxNC4xLTIxLjItMzcuMiAwIDAtMTQuOSA1Mi40IDAtMTQuMS0yMSAwLS4yLTczLjUgLjIgNy40IDguMiAwIDc3LjEtNy40IDguMiA4MS4yIDAgMTQuMS0yMS4yLTYwLjEgLjIgMC0xNS40em0yMTQuNy02MC4xYy03My45IDAtNzcuNSA5OS4zLS4zIDk5LjMgNzcuOSAwIDc0LjEtOTkuMyAuMy05OS4zem0tLjMgNzcuNWMtMzcuNCAwLTM2LjktNTUuMyAuMi01NS4zIDM2LjggLjEgMzguOCA1NS4zLS4yIDU1LjN6bS05MS4zLTguM2w0NC4xLTY2LjItNDEuNyAwIDYuMSA3LjItMjAuNSAzNy4yLS4zIDAtMjEtMzcuMiA2LjQtNy4yLTQ0LjkgMCA0NC4xIDY1LjggLjIgMTkuNC03LjcgOC4yIDQyLjYgMC03LjItOC4yLS4yLTE5ek0yMzQuNSAxNzYuMWMxLjYgMS4zIDIuOSAyLjQgMi45IDYuNmwwIDM4LjhjMCA0LjItLjggNS4zLTIuNyA2LjQtLjEgLjEtNy41IDQuNS03LjkgNC42bDM1LjEgMGMxMCAwIDE3LjQtMS41IDI2LTguNi0uNi01IC4yLTkuNSAuOC0xMiAwLS4yLTEuOCAxLjQtMi43IDMuNSAwLTUuNyAxLjYtMTUuNCA5LjYtMjAuNS0uMSAwLTMuNy0uOC05IDEuMSAyLTMuMSAxMC03LjkgMTAuNC03LjktOC4yLTI2LTM4LTIyLjktMzIuMi0yMi45LTMwLjkgMC0zMi42IC4zLTM5LjktNCAuMSAuOCAuNSA4LjIgOS42IDE0Ljl6bTIxLjUgNS41YzQuNiAwIDIzLjEtMy4zIDIzLjEgMTcuMyAwIDIwLjctMTguNCAxNy4zLTIzLjEgMTcuM2wwLTM0LjZ6bTIyOC45IDc5LjZsNyA4LjMgMCA0Mi41LS4zIDBjLTUuNC0xNC40LTQyLjMtNDEuNS00NS4yLTUwLjlsLTMxLjYgMCA3LjQgOC41IDAgNzYuOS03LjIgOC4zIDM5IDAtNy40LTguMiAwLTQ3LjQgLjMgMGMzLjcgMTAuNiA0NC41IDQyLjkgNDguNSA1NS42bDIxLjMgMCAwLTg1LjIgNy40LTguMy0zOS4yLS4xek0zNzguMiAxNjUuMWMtMzIuMiAwLTMyLjggLjItMzkuOS00IC4xIC43IC41IDguMyA5LjYgMTQuOSAzLjEgMiAyLjkgNC4zIDIuOSA5LjUgMS44LTEuMSAzLjgtMi4yIDYuMS0zLTEuMSAxLjEtMi43IDIuNy0zLjUgNC41IDEtMS4xIDcuNS01LjEgMTQuNi0zLjUtMS42IC4zLTQgMS4xLTYuMSAyLjkgLjEgMCAyLjEtMS4xIDcuNS0uM2wwLTQuM2M0LjcgMCAyMy4xLTMuNCAyMy4xIDE3LjMgMCAyMC41LTE4LjUgMTcuMy0xOS43IDE3LjMgNS43IDQuNCA1LjggMTIgMi4yIDE2LjNsLjMgMGMzMy40IDAgMzYuNy0yNy4zIDM2LjctMzQgMC0zLjgtMS4xLTMyLTMzLjgtMzMuNnoiXX0sbFR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6Im1pY3Jvc29mdCIsaWNvbjpbNDQ4LDUxMixbXSwiZjNjYSIsIk0wIDMybDIxNC42IDAgMCAyMTQuNi0yMTQuNiAwIDAtMjE0LjZ6bTIzMy40IDBsMjE0LjYgMCAwIDIxNC42LTIxNC42IDAgMC0yMTQuNnpNMCAyNjUuNGwyMTQuNiAwIDAgMjE0LjYtMjE0LjYgMCAwLTIxNC42em0yMzMuNCAwbDIxNC42IDAgMCAyMTQuNi0yMTQuNiAwIDAtMjE0LjZ6Il19LGNUdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJmbHkiLGljb246WzMyMCw1MTIsW10sImY0MTciLCJNMTY1LjkgNDI3LjhjMTIuOSAxMS43IDMzLjcgMzMuMyAzMy4yIDUwLjcgMCAuOC0uMSAxLjYtLjEgMi41LTEuOCAxOS44LTE4LjggMzEuMS0zOS4xIDMxLTI1LS4xLTM5LjktMTYuOC0zOC43LTM1LjggMS0xNi4yIDIwLjUtMzYuNyAzMi40LTQ3LjYgMi4zLTIuMSAyLjctMi43IDUuNi0zLjYgMy40IDAgMy45IC4zIDYuNyAyLjh6TTMwMCA2Ny4zYy0xNi4zLTI1LjctMzguNi00MC42LTYzLjMtNTIuMS0yNS41LTEwLjctNTQuNi0xNS40LTc2LjYtMTUuMi00NC4xIDAtNzEuMiAxMy4yLTgxLjEgMTcuMy01My42IDI3LjktODQuNCA2OS45LTgyLjkgMTQxLjMgNy4xIDgyLjIgOTcgMTc2IDE1NS44IDIzMy44IDEuNyAxLjYgNC41IDQuNSA2LjIgNS4xbDMuMyAuMWMyLjEtLjcgMS44LS41IDMuNS0yLjEgNTIuMy00OS4yIDE0MC43LTE0NS44IDE1NS45LTIxNS43IDctMzkuMiAzLjEtNzIuNS0yMC44LTExMi41ek0xNTQuOSAzNTEuOWMtMjgtNTEuMS02NS4yLTEzMC43LTY5LjMtMTg5LTMuNC00Ny41IDExLjQtMTMxLjIgNjkuMy0xMzYuN2wwIDMyNS43ek0yOTYuOCAxODBjLTE2LjQgNTYuOC03Ny4zIDEyOC0xMTguOSAxNzAuMyAyNy44LTUxLjkgNjUuMi0xMzMuMyA2Ny4yLTE5MS45IDEuNi00NS45LTkuOC0xMDUuOC00OC0xMzEuNCA4OC44IDE4LjMgMTE1LjUgOTguMSA5OS43IDE1M3oiXX0sZFR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImNjLXN0cmlwZSIsaWNvbjpbNTc2LDUxMixbXSwiZjFmNSIsIk00OTIuNCAyMjAuOGMtOC45IDAtMTguNyA2LjctMTguNyAyMi43bDM2LjcgMGMwLTE2LTkuMy0yMi43LTE4LTIyLjd6TTM3NSAyMjMuNGMtOC4yIDAtMTMuMyAyLjktMTcgN2wuMiA1Mi44YzMuNSAzLjcgOC41IDYuNyAxNi44IDYuNyAxMy4xIDAgMjEuOS0xNC4zIDIxLjktMzMuNCAwLTE4LjYtOS0zMy4yLTIxLjktMzMuMXpNNTI4IDMyTDQ4IDMyQzIxLjUgMzIgMCA1My41IDAgODBMMCA0MzJjMCAyNi41IDIxLjUgNDggNDggNDhsNDgwIDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC0zNTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTEyMi4yIDI4MS4xYzAgMjUuNi0yMC4zIDQwLjEtNDkuOSA0MC4zLTEyLjIgMC0yNS42LTIuNC0zOC44LTguMWwwLTMzLjljMTIgNi40IDI3LjEgMTEuMyAzOC45IDExLjMgNy45IDAgMTMuNi0yLjEgMTMuNi04LjcgMC0xNy01NC0xMC42LTU0LTQ5LjkgMC0yNS4yIDE5LjItNDAuMiA0OC00MC4yIDExLjggMCAyMy41IDEuOCAzNS4zIDYuNWwwIDMzLjRjLTEwLjgtNS44LTI0LjUtOS4xLTM1LjMtOS4xLTcuNSAwLTEyLjEgMi4yLTEyLjEgNy43IDAgMTYgNTQuMyA4LjQgNTQuMyA1MC43ek0xOTEgMjI0LjVsLTI3IDAgMCA1MC41YzAgMjAuOSAyMi41IDE0LjQgMjcgMTIuNmwwIDI4LjljLTQuNyAyLjYtMTMuMyA0LjctMjQuOSA0LjctMjEuMSAwLTM2LjktMTUuNS0zNi45LTM2LjVsLjItMTEzLjkgMzQuNy03LjQgMCAzMC44IDI2LjkgMCAwIDMwLjN6bTc0IDIuNGMtNC41LTEuNS0xOC43LTMuNi0yNy4xIDcuNGwwIDg0LjQtMzUuNSAwIDAtMTI0LjUgMzAuNyAwIDIuMiAxMC41YzguMy0xNS4zIDI0LjktMTIuMiAyOS42LTEwLjVsLjEgMCAwIDMyLjd6bTQ0LjEgOTEuOGwtMzUuNyAwIDAtMTI0LjUgMzUuNyAwIDAgMTI0LjV6bTAtMTQyLjlsLTM1LjcgNy42IDAtMjguOSAzNS43LTcuNiAwIDI4Ljl6bTc0LjEgMTQ1LjVjLTEyLjQgMC0yMC01LjMtMjUuMS05bC0uMSA0MC4yLTM1LjUgNy41IDAtMTY1LjggMzEuMyAwIDEuOCA4LjhjNC45LTQuNSAxMy45LTExLjEgMjcuOC0xMS4xIDI0LjkgMCA0OC40IDIyLjUgNDguNCA2My44IDAgNDUuMS0yMy4yIDY1LjUtNDguNiA2NS42em0xNjAuNC01MS41bC02OS41IDBjMS42IDE2LjYgMTMuOCAyMS41IDI3LjYgMjEuNSAxNC4xIDAgMjUuMi0zIDM0LjktNy45bDAgMjguNmMtOS43IDUuMy0yMi40IDkuMi0zOS40IDkuMi0zNC42IDAtNTguOC0yMS43LTU4LjgtNjQuNSAwLTM2LjIgMjAuNS02NC45IDU0LjMtNjQuOSAzMy43IDAgNTEuMyAyOC43IDUxLjMgNjUuMSAwIDMuNS0uMyAxMC45LS40IDEyLjl6Il19LHVUdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ3b3JkcHJlc3Mtc2ltcGxlIixpY29uOls1MTIsNTEyLFtdLCJmNDExIiwiTTI1NiA4YTI0OCAyNDggMCAxIDAgMCA0OTYgMjQ4IDI0OCAwIDEgMCAwLTQ5NnpNMzMgMjU2YzAtMzIuMyA2LjktNjMgMTkuMy05MC43TDE1OC43IDQ1Ni43Qzg0LjMgNDIwLjUgMzMgMzQ0LjIgMzMgMjU2ek0yNTYgNDc5Yy0yMS45IDAtNDMtMy4yLTYzLTkuMWw2Ni45LTE5NC40IDY4LjUgMTg3LjhjLjUgMS4xIDEgMi4xIDEuNiAzLjEtMjMuMSA4LjEtNDggMTIuNi03NCAxMi42em0zMC43LTMyNy41YzEzLjQtLjcgMjUuNS0yLjEgMjUuNS0yLjEgMTItMS40IDEwLjYtMTkuMS0xLjQtMTguNCAwIDAtMzYuMSAyLjgtNTkuNCAyLjgtMjEuOSAwLTU4LjctMi44LTU4LjctMi44LTEyLS43LTEzLjQgMTcuNy0xLjQgMTguNCAwIDAgMTEuNCAxLjQgMjMuNCAyLjFsMzQuNyA5NS4yLTQ4LjggMTQ2LjMtODEuMi0yNDEuNWMxMy40LS43IDI1LjUtMi4xIDI1LjUtMi4xIDEyLTEuNCAxMC42LTE5LjEtMS40LTE4LjQgMCAwLTM2LjEgMi44LTU5LjQgMi44LTQuMiAwLTkuMS0uMS0xNC40LS4zIDM5LjktNjAuNSAxMDguNC0xMDAuNSAxODYuMy0xMDAuNSA1OCAwIDExMC45IDIyLjIgMTUwLjYgNTguNS0xLS4xLTEuOS0uMi0yLjktLjItMjEuOSAwLTM3LjQgMTkuMS0zNy40IDM5LjYgMCAxOC40IDEwLjYgMzMuOSAyMS45IDUyLjMgOC41IDE0LjggMTguNCAzMy45IDE4LjQgNjEuNSAwIDE5LjEtNy4zIDQxLjItMTcgNzIuMWwtMjIuMiA3NC4zLTgwLjctMjM5LjZ6bTgxLjQgMjk3LjJsNjguMS0xOTYuOWMxMi43LTMxLjggMTctNTcuMiAxNy03OS45IDAtOC4yLS41LTE1LjgtMS41LTIyLjkgMTcuNCAzMS44IDI3LjMgNjguMiAyNy4zIDEwNyAwIDgyLjMtNDQuNiAxNTQuMS0xMTAuOSAxOTIuN3oiXX0scFR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNlbGxzeSIsaWNvbjpbNjQwLDUxMixbXSwiZjIxMyIsIk01NDAgMjM3LjNjMy4xLTEyLjMgNC4zLTI0LjggNC4zLTM3LjQgMC05Mi41LTc1LjQtMTY3LjktMTY3LjktMTY3LjktNzcuMiAwLTE0NC42IDUzLTE2MyAxMjcuOC0xNS4zLTEzLjItMzQuOS0yMC41LTU1LjItMjAuNS00Ni4zIDAtODQgMzcuNy04NCA4NCAwIDcuNCAuOSAxNSAzLjEgMjIuNC00Mi45IDIwLjItNzAuOCA2My43LTcwLjggMTExLjIgMCA2OCA1NS41IDEyMy4yIDEyMy4yIDEyMy4ybDM4MS4yIDBjNjcuNyAwIDEyMy4yLTU1LjIgMTIzLjItMTIzLjIgMC01Ni40LTM4LjktMTA2LTk0LjEtMTE5LjV6TTIwMC4yIDQwMS42YzAgOC4zLTcgMTUuMy0xNS4zIDE1LjNsLTMwLjkgMGMtOC4zIDAtMTUuMy03LTE1LjMtMTUuM2wwLTExMC45YzAtOC4zIDctMTUuMyAxNS4zLTE1LjNsMzAuOSAwYzguMyAwIDE1LjMgNyAxNS4zIDE1LjNsMCAxMTAuOXptODkuNSAwYzAgOC4zLTcgMTUuMy0xNS4zIDE1LjNsLTMwLjkgMGMtOC4zIDAtMTUuMy03LTE1LjMtMTUuM2wwLTEzMS41YzAtOC4zIDctMTUuMyAxNS4zLTE1LjNsMzAuOSAwYzguMyAwIDE1LjMgNyAxNS4zIDE1LjNsMCAxMzEuNXptODkuNSAwYzAgOC4zLTcgMTUuMy0xNS4zIDE1LjNsLTMxIDBjLTguMyAwLTE1LjMtNy0xNS4zLTE1LjNsMC0xNjIuN2MwLTguMyA3LTE1LjMgMTUuMy0xNS4zbDMxIDBjOC4zIDAgMTUuMyA3IDE1LjMgMTUuM2wwIDE2Mi43em04NyAwYzAgOC4zLTcgMTUuMy0xNS4zIDE1LjNsLTI4LjUgMGMtOC4zIDAtMTUuMy03LTE1LjMtMTUuM2wwLTIyNC42YzAtOC42IDctMTUuNiAxNS4zLTE1LjZsMjguNSAwYzguMyAwIDE1LjMgNyAxNS4zIDE1LjZsMCAyMjQuNnoiXX0saFR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImRhc2hjdWJlIixpY29uOls0NDgsNTEyLFtdLCJmMjEwIiwiTTMyNi45IDEwNGwtMjE2LjIgMGMtNTEuMSAwLTkxLjIgNDMuMy05MS4yIDkzLjVsMCAyMjkuNWMwIDUwLjUgNDAuMSA4NSA5MS4yIDg1bDIyNy4yIDBjNTEuMSAwIDkxLjItMzQuNSA5MS4yLTg1bDAtNDI3LTEwMi4yIDEwNHpNMTU0LjIgNDE2LjVjLTE3LjcgMC0zMi40LTE1LjEtMzIuNC0zMi44bDAtMTQyLjljMC0xNy43IDE0LjctMzIuNSAzMi40LTMyLjVsMTQwLjcgMGMxNy43IDAgMzIgMTQuOCAzMiAzMi41bDAgMTIzLjUgNTEuMSA1Mi4zLTIyMy44IDAgMC0uMXoiXX0sZlR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImdpdHRlciIsaWNvbjpbMzg0LDUxMixbXSwiZjQyNiIsIk02Ni40IDMyMi41bC01MC40IDAgMC0zMjIuNSA1MC40IDAgMCAzMjIuNXpNMTY2LjkgNzYuMWwtNTAuNCAwIDAgNDM1LjkgNTAuNCAwIDAtNDM1Ljl6bTEwMC42IDBsLTUwLjQgMCAwIDQzNS45IDUwLjQgMCAwLTQzNS45ek0zNjggNzZsLTUwLjQgMCAwIDI0NyA1MC40IDAgMC0yNDd6Il19LG1UdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ3b2xmLXBhY2stYmF0dGFsaW9uIixpY29uOls0NDgsNTEyLFtdLCJmNTE0IiwiTTIzNi4yIDQ3MS41bDEwLjYgMTUuOCA1LjMtMTIuMyA1LjMgNyAwIDI5LjljMjEuMS03LjkgMjEuMS02Ni45IDI1LjUtOTcuMiA0LjYtMzEuOS0uOS05Mi44IDgxLjQtMTQ5LjEtOC45LTIzLjYtMTItNDkuNC0yLjYtODAgMjcuOSAzLjQgNTMuOSAxMC42IDYzLjMgNTQuMWwtMzAuMyA4LjRjMTEuMSAyMyAxNyA0Ni44IDEzLjIgNzIuMWwtMjcuMy03LTYuMiAzMy40LTE4LjUtNy04LjggMzMuNC0xOS40LTcgMjYuNCAyMS4xIDguOC0yOC4yIDI0LjYgNS4yIDctMzUuNiAyNi40IDE0LjVjLjItMjAgNy01OC4xLTguOC04NC41bDI2LjQgNS4zYzQtMjIuMS0yLjQtMzkuMi03LjktNTYuN2wyMi40IDkuN2MtLjQtMjUuMS0yOS45LTU2LjgtNjEuNi01OC41LTIwLjItMS4xLTU2LjctMjUuMi01NC4xLTUxLjkgMi0xOS45IDE3LjQtNDIuNiA0My4xLTQ5LjctNDQgMzYuNS05LjcgNjcuMyA1LjMgNzMuNSA0LjQtMTEuNCAxNy41LTY5LjEgMC0xMzAuMi00MC40IDIyLjktODkuNyA2NS4xLTkzLjIgMTQ3LjhsLTU4IDM4LjctMy41IDkzLjIgMTA3LjMtNTkuOCA3IDctMTcuNiAzLjUtNDQgMzguNy0xNS44LTUuMy0yOC4xIDQ5LjMtMy41IDExOS42IDIxLjEgMTUuOC0zMi41IDE1LjgtMzIuNi0xNS44IDIxLjEtMTUuOC0zLjUtMTE5LjYtMjguMi00OS4zLTE1LjggNS4zLTQ0LTM4LjctMTcuNi0zLjUgNy03IDEwNy4zIDU5LjgtMy41LTkzLjMtNTguMS0zOC43Yy0zLjUtODIuOC01Mi43LTEyNS05My4yLTE0Ny45LTE3LjUgNjEuMS00LjQgMTE4LjggMCAxMzAuMiAxNS02LjIgNDkuMy0zNyA1LjMtNzMuNSAyNS43IDcuMSA0MS4xIDI5LjggNDMuMSA0OS43IDIuNiAyNi43LTMzLjkgNTAuOC01NC4xIDUxLjktMzEuNyAxLjctNjEuMiAzMy40LTYxLjYgNTguNWwyMi40LTkuN0MxMy40IDIyNC43IDcgMjQxLjggMTEgMjYzLjlsMjYuNC01LjNjLTE1LjggMjYuNC05LjEgNjQuNC04LjggODQuNGwyNi40LTE0LjUgNyAzNS42IDI0LjYtNS4zIDguOCAyOC4yIDI2LjQtMjEuMS0xOS40IDctOC44LTMzLjQtMTguNSA3LTYuMi0zMy40LTI3LjMgN0MzOCAyOTQuOCA0My44IDI3MSA1NSAyNDhsLTMwLjMtOC40YzkuNC00My41IDM1LjUtNTAuOCA2My4zLTU0LjEgOS40IDMwLjYgNi4yIDU2LjUtMi42IDgwLjEgODIuMyA1Ni4zIDc2LjggMTE3LjIgODEuNCAxNDkuMSA0LjQgMzAuMyA0LjQgODkuMyAyNS41IDk3LjJsMC0yOS44IDUuMy03IDUuMyAxMi4zIDEwLjYtMTUuOCAxMS40IDIxLjEgMTEuNC0yMS4xIDAgMHptNzkuMi05NUwyOTkuNSAzNjZjNy41LTQuNCAxMy44LTguNCAxOS40LTEyLjMtLjYgNy4yLS4zIDEzLjgtMy41IDIyLjhsMCAwem0yOC4yLTQ5LjNjLS40IDEwLjktLjkgMjEuNy0xLjggMzEuNy03LjgtMS45LTE1LjYtMy44LTIxLjEtNyA4LjItNy45IDE1LjYtMTYuMyAyMi45LTI0LjdsMCAwem0yNC42IDUuM2MwLTEzLjQtMi4xLTI0LjItNS4zLTMzLjQtNS41IDkuNS0xMS43IDE4LjYtMTguNSAyNy4zbDIzLjggNi4yem0zLjUtODAuOWMxOS40IDEyLjggMjcuOCAzMy43IDI5LjkgNTYuMy0xMi4zLTQuNS0yNC42LTkuMy0zNy0xMC42IDUuMS0xMiA2LjYtMjguMSA3LTQ1LjdsMCAwem0tMS44LTQ1LjdjLjggMTQuMyAxLjggMjguOCAxLjggNDIuMiAxOS4yLTguMSAyOS44LTkuNyA0NC0xNC4xLTEwLjYtMTktMjcuMi0yNS41LTQ1LjgtMjguMmwwIDB6TTEzNC4yIDM3Ni41TDE1MCAzNjZjLTcuNS00LjQtMTMuOC04LjQtMTkuNC0xMi4zIC42IDcuMyAuMyAxMy45IDMuNSAyMi45bDAgMHpNMTA2IDMyNy4zYy40IDEwLjkgLjkgMjEuNyAxLjggMzEuNyA3LjgtMS45IDE1LjYtMy44IDIxLjEtNy04LjItNy45LTE1LjYtMTYuMy0yMi45LTI0Ljd6bS0yNC42IDUuM2MwLTEzLjQgMi0yNC4yIDUuMy0zMy40IDUuNSA5LjUgMTEuNyAxOC42IDE4LjUgMjcuM2wtMjMuOCA2LjJ6bS0zLjUtODAuOWMtMTkuNCAxMi44LTI3LjggMzMuNy0yOS45IDU2LjMgMTIuMy00LjUgMjQuNi05LjMgMzctMTAuNi01LTEyLTYuNi0yOC4xLTctNDUuN2wtLjEgMHptMS44LTQ1LjdjLS44IDE0LjMtMS44IDI4LjgtMS44IDQyLjItMTkuMi04LjEtMjkuOC05LjctNDQtMTQuMSAxMC42LTE5IDI3LjItMjUuNSA0NS44LTI4LjF6Il19LGdUdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJsYXN0Zm0iLGljb246WzUxMiw1MTIsW10sImYyMDIiLCJNMjI1LjggMzY3LjFsLTE4LjgtNTFzLTMwLjUgMzQtNzYuMiAzNGMtNDAuNSAwLTY5LjItMzUuMi02OS4yLTkxLjUgMC03Mi4xIDM2LjQtOTcuOSA3Mi4xLTk3LjkgNjYuNSAwIDc0LjggNTMuMyAxMDAuOSAxMzQuOSAxOC44IDU2LjkgNTQgMTAyLjYgMTU1LjQgMTAyLjYgNzIuNyAwIDEyMi0yMi4zIDEyMi04MC45IDAtNzIuOS02Mi43LTgwLjYtMTE1LTkyLjEtMjUuOC01LjktMzMuNC0xNi40LTMzLjQtMzQgMC0xOS45IDE1LjgtMzEuNyA0MS42LTMxLjcgMjguMiAwIDQzLjQgMTAuNiA0NS43IDM1LjhsNTguNi03Yy00LjctNTIuOC00MS4xLTc0LjUtMTAwLjktNzQuNS01Mi44IDAtMTA0LjQgMTkuOS0xMDQuNCA4My45IDAgMzkuOSAxOS40IDY1LjEgNjggNzYuOCA0NC45IDEwLjYgNzkuOCAxMy44IDc5LjggNDUuNyAwIDIxLjctMjEuMSAzMC41LTYxIDMwLjUtNTkuMiAwLTgzLjktMzEuMS05Ny45LTczLjktMzItOTYuOC00My42LTE2My0xNjEuMy0xNjMtODYuMSAwLTEzMS44IDU0LjUtMTMxLjggMTQ3LjIgMCA4OS4xIDQ1LjcgMTM3LjIgMTI3LjkgMTM3LjIgNjYuMiAwIDk3LjktMzEuMSA5Ny45LTMxLjF6Il19LGJUdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzaG9wd2FyZSIsaWNvbjpbNTEyLDUxMixbXSwiZjViNSIsIk00MDMuNSA0NTUuNGMtNDIuNiAzMS43LTk0LjQgNDguNy0xNDcuNSA0OC42LTEzNy4yIDAtMjQ4LTExMS0yNDgtMjQ4IDAtMTM3LjIgMTExLTI0OCAyNDgtMjQ4IDYxLjItLjEgMTIwLjIgMjIuNiAxNjUuNyA2My41IC42IC41IC45IDEuMiAxLjEgMS45cy4xIDEuNS0uMyAyLjItLjggMS4zLTEuNSAxLjYtMS40IC41LTIuMiAuNGMtMTguOC0yLjUtMzcuNy0zLjctNTYuNy0zLjctMTI5LjQgMC0yMjIuNCA1My41LTIyMi40IDE1NS40IDAgMTA5IDkyLjEgMTQ1LjkgMTc2LjggMTc4LjcgMzMuNiAxMyA2NS40IDI1LjQgODcgNDEuNiAuNCAuMyAuOCAuOCAxLjEgMS4zcy40IDEgLjQgMS42LS4xIDEuMS0uNCAxLjYtLjYgLjktMS4xIDEuM2wtLjEgMHpNNTAzIDIzMy4xYy0uMS0uOS0uNS0xLjgtMS4zLTIuNC01MS44LTQzLTkzLjYtNjAuNS0xNDQuNS02MC41LTg0LjEgMC04MC4zIDUyLjItODAuMyA1My42IDAgNDIuNiA1Mi4xIDYyIDExMi4zIDg0LjUgMzEuMSAxMS42IDYzLjIgMjMuNiA5Mi43IDM5LjkgLjQgLjIgLjkgLjQgMS40IC40czEgMCAxLjUtLjIgLjktLjQgMS4zLS44IC42LS44IC44LTEuMmMxNC4xLTM2IDE5LjUtNzQuOCAxNi0xMTMuM3oiXX0sdlR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImJsb2dnZXIiLGljb246WzQ0OCw1MTIsW10sImYzN2MiLCJNMTYyLjQgMTk2YzQuOC00LjkgNi4yLTUuMSAzNi40LTUuMSAyNy4yIDAgMjguMSAuMSAzMi4xIDIuMSA1LjggMi45IDguMyA3IDguMyAxMy42IDAgNS45LTIuNCAxMC03LjYgMTMuNC0yLjggMS44LTQuNSAxLjktMzEuMSAyLjEtMTYuNCAuMS0yOS41LS4yLTMxLjUtLjgtMTAuMy0yLjktMTQuMS0xNy43LTYuNi0yNS4zem02MS40IDk0LjVjLTUzLjkgMC01NS44IC4yLTYwLjIgNC4xLTMuNSAzLjEtNS43IDkuNC01LjEgMTMuOSAuNyA0LjcgNC44IDEwLjEgOS4yIDEyIDIuMiAxIDE0LjEgMS43IDU2LjMgMS4ybDQ3LjktLjYgOS4yLTEuNWM5LTUuMSAxMC41LTE3LjQgMy4xLTI0LjQtNS4zLTQuNy01LTQuNy02MC40LTQuN3pNNDQ3LjIgNDIwLjZjLTMuNSAyOC40LTIzIDUwLjQtNTEuMSA1Ny41LTcuMiAxLjgtOS43IDEuOS0xNzIuOSAxLjgtMTU3LjggMC0xNjUuOS0uMS0xNzItMS44LTguNC0yLjItMTUuNi01LjUtMjIuMy0xMC01LjYtMy44LTEzLjktMTEuOC0xNy0xNi40LTMuOC01LjYtOC4yLTE1LjMtMTAtMjJTMCA0MjAuMyAwIDI1Ni4zYzAtMTYzLjEgMC0xNjYuNiAxLjgtMTczLjcgNi4zLTI0LjcgMjUuOS00My42IDUxLjItNDkuMiA3LjMtMS42IDMzMi4xLTEuOSAzNDAtLjMgMjEuMiA0LjMgMzcuOSAxNy4xIDQ3LjYgMzYuNCA3LjcgMTUuMyA3LTEuNSA3LjMgMTgwLjYgLjIgMTE1LjggMCAxNjQuNS0uNyAxNzAuNXpNMzYxLjggMjM1LjRjLTEuMS01LTQuMi05LjYtNy43LTExLjUtMS4xLS42LTgtMS4zLTE1LjUtMS43LTEyLjQtLjYtMTMuOC0uOC0xNy44LTMuMS02LjItMy42LTcuOS03LjYtOC0xOC4zIDAtMjAuNC04LjUtMzkuNC0yNS4zLTU2LjUtMTItMTIuMi0yNS4zLTIwLjUtNDAuNi0yNS4xLTMuNi0xLjEtMTEuOC0xLjUtMzkuMi0xLjgtNDIuOS0uNS01Mi41IC40LTY3LjEgNi4yLTI3IDEwLjctNDYuMyAzMy40LTUzLjQgNjIuNC0xLjMgNS40LTEuNiAxNC4yLTEuOSA2NC4zLS40IDYyLjggMCA3Mi4xIDQgODQuNSA5LjcgMzAuNyAzNy4xIDUzLjQgNjQuNiA1OC40IDkuMiAxLjcgMTIyLjIgMi4xIDEzMy43IC41IDIwLjEtMi43IDM1LjktMTAuOCA1MC43LTI1LjkgMTAuNy0xMC45IDE3LjQtMjIuOCAyMS44LTM4LjUgMy4yLTEwLjkgMi45LTg4LjQgMS43LTkzLjl6Il19LHhUdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJlZGdlIixpY29uOls1MTIsNTEyLFtdLCJmMjgyIiwiTTEyMC4xIDM3LjRjNDEtMjUuMiA4Ny42LTM4LjIgMTM0LjktMzcuNCAxNjggMCAyNTcgMTIzLjggMjU3IDIxOS41LS4xIDMyLjctMTMgNjMuOS0zNS45IDg3LjItMjIuOSAyMy4yLTU0IDM2LjUtODYuNyAzNy03NS4yIDAtOTEuNS0yMy4xLTkxLjUtMzIgMC0zLjggMS4yLTYuMiA0LjgtOS40bDEtMS4yIC40LTEuNmMxMC41LTExLjUgMTUuOS0yNi4yIDE1LjktNDEuNiAwLTc4LjctODIuMi0xNDIuNy0xODQtMTQyLjctMzcuNS0uMy03NC41IDguOS0xMDcuNSAyNi45IDI3LTU3LjUgODIuNy05Ny42IDkxLjMtMTAzLjggLjgtLjYgLjMtLjggLjMtLjh6bTE1LjYgMzE4LjFjLTEuNCAzMCA0LjYgNjAgMTYuNCA4Ny4yIDEzLjYgMjYuNCAzMi43IDUxIDU2LjUgNjkuMy01OS41LTExLjUtMTExLjUtNDMuOS0xNDkuNC04OS4zLTM4LjEtNDYuNC01OS4yLTEwNC4zLTU5LjItMTY0LjggMC01MS4yIDYyLjQtOTQuNCAxMzYtOTQuNCAzNi42LS42IDcyLjQgMTAuOSAxMDEuOCAzMi43bC0zLjYgMS4yYy01MS41IDE3LjYtOTguNSA5MC43LTk4LjUgMTU4LjF6TTQ2OS44IDQwMGwtLjcgLjFjLTExLjggMTguOC0yNS45IDM1LjEtNDIuMiA0OS41LTMwLjggMjgtNjguMSA0NS41LTEwOC44IDQ5LjktMTguNiAuMy0zNi44LTMuMi01My44LTExLjQtMjUuNi0xMC4zLTQ3LjEtMzAtNjEuNi01My0xNC40LTIzLjktMjEuMS01MS43LTE5LTc5LjYtLjYtMjAuMSA1LjQtNDAuMyAxNS01OC4yIDEzLjkgMzMuMSAzNy41IDYxLjMgNjcuNiA4MC44czY1LjUgMjkuNSAxMDEuNCAyOC42YzMxIC4zIDYyLjEtNi43IDkwLjItMjAuNWwxLjktLjljMy45LTIuMyA3LjctMy45IDExLjYgMCA0LjUgNC45IDEuOCA5LjItMS4yIDE0LS4yIC4yLS4zIC41LS40IC43eiJdfSx5VHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiaW94aG9zdCIsaWNvbjpbNjQwLDUxMixbXSwiZjIwOCIsIk02MTYgMTYwbC02Ny4zIDBDNTExLjIgNzAuNyA0MjIuOSA4IDMyMCA4IDE4MyA4IDcyIDExOSA3MiAyNTYgNzIgMjcyLjQgNzMuNiAyODguNSA3Ni43IDMwNEwyNCAzMDRjLTEzLjMgMC0yNCAxMC44LTI0IDI0IDAgMTMuMyAxMC43IDI0IDI0IDI0bDY3LjMgMGMzNy41IDg5LjMgMTI1LjggMTUyIDIyOC43IDE1MiAxMzcgMCAyNDgtMTExIDI0OC0yNDggMC0xNi40LTEuNi0zMi41LTQuNy00OGw1Mi43IDBjMTMuMyAwIDI0LTEwLjggMjQtMjQgMC0xMy4zLTEwLjctMjQtMjQtMjR6bS05NiA5NmMwIDExMC41LTg5LjUgMjAwLTIwMCAyMDAtNzUuNyAwLTE0MS42LTQyLTE3NS41LTEwNEw0MjQgMzUyYzEzLjMgMCAyNC0xMC44IDI0LTI0IDAtMTMuMy0xMC43LTI0LTI0LTI0bC0yOTguMiAwYy0zLjgtMTUuNC01LjgtMzEuNC01LjgtNDggMC0xMTAuNSA4OS41LTIwMCAyMDAtMjAwIDc1LjcgMCAxNDEuNiA0MiAxNzUuNSAxMDRMMjE2IDE2MGMtMTMuMyAwLTI0IDEwLjgtMjQgMjQgMCAxMy4zIDEwLjcgMjQgMjQgMjRsMjk4LjIgMGMzLjggMTUuNCA1LjggMzEuNCA1LjggNDh6TTIxNiAyMzJsMjA4IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjQgMCAxMy4yLTEwLjcgMjQtMjQgMjRsLTIwOCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNCAwLTEzLjIgMTAuNy0yNCAyNC0yNHoiXX0sd1R0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNjaGxpeCIsaWNvbjpbNDQ4LDUxMixbXSwiZjNlYSIsIk0zNTAuNSAxNTcuN2wtNTQuMi00Ni4xIDczLjQtMzkgNzguMyA0NC4yLTk3LjUgNDAuOXpNMTkyIDEyMi4xbDQ1LjctMjguMiAzNC43IDM0LjYtNTUuNCAyOS0yNS0zNS40em0tNjUuMSA2LjZsMzEuOS0yMi4xIDE3LjIgMjguNC0zNi43IDIyLjUtMTIuNC0yOC44em0tMjMuMyA4OC4ybC04LjgtMzQuOCAyOS42LTE4LjMgMTMuMSAzNS4zLTMzLjkgMTcuOHpNODIuNCAxMzMuMmwyMy45LTE4LjEgOC45IDI0LTI2LjcgMTguMy02LjEtMjQuMnpNNTkgMjA2LjVsLTMuNi0yOC40IDIyLjMtMTUuNSA2LjEgMjguNy0yNC44IDE1LjJ6TTI4LjQgMjIzLjFsMjAuOC0xMi44IDMuMyAzMy40LTIyLjkgMTItMS4yLTMyLjZ6TTEuNCAyNjhMMjAuNiAyNTcuOCAyMSAyOTYgMCAzMDQuOCAxLjQgMjY4em01OS4xIDU5LjNsLTI4LjMgOC4zLTEuNi00Ni44IDI1LjEtMTAuNyA0LjggNDkuMnpNOTkgMjYzLjJsLTMxLjEgMTMtNS4yLTQwLjggMjcuNC0xNC40IDguOSA0Mi4yek0xMjMuMiAzNzdsLTQxLjYgNS45LTguMS02My41IDM1LjItMTAuOCAxNC41IDY4LjR6bTI4LjUtMTM5LjlsMjEuMiA1Ny4xLTQ2LjIgMTMuNi0xMy43LTU0LjEgMzguNy0xNi42em04NS43IDIzMC41bC03MC45LTMuMy0yNC4zLTk1LjggNTUuMi04LjYgNDAgMTA3Ljd6TTE1Mi41IDE4Ny45bDQyLjItMjIuNCAyOCA0NS45LTUwLjggMjEuMy0xOS40LTQ0Ljh6bTQxIDk0LjlsNjEuMy0xOC43IDUyLjggODYuNi03OS44IDExLjMtMzQuMy03OS4yem01MS40LTg1LjZsNjcuMy0yOC44IDY1LjUgNjUuNC04OC42IDI2LjItNDQuMi02Mi44eiJdfSxrVHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZC1hbmQtZCIsaWNvbjpbNTc2LDUxMixbXSwiZjM4ZCIsIk04Mi45IDk4LjljLS42LTE3LjIgMi0zMy44IDEyLjctNDguMiAuMyA3LjQgMS4yIDE0LjUgNC4yIDIxLjYgNS45LTI3LjUgMTkuNy00OS4zIDQyLjMtNjUuNS0xLjkgNS45LTMuNSAxMS44LTMgMTcuNyA4LjctNy40IDE4LjgtMTcuOCA0NC40LTIyLjcgMTQuNy0yLjggMjkuNy0yIDQyLjEgMSAzOC41IDkuMyA2MSAzNC4zIDY5LjcgNzIuMyA1LjMgMjMuMSAuNyA0NS04LjMgNjYuNC01LjIgMTIuNC0xMiAyNC40LTIwLjcgMzUuMS0yLTEuOS0zLjktMy44LTUuOC01LjYtNDIuOC00MC44LTI2LjgtMjUuMi0zNy40LTM3LjQtMS4xLTEuMi0xLTIuMi0uMS0zLjYgOC4zLTEzLjUgMTEuOC0yOC4yIDEwLTQ0LTEuMS05LjgtNC4zLTE4LjktMTEuMy0yNi4yLTE0LjUtMTUuMy0zOS4yLTE1LTUzLjUgLjYtMTEuNCAxMi41LTE0LjEgMjcuNC0xMC45IDQzLjYgLjIgMS4zIC40IDIuNyAwIDMuOS0zLjQgMTMuNy00LjYgMjcuNi0yLjUgNDEuNiAuMSAuNSAuMSAxLjEgLjEgMS42IDAgLjMtLjEgLjUtLjIgMS4xLTIxLjgtMTEtMzYtMjguMy00My4yLTUyLjItOC4zIDE3LjgtMTEuMSAzNS41LTYuNiA1NC4xLTE1LjYtMTUuMi0yMS4zLTM0LjMtMjItNTUuMnpNNTUyLjUgMjIyLjFjLTExLjYtMTEuNi0yNS0yMC40LTQwLjEtMjYuNi0xMi44LTUuMi0yNi03LjktMzkuOS03LjEtMTAgLjYtMTkuNiAzLjEtMjkgNi40LTIuNSAuOS01LjEgMS42LTcuNyAyLjItNC45IDEuMi03LjMtMy4xLTQuNy02LjggMy4yLTQuNiAzLjQtNC4yIDE1LTEyIC42LS40IDEuMi0uOCAyLjItMS41bC0yLjUgMGMtLjYgMC0xLjIgLjItMS45IC4zLTE5LjMgMy4zLTMwLjcgMTUuNS00OC45IDI5LjYtMTAuNCA4LjEtMTMuOCAzLjgtMTItLjUgMS40LTMuNSAzLjMtNi43IDUuMS0xMCAxLTEuOCAyLjMtMy40IDMuNS01LjEtLjItLjItLjUtLjMtLjctLjUtMjcgMTguMy00Ni43IDQyLjQtNTcuNyA3My4zIC4zIC4zIC43IC42IDEgLjkgLjMtLjYgLjUtMS4yIC45LTEuNyAxMC40LTEyLjEgMjIuOC0yMS44IDM2LjYtMjkuOCAxOC4yLTEwLjYgMzcuNS0xOC4zIDU4LjctMjAuMiA0LjMtLjQgOC43LS4xIDEzLjEtLjEtMS44IC43LTMuNSAuOS01LjMgMS4xLTE4LjUgMi40LTM1LjUgOS01MS41IDE4LjUtMzAuMiAxNy45LTU0LjUgNDIuMi03NS4xIDcwLjQtLjMgLjQtLjQgLjktLjcgMS4zIDE0LjUgNS4zIDI0IDE3LjMgMzYuMSAyNS42IC4yLS4xIC4zLS4yIC40LS40bDEuMi0yLjdjMTIuMi0yNi45IDI3LTUyLjMgNDYuNy03NC41IDE2LjctMTguOCAzOC0yNS4zIDYyLjUtMjAgNS45IDEuMyAxMS40IDQuNCAxNy4yIDYuOCAyLjMtMS40IDUuMS0zLjIgOC00LjcgOC40LTQuMyAxNy40LTcgMjYuNy05IDE0LjctMy4xIDI5LjUtNC45IDQ0LjUtMS4zbDAtLjVjLS41LS40LTEuMi0uOC0xLjctMS40ek0zMTcuMSAzOTcuNmMtMzkuNC0zMy0yMi44LTE5LjUtNDIuNy0zNS42LS44IC45IDAtLjItMS45IDMtMTEuMiAxOS4xLTI1LjUgMzUuMy00NCA0Ny42LTEwLjMgNi44LTIxLjUgMTEuOC0zNC4xIDExLjgtMjEuNiAwLTM4LjItOS41LTQ5LjQtMjcuOC0xMi0xOS41LTEzLjMtNDAuNy04LjItNjIuNiA3LjgtMzMuOCAzMC4xLTU1LjIgMzguNi02NC4zLTE4LjctNi4yLTMzIDEuNy00Ni40IDEzLjkgLjgtMTMuOSA0LjMtMjYuMiAxMS44LTM3LjMtMjQuMyAxMC42LTQ1LjkgMjUtNjQuOCA0My45LS4zLTUuOCA1LjQtNDMuNyA1LjYtNDQuNyAuMy0yLjctLjYtNS4zLTMtNy40LTI0LjIgMjQuNy00NC41IDUxLjgtNTYuMSA4NC42IDcuNC01LjkgMTQuOS0xMS40IDIzLjYtMTYuMi04LjMgMjIuMy0xOS42IDUyLjgtNy44IDEwMS4xIDQuNiAxOSAxMS45IDM2LjggMjQuMSA1Mi4zIDIuOSAzLjcgNi4zIDYuOSA5LjUgMTAuMyAuMi0uMiAuNC0uMyAuNi0uNS0xLjQtNy0yLjItMTQuMS0xLjUtMjEuOSAyLjIgMy4yIDMuOSA2IDUuOSA4LjYgMTIuNiAxNiAyOC43IDI3LjQgNDcuMiAzNS42IDI1IDExLjMgNTEuMSAxMy4zIDc3LjkgOC42IDU0LjktOS43IDkwLjctNDguNiAxMTYtOTguOCAxLTEuOCAuNi0yLjktLjktNC4yem0xNzItNDYuNGMtOS41LTMuMS0yMi4yLTQuMi0yOC43LTIuOSA5LjkgNCAxNC4xIDYuNiAxOC44IDEyIDEyLjYgMTQuNCAxMC40IDM0LjctNS40IDQ1LjYtMTEuNyA4LjEtMjQuOSAxMC41LTM4LjkgOS4xLTEuMi0uMS0yLjMtLjQtMy0uNiAyLjgtMy43IDYtNyA4LjEtMTAuOCA5LjQtMTYuOCA1LjQtNDIuMS04LjctNTYuMS0yLjEtMi4xLTQuNi0zLjktNy01LjktLjMgMS4zLS4xIDIuMSAuMSAyLjggNC4yIDE2LjYtOC4xIDMyLjQtMjQuOCAzMS44LTcuNi0uMy0xMy45LTMuOC0xOS42LTguNS0xOS41LTE2LjEtMzkuMS0zMi4xLTU4LjUtNDguMy01LjktNC45LTEyLjUtOC4xLTIwLjEtOC43LTQuNi0uNC05LjMtLjYtMTMuOS0uOS01LjktLjQtOC44LTIuOC0xMC40LTguNC0uOS0zLjQtMS41LTYuOC0yLjItMTAuMi0xLjUtOC4xLTYuMi0xMy0xNC4zLTE0LjItNC40LS43LTguOS0xLTEzLjMtMS41LTEzLTEuNC0xOS44LTcuNC0yMi42LTIwLjMtNSAxMS0xLjYgMjIuNCA3LjMgMjkuOSA0LjUgMy44IDkuMyA3LjMgMTMuOCAxMS4yIDQuNiAzLjggNy40IDguNyA3LjkgMTQuOCAuNCA0LjcgLjggOS41IDEuOCAxNC4xIDIuMiAxMC42IDguOSAxOC40IDE3IDI1LjEgMTYuNSAxMy43IDMzIDI3LjMgNDkuNSA0MS4xIDE3LjkgMTUgMTMuOSAzMi44IDEzIDU2LS45IDIyLjkgMTIuMiA0Mi45IDMzLjUgNTEuMiAxIC40IDIgLjYgMy42IDEuMS0xNS43LTE4LjItMTAuMS00NC4xIC43LTUyLjMgLjMgMi4yIC40IDQuMyAuOSA2LjQgOS40IDQ0LjEgNDUuNCA2NC4yIDg1IDU2LjkgMTYtMi45IDMwLjYtOC45IDQyLjktMTkuOCAyLTEuOCAzLjctNC4xIDUuOS02LjUtMTkuMyA0LjYtMzUuOCAuMS01MC45LTEwLjYgLjctLjMgMS4zLS4zIDEuOS0uMyAyMS4zIDEuOCA0MC42LTMuNCA1Ny0xNy40IDE5LjUtMTYuNiAyNi42LTQyLjkgMTcuNC02Ni04LjMtMjAuMS0yMy42LTMyLjMtNDMuOC0zOC45ek05OS44IDE3OS4zYy01LjMtOS4yLTEzLjItMTUuNi0yMi4xLTIxLjMgMTMuNy0uNSAyNi42IC4yIDM5LjYgMy43LTctMTIuMi04LjUtMjQuNy01LTM4LjcgNS4zIDExLjkgMTMuNyAyMC4xIDIzLjYgMjYuOCAxOS43IDEzLjIgMzUuNyAxOS42IDQ2LjcgMzAuMiAzLjQgMy4zIDYuMyA3LjEgOS42IDEwLjktLjgtMi4xLTEuNC00LjEtMi4yLTYtNS0xMC42LTEzLTE4LjYtMjIuNi0yNS0xLjgtMS4yLTIuOC0yLjUtMy40LTQuNS0zLjMtMTIuNS0zLTI1LjEtLjctMzcuNiAxLTUuNSAyLjgtMTAuOSA0LjUtMTYuMyAuOC0yLjQgMi4zLTQuNiA0LTYuNiAuNiA2LjkgMCAyNS41IDE5LjYgNDYgMTAuOCAxMS4zIDIyLjQgMjEuOSAzMy45IDMyLjcgOSA4LjUgMTguMyAxNi43IDI1LjUgMjYuOCAxLjEgMS42IDIuMiAzLjMgMy44IDQuNy01LTEzLTE0LjItMjQuMS0yNC4yLTMzLjgtOS42LTkuMy0xOS40LTE4LjQtMjkuMi0yNy40LTMuMy0zLTQuNi02LjctNS4xLTEwLjktMS4yLTEwLjQgMC0yMC42IDQuMy0zMC4yIC41LTEgMS4xLTIgMS45LTMuMyAuNSA0LjIgLjYgNy45IDEuNCAxMS42IDQuOCAyMy4xIDIwLjQgMzYuMyA0OS4zIDYzLjUgMTAgOS40IDE5LjMgMTkuMiAyNS42IDMxLjYgNC44IDkuMyA3LjMgMTkgNS43IDI5LjYtLjEgLjYgLjUgMS43IDEuMSAyIDYuMiAyLjYgMTAgNi45IDkuNyAxNC4zIDcuNy0yLjYgMTIuNS04IDE2LjQtMTQuNSA0LjIgMjAuMi05LjEgNTAuMy0yNy4yIDU4LjcgLjQtNC41IDUtMjMuNC0xNi41LTI3LjctNi44LTEuMy0xMi44LTEuMy0yMi45LTIuMSA0LjctOSAxMC40LTIwLjYgLjUtMjIuNC0yNC45LTQuNi01Mi44IDEuOS01Ny44IDQuNiA4LjIgLjQgMTYuMyAxIDIzLjUgMy4zLTIgNi41LTQgMTIuNy01LjggMTguOS0xLjkgNi41IDIuMSAxNC42IDkuMyA5LjYgMS4yLS45IDIuMy0xLjkgMy4zLTIuNy0zLjEgMTcuOS0yLjkgMTUuOS0yLjggMTguMyAuMyAxMC4yIDkuNSA3LjggMTUuNyA3LjMtMi41IDExLjgtMjkuNSAyNy4zLTQ1LjQgMjUuOCA3LTQuNyAxMi43LTEwLjMgMTUuOS0xNy45LTYuNSAuOC0xMi45IDEuNi0xOS4yIDIuNGwtLjMtLjljNC43LTMuNCA4LTcuOCAxMC4yLTEzLjEgOC43LTIxLjEtMy42LTM4LTI1LTM5LjktOS4xLS44LTE3LjggLjgtMjUuOSA1LjUgNi4yLTE1LjYgMTcuMi0yNi42IDMyLjYtMzQuNS0xNS4yLTQuMy04LjktMi43LTI0LjYtNi4zIDE0LjYtOS4zIDMwLjItMTMuMiA0Ni41LTE0LjYtNS4yLTMuMi00OC4xLTMuNi03MC4yIDIwLjkgNy45IDEuNCAxNS41IDIuOCAyMy4yIDQuMi0yMy44IDctNDQgMTkuNy02Mi40IDM1LjYgMS4xLTQuOCAyLjctOS41IDMuMy0xNC4zIC42LTQuNSAuOC05LjIgLjEtMTMuNi0xLjUtOS40LTguOS0xNS4xLTE5LjctMTYuMy03LjktLjktMTUuNiAuMS0yMy4zIDEuMy0uOSAuMS0xLjcgLjMtMi45IDAgMTUuOC0xNC44IDM2LTIxLjcgNTMuMS0zMy41IDYtNC41IDYuOC04LjIgMy0xNC45em0xMjguNCAyNi44YzMuMyAxNiAxMi42IDI1LjUgMjMuOCAyNC4zLTQuNi0xMS4zLTEyLjEtMTkuNS0yMy44LTI0LjN6Il19LFNUdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ2dWVqcyIsaWNvbjpbNDQ4LDUxMixbXSwiZjQxZiIsIk0zNTYuOSA2NC4zbC03Ni45IDAtNTYgODguNi00OC04OC42LTE3NiAwIDIyNCAzODMuNyAyMjQtMzgzLjctOTEuMSAwek01NS43IDk2LjNsNTMuOCAwIDExNC41IDE5OC4yIDExNC40LTE5OC4yIDUzLjggMC0xNjguMiAyODguMi0xNjguMy0yODguMnoiXX0sX1R0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6Im1ldGEiLGljb246WzY0MCw1MTIsW10sImU0OWIiLCJNNjQwIDMxNy45YzAgOTEuMy0zOS40IDE0OC41LTExMC4zIDE0OC41LTYyLjYgMC05NS44LTM0LjYtMTU2LjktMTM2LjZsLTMxLjQtNTIuNmMtOC4zLTEyLjUtMTQuNS0yNC4yLTIxLjItMzUtMjAuMSAzMy44LTQ3LjEgODMtNDcuMSA4My02NyAxMTYuNi0xMDQuNiAxNDEuMi0xNTYuOSAxNDEuMi03Mi44IDAtMTE2LjItNTcuMy0xMTYuMi0xNDUuOSAwLTE0MyA3OS44LTI3OC4xIDE4My45LTI3OC4xIDUwLjIgMCA5My44IDI0LjcgMTQ0LjggODkuNSAzNy4xLTUwLjEgNzguMS04OS41IDEzMC42LTg5LjUgOTkuMSAwIDE4MC43IDEyNS43IDE4MC43IDI3NS41ek0yODcuNCAxOTIuMmMtNDIuOS02Mi4xLTcwLjktODAuNS0xMDQuNC04MC41LTYxLjkgMC0xMTMuOCAxMDYuMS0xMTMuOCAyMTAgMCA0OC41IDE4LjUgNzUuNyA0OS42IDc1LjcgMzAuMiAwIDQ5LTE5IDEwMy4yLTEwMy44IDAgMCAyNC43LTM5LjEgNjUuNC0xMDEuNHpNNTMxLjIgMzk3LjRjMzIuMiAwIDQ2LjktMjcuNSA0Ni45LTc0LjkgMC0xMjQuMi01NC4zLTIyNS40LTEyMy4yLTIyNS40LTMzLjIgMC02MS4xIDI1LjktOTQuOSA3OCA5LjQgMTMuOCAxOS4xIDI5IDI5LjMgNDUuNGwzNy41IDYyLjRjNTguNyA5NC4xIDczLjUgMTE0LjUgMTA0LjQgMTE0LjV6Il19LE1UdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJjcmVhdGl2ZS1jb21tb25zLXNoYXJlIixpY29uOls1MTIsNTEyLFtdLCJmNGYyIiwiTTI1NS42IDhDMzk3LjQgOCA1MDQgMTE4LjEgNTA0IDI1NiA1MDQgNDAzLjEgMzg1LjUgNTA0IDI1NS42IDUwNCAxMjEuNiA1MDQgOCAzOTQuNSA4IDI1NiA4IDEyMy4xIDExMi43IDggMjU1LjYgOHptLjggNDQuN2MtMTE4LjIgMC0yMDMuNyA5Ny45LTIwMy43IDIwMy4zIDAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjggLjEtMTEzLjgtOTAuMi0yMDMuMy0yMDIuOC0yMDMuM3ptMTAxIDEzMi40YzcuOCAwIDEzLjcgNi4xIDEzLjcgMTMuN2wwIDE4Mi41YzAgNy43LTYuMSAxMy43LTEzLjcgMTMuN2wtMTM1LjEgMGMtNy43IDAtMTMuNy02LTEzLjctMTMuN2wwLTU0LTU0IDBjLTcuOCAwLTEzLjctNi0xMy43LTEzLjdsMC0xODIuNWMwLTguMiA2LjYtMTIuNyAxMi40LTEzLjdsMTM2LjQgMGM3LjcgMCAxMy43IDYgMTMuNyAxMy43bDAgNTQgNTQgMHpNMTY3LjkgMzAwLjNsNDAuNyAwIDAtMTAxLjRjMC03LjQgNS44LTEyLjYgMTItMTMuN2w1NS44IDAgMC00MC4zLTEwOC41IDAgMCAxNTUuNHptMTc2LjItODguMWwtMTA4LjUgMCAwIDE1NS40IDEwOC41IDAgMC0xNTUuNHoiXX0selR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InN0dWRpb3ZpbmFyaSIsaWNvbjpbNTEyLDUxMixbXSwiZjNmOCIsIk00ODAuNyAxODcuN2w0LjIgMjggMCAyOC0yNS4xIDQ0LjEtMzkuOCA3OC40LTU2LjEgNjcuNS03OS4xIDM3LjgtMTcuNyAyNC41LTcuNyAxMi05LjYgNHMxNy4zLTYzLjYgMTkuNC02My42IDIwLjMgLjcgMjAuMyAuN2w2Ni43LTM4LjYtOTIuNSAyNi4xLTU1LjkgMzYuOC0yMi44IDI4LTYuNiAxLjQgMjAuOC03My42IDYuOS01LjUgMjAuNyAxMi45IDg4LjMtNDUuMiA1Ni44LTUxLjUgMTQuOC02OC40LTEyNS40IDIzLjMgMTUuMi0xOC4yLTE3My40LTUzLjMgODEuOS0xMC41LTE2Ni0xMjIuOSAxMTQuOSAxOC4xLTEwMS4zLTEwOCAyNTIuOSAxMjYuNi0zMS41LTM4IDEyNC40IDc0LjQtMTQzLjMtOTkgMTguNyAzOC40LTQ5LjYtMTguMS00NS41LTg0LjMgMTk0LjYgMTIyLTQyLjktNTUuOCAxMDggOTYuNCAxMi04LjktMjEtMTYuNCA0LjItMzcuOCAzNy44LTEwLjQgMjkuMiAyNC43IDExLjUgNC4yLTcgNi4yIDguNSAxMi0xMy4xIDcuNC0xMC4zIDIwLjIgMTAuNSAyMy45eiJdfSxDVHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiYml0YnVja2V0IixpY29uOls1MTIsNTEyLFs2MTgxMF0sImYxNzEiLCJNMjIuMiAzMmMtMi4xIDAtNC4yIC40LTYuMSAxLjFzLTMuNyAxLjktNS4yIDMuNC0yLjcgMy4yLTMuNSA1LjEtMS4zIDQtMS4zIDYuMWMwIC45IC4xIDEuOSAuMiAyLjhMNzQuMSA0NjIuN2MuOCA1LjEgMy40IDkuNyA3LjMgMTNzOC44IDUuMiAxNCA1LjJsMzI1LjcgMGMzLjggLjEgNy41LTEuMyAxMC41LTMuN3M0LjktNS45IDUuNS05LjdMNTA1IDUwLjdjLjctNC4yLS4zLTguNC0yLjgtMTEuOXMtNi4yLTUuNy0xMC40LTYuNGMtLjktLjEtMS45LS4yLTIuOC0uMkwyMi4yIDMyek0zMDguMSAzMjkuOGwtMTA0IDAtMjguMS0xNDcgMTU3LjMgMC0yNS4yIDE0N3oiXX0sVFR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InZrIixpY29uOls0NDgsNTEyLFtdLCJmMTg5IiwiTTMxLjUgNjMuNUMwIDk1IDAgMTQ1LjcgMCAyNDdMMCAyNjVDMCAzNjYuMyAwIDQxNyAzMS41IDQ0OC41UzExMy43IDQ4MCAyMTUgNDgwbDE3LjkgMGMxMDEuNCAwIDE1Mi4xIDAgMTgzLjUtMzEuNVM0NDggMzY2LjMgNDQ4IDI2NWwwLTE3LjljMC0xMDEuNCAwLTE1Mi4xLTMxLjUtMTgzLjVTMzM0LjMgMzIgMjMzIDMyTDIxNSAzMkMxMTMuNyAzMiA2MyAzMiAzMS41IDYzLjV6TTc1LjYgMTY4LjNsNTEuMSAwYzEuNyA4NS41IDM5LjQgMTIxLjcgNjkuMyAxMjkuMmwwLTEyOS4yIDQ4LjIgMCAwIDczLjdjMjkuNS0zLjIgNjAuNS0zNi44IDcwLjktNzMuN2w0OC4yIDBjLTMuOSAxOS4yLTExLjggMzcuMy0yMy4xIDUzLjNzLTI1LjcgMjkuNS00Mi41IDM5LjZjMTguNyA5LjMgMzUuMiAyMi40IDQ4LjQgMzguNXMyMi45IDM0LjkgMjguMyA1NWwtNTMgMGMtNC45LTE3LjUtMTQuOC0zMy4xLTI4LjYtNDVzLTMwLjctMTkuNC00OC43LTIxLjZsMCA2Ni42LTUuOCAwYy0xMDIuMSAwLTE2MC4zLTcwLTE2Mi44LTE4Ni41eiJdfSwkVHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZ2l0aHViIixpY29uOls1MTIsNTEyLFtdLCJmMDliIiwiTTE3My45IDM5Ny40YzAgMi0yLjMgMy42LTUuMiAzLjYtMy4zIC4zLTUuNi0xLjMtNS42LTMuNiAwLTIgMi4zLTMuNiA1LjItMy42IDMtLjMgNS42IDEuMyA1LjYgMy42em0tMzEuMS00LjVjLS43IDIgMS4zIDQuMyA0LjMgNC45IDIuNiAxIDUuNiAwIDYuMi0ycy0xLjMtNC4zLTQuMy01LjJjLTIuNi0uNy01LjUgLjMtNi4yIDIuM3ptNDQuMi0xLjdjLTIuOSAuNy00LjkgMi42LTQuNiA0LjkgLjMgMiAyLjkgMy4zIDUuOSAyLjYgMi45LS43IDQuOS0yLjYgNC42LTQuNi0uMy0xLjktMy0zLjItNS45LTIuOXpNMjUyLjggOGMtMTM4LjcgMC0yNDQuOCAxMDUuMy0yNDQuOCAyNDQgMCAxMTAuOSA2OS44IDIwNS44IDE2OS41IDIzOS4yIDEyLjggMi4zIDE3LjMtNS42IDE3LjMtMTIuMSAwLTYuMi0uMy00MC40LS4zLTYxLjQgMCAwLTcwIDE1LTg0LjctMjkuOCAwIDAtMTEuNC0yOS4xLTI3LjgtMzYuNiAwIDAtMjIuOS0xNS43IDEuNi0xNS40IDAgMCAyNC45IDIgMzguNiAyNS44IDIxLjkgMzguNiA1OC42IDI3LjUgNzIuOSAyMC45IDIuMy0xNiA4LjgtMjcuMSAxNi0zMy43LTU1LjktNi4yLTExMi4zLTE0LjMtMTEyLjMtMTEwLjUgMC0yNy41IDcuNi00MS4zIDIzLjYtNTguOS0yLjYtNi41LTExLjEtMzMuMyAyLjYtNjcuOSAyMC45LTYuNSA2OSAyNyA2OSAyNyAyMC01LjYgNDEuNS04LjUgNjIuOC04LjVzNDIuOCAyLjkgNjIuOCA4LjVjMCAwIDQ4LjEtMzMuNiA2OS0yNyAxMy43IDM0LjcgNS4yIDYxLjQgMi42IDY3LjkgMTYgMTcuNyAyNS44IDMxLjUgMjUuOCA1OC45IDAgOTYuNS01OC45IDEwNC4yLTExNC44IDExMC41IDkuMiA3LjkgMTcgMjIuOSAxNyA0Ni40IDAgMzMuNy0uMyA3NS40LS4zIDgzLjYgMCA2LjUgNC42IDE0LjQgMTcuMyAxMi4xIDEwMC0zMy4yIDE2Ny44LTEyOC4xIDE2Ny44LTIzOSAwLTEzOC43LTExMi41LTI0NC0yNTEuMi0yNDR6TTEwNS4yIDM1Mi45Yy0xLjMgMS0xIDMuMyAuNyA1LjIgMS42IDEuNiAzLjkgMi4zIDUuMiAxIDEuMy0xIDEtMy4zLS43LTUuMi0xLjYtMS42LTMuOS0yLjMtNS4yLTF6bS0xMC44LTguMWMtLjcgMS4zIC4zIDIuOSAyLjMgMy45IDEuNiAxIDMuNiAuNyA0LjMtLjcgLjctMS4zLS4zLTIuOS0yLjMtMy45LTItLjYtMy42LS4zLTQuMyAuN3ptMzIuNCAzNS42Yy0xLjYgMS4zLTEgNC4zIDEuMyA2LjIgMi4zIDIuMyA1LjIgMi42IDYuNSAxIDEuMy0xLjMgLjctNC4zLTEuMy02LjItMi4yLTIuMy01LjItMi42LTYuNS0xem0tMTEuNC0xNC43Yy0xLjYgMS0xLjYgMy42IDAgNS45czQuMyAzLjMgNS42IDIuM2MxLjYtMS4zIDEuNi0zLjkgMC02LjItMS40LTIuMy00LTMuMy01LjYtMnoiXX0sRFR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImNvZGllcGllIixpY29uOls1MTIsNTEyLFtdLCJmMjg0IiwiTTQ0Mi41IDIwMi45YzMwLjcgMCAzMy41IDUzLjEtLjMgNTMuMWwtMTAuOCAwIDAgNDQuMy0yNi42IDAgMC05Ny40IDM3LjcgMHpNNDkyIDM1Mi42QzQ0OS45IDQ0NC41IDM3MC40IDUwNCAyNjggNTA0IDEzMSA1MDQgMjAgMzkzIDIwIDI1NlMxMzEgOCAyNjggOGM5Ny40IDAgMTcyLjggNTMuNyAyMTguMiAxMzguNEwzMDAuMiAyNTUuMiA0OTIgMzUyLjZ6bS0zOC41IDEyLjVsLTYwLjMtMzAuN2MtMjcuMSA0NC4zLTcwLjQgNzEuNC0xMjIuNCA3MS40LTgyLjUgMC0xNDkuMi02Ni43LTE0OS4yLTE0OC45IDAtODIuNSA2Ni43LTE0OS4yIDE0OS4yLTE0OS4yIDQ4LjQgMCA4OC45IDIzLjUgMTE2LjkgNjMuNGw1OS41LTM0LjZDNDA2LjUgNzMuOSAzNDIuNSAzNi41IDI2OCAzNi41IDE0Ni44IDM2LjUgNDguNSAxMzQuOCA0OC41IDI1NlMxNDYuOCA0NzUuNSAyNjggNDc1LjVjNzguNiAwIDE0Ni41LTQyLjEgMTg1LjUtMTEwLjR6Il19LExUdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJwaWVkLXBpcGVyIixpY29uOls0NDgsNTEyLFtdLCJmMmFlIiwiTTQ0MC4yIDIzLjJjLTI2LjcgNi44LTY4LjEgMjguNS0xMTQuNiA2Ny41LTMwLjktMTcuNS02NS44LTI2LjctMTAxLjQtMjYuNy0xMTQuOSAwLTIwOCA5My4xLTIwOCAyMDhzOTMuMSAyMDggMjA4IDIwOCAyMDgtOTMuMSAyMDgtMjA4Yy4xLTU0LjEtMjEtMTA2LjEtNTguNy0xNDQuOC02LjYgOC41LTEyLjMgMTcuNy0xNyAyNy40IDI4LjkgMzIuMyA0NC44IDc0LjEgNDQuOSAxMTcuNCAwIDk3LjctNzkuNCAxNzcuMS0xNzcuMSAxNzcuMS0zMC44IDAtNjEtOC4xLTg3LjYtMjMuNCA4Mi45LTEwNy4zIDE1MC44LTM3LjggMTg0LjMtMjI2LjYgNS44LTMyLjYgMjgtOTQuMyAxMjYuMi0xNjAuMiA4LjEtNS40IDIuNC0xOC4xLTctMTUuN3pNMTA5LjMgNDA2LjRDODkuOCAzODkuOCA3NC4yIDM2OS4yIDYzLjUgMzQ2cy0xNi4zLTQ4LjUtMTYuMy03NGMwLTk3LjcgNzkuNC0xNzcuMSAxNzcuMS0xNzcuMSAyNi42IDAgNTIuOCA2LjEgNzYuNiAxNy44LTY2IDYyLjEtMTI2LjkgMTUyLjktMTkxLjYgMjkzLjh6Il19LEVUdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJyYXNwYmVycnktcGkiLGljb246WzQ0OCw1MTIsW10sImY3YmIiLCJNMzkyLjUgMjMyLjVsLTMuNy02LjVjLjEtNDYuNC0yMS40LTY1LjMtNDYuNS03OS43IDcuNi0yIDE1LjQtMy42IDE3LjYtMTMuMiAxMy4xLTMuMyAxNS44LTkuNCAxNy4xLTE1LjggMy40LTIuMyAxNC44LTguNyAxMy42LTE5LjcgNi40LTQuNCAxMC0xMC4xIDguMS0xOC4xIDYuOS03LjUgOC43LTEzLjcgNS44LTE5LjQgOC4zLTEwLjMgNC42LTE1LjYgMS4xLTIwLjkgNi4yLTExLjIgLjctMjMuMi0xNi42LTIxLjItNi45LTEwLjEtMjEuOS03LjgtMjQuMi03LjgtMi42LTMuMi02LTYtMTYuNS00LjctNi44LTYuMS0xNC40LTUtMjIuMy0yLjEtOS4zLTcuMy0xNS41LTEuNC0yMi42IC44LTExLjMtMy42LTEzLjkgMS4zLTE5LjQgMy40LTEyLjMtMi42LTE2LjEgMy0yMiA4LjlsLTYuOS0uMWMtMTguNiAxMC44LTI3LjggMzIuOC0zMS4xIDQ0LjEtMy4zLTExLjMtMTIuNS0zMy4zLTMxLjEtNDQuMWwtNi45IC4xYy01LjktNS45LTkuNy0xMS41LTIyLTguOS01LjYtMi04LjEtNy0xOS40LTMuNC00LjYtMS40LTguOS00LjQtMTMuOS00LjMtMi42IC4xLTUuNSAxLTguNyAzLjUtNy45LTMtMTUuNS00LTIyLjMgMi4xLTEwLjUtMS4zLTE0IDEuNC0xNi41IDQuNy0yLjMgMC0xNy4zLTIuMy0yNC4yIDcuOC0xNy4zLTItMjIuNyAxMC0xNi41IDIxLjItMy41IDUuNC03LjIgMTAuNyAxLjEgMjAuOS0yLjkgNS43LTEuMSAxMS45IDUuOCAxOS40LTEuOCA4IDEuOCAxMy43IDguMSAxOC4xLTEuMiAxMSAxMC4yIDE3LjQgMTMuNiAxOS43IDEuMyA2LjQgNCAxMi40IDE3LjEgMTUuOCAyLjIgOS41IDEwIDExLjIgMTcuNiAxMy4yLTI1LjEgMTQuNC00Ni42IDMzLjMtNDYuNSA3OS43bC0zLjcgNi41Yy0yOC44IDE3LjItNTQuNyA3Mi43LTE0LjIgMTE3LjcgMi42IDE0LjEgNy4xIDI0LjIgMTEgMzUuNCA1LjkgNDUuMiA0NC41IDY2LjMgNTQuNiA2OC44IDE0LjkgMTEuMiAzMC44IDIxLjggNTIuMiAyOS4yIDIwLjMgMjAuNiA0Mi4zIDI4LjQgNjQuMyAyOC40bDEgMGMyMi4xIDAgNDQtNy44IDY0LjItMjguNCAyMS41LTcuNCAzNy4zLTE4IDUyLjItMjkuMiAxMC4yLTIuNSA0OC43LTIzLjYgNTQuNi02OC44IDMuOS0xMS4yIDguNC0yMS4zIDExLTM1LjQgNDAuNi00NS4xIDE0LjctMTAwLjUtMTQtMTE3Ljd6bS0yMi4yLThjLTEuNSAxOC43LTk4LjktNjUuMS04Mi4xLTY3LjkgNDUuNy03LjUgODMuNiAxOS4yIDgyLjEgNjcuOXptLTQzIDkzLjFjLTI0LjUgMTUuOC01OS44IDUuNi03OC44LTIyLjhzLTE0LjYtNjQuMiA5LjktODAgNTkuOC01LjYgNzguOCAyMi44IDE0LjYgNjQuMi05LjkgODB6TTI1OS40IDI5LjNjLjggNC4yIDEuOCA2LjggMi45IDcuNiA1LjQtNS44IDkuOC0xMS43IDE2LjgtMTcuMyAwIDMuMy0xLjcgNi44IDIuNSA5LjQgMy43LTUgOC44LTkuNSAxNS41LTEzLjMtMy4yIDUuNi0uNiA3LjMgMS4yIDkuNiA1LjEtNC40IDEwLTguOCAxOS40LTEyLjMtMi42IDMuMS02LjIgNi4yLTIuNCA5LjggNS4zLTMuMyAxMC42LTYuNiAyMy4xLTguOS0yLjggMy4xLTguNyA2LjMtNS4xIDkuNCA2LjYtMi41IDE0LTQuNCAyMi4xLTUuNC0zLjkgMy4yLTcuMSA2LjMtMy45IDguOCA3LjEtMi4yIDE2LjktNS4xIDI2LjQtMi42bC02IDYuMWMtLjcgLjggMTQuMSAuNiAyMy45IC44LTMuNiA1LTcuMiA5LjctOS4zIDE4LjIgMSAxIDUuOCAuNCAxMC40IDAtNC43IDkuOS0xMi44IDEyLjMtMTQuNyAxNi42IDIuOSAyLjIgNi44IDEuNiAxMS4yIC4xLTMuNCA2LjktMTAuNCAxMS43LTE2IDE3LjMgMS40IDEgMy45IDEuNiA5LjcgLjktNS4yIDUuNS0xMS40IDEwLjUtMTguOCAxNSAxLjMgMS41IDUuOCAxLjUgMTAgMS42LTYuNyA2LjUtMTUuMyA5LjktMjMuNCAxNC4yIDQgMi43IDYuOSAyLjEgMTAgMi4xLTUuNyA0LjctMTUuNCA3LjEtMjQuNCAxMCAxLjcgMi43IDMuNCAzLjQgNy4xIDQuMS05LjUgNS4zLTIzLjIgMi45LTI3IDUuNiAuOSAyLjcgMy42IDQuNCA2LjcgNS44LTE1LjQgLjktNTcuMy0uNi02NS40LTMyLjMgMTUuNy0xNy4zIDQ0LjQtMzcuNSA5My43LTYyLjYtMzguNCAxMi44LTczIDMwLTEwMiA1My41LTM0LjMtMTUuOS0xMC44LTU1LjkgNS44LTcxLjh6TTIyNSAxNDMuOWMyNC4yLS4zIDU0LjEgMTcuOCA1NCAzNC43LS4xIDE1LTIxIDI3LjEtNTMuOCAyNi45LTMyLjEtLjQtNTMuNy0xNS4yLTUzLjYtMjkuOCAwLTExLjkgMjYuMi0zMi41IDUzLjQtMzEuOHpNMTAyIDEzMS4xYzMuNy0uNyA1LjQtMS41IDcuMS00LjEtOS0yLjgtMTguNy01LjMtMjQuNC0xMCAzLjEgMCA2IC43IDEwLTIuMS04LjEtNC4zLTE2LjctNy43LTIzLjQtMTQuMiA0LjItLjEgOC43IDAgMTAtMS42LTcuNC00LjUtMTMuNi05LjUtMTguOC0xNSA1LjggLjcgOC4zIC4xIDkuNy0uOS01LjYtNS42LTEyLjctMTAuNC0xNi0xNy4zIDQuMyAxLjUgOC4zIDIgMTEuMi0uMS0xLjktNC4yLTEwLTYuNy0xNC43LTE2LjYgNC42IC40IDkuNCAxIDEwLjQgMC0yLjEtOC41LTUuOC0xMy4zLTkuMy0xOC4yIDkuOC0uMSAyNC42IDAgMjMuOS0uOGwtNi02LjFjOS41LTIuNSAxOS4zIC40IDI2LjQgMi42IDMuMi0yLjUtLjEtNS42LTMuOS04LjggOC4xIDEuMSAxNS40IDIuOSAyMi4xIDUuNCAzLjUtMy4xLTIuMy02LjMtNS4xLTkuNCAxMi41IDIuMyAxNy44IDUuNiAyMy4xIDguOSAzLjgtMy42IC4yLTYuNy0yLjQtOS44IDkuNCAzLjQgMTQuMyA3LjkgMTkuNCAxMi4zIDEuNy0yLjMgNC40LTQgMS4yLTkuNiA2LjcgMy44IDExLjggOC4zIDE1LjUgMTMuMyA0LjEtMi42IDIuNS02LjIgMi41LTkuNCA3IDUuNiAxMS40IDExLjUgMTYuOCAxNy4zIDEuMS0uOCAyLTMuNCAyLjktNy42IDE2LjYgMTUuOSA0MC4xIDU1LjkgNiA3MS44LTI5LTIzLjUtNjMuNi00MC43LTEwMi01My41IDQ5LjMgMjUgNzggNDUuMyA5My43IDYyLjYtOCAzMS44LTUwIDMzLjItNjUuNCAzMi4zIDMuMS0xLjQgNS44LTMuMiA2LjctNS44LTQtMi44LTE3LjYtLjQtMjcuMi01LjZ6bTYwLjEgMjQuMWMxNi44IDIuOC04MC42IDg2LjUtODIuMSA2Ny45LTEuNS00OC43IDM2LjUtNzUuNSA4Mi4xLTY3Ljl6TTU4LjcgMzQyYy0yMy43LTE4LjgtMzEuMy03My43IDEyLjYtOTguMyAyNi41LTcgOSAxMDcuOC0xMi42IDk4LjN6bTkxIDk4LjJjLTEzLjMgNy45LTQ1LjggNC43LTY4LjgtMjcuOS0xNS41LTI3LjQtMTMuNS01NS4yLTIuNi02My40IDE2LjMtOS44IDQxLjUgMy40IDYwLjkgMjUuNiAxNi45IDIwIDI0LjYgNTUuMyAxMC41IDY1Ljd6TTEyMy4zIDMyMC41Yy0yNC41LTE1LjgtMjguOS01MS42LTkuOS04MHM1NC4zLTM4LjYgNzguOC0yMi44IDI4LjkgNTEuNiA5LjkgODBjLTE5LjEgMjguNC01NC40IDM4LjYtNzguOCAyMi44ek0yMjUuNSA0OTZjLTI5LjQgMS4yLTU4LjItMjMuNy01Ny44LTMyLjMtLjQtMTIuNyAzNS44LTIyLjYgNTkuMy0yMiAyMy43LTEgNTUuNiA3LjUgNTUuNyAxOC45IC41IDExLTI4LjggMzUuOS01Ny4yIDM1LjR6bTU4LjktMTI0LjljLjIgMjkuNy0yNi4yIDUzLjgtNTguOCA1NHMtNTkuMi0yMy44LTU5LjQtNTMuNGwwLS42Yy0uMi0yOS43IDI2LjItNTMuOCA1OC44LTU0czU5LjIgMjMuOCA1OS40IDUzLjRsMCAuNnptODIuMiA0Mi43Yy0yNS4zIDM0LjYtNTkuNiAzNS45LTcyLjMgMjYuMy0xMy4zLTEyLjQtMy4yLTUwLjkgMTUuMS03MiAyMC45LTIzLjMgNDMuMy0zOC41IDU4LjktMjYuNiAxMC41IDEwLjMgMTYuNyA0OS4xLTEuNyA3Mi4zem0yMi45LTczLjJjLTIxLjUgOS40LTM5LTEwNS4zLTEyLjYtOTguMyA0My45IDI0LjcgMzYuMyA3OS42IDEyLjYgOTguM3oiXX0sUFR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImNzczMiLGljb246WzUxMiw1MTIsW10sImYxM2MiLCJNNDgwIDMybC02NCAzNjgtMjIzLjMgODAtMTkyLjctODAgMTkuNi05NC44IDgyIDAtOCA0MC42IDExNi40IDQ0LjQgMTM0LjEtNDQuNCAxOC44LTk3LjEtMzMzLjQgMCAxNi04MiAzMzMuNyAwIDEwLjUtNTIuNy0zMzMuNCAwIDE2LjMtODIgNDA3LjQgMHoiXX0sSVR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6Imh1YnNwb3QiLGljb246WzQ0OCw1MTIsW10sImYzYjIiLCJNMjM1LjggMjExLjZjLTI1LjEgMjMuNy00MC44IDU3LjMtNDAuOCA5NC42IDAgMjkuMyA5LjcgNTYuMyAyNiA3OEwxNzEuNSA0MzRjLTQuNC0xLjYtOS4xLTIuNS0xNC0yLjUtMTAuOCAwLTIwLjkgNC4yLTI4LjUgMTEuOHMtMTEuOCAxNy44LTExLjggMjguNiA0LjIgMjAuOSAxMS44IDI4LjUgMTcuOCAxMS42IDI4LjUgMTEuNmMxMC44IDAgMjAuOS0zLjkgMjguNi0xMS42IDcuNi03LjYgMTEuOC0xNy44IDExLjgtMjguNSAwLTQuMi0uNi04LjItMS45LTEyLjFsNTAtNTAuMmMyMiAxNi45IDQ5LjQgMjYuOSA3OS4zIDI2LjkgNzEuOSAwIDEzMC01OC4zIDEzMC0xMzAuMiAwLTY1LjItNDcuNy0xMTkuMi0xMTAuMi0xMjguN2wwLTYxLjZjMTcuNS03LjQgMjguMi0yMy44IDI4LjItNDIuOSAwLTI2LjEtMjAuOS00Ny45LTQ3LTQ3LjlTMjc5LjYgNDcgMjc5LjYgNzMuMWMwIDE5LjEgMTAuNyAzNS41IDI4LjIgNDIuOWwwIDYxLjJjLTE1LjIgMi4xLTI5LjYgNi43LTQyLjcgMTMuNi0yNy42LTIwLjktMTE3LjUtODUuNy0xNjguOS0xMjQuOCAxLjItNC40IDItOSAyLTEzLjggMC0yOC44LTIzLjUtNTIuMi01Mi40LTUyLjItMjguOCAwLTUyLjIgMjMuNC01Mi4yIDUyLjIgMCAyOC45IDIzLjQgNTIuMyA1Mi4yIDUyLjMgOS44IDAgMTguOS0yLjkgMjYuOC03LjZMMjM1LjggMjExLjZ6bTg5LjUgMjUuNmE2OSA2OSAwIDEgMSAwIDEzOCA2OSA2OSAwIDEgMSAwLTEzOHoiXX0sQVR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImNtcGxpZCIsaWNvbjpbNjQwLDUxMixbXSwiZTM2MCIsIk0yMjYuMSAzODguMmMwLS43LS4yLTEuNS0uNi0yLjFzLTEtMS4xLTEuNy0xLjRjLS41LS4yLTEuMS0uNC0xLjYtLjRsLTE0OS42IDBjLTMuMSAwLTYuMi0uOC04LjktMi4ycy01LjEtMy41LTYuOS02LjEtMi45LTUuNS0zLjMtOC42IDAtNi4yIDEuMS05LjFMODEuNiAyNTUuN2MyLTcuMiA2LjItMTMuNSAxMi0xOC4yczEyLjktNy40IDIwLjQtNy44bDE0OC42IDBjMS41LS4xIDIuOS0uNiA0LTEuNnMyLTIuMiAyLjQtMy42bDEwLjgtNDEuMWMuNC0xIC4zLTItLjEtMi45cy0xLjItMS42LTIuMS0yYy0uNC0uMi0uOS0uMy0xLjQtLjMtLjEgMC0uMSAwLS4yIDBsLTE0OC41IDBjLTIyLjIgMS4yLTQzLjQgOS4yLTYwLjggMjNzLTMwIDMyLjctMzYuMiA1NC4xTDMuNSAzNTguOGMtMy4yIDguNy00LjIgMTgtMyAyNy4xczQuNiAxNy45IDkuOSAyNS41IDEyLjMgMTMuOCAyMC41IDE4IDE3LjMgNi41IDI2LjUgNi42YzEgMCAxLjkgMCAyLjktLjFsMTQ4LjYgMGMxLjUtLjEgMi45LS43IDQtMS42czItMi4yIDIuNC0zLjZsMTAuNy00MS4xYy4yLS41IC4zLS45IC4zLTEuNHptODAuNS0zMDdjLjItLjQgLjMtLjkgLjMtMS40IDAtLjUtLjEtMS0uMy0xLjVzLS41LS45LS44LTEuMi0uOC0uNi0xLjItLjgtMS0uMy0xLjUtLjNsLTQxLjIgMGMtMS41IC4xLTIuOSAuNi00IDEuNnMtMiAyLjItMi40IDMuNmwtMjEuMyA4MC45IDUxLjEgMCAyMS40LTgwLjl6bS0xMjYuMyAyODdsNTEuMSAwIDMyLTEyMi42LTUxLjEgMC0zMiAxMjIuNnpNNTExLjkgNzkuN2MwLTEtLjUtMS45LTEuMi0yLjZzLTEuNy0xLjEtMi42LTEuMWMtLjEgMC0uMSAwLS4yIDBsLTQxIDBjLTEuNSAuMS0yLjkgLjYtNC4xIDEuNXMtMiAyLjItMi41IDMuNkwzNjguOSA0MzAuNmMtLjIgLjQtLjMgLjktLjMgMS4zIDAgMSAuNCAyIDEuMSAyLjdzMS43IDEuMSAyLjcgMS4xbDQxLjIgMGMxLjUtLjEgMi45LS42IDQtMS42czItMi4yIDIuNC0zLjZMNTExLjUgODEuMmMuMi0uNSAuMy0xIC4zLTEuNXpNMzI0LjYgMzg0LjVsLTQxIDBjLTEuNSAuMS0yLjkgLjctNCAxLjZzLTIgMi4yLTIuNCAzLjZsLTEwLjcgNDEuMWMtLjIgLjQtLjMgLjktLjMgMS40IDAgLjUgLjEgMSAuMyAxLjVzLjUgLjkgLjggMS4yIC44IC42IDEuMiAuOCAxIC4zIDEuNSAuM2MuMSAwIC4yIDAgLjMgMGw0MC45IDBjMS41LS4xIDIuOS0uNiA0LTEuNnMyLTIuMiAyLjQtMy42bDEwLjgtNDEuMWMuMi0uNiAuMy0xLjIgLjMtMS44cy0uMy0xLjItLjYtMS43LS44LS45LTEuMy0xLjItMS4yLS40LTEuOC0uNGMtLjEgMC0uMiAwLS4zIDBsMCAwek02MzYgNzYuMWwtNDEgMGMtMS41IC4xLTIuOSAuNi00IDEuNXMtMiAyLjItMi40IDMuNkw0OTcuMSA0MzAuNmMtLjIgLjQtLjIgLjktLjIgMS4zIDAgMSAuNCAyIDEuMSAyLjdzMS43IDEuMSAyLjcgMS4xbDQxLjEgMGMxLjUtLjEgMi45LS42IDQtMS42czItMi4yIDIuNC0zLjZMNjM5LjcgODEuMmMuMi0uNSAuMy0xIC4zLTEuNS0uMS0xLS41LTEuOS0xLjItMi41cy0xLjYtMS0yLjYtMWMtLjEgMC0uMSAwLS4yIDBsMC0uMXpNMzcxLjYgMjI1LjJsMTAuOC00MS4xYy4yLS40IC4yLS45IC4yLTEuNCAwLTEtLjQtMi0xLjEtMi43cy0xLjctMS4xLTIuNy0xLjFsLTQxLjMgMGMtMS41IC4xLTIuOSAuNy00IDEuNnMtMiAyLjItMi40IDMuNmwtMTAuOCA0MS4xYy0uMiAuNS0uMyAxLS4zIDEuNWwwIC4yYy4xIDEgLjUgMS44IDEuMiAyLjVzMS42IDEgMi42IDFjLjEgMCAuMiAwIC4zIDBsNDEuMSAwYzEuNS0uMSAyLjktLjYgNC0xLjZzMi0yLjIgMi40LTMuNnoiXX0sTlR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImR5YWxvZyIsaWNvbjpbNDQ4LDUxMixbXSwiZjM5OSIsIk0xNiAzMmwwIDExOS4yIDY0IDAgMC01NS4yIDEwNy4yIDBDMzAwLjYgOTYgMzY4IDE3Ni4yIDM2OCAyNTUuOSAzNjggMzMyIDMwOS40IDQxNiAxODcuMiA0MTZsLTE3MS4yIDAgMCA2NCAxNzEuMiAwQzM0Ny45IDQ4MCA0MzIgMzY3LjMgNDMyIDI1NS45IDQzMiAxOTcuMiA0MDkuOSAxNDIuNSAzNjkuNyAxMDEuNiAzMjQuOSA1NiAyNjEuNyAzMiAxODcuMiAzMkwxNiAzMnoiXX0sUlR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImVsZW1lbnRvciIsaWNvbjpbNTEyLDUxMixbXSwiZjQzMCIsIk0uNSAyNTZjMCAxNDEgMTEzLjYgMjU1IDI1NC42IDI1NSAxNDIgMCAyNTYtMTE0IDI1Ni0yNTUgMC0xNDAtMTE0LTI1My45LTI1Ni0yNTMuOS0xNDEgMC0yNTQuNiAxMTMuOS0yNTQuNiAyNTMuOXpNMTkyLjEgMTUwbDAgMjEzLTQzIDAgMC0yMTMgNDMgMHptNDIgMGwxMjggMCAwIDQzLTEyOCAwIDAtNDN6bTEyOCA4NWwwIDQzLTEyOCAwIDAtNDMgMTI4IDB6bS0xMjggODVsMTI4IDAgMCA0My0xMjggMCAwLTQzeiJdfSxPVHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZmlyc3Qtb3JkZXIiLGljb246WzQ0OCw1MTIsW10sImYyYjAiLCJNMTMuMyAyMjkuMmMuMS0uMSAuMi0uMyAuMy0uNCAwIC4xIDAgLjMtLjEgLjRsLS4yIDB6TTIyNC40IDk2LjZjLTcuMSAwLTE0LjYgLjYtMjEuNCAxLjdsMy43IDY3LjQtMjItNjRjLTE0LjMgMy43LTI3LjcgOS40LTQwIDE2LjZsMjkuNCA2MS40LTQ1LjEtNTAuOWMtMTEuNCA4LjktMjEuNyAxOS4xLTMwLjYgMzAuOWw1MC42IDQ1LjQtNjEuMS0yOS43Yy03LjEgMTIuMy0xMi45IDI1LjctMTYuNiA0MGw2NC4zIDIyLjYtNjgtNGMtLjkgNy4xLTEuNCAxNC42LTEuNCAyMnMuNiAxNC42IDEuNCAyMS43bDY3LjctNC02NCAyMi42YzMuNyAxNC4zIDkuNCAyNy43IDE2LjYgNDAuM0wxNDkgMzA2LjkgOTguMSAzNTJjOC45IDExLjcgMTkuMSAyMi4zIDMwLjkgMzAuOWw0NC45LTUwLjktMjkuNSA2MS40YzEyLjMgNy40IDI1LjcgMTMuMSA0MCAxNi45bDIyLjMtNjQuNi00IDY4YzcuMSAxLjEgMTQuNiAxLjcgMjEuNyAxLjcgNy40IDAgMTQuNi0uNiAyMS43LTEuN2wtNC02OC42IDIyLjYgNjUuMWMxNC4zLTQgMjcuNy05LjQgNDAtMTYuOWwtMjkuNC02MS4zIDQ0LjkgNTAuOWMxMS43LTguOSAyMi0xOS4xIDMwLjYtMzAuOWwtNTAuNi00NS4xIDYxLjEgMjkuNGM3LjEtMTIuMyAxMi45LTI1LjcgMTYuNi00MC4zbC02NC0yMi4zIDY3LjQgNGMxLjEtNy4xIDEuNC0xNC4zIDEuNC0yMS43cy0uMy0xNC45LTEuNC0yMmwtNjcuNyA0IDY0LTIyLjNjLTMuNy0xNC4zLTkuMS0yOC0xNi42LTQwLjNsLTYwLjkgMjkuNyA1MC42LTQ1LjRjLTguOS0xMS43LTE5LjEtMjItMzAuNi0zMC45bC00NS4xIDUwLjkgMjkuNC02MS4xYy0xMi4zLTcuNC0yNS43LTEzLjEtNDAtMTYuOWwtMjIuMyA2NC4zIDQtNjcuN2MtNy4xLTEuMi0xNC4zLTEuNy0yMS43LTEuN3pNNDQzLjggMTI4TDQ0My44IDM4NCAyMjQuNCA1MTIgNSAzODQgNSAxMjggMjI0LjQgMCA0NDMuOCAxMjh6bS0xNy4xIDEwLjNsLTIwMi4zLTExNy40LTIwMi4zIDExNy40IDAgMjM1LjEgMjAyLjMgMTE3LjcgMjAyLjMtMTE3LjcgMC0yMzUuMXpNMjI0LjQgMzcuMWwxODcuNyAxMDkuNCAwIDIxOC45LTE4Ny43IDEwOS41LTE4Ny43LTEwOS41IDAtMjE4LjggMTg3LjctMTA5LjV6bTAgNTAuOWMtOTIuMyAwLTE2Ni45IDc1LjEtMTY2LjkgMTY4IDAgOTIuNiA3NC42IDE2Ny43IDE2Ni45IDE2Ny43IDkyIDAgMTY2LjktNzUuMSAxNjYuOS0xNjcuNyAwLTkyLjktNzQuOS0xNjgtMTY2LjktMTY4eiJdfSxGVHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZHJpYmJibGUiLGljb246WzUxMiw1MTIsW10sImYxN2QiLCJNMjU2IDhhMjQ4IDI0OCAwIDEgMCAwIDQ5NiAyNDggMjQ4IDAgMSAwIDAtNDk2ek00MjAgMTIyLjRjMjkuNSAzNiA0Ny40IDgyIDQ3LjggMTMyLTctMS41LTc3LTE1LjctMTQ3LjUtNi44LTUuOC0xNC0xMS4yLTI2LjQtMTguNi00MS42IDc4LjMtMzIgMTEzLjgtNzcuNSAxMTguMy04My41ek0zOTYuNCA5Ny45Yy0zLjggNS40LTM1LjcgNDguMy0xMTEgNzYuNS0zNC43LTYzLjgtNzMuMi0xMTYuMi03OS0xMjQgNjcuMi0xNi4yIDEzOCAxLjMgMTkwLjEgNDcuNXpNMTY1LjkgNjQuNmM1LjYgNy43IDQzLjQgNjAuMSA3OC41IDEyMi41LTk5LjEgMjYuMy0xODYuNCAyNS45LTE5NS44IDI1LjggMTMuNy02NS43IDU4LTEyMC40IDExNy4zLTE0OC4zek00NC4yIDI1Ni4zYzAtMi4yIDAtNC4zIC4xLTYuNSA5LjMgLjIgMTExLjkgMS41IDIxNy43LTMwLjEgNi4xIDExLjkgMTEuOSAyMy45IDE3LjIgMzUuOS03Ni42IDIxLjYtMTQ2LjIgODMuNS0xODAuNSAxNDIuMy0zMy44LTM3LjYtNTQuNS04Ny4yLTU0LjUtMTQxLjZ6TTEyNiA0MjMuNGMyMi4xLTQ1LjIgODIuMi0xMDMuNiAxNjcuNi0xMzIuOCAyOS43IDc3LjMgNDIgMTQyLjEgNDUuMiAxNjAuNi02OC4xIDI5LTE1MCAyMS4xLTIxMi44LTI3Ljl6bTI0OC40IDguNWMtMi4yLTEyLjktMTMuNC03NC45LTQxLjItMTUxIDY2LjQtMTAuNiAxMjQuNyA2LjggMTMxLjkgOS4xLTkuNCA1OC45LTQzLjMgMTA5LjgtOTAuOCAxNDJ6Il19LHpiPXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImxpbmtlZGluIixpY29uOls0NDgsNTEyLFtdLCJmMDhjIiwiTTQxNiAzMkwzMS45IDMyQzE0LjMgMzIgMCA0Ni41IDAgNjQuM0wwIDQ0Ny43QzAgNDY1LjUgMTQuMyA0ODAgMzEuOSA0ODBMNDE2IDQ4MGMxNy42IDAgMzItMTQuNSAzMi0zMi4zbDAtMzgzLjRDNDQ4IDQ2LjUgNDMzLjYgMzIgNDE2IDMyek0xMzUuNCA0MTZsLTY2LjQgMCAwLTIxMy44IDY2LjUgMCAwIDIxMy44LS4xIDB6TTEwMi4yIDk2YTM4LjUgMzguNSAwIDEgMSAwIDc3IDM4LjUgMzguNSAwIDEgMSAwLTc3ek0zODQuMyA0MTZsLTY2LjQgMCAwLTEwNGMwLTI0LjgtLjUtNTYuNy0zNC41LTU2LjctMzQuNiAwLTM5LjkgMjctMzkuOSA1NC45bDAgMTA1LjgtNjYuNCAwIDAtMjEzLjggNjMuNyAwIDAgMjkuMiAuOSAwYzguOS0xNi44IDMwLjYtMzQuNSA2Mi45LTM0LjUgNjcuMiAwIDc5LjcgNDQuMyA3OS43IDEwMS45bDAgMTE3LjJ6Il19LEJUdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJjYy1wYXlwYWwiLGljb246WzU3Niw1MTIsW10sImYxZjQiLCJNMTg2LjMgMjU4LjJjMCAxMi4yLTkuNyAyMS41LTIyIDIxLjUtOS4yIDAtMTYtNS4yLTE2LTE1IDAtMTIuMiA5LjUtMjIgMjEuNy0yMiA5LjMgMCAxNi4zIDUuNyAxNi4zIDE1LjV6TTgwLjUgMjA5LjdsLTQuNyAwYy0xLjUgMC0zIDEtMy4yIDIuN2wtNC4zIDI2LjcgOC4yLS4zYzExIDAgMTkuNS0xLjUgMjEuNS0xNC4yIDIuMy0xMy40LTYuMi0xNC45LTE3LjUtMTQuOXptMjg0IDBsLTQuNSAwYy0xLjggMC0zIDEtMy4yIDIuN2wtNC4yIDI2LjcgOC0uM2MxMyAwIDIyLTMgMjItMTgtLjEtMTAuNi05LjYtMTEuMS0xOC4xLTExLjF6TTU3NiA4MGwwIDM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEw0OCA0ODBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4TDAgODBDMCA1My41IDIxLjUgMzIgNDggMzJsNDgwIDBjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTEyOC4zIDIxNS40YzAtMjEtMTYuMi0yOC0zNC43LTI4bC00MCAwYy0yLjUgMC01IDItNS4yIDQuN0wzMiAyOTQuMmMtLjMgMiAxLjIgNCAzLjIgNGwxOSAwYzIuNyAwIDUuMi0yLjkgNS41LTUuN2w0LjUtMjYuNmMxLTcuMiAxMy4yLTQuNyAxOC00LjcgMjguNiAwIDQ2LjEtMTcgNDYuMS00NS44em04NC4yIDguOGwtMTkgMGMtMy44IDAtNCA1LjUtNC4yIDguMi01LjgtOC41LTE0LjItMTAtMjMuNy0xMC0yNC41IDAtNDMuMiAyMS41LTQzLjIgNDUuMiAwIDE5LjUgMTIuMiAzMi4yIDMxLjcgMzIuMiA5IDAgMjAuMi00LjkgMjYuNS0xMS45LS41IDEuNS0xIDQuNy0xIDYuMiAwIDIuMyAxIDQgMy4yIDRsMTcuMiAwYzIuNyAwIDUtMi45IDUuNS01LjdsMTAuMi02NC4zYy4zLTEuOS0xLjItMy45LTMuMi0zLjl6TTI1MyAzMjIuMWw2My43LTkyLjZjLjUtLjUgLjUtMSAuNS0xLjcgMC0xLjctMS41LTMuNS0zLjItMy41bC0xOS4yIDBjLTEuNyAwLTMuNSAxLTQuNSAyLjVsLTI2LjUgMzktMTEtMzcuNWMtLjgtMi4yLTMtNC01LjUtNGwtMTguNyAwYy0xLjcgMC0zLjIgMS44LTMuMiAzLjUgMCAxLjIgMTkuNSA1Ni44IDIxLjIgNjIuMS0yLjcgMy44LTIwLjUgMjguNi0yMC41IDMxLjYgMCAxLjggMS41IDMuMiAzLjIgMy4ybDE5LjIgMGMxLjgtLjEgMy41LTEuMSA0LjUtMi42ek00MTIuMyAyMTUuNGMwLTIxLTE2LjItMjgtMzQuNy0yOGwtMzkuNyAwYy0yLjcgMC01LjIgMi01LjUgNC43bC0xNi4yIDEwMmMtLjIgMiAxLjMgNCAzLjIgNGwyMC41IDBjMiAwIDMuNS0xLjUgNC0zLjJsNC41LTI5YzEtNy4yIDEzLjItNC43IDE4LTQuNyAyOC40IDAgNDUuOS0xNyA0NS45LTQ1Ljh6bTg0LjIgOC44bC0xOSAwYy0zLjggMC00IDUuNS00LjMgOC4yLTUuNS04LjUtMTQtMTAtMjMuNy0xMC0yNC41IDAtNDMuMiAyMS41LTQzLjIgNDUuMiAwIDE5LjUgMTIuMiAzMi4yIDMxLjcgMzIuMiA5LjMgMCAyMC41LTQuOSAyNi41LTExLjktLjMgMS41LTEgNC43LTEgNi4yIDAgMi4zIDEgNCAzLjIgNGwxNy4zIDBjMi43IDAgNS0yLjkgNS41LTUuN2wxMC4yLTY0LjNjLjMtMS45LTEuMi0zLjktMy4yLTMuOXpNNTQ0IDE5MC45YzAtMi0xLjUtMy41LTMuMi0zLjVsLTE4LjUgMGMtMS41IDAtMyAxLjItMy4yIDIuN2wtMTYuMiAxMDQtLjMgLjVjMCAxLjggMS41IDMuNSAzLjUgMy41bDE2LjUgMGMyLjUgMCA1LTIuOSA1LjItNS43bDE2LjItMTAxLjIgMC0uM3ptLTkwIDUxLjhjLTEyLjIgMC0yMS43IDkuNy0yMS43IDIyIDAgOS43IDcgMTUgMTYuMiAxNSAxMiAwIDIxLjctOS4yIDIxLjctMjEuNSAuMS05LjgtNi45LTE1LjUtMTYuMi0xNS41eiJdfSxIVHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZGhsIixpY29uOls2NDAsNTEyLFtdLCJmNzkwIiwiTTIzOCAzMDEuMmw1OC43IDAgMjIuMy0zMC4yLTU4LjcgMC0yMi4zIDMwLjJ6TTAgMjgyLjlsMCA2LjQgODEuOCAwIDQuNy02LjQtODYuNSAwek0xNzIuOSAyNzFjLTguNyAwLTYtMy42LTQuNi01LjUgMi44LTMuOCA3LjYtMTAuNCAxMC40LTE0LjFzMi44LTUuOS0yLjgtNS45bC01MSAwLTQxLjEgNTUuOCAxMDAuMSAwYzMzLjEgMCA1MS41LTIyLjUgNTcuMi0zMC4zbC02OC4yIDB6bTMxNy41LTYuOWwzOS4zLTUzLjQtNjIuMiAwLTM5LjMgNTMuNCA2Mi4yIDB6TTk1LjMgMjcxbC05NS4zIDAgMCA2LjQgOTAuNiAwIDQuNy02LjR6bTExMS0yNi42Yy0yLjggMy44LTcuNSAxMC40LTEwLjMgMTQuMi0xLjQgMi00LjEgNS41IDQuNiA1LjVsNDUuNiAwczcuMy0xMCAxMy41LTE4LjRjOC40LTExLjQgLjctMzUtMjkuMi0zNWwtMTE3LjkgMC0yMC40IDI3LjggMTExLjQgMGM1LjYgMCA1LjUgMi4yIDIuNyA1Ljl6TTAgMzAxLjJsNzMuMSAwIDQuNy02LjQtNzcuOCAwIDAgNi40em0zMjMgMGw1OC43IDAgMjIuMy0zMC4yLTU4LjcgMGMtLjEgMC0yMi4zIDMwLjItMjIuMyAzMC4yem0yMjIgLjFsOTUgMCAwLTYuNC05MC4zIDAtNC43IDYuNHpNNTY3LjMgMjcxbC00LjcgNi40IDc3LjQgMCAwLTYuNC03Mi43IDB6bS0xMy41IDE4LjNsODYuMiAwIDAtNi40LTgxLjUgMC00LjcgNi40ek0zODkuNiAyMTAuN2wtMjIuNSAzMC42LTI2LjIgMCAyMi41LTMwLjYtNTguNyAwLTM5LjMgNTMuNCAxNDMuNiAwIDM5LjMtNTMuNC01OC43IDB6TTQyMy4xIDI3MXMtNC4zIDUuOS02LjQgOC43Yy03LjQgMTAtLjkgMjEuNiAyMy4yIDIxLjZsOTQuMyAwIDIyLjMtMzAuMy0xMzMuNCAweiJdfSxxVHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToidGV4IixpY29uOls2NDAsNTEyLFtdLCJlN2ZmIiwiTTYyMC44IDk1LjRjLTMwLjggLjQtNDIuMSAxNi42LTQ3LjcgMjQuNWwtLjEgLjEtNTUuNyA4MC41IDgyLjggMTIxLjFjNy41IDEwLjYgMTEuMyAxMi41IDM1LjQgMTIuNWwwIDkuMWMtOS4xLS43LTI4LS43LTM3LjctLjctMTIuNCAwLTMwLjggMC00Mi45IC43bDAtOS4xYzEzLjItLjggMTYuNi03LjMgMTYuNi0xMC4yIDAtMS4xIDAtMi4zLTMtNi40bC02NS41LTk2LjMtNjAuMiA4Ny45Yy0xLjkgMi43LTMuOCA1LjQtMy44IDEwLjIgMCA2LjEgMy40IDEzLjYgMTUgMTQuN2wwIDkuMWMtOS40LS43LTI3LjEtLjctMzcuMi0uN2wtMi44IDAtMTEuNyA4Mi42LTE5NS45IDAgMC05LjFjMjYuNyAwIDMwLjkgMCAzMC45LTE2LjlsMC0yMDMuMmMwLTE2LjktNC4zLTE2LjktMzAuOS0xNi45bDAtMTAuMyAxOS44IDBjLTQuOC02MS4xLTEwLjgtNzEuNy02OC03MS44bC0yMC43IDBjLTYuOCAxLjUtNi44IDYuMS02LjggMTQuNGwwIDIwNWMwIDEzLjYgMS4xIDE3LjggMzIuNCAxNy44bDEwLjUgMCAwIDkuMS0uNCAwYy0xNy45LS4zLTM2LjctLjctNTQuOS0uN3MtMzYuOSAuMy01NC44IC43bC0uNiAwIDAtOS4xIDEwLjcgMGMzMS43IDAgMzIuOC00LjEgMzIuOC0xNy44bDAtMjA1YzAtOC43IDAtMTMuMi03LjItMTQuM2wtMjAuOCAwYy01OC40IDAtNjMuNyAxMC45LTY4LjYgNzMuM2wtNi44IDAgNi4zLTgzLjMgMjE3LjUgMCA2LjEgODEuOCAxNjQuMSAwIDkgODMuMy02LjggMGMtNS4zLTQ5LjgtMTIuMS03My03MC4zLTczbC01MS41IDBjLTE1IDAtMTUuOCAxLjktMTUuOCAxNC42bDAgOTMuMyAzNS41IDBjMzUuNSAwIDM4LjktMTIuOCAzOC45LTQ0bDYgMCAwIDk3LjktNiAwYzAtMzEuOC0zLjQtNDQuOC0zOC45LTQ0LjhsLTM1LjUgMCAwIDEwNS4yYzAgMTMgLjcgMTQuOCAxNS44IDE0LjhsNTIuMiAwYzYxLjEgMCA2OS45LTI1LjggNzcuNC03My42LTcuNyAwLTE2LjMgLjItMjIuMiAuN2wwLTkuMWM3LjIgMCAzMS43LS40IDQ3LjgtMjMuOGw2NS41LTk1LjctNzIuNy0xMDYuN2MtOC4zLTExLjctMTUuMS0xMi41LTM1LjgtMTIuNWwwLTkuMWM5LjEgLjcgMjcuOSAuNyAzNy43IC43IDEyLjQgMCAzMC44IDAgNDIuOS0uN2wwIDkuMWMtMTIuNSAuNC0xNi42IDYuOC0xNi42IDEwLjIgMCAxLjEgLjQgMi4zIDMgNi40bDU1LjcgODEuNiA0OS43LTcyLjFjMi43LTMuNyA0LjUtNi44IDQuNS0xMS4zIDAtNi4xLTMtMTMuNi0xNS0xNC44bDAtOS4xYzkuNCAuNyAyNC44IC43IDM3LjIgLjcgOSAwIDIzLjMgMCAzMi0uN2wwIDkuMXoiXX0salR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImNsYXVkZSIsaWNvbjpbNTEyLDUxMixbXSwiZTg2MSIsIk0xMDAuNCAzNDAuNWwxMDAuNy01Ni41IDEuNy00LjktMS43LTIuNy00LjkgMC0xNi44LTEtNTcuNS0xLjYtNDkuOS0yLjEtNDguMy0yLjYtMTIuMi0yLjYtMTEuNC0xNSAxLjItNy41IDEwLjItNi45IDE0LjcgMS4zYzE4LjkgMS4zIDQ1LjkgMy4xIDgxIDUuNmwzNS4yIDIuMSA1Mi4yIDUuNCA4LjMgMCAxLjItMy40LTIuOC0yLjEtMi4yLTIuMS01MC4zLTM0LjEtNTQuNC0zNi0yOC41LTIwLjctMTUuNC0xMC41LTcuOC05LjgtMy40LTIxLjUgMTQtMTUuNCAxOC44IDEuMyA0LjggMS4zIDE5IDE0LjcgNDAuNyAzMS41IDUzLjEgMzkuMSA3LjggNi41IDMuMS0yLjIgLjQtMS42LTMuNS01LjgtMjguOS01Mi4yLTMwLjgtNTMuMS0xMy43LTIyLTMuNi0xMy4yYy0xLjMtNS40LTIuMi0xMC0yLjItMTUuNWwxNS45LTIxLjYgOC44LTIuOCAyMS4yIDIuOCA4LjkgNy44IDEzLjIgMzAuMiAyMS40IDQ3LjUgMzMuMiA2NC42IDkuNyAxOS4yIDUuMiAxNy44IDEuOSA1LjQgMy40IDAgMC0zLjEgMi43LTM2LjQgNS00NC43IDQuOS01Ny41IDEuNy0xNi4yIDgtMTkuNCAxNS45LTEwLjUgMTIuNCA1LjkgMTAuMiAxNC43LTEuNCA5LjUtNi4xIDM5LjUtMTEuOSA2MS45LTcuOCA0MS41IDQuNSAwIDUuMi01LjIgMjEtMjcuOCAzNS4yLTQ0LjEgMTUuNS0xNy41IDE4LjEtMTkuMyAxMS42LTkuMiAyMiAwIDE2LjIgMjQuMS03LjMgMjQuOS0yMi43IDI4LjctMTguOCAyNC40LTI3IDM2LjMtMTYuOCAyOSAxLjYgMi4zIDQtLjQgNjAuOS0xMyAzMi45LTUuOSAzOS4zLTYuNyAxNy44IDguMyAxLjkgOC40LTcgMTcuMi00MiAxMC40LTQ5LjIgOS44LTczLjMgMTcuMy0uOSAuNyAxIDEuMyAzMyAzLjEgMTQuMSAuOCAzNC42IDAgNjQuNCA0LjggMTYuOCAxMS4xIDEwLjEgMTMuNi0xLjcgMTAuNC0yNS45IDEzLjJjLTE1LjUtMy43LTU0LjQtMTIuOS0xMTYuNi0yNy43bC0yOC03LTMuOSAwIDAgMi4zIDIzLjMgMjIuOCA0Mi43IDM4LjYgNTMuNSA0OS44IDIuNyAxMi4zLTYuOSA5LjctNy4zLTEtNDctMzUuNC0xOC4xLTE1LjktNDEuMS0zNC42LTIuNyAwIDAgMy42IDkuNSAxMy45IDUwIDc1LjIgMi42IDIzLTMuNiA3LjUtMTMgNC41LTE0LjItMi42LTI5LjMtNDEuMS0zMC4yLTQ2LjMtMjQuNC00MS41LTMgMS43LTE0LjQgMTU0LjgtNi43IDcuOS0xNS41IDUuOS0xMy05LjgtNi45LTE1LjkgNi45LTMxLjUgOC4zLTQxLjEgNi43LTMyLjcgNi4xLTQwLjYgMy42LTEzLjUtLjItLjktMyAuNC0zMC42IDQyLTQ2LjUgNjIuOS0zNi44IDM5LjQtOC44IDMuNS0xNS4zLTcuOSAxLjQtMTQuMSA4LjUtMTIuNiA1MC45LTY0LjggMzAuNy00MC4yIDE5LjgtMjMuMi0uMS0zLjQtMS4yIDAtMTM1LjMgODcuOC0yNC4xIDMuMS0xMC40LTkuNyAxLjMtMTUuOSA0LjktNS4yIDQwLjctMjgtLjEgLjEgMCAuMXoiXX0sVlR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNob3BpZnkiLGljb246WzQ0OCw1MTIsW10sImUwNTciLCJNMzg4LjUgMTA0LjFjLS4yLTEuMS0uNy0yLjEtMS41LTIuOHMtMS44LTEuMi0yLjktMS4yYy0yIDAtMzcuMi0uOC0zNy4yLS44cy0yMS42LTIwLjgtMjkuNi0yOC44bDAgNDMyLjcgMTI1LjctMzEuMnMtNTQtMzY1LjUtNTQuNC0zNjcuOXpNMjg4LjkgNzAuNWMtMS45LTYuMS00LjMtMTEuOS03LjItMTcuNi0xMC40LTIwLTI2LTMwLjktNDQuNC0zMC45LTEuMyAwLTIuNyAuMS00IC40LS40LS44LTEuMi0xLjItMS42LTItOC04LjgtMTguNC0xMi44LTMwLjgtMTIuNC0yNCAuOC00OCAxOC02Ny4yIDQ4LjgtMTMuNiAyMS42LTI0IDQ4LjgtMjYuOCA3MC4xLTI3LjYgOC40LTQ2LjggMTQuNC00Ny4yIDE0LjgtMTQgNC40LTE0LjQgNC44LTE2IDE4LTEuMiAxMC0zOCAyOTEuOC0zOCAyOTEuOGwzMDIuNiA1Mi41IDAtNDM4LjNjLTEuNSAuMS0yLjkgLjItNC40IC40IDAgMC01LjYgMS42LTE0LjggNC40ek0yMzMuNiA4Ny43Yy0xNiA0LjgtMzMuNiAxMC40LTUwLjggMTUuNiA0LjgtMTguOCAxNC40LTM3LjYgMjUuNi01MCA0LjQtNC40IDEwLjQtOS42IDE3LjItMTIuOCA2LjggMTQuNCA4LjQgMzQgOCA0Ny4yek0yMDAuOCAyNC40YzUtLjIgMTAgMS4xIDE0LjQgMy42LTYuNCAzLjItMTIuOCA4LjQtMTguOCAxNC40LTE1LjIgMTYuNC0yNi44IDQyLTMxLjYgNjYuNS0xNC40IDQuNC0yOC44IDguOC00MiAxMi44IDguOC0zOC40IDQxLjItOTYuNCA3OC05Ny4yek0xNTQuNCAyNDQuNmMxLjYgMjUuNiA2OS4yIDMxLjIgNzMuMiA5MS43IDIuOCA0Ny42LTI1LjIgODAuMS02NS42IDgyLjUtNDguOCAzLjItNzUuNi0yNS42LTc1LjYtMjUuNmwxMC40LTQ0czI2LjggMjAuNCA0OC40IDE4LjhjMTQtLjggMTkuMi0xMi40IDE4LjgtMjAuNC0yLTMzLjYtNTcuMi0zMS42LTYwLjgtODYuOS0zLjItNDYuNCAyNy4yLTkzLjMgOTQuNS05Ny43IDI2LTEuNiAzOS4yIDQuOCAzOS4yIDQuOGwtMTUuMiA1Ny42cy0xNy4yLTgtMzcuNi02LjRjLTI5LjYgMi0zMCAyMC44LTI5LjYgMjUuNnpNMjQ5LjYgODIuOWMwLTEyLTEuNi0yOS4yLTcuMi00My42IDE4LjQgMy42IDI3LjIgMjQgMzEuMiAzNi40LTcuMiAyLTE1LjIgNC40LTI0IDcuMnoiXX0sTzhlPXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNxdWFyZS1yZWRkaXQiLGljb246WzQ0OCw1MTIsWyJyZWRkaXQtc3F1YXJlIl0sImYxYTIiLCJNNjQgMzJsMzIwIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAzMjBjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMyek0zMDUuOSAxNjYuNGMyMC42IDAgMzcuMy0xNi43IDM3LjMtMzcuM3MtMTYuNy0zNy4zLTM3LjMtMzcuM2MtMTggMC0zMy4xIDEyLjgtMzYuNiAyOS44LTMwLjIgMy4yLTUzLjggMjguOC01My44IDU5LjlsMCAuMmMtMzIuOCAxLjQtNjIuOCAxMC43LTg2LjYgMjUuNS04LjgtNi44LTE5LjktMTAuOS0zMi0xMC45LTI4LjkgMC01Mi4zIDIzLjQtNTIuMyA1Mi4zIDAgMjEgMTIuMyAzOSAzMC4xIDQ3LjQgMS43IDYwLjcgNjcuOSAxMDkuNiAxNDkuMyAxMDkuNnMxNDcuNi00OC45IDE0OS4zLTEwOS43YzE3LjctOC40IDI5LjktMjYuNCAyOS45LTQ3LjMgMC0yOC45LTIzLjQtNTIuMy01Mi4zLTUyLjMtMTIgMC0yMyA0LTMxLjkgMTAuOC0yNC0xNC45LTU0LjMtMjQuMi04Ny41LTI1LjRsMC0uMWMwLTIyLjIgMTYuNS00MC43IDM3LjktNDMuNyAzLjkgMTYuNSAxOC43IDI4LjcgMzYuMyAyOC43bC4yLS4yek0xNTUgMjQ4LjFjMTQuNiAwIDI1LjggMTUuNCAyNSAzNC40cy0xMS44IDI1LjktMjYuNSAyNS45LTI3LjUtNy43LTI2LjYtMjYuNyAxMy41LTMzLjUgMjguMS0zMy41bDAtLjF6bTE2Ni40IDMzLjVjLjkgMTktMTIgMjYuNy0yNi42IDI2LjdzLTI1LjYtNi45LTI2LjUtMjUuOSAxMC4zLTM0LjQgMjUtMzQuNCAyNy4zIDE0LjYgMjguMSAzMy41bDAgLjF6bS00Mi4xIDQ5LjZjLTkgMjEuNS0zMC4zIDM2LjctNTUuMSAzNi43cy00Ni4xLTE1LjEtNTUuMS0zNi43Yy0xLjEtMi42IC43LTUuNCAzLjQtNS43IDE2LjEtMS42IDMzLjUtMi41IDUxLjctMi41czM1LjYgLjkgNTEuNyAyLjVjMi43IC4zIDQuNSAzLjEgMy40IDUuN3oiXX0sVVR0PU84ZSxXVHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiY3JlYXRpdmUtY29tbW9ucy1uYyIsaWNvbjpbNTEyLDUxMixbXSwiZjRlOCIsIk0yNTUuNiA4QzM5NS40IDggNTA0IDExNS45IDUwNCAyNTYgNTA0IDQwMy4yIDM4NS41IDUwNCAyNTUuNiA1MDQgMTIxLjEgNTA0IDggMzkzLjIgOCAyNTYgOCAxMjMuMSAxMTIuNyA4IDI1NS42IDh6TTYzLjggMTg5LjFjLTcuNCAyMC40LTExLjEgNDIuNy0xMS4xIDY2LjkgMCAxMTAuOSA5Mi4xIDIwMi40IDIwMy43IDIwMi40IDEyMi40IDAgMTc3LjItMTAxLjggMTc4LjUtMTA0LjFsLTkzLjQtNDEuNmMtNy43IDM3LjEtNDEuMiA1My02OC4yIDU1LjRsMCAzOC4xLTI4LjggMCAwLTM4LjJjLTI3LjUtLjMtNTIuNi0xMC4yLTc1LjMtMjkuN2wzNC4xLTM0LjVjMzEuNyAyOS40IDg2LjQgMzEuOCA4Ni40LTIuMiAwLTYuMi0yLjItMTEuMi02LjYtMTUuMS0xNC4yLTYtMS44LS4xLTIxOS4zLTk3LjR6TTI1Ni40IDUyLjNDMjE4IDUyLjMgMTQ0IDYxIDg1LjkgMTQ1LjNsOTQuOCA0Mi41YzEwLTMxLjMgNDAuNC00Mi45IDYzLjgtNDQuM2wwLTM4LjEgMjguOCAwIDAgMzguMWMyMi43IDEuMiA0My40IDguOSA2MiAyM0wzMDMgMTk5LjdjLTQyLjctMjkuOS04My41LTgtNzAgMTEuMSA1My40IDI0LjEgNDMuOCAxOS44IDkzIDQxLjZsMTI3LjEgNTYuN2M0LjEtMTcuNCA2LjItMzUuMSA2LjItNTMuMSAwLTU3LTE5LjgtMTA1LTU5LjMtMTQzLjktMzkuMy0zOS45LTg3LjItNTkuOC0xNDMuNi01OS44eiJdfSxHVHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZ2FsYWN0aWMtcmVwdWJsaWMiLGljb246WzUxMiw1MTIsW10sImY1MGMiLCJNMjU2IDhhMjQ4IDI0OCAwIDEgMSAwIDQ5NiAyNDggMjQ4IDAgMSAxIDAtNDk2em0wIDE2LjVhMjMxLjUgMjMxLjUgMCAxIDAgMCA0NjIuOSAyMzEuNSAyMzEuNSAwIDEgMCAwLTQ2Mi45em0yNy42IDIxLjhsMCAyNC42YzMwLjMgNC41IDU5IDE2LjMgODMuNiAzNC41bDE3LjQtMTcuNGMtMjguNy0yMi4xLTYzLjMtMzYuOS0xMDEtNDEuOHptLTU1LjQgLjFjLTM3LjYgNC45LTcyLjIgMTkuOC0xMDAuOSA0MS45bDE3LjMgMTcuNCAuMSAwYzI0LjEtMTcuOCA1Mi42LTMwLjEgODMuNS0zNC43bDAtMjQuNXptMTIuMiA1MC4ybDAgODIuOWMtMTAgMi0xOS40IDUuOS0yNy43IDExLjRsLTU4LjYtNTguNi0yMS45IDIxLjkgNTguNyA1OC43Yy01LjUgOC4yLTkuNCAxNy42LTExLjUgMjcuNmwtODIuOSAwIDAgMzEgODIuOSAwYzIgMTAgNiAxOS4zIDExLjUgMjcuNWwtNTguNyA1OC43IDIxLjkgMjEuOSA1OC42LTU4LjZjOC40IDUuNiAxNy44IDkuNSAyNy43IDExLjVsMCA4Mi45IDMxIDAgMC04Mi45YzEwLTIgMTkuNC02LjEgMjcuNi0xMS41bDU4LjcgNTguNyAyMS45LTIxLjktNTguNy01OC43YzUuNS04LjIgOS41LTE3LjUgMTEuNS0yNy41bDgyLjkgMCAwLTMxLTgyLjkgMGMtMi0xMC02LTE5LjQtMTEuNS0yNy42bDU4LjctNTguNy0yMS45LTIxLjktNTguNyA1OC43Yy04LjItNS41LTE3LjYtOS41LTI3LjYtMTEuNWwwLTgyLjktMzEgMHptMTgzLjIgMzAuN2wtMTcuNCAxNy40YzE4LjMgMjQuNiAzMC4yIDUzLjQgMzQuNyA4My43bDI0LjYgMGMtNS0zNy43LTE5LjgtNzIuMy00MS45LTEwMXptLTMzNS42IC4xYy0yMi4xIDI4LjctMzYuOSA2My4zLTQxLjggMTAwLjlsMjQuNiAwYzQuNi0zMSAxNi44LTU5LjQgMzQuNi04My41TDg4LjIgMTI3LjR6TTQ2LjMgMjgzLjdjNC45IDM3LjYgMTkuNyA3Mi4yIDQxLjggMTAwLjlsMTcuNC0xNy40Qzg3LjcgMzQzLjEgNzUuNiAzMTQuNiA3MSAyODMuN2wtMjQuNiAwIDAgMHptMzk0LjcgMGMtNC42IDMxLTE2LjggNTkuNS0zNC43IDgzLjZsMTcuNCAxNy40YzIyLjEtMjguNyAzNy02My4zIDQxLjktMTAxbC0yNC42IDB6TTE0NC43IDQwNi40bC0xNy40IDE3LjRjMjguNyAyMi4xIDYzLjMgMzcgMTAxIDQxLjlsMC0yNC42Yy0zMS00LjYtNTkuNS0xNi44LTgzLjYtMzQuNnptMjIyLjUgMGMtMjQuMSAxNy44LTUyLjYgMzAuMS04My42IDM0LjdsMCAyNC42YzM3LjctNC45IDcyLjItMTkuOCAxMDEtNDEuOGwtMTcuMy0xNy40LS4xIDB6Il19LENiPXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImZhY2Vib29rIixpY29uOls1MTIsNTEyLFs2MmUzXSwiZjA5YSIsIk01MTIgMjU2QzUxMiAxMTQuNiAzOTcuNCAwIDI1NiAwUzAgMTE0LjYgMCAyNTZDMCAzNzYgODIuNyA0NzYuOCAxOTQuMiA1MDQuNWwwLTE3MC4zLTUyLjggMCAwLTc4LjIgNTIuOCAwIDAtMzMuN2MwLTg3LjEgMzkuNC0xMjcuNSAxMjUtMTI3LjUgMTYuMiAwIDQ0LjIgMy4yIDU1LjcgNi40bDAgNzAuOGMtNi0uNi0xNi41LTEtMjkuNi0xLTQyIDAtNTguMiAxNS45LTU4LjIgNTcuMmwwIDI3LjggODMuNiAwLTE0LjQgNzguMi02OS4zIDAgMCAxNzUuOUM0MTMuOCA0OTQuOCA1MTIgMzg2LjkgNTEyIDI1NnoiXX0sS1R0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImdpdGxhYiIsaWNvbjpbNTEyLDUxMixbXSwiZjI5NiIsIk01MDQgMjA0LjZsLS43LTEuOC02OS43LTE4MS44Yy0xLjQtMy42LTMuOS02LjYtNy4yLTguNi0yLjQtMS42LTUuMS0yLjUtOC0yLjhzLTUuNyAuMS04LjQgMS4xLTUuMSAyLjctNy4xIDQuOGMtMS45IDIuMS0zLjMgNC43LTQuMSA3LjRsLTQ3IDE0NC0xOTAuNSAwLTQ3LjEtMTQ0Yy0uOC0yLjgtMi4yLTUuMy00LjEtNy40LTItMi4xLTQuNC0zLjctNy4xLTQuOC0yLjYtMS01LjUtMS40LTguNC0xLjFzLTUuNiAxLjItOCAyLjhjLTMuMiAyLTUuOCA1LjEtNy4yIDguNkw5LjggMjAyLjggOSAyMDQuNmMtMTAgMjYuMi0xMS4zIDU1LTMuNSA4MiA3LjcgMjYuOSAyNCA1MC43IDQ2LjQgNjcuNmwuMyAuMiAuNiAuNCAxMDYgNzkuNWMzOC41IDI5LjEgNjYuNyA1MC4zIDg0LjYgNjMuOSAzLjcgMS45IDguMyA0LjMgMTMgNC4zczkuMy0yLjQgMTMtNC4zYzE3LjktMTMuNSA0Ni4xLTM0LjkgODQuNi02My45bDEwNi43LTc5LjkgLjMtLjNjMjIuNC0xNi45IDM4LjctNDAuNiA0NS42LTY3LjUgOC42LTI3IDcuNC01NS44LTIuNi04MnoiXX0sWVR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InFxIixpY29uOls0NDgsNTEyLFtdLCJmMWQ2IiwiTTQzNC4xIDQyMC40Yy0xMS41IDEuNC00NC45LTUyLjctNDQuOS01Mi43IDAgMzEuMy0xNi4xIDcyLjItNTEgMTAxLjggMTYuOCA1LjIgNTQuOCAxOS4yIDQ1LjggMzQuNC03LjMgMTIuMy0xMjUuNSA3LjktMTU5LjYgNC0zNC4xIDMuOC0xNTIuMyA4LjMtMTU5LjYtNC05LTE1LjIgMjguOS0yOS4yIDQ1LjgtMzQuNC0zNC45LTI5LjUtNTEuMS03MC40LTUxLjEtMTAxLjggMCAwLTMzLjMgNTQuMS00NC45IDUyLjctNS40LS42LTEyLjQtMjkuNiA5LjMtOTkuNyAxMC4zLTMzIDIyLTYwLjUgNDAuMS0xMDUuOC0zLjEtMTE2LjkgNDUuMi0yMTUgMTYwLjMtMjE1IDExMy43IDAgMTYzLjIgOTYuMSAxNjAuMyAyMTUgMTguMSA0NS4yIDI5LjkgNzIuOSA0MC4xIDEwNS44IDIxLjggNzAuMSAxNC43IDk5LjEgOS4zIDk5Ljd6Il19LFpUdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzdHJpcGUiLGljb246WzY0MCw1MTIsW10sImY0MjkiLCJNMTY1IDE0NC43bC00My4zIDkuMi0uMiAxNDIuNGMwIDI2LjMgMTkuOCA0My4zIDQ2LjEgNDMuMyAxNC42IDAgMjUuMy0yLjcgMzEuMi01LjlsMC0zMy44Yy01LjcgMi4zLTMzLjcgMTAuNS0zMy43LTE1LjdsMC02My4yIDMzLjcgMCAwLTM3LjgtMzMuNyAwLS4xLTM4LjV6bTg5LjEgNTEuNmwtMi43LTEzLjEtMzguNCAwIDAgMTUzLjIgNDQuMyAwIDAtMTAzLjFjMTAuNS0xMy44IDI4LjItMTEuMSAzMy45LTkuM2wwLTQwLjhjLTYtMi4xLTI2LjctNi0zNy4xIDEzLjF6TTM0Ni40IDEyNGwtNDQuNiA5LjUgMCAzNi4yIDQ0LjYtOS41IDAtMzYuMnpNNDQuOSAyMjguM2MwLTYuOSA1LjgtOS42IDE1LjEtOS43IDEzLjUgMCAzMC43IDQuMSA0NC4yIDExLjRsMC00MS44Yy0xNC43LTUuOC0yOS40LTguMS00NC4xLTguMS0zNiAwLTYwIDE4LjgtNjAgNTAuMiAwIDQ5LjIgNjcuNSA0MS4yIDY3LjUgNjIuNCAwIDguMi03LjEgMTAuOS0xNyAxMC45LTE0LjcgMC0zMy43LTYuMS00OC42LTE0LjJsMCA0MGMxNi41IDcuMSAzMy4yIDEwLjEgNDguNSAxMC4xIDM2LjkgMCA2Mi4zLTE1LjggNjIuMy00Ny44IDAtNTIuOS02Ny45LTQzLjQtNjcuOS02My40ek02NDAgMjYxLjZjMC00NS41LTIyLTgxLjQtNjQuMi04MS40cy02Ny45IDM1LjktNjcuOSA4MS4xYzAgNTMuNSAzMC4zIDc4LjIgNzMuNSA3OC4yIDIxLjIgMCAzNy4xLTQuOCA0OS4yLTExLjVsMC0zMy40Yy0xMi4xIDYuMS0yNiA5LjgtNDMuNiA5LjgtMTcuMyAwLTMyLjUtNi4xLTM0LjUtMjYuOWw4Ni45IDBjLjItMi4zIC42LTExLjYgLjYtMTUuOXptLTg3LjktMTYuOGMwLTIwIDEyLjMtMjguNCAyMy40LTI4LjQgMTAuOSAwIDIyLjUgOC40IDIyLjUgMjguNGwtNDUuOSAwek00MzkuMiAxODAuMmMtMTcuNCAwLTI4LjYgOC4yLTM0LjggMTMuOWwtMi4zLTExLTM5LjEgMCAwIDIwNC44IDQ0LjQtOS40IC4xLTUwLjJjNi40IDQuNyAxNS45IDExLjIgMzEuNCAxMS4yIDMxLjggMCA2MC44LTIzLjIgNjAuOC03OS42IC4xLTUxLjYtMjkuMy03OS43LTYwLjUtNzkuN3pNNDI4LjYgMzAyLjdjLTEwLjQgMC0xNi42LTMuOC0yMC45LTguNGwtLjMtNjZjNC42LTUuMSAxMS04LjggMjEuMi04LjggMTYuMiAwIDI3LjQgMTguMiAyNy40IDQxLjQgLjEgMjMuOS0xMC45IDQxLjgtMjcuNCA0MS44ek0zMDEuOSAzMzYuNGw0NC42IDAgMC0xNTMuMi00NC42IDAgMCAxNTMuMnoiXX0sWFR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImRhaWx5bW90aW9uIixpY29uOls0NDgsNTEyLFtdLCJlMDUyIiwiTTI5OC45IDI2N2MtNy40LTQuMi0xNS44LTYuMy0yNC40LTYuMi0xMy4yIDAtMjQuNCA0LjQtMzMuNCAxMy4zcy0xMy42IDIwLTEzLjYgMzMuNGMwIDE0LjEgNC40IDI1LjYgMTMuMyAzNC42czIwIDEzLjQgMzMuNCAxMy40YzEzLjcgMCAyNS00LjYgMzQuMS0xMy44UzMyMiAzMjEuMSAzMjIgMzA3LjVjMC04LjItMi4xLTE2LjMtNi4xLTIzLjUtNC03LjEtOS44LTEzLTE3LTE3ek0wIDMybDAgNDQ4IDQ0OCAwIDAtNDQ4LTQ0OCAwek0zNzQuNyA0MDUuM2wtNTMuMSAwIDAtMjMuOS0uNyAwYy0xMC41IDE3LjUtMjkuMSAyNi4yLTU1LjggMjYuMi0xOC40IDAtMzQuNy00LjQtNDguOS0xMy4xLTE0LjEtOC42LTI1LjUtMjEtMzIuOS0zNS44LTcuNy0xNS4xLTExLjYtMzIuMS0xMS42LTUwLjkgMC0xOC40IDMuOS0zNS4xIDExLjgtNTAuMiA3LjUtMTQuNyAxOC45LTI3LjEgMzIuOS0zNS44IDE0LjEtOC43IDMwLTEzLjEgNDcuNy0xMy4xIDEwLjItLjEgMjAuMiAxLjYgMjkuNyA1LjIgOC45IDMuNSAxNy4yIDkuMSAyNSAxN2wwLTc3LjkgNTUuOC0xMi4xIDAgMjY0LjR6Il19LFFUdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzdGVhbSIsaWNvbjpbNTEyLDUxMixbXSwiZjFiNiIsIk01MDQgMjU2YzAgMTM3LTExMS4yIDI0OC0yNDguNCAyNDgtMTEzLjggMC0yMDkuNi03Ni4zLTIzOS0xODAuNGw5NS4yIDM5LjNjNi40IDMyLjEgMzQuOSA1Ni40IDY4LjkgNTYuNCAzOS4yIDAgNzEuOS0zMi40IDcwLjItNzMuNWw4NC41LTYwLjJjNTIuMSAxLjMgOTUuOC00MC45IDk1LjgtOTMuNSAwLTUxLjYtNDItOTMuNS05My43LTkzLjVzLTkzLjcgNDItOTMuNyA5My41bDAgMS4yLTU5LjIgODUuN2MtMTUuNS0uOS0zMC43IDMuNC00My41IDEyLjFMOCAyMzYuMUMxOC4yIDEwOC40IDEyNS4xIDggMjU1LjYgOCAzOTIuOCA4IDUwNCAxMTkgNTA0IDI1NnpNMTYzLjcgMzg0LjNsLTMwLjUtMTIuNmM1LjYgMTEuNiAxNS4zIDIwLjggMjcuMiAyNS44IDI2LjkgMTEuMiA1Ny44LTEuNiA2OS0yOC40IDUuNC0xMyA1LjUtMjcuMyAuMS00MC4zUzIxNCAzMDUuNiAyMDEgMzAwLjJjLTEyLjktNS40LTI2LjctNS4yLTM4LjktLjZsMzEuNSAxM2MxOS44IDguMiAyOS4yIDMwLjkgMjAuOSA1MC43LTguMyAxOS45LTMxIDI5LjItNTAuOCAyMXpNMzM3LjUgMTI5LjhhNjIuMyA2Mi4zIDAgMSAxIDAgMTI0LjYgNjIuMyA2Mi4zIDAgMSAxIDAtMTI0LjZ6bS4xIDEwOWE0Ni44IDQ2LjggMCAxIDAgMC05My42IDQ2LjggNDYuOCAwIDEgMCAwIDkzLjZ6Il19LEpUdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ2ZW5tby12IixpY29uOls1MTIsNTEyLFtdLCJlODViIiwiTTQ2Ni41IDE0LjhjMTcuNCAyOC43IDI1LjMgNTguMiAyNS4zIDk1LjUgMCAxMTktMTAxLjkgMjczLjUtMTg0LjcgMzgyLjFsLTE4OC45IDAtNzUuOC00NTEuNSAxNjUuNC0xNS43IDQwLjEgMzIxLjNjMzcuNC02MC44IDgzLjYtMTU2LjMgODMuNi0yMjEuNCAwLTM1LjYtNi4xLTU5LjktMTUuNy03OS45TDQ2Ni41IDE0Ljh6Il19LEY4ZT17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzbmFwY2hhdCIsaWNvbjpbNTEyLDUxMixbNjIxMjQsInNuYXBjaGF0LWdob3N0Il0sImYyYWIiLCJNNDk3LjEgMzY2LjZjLTMuNC05LjItOS44LTE0LjEtMTcuMS0xOC4yLTEuNC0uOC0yLjYtMS41LTMuNy0xLjktMi4yLTEuMS00LjQtMi4yLTYuNi0zLjQtMjIuOC0xMi4xLTQwLjYtMjcuMy01My00NS40LTMuNS01LjEtNi42LTEwLjUtOS4xLTE2LjEtMS4xLTMtMS00LjctLjItNi4zIC44LTEuMiAxLjctMi4yIDIuOS0zIDMuOS0yLjYgOC01LjIgMTAuNy03IDQuOS0zLjIgOC44LTUuNyAxMS4yLTcuNCA5LjQtNi41IDE1LjktMTMuNSAyMC0yMS4zIDIuOS01LjQgNC41LTExLjMgNC45LTE3LjRzLS42LTEyLjItMi44LTE3LjhjLTYuMi0xNi4zLTIxLjYtMjYuNC00MC4zLTI2LjQtMy45IDAtNy45IC40LTExLjcgMS4yLTEgLjItMi4xIC41LTMuMSAuNyAuMi0xMS4yLS4xLTIyLjktMS4xLTM0LjUtMy41LTQwLjgtMTcuOC02Mi4xLTMyLjctNzkuMi05LjUtMTAuNy0yMC43LTE5LjctMzMuMi0yNi43LTIyLjYtMTIuOS00OC4yLTE5LjQtNzYuMS0xOS40cy01My40IDYuNS03NiAxOS40Yy0xMi41IDctMjMuNyAxNi4xLTMzLjMgMjYuOC0xNC45IDE3LTI5LjIgMzguNC0zMi43IDc5LjItMSAxMS42LTEuMiAyMy40LTEuMSAzNC41LTEtLjMtMi0uNS0zLjEtLjctMy45LS44LTcuOC0xLjItMTEuNy0xLjItMTguNyAwLTM0LjEgMTAuMS00MC4zIDI2LjQtMi4yIDUuNy0zLjIgMTEuOC0yLjggMTcuOHMyIDEyIDQuOSAxNy40YzQuMSA3LjggMTAuNyAxNC43IDIwIDIxLjMgMi41IDEuNyA2LjQgNC4yIDExLjIgNy40IDIuNiAxLjcgNi41IDQuMiAxMC4zIDYuNyAxLjMgLjkgMi40IDIgMy4zIDMuMyAuOCAxLjYgLjggMy40LS40IDYuNi0yLjUgNS41LTUuNSAxMC44LTguOSAxNS44LTEyLjEgMTcuNy0yOS40IDMyLjYtNTEuNCA0NC42LTExLjcgNi4yLTIzLjkgMTAuMy0yOSAyNC4zLTMuOSAxMC41LTEuMyAyMi41IDguNSAzMi42IDMuNiAzLjggNy44IDYuOSAxMi40IDkuNCA5LjYgNS4zIDE5LjggOS4zIDMwLjMgMTIuMSAyLjIgLjYgNC4zIDEuNSA2LjEgMi43IDMuNiAzLjEgMy4xIDcuOSA3LjggMTQuOCAyLjQgMy42IDUuNCA2LjcgOSA5LjEgMTAgNi45IDIxLjMgNy40IDMzLjIgNy44IDEwLjggLjQgMjMgLjkgMzYuOSA1LjUgNS44IDEuOSAxMS44IDUuNiAxOC43IDkuOSAxNi43IDEwLjMgMzkuNiAyNC4zIDc3LjggMjQuM3M2MS4zLTE0LjEgNzguMS0yNC40YzYuOS00LjIgMTIuOS03LjkgMTguNS05LjggMTMuOS00LjYgMjYuMi01LjEgMzYuOS01LjUgMTEuOS0uNSAyMy4yLS45IDMzLjItNy44IDQuMi0yLjkgNy43LTYuNyAxMC4yLTExLjIgMy40LTUuOCAzLjQtOS45IDYuNi0xMi44IDEuOC0xLjIgMy43LTIuMSA1LjgtMi42IDEwLjctMi44IDIxLTYuOSAzMC44LTEyLjIgNC45LTIuNiA5LjMtNi4xIDEzLTEwLjJsLjEtLjJjOS4yLTkuOSAxMS41LTIxLjUgNy44LTMxLjh6bS0zNCAxOC4zYy0yMC43IDExLjUtMzQuNSAxMC4yLTQ1LjMgMTcuMS05LjEgNS45LTMuNyAxOC41LTEwLjMgMjMuMS04LjEgNS42LTMyLjItLjQtNjMuMiA5LjktMjUuNiA4LjUtNDIgMzIuOC04OCAzMi44cy02Mi0yNC4zLTg4LjEtMzIuOWMtMzEtMTAuMy01NS4xLTQuMi02My4yLTkuOS02LjYtNC42LTEuMi0xNy4yLTEwLjMtMjMuMS0xMC43LTYuOS0yNC41LTUuNy00NS4zLTE3LjEtMTMuMi03LjMtNS43LTExLjgtMS4zLTEzLjkgNzUuMS0zNi40IDg3LjEtOTIuNiA4Ny43LTk2LjcgLjYtNSAxLjQtOS00LjItMTQuMS01LjQtNS0yOS4yLTE5LjctMzUuOC0yNC4zLTEwLjktNy42LTE1LjctMTUuMy0xMi4yLTI0LjYgMi41LTYuNSA4LjUtOC45IDE0LjktOC45IDIgMCA0IC4yIDYgLjcgMTIgMi42IDIzLjcgOC42IDMwLjQgMTAuMiAuOCAuMiAxLjYgLjMgMi41IC4zIDMuNiAwIDQuOS0xLjggNC42LTUuOS0uOC0xMy4xLTIuNi0zOC43LS42LTYyLjYgMi44LTMyLjkgMTMuNC00OS4yIDI2LTYzLjYgNi4xLTYuOSAzNC41LTM3IDg4LjktMzdTMzM5IDc0LjIgMzQ1IDgxLjFjMTIuNiAxNC40IDIzLjIgMzAuNyAyNiA2My42IDIuMSAyMy45IC4zIDQ5LjUtLjYgNjIuNi0uMyA0LjMgMSA1LjkgNC42IDUuOSAuOCAwIDEuNy0uMSAyLjUtLjMgNi43LTEuNiAxOC40LTcuNiAzMC40LTEwLjIgMi0uNCA0LS43IDYtLjcgNi40IDAgMTIuNCAyLjUgMTQuOSA4LjkgMy41IDkuNC0xLjIgMTctMTIuMiAyNC42LTYuNiA0LjYtMzAuNCAxOS4zLTM1LjggMjQuMy01LjYgNS4xLTQuOCA5LjEtNC4yIDE0LjIgLjUgNC4yIDEyLjUgNjAuNCA4Ny43IDk2LjcgNC40IDIuMiAxMS45IDYuNy0xLjMgMTQuMXoiXX0sZSR0PUY4ZSx0JHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZ2FsYWN0aWMtc2VuYXRlIixpY29uOls1MTIsNTEyLFtdLCJmNTBkIiwiTTI0OS45IDMzLjVsMCAyNi4xYy0xMy42IDIwLjYtMjMuOSAxMDguNi0yNC41IDIxNS4zIDExLjctMTUuNiAxOS4xLTMzLjMgMTkuMS00OC4ybDAtMTYuOWMwLTUuMyAuOC0xMC41IDIuMi0xNS42IC42LTIuMSAxLjQtNC4xIDIuNi01LjhzMy40LTMuOCA2LjctMy44IDUuNCAyLjEgNi43IDMuOGMxLjIgMS44IDIgMy43IDIuNiA1LjggMS40IDUuMSAyLjIgMTAuMyAyLjIgMTUuNmwwIDE2LjljMCAxNC45IDcuNCAzMi42IDE5LjEgNDguMi0uNi0xMDYuOC0xMC45LTE5NC43LTI0LjUtMjE1LjNsMC0yNi4xLTEyLjMgMHpNMjIzLjUgMTgxLjNjLTkuNSAyLjEtMTguNyA1LjItMjcuNSA5LjEgOC45IDE2LjEgOS44IDMyLjYgMS43IDM3LjMtOCA0LjYtMjEuOC00LjItMzEuNC0xOS44LTExLjYgOC44LTIxLjkgMTkuMy0zMC42IDMxLjEgMTQuNyA5LjYgMjIuOSAyMi45IDE4LjMgMzAuNy00LjUgNy43LTIwIDcuMS0zNS41LTEtNS44IDEzLjItOS43IDI3LjUtMTEuNiA0Mi40IDkuNyAuMiAxOC43IDIuNCAyNi4yIDYgMTcuOC0uMyAzMi44LTIgNDAuNS00LjIgNS42LTI2LjQgMjMtNDguMiA0Ni4zLTU5LjUgLjctMjUuNiAxLjktNDkuNyAzLjUtNzIuMXptNjUgMGMxLjYgMjIuNCAyLjcgNDYuNSAzLjUgNzIuMSAyMy4zIDExLjMgNDAuOCAzMy4yIDQ2LjMgNTkuNSA3LjcgMi4zIDIyLjcgMy45IDQwLjUgNC4yIDcuNS0zLjcgMTYuNS01LjggMjYuMi02LTEuOS0xNC45LTUuOS0yOS4yLTExLjctNDIuNC0xNS40IDguMS0zMC45IDguNy0zNS41IDEtNC42LTcuNyAzLjYtMjEuMSAxOC4zLTMwLjctOC43LTExLjgtMTktMjIuMy0zMC42LTMxLjEtOS41IDE1LjYtMjMuNCAyNC40LTMxLjQgMTkuOC04LjEtNC42LTcuMi0yMS4yIDEuNy0zNy4zLTguOC0zLjktMTgtNy0yNy40LTkuMXpNMjU2IDE4OS45Yy0zLjIgMC01LjkgOC44LTYuMSAxOS45bDAgMCAwIDE2LjljMCA0MS40LTQ5IDk1LTkzLjUgOTUtNTIgMC0xMjIuOC0xLjQtMTU2LjQgMjkuMmwwIDIuNWM5LjQgMTcuMSAyMC42IDMzLjIgMzMuMiA0OCAxMi41LTIxLjEgNTEuNi00MSAxMDgtNDEuNCA0NS43IDEgNzkgMjAuMyA5MC44IDQwLjkgMCAwIDAgMCAwIC4xIDcuNyAyLjEgMTUuOCAzLjIgMjQgMy4yIDguMiAwIDE2LjQtMS4xIDI0LTMuMiAwIDAgMCAwIDAtLjEgMTEuNy0yMC41IDQ1LjEtMzkuOCA5MC44LTQwLjkgNTYuNCAuNCA5NS41IDIwLjMgMTA4IDQxLjQgMTIuNi0xNC44IDIzLjgtMzAuOSAzMy4yLTQ4bDAtMi41Yy0zMy42LTMwLjYtMTA0LjQtMjkuMi0xNTYuNC0yOS4yLTQ0LjUgMC05My41LTUzLjYtOTMuNS05NWwwLTE2LjktLjEgMGMtLjItMTEuMS0yLjktMTkuOS02LjEtMTkuOXptMCAxNzcuOWE0MC42IDQwLjYgMCAxIDEgMC04MS4zIDQwLjYgNDAuNiAwIDEgMSAwIDgxLjN6bTAtNzMuNmEzMyAzMyAwIDEgMCAwIDY1LjkgMzMgMzMgMCAxIDAgMC02NS45em0wIDU5LjhhMjYuOCAyNi44IDAgMSAxIDAtNTMuNiAyNi44IDI2LjggMCAxIDEgMCA1My42em0tMTE0LjggMTNjLTEwLjIgLjEtMjEuNiAuNC0zMC41IDEuNyAuNCA0LjQgMS41IDE4LjYgNy4xIDI5LjggOS4xLTIuNiAxOC40LTMuOSAyNy42LTMuOSA0MS4zIC45IDcxLjUgMzQuNCA3OC4zIDc0LjVsLjEgNC43YzEwLjQgMS45IDIxLjIgMi45IDMyLjIgMi45IDExIDAgMjEuOC0xIDMyLjItMi45bC4xLTQuN2M2LjgtNDAuMSAzNy03My41IDc4LjMtNzQuNSA5LjMgMCAxOC41IDEuMyAyNy42IDMuOSA1LjYtMTEuMSA2LjctMjUuMyA3LjEtMjkuOC04LjktMS4zLTIwLjMtMS42LTMwLjUtMS43LTE4LjggLjQtMzUuMiA0LjItNDguNiA5LjctMTIuNSAxNi0yOS4yIDMwLTQ5LjYgMzMuMS0uMSAwLS4yIDAtLjMgMCAwIDAtLjEgMC0uMiAuMS01LjIgMS4xLTEwLjYgMS42LTE2LjIgMS42LTUuNSAwLTEwLjktLjUtMTYuMi0xLjYtLjEgMC0uMSAwLS4yLS4xLS4xIDAtLjIgMC0uMyAwLTIwLjQtMy0zNy0xNy00OS42LTMzLjEtMTMuNC01LjUtMjkuOS05LjItNDguNi05Ljd6Il19LGEkdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJwaG9lbml4LWZyYW1ld29yayIsaWNvbjpbNjQwLDUxMixbXSwiZjNkYyIsIk0yMTIuOSAzNDQuM2MzLjgtLjEgMjIuOC0xLjQgMjUuNi0yLjItMi40LTIuNi00My42LTEtNjgtNDkuNi00LjMtOC42LTcuNS0xNy42LTYuNC0yNy42IDIuOS0yNS41IDMyLjktMzAgNTItMTguNSAzNiAyMS42IDYzLjMgOTEuMyAxMTMuNyA5Ny41IDM3IDQuNSA4NC42LTE3IDEwOC4yLTQ1LjQtLjYtLjEtLjgtLjItMS0uMS0uNCAuMS0uOCAuMi0xLjEgLjMtMzMuMyAxMi4xLTk0LjMgOS43LTEzNC43LTE0LjgtMzcuNi0yMi44LTUzLjEtNTguNy01MS44LTc0LjYgMS44LTIxLjMgMjIuOS0yMy4yIDM1LjktMTkuNiAxNC40IDMuOSAyNC40IDE3LjYgMzguOSAyNy40IDE1LjYgMTAuNCAzMi45IDEzLjcgNTEuMyAxMC4zIDE0LjktMi43IDM0LjQtMTIuMyAzNi41LTE0LjUtMS4xLS4xLTEuOC0uMS0yLjUtLjItNi4yLS42LTEyLjQtLjgtMTguNS0xLjctMTExLjItMTYuNS0xMjguOS0xNjMuNi0yNTIuNS0xNzMuMS00NC4zLTMuNC05OS40IDguMS0xMzYuMyAzNS0uOCAuNi0xLjUgMS4yLTIuMiAxLjggLjEgLjIgLjEgLjMgLjIgLjUgLjggMCAxLjYtLjEgMi40LS4yIDYuMy0xIDEyLjUtLjggMTguNyAuMyAyMy44IDQuMyA0Ny43IDIzLjEgNTUuOSA3Ni41IDUuMyAzNC4zLS43IDUwLjggOCA4Ni4xIDE5IDc3LjEgOTEgMTA3LjYgMTI3LjcgMTA2LjR6TTc1LjMgNjQuOWMtLjktMS0uOS0xLjItMS4zLTIgMTIuMS0yLjYgMjQuMi00LjEgMzYuNi00LjgtMS4xIDE0LjctMjIuMiAyMS4zLTM1LjMgNi44ek0yNzIuMiA0MTUuNGMtNDIuOCAxLjItOTItMjYuNy0xMjMuNS02MS40LTQuNi01LTE2LjgtMjAuMi0xOC42LTIzLjRsLjQtLjRjNi42IDQuMSAyNS43IDE4LjYgNTQuOCAyNyAyNC4yIDcgNDguMSA2LjMgNzEuNi0zLjMgMjIuNy05LjMgNDEtLjUgNDMuMSAyLjktMTguNSAzLjgtMjAuMSA0LjQtMjQgNy45LTUuMSA0LjQtNC42IDExLjcgNyAxNy4yIDI2LjIgMTIuNCA2My0yLjggOTcuMiAyNS40IDIuNCAyIDguMSA3LjggMTAuMSAxMC43LS4xIC4yLS4zIC4zLS40IC41LTQuOC0xLjUtMTYuNC03LjUtNDAuMi05LjMtMjQuNy0yLTQ2LjMgNS4zLTc3LjUgNi4yek00NDcgMTYzLjRjMTYuNC01LjIgNDEuMy0xMy40IDY2LjUtMy4zIDE2LjEgNi41IDI2LjIgMTguNyAzMi4xIDM0LjYgMy41IDkuNCA1LjEgMTkuNyA1LjEgMjguNy0uMiAwLS40IDAtLjYgLjEtLjItLjQtLjQtLjktLjUtMS4zLTUtMjItMjkuOS00My44LTY3LjYtMjkuOS01MC4yIDE4LjYtMTMwLjQgOS43LTE3Ni45LTQ4LS43LS45LTIuNC0xLjctMS4zLTMuMiAuMS0uMiAyLjEgLjYgMyAxLjMgMTguMSAxMy40IDM4LjMgMjEuOSA2MC4zIDI2LjIgMzAuNSA2LjEgNTQuNiAyLjkgNzkuOS01LjJ6TTU0OS43IDI4MC45Yy0zMi40IC4yLTMzLjggNTAuMS0xMDMuNiA2NC40LTE4LjIgMy43LTM4LjcgNC42LTQ0LjkgNC4ybDAtLjRjMi44LTEuNSAxNC43LTIuNiAyOS43LTE2LjYgNy45LTcuMyAxNS4zLTE1LjEgMjIuOC0yMi45IDE5LjUtMjAuMiA0MS40LTQyLjIgODEuOS0zOSAyMy4xIDEuOCAyOS4zIDguMiAzNi4xIDEyLjcgLjMgLjIgLjQgLjUgLjcgLjktLjUgMC0uNyAuMS0uOSAwLTctMi43LTE0LjMtMy4zLTIxLjgtMy4zem0tMTIuMy0yNC4xYy0uMSAuMi0uMSAuNC0uMiAuNi0yOC45LTQuNC00OC03LjktNjguNSA0LTE3IDkuOS0zMS40IDIwLjUtNjIgMjQuNC0yNy4xIDMuNC00NS4xIDIuNC02Ni4xLTgtLjMtLjItLjYtLjQtMS0uNiAwLS4yIC4xLS4zIC4xLS41IDI0LjkgMy44IDM2LjQgNS4xIDU1LjUtNS44IDIyLjMtMTIuOSA0MC4xLTI2LjYgNzEuMy0zMSAyOS42LTQuMSA1MS4zIDIuNSA3MC45IDE2Ljl6TTI2OC42IDk3LjNjLS42LS42LTEuMS0xLjItMi4xLTIuMyA3LjYgMCAyOS43LTEuMiA1My40IDguNCAxOS43IDggMzIuMiAyMSA1MC4yIDMyLjkgMTEuMSA3LjMgMjMuNCA5LjMgMzYuNCA4LjEgNC4zLS40IDguNS0xLjIgMTIuOC0xLjcgLjQtLjEgLjkgMCAxLjUgLjMtLjYgLjQtMS4yIC45LTEuOCAxLjItOC4xIDQtMTYuNyA2LjMtMjUuNiA3LjEtMjYuMSAyLjYtNTAuMy0zLjctNzMuNC0xNS40LTE5LjMtOS45LTM2LjQtMjIuOS01MS40LTM4LjZ6TTY0MCAzMzUuN2MtMy41IDMuMS0yMi43IDExLjYtNDIuNyA1LjMtMTIuMy0zLjktMTkuNS0xNC45LTMxLjYtMjQuMS0xMC03LjYtMjAuOS03LjktMjguMS04LjQgLjYtLjggLjktMS4yIDEuMi0xLjQgMTQuOC05LjIgMzAuNS0xMi4yIDQ3LjMtNi41IDEyLjUgNC4yIDE5LjIgMTMuNSAzMC40IDI0LjIgMTAuOCAxMC40IDIxIDkuOSAyMy4xIDEwLjUgLjEtLjEgLjIgMCAuNCAuNHptLTIxMi41IDEzN2MyLjIgMS4yIDEuNiAxLjUgMS41IDItMTguNS0xLjQtMzMuOS03LjYtNDYuOC0yMi4yLTIxLjgtMjQuNy00MS43LTI3LjktNDguNi0yOS43IC41LS4yIC44LS40IDEuMS0uNCAxMy4xIC4xIDI2LjEgLjcgMzguOSAzLjkgMjUuMyA2LjQgMzUgMjUuNCA0MS42IDM1LjMgMy4yIDQuOCA3LjMgOC4zIDEyLjMgMTEuMXoiXX0scyR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImdpdCIsaWNvbjpbNTEyLDUxMixbXSwiZjFkMyIsIk0yMTYuMyAxNTguNGwtNzkuMyAwYy00MC0xMC41LTEzMC41LTcuOC0xMzAuNSA3NC44IDAgMzAuMSAxNSA1MS4yIDM1IDYxLTI1LjEgMjMtMzcgMzMuOC0zNyA0OS4yIDAgMTEgNC41IDIxLjEgMTcuOSAyNi44LTE0LjMgMTMuNC0yMi40IDIzLjEtMjIuNCA0MS40IDAgMzIuMSAyOCA1MC44IDEwMS42IDUwLjggNzAuOCAwIDExMS44LTI2LjQgMTExLjgtNzMuMiAwLTU4LjctNDUuMi01Ni41LTE1MS42LTYzbDEzLjQtMjEuNmMyNy4zIDcuNiAxMTguNyAxMCAxMTguNy02Ny45IDAtMTguNy03LjctMzEuNy0xNS00MS4xbDM3LjQtMi44IDAtMzQuNXpNMTUyLjkgNDAwLjNjMCAzMi4xLTEwNC45IDMyLjEtMTA0LjkgMi40IDAtOC4xIDUuMy0xNSAxMC42LTIxLjUgNzcuNyA1LjMgOTQuMyAzLjQgOTQuMyAxOS4xek0xMDIuMSAyNjUuN2MtNTIuOCAwLTUwLjUtNzEuMiAxLjItNzEuMiA0OS41IDAgNTAuOCA3MS4yLTEuMiA3MS4yek0yMzUuNCAzNjYuMmwwLTMyLjFjMjYuNy0zLjcgMjcuMi0yIDI3LjItMTFsMC0xMTkuNWMwLTguNS0yLjEtNy40LTI3LjItMTYuM2w0LjUtMzIuOSA4NC4yIDAgMCAxNjguN2MwIDYuNSAuNCA3LjMgNi41IDguMWwyMC43IDIuOCAwIDMyLjEtMTE1LjkgMHptNTIuNS0yNDQuM2MtMjMuMiAwLTM2LjYtMTMuNC0zNi42LTM2LjZzMTMuNC0zNS44IDM2LjYtMzUuOGMyMy42IDAgMzcgMTIuNiAzNyAzNS44cy0xMy40IDM2LjYtMzcgMzYuNnpNNTEyIDM1MC41Yy0xNy41IDguNS00My4xIDE2LjMtNjYuMyAxNi4zLTQ4LjQgMC02Ni43LTE5LjUtNjYuNy02NS41bDAtMTA2LjVjMC01LjQgMS00LjEtMzEuNy00LjFsMC0zNi4yYzM1LjgtNC4xIDUwLTIyIDU0LjUtNjYuM2wzOC42IDBjMCA2NS44LTEuMyA2MS44IDMuMyA2MS44bDU3LjMgMCAwIDQwLjYtNjAuNiAwIDAgOTcuMWMwIDYuOS00LjkgNTEuNCA2MC42IDI2LjhsMTEgMzUuOHoiXX0saSR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6Im9wdGluLW1vbnN0ZXIiLGljb246WzU3Niw1MTIsW10sImYyM2MiLCJNNTcyLjggNDIxLjRjNS42LTkuNSA0LjctMTUuMi01LjQtMTEuNi0zLTQuOS03LTkuNS0xMS4xLTEzLjggMi45LTkuNy0uNy0xNC4yLTEwLjgtOS4yLTQuNi0zLjItMTAuMy02LjUtMTUuOS05LjIgMC0xNS4xLTExLjYtMTEuNi0xNy42LTUuNy0xMC40LTEuNS0xOC43LS4zLTI2LjggNS43IC4zLTYuNSAuMy0xMyAuMy0xOS43IDEyLjYgMCA0MC4yLTExIDQ1LjktMzYuMiAxLjQtNi44IDEuNi0xMy44LS4zLTIxLjktMy0xMy41LTE0LjMtMjEuMy0yNS4xLTI1LjctLjgtNS45LTcuNi0xNC4zLTE0LjktMTUuOXMtMTIuNCA0LjktMTQuMSAxMC4zYy04LjUgMC0xOS4yIDIuOC0yMS4xIDguNC01LjQtLjUtMTEuMS0xLjQtMTYuOC0xLjkgMi43LTEuOSA1LjQtMy41IDguNC00LjYgNS40LTkuMiAxNC42LTExLjQgMjUuNy0xMS42bDAtMi44YzE5LjUtLjUgNDMtNS45IDUzLjgtMTguMSAxMi43LTEzLjggMTQuNi0zNy4zIDEyLjQtNTUuMS0yLjQtMTcuMy05LjctMzcuNi0yNC42LTQ4LjEtOC40LTUuOS0yMS42LS44LTIyLjcgOS41LTIuMiAxOS42IDEuMiAzMC0zOC42IDI1LjEtMTAuMy0yMy44LTI0LjYtNDQuNi00Mi43LTYwLTY5LjYtNTkuNy0xNjcuNy01My44LTI0NC4yLTM3LjYgMTkuNyA0LjYgNDEuMSA4LjYgNTkuNyAxNi41LTI2LjIgMi40LTUyLjcgMTEuMy03Ni4yIDIzLjItMzIuOCAxNy00NCAyOS45LTU2LjcgNDIuNCAxNC45LTIuMiAyOC45LTUuMSA0My44LTMuOC05LjcgNS40LTE4LjQgMTIuMi0yNi41IDIwLTI1LjggLjktMjMuOC01LjMtMjYuMi0yNS45LTEuMS0xMC41LTE0LjMtMTUuNC0yMi43LTkuNy0yOC4xIDE5LjktMzMuNSA3OS45LTEyLjIgMTAzLjUgMTAuOCAxMi4yIDM1LjEgMTcuMyA1NC45IDE3LjgtLjMgMS4xLS4zIDEuOS0uMyAyLjcgMTAuOCAuNSAxOS41IDIuNyAyNC42IDExLjYgMyAxLjEgNS43IDIuNyA4LjEgNC42LTUuNCAuNS0xMS4xIDEuNC0xNi41IDEuOS0zLjMtNi42LTEzLjctOC4xLTIxLjEtOC4xLTEuNi01LjctNi41LTEyLjItMTQuMS0xMC4zLTYuOCAxLjktMTQuMSAxMC0xNC45IDE1LjktMjIuNSA5LjUtMzAuMSAyNi44LTI1LjEgNDcuNiA1LjMgMjQuOCAzMyAzNi4yIDQ1LjkgMzYuMmwwIDE5LjdjLTYuNi01LTE0LjMtNy41LTI2LjgtNS43LTUuNS01LjUtMTcuMy0xMC4xLTE3LjMgNS43LTUuOSAyLjctMTEuNCA1LjktMTUuOSA5LjItOS44LTQuOS0xMy42LTEuNy0xMS4xIDkuMi00LjEgNC4zLTcuOCA4LjYtMTEuMSAxMy44LTEwLjItMy43LTExIDIuMi01LjQgMTEuNi0xLjEgMy41LTEuNiA3LTEuOSAxMC44LS41IDMxLjYgNDQuNiA2NCA3My41IDY1LjEgMTcuMyAuNSAzNC42LTguNCA0My0yMy41IDExMy4yIDQuOSAyMjYuNyA0LjEgMzQwLjIgMCA4LjEgMTUuMSAyNS40IDI0LjMgNDIuNyAyMy41IDI5LjItMS4xIDc0LjMtMzMuNSA3My41LTY1LjEgLjItMy43LS43LTcuMi0xLjctMTAuN3pNNDk5IDE2Ny40YzEuMS0zIDIuNC04LjQgMi40LTE0LjYgMC01LjkgNi44LTguMSAxNC4xLS44IDExLjEgMTEuNiAxNC45IDQwLjUgMTMuOCA1MS4xLTQuMS0xMy42LTEzLTI5LTMwLjMtMzUuN3ptLTQuNiA2LjdjMTkuNSA2LjIgMjguNiAyNy42IDI5LjcgNDguOS0xLjEgMi43LTMgNS40LTQuOSA3LjYtNS43IDUuOS0xNS40IDEwLTI2LjIgMTIuMiA0LjMtMjEuMyAuMy00Ny4zLTEyLjctNjMgNC45LS44IDEwLjktMi40IDE0LjEtNS43em0tMjQuMSA2LjhjMTMuOCAxMS45IDIwIDM5LjIgMTQuMSA2My41LTQuMSAuNS04LjEgLjgtMTEuNiAuOC0xLjktMjEuOS02LjgtNDQtMTQuMy02NC42IDMuNyAuMyA4LjEgLjMgMTEuOCAuM3pNNDcuNyAyMDNjLTEuMS0xMC41IDIuNC0zOS41IDEzLjgtNTEuMSA3LTcuMyAxNC4xLTUuMSAxNC4xIC44IDAgNi4yIDEuNCAxMS42IDIuNCAxNC42LTE3LjMgNi44LTI2LjIgMjIuMi0zMC4zIDM1Ljd6bTkuNyAyNy42Yy0xLjktMi4yLTMuNS00LjktNC45LTcuNiAxLjQtMjEuMyAxMC4zLTQyLjcgMjkuNy00OC45IDMuMiAzLjIgOS4yIDQuOSAxNC4xIDUuNy0xMyAxNS43LTE3IDQxLjYtMTIuNyA2My0xMC44LTIuMi0yMC41LTYtMjYuMi0xMi4yem00Ny45IDE0LjZjLTQuMSAwLTguMS0uMy0xMi43LS44LTQuNi0xOC42LTEuOS0zOC45IDUuNC01M2wwIC4zIDEyLjItNS4xYzQuOS0xLjkgOS43LTMuOCAxNC45LTQuOS0xMC43IDE5LjctMTcuNCA0MS4zLTE5LjggNjMuNXptMTg0LTEwLjVhNzYuMSA3Ni4xIDAgMSAxIDAtMTUyLjIgNzYuMSA3Ni4xIDAgMSAxIDAgMTUyLjJ6bTExNS42IDIyLjFjLS4zIDE3LjgtNyA0OC45LTIzIDU3LTEzLjIgNi42LTYuNS03LjUtMTYuNS01OC4xIDEzLjMgLjMgMjYuNiAuMyAzOS41IDEuMXptLTU0LTEuNmMuOCA0LjkgMy44IDQwLjMtMS42IDQxLjktMTEuNiAzLjUtNDAgNC4zLTUxLjEtMS4xLTQuMS0zLTQuNi0zNS45LTQuMy00MS4xbDAgLjNjMTguOS0uMyAzOC4xLS4zIDU3IDB6TTI3OC41IDMwOWMtMTMgMy41LTQxLjYgNC4xLTU0LjYtMS42LTYuNS0yLjctMy44LTQyLjQtMS45LTUxLjYgMTkuMi0uNSAzOC40LS41IDU3LjgtLjhsMCAuM2MxLjEgOC4zIDMuMyA1MS4yLTEuMyA1My43ek0xNzIgMjU3LjljMTIuMi0uOCAyNC42LTEuNCAzNi44LTEuNi0yLjQgMTUuNC0zIDQzLjUtNC45IDUyLjItMS4xIDYuOC00LjMgNi44LTkuNyA0LjMtMjEuOS05LjgtMjcuNi0zNS4yLTIyLjItNTQuOXptLTM1LjQgMzEuM2M3LjgtMS4xIDE1LjctMS45IDIzLjUtMi43IDEuNiA2LjIgMy44IDExLjkgNyAxNy42IDEwIDE3IDQ0IDM1LjcgNDUuMSA3IDYuMiAxNC45IDQwLjggMTIuMiA1NC45IDEwLjggMTUuNy0xLjQgMjMuOC0xLjQgMjYuOC0xNC4zIDEyLjQgNC4zIDMwLjggNC4xIDQ0IDMgMTEuMy0uOCAyMC44LS41IDI0LjYtOC45IDEuMSA1LjEgMS45IDExLjYgNC42IDE2LjggMTAuOCAyMS4zIDM3LjMgMS40IDQ2LjgtMzEuNiA4LjYgLjggMTcuNiAxLjkgMjYuNSAyLjctLjQgMS4zLTMuOCA3LjMgNy4zIDExLjYtNDcuNiA0Ny05NS43IDg3LjgtMTYzLjIgMTA3LTYzLjItMjAuOC0xMTIuMS01OS41LTE1NS45LTEwNi41IDkuNi0zLjQgMTAuNC04LjggOC0xMi41ek0xMTUgNDYxLjdjLTMuOCAxNy44LTIxLjkgMjkuNy0zOS43IDI4LjktMTkuMi0uOC00Ni41LTE3LTU5LjItMzYuNS0yLjctMzEuMSA0My44LTYxLjMgNjYuMi01NC42IDE0LjkgNC4zIDI3LjggMzAuOCAzMy41IDU0IDAgMy0uMyA1LjctLjggOC4yem0tOC43LTY2Yy0uNS0xMy41LS41LTI3LS4zLTQwLjVsLjMgMGMyLjctMS42IDUuNy0zLjggNy44LTYuNSA2LjUtMS42IDEzLTUuMSAxNS4xLTkuMiAzLjMtNy4xLTctNy41LTUuNC0xMi40IDIuNy0xLjEgNS43LTIuMiA3LjgtMy41IDI5LjIgMjkuMiA1OC42IDU2LjUgOTcuMyA3Ny0zNi44IDExLjMtNzIuNCAyNy42LTEwNS45IDQ3LTEuMi0xOC42LTcuNy0zNS45LTE2LjctNTEuOXptMzM3LjYgNjQuNmMtMTAzIDMuNS0yMDYuMiA0LjEtMzA5LjQgMCAwIC4zIDAgLjMtLjMgLjNsMC0uMyAuMyAwYzM1LjEtMjEuNiA3Mi4yLTM5LjIgMTEyLjQtNTAuOCAxMS42IDUuMSAyMyA5LjUgMzQuOSAxMy4yIDIuMiAuOCAyLjIgLjggNC4zIDAgMTQuMy00LjEgMjguNC05LjIgNDIuMi0xNS40IDQxLjUgMTEuNyA3OC44IDMxLjcgMTE1LjYgNTN6bTEwLjUtMTIuNGMtMzUuOS0xOS41LTczLTM1LjktMTExLjktNDcuNiAzOC4xLTIwIDcxLjktNDcuMyAxMDMuNS03Ni43IDIuMiAxLjQgNC42IDIuNCA3LjYgMy4yIDAgLjggLjMgMS45IC41IDIuNC00LjYgMi43LTcuOCA2LjItNS45IDEwLjMgMi4yIDMuOCA4LjYgNy42IDE1LjEgOC45IDIuNCAyLjcgNS4xIDUuMSA4LjEgNi44IDAgMTMuOC0uMyAyNy42LS44IDQxLjNsLjMtLjNjLTkuMyAxNS45LTE1LjUgMzctMTYuNSA1MS43em0xMDUuOSA2LjJjLTEyLjcgMTkuNS00MCAzNS43LTU5LjIgMzYuNS0xOS4zIC45LTQwLjUtMTMuMi00MC41LTM3IDUuNy0yMy4yIDE4LjktNDkuNyAzMy41LTU0IDIyLjctNi45IDY5LjIgMjMuNCA2Ni4yIDU0LjV6TTM3My4xIDc1LjJjLTMuOC03Mi4xLTEwMC44LTc5LjctMTI2LTIzLjUgNDQuNi0yNC4zIDkwLjMtMTUuNyAxMjYgMjMuNXpNNzUgNDA3LjFjLTE1LjcgMS42LTQ5LjUgMjUuNC00OS41IDQzLjIgMCAxMS42IDE1LjcgMTkuNSAzMi4yIDE0LjkgMTIuMi0zLjIgMzEuMS0xNy42IDM1LjktMjcuMyA2LTExLjYtMy43LTMyLjctMTguNi0zMC44ek0yOTAuOSAyMzAuOWMyOC42IDAgNTEuOS0yMS42IDUxLjktNDguNCAwLTM2LjEtNDAuNS01OC4xLTcyLjItNDQuMyA5LjUgMyAxNi41IDExLjYgMTYuNSAyMS42IDAgMjMuMy0zMy4zIDMyLTQ2LjUgMTEuMy03LjMgMzQuMSAxOS40IDU5LjggNTAuMyA1OS44ek02OC4yIDQ3NC4xYy41IDYuNSAxMi4yIDEyLjcgMjEuNiA5LjUgNi44LTIuNyAxNC42LTEwLjUgMTcuMy0xNi4yIDMtNy0xLjEtMjAtOS43LTE4LjQtOC45IDEuNi0yOS43IDE2LjctMjkuMiAyNS4xem00MzMuMi02N2MtMTQuOS0xLjktMjQuNiAxOS4yLTE4LjkgMzAuOCA0LjkgOS43IDI0LjEgMjQuMSAzNi4yIDI3LjMgMTYuNSA0LjYgMzIuMi0zLjIgMzIuMi0xNC45IDAtMTcuOC0zMy44LTQxLjYtNDkuNS00My4yek00NzkgNDQ5Yy04LjQtMS42LTEyLjQgMTEuMy05LjUgMTguNCAyLjQgNS43IDEwLjMgMTMuNSAxNy4zIDE2LjIgOS4yIDMuMiAyMS4xLTMgMjEuMy05LjUgLjktOC40LTIwLjItMjMuNS0yOS4xLTI1LjF6Il19LHIkdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJqZW5raW5zIixpY29uOls0NDgsNTEyLFtdLCJmM2I2IiwiTTQ1NS40IDQyNWMtMS40LTExLjItMTktMjMuMS0yOC4yLTMxLjktNS4xLTUtMjktMjMuMS0zMC40LTI5LjktMS40LTYuNiA5LjctMjEuNSAxMy4zLTI4LjkgNS4xLTEwLjcgOC44LTIzLjcgMTEuMy0zMi42IDE4LjgtNjYuMSAyMC43LTE1Ni45LTYuMi0yMTEuMi0xMC4yLTIwLjYtMzguNi00OS01Ni40LTYyLjUtNDItMzEuNy0xMTkuNi0zNS4zLTE3MC4xLTE2LjYtMTQuMSA1LjItMjcuOCA5LjgtNDAuMSAxNy4xLTMzLjEgMTkuNC02OC4zIDMyLjUtNzguMSA3MS42LTI0LjIgMTAuOC0zMS41IDQxLjgtMzAuMyA3Ny44IC4yIDcgNC4xIDE1LjggMi43IDIyLjQtLjcgMy4zLTUuMiA3LjYtNi4xIDkuOC0xMS42IDI3LjctMi4zIDY0IDExLjEgODMuNyA4LjEgMTEuOSAyMS41IDIyLjQgMzkuMiAyNS4yIC43IDEwLjYgMy4zIDE5LjcgOC4yIDMwLjQgMy4xIDYuOCAxNC43IDE5IDEwLjQgMjcuNy0yLjIgNC40LTIxIDEzLjgtMjcuMyAxNy42LTIxLjEgMTIuNS0zNi40IDIwLjMtNTUuOSAzNC4zLTEyLjYgOS0zMi4zIDEwLjItMjkuMiAzMS4xIDIuMSAxNC4xIDEwLjEgMzEuNiAxNC43IDQ1LjggLjcgMiAxLjQgNC4xIDIuMSA2bDQyMiAwYzQuOS0xNS4zIDkuNy0zMC45IDE0LjYtNDcuMiAzLjQtMTEuNCAxMC4yLTI3LjggOC43LTM5Ljd6TTE3NC4yIDMzLjdjMS44LS41IDMuNCAuNyA0LjkgMi40LS4yIDUuMi01LjQgNS4xLTguOSA2LjgtNS40IDYuNy0xMy40IDkuOC0yMCAxNy4yLTYuOCA3LjUtMTQuNCAyNy43LTIzLjQgMzAtNC41IDEuMS05LjctLjgtMTMuNi0uNS0xMC40IC43LTE3LjcgNi0yOC4zIDcuNSAxMy42LTI5LjkgNTYuMS01NCA4OS4zLTYzLjR6TTY5LjQgMTI3LjNjMTMuNS0xNC45IDMyLjEtMjQuMSA1NC44LTI1LjkgMTEuNyAyOS43LTguNCA2NS0uOSA5Ny42IDIuMyA5LjkgMTAuMiAyNS40LTIuNCAyNS43IC4zLTI4LjMtMzQuOC00Ni4zLTYxLjMtMjkuNi0xLjgtMjEuNS00LjktNTEuNyA5LjgtNjcuOHptMzYuNyAyMDAuMmMtMS00LjEtMi43LTEyLjktMi4zLTE1LjEgMS42LTguNyAxNy4xLTEyLjUgMTEtMjQuNy0xMS4zLS4xLTEzLjggMTAuMi0yNC4xIDExLjMtMjYuNyAyLjYtNDUuNi0zNS40LTQ0LjQtNTguNCAxLTE5LjUgMTcuNi0zOC4yIDQwLjEtMzUuOCAxNiAxLjggMjEuNCAxOS4yIDI0LjUgMzQuNyA5LjIgLjUgMjIuNS0uNCAyNi45LTcuNi0uNi0xNy41LTguOC0zMS42LTguMi00Ny43IDEtMzAuMyAxNy41LTU3LjYgNC44LTg3LjQgMTMuNi0zMC45IDUzLjUtNTUuMyA4My4xLTcwIDM2LjYtMTguMyA5NC45LTMuNyAxMjkuMyAxNS44IDE5LjcgMTEuMSAzNC40IDMyLjcgNDguMyA1MC43LTE5LjUtNS44LTM2LjEgNC4yLTMzLjEgMjAuMyAxNi4zLTE0LjkgNDQuMi0uMiA1Mi41IDE2LjQgNy45IDE1LjggNy44IDM5LjMgOSA2Mi44IDIuOSA1Ny0xMC40IDExNS45LTM5LjEgMTU3LjEtNy43IDExLTE0LjEgMjMtMjQuOSAzMC42LTI2IDE4LjItNjUuNCAzNC43LTk5LjIgMjMuNC00NC43LTE1LTY1LTQ0LjgtODkuNS03OC44IC43IDE4LjcgMTMuOCAzNC4xIDI2LjggNDguNCAxMS4zIDEyLjUgMjUgMjYuNiAzOS43IDMyLjQtMTIuMy0yLjktMzEuMS0zLjgtMzYuMiA3LjItMjguNi0xLjktNTUuMS00LjgtNjguNy0yNC4yLTEwLjYtMTUuNC0yMS40LTQxLjQtMjYuMy02MS40em0yMjIgMTI0LjFjNC4xLTMgMTEuMS0yLjkgMTcuNC0zLjYtNS40LTIuNy0xMy0zLjctMTkuMy0yLjItLjEtNC4yLTItNi44LTMuMi0xMC4yIDEwLjYtMy44IDM1LjUtMjguNSA0OS42LTIwLjMgNi43IDMuOSA5LjUgMjYuMiAxMC4xIDM3IC40IDktLjggMTgtNC41IDIyLjgtMTguOC0uNi0zNS44LTIuOC01MC43LTcgLjktNi4xLTEtMTIuMSAuNi0xNi41em0tMTcuMi0yMGMtMTYuOCAuOC0yNi0xLjItMzguMy0xMC44IC4yLS44IDEuNC0uNSAxLjUtMS40IDE4IDggNDAuOC0zLjMgNTktNC45LTcuOSA1LjEtMTQuNiAxMS42LTIyLjIgMTcuMXptLTEyLjEgMzMuMmMtMS42LTkuNC0zLjUtMTItMi44LTIwLjIgMjUtMTYuNiAyOS43IDI4LjYgMi44IDIwLjJ6TTE5NC4zIDQzOC42Yy0xMS42LS43LTQ4LjEtMTQtMzguNS0yMy43IDkuNCA2LjUgMjcuNSA0LjkgNDEuMyA3LjMgLjggNC40LTIuOCAxMC4yLTIuOCAxNi40ek0yNiA0OTcuMWMtNC4zLTEyLjctOS4yLTI1LjEtMTQuOC0zNi45IDMwLjgtMjMuOCA2NS4zLTQ4LjkgMTAyLjItNjMuNSAyLjgtMS4xIDIzLjIgMjUuNCAyNi4yIDI3LjYgMTYuNSAxMS43IDM3IDIxIDU2LjIgMzAuMiAxLjIgOC44IDMuOSAyMC4yIDguNyAzNS41IC43IDIuMyAxLjQgNC43IDIuMiA3LjJsLTE4MC43IDAgMC0uMXptMjQwLjYgNS43bC0uOCAwYy4zLS4yIC41LS40IC44LS41bDAgLjV6bTcuNS01LjdjMi4xLTEuNCA0LjMtMi44IDYuNC00LjMgMS4xIDEuNCAyLjIgMi44IDMuMiA0LjNsLTkuNiAwem0xNS4xLTI0LjdjLTEwLjggNy4zLTIwLjYgMTguMy0zMy4zIDI1LjItNiAzLjMtMjcgMTEuNy0zMy40IDEwLjItMy42LS44LTMuOS01LjMtNS40LTkuNS0zLjEtOS0xMC4xLTIzLjQtMTAuOC0zNy0uOC0xNy4yLTIuNS00NiAxNi00Mi40IDE0LjkgMi45IDMyLjMgOS43IDQzLjkgMTYuMSA3LjEgMy45IDExLjEgOC42IDIxLjkgOS41LS4xIDEuNC0uMSAyLjgtLjIgNC4zLTUuOSAzLjktMTUuMyAzLjgtMjEuOCA3LjEgOS41IC40IDE3IDIuNyAyMy41IDUuOS0uMSAzLjQtLjMgNy0uNCAxMC42em01My40IDI0LjdsLTE0IDBjLS4xLTMuMi0yLjgtNS44LTYuMS01LjhzLTUuOSAyLjYtNi4xIDUuOGwtMTcuNCAwYy0yLjgtNC40LTUuNy04LjYtOC45LTEyLjUgMi4xLTIuMiA0LTQuNyA2LTYuOSA5IDMuNyAxNC44LTQuOSAyMS43LTQuMiA3LjkgLjggMTQuMiAxMS43IDI1LjQgMTFsLS42IDEyLjZ6bTguNyAwYy4yLTQgLjQtNy44IC42LTExLjUgMTUuNi03LjMgMjkgMS4zIDM1LjcgMTEuNWwtMzYuMyAwem04My40LTM3Yy0yLjMgMTEuMi01LjggMjQtOS45IDM3LjEtLjItLjEtLjQtLjEtLjYtLjFsLTI3LjkgMGMuNi0xLjEgMS4yLTIuMiAxLjktMy4zLTIuNi02LjEtOS04LjctMTAuOS0xNS41IDEyLjEtMjIuNyA2LjUtOTMuNC0yNC4yLTc4LjUgNC4zLTYuMyAxNS42LTExLjUgMjAuOC0xOS4zIDEzIDEwLjQgMjAuOCAyMC4zIDMzLjIgMzEuNCA2LjggNiAyMCAxMy4zIDIxLjQgMjMuMSAuOCA1LjUtMi42IDE4LjktMy44IDI1LjF6TTE5MC41IDEzMC41YzUuNC0xNC45IDI3LjItMzQuNyA0NS0zMiA3LjcgMS4yIDE4IDguMiAxMi4yIDE3LjctMzAuMi03LTQ1LjIgMTIuNi01NC40IDMzLjEtOC4xLTItNC45LTEzLjEtMi44LTE4Ljh6bTE4NC4xIDYzLjFjOC4yLTMuNiAyMi40LS43IDI5LjYtNS4zLTQuMi0xMS41LTEwLjMtMjEuNC05LjMtMzcuNyAuNSAwIDEgMCAxLjQgLjEgNi44IDE0LjIgMTIuNyAyOS4yIDIxLjQgNDEuNy01LjcgMTMuNS00My42IDI1LjQtNDMuMSAxLjJ6bS05Ni44IDIuN2MtNi44LTEwLjktMTktMzIuNS0xNC41LTQ1LjMgNi41IDExLjkgOC42IDI0LjQgMTcuOCAzMy4zIDQuMSA0IDEyLjIgOSA4LjIgMjAuMi0uOSAyLjctNy44IDguNi0xMS43IDkuNy0xNC40IDQuMy00Ny45IC45LTM2LjYtMTcuMSAxMS45IC43IDI3LjkgNy44IDM2LjgtLjh6bTI3LjMgNzBjMy44IDYuNiAxLjQgMTguNyAxMi4xIDIwLjYgMjAuMiAzLjQgNDMuNi0xMi4zIDU4LjEtMTcuOCA5LTE1LjItLjgtMjAuNy04LjktMzAuNS0xNi42LTIwLTM4LjgtNDQuOC0zOC03NC43IDYuNy00LjkgNy4zIDcuNCA4LjIgOS43IDguNyAyMC4zIDMwLjQgNDYuMiA0Ni4zIDYzLjUgMy45IDQuMyAxMC4zIDguNCAxMSAxMS4yIDIuMSA4LjItNS40IDE4LTQuNSAyMy41LTIxLjcgMTMuOS00NS44IDI5LjEtODEuNCAyNS42LTcuNC02LjctMTAuMy0yMS40LTIuOS0zMS4xem0tMjAxLjMtOS4yYy02LjgtMy45LTguNC0yMS0xNi40LTIxLjQtMTEuNC0uNy05LjMgMjIuMi05LjMgMzUuNS03LjgtNy4xLTkuMi0yOS4xLTMuNS00MC4zLTYuNi0zLjItOS41IDMuNi0xMy4xIDUuOSA0LjctMzQuMSA0OS44LTE1LjggNDIuMyAyMC4zem0yOTkuNiAyOC44Yy0xMC4xIDE5LjItMjQuNCA0MC40LTU0IDQxLS42LTYuMi0xLjEtMTUuNiAwLTE5LjQgMjIuNy0yLjIgMzYuNi0xMy43IDU0LTIxLjZ6TTI2MS41IDI5OC4zYzE4LjkgOS45IDUzLjYgMTEgNzkuMyAxMC4yIDEuNCA1LjYgMS4zIDEyLjYgMS40IDE5LjQtMzMgMS44LTcyLTYuNC04MC43LTI5LjZ6TTM1My43IDM0NWMtMS43IDQuMy01LjMgOS4zLTkuOCAxMS4xLTEyLjEgNC45LTQ1LjYgOC43LTYyLjQtLjMtMTAuNy01LjctMTcuNS0xOC41LTIzLjQtMjYtMi44LTMuNi0xNi45LTEyLjktLjItMTIuOSAxMy4xIDMyLjcgNTggMjkgOTUuOCAyOC4xeiJdfSxvJHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToic2xpZGVzaGFyZSIsaWNvbjpbNTEyLDUxMixbXSwiZjFlNyIsIk0xODcuOSAxNTMuN2MtMzQgMC02MS43IDI1LjctNjEuNyA1Ny43IDAgMzEuNyAyNy43IDU3LjcgNjEuNyA1Ny43czYxLjctMjYgNjEuNy01Ny43YzAtMzItMjcuNy01Ny43LTYxLjctNTcuN3ptMTQzLjQgMGMtMzQgMC02MS43IDI1LjctNjEuNyA1Ny43IDAgMzEuNyAyNy43IDU3LjcgNjEuNyA1Ny43IDM0LjMgMCA2MS43LTI2IDYxLjctNTcuNyAuMS0zMi0yNy40LTU3LjctNjEuNy01Ny43em0xNTYuNiA5MGwtNiA0LjMgMC0xOTguM2MwLTI3LjQtMjAuNi00OS43LTQ2LTQ5LjdMNzYuOCAwYy0yNS40IDAtNDYgMjIuMy00NiA0OS43bDAgMTk4LjNjLTItMS40LTQuMy0yLjktNi4zLTQuMy0xNS4xLTEwLjYtMjUuMSA0LTE2IDE3LjcgMTguMyAyMi42IDUzLjEgNTAuMyAxMDYuMyA3Mi01Ni4zIDE5MS43IDEzNy40IDIyMi4zIDEzNC4zIDEyNC4xIDAtLjcgLjMtNTYuNiAuMy05Ni42IDUuMSAxLjEgOS40IDIuMyAxMy43IDMuMSAwIDM5LjcgLjMgOTIuOCAuMyA5My41LTMuMSA5OC4zIDE5MC42IDY3LjcgMTM0LjMtMTI0IDUzLjEtMjEuNyA4OC00OS40IDEwNi4zLTcyIDkuMS0xMy44LS45LTI4LjMtMTYuMS0xNy44em0tMzAuNSAxOS4yYy02OC45IDM3LjQtMTI4LjMgMzEuMS0xNjAuNiAyOS43LTIzLjctLjktMzIuNiA5LjEtMzMuNyAyNC45LTEwLjMtNy43LTE4LjYtMTUuNS0yMC4zLTE3LjEtNS4xLTUuNC0xMy43LTgtMjcuMS03LjctMzEuNyAxLjEtODkuNyA3LjQtMTU3LjQtMjhsMC0xOTIuNGMwLTM0LjkgOC45LTQ1LjcgNDAuNi00NS43bDMxNy43IDBjMzAuMyAwIDQwLjkgMTIuOSA0MC45IDQ1LjdsMCAxOTAuNi0uMSAweiJdfSxuJHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToidWJlciIsaWNvbjpbNDQ4LDUxMixbXSwiZjQwMiIsIk00MTQuMSAzMkwzMy45IDMyQzE1LjIgMzIgMCA0Ny4yIDAgNjUuOUwwIDQ0NmMwIDE4LjggMTUuMiAzNCAzMy45IDM0TDQxNCA0ODBjMTguNyAwIDMzLjktMTUuMiAzMy45LTMzLjlsMC0zODAuMkM0NDggNDcuMiA0MzIuOCAzMiA0MTQuMSAzMnpNMjM3LjYgMzkxLjFDMTYzIDM5OC42IDk2LjQgMzQ0LjIgODguOSAyNjkuNmw5NC40IDAgMCAyMC40YzAgMy43IDMgNi44IDYuOCA2LjhsNjcuOSAwYzMuNyAwIDYuOC0zIDYuOC02LjhsMC02Ny45YzAtMy43LTMtNi44LTYuOC02LjhsLTY3LjkgMGMtMy43IDAtNi44IDMtNi44IDYuOGwwIDIwLjQtOTQuNCAwYzctNjkuNCA2NS40LTEyMi4yIDEzNS4xLTEyMi4yczEyOC4xIDUyLjggMTM1LjEgMTIyLjJjNy41IDc0LjUtNDYuOSAxNDEuMS0xMjEuNSAxNDguNnoiXX0sbCR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImRpZ2l0YWwtb2NlYW4iLGljb246WzUxMiw1MTIsW10sImYzOTEiLCJNODcgNDgxLjhsNzMuNyAwIDAtNzMuNi03My43IDAgMCA3My42ek0yNS40IDM0Ni42bDAgNjEuNiA2MS42IDAgMC02MS42LTYxLjYgMHpNNDkxLjYgMTc2LjlDNDY4LjYgMTAyLjcgNDA5LjIgNDMuNiAzMzUgMjAuMyAxNjQuOS0zMi44IDggOTMuNyA4IDI1NS45bDk1LjggMGMwLTEwMS44IDEwMS0xODAuNSAyMDguMS0xNDEuNyAzOS43IDE0LjMgNzEuNSA0Ni4xIDg1LjggODUuNyAzOS4xIDEwNy0zOS43IDIwNy44LTE0MS40IDIwOGwwIC4zLS4zIDAgMCA5NS44YzE2Mi42IDAgMjg4LjgtMTU2LjggMjM1LjYtMzI3LjF6bS0yMzUuMyAyMzFsMC05NS4zLTk1LjYgMCAwIDk1LjYgOTUuMyAwIDAtLjMgLjMgMHoiXX0sYyR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNvdW5kY2xvdWQiLGljb246WzY0MCw1MTIsW10sImYxYmUiLCJNNjQwLjIgMjk4LjZjLTEuMyAyMy4xLTExLjUgNDQuOC0yOC40IDYwLjVzLTM5LjIgMjQuNC02Mi4zIDI0LjFsLTIxOCAwYy00LjggMC05LjQtMi0xMi44LTUuNHMtNS4zLTgtNS4zLTEyLjhsMC0yMzQuOGMtLjItNCAuOS04IDMuMS0xMS40czUuMy02LjEgOS03LjdjMCAwIDIwLjEtMTMuOSA2Mi4zLTEzLjkgMjUuOCAwIDUxLjEgNi45IDczLjMgMjAuMSAxNy4zIDEwLjIgMzIuMyAyMy44IDQ0LjEgNDAuMXMyMCAzNC44IDI0LjIgNTQuNGM3LjUtMi4xIDE1LjMtMy4yIDIzLjEtMy4yIDExLjctLjEgMjMuMyAyLjIgMzQuMiA2LjdzMjAuNSAxMS4zIDI4LjcgMTkuNyAxNC42IDE4LjMgMTguOSAyOS4zIDYuMyAyMi42IDUuOSAzNC4zem0tMzU0LTE1My41Yy4xLTEgMC0yLS4zLTIuOXMtLjgtMS44LTEuNS0yLjYtMS41LTEuMy0yLjQtMS43Yy0xLjgtLjgtNC0uOC01LjggMC0uOSAuNC0xLjcgMS0yLjQgMS43cy0xLjIgMS42LTEuNSAyLjYtLjQgMS45LS4zIDIuOWMtNiA3OC45LTEwLjYgMTUyLjkgMCAyMzEuNiAuMiAxLjcgMSAzLjMgMi4zIDQuNSAyLjYgMi40IDYuOCAyLjQgOS40IDAgMS4zLTEuMiAyLjEtMi44IDIuMy00LjUgMTEuMy03OS40IDYuNi0xNTIgMC0yMzEuNmwuMiAwem0tNDQgMjcuM2MtLjItMS44LTEuMS0zLjUtMi40LTQuN3MtMy4xLTEuOS01LTEuOS0zLjYgLjctNSAxLjktMi4yIDIuOS0yLjQgNC43Yy03LjkgNjcuOS03LjkgMTM2LjUgMCAyMDQuNCAuMyAxLjggMS4yIDMuNCAyLjUgNC41czMuMSAxLjggNC44IDEuOCAzLjUtLjYgNC44LTEuOCAyLjItMi44IDIuNS00LjVjOC44LTY3LjggOC44LTEzNi41IC4xLTIwNC40bC4xIDB6bS00NC4zLTYuOWMtLjItMS44LTEtMy40LTIuMy00LjZzLTMtMS44LTQuOC0xLjgtMy41IC43LTQuOCAxLjgtMi4xIDIuOC0yLjMgNC42Yy02LjcgNzItMTAuMiAxMzkuMyAwIDIxMS4xIDAgMS45IC43IDMuNyAyLjEgNXMzLjEgMi4xIDUgMi4xIDMuNy0uNyA1LTIuMSAyLjEtMy4xIDIuMS01YzEwLjUtNzIuOCA3LjMtMTM4LjIgLjEtMjExLjFsLS4xIDB6bS00NCAyMC42YzAtMS45LS44LTMuOC0yLjEtNS4ycy0zLjItMi4xLTUuMi0yLjEtMy44IC44LTUuMiAyLjEtMi4xIDMuMi0yLjEgNS4yYy04LjEgNjMuMy04LjEgMTI3LjUgMCAxOTAuOCAuMiAxLjggMSAzLjQgMi40IDQuNnMzLjEgMS45IDQuOCAxLjkgMy41LS43IDQuOC0xLjkgMi4yLTIuOCAyLjQtNC42YzguOC02My4zIDguOS0xMjcuNSAuMy0xOTAuOGwtLjEgMHptLTQ0LjUgNDcuNmMwLTEuOS0uOC0zLjgtMi4xLTUuMXMtMy4yLTIuMS01LjEtMi4xLTMuOCAuOC01LjEgMi4xLTIuMSAzLjItMi4xIDUuMWMtMTAuNSA0OS4yLTUuNSA5My45IC40IDE0My42IC4zIDEuNiAxLjEgMy4xIDIuMyA0LjJzMi44IDEuNyA0LjUgMS43IDMuMi0uNiA0LjUtMS43IDIuMS0yLjUgMi4zLTQuMmM2LjYtNTAuNCAxMS42LTk0LjEgLjQtMTQzLjZ6bS00NC4xLTcuNWMtLjItMS44LTEuMS0zLjUtMi40LTQuOHMtMy4yLTEuOS01LTEuOS0zLjYgLjctNSAxLjktMi4yIDIuOS0yLjQgNC44Yy05LjMgNTAuMi02LjIgOTQuNCAuMyAxNDQuNSAuNyA3LjYgMTMuNiA3LjUgMTQuNCAwIDcuMi01MC45IDEwLjUtOTMuOCAuMy0xNDQuNWwtLjIgMHpNMjAuNyAyNTAuOGMtLjItMS44LTEuMS0zLjUtMi40LTQuOHMtMy4yLTEuOS01LTEuOS0zLjYgLjctNSAxLjktMi4zIDIuOS0yLjQgNC44Yy04LjUgMzMuNy01LjkgNjEuNiAuNiA5NS40IC4yIDEuNyAxIDMuMyAyLjMgNC40czIuOSAxLjggNC43IDEuOCAzLjQtLjYgNC43LTEuOCAyLjEtMi43IDIuMy00LjRjNy41LTM0LjUgMTEuMi02MS44IC40LTk1LjRsLS4yIDB6Il19LGQkdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzcXVhcmUtZmlnbWEiLGljb246WzQ0OCw1MTIsW10sImU3ZTQiLCJNMzg0IDMyYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwzMjAgMHpNMTczLjcgOTZjLTMzIDAtNTkuOCAyNi44LTU5LjggNTkuOCAwIDIxIDEwLjggMzkuNCAyNy4yIDUwLjEtMTYuNCAxMC43LTI3LjIgMjkuMS0yNy4yIDUwLjFzMTAuOCAzOS41IDI3LjIgNTAuMWMtMTYuNCAxMC43LTI3LjIgMjkuMS0yNy4yIDUwLjEgMCAzMy4xIDI3LjEgNTkuOCA2MC4xIDU5LjggMzMuMiAwIDYwLjYtMjYuOSA2MC42LTYwLjNsMC01NS43YzEwLjYgOS44IDI0LjggMTUuOCA0MC40IDE1LjhsMS4xIDBjMzMgMCA1OS44LTI2LjggNTkuOC01OS44IDAtMjEtMTAuOC0zOS41LTI3LjItNTAuMSAxNi40LTEwLjcgMjcuMi0yOS4xIDI3LjItNTAuMSAwLTMzLTI2LjgtNTkuOC01OS44LTU5LjhMMTczLjcgOTZ6bTQxLjYgMjE5LjhsMCAzOS45YzAgMjIuNi0xOC42IDQxLTQxLjMgNDEtMjIuNCAwLTQwLjctMTguMi00MC43LTQwLjUgMC0yMi4zIDE4LjEtNDAuNCA0MC4zLTQwLjRsNDEuNyAwem0wLTEwMC4zbDAgODAuOS00MS43IDBjLTIyLjMtLjEtNDAuMy0xOC4yLTQwLjMtNDAuNSAwLTIyLjMgMTguMS00MC41IDQwLjUtNDAuNWw0MS42IDB6bTYwLjggMGMyMi4zIDAgNDAuNSAxOC4xIDQwLjUgNDAuNXMtMTguMSA0MC41LTQwLjUgNDAuNWwtMS4xIDBjLTIyLjMgMC00MC40LTE4LjEtNDAuNC00MC41czE4LjEtNDAuNSA0MC40LTQwLjVsMS4xIDB6bS02MC44LTE5LjNsLTQxLjYgMGMtMjIuMyAwLTQwLjUtMTguMS00MC41LTQwLjRzMTguMS00MC41IDQwLjUtNDAuNWw0MS42IDAgMCA4MC45em02MC44LTgwLjljMjIuMyAwIDQwLjUgMTguMSA0MC41IDQwLjVzLTE4LjEgNDAuNC00MC41IDQwLjRsLTQxLjUgMCAwLTgwLjkgNDEuNSAweiJdfSx1JHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiY3JlYXRpdmUtY29tbW9ucy1zYSIsaWNvbjpbNTEyLDUxMixbXSwiZjRlZiIsIk0yNTUuNiA4QzM5Ny40IDggNTA0IDExOC4xIDUwNCAyNTYgNTA0IDQwMy4xIDM4NS41IDUwNCAyNTUuNiA1MDQgMTIxLjYgNTA0IDggMzk0LjUgOCAyNTYgOCAxMjMuMSAxMTIuNyA4IDI1NS42IDh6bS44IDQ0LjdjLTExOC4yIDAtMjAzLjcgOTcuOS0yMDMuNyAyMDMuMyAwIDEwOS44IDkxLjIgMjAyLjggMjAzLjcgMjAyLjggMTAzLjIgMCAyMDIuOC04MS4xIDIwMi44LTIwMi44IC4xLTExMy44LTkwLjItMjAzLjMtMjAyLjgtMjAzLjN6TTE0NS43IDIyMWMxMy04My45IDgwLjUtOTUuNyAxMDguOS05NS43IDk5LjggMCAxMjcuNSA4Mi41IDEyNy41IDEzNC4yIDAgNjMuNi00MSAxMzIuOS0xMjguOSAxMzIuOS0zOC45IDAtOTkuMS0yMC0xMDkuNC05N2w2Mi41IDBjMS41IDMwLjEgMTkuNiA0NS4yIDU0LjUgNDUuMiAyMy4zIDAgNTgtMTguMiA1OC04Mi44IDAtODIuNS00OS4xLTgwLjYtNTYuNy04MC42LTMzLjEgMC01MS43IDE0LjYtNTUuOCA0My44bDE4LjIgMC00OS4yIDQ5LjItNDktNDkuMiAxOS40IDB6Il19LHAkdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJjaHJvbWUiLGljb246WzUxMiw1MTIsW10sImYyNjgiLCJNMCAyNTZjMC00Ni42IDEyLjUtOTAuNCAzNC4zLTEyOC45TDE0NC4xIDMxOC4zYzIxLjkgMzkuMiA2My44IDY1LjcgMTExLjkgNjUuNyAxNC4zIDAgMjcuMS0yLjMgNDAuOC02LjZMMjIwLjUgNTA5LjZDOTUuOSA0OTIuMyAwIDM4NS4zIDAgMjU2em0zNjUuMSA2NS42YzEyLjMtMTkuMiAxOC45LTQyLjUgMTguOS02NS42IDAtMzguMi0xNi44LTcyLjUtNDMuMy05NmwxNTIuNyAwYzEyIDI5LjYgMTguNiA2Mi4xIDE4LjYgOTYgMCAxNDEuNC0xMTQuNiAyNTUuMS0yNTYgMjU2TDM2NS4xIDMyMS42ek00NzcuOCAxMjhMMjU2IDEyOGMtNjIuOSAwLTExMy43IDQ0LjEtMTI1LjUgMTAyLjdMNTQuMiA5OC41QzEwMSAzOC41IDE3NCAwIDI1NiAwIDM1MC44IDAgNDMzLjUgNTEuNSA0NzcuOCAxMjh6TTM0NCAyNTZhODggODggMCAxIDEgLTE3NiAwIDg4IDg4IDAgMSAxIDE3NiAweiJdfSxoJHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToidHJhZGUtZmVkZXJhdGlvbiIsaWNvbjpbNTEyLDUxMixbXSwiZjUxMyIsIk0yNTYgOC44YTI0Ny4yIDI0Ny4yIDAgMSAwIDAgNDk0LjQgMjQ3LjIgMjQ3LjIgMCAxIDAgMC00OTQuNHptMCAxMS42YTIzNS42IDIzNS42IDAgMSAxIDAgNDcxLjIgMjM1LjYgMjM1LjYgMCAxIDEgMC00NzEuMnpNNDExLjEgMTYzLjFsMC00Ni44LTE5My44IDAgMCA4MS43LTE1NS4xIDAgMzYuNyA0NiAxMTcuNyAwIDAgMTk2LjggNDguOCAwIDAtMTk1LjggODMuMyAwIDAtNDctODMuMyAwIDAtMzQuOCAxNDUuNyAwIDAtLjF6bS03My4zIDQ1LjFsMCAyMy45LTgyLjkgMCAwIDE5Ny40LTI2LjggMCAwLTE5Ny40LTEyMy44IDAtMjAuMS0yMy45IDE0My45IDAgMC04MC42IDE3MS44IDAgMCAyNC40LTE0NSAwIDAgNTYuMiA4Mi45IDB6bS0xNjEuMy02OWwtMTIuNC0yMC43IDIuMSAyMy44LTIzLjUgNS40IDIzLjMgNS40LTIuMSAyNCAxMi4zLTIwLjUgMjIuMiA5LjUtMTUuNy0xOC4xIDE1LjgtMTguMS0yMiA5LjN6bS0yOS42LTE5LjdsOS4zLTExLjUtMTIuNyA1LjktOC0xMi40IDEuNyAxMy45LTE0LjMgMy44IDEzLjcgMi43LS44IDE0LjcgNi44LTEyLjIgMTMuOCA1LjMtOS41LTEwLjJ6TTMxMi4zIDI2NC43bC0xMy4xIDUuNi03LjMtMTIuMiAxLjMgMTQuMi0xMy45IDMuMiAxMy45IDMuMi0xLjIgMTQuMiA3LjMtMTIuMiAxMy4xIDUuNS05LjQtMTAuNyA5LjMtMTAuOHptMTA2LjktNzcuMmwtMjAuOSA5LjEtMTItMTkuNiAyLjIgMjIuNy0yMi4zIDUuNCAyMi4yIDQuOS0xLjggMjIuOSAxMS41LTE5LjYgMjEuMiA4LjgtMTUuMS0xNyAxNS0xNy42ek0yNTYgMjkuOWEyMjYuMSAyMjYuMSAwIDEgMCAwIDQ1Mi4yIDIyNi4xIDIyNi4xIDAgMSAwIDAtNDUyLjJ6TTM1MC42IDE5NmwwIDUxLTgzLjMgMCAwIDE5NS43LTUyLjcgMCAwLTE5Ni44LTExNi43IDAtNDAtNDkuOSAxNTcuNCAwIDAtODEuNiAxOTcuOCAwIDAgNTAuNy0xNDUuNyAwIDAgMzAuOSA4My4yIDB6TTI1NiA0My4yYzYwLjMgMCAxMTQuOCAyNSAxNTMuNiA2NS4ybC0xOTkuMSAwIDAgODEuNi0xNTcuNCAwQzgxLjEgMTA0LjggMTYxLjQgNDMuMiAyNTYgNDMuMnptMCA0MjcuMWMtMTE3LjkgMC0yMTMuNi05NS42LTIxMy42LTIxMy41IDAtMjEuMiAzLjEtNDEuOCA4LjktNjEuMWw0My44IDU2LjMgMTE0LjcgMCAwIDE5Ni44IDY0LjYgMCAwLTE5NS44IDgzLjMgMCAwLTYyLjctODMuMiAwIDAtMTkuMiAxNDUuNiAwIDAtNTAuOGMzMC44IDM3IDQ5LjMgODQuNiA0OS4zIDEzNi41IC4xIDExNy45LTk1LjUgMjEzLjUtMjEzLjQgMjEzLjV6TTE4Ni44IDI3NWwtMTEtMjEuNCAxLjcgMjQuNS0yMy43IDMuOSAyMy44IDUuOS0zLjcgMjMuOCAxMy0yMC45IDIxLjUgMTAuOC0xNS44LTE4LjggMTYuOS0xNy4xLTIyLjcgOS4zeiJdfSxmJHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToidmFhZGluIixpY29uOls0NDgsNTEyLFtdLCJmNDA4IiwiTTIyNC41IDE0MC43QzIyNiAxMjMuMSAyMjkuNCA4OCAyNzQuMyA4OGw5OC42IDBjMjAuNyAwIDMyLjEtNy44IDMyLjEtMjEuNmwwLTEyLjNjMC0xMi4yIDkuMy0yMi4xIDIxLjUtMjIuMVM0NDggNDEuOSA0NDggNTQuMWwwIDM2LjVjMCA0Mi45LTIxLjUgNjItNjYuOCA2MmwtMTAwLjUgMGMtMzAuMSAwLTMzIDE0LjctMzMgMjcuMSAwIDEuMy0uMSAyLjUtLjIgMy43LS43IDEyLjMtMTAuOSAyMi4yLTIzLjQgMjIuMnMtMjIuNy05LjgtMjMuNC0yMi4yYy0uMS0xLjItLjItMi40LS4yLTMuNyAwLTEyLjMtMy0yNy4xLTMzLTI3LjFsLTEwMC43IDBDMjEuNSAxNTIuNiAwIDEzMy41IDAgOTAuNkwwIDU0LjFDMCA0MS45IDkuNCAzMiAyMS42IDMyczIxLjUgOS45IDIxLjUgMjIuMWwwIDEyLjNDNDMuMSA4MC4yIDU0LjUgODggNzUuMiA4OGw5OC42IDBjNDQuOCAwIDQ4LjMgMzUuMSA0OS44IDUyLjdsLjkgMHpNMjI0IDQ1NmMxMS41IDAgMjEuNC03IDI1LjctMTYuMyAxLjEtMS44IDk3LjEtMTY5LjYgOTguMi0xNzEuNCAxMS45LTE5LjYtMy4yLTQ0LjMtMjcuMi00NC4zLTEzLjkgMC0yMy4zIDYuNC0yOS44IDIwLjNMMjI0IDM2MiAxNTcuMSAyNDQuM2MtNi40LTEzLjktMTUuOS0yMC4zLTI5LjgtMjAuMy0yNCAwLTM5LjEgMjQuNi0yNy4yIDQ0LjMgMS4xIDEuOSA5Ny4xIDE2OS42IDk4LjIgMTcxLjQgNC4zIDkuMyAxNC4yIDE2LjMgMjUuNyAxNi4zeiJdfSxtJHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZGV2aWFudGFydCIsaWNvbjpbMzIwLDUxMixbXSwiZjFiZCIsIk0zMjAgOTMuMmwtOTguMiAxNzkuMSA3LjQgOS41IDkwLjggMCAwIDEyNy43LTE2MC45IDAtMTMuNSA5LjItNDMuNyA4NGMtLjMgMC04LjYgOC42LTkuMiA5LjJsLTkyLjcgMCAwLTkzLjIgOTMuMi0xNzkuNC03LjQtOS4yLTg1LjggMCAwLTEyNy42IDE1NiAwIDEzLjUtOS4yIDQzLjctODRjLjMgMCA4LjYtOC42IDkuMi05LjJsOTcuNiAwIDAgOTMuMXoiXX0sWDM9e3ByZWZpeDoiZmFiIixpY29uTmFtZToibWVkaXVtIixpY29uOls0NDgsNTEyLFs2MjQwNywibWVkaXVtLW0iXSwiZjIzYSIsIk0zNjkuNCAzMmM0My40IDAgNzguNiAzNS4yIDc4LjYgNzguNmwwIDgzLjhjLTEuOS0uMS0zLjgtLjItNS43LS4ybC0uNCAwYy0xMCAwLTIyLjMgMi40LTMxLjEgNi44LTEwIDQuNi0xOC43IDExLjUtMjYgMjAuNi0xMS44IDE0LjYtMTguOSAzNC4zLTIwLjYgNTYuNC0uMSAuNy0uMSAxLjMtLjIgMnMtLjEgMS4yLS4xIDEuOWMtLjEgMS4yLS4xIDIuNC0uMSAzLjYgMCAxLjktLjEgMy44IDAgNS44IDEuMiA1MC4xIDI4LjIgOTAuMiA3Ni4zIDkwLjIgMi43IDAgNS4zLS4xIDcuOS0uNGwwIDIwLjRjMCA0My40LTM1LjIgNzguNi03OC42IDc4LjZMNzguNiA0ODBDMzUuMiA0ODAgMCA0NDQuOCAwIDQwMS40TDAgMTEwLjZDMCA2Ny4yIDM1LjIgMzIgNzguNiAzMmwyOTAuOCAwek04Mi4zIDEzOC45bC4zIC4xYzEzLjIgMyAxOS44IDcuNCAxOS44IDIzLjRsMCAxODcuMmMwIDE2LTYuNyAyMC40LTE5LjkgMjMuNGwtLjMgLjEgMCAyLjggNTIuOCAwIDAtMi44LS4zLS4xYy0xMy4yLTMtMTkuOS03LjQtMTkuOS0yMy40bDAtMTc2LjMgODYuMSAyMDIuNSA0LjkgMCA4OC42LTIwOC4yIDAgMTg2LjZjLTEuMSAxMi42LTcuOCAxNi41LTE5LjcgMTkuMmwtLjMgLjEgMCAyLjcgOTEuOSAwIDAtMi43LS4zLS4xYy0xMS45LTIuNy0xOC43LTYuNi0xOS45LTE5LjJsLS4xLTE5MS44IC4xIDBjMC0xNiA2LjctMjAuNCAxOS45LTIzLjRsLjMtLjEgMC0yLjctNzIuMiAwLTY3IDE1Ny40LTY3LTE1Ny40LTc3LjggMCAwIDIuN3pNNDQ4IDM0MC4zYy0yNS4xLTcuNC00My0zNS4xLTQxLjItNjcuOGwwIDAgNDEuMSAwIDAgNjcuOHptLTYuNC0xMzUuNmMyLjMgMCA0LjQgLjMgNi40IC45bDAgNTcuNC00MC4yIDBjMS41LTMzLjYgMTMuNi01Ny45IDMzLjgtNTguM3oiXX0sZyR0PVgzLGIkdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJvcGVuY2FydCIsaWNvbjpbNjQwLDUxMixbXSwiZjIzZCIsIk0zMzEuOCA0NDAuNGE0NS44IDQ1LjggMCAxIDEgOTEuNSAuMyA0NS44IDQ1LjggMCAxIDEgLTkxLjUtLjN6TTE2OS40IDM5NC45YTQ1LjcgNDUuNyAwIDEgMCAuMyA5MS4zIDQ1LjcgNDUuNyAwIDEgMCAtLjMtOTEuM3ptMjkxLjctMjcwYy0zMDIuMiAwLTM3OS4yLTEyLjgtNDYxLjEtOTkuMiAzNC40IDUxLjcgNTMuMyAxNDguOSAzNzMuMSAxNDQuMiAzMzMuMy01IDEzMCA4Ni4xIDcwLjggMTg4LjkgMTg2LjctMTY2LjcgMzE5LjQtMjMzLjkgMTcuMi0yMzMuOXoiXX0sdiR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InktY29tYmluYXRvciIsaWNvbjpbNDQ4LDUxMixbXSwiZjIzYiIsIk00NDggMzJsMCA0NDgtNDQ4IDAgMC00NDggNDQ4IDB6TTIzNiAyODcuNWw3Ny41LTE0NS41LTMyLjcgMC00NS44IDkxYy00LjcgOS4zLTkgMTguMy0xMi44IDI2LjhsLTEyLjItMjYuOC00NS4yLTkxLTM1IDAgNzYuNyAxNDMuOCAwIDk0LjUgMjkuNSAwIDAtOTIuOHoiXX0seCR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImxpbmUiLGljb246WzUxMiw1MTIsW10sImYzYzAiLCJNMzExIDE5Ni44bDAgODEuM2MwIDIuMS0xLjYgMy43LTMuNyAzLjdsLTEzIDBjLTEuMyAwLTIuNC0uNy0zLTEuNUwyNTQgMjMwIDI1NCAyNzguMmMwIDIuMS0xLjYgMy43LTMuNyAzLjdsLTEzIDBjLTIuMSAwLTMuNy0xLjYtMy43LTMuN2wwLTgxLjNjMC0yLjEgMS42LTMuNyAzLjctMy43bDEyLjkgMGMxLjEgMCAyLjQgLjYgMyAxLjZsMzcuMyA1MC4zIDAtNDguMmMwLTIuMSAxLjYtMy43IDMuNy0zLjdsMTMgMGMyLjEtLjEgMy44IDEuNiAzLjggMy41bDAgLjF6bS05My43LTMuN2wtMTMgMGMtMi4xIDAtMy43IDEuNi0zLjcgMy43bDAgODEuM2MwIDIuMSAxLjYgMy43IDMuNyAzLjdsMTMgMGMyLjEgMCAzLjctMS42IDMuNy0zLjdsMC04MS4zYzAtMS45LTEuNi0zLjctMy43LTMuN3ptLTMxLjQgNjguMWwtMzUuNiAwIDAtNjQuNGMwLTIuMS0xLjYtMy43LTMuNy0zLjdsLTEzIDBjLTIuMSAwLTMuNyAxLjYtMy43IDMuN2wwIDgxLjNjMCAxIC4zIDEuOCAxIDIuNSAuNyAuNiAxLjUgMSAyLjUgMWw1Mi4yIDBjMi4xIDAgMy43LTEuNiAzLjctMy43bDAtMTNjMC0xLjktMS42LTMuNy0zLjUtMy43bC4xIDB6bTE5My43LTY4LjFsLTUyLjMgMGMtMS45IDAtMy43IDEuNi0zLjcgMy43bDAgODEuM2MwIDEuOSAxLjYgMy43IDMuNyAzLjdsNTIuMiAwYzIuMSAwIDMuNy0xLjYgMy43LTMuN2wwLTEzLjFjMC0yLjEtMS42LTMuNy0zLjctMy43bC0zNS41IDAgMC0xMy42IDM1LjUgMGMyLjEgMCAzLjctMS42IDMuNy0zLjdsMC0xMy4xYzAtMi4xLTEuNi0zLjctMy43LTMuN2wtMzUuNSAwIDAtMTMuNyAzNS41IDBjMi4xIDAgMy43LTEuNiAzLjctMy43bDAtMTNjLS4xLTEuOS0xLjctMy43LTMuNy0zLjdsLjEgMHpNNTEyIDkzLjRsMCAzMjZjLS4xIDUxLjItNDIuMSA5Mi43LTkzLjQgOTIuNmwtMzI2IDBDNDEuNCA1MTEuOS0uMSA0NjkuOCAwIDQxOC42bDAtMzI2Qy4xIDQxLjQgNDIuMi0uMSA5My40IDBsMzI2IDBjNTEuMiAuMSA5Mi43IDQyLjEgOTIuNiA5My40ek00NDEuNiAyMzMuNWMwLTgzLjQtODMuNy0xNTEuMy0xODYuNC0xNTEuM1M2OC44IDE1MC4xIDY4LjggMjMzLjVjMCA3NC43IDY2LjMgMTM3LjQgMTU1LjkgMTQ5LjMgMjEuOCA0LjcgMTkuMyAxMi43IDE0LjQgNDIuMS0uOCA0LjctMy44IDE4LjQgMTYuMSAxMC4xczEwNy4zLTYzLjIgMTQ2LjUtMTA4LjJjMjctMjkuNyAzOS45LTU5LjggMzkuOS05My4xbDAtLjJ6Il19LHkkdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJhbWlsaWEiLGljb246WzQ0OCw1MTIsW10sImYzNmQiLCJNMjQwLjIgMzJjLTYxLjkgMC0xMzEuNSAxNi45LTE4NC4yIDU1LjQtNS4xIDMuMS05LjEgOS4yLTcuMiAxOS40IDEuMSA1LjEgNS4xIDI3LjQgMTAuMiAzOS42IDQuMSAxMC4yIDE0LjIgMTAuMiAyMC4zIDYuMSAzMi41LTIyLjMgOTYuNS00Ny43IDE1Mi4zLTQ3LjcgNTcuOSAwIDU4LjkgMjguNCA1OC45IDczLjFsMCAzOC41QzIwMy4xIDIyNy43IDc4LjMgMjUxIDQ2LjggMjY0LjIgMTEuMyAyODAuNSAxNi40IDM1Ny43IDE2LjQgMzc2UzMxLjYgNDgwIDE0MS4zIDQ4MGM0Ny44IDAgMTEzLjctMjAuNyAxNTMuMy00Mi4xbDAgMjUuNGMwIDMgMi4xIDguMiA2LjEgOS4xIDMuMSAxIDUwLjcgMiA1OS45IDJzNjIuNSAuMyA2Ni41LS43YzQuMS0xIDUuMS02LjEgNS4xLTkuMWwwLTI5Ni42Yy0uMS04MC4zLTU3LjktMTM2LTE5Mi0xMzZ6bTUwLjIgMzQ4Yy0yMS40IDEzLjItNDguNyAyNC40LTc5LjEgMjQuNC01Mi44IDAtNTguOS0zMy41LTU5LTQ0LjcgMC0xMi4yLTMtNDIuNyAxOC4zLTUyLjkgMjQuMy0xMy4yIDc1LjEtMjkuNCAxMTkuOC0zMy41bDAgMTA2Ljd6Il19LHckdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJhc3ltbWV0cmlrIixpY29uOls1NzYsNTEyLFtdLCJmMzcyIiwiTTUxNy41IDMwOS4yYzM4LjgtNDAgNTguMS04MCA1OC41LTExNi4xIC44LTY1LjUtNTkuNC0xMTguMi0xNjkuNC0xMzUtMTI4LjctMTkuNy0yODguNSAxNS41LTQwNi42IDgyLjQgNTItMjYuNSAxMTAuNi00OC4yIDE3MC43LTU4LjIgNzQuNS0yMC41IDE1My0yNS40IDIyMS4zLTE0LjggMTUyLjUgMjMuOCAxOTYuOCAxMjcuNSA5OC44IDIzMS43LTEwLjIgMTAuOC0yMiAyMS4xLTM1IDMwLjZMMzA0LjkgMTAzLjQgMTE0LjcgMzg4LjljLTY1LjYtMjkuNC03Ni41LTkwLjItMTkuMS0xNTEuMiAyMC44LTIyLjIgNDguMy00MS45IDc5LjUtNTguMSAyMC0xMi4yIDM5LjctMjIuNiA2Mi0zMC43LTY1LjEgMjAuMy0xMjIuNyA1Mi45LTE2MS42IDkyLjktMjcuNyAyOC42LTQxLjQgNTcuMS00MS43IDgyLjktLjUgMzUuMSAyMy40IDY1LjEgNjguNCA4M2wtMzQuNSA1MS43IDEwMS42IDAgMjItMzQuNGMyMi4yIDEgNDUuMyAwIDY4LjYtMi43bC0yMi44IDM3LjEgMTM1LjUgMC0zMi42LTUzLjFjMTguNi01LjMgMzYuOS0xMS41IDU0LjUtMTguN2w0NS45IDcxLjggMTAxLjYgMC03My40LTExMC40YzE4LjUtMTIuMSAzNS0yNS41IDQ4LjktMzkuOHpNMzI5LjkgMzg5LjdsLTI1LTQwLjYtMzIuNyA1My4zYy0yMy40IDMuNS00Ni43IDUuMS02OS4yIDQuNGwxMDEuOS0xNTkuMyA3OC43IDEyM2MtMTcuMiA3LjQtMzUuMyAxMy45LTUzLjcgMTkuMnoiXX0sayR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InBoYWJyaWNhdG9yIixpY29uOls1MTIsNTEyLFtdLCJmM2RiIiwiTTMzMS4xIDI2Mi4xbC0uMS0xM3MyMS43LTE5LjggMjEuMS0yMS4ybC05LjUtMjBjLS42LTEuNC0yOS41LS41LTI5LjUtLjVsLTkuNC05LjNzLjItMjguNS0xLjItMjkuMWwtMjAuMS05LjJjLTEuNC0uNi0yMC43IDIxLTIwLjcgMjFsLTEzLjEtLjJzLTIwLjUtMjEuNC0yMS45LTIwLjhsLTIwIDguM2MtMS40IC41IC4yIDI4LjkgLjIgMjguOWwtOS4xIDkuMXMtMjkuMi0uOS0yOS43IC40TDE2MCAyMjYuM2MtLjYgMS40IDIxIDIxIDIxIDIxbC4xIDEyLjlTMTU5LjQgMjgwIDE2MCAyODEuNGw5LjUgMjBjLjYgMS40IDI5LjUgLjUgMjkuNSAuNWw5LjQgOS4zcy0uMiAzMS44IDEuMiAzMi4zbDIwLjEgOC4zYzEuNCAuNiAyMC43LTIzLjUgMjAuNy0yMy41bDEzLjEgLjJzMjAuNSAyMy44IDIxLjggMjMuM2wyMC03LjVjMS40LS42LS4yLTMyLjEtLjItMzIuMWw5LjEtOS4xczI5LjIgLjkgMjkuNy0uNWw4LjEtMTkuOGMuNy0xLjEtMjAuOS0yMC43LTIwLjktMjAuN3ptLTQ0LjktOC43Yy43IDE3LjEtMTIuOCAzMS42LTMwLjEgMzIuNHMtMzIuMS0xMi41LTMyLjgtMjkuNiAxMi44LTMxLjYgMzAuMS0zMi4zYzE3LjMtLjggMzIuMSAxMi41IDMyLjggMjkuNXptMjAxLjItMzcuOWwtOTctOTctLjEgLjFjLTc1LjEtNzMuMy0xOTUuNC03Mi44LTI2OS44IDEuNi01MC45IDUxLTI3LjggMjcuOS05NS43IDk1LjMtMjIuMyAyMi4zLTIyLjMgNTguNyAwIDgxIDY5LjkgNjkuNCA0Ni40IDQ2IDk3LjQgOTdsLjEtLjFjNzUuMSA3My4zIDE5NS40IDcyLjkgMjY5LjgtMS42IDUxLTUwLjkgMjcuOS0yNy45IDk1LjMtOTUuMyAyMi4zLTIyLjMgMjIuMy01OC43IDAtODF6TTM2My41IDE0OC4yYTE1Mi4zIDE1Mi4zIDAgMSAxIC0yMTUgMjE1LjYgMTUyLjMgMTUyLjMgMCAxIDEgMjE1LTIxNS42eiJdfSxTJHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiYm90cyIsaWNvbjpbNjQwLDUxMixbXSwiZTM0MCIsIk04Ni4zIDE5Ny44Yy04LS4xLTE1LjkgMS43LTIzLjEgNS4xcy0xMy41IDguNi0xOC40IDE0LjlsMC02MS45YzAtMi4yLS45LTQuMy0yLjQtNS44cy0zLjYtMi40LTUuOC0yLjRsLTI4LjQgMGMtMi4yIDAtNC4zIC45LTUuOCAyLjRTMCAxNTMuOCAwIDE1NkwwIDMzMy42YzAgMS4xIC4yIDIuMSAuNiAzLjFzMSAxLjkgMS44IDIuNyAxLjcgMS40IDIuNyAxLjggMi4xIC42IDMuMSAuNmwyOC40IDBjMS4xIDAgMi4xLS4yIDMuMS0uNnMxLjktMSAyLjctMS44IDEuNC0xLjcgMS44LTIuNyAuNi0yLjEgLjYtMy4xbDAtOC4xYzExLjYgMTMuNCAyNS45IDE5LjggNDEuNiAxOS44IDM0LjYgMCA2MS45LTI2LjIgNjEuOS03My44IDAtNDUuOS0yNy03My42LTYxLjktNzMuNnpNNzEuNSAzMDUuN2MtOS42IDAtMjEuMi00LjktMjYuNy0xMi41bDAtNDNjNS41LTcuNiAxNy4yLTEyLjggMjYuNy0xMi44IDE3LjcgMCAzMS4xIDEzLjEgMzEuMSAzNCAwIDIxLjItMTMuNCAzNC4zLTMxLjEgMzQuM3ptMTU2LjQtNTlhMTcuNCAxNy40IDAgMSAwIDAgMzQuOCAxNy40IDE3LjQgMCAxIDAgMC0zNC44em00Ni4xLTkwbDAtNDQuN2MyLjgtMS4yIDUuMi0zLjMgNi42LTZzMS45LTUuOCAxLjMtOC45LTIuMi01LjctNC42LTcuNy01LjQtMy04LjQtMy02LjEgMS4xLTguNCAzLTQgNC43LTQuNiA3LjctLjEgNi4xIDEuMyA4LjkgMy44IDQuOCA2LjYgNmwwIDQ0LjdjLTI4IDEuMy01NC40IDEzLjYtNzMuNiAzNC4xcy0yOS41IDQ3LjctMjguOCA3NS44IDEyLjMgNTQuNyAzMi40IDc0LjMgNDcgMzAuNiA3NS4xIDMwLjYgNTUtMTEgNzUuMS0zMC42IDMxLjctNDYuMyAzMi40LTc0LjMtOS43LTU1LjMtMjguOC03NS44LTQ1LjUtMzIuOC03My42LTM0LjF6bTg2IDEwNy40YzAgMzAuNS00MC44IDU1LjMtOTEuMSA1NS4zcy05MS4xLTI0LjctOTEuMS01NS4zIDQwLjgtNTUuMyA5MS4xLTU1LjMgOTEuMSAyNC43IDkxLjEgNTUuM2wwIDB6bS01MC4yIDE3LjRjMy40IDAgNi44LTEgOS43LTIuOXM1LjEtNC42IDYuNC03LjggMS43LTYuNyAxLTEwLjEtMi4zLTYuNS00LjgtOC45LTUuNS00LjEtOC45LTQuOC02LjktLjMtMTAuMSAxLTUuOSAzLjUtNy44IDYuNC0yLjkgNi4yLTIuOSA5LjdjMCA0LjYgMS44IDkgNS4xIDEyLjNzNy43IDUuMSAxMi4zIDUuMWwwIDB6bTI3MC45LTMxYy0xNC44LTIuNi0yMi40LTMuOC0yMi40LTkuOSAwLTUuNSA3LjMtOS45IDE3LjctOS45IDEyLjIgLjEgMjQuMiAzLjYgMzQuNSAxMC4xIDEuOCAxLjIgNCAxLjYgNi4yIDEuMXM0LTEuNyA1LjEtMy42Yy4xLS4xIC4xLS4yIC4yLS4zbDguNi0xNC45YzEuMS0xLjkgMS40LTQuMSAuOC02LjFzLTEuOS0zLjktMy43LTVjLTE1LjctOS40LTMzLjctMTQuMy01Mi0xNC4xLTM5IDAtNjAuMiAyMS41LTYwLjIgNDYuMiAwIDM2LjMgMzMuNyA0MS45IDU3LjYgNDUuNiAxMy40IDIuMyAyNC4xIDQuNCAyNC4xIDExIDAgNi40LTUuNSAxMC44LTE4LjkgMTAuOC0xMy42IDAtMzEtNi4yLTQyLjYtMTMuNi0uOS0uNi0xLjktMS0zLTEuMnMtMi4xLS4yLTMuMiAuMS0yLjEgLjctMi45IDEuMy0xLjYgMS40LTIuMiAyLjNjMCAuMS0uMSAuMS0uMSAuMmwtMTAuMiAxNi45Yy0xLjEgMS44LTEuNCA0LTEgNnMxLjcgMy45IDMuNSA1YzE1LjIgMTAuMyAzNy43IDE2LjcgNTkuNCAxNi43IDQwLjQgMCA2NC0xOS44IDY0LTQ2LjUgMC0zOC4xLTM1LjUtNDMuOS01OS4zLTQ4LjN6bS05NS45IDYwLjhjLS41LTItMS44LTMuNy0zLjYtNC44cy0zLjktMS41LTUuOS0xLjFjLTEuNCAuMy0yLjggLjQtNC4yIC40LTcuOCAwLTEyLjUtNi4xLTEyLjUtMTQuMmwwLTUxLjIgMjAuMyAwYzIuMiAwIDQuMi0uOSA1LjgtMi40czIuNC0zLjYgMi40LTUuOGwwLTIyLjdjMC0yLjItLjktNC4yLTIuNC01LjhzLTMuNi0yLjQtNS44LTIuNGwtMjAuMyAwIDAtMzAuMmMwLTIuMi0uOS00LjItMi40LTUuOHMtMy42LTIuNC01LjgtMi40bC0yOC4yIDBjLTIuMiAwLTQuMiAuOS01LjggMi40cy0yLjQgMy42LTIuNCA1LjhsMCAzMC4yLTE1LjEgMGMtMS4xIDAtMi4xIC4yLTMuMSAuNnMtMS45IDEtMi42IDEuOC0xLjQgMS43LTEuOCAyLjYtLjYgMi0uNiAzLjFsMCAyMi43YzAgMS4xIC4yIDIuMSAuNiAzLjFzMSAxLjkgMS44IDIuNiAxLjcgMS40IDIuNiAxLjggMiAuNiAzLjEgLjZsMTUuMSAwIDAgNjMuN2MwIDI3IDE1LjQgNDEuMyA0My45IDQxLjMgMTIuMiAwIDIxLjQtMi4yIDI3LjYtNS40IDEuNi0uOCAyLjktMi4yIDMuNy0zLjlzLjktMy42IC41LTUuNGwtNS0xOS4zeiJdfSxfJHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToidmluZSIsaWNvbjpbMzg0LDUxMixbXSwiZjFjYSIsIk0zODQgMjU0LjdsMCA1Mi4xYy0xOC40IDQuMi0zNi45IDYuMS01Mi4xIDYuMS0zNi45IDc3LjQtMTAzIDE0My44LTEyNS4xIDE1Ni4yLTE0IDcuOS0yNy4xIDguNC00Mi43LS44LTI3LjEtMTYuMy0xMjkuOS0xMDAuNi0xNjQuMS0zNjUuNmw3NC41IDBjMTguNyAxNTkuMSA2NC41IDI0MC43IDExNC44IDMwMS44IDI3LjktMjcuOSA1NC44LTY1LjEgNzUuNi0xMDYuOS00OS44LTI1LjMtODAuMS04MC45LTgwLjEtMTQ1LjYgMC02NS42IDM3LjctMTE1LjEgMTAyLjItMTE1LjEgMTE0LjkgMCAxMDYuMiAxMjcuOSA4MS42IDE4MS41IDAgMC00Ni40IDkuMi02My41LTIwLjUgMy40LTExLjMgOC4yLTMwLjggOC4yLTQ4LjUgMC0zMS4zLTExLjMtNDYuNi0yOC40LTQ2LjYtMTguMiAwLTMwLjggMTcuMS0zMC44IDUwIC4xIDc5LjIgNTkuNCAxMTguNyAxMjkuOSAxMDEuOXoiXX0sTSR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6Im1lZHJ0IixpY29uOls1NzYsNTEyLFtdLCJmM2M4IiwiTTEyOS43IDI1NmMwIDEyMS44IDgzLjkgMjIyLjggMTkzLjUgMjQxLjEtMTguNyA0LjUtMzguMiA2LjktNTguMiA2LjktMTM3LjYgMC0yNDktMTExLTI0OS0yNDhTMTI3LjQgOCAyNjQuOSA4YzIwLjEgMCAzOS42IDIuNCA1OC4yIDYuOS0xMDkuNiAxOC4zLTE5My40IDExOS4zLTE5My40IDI0MS4xek00MjcuMSAzNTYuM2MtNzcuNyA1NS40LTE3OS42IDQ3LjUtMjQwLjQtMTQuNiA1LjUgMTQuMSAxMi43IDI3LjcgMjEuNyA0MC41IDYxLjYgODguMiAxODIuNCAxMDkuMyAyNjkuNyA0N3MxMDguMS0xODQuMyA0Ni41LTI3Mi42Yy05LTEyLjktMTkuMy0yNC4zLTMwLjUtMzQuMiAzNy40IDc4LjggMTAuNyAxNzguNS02NyAyMzMuOXptLTIxOC44LTI0NGMtMS40IDEtMi43IDIuMS00IDMuMSA2NC4zLTE3LjggMTM1LjkgNCAxNzguOSA2MC41IDM1LjcgNDcgNDIuOSAxMDYuNiAyNC40IDE1OCA1Ni43LTU2LjIgNjcuNi0xNDIuMSAyMi4zLTIwMS44LTUwLTY1LjUtMTQ5LjEtNzQuNC0yMjEuNi0xOS44ek0zMTIgMjI0Yy00LjQgMC04LTMuNi04LThsMC00MGMwLTQuNC0zLjYtOC04LThsLTQ4IDBjLTQuNCAwLTggMy42LTggOGwwIDQwYzAgNC40LTMuNiA4LTggOGwtNDAgMGMtNC40IDAtOCAzLjYtOCA4bDAgNDhjMCA0LjQgMy42IDggOCA4bDQwIDBjNC40IDAgOCAzLjYgOCA4bDAgNDBjMCA0LjQgMy42IDggOCA4bDQ4IDBjNC40IDAgOC0zLjYgOC04bDAtNDBjMC00LjQgMy42LTggOC04bDQwIDBjNC40IDAgOC0zLjYgOC04bDAtNDhjMC00LjQtMy42LTgtOC04bC00MCAweiJdfSx6JHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToib3NpIixpY29uOls1MTIsNTEyLFtdLCJmNDFhIiwiTTggMjY2LjRjMi4zLTEzNS44IDk3LjQtMjMyLjQgMjEzLjgtMjQ4LjEgMTM4LjgtMTguNiAyNTUuNiA3NS44IDI3OCAyMDEuMSAyMS4zIDExOC44LTQ0IDIzMC0xNTEuNiAyNzQtOS4zIDMuOC0xNC40IDEuNy0xOC03LjctMTcuOC00Ni4zLTM1LjYtOTIuNi01My40LTEzOS0zLjEtOC4xLTEtMTMuMiA3LTE2LjggMjQuMi0xMSAzOS4zLTI5LjQgNDMuMy01NS44IDEuNS05LjcgMS0xOS42LTEuNS0yOS4xcy02LjktMTguNC0xMi45LTI2LjEtMTMuNi0xNC4xLTIyLjItMTguOC0xOC4xLTcuNS0yNy45LTguM2MtMzktMy40LTcxLjggMjMuNy03Ny41IDU5LjctNS4yIDMzIDExLjEgNjMuNyA0MS45IDc3LjcgOS42IDQuNCAxMS41IDguNiA3LjggMTguNC0xNy45IDQ2LjYtMzUuOCA5My4yLTUzLjcgMTM5LjktMi42IDYuOS04LjMgOS4zLTE1LjUgNi41LTUyLjYtMjAuMy0xMDEuNC02MS0xMzAuOC0xMTktMjQuOS00OS4yLTI1LjItODcuNy0yNi44LTEwOC43em0yMC45LTEuOWMuNCA2LjYgLjYgMTQuMyAxLjMgMjIuMSA2LjMgNzEuOSA0OS42IDE0My41IDEzMSAxODMuMSAzLjIgMS41IDQuNCAuOCA1LjYtMi4zIDE0LjktMzkuMSAyOS45LTc4LjIgNDUtMTE3LjMgMS4zLTMuMyAuNi00LjgtMi40LTYuNy0zMS42LTE5LjktNDcuMy00OC41LTQ1LjYtODYgMS0yMS42IDkuMy00MC41IDIzLjgtNTYuMyAzMC0zMi43IDc3LTM5LjggMTE1LjUtMTcuNiAxNS42IDkgMjguMiAyMi4zIDM2LjIgMzguNHMxMS4yIDM0LjIgOSA1MmMtMy42IDMwLjYtMTkuMyA1My45LTQ1LjcgNjkuOC0yLjcgMS42LTMuNSAyLjktMi4zIDYgMTUuMiAzOS4yIDMwLjMgNzguNCA0NS4yIDExNy43IDEuMiAzLjEgMi40IDMuOCA1LjYgMi4zIDM1LjUtMTYuNiA2NS4yLTQwLjMgODguMS03MiAzNC44LTQ4LjIgNDkuMS0xMDEuOSA0Mi4zLTE2MS0xMy43LTExNy41LTExOS40LTIxNC44LTI1NS41LTE5OC0xMDYuMSAxMy0xOTUuMyAxMDIuNS0xOTcuMSAyMjUuOHoiXX0sQyR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImdnIixpY29uOls1MTIsNTEyLFtdLCJmMjYwIiwiTTE3OS4yIDIzMC40bDEwMi40IDEwMi40LTEwMi40IDEwMi40LTE3OS4yLTE3OS4yIDE3OS4yLTE3OS4yIDQ0LjggNDQuOC0yNS42IDI1LjYtMTkuMi0xOS4yLTEyOCAxMjggMTI4IDEyOCA1MS41LTUxLjUtNzcuMS03Ni41IDI1LjYtMjUuNnpNMzMyLjggNzYuOGwtMTAyLjQgMTAyLjQgMTAyLjQgMTAyLjQgMjUuNi0yNS42LTc3LjEtNzYuNSA1MS41LTUxLjUgMTI4IDEyOC0xMjggMTI4LTE5LjItMTkuMi0yNS42IDI1LjYgNDQuOCA0NC44IDE3OS4yLTE3OS4yLTE3OS4yLTE3OS4yeiJdfSxUJHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiYnV5c2VsbGFkcyIsaWNvbjpbNDQ4LDUxMixbXSwiZjIwZCIsIk0yMjQgMTUwLjdsNDIuOSAxNjAuNy04NS44IDAgNDIuOS0xNjAuN3pNNDQ4IDgwbDAgMzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4TDQ4IDQ4MGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhMMCA4MEMwIDUzLjUgMjEuNSAzMiA0OCAzMmwzNTIgMGMyNi41IDAgNDggMjEuNSA0OCA0OHpNMzgyLjcgNDA1LjNsLTk0LjUtMjk4LjctMTI4LjQgMC05NC41IDI5OC43IDkwLjcgMCAxMTEuNy05MS42IDI0LjIgOTEuNiA5MC44IDB6Il19LCQkdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJnb29nbGUtcGx1cyIsaWNvbjpbNTEyLDUxMixbXSwiZjJiMyIsIk0yNTYgOGEyNDggMjQ4IDAgMSAwIDAgNDk2IDI0OCAyNDggMCAxIDAgMC00OTZ6TTE4NS4zIDM4MGMtMzIuOSAwLTY0LjQtMTMuMS04Ny43LTM2LjNzLTM2LjMtNTQuOC0zNi4zLTg3LjcgMTMuMS02NC40IDM2LjMtODcuNyA1NC44LTM2LjMgODcuNy0zNi4zYzMxLjMgMCA2MC4xIDExIDgzIDMyLjNsLTMzLjYgMzIuNmMtMTMuMi0xMi45LTMxLjMtMTkuMS00OS40LTE5LjEtNDIuOSAwLTc3LjIgMzUuNS03Ny4yIDc4LjFTMTQyLjMgMzM0IDE4NS4zIDMzNGMzMi42IDAgNjQuOS0xOS4xIDcwLjEtNTMuM2wtNzAuMSAwIDAtNDIuNiAxMTYuOSAwYzEuMyA2LjggMS45IDEzLjggMS45IDIwLjcgMCA3MC44LTQ3LjUgMTIxLjItMTE4LjggMTIxLjJ6TTQxNS41IDI3My44bDAgMzUuNS0zNS41IDAgMC0zNS41LTM1LjUgMCAwLTM1LjUgMzUuNSAwIDAtMzUuNSAzNS41IDAgMCAzNS41IDM1LjIgMCAwIDM1LjUtMzUuMiAweiJdfSxEJHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToic2NyZWVucGFsIixpY29uOls1MTIsNTEyLFtdLCJlNTcwIiwiTTI3OC42IDIyLjVhMjIuNSAyMi41IDAgMSAxIC00NSAwIDIyLjUgMjIuNSAwIDEgMSA0NSAwek0xOTguNyAyNTlhNTcuNCA1Ny40IDAgMSAxIDExNC44IDAgNTcuNCA1Ny40IDAgMSAxIC0xMTQuOCAwem0xMzguNiA5MWMyMi4zLTE5LjkgMzYuNS00Ny4zIDM5LjktNzdsMTE5LjUgMGMtMy41IDYxLjQtMzAuNCAxMTkuMi03NS4yIDE2MS40LTQ0LjcgNDIuMi0xMDMuOSA2NS44LTE2NS40IDY1LjhTMTM1LjQgNDc2LjYgOTAuNyA0MzQuNEM0NS45IDM5Mi4yIDE5LjEgMzM0LjQgMTUuNSAyNzNsMTE5LjcgMGMzLjQgMjkuNyAxNy42IDU3LjEgMzkuOSA3N3M1MS4yIDMwLjkgODEuMSAzMC45YzI5IDAgNTguNy0xMSA4MS4xLTMwLjl6TTI4LjMgMTQxLjdhMjIuNSAyMi41IDAgMSAxIDQ1LTEuNCAyMi41IDIyLjUgMCAxIDEgLTQ1IDEuNHptNDU1LjYtLjdhMjIuNCAyMi40IDAgMSAxIC00NC45IDAgMjIuNCAyMi40IDAgMSAxIDQ0LjkgMHpNMzE4IDk1LjNjLTE3LjMgMTMuOC0zOS4yIDIyLjgtNjEuOSAyMi44cy00NC42LTktNjEuOS0yMi44Yy0xNy4zLTE0LjctMjguOC0zNS4xLTMyLjQtNTcuNSAxNS4xLTYuNCAzMC44LTExLjMgNDYuOS0xNC41IDAgMTIuNiA1IDI0LjYgMTMuOSAzMy41czIwLjkgMTMuOSAzMy41IDEzLjkgMjQuNi01IDMzLjUtMTMuOSAxMy45LTIwLjkgMTMuOS0zMy41YzE2LjEgMy4yIDMxLjggOC4xIDQ2LjkgMTQuNS0zLjYgMjIuNC0xNS4xIDQyLjgtMzIuNCA1Ny41ek04Mi45IDIzMWMtMjEuNCA3LjYtNDQuNyA3LjQtNjUuOS0uNiAyLTE2LjMgNS42LTMyLjMgMTAuOC00Ny45IDUuNCAzLjEgMTEuMyA1LjEgMTcuNSA2IDYuMiAuOCAxMi40IC40IDE4LjUtMS4yIDYtMS43IDExLjYtNC40IDE2LjYtOC4yczkuMS04LjUgMTIuMi0xMy45IDUuMS0xMS40IDYtMTcuNWMuOC02LjIgLjQtMTIuNS0xLjItMTguNXMtNC40LTExLjYtOC4yLTE2LjZjLTMuOC00LjktOC41LTkuMS0xMy45LTEyLjIgMTAuOC0xMi4zIDIyLjktMjMuNSAzNi0zMy4zIDE3LjYgMTQuMyAyOS41IDM0LjUgMzMuNiA1Ni44cy4xIDQ1LjQtMTEuMiA2NWMtMTEuNCAxOS42LTI5LjQgMzQuNS01MC43IDQyLjF6bTM0Ni40IC4xYy0yMS4zLTcuNi0zOS4zLTIyLjYtNTAuNy00Mi4yLTExLjMtMTkuNi0xNS4yLTQyLjctMTEuMS02NSA0LjEtMjIuMiAxNi00Mi40IDMzLjUtNTYuNyAxMy4xIDkuOCAyNS4yIDIxIDM2IDMzLjMtMTAuNyA2LjQtMTguNCAxNi43LTIxLjUgMjguOC0zLjIgMTItMi4zIDI0LjggNC44IDM1LjYgNi4yIDEwLjggMTYuNCAxOC43IDI4LjQgMjJzMjQuOSAxLjcgMzUuNy00LjNjNS4zIDE1LjUgOC45IDMxLjYgMTAuOSA0Ny44LTIyLjEgOC4xLTQ0LjYgOC4zLTY2IC43eiJdfSxMJHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiYml0Y29pbiIsaWNvbjpbNTEyLDUxMixbXSwiZjM3OSIsIk04IDI1NmEyNDggMjQ4IDAgMSAxIDQ5NiAwIDI0OCAyNDggMCAxIDEgLTQ5NiAwem0zNTQuMy0zNS4zYzQuOS0zMy0yMC4yLTUwLjctNTQuNi02Mi42bDExLjEtNDQuNy0yNy4yLTYuOC0xMC45IDQzLjVjLTcuMi0xLjgtMTQuNS0zLjUtMjEuOC01LjFsMTAuOS00My44LTI3LjItNi44LTExLjIgNDQuN2MtNS45LTEuMy0xMS43LTIuNy0xNy40LTQuMWwwLS4xLTM3LjUtOS40LTcuMiAyOS4xczIwLjIgNC42IDE5LjggNC45YzExIDIuOCAxMyAxMCAxMi43IDE1LjhsLTEyLjcgNTAuOWMuOCAuMiAxLjcgLjUgMi44IC45LS45LS4yLTEuOS0uNS0yLjktLjdsLTE3LjggNzEuM2MtMS4zIDMuMy00LjggOC40LTEyLjUgNi41IC4zIC40LTE5LjgtNC45LTE5LjgtNC45bC0xMy41IDMxLjEgMzUuNCA4LjhjNi42IDEuNyAxMyAzLjQgMTkuNCA1bC0xMS4zIDQ1LjIgMjcuMiA2LjggMTEuMi00NC43YzcuMiAyIDE0LjQgMy44IDIxLjcgNS42bC0xMS4xIDQ0LjUgMjcuMiA2LjggMTEuMy00NS4xYzQ2LjQgOC44IDgxLjMgNS4yIDk2LTM2LjcgMTEuOC0zMy44LS42LTUzLjMtMjUtNjYgMTcuOC00LjEgMzEuMi0xNS44IDM0LjctMzkuOXptLTYyLjIgODcuMmMtOC40IDMzLjgtNjUuMyAxNS41LTgzLjggMTAuOWwxNC45LTU5LjljMTguNCA0LjYgNzcuNiAxMy43IDY4LjggNDl6bTguNC04Ny43Yy03LjcgMzAuNy01NSAxNS4xLTcwLjQgMTEuM2wxMy41LTU0LjNjMTUuNCAzLjggNjQuOCAxMSA1Ni44IDQzeiJdfSxFJHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToic3dpZnQiLGljb246WzQ0OCw1MTIsW10sImY4ZTEiLCJNNDQ4IDE1Ni4xYzAtNC41LS4xLTktLjItMTMuNS0uMS05LjktMS0xOS43LTIuNi0yOS40LTEuNy05LjctNC44LTE5LjItOS4yLTI4LTktMTcuNy0yMy40LTMyLjEtNDEuMi00MS4xLTguOC00LjUtMTguMy03LjYtMjgtOS4yLTkuNy0xLjYtMTkuNi0yLjUtMjkuNC0yLjYtNC41LS4xLTktLjItMTMuNS0uMkwxMjQuMSAzMmMtNC41IDAtOSAuMS0xMy41IC4yLTIuNCAuMS00LjkgLjItNy40IC4zLTcuNCAuMy0xNC44IDEuMS0yMi4xIDIuMy03LjMgMS4zLTE0LjQgMy4zLTIxLjIgNi4xLTIuMyAxLTQuNiAyLTYuOCAzLjEtNi42IDMuNC0xMi44IDcuNS0xOC40IDEyLjMtMS45IDEuNi0zLjcgMy4zLTUuNCA1LTcgNy0xMi45IDE1LTE3LjQgMjMuOC00LjQgOC44LTcuNiAxOC4zLTkuMiAyOC0xLjYgOS43LTIuNCAxOS42LTIuNSAyOS40LS4xIDQuNS0uMiA5LS4yIDEzLjVMMCAzNTUuOWMwIDQuNSAuMSA5IC4yIDEzLjUgLjEgOS45IDEgMTkuNyAyLjYgMjkuNCAxLjcgOS43IDQuOCAxOS4yIDkuMiAyOCA5IDE3LjcgMjMuNCAzMi4xIDQxLjEgNDEuMSA4LjggNC40IDE4LjMgNy41IDI4IDkuMiA5LjcgMS42IDE5LjYgMi41IDI5LjQgMi42IDQuNSAuMSA5IC4yIDEzLjUgLjJsMTk5LjggMGM0LjUgMCA5LS4xIDEzLjUtLjIgOS45LS4xIDE5LjctMSAyOS40LTIuNiA5LjctMS43IDE5LjItNC44IDI4LTkuMiAxNy43LTkgMzIuMS0yMy40IDQxLjEtNDEuMiA0LjQtOC44IDcuNi0xOC4zIDkuMi0yOCAxLjYtOS43IDIuNS0xOS42IDIuNi0yOS40IC4xLTQuNSAuMi05IC4yLTEzLjVsMC0xODMuOGMwLTUuNCAwLTEwLjcgMC0xNnptLTY5LjkgMjQxYy0yMC0zOC45LTU3LjItMjkuMy03Ni4zLTE5LjUtMS43IDEtMy41IDItNS4yIDNsLS40IC4yYy0zOS41IDIxLTkyLjUgMjIuNS0xNDUuOC0uNC00My40LTE4LjgtODAuMS01MC4zLTEwNS4zLTkwLjQgMTIuMyA5LjEgMjUuNCAxNi45IDM5LjIgMjMuNCA1Ni40IDI2LjQgMTEzIDI0LjUgMTUzIDAtNTctNDMuOC0xMDQuNi0xMDEtMTQxLjEtMTQ3LjItNy04LjEtMTMuMi0xNi44LTE4LjgtMjUuOSA0My43IDQwIDExMi43IDkwLjIgMTM3LjUgMTA0LjEtNTIuNi01NS41LTk4LjktMTIzLjktOTYuNy0xMjEuNyA4Mi44IDgzLjQgMTU5LjIgMTMwLjYgMTU5LjIgMTMwLjYgMi45IDEuNiA1IDIuOCA2LjcgNCAxLjYtNC4xIDMtOC4yIDQuMi0xMi41IDEzLjItNDguMy0xLjctMTAzLjYtMzUuMy0xNDkuMiA3Ni44IDQ2LjEgMTIyLjIgMTMzLjcgMTAzLjYgMjA3LjgtLjQgMS43LTEgMy40LTEuNCA1LjEgMzguNSA0Ny40IDI4IDk4LjIgMjMuMSA4OC42bDAgMHoiXX0sUCR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImZpbGVzLXBpbndoZWVsIixpY29uOls1MTIsNTEyLFtdLCJlNjlmIiwiTTI1My41IDI0Ni40TDEzNy4yIDEzMC4yYy0uNi0uNi0xLTEuMy0xLjQtMnMtLjUtMS42LS41LTIuNCAuMi0xLjYgLjUtMi40IC44LTEuNCAxLjQtMkwyNTMuNiA1LjFjLjktLjkgMi0xLjUgMy4yLTEuN3MyLjUtLjEgMy42IC4zIDIuMSAxLjMgMi44IDIuMyAxLjEgMi4yIDEuMSAzLjVsMCAyMzIuNWMwIDEuMy0uMyAyLjUtMSAzLjZzLTEuNyAxLjktMi45IDIuNC0yLjUgLjYtMy43IC4zLTIuNC0uOS0zLjItMS45em00MC4zLTQuNGwwLTEzNC40YzAtLjggLjEtMS42IC41LTIuNHMuOC0xLjUgMS4zLTIuMSAxLjMtMS4xIDItMS40IDEuNi0uNSAyLjQtLjVsMTM0LjQgMGMxLjIgMCAyLjUgLjQgMy41IDEuMXMxLjggMS43IDIuMyAyLjggLjYgMi40IC4zIDMuNi0uOSAyLjMtMS43IDMuMkwzMDQuMyAyNDYuNGMtLjkgLjgtMiAxLjQtMy4yIDEuNnMtMi40IC4xLTMuNS0uNC0yLjEtMS4zLTIuOC0yLjMtMS4xLTIuMi0xLjEtMy40bC4xIC4xem0zMC42IDM1Yy0xLjIgMC0yLjUtLjMtMy41LTFzLTEuOS0xLjYtMi40LTIuOC0uNi0yLjQtLjQtMy42IC44LTIuMyAxLjctMy4yTDQwNCAxODIuMmMuNi0uNiAxLjMtMSAyLTEuNHMxLjYtLjUgMi40LS41IDEuNiAuMiAyLjQgLjUgMS40IC44IDIgMS40bDg0LjQgODQuMmMuOSAuOSAxLjUgMiAxLjcgMy4ycy4xIDIuNS0uMyAzLjYtMS4zIDIuMS0yLjMgMi44LTIuMiAxLjEtMy41IDEuMWwtMTY4LjUgMCAuMS0uMXptOTAuNyAxMzFsLTk1LjMtOTUuMmMtLjktLjktMS41LTItMS43LTMuMnMtLjEtMi41IC40LTMuNyAxLjMtMi4xIDIuNC0yLjggMi4zLTEgMy41LTFsOTUuMiAwYzEuNyAwIDMuMiAuNyA0LjQgMS44czEuOCAyLjggMS44IDQuNGwwIDk1LjNjMCAxLjItLjQgMi41LTEuMSAzLjVzLTEuNyAxLjgtMi44IDIuMy0yLjQgLjYtMy42IC4zLTIuMy0uOS0zLjItMS43ek0xNi44IDMwMi4xbDIxNi45IDBjMS4yIDAgMi41IC40IDMuNSAxLjFzMS44IDEuNyAyLjMgMi44IC42IDIuNCAuMyAzLjYtLjggMi4zLTEuNyAzLjJMMTI5LjcgNDIxLjJjLS42IC42LTEuMyAxLTIgMS40cy0xLjYgLjUtMi40IC41LTEuNi0uMi0yLjQtLjUtMS40LS44LTItMS40TDEyLjMgMzEyLjhjLS45LS45LTEuNS0yLTEuNy0zLjJzLS4xLTIuNSAuNC0zLjYgMS4zLTIuMSAyLjMtMi44IDIuMy0xIDMuNS0xbDAtLjF6TTI2NC4zIDQ2NS4zYzAgLjgtLjIgMS42LS41IDIuNHMtLjggMS41LTEuNCAyLTEuMyAxLTIgMS40LTEuNiAuNS0yLjQgLjVsLTEyOCAwYy0xLjIgMC0yLjUtLjQtMy41LTEuMXMtMS44LTEuNy0yLjMtMi44LS42LTIuNC0uMy0zLjYgLjgtMi4zIDEuNy0zLjJsMTI4LTEyOGMuOS0uOSAyLTEuNSAzLjItMS43czIuNS0uMSAzLjYgLjMgMi4xIDEuMyAyLjggMi4zIDEuMSAyLjIgMS4xIDMuNWwwIDEyOHptNDAtMTMyLjVsODIuOCA4Mi43Yy42IC42IDEgMS4zIDEuNCAycy41IDEuNiAuNSAyLjQtLjIgMS42LS41IDIuNC0uOCAxLjQtMS40IDJMMzA0LjMgNTA3Yy0uOSAuOS0yIDEuNS0zLjIgMS43cy0yLjUgLjEtMy42LS4zLTIuMS0xLjMtMi44LTIuMy0xLjEtMi4yLTEuMS0zLjVsMC0xNjUuNGMwLTEuMiAuNC0yLjUgMS4xLTMuNXMxLjctMS44IDIuOC0yLjMgMi40LS42IDMuNi0uMyAyLjMgLjggMy4yIDEuN3pNNzkgMTIyLjRjMC0xLjIgLjMtMi41IDEtMy41czEuNy0xLjggMi44LTIuMyAyLjQtLjYgMy42LS40IDIuMyAuOCAzLjIgMS43TDIzOC4xIDI2Ni40Yy45IC45IDEuNSAyIDEuNyAzLjJzLjEgMi41LS4zIDMuNi0xLjMgMi4xLTIuMyAyLjgtMi4yIDEuMS0zLjUgMS4xbC0xNDguNCAwYy0xLjcgMC0zLjItLjctNC40LTEuOHMtMS44LTIuOC0xLjgtNC40bDAtMTQ4LjQtLjEtLjF6Il19LEkkdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJsYXJhdmVsIixpY29uOls1MTIsNTEyLFtdLCJmM2JkIiwiTTUwNC42IDExNS44Yy0uMS0uMi0uMi0uNS0uMy0uNy0uMS0uNC0uMy0uOC0uNS0xLjItLjItLjItLjMtLjUtLjUtLjctLjItLjMtLjUtLjYtLjctLjktLjItLjItLjUtLjQtLjgtLjYtLjMtLjItLjYtLjUtLjktLjdMNDA0LjYgNTUuNWMtMS4yLS43LTIuNi0xLjEtNC0xLjFzLTIuOCAuNC00IDEuMUwzMDAuMyAxMTFjLS4zIC4yLS42IC40LS45IC43LS4zIC4yLS41IC40LS44IC42LS4zIC4zLS41IC42LS43IC45LS4yIC4yLS40IC40LS41IC43LS4yIC40LS40IC44LS41IDEuMi0uMSAuMi0uMiAuNC0uMyAuNy0uMiAuNy0uMyAxLjQtLjMgMi4xbDAgMTA1LjItODAuMiA0Ni4yIDAtMjA1LjljMC0uNy0uMS0xLjQtLjMtMi4xLS4xLS4yLS4yLS40LS4zLS43LS4xLS40LS4zLS44LS41LTEuMi0uMS0uMy0uNC0uNS0uNS0uNy0uMi0uMy0uNS0uNi0uNy0uOS0uMi0uMi0uNS0uNC0uOC0uNi0uMy0uMi0uNi0uNS0uOS0uN0wxMTUuOCAxLjFjLTEuMi0uNy0yLjYtMS4xLTQtMS4xcy0yLjggLjQtNCAxLjFMMTEuNSA1Ni41Yy0uMyAuMi0uNiAuNC0uOSAuNy0uMyAuMi0uNSAuNC0uOCAuNi0uMyAuMy0uNSAuNi0uNyAuOS0uMiAuMy0uNCAuNS0uNiAuNy0uMiAuNC0uNCAuOC0uNSAxLjItLjEgLjItLjIgLjQtLjMgLjctLjIgLjctLjMgMS40LS4zIDIuMWwwIDMyOS43YzAgMS40IC40IDIuOCAxLjEgNHMxLjcgMi4yIDIuOSAyLjlMMjA0IDUxMC45Yy40IC4yIC45IC40IDEuMyAuNSAuMiAuMSAuNCAuMiAuNiAuMyAxLjMgLjQgMi44IC40IDQuMSAwIC4yLS4xIC40LS4yIC42LS4yIC41LS4yIDEtLjMgMS40LS42TDQwNC42IDQwMC4xYzEuMi0uNyAyLjItMS43IDIuOS0yLjlzMS4xLTIuNiAxLjEtNGwwLTEwNS4zIDkyLjItNTMuMWMxLjItLjcgMi4yLTEuNyAyLjktM3MxLjEtMi42IDEuMS00bDAtMTA5LjhjMC0uNy0uMS0xLjQtLjItMi4xek0xMTEuOCAxNy4zbDgwLjIgNDYuMS04MC4yIDQ2LjItODAuMi00Ni4yIDgwLjItNDYuMnptODguMiA2MGwwIDIwMS4zYy0zMy4yIDE5LjEtNTkuOSAzNC41LTgwLjIgNDYuMmwwLTIwMS4zQzE1MyAxMDQuNCAxNzkuNyA4OSAyMDAgNzcuM3ptMCA0MTIuOEwyMy41IDM4OC41IDIzLjUgNzcuM2MyMC4zIDExLjcgNDcuMSAyNy4xIDgwLjIgNDYuMmwwIDIxNS4yYzAgLjMgLjEgLjYgLjEgLjkgMCAuNCAuMSAuOCAuMiAxLjIgLjEgLjMgLjIgLjYgLjQgLjkgLjEgLjMgLjMgLjcgLjQgMSAuMiAuMyAuNCAuNSAuNiAuOCAuMiAuMyAuNCAuNiAuNyAuOCAuMiAuMiAuNSAuNCAuOCAuNiAuMyAuMiAuNiAuNSAuOSAuN2w5Mi4yIDUyLjIgLjEgOTIuNHptOC0xMDYuMkwxMjggMzM4LjZjNTQuNy0zMS41IDExMy41LTY1LjMgMTc2LjMtMTAxLjVsODAuMSA0Ni4xQzM1NSAzMDAgMjk2LjIgMzMzLjUgMjA4IDM4My45em0xODQuNSA0LjZsLTE3Ni41IDEwMS42IDAtOTIuM0MzMTcuNCAzNDAgMzc2LjIgMzA2LjQgMzkyLjUgMjk3bDAgOTEuNHptMC0xMTkuMWMtMjAuMy0xMS42LTQ3LjEtMjctODAuMi00Ni4xbDAtOTEuNGMyMC4zIDExLjcgNDcuMSAyNy4xIDgwLjIgNDYuMmwwIDkxLjN6bTgtMTA1LjNsLTgwLjItNDYuMiA4MC4yLTQ2LjIgODAuMiA0Ni4xLTgwLjIgNDYuMnptOCAxMDUuM2wwLTkxLjNjMzMuMi0xOS4xIDYwLTM0LjUgODAuMy00Ni4ybDAgOTEuNC04MC4zIDQ2LjJ6Il19LEEkdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ3cGZvcm1zIixpY29uOls0NDgsNTEyLFtdLCJmMjk4IiwiTTQ0OCA3NS4ybDAgMzYxLjdjMCAyNC4zLTE5IDQzLjItNDMuMiA0My4ybC0zNjEuNiAwQzE5LjMgNDgwIDAgNDYxLjQgMCA0MzYuOEwwIDc1LjJDMCA1MS4xIDE4LjggMzIgNDMuMiAzMmwzNjEuNyAwYzI0IDAgNDMuMSAxOC44IDQzLjEgNDMuMnpNNDEwLjcgNDM2LjhsMC0zNjEuNmMwLTMtMi42LTUuOC01LjgtNS44bC05LjMgMC0xMTAuMyA3NC42LTYxLjMtNDkuOS02MS4yIDQ5LjktMTEwLjMtNzQuNy05LjMgMGMtMy4yIDAtNS44IDIuOC01LjggNS44bDAgMzYxLjdjMCAzIDIuNiA1LjggNS44IDUuOGwzNjEuNyAwYzMuMiAuMSA1LjgtMi43IDUuOC01Ljh6TTE1MC4yIDE4NmwwIDM3LTczLjUgMCAwLTM3IDczLjUgMHptMCA3NC40bDAgMzcuMy03My41IDAgMC0zNy4zIDczLjUgMHptMTEuMS0xNDcuM2w1NC00My43LTExOC41IDAgNjQuNSA0My43em0yMTAgNzIuOWwwIDM3LTE5NiAwIDAtMzcgMTk2IDB6bTAgNzQuNGwwIDM3LjMtMTk2IDAgMC0zNy4zIDE5NiAwek0yODYuNyAxMTMuMWw2NC41LTQzLjctMTE4LjQgMCA1My45IDQzLjd6TTM3MS4zIDMzNWwwIDM3LjMtOTkuNCAwIDAtMzcuMyA5OS40IDB6Il19LE4kdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzcGVha2VyLWRlY2siLGljb246WzUxMiw1MTIsW10sImY4M2MiLCJNMjEzLjkgMjk2TDEwMCAyOTZjLTI2LjUgMC01Mi0xMC41LTcwLjctMjkuM1MwIDIyMi41IDAgMTk2IDEwLjUgMTQ0IDI5LjMgMTI1LjMgNzMuNSA5NiAxMDAgOTZsMTMyLjggMGMxMC42IDAgMjAuOCA0LjIgMjguMyAxMS43czExLjcgMTcuNyAxMS43IDI4LjMtNC4yIDIwLjgtMTEuNyAyOC4zLTE3LjcgMTEuNy0yOC4zIDExLjdMOTggMTc2Yy0yNi41IDAtMjYuNCA0MCAwIDQwbDExMy44IDBjMjYuNSAwIDUyIDEwLjUgNzAuNyAyOS4zczI5LjMgNDQuMiAyOS4zIDcwLjctMTAuNSA1Mi0yOS4zIDcwLjctNDQuMiAyOS4zLTcwLjcgMjkuM0w0MCA0MTZjLTEwLjYgMC0yMC44LTQuMi0yOC4zLTExLjdTMCAzODYuNiAwIDM3NiA0LjIgMzU1LjIgMTEuNyAzNDcuNyAyOS40IDMzNiA0MCAzMzZsMTczLjkgMGMyNi41IDAgMjYuNS00MCAwLTQwek0yOTggNDE2YzEzLjUtOS4yIDI1LTIxIDMzLjgtMzQuN3MxNC43LTI5LjIgMTcuMy00NS4zbDY0LjYgMGMyLjYgMCA1LjItLjYgNy42LTEuNnM0LjYtMi41IDYuNC00LjQgMy4zLTQuMSA0LjItNi41IDEuNS01IDEuNC03LjZsMC0xMjBjMC0yLjYtLjUtNS4yLTEuNC03LjZzLTIuNC00LjYtNC4yLTYuNS00LTMuMy02LjQtNC40LTUtMS42LTcuNi0xLjZsLTExNy4yIDBjOS43LTExLjEgMTUtMjUuMyAxNS00MHMtNS4zLTI4LjktMTUtNDBsMTM2LjkgMGM0My40IDAgNzguNiAzNS44IDc4LjYgODBsMCAxNjBjMCA0NC4yLTM1LjIgODAtNzguNiA4MEwyOTggNDE2eiJdfSxSJHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZmxpY2tyIixpY29uOls0NDgsNTEyLFtdLCJmMTZlIiwiTTQwMCAzMkw0OCAzMkMyMS41IDMyIDAgNTMuNSAwIDgwTDAgNDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDM1MiAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtMzUyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0xNDQuNSAxOTJhNjMuNSA2My41IDAgMSAxIDAgMTI3IDYzLjUgNjMuNSAwIDEgMSAwLTEyN3ptMTU5IDBhNjMuNSA2My41IDAgMSAxIDAgMTI3IDYzLjUgNjMuNSAwIDEgMSAwLTEyN3oiXX0sTyR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImNjLXZpc2EiLGljb246WzU3Niw1MTIsW10sImYxZjAiLCJNNDcwLjEgMjMxLjNzNy42IDM3LjIgOS4zIDQ1bC0zMy40IDBjMy4zLTguOSAxNi00My41IDE2LTQzLjUtLjIgLjMgMy4zLTkuMSA1LjMtMTQuOWwyLjggMTMuNHpNNTc2IDgwbDAgMzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4TDQ4IDQ4MGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhMMCA4MEMwIDUzLjUgMjEuNSAzMiA0OCAzMmw0ODAgMGMyNi41IDAgNDggMjEuNSA0OCA0OHpNMTUyLjUgMzMxLjJsNjMuMi0xNTUuMi00Mi41IDAtMzkuMyAxMDYtNC4zLTIxLjUtMTQtNzEuNGMtMi4zLTkuOS05LjQtMTIuNy0xOC4yLTEzLjFsLTY0LjcgMC0uNyAzLjFjMTUuOCA0IDI5LjkgOS44IDQyLjIgMTcuMWwzNS44IDEzNSA0Mi41IDB6bTk0LjQgLjJsMjUuMi0xNTUuNC00MC4yIDAtMjUuMSAxNTUuNCA0MC4xIDB6bTEzOS45LTUwLjhjLjItMTcuNy0xMC42LTMxLjItMzMuNy00Mi4zLTE0LjEtNy4xLTIyLjctMTEuOS0yMi43LTE5LjIgLjItNi42IDcuMy0xMy40IDIzLjEtMTMuNCAxMy4xLS4zIDIyLjcgMi44IDI5LjkgNS45bDMuNiAxLjcgNS41LTMzLjZjLTcuOS0zLjEtMjAuNS02LjYtMzYtNi42LTM5LjcgMC02Ny42IDIxLjItNjcuOCA1MS40LS4zIDIyLjMgMjAgMzQuNyAzNS4yIDQyLjIgMTUuNSA3LjYgMjAuOCAxMi42IDIwLjggMTkuMy0uMiAxMC40LTEyLjYgMTUuMi0yNC4xIDE1LjItMTYgMC0yNC42LTIuNS0zNy43LTguM2wtNS4zLTIuNS01LjYgMzQuOWM5LjQgNC4zIDI2LjggOC4xIDQ0LjggOC4zIDQyLjIgLjEgNjkuNy0yMC44IDcwLTUzek01MjggMzMxLjRsLTMyLjQtMTU1LjQtMzEuMSAwYy05LjYgMC0xNi45IDIuOC0yMSAxMi45bC01OS43IDE0Mi41IDQyLjIgMHM2LjktMTkuMiA4LjQtMjMuM2w1MS42IDBjMS4yIDUuNSA0LjggMjMuMyA0LjggMjMuM2wzNy4yIDB6Il19LEYkdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ1cHdvcmsiLGljb246WzY0MCw1MTIsW10sImU2NDEiLCJNNDkzLjkgMjk1LjZjLTUwLjMgMC04My41LTM4LjktOTIuOC01My45IDExLjktOTUuMyA0Ni44LTEyNS40IDkyLjgtMTI1LjQgNDUuNSAwIDgwLjkgMzYuNCA4MC45IDg5LjdzLTM1LjQgODkuNy04MC45IDg5LjdsMC0uMXptMC0yMzcuOGMtODEuOSAwLTEyNy44IDUzLjQtMTQxIDEwOC40LTE0LjktMjgtMjUuOS02NS41LTM0LjUtMTAwLjNsLTExMy4yIDAgMCAxNDFjMCA1MS4xLTIzLjMgODktNjguOCA4OXMtNzEuNi0zNy44LTcxLjYtODlsLjUtMTQxLTY1LjMgMCAwIDE0MWMwIDQxLjEgMTMuMyA3OC40IDM3LjYgMTA1LjEgMjUgMjcuNSA1OS4yIDQxLjggOTguOCA0MS44IDc4LjggMCAxMzMuOC02MC40IDEzMy44LTE0Ni45bDAtOTQuOGM4LjIgMzEuMiAyNy44IDkxLjEgNjUuMyAxNDMuNmwtMzUgMTk5LjQgNjYuNCAwIDIzLjEtMTQxLjNjNy42IDYuMyAxNS43IDEyIDI0LjIgMTcgMjIuMiAxNCA0Ny43IDIxLjkgNzMuOSAyMi44IDAgMCA0IC4yIDYuMSAuMiA4MS4yIDAgMTQ1LjktNjIuOSAxNDUuOS0xNDcuOFM1NzUuMyA1Ny45IDQ5NC4xIDU3LjlsLS4yLS4xeiJdfSxCJHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToia2FrYW8tdGFsayIsaWNvbjpbNTc2LDUxMixbXSwiZTdkNyIsIk0yODggMi41YzE1OS4xIDAgMjg4IDEwMS43IDI4OCAyMjcuMSAwIDEyNS40LTEyOC45IDIyNy4xLTI4OCAyMjcuMS0xNy41IDAtMzQuNi0xLjItNTEuMi0zLjYtMTYuNiAxMS43LTExMi42IDc5LjEtMTIxLjcgODAuNCAwIDAtMy43IDEuNC02LjktLjRzLTIuNi02LjctMi42LTYuN0MxMDYuNiA1MTkuOCAxMzAuNiA0MzcuMiAxMzUgNDIxLjkgNTMuOSAzODEuOCAwIDMxMC42IDAgMjI5LjUgMCAxMDQuMSAxMjguOSAyLjUgMjg4IDIuNXpNODYuMiAxNjEuN2MtOSAwLTE2LjMgNy4zLTE2LjMgMTYuM3M3LjMgMTYuMyAxNi4zIDE2LjNsMjUuOSAwIDAgOTguN2MwIDguOCA3LjUgMTUuOSAxNi42IDE1LjlzMTYuNi03LjEgMTYuNi0xNS45bDAtOTguNyAyNS45IDBjOSAwIDE2LjMtNy4zIDE2LjMtMTYuM3MtNy4zLTE2LjMtMTYuMy0xNi4zbC04NS4xIDB6bTE0MC44IDBjLTEwLjggLjItMTkuMyA4LjQtMjIuMSAxNi40TDE2NS4yIDI4Mi43Yy01IDE1LjctLjYgMjEuNSAzLjkgMjMuNiAzLjIgMS41IDYuOSAyLjMgMTAuNiAyLjMgNi45IDAgMTIuMi0yLjggMTMuOC03LjNsOC4yLTIxLjYgNTAuNyAwIDguMiAyMS41YzEuNiA0LjUgNi45IDcuMyAxMy44IDcuMyAzLjcgMCA3LjMtLjggMTAuNi0yLjMgNC42LTIuMSA5LTcuOSAzLjktMjMuNkwyNDkuMiAxNzguMWMtMi44LTgtMTEuMy0xNi4yLTIyLjItMTYuNHptMTgwLjkgMGMtOS4yIDAtMTYuNiA3LjUtMTYuNiAxNi42bDAgMTEzLjdjMCA5LjIgNy41IDE2LjYgMTYuNiAxNi42czE2LjYtNy41IDE2LjYtMTYuNmwwLTM2LjIgNS44LTUuOCAzOC45IDUxLjZjMy4yIDQuMiA4IDYuNiAxMy4zIDYuNiAzLjYgMCA3LjEtMS4xIDEwLTMuMyAzLjUtMi43IDUuOC02LjYgNi40LTExcy0uNS04LjgtMy4yLTEyLjNsLTQwLjktNTQuMiAzNy45LTM3LjhjMi42LTIuNiAzLjktNi4yIDMuNy0xMC4xLS4yLTMuOS0yLTcuNi00LjktMTAuNS0zLjEtMy4xLTcuMy00LjktMTEuNC00LjktMy42IDAtNi44IDEuMy05LjIgMy43bC00Ni4zIDQ2LjQgMC0zNS43YzAtOS4yLTcuNS0xNi42LTE2LjYtMTYuNnptLTkxLjMgMGMtOS4zIDAtMTYuOSA3LjUtMTYuOSAxNi42bDAgMTEyLjhjMCA4LjQgNy4xIDE1LjIgMTUuOSAxNS4zbDUzLjMgMGM4LjggMCAxNS45LTYuOSAxNS45LTE1LjNzLTcuMi0xNS4yLTE1LjktMTUuMmwtMzUuMyAwIDAtOTcuNmMwLTkuMi03LjYtMTYuNi0xNy0xNi42em0tNzMgODguNmwtMzMuMiAwIDE2LjYtNDcuMSAxNi42IDQ3LjF6Il19LEgkdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJmbHV0dGVyIixpY29uOls0NDgsNTEyLFtdLCJlNjk0IiwiTTQyOS41IDIzNi4zTDI5MS43IDM3NC4xIDQyOS41IDUxMiAyNzIgNTEyYy0zNi4xLTM2LjEtODIuMS04Mi4xLTEzNy45LTEzNy45bDEzNy45LTEzNy44IDE1Ny41IDB6TTI3MiAwTDE2IDI1NiA5NC44IDMzNC44IDQyOS41IDAgMjcyIDB6Il19LHEkdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJidWZmZXIiLGljb246WzQ0OCw1MTIsW10sImY4MzciLCJNNDI4LjIgMzgwLjdMMjMxLjcgNDc4LjVjLTIuMyAxLTQuOCAxLjUtNy4zIDEuNXMtNS0uNS03LjMtMS41TDIwLjUgMzgwLjdjLTQtMi00LTUuMyAwLTcuM0w2Ny42IDM1MGMyLjMtMSA0LjgtMS41IDcuMy0xLjVzNSAuNSA3LjMgMS41bDEzNC44IDY3YzIuMyAxIDQuOCAxLjUgNy4zIDEuNXM1LS41IDcuMy0xLjVsMTM0LjgtNjdjMi4zLTEgNC44LTEuNSA3LjMtMS41czUgLjUgNy4zIDEuNWw0Ny4xIDIzLjRjNCAyIDQgNS4yIDAgNy4yem0wLTEzNi41bC00Ny4xLTIzLjRjLTIuMy0xLTQuOC0xLjUtNy4zLTEuNXMtNSAuNS03LjMgMS41TDIzMS43IDI4Ny44Yy0yLjMgMS00LjggMS41LTcuMyAxLjVzLTUtLjUtNy4zLTEuNUw4Mi4zIDIyMC43Yy0yLjMtMS00LjgtMS41LTcuMy0xLjVzLTUgLjUtNy4zIDEuNUwyMC41IDI0NC4xYy00IDItNCA1LjMgMCA3LjNsMTk2LjUgOTcuOGMyLjMgMSA0LjggMS41IDcuMyAxLjVzNS0uNSA3LjMtMS41bDE5Ni41LTk3LjhjNC0yIDQtNS4zIDAtNy4zek0yMC41IDEzMC40TDIxNyAyMjAuN2M0LjcgMS45IDEwIDEuOSAxNC43IDBsMTk2LjUtOTAuM2M0LTEuOSA0LTQuOSAwLTYuN0wyMzEuNyAzMy40Yy00LjctMS45LTEwLTEuOS0xNC43IDBMMjAuNSAxMjMuN2MtNCAxLjgtNCA0LjkgMCA2Ljd6Il19LGokdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJncmF0aXBheSIsaWNvbjpbNTEyLDUxMixbXSwiZjE4NCIsIk0yNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyIDI1NiAyNTYgMCAxIDAgMC01MTJ6TTM3NC4zIDIzMy43TDI1Ny43IDM5MS4zIDE0MS4zIDIzMy43Yy05LTEyLjMtMTkuNy01MiAxNC03NC4zIDI5LTE4LjcgNTYuNC00LjMgNzAuNyAxMi4zIDE2LjQgMTguNSA0OC4xIDE3LjQgNjMuNyAwIDE0LjMtMTYuNiA0MS43LTMxIDcwLjMtMTIuMyAzNCAyMi4zIDIzLjMgNjEuOSAxNC4yIDc0LjN6Il19LFYkdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJnb29nbGUtcGF5IixpY29uOls2NDAsNTEyLFtdLCJlMDc5IiwiTTEwNS43IDIxNWwwIDQxLjIgNTcuMSAwYy0xLjIgNi42LTMuNiAxMi45LTcuMiAxOC41cy04LjQgMTAuNC0xMy45IDE0LjFjLTkuNSA2LjYtMjEuNyAxMC4zLTM2IDEwLjMtMjcuNiAwLTUwLjktMTguOS01OS4zLTQ0LjItNC40LTEzLjMtNC40LTI3LjcgMC00MSA4LjQtMjUuNSAzMS43LTQ0LjQgNTkuMy00NC40IDcuNS0uMSAxNC45IDEuMiAyMS45IDRzMTMuMyA2LjkgMTguNiAxMi4xTDE3Ni41IDE1NWMtMTkuMS0xOC4xLTQ0LjQtMjguMS03MC43LTI3LjgtMTkuNyAuMS0zOC45IDUuNy01NS42IDE2LjFzLTMwLjEgMjUuMy0zOC44IDQzQzMuOSAyMDEuMiAwIDIxNy43IDAgMjM0LjRzMy45IDMzLjIgMTEuMyA0OC4xbDAgLjJjOC43IDE3LjcgMjIuMSAzMi41IDM4LjggNDNzMzUuOSAxNiA1NS42IDE2YzI4LjUgMCA1Mi41LTkuNSA3MC0yNS45IDIwLTE4LjYgMzEuNC00Ni4yIDMxLjQtNzguOSAwLTcuMy0uNi0xNC42LTEuOC0yMS44bC05OS43IDB6bTM4OS40LTRjLTEwLjEtOS40LTIzLjktMTQuMS00MS40LTE0LjEtMjIuNSAwLTM5LjMgOC4zLTUwLjUgMjQuOUw0MjQuMSAyMzVjNy42LTExLjMgMTguMS0xNyAzMS4zLTE3IDguNCAwIDE2LjUgMy4yIDIyLjcgOC44IDMgMi42IDUuNSA1LjkgNy4xIDkuNnMyLjUgNy42IDIuNSAxMS43bDAgNS41Yy05LjEtNS4xLTIwLjYtNy44LTM0LjYtNy44LTE2LjQgMC0yOS42IDMuOS0zOS41IDExLjhzLTE0LjggMTguMy0xNC44IDMxLjZjLS4yIDUuOSAxIDExLjggMy40IDE3LjJzNiAxMC4yIDEwLjUgMTQuMWM5LjIgOC4zIDIxIDEyLjUgMzQuOCAxMi41IDE2LjMgMCAyOS4yLTcuMyAzOS0yMS45bDEgMCAwIDE3LjcgMjIuNiAwIDAtNzguN2MuMS0xNi42LTQuOS0yOS43LTE1LTM5em0tMTkuMiA4OS4zYy0zLjUgMy41LTcuNiA2LjMtMTIuMiA4LjJzLTkuNSAyLjktMTQuNCAyLjljLTYuNyAuMS0xMy4xLTIuMS0xOC4zLTYuMi0yLjQtMS44LTQuNC00LjItNS43LTYuOXMtMi01LjctMi04LjdjMC03IDMuMi0xMi44IDkuNS0xNy40czE0LjUtNyAyNC4xLTdjMTMuMi0uMiAyMy41IDIuOCAzMC44IDguOCAwIDEwLjEtNCAxOC45LTExLjcgMjYuNHptLTkzLjctMTQyYy01LjMtNS4zLTExLjYtOS41LTE4LjYtMTIuM3MtMTQuNC00LjItMjEuOS00bC02Mi43IDAgMCAxODYuNyAyMy42IDAgMC03NS42IDM5IDBjMTYgMCAyOS41LTUuNCA0MC41LTE1LjkgLjktLjkgMS44LTEuOCAyLjYtMi43IDkuNi0xMC41IDE0LjgtMjQuNCAxNC4zLTM4LjZzLTYuNi0yNy43LTE2LjktMzcuNmwwIDB6bS0xNi42IDYyLjJjLTMgMy4yLTYuNiA1LjctMTAuNiA3LjRzLTguNCAyLjUtMTIuNyAyLjNsLTM5LjYgMCAwLTY1LjIgMzkuNiAwYzguNSAwIDE2LjYgMy4zIDIyLjYgOS4yIDYuMSA2LjEgOS42IDE0LjMgOS44IDIzcy0zLjEgMTctOSAyMy4zbDAgMHpNNjE0LjMgMjAxbC0zNi41IDkxLjctLjUgMC0zNy40LTkxLjctMjUuNyAwIDUxLjggMTE5LjYtMjkuNCA2NC4zIDI0LjMgMCA3OS0xODMuOS0yNS43IDB6Il19LFUkdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJhcHBsZSIsaWNvbjpbMzg0LDUxMixbXSwiZjE3OSIsIk0zMTkuMSAyNjguN2MtLjItMzYuNyAxNi40LTY0LjQgNTAtODQuOC0xOC44LTI2LjktNDcuMi00MS43LTg0LjctNDQuNi0zNS41LTIuOC03NC4zIDIwLjctODguNSAyMC43LTE1IDAtNDkuNC0xOS43LTc2LjQtMTkuNy01NS44IC45LTExNS4xIDQ0LjUtMTE1LjEgMTMzLjIgMCAyNi4yIDQuOCA1My4zIDE0LjQgODEuMiAxMi44IDM2LjcgNTkgMTI2LjcgMTA3LjIgMTI1LjIgMjUuMi0uNiA0My0xNy45IDc1LjgtMTcuOSAzMS44IDAgNDguMyAxNy45IDc2LjQgMTcuOSA0OC42LS43IDkwLjQtODIuNSAxMDIuNi0xMTkuMy02NS4yLTMwLjctNjEuNy05MC02MS43LTkxLjl6TTI2Mi41IDEwNC41YzI3LjMtMzIuNCAyNC44LTYxLjkgMjQtNzIuNS0yNC4xIDEuNC01MiAxNi40LTY3LjkgMzQuOS0xNy41IDE5LjgtMjcuOCA0NC4zLTI1LjYgNzEuOSAyNi4xIDIgNDkuOS0xMS40IDY5LjUtMzQuM3oiXX0sVyR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InR1bWJsciIsaWNvbjpbMzIwLDUxMixbXSwiZjE3MyIsIk0zMDkuOSA0ODAuM2MtMTMuNiAxNC41LTUwIDMxLjctOTcuNCAzMS43LTEyMC44IDAtMTQ3LTg4LjgtMTQ3LTE0MC42bDAtMTQ0LTQ3LjUgMGMtNS41IDAtMTAtNC41LTEwLTEwbDAtNjhjMC03LjIgNC41LTEzLjYgMTEuMy0xNiA2Mi0yMS44IDgxLjUtNzYgODQuMy0xMTcuMSAuOC0xMSA2LjUtMTYuMyAxNi4xLTE2LjNsNzAuOSAwYzUuNSAwIDEwIDQuNSAxMCAxMGwwIDExNS4yIDgzIDBjNS41IDAgMTAgNC40IDEwIDkuOWwwIDgxLjdjMCA1LjUtNC41IDEwLTEwIDEwbC04My40IDAgMCAxMzMuMmMwIDM0LjIgMjMuNyA1My42IDY4IDM1LjggNC44LTEuOSA5LTMuMiAxMi43LTIuMiAzLjUgLjkgNS44IDMuNCA3LjQgNy45bDIyIDY0LjNjMS44IDUgMy4zIDEwLjYtLjQgMTQuNXoiXX0sRyR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InBob2VuaXgtc3F1YWRyb24iLGljb246WzUxMiw1MTIsW10sImY1MTEiLCJNOTYgNjMuNGM0Ni41LTM2LjEgMTA1LjYtNTYuMSAxNjQuNS01NC42IDI5LjYtLjQgNTkuMSA1LjQgODYuOSAxNS4zLTI0LjEtNC42LTQ5LTYuMy03My40LTIuNS00Mi45IDUuMy04MyAyNy4yLTExMS44IDU5LjIgNS43LTEgMTAuOC0zLjcgMTYtNS45IDE4LjEtNy45IDM3LjUtMTMuMyA1Ny4yLTE0LjggMTkuNy0yLjEgMzkuNi0uNCA1OS4zIDEuOS0xNC40IDIuOC0yOS4xIDQuNi00MyA5LjYtMzQuNCAxMS4xLTY1LjMgMzMuMi04Ni4zIDYyLjYtMTMuOCAxOS43LTIzLjYgNDIuOS0yNC43IDY3LjEtLjQgMTYuNSA1LjIgMzQuOCAxOS44IDQ0IDExLjIgNi44IDI0LjYgOS4yIDM3LjUgNi43IDE1LjQtMi41IDMwLjEtOC42IDQzLjYtMTYuMyAxMS41LTYuOCAyMi43LTE0LjYgMzItMjQuMyAzLjgtMy4yIDIuNS04LjQgMi42LTEyLjgtMi4xLS4zLTQuNC0xLjEtNi4zIC4zLTExLjQgNi4zLTIzLjQgMTEuNC0zNS44IDE1LjQtMjAgNi4yLTQyLjIgOC41LTYyLjEgLjggMTIuOCAxLjcgMjYuMSAuMyAzNy43LTUuNCAyMC4yLTkuNyAzNi44LTI1LjIgNTQuNC0zOC44IDI3LjctMjEuMyA1Ny41LTM5LjkgODguOS01NS4zIDI1LjctMTIgNTIuOS0yMi44IDgxLjYtMjQuMS0xNS42IDEzLjctMzIuMSAyNi41LTQ2LjggNDEuNC0xNC41IDE0LTI3LjUgMjkuNS00MC4xIDQ1LjItMy41IDQuNi05IDYuOS0xMy42IDEwLjItMjIuNCAxNS00MC4zIDM1LjgtNTEuOSA2MC4xLTkuMyAxOS43LTE0LjUgNDEuOS0xMS44IDYzLjYgMS45IDEzLjcgOC43IDI3LjYgMjAuOSAzNC45IDEyLjkgOCAyOSA4LjEgNDMuNSA1LjEgMzIuOC03LjQgNjEuNC0yOC45IDgxLTU1LjggMjAuNC0yNy41IDMwLjUtNjIuMiAyOS4yLTk2LjMtLjUtNy41LTEuNi0xNS0xLjctMjIuNSA4IDE5LjUgMTQuOCAzOS43IDE2LjYgNjAuOCAyIDE0LjMgLjcgMjguOC0xLjYgNDIuOS0xLjkgMTEtNS43IDIxLjUtNy44IDMyLjQgMjAuNC0yMi45IDM0LTUwLjkgMzkuMy04MS4xIDUuNi0zNS41IC43LTcxLjktMTQuMi0xMDQuNiAyMC44IDMyIDMyLjMgNjkuNiAzNS43IDEwNy41IC41IDEyLjcgLjUgMjUuNSAwIDM4LjItMi44IDM0LjMtMTIuOSA2Ny42LTI5LjYgOTcuOC0yNi4xIDQ3LjMtNjggODUuNi0xMTcuMiAxMDgtNzguMyAzNi4yLTE3NC43IDMxLjMtMjQ4LTE0LjctMzktMjMuOC03MC42LTU4LTkxLjQtOTguNy0xNC43LTI4LjktMjMuMy02MC41LTI1LjQtOTIuOWwwLTMxLjNDMy45IDE3MiA0MC45IDEwNS44IDk2IDYzLjR6bTIyMiA4MC4zYzUuNS0uOSAxMC44LTIuNCAxNi00LjUgNS0xLjggOS4yLTUuOSAxMC4zLTExLjItOSA1LTE4IDkuOS0yNi4zIDE1Ljd6Il19LEskdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJjZW50ZXJjb2RlIixpY29uOls1MTIsNTEyLFtdLCJmMzgwIiwiTTIwMS44IDI1NC44YTY0LjEgNjQuMSAwIDEgMSAxMjcuNCAxMy44IDY0LjEgNjQuMSAwIDEgMSAtMTI3LjQtMTMuOHptNDEuNiAyNDguOUM5Ni43IDQ5Ni04LjIgMzY1LjUgMTAuMSAyMjQuMyAyMS4zIDEzNy43IDc1LjkgNjcuNCAxNDkuMiAzMi4zIDMxMC4yLTQ0LjggNDk4LjkgNjkuNyA1MDMuOSAyNDguOSA1MDggMzk1LjkgMzg1LjUgNTExLjEgMjQzLjQgNTAzLjd6bTE3OS45LTE4MGMyNy45LTExOC0xNjAuNS0yMDUuOS0yMzcuMi0yMzQuMi01Ny41IDU2LjMtNjkuMSAxODguNi0zMy44IDM0NC40IDY4LjggMTUuOCAxNjkuMS0yNi40IDI3MS0xMTAuMnoiXX0sWSR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImRlYmlhbiIsaWNvbjpbNDQ4LDUxMixbXSwiZTYwYiIsIk0zODAuNCAyNDUuNmMzLTcuNiA1LjUtMTQgNS4yLTI0LjRsLTQuMyA5YzQuNC0xMy4yIDQtMjcuMSAzLjYtNDAuNC0uMi02LS4zLTExLjggMC0xNy40bC0xLjgtLjVjLTEuNS00NS4yLTQwLjYtOTMuMS03NS4zLTEwOS40LTMwLTEzLjgtNzYuMS0xNi4yLTk3LjMtNS44IDEuMy0xLjEgNC4yLTIgNi44LTIuN2wuMy0uMWMzLjMtMSA2LTEuNyA0LTIuOS0xOS4yIDEuOS0yNC45IDUuNS0zMS4xIDkuNGwtLjEgMGMtNC42IDIuOS05LjUgNi0yMC4zIDguNy0zLjUgMy40IDEuNyAyIDUuOCAuOXM3LjItMS45LS4xIDIuNGMtMy41IDEtNi42IDEuMy05LjYgMS42bC0uMSAwYy04LjMgLjgtMTUuOCAxLjYtMzAuNyAxNyAuOCAxLjMgMy40LS4yIDUuMy0xLjNsLjEtLjFjMi4zLTEuNCAzLjQtMi0xLjcgNC40LTE5LjEtMi40LTYwLjMgNDMuNy02OS4xIDU5bDQuNiAuOGMtMy4yIDgtNi44IDE0LjgtMTAgMjAuOC00LjMgOC4xLTcuOSAxNC45LTguNyAyMS4zLS4zIDUuMS0xIDExLTEuNyAxNy4zLS4xIDEtLjIgMi0uMyAzbC0uMSAuNmMtMyAyNy4zLTYuNyA2MC44IDMuOSA3M2wtMS4zIDEzYy42IDEuMiAxLjEgMi4zIDEuNiAzLjUgLjIgLjQgLjQgLjggLjUgMS4xIDEgMi4xIDIgNC4yIDMuMyA2LjJsLTMgLjJjNyAyMi4xIDEwLjggMjIuNSAxNS4xIDIyLjkgNC40IC40IDkuMyAuOSAxOC43IDI0LjItMi43LS45LTUuNS0xLjktOS40LTcuMi0uNSA0LjEgNS44IDE2LjMgMTMuMSAyNS44bC0zLjEgMy42YzIuMSAzLjcgNC44IDYuMiA3LjYgOC44IDEgLjkgMi4xIDEuOSAzLjEgMi45LTExLjktNi41IDMuMiAxMy43IDExLjkgMjUuMiAuOCAxLjEgMS41IDIgMi4yIDIuOSAxLjQgMS45IDIuNSAzLjQgMi45IDQuMWwyLjQtNC4yYy0uMyA2LjEgNC4zIDEzLjkgMTMuMSAyNC43bDcuMy0uM2MzIDYgMTQgMTYuNyAyMC43IDE3LjJsLTQuNCA1LjhjOC4xIDIuNiAxMC4zIDQuMyAxMi43IDYuMiAyLjYgMi4xIDUuNCA0LjMgMTYuMSA4LjFsLTQuMi03LjRjMy41IDMgNi4yIDUuOSA4LjggOC43bC4xIC4xYzUuMiA1LjYgOS45IDEwLjYgMTkuNyAxNS4zIDEwLjcgMy43IDE2LjYgNC43IDIyLjcgNS44IC4zIDAgLjYgLjEgLjkgLjEgNS40IC44IDExLjIgMS44IDIwLjggNC41LTEuMS0uMS0yLjItLjEtMy4zLS4xLTIuMy0uMS00LjctLjEtNy0uMS0xNC40LS4yLTI5LjItLjQtNDIuNy01LjItOTYuNi0yNS43LTE4NC45LTEzOS0xNzguNC0yNTUuNi0uNi05LjktLjMtMjAuOSAwLTMwLjcgLjQtMTMuNSAuNy0yNC44LTEuNi0yOC4zbDEtMy4xYzUuMy0xNy40IDExLjctMzguMiAyMy44LTYyLjhsLS4xLS4yIDAtLjFjLjQgLjQgMy40IDMuNCA4LjgtNS44IC44LTEuOCAxLjYtMy43IDIuNC01LjYgLjUtMS4xIC45LTIuMiAxLjQtMy4yIDIuNS02LjEgNS4xLTEyLjMgOC40LTE3LjlsMi42LS42YzEuNy0xMC4xIDE3LTIzLjggMjkuOC0zNS4ybDEuMS0xYzUuNy01LjEgMTAuNy05LjcgMTMuNi0xMy4xbC43IDQuNGMxNy0xNS45IDQ0LjYtMjcuNSA2NS42LTM2LjRsLjUtLjJjNC44LTIgOS4zLTMuOSAxMy4zLTUuNy0zLjQgMy44IDIuMiAyLjcgMTAgMSA0LjgtMSAxMC40LTIuMSAxNS4zLTIuNGwtMy45IDIuMWMtMi43IDEuNC01LjQgMi44LTggNC42IDguMS0yIDExLjctMS40IDE1LjctLjhsLjMgMGMzLjUgLjYgNy4zIDEuMiAxNC42IC4yLTUuNiAuOC0xMi4zIDMtMTEuMiAzLjggNy45IC45IDEyLjgtLjEgMTcuMi0xbC4yIDBjNS41LTEuMSAxMC4zLTIgMTkuMyAuOWwtMS00LjhjNy4zIDIuNiAxMi43IDQuMyAxNy41IDUuOGwuNSAuMWMxMCAzIDE3LjYgNS4zIDM0LjIgMTQuMSAzLjIgLjIgNS4zLS41IDcuNC0xLjJsLjEgMGMzLjYtMS4xIDctMi4xIDE1LjIgMS4yIC4zIC41IC41IDEgLjcgMS40IC4xIC4yIC4yIC41IC4zIC43bDAgLjFjMSAyLjYgMS44IDQuNiAxNC42IDEyLjEgMS43LS43LTIuNy00LjctNi40LTguMmwtLjEtLjFjLS4yLS4xLS4zLS4zLS41LS40IDMyLjIgMTcuMyA2Ny4zIDU0LjEgNzggOTMuNS02LTExLjEtNS4yLTUuNS00LjMgLjUgLjYgNCAxLjIgOC4xLS4yIDcuNSA0LjUgMTIuMSA4LjEgMjQuNSAxMC40IDM3LjRsLS44LTIuOS0uMS0uM2MtMy4zLTExLjktOS42LTM0LjMtMTkuOS00OS4zLS40IDQuMy0yLjggMy45LTUuMiAzLjVsLS4xIDBjLTMuMy0uNi02LjItMS4xLTEuOSAxMi42IDIuNiAzLjggMy4xIDIuNCAzLjUgMS4xIC41LTEuNSAuOS0yLjcgNC43IDUuMiAuMSA0LjEgMSA4LjIgMi4xIDEyLjdsLjEgLjZjLjEgLjMgLjEgLjUgLjIgLjhsLjEgLjZjLjYgMi42IDEuMyA1LjQgMS44IDguNC0xLjEtLjItMi4zLTIuMi0zLjQtNC4yLTEuNC0yLjQtMi44LTQuNy0zLjctMy4yIDIuNCAxMS41IDYuNSAxNy40IDggMTguMy0uMyAuNi0uNiAuNy0xLjEgLjctLjggMC0xLjggLjEtMS45IDUuMyAuNyAxMy43IDMuMyAxMi41IDUuMyAxMS42IC42LS4zIDEuMi0uNiAxLjctLjQtLjYgMi41LTEuNiA1LjEtMi43IDcuOS0yLjggNy4xLTYgMTUuNC0zLjQgMjYuMS0uOC0zLTItNi0zLjEtOC45bC0uMS0uNGMtLjItLjUtLjQtMS0uNi0xLjUtLjMtLjgtLjYtMS42LS45LTIuMy0uNiA0LjQtLjMgNy43LS4xIDEwLjZsMCAuN2MuNCA1LjMgLjcgMTAtMyAxOS45IDQuMy0xNC4yIDMuOC0yNi45LS4yLTIwLjggMSAxMC45LTMuNyAyMC40LTggMjguOWwtLjEgLjJjLTMuNiA3LjEtNi44IDEzLjUtNS45IDE5LjNsLTUuMi03LjFjLTcuNSAxMC45LTcgMTMuMy02LjUgMTUuNWwwIC4xYy41IDEuOSAxIDMuOC0zLjQgMTAuOCAxLjctMi45IDEuMy0zLjYgMS00LjItLjQtLjgtLjctMS41IDEuNy01LjEtMS42IC4xLTUuNSAzLjktMTAuMSA4LjUtMy45IDMuOS04LjUgOC40LTEyLjggMTEuOC0zNy41IDMwLjEtODIuMyAzNC0xMjUuNiAxNy44IC4yLTEtLjItMi4xLTMuMS00LjEtMzYuOC0yOC4yLTU4LjUtNTIuMS01MC45LTEwNy41IDIuMS0xLjYgMy42LTUuOCA1LjMtMTAuOGwuMi0uNCAuMS0uMyAwLS4xYzIuOS04LjQgNi41LTE4LjggMTQuMy0yMy44IDcuOC0xNy4zIDMxLjMtMzMuMyA1Ni40LTMzLjcgMjUuNi0xLjQgNDcuMiAxMy43IDU4LjEgMjcuOS0xOS44LTE4LjQtNTIuMS0yNC03OS43LTEwLjQtMjguMiAxMi43LTQ1IDQzLjgtNDIuNSA3NC43IC4zLS40IC42LS42IC45LS44bC4yLS4yYy42LS41IDEuMS0uOSAxLjQtMy4zLS45IDYwLjIgNjQuOCAxMDQuMyAxMTIuMSA4MmwuNiAxLjNjMTIuNy0zLjUgMTUuOS02LjUgMjAuMy0xMC43bC4xLS4xYzIuMi0yLjEgNC43LTQuNSA4LjktNy4zLS4zIC43LTEuMyAxLjctMi40IDIuNy0yLjIgMi4xLTQuNiA0LjUtMS42IDQuNiA1LTEuMyAxOC41LTEzLjQgMjguNS0yMi4zIC42LS41IDEuMi0xIDEuNy0xLjUgMS41LTEuMyAyLjgtMi41IDQtMy42bC4zLS4zYzEuOS00LjIgMS42LTUuNiAxLjMtN2wwLS4xYy0uNC0xLjYtLjgtMy4zIDIuNC05LjZsNy4zLTMuN2MuOC0yLjEgMS41LTQuMSAyLjItNiAuMi0uNiAuNS0xLjIgLjctMS44bC0uNC0uMi0uMS0uMXpNMjQ4IDMzNC4xYy02LTMtMTMuNy04LjktMTQuOC0xMS40bC0uNCAuM2MtLjMgLjYtLjUgMS4zLS4yIDIuMi0xMi4yLTUuNy0yMy40LTE0LjMtMzIuNi0yNC45IDQuOSA3LjEgMTAuMSAxNC4xIDE3IDE5LjUtNi45LTIuMy0xNS4xLTExLjgtMjEuNi0xOS4zbC0uMS0uMWMtNC4zLTUtNy45LTkuMS05LjctOS41IDE5LjggMzUuNSA4MC41IDYyLjMgMTEyLjMgNDktMTQuNyAuNS0zMy40IC4zLTQ5LjktNS44em03OS4zLTExOS43bC0uMS0uMmMtLjUtMS41LTEuMS0zLjEtMS43LTMuNCAxLjQtNS44IDUuNC0xMC43IDQuNCA0LjYtMSAzLjgtMS44IDEuNS0yLjYtMXptLTQuMiAyMi4yYy0xLjMgNy45LTUgMTUuNS0xMC4xIDIyLjUgLjItMi0xLjItMi40LTIuNi0yLjgtMi45LS44LTUuOS0xLjYgNS42LTE2LjEtLjUgMS45LTIuMSA0LjYtMy43IDcuM2wtLjMgLjRjLTMuNiA1LjktNi43IDExIDQgNC4zbDEtMS44YzIuNi00LjUgNS04LjggNi0xMy44bC4xIDB6bS01NS42IDMzLjljNy4xIC42IDE0LjEgLjYgMjEtMS4xLTIuNSAyLjQtNS4yIDQuOC04LjMgNy4yLTExLjEtMS43LTIxLjItNi0xMi43LTYuMXptLTkyLjYgMTEuNmMzLjYgNy4xIDYuNCAxMS41IDkgMTUuN2wuMSAuMmMyLjMgMy43IDQuNCA3LjEgNi44IDExLjctNS4xLTQuMi04LjctOS41LTEyLjUtMTVsLS4zLS41Yy0xLjQtMi4xLTIuOC00LjItNC40LTYuMmwxLjItNS45IC4xIDB6bTcuNS05LjZjMS42IDMuMyAzLjIgNi40IDUuNyA5LjFsMi42IDcuNy0xLjMtMi4xYy0zLjItNS4zLTYuMy0xMC42LTgtMTYuN2wxIDJ6bTIzOC45LTQxLjZjLTIuMyAxNy40LTcuNyAzNC42LTE2IDUwLjMgNy42LTE0LjkgMTIuNS0zMC45IDE0LjgtNDcuMmwxLjItMy4xek0zNS44IDExMC42Yy40IC44IDEuNCAuNSAyLjMgLjMgMS45LS41IDMuNi0uOS0uMSA3LjYtLjUgLjMtMSAuNy0xLjUgMS0xLjQgLjktMi44IDEuOS0zLjkgMyAxLjktMy44IDMuNS03LjQgMy4yLTExLjl6TTI1LjUgMTUyLjNjLS43IDMuNy0xLjUgNy45LTMuNCAxMy45IC4yLTEuOSAwLTMuNS0uMi00LjlsMC0uMWMtLjQtMy40LS43LTYuMyA0LjMtMTIuOC0uMyAxLjItLjUgMi41LS43IDMuOGwwIC4xeiJdfSxaJHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToibWFzdG9kb24iLGljb246WzQ0OCw1MTIsW10sImY0ZjYiLCJNNDMzIDE3OS4xYzAtOTcuMi02My43LTEyNS43LTYzLjctMTI1LjctNjIuNS0yOC43LTIyOC42LTI4LjQtMjkwLjUgMCAwIDAtNjMuNyAyOC41LTYzLjcgMTI1LjcgMCAxMTUuNy02LjYgMjU5LjQgMTA1LjYgMjg5LjEgNDAuNSAxMC43IDc1LjMgMTMgMTAzLjMgMTEuNCA1MC44LTIuOCA3OS4zLTE4LjEgNzkuMy0xOC4xbC0xLjctMzYuOXMtMzYuMyAxMS40LTc3LjEgMTAuMWMtNDAuNC0xLjQtODMtNC40LTg5LjYtNTQtLjYtNC42LS45LTkuMy0uOS0xMy45IDg1LjYgMjAuOSAxNTguNyA5LjEgMTc4LjcgNi43IDU2LjEtNi43IDEwNS00MS4zIDExMS4yLTcyLjkgOS44LTQ5LjggOS0xMjEuNSA5LTEyMS41ek0zNTcuOSAzMDQuM2wtNDYuNiAwIDAtMTE0LjJjMC00OS43LTY0LTUxLjYtNjQgNi45bDAgNjIuNS00Ni4zIDAgMC02Mi41YzAtNTguNS02NC01Ni42LTY0LTYuOWwwIDExNC4yLTQ2LjcgMGMwLTEyMi4xLTUuMi0xNDcuOSAxOC40LTE3NSAyNS45LTI4LjkgNzkuOC0zMC44IDEwMy44IDYuMWwxMS42IDE5LjUgMTEuNi0xOS41YzI0LjEtMzcuMSA3OC4xLTM0LjggMTAzLjgtNi4xIDIzLjcgMjcuMyAxOC40IDUzIDE4LjQgMTc1bDAgMHoiXX0sWCR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNrZXRjaCIsaWNvbjpbNTEyLDUxMixbXSwiZjdjNiIsIk0yNy44IDE2Mi4ybC0xOC41IDI0LjkgOTAuNSAwIDYuOS0xMzAuNy03OC45IDEwNS44ek0zOTYuNiA0NS43TDI2OCAzMiA0MDMuNyAxNzkuMiAzOTYuNiA0NS43ek0xMTIuNSAyMTguM2wtMTEuMi0yMi05MS4xIDAgMjI0LjkgMjYxLjctMTIyLjYtMjM5Ljd6bTItMzEuMmwyODQgMEMzNDAuNiAxMjQuMyAyOTMuMyA3Mi45IDI1Ni42IDMzTDExNC41IDE4Ny4xem0yOTcuMyA5LjFsLTEzMy45IDI2MS44IDIyNC44LTI2MS43LTkwLjkgMCAwLS4xek00MTUuNyA2OWwtOS40LTEyLjYgLjkgMTcuMyA2LjEgMTEzLjQgOTAuMyAwLTg3LjktMTE4LjF6TTExMy44IDkzLjVMMTA5LjIgMTc5LjEgMjQ1IDMyIDExNi40IDQ1LjcgMTEzLjggOTMuNXpNNDAxLjUgMTk2LjJsLTI5MCAwYzE4LjIgMzUuNiA2Ni42IDEzMC4yIDE0NS4xIDI4My44TDQwMS41IDE5Ni4yeiJdfSxRJHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToid2ViLWF3ZXNvbWUiLGljb246WzY0MCw1MTIsW10sImU2ODIiLCJNMzcyLjIgNTJjMCAyMC45LTEyLjQgMzktMzAuMiA0Ny4yTDQ0OCAxOTIgNTUyLjQgMTcxLjFjLTUuMy03LjctOC40LTE3LjEtOC40LTI3LjEgMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OGMwIDI2LTIwLjYgNDcuMS00Ni40IDQ4TDQ4MSA0NDIuM2MtMTAuMyAyMy0zMy4yIDM3LjctNTguNCAzNy43bC0yMDUuMiAwYy0yNS4yIDAtNDgtMTQuOC01OC40LTM3LjdMNDYuNCAxOTJDMjAuNiAxOTEuMSAwIDE3MCAwIDE0NCAwIDExNy41IDIxLjUgOTYgNDggOTZzNDggMjEuNSA0OCA0OGMwIDEwLjEtMy4xIDE5LjQtOC40IDI3LjFMMTkyIDE5MiAyOTguMSA5OS4xYy0xNy43LTguMy0zMC0yNi4zLTMwLTQ3LjEgMC0yOC43IDIzLjMtNTIgNTItNTJzNTIgMjMuMyA1MiA1MmwuMSAweiJdfSxKJHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToic2FzcyIsaWNvbjpbNjQwLDUxMixbXSwiZjQxZSIsIk0zMDEuOCAzNzguOWwwIDB6bTI0OS4xLTg3Yy0yMC4xIDAtNDAgNC42LTU4IDEzLjUtNS45LTExLjktMTItMjIuMy0xMy0zMC4xLTEuMi05LjEtMi41LTE0LjUtMS4xLTI1LjNzNy43LTI2LjEgNy42LTI3LjItMS40LTYuNi0xNC4zLTYuNy0yNCAyLjUtMjUuMyA1LjljLTIuMyA2LjItNC4xIDEyLjYtNS4zIDE5LjEtMi4zIDExLjctMjUuOCA1My41LTM5LjEgNzUuMy00LjQtOC41LTguMS0xNi04LjktMjItMS4yLTkuMS0yLjUtMTQuNS0xLjEtMjUuM3M3LjctMjYuMSA3LjYtMjcuMi0xLjQtNi42LTE0LjMtNi43LTI0IDIuNS0yNS4zIDUuOS0yLjcgMTEuNC01LjMgMTkuMS0zMy45IDc3LjMtNDIuMSA5NS40Yy00LjIgOS4yLTcuOCAxNi42LTEwLjQgMjEuNi0uNCAuOC0uNyAxLjMtLjkgMS43IC4zLS41IC41LTEgLjUtLjgtMi4yIDQuMy0zLjUgNi43LTMuNSA2LjdsMCAuMWMtMS43IDMuMi0zLjYgNi4xLTQuNSA2LjEtLjYgMC0xLjktOC40IC4zLTE5LjkgNC43LTI0LjIgMTUuOC02MS44IDE1LjctNjMuMS0uMS0uNyAyLjEtNy4yLTcuMy0xMC43LTkuMS0zLjMtMTIuNCAyLjItMTMuMiAyLjJzLTEuNCAyLTEuNCAyIDEwLjEtNDIuNC0xOS40LTQyLjRjLTE4LjQgMC00NCAyMC4yLTU2LjYgMzguNS03LjkgNC4zLTI1IDEzLjYtNDMgMjMuNS02LjkgMy44LTE0IDcuNy0yMC43IDExLjQtLjUtLjUtLjktMS0xLjQtMS41LTM1LjgtMzguMi0xMDEuOS02NS4yLTk5LjEtMTE2LjUgMS0xOC43IDcuNS02Ny44IDEyNy4xLTEyNy40IDk4LTQ4LjggMTc2LjMtMzUuNCAxODkuOC01LjYgMTkuNCA0Mi41LTQxLjkgMTIxLjYtMTQzLjcgMTMzLTM4LjggNC4zLTU5LjItMTAuNy02NC4zLTE2LjMtNS4zLTUuOS02LjEtNi4yLTguMS01LjEtMy4zIDEuOC0xLjIgNyAwIDEwLjEgMyA3LjkgMTUuNSAyMS45IDM2LjggMjguOSAxOC43IDYuMSA2NC4yIDkuNSAxMTkuMi0xMS44IDYxLjgtMjMuOCAxMDkuOS05MC4xIDk1LjgtMTQ1LjYtMTQuNC01Ni40LTEwNy45LTc0LjktMTk2LjMtNDMuNS01Mi43IDE4LjctMTA5LjcgNDguMS0xNTAuNyA4Ni40LTQ4LjcgNDUuNi01Ni41IDg1LjMtNTMuMyAxMDEuOSAxMS40IDU4LjkgOTIuNiA5Ny4zIDEyNS4xIDEyNS43LTEuNiAuOS0zLjEgMS43LTQuNSAyLjUtMTYuMyA4LjEtNzguMiA0MC41LTkzLjcgNzQuNy0xNy41IDM4LjggMi45IDY2LjYgMTYuMyA3MC40IDQxLjggMTEuNiA4NC42LTkuMyAxMDcuNi00My42czIwLjItNzkuMSA5LjYtOTkuNWMtLjEtLjMtLjMtLjUtLjQtLjggNC4yLTIuNSA4LjUtNSAxMi44LTcuNSA4LjMtNC45IDE2LjQtOS40IDIzLjUtMTMuMy00IDEwLjgtNi45IDIzLjgtOC40IDQyLjYtMS44IDIyIDcuMyA1MC41IDE5LjEgNjEuNyA1LjIgNC45IDExLjUgNSAxNS40IDUgMTMuOCAwIDIwLTExLjQgMjYuOS0yNSA4LjUtMTYuNiAxNi0zNS45IDE2LTM1LjlzLTkuNCA1Mi4yIDE2LjMgNTIuMmM5LjQgMCAxOC44LTEyLjEgMjMtMTguM2wwIC4xcy4yLS40IC43LTEuMmMxLTEuNSAxLjUtMi40IDEuNS0yLjRsMC0uM2MzLjgtNi41IDEyLjEtMjEuNCAyNC42LTQ2IDE2LjItMzEuOCAzMS43LTcxLjUgMzEuNy03MS41IDEuNSA4LjcgMy42IDE3LjMgNi4yIDI1LjggMi44IDkuNSA4LjcgMTkuOSAxMy40IDMwLTMuOCA1LjItNi4xIDguMi02LjEgOC4yIDAgLjEgMCAuMSAuMSAuMi0zIDQtNi40IDguMy05LjkgMTIuNS0xMi44IDE1LjItMjggMzIuNi0zMCAzNy42LTIuNCA1LjktMS44IDEwLjMgMi44IDEzLjcgMy40IDIuNiA5LjQgMyAxNS43IDIuNSAxMS41LS44IDE5LjYtMy42IDIzLjUtNS40IDcuMi0yLjYgMTQtNi4xIDIwLjItMTAuNiAxMi41LTkuMiAyMC4xLTIyLjQgMTkuNC0zOS44LS40LTkuNi0zLjUtMTkuMi03LjMtMjguMiAxLjEtMS42IDIuMy0zLjMgMy40LTUgMTkuOC0yOC45IDM1LjEtNjAuNiAzNS4xLTYwLjYgMS41IDguNyAzLjYgMTcuMyA2LjIgMjUuOCAyLjQgOC4xIDcuMSAxNyAxMS40IDI1LjctMTguNiAxNS4xLTMwLjEgMzIuNi0zNC4xIDQ0LjEtNy40IDIxLjMtMS42IDMwLjkgOS4zIDMzLjEgNC45IDEgMTEuOS0xLjMgMTcuMS0zLjUgNy43LTIuNiAxNS02LjMgMjEuNi0xMS4xIDEyLjUtOS4yIDI0LjYtMjIuMSAyMy44LTM5LjYtLjMtNy45LTIuNS0xNS44LTUuNC0yMy40IDE1LjctNi42IDM2LjEtMTAuMiA2Mi4xLTcuMiA1NS43IDYuNSA2Ni42IDQxLjMgNjQuNSA1NS44cy0xMy44IDIyLjYtMTcuNyAyNS01LjEgMy4zLTQuOCA1LjFjLjUgMi42IDIuMyAyLjUgNS42IDEuOSA0LjYtLjggMjkuMi0xMS44IDMwLjMtMzguNyAxLjYtMzQtMzEuMS03MS40LTg5LTcxLjFsMCAwek0xMjEuOCA0MzYuNmMtMTguNCAyMC4xLTQ0LjIgMjcuNy01NS4zIDIxLjMtMTEuOS02LjktNy4yLTM2LjUgMTUuNS01Ny45IDEzLjgtMTMgMzEuNi0yNSA0My40LTMyLjQgMi43LTEuNiA2LjYtNCAxMS40LTYuOSAuOC0uNSAxLjItLjcgMS4yLS43IC45LS42IDEuOS0xLjEgMi45LTEuNyA4LjMgMzAuNCAuMyA1Ny4yLTE5LjEgNzguM2wwIDB6bTEzNC40LTkxLjRjLTYuNCAxNS43LTE5LjkgNTUuNy0yOC4xIDUzLjYtNy0xLjgtMTEuMy0zMi4zLTEuNC02Mi4zIDUtMTUuMSAxNS42LTMzLjEgMjEuOS00MC4xIDEwLjEtMTEuMyAyMS4yLTE0LjkgMjMuOC0xMC40IDMuNSA1LjktMTIuMiA0OS40LTE2LjIgNTkuMnptMTExIDUzYy0yLjcgMS40LTUuMiAyLjMtNi40IDEuNi0uOS0uNSAxLjEtMi40IDEuMS0yLjRzMTMuOS0xNC45IDE5LjQtMjEuN2MzLjItNCA2LjktOC43IDEwLjktMTMuOSAwIC41IC4xIDEgLjEgMS42LS4xIDE3LjktMTcuMyAzMC0yNS4xIDM0LjhsMCAwem04NS42LTE5LjVjLTItMS40LTEuNy02LjEgNS0yMC43IDIuNi01LjcgOC42LTE1LjMgMTktMjQuNSAxLjIgMy41IDEuOCA3LjEgMS45IDEwLjgtLjEgMjIuNS0xNi4yIDMwLjktMjUuOSAzNC40bDAgMHoiXX0sZUR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InRocmVlbWEiLGljb246WzM4NCw1MTIsW10sImU4NWYiLCJNODcuNCA0NDUuMWMxOC41IDAgMzMuNSAxNSAzMy41IDMzLjRTMTA1LjkgNTEyIDg3LjQgNTEyIDU0IDQ5NyA1NCA0NzguNSA2OSA0NDUuMSA4Ny40IDQ0NS4xem0xMDkuMiAwYzE4LjUgMCAzMy41IDE1IDMzLjUgMzMuNHMtMTUgMzMuNS0zMy41IDMzLjUtMzMuNC0xNS0zMy40LTMzLjUgMTUtMzMuNCAzMy40LTMzLjR6bTEwOS4zIDBjMTguNSAwIDMzLjUgMTUgMzMuNSAzMy40cy0xNSAzMy41LTMzLjUgMzMuNS0zMy41LTE1LTMzLjUtMzMuNSAxNS0zMy40IDMzLjUtMzMuNHpNMTkyLjMgLjNjMTA5LjggMCAxOTkuMiA4OS4zIDE5OS4yIDE5OS4xUzMwMi4yIDM5OC41IDE5Mi40IDM5OC41Yy00MC41IDAtNzguMS0xMi4xLTEwOS42LTMyLjlsLTc2LjUgMjQuNSAyNC44LTc0QzcuMyAyODMuNC02LjggMjQzLTYuOCAxOTkuNC02LjggODkuNyA4Mi41IC4zIDE5Mi4zIC4zem0uMSA5My43Yy0zMS42IDAtNTcuMyAyNS44LTU3LjMgNTcuM2wwIDI2LjctMS44IDBjLTEwIDAtMTggOC0xOCAxOGwwIDcyLjNjMCAxMCA4IDE4IDE4IDE4bDExOC4xIDBjMTAgMCAxOC04IDE4LTE4bC4xIDAgMC03Mi4zYzAtMTAtOC4xLTE4LTE4LTE4bC0xLjggMCAwLTI2LjdjMC0zMS42LTI1LjgtNTcuMy01Ny4zLTU3LjN6bS0uMSAyMy41YzE4LjYgMCAzMy44IDE1LjEgMzMuOCAzMy44bDAgMjYuNy02Ny42IDAgMC0yNi43YzAtMTguNiAxNS4xLTMzLjggMzMuOC0zMy44eiJdfSxCOGU9e3ByZWZpeDoiZmFiIixpY29uTmFtZToic3F1YXJlLXdoYXRzYXBwIixpY29uOls0NDgsNTEyLFsid2hhdHNhcHAtc3F1YXJlIl0sImY0MGMiLCJNOTIuMSAyNTQuNmMwIDI0LjkgNyA0OS4yIDIwLjIgNzAuMWwzLjEgNS0xMy4zIDQ4LjYgNDkuOS0xMy4xIDQuOCAyLjljMjAuMiAxMiA0My40IDE4LjQgNjcuMSAxOC40bC4xIDBjNzIuNiAwIDEzMy4zLTU5LjEgMTMzLjMtMTMxLjggMC0zNS4yLTE1LjItNjguMy00MC4xLTkzLjItMjUtMjUtNTgtMzguNy05My4yLTM4LjctNzIuNyAwLTEzMS44IDU5LjEtMTMxLjkgMTMxLjh6TTI3NC44IDMzMGMtMTIuNiAxLjktMjIuNCAuOS00Ny41LTkuOS0zNi44LTE1LjktNjEuOC01MS41LTY2LjktNTguNy0uNC0uNi0uNy0uOS0uOC0xLjEtMi0yLjYtMTYuMi0yMS41LTE2LjItNDEgMC0xOC40IDktMjcuOSAxMy4yLTMyLjMgLjMtLjMgLjUtLjUgLjctLjggMy42LTQgNy45LTUgMTAuNi01IDIuNiAwIDUuMyAwIDcuNiAuMWwuOCAwYzIuMyAwIDUuMiAwIDguMSA2LjggMS4yIDIuOSAzIDcuMyA0LjkgMTEuOCAzLjMgOCA2LjcgMTYuMyA3LjMgMTcuNiAxIDIgMS43IDQuMyAuMyA2LjktMy40IDYuOC02LjkgMTAuNC05LjMgMTMtMy4xIDMuMi00LjUgNC43LTIuMyA4LjYgMTUuMyAyNi4zIDMwLjYgMzUuNCA1My45IDQ3LjEgNCAyIDYuMyAxLjcgOC42LTEgMi4zLTIuNiA5LjktMTEuNiAxMi41LTE1LjUgMi42LTQgNS4zLTMuMyA4LjktMnMyMy4xIDEwLjkgMjcuMSAxMi45Yy44IC40IDEuNSAuNyAyLjEgMSAyLjggMS40IDQuNyAyLjMgNS41IDMuNiAuOSAxLjkgLjkgOS45LTIuNCAxOS4xLTMuMyA5LjMtMTkuMSAxNy43LTI2LjcgMTguOHpNNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjB6TTE0OC4xIDM5My45TDY0IDQxNiA4Ni41IDMzMy44Yy0xMy45LTI0LTIxLjItNTEuMy0yMS4yLTc5LjMgLjEtODcuNCA3MS4yLTE1OC41IDE1OC42LTE1OC41IDQyLjQgMCA4Mi4yIDE2LjUgMTEyLjIgNDYuNSAyOS45IDMwIDQ3LjkgNjkuOCA0Ny45IDExMi4yIDAgODcuNC03Mi43IDE1OC41LTE2MC4xIDE1OC41LTI2LjYgMC01Mi43LTYuNy03NS44LTE5LjN6Il19LHREdD1COGUsYUR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNreXBlIixpY29uOls0NDgsNTEyLFtdLCJmMTdlIiwiTTQyNC43IDI5OS44YzIuOS0xNCA0LjctMjguOSA0LjctNDMuOCAwLTExMy41LTkxLjktMjA1LjMtMjA1LjMtMjA1LjMtMTQuOSAwLTI5LjcgMS43LTQzLjggNC43LTE5LTE0LjctNDIuNi0yMy40LTY4LjMtMjMuNC02MS44IDAtMTEyIDUwLjItMTEyIDExMiAwIDI1LjcgOC43IDQ5LjMgMjMuMyA2OC4yLTIuOSAxNC00LjcgMjguOS00LjcgNDMuOCAwIDExMy41IDkxLjkgMjA1LjMgMjA1LjMgMjA1LjMgMTQuOSAwIDI5LjctMS43IDQzLjgtNC43IDE5IDE0LjYgNDIuNiAyMy4zIDY4LjIgMjMuMyA2MS44IDAgMTEyLTUwLjIgMTEyLTExMiAuMS0yNS42LTguNi00OS4yLTIzLjItNjguMXpNMjMwLjEgMzkxLjNjLTY1LjYgMC0xMjAuNS0yOS4yLTEyMC41LTY1IDAtMTYgOS0zMC42IDI5LjUtMzAuNiAzMS4yIDAgMzQuMSA0NC45IDg4LjEgNDQuOSAyNS43IDAgNDIuMy0xMS40IDQyLjMtMjYuMyAwLTE4LjctMTYtMjEuNi00Mi0yOC02Mi41LTE1LjQtMTE3LjgtMjItMTE3LjgtODcuMiAwLTU5LjIgNTguNi04MS4xIDEwOS4xLTgxLjEgNTUuMSAwIDExMC44IDIxLjkgMTEwLjggNTUuNCAwIDE2LjktMTEuNCAzMS44LTMwLjMgMzEuOC0yOC4zIDAtMjkuMi0zMy41LTc1LTMzLjUtMjUuNyAwLTQyIDctNDIgMjIuNSAwIDE5LjggMjAuOCAyMS44IDY5LjEgMzMgNDEuNCA5LjMgOTAuNyAyNi44IDkwLjcgNzcuNiAwIDU5LjEtNTcuMSA4Ni41LTExMiA4Ni41eiJdfSxzRHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiYW5ndWxhciIsaWNvbjpbNDQ4LDUxMixbXSwiZjQyMCIsIk0xODUuNyAyNjguMWw3Ni4yIDAtMzguMS05MS42LTM4LjEgOTEuNnpNMjIzLjggMzJMMTYgMTA2LjQgNDcuOCAzODIuMSAyMjMuOCA0ODAgMzk5LjggMzgyLjEgNDMxLjYgMTA2LjQgMjIzLjggMzJ6TTM1NCAzNzMuOGwtNDguNiAwLTI2LjItNjUuNC0xMTAuNiAwLTI2LjIgNjUuNC00OC43IDAgMTMwLjEtMjkyLjMgMTMwLjIgMjkyLjN6Il19LGlEdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJjaXJjbGUtenVsaXAiLGljb246WzUxMiw1MTIsW10sImU4NTEiLCJNMjU2IDUxMmEyNTYgMjU2IDAgMSAxIDAtNTEyIDI1NiAyNTYgMCAxIDEgMCA1MTJ6TTI0My41IDI0MGMxLjItMS45LS45LTQuMi0yLjYtMi44bC04OSA3OS41Yy05LjIgNy4yLTE1LjIgMTkuMS0xNS4yIDMyLjUgMCAyMS45IDE2IDM5LjggMzUuNyAzOS44bDE2Ny4zIDBjMTkuNiAwIDM1LjctMTcuOSAzNS43LTM5LjggMC0yMS45LTE2LjEtMzkuNy0zNS43LTM5LjhsLTEyNi42IDBjLTEuOSAwLTMtMi4zLTIuMS00LjFMMjQzLjUgMjQwek0xNzIuNCAxMjMuMWMtMTkuNiAwLTM1LjcgMTcuOS0zNS43IDM5LjhzMTYgMzkuOCAzNS43IDM5LjhsMTI2LjYgMGMxLjkgMCAzLjEgMi4yIDIuMiA0LjFMMjY4LjUgMjcyYy0xLjIgMS45IC45IDQuMiAyLjYgMi44bDg5LTc5LjVjOS4yLTcuMiAxNS4yLTE5LjEgMTUuMi0zMi41IDAtMjEuOS0xNi0zOS43LTM1LjctMzkuOGwtMTY3LjMgMHoiXX0sckR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6Im9wZW5zdXNlIixpY29uOls2NDAsNTEyLFtdLCJlNjJiIiwiTTQ3MS4xIDEwMi43cy0uMyAxOC4zLS4zIDIwLjNjLTkuMS0zLTc0LjQtMjQuMS0xMzUuNy0yNi4zLTUxLjktMS44LTEyMi44LTQuMy0yMjMgNTcuMy0xOS40IDEyLjQtNzMuOSA0Ni4xLTk5LjYgMTA5LjctNS41IDEzLjMtMTIuNiA0My4zLTUuNSA3MS40IDMuMyAxMi44IDguOSAyNC45IDE2LjUgMzUuNyAxNy40IDI1IDQ2LjYgNDEuNiA3OC4xIDQ0LjQgNDQuNCAzLjkgNzguMS0xNiA5MC01My4zIDguMi0yNS44IDAtNjMuNi0zMS41LTgyLjktMjUuNi0xNS43LTUzLjMtMTIuMS02OS4yLTEuNi0xMy45IDkuMi0yMS44IDIzLjUtMjEuNiAzOS4yIC4zIDI3LjggMjQuMyA0Mi42IDQxLjUgNDIuNiA1LjQgMCAxMC43LS45IDE1LjgtMi43IDYuNS0xLjggMTMuMy02LjUgMTMuMy0xNC45IDAtMTIuMS0xMS42LTE0LjgtMTYuOC0xMy45LTIuOSAuNS00LjUgMi0xMS44IDIuNC0yLS4yLTEyLTMuMS0xMi0xNGwwLS4xYy4yLTEyLjMgMTMuMi0xOCAyNS41LTE2LjkgMzIuMyAyLjggNDcuNyA0MC43IDI4LjUgNjUuNy0xOC4zIDIzLjctNzYuNiAyMy4yLTk5LjctMjAuNC0yNi00OS4yIDEyLjctMTExLjIgODctOTguNCAzMy4yIDUuNyA4My42IDM1LjUgMTAyLjQgMTA0LjNsNDUuOSAwYy01LjctMTcuNi04LjktNjguMyA0Mi43LTY4LjMgNTYuNyAwIDYzLjkgMzkuOSA3OS44IDY4LjNsNDguNiAwYy0xMi44LTE4LjMtMjEuNy0zOC43LTE4LjktNTUuOCA1LjYtMzMuOCAzOS43LTE4LjQgODIuNC0xNy40IDY2LjUgLjQgMTAyLjEtMjcgMTAzLjEtMjggMy43LTMuMSA2LjUtMTUuOCA3LTE3LjcgMS4zLTUuMS0zLjItMi40LTMuMi0yLjQtOC43IDUuMi0zMC41IDE1LjItNTAuOSAxNS42LTI1LjMgLjUtNzYuMi0yNS40LTgxLjYtMjguMi0uMy0uNCAuMSAxLjItMTEtMjUuNSA4OC40IDU4LjMgMTE4LjMgNDAuNSAxNDUuMiAyMS43IC44LS42IDQuMy0yLjkgMy42LTUuNy0xMy44LTQ4LjEtMjIuNC02Mi43LTM0LjUtNjkuNi0zNy0yMS42LTEyNS0zNC43LTEyOS4yLTM1LjMgLjEtLjEtLjktLjMtLjkgLjd6bTYwLjQgNzIuOGEzNy42IDM3LjYgMCAxIDEgNzUuMiAyLjYgMzcuNiAzNy42IDAgMSAxIC03NS4yLTIuNnptMzguNi0yNS4zYy0zLjYtLjMtNy4xIC4xLTEwLjUgMS4ycy02LjUgMi45LTkuMiA1LjMtNC44IDUuMy02LjMgOC41LTIuNCA2LjctMi41IDEwLjMgLjUgNy4xIDEuOCAxMC40IDMuMyA2LjMgNS44IDguOSA1LjUgNC41IDguOCA1LjkgNi45IDIgMTAuNCAxLjljMy42IC4zIDcuMS0uMSAxMC41LTEuMnM2LjUtMi45IDkuMi01LjMgNC44LTUuMyA2LjMtOC41IDIuNC02LjcgMi41LTEwLjMtLjUtNy4xLTEuOC0xMC40LTMuMy02LjMtNS44LTguOS01LjUtNC41LTguOC01LjktNi45LTItMTAuNC0xLjl6bTQuMyAyOC44Yy0xNS40IDAtMTUuNC0xNS42IDAtMTUuNnMxNS40IDE1LjYgMCAxNS42eiJdfSxvRHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZHJvcGJveCIsaWNvbjpbNTc2LDUxMixbXSwiZjE2YiIsIk0yODguNCAxMTYuM2wtMTMyIDg0LjMgMTMyIDg0LjMtMTMyIDg0LjMtMTMyLjQtODUuMSAxMzIuMy04NC4zLTEzMi4zLTgzLjUgMTMyLjMtODQuMyAxMzIuMSA4NC4zek0xNTUuNiAzOTUuN2wxMzItODQuMyAxMzIgODQuMy0xMzIgODQuMy0xMzItODQuM3pNMjg4LjQgMjg0LjFsMTMyLTg0LjMtMTMyLTgzLjYgMTMxLjMtODQuMiAxMzIuMyA4NC4zLTEzMi4zIDg0LjMgMTMyLjMgODQuMi0xMzIuMyA4NC4zLTEzMS4zLTg1eiJdfSxuRHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZGVlemVyIixpY29uOls1MTIsNTEyLFtdLCJlMDc3IiwiTTE0LjggMTAxLjFDNi42IDEwMS4xIDAgMTI3LjYgMCAxNjAuM3M2LjYgNTkuMiAxNC44IDU5LjIgMTQuOC0yNi41IDE0LjgtNTkuMi02LjYtNTkuMi0xNC44LTU5LjJ6TTQ0OC43IDQwLjljLTcuNyAwLTE0LjUgMTcuMS0xOS40IDQ0LjEtNy43LTQ2LjctMjAuMi03Ny0zNC4yLTc3LTE2LjggMC0zMS4xIDQyLjktMzggMTA1LjQtNi42LTQ1LjQtMTYuOC03NC4yLTI4LjMtNzQuMi0xNi4xIDAtMjkuNiA1Ni45LTM0LjcgMTM2LjItOS40LTQwLjgtMjMuMi02Ni4zLTM4LjMtNjYuM3MtMjguOCAyNS41LTM4LjMgNjYuM2MtNS4xLTc5LjMtMTguNi0xMzYuMi0zNC43LTEzNi4yLTExLjUgMC0yMS43IDI4LjgtMjguMyA3NC4yLTYuNi02Mi41LTIxLjItMTA1LjQtMzcuOC0xMDUuNC0xNCAwLTI2LjUgMzAuNC0zNC4yIDc3LTQuOC0yNy0xMS43LTQ0LjEtMTkuNC00NC4xLTE0LjMgMC0yNiA1OS4yLTI2IDEzMi4xUzQ5IDMwNS4yIDYzLjMgMzA1LjJjNS45IDAgMTEuNS05LjkgMTUuOC0yNi44IDYuOSA2MS43IDIxLjIgMTA0LjEgMzggMTA0LjEgMTMgMCAyNC41LTI1LjUgMzIuMS02NS42IDUuNCA3Ni4zIDE4LjYgMTMwLjQgMzQuMiAxMzAuNCA5LjcgMCAxOC42LTIxLjQgMjUuMy01Ni40IDcuOSA3Mi4yIDI2LjMgMTIyLjcgNDcuNyAxMjIuN3MzOS41LTUwLjUgNDcuNy0xMjIuN2M2LjYgMzUgMTUuNiA1Ni40IDI1LjMgNTYuNCAxNS42IDAgMjguOC01NC4xIDM0LjItMTMwLjQgNy43IDQwLjEgMTkuNCA2NS42IDMyLjEgNjUuNiAxNi42IDAgMzAuOS00Mi4zIDM4LTEwNC4xIDQuMyAxNi44IDkuNyAyNi44IDE1LjggMjYuOCAxNC4zIDAgMjYtNTkuMiAyNi0xMzIuMVM0NjMgNDAuOSA0NDguNyA0MC45em00OC41IDYwLjJjLTguMiAwLTE0LjggMjYuNS0xNC44IDU5LjJzNi42IDU5LjIgMTQuOCA1OS4yIDE0LjgtMjYuNSAxNC44LTU5LjItNi42LTU5LjItMTQuOC01OS4yeiJdfSxsRHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiY3JlYXRpdmUtY29tbW9ucy1zYW1wbGluZyIsaWNvbjpbNTEyLDUxMixbXSwiZjRmMCIsIk0yNTUuNiA4QzM5Ny40IDggNTA0IDExOC4xIDUwNCAyNTYgNTA0IDQwMy4xIDM4NS41IDUwNCAyNTUuNiA1MDQgMTIxLjYgNTA0IDggMzk0LjUgOCAyNTYgOCAxMjMuMSAxMTIuNyA4IDI1NS42IDh6bS44IDQ0LjdjLTExOC4yIDAtMjAzLjcgOTcuOS0yMDMuNyAyMDMuMyAwIDEwOS44IDkxLjIgMjAyLjggMjAzLjcgMjAyLjggMTAzLjIgMCAyMDIuOC04MS4xIDIwMi44LTIwMi44IC4xLTExMy44LTkwLjItMjAzLjMtMjAyLjgtMjAzLjN6bTMuNiA1My4yYzIuOC0uMyAxMS41IDEgMTEuNSAxMS41bDYuNiAxMDcuMiA0LjktNTkuM2MwLTYgNC43LTEwLjYgMTAuNi0xMC42czEwLjYgNC43IDEwLjYgMTAuNmMwIDIuNS0uNS01LjcgNS43IDgxLjVsNS44LTY0LjJjLjMtMi45IDIuOS05LjMgMTAuMi05LjMgMy44IDAgOS45IDIuMyAxMC42IDguOWwxMS41IDk2LjUgNS4zLTEyLjhjMS44LTQuNCA1LjItNi42IDEwLjItNi42bDU4IDAgMCAyMS4zLTUwLjkgMC0xOC4yIDQ0LjNjLTMuOSA5LjktMTkuNSA5LjEtMjAuOC0zLjFsLTQtMzEuOS03LjUgOTIuNmMtLjMgMy0zIDkuMy0xMC4yIDkuMy0zIDAtOS44LTIuMS0xMC42LTkuMyAwLTEuOSAuNiA1LjgtNi4yLTc3LjlsLTUuMyA3Mi4yYy0xLjEgNC44LTQuOCA5LjMtMTAuNiA5LjMtMi45IDAtOS44LTItMTAuNi05LjMgMC0xLjkgLjUgNi43LTUuOC04Ny43TDI1NSAzODMuOWMwIDYuMy0zLjYgMTIuNC0xMC42IDEyLjQtNS4yIDAtMTAuNi00LjEtMTAuNi0xMkwyMjggMjk2LjZjLTUuOCA5Mi41LTUuMyA4NC01LjMgODUuOS0xLjEgNC44LTQuOCA5LjMtMTAuNiA5LjMtMyAwLTkuOC0yLjEtMTAuNi05LjMgMC0uNy0uNC0xLjEtLjQtMi42bC02LjItODguNi00LjkgNTYuN2MtLjcgNi41LTYuNyA5LjMtMTAuNiA5LjMtNS44IDAtOS42LTQuMS0xMC42LTguOUwxNTcuNyAyNzJjLTIgNC0zLjUgOC40LTExLjEgOC40bC01MS40IDAgMC0yMS4zIDQ0LjggMCAxMy43LTI3LjljNC40LTkuOSAxOC4yLTcuMiAxOS45IDIuN2wzLjEgMjAuNCA4LjQtOTcuOWMwLTYgNC44LTEwLjYgMTAuNi0xMC42IC41IDAgMTAuNi0uMiAxMC42IDEyLjRsNC45IDY5LjEgNi42LTkyLjZjMC0xMC4xIDkuNS0xMC42IDEwLjItMTAuNiAuNiAwIDEwLjYgLjcgMTAuNiAxMC42bDUuMyA4MC42IDYuMi05Ny45Yy4xLTEuMS0uNi0xMC4zIDkuOS0xMS41eiJdfSxjRHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiamVkaS1vcmRlciIsaWNvbjpbNDQ4LDUxMixbXSwiZjUwZSIsIk0zOTguOSAzNzMuNmM5NS45LTEyMi4xIDE3LjItMjMzLjEgMTcuMi0yMzMuMSA0NS40IDg1LjgtNDEuNCAxNzAuNS00MS40IDE3MC41IDEwNS0xNzEuNS02MC41LTI3MS41LTYwLjUtMjcxLjUgOTYuOSA3Mi43LTEwLjEgMTkwLjctMTAuMSAxOTAuNyA4NS44IDE1OC40LTY4LjYgMjMwLjEtNjguNiAyMzAuMXMtLjQtMTYuOS0yLjItODUuN2M0LjMgNC41IDM0LjUgMzYuMiAzNC41IDM2LjJsLTI0LjItNDcuNCA2Mi42LTkuMS02Mi42LTkuMSAyMC4yLTU1LjUtMzEuNCA0NS45Yy0yLjItODcuNy03LjgtMzA1LjEtNy45LTMwNi45IDAgMS01LjYgMjE5LTcuOSAzMDYuOWwtMzEuNC00NS45IDIwLjIgNTUuNS02Mi42IDkuMSA2Mi42IDkuMS0yNC4yIDQ3LjQgMzQuNS0zNi4yYy0xLjggNjguOC0yLjIgODUuNy0yLjIgODUuN1M1OS4xIDM4OC42IDE0NC45IDIzMC4yYzAgMC0xMDctMTE4LjEtMTAuMS0xOTAuNyAwIDAtMTY1LjUgOTkuOS02MC41IDI3MS41IDAgMC04Ni44LTg0LjgtNDEuNC0xNzAuNSAwIDAtNzguNyAxMTEgMTcuMiAyMzMuMSAwIDAtMjYuMi0xNi4xLTQ5LjQtNzcuNyAwIDAgMTYuOSAxODMuMyAyMjIgMTg1LjdsNC4xIDBjMjA1LTIuNCAyMjItMTg1LjcgMjIyLTE4NS43LTIzLjYgNjEuNS00OS45IDc3LjctNDkuOSA3Ny43eiJdfSxkRHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToici1wcm9qZWN0IixpY29uOls1NzYsNTEyLFtdLCJmNGY3IiwiTTU3OC41IDIyNi42QzU3OC41IDExOS4xIDQ0OC40IDMyIDI4OCAzMlMtMi41IDExOS4xLTIuNSAyMjYuNmMwIDk1LjggMTAzLjMgMTc1LjQgMjM5LjQgMTkxLjVsMCA2MS45IDk5LjEgMCAwLTYxLjVjMjQuMy0yLjcgNDcuNi03LjQgNjkuNC0xMy45bDQwLjEgNzUuNCAxMTIgMC02Ny40LTExMy43YzU0LjUtMzUuNCA4OC40LTg0LjkgODguNC0xMzkuN3pNMTExLjcgMjQxLjFjMC03My41IDk4LjktMTMzIDIyMC44LTEzM3MyMTEuOSA0MC43IDIxMS45IDEzM2MwIDUwLjEtMjYuNSA4NS03MC4zIDEwNi40LTIuNC0xLjYtNC43LTIuOS02LjQtMy43LTEwLjItNS4yLTI3LjgtMTAuNS0yNy44LTEwLjVzODYuNi02LjQgODYuNi05Mi43LTkwLjYtODcuOS05MC42LTg3LjlsLTE5OSAwIDAgMjA4LjNjLTc0LjEtMjEuNS0xMjUuMi02Ny4xLTEyNS4yLTExOS45em0yMjUuMSAzOC4zbDAtNTUuNmM1Ny44IDAgODcuOC02LjggODcuOCAyNy4zIDAgMzYuNS0zOC4yIDI4LjMtODcuOCAyOC4zem0tLjkgNzIuNWwyNi42IDBjMTAuOCAwIDE4LjkgMTEuNyAyNCAxOS4yLTE2LjEgMS45LTMzIDIuOC01MC42IDIuOWwwLTIyLjF6Il19LHVEdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJpbnN0YWxvZCIsaWNvbjpbNTEyLDUxMixbXSwiZTA4MSIsIk0xNTMuNiA0ODBsMjMzLjcgMCAxMTUuNC0yMDQuMi0yOTguMyA1Ny40LTUwLjggMTQ2Ljh6TTUwNSAyNDAuMUwzODcuNCAzMiAxNTUuOSAzMiAzNjAuNSAyNjcuOSA1MDUgMjQwLjF6TTEyNC42IDQ4LjhMNy41IDI1NiAxMjMuNSA0NjEuMiAyMjUuOSAxNjUuNiAxMjQuNiA0OC44eiJdfSxwRHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiY2FuYWRpYW4tbWFwbGUtbGVhZiIsaWNvbjpbNTEyLDUxMixbXSwiZjc4NSIsIk0zODMuOCAzNTEuN2MyLjUtMi41IDEwNS4yLTkyLjQgMTA1LjItOTIuNGwtMTcuNS03LjVjLTEwLTQuOS03LjQtMTEuNS01LTE3LjQgMi40LTcuNiAyMC4xLTY3LjMgMjAuMS02Ny4zcy00Ny43IDEwLTU3LjcgMTIuNWMtNy41IDIuNC0xMC0yLjUtMTIuNS03LjVzLTE1LTMyLjQtMTUtMzIuNC01Mi42IDU5LjktNTUuMSA2Mi4zYy0xMCA3LjUtMjAuMSAwLTE3LjYtMTAgMC0xMCAyNy42LTEyOS42IDI3LjYtMTI5LjZzLTMwLjEgMTcuNC00MC4xIDIyLjRjLTcuNSA1LTEyLjYgNS0xNy42LTUtNS4xLTcuNS00Mi43LTc5LjgtNDIuNy03OS44cy0zNy41IDcyLjMtNDIuNSA3OS44Yy01IDEwLTEwIDEwLTE3LjYgNS0xMC01LTQwLjEtMjIuNC00MC4xLTIyLjRTMTgzLjMgMTgyIDE4My4zIDE5MmMyLjUgMTAtNy41IDE3LjUtMTcuNiAxMC0yLjUtMi41LTU1LjEtNjIuMy01NS4xLTYyLjNzLTEyLjUgMjcuMy0xNSAzMi4zLTUgOS45LTEyLjUgNy41QzczIDE3NyAyNS40IDE2NyAyNS40IDE2N1M0MyAyMjYuNyA0NS41IDIzNC4zYzIuNCA2IDUgMTIuNS01IDE3LjRMMjMgMjU5LjNzMTAyLjYgODkuOSAxMDUuMiA5Mi40YzUuMSA1IDEwIDcuNSA1LjEgMjIuNS01LjEgMTUtMTAuMSAzNS4xLTEwLjEgMzUuMXM5NS4yLTIwLjEgMTA1LjMtMjIuNmM4LjctLjkgMTguMyAyLjUgMTguMyAxMi41UzI0MSA1MTIgMjQxIDUxMmwzMCAwcy01LjgtMTAyLjctNS44LTExMi44IDkuNS0xMy40IDE4LjQtMTIuNWMxMCAyLjUgMTA1LjIgMjIuNiAxMDUuMiAyMi42cy01LTIwLjEtMTAtMzUuMSAwLTE3LjUgNS0yMi41eiJdfSxoRHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZXRoZXJldW0iLGljb246WzMyMCw1MTIsW10sImY0MmUiLCJNMzExLjkgMjYwLjhMMTYwIDM1My42IDggMjYwLjggMTYwIDAgMzExLjkgMjYwLjh6TTE2MCAzODMuNEw4IDI5MC42IDE2MCA1MTIgMzEyIDI5MC42IDE2MCAzODMuNHoiXX0sZkR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImhvdXp6IixpY29uOls0NDgsNTEyLFtdLCJmMjdjIiwiTTI3NiAzMzAuN2wtMTA0LjYgMCAwIDE0OS4zLTE1NC4zIDAgMC00NDggMTA5LjUgMCAwIDEwNC41IDMwNS4xIDg1LjYgMCAyNTcuOS0xNTUuNyAwIDAtMTQ5LjN6Il19LG1EdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ2aWJlciIsaWNvbjpbNTEyLDUxMixbXSwiZjQwOSIsIk00NDQuMyA0OS45Yy0xMi43LTExLjctNjQuMS00OS0xNzguNy00OS41IDAgMC0xMzUuMS04LjEtMjAwLjkgNTIuMy0zNi42IDM2LjYtNDkuNSA5MC4zLTUwLjkgMTU2LjhzLTMuMSAxOTEuMSAxMTcgMjI0LjlsLjEgMC0uMSA1MS42cy0uOCAyMC45IDEzIDI1LjFjMTYuNiA1LjIgMjYuNC0xMC43IDQyLjMtMjcuOCA4LjctOS40IDIwLjctMjMuMiAyOS44LTMzLjcgODIuMiA2LjkgMTQ1LjMtOC45IDE1Mi41LTExLjIgMTYuNi01LjQgMTEwLjUtMTcuNCAxMjUuNy0xNDIgMTUuOC0xMjguNi03LjYtMjA5LjgtNDkuOC0yNDYuNXpNNDU4LjIgMjg3Yy0xMi45IDEwNC04OSAxMTAuNi0xMDMgMTE1LjEtNiAxLjktNjEuNSAxNS43LTEzMS4yIDExLjIgMCAwLTUyIDYyLjctNjguMiA3OS01LjMgNS4zLTExLjEgNC44LTExLTUuNyAwLTYuOSAuNC04NS43IC40LTg1LjdsMCAwQzQzLjQgMzcyLjcgNDkuNCAyNjYuNiA1MC41IDIxMS4xczExLjYtMTAxIDQyLjYtMTMxLjZjNTUuNy01MC41IDE3MC40LTQzIDE3MC40LTQzIDk2LjkgLjQgMTQzLjMgMjkuNiAxNTQuMSAzOS40IDM1LjcgMzAuNiA1My45IDEwMy44IDQwLjYgMjExLjF6bS0xMzktODAuOGMuNCA4LjYtMTIuNSA5LjItMTIuOSAuNi0xLjEtMjItMTEuNC0zMi43LTMyLjYtMzMuOS04LjYtLjUtNy44LTEzLjQgLjctMTIuOSAyNy45IDEuNSA0My40IDE3LjUgNDQuOCA0Ni4yem0yMC4zIDExLjNjMS00Mi40LTI1LjUtNzUuNi03NS44LTc5LjMtOC41LS42LTcuNi0xMy41IC45LTEyLjkgNTggNC4yIDg4LjkgNDQuMSA4Ny44IDkyLjUtLjEgOC42LTEzLjEgOC4yLTEyLjktLjN6bTQ3IDEzLjRjLjEgOC42LTEyLjkgOC43LTEyLjkgLjEtLjYtODEuNS01NC45LTEyNS45LTEyMC44LTEyNi40LTguNS0uMS04LjUtMTIuOSAwLTEyLjkgNzMuNyAuNSAxMzMgNTEuNCAxMzMuNyAxMzkuMnpNMzc1LjIgMzI5bDAgLjJjLTEwLjggMTktMzEgNDAtNTEuOCAzMy4zbC0uMi0uM2MtMjEuMS01LjktNzAuOC0zMS41LTEwMi4yLTU2LjUtMTYuMi0xMi44LTMxLTI3LjktNDIuNC00Mi40LTEwLjMtMTIuOS0yMC43LTI4LjItMzAuOC00Ni42LTIxLjMtMzguNS0yNi01NS43LTI2LTU1LjctNi43LTIwLjggMTQuMi00MSAzMy4zLTUxLjhsLjIgMGM5LjItNC44IDE4LTMuMiAyMy45IDMuOSAwIDAgMTIuNCAxNC44IDE3LjcgMjIuMSA1IDYuOCAxMS43IDE3LjcgMTUuMiAyMy44IDYuMSAxMC45IDIuMyAyMi0zLjcgMjYuNmwtMTIgOS42Yy02LjEgNC45LTUuMyAxNC01LjMgMTRzMTcuOCA2Ny4zIDg0LjMgODQuM2MwIDAgOS4xIC44IDE0LTUuM2w5LjYtMTJjNC42LTYgMTUuNy05LjggMjYuNi0zLjcgMTQuNyA4LjMgMzMuNCAyMS4yIDQ1LjggMzIuOSA3IDUuNyA4LjYgMTQuNCAzLjggMjMuNnoiXX0sSDhlPXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImtpY2tzdGFydGVyIixpY29uOls0NDgsNTEyLFsic3F1YXJlLWtpY2tzdGFydGVyIl0sImYzYmIiLCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMnpNMzIwLjggMjMzbC0yMy4zIDIzLjEgMjMuMyAyMi45YzI0LjEgMjMuOSAyNC4xIDYzIDAgODYuOXMtNjMuNCAyMy45LTg3LjYgMGwtOC41LTguNGMtMTEuMyAxNi0yOS43IDI2LjUtNTAuOSAyNi41LTM0LjEgMC02MS45LTI3LjUtNjEuOS02MS40bDAtMTMzLjJjMC0zMy44IDI3LjctNjEuNCA2MS45LTYxLjQgMjEuMSAwIDM5LjYgMTAuNSA1MC45IDI2LjVsOC41LTguNGMyNC4xLTIzLjkgNjMuNC0yMy45IDg3LjYgMHMyNC4xIDYzIDAgODYuOXoiXX0sZ0R0PUg4ZSxiRHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToic3BvdGlmeSIsaWNvbjpbNTEyLDUxMixbXSwiZjFiYyIsIk0yNTYgOGEyNDggMjQ4IDAgMSAwIDAgNDk2IDI0OCAyNDggMCAxIDAgMC00OTZ6TTM1Ni43IDM3Mi45Yy00LjIgMC02LjgtMS4zLTEwLjctMy42LTYyLjQtMzcuNi0xMzUtMzkuMi0yMDYuNy0yNC41LTMuOSAxLTkgMi42LTExLjkgMi42LTkuNyAwLTE1LjgtNy43LTE1LjgtMTUuOCAwLTEwLjMgNi4xLTE1LjIgMTMuNi0xNi44IDgxLjktMTguMSAxNjUuNi0xNi41IDIzNyAyNi4yIDYuMSAzLjkgOS43IDcuNCA5LjcgMTYuNXMtNy4xIDE1LjQtMTUuMiAxNS40em0yNi45LTY1LjZjLTUuMiAwLTguNy0yLjMtMTIuMy00LjItNjIuNS0zNy0xNTUuNy01MS45LTIzOC42LTI5LjQtNC44IDEuMy03LjQgMi42LTExLjkgMi42LTEwLjcgMC0xOS40LTguNy0xOS40LTE5LjRzNS4yLTE3LjggMTUuNS0yMC43YzI3LjgtNy44IDU2LjItMTMuNiA5Ny44LTEzLjYgNjQuOSAwIDEyNy42IDE2LjEgMTc3IDQ1LjUgOC4xIDQuOCAxMS4zIDExIDExLjMgMTkuNy0uMSAxMC44LTguNSAxOS41LTE5LjQgMTkuNXptMzEtNzYuMmMtNS4yIDAtOC40LTEuMy0xMi45LTMuOS03MS4yLTQyLjUtMTk4LjUtNTIuNy0yODAuOS0yOS43LTMuNiAxLTguMSAyLjYtMTIuOSAyLjYtMTMuMiAwLTIzLjMtMTAuMy0yMy4zLTIzLjYgMC0xMy42IDguNC0yMS4zIDE3LjQtMjMuOSAzNS4yLTEwLjMgNzQuNi0xNS4yIDExNy41LTE1LjIgNzMgMCAxNDkuNSAxNS4yIDIwNS40IDQ3LjggNy44IDQuNSAxMi45IDEwLjcgMTIuOSAyMi42IDAgMTMuNi0xMSAyMy4zLTIzLjIgMjMuM3oiXX0sdkR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImxlYW5wdWIiLGljb246WzU3Niw1MTIsW10sImYyMTIiLCJNMzg2LjYgMTExLjVsMTUuMSAyNDktMTEtLjNjLTM2LjItLjgtNzEuNiA4LjgtMTAyLjcgMjgtMzEtMTkuMi02Ni40LTI4LTEwMi43LTI4LTQ1LjYgMC04Mi4xIDEwLjctMTIzLjUgMjcuN0w5My4yIDEyOS42YzI4LjUtMTEuOCA2MS41LTE4LjEgOTIuMi0xOC4xIDQxLjIgMCA3My44IDEzLjIgMTAyLjcgNDIuNSAyNy43LTI4LjMgNTktNDEuNyA5OC41LTQyLjV6TTU2OS4yIDQ0OGMtMjUuNSAwLTQ3LjUtNS4yLTcwLjUtMTUuNi0zNC4zLTE1LjYtNzAtMjUtMTA3LjktMjUtMzkgMC03NC45IDEyLjktMTAyLjcgNDAuNi0yNy43LTI3LjctNjMuNy00MC42LTEwMi43LTQwLjYtMzcuOSAwLTczLjYgOS4zLTEwNy45IDI1LTIyLjIgOS45LTQ0LjcgMTUuNi02OS4yIDE1LjZMNyA0NDggNDkuNiA5OC45YzM5LjMtMjIuMiA4Ny0zNC45IDEzMi4zLTM0LjkgMzcuMSAwIDc1LjIgNy43IDEwNi4yIDI5LjEgMzEtMjEuNCA2OS4yLTI5LjEgMTA2LjItMjkuMSA0NS4zIDAgOTMgMTIuNiAxMzIuMyAzNC45TDU2OS4yIDQ0OHptLTQzLjQtNDQuN0w0OTEuOCAxMjNjLTMwLjctMTQtNjcuMi0yMS40LTEwMS0yMS40LTM4LjQgMC03NC40IDEyLjEtMTAyLjcgMzguNy0yOC4zLTI2LjYtNjQuMi0zOC43LTEwMi43LTM4LjctMzMuOCAwLTcwLjMgNy40LTEwMSAyMS40bC0zNCAyODAuMmM0Ny4yLTE5LjUgODIuOS0zMy41IDEzNS0zMy41IDM3LjYgMCA3MC44IDkuNiAxMDIuNyAyOS42IDMxLjgtMjAgNjUuMS0yOS42IDEwMi43LTI5LjYgNTIuMiAwIDg3LjggMTQgMTM1IDMzLjV6Il19LHhEdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJqYXZhIixpY29uOlszODQsNTEyLFtdLCJmNGU0IiwiTTI3Ny44IDMxMi45YzkuOC02LjcgMjMuNC0xMi41IDIzLjQtMTIuNXMtMzguNyA3LTc3LjIgMTAuMmMtNDcuMSAzLjktOTcuNyA0LjctMTIzLjEgMS4zLTYwLjEtOCAzMy0zMC4xIDMzLTMwLjFzLTM2LjEtMi40LTgwLjYgMTljLTUyLjUgMjUuNCAxMzAgMzcgMjI0LjUgMTIuMXptLTg1LjQtMzIuMWMtMTktNDIuNy04My4xLTgwLjIgMC0xNDUuOCAxMDMuNy04MS44IDUwLjUtMTM1IDUwLjUtMTM1IDIxLjUgODQuNS03NS42IDExMC4xLTExMC43IDE2Mi42LTIzLjkgMzUuOSAxMS43IDc0LjQgNjAuMiAxMTguMnpNMzA3IDEwNC42Yy4xIDAtMTc1LjIgNDMuOC05MS41IDE0MC4yIDI0LjcgMjguNC02LjUgNTQtNi41IDU0czYyLjctMzIuNCAzMy45LTcyLjlDMjE2IDE4OC4xIDE5NS40IDE2OS4zIDMwNyAxMDQuNnptLTYuMSAyNzAuNWMtLjUgMS0xLjIgMS44LTIgMi42IDEyOC4zLTMzLjcgODEuMS0xMTguOSAxOS44LTk3LjMtMy4zIDEuMi02LjIgMy40LTguMiA2LjMgMy42LTEuMyA3LjMtMi4zIDExLTMgMzEtNi41IDc1LjUgNDEuNS0yMC42IDkxLjR6TTM0OCA0MzcuNHMxNC41IDExLjktMTUuOSAyMS4yYy01Ny45IDE3LjUtMjQwLjggMjIuOC0yOTEuNiAuNy0xOC4zLTcuOSAxNi0xOSAyNi44LTIxLjMgMTEuMi0yLjQgMTcuNy0yIDE3LjctMi0yMC4zLTE0LjMtMTMxLjMgMjguMS01Ni40IDQwLjIgMjA0LjIgMzMuMiAzNzIuNC0xNC45IDMxOS40LTM4Ljh6TTEyNC41IDM5NmMtNzguNyAyMiA0Ny45IDY3LjQgMTQ4LjEgMjQuNS05LjgtMy44LTE5LjItOC40LTI4LjItMTMuOC00NC43IDguNS02NS40IDkuMS0xMDYgNC41LTMzLjUtMy44LTEzLjktMTUuMi0xMy45LTE1LjJ6bTE3OS44IDk3LjJjLTc4LjcgMTQuOC0xNzUuOCAxMy4xLTIzMy4zIDMuNiAwLS4xIDExLjggOS43IDcyLjQgMTMuNiA5Mi4yIDUuOSAyMzMuOC0zLjMgMjM3LjEtNDYuOSAwIDAtNi40IDE2LjUtNzYuMiAyOS43ek0yNjAuNyAzNTNjLTU5LjIgMTEuNC05My41IDExLjEtMTM2LjggNi42LTMzLjUtMy41LTExLjYtMTkuNy0xMS42LTE5LjctODYuOCAyOC44IDQ4LjIgNjEuNCAxNjkuNSAyNS45LTcuOC0yLjgtMTUtNy4xLTIxLjEtMTIuOHoiXX0seUR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6Im5mYy1zeW1ib2wiLGljb246WzUxMiw1MTIsW10sImU1MzEiLCJNMzYwLjkgMzIuNGM3LjctMS4zIDE1LjcgLjUgMjEuMiA1IDg0LjEgNTguNyAxMjkuOSAxMzYuMyAxMjkuOSAyMTcuNyAwIDgzLjEtNDUuOCAxNjAuOC0xMjkuOSAyMTkuNS00LjggNC0xMS43IDUuOS0xOC42IDUuMy03LS42LTEzLjUtMy42LTE4LjQtOC41TDE2MS43IDI4OC43Yy01LjYtNS41LTguNy0xMy05LjYtMjAuOSAwLTcuOCA0LTE1LjMgOS41LTIwLjkgNS42LTUuNSAxMy4xLTguNyAyMC45LTguNyA3LjkgMCAxNS40IDMuMSAyMC45IDguNkwzNjguNSA0MTEuMmM1NC42LTQ0LjcgODQuMy05OS4yIDg0LjMtMTU2LjEgMC02MS42LTM2LjktMTIyLjItMTAzLjktMTY5LjMtNi40LTQuNS0xMC44LTExLjQtMTIuMS0xOS4xLTEuNC03LjcgLjQtMTUuNyA1LTIyLjEgNC41LTYuNCAxMS40LTEwLjggMTkuMS0xMi4xem0tMjA2IDQ0Ny4yYy03LjcgMS4zLTE1LjYtLjUtMjIuMS01LTgzLjEtNTguNy0xMjktMTM2LjQtMTI5LTIxOS41IDAtODEuNCA0NS44LTE1OSAxMjktMjE3LjcgNS43LTQgMTIuNi01LjkgMTkuNi01LjMgNi45IC42IDEzLjQgMy42IDE4LjMgOC41TDM1NC4xIDIyMy4zYzUuNiA1LjUgOC43IDEzIDguNyAyMC45IC4xIDYuOS0zIDE1LjMtOC42IDIwLjktNS41IDUuNS0xMyA4LjctMjAuOSA4LjctNy44IDAtMTYuMi0zLjEtMjAuOS04LjZMMTQ3LjMgMTAwLjdjLTU0LjYgNDUuMi04NC4zIDk5LjItODQuMyAxNTQuNCAwIDYzLjQgMzYuOSAxMjQgMTAzLjEgMTcxLjEgNy4zIDQuNiAxMS42IDExLjQgMTMgMTkuMiAxLjMgNy43LS41IDE1LjctNSAyMi4xcy0xMS40IDEwLjctMTkuMiAxMi4xeiJdfSx3RHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToid29kdSIsaWNvbjpbNjQwLDUxMixbXSwiZTA4OCIsIk0xNzguNCAzMzkuN2wtMzcuMyAwLTI4LjktMTE2LjItLjUgMC0yOC41IDExNi4yLTM4IDAtNDUuMi0xNzAuOCAzNy41IDAgMjcgMTE2LjIgLjUgMCAyOS43LTExNi4yIDM1LjIgMCAyOS4yIDExNy43IC41IDAgMjgtMTE3LjcgMzYuOCAwLTQ1LjkgMTcwLjh6bTkzLTEyN2MzOSAwIDY0LjEgMjUuOCA2NC4xIDY1LjMgMCAzOS4yLTI1LjEgNjUtNjQuMSA2NS0zOC43IDAtNjMuOS0yNS44LTYzLjktNjUgMC0zOS41IDI1LjEtNjUuMyA2My45LTY1LjN6bTAgMTA0LjhjMjMuMiAwIDMwLjEtMTkuOSAzMC4xLTM5LjUgMC0xOS45LTYuOS0zOS43LTMwLjEtMzkuNy0yNy43IDAtMjkuOSAxOS45LTI5LjkgMzkuNyAwIDE5LjYgNi45IDM5LjUgMjkuOSAzOS41em0xNjMuNyA2LjVsLS41IDBjLTcuOSAxMy40LTIxLjggMTkuMS0zNy41IDE5LjEtMzcuMyAwLTU1LjUtMzItNTUuNS02Ni4yIDAtMzMuMiAxOC40LTY0LjEgNTQuOC02NC4xIDE0LjYgMCAyOC45IDYuMiAzNi44IDE4LjRsLjIgMCAwLTYyLjIgMzQgMCAwIDE3MC44LTMyLjMgMCAwLTE1Ljh6bS0yOS43LTg1LjZjLTIyLjIgMC0yOS45IDE5LjEtMjkuOSAzOS41IDAgMTkuNCA4LjggMzkuNyAyOS45IDM5LjcgMjIuNSAwIDI5LjItMTkuNiAyOS4yLTM5LjkgMC0yMC4xLTcuMi0zOS4yLTI5LjItMzkuMnpNNTkzIDMzOS43bC0zMi4zIDAgMC0xNy4yLS43IDBjLTguNiAxMy45LTIzLjQgMjAuNi0zNy44IDIwLjYtMzYuMSAwLTQ1LjItMjAuMy00NS4yLTUwLjlsMC03Ni4xIDM0IDAgMCA2OS44YzAgMjAuMyA2IDMwLjQgMjEuOCAzMC40IDE4LjQgMCAyNi4zLTEwLjMgMjYuMy0zNS40bDAtNjQuOCAzNCAwIDAgMTIzLjZ6bTkuNS0zNi44bDM3LjUgMCAwIDM2LjgtMzcuNSAwIDAtMzYuOHoiXX0scThlPXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNxdWFyZS1zdGVhbSIsaWNvbjpbNDQ4LDUxMixbInN0ZWFtLXNxdWFyZSJdLCJmMWI3IiwiTTE2NS42IDMwOS4xYzE4LjYgNy43IDI3LjMgMjguOSAxOS42IDQ3LjRzLTI5IDI3LjItNDcuNiAxOS40bC0yOC41LTExLjhjNSAxMC42IDEzLjggMTkuNCAyNS40IDI0LjIgMjUuMiAxMC41IDU0LjEtMS40IDY0LjYtMjYuNSA1LjEtMTIuMSA1LjEtMjUuNSAuMS0zNy43LTUuMS0xMi4xLTE0LjUtMjEuNi0yNi43LTI2LjctMTIuMS01LTI1LTQuOC0zNi40LS41bDI5LjUgMTIuMnpNNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZsMCAxNDQuNyAxMTYuNiA0OC4xYzEyLTguMiAyNi4yLTEyLjEgNDAuNy0xMS4zbDU1LjQtODAuMiAwLTEuMWMwLTQ4LjIgMzkuMy04Ny41IDg3LjYtODcuNXM4Ny42IDM5LjMgODcuNiA4Ny41YzAgNDkuMi00MC45IDg4LjctODkuNiA4Ny41bC03OSA1Ni4zYzEuNiAzOC41LTI5LjEgNjguOC02NS43IDY4LjgtMzEuOCAwLTU4LjUtMjIuNy02NC41LTUyLjdMMCAzMTkuMiAwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMHpNMjQxLjkgMTk2LjJhNTguNCA1OC40IDAgMSAwIDExNi44IDAgNTguNCA1OC40IDAgMSAwIC0xMTYuOCAwem0xMDIuNC0uMWE0My45IDQzLjkgMCAxIDEgLTg3LjggMCA0My45IDQzLjkgMCAxIDEgODcuOCAweiJdfSxrRHQ9cThlLFNEdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJjcmVhdGl2ZS1jb21tb25zLW5jLWV1IixpY29uOls1MTIsNTEyLFtdLCJmNGU5IiwiTTI1NS43IDhDMTExLjYgOCA4IDEyNC44IDggMjU2IDggMzkyLjMgMTE5LjcgNTA0IDI1NS43IDUwNCAzODUuOSA1MDQgNTA0IDQwMy4xIDUwNCAyNTYgNTA0IDExNyAzOTYuNCA4IDI1NS43IDh6bS42IDQ1MC43Yy0xMTIgMC0yMDMuNi05Mi41LTIwMy42LTIwMi43IDAtMjMuMiAzLjctNDUuMiAxMC45LTY2bDY1LjcgMjkuMS00LjcgMCAwIDI5LjUgMjMuMyAwYzAgNi4yLS40IDMuMi0uNCAxOS41bC0yMi44IDAgMCAyOS41IDI3IDBjMTEuNCA2NyA2Ny4yIDEwMS4zIDEyNC42IDEwMS4zIDI2LjYgMCA1MC42LTcuOSA2NC44LTE1LjhsLTEwLTQ2LjFjLTguNyA0LjYtMjguMiAxMC44LTQ3LjMgMTAuOC0yOC4yIDAtNTguMS0xMC45LTY3LjMtNTAuMmw5MC4zIDAgMTI4LjMgNTYuOGMtMS41IDIuMS01Ni4yIDEwNC4zLTE3OC44IDEwNC4zek0yMzkuNiAyNjguMWwtLjUtLjQgLjkgLjQtLjQgMHptNzcuMi0xOS41bDMuNyAwIDAtMjkuNS03MC4zIDAtMjguNi0xMi42YzIuNS01LjUgNS40LTEwLjUgOC44LTE0LjMgMTIuOS0xNS44IDMxLjEtMjIuNCA1MS4xLTIyLjQgMTguMyAwIDM1LjMgNS40IDQ2LjEgMTBsMTEuNi00Ny4zYy0xNS02LjYtMzctMTIuNC02Mi4zLTEyLjQtMzkgMC03Mi4yIDE1LjgtOTUuOSA0Mi4zLTUuMyA2LjEtOS44IDEyLjktMTMuOSAyMC4xTDg1LjUgMTQ2LjRjNjQuNi05Ni44IDE1Ny43LTkzLjYgMTcwLjctOTMuNiAxMTMgMCAyMDMgOTAuMiAyMDMgMjAzLjQgMCAxOC43LTIuMSAzNi4zLTYuMyA1Mi45TDMxNi44IDI0OC42eiJdfSxfRHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToibnBtIixpY29uOls1NzYsNTEyLFtdLCJmM2Q0IiwiTTI4OCAyODhsLTMyIDAgMC02NCAzMiAwIDAgNjR6TTU3NiAxNjBsMCAxOTItMjg4IDAgMCAzMi0xMjggMCAwLTMyLTE2MCAwIDAtMTkyIDU3NiAwek0xNjAgMTkybC0xMjggMCAwIDEyOCA2NCAwIDAtOTYgMzIgMCAwIDk2IDMyIDAgMC0xMjh6bTE2MCAwbC0xMjggMCAwIDE2MCA2NCAwIDAtMzIgNjQgMCAwLTEyOHptMjI0IDBsLTE5MiAwIDAgMTI4IDY0IDAgMC05NiAzMiAwIDAgOTYgMzIgMCAwLTk2IDMyIDAgMCA5NiAzMiAwIDAtMTI4eiJdfSxNRHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiY2xvdWRzY2FsZSIsaWNvbjpbNDQ4LDUxMixbXSwiZjM4MyIsIk0zMTguMSAxNTRsLTkuNCA3LjZjLTIyLjUtMTkuMy01MS41LTMzLjYtODMuMy0zMy42LTcxLjYgMC0xMjkuNCA2MC44LTEyOS40IDEzMi4zIDAgNi42IC40IDEzLjEgMS40IDE5LjQtMi01NiA0MS44LTk3LjQgOTIuNi05Ny40IDI0LjIgMCA0Ni4yIDkuNCA2Mi42IDI0LjdsLTI1LjIgMjAuNGMtOC4zLS45LTE2LjggMS44LTIzLjEgOC4xLTExLjEgMTEtMTEuMSAyOC45IDAgNDAgMTEuMSAxMSAyOC45IDExIDQwIDAgNi4zLTYuMyA5LTE0LjkgOC4xLTIzLjFsNzUuMi04OC44YzYuMy02LjUtMy4zLTE1LjktOS41LTkuNnpNMjEzLjcgMjQ2LjVhMTQgMTQgMCAxIDEgMjAuNiAxOSAxNCAxNCAwIDEgMSAtMjAuNi0xOXpNMjI0IDMyYTIyNCAyMjQgMCAxIDAgMCA0NDggMjI0IDIyNCAwIDEgMCAwLTQ0OHptMCA2NGExNjAgMTYwIDAgMSAxIDAgMzIwIDE2MCAxNjAgMCAxIDEgMC0zMjB6Il19LHpEdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ0aGVtZWNvIixpY29uOls0NDgsNTEyLFtdLCJmNWM2IiwiTTIwMi45IDguNGM5LjktNS43IDI2LTUuOCAzNi0uMkw0MzAgMTE1LjljMTAgNS42IDE4IDE5LjQgMTggMzAuOUw0NDggMzY0YzAgMTEuNC04LjEgMjUuMy0xOCAzMUwyMzguOCA1MDMuN2MtOS45IDUuNy0yNiA1LjYtMzUuOC0uMkwxNy45IDM5NS4xQzggMzg5LjMgMCAzNzUuNCAwIDM2NEwwIDE0Ni43YzAtMTEuNCA4LTI1LjQgMTcuOS0zMS4xTDIwMi45IDguNHpNMTI1LjUgMjA4LjNjLTE1LjkgMC0zMS45IC4xLTQ3LjggLjFsMCAxMDEuNCAxOS4xIDAgMC0yOS44IDI4LjcgMGM0OS43IDAgNDkuNi03MS43IDAtNzEuN3pNMjY1LjYgMzA4LjZsLTMwLjctMzQuNmMzNy03LjUgMzQuOC02NS4yLTEwLjktNjUuNS0xNi4xIDAtMzIuMi0uMS00OC4zLS4xbDAgMTAxLjYgMTkuMSAwIDAtMzMuOSAxOC40IDAgMjkuNiAzMy45IDIyLjggMCAwLTEuM3ptLTQxLjYtODIuM2MyMy4zIDAgMjMuMyAzMi41IDAgMzIuNWwtMjkuMSAwIDAtMzIuNSAyOS4xIDB6bS05NS42LTEuNmMyMS4yIDAgMjEuMSAzOC45IDAgMzguOWwtMzIuMyAwIDAtMzguOCAzMi4zIDB6bTE5Mi42LTE4LjJjLTY4LjUgMC03MSAxMDUuOCAwIDEwNS44IDY5LjUgMCA2OS40LTEwNS44IDAtMTA1Ljh6bTAgMTcuNGM0NC4xIDAgNDQuOCA3MC45IDAgNzAuOXMtNDQuNC03MC45IDAtNzAuOXoiXX0sQ0R0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6Imdvb2dsZS1wbGF5IixpY29uOls0NDgsNTEyLFtdLCJmM2FiIiwiTTI5My42IDIzNC4zTDcyLjkgMTMgMzUzLjcgMTc0LjIgMjkzLjYgMjM0LjN6TTE1LjMgMEMyLjMgNi44LTYuNCAxOS4yLTYuNCAzNS4zbDAgNDQxLjNjMCAxNi4xIDguNyAyOC41IDIxLjcgMzUuM0wyNzEuOSAyNTUuOSAxNS4zIDB6TTQ0MC41IDIyNS42bC01OC45LTM0LjEtNjUuNyA2NC41IDY1LjcgNjQuNSA2MC4xLTM0LjFjMTgtMTQuMyAxOC00Ni41LTEuMi02MC44ek03Mi45IDQ5OUwzNTMuNyAzMzcuOCAyOTMuNiAyNzcuNyA3Mi45IDQ5OXoiXX0sVER0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImtvcnZ1ZSIsaWNvbjpbNDQ4LDUxMixbXSwiZjQyZiIsIk0zODcuNiAzNGwtMzI3IDBDMjcuOSAzNCAxLjEgNjAuOCAxLjEgOTMuNWwwIDMyNy4xYzAgMzIuNiAyNi44IDU5LjQgNTkuNSA1OS40bDMyNy4xIDBjMzMgMCA1OS41LTI2LjggNTkuNS01OS41bDAtMzI3QzQ0Ny4xIDYwLjggNDIwLjMgMzQgMzg3LjYgMzR6TTg4LjIgMTIwLjhsOTYgMCAwIDExNiA2MS44LTExNiAxMTAuOSAwLTgxLjIgMTMyLTE4Ny41IDAgMC0xMzJ6TTI1MCAzOTIuOWwtNjUuNy0xMTMuNiAwIDExMy42LTk2IDAgMC0xMzAuOCAxOTEuNSAwIDg4LjYgMTMwLjgtMTE4LjQgMHoiXX0sJER0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InczYyIsaWNvbjpbNjQwLDUxMixbXSwiZTdkZSIsIk0xMDUuMiAzMDUuM2wzMC45LTEwNC43YzcuOS0yNi43IDguNi00MC42IC4yLTY4LjhsLTEwLjEtMzMuOSA0NC4xIDAgNjEgMjA3LjQgNDUuNy0xNTUuNWMxMy4zLTQ1LjMgMjEuMS01MS45IDU5LjQtNTEuOWwxMzIuOCAwYy0yNC4yIDQyLjktNDkuMyA4NS4yLTczLjkgMTI3LjkgMi42IC44IDUuMiAxLjggNy43IDIuOCAxNy4zIDcuMSAzMi4yIDE5LjQgNDIgMzUuNSAxMS4yIDE4LjUgMTYuOCA0MC4yIDE2LjggNjUuMiAwIDMwLjgtOC4yIDU2LjgtMjQuNiA3Ny44LTE0LjUgMTguNi0zNSAyOS41LTU4LjIgMzEuMiAwIC4zLTUuMiAuNC01LjggLjQtMzkuNy0uMS03MC44LTMyLjEtODMuMS02OC43bDQyLjkgMGMzLjUgNS4zIDYuOCAxMC43IDExLjIgMTUuNSA4LjEgNy4zIDE4LjUgMTAuOSAyOS4zIDExLjEgMTMuMSAwIDIzLjMtOS4xIDI5LjktMTkuOCA4LjEtMTMuMiAxMi4yLTI5IDEyLjItNDcuNSAwLTEzLjEtMS44LTI0LjMtNS4zLTMzLjYtLjktMi4zLTEuOS00LjUtMy02LjYtMS40LTIuNi0yLjktNS4xLTQuNy03LjQtMTAuMS0xMy4yLTI5LjMtMTkuNy00Ny41LTE5LjhsLTI4LjIgMCA3MC4zLTEyMi0zNS42IDBjLTQzLjEgMC0zNS45LTUuNC01MC40IDQzLjNsLTc1LjcgMjU1LjMtNC4yIDAtNjMuMS0yMTEuMS02My4xIDIxMS4xLTQuMiAwLTEwMS0zNDAuNyA0NC4yIDAgNjEgMjA3LjR6TTQ2NyAzMzUuN2MuMyAuNiAxMS4zIDIwLjMgMTguMyAzMC4zIDcuMSAxMC4xIDE5LjggMjAuOSAyNC44IDI0LjZzMTkuMSAxMi41IDM0LjMgMTMuOWMxNS4yIDEuNSAyMy4zIC4yIDM4LjctNi42IDE1LjQtNi44IDI3LjktMjAuNCAzNC45LTI4LjEgNi45LTcuNiAxNy45LTI3LjMgMTguMi0yNy43bDMuMyAxNi44YzEuNyA5LTEgMjMuNy00LjEgMzAtNC4zIDguNi03LjYgMTMuNS0xNCAyMC4zLTYuMSA2LjUtMTYuNyAxMy41LTIxLjMgMTYuNC00LjYgMi45LTIzLjEgMTUuMS01MC4xIDEwLjNzLTQ0LjctMjUuOS01My45LTM4LjJjLTkuOC0xMy4yLTE2LjctMjguMy0xOS0zMy4yLTMuOC04LjQtOS45LTI4LjItMTAuMS0yOC44em0xNjkuNy0yMThjMy4zIDIwLjMtLjEgMjguNy05LjEgNDZsLTEyLjcgMjQuMmMtLjMtLjYtMTAtMjAuNy0yNS45LTMxLjktMTMuNi05LjYtMjIuNS0xMS43LTM2LjMtOC44LTE3LjggMy43LTM4IDI1LTQ2LjggNTEuMi0xMC41IDMxLjQtMTAuNyA0Ni42LTExIDYwLjYtLjYgMjIuNCAyLjkgMzUuNiAyLjkgMzUuNnMtMTUuNC0yOC41LTE1LjItNzAuMWMuMS0yOS43IDQuOC01Ni43IDE4LjUtODMuMyAxMi4xLTIzLjQgMzAuMS0zNy40IDQ2LjEtMzkuMSAxNi41LTEuNyAyOS42IDYuMyAzOS43IDE0LjkgMTAuNiA5IDIxLjMgMjguOCAyMS4zIDI4LjhsMjQuOS00OS44IDMuNiAyMS44eiJdfSxERHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZ3JhdiIsaWNvbjpbNTEyLDUxMixbXSwiZjJkNiIsIk0zMDIuNiAyMTAuNmM0LjUgNC41IDQuNSAxMi4zIDAgMTYuOGwtMTAgMTBjLTQuNSA0LjktMTIuMyA0LjktMTcuMSAwbC0xMC44LTEwLjhjLTQuNS00LjktNC41LTEyLjMgMC0xNy4xbDEwLTEwYzQuNS00LjUgMTIuMy00LjUgMTcuMSAwbDEwLjggMTEuMXptLTMxLjItMjAuM2E3LjcgNy43IDAgMSAwIC0xMC42LTExIDcuNyA3LjcgMCAxIDAgMTAuNiAxMXptLTI2LjggNS41YTcuNSA3LjUgMCAxIDAgMTAuNyAxMC41IDcuNSA3LjUgMCAxIDAgLTEwLjctMTAuNXpNMzE5LjQgMTgyYy0yMC41LTE0LjktMzQuOS00NC42LTEyLjMtNzAuMyAyMi4zLTI1LjcgNDItMTcuOCA2MS43IC44IDEyLjMgMTEuNyAzMC4yIDI1LjcgMTcuOCA0OS44LTEyLjkgMjQuMy00Ni42IDM0LjMtNjcuMiAxOS43em00OS4yLTQ1LjljLTkuMi0xMC4zLTI0LjEgNy4xLTE2IDE2LjYgNy42IDkuMyAzMy4xIDIuNSAxNi0xNi42ek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwIDI1NiAyNTYgMCAxIDEgLTUxMiAwem00NDMuNyA0NGMyLjYtMTYuNi0yMC45LTE3LjEtMjYtMjYuNS0xNC0yNC45LTI4LjYtMzgtNTYuMy0zMS40IDEyLTguMyAyNC4zLTYuMyAyNC4zLTYuMyAuMy02LjYgMC0xMy40LTkuNy0yNS43IDQtMTIuOSAuMy0yMy4xIC4zLTIzLjEgMTYtOC45IDI3LjctMjUuMiAzMC00NC42IDMuNy0zMi0xOS40LTYxLjEtNTEuNC02NC44LTIyLjgtMi42LTQ1LjEgNy45LTU2LjEgMjYuNS0yMy45IDQxLjQgMS40IDczLjIgMjMuMSA4NC0xNC45LTEuNC0zNS40LTEyLjMtNDEuNC0zNS40LTYuOC0yNi41IDIuOS01MS40IDkuMi02My40IDAgMC00LjUtNi04LjMtOS4yIDAgMC0xNC4yIDAtMjUuNCA1LjUgMTIuMy0xNS43IDI2LTE0LjkgMjYtMTQuOSAwLTYuNi0uNi0xNS40LTMuNy0yMi4zLTUuNi0xMS40LTI0LjYtMTMuMy0zMi43IDIuOSAuMS0uMiAuMy0uNCAuNC0uNS01LjIgMTIuMy0xLjEgNTcuNyAxNy40IDkwLTIuNiAxLjQtOS40IDYuMy0xMy40IDEwLjMtMjIuMyAxMC01OCA2Mi4yLTU4IDYyLjItMjkuMSAxMS4xLTc5LjcgNTIuNS03Mi45IDgyLjMgLjMgMy4xIDEuNCA1LjcgMy4xIDcuNy0yLjkgMi4zLTUuNyA1LjItOC42IDguNi0xMi4zIDE0LjItNS41IDM2LjMgMTguMyAyNS4yIDE2LjMtNy40IDMwLjYtMjAuOSAzNy41LTMxLjQgMCAwLTUuNy01LjItMTYuOC00LjUgMjguNi02LjggMzUuNC05LjcgNDcuNy05LjQgOC4zIDQgOC4zLTM1LjQgOC4zLTM1LjQgMC0xNS4yLTIuMy0zMi0xMS41LTQyLjggMTIuOSAxMi42IDMwIDMzLjggMjguOSA2Mi42LS44IDE4LjktMTUuNyAyMy43LTE1LjcgMjMuNy05LjQgMTcuMS00NC42IDY4LTMxLjQgMTA5LjQgMCAwLTEwLTE1LjQtMTAuNS0yMi44LTE4IDIwLTQ4IDU0LTI1LjQgNjYuNiAyNy41IDE1LjIgMTEyLjMtOTEuNSAxMzAuMy0xNDYuOSAzNS43LTIxLjUgNTcuMi00OC44IDY2LTY3LjEgMjIuNyA0NC45IDk4LjQgOTcuNSAxMDQuNCA2MC45eiJdfSxMRHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiYXdzIixpY29uOls2NDAsNTEyLFtdLCJmMzc1IiwiTTE4MC40IDIwM2MtLjcgMjIuNiAxMC42IDMyLjcgMTAuOSAzOS0uMSAxLjMtLjYgMi41LTEuMyAzLjZzLTEuNyAyLTIuOCAyLjZsLTEyLjggOWMtMS43IDEuMi0zLjYgMS44LTUuNiAxLjktLjQgMC04LjIgMS44LTIwLjUtMjUuNi03LjUgOS40LTE3IDE2LjktMjcuOSAyMnMtMjIuNyA3LjctMzQuNyA3LjVjLTE2LjMgLjktNjAuNC05LjItNTguMS01Ni4yLTEuNi0zOC4zIDM0LjEtNjIuMSA3MC45LTYwIDcuMSAwIDIxLjYgLjQgNDcgNi4zbDAtMTUuNmMyLjctMjYuNS0xNC43LTQ3LTQ0LjgtNDMuOS0yLjQgMC0xOS40LS41LTQ1LjggMTAuMS03LjQgMy40LTguMyAyLjgtMTAuOCAyLjgtNy40IDAtNC40LTIxLjUtMi45LTI0LjIgNS4yLTYuNCAzNS45LTE4LjQgNjUuOS0xOC4yIDIwLjEtMS44IDQwLjEgNC40IDU1LjcgMTcuMyA2LjMgNy4xIDExLjIgMTUuNCAxNC4yIDI0LjRzNC4yIDE4LjUgMy41IDI4bDAgNjkuM3pNOTQgMjM1LjRjMzIuNC0uNSA0Ni4yLTIwIDQ5LjMtMzAuNSAyLjUtMTAuMSAyLjEtMTYuNCAyLjEtMjcuNC05LjctMi4zLTIzLjYtNC45LTM5LjYtNC45LTE1LjItMS4xLTQyLjggNS42LTQxLjcgMzIuMy0xLjIgMTYuOCAxMS4xIDMxLjQgMzAgMzAuNXptMTcwLjkgMjMuMWMtNy45IC43LTExLjUtNC45LTEyLjctMTAuNEwyMDIuNCA4My40Yy0xLTIuOC0xLjYtNS42LTEuOS04LjYtLjItMS4yIC4xLTIuNCAuOC0zLjRzMS44LTEuNiAzLTEuOGMuMiAwLTIuMSAwIDIyLjIgMCA4LjgtLjkgMTEuNiA2IDEyLjYgMTAuNEwyNzQuOSAyMjAuOCAzMDguMSA4MGMuNS0zLjIgMi45LTExLjEgMTIuOC0xMC4ybDE3LjIgMGMyLjItLjIgMTEuMS0uNSAxMi43IDEwLjRMMzg0LjEgMjIyLjcgNDIxIDgwLjFjLjUtMi4yIDIuNy0xMS40IDEyLjctMTAuNGwxOS43IDBjLjktLjEgNi4yLS44IDUuMyA4LjYtLjQgMS44IDMuNC0xMC43LTUyLjggMTY5LjktMS4xIDUuNS00LjggMTEuMS0xMi43IDEwLjRsLTE4LjcgMGMtMTAuOSAxLjItMTIuNS05LjctMTIuNy0xMC43bC0zMy4yLTEzNy4xLTMyLjggMTM3Yy0uMiAxLjEtMS43IDExLjktMTIuNyAxMC43bC0xOC4zIDAgMCAwem0yNzMuNSA1LjZjLTUuOSAwLTMzLjktLjMtNTcuNC0xMi4zLTIuMy0xLTQuMy0yLjYtNS43LTQuOHMtMi4xLTQuNi0yLjEtNy4xbDAtMTAuN2MwLTguNSA2LjItNi45IDguOC01LjkgMTAgNC4xIDE2LjUgNy4xIDI4LjggOS42IDM2LjcgNy41IDUyLjgtMi4zIDU2LjctNC41IDEzLjItNy44IDE0LjItMjUuNyA1LjMtMzQuOS0xMC41LTguOC0xNS41LTkuMS01My4xLTIxLTQuNi0xLjMtNDMuNy0xMy42LTQzLjgtNTIuNC0uNi0yOC4yIDI1LTU2LjIgNjkuNS01NiAxMi43IDAgNDYuNCA0LjEgNTUuNiAxNS42IDEuNCAyLjEgMiA0LjYgMS45IDdsMCAxMC4xYzAgNC40LTEuNiA2LjctNC45IDYuNy03LjctLjktMjEuNC0xMS4yLTQ5LjItMTAuOC02LjktLjQtMzkuOSAuOS0zOC40IDI1LS40IDE5IDI2LjYgMjYuMSAyOS43IDI2LjkgMzYuNSAxMSA0OC42IDEyLjggNjMuMSAyOS42IDE3LjEgMjIuMiA3LjkgNDguMyA0LjMgNTUuNC0xOS4xIDM3LjUtNjguNCAzNC40LTY5LjMgMzQuNHptNDAuMiAxMDQuOWMtNzAgNTEuNy0xNzEuNyA3OS4yLTI1OC41IDc5LjItMTE3LjEgLjgtMjMwLjMtNDIuMy0zMTcuMy0xMjAuNy02LjUtNS45LS44LTE0IDcuMi05LjUgOTYuNSA1NS4yIDIwNS43IDg0LjIgMzE2LjkgODQuMSA4My0uNCAxNjUuMS0xNy4zIDI0MS42LTQ5LjUgMTEuOC01IDIxLjggNy44IDEwLjEgMTYuNHptMjkuMi0zMy4zYy05LTExLjUtNTkuMy01LjQtODEuOC0yLjctNi44IC44LTcuOS01LjEtMS44LTkuNSA0MC4xLTI4LjIgMTA1LjktMjAuMSAxMTMuNC0xMC42IDcuNSA5LjUtMi4xIDc1LjQtMzkuNiAxMDYuOS01LjggNC45LTExLjMgMi4zLTguNy00LjEgOC40LTIxLjMgMjcuNC02OC41IDE4LjQtODB6Il19LEVEdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJnbGlkZS1nIixpY29uOls0NDgsNTEyLFtdLCJmMmE2IiwiTTQwNy4xIDIxMS4yYy0zLjUtMS40LTExLjYtMy44LTE1LjQtMy44LTM3LjEgMC02Mi4yIDE2LjgtOTMuNSAzNC41bC0uOS0uOWM3LTQ3LjMgMjMuNS05MS45IDIzLjUtMTQwLjQgMC03MS41LTM4LjItMTAwLjYtMTA4LjQtMTAwLjYtMTE1LjEgMC0xNzMuNCAxMTMuNy0xNzMuNCAxOTguNCAwIDg3LjkgNTEuMyAxMzYuNiAxMzguNiAxMzYuNiAxMiAwIDExLTEgMTEgMy44LTE2LjkgMTI4LjktOTAuOCAxMzMuMS05MC44IDk0LjYgMC0zOS4yIDQ1LTU4LjYgNDUuNS02MS0uMy0xMi4yLTQ3LTI3LjYtNTguOS0yNy42LTMzLjkgLjEtNTIuNCA1MS4yLTUyLjQgNzkuMyAwIDUxLjkgMzIuOCA4Ny45IDg1LjUgODcuOSA3Ny40IDAgMTM0LTc3LjggMTUxLjQtMTQ1LjQgMTUuMS02MC41IDExLjItNjMuMyAxOS43LTY3LjYgMzIuMi0xNi4yIDU3LjUtMjcgOTMuOC0yNyAxNy44IDAgMzAuNSAzLjcgNTguOSA4LjQgMi45IDAgNi43LTIuOSA2LjctNS44IDAtOC0zMy40LTYwLjUtNDAuOS02My40ek0yMzEuOCAxMjYuOGMtOS4zIDQ0LjctMTguNiA4OS42LTI3LjggMTM0LjMtMi4zIDEwLjItMTMuMyA3LjgtMjIgNy44LTM4LjMgMC00OS00MS44LTQ5LTczLjEgMC00NyAxOC0xMDkuMyA2MS44LTEzMy40IDctNC4xIDE0LjgtNi43IDIyLjYtNi43IDE4LjYgMCAyMCAxMy4zIDIwIDI4LjctLjEgMTQuMy0yLjcgMjguNS01LjYgNDIuNHoiXX0sUER0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImpzZmlkZGxlIixpY29uOls1NzYsNTEyLFtdLCJmMWNjIiwiTTUxMS4xIDIzNy41Yy00LjctMi42LTUuNy01LjctNi40LTEwLjgtMi40LTE2LjUtMy41LTMzLjYtOS4xLTQ5LjEtMzUuOS0xMDAtMTU0LTE0My40LTI0Ni44LTkxLjYtMjcuNCAxNS4yLTQ5IDM2LjQtNjUuNSA2My45LTMuMi0xLjUtNS41LTIuNy03LjgtMy43LTMwLjEtMTIuNC01OS0xMC4xLTg1LjMgOS4yLTI1LjUgMTguNy0zNi40IDQ0LjUtMzIuNyA3Ni40IC40IDMtMiA3LjYtNC41IDkuNS0zOS43IDMwLTU2IDc4LjEtNDEuOSAxMjQuNiAxMy44IDQ1LjYgNTcuNSA3OS44IDEwNS42IDgxLjQgMzAuMyAxIDYwLjYgLjUgOTEgLjUgODQgMCAxNjguMSAuNSAyNTIuMS0uNSA1Mi43LS42IDk2LjEtMzYuOSAxMDguMi04Ny4zIDExLjUtNDguMS0xMS4xLTk3LjMtNTYuOC0xMjIuNnptMjEuMSAxNTYuOWMtMTguMiAyMi40LTQyLjMgMzUuMy03MS4zIDM1LjctNTYuOSAuOC0xMTMuOCAuMi0xNzAuNyAuMiAwIC43LTE2MyAuMi0xNjMuNyAuMi00My45LS4zLTc2LjctMTkuOC05NS4yLTYwLTE4LjktNDEuMi00LTkwLjggMzQuMi0xMTYuMSA5LjItNi4xIDEyLjUtMTEuNiAxMC4xLTIzLjEtNS41LTI2LjQgNC41LTQ4IDI2LjQtNjMgMjMtMTUuNyA0Ny40LTE2LjEgNzItMy4xIDEwLjMgNS40IDE0LjYgMTEuNiAyMi4yLTIuNSAxNC4yLTI2LjQgMzQuNi00Ni43IDYwLjctNjEuMyA5Ny41LTU0LjQgMjI4LjQgNy42IDIzMC4yIDEzMi43IC4xIDguMiAyLjQgMTIuNCA5LjggMTUuOSA1Ny42IDI2LjggNzQuNSA5Ni4xIDM1LjEgMTQ0LjV6bS04Ny44LTgwLjVjLTUuOCAzMS4yLTM0LjYgNTUuMS02Ni43IDU1LjEtMTcgMC0zMi4xLTYuNS00NC4xLTE3LjctMjcuNy0yNS43LTcxLjEtNzUtOTUuOS05My40LTIwLjEtMTQuOS00Mi0xMi4zLTYwLjMgMy44LTUwIDQ0LjEgMTUuOSAxMjEuOCA2Ny4xIDc3LjIgNC41LTQgNy44LTkuNSAxMi43LTEyLjggOC4yLTUuNSAyMC44LS45IDEzLjIgMTAuNi0xNy40IDI2LjMtNDkuMyAzOC4yLTc4LjkgMjkuMy0yOC45LTguNy00OC44LTM2LTQ4LjYtNzAuMiAxLjItMjIuNSAxMi40LTQzLjEgMzUuNC01NiAyMi42LTEyLjYgNDYuNC0xMy4xIDY3IDIuNSA1MC44IDM4LjUgNzUuNiA4MS43IDEwNy4zIDEwMS4yIDI0LjYgMTUuMSA1NC4zIDcuNCA2OC44LTE3LjUgMjguOC00OS4yLTM0LjYtMTA1LTc4LjktNjMuNS00IDMuNy02LjkgOC45LTExLjQgMTEuNy0xMSA2LjgtMTcuMy00LjEtMTIuOC0xMC40IDIwLjctMjguNiA1MC41LTQwLjQgODMuMy0yOC4yIDMxLjQgMTEuNyA0OS4xIDQ0LjQgNDIuOCA3OC4yeiJdfSxJRHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToia2V5YmFzZSIsaWNvbjpbNDQ4LDUxMixbXSwiZjRmNSIsIk0yODYuMiA0MTlhMTggMTggMCAxIDAgMCAzNiAxOCAxOCAwIDEgMCAwLTM2ek0zOTguMSAyNzEuNGMtOS41LTE0LjYtMzkuNC01Mi40LTg3LjMtNzMuNy02LjEtMi43LTEyLjItNS4xLTE4LjQtNy4zIDQuMS05LjkgNi0yMC42IDUuOC0zMS40cy0yLjctMjEuMy03LjItMzEuMS0xMC45LTE4LjUtMTguOS0yNS43LTE3LjQtMTIuNi0yNy42LTE2Yy0xMi40LTQuMS0yMy4zLTYtMzIuNC01LjgtLjYtMi0xLjktMTEgOS40LTM1bC0yMi45LTEzLjUtNS41IDcuNmMtOC43IDEyLjEtMTYuOSAyMy42LTI0LjMgMzQuOS0yLjctLjYtNS41LTEuMS04LjMtMS4yLTQxLjUtMi40LTM5LTIuMy00MS4xLTIuMy01MC42IDAtNTAuOCA1Mi4xLTUwLjggNDUuOWwtMi40IDM2LjdjLTEuNiAyNyAxOS44IDUwLjIgNDcuNiA1MS44bDguOSAuNUMxMDYgMjE1LjUgOTAuNCAyMjcuNSA3Ni42IDI0MS40IDE0IDMwNC43IDE0IDM3NCAxNCA0MjkuOGwwIDMzLjYgMjMuMy0yOS44YzMuMSAxMy4xIDggMjUuOCAxNC42IDM3LjYgNS44IDEwLjEgMTQuOSA5LjQgMTkuNiA3LjMgNC4yLTEuOSAxMC02LjkgMy44LTIwLjEtOC0xNi44LTEzLjMtMzQuNy0xNS44LTUzLjFsNDYuOC01OS44LTI0LjcgNzQuMWM1OC4yLTQyLjQgMTU3LjQtNjEuOCAyMzYuMi0zOC42IDM0LjIgMTAuMSA2Ny40IC43IDg0LjctMjMuOCAuNy0xIDEuMi0yLjIgMS44LTMuMiAxLjggOS40IDIuNyAxOC45IDIuOCAyOC40IDAgMjMuMy0zLjcgNTIuOS0xNC45IDgxLjYtMi41IDYuNSAxLjggMTQuNSA4LjYgMTUuNyA3LjQgMS42IDE1LjMtMy4xIDE4LjQtMTEuMSA5LjYtMjUuNSAxNC42LTU0LjYgMTQuNi04Ni4yIDAtMzguNi0xMy03Ny41LTM1LjktMTEwLjl6TTE0Mi40IDEyOC42bC0xNS43LS45LTEuNCAyMS44IDEzLjEgLjhjLS42IDYuNS0uNSAxMy4xIC4zIDE5LjZsLTIyLjQtMS4zYy0xLjYtLjEtMy4yLS41LTQuNy0xLjFzLTIuOC0xLjYtMy45LTIuOC0xLjktMi42LTIuNS00LjEtLjgtMy4xLS43LTQuN0wxMDcgMTE5YzEtMTIuMiAxMy45LTExLjMgMTMuMy0xMS4zbDI5LjEgMS43Yy0yLjggNi4yLTUuMSAxMi42LTcgMTkuMnpNMjkwLjggMzAwLjhjLTIuMSAxLjYtNC44IDIuNC03LjUgMi4ycy01LjEtMS41LTYuOS0zLjVsLTkuNy0xMS41LTM0LjQgMjdjLTEuNiAxLjMtMy43IDEuOS01LjggMS43cy00LTEuMi01LjMtMi44bC0xNS44LTE4LjZjLTEuMi0xLjYtMS43LTMuNS0xLjUtNS40czEuMy0zLjcgMi44LTQuOWwzNC42LTI3LjItMTQuMS0xNi43LTE3LjEgMTMuNWMtMS42IDEuMi0zLjUgMS44LTUuNSAxLjZzLTMuOC0xLjEtNS4xLTIuNmMwIDAtMy43LTQuNC0zLjgtNC41LTEuMi0xLjYtMS43LTMuNS0xLjUtNS41czEuMy0zLjcgMi44LTQuOUwyMTQgMjI1LjJzLTE4LjUtMjItMTguNi0yMi4xYy0uOC0xLTEuMy0yLjEtMS43LTMuM3MtLjQtMi41LS4zLTMuNyAuNi0yLjQgMS4yLTMuNSAxLjUtMiAyLjUtMi44YzIuMS0xLjcgNC44LTIuNCA3LjQtMi4yczUuMSAxLjUgNi45IDMuNmw4MS4xIDk2LjNjLjggMSAxLjMgMi4xIDEuNyAzLjNzLjQgMi41IC4zIDMuNy0uNiAyLjUtMS4yIDMuNS0xLjUgMi4xLTIuNSAyLjh6TTE4Ny40IDQxOWExOCAxOCAwIDEgMCAwIDM2IDE4IDE4IDAgMSAwIDAtMzZ6Il19LEFEdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJsdW1vbi1kcm9wIixpY29uOls1NzYsNTEyLFtdLCJlN2UzIiwiTTQ4MCAzMmM1MyAwIDk2IDQzIDk2IDk2bDAgMjI0YzAgNTMtNDMgOTYtOTYgOTZMOTYgNDQ4Yy01MyAwLTk2LTQzLTk2LTk2TDAgMTI4QzAgNzUgNDMgMzIgOTYgMzJsMzg0IDB6TTMwMi40IDExNC43Yy05LjgtMTYuNC0yMC41LTE2LjQtMjkuNiAwbC02OC45IDExNGMtMTAuNyAxNS42LTE2LjQgMzIuOC0xNi40IDUyLjUgMCA1MC45IDQ0LjMgOTQuMyAxMDAuMSA5NC4zIDU1IDAgMTAwLjktNDMuNSAxMDAuOS05NC4zIDAtMTkuNy02LjYtMzcuOC0xNy4yLTUyLjVsLTY4LjktMTE0eiJdfSxORHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZm9yZ2VqbyIsaWNvbjpbMzIwLDUxMixbXSwiZTg2MCIsIk0yNjEuNSAxLjJjMzQgMCA2MS42IDI3LjYgNjEuNiA2MS42cy0yNy42IDYxLjYtNjEuNiA2MS42Yy0yMyAwLTQzLjEtMTIuNy01My43LTMxLjRsLTI4LjUgMGMtMjQgMC00NyA5LjUtNjQgMjYuNXMtMjYuNSA0MC0yNi41IDY0bDAgNDMuNWMyNi0xOS41IDU3LjctMzAuMiA5MC42LTMwLjJsMjguNSAwYzEwLjYtMTguNyAzMC42LTMxLjQgNTMuNy0zMS40IDM0IDAgNjEuNiAyNy42IDYxLjYgNjEuNnMtMjcuNiA2MS42LTYxLjYgNjEuNmMtMjMgMC00My4xLTEyLjctNTMuNy0zMS40bC0yOC41IDBjLTI0IDAtNDcgOS41LTY0IDI2LjVzLTI2LjUgNDAtMjYuNSA2NGwwIDQ3LjhjMTguNyAxMC42IDMxLjQgMzAuNiAzMS40IDUzLjYgMCAzNC0yNy42IDYxLjYtNjEuNiA2MS42Uy0zIDQ4My4yLTMgNDQ5LjJjMC0yMyAxMi43LTQzLjEgMzEuNC01My42bDAtMjEyYzAtNDAgMTUuOS03OC40IDQ0LjItMTA2LjdzNjYuNy00NC4yIDEwNi43LTQ0LjJsMjguNSAwYzEwLjYtMTguNyAzMC42LTMxLjQgNTMuNy0zMS40ek01OC42IDQyMy45Yy0xNCAwLTI1LjMgMTEuMy0yNS4zIDI1LjNzMTEuMyAyNS40IDI1LjMgMjUuNCAyNS40LTExLjQgMjUuNC0yNS40LTExLjQtMjUuMy0yNS40LTI1LjN6TTI2MS41IDIwMS43YTI1LjQgMjUuNCAwIDEgMCAwIDUwLjcgMjUuNCAyNS40IDAgMSAwIDAtNTAuN3ptMC0xNjQuMmEyNS40IDI1LjQgMCAxIDAgMCA1MC43IDI1LjQgMjUuNCAwIDEgMCAwLTUwLjd6Il19LFJEdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJwb3N0Z3Jlc3FsIixpY29uOls1MTIsNTEyLFtdLCJlODU4IiwiTTIxOS44IDE3MS4zYzMuOSAuNSAxMy4xIDIuNyAxMi4zIDguNS0uOCA1LjktOS4yIDkuMS0xNC4yIDguNC00LjctLjctMTMuMi02LjEtMTIuMy0xMi4xbC4zLTIuMWM0LjIgMCA4LjMtMy41IDEzLjktMi43em0xNjguMS0zLjRjMTAuOCAyLjYtMS4xIDEzLjUtNi44IDE0LjMtNC4zIC42LTEyLjEtMi4yLTEyLjgtNy40LTEtNy40IDE1LjctNy45IDE5LjctNi45em0tMjItMTQwLjhjMzUuNy0uMyA4MS4zIDkuNCAxMTQuMyA1MS43IDcuMiA5LjIgMTAgMjQgOS43IDQwLjktLjggNDkuNi0yNiAxMjkuNC03MC43IDE5Ny40IDQuNSAyLjkgMTcuNiA3LjQgNTEuMSAuNSA1LjYtMS4yIDEyLjctMi4yIDE3LjYgMS42IDE4LjIgMTMuOS0xOS42IDM1LjEtMjguNCAzOS4yLTEzLjIgNi4yLTM0LjggOS41LTUxLjIgOC43LTIuMS0uMi00LjMtLjItNi4zLS42LTUuMS0xLjEtNy40LTEtOC4zLS43LTEuMSAuMy0xLjQgMi45LTEuNiAzLjgtMi44IDI0LjktNy43IDY0LjctMTAuNyA4Mi0yLjggMTYuMy03LjcgMjkuMy0xNy4yIDM5LjItOS41IDkuOS0yMi44IDE1LjctNDAuNiAxOS41LTIyLjMgNC44LTM3LjktLjEtNDguNy05LjEtMTAuMy04LjctMTUuMi0yMC40LTE4LTI3LjQtMS44LTQuNS0zLTExLjUtNC0xOS44LTIuMy0xOS44LTMuMy01MC40LTMtODMuMy0yNC42IDIyLjEtNTUgMTcuMi02OC4yIDEzLjktMTAuNS0yLjYtMzMtMTYuMS0xNy41LTI4LjcgMTEuOS05LjcgMzAuMy01LjUgNDIuMi0xNSAyLjQtMS45IDExLjQtMTAuNiAxMS40LTEzLjUtMTAtLjMtMTkuNi0yLjktMjguMS03LjUtMTMuNSAxNC41LTI2LjQgMjkuNS0zOS4zIDQ0LjYtOC4zIDkuOS0xNy40IDE1LjgtMjcuNCAxNi4yLTkuOSAuNC0xOC43LTQuNi0yNi4xLTExLjgtNy4zLTcuMS0xNC4xLTE3LjItMjAuNC0yOS0xOS0zNS41LTMzLjItODYuMS00Mi4zLTEyNi40LTYtMjYuNy05LjYtNDkuMS0xMC4xLTU5LTIuMi00NC4zIDgtNzQuMSAyNi05My4yIDE3LjktMTkgNDIuNC0yNiA2Ni4xLTI3LjQgMzUuNi0yIDcxIDguNSA4Ni42IDEzLjhsNSAxLjhjMTUuOS0xMC44IDM2LjEtMTcuNCA2MS43LTE3IDEzLjIgLjIgMjUuNSAyLjIgMzYuNyA0LjIgMTguNi03LjEgMzkuOC05LjUgNTkuNC05Ljd6bS05NiAyMC41Yy0yNC43LS40LTQyLjkgNi41LTU2LjYgMTYuOC0uOCAuNi0xLjggMS0yLjggMS4yLTE0LjQgMTEuOC0yMy45IDI4LTMwLjMgNDQuOC03LjIgMTkuMS0xMCAzOC41LTExLjEgNTEuNSA3LjYtNC4zIDE3LjktOC43IDI4LjctMTEuMiAxMC41LTIuNCAyMi40LTMuMiAzMi43IC44IDEwLjkgNC4yIDE5IDEzLjMgMjIuMiAyOC4xIDcuNSAzNC43IDYuNyA1OC4yIDIuNyA3NS45LTQuOCAyMS0xNi44IDM5LjUtMjEuOSA2MC40IDMuNS0uOSA3LjEtLjYgOS44IC4xbDcuMiAyLjljNy43IDQuNCAxMi44IDEzIDE0IDIxLjcgMiA2IC4xIDE0LjMgMCAyMC42IDYuNyAxNi4zIDcuMiAzNi4xIDYuNyA1My4zLS43IDI1LTEgNDAuMiAzLjIgNTEuNyAyLjkgNy45IDQuNyAxNi40IDEwLjQgMjIuOCAyLjYgMyA2LjEgNS41IDEwLjkgNi44IDE4LjUgNS4xIDQ0LTQuNyA1Ni42LTE4LjIgNy43LTguMiAxMi4zLTE5LjMgMTMuNC0zMy45IDEuMS0xMy42IDQuMi0yNy42IDYuMy00MS4xbDIuOS04LjhjMS43LTE0LjggMy40LTI5LjYgNS00NC40LS40LTkuMSAuOS0xNi4xIDMuOS0yMS41IDMuMS01LjcgNy42LTguOSAxMS44LTEwLjggMS44LS44IDMuOS0xLjIgNS42LTItMS42LTIuNC0zLjYtNC42LTUuMy02LjgtOC4yLTEwLjQtMTMuMy0yMi4zLTE5LjctMzMuOC04LjUtMTUuMi0yMy44LTQyLjItMzAuMS02Ny41LTQuMS0xNi40LTQuOS0zNC41IDYtNDcgOS44LTExLjIgMjYuOS0xNS41IDUxLjktMTMtMy40LTEwLTExLjQtMjcuNS0yNC44LTQ0LjctMTgtMjMtNDUuNy00NS45LTg1LjctNTMuMS03LjMtLjktMTUuMi0xLjUtMjMuNi0xLjd6bS0zMi4yIDI4MmMtOCAuNy0xNS41IDE4LjItMjEuNyAyMy4xLTYuMiA0LjktMTQuNSA3LjYtMzAgMTAuNy00LjUgLjktNy43IDEuOS05LjcgMi44IDIyLjMgMTUuOCA1OC4zIDMuMiA3Mi42LTE2LjggMS43LTIuNCAyLjEtNiAuNS0xMC4yLTEuNy00LjUtNi40LTEwLjEtMTEuOS05LjZ6TTExNy42IDQ5LjJjLTIxLjYgMS4yLTQyIDcuNS01Ni40IDIyLjgtMTQuNCAxNS4yLTI0LjIgNDAuNi0yMi4xIDgyLjUgLjQgOC41IDMuOCAzMCA5LjggNTYuNiA4LjkgMzkuOCAyMy43IDkwLjMgNDAuNiAxMjIuMiA2IDExLjEgMTcuNCAzMyAzMi44IDMyLjMgNC40LS4yIDEwLjEtMi44IDE3LTExIDEyLjYtMTQuOCAyNS4yLTI5LjUgMzguNS00My43LTE3LjktMTUuNC0yOC41LTQwLjMtMjQuOC02Ny4yIDMuNC0yNC4zIC41LTQ4LjIgMS4yLTcyLjUgLjQtMTEuOSAyLjMtMzguNyAxMi42LTY1LjggNS45LTE1LjUgMTQuNS0zMS4zIDI3LjQtNDQuMi0xNi40LTUuNC00Ny4xLTEzLjUtNzYuNi0xMS45ek00MDUuMSAzMjguOWMtMy44IDEuMS02LjcgMi4yLTguNyA1LjgtMS4zIDIuNC0yLjUgNi43LTIuMiAxNC4yIDQuOCAzLjkgMTQuMSAzLjMgMTkuOCAzLjIgMTMuOS0uMiAyOS45LTMuMSAzOS4zLTcuNSA3LjktMy43IDE0LjctOC4zIDE5LTEyLjItMzguMiA3LjctNTUuNCAyLjEtNjMuMi00LjgtMS4zIC40LTIuOSAuOS0zLjkgMS4yek0yMjUuMyAxNjQuOWMtMTUuNC01LjktMzUuNCAxLjgtNDguOSA5LjQtMy42IDItNi41IDQtNy45IDUuMiAuNCA4LjggMi44IDM2LjEtMS40IDY2LjMtNS4xIDM2LjYgMjEuNyA2Ni42IDUyLjUgNjYuNyA1LjEtMjAuOCAxNy0zOS4yIDIxLjgtNjAuMSAzLjUtMTUuMyA0LjUtMzYuNi0yLjctNjkuNy0yLjMtMTAuNS03LjQtMTUuNC0xMy40LTE3Ljd6TTM3MC4xIDQyLjJjLTE1LjItLjItMjguOCAxLjctMzkuMiAzLjggMjYgMTEuOCA0NS42IDI5LjcgNTkuNiA0Ny42IDE3LjQgMjIuMiAyNi4zIDQ0LjEgMjkgNTUgLjcgMi43IDEuMyA1LjcgLjUgOC40IC42IDE4LjktNCAzMS4zLTQuNiA0OS4yLS40IDEyLjkgMi45IDI4LjEgMy43IDQ0LjcgLjggMTUuNy0xIDMyLjUtMTEuMiA0OS41IC44IDEgMS42IDIuMSAyLjQgMy4xIDI2LjgtNDIuMiA0Ni04OC42IDU2LjMtMTI4LjUgNS41LTIxLjQgOC40LTQwLjcgOC43LTU2LjEgLjItMTUuMi0yLTI1LjQtNS44LTMwLjQtMjguMy0zNi4xLTY2LjgtNDUuOC05OS4zLTQ2LjJ6bTM1LjYgMTE5LjVjLTI1LjMtMy4yLTM3LjMgMS41LTQyLjggNy43LTYgNi44LTYuOCAxOC41LTIuOSAzNC4xIDUuNyAyMi42IDIwLjEgNDguNiAyOC43IDY0IDMuNiA2LjQgNi40IDEzLjEgMTAgMTkuNCA1LjUtMTEuNyA2LjYtMjMuNSA2LTM1LjUtLjctMTUtNC4yLTMwLjMtMy43LTQ1LjhsLjQtNy40YzEuMi0xNC4zIDQuMS0yNC42IDQuMi0zNi41eiJdfSxPRHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToid2VlYmx5IixpY29uOls1MTIsNTEyLFtdLCJmNWNjIiwiTTQyNS4xIDY1LjhjLTM5LjkgMC03My4zIDI1LjctODMuNyA2NC4zLTE4LjItNTguMS02NS41LTY0LjMtODUtNjQuMy0xOS44IDAtNjYuOCA2LjMtODUuMyA2NC4zLTEwLjQtMzguNi00My40LTY0LjMtODMuNy02NC4zLTQ5IDAtODcuNSAzMy45LTg3LjUgNzcuMiAwIDI5IDQuMiAzMy4zIDc3LjIgMjMzLjUgMjIuNCA2MC42IDY3LjggNjkuNCA5Mi43IDY5LjQgMzkuMiAwIDcwLTE5LjUgODUuOS01NCAxNS45IDM0LjggNDYuNyA1NC4zIDg1LjkgNTQuMyAyNSAwIDcwLjQtOS4xIDkyLjctNjkuNyA3Ni42LTIwOC42IDc3LjUtMjA1LjYgNzcuNS0yMjcuMiAuNi00OC4zLTM2LTgzLjUtODYuOS04My41em0yNi4zIDExNC44TDM4NS45IDM1Ny4xYy03LjkgMjEuNS0yMS4yIDM3LjItNDYuMiAzNy4yLTIzLjQgMC0zNy40LTEyLjQtNDQtMzMuOWwtMzkuMy0xMTcuNC0xIDAtMzkuMyAxMTcuNGMtNyAyMS41LTIwLjkgMzMuNi00NCAzMy42LTI1IDAtMzguMy0xNS43LTQ2LjItMzcuMkw2MC45IDE4MS42Yy01LjQtMTQuOC03LjktMjMuOS03LjktMzQuNSAwLTE2LjMgMTUuOC0yOS40IDM4LjMtMjkuNCAxOC43IDAgMzIgMTEuOCAzNi4xIDI5LjFsNDQgMTM5LjggMSAwIDQ0LjctMTM2LjhjNi0xOS43IDE2LjUtMzIuMSAzOS0zMi4xczMyLjkgMTIuMSAzOSAzMi4xbDQ0LjcgMTM2LjggMSAwIDQ0LTEzOS44YzQuMS0xNy4yIDE3LjQtMjkuMSAzNi4xLTI5LjEgMjIuMiAwIDM4LjMgMTMuMyAzOC4zIDM1LjctLjMgNy45LTQuMSAxNi03LjYgMjcuMnoiXX0sRkR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImRvY2tlciIsaWNvbjpbNjQwLDUxMixbXSwiZjM5NSIsIk0zNDkuOSAyMzYuM2wtNjYuMSAwIDAtNTkuNCA2Ni4xIDAgMCA1OS40em0wLTIwNC4zbC02Ni4xIDAgMCA2MC43IDY2LjEgMCAwLTYwLjd6bTc4LjIgMTQ0LjhsLTY2LjEgMCAwIDU5LjQgNjYuMSAwIDAtNTkuNHpNMjcxLjggMTA0LjdsLTY2LjEgMCAwIDYwLjEgNjYuMSAwIDAtNjAuMXptNzguMSAwbC02Ni4xIDAgMCA2MC4xIDY2LjEgMCAwLTYwLjF6bTI3Ni44IDEwMGMtMTQuNC05LjctNDcuNi0xMy4yLTczLjEtOC40LTMuMy0yNC0xNi43LTQ0LjktNDEuMS02My43bC0xNC05LjMtOS4zIDE0Yy0xOC40IDI3LjgtMjMuNCA3My42LTMuNyAxMDMuOC04LjcgNC43LTI1LjggMTEuMS00OC40IDEwLjdsLTQzNC43IDBjLTguNyA1MC44IDUuOCAxMTYuOCA0NCAxNjIuMSAzNy4xIDQzLjkgOTIuNyA2Ni4yIDE2NS40IDY2LjIgMTU3LjQgMCAyNzMuOS03Mi41IDMyOC40LTIwNC4yIDIxLjQgLjQgNjcuNiAuMSA5MS4zLTQ1LjIgMS41LTIuNSA2LjYtMTMuMiA4LjUtMTcuMWwtMTMuMy04Ljl6TTExNS42IDE3Ni44bC02NiAwIDAgNTkuNCA2Ni4xIDAgMC01OS40LS4xIDB6bTc4LjEgMGwtNjYuMSAwIDAgNTkuNCA2Ni4xIDAgMC01OS40em03OC4xIDBsLTY2LjEgMCAwIDU5LjQgNjYuMSAwIDAtNTkuNHptLTc4LjEtNzIuMWwtNjYuMSAwIDAgNjAuMSA2Ni4xIDAgMC02MC4xeiJdfSxCRHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToibWFnZW50byIsaWNvbjpbNDQ4LDUxMixbXSwiZjNjNCIsIk00NDUuOSAxMjcuOWwwIDI1Ni4xLTYzLjQgMzYuNSAwLTI1NS44LTE1OC41LTkxLjYtMTU4LjYgOTEuNiAuNCAyNTUuOS02My4zLTM2LjYgMC0yNTUuOSAyMjEuOS0xMjguMSAyMjEuNSAxMjcuOXpNMjU1LjggNDIwLjVsLTMxLjYgMTguNC0zMS44LTE4LjIgMC0yNTYtNjMuMyAzNi42IC4xIDI1NS45IDk0LjkgNTQuOSA5NS4xLTU0LjkgMC0yNTYtNjMuNC0zNi42IDAgMjU1Ljl6Il19LEhEdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ0b3ItYnJvd3NlciIsaWNvbjpbNTEyLDUxMixbXSwiZTgzOCIsIk0yNTYuNSA0NjUuNGwwLTMxYzk4LjMtLjMgMTc3LjktODAgMTc3LjktMTc4LjRTMzU0LjggNzcuOSAyNTYuNSA3Ny42bDAtMzFDMzcyIDQ2LjggNDY1LjQgMTQwLjUgNDY1LjQgMjU2UzM3MiA0NjUuMiAyNTYuNSA0NjUuNHptMC0xMDguNmM1NS40LS4zIDEwMC4zLTQ1LjMgMTAwLjMtMTAwLjhTMzEyIDE1NS41IDI1Ni41IDE1NS4ybDAtMzFjNzIuNiAuMyAxMzEuNCA1OS4yIDEzMS40IDEzMS44UzMyOS4xIDM4Ny42IDI1Ni41IDM4Ny44bDAtMzF6bTAtMTU1LjFjMjkuNyAuMyA1My44IDI0LjUgNTMuOCA1NC4zcy0yNCA1NC01My44IDU0LjNsMC0xMDguNnpNMCAyNTZhMjU2IDI1NiAwIDEgMCA1MTIgMCAyNTYgMjU2IDAgMSAwIC01MTIgMHoiXX0scUR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImdpdC1hbHQiLGljb246WzQ0OCw1MTIsW10sImY4NDEiLCJNNDM5LjYgMjM2LjFMMjQ0IDQwLjVDMjM4LjYgMzUgMjMxLjIgMzIgMjIzLjYgMzJzLTE1IDMtMjAuNCA4LjRsLTQwLjcgNDAuNiA1MS41IDUxLjVjMjcuMS05LjEgNTIuNyAxNi44IDQzLjQgNDMuN2w0OS43IDQ5LjdjMzQuMi0xMS44IDYxLjIgMzEgMzUuNSA1Ni43LTI2LjUgMjYuNS03MC4yLTIuOS01Ni0zNy4zbC00Ni4zLTQ2LjMgMCAxMjEuOWMyNS4zIDEyLjUgMjIuMyA0MS44IDkuMSA1NS02LjQgNi40LTE1LjIgMTAuMS0yNC4zIDEwLjFzLTE3LjgtMy42LTI0LjMtMTAuMWMtMTcuNi0xNy42LTExLjEtNDYuOSAxMS4yLTU2bDAtMTIzYy0yMC44LTguNS0yNC42LTMwLjctMTguNi00NUwxNDIuNiAxMDEgOC41IDIzNS4xQzMgMjQwLjYgMCAyNDcuOSAwIDI1NS41czMgMTUgOC41IDIwLjRMMjA0LjEgNDcxLjZjNS40IDUuNCAxMi43IDguNCAyMC40IDguNHMxNS0zIDIwLjQtOC40TDQzOS42IDI3Ni45YzUuNC01LjQgOC40LTEyLjggOC40LTIwLjRzLTMtMTUtOC40LTIwLjR6Il19LGpEdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJmaXJlZm94LWJyb3dzZXIiLGljb246WzUxMiw1MTIsW10sImUwMDciLCJNMTMwLjIgMTI3LjVsMCAwem0zNTEuNCA0NS40Yy0xMC42LTI1LjUtMzIuMS01My00OC45LTYxLjcgMTMuNyAyNi45IDIxLjcgNTMuOSAyNC43IDc0IDAgLjEgMCAuMyAuMSAuNC0yNy42LTY4LjgtNzQuNC05Ni41LTExMi42LTE1Ni44LTE1LTIzLjctMTAuOS0yNS4yLTEzLjEtMjQuN2wtLjEgLjFjLTQ2LjcgMjYtNzUuMyA3OC40LTgyLjYgMTIyLjctMTYuNiAuOS0zMi45IDUtNDcuOSAxMi4xLTEuNCAuNi0yLjUgMS43LTMuMSAzcy0uOSAyLjgtLjYgNC4zYy4yIC44IC42IDEuNiAxLjEgMi4zczEuMiAxLjMgMS45IDEuNyAxLjYgLjcgMi40IC44IDEuNyAwIDIuNS0uM2wuNS0uMmMxNS41LTcuMyAzMi40LTExLjIgNDkuNS0xMS4zIDYyLjgtLjYgOTcuMiA0NCAxMDcuNiA2Mi4zLTEzLTkuMi0zNi40LTE4LjItNTguOC0xNC4zIDg3LjcgNDMuOSA2NC4yIDE5NC41LTU3LjQgMTg5LjItNTkuNS0yLjYtOTcuMS01MS0xMDAuNS05MC44IDAgMCAxMS4yLTQxLjkgODAuNi00MS45IDcuNSAwIDI4LjktMjAuOSAyOS4zLTI3LS4xLTItNDIuNS0xOC45LTU5LjEtMzUuMi04LjgtOC43LTEzLjEtMTIuOS0xNi44LTE2LjEtMi0xLjctNC4xLTMuMy02LjMtNC44LTUuNi0xOS41LTUuOC00MC0uNy01OS42LTI1LjEgMTEuNC00NC42IDI5LjQtNTguNyA0NS40bC0uMSAwYy05LjctMTIuMi05LTUyLjYtOC40LTYxLjEtLjEtLjUtNy4yIDMuNy04LjIgNC4zLTguNiA2LjEtMTYuNSAxMi45LTIzLjggMjAuNC0xNi4zIDE2LjYtNDQuMSA1MC4yLTU1LjUgMTAxLjItNC41IDIwLjQtNi44IDQ0LjQtNi44IDUyLjMgMCAxMzQuNyAxMDkuMiAyNDMuOSAyNDMuOSAyNDMuOSAxMjAuNiAwIDIyMy04Ny4yIDI0MC40LTIwMi42IDExLjYtNzYuNy0xNC43LTEzMS4xLTE0LjctMTMyeiJdfSxWRHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiY2xvdWRzbWl0aCIsaWNvbjpbNTEyLDUxMixbXSwiZjM4NCIsIk01MTIgMjI3LjZMNTEyIDI4NC41IDI4NC40IDUxMiAyMjcuNiA1MTIgMCAyODQuNCAwIDIyNy42IDIyNy42IDAgMjg0LjUgMCA1MTIgMjI3LjZ6bS0yNTYgMTYyYzE3LjggLjUgMzUuNi0yLjYgNTIuMi05LjFzMzEuOC0xNi4yIDQ0LjYtMjguNyAyMy0yNy4zIDI5LjktNDMuOCAxMC41LTM0LjEgMTAuNS01Mi0zLjYtMzUuNS0xMC41LTUyLTE3LjEtMzEuMy0yOS45LTQzLjgtMjgtMjIuMi00NC42LTI4LjctMzQuNC05LjYtNTIuMi05LjFjLTE3LjgtLjUtMzUuNiAyLjYtNTIuMiA5LjFzLTMxLjggMTYuMy00NC42IDI4LjctMjMgMjcuMy0yOS45IDQzLjgtMTAuNSAzNC4xLTEwLjUgNTIgMy42IDM1LjUgMTAuNSA1MiAxNy4xIDMxLjMgMjkuOSA0My44IDI4IDIyLjIgNDQuNiAyOC43IDM0LjQgOS42IDUyLjIgOS4xeiJdfSxVRHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToid2l6YXJkcy1vZi10aGUtY29hc3QiLGljb246WzY0MCw1MTIsW10sImY3MzAiLCJNMjE5LjIgMzQ1LjdjLTEuOSAxLjQtMTEuMSA4LjQtLjMgMjMuNiA0LjYgNi40IDE0LjEgMTIuOCAyMS43IDYuNiA2LjUtNC45IDcuNC0xMi45IC4zLTIzLTUuNS03LjgtMTQuMy0xMi45LTIxLjctNy4xem0zMzYuOCA3NS45Yy0uMyAxLjctLjYgMS43IC44IDAgMi4xLTQuMiA0LjItMTAuMiA1LTE5LjkgMy4xLTM4LjUtNDAuMy03MS41LTEwMS4zLTc4LTU0LjctNi0xMjQuNCA5LjItMTg4LjggNjAuNWwtLjMgMS42YzIuNiA1IDUgMTAuNyAzLjQgMjEuMmwuOCAuM2M2My45LTU4LjQgMTMxLjItNzcuMiAxODQuNC03My44IDU4LjQgMy43IDEwMCAzNCAxMDAgNjguMSAwIDEwLTIuNiAxNS43LTMuOSAyMC4yek0zOTIuMyAyNDAuNGMuOCA3LjEgNC4yIDEwLjIgOS4yIDEwLjUgNS41IC4zIDkuNC0yLjYgMTAuNS02LjYgLjgtMy40IDIuMS0yOS44IDIuMS0yOS44UzQwMi44IDIyMSAzOTkuMSAyMjVjLTMuNyAzLjctNy4zIDguNC02LjggMTUuNXptLTUwLTE1MS4xYy0yMDQuNSAwLTMyOS4yIDEzNy41LTM0MS41IDE1MS45LTEgLjUtMS4zIC44IC44IDEuMyA2MC41IDE2LjUgMTU1LjggODEuMiAxOTYuMSAyMDIuMmwxIC4zYzU1LjItNjkuOSAxNDAuOS0xMjguMSAyMzctMTI4LjEgODAuOSAwIDEzMC4yIDQyLjIgMTMwLjIgODAuNCAwIDE4LjMtNi42IDMzLjUtMjIuMyA0Ni4zIDAgMS0uMiAuOCAuOCAuOCAxNC43LTEwLjcgMjcuNS0yOC44IDI3LjUtNDguMiAwLTIyLjgtMTIuMS0zOC4yLTEyLjEtMzguMiA3LjEgNy4xIDEwLjcgMTYuMiAxMC43IDE2LjIgNS44LTQwLjkgMjctNjIuMyAyNy02Mi4zLTIuNC05LjctNi44LTE3LjgtNi44LTE3LjggNy42IDguMSAxNC40IDI3LjUgMTQuNCA0MS40IDAgMTAuNS0zLjQgMjIuOC0xMi42IDMxLjlsLjMgLjVjOC4xLTUgMTYuNS0xNi44IDE2LjUtMzggMC0xNS43LTQuNy0yNS45LTQuNy0yNS45IDUuOC01LjIgMTEuMy05LjIgMTYtMTEuOCAuOCAzLjQgMi4xIDkuNyAyLjQgMTQuOSAwIDEgLjggMS44IDEgMCAuOC01LjgtLjMtMTYuMi0uMy0xNi41IDYtMy4xIDkuNy00LjUgOS43LTQuNS0xNS43LTExMC4zLTE0NC0xOTYuOS0yOTEuMi0xOTYuOXpNMjQzIDM3OC45Yy0xMS4xIDktMjQuMiA0LjEtMzAuNi00LjItNy40LTkuNi02LjgtMjQuMSA0LjItMzIuNSAxNC44LTExLjQgMjcuMS0uNSAzMS4yIDUuNSAuMyAuNCAxMi4xIDE2LjYtNC43IDMxLjJ6bTIuMS0xMzYuNGw5LjQtMTcuOCAxMS44IDcxLTEyLjYgNi0yNC42LTI4LjggMTQuMS0yNi43IDMuNyA0LjQtMS44LTguMXptMTguNiAxMTcuNmwtLjMtLjNjMi00LjEtMi41LTYuNi0xNy41LTMxLjctMS4zLTIuNC0zLjEtMi45LTQuNC0yLjZsLS4zLS41YzcuOS01LjggMTUuNC0xMC4yIDI1LjQtMTUuN2wuNSAuM2MxLjMgMS44IDIuMSAyLjkgMy40IDQuN2wtLjMgLjVjLTEtLjMtMi40LS44LTUuMiAuMy0yLjEgLjgtNy45IDMuNy0xMi4zIDcuNmwwIDEuM2MxLjYgMi40IDMuOSA2LjYgNS44IDkuN2wuMyAwYzEwLTYuMyA3LjYtNC41IDExLjUtNy45bC4zIDBjLjUgMS44IC41IDEuOCAxLjggNS41bC0uMyAuM2MtMy4xIC42LTQuNyAuMy0xMS41IDUuNWwwIC4zYzkuNSAxNyAxMSAxNi44IDEyLjYgMTZsLjMgLjNjLTIuMyAxLjYtNi4zIDQuMi05LjcgNi42ek0zMTkgMzI3LjZjLTMuMSAxLjYtNiAyLjktMTAgNWwtLjMtLjNjMS4zLTIuNiAxLjItMi43LTExLjgtMzIuNWwtLjMtLjNjLS4yIDAtOC45IDMuNy0xMCA3LjNsLS41IDAtMS01LjggLjMtLjVjNy4zLTQuNiAyNS41LTExLjYgMjcuOC0xMi42bC41IC4zIDMuMSA1LS4zIC41Yy0zLjUtMS44LTcuNCAuOC0xMi4zIDIuNmwwIC4zYzEyLjMgMzIgMTIuNyAzMC42IDE0LjcgMzAuNmwwIC4yem00NC44LTE2LjVjLTQuMiAxLTUuMiAxLjMtOS43IDIuOWwtLjMtLjMgLjUtNC41Yy0xLTMuNC0zLjEtMTEuNS0zLjctMTMuNmwtLjMtLjNjLTMuNCAuOC04LjkgMi42LTEyLjggMy45bC0uMyAuM2MuOCAyLjYgMy4xIDkuOSA0LjIgMTMuOSAuOCAyLjQgMS44IDIuOSAyLjkgMy4xbDAgLjVjLTMuNyAxLTcuMSAyLjYtMTAuMiAzLjlsLS4zLS4zYzEtMS4zIDEtMi45IC4zLTUtMS0zLjEtOC4xLTIzLjgtOS4yLTI3LjItLjUtMS44LTEuNi0zLjEtMi42LTMuMWwwLS41YzMuMS0xIDYtMi4xIDEwLjctMy40bC4zIC4zLS4zIDQuN2MxLjMgMy45IDIuNCA3LjYgMy4xIDkuN2wuMyAwYzMuOS0xLjMgOS40LTIuOSAxMi44LTMuOWwuMy0uMy0yLjYtOS40Yy0uNS0xLjgtMS0zLjQtMi42LTMuOWwwLS4zYzQuNC0xIDcuMy0xLjggMTAuNy0yLjRsLjMgLjNjLTEgMS4zLTEgMi45LS41IDQuNCAxLjYgNi4zIDQuNyAyMC40IDYuMyAyNi41IC41IDIuNiAxLjggMy40IDIuNiAzLjl6bTMyLjItNi44bC0uMyAuM2MtNC43IC41LTE0LjEgMi40LTIyLjUgNC4ybC0uMy0uMyAuOC00LjJjLTEuNi03LjktMy40LTE4LjYtNS0yNi4yLS4zLTEuOC0uOC0yLjktMi42LTMuN2wuOC0uNWM5LjItMS42IDIwLjItMi40IDI0LjktMi42bC4zIC4zYy41IDIuNCAuOCAzLjEgMS42IDUuNWwtLjMgLjNjLTEuMS0xLjEtMy4zLTMuMi0xNi4yLS44bC0uMyAuM2MuMyAxLjYgMSA2LjYgMS42IDkuOWwuMyAuM2M5LjUtMS43IDQuOC0uMSAxMC43LTIuNGwuMyAwYzAgMS42LS4zIDEuOC0uMyA1LjJsLS4zIDBjLTQuOC0xLTIuMi0uOS0xMC4yIDBsLS4zIC4zYy4zIDIuMSAxLjYgOS40IDIuMSAxMi42bC4zIC4zYzEuMiAuNCAxNC4yLS42IDE2LjItNC43bC4zIDBjLS41IDIuNC0xIDQuMi0xLjYgNnptMTAuNy00NC41Yy00LjUgMi40LTguMSAyLjktMTEgMi45LS4yIDAtMTEuNCAxLjEtMTcuNS0xMC02LjctMTAuOC0xLTI1LjIgNS41LTMxLjcgOC44LTguMSAyMy40LTEwLjEgMjguNS0xNyA4LTEwLjMtMTMtMjIuMy0yOS42LTUuOGwtMi42LTIuOSA1LjItMTYuMmMyNS42LTEuNiA0NS4yLTMgNTAgMTYuMiAuOCAzLjEgMCA5LjQtLjMgMTIuMSAwIDIuNi0xLjggMTguOC0yLjEgMjMtLjUgNC4yLS44IDE4LjMtLjggMjAuNyAuMyAyLjQgLjUgNC4yIDEuNiA1LjUgMS42IDEuOCA1LjggMS44IDUuOCAxLjhsLS44IDQuN2MtMTEuOC0xLjEtMTAuMy0uNi0yMC40LTEtMy4yLTUuMS0yLjItMy4zLTQuMi03LjkgMCAwLTQuMiAzLjktNy4zIDUuNXpNNDQzLjkgMjgxYy02LjQtMTAuNi0xOS44LTcuMi0yMS43IDUuNS0yLjYgMTcuMSAxNC4zIDE5LjggMjAuNyAxMC4ybC4zIC4zYy0uNSAxLjgtMS44IDYtMS44IDYuM2wtLjUgLjVjLTEwLjMgNi45LTI4LjUtMi41LTI1LjctMTguNiAxLjktMTAuOSAxNC40LTE4LjkgMjguOC05LjlsLjMgLjVjMCAxLjEtLjMgMy40LS4zIDUuM3ptNS44LTg3LjdsMC02LjZjLjcgMCAxOS42IDMuMyAyNy44IDcuM2wtMS42IDE3LjVzMTAuMi05LjQgMTUuNC0xMC43YzUuMi0xLjYgMTQuOSA3LjMgMTQuOSA3LjNsLTExLjMgMTEuM2MtMTIuMS02LjQtMTkuNi0uMS0yMC43IC44LTUuMyAzOC43LTguNiA0Mi4yIDQuNCA0Ni4xbC0uNSA0LjdjLTE3LjYtNC4zLTE4LjUtNC41LTM2LjktNy4zbC44LTQuN2M3LjMgMCA3LjUtNS4zIDcuNi02LjggMCAwIDUtNTMuMiA1LTU1LjMgMC0yLjktNS0zLjctNS0zLjd6bTExIDExNC40Yy04LjEtMi4xLTE0LjEtMTEtMTAuNy0yMC43IDMuMS05LjQgMTIuMy0xMi4zIDE4LjktMTAuMiA5LjIgMi42IDEyLjggMTEuOCAxMC43IDE5LjQtMi42IDguOS05LjQgMTMuOS0xOC45IDExLjV6bTQyLjIgOS43Yy0yLjQtLjUtNy4xLTIuNC04LjYtMi45bDAtLjMgMS42LTEuOGMuNi04LjIgLjYtNy4zIC4zLTcuNi00LjgtMS44LTYuNy0yLjQtNy4xLTIuNC0xLjMgMS44LTIuOSA0LjUtMy43IDUuNWwtLjggMy40IDAgLjNjLTEuMy0uMy0zLjktMS4zLTYtMS42bDAtLjMgMi42LTEuOGMzLjQtNC43IDEwLTE0LjEgMTMuOS0yMC4ybDAtMi4xIC41LS4zYzIuMSAuOCA1LjUgMi4xIDcuNiAyLjkgLjUgLjUgLjItMS45LTEgMjUuMS0uMiAxLjggMCAyLjYgLjggMy45em0tNC43LTg5LjhjMTEuMy0xOC4zIDMwLjgtMTYuMiAzNC0zLjRsNy42LTI2LjJjMi4zLTYuMi0yLjgtOS45LTQuNS0xMS4zbDEuOC0zLjdjMTIuMiAxMC40IDE2LjQgMTQgMjIuNSAyMC40LTI1LjkgNzMuMS0zMC44IDgwLjgtMjQuNiA4NC4zbC0xLjggNC40Yy02LjQtMy4zLTguOS00LjQtMTcuOC04LjZsMi4xLTYuOGMtLjMtLjMtMy45IDMuOS05LjcgMy43LTE5LjEtMS4zLTIyLjktMzEuNy05LjctNTIuOXptMjkuMyA3OS4zYzAtNS43LTYuMy03LjktNy45LTUuMi0xLjMgMi4xIDEgNSAyLjkgOC40IDEuNiAyLjYgMi42IDYuMyAxIDkuNC0yLjYgNi4zLTEyLjQgNS4zLTE1LjQtLjggMC0uNy0uMyAuMSAxLjgtNC43bC44LS4zYy0uNiA1LjcgNi4xIDkuNiA4LjQgNSAxLTIuMS0uNS01LjUtMi4xLTguNC0xLjYtMi42LTMuNy02LjMtMS44LTkuNyAyLjctNS4xIDExLjMtNC41IDE0LjcgMi40bDAgLjUtMi40IDMuNHptMjEuMiAxMy40Yy0yLTMuMy0uOS0yLjEtNC41LTQuN2wtLjMgMGMtMi40IDQuMi01LjggMTAuNS04LjYgMTYuMi0xLjMgMi40LTEgMy40LS44IDMuOWwtLjMgLjMtNS44LTQuNCAuMy0uMyAyLjEtMS4zYzMuMS01LjggNi42LTEyLjEgOS4yLTE3bDAtLjNjLTIuNi0yLTEuMi0xLjUtNi0xLjhsMC0uMyAzLjEtMy40IC4zIDBjMy43IDIuNCAxMCA2LjggMTIuMyA4LjlsLjMgLjMtMS4zIDMuOXpNNTc1LjggMjc2bC0yLjktMi45Yy44LTIuNCAxLjgtNSAyLjEtNy42IC43LTkuNy0xMS41LTExLjgtMTEuNS01IDAgNSA3LjkgMTkuNCA3LjkgMjcuOCAwIDEwLjItNS44IDE1LjctMTMuOSAxNi41LTguNCAuOC0yMC4yLTEwLjUtMjAuMi0xMC41bDUtMTQuNCAyLjkgMi4xYy0zIDE3LjggMTcuNyAyMC40IDEzLjMgNS4yLTEuMS00LTE4LjctMzQuMiAyLjEtMzguMiAxMy42LTIuNCAyMyAxNi41IDIzIDE2LjVMNTc1LjggMjc2em0zNS42LTEwLjJjLTExLTMwLjQtNjAuNS0xMjcuNS0xOTItMTI5LjYtNTMuNC0xLTk0LjMgMTUuNC0xMzIuOCAzOGw4NS42LTkuMi05MS40IDIwLjcgMjUuMSAxOS42LTMuOS0xNi41YzcuNS0xLjcgMzkuMS04LjUgNjYuOC04LjlsLTIyLjMgODAuNGMxMy42LS43IDE5LTkgMTkuNi0yMi44bDUtMSAuMyAyNi43Yy0yMi41IDMuMi0zNy4zIDYuNy00OS41IDkuOWwxMy4xLTQzLjItNjEuNS0zNi43IDIuNCA4LjEgMTAuMiA1YzYuMyAxOC42IDE5LjQgNTYuNiAyMC40IDU4LjcgMiA0LjMgMy4yIDUuOCAxMiA0LjVsMS4xIDVjLTE2LjEgNC45LTIzLjcgNy42LTM5IDE0LjRsLTIuNC00LjdjNC40LTIuOSA4LjctMy45IDUuNS0xMi44LTIzLjctNjIuNS0yMS41LTU4LjEtMjIuOC01OS40bDIuNC00LjQgMzMuNSA2Ny4zYy0zLjgtMTEuOSAxLjcgMS43LTMzLTc4LjhsLTQxLjkgODguNSA0LjctMTMuOS0zNS45LTQyLjIgMjcuOCA5My41LTExLjggOC40Yy0xMTEuOS0xMDEuNy0xMDUuOC05OC40LTExMy43LTk4LjctNS41LS4zLTEzLjYgNS41LTEzLjYgNS41bC01LTZjMzAuNi0yMy41IDMxLjYtMjQuMyA1OC40LTQyLjdsNC4yIDcuMXMtNS44IDQuMi03LjkgNy4xYy01LjkgOS4zIDEuNyAxMy4zIDYxLjggNzUuN2wtMTguOC01OC45IDM5LjgtMTAuMiAyNS43IDMwLjYgNC40LTEyLjMtNS0yNC42IDEzLjEtMy40IC41IDMuMSAzLjctMTAuNS05NC4zIDI5LjMgMTEuMy01LTEzLjYtNDIuNCAxNy4zLTkuMiAzMC4xIDM2LjEgMjguNS0xMy4xYy0xLjQtNy41LTIuNS0xNC41LTQuNy0xOS42bDE3LjMgMTMuOSA0LjctMi4xLTU5LjItNDIuNyAyMy4xIDExLjVjMTktNi4xIDI1LjItNy41IDMyLjItOS43bDIuNiAxMWMtMTIuNiAxMi42IDEuNCAxNi44IDYuNSAxOS40bC0xMy42LTYxIDEyIDI4LjNjNC4yLTEuMyA3LjMtMi4xIDcuMy0yLjFsMi42IDguNnMtMy4xIDEtNi4zIDIuMWw4LjkgMjEgMzMuOC02NS43LTIwLjcgNjFjNDIuNC0yNC4xIDgxLjQtMzYuNyAxMzItMzUuOSA2NyAxIDE2Ny4zIDQwLjggMTk5LjggMTM5LjggLjggMi4xIDAgMi42LS44IC4zem0tNDA4LTExMy40czEuOC0uNSA0LjItMS4zbDkuNCA3LjZjLS40IDAtMy40LS4zLTExLjMgMi40bC0yLjQtOC42em0xNDMuOCAzOC41Yy0xLjYtLjYtMjYuNS00LjgtMzMuMyAyMC43bDIxLjcgMTcgMTEuNS0zNy43ek0zMTguNCA2Ny4xYy01OC40IDAtMTA2LjEgMTItMTE1IDE0LjRsMCAuOGM4LjQgMi4xIDE0LjQgNC4yIDIxLjIgMTEuOGwxLjYgLjNjNi42LTEuOCA0OS0xMy45IDExMC4yLTEzLjkgMTgwLjIgMCAzMDEuNyAxMTYuOCAzMDEuNyAyMjMuNGwwIDEwYzAgMS4zIC44IDIuNiAxLjEgLjUgLjUtMi4xIC44LTguNiAuOC0xOS42IC4zLTgzLjgtOTYuNi0yMjcuNi0zMjEuNi0yMjcuNnpNNTI5LjUgMjM2LjhjMS4zLTUuOCAwLTEyLjMtNy4zLTEzLjEtOS42LTEuMS0xNi4xIDIzLjgtMTcgMzMuNS0uOCA1LjUtMS4zIDE0LjkgNiAxNC45IDQuNyAwIDkuNy0uOSAxOC4zLTM1LjR6TTQ2OCAyNzkuN2MtMi42LS44LTkuNC0uOC0xMi42IDEwLjUtMS44IDYuOCAuNSAxMy40IDYgMTQuNyAzLjcgMS4xIDguOSAuNSAxMS44LTEwLjcgMi42LTkuOS0xLjgtMTMuNi01LjItMTQuNHptMjMgMjFjMS44IC41IDMuMSAxIDUuOCAxLjggMC0xLjggLjUtOC40IC44LTEyLjEtMSAxLjMtNS41IDguMS02LjYgMTBsMCAuM3oiXX0sV0R0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImNyZWF0aXZlLWNvbW1vbnMtbmQiLGljb246WzUxMiw1MTIsW10sImY0ZWIiLCJNMjU1LjYgOEMzOTcuNCA4IDUwNCAxMTguMSA1MDQgMjU2IDUwNCA0MDMuMSAzODUuNSA1MDQgMjU1LjYgNTA0IDEyMS42IDUwNCA4IDM5NC41IDggMjU2IDggMTIzLjEgMTEyLjcgOCAyNTUuNiA4em0uOCA0NC43Yy0xMTguMiAwLTIwMy43IDk3LjktMjAzLjcgMjAzLjMgMCAxMDkuOCA5MS4yIDIwMi44IDIwMy43IDIwMi44IDEwMy4yIDAgMjAyLjgtODEuMSAyMDIuOC0yMDIuOCAuMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zem05NCAxNDQuM2wwIDQyLjUtMTgwLjMgMCAwLTQyLjUgMTgwLjMgMHptMCA3OS44bDAgNDIuNS0xODAuMyAwIDAtNDIuNSAxODAuMyAweiJdfSxHRHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToidXNwcyIsaWNvbjpbNTEyLDUxMixbXSwiZjdlMSIsIk00MjguMyAyNDEuN2MyNS44LTQxLjMgMTUuMi00OC44LTExLjctNDguOGwtMjcgMGMtLjEgMC0xLjUtMS40LTEwLjkgOC0xMS4yIDUuNi0zNy45IDYuMy0zNy45IDguNyAwIDQuNSA3MC4zLTMuMSA4OC4xIDAgOS41IDEuNS0xLjUgMjAuNC00LjQgMzItLjUgNC41IDIuNCAyLjMgMy44IC4xek0zMTYuMiAyNjQuM2M2NC0yMS4zIDk3LjMtMjMuOSAxMDItMjYuMiA0LjQtMi45LTQuNC02LjYtMjYuMi01LjgtNTEuNyAyLjItMTM3LjYgMzcuMS0xNzIuNiA1My45bC0zMC43LTkzLjMgMTk2LjYgMGMtMi43LTI4LjItMTUyLjktMjIuNi0zMzcuOS0yMi42TC01IDQxNS44YzE5Ni40LTk3LjMgMjU4LjktMTMwLjMgMzIxLjItMTUxLjV6TTYyLjcgOTZjMjUzLjMgNTMuNyAzMzAgNjUuNyAzMzIuMSA4NS4yIDM2LjQgMCA0NS45IDAgNTIuNCA2LjYgMjEuMSAxOS43LTE0LjYgNjcuNy0xNC42IDY3LjctNC40IDIuOS00MDYuNCAxNjAuMi00MDYuNCAxNjAuMkw0NDkuMyA0MTUuNyA1MTcgOTYgNjIuNyA5NnoiXX0sS0R0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNxdWFyZS1sZXR0ZXJib3hkIixpY29uOls0NDgsNTEyLFtdLCJlNjJlIiwiTTM4NCAzMmMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMzIwIDB6TTEwNS4xIDE4N0M2Ni40IDE4NyAzNSAyMTguMyAzNSAyNTdzMzEuNCA3MCA3MC4xIDcwYzI0LjggMCA0Ni41LTEyLjggNTktMzIuMmwuNS0uNy0uNC0uNmMtNi41LTEwLjYtMTAuMi0yMy4xLTEwLjItMzYuNSAwLTEzLjYgMy45LTI2LjMgMTAuNi0zNy4xLTEyLjQtMTkuOC0zNC40LTMyLjktNTkuNS0zMi45ek0yMjQgMTg3Yy0yNC44IDAtNDYuNSAxMi44LTU5IDMyLjJsLS41IC43IC40IC42YzYuNSAxMC42IDEwLjIgMjMuMSAxMC4yIDM2LjUgMCAxMy42LTMuOSAyNi4zLTEwLjYgMzcuMSAxMi40IDE5LjcgMzQuNCAzMi45IDU5LjUgMzIuOSAyNC44IDAgNDYuNS0xMi44IDU5LTMyLjJsLjUtLjctLjQtLjZjLTYuNS0xMC42LTEwLjItMjMuMS0xMC4yLTM2LjUgMC0xMy42IDMuOS0yNi4zIDEwLjYtMzcuMS0xMi40LTE5LjctMzQuNC0zMi45LTU5LjUtMzIuOXptMTE4LjkgMGMtMjQuOCAwLTQ2LjUgMTIuOC01OSAzMi4ybC0uNSAuNyAuNCAuNmM2LjUgMTAuNiAxMC4yIDIzLjEgMTAuMiAzNi41IDAgMTMuNi0zLjkgMjYuMy0xMC42IDM3LjEgMTIuNCAxOS44IDM0LjQgMzIuOSA1OS41IDMyLjkgMzguNyAwIDcwLjEtMzEuMyA3MC4xLTcwcy0zMS40LTcwLTcwLjEtNzB6Il19LFlEdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJtYW5kYWxvcmlhbiIsaWNvbjpbMzg0LDUxMixbXSwiZjUwZiIsIk0yMDAuNiA1MTEuOWMtMS0zLjMtMS43LTE1LjgtMS40LTI0LjYgLjYtMTUuOSAxLTI0LjcgMS40LTI4LjggLjYtNi4yIDIuOS0yMC43IDMuMy0yMS40IC42LTEgLjQtMjcuOS0uMi0zMy4xLS4zLTIuNi0uNi0xMS45LS43LTIwLjctLjEtMTYuNS0uNS0yMC4xLTIuNy0yNC44LTEuMS0yLjMtMS4yLTMuOC0xLTExLjQgLjItNC4yIC4xLTguNS0uMy0xMi43LTItMTMtMy41LTI3LjctMy4yLTMzLjlzLjQtNy4xIDIuMS05LjdjMy4xLTQuNyA2LjUtMTQgOC42LTIzLjMgMi4zLTkuOSAzLjktMTcuMiA0LjYtMjAuNyAxLjEtNS4xIDIuNi0xMC4xIDQuNC0xNS4xIDIuMy02LjIgMi41LTE1LjQgLjQtMTUuNC0uMyAwLTEuNCAxLjItMi40IDIuN3MtNC44IDQuOC04LjMgNy40Yy04LjQgNi4xLTExLjcgOS40LTEyLjcgMTIuNnMtMSA3LjItLjIgNy44Yy4zIC4yIDEuMyAyLjQgMi4xIDQuOSAxLjYgNSAxLjkgMTAuMyAuNyAxNS40LS40IDEuOC0xIDUuNS0xLjUgOC4ycy0xIDYuNS0xLjMgOC4yYy0uMiAxLjUtLjcgMy0xLjUgNC4zLTEgMS0xLjEgLjktMi4xLS41LS43LTEuNS0xLjItMy4xLTEuNC00LjctLjItMS43LTEuNi03LjEtMy4xLTExLjktMy4zLTEwLjktMy41LTE2LjItMS0yMSAuOC0xLjQgMS40LTMgMS43LTQuNiAwLTIuNC0yLjItNS4zLTcuNC05LjktNy02LjItOC42LTcuOS0xMC4yLTExLjMtMS43LTMuNi0zLjEtNC4xLTQuNS0xLjUtMS44IDMtMi42IDkuMS0zIDIybC0uMyAxMi4yIDIgMi4yYzMuMiAzLjcgMTIuMSAxNi41IDEzLjggMTkuOCAzLjQgNi43IDQuMyAxMS43IDQuNCAyMy42czEgMjIuOCAyIDI0LjdjLjQgLjcgLjUgMS40IC4zIDEuNXMuNCAyLjEgMS4zIDQuM2MxIDIuOSAxLjcgNS45IDIuMSA5IC40IDMuNSAuOSA3IDEuNyAxMC40IDIuMiA5LjYgMi44IDE0LjEgMi40IDIwLjEtLjIgMy4zLS41IDExLjEtLjcgMTcuMy0xLjMgNDEuOC0xLjggNTgtMiA2MS4yLS4xIDItLjQgMTEuNS0uNiAyMS4xLS40IDE2LjMtMS4zIDI3LjQtMi40IDI4LjYtLjYgLjctOC4xLTQuOS0xMi41LTkuNS0zLjgtMy45LTQtNC44LTIuOC05LjkgLjctMyAyLjMtMTguMyAzLjMtMzIuNiAuNC00LjggLjgtMTAuNSAxLTEyLjcgLjgtOS40IDEuNy0yMC4zIDIuNi0zNC44IC42LTguNSAxLjMtMTYuNCAxLjctMTcuN3MuOS05LjkgMS4xLTE5LjFsLjQtMTYuOC0yLjMtNC4zYy0xLjctMy4zLTQuOS02LjktMTMuMi0xNS4zLTYtNi4xLTExLjgtMTIuMy0xMi45LTEzLjhsLTItMi44IC44LTEwLjljMS4xLTE1LjcgMS4xLTQ4LjYgMC01OS4xbC0uOS04LjctMy4zLTQuNWMtNS45LTguMS01LjgtNy43LTYuMi0zMy4zLS4xLTYuMS0uNC0xMS41LS42LTEyLjEtLjgtMS45LTMtMi43LTguNS0zLTguOS0uNi0xMS0xLjktMjMuOC0xNC42LTYuMi02LTEyLjMtMTItMTMuOC0xMy4yLTIuOC0yLjQtMi44LTItLjYtOS42bDEuNC00LjYtMS43LTNjLS44LTEuNC0xLjYtMi44LTIuNi00LjEtMS4zLTEuNS01LjUtMTAuOS02LTEzLjUtLjItLjctLjItMS40LS4xLTIuMXMuNS0xLjMgLjktMS44YzIuMi0yLjkgMy40LTUuNyA0LjUtMTAuNyAyLjMtMTEuMiA3LjctMjYuMSAxMC42LTI5LjIgMy4yLTMuNSA3LjctMSA5LjQgNSAxLjMgNC44IDEuNCA5LjggLjEgMTguNi0uNSAzLjctLjkgNy40LTEgMTEuMSAwIDQgLjIgNC43IDIuMyA3LjQgMy4zIDQuNCA3LjcgNy40IDE1LjIgMTAuNSAxLjcgLjcgMy4zIDEuNyA0LjcgMi44IDExLjIgMTAuNyAxOC42IDE2LjIgMjIuOSAxNi45IDUuMiAuOCA4IDQuNSAxMCAxMy40IDEuMyA1LjcgNCAxMS4xIDUuNSAxMS4xIDEuMi0uMiAyLjMtLjcgMy4zLTEuNCAyLTEuMiAyLjItMS43IDIuMi00LjItLjMtNi0uOS0xMS45LTItMTcuOC0uNC0xLjctLjgtNC4xLS45LTUuNHMtLjYtMy44LTEtNS43Yy0yLjYtMTEuMi0zLjYtMTUuNS00LjEtMTYtMS42LTItNC4xLTEwLjItNC45LTE1LjktMS42LTExLjEtNC0xNC4yLTEyLjktMTcuNC00LjktMS44LTkuNC00LjUtMTMuMy03LjktMS4yLTEtNC0zLjItNi40LTUuMXMtNC40LTMuNS00LjYtMy44Yy0uOC0uNy0xLjctMS40LTIuNy0yLTYuMi00LjItOC44LTctMTEuMy0xMmwtMi40LTVjLS4xLTguNy0uMy0xNy4zLS40LTI2bDYuOS02LjZjNC0zLjggOC41LTcuNCAxMC42LTguNCAzLjMtMS43IDQuNC0xLjkgMTEuNC0yIDguNS0uMiAxMC4xIDAgMTEuNyAxLjZzMS40IDYuNC0uMyA4LjVjLS42IC43LTEuMSAxLjUtMS4zIDIuMyAwIC42LTIuNiA0LjktNS40IDktMS4xIDIuMi0xLjkgNC41LTIuNCA2LjggMjAuNCAxMy40IDIxLjYgMy44IDE0LjEgMjlsMTEuNCAyLjVjMy4xLTguNyA2LjUtMTcuMyA4LjYtMjYuMiAuMy03LjYtMTItNC4yLTE1LjQtOC43LTIuMy01LjkgMy4xLTE0LjIgNi4xLTE5LjIgMS42LTIuMyA2LjYtNC43IDguOC00LjEgLjkgLjIgNC4yLS40IDcuNC0xLjMgMi41LS44IDUtMS4zIDcuNS0xLjcgMi0uMiA0LjEtLjcgNi0xLjMgMy43LTEuMSA0LjUtMS4yIDYuMy0uNCAxLjkgLjYgMy44IDEuMSA1LjggMS40IDIuMSAuMyA0LjEgLjkgNiAxLjkgMS42IC45IDMuMyAxLjcgNSAyLjIgMi41IC43IDMgLjYgNy0xLjdMMjI2IDUuNCAyMzYuNyA1YzEwLjQtLjQgMTAuOC0uNSAxNS4zLTIuN0wyNTYuNSAwIDI1OSAxLjRjMS44IDEgMy4xIDIuNyA0LjkgNiAyLjQgNC41IDIuNCA0LjYgMS40IDcuNC0uOSAyLjQtLjkgMy4zLS4xIDYuNCAuNSAyIDEuMiA0IDIuMSA1LjkgLjYgMS4zIDEuMSAyLjYgMS4zIDQgLjMgNC4zIDAgNS4zLTIuNCA2LjktMi4yIDEuNS03IDcuOS03IDkuMy0uMiAxLS42IDItMS4xIDMtNSAxMS41LTYuOCAxMy42LTE0LjMgMTctOS4yIDQuMi0xMi4zIDUuMi0xNi4yIDUuMi0zLjEgMC00IC4yLTQuNSAxLjMtMS4yIDEuNC0yLjUgMi43LTQuMSAzLjctMS44IDEuMi0zLjMgMi45LTQuNCA0LjgtLjUgMS4yLTEuNCAyLjItMi41IDIuOS0uOSAuNC0xLjggMS0yLjUgMS43LTIuMiAxLjktNC42IDMuNy03IDUuNC0zLjMgMi4zLTYuOSA1LTcuOSA2LS43IC43LTEuNSAxLjMtMi40IDEuNy0uOCAuNC0xLjYgLjktMi4xIDEuNi0xLjMgMS40LTEuNSAyLjEtMS4xIDQuNiAuMyAyIC44IDQgMS40IDUuOSAxLjMgMy44IDEuMyA3LjkgMCAxMC42cy0uOSA2LjcgMS40IDkuNmMyIDIuNiAyLjIgNC42IC43IDguOC0uOCAyLjktMS4xIDUuOS0xLjEgOC45IDAgNC45IC4yIDYuMyAxLjUgOC40czEuOCAyLjUgMy4yIDIuM2MyLS4yIDIuMy0xLjEgNC43LTEyLjEgMi4yLTEwIDMuNy0xMS45IDEzLjgtMTcuMSAyLjktMS41IDcuNS00IDEwLTUuNHM2LjgtMy43IDkuNC00LjljNS45LTIuNiAxMS4yLTYuNiAxNS4yLTExLjcgNy4xLTguOCAxMC0xNi4yIDEyLjgtMzMuMyAuNC0yLjggMS4zLTUuNCAyLjktNy43IDEuNC0yLjIgMi40LTQuNyAyLjktNy4zIDEtNS4zIDIuOS05LjEgNS42LTExLjUgNC43LTQuMiA2LTEuMSA0LjYgMTAuOS0uNSAzLjktMS4xIDEwLjMtMS40IDE0LjRsLS42IDcuNGMzIDIuNyA1LjkgNS41IDguOSA4LjJsLjEgOC40Yy4xIDQuNiAuNSA5LjUgLjkgMTAuOWwuOCAyLjUtNi40IDYuM2MtOC41IDguMy0xMi45IDEzLjktMTYuOCAyMS42LTEuOCAzLjUtMy43IDcuMS00LjQgOC0yLjIgMy4xLTYuNSAxMy04LjggMjAuM2wtMi4zIDcuMi03IDYuNWMtMy44IDMuNi04IDcuMi05LjIgOC4yLTMgMi4zLTQuMyA1LjEtNC4zIDEwLS4xIDIuNSAuNCA1IDEuNiA3LjMgLjggMS42IDEuNSAzLjIgMi4xIDQuOCAuMyAxIC45IDIgMS42IDIuOSAxLjQgMS42IDEuOSAxNi4xIC44IDIzLjItLjcgNC41LTMuNiAxMi00LjcgMTItMS44IDAtNC4xIDkuMy01LjEgMjAuNy0uMiAyLS42IDUuOS0xIDguN3MtMSAxMC0xLjQgMTZjLS44IDEyLjItLjIgMTguOCAyIDIzLjIgMy40IDYuNyAuNSAxMi43LTExIDIyLjhsLTQgMy41IC4xIDUuMmMuMSAzIC40IDYgMS4xIDguOSA0LjYgMTYgNC43IDE2LjkgNC40IDM3LjEtLjUgMjYuNC0uMyA0MC4zIC42IDQ0LjIgLjUgMi4zIC45IDQuNiAxLjEgNyAuMiAyIC43IDUuMyAxLjEgNy40IC41IDIuMyAuOCAxMSAuOCAyMi43bDAgMTkuMS0xLjggMi42Yy0yLjcgMy45LTE1LjEgMTMuNS0xNS41IDEyLjNsLjEgMHptMjkuNS00NS4xYy0uMi0uMy0uMy02LjktLjMtMTQuNiAwLTE0LjEtLjktMjcuNS0yLjMtMzQuNC0uNC0yLS44LTkuNy0uOS0xNy4xLS4yLTExLjktMS40LTI0LjQtMi42LTI2LjQtLjctMS4xLTMtMTcuNy0zLTIxLjMgMC00LjIgMS02IDUuMy05LjFzNC45LTMuMSA1LjUtLjdjLjMgMS4xIDEuNCA1LjYgMi42IDEwIDMuOSAxNS4xIDQuMSAxNi4zIDQgMjEuNy0uMSA1LjgtLjEgNi4xLTEuNyAxNy43LTEgNy4xLTEuMiAxMi40LTEgMjguNCAuMiAxOS40LS42IDM1LjctMiA0MS4zLS43IDIuOC0yLjggNS41LTMuNCA0LjRsLS4xIDB6bS03MS0zNy42Yy0uOC0zLjYtMS4zLTcuMi0xLjctMTAuOHMtMS03LjItMS43LTEwLjhjLS41LTIuMS0uOS00LjMtMS02LjUtLjMtMy4yLS45LTcuNS0xLjMtOS41LTEtNC44LTMuMy0xOS40LTMuNC0yMS4xIDAtLjctLjMtNC0uNy03LjQtLjctNi4yLS44LTI3LjctLjItMjguMyAxLTEgNi42IDIuOCAxMS4zIDcuNGw1LjMgNS4zLS40IDYuNWMtLjIgMy42LS42IDEwLjItLjggMTQuOC0uNSAxMy4zLS43IDguNy0xLjYgMjguNC0uOCAxNy40LTEuOSAzMS4zLTIuNiAzMi0uMSAuMS0uMiAuMS0uMiAuMnMtLjIgMC0uMyAwLS4yIDAtLjMtLjEtLjEtLjEtLjItLjJsMCAwek03MiAxNjIuNmMyMS4xIDEyLjggMTcuOCAxNC4yIDI4LjUgMTcuNyAxMyA0LjMgMTguOSA3LjEgMjMuMiAxNi45LTQzLjcgMzYuMS02OSA1Ny45LTc2LjcgNzAuOS0zMSA1Mi02IDEwMS42IDYyLjggODcuMi0xNC4yIDI5LjItNzggMjguNi05OC43LTQuOS0yNC43LTQwLTIyLjEtMTE4LjMgNjEtMTg3LjdsMCAwem0yMTAuOCAxNzljNTYuNyA2LjkgODIuMy0zNy43IDQ2LjUtODkuMiAwIDAtMjYuOS0yOS4zLTY0LjMtNjggMy0xNS41IDkuNS0zMi4xIDMwLjYtNTMuOCA4OS4yIDYzLjUgOTIgMTQxLjYgOTIuNSAxNDkuNCA0LjMgNzAuNi03OC43IDkxLjItMTA1LjMgNjEuN2wwIDB6Il19LGo4ZT17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzbGFjayIsaWNvbjpbNDQ4LDUxMixbNjI0NDcsInNsYWNrLWhhc2giXSwiZjE5OCIsIk05NC4xIDMxNS4xYzAgMjUuOS0yMS4yIDQ3LjEtNDcuMSA0Ny4xUzAgMzQxIDAgMzE1LjEgMjEuMiAyNjggNDcuMSAyNjhsNDcuMSAwIDAgNDcuMXptMjMuNyAwYzAtMjUuOSAyMS4yLTQ3LjEgNDcuMS00Ny4xUzIxMiAyODkuMiAyMTIgMzE1LjFsMCAxMTcuOGMwIDI1LjktMjEuMiA0Ny4xLTQ3LjEgNDcuMXMtNDcuMS0yMS4yLTQ3LjEtNDcuMWwwLTExNy44em00Ny4xLTE4OWMtMjUuOSAwLTQ3LjEtMjEuMi00Ny4xLTQ3LjFTMTM5IDMyIDE2NC45IDMyIDIxMiA1My4yIDIxMiA3OS4xbDAgNDcuMS00Ny4xIDB6bTAgMjMuN2MyNS45IDAgNDcuMSAyMS4yIDQ3LjEgNDcuMVMxOTAuOCAyNDQgMTY0LjkgMjQ0TDQ3LjEgMjQ0QzIxLjIgMjQ0IDAgMjIyLjggMCAxOTYuOXMyMS4yLTQ3LjEgNDcuMS00Ny4xbDExNy44IDB6bTE4OSA0Ny4xYzAtMjUuOSAyMS4yLTQ3LjEgNDcuMS00Ny4xUzQ0OCAxNzEgNDQ4IDE5Ni45IDQyNi44IDI0NCA0MDAuOSAyNDRsLTQ3LjEgMCAwLTQ3LjF6bS0yMy43IDBjMCAyNS45LTIxLjIgNDcuMS00Ny4xIDQ3LjFTMjM2IDIyMi44IDIzNiAxOTYuOWwwLTExNy44QzIzNiA1My4yIDI1Ny4yIDMyIDI4My4xIDMyczQ3LjEgMjEuMiA0Ny4xIDQ3LjFsMCAxMTcuOHptLTQ3LjEgMTg5YzI1LjkgMCA0Ny4xIDIxLjIgNDcuMSA0Ny4xUzMwOSA0ODAgMjgzLjEgNDgwIDIzNiA0NTguOCAyMzYgNDMyLjlsMC00Ny4xIDQ3LjEgMHptMC0yMy43Yy0yNS45IDAtNDcuMS0yMS4yLTQ3LjEtNDcuMVMyNTcuMiAyNjggMjgzLjEgMjY4bDExNy44IDBjMjUuOSAwIDQ3LjEgMjEuMiA0Ny4xIDQ3LjFzLTIxLjIgNDcuMS00Ny4xIDQ3LjFsLTExNy44IDB6Il19LFRiPWo4ZSxaRHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiYW5nZWxsaXN0IixpY29uOlszODQsNTEyLFtdLCJmMjA5IiwiTTMxNS42IDIxNS40YzExLjctMzIuNiA0NS40LTEyNi45IDQ1LjQtMTU3LjEgMC0yNi42LTE1LjctNDguOS00My43LTQ4LjktNDQuNiAwLTg0LjYgMTMxLjctOTcuMSAxNjMuMS05LjctMjguNS01NS4xLTE3Mi41LTk1LjEtMTcyLjUtMzEuMSAwLTQ1LjcgMjIuOS00NS43IDUxLjcgMCAzNS4zIDM0LjIgMTI2LjggNDYuNiAxNjItNi4zLTIuMy0xMy4xLTQuMy0yMC00LjMtMjMuNCAwLTQ4LjMgMjkuMS00OC4zIDUyLjYgMCA4LjkgNC45IDIxLjQgOCAyOS43LTM2LjkgMTAtNTEuMSAzNC42LTUxLjEgNzEuNy0uMSA3Mi4yIDY4LjMgMTQ4LjYgMTY0LjUgMTQ4LjYgMTE4IDAgMTkxLjQtODguNiAxOTEuNC0yMDIuOSAwLTQzLjEtNi45LTgyLTU0LjktOTMuN3pNMjgwLjIgMTA4YzQtMTIuMyAyMS4xLTY0LjMgMzcuMS02NC4zIDguNiAwIDEwLjkgOC45IDEwLjkgMTYgMCAxOS4xLTM4LjYgMTI0LjYtNDcuMSAxNDhsLTM0LTYgMzMuMS05My43ek0xMTAuOCA0OC4zYzAtMTEuOSAxNC41LTQ1LjcgNDYuMyA0Ny4xbDM0LjYgMTAwLjNjLTE1LjYtMS4zLTI3LjctMy0zNS40IDEuNC0xMC45LTI4LjgtNDUuNS0xMTkuNy00NS41LTE0OC44ek0xMDguNSAyNDRjMjkuMyAwIDY3LjEgOTQuNiA2Ny4xIDEwNy40IDAgNS4xLTQuOSAxMS40LTEwLjYgMTEuNC0yMC45IDAtNzYuOS03Ni45LTc2LjktOTcuNyAuMS03LjcgMTIuNy0yMS4xIDIwLjQtMjEuMXpNMjkyLjggNDMwLjNjLTI5LjEgMzItNjYuMyA0OC42LTEwOS43IDQ4LjYtNTkuNCAwLTEwNi4zLTMyLjYtMTI4LjktODguMy0xNy4xLTQzLjQgMy44LTY4LjMgMjAuNi02OC4zIDExLjQgMCA1NC4zIDYwLjMgNTQuMyA3My4xIDAgNC45LTcuNyA4LjMtMTEuNyA4LjMtMTYuMSAwLTIyLjQtMTUuNS01MS4xLTUxLjQtMjkuNyAyOS43IDIwLjUgODYuOSA1OC4zIDg2LjkgMjYuMSAwIDQzLjEtMjQuMiAzOC00MiAzLjcgMCA4LjMgLjMgMTEuNy0uNiAxLjEgMjcuMSA5LjEgNTkuNCA0MS43IDYxLjcgMC0uOSAyLTcuMSAyLTcuNCAwLTE3LjQtMTAuNi0zMi42LTEwLjYtNTAuMyAwLTI4LjMgMjEuNy01NS43IDQzLjctNzEuNyA4LTYgMTcuNy05LjcgMjcuMS0xMy4xIDkuNy0zLjcgMjAtOCAyNy40LTE1LjQtMS4xLTExLjItNS43LTIxLjEtMTYuOS0yMS4xLTI3LjcgMC0xMjAuNiA0LTEyMC42LTM5LjcgMC02LjcgLjEtMTMuMSAxNy40LTEzLjEgMzIuMyAwIDExNC4zIDggMTM4LjMgMjkuMSAxOC4xIDE2LjEgMjQuMyAxMTMuMi0zMSAxNzQuN3ptLTk4LjYtMTI2YzkuNyAzLjEgMTkuNyA0IDI5LjcgNi03LjQgNS40LTE0IDEyLTIwLjMgMTkuMS0yLjgtOC41LTYuMi0xNi44LTkuNC0yNS4xeiJdfSxYRHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiYW5kcm9pZCIsaWNvbjpbNTc2LDUxMixbXSwiZjE3YiIsIk00MjAuNSAyNTMuOWEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bS0yNjUuMSAwYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptMjczLjctOTYuNWw0Ny45LTgzYy44LTEuMSAxLjMtMi40IDEuNS0zLjhzLjItMi43LS4xLTQuMS0uOS0yLjYtMS43LTMuNy0xLjgtMi0zLTIuNy0yLjUtMS4xLTMuOS0xLjMtMi43IDAtNCAuNC0yLjUgMS4xLTMuNiAxLjktMS45IDItMi41IDMuMmwtNDguNSA4NC4xYy0zOC44LTE3LjQtODAuOC0yNi40LTEyMy4zLTI2LjRzLTg0LjUgOS0xMjMuMyAyNi40TDExNi4yIDY0LjRjLS42LTEuMi0xLjUtMi4zLTIuNS0zLjJzLTIuMy0xLjUtMy42LTEuOS0yLjctLjUtNC0uNC0yLjcgLjYtMy45IDEuMy0yLjIgMS42LTMgMi43LTEuNCAyLjQtMS43IDMuNy0uMyAyLjctLjEgNC4xIC44IDIuNiAxLjUgMy44bDQ3LjkgODNDNjQuNSAyMDIuMiA4LjIgMjg1LjUgMCAzODRsNTc2IDBjLTguMi05OC41LTY0LjUtMTgxLjgtMTQ2LjktMjI2LjZ6Il19LFFEdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJtZWV0dXAiLGljb246WzU3Niw1MTIsW10sImYyZTAiLCJNMTMxLjEgNDE0LjNjMS4xIDUuNy0yLjMgMTEuMS04IDEyLjMtNS40IDEuMS0xMC45LTIuMy0xMi04LTEuMS01LjQgMi4zLTExLjEgNy43LTEyLjNzMTEuMSAyLjMgMTIuMyA4em0xNDMuMSA3MS40Yy02LjMgNC42LTggMTMuNC0zLjcgMjAgNC42IDYuNiAxMy40IDguMyAyMCAzLjcgNi4zLTQuNiA4LTEzLjQgMy40LTIwLTQuMi02LjUtMTMuMS04LjMtMTkuNy0zLjd6bS04Ni00NjIuM2ExMS44IDExLjggMCAxIDAgLTQuOS0yMyAxMS44IDExLjggMCAxIDAgNC45IDIzek02Ni41IDIyNi4zYTIyLjIgMjIuMiAwIDEgMCAtMjQuNyAzNi45IDIyLjIgMjIuMiAwIDEgMCAyNC43LTM2Ljl6bTI3Mi0xNzAuOWEyMi4xIDIyLjEgMCAxIDAgLTIyLjQtMzggMjIuMSAyMi4xIDAgMSAwIDIyLjQgMzh6bS0xOTEuMSA1OGExNi45IDE2LjkgMCAxIDAgLTE4LjgtMjggMTYuOSAxNi45IDAgMSAwIDE4LjggMjh6bTM3Mi4zIDE1NmMtNy40IDEuNy0xMi4zIDkuMS0xMC42IDE2LjkgMS40IDcuNCA4LjkgMTIuMyAxNi4zIDEwLjYgNy40LTEuNCAxMi4zLTguOSAxMC42LTE2LjYtMS41LTcuNC04LjktMTIuMy0xNi4zLTEwLjl6bTM5LjctNTYuOGExMC4xIDEwLjEgMCAxIDAgLTE5LjggNC4zIDEwLjEgMTAuMSAwIDEgMCAxOS44LTQuM3ptLTgwLjMtNzMuN2ExOC44IDE4LjggMCAxIDAgMjAuNyAzMS4zIDE4LjggMTguOCAwIDEgMCAtMjAuNy0zMS4zem0tNi4zIDEzOS40YzI2LjMgNDMuMSAxNS4xIDEwMC0yNi4zIDEyOS4xLTE3LjQgMTIuMy0zNy4xIDE3LjctNTYuOSAxNy4xLTEyIDQ3LjEtNjkuNCA2NC42LTEwNS4xIDMyLjYtMS4xIC45LTIuNiAxLjctMy43IDIuOS0zOS4xIDI3LjEtOTIuMyAxNy40LTExOS40LTIyLjMtOS43LTE0LjMtMTQuNi0zMC42LTE1LjEtNDYuOS02NS40LTEwLjktOTAtOTQtNDEuMS0xMzkuNy0yOC4zLTQ2LjkgLjYtMTA3LjQgNTMuNC0xMTQuOSAyNS4xLTY2LjIgMTA3LjYtOTcuNiAxNjMuNi01NC4yIDY3LjQtMjIuMyAxMzYuMyAyOS40IDEzMC45IDEwMS4xIDQxLjEgMTIuNiA1Mi44IDY2LjkgMTkuNyA5NS4yem0tNzAgNzQuM2MtMy4xLTIwLjYtNDAuOS00LjYtNDMuMS0yNy4xLTMuMS0zMiA0My43LTEwMS4xIDQwLTEyOC0zLjQtMjQtMTkuNC0yOS4xLTMzLjQtMjkuNC0xMy40LS4zLTE2LjkgMi0yMS40IDQuNi0yLjkgMS43LTYuNiA0LjktMTEuNy0uMy02LjMtNi0xMS4xLTExLjctMTkuNC0xMi45LTEyLjMtMi0xNy43IDItMjYuNiA5LjctMy40IDIuOS0xMiAxMi45LTIwIDkuMS0zLjQtMS43LTE1LjQtNy43LTI0LTExLjQtMTYuMy03LjEtNDAgNC42LTQ4LjYgMjAtMTIuOSAyMi45LTM4IDExMy4xLTQxLjcgMTI1LjEtOC42IDI2LjYgMTAuOSA0OC42IDM2LjkgNDcuMSAxMS4xLS42IDE4LjMtNC42IDI1LjQtMTcuNCA0LTcuNCA0MS43LTEwNy43IDQ0LjYtMTEyLjYgMi0zLjQgOC45LTggMTQuNi01LjEgNS43IDMuMSA2LjkgOS40IDYgMTUuMS0xLjEgOS43LTI4IDcwLjktMjguOSA3Ny43LTMuNCAyMi45IDI2LjkgMjYuNiAzOC42IDQgMy43LTcuMSA0NS43LTkyLjYgNDkuNC05OC4zIDQuMy02LjMgNy40LTguMyAxMS43LTggMy4xIDAgOC4zIC45IDcuMSAxMC45LTEuNCA5LjQtMzUuMSA3Mi4zLTM4LjkgODcuNy00LjYgMjAuNiA2LjYgNDEuNCAyNC45IDUwLjYgMTEuNCA1LjcgNjIuNSAxNS43IDU4LjUtMTEuMXptNS43IDkyLjNhMjMuMyAyMy4zIDAgMSAwIDI2LjIgMzguNCAyMy4zIDIzLjMgMCAxIDAgLTI2LjItMzguNHoiXX0sSkR0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImZvbnRpY29ucy1maSIsaWNvbjpbMzg0LDUxMixbXSwiZjNhMiIsIk0xMTQuNCAyMjRsOTIuNCAwLTE1LjIgNTEuMi03Ni40IDAgMCAxNTcuOGMwIDgtMi44IDkuMiA0LjQgMTBsNTkuNiA1LjYgMCAzNC40LTE3OS4yIDAgMC0zNS4yIDI5LjItMi44YzcuMi0uOCA5LjItMy4yIDkuMi0xMC44bDAtMTU1LjhjMC0zLjItNC0zLjItOC0zLjJsLTMwLjQgMCAwLTUxLjIgMzguNCAwIDAtMjguOGMwLTY4IDM2LjQtOTYgMTA2LTk2IDQ2LjggMCA4OC44IDExLjIgODguOCA3Mi40TDE2My42IDE4MGMuNC0yNS42LTYtMzEuNi0yMi40LTMxLjYtMjUuMiAwLTI2IDEzLjYtMjYgMzcuNmwwIDMyYzAgMy4yLTQuOCA2LS44IDZ6TTM4NCA0ODNsLTE0MC44IDAgMC0zNC40IDI4LTMuNmM3LjItLjggMTAuNC0yLjQgMTAuNC0xMGwwLTE0OGMwLTUuNi00LTkuMi05LjItMTAuOGwtMzMuMi04LjggOS4yLTQwLjQgMTEwIDAgMCAyMDhjMCA4LTMuNiA4LjggNCAxMGwyMS42IDMuNiAwIDM0LjR6TTM1NCAxMzUuOGwxMi40IDQ1LjYtMTAgMTAtNDIuOC0yMi44LTQyLjggMjIuOC0xMC0xMCAxMi40LTQ1LjYtMzAtMzYuNCA0LjgtMTAgMzggMCAyMS4yLTM4LjQgMTIuOCAwIDIxLjIgMzguNCAzOCAwIDQuOCAxMy4yLTMwIDMzLjJ6Il19LGVMdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJwYWxmZWQiLGljb246WzU3Niw1MTIsW10sImYzZDgiLCJNMzg0LjkgMTkzLjljMC00Ny40LTU1LjItNDQuMi05NS40LTI5LjgtMS4zIDM5LjQtMi41IDgwLjctMyAxMTkuOCAuNyAyLjggMi42IDYuMiAxNS4xIDYuMiAzNi44IDAgODMuNC00Mi44IDgzLjMtOTYuMnpNMTkwLjQgMjY2LjFjLjIgMCA2LjUtMi43IDExLjItMi43IDI2LjYgMCAyMC43IDQ0LjEtMTQuNCA0NC4xLTIxLjUgMC0zNy4xLTE4LjEtMzcuMS00MyAwLTQyIDQyLjktOTUuNiAxMDAuNy0xMjYuNSAxLTEyLjQgMy0yMiAxMC41LTI4LjIgMTEuMi05IDI2LjYtMy41IDI5LjUgMTEuMSA3Mi4yLTIyLjIgMTM1LjIgMSAxMzUuMiA3MiAwIDc3LjktNzkuMyAxNTIuNi0xNDAuMSAxMzguMi0uMSAzOS40IC45IDc0LjQgMi43IDEwMGwwIC4yYy4yIDMuNCAuNiAxMi41LTUuMyAxOS4xLTkuNiAxMC42LTMzLjQgMTAtMzYuNC0yMi4zLTQuMS00NC40IC4yLTIwNi4xIDEuNC0yNDIuNS0yMS41IDE1LTU4LjUgNTAuMy01OC41IDc1LjkgLjIgMi41IC40IDQgLjYgNC42ek04IDE4MS4xcy0uMSAzNy40IDM4LjQgMzcuNGwzMCAwIDIyLjQgMjE3LjJzMCA0NC4zIDQ0LjcgNDQuM2wyODguOSAwczQ0LjctLjQgNDQuNy00NC4zbDIyLjQtMjE3LjIgMzAgMHMzOC40IDEuMiAzOC40LTM3LjRjMCAwIC4xLTM3LjQtMzguNC0zNy40bC0zMC4xIDBjLTcuMy0yNS42LTMwLjItNzQuMy0xMTkuNC03NC4zbC0yOCAwIDAtMTkuMXMtMi43LTE4LjQtMjEuMS0xOC40bC04NS44IDBTMjI0IDMxLjkgMjI0IDUwLjNsMCAxOS4xLTI4LjEgMHMtMTA1IDQuMi0xMjAuNSA3NC4zbC0yOSAwUzggMTQyLjUgOCAxODEuMXoiXX0sdEx0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6IndwYmVnaW5uZXIiLGljb246WzUxMiw1MTIsW10sImYyOTciLCJNNDYzLjIgMzIyLjRjNTYuMiA2NC4zIDQuMiAxNTcuNi05MS45IDE1Ny42LTM5LjYgMC03OC44LTE3LjctMTAwLjEtNTAtNi45IC40LTIyLjcgLjQtMjkuNiAwLTIxLjQgMzIuNC02MC42IDUwLTEwMC4xIDUwLTk1LjUgMC0xNDguMy05My05MS45LTE1Ny42LTc5LjEtMTMxLjkgMzEuMy0yOTAuNCAyMDYuOC0yOTAuNCAxNzUuNiAwIDI4NS45IDE1OC42IDIwNi44IDI5MC40em0tMzM5LjYtODNsNDEuNSAwIDAtNTguMS00MS41IDAgMCA1OC4xem0yMTcuMiA4Ni4xbDAtMjMuOGMtNjAuNSAyMC45LTEzMi40IDkuMi0xODcuNi0zNGwuMiAyNC45YzUxLjEgNDYuNCAxMzEuNyA1Ny45IDE4Ny4zIDMyLjl6TTE5MCAyMzkuNGwxNjYuMSAwIDAtNTguMS0xNjYuMSAwIDAgNTguMXoiXX0sYUx0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImRpYXNwb3JhIixpY29uOls0NDgsNTEyLFtdLCJmNzkxIiwiTTIxOS43IDM1NC42Yy0xLjQgMC04OCAxMTkuOS04OC43IDExOS45UzQ0LjQgNDE0IDQ0IDQxMy4zIDEzMC42IDI4Ny41IDEzMC42IDI4NS44YzAtMi4yLTEyOS42LTQ0LTEzNy42LTQ3LjEtMS4zLS41IDMxLjQtMTAxLjggMzEuNy0xMDIuMSAuNi0uNyAxNDQuNCA0NyAxNDUuNSA0NyAuNCAwIC45LS42IDEtMS4zIC40LTIgMS0xNDguNiAxLjctMTQ5LjYgLjgtMS4yIDEwNC41LS43IDEwNS4xLS4zIDEuNSAxIDMuNSAxNTYuMSA2LjEgMTU2LjEgMS40IDAgMTM4LjctNDcgMTM5LjMtNDYuMyAuOCAuOSAzMS45IDEwMi4yIDMxLjUgMTAyLjYtLjkgLjktMTQwLjIgNDcuMS0xNDAuNiA0OC44LS4zIDEuNCA4Mi44IDEyMi4xIDgyLjUgMTIyLjlzLTg1LjUgNjMuNS04Ni4zIDYzLjVjLTEtLjItODktMTI1LjUtOTAuOS0xMjUuNWwwIDB6Il19LHNMdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJwcm9kdWN0LWh1bnQiLGljb246WzUxMiw1MTIsW10sImYyODgiLCJNMzI2LjMgMjE4LjhjMCAyMC41LTE2LjcgMzcuMi0zNy4yIDM3LjJsLTcwLjMgMCAwLTc0LjQgNzAuMyAwYzIwLjUgMCAzNy4yIDE2LjcgMzcuMiAzNy4yek04IDI1NmEyNDggMjQ4IDAgMSAxIDQ5NiAwIDI0OCAyNDggMCAxIDEgLTQ5NiAwem0zNjcuOS0zNy4yYzAtNDcuOS0zOC45LTg2LjgtODYuOC04Ni44bC0xMTkuOSAwIDAgMjQ4IDQ5LjYgMCAwLTc0LjQgNzAuMyAwYzQ3LjkgMCA4Ni44LTM4LjkgODYuOC04Ni44eiJdfSxpTHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToic3F1YXJlLXVwd29yayIsaWNvbjpbNDQ4LDUxMixbXSwiZTY3YyIsIk01NiAzMmwzMzYgMGMzMC45IDAgNTYgMjUuMSA1NiA1NmwwIDMzNmMwIDMwLjktMjUuMSA1Ni01NiA1Nkw1NiA0ODBjLTMwLjkgMC01Ni0yNS4xLTU2LTU2TDAgODhDMCA1Ny4xIDI1LjEgMzIgNTYgMzJ6TTI3MC45IDI3NC4yYzYuNi01Mi45IDI1LjktNjkuNSA1MS40LTY5LjUgMjUuMyAwIDQ0LjkgMjAuMiA0NC45IDQ5LjdzLTE5LjcgNDkuNy00NC45IDQ5LjdjLTI3LjkgMC00Ni4zLTIxLjUtNTEuNC0yOS45em0tMjYuNy00MS44Yy04LjItMTUuNS0xNC4zLTM2LjMtMTkuMi01NS42bC02Mi45IDAgMCA3OC4xYzAgMjguNC0xMi45IDQ5LjQtMzguMiA0OS40Uzg0LjEgMjgzLjQgODQuMSAyNTVsLjMtNzguMS0zNi4yIDAgMCA3OC4xYzAgMjIuOCA3LjQgNDMuNSAyMC45IDU4LjIgMTMuOSAxNS4yIDMyLjggMjMuMiA1NC44IDIzLjIgNDMuNyAwIDc0LjItMzMuNSA3NC4yLTgxLjVsMC01Mi41YzQuNiAxNy4zIDE1LjQgNTAuNSAzNi4yIDc5LjdsLTE5LjMgMTEwLjUgMzYuOCAwIDEyLjgtNzguNGM0LjIgMy41IDguNyA2LjYgMTMuNCA5LjQgMTIuMyA3LjggMjYuNCAxMi4yIDQwLjkgMTIuNmwzLjQgMGM0NS4xIDAgODAuOS0zNC45IDgwLjktODEuOXMtMzUuOS04Mi4yLTgwLjktODIuMmMtNDUuNCAwLTcwLjkgMjkuNy03OC4xIDYwLjFsMCAuMnoiXX0sckx0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImN1dHRsZWZpc2giLGljb246WzQ0OCw1MTIsW10sImYzOGMiLCJNMzQ4IDMwNS41Yy0xNy41IDMxLjYtNTcuNCA1NC41LTk2IDU0LjUtNTYuNiAwLTEwNC00Ny40LTEwNC0xMDRzNDcuNC0xMDQgMTA0LTEwNGMzOC42IDAgNzguNSAyMi45IDk2IDU0LjUgMTMuNy01MC45IDQxLjctOTMuMyA4Ny0xMTcuOC00NS4zLTQ5LjYtMTEwLjUtODAuNy0xODMtODAuNy0xMzcgMC0yNDggMTExLTI0OCAyNDhTMTE1IDUwNCAyNTIgNTA0YzcyLjUgMCAxMzcuNy0zMS4xIDE4My04MC43LTQ1LjMtMjQuNS03My4zLTY2LjktODctMTE3Ljh6Il19LG9MdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJtZWRhcHBzIixpY29uOlszMjAsNTEyLFtdLCJmM2M2IiwiTTExOC4zIDIzOC40YzMuNS0xMi41IDYuOS0zMy42IDEzLjItMzMuNiA4LjMgMS44IDkuNiAyMy40IDE4LjYgMzYuNiA0LjYtMjMuNSA1LjMtODUuMSAxNC4xLTg2LjcgOS0uNyAxOS43IDY2LjUgMjIgNzcuNSA5LjkgNC4xIDQ4LjkgNi42IDQ4LjkgNi42IDEuOSA3LjMtMjQgNy42LTQwIDcuOC00LjYgMTQuOC01LjQgMjcuNy0xMS40IDI4LTQuNyAuMi04LjItMjguOC0xNy41LTQ5LjZsLTkuNCA2NS41Yy00LjQgMTMtMTUuNS0yMi41LTIxLjktMzkuMy0zLjMtLjEtNjIuNC0xLjYtNDcuNi03LjhsMzEtNXpNMjI4IDQ0OGMyMS4yIDAgMjEuMi0zMiAwLTMyTDkyIDQxNmMtMjEuMiAwLTIxLjIgMzIgMCAzMmwxMzYgMHptLTI0IDY0YzIxLjIgMCAyMS4yLTMyIDAtMzJsLTg4IDBjLTIxLjIgMC0yMS4yIDMyIDAgMzJsODggMHptMzQuMi0xNDEuNWMzLjItMTguOSA1LjItMzYuNCAxMS45LTQ4LjggNy45LTE0LjcgMTYuMS0yOC4xIDI0LTQxIDI0LjYtNDAuNCA0NS45LTc1LjIgNDUuOS0xMjUuNSAwLTg1LjYtNzEuOC0xNTUuMi0xNjAtMTU1LjJTMCA2OS42IDAgMTU1LjJjMCA1MC4yIDIxLjMgODUuMSA0NS45IDEyNS41IDcuOSAxMi45IDE2IDI2LjMgMjQgNDEgNi43IDEyLjUgOC43IDI5LjggMTEuOSA0OC45IDMuNSAyMSAzNi4xIDE1LjcgMzIuNi01LjEtMy42LTIxLjctNS42LTQwLjctMTUuMy01OC42LTMyLjYtNjAuNC02Ni4xLTk1LjYtNjYuMS0xNTEuNyAwLTY3LjkgNTctMTIzLjIgMTI3LTEyMy4yUzI4NyA4Ny4zIDI4NyAxNTUuMmMwIDU2LjEtMzMuNSA5MS4zLTY2LjEgMTUxLjYtOS43IDE4LTExLjcgMzcuNC0xNS4zIDU4LjYtMy40IDIwLjYgMjkgMjYuNCAzMi42IDUuMXoiXX0sbkx0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InBpeCIsaWNvbjpbNTEyLDUxMixbXSwiZTQzYSIsIk0yNDIuNCAyOTIuNWM1LjQtNS40IDE0LjctNS40IDIwLjEgMGw3NyA3N2MxNC4yIDE0LjIgMzMuMSAyMiA1My4xIDIybDE1LjEgMC05Ny4xIDk3LjFjLTMwLjMgMjkuNS03OS41IDI5LjUtMTA5LjggMGwtOTcuNS05Ny40IDkuMyAwYzIwIDAgMzguOS03LjggNTMuMS0yMmw3Ni43LTc2Ljd6bTIwLjEtNzMuNmMtNi40IDUuNS0xNC42IDUuNi0yMC4xIDBsLTc2LjctNzYuN2MtMTQuMi0xNS4xLTMzLjEtMjItNTMuMS0yMmwtOS4zIDAgOTcuNC05Ny40YzMwLjQtMzAuMyA3OS42LTMwLjMgMTA5LjkgMGw5Ny4yIDk3LjEtMTUuMiAwYy0yMCAwLTM4LjkgNy44LTUzLjEgMjJsLTc3IDc3ek0xMTIuNiAxNDIuN2MxMy44IDAgMjYuNSA1LjYgMzcuMSAxNS40bDc2LjcgNzYuN2M3LjIgNi4zIDE2LjYgMTAuOCAyNi4xIDEwLjggOS40IDAgMTguOC00LjUgMjYtMTAuOGw3Ny03N2M5LjgtOS43IDIzLjMtMTUuMyAzNy4xLTE1LjNsMzcuNyAwIDU4LjMgNTguM2MzMC4zIDMwLjMgMzAuMyA3OS41IDAgMTA5LjhsLTU4LjMgNTguMy0zNy43IDBjLTEzLjggMC0yNy4zLTUuNi0zNy4xLTE1LjRsLTc3LTc3Yy0xMy45LTEzLjktMzguMi0xMy45LTUyLjEgLjFsLTc2LjcgNzYuNmMtMTAuNiA5LjgtMjMuMyAxNS40LTM3LjEgMTUuNGwtMzEuOCAwLTU4LTU4Yy0zMC4zLTMwLjMtMzAuMy03OS41IDAtMTA5LjhsNTgtNTguMSAzMS44IDB6Il19LFY4ZT17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzcXVhcmUtdHVtYmxyIixpY29uOls0NDgsNTEyLFsidHVtYmxyLXNxdWFyZSJdLCJmMTc0IiwiTTQ0OCA5NmMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwek0yNTYuOCA0MTZjLTc1LjUgMC05MS45LTU1LjUtOTEuOS04Ny45bDAtOTAtMjkuNyAwYy0zLjQgMC02LjItMi44LTYuMi02LjJsMC00Mi41YzAtNC41IDIuOC04LjUgNy4xLTEwIDM4LjgtMTMuNyA1MC45LTQ3LjUgNTIuNy03My4yIC41LTYuOSA0LjEtMTAuMiAxMC0xMC4ybDQ0LjMgMGMzLjQgMCA2LjIgMi44IDYuMiA2LjJsMCA3MiA1MS45IDBjMy40IDAgNi4yIDIuOCA2LjIgNi4ybDAgNTEuMWMwIDMuNC0yLjggNi4yLTYuMiA2LjJsLTUyLjEgMCAwIDgzLjNjMCAyMS40IDE0LjggMzMuNSA0Mi41IDIyLjQgMy0xLjIgNS42LTIgOC0xLjQgMi4yIC41IDMuNiAyLjEgNC42IDQuOUwzMTggMzg3LjFjMSAzLjIgMiA2LjctLjMgOS4xLTguNSA5LjEtMzEuMiAxOS44LTYwLjkgMTkuOHoiXX0sbEx0PVY4ZSxjTHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToicmVhY3QiLGljb246WzUxMiw1MTIsW10sImY0MWIiLCJNNDE4LjIgMTc3LjJjLTUuNC0xLjgtMTAuOC0zLjUtMTYuMi01LjEgLjktMy43IDEuNy03LjQgMi41LTExLjEgMTIuMy01OS42IDQuMi0xMDcuNS0yMy4xLTEyMy4zLTI2LjMtMTUuMS02OS4yIC42LTExMi42IDM4LjQtNC4zIDMuNy04LjUgNy42LTEyLjUgMTEuNS0yLjctMi42LTUuNS01LjItOC4zLTcuNy00NS41LTQwLjQtOTEuMS01Ny40LTExOC40LTQxLjUtMjYuMiAxNS4yLTM0IDYwLjMtMjMgMTE2LjcgMS4xIDUuNiAyLjMgMTEuMSAzLjcgMTYuNy02LjQgMS44LTEyLjcgMy44LTE4LjYgNS45LTUzLjQgMTguNS05MS43IDQ3LjctOTEuNyA3Ny45IDAgMzEuMiA0MC44IDYyLjUgOTYuMyA4MS41IDQuNSAxLjUgOSAzIDEzLjYgNC4zLTEuNSA2LTIuOCAxMS45LTQgMTgtMTAuNSA1NS41LTIuMyA5OS41IDIzLjkgMTE0LjYgMjcgMTUuNiA3Mi40LS40IDExNi42LTM5LjEgMy41LTMuMSA3LTYuMyAxMC41LTkuNyA0LjQgNC4zIDkgOC40IDEzLjYgMTIuNCA0Mi44IDM2LjggODUuMSA1MS43IDExMS4yIDM2LjYgMjctMTUuNiAzNS44LTYyLjkgMjQuNC0xMjAuNS0uOS00LjQtMS45LTguOS0zLTEzLjUgMy4yLS45IDYuMy0xLjkgOS40LTIuOSA1Ny43LTE5LjEgOTkuNS01MCA5OS41LTgxLjcgMC0zMC4zLTM5LjQtNTkuNy05My44LTc4LjR6TTI4Mi45IDkyLjNjMzcuMi0zMi40IDcxLjktNDUuMSA4Ny43LTM2IDE2LjkgOS43IDIzLjQgNDguOSAxMi44IDEwMC40LS43IDMuNC0xLjQgNi43LTIuMyAxMC0yMi4yLTUtNDQuNy04LjYtNjcuMy0xMC42LTEzLTE4LjYtMjcuMi0zNi40LTQyLjYtNTMuMSAzLjktMy43IDcuNy03LjIgMTEuNy0xMC43ek0xNjcuMiAzMDcuNWM1LjEgOC43IDEwLjMgMTcuNCAxNS44IDI1LjktMTUuNi0xLjctMzEuMS00LjItNDYuNC03LjUgNC40LTE0LjQgOS45LTI5LjMgMTYuMy00NC41IDQuNiA4LjggOS4zIDE3LjUgMTQuMyAyNi4xek0xMzYuOSAxODcuMmMxNC40LTMuMiAyOS43LTUuOCA0NS42LTcuOC01LjMgOC4zLTEwLjUgMTYuOC0xNS40IDI1LjQtNC45IDguNS05LjcgMTcuMi0xNC4yIDI2LTYuMy0xNC45LTExLjYtMjkuNS0xNi00My42em0yNy40IDY4LjljNi42LTEzLjggMTMuOC0yNy4zIDIxLjQtNDAuNnMxNS44LTI2LjIgMjQuNC0zOC45YzE1LTEuMSAzMC4zLTEuNyA0NS45LTEuN3MzMSAuNiA0NS45IDEuN2M4LjUgMTIuNiAxNi42IDI1LjUgMjQuMyAzOC43czE0LjkgMjYuNyAyMS43IDQwLjRjLTYuNyAxMy44LTEzLjkgMjcuNC0yMS42IDQwLjgtNy42IDEzLjMtMTUuNyAyNi4yLTI0LjIgMzktMTQuOSAxLjEtMzAuNCAxLjYtNDYuMSAxLjZzLTMwLjktLjUtNDUuNi0xLjRjLTguNy0xMi43LTE2LjktMjUuNy0yNC42LTM5cy0xNC44LTI2LjgtMjEuNS00MC42em0xODAuNiA1MS4yYzUuMS04LjggOS45LTE3LjcgMTQuNi0yNi43IDYuNCAxNC41IDEyIDI5LjIgMTYuOSA0NC4zLTE1LjUgMy41LTMxLjIgNi4yLTQ3IDggNS40LTguNCAxMC41LTE3IDE1LjUtMjUuNnptMTQuNC03Ni41Yy00LjctOC44LTkuNS0xNy42LTE0LjUtMjYuMi00LjktOC41LTEwLTE2LjktMTUuMy0yNS4yIDE2LjEgMiAzMS41IDQuNyA0NS45IDgtNC42IDE0LjgtMTAgMjkuMi0xNi4xIDQzLjR6TTI1Ni4yIDExOC4zYzEwLjUgMTEuNCAyMC40IDIzLjQgMjkuNiAzNS44LTE5LjgtLjktMzkuNy0uOS01OS41IDAgOS44LTEyLjkgMTkuOS0yNC45IDI5LjktMzUuOHpNMTQwLjIgNTdjMTYuOC05LjggNTQuMSA0LjIgOTMuNCAzOSAyLjUgMi4yIDUgNC42IDcuNiA3LTE1LjUgMTYuNy0yOS44IDM0LjUtNDIuOSA1My4xLTIyLjYgMi00NSA1LjUtNjcuMiAxMC40LTEuMy01LjEtMi40LTEwLjMtMy41LTE1LjUtOS40LTQ4LjQtMy4yLTg0LjkgMTIuNi05NHpNMTE1LjcgMzIwLjZjLTQuMi0xLjItOC4zLTIuNS0xMi40LTMuOS0yMS4zLTYuNy00NS41LTE3LjMtNjMtMzEuMi0xMC4xLTctMTYuOS0xNy44LTE4LjgtMjkuOSAwLTE4LjMgMzEuNi00MS43IDc3LjItNTcuNiA1LjctMiAxMS41LTMuOCAxNy4zLTUuNSA2LjggMjEuNyAxNSA0MyAyNC41IDYzLjYtOS42IDIwLjktMTcuOSA0Mi41LTI0LjggNjQuNXptMTE2LjYgOThjLTE2LjUgMTUuMS0zNS42IDI3LjEtNTYuNCAzNS4zLTExLjEgNS4zLTIzLjkgNS44LTM1LjMgMS4zLTE1LjktOS4yLTIyLjUtNDQuNS0xMy41LTkyIDEuMS01LjYgMi4zLTExLjIgMy43LTE2LjcgMjIuNCA0LjggNDUgOC4xIDY3LjkgOS44IDEzLjIgMTguNyAyNy43IDM2LjYgNDMuMiA1My40LTMuMiAzLjEtNi40IDYuMS05LjYgOC45em0yNC41LTI0LjNjLTEwLjItMTEtMjAuNC0yMy4yLTMwLjMtMzYuMyA5LjYgLjQgMTkuNSAuNiAyOS41IC42IDEwLjMgMCAyMC40LS4yIDMwLjQtLjctOS4yIDEyLjctMTkuMSAyNC44LTI5LjYgMzYuNHptMTMwLjcgMzBjLS45IDEyLjItNi45IDIzLjYtMTYuNSAzMS4zLTE1LjkgOS4yLTQ5LjgtMi44LTg2LjQtMzQuMi00LjItMy42LTguNC03LjUtMTIuNy0xMS41IDE1LjMtMTYuOSAyOS40LTM0LjggNDIuMi01My42IDIyLjktMS45IDQ1LjctNS40IDY4LjItMTAuNSAxIDQuMSAxLjkgOC4yIDIuNyAxMi4yIDQuOSAyMS42IDUuNyA0NC4xIDIuNSA2Ni4zem0xOC4yLTEwNy41Yy0yLjggLjktNS42IDEuOC04LjUgMi42LTctMjEuOC0xNS42LTQzLjEtMjUuNS02My44IDkuNi0yMC40IDE3LjctNDEuNCAyNC41LTYyLjkgNS4yIDEuNSAxMC4yIDMuMSAxNSA0LjcgNDYuNiAxNiA3OS4zIDM5LjggNzkuMyA1OCAwIDE5LjYtMzQuOSA0NC45LTg0LjggNjEuNHpNMjU2IDMwMS44YTQ1LjggNDUuOCAwIDEgMCAwLTkxLjYgNDUuOCA0NS44IDAgMSAwIDAgOTEuNnoiXX0sZEx0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6Imh1Z2dpbmctZmFjZSIsaWNvbjpbNTc2LDUxMixbXSwiZTg2OSIsIk0yODYuOCA4LjJjMTMwIDAgMjM1LjQgMTA1LjggMjM1LjQgMjM2LjMgMCAxNy43LTEuOSAzNS01LjYgNTEuNy0xLjQgNi41LTMuMSAxMi44LTUuMSAxOS4xIDYuNS0uNiAxMyAuNiAxOC43IDMuNSAxMi42IDYuNSAyMC4yIDIxLjcgMTguMiAzNS43LS43IDQuOS0yLjQgOS40LTQuOCAxMy41IDUuMiA0LjIgOSAxMC4xIDEwLjggMTcuMSAxLjQgNS41IDIuOSAxNy4xLTQuOCAyOC45IDUuOCA5LjIgNi42IDIwLjYgMi4yIDMwLjYtNi4yIDE0LjEtMjEuNyAyNS4zLTUxLjcgMzcuMy0zMi41IDEzLTY3LjEgMjEuOS0xMDIuMyAyMS45LTMyIDAtNTUuOS04LjktNzEtMjYuNC0xMyAyLjItMjYuMyAzLjQtNDAgMy40LTEyLjcgMC0yNS4yLTEtMzcuMy0yLjktMTUuMSAxNy4yLTM4LjggMjUuOS03MC42IDI1LjktMzUuMSAwLTcwLTktMTAyLjQtMjEuOS0zMC0xMi00NS41LTIzLjEtNTEuNy0zNy4zLTQuNC05LjktMy42LTIxLjQgMi4yLTMwLjYtNy43LTExLjktNi4zLTIzLjQtNC44LTI4LjkgMS44LTcgNS43LTEyLjkgMTAuOC0xNy4xLTIuNS00LjEtNC4xLTguNi00LjgtMTMuNS0xLjUtMTAuNCAyLTIwLjcgOS43LTI5LjIgNi4xLTYuNyAxNS4xLTEwLjMgMjQuMi0xMC4yLTEuOS02LjEtMy42LTEyLjQtNS0xOC43LTMuNy0xNi43LTUuNy0zNC01LjctNTEuOCAwLTEzMC41IDEwNS40LTIzNi4zIDIzNS40LTIzNi4zek0xMTcuNSAzMTFjLTEzLTguMi0yMi4xLTMuNi0xOSAxMy40czU3LjIgNTguMiA1MiA2Ny4yYy01LjIgOC44LTIzLjUtMTAuMS0yMy44LTEwLjUgMCAwLTU4LjItNTMuMS03MC44LTM5LjMtMTIuNiAxMy44IDkuNiAyNS40IDQxLjMgNDQuN3MzNC4yIDI0LjQgMjkuNyAzMS43LTc0LjUtNTItODEuMS0yNi44Yy02LjUgMjUuMSA3MS40IDMyLjQgNjYuNyA0OS44LTQuOCAxNy40LTU0LjktMzIuOC02NS4yLTEzLjMtMTAuMyAxOS42IDcwLjggNDIuNiA3MS40IDQyLjcgMjYuMiA2LjggOTIuNiAyMS4zIDExNS45LTEyLjkgMTYuNy0yNC42IDE1LjYtNDMuMS03LjQtNjYuMXMtMzYuMy01Ni43LTM2LjMtNTYuN2MwLS4yLTUtMTkuNS0xNi4zLTE3LjgtMTEuNCAxLjgtMTkuNyAzMSA0LjEgNDguOSAyMy44IDE3LjktNC43IDMwLTEzLjkgMTMuMy05LjItMTYuOC0zNC4yLTU5LjktNDcuMS02OC4yem0zNjAuNiAxMy40YzMuMS0xNy02LjEtMjEuNi0xOS0xMy40LTEzIDguMy0zNy45IDUxLjQtNDcuMSA2OC4ycy0zNy43IDQuNi0xMy45LTEzLjMgMTUuNC00Ny4xIDQuMS00OC45LTE2LjMgMTcuOC0xNi4zIDE3LjhjLS4xIC4yLTEzLjQgMzMuNy0zNi4zIDU2LjctMjIuOSAyMy0yNC4xIDQxLjUtNy40IDY2LjEgMjMuMiAzNC4yIDg5LjcgMTkuNyAxMTUuOSAxMi45IDEuNS0uNCA4MS42LTIzLjMgNzEuNC00Mi43LTEwLjMtMTkuNS02MC40IDMwLjYtNjUuMyAxMy4zLTQuOC0xNy4zIDczLjItMjQuNiA2Ni43LTQ5LjgtNi42LTI1LjEtNzYuNiAzNC4xLTgxLjEgMjYuOC00LjUtNy4zLTItMTIuNCAyOS43LTMxLjcgMzEuNy0xOS4zIDU0LTMwLjkgNDEuMy00NC43LTEyLjctMTMuOC03MC44IDM5LjMtNzAuOCAzOS4zLS40IC40LTE4LjYgMTkuMy0yMy44IDEwLjUtNS4zLTguOSA0OC45LTUwLjEgNTItNjcuMnpNMjg2LjggMzIuNmMtMTE2LjYgMC0yMTEuMSA5NC45LTIxMS4xIDIxMS45IDAgMTcuMSAyIDMzLjggNS44IDQ5LjcgMC0uMSAuMS0uMSAuMi0uMiA2LjEtNy40IDE0LjktMTEuNCAyNC43LTExLjQgMTcuNyAwIDMxLjEgMTEuOSA0MS41IDI0LjkgNi44LTkuNCAxNy4xLTE1IDI3LjktMTUgMjAuNyAwIDMzLjIgMTguMSAzNy45IDM0LjMgMi4zIDUuNSAxMy42IDMwLjUgMzAuNCA0Ny40IDI1LjcgMjUuOCAzMi4yIDUyLjQgMTkuNCA4MC45IDE2IDEuOCAzMi44IDEuNyA0OS4yLS4zLTEyLjUtMjguNC02LTU0LjkgMTkuNi04MC42IDE2LjktMTYuOSAyOC4xLTQxLjkgMzAuNS00Ny40IDQuNy0xNi4yIDE3LjItMzQuMyAzNy45LTM0LjMgMTAuOSAwIDIxLjIgNS42IDI3LjkgMTUgMTAuNC0xMyAyMy44LTI0LjkgNDEuNS0yNC45IDguNyAwIDE2LjYgMy4xIDIyLjUgOC45IDUtMjIgNi40LTQ1LjggNC4xLTY4LjctMTAuOC0xMDYuOS0xMDAuNy0xOTAuMy0yMTAtMTkwLjN6bTEuNSAyMzQuMmM0My42IDAgNzktNDIgNzktMTQuNSAwIDI3LjQtMTkuMiA4MC45LTc4LjggODAuOS0xOS4yIDAtMzQuMi01LjUtNDUuOC0xMy45LTIzLjItMTkuNC0zMy40LTQ4LjItMzMuNC02Ni45IDAtMjcuNCAzNS40IDE0LjUgNzkgMTQuNXptLTEzLjMgMjVjLTguMiAyLjQtMTUuNSA2LjgtMjEuNSAxMi42IDIyIDEyLjggNTAuNCAxMi45IDcxLjctMS4zLTUuNS00LjktMTItOC43LTE5LjEtMTEtNS4xLTEuNi0xMC40IDE1LjgtMTYgMTUuOC01LjIgMC0xMC4zLTE3LjYtMTUuMS0xNi4yek0xNDcuMSAyMTUuNWExOS44IDE5LjggMCAxIDEgMC0zOS42IDE5LjggMTkuOCAwIDEgMSAwIDM5LjZ6bTI4Mi40IDBhMTkuOCAxOS44IDAgMSAxIDAtMzkuNiAxOS44IDE5LjggMCAxIDEgMCAzOS42em0tMjQ0LTU1LjRjNy45LTE0LjkgMjYuMy0yMC41IDQxLjEtMTIuNnMyMC40IDI2LjQgMTIuNiA0MS4yYy0zLjcgNy0xNS41LTQuNC0yMi40LTEuOS03LjcgMi43LTEwLjggMTguNy0xOC42IDE0LjYtMTQuOC03LjktMjAuNC0yNi40LTEyLjYtNDEuMnptMTY0LjQtMTIuNmMxNC44LTcuOSAzMy4yLTIuMyA0MS4xIDEyLjZzMi4yIDMzLjMtMTIuNiA0MS4yYy03LjggNC4yLTEwLjktMTEuOC0xOC43LTE0LjYtNi45LTIuNC0xOC43IDktMjIuNCAxLjktNy45LTE0LjktMi4yLTMzLjMgMTIuNi00MS4yeiJdfSx1THQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToianhsIixpY29uOls0NDgsNTEyLFtdLCJlNjdiIiwiTTQxMi4yIDMyTDM1LjggMzJDMTYgMzIgMCA0OCAwIDY3LjhMMCA0NDQuMkMwIDQ2NCAxNiA0ODAgMzUuOCA0ODBsMzc2LjQgMGMxOS44IDAgMzUuOC0xNiAzNS44LTM1LjhsMC0zNzYuNEM0NDggNDggNDMyIDMyIDQxMi4yIDMyek0zNzguNiAzMzMuN2MwIDQwLjItMzIuNiA3Mi44LTcyLjggNzIuOGwtMjM1LjYgMGMwLTQwLjIgMzIuNi03Mi44IDcyLjgtNzIuOGwyMzUuNiAwem0wLTExMy45YzAgNDAuMi0zMi42IDcyLjgtNzIuOCA3Mi44bC0yMzUuNiAwYzAtNDAuMiAzMi42LTcyLjggNzIuOC03Mi44bDIzNS42IDB6bTAtMTEzLjljMCA0MC4yLTMyLjYgNzIuOC03Mi44IDcyLjhsLTIzNS42IDBjMC00MC4yIDMyLjYtNzIuOCA3Mi44LTcyLjhsMjM1LjYgMHoiXX0scEx0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNxdWFyZS1saW5rZWRpbiIsaWNvbjpbNDQ4LDUxMixbXSwiZTdkMCIsIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyem01IDE3MC4ybDY2LjUgMCAwIDIxMy44LTY2LjUgMCAwLTIxMy44em03MS43LTY3LjdhMzguNSAzOC41IDAgMSAxIC03NyAwIDM4LjUgMzguNSAwIDEgMSA3NyAwek0zMTcuOSA0MTZsMC0xMDRjMC0yNC44LS41LTU2LjctMzQuNS01Ni43LTM0LjYgMC0zOS45IDI3LTM5LjkgNTQuOWwwIDEwNS44LTY2LjQgMCAwLTIxMy44IDYzLjcgMCAwIDI5LjIgLjkgMGM4LjktMTYuOCAzMC42LTM0LjUgNjIuOS0zNC41IDY3LjIgMCA3OS43IDQ0LjMgNzkuNyAxMDEuOWwwIDExNy4yLTY2LjQgMHoiXX0saEx0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImNzcyIsaWNvbjpbNDQ4LDUxMixbXSwiZTZhMiIsIk0zNzYuMyAzMkwwIDMyIDAgNDA4LjNjMCAxOSA3LjYgMzcuMiAyMSA1MC43czMxLjcgMjEgNTAuNyAyMWwzMDQuNiAwYzE5IDAgMzcuMi03LjYgNTAuNy0yMXMyMS0zMS43IDIxLTUwLjdsMC0zMDQuNmMwLTE5LTcuNi0zNy4yLTIxLTUwLjdzLTMxLjctMjEtNTAuNy0yMXpNMzMyLjQgNDMxLjRjLTcuNy04LjUtMTEuNy0yMC43LTEyLTM2LjZsMzEuMyAwYy4yIDE0LjEgNS4xIDIxLjEgMTQuOCAyMS4xYzQuOSAwIDguNC0xLjYgMTAuNS00LjdjMi0zLjEgMy04IDMtMTQuOGMwLTUuNC0xLjMtOS45LTQtMTMuNGMtMy41LTQuMi04LjEtNy41LTEzLjItOS41TDM1MS4yIDM2OGMtMTAuMy00LjktMTcuOC0xMC44LTIyLjUtMTcuNmMtNC41LTYuOC02LjctMTYuMy02LjctMjguNGMwLTEzLjYgNC0yNC42IDExLjgtMzMuMWM4LjEtOC41IDE5LjEtMTIuNyAzMy4yLTEyLjdjMTMuNiAwIDI0LjEgNC4yIDMxLjUgMTIuNWM3LjUgOC40IDExLjUgMjAuMyAxMS44IDM1LjlsLTMwLjEgMGMuMi01LjEtLjktMTAuMi0zLTE0LjhjLTEuNy0zLjQtNS01LjEtMTAtNS4xYy04LjggMC0xMy4yIDUuMi0xMy4yIDE1LjdjMCA1LjMgMS4xIDkuNCAzLjIgMTIuNmMzLjEgMy41IDcgNi4yIDExLjQgNy44bDExLjEgNC45YzExLjUgNS4zIDE5LjcgMTEuNyAyNC44IDE5LjRjNS4xIDcuNyA3LjYgMTggNy42IDMxYzAgMTUuNS00IDI3LjQtMTIuMyAzNS43Yy04LjIgOC4zLTE5LjUgMTIuNS0zNC4xIDEyLjVzLTI1LjYtNC4yLTMzLjQtMTIuN3ptLTEwMSAwYy03LjctOC41LTExLjctMjAuNy0xMi0zNi42bDMxLjMgMGMuMiAxNC4xIDUuMSAyMS4xIDE0LjggMjEuMWM0LjkgMCA4LjQtMS42IDEwLjQtNC43YzItMy4xIDMtOCAzLTE0LjhjMC01LjQtMS4zLTkuOS0zLjktMTMuNGMtMy41LTQuMi04LjEtNy41LTEzLjItOS41TDI1MC4yIDM2OGMtMTAuMy00LjktMTcuOC0xMC44LTIyLjUtMTcuNmMtNC41LTYuOC02LjctMTYuMy02LjctMjguNGMwLTEzLjYgNC0yNC42IDExLjgtMzMuMWM4LjEtOC41IDE5LjEtMTIuNyAzMy4yLTEyLjdjMTMuNiAwIDI0LjEgNC4yIDMxLjQgMTIuNWM3LjYgOC40IDExLjUgMjAuMyAxMS45IDM1LjlsLTMwLjEgMGMuMi01LjEtLjktMTAuMi0zLTE0LjhjLTEuNy0zLjQtNS01LjEtMTAtNS4xYy04LjggMC0xMy4yIDUuMi0xMy4yIDE1LjdjMCA1LjMgMS4xIDkuNCAzLjIgMTIuNmMzLjEgMy41IDcgNi4yIDExLjQgNy44bDExLjEgNC45YzExLjUgNS4zIDE5LjcgMTEuNyAyNC44IDE5LjRjNS4xIDcuNyA3LjYgMTggNy42IDMxYzAgMTUuNS00LjEgMjcuNC0xMi4zIDM1LjdzLTE5LjUgMTIuNS0zNC4xIDEyLjVzLTI1LjYtNC4yLTMzLjQtMTIuN3ptLTEwNS42IDEuMWMtOC40LTcuNy0xMi41LTE5LjItMTIuNS0zNC41bDAtNzUuNGMwLTE1LjIgNC40LTI2LjcgMTMuMi0zNC42YzguOS03LjggMjAuNy0xMS44IDM1LjItMTEuOGMxNC4xIDAgMjUuMiA0IDMzLjQgMTJjOC4zIDggMTIuNSAyMCAxMi41IDM1LjlsMCA2LTMzLjEgMCAwLTUuOGMwLTYuMS0xLjMtMTAuNy00LTEzLjZjLTEuMS0xLjUtMi42LTIuNy00LjMtMy41cy0zLjUtMS4yLTUuNC0xLjFjLTUuNCAwLTkuMiAxLjgtMTEuNCA1LjZjLTIuMyA1LjItMy4zIDEwLjgtMyAxNi40bDAgNjUuNWMwIDEzLjcgNC44IDIwLjYgMTQuNCAyMC44YzQuNSAwIDcuOS0xLjYgMTAuMi00LjhjMi41LTQuMSAzLjctOC44IDMuNS0xMy42bDAtNC45IDMzLjEgMCAwIDUuMWMwIDEwLjYtMi4xIDE5LjUtNi4yIDI2LjZjLTQgNi45LTkuOSAxMi41LTE3LjEgMTZjLTcuNyAzLjctMTYuMSA1LjUtMjQuNiA1LjNjLTE0LjIgMC0yNS41LTMuOS0zMy44LTExLjZ6Il19LGZMdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJoYXNobm9kZSIsaWNvbjpbNTEyLDUxMixbXSwiZTQ5OSIsIk0zNS43IDE3MS4xYy00Ni45IDQ2LTQ2LjkgMTIyLjkgMCAxNjkuOEwxNzEuNiA0NzYuOGM0NiA0Ni45IDEyMi45IDQ2LjkgMTY5LjggMEw0NzcuMyAzNDAuOWM0Ni45LTQ2LjkgNDYuOS0xMjMuOCAwLTE2OS44TDM0MS40IDM1LjJjLTQ2LjktNDYuOS0xMjMuOC00Ni45LTE2OS44IDBMMzUuNyAxNzEuMXpNMTk2IDE5Ni41YTg0LjUgODQuNSAwIDEgMSAxMjAgMTE5IDg0LjUgODQuNSAwIDEgMSAtMTIwLTExOXoiXX0sbUx0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InJlZGRpdC1hbGllbiIsaWNvbjpbNTEyLDUxMixbXSwiZjI4MSIsIk0zNzMgMTM4LjZjLTI1LjIgMC00Ni4zLTE3LjUtNTEuOS00MS0zMC42IDQuMy01NC4yIDMwLjctNTQuMiA2Mi40bDAgLjJjNDcuNCAxLjggOTAuNiAxNS4xIDEyNC45IDM2LjMgMTIuNi05LjcgMjguNC0xNS41IDQ1LjUtMTUuNSA0MS4zIDAgNzQuNyAzMy40IDc0LjcgNzQuNyAwIDI5LjgtMTcuNCA1NS41LTQyLjcgNjcuNS0yLjQgODYuOC05NyAxNTYuNi0yMTMuMiAxNTYuNlM0NS41IDQxMC4xIDQzIDMyMy40Yy0yNS40LTExLjktNDMtMzcuNy00My02Ny43IDAtNDEuMyAzMy40LTc0LjcgNzQuNy03NC43IDE3LjIgMCAzMyA1LjggNDUuNyAxNS42IDM0LTIxLjEgNzYuOC0zNC40IDEyMy43LTM2LjRsMC0uM2MwLTQ0LjMgMzMuNy04MC45IDc2LjgtODUuNSA0LjktMjQuMiAyNi4zLTQyLjQgNTIuMS00Mi40IDI5LjQgMCA1My4zIDIzLjkgNTMuMyA1My4zcy0yMy45IDUzLjMtNTMuMyA1My4zek0xNTcuNSAyNTUuM2MtMjAuOSAwLTM4LjkgMjAuOC00MC4yIDQ3LjlzMTcuMSAzOC4xIDM4IDM4LjEgMzYuNi05LjggMzcuOC0zNi45LTE0LjctNDkuMS0zNS43LTQ5LjFsLjEgMHpNMzk1IDMwMy4xYy0xLjItMjcuMS0xOS4yLTQ3LjktNDAuMi00Ny45cy0zNi45IDIyLTM1LjcgNDkuMSAxNi45IDM2LjkgMzcuOCAzNi45IDM5LjMtMTEgMzgtMzguMWwuMSAwem0tNjAuMSA3MC44YzEuNS0zLjYtMS03LjctNC45LTguMS0yMy0yLjMtNDcuOS0zLjYtNzMuOC0zLjZzLTUwLjggMS4zLTczLjggMy42Yy0zLjkgLjQtNi40IDQuNS00LjkgOC4xIDEyLjkgMzAuOCA0My4zIDUyLjQgNzguNyA1Mi40czY1LjgtMjEuNiA3OC43LTUyLjR6Il19LCRiPXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InRpa3RvayIsaWNvbjpbNDQ4LDUxMixbXSwiZTA3YiIsIk00NDguNSAyMDkuOWMtNDQgLjEtODctMTMuNi0xMjIuOC0zOS4ybDAgMTc4LjdjMCAzMy4xLTEwLjEgNjUuNC0yOSA5Mi42cy00NS42IDQ4LTc2LjYgNTkuNi02NC44IDEzLjUtOTYuOSA1LjMtNjAuOS0yNS45LTgyLjctNTAuOC0zNS4zLTU2LTM5LTg4LjkgMi45LTY2LjEgMTguNi05NS4yIDQwLTUyLjcgNjkuNi02Ny43IDYyLjktMjAuNSA5NS43LTE2bDAgODkuOWMtMTUtNC43LTMxLjEtNC42LTQ2IC40cy0yNy45IDE0LjYtMzcgMjcuMy0xNCAyOC4xLTEzLjkgNDMuOSA1LjIgMzEgMTQuNSA0My43IDIyLjQgMjIuMSAzNy40IDI2LjkgMzEuMSA0LjggNDYtLjEgMjgtMTQuNCAzNy4yLTI3LjEgMTQuMi0yOC4xIDE0LjItNDMuOGwwLTM0OS40IDg4IDBjLS4xIDcuNCAuNiAxNC45IDEuOSAyMi4yIDMuMSAxNi4zIDkuNCAzMS45IDE4LjcgNDUuN3MyMS4zIDI1LjYgMzUuMiAzNC42YzE5LjkgMTMuMSA0My4yIDIwLjEgNjcgMjAuMWwwIDg3LjR6Il19LGdMdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ3b3JkcHJlc3MiLGljb246WzUxMiw1MTIsW10sImYxOWEiLCJNNjEuNyAxNjkuNGwxMDEuNSAyNzhjLTcxLTM0LjQtMTE5LjktMTA3LjItMTE5LjktMTkxLjQgMC0zMC45IDYuNi02MC4xIDE4LjQtODYuNnptMzM3LjkgNzUuOWMwLTI2LjMtOS40LTQ0LjUtMTcuNS01OC43LTEwLjgtMTcuNS0yMC45LTMyLjQtMjAuOS00OS45IDAtMTkuNiAxNC44LTM3LjggMzUuNy0zNy44IC45IDAgMS44IC4xIDIuOCAuMi0zNy45LTM0LjctODguMy01NS45LTE0My43LTU1LjktNzQuMyAwLTEzOS43IDM4LjEtMTc3LjggOTUuOSA1IC4yIDkuNyAuMyAxMy43IC4zIDIyLjIgMCA1Ni43LTIuNyA1Ni43LTIuNyAxMS41LS43IDEyLjggMTYuMiAxLjQgMTcuNSAwIDAtMTEuNSAxLjMtMjQuMyAybDc3LjUgMjMwLjQgNDYuNi0xMzkuNi0zMy4xLTkwLjhjLTExLjUtLjctMjIuMy0yLTIyLjMtMi0xMS41LS43LTEwLjEtMTguMiAxLjMtMTcuNSAwIDAgMzUuMSAyLjcgNTYgMi43IDIyLjIgMCA1Ni43LTIuNyA1Ni43LTIuNyAxMS41LS43IDEyLjggMTYuMiAxLjQgMTcuNSAwIDAtMTEuNSAxLjMtMjQuMyAybDc2LjkgMjI4LjcgMjEuMi03MC45YzktMjkuNCAxNi01MC41IDE2LTY4Ljd6TTI1OS43IDI3NC42TDE5NS45IDQ2MC4xYzE5LjEgNS42IDM5LjIgOC43IDYwLjEgOC43IDI0LjggMCA0OC41LTQuMyA3MC42LTEyLjEtLjYtLjktMS4xLTEuOS0xLjUtMi45TDI1OS43IDI3NC42em0xODMtMTIwLjdjLjkgNi44IDEuNCAxNCAxLjQgMjEuOSAwIDIxLjYtNCA0NS44LTE2LjIgNzYuMmwtNjUgMTg3LjljNjMuMy0zNi45IDEwNS44LTEwNS40IDEwNS44LTE4My45IDAtMzctOS40LTcxLjgtMjYtMTAyLjF6TTggMjU2YTI0OCAyNDggMCAxIDEgNDk2IDAgMjQ4IDI0OCAwIDEgMSAtNDk2IDB6bTQ4NC42IDBhMjM2LjYgMjM2LjYgMCAxIDAgLTQ3My4yIDAgMjM2LjYgMjM2LjYgMCAxIDAgNDczLjIgMHoiXX0sYkx0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImlkZWFsIixpY29uOls1MTIsNTEyLFtdLCJlMDEzIiwiTTkzLjggMTY1LjVhNDkuMSA0OS4xIDAgMSAwIDAgOTguMSA0OS4xIDQ5LjEgMCAxIDAgMC05OC4xek01NC4zIDQyNS44bDc4LjkgMCAwLTE0MC41LTc4LjkgMCAwIDE0MC41ek0yMDUuOCAyMTQuMmMwLTIwLTEwLTIyLjUtMTguNy0yMi41bC0xNCAwIDAgNDUuOCAxNCAwYzkuNyAwIDE4LjctMi44IDE4LjctMjMuM3ptMjAxLjcgNDZsMC05MS4zIDIyLjggMCAwIDY4LjYgMzMuNyAwQzQ1NC42IDExMy4xIDM1Ni44IDg2LjIgMjY3LjggODYuMmwtOTQuOCAwIDAgODIuOCAxNCAwYzI1LjYgMCA0MS41IDE3LjQgNDEuNSA0NS4zIDAgMjguOC0xNS41IDQ2LTQxLjUgNDZsLTE0IDAgMCAxNjUuNiA5NC44IDBjMTQ0LjYgMCAxOTQuOS02Ny4yIDE5Ni43LTE2NS42bC01Ny4xIDB6bS0xMDkuOCAwbC01Ni4yIDAgMC05MS4yIDU0LjQgMCAwIDIyLjctMzEuNyAwIDAgMTAuNiAzMCAwIDAgMjIuNy0zMCAwIDAgMTIuNSAzMy41IDAgMCAyMi43em03NC43IDBsLTUuMi0xNy43LTI5LjcgMC01LjIgMTcuNy0yMy43IDAgMjcuNS05MS4zIDMyLjMgMCAyNy41IDkxLjMtMjMuNyAwek0yNjcuOCAzMkwuMSAzMiAuMSA0ODAgMjY3LjggNDgwYzE2MS44IDAgMjUxLTc5LjcgMjUxLTIyNC41IDAtODMuNS0zMi42LTIyMy41LTI1MS0yMjMuNXptMCA0MjYuOWwtMjQ2LjYgMCAwLTQwNS45IDI0Ni42IDBjMTQyLjEgMCAyMjkuOSA2NC42IDIyOS45IDIwMi40IDAgMTM0LjEtODEgMjAzLjQtMjI5LjkgMjAzLjR6bTgzLjktMjY0LjlsLTcuNSAyNS44IDE2LjQgMC03LjUtMjUuOC0xLjQgMHoiXX0sdkx0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InBpZWQtcGlwZXItcHAiLGljb246WzQ0OCw1MTIsW10sImYxYTciLCJNMjA1LjMgMTc0LjZjMCAyMS4xLTE0LjIgMzguMS0zMS43IDM4LjEtNy4xIDAtMTIuOC0xLjItMTcuMi0zLjdsMC02OGM0LjQtMi43IDEwLjEtNC4yIDE3LjItNC4yIDE3LjUgMCAzMS43IDE2LjkgMzEuNyAzNy44em01Mi42IDY3Yy03LjEgMC0xMi44IDEuNS0xNy4yIDQuMmwwIDY4YzQuNCAyLjUgMTAuMSAzLjcgMTcuMiAzLjcgMTcuNCAwIDMxLjctMTYuOSAzMS43LTM3LjggMC0yMS4xLTE0LjMtMzguMS0zMS43LTM4LjF6TTQ0OCA4MGwwIDM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEw0OCA0ODBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4TDAgODBDMCA1My41IDIxLjUgMzIgNDggMzJsMzUyIDBjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTE4NSAyNTUuMWM0MSAwIDc0LjItMzUuNiA3NC4yLTc5LjZTMjI2IDk1LjkgMTg1IDk1LjljLTEyIDAtMjQuMSAzLjItMzQuNiA4LjhsLTQ1LjcgMCAwIDIwNi4zIDUxLjgtMTAuMSAwLTUwLjZjOC42IDMuMSAxOC4xIDQuOCAyOC41IDQuOHptMTU4LjQgMjUuM2MwLTQ0LTMzLjItNzkuNi03My45LTc5LjYtMy4yIDAtNi40IC4yLTkuNiAuNy0zLjcgMTIuNS0xMC4xIDIzLjgtMTkuMiAzMy40LTEzLjggMTUtMzIuMiAyMy44LTUxLjggMjQuOGwwIDE1Ni4zIDUxLjgtMTAuMSAwLTUwLjZjOC42IDMuMiAxOC4yIDQuNyAyOC43IDQuNyA0MC44IDAgNzQtMzUuNiA3NC03OS42eiJdfSx4THQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToidXNzdW5uYWgiLGljb246WzUxMiw1MTIsW10sImY0MDciLCJNNDk2LjkgMjY4LjFjMCA2My45LTI1LjQgMTI1LjItNzAuNiAxNzAuM1MzMTkuOSA1MDkgMjU2IDUwOSAxMzAuOCA0ODMuNSA4NS43IDQzOC40IDE1LjEgMzMxLjkgMTUuMSAyNjhjMC02My45IDI1LjQtMTI1LjIgNzAuNi0xNzAuNFMxOTIuMiAyNy4xIDI1Ni4xIDI3LjEgMzgxLjMgNTIuNCA0MjYuNSA5Ny42IDQ5NyAyMDQuMSA0OTcgMjY4bC0uMSAuMXpNMzkuNSAyNjhjLS42IDI4LjggNC41IDU3LjUgMTUuMSA4NC4zczI2LjQgNTEuMiA0Ni42IDcxLjggNDQuMiAzNyA3MC44IDQ4LjEgNTUuMSAxNi45IDgzLjkgMTYuOSA1Ny40LTUuOCA4My45LTE2LjkgNTAuNi0yNy41IDcwLjgtNDguMSAzNi00NSA0Ni42LTcxLjggMTUuNy01NS41IDE1LjEtODQuM2MuNi0yOC44LTQuNS01Ny41LTE1LjEtODQuM3MtMjYuNC01MS4yLTQ2LjYtNzEuOC00NC4yLTM3LTcwLjgtNDguMS01NS4xLTE2LjktODMuOS0xNi45LTU3LjQgNS44LTgzLjkgMTYuOS01MC42IDI3LjUtNzAuOCA0OC4xLTM2IDQ1LTQ2LjYgNzEuOC0xNS43IDU1LjUtMTUuMSA4NC4zem0zODUuOSA2My4zYy0xMi43IDAtMjEuNi0xLjktMjYuNy01LjktNS41LTQuMy04LjItMTIuMy04LjItMjMuOGwwLTk2LjVjMC02LjUtNS4yLTIwLjItMTUuNy00MS4yIDcgMCAxNy05LjEgMzAtMjcuMmwwIDE0Ny44YzAgMTEgMi40IDE5LjQgNyAyNS4zIDMuNyA0LjcgMTAuMSA4LjkgMTkgMTIuNiAxLjIgLjQgMi42IC45IDQuMSAxLjQgMi45IC45IDYuMyAyLjEgMTAuMyAzLjUtMS44IDIuNy04LjMgNC0xOS45IDRsLjEgMHptLTIxOSAwYy0xLjMgMi40LTMuNiA1LjUtNi44IDkuNGwtMTguNSAyMi41Yy0xLTYuMS00LTEzLTkuMy0yMC42cy05LjctMTEuNC0xMy40LTExLjRsLTg5LjggMGMzLjMtNS4zIDQuOS04LjggNC45LTEwLjhzLS44LTUuMy0yLjQtOS43Yy0xLjUtNC40LTIuNC04LjUtMi40LTEyLjQgMC03LjQgMi4xLTEzLjkgNi4zLTE5LjNsMjAtMjUuNi03LjEtMTcuNyAxNi4xLTE5LjggNi43IDE2LjggOC0xMC4zYy0xLjggNi40LTIuNiAxMi4zLTIuNiAxNy43IDAgNC4yIDIuOCAxMy4zIDguMyAyNy4zbDE2LjIgNDAuNyAxNy43IDBjMi44IC40IDcuNyA1IDE0LjYgMTMuOSAxLjggMi40IDQuMyA1LjggNy43IDEwLjIgMS40IDEuOSAyLjkgMy45IDQuNiA2LjEgMS4zLTIuMyAyLTQuNiAyLTcuMSAwLTItMS4zLTYuNi00LTEzLjRMMTc4IDMwNC4xYy00LTEwLjYtNi4xLTE3LjctNi4xLTIxLjMgMC02LjMgMS45LTEyLjMgNS44LTE3LjkgLjUtLjYgMS0xLjMgMS41LTEuOSA0LjQtNS42IDguOC0xMS4xIDEzLjMtMTYuNS0xLjEgNC42LTEuNyA4LjctMS43IDEyIDAgMy43IDEuNyA5LjkgNS4xIDE4LjhsNy45IDIwLjRjMS45IDQuNyAzIDguMiAzLjcgMTAuM2wyNS45IDAtLjktMi42Yy0xLjQtMy45LTQtNy03LjctOS4zbDE1LjYtMjAuMSAxMi4zIDMyIDEzLjQgMC02LjEtMTUuOGMtMS41LTMuOS00LTctNy43LTkuM2wxNS43LTIwLjEgMTcuMyA0NS4yIDEzLjQgMC0xMS40LTI5LjRjLTEuNS0zLjktNC03LTcuNy05LjNsMTUuNi0yMCAyMi40IDU4LjcgMjYuMiAwYzEuNSAwIDMtMS4xIDQuNS0zLjFzMi4yLTQuMSAyLjItNi4zbDAtOTMuNWMwLTYuNS00LjUtMjAuMy0xMy43LTQxLjIgNS40IDAgMTQuMS05LjEgMjYuMi0yNy4ybDAgMTYzLjVjMCA3LjIgLjYgMTIgMS43IDE0LjYgMS42IDMuNCA1LjMgNi4yIDExLjEgOC4yLTMuOSA1LjYtOC43IDguNS0xNC41IDguNWwtMTU0LjggMC0uMS0uMnptLTk4LTQ0Yy0yLjctNi43LTQtMTEuNy00LTE1LS42IDEuMi0yLjQgMy43LTUuNCA3LjYtMS40IDEuOS0yLjIgMy43LTIuMiA1LjMgMCAyLjYgLjggNS43IDIuMiA5LjNsNS42IDEzLjljNSAwIDkgMCAxMS45LS4xbC04LjItMjAuOSAuMS0uMXptMTMuNS03Mi40Yy0zLTUuMi03LTkuMy0xMS45LTExLjktMy41LTEuOS01LjMtNC4zLTUuMy03LjQgMC0yLjQgNC42LTguNiAxNC0xOC4zIC4yIDMuOCAxLjkgNy42IDQuOSAxMS4yIDMuMSAzLjYgNC42IDcgNC42IDEwLjEgMCAyLjYtMi4xIDgtNi4yIDE2LjNsLS4xIDB6bS0yNy42IDBjLTMtNS4yLTctOS4zLTExLjktMTEuOS0zLjUtMS45LTUuMy00LjMtNS4zLTcuNCAwLTIuNCA0LjYtOC42IDE0LTE4LjMgLjIgMy44IDEuOSA3LjYgNC45IDExLjIgMy4xIDMuNiA0LjYgNyA0LjYgMTAuMSAwIDIuNi0yLjEgOC02LjIgMTYuM2wtLjEgMHptODcgMjcuNWMtMy01LjItNy05LjMtMTEuOS0xMS45LTMuNS0xLjktNS4zLTQuMy01LjMtNy40IDAtMi40IDQuNi04LjYgMTQtMTguMyAuMiAzLjggMS45IDcuNiA0LjkgMTEuMiAzLjEgMy42IDQuNiA3IDQuNiAxMC4xIDAgMi42LTIuMSA4LTYuMiAxNi4zbC0uMSAweiJdfSx5THQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZm9ydC1hd2Vzb21lLWFsdCIsaWNvbjpbNTEyLDUxMixbXSwiZjNhMyIsIk0yMDggMjM3LjRsLTIyLjIgMGMtMi4xIDAtMy43IDEuNi0zLjcgMy43bDAgNTEuN2MwIDIuMSAxLjYgMy43IDMuNyAzLjdsMjIuMiAwYzIuMSAwIDMuNy0xLjYgMy43LTMuN2wwLTUxLjdjMC0yLjEtMS42LTMuNy0zLjctMy43em0xMTguMiAwbC0yMi4yIDBjLTIuMSAwLTMuNyAxLjYtMy43IDMuN2wwIDUxLjdjMCAyLjEgMS42IDMuNyAzLjcgMy43bDIyLjIgMGMyLjEgMCAzLjctMS42IDMuNy0zLjdsMC01MS43Yy0uMS0yLjEtMS43LTMuNy0zLjctMy43em0xMzItMTI1LjFjLTIuMy0zLjItNC42LTYuNC03LjEtOS41LTkuOC0xMi41LTIwLjgtMjQtMzIuOC0zNC40LTQuNS0zLjktOS4xLTcuNi0xMy45LTExLjItMS42LTEuMi0zLjItMi4zLTQuOC0zLjUtMjcuNi0xOS42LTU5LjMtMzMuNy05My42LTQwLjctMTYuMi0zLjMtMzIuOS01LTUwLTVzLTMzLjkgMS43LTUwIDVjLTM0LjMgNy4xLTY2IDIxLjItOTMuMyA0MC44LTEuNiAxLjEtMy4yIDIuMy00LjggMy41LTQuOCAzLjYtOS40IDcuMy0xMy45IDExLjItMyAyLjYtNS45IDUuMy04LjggOHMtNS43IDUuNS04LjQgOC40Yy01LjUgNS43LTEwLjcgMTEuOC0xNS42IDE4LTIuNCAzLjEtNC44IDYuMy03LjEgOS41LTI4LjkgNDAuNi00NS44IDkwLjEtNDUuOCAxNDMuNiAwIDIgLjEgNCAuMSA2IC4xIC43IC4xIDEuMyAuMSAyIC4xIDEuMyAuMSAyLjcgLjIgNCAwIC44IC4xIDEuNSAuMSAyLjMgMCAxLjMgLjEgMi41IC4yIDMuNyAuMSAuOCAuMSAxLjYgLjIgMi40IC4xIDEuMSAuMiAyLjMgLjMgMy41IDAgLjggLjEgMS42IC4yIDIuNCAuMSAxLjIgLjMgMi40IC40IDMuNiAuMSAuOCAuMiAxLjUgLjMgMi4zIC4xIDEuMyAuMyAyLjYgLjUgMy45IC4xIC42IC4yIDEuMyAuMyAxLjlsLjkgNS43Yy4xIC42IC4yIDEuMSAuMyAxLjcgLjMgMS4zIC41IDIuNyAuOCA0IC4yIC44IC4zIDEuNiAuNSAyLjQgLjIgMSAuNSAyLjEgLjcgMy4yIC4yIC45IC40IDEuNyAuNiAyLjYgLjIgMSAuNCAyIC43IDMgLjIgLjkgLjUgMS44IC43IDIuNyAuMyAxIC41IDEuOSAuOCAyLjkgLjMgLjkgLjUgMS44IC44IDIuNyAuMiAuOSAuNSAxLjkgLjggMi44cy41IDEuOCAuOCAyLjdjLjMgMSAuNiAxLjkgLjkgMi44IC42IDEuNiAxLjEgMy4zIDEuNyA0LjkgLjQgMSAuNyAxLjkgMSAyLjggLjMgMSAuNyAyIDEuMSAzIC4zIC44IC42IDEuNSAuOSAyLjNsMS4yIDNjLjMgLjcgLjYgMS41IC45IDIuMiAuNCAxIC45IDIgMS4zIDNsLjkgMi4xYy41IDEgLjkgMiAxLjQgMyAuMyAuNyAuNiAxLjMgLjkgMiAuNSAxIDEgMi4xIDEuNSAzLjEgLjIgLjYgLjUgMS4xIC44IDEuNyAuNiAxLjEgMS4xIDIuMiAxLjcgMy4zIC4xIC4yIC4yIC4zIC4zIC41IDIuMiA0LjEgNC40IDguMiA2LjggMTIuMiAuMiAuNCAuNSAuOCAuNyAxLjIgLjcgMS4xIDEuMyAyLjIgMiAzLjMgLjMgLjUgLjYgLjkgLjkgMS40IC42IDEuMSAxLjMgMi4xIDIgMy4yIC4zIC41IC42IC45IC45IDEuNCAuNyAxLjEgMS40IDIuMSAyLjEgMy4yIC4yIC40IC41IC44IC44IDEuMiAuNyAxLjEgMS41IDIuMiAyLjMgMy4zIC4yIC4yIC4zIC41IC41IC43IDM3LjUgNTEuNyA5NC40IDg4LjUgMTYwIDk5LjQgLjkgLjEgMS43IC4zIDIuNiAuNCAxIC4yIDIuMSAuNCAzLjEgLjVzMS45IC4zIDIuOCAuNGMxIC4yIDIgLjMgMyAuNCAuOSAuMSAxLjkgLjIgMi45IC4zczEuOSAuMiAyLjkgLjMgMi4xIC4yIDMuMSAuM2MuOSAuMSAxLjggLjEgMi43IC4yIDEuMSAuMSAyLjMgLjEgMy40IC4yIC44IDAgMS43IC4xIDIuNSAuMSAxLjMgMCAyLjYgLjEgMy45IC4xIC43IC4xIDEuNCAuMSAyLjEgLjEgMiAuMSA0IC4xIDYgLjFzNC0uMSA2LS4xYy43IDAgMS40LS4xIDIuMS0uMSAxLjMgMCAyLjYgMCAzLjktLjEgLjggMCAxLjctLjEgMi41LS4xIDEuMS0uMSAyLjMtLjEgMy40LS4yIC45IDAgMS44LS4xIDIuNy0uMiAxLS4xIDIuMS0uMiAzLjEtLjNzMS45LS4yIDIuOS0uM2MuOS0uMSAxLjktLjIgMi45LS4zczItLjMgMy0uNCAxLjktLjMgMi44LS40YzEtLjIgMi4xLS4zIDMuMS0uNSAuOS0uMSAxLjctLjMgMi42LS40IDY1LjYtMTEgMTIyLjUtNDcuNyAxNjAuMS0xMDIuNCAuMi0uMiAuMy0uNSAuNS0uNyAuOC0xLjEgMS41LTIuMiAyLjMtMy4zIC4yLS40IC41LS44IC44LTEuMiAuNy0xLjEgMS40LTIuMSAyLjEtMy4yIC4zLS41IC42LS45IC45LTEuNCAuNi0xLjEgMS4zLTIuMSAyLTMuMiAuMy0uNSAuNi0uOSAuOS0xLjQgLjctMS4xIDEuMy0yLjIgMi0zLjMgLjItLjQgLjUtLjggLjctMS4yIDIuNC00IDQuNi04LjEgNi44LTEyLjIgLjEtLjIgLjItLjMgLjMtLjUgLjYtMS4xIDEuMS0yLjIgMS43LTMuMyAuMi0uNiAuNS0xLjEgLjgtMS43IC41LTEgMS0yLjEgMS41LTMuMSAuMy0uNyAuNi0xLjMgLjktMiAuNS0xIDEtMiAxLjQtM2wuOS0yLjFjLjUtMSAuOS0yIDEuMy0zIC4zLS43IC42LTEuNSAuOS0yLjJsMS4yLTNjLjMtLjggLjYtMS41IC45LTIuMyAuNC0xIC43LTIgMS4xLTNzLjctMS45IDEtMi44Yy42LTEuNiAxLjItMy4zIDEuNy00LjkgLjMtMSAuNi0xLjkgLjktMi44cy41LTEuOCAuOC0yLjdjLjItLjkgLjUtMS45IC44LTIuOHMuNi0xLjggLjgtMi43Yy4zLTEgLjUtMS45IC44LTIuOSAuMi0uOSAuNS0xLjggLjctMi43IC4yLTEgLjUtMiAuNy0zIC4yLS45IC40LTEuNyAuNi0yLjYgLjItMSAuNS0yLjEgLjctMy4yIC4yLS44IC4zLTEuNiAuNS0yLjQgLjMtMS4zIC42LTIuNyAuOC00IC4xLS42IC4yLTEuMSAuMy0xLjdsLjktNS43Yy4xLS42IC4yLTEuMyAuMy0xLjkgLjEtMS4zIC4zLTIuNiAuNS0zLjkgLjEtLjggLjItMS41IC4zLTIuMyAuMS0xLjIgLjMtMi40IC40LTMuNiAwLS44IC4xLTEuNiAuMi0yLjQgLjEtMS4xIC4yLTIuMyAuMy0zLjUgLjEtLjggLjEtMS42IC4yLTIuNCAuMSAxLjcgLjEgLjUgLjItLjcgMC0uOCAuMS0xLjUgLjEtMi4zIC4xLTEuMyAuMi0yLjcgLjItNCAuMS0uNyAuMS0xLjMgLjEtMiAuMS0yIC4xLTQgLjEtNiAwLTUzLjUtMTYuOS0xMDMtNDUuOC0xNDMuN3pNNDQ4IDM3MS41Yy05LjQgMTUuNS0yMC42IDI5LjktMzMuNiA0Mi45LTIwLjYgMjAuNi00NC41IDM2LjctNzEuMiA0OC0xMy45IDUuOC0yOC4yIDEwLjMtNDIuOSAxMy4ybDAtNzUuOGMwLTU4LjYtODguNi01OC42LTg4LjYgMGwwIDc1LjhjLTE0LjctMi45LTI5LTcuMy00Mi45LTEzLjItMjYuNy0xMS4zLTUwLjYtMjcuNC03MS4yLTQ4LTEzLTEzLTI0LjItMjcuNC0zMy42LTQyLjlsMC03MS4zYzAtMi4xIDEuNi0zLjcgMy43LTMuN2wyMi4xIDBjMi4xIDAgMy43IDEuNiAzLjcgMy43bDAgMjUuOCAyOS42IDAgMC0xNDRjMC0yLjEgMS42LTMuNyAzLjctMy43bDIyLjEgMGMyLjEgMCAzLjcgMS42IDMuNyAzLjdsMCAyNS45IDI5LjUgMCAwLTI1LjljMC0yLjEgMS42LTMuNyAzLjctMy43bDIyLjIgMGMyLjEgMCAzLjcgMS42IDMuNyAzLjdsMCAyNS45IDI5LjUgMCAwLTI1LjljMC00LjggNi41LTMuNyA5LjUtMy43bDAtOTAuMmMtNC40LTItNy40LTYuNy03LjQtMTEuNSAwLTE2LjggMjUuNC0xNi44IDI1LjQgMCAwIDQuOC0zIDkuNC03LjQgMTEuNWwwIDMuOWM2LjMtMS40IDEyLjctMi4zIDE5LjItMi4zIDkuNCAwIDE4LjQgMy41IDI2LjMgMy41IDcuMiAwIDE1LjItMy41IDE5LjQtMy41IDIuMSAwIDMuNyAxLjYgMy43IDMuN2wwIDQ4LjRjMCA1LjYtMTguNyA2LjUtMjIuNCA2LjUtOC42IDAtMTYuNi0zLjUtMjUuNC0zLjUtNyAwLTE0LjEgMS4yLTIwLjggMi44bDAgMzAuN2MzIDAgOS41LTEuMSA5LjUgMy43bDAgMjUuOSAyOS41IDAgMC0yNS45YzAtMi4xIDEuNi0zLjcgMy43LTMuN2wyMi4yIDBjMi4xIDAgMy43IDEuNiAzLjcgMy43bDAgMjUuOSAyOS41IDAgMC0yNS45YzAtMi4xIDEuNi0zLjcgMy43LTMuN2wyMi4xIDBjMi4xIDAgMy43IDEuNiAzLjcgMy43bDAgMTQ0IDI5LjUgMCAwLTI1LjhjMC0yLjEgMS42LTMuNyAzLjctMy43bDIyLjIgMGMyLjEgMCAzLjcgMS42IDMuNyAzLjdsMCA3MS4zeiJdfSx3THQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiYnVyb21vYmVsZXhwZXJ0ZSIsaWNvbjpbNDQ4LDUxMixbXSwiZjM3ZiIsIk0wIDMybDAgMTI4IDEyOCAwIDAtMTI4LTEyOCAwek0xMjAgMTUybC0xMTIgMCAwLTExMiAxMTIgMCAwIDExMnpNMTYwIDMybDAgMTI4IDEyOCAwIDAtMTI4LTEyOCAwek0yODAgMTUybC0xMTIgMCAwLTExMiAxMTIgMCAwIDExMnpNMzIwIDMybDAgMTI4IDEyOCAwIDAtMTI4LTEyOCAwek00NDAgMTUybC0xMTIgMCAwLTExMiAxMTIgMCAwIDExMnpNMCAxOTJsMCAxMjggMTI4IDAgMC0xMjgtMTI4IDB6TTEyMCAzMTJsLTExMiAwIDAtMTEyIDExMiAwIDAgMTEyem00MC0xMjBsMCAxMjggMTI4IDAgMC0xMjgtMTI4IDB6TTI4MCAzMTJsLTExMiAwIDAtMTEyIDExMiAwIDAgMTEyem00MC0xMjBsMCAxMjggMTI4IDAgMC0xMjgtMTI4IDB6TTQ0MCAzMTJsLTExMiAwIDAtMTEyIDExMiAwIDAgMTEyek0wIDM1MmwwIDEyOCAxMjggMCAwLTEyOC0xMjggMHpNMTIwIDQ3MmwtMTEyIDAgMC0xMTIgMTEyIDAgMCAxMTJ6bTQwLTEyMGwwIDEyOCAxMjggMCAwLTEyOC0xMjggMHpNMjgwIDQ3MmwtMTEyIDAgMC0xMTIgMTEyIDAgMCAxMTJ6bTQwLTEyMGwwIDEyOCAxMjggMCAwLTEyOC0xMjggMHoiXX0sa0x0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImJpbGliaWxpIixpY29uOls1MTIsNTEyLFtdLCJlM2Q5IiwiTTQ4OC42IDEwNC4xYzE2LjcgMTguMSAyNC40IDM5LjcgMjMuMyA2NS43bDAgMjAyLjRjLS40IDI2LjQtOS4yIDQ4LjEtMjYuNSA2NS4xLTE3LjIgMTctMzkuMSAyNS45LTY1LjUgMjYuN0w5MiA0NjRjLTI2LjQtLjgtNDguMi05LjgtNjUuMy0yNy4yLTE3LjEtMTcuNC0yNi00MC4zLTI2LjctNjguNkwwIDE2OS44Yy44LTI2IDkuNy00Ny42IDI2LjctNjUuNyAxNy4xLTE2LjMgMzguOC0yNS4zIDY1LjMtMjYuMWwyOS40IDAtMjUuNC0yNS44Yy01LjctNS43LTguNi0xMy04LjYtMjEuOHMyLjktMTYuMSA4LjYtMjEuOCAxMy04LjYgMjEuOS04LjYgMTYuMSAyLjkgMjEuOSA4LjZsNzMuMyA2OS40IDg4IDAgNzQuNS02OS40QzM4MS43IDIuOSAzODkuMiAwIDM5OCAwczE2LjEgMi45IDIxLjkgOC42YzUuNyA1LjcgOC42IDEzIDguNiAyMS44cy0yLjkgMTYuMS04LjYgMjEuOEwzOTQuNiA3OCA0MjMuOSA3OGMyNi40IC44IDQ4IDkuOCA2NC43IDI2LjF6bS0zOC44IDY5LjdjLS40LTkuNi0zLjctMTcuNC0xMC43LTIzLjUtNS4yLTYuMS0xNC05LjQtMjIuNy05LjhsLTMyMC40IDBjLTkuNiAuNC0xNy40IDMuNy0yMy42IDkuOC02LjEgNi4xLTkuNCAxMy45LTkuOCAyMy41bDAgMTk0LjRjMCA5LjIgMy4zIDE3IDkuOCAyMy41czE0LjQgOS44IDIzLjYgOS44bDMyMC40IDBjOS4yIDAgMTctMy4zIDIzLjMtOS44czkuNy0xNC4zIDEwLjEtMjMuNWwwLTE5NC40ek0xODUuNSAyMTYuNWM2LjMgNi4zIDkuNyAxNC4xIDEwLjEgMjMuMmwwIDMzLjNjLS40IDkuMi0zLjcgMTYuOS05LjggMjMuMi02LjIgNi4zLTE0IDkuNS0yMy42IDkuNXMtMTcuNS0zLjItMjMuNi05LjUtOS40LTE0LTkuOC0yMy4ybDAtMzMuM2MuNC05LjEgMy44LTE2LjkgMTAuMS0yMy4yczEzLjItOS42IDIzLjMtMTBjOS4yIC40IDE3IDMuNyAyMy4zIDEwem0xOTEuNSAwYzYuMyA2LjMgOS43IDE0LjEgMTAuMSAyMy4ybDAgMzMuM2MtLjQgOS4yLTMuNyAxNi45LTkuOCAyMy4ycy0xNCA5LjUtMjMuNiA5LjUtMTcuNC0zLjItMjMuNi05LjVjLTctNi4zLTkuNC0xNC05LjctMjMuMmwwLTMzLjNjLjMtOS4xIDMuNy0xNi45IDEwLTIzLjJzMTQuMS05LjYgMjMuMy0xMGM5LjIgLjQgMTcgMy43IDIzLjMgMTB6Il19LFNMdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJuZW9zIixpY29uOls0NDgsNTEyLFtdLCJmNjEyIiwiTTM4My44IDUxMmwtOTUuMSAwLTEwOC4yLTE1NC41IDAgOTEuMS04Ni40IDYzLjQtOTcuNyAwIDAtNDgyLjIgNDAuNS0yOS44IDEwOCAwIDEyMy43IDE3Ni4xIDAtMTEyLjcgODYuNC02My40IDk3LjcgMCAwIDQ2MS41LTY4LjkgNTAuNXpNNy4yIDM1LjNsMCA0NjAuNyA3Mi01Mi45IDAtMjQ5LjEgMjE1LjUgMzA3LjYgODQuOCAwIDUyLjQtMzguMi03OC4zIDAtMzE2LjEtNDUwLjUtMzAuMiAyMi4zek04OS43IDUwMS45bDgwLTU4LjggMC0xMDEtNzkuOC0xMTQuNCAwIDIyMC45LTcyLjYgNTMuMyA3Mi4zIDAgMCAwek00OSAxMC44bDMxMC42IDQ0Mi42IDgyLjQgMCAwLTQ0Mi42LTc5LjggMCAwIDMxNy42LTIyMi45LTMxNy42LTkwLjMgMHpNMjc5LjQgMTkxLjZsNzIgMTAyLjggMC0yNzguNS03MiA1MyAwIDEyMi43eiJdfSxfTHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZGV2IixpY29uOls0NDgsNTEyLFtdLCJmNmNjIiwiTTEyMC4xIDIwOC4zYy0zLjktMi45LTcuOC00LjMtMTEuNi00LjNsLTE3LjQgMCAwIDEwNC41IDE3LjQgMGMzLjkgMCA3LjgtMS40IDExLjYtNC4zczUuOC03LjMgNS44LTEzLjFsMC02OS43YzAtNS44LTItMTAuMi01LjgtMTMuMXpNNDA0LjEgMzJMNDMuOSAzMkMxOS43IDMyIC4xIDUxLjYgMCA3NS44TDAgNDM2LjJDLjEgNDYwLjQgMTkuNyA0ODAgNDMuOSA0ODBsMzYwLjIgMGMyNC4yIDAgNDMuOC0xOS42IDQzLjktNDMuOGwwLTM2MC40QzQ0Ny45IDUxLjYgNDI4LjMgMzIgNDA0LjEgMzJ6TTE1NC4yIDI5MS4yYzAgMTguOC0xMS42IDQ3LjMtNDguNCA0Ny4zbC00Ni40IDAgMC0xNjUuNSA0Ny40IDBjMzUuNCAwIDQ3LjQgMjguNSA0Ny40IDQ3LjNsMCA3MC45em0xMDAuNy04OC43bC01My4zIDAgMCAzOC40IDMyLjYgMCAwIDI5LjYtMzIuNiAwIDAgMzguNCA1My4zIDAgMCAyOS42LTYyLjIgMGMtMTEuMiAuMy0yMC40LTguNS0yMC43LTE5LjdsMC0xMjUuMWMtLjMtMTEuMSA4LjYtMjAuNCAxOS43LTIwLjdsNjMuMiAwIDAgMjkuNXpNMzU4LjUgMzE3LjhjLTEzLjIgMzAuNy0zNi44IDI0LjYtNDcuNCAwbC0zOC41LTE0NC44IDMyLjYgMCAyOS43IDExMy43IDI5LjYtMTEzLjcgMzIuNiAwLTM4LjUgMTQ0Ljh6Il19LE1MdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJob3RqYXIiLGljb246WzUxMiw1MTIsW10sImYzYjEiLCJNMzYxLjggMGMwIDEzMS42LTgwLjcgMTc2LjgtMTQwLjIgMjA5LjQtLjYgLjMtMS4xIC42LTEuNiAuOS01My44IDMwLjItODguNyA0OS44LTg5LjYgMTIybC05OC4xIDBjMC0xMzEuNSA4MC43LTE3Ni43IDE0MC4yLTIwOS4zIDU0LjgtMjkuOCA5MC4zLTUwIDkwLjMtMTIzbDk5IDB6TTMwMS4zIDMwMi42YzU0LjgtMjkuOCA5MC4zLTUwIDkwLjMtMTIzbDk4IDBjMCAxMzEuNi04MC43IDE3Ni43LTE0MC4yIDIwOS40LTU0LjggMjkuOC05MC4zIDUwLTkwLjMgMTIzbC05OCAwYzAtMTMxLjYgODAuNy0xNzYuOCAxNDAuMi0yMDkuNHoiXX0sekx0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImRvY2h1YiIsaWNvbjpbNDQ4LDUxMixbXSwiZjM5NCIsIk00MTMuOSAxNjBMMjcyIDE2MCAyNzIgMTkuNiA0MTMuOSAxNjB6TTMyMCAxOTJsMCAxMzBjMCA2Ni44LTM2LjUgMTAwLjEtMTEzLjMgMTAwLjFsLTk0LjcgMCAwLTMzNy4zIDk0LjcgMGMxMiAwIDIzLjEgLjggMzMuMSAyLjVsMC04NEMyMjguOSAxLjEgMjE3LjQgMCAyMDUuMiAwTDE2IDAgMTYgNTEyIDIwNS4yIDUxMkMzNDUuNyA1MTIgNDE2IDQ0Ny40IDQxNiAzMTguMWwwLTEyNi4xLTk2IDB6Il19LENMdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ2aW1lbyIsaWNvbjpbNDQ4LDUxMixbXSwiZjQwYSIsIk00MDMuMiAzMkw0NC44IDMyQzIwLjEgMzIgMCA1Mi4xIDAgNzYuOEwwIDQzNS4yQzAgNDU5LjkgMjAuMSA0ODAgNDQuOCA0ODBsMzU4LjQgMGMyNC43IDAgNDQuOC0yMC4xIDQ0LjgtNDQuOGwwLTM1OC40QzQ0OCA1Mi4xIDQyNy45IDMyIDQwMy4yIDMyek0zNzcgMTgwLjhjLTEuNCAzMS41LTIzLjQgNzQuNy02NiAxMjkuNC00NCA1Ny4yLTgxLjMgODUuOC0xMTEuNyA4NS44LTE4LjkgMC0zNC44LTE3LjQtNDcuOS01Mi4zLTI1LjUtOTMuMy0zNi40LTE0OC01Ny40LTE0OC0yLjQgMC0xMC45IDUuMS0yNS40IDE1LjJMNTMuNCAxOTEuM2MzNy4zLTMyLjggNzIuOS02OS4yIDk1LjItNzEuMiAyNS4yLTIuNCA0MC43IDE0LjggNDYuNSA1MS43IDIwLjcgMTMxLjIgMjkuOSAxNTEgNjcuNiA5MS42IDEzLjUtMjEuNCAyMC44LTM3LjcgMjEuOC00OC45IDMuNS0zMy4yLTI1LjktMzAuOS00NS44LTIyLjQgMTUuOS01Mi4xIDQ2LjMtNzcuNCA5MS4yLTc2IDMzLjMgLjkgNDkgMjIuNSA0Ny4xIDY0Ljd6Il19LFRMdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJtYXhjZG4iLGljb246WzUxMiw1MTIsW10sImYxMzYiLCJNNDYxLjEgNDQyLjdsLTk3LjQgMCA1MS45LTI0Mi43YzIuMy0xMC4yIC45LTE5LjUtNC40LTI1LjctNS02LjEtMTMuNy05LjYtMjQuMi05LjZsLTQ5LjMgMC01OS41IDI3OC05Ny40IDAgNTkuNS0yNzgtODMuNCAwLTU5LjUgMjc4LTk3LjQgMCA1OS41LTI3OC00NC42LTk1LjQgMzcyLjEgMGMzOS40IDAgNzUuMyAxNi4zIDk4LjMgNDQuOSAyMy4zIDI4LjYgMzEuOCA2Ny40IDIzLjYgMTA1LjlMNDYxLjEgNDQyLjd6Il19LFU4ZT17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzcXVhcmUtZm9udC1hd2Vzb21lLXN0cm9rZSIsaWNvbjpbNDQ4LDUxMixbImZvbnQtYXdlc29tZS1hbHQiXSwiZjM1YyIsIk02NCA2NEM0Ni4zIDY0IDMyIDc4LjMgMzIgOTZsMCAzMjBjMCAxNy43IDE0LjMgMzIgMzIgMzJsMzIwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0zMjBjMC0xNy43LTE0LjMtMzItMzItMzJMNjQgNjR6TTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMzIwIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAzMjBjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDk2em0xNTQgNThjMCA5LjMtNC44IDE3LjQtMTIuMSAyMmwxODguOSAwYzcuMyAwIDEzLjIgNS45IDEzLjIgMTMuMiAwIDEuOC0uNCAzLjctMS4xIDUuNEwzMTIgMjY0IDM0Mi45IDMzMy40Yy44IDEuNyAxLjEgMy41IDEuMSA1LjQgMCA3LjMtNS45IDEzLjItMTMuMiAxMy4ybC0xODYuOCAwIDAgMzItMzIgMCAwLTIwOS41Yy02LjEtNC44LTEwLTEyLjItMTAtMjAuNSAwLTE0LjQgMTEuNi0yNiAyNi0yNnMyNiAxMS42IDI2IDI2eiJdfSwkTHQ9VThlLERMdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzcGVha2FwIixpY29uOls0NDgsNTEyLFtdLCJmM2YzIiwiTTY0LjQgMzkxLjhDLTE1IDMwMy42LTcuNiAxNjcuNCA4MS4xIDg3LjZzMjI0LjgtNzMgMzA0LjIgMTUuMiA3MiAyMjQuNC0xNi42IDMwNC4xYy0xOC43IDE2LjkgNjQgNDMuMSA0MiA1Mi4zLTgyLjEgMzQuMi0yNTMuOSAzNS0zNDYuMi02Ny41bDAgMHpNMjc3LjcgMTgwLjJsMzguNS00MC45Yy05LjYtOC45LTMyLTI2LjgtNzYuMi0yNy42LTUyLjMtLjktOTUuOSAyOC4zLTk2LjggODAtLjIgMTEuMyAuMyAzNi43IDI5LjQgNTQuOCAzNC41IDIxLjQgODYuNSAyMS41IDg2IDUyLjMtLjQgMjEuMy0yNi40IDI1LjgtMzguNiAyNS42LTMgMC0zMC4yLS41LTQ3LjYtMjQuNmwtNDAgNDIuNmMyOC4yIDI3IDU5IDMyLjYgODMuNSAzMyAxMC4yIC4yIDk2LjQgLjMgOTcuOC04MSAuMy0xNS44LTIuMS0zOS43LTI4LjktNTYuNi0zNC40LTIxLjYtODUtMTkuNC04NC40LTQ5LjcgLjQtMjMuMyAzMS0yNS40IDM3LjUtMjUuMyAuNCAwIDI2LjYgLjMgMzkuNiAxNy40bDAgMHoiXX0sTEx0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImZhbnRhc3ktZmxpZ2h0LWdhbWVzIixpY29uOls1MTIsNTEyLFtdLCJmNmRjIiwiTTI1NiAzMi45TDMyLjkgMjU2IDI1NiA0NzkuMSA0NzkuMSAyNTYgMjU2IDMyLjl6TTg4LjMgMjU1LjhjMi0yIDExLjktMTIuMyA5Ni41LTk3LjUgNDEuNC00MS44IDg2LjItNDMuOCAxMTkuOC0xOC43IDI0LjYgMTguNCA2Mi4xIDU4LjkgNjIuMSA1OSAuNyAuNyAxLjEgMi45IC42IDMuNC0xMS4zIDExLjgtMjIuNyAyMy41LTMzLjUgMzQuNy0zNC4yLTMyLjMtNDAuNS0zOC4yLTQ4LjUtNDQtMTcuOC0xMi43LTQxLjQtMTAuMS01NyA1LjEtMi4yIDIuMS0xLjggMy40IC4xIDUuNCAyLjkgMi45IDI4LjEgMjguMyAzNS4xIDM1LjgtMTEuOSAxMS42LTIzLjcgMjMtMzUuNyAzNC43LTEyLTEyLjUtMjQuNS0yNS41LTM2LjUtMzguMS0yMS40IDIxLjEtNDEuNyA0MS4xLTYxLjggNjFMODguMyAyNTUuOHpNMzIzLjIgMzU3LjRjLTM1LjUgMzUuNC03OC4xIDM4LjEtMTA3IDIwLjUtMjIuMS0xMy41LTM5LjQtMzIuMS03Mi45LTY2LjggMTItMTIuNCAyMy44LTI0LjQgMzUuNC0zNi4zIDMzIDMxLjkgMzcuMSAzNiA0NC43IDQyLjEgMTguNSAxNC43IDQyLjUgMTMuNyA1OS4zLTEuOCAzLjctMy40IDMuNy0zLjYgLjEtNy4yLTEwLjYtMTAuNy0yMS4yLTIxLjQtMzEuOC0zMi4yLTEuMy0xLjMtMy0yLjUtLjgtNC43IDEwLjgtMTAuNyAyMS41LTIxLjUgMzIuMi0zMi4zIC4zLS4zIC42LS40IDEuOS0xLjEgMTIuNCAxMi45IDI0LjkgMjUuOSAzNy4yIDM4LjggMjEtMjAuNyA0MS4yLTQwLjcgNjEuMy02MC40IDEzLjcgMTMuNCAyNy4xIDI2LjYgNDAuOSA0MC0yMC4yIDIwLjktODEuNyA4Mi43LTEwMC41IDEwMS41ek0yNTYgMEwwIDI1NiAyNTYgNTEyIDUxMiAyNTYgMjU2IDB6TTE2IDI1NkwyNTYgMTYgNDk2IDI1NiAyNTYgNDk2IDE2IDI1NnoiXX0sRUx0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImxpbnV4IixpY29uOls0NDgsNTEyLFtdLCJmMTdjIiwiTTIyMC45IDEyMy4zYzEgLjUgMS44IDEuNyAzIDEuNyAxLjEgMCAyLjgtLjQgMi45LTEuNSAuMi0xLjQtMS45LTIuMy0zLjItMi45LTEuNy0uNy0zLjktMS01LjUtLjEtLjQgLjItLjggLjctLjYgMS4xIC4zIDEuMyAyLjMgMS4xIDMuNCAxLjd6TTE5OSAxMjVjMS4yIDAgMi0xLjIgMy0xLjcgMS4xLS42IDMuMS0uNCAzLjUtMS42IC4yLS40LS4yLS45LS42LTEuMS0xLjYtLjktMy44LS42LTUuNSAuMS0xLjMgLjYtMy40IDEuNS0zLjIgMi45IC4xIDEgMS44IDEuNSAyLjggMS40ek00MjAgNDAzLjhjLTMuNi00LTUuMy0xMS42LTcuMi0xOS43LTEuOC04LjEtMy45LTE2LjgtMTAuNS0yMi40LTEuMy0xLjEtMi42LTIuMS00LTIuOS0xLjMtLjgtMi43LTEuNS00LjEtMiA5LjItMjcuMyA1LjYtNTQuNS0zLjctNzkuMS0xMS40LTMwLjEtMzEuMy01Ni40LTQ2LjUtNzQuNC0xNy4xLTIxLjUtMzMuNy00MS45LTMzLjQtNzIgLjUtNDUuOSA1LjEtMTMxLjItNzUuOC0xMzEuMy0xMDIuNC0uMi03Ni44IDEwMy40LTc3LjkgMTM1LjItMS43IDIzLjQtNi40IDQxLjgtMjIuNSA2NC43LTE4LjkgMjIuNS00NS41IDU4LjgtNTguMSA5Ni43LTYgMTcuOS04LjggMzYuMS02LjIgNTMuMy02LjUgNS44LTExLjQgMTQuNy0xNi42IDIwLjItNC4yIDQuMy0xMC4zIDUuOS0xNyA4LjNzLTE0IDYtMTguNSAxNC41Yy0yLjEgMy45LTIuOCA4LjEtMi44IDEyLjQgMCAzLjkgLjYgNy45IDEuMiAxMS44IDEuMiA4LjEgMi41IDE1LjcgLjggMjAuOC01LjIgMTQuNC01LjkgMjQuNC0yLjIgMzEuNyAzLjggNy4zIDExLjQgMTAuNSAyMC4xIDEyLjMgMTcuMyAzLjYgNDAuOCAyLjcgNTkuMyAxMi41IDE5LjggMTAuNCAzOS45IDE0LjEgNTUuOSAxMC40IDExLjYtMi42IDIxLjEtOS42IDI1LjktMjAuMiAxMi41LS4xIDI2LjMtNS40IDQ4LjMtNi42IDE0LjktMS4yIDMzLjYgNS4zIDU1LjEgNC4xIC42IDIuMyAxLjQgNC42IDIuNSA2LjdsMCAuMWM4LjMgMTYuNyAyMy44IDI0LjMgNDAuMyAyMyAxNi42LTEuMyAzNC4xLTExIDQ4LjMtMjcuOSAxMy42LTE2LjQgMzYtMjMuMiA1MC45LTMyLjIgNy40LTQuNSAxMy40LTEwLjEgMTMuOS0xOC4zIC40LTguMi00LjQtMTcuMy0xNS41LTI5Ljd6TTIyMy44IDg3LjNjOS44LTIyLjIgMzQuMi0yMS44IDQ0LS40IDYuNSAxNC4yIDMuNiAzMC45LTQuMyA0MC40LTEuNi0uOC01LjktMi42LTEyLjYtNC45IDEuMS0xLjIgMy4xLTIuNyAzLjktNC42IDQuOC0xMS44LS4yLTI3LTkuMS0yNy4zLTcuMy0uNS0xMy45IDEwLjgtMTEuOCAyMy00LjEtMi05LjQtMy41LTEzLTQuNC0xLTYuOS0uMy0xNC42IDIuOS0yMS44ek0xODMuMSA3NS44YzEwLjEgMCAyMC44IDE0LjIgMTkuMSAzMy41LTMuNSAxLTcuMSAyLjUtMTAuMiA0LjYgMS4yLTguOS0zLjMtMjAuMS05LjYtMTkuNi04LjQgLjctOS44IDIxLjItMS44IDI4LjEgMSAuOCAxLjktLjItNS45IDUuNS0xNS42LTE0LjYtMTAuNS01Mi4xIDguNC01Mi4xem0tMTMuNiA2MC43YzYuMi00LjYgMTMuNi0xMCAxNC4xLTEwLjUgNC43LTQuNCAxMy41LTE0LjIgMjcuOS0xNC4yIDcuMSAwIDE1LjYgMi4zIDI1LjkgOC45IDYuMyA0LjEgMTEuMyA0LjQgMjIuNiA5LjMgOC40IDMuNSAxMy43IDkuNyAxMC41IDE4LjItMi42IDcuMS0xMSAxNC40LTIyLjcgMTguMS0xMS4xIDMuNi0xOS44IDE2LTM4LjIgMTQuOS0zLjktLjItNy0xLTkuNi0yLjEtOC0zLjUtMTIuMi0xMC40LTIwLTE1LTguNi00LjgtMTMuMi0xMC40LTE0LjctMTUuMy0xLjQtNC45IDAtOSA0LjItMTIuM3ptMy4zIDMzNGMtMi43IDM1LjEtNDMuOSAzNC40LTc1LjMgMTgtMjkuOS0xNS44LTY4LjYtNi41LTc2LjUtMjEuOS0yLjQtNC43LTIuNC0xMi43IDIuNi0yNi40bDAtLjJjMi40LTcuNiAuNi0xNi0uNi0yMy45LTEuMi03LjgtMS44LTE1IC45LTIwIDMuNS02LjcgOC41LTkuMSAxNC44LTExLjMgMTAuMy0zLjcgMTEuOC0zLjQgMTkuNi05LjkgNS41LTUuNyA5LjUtMTIuOSAxNC4zLTE4IDUuMS01LjUgMTAtOC4xIDE3LjctNi45IDguMSAxLjIgMTUuMSA2LjggMjEuOSAxNmwxOS42IDM1LjZjOS41IDE5LjkgNDMuMSA0OC40IDQxIDY4Ljl6bS0xLjQtMjUuOWMtNC4xLTYuNi05LjYtMTMuNi0xNC40LTE5LjYgNy4xIDAgMTQuMi0yLjIgMTYuNy04LjkgMi4zLTYuMiAwLTE0LjktNy40LTI0LjktMTMuNS0xOC4yLTM4LjMtMzIuNS0zOC4zLTMyLjUtMTMuNS04LjQtMjEuMS0xOC43LTI0LjYtMjkuOXMtMy0yMy4zLS4zLTM1LjJjNS4yLTIyLjkgMTguNi00NS4yIDI3LjItNTkuMiAyLjMtMS43IC44IDMuMi04LjcgMjAuOC04LjUgMTYuMS0yNC40IDUzLjMtMi42IDgyLjQgLjYtMjAuNyA1LjUtNDEuOCAxMy44LTYxLjUgMTItMjcuNCAzNy4zLTc0LjkgMzkuMy0xMTIuNyAxLjEgLjggNC42IDMuMiA2LjIgNC4xIDQuNiAyLjcgOC4xIDYuNyAxMi42IDEwLjMgMTIuNCAxMCAyOC41IDkuMiA0Mi40IDEuMiA2LjItMy41IDExLjItNy41IDE1LjktOSA5LjktMy4xIDE3LjgtOC42IDIyLjMtMTUgNy43IDMwLjQgMjUuNyA3NC4zIDM3LjIgOTUuNyA2LjEgMTEuNCAxOC4zIDM1LjUgMjMuNiA2NC42IDMuMy0uMSA3IC40IDEwLjkgMS40IDEzLjgtMzUuNy0xMS43LTc0LjItMjMuMy04NC45LTQuNy00LjYtNC45LTYuNi0yLjYtNi41IDEyLjYgMTEuMiAyOS4yIDMzLjcgMzUuMiA1OSAyLjggMTEuNiAzLjMgMjMuNyAuNCAzNS43IDE2LjQgNi44IDM1LjkgMTcuOSAzMC43IDM0LjgtMi4yLS4xLTMuMiAwLTQuMiAwIDMuMi0xMC4xLTMuOS0xNy42LTIyLjgtMjYuMS0xOS42LTguNi0zNi04LjYtMzguMyAxMi41LTEyLjEgNC4yLTE4LjMgMTQuNy0yMS40IDI3LjMtMi44IDExLjItMy42IDI0LjctNC40IDM5LjktLjUgNy43LTMuNiAxOC02LjggMjktMzIuMSAyMi45LTc2LjcgMzIuOS0xMTQuMyA3LjJ6bTI1Ny40LTExLjVjLS45IDE2LjgtNDEuMiAxOS45LTYzLjIgNDYuNS0xMy4yIDE1LjctMjkuNCAyNC40LTQzLjYgMjUuNXMtMjYuNS00LjgtMzMuNy0xOS4zYy00LjctMTEuMS0yLjQtMjMuMSAxLjEtMzYuMyAzLjctMTQuMiA5LjItMjguOCA5LjktNDAuNiAuOC0xNS4yIDEuNy0yOC41IDQuMi0zOC43IDIuNi0xMC4zIDYuNi0xNy4yIDEzLjctMjEuMSAuMy0uMiAuNy0uMyAxLS41IC44IDEzLjIgNy4zIDI2LjYgMTguOCAyOS41IDEyLjYgMy4zIDMwLjctNy41IDM4LjQtMTYuMyA5LS4zIDE1LjctLjkgMjIuNiA1LjEgOS45IDguNSA3LjEgMzAuMyAxNy4xIDQxLjYgMTAuNiAxMS42IDE0IDE5LjUgMTMuNyAyNC42ek0xNzMuNCAxNDguN2MyIDEuOSA0LjcgNC41IDggNy4xIDYuNiA1LjIgMTUuOCAxMC42IDI3LjMgMTAuNiAxMS42IDAgMjIuNS01LjkgMzEuOC0xMC44IDQuOS0yLjYgMTAuOS03IDE0LjgtMTAuNHM1LjktNi4zIDMuMS02LjYtMi42IDIuNi02IDUuMWMtNC40IDMuMi05LjcgNy40LTEzLjkgOS44LTcuNCA0LjItMTkuNSAxMC4yLTI5LjkgMTAuMnMtMTguNy00LjgtMjQuOS05LjdjLTMuMS0yLjUtNS43LTUtNy43LTYuOS0xLjUtMS40LTEuOS00LjYtNC4zLTQuOS0xLjQtLjEtMS44IDMuNyAxLjcgNi41eiJdfSxQTHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiY290dG9uLWJ1cmVhdSIsaWNvbjpbNTEyLDUxMixbXSwiZjg5ZSIsIk00NzQuMyAzMzAuNEM0NTAuNiA0MjIuMyAzODAuMSA0NzUgMjcyLjQgNDc4LjhsMC00OS4yYzAtNDggMjYuNC03NC40IDc0LjQtNzQuNCA2MiAwIDk5LjItMzcuMiA5OS4yLTk5LjIgMC02MS40LTM2LjUtOTguMy05Ny40LTk5LjEtMzMtNjkuMy0xNDYuNS02NC43LTE3Ny4yIDAtNjAuOSAuOC05Ny40IDM3LjctOTcuNCA5OS4xIDAgNjIuMSAzNy4zIDk5LjQgOTkuNCA5OS40IDQ4IDAgNzQuNiAyNi4yIDc0LjYgNzQuNGwwIDQ5LjJjLTEzNC40LTUtMjExLjEtODUuMS0yMTEuMS0yMjMgMC0xNDEuOCA4MS40LTIyMy4yIDIyMy4yLTIyMy4yIDExNC44IDAgMTg5LjggNTMuMiAyMTQuNyAxNDguOGwyNS4zIDBDNDczLjkgNzEuNSAzODguMiA4IDI1OS44IDggMTA1IDggMTIgMTAxLjIgMTIgMjU1LjggMTIgNDExLjEgMTA1LjIgNTA0LjMgMjU5LjggNTA0IDM4OC4xIDUwNCA0NzMuNyA0NDAuMiA0OTkuNSAzMzAuNGwtMjUuMiAwek0zNTcgMTgyLjNjNDEuNCAzLjQgNjQuMiAyOSA2NC4yIDczLjcgMCA0OC0yNi40IDc0LjQtNzQuNCA3NC40LTI4LjYgMC00OS4zLTkuNi02MS42LTI3LjMgODMuMS0xNi41IDc1LjYtOTkuNyA3MS44LTEyMC43em0tODEuNyA5Ny40Yy0yLjUtMTAuMy0xNi4zLTg3IDU2LjItOTcgMi4zIDEwLjEgMTYuNSA4Ny4xLTU2LjMgOTdsMCAwek0yNjAgMTMyYzI4LjYgMCA0OSA5LjcgNjEuNCAyNy42LTI4LjQgNS41LTQ5LjQgMjAuNi02MS42IDQzLjQtMTIuMi0yMi45LTMzLjItMzgtNjEuNi00My40IDEyLjQtMTcuNyAzMy4zLTI3LjQgNjEuNi0yNy40bC4yLS4zem0tNzEuNSA1MC43YzczLjIgMTAuNiA1OC45IDg2LjggNTYuNSA5Ny03Mi40LTkuOC01OS04Ny01Ni4yLTk3bC0uMiAwek0xNzMuMiAzMzAuNGMtNDggMC03NC40LTI2LjQtNzQuNC03NC40IDAtNDQuNCAyMi45LTcwIDY0LjItNzMuNy02LjggMzcuMi0xLjQgMTA2LjUgNzEuNiAxMjAuNy0xMi4xIDE3LjYtMzIuOCAyNy4zLTYxLjEgMjcuM2wtLjMgMHptNTMuMiAxMi40YzE0LjMtNy42IDI2LTE5LjMgMzMuNi0zMy41IDcuOCAxNC41IDE5LjMgMjUuNSAzMy44IDMzLjUtMTQuNCA3LjYtMjYuMSAxOS40LTMzLjYgMzMuOC04LTE0LjUtMTkuMS0yNi4yLTMzLjYtMzMuOGwtLjMgMHoiXX0sSUx0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6Imdvb2dsZS13YWxsZXQiLGljb246WzQ0OCw1MTIsW10sImYxZWUiLCJNMTU2LjggMTI2LjhjMzcuNiA2MC42IDY0LjIgMTEzLjEgODQuMyAxNjIuNS04LjMgMzMuOC0xOC44IDY2LjUtMzEuMyA5OC4zLTEzLjItNTIuMy0yNi41LTEwMS4zLTU2LTE0OC41IDYuNS0zNi40IDIuMy03My42IDMtMTEyLjN6TTEwOS4zIDIwMGwtOTMuMiAwYy02LjUgMC0xMC41IDcuNS02LjUgMTIuNyA0Mi4yIDU0LjMgNzEuNyAxMTcuOCA5MS43IDE4Ny4zbDEwMy41IDBjLTE2LjItNjkuNy0zOC43LTEzMy43LTgyLjUtMTkzLjUtMy00LTgtNi41LTEzLTYuNXptNDcuOC04OGM2OC41IDEwOCAxMzAgMjM0LjUgMTM4LjIgMzY4TDQwOSA0ODBjLTEyLTEzOC02OC40LTI2NS0xNDMuMi0zNjhsLTEwOC43IDB6TTQwOC45IDQzLjVjLTEuOC02LjgtOC4yLTExLjUtMTUuMi0xMS41bC04OC4zIDBjLTUuMyAwLTkgNS03LjggMTAuMyAxMy4yIDQ2LjUgMjIuMyA5NS41IDI2LjUgMTQ2IDQ4LjIgODYuMiA3OS43IDE3OC4zIDkwLjYgMjcwLjggMTUuOC02MC41IDI1LjMtMTMzLjUgMjUuMy0yMDMgMC03My42LTEyLjEtMTQ1LjEtMzEuMS0yMTIuNnoiXX0sQUx0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImZvdXJzcXVhcmUiLGljb246WzM4NCw1MTIsW10sImYxODAiLCJNMzMxLjEgM0w1Ny45IDNDMjAuNCAzIDggMzEuMyA4IDQ5LjFMOCA0ODIuOWMwIDIwLjMgMTIuMSAyNy43IDE4LjIgMzAuMSA2LjIgMi41IDIyLjggNC42IDMyLjktNy4xIDEyOC45LTE0OS40IDEzMS4xLTE1MS45IDEzMS4xLTE1MS45IDMuMS0zLjQgMy40LTMuMSA2LjgtMy4xbDgzLjQgMGMzNS4xIDAgNDAuNi0yNS4yIDQ0LjMtMzkuN2w0OC42LTI0M0MzODEuOCAyNS44IDM3MS4xIDMgMzMxLjEgM3pNMzE0LjggNzYuOGwtMTEuNCA1OS43Yy0xLjIgNi41LTkuNSAxMy4yLTE2LjkgMTMuMmwtMTA2LjQgMGMtMTIgMC0yMC42IDguMy0yMC42IDIwLjNsMCAxM2MwIDEyIDguNiAyMC42IDIwLjYgMjAuNmw5MC40IDBjOC4zIDAgMTYuNiA5LjIgMTQuOCAxOC4yLTEuOCA4LjktMTAuNSA1My44LTExLjQgNTguOC0uOSA0LjktNi44IDEzLjUtMTYuOSAxMy41bC03My41IDBjLTEzLjUgMC0xNy4yIDEuOC0yNi41IDEyLjYgMCAwLTguOSAxMS40LTg5LjUgMTA4LjMtLjkgLjktMS44IC42LTEuOC0uM2wwLTMzOC44YzAtNy43IDYuOC0xNi42IDE2LjYtMTYuNmwyMTkgMGM4LjIgMCAxNS42IDcuNyAxMy41IDE3LjV6Il19LE5MdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzaGlydHNpbmJ1bGsiLGljb246WzQ0OCw1MTIsW10sImYyMTQiLCJNMTAwIDQxMC4zbDMwLjYgMTMuNCA0LjQtOS45LTMwLjYtMTMuNC00LjQgOS45em0zOS40IDE3LjVsMzAuNiAxMy40IDQuNC05LjktMzAuNi0xMy40LTQuNCA5Ljl6bTE3Mi4xLTE0bDQuNCA5LjkgMzAuNi0xMy40LTQuNC05LjktMzAuNiAxMy40ek0xNzkuMSA0NDVsMzAuMyAxMy43IDQuNC05LjktMzAuMy0xMy40LTQuNCA5LjZ6TTYwLjQgMzkyLjhsMzAuNiAxMy40IDQuNC05LjYtMzAuNi0xMy43LTQuNCA5Ljl6bTIxMS40IDM4LjVsNC40IDkuOSAzMC42LTEzLjQtNC40LTkuOS0zMC42IDEzLjR6bS0zOS4zIDE3LjVsNC40IDkuOSAzMC42LTEzLjctNC40LTkuNi0zMC42IDEzLjR6bTExOC40LTUyLjJsNC40IDkuNiAzMC42LTEzLjQtNC40LTkuOS0zMC42IDEzLjd6TTE3MCA0Ni42bC0zMy41IDAgMCAxMC41IDMzLjUgMCAwLTEwLjV6bS00Ny4yIDBsLTMzLjYgMCAwIDEwLjUgMzMuNSAwIC4xLTEwLjV6bS00Ny4zIDBsLTMzLjIgMCAwIDEwLjUgMzMuMyAwLS4xLTEwLjV6bTE0MS41IDBsLTMzLjIgMCAwIDEwLjUgMzMuMiAwIDAtMTAuNXptOTQuNSAwbC0zMy41IDAgMCAxMC41IDMzLjUgMCAwLTEwLjV6bTQ3LjMgMGwtMzMuNSAwIDAgMTAuNSAzMy41IDAgMC0xMC41em0tOTQuNiAwbC0zMy4yIDAgMCAxMC41IDMzLjIgMCAwLTEwLjV6bTE0MS41IDBsLTMzLjMgMCAwIDEwLjUgMzMuMyAwIDAtMTAuNXpNNTIuOCAzNTEuMWwtMTAuOCAwIDAgMzMuNSAxMC44IDAgMC0zMy41em03MC0yMTUuOWwtMzMuNiAwIDAgMTAuNSAzMy41IDAgLjEtMTAuNXptLTcwIDEwLjZsMjIuOCAwIDAtMTAuNS0zMy42IDAgMCAzMy41IDEwLjggMCAwLTIzek0yMjEuNyAzNzQuNGE5MS4zIDkxLjMgMCAxIDAgMC0xODIuNiA5MS4zIDkxLjMgMCAxIDAgMCAxODIuNnpNMTczLjUgMjYzLjNjMC0yNS40IDI5LjUtMzEuOCA0OS42LTMxLjggMTYuOSAwIDI5LjIgNS44IDQ0LjMgMTJsLTguOCAxNi45LS45IDBjLTYuNC05LjktMjQuOC0xMy4xLTM1LjYtMTMuMS05IDAtMjkuOCAxLjgtMjkuOCAxNC45IDAgMjEuNiA3OC41LTEwLjIgNzguNSAzNy45IDAgMjUuNC0zMS41IDMxLjItNTEgMzEuMi0xOC4xIDAtMzIuNC0yLjktNDcuMi0xMi4ybDktMTguNCAuOSAwYzYuMSAxMi4yIDIzLjYgMTQuOSAzNS45IDE0LjkgOC43IDAgMzIuNy0xLjIgMzIuNy0xNC4zIDAtMjYuMS03Ny42IDYuMy03Ny42LTM4ek01Mi44IDE3OC40bC0xMC44IDAgMCAzMy42IDEwLjggMCAwLTMzLjZ6TTM5NS4yIDM4NC42bDEwLjggMCAwLTMzLjUtMTAuOCAwIDAgMzMuNXpNNTIuOCAzMDcuOWwtMTAuOCAwIDAgMzMuNSAxMC44IDAgMC0zMy41ek0wIDMuN2wwIDQwNiAyMjEuNyA5OC42IDIyNi4zLTk4LjYgMC00MDYtNDQ4IDB6TTQxOC44IDM5MC44bC0xOTYuOCA4NS43LTE5Mi44LTg1LjcgMC0yNzAuMSAzODkuNyAwIDAgMjcwLjEtLjEgMHptMC0yOTkuM2wtMzg5LjYgMCAwLTU4LjYgMzg5LjcgMCAwIDU4LjYtLjEgMHpNNTIuOCAyMjEuNmwtMTAuOCAwIDAgMzMuNSAxMC44IDAgMC0zMy41em0wIDQzLjJsLTEwLjggMCAwIDMzLjUgMTAuOCAwIDAtMzMuNXpNMTcwIDEzNS4ybC0zMy41IDAgMCAxMC41IDMzLjUgMCAwLTEwLjV6TTM5NS4yIDI5OC4zbDEwLjggMCAwLTMzLjUtMTAuOCAwIDAgMzMuNXptMC00My4ybDEwLjggMCAwLTMzLjUtMTAuOCAwIDAgMzMuNXpNMjE3IDEzNS4ybC0zMy4yIDAgMCAxMC41IDMzLjIgMCAwLTEwLjV6TTM5NS4yIDIxMmwxMC44IDAgMC0zMy41LTEwLjggMCAwIDMzLjV6bTAgMTI5LjVsMTAuOCAwIDAtMzMuNS0xMC44IDAgMCAzMy41em0tMTMxLTIwNi4zbC0zMy4yIDAgMCAxMC41IDMzLjIgMCAwLTEwLjV6bTQ3LjMgMGwtMzMuNSAwIDAgMTAuNSAzMy41IDAgMC0xMC41em04My43IDMzLjZsMTAuOCAwIDAtMzMuNS0zMy41IDAgMCAxMC41IDIyLjggMC0uMSAyM3ptLTM2LjQtMzMuNmwtMzMuNSAwIDAgMTAuNSAzMy41IDAgMC0xMC41eiJdfSxSTHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToibWludGJpdCIsaWNvbjpbNTEyLDUxMixbXSwiZTYyZiIsIk03My4yIDUxMmwwLTczLjEgMjkyLjUgMCAwLTczLjIgNzMuMiAwIDAtMTQ2LjMgNzMuMSAwIDAtMjE5LjQtMjE5LjQgMCAwIDczLjEtMTQ2LjMgMCAwIDczLjItNzMuMSAwIDAgMjkyLjYtNzMuMiAwIDAgNzMuMSA3My4yIDB6bTczLjEtMjE5LjRsNzMuMiAwIDAgNzMuMS03My4yIDAgMC03My4xem03My4yLTczLjFsNzMuMSAwIDAgNzMuMS03My4yIDAgMC03My4yIC4xIC4xem03My4xIDBsMC03My4yIDczLjIgMCAwIDczLjEtNzMuMiAwIDAgLjF6TTM2NS43IDczLjFsNzMuMiAwIDAgNzMuMi03My4yIDAgMC03My4yeiJdfSxPTHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToienVsaXAiLGljb246WzQ0OCw1MTIsW10sImU4NTMiLCJNNDI0IDk5YzAgMjIuNi0xMC4xIDQyLjYtMjUuNSA1NC44TDI0OS4zIDI4Ny43Yy0yLjggMi40LTYuNC0xLjUtNC40LTQuN2w1NC43LTExMC4xYzEuNS0zLjEtLjUtNi45LTMuNi02LjlMODMuOCAxNjZDNTAuOSAxNjYgMjQgMTM1LjkgMjQgOTkgMjQgNjIuMSA1MC45IDMyIDgzLjggMzJsMjgwLjQgMEMzOTcuMSAzMiA0MjQgNjIuMSA0MjQgOTl6TTgzLjggNDgwbDI4MC40IDBjMzIuOSAwIDU5LjgtMzAuMiA1OS44LTY3cy0yNi45LTY3LTU5LjgtNjdsLTIxMi4zIDBjLTMuMSAwLTUuMS0zLjgtMy42LTYuOUwyMDMuMSAyMjljMi0zLjItMS42LTcuMS00LjQtNC43TDQ5LjUgMzU4LjJDMzQuMSAzNzAuNCAyNCAzOTAuNCAyNCA0MTMgMjQgNDQ5LjggNTAuOSA0ODAgODMuOCA0ODB6Il19LEZMdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzdGF5bGlua2VkIixpY29uOls0NDgsNTEyLFtdLCJmM2Y1IiwiTTM4Ni43IDI5Mi41bDIuNyAyLjctMTcwLTE2Ny4zYy0zLjUtMy41LTkuNy0zLjctMTMuOC0uNUwxNDguMyAxNzFjLTQuMiAzLjItNC42IDguNy0xLjEgMTIuMmw2OC4xIDY0LjNjMy42IDMuNSA5LjkgMy43IDE0IC41bC4xLS4xYzQuMS0zLjIgMTAuNC0zIDE0IC41bDg0IDgxLjNjMy42IDMuNSAzLjIgOS0uOSAxMi4ybC05My4yIDc0Yy00LjIgMy4zLTEwLjUgMy4xLTE0LjItLjRMNjcuMiAyNjhjLTMuNS0zLjUtOS43LTMuNy0xMy45LS41TDcuNSAzMDIuNGMtNC4yIDMuMi00LjcgOC43LTEuMiAxMi4yTDIxNSA1MTAuN3M3LjQgNi44IDE3LjMtLjhMNDMwLjMgMzQ2YzQtMy4yIDQuNC04LjcgLjctMTIuMmwtNDQuMy00MS4zem01NC41LTgzLjRMMjMwLjcgMi41Yy0xLjUtMS4yLTgtNS41LTE2LjMgMS4xTDcuNiAxNjUuN2MtNC4yIDMuMi00LjggOC43LTEuMiAxMi4ybDQyLjMgNDEuNyAxNzEuNyAxNjUuMWMzLjcgMy41IDEwLjEgMy43IDE0LjMgLjRsNTAuMi0zOC44LS4zLS4zIDcuNy02YzQuMi0zLjIgNC42LTguNyAuOS0xMi4ybC01Ny4xLTU0LjRjLTMuNi0zLjUtMTAtMy43LTE0LjItLjVsLS4xIC4xYy00LjIgMy4yLTEwLjUgMy4xLTE0LjItLjRMMTEzIDE4MC44Yy0zLjYtMy41LTMuMS04LjkgMS4xLTEyLjJsOTIuMi03MS41YzQuMS0zLjIgMTAuMy0zIDEzLjkgLjVsMTYwLjQgMTU5YzMuNyAzLjUgMTAgMy43IDE0LjEgLjVsNDUuOC0zNS44YzQuMS0zLjIgNC40LTguNyAuNy0xMi4yeiJdfSxCTHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToid2ViZmxvdyIsaWNvbjpbNjQwLDUxMixbXSwiZTY1YyIsIk02NDAgNjRsLTIwNC4yIDM5OS4yLTE5MS44IDAgODUuNS0xNjUuNS0zLjggMEMyNTUuMSAzODkuMyAxNDkuOSA0NDkuNSAwIDQ2My4yTDAgMzAwLjFzOTUuOS01LjcgMTUyLjMtNjQuOWwtMTUyLjMgMCAwLTE3MS4yIDE3MS4xIDAgMCAxNDAuOCAzLjggMCA3MC0xNDAuOCAxMjkuNCAwIDAgMTM5LjkgMy44IDAgNzIuNi0xMzkuOSAxODkuMyAweiJdfSxITHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToicmVucmVuIixpY29uOls1MTIsNTEyLFtdLCJmMThiIiwiTTIxNCAxNjkuMUMyMTQgMjc5LjUgMTUzIDM3NC41IDY2LjQgNDE2LjUgMzAgMzczLjIgOCAzMTcuNyA4IDI1Ni42IDggMTMzLjkgOTcuMSAzMi4yIDIxNCAxMi41bDAgMTU2LjZ6TTI1NSA1MDRjLTQyLjkgMC04My4zLTExLTExOC41LTMwLjQgNTcuMi0zNi4xIDEwMy40LTkwLjcgMTE4LjUtMTU0LjYgMTUuNSA2My45IDYxLjcgMTE4LjUgMTE4LjggMTU0LjctMzUuMSAxOS4zLTc1LjUgMzAuMy0xMTguOCAzMC4zem0xOTAuNi04Ny41QzM1OSAzNzQuNSAyOTggMjc5LjYgMjk4IDE2OS4xbDAtMTU2LjZjMTE2LjkgMTkuNyAyMDYgMTIxLjQgMjA2IDI0NC4xIDAgNjEuMS0yMiAxMTYuNi01OC40IDE1OS45eiJdfSxxTHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToia28tZmkiLGljb246WzUxMiw1MTIsW10sImU4NTYiLCJNMjQ5LjggNzVjODkuOCAwIDExMyAxLjEgMTQ2LjMgNC40IDc4LjEgNy44IDEyMy42IDU2IDEyMy42IDEyNS4ybDAgOC45YzAgNjQuMy00Ny4xIDExNi45LTExMC44IDEyMi40LTUgMTYuNi0xMi44IDMzLjItMjMuMyA0OS45LTI0LjQgMzcuNy03My4xIDg1LjMtMTYyLjkgODUuM2wtMTcuNyAwYy03My4xIDAtMTI5LjctMzEuNi0xNjMuNS04OS4yLTI5LjktNTAuNC0zMy44LTEwNi40LTMzLjgtMTgxLjIgMC03My43IDQ0LjQtMTEzLjYgOTYuNC0xMjAuMiAzOS4zLTUgODguMS01LjUgMTQ1LjctNS41em0wIDQxLjZjLTYwLjQgMC0xMDMuNiAuNS0xMzYuMyA1LjUtNDYgNi43LTY0LjMgMzIuNy02NC4zIDc5LjJsLjIgMjUuN2MxLjIgNTcuMyA3LjEgOTcuMSAyNy41IDEzNC41IDI2LjYgNDkuMyA3NC44IDY4LjIgMTI5LjcgNjguMmwxNy4yIDBjNzIgMCAxMDctMzQuOSAxMjYuMy02NS40IDkuNC0xNS41IDE3LjctMzIuNyAyMi4yLTU0LjNsMy4zLTEzLjggMTkuOSAwYzQ0LjMgMCA4Mi42LTM2IDgyLjYtODJsMC04LjNjMC01MS41LTMyLjItNzguNy04OC4xLTg1LjMtMzEuNi0yLjgtNTAuNC0zLjktMTQwLjItMy45ek0yNjcgMTY5LjJjMzguMiAwIDY0LjggMzEuNiA2NC44IDY3IDAgMzIuNy0xOC4zIDYxLTQyLjEgODMuMS0xNSAxNS0zOS4zIDMwLjUtNTUuOSA0MC41LTQuNCAyLjgtMTAgNC40LTE2LjcgNC40LTUuNSAwLTEwLjUtMS43LTE1LjUtNC40LTE2LjYtMTAtNDEtMjUuNS01Ni41LTQwLjUtMjEuOC0yMC44LTM5LjItNDYuOS00MS4zLTc3bC0uMi02LjFjMC0zNS41IDI1LjUtNjcgNjQuMy02NyAyMi43IDAgMzguOCAxMS42IDQ5LjMgMjcuNyAxMS42LTE2LjEgMjcuMi0yNy43IDQ5LjktMjcuN3ptMTIyLjUtMy45YzI4LjMgMCA0My44IDE2LjYgNDMuOCA0My4ycy0xNS41IDQyLjctNDMuOCA0Mi43Yy04LjkgMC0xMy44LTUtMTMuOC0xMS43bDAtNjIuNmMwLTYuNyA1LTExLjYgMTMuOC0xMS42eiJdfSxqTHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToicmV2IixpY29uOls0NDgsNTEyLFtdLCJmNWIyIiwiTTE1OC43IDI3NC45YTY1LjYgNjUuNiAwIDEgMSAxMzEuMiAwIDY1LjYgNjUuNiAwIDEgMSAtMTMxLjIgMHptMjcwLjctNS4xbC0uMSAwYy0uNy0yOS4zLTcuNy01OC4yLTIwLjUtODQuNnMtMzEuMi00OS43LTUzLjgtNjguNEwzMDkuNiAxNDNjMjIgMTQuMiA0MC4xIDMzLjggNTIuNyA1Ni44czE5LjEgNDguOCAxOS4xIDc1LjFjMCA4Ni42LTcwLjUgMTU3LjEtMTU3LjEgMTU3LjFTNjcuMiAzNjEuNSA2Ny4yIDI3NC45YzAtODEuOSA2My0xNDkuMyAxNDMtMTU2LjRsMCAzOS4xIDEwOC44LTYyLjgtMTA4LjgtNjIuOCAwIDM4LjNjLTEwNi43IDcuMi0xOTEgOTYtMTkxIDIwNC42IDAgMTExLjYgODkuMSAyMDIuMyAyMDAuMSAyMDVsMCAuMSAyMTAuMiAwIDAtMjEwLjJ6Il19LFZMdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJrZXljZG4iLGljb246WzUxMiw1MTIsW10sImYzYmEiLCJNNjMuOCA0MDkuM2w2MC41LTU5YzMyLjEgNDIuOCA3MS4xIDY2IDEyNi42IDY3LjQgMzAuNSAuNyA2MC4zLTcgODYuNC0yMi40IDUuMSA1LjMgMTguNSAxOS41IDIwLjkgMjItMzIuMiAyMC43LTY5LjYgMzEuMS0xMDguMSAzMC4yLTQzLjMtMS4xLTg0LjYtMTYuNy0xMTcuNy00NC40IC4zLS42LTM4LjIgMzcuNS0zOC42IDM3LjkgOS41IDI5LjgtMTMuMSA2Mi40LTQ2LjMgNjIuNC0yNi44LS4xLTQ3LjUtMjEuNy00Ny41LTQ4LjUgMC0zNC4zIDMzLjEtNTYuNiA2My44LTQ1LjZ6TTQxOC43IDE1Ni45YzE5LjEgMzEuMyAyOS42IDY3LjQgMjguNyAxMDQtMS4xIDQ0LjgtMTkgODcuNS00OC42IDEyMSAuMyAuMyAyMy44IDI1LjIgMjQuMSAyNS41IDkuNi0xLjMgMTkuMiAyIDI1LjkgOS4xIDExLjMgMTIgMTAuOSAzMC45LTEuMSA0Mi40LTEyIDExLjMtMzAuOSAxMC45LTQyLjQtMS4xLTYuNy03LTkuNC0xNi44LTcuNi0yNi4zLTI0LjktMjYuNi00NC40LTQ3LjItNDQuNC00Ny4yIDQyLjctMzQuMSA2My4zLTc5LjYgNjQuNC0xMjQuMiAuNy0yOC45LTcuMi01Ny4yLTIxLjEtODIuMmwyMi4xLTIxek0xMDQgNTMuMWM2LjcgNyA5LjQgMTYuOCA3LjYgMjYuM2w0NS45IDQ4LjFjLTQuNyAzLjgtMTMuMyAxMC40LTIyLjggMjEuMy0yNS40IDI4LjUtMzkuNiA2NC44LTQwLjcgMTAyLjktLjcgMjguOSA2LjEgNTcuMiAyMCA4Mi40TDkyIDM1NS42Yy0xOS4zLTMxLjYtMjguOS02Ny43LTI3LjgtMTA0LjcgMS00NC42IDE4LjMtODcuNiA0Ny41LTEyMS4xTDg2LjQgMTAzLjRjLTkuNiAxLjMtMTkuMi0yLTI1LjktOS4xLTExLjMtMTItMTAuOS0zMC45IDEuMS00Mi40IDExLjktMTEuMiAzMC42LTEwLjkgNDIuNCAxLjJ6TTQ2NC45IDhjMjYgMCA0Ny4xIDIyLjQgNDcuMSA0OC4zUzQ5MC45IDEwNCA0NjQuOSAxMDRjLTYuMyAuMS0xNC0xLjEtMTUuOS0xLjhsLTYyLjkgNTkuN2MtMzIuNy00My42LTc2LjctNjUuOS0xMjYuOS02Ny4yLTMwLjUtLjctNjAuMyA2LjgtODYuMiAyMi40bC0yMS4xLTIyQzE4NC4xIDc0LjMgMjIxLjUgNjQgMjYwIDY0LjkgMzAzLjMgNjYgMzQ0LjYgODEuNiAzNzcuNyAxMDkuNWw0MS4xLTM4LjZjLTEuNS00LjctMi4yLTkuNi0yLjItMTQuNS0uMS0yNi43IDIyLjMtNDguNCA0OC4zLTQ4LjR6TTI1Ni43IDExMy40YzUuNSAwIDEwLjkgLjQgMTYuNCAxLjEgNzguMSA5LjggMTMzLjQgODEuMSAxMjMuOCAxNTkuMS05LjggNzguMS04MS4xIDEzMy40LTE1OS4xIDEyMy44LTc4LjEtOS44LTEzMy40LTgxLjEtMTIzLjgtMTU5LjIgOS4zLTcyLjQgNzAuMS0xMjQuNiAxNDIuNy0xMjQuOHptLTU5IDExOS40Yy42IDIyLjcgMTIuMiA0MS44IDMyLjQgNTIuMmwtMTEgNTEuNyA3My43IDAtMTEtNTEuN2MyMC4xLTEwLjkgMzIuMS0yOSAzMi40LTUyLjItLjQtMzIuOC0yNS44LTU3LjUtNTguMy01OC4zLTMyLjEgLjgtNTcuMyAyNC44LTU4LjIgNTguM3oiXX0sVUx0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImhpcmUtYS1oZWxwZXIiLGljb246WzUxMiw1MTIsW10sImYzYjAiLCJNNDQzLjEgMEw3MS45IDBDNjcuOSAzNy4zIDM3LjQgNjcuOCAwIDcxLjdMMCA0NDMuMmMzNy40IDQuOSA2NiAzMi40IDcxLjkgNjguOGwzNzIuMiAwYzMtMzYuNCAzMi41LTY1LjggNjcuOS02OS44bDAtMzcwLjVDNDc1LjYgNjUuOCA0NDcgMzYuNCA0NDMuMSAwem0tMzcgNDA0LjljLTM2LjMgMC0xOC44LTItNTUuMS0yLTM1LjggMC0yMSAyLTU2LjEgMi01LjkgMC00LjktOC4yIDAtOS44IDIyLjgtNy42IDIyLjktMTAuMiAyNC42LTEyLjggMTAuNC0xNS42IDUuOS04MyA1LjktMTEzIDAtNS4zLTYuNC0xMi44LTEzLjgtMTIuOGwtMTExLjIgMGMtNy40IDAtMTMuOCA3LjUtMTMuOCAxMi44IDAgMzAtNC41IDk3LjQgNS45IDExMyAxLjcgMi41IDEuOCA1LjIgMjQuNiAxMi44IDQuOSAxLjYgNiA5LjggMCA5LjgtMzUuMSAwLTIwLjMtMi01Ni4xLTItMzYuMyAwLTE4LjggMi01NS4xIDItNy45IDAtNS44LTEwLjggMC0xMC44IDEwLjItMy40IDEzLjUtMy41IDIxLjctMTMuOCA3LjctMTIuOSA3LjktNDQuNCA3LjktMTI3LjhsMC0xMDEuMmMwLTIyLjItMTIuMi0yOC4zLTI4LjYtMzIuNC04LjgtMi4yLTQtMTEuOCAxLTExLjggMzYuNSAwIDIwLjYgMiA1Ny4xIDIgMzIuNyAwIDE2LjUtMiA0OS4yLTIgMy4zIDAgOC41IDguMyAxIDEwLjgtNC45IDEuNi0yNy42IDMuNy0yNy42IDM5LjMgMCA0NS42LS4yIDU1LjggMSA2OC44IDAgMS4zIDIuMyAxMi44IDEyLjggMTIuOGwxMDkuMiAwYzEwLjUgMCAxMi44LTExLjUgMTIuOC0xMi44IDEuMi0xMyAxLTIzLjIgMS02OC44IDAtMzUuNi0yMi43LTM3LjctMjcuNi0zOS4zLTcuNS0yLjUtMi4zLTEwLjggMS0xMC44IDMyLjcgMCAxNi41IDIgNDkuMiAyIDM2LjUgMCAyMC42LTIgNTcuMS0yIDQuOSAwIDkuOSA5LjYgMSAxMS44LTE2LjQgNC4xLTI4LjYgMTAuMy0yOC42IDMyLjRsMCAxMDEuMmMwIDgzLjQgLjEgMTE0LjkgNy45IDEyNy44IDguMiAxMC4yIDExLjQgMTAuNCAyMS43IDEzLjggNS44IDAgNy44IDEwLjggMCAxMC44eiJdfSxXOGU9e3ByZWZpeDoiZmFiIixpY29uTmFtZToic3F1YXJlLWhhY2tlci1uZXdzIixpY29uOls0NDgsNTEyLFsiaGFja2VyLW5ld3Mtc3F1YXJlIl0sImYzYWYiLCJNNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjB6TTIxIDIyOS4ycy4xLS4xIC4xLS4yIC4xLS4yIC4yLS4yYzAgLjEgMCAuMy0uMSAuNGwtLjIgMHpNMjM5LjIgMzg0bC0zMS40IDAgMC0xMDIuNy03OS44LTE1My4zIDM3LjMgMGM0MS41IDc3LjcgNDguMSA5NS44IDU0LjEgMTEyIDEuNiA0LjMgMy4xIDguNSA1LjIgMTMuNiAzLjItNyA1LjEtMTEuOSA3LjEtMTcuMyA1LjktMTUuMyAxMi44LTMzLjIgNTMuNS0xMDguM2wzNC44IDAtODAuOCAxNTUuMSAwIDEwMC45eiJdfSxXTHQ9VzhlLEdMdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJjcmVhdGl2ZS1jb21tb25zLXBkLWFsdCIsaWNvbjpbNTEyLDUxMixbXSwiZjRlZCIsIk0yNTUuNiA4QzExMi43IDggOCAxMjMuMSA4IDI1NiA4IDM5NC41IDEyMS42IDUwNCAyNTUuNiA1MDQgMzg1LjUgNTA0IDUwNCA0MDMuMSA1MDQgMjU2IDUwNCAxMTguMSAzOTcuNCA4IDI1NS42IDh6bS44IDQ1MC44Yy0xMTIuNSAwLTIwMy43LTkzLTIwMy43LTIwMi44IDAtMTA1LjQgODUuNS0yMDMuMyAyMDMuNy0yMDMuMyAxMTIuNiAwIDIwMi45IDg5LjUgMjAyLjggMjAzLjMgMCAxMjEuNy05OS42IDIwMi44LTIwMi44IDIwMi44ek0zMjQuNyAxODZsLTUzLjIgMCAwIDEzNy4yIDUzLjIgMGMyMS40IDAgNzAtNS4xIDcwLTY4LjYgMC02My40LTQ4LjYtNjguNi03MC02OC42em0uOCAxMDguNWwtMTkuOSAwIDAtNzkuNyAxOS40LS4xYzMuOCAwIDM1LTIuMSAzNSAzOS45IDAgMjQuNi0xMC41IDM5LjktMzQuNSAzOS45ek0yMTEuNyAxODZsLTY4LjIgMCAwIDEzNy4zIDM0LjYgMCAwLTQ0LjMgMjcgMGM1NC4xIDAgNTcuMS0zNy41IDU3LjEtNDYuNSAwLTMxLTE2LjgtNDYuNS01MC41LTQ2LjV6bS00LjkgNjcuM2wtMjkuMiAwIDAtNDEuNiAyOC4zIDBjMzAuOSAwIDI4LjggNDEuNiAuOSA0MS42eiJdfSxLTHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToib3JjaWQiLGljb246WzUxMiw1MTIsW10sImY4ZDIiLCJNMjk0LjcgMTg4LjJsLTQ1LjkgMCAwIDE1My44IDQ3LjUgMGM2Ny42IDAgODMuMS01MS4zIDgzLjEtNzYuOSAwLTQxLjYtMjYuNS03Ni45LTg0LjctNzYuOXpNMjU2IDhhMjQ4IDI0OCAwIDEgMCAwIDQ5NiAyNDggMjQ4IDAgMSAwIDAtNDk2ek0xNzUuMiAzNjguOGwtMjkuOCAwIDAtMjA3LjUgMjkuOCAwIDAgMjA3LjV6TTE2MC4zIDk4LjVhMTkuNiAxOS42IDAgMSAxIDAgMzkuMiAxOS42IDE5LjYgMCAxIDEgMC0zOS4yek0zMDAgMzY5bC04MSAwIDAtMjA3LjcgODAuNiAwYzc2LjcgMCAxMTAuNCA1NC44IDExMC40IDEwMy45IDAgNTMuMy00MS43IDEwMy45LTExMCAxMDMuOXoiXX0sRzhlPXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImJvYXJkLWdhbWUtZ2VlayIsaWNvbjpbNjQwLDUxMixbImJnZyJdLCJlODU1IiwiTTE2OC44IDE2OC4zbDMwLjEtOC4yLTEyLjMgOTguOCAxNi43IDE2LjEtMzguOSA5MS4yLTExMS44IDQxLjItNTIuNi0xMzEuOCAxNy43LTE3LTEwLjUtODQuMyAxOTEuMi03MC4zLTI5LjUgNjQuM3ptMTgwLjYgMTYuNWMxMS42IDAgMTkgNy40IDE5IDE3LjlsMCAzMS41YzAgOS43LTYuMyAxOC45LTE5LjUgMjIuMSAxMy4xIDMuMSAyMC41IDEyIDIwLjUgMjEuNGwwIDMwLjljMCAxMS4xLTcuNCAxOC4xLTE5IDE4LjFsLTg5LjEgMCAwLTE0MS44IDg4IDB6TTI5OCAyOTkuOGwzMyAwYzEuNSAwIDIuMS0xIDIuMS0yLjFsMC0yNi45YzAtMS0uNi0yLjMtMi4xLTIuM2wtMzMgMCAwIDMxLjN6bTAtNTcuM2wzMyAwYzEuNSAwIDIuMS0xLjEgMi4xLTIuM2wwLTI0LjhjMC0xLS42LTIuMy0yLjEtMi4zbC0zMyAwIDAgMjkuNHptMjA0LjEtMjcuMmwtNjUuNiAwYy0xIDAtMi4xIDEuMS0yLjEgMi4zbDAgNzYuMWMwIDEuMyAxIDIuMSAyLjEgMi4xbDI5LjcgMGMxLjUgMCAyLjMtLjggMi4zLTIuMWwwLTI0LTE5LjMgMCAxMi44LTMwIDQwLjEgMCAwIDcwLjhjMCA5LjItNy4yIDE2LjItMTYuMyAxNi4ybC03MS41IDBjLTkuMSAwLTE2LjUtNy0xNi41LTE2LjJsMC0xMDkuN2MwLTguNiA3LjQtMTYgMTYuNS0xNmw4Ny44IDAgMCAzMC41em0xMzIuNiAwbC02NS42IDBjLTEuMSAwLTIuMSAxLjEtMi4xIDIuM2wwIDc2LjFjMCAxLjMgMSAyLjEgMi4xIDIuMWwyOS42IDBjMS41IDAgMi4zLS44IDIuMy0yLjFsMC0yNC0xOS4yIDAgMTIuOC0zMCA0MC4xIDAgMCA3MC44YzAgOS4yLTcuMiAxNi4yLTE2LjMgMTYuMmwtNzEuNSAwYy05LjEgMC0xNi41LTYuOS0xNi41LTE2LjJsMC0xMDkuN2MwLTguNiA3LjQtMTYgMTYuNS0xNmw4Ny44IDAgMCAzMC41eiJdfSxZTHQ9RzhlLFpMdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJiZWhhbmNlIixpY29uOls1NzYsNTEyLFtdLCJmMWI0IiwiTTIzMiAyMzcuMmMzMS44LTE1LjIgNDguNC0zOC4yIDQ4LjQtNzQgMC03MC42LTUyLjYtODcuOC0xMTMuMy04Ny44bC0xNjcuMSAwIDAgMzU0LjQgMTcxLjggMGM2NC40IDAgMTI0LjktMzAuOSAxMjQuOS0xMDIuOSAwLTQ0LjUtMjEuMS03Ny40LTY0LjctODkuN3pNNzcuOSAxMzUuOWw3My4xIDBjMjguMSAwIDUzLjQgNy45IDUzLjQgNDAuNSAwIDMwLjEtMTkuNyA0Mi4yLTQ3LjUgNDIuMmwtNzkgMCAwLTgyLjd6bTgzLjMgMjMzLjdsLTgzLjMgMCAwLTk3LjYgODQuOSAwYzM0LjMgMCA1NiAxNC4zIDU2IDUwLjYgMCAzNS44LTI1LjkgNDctNTcuNiA0N3pNNTE5LjcgMTI4LjlsLTE0My43IDAgMC0zNC45IDE0My43IDAgMCAzNC45ek01NzYgMzA1LjJjMC03NS45LTQ0LjQtMTM5LjItMTI0LjktMTM5LjItNzguMiAwLTEzMS4zIDU4LjgtMTMxLjMgMTM1LjggMCA3OS45IDUwLjMgMTM0LjcgMTMxLjMgMTM0LjcgNjEuMyAwIDEwMS0yNy42IDEyMC4xLTg2LjNsLTYyLjIgMGMtNi43IDIxLjktMzQuMyAzMy41LTU1LjcgMzMuNS00MS4zIDAtNjMtMjQuMi02My02NS4zbDE4NS4xIDBjLjMtNC4yIC42LTguNyAuNi0xMy4yek0zOTAuNCAyNzRjMi4zLTMzLjcgMjQuNy01NC44IDU4LjUtNTQuOCAzNS40IDAgNTMuMiAyMC44IDU2LjIgNTQuOGwtMTE0LjcgMHoiXX0sWEx0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6Im1vbmVybyIsaWNvbjpbNTEyLDUxMixbXSwiZjNkMCIsIk0zNjAgMzg0bDEwOC40IDBDNDI1IDQ1NS45IDM0Ni4xIDUwNCAyNTYgNTA0Uzg3IDQ1NS45IDQzLjYgMzg0bDEwOC40IDAgMC0xMjcuOCAxMDQgMTA0LjggMTA0LTEwNSAwIDEyOHpNOTYgMzM2bDAtMjA4IDE1OS40IDE1OS40IDE2MC42LTE1OS40IDAgMjA4IDc0LjggMGM4LjUtMjUuMSAxMy4yLTUyIDEzLjItODAgMC0xMzctMTExLTI0OC0yNDgtMjQ4UzggMTE5IDggMjU2YzAgMjggNC42IDU0LjkgMTMuMiA4MEw5NiAzMzZ6Il19LFFMdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJmaWdtYSIsaWNvbjpbMzg0LDUxMixbXSwiZjc5OSIsIk0xNCA5NS44QzE0IDQyLjkgNTYuOSAwIDEwOS44IDBMMjc0LjIgMGM1Mi45IDAgOTUuOCA0Mi45IDk1LjggOTUuOCAwIDMzLjUtMTcuMiA2My00My4yIDgwLjEgMjYgMTcuMSA0My4yIDQ2LjYgNDMuMiA4MC4xIDAgNTIuOS00Mi45IDk1LjgtOTUuOCA5NS44bC0yLjEgMGMtMjQuOCAwLTQ3LjQtOS40LTY0LjQtMjQuOWwwIDg4LjNjMCA1My42LTQ0IDk2LjgtOTcuNCA5Ni44LTUyLjggMC05Ni4zLTQyLjgtOTYuMy05NS44IDAtMzMuNSAxNy4yLTYzIDQzLjItODAuMS0yNi0xNy4xLTQzLjItNDYuNi00My4yLTgwLjFzMTcuMi02MyA0My4yLTgwLjFDMzEuMiAxNTguOCAxNCAxMjkuMyAxNCA5NS44em0xNjIuMyA5NS44bC02Ni41IDBjLTM1LjYgMC02NC40IDI4LjgtNjQuNCA2NC40IDAgMzUuNCAyOC42IDY0LjIgNjQgNjQuNGw2Ni45IDAgMC0xMjguOHpNMjA3LjcgMjU2YzAgMzUuNiAyOC44IDY0LjQgNjQuNCA2NC40bDIuMSAwYzM1LjYgMCA2NC40LTI4LjggNjQuNC02NC40cy0yOC44LTY0LjQtNjQuNC02NC40bC0yLjEgMGMtMzUuNiAwLTY0LjQgMjguOC02NC40IDY0LjR6bS05Ny45IDk1LjhsLS40IDBjLTM1LjQgLjItNjQgMjktNjQgNjQuNHMyOS4yIDY0LjQgNjQuOSA2NC40YzM2LjMgMCA2Ni0yOS40IDY2LTY1LjVsMC02My40LTY2LjUgMHptMC0zMjAuNGMtMzUuNiAwLTY0LjQgMjguOC02NC40IDY0LjRzMjguOCA2NC40IDY0LjQgNjQuNGw2Ni41IDAgMC0xMjguOC02Ni41IDB6bTk3LjkgMTI4LjhsNjYuNSAwYzM1LjYgMCA2NC40LTI4LjggNjQuNC02NC40cy0yOC44LTY0LjQtNjQuNC02NC40bC02Ni41IDAgMCAxMjguOHoiXX0sRGI9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiaW5zdGFncmFtIixpY29uOls0NDgsNTEyLFtdLCJmMTZkIiwiTTIyNC4zIDE0MWExMTUgMTE1IDAgMSAwIC0uNiAyMzAgMTE1IDExNSAwIDEgMCAuNi0yMzB6bS0uNiA0MC40YTc0LjYgNzQuNiAwIDEgMSAuNiAxNDkuMiA3NC42IDc0LjYgMCAxIDEgLS42LTE0OS4yem05My40LTQ1LjFhMjYuOCAyNi44IDAgMSAxIDUzLjYgMCAyNi44IDI2LjggMCAxIDEgLTUzLjYgMHptMTI5LjcgMjcuMmMtMS43LTM1LjktOS45LTY3LjctMzYuMi05My45LTI2LjItMjYuMi01OC0zNC40LTkzLjktMzYuMi0zNy0yLjEtMTQ3LjktMi4xLTE4NC45IDAtMzUuOCAxLjctNjcuNiA5LjktOTMuOSAzNi4xcy0zNC40IDU4LTM2LjIgOTMuOWMtMi4xIDM3LTIuMSAxNDcuOSAwIDE4NC45IDEuNyAzNS45IDkuOSA2Ny43IDM2LjIgOTMuOXM1OCAzNC40IDkzLjkgMzYuMmMzNyAyLjEgMTQ3LjkgMi4xIDE4NC45IDAgMzUuOS0xLjcgNjcuNy05LjkgOTMuOS0zNi4yIDI2LjItMjYuMiAzNC40LTU4IDM2LjItOTMuOSAyLjEtMzcgMi4xLTE0Ny44IDAtMTg0Ljh6TTM5OSAzODhjLTcuOCAxOS42LTIyLjkgMzQuNy00Mi42IDQyLjYtMjkuNSAxMS43LTk5LjUgOS0xMzIuMSA5cy0xMDIuNyAyLjYtMTMyLjEtOWMtMTkuNi03LjgtMzQuNy0yMi45LTQyLjYtNDIuNi0xMS43LTI5LjUtOS05OS41LTktMTMyLjFzLTIuNi0xMDIuNyA5LTEzMi4xYzcuOC0xOS42IDIyLjktMzQuNyA0Mi42LTQyLjYgMjkuNS0xMS43IDk5LjUtOSAxMzIuMS05czEwMi43LTIuNiAxMzIuMSA5YzE5LjYgNy44IDM0LjcgMjIuOSA0Mi42IDQyLjYgMTEuNyAyOS41IDkgOTkuNSA5IDEzMi4xczIuNyAxMDIuNy05IDEzMi4xeiJdfSxKTHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToicGVyYnl0ZSIsaWNvbjpbNDQ4LDUxMixbXSwiZTA4MyIsIk0zMDUuMyAyODQuNmwtNTguNyAwIDAgOTguNyA1OC43IDBjMTYuMyAwIDI5LTQuNiAzOC4yLTEzLjhzMTMuOC0yMS4yIDEzLjgtMzYuMWMwLTE0LjYtNC43LTI2LjMtMTQtMzUuM3MtMjItMTMuNS0zNy45LTEzLjV6TTE0OS40IDEyOC43bC01OC43IDAgMCA5OC43IDU4LjcgMGMxNi4zIDAgMjktNC42IDM4LjItMTMuOHMxMy44LTIxLjIgMTMuOC0zNi4xYzAtMTQuNi00LjctMjYuMy0xNC0zNS4zcy0yMi0xMy41LTM3LjktMTMuNXpNMzY2LjYgMzJMODEuNCAzMmMtMjEuNiAwLTQyLjIgOC42LTU3LjUgMjMuOVMwIDkxLjggMCAxMTMuNEwwIDM5OC42YzAgMjEuNiA4LjYgNDIuMiAyMy45IDU3LjVTNTkuOCA0ODAgODEuNCA0ODBsMjg1LjMgMGMyMS42IDAgNDIuMi04LjYgNTcuNS0yMy45UzQ0OCA0MjAuMiA0NDggMzk4LjZsMC0yODUuM2MwLTIxLjYtOC42LTQyLjItMjMuOS01Ny41UzM4OC4yIDMyIDM2Ni42IDMyem02My42IDM2Ni42YzAgMTYuOS02LjcgMzMtMTguNyA0NXMtMjguMSAxOC42LTQ1IDE4LjdsLTI4NS4zIDBjLTE2LjkgMC0zMy02LjctNDUtMTguN3MtMTguNi0yOC4xLTE4LjctNDVsMC0yODUuM2MwLTE2LjkgNi43LTMzIDE4LjctNDVzMjguMS0xOC42IDQ1LTE4LjdsMjg1LjMgMGMxNi45IDAgMzMgNi43IDQ1IDE4LjdzMTguNiAyOC4xIDE4LjcgNDVsMCAyODUuM3ptLTEyNS0yNjkuOWwtNTguNyAwIDAgOTguNyA1OC43IDBjMTYuMyAwIDI5LTQuNiAzOC4yLTEzLjhzMTMuOC0yMS4yIDEzLjgtMzYuMWMwLTE0LjYtNC43LTI2LjMtMTQtMzUuM3MtMjItMTMuNS0zNy45LTEzLjV6Il19LEs4ZT17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzcXVhcmUtdmltZW8iLGljb246WzQ0OCw1MTIsWyJ2aW1lby1zcXVhcmUiXSwiZjE5NCIsIk00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMHpNMzE4LjUgMzA5LjVjLTQzLjUgNTYuNS04MC4zIDg0LjgtMTEwLjQgODQuOC0xOC43IDAtMzQuNC0xNy4yLTQ3LjMtNTEuNi0zLjgtMTMuOS03LjMtMjYuOS0xMC41LTM5LTE4LjItNjguMy0yOC42LTEwNy40LTQ2LjItMTA3LjQtMi40IDAtMTAuOCA1LTI1LjEgMTUuMUw2NCAxOTJjNy02LjEgMTMuOS0xMi40IDIwLjYtMTguNSAyOS4xLTI2LjMgNTUuNi01MC4zIDczLjUtNTEuOSAyNC45LTIuNCA0MC4yIDE0LjYgNDYgNTEuMSAyMC41IDEyOS42IDI5LjYgMTQ5LjIgNjYuOCA5MC41IDEzLjQtMjEuMiAyMC42LTM3LjIgMjEuNS00OC4zIDMuNC0zMi44LTI1LjYtMzAuNi00NS4yLTIyLjIgMTUuNy01MS41IDQ1LjgtNzYuNSA5MC4xLTc1LjEgMzIuOSAxIDQ4LjQgMjIuNCA0Ni41IDY0LTEuNCAzMS4xLTIzLjIgNzMuOC02NS4zIDEyNy45eiJdfSxlRXQ9SzhlLHRFdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJwdXNoZWQiLGljb246WzQ0OCw1MTIsW10sImYzZTEiLCJNNDE1LjEgMTExLjlsLTk4LjUtOSAxNC0zMy40YzEwLjQtMjMuNS0xMC44LTQwLjQtMjguNy0zN0wzMC42IDc2LjljLTE1LjEgMi43LTI2IDE4LjMtMjEuNCAzNi42TDExNC4zIDQ2MS44YzYuNSAyMS4zIDM2LjcgMjQuMiA0Ny43IDdMMTk3LjMgMzg4IDQzMi41IDE1Ni43YzE2LjQtMTYuOCA0LjMtNDIuOS0xNy40LTQ0Ljh6TTMwNS43IDUzLjZjNS4xLS43IDcuNSAyLjUgNS4yIDcuNGwtMTYuOCAzOS45LTE3Ny40LTE2LjMgMTg5LTMxek0zMC44IDEwNy45Yy0zLjEtNS4xIDEtMTAgNi4xLTkuMWwyNDguNyAyMi43LTk2LjkgMjMwLjctMTU3LjktMjQ0LjN6TTE0NC4xIDQ1Ni40Yy0yLjYgNC03LjkgMy4xLTkuNC0xLjJMNTEuNiAxNzkuNyAxNzkuMyAzNzcuM2MtNyAxNS0zNS4yIDc5LjEtMzUuMiA3OS4xek00MTYuOSAxNDEuOWwtMTk4LjcgMTk1LjQgODkuNy0yMTMuNyAxMDYuNCA5LjdjNCAxLjEgNS43IDUuMyAyLjYgOC42eiJdfSxhRXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToibWl4Y2xvdWQiLGljb246WzY0MCw1MTIsW10sImYyODkiLCJNMjEzIDM0Ni42bC0zMy4yIDAgMC0xNTEuNSA2LjItMjEuNi0xMC43IDAtMzguMSAxNzMuMS02MSAwLTM4LjQtMTczLjEtMTAuNSAwIDUuOSAyMS42IDAgMTUxLjUtMzMuMiAwIDAtMTgxLjYgNjUuNyAwIDM2LjYgMTczLjEgOC41IDAgMzYuNi0xNzMuMSA2NS43IDAgMCAxODEuNnptMzMxLjUtNjNsLTg2IDYyLjEgMC0zOC4xIDcyLjktNTEuOC03Mi45LTUxLjggMC0zOC4xIDg2IDYyLjMgOS4zIDAgODYuMy02Mi4zIDAgMzguMS03My4xIDUxLjggNzMuMSA1MS44IDAgMzguMS04Ni4zLTYyLjEtOS4zIDB6TTQzMC4yIDI3Mi4zbC0xODIgMCAwLTMzLjEgMTgyIDAgMCAzMy4xeiJdfSxzRXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToieWFuZGV4LWludGVybmF0aW9uYWwiLGljb246WzMyMCw1MTIsW10sImY0MTQiLCJNMTI5LjUgNTEybDAtMTY2LjEtMTExLTI5Ny45IDU1LjggMCA4MS44IDIyOS43IDk0LjEtMjc3LjcgNTEuMyAwLTEyMC43IDM0Ny44IDAgMTY0LjItNTEuMyAweiJdfSxpRXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiaGl2ZSIsaWNvbjpbNTEyLDUxMixbXSwiZTA3ZiIsIk0yNjAuNCAyNTQuOUwxMzEuNSAzMy4xYy0uMi0uMy0uNS0uNi0uOC0uOHMtLjctLjMtMS4xLS4zLS44IC4xLTEuMSAuMy0uNiAuNS0uOCAuOEwuMyAyNTQuOWMtLjIgLjMtLjMgLjctLjMgMS4xcy4xIC44IC4zIDEuMUwxMjkuMSA0NzguOWMuMiAuMyAuNSAuNiAuOCAuOHMuNyAuMyAxLjEgLjMgLjgtLjEgMS4xLS4zIC42LS41IC44LS44TDI2MC40IDI1Ny4xYy4yLS4zIC4zLS43IC4zLTEuMXMtLjEtLjgtLjMtMS4xem0zOS4xLTI1LjdjLjIgLjMgLjUgLjYgLjggLjhzLjcgLjMgMS4xIC4zbDY2LjUgMGMuNCAwIC44LS4xIDEuMS0uM3MuNi0uNSAuOC0uOCAuMy0uNyAuMy0xLjEtLjEtLjgtLjMtMS4xTDI1OS4xIDMzLjFjLS4yLS4zLS41LS42LS44LS44cy0uNy0uMy0xLjEtLjNsLTY2LjUgMGMtLjQgMC0uOCAuMS0xLjEgLjNzLS42IC41LS44IC44LS4zIC43LS4zIDEuMSAuMSAuOCAuMyAxLjFMMjk5LjQgMjI5LjJ6bTIxMi4zIDI1LjdMMzg0LjkgMzMuMWMtLjItLjMtLjUtLjYtLjgtLjhzLS43LS4zLTEuMS0uM2wtNjYuNiAwYy0uNCAwLS44IC4xLTEuMSAuM3MtLjYgLjUtLjggLjgtLjMgLjctLjMgMS4xIC4xIC44IC4zIDEuMUw0NDAuNyAyNTYgMzE0LjUgNDc2LjdjLS4yIC4zLS4zIC43LS4zIDEuMXMuMSAuOCAuMyAxLjEgLjUgLjYgLjggLjggLjcgLjMgMS4xIC4zbDY2LjYgMGMuNCAwIC44LS4xIDEuMS0uM3MuNi0uNSAuOC0uOEw1MTEuNyAyNTcuMWMuMi0uMyAuMy0uNyAuMy0xLjFzLS4xLS44LS4zLTEuMXpNMzY2IDI4NC45bC02Ni41IDBjLS40IDAtLjggLjEtMS4xIC4zcy0uNiAuNS0uOCAuOEwxODguOCA0NzYuN2MtLjIgLjMtLjMgLjctLjMgMS4xcy4xIC44IC4zIDEuMSAuNSAuNiAuOCAuOCAuNyAuMyAxLjEgLjNsNjYuNSAwYy40IDAgLjgtLjEgMS4xLS4zcy42LS41IC44LS44TDM2Ny45IDI4OC4zYy4yLS4zIC4zLS43IC4zLTEuMXMtLjEtLjgtLjMtMS4xLS41LS42LS44LS44LS43LS4zLTEuMS0uM3oiXX0sckV0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImNyZWF0aXZlLWNvbW1vbnMtemVybyIsaWNvbjpbNTEyLDUxMixbXSwiZjRmMyIsIk0yNTUuNiA4QzM5Ny40IDggNTA0IDExOC4xIDUwNCAyNTYgNTA0IDQwMy4xIDM4NS41IDUwNCAyNTUuNiA1MDQgMTIxLjYgNTA0IDggMzk0LjUgOCAyNTYgOCAxMjMuMSAxMTIuNyA4IDI1NS42IDh6bS44IDQ0LjdjLTExOC4yIDAtMjAzLjcgOTcuOS0yMDMuNyAyMDMuMyAwIDEwOS44IDkxLjIgMjAyLjggMjAzLjcgMjAyLjggMTAzLjIgMCAyMDIuOC04MS4xIDIwMi44LTIwMi44IC4xLTExMy44LTkwLjItMjAzLjMtMjAyLjgtMjAzLjN6bS0uNCA2MC41Yy04MS45IDAtMTAyLjUgNzcuMy0xMDIuNSAxNDIuOFMxNzQuMSAzOTguOCAyNTYgMzk4LjggMzU4LjUgMzIxLjUgMzU4LjUgMjU2IDMzNy45IDExMy4yIDI1NiAxMTMuMnptMCA1My45YzMuMyAwIDYuNCAuNSA5LjIgMS4yIDUuOSA1LjEgOC44IDEyLjEgMy4xIDIxLjlMMjEzLjggMjkwLjRjLTEuNy0xMi43LTEuOS0yNS4xLTEuOS0zNC40IDAtMjguOCAyLTg4LjkgNDQuMS04OC45em00MC44IDQ2LjJjMi45IDE1LjQgMy4zIDMxLjQgMy4zIDQyLjcgMCAyOC45LTIgODguOS00NC4xIDg4LjktMTMuNSAwLTMyLjYtNy43LTIwLjEtMjYuNGw2MC45LTEwNS4yeiJdfSxZOGU9e3ByZWZpeDoiZmFiIixpY29uTmFtZToic3F1YXJlLXNuYXBjaGF0IixpY29uOls0NDgsNTEyLFsic25hcGNoYXQtc3F1YXJlIl0sImYyYWQiLCJNMzg0IDMyTDY0IDMyYy0xNyAwLTMzLjMgNi43LTQ1LjMgMTguN1MwIDc5IDAgOTZMMCA0MTZjMCAxNyA2LjcgMzMuMyAxOC43IDQ1LjNTNDcgNDgwIDY0IDQ4MGwzMjAgMGMxNyAwIDMzLjMtNi43IDQ1LjMtMTguN1M0NDggNDMzIDQ0OCA0MTZsMC0zMjBjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNTNDAxIDMyIDM4NCAzMnptLTMuOSAzMTkuM2wtLjEgLjFjLTIuNSAyLjgtNS40IDUuMS04LjcgNi44LTYuNSAzLjYtMTMuNCA2LjMtMjAuNiA4LjItMS40IC40LTIuNyAxLTMuOSAxLjgtMi4yIDEuOS0yLjEgNC42LTQuNCA4LjYtMS43IDMtNCA1LjUtNi44IDcuNS02LjcgNC42LTE0LjIgNC45LTIyLjIgNS4yLTcuMiAuMy0xNS40IC42LTI0LjcgMy43LTMuOCAxLjItNy44IDMuNy0xMi40IDYuNS0xMS4zIDYuOS0yNi43IDE2LjQtNTIuMyAxNi40cy00MC45LTkuNC01Mi4xLTE2LjNjLTQuNy0yLjktOC43LTUuNC0xMi41LTYuNi05LjMtMy4xLTE3LjUtMy40LTI0LjctMy43LTgtLjMtMTUuNS0uNi0yMi4yLTUuMi0yLjQtMS42LTQuNC0zLjctNi02LjEtMy4yLTQuNi0yLjktNy44LTUuMy05LjktMS4zLS44LTIuNi0xLjUtNC4xLTEuOC03LjEtMS45LTEzLjktNC42LTIwLjMtOC4xLTMuMS0xLjYtNS45LTMuOC04LjMtNi4zLTYuNi02LjgtOC4zLTE0LjgtNS43LTIxLjggMy40LTkuMyAxMS42LTEyLjEgMTkuNC0xNi4zIDE0LjgtOCAyNi4zLTE4LjEgMzQuNC0yOS45IDIuMy0zLjMgNC4zLTYuOSA2LTEwLjYgLjgtMi4yIC44LTMuMyAuMi00LjQtLjYtLjktMS4zLTEuNi0yLjItMi4yLTIuNS0xLjctNS4xLTMuNC02LjktNC41LTMuMy0yLjEtNS45LTMuOC03LjUtNS02LjMtNC40LTEwLjYtOS0xMy40LTE0LjItMS45LTMuNi0zLTcuNi0zLjMtMTEuNnMuNC04LjEgMS45LTExLjljNC4xLTEwLjkgMTQuNS0xNy43IDI3LTE3LjcgMi42IDAgNS4zIC4zIDcuOCAuOCAuNyAuMiAxLjQgLjMgMiAuNS0uMS03LjQgLjEtMTUuNCAuNy0yMy4xIDIuNC0yNy4zIDExLjktNDEuNiAyMS45LTUzIDYuNC03LjIgMTMuOS0xMy4yIDIyLjMtMTcuOSAxNS4xLTguNiAzMi4yLTEzIDUwLjktMTNzMzUuOCA0LjQgNTAuOSAxM2M4LjMgNC43IDE1LjkgMTAuOCAyMi4yIDE3LjkgMTAgMTEuNCAxOS41IDI1LjcgMjEuOSA1MyAuNiA3LjcgLjkgMTUuNCAuNyAyMy4xIC43LS4yIDEuNC0uMyAyLjEtLjUgMi42LS42IDUuMi0uOCA3LjgtLjggMTIuNSAwIDIyLjggNi44IDI3IDE3LjcgMS41IDMuOCAyLjEgNy45IDEuOSAxMS45cy0xLjQgOC0zLjMgMTEuNmMtMi43IDUuMi03LjEgOS45LTEzLjQgMTQuMi0xLjcgMS4yLTQuMyAyLjktNy41IDUtMS44IDEuMi00LjUgMi45LTcuMiA0LjctLjggLjUtMS40IDEuMi0xLjkgMi0uNSAxLS41IDIuMiAuMiA0LjIgMS43IDMuOCAzLjcgNy40IDYuMSAxMC44IDguMyAxMi4xIDIwLjIgMjIuMyAzNS41IDMwLjQgMS41IC44IDMgMS41IDQuNCAyLjMgLjcgLjMgMS42IC44IDIuNSAxLjMgNC45IDIuNyA5LjIgNiAxMS41IDEyLjIgMi41IDYuOSAxIDE0LjctNS4yIDIxLjN6bS0xNi43LTE4LjVjLTUwLjMtMjQuMy01OC4zLTYxLjktNTguNy02NC43LS40LTMuNC0uOS02IDIuOC05LjUgMy42LTMuMyAxOS41LTEzLjIgMjQtMTYuMyA3LjMtNS4xIDEwLjUtMTAuMiA4LjItMTYuNS0xLjctNC4zLTUuNy02LTEwLTYtMS4zIDAtMi43IC4yLTQgLjQtOCAxLjctMTUuOCA1LjgtMjAuNCA2LjktLjUgLjEtMS4xIC4yLTEuNyAuMi0yLjQgMC0zLjMtMS4xLTMuMS00IC42LTguOCAxLjgtMjUuOSAuNC00MS45LTEuOS0yMi05LTMyLjktMTcuNC00Mi42LTQuMS00LjYtMjMuMS0yNC43LTU5LjUtMjQuN3MtNTUuNCAyMC4xLTU5LjUgMjQuOGMtOC40IDkuNy0xNS41IDIwLjYtMTcuNCA0Mi42LTEuNCAxNi0uMSAzMy4xIC40IDQxLjkgLjIgMi44LS43IDQtMy4xIDQtLjYgMC0xLjEtLjEtMS43LS4yLTQuNS0xLjEtMTIuMy01LjEtMjAuMy02LjktMS4zLS4zLTIuNi0uNC00LS40LTQuMyAwLTguMyAxLjYtMTAgNi0yLjQgNi4zIC44IDExLjQgOC4yIDE2LjUgNC40IDMuMSAyMC40IDEzIDI0IDE2LjMgMy43IDMuNCAzLjIgNi4xIDIuOCA5LjUtLjQgMi44LTguNCA0MC40LTU4LjcgNjQuNy0yLjkgMS40LTggNC40IC45IDkuMyAxMy45IDcuNiAyMy4xIDYuOCAzMC4zIDExLjQgNi4xIDMuOSAyLjUgMTIuNCA2LjkgMTUuNCA1LjUgMy44IDIxLjYtLjMgNDIuMyA2LjYgMTcuNCA1LjcgMjguMSAyMiA1OSAyMnM0MS44LTE2LjMgNTguOS0yMmMyMC44LTYuOSAzNi45LTIuOCA0Mi4zLTYuNiA0LjQtMy4xIC44LTExLjUgNi45LTE1LjQgNy4yLTQuNiAxNi40LTMuOCAzMC4zLTExLjUgOC44LTQuOSAzLjgtNy45IC45LTkuNHoiXX0sb0V0PVk4ZSxuRXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToidGhlbWVpc2xlIixpY29uOls1MTIsNTEyLFtdLCJmMmIyIiwiTTIwOCA4OC4zYzAtMTAgNi4zLTIxLjcgMTcuNy0yMS43IDExLjEgMCAxNy43IDExLjcgMTcuNyAyMS43IDAgMTAuMy02LjYgMjEuNy0xNy43IDIxLjctMTEuNCAwLTE3LjctMTEuNC0xNy43LTIxLjd6bTMwNCAxNjBjMCAzNi0xMS40IDEwMi4zLTM2LjMgMTI5LjctMjIuOSAyNC45LTg3LjQgNjEuMS0xMjAuOSA3MC42bC0xLjEgLjMgMCAzMi42YzAgMTYuMy0xMi42IDMwLjYtMjkuMSAzMC42LTEwIDAtMTkuNC01LjctMjQuNi0xNC4zLTUuNCA4LjYtMTQuOSAxNC4zLTI0LjkgMTQuM3MtMTkuNC01LjctMjQuOS0xNC4zYy01LjEgOC42LTE0LjYgMTQuMy0yNC42IDE0LjMtMTAuMyAwLTE5LjQtNS43LTI0LjktMTQuMy01LjEgOC42LTE0LjYgMTQuMy0yNC42IDE0LjMtMTguOSAwLTI5LjQtMTUuNy0yOS40LTMyLjktMTYuMyAxMi4zLTM1LjcgMTkuNC01Ni42IDE5LjQtMjIgMC00My40LTguMy02MC4zLTIyLjkgMTAuMy0uMyAyMC42LTIuMyAzMC4zLTUuNy0yMC45LTUuNy0zOS40LTE4LjktNTItMzYuMyAyMS40IDQuNiA0Ni4yIDEuNyA2Ny4xLTExLjEtMjItMjItNTYuNi01OC45LTY4LjYtODcuNC01LjctMTMuNC02LjktMzEuNC02LjktNDUuNyAwLTQ5LjcgMjAuMy0xNjAgODYuMy0xNjAgMTAuNiAwIDE4LjkgNC45IDIzLjEgMTQuOSAzLjctNS40IDcuNy0xMC41IDEyLTE1LjQgMi0yLjYgNS43LTUuNCA3LjEtOC4zIDgtMTIuNiAxMS43LTIxLjEgMjEuNy0zNCAzMi4zLTQxLjEgODEuNy02OS40IDEzNC45LTY5LjQgNiAwIDEyIC4zIDE3LjcgMS4xIDEwLjktMTEuNyAyNi0xOC4zIDQxLjctMTguMyAxNC42IDAgMjkuNyA2IDQwIDE2LjMgLjkgLjkgMS40IDIuMyAxLjQgMy40IDAgMy43LTEwLjMgMTMuNC0xMi45IDE2LjMgNC4zIDEuNCAxNS43IDYuOSAxNS43IDEyIDAgMi45LTIuOSA1LjEtNC42IDcuMSAzMS40IDI3LjcgNDkuNCA2Ny4xIDU2LjMgMTA4IDQuMy01LjEgMTAuMy04LjYgMTcuMS04LjYgMTAuNiAwIDIwLjkgNy4xIDI4LjYgMTQgMjAuOSAxOC42IDI1LjcgNTMuMSAyNS43IDc5Ljd6TTE4OCA4OS40YzAgMTguMyAxMi42IDM3LjEgMzIuMyAzNy4xczMyLjMtMTguOSAzMi4zLTM3LjFjMC0xOC0xMi42LTM2LjktMzIuMy0zNi45UzE4OCA3MS40IDE4OCA4OS40ek0yMzcuNyAxOTRjMC0xOS43IDMuNy0zOS4xIDguNi01OC4zLTUyIDc5LjUtMTMuNSAxODQuNiA2OC45IDE4NC42IDIxLjQgMCA0Mi42LTcuNyA2MC0yMCAyLTcuNCAzLjctMTQuOSAzLjctMjIuNiAwLTE0LjMtNi4zLTIxLjQtMjAuNi0yMS40LTQuNiAwLTkuMSAuOS0xMy40IDEuNy02My4zIDEyLjctMTA3LjEgMy43LTEwNy4xLTY0ek0xOTYuNiA0NDguOWMwLTExLjEtOC45LTIwLjktMjAuMy0yMC45cy0yMCA5LjctMjAgMjAuOWwwIDMyLjZjMCAxMS4xIDguNiAyMS4xIDIwIDIxLjFzMjAuMy05LjcgMjAuMy0yMS4xbDAtMzIuNnptNDkuMSAwYzAtMTEuMS04LjYtMjAuOS0yMC0yMC45cy0yMC4zIDkuNy0yMC4zIDIwLjlsMCAzMi42YzAgMTEuMSA4LjkgMjEuMSAyMC4zIDIxLjFzMjAtMTAgMjAtMjEuMWwwLTMyLjZ6bTQ5LjcgMGMwLTExLjEtOC45LTIwLjktMjAuMy0yMC45cy0yMC4zIDkuNy0yMC4zIDIwLjlsMCAzMi42YzAgMTEuMSA4LjkgMjEuMSAyMC4zIDIxLjFzMjAuMy05LjcgMjAuMy0yMS4xbDAtMzIuNnptNDkuNyAwYzAtMTEuMS04LjktMjAuOS0yMC4zLTIwLjlzLTIwLjMgOS43LTIwLjMgMjAuOWwwIDMyLjZjMCAxMS4xIDguOSAyMS4xIDIwLjMgMjEuMXMyMC4zLTEwIDIwLjMtMjEuMWwwLTMyLjZ6TTQyMS43IDI4NmMtMzAuOSA1OS4xLTkwLjMgMTAyLjYtMTU4LjYgMTAyLjYtOTYuNiAwLTE2MC42LTg0LjYtMTYwLjYtMTc2LjYgMC0xNi45IDItMzMuNCA2LTQ5LjctMjAgMzMuNy0yOS43IDcyLjYtMjkuNyAxMTEuNCAwIDYwLjMgMjQuOSAxMjEuNyA3MS40IDE2MC45IDUuMS05LjcgMTQuOS0xNi4zIDI2LTE2LjMgMTAgMCAxOS40IDUuNyAyNC42IDE0LjMgNS40LTguNiAxNC42LTE0LjMgMjQuOS0xNC4zIDEwIDAgMTkuNCA1LjcgMjQuNiAxNC4zIDUuNC04LjYgMTQuOS0xNC4zIDI0LjktMTQuM3MxOS40IDUuNyAyNC45IDE0LjNjNS4xLTguNiAxNC42LTE0LjMgMjQuNi0xNC4zIDEwLjkgMCAyMC45IDYuNiAyNS43IDE2IDQzLjQtMzYuMyA2OC42LTkyIDcxLjQtMTQ4LjN6bTEwLjYtOTkuN2MwLTUzLjctMzQuNi0xMDUuNy05Mi42LTEwNS43LTMwLjMgMC01OC42IDE1LjEtNzguOSAzNi45LTIwIDY2LjQtMjcuNCAxMzYuNiA0MS40IDEzNi42IDI4LjggMCA5Ny40LTI4LjUgODQuMyAzNi45IDI4LjktMjYgNDUuNy02NS43IDQ1LjctMTA0LjZ6Il19LGxFdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJkYXJ0LWxhbmciLGljb246WzUxMiw1MTIsW10sImU2OTMiLCJNMzc4LjYgNzguOWMtMi44LS4xLTUuNi0uMi04LjUtLjJsLTI2NC4xIDAgMTQzLjItNzJjNy40LTQuNCAxOC44LTYuNyAzMC40LTYuNyAxMy41IDAgMjkuNCA5LjIgMzcgMTYuOGw2MiA2MiAwIC4xek0xMDcuMyA5Ni41bDI2Mi44IDBjMTYgMCAyNS40IDEuNCAzNS40IDkuM2wxMDYuNSAxMDYuNCAwIDIwOC44LTc5LjMgLjctMzI1LjQtMzI1LjJ6TTk2LjUgMzczbDAtMjYyLjIgMzIzLjggMzIzLjggLjcgNzcuNC0yMTIuMiAwLTk4LjEtOTguMkM5OS40IDQwMi41IDk2LjUgMzk4LjUgOTYuNSAzNzN6TTc4LjcgMTA1LjNsMCAyNjcuN2MwIDMuMyAuMSA2LjMgLjIgOS4xbC02Mi02MkM2LjUgMzA5LjMgMCAyOTQuMyAwIDI3OS42IDAgMjcyLjggMy45IDI2Mi4xIDYuNyAyNTZsNzItMTUwLjd6Il19LGNFdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJkZXBsb3lkb2ciLGljb246WzUxMiw1MTIsW10sImYzOGUiLCJNMzgyLjIgMTM2bDUxLjcgMCAwIDIzOS42LTUxLjcgMCAwLTIwLjdjLTE5LjggMjQuOC01Mi44IDI0LjEtNzMuOCAxNC43LTI2LjItMTEuNy00NC4zLTM4LjEtNDQuMy03MS44IDAtMjkuOCAxNC44LTU3LjkgNDMuMy03MC44IDIwLjItOS4xIDUyLjctMTAuNiA3NC44IDEyLjlsMC0xMDMuOXpNMzE3LjUgMjk3LjhhMzMuMiAzMy4yIDAgMSAwIDY2LjQgMSAzMy4yIDMzLjIgMCAxIDAgLTY2LjQtMXpNMTg4LjUgMTM2bDUxLjcgMCAwIDIzOS42LTUxLjcgMCAwLTIwLjdjLTE5LjggMjQuOC01Mi44IDI0LjEtNzMuOCAxNC43LTI2LjItMTEuNy00NC4zLTM4LjEtNDQuMy03MS44IDAtMjkuOCAxNC44LTU3LjkgNDMuMy03MC44IDIwLjItOS4xIDUyLjctMTAuNiA3NC44IDEyLjlsMC0xMDMuOXpNMTIzLjggMjk3LjhhMzMuMiAzMy4yIDAgMSAwIDY2LjQgMSAzMy4yIDMzLjIgMCAxIDAgLTY2LjQtMXpNNDQ4IDk2YzE3LjUgMCAzMiAxNC40IDMyIDMybDAgMjU2YzAgMTcuNS0xNC40IDMyLTMyIDMyTDY0IDQxNmMtMTcuNSAwLTMyLTE0LjQtMzItMzJsMC0yNTZjMC0xNy41IDE0LjQtMzIgMzItMzJsMzg0IDB6bTAtMzJMNjQgNjRDMjguOCA2NCAwIDkyLjggMCAxMjhMMCAzODRjMCAzNS4yIDI4LjggNjQgNjQgNjRsMzg0IDBjMzUuMiAwIDY0LTI4LjggNjQtNjRsMC0yNTZjMC0zNS4yLTI4LjgtNjQtNjQtNjR6Il19LGRFdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJmbGlwYm9hcmQiLGljb246WzQ0OCw1MTIsW10sImY0NGQiLCJNMCAzMmwwIDQ0OCA0NDggMCAwLTQ0OC00NDggMHpNMzU4LjQgMjExLjJsLTg5LjYgMCAwIDg5LjYtODkuNiAwIDAgODkuNi04OS42IDAgMC0yNjguOCAyNjguOCAwIDAgODkuNnoiXX0sdUV0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImJ1eS1uLWxhcmdlIixpY29uOls1NzYsNTEyLFtdLCJmOGE2IiwiTTI4OC4yIDMyQzEzMy41IDMyIDggMTMyLjMgOCAyNTZTMTMzLjUgNDgwIDI4OC4yIDQ4MCA1NjguNCAzNzkuNyA1NjguNCAyNTYgNDQyLjkgMzIgMjg4LjIgMzJ6TTIwMi44IDM4OS4ybC0xMzguNSAxLjQgNzcuMi0yOTAuNyAxMzMuNCAwYzYzLjIgMCA4NC45IDI4LjYgNzggNzIuOC0uNCAyLjMtLjkgNC42LTEuNSA2LjktNS42LTEuMy0xMS40LTEuOS0xNy4yLTEuOS00Mi4zIDAtNzYuNyAzMy45LTc2LjcgNzUuNyAwIDM3LjEgMjcuMSA2OCA2Mi45IDc0LjUtMTguMiAzNy4yLTU2LjIgNjAuOS0xMTcuNyA2MS41ek0zNTguMiAyMDcuMWwzMiAwLTIyLjIgOTAuMy0zNS40IDAtMTEuMi0zNS42LTcuOCAzNS42LTM3LjggMCAyNi42LTkwLjMgMzEuMyAwIDE1IDM2LjggOS40LTM2Ljh6TTUwNC4xIDM4OS4ybC0xOTcuMSAwIDE1LjgtNjEuMmMzLjggLjYgNy42IC44IDExLjUgLjggNDIuMyAwIDc2LjctMzMuOSA3Ni43LTc1LjYgMC0zMi42LTIxLTYwLjUtNTAuNC03MS4xbDIxLjMtODIuNCA5Mi41IDAtNTMgMjA1LjQgMTAzLjkgMC0yMS4yIDg0LjF6TTIxMS45IDI2OS40bC0yNC43IDAtMTMuOCA1Ni41IDI0LjcgMGMxNi4xIDAgMzIuMS0zLjIgMzcuOS0yNi42IDUuNi0yMi4zLTgtMjkuOC0yNC4xLTI5Ljh6TTIzMy4yIDE3MGwtMjEuMyAwLTExLjcgNDcuNyAyMS40IDBjMTggMCAzNS40LTE0LjYgMzkuMi0zMC4xIDQuNi0xOC45LTkuNS0xNy42LTI3LjYtMTcuNnoiXX0scEV0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6IndhdGNobWFuLW1vbml0b3JpbmciLGljb246WzUxMiw1MTIsW10sImUwODciLCJNMjU2IDE2YTI0MCAyNDAgMCAxIDAgMCA0ODAgMjQwIDI0MCAwIDEgMCAwLTQ4MHpNMTIxLjcgNDI5LjFjLTUxLjYtNDAuMi04NC45LTEwMi44LTg0LjktMTczLjEgMC0yMS43IDMuMi00My4zIDkuNi02NC4xbDEwMi45LTE3LjktLjEgMTEtMTMuOSAycy0uMSAxMi41LS4xIDE5LjVjMCAyIC40IDQgMS4yIDUuOHMyLjEgMy40IDMuNyA0LjZsOS41IDcuNC0yNy43IDIwNC45ek0yMjcuNCAxNDUuOWw4LjUtNy42czYuOS01LjQtLjEtOS4zYy03LjItNC0zOS41LTM0LjUtMzkuNS0zNC41LTUuMy01LjUtOC4zLTcuMy0xNS41IDAgMCAwLTMyLjMgMzAuNS0zOS41IDM0LjUtNy4xIDQtLjEgOS4zLS4xIDkuM2w4LjUgNy42IDAgNC40LTczLjUtMTkuMmMzOS42LTU2LjkgMTA1LjUtOTQuMyAxODAtOTQuMyAzMS4zIDAgNjIuMiA2LjcgOTAuNiAxOS42czUzLjggMzEuOCA3NC4zIDU1LjRsLTE5My41IDM3LjcgMC0zLjZ6bTM0LjEgMzI5LjNsLTMzLjktMjUwLjkgOS41LTcuNGMxLjYtMS4yIDIuOC0yLjggMy43LTQuNnMxLjMtMy44IDEuMi01LjhjMC03LS4xLTE5LjUtLjEtMTkuNWwtMTMuOS0yLS4xLTEwLjUgMjQxLjcgMzEuNGMzLjkgMTYuNCA1LjggMzMuMyA1LjggNTAuMSAwIDExOS4xLTk1LjQgMjE2LjItMjEzLjggMjE5LjF6Il19LGhFdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJoaXBzIixpY29uOls2NDAsNTEyLFtdLCJmNDUyIiwiTTI1MS42IDE1Ny42YzAtMS45LS45LTIuOC0yLjgtMi44bC00MC45IDBjLTEuNiAwLTIuNyAxLjQtMi43IDIuOGwwIDIwMS44YzAgMS40IDEuMSAyLjggMi43IDIuOGw0MC45IDBjMS45IDAgMi44LS45IDIuOC0yLjhsMC0yMDEuOHpNMTU2LjUgMTY4Yy0xNi4xLTExLjgtMzYuMy0xNy45LTYwLjMtMTgtMTguMS0uMS0zNC42IDMuNy00OS44IDExLjRsMC04MS4yYzAtMS44LS45LTIuNy0yLjgtMi43bC00MC45IDBDLjkgNzcuNSAwIDc4LjQgMCA4MC4yTDAgMzU5LjRjMCAxLjkgLjkgMi44IDIuNyAyLjhsNDEgMGMxLjkgMCAyLjgtLjkgMi44LTIuOGwwLTEzNi4xYzAtLjgtMi44LTI3IDQ1LjgtMjcgNDguNSAwIDQ1LjggMjYuMSA0NS44IDI3bDAgMTIyLjZjMCA5IDcuMyAxNi4zIDE2LjQgMTYuM2wyNy4zIDBjMS44IDAgMi43LS45IDIuNy0yLjhsMC0xMzYuMWMwLTIzLjQtOS4zLTQxLjgtMjgtNTUuM3pNNjM0LjkgMjc4LjFjLTYuOC0xNS43LTE4LjQtMjctMzQuOS0zNC4xbC01Ny42LTI1LjNjLTguNi0zLjYtOS4yLTExLjItMi42LTE2LjEgNy40LTUuNSA0NC4zLTEzLjkgODQgNi44IDEuNyAxIDQtLjMgNC0yLjRsMC00NC43YzAtMS4zLS42LTIuMS0xLjktMi42LTE3LjctNi42LTM2LjEtOS45LTU1LjEtOS45LTI2LjUgMC00NS4zIDUuOC01OC41IDE1LjQtLjUgLjQtMjguNCAyMC0yMi43IDUzLjcgMy40IDE5LjYgMTUuOCAzNC4yIDM3LjIgNDMuNkw1ODAuNCAyODZjMTEuNiA1LjEgMTUuMiAxMy4zIDEyLjIgMjEuMi0zLjcgOS4xLTEzLjIgMTMuNi0zNi41IDEzLjYtMjQuMyAwLTQ0LjctOC45LTU4LjQtMTkuMS0yLjEtMS40LTQuNCAuMi00LjQgMi4zbDAgMzQuNGMwIDEwLjQgNC45IDE3LjMgMTQuNiAyMC43IDE1LjYgNS41IDMxLjYgOC4yIDQ4LjIgOC4yIDEyLjcgMCAyNS44LTEuMiAzNi4zLTQuMyAuNy0uMyAzNi04LjkgNDUuNi00NS44IDMuNS0xMy41IDIuNC0yNi41LTMuMS0zOS4xek0zNzYuMiAxNDkuOGMtMzEuNyAwLTEwNC4yIDIwLjEtMTA0LjIgMTAzLjVsMCAxODMuNWMwIC44IC42IDIuNyAyLjcgMi43bDQwLjkgMGMxLjkgMCAyLjgtLjkgMi44LTIuN2wwLTg4LjhjMTYuNSAxMi43IDM1LjggMTkuMSA1Ny43IDE5LjEgNjAuNSAwIDEwOC43LTQ4LjUgMTA4LjctMTA4LjcgLjEtNjAuMy00OC4yLTEwOC42LTEwOC42LTEwOC42em0wIDQ2LjZhNjIuMiA2Mi4yIDAgMSAxIDAgMTI0LjMgNjIuMiA2Mi4yIDAgMSAxIDAtMTI0LjN6TTIyOC4zIDcyLjVjLTE1LjkgMC0yOC44IDEyLjktMjguOSAyOC45IDAgMTUuNiAxMi43IDI4LjkgMjguOSAyOC45czI4LjktMTMuMSAyOC45LTI4LjljMC0xNi4yLTEzLTI4LjktMjguOS0yOC45eiJdfSxmRXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiY2xvdWR2ZXJzaWZ5IixpY29uOls2NDAsNTEyLFtdLCJmMzg1IiwiTTE2MC42IDMwNGM4LjIgNjguNSA2Ny40IDExNS41IDE0NiAxMTEuMyA1MS4yIDQzLjMgMTM2LjggNDUuOCAxODYuNC01LjYgNjkuMiAxLjEgMTE4LjUtNDQuNiAxMzEuNS05OS41IDE0LjgtNjIuNS0xOC4yLTEzMi41LTkyLjEtMTU1LjEtMzMtODguMS0xMzEuNC0xMDEuNS0xODYuNS04NS01Ny4zIDE3LjMtODQuMyA1My4yLTk5LjMgMTA5LjctNy44IDIuNy0yNi41IDguOS00NSAyNC4xIDExLjcgMCAxNS4yIDguOSAxNS4yIDE5LjVsMCAyMC40YzAgMTAuNy04LjcgMTkuNS0xOS41IDE5LjVsLTIwLjIgMGMtMTAuNyAwLTE5LjUtNi0xOS41LTE2LjdsMC02LjYtNDYuOCAwYy0zLjggMC0xMC44IDQuMy0xMC44IDExLjlsMCA0MC40YzAgNi40IDUuMyAxMS44IDExLjcgMTEuOGw0OC45IDAgMC0uMXpNMzg4IDMxMmMtMTAuNyA0Ni4zIDIxLjcgNzIuNCA1NS4zIDg2LjgtMTA3LjIgMzMuOC0xNzEuNi01MC44LTEzNS4zLTExMC44LTMzLjIgMjEuNi0zMy43IDcxLjItMjkuMiA5Mi45LTE3LjktMTIuNC01My44LTMyLjQtNTcuNC03OS44LTMtMzkuOSAyMS41LTc1LjcgNTctOTMuOSAzMC42LTE1LjggMTAzLjUtOC41IDEzMy42IDQwLjgtMTQuMS00OC01My44LTcwLjEtMTAxLjgtNzQuOCAzMC45LTMwLjcgNjQuNC01MC4zIDExNC4yLTQzLjcgNjkuOCA5LjMgMTMzLjIgODIuOCA2Ny43IDE1MC41IDM1LTE2LjMgNDguNy01NC40IDQ3LjUtNzYuOWwxMC41IDE5LjZjMTEuOCAyMiAxNS4yIDQ3LjYgOS40IDcyLTkuMiAzOS00MC42IDY4LjgtNzkuNyA3Ni41LTMyLjEgNi4zLTgzLjEtNS4xLTkxLjgtNTkuMnpNMTQwIDIwOGwtMzkuOCAwYy04LjkgMC0xNi4yLTcuMy0xNi4yLTE2LjJsMC0zOS42YzAtOC45IDcuMy0xNi4yIDE2LjItMTYuMmwzOS44IDBjOC45IDAgMTYuMiA3LjMgMTYuMiAxNi4ybDAgMzkuNmMwIDguOS03LjMgMTYuMi0xNi4yIDE2LjJ6TTIyLjEgMTY4Yy01LjYgMC0xMC4xLTQuNS0xMC4xLTEwLjFsMC0yNy44YzAtNS42IDQuNS0xMC4xIDEwLjEtMTAuMWwyNy43IDBjNS41IDAgMTAuMSA0LjUgMTAuMSAxMC4xbDAgMjcuOGMwIDUuNi00LjUgMTAuMS0xMC4xIDEwLjFsLTI3LjcgMHpNMTgwIDE0Mi43bDAtMjEuNGMwLTUuMSA0LjItOS4zIDkuMy05LjNsMjEuNCAwYzUuMSAwIDkuMyA0LjIgOS4zIDkuM2wwIDIxLjRjMCA1LjEtNC4yIDkuMy05LjMgOS4zbC0yMS40IDBjLTUuMSAwLTkuMy00LjItOS4zLTkuM3pNNjggMjM1LjVsMCAyNWMwIDYuMy01LjEgMTEuNS0xMS40IDExLjVsLTI1LjIgMGMtNi4zIDAtMTEuNC01LjItMTEuNC0xMS41bDAtMjVjMC02LjMgNS4xLTExLjUgMTEuNC0xMS41bDI1LjEgMGM2LjQgMCAxMS41IDUuMiAxMS41IDExLjV6Il19LG1FdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJnb29kcmVhZHMiLGljb246WzQ0OCw1MTIsW10sImYzYTgiLCJNMjk5LjkgMTkxLjJjNS4xIDM3LjMtNC43IDc5LTM1LjkgMTAwLjctMjIuMyAxNS41LTUyLjggMTQuMS03MC44IDUuNy0zNy4xLTE3LjMtNDkuNS01OC42LTQ2LjgtOTcuMiA0LjMtNjAuOSA0MC45LTg3LjkgNzUuMy04Ny41IDQ2LjktLjIgNzEuOCAzMS44IDc4LjIgNzguM3pNNDQ4IDg4bDAgMzM2YzAgMzAuOS0yNS4xIDU2LTU2IDU2TDU2IDQ4MGMtMzAuOSAwLTU2LTI1LjEtNTYtNTZMMCA4OEMwIDU3LjEgMjUuMSAzMiA1NiAzMmwzMzYgMGMzMC45IDAgNTYgMjUuMSA1NiA1NnpNMzMwIDMxMy4ycy0uMS0zNC0uMS0yMTcuM2wtMjkgMCAwIDQwLjNjLS44IC4zLTEuMi0uNS0xLjYtMS4yLTkuNi0yMC43LTM1LjktNDYuMy03Ni00Ni01MS45IC40LTg3LjIgMzEuMi0xMDAuNiA3Ny44LTQuMyAxNC45LTUuOCAzMC4xLTUuNSA0NS42IDEuNyA3Ny45IDQ1LjEgMTE3LjggMTEyLjQgMTE1LjIgMjguOS0xLjEgNTQuNS0xNyA2OS00NS4yIC41LTEgMS4xLTEuOSAxLjctMi45IC4yIC4xIC40IC4xIC42IC4yIC4zIDMuOCAuMiAzMC43IC4xIDM0LjUtLjIgMTQuOC0yIDI5LjUtNy4yIDQzLjUtNy44IDIxLTIyLjMgMzQuNy00NC41IDM5LjUtMTcuOCAzLjktMzUuNiAzLjgtNTMuMi0xLjItMjEuNS02LjEtMzYuNS0xOS00MS4xLTQxLjgtLjMtMS42LTEuMy0xLjMtMi4zLTEuM2wtMjYuOCAwYy44IDEwLjYgMy4yIDIwLjMgOC41IDI5LjIgMjQuMiA0MC41IDgyLjcgNDguNSAxMjguMiAzNy40IDQ5LjktMTIuMyA2Ny4zLTU0LjkgNjcuNC0xMDYuM3oiXX0sZ0V0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InRpZGFsIixpY29uOls2NDAsNTEyLFtdLCJlN2RjIiwiTTEwNy4yIDQ4bC0xLjMgMGMtMzIuMyAzMy4xLTY1LjQgNjUuNS05OCA5OC41LTIuNiAyLjgtNi4xIDUuMS03LjkgOC42IDM1LjYgMzUuNCA3MSA3MSAxMDYuNiAxMDYuNCAzNS40LTM1LjMgNzAuNy03MC44IDEwNi4xLTEwNi4xbDAtMS4zLTczLjItNzMuMkMxMjguOCA2OS44IDExNy4zIDU5LjYgMTA3LjIgNDh6bTIxMy41IDBsLTEuMyAwYy0zNC45IDM2LjEtNzEuNSA3MS0xMDYuMyAxMDcuMiAzNS45IDM1LjEgNzEgNzEgMTA2LjcgMTA2LjMgMzQuMy0zNC4xIDY4LjQtNjguNCAxMDIuNi0xMDIuNCAxLjUtMS41IDMuMy0yLjggNC4xLTQuOC0zNC42LTMzLjgtNjguNC02OC4yLTEwMi42LTEwMi4xLTEuMy0xLjMtMi4zLTIuNi0zLjMtNC4xem0yMTMuNSAwbC0xLjMgMGMtMTcuMiAxOC0zNS4xIDM1LjMtNTIuNiA1My0xNy45IDE3LjctMzUuNCAzNS43LTUzLjUgNTMuMyAuOCAyLjMgMyAzLjYgNC42IDUuNUw1MzMuMyAyNjEuNWMzNi4xLTM0LjkgNzAuOC03MS4yIDEwNi43LTEwNi4xLS41LTIuMi0yLjYtMy41LTQtNUw1NTUuOCA3MC4yYy03LjEtNy40LTE0LjktMTQuMi0yMS41LTIyLjJ6TTMxOS42IDI2MS43Yy0zNC45IDM1LjEtNzAgNzAtMTA0LjkgMTA0LjktLjMgLjctLjcgMS43LTEgMi4zIDI0IDIzLjcgNDcuNyA0Ny41IDcxLjUgNzEuMyAxMS44IDExLjMgMjIuOCAyMy41IDM0LjkgMzQuNCA4LjQtNy40IDE2LjQtMTYuNCAyNC43LTI0LjMgMjUuNS0yNS4zIDUxLTUxIDc2LjUtNzYuMyAxLjgtMi4yIDQuMy0zLjYgNS41LTYuMy0zNS40LTM0LjktNzAuNS03MC4yLTEwNS42LTEwNS40bC0xLjUtLjd6Il19LGJFdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ1bml0eSIsaWNvbjpbNDQ4LDUxMixbXSwiZTA0OSIsIk0yNDMuNiA5MS42bDgwLjEgNDYuOGMyLjkgMS42IDMgNi4yIDAgNy44bC05NS4yIDU1LjZjLTIuOSAxLjctNi4zIDEuNi05IDBsLTk1LjItNTUuNmMtMi45LTEuNi0zLTYuMyAwLTcuOGw4MC4xLTQ2LjggMC05MS42LTIwNC40IDExOS40IDAgMjM4LjggNzguNC00NS44IDAtOTMuNmMtLjEtMy4zIDMuOC01LjcgNi43LTMuOWw5NS4yIDU1LjZjMi45IDEuNyA0LjUgNC43IDQuNSA3LjhsMCAxMTEuMmMuMSAzLjMtMy44IDUuNy02LjcgMy45TDk4IDM0Ni44IDE5LjYgMzkyLjYgMjI0IDUxMiA0MjguNCAzOTIuNiAzNTAgMzQ2LjggMjY5LjkgMzkzLjZjLTIuOCAxLjctNi44LS41LTYuNy0zLjlsMC0xMTEuMmMwLTMuMyAxLjgtNi4zIDQuNS03LjhMMzYyLjkgMjE1YzIuOC0xLjcgNi44IC41IDYuNyAzLjlsMCA5My42IDc4LjQgNDUuOCAwLTIzOC44LTIwNC40LTExOS40IDAgOTEuNnoiXX0sdkV0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InRlbmNlbnQtd2VpYm8iLGljb246WzMyMCw1MTIsW10sImYxZDUiLCJNNDAuNSA0OTUuOGMxLjQgMTkuOS0yNy42IDIyLjItMjkuNyAyLjktMTEuNi0xMjkuOSAzMS4xLTIzOS41IDEwMS40LTMxMy4yLTE1LjYtMzQgOS4yLTc3LjEgNTAuNi03Ny4xIDMwLjMgMCA1NS4xIDI0LjYgNTUuMSA1NS4xIDAgNDQtNDkuNSA3MC44LTg2LjkgNDUuMS02NS43IDcxLjMtMTAxLjQgMTY5LjgtOTAuNSAyODcuMnpNMTYwLjIgLjFjLTEyNS45IDAtMjA0LjMgMTM0LjItMTQ4LjMgMjQyLjMgOC43IDE3LjQgMzUuMyA0LjUgMjYuMy0xMy40LTQ2LjMtOTIuNiAyMS0xOTkuMiAxMjItMTk5LjIgNzUuNCAwIDEzNi45IDYxLjQgMTM2LjkgMTM2LjkgMCA5MC44LTg2LjkgMTUzLjktMTY3LjcgMTMzLjEtMTkuMS00LjEtMjUuNiAyNC40LTYuNiAyOS4xIDExMC43IDIzLjIgMjA0LTYwIDIwNC0xNjIuMyAwLTkxLjktNzQuNi0xNjYuNS0xNjYuNi0xNjYuNXoiXX0seEV0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImZyZWUtY29kZS1jYW1wIixpY29uOls1NzYsNTEyLFtdLCJmMmM1IiwiTTk3LjQgOTYuMmMxMC40LTEwLjYgMTYtMTcuMSAxNi0yMS45IDAtMi44LTEuOS01LjUtMy44LTcuNC0yLjQtMS44LTUuNC0yLjgtOC40LTIuOC04LjUgMC0yMC45IDguOC0zNS44IDI1LjctNDEuNSA0Ny4zLTYyLjcgOTMuMS02MS44IDE2MC42UzIxIDM2Ny4zIDU3LjYgNDEyLjJjMTguOCAyMy42IDMzLjIgMzUuOCA0My41IDM1LjggMy4yLS4zIDYuMS0xLjYgOC40LTMuOCAxLjktMi44IDMuOC01LjYgMy44LTguNCAwLTUuNi0zLjktMTIuMi0xMy4yLTIwLjYtNDQuNS00Mi4zLTY3LjMtOTctNjcuNS0xNjUtLjItNjEuNCAyMS42LTExMi40IDY0LjgtMTU0ek0yMzkuNiA0MjAuMWMuNiAuNCAuOSAuNiAuOSAuNmwtLjktLjZ6bTkzLjggLjZsLjItLjFjLS4yIC4xLS4zIC4yLS4yIC4xem0zLjEtMTU4LjJjLTE2LjItNC4yIDUwLjQtODIuOS02OC4xLTE3Ny4yIDAgMCAxNS41IDQ5LjQtNjIuOCAxNTkuNi03NC4zIDEwNC40IDIzLjUgMTY4LjcgMzQgMTc1LjItNi43LTQuMy00Ny40LTM1LjcgOS42LTEyOC42IDExLTE4LjMgMjUuNS0zNC45IDQzLjUtNzIuMiAwIDAgMTUuOSAyMi40IDcuNiA3MS4xLTEyLjUgNzMuNiA1My44IDUyLjUgNTQuOCA1My41IDIyLjggMjYuOC0xNy43IDczLjUtMjEuNiA3Ni42IDUuNS0zLjcgMTE3LjctNzggMzMtMTg4LjEtNiA2LTEzLjggMzQuMi0zMCAzMC4xek01MTEgODkuN2MtMTQuOS0xNi45LTI3LjQtMjUuNy0zNS45LTI1LjctMyAuMS01LjkgMS4xLTguNCAyLjgtMS45IDEuOS0zLjggNC43LTMuOCA3LjQgMCA0LjggNS42IDExLjMgMTYgMjEuOSA0My4yIDQxLjYgNjUgOTIuNiA2NC44IDE1NC4xLS4yIDY4LTIzIDEyMi42LTY3LjUgMTY1LTkuMyA4LjQtMTMuMiAxNC45LTEzLjIgMjAuNiAwIDIuNyAxLjkgNS42IDMuOCA4LjQgMi4zIDIuMiA1LjIgMy42IDguNCAzLjggMTAuMyAwIDI0LjctMTIuMSA0My41LTM1LjggMzYuNi00NC45IDUzLjEtOTQuNCA1NC4xLTE2MS45UzU1Mi41IDEzNyA1MTEgODkuN3oiXX0seUV0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6IngtdHdpdHRlciIsaWNvbjpbNDQ4LDUxMixbXSwiZTYxYiIsIk0zNTcuMiA0OEw0MjcuOCA0OCAyNzMuNiAyMjQuMiA0NTUgNDY0IDMxMyA0NjQgMjAxLjcgMzE4LjYgNzQuNSA0NjQgMy44IDQ2NCAxNjguNyAyNzUuNS01LjIgNDggMTQwLjQgNDggMjQwLjkgMTgwLjkgMzU3LjIgNDh6TTMzMi40IDQyMS44bDM5LjEgMC0yNTIuNC0zMzMuOC00MiAwIDI1NS4zIDMzMy44eiJdfSx3RXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToic3RpY2tlci1tdWxlIixpY29uOls1NzYsNTEyLFtdLCJmM2Y3IiwiTTU2MS43IDE5OS42bDAgMHptLTYuMi03Ny40Yy03LjctMjIuMy01LjEtNy4yLTEzLjQtMzYuOS0xLjYtNi41LTMuNi0xNC41LTYuMi0yMC00LjQtOC43LTQuNi03LjUtNC42LTkuNSAwLTUuMyAzMC43LTQ1LjMgMTktNDYuOS01LjctLjYtMTIuMiAxMS42LTIwLjYgMTctOC42IDQuMi04IDUtMTAuMyA1LTIuNiAwLTUuNy0zLTYuMi01LTItNS43IDEuOS0yNS45LTMuNi0yNS45LTMuNiAwLTEyLjMgMjQuOC0xNyAyNS44LTUuMiAxLjMtMjcuOS0xMS40LTc1LjEgMTgtMjUuMyAxMy4yLTg2LjkgNjUuMi04NyA2NS4zLTYuNyA0LjctMjAgNC43LTM1LjUgMTYtNDQuNCAzMC4xLTEwOS42IDkuNC0xMTAuNyA5LTExMC42LTI2LjgtMTI4LTE1LjItMTU5IDExLjUtMjAuOCAxNy45LTIzLjcgMzYuNS0yNC4yIDM4LjktNC4yIDIwLjQgNS4yIDQ4LjMgNi43IDY0LjMgMS44IDE5LjMtMi43IDE3LjcgNy43IDk4LjMgLjUgMSA0LjEgMCA1LjEgMS41IDAgOC40LTMuOCAxMi4xLTQuMSAxMy0xLjUgNC41LTEuNSAxMC41IDAgMTYgMi4zIDguMiA4LjIgMzcuMiA4LjIgNDYuOSAwIDQxLjggLjQgNDQgMi42IDQ5LjQgMy45IDEwIDEyLjUgOS4xIDE3IDEyIDMuMSAzLjUtLjUgOC41IDEgMTIuNSAuNSAyIDMuNiA0IDYuMiA1IDkuMiAzLjYgMjcgLjMgMjkuOS0yLjUgMS42LTEuNSAuNS00LjUgMy4xLTUgNS4xIDAgMTAuOC0uNSAxNC40LTIuNSA1LjEtMi41IDQuMS02IDEuNS0xMC41LS40LS44LTctMTMuMy05LjgtMTYtMi4xLTItNS4xLTMtNy4yLTQuNS01LjgtNC45LTEwLjMtMTkuNC0xMC4zLTE5LjUtNC42LTE5LjQtMTAuMy00Ni4zLTQuMS02Ni44IDQuNi0xNy4yIDM5LjUtODcuNyAzOS42LTg3LjggNC4xLTYuNSAxNy0xMS41IDI3LjMtNyA2IDEuOSAxOS4zIDIyIDY1LjQgMzAuOSA0Ny45IDguNyA5Ny40LTIgMTEyLjItMiAyLjggMi0xLjkgMTMtLjUgMzguOSAwIDI2LjQtLjQgMTMuNy00LjEgMjkuOS0yLjIgOS43IDMuNCAyMy4yLTEuNSA0Ni45LTEuNCA5LjgtOS45IDMyLjctOC4yIDQzLjQgLjUgMSAxIDIgMS41IDMuNSAuNSA0LjUgMS41IDguNSA0LjYgMTAgNy4zIDMuNiAxMi0zLjUgOS44IDExLjUtLjcgMy4xLTIuNiAxMiAxLjUgMTUgNC40IDMuNyAzMC42IDMuNCAzNi41IC41IDIuNi0xLjUgMS42LTQuNSA2LjQtNy40IDEuOS0uOSAxMS4zLS40IDExLjMtNi41IC4zLTEuOC05LjItMTkuOS05LjMtMjAtMi42LTMuNS05LjItNC41LTExLjMtOC02LjktMTAuMS0xLjctNTIuNiAuNS01OS40IDMtMTEgNS42LTIyLjQgOC43LTMyLjQgMTEtNDIuNSAxMC4zLTUwLjYgMTYuNS02OC4zIC44LTEuOCA2LjQtMjMuMSAxMC4zLTI5LjkgOS4zLTE3IDIxLjctMzIuNCAzMy41LTQ3LjQgMTgtMjIuOSAzNC00Ni45IDUyLTY5LjggNi4xLTcgOC4yLTEzLjcgMTgtOCAxMC44IDUuNyAyMS42IDcgMzEuOSAxNyAxNC42IDEyLjggMTAuMiAxOC4yIDExLjggMjIuOSAxLjUgNSA3LjcgMTAuNSAxNC45IDkuNSAxMC40LTIgMTMtMi41IDEzLjQtMi41IDIuNi0uNSA1LjctNSA3LjItOCAzLjEtNS41IDcuMi05IDcuMi0xNi41IDAtNy43LS40LTIuOC0yMC42LTUyLjl6Il19LGtFdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ0d2l0Y2giLGljb246WzQ0OCw1MTIsW10sImYxZTgiLCJNMzU5LjQgMTAzLjVsLTM4LjYgMCAwIDEwOS43IDM4LjYgMCAwLTEwOS43ek0yNTMuMiAxMDNsLTM4LjYgMCAwIDEwOS44IDM4LjYgMCAwLTEwOS44ek04OSAwbC05Ni41IDkxLjQgMCAzMjkuMiAxMTUuOCAwIDAgOTEuNCA5Ni41LTkxLjQgNzcuMyAwIDE3My44LTE2NC42IDAtMjU2LTM2Ni45IDB6TTQxNy4zIDIzNy44bC03Ny4yIDczLjEtNzcuMiAwLTY3LjYgNjQgMC02NC04Ni45IDAgMC0yNzQuMyAzMDguOSAwIDAgMjAxLjJ6Il19LFNFdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJraWNrc3RhcnRlci1rIixpY29uOls0NDgsNTEyLFtdLCJmM2JjIiwiTTM1Ni43IDI1Ni4ybDQwLjgtNDAuNWM0Mi4yLTQxLjkgNDIuMi0xMTAuMyAwLTE1Mi4xcy0xMTEtNDEuOS0xNTMuMiAwTDIyOS4zIDc4LjRDMjA5LjYgNTAuMyAxNzcuMSAzMiAxNDAuMiAzMiA4MC41IDMyIDMyIDgwLjIgMzIgMTM5LjVsMCAyMzNjMCA1OS40IDQ4LjUgMTA3LjUgMTA4LjIgMTA3LjUgMzcuMSAwIDY5LjMtMTguMyA4OS00Ni40bDE0LjkgMTQuN2M0Mi4yIDQxLjkgMTExIDQxLjkgMTUzLjIgMHM0Mi4yLTExMC4zIDAtMTUyLjFsLTQwLjgtNDAgLjEgMHoiXX0sX0V0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImNyaXRpY2FsLXJvbGUiLGljb246WzQ0OCw1MTIsW10sImY2YzkiLCJNMjI1LjggMGMuMyAuMiAyMTYuNiAxMjQuNSAyMTcuMSAxMjQuNyAzIDEuMiAzLjcgMy41IDMuNyA2LjYtLjEgODMuNC0uMSAxNjYuOSAwIDI1MC40IC4xIDEuMi0uMiAyLjQtLjggMy40cy0xLjUgMS45LTIuNiAyLjRjLTIxLjQgMTItMjA3LjkgMTE4LjMtMjE4LjkgMTI0LjZsLTMgMGMtNzkuMy00NS43LTIxOC4zLTEyNS40LTIxOC40LTEyNS41LS42LS4zLTEuMS0uNy0xLjQtMS4zcy0uNS0xLjItLjQtMS45YzAtLjkgMC0yMjUuOS0uMS0yNTMuMS0uMS0xIC4yLTIgLjctMi45czEuMy0xLjYgMi4yLTJDMjcuMiAxMTIuMSAyMTMuMiA2IDIyNC4xIDBsMS44IDB6TTIxNS40IDIwLjRsLS4yLS4yYy02NC43IDM2LjktMTI5LjUgNzMuNy0xOTQuMiAxMTAuNiAwIC4xIC4xIC4yIC4xIC40TDUyIDE0Mi45Yy03LjcgNi04LjMgNi0xMC42IDUuMS0uMSAwLTI0LjItOS4zLTI2LjgtMTBsMCAyMzAuNGMuOS0xLjQgNjQuMS0xMTAuOSA2NC4xLTExMSAxLjYtMi44IDMtMS45IDkuMS0xLjUgMS40IC4xIDEuNSAuMiAuOCAxLjQtNDEuMiA3MS4zLTM2LjQgNjMtNjcuNSAxMTYuOS0uOCAxLjQtLjYgMS4xIDEuMiAxLjFsMTg2LjUgMGMxLjQgMCAxLjctLjIgMS43LTEuNmwwLTguOWMwLTEuMyAyLjQtLjgtMTguNC0xLTcuNS0uMS0xNC4xLTMuMi0yMS40LTEyLjctNy40LTkuNy0xNC42LTE5LjQtMjEuOC0yOS4yLTIuMy0zLjEtMy40LTIuNC0xNi44LTIuNC0xLjggMC0xLjggMC0xLjggMS44IC4zIDI2LjIgLjIgMjUuMyAxIDMyLjcgLjUgNC40IDIuMiA0LjIgOS43IDQuOCAzLjEgLjMgMy45IDQuMSAuNSA0LjktMS42IC40LTMxLjYgLjUtMzMuNy0uMS0uNS0uMS0xLS41LTEuMy0uOXMtLjUtMS0uNC0xLjYgLjMtMS4xIC42LTEuNSAuOS0uNyAxLjQtLjhjMy4zLS44IDYuMiAuOCA2LjctNC40IDEuMy0xMy43IDEuMi05IDEuMS03OS40IDAtMTAuOC0uNC0xMi42LTUuNC0xMy42LTEuMi0uMi0zLjUtLjItNC43LS42LTIuOS0xLTItNC44IDEuOC00LjggMzMuNyAwIDQ2LjEtMS4xIDU2LjEgNC45IDcuNyA0LjYgMTIgMTEuNSAxMi41IDIwLjQgLjkgMTQuNi02LjUgMjIuMy0xNSAzMi42LS4yIC4xLS4zIC4zLS40IC41cy0uMSAuNC0uMSAuNiAwIC40IC4xIC42IC4yIC40IC40IC41YzIuNiAzLjIgNSA2LjYgNy43IDkuOCAyNy42IDMzLjIgMjQuMSAzMC41IDQxLjMgMzMuMSAuOSAuMSAxLS40IDEtMS4ybDAtMTFjMC0xIC4zLTEuNCAxLjQtMS4zIDcuOCAxLjIgMTUuOCAxLjEgMjMuNi0uMyAxLjEtLjEgMS41IC4yIDEuNSAxLjMgMCAuMSAuOSAyNi43IC45IDI2LjggMCAxLjUgLjcgMS42IDEuOSAxLjZsMTg2LjcgMGMtMjcuMi00Ny01NC4yLTk0LTgxLjItMTQwLjggMi4zLS43LS40IDAgNi43LTEuNCAyLS40IDIuMS0uNCAzLjEgMS40IDcuMyAxMi42IDc3LjMgMTM0IDc3LjQgMTM0LjFsMC0yMzAuNGMtMS43IC41LTEwMy4zIDM4LjctMTA1LjggMzkuNy0xLjEgLjQtMS41IC4yLTEuOS0uOS0uNi0xLjktMS4zLTMuOC0yLjEtNS42LS4zLS44LS4xLTEuMSAuNi0xLjQgLjEgMCA5NS41LTM1LjggMTAzLTM4LjgtNjUuNC0zNy42LTEzMC42LTc1LTE5Ni0xMTIuNmw4Ni44IDE1MC40LS4zIC4zYy05LjYtLjktMTAuNS0xLjYtMTEuOC0zLjktMS0xLjctNzMuNS0xMjcuNy04Mi0xNDIuMi05LjEgMTQuNy04My42IDE0Ni4yLTg1LjQgMTQ2LjMtMi45IC4yLTUuOSAuMS05LjIgLjEgMjguOC00OS44IDU3LjYtOTkuNSA4Ni4yLTE0OWwwIDB6bTUxLjkgMTI5LjljMS45LS4xIDMuNy0uNCA1LjUtLjggMS43LS4zIDIuNSAuMiAyLjYgMS45IDAgLjEgLjEgMTkuMS0uOSAyMC41cy0xLjkgMS4yLTIuNi0uMmMtNS05LjcgNi4yLTkuNy0zOS4xLTEyLS43IDAtMSAuMi0xIC45IDAgLjEgMy43IDEyMiAzLjcgMTIyLjEgMCAuOSAuNSAxLjIgMS4yIDEuNSAzIDEuMiA1LjkgMi41IDguNyA0IDcuMyA0LjMgMTEuNCAxMC44IDEyLjQgMTkuMyAxLjQgMTEuOC0yLjggMzUuOC0zMi4yIDM3LjEtMi44IC4xLTI4LjMgMS4xLTM0LjEtMjMuMy00LjctMTkuMyA4LjMtMzIuNyAxOS45LTM2LjQgLjYtLjEgMS4yLS40IDEuNS0uOXMuNS0xLjEgLjUtMS43Yy4xLTUuNiAzLTEwNy4xIDMuNy0xMjEuMyAwLTEuMS0uNi0xLjItMS40LTEuMS0zMi4zIC41LTM2LjctLjMtNDAuMiA4LjUtMi40IDYuMi00LjEgMS4zLTQgLjIgMS4xLTYgMi4yLTEyIDMuMy0xOCAuNC0yLjEgMS40LTIuNiAzLjQtMS45IDUuNiAyLjEgNi43IDEuNyAzNy4yIDEuOSAxLjcgMCAxLjgtLjEgMS44LTEuOCAuNy0yNy41IC42LTIyLjYgMS0yOS42IC4xLS42LS4xLTEuMi0uMy0xLjdzLS43LS45LTEuMy0xLjFjLTUuNi0yLjktOC44LTcuNi04LjktMTMuOS0uNC0xNC44IDE3LjctMjEuNyAyNy40LTExLjUgNi44IDcuMiA1LjggMTguOS0yLjUgMjQuMi0uOCAuNC0xLjQgMS4xLTEuOCAxLjhzLS42IDEuNi0uNCAyLjVjMCAuNi0uMS00LjMgMSAzMCAwIC45IC40IDEuMSAxLjIgMS4xIC4xIDAgMjMtLjEgMzQuNS0uNGwwLS4xek02OC4zIDE0MS43YzE5LjgtNC41IDMyLjctLjYgNTIuNSAxLjcgMi44IC4zIDMuNyAxLjIgMy42IDQtLjIgNS0xLjIgMjIuMy0xLjIgMjMuMSAwIC41LS4yIDEtLjUgMS40cy0uNyAuNy0xLjIgLjljLTQuMSAxLjctMy42LTQuNC00LTcuMy0zLjEtMjIuNC03My45LTMyLjctNzQuNiAyNS40LS4zIDIzLjkgMTcgNTMuNiA1NC4xIDUwLjkgMjcuMi0yIDE5LTIwLjIgMjQuOC0yMC41IC40LS4xIC45IDAgMS4zIC4xcy44IC40IDEuMSAuNyAuNSAuNyAuNiAxLjIgLjEgLjkgMCAxLjNjLTEuOCAxMC44LTMuNCAxOS0zLjQgMTkuMi0xLjUgOS4yLTg2LjcgMjIuMS05My40LTQyLjEtMi43LTI1LjggMTAuNC01My40IDQwLjMtNjAuMnptODAgODcuN2wtMTkuNSAwYy0uNiAwLTEuMi0uMS0xLjYtLjRzLS44LS44LTEtMS40YzIuNC0zLjggNS45IC45IDUuOS02LjEtLjEtMjUuOCAuMi0zOCAuMi00MC4xIDAtMy40LS41LTQuNi0zLjMtNC45LTctLjctMy4xLTMuNC0xLjEtMy40IDExLjgtLjEgMjIuNi0uMiAzMCAuNyA4LjggMS4xIDE2LjcgMTIuNiA3LjkgMjIuNi0yIDIuMi00IDQuNC02LjEgNi43IDEgMS4yIDYuOSA4LjggMTcuMyAxOS43IDIuNyAyLjggNi4yIDMuNSA5LjkgMy4xIC42IDAgMS4xLS4yIDEuNS0uNnMuNy0uOSAuNy0xLjVjLjMtMy40IC4zIDQuNyAuNC00MC42IDAtNS42LS4zLTYuNi0zLjItNi44LTQtLjQtNC0yLjMtLjctMy40bDE5LjEtLjFjLjMgMCA0LjUgLjUgMSAzLjQgMCAwLS4yIDAtLjIgMC0zLjYgLjMtMy45IDEtNCA0LjYtLjMgNDMuOSAuMSA0MC4yIC40IDQyLjggLjEgLjggLjMgMi4yIDUuMSAyLjEgMi41IDAgMy45IDMuNCAwIDMuNC0xMC40IC4xLTIwLjcgMC0zMS4xIC4xLTEwLjcgMC0xMy41LTYuMi0yNC4yLTIwLjgtMS42LTIuMi04LjMtMi40LTguMi0uNCAuOSAxNi41IDAgMTcuOCA0IDE3LjcgNC44LS4xIDQuNyAzLjYgLjggMy41bC4xIDB6bTI3NS0xMC4xYy0xLjIgNy4xIC4yIDEwLjQtNS4zIDEwLjMtNjEuNS0uNC00Ny44LS4yLTUwLjctLjMtMS4yLS4xLTIuNC0uNC0zLjYtLjctMi41LS42IDEuNS0xLjItLjQtNS42LTEuNC0zLjQtMi44LTYuOC00LjEtMTAuMi0uMS0uNC0uNC0uOC0uNy0xLjFzLS44LS40LTEuMy0uNGMtNC45LS4yLTkuNy0uMi0xNC42IC4xLS4zIDAtLjYgLjItLjkgLjNzLS41IC40LS43IC43Yy0xLjYgMy42LTMuMSA3LjMtNC41IDExLTEuMyAzLjIgNy45IDEuMyAxMi4yIDIuMiAzIC42IDQuNSAzLjcgLjcgMy43bC0yNi40IDBjLTIuOSAwLTMuMS0zLjItLjctMy4yIDEuMiAuMSAyLjQtLjIgMy41LS45czEuOS0xLjUgMi40LTIuNmMxLjUtMyAyLjgtNiA0LjEtOS4xIDE4LjItNDIuMSAxNy4xLTQwLjIgMTguNC00MS42IC4yLS4yIC40LS40IC43LS42cy42LS4yIC44LS4yIC42IC4xIC44IC4yIC41IC4zIC43IC42YzIuOSAzLjMgMTguNCA0NC43IDIzLjYgNTEuOSAyIDIuNyA1LjcgMiA2LjQgMiAzLjYgLjEgNC0xLjEgNC4xLTQuMyAuMS0xLjkgLjEgMS4yIC4xLTQxLjIgMC00LjUtMi40LTMuNy01LjYtNC4zLS4zIDAtMi42LS42LS4xLTMuMSAuMi0uMi0uOS0uMiAyMS43LS4yIDIuMyAwIDUuMyAyLjgtMS4yIDMuNC0uNCAwLS43IDAtMS4xIC4ycy0uNiAuMy0uOSAuNi0uNCAuNi0uNiAuOS0uMiAuNy0uMSAxLjFjLS4xIDEuNi0uMiAzOC45IC4zIDQxLjIgLjIgLjcgLjYgMS40IDEuMiAxLjhzMS4zIC43IDIuMSAuNmMxMy4zIC40IDE0LjkgLjQgMTYtMy40IDEuNy01LjggNC4xLTIuNSAzLjctLjJsMCAuMXpNMzE4LjYgMjgzLjZjLTQuMiAwLTQuNC0zLjQtLjYtMy40IDM1LjktLjIgMjguMSAuNCAzNy4yLS42IDEuNy0uMiAyLjQgLjIgMi4zIDEuOS0uMyAzLjQtLjYgNi44LTEgMTAuMi0uMiAyLjItMy4yIDIuNi0zLjQtLjItLjQtNS4zLTIuMi00LjUtMTUuNi01LjEtMS42LS4xLTEuNiAwLTEuNiAxLjVsMCAxNi4xYzAgMS43IDAgMS42IDEuNiAxLjUgMy4xLS4yIDEwLjMgLjMgMTUuNy0xLjUgLjUtLjIgMy4zLTEuOCAzLjEgMS44IDAgLjItLjggMTAuNC0xLjIgMTEuNC0uNSAxLjMtMS45IDEuNS0yLjYgLjMtMS4yLTIgMC01LjEtMy43LTUuMy0xNS40LS45LTEyLjktMi41LTEyLjkgNiAwIDEyLjMtLjggMTYuMSAzLjkgMTYuMiAxNi42IC41IDE0LjQgMCAxNi40LTUuNyAuOC0yLjQgMy41LTEuOCAzLjIgLjYtLjQgMy4yLS44IDYuNC0xLjIgOS42IDAgLjQtLjIgMi40LTQuNyAyLjQtMzcuMi0uMS0zNC41LS4yLTM1LjItLjMtMi43LS41LTIuMi0zIC4yLTMuNCAxLjEtLjIgNCAuNSA0LjItMi42IDIuNC01Ni4yLS4xLTUxLjMtMy45LTUxLjNsMCAwem0tLjQtMTA5LjVjMi41IC42IDMuMSAxLjggMyA0LjYtLjMgNS4zLS4zIDktLjYgOS43LS43IDIuMi0zLjEgMi4xLTMuMy0uMy0uNC00LjgtMy03LjgtNy42LTkuMS0yNi4zLTcuNy0zMi44IDE1LjUtMjcuMiAzMC4yIDUuOSAxNS40IDIyIDE1LjkgMjguOSAxMy44IDUuOS0xLjkgNS45LTYuNSA2LjktNy42IDEuMi0xLjMgMi4yLTEuOCAzLjEgMS4xIDAgLjEgLjYgMTEuOS02IDEyLjctMS42IC4yLTE5LjQgMy43LTMyLjctMy40LTIxLTExLjItMTYuNy0zNS41LTYuOS00NS4zIDE0LTE0LjEgMzkuOS03LjEgNDIuMy02LjVsMCAwek0yODkuOCAyODAuMWMzLjMgMCAzLjcgMyAuMiAzLjQtMi42IC4zLTUtLjQtNSA1LjUgMCAyLS4yIDI5IC40IDQxLjQgLjEgMi4zIDEuMiAzLjUgMy40IDMuNyAyMiAxLjIgMTUtMS43IDE4LjgtNi4zIDEuOC0yLjIgMi44IC44IDIuOCAxLjEgLjMgMTMuNi00IDEyLjQtNS4yIDEyLjRsLTM4LjItLjJjLTEuOS0uMi0yLjEtMy0uNC0zLjQgMi0uNSA0LjkgLjQgNS4xLTIuOCAxLTE1LjkgLjYtNDQuNiAuMy00Ny44LS4zLTMuOC0yLjgtMy4zLTUuNy0zLjctMi41LS40LTItMy4yIC4zLTMuMiAxLjQgMCAxOCAwIDIzLjEgMHptLTMxLjYtNTcuOGMuMSA0LjEgMi45IDMuNSA2IDMuNiAyLjYgLjEgMi41IDMuNC0uMSAzLjQtNi41IDAtMTMuNyAwLTIxLjYtLjEtMy44IDAtMy40LTMuNCAwLTMuNCA0LjUgMCAzLjIgMS42IDMuNC00NS41IDAtNS4xLTMuMy0zLjUtNC43LTQuMi0yLjYtMS4yLTEuNC0zLjEgLjQtMy4yIDEuMyAwIDIwLjItLjQgMjEuMiAuMnMxLjkgMS42LS40IDIuOWMtMSAuNS0zLjktLjMtNC4yIDIuNSAwIC4yLS44IDEuNi0uMSA0My44bDAgMHpNMjIxLjMgNDk2LjZjLjUgLjMgMSAuNSAxLjYgLjVzMS4xLS4yIDEuNi0uNWMxNy05LjggMTgyLTEwMy42IDE5Ny40LTExMi41LS4xLS40IDExLjMtLjItMTgxLjUtLjMtMS4yIDAtMS42IC40LTEuNSAxLjYgMCAuMSAxLjMgNDQuNSAxLjIgNTAuNC0uMSAyLjYtLjYgNS4yLTEuNCA3LjctLjYgMS44IC40LS41LTEzLjUgMzIuMi0uNyAxLjctMSAyLjItMi0uMS00LjItMTAuMy04LjMtMjAuNy0xMi42LTMxLTEuNS0zLjQtMi4yLTcuMS0yLTEwLjggLjItMi41IC44LTE2LjEgMS41LTQ4IDAtMS45IDAtMi0yLTJsLTE4MyAwYzIuNiAxLjYgMTc4LjMgMTAyLjYgMTk2IDExMi44bC4xIDB6TTEzMC40IDMwNy45YzAgMi40IC40IDIuOCAyLjggMyAxMS41IDEuMiAyMSAzLjcgMjUuNi03LjMgNi0xNC41IDIuNy0zNC40LTEyLjUtMzguOC0yLS42LTE2LTIuOC0xNS45IDEuNSAwIDggMCAxMS42IDAgNDEuNnptMTA1LjgtMTVjMCAyLjEgMS4xIDM4LjcgMS4xIDM5LjEgLjMgOS45LTI1LjYgNS44LTI1LjItMi42IC4xLTIgMS40LTM3LjQgMS4xLTM5LjQtMTQuMSA3LjQtMTQuNCA0MC4yIDYuNCA0OC44IDQgMS43IDguNCAxLjkgMTIuNSAuNnM3LjYtNCA5LjktNy43YzQuOS03LjggNi44LTI5LjUtNS40LTM5LS4xIC4xLS4yIC4xLS40IC4xbDAgMHptLTEyLjMtMTk4Yy05LjggMC05LjcgMTQuOC0uMSAxNC45czEwLjEtMTQuOSAuMS0xNC45bDAgMHpNMTQzLjcgMTk4LjZjMCAxLjggLjQgMi40IDIuMiAyLjYgMTMuNiAxLjQgMTIuNS0xMSAxMi4yLTEzLjQtMS43LTExLjItMTQuNC0xMC4yLTE0LjQtNy44IDAgNC41IDAgMTMuNyAwIDE4LjZ6TTM1NiAyMDVsLTYuMS0xNS44Yy0yLjIgNS41LTQuMiAxMC42LTYuMiAxNS44bDEyLjMgMHoiXX0sTUV0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InN0ZWFtLXN5bWJvbCIsaWNvbjpbNDQ4LDUxMixbXSwiZjNmNiIsIk0yNzMuNSAxNzcuNWE2MSA2MSAwIDEgMSAxMjIgMCA2MSA2MSAwIDEgMSAtMTIyIDB6bTE3NC41IC4yYzAgNjMtNTEgMTEzLjgtMTEzLjcgMTEzLjhMMjI1IDM3MS4zYy00IDQzLTQwLjUgNzYuOC04NC41IDc2LjgtNDAuNSAwLTc0LjctMjguOC04My02N0wwIDM1OCAwIDI1MC43IDk3LjIgMjkwYzE1LjEtOS4yIDMyLjItMTMuMyA1Mi0xMS41bDcxLTEwMS43QzIyMC43IDExNC41IDI3MS43IDY0IDMzNC4yIDY0IDM5NyA2NCA0NDggMTE1IDQ0OCAxNzcuN3pNMjAzIDM2M2MwLTM0LjctMjcuOC02Mi41LTYyLjUtNjIuNS00LjUgMC05IC41LTEzLjUgMS41bDI2IDEwLjVjMjUuNSAxMC4yIDM4IDM5IDI3LjcgNjQuNS0xMC4yIDI1LjUtMzkuMiAzOC02NC43IDI3LjUtMTAuMi00LTIwLjUtOC4zLTMwLjctMTIuMiAxMC41IDE5LjcgMzEuMiAzMy4yIDU1LjIgMzMuMiAzNC43IDAgNjIuNS0yNy44IDYyLjUtNjIuNXpNNDEwLjUgMTc3LjdhNzYuNCA3Ni40IDAgMSAwIC0xNTIuOCAwIDc2LjQgNzYuNCAwIDEgMCAxNTIuOCAweiJdfSx6RXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToibWFpbGNoaW1wIixpY29uOls0NDgsNTEyLFtdLCJmNTllIiwiTTMzMSAyNDMuNWMzLjEtLjQgNi4yLS40IDkuMyAwIDEuNy0zLjggMi0xMC40IC41LTE3LjYtMi4yLTEwLjctNS4zLTE3LjEtMTEuNS0xNi4xcy02LjUgOC43LTQuMiAxOS40YzEuMyA2IDMuNSAxMS4xIDYgMTQuM2wwIDB6TTI3Ny40IDI1MmM0LjUgMiA3LjIgMy4zIDguMyAyLjEgMS45LTEuOS0zLjUtOS40LTEyLjEtMTMuMS01LTIuMS0xMC40LTIuOC0xNS44LTIuMnMtMTAuNSAyLjctMTQuOCA1LjhjLTMgMi4yLTUuOCA1LjItNS40IDcuMSAuOSAzLjcgMTAtMi43IDIyLjYtMy41IDctLjQgMTIuOCAxLjggMTcuMyAzLjdsMCAwem0tOSA1LjFjLTkuMSAxLjQtMTUgNi41LTEzLjUgMTAuMSAuOSAuMyAxLjIgLjggNS4yLS44IDYtMi4zIDEyLjQtMi45IDE4LjctMS45IDIuOSAuMyA0LjMgLjUgNC45LS41IDEuNS0yLjItNS43LTgtMTUuNC02LjlsMCAwem01NC4yIDE3LjFjMy40LTYuOS0xMC45LTEzLjktMTQuMy03czEwLjkgMTMuOSAxNC4zIDdsMCAwem0xNS43LTIwLjVjLTcuNy0uMS04IDE1LjgtLjMgMTUuOXM4LTE1LjggLjMtMTZsMCAwek0xMTkuNSAzMzIuN2MtMS4zIC4zLTYgMS41LTguNS0yLjMtNS4yLTggMTEuMS0yMC40IDMtMzUuOC05LjEtMTcuNS0yNy44LTEzLjUtMzUtNS41LTguNyA5LjYtOC43IDIzLjUtNSAyNC4xIDQuMyAuNiA0LjEtNi41IDcuNC0xMS42IC45LTEuNCAyLjEtMi42IDMuNS0zLjZzMy0xLjYgNC42LTIgMy40LS40IDUgMCAzLjMgMSA0LjcgMS45YzExLjYgNy42IDEuNCAxNy44IDIuMyAyOC42IDEuNCAxNi43IDE4LjQgMTYuNCAyMS42IDkgLjItLjQgLjMtLjggLjMtMS4ycy0uMi0uOC0uNS0xLjFjMCAuOSAuNy0xLjMtMy40LS40bDAgMHptMjk5LjctMTcuMWMtMy4zLTExLjctMi42LTkuMi02LjgtMjAuNSAyLjQtMy43IDE1LjMtMjQtMy4xLTQzLjMtMTAuNC0xMC45LTMzLjktMTYuNS00MS4xLTE4LjUtMS41LTExLjQgNC42LTU4LjctMjEuNS04MyAyMC44LTIxLjYgMzMuOC00NS4zIDMzLjctNjUuNy0uMS0zOS4yLTQ4LjItNTEtMTA3LjQtMjYuNWwtMTIuNSA1LjNjLS4xIDAtMjIuNy0yMi4zLTIzLjEtMjIuNi02Ny41LTU4LjktMjc4LjggMTc1LjktMjExLjMgMjMyLjlsMTQuOCAxMi41Yy00IDEwLjctNS40IDIyLjItNC4xIDMzLjUgMy40IDMzLjQgMzYgNjAuNCA2Ny41IDYwLjQgNTcuNyAxMzMuMSAyNjcuOSAxMzMuMyAzMjIuMyAzIDEuNy00LjUgOS4xLTI0LjYgOS4xLTQyLjRzLTEwLjEtMjUuMy0xNi41LTI1LjNsMCAwem0tMzE2IDQ4LjJjLTIyLjgtLjYtNDcuNS0yMS4xLTQ5LjktNDUuNS02LjItNjEuMyA3NC4zLTc1LjMgODQtMTIuMyA0LjUgMjkuNi00LjcgNTguNS0zNC4xIDU3LjhsMCAwek04NC43IDI0OS42Yy0xNS4yIDMtMjguNSAxMS41LTM2LjcgMjMuNS00LjktNC4xLTE0LTEyLTE1LjYtMTUtMTMtMjQuOCAxNC4yLTczIDMzLjMtMTAwLjIgNDcuMS02Ny4yIDEyMC45LTExOC4xIDE1NS0xMDguOSA1LjUgMS42IDIzLjkgMjIuOSAyMy45IDIyLjlzLTM0LjEgMTguOS02NS44IDQ1LjNDMTM2LjIgMTUwIDEwNCAxOTcuNyA4NC43IDI0OS42ek0zMjMuNiAzNTAuN3MtMzUuNyA1LjMtNjkuNS03LjFjNi4yLTIwLjIgMjcgNi4xIDk2LjQtMTMuOCAxNS4zLTQuNCAzNS40LTEzIDUxLTI1LjQgMy40IDcuOCA1LjggMTUuOSA3LjEgMjQuMyAzLjctLjcgMTQuMi0uNSAxMS40IDE4LjEtMy4zIDE5LjktMTEuNyAzNi0yNS45IDUwLjgtOC45IDkuNi0xOS40IDE3LjUtMzEuMiAyMy4zLTYuNSAzLjQtMTMuMyA2LjMtMjAuMyA4LjYtNTMuNSAxNy41LTEwOC4zLTEuNy0xMjYtNDMtMS40LTMuMS0yLjYtNi40LTMuNi05LjctNy41LTI3LjItMS4xLTU5LjggMTguOC04MC40IDEuMi0xLjMgMi41LTIuOSAyLjUtNC44LS4yLTEuNy0uOC0zLjMtMS45LTQuNS03LTEwLjEtMzEuMi0yNy40LTI2LjMtNjAuOCAzLjUtMjQgMjQuNS00MC45IDQ0LjEtMzkuOWw1IC4zYzguNSAuNSAxNS45IDEuNiAyMi45IDEuOSAxMS43IC41IDIyLjItMS4yIDM0LjYtMTEuNiA0LjItMy41IDcuNi02LjUgMTMuMy03LjUgMi4zLS42IDQuNy0uNyA3LS4zczQuNiAxLjIgNi42IDIuNWMxMCA2LjYgMTEuNCAyMi43IDExLjkgMzQuNSAuMyA2LjcgMS4xIDIzIDEuNCAyNy42IC42IDEwLjcgMy40IDEyLjIgOS4xIDE0IDMuMiAxIDYuMiAxLjggMTAuNSAzLjEgMTMuMiAzLjcgMjEgNy41IDI2IDEyLjMgMi41IDIuNSA0LjIgNS44IDQuNyA5LjMgMS42IDExLjQtOC44IDI1LjQtMzYuMyAzOC4yLTQ2LjcgMjEuNy05My43IDE0LjQtMTAwLjUgMTMuNy0yMC4yLTIuNy0zMS42IDIzLjMtMTkuNSA0MS4xIDIyLjYgMzMuNCAxMjIuNCAyMCAxNTEuNC0yMS40IC43LTEgLjEtMS42LS43LTEtNDEuOCAyOC42LTk3LjEgMzguMi0xMjguNSAyNi00LjgtMS44LTE0LjctNi40LTE1LjktMTYuNyA0My42IDEzLjUgNzEgLjcgNzEgLjdzMi0yLjgtLjYtMi41ek0xNzEuNyAxNTcuNWMxNi43LTE5LjQgMzcuNC0zNi4yIDU1LjgtNDUuNiAuMS0uMSAuMy0uMSAuNS0uMXMuMyAuMSAuNCAuMiAuMiAuMyAuMiAuNCAwIC4zLS4xIC41Yy0xLjUgMi43LTQuMyA4LjMtNS4yIDEyLjcgMCAuMSAwIC4zIDAgLjRzLjIgLjMgLjMgLjQgLjMgLjEgLjQgLjEgLjMgMCAuNC0uMWMxMS41LTcuOCAzMS41LTE2LjIgNDktMTcuMyAuMiAwIC4zIDAgLjUgLjFzLjIgLjIgLjMgLjQgLjEgLjMgMCAuNS0uMSAuMy0uMyAuNGMtMi45IDIuMi01LjUgNC44LTcuNyA3LjctLjEgLjEtLjEgLjItLjEgLjRzMCAuMyAuMSAuNCAuMiAuMiAuMyAuMyAuMiAuMSAuNCAuMWMxMi4zIC4xIDI5LjcgNC40IDQxIDEwLjcgLjggLjQgLjIgMS45LS42IDEuNy02OS41LTE1LjktMTIzLjEgMTguNS0xMzQuNSAyNi44LS4yIC4xLS4zIC4xLS41IC4xcy0uMy0uMS0uNS0uMi0uMi0uMy0uMi0uNSAuMS0uNCAuMi0uNWwtLjEgMHoiXX0sQ0V0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6Imx1bW9uIixpY29uOls2NDAsNTEyLFtdLCJlN2UyIiwiTTQ1Mi41IDIyMy41YzkuOCAwIDE2LjUgNi4zIDE2LjUgMTYuNmwwIDMxLjhjMCAxMC4zLTYuNiAxNi42LTE2LjYgMTYuNmwtNTYuMiAwYy05LjggMC0xNi41LTYuMy0xNi41LTE2LjZsMC0zMS44YzAtMTAuMyA2LjctMTYuNiAxNi41LTE2LjZsNTYuMyAwem0tMjUuNyAxMy4xYy0xLjUtMi42LTMuMi0yLjYtNC42IDBsLTEwLjcgMTcuNmMtMS43IDIuNC0yLjYgNS4xLTIuNiA4LjIgMCA3LjkgNi45IDE0LjYgMTUuNiAxNC42IDguNSAwIDE1LjYtNi43IDE1LjYtMTQuNiAwLTMtMS01LjgtMi43LTguMmwtMTAuNy0xNy42ek04NS44IDIyMy44YzEgMCAxLjUgLjYgMS41IDEuNWwwIDUwLjMgNjQuNiAwYzEgMCAxLjYgLjYgMS42IDEuNWwwIDkuN2MwIC45LS42IDEuNS0xLjYgMS41bC03OC40IDBjLTEgMC0xLjYtLjYtMS42LTEuNWwwLTYxLjRjMC0uOSAuNi0xLjUgMS42LTEuNWwxMi4zIDB6bTg4LjMgMGMxIDAgMS41IC42IDEuNSAxLjVsMCA0NWMwIDQgMiA1LjIgNS43IDUuMmw0Ni45IDBjMy44IDAgNS43LTEuMyA1LjctNS4ybDAtNDVjMC0uOSAuNS0xLjUgMS41LTEuNWwxMi4zIDBjMSAwIDEuNiAuNiAxLjYgMS41bDAgNDZjMCAxMC41LTUuMyAxNi44LTE3LjYgMTYuOGwtNTQgMGMtMTIuMyAwLTE3LjYtNi4zLTE3LjYtMTYuOGwwLTQ2YzAtLjkgLjYtMS41IDEuNi0xLjVsMTIuMyAwem0xMDguMiAwYzEgMCAxLjYgLjUgMi4yIDEuNGwzMC41IDQ2LjQgMS40IDAgMzAuNS00Ni40Yy42LS45IDEuMi0xLjQgMi4yLTEuNGwxOCAwYzEgMCAxLjUgLjYgMS41IDEuNWwwIDYxLjRjMCAuOS0uNSAxLjUtMS41IDEuNWwtMTIuMyAwYy0xIDAtMS42LS42LTEuNi0xLjVsMC00My44LTEuMSAwLTI4LjcgNDMuOGMtLjYgLjktMS4zIDEuNS0yLjQgMS41bC0xMC43IDBjLTEgMC0xLjctLjYtMi4zLTEuNWwtMjguNy00My44LTEuMSAwIDAgNDMuOGMwIC45LS41IDEuNS0xLjUgMS41bC0xMi4zIDBjLTEgMC0xLjYtLjYtMS42LTEuNWwwLTYxLjRjMC0uOSAuNi0xLjUgMS42LTEuNWwxNy45IDB6bTIxNC40IDBjLjkgMCAxLjMgLjQgMi4yIDEuMWw1Mi43IDQ2LjMgMS4zIDAgMC00NmMwLS45IC42LTEuNSAxLjYtMS41bDEyLjMgMGMxIDAgMS42IC42IDEuNiAxLjVsMCA2MS40YzAgLjktLjYgMS41LTEuNiAxLjVsLTE0LjQgMGMtMSAwLTEuNC0uNC0yLjMtMS4xbC01Mi42LTQ2LjMtMS40IDAgMCA0NmMwIC45LS41IDEuNS0xLjUgMS41bC0xMi4zIDBjLTEgMC0xLjYtLjYtMS42LTEuNWwwLTYxLjRjMC0uOSAuNi0xLjUgMS42LTEuNWwxNC40IDB6TTMyMCAxMTQuMWM4Ny45IDAgMTY3LjcgMTUuNyAyMjUuNSA0MWwyLjcgMS4yQzU4Ny4xIDE3My44IDY0MCAyMDYuNSA2NDAgMjU2cy01Mi45IDgyLjItOTEuOCA5OS42bC0yLjcgMS4yYy01Ny44IDI1LjQtMTM3LjYgNDEtMjI1LjUgNDEtNzYuMiAwLTE1NS4xLTEwLjUtMjI1LjUtNDEtMzkuNi0xNy40LTk0LjUtNTAuMy05NC41LTEwMC44czU0LjktODMuNSA5NC41LTEwMC44YzcwLjQtMzAuNSAxNDkuMy00MSAyMjUuNS00MXptLTg4LjkgMjI5YzIwLjMgMjkgNTIuOCA0OS42IDg4LjkgNDkuNiAzNi4yIDAgNjguNy0yMC42IDg5LTQ5LjdsLTE3Ny45IC4xem0tOTYuMSAwYzQzLjMgMjkuNyA5Ni43IDQzLjUgMTQ4LjQgNDgtMjQuMi05LjEtNDQuNC0yNi43LTU4LjYtNDguMWwtODkuOSAwem0yODAuMy0uMWMtMTQuMiAyMS40LTM0LjQgMzkuMS01OC42IDQ4LjEgNTEuOC00LjUgMTA1LjMtMTguMyAxNDguNi00OC4ybC05MCAwem0tMzM3LjQgLjFjNDQuMSAyMy4xIDkzLjcgMzUuNCAxNDIuNyA0Mi42LTMzLjQtOC42LTY2LjUtMjEuOS05NC40LTQyLjZsLTQ4LjMgMHptNDM2LjItLjJjLTI3LjkgMjAuOC02MS4xIDM0LjItOTQuNiA0Mi44IDQ3LjMtNi45IDg5LjYtMTguNSAxMjMuOS0zMy42bDEuNy0uOGM2LjEtMi43IDExLjktNS41IDE3LjQtOC40bC00OC41IDB6TTUyMCAxNzMuNmMxMC43IDguNyAxOS44IDE4LjEgMjcgMjguMiAuNCAuNiAuNSAxLjMgLjEgMnMtMSAxLTEuNyAxbC0xLjYgMGMtLjYgMC0xLjItLjMtMS41LS44LTcuOS0xMC45LTE4LjItMjEuMS0zMC42LTMwLjRsLTkzLjUgMGM1LjQgOC44IDkuOSAxOC41IDEzLjQgMjguNiAuMiAuNiAuMSAxLjItLjIgMS43cy0uOSAuOC0xLjYgLjhsLTEuNCAwYy0uOCAwLTEuNS0uNS0xLjgtMS4zLTMuOC0xMC43LTguNy0yMC44LTE0LjUtMjkuOWwtMTg0LjMgLjFjLTUuOCA5LjEtMTAuNyAxOS4xLTE0LjQgMjkuOC0uMyAuOC0xIDEuMy0xLjggMS4zbC0xLjQgMGMtLjYgMC0xLjItLjMtMS42LS44cy0uNS0xLjEtLjItMS43YzMuNS0xMC4yIDgtMTkuNyAxMy40LTI4LjZsLTkzLjYgMGMtMTIuMyA5LjMtMjIuNiAxOS40LTMwLjQgMzAuMy0uNCAuNS0uOSAuOC0xLjUgLjhsLTEuNiAwYy0uNyAwLTEuNC0uNC0xLjctMXMtLjMtMS40IC4xLTJjNy42LTEwLjUgMTYuNy0xOS45IDI2LjgtMjhsLTUxIDBjLTI4LjkgMTYuNi02MiA0My4zLTYzLjUgNzkuN2w0NC43IDBjLjUgMCAxIC4yIDEuMyAuNnMuNiAuOCAuNiAxLjNsMCAxLjNjMCAxLjEtLjkgMS45LTEuOSAxLjlsLTQ0LjcgMEM2LjggMjk1IDQwIDMyMS43IDY5IDMzOC4zbDUwLjkgMGMtMTAuMy04LjQtMTkuMS0xNy40LTI2LjEtMjdsLS44LTEuMWMtLjQtLjYtLjUtMS4zLS4xLTJzMS0xIDEuNy0xbDEuNiAwIC4yIDBjLjUgLjEgMSAuMyAxLjMgLjggNy45IDEwLjkgMTguMSAyMSAzMC41IDMwLjNsOTMuNiAwYy01LjMtOC44LTkuOC0xOC40LTEzLjQtMjguNS0uMi0uNi0uMS0xLjIgLjItMS43cy45LS44IDEuNi0uOGwxLjQgMCAuMiAwYy43IC4xIDEuNCAuNiAxLjcgMS4zIDMuOCAxMC43IDguNiAyMC43IDE0LjQgMjkuOGwxODQuNS0uMWM1LjgtOS4xIDEwLjYtMTkuMSAxNC40LTI5LjdsLjEtLjFjLjMtLjcgMS0xLjEgMS43LTEuMWwxLjQgMGMuNiAwIDEuMiAuMyAxLjYgLjhzLjUgMS4yIC4yIDEuN2MtMy41IDEwLjEtOCAxOS43LTEzLjMgMjguNWw5My43IDBjMTIuMy05LjMgMjIuNS0xOS40IDMwLjMtMzAuMmwuMS0uMmMuNC0uNCAuOS0uNiAxLjQtLjZsMS42IDBjLjcgMCAxLjQgLjQgMS43IDFzLjMgMS40LS4xIDJjLTcuMSAxMC0xNi4xIDE5LjMtMjYuNyAyNy45bDUxLjEgMGMyOC44LTE2LjYgNjEuOC00My4zIDYzLjQtNzkuNmwtNDQuNyAwYy0xIDAtMS45LS45LTEuOS0xLjlsMC0xLjNjMC0xLjEgLjktMS45IDEuOS0xLjlsNDQuNyAwYy0xLjYtMzYuNS0zNC45LTYzLjMtNjMuOS03OS45bC01MC45IDB6TTIyMC41IDEyNi4yYy00OS4xIDcuMS05OC43IDE5LjUtMTQzIDQyLjdsNDguNCAwYzI3LjktMjAuOCA2MS0zNC4xIDk0LjUtNDIuN3ptNjIuOC01LjRjLTUxLjggNC41LTEwNS4yIDE4LjMtMTQ4LjYgNDguMWw5MCAwYzE0LjItMjEuNCAzNC40LTM5IDU4LjYtNDguMXptMzYuNi0xLjZjLTM2LjIgMC02OC43IDIwLjYtODkgNDkuN2wxNzcuOS0uMWMtMjAuMy0yOS4xLTUyLjctNDkuNi04OC45LTQ5LjZ6bTM2LjYgMS42YzI0LjIgOS4xIDQ0LjQgMjYuNiA1OC41IDQ4bDg5LjggMGMtNDMuMy0yOS43LTk2LjYtNDMuNS0xNDguMy00OHptNjIuOCA1LjRjMzMuNCA4LjUgNjYuNCAyMS45IDk0LjMgNDIuNWw0OC4zIDBjLTQ0LjEtMjMuMS05My42LTM1LjQtMTQyLjYtNDIuNXoiXX0sVEV0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6Im51dHJpdGlvbml4IixpY29uOls0NDgsNTEyLFtdLCJmM2Q2IiwiTTExMiA4LjFTMjQ1LjQtLjEgMjMzIDExMi41YzAgMCAxOS4xLTc0LjkgMTAzLTQwLjYgMCAwLTE3LjcgNzQtODggNTYgMCAwIDE0LjYtNTQuNiA2Ni4xLTU2LjYgMCAwLTM5LjktMTAuMy04Mi4xIDQ4LjggMCAwLTE5LjgtOTQuNS05My42LTk5LjcgMCAwIDc1LjIgMTkuNCA3Ny42IDEwNy41IDAgLjEtMTA2LjQgNy0xMDQtMTE5Ljh6TTQyNCAzMjMuN2MwIDQ4LjUtOS43IDk1LjMtMzIgMTMyLjMtNDIuMiAzMC45LTEwNSA0OC0xNjggNDgtNjIuOSAwLTEyNS44LTE3LjEtMTY4LTQ4LTIyLjMtMzctMzItODMuOC0zMi0xMzIuMyAwLTQ4LjQgMTcuNy05NC43IDQwLTEzMS43IDQyLjItMzAuOSA5Ny4xLTQ4LjYgMTYwLTQ4LjYgNjMgMCAxMTcuOCAxNy42IDE2MCA0OC42IDIyLjMgMzcgNDAgODMuMyA0MCAxMzEuN3pNMTQ0IDQyOGEyOCAyOCAwIDEgMCAtNTYgMCAyOCAyOCAwIDEgMCA1NiAwem0wLTY2LjJhMjggMjggMCAxIDAgLTU2IDAgMjggMjggMCAxIDAgNTYgMHptMC02Ni4yYTI4IDI4IDAgMSAwIC01NiAwIDI4IDI4IDAgMSAwIDU2IDB6TTIxNiA0MjhhMjggMjggMCAxIDAgLTU2IDAgMjggMjggMCAxIDAgNTYgMHptMC02Ni4yYTI4IDI4IDAgMSAwIC01NiAwIDI4IDI4IDAgMSAwIDU2IDB6bTAtNjYuMmEyOCAyOCAwIDEgMCAtNTYgMCAyOCAyOCAwIDEgMCA1NiAwek0yODggNDI4YTI4IDI4IDAgMSAwIC01NiAwIDI4IDI4IDAgMSAwIDU2IDB6bTAtNjYuMmEyOCAyOCAwIDEgMCAtNTYgMCAyOCAyOCAwIDEgMCA1NiAwem0wLTY2LjJhMjggMjggMCAxIDAgLTU2IDAgMjggMjggMCAxIDAgNTYgMHpNMzYwIDQyOGEyOCAyOCAwIDEgMCAtNTYgMCAyOCAyOCAwIDEgMCA1NiAwem0wLTY2LjJhMjggMjggMCAxIDAgLTU2IDAgMjggMjggMCAxIDAgNTYgMHptMC02Ni4yYTI4IDI4IDAgMSAwIC01NiAwIDI4IDI4IDAgMSAwIDU2IDB6TTM4NCAyNTZjLTQuOC0yMi4zLTcuNC0zNi45LTE2LTU2LTM4LjgtMTkuOS05MC41LTMyLTE0NC0zMlMxMTguOCAxODAuMSA4MCAyMDBjLTguOCAxOS41LTExLjIgMzMuOS0xNiA1NiA0Mi4yLTcuOSA5OC43LTE0LjggMTYwLTE0LjhzMTE3LjggNi45IDE2MCAxNC44eiJdfSwkRXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiY3JlYXRpdmUtY29tbW9ucy1zYW1wbGluZy1wbHVzIixpY29uOls1MTIsNTEyLFtdLCJmNGYxIiwiTTI1NS42IDhDMzk3LjQgOCA1MDQgMTE4LjEgNTA0IDI1NiA1MDQgNDAzLjEgMzg1LjUgNTA0IDI1NS42IDUwNCAxMjEuNiA1MDQgOCAzOTQuNSA4IDI1NiA4IDEyMy4xIDExMi43IDggMjU1LjYgOHptLjggNDQuN2MtMTE4LjIgMC0yMDMuNyA5Ny45LTIwMy43IDIwMy4zIDAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjggLjEtMTEzLjgtOTAuMi0yMDMuMy0yMDIuOC0yMDMuM3ptMTA3IDIwNS42Yy00LjcgMC05IDIuOC0xMC43IDcuMmwtNCA5LjUtMTEtOTIuOGMtMS43LTEzLjktMjItMTMuNC0yMy4xIC40bC00LjMgNTEuNC01LjItNjguOGMtMS4xLTE0LjMtMjIuMS0xNC4yLTIzLjIgMGwtMy41IDQ0LjktNS45LTk0LjNjLS45LTE0LjUtMjIuMy0xNC40LTIzLjIgMGwtNS4xIDgzLjctNC4zLTY2LjNjLS45LTE0LjQtMjIuMi0xNC40LTIzLjIgMGwtNS4zIDgwLjItNC4xLTU3Yy0xLjEtMTQuMy0yMi0xNC4zLTIzLjItLjJsLTcuNyA4OS44LTEuOC0xMi4yYy0xLjctMTEuNC0xNy4xLTEzLjYtMjItMy4zbC0xMy4yIDI3LjctNDMuOSAwIDAgMjMuMiA1MS4zIDBjNC40IDAgOC40LTIuNSAxMC40LTYuNGwxMC43IDczLjFjMiAxMy41IDIxLjkgMTMgMjMuMS0uN2wzLjgtNDMuNiA1LjcgNzguM2MxLjEgMTQuNCAyMi4zIDE0LjIgMjMuMi0uMWw0LjYtNzAuNCA0LjggNzMuM2MuOSAxNC40IDIyLjMgMTQuNCAyMy4yLS4xbDQuOS04MC41IDQuNSA3MS44Yy45IDE0LjMgMjIuMSAxNC41IDIzLjIgLjJsNC42LTU4LjYgNC45IDY0LjRjMS4xIDE0LjMgMjIgMTQuMiAyMy4xIC4xbDYuOC04MyAyLjcgMjIuM2MxLjQgMTEuOCAxNy43IDE0LjEgMjIuMyAzLjFsMTgtNDMuNCA1MC41IDAgMC0yMy4yLTU4LjQgLjN6bS03OCA1LjJsLTIxLjkgMCAwIDIxLjljMCA0LjEtMy4zIDcuNS03LjUgNy41LTQuMSAwLTcuNS0zLjMtNy41LTcuNWwwLTIxLjktMjEuOSAwYy00LjEgMC03LjUtMy4zLTcuNS03LjUgMC00LjEgMy40LTcuNSA3LjUtNy41bDIxLjkgMCAwLTIxLjljMC00LjEgMy40LTcuNSA3LjUtNy41czcuNSAzLjMgNy41IDcuNWwwIDIxLjkgMjEuOSAwYzQuMSAwIDcuNSAzLjMgNy41IDcuNSAwIDQuMS0zLjQgNy41LTcuNSA3LjV6Il19LERFdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJyZWRoYXQiLGljb246WzUxMiw1MTIsW10sImY3YmMiLCJNMzQxLjUgMjg1LjZjMzMuNyAwIDgyLjMtNi45IDgyLjMtNDcgLjItNi43IC45LTEuOC0yMC45LTk2LjItNC42LTE5LjEtOC43LTI3LjgtNDIuMy00NC42LTI2LjEtMTMuMy04Mi45LTM1LjQtOTkuNy0zNS40LTE1LjcgMC0yMC4yIDIwLjItMzguOSAyMC4yLTE4IDAtMzEuMy0xNS4xLTQ4LjEtMTUuMS0xNi4xIDAtMjYuNyAxMS0zNC44IDMzLjYtMjcuNSA3Ny42LTI2LjMgNzQuMy0yNi4xIDc4LjMgMCAyNC44IDk3LjYgMTA2LjEgMjI4LjUgMTA2LjF6TTQyOSAyNTQuOGM0LjcgMjIgNC43IDI0LjMgNC43IDI3LjIgMCAzNy43LTQyLjMgNTguNi05OCA1OC42LTEyNS43IC4xLTIzNS45LTczLjYtMjM1LjktMTIyLjMgMC02LjggMS40LTEzLjUgNC4xLTE5LjctNDUuMiAyLjMtMTAzLjggMTAuMy0xMDMuOCA2MiAwIDg0LjcgMjAwLjYgMTg5IDM1OS41IDE4OSAxMjEuOCAwIDE1Mi41LTU1LjEgMTUyLjUtOTguNiAwLTM0LjItMjkuNi03My04Mi45LTk2LjJ6Il19LFo4ZT17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzcXVhcmUtcGllZC1waXBlciIsaWNvbjpbNDQ4LDUxMixbInBpZWQtcGlwZXItc3F1YXJlIl0sImUwMWUiLCJNMzIuMSA0MTlsLTMyIDYwLjIgLjgtMzI4Qy45IDg1LjMgNTQuMSAzMiAxMjAuMSAzMmwzMjcuMiAwQzM1NC4zIDYwLjkgMjU3LjQgMTI2LjIgMTkzLjQgMjAwLjYgMTIyLjggMjgyIDgyLjcgMzM4IDMyLjEgNDE5em00MTYtMzg3UzMwNS4zIDk4LjggMjYxLjcgMTk5LjFjLTIzLjIgNTMuNi0yOC45IDExOC4xLTcxIDE1OC42LTI4LjkgMjcuOC02OS44IDM4LjItMTA1LjMgNTYuMy0yMy4yIDEyLTY2LjQgNDAuNS04NC45IDY2bDMyOC40IDBjNjYgMCAxMTkuMy01My4zIDExOS4zLTExOS4yLS4xIDAtLjEtMzI4LjgtLjEtMzI4Ljh6Il19LExFdD1aOGUsRUV0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6IndoYXRzYXBwIixpY29uOls0NDgsNTEyLFtdLCJmMjMyIiwiTTM4MC45IDk3LjFjLTQxLjktNDItOTcuNy02NS4xLTE1Ny02NS4xLTEyMi40IDAtMjIyIDk5LjYtMjIyIDIyMiAwIDM5LjEgMTAuMiA3Ny4zIDI5LjYgMTExTDAgNDgwIDExNy43IDQ0OS4xYzMyLjQgMTcuNyA2OC45IDI3IDEwNi4xIDI3bC4xIDBjMTIyLjMgMCAyMjQuMS05OS42IDIyNC4xLTIyMiAwLTU5LjMtMjUuMi0xMTUtNjcuMS0xNTd6bS0xNTcgMzQxLjZjLTMzLjIgMC02NS43LTguOS05NC0yNS43bC02LjctNC02OS44IDE4LjMgMTguNi02OC4xLTQuNC03Yy0xOC41LTI5LjQtMjguMi02My4zLTI4LjItOTguMiAwLTEwMS43IDgyLjgtMTg0LjUgMTg0LjYtMTg0LjUgNDkuMyAwIDk1LjYgMTkuMiAxMzAuNCA1NC4xczU2LjIgODEuMiA1Ni4xIDEzMC41YzAgMTAxLjgtODQuOSAxODQuNi0xODYuNiAxODQuNnpNMzI1LjEgMzAwLjVjLTUuNS0yLjgtMzIuOC0xNi4yLTM3LjktMTgtNS4xLTEuOS04LjgtMi44LTEyLjUgMi44cy0xNC4zIDE4LTE3LjYgMjEuOGMtMy4yIDMuNy02LjUgNC4yLTEyIDEuNC0zMi42LTE2LjMtNTQtMjkuMS03NS41LTY2LTUuNy05LjggNS43LTkuMSAxNi4zLTMwLjMgMS44LTMuNyAuOS02LjktLjUtOS43cy0xMi41LTMwLjEtMTcuMS00MS4yYy00LjUtMTAuOC05LjEtOS4zLTEyLjUtOS41LTMuMi0uMi02LjktLjItMTAuNi0uMnMtOS43IDEuNC0xNC44IDYuOWMtNS4xIDUuNi0xOS40IDE5LTE5LjQgNDYuM3MxOS45IDUzLjcgMjIuNiA1Ny40YzIuOCAzLjcgMzkuMSA1OS43IDk0LjggODMuOCAzNS4yIDE1LjIgNDkgMTYuNSA2Ni42IDEzLjkgMTAuNy0xLjYgMzIuOC0xMy40IDM3LjQtMjYuNHM0LjYtMjQuMSAzLjItMjYuNGMtMS4zLTIuNS01LTMuOS0xMC41LTYuNnoiXX0sUEV0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImltZGIiLGljb246WzQ0OCw1MTIsW10sImYyZDgiLCJNODkuNSAzMjMuNmwtMzUuNiAwIDAtMTM3LjQgMzUuNiAwIDAgMTM3LjR6bTY2LjYtNzMuMWw5LjEtNjQuMyA0Ni4zIDAgMCAxMzcuNC0zMSAwIDAtOTIuNy0xMy40IDkyLjctMjEuMyAwLTEzLTkwLjctLjEgOTAuNy0zMS4yIDAgMC0xMzcuNCA0Ni4xIDBjLjUgOC4zIDIuOCAxOC4xIDQuMyAyOS40bDQuMiAzNC45em02Ny42IDczLjFsMC0xMzcuNCAyNi42IDBjMTcgMCAyNyAuOSAzMyAyLjQgNi4xIDEuNyAxMC43IDQuMiAxMy45IDcuOSAzLjEgMy4zIDUuMSA2LjYgNS44IDEyIC45IDQuNCAxLjQgMTMuMSAxLjQgMjYuMmwwIDQ4LjJjMCAxMi4zLS43IDIwLjUtMS45IDI0LjctMS4xIDQuMS0zLjEgNy40LTYgOS43LTIuOCAyLjQtNi40IDQuMS0xMC43IDUtNC4yIC44LTEwLjYgMS4zLTE5LjEgMS4zbC00MyAwem0zNS41LTExMy45bDAgODkuNGM1LjEgMCA4LjMtMSA5LjQtMi4zIDEuMS0yIDEuOC03LjYgMS44LTE2LjdsMC01My4zYzAtNi4yLS4xLTEwLjItLjctMTItLjMtMS44LTEuMi0zLTIuNi00LjctMS40IDAtNC4xLS40LTcuOS0uNHptNTcuMyAxMTMuOWwwLTEzNy40IDM0LjEgMCAwIDQzLjljMi45LTIuNCA2LjEtNC45IDkuNS02LjYgMy42LTEuNSA4LjgtMi40IDEyLjgtMi40IDQuOCAwIDguOSAuOCAxMi4zIDIuMiAzLjQgMS41IDYgMy41IDggNi4yIDEuNyAyLjYgMi43IDUuMyAzLjEgNy44IC40IDIuNi0uMiA4LS4yIDE2LjJsMCAzOC42YzAgOC4yIC4yIDE0LjMtLjggMTguNC0xLjEgNC0zLjggNy42LTcuOCA5LjYtNC4xIDMuOS04LjkgNS4zLTE0LjYgNS4zLTQgMC05LjItLjktMTIuNy0yLjUtMy41LTEuOC02LjctNC41LTkuNi04bC0yLjEgOC43LTMyIDB6bTQ1LjEtMjAuN2MuNy0xLjggMS02IDEtMTIuNWwwLTM1LjRjMC01LjYtLjMtOS41LTEuMS0xMS4yLS43LTEuOS0zLjctMi43LTUuOC0yLjctMiAwLTMuNCAuOC00LjEgMi4zLS42IDEuNS0xIDUuNC0xIDExLjZsMCAzNi40YzAgNi4xIC40IDEwIDEuMiAxMS42IC42IDEuNyAyLjEgMi41IDQuMSAyLjUgMi4yIDAgNC4yLS44IDUuNy0yLjZ6TTQxOC40IDMyYzE1LjcgMS4yIDI4LjcgMTUuMiAyOC43IDMxLjlsMCAzODQuMmMwIDE2LjQtMTEuOSAzMC40LTI4LjIgMzEtLjMgMC0uNSAuOS0uOCAuOUwyOS45IDQ4MGMtLjMgMC0uNi0uOS0uOC0uMS0xNS43LTEuNC0yNy45LTEzLjgtMjktMzAuMkwwIDYxLjhDMS4xIDQ1LjkgMTMuOCAzMy4xIDMwLjMgMzEuMWwzODcuNCAwYy4yIDAgLjUgLjkgLjcgLjl6TTMwLjMgNDEuM0MxOSA0MiAxMCA1MSA5LjMgNjIuNGwwIDM4Ny4zYy40IDUuNCAyLjcgMTAuNSA2LjQgMTQuMyAzLjggMy45IDguOCA2LjMgMTQuMiA2LjdsMzg4LjIgMGMxMS41LTEgMjAuNi0xMS42IDIwLjYtMjIuNmwwLTM4NC4yYzAtNS43LTIuMS0xMS4zLTYtMTUuNXMtOS4zLTYuOC0xNS03LjJsLTM4Ny40IDB6Il19LElFdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJweXRob24iLGljb246WzQ0OCw1MTIsW10sImYzZTIiLCJNNDM5LjggMjAwLjVjLTcuNy0zMC45LTIyLjMtNTQuMi01My40LTU0LjJsLTQwLjEgMCAwIDQ3LjRjMCAzNi44LTMxLjIgNjcuOC02Ni44IDY3LjhsLTEwNi44IDBjLTI5LjIgMC01My40IDI1LTUzLjQgNTQuM2wwIDEwMS44YzAgMjkgMjUuMiA0NiA1My40IDU0LjMgMzMuOCA5LjkgNjYuMyAxMS43IDEwNi44IDAgMjYuOS03LjggNTMuNC0yMy41IDUzLjQtNTQuM2wwLTQwLjctMTA2LjcgMCAwLTEzLjYgMTYwLjIgMGMzMS4xIDAgNDIuNi0yMS43IDUzLjQtNTQuMiAxMS4yLTMzLjUgMTAuNy02NS43IDAtMTA4LjZ6TTI4Ni4yIDQ0NC43YTIwLjQgMjAuNCAwIDEgMSAwLTQwLjcgMjAuNCAyMC40IDAgMSAxIDAgNDAuN3pNMTY3LjggMjQ4LjFsMTA2LjggMGMyOS43IDAgNTMuNC0yNC41IDUzLjQtNTQuM2wwLTEwMS45YzAtMjktMjQuNC01MC43LTUzLjQtNTUuNi0zNS44LTUuOS03NC43LTUuNi0xMDYuOCAuMS00NS4yIDgtNTMuNCAyNC43LTUzLjQgNTUuNmwwIDQwLjcgMTA2LjkgMCAwIDEzLjYtMTQ3IDBjLTMxLjEgMC01OC4zIDE4LjctNjYuOCA1NC4yLTkuOCA0MC43LTEwLjIgNjYuMSAwIDEwOC42IDcuNiAzMS42IDI1LjcgNTQuMiA1Ni44IDU0LjJsMzYuNyAwIDAtNDguOGMwLTM1LjMgMzAuNS02Ni40IDY2LjgtNjYuNHpNMTYxLjIgNjQuN2EyMC40IDIwLjQgMCAxIDEgMCA0MC44IDIwLjQgMjAuNCAwIDEgMSAwLTQwLjh6Il19LEFFdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJjYXNoLWFwcCIsaWNvbjpbNDQ4LDUxMixbXSwiZTdkNCIsIk00NDAuMyA5Ni45Yy05LjQtMjYuNS0zMC4zLTQ3LjQtNTYuOC01Ny0yNC4xLTcuOS00Ni4zLTcuOS05MS42LTcuOUwxNTYgMzJjLTQ0LjggMC02Ny4yIDAtOTEuMyA3LjUtMjYuNSA5LjYtNDcuNCAzMC41LTU3IDU3LTcuNyAyNC4zLTcuNyA0Ni43LTcuNyA5MS43TDAgMzIzLjhjMCA0NS4yIDAgNjcuNCA3LjUgOTEuNSA5LjYgMjYuNSAzMC41IDQ3LjQgNTcgNTcgMjQuMyA3LjcgNDYuNyA3LjcgOTEuNiA3LjdsMTM1LjcgMGM0NSAwIDY3LjQgMCA5MS42LTcuNyAyNi41LTkuNiA0Ny40LTMwLjUgNTctNTcgNy43LTI0LjMgNy43LTQ2LjcgNy43LTkxLjVsMC0xMzUuNWMwLTQ1IDAtNjcuNC03LjctOTEuNXpNMzIzLjEgMTg1LjRsLTI1LjggMjEuMWMtMi4zIDEuOS01LjUgMS41LTcuMy0uOS0xMy4yLTE2LjItMzMuNy0yNS40LTU2LjEtMjUuNC0yNSAwLTQwLjYgMTAuOS00MC42IDI2LjItLjQgMTIuOCAxMS43IDE5LjYgNDkuMSAyNy43IDQ3LjIgMTAgNjguNyAyOS43IDY4LjcgNjIuNyAwIDQxLjQtMzMuNyA3MS45LTg2LjQgNzUuM2wtNS4xIDI0LjVjLS40IDIuMy0yLjYgNC4xLTUuMSA0LjFsLTQwLjYgMGMtMy40IDAtNS44LTMuMi01LjEtNi40bDYuNC0yNy4zYy0yNi03LjUtNDcuMi0yMi01OS4zLTM5LjctMS41LTIuMy0xLjEtNS4zIDEuMS03bDI4LjItMjJjMi4zLTEuOSA1LjgtMS4zIDcuNSAxLjEgMTQuOSAyMC45IDM4IDMzLjMgNjUuNyAzMy4zIDI1IDAgNDMuOC0xMi4yIDQzLjgtMjkuNyAwLTEzLjQtOS40LTE5LjYtNDEuMi0yNi4yLTU0LjItMTEuNy03NS44LTMxLjgtNzUuOC02NC45IDAtMzguNCAzMi4yLTY3LjIgODAuOS03MWw1LjMtMjUuNGMuNC0yLjMgMi42LTQuMSA1LjEtNC4xbDM5LjkgMGMzLjIgMCA1LjggMyA1LjEgNi4ybC02LjIgMjguNGMyMC45IDYuNCAzOCAxNy45IDQ4LjcgMzIuMiAxLjcgMi4xIDEuMyA1LjMtLjkgN3oiXX0sTkV0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InBpbnRlcmVzdC1wIixpY29uOlszODQsNTEyLFtdLCJmMjMxIiwiTTIwNCA2LjVjLTEwMi42IDAtMjA0IDY4LjQtMjA0IDE3OS4xIDAgNzAuNCAzOS42IDExMC40IDYzLjYgMTEwLjQgOS45IDAgMTUuNi0yNy42IDE1LjYtMzUuNCAwLTkuMy0yMy43LTI5LjEtMjMuNy02Ny44IDAtODAuNCA2MS4yLTEzNy40IDE0MC40LTEzNy40IDY4LjEgMCAxMTguNSAzOC43IDExOC41IDEwOS44IDAgNTMuMS0yMS4zIDE1Mi43LTkwLjMgMTUyLjctMjQuOSAwLTQ2LjItMTgtNDYuMi00My44IDAtMzcuOCAyNi40LTc0LjQgMjYuNC0xMTMuNCAwLTY2LjItOTMuOS01NC4yLTkzLjkgMjUuOCAwIDE2LjggMi4xIDM1LjQgOS42IDUwLjctMTMuOCA1OS40LTQyIDE0Ny45LTQyIDIwOS4xIDAgMTguOSAyLjcgMzcuNSA0LjUgNTYuNCAzLjQgMy44IDEuNyAzLjQgNi45IDEuNSA1MC40LTY5IDQ4LjYtODIuNSA3MS40LTE3Mi44IDEyLjMgMjMuNCA0NC4xIDM2IDY5LjMgMzYgMTA2LjIgMCAxNTMuOS0xMDMuNSAxNTMuOS0xOTYuOCAwLTk5LjMtODUuOC0xNjQuMS0xODAtMTY0LjF6Il19LFJFdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ3aG1jcyIsaWNvbjpbNDQ4LDUxMixbXSwiZjQwZCIsIk00NDggMTYxbDAtMjEuMy0yOC41LTguOC0yLjItMTAuNCAyMC4xLTIwLjctMTAuNC0xOS40LTI5IDcuNS03LjItNy41IDcuNS0yOC4yLTE5LjEtMTEuNi0yMS4zIDIxLTEwLjctMy4yLTctMjYuNC0yMi42IDAtNi4yIDI2LjQtMTIuMSAzLjItMTkuNy0yMS0xOS40IDExIDguMSAyNy43LTguMSA4LjQtMjguNS03LjUtMTEgMTkuMSAyMC43IDIxLTIuOSAxMC40LTI4LjUgNy44LS4zIDIxLjcgMjguOCA3LjUgMi40IDEyLjEtMjAuMSAxOS45IDEwLjQgMTguNSAyOS42LTcuNSA3LjIgOC42LTguMSAyNi45IDE5LjkgMTEuNiAxOS40LTIwLjQgMTEuNiAyLjkgNi43IDI4LjUgMjIuNiAuMyA2LjctMjguOCAxMS42LTMuNSAyMC43IDIxLjYgMjAuNC0xMi4xLTguOC0yOCA3LjgtOC4xIDI4LjggOC44IDEwLjMtMjAuMS0yMC45LTE4LjggMi4yLTEyLjEgMjkuMS03ek0zMjguOCA5Mi42YTU2LjggNTYuOCAwIDEgMSAwIDExMy42IDU2LjggNTYuOCAwIDEgMSAwLTExMy42em03Mi4zIDEzMGw0Ni45IDE0LjUgMCAzOS45LTU1LjEgMTMuNC00LjEgMjIuNyAzOC45IDM1LjMtMTkuMiAzNy45LTU0LTE2LjctMTQuNiAxNS4yIDE2LjcgNTIuNS0zOC4zIDIyLjctMzguOS00MC41LTIxLjcgNi42LTEyLjYgNTQtNDIuNC0uNS0xMi42LTUzLjYtMjEuNy01LjYtMzYuNCAzOC40LTM3LjQtMjEuNyAxNS4yLTUwLjUtMTMuNy0xNi4xLTU1LjUgMTQuMS0xOS43LTM0LjggMzcuOS0zNy40LTQuOC0yMi44LTU0LTE0LjEgLjUtNDAuOSA1My41LTE0LjcgNS43LTE5LjctMzguOS0zOS40IDIwLjctMzUuOCA1My42IDE0LjEgMTUuMi0xNS43LTE1LjItNTIgMzYuNC0yMC43IDM2LjggMzkuNCAyMi43LTYuMSAxMS42LTUyIDQyLjQgMCAxMS42IDQ1LjktMjIuNi01LjktNi4zLTEuNy0zLjMgNS43LTExIDE5LjEtMy4zIDUuNiA0LjYgNC42IDE3LjIgMTcuNC0uMyAxLTIzLjggNi41LTYuMiAxLjdjMCAzLjItLjEgOS42LS4zIDE5LjMtNDcuNSAxMC40LTgzLjMgNTIuOC04My4zIDEwMy41IDAgNTguMyA0Ny4zIDEwNS43IDEwNS43IDEwNS43IDUwLjUgMCA5Mi43LTM1LjQgMTAzLjItODIuOCA5LjkgLjEgMTYuNiAuMiAyMC4xIC4zbDEuNi02LjcgNS42LTI0IDEuOS0uNiAxNy4xIDE3LjggNC43IDQuOSA1LjgtMy40IDIwLjQtMTIuMSA1LjgtMy41LTItNi41LTYuOC0yMS4yeiJdfSxPRXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiam9nZXQiLGljb246WzUxMiw1MTIsW10sImYzYjciLCJNMzg2LjEgNDVDMzQ1LjYgMTkuOSAzMDAuNiA4IDI1Ni4yIDggMTczIDggOTEuOCA0OS45IDQ0LjkgMTI1LjktMjcgMjQyLjUgOS4zIDM5NS4yIDEyNS45IDQ2Ny4xczI2OS4zIDM1LjYgMzQxLjItODAuOUM1MzkgMjY5LjYgNTAyLjcgMTE2LjggMzg2LjEgNDV6bTUxLjggMzIzLjJjLTQwLjQgNjUuNS0xMTAuNCAxMDEuNS0xODIgMTAxLjUtNi44IDAtMTMuNi0uNC0yMC40LTEtOS0xMy42LTE5LjktMzMuMy0yMy43LTQyLjQtNS43LTEzLjctMjcuMi00NS42IDMxLjItNjcuMSA1MS43LTE5LjEgMTc2LjctMTYuNSAyMDguOC0xNy42LTQgOS04LjYgMTcuOS0xMy45IDI2LjZ6TTIzNy4xIDI4MS45Yy01NS41LTEuNC04MS43LTIwLjgtNTguNS00OC4yczUxLjEtNDAuNyA2OC45LTUxLjJjMTcuOS0xMC41IDI3LjMtMzMuNy0yMy42LTI5LjctMTI4LjYgOC43LTE2Ny4zIDk5LjMtMTc4LjMgMTQwLjItOC44LTQ5LjctLjEtMTAyLjcgMjguNS0xNDkuMSA2MS45LTEwMC41IDE5My41LTEzMS43IDI5NC02OS44IDc0LjggNDYuMSAxMTEuMiAxMzAuOSA5OS4zIDIxMi43LTI0LjktLjUtMTc5LjMtMy42LTIzMC4zLTQuOXptMTgzLjgtNTQuOGMtMjIuNy02LTU3IDExLjMtODYuNyAyNy4yLTI5LjcgMTUuOC0zMS4xIDguMi0zMS4xIDguMnM0MC4yLTI4LjEgNTAuNy0zNC41IDMxLjktMTQgMTMuNC0yNC42Yy0zLjItMS44LTYuNy0yLjctMTAuNC0yLjctMTcuOCAwLTQxLjUgMTguNy02Ny41IDM1LjYtMzEuNSAyMC41LTY1LjMgMzEuMy02NS4zIDMxLjNMMzkzLjUgMjY2IDQ0MCAyNDIuNnMzLjYtOS41LTE5LjEtMTUuNXoiXX0sWDhlPXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNxdWFyZS15b3V0dWJlIixpY29uOls0NDgsNTEyLFs2MTc5OCwieW91dHViZS1zcXVhcmUiXSwiZjQzMSIsIk0yODIgMjU2LjJsLTk1LjItNTQuMSAwIDEwOC4yIDk1LjItNTQuMXpNMzg0IDMyTDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjR6bTE0LjQgMTM2LjFjNy42IDI4LjYgNy42IDg4LjIgNy42IDg4LjJzMCA1OS42LTcuNiA4OC4xYy00LjIgMTUuOC0xNi41IDI3LjctMzIuMiAzMS45LTI4LjMgNy43LTE0Mi4yIDcuNy0xNDIuMiA3LjdzLTExMy45IDAtMTQyLjItNy42Yy0xNS43LTQuMi0yOC0xNi4xLTMyLjItMzEuOS03LjYtMjguNi03LjYtODguMi03LjYtODguMnMwLTU5LjcgNy42LTg4LjJjNC4yLTE1LjggMTYuNS0yOC4yIDMyLjItMzIuNCAyOC4zLTcuNyAxNDIuMi03LjcgMTQyLjItNy43czExMy45IDAgMTQyLjIgNy43YzE1LjcgNC4yIDI4IDE2LjYgMzIuMiAzMi40eiJdfSxGRXQ9WDhlLEJFdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJhdGxhc3NpYW4iLGljb246WzUxMiw1MTIsW10sImY3N2IiLCJNMTUyLjIgMjM2LjRjLTcuNy04LjItMTkuNy03LjctMjQuOCAyLjhMMS42IDQ5MC4yYy01IDEwIDIuNCAyMS43IDEzLjQgMjEuN2wxNzUgMGM1LjggLjEgMTEtMy4yIDEzLjQtOC40IDM3LjktNzcuOCAxNS4xLTE5Ni4zLTUxLjItMjY3LjF6TTI0NC40IDguMWMtMTIyLjMgMTkzLjQtOC41IDM0OC42IDY1IDQ5NS41IDIuNSA1LjEgNy43IDguNCAxMy40IDguNEw0OTcgNTEyYzExLjIgMCAxOC40LTExLjggMTMuNC0yMS43IDAgMC0yMzQuNS00NzAuNi0yNDAuNC00ODIuMy01LjMtMTAuNi0xOC44LTEwLjgtMjUuNiAuMXoiXX0sSEV0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InBpZWQtcGlwZXItaGF0IixpY29uOls2NDAsNTEyLFtdLCJmNGU1IiwiTTY0MCAyNC45Yy04MC44IDUzLjYtODkuNCA5Mi41LTk2LjQgMTA0LjQtNi43IDEyLjItMTEuNyA2MC4zLTIzLjMgODMuNi0xMS43IDIzLjYtNTQuMiA0Mi4yLTY2LjEgNTAtMTEuNyA3LjgtMjguMyAzOC4xLTQxLjkgNjQuMi0xMDguMS00LjQtMTY3LjQgMzguOC0yNTkuMiA5My42IDI5LjQtOS43IDQzLjMtMTYuNyA0My4zLTE2LjcgOTQuMi0zNiAxMzkuMy02OC4zIDI4MS4xLTQ5LjIgMS4xIDAgMS45IC42IDIuOCAuOCAzLjkgMi4yIDUuMyA2LjkgMy4xIDEwLjhsLTUzLjkgOTUuOGMtMi41IDQuNy03LjggNy4yLTEzLjEgNi4xLTEyNi44LTIzLjgtMjI2LjkgMTcuMy0zMTguOSAxOC42LTczLjQgMS4xLTk3LjUtMzMuNS05Ny41LTM1LjEgMC0xLjEgLjYtMS43IDEuNy0xLjcgMCAwIDM4LjMgMCAxMDMuMS0xNS4zIDczLjYtMTQwLjMgMTM5LjItMTg5LjQgMjEwLjYtMTg5LjQgMCAwIDcxLjcgMCA5MC42IDYxLjkgMjIuOC0zOS43IDI4LjMtNDkuMiAyOC4zLTQ5LjIgNS4zLTkuNCAzNS03Ny4yIDg2LjQtMTQxLjQgNTEuNS02NCA5MC40LTc5LjkgMTE5LjMtOTEuOHoiXX0scUV0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImludGVybmV0LWV4cGxvcmVyIixpY29uOls1MTIsNTEyLFtdLCJmMjZiIiwiTTQ4My4xIDE1OS43YzEwLjktMjQuNiAyMS40LTYwLjQgMjEuNC04Ny45IDAtNzIuNy03OS42LTk4LjQtMjA5LjctMzguNi0xMDcuNi03LjItMjExLjIgNzMuNy0yMzcuMSAxODYuNSAzMC45LTM0LjkgNzguMy04Mi4zIDEyMi0xMDEuMi01NC4zIDQ4LjMtMTAwLjYgMTA5LjQtMTM1LjcgMTczLjItMjAuNyAzNy45LTQ0IDk5LjItNDQgMTQ1IDAgOTguNiA5Mi45IDg2LjUgMTgwLjMgNDIgMzEuNCAxNS40IDY2LjYgMTUuNiAxMDEuNyAxNS42IDk3LjEgMCAxODQuMi01NC4zIDIxNi44LTE0NmwtMTIwLjggMGMtNTIuNSA4OC42LTE5Ni44IDUzLTE5Ni44LTQ3LjRsMzI4LjggMGM2LjQtNDMuNi0xLjctOTUuNy0yNi45LTE0MS4yek02NC42IDM0Ni45QzgyLjMgMzk4IDExOC4zIDQ0Mi43IDE2NC44IDQ3MC4yIDc2LjEgNTE5LjEtOC40IDQ5OS4zIDY0LjYgMzQ2Ljl6TTE4MC41IDIzOGMyLTU1LjIgNTAuMy05NC45IDEwNC05NC45IDUzLjQgMCAxMDIgMzkuNyAxMDQgOTQuOWwtMjA4IDB6TTM2NS4xIDUwLjRjMjEuNC0xMC4zIDQ4LjYtMjIgNzIuNi0yMiAzMS40IDAgNTQuMyAyMS43IDU0LjMgNTMuNyAwIDIwLTcuNCA0OS0xNC42IDY3LjktMjYuMy00Mi4zLTY2LTgxLjYtMTEyLjMtOTkuNnoiXX0sakV0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImFpcmJuYiIsaWNvbjpbNDQ4LDUxMixbXSwiZjgzNCIsIk0yMjQuNSAzNzMuMWMtMjUuMi0zMS43LTQwLjEtNTkuNC00NS04My4yLTIyLjUtODggMTEyLjYtODggOTAuMSAwLTUuNCAyNC4yLTIwLjMgNTItNDUgODMuMmwtLjEgMHptMTM4LjIgNzMuMmMtNDIuMSAxOC4zLTgzLjctMTAuOS0xMTkuMy01MC41IDEwMy45LTEzMC4xIDQ2LjEtMjAwLTE4LjgtMjAwLTU0LjkgMC04NS4yIDQ2LjUtNzMuMyAxMDAuNSA2LjkgMjkuMiAyNS4yIDYyLjQgNTQuNCA5OS41LTMyLjUgMzYtNjAuNSA1Mi43LTg1LjIgNTQuOS01MCA3LjQtODkuMS00MS4xLTcxLjMtOTEuMSAxNS4xLTM5LjIgMTExLjctMjMxLjIgMTE1LjktMjQxLjYgMTUuOC0zMC4xIDI1LjYtNTcuNCA1OS40LTU3LjQgMzIuMyAwIDQzLjQgMjUuOSA2MC40IDU5LjkgMzYgNzAuNiA4OS40IDE3Ny41IDExNC44IDIzOS4xIDEzLjIgMzMuMS0xLjQgNzEuMy0zNyA4Ni42em00Ny0xMzYuMWMtMTI4LjktMjc0LjMtMTM2LTI3OC4yLTE4NS4xLTI3OC4yLTQ1LjUgMC02NC45IDMxLjctODQuNyA3Mi44LTEwNi4yIDIxMi4zLTExNi40IDI0Mi40LTExNy4zIDI0NS0yNS4yIDY5LjMgMjYuNyAxMzAuMiA4OS42IDEzMC4yIDIxLjcgMCA2MC42LTYuMSAxMTIuNC02Mi40IDU4LjcgNjMuOCAxMDEuMyA2Mi40IDExMi40IDYyLjQgNjIuOSAuMSAxMTQuOS02MC45IDg5LjYtMTMwLjIgMC0zLjktMTYuOC0zOC45LTE2LjgtMzkuNmwwIDB6Il19LFZFdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJqcyIsaWNvbjpbNDQ4LDUxMixbXSwiZjNiOCIsIk0wIDMybDAgNDQ4IDQ0OCAwIDAtNDQ4LTQ0OCAwek0yNDMuOCAzODEuNGMwIDQzLjYtMjUuNiA2My41LTYyLjkgNjMuNS0zMy43IDAtNTMuMi0xNy40LTYzLjItMzguNUwxNTIgMzg1LjdjNi42IDExLjcgMTIuNiAyMS42IDI3LjEgMjEuNiAxMy44IDAgMjIuNi01LjQgMjIuNi0yNi41bDAtMTQzLjEgNDIuMSAwIDAgMTQzLjd6bTk5LjYgNjMuNWMtMzkuMSAwLTY0LjQtMTguNi03Ni43LTQzTDMwMSAzODIuMWM5IDE0LjcgMjAuOCAyNS42IDQxLjUgMjUuNiAxNy40IDAgMjguNi04LjcgMjguNi0yMC44IDAtMTQuNC0xMS40LTE5LjUtMzAuNy0yOGwtMTAuNS00LjVjLTMwLjQtMTIuOS01MC41LTI5LjItNTAuNS02My41IDAtMzEuNiAyNC4xLTU1LjYgNjEuNi01NS42IDI2LjggMCA0NiA5LjMgNTkuOCAzMy43TDM2OCAyOTBjLTcuMi0xMi45LTE1LTE4LTI3LjEtMTgtMTIuMyAwLTIwLjEgNy44LTIwLjEgMTggMCAxMi42IDcuOCAxNy43IDI1LjkgMjUuNmwxMC41IDQuNWMzNS44IDE1LjMgNTUuOSAzMSA1NS45IDY2LjIgMCAzNy44LTI5LjggNTguNi02OS43IDU4LjZ6Il19LFVFdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJxdWluc2NhcGUiLGljb246WzUxMiw1MTIsW10sImY0NTkiLCJNMzEzLjcgNDc0LjZsLTEgMGMtNDEuOSAwLTgyLjEtMTYuNy0xMTEuOC00Ni4zcy00Ni4zLTY5LjktNDYuMy0xMTEuOCAxNi43LTgyLjEgNDYuMy0xMTEuOCA2OS45LTQ2LjMgMTExLjgtNDYuM2M5NC45IDAgMTY4LjIgODMuMSAxNTcgMTc2LjYgNCA1LjEgOC4yIDkuNiAxMS4yIDE1LjMgMTMuNC0zMC4zIDIwLjMtNjIuNCAyMC4zLTk3LjcgMC0xMzUuMS0xMDkuNS0yNDQuNi0yNDQuNi0yNDQuNlMxMi4xIDExNy41IDEyLjEgMjUyLjYgMTIxLjYgNDk3LjIgMjU2LjYgNDk3LjJjMjMuOCAuMiA0Ny42LTMuMiA3MC40LTEwLjEtNS4yLTMuNS04LjktOC4xLTEzLjMtMTIuNXptNzguMy0xNjlhOTkuMiA5OS4yIDAgMSAwIDAgMTk4LjQgOTkuMiA5OS4yIDAgMSAwIDAtMTk4LjR6Il19LFdFdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJhZHZlcnNhbCIsaWNvbjpbNTEyLDUxMixbXSwiZjM2YSIsIk00ODIuMSAzMkwyOC43IDMyQzUuOCAzMiAwIDM3LjkgMCA2MC45TDAgNDUxLjFDMCA0NzQuNCA1LjggNDgwIDI4LjcgNDgwbDQ1My40IDBjMjQuNCAwIDI5LjktNS4yIDI5LjktMjkuN2wwLTM4OC4xYzAtMjQuNi01LjQtMzAuMi0yOS45LTMwLjJ6TTE3OC40IDIyMC4zYy0yNy41LTIwLjItNzIuMS04LjctODQuMiAyMy40LTQuMyAxMS4xLTkuMyA5LjUtMTcuNSA4LjMtOS43LTEuNS0xNy4yLTMuMi0yMi41LTUuNS0yOC44LTExLjQgOC42LTU1LjMgMjQuOS02NC4zIDQxLjEtMjEuNCA4My40LTIyLjIgMTI1LjMtNC44IDQwLjkgMTYuOCAzNC41IDU5LjIgMzQuNSAxMjguNSAyLjcgMjUuOC00LjMgNTguMyA5LjMgODguOCAxLjkgNC40IC40IDcuOS0yLjcgMTAuNy04LjQgNi43LTM5LjMgMi4yLTQ2LjYtNy40LTEuOS0yLjItMS44LTMuNi0zLjktNi4yLTMuNi0zLjktNy4zLTIuMi0xMS45IDEtNTcuNCAzNi40LTE0MC4zIDIxLjQtMTQ3LTQzLjMtMy4xLTI5LjMgMTIuNC01Ny4xIDM5LjYtNzEgMzguMi0xOS41IDExMi4yLTExLjggMTE0LTMwLjkgMS4xLTEwLjItMS45LTIwLjEtMTEuMy0yNy4zem0yODYuNyAyMjJjMCAxNS4xLTExLjEgOS45LTE3LjggOS45bC0zOTQuOSAwYy03LjQgMC0xOC4yIDQuOC0xNy44LTEwLjcgLjQtMTMuOSAxMC41LTkuMSAxNy4xLTkuMSAxMzIuMy0uNCAyNjQuNS0uNCAzOTYuOCAwIDYuOCAwIDE2LjYtNC40IDE2LjYgOS45em0zLjgtMzQwLjVsMCAyOTFjMCA1LjctLjcgMTMuOS04LjEgMTMuOS0xMi40LS40LTI3LjUgNy4xLTM2LjEtNS42LTUuOC04LjctNy44LTQtMTIuNC0xLjItNTMuNCAyOS43LTEyOC4xIDcuMS0xNDQuNC04NS4yLTYuMS0zMy40LS43LTY3LjEgMTUuNy0xMDAgMTEuOC0yMy45IDU2LjktNzYuMSAxMzYuMS0zMC41bDAtNzFjMC0yNi4yLS4xLTI2LjIgMjYtMjYuMiAzLjEgMCA2LjYgLjQgOS43IDAgMTAuMS0uOCAxMy42IDQuNCAxMy42IDE0LjMtLjEgLjItLjEgLjMtLjEgLjV6TTQxNy40IDMzNC4xYy0xOS41IDQ3LjYtNzIuOSA0My4zLTkwIDUuMi0xNS4xLTMzLjMtMTUuNS02OC4yIC40LTEwMS41IDE2LjMtMzQuMSA1OS43LTM1LjcgODEuNS00LjggMjAuNiAyOC44IDE0LjkgODQuNiA4LjEgMTAxLjF6TTEyMi42IDM2OS40Yy03LjUtMS4zLTMzLTMuMy0zMy43LTI3LjgtLjQtMTMuOSA3LjgtMjMgMTkuOC0yNS44IDI0LjQtNS45IDQ5LjMtOS45IDczLjctMTQuNyA4LjktMiA3LjQgNC40IDcuOCA5LjUgMS40IDMzLTI2LjEgNTkuMi02Ny42IDU4Ljh6Il19LEdFdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJjcmVhdGl2ZS1jb21tb25zIixpY29uOls1MTIsNTEyLFtdLCJmMjVlIiwiTTI1My44IDIxNC45bC0zMy4yIDE3LjNjLTkuNC0xOS42LTI1LjItMTkuOS0yNy41LTE5LjktMjIuMSAwLTMzLjIgMTQuNi0zMy4yIDQzLjggMCAyMy42IDkuMiA0My44IDMzLjIgNDMuOCAxNC41IDAgMjQuNi03LjEgMzAuNi0yMS4zbDMwLjYgMTUuNWMtNi4yIDExLjUtMjUuNyAzOS02NS4xIDM5LTIyLjYgMC03NC0xMC4zLTc0LTc3IDAtNTguNyA0My03Ny4xIDcyLjYtNzcuMSAzMC43IDAgNTIuNyAxMS45IDY2IDM1Ljl6bTE0MyAwbC0zMi44IDE3LjNjLTkuNS0xOS44LTI1LjctMTkuOS0yNy45LTE5LjktMjIuMSAwLTMzLjIgMTQuNi0zMy4yIDQzLjggMCAyMy41IDkuMiA0My44IDMzLjIgNDMuOCAxNC40IDAgMjQuNi03LjEgMzAuNS0yMS4zbDMxIDE1LjVjLTIuMSAzLjgtMjEuNCAzOS02NS4xIDM5LTIyLjcgMC03NC05LjktNzQtNzcgMC01OC43IDQzLTc3LjEgNzIuNi03Ny4xIDMwLjcgMCA1Mi42IDExLjkgNjUuNiAzNS45ek0yNTUuNiA4QzExMi43IDggOCAxMjMuMSA4IDI1Ni4xIDggMzk0LjUgMTIxLjYgNTA0LjEgMjU1LjYgNTA0LjEgMzg1LjUgNTA0LjEgNTA0IDQwMy4yIDUwNCAyNTYuMSA1MDQgMTE4LjIgMzk3LjQgOCAyNTUuNiA4em0uOSA0NTAuOGMtMTEyLjUgMC0yMDMuNy05My0yMDMuNy0yMDIuOCAwLTEwNS40IDg1LjQtMjAzLjMgMjAzLjctMjAzLjMgMTEyLjUgMCAyMDIuOCA4OS41IDIwMi44IDIwMy4zIDAgMTIxLjctOTkuNyAyMDIuOC0yMDIuOCAyMDIuOHoiXX0sS0V0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6Im5vdGlvbiIsaWNvbjpbNTEyLDUxMixbXSwiZTdkOSIsIk05NC45IDEwMC4yYzE0LjkgMTIuMSAyMC41IDExLjIgNDguNiA5LjNMNDA3LjggOTMuNmM1LjYgMCAuOS01LjYtLjktNi41TDM2Mi45IDU1LjRjLTguNC02LjUtMTkuNi0xNC00MS4xLTEyLjFMNjUuOSA2MS45Yy05LjMgLjktMTEuMiA1LjYtNy41IDkuM2wzNi40IDI4Ljl6bTE1LjkgNjEuNmwwIDI3OC4xYzAgMTQuOSA3LjUgMjAuNSAyNC4zIDE5LjZsMjkwLjUtMTYuOGMxNi44LS45IDE4LjctMTEuMiAxOC43LTIzLjNsMC0yNzYuMmMwLTEyLjEtNC43LTE4LjctMTUtMTcuN0wxMjUuNyAxNDMuMWMtMTEuMiAuOS0xNC45IDYuNS0xNC45IDE4Ljd6bTI4Ni43IDE0LjljMS45IDguNCAwIDE2LjgtOC40IDE3LjhsLTE0IDIuOCAwIDIwNS4zYy0xMi4yIDYuNS0yMy40IDEwLjMtMzIuNyAxMC4zLTE1IDAtMTguNy00LjctMjkuOS0xOC43bC05MS41LTE0My43IDAgMTM5IDI5IDYuNXMwIDE2LjgtMjMuNCAxNi44bC02NC40IDMuN2MtMS45LTMuNyAwLTEzLjEgNi41LTE0LjlsMTYuOC00LjcgMC0xODMuOC0yMy4zLTEuOWMtMS45LTguNCAyLjgtMjAuNSAxNS45LTIxLjVsNjkuMS00LjcgOTUuMyAxNDUuNiAwLTEyOC44LTI0LjMtMi44Yy0xLjktMTAuMyA1LjYtMTcuNyAxNC45LTE4LjdsNjQuNS0zLjh6TTQ0LjQgMzYuN0wzMTAuNiAxNy4xYzMyLjctMi44IDQxLjEtLjkgNjEuNiAxNGw4NSA1OS43YzE0IDEwLjMgMTguNyAxMy4xIDE4LjcgMjQuM2wwIDMyNy42YzAgMjAuNS03LjUgMzIuNy0zMy42IDM0LjVMMTMzLjIgNDk1LjhjLTE5LjYgLjktMjktMS45LTM5LjItMTQuOUwzMS40IDM5OS43Yy0xMS4yLTE0LjktMTUuOS0yNi4xLTE1LjktMzkuMmwwLTI5MS4yYzAtMTYuOCA3LjUtMzAuOCAyOC45LTMyLjd6Il19LFlFdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJjaHJvbWVjYXN0IixpY29uOls1MTIsNTEyLFtdLCJmODM4IiwiTTQ0OCA2NEw2NC4yIDY0Yy0yMy42IDAtNDIuNyAxOS4xLTQyLjcgNDIuN2wwIDYzLjkgNDIuNyAwIDAtNjMuOSAzODMuOCAwIDAgMjk4LjYtMTQ5LjIgMCAwIDQyLjcgMTQ5LjQgMGMyMy42IDAgNDIuNy0xOS4xIDQyLjctNDIuN2wwLTI5OC42QzQ5MC45IDgzLjEgNDcxLjYgNjQgNDQ4IDY0ek0yMS41IDM4My42bDAgNjMuOSA2My45IDBjMC0zNS4zLTI4LjYtNjMuOS02My45LTYzLjl6bTAtODVsMCA0Mi40YzU4LjkgMCAxMDYuNiA0OC4xIDEwNi42IDEwN2w0Mi43IDBjLjEtODIuNC02Ni45LTE0OS4zLTE0OS4zLTE0OS40ek0yMTMuNiA0NDhsNDIuNyAwQzI1NS44IDMxOC41IDE1MSAyMTMuNyAyMS41IDIxMy40bDAgNDIuNGMxMDYtLjIgMTkyIDg2LjIgMTkyLjEgMTkyLjJ6Il19LFpFdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ1bHRyYWx5dGljcy1odWIiLGljb246WzUxMiw1MTIsW10sImU4NmUiLCJNMTMwLjQgMTZjNjAuOSAwIDExMC40IDQ5LjUgMTEwLjQgMTEwLjRsMCAyNC45YzQuOC0uNyA5LjctMSAxNC42LTEgODguMS0uMiAxNjUuMSA0OSAyMDUuNCAxMjEuMi0yMi44LTE2LjItNTAuNy0yNS40LTgwLjQtMjUuMy03Ny4xIC4yLTEzOS41IDYyLjYtMTM5LjYgMTM5LjQtLjEgNjAuOS00OS41IDExMC4zLTExMC43IDExMC41LTYwLjYgLjItMTEwLjItNDkuNS0xMTAuMi0xMTAuNSAuMi0yLjYgMCAwIC4xLTMuMmwwLTI1NkMyMC4xIDY1LjUgNjkuNSAxNiAxMzAuNCAxNnpNMzgwLjMgNDk2YTExMC40IDExMC40IDAgMSAxIDAtMjIwLjkgMTEwLjQgMTEwLjQgMCAxIDEgMCAyMjAuOXoiXX0sWEV0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6Indpa2lwZWRpYS13IixpY29uOls2NDAsNTEyLFtdLCJmMjY2IiwiTTY0MCA1MS4ybC0uMyAxMi4yYy0yOC4xIC44LTQ1IDE1LjgtNTUuOCA0MC4zLTI1IDU3LjgtMTAzLjMgMjQwLTE1NS4zIDM1OC42bC0xMy42IDAtODEuOS0xOTMuMWMtMzIuNSA2My42LTY4LjMgMTMwLTk5LjIgMTkzLjEtLjMgLjMtMTUgMC0xNS0uMy00Ni45LTEwOS43LTk2LjEtMjE4LjYtMTQzLjEtMzI4LjYtMTEuNC0yNi43LTQ5LjQtNzAtNzUuNi02OS43IDAtMy4xLS4zLTEwLS4zLTE0LjJsMTYxLjkgMCAwIDEzLjljLTE5LjIgMS4xLTUyLjggMTMuMy00My4zIDM0LjIgMjEuOSA0OS43IDEwMy42IDI0MC4zIDEyNS42IDI4OC42IDE1LTI5LjcgNTcuOC0xMDkuMiA3NS4zLTE0Mi44LTEzLjktMjguMy01OC42LTEzMy45LTcyLjgtMTYwLTkuNy0xNy44LTM2LjEtMTkuNC01NS44LTE5LjdsMC0xMy45IDE0Mi41IC4zIDAgMTMuMWMtMTkuNCAuNi0zOC4xIDcuOC0yOS40IDI2LjEgMTguOSA0MCAzMC42IDY4LjEgNDguMSAxMDQuNyA1LjYtMTAuOCAzNC43LTY5LjQgNDguMS0xMDAuOCA4LjktMjAuNi0zLjktMjguNi0zOC42LTI5LjQgLjMtMy42IDAtMTAuMyAuMy0xMy42IDQ0LjQtLjMgMTExLjEtLjMgMTIzLjEtLjZsMCAxMy42QzQ2Mi40IDY0IDQzOS4xIDc2IDQyNi44IDk0LjlMMzY3LjYgMjE3LjdjNi40IDE2LjEgNjMuMyAxNDIuOCA2OS4yIDE1Ni43TDU1OS4yIDkxLjhjLTguNi0yMy4xLTM2LjQtMjguMS00Ny4yLTI4LjNsMC0xMy45IDEyNy44IDEuMSAuMiAuNXoiXX0sUUV0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNpdHJveCIsaWNvbjpbNDQ4LDUxMixbXSwiZTQ0YSIsIk0yMTIuNCAwbDAgMCAyMzUuNiAwIDAgMTI4LTM4NCAwQzY0IDU3LjYgMTQxLjggLjUgMjEyLjQgMHptMjQuOCAxOTJsMCAwYzY5LjkgLjUgMTQ2LjcgNTcuNiAxNDYuNyAxMjhsLTE3My4yIDAgMCAwQzE0MC45IDMxOS42IDY0IDI2Mi40IDY0IDE5MmwxNzMuMyAwem0tMS43IDMyMGM3MC43LS41IDE0OC40LTU3LjYgMTQ4LjQtMTI4bC0zODQgMCAwIDEyOCAyMzUuNiAwIDAgMHoiXX0sUThlPXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNxdWFyZS1naXRsYWIiLGljb246WzQ0OCw1MTIsWyJnaXRsYWItc3F1YXJlIl0sImU1YWUiLCJNMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2em0zMzcuNSAxMi41bDQ0LjYgMTE2LjQgLjQgMS4yYzUuNiAxNi44IDcuMiAzNS4yIDIuMyA1Mi41LTUgMTcuMi0xNS40IDMyLjQtMjkuOCA0My4zbC0uMiAuMS02OC40IDUxLjItNTQuMSA0MC45Yy0uNSAuMi0xLjEgLjUtMS43IC44LTIgMS00LjQgMi02LjcgMi0zIDAtNi44LTEuOC04LjMtMi44bC01NC4yLTQwLjktNjcuOS01MC45LS40LS4zLS4yLS4xYy0xNC4zLTEwLjgtMjQuOC0yNi0yOS43LTQzLjNzLTQuMi0zNS43IDIuMi01Mi41bC41LTEuMiA0NC43LTExNi40Yy45LTIuMyAyLjUtNC4zIDQuNS01LjYgMS42LTEgMy40LTEuNiA1LjItMS44IDEuMy0uNyAyLjEtLjQgMy40IC4xIC42IC4yIDEuMiAuNSAyIC43IDEgLjQgMS42IC45IDIuNCAxLjUgLjYgLjQgMS4yIDEgMi4xIDEuNSAxLjIgMS40IDIuMiAzIDIuNyA0LjhsMjkuMiA5Mi4yIDEyMi45IDAgMzAuMi05Mi4yYy41LTEuOCAxLjQtMy40IDIuNi00LjhzMi44LTIuNCA0LjUtMy4xYzEuNy0uNiAzLjYtLjkgNS40LS43czMuNiAuOCA1LjIgMS44YzIgMS4zIDMuNyAzLjMgNC42IDUuNnoiXX0sSkV0PVE4ZSxlUHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToic2hvZWxhY2UiLGljb246WzUxMiw1MTIsW10sImU2MGMiLCJNNDA1LjIgMzMxYzIuMi0xLjEgNC40LTIuMyA2LjUtMy43bDguMy00LjhjMS41LTEuMSA0LjQtMy40IDguNy02LjdsLjUtLjVjMy40LTMuNCA3LjItNSAxMS4zLTQuOSAxLjggMCAzLjkgLjUgNi40IDEuNWwzMS0yNy41Yy45LS43IDEuNy0xLjMgMi42LTEuOGwuMiAwYzMuMy0xLjkgNi0xLjggOC4yIC40IDMuOSAyLjEgNC4yIDUuNiAuOSAxMC42TDQ1Ny4yIDMyMmMuMiAuNSAuNCAxIC40IDEuNSAuNSAyLjIgLjMgNC40LS41IDYuNi0uNyAxLjUtMS44IDIuOS0zLjEgNC4yLTEuNCAxLjQtMi43IDIuOC00LjIgNC4yTDQzMSAzNTIuMmMtMS43IDEuMi0zLjQgMi4zLTUuMSAzLjMtMi4xIDEuMy00LjMgMi41LTYuNiAzLjYtMSAuNC0xLjkgLjktMi45IDEuMy01LjkgMi41LTExLjkgNC4yLTE4LjIgNS0yLjkgMjQuNS0xMS4zIDQ3LjEtMjUuMSA2Ny44LTE3LjUgMjUuNy00MS40IDQ1LjQtNzEuOCA1OC44LTMwLjIgMTMuNS02MyAyMC4yLTk4LjIgMjAuMi00OC42LS41LTg4LTExLjQtMTE4LjItMzIuOC0zNS4xLTI1LTUyLjYtNTcuOS01Mi42LTk5LjFsMC01LjZjMS4yLTI4LjEgOS41LTU0LjYgMjQuOC03OS44IDE1LjEtMjQuOSAzNy4xLTQxLjcgNjYuMS01MC41IDE0LjktNC40IDI5LjktNi42IDQ1LTYuNiAxNS41IDAgMzEuNiAyLjkgNDguMSA4LjZzMzUuMiAxNS41IDU1LjkgMjkuNWw1NC4xIDM2LjNjMTUuMSA5LjggMjguOCAxNi41IDQxLjIgMjAtMi42LTI1LjEtMTEuNy00Ni42LTI3LjMtNjQuNS0xNS43LTE4LjEtMzUuNi0zMS4zLTU5LjktMzkuN0wyNTcgMjIwYy0yMS40LTcuNS0zNy4zLTE0LjktNDcuNy0yMi4yLTI4LjItMTkuMS00My44LTQ1LjItNDctNzguNWwtLjUtOS44YzAtMzIuMSAxMy01OC45IDM5LTgwLjUgMjMtMTkuMyA1MC42LTI5IDgyLjUtMjkgMjQgMCA0NS42IDYuOSA2NC43IDIwLjggMTkuMiAxNCAzMC4xIDMzLjggMzIuNiA1OS40bC41IDEwYzAgMTguNi00LjggMzQuNS0xNC40IDQ3LjctOS44IDEzLjItMTguNSAxOS45LTI2IDE5LjktMS42LS4xLTMuMS0uMy00LjUtLjZsLTM0IDMyYy01LjUgMy05LjIgMi41LTExLjEtMS42LTEuOS0yLjItMS44LTQuOSAuNS04LjJsLjItLjJjLjUtLjcgMS4yLTEuNSAyLTIuNGwzMS42LTMwYy0uNC0xLjUtLjYtMy4xLS42LTQuOCAwLTQuMSAxLjYtNy42IDQuOS0xMC40IDEzLjgtMTIuNCAyMC44LTI2LjcgMjAuOC00Mi44IDAtMTYtNi4xLTI5LjUtMTguMi00MC40cy0yOC43LTE2LjUtNDkuNy0xNi44Yy0yNi4yIDAtNDcuOCA3LjktNjQuNyAyMy43UzE5Mi42IDg5LjkgMTkyLjYgMTEyYzAgMTcuOCA2LjkgMzMuOSAyMC42IDQ4LjMgMTMuNiAxNC4yIDM0LjYgMjUuNCA2MyAzMy41IDM5LjggMTEuNSA3MC4yIDMxIDkxLjMgNTguMyAxOC43IDI0LjIgMjkuMSA1MS4zIDMxLjMgODEuNCAyLjItLjcgNC4zLTEuNSA2LjUtMi42bC0uMSAuMXpNMjk0LjQgMTc4LjdjMCAxLjEgLjYgMS42IDEuOCAxLjYgLjEgMCA5LjctOC45IDI4LjgtMjYuNiAwLTIuNC01LjEgLjktMTUuMyAxMC0xMC4yIDkuMi0xNS4zIDE0LjItMTUuMyAxNC45bDAgLjF6bTggNi40YzAtMS0uNS0xLjUtMS41LTEuNS0xLjEgMC0yLjEgLjUtMi45IDEuNi0xLjktLjEtMy4zIC4xLTQuMiAuNy0uNCAuMi0uNSAuNS0uNSAuNyAwIC43IC41IDEuMyAxLjUgMS42bDMuMyAwYzIuOS0xLjEgNC40LTIuMiA0LjQtMy4zbC0uMSAuMnpNMzI1IDE2NS4yYzAtMi44LTEuNi0yLjgtNC45IDAtMS42IDEuNS0zLjYgMy41LTYgNi4yLS44IC42LTIuNiAyLjItNS4zIDQuOS0yLjggMi45LTQuMiA0LjctNC4yIDUuM2wuMiAxLjNjLjcgLjIgMS4yIC40IDEuNSAuNCAuMSAwIDMuMy0yLjkgOS41LTguN3M5LjMtOC45IDkuMy05LjNsLS4xLS4xem0xNTkuNyAxMjBsLTMwLjYgMjdjMS44IDEgMy4yIDIuNCA0IDQuMmwzMC4yLTI3Yy4yLTEuMiAuMS0yLjItLjUtMi45LS42LS41LTEuNi0uOS0zLjEtMS4zem0tMS42LS45bC0uNy0uNy0yNyAyMS45IDEuNiAyIDI2LTIzLjEgLjEtLjF6TTM2Ni45IDM2My45Yy04LTIuMS0xNS40LTQuNi0yMi4yLTcuNS0xNS4zLTYuMi0zNC4zLTE3LTU3LTMyLjRsLTM3LjQtMjUuM2MtMTUuOC0xMC4xLTMwLjItMTcuNi00My4yLTIyLjYtMTMuMS00LjktMjYtNy4zLTM4LjYtNy4zbC01LjUgMGMtMzIuMiAxLjctNTcuMiAxMy44LTc1IDM2LjItMTYuNiAyMC44LTI1IDQ1LjMtMjUgNzMuNiAwIDMxLjggMTIuOCA1Ni43IDM4LjIgNzQuNyAyNS40IDE4LjEgNjAuMiAyNy4xIDEwNC40IDI3LjEgMzQuNyAwIDY0LTYuMiA4Ny44LTE4LjYgMjMuNy0xMi40IDQyLjEtMjguOCA1NS4yLTQ5LjIgOS44LTE1LjUgMTUuOS0zMS44IDE4LjItNDguOGwuMSAuMXoiXX0sdFB0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6Im9wZW5zdHJlZXRtYXAiLGljb246WzUxMiw1MTIsW10sImU4NmIiLCJNNjEgNDk4LjdjLTcuMS0xLjgtMTAuOC00LjctMjkuNi0yMy42LTIyLjUtMjIuNC0yMy45LTI0LjYtMjMuOS0zNi4zIDAtMTMtMy45LTguNCA2Ny45LTgwLjMgNzIuNS03Mi43IDY4LjctNjkuNSA4MS45LTY5LjUgNi4xIDAgNy42IC40IDEyLjUgMi44bDUuNiAyLjhjMTEuNy0xMS43IDIzLjQtMjMuNCAzNS4xLTM1LjFsLTQuNC02LjljLTguNi0xMy4zLTE2LjYtMzIuOC0yMC4zLTQ4LjktMTAuMi00NS40IC44LTkzLjMgMjkuOC0xMjkuNyA1MC4xLTYyLjggMTQwLjEtNzYuNyAyMDYuNi0zMiAzNi41IDI0LjUgNjAuMyA2Mi41IDY3IDEwNyAxLjQgOS40IDEuNCAzMS44IDAgNDEuOC00LjkgMzQuNi0xOS43IDY0LTQ0LjQgODguNy0xMi43IDEyLjctMjMgMjAuMS0zOS4yIDI4LjItMTkuMyA5LjctMzUuNyAxNC4zLTU4IDE2LjEtMzEuNyAyLjYtNjYuOS02LjEtOTMuOC0yMy40bC02LjktNC40Yy0xMS43IDExLjctMjMuNCAyMy40LTM1LjEgMzUuMWwyLjggNS42YzIuNSA0LjkgMi44IDYuNCAyLjggMTIuNSAwIDEzLjEgMy4xIDkuNC02OSA4MS41LTU1LjYgNTUuNS02NC4xIDYzLjctNjguNCA2NS43LTUuNSAyLjUtMTMuOSAzLjQtMTkgMi4xek0zNTkuNCAyOTYuOWM0MC4xLTcuMyA3NS4xLTM0IDkyLjctNzAuNyAyOC01OC40IDkuMi0xMjctNDQuOC0xNjMuMy0xMi45LTguNy0zMC44LTE2LTQ3LjctMTkuNC0xMS43LTIuNC0zNi40LTIuMS00OC42IC41LTE4LjIgMy45LTM0LjkgMTEuMS00OS40IDIxLjQtOC45IDYuNC0yMy43IDIxLjEtMjkuOSAyOS45LTM0LjYgNDktMzEuNSAxMTQuMSA3LjcgMTU5LjMgMjAuMSAyMy4yIDQ3LjggMzguNCA3OC42IDQzIDEwLjIgMS41IDMxIDEuMiA0MS41LS44em0tMzUuNS0xNy40Yy0xMy44LTIuMi0yNS42LTUuNy0zNS4xLTEwLjVsLTUuNC0yLjcgMC00OS45LTkuNSAwYy04LjIgMC0xOS41IDEuNi0yNy43IDQtMS4xIC4zLTEuNSAxLjYtMS43IDQuOGwtLjMgNC40LTQuMS03LjhjLTktMTcuMi0xMi4yLTMwLjctMTIuMi01MS40IDAtMTYgMS4xLTIzLjQgNS42LTM2LjMgMi40LTYuOCA4LjItMTguOSAxMC44LTIyLjMgMS4xLTEuNSAxLjItMS4xIDEuMyAzLjNsMCA1YzE4LjgtLjIgMzcuNi0uMyA1Ni40LS41IC4yLTQuNyAuMy05LjUgLjUtMTQuMmwtMTkgMCAwLTMxIDMuNC0xLjdjNS42LTIuOCAxNS45LTYuNyAyMS43LTguMiAzLS44IDYuMS0xLjYgNi45LTEuOCAxLjItLjQgMS4zIC4xIC43IDMuMy0xLjIgNi4xLS45IDIzIC41IDI5IDIuOCAxMS45IDkuOCAyMC43IDE5LjIgMjQuMyA1LjYgMi4xIDE2LjMgMi42IDIyLjUgLjkgNS45LTEuNiAxMi41LTYuNCAxNS45LTExLjUgNS03LjUgNi43LTE0LjEgNy4yLTI3LjFsLjQtMTEuNCA3IDMuNmM4IDQuMiAxNy44IDExLjIgMjQuOSAxOCA0LjggNC42IDUgNC44IDUgOS4ybDAgNC41LTE4LjkgMCAwIDE0LjYgMzUgMGMxLjMgMi42IDIuNSA1LjIgMy44IDcuN2wtOS43IDBjLTYuNyAwLTEyLjcgLjYtMTkuNCAxLjlsLTkuNyAxLjkgMCA3LjFjMCAzLjkgLjIgNy4xIC4zIDcuMXM0LjEtLjggOC43LTEuNyA4LjctMS43IDkuMS0xLjdjLjQgMCAuOCAxMS4zIC44IDI1LjhsMCAyNS44Yy02LjIgLjItMTIuMyAuMy0xOC41IC41LS4yIDQuNy0uMyA5LjQtLjUgMTQuMiAxMy41IC4yIDI3IC4zIDQwLjQgLjUtMSAyLjMtMiA0LjUtMyA2LjhsLTEwLjcgLjFjLTkuOSAuMS0xMS4xIC4yLTE1LjYgMi41LTExLjggNS44LTE4LjEgMTguOS0xOC4zIDM3LjlsLS4xIDkuMy01LjggM2MtNSAyLjYtMjIuNiA5LTI0LjkgOS0uNSAwLS44LTEyLS44LTMwLjZsMC0zMC42LTkuNCAwYy02IDAtMTIuNCAuNi0xNy45IDEuNy0xMi42IDIuNi0xMS41IDEuNy0xMS41IDkuNSAwIDUgLjMgNi44IDEuMSA2LjggLjYgMCA0LjYtLjggOC44LTEuN3M4LTEuNyA4LjMtMS43IC42IDExIC42IDI0LjVsMCAyNC41LTcuNS0uMWMtNC4xLS4xLTguNS0uMy05LjctLjV6bS0zOS40LTcxLjZjOC45LTMuOSAxNS42LTEyLjkgMTguMy0yNC40IDEuNi02LjkgMS43LTIyLjYgMC0zMC4yLTIuNS0xMi05LjYtMjEuMS0xOS4zLTI0LjgtNi45LTIuNi0xOC40LTIuNi0yNS4zIDAtOS43IDMuNy0xNi40IDEyLjgtMTkuMiAyNS42LTEuNiA3LjUtMS42IDIxLjQgMCAyOC45IDIuNiAxMi41IDEwLjUgMjIuMyAyMC42IDI1LjYgNyAyLjMgMTguOSAyIDI0LjktLjd6bS0xOS45LTE0LjVjLTMuNS0zLTUuMi04LjktNS44LTIwLjYtLjYtMTAuNSAuNi0yMS4zIDIuOS0yNiAyLTQuMyA1LjgtNi40IDEwLjQtNiA3LjQgLjggMTAuMyA2LjUgMTEuMSAyMi41IC45IDE2LjctMS45IDI4LjktNyAzMS4zLTMuOSAxLjgtOC42IDEuMy0xMS42LTEuMnptOTQuOSAxNS4xYzE1LTQuNiAyMi44LTIwLjEgMjEuOS00My41LS44LTE5LjktNy45LTMyLjEtMjEuNS0zNy4yLTUuNy0yLjEtMTgtMS44LTI0IC41LTkuNiAzLjctMTYuNCAxMi40LTE5LjMgMjQuNy0yIDguNi0xLjMgMjggMS4zIDM1LjIgNCAxMS4zIDExLjYgMTguNyAyMS40IDIxIDUuOCAxLjQgMTQuNCAxIDIwLjMtLjh6bS0xNi43LTE0LjJjLTUtMi43LTcuMy0xMy4yLTYuNS0zMC4xIC42LTEyLjggMS41LTE2LjcgNC44LTIwLjQgNC43LTUuMyAxMy42LTMuOCAxNi43IDIuOCAzLjQgNy4zIDQgMzAuMSAxIDQwLjItMS43IDUuNy01LjIgOC44LTEwLjEgOC43LTIgMC00LjYtLjYtNS44LTEuM3ptLTg1LjIgNTEuNWMtNy4zLTcuNi05LjktMTEuNC04LjQtMTEuOSAyLjktLjkgMTMuOS0zLjEgMTQuMi0yLjggLjIgLjIgLjIgNC45IC4xIDEwLjRsLS4yIDEwLjEtNS42LTUuOXptMTU2LjQtMS4yYy43LTYgMy4xLTExLjUgNS43LTEzLjIgMi45LTEuOCA2LjQtMi42IDgtMS43IDEuMiAuNyAuOSAxLjUtMi40IDUuOS0yLjEgMi44LTUuNiA3LTcuOCA5LjRsLTQgNC4zIC41LTQuN3pNNDM4LjQgMTYxbC4xLTMyLjkgMi42IDcuN2M1LjEgMTUuMyA2LjkgMzEuOCA1LjEgNDYuNi0xLjQgMTEuNi0xLjQgMTEuNS00LjkgMTEuNWwtMyAwIC4xLTMyLjl6TTM0NCAxMDYuMmMtMi42LTEtNS4zLTQuOC02LjUtOS0xLjItNC0xLjUtMjguNS0uNC0zMy41IC42LTMgLjktMy4yIDMuOC0zLjIgNi4yIDAgMTguMyAyIDE4LjcgMy4xIC4yIC42IC43IDQuOSAxIDkuNSAuNyA5LjctLjcgMjMuMi0yLjggMjcuNi0yLjQgNS4xLTguNSA3LjUtMTMuNyA1LjN6bS05NC4zLTIuNGMuNC0uOCAzLjctNC42IDcuMy04LjRsNi41LTYuOWMwIDUuNiAwIDExLjIgLjEgMTYuOGwtNy4zIDBjLTYuNyAwLTcuMy0uMS02LjUtMS41em0zNC40IDM0MS43Yy0yNC02LjktNDMuOS0xMi45LTQ0LjItMTMuMS0uNS0uNiAyNC4zLTg4LjUgMjUuMy04OS42IC41LS41IDg1LjQgMjMuMyA4OC45IDI0LjkgMS4yIC42LS4xIDUuOC0xMC42IDQyLjQtNi42IDIzLTEyLjQgNDMuMi0xMi44IDQ1cy0xLjQgMy4yLTEuOSAzLjEtMjAuNy01LjgtNDQuNy0xMi43ek0zNDIuOCA0NTZjMC0xLjEgMjQuNy04Ny4zIDI1LjEtODcuNiAuOS0uNyA4Ny4xLTI0LjcgODcuNC0yNC40IC40IC40LTI0LjEgODcuMy0yNC43IDg3LjktLjQgLjMtODMuMiAyNC04NS44IDI0LjUtMS4xIC4yLTEuOSAuMS0xLjktLjR6TTE5OS42IDQxNy41YzE3LTE3LjEgMzIuMi0zMi43IDMzLjctMzQuNyAzLjQtNC41IDguMi0xNC44IDkuNS0yMC41IC41LTIuNCAxLjEtNy4xIDEuMi0xMC41bC4yLTYuMiAzLjctMWMyLS42IDMuOC0uOSA0LS43IC41IC41LTI0LjMgODctMjUuMSA4Ny44LS40IC4zLTEzLjYgNC4zLTI5LjQgOC44bC0yOC43IDguMiAzMS0zMS4xem0xNjYuOS02MS42Yy0uMi0uMy0uNy0yLTEuMi0zLjdsLS45LTMuMiAzLjItLjVjMjctNC42IDU1LjktMTcuMyA3OC43LTM0LjUgMy4zLTIuNSA1LjEtMy40IDUuMy0yLjcgMS4xIDMuMyA1LjUgMTkuMSA1LjQgMTkuMy0uNyAuNy05MC4yIDI1LjgtOTAuNSAyNS40ek02Mi45IDMyOS44Yy0xLS44LTIzLjgtNzcuOS0yNS41LTg2LjQtLjMtMS43IDMtLjkgNDMuOCAxMC44IDQyLjcgMTIuMiA0NC4yIDEyLjcgNDQuOCAxNC45IC41IDIgLjIgMi42LTIuNSA0LjUtMS43IDEuMi0xNS41IDE0LjYtMzAuNyAyOS44cy0yNy44IDI3LjYtMjggMjcuNi0xLjEtLjUtMS44LTEuMXptMTYuNS04OC4yYy0yMy45LTYuOS00My41LTEyLjYtNDMuNi0xMi42LS4zLS4yIDI1LjMtODkuMyAyNS45LTg5LjggLjQtLjQgODkuMSAyNC40IDkwIDI1LjIgLjIgLjItNS40IDIwLjUtMTIuNCA0NS4xLTExLjYgNDAuNy0xMi45IDQ0LjgtMTQuNSA0NC43LTEgMC0yMS4zLTUuNy00NS4yLTEyLjZ6bTU5LjYgMTAuOGMuMi0uNiA0LjMtMTQuNSA4LjktMzAuOWw4LjUtMjkuNyAxLjEgNi41YzEuOSAxMS4yIDUuMyAyMy45IDkuMyAzNS4xIDIuMSA1LjkgMy44IDEwLjkgMy42IDExcy02LjcgMi0xNC41IDQuMy0xNC45IDQuMi0xNS44IDQuNWMtMS4xIC4zLTEuNSAuMS0xLjItLjd6TTEwNiAxMzkuMWMtMjMuOS02LjktNDMuNy0xMi44LTQzLjktMTMuMi0uOC0xLjMtMjUuMS04Ny0yNC43LTg3LjQgLjUtLjUgODYuOCAyNC4zIDg3LjYgMjUuMSAuOSAxIDI1LjggODguMiAyNS4xIDg4LS4zIDAtMjAuMS01LjctNDQtMTIuNnptNDMuMi0zNC41QzEzNi41IDYwIDEzOSA2OC44IDEzNy4yIDYyLjVsMzQuMS05LjdjMTguOC01LjQgMzQuNy05LjkgMzUuNC0xMC4ycy0xLjYgMi44LTUuMiA2LjhjLTE5LjEgMjEuMy0zMS41IDQ0LTM5LjQgNzEuOS0xLjUgNS4yLTIuNyAxMC4zLTIuNyAxMS4zIDAgNS45LTIuMy0uNS0xMC4yLTI4eiJdfSxhUHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToic2VsbGNhc3QiLGljb246WzQ0OCw1MTIsW10sImYyZGEiLCJNMzUzLjUgMzJMOTQuOCAzMkM0Mi43IDMyIC4xIDc0LjYgLjEgMTI2LjZsMCAyNTguN0MuMSA0MzcuNCA0Mi43IDQ4MCA5NC44IDQ4MGwyNTguNyAwYzUyLjEgMCA5NC43LTQyLjYgOTQuNy05NC42bDAtMjU4LjhjMC01Mi00Mi42LTk0LjYtOTQuNy05NC42em0tNTAgMzE2LjRjLTI3LjkgNDguMi04OS45IDY0LjktMTM4LjIgMzcuMi0yMi45IDM5LjgtNTQuOSA4LjYtNDIuMy0xMy4ybDE1LjctMjcuMmM1LjktMTAuMyAxOS4yLTEzLjkgMjkuNS03LjkgMTguNiAxMC44LS4xLS4xIDE4LjUgMTAuNyAyNy42IDE1LjkgNjMuNCA2LjMgNzkuNC0yMS4zIDE1LjktMjcuNiA2LjMtNjMuNC0yMS4zLTc5LjQtMTcuOC0xMC4yLS42LS40LTE4LjYtMTAuNi0yNC42LTE0LjItMy40LTUxLjkgMjEuNi0zNy41IDE4LjYgMTAuOC0uMS0uMSAxOC41IDEwLjcgNDguNCAyOCA2NS4xIDkwLjMgMzcuMiAxMzguNXptMjEuOC0yMDguOGMtMTcgMjkuNS0xNi4zIDI4LjgtMTkgMzEuNS02LjUgNi41LTE2LjMgOC43LTI2LjUgMy42LTE4LjYtMTAuOCAuMSAuMS0xOC41LTEwLjctMjcuNi0xNS45LTYzLjQtNi4zLTc5LjQgMjEuM3MtNi4zIDYzLjQgMjEuMyA3OS40YzAgMCAxOC41IDEwLjYgMTguNiAxMC42IDI0LjYgMTQuMiAzLjQgNTEuOS0yMS42IDM3LjUtMTguNi0xMC44IC4xIC4xLTE4LjUtMTAuNy00OC4yLTI3LjgtNjQuOS05MC4xLTM3LjEtMTM4LjQgMjcuOS00OC4yIDg5LjktNjQuOSAxMzguMi0zNy4ybDQuOC04LjRjMTQuMy0yNC45IDUyLTMuMyAzNy43IDIxLjV6Il19LHNQdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJtaXgiLGljb246WzQ0OCw1MTIsW10sImYzY2IiLCJNMCA2NEwwIDQxMi45YzAgNTYuMiA4OCA1OC4xIDg4IDBsMC0yMzguNmM3LjktNTIuOSA4OC01MC40IDg4IDYuNWwwIDE3NS4zYzAgNTcuOSA5NiA1OCA5NiAwTDI3MiAyNDBjNS4zLTU0LjcgODgtNTIuNSA4OCA0LjNsMCAyMy44YzAgNTkuOSA4OCA1Ni42IDg4IDBMNDQ4IDY0IDAgNjR6Il19LGlQdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJjYy1hcHBsZS1wYXkiLGljb246WzU3Niw1MTIsW10sImY0MTYiLCJNMzAyLjIgMjE4LjRjMCAxNy4yLTEwLjUgMjcuMS0yOSAyNy4xbC0yNC4zIDAgMC01NC4yIDI0LjQgMGMxOC40IDAgMjguOSA5LjggMjguOSAyNy4xek0zNDkuNyAyODFjMCA4LjMgNy4yIDEzLjcgMTguNSAxMy43IDE0LjQgMCAyNS4yLTkuMSAyNS4yLTIxLjlsMC03LjctMjMuNSAxLjVjLTEzLjMgLjktMjAuMiA1LjgtMjAuMiAxNC40ek01NzYgNzlsMCAzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNDc5Yy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDc5QzAgNTIuNSAyMS41IDMxIDQ4IDMxbDQ4MCAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4ek0xMjcuOCAxOTcuMmM4LjQgLjcgMTYuOC00LjIgMjIuMS0xMC40IDUuMi02LjQgOC42LTE1IDcuNy0yMy43LTcuNCAuMy0xNi42IDQuOS0yMS45IDExLjMtNC44IDUuNS04LjkgMTQuNC03LjkgMjIuOHptNjAuNiA3NC41Yy0uMi0uMi0xOS42LTcuNi0xOS44LTMwLS4yLTE4LjcgMTUuMy0yNy43IDE2LTI4LjItOC44LTEzLTIyLjQtMTQuNC0yNy4xLTE0LjctMTIuMi0uNy0yMi42IDYuOS0yOC40IDYuOS01LjkgMC0xNC43LTYuNi0yNC4zLTYuNC0xMi41IC4yLTI0LjIgNy4zLTMwLjUgMTguNi0xMy4xIDIyLjYtMy40IDU2IDkuMyA3NC40IDYuMiA5LjEgMTMuNyAxOS4xIDIzLjUgMTguNyA5LjMtLjQgMTMtNiAyNC4yLTYgMTEuMyAwIDE0LjUgNiAyNC4zIDUuOSAxMC4yLS4yIDE2LjUtOS4xIDIyLjgtMTguMiA2LjktMTAuNCA5LjgtMjAuNCAxMC0yMXptMTM1LjQtNTMuNGMwLTI2LjYtMTguNS00NC44LTQ0LjktNDQuOGwtNTEuMiAwIDAgMTM2LjQgMjEuMiAwIDAtNDYuNiAyOS4zIDBjMjYuOCAwIDQ1LjYtMTguNCA0NS42LTQ1em05MCAyMy43YzAtMTkuNy0xNS44LTMyLjQtNDAtMzIuNC0yMi41IDAtMzkuMSAxMi45LTM5LjcgMzAuNWwxOS4xIDBjMS42LTguNCA5LjQtMTMuOSAyMC0xMy45IDEzIDAgMjAuMiA2IDIwLjIgMTcuMmwwIDcuNS0yNi40IDEuNmMtMjQuNiAxLjUtMzcuOSAxMS42LTM3LjkgMjkuMSAwIDE3LjcgMTMuNyAyOS40IDMzLjQgMjkuNCAxMy4zIDAgMjUuNi02LjcgMzEuMi0xNy40bC40IDAgMCAxNi40IDE5LjYgMCAwLTY4IC4xIDB6TTUxNiAyMTAuOWwtMjEuNSAwLTI0LjkgODAuNi0uNCAwLTI0LjktODAuNi0yMi4zIDAgMzUuOSA5OS4zLTEuOSA2Yy0zLjIgMTAuMi04LjUgMTQuMi0xNy45IDE0LjItMS43IDAtNC45LS4yLTYuMi0uM2wwIDE2LjRjMS4yIC40IDYuNSAuNSA4LjEgLjUgMjAuNyAwIDMwLjQtNy45IDM4LjktMzEuOEw1MTYgMjEwLjl6Il19LHJQdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzb2xhbmEiLGljb246WzUxMiw1MTIsW10sImU4NWUiLCJNNTEwLjUgMzg1LjJsLTg0LjkgODguN2MtMS44IDEuOS00LjEgMy41LTYuNiA0LjVzLTUuMiAxLjYtNy45IDEuNkw4LjkgNDgwYy0xLjkgMC0zLjgtLjUtNS40LTEuNnMtMi45LTIuNS0zLjYtNC4yLTEtMy42LS43LTUuNSAxLjItMy42IDIuNS00LjlsODQuOS04OC43YzEuOC0xLjkgNC4xLTMuNSA2LjUtNC41czUuMS0xLjYgNy44LTEuNmw0MDIuNCAwYzEuOSAwIDMuOCAuNSA1LjQgMS42czIuOSAyLjUgMy42IDQuMiAxIDMuNiAuNyA1LjUtMS4yIDMuNi0yLjUgNC45ek00MjUuNyAyMDYuNmMtMS44LTEuOS00LjEtMy41LTYuNi00LjVzLTUuMi0xLjYtNy45LTEuNmwtNDAyLjQgMGMtMS45IDAtMy44IC41LTUuNCAxLjZzLTIuOSAyLjUtMy42IDQuMi0xIDMuNi0uNyA1LjUgMS4yIDMuNiAyLjUgNC45bDg0LjkgODguN2MxLjggMS45IDQuMSAzLjUgNi41IDQuNXM1LjEgMS42IDcuOCAxLjZsNDAyLjQgMGMxLjkgMCAzLjgtLjUgNS40LTEuNnMyLjktMi41IDMuNi00LjIgMS0zLjYgLjctNS41LTEuMi0zLjYtMi41LTQuOWwtODQuOS04OC43ek04LjkgMTQyLjlsNDAyLjQgMGMyLjcgMCA1LjQtLjUgNy45LTEuNnM0LjctMi42IDYuNi00LjVsODQuOS04OC43YzEuMy0xLjQgMi4yLTMuMSAyLjUtNC45cy4xLTMuNy0uNy01LjUtMi0zLjItMy42LTQuMi0zLjUtMS42LTUuNC0xLjZMMTAxIDMyYy0yLjcgMC01LjQgLjUtNy44IDEuNnMtNC43IDIuNi02LjUgNC41TDEuNyAxMjYuOGMtMS4zIDEuNC0yLjIgMy4xLTIuNSA0LjlzLS4xIDMuNyAuNyA1LjUgMiAzLjIgMy42IDQuMiAzLjUgMS42IDUuNCAxLjZ6Il19LG9QdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ0eXBlc2NyaXB0IixpY29uOls0NDgsNTEyLFtdLCJlODQwIiwiTTE2LjggMzJsNDE0LjQgMGM5LjMgMCAxNi44IDcuNSAxNi44IDE2LjhsMCA0MTQuNGMwIDkuMy03LjUgMTYuOC0xNi44IDE2LjhMMTYuOCA0ODBDNy41IDQ4MCAwIDQ3Mi41IDAgNDYzLjJMMCA0OC44QzAgMzkuNSA3LjUgMzIgMTYuOCAzMnpNMjQ5IDI3MC4zbDAtMzYuNy0xNTkuNCAwIDAgMzYuNyA1Ni45IDAgMCAxNjMuNiA0NS4zIDAgMC0xNjMuNiA1Ny4yIDB6bTE4LjEgMTU5LjNjNy4zIDMuNyAxNS45IDYuNSAyNS45IDguNHMyMC41IDIuOCAzMS41IDIuOGMxMC44IDAgMjEtMSAzMC43LTMuMXMxOC4yLTUuNCAyNS41LTEwLjEgMTMuMS0xMC45IDE3LjQtMTguNCA2LjQtMTcgNi40LTI4LjJjMC04LjEtMS4yLTE1LjItMy43LTIxLjNzLTUuOS0xMS41LTEwLjUtMTYuMy0xMC4xLTktMTYuNS0xMi44LTEzLjctNy4zLTIxLjctMTAuN2MtNS45LTIuNC0xMS4yLTQuOC0xNS45LTcuMXMtOC43LTQuNi0xMS45LTctNS44LTQuOS03LjYtNy41LTIuNy01LjctMi43LTljMC0zLjEgLjgtNS44IDIuNC04LjNzMy44LTQuNiA2LjctNi40IDYuNS0zLjEgMTAuNy00LjEgOC45LTEuNSAxNC4xLTEuNWMzLjcgMCA3LjcgLjMgMTEuOSAuOHM4LjQgMS40IDEyLjYgMi42IDguMyAyLjYgMTIuMyA0LjQgNy43IDMuOCAxMSA2LjFsMC00MS44Yy02LjgtMi42LTE0LjMtNC41LTIyLjQtNS44cy0xNy40LTEuOS0yNy45LTEuOWMtMTAuNyAwLTIwLjggMS4xLTMwLjQgMy40cy0xOCA1LjgtMjUuMiAxMC43LTEzIDExLTE3LjIgMTguNS02LjMgMTYuNS02LjMgMjYuOWMwIDEzLjMgMy45IDI0LjcgMTEuNiAzNC4xczE5LjUgMTcuNCAzNS4yIDIzLjljNi4yIDIuNSAxMS45IDUgMTcuMyA3LjRzMTAgNC45IDEzLjggNy41IDcgNS40IDkuMiA4LjUgMy40IDYuNiAzLjQgMTAuNWMwIDIuOS0uNyA1LjYtMi4xIDhzLTMuNSA0LjYtNi40IDYuNC02LjQgMy4yLTEwLjcgNC4zLTkuMyAxLjUtMTUgMS41Yy05LjcgMC0xOS40LTEuNy0yOC45LTUuMXMtMTguNC04LjUtMjYuNi0xNS4zbDAgNDQuN3oiXX0sblB0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImJyYXZlIixpY29uOls0NDgsNTEyLFtdLCJlNjNjIiwiTTE0NS42IDBsMTU3IDAgNDQuNyA1MC44czM5LjMtMTAuOSA1Ny44IDcuNiAzMy44IDM0LjkgMzMuOCAzNC45bC0xMiAyOS41IDE1LjMgNDMuN3MtNDQuOSAxNzAuMi01MC4xIDE5MWMtMTAuNCA0MC45LTE3LjQgNTYuOC00Ni45IDc3LjVzLTgyLjkgNTYuOC05MS42IDYyLjJjLTEuOSAxLjItMy45IDIuNS01LjkgMy45LTcuNSA1LjEtMTUuOCAxMC44LTIzLjUgMTAuOHMtMTYuMS01LjctMjMuNS0xMC44Yy0yLTEuNC00LTIuOC01LjktMy45LTguNy01LjUtNjIuMS00MS41LTkxLjYtNjIuMnMtMzYuNS0zNi42LTQ2LjktNzcuNWMtNS4zLTIwLjgtNTAuMS0xOTEtNTAuMS0xOTFMMjEuNSAxMjIuOCA5LjMgOTMuM3MxNS4zLTE2LjQgMzMuOC0zNC45IDU3LjgtNy42IDU3LjgtNy42TDE0NS42IDB6bTc4LjUgNDA3LjZjMy43IDAgOC45LTQuNyAxMy04LjQgLjYtLjUgMS4yLTEuMSAxLjctMS41IDQuMi0zLjcgNDcuOC0zNy41IDUxLTM5LjhzNS40LTYuNSAxLjktOC43Yy0yLjgtMS43LTEwLTUuNS0yMC4zLTEwLjgtMy0xLjYtNi4zLTMuMi05LjctNS0xNS40LTgtMzQuNS0xNC43LTM3LjUtMTQuN3MtMjIuMSA2LjgtMzcuNSAxNC43Yy0zLjUgMS44LTYuNyAzLjUtOS43IDUtMTAuMyA1LjMtMTcuNiA5LjEtMjAuMyAxMC44LTMuNiAyLjItMS40IDYuNCAxLjkgOC43czQ2LjggMzYuMSA1MSAzOS44Yy41IC41IDEuMSAxIDEuNyAxLjUgNC4xIDMuNyA5LjMgOC40IDEzIDguNGwtLjIgMHptMC0xNjUuN2M0LjcgMCAxNy42LTMgMjYuNC01bDItLjVjNy44LTEuOCA3LjMtNi4zIDYuNC0xMy0uMS0uOC0uMi0xLjYtLjMtMi40LS42LTYuMS01LjgtMzMuMS05LjEtNTAuMy0xLjEtNS44LTItMTAuNS0yLjQtMTIuOS0xLjUtOC4xLS42LTkuNCAuNy0xMS4zIC4yLS4zIC41LS43IC43LTEuMSAxLjQtMi4zIDE2LTYuMiAyNy45LTkuNSAyLjUtLjcgNC44LTEuMyA2LjktMS45IDEwLjYtMyAzMi40LS42IDQ0LjIgLjYgMS44IC4yIDMuNCAuNCA0LjcgLjUgOS42IC45IDEwLjQgMi4zIDcuMiAzLjgtMi4zIDEuMS0xNi4yIDYuMy0yOC43IDEwLjktNC43IDEuOC05LjIgMy41LTEyLjggNC44LTEuNSAuNS0zIDEuMS00LjUgMS43LTEyLjUgNC42LTI3LjIgMTAtMjguOSAxOS40LTEuNSA4LjMgNS4yIDE5LjkgMTEuMyAzMC4zIDEuNiAyLjggMy4yIDUuNSA0LjYgOC4xIDYuMyAxMS45IDYuNSAxMy4zIDYuMSAxOC4xLS40IDMuOS0xNC41IDEyLjctMjIuNCAxNy42LTEuOCAxLjEtMy4zIDIuMS00LjIgMi43LS44IC41LTIuMSAxLjQtMy44IDIuNC04LjYgNS4yLTI2LjMgMTYtMjYuMyAyMi41IDAgNy44IDI0LjYgMjguMSAzMi40IDMzLjJzMjguOSAxNi4xIDM3LjkgMTcuOCAyMy04LjUgMzEuMi0yMy44YzcuNy0xNC40IDEuNy0yOC41LTMuMi00MGwtLjktMi4yYy00LjUtMTAuNiAxLjktMTcgNi4yLTIxLjMgLjUtLjUgMS0xIDEuNC0xLjRsNDMtNDUuN2MxLjMtMS4zIDIuNS0yLjYgMy43LTMuOCA1LjgtNS43IDEwLjgtMTAuNSAxMC44LTIyLjggMC0xNC45LTU3LjUtODQuNS01Ny41LTg0LjVzLTQ4LjUgOS4zLTU1LjEgOS4zYy01LjIgMC0xNS4zLTMuNS0yNS44LTcuMS0yLjctLjktNS40LTEuOS04LTIuNy0xMy00LjMtMjEuOC00LjQtMjEuOC00LjRzLTguNyAwLTIxLjggNC40Yy0yLjcgLjktNS40IDEuOC04IDIuNy0xMC41IDMuNi0yMC42IDcuMS0yNS44IDcuMS02LjUgMC01NS4xLTkuMy01NS4xLTkuM3MtNTcuNSA2OS42LTU3LjUgODQuNWMwIDEyLjMgNC45IDE3LjEgMTAuOCAyMi44IDEuMiAxLjIgMi41IDIuNCAzLjcgMy44bDQzLjEgNDUuOGMuNCAuNSAuOSAuOSAxLjQgMS40IDQuMyA0LjMgMTAuNiAxMC43IDYuMiAyMS4zbC0uOSAyLjJjLTQuOSAxMS41LTExIDI1LjYtMy4yIDQwIDguMiAxNS4zIDIyLjIgMjUuNSAzMS4yIDIzLjhzMzAuMS0xMi43IDM3LjktMTcuOCAzMi40LTI1LjQgMzIuNC0zMy4yYzAtNi41LTE3LjctMTcuMy0yNi4zLTIyLjUtMS43LTEtMy4xLTEuOS0zLjgtMi40LS45LS42LTIuNC0xLjUtNC4yLTIuNy03LjktNC45LTIyLTEzLjctMjIuNC0xNy42LS40LTQuOC0uMy02LjIgNi4xLTE4LjEgMS4zLTIuNSAyLjktNS4zIDQuNi04LjEgNi0xMC40IDEyLjgtMjIgMTEuMy0zMC4zLTEuNy05LjQtMTYuNC0xNC44LTI4LjktMTkuNC0xLjYtLjYtMy4xLTEuMS00LjUtMS43LTMuNi0xLjQtOC4xLTMuMS0xMi44LTQuOGwtLjEgMGMtMTIuNS00LjctMjYuNC05LjktMjguNy0xMC45LTMuMi0xLjUtMi4zLTIuOCA3LjItMy44IDEuMy0uMSAyLjktLjMgNC43LS41IDExLjgtMS4zIDMzLjYtMy42IDQ0LjItLjYgMi4xIC42IDQuNCAxLjIgNi45IDEuOSAxMS45IDMuMiAyNi41IDcuMiAyNy45IDkuNSAuMiAuNCAuNSAuNyAuNyAxLjEgMS4zIDEuOSAyLjIgMy4yIC43IDExLjMtLjQgMi40LTEuMyA3LjEtMi40IDEyLjktMy4zIDE3LjItOC41IDQ0LjItOS4xIDUwLjMtLjEgLjgtLjIgMS43LS4zIDIuNC0uOCA2LjctMS40IDExLjIgNi40IDEzbDIgLjVjOC44IDIgMjEuOCA1IDI2LjQgNWwwLS4xeiJdfSxsUHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZXRzeSIsaWNvbjpbMzg0LDUxMixbXSwiZjJkNyIsIk0zODQgMzQ4Yy0xLjggMTAuNy0xMy44IDExMC0xNS41IDEzMi0xMTcuOS00LjMtMjE5LjktNC43LTM2OC41IDBsMC0yNS41YzQ1LjUtOC45IDYwLjYtOCA2MS0zNS4yIDEuOC03Mi4zIDMuNS0yNDQuMSAwLTMyMi0xLTI4LjUtMTIuMS0yNi44LTYxLTM2TDAgMzUuOGM3My45IDIuNCAyNTUuOSA4LjYgMzYzLTMuOC0zLjUgMzguMi03LjggMTI2LjUtNy44IDEyNi41bC0yMy4yIDBDMzIwLjkgMTE1LjcgMzEzLjIgNjggMjc3LjMgNjhsLTEzNyAwYy0xMC4yIDAtMTAuNyAzLjUtMTAuNyA5LjhsMCAxNjMuOGM1OCAuNSA4OC41LTIuNSA4OC41LTIuNSAyOS44LTEgMjcuNi04LjUgNDAuNy02NS4zbDI1LjggMGMtNC40IDEwMS40LTMuOSA2MS44LTEuOCAxNjAuM0wyNTcgMzM0Yy05LjItNDAuMS05LjEtNjEtMzkuNS02MS41IDAgMC0yMS41LTItODgtMmwwIDEzOWMwIDI2IDE0LjMgMzguMyA0NC4zIDM4LjNsODkuMyAwYzYzLjYgMCA2Ni42LTI1IDk4LjctOTkuOGwyMi4yIDB6Il19LGNQdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJidGMiLGljb246WzM4NCw1MTIsW10sImYxNWEiLCJNMzEwLjQgMjQyLjZjMjcuNy0xNC4yIDQ1LjQtMzkuNCA0MS4zLTgxLjMtNS40LTU3LjQtNTIuNS03Ni42LTExNC44LTgxLjlsMC03OS40LTQ4LjUgMCAwIDc3LjJjLTEyLjYgMC0yNS41IC4zLTM4LjQgLjZsMC03Ny44LTQ4LjUgMCAwIDc5LjRjLTE3LjggLjUtMzguNiAuMy05Ny40IDBsMCA1MS43YzM4LjMtLjcgNTguNC0zLjEgNjMgMjEuNGwwIDIxNy40Yy0yLjkgMTkuNS0xOC41IDE2LjctNTMuMyAxNi4xTDQgNDQzLjdjODguNSAwIDk3LjQgLjMgOTcuNCAuM2wwIDY4IDQ4LjUgMCAwLTY3LjFjMTMuMiAuMyAyNi4yIC4zIDM4LjQgLjNsMCA2Ni43IDQ4LjUgMCAwLTY4YzgxLjMtNC40IDEzNS42LTI0LjkgMTQyLjktMTAxLjUgNS43LTYxLjQtMjMuMy04OC45LTY5LjMtOTkuOXpNMTUwLjggMTM0LjZjMjcuNCAwIDExMy4xLTguNSAxMTMuMSA0OC41IDAgNTQuNS04NS43IDQ4LjItMTEzLjEgNDguMmwwLTk2Ljd6bTAgMjUxLjhsMC0xMDYuNWMzMi44IDAgMTMzLjEtOS4xIDEzMy4xIDUzLjMgMCA2MC4yLTEwMC40IDUzLjMtMTMzLjEgNTMuM3oiXX0sZFB0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImFkbiIsaWNvbjpbNTEyLDUxMixbXSwiZjE3MCIsIk0yNTYgMTY3LjVsNjQuOSA5OC44LTEyOS44IDAgNjQuOS05OC44ek04IDI1NmEyNDggMjQ4IDAgMSAxIDQ5NiAwIDI0OCAyNDggMCAxIDEgLTQ5NiAwem0zOTYuMiA4Mi43bC0xNDguMi0yMjMuMi0xNDguMiAyMjMuMiAzMC40IDAgMzMuNi01MS43IDE2OC42IDAgMzMuNiA1MS43IDMwLjIgMHoiXX0sdVB0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNxdWFyZS14LXR3aXR0ZXIiLGljb246WzQ0OCw1MTIsW10sImU2MWEiLCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMnptMjk3LjEgODRsLTEwMy44IDExOC42IDEyMi4xIDE2MS40LTk1LjYgMC03NC44LTk3LjktODUuNyA5Ny45LTQ3LjUgMCAxMTEtMTI2LjktMTE3LjEtMTUzLjEgOTggMCA2Ny43IDg5LjUgNzguMi04OS41IDQ3LjUgMHpNMzIzLjMgMzY3LjZsLTE2OS45LTIyNC43LTI4LjMgMCAxNzEuOCAyMjQuNyAyNi40IDB6Il19LHBQdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzcXVhcmUtZm9udC1hd2Vzb21lIixpY29uOls0NDgsNTEyLFtdLCJlNWFkIiwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6bTkwIDEyMmMwIDkuMy00LjggMTcuNC0xMi4xIDIybDE4OC45IDBjNy4zIDAgMTMuMiA1LjkgMTMuMiAxMy4yIDAgMS44LS40IDMuNy0xLjEgNS40TDMxMiAyNjQgMzQyLjkgMzMzLjRjLjcgMS43IDEuMSAzLjUgMS4xIDUuNCAwIDcuMy01LjkgMTMuMi0xMy4yIDEzLjJsLTE4Ni44IDAgMCAzMi0zMiAwIDAtMjA5LjVjLTYuMS00LjgtMTAtMTIuMi0xMC0yMC41IDAtMTQuNCAxMS42LTI2IDI2LTI2czI2IDExLjYgMjYgMjZ6Il19LGhQdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJmb3J1bWJlZSIsaWNvbjpbNDQ4LDUxMixbXSwiZjIxMSIsIk01LjggMzA5LjdDMiAyOTIuNyAwIDI3NS41IDAgMjU4LjMgMCAxMzUgOTkuOCAzNSAyMjMuMSAzNSAyMzkuNyAzNSAyNTYuNCAzNyAyNzIuNCA0MC41IDE0OSA4Ny41IDUxLjkgMTg2IDUuOCAzMDkuN3pNMzk4LjcgMTIwLjVjLTEzLjctMTcuNS0yOS43LTMyLjctNDcuOC00NS4zLTE0OS42IDQ0LjMtMjY2LjMgMTYyLjEtMzA5LjcgMzEyIDEyLjUgMTguMSAyOCAzNS42IDQ1LjIgNDkgNDMuMS0xNTEuMyAxNjEuMi0yNzEuNyAzMTIuMy0zMTUuN3ptMTUuOCAyNTIuN2MxNS4yLTI1LjEgMjUuNC01My43IDI5LjUtODIuOC03OS40IDQyLjktMTQ1IDExMC42LTE4Ny42IDE5MC4zIDMwLTQuNCA1OC45LTE1LjMgODQuNi0zMS4zIDM1IDEzLjEgNzAuOSAyNC4zIDEwNyAzMy42LTkuMy0zNi41LTIwLjQtNzQuNS0zMy41LTEwOS44em0yOS43LTE0NS41Yy0yLjYtMTkuNS03LjktMzguNy0xNS44LTU2LjgtMTM3LjkgNDUuOC0yNDYuNCAxNTYuNi0yOTEuMyAyOTUuMSAxOC4xIDcuNiAzNyAxMi41IDU2LjYgMTUuMiA0Ni4zLTExNC4xIDEzNi44LTIwNi44IDI1MC41LTI1My41eiJdfSxKOGU9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiNDItZ3JvdXAiLGljb246WzY0MCw1MTIsWyJpbm5vc29mdCJdLCJlMDgwIiwiTTMyMCA5NmwwIDMyMGMyMSAwIDQxLjgtNC4xIDYxLjItMTIuMnMzNy0xOS44IDUxLjktMzQuNyAyNi42LTMyLjUgMzQuNy01MS45IDEyLjItNDAuMiAxMi4yLTYxLjItNC4xLTQxLjgtMTIuMi02MS4yLTE5LjgtMzcuMS0zNC43LTUxLjktMzIuNS0yNi42LTUxLjktMzQuNy00MC4yLTEyLjItNjEuMi0xMi4yek0wIDI1NkwxNjAgNDE2IDMyMCAyNTYgMTYwIDk2IDAgMjU2em00ODAgMGMwIDIxIDQuMSA0MS44IDEyLjIgNjEuMnMxOS44IDM3IDM0LjcgNTEuOSAzMi41IDI2LjYgNTEuOSAzNC43IDQwLjIgMTIuMiA2MS4yIDEyLjJsMC0zMjBjLTQyLjQgMC04My4xIDE2LjktMTEzLjEgNDYuOVM0ODAgMjEzLjYgNDgwIDI1NnoiXX0sZlB0PUo4ZSxtUHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToic3R1bWJsZXVwb24tY2lyY2xlIixpY29uOls1MTIsNTEyLFtdLCJmMWEzIiwiTTI2NCA4YTI0OCAyNDggMCAxIDAgMCA0OTYgMjQ4IDI0OCAwIDEgMCAwLTQ5NnptMCAxNzcuNWMtOS44IDAtMTcuOCA4LTE3LjggMTcuOGwwIDEwNi45YzAgNDAuOS0zMy45IDczLjktNzQuOSA3My45LTQxLjQgMC03NC45LTMzLjUtNzQuOS03NC45bDAtNDYuNSA1Ny4zIDAgMCA0NS44YzAgMTAgOCAxNy44IDE3LjggMTcuOHMxNy44LTcuOSAxNy44LTE3LjhsMC0xMDguNGMwLTQwIDM0LjItNzIuMSA3NC43LTcyLjEgNDAuNyAwIDc0LjcgMzIuMyA3NC43IDcyLjZsMCAyMy43LTM0LjEgMTAuMS0yMi45LTEwLjcgMC0yMC42Yy4xLTkuNi03LjktMTcuNi0xNy43LTE3LjZ6TTQzMS42IDMwOS4xYzAgNDEuNC0zMy41IDc0LjktNzQuOSA3NC45LTQxLjIgMC03NC45LTMzLjItNzQuOS03NC4ybDAtNDYuOCAyMi45IDEwLjcgMzQuMS0xMC4xIDAgNDcuMWMwIDkuOCA4IDE3LjYgMTcuOCAxNy42czE3LjgtNy45IDE3LjgtMTcuNmwwLTQ4IDU3LjMgMGMtLjEgNDUuOS0uMSA0Ni40LS4xIDQ2LjR6Il19LGdQdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzeW1mb255IixpY29uOls1MTIsNTEyLFtdLCJmODNkIiwiTTI1NiA4YTI0OCAyNDggMCAxIDAgMCA0OTYgMjQ4IDI0OCAwIDEgMCAwLTQ5NnpNMzg5LjcgMTUxLjVjLTExLjUgLjQtMTkuNC02LjQtMTkuOC0xNi45LS4zLTkuMiA2LjctMTMuNCA2LjUtMTguOS0uMi02LjUtMTAuMi02LjgtMTIuOS02LjctMzkuOCAxLjMtNDguNiA1Ny01OC45IDExMy44IDIxLjQgMy4yIDM2LjYtLjcgNDUuMS02LjIgMTItNy43LTMuMy0xNS43LTEuNC0yNC42IDQtMTguMiAzMi42LTE5IDMyIDUuMy0uNCAxNy45LTI1LjkgNDEuOC03Ny42IDM1LjctMTAuOCA1OS41LTE4LjQgMTE1LTU4LjIgMTYxLjctMjkgMzQuNS01OC40IDM5LjgtNzEuNiA0MC4zLTI0LjYgLjktNDEtMTIuMy00MS42LTI5LjgtLjYtMTcgMTQuNC0yNi4zIDI0LjMtMjYuNiAyMS45LS44IDMwLjEgMjUuNyAxNC45IDM0LTEyLjEgOS43IC4xIDEyLjYgMi4xIDEyLjYgMTAuNC0uNCAxNy4zLTUuNSAyMi4yLTkgMjQtMjAgMzMuMi01NC45IDQ1LjQtMTE4LjMgOC4yLTQ5LjcgMTctNzggMTguMi04Mi0xNi45LTEyLjctMjcuMS0yOC42LTQ5LjgtMzQuNy0xNS42LTQuMi0yNS4xLS42LTMxLjggNy44LTcuOSAxMC01LjMgMjMgMi40IDMwLjdsMTIuNiAxNGMxNS41IDE3LjkgMjQgMzEuOSAyMC44IDUwLjYtNS4xIDI5LjktNDAuNyA1Mi45LTgyLjkgMzkuOS0zNi0xMS4xLTQyLjctMzYuNi0zOC40LTUwLjYgNy41LTI0LjIgNDIuNC0xMS43IDM0LjYgMTMuNi0yLjggOC42LTQuOSA4LjctNi4zIDEzLjEtNC42IDE0LjggNDEuOCAyOC40IDUxLTEuNCA0LjUtMTQuNS01LjMtMjEuNy0yMi4yLTM5LjktMjguNS0zMS43LTE2LTY1LjUgMi45LTc5LjcgNTIuOC0zOS40IDEwMC41IDE3LjUgMTEwLjYgMjUuOCAzNy4yLTEwOSAxMDAuNS0xMDUuNSAxMDIuNC0xMDUuNSAyNS4yLS44IDQ0LjIgMTAuNiA0NC44IDI4LjYgLjIgNy43LTQuMiAyMi42LTE5LjUgMjMuMXoiXX0sYlB0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNhbGVzZm9yY2UiLGljb246WzY0MCw1MTIsW10sImY4M2IiLCJNMjQ5LjQgMjQ1LjZsLTI2LjQgMGMuNy01LjIgMy4zLTE0LjEgMTMuNi0xNC4xIDYuOCAwIDEyIDMuOCAxMi43IDE0LjF6TTM4NiAyMzEuOGMtLjUgMC0xNC4xLTEuOC0xNC4xIDIwczEzLjYgMjAgMTQuMSAyMGMxMyAwIDE0LjEtMTMuNSAxNC4xLTIwIDAtMjEuOC0xMy43LTIwLTE0LjEtMjB6TTE0Mi44IDI1NS41Yy0xLjEgLjktMiAyLTIuNSAzLjJzLS44IDIuNy0uNyA0YzAgNC44IDIuMSA2LjEgMy4zIDcgNC43IDMuNyAxNS4xIDIuMSAyMC45IDFsMC0xNi45Yy01LjMtMS4xLTE2LjctMi0yMC45IDEuNnpNNjQwLjUgMjMyYzAgODcuNi04MCAxNTQuNC0xNjUuNCAxMzYuNC0xOC40IDMzLTcwLjcgNzAuOC0xMzIuMiA0MS42LTQxLjIgOTYtMTc3LjkgOTIuMi0yMTMuOC01LjItMTE5LjcgMjMuOS0xNzguOC0xMzguNC03NS4zLTE5OS4zLTM0LjgtNzkuNCAyMi42LTE3My42IDExNC4zLTE3My42IDE5LjEgMCAzNy45IDQuNCA1NSAxMi45czMyIDIwLjcgNDMuNiAzNS44YzIwLjctMjEuNCA0OS40LTM0LjggODEuMS0zNC44IDQyLjMgMCA3OSAyMy41IDk4LjggNTguNiA5Mi44LTQwLjcgMTkzLjggMjguMiAxOTMuOCAxMjcuNXpNMTIwLjkgMjYzLjhjMC0xMS44LTExLjctMTUuMi0xNy45LTE3LjItNS4zLTIuMS0xMy40LTMuNS0xMy40LTguOSAwLTkuNSAxNy02LjcgMjUuMi0yLjEgMCAwIDEuMiAuNyAxLjYtLjUgLjItLjcgMi40LTYuNiAyLjYtNy4zIC4xLS4zIC4xLS42LS4xLS44cy0uNC0uNS0uNi0uNmMtMTIuMy03LjYtNDAuNy04LjUtNDAuNyAxMi43IDAgMTIuNSAxMS41IDE1LjQgMTcuOSAxNy4yIDQuNyAxLjYgMTMuMiAzIDEzLjIgOC43IDAgNC0zLjUgNy4xLTkuMiA3LjEtNi45IDAtMTMuNS0yLjItMTktNi4zLS41LS4yLTEuNC0uNy0xLjYgLjdsLTIuNCA3LjVjLS41IC45IC4yIDEuMiAuMiAxLjQgMS44IDEuNCAxMC4zIDYuNiAyMi44IDYuNiAxMy4yIDAgMjEuNC03LjEgMjEuNC0xOC4xbDAgMHptMzItNDIuNmMtMTAuMSAwLTE4LjcgMy4yLTIxLjQgNS4yLS4xIC4xLS4yIC4yLS4zIC4zcy0uMSAuMi0uMSAuNCAwIC4zIDAgLjQgLjEgLjMgLjIgLjRsMi42IDcuMWMuMSAuMiAuMiAuNSAuNSAuNnMuNSAuMiAuNyAuMWMuNiAwIDYuOC00IDE2LjktNCA0IDAgNy4xIC43IDkuMiAyLjQgMy42IDIuOCAzLjEgOC4zIDMuMSAxMC42LTQuOC0uMy0xOS4xLTMuNC0yOS40IDMuOC0yLjMgMS42LTQuMyAzLjgtNS41IDYuM3MtMS45IDUuNC0xLjggOC4yYzAgNS45IDEuNSAxMC40IDYuNiAxNC40IDEyLjIgOC4yIDM2LjMgMiAzOC4xIDEuNCAxLjYtLjMgMy41LS43IDMuNS0xLjlsMC0zMy45YzAtNC42IC4zLTIxLjYtMjIuOC0yMS42bDAgLjF6bTQ2LjYtMjFjMC0uMiAwLS4zLS4xLS41cy0uMS0uMy0uMy0uNC0uMi0uMi0uNC0uMy0uMy0uMS0uNS0uMWwtOS44IDBjLS4yIDAtLjMgMC0uNSAuMXMtLjMgLjEtLjQgLjMtLjIgLjItLjMgLjQtLjEgLjMtLjEgLjVsMCA3OWMwIC4yIDAgLjMgLjEgLjVzLjEgLjMgLjMgLjQgLjIgLjIgLjQgLjMgLjMgLjEgLjUgLjFsOS45IDBjLjIgMCAuMyAwIC41LS4xcy4zLS4xIC40LS4zIC4yLS4yIC4zLS40IC4xLS4zIC4xLS41bC0uMS03OXptNTUuNyAyOC45Yy0yLjEtMi4zLTYuOC03LjUtMTcuNi03LjUtMy41IDAtMTQuMiAuMi0yMC43IDguOS02LjQgNy42LTYuNiAxOC4xLTYuNiAyMS40IDAgMy4xIC4yIDE0LjMgNy4xIDIxLjIgMi42IDIuOSA5LjEgOC4yIDIyLjggOC4yIDEwLjggMCAxNi41LTIuMyAxOC42LTMuOCAuNS0uMiAuNy0uNyAuMi0xLjlsLTIuMy02LjhjLS4xLS4zLS4zLS41LS42LS42cy0uNS0uMi0uOC0uMWMtMi42IC45LTYuMyAyLjgtMTUuMyAyLjgtMTcuNCAwLTE2LjgtMTQuNy0xNi45LTE2LjdsMzcuMiAwYy4zIDAgLjUtLjEgLjctLjNzLjQtLjQgLjQtLjdjLS4zIDAgMi4xLTE0LjctNi4xLTI0LjJsMCAwem0zNi43IDUyLjdjMTMuMiAwIDIxLjQtNy4xIDIxLjQtMTguMSAwLTExLjgtMTEuNy0xNS4yLTE3LjktMTcuMi00LjEtMS43LTEzLjQtMy40LTEzLjQtOC45IDAtMy44IDMuMy02LjQgOC41LTYuNCA1LjggLjEgMTEuNSAxLjYgMTYuNyA0LjIgMCAwIDEuMiAuNyAxLjYtLjUgLjItLjcgMi40LTYuNiAyLjYtNy4zIC4xLS4zIC4xLS42LS4xLS44cy0uNC0uNS0uNi0uNmMtNy45LTQuOS0xNi43LTQuOS0yMC4yLTQuOS0xMiAwLTIwLjUgNy4zLTIwLjUgMTcuNiAwIDEyLjUgMTEuNSAxNS40IDE3LjkgMTcuMiA2LjEgMiAxMy4yIDMuMyAxMy4yIDguNyAwIDQtMy41IDcuMS05LjIgNy4xLTYuOSAwLTEzLjUtMi4yLTE5LTYuNC0uMS0uMS0uMy0uMi0uNS0uMnMtLjQgMC0uNSAuMS0uMyAuMi0uNCAuMy0uMiAuMy0uMiAuNWwtMi4zIDcuNWMtLjUgLjkgLjIgMS4yIC4yIDEuNCAxLjcgMS40IDEwLjMgNi42IDIyLjggNi42bDAgMHpNMzU3LjYgMjI0YzAtLjctLjItMS4yLTEuMi0xLjJsLTExLjggMGMwLS4xIC45LTguOSA0LjUtMTIuNSA0LjItNC4yIDExLjgtMS42IDEyLTEuNiAxLjIgLjUgMS40IDAgMS42LS41bDIuOC03LjhjLjctLjkgMC0xLjItLjItMS40LTUuMS0yLTE3LjQtMi45LTI0LjUgNC4yLTUuNSA1LjUtNyAxMy45LTggMTkuNWwtOC41IDBjLS4zIDAtLjYgLjItLjggLjRzLS4zIC41LS40IC44bC0xLjQgNy44YzAgLjcgLjIgMS4yIDEuMiAxLjJsOC4yIDBjLTguNSA0Ny45LTguNyA1MC4yLTEwLjMgNTUuNS0xLjEgMy42LTMuMyA2LjktNS45IDcuOC0uMSAwLTMuOSAxLjctOS42LS4yIDAgMC0uOS0uNS0xLjQgLjctLjIgLjctMi42IDYuOC0yLjggNy41czAgMS40IC41IDEuNGM1LjEgMiAxMyAxLjggMTcuOSAwIDYuMy0yLjMgOS43LTcuOSAxMS41LTEyLjkgMi44LTcuNyAyLjgtOS44IDExLjgtNTkuN2wxMi4yIDBjLjMgMCAuNi0uMiAuOC0uNHMuMy0uNSAuNC0uOGwxLjQtNy44ek00MTEgMjQwYy0uNi0xLjctNS4xLTE4LjEtMjUuMi0xOC4xLTE1LjIgMC0yMyAxMC0yNS4yIDE4LjEtMSAzLTMuMiAxNCAwIDIzLjUgLjEgLjMgNC40IDE4LjEgMjUuMiAxOC4xIDE1IDAgMjIuOS05LjYgMjUuMi0xOC4xIDMuMi05LjYgMS0yMC41IDAtMjMuNXptNDUuNC0xNi43Yy01LTEuNy0xNi42LTEuOS0yMi4xIDUuNGwwLTQuNWMwLS4yIDAtLjMtLjEtLjVzLS4xLS4zLS4zLS40LS4yLS4yLS40LS4zLS4zLS4xLS41LS4xbC05LjQgMGMtLjIgMC0uMyAwLS41IC4xcy0uMyAuMS0uNCAuMy0uMiAuMi0uMyAuNC0uMSAuMy0uMSAuNWwwIDU1LjNjMCAuMiAwIC4zIC4xIC41cy4xIC4zIC4zIC40IC4yIC4yIC40IC4zIC4zIC4xIC41IC4xbDkuNiAwYy4yIDAgLjMgMCAuNS0uMXMuMy0uMSAuNC0uMyAuMi0uMiAuMy0uNCAuMS0uMyAuMS0uNWwwLTI3LjhjMC0yLjkgLjEtMTEuNCA0LjUtMTUuMSA0LjktNC45IDEyLTMuNCAxMy40LTMuMSAuMyAwIC42LS4xIC44LS4zcy40LS40IC42LS43YzEuMi0yLjYgMi4yLTUuMyAzLjEtOCAuMS0uMyAuMS0uNSAwLS44cy0uMy0uNS0uNS0uNmwwIDB6bTQ2LjggNTQuMWwtMi4xLTcuM2MtLjUtMS4yLTEuNC0uNy0xLjQtLjctNC4yIDEuOC0xMC4xIDEuOS0xMS4zIDEuOS00LjYgMC0xNy4yLTEuMS0xNy4yLTE5LjggMC02LjIgMS44LTE5LjggMTYuNS0xOS44IDMuOS0uMSA3LjggLjUgMTEuNSAxLjYgMCAwIC45IC41IDEuMi0uNyAuOS0yLjYgMS42LTQuNSAyLjYtNy41IC4yLS45LS41LTEuMi0uNy0xLjItMTEuNi0zLjktMjIuMy0yLjUtMjcuOCAwLTEuNiAuNy0xNi4yIDYuNS0xNi4yIDI3LjUgMCAyLjktLjYgMzAuMSAyOC45IDMwLjEgNS4zIDAgMTAuNi0xIDE1LjUtMi44IC4yLS4yIC40LS40IC41LS42cy4xLS41IDAtLjhsMCAwem01My45LTM5LjVjLS44LTMtNS40LTE2LjItMjIuMy0xNi4yLTE2IDAtMjMuNSAxMC4xLTI1LjYgMTguNi0xLjIgMy44LTEuNyA3LjgtMS43IDExLjggMCAyNS45IDE4LjggMjkuNCAyOS45IDI5LjQgMTAuOCAwIDE2LjUtMi4zIDE4LjYtMy44IC41LS4yIC43LS43IC4yLTEuOWwtMi40LTYuOGMtLjEtLjMtLjMtLjUtLjYtLjZzLS42LS4yLS44LS4xYy0yLjYgLjktNi4zIDIuOC0xNS4zIDIuOC0xNy40IDAtMTYuOS0xNC43LTE2LjktMTYuN2wzNy4yIDBjLjMgMCAuNS0uMSAuNy0uM3MuNC0uNCAuNC0uN2MtLjIgMCAuOS03LjEtMS40LTE1LjVsMCAwem0tMjMuMy02LjRjLTEwLjMgMC0xMyA5LTEzLjYgMTQuMWwyNi40IDBjLS45LTExLjktNy42LTE0LjEtMTIuNy0xNC4xbDAgMHoiXX0sdlB0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNvdXJjZXRyZWUiLGljb246WzQ0OCw1MTIsW10sImY3ZDMiLCJNNDI3LjQgMjAzYzAtMTEyLjEtOTAuOS0yMDMtMjAzLTIwMy0xMTIuMS0uMi0yMDMgOTAuNi0yMDMuMiAyMDIuNi0uMSA0MyAxMy41IDg0LjggMzguNyAxMTkuNnM2MC45IDYwLjYgMTAxLjggNzMuOGwwIDEwMS43YzAgMy44IDEuNSA3LjQgNC4yIDEwLjFzNi4zIDQuMiAxMC4xIDQuMmw5Ni40IDBjMy44IDAgNy40LTEuNSAxMC4xLTQuMnM0LjItNi4zIDQuMi0xMC4xbDAtMTAxLjZjNDAuOC0xMy4yIDc2LjUtMzkgMTAxLjctNzMuN3MzOC45LTc2LjUgMzktMTE5LjR6bS0yNzEuNiAwYzAtOTAuOCAxMzcuMy05MC44IDEzNy4zIDAtLjEgODkuOS0xMzcuMyA5MS0xMzcuMyAweiJdfSx4UHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToibGlua2VkaW4taW4iLGljb246WzQ0OCw1MTIsW10sImYwZTEiLCJNMTAwLjMgNDQ4bC05Mi45IDAgMC0yOTkuMSA5Mi45IDAgMCAyOTkuMXpNNTMuOCAxMDguMUMyNC4xIDEwOC4xIDAgODMuNSAwIDUzLjggMCAzOS41IDUuNyAyNS45IDE1LjggMTUuOHMyMy44LTE1LjggMzgtMTUuOCAyNy45IDUuNyAzOCAxNS44IDE1LjggMjMuOCAxNS44IDM4YzAgMjkuNy0yNC4xIDU0LjMtNTMuOCA1NC4zek00NDcuOSA0NDhsLTkyLjcgMCAwLTE0NS42YzAtMzQuNy0uNy03OS4yLTQ4LjMtNzkuMi00OC4zIDAtNTUuNyAzNy43LTU1LjcgNzYuN2wwIDE0OC4xLTkyLjggMCAwLTI5OS4xIDg5LjEgMCAwIDQwLjggMS4zIDBjMTIuNC0yMy41IDQyLjctNDguMyA4Ny45LTQ4LjMgOTQgMCAxMTEuMyA2MS45IDExMS4zIDE0Mi4zbDAgMTY0LjMtLjEgMHoiXX0seVB0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6Imh0bWw1IixpY29uOlszODQsNTEyLFtdLCJmMTNiIiwiTTAgMzJMMzQuOSA0MjcuOCAxOTEuNSA0ODAgMzQ5LjEgNDI3LjggMzg0IDMyIDAgMzJ6TTMwOC4yIDE1OS45bC0xODMuOCAwIDQuMSA0OS40IDE3NS42IDAtMTMuNiAxNDguNC05Ny45IDI3IDAgLjMtMS4xIDAtOTguNy0yNy4zLTYtNzUuOCA0Ny43IDAgMy41IDM4LjEgNTMuNSAxNC41IDUzLjctMTQuNSA2LTYyLjItMTY2LjkgMC0xMi44LTE0NS42IDI0MS4xIDAtNC40IDQ3Ljd6Il19LHdQdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJydXN0IixpY29uOls1MTIsNTEyLFtdLCJlMDdhIiwiTTUwOC41IDI0OS44bC0yMS44LTEzLjVjLS4yLTItLjMtMy45LS41LTUuOWwxOC43LTE3LjVjLjktLjkgMS42LTEuOSAyLTMuMXMuNS0yLjUgLjItMy43LS44LTIuNC0xLjYtMy4zLTEuOC0xLjctMy0yLjFsLTI0LTljLS41LTEuOS0xLjEtMy44LTEuNy01LjZsMTUtMjAuOGMuNy0xIDEuMi0yLjIgMS4zLTMuNHMwLTIuNS0uNS0zLjctMS4yLTIuMi0yLjItMi45LTIuMS0xLjMtMy40LTEuNWwtMjUuNC00LjJjLS45LTEuNy0xLjgtMy40LTIuNy01LjJsMTAuNy0yMy40Yy41LTEuMSAuNy0yLjQgLjYtMy42cy0uNS0yLjQtMS4yLTMuNS0xLjYtMS45LTIuOC0yLjUtMi40LS44LTMuNi0uOGwtMjUuOCAuOWMtMS4yLTEuNS0yLjQtMi45LTMuNi00LjRMNDM5IDgxLjhjLjMtMS4yIC4zLTIuNS0uMS0zLjdzLTEtMi4zLTEuOS0zLjItMi0xLjUtMy4yLTEuOS0yLjUtLjQtMy43LS4xTDQwNSA3OC45Yy0xLjQtMS4yLTIuOS0yLjQtNC40LTMuNmwuOS0yNS44Yy4xLTEuMy0uMi0yLjUtLjgtMy42cy0xLjQtMi4xLTIuNS0yLjgtMi4yLTEuMS0zLjUtMS4yLTIuNSAuMS0zLjcgLjZMMzY3LjcgNTMuMmMtMS43LS45LTMuNC0xLjgtNS4xLTIuN2wtNC4yLTI1LjRjLS4yLTEuMi0uNy0yLjQtMS41LTMuNHMtMS44LTEuNy0yLjktMi4yLTIuNC0uNy0zLjctLjUtMi40IC42LTMuNCAxLjNMMzI2IDM1LjNjLTEuOS0uNi0zLjgtMS4xLTUuNi0xLjdsLTktMjRjLS40LTEuMi0xLjItMi4yLTIuMS0zcy0yLjEtMS40LTMuMy0xLjYtMi41LS4yLTMuNyAuMi0yLjMgMS4xLTMuMSAyTDI4MS42IDI1LjljLTItLjItMy45LS40LTUuOS0uNUwyNjIuMyAzLjVjLS43LTEuMS0xLjYtMS45LTIuNy0yLjZzLTIuMy0uOS0zLjYtLjktMi41IC4zLTMuNiAuOS0yIDEuNS0yLjcgMi42TDIzNi4yIDI1LjNjLTIgLjItMy45IC4zLTUuOSAuNkwyMTIuOSA3LjFjLS45LS45LTEuOS0xLjYtMy4xLTJzLTIuNS0uNS0zLjctLjItMi40IC44LTMuMyAxLjYtMS43IDEuOC0yLjEgM2wtOSAyNGMtMS45IC42LTMuOCAxLjEtNS43IDEuN2wtMjAuOC0xNWMtMS0uNy0yLjItMS4yLTMuNC0xLjNzLTIuNSAwLTMuNyAuNS0yLjIgMS4yLTIuOSAyLjItMS4zIDIuMS0xLjUgMy40bC00LjIgMjUuNGMtMS43IC45LTMuNCAxLjgtNS4yIDIuN0wxMjAuOSA0Mi42Yy0xLjEtLjUtMi40LS43LTMuNy0uNnMtMi41IC41LTMuNSAxLjItMS45IDEuNy0yLjUgMi44LS44IDIuNC0uOCAzLjZsLjkgMjUuOGMtMS41IDEuMi0zIDIuNC00LjQgMy42TDgxLjggNzNjLTEuMi0uMy0yLjUtLjMtMy43IC4xcy0yLjMgMS0zLjIgMS45LTEuNSAyLTEuOSAzLjItLjQgMi41LS4xIDMuN0w3OC45IDEwN2MtMS4yIDEuNC0yLjQgMi45LTMuNiA0LjRsLTI1LjgtLjljLTEuMyAwLTIuNSAuMi0zLjYgLjhzLTIuMSAxLjQtMi44IDIuNC0xLjEgMi4yLTEuMiAzLjUgLjEgMi41IC42IDMuNmwxMC43IDIzLjRjLS45IDEuNy0xLjggMy40LTIuNyA1LjJsLTI1LjQgNC4xYy0xLjIgLjItMi40IC43LTMuNCAxLjVzLTEuNyAxLjgtMi4yIDIuOS0uNyAyLjQtLjUgMy43IC42IDIuNCAxLjMgMy40bDE1IDIwLjhjLS42IDEuOS0xLjEgMy44LTEuNyA1LjdsLTI0IDljLTEuMiAuNC0yLjIgMS4yLTMgMi4xcy0xLjQgMi4xLTEuNiAzLjMtLjIgMi41IC4yIDMuNyAxLjEgMi4zIDIgMy4xbDE4LjcgMTcuNWMtLjIgMi0uNCAzLjktLjYgNS45TDMuNSAyNDkuOGMtMS4xIC43LTEuOSAxLjYtMi42IDIuN3MtLjkgMi4zLS45IDMuNiAuMyAyLjUgLjkgMy42IDEuNSAyIDIuNiAyLjdsMjEuOCAxMy41Yy4yIDIgLjMgMy45IC42IDUuOUw3LjEgMjk5LjFjLS45IC45LTEuNiAxLjktMiAzLjFzLS41IDIuNS0uMiAzLjcgLjggMi40IDEuNiAzLjMgMS44IDEuNyAzIDIuMWwyNCA5Yy42IDEuOSAxLjEgMy44IDEuNyA1LjZsLTE1IDIwLjhjLS43IDEtMS4yIDIuMi0xLjMgMy40czAgMi41IC41IDMuNyAxLjIgMi4yIDIuMiAyLjkgMi4xIDEuMyAzLjQgMS41bDI1LjQgNC4yYy45IDEuNyAxLjggMy40IDIuNyA1LjFMNDIuNiAzOTEuMWMtLjUgMS4xLS43IDIuNC0uNiAzLjZzLjUgMi41IDEuMiAzLjVjLjcgMS4xIDEuNiAxLjkgMi43IDIuNXMyLjQgLjggMy42IC44bDI1LjgtLjljMS4yIDEuNSAyLjQgMi45IDMuNiA0LjRMNzMgNDMwLjJjLS4zIDEuMi0uMyAyLjUgLjEgMy43czEgMi4zIDEuOSAzLjIgMiAxLjUgMy4yIDEuOSAyLjUgLjQgMy43IC4xbDI1LjItNS45YzEuNSAxLjIgMi45IDIuNCA0LjQgMy42bC0uOSAyNS44YzAgMS4zIC4yIDIuNSAuOCAzLjZzMS40IDIuMSAyLjUgMi44IDIuMiAxLjEgMy41IDEuMiAyLjUtLjEgMy42LS42bDIzLjQtMTAuN2MxLjcgLjkgMy40IDEuOCA1LjEgMi43bDQuMiAyNS40Yy4yIDEuMiAuNyAyLjQgMS41IDMuNHMxLjggMS44IDIuOSAyLjIgMi40IC43IDMuNyAuNSAyLjQtLjYgMy40LTEuM2wyMC44LTE1YzEuOSAuNiAzLjggMS4xIDUuNiAxLjdsOSAyNGMuNCAxLjIgMS4yIDIuMiAyLjEgM3MyLjEgMS40IDMuMyAxLjYgMi41IC4yIDMuNy0uMiAyLjMtMS4xIDMuMS0ybDE3LjUtMTguN2MyIC4yIDMuOSAuNCA1LjkgLjZsMTMuNSAyMS44Yy43IDEuMSAxLjYgMS45IDIuNyAyLjZzMi4zIC45IDMuNiAuOSAyLjUtLjMgMy42LS45IDItMS41IDIuNy0yLjZsMTMuNS0yMS44YzItLjIgMy45LS4zIDUuOS0uNmwxNy41IDE4LjdjLjkgLjkgMS45IDEuNiAzLjEgMnMyLjUgLjUgMy43IC4yIDIuNC0uOCAzLjMtMS42IDEuNy0xLjggMi4xLTNsOS0yNGMxLjktLjYgMy44LTEuMSA1LjYtMS43bDIwLjggMTVjMSAuNyAyLjIgMS4yIDMuNCAxLjNzMi41IDAgMy43LS41IDIuMi0xLjIgMi45LTIuMiAxLjMtMi4xIDEuNS0zLjRsNC4yLTI1LjRjMS43LS45IDMuNC0xLjggNS4xLTIuN2wyMy40IDEwLjdjMS4xIC41IDIuNCAuNyAzLjYgLjZzMi40LS41IDMuNS0xLjIgMS45LTEuNiAyLjUtMi44IC44LTIuNCAuOC0zLjZsLS45LTI1LjhjMS41LTEuMiAyLjktMi40IDQuNC0zLjZsMjUuMiA1LjljMS4yIC4zIDIuNSAuMyAzLjctLjFzMi4zLTEgMy4yLTEuOSAxLjUtMiAxLjktMy4yIC40LTIuNSAuMS0zLjdMNDMzLjEgNDA1YzEuMi0xLjQgMi40LTIuOSAzLjYtNC40bDI1LjggLjljMS4zIC4xIDIuNS0uMiAzLjYtLjhzMi4xLTEuNCAyLjgtMi41Yy43LTEgMS4xLTIuMiAxLjItMy41cy0uMS0yLjUtLjYtMy42bC0xMC43LTIzLjRjLjktMS43IDEuOC0zLjQgMi43LTUuMWwyNS40LTQuMmMxLjItLjIgMi40LS43IDMuNC0xLjVzMS44LTEuOCAyLjItMi45IC43LTIuNCAuNS0zLjctLjYtMi40LTEuMy0zLjRsLTE1LTIwLjhjLjYtMS45IDEuMS0zLjggMS43LTUuNmwyNC05YzEuMi0uNCAyLjItMS4yIDMtMi4xczEuNC0yLjEgMS42LTMuMyAuMi0yLjUtLjItMy43LTEuMS0yLjMtMi0zLjFsLTE4LjctMTcuNWMuMi0xLjkgLjQtMy45IC42LTUuOWwyMS44LTEzLjVjMS4xLS43IDEuOS0xLjYgMi42LTIuN3MuOS0yLjMgLjktMy42LS4zLTIuNS0uOS0zLjYtMS41LTItMi42LTIuN2wwIDB6bS0xNTEgMTI5LjFjLTMuNi0uOC03LjQtLjEtMTAuNSAxLjlzLTUuMyA1LjItNiA4LjhsLTcuNiAzNS43Yy0yNC42IDExLjEtNTEuMyAxNi44LTc4LjMgMTYuN3MtNTMuNi02LjEtNzguMS0xNy40bC03LjYtMzUuN2MtLjQtMS44LTEuMS0zLjUtMi4xLTVzLTIuNC0yLjgtMy45LTMuOC0zLjItMS43LTUtMi0zLjYtLjMtNS40IC4xbC0zMS41IDYuOGMtNS44LTYtMTEuMy0xMi41LTE2LjMtMTkuMmwxNTMuMiAwYzEuNyAwIDIuOS0uMyAyLjktMS45bDAtNTQuMmMwLTEuNi0xLjItMS45LTIuOS0xLjlsLTQ0LjggMCAwLTM0LjQgNDguNSAwYzQuNCAwIDIzLjcgMS4zIDI5LjggMjUuOSAxLjkgNy41IDYuMiAzMi4xIDkuMSA0MCAyLjkgOC44IDE0LjYgMjYuNSAyNy4xIDI2LjVsNzkgMGMtNS4zIDcuMS0xMS4xIDEzLjgtMTcuMyAyMC4xbC0zMi4xLTYuOXptMjUuOCAzNC41YzAgMy0uOSA2LTIuNiA4LjVzLTQgNC41LTYuOCA1LjYtNS44IDEuNS04LjggLjktNS43LTItNy44LTQuMi0zLjYtNC44LTQuMi03LjgtLjMtNiAuOC04LjggMy4xLTUuMiA1LjYtNi45IDUuNC0yLjYgOC41LTIuNmwuNCAwYzQgLjEgNy43IDEuOCAxMC41IDQuNnM0LjMgNi43IDQuMyAxMC42bC4xIDB6bS0yMjUuNi0uN2MwIDMtLjkgNi0yLjYgOC41cy00LjEgNC41LTYuOCA1LjYtNS44IDEuNS04LjggLjktNS43LTItNy44LTQuMi0zLjYtNC44LTQuMi03LjgtLjMtNiAuOS04LjggMy4xLTUuMiA1LjYtNi44IDUuNC0yLjYgOC41LTIuNmwuNSAwYzQgLjEgNy43IDEuOCAxMC41IDQuNnM0LjMgNi43IDQuMyAxMC42bC4xIDB6TTY5LjYgMjM0LjJsMzIuOC0xNC42YzEuNy0uNyAzLjItMS44IDQuNC0zLjFzMi4yLTIuOSAyLjktNC42IDEtMy41IC45LTUuMy0uNS0zLjYtMS4yLTUuM2wtNi44LTE1LjIgMjYuNiAwIDAgMTE5LjctNTMuNiAwYy02LjYtMjMuMi04LjctNDcuNi02LjEtNzEuNnpNNTguMyAxOTguMWMwLTIgLjQtNCAxLjItNS44czEuOS0zLjUgMy4zLTQuOSAzLjEtMi41IDQuOS0zLjMgMy44LTEuMiA1LjgtMS4ybC41IDBjMyAuMSA1LjkgMSA4LjMgMi44czQuMyA0LjEgNS40IDYuOSAxLjMgNS44IC43IDguOC0yLjEgNS42LTQuMyA3LjctNC45IDMuNS03LjggNC4xLTYgLjItOC43LS45LTUuMS0zLjEtNi44LTUuNi0yLjUtNS40LTIuNS04LjRsMCAwem0xNTUuMiAyNC41bDAtMzUuMyA2My4zIDBjMy4zIDAgMjMuMSAzLjggMjMuMSAxOC42IDAgMTIuMy0xNS4yIDE2LjctMjcuNyAxNi43bC01OC43IDB6TTM5OSAzMDYuN2MtOS44IDEuMS0yMC42LTQuMS0yMi0xMC4xLTUuOC0zMi41LTE1LjQtMzkuNC0zMC42LTUxLjQgMTguOS0xMiAzOC41LTI5LjYgMzguNS01My4zIDAtMjUuNS0xNy41LTQxLjYtMjkuNC00OS41LTE2LjgtMTEtMzUuMy0xMy4yLTQwLjMtMTMuMmwtMTk4LjkgMGMyNy41LTMwLjcgNjQuNC01MS41IDEwNC45LTU5LjJsMjMuNSAyNC42YzEuMyAxLjMgMi44IDIuNCA0LjQgMy4xczMuNSAxLjEgNS4zIDEuMiAzLjYtLjMgNS4zLS45IDMuMi0xLjcgNC42LTIuOWwyNi4zLTI1YzI2LjggNSA1Mi4xIDE1LjggNzQuMyAzMS42czQwLjYgMzYuMiA1NC4xIDU5LjlsLTE4IDQwLjZjLTEuNSAzLjQtMS41IDcuMi0uMiAxMC42czMuOSA2LjIgNy4zIDcuN2wzNC42IDE1LjNjMS4xIDEwLjggMS4yIDIxLjcgLjQgMzIuNWwtMTkuMyAwYy0xLjkgMC0yLjcgMS4zLTIuNyAzLjFsMCA4LjhjMCAyMC44LTExLjcgMjUuMy0yMiAyNi41ek0yNDAgNjAuMmMwLTQgMS42LTcuOSA0LjUtMTAuN3M2LjctNC41IDEwLjctNC41bC40IDBjMyAuMSA1LjkgMSA4LjQgMi44czQuMyA0LjEgNS40IDYuOSAxLjMgNS44IC43IDguOC0yLjEgNS42LTQuMyA3LjctNC45IDMuNS03LjggNC02IC4yLTguNy0uOS01LjEtMy4xLTYuOC01LjYtMi41LTUuNC0yLjUtOC40ek00MzYuOCAyMTRjLTIgMC00LS40LTUuOC0xLjJzLTMuNS0xLjktNC45LTMuMy0yLjUtMy4xLTMuMy00LjktMS4yLTMuOC0xLjItNS44IC40LTQgMS4yLTUuOCAxLjktMy41IDMuMy00LjkgMy4xLTIuNSA0LjktMy4zIDMuOC0xLjIgNS44LTEuMmwuNCAwYzQgLjEgNy45IDEuNyAxMC43IDQuNnM0LjQgNi44IDQuMyAxMC44LTEuNyA3LjktNC42IDEwLjctNi44IDQuNC0xMC44IDQuM3oiXX0sa1B0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6Imhvcm5iaWxsIixpY29uOls1MTIsNTEyLFtdLCJmNTkyIiwiTTc2LjggMzcwLjNjMSA3LjgtLjQgMTUuOC00LjEgMjIuOHMtOS42IDEyLjYtMTYuNyAxNi4xLTE1LjEgNC43LTIyLjkgMy4zLTE1LTUuMS0yMC42LTEwLjctOS4yLTEyLjktMTAuNS0yMC43IDAtMTUuOCAzLjYtMjIuOSA5LjMtMTIuOCAxNi4zLTE2LjUgMTUtNSAyMi45LTMuOWMtNzguMy0xMTEuMyA1Mi0xOTAuNSA1Mi0xOTAuNS01LjkgNDMtOC4yIDkxLjItOC4yIDkxLjItNjcuMyA0MS41IC45IDY0LjEgMzkuOCA3Mi45IDkuOSAyNyAyNy44IDUwLjIgNTEuNCA2Ni43czUxLjYgMjUuMyA4MC4zIDI1LjNjMS45IDAgMy44LS4yIDUuNy0uM2wuMSAxOC45Yy05OS4yIDEuNC0xNTguNy0yOS4xLTE4OC45LTUxLjZ6bTEwOC0zMjcuN2MuOS03LjItLjItMTQuNi0zLjQtMjEuMi0zLTYuMi03LjYtMTEuNS0xMy40LTE1LjNzLTEyLjUtNS45LTE5LjQtNi4yLTEzLjggMS40LTE5LjggNC43LTExLjEgOC4zLTE0LjUgMTQuMy01LjIgMTIuOC01IDE5LjcgMi4yIDEzLjcgNS45IDE5LjUgOC45IDEwLjYgMTUuMSAxMy42IDEzLjEgNC40IDIwIDMuOWMtMjIuNiAyOS45LTUzLjggODkuNi01Mi40IDE5MGwyMS44LS4yYzAtLjktLjEtMS44LS4xLTIuNyAwLTI4IDguNC01NS4zIDI0LjEtNzguNXMzNy45LTQxLjIgNjMuOC01MS42YzgtMzcuNyAzMC43LTExNC4zIDczLjgtNDQuMyAwIDAgNDguMSAyLjQgOTEuMiA4LjIgMCAwLTc3LjgtMTI4LTE4Ny42LTU0LjFsMCAwek00ODkgMTc2LjhjNi4zLTMgMTEuNy03LjcgMTUuNS0xMy42czUuOS0xMi43IDYuMS0xOS44LTEuNi0xNC01LjItMjAtOC43LTExLTE0LjktMTQuMy0xMy4yLTQuOC0yMC4yLTQuNC0xMy44IDIuOC0xOS41IDYuOS0xMC4yIDkuNi0xMyAxNi4xLTMuNyAxMy42LTIuNyAyMC41Yy0zMS43LTIxLjktODkuOC00OS4xLTE4My40LTQ3LjdsLjEgMjIuNWMyLjctLjIgNS40LS40IDguMS0uNCAyOC4xIDAgNTUuNiA4LjUgNzguOSAyNC4zczQxLjIgMzguMyA1MS42IDY0LjVjMzkuMSA5IDEwNS4xIDMxLjYgMzguNSA3Mi41IDAgMC0yLjMgNDguMS04LjIgOTEuMiAwIDAgMTMzLjQtODEuMiA0OS0xOTQuNiA2LjYgLjYgMTMuMy0uNiAxOS4zLTMuNWwwIDB6TTM3NC40IDQzNi4yYzIxLjQtMzIuNSA0Ni40LTg5LjcgNDUuMS0xNzkuN2wtMTkuNSAuMWMuMSAyLjEgLjMgNC4xIC4zIDYuMiAwIDI4LjYtOC44IDU2LjUtMjUuMSA4MHMtMzkuNSA0MS40LTY2LjMgNTEuNGMtOC45IDM5LTMxLjQgMTA2LjctNzIuOCAzOS41IDAgMC00OC4xLTIuMy05MS4yLTguMiAwIDAgNzkuOSAxMzEuMyAxOTEuOSA1MSAuMyA0LjkgMS41IDkuNiAzLjYgMTQgMi45IDYuMSA3LjUgMTEuNCAxMy4xIDE1LjFzMTIuMiA2IDE5IDYuNCAxMy42LTEuMSAxOS42LTQuMiAxMS4xLTcuOCAxNC43LTEzLjYgNS42LTEyLjQgNS43LTE5LjItMS41LTEzLjUtNC44LTE5LjQtOC4yLTEwLjktMTQuMS0xNC4zLTEyLjYtNS4yLTE5LjQtNS4xbDAtLjF6Il19LFNQdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJwaHAiLGljb246WzY0MCw1MTIsW10sImY0NTciLCJNMzIwIDEwNC41YzE3MS40IDAgMzAzLjIgNzIuMiAzMDMuMiAxNTEuNVM0OTEuMyA0MDcuNSAzMjAgNDA3LjVDMTQ4LjYgNDA3LjUgMTYuOCAzMzUuMyAxNi44IDI1NlMxNDguNyAxMDQuNSAzMjAgMTA0LjV6bTAtMTYuOEMxNDMuMyA4Ny43IDAgMTYzIDAgMjU2UzE0My4zIDQyNC4zIDMyMCA0MjQuMyA2NDAgMzQ5IDY0MCAyNTYgNDk2LjcgODcuNyAzMjAgODcuN3pNMjE4LjIgMjQyLjVjLTcuOSA0MC41LTM1LjggMzYuMy03MC4xIDM2LjNsMTMuNy03MC42YzM4IDAgNjMuOC00LjEgNTYuNCAzNC4zek05Ny40IDM1MC4zbDM2LjcgMCA4LjctNDQuOGM0MS4xIDAgNjYuNiAzIDkwLjItMTkuMSAyNi4xLTI0IDMyLjktNjYuNyAxNC4zLTg4LjEtOS43LTExLjItMjUuMy0xNi43LTQ2LjUtMTYuN2wtNzAuNyAwLTMyLjcgMTY4Ljd6TTI4My4xIDEzNi43bDM2LjUgMC04LjcgNDQuOGMzMS41IDAgNjAuNy0yLjMgNzQuOCAxMC43IDE0LjggMTMuNiA3LjcgMzEtOC4zIDExMy4xbC0zNyAwYzE1LjQtNzkuNCAxOC4zLTg2IDEyLjctOTItNS40LTUuOC0xNy43LTQuNi00Ny40LTQuNmwtMTguOCA5Ni42LTM2LjUgMCAzMi43LTE2OC42ek01MDUgMjQyLjVjLTggNDEuMS0zNi43IDM2LjMtNzAuMSAzNi4zbDEzLjctNzAuNmMzOC4yIDAgNjMuOC00LjEgNTYuNCAzNC4zek0zODQuMiAzNTAuM2wzNi44IDAgOC43LTQ0LjhjNDMuMiAwIDY3LjEgMi41IDkwLjItMTkuMSAyNi4xLTI0IDMyLjktNjYuNyAxNC4zLTg4LjEtOS43LTExLjItMjUuMy0xNi43LTQ2LjUtMTYuN2wtNzAuNyAwLTMyLjggMTY4Ljd6Il19LF9QdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJkaXNxdXMiLGljb246WzU3Niw1MTIsW10sImU3ZDUiLCJNMjkwLjIgNTEyYy02Mi42IDAtMTE5LjktMjIuOS0xNjQuMi02MC44TDE3IDQ2Ni4xIDU5LjEgMzYyLjJjLTE0LjctMzIuNC0yMi45LTY4LjMtMjIuOS0xMDYuMiAwLTE0MS40IDExMy43LTI1NiAyNTQtMjU2IDE0MC4zIDAgMjU0IDExNC42IDI1NCAyNTYgMCAxNDEuNC0xMTMuNyAyNTYtMjU0IDI1NnpNNDI4LjkgMjU1LjNsMC0uN0M0MjguOSAxODAuNyAzNzYuOCAxMjggMjg3IDEyOGwtOTcgMCAwIDI1NiA5NS42IDBjOTAuNSAwIDE0My40LTU0LjkgMTQzLjQtMTI4Ljd6TTI4OCAzMjEuMWwtMjguNCAwIDAtMTMwLjIgMjguNCAwYzQxLjcgMCA2OS4zIDIzLjggNjkuMyA2NC43bDAgLjdjMCA0MS4zLTI3LjcgNjQuNy02OS4zIDY0Ljd6Il19LE1QdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiI1MDBweCIsaWNvbjpbMzg0LDUxMixbXSwiZjI2ZSIsIk03MS44IDM0NC4zYy02LjUtMTQuMi02LjktMTguMyA3LjQtMjMuMSAyNS42LTggOCA5LjIgNDMuMiA0OS4ybC4zIDAgMC05My45YzEuMi01MC4yIDQ0LTkyLjIgOTcuNy05Mi4yIDUzLjkgMCA5Ny43IDQzLjUgOTcuNyA5Ni44IDAgNjMuNC02MC44IDExMy4yLTEyOC41IDkzLjMtMTAuNS00LjItMi4xLTMxLjcgOC41LTI4LjYgNTMgMCA4OS40LTEwLjEgODkuNC02NC40IDAtNjEtNzcuMS04OS42LTExNi45LTQ0LjYtMjMuNSAyNi40LTE3LjYgNDIuMS0xNy42IDE1Ny42IDUwLjcgMzEgMTE4LjMgMjIgMTYwLjQtMjAuMSAyNC44LTI0LjggMzguNS01OCAzOC41LTkzIDAtMzUuMi0xMy44LTY4LjItMzguOC05My4zLTI0LjgtMjQuOC01Ny44LTM4LjUtOTMuMy0zOC41UzE1MSAxNjMuMyAxMjYuMyAxODhjLS4zIC4zLTE2IDE2LjUtMjEuMiAyMy45bC0uNSAuNmMtMy4zIDQuNy02LjMgOS4xLTIwLjEgNi4xLTYuOS0xLjctMTQuMy01LjgtMTQuMy0xMS44TDcwLjIgMjBjMC01IDMuOS0xMC41IDEwLjUtMTAuNUwzMjIgOS41YzguMyAwIDguMyAxMS42IDguMyAxNS4xIDAgMy45IDAgMTUuMS04LjMgMTUuMWwtMjIzLjIgMCAwIDEzMi45IC4zIDBjMTA0LjItMTA5LjggMjgyLjgtMzYgMjgyLjggMTA4LjkgMCAxNzguMS0yNDQuOCAyMjAuMy0zMTAuMSA2Mi44ek0xMzUuMSA4My41Yy0uNSA0LjIgNC42IDI0LjUgMTQuNiAyMC42IDEyNC44LTQ3LjUgMjAyLjggNDAuNCAyMDkuNCA0MC40IDQuOCAwIDIyLjgtMTUuMyAxNC4zLTIyLjgtOTMuMi04OS0yMzQuNS01Ny0yMzguMy0zOC4yek0zNjEuNSA0MTQuN2MtMTEwIDEwOS45LTI5OSA2MC44LTMzMi0xMDQuMiAwLTEyLjItMzAuNC03LjQtMjguOSAzLjMgMjQgMTczLjQgMjQ2IDI1Ni45IDM4MS42IDEyMS4zIDYuOS03LjgtMTIuNi0yOC40LTIwLjctMjAuNHpNMTgyLjEgMzA2LjZjMCA0IDQuMyA3LjMgNS41IDguNSAzIDMgNi4xIDQuNCA4LjUgNC40IDMuOCAwIDIuNiAuMiAyMi4zLTE5LjUgMTkuNiAxOS4zIDE5LjEgMTkuNSAyMi4zIDE5LjUgNS40IDAgMTguNS0xMC40IDEwLjctMTguMmwtMTcuMy0xNy4zIDE4LjItMTguMmM2LjMtNi44LTEwLjEtMjEuOC0xNi4yLTE1LjdMMjE4LjIgMjY4Yy0xOC42LTE4LjgtMTguNC0xOS41LTIxLjUtMTkuNS01IDAtMTggMTEuNy0xMi40IDE3LjNMMjAyLjUgMjg0Yy0xOC4xIDE3LjktMjAuNCAxOS4yLTIwLjQgMjIuNnoiXX0selB0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImFmZmlsaWF0ZXRoZW1lIixpY29uOls1MTIsNTEyLFtdLCJmMzZiIiwiTTE1OS43IDIzNy40QzEwOC40IDMwOC4zIDQzLjEgMzQ4LjIgMTQgMzI2LjYtMTUuMiAzMDQuOSAyLjggMjMwIDU0LjIgMTU5LjEgMTA1LjUgODguMiAxNzAuOCA0OC4zIDE5OS45IDY5LjlzMTEuMSA5Ni42LTQwLjIgMTY3LjV6bTM1MS4yLTU3LjNjLTczLjggMTIzLjQtMTkxLjkgMTg3LjctMjY0LjUgMTQzLjYtMjUtMTUuMi00MS4zLTQxLjItNDktNzMuOC0zMy42IDY0LjgtOTIuOCAxMTMuOC0xNjQuMSAxMzMuMiA0OS44IDU5LjMgMTI0LjEgOTYuOSAyMDcgOTYuOSAxNTAgMCAyNzEuNi0xMjMuMSAyNzEuNi0yNzQuOSAuMS04LjUtLjMtMTYuOC0xLTI1eiJdfSxDUHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToicmVkLXJpdmVyIixpY29uOls0NDgsNTEyLFtdLCJmM2UzIiwiTTM1My4yIDMyTDk0LjggMzJDNDIuNCAzMiAwIDc0LjQgMCAxMjYuOEwwIDM4NS4yQzAgNDM3LjYgNDIuNCA0ODAgOTQuOCA0ODBsMjU4LjQgMGM1Mi40IDAgOTQuOC00Mi40IDk0LjgtOTQuOGwwLTI1OC40QzQ0OCA3NC40IDQwNS42IDMyIDM1My4yIDMyek0xNDQuOSAyMDAuOWwwIDU2LjNjMCAyNy0yMS45IDQ4LjktNDguOSA0OC45bDAtMTU0LjJjMC0xMy4yIDEwLjctMjMuOSAyMy45LTIzLjlsMTU0LjIgMGMwIDI3LTIxLjkgNDguOS00OC45IDQ4LjlsLTU2LjMgMGMtMTIuMy0uNi0yNC42IDExLjYtMjQgMjR6bTE3Ni4zIDcybC01Ni4zIDBjLTEyLjMtLjYtMjQuNiAxMS42LTI0IDI0bDAgNTYuM2MwIDI3LTIxLjkgNDguOS00OC45IDQ4LjlsMC0xNTQuMmMwLTEzLjIgMTAuNy0yMy45IDIzLjktMjMuOWwxNTQuMiAwYzAgMjctMjEuOSA0OC45LTQ4LjkgNDguOXoiXX0sTGI9e3ByZWZpeDoiZmFiIixpY29uTmFtZToidHdpdHRlciIsaWNvbjpbNTEyLDUxMixbXSwiZjA5OSIsIk00NTkuNCAxNTEuN2MuMyA0LjUgLjMgOS4xIC4zIDEzLjYgMCAxMzguNy0xMDUuNiAyOTguNi0yOTguNiAyOTguNi01OS41IDAtMTE0LjctMTcuMi0xNjEuMS00Ny4xIDguNCAxIDE2LjYgMS4zIDI1LjMgMS4zIDQ5LjEgMCA5NC4yLTE2LjYgMTMwLjMtNDQuOC00Ni4xLTEtODQuOC0zMS4yLTk4LjEtNzIuOCA2LjUgMSAxMyAxLjYgMTkuOCAxLjYgOS40IDAgMTguOC0xLjMgMjcuNi0zLjYtNDguMS05LjctODQuMS01Mi04NC4xLTEwM2wwLTEuM2MxNCA3LjggMzAuMiAxMi43IDQ3LjQgMTMuMy0yOC4zLTE4LjgtNDYuOC01MS00Ni44LTg3LjQgMC0xOS41IDUuMi0zNy40IDE0LjMtNTMgNTEuNyA2My43IDEyOS4zIDEwNS4zIDIxNi40IDEwOS44LTEuNi03LjgtMi42LTE1LjktMi42LTI0IDAtNTcuOCA0Ni44LTEwNC45IDEwNC45LTEwNC45IDMwLjIgMCA1Ny41IDEyLjcgNzYuNyAzMy4xIDIzLjctNC41IDQ2LjUtMTMuMyA2Ni42LTI1LjMtNy44IDI0LjQtMjQuNCA0NC44LTQ2LjEgNTcuOCAyMS4xLTIuMyA0MS42LTguMSA2MC40LTE2LjItMTQuMyAyMC44LTMyLjIgMzkuMy01Mi42IDU0LjN6Il19LFRQdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJmb3J0LWF3ZXNvbWUiLGljb246WzUxMiw1MTIsW10sImYyODYiLCJNNDg5LjUgMjg3LjlsLTI3LjQgMGMtMi42IDAtNC42IDItNC42IDQuNmwwIDMyLTM2LjYgMCAwLTE3OC4zYzAtMi42LTItNC42LTQuNi00LjZsLTI3LjQgMGMtMi42IDAtNC42IDItNC42IDQuNmwwIDMyLTM2LjYgMCAwLTMyYzAtMi42LTItNC42LTQuNi00LjZsLTI3LjQgMGMtMi42IDAtNC42IDItNC42IDQuNmwwIDMyLTM2LjYgMCAwLTMyYzAtNi04LTQuNi0xMS43LTQuNmwwLTM4YzguMy0yIDE3LjEtMy40IDI1LjctMy40IDEwLjkgMCAyMC45IDQuMyAzMS40IDQuMyA0LjYgMCAyNy43LTEuMSAyNy43LThsMC02MGMwLTIuNi0yLTQuNi00LjYtNC42LTUuMSAwLTE1LjEgNC4zLTI0IDQuMy05LjcgMC0yMC45LTQuMy0zMi42LTQuMy04IDAtMTYgMS4xLTIzLjcgMi45bDAtNC45YzUuNC0yLjYgOS4xLTguMyA5LjEtMTQuMyAwLTIwLjctMzEuNC0yMC44LTMxLjQgMCAwIDYgMy43IDExLjcgOS4xIDE0LjNsMCAxMTEuN2MtMy43IDAtMTEuNy0xLjQtMTEuNyA0LjZsMCAzMi0zNi42IDAgMC0zMmMwLTIuNi0yLTQuNi00LjYtNC42bC0yNy40IDBjLTIuNiAwLTQuNiAyLTQuNiA0LjZsMCAzMi0zNi4zIDAgMC0zMmMwLTIuNi0yLTQuNi00LjYtNC42bC0yNy40IDBjLTIuNiAwLTQuNiAyLTQuNiA0LjZsMCAxNzguMy0zNi42IDAgMC0zMmMwLTIuNi0yLTQuNi00LjYtNC42bC0yNy40IDBjLTIuNiAwLTQuNiAyLTQuNiA0LjZsMCAyMTkuNSAxODIuOSAwIDAtOTZjMC03Mi42IDEwOS43LTcyLjYgMTA5LjcgMGwwIDk2IDE4Mi45IDAgMC0yMTkuNWMuMS0yLjYtMS45LTQuNi00LjUtNC42em0tMjg4LjEtNC41YzAgMi42LTIgNC42LTQuNiA0LjZsLTI3LjQgMGMtMi42IDAtNC42LTItNC42LTQuNmwwLTY0YzAtMi42IDItNC42IDQuNi00LjZsMjcuNCAwYzIuNiAwIDQuNiAyIDQuNiA0LjZsMCA2NHptMTQ2LjQgMGMwIDIuNi0yIDQuNi00LjYgNC42bC0yNy40IDBjLTIuNiAwLTQuNi0yLTQuNi00LjZsMC02NGMwLTIuNiAyLTQuNiA0LjYtNC42bDI3LjQgMGMyLjYgMCA0LjYgMiA0LjYgNC42bDAgNjR6Il19LCRQdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJtaXhlciIsaWNvbjpbNDQ4LDUxMixbXSwiZTA1NiIsIk04Mi42IDc2LjFjLTMuOC01LjEtOC43LTkuNC0xNC4yLTEyLjVzLTExLjctNS4xLTE4LjEtNS43LTEyLjggLjEtMTguOCAyLjItMTEuNiA1LjMtMTYuMyA5LjZjLTE3LjYgMTYuMi0xOSA0My41LTQuOCA2Mi44bDkxLjggMTIzLTkyLjMgMTI0LjFjLTE0LjIgMTkuMy0xMy4xIDQ2LjYgNC43IDYyLjggNC43IDQuMyAxMC4zIDcuNiAxNi4zIDkuNnMxMi41IDIuOCAxOC44IDIuMiAxMi41LTIuNSAxOC4xLTUuNyAxMC40LTcuNCAxNC4yLTEyLjVMMjEwLjkgMjYyLjdjMS41LTIuMSAyLjMtNC42IDIuMy03LjFzLS44LTUtMi4zLTcuMUw4Mi42IDc2LjF6TTQzOC4yIDM3OS42bC05Mi4zLTEyNC4xIDkxLjgtMTIzYzE0LjItMTkuMiAxMi44LTQ2LjYtNC43LTYyLjgtNC43LTQuMy0xMC4zLTcuNi0xNi4zLTkuNnMtMTIuNS0yLjgtMTguOC0yLjItMTIuNSAyLjUtMTguMSA1LjctMTAuNCA3LjQtMTQuMiAxMi41bC0xMjggMTcyLjFjLTEuNSAyLjEtMi4zIDQuNi0yLjMgNy4xcy44IDUgMi4zIDcuMUwzNjYgNDM1LjljMy44IDUuMSA4LjcgOS40IDE0LjIgMTIuNXMxMS43IDUuMSAxOC4xIDUuNyAxMi44LS4xIDE4LjgtMi4yIDExLjYtNS4zIDE2LjMtOS42YzE3LjgtMTYuMiAxOS00My41IDQuNy02Mi44eiJdfSxEUHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToibHlmdCIsaWNvbjpbNTEyLDUxMixbXSwiZjNjMyIsIk0wIDgxLjFsNzcuOCAwIDAgMjA4LjdjMCAzMy4xIDE1IDUyLjggMjcuMiA2MS0xMi43IDExLjEtNTEuMiAyMC45LTgwLjItMi44LTE3LTE0LTI0LjgtMzcuMy0yNC44LTU5TDAgODEuMXpNNDg1LjkgMjU0LjZsMC0yMiAyMy44IDAgMC03Ni44LTI2LjEgMGMtMTAuMS00Ni4zLTUxLjItODAuNy0xMDAuMy04MC43LTU2LjYgMC0xMDIuNyA0Ni0xMDIuNyAxMDIuN2wwIDE3OS4yYzE2IDIuMyAzNS40LS4zIDUxLjctMTQgMTcuMS0xNCAyNC44LTM3LjIgMjQuOC01OWwwLTYuNyAzOC44IDAgMC03Ni44LTM4LjggMCAwLTIzLjNjMC0zNC42IDUyLjItMzQuNiA1Mi4yIDBsMCA3Ny4xYzAgNTYuNiA0NiAxMDIuNyAxMDIuNyAxMDIuN2wwLTc2LjVjLTE0LjUgMC0yNi4xLTExLjctMjYuMS0yNS45em0tMjk0LjMtOTlsMCAxMTNjMCAxNS40LTIzLjggMTUuNC0yMy44IDBsMC0xMTMtNzYuOCAwIDAgMTMyLjdjMCAyMy44IDggNTQgNDUgNjMuOSAzNyA5LjggNTguMi0xMC42IDU4LjItMTAuNi0yLjEgMTMuNC0xNC41IDIzLjMtMzQuOSAyNS4zLTE1LjUgMS42LTM1LjItMy42LTQ1LTcuOGwwIDcwLjNjMjUuMSA3LjUgNTEuNSA5LjggNzcuNiA0LjcgNDcuMS05LjEgNzYuOC00OC40IDc2LjgtMTAwLjhsMC0xNzguMi03Ny4xIDAgMCAuNXoiXX0sTFB0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImFwcGxlLXBheSIsaWNvbjpbNjQwLDUxMixbXSwiZjQxNSIsIk0xMTYuOSAxNTguNWMtNy41IDguOS0xOS41IDE1LjktMzEuNSAxNC45LTEuNS0xMiA0LjQtMjQuOCAxMS4zLTMyLjYgNy41LTkuMSAyMC42LTE1LjYgMzEuMy0xNi4xIDEuMiAxMi40LTMuNyAyNC43LTExLjEgMzMuOHptMTAuOSAxNy4yYy0xNy40LTEtMzIuMyA5LjktNDAuNSA5LjktOC40IDAtMjEtOS40LTM0LjgtOS4xLTE3LjkgLjMtMzQuNSAxMC40LTQzLjYgMjYuNS0xOC44IDMyLjMtNC45IDgwIDEzLjMgMTA2LjMgOC45IDEzIDE5LjUgMjcuMyAzMy41IDI2LjggMTMuMy0uNSAxOC41LTguNiAzNC41LTguNiAxNi4xIDAgMjAuOCA4LjYgMzQuOCA4LjQgMTQuNS0uMyAyMy42LTEzIDMyLjUtMjYgMTAuMS0xNC44IDE0LjMtMjkuMSAxNC41LTI5LjktLjMtLjMtMjgtMTAuOS0yOC4zLTQyLjktLjMtMjYuOCAyMS45LTM5LjUgMjIuOS00MC4zLTEyLjUtMTguNi0zMi0yMC42LTM4LjgtMjEuMXptMTAwLjQtMzYuMmwwIDE5NC45IDMwLjMgMCAwLTY2LjYgNDEuOSAwYzM4LjMgMCA2NS4xLTI2LjMgNjUuMS02NC4zcy0yNi40LTY0LTY0LjEtNjRsLTczLjIgMHpNMjU4LjUgMTY1bDM0LjkgMGMyNi4zIDAgNDEuMyAxNCA0MS4zIDM4LjZzLTE1IDM4LjgtNDEuNCAzOC44bC0zNC44IDAgMC03Ny40ek00MjAuNyAzMzUuOWMxOSAwIDM2LjYtOS42IDQ0LjYtMjQuOWwuNiAwIDAgMjMuNCAyOCAwIDAtOTdjMC0yOC4xLTIyLjUtNDYuMy01Ny4xLTQ2LjMtMzIuMSAwLTU1LjkgMTguNC01Ni44IDQzLjZsMjcuMyAwYzIuMy0xMiAxMy40LTE5LjkgMjguNi0xOS45IDE4LjUgMCAyOC45IDguNiAyOC45IDI0LjVsMCAxMC44LTM3LjggMi4zYy0zNS4xIDIuMS01NC4xIDE2LjUtNTQuMSA0MS41IC4xIDI1LjIgMTkuNyA0MiA0Ny44IDQyem04LjItMjMuMWMtMTYuMSAwLTI2LjQtNy44LTI2LjQtMTkuNiAwLTEyLjMgOS45LTE5LjQgMjguOC0yMC41bDMzLjYtMi4xIDAgMTFjMCAxOC4yLTE1LjUgMzEuMi0zNiAzMS4yem0xMDIuNSA3NC42YzI5LjUgMCA0My40LTExLjMgNTUuNS00NS40bDUzLjEtMTQ5LTMwLjggMC0zNS42IDExNS4xLS42IDAtMzUuNi0xMTUuMS0zMS42IDAgNTEuMiAxNDEuOS0yLjggOC42Yy00LjYgMTQuNi0xMi4xIDIwLjMtMjUuNSAyMC4zLTIuNCAwLTctLjMtOC45LS41bDAgMjMuNGMxLjggLjQgOS4zIC43IDExLjYgLjd6Il19LEVQdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJhcnRzdGF0aW9uIixpY29uOls1MTIsNTEyLFtdLCJmNzdhIiwiTTIuMSAzNzcuNGw0MyA3NC4zYzQuMyA4LjUgMTAuOCAxNS43IDE4LjkgMjAuN3MxNy40IDcuNiAyNyA3LjZsMjg1LjQgMC01OS4yLTEwMi42LTMxNS4xIDB6TTUwMS45IDM1MEwzMzUuNyA1OS4zYy00LjQtOC4yLTEwLjktMTUuMS0xOC45LTIwUzI5OS43IDMyIDI5MC40IDMybC04OC40IDAgMjU3LjMgNDQ3LjYgNDAuNy03MC41YzEuOS0zLjIgMjEtMjkuNyAyLTU5LjF6TTI3NS4yIDMwNC41bC0xMTUuNS0yMDAtMTE1LjUgMjAwIDIzMSAweiJdfSxQUHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToibm9kZS1qcyIsaWNvbjpbNDQ4LDUxMixbXSwiZjNkMyIsIk0yMjQuNSA1MDhjLTYuNyAwLTEzLjUtMS44LTE5LjQtNS4ybC02MS43LTM2LjVjLTkuMi01LjItNC43LTctMS43LTggMTIuMy00LjMgMTQuOC01LjIgMjcuOS0xMi43IDEuNC0uOCAzLjItLjUgNC42IC40bDQ3LjQgMjguMWMxLjcgMSA0LjEgMSA1LjcgMEw0MTIgMzY3LjVjMS43LTEgMi44LTMgMi44LTVsMC0yMTMuMmMwLTIuMS0xLjEtNC0yLjktNS4xTDIyNy4zIDM3LjdjLTEuNy0xLTQtMS01LjcgMEwzNy4xIDE0NC4zYy0xLjggMS0yLjkgMy0yLjkgNS4xbDAgMjEzLjFjMCAyIDEuMSA0IDIuOSA0LjlsNTAuNiAyOS4yYzI3LjUgMTMuNyA0NC4zLTIuNCA0NC4zLTE4LjdsMC0yMTAuNGMwLTMgMi40LTUuMyA1LjQtNS4zbDIzLjQgMGMyLjkgMCA1LjQgMi4zIDUuNCA1LjNsMCAyMTAuNWMwIDM2LjYtMjAgNTcuNi01NC43IDU3LjYtMTAuNyAwLTE5LjEgMC00Mi41LTExLjZMMjAuNiAzOTYuMWMtMTItNi45LTE5LjQtMTkuOC0xOS40LTMzLjdsMC0yMTMuMWMwLTEzLjggNy40LTI2LjggMTkuNC0zMy43TDIwNS4xIDljMTEuNy02LjYgMjcuMi02LjYgMzguOCAwTDQyOC42IDExNS43YzEyIDYuOSAxOS40IDE5LjggMTkuNCAzMy43bDAgMjEzLjFjMCAxMy44LTcuNCAyNi43LTE5LjQgMzMuN0wyNDMuOSA1MDIuOGMtNS45IDMuNC0xMi42IDUuMi0xOS40IDUuMnpNMzczLjYgMjk3LjljMC0zOS45LTI3LTUwLjUtODMuNy01OC01Ny40LTcuNi02My4yLTExLjUtNjMuMi0yNC45IDAtMTEuMSA0LjktMjUuOSA0Ny40LTI1LjkgMzcuOSAwIDUxLjkgOC4yIDU3LjcgMzMuOCAuNSAyLjQgMi43IDQuMiA1LjIgNC4ybDI0IDBjMS41IDAgMi45LS42IDMuOS0xLjdzMS41LTIuNiAxLjQtNC4xYy0zLjctNDQuMS0zMy02NC42LTkyLjItNjQuNi01Mi43IDAtODQuMSAyMi4yLTg0LjEgNTkuNSAwIDQwLjQgMzEuMyA1MS42IDgxLjggNTYuNiA2MC41IDUuOSA2NS4yIDE0LjggNjUuMiAyNi43IDAgMjAuNi0xNi42IDI5LjQtNTUuNSAyOS40LTQ4LjkgMC01OS42LTEyLjMtNjMuMi0zNi42LS40LTIuNi0yLjYtNC41LTUuMy00LjVsLTIzLjkgMGMtMyAwLTUuMyAyLjQtNS4zIDUuMyAwIDMxLjEgMTYuOSA2OC4yIDk3LjggNjguMiA1OC40LS4xIDkyLTIzLjIgOTItNjMuNHoiXX0sSVB0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InVuY2hhcnRlZCIsaWNvbjpbNDQ4LDUxMixbXSwiZTA4NCIsIk0xNzEuOCAyMzIuOGMxLjEgMCAyLjEtLjMgMy0uOXMxLjYtMS40IDItMi40YzIuMi05LjggNy40LTE4LjYgMTQuOS0yNS4zIDEuMi0uOCAxLjctMi41IDEuNy00LjEtLjEtLjctLjMtMS4zLS42LTEuOXMtLjktMS4xLTEuNC0xLjRMNzQuNSAxMjguNSAxNDkuMSA4NWMxLjUtLjggMi43LTIgMy42LTMuNXMxLjQtMy4xIDEuNC00LjhjMC0xLjctLjQtMy40LTEuMy00LjlzLTIuMi0yLjctMy43LTMuNEwxMjYuNyA1NS42Yy0xLjUtLjgtMy4xLTEuMi00LjgtMS4ycy0zLjMgLjQtNC44IDEuMkwxNyAxMTMuNmMtMS41IC44LTIuNyAyLTMuNiAzLjVzLTEuNCAzLjEtMS40IDQuOEwxMiAyMzdjMCAxLjcgLjQgMy40IDEuMyA0LjlzMi4yIDIuNyAzLjcgMy40bDIyLjQgMTIuOGMxLjUgLjkgMy4yIDEuMyA1IDEuMiAyLjQgLjEgNC44LS44IDYuNi0yLjUgMS44LTEuOSAyLjgtNC40IDIuOS03bDAtODUuMyAxMTUuOSA2Ny45Yy42IC4zIDEuNCAuNCAyLjEgLjR6TTMyMy40IDM3Ny43Yy0xLjcgLjEtMy40IC41LTUgMS4ybC03NC41IDQzLjEgMC0xMzQuMmMwLTIuOS0yLjktNS44LTYuMi00LjYtOS40IDIuOC0xOS41IDMtMjkgLjQtLjctLjItMS41LS4yLTIuMi0uMXMtMS40IC40LTIgLjktMS4xIDEtMS40IDEuNy0uNSAxLjQtLjUgMi4xbDAgMTMzLjMtNzQuNS00My4xYy0xLjUtLjktMy4yLTEuMy01LTEuMi0yLjUgMC00LjkgMS02LjcgMi44cy0yLjggNC4yLTIuOCA2LjdsMCAyNi4xYzAgMS43IC40IDMuNCAxLjMgNC45czIuMiAyLjcgMy43IDMuNGwxMDAuMiA1Ny42YzEuNSAuOSAzLjIgMS4zIDUgMS4yIDEuNyAwIDMuNC0uNCA1LTEuMmwxMDAuMi01Ny42YzEuNS0uOCAyLjctMiAzLjYtMy41czEuNC0zLjEgMS40LTQuOGwwLTI2LjFjLS44LTQuNi01LjQtOS4xLTEwLjQtOS4xek0yODYuMSA3OGEyMyAyMyAwIDEgMCAwLTQ2IDIzIDIzIDAgMSAwIDAgNDZ6bTYzLjYtMTAuMWEyMyAyMyAwIDEgMCAwIDQ2IDIzIDIzIDAgMSAwIDAtNDZ6bTYzLjIgODMuN2EyMyAyMyAwIDEgMCAwLTQ2IDIzIDIzIDAgMSAwIDAgNDZ6bS02My4yLTkuMmEyMyAyMyAwIDEgMCAwIDQ2IDIzIDIzIDAgMSAwIDAtNDZ6bS02My42IDgzLjJjNC41IDAgOS0xLjMgMTIuOC0zLjlzNi43LTYuMSA4LjUtMTAuMyAyLjItOC44IDEuMy0xMy4zLTMuMS04LjYtNi4zLTExLjgtNy4zLTUuNC0xMS44LTYuMy05LjEtLjQtMTMuMyAxLjMtNy44IDQuNy0xMC4zIDguNS0zLjkgOC4yLTMuOSAxMi44YzAgMyAuNiA2IDEuOCA4LjhzMi45IDUuMyA1IDcuNSA0LjcgMy44IDcuNSA1IDUuOCAxLjggOC44IDEuOGwwIDB6TTIyNCAyNjJjNC41IDAgOS0xLjQgMTIuOC0zLjlzNi43LTYuMSA4LjUtMTAuMyAyLjItOC44IDEuMy0xMy4zLTMuMS04LjYtNi4zLTExLjgtNy4zLTUuNC0xMS44LTYuMy05LjEtLjQtMTMuMyAxLjMtNy44IDQuNy0xMC4zIDguNS0zLjkgOC4yLTMuOSAxMi44YzAgMyAuNiA2IDEuNyA4LjhzMi44IDUuMyA1IDcuNSA0LjcgMy44IDcuNSA1IDUuOCAxLjggOC44IDEuOGwwIDB6bTE4OC45LTgyLjRjLTQuNiAwLTkgMS4zLTEyLjggMy45cy02LjcgNi4xLTguNSAxMC4zLTIuMiA4LjgtMS4zIDEzLjMgMy4xIDguNiA2LjMgMTEuOCA3LjMgNS40IDExLjggNi4zIDkuMSAuNCAxMy4zLTEuMyA3LjgtNC43IDEwLjMtOC41IDMuOS04LjIgMy45LTEyLjhjMC02LjEtMi40LTExLjktNi43LTE2LjNzLTEwLjItNi43LTE2LjMtNi43bDAgMHptMCA3Mi4zYy00LjYgMC05IDEuMy0xMi44IDMuOXMtNi43IDYuMS04LjUgMTAuMy0yLjIgOC44LTEuMyAxMy4zIDMuMSA4LjYgNi4zIDExLjggNy4zIDUuNCAxMS44IDYuMyA5LjEgLjQgMTMuMy0xLjMgNy44LTQuNyAxMC4zLTguNSAzLjktOC4yIDMuOS0xMi44YzAtNi4xLTIuNC0xMS45LTYuNy0xNi4zcy0xMC4yLTYuNy0xNi4zLTYuN2wwIDB6Il19LEFQdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJwbGF5c3RhdGlvbiIsaWNvbjpbNTc2LDUxMixbXSwiZjNkZiIsIk01NzEgMzcyLjNjLTExLjMgMTQuMi0zOC44IDI0LjMtMzguOCAyNC4zbC0yMDUuMSA3My42IDAtNTQuMyAxNTAuOS01My44YzE3LjEtNi4xIDE5LjgtMTQuOCA1LjgtMTkuNC0xMy45LTQuNi0zOS4xLTMuMy01Ni4yIDIuOWwtMTAwLjUgMzUuNSAwLTU2LjRjMjMuMi03LjggNDcuMS0xMy42IDc1LjctMTYuOCA0MC45LTQuNSA5MC45IC42IDEzMC4yIDE1LjUgNDQuMiAxNCA0OS4yIDM0LjcgMzggNDguOXpNMzQ2LjYgMjc5LjhsMC0xMzljMC0xNi4zLTMtMzEuMy0xOC4zLTM1LjYtMTEuNy0zLjgtMTkgNy4xLTE5IDIzLjRsMCAzNDcuOS05My44LTI5LjggMC00MTQuN2MzOS45IDcuNCA5OCAyNC45IDEyOS4yIDM1LjQgNzkuNSAyNy4zIDEwNi40IDYxLjMgMTA2LjQgMTM3LjggMCA3NC41LTQ2IDEwMi44LTEwNC41IDc0LjZ6TTQzLjMgNDEwLjJjLTQ1LjQtMTIuOC01My0zOS41LTMyLjMtNTQuOCAxOS4xLTE0LjIgNTEuNy0yNC45IDUxLjctMjQuOWwxMzQuNS00Ny44IDAgNTQuNS05Ni44IDM0LjZjLTE3LjEgNi4xLTE5LjcgMTQuOC01LjggMTkuNHMzOS4xIDMuMyA1Ni4yLTIuOWw0Ni40LTE2LjkgMCA0OC44Yy01MS42IDkuMy0xMDEuNCA3LjMtMTUzLjktMTB6Il19LE5QdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJtaWNyb2Jsb2ciLGljb246WzQ0OCw1MTIsW10sImUwMWEiLCJNMzk5LjggMzYyLjJjMjkuNS0zNC43IDQ3LjEtNzguMyA0Ny4xLTEyNS44IDAtMTEzLTk5LjYtMjA0LjQtMjIyLjUtMjA0LjRTMiAxMjMuNSAyIDIzNi40IDEwMS42IDQ0MC45IDIyNC41IDQ0MC45YzI3IDAgNTMuOS00LjUgNzkuNC0xMy40IDEuNC0uNSAzLS41IDQuNS0uMXMyLjcgMS40IDMuNiAyLjZjMTguNiAyNS4xIDQ3LjYgNDIuNyA3OS45IDQ5LjkgMS4xIC4yIDIuMyAwIDMuMy0uNnMxLjctMS42IDEuOS0yLjhjLjEtLjYgLjEtMS4zIDAtMS45cy0uNC0xLjItLjgtMS43Yy0xMi4zLTE2LTE4LjctMzUuOC0xOC01NnM4LjQtMzkuNSAyMS43LTU0LjdsLS4yIC4xek0zMzAgMjEyLjRsLTU3LjMgNDMuNSAyMC44IDY4LjljLjQgMS4zIC40IDIuNy0uMSA0cy0xLjIgMi40LTIuMyAzLjItMi40IDEuMi0zLjggMS4yLTIuNy0uNC0zLjgtMS4ybC01OS4xLTQxLTU5LjEgNDEuMWMtMS4xIC44LTIuNCAxLjItMy44IDEuMnMtMi43LS40LTMuOC0xLjItMS45LTEuOS0yLjMtMy4yLS41LTIuNy0uMS00bDIwLjgtNjguOS01Ny4zLTQzLjVjLTEuMS0uOC0xLjktMS45LTIuMy0zLjJzLS40LTIuNyAwLTQgMS4yLTIuNCAyLjMtMy4yIDIuNC0xLjMgMy43LTEuM2w3MS45LTEuNSAyMy43LTY3LjljLjQtMS4zIDEuMy0yLjQgMi40LTMuMnMyLjQtMS4yIDMuOC0xLjIgMi43IC40IDMuOCAxLjIgMS45IDEuOSAyLjQgMy4ybDIzLjcgNjcuOSA3MS45IDEuNWMxLjQgMCAyLjcgLjQgMy44IDEuMnMxLjkgMS45IDIuMyAzLjIgLjQgMi43IDAgNC0xLjIgMi40LTIuMyAzLjNsMCAweiJdfSxSUHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZ2l0a3Jha2VuIixpY29uOls1NzYsNTEyLFtdLCJmM2E2IiwiTTU1Ny43IDExOC4xYy0yLjMtNi4xLTkuMy05LjItMTUuMy02LjYtNS43IDIuNC04LjUgOC45LTYuMyAxNC42IDEwLjkgMjkgMTYuOSA2MC41IDE2LjkgOTMuMyAwIDEzNC42LTEwMC4zIDI0NS43LTIzMC4yIDI2Mi43bDAtMTIzLjdjNy45LTEuNSAxNS41LTMuNiAyMy02LjJsMCAxMDRjMTA2LjctMjUuOSAxODUuOS0xMjIuMSAxODUuOS0yMzYuOCAwLTkxLjgtNTAuOC0xNzEuOC0xMjUuOC0yMTMuMy01LjctMy4yLTEzLS45LTE1LjkgNS0yLjcgNS41LS42IDEyLjIgNC43IDE1LjEgNjcuOSAzNy42IDExMy45IDExMCAxMTMuOSAxOTMuMiAwIDkzLjMtNTcuOSAxNzMuMS0xMzkuOCAyMDUuNGwwLTkyLjJjMTQuMi00LjUgMjQuOS0xNy43IDI0LjktMzMuNSAwLTEzLjEtNi44LTI0LjQtMTcuMy0zMC41IDguMy03OS41IDQ0LjUtNTguNiA0NC41LTgzLjlsMC0xNC43YzAtMzgtODcuOS0xNjEuOC0xMjktMTY0LjctMi41LS4yLTUtLjItNy42IDAtNDEuMiAzLTEyOS4xIDEyNi43LTEyOS4xIDE2NC43bDAgMTQuOGMwIDI1LjMgMzYuMyA0LjMgNDQuNSA4My45LTEwLjYgNi4xLTE3LjMgMTcuNC0xNy4zIDMwLjUgMCAxNS44IDEwLjYgMjkgMjQuOCAzMy41bDAgOTIuMmMtODEuOS0zMi4yLTEzOS44LTExMi0xMzkuOC0yMDUuNCAwLTgzLjEgNDYtMTU1LjUgMTEzLjktMTkzLjIgNS40LTMgNy40LTkuNiA0LjctMTUuMS0yLjktNS45LTEwLjEtOC4yLTE1LjktNS03NSA0MS41LTEyNS44IDEyMS41LTEyNS44IDIxMy4zIDAgMTE0LjcgNzkuMiAyMTAuOCAxODUuOSAyMzYuOGwwLTEwNGM3LjYgMi41IDE1LjEgNC42IDIzIDYuMmwwIDEyMy43Yy0xMjkuOC0xNy0yMzAuMi0xMjguMS0yMzAuMi0yNjIuNyAwLTMyLjggNi02NC4zIDE2LjktOTMuMyAyLjItNS44LS42LTEyLjItNi4zLTE0LjYtNi0yLjYtMTMgLjQtMTUuMyA2LjYtMTEuOCAzMS41LTE4LjMgNjUuNi0xOC4zIDEwMS4zIDAgMTU1LjEgMTIyLjYgMjgxLjYgMjc2LjMgMjg3LjhsMC0xNDUuOWM2LjggLjQgMTUgLjUgMjMuNCAwbDAgMTQ1LjhjMTUzLjctNi4xIDI3Ni4zLTEzMi42IDI3Ni4zLTI4Ny43IDAtMzUuNy02LjUtNjkuOC0xOC4zLTEwMS40ek0zNTcuOSAzMjIuOWEyMy43IDIzLjcgMCAxIDEgMC00Ny40IDIzLjcgMjMuNyAwIDEgMSAwIDQ3LjR6TTIxOC4xIDI3NS40YTIzLjcgMjMuNyAwIDEgMSAwIDQ3LjQgMjMuNyAyMy43IDAgMSAxIDAtNDcuNHoiXX0sZWdlPXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InRlbGVncmFtIixpY29uOls1MTIsNTEyLFs2MjQ2MiwidGVsZWdyYW0tcGxhbmUiXSwiZjJjNiIsIk0yNTYgOGEyNDggMjQ4IDAgMSAwIDAgNDk2IDI0OCAyNDggMCAxIDAgMC00OTZ6TTM3MSAxNzYuN2MtMy43IDM5LjItMTkuOSAxMzQuNC0yOC4xIDE3OC4zLTMuNSAxOC42LTEwLjMgMjQuOC0xNi45IDI1LjQtMTQuNCAxLjMtMjUuMy05LjUtMzkuMy0xOC43LTIxLjgtMTQuMy0zNC4yLTIzLjItNTUuMy0zNy4yLTI0LjUtMTYuMS04LjYtMjUgNS4zLTM5LjUgMy43LTMuOCA2Ny4xLTYxLjUgNjguMy02Ni43IC4yLS43IC4zLTMuMS0xLjItNC40cy0zLjYtLjgtNS4xLS41Yy0yLjIgLjUtMzcuMSAyMy41LTEwNC42IDY5LjEtOS45IDYuOC0xOC45IDEwLjEtMjYuOSA5LjktOC45LS4yLTI1LjktNS0zOC42LTkuMS0xNS41LTUtMjcuOS03LjctMjYuOC0xNi4zIC42LTQuNSA2LjctOSAxOC40LTEzLjcgNzIuMy0zMS41IDEyMC41LTUyLjMgMTQ0LjYtNjIuMyA2OC45LTI4LjYgODMuMi0zMy42IDkyLjUtMzMuOCAyLjEgMCA2LjYgLjUgOS42IDIuOSAyIDEuNyAzLjIgNC4xIDMuNSA2LjcgLjUgMy4yIC42IDYuNSAuNCA5Ljh6Il19LE9QdD1lZ2UsRlB0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InVsdHJhbHl0aWNzIixpY29uOls1MTIsNTEyLFtdLCJlODZkIiwiTTM5MS40IDM5LjdjNjUuOC0uMiAxMTguNiA1MS44IDEyMC40IDExNi42IC43IDI2LjQtMS41IDU0LjEtMy44IDc0LjEtMTcuMiAxNDguNi0xMjIuNCAyNDItMjUyLjQgMjQyLTk1LjQtLjEtMTc5LjQtNTIuNy0yMjMuMi0xMzAuNiAyNC40IDE3LjQgNTQuNSAyNy40IDg3LjYgMjcuNCA4My4yIC4xIDE1MS40LTY3LjQgMTUxLjItMTUwbC4xLTYwLjZjLS4yLTY1LjcgNTMuOS0xMTkgMTIwLjEtMTE4Ljl6TTExOS45IDEwMC4yYzY2LjIgMCAxMTkuOSA1My4zIDExOS45IDExOVMxODYuMSAzMzguMyAxMTkuOSAzMzguMyAwIDI4NSAwIDIxOS4zYzAtNjUuNyA1My43LTExOSAxMTkuOS0xMTl6Il19LEJQdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJpdHVuZXMtbm90ZSIsaWNvbjpbMzg0LDUxMixbXSwiZjNiNSIsIk0zODEuOSAzODguMmMtNi40IDI3LjQtMjcuMiA0Mi44LTU1LjEgNDgtMjQuNSA0LjUtNDQuOSA1LjYtNjQuNS0xMC4yLTIzLjktMjAuMS0yNC4yLTUzLjQtMi43LTc0LjQgMTctMTYuMiA0MC45LTE5LjUgNzYuOC0yNS44IDYtMS4xIDExLjItMi41IDE1LjYtNy40IDYuNC03LjIgNC40LTQuMSA0LjQtMTYzLjIgMC0xMS4yLTUuNS0xNC4zLTE3LTEyLjMtOC4yIDEuNC0xODUuNyAzNC42LTE4NS43IDM0LjYtMTAuMiAyLjItMTMuNCA1LjItMTMuNCAxNi43IDAgMjM0LjcgMS4xIDIyMy45LTIuNSAyMzkuNS00LjIgMTguMi0xNS40IDMxLjktMzAuMiAzOS41LTE2LjggOS4zLTQ3LjIgMTMuNC02My40IDEwLjQtNDMuMi04LjEtNTguNC01OC0yOS4xLTg2LjYgMTctMTYuMiA0MC45LTE5LjUgNzYuOC0yNS44IDYtMS4xIDExLjItMi41IDE1LjYtNy40IDEwLjEtMTEuNSAxLjgtMjU2LjYgNS4yLTI3MC4yIC44LTUuMiAzLTkuNiA3LjEtMTIuOSA0LjItMy41IDExLjgtNS41IDEzLjQtNS41IDIwNC0zOC4yIDIyOC45LTQzLjEgMjMyLjQtNDMuMSAxMS41LS44IDE4LjEgNiAxOC4xIDE3LjYgLjIgMzQ0LjUgMS4xIDMyNi0xLjggMzM4LjV6Il19LEhQdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJsZXNzIixpY29uOls2NDAsNTEyLFtdLCJmNDFkIiwiTTYxMy4yIDIxOWMwLTIwLjUgMy4yLTMyLjYgMy4yLTU0LjYgMC0zNC4yLTEyLjYtNDUuMi00MC41LTQ1LjJsLTIwLjUgMCAwIDI0LjIgNi4zIDBjMTQuMiAwIDE3LjMgNC43IDE3LjMgMjIuMSAwIDE2LjMtMS42IDMyLjYtMS42IDUxLjUgMCAyNC4yIDcuOSAzMy42IDIzLjYgMzcuM2wwIDEuNmMtMTUuOCAzLjctMjMuNiAxMy4xLTIzLjYgMzcuMyAwIDE4LjkgMS42IDM0LjIgMS42IDUxLjUgMCAxNy45LTMuNyAyMi42LTE3LjMgMjIuNmwwIC41LTYuMyAwIDAgMjUuMiAyMC41IDBjMjcuOCAwIDQwLjUtMTEgNDAuNS00NS4yIDAtMjIuNi0zLjItMzQuMi0zLjItNTQuNiAwLTExIDYuOC0yMi42IDI3LjMtMjMuNmwwLTI3LjNjLTIwLjUtLjctMjcuMy0xMi4zLTI3LjMtMjMuM3pNNTA3LjYgMjUxYy0xNS44LTYuMy0zMC41LTEwLTMwLjUtMjAuNSAwLTcuOSA2LjMtMTIuNiAxNy45LTEyLjZzMjIuMSA0LjcgMzMuNiAxMy4xbDIxLTI3LjhjLTEzLjEtMTAtMzEtMjAuNS01NS4yLTIwLjUtMzUuNyAwLTU5LjkgMjAuNS01OS45IDQ5LjQgMCAyNS43IDIyLjYgMzguOSA0MS41IDQ2LjIgMTYuMyA2LjMgMzIuMSAxMS42IDMyLjEgMjIuMSAwIDcuOS02LjMgMTMuMS0yMC41IDEzLjEtMTMuMSAwLTI2LjMtNS4zLTQwLjUtMTYuM2wtMjEgMzAuNWMxNS44IDEzLjEgMzkuOSAyMi4xIDU5LjkgMjIuMSA0MiAwIDY0LjYtMjIuMSA2NC42LTUxcy0yMi41LTQxLTQzLTQ3Ljh6TTE0OC43IDMxMC40Yy0zLjcgMC04LjQtMy4yLTguNC0xMy4xbDAtMTc4LjItNzQuNiAwYy0yOC40IDAtNDEgMTEtNDEgNDUuMiAwIDIyLjYgMy4yIDM1LjIgMy4yIDU0LjYgMCAxMS02LjggMjIuNi0yNy4zIDIzLjZsMCAyNy4zYzIwLjUgLjUgMjcuMyAxMi4xIDI3LjMgMjMuMSAwIDE5LjQtMy4yIDMxLTMuMiA1My42IDAgMzQuMiAxMi42IDQ1LjIgNDAuNSA0NS4ybDIwLjUgMCAwLTI0LjItNi4zIDBjLTEzLjEgMC0xNy4zLTUuMy0xNy4zLTIyLjZzMS42LTMyLjEgMS42LTUxLjVjMC0yNC4yLTcuOS0zMy42LTIzLjYtMzcuM2wwLTEuNmMxNS44LTMuNyAyMy42LTEzLjEgMjMuNi0zNy4zIDAtMTguOS0xLjYtMzQuMi0xLjYtNTEuNXMzLjctMjIuMSAxNy4zLTIyLjFsMTQuMSAwIDAgMTUwLjhjMCAzMi4xIDExIDUzLjEgNDMuMSA1My4xIDEwIDAgMTcuOS0xLjYgMjMuNi0zLjdsLTUuMy0zNC4yYy0zLjEgLjgtNC42IC44LTYuMiAuOHpNMzgwLjQgMjUxYy0xNi4zLTYuMy0zMS0xMC0zMS0yMC41IDAtNy45IDYuMy0xMi42IDE3LjktMTIuNnMyMi4xIDQuNyAzMy42IDEzLjFsMjEtMjcuOGMtMTMuMS0xMC0zMS0yMC41LTU1LjItMjAuNS0zNS43IDAtNTkuOSAyMC41LTU5LjkgNDkuNCAwIDI1LjcgMjIuNiAzOC45IDQxLjUgNDYuMiAxNi4zIDYuMyAzMi4xIDExLjYgMzIuMSAyMi4xIDAgNy45LTYuMyAxMy4xLTIwLjUgMTMuMS0xMy4xIDAtMjYuMy01LjMtNDAuNS0xNi4zbC0yMC41IDMwLjVjMTUuOCAxMy4xIDM5LjkgMjIuMSA1OS45IDIyLjEgNDIgMCA2NC42LTIyLjEgNjQuNi01MSAuMS0yOC45LTIyLjUtNDEtNDMtNDcuOHptLTE1NS02OC44Yy0zOC40IDAtNzUuMSAzMi4xLTc0LjEgODIuNSAwIDUyIDM0LjIgODIuNSA3OS4zIDgyLjUgMTguOSAwIDM5LjktNi44IDU2LjItMTcuOUwyNzEgMzAxLjVjLTExLjYgNi44LTIyLjYgMTAtMzQuMiAxMC0yMSAwLTM3LjMtMTAtNDEuNS0zNC4ybDk1LjIgMGMuNS0zLjcgMS42LTExIDEuNi0xOS40IC42LTQyLjYtMjIuNi03NS43LTY2LjctNzUuN3ptLTMwIDY2LjJjMy4yLTIxIDE1LjgtMzEgMzAuNS0zMSAxOC45IDAgMjYuMyAxMy4xIDI2LjMgMzFsLTU2LjggMHoiXX0scVB0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImZpcmVmb3giLGljb246WzUxMiw1MTIsW10sImYyNjkiLCJNNTAzLjUgMjQxLjVjLS4xLTEuNi0uMi0zLjEtLjItNC43bDAtLjEtLjQtNC43IDAtLjFjLTEuMy0xMy45LTMuNy0yNy43LTcuMy00MS4yIDAtLjEgMC0uMS0uMS0uMmwtMS4xLTRjLS4xLS4yLS4xLS41LS4yLS42LS40LTEuMi0uNy0yLjUtMS4xLTMuNy0uMS0uMi0uMS0uNi0uMi0uOC0uNC0xLjItLjctMi40LTEuMS0zLjUtLjEtLjQtLjItLjYtLjQtMS0uNC0xLjItLjctMi4zLTEuMi0zLjVsLS40LTEuMWMtLjQtMS4xLS44LTIuMy0xLjItMy40LS4xLS4zLS4yLS43LS40LTEtLjUtMS4xLS44LTIuMy0xLjMtMy40LS4xLS4yLS4yLS42LS40LS44LS41LTEuMi0xLTIuMy0xLjQtMy41IDAtLjEtLjEtLjItLjEtLjQtMS42LTMuOC0zLjItNy43LTUtMTEuNGwtLjQtLjdjLS41LTEtLjgtMS44LTEuMy0yLjYtLjItLjUtLjUtMS4xLS43LTEuNi0uNC0uOC0uOC0xLjYtMS4yLTIuNC0uNC0uNi0uNi0xLjItMS0xLjhzLS44LTEuNC0xLjItMi4zYy0uNC0uNi0uNy0xLjMtMS4xLTEuOXMtLjgtMS40LTEuMi0yLjJjLS40LS43LS44LTEuNC0xLjItMi0uNC0uNy0uOC0xLjMtMS4yLTJzLS44LTEuMy0xLjItMi0uOC0xLjMtMS4yLTEuOS0uOC0xLjQtMS4zLTIuMmMtLjQtLjYtLjgtMS4yLTEuMi0xLjhsLTEuNC0yLjFjLS40LS42LS44LTEuMi0xLjItMS44LS41LS43LTEuMS0xLjYtMS42LTIuMy0uNC0uNS0uNy0xLjEtMS4xLTEuNmwtMS44LTIuNWMtLjQtLjUtLjYtLjgtMS0xLjMtMS0xLjMtMS44LTIuNS0yLjgtMy43LTcuMi05LjQtMTUtMTguMy0yMy41LTI2LjYtNS43LTYtMTEuOC0xMS41LTE4LjMtMTYuNy00LTMuNS04LjItNi43LTEyLjUtOS44LTcuNy01LjgtMTYtMTAuOC0yNC42LTE1LjEtMi40LTEuMy00LjgtMi41LTcuMi0zLjctMTcuNy04LjYtMzYuMy0xNS4yLTU1LjQtMTkuNi0xLjktLjQtMy44LS44LTUuNi0xLjJsLS4xIDBjLTEtLjEtMS44LS40LTIuOC0uNS0xMi41LTIuNC0yNS4yLTMuNy0zOC00bC0xMC42IDBjLTE1LjMgLjItMzAuNSAxLjktNDUuNSA1LTMzLjYgNy4xLTYzLjIgMjEuMi04Mi45IDM5LTEuMSAxLTEuOSAxLjctMi40IDIuMmwtLjUgLjUgLjEgMGMwIDAgLjEgMCAuMSAwczAtLjEgMC0uMWwtLjEgLjFjLjEtLjEgLjEtLjEgLjItLjEgMTQuNi04LjggMzQuOS0xNiA0OS40LTE5LjZsNS45LTEuNGMuNC0uMSAuOC0uMSAxLjItLjIgMS43LS40IDMuNC0uNyA1LjItMS4xIC4yIDAgLjYtLjEgLjgtLjEgNjQuMi0xMS43IDEzMi42IDcuNSAxODAuMiA1MyAxMC4zIDkuOCAxOS4zIDIwLjggMjYuOSAzMi44IDMwLjQgNDkuMiAyNy41IDExMS4xIDMuOCAxNDcuNi0zNC40IDUzLTExMS40IDcxLjMtMTU5IDI0LjgtMTYtMTUuNS0yNS4yLTM2LjctMjUuNi01OS0uMi0xMC43IDItMjEuMiA2LjItMzEgMS43LTMuOCAxMy4xLTI1LjcgMTguMi0yNC42LTEzLjEtMi44LTM3LjUgMi42LTU0LjcgMjguMi0xNS40IDIyLjktMTQuNSA1OC4yLTUgODMuMy02LTEyLjQtMTAuMS0yNS42LTEyLjEtMzkuMi0xMi4yLTgyLjYgNDMuMy0xNTMgOTQuMy0xNzAuNS0yNy41LTI0LTk2LjUtMjIuMy0xNDcuNyAxNS40LTI5LjkgMjItNTEuMiA1My4yLTYyLjUgOTAuNCAxLjctMjAuOSA5LjYtNTIuMSAyNS44LTgzLjktMTcuMiA4LjktMzkgMzctNDkuOCA2Mi45LTE1LjYgMzcuNC0yMSA4Mi4yLTE2LjEgMTI0LjggLjQgMy4yIC43IDYuNCAxLjEgOS42IDE5LjkgMTE3LjEgMTIyIDIwNi40IDI0NC44IDIwNi40IDEzNy4xIDAgMjQ4LjMtMTExLjIgMjQ4LjMtMjQ4LjQtLjEtNC41LS4yLTkuMS0uNS0xMy41eiJdfSxqUHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToia2FnZ2xlIixpY29uOlszMjAsNTEyLFtdLCJmNWZhIiwiTTMwNC4yIDUwMS41TDE1OC40IDMyMC4zIDI5OC4yIDE4NWMyLjYtMi43IDEuNy0xMC41LTUuMy0xMC41bC02OS4yIDBjLTMuNSAwLTcgMS44LTEwLjUgNS4zbC0xMzIuMyAxMzMuNyAwLTMwNmMwLTUtMi41LTcuNS03LjUtNy41TDIxLjUgMEMxNi41IDAgMTQgMi41IDE0IDcuNWwwIDQ5N2MwIDUgMi41IDcuNSA3LjUgNy41bDUxLjkgMGM1IDAgNy41LTIuNSA3LjUtNy41bDAtMTA5IDMwLjgtMjkuMyAxMTAuNSAxNDAuNmMzIDMuNSA2LjUgNS4zIDEwLjUgNS4zbDY2LjkgMGMzLjUgMCA1LjUtMSA2LTNsLTEuNC03LjZ6Il19LFZQdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJmYWNlYm9vay1tZXNzZW5nZXIiLGljb246WzUxMiw1MTIsW10sImYzOWYiLCJNMjU2LjYgOGMtMTQwIDAtMjQ4LjYgMTAyLjMtMjQ4LjYgMjQwLjYgMCA3Mi4zIDI5LjcgMTM0LjggNzguMSAxNzcuOSA4LjMgNy41IDYuNiAxMS45IDggNTguMiAuMSAzLjIgMSA2LjQgMi42IDkuMnMzLjkgNS4yIDYuNyA2LjkgNS45IDIuOCA5LjEgMyA2LjUtLjMgOS41LTEuNkMxNzQuOSA0NzkgMTc1LjYgNDc3LjIgMTg0LjYgNDc5LjYgMzM3LjggNTIxLjggNTA0IDQyMy43IDUwNCAyNDguNiA1MDQgMTEwLjMgMzk2LjYgOCAyNTYuNiA4ek00MDUuOCAxOTMuMWwtNzMgMTE1LjZjLTIuOCA0LjMtNi40IDguMS0xMC42IDExcy05LjEgNC44LTE0LjEgNS44LTEwLjMgLjgtMTUuMy0uNC05LjctMy40LTEzLjgtNi40bC01OC4xLTQzLjVjLTIuNi0xLjktNS44LTMtOS0zcy02LjQgMS4xLTkgM2wtNzguNCA1OS40Yy0xMC41IDcuOS0yNC4yLTQuNi0xNy4xLTE1LjdsNzMtMTE1LjZjMi44LTQuMyA2LjQtOC4xIDEwLjYtMTFzOS4xLTQuOCAxNC4xLTUuOCAxMC4zLS44IDE1LjMgLjQgOS43IDMuNCAxMy45IDYuNGw1OC4xIDQzLjVjMi42IDEuOSA1LjggMyA5IDNzNi40LTEuMSA5LTNsNzguNC01OS40YzEwLjQtOCAyNC4xIDQuNSAxNy4xIDE1LjZ6Il19LFVQdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJhdWRpYmxlIixpY29uOls2NDAsNTEyLFtdLCJmMzczIiwiTTY0MCAxOTkuOWwwIDU0LTMyMCAyMDAtMzIwLTE5OS45IDAtNTQgMzIwIDIwMCAzMjAtMjAwLjF6bS0xOTQuNSA3Mmw0Ny4xLTI5LjRjLTM3LjItNTUuOC0xMDAuNy05Mi42LTE3Mi43LTkyLjZzLTEzNS41IDM2LjctMTcyLjYgOTIuNGwuMyAwYzIuNS0yLjMgNS4xLTQuNSA3LjctNi43IDg5LjctNzQuNCAyMTkuNC01OC4xIDI5MC4yIDM2LjN6TTIyNS40IDI5MC43YzE2LjktMTEuOSAzNi41LTE4LjcgNTcuNC0xOC43IDM0LjQgMCA2NS4yIDE4LjQgODYuNCA0Ny42bDQ1LjQtMjguNGMtMjAuOS0yOS45LTU1LjYtNDkuNS05NC44LTQ5LjUtMzguOSAwLTczLjQgMTkuNC05NC40IDQ5ek0xMDMuNiAxNjEuMUMyMzUuNCA1Ni44IDQyMS44IDg0LjcgNTIxLjEgMjIzLjJsLjcgMSA0OC44LTMwLjRjLTUzLjUtODEuNy0xNDUuOC0xMzUuNy0yNTAuNy0xMzUuNy0xMDMuNSAwLTE5Ni42IDUzLjUtMjUwLjUgMTM1LjYgOS45LTEwLjUgMjIuNy0yMy41IDM0LjItMzIuNnoiXX0sV1B0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InBhdHJlb24iLGljb246WzUxMiw1MTIsW10sImYzZDkiLCJNNDkwIDE1My44Yy0uMS02NS40LTUxLTExOS0xMTAuNy0xMzguMy03NC4yLTI0LTE3Mi0yMC41LTI0Mi45IDEyLjktODUuOCA0MC41LTExMi44IDEyOS4zLTExMy44IDIxNy44LS44IDcyLjggNi40IDI2NC40IDExNC42IDI2NS44IDgwLjMgMSA5Mi4zLTEwMi41IDEyOS41LTE1Mi4zIDI2LjQtMzUuNSA2MC41LTQ1LjUgMTAyLjQtNTUuOSA3Mi0xNy44IDEyMS4xLTc0LjcgMTIxLTE1MGwtLjEgMHoiXX0sR1B0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InZudiIsaWNvbjpbNjQwLDUxMixbXSwiZjQwYiIsIk0xMDQuOSAzNTJjLTM0LjEgMC00Ni40LTMwLjQtNDYuNC0zMC40TDIuNiAyMTAuMVMtNy44IDE5MiAxMyAxOTJsMzIuOCAwYzEwLjQgMCAxMy4yIDguNyAxOC44IDE4LjFsMzYuNyA3NC41czUuMiAxMy4xIDIxLjEgMTMuMSAyMS4xLTEzLjEgMjEuMS0xMy4xbDM2LjctNzQuNWM1LjYtOS41IDguNC0xOC4xIDE4LjgtMTguMWwzMi44IDBjMjAuOCAwIDEwLjQgMTguMSAxMC40IDE4LjFMMTg2LjQgMzIxLjZTMTc0LjIgMzUyIDE0MCAzNTJsLTM1LjEgMHptMzk1IDBjLTM0LjEgMC00Ni40LTMwLjQtNDYuNC0zMC40TDM5Ny42IDIxMC4xUzM4Ny4yIDE5MiA0MDggMTkybDMyLjggMGMxMC40IDAgMTMuMiA4LjcgMTguOCAxOC4xbDM2LjcgNzQuNXM1LjIgMTMuMSAyMS4xIDEzLjEgMjEuMS0xMy4xIDIxLjEtMTMuMWwzNi44LTc0LjVjNS42LTkuNSA4LjQtMTguMSAxOC44LTE4LjFsMzIuOSAwYzIwLjggMCAxMC40IDE4LjEgMTAuNCAxOC4xTDU4MS41IDMyMS42UzU2OS4zIDM1MiA1MzUuMSAzNTJsLTM1LjIgMHpNMzM3LjYgMTkyYzM0LjEgMCA0Ni40IDMwLjQgNDYuNCAzMC40bDU1LjkgMTExLjVTNDUwLjMgMzUyIDQyOS41IDM1MmwtMzIuOCAwYy0xMC40IDAtMTMuMi04LjctMTguOC0xOC4xbC0zNi43LTc0LjVzLTUuMi0xMy4xLTIxLjEtMTMuMS0yMS4xIDEzLjEtMjEuMSAxMy4xbC0zNi43IDc0LjVjLTUuNiA5LjQtOC40IDE4LjEtMTguOCAxOC4xbC0zMi45IDBjLTIwLjggMC0xMC40LTE4LjEtMTAuNC0xOC4xbDU1LjktMTExLjVTMjY4LjMgMTkyIDMwMi41IDE5MmwzNS4xIDB6Il19LEtQdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJwYWdlbGluZXMiLGljb246WzM4NCw1MTIsW10sImYxOGMiLCJNMzg0LjEgMzEyLjdjLTU1LjEgMTM2LjctMTg3LjEgNTQtMTg3LjEgNTQtNDAuNSA4MS44LTEwNy40IDEzNC40LTE4NC42IDEzNC43LTE2LjEgMC0xNi42LTI0LjQgMC0yNC40IDY0LjQtLjMgMTIwLjUtNDIuNyAxNTcuMi0xMTAuMS00MS4xIDE1LjktMTE4LjYgMjcuOS0xNjEuNi04Mi4yIDEwOS00NC45IDE1OS4xIDExLjIgMTc4LjMgNDUuNSA5LjktMjQuNCAxNy01MC45IDIxLjYtNzkuNyAwIDAtMTM5LjcgMjEuOS0xNDkuNS05OC4xIDExOS4xLTQ3LjkgMTUyLjYgNzYuNyAxNTIuNiA3Ni43IDEuNi0xNi43IDMuMy01Mi42IDMuMy01My40IDAgMC0xMDYuMy03My43LTM4LjEtMTY1LjIgMTI0LjYgNDMgNjEuNCAxNjIuNCA2MS40IDE2Mi40IC41IDEuNiAuNSAyMy44IDAgMzMuNCAwIDAgNDUuMi04OSAxMzYuNC01Ny41LTQuMiAxMzQtMTQxLjkgMTA2LjQtMTQxLjkgMTA2LjQtNC40IDI3LjQtMTEuMiA1My40LTIwIDc3LjUgMCAwIDgzLTkxLjggMTcyLTIweiJdfSxZUHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiYW1hem9uIixpY29uOls0NDgsNTEyLFtdLCJmMjcwIiwiTTI1Ny43IDE2Mi43Yy00OC43IDEuOC0xNjkuNSAxNS41LTE2OS41IDExNy41IDAgMTA5LjUgMTM4LjMgMTE0IDE4My41IDQzLjIgNi41IDEwLjIgMzUuNCAzNy41IDQ1LjMgNDYuOGw1Ni44LTU2cy0zMi4zLTI1LjMtMzIuMy01Mi44bDAtMTQ3LjFDMzQxLjUgODkgMzE3IDMyIDIyOS4yIDMyIDE0MS4yIDMyIDk0LjUgODcgOTQuNSAxMzYuM2w3My41IDYuOGMxNi4zLTQ5LjUgNTQuMi00OS41IDU0LjItNDkuNSA0MC43LS4xIDM1LjUgMjkuOCAzNS41IDY5LjF6bTAgODYuOGMwIDgwLTg0LjIgNjgtODQuMiAxNy4yIDAtNDcuMiA1MC41LTU2LjcgODQuMi01Ny44bDAgNDAuNnpNMzkzLjcgNDEzYy03LjcgMTAtNzAgNjctMTc0LjUgNjdTMzQuNyA0MDguNSAxMC4yIDM3OWMtNi44LTcuNyAxLTExLjMgNS41LTguMyA3My4zIDQ0LjUgMTg3LjggMTE3LjggMzcyLjUgMzAuMyA3LjUtMy43IDEzLjMgMiA1LjUgMTJ6bTM5LjggMi4yYy02LjUgMTUuOC0xNiAyNi44LTIxLjIgMzEtNS41IDQuNS05LjUgMi43LTYuNS0zLjhzMTkuMy00Ni41IDEyLjctNTVjLTYuNS04LjMtMzctNC4zLTQ4LTMuMi0xMC44IDEtMTMgMi0xNC0uMy0yLjMtNS43IDIxLjctMTUuNSAzNy41LTE3LjUgMTUuNy0xLjggNDEtLjggNDYgNS43IDMuNyA1LjEgMCAyNy4xLTYuNSA0My4xeiJdfSxaUHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZW52aXJhIixpY29uOls0NDgsNTEyLFtdLCJmMjk5IiwiTTAgMzJjNDc3LjYgMCAzNjYuNiAzMTcuMyAzNjcuMSAzNjYuM2w4MC45IDgxLjctMjYgMC03MC40LTcxLjJDMzEyLjYgNDEzIDIyNy4yIDQ0My4zIDEzNy4yIDM3MS44IDQ3IDMwMC4zIDUyIDIxNC43IDAgMzJ6TTc5LjcgNzhjLTQ5LjctMjMuNS01LjIgOS4yLTUuMiA5LjIgNDUuMiAzMS4yIDY2IDczLjcgOTAuMiAxMTkuOSAzMS41IDYwLjIgNzkgMTM5LjcgMTQ0LjIgMTY3LjcgNjUgMjggMzQuMiAxMi41IDYtOC41LTI4LjItMjEuMi02OC4yLTg3LTkxLTEzMC4yLTMxLjctNjAtNjEtMTE4LjYtMTQ0LjItMTU4LjF6Il19LFhQdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJsaW5vZGUiLGljb246WzQ0OCw1MTIsW10sImYyYjgiLCJNMzY2LjMgMTg2LjlsLTU5LjUgMzYuOS0uOCAzNi45LTI5LjMtMTkuMy0zOS40IDI0LjNjMi4yIDU1LjIgMi41IDU5LjMgMi41IDU5LjVsLTk3LjIgNjUuNC0xNS4xLTEwNC43IDEwOC4xLTYyLTQwLjItMjYtNzUuNCAzOC41LTIxLTE0My4zIDEyOS00OS40LTkxLjMtNDMuNi0xMjUuNyAzOS40IDI3LjcgMTM0LjkgNDEuOSAzMi43LTMxLjggMTUuMSAyMC45IDEwMS40IDI5LjMgMjcuNy0yMC45IDEyLjYgMTYuOCA3OC44IDY2LjIgNjkuNmMtMTAuOC03NC44LTExLjctNzguNi0xMS43LTc4LjhsNzcuOS01NS4zQzI0NCAzNjUuNCAyNDIuMyAzNjcgMjQyLjMgMzY3bC44IDI0LjMgMzMuNSAyOC41LS44LTc3LjEgNDYuOS0zMy41IDI2LjgtMTguNC0yLjUgMzYgMjUuMSAxNy42IDYuNy03NC42IDU4LjctNDMuNi03MS4yLTM5LjR6Il19LFFQdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJhY2N1c29mdCIsaWNvbjpbNjQwLDUxMixbXSwiZjM2OSIsIk0zMjIuMSAyNTJsMC0xLTUxLjItNjUuOHMtMTIgMS42LTI1IDE1LjFjLTkgOS4zLTI0Mi4xIDIzOS4xLTI0My40IDI0MC45LTcgMTAgMS42IDYuOCAxNS43IDEuNyAuOCAwIDExNC41LTM2LjYgMTE0LjUtMzYuNiAuNS0uNi0uMS0uMSAuNi0uNi0uNC01LjEtLjgtMjYuMi0xLTI3LjctLjYtNS4yIDIuMi02LjkgNy04LjlsOTIuNi0zMy44Yy42LS44IDg4LjUtODEuNyA5MC4yLTgzLjN6TTQ4Mi4yIDM3Mi4xYzEzLjMgMTYuMSAyMC43IDEzLjMgMzAuOCA5LjMgMy4yLTEuMiAxMTUuNC00Ny42IDExNy44LTQ4LjkgOC00LjMtMS43LTE2LjctNy4yLTIzLjQtMi4xLTIuNS0yMDUuMS0yNDUuNi0yMDcuMi0yNDguMy05LjctMTIuMi0xNC4zLTEyLjktMzguNC0xMi44LTEwLjIgMC0xMDYuOCAuNS0xMTYuNSAuNi0xOS4yIC4xLTMyLjktLjMtMTkuMiAxNi45IDcuNyA5LjUgMjM0LjIgMjk5LjcgMjM5LjkgMzA2LjZ6bTE1Mi43IDEuNmMtMi4zLS4zLTI0LjYtNC43LTM4LTcuMiAwIDAtMTE1IDUwLjQtMTE3LjUgNTEuNi0xNiA3LjMtMjYuOS0zLjItMzYuNy0xNC42bC01Ny4xLTc0Yy01LjQtLjktNjAuNC05LjYtNjUuMy05LjMtMy4xIC4yLTkuNiAuOC0xNC40IDIuOS00LjkgMi4xLTE0NS4yIDUyLjgtMTUwLjIgNTQuNy01LjEgMi0xMS40IDMuNi0xMS4xIDcuNiAuMiAyLjUgMiAyLjYgNC42IDMuNSAyLjcgLjggMzAwLjkgNjcuNiAzMDggNjkuMSAxNS42IDMuMyAzOC41IDEwLjUgNTMuNiAxLjcgMi4xLTEuMiAxMjMuOC03Ni40IDEyNS44LTc3LjggNS40LTQgNC4zLTYuOC0xLjctOC4yeiJdfSxKUHQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZXJsYW5nIixpY29uOls2NDAsNTEyLFtdLCJmMzlkIiwiTTg3LjIgNTMuNWwtODcuMiAwIDAgNDA1IDEwMC40IDBjLTQ5LjctNTIuNi03OC44LTEyNS4zLTc4LjctMjEyLjEtLjEtNzYuNyAyNC0xNDIuNyA2NS41LTE5Mi45em0yMzguMiA5LjdjLTQ1LjkgLjEtODUuMSAzMy41LTg5LjIgODMuMmwxNjkuOSAwYy0xLjEtNDkuNy0zNC41LTgzLjEtODAuNy04My4yem0yMzAuNy05LjZsLjMgMC0uMS0uMS0uMiAuMXptLjMgMGMzMS40IDQyLjcgNDguNyA5Ny41IDQ2LjIgMTYyLjcgLjUgNiAuNSAxMS43IDAgMjQuMWwtMzcyLjQgMGMtLjIgMTA5LjcgMzguOSAxOTQuOSAxMzguNiAxOTUuMyA2OC41LS4zIDExOC01MSAxNTEuOS0xMDYuMWw5Ni40IDQ4LjJjLTE3LjQgMzAuOS0zNi41IDU3LjgtNTcuOSA4MC44bDgwLjggMCAwLTQwNS04My42IDB6Il19LGVJdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ1bmlzb24iLGljb246WzUxMiw1MTIsW10sImU4NTQiLCJNNDM1LjEgMTYxLjdhMTMuOSAxMy45IDAgMSAxIDE5LjYtMTkuNyAxMy45IDEzLjkgMCAxIDEgLTE5LjYgMTkuN3pNMzY5LjcgOTcuOGMxMC40IDIuMSAyMC42IDUuMiAzMC40IDkuMiA2LjggMi44IDEwLjEgMTAuOCA3LjMgMTcuNy0yLjggNi43LTEwLjkgMTAuMS0xNy42IDcuMy04LjMtMy40LTE2LjgtNS44LTI1LjctNy44LTguNi0xLjctMTcuMy0yLjUtMjYtMi41LTE5LjMgMC0zNy4xLTEwLjMtNDYuNy0yNy04LjctMTUuMS0yMC42LTI4LjktMzQuNy0zOS43LTU5LjEtNDUuNS0xNDMuOC0zNC4zLTE4OS4yIDI1LTIuNiAzLjMtNi41IDUuMy0xMC43IDUuMy03LjQgMC0xMy41LTYuMS0xMy41LTEzLjUgMC0zLjIgMS4yLTYuMyAzLjItOC44IDEyLjktMTYuNyAyOC45LTMwLjcgNDcuMS00MS4yIDc3LjQtNDQuOCAxNzYuNC0xOC4yIDIyMS4xIDU5LjQgNC4zIDguMiAxMy43IDEzLjMgMjIuOCAxMy41IDEwLjggMCAyMS42IDEgMzIuMiAzLjF6TTM1IDI3MGM0LjYtOC4yIDQuNi0xOC4yIDAtMjYuNC0yMS45LTM2LjUtMjcuMy04Mi4zLTE2LjMtMTIzLjIgMS42LTUuOSA2LjktMTAgMTMtMTAgOC43IDAgMTUuMyA4LjcgMTMgMTctOS41IDM1LjQtMy40IDcxIDEzLjcgMTAyLjkgOS4zIDE2LjUgOS4zIDM2LjcgMCA1My4xLTguNyAxNS43LTE0LjggMzIuNC0xNy4yIDUwLjMtOS43IDczLjkgNDIuMyAxNDEuNyAxMTYuMiAxNTEuNCA3LjMgMSAxMi42IDcuOSAxMS42IDE1LjItMSA3LjMtNy44IDEyLjYtMTUuMSAxMS42LTIxLjEtMi44LTQxLjQtOS43LTU5LjgtMjAuMy03NS42LTQzLjYtMTA0LjktMTQ1LjgtNTkuMi0yMjEuNXpNMjE2LjkgNTA5Yy03LjQgMi0xNS4xLTIuNC0xNy4xLTkuOHMyLjUtMTUgOS45LTE2LjljOC41LTIuMiAxNy40IDQuNSAxNy40IDEzLjQgMCA2LjItNC4yIDExLjYtMTAuMiAxMy4zem0xMjIuMy05MWMtOS41IDAtMTguNCA1LTIzLjIgMTMuMi00LjkgOS40LTExLjcgMTguMi0xOC43IDI2LjJsMCAwYy03LjEgOC0xNC44IDE1LjItMjMuMiAyMS43LTUuOSA0LjUtMTQuNCAzLjQtMTktMi41cy0zLjQtMTQuNCAyLjUtMTguOWM3LTUuNCAxMy41LTExLjUgMTkuNC0xOC4xbDAgMGM1LjktNi42IDExLjEtMTMuOCAxNS41LTIxLjYgOS43LTE2LjcgMjcuNS0yNyA0Ni44LTI3IDE3LjggMCAzNS40LTMuNSA1MS44LTEwLjMgNjguMy0yOC4zIDEwMS4xLTEwOC4zIDczLjItMTc2LjUtLjYtMS42LTEtMy4zLTEtNSAwLTcuNCA2LjEtMTMuNSAxMy41LTEzLjUgNS40IDAgMTAuMyAzLjIgMTIuNCA4LjIgOC4yIDE5LjcgMTIuNCA0MC44IDEyLjQgNjIuMSAwIDg5LjUtNzIuNyAxNjIuMS0xNjIuNCAxNjIuMWwwIDB6bS0xMy4xLTI2OGMzLjktLjQgNy45LS42IDExLjktLjYgNTkuMyAwIDEwOC4yIDQ4LjcgMTA4LjIgMTA3LjhTMzk3LjMgMzY1IDMzOCAzNjVjLTQgMC03LjktLjItMTEuOC0uNi0yMi4yLTEuNy00My4zIDEwLjQtNTIuOSAzMC40LTE3LjIgMzkuMS01Ni4yIDY0LjUtOTkuMSA2NC41LTU5LjMgMC0xMDguMi00OC43LTEwOC4yLTEwNy44IDAtMjMuMiA3LjUtNDUuNyAyMS40LTY0LjMgMTIuMi0xOC4zIDEyLjEtNDIuMy0uNC02MC41LTEzLjYtMTguNS0yMC45LTQwLjgtMjAuOS02My43IDAtNTkuMSA0OC44LTEwNy44IDEwOC4yLTEwNy44IDQyLjggMCA4MS44IDI1LjQgOTkgNjQuNCA5LjYgMjAgMzAuNyAzMi4xIDUyLjkgMzAuNHpNMTA2LjggMzkzLjRjMTQuNCAyNS4yIDQxLjEgNDAuOCA2OS44IDQwLjggNDQuMiAwIDgwLjYtMzYuOCA4MC42LTgxLjZzLTM2LjQtODEuNi04MC42LTgxLjZjLTE0LjIgMC0yOC4xIDMuOC00MC4zIDEwLjktMzguMyAyMi40LTUxLjYgNzIuNy0yOS41IDExMS40ek0yNjggMjk4YzE0LjQgMjUuMiA0MS4xIDQwLjggNjkuOCA0MC44IDQ0LjIgMCA4MC42LTM2LjggODAuNi04MS42cy0zNi40LTgxLjYtODAuNi04MS42Yy0xNC4yIDAtMjguMSAzLjgtNDAuMyAxMC45LTM4LjMgMjIuNC01MS42IDcyLjctMjkuNSAxMTEuNHptLTkxLjItNTQuNmM0NC4yIDAgODAuNS0zNi44IDgwLjUtODEuNnMtMzYuNC04MS42LTgwLjYtODEuNi04MC42IDM2LjgtODAuNiA4MS42YzAgNDQuNyAzNi40IDgxLjYgODAuNiA4MS42eiJdfSx0SXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiY2MtZGlzY292ZXIiLGljb246WzU3Niw1MTIsW10sImYxZjIiLCJNNTIwLjQgMTk2LjFjMC03LjktNS41LTEyLjEtMTUuNi0xMi4xbC00LjkgMCAwIDI0LjkgNC43IDBjMTAuMyAwIDE1LjgtNC40IDE1LjgtMTIuOHpNNTI4IDMyTDQ4IDMyQzIxLjUgMzIgMCA1My41IDAgODBMMCA0MzJjMCAyNi41IDIxLjUgNDggNDggNDhsNDgwIDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC0zNTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTQ4My45IDE3MC45YzIyLjYgMCA1Mi45LTQuMSA1Mi45IDI0LjQgMCAxMi42LTYuNiAyMC43LTE4LjcgMjMuMmwyNS44IDM0LjQtMTkuNiAwLTIyLjItMzIuOC0yLjIgMCAwIDMyLjgtMTYgMCAwLTgyek00MjggMTcxbDQ1LjMgMCAwIDE0LTI5LjMgMCAwIDE4LjIgMjguMyAwIDAgMTMuOC0yOC4zIDAgMCAyMi4yIDI5LjMgMCAwIDEzLjgtNDUuMyAwIDAtODJ6bS02OC43IDBsMjEuOSA1NS4yIDIyLjItNTUuMiAxNy41IDAtMzUuNSA4NC4yLTguNiAwLTM1LTg0LjIgMTcuNSAwem0tNTUuOSA4Ni4yYTQ0LjYgNDQuNiAwIDEgMSAwLTg5LjIgNDQuNiA0NC42IDAgMSAxIDAgODkuMnptLTQ5LjMtODMuMWwwIDE5Yy0yMC4xLTIwLjEtNDYuOC00LjctNDYuOCAxOSAwIDI1IDI3LjUgMzguNSA0Ni44IDE5LjJsMCAxOWMtMjkuNyAxNC4zLTYzLjMtNS43LTYzLjMtMzguMiAwLTMxLjIgMzMuMS01MyA2My4zLTM4em0tOTcuMiA2Ni4zYzExLjQgMCAyMi40LTE1LjMtMy4zLTI0LjQtMTUtNS41LTIwLjItMTEuNC0yMC4yLTIyLjcgMC0yMy4yIDMwLjYtMzEuNCA0OS43LTE0LjNsLTguNCAxMC44Yy0xMC40LTExLjYtMjQuOS02LjItMjQuOSAyLjUgMCA0LjQgMi43IDYuOSAxMi4zIDEwLjMgMTguMiA2LjYgMjMuNiAxMi41IDIzLjYgMjUuNiAwIDI5LjUtMzguOCAzNy40LTU2LjYgMTEuM2wxMC4zLTkuOWMzLjcgNy4xIDkuOSAxMC44IDE3LjUgMTAuOHpNNTUuNCAyNTNsLTIzLjQgMCAwLTgyIDIzLjQgMGMyNi4xIDAgNDQuMSAxNyA0NC4xIDQxLjEgMCAxOC41LTEzLjIgNDAuOS00NC4xIDQwLjl6bTY3LjUgMGwtMTYgMCAwLTgyIDE2IDAgMCA4MnpNNTQ0IDQzM2MwIDguMi02LjggMTUtMTUgMTVsLTQwMSAwYzE4OS42LTM1LjYgMzgyLjctMTM5LjIgNDE2LTE2MGwwIDE0NXpNNzQuMSAxOTEuNmMtNS4yLTQuOS0xMS42LTYuNi0yMS45LTYuNmwtNC4yIDAgMCA1NC4yIDQuMiAwYzEwLjMgMCAxNy0yIDIxLjktNi40IDUuNy01LjIgOC45LTEyLjggOC45LTIwLjdzLTMuMi0xNS41LTguOS0yMC41eiJdfSxhSXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToic2FmYXJpIixpY29uOls1MTIsNTEyLFtdLCJmMjY3IiwiTTI3NC43IDI3NC43TDIzNy4zIDIzNy4zIDE2NiAzNDYgMjc0LjcgMjc0Ljd6TTI1NiA4YTI0OCAyNDggMCAxIDAgMCA0OTYgMjQ4IDI0OCAwIDEgMCAwLTQ5NnpNNDExLjggMTgyLjhsMTQuOC02LjFjMS0uNCAyLS42IDMuMS0uNnMyLjEgLjIgMy4xIC42IDEuOCAxIDIuNiAxLjcgMS4zIDEuNiAxLjcgMi42IC42IDIgLjYgMy4xLS4yIDIuMS0uNiAzLjEtMSAxLjktMS43IDIuNi0xLjYgMS4zLTIuNiAxLjdMNDE4IDE5Ny42Yy0yIC44LTQuMiAuOC02LjEgMHMtMy41LTIuNC00LjMtNC4zLS44LTQuMiAwLTYuMSAyLjQtMy41IDQuMy00LjN6TTMxNC40IDk0bDYuMS0xNC44Yy44LTIgMi40LTMuNSA0LjMtNC4zczQuMi0uOCA2LjEgMCAzLjUgMi40IDQuMyA0LjMgLjggNC4yIDAgNi4xbC02LjEgMTQuOGMtLjggMi0yLjQgMy41LTQuMyA0LjNzLTQuMiAuOC02LjEgMGMtMS0uNC0xLjktMS0yLjYtMS43cy0xLjMtMS42LTEuNy0yLjYtLjYtMi0uNi0zLjEgLjItMi4xIC42LTMuMXpNMjU2IDYwYzIuMSAwIDQuMiAuOCA1LjcgMi4zUzI2NCA2NS45IDI2NCA2OGwwIDE2YzAgMi4xLS44IDQuMi0yLjMgNS43cy0zLjUgMi4zLTUuNyAyLjMtNC4yLS44LTUuNy0yLjMtMi4zLTMuNS0yLjMtNS43bDAtMTZjMC0yLjEgLjgtNC4yIDIuMy01LjdTMjUzLjkgNjAgMjU2IDYwek0xODEgNzQuOWMxLS40IDItLjYgMy4xLS42czIuMSAuMiAzLjEgLjYgMS45IDEgMi42IDEuNyAxLjMgMS42IDEuNyAyLjZMMTk3LjYgOTRjLjQgMSAuNyAyIC43IDMuMXMtLjIgMi4xLS42IDMuMS0xIDEuOS0xLjcgMi42LTEuNiAxLjQtMi42IDEuOC0yIC42LTMuMSAuNi0yLjEtLjItMy4xLS42LTEuOS0xLTIuNi0xLjgtMS4zLTEuNy0xLjctMi43bC02LjEtMTQuOGMtLjgtMi0uOC00LjIgMC02LjFzMi40LTMuNSA0LjMtNC4zem0tNjMuNiA0Mi41YzEuNS0xLjUgMy41LTIuMyA1LjctMi4zczQuMiAuOCA1LjcgMi4zTDE0MCAxMjguN2MxLjUgMS41IDIuMyAzLjUgMi4zIDUuNnMtLjggNC4xLTIuMyA1LjZjLTEuNSAxLjUtMy41IDIuMy01LjcgMi4zcy00LjItLjgtNS43LTIuM2wtMTEuMy0xMS4zYy0xLjUtMS41LTIuMy0zLjUtMi4zLTUuNnMuOC00LjEgMi4zLTUuNmwwIDB6TTYwIDI1NmMwLTIuMSAuOC00LjIgMi4zLTUuN1M2NS45IDI0OCA2OCAyNDhsMTYgMGMyLjEgMCA0LjIgLjggNS43IDIuM3MyLjMgMy41IDIuMyA1LjctLjggNC4yLTIuMyA1LjctMy41IDIuMy01LjcgMi4zbC0xNiAwYy0yLjEgMC00LjItLjgtNS43LTIuM1M2MCAyNTguMSA2MCAyNTZ6bTQwLjIgNzMuMmwtMTQuOCA2LjFjLTEgLjQtMiAuNi0zLjEgLjZzLTIuMS0uMi0zLjEtLjYtMS45LTEtMi42LTEuNy0xLjMtMS42LTEuNy0yLjYtLjYtMi0uNi0zLjEgLjItMi4xIC42LTMuMSAxLTEuOSAxLjctMi42IDEuNi0xLjMgMi42LTEuN0w5NCAzMTQuNGMyLS44IDQuMi0uOCA2LjEgMHMzLjUgMi40IDQuMyA0LjMgLjggNC4yIDAgNi4xLTIuNCAzLjUtNC4zIDQuM3ptNC4zLTEzNmMtLjQgMS0xIDEuOS0xLjcgMi42cy0xLjYgMS4zLTIuNiAxLjctMiAuNi0zLjEgLjYtMi4xLS4yLTMuMS0uNmwtMTQuOC02LjFjLTItLjgtMy41LTIuNC00LjMtNC4zcy0uOC00LjIgMC02LjEgMi40LTMuNSA0LjMtNC4zIDQuMi0uOCA2LjEgMGwxNC44IDYuMWMyIC44IDMuNSAyLjQgNC4zIDQuM3MuOCA0LjIgMCA2LjFsMCAwek0xOTcuNiA0MThsLTYuMSAxNC44Yy0uNCAxLTEgMS45LTEuNyAyLjZzLTEuNiAxLjMtMi42IDEuNy0yIC42LTMuMSAuNi0yLjEtLjItMy4xLS42LTEuOS0xLTIuNi0xLjctMS4zLTEuNi0xLjctMi42LS42LTItLjYtMy4xIC4yLTIuMSAuNi0zLjFsNi4xLTE0LjhjLjQtMSAxLTEuOSAxLjctMi43czEuNi0xLjQgMi42LTEuOCAyLS42IDMuMS0uNiAyLjEgLjIgMy4xIC42IDEuOSAxIDIuNiAxLjggMS4zIDEuNyAxLjcgMi42IC42IDIgLjYgMy4xLS4yIDIuMS0uNyAzLjF6TTI2NCA0NDRjMCAyLjEtLjggNC4yLTIuMyA1LjdzLTMuNSAyLjMtNS43IDIuMy00LjItLjgtNS43LTIuMy0yLjMtMy41LTIuMy01LjdsMC0xNmMwLTIuMSAuOC00LjIgMi4zLTUuN3MzLjUtMi4zIDUuNy0yLjMgNC4yIC44IDUuNyAyLjMgMi4zIDMuNSAyLjMgNS43bDAgMTZ6bTY3LTYuOWMtMSAuNC0yIC42LTMuMSAuNnMtMi4xLS4yLTMuMS0uNi0xLjktMS0yLjYtMS43LTEuMy0xLjYtMS43LTIuNkwzMTQuNCA0MThjLS44LTItLjgtNC4yIDAtNi4xczIuNC0zLjUgNC4zLTQuMyA0LjItLjggNi4xIDAgMy41IDIuNCA0LjMgNC4zbDYuMSAxNC44Yy44IDIgLjggNC4yIDAgNi4xcy0yLjQgMy41LTQuMyA0LjN6bTYzLjYtNDIuNWMtMS41IDEuNS0zLjUgMi4zLTUuNyAyLjNzLTQuMi0uOC01LjctMi4zTDM3MiAzODMuM2MtMS41LTEuNS0yLjMtMy41LTIuMy01LjZzLjgtNC4xIDIuMy01LjYgMy41LTIuMyA1LjctMi4zIDQuMiAuOCA1LjcgMi4zbDExLjMgMTEuM2MxLjUgMS41IDIuMyAzLjUgMi4zIDUuNnMtLjggNC4xLTIuMyA1LjZsMCAwek0yODYuMiAyODYuMkwxMTAuMyA0MDEuNyAyMjUuOCAyMjUuOCA0MDEuNyAxMTAuMyAyODYuMiAyODYuMnpNNDM3LjEgMzMxYy0uOCAyLTIuNCAzLjUtNC4zIDQuM3MtNC4yIC44LTYuMSAwbC0xNC44LTYuMWMtMi0uOC0zLjUtMi40LTQuMy00LjNzLS44LTQuMiAwLTYuMWMuNC0xIDEtMS45IDEuNy0yLjZzMS42LTEuMyAyLjYtMS43IDItLjYgMy4xLS42IDIuMSAuMiAzLjEgLjZsMTQuOCA2LjFjMiAuOCAzLjUgMi40IDQuMyA0LjNzLjggNC4yIDAgNi4xem02LjktNjdsLTE2IDBjLTIuMSAwLTQuMi0uOC01LjctMi4zcy0yLjMtMy41LTIuMy01LjcgLjgtNC4yIDIuMy01LjcgMy41LTIuMyA1LjctMi4zbDE2IDBjMi4xIDAgNC4yIC44IDUuNyAyLjNzMi4zIDMuNSAyLjMgNS43LS44IDQuMi0yLjMgNS43LTMuNSAyLjMtNS43IDIuM3oiXX0sc0l0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNwYWNlLWF3ZXNvbWUiLGljb246WzUxMiw1MTIsW10sImU1YWMiLCJNOTYgMjU2bDMyIDAgMCAyNTYtMTI4IDAgMC0xNjAgMzIgMCAwLTMyIDMyIDAgMC0zMiAzMiAwIDAtMzJ6bTQxNiA5NmwwIDE2MC0xMjggMCAwLTI1NiAzMiAwIDAgMzIgMzIgMCAwIDMyIDMyIDAgMCAzMiAzMiAwek0zMjAgNjRsMzIgMCAwIDM4NC0zMiAwIDAtMzItMTI4IDAgMCAzMi0zMiAwIDAtMzg0IDMyIDAgMC0zMiAzMiAwIDAtMzIgNjQgMCAwIDMyIDMyIDAgMCAzMnptLTMyIDY0bC02NCAwIDAgNjQgNjQgMCAwLTY0eiJdfSxpSXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToibm9kZSIsaWNvbjpbNjQwLDUxMixbXSwiZjQxOSIsIk0zMTYuMyA0NTJjLTIuMSAwLTQuMi0uNi02LjEtMS42TDI5MSA0MzljLTIuOS0xLjYtMS41LTIuMi0uNS0yLjUgMy44LTEuMyA0LjYtMS42IDguNy00IC40LS4yIDEtLjEgMS40IC4xbDE0LjggOC44Yy41IC4zIDEuMyAuMyAxLjggMEwzNzUgNDA4Yy41LS4zIC45LS45IC45LTEuNmwwLTY2LjdjMC0uNy0uMy0xLjMtLjktMS42bC01Ny44LTMzLjNjLS41LS4zLTEuMi0uMy0xLjggMGwtNTcuOCAzMy4zYy0uNiAuMy0uOSAxLS45IDEuNmwwIDY2LjdjMCAuNiAuNCAxLjIgLjkgMS41bDE1LjggOS4xYzguNiA0LjMgMTMuOS0uOCAxMy45LTUuOGwwLTY1LjljMC0uOSAuNy0xLjcgMS43LTEuN2w3LjMgMGMuOSAwIDEuNyAuNyAxLjcgMS43bDAgNjUuOWMwIDExLjUtNi4yIDE4LTE3LjEgMTgtMy4zIDAtNiAwLTEzLjMtMy42bC0xNS4yLTguN2MtMy43LTIuMi02LjEtNi4yLTYuMS0xMC41bDAtNjYuN2MwLTQuMyAyLjMtOC40IDYuMS0xMC41bDU3LjgtMzMuNGMzLjctMi4xIDguNS0yLjEgMTIuMSAwbDU3LjggMzMuNGMzLjcgMi4yIDYuMSA2LjIgNi4xIDEwLjVsMCA2Ni43YzAgNC4zLTIuMyA4LjQtNi4xIDEwLjVsLTU3LjggMzMuNGMtMS43IDEuMS0zLjggMS43LTYgMS43ek0zNjMgMzg2LjJjMC0xMi41LTguNC0xNS44LTI2LjItMTguMi0xOC0yLjQtMTkuOC0zLjYtMTkuOC03LjggMC0zLjUgMS41LTguMSAxNC44LTguMSAxMS45IDAgMTYuMyAyLjYgMTguMSAxMC42IC4yIC44IC44IDEuMyAxLjYgMS4zbDcuNSAwYy41IDAgLjktLjIgMS4yLS41IC4zLS40IC41LS44IC40LTEuMy0xLjItMTMuOC0xMC4zLTIwLjItMjguOC0yMC4yLTE2LjUgMC0yNi4zIDctMjYuMyAxOC42IDAgMTIuNyA5LjggMTYuMSAyNS42IDE3LjcgMTguOSAxLjkgMjAuNCA0LjYgMjAuNCA4LjMgMCA2LjUtNS4yIDkuMi0xNy40IDkuMi0xNS4zIDAtMTguNy0zLjgtMTkuOC0xMS40LS4xLS44LS44LTEuNC0xLjctMS40bC03LjUgMGMtLjkgMC0xLjcgLjctMS43IDEuNyAwIDkuNyA1LjMgMjEuMyAzMC42IDIxLjMgMTguNSAwIDI5LTcuMiAyOS0xOS44em01NC41LTUwLjFjMCA2LjEtNSAxMS4xLTExLjEgMTEuMXMtMTEuMS01LTExLjEtMTEuMWMwLTYuMyA1LjItMTEuMSAxMS4xLTExLjEgNi0uMSAxMS4xIDQuOCAxMS4xIDExLjF6bS0xLjggMGMwLTUuMi00LjItOS4zLTkuNC05LjMtNS4xIDAtOS4zIDQuMS05LjMgOS4zczQuMiA5LjQgOS4zIDkuNGM1LjItLjEgOS40LTQuMyA5LjQtOS40em0tNC41IDYuMmwtMi42IDBjLS4xLS42LS41LTMuOC0uNS0zLjktLjItLjctLjQtMS4xLTEuMy0xLjFsLTIuMiAwIDAgNS0yLjQgMCAwLTEyLjUgNC4zIDBjMS41IDAgNC40IDAgNC40IDMuMyAwIDIuMy0xLjUgMi44LTIuNCAzLjEgMS43IC4xIDEuOCAxLjIgMi4xIDIuOCAuMSAxIC4zIDIuNyAuNiAzLjN6bS0yLjgtOC44YzAtMS43LTEuMi0xLjctMS44LTEuN2wtMiAwIDAgMy41IDEuOSAwYzEuNiAwIDEuOS0xLjEgMS45LTEuOHpNMTM3LjMgMTkxYzAtMi43LTEuNC01LjEtMy43LTYuNEw3Mi4zIDE0OS4zYy0xLS42LTIuMi0uOS0zLjQtMWwtLjYgMGMtMS4yIDAtMi4zIC40LTMuNCAxTDMuNyAxODQuNkMxLjQgMTg1LjkgMCAxODguNCAwIDE5MWwuMSA5NWMwIDEuMyAuNyAyLjUgMS44IDMuMnMyLjUgLjcgMy43IDBMNDIgMjY4LjNjMi4zLTEuNCAzLjctMy44IDMuNy02LjRsMC00NC40YzAtMi42IDEuNC01LjEgMy43LTYuNGwxNS41LTguOWMxLjItLjcgMi40LTEgMy43LTFzMi42IC4zIDMuNyAxbDE1LjUgOC45YzIuMyAxLjMgMy43IDMuOCAzLjcgNi40bDAgNDQuNGMwIDIuNiAxLjQgNS4xIDMuNyA2LjRsMzYuNCAyMC45YzEuMSAuNyAyLjYgLjcgMy43IDAgMS4xLS42IDEuOC0xLjkgMS44LTMuMmwuMi05NXpNNDcyLjUgODcuM2wwIDE3Ni40YzAgMi42LTEuNCA1LjEtMy43IDYuNGwtNjEuMyAzNS40Yy0yLjMgMS4zLTUuMSAxLjMtNy40IDBsLTYxLjMtMzUuNGMtMi4zLTEuMy0zLjctMy44LTMuNy02LjRsMC03MC44YzAtMi42IDEuNC01LjEgMy43LTYuNGw2MS4zLTM1LjRjMi4zLTEuMyA1LjEtMS4zIDcuNCAwbDE1LjMgOC44YzEuNyAxIDMuOS0uMyAzLjktMi4ybDAtOTRjMC0yLjggMy00LjYgNS41LTMuMmwzNi41IDIwLjRjMi4zIDEuMiAzLjggMy43IDMuOCA2LjR6bS00NiAxMjguOWMwLS43LS40LTEuMy0uOS0xLjZsLTIxLTEyLjJjLS42LS4zLTEuMy0uMy0xLjkgMGwtMjEgMTIuMmMtLjYgLjMtLjkgLjktLjkgMS42bDAgMjQuM2MwIC43IC40IDEuMyAuOSAxLjZsMjEgMTIuMWMuNiAuMyAxLjMgLjMgMS44IDBsMjEtMTIuMWMuNi0uMyAuOS0uOSAuOS0xLjZsMC0yNC4zIC4xIDB6bTIwOS44LS43YzIuMy0xLjMgMy43LTMuOCAzLjctNi40bDAtMTcuMWMwLTIuNi0xLjQtNS4xLTMuNy02LjRsLTYwLjktMzUuNGMtMi4zLTEuMy01LjEtMS4zLTcuNCAwbC02MS4zIDM1LjRjLTIuMyAxLjMtMy43IDMuOC0zLjcgNi40bDAgNzAuOGMwIDIuNyAxLjQgNS4xIDMuNyA2LjRsNjAuOSAzNC43YzIuMiAxLjMgNSAxLjMgNy4zIDBsMzYuOC0yMC41YzIuNS0xLjQgMi41LTUgMC02LjRMNTUwIDI0MS42Yy0xLjItLjctMS45LTEuOS0xLjktMy4ybDAtMjIuMmMwLTEuMyAuNy0yLjUgMS45LTMuMmwxOS4yLTExLjFjMS4xLS43IDIuNi0uNyAzLjcgMEw1OTIuMSAyMTNjMS4xIC43IDEuOSAxLjkgMS45IDMuMmwwIDE3LjRjMCAyLjggMy4xIDQuNiA1LjYgMy4ybDM2LjctMjEuM3pNNTU5IDIxOWMtLjQgLjMtLjcgLjctLjcgMS4ybDAgMTMuNmMwIC41IC4zIDEgLjcgMS4ybDExLjggNi44Yy40IC4zIDEgLjMgMS40IDBMNTg0IDIzNWMuNC0uMyAuNy0uNyAuNy0xLjJsMC0xMy42YzAtLjUtLjMtMS0uNy0xLjJsLTExLjgtNi44Yy0uNC0uMy0xLS4zLTEuNCAwTDU1OSAyMTl6TTMwNC44IDI2Mi41bDAtNzAuNGMwLTIuNi0xLjYtNS4xLTMuOS02LjRsLTYxLjEtMzUuMmMtMi4xLTEuMi01LTEuNC03LjQgMGwtNjEuMSAzNS4yYy0yLjMgMS4zLTMuOSAzLjctMy45IDYuNGwwIDcwLjRjMCAyLjggMS45IDUuMiA0IDYuNGw2MS4yIDM1LjJjMi40IDEuNCA1LjIgMS4zIDcuNCAwbDYxLTM1LjJjMS44LTEgMy4xLTIuNyAzLjYtNC43IC4xLS41IC4yLTEuMSAuMi0xLjd6TTIzMC41IDEzNy42bC0uOCAuNSAxLjEgMC0uMy0uNXptNzYuMiAxMzAuMmwtLjQtLjcgMCAuOSAuNC0uMnoiXX0sckl0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImNvZGVwZW4iLGljb246WzUxMiw1MTIsW10sImYxY2IiLCJNNTAyLjMgMTU5LjdsLTIzNC0xNTZjLTgtNC45LTE2LjUtNS0yNC42IDBsLTIzNCAxNTZjLTYgNC05LjcgMTEuMS05LjcgMTguM0wwIDMzNGMwIDcuMSAzLjcgMTQuMyA5LjcgMTguM2wyMzQgMTU2YzggNC45IDE2LjUgNSAyNC42IDBsMjM0LTE1NmM2LTQgOS43LTExLjEgOS43LTE4LjNsMC0xNTZjMC03LjEtMy43LTE0LjMtOS43LTE4LjN6TTI3OCA2My4xbDE3Mi4zIDExNC45LTc2LjkgNTEuNC05NS40LTYzLjcgMC0xMDIuNnptLTQ0IDBMMjM0IDE2NS43IDEzOC42IDIyOS40IDYxLjcgMTc4IDIzNCA2My4xek00NCAyMTkuMUw5OS4xIDI1NiA0NCAyOTIuOCA0NCAyMTkuMXpNMjM0IDQ0OC44TDYxLjcgMzM0IDEzOC42IDI4Mi42IDIzNCAzNDYuMyAyMzQgNDQ4Ljh6TTI1NiAzMDhsLTc3LjctNTIgNzcuNy01MiA3Ny43IDUyLTc3LjcgNTJ6bTIyIDE0MC45bDAtMTAyLjYgOTUuNC02My43IDc2LjkgNTEuNC0xNzIuMyAxMTQuOXptMTkwLTE1NmwtNTUuMS0zNi45IDU1LjEtMzYuOSAwIDczLjd6Il19LG9JdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJyYXZlbHJ5IixpY29uOls1MTIsNTEyLFtdLCJmMmQ5IiwiTTQ5OC42IDIzNC4yYy0xLjItMTAuMy0xLjctMjAuOC0zLjctMzEtMi41LTEyLjQtNS43LTI0LjYtOS42LTM2LjYtNi44LTIwLjktMTcuMi00MC4zLTMwLjktNTcuNS01LjktNy42LTEyLjEtMTQuOC0xOC44LTIxLjctMTQuMS0xNC0zMC0yNi4xLTQ3LjEtMzYuMS0xNy44LTEwLjYtMzYuOC0xOC45LTU2LjctMjQuNy0xMS0zLjEtMjIuMy01LjQtMzMuNS03LjYtNi44LTEuMy0xMy43LTEuNy0yMC42LTIuNS0uMyAwLS42LS40LS45LS42LTEwLjggMC0yMS41IDAtMzIuMyAwLTIuNCAuNC00LjggLjktNy4yIDEuMi0xMS42IDEuMi0yMy4xIDMuNi0zNC4zIDcuMS0xMy44IDQuMS0yNy4xIDkuNi0zOS44IDE2LjQtMTMuMyA3LTI2LjEgMTUuMS0zOC4xIDI0LjItNi4yIDQuNi0xMi4zIDkuNC0xOCAxNC41LTEwLjIgOS4yLTIwLjQgMTguNC0yOS45IDI4LjMtMTIuOCAxMy4zLTI0LjEgMjguMS0zMy42IDQ0LTguNiAxNC0xNS41IDI5LTIwLjUgNDQuNi03LjIgMjIuNy0xMC4zIDQ2LjYtOS4yIDcwLjMgLjYgMTMuNSAyIDI2LjkgNC40IDQwLjIgMy40IDE4LjQgOSAzNi4zIDE2LjcgNTMuMyAxMy42IDI5LjIgMzIuMSA1MS41IDUwLjQgNjcuOSAxMi44IDExLjYgMjYuOCAyMS45IDQxLjggMzAuNiAxNy43IDEwLjQgMzYuNCAxOC45IDU1LjkgMjUuMyAxMy4zIDQuMyAyNi45IDcuNiA0MC42IDkuOCA2LjEgMSAxMi4zIDEuMyAxOC40IDEuOSAuNCAuMSAuOCAuMyAxLjIgLjZsMzIuMyAwYzIuNS0uNCA1LS45IDcuNS0xLjEgMTYuMy0xLjMgMzIuMS01LjMgNDcuNS0xMC43IDE3LjItNS45IDMzLjctMTMuOSA0OS0yMy44IDkuNy02LjQgMTkuNC0xMy4xIDI4LjctMjAuMSA1LjgtNC4zIDExLTkuNSAxNi4zLTE0LjUgNC0zLjcgNy44LTcuNiAxMS41LTExLjUgMTItMTIuNyAyMi42LTI2LjYgMzEuNC00MS42IDkuNS0xNiAxNy40LTMyLjkgMjIuMy01MC45IDIuOS0xMC40IDQuOS0yMSA3LTMxLjcgMS01LjMgMS4zLTEwLjcgMS45LTE2LjEgMC0uMyAuNC0uNiAuNi0uOWwwLTM3LjFjLS4yLS42LS40LTEuMi0uNi0xLjh6bS0xNjEuMS0xLjJzLTE2LjYtMy0yOC41LTNjLTI3LjIgMC0zMy42IDE0LjktMzMuNiAzN2wwIDkzLjctNzMuNSAwIDAtMTkwLjcgNzMuNSAwIDAgMzEuOWM4LjktMjYuOCAyNi44LTM2LjIgNjItMzYuMmwwIDY3LjN6Il19LG5JdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJhbGlwYXkiLGljb246WzQ0OCw1MTIsW10sImY2NDIiLCJNMzc3LjcgMzJMNzAuMyAzMkMzMS40IDMyIDAgNjMuNCAwIDEwMi4zTDAgNDA5LjdDMCA0NDguNiAzMS40IDQ4MCA3MC4zIDQ4MGwzMDcuNSAwYzM4LjUgMCA2OS44LTMxLjEgNzAuMy02OS42LTQ2LTI1LjYtMTEwLjYtNjAuMy0xNzEuNi04OC40LTMyLjEgNDQtODQuMSA4MS0xNDguNiA4MS03MC42IDAtOTMuNy00NS4zLTk3LTc2LjQtNC0zOSAxNC45LTgxLjUgOTkuNS04MS41IDM1LjQgMCA3OS40IDEwLjIgMTI3LjEgMjUgMTYuNS0zMC4xIDI2LjUtNjAuMyAyNi41LTYwLjNsLTE3OC4yIDAgMC0xNi43IDkyLjEgMCAwLTMxLjItMTA5LjQgMCAwLTE5IDEwOS40IDAgMC01MC40IDUwLjkgMCAwIDUwLjQgMTA5LjQgMCAwIDE5LTEwOS40IDAgMCAzMS4yIDg4LjggMHMtMTUuMiA0Ni42LTM4LjMgOTAuOWM0OC45IDE2LjcgMTAwIDM2IDE0OC42IDUyLjdsMC0yMzQuNGMuMi0zOC43LTMxLjItNzAuMy02OS45LTcwLjN6TTQ3LjMgMzIzYzEgMjAuMiAxMC4yIDUzLjcgNjkuOSA1My43IDUyLjEgMCA5Mi42LTM5LjcgMTE3LjktNzIuOS00NC42LTE4LjctODQuNS0zMS40LTEwOS40LTMxLjQtNjcuNCAwLTc5LjQgMzMuMS03OC40IDUwLjZ6Il19LGxJdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJjYy1hbWV4IixpY29uOls1NzYsNTEyLFtdLCJmMWYzIiwiTTAgNDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDQ4MCAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtMS4xLTYxLjcgMC0zMS45LTM1LjEtMzEuOSAzNS4xLTIwMy43IDAgMC0xNjMuOC02NS44IDAgODEuNy0xODQuNyA3OC42IDAgMjguMSA2My4yIDAtNjMuMiA5Ny4yIDAgMTYuOSA0Ny42IDE3LTQ3LjYgNzUuNSAwIDAtMi40YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4TDQ4IDMyQzIxLjUgMzIgMCA1My41IDAgODBMMCA0MzJ6bTQ0MC40LTIxLjdsNDIuMi00Ni4zIDQyIDQ2LjMgNTEuNCAwLTY4LTcyLjEgNjgtNzIuMS01MC42IDAtNDIgNDYuNy00MS41LTQ2LjctNTEuNCAwIDY3LjUgNzIuNS02Ny40IDcxLjYgMC0zMy4xLTgzIDAgMC0yMi4yIDgwLjkgMCAwLTMyLjMtODAuOSAwIDAtMjIuNCA4MyAwIDAtMzMuMS0xMjIgMCAwIDE0My4yIDE3MS44IDB6bTk2LjMtNzJsMzkuMyA0MS45IDAtODMuMy0zOS4zIDQxLjR6bS0zNi4zLTkybDM2LjktMTAwLjYgMCAxMDAuNiAzOC43IDAgMC0xNDMuMy02MC4yIDAtMzIuMiA4OS4zLTMxLjktODkuMy02MS4yIDAgMCAxNDMuMS02My4yLTE0My4xLTUxLjIgMC02Mi40IDE0My4zIDQzIDAgMTEuOS0yOC43IDY1LjkgMCAxMiAyOC43IDgyLjcgMCAwLTEwMC4zIDM2LjggMTAwLjMgMzQuNCAwek0yODIgMTg1LjRsMTkuNS00Ni45IDE5LjQgNDYuOS0zOC45IDB6Il19LGNJdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJwaWVkLXBpcGVyLWFsdCIsaWNvbjpbNTc2LDUxMixbXSwiZjFhOCIsIk0yNDQgMjQ2Yy0zLjItMi02LjMtMi45LTEwLjEtMi45LTYuNiAwLTEyLjYgMy4yLTE5LjMgMy43bDEuNyA0LjkgMjcuNy01Ljd6TTM3OS45IDQ0My45Yy0xOSAwLTY0LjEgOS41LTc5LjkgMTkuOGw2LjkgNDUuMWMzNS43IDYuMSA3MC4xIDMuNiAxMDYtOS44LTQuOC0xMC0yMy41LTU1LjEtMzMtNTUuMXpNMzQwLjggMTc3YzYuNiAyLjggMTEuNSA5LjIgMjIuNyAyMi4xIDItMS40IDcuNS01LjIgNy41LTguNiAwLTQuOS0xMS44LTEzLjItMTMuMi0yMyAxMS4yLTUuNyAyNS4yLTYgMzcuNi04LjkgNjguMS0xNi40IDExNi4zLTUyLjkgMTQ2LjgtMTE2LjcgNi4xLTEyLjYgMTEuOC0yNS44IDEyLjQtMzkuOWwtMiAyLjZjLTI4LjQgNTAtMzMgNjMuMi04MS4zIDEwMC0zMS45IDI0LjQtNjkuMiA0MC4yLTEwNi42IDU0LjZsLTYuMy0uMyAwLTIxLjhjLTE5LjYgMS42LTE5LjctMTQuNi0zMS42LTIzLTE4LjcgMjAuNi0zMS42IDQwLjgtNTguOSA1MS4xLTEyLjcgNC44LTE5LjYgMTAtMjUuOSAyMS44IDM0LjktMTYuNCA5MS4yLTEzLjUgOTguOC0xMHpNNTU1LjUgMGwtLjYgMS4xLS4zIC45IC42LS42IC4zLTEuNHpNNDk2LjMgMzgyLjFjLTMzLjktNTYuOS03NS4zLTExOC40LTE1MC0xMTUuNWwtLjMtNmMtMS4xLTEzLjUgMzIuOCAzLjIgMzUuMS0zMWwtMTQuNCA3LjJjLTE5LjgtNDUuNy04LjYtNTQuMy02NS41LTU0LjMtMTQuNyAwLTI2LjcgMS43LTQxLjQgNC42IDIuOSAxOC42IDIuMiAzNi43LTEwLjkgNTAuM2wxOS41IDUuNWMtMS43IDMuMi0yLjkgNi4zLTIuOSA5LjggMCAyMSA0Mi44IDIuOSA0Mi44IDMzLjYgMCAxOC40LTM2LjggNjAuMS01NC45IDYwLjEtOCAwLTUzLjctNTAtNTMuNC02MC4xbC4zLTQuNiA1Mi4zLTExLjVjMTMtMi42IDEyLjMtMjIuNy0yLjktMjIuNy0zLjcgMC00My4xIDkuMi00OS40IDEwLjYtMi01LjItNy41LTE0LjEtMTMuOC0xNC4xLTMuMiAwLTYuMyAzLjItOS41IDQtOS4yIDIuNi0zMSAyLjktMjEuNSAyMC4xTDE1LjkgMjk4LjVjLTUuNSAxLjEtOC45IDYuMy04LjkgMTEuOCAwIDYgNS41IDEwLjkgMTEuNSAxMC45IDggMCAxMzEuMy0yOC40IDE0Ny40LTMyLjIgMi42IDMuMiA0LjYgNi4zIDcuOCA4LjYgMjAuMSAxNC40IDU5LjggODUuOSA3Ni40IDg1LjkgMjQuMSAwIDU4LTIyLjQgNzEuMy00MS45IDMuMi00LjMgNi45LTcuNSAxMi40LTYuOSAuNiAxMy44LTMxLjYgMzQuMi0zMyA0My43LTEuNCAxMC4yLTEgMzUuMi0uMyA0MS4xIDI2LjcgOC4xIDUyLTMuNiA3Ny45LTIuOSA0LjMtMjEgMTAuNi00MS45IDkuOC02My41bC0uMy05LjVjLTEuNC0zNC4yLTEwLjktMzguNS0zNC44LTU4LjYtMS4xLTEuMS0yLjYtMi42LTMuNy00IDIuMi0xLjQgMS4xLTEgNC42LTEuNyA4OC41IDAgNTYuMyAxODMuNiAxMTEuNSAyMjkuOSAzMy4xLTE1IDcyLjUtMjcuOSAxMDMuNS00Ny4yLTI5LTI1LjYtNTIuNi00NS43LTcyLjctNzkuOXpNMzAwLjEgNDI4LjJsMCAyNy4yIDExLjgtMy40LTIuOS0yMy44LTguOSAwek0yMzEuNCAyNzcuOGwyNC4xIDYxLjIgMjEtMTMuOC0zMS4zLTUwLjktMTMuOCAzLjV6bTg0LjQgMTU0LjlsMiAxMi40YzktMS41IDU4LjQtNi42IDU4LjQtMTQuMSAwLTEuNC0uNi0zLjItLjktNC42LTI2LjggMC0zNi45IDMuOC01OS41IDYuM3oiXX0sZEl0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImxldHRlcmJveGQiLGljb246WzY0MCw1MTIsW10sImU2MmQiLCJNNTIxLjMgMTI4QzU4Ni45IDEyOCA2NDAgMTgxLjEgNjQwIDI0Ni42UzU4Ni45IDM2NS4yIDUyMS4zIDM2NS4yYy00Mi41IDAtNzkuNy0yMi4zLTEwMC43LTU1LjggMTEuNC0xOC4yIDE4LTM5LjcgMTgtNjIuOHMtNi42LTQ0LjYtMTgtNjIuOGwuOC0xLjJjMjAuOC0zMi4zIDU2LjgtNTMuOSA5Ny45LTU0LjZsMiAwek0zMjAgMTI4YzQyLjUgMCA3OS43IDIyLjMgMTAwLjcgNTUuOC0xMS40IDE4LjItMTggMzkuNy0xOCA2Mi44czYuNiA0NC42IDE4IDYyLjhsLS44IDEuMmMtMjAuOCAzMi4zLTU2LjggNTMuOS05Ny45IDU0LjZsLTIgMGMtNDIuNSAwLTc5LjctMjIuMy0xMDAuNy01NS44IDExLjQtMTguMiAxOC0zOS43IDE4LTYyLjhzLTYuNi00NC42LTE4LTYyLjhsLjgtMS4yYzIwLjgtMzIuMyA1Ni44LTUzLjkgOTcuOS01NC42bDIgMHptLTIwMS4zIDBjNDIuNSAwIDc5LjcgMjIuMyAxMDAuNyA1NS44LTExLjQgMTguMi0xOCAzOS43LTE4IDYyLjhzNi42IDQ0LjYgMTggNjIuOGwtLjggMS4yYy0yMC44IDMyLjMtNTYuOCA1My45LTk3LjkgNTQuNmwtMiAwQzUzLjEgMzY1LjEgMCAzMTIuMSAwIDI0Ni42UzUzLjEgMTI4IDExOC43IDEyOHoiXX0sdUl0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6Im9wZXJhIixpY29uOls1MTIsNTEyLFtdLCJmMjZhIiwiTTMyMS45IDMyLjdjLTE3MC4yIDAtMjUyLjYgMjIzLjgtMTQ3LjUgMzU1LjEgMzYuNSA0NS40IDg4LjYgNzUuNiAxNDcuNSA3NS42IDM2LjMgMCA3MC4zLTExLjEgOTkuNC0zMC40LTQzLjggMzkuMi0xMDEuOSA2My0xNjUuMyA2My0zLjkgMC04IDAtMTEuOS0uMy0xMzEuNS02LjEtMjM2LjEtMTE0LjYtMjM2LjEtMjQ3LjcgMC0xMzcgMTExLTI0OCAyNDgtMjQ4bC44IDBjNjMuMSAuMyAxMjAuNyAyNC4xIDE2NC40IDYzLjEtMjktMTkuNC02My4xLTMwLjQtOTkuMy0zMC40ek00MjMuNyA0MzAuNGMtNDAuOSAyNC43LTkwLjcgMjMuNi0xMzItNS44IDU2LjItMjAuNSA5Ny43LTkxLjYgOTcuNy0xNzYuNiAwLTg0LjctNDEuMi0xNTUuOC05Ny40LTE3Ni42IDQxLjgtMjkuMiA5MS4yLTMwLjMgMTMyLjktNSAxMDUuOSA5OC43IDEwNS41IDI2NS43LTEuMiAzNjR6Il19LHBJdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ3ZWlibyIsaWNvbjpbNTEyLDUxMixbXSwiZjE4YSIsIk00MDcgMTc3LjZjNy42LTI0LTEzLjQtNDYuOC0zNy40LTQxLjctMjIgNC44LTI4LjgtMjguMS03LjEtMzIuOCA1MC4xLTEwLjkgOTIuMyAzNy4xIDc2LjUgODQuOC02LjggMjEuMi0zOC44IDEwLjgtMzItMTAuM3pNMjE0LjggNDQ2LjdjLTEwNi4zIDAtMjE0LjgtNTEuNC0yMTQuOC0xMzYuMyAwLTQ0LjMgMjgtOTUuNCA3Ni4zLTE0My43IDk5LjctOTkuNyAyMDMuMi0xMDAuOSAxNzMuNi01LjctNCAxMy4xIDEyLjMgNS43IDEyLjMgNiA3OS41LTMzLjYgMTQwLjUtMTYuOCAxMTQgNTEuNC0zLjcgOS40IDEuMSAxMC45IDguMyAxMy4xIDEzNS43IDQyLjMgMzQuOCAyMTUuMi0xNjkuNyAyMTUuMnpNMzU4LjUgMzAwLjRjLTUuNC01NS43LTc4LjUtOTQtMTYzLjQtODUuNy04NC44IDguNi0xNDguOCA2MC4zLTE0My40IDExNnM3OC41IDk0IDE2My40IDg1LjdjODQuOC04LjYgMTQ4LjgtNjAuMyAxNDMuNC0xMTZ6TTM0Ny45IDM1LjFjLTI1LjkgNS42LTE2LjggNDMuNyA4LjMgMzguMyA3Mi4zLTE1LjIgMTM0LjggNTIuOCAxMTEuNyAxMjQtNy40IDI0LjIgMjkuMSAzNyAzNy40IDEyIDMxLjktOTkuOC01NS4xLTE5NS45LTE1Ny40LTE3NC4zem0tNzguNSAzMTFjLTE3LjEgMzguOC02Ni44IDYwLTEwOS4xIDQ2LjMtNDAuOC0xMy4xLTU4LTUzLjQtNDAuMy04OS43IDE3LjctMzUuNCA2My4xLTU1LjQgMTAzLjQtNDUuMSA0MiAxMC44IDYzLjEgNTAuMiA0NiA4OC41em0tODYuMy0zMGMtMTIuOS01LjQtMzAgLjMtMzggMTIuOS04LjMgMTIuOS00LjMgMjggOC42IDM0IDEzLjEgNiAzMC44IC4zIDM5LjEtMTIuOSA4LTEzLjEgMy43LTI4LjMtOS43LTM0em0zMi42LTEzLjRjLTUuMS0xLjctMTEuNCAuNi0xNC4zIDUuNC0yLjkgNS4xLTEuNCAxMC42IDMuNyAxMi45IDUuMSAyIDExLjctLjMgMTQuNi01LjQgMi44LTUuMiAxLjEtMTAuOS00LTEyLjl6Il19LGhJdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJyZWFkbWUiLGljb246WzU3Niw1MTIsW10sImY0ZDUiLCJNNTI4LjMgNDYuNWwtMTM5LjggMGMtNDguMSAwLTg5LjkgMzMuMy0xMDAuNCA4MC4zLTEwLjYtNDctNTIuMy04MC4zLTEwMC40LTgwLjNMNDggNDYuNUMyMS41IDQ2LjUgMCA2OCAwIDk0LjVMMCAzNDAuM2MwIDI2LjUgMjEuNSA0OCA0OCA0OGw4OS43IDBjMTAyLjIgMCAxMzIuNyAyNC40IDE0Ny4zIDc1IC43IDIuOCA1LjIgMi44IDYgMCAxNC43LTUwLjYgNDUuMi03NSAxNDcuMy03NWw4OS43IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC0yNDUuN2MwLTI2LjQtMjEuMy00Ny45LTQ3LjctNDguMXpNMjQyIDMxMS45YzAgMS45LTEuNSAzLjUtMy41IDMuNWwtMTYwLjMgMGMtMS45IDAtMy41LTEuNS0zLjUtMy41bDAtMjIuOWMwLTEuOSAxLjUtMy41IDMuNS0zLjVsMTYwLjQgMGMxLjkgMCAzLjUgMS41IDMuNSAzLjVsMCAyMi45LS4xIDB6bTAtNjAuOWMwIDEuOS0xLjUgMy41LTMuNSAzLjVsLTE2MC4zIDBjLTEuOSAwLTMuNS0xLjUtMy41LTMuNWwwLTIyLjljMC0xLjkgMS41LTMuNSAzLjUtMy41bDE2MC40IDBjMS45IDAgMy41IDEuNSAzLjUgMy41bDAgMjIuOS0uMSAwem0wLTYwLjljMCAxLjktMS41IDMuNS0zLjUgMy41bC0xNjAuMyAwYy0xLjkgMC0zLjUtMS41LTMuNS0zLjVsMC0yMi45YzAtMS45IDEuNS0zLjUgMy41LTMuNWwxNjAuNCAwYzEuOSAwIDMuNSAxLjUgMy41IDMuNWwwIDIyLjktLjEgMHpNNTAxLjMgMzExLjhjMCAxLjktMS41IDMuNS0zLjUgMy41bC0xNjAuMyAwYy0xLjkgMC0zLjUtMS41LTMuNS0zLjVsMC0yMi45YzAtMS45IDEuNS0zLjUgMy41LTMuNWwxNjAuNCAwYzEuOSAwIDMuNSAxLjUgMy41IDMuNWwwIDIyLjktLjEgMHptMC02MC45YzAgMS45LTEuNSAzLjUtMy41IDMuNWwtMTYwLjMgMGMtMS45IDAtMy41LTEuNS0zLjUtMy41bDAtMjIuOWMwLTEuOSAxLjUtMy41IDMuNS0zLjVsMTYwLjQgMGMxLjkgMCAzLjUgMS41IDMuNSAzLjVsMCAyMi45LS4xIDB6bTAtNjAuOWMwIDEuOS0xLjUgMy41LTMuNSAzLjVsLTE2MC4zIDBjLTEuOSAwLTMuNS0xLjUtMy41LTMuNWwwLTIyLjhjMC0xLjkgMS41LTMuNSAzLjUtMy41bDE2MC40IDBjMS45IDAgMy41IDEuNSAzLjUgMy41bDAgMjIuOC0uMSAweiJdfSxmSXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZ29sYW5nIixpY29uOls2NDAsNTEyLFtdLCJlNDBmIiwiTTQwMC4xIDE5NC44Yy0xMC45IDIuOC0xOS45IDQuMy0yOS4xIDcuNi03LjMgMS45LTE0LjcgMy45LTIzLjIgNi4xbC0uNiAuMWMtNC4yIDEuMi00LjYgMS4zLTguNS0zLjItNC43LTUuMy04LjEtOC43LTE0LjYtMTEuOS0xOS43LTkuNi0zOC43LTYuOC01Ni40IDQuNy0yMS4yIDEzLjctMzIuMSAzNC0zMS44IDU5LjIgLjMgMjUgMTcuNCA0NS41IDQxLjIgNDguOSAyMiAyLjggMzkuOC00LjYgNTMuOC0yMC41IDIuMS0yLjYgNC01LjMgNi4xLTguMyAuOC0xIDEuNS0yLjEgMi4zLTMuM2wtNjAuMSAwYy02LjUgMC04LjEtNC01LjktOS4zIDQtOS43IDExLjUtMjUuOSAxNS45LTM0IC45LTEuOCAzLjEtNS44IDYuOS01LjhsMTAxLjEgMGM0LjUtMTMuNCAxMS44LTI2LjkgMjEuNi0zOS43IDIyLjctMjkuOSA0OS4zLTQ1LjUgODcuMi01MiAzMS44LTUuNiA2MS43LTIuNSA4OC45IDE1LjkgMjQuNiAxNi44IDM5LjggMzkuNiA0My45IDY5LjUgNS4zIDQyLjEtNi45IDc2LjMtMzYuNyAxMDUuNi0xOS43IDIwLjktNDQuOSAzNC03My45IDM5LjktNS42IDEtMTEuMSAxLjUtMTYuNSAyLTIuOSAuMi01LjcgLjUtOC41IC44LTI4LjMtLjYtNTQuMi04LjctNzYtMjcuNC0xNS4zLTEzLjMtMjUuOS0yOS42LTMxLjEtNDguNS0zLjcgNy4zLTggMTQuNC0xNCAyMS4xLTIxLjYgMjkuNi01MC45IDQ4LTg3LjkgNTIuOS0zMC42IDQuMS01OC45LTEuOC04My45LTIwLjUtMjMtMTcuNS0zNi4xLTQwLjUtMzkuNS02OS4yLTQuMS0zNCA1LjktNjUuNCAyNi40LTkxLjMgMjIuMi0yOSA1MS41LTQ3LjQgODcuMy01My45IDI5LjMtNi4yIDU3LjMtMS45IDgyLjYgMTUuMyAxNi41IDEwLjkgMjguMyAyNS44IDM2LjEgNDMuOSAxLjkgMi44IC42IDQuNC0zLjEgNS4zek00OC4zIDIwMC40Yy0xLjMgMC0xLjYtLjYtLjktMS42bDYuNi04LjRjLjYtLjkgMi4yLTEuNSAzLjQtMS41bDExMS4zIDBjMS4yIDAgMS41IC45IC45IDEuOGwtNS4zIDguMWMtLjYgMS0yLjIgMS45LTMuMSAxLjlsLTExMi44LS4zek0xLjIgMjI5LjFjLTEuMiAwLTEuNi0uNy0uOS0xLjZsNi41LTguNGMuNi0uOSAyLjItMS42IDMuNC0xLjZsMTQyLjEgMGMxLjIgMCAxLjggMSAxLjUgMS45bC0yLjUgNy41Yy0uMyAxLjItMS41IDEuOS0yLjggMS45TDEuMiAyMjkuMXptNzQuNSAyNi44Yy0uNiAuOS0uMyAxLjggLjkgMS44bDY4IC4zYy45IDAgMi4yLS45IDIuMi0yLjFsLjYtNy41YzAtMS4zLS42LTIuMi0xLjktMi4ybC02Mi4zIDBjLTEuMiAwLTIuNSAuOS0zLjEgMS45bC00LjQgNy44em01MDEuNS0xOGMtLjItMi42LS4zLTQuOC0uNy03LTUuNi0zMC44LTM0LTQ4LjMtNjMuNi00MS40LTI5IDYuNS00Ny43IDI0LjktNTQuNSA1NC4yLTUuNiAyNC4zIDYuMiA0OC45IDI4LjYgNTguOSAxNy4yIDcuNSAzNC4zIDYuNiA1MC44LTEuOSAyNC42LTEzLjYgMzgtMzIuNyAzOS42LTU5LjUtLjEtMS4yLS4xLTIuMy0uMi0zLjN6Il19LG1JdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzdGFjay1leGNoYW5nZSIsaWNvbjpbNDQ4LDUxMixbXSwiZjE4ZCIsIk0xOC4xIDMzMi4zbDQxMi43IDAgMCAyMmMwIDM3LjctMjkuMyA2OC02NS4zIDY4bC0xOSAwLTg2LjggODkuNyAwLTg5LjctMTc2LjMgMGMtMzYgMC02NS4zLTMwLjMtNjUuMy02OGwwLTIyem0wLTIzLjZsNDEyLjcgMCAwLTg1LTQxMi43IDAgMCA4NXptMC0xMDkuNGw0MTIuNyAwIDAtODUtNDEyLjcgMCAwIDg1ek0zNjUuNCAwTDgzLjQgMGMtMzYgMC02NS4zIDMwLjMtNjUuMyA2Ny43bDAgMjIuMyA0MTIuNyAwIDAtMjIuM0M0MzAuNyAzMC4zIDQwMS40IDAgMzY1LjQgMHoiXX0sZ0l0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6Imd1bHAiLGljb246WzI1Niw1MTIsW10sImYzYWUiLCJNMjEwIDM5MS4xbC0xNC4xIDI0LjYtNC42IDgwLjJjMCA4LjktMjguMyAxNi4xLTYzLjEgMTYuMXMtNjMuMS03LjItNjMuMS0xNi4xbC01LjgtNzkuNC0xNC45LTI1LjRjNDEuMiAxNy4zIDEyNiAxNi43IDE2NS42IDB6TTE0IDEzNy44TDI3LjYgMjYzLjNjNS45LTIwIDIwLjgtNDcgNDAtNTUuMiA2LjMtMi43IDEyLjctMi43IDE4LjcgLjkgNS4yIDMgOS42IDkuMyAxMC4xIDExLjggMS4yIDYuNS0yIDkuMS00LjUgOS4xLTMgMC01LjMtNC42LTYuOC03LjMtNC4xLTcuMy0xMC4zLTcuNi0xNi45LTIuOC02LjkgNS0xMi45IDEzLjQtMTcuMSAyMC43LTUuMSA4LjgtOS40IDE4LjUtMTIgMjguMi0xLjUgNS42LTIuOSAxNC42LS42IDE5LjkgMSAyLjIgMi41IDMuNiA0LjkgMy42IDUgMCAxMi4zLTYuNiAxNS44LTEwLjEgNC41LTQuNSAxMC4zLTExLjUgMTIuNS0xNmw1LjItMTUuNWMyLjYtNi44IDkuOS01LjYgOS45IDAgMCAxMC4yLTMuNyAxMy42LTEwIDM0LjctNS44IDE5LjUtNy42IDI1LjgtNy42IDI1LjgtLjcgMi44LTMuNCA3LjUtNi4zIDcuNS0xLjIgMC0yLjEtLjQtMi42LTEuMi0xLTEuNC0uOS01LjMtLjgtNi4zIC4yLTMuMiA2LjMtMjIuMiA3LjMtMjUuMi0yIDIuMi00LjEgNC40LTYuNCA2LjYtNS40IDUuMS0xNC4xIDExLjgtMjEuNSAxMS44LTMuNCAwLTUuNi0uOS03LjctMi40bDcuNiA3OS42YzIgNSAzOS4yIDE3LjEgODguMiAxNy4xIDQ5LjEgMCA4Ni4zLTEyLjIgODguMi0xNy4xbDEwLjktOTQuNmMtNS43IDUuMi0xMi4zIDExLjYtMTkuNiAxNC44LTUuNCAyLjMtMTcuNCAzLjgtMTcuNC01LjcgMC01LjIgOS4xLTE0LjggMTQuNC0yMS41IDEuNC0xLjcgNC43LTUuOSA0LjctOC4xIDAtMi45LTYtMi4yLTExLjcgMi41LTMuMiAyLjctNi4yIDYuMy04LjcgOS43LTQuMyA2LTYuNiAxMS4yLTguNSAxNS41LTYuMiAxNC4yLTQuMSA4LjYtOS4xIDIyLTUgMTMuMy00LjIgMTEuOC01LjIgMTQtLjkgMS45LTIuMiAzLjUtNCA0LjUtMS45IDEtNC41IC45LTYuMS0uMy0uOS0uNi0xLjMtMS45LTEuMy0zLjcgMC0uOSAuMS0xLjggLjMtMi43IDEuNS02LjEgNy44LTE4LjEgMTUtMzQuMyAxLjYtMy43IDEtMi42IC44LTIuMy02LjIgNi0xMC45IDguOS0xNC40IDEwLjUtNS44IDIuNi0xMyAyLjYtMTQuNS00LjEtLjEtLjQtLjEtLjgtLjItMS4yLTExLjggOS4yLTI0LjMgMTEuNy0yMC04LjEtNC42IDguMi0xMi42IDE0LjktMjIuNCAxNC45LTQuMSAwLTcuMS0xLjQtOC42LTUuMS0yLjMtNS41IDEuMy0xNC45IDQuNi0yMy44IDEuNy00LjUgNC05LjkgNy4xLTE2LjIgMS42LTMuNCA0LjItNS40IDcuNi00LjUgLjYgLjIgMS4xIC40IDEuNiAuNyAyLjYgMS44IDEuNiA0LjUgLjMgNy4yLTMuOCA3LjUtNy4xIDEzLTkuMyAyMC44LS45IDMuMy0yIDkgMS41IDkgMi40IDAgNC43LS44IDYuOS0yLjQgNC42LTMuNCA4LjMtOC41IDExLjEtMTMuNSAyLTMuNiA0LjQtOC4zIDUuNi0xMi4zIC41LTEuNyAxLjEtMy4zIDEuOC00LjggMS4xLTIuNSAyLjYtNS4xIDUuMi01LjEgMS4zIDAgMi40IC41IDMuMiAxLjUgMS43IDIuMiAxLjMgNC41IC40IDYuOS0yIDUuNi00LjcgMTAuNi02LjkgMTYuNy0xLjMgMy41LTIuNyA4LTIuNyAxMS43IDAgMy40IDMuNyAyLjYgNi44IDEuMiAyLjQtMS4xIDQuOC0yLjggNi44LTQuNSAxLjItNC45IC45LTMuOCAyNi40LTY4LjIgMS4zLTMuMyAzLjctNC43IDYuMS00LjcgMS4yIDAgMi4yIC40IDMuMiAxLjEgMS43IDEuMyAxLjcgNC4xIDEgNi4yLS43IDEuOS0uNiAxLjMtNC41IDEwLjUtNS4yIDEyLjEtOC42IDIwLjgtMTMuMiAzMS45LTEuOSA0LjYtNy43IDE4LjktOC43IDIyLjMtLjYgMi4yLTEuMyA1LjggMSA1LjggNS40IDAgMTkuMy0xMy4xIDIzLjEtMTcgLjItLjMgLjUtLjQgLjktLjYgLjYtMS45IDEuMi0zLjcgMS43LTUuNSAxLjQtMy44IDIuNy04LjIgNS4zLTExLjMgLjgtMSAxLjctMS42IDIuNy0xLjYgMi44IDAgNC4yIDEuMiA0LjIgNCAwIDEuMS0uNyA1LjEtMS4xIDYuMiAxLjQtMS41IDIuOS0zIDQuNS00LjUgMTUtMTMuOSAyNS43LTYuOCAyNS43IC4yIDAgNy40LTguOSAxNy43LTEzLjggMjMuNC0xLjYgMS45LTQuOSA1LjQtNSA2LjQgMCAxLjMgLjkgMS44IDIuMiAxLjggMiAwIDYuNC0zLjUgOC00LjcgNS0zLjkgMTEuOC05LjkgMTYuNi0xNC4xbDE0LjgtMTM2LjhjLTMwLjUgMTcuMS0xOTcuNiAxNy4yLTIyOC4zIC4yem0yMjkuNy04LjVjMCAyMS0yMzEuMiAyMS0yMzEuMiAwIDAtOC44IDUxLjgtMTUuOSAxMTUuNi0xNS45IDkgMCAxNy44IC4xIDI2LjMgLjRMMTY3IDY1LjEgMjI4LjMgLjZjMS40LTEuNCA1LjgtLjIgOS45IDMuNXM2LjYgNy45IDUuMyA5LjNsLS4xIC4xLTU3LjMgNjAuNS0xMCA0MC43YzM5LjkgMi42IDY3LjYgOC4xIDY3LjYgMTQuNnptLTY5LjQgNC42YzAtLjgtLjktMS41LTIuNS0yLjFsLS4yIC44YzAgMS4zLTUgMi40LTExLjEgMi40cy0xMS4xLTEuMS0xMS4xLTIuNGMwLS4xIDAtLjIgLjEtLjNsLjItLjdjLTEuOCAuNi0zIDEuNC0zIDIuMyAwIDIuMSA2LjIgMy43IDEzLjcgMy43IDcuNyAuMSAxMy45LTEuNiAxMy45LTMuN3oiXX0sYkl0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InllbHAiLGljb246WzM4NCw1MTIsW10sImYxZTkiLCJNNDIuOSAyNDAuM2w5OS42IDQ4LjZjMTkuMiA5LjQgMTYuMiAzNy41LTQuNSA0Mi43TDMwLjUgMzU4LjVjLTMuMiAuOC02LjQgLjktOS42IC4zcy02LjItMS44LTguOS0zLjctNC45LTQuMy02LjYtNy4xLTIuNy01LjktMy4xLTkuMmMtMy4zLTI4LjgtLjItNTcuOSA5LTg1LjMgMS0zLjEgMi43LTUuOSA0LjktOC4zczQuOS00LjIgNy45LTUuNSA2LjItMS44IDkuNS0xLjggNi40IC45IDkuMyAyLjN6bTQ0IDIzOS4zYzIzLjggMTYuMyA1MC45IDI3LjMgNzkuNCAzMi4xIDMuMiAuNiA2LjUgLjQgOS42LS40czYuMS0yLjMgOC42LTQuNCA0LjYtNC42IDYtNy41IDIuMy02LjEgMi40LTkuNGwzLjktMTEwLjhjLjctMjEuMy0yNS41LTMxLjktMzkuOC0xNi4xTDgyLjggNDQ1LjVjLTIuMiAyLjQtMy44IDUuMy00LjggOC40cy0xLjMgNi40LS45IDkuNiAxLjUgNi4zIDMuMSA5LjEgMy45IDUuMiA2LjYgN2wwIDB6TTIzMi4yIDM2OS43bDU4LjggOTRjMS43IDIuOCA0IDUuMSA2LjggNi45czUuOCAzIDkgMy41IDYuNSAuMyA5LjctLjUgNi4xLTIuNCA4LjYtNC40YzIyLjMtMTguNCA0MC4zLTQxLjUgNTIuNy02Ny42IDEuNC0yLjkgMi4xLTYuMSAyLjItOS40cy0uNi02LjUtMS45LTkuNC0zLjItNS43LTUuNi03LjgtNS4yLTMuOS04LjMtNC45TDI1OC43IDMzNS43Yy0yMC4zLTYuNS0zNy44IDE1LjgtMjYuNSAzMy45ek0zODAuNiAyMzcuNGMtMTEuNS0yNi41LTI4LjctNTAuMi01MC40LTY5LjMtMi40LTIuMS01LjMtMy43LTguNC00LjdzLTYuNC0xLjItOS42LS44LTYuMyAxLjUtOS4xIDMuMi01LjEgNC02LjkgNi43bC02MiA5MS45Yy0xMS45IDE3LjcgNC43IDQwLjYgMjUuMiAzNC43TDM2NiAyNjguNmMzLjEtLjkgNi0yLjUgOC41LTQuNnM0LjUtNC43IDUuOC03LjcgMi4xLTYuMiAyLjItOS40LS42LTYuNS0xLjktOS41bDAgMHpNNjIuMSAzMC4yYy0yLjggMS40LTUuNCAzLjMtNy40IDUuN3MtMy42IDUuMi00LjUgOC4yLTEuMiA2LjItLjkgOS4zIDEuMyA2LjEgMi45IDguOUwxNTYuMyAyNDIuNmMxMS43IDIwLjIgNDIuNiAxMS45IDQyLjYtMTEuNGwwLTIwOC4zYzAtMy4xLS42LTYuMy0xLjgtOS4ycy0zLjEtNS41LTUuNC03LjYtNS0zLjgtOC00LjgtNi4xLTEuNC05LjMtMS4yYy0zOSAzLjEtNzcgMTMuMy0xMTIuMyAzMC4xeiJdfSx2SXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZ29mb3JlIixpY29uOls0NDgsNTEyLFtdLCJmM2E3IiwiTTM0OCAzMTkuOGwtMTMuMiAwIDAgMzQuN2MtMjQuNSAyMy4xLTU2LjMgMzUuOC04OS45IDM1LjgtNzMuMiAwLTEzMi40LTYwLjItMTMyLjQtMTM0LjQgMC03NC4xIDU5LjItMTM0LjQgMTMyLjQtMTM0LjQgMzUuMyAwIDY4LjYgMTQgOTMuNiAzOS40bDYyLjMtNjMuM2MtNDEuOC00Mi4zLTk3LjEtNjUuNi0xNTYuMS02NS42LTEyMi43IDAtMjIwLjcgMTAwLjYtMjIwLjcgMjI0IDAgMTIyLjUgOTcgMjI0IDIyMC43IDIyNCA2My4yIDAgMTI0LjUtMjYuMiAxNzEtODIuNS0yLTI3LjYtMTMuNC03Ny43LTY3LjctNzcuN3pNMzM1LjkgMjA3LjNsLTEwNi4zIDAgMCA4OSAxMTguNCAwYzMzLjUgMCA2MC41IDE1LjEgNzYgNDEuOGwwLTMwLjZjMC02NS4yLTQwLjQtMTAwLjItODguMS0xMDAuMnoiXX0seEl0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImF2aWF0byIsaWNvbjpbNjQwLDUxMixbXSwiZjQyMSIsIk0xMDcuMiAyODMuNWwtMTktNDEuOC01Mi4xIDAtMTkgNDEuOC0xNy4xIDAgNjIuMi0xMzEuNCA2Mi4yIDEzMS40LTE3LjIgMHptLTQ1LTk4LjFsLTE5LjYgNDIuNSAzOS4yIDAtMTkuNi00Mi41ek0xNzQuOSAyODcuOGwtNjIuMi0xMzEuNCAxNy4xIDAgNDUuMSA5NiA0NS4xLTk2IDE3IDAtNjIuMSAxMzEuNHptODAuNi00LjNsMC0xMjcuMSAxNS41IDAgMCAxMjcuMS0xNS41IDB6TTQ2NC42IDE2Ny45bDAgMTE1LjYtMTcuMyAwIDAtMTE1LjYtNDEuMiAwIDAtMTEuNSA5OS42IDAgMCAxMS41LTQxLjEgMHpNNjQwIDIxOC44YzAgOS4yLTEuNyAxNy44LTUuMSAyNS44cy04LjIgMTUuMS0xNC4yIDIxLjEtMTMuMSAxMC44LTIxLjEgMTQuMi0xNi42IDUuMS0yNS44IDUuMS0xNy44LTEuNy0yNS44LTUuMS0xNS4xLTguMi0yMS4xLTE0LjItMTAuOC0xMy0xNC4yLTIxLjFjLTMuNC04LTUuMS0xNi42LTUuMS0yNS44czEuNy0xNy44IDUuMS0yNS44IDguMi0xNS4xIDE0LjItMjEuMSAxMy04LjQgMjEuMS0xMS45YzgtMy40IDE2LjYtNS4xIDI1LjgtNS4xczE3LjggMS43IDI1LjggNS4xIDE1LjEgNS44IDIxLjEgMTEuOWM2IDYgMTAuNyAxMy4xIDE0LjIgMjEuMSAzLjQgOCA1LjEgMTYuNiA1LjEgMjUuOHptLTE1LjUgMGMwLTcuMy0xLjMtMTQtMy45LTIwLjNzLTYuMi0xMS43LTEwLjgtMTYuMy0xMC04LjItMTYuMi0xMC45LTEyLjgtNC0xOS44LTQtMTMuNiAxLjMtMTkuOCA0LTExLjYgNi4zLTE2LjIgMTAuOS04LjIgMTAtMTAuOCAxNi4zLTMuOSAxMy4xLTMuOSAyMC4zYzAgNy4zIDEuMyAxNCAzLjkgMjAuM3M2LjIgMTEuNyAxMC44IDE2LjMgMTAgOC4yIDE2LjIgMTAuOSAxMi44IDQgMTkuOCA0IDEzLjYtMS4zIDE5LjgtNCAxMS42LTYuMyAxNi4yLTEwLjkgOC4yLTEwIDEwLjgtMTYuMyAzLjktMTMuMSAzLjktMjAuM3ptLTk0LjggOTYuN2wwLTYuMyA4OC45LTEwLTI0Mi45IDEzLjRjLjYtMi4yIDEuMS00LjYgMS40LTcuMiAuMy0yIC41LTQuMiAuNi02LjVsNjQuOC04LjEtNjQuOSAxLjljMC0uNC0uMS0uNy0uMS0xLjEtMi44LTE3LjItMjUuNS0yMy43LTI1LjUtMjMuN2wtMS4xLTI2LjMgMjMuOCAwIDE5IDQxLjggMTcuMSAwLTYyLjItMTMxLjQtNjIuMiAxMzEuNCAxNy4xIDAgMTktNDEuOCAyMy42IDAtMS4xIDI2LjRzLTIyLjcgNi41LTI1LjUgMjMuN2MtLjEgLjMtLjEgLjctLjEgMS4xbC02NC45LTEuOSA2NC44IDguMWMuMSAyLjMgLjMgNC40IC42IDYuNSAuMyAyLjYgLjggNSAxLjQgNy4ybC0yNDIuOS0xMy41IDg4LjkgMTAgMCA2LjNjLTUuOSAuOS0xMC41IDYtMTAuNSAxMi4yIDAgNi44IDUuNiAxMi40IDEyLjQgMTIuNHMxMi40LTUuNiAxMi40LTEyLjRjMC02LjItNC42LTExLjMtMTAuNS0xMi4ybDAtNS44IDgwLjMgOSAwIDUuNGMtNS43IDEuMS05LjkgNi4yLTkuOSAxMi4xIDAgNi44IDUuNiAxMC4yIDEyLjQgMTAuMnMxMi40LTMuNCAxMi40LTEwLjJjMC02LTQuMy0xMS05LjktMTIuMWwwLTQuOSAyOC40IDMuMiAwIDIzLjctNS45IDAgMCAxMy45IDUuOSAwIDAtNi42IDUgMCAwIDYuNiA1LjkgMCAwLTEzLjgtNS45IDAgMC0yMy4yIDM4LjMgNC4zYzguMSAxMS40IDE5IDEzLjYgMTkgMTMuNmwtLjEgNi43LTUuMSAuMi0uMSAxMi4xIDQuMSAwIC4xLTUgNS4yIDAgLjEgNSA0LjEgMC0uMS0xMi4xLTUuMS0uMi0uMS02LjdzMTAuOS0yLjEgMTktMTMuNmwzOC4zLTQuMyAwIDIzLjItNS45IDAgMCAxMy44IDUuOSAwIDAtNi42IDUgMCAwIDYuNiA1LjkgMCAwLTEzLjgtNS45IDAgMC0yMy43IDI4LjQtMy4yIDAgNC45Yy01LjcgMS4xLTkuOSA2LjItOS45IDEyLjEgMCA2LjggNS42IDEwLjIgMTIuNCAxMC4yczEyLjQtMy40IDEyLjQtMTAuMmMwLTYtNC4zLTExLTkuOS0xMi4xbDAtNS40IDgwLjMtOSAwIDUuOGMtNS45IC45LTEwLjUgNi0xMC41IDEyLjIgMCA2LjggNS42IDEyLjQgMTIuNCAxMi40czEyLjQtNS42IDEyLjQtMTIuNGMtLjItNi4zLTQuNy0xMS40LTEwLjctMTIuM3pNMzI4LjkgMjI3LjlsMTkuNi00Mi41IDE5LjYgNDIuNS0xNy45IDAtMS43LTQwLjMtMS43IDQwLjMtMTcuOSAweiJdfSx5SXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToicGFkbGV0IixpY29uOls2NDAsNTEyLFtdLCJlNGEwIiwiTTI5Ny45IDBsLjEgMGM3LjYgLjEgMTQuNCA0LjcgMTcuNSAxMS44bDEzMiAzMDguNSAuMy0uMSAuMiAuNC0yLjggMTAtNDIuOSAxNThjLTMuNyAxNi4yLTE5LjcgMjYuMy0zNS44IDIyLjZsLTY4LjQtMTUuNi02OC41IDE1LjZjLTE2LjEgMy43LTMyLjEtNi40LTM1LjgtMjIuNmwtNDIuOS0xNTgtMi43LTEwIC4xLS40IDEzMi4xLTMwOC40YzMtNyA5LjktMTEuNiAxNy41LTExLjh6TTE2MC4xIDMyMi4xbDEzMSAzOS4xIDYuOSAxMjIuNSA3LjktMTIxLjUgMTMwLjYtMzkuMyAuMi0uMS0xMzEgMjUuMS04LjYtMzIwLjItNS4yIDMyMC4yLTEzMS44LTI1Ljh6TTQyNiAyMjIuNmw5NC40LTQxIDczLjggMC0xNTcgMjQ3LjYgMzEuNi0xMDktNDIuOC05Ny42em0xNzEuNS00MS4ybDQxLjQgNzYuMmM0IDcuNS0zLjkgMTUuOS0xMS42IDEyLjJsLTQ3LjYtMjIuNyAxNy44LTY1Ljd6TTEyNy4zIDMxOC41TDE1OC43IDQzMCAxLjYgMTU0LjVjLTUuOS0xMC40IDUuNS0yMiAxNS45LTE2LjJsMTUxLjggODQuMi00Mi4xIDk2eiJdfSx3SXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZWRnZS1sZWdhY3kiLGljb246WzQ0OCw1MTIsW10sImUwNzgiLCJNLTYgMjI4LjJsLjQtLjVjMCAuMiAwIC4zLS4xIC41bC0uMyAwem00NjAuNiAxNS41YzAtNDQtNy44LTg0LjUtMjguOC0xMjIuNC00MS03My40LTExMy42LTExMy4zLTE5OC42LTExMy4zLTEzOS45LS4zLTIxOC4zIDEwNS4yLTIzMi44IDIxOS43IDQyLjQtNjEuMyAxMTcuMS0xMjEuNCAyMjAuNC0xMjUgMCAwIDEwOS43IDAgOTkuNCAxMDVsLTE3NS44IDBjNi40LTM3LjQgMTguNS01OSAzNC4zLTc4LjktNzUgMzQuOS0xMjEuOCA5Ni4xLTEyMC44IDE4OC4zIC44IDcxLjUgNTAuMSAxNDQuOCAxMjAuOCAxNzIgODMuNCAzMS44IDE5Mi44IDcuMiAyNDAuMS0yMS4zbDAtMTA0LjRjLTgwLjkgNTYuNS0yNzAuOSA2MC45LTI3Mi4zLTY3LjZsMzE0LjEgMCAwLTUyLjF6Il19LHRnZT17cHJlZml4OiJmYWIiLGljb25OYW1lOiJzcXVhcmUtbGFzdGZtIixpY29uOls0NDgsNTEyLFsibGFzdGZtLXNxdWFyZSJdLCJmMjAzIiwiTTQ0OCA5NmMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwek0yMTAuNyAyODAuOGMtMS44LTUuNS0zLjQtMTAuOC01LTE1LjktMTIuOS00MS45LTIxLTY4LjQtNTgtNjguNC0yMi40IDAtNDUuMSAxNi4xLTQ1LjEgNjEuMiAwIDM1LjIgMTggNTcuMiA0My4zIDU3LjIgMjguNiAwIDQ3LjYtMjEuMyA0Ny42LTIxLjNsMTEuNyAzMS45cy0xOS44IDE5LjQtNjEuMiAxOS40Yy01MS4zIDAtNzkuOS0zMC4xLTc5LjktODUuOCAwLTU3LjkgMjguNi05MiA4Mi41LTkyIDY3LjkgMCA3OS4zIDM1LjMgOTYuNCA4OC40IDEuNCA0LjQgMi45IDguOSA0LjQgMTMuNSA4LjggMjYuOCAyNC4yIDQ2LjIgNjEuMiA0Ni4yIDI0LjkgMCAzOC4xLTUuNSAzOC4xLTE5LjEgMC0xNy41LTE2LjktMjEuMi00MC0yNi40LTMuMi0uNy02LjUtMS40LTkuOS0yLjItMzAuNC03LjMtNDIuNS0yMy4xLTQyLjUtNDggMC00MCAzMi4zLTUyLjQgNjUuMi01Mi40IDM3LjQgMCA2MC4xIDEzLjYgNjMgNDYuNmwtMzYuNyA0LjRjLTEuNS0xNS44LTExLTIyLjQtMjguNi0yMi40LTE2LjEgMC0yNiA3LjMtMjYgMTkuOCAwIDExIDQuOCAxNy42IDIwLjkgMjEuMyAyLjIgLjUgNC41IDEgNi43IDEuNCAzMS4xIDYuNSA2NS4xIDEzLjcgNjUuMSA1Ni4xIC4xIDM2LjctMzAuNyA1MC42LTc2LjEgNTAuNi02My40IDAtODUuNC0yOC42LTk3LjEtNjQuMXoiXX0sa0l0PXRnZSxTSXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiZ29vZHJlYWRzLWciLGljb246WzMyMCw1MTIsW10sImYzYTkiLCJNMTAuOCA0MDMuM2wyLjggMGMxMi43IDAgMjUuNSAwIDM4LjIgLjEgMS42IDAgMy4xLS40IDMuNiAyLjEgNy4xIDM0LjkgMzAgNTQuNiA2Mi45IDYzLjkgMjYuOSA3LjYgNTQuMSA3LjggODEuMyAxLjggMzMuOC03LjQgNTYtMjguMyA2OC02MC40IDgtMjEuNSAxMC43LTQzLjggMTEtNjYuNSAuMS01LjggLjMtNDctLjItNTIuOGwtLjktLjNjLS44IDEuNS0xLjcgMi45LTIuNSA0LjQtMjIuMSA0My4xLTYxLjMgNjcuNC0xMDUuNCA2OS4xLTEwMyA0LTE2OS40LTU3LTE3Mi0xNzYuMi0uNS0yMy43IDEuOC00Ni45IDguMy02OS43IDIwLjYtNzEuMSA3NC42LTExOC4yIDE1My45LTExOC44IDYxLjMtLjQgMTAxLjUgMzguNyAxMTYuMiA3MC4zIC41IDEuMSAxLjMgMi4zIDIuNCAxLjlsMC02MS42IDQ0LjMgMGMwIDI4MC4zIC4xIDMzMi4yIC4xIDMzMi4yLS4xIDc4LjUtMjYuNyAxNDMuNy0xMDMgMTYyLjItNjkuNSAxNi45LTE1OSA0LjgtMTk2LTU3LjItOC0xMy41LTExLjgtMjguMy0xMy00NC41ek0xNTcuMSAzNi41Yy01Mi41LS41LTEwOC41IDQwLjctMTE1IDEzMy44LTQuMSA1OSAxNC44IDEyMi4yIDcxLjUgMTQ4LjYgMjcuNiAxMi45IDc0LjMgMTUgMTA4LjMtOC43IDQ3LjYtMzMuMiA2Mi43LTk3IDU0LjgtMTU0LTkuNy03MS4xLTQ3LjgtMTIwLTExOS42LTExOS43eiJdfSxfSXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiY2MtbWFzdGVyY2FyZCIsaWNvbjpbNTc2LDUxMixbXSwiZjFmMSIsIk00ODIuOSA0MTAuM2MwIDYuOC00LjYgMTEuNy0xMS4yIDExLjctNi44IDAtMTEuMi01LjItMTEuMi0xMS43czQuNC0xMS43IDExLjItMTEuN2M2LjYgMCAxMS4yIDUuMiAxMS4yIDExLjd6TTE3Mi4xIDM5OC42Yy03LjEgMC0xMS4yIDUuMi0xMS4yIDExLjdTMTY1IDQyMiAxNzIuMSA0MjJjNi41IDAgMTAuOS00LjkgMTAuOS0xMS43LS4xLTYuNS00LjQtMTEuNy0xMC45LTExLjd6bTExNy41LS4zYy01LjQgMC04LjcgMy41LTkuNSA4LjdsMTkuMSAwYy0uOS01LjctNC40LTguNy05LjYtOC43em0xMDcuOCAuM2MtNi44IDAtMTAuOSA1LjItMTAuOSAxMS43czQuMSAxMS43IDEwLjkgMTEuNyAxMS4yLTQuOSAxMS4yLTExLjdjMC02LjUtNC40LTExLjctMTEuMi0xMS43em0xMDUuOSAyNi4xYzAgLjMgLjMgLjUgLjMgMS4xIDAgLjMtLjMgLjUtLjMgMS4xLS4zIC4zLS4zIC41LS41IC44LS4zIC4zLS41IC41LTEuMSAuNS0uMyAuMy0uNSAuMy0xLjEgLjMtLjMgMC0uNSAwLTEuMS0uMy0uMyAwLS41LS4zLS44LS41LS4zLS4zLS41LS41LS41LS44LS4zLS41LS4zLS44LS4zLTEuMSAwLS41IDAtLjggLjMtMS4xIDAtLjUgLjMtLjggLjUtMS4xIC4zLS4zIC41LS4zIC44LS41IC41LS4zIC44LS4zIDEuMS0uMyAuNSAwIC44IDAgMS4xIC4zIC41IC4zIC44IC4zIDEuMSAuNXMuMiAuNiAuNSAxLjF6bS0yLjIgMS40Yy41IDAgLjUtLjMgLjgtLjMgLjMtLjMgLjMtLjUgLjMtLjhzMC0uNS0uMy0uOGMtLjMgMC0uNS0uMy0xLjEtLjNsLTEuNiAwIDAgMy41IC44IDAgMC0xLjQgLjMgMCAxLjEgMS40IC44IDAtMS4xLTEuM3pNNTc2IDgxbDAgMzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4TDQ4IDQ4MWMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhMMCA4MUMwIDU0LjUgMjEuNSAzMyA0OCAzM2w0ODAgMGMyNi41IDAgNDggMjEuNSA0OCA0OHpNNjQgMjIwLjZjMCA3Ni41IDYyLjEgMTM4LjUgMTM4LjUgMTM4LjUgMjcuMiAwIDUzLjktOC4yIDc2LjUtMjMuMS03Mi45LTU5LjMtNzIuNC0xNzEuMiAwLTIzMC41LTIyLjYtMTUtNDkuMy0yMy4xLTc2LjUtMjMuMS03Ni40LS4xLTEzOC41IDYyLTEzOC41IDEzOC4yek0yODggMzI5LjRjNzAuNS01NSA3MC4yLTE2Mi4yIDAtMjE3LjUtNzAuMiA1NS4zLTcwLjUgMTYyLjYgMCAyMTcuNXpNMTQ1LjcgNDA1LjdjMC04LjctNS43LTE0LjQtMTQuNy0xNC43LTQuNiAwLTkuNSAxLjQtMTIuOCA2LjUtMi40LTQuMS02LjUtNi41LTEyLjItNi41LTMuOCAwLTcuNiAxLjQtMTAuNiA1LjRsMC00LjQtOC4yIDAgMCAzNi43IDguMiAwYzAtMTguOS0yLjUtMzAuMiA5LTMwLjIgMTAuMiAwIDguMiAxMC4yIDguMiAzMC4ybDcuOSAwYzAtMTguMy0yLjUtMzAuMiA5LTMwLjIgMTAuMiAwIDguMiAxMCA4LjIgMzAuMmw4LjIgMCAwLTIzLS4yIDB6TTE5MC42IDM5MmwtNy45IDAgMCA0LjRjLTIuNy0zLjMtNi41LTUuNC0xMS43LTUuNC0xMC4zIDAtMTguMiA4LjItMTguMiAxOS4zIDAgMTEuMiA3LjkgMTkuMyAxOC4yIDE5LjMgNS4yIDAgOS0xLjkgMTEuNy01LjRsMCA0LjYgNy45IDAgMC0zNi44em00MC41IDI1LjZjMC0xNS0yMi45LTguMi0yMi45LTE1LjIgMC01LjcgMTEuOS00LjggMTguNS0xLjFsMy4zLTYuNWMtOS40LTYuMS0zMC4yLTYtMzAuMiA4LjIgMCAxNC4zIDIyLjkgOC4zIDIyLjkgMTUgMCA2LjMtMTMuNSA1LjgtMjAuNyAuOGwtMy41IDYuM2MxMS4yIDcuNiAzMi42IDYgMzIuNi03LjV6bTM1LjQgOS4zbC0yLjItNi44Yy0zLjggMi4xLTEyLjIgNC40LTEyLjItNC4xbDAtMTYuNiAxMy4xIDAgMC03LjQtMTMuMSAwIDAtMTEuMi04LjIgMCAwIDExLjItNy42IDAgMCA3LjMgNy42IDAgMCAxNi43YzAgMTcuNiAxNy4zIDE0LjQgMjIuNiAxMC45em0xMy4zLTEzLjRsMjcuNSAwYzAtMTYuMi03LjQtMjIuNi0xNy40LTIyLjYtMTAuNiAwLTE4LjIgNy45LTE4LjIgMTkuMyAwIDIwLjUgMjIuNiAyMy45IDMzLjggMTQuMmwtMy44LTZjLTcuOCA2LjQtMTkuNiA1LjgtMjEuOS00Ljl6TTMzOC45IDM5MmMtNC42LTItMTEuNi0xLjgtMTUuMiA0LjRsMC00LjQtOC4yIDAgMCAzNi43IDguMiAwIDAtMjAuN2MwLTExLjYgOS41LTEwLjEgMTIuOC04LjRsMi40LTcuNnptMTAuNiAxOC4zYzAtMTEuNCAxMS42LTE1LjEgMjAuNy04LjRsMy44LTYuNWMtMTEuNi05LjEtMzIuNy00LjEtMzIuNyAxNSAwIDE5LjggMjIuNCAyMy44IDMyLjcgMTVsLTMuOC02LjVjLTkuMiA2LjUtMjAuNyAyLjYtMjAuNy04LjZ6TTQxNi4yIDM5MmwtOC4yIDAgMCA0LjRjLTguMy0xMS0yOS45LTQuOC0yOS45IDEzLjkgMCAxOS4yIDIyLjQgMjQuNyAyOS45IDEzLjlsMCA0LjYgOC4yIDAgMC0zNi44em0zMy43IDBjLTIuNC0xLjItMTEtMi45LTE1LjIgNC40bDAtNC40LTcuOSAwIDAgMzYuNyA3LjkgMCAwLTIwLjdjMC0xMSA5LTEwLjMgMTIuOC04LjRsMi40LTcuNnptNDAuMy0xNC45bC03LjkgMCAwIDE5LjNjLTguMi0xMC45LTI5LjktNS4xLTI5LjkgMTMuOSAwIDE5LjQgMjIuNSAyNC42IDI5LjkgMTMuOWwwIDQuNiA3LjkgMCAwLTUxLjd6bTcuNi03NS4xbDAgNC42IC44IDAgMC00LjYgMS45IDAgMC0uOC00LjYgMCAwIC44IDEuOSAwem02LjYgMTIzLjhjMC0uNSAwLTEuMS0uMy0xLjYtLjMtLjMtLjUtLjgtLjgtMS4xcy0uOC0uNS0xLjEtLjhjLS41IDAtMS4xLS4zLTEuNi0uMy0uMyAwLS44IC4zLTEuNCAuMy0uNSAuMy0uOCAuNS0xLjEgLjgtLjUgLjMtLjggLjgtLjggMS4xLS4zIC41LS4zIDEuMS0uMyAxLjYgMCAuMyAwIC44IC4zIDEuNCAwIC4zIC4zIC44IC44IDEuMSAuMyAuMyAuNSAuNSAxLjEgLjggLjUgLjMgMS4xIC4zIDEuNCAuMyAuNSAwIDEuMSAwIDEuNi0uMyAuMy0uMyAuOC0uNSAxLjEtLjhzLjUtLjggLjgtMS4xYy4zLS42IC4zLTEuMSAuMy0xLjR6bTMuMi0xMjQuN2wtMS40IDAtMS42IDMuNS0xLjYtMy41LTEuNCAwIDAgNS40IC44IDAgMC00LjEgMS42IDMuNSAxLjEgMCAxLjQtMy41IDAgNC4xIDEuMSAwIDAtNS40em00LjQtODAuNWMwLTc2LjItNjIuMS0xMzguMy0xMzguNS0xMzguMy0yNy4yIDAtNTMuOSA4LjItNzYuNSAyMy4xIDcyLjEgNTkuMyA3My4yIDE3MS41IDAgMjMwLjUgMjIuNiAxNSA0OS41IDIzLjEgNzYuNSAyMy4xIDc2LjQgLjEgMTM4LjUtNjEuOSAxMzguNS0xMzguNHoiXX0sTUl0PXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6ImRpc2NvdXJzZSIsaWNvbjpbNDQ4LDUxMixbXSwiZjM5MyIsIk0yMjUuOSAzMkMxMDMuMyAzMiAwIDEzMC41IDAgMjUyLjEgMCAyNTYgLjEgNDgwIC4xIDQ4MGwyMjUuOC0uMkMzNDguNiA0NzkuOCA0NDggMzc3LjUgNDQ4IDI1NS45UzM0OC42IDMyIDIyNS45IDMyek0yMjQgMzg0Yy0xOS40IDAtMzcuOS00LjMtNTQuNC0xMi4xTDg4LjUgMzkyIDExMS40IDMxN2MtOS44LTE4LjEtMTUuNC0zOC45LTE1LjQtNjEgMC03MC43IDU3LjMtMTI4IDEyOC0xMjhzMTI4IDU3LjMgMTI4IDEyOC01Ny4zIDEyOC0xMjggMTI4eiJdfSx6SXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiYmxhY2stdGllIixpY29uOls0NDgsNTEyLFtdLCJmMjdlIiwiTTAgMzJsMCA0NDggNDQ4IDAgMC00NDgtNDQ4IDB6TTMxNi41IDM1Ny4ybC05Mi41IDg4LjctOTIuNS04OC43IDY0LjUtMTg0LTY0LjUtODYuNiAxODQuOSAwLTY0LjQgODYuNiA2NC41IDE4NHoiXX0sYWdlPXtwcmVmaXg6ImZhYiIsaWNvbk5hbWU6InNxdWFyZS1mYWNlYm9vayIsaWNvbjpbNDQ4LDUxMixbImZhY2Vib29rLXNxdWFyZSJdLCJmMDgyIiwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsOTguMiAwIDAtMTQ1LjgtNTIuOCAwIDAtNzguMiA1Mi44IDAgMC0zMy43YzAtODcuMSAzOS40LTEyNy41IDEyNS0xMjcuNSAxNi4yIDAgNDQuMiAzLjIgNTUuNyA2LjRsMCA3MC44Yy02LS42LTE2LjUtMS0yOS42LTEtNDIgMC01OC4yIDE1LjktNTguMiA1Ny4ybDAgMjcuOCA4My42IDAtMTQuNCA3OC4yLTY5LjMgMCAwIDE0NS44IDEyOSAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyeiJdfSxDSXQ9YWdlLFRJdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJiYXR0bGUtbmV0IixpY29uOls1MTIsNTEyLFtdLCJmODM1IiwiTTQ0OC44IDIyNS42YzI2LjkgLjIgMzUuNi03LjQgMzguOS0xMi40IDEyLjUtMTYuMy03LjEtNDcuNi01Mi44LTcxLjMgMTcuOC0zMy42IDMwLjEtNjMuNyAzNi4zLTg1LjMgMy40LTExLjggMS4xLTE5IC41LTIwLjMtMS43IDEwLjUtMTUuOCA0OC41LTQ4LjIgMTAwLTI1LTExLjItNTYuNS0yMC4xLTkzLjgtMjMuOC04LjktMTYuOS0zNC45LTYzLjktNjAuNS04OC45LTE2LjgtMTYuNS0zMC4zLTIyLjYtNDAuOC0yMy41bDAgMGMtMTMuOC0xLjYtMjIuNyA1LjgtMjcuNCAxMS0xNy4yIDE4LjUtMjQuMyA0OC45LTI1IDg0LjEtNy4yLTEyLjMtMTcuMi0yNC42LTI4LjUtMjUuOWwtLjIgMGMtMjAuNy0zLjUtMzguNCAyOS4yLTM2IDgxLjMtMzguNCAxLjQtNzEgNS44LTkzIDExLjItOS45IDIuNC0xNi4yIDcuMy0xNy44IDkuNyAxLS40IDIyLjQtOS4yIDExMS42LTkuMiA1LjIgNTMgMjkuOCAxMDEuOCAyNiA5My4yLTkuNyAxNS40LTM4LjIgNjIuNC00Ny4zIDk3LjctNS45IDIyLjktNC40IDM3LjYgLjIgNDcuMSA1LjYgMTIuOCAxNi40IDE2LjcgMjMuMiAxOC4zIDI1IDUuNyA1NS40LTMuNiA4Ni43LTIxLjEtNy41IDEyLjgtMTMuOSAyOC41LTkuMSAzOS4zIDcuMyAxOS42IDQ0LjUgMTguNyA4OC40LTkuNCAyMC4yIDMyLjIgNDAuMSA1Ny45IDU1LjcgNzQuMSAyLjYgMi44IDUuNSA1LjIgOC44IDcuMSA1LjEgMy4yIDguNiAzLjQgOC42IDMuNC04LjItNi43LTM0LTM4LTYyLjUtOTEuOCAyMi4yLTE2IDQ1LjctMzguOSA2Ny41LTY5LjMgMTIyLjggNC42IDE0My4zLTI0LjggMTQ4LTMxLjYgMTQuNy0xOS45IDMuNC01Ny40LTU3LjMtOTMuN3pNMzcxIDMzMS44YzIzLjgtMzcuNyAzMC4zLTY3LjggMjkuNC05Mi4zIDI3LjkgMTcuNiA0Ny4yIDM3LjYgNDkuMSA1OC44IDEuMSAxMi45LTguMSAyOS4xLTc4LjUgMzMuNXpNMjE3LjEgMzg3LjdjOS44LTYuMiAxOS41LTEzLjEgMjkuMi0yMC41IDYuNyAxMy4zIDEzLjYgMjYuMSAyMC42IDM4LjItNDAuNiAyMS45LTY4LjggMTIuOC00OS44LTE3Ljd6bTIxNS0xNzEuM2MtMTAuMy01LjMtMjEuMi0xMC4zLTMyLjQtMTUgNy45LTEyLjEgMTUuNS0yNC40IDIyLjctMzYuOSAzOS4xIDI0LjEgNDUuOSA1My4yIDkuNiA1MS45ek0yNzkuNCAzOThjLTUuNS0xMS40LTExLTIzLjUtMTYuNS0zNi40IDQzLjIgMS4zIDYyLjQtMTguNyA2My4zLTIwLjQgMCAuMS0yNSAxNS42LTYyLjUgMTIuMiAzMC42LTI1LjYgNTkuMS01My43IDg1LjEtODQgOC43LTEwLjIgMTctMjAuNiAyNC45LTMxLjEtLjQtLjMtMS41LTMtMTYuNS0xMi01MS43IDYwLjMtMTAyLjMgOTgtMTMyLjggMTE1LjktMjAuNi0xMS4yLTQwLjgtMzEuOC01NS43LTYxLjUtMjAtMzkuOS0zMC04Mi40LTMxLjYtMTE2LjEgMTIuMyAuOSAyNS4zIDIuMiAzOC44IDMuOS0yMi4zIDM2LjgtMTQuNCA2My0xMy41IDY0LjIgMC0uMS0xLTI5LjIgMjAuMS01OS42IDkgNTIuNSAyNCAxMDMuOCA0NC43IDE1Mi44IC45LS40IDEuOCAuOSAxOC43LTguMi0yNi4zLTc0LjUtMzMuOC0xMzguMi0zNC0xNzMuNCAyMC0xMi40IDQ4LjItMTkuOCA4MS42LTE3LjggNDQuNiAyLjcgODYuNCAxNS4yIDExNi4zIDMwLjctNy4xIDEwLjQtMTQuOSAyMS4zLTIzLjMgMzIuNS0yMC43LTM3LjctNDcuMy00My45LTQ4LjktNDMuNyAuMSAwIDI1LjkgMTQuMSA0MS41IDQ3LjItMzcuNS0xMy44LTc2LjEtMjQuNC0xMTUuMy0zMS43LTEzLjEtMi40LTI2LjItNC40LTM5LjQtNi0uMSAuNC0xLjggMS44LTIuMiAyMC4zIDc3LjkgMTQuNSAxMzYuNiAzOS45IDE2Ny4yIDU3LjIgLjcgMjMuNi03IDUxLjYtMjUuNCA3OS42LTI0LjYgMzcuMy01Ni40IDY3LjItODQuOCA4NS40em0yNy40LTI4N2MtNDQuNi0xLjctNzMuNiA3LjQtOTQuNyAyMC43IDItNTIuMyAyMS4zLTc2LjQgMzguMi03NS4zIDE2LjktNC4yIDU0LjkgNTIuMiA1Ni41IDU0LjZ6bS0xMzAuNyAzLjFjLjUgMTIuMSAxLjYgMjQuNiAzLjIgMzcuMy0xNC42LS45LTI4LjctMS4zLTQyLjQtMS4zLS4xIDMuMi0uMS01MSAyNC43LTQ5LjZsLjEgMGM1LjggMS4xIDEwLjYgNi45IDE0LjQgMTMuNnptLTI4LjEgMTYyYzIwLjggMzkuNyA0My4zIDYwLjYgNjUuMyA3Mi4zLTQ2LjggMjQuOC03Ny41IDIwLTg0LjkgNC41LS4yLS4yLTExLjEtMTUuMyAxOS43LTc2LjhsMCAweiJdfSwkSXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToiYmltb2JqZWN0IixpY29uOls0NDgsNTEyLFtdLCJmMzc4IiwiTTQxNiAzMkwzMiAzMkMxNC40IDMyIDAgNDYuNCAwIDY0TDAgNDQ4YzAgMTcuNiAxNC40IDMyIDMyIDMybDM4NCAwYzE3LjYgMCAzMi0xNC40IDMyLTMybDAtMzg0YzAtMTcuNi0xNC40LTMyLTMyLTMyek0zNTIgMjg5LjRjMCA0OS40LTExLjQgODIuNi0xMDMuOCA4Mi42bC0xNi45IDBjLTQ0LjEgMC02Mi40LTE0LjktNzAuNC0zOC44bC0uOSAwIDAgMzQuOC02NCAwIDAtMjMyIDY0IDAgMCA3NC43IDEuMSAwYzQuNi0zMC41IDM5LjctMzguOCA2OS43LTM4LjhsMTcuMyAwYzkyLjQgMCAxMDMuOCAzMy4xIDEwMy44IDgyLjVsMCAzNSAuMSAwem0tNjQtMjguOWwwIDIyLjljMCAyMS43LTMuNCAzMy44LTM4LjQgMzMuOGwtNDUuMyAwYy0yOC45IDAtNDQuMS02LjUtNDQuMS0zNS43bDAtMTljMC0yOS4zIDE1LjItMzUuNyA0NC4xLTM1LjdsNDUuMyAwYzM1LS4yIDM4LjQgMTIgMzguNCAzMy43eiJdfSxESXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToic3ZlbHRlIixpY29uOls0NDgsNTEyLFtdLCJlODY4IiwiTTIwMi4xIDI2LjRjNjYuOC00Mi42IDE1OS4zLTIyLjcgMjA2LjEgNDQuMyAxMS4xIDE1LjUgMTkgMzMuMSAyMy4yIDUxLjhzNC43IDM3LjkgMS4zIDU2LjdjLTMuMiAxOC0xMC4xIDM1LjEtMjAuMSA1MC4zIDE0LjYgMjcuOSAxOS42IDYwIDE0IDkxLTMuMyAxOC40LTEwLjQgMzYtMjAuOSA1MS41cy0yNC4xIDI4LjctMzkuOSAzOC43TDI0OC4zIDQ4NS42Yy02Ni44IDQyLjYtMTU5LjMgMjIuNy0yMDYuMS00NC4yLTExLjEtMTUuNS0xOS0zMy4yLTIzLjItNTEuOHMtNC43LTM3LjktMS4zLTU2LjdjMy4yLTE4IDEwLjEtMzUuMSAyMC4xLTUwLjMtMTQuNy0yNy45LTE5LjYtNjAtMTQtOTEuMSAzLjMtMTguNCAxMC40LTM2IDIwLjktNTEuNXMyNC4xLTI4LjcgMzkuOS0zOC43TDIwMi4xIDI2LjR6TTMxNS42IDY3LjJjLTE3LjktNi42LTM3LjQtNy42LTU1LjktMi44LTguNCAyLjMtMTYuNSA1LjgtMjMuOCAxMC41TDExOC41IDE0OS43Yy05LjUgNi0xNy43IDEzLjktMjQgMjMuM1M4NCAxOTIuOCA4MiAyMDMuOWMtMiAxMS4zLTEuNyAyMi45IC44IDM0LjFzNy4zIDIxLjggMTMuOSAzMS4yYzEwLjkgMTUuNyAyNi4zIDI3LjYgNDQuMiAzNC4zczM3LjQgNy42IDU1LjkgMi44YzguNC0yLjMgMTYuNS01LjggMjMuOC0xMC41bDQ0LjgtMjguNmMyLjItMS40IDQuNy0yLjUgNy4yLTMuMiA1LjYtMS40IDExLjQtMS4yIDE2LjggLjhzMTAgNS42IDEzLjMgMTAuM2MyIDIuOCAzLjUgNiA0LjIgOS40cy45IDYuOSAuMyAxMC4zYy0uNiAzLjMtMS45IDYuNS0zLjggOS4zLTEuOSAyLjgtNC40IDUuMi03LjIgN0wxNzguOCAzODYuMWMtMi4yIDEuNC00LjcgMi41LTcuMiAzLjItNS42IDEuNC0xMS40IDEuMi0xNi44LS44cy0xMC01LjYtMTMuMy0xMC4zYy0zLjYtNS4xLTUuMy0xMS4yLTQuNy0xNy40bC40LTQuNC00LjMtMS4zYy0xNi41LTUtMzIuMS0xMi43LTQ1LjktMjIuOWwtNi00LjQtMi4yIDYuN2MtMS4yIDMuNi0yLjEgNy4zLTIuOCAxMS0yIDExLjMtMS43IDIyLjkgLjggMzQuMXM3LjMgMjEuOCAxMy45IDMxLjFjMTAuOSAxNS43IDI2LjMgMjcuNiA0NC4yIDM0LjNzMzcuNCA3LjYgNTUuOCAyLjhjOC40LTIuMyAxNi41LTUuOCAyMy45LTEwLjVsMTE3LjMtNzQuOGM5LjUtNiAxNy43LTEzLjkgMjQtMjMuM3MxMC42LTE5LjkgMTIuNi0zMWMyLTExLjMgMS44LTIyLjktLjgtMzQuMXMtNy4zLTIxLjgtMTQtMzEuMWMtMTAuOS0xNS43LTI2LjMtMjcuNi00NC4yLTM0LjNzLTM3LjQtNy42LTU1LjktMi44Yy04LjQgMi4zLTE2LjUgNS44LTIzLjggMTAuNUwxODUgMjQ0LjhjLTIuMiAxLjQtNC42IDIuNS03LjIgMy4yLTUuNiAxLjQtMTEuNSAxLjItMTYuOC0uOHMtMTAtNS42LTEzLjMtMTAuM2MtMi0yLjgtMy40LTYtNC4yLTkuNHMtLjktNi45LS4yLTEwLjNjLjYtMy4zIDEuOS02LjUgMy44LTkuM3M0LjQtNS4yIDcuMi03bDExNy40LTc0LjhjMi4yLTEuNCA0LjctMi41IDcuMi0zLjIgNS42LTEuNCAxMS40LTEuMSAxNi44IC45czEwIDUuNiAxMy4zIDEwLjNjMy42IDUuMSA1LjIgMTEuMyA0LjcgMTcuNGwtLjQgNC40IDQuNCAxLjNjMTYuNSA1IDMyIDEyLjggNDUuOSAyM2w2IDQuNCAyLjItNi44YzEuMi0zLjYgMi4xLTcuMyAyLjgtMTEgMi0xMS4zIDEuOC0yMi45LS44LTM0LjFzLTcuMy0yMS44LTE0LTMxLjFjLTEwLjktMTUuNy0yNi4zLTI3LjYtNDQuMi0zNC4zeiJdfSxMSXQ9e3ByZWZpeDoiZmFiIixpY29uTmFtZToic3F1YXJlLWRlc2twcm8iLGljb246WzQ0OCw1MTIsW10sImU4NDQiLCJNNDA4LjggMzJDNDMwLjQgMzIgNDQ4IDQ5LjYgNDQ4IDcxLjJsMCAzNjkuNmMwIDIxLjYtMTcuNiAzOS4yLTM5LjIgMzkuMkwzOS4yIDQ4MEMxNy42IDQ4MCAwIDQ2Mi40IDAgNDQwLjhMMCA3MS4yQzAgNDkuNiAxNy42IDMyIDM5LjIgMzJsMzY5LjYgMHpNMTEwLjkgMjc0LjFsMCAxMTQuNCA4OS4xLS4xYzIwLjYgMCAzOS40LTMuMiA1Ni4zLTkuNXMzMS4zLTE1LjQgNDMuMi0yN2MxMi4yLTExLjkgMjEuNi0yNiAyOC4yLTQyLjEgNC42LTExLjEgNy43LTIzIDkuMi0zNS43bC00My44IDBjLTEuMSA2LjQtMi44IDEyLjQtNS4xIDE4LjItNC4yIDEwLjktMTAuMyAyMC4zLTE4LjIgMjguMi03LjkgNy43LTE3LjQgMTMuNy0yOC42IDE3LjktMTEuMSA0LjMtMjMuNSA2LjQtMzcuMyA2LjRsLTUwIDAgMC03MC42LTQzIC4xem0wLTE1MS40bDAgMTE0LjQgNDMtLjEgMC03MC43IDUwIDBjMTMuNyAwIDI2LjIgMi4xIDM3LjMgNi40IDExLjEgNC4zIDIwLjYgMTAuMyAyOC42IDE4LjMgNy45IDcuNyAxNCAxNy4xIDE4LjIgMjguMiAyLjMgNS42IDQgMTEuNSA1LjEgMTcuOGw0My45IC4xYy0xLjQtMTIuNi00LjQtMjQuNC04LjktMzUuMy02LjYtMTYuNC0xNi0zMC41LTI4LjEtNDIuMi0xMi4xLTExLjktMjYuNy0yMS4xLTQzLjYtMjcuNS0xNi45LTYuNC0zNS43LTkuNS01Ni4zLTkuNWwtODkgLjF6Il19LEVJdD17cHJlZml4OiJmYWIiLGljb25OYW1lOiJ0YWlsd2luZC1jc3MiLGljb246WzY0MCw1MTIsW10sImU4NjYiLCJNMzIwIDY0Yy04NS4zIDAtMTM4LjcgNDIuNy0xNjAgMTI4IDMyLTQyLjcgNjkuMy01OC43IDExMi00OCAyNC4zIDYuMSA0MS43IDIzLjggNjEgNDMuMyAzMS40IDMxLjggNjcuNyA2OC43IDE0NyA2OC43IDg1LjMgMCAxMzguNy00Mi43IDE2MC0xMjgtMzIgNDIuNy02OS4zIDU4LjctMTEyIDQ4LTI0LjMtNi4xLTQxLjctMjMuOC02MS00My4zLTMxLjQtMzEuOC02Ny43LTY4LjctMTQ3LTY4Ljd6TTE2MCAyNTZjLTg1LjMgMC0xMzguNyA0Mi43LTE2MCAxMjggMzItNDIuNyA2OS4zLTU4LjcgMTEyLTQ4IDI0LjMgNi4xIDQxLjcgMjMuOCA2MSA0My4zIDMxLjQgMzEuOCA2Ny43IDY4LjcgMTQ3IDY4LjcgODUuMyAwIDEzOC43LTQyLjcgMTYwLTEyOC0zMiA0Mi43LTY5LjMgNTguNy0xMTIgNDgtMjQuMy02LjEtNDEuNy0yMy44LTYxLTQzLjMtMzEuNC0zMS44LTY3LjctNjguNy0xNDctNjguN3oiXX0scFdhPXtmYVNxdWFyZUdpdGh1YjpTOGUsZmFHaXRodWJTcXVhcmU6JF90LGZhVGhpbmtQZWFrczpEX3QsZmFHb29nbGVEcml2ZTpMX3QsZmFBdXRvcHJlZml4ZXI6RV90LGZhU3F1YXJlVmlhZGVvOl84ZSxmYVZpYWRlb1NxdWFyZTpQX3QsZmFDcGFuZWw6SV90LGZhTWVuZGVsZXk6QV90LGZhRHJhZnQyZGlnaXRhbDpOX3QsZmFSZXBseWQ6Ul90LGZhRW1waXJlOk9fdCxmYUFjY2Vzc2libGVJY29uOkZfdCxmYVF1b3JhOkJfdCxmYUNjSmNiOkhfdCxmYUZlZG9yYTpxX3QsZmFEdW9saW5nbzpqX3QsZmFGaXJzdGRyYWZ0OlZfdCxmYUZyZWVic2Q6VV90LGZhT2R5c2VlOldfdCxmYUdnQ2lyY2xlOkdfdCxmYUNsb3VkZmxhcmU6S190LGZhSGFja2VycmFuazpZX3QsZmFTa3lhdGxhczpaX3QsZmFEZXNrcHJvOlhfdCxmYVJlc29sdmluZzpRX3QsZmFCbGFja2JlcnJ5OkpfdCxmYVN0cmlwZVM6ZU10LGZhU3F1YXJlQmVoYW5jZTpNOGUsZmFCZWhhbmNlU3F1YXJlOnRNdCxmYVNlcnZpY2VzdGFjazphTXQsZmFSb2NrZXRjaGF0OnNNdCxmYVJlYmVsOmlNdCxmYVNxdWFyZVdlYkF3ZXNvbWU6ck10LGZhTGlua3RyZWU6b010LGZhU2ltcGx5YnVpbHQ6bk10LGZhU3R1YmJlcjpsTXQsZmFBcHBlcjpjTXQsZmFHb29nbGVTY2hvbGFyOmRNdCxmYVlhcm46dU10LGZhU3RhY2tPdmVyZmxvdzpwTXQsZmFCbHVldG9vdGg6aE10LGZhQ3JlYXRpdmVDb21tb25zTmNKcDpmTXQsZmFSZWRkaXQ6bU10LGZhQ29ubmVjdGRldmVsb3A6Z010LGZhUmVzZWFyY2hnYXRlOmJNdCxmYVNpZ25hbE1lc3Nlbmdlcjp2TXQsZmFYaW5nOnhNdCxmYVNxdWFyZUpzOno4ZSxmYUpzU3F1YXJlOnlNdCxmYUZvbnRpY29uczp3TXQsZmFVcHM6a010LGZhQW1hem9uUGF5OlNNdCxmYVBhbmRvcmE6X010LGZhT3BlbmlkOk1NdCxmYVZzY286ek10LGZhR2xvYmFsZWFrczpDTXQsZmFWZW5tbzpUTXQsZmFVYnVudHU6JE10LGZhVmlhY29pbjpETXQsZmFaaGlodTpMTXQsZmFZYW5kZXg6RU10LGZhUGl4aXY6UE10LGZhT3BlbmFpOklNdCxmYVNpdGg6QU10LGZhSnVsaWE6Tk10LGZhTmZjRGlyZWN0aW9uYWw6Uk10LGZhQ3JlYXRpdmVDb21tb25zQnk6T010LGZhVW1icmFjbzpGTXQsZmFIb29saTpCTXQsZmFTcXVhcmVHaXQ6QzhlLGZhR2l0U3F1YXJlOkhNdCxmYU9kbm9rbGFzc25pa2k6cU10LGZhRHJ1cGFsOmpNdCxmYUJsb2dnZXJCOlZNdCxmYUludmlzaW9uOlVNdCxmYUZhY2Vib29rRjpXTXQsZmFDZW50b3M6R010LGZhU2NhbGV3YXk6S010LGZhQ2NBbWF6b25QYXk6WU10LGZhRWJheTpaTXQsZmFDb250YW86WE10LGZhRWxsbzpRTXQsZmFTaXN0cml4OkpNdCxmYVBlcmlzY29wZTplenQsZmFFeHBlZGl0ZWRzc2w6dHp0LGZhTmFwc3RlcjphenQsZmFEZWxpY2lvdXM6c3p0LGZhR3VpbGRlZDppenQsZmFPYnNpZGlhbjpyenQsZmFYYm94Om96dCxmYVVudGFwcGQ6bnp0LGZhR29vZ2xlUGx1c0c6bHp0LGZhR2l0aHViQWx0OmN6dCxmYUdldFBvY2tldDpkenQsZmFHbGlkZTp1enQsZmFCaXR5OnB6dCxmYVdwZXhwbG9yZXI6aHp0LGZhTWVnYXBvcnQ6Znp0LGZhTGVldGNvZGU6bXp0LGZhTWRiOmd6dCxmYVBhZ2U0OmJ6dCxmYVRoZVJlZFlldGk6dnp0LGZhSmlyYTp4enQsZmFGZWRleDp5enQsZmFFdmVybm90ZTp3enQsZmFVc2I6a3p0LGZhQW5ncnljcmVhdGl2ZTpTenQsZmFNaXp1bmk6X3p0LGZhSXRjaElvOk16dCxmYVdpbmRvd3M6enp0LGZhU3R1bWJsZXVwb246Q3p0LGZhR29vZ2xlOk1iLGZhRGlzY29yZDpUenQsZmFIYWNrZXJOZXdzOiR6dCxmYUVsZXZlbnR5OlQ4ZSxmYTExdHk6RHp0LGZhVGVhbXNwZWFrOkx6dCxmYVN1cHBsZTpFenQsZmFTcXVhcmVUd2l0dGVyOiQ4ZSxmYVR3aXR0ZXJTcXVhcmU6UHp0LGZhVmltOkl6dCxmYUZvbnRBd2Vzb21lOllyZSxmYUZvbnRBd2Vzb21lRmxhZzpBenQsZmFGb250QXdlc29tZUxvZ29GdWxsOk56dCxmYVdpcnNpbmRoYW5kd2VyazpEOGUsZmFXc2g6Unp0LGZhWm9vbTpPenQsZmFDb25mbHVlbmNlOkZ6dCxmYURpZ2c6Qnp0LGZhVGhyZWFkczpIenQsZmFXcHJlc3NyOkw4ZSxmYVJlbmRhY3Q6cXp0LGZhWW9hc3Q6anp0LGZhTmltYmxyOlZ6dCxmYVBpeGVsZmVkOlV6dCxmYVlhaG9vOld6dCxmYUJsdWVza3k6R3p0LGZhU2NyaWJkOkt6dCxmYUNyZWF0aXZlQ29tbW9uc1BkOll6dCxmYUVhcmx5YmlyZHM6Wnp0LGZhU3ltZm9ueWNhc3RzOlh6dCxmYVNxdWFyZU9kbm9rbGFzc25pa2k6RThlLGZhT2Rub2tsYXNzbmlraVNxdWFyZTpRenQsZmFNYXJrZG93bjpKenQsZmFUeXBvMzplQ3QsZmFKb29tbGE6dEN0LGZhV2VpeGluOmFDdCxmYUdydW50OnNDdCxmYVN1cHBvcnRub3c6aUN0LGZhUm9ja3JtczpyQ3QsZmFVbnNwbGFzaDpvQ3QsZmFTcXVhcmVJbnN0YWdyYW06UDhlLGZhSW5zdGFncmFtU3F1YXJlOm5DdCxmYUZpcnN0T3JkZXJBbHQ6bEN0LGZhRnVsY3J1bTpjQ3QsZmFBcmNoTGludXg6ZEN0LGZhRmVkaXZlcnNlOnVDdCxmYUJyYXZlUmV2ZXJzZTpwQ3QsZmFBdmlhbmV4OmhDdCxmYU5zODpmQ3QsZmFTcXVhcmVQaW50ZXJlc3Q6SThlLGZhUGludGVyZXN0U3F1YXJlOm1DdCxmYUJsdWV0b290aEI6Z0N0LGZhR3JpcGZpcmU6YkN0LGZhU3F1YXJlR29vZ2xlUGx1czpBOGUsZmFHb29nbGVQbHVzU3F1YXJlOnZDdCxmYUdpdGVlOnhDdCxmYVhtcHA6eUN0LGZhQXBwU3RvcmU6d0N0LGZhV2l4OmtDdCxmYUludGVyY29tOlNDdCxmYVJlYWN0ZXVyb3BlOl9DdCxmYVdhemU6TUN0LGZhQ3JlYXRpdmVDb21tb25zUmVtaXg6ekN0LGZhQmFuZGNhbXA6Q0N0LGZhU3F1YXJlV2ViQXdlc29tZVN0cm9rZTpUQ3QsZmFWaW1lb1Y6JEN0LGZhU3RyYXZhOkRDdCxmYVVuaXJlZ2lzdHJ5OkxDdCxmYUNjRGluZXJzQ2x1YjpFQ3QsZmFLdWJlcm5ldGVzOlBDdCxmYVBpbnRlcmVzdDpJQ3QsZmFBbGdvbGlhOkFDdCxmYVN0YWNrcGF0aDpOQ3QsZmFPY3RvcHVzRGVwbG95OlJDdCxmYVlhbW1lcjpPQ3QsZmFNb2R4OkZDdCxmYVNxdWFyZVRocmVhZHM6QkN0LGZhT2xkUmVwdWJsaWM6SEN0LGZhU3VzZTpxQ3QsZmFBcHBTdG9yZUlvczpqQ3QsZmFVbHRyYWx5dGljc1lvbG86VkN0LGZhU3F1YXJlRHJpYmJibGU6TjhlLGZhRHJpYmJibGVTcXVhcmU6VUN0LGZhVWlraXQ6V0N0LGZhU3VwZXJwb3dlcnM6R0N0LGZhWW91dHViZTpLQ3QsZmFFbWJlcjpZQ3QsZmFCb290c3RyYXA6WkN0LGZhSXR1bmVzOlhDdCxmYVNxdWFyZVhpbmc6UjhlLGZhWGluZ1NxdWFyZTpRQ3QsZmFDc3MzQWx0OkpDdCxmYVNxdWFyZXNwYWNlOmVUdCxmYVRyZWxsbzp0VHQsZmFWaWFkZW86YVR0LGZhU2VhcmNoZW5naW46c1R0LGZhVW5yZWFsRW5naW5lOmlUdCxmYVBheXBhbDpyVHQsZmFTcXVhcmVCbHVlc2t5Om9UdCxmYURBbmREQmV5b25kOm5UdCxmYU1pY3Jvc29mdDpsVHQsZmFGbHk6Y1R0LGZhQ2NTdHJpcGU6ZFR0LGZhV29yZHByZXNzU2ltcGxlOnVUdCxmYVNlbGxzeTpwVHQsZmFEYXNoY3ViZTpoVHQsZmFHaXR0ZXI6ZlR0LGZhV29sZlBhY2tCYXR0YWxpb246bVR0LGZhTGFzdGZtOmdUdCxmYVNob3B3YXJlOmJUdCxmYUJsb2dnZXI6dlR0LGZhRWRnZTp4VHQsZmFJb3hob3N0OnlUdCxmYVNjaGxpeDp3VHQsZmFEQW5kRDprVHQsZmFWdWVqczpTVHQsZmFNZXRhOl9UdCxmYUNyZWF0aXZlQ29tbW9uc1NoYXJlOk1UdCxmYVN0dWRpb3ZpbmFyaTp6VHQsZmFCaXRidWNrZXQ6Q1R0LGZhVms6VFR0LGZhR2l0aHViOiRUdCxmYUNvZGllcGllOkRUdCxmYVBpZWRQaXBlcjpMVHQsZmFSYXNwYmVycnlQaTpFVHQsZmFDc3MzOlBUdCxmYUh1YnNwb3Q6SVR0LGZhQ21wbGlkOkFUdCxmYUR5YWxvZzpOVHQsZmFFbGVtZW50b3I6UlR0LGZhRmlyc3RPcmRlcjpPVHQsZmFEcmliYmJsZTpGVHQsZmFMaW5rZWRpbjp6YixmYUNjUGF5cGFsOkJUdCxmYURobDpIVHQsZmFUZXg6cVR0LGZhQ2xhdWRlOmpUdCxmYVNob3BpZnk6VlR0LGZhU3F1YXJlUmVkZGl0Ok84ZSxmYVJlZGRpdFNxdWFyZTpVVHQsZmFDcmVhdGl2ZUNvbW1vbnNOYzpXVHQsZmFHYWxhY3RpY1JlcHVibGljOkdUdCxmYUZhY2Vib29rOkNiLGZhR2l0bGFiOktUdCxmYVFxOllUdCxmYVN0cmlwZTpaVHQsZmFEYWlseW1vdGlvbjpYVHQsZmFTdGVhbTpRVHQsZmFWZW5tb1Y6SlR0LGZhU25hcGNoYXQ6RjhlLGZhU25hcGNoYXRHaG9zdDplJHQsZmFHYWxhY3RpY1NlbmF0ZTp0JHQsZmFQaG9lbml4RnJhbWV3b3JrOmEkdCxmYUdpdDpzJHQsZmFPcHRpbk1vbnN0ZXI6aSR0LGZhSmVua2luczpyJHQsZmFTbGlkZXNoYXJlOm8kdCxmYVViZXI6biR0LGZhRGlnaXRhbE9jZWFuOmwkdCxmYVNvdW5kY2xvdWQ6YyR0LGZhU3F1YXJlRmlnbWE6ZCR0LGZhQ3JlYXRpdmVDb21tb25zU2E6dSR0LGZhQ2hyb21lOnAkdCxmYVRyYWRlRmVkZXJhdGlvbjpoJHQsZmFWYWFkaW46ZiR0LGZhRGV2aWFudGFydDptJHQsZmFNZWRpdW06WDMsZmFNZWRpdW1NOmckdCxmYU9wZW5jYXJ0OmIkdCxmYVlDb21iaW5hdG9yOnYkdCxmYUxpbmU6eCR0LGZhQW1pbGlhOnkkdCxmYUFzeW1tZXRyaWs6dyR0LGZhUGhhYnJpY2F0b3I6ayR0LGZhQm90czpTJHQsZmFWaW5lOl8kdCxmYU1lZHJ0Ok0kdCxmYU9zaTp6JHQsZmFHZzpDJHQsZmFCdXlzZWxsYWRzOlQkdCxmYUdvb2dsZVBsdXM6JCR0LGZhU2NyZWVucGFsOkQkdCxmYUJpdGNvaW46TCR0LGZhU3dpZnQ6RSR0LGZhRmlsZXNQaW53aGVlbDpQJHQsZmFMYXJhdmVsOkkkdCxmYVdwZm9ybXM6QSR0LGZhU3BlYWtlckRlY2s6TiR0LGZhRmxpY2tyOlIkdCxmYUNjVmlzYTpPJHQsZmFVcHdvcms6RiR0LGZhS2FrYW9UYWxrOkIkdCxmYUZsdXR0ZXI6SCR0LGZhQnVmZmVyOnEkdCxmYUdyYXRpcGF5OmokdCxmYUdvb2dsZVBheTpWJHQsZmFBcHBsZTpVJHQsZmFUdW1ibHI6VyR0LGZhUGhvZW5peFNxdWFkcm9uOkckdCxmYUNlbnRlcmNvZGU6SyR0LGZhRGViaWFuOlkkdCxmYU1hc3RvZG9uOlokdCxmYVNrZXRjaDpYJHQsZmFXZWJBd2Vzb21lOlEkdCxmYVNhc3M6SiR0LGZhVGhyZWVtYTplRHQsZmFTcXVhcmVXaGF0c2FwcDpCOGUsZmFXaGF0c2FwcFNxdWFyZTp0RHQsZmFTa3lwZTphRHQsZmFBbmd1bGFyOnNEdCxmYUNpcmNsZVp1bGlwOmlEdCxmYU9wZW5zdXNlOnJEdCxmYURyb3Bib3g6b0R0LGZhRGVlemVyOm5EdCxmYUNyZWF0aXZlQ29tbW9uc1NhbXBsaW5nOmxEdCxmYUplZGlPcmRlcjpjRHQsZmFSUHJvamVjdDpkRHQsZmFJbnN0YWxvZDp1RHQsZmFDYW5hZGlhbk1hcGxlTGVhZjpwRHQsZmFFdGhlcmV1bTpoRHQsZmFIb3V6ejpmRHQsZmFWaWJlcjptRHQsZmFLaWNrc3RhcnRlcjpIOGUsZmFTcXVhcmVLaWNrc3RhcnRlcjpnRHQsZmFTcG90aWZ5OmJEdCxmYUxlYW5wdWI6dkR0LGZhSmF2YTp4RHQsZmFOZmNTeW1ib2w6eUR0LGZhV29kdTp3RHQsZmFTcXVhcmVTdGVhbTpxOGUsZmFTdGVhbVNxdWFyZTprRHQsZmFDcmVhdGl2ZUNvbW1vbnNOY0V1OlNEdCxmYU5wbTpfRHQsZmFDbG91ZHNjYWxlOk1EdCxmYVRoZW1lY286ekR0LGZhR29vZ2xlUGxheTpDRHQsZmFLb3J2dWU6VER0LGZhVzNjOiREdCxmYUdyYXY6RER0LGZhQXdzOkxEdCxmYUdsaWRlRzpFRHQsZmFKc2ZpZGRsZTpQRHQsZmFLZXliYXNlOklEdCxmYUx1bW9uRHJvcDpBRHQsZmFGb3JnZWpvOk5EdCxmYVBvc3RncmVzcWw6UkR0LGZhV2VlYmx5Ok9EdCxmYURvY2tlcjpGRHQsZmFNYWdlbnRvOkJEdCxmYVRvckJyb3dzZXI6SER0LGZhR2l0QWx0OnFEdCxmYUZpcmVmb3hCcm93c2VyOmpEdCxmYUNsb3Vkc21pdGg6VkR0LGZhV2l6YXJkc09mVGhlQ29hc3Q6VUR0LGZhQ3JlYXRpdmVDb21tb25zTmQ6V0R0LGZhVXNwczpHRHQsZmFTcXVhcmVMZXR0ZXJib3hkOktEdCxmYU1hbmRhbG9yaWFuOllEdCxmYVNsYWNrOmo4ZSxmYVNsYWNrSGFzaDpUYixmYUFuZ2VsbGlzdDpaRHQsZmFBbmRyb2lkOlhEdCxmYU1lZXR1cDpRRHQsZmFGb250aWNvbnNGaTpKRHQsZmFQYWxmZWQ6ZUx0LGZhV3BiZWdpbm5lcjp0THQsZmFEaWFzcG9yYTphTHQsZmFQcm9kdWN0SHVudDpzTHQsZmFTcXVhcmVVcHdvcms6aUx0LGZhQ3V0dGxlZmlzaDpyTHQsZmFNZWRhcHBzOm9MdCxmYVBpeDpuTHQsZmFTcXVhcmVUdW1ibHI6VjhlLGZhVHVtYmxyU3F1YXJlOmxMdCxmYVJlYWN0OmNMdCxmYUh1Z2dpbmdGYWNlOmRMdCxmYUp4bDp1THQsZmFTcXVhcmVMaW5rZWRpbjpwTHQsZmFDc3M6aEx0LGZhSGFzaG5vZGU6Zkx0LGZhUmVkZGl0QWxpZW46bUx0LGZhVGlrdG9rOiRiLGZhV29yZHByZXNzOmdMdCxmYUlkZWFsOmJMdCxmYVBpZWRQaXBlclBwOnZMdCxmYVVzc3VubmFoOnhMdCxmYUZvcnRBd2Vzb21lQWx0OnlMdCxmYUJ1cm9tb2JlbGV4cGVydGU6d0x0LGZhQmlsaWJpbGk6a0x0LGZhTmVvczpTTHQsZmFEZXY6X0x0LGZhSG90amFyOk1MdCxmYURvY2h1Yjp6THQsZmFWaW1lbzpDTHQsZmFNYXhjZG46VEx0LGZhU3F1YXJlRm9udEF3ZXNvbWVTdHJva2U6VThlLGZhRm9udEF3ZXNvbWVBbHQ6JEx0LGZhU3BlYWthcDpETHQsZmFGYW50YXN5RmxpZ2h0R2FtZXM6TEx0LGZhTGludXg6RUx0LGZhQ290dG9uQnVyZWF1OlBMdCxmYUdvb2dsZVdhbGxldDpJTHQsZmFGb3Vyc3F1YXJlOkFMdCxmYVNoaXJ0c2luYnVsazpOTHQsZmFNaW50Yml0OlJMdCxmYVp1bGlwOk9MdCxmYVN0YXlsaW5rZWQ6Rkx0LGZhV2ViZmxvdzpCTHQsZmFSZW5yZW46SEx0LGZhS29GaTpxTHQsZmFSZXY6akx0LGZhS2V5Y2RuOlZMdCxmYUhpcmVBSGVscGVyOlVMdCxmYVNxdWFyZUhhY2tlck5ld3M6VzhlLGZhSGFja2VyTmV3c1NxdWFyZTpXTHQsZmFDcmVhdGl2ZUNvbW1vbnNQZEFsdDpHTHQsZmFPcmNpZDpLTHQsZmFCb2FyZEdhbWVHZWVrOkc4ZSxmYUJnZzpZTHQsZmFCZWhhbmNlOlpMdCxmYU1vbmVybzpYTHQsZmFGaWdtYTpRTHQsZmFJbnN0YWdyYW06RGIsZmFQZXJieXRlOkpMdCxmYVNxdWFyZVZpbWVvOks4ZSxmYVZpbWVvU3F1YXJlOmVFdCxmYVB1c2hlZDp0RXQsZmFNaXhjbG91ZDphRXQsZmFZYW5kZXhJbnRlcm5hdGlvbmFsOnNFdCxmYUhpdmU6aUV0LGZhQ3JlYXRpdmVDb21tb25zWmVybzpyRXQsZmFTcXVhcmVTbmFwY2hhdDpZOGUsZmFTbmFwY2hhdFNxdWFyZTpvRXQsZmFUaGVtZWlzbGU6bkV0LGZhRGFydExhbmc6bEV0LGZhRGVwbG95ZG9nOmNFdCxmYUZsaXBib2FyZDpkRXQsZmFCdXlOTGFyZ2U6dUV0LGZhV2F0Y2htYW5Nb25pdG9yaW5nOnBFdCxmYUhpcHM6aEV0LGZhQ2xvdWR2ZXJzaWZ5OmZFdCxmYUdvb2RyZWFkczptRXQsZmFUaWRhbDpnRXQsZmFVbml0eTpiRXQsZmFUZW5jZW50V2VpYm86dkV0LGZhRnJlZUNvZGVDYW1wOnhFdCxmYVhUd2l0dGVyOnlFdCxmYVN0aWNrZXJNdWxlOndFdCxmYVR3aXRjaDprRXQsZmFLaWNrc3RhcnRlcks6U0V0LGZhQ3JpdGljYWxSb2xlOl9FdCxmYVN0ZWFtU3ltYm9sOk1FdCxmYU1haWxjaGltcDp6RXQsZmFMdW1vbjpDRXQsZmFOdXRyaXRpb25peDpURXQsZmFDcmVhdGl2ZUNvbW1vbnNTYW1wbGluZ1BsdXM6JEV0LGZhUmVkaGF0OkRFdCxmYVNxdWFyZVBpZWRQaXBlcjpaOGUsZmFQaWVkUGlwZXJTcXVhcmU6TEV0LGZhV2hhdHNhcHA6RUV0LGZhSW1kYjpQRXQsZmFQeXRob246SUV0LGZhQ2FzaEFwcDpBRXQsZmFQaW50ZXJlc3RQOk5FdCxmYVdobWNzOlJFdCxmYUpvZ2V0Ok9FdCxmYVNxdWFyZVlvdXR1YmU6WDhlLGZhWW91dHViZVNxdWFyZTpGRXQsZmFBdGxhc3NpYW46QkV0LGZhUGllZFBpcGVySGF0OkhFdCxmYUludGVybmV0RXhwbG9yZXI6cUV0LGZhQWlyYm5iOmpFdCxmYUpzOlZFdCxmYVF1aW5zY2FwZTpVRXQsZmFBZHZlcnNhbDpXRXQsZmFDcmVhdGl2ZUNvbW1vbnM6R0V0LGZhTm90aW9uOktFdCxmYUNocm9tZWNhc3Q6WUV0LGZhVWx0cmFseXRpY3NIdWI6WkV0LGZhV2lraXBlZGlhVzpYRXQsZmFTaXRyb3g6UUV0LGZhU3F1YXJlR2l0bGFiOlE4ZSxmYUdpdGxhYlNxdWFyZTpKRXQsZmFTaG9lbGFjZTplUHQsZmFPcGVuc3RyZWV0bWFwOnRQdCxmYVNlbGxjYXN0OmFQdCxmYU1peDpzUHQsZmFDY0FwcGxlUGF5OmlQdCxmYVNvbGFuYTpyUHQsZmFUeXBlc2NyaXB0Om9QdCxmYUJyYXZlOm5QdCxmYUV0c3k6bFB0LGZhQnRjOmNQdCxmYUFkbjpkUHQsZmFTcXVhcmVYVHdpdHRlcjp1UHQsZmFTcXVhcmVGb250QXdlc29tZTpwUHQsZmFGb3J1bWJlZTpoUHQsZmE0Mkdyb3VwOko4ZSxmYUlubm9zb2Z0OmZQdCxmYVN0dW1ibGV1cG9uQ2lyY2xlOm1QdCxmYVN5bWZvbnk6Z1B0LGZhU2FsZXNmb3JjZTpiUHQsZmFTb3VyY2V0cmVlOnZQdCxmYUxpbmtlZGluSW46eFB0LGZhSHRtbDU6eVB0LGZhUnVzdDp3UHQsZmFIb3JuYmlsbDprUHQsZmFQaHA6U1B0LGZhRGlzcXVzOl9QdCxmYTUwMHB4Ok1QdCxmYUFmZmlsaWF0ZXRoZW1lOnpQdCxmYVJlZFJpdmVyOkNQdCxmYVR3aXR0ZXI6TGIsZmFGb3J0QXdlc29tZTpUUHQsZmFNaXhlcjokUHQsZmFMeWZ0OkRQdCxmYUFwcGxlUGF5OkxQdCxmYUFydHN0YXRpb246RVB0LGZhTm9kZUpzOlBQdCxmYVVuY2hhcnRlZDpJUHQsZmFQbGF5c3RhdGlvbjpBUHQsZmFNaWNyb2Jsb2c6TlB0LGZhR2l0a3Jha2VuOlJQdCxmYVRlbGVncmFtOmVnZSxmYVRlbGVncmFtUGxhbmU6T1B0LGZhVWx0cmFseXRpY3M6RlB0LGZhSXR1bmVzTm90ZTpCUHQsZmFMZXNzOkhQdCxmYUZpcmVmb3g6cVB0LGZhS2FnZ2xlOmpQdCxmYUZhY2Vib29rTWVzc2VuZ2VyOlZQdCxmYUF1ZGlibGU6VVB0LGZhUGF0cmVvbjpXUHQsZmFWbnY6R1B0LGZhUGFnZWxpbmVzOktQdCxmYUFtYXpvbjpZUHQsZmFFbnZpcmE6WlB0LGZhTGlub2RlOlhQdCxmYUFjY3Vzb2Z0OlFQdCxmYUVybGFuZzpKUHQsZmFVbmlzb246ZUl0LGZhQ2NEaXNjb3Zlcjp0SXQsZmFTYWZhcmk6YUl0LGZhU3BhY2VBd2Vzb21lOnNJdCxmYU5vZGU6aUl0LGZhQ29kZXBlbjpySXQsZmFSYXZlbHJ5Om9JdCxmYUFsaXBheTpuSXQsZmFDY0FtZXg6bEl0LGZhUGllZFBpcGVyQWx0OmNJdCxmYUxldHRlcmJveGQ6ZEl0LGZhT3BlcmE6dUl0LGZhV2VpYm86cEl0LGZhUmVhZG1lOmhJdCxmYUdvbGFuZzpmSXQsZmFTdGFja0V4Y2hhbmdlOm1JdCxmYUd1bHA6Z0l0LGZhWWVscDpiSXQsZmFHb2ZvcmU6dkl0LGZhQXZpYXRvOnhJdCxmYVBhZGxldDp5SXQsZmFFZGdlTGVnYWN5OndJdCxmYVNxdWFyZUxhc3RmbTp0Z2UsZmFMYXN0Zm1TcXVhcmU6a0l0LGZhR29vZHJlYWRzRzpTSXQsZmFDY01hc3RlcmNhcmQ6X0l0LGZhRGlzY291cnNlOk1JdCxmYUJsYWNrVGllOnpJdCxmYVNxdWFyZUZhY2Vib29rOmFnZSxmYUZhY2Vib29rU3F1YXJlOkNJdCxmYUJhdHRsZU5ldDpUSXQsZmFCaW1vYmplY3Q6JEl0LGZhU3ZlbHRlOkRJdCxmYVNxdWFyZURlc2twcm86TEl0LGZhVGFpbHdpbmRDc3M6RUl0fX0pO3ZhciBoV2EsaWdlLFBJdCxJSXQscmdlLEFJdCxRMyxOSXQsUkl0LE9JdCxGSXQsb2dlLEJJdCxISXQscUl0LEozLGpJdCxuZ2UsVkl0LGxnZSxVSXQsV0l0LEdJdCxLSXQsY2dlLFlJdCxkZ2UsWkl0LHVnZSxYSXQscGdlLFFJdCxoZ2UsSkl0LGZnZSxlQXQsbWdlLHRBdCxhQXQsZ2dlLHNBdCxiZ2UsaUF0LHZnZSxyQXQseGdlLG9BdCxuQXQseWdlLGxBdCx3Z2UsY0F0LGtnZSxkQXQsU2dlLHVBdCxfZ2UscEF0LGhBdCxmQXQsWnJlLG1BdCxnQXQsYkF0LHZBdCx4QXQseUF0LHdBdCxrQXQsWHJlLFNBdCxfQXQsTWdlLE1BdCx6QXQsQ0F0LFRBdCwkQXQsREF0LExBdCxFQXQsemdlLFBBdCxJQXQsQUF0LHVoLE5BdCxSQXQsQ2dlLE9BdCxGQXQsVGdlLEJBdCxFYixIQXQscUF0LFFyZSxqQXQsVkF0LCRnZSxVQXQsV0F0LEdBdCxEZ2UsS0F0LExnZSxZQXQsSnJlLFpBdCxYQXQsRWdlLFFBdCxQZ2UsSkF0LGVOdCx0TnQsSWdlLGFOdCxBZ2Usc050LE5nZSxpTnQsUmdlLHJOdCxvTnQsbk50LGxOdCxPZ2UsY050LGROdCxGZ2UsdU50LHBOdCxCZ2UsaE50LGZOdCxIZ2UsbU50LGdOdCxiTnQsS2ssdk50LHhOdCx5TnQsZWYsd050LGtOdCxTTnQscWdlLF9OdCxNTnQsamdlLHpOdCxWZ2UsQ050LFlrLFROdCwkTnQsRE50LFVnZSxMTnQsZW9lLEVOdCxQTnQsSU50LEFOdCxXZ2UsTk50LHRvZSxSTnQsT050LEdnZSxGTnQsS2dlLEJOdCxITnQsWWdlLHFOdCxaZ2Usak50LGFvZSxWTnQsVU50LFdOdCx0ZixHTnQsS050LFlOdCxaTnQsWGdlLFhOdCxRZ2UsUU50LEpnZSxKTnQsZTdlLGVSdCx0N2UsdFJ0LGE3ZSxhUnQsc29lLHNSdCxpUnQsclJ0LG9SdCxzN2UsblJ0LGk3ZSxsUnQscjdlLGNSdCxvN2UsZFJ0LHVSdCxwUnQsaFJ0LGZSdCxtUnQsZ1J0LG43ZSxiUnQsbDdlLHZSdCx4UnQsYzdlLHlSdCxkN2Usd1J0LHU3ZSxrUnQsUGIsU1J0LHA3ZSxfUnQsTVJ0LGg3ZSx6UnQsZjdlLENSdCxUUnQsJFJ0LG03ZSxEUnQsTFJ0LGc3ZSxFUnQsUFJ0LElSdCxBUnQsYjdlLE5SdCx2N2UsUlJ0LHg3ZSxPUnQsRlJ0LEJSdCx5N2UsSFJ0LHc3ZSxxUnQsazdlLGpSdCxWUnQsUzdlLFVSdCxfN2UsV1J0LEdSdCxNN2UsS1J0LFlSdCxaUnQsZldhLHo3ZT1nKCgpPT57aFdhPSJmYXIiLGlnZT17cHJlZml4OiJmYXIiLGljb25OYW1lOiJzcXVhcmUtbWludXMiLGljb246WzQ0OCw1MTIsWzYxNzY3LCJtaW51cy1zcXVhcmUiXSwiZjE0NiIsIk02NCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzIwYzAgOC44IDcuMiAxNiAxNiAxNmwzMjAgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMjBjMC04LjgtNy4yLTE2LTE2LTE2TDY0IDgwek0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDMyMCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NnpNMTM2IDIzMmwxNzYgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMTc2IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6Il19LFBJdD1pZ2UsSUl0PXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImNhbGVuZGFyLWNoZWNrIixpY29uOls0NDgsNTEyLFtdLCJmMjc0IiwiTTMyOCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgNDAgMzIgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDI4OGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgMTI4QzAgOTIuNyAyOC43IDY0IDY0IDY0bDMyIDAgMC00MGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0bDAgNDAgMTYwIDAgMC00MGMwLTEzLjMgMTAuNy0yNCAyNC0yNHpNNjQgMTEyYy04LjggMC0xNiA3LjItMTYgMTZsMCAyODhjMCA4LjggNy4yIDE2IDE2IDE2bDMyMCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTI4OGMwLTguOC03LjItMTYtMTYtMTZMNjQgMTEyem0yMzAuNyA2NS45YzcuOC0xMC43IDIyLjgtMTMuMSAzMy41LTUuMyAxMC43IDcuOCAxMy4xIDIyLjggNS4zIDMzLjVMMjExLjQgMzc0LjFjLTQuMSA1LjctMTAuNSA5LjMtMTcuNSA5LjgtNyAuNS0xMy45LTItMTguOC02LjlsLTU1LjktNTUuOWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDM2IDM2IDEwNS42LTE0NS4yeiJdfSxyZ2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiZmFjZS1raXNzIixpY29uOls1MTIsNTEyLFsxMjg1MzUsImtpc3MiXSwiZjU5NiIsIk00NjQgMjU2YTIwOCAyMDggMCAxIDAgLTQxNiAwIDIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDAgMjU2IDI1NiAwIDEgMSAtNTEyIDB6bTI0MCAwbDMyIDBjMjYuNSAwIDQ4IDIxLjUgNDggNDggMCAxMi4zLTQuNiAyMy41LTEyLjIgMzIgNy42IDguNSAxMi4yIDE5LjcgMTIuMiAzMiAwIDI2LjUtMjEuNSA0OC00OCA0OGwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmwxNiAwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2bC0xNiAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDE2IDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTE2IDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bS05Ni00OGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xOTItMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0eiJdfSxBSXQ9cmdlLFEzPXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6InBhc3RlIixpY29uOls1MTIsNTEyLFsiZmlsZS1jbGlwYm9hcmQiXSwiZjBlYSIsIk02NCA0OGwyMjQgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCA0OCA0OCAwIDAtNDhjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMEMyOC43IDAgMCAyOC43IDAgNjRMMCAzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMTEyIDAgMC00OC0xMTIgMGMtOC44IDAtMTYtNy4yLTE2LTE2TDQ4IDY0YzAtOC44IDcuMi0xNiAxNi0xNnptMTc2IDcyYzAtMTMuMy0xMC43LTI0LTI0LTI0TDEwNCA5NmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwxMDUuNiAwYzguOC04LjYgMTktMTUuOCAzMC4yLTIxLjEgLjEtLjkgLjItMS45IC4yLTIuOXpNNDQ4IDQ2NGwtMTYwIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTIyNGMwLTguOCA3LjItMTYgMTYtMTZsMTAxLjUgMGM0LjIgMCA4LjMgMS43IDExLjMgNC43bDU4LjUgNTguNWMzIDMgNC43IDcuMSA0LjcgMTEuM0w0NjQgNDQ4YzAgOC44LTcuMiAxNi0xNiAxNnpNMjI0IDIyNGwwIDIyNGMwIDM1LjMgMjguNyA2NCA2NCA2NGwxNjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTE2NS41YzAtMTctNi43LTMzLjMtMTguNy00NS4zbC01OC41LTU4LjVjLTEyLTEyLTI4LjMtMTguNy00NS4zLTE4LjdMMjg4IDE2MGMtMzUuMyAwLTY0IDI4LjctNjQgNjR6Il19LE5JdD1RMyxSSXQ9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiaGFuZC1wb2ludC1sZWZ0IixpY29uOls1MTIsNTEyLFtdLCJmMGE1IiwiTTY0IDEyOGwxNzcuNiAwYy0xIDUuMi0xLjYgMTAuNS0xLjYgMTZsMCAxNi0xNzYgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMjI0IDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMybDI0IDBjNjYuMyAwIDEyMCA1My43IDEyMCAxMjBsMCA0OGMwIDUyLjUtMzMuNyA5Ny4xLTgwLjcgMTEzLjQgLjUtMy4xIC43LTYuMiAuNy05LjQgMC0yMC05LjItMzcuOS0yMy42LTQ5LjcgNC45LTkgNy42LTE5LjQgNy42LTMwLjMgMC0xNS4xLTUuMy0yOS0xNC00MCA4LjgtMTEgMTQtMjQuOSAxNC00MGwwLTQwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0bDAgNDBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC04MHptMzItODBsMCAwYy0xOCAwLTM0LjYgNi00OCAxNkw2NCA4MEMyOC43IDgwIDAgMTA4LjcgMCAxNDRzMjguNyA2NCA2NCA2NGw4MiAwYy0xLjMgNS4xLTIgMTAuNS0yIDE2IDAgMjUuMyAxNC43IDQ3LjIgMzYgNTcuNi0yLjYgNy00IDE0LjUtNCAyMi40IDAgMjAgOS4yIDM3LjkgMjMuNiA0OS43LTQuOSA5LTcuNiAxOS40LTcuNiAzMC4zIDAgMzUuMyAyOC43IDY0IDY0IDY0bDg4IDBjOTIuOCAwIDE2OC03NS4yIDE2OC0xNjhsMC00OGMwLTkyLjgtNzUuMi0xNjgtMTY4LTE2OGwtMjQgMHpNMjU2IDQwMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmw2NCAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC02NCAwek0yNDAgMjI0YzAgNS41IC43IDEwLjkgMiAxNmwtMzQgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmwzMiAwIDAgMTZ6bTI0IDY0bDQwIDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTY0IDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZsMjQgMHoiXX0sT0l0PXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImZpbGUtZXhjZWwiLGljb246WzM4NCw1MTIsW10sImYxYzMiLCJNNjQgNDhsMTEyIDAgMCA4OGMwIDM5LjggMzIuMiA3MiA3MiA3Mmw4OCAwIDAgMjQwYzAgOC44LTcuMiAxNi0xNiAxNkw2NCA0NjRjLTguOCAwLTE2LTcuMi0xNi0xNkw0OCA2NGMwLTguOCA3LjItMTYgMTYtMTZ6TTIyNCA2Ny45bDkyLjEgOTIuMS02OC4xIDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0bDAtNjguMXpNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjU2IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yNjEuNWMwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0wyNDIuNyAxOC43QzIzMC43IDYuNyAyMTQuNSAwIDE5Ny41IDBMNjQgMHptOTkuMiAyNjUuNmMtOC0xMC42LTIzLTEyLjgtMzMuNi00LjhzLTEyLjggMjMtNC44IDMzLjZMMTYyIDM0NCAxMjQuOCAzOTMuNmMtOCAxMC42LTUuOCAyNS42IDQuOCAzMy42czI1LjYgNS44IDMzLjYtNC44TDE5MiAzODQgMjIwLjggNDIyLjRjOCAxMC42IDIzIDEyLjggMzMuNiA0LjhzMTIuOC0yMyA0LjgtMzMuNkwyMjIgMzQ0IDI1OS4yIDI5NC40YzgtMTAuNiA1LjgtMjUuNi00LjgtMzMuNnMtMjUuNi01LjgtMzMuNiA0LjhMMTkyIDMwNCAxNjMuMiAyNjUuNnoiXX0sRkl0PXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImVudmVsb3BlIixpY29uOls1MTIsNTEyLFsxMjgzODYsOTk5Myw2MTQ0M10sImYwZTAiLCJNNjEuNCA2NEMyNy41IDY0IDAgOTEuNSAwIDEyNS40IDAgMTI2LjMgMCAxMjcuMSAuMSAxMjhMMCAxMjggMCAzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzg0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yNTYtLjEgMGMwLS45IC4xLTEuNyAuMS0yLjYgMC0zMy45LTI3LjUtNjEuNC02MS40LTYxLjRMNjEuNCA2NHpNNDY0IDE5Mi4zTDQ2NCAzODRjMCA4LjgtNy4yIDE2LTE2IDE2TDY0IDQwMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMTkxLjcgMTU0LjggMTE3LjRjMzEuNCAyMy45IDc0LjkgMjMuOSAxMDYuNCAwTDQ2NCAxOTIuM3pNNDggMTI1LjRDNDggMTE4IDU0IDExMiA2MS40IDExMmwzODkuMiAwYzcuNCAwIDEzLjQgNiAxMy40IDEzLjQgMCA0LjItMiA4LjItNS4zIDEwLjdMMjgwLjIgMjcxLjVjLTE0LjMgMTAuOC0zNC4xIDEwLjgtNDguNCAwTDUzLjMgMTM2LjFjLTMuMy0yLjUtNS4zLTYuNS01LjMtMTAuN3oiXX0sb2dlPXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6InNxdWFyZS1jYXJldC1kb3duIixpY29uOls0NDgsNTEyLFsiY2FyZXQtc3F1YXJlLWRvd24iXSwiZjE1MCIsIk0zODQgNDMyYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyMGMwLTguOC03LjItMTYtMTYtMTZMNjQgODBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyMGMwIDguOCA3LjIgMTYgMTYgMTZsMzIwIDB6bTY0LTE2YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwzMjAgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMHpNMjI0IDM1MmMtNi43IDAtMTMtMi44LTE3LjYtNy43bC0xMDQtMTEyYy02LjUtNy04LjItMTcuMi00LjQtMjUuOVMxMTAuNSAxOTIgMTIwIDE5MmwyMDggMGM5LjUgMCAxOC4yIDUuNyAyMiAxNC40czIuMSAxOC45LTQuNCAyNS45bC0xMDQgMTEyYy00LjUgNC45LTEwLjkgNy43LTE3LjYgNy43eiJdfSxCSXQ9b2dlLEhJdD17cHJlZml4OiJmYXIiLGljb25OYW1lOiJ0cnVjayIsaWNvbjpbNTc2LDUxMixbMTI4NjY2LDk5NTFdLCJmMGQxIiwiTTY0IDgwYy04LjggMC0xNiA3LjItMTYgMTZsMCAyODhjMCA4LjggNy4yIDE2IDE2IDE2bDMuMyAwYzEwLjQtMzYuOSA0NC40LTY0IDg0LjctNjRzNzQuMiAyNy4xIDg0LjcgNjRsMTAyLjYgMGM0LjktMTcuNCAxNS4xLTMyLjcgMjguNy00My45TDM2OCA5NmMwLTguOC03LjItMTYtMTYtMTZMNjQgODB6bTMuMyAzNjhMNjQgNDQ4Yy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDI4OCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIgNTUuNCAwYzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43bDQwLjYgNDAuNmMxMiAxMiAxOC43IDI4LjMgMTguNyA0NS4zTDU3NiAzODRjMCAzNS4zLTI4LjcgNjQtNjQgNjRsLTMuMyAwYy0xMC40IDM2LjktNDQuNCA2NC04NC43IDY0cy03NC4yLTI3LjEtODQuNy02NGwtMTAyLjYgMGMtMTAuNCAzNi45LTQ0LjQgNjQtODQuNyA2NHMtNzQuMi0yNy4xLTg0LjctNjR6TTQxNiAyNTZsMTEyIDAgMC0yMy40YzAtNC4yLTEuNy04LjMtNC43LTExLjNsLTQwLjYtNDAuNmMtMy0zLTcuMS00LjctMTEuMy00LjdsLTU1LjQgMCAwIDgwem0wIDQ4bDAgMzIuNGMyLjYtLjIgNS4zLS40IDgtLjQgNDAuMyAwIDc0LjIgMjcuMSA4NC43IDY0bDMuMyAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTgwLTExMiAwek0xNTIgNDY0YTQwIDQwIDAgMSAwIDAtODAgNDAgNDAgMCAxIDAgMCA4MHptMjcyIDBhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgweiJdfSxxSXQ9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiYmVsbCIsaWNvbjpbNDQ4LDUxMixbMTI4Mjc2LDYxNjAyXSwiZjBmMyIsIk0yMjQgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCA5LjdDMTE4LjYgNDUuMyA1NiAxMTUuNCA1NiAyMDBsMCAxNC41YzAgMzcuNy0xMCA3NC43LTI5IDEwNy4zTDUuMSAzNTkuMkMxLjggMzY1IDAgMzcxLjUgMCAzNzguMiAwIDM5OS4xIDE2LjkgNDE2IDM3LjggNDE2bDM3Mi40IDBjMjAuOSAwIDM3LjgtMTYuOSAzNy44LTM3LjggMC02LjctMS44LTEzLjMtNS4xLTE5TDQyMSAzMjEuN2MtMTktMzIuNi0yOS02OS42LTI5LTEwNy4zbDAtMTQuNWMwLTg0LjYtNjIuNi0xNTQuNy0xNDQtMTY2LjNsMC05LjdjMC0xMy4zLTEwLjctMjQtMjQtMjR6TTM5Mi40IDM2OGwtMzM2LjkgMCAxMi45LTIyLjFDOTEuNyAzMDYgMTA0IDI2MC42IDEwNCAyMTQuNWwwLTE0LjVjMC02Ni4zIDUzLjctMTIwIDEyMC0xMjBzMTIwIDUzLjcgMTIwIDEyMGwwIDE0LjVjMCA0Ni4yIDEyLjMgOTEuNSAzNS41IDEzMS40TDM5Mi40IDM2OHpNMTU2LjEgNDY0YzkuOSAyOCAzNi42IDQ4IDY3LjkgNDhzNTgtMjAgNjcuOS00OGwtMTM1LjggMHoiXX0sSjM9e3ByZWZpeDoiZmFyIixpY29uTmFtZToibWVzc2FnZSIsaWNvbjpbNTEyLDUxMixbImNvbW1lbnQtYWx0Il0sImYyN2EiLCJNMjAzLjcgNTEyLjlzMCAwIDAgMGwtMzcuOCAyNi43Yy03LjMgNS4yLTE2LjkgNS44LTI0LjkgMS43UzEyOCA1MjkgMTI4IDUyMGwwLTcyLTMyIDBjLTUzIDAtOTYtNDMtOTYtOTZMMCAxMjhDMCA3NSA0MyAzMiA5NiAzMmwzMjAgMGM1MyAwIDk2IDQzIDk2IDk2bDAgMjI0YzAgNTMtNDMgOTYtOTYgOTZsLTEyMC40IDAtOTEuOSA2NC45em02NC4zLTEwNC4xYzguMS01LjcgMTcuOC04LjggMjcuNy04LjhMNDE2IDQwMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTIyNGMwLTI2LjUtMjEuNS00OC00OC00OEw5NiA4MGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCAyMjRjMCAyNi41IDIxLjUgNDggNDggNDhsNTYgMGMxMC40IDAgMTkuMyA2LjYgMjIuNiAxNS45IC45IDIuNSAxLjQgNS4yIDEuNCA4LjFsMCA0OS43YzMyLjctMjMuMSA2My4zLTQ0LjcgOTEuOS02NC45eiJdfSxqSXQ9SjMsbmdlPXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImZhY2UtZGl6enkiLGljb246WzUxMiw1MTIsWyJkaXp6eSJdLCJmNTY3IiwiTTQ2NCAyNTZhMjA4IDIwOCAwIDEgMCAtNDE2IDAgMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMCAyNTYgMjU2IDAgMSAxIC01MTIgMHpNMTM0LjEgMTUzLjlsMjUuOSAyNS45IDI1LjktMjUuOWM3LjgtNy44IDIwLjUtNy44IDI4LjMgMHM3LjggMjAuNSAwIDI4LjNsLTI1LjkgMjUuOSAyNS45IDI1LjljNy44IDcuOCA3LjggMjAuNSAwIDI4LjNzLTIwLjUgNy44LTI4LjMgMGwtMjUuOS0yNS45LTI1LjkgMjUuOWMtNy44IDcuOC0yMC41IDcuOC0yOC4zIDBzLTcuOC0yMC41IDAtMjguM2wyNS45LTI1LjktMjUuOS0yNS45Yy03LjgtNy44LTcuOC0yMC41IDAtMjguM3MyMC41LTcuOCAyOC4zIDB6bTE5MiAwbDI1LjkgMjUuOSAyNS45LTI1LjljNy44LTcuOCAyMC41LTcuOCAyOC4zIDBzNy44IDIwLjUgMCAyOC4zbC0yNS45IDI1LjkgMjUuOSAyNS45YzcuOCA3LjggNy44IDIwLjUgMCAyOC4zcy0yMC41IDcuOC0yOC4zIDBsLTI1LjktMjUuOS0yNS45IDI1LjljLTcuOCA3LjgtMjAuNSA3LjgtMjguMyAwcy03LjgtMjAuNSAwLTI4LjNsMjUuOS0yNS45LTI1LjktMjUuOWMtNy44LTcuOC03LjgtMjAuNSAwLTI4LjNzMjAuNS03LjggMjguMyAwek0yNTYgMjg4YTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4eiJdfSxWSXQ9bmdlLGxnZT17cHJlZml4OiJmYXIiLGljb25OYW1lOiJjYWxlbmRhci1kYXlzIixpY29uOls0NDgsNTEyLFsiY2FsZW5kYXItYWx0Il0sImYwNzMiLCJNMTIwIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRsMCA0MCAxNjAgMCAwLTQwYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCA0MCAzMiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjg4YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCAxMjhDMCA5Mi43IDI4LjcgNjQgNjQgNjRsMzIgMCAwLTQwYzAtMTMuMyAxMC43LTI0IDI0LTI0ek0zODQgNDMyYzguOCAwIDE2LTcuMiAxNi0xNmwwLTY0LTg4IDAgMCA4MCA3MiAwem0xNi0xMjhsMC04MC04OCAwIDAgODAgODggMHptLTEzNiAwbDAtODAtODAgMCAwIDgwIDgwIDB6bS0xMjggMGwwLTgwLTg4IDAgMCA4MCA4OCAwek00OCAzNTJsMCA2NGMwIDguOCA3LjIgMTYgMTYgMTZsNzIgMCAwLTgwLTg4IDB6bTEzNiAwbDAgODAgODAgMCAwLTgwLTgwIDB6TTEyMCAxMTJsLTU2IDBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDQ4IDM1MiAwIDAtNDhjMC04LjgtNy4yLTE2LTE2LTE2bC0yNjQgMHoiXX0sVUl0PWxnZSxXSXQ9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiaGFuZC1wb2ludC11cCIsaWNvbjpbMzg0LDUxMixbOTc1N10sImYwYTYiLCJNNjQgNjRsMCAxNzcuNmM1LjItMSAxMC41LTEuNiAxNi0xLjZsMTYgMCAwLTE3NmMwLTguOC03LjItMTYtMTYtMTZTNjQgNTUuMiA2NCA2NHpNODAgMjg4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDI0YzAgNjYuMyA1My43IDEyMCAxMjAgMTIwbDQ4IDBjNTIuNSAwIDk3LjEtMzMuNyAxMTMuNC04MC43LTMuMSAuNS02LjIgLjctOS40IC43LTIwIDAtMzcuOS05LjItNDkuNy0yMy42LTkgNC45LTE5LjQgNy42LTMwLjMgNy42LTE1LjEgMC0yOS01LjMtNDAtMTQtMTEgOC44LTI0LjkgMTQtNDAgMTRsLTQwIDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsNDAgMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmwtODAgMHpNMCAzMjBsMCAwYzAtMTggNi0zNC42IDE2LTQ4TDE2IDY0QzE2IDI4LjcgNDQuNyAwIDgwIDBzNjQgMjguNyA2NCA2NGwwIDgyYzUuMS0xLjMgMTAuNS0yIDE2LTIgMjUuMyAwIDQ3LjIgMTQuNyA1Ny42IDM2IDctMi42IDE0LjUtNCAyMi40LTQgMjAgMCAzNy45IDkuMiA0OS43IDIzLjYgOS00LjkgMTkuNC03LjYgMzAuMy03LjYgMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCA4OGMwIDkyLjgtNzUuMiAxNjgtMTY4IDE2OGwtNDggMEM3NS4yIDUxMiAwIDQzNi44IDAgMzQ0bDAtMjR6bTMzNi02NGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNmwwIDY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZsMC02NHpNMTYwIDI0MGM1LjUgMCAxMC45IC43IDE2IDJsMC0zNGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNmwwIDMyIDE2IDB6bTY0IDI0bDAgNDBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmwwLTY0YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2bDAgMjR6Il19LEdJdD17cHJlZml4OiJmYXIiLGljb25OYW1lOiJoYW5kLWxpemFyZCIsaWNvbjpbNTEyLDUxMixbXSwiZjI1OCIsIk03MiAxMTJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMTY4IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRzLTI4LjcgNjQtNjQgNjRsLTEwNCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDE1MiAwYzQuNSAwIDguOSAxLjMgMTIuNyAzLjZsNjQgNDBjNyA0LjQgMTEuMyAxMi4xIDExLjMgMjAuNGwwIDI0YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtMTAuNy00Ni45LTI5LjMtMTQ1LjEgMGMtMzkuOCAwLTcyLTMyLjItNzItNzJzMzIuMi03MiA3Mi03MmwxMDQgMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkw3MiAyMDhjLTM5LjggMC03Mi0zMi4yLTcyLTcyUzMyLjIgNjQgNzIgNjRsMjA5LjYgMGM0Ni43IDAgOTAuOSAyMS41IDExOS43IDU4LjNsNzguNCAxMDAuMWMyMC45IDI2LjcgMzIuMyA1OS43IDMyLjMgOTMuN0w1MTIgNDI0YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtMTA3LjljMC0yMy4yLTcuOC00NS44LTIyLjEtNjQuMUwzNjMuNSAxNTEuOWMtMTkuNy0yNS4yLTQ5LjktMzkuOS04MS45LTM5LjlMNzIgMTEyeiJdfSxLSXQ9e3ByZWZpeDoiZmFyIixpY29uTmFtZToic3F1YXJlLWZ1bGwiLGljb246WzUxMiw1MTIsWzEyODk5NywxMjg5OTgsMTI4OTk5LDEyOWUzLDEyOTAwMSwxMjkwMDIsMTI5MDAzLDExMDM1LDExMDM2XSwiZjQ1YyIsIk00NDggNDhjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzg0YzAgOC44LTcuMiAxNi0xNiAxNkw2NCA0NjRjLTguOCAwLTE2LTcuMi0xNi0xNkw0OCA2NGMwLTguOCA3LjItMTYgMTYtMTZsMzg0IDB6TTY0IDBDMjguNyAwIDAgMjguNyAwIDY0TDAgNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0bDM4NCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzg0YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDB6Il19LGNnZT17cHJlZml4OiJmYXIiLGljb25OYW1lOiJjaXJjbGUtcGF1c2UiLGljb246WzUxMiw1MTIsWzYyMDkyLCJwYXVzZS1jaXJjbGUiXSwiZjI4YiIsIk0yNTYgNDhhMjA4IDIwOCAwIDEgMSAwIDQxNiAyMDggMjA4IDAgMSAxIDAtNDE2em0wIDQ2NGEyNTYgMjU2IDAgMSAwIDAtNTEyIDI1NiAyNTYgMCAxIDAgMCA1MTJ6TTIyNCAxODRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCAxNDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTE0NHptMTEyIDBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCAxNDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTE0NHoiXX0sWUl0PWNnZSxkZ2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiaGFyZC1kcml2ZSIsaWNvbjpbNDQ4LDUxMixbMTI4NDM2LCJoZGQiXSwiZjBhMCIsIk02NCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMTYyYzUuMS0xLjMgMTAuNS0yIDE2LTJsMzIwIDBjNS41IDAgMTAuOSAuNyAxNiAybDAtMTYyYzAtOC44LTcuMi0xNi0xNi0xNkw2NCA4MHpNNDggMzIwbDAgOTZjMCA4LjggNy4yIDE2IDE2IDE2bDMyMCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTk2YzAtOC44LTcuMi0xNi0xNi0xNkw2NCAzMDRjLTguOCAwLTE2IDcuMi0xNiAxNnpNMCAzMjBMMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwzMjAgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtOTZ6bTIxNiA0OGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwem0xMjAtMjRhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4eiJdfSxaSXQ9ZGdlLHVnZT17cHJlZml4OiJmYXIiLGljb25OYW1lOiJmaWxlLXppcHBlciIsaWNvbjpbMzg0LDUxMixbImZpbGUtYXJjaGl2ZSJdLCJmMWM2IiwiTTY0IDQ4bDExMiAwIDAgODhjMCAzOS44IDMyLjIgNzIgNzIgNzJsODggMCAwIDI0MGMwIDguOC03LjIgMTYtMTYgMTZMNjQgNDY0Yy04LjggMC0xNi03LjItMTYtMTZMNDggNjRjMC04LjggNy4yLTE2IDE2LTE2ek0yMjQgNjcuOWw5Mi4xIDkyLjEtNjguMSAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNGwwLTY4LjF6TTY0IDBDMjguNyAwIDAgMjguNyAwIDY0TDAgNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0bDI1NiAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMjYxLjVjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMMjQyLjcgMTguN0MyMzAuNyA2LjcgMjE0LjUgMCAxOTcuNSAwTDY0IDB6TTgwIDEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGwxNiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0xNiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHptMCA4MGMwIDEzLjMgMTAuNyAyNCAyNCAyNGwzMiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0zMiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHptNjQgNTZsLTMyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgNDhjMCAyNi41IDIxLjUgNDggNDggNDhzNDgtMjEuNSA0OC00OGwwLTQ4YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tMTYgNjRhMTYgMTYgMCAxIDEgMCAzMiAxNiAxNiAwIDEgMSAwLTMyeiJdfSxYSXQ9dWdlLHBnZT17cHJlZml4OiJmYXIiLGljb25OYW1lOiJmbG9wcHktZGlzayIsaWNvbjpbNDQ4LDUxMixbMTI4MTkwLDEyODQyNiwic2F2ZSJdLCJmMGM3IiwiTTY0IDgwYy04LjggMC0xNiA3LjItMTYgMTZsMCAzMjBjMCA4LjggNy4yIDE2IDE2IDE2bDMyMCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTI0Mi43YzAtNC4yLTEuNy04LjMtNC43LTExLjNMMzIwIDg2LjYgMzIwIDE3NmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMTYwIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtOTYtMzIgMHptODAgMGwwIDgwIDEyOCAwIDAtODAtMTI4IDB6TTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMjQyLjcgMGMxNyAwIDMzLjMgNi43IDQ1LjMgMTguN0w0MjkuMyAxMjhjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM0w0NDggNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NnpNMTYwIDMyMGE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6Il19LFFJdD1wZ2UsaGdlPXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImZhY2UtZ3Jpbi10b25ndWUtc3F1aW50IixpY29uOls1MTIsNTEyLFsxMjg1NDEsImdyaW4tdG9uZ3VlLXNxdWludCJdLCJmNThhIiwiTTQ2NCAyNTZjMC0xMTQuOS05My4xLTIwOC0yMDgtMjA4UzQ4IDE0MS4xIDQ4IDI1NmMwIDc1LjkgNDAuNyAxNDIuNCAxMDEuNSAxNzguNy0zLjYtMTAuOS01LjUtMjIuNi01LjUtMzQuN2wwLTM3LjVjLTEwLjItMTIuNi0xOC4zLTI2LjktMjMuOC00Mi40LTQuMS0xMS42IDcuOC0yMS40IDE5LjYtMTcuOCAzNC43IDEwLjYgNzQuMiAxNi41IDExNi4xIDE2LjUgNDIgMCA4MS41LTYgMTE2LjMtMTYuNiAxMS44LTMuNiAyMy43IDYuMSAxOS42IDE3LjgtNS41IDE1LjYtMTMuNiAyOS45LTIzLjggNDIuNWwwIDM3LjVjMCAxMi4xLTEuOSAyMy44LTUuNSAzNC43IDYwLjgtMzYuMyAxMDEuNS0xMDIuNyAxMDEuNS0xNzguN3pNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMCAyNTYgMjU2IDAgMSAxIC01MTIgMHptMTI1LjgtNzUuN2MtNi4yLTUuMi03LjYtMTQuMy0zLjEtMjEuMXMxMy4zLTkuMiAyMC42LTUuNWw3OS42IDQwYzUuNCAyLjcgOC44IDguMiA4LjggMTQuM3MtMy40IDExLjYtOC44IDE0LjNsLTc5LjYgNDBjLTcuMyAzLjYtMTYuMSAxLjMtMjAuNi01LjVzLTMuMS0xNS45IDMuMS0yMS4xTDE1OSAyMDggMTI1LjggMTgwLjN6bTI2My42LTIxLjFjNC41IDYuOCAzLjEgMTUuOS0zLjEgMjEuMUwzNTMgMjA4IDM4Ni4yIDIzNS43YzYuMiA1LjIgNy42IDE0LjMgMy4xIDIxLjFzLTEzLjMgOS4yLTIwLjYgNS41bC03OS42LTQwYy01LjQtMi43LTguOC04LjItOC44LTE0LjNzMy40LTExLjYgOC44LTE0LjNsNzkuNi00MGM3LjMtMy42IDE2LjEtMS4zIDIwLjYgNS41ek0zMjAgNDE2bDAtMzcuNGMwLTE0LjctMTEuOS0yNi42LTI2LjYtMjYuNmwtMiAwYy0xMS4zIDAtMjEuMSA3LjktMjMuNiAxOC45LTIuOCAxMi42LTIwLjggMTIuNi0yMy42IDAtMi41LTExLjEtMTIuMy0xOC45LTIzLjYtMTguOWwtMiAwYy0xNC43IDAtMjYuNiAxMS45LTI2LjYgMjYuNmwwIDM3LjRjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NHoiXX0sSkl0PWhnZSxmZ2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiY2FtZXJhIixpY29uOls1MTIsNTEyLFs2MjI1OCwiY2FtZXJhLWFsdCJdLCJmMDMwIiwiTTE5My4xIDMyYy0xOC43IDAtMzYuMiA5LjQtNDYuNiAyNC45TDEyMC41IDk2IDY0IDk2QzI4LjcgOTYgMCAxMjQuNyAwIDE2MEwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzODQgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI1NmMwLTM1LjMtMjguNy02NC02NC02NGwtNTYuNSAwLTI2LTM5LjFDMzU1LjEgNDEuNCAzMzcuNiAzMiAzMTguOSAzMkwxOTMuMSAzMnptLTYuNyA1MS42YzEuNS0yLjIgNC0zLjYgNi43LTMuNmwxMjUuNyAwYzIuNyAwIDUuMiAxLjMgNi43IDMuNmwzMy4yIDQ5LjhjNC41IDYuNyAxMS45IDEwLjcgMjAgMTAuN2w2OS4zIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMjU2YzAgOC44LTcuMiAxNi0xNiAxNkw2NCA0MzJjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTI1NmMwLTguOCA3LjItMTYgMTYtMTZsNjkuMyAwYzggMCAxNS41LTQgMjAtMTAuN2wzMy4yLTQ5Ljh6TTI1NiAzODRhMTEyIDExMiAwIDEgMCAwLTIyNCAxMTIgMTEyIDAgMSAwIDAgMjI0ek0xOTIgMjcyYTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHoiXX0sZUF0PWZnZSxtZ2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiZmFjZS1ncmluLXN0YXJzIixpY29uOls1MTIsNTEyLFsxMjkzMjEsImdyaW4tc3RhcnMiXSwiZjU4NyIsIk0wIDI1NmMwLTI5LjYgNS01Ny45IDE0LjItODQuNGwxNy4zIDE2LjktNC42IDI3Yy00LjIgMjQuNCA1LjYgNDYuMiAyMiA1OS45IDkuOCAxMDUuOCA5OC44IDE4OC43IDIwNy4xIDE4OC43czE5Ny40LTgyLjggMjA3LjEtMTg4LjZjMTYuNC0xMy43IDI2LjEtMzUuNCAyMi01OS45bC00LjYtMjcgMTcuMy0xNi45YzkuMiAyNi40IDE0LjIgNTQuOCAxNC4yIDg0LjQgMCAxNDEuNC0xMTQuNiAyNTYtMjU2IDI1NlMwIDM5Ny40IDAgMjU2ek0yNTYgNDhjLTE1LjIgMC0zMCAxLjYtNDQuMyA0LjdMMjAxLjQgMzEuOEMxOTcgMjMgMTkxLjEgMTUuOCAxODQuMiAxMC4yIDIwNyAzLjYgMjMxLjEgMCAyNTYgMHM0OSAzLjYgNzEuOCAxMC4yQzMyMC45IDE1LjggMzE1IDIzIDMxMC42IDMxLjhMMzAwLjMgNTIuN0MyODYgNDkuNiAyNzEuMiA0OCAyNTYgNDh6TTM3Mi4yIDMwMi4zYzExLjgtMy42IDIzLjcgNi4xIDE5LjYgMTcuOC0xOS44IDU1LjktNzMuMSA5Ni0xMzUuOCA5Ni02Mi43IDAtMTE2LTQwLTEzNS44LTk1LjktNC4xLTExLjYgNy44LTIxLjQgMTkuNi0xNy44IDM0LjcgMTAuNiA3NC4yIDE2LjUgMTE2LjEgMTYuNSA0MiAwIDgxLjUtNiAxMTYuMy0xNi42ek0zNTMuNyA1My4xYzUuOS0xMS45IDIyLjgtMTEuOSAyOC43IDBsMjMuMyA0Ny4yIDUyIDcuNmMxMy4xIDEuOSAxOC40IDE4IDguOSAyNy4zbC0zNy43IDM2LjcgOC45IDUxLjhjMi4yIDEzLjEtMTEuNSAyMy0yMy4yIDE2LjlMMzY4IDIxNiAzMjEuNSAyNDAuNWMtMTEuNyA2LjItMjUuNS0zLjgtMjMuMi0xNi45bDguOS01MS44LTM3LjctMzYuN2MtOS41LTkuMy00LjMtMjUuNCA4LjktMjcuM2w1Mi03LjYgMjMuMy00Ny4yem0tMTk1LjMgMGwyMy4zIDQ3LjIgNTIgNy42YzEzLjEgMS45IDE4LjQgMTggOC45IDI3LjNsLTM3LjcgMzYuNyA4LjkgNTEuOGMyLjIgMTMuMS0xMS41IDIzLTIzLjIgMTYuOUwxNDQgMjE2IDk3LjUgMjQwLjVjLTExLjcgNi4yLTI1LjUtMy44LTIzLjItMTYuOWw4LjktNTEuOC0zNy43LTM2LjdjLTkuNS05LjMtNC4zLTI1LjQgOC45LTI3LjNsNTItNy42IDIzLjMtNDcuMmM1LjktMTEuOSAyMi44LTExLjkgMjguNyAweiJdfSx0QXQ9bWdlLGFBdD17cHJlZml4OiJmYXIiLGljb25OYW1lOiJleWUiLGljb246WzU3Niw1MTIsWzEyODA2NV0sImYwNmUiLCJNMjg4IDgwQzIyMi44IDgwIDE2OS4yIDEwOS42IDEyOC4xIDE0Ny43IDg5LjYgMTgzLjUgNjMgMjI2IDQ5LjQgMjU2IDYzIDI4NiA4OS42IDMyOC41IDEyOC4xIDM2NC4zIDE2OS4yIDQwMi40IDIyMi44IDQzMiAyODggNDMyczExOC44LTI5LjYgMTU5LjktNjcuN0M0ODYuNCAzMjguNSA1MTMgMjg2IDUyNi42IDI1NiA1MTMgMjI2IDQ4Ni40IDE4My41IDQ0Ny45IDE0Ny43IDQwNi44IDEwOS42IDM1My4yIDgwIDI4OCA4MHpNOTUuNCAxMTIuNkMxNDIuNSA2OC44IDIwNy4yIDMyIDI4OCAzMnMxNDUuNSAzNi44IDE5Mi42IDgwLjZjNDYuOCA0My41IDc4LjEgOTUuNCA5MyAxMzEuMSAzLjMgNy45IDMuMyAxNi43IDAgMjQuNi0xNC45IDM1LjctNDYuMiA4Ny43LTkzIDEzMS4xLTQ3LjEgNDMuNy0xMTEuOCA4MC42LTE5Mi42IDgwLjZTMTQyLjUgNDQzLjIgOTUuNCAzOTkuNGMtNDYuOC00My41LTc4LjEtOTUuNC05My0xMzEuMS0zLjMtNy45LTMuMy0xNi43IDAtMjQuNiAxNC45LTM1LjcgNDYuMi04Ny43IDkzLTEzMS4xek0yODggMzM2YzQ0LjIgMCA4MC0zNS44IDgwLTgwIDAtMjkuNi0xNi4xLTU1LjUtNDAtNjkuMy0xLjQgNTkuNy00OS42IDEwNy45LTEwOS4zIDEwOS4zIDEzLjggMjMuOSAzOS43IDQwIDY5LjMgNDB6bS03OS42LTg4LjRjMi41IC4zIDUgLjQgNy42IC40IDM1LjMgMCA2NC0yOC43IDY0LTY0IDAtMi42LS4yLTUuMS0uNC03LjYtMzcuNCAzLjktNjcuMiAzMy43LTcxLjEgNzEuMXptNDUuNi0xMTVjMTAuOC0zIDIyLjItNC41IDMzLjktNC41IDguOCAwIDE3LjUgLjkgMjUuOCAyLjYgLjMgLjEgLjUgLjEgLjggLjIgNTcuOSAxMi4yIDEwMS40IDYzLjcgMTAxLjQgMTI1LjIgMCA3MC43LTU3LjMgMTI4LTEyOCAxMjgtNjEuNiAwLTExMy00My41LTEyNS4yLTEwMS40LTEuOC04LjYtMi44LTE3LjUtMi44LTI2LjYgMC0xMSAxLjQtMjEuOCA0LTMyIC4yLS43IC4zLTEuMyAuNS0xLjkgMTEuOS00My40IDQ2LjEtNzcuNiA4OS41LTg5LjV6Il19LGdnZT17cHJlZml4OiJmYXIiLGljb25OYW1lOiJmYWNlLXNhZC10ZWFyIixpY29uOls1MTIsNTEyLFsxMjg1NDYsInNhZC10ZWFyIl0sImY1YjQiLCJNNDY0IDI1NmMwLTExNC45LTkzLjEtMjA4LTIwOC0yMDhTNDggMTQxLjEgNDggMjU2YzAgNDEuOCAxMi4zIDgwLjcgMzMuNiAxMTMuMyA4LjIgNDQuNyA0Ny4zIDc4LjYgOTQuMyA3OC43IDI0LjcgMTAuMyA1MS43IDE2IDgwLjEgMTYgMTE0LjkgMCAyMDgtOTMuMSAyMDgtMjA4ek0yODggMzUyYy01LjUgMC0xMC45IC42LTE2IDEuOCAwLS42IDAtMS4yIDAtMS44IDAtMTYuMi00LTMxLjUtMTEuMS00NC45IDguNy0yIDE3LjgtMy4xIDI3LjEtMy4xIDQwLjIgMCA3NS43IDE5LjggOTcuNSA1MCA3LjcgMTAuOCA1LjMgMjUuOC01LjUgMzMuNXMtMjUuOCA1LjMtMzMuNS01LjVjLTEzLjEtMTguMi0zNC40LTMwLTU4LjUtMzB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDAgMjU2IDI1NiAwIDEgMSAtNTEyIDB6bTE3Ni04MGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTEyOCAzMmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwek0xODUuNCAyNzYuOGM2LjUgNy44IDEyLjYgMTYuMSAxOC4zIDI0LjYgOSAxMy40IDIwLjMgMzAuMiAyMC4zIDQ3LjQgMCAyOC4zLTIxLjUgNTEuMi00OCA1MS4ycy00OC0yMi45LTQ4LTUxLjJjMC0xNy4yIDExLjItMzQgMjAuMy00Ny40IDUuNy04LjUgMTEuOS0xNi43IDE4LjMtMjQuNiAyLjQtMi45IDUuNy00LjggOS40LTQuOHM3IDEuOSA5LjQgNC44eiJdfSxzQXQ9Z2dlLGJnZT17cHJlZml4OiJmYXIiLGljb25OYW1lOiJzaGFyZS1mcm9tLXNxdWFyZSIsaWNvbjpbNTc2LDUxMixbNjE1MDksInNoYXJlLXNxdWFyZSJdLCJmMTRkIiwiTTQyNS41IDdjLTYuOS02LjktMTcuMi04LjktMjYuMi01LjJTMzg0LjUgMTQuMyAzODQuNSAyNGwwIDU2LTQ4IDBjLTg4LjQgMC0xNjAgNzEuNi0xNjAgMTYwIDAgNDYuNyAyMC43IDgwLjQgNDMuNiAxMDMuNCA4LjEgOC4yIDE2LjUgMTQuOSAyNC4zIDIwLjQgOS4yIDYuNSAyMS43IDUuNyAzMC4xLTEuOXMxMC4yLTIwIDQuNS0yOS44Yy0zLjYtNi4zLTYuNS0xNC45LTYuNS0yNi43IDAtMzYuMiAyOS4zLTY1LjUgNjUuNS02NS41bDQ2LjUgMCAwIDU2YzAgOS43IDUuOCAxOC41IDE0LjggMjIuMnMxOS4zIDEuNyAyNi4yLTUuMmwxMzYtMTM2YzkuNC05LjQgOS40LTI0LjYgMC0zMy45TDQyNS41IDd6bTcgOTdsMC0yMi4xIDc4LjEgNzguMS03OC4xIDc4LjEgMC0yMi4xYzAtMTMuMy0xMC43LTI0LTI0LTI0TDMzOCAxOTJjLTUwLjkgMC05My45IDMzLjUtMTA4LjMgNzkuNi0zLjMtOS40LTUuMi0xOS44LTUuMi0zMS42IDAtNjEuOSA1MC4xLTExMiAxMTItMTEybDcyIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjR6bS0zMjAtOGMtNDQuMiAwLTgwIDM1LjgtODAgODBsMCAyNTZjMCA0NC4yIDM1LjggODAgODAgODBsMjU2IDBjNDQuMiAwIDgwLTM1LjggODAtODBsMC0yNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDI0YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0yNTYgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0yNTZjMC0xNy43IDE0LjMtMzIgMzItMzJsMjQgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtMjQgMHoiXX0saUF0PWJnZSx2Z2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToibm90ZS1zdGlja3kiLGljb246WzQ0OCw1MTIsWzYyMDI2LCJzdGlja3ktbm90ZSJdLCJmMjQ5IiwiTTI0MCA0MzJMNjQgNDMyYy04LjggMC0xNi03LjItMTYtMTZMNDggOTZjMC04LjggNy4yLTE2IDE2LTE2bDMyMCAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDE3Ni04OCAwYy0zOS44IDAtNzIgMzIuMi03MiA3MmwwIDg4ek0zODAuMSAzMjBMMjg4IDQxMi4xIDI4OCAzNDRjMC0xMy4zIDEwLjctMjQgMjQtMjRsNjguMSAwek0wIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwxOTcuNSAwYzE3IDAgMzMuMy02LjcgNDUuMy0xOC43TDQyOS4zIDMzOC43YzEyLTEyIDE4LjctMjguMyAxOC43LTQ1LjNMNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZ6Il19LHJBdD12Z2UseGdlPXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImhhbmQtYmFjay1maXN0IixpY29uOlszODQsNTEyLFsiaGFuZC1yb2NrIl0sImYyNTUiLCJNOTYgNDAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMybDIyNCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtNDhjMC0xNy43LTE0LjMtMzItMzItMzJMOTYgNDAwek03My4yIDM1Mmw2NC42IDAtNzkuNS04OC4zQzUxLjcgMjU2LjMgNDggMjQ2LjggNDggMjM2LjlMNDggMjA0YzAtMTYuMSAxMS45LTI5LjUgMjcuNC0zMS43IDExLjgtMS43IDIwLjYtMTEuOCAyMC42LTIzLjhMOTYgNzJjMC0xMy4zIDEwLjctMjQgMjQtMjQgNy4yIDAgMTMuNiAzLjEgMTggOC4xIDQuNiA1LjIgMTEuMSA4LjEgMTggOC4xczEzLjQtMyAxOC04LjFjNC40LTUgMTAuOC04LjEgMTgtOC4xIDguNSAwIDE1LjkgNC40IDIwLjIgMTEuMSA2LjkgMTAuNyAyMC45IDE0LjIgMzIgOCAzLjUtMS45IDcuNC0zLjEgMTEuOC0zLjEgMTAuNiAwIDE5LjcgNi45IDIyLjggMTYuNiAzLjggMTEuNyAxNS45IDE4LjcgMjggMTYgMS43LS40IDMuNC0uNiA1LjItLjYgMTMuMyAwIDI0IDEwLjcgMjQgMjRsMCA5Mi4yYzAgMTQuNC0zLjUgMjguNS0xMC4yIDQxLjJsLTUyLjIgOTguNiA1NC4zIDAgNDAuMy03Ni4yYzEwLjQtMTkuNiAxNS44LTQxLjUgMTUuOC02My42bDAtOTIuMmMwLTM4LjQtMzAuMS02OS44LTY4LjEtNzEuOS0xMi45LTE5LjMtMzQuOS0zMi4xLTU5LjktMzIuMS01LjcgMC0xMS4yIC43LTE2LjUgMS45LTEyLjctMTEuMS0yOS4zLTE3LjktNDcuNS0xNy45LTEzLjEgMC0yNS40IDMuNS0zNiA5LjYtMTAuNi02LjEtMjIuOS05LjYtMzYtOS42LTM5LjggMC03MiAzMi4yLTcyIDcybDAgNTguN0MxOS43IDE0MyAwIDE3MS4yIDAgMjA0bDAgMzIuOWMwIDIxLjcgOCA0Mi43IDIyLjYgNTguOUw3My4yIDM1MnoiXX0sb0F0PXhnZSxuQXQ9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiY2hlc3MtcXVlZW4iLGljb246WzUxMiw1MTIsWzk4MTldLCJmNDQ1IiwiTTMyNS4zIDkwLjhjOS4xLTQuOCAyMC42LTMuMyAyOC4yIDQuM2wzOS44IDM5LjggMy43IDMuM2M5LjEgNy4xIDIwLjkgMTAgMzIuNCA3LjdsNDYuNC05LjMgMy41LS40YzgtLjQgMTUuOCAzLjIgMjAuNiA5LjggNS41IDcuNiA2LjEgMTcuNiAxLjYgMjUuOGwtMTEyLjYgMjAyLjYgNTEuNSA3MC45IDEuOCAyLjdjNCA2LjYgNi4yIDE0LjIgNi4yIDIyIDAgMjMuMy0xOC45IDQyLjEtNDIuMSA0Mi4xbC0yOTkuOCAwYy0yMS44IDAtMzkuOC0xNi42LTQxLjktMzcuOGwtLjItNC4zIC4xLTMuM2MuNi03LjcgMy40LTE1LjEgNy45LTIxLjRsNTEuNS03MC45LTExMi41LTIwMi42Yy00LjUtOC4yLTMuOS0xOC4zIDEuNi0yNS44czE0LjktMTEuMiAyNC4xLTkuNGw0Ni40IDkuM2MxMy4xIDIuNiAyNi43LTEuNSAzNi4xLTEwLjlMMTU5LjUgOTUgMTYzIDkyLjJjOC42LTUuOCAyMC4xLTUuNiAyOC41IDEuMWw0MCAzMiAyLjggMi4xYzE0LjQgOS42IDMzLjUgOC45IDQ3LjItMi4xbDQwLTMyIDMuOC0yLjV6TTE2NC43IDQwMGwtNDYuNiA2NCAyNzYuNyAwLTQ2LjYtNjQtMTgzLjYgMHpNMzExLjUgMTYyLjhjLTMwLjEgMjQuMS03Mi4xIDI1LjYtMTAzLjggNC41bC02LjItNC41LTIzLjMtMTguNi0yNC42IDI0LjZjLTE5LjggMTkuOC00Ny43IDI4LjktNzUuMSAyNC44bDg4LjEgMTU4LjUgMTc5LjggMCA4OC0xNTguNWMtMjUuNyAzLjgtNTEuNy0zLjktNzEuMS0yMWwtNC0zLjctMjQuNi0yNC42LTIzLjIgMTguNnpNMjU2LjUgNzJhNDAgNDAgMCAxIDEgMC04MCA0MCA0MCAwIDEgMSAwIDgweiJdfSx5Z2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiZmFjZS1ncmluLXRlYXJzIixpY29uOls2NDAsNTEyLFsxMjg1MTQsImdyaW4tdGVhcnMiXSwiZjU4OCIsIk01MDQuMSAzNTNDNTEyLjkgMzY3LjIgNTI1LjMgMzc5IDUzOS44IDM4Ny4yIDQ5NS4xIDQ2MiA0MTMuNCA1MTIgMzIwIDUxMlMxNDQuOSA0NjIgMTAwLjIgMzg3LjJjMTQuNi04LjIgMjYuOS0yMCAzNS44LTM0LjMgMzQuOSA2NiAxMDQuMiAxMTEgMTg0LjEgMTExczE0OS4yLTQ1IDE4NC4xLTExMXptMTYuNC0xNTIuNUM0OTYuMiAxMTIuNiA0MTUuNyA0OCAzMjAgNDhTMTQzLjggMTEyLjYgMTE5LjUgMjAwLjVjLTEwLjYtNC44LTIyLjctNi44LTM1LjQtNWwtMTMuNCAxLjlDOTcuMiA4NC4zIDE5OC44IDAgMzIwIDBTNTQyLjggODQuMyA1NjkuMyAxOTcuNGwtMTMuNC0xLjljLTEyLjctMS44LTI0LjggLjItMzUuNCA1ek00NTUuOCAzMjBjLTE5LjggNTUuOS03My4xIDk2LTEzNS44IDk2LTYyLjcgMC0xMTYtNDAtMTM1LjgtOTUuOS00LjEtMTEuNiA3LjgtMjEuNCAxOS42LTE3LjggMzQuNyAxMC42IDc0LjIgMTYuNSAxMTYuMSAxNi41IDQyIDAgODEuNS02IDExNi4zLTE2LjYgMTEuOC0zLjYgMjMuNyA2LjEgMTkuNiAxNy44ek0yMTIgMjA4bDAgOGMwIDExLTkgMjAtMjAgMjBzLTIwLTktMjAtMjBsMC04YzAtMzcuNiAzMC40LTY4IDY4LTY4czY4IDMwLjQgNjggNjhsMCA4YzAgMTEtOSAyMC0yMCAyMHMtMjAtOS0yMC0yMGwwLThjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjh6bTE4OC0yOGMtMTUuNSAwLTI4IDEyLjUtMjggMjhsMCA4YzAgMTEtOSAyMC0yMCAyMHMtMjAtOS0yMC0yMGwwLThjMC0zNy42IDMwLjQtNjggNjgtNjhzNjggMzAuNCA2OCA2OGwwIDhjMCAxMS05IDIwLTIwIDIwcy0yMC05LTIwLTIwbDAtOGMwLTE1LjUtMTIuNS0yOC0yOC0yOHpNNjQwIDMwMC42YzAgMjguNC0yMyA1MS40LTUxLjQgNTEuNC0yNS42IDAtNDcuMy0xOC44LTUwLjktNDQuMUw1MzEgMjYxLjFjLTEuNS0xMC42IDcuNS0xOS42IDE4LjEtMTguMWw0Ni43IDYuN2MyNS4zIDMuNiA0NC4xIDI1LjMgNDQuMSA1MC45em0tNjQwIDBjMC0yNS42IDE4LjgtNDcuMyA0NC4xLTUwLjlMOTAuOSAyNDNjMTAuNi0xLjUgMTkuNiA3LjUgMTguMSAxOC4xbC02LjcgNDYuN0M5OC43IDMzMy4yIDc3IDM1MiA1MS40IDM1MiAyMyAzNTIgMCAzMjkgMCAzMDAuNnoiXX0sbEF0PXlnZSx3Z2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToicGVuLXRvLXNxdWFyZSIsaWNvbjpbNTEyLDUxMixbImVkaXQiXSwiZjA0NCIsIk00NDEgNTguOUw0NTMuMSA3MWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOUw0MjQgMTM0LjEgMzc3LjkgODggNDA3IDU4LjljOS40LTkuNCAyNC42LTkuNCAzMy45IDB6TTIwOS44IDI1Ni4yTDM0NCAxMjEuOSAzOTAuMSAxNjggMjU1LjggMzAyLjJjLTIuOSAyLjktNi41IDUtMTAuNCA2LjFsLTU4LjUgMTYuNyAxNi43LTU4LjVjMS4xLTMuOSAzLjItNy41IDYuMS0xMC40ek0zNzMuMSAyNUwxNzUuOCAyMjIuMmMtOC43IDguNy0xNSAxOS40LTE4LjMgMzEuMWwtMjguNiAxMDBjLTIuNCA4LjQtLjEgMTcuNCA2LjEgMjMuNnMxNS4yIDguNSAyMy42IDYuMWwxMDAtMjguNmMxMS44LTMuNCAyMi41LTkuNyAzMS4xLTE4LjNMNDg3IDEzOC45YzI4LjEtMjguMSAyOC4xLTczLjcgMC0xMDEuOEw0NzQuOSAyNUM0NDYuOC0zLjEgNDAxLjItMy4xIDM3My4xIDI1ek04OCA2NEMzOS40IDY0IDAgMTAzLjQgMCAxNTJMMCA0MjRjMCA0OC42IDM5LjQgODggODggODhsMjcyIDBjNDguNiAwIDg4LTM5LjQgODgtODhsMC0xMTJjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCAxMTJjMCAyMi4xLTE3LjkgNDAtNDAgNDBMODggNDY0Yy0yMi4xIDAtNDAtMTcuOS00MC00MGwwLTI3MmMwLTIyLjEgMTcuOS00MCA0MC00MGwxMTIgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEw4OCA2NHoiXX0sY0F0PXdnZSxrZ2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiZmFjZS1ncmluLWJlYW0tc3dlYXQiLGljb246WzU3Niw1MTIsWzEyODUxNywiZ3Jpbi1iZWFtLXN3ZWF0Il0sImY1ODMiLCJNNTMwLjIgMTUuOWMtOC44LTEwLjctMTguNS0yMC45LTI5LTMwLTMtMi42LTcuNC0yLjYtMTAuNCAwLTEwLjUgOS4xLTIwLjEgMTkuMy0yOSAzMC0xNC43IDE3LjgtMjkuOCA0MC4xLTI5LjggNjQuMSAwIDM2LjQgMjcuNiA2NCA2NCA2NHM2NC0yNy42IDY0LTY0YzAtMjQtMTUuMi00Ni4zLTI5LjgtNjQuMXptLTEzMiA4LjlDMzY0LjggOC45IDMyNy40IDAgMjg4IDAgMTQ2LjYgMCAzMiAxMTQuNiAzMiAyNTZTMTQ2LjYgNTEyIDI4OCA1MTIgNTQ0IDM5Ny40IDU0NCAyNTZjMC0yNC40LTMuNC00OC05LjgtNzAuNC0xMS45IDQuMi0yNC43IDYuNC0zOC4yIDYuNC0zLjQgMC02LjgtLjEtMTAuMi0uNCA2LjYgMjAuMyAxMC4yIDQxLjkgMTAuMiA2NC40IDAgMTE0LjktOTMuMSAyMDgtMjA4IDIwOFM4MCAzNzAuOSA4MCAyNTYgMTczLjEgNDggMjg4IDQ4YzM0LjggMCA2Ny41IDguNSA5Ni4zIDIzLjYgMS40LTE3LjQgNi45LTMzLjEgMTMuOC00Ni44ek00MjMuOCAzMjBjNC4xLTExLjYtNy44LTIxLjQtMTkuNi0xNy44LTM0LjggMTAuNi03NC4zIDE2LjYtMTE2LjMgMTYuNi00MS45IDAtODEuNC02LTExNi4xLTE2LjUtMTEuOC0zLjYtMjMuNyA2LjEtMTkuNiAxNy44IDE5LjggNTUuOSA3My4xIDk1LjkgMTM1LjggOTUuOSA2Mi43IDAgMTE2LTQwLjEgMTM1LjgtOTZ6TTE4MCAyMDhjMC0xNS41IDEyLjUtMjggMjgtMjhzMjggMTIuNSAyOCAyOGwwIDhjMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjBsMC04YzAtMzcuNi0zMC40LTY4LTY4LTY4cy02OCAzMC40LTY4IDY4bDAgOGMwIDExIDkgMjAgMjAgMjBzMjAtOSAyMC0yMGwwLTh6bTE4OC0yOGMxNS41IDAgMjggMTIuNSAyOCAyOGwwIDhjMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjBsMC04YzAtMzcuNi0zMC40LTY4LTY4LTY4cy02OCAzMC40LTY4IDY4bDAgOGMwIDExIDkgMjAgMjAgMjBzMjAtOSAyMC0yMGwwLThjMC0xNS41IDEyLjUtMjggMjgtMjh6Il19LGRBdD1rZ2UsU2dlPXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImNsb2NrIixpY29uOls1MTIsNTEyLFsxMjgzMzksImNsb2NrLWZvdXIiXSwiZjAxNyIsIk00NjQgMjU2YTIwOCAyMDggMCAxIDEgLTQxNiAwIDIwOCAyMDggMCAxIDEgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDAgNTEyIDAgMjU2IDI1NiAwIDEgMCAtNTEyIDB6TTIzMiAxMjBsMCAxMzZjMCA4IDQgMTUuNSAxMC43IDIwbDk2IDY0YzExIDcuNCAyNS45IDQuNCAzMy4zLTYuN3M0LjQtMjUuOS02LjctMzMuM0wyODAgMjQzLjIgMjgwIDEyMGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHoiXX0sdUF0PVNnZSxfZ2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiZmFjZS1sYXVnaC13aW5rIixpY29uOls1MTIsNTEyLFsibGF1Z2gtd2luayJdLCJmNTljIiwiTTQ2NCAyNTZhMjA4IDIwOCAwIDEgMCAtNDE2IDAgMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMCAyNTYgMjU2IDAgMSAxIC01MTIgMHptMTE4LjMgNTguMmMtNC4yLTEzLjcgNy4xLTI2LjIgMjEuNC0yNi4ybDIzMi42IDBjMTQuMyAwIDI1LjYgMTIuNSAyMS40IDI2LjItMTggNTguOS03Mi45IDEwMS44LTEzNy43IDEwMS44UzEzNi4zIDM3My4xIDExOC4zIDMxNC4yek0xNDQgMTkyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE2NCA4YzAgMTEtOSAyMC0yMCAyMHMtMjAtOS0yMC0yMGMwLTMzLjEgMjYuOS02MCA2MC02MGwxNiAwYzMzLjEgMCA2MCAyNi45IDYwIDYwIDAgMTEtOSAyMC0yMCAyMHMtMjAtOS0yMC0yMC05LTIwLTIwLTIwbC0xNiAwYy0xMSAwLTIwIDktMjAgMjB6Il19LHBBdD1fZ2UsaEF0PXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6InBhcGVyLXBsYW5lIixpY29uOls1NzYsNTEyLFs2MTkxM10sImYxZDgiLCJNMjkwLjUgMjg3LjdMNDkxLjQgODYuOSAzNTkgNDU2LjMgMjkwLjUgMjg3Ljd6TTQ1Ny40IDUzTDI1Ni42IDI1My44IDg4IDE4NS4zIDQ1Ny40IDUzek0zOC4xIDIxNi44bDIwNS44IDgzLjYgODMuNiAyMDUuOGM1LjMgMTMuMSAxOC4xIDIxLjcgMzIuMyAyMS43IDE0LjcgMCAyNy44LTkuMiAzMi44LTIzLjFMNTcwLjYgOGMzLjUtOS44IDEtMjAuNi02LjMtMjhzLTE4LjItOS44LTI4LTYuM0wzOS40IDE1MS43Yy0xMy45IDUtMjMuMSAxOC4xLTIzLjEgMzIuOCAwIDE0LjIgOC42IDI3IDIxLjcgMzIuM3oiXX0sZkF0PXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImhlYXJ0IixpY29uOls1MTIsNTEyLFsxMjgxNTMsMTI4MTU0LDEyODE1NSwxMjgxNTYsMTI4NDIwLDEyOTI5MywxMjkyOTQsMTI5NTA1LDk4MjksMTAwODQsNjE1NzhdLCJmMDA0IiwiTTM3OC45IDgwYy0yNy4zIDAtNTMgMTMuMS02OSAzNS4ybC0zNC40IDQ3LjZjLTQuNSA2LjItMTEuNyA5LjktMTkuNCA5LjlzLTE0LjktMy43LTE5LjQtOS45bC0zNC40LTQ3LjZjLTE2LTIyLjEtNDEuNy0zNS4yLTY5LTM1LjItNDcgMC04NS4xIDM4LjEtODUuMSA4NS4xIDAgNDkuOSAzMiA5OC40IDY4LjEgMTQyLjMgNDEuMSA1MCA5MS40IDk0IDEyNS45IDEyMC4zIDMuMiAyLjQgNy45IDQuMiAxNCA0LjJzMTAuOC0xLjggMTQtNC4yYzM0LjUtMjYuMyA4NC44LTcwLjQgMTI1LjktMTIwLjMgMzYuMi00My45IDY4LjEtOTIuNCA2OC4xLTE0Mi4zIDAtNDctMzguMS04NS4xLTg1LjEtODUuMXpNMjcxIDg3LjFjMjUtMzQuNiA2NS4yLTU1LjEgMTA3LjktNTUuMSA3My41IDAgMTMzLjEgNTkuNiAxMzMuMSAxMzMuMSAwIDY4LjYtNDIuOSAxMjguOS03OS4xIDE3Mi44LTQ0LjEgNTMuNi05Ny4zIDEwMC4xLTEzMy44IDEyNy45LTEyLjMgOS40LTI3LjUgMTQuMS00My4xIDE0LjFzLTMwLjgtNC43LTQzLjEtMTQuMUMxNzYuNCA0MzggMTIzLjIgMzkxLjUgNzkuMSAzMzggNDIuOSAyOTQuMSAwIDIzMy43IDAgMTY1LjEgMCA5MS42IDU5LjYgMzIgMTMzLjEgMzIgMTc1LjggMzIgMjE2IDUyLjUgMjQxIDg3LjFsMTUgMjAuNyAxNS0yMC43eiJdfSxacmU9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiZm9udC1hd2Vzb21lIixpY29uOls1MTIsNTEyLFs2MjUwMSw2MjY5NCwiZm9udC1hd2Vzb21lLWZsYWciLCJmb250LWF3ZXNvbWUtbG9nby1mdWxsIl0sImYyYjQiLCJNOTEuNyA5NkMxMDYuMyA4Ni44IDExNiA3MC41IDExNiA1MiAxMTYgMjMuMyA5Mi43IDAgNjQgMFMxMiAyMy4zIDEyIDUyYzAgMTYuNyA3LjggMzEuNSAyMCA0MWwwIDQxOSA0OCAwIDAtNjQgMzg5LjYgMGMxNC42IDAgMjYuNC0xMS44IDI2LjQtMjYuNCAwLTMuNy0uOC03LjMtMi4zLTEwLjdMNDMyIDI3MiA0OTMuNyAxMzMuMWMxLjUtMy40IDIuMy03IDIuMy0xMC43IDAtMTQuNi0xMS44LTI2LjQtMjYuNC0yNi40TDkxLjcgOTZ6TTgwIDQwMGwwLTI1NiAzNTYuNCAwLTQ4LjIgMTA4LjVjLTUuNSAxMi40LTUuNSAyNi42IDAgMzlMNDM2LjQgNDAwIDgwIDQwMHoiXX0sbUF0PVpyZSxnQXQ9WnJlLGJBdD17cHJlZml4OiJmYXIiLGljb25OYW1lOiJjbG9uZSIsaWNvbjpbNTEyLDUxMixbXSwiZjI0ZCIsIk0yODggNDY0TDY0IDQ2NGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMjI0YzAtOC44IDcuMi0xNiAxNi0xNmw0OCAwIDAtNDgtNDggMGMtMzUuMyAwLTY0IDI4LjctNjQgNjRMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjI0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC00OC00OCAwIDAgNDhjMCA4LjgtNy4yIDE2LTE2IDE2ek0yMjQgMzA0Yy04LjggMC0xNi03LjItMTYtMTZsMC0yMjRjMC04LjggNy4yLTE2IDE2LTE2bDIyNCAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDIyNGMwIDguOC03LjIgMTYtMTYgMTZsLTIyNCAwem0tNjQtMTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjI0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yMjRjMC0zNS4zLTI4LjctNjQtNjQtNjRMMjI0IDBjLTM1LjMgMC02NCAyOC43LTY0IDY0bDAgMjI0eiJdfSx2QXQ9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiZm9sZGVyLW9wZW4iLGljb246WzU3Niw1MTIsWzEyODE5NCwxMjg0NDksNjE3MTddLCJmMDdjIiwiTTk3LjUgNDAwbDUwLTE2MCAzNzkuNCAwLTUwIDE2MC0zNzkuNCAwem0xOTAuNyA0OEw0NzcgNDQ4YzIxIDAgMzkuNi0xMy42IDQ1LjgtMzMuN2w1MC0xNjBjOS43LTMwLjktMTMuNC02Mi4zLTQ1LjgtNjIuM2wtMzc5LjQgMGMtMjEgMC0zOS42IDEzLjYtNDUuOCAzMy43TDgwLjIgMjk0LjQgODAuMiA5NmMwLTguOCA3LjItMTYgMTYtMTZsMTM4LjcgMGMzLjUgMCA2LjggMS4xIDkuNiAzLjJMMjgyLjkgMTEyYzEzLjggMTAuNCAzMC43IDE2IDQ4IDE2bDExNy4zIDBjOC44IDAgMTYgNy4yIDE2IDE2bDQ4IDBjMC0zNS4zLTI4LjctNjQtNjQtNjRMMzMwLjkgODBjLTYuOSAwLTEzLjctMi4yLTE5LjItNi40TDI3My4zIDQ0LjhDMjYyLjIgMzYuNSAyNDguOCAzMiAyMzQuOSAzMkw5Ni4yIDMyYy0zNS4zIDAtNjQgMjguNy02NCA2NGwwIDI4OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwxOTIgMHoiXX0seEF0PXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6IndpbmRvdy1taW5pbWl6ZSIsaWNvbjpbNTEyLDUxMixbMTI4NDY5XSwiZjJkMSIsIk0wIDQyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNGw0NjQgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEwyNCA0NDhjLTEzLjMgMC0yNC0xMC43LTI0LTI0eiJdfSx5QXQ9e3ByZWZpeDoiZmFyIixpY29uTmFtZToic3Rhci1oYWxmIixpY29uOls1NzYsNTEyLFs2MTczMV0sImYwODkiLCJNMjg1LjctMTUuOGMxMC44IDIuNiAxOC40IDEyLjIgMTguNCAyMy4zbDAgMzg3LjFjMCA5LTUuMSAxNy4zLTEzLjEgMjEuNEwxNDMuOCA0OTFjLTggNC4xLTE3LjcgMy4zLTI1LTJzLTExLTE0LjItOS42LTIzLjJMMTM0LjQgMzA1LjkgMjAgMTkxLjRjLTYuNC02LjQtOC42LTE1LjgtNS44LTI0LjRzMTAuMS0xNC45IDE5LjEtMTYuM0wxOTMuMSAxMjUuMyAyNTguOC0zLjNjNS05LjkgMTYuMi0xNSAyNy0xMi40ek0yNTYuMSAxMDcuNEwyMzAuMyAxNThjLTMuNSA2LjgtMTAgMTEuNi0xNy42IDEyLjhsLTEyNS41IDIwIDg5LjggODkuOWM1LjQgNS40IDcuOSAxMy4xIDYuNyAyMC43bC0xOS44IDEyNS41IDkyLjItNDYuOSAwLTI3Mi42eiJdfSx3QXQ9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiYWxhcm0tY2xvY2siLGljb246WzUxMiw1MTIsWzkyMDBdLCJmMzRlIiwiTTQwMi42IDUwLjJjLTUuNCAxLjctMTEuMyAxLjgtMTYuMi0uOS01LjgtMy4yLTExLjgtNi4yLTE3LjgtOC45LTEwLjQtNC43LTEzLjctMTguMy00LjEtMjQuNiAxNS05LjkgMzMtMTUuNyA1Mi4zLTE1LjcgNTIuNiAwIDk1LjIgNDIuNiA5NS4yIDk1LjIgMCAxMy4yLTIuNyAyNS44LTcuNiAzNy4zLTQuNSAxMC41LTE4LjQgOS44LTI0LjkgLjQtMy44LTUuNS03LjgtMTAuOC0xMi0xNi0zLjUtNC40LTQuNS0xMC4yLTMuOC0xNS44IC4yLTEuOSAuNC0zLjkgLjQtNS45IDAtMjYuMS0yMS4yLTQ3LjItNDcuMi00Ny4yLTQuOSAwLTkuNyAuOC0xNC4yIDIuMnpNMzIuNSAxMzIuOWMtNi41IDkuNC0yMC41IDEwLjEtMjQuOS0uNC00LjktMTEuNS03LjYtMjQuMS03LjYtMzcuMyAwLTUyLjYgNDIuNi05NS4yIDk1LjItOTUuMiAxOS4zIDAgMzcuMyA1LjggNTIuMyAxNS43IDkuNiA2LjMgNi4zIDE5LjktNC4xIDI0LjYtNi4xIDIuOC0xMiA1LjctMTcuOCA4LjktNC45IDIuNy0xMC45IDIuNi0xNi4yIC45LTQuNS0xLjQtOS4yLTIuMi0xNC4yLTIuMi0yNi4xIDAtNDcuMiAyMS4yLTQ3LjIgNDcuMiAwIDIgLjEgNCAuNCA1LjkgLjcgNS42LS4zIDExLjQtMy44IDE1LjgtNC4yIDUuMi04LjIgMTAuNS0xMiAxNnpNNDMyIDI4OGExNzYgMTc2IDAgMSAwIC0zNTIgMCAxNzYgMTc2IDAgMSAwIDM1MiAwek0zOTYuNSA0NjIuNUMzNTguMSA0OTMuNCAzMDkuMiA1MTIgMjU2IDUxMnMtMTAyLjEtMTguNi0xNDAuNS00OS41TDczIDUwNWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw0Mi41LTQyLjVDNTAuNiAzOTAuMSAzMiAzNDEuMiAzMiAyODggMzIgMTY0LjMgMTMyLjMgNjQgMjU2IDY0UzQ4MCAxNjQuMyA0ODAgMjg4YzAgNTMuMi0xOC42IDEwMi4xLTQ5LjUgMTQwLjVMNDczIDQ3MWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC00Mi41LTQyLjV6TTI4MCAxODRsMCA5NC4xIDQxIDQxYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTQ4LTQ4Yy00LjUtNC41LTctMTAuNi03LTE3bDAtMTA0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6Il19LGtBdD17cHJlZml4OiJmYXIiLGljb25OYW1lOiJuZXdzcGFwZXIiLGljb246WzUxMiw1MTIsWzEyODI0MF0sImYxZWEiLCJNMTY4IDgwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDMwNGMwIDguNC0xLjQgMTYuNS00LjEgMjRMNDQwIDQzMmMxMy4zIDAgMjQtMTAuNyAyNC0yNGwwLTMwNGMwLTEzLjMtMTAuNy0yNC0yNC0yNEwxNjggODB6TTcyIDQ4MGMtMzkuOCAwLTcyLTMyLjItNzItNzJMMCAxMTJDMCA5OC43IDEwLjcgODggMjQgODhzMjQgMTAuNyAyNCAyNGwwIDI5NmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtMzA0YzAtMzkuOCAzMi4yLTcyIDcyLTcybDI3MiAwYzM5LjggMCA3MiAzMi4yIDcyIDcybDAgMzA0YzAgMzkuOC0zMi4yIDcyLTcyIDcyTDcyIDQ4MHpNMTkyIDE1MmMwLTEzLjMgMTAuNy0yNCAyNC0yNGw0OCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgNDhjMCAxMy4zLTEwLjcgMjQtMjQgMjRsLTQ4IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0bDAtNDh6bTE1MiAyNGw0OCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC00OCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0ek0yMTYgMjU2bDE3NiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0xNzYgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHptMCA4MGwxNzYgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMTc2IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6Il19LFhyZT17cHJlZml4OiJmYXIiLGljb25OYW1lOiJob3NwaXRhbCIsaWNvbjpbNTc2LDUxMixbMTI3OTczLDYyNTg5LCJob3NwaXRhbC1hbHQiLCJob3NwaXRhbC13aWRlIl0sImYwZjgiLCJNMTc2IDBjLTM1LjMgMC02NCAyOC43LTY0IDY0bDAgNDgtNDggMGMtMzUuMyAwLTY0IDI4LjctNjQgNjRMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsNDQ4IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yNzJjMC0zNS4zLTI4LjctNjQtNjQtNjRsLTQ4IDAgMC00OGMwLTM1LjMtMjguNy02NC02NC02NEwxNzYgMHpNMTYwIDY0YzAtOC44IDcuMi0xNiAxNi0xNmwyMjQgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCA3MmMwIDEzLjMgMTAuNyAyNCAyNCAyNGw3MiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDI3MmMwIDguOC03LjIgMTYtMTYgMTZsLTE3NiAwIDAtODBjMC0xNy43LTE0LjMtMzItMzItMzJsLTMyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgODAtMTc2IDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTI3MmMwLTguOCA3LjItMTYgMTYtMTZsNzIgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNGwwLTcyek0xMTIgMjI0Yy04LjggMC0xNiA3LjItMTYgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDB6TTk2IDMzNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2em0zMjAgMGwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNi0xMTJjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMHpNMjY0IDEwNGwwIDMyLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDE2YzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwIDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDE2IDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzIgMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0xNmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDAgMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTE2IDBjLTguOCAwLTE2IDcuMi0xNiAxNnoiXX0sU0F0PVhyZSxfQXQ9WHJlLE1nZT17cHJlZml4OiJmYXIiLGljb25OYW1lOiJjaXJjbGUtc3RvcCIsaWNvbjpbNTEyLDUxMixbNjIwOTQsInN0b3AtY2lyY2xlIl0sImYyOGQiLCJNMjU2IDQ4YTIwOCAyMDggMCAxIDEgMCA0MTYgMjA4IDIwOCAwIDEgMSAwLTQxNnptMCA0NjRhMjU2IDI1NiAwIDEgMCAwLTUxMiAyNTYgMjU2IDAgMSAwIDAgNTEyek0xNjAgMTkybDAgMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMybDEyOCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMTI4YzAtMTcuNy0xNC4zLTMyLTMyLTMybC0xMjggMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6bTQ4IDExMmwwLTk2IDk2IDAgMCA5Ni05NiAweiJdfSxNQXQ9TWdlLHpBdD17cHJlZml4OiJmYXIiLGljb25OYW1lOiJvYmplY3QtdW5ncm91cCIsaWNvbjpbNjQwLDUxMixbXSwiZjI0OCIsIk00OC4yIDY2LjhjLS4xLS44LS4yLTEuNy0uMi0yLjVsMC0uMmMwLTguOCA3LjItMTYgMTYtMTYgLjkgMCAxLjkgLjEgMi44IC4yIDcuNSAxLjMgMTMuMiA3LjkgMTMuMiAxNS44IDAgOC44LTcuMiAxNi0xNiAxNi03LjkgMC0xNC41LTUuNy0xNS44LTEzLjJ6TTAgNjRjMCAyNi45IDE2LjUgNDkuOSA0MCA1OS4zbDAgMTA1LjNjLTIzLjUgOS41LTQwIDMyLjUtNDAgNTkuMyAwIDM1LjMgMjguNyA2NCA2NCA2NCAyNi45IDAgNDkuOS0xNi41IDU5LjMtNDBsMjAxLjMgMGM5LjUgMjMuNSAzMi41IDQwIDU5LjMgNDAgMzUuMyAwIDY0LTI4LjcgNjQtNjQgMC0yNi45LTE2LjUtNDkuOS00MC01OS4zbDAtMTA1LjNjMjMuNS05LjUgNDAtMzIuNSA0MC01OS4zIDAtMzUuMy0yOC43LTY0LTY0LTY0LTI2LjkgMC00OS45IDE2LjUtNTkuMyA0MEwxMjMuMyA0MEMxMTMuOSAxNi41IDkwLjkgMCA2NCAwIDI4LjcgMCAwIDI4LjcgMCA2NHptMzY4IDBhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHpNMzI0LjcgODhjNi41IDE2IDE5LjMgMjguOSAzNS4zIDM1LjNsMCAxMDUuM2MtMTYgNi41LTI4LjkgMTkuMy0zNS4zIDM1LjNsLTIwMS4zIDBjLTYuNS0xNi0xOS4zLTI4LjktMzUuMy0zNS4zbDAtMTA1LjNjMTYtNi41IDI4LjktMTkuMyAzNS4zLTM1LjNsMjAxLjMgMHpNMzg0IDI3MmExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6TTgwIDI4OGMwIDcuOS01LjcgMTQuNS0xMy4yIDE1LjgtLjggLjEtMS43IC4yLTIuNSAuMmwtLjIgMGMtOC44IDAtMTYtNy4yLTE2LTE2IDAtLjkgLjEtMS45IC4yLTIuOCAxLjMtNy41IDcuOS0xMy4yIDE1LjgtMTMuMiA4LjggMCAxNiA3LjIgMTYgMTZ6bTQzNi43LTQwYzYuNSAxNiAxOS4zIDI4LjkgMzUuMyAzNS4zbDAgMTA1LjNjLTE2IDYuNS0yOC45IDE5LjMtMzUuMyAzNS4zbC0yMDEuMyAwYy02LjUtMTYtMTkuMy0yOC45LTM1LjMtMzUuM2wwLTIwLjctNDggMCAwIDIwLjdjLTIzLjUgOS41LTQwIDMyLjUtNDAgNTkuMyAwIDM1LjMgMjguNyA2NCA2NCA2NCAyNi45IDAgNDkuOS0xNi41IDU5LjMtNDBsMjAxLjMgMGM5LjUgMjMuNSAzMi41IDQwIDU5LjMgNDAgMzUuMyAwIDY0LTI4LjcgNjQtNjQgMC0yNi45LTE2LjUtNDkuOS00MC01OS4zbDAtMTA1LjNjMjMuNS05LjUgNDAtMzIuNSA0MC01OS4zIDAtMzUuMy0yOC43LTY0LTY0LTY0LTI2LjkgMC00OS45IDE2LjUtNTkuMyA0MGwtNTIuNyAwIDAgOS42YzEwLjcgMTAuOSAxOS4xIDIzLjkgMjQuNiAzOC40bDI4IDB6bTU5LjMtOGExNiAxNiAwIDEgMSAwLTMyIDE2IDE2IDAgMSAxIDAgMzJ6TTI3MS44IDQ1MC43YTE2IDE2IDAgMSAxIC0zMS41LTUuNSAxNiAxNiAwIDEgMSAzMS41IDUuNXptMzAxLjUgMTNjLTcuNS0xLjMtMTMuMi03LjktMTMuMi0xNS44IDAtOC44IDcuMi0xNiAxNi0xNiA3LjkgMCAxNC41IDUuNyAxNS44IDEzLjJsMCAuMWMuMSAuOSAuMiAxLjggLjIgMi43IDAgOC44LTcuMiAxNi0xNiAxNi0uOSAwLTEuOS0uMS0yLjgtLjJ6Il19LENBdD17cHJlZml4OiJmYXIiLGljb25OYW1lOiJjb21tZW50IixpY29uOls1MTIsNTEyLFsxMjg0ODksNjE2NjldLCJmMDc1IiwiTTUxLjkgMzg0LjlDMTkuMyAzNDQuNiAwIDI5NC40IDAgMjQwIDAgMTA3LjUgMTE0LjYgMCAyNTYgMFM1MTIgMTA3LjUgNTEyIDI0MCAzOTcuNCA0ODAgMjU2IDQ4MGMtMzYuNSAwLTcxLjItNy4yLTEwMi42LTIwTDM3IDUwOS45Yy0zLjcgMS42LTcuNSAyLjEtMTEuNSAyLjEtMTQuMSAwLTI1LjUtMTEuNC0yNS41LTI1LjUgMC00LjMgMS4xLTguNSAzLjEtMTIuMmw0OC44LTg5LjR6bTM3LjMtMzAuMmMxMi4yIDE1LjEgMTQuMSAzNi4xIDQuOCA1My4ybC0xOCAzMy4xIDU4LjUtMjUuMWMxMS44LTUuMSAyNS4yLTUuMiAzNy4xLS4zIDI1LjcgMTAuNSA1NC4yIDE2LjQgODQuMyAxNi40IDExNy44IDAgMjA4LTg4LjggMjA4LTE5MlMzNzMuOCA0OCAyNTYgNDggNDggMTM2LjggNDggMjQwYzAgNDIuOCAxNS4xIDgyLjQgNDEuMiAxMTQuN3oiXX0sVEF0PXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImNoZXNzLXBhd24iLGljb246WzM4NCw1MTIsWzk4MjNdLCJmNDQzIiwiTTE5Mi0zMmM2Ni4zIDAgMTIwIDUzLjcgMTIwIDEyMCAwIDI3LjYtOS4zIDUyLjktMjQuOSA3My4yIDkuOCAzIDE2LjkgMTIuMSAxNi45IDIyLjggMCAxMy4zLTEwLjcgMjQtMjQgMjRsLS42IDAgMjQuNiAxNjAgNTMuNiA2N2M2LjcgOC40IDEwLjQgMTguOCAxMC40IDI5LjYgMCAyNi4yLTIxLjIgNDcuNC00Ny40IDQ3LjRMNjMuNCA1MTJjLTI2LjIgMC00Ny40LTIxLjItNDcuNC00Ny40IDAtMTAuOCAzLjctMjEuMiAxMC40LTI5LjZsNTMuNi02NyAyNC42LTE2MC0uNiAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNCAwLTEwLjggNy4xLTE5LjggMTYuOS0yMi44LTE1LjYtMjAuMy0yNC45LTQ1LjYtMjQuOS03My4yIDAtNjYuMyA1My43LTEyMCAxMjAtMTIwek0xMTUuOSA0MDBsLTUxLjIgNjQgMjU0LjcgMC01MS4yLTY0LTE1Mi4yIDB6bTM2LjItMTg0LjdsLTIxIDEzNi43IDEyMS45IDAtMjEtMTM2LjctMS4xLTcuMy03Ny42IDAtMS4xIDcuM3pNMTkyIDE2YTcyIDcyIDAgMSAwIDAgMTQ0IDcyIDcyIDAgMSAwIDAtMTQ0eiJdfSwkQXQ9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiY2FsZW5kYXItcGx1cyIsaWNvbjpbNDQ4LDUxMixbXSwiZjI3MSIsIk0xMjAgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDQwIDE2MCAwIDAtNDBjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDQwIDMyIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAyODhjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NGwzMiAwIDAtNDBjMC0xMy4zIDEwLjctMjQgMjQtMjR6bTAgMTEybC01NiAwYy04LjggMC0xNiA3LjItMTYgMTZsMCAyODhjMCA4LjggNy4yIDE2IDE2IDE2bDMyMCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTI4OGMwLTguOC03LjItMTYtMTYtMTZsLTI2NCAwem0xMDQgNjRjMTMuMyAwIDI0IDEwLjcgMjQgMjRsMCA0OCA0OCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC00OCAwIDAgNDhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC00OC00OCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDQ4IDAgMC00OGMwLTEzLjMgMTAuNy0yNCAyNC0yNHoiXX0sREF0PXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImNsaXBib2FyZCIsaWNvbjpbMzg0LDUxMixbMTI4MjAzXSwiZjMyOCIsIk0yMzIgOTZsLTgwIDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsODAgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNHptMCA0OGMzNy4xIDAgNjcuNi0yOCA3MS42LTY0TDMyMCA4MGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzNTJjMCA4LjgtNy4yIDE2LTE2IDE2TDY0IDQ2NGMtOC44IDAtMTYtNy4yLTE2LTE2TDQ4IDk2YzAtOC44IDcuMi0xNiAxNi0xNmwxNi40IDBjNCAzNiAzNC41IDY0IDcxLjYgNjRsODAgMHpNMjkxLjkgMzJDMjc5IDEyLjcgMjU3IDAgMjMyIDBMMTUyIDBjLTI1IDAtNDcgMTIuNy01OS45IDMyTDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjU2IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zNTJjMC0zNS4zLTI4LjctNjQtNjQtNjRsLTI4LjEgMHoiXX0sTEF0PXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6InRodW1icy1kb3duIixpY29uOls1MTIsNTEyLFsxMjgwNzgsNjE1NzZdLCJmMTY1IiwiTTM2MCAzMmw3LjQgLjRjMzUgMy42IDYyLjUgMzIuMiA2NC40IDY3LjcgMTcuOCAxMS44IDMwLjEgMzEuNCAzMiA1My45bC4yIDZjMCA1LjctLjcgMTEuMi0yIDE2LjUgMTAuMiAxMS41IDE2LjggMjYuMyAxNy44IDQyLjdsLjIgNC44YzAgMTMuMi0zLjYgMjUuNC05LjggMzYgNC45IDguNCA4LjIgMTcuOSA5LjMgMjhsLjQgOGMwIDM3LjMtMjguMyA2Ny45LTY0LjYgNzEuNmwtNy40IC40LTEwOS43IDAgMTQuMSAzMCAzLjEgNy42YzEyLjUgMzUuNy0xLjggNzUuNS0zNC4yIDk1bC03LjIgMy45Yy0zNy41IDE3LjYtODEuNyAzLjYtMTAyLjYtMzEuMmwtLjYtLjktMi43LTUtLjYtMS4yLTMwLjEtNjRjLTkuNCAxNy44LTI4IDI5LjktNDkuNSAyOS45bC0zMiAwYy0zMC45IDAtNTYtMjUuMS01Ni01NkwwIDE1MmMwLTMwLjkgMjUuMS01NiA1Ni01NmwzMiAwYzEyLjQgMCAyMy45IDQuMSAzMy4yIDExIDEzLjItMjEuNCAzMi0zOS40IDU1LTUxLjZsMTIuMi02LjUgLjctLjMgNi42LTMuMiAuNy0uMyA3LjEtM2MxNi43LTYuNiAzNC41LTkuOSA1Mi42LTkuOUwzNjAgMzJ6TTI1NS45IDgwYy0xMiAwLTIzLjkgMi4zLTM1LjEgNi42bC00LjcgMi01LjMgMi42IDAgMC0xMi4yIDYuNWMtMjkuMiAxNS41LTQ4LjMgNDQuOS01MC43IDc3LjZsLS4yIDggMCAxMTIuOSAuMSA0LjFjLjUgOC4yIDIuNSAxNi4yIDYgMjMuN2w1Ni44IDEyMC45IDIuMSAzLjhjOC40IDEzLjcgMjYgMTkuMSA0MC44IDEyLjJsMi45LTEuNmMxMy03LjggMTguNy0yMy43IDEzLjctMzhsLTEuMi0zLTMwLjItNjQuMmMtMy41LTcuNC0yLjktMTYuMSAxLjUtMjMuMXMxMi0xMS4xIDIwLjItMTEuMWwxNDcuNSAwIDIuNC0uMWMxMS4zLTEuMSAyMC4zLTEwLjEgMjEuNC0yMS40bC4xLTIuNWMwLTcuMS0zLjEtMTMuNS04LjItMTgtNS4yLTQuNi04LjItMTEuMS04LjItMThzMy0xMy40IDguMi0xOGM0LjQtMy45IDcuNC05LjMgOC0xNS4zbC4yLTIuN2MwLTguNC00LjQtMTUuOS0xMS4yLTIwLjItMTAuNy02LjktMTQuMi0yMC45LTgtMzIgMS41LTIuNiAyLjUtNS42IDIuOS04LjZsLjItMy4yYzAtMTAuNi02LjktMTkuNi0xNi42LTIyLjgtMTEuNy0zLjgtMTguNy0xNS45LTE2LTI4IC4yLS45IC4zLTEuOCAuNC0yLjZsLjItMi42YzAtMTIuNC05LjUtMjIuNi0yMS42LTIzLjhMMzYwIDgwIDI1NS45IDgwek01NiAxNDRjLTQuNCAwLTggMy42LTggOGwwIDIyNGMwIDQuNCAzLjYgOCA4IDhsMzIgMGM0LjQgMCA4LTMuNiA4LThsMC0yMjRjMC00LjQtMy42LTgtOC04bC0zMiAweiJdfSxFQXQ9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiaWQtYmFkZ2UiLGljb246WzM4NCw1MTIsW10sImYyYzEiLCJNMjU2IDQ4bDAgMTZjMCAxNy43LTE0LjMgMzItMzIgMzJsLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTYtNjQgMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzg0YzAgOC44IDcuMiAxNiAxNiAxNmwyNTYgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zODRjMC04LjgtNy4yLTE2LTE2LTE2bC02NCAwek0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEwzMjAgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDM4NGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgNjR6TTE2MCAzMjBsNjQgMGM0NC4yIDAgODAgMzUuOCA4MCA4MCAwIDguOC03LjIgMTYtMTYgMTZMOTYgNDE2Yy04LjggMC0xNi03LjItMTYtMTYgMC00NC4yIDM1LjgtODAgODAtODB6bS0yNC05NmE1NiA1NiAwIDEgMSAxMTIgMCA1NiA1NiAwIDEgMSAtMTEyIDB6Il19LHpnZT17cHJlZml4OiJmYXIiLGljb25OYW1lOiJzcXVhcmUtY2hlY2siLGljb246WzQ0OCw1MTIsWzk3NDUsOTk4OSw2MTUxMCwiY2hlY2stc3F1YXJlIl0sImYxNGEiLCJNMzg0IDMyYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwzMjAgMHpNNjQgODBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyMGMwIDguOCA3LjIgMTYgMTYgMTZsMzIwIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzIwYzAtOC44LTcuMi0xNi0xNi0xNkw2NCA4MHptMjMwLjcgODkuOWM3LjgtMTAuNyAyMi44LTEzLjEgMzMuNS01LjMgMTAuNyA3LjggMTMuMSAyMi44IDUuMyAzMy41TDIxMS40IDM2Ni4xYy00LjEgNS43LTEwLjUgOS4zLTE3LjUgOS44LTcgLjUtMTMuOS0yLTE4LjgtNi45bC01NS45LTU1LjljLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGwzNiAzNiAxMDUuNi0xNDUuMnoiXX0sUEF0PXpnZSxJQXQ9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiY2hlc3MtYmlzaG9wIixpY29uOlszMjAsNTEyLFs5ODIxXSwiZjQzYSIsIk0yMTYgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMTYgMCA4MS44IDk4LjFjMjQuNyAyOS42IDM4LjIgNjcgMzguMiAxMDUuNiAwIDQzLjctMTcuNCA4NS43LTQ4LjMgMTE2LjZsLTguNiA4LjYgNDYuNSA1OC4yYzYuNyA4LjQgMTAuNCAxOC44IDEwLjQgMjkuNiAwIDI2LjItMjEuMiA0Ny40LTQ3LjQgNDcuNEw0Ny40IDUxMkMyMS4yIDUxMiAwIDQ5MC44IDAgNDY0LjYgMCA0NTMuOSAzLjcgNDQzLjQgMTAuNCA0MzVsNDYuNS01OC4yLTguNi04LjZDMTcuNCAzMzcuNCAwIDI5NS40IDAgMjUxLjcgMCAyMTMuMSAxMy41IDE3NS44IDM4LjIgMTQ2LjFMMTIwIDQ4IDEwNCA0OEM5MC43IDQ4IDgwIDM3LjMgODAgMjRTOTAuNyAwIDEwNCAwTDIxNiAwek05NC40IDQwNi44bC00NS43IDU3LjIgMjIyLjcgMC00NS43LTU3LjEtNS41LTYuOS0xMjAuMyAwLTUuNSA2Ljh6TTE1Ni45IDc4LjdMNzUuMSAxNzYuOGMtMTUuMyAxOC40LTI0LjYgNDEtMjYuNyA2NC43TDQ4IDI1MS43YzAgMzEgMTIuMyA2MC43IDM0LjIgODIuN2wxNy43IDE3LjcgMTIwLjIgMGM2LjItNi4yIDEyLjEtMTIuMSAxNy44LTE3LjcgMjEuOS0yMS45IDM0LjItNTEuNiAzNC4yLTgyLjZsLS40LTEwLjJjLTEuNS0xNy02LjctMzMuMy0xNS4yLTQ4TDIwOSAyNDFjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNTEuOC01MS44LTYzLjctNzYuNS0zLjEtMy44LTMuMSAzLjh6Il19LEFBdD17cHJlZml4OiJmYXIiLGljb25OYW1lOiJlbnZlbG9wZS1vcGVuIixpY29uOls1MTIsNTEyLFs2MjEzNV0sImYyYjYiLCJNNTEyIDQxNmMwIDM1LjMtMjguNSA2NC02My45IDY0TDY0IDQ4MGMtMzUuNCAwLTY0LTI4LjctNjQtNjRMMCAxNjRjLjEtMTUuNSA3LjgtMzAgMjAuNS0zOC44TDIwNi0yLjdjMzAuMS0yMC43IDY5LjgtMjAuNyA5OS45IDBMNDkxLjUgMTI1LjJjMTIuOCA4LjggMjAuNCAyMy4zIDIwLjUgMzguOGwwIDI1MnpNNjQgNDMybDM4NC4xIDBjOC44IDAgMTUuOS03LjEgMTUuOS0xNmwwLTE5MS43LTE1NC44IDExNy40Yy0zMS40IDIzLjktNzQuOSAyMy45LTEwNi40IDBMNDggMjI0LjMgNDggNDE2YzAgOC45IDcuMiAxNiAxNiAxNnpNNDYzLjYgMTY0LjRMMjc4LjcgMzYuOGMtMTMuNy05LjQtMzEuNy05LjQtNDUuNCAwTDQ4LjQgMTY0LjQgMjMxLjggMzAzLjVjMTQuMyAxMC44IDM0LjEgMTAuOCA0OC40IDBMNDYzLjYgMTY0LjR6Il19LHVoPXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImNpcmNsZS14bWFyayIsaWNvbjpbNTEyLDUxMixbNjE1MzIsInRpbWVzLWNpcmNsZSIsInhtYXJrLWNpcmNsZSJdLCJmMDU3IiwiTTI1NiA0OGEyMDggMjA4IDAgMSAxIDAgNDE2IDIwOCAyMDggMCAxIDEgMC00MTZ6bTAgNDY0YTI1NiAyNTYgMCAxIDAgMC01MTIgMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTY3IDE2N2MtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsNTUgNTUtNTUgNTVjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw1NS01NSA1NSA1NWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTU1LTU1IDU1LTU1YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTU1IDU1LTU1LTU1Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHoiXX0sTkF0PXVoLFJBdD11aCxDZ2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToic3F1YXJlLWNhcmV0LXVwIixpY29uOls0NDgsNTEyLFsiY2FyZXQtc3F1YXJlLXVwIl0sImYxNTEiLCJNNjQgODBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyMGMwIDguOCA3LjIgMTYgMTYgMTZsMzIwIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzIwYzAtOC44LTcuMi0xNi0xNi0xNkw2NCA4MHpNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwzMjAgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZ6bTIyNCA2NGM2LjcgMCAxMyAyLjggMTcuNiA3LjdsMTA0IDExMmM2LjUgNyA4LjIgMTcuMiA0LjQgMjUuOVMzMzcuNSAzMjAgMzI4IDMyMGwtMjA4IDBjLTkuNSAwLTE4LjItNS43LTIyLTE0LjRzLTIuMS0xOC45IDQuNC0yNS45bDEwNC0xMTJjNC41LTQuOSAxMC45LTcuNyAxNy42LTcuN3oiXX0sT0F0PUNnZSxGQXQ9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiZmlsZS1pbWFnZSIsaWNvbjpbMzg0LDUxMixbMTI4NDQzXSwiZjFjNSIsIk0xNzYgNDhMNjQgNDhjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDM4NGMwIDguOCA3LjIgMTYgMTYgMTZsMjU2IDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMjQwLTg4IDBjLTM5LjggMC03Mi0zMi4yLTcyLTcybDAtODh6TTMxNi4xIDE2MEwyMjQgNjcuOSAyMjQgMTM2YzAgMTMuMyAxMC43IDI0IDI0IDI0bDY4LjEgMHpNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBMMTk3LjUgMGMxNyAwIDMzLjMgNi43IDQ1LjMgMTguN0wzNjUuMyAxNDEuM2MxMiAxMiAxOC43IDI4LjMgMTguNyA0NS4zTDM4NCA0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDY0ek0yNTkuNCA0MzJsLTEzNC44IDBjLTE1LjggMC0yOC42LTEyLjgtMjguNi0yOC42IDAtNi40IDIuMS0xMi41IDYtMTcuNmw2Ny42LTg2LjlDMTc1IDI5MiAxODMuMyAyODggMTkyIDI4OHMxNyA0IDIyLjQgMTAuOUwyODIgMzg1LjljMy45IDUgNiAxMS4yIDYgMTcuNiAwIDE1LjgtMTIuOCAyOC42LTI4LjYgMjguNnpNMTEyIDIyNGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6Il19LFRnZT17cHJlZml4OiJmYXIiLGljb25OYW1lOiJzcXVhcmUtY2FyZXQtcmlnaHQiLGljb246WzQ0OCw1MTIsWyJjYXJldC1zcXVhcmUtcmlnaHQiXSwiZjE1MiIsIk00MDAgOTZjMC04LjgtNy4yLTE2LTE2LTE2TDY0IDgwYy04LjggMC0xNiA3LjItMTYgMTZsMCAzMjBjMCA4LjggNy4yIDE2IDE2IDE2bDMyMCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyMHpNMzg0IDMyYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwzMjAgMHpNMzIwIDI1NmMwIDYuNy0yLjggMTMtNy43IDE3LjZsLTExMiAxMDRjLTcgNi41LTE3LjIgOC4yLTI1LjkgNC40UzE2MCAzNjkuNSAxNjAgMzYwbDAtMjA4YzAtOS41IDUuNy0xOC4yIDE0LjQtMjJzMTguOS0yLjEgMjUuOSA0LjRsMTEyIDEwNGM0LjkgNC41IDcuNyAxMC45IDcuNyAxNy42eiJdfSxCQXQ9VGdlLEViPXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6InN1biIsaWNvbjpbNTc2LDUxMixbOTcyOF0sImYxODUiLCJNMjg4LTMyYzggMCAxNS40IDQgMTkuOSAxMC42bDU4LjggODcuNCAxMDMuNC0yMC4yYzcuOC0xLjUgMTUuOSAuOSAyMS42IDYuNnM4LjEgMTMuOCA2LjYgMjEuNkw0NzggMTc3LjMgNTY1LjQgMjM2LjFDNTcyIDI0MC41IDU3NiAyNDggNTc2IDI1NnMtNCAxNS40LTEwLjYgMTkuOUw0NzggMzM0LjcgNDk4LjIgNDM4YzEuNSA3LjgtLjkgMTUuOS02LjYgMjEuNnMtMTMuOCA4LjEtMjEuNiA2LjZMMzY2LjcgNDQ2IDMwNy45IDUzMy40QzMwMy40IDU0MCAyOTYgNTQ0IDI4OCA1NDRzLTE1LjQtNC0xOS45LTEwLjZMMjA5LjMgNDQ2IDEwNS45IDQ2Ni4yYy03LjggMS41LTE1LjktLjktMjEuNi02LjZzLTguMS0xMy44LTYuNi0yMS42TDk4IDMzNC43IDEwLjYgMjc1LjlDNCAyNzEuNCAwIDI2NCAwIDI1NnM0LTE1LjQgMTAuNi0xOS45TDk4IDE3Ny4zIDc3LjggNzMuOWMtMS41LTcuOCAuOS0xNS45IDYuNi0yMS42czEzLjgtOC4xIDIxLjYtNi42bDEwMy4zIDIwLjIgNTguOC04Ny40IDEuOC0yLjNDMjc0LjQtMjkgMjgxLTMyIDI4OC0zMnptLTQ3LjggMTM4Yy01LjQgOC0xNSAxMi0yNC41IDEwLjJsLTg0LTE2LjQgMTYuNCA4NGMxLjggOS41LTIuMiAxOS4xLTEwLjIgMjQuNUw2NyAyNTYgMTM4IDMwMy44YzggNS40IDEyIDE1IDEwLjIgMjQuNWwtMTYuNCA4NCA4NC0xNi40IDMuNS0uNGM4LjMtLjQgMTYuMyAzLjYgMjEgMTAuNmw0Ny44IDcxIDQ3LjgtNzEgMi4yLTIuOGM1LjYtNi4xIDE0LTkgMjIuMy03LjNsODQgMTYuNC0xNi40LTg0Yy0xLjgtOS41IDIuMi0xOS4xIDEwLjItMjQuNWw3MS00Ny44LTcxLTQ3LjhjLTgtNS40LTEyLTE1LTEwLjItMjQuNWwxNi40LTg0LTg0IDE2LjRjLTkuNSAxLjgtMTkuMS0yLjItMjQuNS0xMC4ybC00Ny44LTcxLTQ3LjggNzF6TTI4OCAzNzZhMTIwIDEyMCAwIDEgMSAwLTI0MCAxMjAgMTIwIDAgMSAxIDAgMjQwem0wLTE5MmE3MiA3MiAwIDEgMCAwIDE0NCA3MiA3MiAwIDEgMCAwLTE0NHoiXX0sSEF0PXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImltYWdlIixpY29uOls0NDgsNTEyLFtdLCJmMDNlIiwiTTY0IDgwYy04LjggMC0xNiA3LjItMTYgMTZsMCAzMjBjMCA4LjggNy4yIDE2IDE2IDE2bDMyMCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyMGMwLTguOC03LjItMTYtMTYtMTZMNjQgODB6TTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMzIwIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAzMjBjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDk2em0xMjggMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0xMzYgNzJjOC41IDAgMTYuNCA0LjUgMjAuNyAxMS44bDgwIDEzNmM0LjQgNy40IDQuNCAxNi42IC4xIDI0LjFTMzUyLjYgMzg0IDM0NCAzODRsLTI0MCAwYy04LjkgMC0xNy4yLTUtMjEuMy0xMi45cy0zLjUtMTcuNSAxLjYtMjQuOGw1Ni04MGM0LjUtNi40IDExLjgtMTAuMiAxOS43LTEwLjJzMTUuMiAzLjggMTkuNyAxMC4ybDE3LjIgMjQuNiA0Ni41LTc5YzQuMy03LjMgMTIuMi0xMS44IDIwLjctMTEuOHoiXX0scUF0PXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImxpZ2h0YnVsYiIsaWNvbjpbMzg0LDUxMixbMTI4MTYxXSwiZjBlYiIsIk0yOTYuNSAyOTEuMUMzMjEgMjY1LjIgMzM2IDIzMC40IDMzNiAxOTIgMzM2IDExMi41IDI3MS41IDQ4IDE5MiA0OFM0OCAxMTIuNSA0OCAxOTJjMCAzOC40IDE1IDczLjIgMzkuNSA5OS4xIDIxLjMgMjIuNCA0NC45IDU0IDUzLjMgOTIuOWwxMDIuNCAwYzguNC0zOSAzMi03MC41IDUzLjMtOTIuOXptMzQuOCAzM0MzMDcuNyAzNDkgMjg4IDM3OS40IDI4OCA0MTMuN2wwIDE4LjNjMCA0NC4yLTM1LjggODAtODAgODBsLTMyIDBjLTQ0LjIgMC04MC0zNS44LTgwLTgwbDAtMTguM0M5NiAzNzkuNCA3Ni4zIDM0OSA1Mi43IDMyNC4xIDIwIDI4OS43IDAgMjQzLjIgMCAxOTIgMCA4NiA4NiAwIDE5MiAwUzM4NCA4NiAzODQgMTkyYzAgNTEuMi0yMCA5Ny43LTUyLjcgMTMyLjF6TTE0NCAxODRjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRjMC00OC42IDM5LjQtODggODgtODggMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRjLTIyLjEgMC00MCAxNy45LTQwIDQweiJdfSxRcmU9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiYWRkcmVzcy1jYXJkIixpY29uOls1NzYsNTEyLFs2MjE0MCwiY29udGFjdC1jYXJkIiwidmNhcmQiXSwiZjJiYiIsIk01MTIgODBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzIwYzAgOC44LTcuMiAxNi0xNiAxNkw2NCA0MzJjLTguOCAwLTE2LTcuMi0xNi0xNkw0OCA5NmMwLTguOCA3LjItMTYgMTYtMTZsNDQ4IDB6TTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsNDQ4IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6TTIwOCAyNDhhNTYgNTYgMCAxIDAgMC0xMTIgNTYgNTYgMCAxIDAgMCAxMTJ6bS0zMiA0MGMtNDQuMiAwLTgwIDM1LjgtODAgODAgMCA4LjggNy4yIDE2IDE2IDE2bDE5MiAwYzguOCAwIDE2LTcuMiAxNi0xNiAwLTQ0LjItMzUuOC04MC04MC04MGwtNjQgMHpNMzc2IDE0NGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw4MCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC04MCAwem0wIDk2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDgwIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTgwIDB6Il19LGpBdD1RcmUsVkF0PVFyZSwkZ2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiZmFjZS1tZWgiLGljb246WzUxMiw1MTIsWzEyODUyOCwibWVoIl0sImYxMWEiLCJNNDY0IDI1NmEyMDggMjA4IDAgMSAxIC00MTYgMCAyMDggMjA4IDAgMSAxIDQxNiAwek0yNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyIDI1NiAyNTYgMCAxIDAgMC01MTJ6TTE3NiAyNDBhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0xOTItMzJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMTg0IDMyMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwxNDQgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtMTQ0IDB6Il19LFVBdD0kZ2UsV0F0PXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6Im1hcCIsaWNvbjpbNTEyLDUxMixbMTI4NTA2LDYyMDcyXSwiZjI3OSIsIk01MTIgNDhjMC04LjMtNC4zLTE2LTExLjMtMjAuNHMtMTUuOS00LjgtMjMuMy0xLjFMMzUyLjUgODguMSAxODAgMjkuNGMtMTMuNy00LjctMjguNy0zLjgtNDEuOSAyLjNMMTMuOCA5MC4zQzUuNCA5NC4yIDAgMTAyLjcgMCAxMTJMMCA0NjRjMCA4LjIgNC4yIDE1LjkgMTEuMSAyMC4zczE1LjYgNC45IDIzLjEgMS40bDEyNy4zLTU5LjkgMTcwLjcgNTYuOWMxMy43IDQuNiAyOC41IDMuNyA0MS42LTIuNWwxMjQuNC01OC41YzguNC00IDEzLjgtMTIuNCAxMy44LTIxLjdsMC0zNTJ6TTE0NCA4Mi4xbDAgMjk5LTk2IDQ1LjIgMC0yOTkgOTYtNDUuMnptNDggMzAzLjNsMC0zMDEuMSAxMjggNDMuNSAwIDMwMC4zLTEyOC00Mi43ek0zNjggMTM0bDk2LTQ3LjQgMCAyOTguMi05NiA0NS4yIDAtMjk2eiJdfSxHQXQ9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiaGFuZC1wb2ludC1kb3duIixpY29uOlszODQsNTEyLFtdLCJmMGE3IiwiTTY0IDQ0OGwwLTE3Ny42YzUuMiAxIDEwLjUgMS42IDE2IDEuNmwxNiAwIDAgMTc2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2ek04MCAyMjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMjRjMC02Ni4zIDUzLjctMTIwIDEyMC0xMjBsNDggMGM1Mi41IDAgOTcuMSAzMy43IDExMy40IDgwLjctMy4xLS41LTYuMi0uNy05LjQtLjctMjAgMC0zNy45IDkuMi00OS43IDIzLjYtOS00LjktMTkuNC03LjYtMzAuMy03LjYtMTUuMSAwLTI5IDUuMy00MCAxNC0xMS04LjgtMjQuOS0xNC00MC0xNGwtNDAgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw0MCAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC04MCAwek0wIDE5MmwwIDBjMCAxOCA2IDM0LjYgMTYgNDhsMCAyMDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NGwwLTgyYzUuMSAxLjMgMTAuNSAyIDE2IDIgMjUuMyAwIDQ3LjItMTQuNyA1Ny42LTM2IDcgMi42IDE0LjUgNCAyMi40IDQgMjAgMCAzNy45LTkuMiA0OS43LTIzLjYgOSA0LjkgMTkuNCA3LjYgMzAuMyA3LjYgMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC04OEMzODQgNzUuMiAzMDguOCAwIDIxNiAwTDE2OCAwQzc1LjIgMCAwIDc1LjIgMCAxNjhsMCAyNHptMzM2IDY0YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtNjRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDY0ek0xNjAgMjcyYzUuNSAwIDEwLjktLjcgMTYtMmwwIDM0YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtMzIgMTYgMHptNjQtMjRsMC00MGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2bDAgNjRjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC0yNHoiXX0sRGdlPXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImZhY2UtbWVoLWJsYW5rIixpY29uOls1MTIsNTEyLFsxMjg1NjYsIm1laC1ibGFuayJdLCJmNWE0IiwiTTI1NiA0OGEyMDggMjA4IDAgMSAwIDAgNDE2IDIwOCAyMDggMCAxIDAgMC00MTZ6TTUxMiAyNTZhMjU2IDI1NiAwIDEgMSAtNTEyIDAgMjU2IDI1NiAwIDEgMSA1MTIgMHpNMTQ0IDIwOGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xOTItMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0eiJdfSxLQXQ9RGdlLExnZT17cHJlZml4OiJmYXIiLGljb25OYW1lOiJmYWNlLWdyaW4tdG9uZ3VlIixpY29uOls1MTIsNTEyLFsxMjg1MzksImdyaW4tdG9uZ3VlIl0sImY1ODkiLCJNNDY0IDI1NmMwLTExNC45LTkzLjEtMjA4LTIwOC0yMDhTNDggMTQxLjEgNDggMjU2YzAgNzQuMSAzOC44IDEzOS4yIDk3LjEgMTc2LS43LTUuMi0xLjEtMTAuNi0xLjEtMTZsMC01My41Yy0xMC4yLTEyLjYtMTguMy0yNi45LTIzLjgtNDIuNC00LjEtMTEuNiA3LjgtMjEuNCAxOS42LTE3LjggMzQuNyAxMC42IDc0LjIgMTYuNSAxMTYuMSAxNi41IDQyIDAgODEuNS02IDExNi4zLTE2LjYgMTEuOC0zLjYgMjMuNyA2LjEgMTkuNiAxNy44LTUuNSAxNS42LTEzLjYgMjkuOS0yMy44IDQyLjVsMCA1My41YzAgNS40LS40IDEwLjgtMS4xIDE2IDU4LjQtMzYuOCA5Ny4xLTEwMS45IDk3LjEtMTc2em00OCAwYzAgMTE2LjMtNzcuNiAyMTQuNi0xODMuOSAyNDUuNy0xOS41IDE2LjQtNDQuNiAyNi4zLTcyLjEgMjYuM3MtNTIuNi05LjktNzIuMS0yNi4zQzc3LjYgNDcwLjYgMCAzNzIuMyAwIDI1NiAwIDExNC42IDExNC42IDAgMjU2IDBTNTEyIDExNC42IDUxMiAyNTZ6TTE3NiAxNzZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0xMjggMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTYgMjA4bDAtMzcuNGMwLTE0LjctMTEuOS0yNi42LTI2LjYtMjYuNmwtMiAwYy0xMS4zIDAtMjEuMSA3LjktMjMuNiAxOC45LTIuOCAxMi42LTIwLjggMTIuNi0yMy42IDAtMi41LTExLjEtMTIuMy0xOC45LTIzLjYtMTguOWwtMiAwYy0xNC43IDAtMjYuNiAxMS45LTI2LjYgMjYuNmwwIDM3LjRjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NHoiXX0sWUF0PUxnZSxKcmU9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiZnV0Ym9sIixpY29uOls1MTIsNTEyLFs5OTE3LCJmdXRib2wtYmFsbCIsInNvY2Nlci1iYWxsIl0sImYxZTMiLCJNMzg3IDIyOC4zYy00LjQtMi44LTcuNi03LTkuMi0xMS45cy0xLjQtMTAuMiAuNS0xNUw0MTEuNiAxMThjLTE5LjktMjIuNC00NC42LTQwLjUtNzIuNC01Mi43bC02OS4xIDU3LjZjLTQgMy4zLTkgNS4xLTE0LjEgNS4xcy0xMC4yLTEuOC0xNC4xLTUuMUwxNzIuOCA2NS4zYy0yNy44IDEyLjItNTIuNSAzMC4zLTcyLjQgNTIuN2wzMy40IDgzLjRjMS45IDQuOCAyLjEgMTAuMSAuNSAxNXMtNC45IDkuMS05LjIgMTEuOUw0OSAyNzYuMmMzIDMwLjkgMTIuNyA1OS43IDI3LjYgODUuMmw4OS43LTZjNS4yLS4zIDEwLjMgMS4xIDE0LjUgNC4yczcuMiA3LjQgOC40IDEyLjVsMjIgODcuMmMxNC40IDMuMiAyOS40IDQuOCA0NC44IDQuOHMzMC4zLTEuNyA0NC44LTQuOGwyMi04Ny4yYzEuMy01IDQuMi05LjQgOC40LTEyLjVzOS4zLTQuNSAxNC41LTQuMmw4OS43IDZjMTUtMjUuNCAyNC43LTU0LjMgMjcuNi04NS4xTDM4NyAyMjguM3pNMjU2IDBhMjU2IDI1NiAwIDEgMSAwIDUxMiAyNTYgMjU2IDAgMSAxIDAtNTEyem02MiAyMjFjOC40IDYuMSAxMS45IDE2LjkgOC43IDI2LjhsLTE4LjMgNTYuM2MtMy4yIDkuOS0xMi40IDE2LjYtMjIuOCAxNi42bC01OS4yIDBjLTEwLjQgMC0xOS42LTYuNy0yMi44LTE2LjZsLTE4LjMtNTYuM2MtMy4yLTkuOSAuMy0yMC43IDguNy0yNi44bDQ3LjktMzQuOGM4LjQtNi4xIDE5LjgtNi4xIDI4LjIgMEwzMTggMjIxeiJdfSxaQXQ9SnJlLFhBdD1KcmUsRWdlPXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImZhY2Utc3VycHJpc2UiLGljb246WzUxMiw1MTIsWzEyODU1OCwic3VycHJpc2UiXSwiZjVjMiIsIk00NjQgMjU2YTIwOCAyMDggMCAxIDAgLTQxNiAwIDIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDAgMjU2IDI1NiAwIDEgMSAtNTEyIDB6bTE3Ni04MGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTEyOCAzMmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0tNDggODBhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6Il19LFFBdD1FZ2UsUGdlPXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImZvbGRlciIsaWNvbjpbNTEyLDUxMixbMTI4MTkzLDEyODQ0Nyw2MTcxNiwiZm9sZGVyLWJsYW5rIl0sImYwN2IiLCJNNjQgNDAwbDM4NCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTI0MGMwLTguOC03LjItMTYtMTYtMTZsLTE0OS4zIDBjLTE3LjMgMC0zNC4yLTUuNi00OC0xNkwyMTIuMyA4My4yYy0yLjgtMi4xLTYuMS0zLjItOS42LTMuMkw2NCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMjg4YzAgOC44IDcuMiAxNiAxNiAxNnptMzg0IDQ4TDY0IDQ0OGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwxMzguNyAwYzEzLjggMCAyNy4zIDQuNSAzOC40IDEyLjhsMzguNCAyOC44YzUuNSA0LjIgMTIuMyA2LjQgMTkuMiA2LjRMNDQ4IDgwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjQwYzAgMzUuMy0yOC43IDY0LTY0IDY0eiJdfSxKQXQ9UGdlLGVOdD17cHJlZml4OiJmYXIiLGljb25OYW1lOiJjbG91ZCIsaWNvbjpbNTc2LDUxMixbOTcyOV0sImYwYzIiLCJNODAgMTkyYzAtODguNCA3MS42LTE2MCAxNjAtMTYwIDQ3LjEgMCA4OS40IDIwLjQgMTE4LjcgNTIuNyAxMC42LTMuMSAyMS44LTQuNyAzMy4zLTQuNyA2Ni4zIDAgMTIwIDUzLjcgMTIwIDEyMCAwIDEzLjItMi4xIDI1LjktNi4xIDM3LjggNDEuNiAyMS4xIDcwLjEgNjQuMyA3MC4xIDExNC4yIDAgNzAuNy01Ny4zIDEyOC0xMjggMTI4bC0zMDQgMGMtNzkuNSAwLTE0NC02NC41LTE0NC0xNDQgMC01Ni44IDMyLjktMTA1LjkgODAuNy0xMjkuNC0uNC00LjgtLjctOS43LS43LTE0LjZ6TTI0MCA4MGMtNjEuOSAwLTExMiA1MC4xLTExMiAxMTIgMCA4LjQgLjkgMTYuNiAyLjcgMjQuNSAyLjcgMTIuMS00LjMgMjQuMy0xNi4xIDI4LjEtMzguNyAxMi40LTY2LjYgNDguNy02Ni42IDkxLjQgMCA1MyA0MyA5NiA5NiA5NmwzMDQgMGM0NC4yIDAgODAtMzUuOCA4MC04MCAwLTM3LjQtMjUuNy02OC45LTYwLjUtNzcuNi03LjUtMS45LTEzLjYtNy4yLTE2LjUtMTQuM3MtMi4xLTE1LjIgMi0yMS43YzctMTEuMSAxMS0yNC4yIDExLTM4LjMgMC0zOS44LTMyLjItNzItNzItNzItMTEuMSAwLTIxLjUgMi41LTMwLjggNi45LTEwLjUgNS0yMy4xIDEuNy0yOS44LTcuOC0yMC4zLTI4LjYtNTMuNy00Ny4xLTkxLjMtNDcuMXoiXX0sdE50PXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImNpcmNsZSIsaWNvbjpbNTEyLDUxMixbMTI4MzA4LDEyODMwOSwxMjg5OTIsMTI4OTkzLDEyODk5NCwxMjg5OTUsMTI4OTk2LDk2NzksOTg5OCw5ODk5LDExMDQ0LDYxNzA4LDYxOTE1XSwiZjExMSIsIk00NjQgMjU2YTIwOCAyMDggMCAxIDAgLTQxNiAwIDIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDAgMjU2IDI1NiAwIDEgMSAtNTEyIDB6Il19LElnZT17cHJlZml4OiJmYXIiLGljb25OYW1lOiJmYWNlLWdyaW4tc3F1aW50IixpY29uOls1MTIsNTEyLFsxMjg1MTgsImdyaW4tc3F1aW50Il0sImY1ODUiLCJNNDY0IDI1NmEyMDggMjA4IDAgMSAwIC00MTYgMCAyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwIDI1NiAyNTYgMCAxIDEgLTUxMiAwem0zNzIuMiA0Ni4zYzExLjgtMy42IDIzLjcgNi4xIDE5LjYgMTcuOC0xOS44IDU1LjktNzMuMSA5Ni0xMzUuOCA5Ni02Mi43IDAtMTE2LTQwLTEzNS44LTk1LjktNC4xLTExLjYgNy44LTIxLjQgMTkuNi0xNy44IDM0LjcgMTAuNiA3NC4yIDE2LjUgMTE2LjEgMTYuNSA0MiAwIDgxLjUtNiAxMTYuMy0xNi42em0tMjQ5LjYtMTQzYzQuNS02LjggMTMuMy05LjIgMjAuNi01LjVsNzkuNiA0MGM1LjQgMi43IDguOCA4LjIgOC44IDE0LjNzLTMuNCAxMS42LTguOCAxNC4zbC03OS42IDQwYy03LjMgMy42LTE2LjEgMS4zLTIwLjYtNS41cy0zLjEtMTUuOSAzLjEtMjEuMUwxNTkgMjA4IDEyNS44IDE4MC4zYy02LjItNS4yLTcuNi0xNC4zLTMuMS0yMS4xem0yNjMuNiAyMS4xTDM1MyAyMDggMzg2LjIgMjM1LjdjNi4yIDUuMiA3LjYgMTQuMyAzLjEgMjEuMXMtMTMuMyA5LjItMjAuNiA1LjVsLTc5LjYtNDBjLTUuNC0yLjctOC44LTguMi04LjgtMTQuM3MzLjQtMTEuNiA4LjgtMTQuM2w3OS42LTQwYzcuMy0zLjYgMTYuMS0xLjMgMjAuNiA1LjVzMy4xIDE1LjktMy4xIDIxLjF6Il19LGFOdD1JZ2UsQWdlPXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImNpcmNsZS11c2VyIixpY29uOls1MTIsNTEyLFs2MjE0MiwidXNlci1jaXJjbGUiXSwiZjJiZCIsIk00MDYuNSAzOTkuNkMzODcuNCAzNTIuOSAzNDEuNSAzMjAgMjg4IDMyMGwtNjQgMGMtNTMuNSAwLTk5LjQgMzIuOS0xMTguNSA3OS42LTM1LjYtMzcuMy01Ny41LTg3LjktNTcuNS0xNDMuNiAwLTExNC45IDkzLjEtMjA4IDIwOC0yMDhzMjA4IDkzLjEgMjA4IDIwOGMwIDU1LjctMjEuOSAxMDYuMi01Ny41IDE0My42em0tNDAuMSAzMi43QzMzNC40IDQ1Mi40IDI5Ni42IDQ2NCAyNTYgNDY0cy03OC40LTExLjYtMTEwLjUtMzEuN2M3LjMtMzYuNyAzOS43LTY0LjMgNzguNS02NC4zbDY0IDBjMzguOCAwIDcxLjIgMjcuNiA3OC41IDY0LjN6TTI1NiA1MTJhMjU2IDI1NiAwIDEgMCAwLTUxMiAyNTYgMjU2IDAgMSAwIDAgNTEyem0wLTI3MmE0MCA0MCAwIDEgMSAwLTgwIDQwIDQwIDAgMSAxIDAgODB6bS04OC00MGE4OCA4OCAwIDEgMCAxNzYgMCA4OCA4OCAwIDEgMCAtMTc2IDB6Il19LHNOdD1BZ2UsTmdlPXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6InJlY3RhbmdsZS1saXN0IixpY29uOls1MTIsNTEyLFsibGlzdC1hbHQiXSwiZjAyMiIsIk02NCAxMTJjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDI1NmMwIDguOCA3LjIgMTYgMTYgMTZsMzg0IDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMjU2YzAtOC44LTcuMi0xNi0xNi0xNkw2NCAxMTJ6TTAgMTI4QzAgOTIuNyAyOC43IDY0IDY0IDY0bDM4NCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjU2YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ0OGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCAxMjh6TTE2MCAzMjBhMzIgMzIgMCAxIDEgLTY0IDAgMzIgMzIgMCAxIDEgNjQgMHptLTMyLTk2YTMyIDMyIDAgMSAxIDAtNjQgMzIgMzIgMCAxIDEgMCA2NHptMTA0LTU2bDE2MCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0xNjAgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHptMCAxMjhsMTYwIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTE2MCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0eiJdfSxpTnQ9TmdlLFJnZT17cHJlZml4OiJmYXIiLGljb25OYW1lOiJoYW5kIixpY29uOls1MTIsNTEyLFsxMjkzMDYsOTk5NSwiaGFuZC1wYXBlciJdLCJmMjU2IiwiTTI1Ni41IDBjLTI1LjMgMC00Ny4yIDE0LjctNTcuNiAzNi03LTIuNi0xNC41LTQtMjIuNC00LTM1LjMgMC02NCAyOC43LTY0IDY0bDAgMTY1LjUtMi43LTIuN2MtMjUtMjUtNjUuNS0yNS05MC41IDBzLTI1IDY1LjUgMCA5MC41TDEwNyA0MzdjNDggNDggMTEzLjEgNzUgMTgxIDc1bDE2LjUgMGMxLjUgMCAzLS4xIDQuNS0uNCA5MS43LTYuMiAxNjUtNzkuNCAxNzEuMS0xNzEuMSAuMy0xLjUgLjQtMyAuNC00LjVsMC0xNzZjMC0zNS4zLTI4LjctNjQtNjQtNjQtNS41IDAtMTAuOSAuNy0xNiAybDAtMmMwLTM1LjMtMjguNy02NC02NC02NC03LjkgMC0xNS40IDEuNC0yMi40IDQtMTAuNC0yMS4zLTMyLjMtMzYtNTcuNi0zNnptLTE2IDk2LjFsMC0uMSAwLTMyYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZsMCAxNjhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTEzNmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2bDAgMTM2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC03MmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2bDAgMTcyLjljLS4xIC42LS4xIDEuMy0uMiAxLjktMy40IDY5LjctNTkuMyAxMjUuNi0xMjkgMTI5LS42IDAtMS4zIC4xLTEuOSAuMkwyODggNDY0QzIzMi45IDQ2NCAxODAgNDQyLjEgMTQxIDQwMy4xTDUzLjIgMzE1LjNjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMGw0My43IDQzLjdjNi45IDYuOSAxNy4yIDguOSAyNi4yIDUuMnMxNC44LTEyLjUgMTQuOC0yMi4ybDAtMjIzLjRjMC04LjggNy4yLTE2IDE2LTE2IDguOCAwIDE2IDcuMSAxNiAxNS45bDAgMTM2LjFjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTEzNS45eiJdfSxyTnQ9UmdlLG9OdD17cHJlZml4OiJmYXIiLGljb25OYW1lOiJ0aHVtYnMtdXAiLGljb246WzUxMiw1MTIsWzEyODA3Nyw2MTU3NV0sImYxNjQiLCJNMTcxLjUgMzguOEMxOTIuMyA0IDIzNi41LTEwIDI3NCA3LjZsNy4yIDMuOEMzMTYgMzIuMyAzMzAgNzYuNSAzMTIuNCAxMTRsMCAwLTE0LjEgMzAgMTA5LjcgMCA3LjQgLjRjMzYuMyAzLjcgNjQuNiAzNC40IDY0LjYgNzEuNiAwIDEzLjItMy42IDI1LjQtOS44IDM2IDYuMSAxMC42IDkuNyAyMi44IDkuOCAzNiAwIDE4LjMtNi45IDM0LjgtMTggNDcuNSAxLjMgNS4zIDIgMTAuOCAyIDE2LjUgMCAyNS4xLTEyLjkgNDctMzIuMiA1OS45LTEuOSAzNS41LTI5LjQgNjQuMi02NC40IDY3LjdsLTcuNCAuNC0xMDQuMSAwYy0xOCAwLTM1LjktMy40LTUyLjYtOS45bC03LjEtMy0uNy0uMy02LjYtMy4yLS43LS4zLTEyLjItNi41Yy0xMi4zLTYuNS0yMy4zLTE0LjctMzIuOS0yNC4xLTQuMSAyNi45LTI3LjMgNDcuNC01NS4zIDQ3LjRsLTMyIDBjLTMwLjkgMC01Ni0yNS4xLTU2LTU2TDAgMjAwYzAtMzAuOSAyNS4xLTU2IDU2LTU2bDMyIDBjMTAuOCAwIDIwLjkgMy4xIDI5LjUgOC41bDUwLjEtMTA2LjUgLjYtMS4yIDIuNy01IC42LS45ek01NiAxOTJjLTQuNCAwLTggMy42LTggOGwwIDIyNGMwIDQuNCAzLjYgOCA4IDhsMzIgMGM0LjQgMCA4LTMuNiA4LThsMC0yMjRjMC00LjQtMy42LTgtOC04bC0zMiAwek0yNTMuNiA1MWMtMTQuOC02LjktMzIuMy0xLjYtNDAuNyAxMmwtMi4yIDQtNTYuOCAxMjAuOWMtMy41IDcuNS01LjUgMTUuNS02IDIzLjdsLS4xIDQuMiAwIDExMi45IC4yIDcuOWMyLjQgMzIuNyAyMS40IDYyLjEgNTAuNyA3Ny43bDExLjUgNi4xIDYuMyAzLjFjMTIuNCA1LjYgMjUuOCA4LjUgMzkuNCA4LjVsMTA0LjEgMCAyLjQtLjFjMTIuMS0xLjIgMjEuNi0xMS41IDIxLjYtMjMuOWwtLjItMi42Yy0uMS0uOS0uMi0xLjctLjQtMi42LTIuNy0xMi4xIDQuMy0yNC4yIDE2LTI4IDkuNy0zLjEgMTYuNi0xMi4yIDE2LjYtMjIuOCAwLTQuMy0xLjEtOC4yLTMuMS0xMS44LTYuMy0xMS4xLTIuOC0yNS4yIDgtMzIgNi44LTQuMyAxMS4yLTExLjggMTEuMi0yMC4yIDAtNy4xLTMuMS0xMy41LTguMi0xOC01LjItNC42LTguMi0xMS4xLTguMi0xOHMzLTEzLjQgOC4yLTE4YzUuMS00LjUgOC4yLTEwLjkgOC4yLTE4bC0uMS0yLjRjLTEuMS0xMS4zLTEwLjEtMjAuMy0yMS40LTIxLjRsLTIuNC0uMS0xNDcuNSAwYy04LjIgMC0xNS44LTQuMi0yMC4yLTExLjEtNC40LTYuOS01LTE1LjctMS41LTIzLjFMMjY5IDkzLjZjNy0xNSAxLjQtMzIuNy0xMi41LTQxTDI1My42IDUxeiJdfSxuTnQ9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiYnVpbGRpbmciLGljb246WzM4NCw1MTIsWzEyNzk3MCw2MTY4N10sImYxYWQiLCJNNjQgNDhjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDM4NGMwIDguOCA3LjIgMTYgMTYgMTZsODAgMCAwLTgwYzAtMTcuNyAxNC4zLTMyIDMyLTMybDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA4MCA4MCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTM4NGMwLTguOC03LjItMTYtMTYtMTZMNjQgNDh6TTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwTDMyMCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzg0YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA2NHptOTYgNDhjMC04LjggNy4yLTE2IDE2LTE2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMnpNMjQwIDk2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZ6TTk2IDI0MGMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyem0xNDQtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNnoiXX0sbE50PXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImNoZXNzLXJvb2siLGljb246WzM4NCw1MTIsWzk4MjBdLCJmNDQ3IiwiTTM1MiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMTM4LjdjMCAxMy44LTQuNSAyNy4zLTEyLjggMzguNGwtMzUuMiA0Ni45IDAgMTEyIDQwLjggNjguMWM0LjcgNy44IDcuMiAxNi43IDcuMiAyNS44IDAgMjcuNy0yMi40IDUwLjEtNTAuMSA1MC4xTDUwLjEgNTEyYy0yNy43IDAtNTAuMS0yMi40LTUwLjEtNTAuMSAwLTkuMSAyLjUtMTggNy4yLTI1LjhMNDggMzY4IDQ4IDI1NiAxMi44IDIwOS4xQzQuNSAxOTggMCAxODQuNSAwIDE3MC43TDAgMzJDMCAxNC4zIDE0LjMgMCAzMiAwTDM1MiAwek00OC4zIDQ2MC44bC0uMyAxLjFjMCAxLjIgMSAyLjEgMi4xIDIuMWwyODMuOCAwYzEuMiAwIDIuMS0xIDIuMS0yLjFsLS4zLTEuMS0zNi41LTYwLjgtMjE0LjQgMC0zNi41IDYwLjh6TTQ4IDE3MC43YzAgMi42IC42IDUuMSAxLjggNy40bDEuNCAyLjIgMCAwIDM1LjIgNDYuOSA5LjYgMTIuOCAwIDExMiAxOTIgMCAwLTExMiA5LjYtMTIuOCAzNS4yLTQ2LjkgMCAwIDEuNC0yLjJjMS4yLTIuMyAxLjgtNC44IDEuOC03LjRsMC0xMjIuNy02NCAwIDAgMjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC0yNC02NCAwIDAgMjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC0yNC02NCAwIDAgMTIyLjd6Il19LE9nZT17cHJlZml4OiJmYXIiLGljb25OYW1lOiJjaXJjbGUtcXVlc3Rpb24iLGljb246WzUxMiw1MTIsWzYyMTA4LCJxdWVzdGlvbi1jaXJjbGUiXSwiZjA1OSIsIk00NjQgMjU2YTIwOCAyMDggMCAxIDAgLTQxNiAwIDIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDAgMjU2IDI1NiAwIDEgMSAtNTEyIDB6bTI1Ni04MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzIgMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGMwIDQ3LjItMzYgNjcuMi01NiA3NC41bDAgMy44YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtOC4xYzAtMjAuNSAxNC44LTM1LjIgMzAuMS00MC4yIDYuNC0yLjEgMTMuMi01LjUgMTguMi0xMC4zIDQuMy00LjIgNy43LTEwIDcuNy0xOS42IDAtMTcuNy0xNC4zLTMyLTMyLTMyek0yMjQgMzY4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6Il19LGNOdD1PZ2UsZE50PXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImZpbGUiLGljb246WzM4NCw1MTIsWzEyODE5NiwxMjg0NTksNjE0NjJdLCJmMTViIiwiTTE3NiA0OEw2NCA0OGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzg0YzAgOC44IDcuMiAxNiAxNiAxNmwyNTYgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0yNDAtODggMGMtMzkuOCAwLTcyLTMyLjItNzItNzJsMC04OHpNMzE2LjEgMTYwTDIyNCA2Ny45IDIyNCAxMzZjMCAxMy4zIDEwLjcgMjQgMjQgMjRsNjguMSAwek0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEwxOTcuNSAwYzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43TDM2NS4zIDE0MS4zYzEyIDEyIDE4LjcgMjguMyAxOC43IDQ1LjNMMzg0IDQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgNjR6Il19LEZnZT17cHJlZml4OiJmYXIiLGljb25OYW1lOiJmYWNlLXNhZC1jcnkiLGljb246WzUxMiw1MTIsWzEyODU1Nywic2FkLWNyeSJdLCJmNWIzIiwiTTQwMCA0MDYuMUw0MDAgMjg4YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0bDAgMTUyLjZjLTI4LjcgMTUtNjEuNCAyMy40LTk2IDIzLjRzLTY3LjMtOC41LTk2LTIzLjRMMTYwIDI4OGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDExOC4xQzcyLjYgMzY4LjIgNDggMzE1IDQ4IDI1NiA0OCAxNDEuMSAxNDEuMSA0OCAyNTYgNDhzMjA4IDkzLjEgMjA4IDIwOGMwIDU5LTI0LjYgMTEyLjItNjQgMTUwLjF6TTI1NiA1MTJhMjU2IDI1NiAwIDEgMCAwLTUxMiAyNTYgMjU2IDAgMSAwIDAgNTEyek0xNTIgMTk2bDE2IDBjMTEgMCAyMCA5IDIwIDIwczkgMjAgMjAgMjAgMjAtOSAyMC0yMGMwLTMzLjEtMjYuOS02MC02MC02MGwtMTYgMGMtMzMuMSAwLTYwIDI2LjktNjAgNjAgMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjAgOS0yMCAyMC0yMHptMTcyIDIwYzAtMTEgOS0yMCAyMC0yMGwxNiAwYzExIDAgMjAgOSAyMCAyMHM5IDIwIDIwIDIwIDIwLTkgMjAtMjBjMC0zMy4xLTI2LjktNjAtNjAtNjBsLTE2IDBjLTMzLjEgMC02MCAyNi45LTYwIDYwIDAgMTEgOSAyMCAyMCAyMHMyMC05IDIwLTIwek0yMDggMzM2bDAgMzJjMCAyNi41IDIxLjUgNDggNDggNDhzNDgtMjEuNSA0OC00OGwwLTMyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4eiJdfSx1TnQ9RmdlLHBOdD17cHJlZml4OiJmYXIiLGljb25OYW1lOiJjYWxlbmRhci1taW51cyIsaWNvbjpbNDQ4LDUxMixbXSwiZjI3MiIsIk0xMjAgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDQwIDE2MCAwIDAtNDBjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDQwIDMyIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAyODhjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NGwzMiAwIDAtNDBjMC0xMy4zIDEwLjctMjQgMjQtMjR6bTAgMTEybC01NiAwYy04LjggMC0xNiA3LjItMTYgMTZsMCAyODhjMCA4LjggNy4yIDE2IDE2IDE2bDMyMCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTI4OGMwLTguOC03LjItMTYtMTYtMTZsLTI2NCAwem0zMiAxMzZsMTQ0IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTE0NCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0eiJdfSxCZ2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiZmFjZS10aXJlZCIsaWNvbjpbNTEyLDUxMixbMTI4NTU1LCJ0aXJlZCJdLCJmNWM4IiwiTTQ2NCAyNTZhMjA4IDIwOCAwIDEgMCAtNDE2IDAgMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMCAyNTYgMjU2IDAgMSAxIC01MTIgMHptMTc2LjUgNjQuM0MxOTYuMSAzMDIuMSAyMjMuOCAyODggMjU2IDI4OHM1OS45IDE0LjEgNzkuNSAzMi4zYzE5IDE3LjggMzIuNSA0MS43IDMyLjUgNjMuNyAwIDUuNC0yLjcgMTAuNC03LjIgMTMuNHMtMTAuMiAzLjQtMTUuMiAxLjNsLTE3LjItNy41Yy0yMi44LTEwLTQ3LjUtMTUuMS03Mi40LTE1LjFzLTQ5LjYgNS4yLTcyLjQgMTUuMWwtMTcuMiA3LjVjLTQuOSAyLjItMTAuNyAxLjctMTUuMi0xLjNzLTcuMi04LTcuMi0xMy40YzAtMjIgMTMuNS00NS45IDMyLjUtNjMuN3pNMTIyLjYgMTU5LjJjNC41LTYuOCAxMy4zLTkuMiAyMC42LTUuNWw3OS42IDQwYzUuNCAyLjcgOC44IDguMiA4LjggMTQuM3MtMy40IDExLjYtOC44IDE0LjNsLTc5LjYgNDBjLTcuMyAzLjYtMTYuMSAxLjMtMjAuNi01LjVzLTMuMS0xNS45IDMuMS0yMS4xTDE1OSAyMDggMTI1LjggMTgwLjNjLTYuMi01LjItNy42LTE0LjMtMy4xLTIxLjF6bTI2My42IDIxLjFMMzUzIDIwOCAzODYuMiAyMzUuN2M2LjIgNS4yIDcuNiAxNC4zIDMuMSAyMS4xcy0xMy4zIDkuMi0yMC42IDUuNWwtNzkuNi00MGMtNS40LTIuNy04LjgtOC4yLTguOC0xNC4zczMuNC0xMS42IDguOC0xNC4zbDc5LjYtNDBjNy4zLTMuNiAxNi4xLTEuMyAyMC42IDUuNXMzLjEgMTUuOS0zLjEgMjEuMXoiXX0saE50PUJnZSxmTnQ9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiaGFuZC1wb2ludC1yaWdodCIsaWNvbjpbNTEyLDUxMixbXSwiZjBhNCIsIk00NDggMTI4bC0xNzcuNiAwYzEgNS4yIDEuNiAxMC41IDEuNiAxNmwwIDE2IDE3NiAwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2ek0yMjQgMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMybC0yNCAwYy02Ni4zIDAtMTIwIDUzLjctMTIwIDEyMGwwIDQ4YzAgNTIuNSAzMy43IDk3LjEgODAuNyAxMTMuNC0uNS0zLjEtLjctNi4yLS43LTkuNCAwLTIwIDkuMi0zNy45IDIzLjYtNDkuNy00LjktOS03LjYtMTkuNC03LjYtMzAuMyAwLTE1LjEgNS4zLTI5IDE0LTQwLTguOC0xMS0xNC0yNC45LTE0LTQwbDAtNDBjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDQwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZsMC04MHpNMTkyIDY0bDAgMGMxOCAwIDM0LjYgNiA0OCAxNmwyMDggMGMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NGwtODIgMGMxLjMgNS4xIDIgMTAuNSAyIDE2IDAgMjUuMy0xNC43IDQ3LjItMzYgNTcuNiAyLjYgNyA0IDE0LjUgNCAyMi40IDAgMjAtOS4yIDM3LjktMjMuNiA0OS43IDQuOSA5IDcuNiAxOS40IDcuNiAzMC4zIDAgMzUuMy0yOC43IDY0LTY0IDY0bC04OCAwQzc1LjIgNDQ4IDAgMzcyLjggMCAyODBsMC00OEMwIDEzOS4yIDc1LjIgNjQgMTY4IDY0bDI0IDB6bTY0IDMzNmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmwtNjQgMGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmw2NCAwem0xNi0xNzZjMCA1LjUtLjcgMTAuOS0yIDE2bDM0IDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTMyIDAgMCAxNnptLTI0IDY0bC00MCAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDY0IDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTI0IDB6Il19LEhnZT17cHJlZml4OiJmYXIiLGljb25OYW1lOiJjaXJjbGUtdXAiLGljb246WzUxMiw1MTIsWzYxNDY3LCJhcnJvdy1hbHQtY2lyY2xlLXVwIl0sImYzNWIiLCJNMjU2IDQ4YTIwOCAyMDggMCAxIDEgMCA0MTYgMjA4IDIwOCAwIDEgMSAwLTQxNnptMCA0NjRhMjU2IDI1NiAwIDEgMCAwLTUxMiAyNTYgMjU2IDAgMSAwIDAgNTEyem0xMS4zLTM4Ny4zYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMGwtMTA0IDEwNGMtNC42IDQuNi01LjkgMTEuNS0zLjUgMTcuNHM4LjMgOS45IDE0LjggOS45bDcyIDAgMCAxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRsMTYgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNGwwLTEwNCA3MiAwYzYuNSAwIDEyLjMtMy45IDE0LjgtOS45czEuMS0xMi45LTMuNS0xNy40bC0xMDQtMTA0eiJdfSxtTnQ9SGdlLGdOdD17cHJlZml4OiJmYXIiLGljb25OYW1lOiJoYW5kLXNjaXNzb3JzIixpY29uOls1MTIsNTEyLFtdLCJmMjU3IiwiTS4yIDI3Ni4zYy0xLjItMzUuMyAyNi40LTY1IDYxLjctNjYuMmwzLjMtLjEtOC4yLTEuOEMyMi41IDIwMC41IC43IDE2Ni4zIDguMyAxMzEuOFM1MC4yIDc1LjUgODQuNyA4My4ybDE3MyAzOC4zYzIuMy0yLjkgNC42LTUuNyA3LjEtOC41bDE4LjQtMjAuM0MyOTkuOSA3NC41IDMyMy41IDY0IDM0OC4zIDY0bDEwLjIgMGM1NC4xIDAgMTA0LjEgMjguNyAxMzEuMyA3NS40bDEuNSAyLjZjMTMuNiAyMy4yIDIwLjcgNDkuNyAyMC43IDc2LjZMNTEyIDM0NGMwIDY2LjMtNTMuNyAxMjAtMTIwIDEyMGwtMTA0IDBjLTM1LjMgMC02NC0yOC43LTY0LTY0IDAtMi44IC4yLTUuNiAuNS04LjMtMTkuNC0xMS0zMi41LTMxLjgtMzIuNS01NS43IDAtLjggMC0xLjYgMC0yLjRMNjYuNCAzMzhjLTM1LjMgMS4yLTY1LTI2LjQtNjYuMi02MS43em02My40LTE4LjJjLTguOCAuMy0xNS43IDcuNy0xNS40IDE2LjZzNy43IDE1LjcgMTYuNSAxNS40bDE2MS41LTUuNmM5LjgtLjMgMTguNyA1LjMgMjIuNyAxNC4yczIuMiAxOS4zLTQuNSAyNi40Yy0yLjggMi45LTQuNCA2LjctNC40IDExIDAgOC44IDcuMiAxNiAxNiAxNiA5LjEgMCAxNy40IDUuMSAyMS41IDEzLjNzMy4yIDE3LjktMi4zIDI1LjFjLTIgMi43LTMuMiA2LTMuMiA5LjYgMCA4LjggNy4yIDE2IDE2IDE2bDEwNCAwYzM5LjggMCA3Mi0zMi4yIDcyLTcybDAtMTI1LjRjMC0xOC40LTQuOS0zNi41LTE0LjItNTIuNGwtMS41LTIuNmMtMTguNi0zMi01Mi44LTUxLjYtODkuOC01MS42bC0xMC4yIDBjLTExLjMgMC0yMiA0LjgtMjkuNiAxMy4xbDAgMC0xOC40IDIwLjNjLS42IC42LTEuMSAxLjMtMS43IDEuOWw1NyAxMy4yYzguNiAyIDE0IDEwLjYgMTIgMTkuMnMtMTAuNiAxNC0xOS4yIDEyTDI2Mi44IDE3MS44IDc0LjMgMTMwYy04LjYtMS45LTE3LjIgMy41LTE5LjEgMTIuMnMzLjUgMTcuMiAxMi4yIDE5LjFsMTg3LjUgNDEuNmMxMC4yIDIuMyAxNy44IDEwLjkgMTguNyAyMS40bC4xIDFjLjYgNi42LTEuNSAxMy4xLTUuOCAxOC4xcy0xMC42IDcuOS0xNy4yIDguMkw2My42IDI1OC4xeiJdfSxiTnQ9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiZ2VtIixpY29uOls1MTIsNTEyLFsxMjgxNDJdLCJmM2E1IiwiTTE2OC41IDcybDg3LjUgOTMgODcuNS05My0xNzUgMHpNMzgzLjkgOTkuMWwtNzIuMyA3Ni45IDEyOSAwLTU2LjYtNzYuOXptNTAgMTI0LjlMNzguMSAyMjQgMjU2IDQyMC4zIDQzMy45IDIyNHpNNzEuNSAxNzZsMTI5IDAtNzIuMy03Ni45LTU2LjYgNzYuOXptNDM0LjMgNDAuMWwtMjMyIDI1NmMtNC41IDUtMTEgNy45LTE3LjggNy45cy0xMy4yLTIuOS0xNy44LTcuOWwtMjMyLTI1NmMtNy43LTguNS04LjMtMjEuMi0xLjUtMzAuNGwxMTItMTUyYzQuNS02LjEgMTEuNy05LjggMTkuMy05LjhsMjQwIDBjNy42IDAgMTQuOCAzLjYgMTkuMyA5LjhsMTEyIDE1MmM2LjggOS4yIDYuMSAyMS45LTEuNSAzMC40eiJdfSxLaz17cHJlZml4OiJmYXIiLGljb25OYW1lOiJyZWN0YW5nbGUteG1hcmsiLGljb246WzUxMiw1MTIsWzYyMTY0LCJyZWN0YW5nbGUtdGltZXMiLCJ0aW1lcy1yZWN0YW5nbGUiLCJ3aW5kb3ctY2xvc2UiXSwiZjQxMCIsIk02NCAxMTJjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDI1NmMwIDguOCA3LjIgMTYgMTYgMTZsMzg0IDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMjU2YzAtOC44LTcuMi0xNi0xNi0xNkw2NCAxMTJ6TTAgMTI4QzAgOTIuNyAyOC43IDY0IDY0IDY0bDM4NCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjU2YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ0OGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCAxMjh6bTMzNC4xIDQ5LjljOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTQ0LjEgNDQuMSA0NC4xIDQ0LjFjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNDQuMS00NC4xLTQ0LjEgNDQuMWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw0NC4xLTQ0LjEtNDQuMS00NC4xYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsNDQuMSA0NC4xIDQ0LjEtNDQuMWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHoiXX0sdk50PUtrLHhOdD1Layx5TnQ9S2ssZWY9e3ByZWZpeDoiZmFyIixpY29uTmFtZToidHJhc2gtY2FuIixpY29uOls0NDgsNTEyLFs2MTQ2MCwidHJhc2gtYWx0Il0sImYyZWQiLCJNMTY2LjItMTZjLTEzLjMgMC0yNS4zIDguMy0zMCAyMC44TDEyMCA0OCAyNCA0OEMxMC43IDQ4IDAgNTguNyAwIDcyUzEwLjcgOTYgMjQgOTZsNDAwIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTk2IDAtMTYuMi00My4yQzMwNy4xLTcuNyAyOTUuMi0xNiAyODEuOC0xNkwxNjYuMi0xNnpNMzIgMTQ0bDAgMzA0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDI1NiAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzA0LTQ4IDAgMCAzMDRjMCA4LjgtNy4yIDE2LTE2IDE2TDk2IDQ2NGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzA0LTQ4IDB6bTE2MCA3MmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDE3NmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtMTc2em0xMTIgMGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDE3NmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtMTc2eiJdfSx3TnQ9ZWYsa050PXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImxpZmUtcmluZyIsaWNvbjpbNTEyLDUxMixbXSwiZjFjZCIsIk0zODUuMSA0MTkuMUMzNDkuNyA0NDcuMiAzMDQuOCA0NjQgMjU2IDQ2NHMtOTMuNy0xNi44LTEyOS4xLTQ0LjlsODAuNC04MC40YzE0LjMgOC40IDMxIDEzLjMgNDguOCAxMy4zczM0LjUtNC44IDQ4LjgtMTMuM2w4MC40IDgwLjR6bTY4LjEgLjJDNDg5LjkgMzc0LjkgNTEyIDMxOC4xIDUxMiAyNTZTNDg5LjkgMTM3LjEgNDUzLjIgOTIuN0w0NjUgODFjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMEw0MTkuMyA1OC44QzM3NC45IDIyLjEgMzE4LjEgMCAyNTYgMFMxMzcuMSAyMi4xIDkyLjcgNTguOEw4MSA0N2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBTMzcuNyA3MS42IDQ3IDgxTDU4LjggOTIuN0MyMi4xIDEzNy4xIDAgMTkzLjkgMCAyNTZTMjIuMSAzNzQuOSA1OC44IDQxOS4zTDQ3IDQzMWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDExLjgtMTEuOEMxMzcuMSA0ODkuOSAxOTMuOSA1MTIgMjU2IDUxMnMxMTguOS0yMi4xIDE2My4zLTU4LjhMNDMxIDQ2NWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTExLjgtMTEuOHptLTM0LjEtMzQuMWwtODAuNC04MC40YzguNC0xNC4zIDEzLjMtMzEgMTMuMy00OC44cy00LjgtMzQuNS0xMy4zLTQ4LjhsODAuNC04MC40QzQ0Ny4yIDE2Mi4zIDQ2NCAyMDcuMiA0NjQgMjU2cy0xNi44IDkzLjctNDQuOSAxMjkuMXpNMzg1LjEgOTIuOWwtODAuNCA4MC40Yy0xNC4zLTguNC0zMS0xMy4zLTQ4LjgtMTMuM3MtMzQuNSA0LjgtNDguOCAxMy4zTDEyNi45IDkyLjlDMTYyLjMgNjQuOCAyMDcuMiA0OCAyNTYgNDhzOTMuNyAxNi44IDEyOS4xIDQ0Ljl6TTE3My4zIDMwNC44TDkyLjkgMzg1LjFDNjQuOCAzNDkuNyA0OCAzMDQuOCA0OCAyNTZzMTYuOC05My43IDQ0LjktMTI5LjFsODAuNCA4MC40Yy04LjQgMTQuMy0xMy4zIDMxLTEzLjMgNDguOHM0LjggMzQuNSAxMy4zIDQ4Ljh6TTIwOCAyNTZhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHoiXX0sU050PXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImNvcHlyaWdodCIsaWNvbjpbNTEyLDUxMixbMTY5XSwiZjFmOSIsIk0yNTYgNDhhMjA4IDIwOCAwIDEgMSAwIDQxNiAyMDggMjA4IDAgMSAxIDAtNDE2em0wIDQ2NGEyNTYgMjU2IDAgMSAwIDAtNTEyIDI1NiAyNTYgMCAxIDAgMCA1MTJ6TTIwNS4xIDMwNi45Yy0yOC4xLTI4LjEtMjguMS03My43IDAtMTAxLjhzNzMuNy0yOC4xIDEwMS44IDBjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45Yy00Ni45LTQ2LjktMTIyLjgtNDYuOS0xNjkuNyAwcy00Ni45IDEyMi44IDAgMTY5LjcgMTIyLjggNDYuOSAxNjkuNyAwYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBjLTI4LjEgMjguMS03My43IDI4LjEtMTAxLjggMHoiXX0scWdlPXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImNpcmNsZS1sZWZ0IixpY29uOls1MTIsNTEyLFs2MTg0MCwiYXJyb3ctYWx0LWNpcmNsZS1sZWZ0Il0sImYzNTkiLCJNNDggMjU2YTIwOCAyMDggMCAxIDEgNDE2IDAgMjA4IDIwOCAwIDEgMSAtNDE2IDB6bTQ2NCAwYTI1NiAyNTYgMCAxIDAgLTUxMiAwIDI1NiAyNTYgMCAxIDAgNTEyIDB6TTEyNC43IDI0NC43Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNmwxMDQgMTA0YzQuNiA0LjYgMTEuNSA1LjkgMTcuNCAzLjVzOS45LTguMyA5LjktMTQuOGwwLTcyIDEwNCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0bDAtMTZjMC0xMy4zLTEwLjctMjQtMjQtMjRsLTEwNCAwIDAtNzJjMC02LjUtMy45LTEyLjMtOS45LTE0LjhzLTEyLjktMS4xLTE3LjQgMy41bC0xMDQgMTA0eiJdfSxfTnQ9cWdlLE1OdD17cHJlZml4OiJmYXIiLGljb25OYW1lOiJjYWxlbmRhciIsaWNvbjpbNDQ4LDUxMixbMTI4MTk3LDEyODE5OF0sImYxMzMiLCJNMTIwIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRsMCA0MCAxNjAgMCAwLTQwYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCA0MCAzMiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjg4YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCAxMjhDMCA5Mi43IDI4LjcgNjQgNjQgNjRsMzIgMCAwLTQwYzAtMTMuMyAxMC43LTI0IDI0LTI0em0wIDExMmwtNTYgMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgNDggMzUyIDAgMC00OGMwLTguOC03LjItMTYtMTYtMTZsLTI2NCAwek00OCAyMjRsMCAxOTJjMCA4LjggNy4yIDE2IDE2IDE2bDMyMCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTE5Mi0zNTIgMHoiXX0samdlPXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImZhY2UtZnJvd24tb3BlbiIsaWNvbjpbNTEyLDUxMixbMTI4NTUwLCJmcm93bi1vcGVuIl0sImY1N2EiLCJNNDY0IDI1NmEyMDggMjA4IDAgMSAwIC00MTYgMCAyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwIDI1NiAyNTYgMCAxIDEgLTUxMiAwek0xODIuNCAzODIuNWMtMTIuNCA1LjItMjYuNS00LjEtMjEuMS0xNi40IDE2LTM2LjYgNTIuNC02Mi4xIDk0LjgtNjIuMXM3OC44IDI1LjYgOTQuOCA2Mi4xYzUuNCAxMi4zLTguNyAyMS42LTIxLjEgMTYuNC0yMi40LTkuNS00Ny40LTE0LjgtNzMuNy0xNC44cy01MS4zIDUuMy03My43IDE0Ljh6TTE0NCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHoiXX0sek50PWpnZSxWZ2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiY2hhcnQtYmFyIixpY29uOls1MTIsNTEyLFsiYmFyLWNoYXJ0Il0sImYwODAiLCJNNDggNTZjMC0xMy4zLTEwLjctMjQtMjQtMjRTMCA0Mi43IDAgNTZMMCA0MDBjMCA0NC4yIDM1LjggODAgODAgODBsNDA4IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRMODAgNDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMkw0OCA1NnptMTA0IDcybDIwOCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0TDE1MiA4MGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNHptMCA2NGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwxNDQgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtMTQ0IDB6bTAgMTEyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDI3MiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0yNzIgMHoiXX0sQ050PVZnZSxZaz17cHJlZml4OiJmYXIiLGljb25OYW1lOiJob3VzZSIsaWNvbjpbNTEyLDUxMixbMTI3OTY4LDYzNDk4LDYzNTAwLCJob21lIiwiaG9tZS1hbHQiLCJob21lLWxnLWFsdCJdLCJmMDE1IiwiTTI0MCA2LjFjOS4xLTguMiAyMi45LTguMiAzMiAwbDIzMiAyMDhjOS45IDguOCAxMC43IDI0IDEuOCAzMy45cy0yNCAxMC43LTMzLjkgMS44bC04LTcuMiAwIDIwNS4zYzAgMzUuMy0yOC43IDY0LTY0IDY0bC0yODggMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRsMC0yMDUuMy04IDcuMmMtOS45IDguOC0yNSA4LTMzLjktMS44cy04LTI1IDEuOC0zMy45TDI0MCA2LjF6bTE2IDUwLjFMOTYgMTk5LjcgOTYgNDQ4YzAgOC44IDcuMiAxNiAxNiAxNmw0OCAwIDAtMTA0YzAtMzkuOCAzMi4yLTcyIDcyLTcybDQ4IDBjMzkuOCAwIDcyIDMyLjIgNzIgNzJsMCAxMDQgNDggMGM4LjggMCAxNi03LjIgMTYtMTZsMC0yNDguMy0xNjAtMTQzLjR6TTIwOCA0NjRsOTYgMCAwLTEwNGMwLTEzLjMtMTAuNy0yNC0yNC0yNGwtNDggMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCAxMDR6Il19LFROdD1ZaywkTnQ9WWssRE50PVlrLFVnZT17cHJlZml4OiJmYXIiLGljb25OYW1lOiJmYWNlLWZyb3duIixpY29uOls1MTIsNTEyLFs5Nzg1LCJmcm93biJdLCJmMTE5IiwiTTQ2NCAyNTZhMjA4IDIwOCAwIDEgMCAtNDE2IDAgMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMCAyNTYgMjU2IDAgMSAxIC01MTIgMHpNMzM0LjcgMzg0LjZDMzE5LjcgMzY5IDI5My42IDM1MiAyNTYgMzUycy02My43IDE3LTc4LjcgMzIuNmMtOS4yIDkuNi0yNC40IDkuOS0zMy45IC43cy05LjktMjQuNC0uNy0zMy45YzIyLjEtMjMgNjAtNDcuNCAxMTMuMy00Ny40czkxLjIgMjQuNCAxMTMuMyA0Ny40YzkuMiA5LjYgOC45IDI0LjgtLjcgMzMuOXMtMjQuOCA4LjktMzMuOS0uN3pNMTQ0IDIwOGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xOTItMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0eiJdfSxMTnQ9VWdlLGVvZT17cHJlZml4OiJmYXIiLGljb25OYW1lOiJ1c2VyIixpY29uOls0NDgsNTEyLFsxMjgxMDAsNjIxNDQsNjI0NzAsInVzZXItYWx0IiwidXNlci1sYXJnZSJdLCJmMDA3IiwiTTE0NCAxMjhhODAgODAgMCAxIDEgMTYwIDAgODAgODAgMCAxIDEgLTE2MCAwem0yMDggMGExMjggMTI4IDAgMSAwIC0yNTYgMCAxMjggMTI4IDAgMSAwIDI1NiAwek00OCA0ODBjMC03MC43IDU3LjMtMTI4IDEyOC0xMjhsOTYgMGM3MC43IDAgMTI4IDU3LjMgMTI4IDEyOGwwIDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLThjMC05Ny4yLTc4LjgtMTc2LTE3Ni0xNzZsLTk2IDBDNzguOCAzMDQgMCAzODIuOCAwIDQ4MGwwIDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTh6Il19LEVOdD1lb2UsUE50PWVvZSxJTnQ9e3ByZWZpeDoiZmFyIixpY29uTmFtZToic25vd2ZsYWtlIixpY29uOls1MTIsNTEyLFsxMDA1MiwxMDA1NF0sImYyZGMiLCJNMjgwLjEtOGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDc4LjEtMjMtMjNjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsNTcgNTcgMCA3Ni41LTY2LjItMzguMi0yMC45LTc3LjhjLTMuNC0xMi44LTE2LjYtMjAuNC0yOS40LTE3Uzk1LjIgOTggOTguNyAxMTAuOGw4LjQgMzEuNS02Ny42LTM5QzI4IDk2LjYgMTMuMyAxMDAuNSA2LjcgMTEyUzQgMTM4LjIgMTUuNSAxNDQuOGw2Ny42IDM5LTMxLjUgOC40Yy0xMi44IDMuNC0yMC40IDE2LjYtMTcgMjkuNHMxNi42IDIwLjQgMjkuNCAxN2w3Ny44LTIwLjkgNjYuMiAzOC4yLTY2LjIgMzguMi03Ny44LTIwLjljLTEyLjgtMy40LTI2IDQuMi0yOS40IDE3czQuMiAyNiAxNyAyOS40bDMxLjUgOC40LTY3LjYgMzlDNCAzNzMuOCAuMSAzODguNSA2LjcgNDAwczIxLjMgMTUuNCAzMi44IDguOGw2Ny42LTM5LTguNCAzMS41Yy0zLjQgMTIuOCA0LjIgMjYgMTcgMjkuNHMyNi00LjIgMjkuNC0xN2wyMC45LTc3LjggNjYuMi0zOC4yIDAgNzYuNS01NyA1N2MtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDIzLTIzIDAgNzguMWMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtNzguMSAyMyAyM2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTU3LTU3IDAtNzYuNSA2Ni4yIDM4LjIgMjAuOSA3Ny44YzMuNCAxMi44IDE2LjYgMjAuNCAyOS40IDE3czIwLjQtMTYuNiAxNy0yOS40bC04LjQtMzEuNSA2Ny42IDM5YzExLjUgNi42IDI2LjIgMi43IDMyLjgtOC44czIuNy0yNi4yLTguOC0zMi44bC02Ny42LTM5IDMxLjUtOC40YzEyLjgtMy40IDIwLjQtMTYuNiAxNy0yOS40cy0xNi42LTIwLjQtMjkuNC0xN2wtNzcuOCAyMC45LTY2LjItMzguMiA2Ni4yLTM4LjIgNzcuOCAyMC45YzEyLjggMy40IDI2LTQuMiAyOS40LTE3cy00LjItMjYtMTctMjkuNGwtMzEuNS04LjQgNjcuNi0zOWMxMS41LTYuNiAxNS40LTIxLjMgOC44LTMyLjhzLTIxLjMtMTUuNC0zMi44LTguOGwtNjcuNiAzOSA4LjQtMzEuNWMzLjQtMTIuOC00LjItMjYtMTctMjkuNHMtMjYgNC4yLTI5LjQgMTdsLTIwLjkgNzcuOC02Ni4yIDM4LjIgMC03Ni41IDU3LTU3YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTIzIDIzIDAtNzguMXoiXX0sQU50PXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImJvb2ttYXJrIixpY29uOlszODQsNTEyLFsxMjgyNzgsNjE1OTFdLCJmMDJlIiwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwTDMyMCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgNDE3LjFjMCAyNS42LTI4LjUgNDAuOC00OS44IDI2LjZMMTkyIDQxMi44IDQ5LjggNTA3LjdDMjguNSA1MjEuOSAwIDUwNi42IDAgNDgxLjFMMCA2NHpNNjQgNDhjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDM4Ny4yIDExNy40LTc4LjJjMTYuMS0xMC43IDM3LjEtMTAuNyA1My4yIDBMMzM2IDQ1MS4yIDMzNiA2NGMwLTguOC03LjItMTYtMTYtMTZMNjQgNDh6Il19LFdnZT17cHJlZml4OiJmYXIiLGljb25OYW1lOiJzcXVhcmUtY2FyZXQtbGVmdCIsaWNvbjpbNDQ4LDUxMixbImNhcmV0LXNxdWFyZS1sZWZ0Il0sImYxOTEiLCJNNDggNDE2YzAgOC44IDcuMiAxNiAxNiAxNmwzMjAgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMjBjMC04LjgtNy4yLTE2LTE2LTE2TDY0IDgwYy04LjggMC0xNiA3LjItMTYgMTZsMCAzMjB6bTE2IDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDMyMCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MHptNjQtMjI0YzAtNi43IDIuOC0xMyA3LjctMTcuNmwxMTItMTA0YzctNi41IDE3LjItOC4yIDI1LjktNC40UzI4OCAxNDIuNSAyODggMTUybDAgMjA4YzAgOS41LTUuNyAxOC4yLTE0LjQgMjJzLTE4LjkgMi4xLTI1LjktNC40bC0xMTItMTA0Yy00LjktNC41LTcuNy0xMC45LTcuNy0xNy42eiJdfSxOTnQ9V2dlLHRvZT17cHJlZml4OiJmYXIiLGljb25OYW1lOiJoYW5kc2hha2UiLGljb246WzY0MCw1MTIsWzEyOTMwOSw2MjY2MiwiaGFuZHNoYWtlLWFsdCIsImhhbmRzaGFrZS1zaW1wbGUiXSwiZjJiNSIsIk01OTguMSA3NS40YzEwLjctNy44IDEzLjEtMjIuOCA1LjMtMzMuNXMtMjIuOC0xMy4xLTMzLjUtNS4zbC03NC41IDU0LjItOS45LTYuNkM0NjUuOCA3MSA0NDIuNiA2NCA0MTguOSA2NGwtNTkuMiAwLS40IDAtMTQzLjYgMGMtMjYuNyAwLTUyLjUgOC45LTczLjQgMjUuMUw3MC4xIDM2LjZjLTEwLjctNy44LTI1LjctNS40LTMzLjUgNS4zcy01LjQgMjUuNyA1LjMgMzMuNWw4OCA2NGM5LjYgNi45IDIyLjcgNS45IDMxLjEtMi40bDMuOS0zLjljMTMuNS0xMy41IDMxLjgtMjEuMSA1MC45LTIxLjFsNDYuMyAwLTkxLjcgOTEuN2MtMTUuNiAxNS42LTE1LjYgNDAuOSAwIDU2LjZsLjggLjhDMjE4IDMwOCAyOTQgMzA4IDM0MC45IDI2MS4xbDI3LjEtMjcuMSA5Ny44IDk3LjhjMTUuNiAxNS42IDE1LjYgNDAuOSAwIDU2LjZsLTkuOCA5LjgtMzEtMzFjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsMjggMjhjLTE3LjUgMTAuNC0zNy4yIDE2LjctNTcuNiAxOC41TDMxMyAzOTljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsMTUgMTUtMy44IDBjLTM2LjEgMC03MC43LTE0LjMtOTYuMi0zOS44TDY1IDI3OWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOUwxNjAuMiA0NDIuMWMzNC41IDM0LjUgODEuMyA1My45IDEzMC4xIDUzLjlsNTEuOCAwIDEgMSAxLTEgNS43IDBjNDguOCAwIDk1LjYtMTkuNCAxMzAuMS01My45bDE5LjktMTkuOWMxLjItMS4yIDIuMy0yLjMgMy40LTMuNSAuNy0uNSAxLjMtMS4xIDEuOS0xLjdMNjA5IDMxM2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwbC01My44IDUzLjhjLTQuMi0xMi44LTExLjMtMjQuOS0yMS41LTM1LjFMMzg1IDE4M2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBsLTQ0LjEgNDQuMWMtMjYuNSAyNi41LTY4LjUgMjgtOTYuNyA0LjZsOTguNy05OC43YzEzLjQtMTMuNCAzMS42LTIxIDUwLjYtMjEuMWw4LjUgMCAuMiAwIDUwLjggMGMxNC4yIDAgMjguMSA0LjIgMzkuOSAxMi4xTDQ4Mi43IDE0MGM4LjQgNS42IDE5LjMgNS4zIDI3LjQtLjZsODgtNjR6Il19LFJOdD10b2UsT050PXRvZSxHZ2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiZmFjZS1zbWlsZS13aW5rIixpY29uOls1MTIsNTEyLFsxMjg1MjEsInNtaWxlLXdpbmsiXSwiZjRkYSIsIk00NjQgMjU2YTIwOCAyMDggMCAxIDAgLTQxNiAwIDIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDAgMjU2IDI1NiAwIDEgMSAtNTEyIDB6bTE3Ny4zIDYzLjRDMTkyLjMgMzM1IDIxOC40IDM1MiAyNTYgMzUyczYzLjctMTcgNzguNy0zMi42YzkuMi05LjYgMjQuNC05LjkgMzMuOS0uN3M5LjkgMjQuNCAuNyAzMy45Yy0yMi4xIDIzLTYwIDQ3LjQtMTEzLjMgNDcuNHMtOTEuMi0yNC40LTExMy4zLTQ3LjRjLTkuMi05LjYtOC45LTI0LjggLjctMzMuOXMyNC44LTguOSAzMy45IC43ek0xNDQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE2NCA4YzAgMTEtOSAyMC0yMCAyMHMtMjAtOS0yMC0yMGMwLTMzLjEgMjYuOS02MCA2MC02MGwxNiAwYzMzLjEgMCA2MCAyNi45IDYwIDYwIDAgMTEtOSAyMC0yMCAyMHMtMjAtOS0yMC0yMC05LTIwLTIwLTIwbC0xNiAwYy0xMSAwLTIwIDktMjAgMjB6Il19LEZOdD1HZ2UsS2dlPXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImZhY2UtZ3Jpbi1zcXVpbnQtdGVhcnMiLGljb246WzUxMiw1MTIsWzEyOTMxNSwiZ3Jpbi1zcXVpbnQtdGVhcnMiXSwiZjU4NiIsIk00MDMuMSA0MDMuMWM2Ny4yLTY3LjIgNzguOC0xNjguOSAzNC45LTI0OGwzNi43LTUuMmM0LjUtLjYgOC44LTEuNiAxMy4xLTIuOCA0NC42IDk0LjkgMjcuNyAyMTEuNS01MC43IDI5MHMtMTk1LjEgOTUuMy0yOTAgNTAuN2MxLjItNC4yIDIuMS04LjYgMi44LTEzLjFsNS4yLTM2LjdjNzkuMSA0My45IDE4MC44IDMyLjMgMjQ4LTM0Ljl6TTc1IDc1Yzc4LjQtNzguNCAxOTUuMS05NS4zIDI5MC01MC43LTEuMiA0LjItMi4xIDguNi0yLjggMTMuMWwtNS4yIDM2LjdjLTc5LjEtNDMuOS0xODAuOC0zMi4zLTI0OCAzNC45cy03OC44IDE2OC45LTM0LjkgMjQ4bC0zNi43IDUuMmMtNC41IC42LTguOCAxLjYtMTMuMSAyLjgtNDQuNi05NC45LTI3LjctMjExLjUgNTAuNy0yOTB6TTM3MC45IDIwNi41YzUuOC0xMC45IDIxLjEtMTIuNCAyNi40LTEuMyAyNS42IDUzLjUgMTYuMiAxMTkuNi0yOC4yIDE2My45LTQ0LjMgNDQuMy0xMTAuMyA1My43LTE2My44IDI4LjItMTEuMS01LjMtOS42LTIwLjYgMS4zLTI2LjQgMzItMTcuMSA2NC4yLTQwLjggOTMuOC03MC40IDI5LjctMjkuNyA1My40LTYxLjkgNzAuNS05NHpNOTMuMyAyODEuOWMtMS43LTggMi45LTE1LjkgMTAuNi0xOC40bDg0LjYtMjhjNS43LTEuOSAxMi4xLS40IDE2LjMgMy45czUuOCAxMC42IDMuOSAxNi4zbC0yOCA4NC42Yy0yLjYgNy43LTEwLjUgMTIuMy0xOC40IDEwLjZzLTEzLjQtOS0xMi43LTE3LjFsMy45LTQzLjEtNDMuMSAzLjljLTguMSAuNy0xNS41LTQuNy0xNy4xLTEyLjd6TTI5NC42IDExMC40bC0zLjkgNDMuMSA0My4xLTMuOWM4LjEtLjcgMTUuNSA0LjcgMTcuMSAxMi43cy0yLjkgMTUuOS0xMC42IDE4LjRsLTg0LjYgMjhjLTUuNyAxLjktMTIuMSAuNC0xNi4zLTMuOXMtNS44LTEwLjYtMy45LTE2LjNsMjgtODQuNmMyLjYtNy43IDEwLjUtMTIuMyAxOC40LTEwLjZzMTMuNCA5IDEyLjcgMTcuMXpNNTEyIDUxLjRjMCAyNS42LTE4LjggNDcuMy00NC4xIDUwLjlMNDIxLjEgMTA5Yy0xMC42IDEuNS0xOS42LTcuNS0xOC4xLTE4LjFsNi43LTQ2LjdDNDEzLjMgMTguOCA0MzUgMCA0NjAuNiAwIDQ4OSAwIDUxMiAyMyA1MTIgNTEuNHpNNDQuMSA0MDkuN0w5MC45IDQwM2MxMC42LTEuNSAxOS42IDcuNSAxOC4xIDE4LjFsLTYuNyA0Ni43Qzk4LjcgNDkzLjIgNzcgNTEyIDUxLjQgNTEyIDIzIDUxMiAwIDQ4OSAwIDQ2MC42IDAgNDM1IDE4LjggNDEzLjMgNDQuMSA0MDkuN3oiXX0sQk50PUtnZSxITnQ9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiZmlsZS1hdWRpbyIsaWNvbjpbMzg0LDUxMixbXSwiZjFjNyIsIk02NCA0OGwxMTIgMCAwIDg4YzAgMzkuOCAzMi4yIDcyIDcyIDcybDg4IDAgMCAyNDBjMCA4LjgtNy4yIDE2LTE2IDE2TDY0IDQ2NGMtOC44IDAtMTYtNy4yLTE2LTE2TDQ4IDY0YzAtOC44IDcuMi0xNiAxNi0xNnpNMjI0IDY3LjlsOTIuMSA5Mi4xLTY4LjEgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRsMC02OC4xek02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwyNTYgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI2MS41YzAtMTctNi43LTMzLjMtMTguNy00NS4zTDI0Mi43IDE4LjdDMjMwLjcgNi43IDIxNC41IDAgMTk3LjUgMEw2NCAwek0yMjEuOSAyNjcuNmMtNC43IDEwLS4zIDIxLjkgOS43IDI2LjYgMTkuMiA4LjkgMzIuNCAyOC4zIDMyLjQgNTAuOHMtMTMuMiA0MS45LTMyLjQgNTAuOGMtMTAgNC43LTE0LjQgMTYuNi05LjcgMjYuNnMxNi42IDE0LjQgMjYuNiA5LjdDMjgxLjIgNDE2LjggMzA0IDM4My42IDMwNCAzNDVzLTIyLjgtNzEuOS01NS42LTg3LjFjLTEwLTQuNy0yMS45LS4zLTI2LjYgOS43ek0xMDQgMzA1Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDMyYzAgMTMuMyAxMC43IDI0IDI0IDI0bDE2IDAgMjcuMiAzNGMzIDMuOCA3LjYgNiAxMi41IDZsLjMgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0xMjhjMC04LjgtNy4yLTE2LTE2LTE2bC0uMyAwYy00LjkgMC05LjUgMi4yLTEyLjUgNmwtMjcuMiAzNC0xNiAwek0yMjMuMyAzNzNjOS45LTUuNCAxNi43LTE2IDE2LjctMjguMXMtNi43LTIyLjctMTYuNy0yOC4xYy03LjgtNC4yLTE1LjMgMy4zLTE1LjMgMTIuMWwwIDMyYzAgOC44IDcuNiAxNi4zIDE1LjMgMTIuMXoiXX0sWWdlPXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImNhbGVuZGFyLXhtYXJrIixpY29uOls0NDgsNTEyLFsiY2FsZW5kYXItdGltZXMiXSwiZjI3MyIsIk0xMjAgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDQwIDE2MCAwIDAtNDBjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDQwIDMyIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAyODhjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NGwzMiAwIDAtNDBjMC0xMy4zIDEwLjctMjQgMjQtMjR6bTAgMTEybC01NiAwYy04LjggMC0xNiA3LjItMTYgMTZsMCAyODhjMCA4LjggNy4yIDE2IDE2IDE2bDMyMCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTI4OGMwLTguOC03LjItMTYtMTYtMTZsLTI2NCAwem0xNzEuOSA5Mi4xYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45bC0zMy45IDMzLjkgMzMuOSAzMy45YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTMzLjktMzMuOS0zMy45IDMzLjljLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsMzMuOS0zMy45LTMzLjktMzMuOWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDMzLjkgMzMuOSAzMy45LTMzLjljOS40LTkuNCAyNC42LTkuNCAzMy45IDB6Il19LHFOdD1ZZ2UsWmdlPXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImNpcmNsZS1kb3duIixpY29uOls1MTIsNTEyLFs2MTQ2NiwiYXJyb3ctYWx0LWNpcmNsZS1kb3duIl0sImYzNTgiLCJNMjU2IDQ2NGEyMDggMjA4IDAgMSAxIDAtNDE2IDIwOCAyMDggMCAxIDEgMCA0MTZ6TTI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTIgMjU2IDI1NiAwIDEgMCAwLTUxMnpNMjQ0LjcgMzg3LjNjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBsMTA0LTEwNGM0LjYtNC42IDUuOS0xMS41IDMuNS0xNy40UzM2Ni41IDI1NiAzNjAgMjU2bC03MiAwIDAtMTA0YzAtMTMuMy0xMC43LTI0LTI0LTI0bC0xNiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDEwNC03MiAwYy02LjUgMC0xMi4zIDMuOS0xNC44IDkuOXMtMS4xIDEyLjkgMy41IDE3LjRsMTA0IDEwNHoiXX0sak50PVpnZSxhb2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiZmlsZS1saW5lcyIsaWNvbjpbMzg0LDUxMixbMTI4NDQxLDEyODQ2Miw2MTY4NiwiZmlsZS1hbHQiLCJmaWxlLXRleHQiXSwiZjE1YyIsIk02NCA0OGwxMTIgMCAwIDg4YzAgMzkuOCAzMi4yIDcyIDcyIDcybDg4IDAgMCAyNDBjMCA4LjgtNy4yIDE2LTE2IDE2TDY0IDQ2NGMtOC44IDAtMTYtNy4yLTE2LTE2TDQ4IDY0YzAtOC44IDcuMi0xNiAxNi0xNnpNMjI0IDY3LjlsOTIuMSA5Mi4xLTY4LjEgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRsMC02OC4xek02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwyNTYgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI2MS41YzAtMTctNi43LTMzLjMtMTguNy00NS4zTDI0Mi43IDE4LjdDMjMwLjcgNi43IDIxNC41IDAgMTk3LjUgMEw2NCAwem01NiAyNTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMTQ0IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTE0NCAwem0wIDk2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDE0NCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0xNDQgMHoiXX0sVk50PWFvZSxVTnQ9YW9lLFdOdD17cHJlZml4OiJmYXIiLGljb25OYW1lOiJjb21tZW50cyIsaWNvbjpbNTc2LDUxMixbMTI4NDkwLDYxNjcwXSwiZjA4NiIsIk03Ni4yIDI1OC43YzYuMS0xNS4yIDQtMzIuNi01LjYtNDUuOS0xNC41LTIwLjEtMjIuNi00My43LTIyLjYtNjguOCAwLTY2LjggNjAuNS0xMjggMTQ0LTEyOHMxNDQgNjEuMiAxNDQgMTI4LTYwLjUgMTI4LTE0NCAxMjhjLTE1LjkgMC0zMS4xLTIuMy00NS4zLTYuNS0xMC4zLTMuMS0yMS40LTIuNS0zMS40IDEuNWwtNTAuNCAyMC4yIDExLjQtMjguNXpNMCAxNDRjMCAzNS44IDExLjYgNjkuMSAzMS43IDk2LjhMMS45IDMxNS4yYy0xLjMgMy4yLTEuOSA2LjYtMS45IDEwIDAgMTQuOCAxMiAyNi44IDI2LjggMjYuOCAzLjQgMCA2LjgtLjcgMTAtMS45bDk2LjMtMzguNWMxOC42IDUuNSAzOC40IDguNCA1OC45IDguNCAxMDYgMCAxOTItNzguOCAxOTItMTc2UzI5OC0zMiAxOTItMzIgMCA0Ni44IDAgMTQ0ek0zODQgNTEyYzIwLjYgMCA0MC4zLTMgNTguOS04LjRsOTYuMyAzOC41YzMuMiAxLjMgNi42IDEuOSAxMCAxLjkgMTQuOCAwIDI2LjgtMTIgMjYuOC0yNi44IDAtMy40LS43LTYuOC0xLjktMTBsLTI5LjctNzQuNGMyMC0yNy44IDMxLjctNjEuMSAzMS43LTk2LjggMC04Mi40LTYxLjctMTUxLjUtMTQ1LTE3MC43LTEuNiAxNi4zLTUuMSAzMS45LTEwLjEgNDYuOSA2My45IDE0LjggMTA3LjIgNjcuMyAxMDcuMiAxMjMuOSAwIDI1LjEtOC4xIDQ4LjctMjIuNiA2OC44LTkuNiAxMy4zLTExLjcgMzAuNi01LjYgNDUuOWwxMS40IDI4LjUtNTAuNC0yMC4yYy0xMC00LTIxLjEtNC41LTMxLjQtMS41LTE0LjIgNC4yLTI5LjQgNi41LTQ1LjMgNi41LTcyLjIgMC0xMjcuMS00NS43LTE0MC43LTEwMS4yLTE1LjYgMy4yLTMxLjcgNS00OC4xIDUuMiAxNi40IDgxLjkgOTQuNyAxNDQgMTg4LjggMTQ0eiJdfSx0Zj17cHJlZml4OiJmYXIiLGljb25OYW1lOiJjaXJjbGUtY2hlY2siLGljb246WzUxMiw1MTIsWzYxNTMzLCJjaGVjay1jaXJjbGUiXSwiZjA1OCIsIk0yNTYgNTEyYTI1NiAyNTYgMCAxIDEgMC01MTIgMjU2IDI1NiAwIDEgMSAwIDUxMnptMC00NjRhMjA4IDIwOCAwIDEgMCAwIDQxNiAyMDggMjA4IDAgMSAwIDAtNDE2em03MC43IDEyMS45YzcuOC0xMC43IDIyLjgtMTMuMSAzMy41LTUuMyAxMC43IDcuOCAxMy4xIDIyLjggNS4zIDMzLjVMMjQzLjQgMzY2LjFjLTQuMSA1LjctMTAuNSA5LjMtMTcuNSA5LjgtNyAuNS0xMy45LTItMTguOC02LjlsLTU1LjktNTUuOWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDM2IDM2IDEwNS42LTE0NS4yeiJdfSxHTnQ9dGYsS050PXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6Im1vb24iLGljb246WzUxMiw1MTIsWzEyNzc2OSw5MjE0XSwiZjE4NiIsIk0yMzkuMyA0OC43Yy0xMDcuMSA4LjUtMTkxLjMgOTguMS0xOTEuMyAyMDcuMyAwIDExNC45IDkzLjEgMjA4IDIwOCAyMDggMzMuMyAwIDY0LjctNy44IDkyLjYtMjEuNy0xMDMuNC0yMy40LTE4MC42LTExNS44LTE4MC42LTIyNi4zIDAtNjUuOCAyNy40LTEyNS4xIDcxLjMtMTY3LjN6TTAgMjU2YzAtMTQxLjQgMTE0LjYtMjU2IDI1Ni0yNTYgMTkuNCAwIDM4LjQgMi4yIDU2LjcgNi4zIDkuOSAyLjIgMTcuMyAxMC41IDE4LjUgMjAuNXMtNCAxOS44LTEzLjEgMjQuNGMtNjAuNiAzMC4yLTEwMi4xIDkyLjctMTAyLjEgMTY0LjggMCAxMDEuNiA4Mi40IDE4NCAxODQgMTg0IDUgMCA5LjktLjIgMTQuOC0uNiAxMC4xLS44IDE5LjYgNC44IDIzLjggMTQuMXMyIDIwLjEtNS4zIDI3LjFDMzg3LjMgNDg0LjggMzI0LjggNTEyIDI1NiA1MTIgMTE0LjYgNTEyIDAgMzk3LjQgMCAyNTZ6Il19LFlOdD17cHJlZml4OiJmYXIiLGljb25OYW1lOiJjbG9zZWQtY2FwdGlvbmluZyIsaWNvbjpbNTEyLDUxMixbXSwiZjIwYSIsIk00NDggMTEyYzguOCAwIDE2IDcuMiAxNiAxNmwwIDI1NmMwIDguOC03LjIgMTYtMTYgMTZMNjQgNDAwYy04LjggMC0xNi03LjItMTYtMTZsMC0yNTZjMC04LjggNy4yLTE2IDE2LTE2bDM4NCAwek02NCA2NEMyOC43IDY0IDAgOTIuNyAwIDEyOEwwIDM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwzODQgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI1NmMwLTM1LjMtMjguNy02NC02NC02NEw2NCA2NHptODggMTQ0bDMyIDBjNC40IDAgOCAzLjYgOCA4IDAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0zMC45LTI1LjEtNTYtNTYtNTZsLTMyIDBjLTMwLjkgMC01NiAyNS4xLTU2IDU2bDAgODBjMCAzMC45IDI1LjEgNTYgNTYgNTZsMzIgMGMzMC45IDAgNTYtMjUuMSA1Ni01NiAwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGMwIDQuNC0zLjYgOC04IDhsLTMyIDBjLTQuNCAwLTgtMy42LTgtOGwwLTgwYzAtNC40IDMuNi04IDgtOHptMTY4IDhjMC00LjQgMy42LTggOC04bDMyIDBjNC40IDAgOCAzLjYgOCA4IDAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0zMC45LTI1LjEtNTYtNTYtNTZsLTMyIDBjLTMwLjkgMC01NiAyNS4xLTU2IDU2bDAgODBjMCAzMC45IDI1LjEgNTYgNTYgNTZsMzIgMGMzMC45IDAgNTYtMjUuMSA1Ni01NiAwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGMwIDQuNC0zLjYgOC04IDhsLTMyIDBjLTQuNCAwLTgtMy42LTgtOGwwLTgweiJdfSxaTnQ9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiaW1hZ2VzIixpY29uOls1NzYsNTEyLFtdLCJmMzAyIiwiTTQ4MCA4MGM4LjggMCAxNiA3LjIgMTYgMTZsMCAyNTZjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMjAgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMjU2YzAtOC44IDcuMi0xNiAxNi0xNmwzMjAgMHpNMTYwIDMyYy0zNS4zIDAtNjQgMjguNy02NCA2NGwwIDI1NmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI1NmMwLTM1LjMtMjguNy02NC02NC02NEwxNjAgMzJ6bTgwIDExMmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem0xNDAuNyAzLjhjLTQuMy03LjMtMTIuMi0xMS44LTIwLjctMTEuOHMtMTYuNCA0LjUtMjAuNyAxMS44bC00Ni41IDc5LTE3LjItMjQuNmMtNC41LTYuNC0xMS44LTEwLjItMTkuNy0xMC4ycy0xNS4yIDMuOC0xOS43IDEwLjJsLTU2IDgwYy01LjEgNy4zLTUuOCAxNi45LTEuNiAyNC44UzE5MS4xIDMyMCAyMDAgMzIwbDI0MCAwYzguNiAwIDE2LjYtNC42IDIwLjgtMTIuMXM0LjItMTYuNy0uMS0yNC4xbC04MC0xMzZ6TTQ4IDE1MmMwLTEzLjMtMTAuNy0yNC0yNC0yNFMwIDEzOC43IDAgMTUyTDAgNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0bDM2MCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0TDY0IDQ2NGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMjk2eiJdfSxYZ2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiY2lyY2xlLXJpZ2h0IixpY29uOls1MTIsNTEyLFs2MTgzOCwiYXJyb3ctYWx0LWNpcmNsZS1yaWdodCJdLCJmMzVhIiwiTTQ2NCAyNTZhMjA4IDIwOCAwIDEgMSAtNDE2IDAgMjA4IDIwOCAwIDEgMSA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMCA1MTIgMCAyNTYgMjU2IDAgMSAwIC01MTIgMHptMzg3LjMgMTEuM2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtMTA0LTEwNGMtNC42LTQuNi0xMS41LTUuOS0xNy40LTMuNVMyNTYgMTQ1LjUgMjU2IDE1MmwwIDcyLTEwNCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDE2YzAgMTMuMyAxMC43IDI0IDI0IDI0bDEwNCAwIDAgNzJjMCA2LjUgMy45IDEyLjMgOS45IDE0LjhzMTIuOSAxLjEgMTcuNC0zLjVsMTA0LTEwNHoiXX0sWE50PVhnZSxRZ2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiaWQtY2FyZCIsaWNvbjpbNTc2LDUxMixbNjIxNDcsImRyaXZlcnMtbGljZW5zZSJdLCJmMmMyIiwiTTQ4IDQxNmwwLTI1NiA0ODAgMCAwIDI1NmMwIDguOC03LjIgMTYtMTYgMTZsLTE5MiAwYzAtNDQuMi0zNS44LTgwLTgwLTgwbC02NCAwYy00NC4yIDAtODAgMzUuOC04MCA4MGwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2ek02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDQ0OCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyek0yMDggMzEyYTU2IDU2IDAgMSAwIDAtMTEyIDU2IDU2IDAgMSAwIDAgMTEyek0zNzYgMjA4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDgwIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTgwIDB6bTAgOTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsODAgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtODAgMHoiXX0sUU50PVFnZSxKZ2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiY2lyY2xlLXBsYXkiLGljb246WzUxMiw1MTIsWzYxNDY5LCJwbGF5LWNpcmNsZSJdLCJmMTQ0IiwiTTI1NiA0OGEyMDggMjA4IDAgMSAxIDAgNDE2IDIwOCAyMDggMCAxIDEgMC00MTZ6bTAgNDY0YTI1NiAyNTYgMCAxIDAgMC01MTIgMjU2IDI1NiAwIDEgMCAwIDUxMnpNMjEyLjUgMTQ3LjVjLTcuNC00LjUtMTYuNy00LjctMjQuMy0uNVMxNzYgMTU5LjMgMTc2IDE2OGwwIDE3NmMwIDguNyA0LjcgMTYuNyAxMi4zIDIwLjlzMTYuOCA0LjEgMjQuMy0uNWwxNDQtODhjNy4xLTQuNCAxMS41LTEyLjEgMTEuNS0yMC41cy00LjQtMTYuMS0xMS41LTIwLjVsLTE0NC04OHpNMjk4IDI1NmwtNzQgNDUuMiAwLTkwLjQgNzQgNDUuMnoiXX0sSk50PUpnZSxlN2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiZmFjZS1sYXVnaC1iZWFtIixpY29uOls1MTIsNTEyLFsxMjg1MTMsImxhdWdoLWJlYW0iXSwiZjU5YSIsIk00NjQgMjU2YTIwOCAyMDggMCAxIDAgLTQxNiAwIDIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDAgMjU2IDI1NiAwIDEgMSAtNTEyIDB6bTExOC4zIDU4LjJjLTQuMi0xMy43IDcuMS0yNi4yIDIxLjQtMjYuMmwyMzIuNiAwYzE0LjMgMCAyNS42IDEyLjUgMjEuNCAyNi4yLTE4IDU4LjktNzIuOSAxMDEuOC0xMzcuNyAxMDEuOFMxMzYuMyAzNzMuMSAxMTguMyAzMTQuMnpNMTc2IDE4MGMtMTUuNSAwLTI4IDEyLjUtMjggMjhsMCA4YzAgMTEtOSAyMC0yMCAyMHMtMjAtOS0yMC0yMGwwLThjMC0zNy42IDMwLjQtNjggNjgtNjhzNjggMzAuNCA2OCA2OGwwIDhjMCAxMS05IDIwLTIwIDIwcy0yMC05LTIwLTIwbDAtOGMwLTE1LjUtMTIuNS0yOC0yOC0yOHptMTMyIDI4bDAgOGMwIDExLTkgMjAtMjAgMjBzLTIwLTktMjAtMjBsMC04YzAtMzcuNiAzMC40LTY4IDY4LTY4czY4IDMwLjQgNjggNjhsMCA4YzAgMTEtOSAyMC0yMCAyMHMtMjAtOS0yMC0yMGwwLThjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjh6Il19LGVSdD1lN2UsdDdlPXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImFkZHJlc3MtYm9vayIsaWNvbjpbNTEyLDUxMixbNjIxMzgsImNvbnRhY3QtYm9vayJdLCJmMmI5IiwiTTM4NCA0OGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzODRjMCA4LjgtNy4yIDE2LTE2IDE2TDk2IDQ2NGMtOC44IDAtMTYtNy4yLTE2LTE2TDgwIDY0YzAtOC44IDcuMi0xNiAxNi0xNmwyODggMHpNOTYgMEM2MC43IDAgMzIgMjguNyAzMiA2NGwwIDM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwyODggMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTM4NGMwLTM1LjMtMjguNy02NC02NC02NEw5NiAwek0yNDAgMjQ4YTU2IDU2IDAgMSAwIDAtMTEyIDU2IDU2IDAgMSAwIDAgMTEyem0tMzIgNDBjLTQ0LjIgMC04MCAzNS44LTgwIDgwIDAgOC44IDcuMiAxNiAxNiAxNmwxOTIgMGM4LjggMCAxNi03LjIgMTYtMTYgMC00NC4yLTM1LjgtODAtODAtODBsLTY0IDB6TTUxMiA4MGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNmwwIDY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZsMC02NHpNNDk2IDE5MmMtOC44IDAtMTYgNy4yLTE2IDE2bDAgNjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmwwLTY0YzAtOC44LTcuMi0xNi0xNi0xNnptMTYgMTQ0YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2bDAgNjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmwwLTY0eiJdfSx0UnQ9dDdlLGE3ZT17cHJlZml4OiJmYXIiLGljb25OYW1lOiJob3VyZ2xhc3MiLGljb246WzM4NCw1MTIsWzkyMDMsNjIwMzIsImhvdXJnbGFzcy1lbXB0eSJdLCJmMjU0IiwiTTI0IDBDMTAuNyAwIDAgMTAuNyAwIDI0UzEwLjcgNDggMjQgNDhsOCAwIDAgMTljMCA0MC4zIDE2IDc5IDQ0LjUgMTA3LjVsODEuNSA4MS41LTgxLjUgODEuNUM0OCAzNjYgMzIgNDA0LjcgMzIgNDQ1bDAgMTktOCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDMzNiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC04IDAgMC0xOWMwLTQwLjMtMTYtNzktNDQuNS0xMDcuNWwtODEuNS04MS41IDgxLjUtODEuNUMzMzYgMTQ2IDM1MiAxMDcuMyAzNTIgNjdsMC0xOSA4IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRTMzczLjMgMCAzNjAgMEwyNCAwek0xOTIgMjg5LjlsODEuNSA4MS41QzI5MyAzOTEgMzA0IDQxNy40IDMwNCA0NDVsMCAxOS0yMjQgMCAwLTE5YzAtMjcuNiAxMS01NCAzMC41LTczLjVMMTkyIDI4OS45em0wLTY3LjlsLTgxLjUtODEuNUM5MSAxMjEgODAgOTQuNiA4MCA2N2wwLTE5IDIyNCAwIDAgMTljMCAyNy42LTExIDU0LTMwLjUgNzMuNUwxOTIgMjIyLjF6Il19LGFSdD1hN2Usc29lPXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImhlYWRwaG9uZXMiLGljb246WzQ0OCw1MTIsWzEyNzkxMSw2Mjg2MywiaGVhZHBob25lcy1hbHQiLCJoZWFkcGhvbmVzLXNpbXBsZSJdLCJmMDI1IiwiTTQ4IDIyNGMwLTk3LjIgNzguOC0xNzYgMTc2LTE3NnMxNzYgNzguOCAxNzYgMTc2bDAgNDQuOGMtMTQuMS04LjItMzAuNS0xMi44LTQ4LTEyLjhsLTE2IDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4bDAgMTI4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDE2IDBjNTMgMCA5Ni00MyA5Ni05NmwwLTE2MEM0NDggMTAwLjMgMzQ3LjcgMCAyMjQgMFMwIDEwMC4zIDAgMjI0TDAgMzg0YzAgNTMgNDMgOTYgOTYgOTZsMTYgMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTEyOGMwLTI2LjUtMjEuNS00OC00OC00OGwtMTYgMGMtMTcuNSAwLTMzLjkgNC43LTQ4IDEyLjhMNDggMjI0em0wIDEyOGMwLTI2LjUgMjEuNS00OCA0OC00OGwxNiAwIDAgMTI4LTE2IDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtMzJ6bTM1MiAwbDAgMzJjMCAyNi41LTIxLjUgNDgtNDggNDhsLTE2IDAgMC0xMjggMTYgMGMyNi41IDAgNDggMjEuNSA0OCA0OHoiXX0sc1J0PXNvZSxpUnQ9c29lLHJSdD17cHJlZml4OiJmYXIiLGljb25OYW1lOiJmaWxlLXBvd2VycG9pbnQiLGljb246WzM4NCw1MTIsW10sImYxYzQiLCJNNjQgNDhsMTEyIDAgMCA4OGMwIDM5LjggMzIuMiA3MiA3MiA3Mmw4OCAwIDAgMjQwYzAgOC44LTcuMiAxNi0xNiAxNkw2NCA0NjRjLTguOCAwLTE2LTcuMi0xNi0xNkw0OCA2NGMwLTguOCA3LjItMTYgMTYtMTZ6TTIyNCA2Ny45bDkyLjEgOTIuMS02OC4xIDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0bDAtNjguMXpNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjU2IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yNjEuNWMwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0wyNDIuNyAxOC43QzIzMC43IDYuNyAyMTQuNSAwIDE5Ny41IDBMNjQgMHptODggMjU2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDEyOGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtMTYgMjggMGMzNy42IDAgNjgtMzAuNCA2OC02OHMtMzAuNC02OC02OC02OGwtNTIgMHptNTIgODhsLTI4IDAgMC00MCAyOCAwYzExIDAgMjAgOSAyMCAyMHMtOSAyMC0yMCAyMHoiXX0sb1J0PXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6IndpbmRvdy1tYXhpbWl6ZSIsaWNvbjpbNTEyLDUxMixbMTI4NDcwXSwiZjJkMCIsIk00OCAyMjRsMCAxNjBjMCA4LjggNy4yIDE2IDE2IDE2bDM4NCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTE2MC00MTYgMHpNMCAxMjhDMCA5Mi43IDI4LjcgNjQgNjQgNjRsMzg0IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAyNTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDQ4Yy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDEyOHoiXX0sczdlPXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImNvbW1lbnQtZG90cyIsaWNvbjpbNTEyLDUxMixbMTI4MTcyLDYyMDc1LCJjb21tZW50aW5nIl0sImY0YWQiLCJNMCAyNDBjMCA1NC40IDE5LjMgMTA0LjYgNTEuOSAxNDQuOUwzLjEgNDc0LjNjLTIgMy43LTMuMSA3LjktMy4xIDEyLjIgMCAxNC4xIDExLjQgMjUuNSAyNS41IDI1LjUgNCAwIDcuOC0uNiAxMS41LTIuMUwxNTMuNCA0NjBjMzEuNCAxMi45IDY2LjEgMjAgMTAyLjYgMjAgMTQxLjQgMCAyNTYtMTA3LjUgMjU2LTI0MFMzOTcuNCAwIDI1NiAwIDAgMTA3LjUgMCAyNDB6TTk0IDQwNy45YzkuMy0xNy4xIDcuNC0zOC4xLTQuOC01My4yLTI2LjEtMzIuMy00MS4yLTcxLjktNDEuMi0xMTQuNyAwLTEwMy4yIDkwLjItMTkyIDIwOC0xOTJzMjA4IDg4LjggMjA4IDE5Mi05MC4yIDE5Mi0yMDggMTkyYy0zMC4yIDAtNTguNy01LjktODQuMy0xNi40LTExLjktNC45LTI1LjMtNC44LTM3LjEgLjNMNzYgNDQwLjkgOTQgNDA3Ljl6TTE0NCAyNzJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0xNDQtMzJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptODAgMzJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0eiJdfSxuUnQ9czdlLGk3ZT17cHJlZml4OiJmYXIiLGljb25OYW1lOiJmYWNlLWdyaW4tdG9uZ3VlLXdpbmsiLGljb246WzUxMiw1MTIsWzEyODU0MCwiZ3Jpbi10b25ndWUtd2luayJdLCJmNThiIiwiTTM2Ni45IDQzMmMuOC01LjIgMS4xLTEwLjYgMS4xLTE2bDAtNTMuNWMxMC4yLTEyLjYgMTguMy0yNi45IDIzLjgtNDIuNSA0LjEtMTEuNi03LjgtMjEuNC0xOS42LTE3LjgtMzQuOCAxMC42LTc0LjMgMTYuNi0xMTYuMyAxNi42LTQxLjkgMC04MS40LTYtMTE2LjEtMTYuNS0xMS44LTMuNi0yMy43IDYuMS0xOS42IDE3LjggNS41IDE1LjUgMTMuNiAyOS45IDIzLjggNDIuNGwwIDUzLjVjMCA1LjQgLjQgMTAuOCAxLjEgMTYtNTguNC0zNi44LTk3LjEtMTAxLjktOTcuMS0xNzYgMC0xMTQuOSA5My4xLTIwOCAyMDgtMjA4czIwOCA5My4xIDIwOCAyMDhjMCA3NC4xLTM4LjggMTM5LjItOTcuMSAxNzZ6bS0zOC44IDY5LjdDNDM0LjQgNDcwLjYgNTEyIDM3Mi4zIDUxMiAyNTYgNTEyIDExNC42IDM5Ny40IDAgMjU2IDBTMCAxMTQuNiAwIDI1NkMwIDM3Mi4zIDc3LjYgNDcwLjYgMTgzLjkgNTAxLjcgMjAzLjQgNTE4LjEgMjI4LjUgNTI4IDI1NiA1MjhzNTIuNi05LjkgNzIuMS0yNi4zek0zMjAgMzc4LjZsMCAzNy40YzAgMzUuMy0yOC43IDY0LTY0IDY0cy02NC0yOC43LTY0LTY0bDAtMzcuNGMwLTE0LjcgMTEuOS0yNi42IDI2LjYtMjYuNmwyIDBjMTEuMyAwIDIxLjEgNy45IDIzLjYgMTguOSAyLjggMTIuNiAyMC44IDEyLjYgMjMuNiAwIDIuNS0xMS4xIDEyLjMtMTguOSAyMy42LTE4LjlsMiAwYzE0LjcgMCAyNi42IDExLjkgMjYuNiAyNi42ek0xMzIgMjMyYzAtMTEgOS0yMCAyMC0yMGwxNiAwYzExIDAgMjAgOSAyMCAyMHM5IDIwIDIwIDIwIDIwLTkgMjAtMjBjMC0zMy4xLTI2LjktNjAtNjAtNjBsLTE2IDBjLTMzLjEgMC02MCAyNi45LTYwIDYwIDAgMTEgOSAyMCAyMCAyMHMyMC05IDIwLTIwem0yMjguNC0yNGEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAwek0yODggMjA4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTEyOCAwYTgwIDgwIDAgMSAwIC0xNjAgMCA4MCA4MCAwIDEgMCAxNjAgMHoiXX0sbFJ0PWk3ZSxyN2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiaG91cmdsYXNzLWhhbGYiLGljb246WzM4NCw1MTIsWyJob3VyZ2xhc3MtMiJdLCJmMjUyIiwiTTAgMjRDMCAxMC43IDEwLjcgMCAyNCAwTDM2MCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC04IDAgMCAxOWMwIDQwLjMtMTYgNzktNDQuNSAxMDcuNWwtODEuNSA4MS41IDgxLjUgODEuNUMzMzYgMzY2IDM1MiA0MDQuNyAzNTIgNDQ1bDAgMTkgOCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0TDI0IDUxMmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGw4IDAgMC0xOWMwLTQwLjMgMTYtNzkgNDQuNS0xMDcuNWw4MS41LTgxLjUtODEuNS04MS41QzQ4IDE0NiAzMiAxMDcuMyAzMiA2N2wwLTE5LTggMEMxMC43IDQ4IDAgMzcuMyAwIDI0ek0xMTAuNSAzNzEuNWMtMy45IDMuOS03LjUgOC4xLTEwLjcgMTIuNWwxODQuNCAwYy0zLjItNC40LTYuOC04LjYtMTAuNy0xMi41bC04MS41LTgxLjUtODEuNSA4MS41ek04MC44IDQzMmMtLjUgNC4zLS44IDguNi0uOCAxM2wwIDE5IDIyNCAwIDAtMTljMC00LjQtLjMtOC43LS44LTEzTDgwLjggNDMyek0yNTQuMSAxNjBsLTEyNC4xIDAgNjIuMSA2Mi4xIDYyLjEtNjIuMXptMzkuNy00OEMzMDAuNCA5OC4xIDMwNCA4Mi43IDMwNCA2N2wwLTE5LTIyNCAwIDAgMTljMCAxNS43IDMuNiAzMS4xIDEwLjIgNDVsMjAzLjUgMHoiXX0sY1J0PXI3ZSxvN2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiY3JlZGl0LWNhcmQiLGljb246WzUxMiw1MTIsWzEyODE3OSw2MjA4MywiY3JlZGl0LWNhcmQtYWx0Il0sImYwOWQiLCJNNDQ4IDExMmM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMi00MTYgMCAwLTMyYzAtOC44IDcuMi0xNiAxNi0xNmwzODQgMHptMTYgMTEybDAgMTYwYzAgOC44LTcuMiAxNi0xNiAxNkw2NCA0MDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTE2MCA0MTYgMHpNNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjhMMCAzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzg0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yNTZjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgNjR6TTgwIDM0NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGw0OCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC00OCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHptMTQ0IDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRsNjQgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtNjQgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjR6Il19LGRSdD1vN2UsdVJ0PXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImhhbmQtc3BvY2siLGljb246WzUxMiw1MTIsWzEyODQwNl0sImYyNTkiLCJNMTM4LjMgODAuOGMtOS4yLTMzLjggMTAuNS02OC44IDQ0LjMtNzguNCAzNC05LjYgNjkuNCAxMC4yIDc5IDQ0LjJMMjkxLjkgMTUzLjcgMzA1LjEgODRjNi42LTM0LjcgNDAuMS01Ny41IDc0LjgtNTAuOSAzMS40IDYgNTMgMzMuOSA1MiA2NC45IDEwLTIuNiAyMC44LTIuOCAzMS41LS4xIDM0LjMgOC42IDU1LjEgNDMuMyA0Ni42IDc3LjZMNDU0LjcgMzk3LjJDNDM3LjggNDY0LjcgMzc3LjIgNTEyIDMwNy42IDUxMmwtMzMuNyAwYy01Ni45IDAtMTEyLjItMTktMTU3LjItNTMuOWwtOTItNzEuNmMtMjcuOS0yMS43LTMyLjktNjEuOS0xMS4yLTg5LjhzNjEuOS0zMi45IDg5LjgtMTEuMmwxNyAxMy4yLTUxLjgtMTMxLjJjLTEzLTMyLjkgMy4yLTcwLjEgMzYtODMgMTEuMS00LjQgMjIuNy01LjQgMzMuNy0zLjd6bTc3LjEtMjEuMmMtMi40LTguNS0xMS4yLTEzLjQtMTkuNy0xMXMtMTMuNCAxMS4yLTExIDE5LjdsNTQuOCAxODIuNGMzLjUgMTIuMy0zLjMgMjUuMi0xNS40IDI5LjNzLTI1LjMtMi0zMC0xMy45TDE0Mi45IDEzOC4xYy0zLjItOC4yLTEyLjUtMTIuMy0yMC44LTlzLTEyLjMgMTIuNS05IDIwLjhsNzMuMyAxODUuNmMxMiAzMC4zLTIzLjcgNTctNDkuNCAzN0w3My44IDMyMy40Yy03LTUuNC0xNy00LjItMjIuNSAyLjhzLTQuMiAxNyAyLjggMjIuNWw5MiA3MS42YzM2LjUgMjguNCA4MS40IDQzLjggMTI3LjcgNDMuOGwzMy43IDBjNDcuNSAwIDg5LTMyLjQgMTAwLjUtNzguNWw1NS40LTIyMS42YzIuMS04LjYtMy4xLTE3LjMtMTEuNi0xOS40cy0xNy4zIDMuMS0xOS40IDExLjZsLTI2IDEwNGMtMi45IDExLjctMTMuNCAxOS45LTI1LjUgMTkuOS0xNi41IDAtMjguOS0xNS0yNS44LTMxLjJMMzgzLjcgOTljMS43LTguNy00LTE3LjEtMTIuNy0xOC43UzM1NCA4NC4zIDM1Mi4zIDkzTDMyMC41IDI2MGMtMi4yIDExLjYtMTIuNCAyMC0yNC4yIDIwLTExIDAtMjAuNy03LjMtMjMuNy0xNy45TDIxNS40IDU5LjZ6Il19LHBSdD17cHJlZml4OiJmYXIiLGljb25OYW1lOiJiZWxsLXNsYXNoIixpY29uOls1NzYsNTEyLFsxMjgyNzcsNjE5NDNdLCJmMWY2IiwiTTQxLTI0LjljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwUy0yLjMtLjMgNyA5LjFsNTI4IDUyOGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTg3LjgtODcuOGMxNy41LTMuMyAzMC44LTE4LjcgMzAuOC0zNy4xIDAtNi43LTEuOC0xMy4zLTUuMS0xOUw0ODUgMzIxLjdjLTE5LTMyLjYtMjktNjkuNi0yOS0xMDcuM2wwLTE0LjVjMC04NC42LTYyLjYtMTU0LjctMTQ0LTE2Ni4zbDAtOS43YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0bDAgOS43Yy00Mi4yIDYtNzkuNCAyNy44LTEwNS40IDU5LjFMNDEtMjQuOXpNMTkyLjggMTI2LjlDMjE0LjcgOTguNCAyNDkuMiA4MCAyODggODAgMzU0LjMgODAgNDA4IDEzMy43IDQwOCAyMDBsMCAxNC41YzAgNDYuMiAxMi4zIDkxLjUgMzUuNSAxMzEuNGwxMi45IDIyLjEtMjIuNiAwLTI0MS4xLTI0MS4xek0xMzIuNSAzNDUuOWMxOS41LTMzLjQgMzEuMy03MC43IDM0LjYtMTA5bC00Ni43LTQ2LjdjLS4yIDMuMy0uMyA2LjYtLjMgOS45bDAgMTQuNWMwIDM3LjctMTAgNzQuNy0yOSAxMDcuM0w2OS4xIDM1OS4yYy0zLjQgNS44LTUuMSAxMi4zLTUuMSAxOSAwIDIwLjkgMTYuOSAzNy44IDM3LjggMzcuOGwyNDQuNCAwLTQ4LTQ4LTE3OC42IDAgMTIuOS0yMi4xek0yMjAuMSA0NjRjOS45IDI4IDM2LjYgNDggNjcuOSA0OHM1OC0yMCA2Ny45LTQ4bC0xMzUuOCAweiJdfSxoUnQ9e3ByZWZpeDoiZmFyIixpY29uTmFtZToic3RhciIsaWNvbjpbNTc2LDUxMixbMTEwODgsNjE0NDZdLCJmMDA1IiwiTTI4OC4xLTMyYzkgMCAxNy4zIDUuMSAyMS40IDEzLjFMMzgzIDEyNS4zIDU0Mi45IDE1MC43YzguOSAxLjQgMTYuMyA3LjcgMTkuMSAxNi4zcy41IDE4LTUuOCAyNC40TDQ0MS43IDMwNS45IDQ2NyA0NjUuOGMxLjQgOC45LTIuMyAxNy45LTkuNiAyMy4ycy0xNyA2LjEtMjUgMkwyODguMSA0MTcuNiAxNDMuOCA0OTFjLTggNC4xLTE3LjcgMy4zLTI1LTJzLTExLTE0LjItOS42LTIzLjJMMTM0LjQgMzA1LjkgMjAgMTkxLjRjLTYuNC02LjQtOC42LTE1LjgtNS44LTI0LjRzMTAuMS0xNC45IDE5LjEtMTYuM2wxNTkuOS0yNS40IDczLjYtMTQ0LjJjNC4xLTggMTIuNC0xMy4xIDIxLjQtMTMuMXptMCA3Ni44TDIzMC4zIDE1OGMtMy41IDYuOC0xMCAxMS42LTE3LjYgMTIuOGwtMTI1LjUgMjAgODkuOCA4OS45YzUuNCA1LjQgNy45IDEzLjEgNi43IDIwLjdsLTE5LjggMTI1LjUgMTEzLjMtNTcuNmM2LjgtMy41IDE0LjktMy41IDIxLjggMGwxMTMuMyA1Ny42LTE5LjgtMTI1LjVjLTEuMi03LjYgMS4zLTE1LjMgNi43LTIwLjdsODkuOC04OS45LTEyNS41LTIwYy03LjYtMS4yLTE0LjEtNi0xNy42LTEyLjhMMjg4LjEgNDQuOHoiXX0sZlJ0PXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImZsYWciLGljb246WzQ0OCw1MTIsWzEyNzk4OCw2MTcyNV0sImYwMjQiLCJNNDggMjRDNDggMTAuNyAzNy4zIDAgMjQgMFMwIDEwLjcgMCAyNEwwIDQ4OGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtMTAwIDgwLjMtMjAuMWM0MS4xLTEwLjMgODQuNi01LjUgMTIyLjUgMTMuNCA0NC4yIDIyLjEgOTUuNSAyNC44IDE0MS43IDcuNGwzNC43LTEzYzEyLjUtNC43IDIwLjgtMTYuNiAyMC44LTMwbDAtMjc5LjdjMC0yMy0yNC4yLTM4LTQ0LjgtMjcuN2wtOS42IDQuOGMtNDYuMyAyMy4yLTEwMC44IDIzLjItMTQ3LjEgMC0zNS4xLTE3LjYtNzUuNC0yMi0xMTMuNS0xMi41TDQ4IDUyIDQ4IDI0em0wIDc3LjVsOTYuNi0yNC4yYzI3LTYuNyA1NS41LTMuNiA4MC40IDguOCA1NC45IDI3LjQgMTE4LjcgMjkuNyAxNzUgNi44bDAgMjQxLjgtMjQuNCA5LjFjLTMzLjcgMTIuNi03MS4yIDEwLjctMTAzLjQtNS40LTQ4LjItMjQuMS0xMDMuMy0zMC4xLTE1NS42LTE3LjFsLTY4LjYgMTcuMiAwLTIzN3oiXX0sbVJ0PXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImxlbW9uIixpY29uOls0NDgsNTEyLFsxMjc4MTldLCJmMDk0IiwiTTM2OCA4MGMtMy4yIDAtNi4yIC40LTguOSAxLjMtMTkuMSA1LjUtNDYuMSAxMC43LTc0LjMgMy4zLTU3LjQtMTQuOS0xMjQuNiA3LjQtMTc0LjcgNTcuNVMzNy43IDI1OS40IDUyLjYgMzE2LjhjNy4zIDI4LjIgMi4yIDU1LjItMy4zIDc0LjMtLjggMi44LTEuMyA1LjgtMS4zIDguOSAwIDE3LjcgMTQuMyAzMiAzMiAzMiAzLjIgMCA2LjItLjQgOC45LTEuMyAxOS4xLTUuNSA0Ni4xLTEwLjcgNzQuMy0zLjMgNTcuNCAxNC45IDEyNC42LTcuNCAxNzQuNy01Ny41czcyLjQtMTE3LjMgNTcuNS0xNzQuN2MtNy4zLTI4LjItMi4yLTU1LjIgMy4zLTc0LjMgLjgtMi44IDEuMy01LjggMS4zLTguOSAwLTE3LjctMTQuMy0zMi0zMi0zMnptMC00OGM0NC4yIDAgODAgMzUuOCA4MCA4MCAwIDcuNy0xLjEgMTUuMi0zLjEgMjIuMy00LjYgMTUuOC03LjEgMzIuOS0zIDQ4LjkgMjAuMSA3Ny42LTEwLjkgMTYxLjUtNzAgMjIwLjdzLTE0My4xIDkwLjItMjIwLjcgNzBjLTE2LTQuMS0zMy0xLjYtNDguOSAzLTcuMSAyLTE0LjYgMy4xLTIyLjMgMy4xLTQ0LjIgMC04MC0zNS44LTgwLTgwIDAtNy43IDEuMS0xNS4yIDMuMS0yMi4zIDQuNi0xNS44IDcuMS0zMi45IDMtNDguOS0yMC4xLTc3LjYgMTAuOS0xNjEuNSA3MC0yMjAuN1MyMTkuMyAxOCAyOTYuOCAzOC4xYzE2IDQuMSAzMyAxLjYgNDguOS0zIDcuMS0yIDE0LjYtMy4xIDIyLjMtMy4xek0yNDYuNyAxNjdjLTUyIDE1LjItOTYuNSA1OS43LTExMS43IDExMS43LTMuNyAxMi43LTE3LjEgMjAtMjkuOCAxNi4zUzg1LjIgMjc4IDg5IDI2NS4zYzE5LjgtNjcuNyA3Ni42LTEyNC41IDE0NC4zLTE0NC4zIDEyLjctMy43IDI2LjEgMy42IDI5LjggMTYuM3MtMy42IDI2LjEtMTYuMyAyOS44eiJdfSxnUnQ9e3ByZWZpeDoiZmFyIixpY29uTmFtZToid2luZG93LXJlc3RvcmUiLGljb246WzU3Niw1MTIsW10sImYyZDIiLCJNNTEyIDgwTDIyNCA4MGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMTYtNDggMCAwLTE2YzAtMzUuMyAyOC43LTY0IDY0LTY0bDI4OCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMTkyYzAgMzUuMy0yOC43IDY0LTY0IDY0bC00OCAwIDAtNDggNDggMGM4LjggMCAxNi03LjIgMTYtMTZsMC0xOTJjMC04LjgtNy4yLTE2LTE2LTE2ek0zNjggMjg4bC0zMjAgMCAwIDEyOGMwIDguOCA3LjIgMTYgMTYgMTZsMjg4IDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMTI4ek02NCAxNjBsMjg4IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAxOTJjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDIyNGMwLTM1LjMgMjguNy02NCA2NC02NHoiXX0sbjdlPXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImZhY2UtZ3Jpbi1oZWFydHMiLGljb246WzUxMiw1MTIsWzEyODUyNSwiZ3Jpbi1oZWFydHMiXSwiZjU4NCIsIk00NjQgMjU2YzAgMTE0LjktOTMuMSAyMDgtMjA4IDIwOFM0OCAzNzAuOSA0OCAyNTZjMC0zLjUgLjEtNy4xIC4zLTEwLjYtMTQtMTMuOS0yOS43LTMzLjEtMzkuMy01Ni43LTUuOCAyMS40LTguOSA0NC04LjkgNjcuMyAwIDE0MS40IDExNC42IDI1NiAyNTYgMjU2UzUxMiAzOTcuNCA1MTIgMjU2YzAtMjMuMy0zLjEtNDUuOS04LjktNjcuMy05LjYgMjMuNy0yNS40IDQyLjgtMzkuMyA1Ni43IC4yIDMuNSAuMyA3IC4zIDEwLjZ6TTM2OCA1OC45YzExLjctNiAyNC41LTkuNiAzNy43LTEwLjYtNDIuMS0zMC40LTkzLjgtNDguMy0xNDkuNy00OC4zUzE0OC40IDE3LjkgMTA2LjMgNDguM2MxMy4yIDEgMjYgNC42IDM3LjcgMTAuNiAxMy44LTcuMSAyOS4zLTEwLjkgNDUuMS0xMC45bDIuOSAwYzguOSAwIDE3LjYgMS4yIDI1LjggMy41IDEyLjQtMi4zIDI1LjItMy41IDM4LjItMy41czI1LjggMS4yIDM4LjIgMy41YzguMi0yLjMgMTYuOS0zLjUgMjUuOC0zLjVsMi45IDBjMTUuOCAwIDMxLjMgMy44IDQ1LjEgMTAuOXptNC4yIDI0My40Yy0zNC44IDEwLjYtNzQuMyAxNi42LTExNi4zIDE2LjYtNDEuOSAwLTgxLjQtNi0xMTYuMS0xNi41LTExLjgtMy42LTIzLjcgNi4xLTE5LjYgMTcuOCAxOS44IDU1LjkgNzMuMSA5NS45IDEzNS44IDk1LjkgNjIuNyAwIDExNi00MC4xIDEzNS44LTk2IDQuMS0xMS42LTcuOC0yMS40LTE5LjYtMTcuOHpNMzIyLjkgOTZMMzIwIDk2Yy0yNi41IDAtNDggMjEuNS00OCA0OCAwIDUzLjQgNjYuOSA5NS43IDg5IDEwOC4yIDQuNCAyLjUgOS42IDIuNSAxNCAwIDIyLjEtMTIuNSA4OS01NC44IDg5LTEwOC4yIDAtMjYuNS0yMS41LTQ4LTQ4LTQ4bC0yLjkgMGMtMTMuNSAwLTI2LjUgNS40LTM2IDE0LjlsLTkuMSA5LjEtOS4xLTkuMWMtOS41LTkuNS0yMi41LTE0LjktMzYtMTQuOXptLTE4OCAxNC45Yy05LjUtOS41LTIyLjUtMTQuOS0zNi0xNC45TDk2IDk2Yy0yNi41IDAtNDggMjEuNS00OCA0OCAwIDUzLjQgNjYuOSA5NS43IDg5IDEwOC4yIDQuNCAyLjUgOS42IDIuNSAxNCAwIDIyLjEtMTIuNSA4OS01NC44IDg5LTEwOC4yIDAtMjYuNS0yMS41LTQ4LTQ4LTQ4bC0yLjkgMGMtMTMuNSAwLTI2LjUgNS40LTM2IDE0LjlsLTkuMSA5LjEtOS4xLTkuMXoiXX0sYlJ0PW43ZSxsN2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiZmFjZS1raXNzLWJlYW0iLGljb246WzUxMiw1MTIsWzEyODUzNywia2lzcy1iZWFtIl0sImY1OTciLCJNNDY0IDI1NmEyMDggMjA4IDAgMSAwIC00MTYgMCAyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwIDI1NiAyNTYgMCAxIDEgLTUxMiAwem0yNDAgMTZsMzIgMGMyNi41IDAgNDggMjEuNSA0OCA0OCAwIDEyLjMtNC42IDIzLjUtMTIuMiAzMiA3LjYgOC41IDEyLjIgMTkuNyAxMi4yIDMyIDAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDE2IDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTE2IDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZsMTYgMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmwtMTYgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptLTY0LTkyYy0xNS41IDAtMjggMTIuNS0yOCAyOGwwIDhjMCAxMS05IDIwLTIwIDIwcy0yMC05LTIwLTIwbDAtOGMwLTM3LjYgMzAuNC02OCA2OC02OHM2OCAzMC40IDY4IDY4bDAgOGMwIDExLTkgMjAtMjAgMjBzLTIwLTktMjAtMjBsMC04YzAtMTUuNS0xMi41LTI4LTI4LTI4em0xMzIgMjhsMCA4YzAgMTEtOSAyMC0yMCAyMHMtMjAtOS0yMC0yMGwwLThjMC0zNy42IDMwLjQtNjggNjgtNjhzNjggMzAuNCA2OCA2OGwwIDhjMCAxMS05IDIwLTIwIDIwcy0yMC05LTIwLTIwbDAtOGMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOHoiXX0sdlJ0PWw3ZSx4UnQ9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiZmlsZS1wZGYiLGljb246WzU3Niw1MTIsW10sImYxYzEiLCJNMjA4IDQ4TDk2IDQ4Yy04LjggMC0xNiA3LjItMTYgMTZsMCAzODRjMCA4LjggNy4yIDE2IDE2IDE2bDgwIDAgMCA0OC04MCAwYy0zNS4zIDAtNjQtMjguNy02NC02NEwzMiA2NEMzMiAyOC43IDYwLjcgMCA5NiAwTDIyOS41IDBjMTcgMCAzMy4zIDYuNyA0NS4zIDE4LjdMMzk3LjMgMTQxLjNjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM2wwIDE0OS41LTQ4IDAgMC0xMjgtODggMGMtMzkuOCAwLTcyLTMyLjItNzItNzJsMC04OHpNMzQ4LjEgMTYwTDI1NiA2Ny45IDI1NiAxMzZjMCAxMy4zIDEwLjcgMjQgMjQgMjRsNjguMSAwek0yNDAgMzgwbDMyIDBjMzMuMSAwIDYwIDI2LjkgNjAgNjBzLTI2LjkgNjAtNjAgNjBsLTEyIDAgMCAyOGMwIDExLTkgMjAtMjAgMjBzLTIwLTktMjAtMjBsMC0xMjhjMC0xMSA5LTIwIDIwLTIwem0zMiA4MGMxMSAwIDIwLTkgMjAtMjBzLTktMjAtMjAtMjBsLTEyIDAgMCA0MCAxMiAwem05Ni04MGwzMiAwYzI4LjcgMCA1MiAyMy4zIDUyIDUybDAgNjRjMCAyOC43LTIzLjMgNTItNTIgNTJsLTMyIDBjLTExIDAtMjAtOS0yMC0yMGwwLTEyOGMwLTExIDktMjAgMjAtMjB6bTMyIDEyOGM2LjYgMCAxMi01LjQgMTItMTJsMC02NGMwLTYuNi01LjQtMTItMTItMTJsLTEyIDAgMCA4OCAxMiAwem03Ni0xMDhjMC0xMSA5LTIwIDIwLTIwbDQ4IDBjMTEgMCAyMCA5IDIwIDIwcy05IDIwLTIwIDIwbC0yOCAwIDAgMjQgMjggMGMxMSAwIDIwIDkgMjAgMjBzLTkgMjAtMjAgMjBsLTI4IDAgMCA0NGMwIDExLTkgMjAtMjAgMjBzLTIwLTktMjAtMjBsMC0xMjh6Il19LGM3ZT17cHJlZml4OiJmYXIiLGljb25OYW1lOiJmYWNlLWdyaW4td2lkZSIsaWNvbjpbNTEyLDUxMixbMTI4NTE1LCJncmluLWFsdCJdLCJmNTgxIiwiTTQ2NCAyNTZhMjA4IDIwOCAwIDEgMCAtNDE2IDAgMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMCAyNTYgMjU2IDAgMSAxIC01MTIgMHptMzcyLjIgNDYuM2MxMS44LTMuNiAyMy43IDYuMSAxOS42IDE3LjgtMTkuOCA1NS45LTczLjEgOTYtMTM1LjggOTYtNjIuNyAwLTExNi00MC0xMzUuOC05NS45LTQuMS0xMS42IDcuOC0yMS40IDE5LjYtMTcuOCAzNC43IDEwLjYgNzQuMiAxNi41IDExNi4xIDE2LjUgNDIgMCA4MS41LTYgMTE2LjMtMTYuNnpNMjI0IDE5MmMwIDM1LjMtMTQuMyA2NC0zMiA2NHMtMzItMjguNy0zMi02NCAxNC4zLTY0IDMyLTY0IDMyIDI4LjcgMzIgNjR6bTk2IDY0Yy0xNy43IDAtMzItMjguNy0zMi02NHMxNC4zLTY0IDMyLTY0IDMyIDI4LjcgMzIgNjQtMTQuMyA2NC0zMiA2NHoiXX0seVJ0PWM3ZSxkN2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiZmFjZS1sYXVnaC1zcXVpbnQiLGljb246WzUxMiw1MTIsWyJsYXVnaC1zcXVpbnQiXSwiZjU5YiIsIk00NjQgMjU2YTIwOCAyMDggMCAxIDAgLTQxNiAwIDIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDAgMjU2IDI1NiAwIDEgMSAtNTEyIDB6bTEyNS4yIDc2LjRjLTYuNS0xNCA1LTI4LjQgMjAuNC0yOC40bDIyMC44IDBjMTUuNCAwIDI2LjggMTQuNCAyMC40IDI4LjQtMjIuOCA0OS40LTcyLjggODMuNi0xMzAuOCA4My42cy0xMDcuOS0zNC4yLTEzMC44LTgzLjZ6bS0yLjYtMTczLjJjNC41LTYuOCAxMy4zLTkuMiAyMC42LTUuNWw3OS42IDQwYzUuNCAyLjcgOC44IDguMiA4LjggMTQuM3MtMy40IDExLjYtOC44IDE0LjNsLTc5LjYgNDBjLTcuMyAzLjYtMTYuMSAxLjMtMjAuNi01LjVzLTMuMS0xNS45IDMuMS0yMS4xTDE1OSAyMDggMTI1LjggMTgwLjNjLTYuMi01LjItNy42LTE0LjMtMy4xLTIxLjF6bTI2My42IDIxLjFMMzUzIDIwOCAzODYuMiAyMzUuN2M2LjIgNS4yIDcuNiAxNC4zIDMuMSAyMS4xcy0xMy4zIDkuMi0yMC42IDUuNWwtNzkuNi00MGMtNS40LTIuNy04LjgtOC4yLTguOC0xNC4zczMuNC0xMS42IDguOC0xNC4zbDc5LjYtNDBjNy4zLTMuNiAxNi4xLTEuMyAyMC42IDUuNXMzLjEgMTUuOS0zLjEgMjEuMXoiXX0sd1J0PWQ3ZSx1N2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiZmFjZS1raXNzLXdpbmstaGVhcnQiLGljb246WzY0MCw1MTIsWzEyODUzNiwia2lzcy13aW5rLWhlYXJ0Il0sImY1OTgiLCJNMzg2IDQzOS41Yy0yOS4yIDE1LjYtNjIuNSAyNC41LTk4IDI0LjUtMTE0LjkgMC0yMDgtOTMuMS0yMDgtMjA4UzE3My4yIDQ4IDI4OCA0OGMxMTMuMiAwIDIwNS4yIDkwLjQgMjA3LjkgMjAyLjkgMTQuMyAxLjUgMjguNiA2IDQxLjkgMTMuNyAyIDEuMiA0IDIuNCA1LjkgMy43IC4yLTQuMSAuMy04LjIgLjMtMTIuMyAwLTE0MS40LTExNC42LTI1Ni0yNTYtMjU2UzMyIDExNC42IDMyIDI1NiAxNDYuNiA1MTIgMjg4IDUxMmM0MS40IDAgODAuNS05LjggMTE1LjEtMjcuMy01LjgtMTIuOS0xMi0yOC41LTE3LjItNDUuMnpNMjU2IDI4OGMwIDguOCA3LjIgMTYgMTYgMTZsMTYgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtMTYgMGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmwxNiAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0xNiAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDMyIDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDggMC0xMi4zLTQuNi0yMy41LTEyLjItMzIgNy42LTguNSAxMi4yLTE5LjcgMTIuMi0zMiAwLTI2LjUtMjEuNS00OC00OC00OGwtMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2em0tNDgtNDhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0xNTItNDRsMTYgMGMxMSAwIDIwIDkgMjAgMjBzOSAyMCAyMCAyMCAyMC05IDIwLTIwYzAtMzMuMS0yNi45LTYwLTYwLTYwbC0xNiAwYy0zMy4xIDAtNjAgMjYuOS02MCA2MCAwIDExIDkgMjAgMjAgMjBzMjAtOSAyMC0yMCA5LTIwIDIwLTIwek01NDIuOCAzNTBjLTIuMi0xOC4zLTEyLjktMzQuNi0yOC45LTQzLjgtMjguMS0xNi4yLTYzLjktNi42LTgwLjEgMjEuNWwtMi43IDQuNmMtMjQuNSA0Mi41IDcuOSAxMTcuOSAyNC40IDE1MC44IDUuMSAxMC4xIDE1LjUgMTYuMSAyNi44IDE1LjUgMzYuNy0yLjIgMTE4LjItMTEuNyAxNDIuOC01NC4ybDIuNy00LjZjMTYuMi0yOC4xIDYuNi02My45LTIxLjUtODAuMS0xNi05LjItMzUuNC0xMC40LTUyLjQtMy4xbC05LjggNC4yLTEuMy0xMC42eiJdfSxrUnQ9dTdlLFBiPXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImNvcHkiLGljb246WzQ0OCw1MTIsW10sImYwYzUiLCJNMzg0IDMzNmwtMTkyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTI1NmMwLTguOCA3LjItMTYgMTYtMTZsMTMzLjUgMGM0LjIgMCA4LjMgMS43IDExLjMgNC43bDU4LjUgNTguNWMzIDMgNC43IDcuMSA0LjcgMTEuM0w0MDAgMzIwYzAgOC44LTcuMiAxNi0xNiAxNnpNMTkyIDM4NGwxOTIgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTE5Ny41YzAtMTctNi43LTMzLjMtMTguNy00NS4zTDM3MC43IDE4LjdDMzU4LjcgNi43IDM0Mi41IDAgMzI1LjUgMEwxOTIgMGMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCAyNTZjMCAzNS4zIDI4LjcgNjQgNjQgNjR6TTY0IDEyOGMtMzUuMyAwLTY0IDI4LjctNjQgNjRMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMTkyIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0xNi00OCAwIDAgMTZjMCA4LjgtNy4yIDE2LTE2IDE2TDY0IDQ2NGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMjU2YzAtOC44IDcuMi0xNiAxNi0xNmwxNiAwIDAtNDgtMTYgMHoiXX0sU1J0PXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImNoZXNzLWtpbmciLGljb246WzQ0OCw1MTIsWzk4MThdLCJmNDNmIiwiTTIyNC0zMmMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDQwIDQ4IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTQ4IDAgMCA4MCAxNjEuOCAwYzIxLjEgMCAzOC4yIDE3LjEgMzguMiAzOC4yIDAgNi40LTEuNiAxMi43LTQuNyAxOC4zTDM1Ny4yIDM3NC41IDQwNS42IDQzNWM2LjcgOC40IDEwLjQgMTguOCAxMC40IDI5LjYgMCAyNi4yLTIxLjIgNDcuNC00Ny40IDQ3LjRMNzkuNCA1MTJjLTI2LjIgMC00Ny40LTIxLjItNDcuNC00Ny40IDAtMTAuOCAzLjctMjEuMiAxMC40LTI5LjZMOTAuOCAzNzQuNSA0LjcgMjE2LjZDMS42IDIxMC45IDAgMjA0LjYgMCAxOTguMiAwIDE3Ny4xIDE3LjEgMTYwIDM4LjIgMTYwbDE2MS44IDAgMC04MC00OCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDQ4IDAgMC00MGMwLTEzLjMgMTAuNy0yNCAyNC0yNHpNMTMxLjggNDAwbC0zLjYgNC40LTQ3LjYgNTkuNiAyODYuNiAwLTQ3LjYtNTkuNi0zLjYtNC40LTE4NC4zIDB6bTEuMS00OC41bC4zIC41IDE4MS42IDAgLjMtLjUgNzguMy0xNDMuNS0zMzguNyAwIDc4LjMgMTQzLjV6Il19LHA3ZT17cHJlZml4OiJmYXIiLGljb25OYW1lOiJzcXVhcmUtcGx1cyIsaWNvbjpbNDQ4LDUxMixbNjE4NDYsInBsdXMtc3F1YXJlIl0sImYwZmUiLCJNNjQgODBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyMGMwIDguOCA3LjIgMTYgMTYgMTZsMzIwIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzIwYzAtOC44LTcuMi0xNi0xNi0xNkw2NCA4MHpNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwzMjAgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZ6TTIwMCAzNDRsMC02NC02NCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDY0IDAgMC02NGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0bDAgNjQgNjQgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtNjQgMCAwIDY0YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0eiJdfSxfUnQ9cDdlLE1SdD17cHJlZml4OiJmYXIiLGljb25OYW1lOiJmaWxlLWNvZGUiLGljb246WzM4NCw1MTIsW10sImYxYzkiLCJNNjQgNDhsMTEyIDAgMCA4OGMwIDM5LjggMzIuMiA3MiA3MiA3Mmw4OCAwIDAgMjQwYzAgOC44LTcuMiAxNi0xNiAxNkw2NCA0NjRjLTguOCAwLTE2LTcuMi0xNi0xNkw0OCA2NGMwLTguOCA3LjItMTYgMTYtMTZ6TTIyNCA2Ny45bDkyLjEgOTIuMS02OC4xIDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0bDAtNjguMXpNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjU2IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yNjEuNWMwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0wyNDIuNyAxOC43QzIzMC43IDYuNyAyMTQuNSAwIDE5Ny41IDBMNjQgMHpNMTcwLjIgMjk1LjZjOC42LTEwLjEgNy41LTI1LjItMi42LTMzLjhzLTI1LjItNy41LTMzLjggMi42bC00OCA1NmMtNy43IDktNy43IDIyLjIgMCAzMS4ybDQ4IDU2YzguNiAxMC4xIDIzLjggMTEuMiAzMy44IDIuNnMxMS4yLTIzLjggMi42LTMzLjhsLTM0LjYtNDAuNCAzNC42LTQwLjR6bTgwLTMxLjJjLTguNi0xMC4xLTIzLjgtMTEuMi0zMy44LTIuNnMtMTEuMiAyMy44LTIuNiAzMy44bDM0LjYgNDAuNC0zNC42IDQwLjRjLTguNiAxMC4xLTcuNSAyNS4yIDIuNiAzMy44czI1LjIgNy41IDMzLjgtMi42bDQ4LTU2YzcuNy05IDcuNy0yMi4yIDAtMzEuMmwtNDgtNTZ6Il19LGg3ZT17cHJlZml4OiJmYXIiLGljb25OYW1lOiJmYWNlLWdyaW4td2luayIsaWNvbjpbNTEyLDUxMixbImdyaW4td2luayJdLCJmNThjIiwiTTQ2NCAyNTZhMjA4IDIwOCAwIDEgMCAtNDE2IDAgMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMCAyNTYgMjU2IDAgMSAxIC01MTIgMHptMzcyLjIgNDYuM2MxMS44LTMuNiAyMy43IDYuMSAxOS42IDE3LjgtMTkuOCA1NS45LTczLjEgOTYtMTM1LjggOTYtNjIuNyAwLTExNi00MC0xMzUuOC05NS45LTQuMS0xMS42IDcuOC0yMS40IDE5LjYtMTcuOCAzNC43IDEwLjYgNzQuMiAxNi41IDExNi4xIDE2LjUgNDIgMCA4MS41LTYgMTE2LjMtMTYuNnpNMTQ0IDIwOGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xNjQgOGMwIDExLTkgMjAtMjAgMjBzLTIwLTktMjAtMjBjMC0zMy4xIDI2LjktNjAgNjAtNjBsMTYgMGMzMy4xIDAgNjAgMjYuOSA2MCA2MCAwIDExLTkgMjAtMjAgMjBzLTIwLTktMjAtMjAtOS0yMC0yMC0yMGwtMTYgMGMtMTEgMC0yMCA5LTIwIDIweiJdfSx6UnQ9aDdlLGY3ZT17cHJlZml4OiJmYXIiLGljb25OYW1lOiJtb25leS1iaWxsLTEiLGljb246WzUxMiw1MTIsWyJtb25leS1iaWxsLWFsdCJdLCJmM2QxIiwiTTExMiAxMTJjMCAzNS4zLTI4LjcgNjQtNjQgNjRsMCAxNjBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMjg4IDBjMC0zNS4zIDI4LjctNjQgNjQtNjRsMC0xNjBjLTM1LjMgMC02NC0yOC43LTY0LTY0bC0yODggMHpNMCAxMjhDMCA5Mi43IDI4LjcgNjQgNjQgNjRsMzg0IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAyNTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDQ4Yy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDEyOHptMjU2IDE2YTExMiAxMTIgMCAxIDEgMCAyMjQgMTEyIDExMiAwIDEgMSAwLTIyNHptLTE2IDQ0Yy0xMSAwLTIwIDktMjAgMjAgMCA5LjcgNi45IDE3LjcgMTYgMTkuNmwwIDQ4LjQtNCAwYy0xMSAwLTIwIDktMjAgMjBzOSAyMCAyMCAyMGw0OCAwYzExIDAgMjAtOSAyMC0yMHMtOS0yMC0yMC0yMGwtNCAwIDAtNjhjMC0xMS05LTIwLTIwLTIwbC0xNiAweiJdfSxDUnQ9ZjdlLFRSdD17cHJlZml4OiJmYXIiLGljb25OYW1lOiJleWUtc2xhc2giLGljb246WzU3Niw1MTIsW10sImYwNzAiLCJNNDEtMjQuOWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBTLTIuMy0uMyA3IDkuMWw1MjggNTI4YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtOTYuNC05Ni40YzIuNy0yLjQgNS40LTQuOCA4LTcuMiA0Ni44LTQzLjUgNzguMS05NS40IDkzLTEzMS4xIDMuMy03LjkgMy4zLTE2LjcgMC0yNC42LTE0LjktMzUuNy00Ni4yLTg3LjctOTMtMTMxLjEtNDcuMS00My43LTExMS44LTgwLjYtMTkyLjYtODAuNi01Ni44IDAtMTA1LjYgMTguMi0xNDYgNDQuMkw0MS0yNC45ek0xNzYuOSAxMTEuMWMzMi4xLTE4LjkgNjkuMi0zMS4xIDExMS4xLTMxLjEgNjUuMiAwIDExOC44IDI5LjYgMTU5LjkgNjcuNyAzOC41IDM1LjcgNjUuMSA3OC4zIDc4LjYgMTA4LjMtMTMuNiAzMC00MC4yIDcyLjUtNzguNiAxMDguMy0zLjEgMi44LTYuMiA1LjYtOS40IDguNEwzOTMuOCAzMjhjMTQtMjAuNSAyMi4yLTQ1LjMgMjIuMi03MiAwLTcwLjctNTcuMy0xMjgtMTI4LTEyOC0yNi43IDAtNTEuNSA4LjItNzIgMjIuMmwtMzkuMS0zOS4xem0xODIgMTgybC0xMDgtMTA4YzExLjEtNS44IDIzLjctOS4xIDM3LjEtOS4xIDQ0LjIgMCA4MCAzNS44IDgwIDgwIDAgMTMuNC0zLjMgMjYtOS4xIDM3LjF6TTEwMy40IDE3My4ybC0zNC0zNGMtMzIuNiAzNi44LTU1IDc1LjgtNjYuOSAxMDQuNS0zLjMgNy45LTMuMyAxNi43IDAgMjQuNiAxNC45IDM1LjcgNDYuMiA4Ny43IDkzIDEzMS4xIDQ3LjEgNDMuNyAxMTEuOCA4MC42IDE5Mi42IDgwLjYgMzcuMyAwIDcxLjItNy45IDEwMS41LTIwLjZMMzUyLjIgNDIyYy0yMCA2LjQtNDEuNCAxMC02NC4yIDEwLTY1LjIgMC0xMTguOC0yOS42LTE1OS45LTY3LjctMzguNS0zNS43LTY1LjEtNzguMy03OC42LTEwOC4zIDEwLjQtMjMuMSAyOC42LTUzLjYgNTQtODIuOHoiXX0sJFJ0PXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImZpbGUtd29yZCIsaWNvbjpbMzg0LDUxMixbXSwiZjFjMiIsIk02NCA0OGwxMTIgMCAwIDg4YzAgMzkuOCAzMi4yIDcyIDcyIDcybDg4IDAgMCAyNDBjMCA4LjgtNy4yIDE2LTE2IDE2TDY0IDQ2NGMtOC44IDAtMTYtNy4yLTE2LTE2TDQ4IDY0YzAtOC44IDcuMi0xNiAxNi0xNnpNMjI0IDY3LjlsOTIuMSA5Mi4xLTY4LjEgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRsMC02OC4xek02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwyNTYgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI2MS41YzAtMTctNi43LTMzLjMtMTguNy00NS4zTDI0Mi43IDE4LjdDMjMwLjcgNi43IDIxNC41IDAgMTk3LjUgMEw2NCAwem03MS4zIDI3NC4yYy0zLjItMTIuOS0xNi4yLTIwLjctMjkuMS0xNy41Uzg1LjUgMjczIDg4LjcgMjg1LjhsMzIgMTI4YzIuNSAxMC4yIDExLjQgMTcuNSAyMS45IDE4LjFzMjAuMS01LjcgMjMuOC0xNS41bDI1LjUtNjguMSAyNS41IDY4LjFjMy43IDkuOCAxMy4zIDE2LjEgMjMuOCAxNS41czE5LjQtNy45IDIxLjktMTguMWwzMi0xMjhjMy4yLTEyLjktNC42LTI1LjktMTcuNS0yOS4xcy0yNS45IDQuNi0yOS4xIDE3LjVsLTEzLjMgNTMuMi0yMC45LTU1LjhDMjExIDI2Mi4yIDIwMiAyNTYgMTkyIDI1NnMtMTkgNi4yLTIyLjUgMTUuNmwtMjAuOSA1NS44LTEzLjMtNTMuMnoiXX0sbTdlPXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImZhY2UtYW5ncnkiLGljb246WzUxMiw1MTIsWzEyODU0NCwiYW5ncnkiXSwiZjU1NiIsIk0yNTYgNDhhMjA4IDIwOCAwIDEgMSAwIDQxNiAyMDggMjA4IDAgMSAxIDAtNDE2em0wIDQ2NGEyNTYgMjU2IDAgMSAwIDAtNTEyIDI1NiAyNTYgMCAxIDAgMCA1MTJ6bTAtMTQ0YzI0LjEgMCA0NS40IDExLjggNTguNSAzMCA3LjcgMTAuOCAyMi43IDEzLjIgMzMuNSA1LjVzMTMuMi0yMi43IDUuNS0zMy41Yy0yMS43LTMwLjItNTcuMy01MC05Ny41LTUwcy03NS43IDE5LjgtOTcuNSA1MGMtNy43IDEwLjgtNS4zIDI1LjggNS41IDMzLjVzMjUuOCA1LjMgMzMuNS01LjVjMTMuMS0xOC4yIDM0LjQtMzAgNTguNS0zMHptLTgwLTk2YzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtLjMgOS43IDMuMmMxMC41IDMuNSAyMS44LTIuMiAyNS4zLTEyLjZzLTIuMi0yMS44LTEyLjYtMjUuM2wtOTYtMzJjLTEwLjUtMy41LTIxLjggMi4yLTI1LjMgMTIuNnMyLjIgMjEuOCAxMi42IDI1LjNsMjguOSA5LjZjLTQuMSA1LjQtNi42IDEyLjEtNi42IDE5LjQgMCAxNy43IDE0LjMgMzIgMzIgMzJ6bTE5Mi0zMmMwLTcuMy0yLjQtMTQtNi42LTE5LjRsMjguOS05LjZjMTAuNS0zLjUgMTYuMS0xNC44IDEyLjYtMjUuM3MtMTQuOC0xNi4xLTI1LjMtMTIuNmwtOTYgMzJjLTEwLjUgMy41LTE2LjEgMTQuOC0xMi42IDI1LjNzMTQuOCAxNi4xIDI1LjMgMTIuNmw5LjctMy4yIDAgLjNjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMnoiXX0sRFJ0PW03ZSxMUnQ9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiY2hlc3Mta25pZ2h0IixpY29uOls0NDgsNTEyLFs5ODIyXSwiZjQ0MSIsIk0yMzItMzJjMTEwLjUgMCAyMDAgODkuNSAyMDAgMjAwbDAgMTI3LjdjMCAxOC45LTYuMSAzNy4xLTE3LjIgNTIuMmwtNS4xIDYuMi0zNi4zIDQwLjcgMzIuMSA0MC4yYzYuNyA4LjQgMTAuNCAxOC44IDEwLjQgMjkuNmwtLjIgNC44Yy0yLjQgMjMuOS0yMi42IDQyLjUtNDcuMSA0Mi41bC0yODkuMiAwLTQuOC0uMmMtMjMuOS0yLjQtNDIuNS0yMi42LTQyLjUtNDcuMSAwLTEwLjggMy43LTIxLjIgMTAuNC0yOS42bDM3LjYtNDcgMC0yNC4zYzAtMjQuMyAxMC4xLTQ3LjYgMjcuOC02NC4ybDYzLjUtNTkuNS0xNy40IDAtLjIgLjJjLTIwLjMgMjAuMy00OS42IDI4LjItNzcuMSAyMS4xbC01LjUtMS42Yy0zMC45LTEwLjMtNTIuMy0zOC01NC45LTcwLjFsLS4yLTYuNCAwLTEuNGMwLTE5LjcgNy4xLTM4LjggMTkuOS01My44bDc2LjEtODguOCAwLTQ3LjEgLjEtMi41QzExMy40LTIyLjYgMTIzLjYtMzIgMTM2LTMybDk2IDB6TTgwLjcgNDY0bDI4Ni42IDAtMzguNC00OC0yMDkuOSAwLTM4LjQgNDh6TTE2MCA0OGMwIDUuNy0yLjEgMTEuMy01LjggMTUuNkw3Mi4zIDE1OS4xQzY3IDE2NS40IDY0IDE3My40IDY0IDE4MS43bDAgMS40IC40IDUuMmMxLjkgMTEuOSAxMC4zIDIxLjkgMjEuOSAyNS44bDQuNSAxLjFjMTAuNSAxLjkgMjEuMy0xLjQgMjktOWw3LjItNy4yIDMuNy0zYzMuOS0yLjYgOC41LTQgMTMuMy00bDg4IDBjOS44IDAgMTguNyA2IDIyLjMgMTUuMnMxLjMgMTkuNi01LjkgMjYuM2wtMTA3LjggMTAxYy04LjEgNy42LTEyLjcgMTguMS0xMi43IDI5LjJsMCA0LjMgMjA1LjIgMCA0MC43LTQ1LjggMi4zLTIuOGM1LjEtNi44IDcuOC0xNS4yIDcuOC0yMy43TDM4NCAxNjhjMC04My45LTY4LjEtMTUyLTE1Mi0xNTJsLTcyIDAgMCAzMnptMzIgNzJhMjQgMjQgMCAxIDEgMC00OCAyNCAyNCAwIDEgMSAwIDQ4eiJdfSxnN2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiZmFjZS1ncmluLWJlYW0iLGljb246WzUxMiw1MTIsWzEyODUxNiwiZ3Jpbi1iZWFtIl0sImY1ODIiLCJNNDY0IDI1NmEyMDggMjA4IDAgMSAwIC00MTYgMCAyMDggMjA4IDAgMSAwIDQxNiAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwIDI1NiAyNTYgMCAxIDEgLTUxMiAwem0zNzIuMiA0Ni4zYzExLjgtMy42IDIzLjcgNi4xIDE5LjYgMTcuOC0xOS44IDU1LjktNzMuMSA5Ni0xMzUuOCA5Ni02Mi43IDAtMTE2LTQwLTEzNS44LTk1LjktNC4xLTExLjYgNy44LTIxLjQgMTkuNi0xNy44IDM0LjcgMTAuNiA3NC4yIDE2LjUgMTE2LjEgMTYuNSA0MiAwIDgxLjUtNiAxMTYuMy0xNi42ek0xNzYgMTgwYy0xNS41IDAtMjggMTIuNS0yOCAyOGwwIDhjMCAxMS05IDIwLTIwIDIwcy0yMC05LTIwLTIwbDAtOGMwLTM3LjYgMzAuNC02OCA2OC02OHM2OCAzMC40IDY4IDY4bDAgOGMwIDExLTkgMjAtMjAgMjBzLTIwLTktMjAtMjBsMC04YzAtMTUuNS0xMi41LTI4LTI4LTI4em0xMzIgMjhsMCA4YzAgMTEtOSAyMC0yMCAyMHMtMjAtOS0yMC0yMGwwLThjMC0zNy42IDMwLjQtNjggNjgtNjhzNjggMzAuNCA2OCA2OGwwIDhjMCAxMS05IDIwLTIwIDIwcy0yMC05LTIwLTIwbDAtOGMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOHoiXX0sRVJ0PWc3ZSxQUnQ9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiaGFuZC1wZWFjZSIsaWNvbjpbNDQ4LDUxMixbOTk5Nl0sImYyNWIiLCJNMjE5IDEuNGMtMzUuMi0zLjctNjYuNiAyMS44LTcwLjMgNTdsLTYuNCA2MC42LTE3LjQtNDkuNEMxMTMuMiAzNi4zIDc2LjYgMTguOCA0My4zIDMwLjVTLTcuNiA3OC44IDQuMSAxMTIuMUw1Ni45IDI2Mi4yQzQxLjcgMjc2LjcgMzIuMiAyOTcuMyAzMi4yIDMyMGwwIDI0YzAgOTIuOCA3NS4yIDE2OCAxNjggMTY4bDQ4IDBjOTIuOCAwIDE2OC03NS4yIDE2OC0xNjhsMC0xMjBjMC0zNS4zLTI4LjctNjQtNjQtNjQtNy45IDAtMTUuNCAxLjQtMjIuNCA0LTEwLjQtMjEuMy0zMi4zLTM2LTU3LjYtMzYtLjcgMC0xLjUgMC0yLjIgMGw1LjktNTYuM2MzLjctMzUuMi0yMS44LTY2LjYtNTctNzAuM3ptLS4yIDE1NS40Yy02LjYgMTAuMS0xMC41IDIyLjItMTAuNSAzNS4ybDAgNDhjMCAuNyAwIDEuNCAwIDItNS4xLTEuMy0xMC41LTItMTYtMmwtNy40IDAtNS40LTE1LjMgMTctMTYxLjNjLjktOC44IDguOC0xNS4yIDE3LjYtMTQuMnMxNS4yIDguOCAxNC4yIDE3LjZsLTkuNSA5MC4xek03OS42IDg1LjZsNTQuMyAxNTQuNC0yMS43IDBjLTQgMC04IC4zLTExLjkgLjlMNDkuNCA5Ni4yYy0yLjktOC4zIDEuNS0xNy41IDkuOC0yMC40czE3LjUgMS41IDIwLjQgOS44ek0yNTYuMiAxOTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDQ4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtNDh6bTM4LjQgMTA4YzEwLjQgMjEuMyAzMi4zIDM2IDU3LjYgMzYgNS41IDAgMTAuOS0uNyAxNi0ybDAgMTBjMCA2Ni4zLTUzLjcgMTIwLTEyMCAxMjBsLTQ4IDBjLTY2LjMgMC0xMjAtNTMuNy0xMjAtMTIwbDAtMjRjMC0xNy43IDE0LjMtMzIgMzItMzJsODAgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtNDAgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw0MCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0IDAtLjcgMC0xLjQgMC0yIDUuMSAxLjMgMTAuNSAyIDE2IDIgNy45IDAgMTUuNC0xLjQgMjIuNC00em03My42LTI4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtNDhjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDQ4eiJdfSxJUnQ9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiY29tcGFzcyIsaWNvbjpbNTEyLDUxMixbMTI5NTE3XSwiZjE0ZSIsIk00NjQgMjU2YTIwOCAyMDggMCAxIDAgLTQxNiAwIDIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDAgMjU2IDI1NiAwIDEgMSAtNTEyIDB6bTMwNi43IDY5LjFMMTYyLjQgMzgwLjZjLTE5LjQgNy41LTM4LjUtMTEuNi0zMS0zMWw1NS41LTE0NC4zYzMuMy04LjUgOS45LTE1LjEgMTguNC0xOC40bDE0NC4zLTU1LjVjMTkuNC03LjUgMzguNSAxMS42IDMxIDMxTDMyNS4xIDMwNi43Yy0zLjMgOC41LTkuOSAxNS4xLTE4LjQgMTguNHpNMjg4IDI1NmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAweiJdfSxBUnQ9e3ByZWZpeDoiZmFyIixpY29uTmFtZToic3F1YXJlIixpY29uOls0NDgsNTEyLFs5NjMyLDk3MjMsOTcyNCw2MTU5MF0sImYwYzgiLCJNMzg0IDgwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyMGMwIDguOC03LjIgMTYtMTYgMTZMNjQgNDMyYy04LjggMC0xNi03LjItMTYtMTZMNDggOTZjMC04LjggNy4yLTE2IDE2LTE2bDMyMCAwek02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyeiJdfSxiN2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiZmFjZS1ncmluIixpY29uOls1MTIsNTEyLFsxMjg1MTIsImdyaW4iXSwiZjU4MCIsIk00NjQgMjU2YTIwOCAyMDggMCAxIDAgLTQxNiAwIDIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDAgMjU2IDI1NiAwIDEgMSAtNTEyIDB6bTM3Mi4yIDQ2LjNjMTEuOC0zLjYgMjMuNyA2LjEgMTkuNiAxNy44LTE5LjggNTUuOS03My4xIDk2LTEzNS44IDk2LTYyLjcgMC0xMTYtNDAtMTM1LjgtOTUuOS00LjEtMTEuNiA3LjgtMjEuNCAxOS42LTE3LjggMzQuNyAxMC42IDc0LjIgMTYuNSAxMTYuMSAxNi41IDQyIDAgODEuNS02IDExNi4zLTE2LjZ6TTE0NCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHoiXX0sTlJ0PWI3ZSx2N2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiZmFjZS1zbWlsZSIsaWNvbjpbNTEyLDUxMixbMTI4NTc4LCJzbWlsZSJdLCJmMTE4IiwiTTQ2NCAyNTZhMjA4IDIwOCAwIDEgMCAtNDE2IDAgMjA4IDIwOCAwIDEgMCA0MTYgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMCAyNTYgMjU2IDAgMSAxIC01MTIgMHptMTc3LjMgNjMuNEMxOTIuMyAzMzUgMjE4LjQgMzUyIDI1NiAzNTJzNjMuNy0xNyA3OC43LTMyLjZjOS4yLTkuNiAyNC40LTkuOSAzMy45LS43czkuOSAyNC40IC43IDMzLjljLTIyLjEgMjMtNjAgNDcuNC0xMTMuMyA0Ny40cy05MS4yLTI0LjQtMTEzLjMtNDcuNGMtOS4yLTkuNi04LjktMjQuOCAuNy0zMy45czI0LjgtOC45IDMzLjkgLjd6TTE0NCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHoiXX0sUlJ0PXY3ZSx4N2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiZmFjZS1zbWlsZS1iZWFtIixpY29uOls1MTIsNTEyLFsxMjg1MjIsInNtaWxlLWJlYW0iXSwiZjViOCIsIk00NjQgMjU2YTIwOCAyMDggMCAxIDAgLTQxNiAwIDIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDAgMjU2IDI1NiAwIDEgMSAtNTEyIDB6bTE3Ny4zIDYzLjRDMTkyLjMgMzM1IDIxOC40IDM1MiAyNTYgMzUyczYzLjctMTcgNzguNy0zMi42YzkuMi05LjYgMjQuNC05LjkgMzMuOS0uN3M5LjkgMjQuNCAuNyAzMy45Yy0yMi4xIDIzLTYwIDQ3LjQtMTEzLjMgNDcuNHMtOTEuMi0yNC40LTExMy4zLTQ3LjRjLTkuMi05LjYtOC45LTI0LjggLjctMzMuOXMyNC44LTguOSAzMy45IC43ek0xNzYgMTgwYy0xNS41IDAtMjggMTIuNS0yOCAyOGwwIDhjMCAxMS05IDIwLTIwIDIwcy0yMC05LTIwLTIwbDAtOGMwLTM3LjYgMzAuNC02OCA2OC02OHM2OCAzMC40IDY4IDY4bDAgOGMwIDExLTkgMjAtMjAgMjBzLTIwLTktMjAtMjBsMC04YzAtMTUuNS0xMi41LTI4LTI4LTI4em0xMzIgMjhsMCA4YzAgMTEtOSAyMC0yMCAyMHMtMjAtOS0yMC0yMGwwLThjMC0zNy42IDMwLjQtNjggNjgtNjhzNjggMzAuNCA2OCA2OGwwIDhjMCAxMS05IDIwLTIwIDIwcy0yMC05LTIwLTIwbDAtOGMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOHoiXX0sT1J0PXg3ZSxGUnQ9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiZm9sZGVyLWNsb3NlZCIsaWNvbjpbNTEyLDUxMixbXSwiZTE4NSIsIk00NDggNDAwTDY0IDQwMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMTQ0IDQxNiAwIDAgMTQ0YzAgOC44LTcuMiAxNi0xNiAxNnptMTYtMjA4bC00MTYgMCAwLTk2YzAtOC44IDcuMi0xNiAxNi0xNmwxMzguNyAwYzMuNSAwIDYuOCAxLjEgOS42IDMuMkwyNTAuNyAxMTJjMTMuOCAxMC40IDMwLjcgMTYgNDggMTZMNDQ4IDEyOGM4LjggMCAxNiA3LjIgMTYgMTZsMCA0OHpNNjQgNDQ4bDM4NCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMjQwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDI5OC43IDgwYy02LjkgMC0xMy43LTIuMi0xOS4yLTYuNEwyNDEuMSA0NC44QzIzMCAzNi41IDIxNi41IDMyIDIwMi43IDMyTDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCAzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjR6Il19LEJSdD17cHJlZml4OiJmYXIiLGljb25OYW1lOiJrZXlib2FyZCIsaWNvbjpbNTc2LDUxMixbOWUzXSwiZjExYyIsIk02NCAxMTJjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDI1NmMwIDguOCA3LjIgMTYgMTYgMTZsNDQ4IDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMjU2YzAtOC44LTcuMi0xNi0xNi0xNkw2NCAxMTJ6TTAgMTI4QzAgOTIuNyAyOC43IDY0IDY0IDY0bDQ0OCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjU2YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ0OGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCAxMjh6TTE3NiAzMjBsMjI0IDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMTZjMCA4LjgtNy4yIDE2LTE2IDE2bC0yMjQgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMTZjMC04LjggNy4yLTE2IDE2LTE2em0tNzItNzJjMC04LjggNy4yLTE2IDE2LTE2bDE2IDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMTZjMCA4LjgtNy4yIDE2LTE2IDE2bC0xNiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0xNnptMTYtOTZsMTYgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAxNmMwIDguOC03LjIgMTYtMTYgMTZsLTE2IDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTE2YzAtOC44IDcuMi0xNiAxNi0xNnptNjQgOTZjMC04LjggNy4yLTE2IDE2LTE2bDE2IDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMTZjMCA4LjgtNy4yIDE2LTE2IDE2bC0xNiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0xNnptMTYtOTZsMTYgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAxNmMwIDguOC03LjIgMTYtMTYgMTZsLTE2IDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTE2YzAtOC44IDcuMi0xNiAxNi0xNnptNjQgOTZjMC04LjggNy4yLTE2IDE2LTE2bDE2IDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMTZjMCA4LjgtNy4yIDE2LTE2IDE2bC0xNiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0xNnptMTYtOTZsMTYgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAxNmMwIDguOC03LjIgMTYtMTYgMTZsLTE2IDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTE2YzAtOC44IDcuMi0xNiAxNi0xNnptNjQgOTZjMC04LjggNy4yLTE2IDE2LTE2bDE2IDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMTZjMCA4LjgtNy4yIDE2LTE2IDE2bC0xNiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0xNnptMTYtOTZsMTYgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAxNmMwIDguOC03LjIgMTYtMTYgMTZsLTE2IDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTE2YzAtOC44IDcuMi0xNiAxNi0xNnptNjQgOTZjMC04LjggNy4yLTE2IDE2LTE2bDE2IDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMTZjMCA4LjgtNy4yIDE2LTE2IDE2bC0xNiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0xNnptMTYtOTZsMTYgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAxNmMwIDguOC03LjIgMTYtMTYgMTZsLTE2IDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTE2YzAtOC44IDcuMi0xNiAxNi0xNnoiXX0seTdlPXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImZhY2Utcm9sbGluZy1leWVzIixpY29uOls1MTIsNTEyLFsxMjg1ODAsIm1laC1yb2xsaW5nLWV5ZXMiXSwiZjVhNSIsIk0yNTYgNDhhMjA4IDIwOCAwIDEgMSAwIDQxNiAyMDggMjA4IDAgMSAxIDAtNDE2em0wIDQ2NGEyNTYgMjU2IDAgMSAwIDAtNTEyIDI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE3NiAzNzZjMCAxMy4zIDEwLjcgMjQgMjQgMjRsMTEyIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTExMiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHpNMTYwIDI2NGMtMjIuMSAwLTQwLTE3LjktNDAtNDAgMC05LjUgMy4zLTE4LjEgOC44LTI1IDMuMiAxNC4zIDE2IDI1IDMxLjIgMjVzMjgtMTAuNyAzMS4yLTI1YzUuNSA2LjggOC44IDE1LjUgOC44IDI1IDAgMjIuMS0xNy45IDQwLTQwIDQwem0wIDQwYTgwIDgwIDAgMSAwIDAtMTYwIDgwIDgwIDAgMSAwIDAgMTYwem0xOTItNDBjLTIyLjEgMC00MC0xNy45LTQwLTQwIDAtOS41IDMuMy0xOC4xIDguOC0yNSAzLjIgMTQuMyAxNiAyNSAzMS4yIDI1czI4LTEwLjcgMzEuMi0yNWM1LjUgNi44IDguOCAxNS41IDguOCAyNSAwIDIyLjEtMTcuOSA0MC00MCA0MHptMCA0MGE4MCA4MCAwIDEgMCAwLTE2MCA4MCA4MCAwIDEgMCAwIDE2MHoiXX0sSFJ0PXk3ZSx3N2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiZmFjZS1ncmltYWNlIixpY29uOls1MTIsNTEyLFsxMjg1NTYsImdyaW1hY2UiXSwiZjU3ZiIsIk0yNTYgNDhhMjA4IDIwOCAwIDEgMCAwIDQxNiAyMDggMjA4IDAgMSAwIDAtNDE2ek01MTIgMjU2YTI1NiAyNTYgMCAxIDEgLTUxMiAwIDI1NiAyNTYgMCAxIDEgNTEyIDB6TTE1MiAzNTJjMCAxMS45IDguNiAyMS44IDIwIDIzLjdsMC00Ny4zYy0xMS40IDEuOS0yMCAxMS44LTIwIDIzLjd6bTg0IDI0bDAtNDgtMjQgMCAwIDQ4IDI0IDB6bTY0IDBsMC00OC0yNCAwIDAgNDggMjQgMHptNDAtLjNjMTEuNC0xLjkgMjAtMTEuOCAyMC0yMy43cy04LjYtMjEuOC0yMC0yMy43bDAgNDcuM3pNMTc2IDI4OGwxNjAgMGMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NGwtMTYwIDBjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjR6bTAtMTEyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMTI4IDMyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6Il19LHFSdD13N2UsazdlPXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImNpcmNsZS1kb3QiLGljb246WzUxMiw1MTIsWzEyODI4MCwiZG90LWNpcmNsZSJdLCJmMTkyIiwiTTI1NiA1MTJhMjU2IDI1NiAwIDEgMSAwLTUxMiAyNTYgMjU2IDAgMSAxIDAgNTEyem0wLTQ2NGEyMDggMjA4IDAgMSAwIDAgNDE2IDIwOCAyMDggMCAxIDAgMC00MTZ6bTAgMzA0YTk2IDk2IDAgMSAxIDAtMTkyIDk2IDk2IDAgMSAxIDAgMTkyeiJdfSxqUnQ9azdlLFZSdD17cHJlZml4OiJmYXIiLGljb25OYW1lOiJvYmplY3QtZ3JvdXAiLGljb246WzU3Niw1MTIsW10sImYyNDciLCJNNDAgNjRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptNDggNTkuM2MxNi02LjUgMjguOS0xOS4zIDM1LjMtMzUuM2wzMjkuMyAwYzYuNSAxNiAxOS4zIDI4LjkgMzUuMyAzNS4zbDAgMjY1LjNjLTE2IDYuNS0yOC45IDE5LjMtMzUuMyAzNS4zbC0zMjkuMyAwYy02LjUtMTYtMTkuMy0yOC45LTM1LjMtMzUuM2wwLTI2NS4zek01MTIgMGMtMjYuOSAwLTQ5LjkgMTYuNS01OS4zIDQwTDEyMy4zIDQwQzExMy45IDE2LjUgOTAuOSAwIDY0IDAgMjguNyAwIDAgMjguNyAwIDY0IDAgOTAuOSAxNi41IDExMy45IDQwIDEyMy4zbDAgMjY1LjNjLTIzLjUgOS41LTQwIDMyLjUtNDAgNTkuMyAwIDM1LjMgMjguNyA2NCA2NCA2NCAyNi45IDAgNDkuOS0xNi41IDU5LjMtNDBsMzI5LjMgMGM5LjUgMjMuNSAzMi41IDQwIDU5LjMgNDAgMzUuMyAwIDY0LTI4LjcgNjQtNjQgMC0yNi45LTE2LjUtNDkuOS00MC01OS4zbDAtMjY1LjNjMjMuNS05LjUgNDAtMzIuNSA0MC01OS4zIDAtMzUuMy0yOC43LTY0LTY0LTY0ek00ODggNjRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpNNjQgNDI0YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptNDI0IDI0YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6TTE5MiAxNzZsODggMCAwIDU2LTg4IDAgMC01NnptLTgtNDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgNzJjMCAxNy43IDE0LjMgMzIgMzIgMzJsMTA0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC03MmMwLTE3LjctMTQuMy0zMi0zMi0zMmwtMTA0IDB6bTcyIDE4NGwwIDI0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDEwNCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtNzJjMC0xNy43LTE0LjMtMzItMzItMzJsLTI0IDBjMCAxNC42LTMuOSAyOC4yLTEwLjcgNDBsMjYuNyAwIDAgNTYtODggMCAwLTE2LjRjLTIuNiAuMy01LjMgLjQtOCAuNGwtMzIgMHoiXX0sUzdlPXtwcmVmaXg6ImZhciIsaWNvbk5hbWU6ImZhY2UtZmx1c2hlZCIsaWNvbjpbNTEyLDUxMixbMTI4NTYzLCJmbHVzaGVkIl0sImY1NzkiLCJNNDY0IDI1NmEyMDggMjA4IDAgMSAxIC00MTYgMCAyMDggMjA4IDAgMSAxIDQxNiAwek0yNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyIDI1NiAyNTYgMCAxIDAgMC01MTJ6TTE2MCAyNDhhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em0yMTYtMjRhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHpNMTkyIDM1MmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwxMjggMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtMTI4IDB6TTE2MCAxNzZhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2em0wIDEyOGE4MCA4MCAwIDEgMCAwLTE2MCA4MCA4MCAwIDEgMCAwIDE2MHptMTQ0LTgwYTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTEyOCAwYTgwIDgwIDAgMSAwIC0xNjAgMCA4MCA4MCAwIDEgMCAxNjAgMHoiXX0sVVJ0PVM3ZSxfN2U9e3ByZWZpeDoiZmFyIixpY29uTmFtZToic3Rhci1oYWxmLXN0cm9rZSIsaWNvbjpbNTc2LDUxMixbInN0YXItaGFsZi1hbHQiXSwiZjVjMCIsIk0zMDkuNS0xOC45Yy00LjEtOC0xMi40LTEzLjEtMjEuNC0xMy4xcy0xNy4zIDUuMS0yMS40IDEzLjFMMTkzLjEgMTI1LjMgMzMuMiAxNTAuN2MtOC45IDEuNC0xNi4zIDcuNy0xOS4xIDE2LjNzLS41IDE4IDUuOCAyNC40bDExNC40IDExNC41LTI1LjIgMTU5LjljLTEuNCA4LjkgMi4zIDE3LjkgOS42IDIzLjJzMTYuOSA2LjEgMjUgMkwyODguMSA0MTcuNiA0MzIuNCA0OTFjOCA0LjEgMTcuNyAzLjMgMjUtMnMxMS0xNC4yIDkuNi0yMy4yTDQ0MS43IDMwNS45IDU1Ni4xIDE5MS40YzYuNC02LjQgOC42LTE1LjggNS44LTI0LjRzLTEwLjEtMTQuOS0xOS4xLTE2LjNMMzgzIDEyNS4zIDMwOS41LTE4Ljl6TTI2NC4xIDkxLjhsMCAyODQuMS0xMDAuMSA1MC45IDE5LjgtMTI1LjVjMS4yLTcuNi0xLjMtMTUuMy02LjctMjAuN2wtODkuOC04OS45IDEyNS41LTIwYzcuNi0xLjIgMTQuMS02IDE3LjYtMTIuOGwzMy44LTY2LjJ6bTQ4IDI4NC4xbDAtMjg0LjEgMzMuOCA2Ni4yYzMuNSA2LjggMTAgMTEuNiAxNy42IDEyLjhsMTI1LjUgMjAtODkuOCA4OS45Yy01LjQgNS40LTcuOSAxMy4xLTYuNyAyMC43bDE5LjggMTI1LjUtMTAwLjEtNTAuOXoiXX0sV1J0PV83ZSxHUnQ9e3ByZWZpeDoiZmFyIixpY29uTmFtZToiZmlsZS12aWRlbyIsaWNvbjpbMzg0LDUxMixbXSwiZjFjOCIsIk02NCA0OGwxMTIgMCAwIDg4YzAgMzkuOCAzMi4yIDcyIDcyIDcybDg4IDAgMCAyNDBjMCA4LjgtNy4yIDE2LTE2IDE2TDY0IDQ2NGMtOC44IDAtMTYtNy4yLTE2LTE2TDQ4IDY0YzAtOC44IDcuMi0xNiAxNi0xNnpNMjI0IDY3LjlsOTIuMSA5Mi4xLTY4LjEgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRsMC02OC4xek02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwyNTYgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI2MS41YzAtMTctNi43LTMzLjMtMTguNy00NS4zTDI0Mi43IDE4LjdDMjMwLjcgNi43IDIxNC41IDAgMTk3LjUgMEw2NCAwek04MCAyODhsMCA5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmw5NiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMjQgMzUgMzVjMy4yIDMuMiA3LjUgNSAxMiA1IDkuNCAwIDE3LTcuNiAxNy0xN2wwLTk0LjFjMC05LjQtNy42LTE3LTE3LTE3LTQuNSAwLTguOCAxLjgtMTIgNWwtMzUgMzUgMC0yNGMwLTE3LjctMTQuMy0zMi0zMi0zMmwtOTYgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6Il19LE03ZT17cHJlZml4OiJmYXIiLGljb25OYW1lOiJmYWNlLWxhdWdoIixpY29uOls1MTIsNTEyLFsibGF1Z2giXSwiZjU5OSIsIk00NjQgMjU2YTIwOCAyMDggMCAxIDAgLTQxNiAwIDIwOCAyMDggMCAxIDAgNDE2IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDAgMjU2IDI1NiAwIDEgMSAtNTEyIDB6bTExOC4zIDU4LjJjLTQuMi0xMy43IDcuMS0yNi4yIDIxLjQtMjYuMmwyMzIuNiAwYzE0LjMgMCAyNS42IDEyLjUgMjEuNCAyNi4yLTE4IDU4LjktNzIuOSAxMDEuOC0xMzcuNyAxMDEuOFMxMzYuMyAzNzMuMSAxMTguMyAzMTQuMnpNMTQ0IDE5MmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xOTItMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0eiJdfSxLUnQ9TTdlLFlSdD17cHJlZml4OiJmYXIiLGljb25OYW1lOiJoYW5kLXBvaW50ZXIiLGljb246WzQ0OCw1MTIsW10sImYyNWEiLCJNMTYwIDY0YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZsMCAxMzZjMCAxMC4zIDYuNiAxOS41IDE2LjQgMjIuOHMyMC42LS4xIDI2LjgtOC4zYzMtMy45IDcuNi02LjQgMTIuOC02LjQgOC44IDAgMTYgNy4yIDE2IDE2IDAgMTAuMyA2LjYgMTkuNSAxNi40IDIyLjhzMjAuNi0uMSAyNi44LTguM2MzLTMuOSA3LjYtNi40IDEyLjgtNi40IDcuOCAwIDE0LjMgNS42IDE1LjcgMTMgMS42IDguMiA3LjMgMTUuMSAxNS4xIDE4czE2LjcgMS42IDIzLjMtMy42YzIuNy0yLjEgNi4xLTMuNCA5LjktMy40IDguOCAwIDE2IDcuMiAxNiAxNmwwIDEyMGMwIDM5LjgtMzIuMiA3Mi03MiA3MmwtMTE2LjYgMGMtMzcuNCAwLTcyLjQtMTguNy05My4yLTQ5LjlMNTAuNyAzMTIuOWMtNC45LTcuNC0yLjktMTcuMyA0LjQtMjIuMnMxNy4zLTIuOSAyMi4yIDQuNEwxMTYgMzUzLjJjNS45IDguOCAxNi44IDEyLjcgMjYuOSA5LjdzMTctMTIuNCAxNy0yM0wxNjAgNjR6TTE3NiAwYy0zNS4zIDAtNjQgMjguNy02NCA2NGwwIDE5Ny43QzkxLjIgMjM4IDU1LjUgMjMyLjggMjguNSAyNTAuNy0uOSAyNzAuNC04LjkgMzEwLjEgMTAuOCAzMzkuNUw3OC4zIDQ0MC44YzI5LjcgNDQuNSA3OS42IDcxLjIgMTMzLjEgNzEuMkwzMjggNTEyYzY2LjMgMCAxMjAtNTMuNyAxMjAtMTIwbDAtMTIwYzAtMzUuMy0yOC43LTY0LTY0LTY0LTQuNSAwLTguOCAuNS0xMyAxLjMtMTEuNy0xNS40LTMwLjItMjUuMy01MS0yNS4zLTYuOSAwLTEzLjUgMS4xLTE5LjcgMy4xLTExLjYtMTYuNC0zMC43LTI3LjEtNTIuMy0yNy4xLTIuNyAwLTUuNCAuMi04IC41TDI0MCA2NGMwLTM1LjMtMjguNy02NC02NC02NHptNDggMzA0YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2bDAgOTZjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmwwLTk2em00OC0xNmMtOC44IDAtMTYgNy4yLTE2IDE2bDAgOTZjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmwwLTk2YzAtOC44LTcuMi0xNi0xNi0xNnptODAgMTZjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZsMCA5NmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtOTZ6Il19LFpSdD17cHJlZml4OiJmYXIiLGljb25OYW1lOiJyZWdpc3RlcmVkIixpY29uOls1MTIsNTEyLFsxNzRdLCJmMjVkIiwiTTI1NiA0OGEyMDggMjA4IDAgMSAxIDAgNDE2IDIwOCAyMDggMCAxIDEgMC00MTZ6bTAgNDY0YTI1NiAyNTYgMCAxIDAgMC01MTIgMjU2IDI1NiAwIDEgMCAwIDUxMnpNMjAwIDE0NGMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCAxNzZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTU2IDM0LjQgMCA0MSA2OC4zYzYuOCAxMS40IDIxLjYgMTUgMzIuOSA4LjJzMTUtMjEuNiA4LjItMzIuOWwtMzAuMi01MC4zYzI0LjYtMTEuNSA0MS42LTM2LjQgNDEuNi02NS4zIDAtMzkuOC0zMi4yLTcyLTcyLTcybC04MCAwem03MiA5NmwtNDggMCAwLTQ4IDU2IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTggMHoiXX0sZldhPXtmYVNxdWFyZU1pbnVzOmlnZSxmYU1pbnVzU3F1YXJlOlBJdCxmYUNhbGVuZGFyQ2hlY2s6SUl0LGZhRmFjZUtpc3M6cmdlLGZhS2lzczpBSXQsZmFQYXN0ZTpRMyxmYUZpbGVDbGlwYm9hcmQ6Tkl0LGZhSGFuZFBvaW50TGVmdDpSSXQsZmFGaWxlRXhjZWw6T0l0LGZhRW52ZWxvcGU6Rkl0LGZhU3F1YXJlQ2FyZXREb3duOm9nZSxmYUNhcmV0U3F1YXJlRG93bjpCSXQsZmFUcnVjazpISXQsZmFCZWxsOnFJdCxmYU1lc3NhZ2U6SjMsZmFDb21tZW50QWx0OmpJdCxmYUZhY2VEaXp6eTpuZ2UsZmFEaXp6eTpWSXQsZmFDYWxlbmRhckRheXM6bGdlLGZhQ2FsZW5kYXJBbHQ6VUl0LGZhSGFuZFBvaW50VXA6V0l0LGZhSGFuZExpemFyZDpHSXQsZmFTcXVhcmVGdWxsOktJdCxmYUNpcmNsZVBhdXNlOmNnZSxmYVBhdXNlQ2lyY2xlOllJdCxmYUhhcmREcml2ZTpkZ2UsZmFIZGQ6Wkl0LGZhRmlsZVppcHBlcjp1Z2UsZmFGaWxlQXJjaGl2ZTpYSXQsZmFGbG9wcHlEaXNrOnBnZSxmYVNhdmU6UUl0LGZhRmFjZUdyaW5Ub25ndWVTcXVpbnQ6aGdlLGZhR3JpblRvbmd1ZVNxdWludDpKSXQsZmFDYW1lcmE6ZmdlLGZhQ2FtZXJhQWx0OmVBdCxmYUZhY2VHcmluU3RhcnM6bWdlLGZhR3JpblN0YXJzOnRBdCxmYUV5ZTphQXQsZmFGYWNlU2FkVGVhcjpnZ2UsZmFTYWRUZWFyOnNBdCxmYVNoYXJlRnJvbVNxdWFyZTpiZ2UsZmFTaGFyZVNxdWFyZTppQXQsZmFOb3RlU3RpY2t5OnZnZSxmYVN0aWNreU5vdGU6ckF0LGZhSGFuZEJhY2tGaXN0OnhnZSxmYUhhbmRSb2NrOm9BdCxmYUNoZXNzUXVlZW46bkF0LGZhRmFjZUdyaW5UZWFyczp5Z2UsZmFHcmluVGVhcnM6bEF0LGZhUGVuVG9TcXVhcmU6d2dlLGZhRWRpdDpjQXQsZmFGYWNlR3JpbkJlYW1Td2VhdDprZ2UsZmFHcmluQmVhbVN3ZWF0OmRBdCxmYUNsb2NrOlNnZSxmYUNsb2NrRm91cjp1QXQsZmFGYWNlTGF1Z2hXaW5rOl9nZSxmYUxhdWdoV2luazpwQXQsZmFQYXBlclBsYW5lOmhBdCxmYUhlYXJ0OmZBdCxmYUZvbnRBd2Vzb21lOlpyZSxmYUZvbnRBd2Vzb21lRmxhZzptQXQsZmFGb250QXdlc29tZUxvZ29GdWxsOmdBdCxmYUNsb25lOmJBdCxmYUZvbGRlck9wZW46dkF0LGZhV2luZG93TWluaW1pemU6eEF0LGZhU3RhckhhbGY6eUF0LGZhQWxhcm1DbG9jazp3QXQsZmFOZXdzcGFwZXI6a0F0LGZhSG9zcGl0YWw6WHJlLGZhSG9zcGl0YWxBbHQ6U0F0LGZhSG9zcGl0YWxXaWRlOl9BdCxmYUNpcmNsZVN0b3A6TWdlLGZhU3RvcENpcmNsZTpNQXQsZmFPYmplY3RVbmdyb3VwOnpBdCxmYUNvbW1lbnQ6Q0F0LGZhQ2hlc3NQYXduOlRBdCxmYUNhbGVuZGFyUGx1czokQXQsZmFDbGlwYm9hcmQ6REF0LGZhVGh1bWJzRG93bjpMQXQsZmFJZEJhZGdlOkVBdCxmYVNxdWFyZUNoZWNrOnpnZSxmYUNoZWNrU3F1YXJlOlBBdCxmYUNoZXNzQmlzaG9wOklBdCxmYUVudmVsb3BlT3BlbjpBQXQsZmFDaXJjbGVYbWFyazp1aCxmYVRpbWVzQ2lyY2xlOk5BdCxmYVhtYXJrQ2lyY2xlOlJBdCxmYVNxdWFyZUNhcmV0VXA6Q2dlLGZhQ2FyZXRTcXVhcmVVcDpPQXQsZmFGaWxlSW1hZ2U6RkF0LGZhU3F1YXJlQ2FyZXRSaWdodDpUZ2UsZmFDYXJldFNxdWFyZVJpZ2h0OkJBdCxmYVN1bjpFYixmYUltYWdlOkhBdCxmYUxpZ2h0YnVsYjpxQXQsZmFBZGRyZXNzQ2FyZDpRcmUsZmFDb250YWN0Q2FyZDpqQXQsZmFWY2FyZDpWQXQsZmFGYWNlTWVoOiRnZSxmYU1laDpVQXQsZmFNYXA6V0F0LGZhSGFuZFBvaW50RG93bjpHQXQsZmFGYWNlTWVoQmxhbms6RGdlLGZhTWVoQmxhbms6S0F0LGZhRmFjZUdyaW5Ub25ndWU6TGdlLGZhR3JpblRvbmd1ZTpZQXQsZmFGdXRib2w6SnJlLGZhRnV0Ym9sQmFsbDpaQXQsZmFTb2NjZXJCYWxsOlhBdCxmYUZhY2VTdXJwcmlzZTpFZ2UsZmFTdXJwcmlzZTpRQXQsZmFGb2xkZXI6UGdlLGZhRm9sZGVyQmxhbms6SkF0LGZhQ2xvdWQ6ZU50LGZhQ2lyY2xlOnROdCxmYUZhY2VHcmluU3F1aW50OklnZSxmYUdyaW5TcXVpbnQ6YU50LGZhQ2lyY2xlVXNlcjpBZ2UsZmFVc2VyQ2lyY2xlOnNOdCxmYVJlY3RhbmdsZUxpc3Q6TmdlLGZhTGlzdEFsdDppTnQsZmFIYW5kOlJnZSxmYUhhbmRQYXBlcjpyTnQsZmFUaHVtYnNVcDpvTnQsZmFCdWlsZGluZzpuTnQsZmFDaGVzc1Jvb2s6bE50LGZhQ2lyY2xlUXVlc3Rpb246T2dlLGZhUXVlc3Rpb25DaXJjbGU6Y050LGZhRmlsZTpkTnQsZmFGYWNlU2FkQ3J5OkZnZSxmYVNhZENyeTp1TnQsZmFDYWxlbmRhck1pbnVzOnBOdCxmYUZhY2VUaXJlZDpCZ2UsZmFUaXJlZDpoTnQsZmFIYW5kUG9pbnRSaWdodDpmTnQsZmFDaXJjbGVVcDpIZ2UsZmFBcnJvd0FsdENpcmNsZVVwOm1OdCxmYUhhbmRTY2lzc29yczpnTnQsZmFHZW06Yk50LGZhUmVjdGFuZ2xlWG1hcms6S2ssZmFSZWN0YW5nbGVUaW1lczp2TnQsZmFUaW1lc1JlY3RhbmdsZTp4TnQsZmFXaW5kb3dDbG9zZTp5TnQsZmFUcmFzaENhbjplZixmYVRyYXNoQWx0OndOdCxmYUxpZmVSaW5nOmtOdCxmYUNvcHlyaWdodDpTTnQsZmFDaXJjbGVMZWZ0OnFnZSxmYUFycm93QWx0Q2lyY2xlTGVmdDpfTnQsZmFDYWxlbmRhcjpNTnQsZmFGYWNlRnJvd25PcGVuOmpnZSxmYUZyb3duT3Blbjp6TnQsZmFDaGFydEJhcjpWZ2UsZmFCYXJDaGFydDpDTnQsZmFIb3VzZTpZayxmYUhvbWU6VE50LGZhSG9tZUFsdDokTnQsZmFIb21lTGdBbHQ6RE50LGZhRmFjZUZyb3duOlVnZSxmYUZyb3duOkxOdCxmYVVzZXI6ZW9lLGZhVXNlckFsdDpFTnQsZmFVc2VyTGFyZ2U6UE50LGZhU25vd2ZsYWtlOklOdCxmYUJvb2ttYXJrOkFOdCxmYVNxdWFyZUNhcmV0TGVmdDpXZ2UsZmFDYXJldFNxdWFyZUxlZnQ6Tk50LGZhSGFuZHNoYWtlOnRvZSxmYUhhbmRzaGFrZUFsdDpSTnQsZmFIYW5kc2hha2VTaW1wbGU6T050LGZhRmFjZVNtaWxlV2luazpHZ2UsZmFTbWlsZVdpbms6Rk50LGZhRmFjZUdyaW5TcXVpbnRUZWFyczpLZ2UsZmFHcmluU3F1aW50VGVhcnM6Qk50LGZhRmlsZUF1ZGlvOkhOdCxmYUNhbGVuZGFyWG1hcms6WWdlLGZhQ2FsZW5kYXJUaW1lczpxTnQsZmFDaXJjbGVEb3duOlpnZSxmYUFycm93QWx0Q2lyY2xlRG93bjpqTnQsZmFGaWxlTGluZXM6YW9lLGZhRmlsZUFsdDpWTnQsZmFGaWxlVGV4dDpVTnQsZmFDb21tZW50czpXTnQsZmFDaXJjbGVDaGVjazp0ZixmYUNoZWNrQ2lyY2xlOkdOdCxmYU1vb246S050LGZhQ2xvc2VkQ2FwdGlvbmluZzpZTnQsZmFJbWFnZXM6Wk50LGZhQ2lyY2xlUmlnaHQ6WGdlLGZhQXJyb3dBbHRDaXJjbGVSaWdodDpYTnQsZmFJZENhcmQ6UWdlLGZhRHJpdmVyc0xpY2Vuc2U6UU50LGZhQ2lyY2xlUGxheTpKZ2UsZmFQbGF5Q2lyY2xlOkpOdCxmYUZhY2VMYXVnaEJlYW06ZTdlLGZhTGF1Z2hCZWFtOmVSdCxmYUFkZHJlc3NCb29rOnQ3ZSxmYUNvbnRhY3RCb29rOnRSdCxmYUhvdXJnbGFzczphN2UsZmFIb3VyZ2xhc3NFbXB0eTphUnQsZmFIZWFkcGhvbmVzOnNvZSxmYUhlYWRwaG9uZXNBbHQ6c1J0LGZhSGVhZHBob25lc1NpbXBsZTppUnQsZmFGaWxlUG93ZXJwb2ludDpyUnQsZmFXaW5kb3dNYXhpbWl6ZTpvUnQsZmFDb21tZW50RG90czpzN2UsZmFDb21tZW50aW5nOm5SdCxmYUZhY2VHcmluVG9uZ3VlV2luazppN2UsZmFHcmluVG9uZ3VlV2luazpsUnQsZmFIb3VyZ2xhc3NIYWxmOnI3ZSxmYUhvdXJnbGFzczI6Y1J0LGZhQ3JlZGl0Q2FyZDpvN2UsZmFDcmVkaXRDYXJkQWx0OmRSdCxmYUhhbmRTcG9jazp1UnQsZmFCZWxsU2xhc2g6cFJ0LGZhU3RhcjpoUnQsZmFGbGFnOmZSdCxmYUxlbW9uOm1SdCxmYVdpbmRvd1Jlc3RvcmU6Z1J0LGZhRmFjZUdyaW5IZWFydHM6bjdlLGZhR3JpbkhlYXJ0czpiUnQsZmFGYWNlS2lzc0JlYW06bDdlLGZhS2lzc0JlYW06dlJ0LGZhRmlsZVBkZjp4UnQsZmFGYWNlR3JpbldpZGU6YzdlLGZhR3JpbkFsdDp5UnQsZmFGYWNlTGF1Z2hTcXVpbnQ6ZDdlLGZhTGF1Z2hTcXVpbnQ6d1J0LGZhRmFjZUtpc3NXaW5rSGVhcnQ6dTdlLGZhS2lzc1dpbmtIZWFydDprUnQsZmFDb3B5OlBiLGZhQ2hlc3NLaW5nOlNSdCxmYVNxdWFyZVBsdXM6cDdlLGZhUGx1c1NxdWFyZTpfUnQsZmFGaWxlQ29kZTpNUnQsZmFGYWNlR3Jpbldpbms6aDdlLGZhR3Jpbldpbms6elJ0LGZhTW9uZXlCaWxsMTpmN2UsZmFNb25leUJpbGxBbHQ6Q1J0LGZhRXllU2xhc2g6VFJ0LGZhRmlsZVdvcmQ6JFJ0LGZhRmFjZUFuZ3J5Om03ZSxmYUFuZ3J5OkRSdCxmYUNoZXNzS25pZ2h0OkxSdCxmYUZhY2VHcmluQmVhbTpnN2UsZmFHcmluQmVhbTpFUnQsZmFIYW5kUGVhY2U6UFJ0LGZhQ29tcGFzczpJUnQsZmFTcXVhcmU6QVJ0LGZhRmFjZUdyaW46YjdlLGZhR3JpbjpOUnQsZmFGYWNlU21pbGU6djdlLGZhU21pbGU6UlJ0LGZhRmFjZVNtaWxlQmVhbTp4N2UsZmFTbWlsZUJlYW06T1J0LGZhRm9sZGVyQ2xvc2VkOkZSdCxmYUtleWJvYXJkOkJSdCxmYUZhY2VSb2xsaW5nRXllczp5N2UsZmFNZWhSb2xsaW5nRXllczpIUnQsZmFGYWNlR3JpbWFjZTp3N2UsZmFHcmltYWNlOnFSdCxmYUNpcmNsZURvdDprN2UsZmFEb3RDaXJjbGU6alJ0LGZhT2JqZWN0R3JvdXA6VlJ0LGZhRmFjZUZsdXNoZWQ6UzdlLGZhRmx1c2hlZDpVUnQsZmFTdGFySGFsZlN0cm9rZTpfN2UsZmFTdGFySGFsZkFsdDpXUnQsZmFGaWxlVmlkZW86R1J0LGZhRmFjZUxhdWdoOk03ZSxmYUxhdWdoOktSdCxmYUhhbmRQb2ludGVyOllSdCxmYVJlZ2lzdGVyZWQ6WlJ0fX0pO3ZhciBtV2EsWFJ0LFFSdCxKUnQsZU90LHRPdCxhT3Qsc090LGlPdCxyT3Qsb090LGlvZSxuT3QsbE90LGNPdCxkT3QsQzdlLHVPdCxUN2UscE90LGhPdCxmT3QsJDdlLG1PdCxnT3QsYk90LHZPdCxhZix4T3QseU90LEQ3ZSx3T3Qsa090LFNPdCxfT3QsTU90LHpPdCxDT3QsVE90LEw3ZSwkT3QsRE90LExPdCxFN2UsRU90LFBPdCxJT3QsQU90LE5PdCxzZixST3QsUDdlLE9PdCxGT3Qscm9lLEJPdCxIT3QsSTdlLHFPdCxBN2Usak90LFZPdCxON2UsVU90LFI3ZSxXT3QsTzdlLEdPdCxLT3QsWU90LFpPdCxYT3QsUU90LEpPdCxGN2UsZUZ0LHRGdCxhRnQsc0Z0LEI3ZSxpRnQsckZ0LG9GdCxuRnQsbEZ0LGNGdCxvb2UsZEZ0LHVGdCxwRnQsbm9lLGhGdCxmRnQsbUZ0LEg3ZSxnRnQsYkZ0LHZGdCx4RnQscTdlLHlGdCxPYix3RnQsRmIsa0Z0LFNGdCxqN2UsX0Z0LFY3ZSxNRnQsekZ0LGxvZSxDRnQsVEZ0LCRGdCxERnQsTEZ0LEVGdCxQRnQsSUZ0LEJiLHJmLEFGdCxORnQsVTdlLFJGdCxPRnQsWmssRkZ0LEJGdCxIRnQsVzdlLHFGdCxqRnQsVkZ0LEc3ZSxVRnQsSzdlLFdGdCxHRnQsS0Z0LFlGdCxZN2UsWkZ0LFhGdCxRRnQsWjdlLEpGdCxYN2UsZUJ0LHRCdCxhQnQsc0J0LGNvZSxpQnQsckJ0LG9CdCxuQnQsbEJ0LGNCdCxkQnQsUTdlLHVCdCxwQnQsaEJ0LGZCdCxtQnQsSjdlLGdCdCxiQnQsWGssdkJ0LHhCdCx5QnQsd0J0LGtCdCxTQnQsZG9lLF9CdCxNQnQsekJ0LENCdCxUQnQsZTllLCRCdCxEQnQsTEJ0LEVCdCxQQnQsSUJ0LHQ5ZSxBQnQsTkJ0LFJCdCxPQnQsYTllLEZCdCxCQnQsSEJ0LHM5ZSxxQnQsakJ0LGk5ZSxWQnQscjllLFVCdCxXQnQsbzllLEdCdCxLQnQsbjllLFlCdCxsOWUsWkJ0LFhCdCxvZixRQnQsbmYsSkJ0LGVIdCx1b2UsdEh0LGFIdCxzSHQsYzllLGlIdCxySHQsZDllLG9IdCxuSHQsbEh0LGNIdCx1OWUsZEh0LHVIdCxwSHQsaEh0LGZIdCxwOWUsbUh0LGdIdCxiSHQsdkh0LGg5ZSx4SHQsZjllLHlIdCx3SHQsa0h0LFNIdCxfSHQsbTllLE1IdCx6SHQsQ0h0LFRIdCxnOWUsJEh0LERIdCxiOWUsTEh0LHY5ZSxFSHQsUEh0LElIdCxBSHQsTkh0LFJIdCx4OWUsT0h0LEZIdCxCSHQsSEh0LHFIdCx5OWUsakh0LFZIdCxVSHQsV0h0LHc5ZSxHSHQsazllLEtIdCxIYixxYixTOWUsWUh0LF85ZSxaSHQsWEh0LFFIdCxmaCxNOWUsSkh0LGVxdCx0cXQsYXF0LHNxdCxpcXQsejllLHJxdCxqYixvcXQsbnF0LGxxdCxjcXQsZHF0LEM5ZSx1cXQsVDllLHBxdCxocXQsZnF0LG1xdCwkOWUsZ3F0LHBvZSxicXQsdnF0LHhxdCxEOWUseXF0LHdxdCxrcXQsU3F0LEw5ZSxfcXQsTXF0LHpxdCxDcXQsRTllLFRxdCwkcXQsRHF0LExxdCxFcXQsUHF0LElxdCxBcXQsTnF0LFJxdCxPcXQsRnF0LEJxdCxQOWUsSHF0LHFxdCxqcXQsVnF0LFVxdCxXcXQsR3F0LEk5ZSxLcXQsWXF0LFpxdCxJYixYcXQsUXF0LEpxdCxlanQsdGp0LEE5ZSxhanQsTjllLHNqdCxSOWUsaWp0LE85ZSxyanQsRjllLG9qdCxsZixuanQsQjllLGxqdCxIOWUsY2p0LHE5ZSxkanQsdWp0LHBqdCxoanQsajllLGZqdCxtanQsVjllLGdqdCxianQsVTllLHZqdCx4anQseWp0LHdqdCxXOWUsa2p0LFNqdCxfanQsRzllLE1qdCx6anQsUWssQ2p0LFRqdCwkanQsRGp0LExqdCxFanQsSzllLFBqdCxZOWUsSWp0LEFqdCxOanQsWjllLFJqdCxPanQsRmp0LFg5ZSxCanQsUTllLEhqdCxob2UscWp0LGpqdCxWanQsVWp0LFdqdCxHanQsS2p0LFlqdCxaanQsWGp0LFFqdCxKanQsZVZ0LHRWdCxKayxhVnQsc1Z0LGlWdCxyVnQsb1Z0LG5WdCxsVnQsY1Z0LEo5ZSxkVnQsdVZ0LHBWdCxoVnQsZlZ0LG1WdCxnVnQsYlZ0LHZWdCx4VnQsZWJlLHlWdCx3VnQsa1Z0LFNWdCxfVnQsTVZ0LHpWdCx0YmUsQ1Z0LGFiZSxUVnQsJFZ0LHNiZSxEVnQsTFZ0LEVWdCxQVnQsaWJlLElWdCxBVnQsTlZ0LHJiZSxSVnQsb2JlLE9WdCxGVnQsbmJlLEJWdCxIVnQscVZ0LGpWdCxsYmUsVlZ0LFVWdCxXVnQsVmIsR1Z0LEtWdCxZVnQsY2JlLFpWdCxYVnQsUVZ0LEpWdCxlVXQsZGJlLHRVdCxhVXQsc1V0LGlVdCxyVXQsdWJlLG9VdCxuVXQsbFV0LHBiZSxjVXQsZFV0LGZvZSx1VXQscFV0LGhVdCxmVXQsaGJlLG1VdCxnVXQsYlV0LGZiZSx2VXQsbWJlLHhVdCx5VXQsd1V0LGtVdCxjZixTVXQsZ2JlLF9VdCxNVXQselV0LENVdCxUVXQsYmJlLCRVdCx2YmUsRFV0LHhiZSxMVXQsRVV0LG1vZSxQVXQsSVV0LHliZSxBVXQsZ29lLE5VdCxSVXQsT1V0LEZVdCxCVXQsSFV0LHFVdCxqVXQsd2JlLFZVdCxVVXQsV1V0LEdVdCxLVXQsa2JlLFlVdCxaVXQsWFV0LFNiZSxRVXQsX2JlLEpVdCxNYmUsZVd0LHRXdCxhV3Qsc1d0LGlXdCxyV3Qsb1d0LHpiZSxuV3QsbFd0LGNXdCxkV3QsQ2JlLHVXdCxwV3QsaFd0LGZXdCxtV3QsZ1d0LFRiZSxiV3Qsdld0LCRiZSx4V3QseVd0LERiZSx3V3Qsa1d0LFNXdCxfV3QsTGJlLE1XdCx6V3QsQ1d0LEViZSxUV3QsUGJlLCRXdCxEV3QsTFd0LEVXdCxJYmUsUFd0LElXdCxBV3QsTld0LFJXdCxBYmUsT1d0LE5iZSxGV3QsUmJlLEJXdCxIV3QsT2JlLHFXdCxGYmUsald0LFZXdCxVV3QsV1d0LEdXdCxLV3QsWVd0LFpXdCxYV3QsUVd0LEpXdCxib2UsZUd0LHRHdCxwaCxhR3Qsc0d0LGlHdCx2b2Usckd0LG9HdCxuR3QsbEd0LGNHdCxkR3QsdUd0LEJiZSxwR3QsSGJlLGhHdCxmR3QsbUd0LHFiZSxnR3QsamJlLGJHdCx2R3QseG9lLHhHdCx5R3Qsd0d0LGtHdCxBYixTR3QsX0d0LE1HdCx6R3QsQ0d0LFRHdCwkR3QsVmJlLERHdCxMR3QsRUd0LFBHdCxVYmUsSUd0LEFHdCxOR3QsUkd0LE9HdCxGR3QsQkd0LFdiZSxIR3QscUd0LGpHdCxWR3QsVUd0LFdHdCxHYmUsR0d0LFViLEtiZSxLR3QsWUd0LFpHdCxZYmUsWEd0LFpiZSxRR3QsSkd0LGVLdCxYYmUsdEt0LGFLdCxRYmUsc0t0LGlLdCxyS3Qsb0t0LEpiZSxuS3QsbEt0LGNLdCxkS3QsdUt0LHBLdCxldmUsaEt0LGZLdCxXYixtS3QsZ0t0LHR2ZSxiS3Qsdkt0LHhLdCxlUyx5S3Qsd0t0LGtLdCxTS3QsdFMsX0t0LE1LdCx6S3QsQ0t0LFRLdCwkS3QsYXZlLERLdCx5b2UsTEt0LEVLdCxQS3Qsc3ZlLElLdCxBS3QsTkt0LFJLdCxPS3QsRkt0LEJLdCxpdmUsSEt0LEdiLHFLdCxqS3QsVkt0LHJ2ZSxVS3Qsb3ZlLFdLdCxHS3QsbnZlLEtLdCxhUyxZS3QsWkt0LFhLdCxRS3QsSkt0LGVZdCx0WXQsYVl0LHNZdCxsdmUsaVl0LHJZdCxvWXQsbll0LHdvZSxsWXQsY1l0LGN2ZSxkWXQsdVl0LHBZdCxkdmUsaFl0LGZZdCxtWXQsdXZlLGdZdCxiWXQsdll0LHhZdCx5WXQsd1l0LGtZdCxTWXQsX1l0LHB2ZSxNWXQsaHZlLHpZdCxDWXQsVFl0LCRZdCxEWXQsTFl0LEVZdCxmdmUsUFl0LElZdCxBWXQsbXZlLE5ZdCxSWXQsZ3ZlLE9ZdCxidmUsRll0LHZ2ZSxCWXQsSFl0LHFZdCx4dmUsall0LHl2ZSxWWXQsd3ZlLFVZdCxXWXQsa3ZlLEdZdCxTdmUsS1l0LF92ZSxZWXQsWll0LE12ZSxYWXQsUVl0LEpZdCxlWnQsdFp0LGFadCxzWnQsaVp0LHJadCxvWnQsenZlLG5adCxDdmUsbFp0LFR2ZSxjWnQsZFp0LEtiLHVadCwkdmUscFp0LGhadCxmWnQsRHZlLG1adCxnWnQsTHZlLGJadCxkZix2WnQseFp0LHladCxFdmUsd1p0LFB2ZSxrWnQsU1p0LEl2ZSxfWnQsQXZlLE1adCxOdmUselp0LENadCxUWnQsJFp0LERadCxSdmUsTFp0LE92ZSxFWnQsUFp0LEladCxBWnQsRnZlLE5adCxSWnQsT1p0LEJ2ZSxGWnQsQlp0LEhadCxIdmUscVp0LGpadCxWWnQsVVp0LHF2ZSxXWnQsR1p0LGp2ZSxLWnQsWVp0LFpadCxWdmUsWFp0LFFadCxKWnQsVXZlLGVYdCxXdmUsdFh0LGtvZSxhWHQsc1h0LGlYdCxHdmUsclh0LG9YdCxuWHQsS3ZlLGxYdCxjWHQsZFh0LFl2ZSx1WHQscFh0LGhYdCxmWHQsbVh0LGdYdCxiWHQsdlh0LHhYdCx5WHQsd1h0LGtYdCxadmUsU1h0LFliLF9YdCxYdmUsTVh0LHpYdCxDWHQsVFh0LFF2ZSwkWHQsRFh0LExYdCxFWHQsUFh0LElYdCxBWHQsc1MsTlh0LFJYdCxPWHQsRlh0LHVmLEJYdCxKdmUsSFh0LHFYdCxqWHQsZXhlLFZYdCxVWHQsdHhlLFdYdCxHWHQsS1h0LFlYdCxaWHQsYXhlLFhYdCxzeGUsUVh0LEpYdCxlUXQsaXhlLHRRdCxhUXQsc1F0LHJ4ZSxpUXQsclF0LG9RdCxuUXQsbFF0LGNRdCxkUXQsb3hlLHVRdCxaYixwUXQsaFF0LGZRdCxueGUsbVF0LGdRdCxseGUsYlF0LGN4ZSx2UXQseFF0LHlRdCxkeGUsd1F0LHV4ZSxrUXQscHhlLFNRdCxfUXQsaHhlLE1RdCx6UXQsQ1F0LFRRdCxmeGUsJFF0LGlTLERRdCxMUXQsRVF0LFBRdCxteGUsSVF0LGd4ZSxBUXQsTlF0LFJRdCxPUXQsYnhlLEZRdCxyUyxCUXQsSFF0LHFRdCx2eGUsalF0LFZRdCxVUXQsV1F0LHh4ZSxHUXQseXhlLEtRdCxZUXQsWlF0LHd4ZSxYUXQsa3hlLFFRdCxKUXQsU3hlLGVKdCxfeGUsdEp0LE14ZSxhSnQsenhlLHNKdCxpSnQsckp0LG9KdCxDeGUsbkp0LGxKdCxjSnQsZEp0LHVKdCxwSnQsaEp0LGZKdCxUeGUsbUp0LCR4ZSxnSnQsYkp0LHZKdCx4SnQsRHhlLHlKdCx3SnQsU29lLGtKdCxTSnQsX0p0LE1KdCx6SnQsQ0p0LFRKdCxvUywkSnQsREp0LExKdCxFSnQsUEp0LElKdCxBSnQsTkp0LFJKdCxPSnQsRkp0LEJKdCxISnQsX29lLHFKdCxqSnQsVkp0LFVKdCxXSnQsR0p0LEx4ZSxLSnQsRXhlLFlKdCxaSnQsWEp0LE1vZSxRSnQsSkp0LGVlYSxQeGUsdGVhLHpvZSxhZWEsc2VhLGllYSxyZWEsWGIsQ29lLG9lYSxuZWEsSXhlLGxlYSxjZWEsZGVhLHVlYSxBeGUscGVhLGhlYSxOeGUsZmVhLG1lYSxSeGUsZ2VhLGJlYSx2ZWEseGVhLHllYSx3ZWEsVG9lLGtlYSxTZWEsT3hlLF9lYSxNZWEsemVhLENlYSxUZWEsJGVhLERlYSxMZWEsRnhlLEVlYSxQZWEsQnhlLEllYSxIeGUsQWVhLE5lYSx6ZCxSZWEsT2VhLEZlYSxCZWEscXhlLEhlYSxxZWEsamVhLFZlYSxqeGUsVWVhLFZ4ZSxXZWEsJG9lLEdlYSxLZWEsWWVhLFV4ZSxaZWEsUWIsWGVhLFFlYSxXeGUsSmVhLERvZSxldGEsdHRhLGF0YSxzdGEsaXRhLHJ0YSxwZixvdGEsbnRhLEd4ZSxsdGEsY3RhLGR0YSxLeGUsdXRhLFl4ZSxwdGEsblMsaHRhLGZ0YSxtdGEsZ3RhLGJ0YSx2dGEseHRhLFp4ZSx5dGEsd3RhLFh4ZSxrdGEsUXhlLFN0YSxKeGUsX3RhLE10YSx6dGEsQ3RhLFR0YSwkdGEsZXllLER0YSxMdGEsRXRhLFB0YSxJdGEsdHllLEF0YSxheWUsTnRhLHN5ZSxSdGEsT3RhLEZ0YSxMb2UsQnRhLEh0YSxxdGEsanRhLFZ0YSxpeWUsVXRhLHJ5ZSxXdGEsR3RhLEt0YSxZdGEsb3llLFp0YSxueWUsWHRhLFF0YSxFb2UsSnRhLGVhYSx0YWEsYWFhLHNhYSxseWUsaWFhLHJhYSxjeWUsb2FhLGR5ZSxuYWEsbGFhLGNhYSxkYWEsdWFhLHBhYSxoYWEsZmFhLG1hYSxnYWEsdXllLGJhYSx2YWEseGFhLHlhYSxQb2Usd2FhLGthYSxTYWEsX2FhLHB5ZSxNYWEsemFhLGh5ZSxDYWEsVGFhLCRhYSxEYWEsZnllLExhYSxFYWEsUGFhLGhmLElhYSxBYWEsSW9lLE5hYSxSYWEsbXllLE9hYSxGYWEsQmFhLEhhYSxxYWEsZ3llLGphYSxWYWEsYnllLFVhYSx2eWUsV2FhLEdhYSxLYWEsWWFhLFphYSx4eWUsWGFhLHl5ZSxRYWEsd3llLEphYSxlc2EsdHNhLGFzYSxreWUsc3NhLGlzYSxTeWUscnNhLG9zYSxuc2EsX3llLGxzYSxjc2EsQW9lLGRzYSx1c2EsTXllLHBzYSx6eWUsaHNhLEN5ZSxmc2EsSmIsVHllLG1zYSwkeWUsZ3NhLGJzYSx2c2EseHNhLHlzYSx3c2EsTm9lLGtzYSxTc2EsX3NhLER5ZSxNc2EsenNhLENzYSxSb2UsVHNhLCRzYSxEc2EsTHNhLE9vZSxFc2EsUHNhLElzYSxBc2EsTHllLE5zYSxFeWUsUnNhLE9zYSxGc2EsQnNhLEhzYSxGb2UscXNhLGpzYSxWc2EsVXNhLFdzYSxHc2EsQm9lLEtzYSxZc2EsWnNhLFB5ZSxYc2EsUXNhLEpzYSxlaWEsSXllLHRpYSxhaWEsc2lhLGlpYSxyaWEsb2lhLEF5ZSxuaWEsbGlhLGNpYSxkaWEsTnllLHVpYSxwaWEsbFMsaGlhLGZpYSxtaWEsUnllLGdpYSxiaWEsdmlhLHhpYSx5aWEsd2lhLGtpYSxTaWEsX2lhLE95ZSxNaWEsemlhLEZ5ZSxDaWEsVGlhLCRpYSxCeWUsRGlhLExpYSxFaWEsUGlhLElpYSxIeWUsQWlhLGV2LHF5ZSxOaWEsUmlhLE9pYSxGaWEsQmlhLGp5ZSxIaWEscWlhLGppYSxWaWEsVWlhLFZ5ZSxXaWEsR2lhLEtpYSxZaWEsWmlhLEhvZSxYaWEsUWlhLEppYSxlcmEsdHJhLFV5ZSxhcmEsV3llLHNyYSxpcmEscnJhLHFvZSxvcmEsbnJhLGxyYSxHeWUsY3JhLEt5ZSxkcmEsdXJhLHByYSxocmEsZnJhLG1yYSxZeWUsZ3JhLGJyYSxaeWUsdnJhLFh5ZSx4cmEsUXllLHlyYSx3cmEsSnllLGtyYSxld2UsU3JhLF9yYSxNcmEsenJhLENyYSxUcmEsJHJhLERyYSxMcmEsdHdlLEVyYSxQcmEsam9lLElyYSxBcmEsYXdlLE5yYSxScmEsT3JhLHN3ZSxGcmEsQnJhLEhyYSxxcmEsaXdlLGpyYSxWcmEsVXJhLFdyYSxHcmEscndlLEtyYSxZcmEsWnJhLFZvZSxYcmEsUXJhLEpyYSxlb2EsdG9hLGFvYSxVb2Usc29hLGlvYSxyb2Esb3dlLG9vYSxud2Usbm9hLGxvYSxjb2EsZG9hLGx3ZSx1b2EsY3dlLHBvYSxob2EsZHdlLGZvYSxtb2EsdXdlLGdvYSxib2Esdm9hLHhvYSxwd2UseW9hLHdvYSxrb2EsU29hLGZmLF9vYSx0dixNb2Esem9hLENvYSxUb2EsaHdlLCRvYSxmd2UsRG9hLExvYSxFb2EsUG9hLGNTLElvYSxBb2EsTm9hLGRTLFJvYSxPb2EsRm9hLG13ZSxCb2EsSG9hLFdvZSxxb2Esam9hLFZvYSxVb2EsZ3dlLFdvYSxHb2EsS29hLGJ3ZSxZb2EsWm9hLFhvYSxRb2EsSm9hLHZ3ZSxlbmEsR29lLHRuYSxhbmEsc25hLGluYSxybmEsb25hLHh3ZSxubmEseXdlLGxuYSx3d2UsY25hLGRuYSxrd2UsdW5hLGF2LFN3ZSxwbmEsaG5hLGZuYSxfd2UsbW5hLGduYSxzdixNd2UsYm5hLHZuYSx4bmEseW5hLE5iLHduYSxrbmEsU25hLF9uYSx6d2UsTW5hLHpuYSxDbmEsQ3dlLFRuYSwkbmEsRG5hLExuYSxUd2UsRW5hLFBuYSxJbmEsQW5hLE5uYSxLb2UsUm5hLE9uYSxtZixGbmEsJHdlLEJuYSxEd2UsSG5hLHFuYSxqbmEsVm5hLEx3ZSxVbmEsV25hLEduYSxLbmEsRXdlLFluYSxabmEsWG5hLFB3ZSxRbmEsSm5hLGVsYSx0bGEsSXdlLGFsYSxzbGEsaWxhLEF3ZSxybGEsb2xhLG5sYSxnZixsbGEsY2xhLE53ZSxkbGEsUndlLHVsYSxPd2UscGxhLEZ3ZSxobGEsZmxhLEJ3ZSxtbGEsZ2xhLGJsYSx2bGEseGxhLHlsYSxId2Usd2xhLGtsYSxxd2UsU2xhLF9sYSxqd2UsTWxhLHpsYSxDbGEsVndlLFRsYSwkbGEsRGxhLExsYSxFbGEsUmIsUGxhLElsYSxBbGEsTmxhLFJsYSxPbGEsRmxhLEJsYSxIbGEscWxhLGpsYSxWbGEsVWxhLFdsYSxHbGEsS2xhLFlsYSxVd2UsWmxhLFhsYSxRbGEsSmxhLFd3ZSxlY2EsdGNhLGFjYSx1UyxzY2EsaWNhLHJjYSxvY2EsbmNhLEd3ZSxsY2EsYmYsY2NhLGRjYSx1Y2EsS3dlLHBjYSxoY2EsZmNhLG1jYSxZd2UsZ2NhLGJjYSxad2UsdmNhLHhjYSx5Y2EsWHdlLHdjYSxrY2EsUXdlLFNjYSxKd2UsX2NhLE1jYSx6Y2EsQ2NhLFRjYSxla2UsJGNhLERjYSxMY2EsdGtlLEVjYSxQY2EsSWNhLEFjYSxOY2EsUmNhLE9jYSxha2UsRmNhLHNrZSxCY2EsaWtlLEhjYSxZb2UscWNhLGpjYSxya2UsVmNhLG9rZSxVY2EsbmtlLFdjYSxHY2EsS2NhLFljYSxaY2EsWGNhLGxrZSxRY2EsY2tlLEpjYSxlMWEsdDFhLGExYSxzMWEsZGtlLGkxYSx1a2UscjFhLHBrZSxvMWEsaGtlLG4xYSxsMWEsYzFhLGQxYSxma2UsdTFhLHAxYSxab2UsaDFhLGYxYSxta2UsbTFhLGcxYSxiMWEsdjFhLGdrZSx4MWEseTFhLHcxYSxrMWEsYmtlLFMxYSxoaCxfMWEsTTFhLHZrZSx6MWEseGtlLEMxYSxUMWEsJDFhLFhvZSxEMWEsTDFhLEUxYSx5a2UsUDFhLHdrZSxJMWEsa2tlLEExYSxTa2UsTjFhLFIxYSxPMWEsRjFhLEIxYSxIMWEscTFhLFFvZSxqMWEsVjFhLFUxYSxXMWEsRzFhLF9rZSxLMWEsWTFhLFoxYSxYMWEsUTFhLEoxYSxNa2UsZTJhLHQyYSx6a2UsYTJhLHMyYSxKb2UsaTJhLHIyYSxvMmEsdmYsbjJhLGwyYSxjMmEsQ2tlLGQyYSxUa2UsdTJhLHAyYSxoMmEsZjJhLG0yYSwka2UsZzJhLGIyYSx2MmEseDJhLHkyYSxlbmUsdzJhLGsyYSxTMmEsXzJhLE0yYSxEa2UsejJhLExrZSxDMmEsVDJhLEVrZSwkMmEsUGtlLEQyYSxJa2UsTDJhLEFrZSxFMmEsUDJhLE5rZSxJMmEsQTJhLE4yYSxSMmEsTzJhLEYyYSxnV2EsUmtlPWcoKCk9PnttV2E9ImZhcyIsWFJ0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6IjAiLGljb246WzMyMCw1MTIsW10sIjMwIiwiTTAgMTkyQzAgMTAzLjYgNzEuNiAzMiAxNjAgMzJzMTYwIDcxLjYgMTYwIDE2MGwwIDEyOGMwIDg4LjQtNzEuNiAxNjAtMTYwIDE2MFMwIDQwOC40IDAgMzIwTDAgMTkyek0xNjAgOTZjLTUzIDAtOTYgNDMtOTYgOTZsMCAxMjhjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NmwwLTEyOGMwLTUzLTQzLTk2LTk2LTk2eiJdfSxRUnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiMSIsaWNvbjpbMjU2LDUxMixbXSwiMzEiLCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NFMxNC4zIDk2IDMyIDk2bDY0IDAgMCAzMjAtNjQgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwxOTIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtNjQgMCAwLTM1MmMwLTE3LjctMTQuMy0zMi0zMi0zMkwzMiAzMnoiXX0sSlJ0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6IjIiLGljb246WzM4NCw1MTIsW10sIjMyIiwiTTQ4IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMybDE3MSAwYzYwLjIgMCAxMDkgNDguOCAxMDkgMTA5IDAgNDMuOC0yNi4yIDgzLjMtNjYuNCAxMDAuNGwtMTM5LjEgNTlDMTE5IDMxNS40IDk2IDM1MC4yIDk2IDM4OC43bDAgMjcuMyAyMjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkw2NCA0ODBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtNTkuM2MwLTY0LjIgMzguNC0xMjIuMiA5Ny41LTE0Ny4zbDEzOS4xLTU5YzE2LjYtNy4xIDI3LjQtMjMuNCAyNy40LTQxLjQgMC0yNC45LTIwLjItNDUtNDUtNDVMODAgOTZDNjIuMyA5NiA0OCA4MS43IDQ4IDY0eiJdfSxlT3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiMyIsaWNvbjpbMzIwLDUxMixbXSwiMzMiLCJNODAgMjg4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDExMiAwYzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0TDMyIDk2QzE0LjMgOTYgMCA4MS43IDAgNjRTMTQuMyAzMiAzMiAzMmwxNjAgMGM3MC43IDAgMTI4IDU3LjMgMTI4IDEyOCAwIDM4LjItMTYuOCA3Mi41LTQzLjMgOTYgMjYuNiAyMy41IDQzLjMgNTcuOCA0My4zIDk2IDAgNzAuNy01Ny4zIDEyOC0xMjggMTI4TDMyIDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwxNjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NHMtMjguNy02NC02NC02NEw4MCAyODh6Il19LHRPdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiI0IixpY29uOlszODQsNTEyLFtdLCIzNCIsIk02NCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMlMwIDQ2LjMgMCA2NEwwIDI4OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwxOTIgMCAwIDk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC05NiAzMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0zMiAwIDAtMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgMjI0LTE5MiAwIDAtMjI0eiJdfSxhT3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiNSIsaWNvbjpbMzIwLDUxMixbXSwiMzUiLCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMmwyMjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMTkyIDAgMCAxMTIgMTIwIDBjNzUuMSAwIDEzNiA2MC45IDEzNiAxMzZTMjU5LjEgNDgwIDE4NCA0ODBMMzIgNDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDE1MiAwYzM5LjggMCA3Mi0zMi4yIDcyLTcycy0zMi4yLTcyLTcyLTcyTDMyIDI3MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJMMCA2NHoiXX0sc090PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6IjYiLGljb246WzM4NCw1MTIsW10sIjM2IiwiTTI1NiAzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtODggMGMtNDguNiAwLTg4IDM5LjQtODggODhsMCAzMi4yYzIyLjktMTUuMyA1MC40LTI0LjIgODAtMjQuMmw0OCAwYzc5LjUgMCAxNDQgNjQuNSAxNDQgMTQ0UzI4Ny41IDQ4MCAyMDggNDgwbC00OCAwQzgwLjUgNDgwIDE2IDQxNS41IDE2IDMzNmwwLTE1MkMxNiAxMDAuMSA4NC4xIDMyIDE2OCAzMmw4OCAwek04MCAzMzZjMCA0NC4yIDM1LjggODAgODAgODBsNDggMGM0NC4yIDAgODAtMzUuOCA4MC04MHMtMzUuOC04MC04MC04MGwtNDggMGMtNDQuMiAwLTgwIDM1LjgtODAgODB6Il19LGlPdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiI3IixpY29uOlszMjAsNTEyLFtdLCIzNyIsIk0wIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMybDI1NiAwYzExLjUgMCAyMiA2LjEgMjcuNyAxNi4xczUuNyAyMi4yLS4xIDMyLjFsLTIyNCAzODRjLTguOSAxNS4zLTI4LjUgMjAuNC00My44IDExLjVzLTIwLjQtMjguNS0xMS41LTQzLjhMMjMyLjMgOTYgMzIgOTZDMTQuMyA5NiAwIDgxLjcgMCA2NHoiXX0sck90PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6IjgiLGljb246WzMyMCw1MTIsW10sIjM4IiwiTTMwNCAxNjBjMC03MC43LTU3LjMtMTI4LTEyOC0xMjhsLTMyIDBjLTcwLjcgMC0xMjggNTcuMy0xMjggMTI4IDAgMzQuNiAxMy43IDY2IDM2IDg5LTMxLjUgMjMuMy01MiA2MC44LTUyIDEwMyAwIDcwLjcgNTcuMyAxMjggMTI4IDEyOGw2NCAwYzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4IDAtNDIuMi0yMC41LTc5LjctNTItMTAzIDIyLjMtMjMgMzYtNTQuNCAzNi04OXpNMTc2LjEgMjg4bDE1LjkgMGMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NGwtNjQgMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRzMjguNy02NCA2NC02NGw0OC4xIDB6bTAtNjRMMTQ0IDIyNGMtMzUuMyAwLTY0LTI4LjctNjQtNjQgMC0zNS4zIDI4LjctNjQgNjQtNjRsMzIgMGMzNS4zIDAgNjQgMjguNyA2NCA2NCAwIDM1LjMtMjguNiA2NC02NCA2NHoiXX0sb090PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6IjkiLGljb246WzM4NCw1MTIsW10sIjM5IiwiTTIwOCAzMjBjMjkuNiAwIDU3LjEtOC45IDgwLTI0LjJsMCAzMi4yYzAgNDguNi0zOS40IDg4LTg4IDg4TDk2IDQxNmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwxMDQgMGM4My45IDAgMTUyLTY4LjEgMTUyLTE1MmwwLTE1Mi4xQzM1MS45IDk2LjQgMjg3LjUgMzIgMjA4IDMybC00OCAwQzgwLjUgMzIgMTYgOTYuNSAxNiAxNzZTODAuNSAzMjAgMTYwIDMyMGw0OCAwem04MC0xNDRjMCA0NC4yLTM1LjggODAtODAgODBsLTQ4IDBjLTQ0LjIgMC04MC0zNS44LTgwLTgwczM1LjgtODAgODAtODBsNDggMGM0NC4yIDAgODAgMzUuOCA4MCA4MHoiXX0saW9lPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImRvbGxhci1zaWduIixpY29uOlszMjAsNTEyLFsxMjgxNzgsNjE3ODEsImRvbGxhciIsInVzZCJdLCIyNCIsIk0xMzYgMjRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDQwIDU2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTExNC45IDBjLTI0LjkgMC00NS4xIDIwLjItNDUuMSA0NS4xIDAgMjIuNSAxNi41IDQxLjUgMzguNyA0NC43bDkxLjYgMTMuMWM1My44IDcuNyA5My43IDUzLjcgOTMuNyAxMDggMCA2MC4zLTQ4LjkgMTA5LjEtMTA5LjEgMTA5LjFsLTEwLjkgMCAwIDQwYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtNDAtNzIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwxMzAuOSAwYzI0LjkgMCA0NS4xLTIwLjIgNDUuMS00NS4xIDAtMjIuNS0xNi41LTQxLjUtMzguNy00NC43bC05MS42LTEzLjFDNTUuOSAyNzMuNSAxNiAyMjcuNCAxNiAxNzMuMSAxNiAxMTIuOSA2NC45IDY0IDEyNS4xIDY0bDEwLjkgMCAwLTQweiJdfSxuT3Q9aW9lLGxPdD1pb2UsY090PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImRvZyIsaWNvbjpbNTc2LDUxMixbMTI4MDIxXSwiZjZkMyIsIk0zMiAxMTJjMTYuNiAwIDMwLjIgMTIuNiAzMS44IDI4LjdsLjMgNi42QzY1LjggMTYzLjQgNzkuNCAxNzYgOTYgMTc2bDE3OS4xIDAgMTQwLjkgNjAuNCAwIDI0My42YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0zMiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTEzMS4zQzI5NiAzNjEgMjY4LjggMzY4IDI0MCAzNjhzLTU2LTctODAtMTkuM0wxNjAgNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMybC0zMiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTI0NS42Yy0zNy4zLTEzLjItNjQtNDguNi02NC05MC40IDAtMTcuNyAxNC4zLTMyIDMyLTMyek0zNTUuOC0zMmM3LjcgMCAxNC45IDMuNiAxOS42IDkuOEwzOTIgMCA0NDQuMSAwYzEyLjcgMCAyNC45IDUuMSAzMy45IDE0LjFMNDk2IDMyIDU1MiAzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDI0YzAgNDQuMi0zNS44IDgwLTgwIDgwbC02NCAwLTcgMjgtMTI0LjctNTMuNCAzMS42LTE0Ny4yQzMzNC4zLTIzLjkgMzQ0LjItMzIgMzU1LjgtMzJ6TTQ0OCA0NGEyMCAyMCAwIDEgMCAwIDQwIDIwIDIwIDAgMSAwIDAtNDB6Il19LGRPdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0cnVjay1tb3ZpbmciLGljb246WzY0MCw1MTIsW10sImY0ZGYiLCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQyNGMwIDQ4LjYgMzkuNCA4OCA4OCA4OCAyNS4yIDAgNDgtMTAuNiA2NC0yNy42IDE2IDE3IDM4LjggMjcuNiA2NCAyNy42IDQwLjMgMCA3NC4yLTI3LjEgODQuNy02NGwxMzQuNiAwYzEwLjQgMzYuOSA0NC40IDY0IDg0LjcgNjQgNDMgMCA3OC45LTMwLjkgODYuNS03MS43IDIwLTEwLjggMzMuNS0zMiAzMy41LTU2LjNsMC0xNDYuN2MwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0w1NzYgMTQ2LjdjLTEyLTEyLTI4LjMtMTguNy00NS4zLTE4LjdsLTUwLjcgMCAwLTMyYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyek00ODAgMTkybDUwLjcgMCA0NS4zIDQ1LjMgMCA1MC43LTk2IDAgMC05NnpNODggMzg0YTQwIDQwIDAgMSAxIDAgODAgNDAgNDAgMCAxIDEgMC04MHptMzkyIDQwYTQwIDQwIDAgMSAxIDgwIDAgNDAgNDAgMCAxIDEgLTgwIDB6TTIxNiAzODRhNDAgNDAgMCAxIDEgMCA4MCA0MCA0MCAwIDEgMSAwLTgweiJdfSxDN2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicm90YXRlIixpY29uOls1MTIsNTEyLFsxMjgyNjAsInN5bmMtYWx0Il0sImYyZjEiLCJNNDgwLjEgMTkybDcuOSAwYzEzLjMgMCAyNC0xMC43IDI0LTI0bDAtMTQ0YzAtOS43LTUuOC0xOC41LTE0LjgtMjIuMlM0NzcuOSAuMiA0NzEgN0w0MTkuMyA1OC44QzM3NSAyMi4xIDMxOCAwIDI1NiAwIDEyNyAwIDIwLjMgOTUuNCAyLjYgMjE5LjUgLjEgMjM3IDEyLjIgMjUzLjIgMjkuNyAyNTUuN3MzMy43LTkuNyAzNi4yLTI3LjFDNzkuMiAxMzUuNSAxNTkuMyA2NCAyNTYgNjQgMzAwLjQgNjQgMzQxLjIgNzkgMzczLjcgMTA0LjNMMzI3IDE1MWMtNi45IDYuOS04LjkgMTcuMi01LjIgMjYuMlMzMzQuMyAxOTIgMzQ0IDE5MmwxMzYuMSAwem0yOS40IDEwMC41YzIuNS0xNy41LTkuNy0zMy43LTI3LjEtMzYuMnMtMzMuNyA5LjctMzYuMiAyNy4xYy0xMy4zIDkzLTkzLjQgMTY0LjUtMTkwLjEgMTY0LjUtNDQuNCAwLTg1LjItMTUtMTE3LjctNDAuM0wxODUgMzYxYzYuOS02LjkgOC45LTE3LjIgNS4yLTI2LjJTMTc3LjcgMzIwIDE2OCAzMjBMMjQgMzIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNEwwIDQ4OGMwIDkuNyA1LjggMTguNSAxNC44IDIyLjJTMzQuMSA1MTEuOCA0MSA1MDVsNTEuOC01MS44QzEzNyA0ODkuOSAxOTQgNTEyIDI1NiA1MTIgMzg1IDUxMiA0OTEuNyA0MTYuNiA1MDkuNCAyOTIuNXoiXX0sdU90PUM3ZSxUN2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic3F1YXJlLW1pbnVzIixpY29uOls0NDgsNTEyLFs2MTc2NywibWludXMtc3F1YXJlIl0sImYxNDYiLCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMnptNzIgMjAwbDE3NiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0xNzYgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHoiXX0scE90PVQ3ZSxoT3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYWxpZ24tanVzdGlmeSIsaWNvbjpbNDQ4LDUxMixbXSwiZjAzOSIsIk00NDggNjRjMC0xNy43LTE0LjMtMzItMzItMzJMMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NFMxNC4zIDk2IDMyIDk2bDM4NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMyem0wIDI1NmMwLTE3LjctMTQuMy0zMi0zMi0zMkwzMiAyODhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMzg0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJ6TTAgMTkyYzAgMTcuNyAxNC4zIDMyIDMyIDMybDM4NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDMyIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTQ0OCA0NDhjMC0xNy43LTE0LjMtMzItMzItMzJMMzIgNDE2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDM4NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMyeiJdfSxmT3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2FsZW5kYXItY2hlY2siLGljb246WzQ0OCw1MTIsW10sImYyNzQiLCJNMzIwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMiAzMiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjg4YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCAxMjhDMCA5Mi43IDI4LjcgNjQgNjQgNjRsMzIgMCAwLTMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCAzMiAxMjggMCAwLTMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0yMiAxNjEuN2MtMTAuNy03LjgtMjUuNy01LjQtMzMuNSA1LjNMMTg5LjEgMzMxLjIgMTM3IDI3OS4xYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDcyIDcyYzUgNSAxMS45IDcuNSAxOC44IDdzMTMuNC00LjEgMTcuNS05LjhMMzQ3LjMgMTk1LjJjNy44LTEwLjcgNS40LTI1LjctNS4zLTMzLjV6Il19LCQ3ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmYWNlLWtpc3MiLGljb246WzUxMiw1MTIsWzEyODUzNSwia2lzcyJdLCJmNTk2IiwiTTI1NiA1MTJhMjU2IDI1NiAwIDEgMCAwLTUxMiAyNTYgMjU2IDAgMSAwIDAgNTEyek0yNDAgMjg4bDMyIDBjMjYuNSAwIDQ4IDIxLjUgNDggNDggMCAxMi4zLTQuNiAyMy41LTEyLjIgMzIgNy42IDguNSAxMi4yIDE5LjcgMTIuMiAzMiAwIDI2LjUtMjEuNSA0OC00OCA0OGwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmwxNiAwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2bC0xNiAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDE2IDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTE2IDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bS05Ni04MGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xOTItMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0eiJdfSxtT3Q9JDdlLGdPdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJraXRjaGVuLXNldCIsaWNvbjpbNTc2LDUxMixbXSwiZTUxYSIsIk0yNDAgMTQ0YTk2IDk2IDAgMSAwIC0xOTIgMCA5NiA5NiAwIDEgMCAxOTIgMHptNDQuNCAzMkMyNjkuOSAyNDAuMSAyMTIuNSAyODggMTQ0IDI4OCA2NC41IDI4OCAwIDIyMy41IDAgMTQ0UzY0LjUgMCAxNDQgMGM2OC41IDAgMTI1LjkgNDcuOSAxNDAuNCAxMTJsNzEuOCAwYzguOC05LjggMjEuNi0xNiAzNS44LTE2bDEwNCAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4bC0xMDQgMGMtMTQuMiAwLTI3LTYuMi0zNS44LTE2bC03MS44IDB6TTE0NCA4MGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpNNDAwIDI0MGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDggOTYgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMjQwIDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsOTYgMCAwLThjMC0xMy4zIDEwLjctMjQgMjQtMjR6TTI4OCA0NjRsMC0xMTIgMjI0IDAgMCAxMTJjMCAyNi41LTIxLjUgNDgtNDggNDhsLTEyOCAwYy0yNi41IDAtNDgtMjEuNS00OC00OHpNNDggMzIwbDEyOCAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4bC0xNiAwYzAgMTcuNy0xNC4zIDMyLTMyIDMybC02NCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTgwYzAtOC44IDcuMi0xNiAxNi0xNnptMTI4IDY0YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2bC0xNiAwIDAgMzIgMTYgMHpNMjQgNDY0bDE3NiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0TDI0IDUxMmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHoiXX0sYk90PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImRuYSIsaWNvbjpbMzg0LDUxMixbMTI5NTE2XSwiZjQ3MSIsIk0zNTIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMiAwIDU3LjgtMjQuNCAxMDQuOC01Ny40IDE0NC41LTI0LjEgMjguOS01My44IDU1LjEtODMuNiA3OS41IDI5LjggMjQuNSA1OS41IDUwLjYgODMuNiA3OS41IDMzIDM5LjYgNTcuNCA4Ni43IDU3LjQgMTQ0LjUgMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJMNjQgNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMyUzAgNDk3LjcgMCA0ODBDMCA0MjIuMiAyNC40IDM3NS4yIDU3LjQgMzM1LjUgODEuNSAzMDYuNiAxMTEuMiAyODAuNSAxNDEgMjU2IDExMS4yIDIzMS41IDgxLjUgMjA1LjQgNTcuNCAxNzYuNSAyNC40IDEzNi44IDAgODkuOCAwIDMyIDAgMTQuMyAxNC4zIDAgMzIgMFM2NCAxNC4zIDY0IDMybDI1NiAwYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0yODMuNSAzODRsLTE4Mi45IDBjLTguMiAxMC41LTE1LjEgMjEuMS0yMC42IDMybDIyNC4yIDBjLTUuNi0xMC45LTEyLjUtMjEuNS0yMC42LTMyek0yMzggMzM2Yy0xNC4zLTEzLTI5LjgtMjUuOC00Ni0zOS0xNi4yIDEzLjEtMzEuNyAyNi00NiAzOWw5MiAwek0xMDAuNSAxMjhsMTgyLjkgMGM4LjItMTAuNSAxNS4xLTIxLjEgMjAuNi0zMkw3OS45IDk2YzUuNiAxMC45IDEyLjUgMjEuNSAyMC42IDMyek0xNDYgMTc2YzE0LjMgMTMgMjkuOCAyNS44IDQ2IDM5IDE2LjItMTMuMSAzMS43LTI2IDQ2LTM5bC05MiAweiJdfSx2T3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2hpbGQtcmVhY2hpbmciLGljb246WzM4NCw1MTIsW10sImU1OWQiLCJNMjU2IDY0YTY0IDY0IDAgMSAwIC0xMjggMCA2NCA2NCAwIDEgMCAxMjggMHpNMTUyLjkgMTY5LjNjLTIzLjctOC40LTQ0LjUtMjQuMy01OC44LTQ1LjhMNzQuNiA5NC4yQzY0LjggNzkuNSA0NSA3NS42IDMwLjMgODUuNFMxMS42IDExNSAyMS40IDEyOS44TDQwLjkgMTU5YzE4LjEgMjcuMSA0Mi44IDQ4LjQgNzEuMSA2Mi40TDExMiA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTk2IDMyIDAgMCA5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMjU4LjRjMjkuMS0xNC4yIDU0LjQtMzYuMiA3Mi43LTY0LjJsMTguMi0yNy45YzkuNi0xNC44IDUuNC0zNC42LTkuNC00NC4zcy0zNC42LTUuNS00NC4zIDkuNEwyOTEgMTIyLjRjLTIxLjggMzMuNC01OC45IDUzLjYtOTguOCA1My42LTEyLjYgMC0yNC45LTItMzYuNi01LjgtLjktLjMtMS44LS43LTIuNy0uOXoiXX0sYWY9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGFzdGUiLGljb246WzUxMiw1MTIsWyJmaWxlLWNsaXBib2FyZCJdLCJmMGVhIiwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0TDAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDExMiAwIDAtMjI0YzAtNjEuOSA1MC4xLTExMiAxMTItMTEybDY0IDAgMC00OGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAwek0yNDggMTEybC0xNDQgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGwxNDQgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNHptNDAgNDhjLTM1LjMgMC02NCAyOC43LTY0IDY0bDAgMjI0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDE2MCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMTY1LjVjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNsLTU4LjUtNTguNWMtMTItMTItMjguMy0xOC43LTQ1LjMtMTguN0wyODggMTYweiJdfSx4T3Q9YWYseU90PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im1ldGVvciIsaWNvbjpbNTEyLDUxMixbOTczMl0sImY3NTMiLCJNNDkzLjcgLjlsLTE5NC4yIDc0LjcgMi4zLTI5LjNjMS0xMi44LTEyLjgtMjEuNS0yNC0xNS4xTDEwMS4zIDEzMy40QzM4LjYgMTY5LjcgMCAyMzYuNiAwIDMwOSAwIDQyMS4xIDkwLjkgNTEyIDIwMyA1MTIgMjc1LjQgNTEyIDM0Mi4zIDQ3My40IDM3OC42IDQxMC43TDQ4MC44IDIzNC4zYzYuNS0xMS4xLTIuMi0yNS0xNS4xLTI0bC0yOS4zIDIuMyA3NC43LTE5NC4yYy42LTEuNSAuOS0zLjIgLjktNC44IDAtNy41LTYtMTMuNS0xMy41LTEzLjUtMS43IDAtMy4zIC4zLTQuOCAuOXpNMTkyIDE5MmExMjggMTI4IDAgMSAxIDAgMjU2IDEyOCAxMjggMCAxIDEgMC0yNTZ6bTAgOTZhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMTYgOTZhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyeiJdfSxEN2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZ2VhcnMiLGljb246WzY0MCw1MTIsWyJjb2dzIl0sImYwODUiLCJNNDE1LjkgMjEwLjVjMTIuMi0zLjMgMjUgMi41IDMwLjUgMTMuOEw0NjUgMjYxLjljMTAuMyAxLjQgMjAuNCA0LjIgMjkuOSA4LjFsMzUtMjMuM2MxMC41LTcgMjQuNC01LjYgMzMuMyAzLjNsMTkuMiAxOS4yYzguOSA4LjkgMTAuMyAyMi45IDMuMyAzMy4zbC0yMy4zIDM0LjljMS45IDQuNyAzLjYgOS42IDUgMTQuNyAxLjQgNS4xIDIuMyAxMC4xIDMgMTUuMmwzNy43IDE4LjZjMTEuMyA1LjYgMTcuMSAxOC40IDEzLjggMzAuNWwtNyAyNi4yYy0zLjMgMTIuMS0xNC42IDIwLjMtMjcuMiAxOS41bC00Mi0yLjdjLTYuMyA4LjEtMTMuNiAxNS42LTIxLjkgMjJsMi43IDQxLjljLjggMTIuNi03LjQgMjQtMTkuNSAyNy4ybC0yNi4yIDdjLTEyLjIgMy4zLTI0LjktMi41LTMwLjUtMTMuOGwtMTguNi0zNy42Yy0xMC4zLTEuNC0yMC40LTQuMi0yOS45LTguMWwtMzUgMjMuM2MtMTAuNSA3LTI0LjQgNS42LTMzLjMtMy4zbC0xOS4yLTE5LjJjLTguOS04LjktMTAuMy0yMi44LTMuMy0zMy4zbDIzLjMtMzVjLTEuOS00LjctMy42LTkuNi01LTE0LjdzLTIuMy0xMC4yLTMtMTUuMmwtMzcuNy0xOC42Yy0xMS4zLTUuNi0xNy0xOC40LTEzLjgtMzAuNWw3LTI2LjJjMy4zLTEyLjEgMTQuNi0yMC4zIDI3LjItMTkuNWw0MS45IDIuN2M2LjMtOC4xIDEzLjYtMTUuNiAyMS45LTIybC0yLjctNDEuOGMtLjgtMTIuNiA3LjQtMjQgMTkuNS0yNy4ybDI2LjItN3pNNDQ4LjQgMzQwYTQ0IDQ0IDAgMSAwIC4xIDg4IDQ0IDQ0IDAgMSAwIC0uMS04OHpNMjI0LjktNDUuNWwyNi4yIDdjMTIuMSAzLjMgMjAuMyAxNC43IDE5LjUgMjcuMmwtMi43IDQxLjhjOC4zIDYuNCAxNS42IDEzLjggMjEuOSAyMmw0Mi0yLjdjMTIuNS0uOCAyMy45IDcuNCAyNy4yIDE5LjVsNyAyNi4yYzMuMiAxMi4xLTIuNSAyNC45LTEzLjggMzAuNWwtMzcuNyAxOC42Yy0uNyA1LjEtMS43IDEwLjItMyAxNS4ycy0zLjEgMTAtNSAxNC43bDIzLjMgMzVjNyAxMC41IDUuNiAyNC40LTMuMyAzMy4zTDMwNy4zIDI2MmMtOC45IDguOS0yMi44IDEwLjMtMzMuMyAzLjNMMjM5IDI0MmMtOS41IDMuOS0xOS42IDYuNy0yOS45IDguMWwtMTguNiAzNy42Yy01LjYgMTEuMy0xOC40IDE3LTMwLjUgMTMuOGwtMjYuMi03Yy0xMi4yLTMuMy0yMC4zLTE0LjctMTkuNS0yNy4ybDIuNy00MS45Yy04LjMtNi40LTE1LjYtMTMuOC0yMS45LTIybC00MiAyLjdjLTEyLjUgLjgtMjMuOS03LjQtMjcuMi0xOS41bC03LTI2LjJjLTMuMi0xMi4xIDIuNS0yNC45IDEzLjgtMzAuNWwzNy43LTE4LjZjLjctNS4xIDEuNy0xMC4xIDMtMTUuMiAxLjQtNS4xIDMtMTAgNS0xNC43TDU1LjEgNDYuNWMtNy0xMC41LTUuNi0yNC40IDMuMy0zMy4zTDc3LjYtNmM4LjktOC45IDIyLjgtMTAuMyAzMy4zLTMuM2wzNSAyMy4zYzkuNS0zLjkgMTkuNi02LjcgMjkuOS04LjFsMTguNi0zNy42YzUuNi0xMS4zIDE4LjMtMTcgMzAuNS0xMy44ek0xOTIuNCA4NGE0NCA0NCAwIDEgMCAwIDg4IDQ0IDQ0IDAgMSAwIDAtODh6Il19LHdPdD1EN2Usa090PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZpbGUtY2lyY2xlLXBsdXMiLGljb246WzU3Niw1MTIsWzU4NjA2XSwiZTQ5NCIsIk05NiAwQzYwLjcgMCAzMiAyOC43IDMyIDY0bDAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDE4MCAwYy0yMi43LTMxLjUtMzYtNzAuMi0zNi0xMTIgMC0xMDAuNiA3Ny40LTE4My4yIDE3Ni0xOTEuM2wwLTM4LjFjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMMjkwLjcgMTguN0MyNzguNyA2LjcgMjYyLjUgMCAyNDUuNSAwTDk2IDB6TTM1Ny41IDE3NkwyNjQgMTc2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNEwyNDAgNTguNSAzNTcuNSAxNzZ6TTQzMiA1NDRhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0xNi0yMDhsMCA0OCA0OCAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC00OCAwIDAgNDhjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC00OC00OCAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDQ4IDAgMC00OGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2eiJdfSxTT3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaWNpY2xlcyIsaWNvbjpbNTEyLDUxMixbXSwiZjdhZCIsIk03NS44IDMwNC44TDEgMzUuN0MuMyAzMy4yIDAgMzAuNyAwIDI4LjIgMCAxMi42IDEyLjYgMCAyOC4yIDBMNDgyLjQgMGMxNi4zIDAgMjkuNiAxMy4yIDI5LjYgMjkuNiAwIDEuNi0uMSAzLjMtLjQgNC45TDQzNC42IDQ5Ni4xYy0xLjUgOS4yLTkuNSAxNS45LTE4LjggMTUuOS05LjIgMC0xNy4xLTYuNi0xOC43LTE1LjZMMzM2IDE2MCAzMDcuMiAzMDMuOWMtMS45IDkuMy0xMC4xIDE2LjEtMTkuNiAxNi4xLTkuMiAwLTE3LjItNi4yLTE5LjQtMTUuMUwyNDAgMTkyIDIxMC42IDM2OC4yYy0xLjUgOS4xLTkuNCAxNS44LTE4LjYgMTUuOHMtMTcuMS02LjctMTguNi0xNS44TDE0NCAxOTIgMTE1LjkgMzA0LjNjLTIuMyA5LjItMTAuNiAxNS43LTIwLjEgMTUuNy05LjMgMC0xNy41LTYuMi0yMC0xNS4yeiJdfSxfT3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYXJyb3ctdHJlbmQtdXAiLGljb246WzU3Niw1MTIsW10sImUwOTgiLCJNMzg0IDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwxNjAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDE2MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTgyLjctMTY5LjQgMTY5LjRjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwTDE5MiAyNjkuMyA1NC42IDQwNi42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM2wxNjAtMTYwYzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwTDMyMCAzMDYuNyA0NjYuNyAxNjAgMzg0IDE2MHoiXX0sTU90PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImhleGFnb24tbm9kZXMtYm9sdCIsaWNvbjpbNTc2LDUxMixbXSwiZTY5YSIsIk0yNDggMTA2LjZjMTguOS05IDMyLTI4LjMgMzItNTAuNmMwLTMwLjktMjUuMS01Ni01Ni01NnMtNTYgMjUuMS01NiA1NmMwIDIyLjMgMTMuMSA0MS42IDMyIDUwLjZsMCA5OC44Yy0yLjggMS4zLTUuNSAyLjktOCA0LjdsLTgwLjEtNDUuOGMxLjYtMjAuOC04LjYtNDEuNi0yNy45LTUyLjhDNTcuMiA5NiAyMyAxMDUuMiA3LjUgMTMyUzEuMiAxOTMgMjggMjA4LjVjMS4zIC44IDIuNiAxLjUgNCAyLjFsMCA5MC44Yy0xLjMgLjYtMi43IDEuMy00IDIuMUMxLjIgMzE5LTggMzUzLjIgNy41IDM4MFM1Ny4yIDQxNiA4NCA0MDAuNWMxOS4zLTExLjEgMjkuNC0zMiAyNy44LTUyLjhsNTAuNS0yOC45Yy0xMS41LTExLjItMTkuOS0yNS42LTIzLjgtNDEuN0w4OCAzMDYuMWMtMi42LTEuOC01LjItMy4zLTgtNC43bDAtOTAuOGMyLjgtMS4zIDUuNS0yLjkgOC00LjdsODAuMSA0NS44Yy0uMSAxLjQtLjIgMi44LS4yIDQuM2MwIDIyLjMgMTMuMSA0MS42IDMyIDUwLjZsMCA5OC44Yy0xOC45IDktMzIgMjguMy0zMiA1MC42YzAgMzAuOSAyNS4xIDU2IDU2IDU2YzMwLjcgMCA1NS42LTI0LjcgNTYtNTUuMmMtNy41LTEyLjktMTMuNS0yNi44LTE3LjYtNDEuNWMtNC4yLTQtOS4xLTcuMy0xNC40LTkuOWwwLTk4LjhjMi44LTEuMyA1LjUtMi45IDgtNC43bDEwLjUgNmM1LjUtMTUuMyAxMy4xLTI5LjUgMjIuNC00Mi41bC05LjEtNS4yYy4xLTEuNCAuMi0yLjggLjItNC4zYzAtMjIuMy0xMy4xLTQxLjYtMzItNTAuNmwwLTk4Ljh6TTQ0MC41IDEzMkM0MjUgMTA1LjIgMzkwLjggOTYgMzY0IDExMS41Yy0xOS4zIDExLjEtMjkuNCAzMi0yNy44IDUyLjhsLTUwLjYgMjguOWMxMS41IDExLjIgMTkuOSAyNS42IDIzLjggNDEuN0wzNjAgMjA1LjljLjQgLjMgLjggLjYgMS4zIC45YzIxLjctOS41IDQ1LjYtMTQuOCA3MC44LTE0LjhjMiAwIDQgMCA1LjkgLjFjMTIuMS0xNy4zIDEzLjgtNDAuNiAyLjYtNjAuMXpNNDMyIDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTQ3LjktMjI1YzQuMyAzLjcgNS40IDkuOSAyLjYgMTQuOUw0NTIuNCAzNTZsMzUuNiAwYzUuMiAwIDkuOCAzLjMgMTEuNCA4LjJzLS4xIDEwLjMtNC4yIDEzLjRsLTk2IDcyYy00LjUgMy40LTEwLjggMy4yLTE1LjEtLjZzLTUuNC05LjktMi42LTE0LjlMNDExLjYgMzgwIDM3NiAzODBjLTUuMiAwLTkuOC0zLjMtMTEuNC04LjJzLjEtMTAuMyA0LjItMTMuNGw5Ni03MmM0LjUtMy40IDEwLjgtMy4yIDE1LjEgLjZ6Il19LHpPdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJxdWVzdGlvbiIsaWNvbjpbMzIwLDUxMixbMTAwNjcsMTAwNjgsNjE3MzZdLCIzZiIsIk02NCAxNjBjMC01MyA0My05NiA5Ni05NnM5NiA0MyA5NiA5NmMwIDQyLjctMjcuOSA3OC45LTY2LjUgOTEuNC0yOC40IDkuMi02MS41IDM1LjMtNjEuNSA3Ni42bDAgMjRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTI0YzAtMS43IC42LTQuMSAzLjUtNy4zIDMtMy4zIDcuOS02LjUgMTMuNy04LjQgNjQuMy0yMC43IDExMC44LTgxIDExMC44LTE1Mi4zIDAtODguNC03MS42LTE2MC0xNjAtMTYwUzAgNzEuNiAwIDE2MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyem05NiAzNTJjMjIuMSAwIDQwLTE3LjkgNDAtNDBzLTE3LjktNDAtNDAtNDAtNDAgMTcuOS00MCA0MCAxNy45IDQwIDQwIDQweiJdfSxDT3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaGFuZHMtYm91bmQiLGljb246WzU3Niw1MTIsW10sImU0ZjkiLCJNNjQgMzJDNjQgMTQuMyA0OS43IDAgMzIgMFMwIDE0LjMgMCAzMkwwIDIxMy45YzAgMTQuMiA1LjEgMjcuOSAxNC4zIDM4LjdMOTkuNiAzNTIgOTYgMzUyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDM4NCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0zLjYgMCA4NS4zLTk5LjVjOS4yLTEwLjggMTQuMy0yNC41IDE0LjMtMzguN0w1NzYgMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAxMTIuOC02OS4zIDkyLjRjLTUuNyA3LjYtMTYuMSA5LjYtMjQuMiA0LjgtOS43LTUuNy0xMi4xLTE4LjctNS4xLTI3LjVMNDQxIDE4MGMxMC44LTEzLjUgOC45LTMzLjMtNC40LTQ0LjVzLTMzLTkuOC00NC41IDMuMmwtNDYuNyA1Mi41QzMyOSAyMDkuNyAzMjAgMjMzLjQgMzIwIDI1OC4xbDAgOTMuOS02NCAwIDAtOTMuOWMwLTI0LjYtOS00OC40LTI1LjQtNjYuOGwtNDYuNy01Mi41Yy0xMS41LTEzLTMxLjMtMTQuNC00NC41LTMuMlMxMjQuMiAxNjYuNCAxMzUgMTgwbDI3LjYgMzQuNWM3IDguOCA0LjcgMjEuOC01LjEgMjcuNS04LjEgNC44LTE4LjYgMi43LTI0LjItNC44TDY0IDE0NC44IDY0IDMyem02NCA0NDhsMCAzMiAxMjggMCAwLTMyIDY0IDAgMCAzMiAxMjggMCAwLTMyIDMyIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRMOTYgNDMyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDMyIDB6Il19LFRPdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwZXJzb24td2Fsa2luZy1sdWdnYWdlIixpY29uOls1MTIsNTEyLFtdLCJlNTU0IiwiTTI2NC4zIDI0YTU2IDU2IDAgMSAxIDExMiAwIDU2IDU2IDAgMSAxIC0xMTIgMHptLTggMTgxLjNsLTIyLjYgMjIuNmMtNiA2LTkuNCAxNC4xLTkuNCAyMi42bDAgMzcuNWMwIDEyLjMtNyAyMy0xNy4yIDI4LjQtLjkgNC4yLTIuNCA4LjQtNC4zIDEyLjNsLTY5IDEzOC4xLS44LS40LTI3LjcgNTUuM2MtOS45IDE5LjgtMzMuOSAyNy44LTUzLjcgMTcuOUwxNC42IDUyMWMtMTkuOC05LjktMjcuOC0zMy45LTE3LjktNTMuN0w0Ny4zIDM2Ni4zYzkuOS0xOS44IDMzLjktMjcuOCA1My43LTE3LjlsMzAuNyAxNS4zIDI4LjMtNTYuNmMuMy0uNiAuNC0xLjIgLjQtMS44bDAtMTYuOWMwLS4yIDAtLjMgMC0uNWwwLTM3LjVjMC0yNS41IDEwLjEtNDkuOSAyOC4xLTY3LjlsMzUuMS0zNS4xYzIyLjgtMjIuOCA1My42LTM1LjYgODUuOC0zNS42IDM2LjkgMCA3MS44IDE2LjggOTQuOCA0NS42TDQyMi4xIDE4MGM2LjEgNy42IDE1LjMgMTIgMjUgMTJsMzMuMiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0zMy4yIDBjLTI5LjIgMC01Ni43LTEzLjMtNzUtMzZsLTMuOC00LjcgMCAxMTUuMiAzNC41IDI5LjZjMTcuNyAxNS4yIDI5LjMgMzYuMiAzMi42IDU5LjNMNDQ4IDUwNy41YzIuNSAxNy41LTkuNyAzMy43LTI3LjIgMzYuMnMtMzMuNy05LjctMzYuMi0yNy4yTDM3MiA0MjguNGMtMS4xLTcuNy01LTE0LjctMTAuOS0xOS44bC03MS40LTYxLjJjLTIxLjMtMTguMi0zMy41LTQ0LjktMzMuNS03Mi45bDAtNjkuM3ptLjEgMTY1LjhjMi40IDIuMyA0LjggNC42IDcuNCA2LjhsNDYgMzkuNC0yLjIgNy42Yy00LjUgMTUuNy0xMi45IDMwLTI0LjQgNDEuNWwtNjguMyA2OC4zYy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0wyMzggNDIxLjFjMy44LTMuOCA2LjYtOC42IDguMS0xMy44TDI1Ni40IDM3MXoiXX0sTDdlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZpbGUtYXJyb3ctZG93biIsaWNvbjpbMzg0LDUxMixbImZpbGUtZG93bmxvYWQiXSwiZjU2ZCIsIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEwyMTMuNSAwYzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43TDM2NS4zIDEyNS4zYzEyIDEyIDE4LjcgMjguMyAxOC43IDQ1LjNMMzg0IDQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgNjR6bTIwOC01LjVsMCA5My41YzAgMTMuMyAxMC43IDI0IDI0IDI0TDMyNS41IDE3NiAyMDggNTguNXpNMTc1IDQ0MWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGw2NC02NGM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwbC0yMyAyMyAwLTg2LjFjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCA4Ni4xLTIzLTIzYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDY0IDY0eiJdfSwkT3Q9TDdlLERPdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwZXJzb24tYm9vdGgiLGljb246WzU3Niw1MTIsW10sImY3NTYiLCJNNDAgMjRBNTYgNTYgMCAxIDEgMTUyIDI0IDU2IDU2IDAgMSAxIDQwIDI0em01MS4xIDg4YzIzLjUgMCA0NS41IDExLjMgNTkuMSAzMC40bDQ4LjcgNjguMmM2IDguNCAxNS43IDEzLjQgMjYgMTMuNGwzMS4xIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTMxLjEgMGMtMzEgMC02MC4xLTE1LTc4LjEtNDAuMmwtMi44LTMuOSAwIDgwLjEgNDEuNiAzMS4yQzIwOS44IDM3My4zIDIyNCA0MDEuOCAyMjQgNDMybDAgODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC04MGMwLTEwLjEtNC43LTE5LjYtMTIuOC0yNS42TDcwLjQgMzQ4LjhDNDYuMiAzMzAuNyAzMiAzMDIuMiAzMiAyNzJsMC0xMDAuOUMzMiAxMzguNSA1OC41IDExMiA5MS4xIDExMnpNMzIgNTEybDAtMTMyLjdjMy4xIDIuNyA2LjMgNS40IDkuNiA3LjlMOTYgNDI4IDk2IDUxMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMnptNTQ0LTg4bDAgOTZjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC03Mi0xNjggMGMtNy4xIDAtMTMuOC0zLjEtMTguNC04LjZzLTYuNS0xMi42LTUuMy0xOS42bDMwLjctMTc2LjctNjMuMS0xMzcuNiAwIDcyYy01LjItMS0xMC41LTEuNi0xNi0xLjZsLTMyIDAgMC0xMjBjMC0zMC45IDI1LjEtNTYgNTYtNTZMNTIwIDBjMzAuOSAwIDU2IDI1LjEgNTYgNTZsMCAzNjh6TTI4OCAzMzZjNS41IDAgMTAuOC0uNiAxNi0xLjZMMzA0IDUyMGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTE4NCAzMiAweiJdfSxMT3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibG9jdXN0IixpY29uOls1NzYsNTEyLFtdLCJlNTIwIiwiTTMyOCAzMmMxMzcgMCAyNDggMTExIDI0OCAyNDhsMCA0MC0uNCA4LjJDNTcxLjUgMzY4LjUgNTM3LjQgNDAwIDQ5NiA0MDBsLTEyLjMgMCAyNS4yIDQ0LjFjNi42IDExLjUgMi42IDI2LjItOC45IDMyLjhzLTI2LjIgMi42LTMyLjctOC45bC0zOC44LTY3LjktODAuNCAwLTQ4LjIgNjkuN2MtNy41IDEwLjktMjIuNSAxMy42LTMzLjQgNi4xcy0xMy42LTIyLjUtNi4xLTMzLjRsMjkuMy00Mi4zLTc0LjUgMC01MS43IDcwLjJjLTcuOSAxMC43LTIyLjkgMTIuOS0zMy42IDUuMXMtMTIuOS0yMi45LTUuMS0zMy42bDQwLjUtNTUtNDMtMTYuNC03OS4zIDEwMC41Yy04LjIgMTAuNC0yMy4zIDEyLjItMzMuNyA0cy0xMi4yLTIzLjMtNC0zMy43bDI0MC0zMDQgMi4xLTIuM2M1LjItNS4xIDEyLjUtNy41IDE5LjktNi42IDguNCAxLjEgMTUuNiA2LjUgMTguOSAxNC4zbDIxLjcgNTAuNyA0MC45LTU1LjUgMi4xLTIuNGM1LjEtNS4zIDEyLjUtOCAyMC03LjIgOC41IDEgMTUuOSA2LjUgMTkuMyAxNC40bDQxLjggOTcuNSA2NC4yIDBjMTAuMiAwIDIwIDIgMjkgNS41LTE2LjQtOTQtOTguMy0xNjUuNS0xOTctMTY1LjVsLTE2IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsMTYgMHpNNDg4IDI5NmEyNCAyNCAwIDEgMCAwIDQ4IDI0IDI0IDAgMSAwIDAtNDh6TTQzLjUgMzMxLjFDMzYuMiAzMjEuNCAzMiAzMDkuNSAzMiAyOTYuOCAzMiAyNjUuNSA1Ny41IDI0MCA4OC45IDI0MGwyNy42IDAtNzIuOSA5MS4xek0yMjUuMSAyNDBsNDguMiAwIDEuNC0xLjktMTYuOS0zOS41LTMyLjcgNDEuNXptMTA3LjggMGw0Ni43IDAtMTcuMi00MC0yOS41IDQweiJdfSxFN2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicmlnaHQtbG9uZyIsaWNvbjpbNTc2LDUxMixbImxvbmctYXJyb3ctYWx0LXJpZ2h0Il0sImYzMGIiLCJNNTY2LjYgMjMzLjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTEyOCAxMjhjLTkuMiA5LjItMjIuOSAxMS45LTM0LjkgNi45UzM4NCAzOTYuOSAzODQgMzg0bDAtNjQtMzM2IDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtMzJjMC0yNi41IDIxLjUtNDggNDgtNDhsMzM2IDAgMC02NGMwLTEyLjkgNy44LTI0LjYgMTkuOC0yOS42czI1LjctMi4yIDM0LjkgNi45bDEyOCAxMjh6Il19LEVPdD1FN2UsUE90PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRydWNrLWRyb3BsZXQiLGljb246WzU3Niw1MTIsW10sImU1OGMiLCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwzLjMgMGMxMC40IDM2LjkgNDQuNCA2NCA4NC43IDY0czc0LjItMjcuMSA4NC43LTY0bDEwMi42IDBjMTAuNCAzNi45IDQ0LjQgNjQgODQuNyA2NHM3NC4yLTI3LjEgODQuNy02NGwzLjMgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTE0Ni43YzAtMTctNi43LTMzLjMtMTguNy00NS4zTDUxMiAxNDYuN2MtMTItMTItMjguMy0xOC43LTQ1LjMtMTguN2wtNTAuNyAwIDAtMzJjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6TTUxMiAyMzcuM2wwIDUwLjctOTYgMCAwLTk2IDUwLjcgMCA0NS4zIDQ1LjN6TTE1MiAzODRhNDAgNDAgMCAxIDEgMCA4MCA0MCA0MCAwIDEgMSAwLTgwem0yMzIgNDBhNDAgNDAgMCAxIDEgODAgMCA0MCA0MCAwIDEgMSAtODAgMHpNMjA4IDMwNGMtMzkuOCAwLTcyLTMyLjItNzItNzIgMC0zMy4yIDM0LjUtNzggNTUuOC0xMDIuNCA4LjctMTAgMjMuOC0xMCAzMi41IDAgMjEuMiAyNC40IDU1LjggNjkuMSA1NS44IDEwMi40IDAgNDgtMzIuMiA3Mi03MiA3MnoiXX0sSU90PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImhhbmQtaG9sZGluZy1tZWRpY2FsIixpY29uOls1NzYsNTEyLFtdLCJlMDVjIiwiTTI0MCAyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNGw0OCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgNTYgNTYgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDQ4YzAgMTMuMy0xMC43IDI0LTI0IDI0bC01NiAwIDAgNTZjMCAxMy4zLTEwLjcgMjQtMjQgMjRsLTQ4IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0bDAtNTYtNTYgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRsMC00OGMwLTEzLjMgMTAuNy0yNCAyNC0yNGw1NiAwIDAtNTZ6TTY2LjcgMzg0bDQyLjUtNDIuNWMyNC0yNCA1Ni42LTM3LjUgOTAuNS0zNy41TDM1MiAzMDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTcyIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMTEyLjYgMCAxMTkuNy04OC4yYzE3LjgtMTMuMSA0Mi44LTkuMyA1NS45IDguNXM5LjMgNDIuOC04LjUgNTUuOUw0MzMuMSA0ODUuNWMtMjMuNCAxNy4yLTUxLjYgMjYuNS04MC43IDI2LjVMMzIgNTEyYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMybDM0LjcgMHoiXX0sQU90PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImhhbmQtcG9pbnQtbGVmdCIsaWNvbjpbNTEyLDUxMixbXSwiZjBhNSIsIk0zMiA5NkMxNC4zIDk2IDAgMTEwLjMgMCAxMjhzMTQuMyAzMiAzMiAzMmwyMDggMCAwLTY0LTIwOCAwek0xOTIgMjg4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDY0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTY0IDB6bS02NC02NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmw0OCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC00OCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnptOTYgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDY0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTY0IDB6bTg4LTk2bC0uNiAwYzUuNCA5LjQgOC42IDIwLjMgOC42IDMyIDAgMTMuMi00IDI1LjQtMTAuOCAzNS42IDI0LjkgOC43IDQyLjggMzIuNSA0Mi44IDYwLjQgMCAxMS43LTMuMSAyMi42LTguNiAzMmw4LjYgMGM4OC40IDAgMTYwLTcxLjYgMTYwLTE2MGwwLTYxLjdjMC00Mi40LTE2LjktODMuMS00Ni45LTExMy4xbC0xMS42LTExLjZDNDI5LjUgNzcuNSAzOTYuOSA2NCAzNjMgNjRsLTI3IDBjLTM1LjMgMC02NCAyOC43LTY0IDY0bDAgODhjMCAyMi4xIDE3LjkgNDAgNDAgNDBzNDAtMTcuOSA0MC00MGwwLTU2YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZsMCA1NmMwIDM5LjgtMzIuMiA3Mi03MiA3MnoiXX0sTk90PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNhbGN1bGF0b3IiLGljb246WzM4NCw1MTIsWzEyODQyNV0sImYxZWMiLCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjU2IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zODRjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMHpNOTYgNjRsMTkyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMkw5NiAxNjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTE2IDE2OGEyNCAyNCAwIDEgMSAtNDggMCAyNCAyNCAwIDEgMSA0OCAwem04MCAyNGEyNCAyNCAwIDEgMSAwLTQ4IDI0IDI0IDAgMSAxIDAgNDh6bTEyOC0yNGEyNCAyNCAwIDEgMSAtNDggMCAyNCAyNCAwIDEgMSA0OCAwek04OCAzNTJhMjQgMjQgMCAxIDEgMC00OCAyNCAyNCAwIDEgMSAwIDQ4em0xMjgtMjRhMjQgMjQgMCAxIDEgLTQ4IDAgMjQgMjQgMCAxIDEgNDggMHptODAgMjRhMjQgMjQgMCAxIDEgMC00OCAyNCAyNCAwIDEgMSAwIDQ4ek02NCA0MjRjMC0xMy4zIDEwLjctMjQgMjQtMjRsMTEyIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRMODggNDQ4Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHptMjMyLTI0YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0LTI0LTEwLjctMjQtMjQgMTAuNy0yNCAyNC0yNHoiXX0sc2Y9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibWludXMiLGljb246WzQ0OCw1MTIsWzgyMTEsODcyMiwxMDEzNCwic3VidHJhY3QiXSwiZjA2OCIsIk0wIDI1NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmwzODQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkwzMiAyODhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyeiJdfSxST3Q9c2YsUDdlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImFycm93LXVwLXotYSIsaWNvbjpbNTEyLDUxMixbInNvcnQtYWxwaGEtdXAtYWx0Il0sImY4ODIiLCJNMTUwLjYgNDEuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTgwIDgwYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDk2IDE0MS4zIDk2IDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMzA2LjcgMjUuNCAyNS40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTgwLTgwek0yODggNjRjMCAxNy43IDE0LjMgMzIgMzIgMzJsNTAuNyAwLTczLjQgNzMuNGMtOS4yIDkuMi0xMS45IDIyLjktNi45IDM0LjlTMzA3LjEgMjI0IDMyMCAyMjRsMTI4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTUwLjcgMCA3My40LTczLjRjOS4yLTkuMiAxMS45LTIyLjkgNi45LTM0LjlTNDYxIDMyIDQ0OCAzMkwzMjAgMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek00MTIuNiAyNzMuN0M0MDcuMiAyNjIuOCAzOTYuMSAyNTYgMzg0IDI1NnMtMjMuMiA2LjgtMjguNiAxNy43bC04MCAxNjBjLTcuOSAxNS44LTEuNSAzNSAxNC4zIDQyLjlzMzUgMS41IDQyLjktMTQuM2w3LjItMTQuMyA4OC40IDAgNy4yIDE0LjNjNy45IDE1LjggMjcuMSAyMi4yIDQyLjkgMTQuM3MyMi4yLTI3LjEgMTQuMy00Mi45bC04MC0xNjB6TTM4NCAzNTkuNmwyMC4yIDQwLjQtNDAuNCAwIDIwLjItNDAuNHoiXX0sT090PVA3ZSxGT3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibWljcm9waG9uZS1zbGFzaCIsaWNvbjpbNTc2LDUxMixbXSwiZjEzMSIsIk00MS0yNC45Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMFMtMi4zLS4zIDcgOS4xbDUyOCA1MjhjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDQyNC43IDM1OC44QzQ1OC45IDMyNC4yIDQ4MCAyNzYuNiA0ODAgMjI0bDAtNDBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCA0MGMwIDM5LjMtMTUuNyA3NC45LTQxLjMgMTAwLjlMMzU2LjggMjkxQzM3My42IDI3My43IDM4NCAyNTAgMzg0IDIyNGwwLTEyOGMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NmwwIDMwLjItMTUxLTE1MXptMjk4LjMgNDM0bC00MS40LTQxLjRjLTMuMyAuMi02LjUgLjMtOS44IC4zLTc5LjUgMC0xNDQtNjQuNS0xNDQtMTQ0bDAtMTAuMi00My42LTQzLjZjLTIuOCAzLjktNC40IDguNy00LjQgMTMuOGwwIDQwYzAgOTcuOSA3My4zIDE3OC43IDE2OCAxOTAuNWwwIDQ5LjUtNDggMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwxNDQgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtNDggMCAwLTQ5LjVjOS4zLTEuMiAxOC40LTMgMjcuMy01LjR6Il19LHJvZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzcXVhcmUtcGVuIixpY29uOls0NDgsNTEyLFsicGVuLXNxdWFyZSIsInBlbmNpbC1zcXVhcmUiXSwiZjE0YiIsIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyek0zMjUuOCAxMzkuN2wxNC40IDE0LjRjMTUuNiAxNS42IDE1LjYgNDAuOSAwIDU2LjZsLTIzLjggMjMuOC03MS03MSAyMy44LTIzLjhjMTUuNi0xNS42IDQwLjktMTUuNiA1Ni42IDB6TTExOS45IDI4OWw5MS41LTkxLjYgNzEgNzEtOTEuNiA5MS41Yy00LjEgNC4xLTkuMiA3LTE0LjkgOC40bC02MC4xIDE1Yy01LjUgMS40LTExLjItLjItMTUuMi00LjJzLTUuNi05LjctNC4yLTE1LjJsMTUtNjAuMWMxLjQtNS42IDQuMy0xMC44IDguNC0xNC45eiJdfSxCT3Q9cm9lLEhPdD1yb2UsSTdlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImhhbmQtZmlzdCIsaWNvbjpbMzg0LDUxMixbOTk5NCwiZmlzdC1yYWlzZWQiXSwiZjZkZSIsIk0xNjAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDExMi02NCAwIDAtMTEyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0zMiA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMlM5NiA0Ni4zIDk2IDY0bDAgODAtNjQgMCAwLTgwem0xOTIgMGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgOTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC05NnptOTYgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtNjR6bS05NiA4OGwwLS42YzkuNCA1LjQgMjAuMyA4LjYgMzIgOC42IDEzLjIgMCAyNS40LTQgMzUuNi0xMC44IDguNyAyNC45IDMyLjUgNDIuOCA2MC40IDQyLjggMTEuNyAwIDIyLjYtMy4xIDMyLTguNmwwIDguNmMwIDUyLjMtMjUuMSA5OC44LTY0IDEyOGwwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0xNjAgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC03OC40Yy0xNy4zLTcuOS0zMy4yLTE4LjgtNDYuOS0zMi41TDM3LjUgMzU3LjVDMTMuNSAzMzMuNSAwIDMwMC45IDAgMjY3bDAtMjdjMC0zNS4zIDI4LjctNjQgNjQtNjRsODggMGMyMi4xIDAgNDAgMTcuOSA0MCA0MHMtMTcuOSA0MC00MCA0MGwtNTYgMGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmw1NiAwYzM5LjggMCA3Mi0zMi4yIDcyLTcyeiJdfSxxT3Q9STdlLEE3ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjb21tZW50LXNtcyIsaWNvbjpbNTEyLDUxMixbInNtcyJdLCJmN2NkIiwiTTI1NiA0ODBjMTQxLjQgMCAyNTYtMTA3LjUgMjU2LTI0MFMzOTcuNCAwIDI1NiAwIDAgMTA3LjUgMCAyNDBjMCA1NC4zIDE5LjIgMTA0LjMgNTEuNiAxNDQuNUwyLjggNDc2LjhjLTQuOCA5LTMuMyAyMCAzLjYgMjcuNXMxNy44IDkuOCAyNy4xIDUuOGwxMTguNC01MC43QzE4My43IDQ3Mi42IDIxOC45IDQ4MCAyNTYgNDgwek0xNDAuOCAxNzIuOGwxOS4yIDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTE5LjIgMGMtNS4zIDAtOS42IDQuMy05LjYgOS42czQuMyA5LjYgOS42IDkuNmMyMyAwIDQxLjYgMTguNiA0MS42IDQxLjZzLTE4LjYgNDEuNi00MS42IDQxLjZsLTI1LjYgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmwyNS42IDBjNS4zIDAgOS42LTQuMyA5LjYtOS42cy00LjMtOS42LTkuNi05LjZjLTIzIDAtNDEuNi0xOC42LTQxLjYtNDEuNnMxOC42LTQxLjYgNDEuNi00MS42em0xODguOCA0MS42YzAtMjMgMTguNi00MS42IDQxLjYtNDEuNmwxOS4yIDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTE5LjIgMGMtNS4zIDAtOS42IDQuMy05LjYgOS42czQuMyA5LjYgOS42IDkuNmMyMyAwIDQxLjYgMTguNiA0MS42IDQxLjZzLTE4LjYgNDEuNi00MS42IDQxLjZsLTI1LjYgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmwyNS42IDBjNS4zIDAgOS42LTQuMyA5LjYtOS42cy00LjMtOS42LTkuNi05LjZjLTIzIDAtNDEuNi0xOC42LTQxLjYtNDEuNnptLTk4LjMtMzMuOGwyNC43IDQxLjEgMjQuNy00MS4xYzMuNy02LjIgMTEuMS05LjEgMTgtNy4yczExLjcgOC4yIDExLjcgMTUuNGwwIDEwMi40YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtNDQuNi04LjcgMTQuNWMtMi45IDQuOC04LjEgNy44LTEzLjcgNy44cy0xMC44LTMtMTMuNy03LjhsLTguNy0xNC41IDAgNDQuNmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTEwMi40YzAtNy4yIDQuOC0xMy41IDExLjctMTUuNHMxNC4zIDEgMTggNy4yeiJdfSxqT3Q9QTdlLFZPdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzaW0tY2FyZCIsaWNvbjpbMzg0LDUxMixbXSwiZjdjNCIsIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEwyNTguNyAwYzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43TDM2NS4zIDgwYzEyIDEyIDE4LjcgMjguMyAxOC43IDQ1LjNMMzg0IDQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgNjR6TTk2IDI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCA0MCAxMjggMCAwLTcyLTk2IDB6TTY0IDQxNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmw0OCAwIDAtNzItODAgMCAwIDQwem0yNTYgMGwwLTQwLTEyOCAwIDAgNzIgOTYgMGMxNy43IDAgMzItMTQuMyAzMi0zMnptMC0xMjhjMC0xNy43LTE0LjMtMzItMzItMzJsLTQ4IDAgMCA3MiA4MCAwIDAtNDB6Il19LE43ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzY2FsZS1iYWxhbmNlZCIsaWNvbjpbNjQwLDUxMixbOTg3OCwiYmFsYW5jZS1zY2FsZSJdLCJmMjRlIiwiTTM4NCAzMmwxMjggMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkwzOTguNCA5NmMtNS4yIDI1LjgtMjIuOSA0Ny4xLTQ2LjQgNTcuM2wwIDI5NC43IDE2MCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0zODQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwxNjAgMCAwLTI5NC43Yy0yMy41LTEwLjMtNDEuMi0zMS42LTQ2LjQtNTcuM0wxMjggOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsMTI4IDBjMTQuNi0xOS40IDM3LjgtMzIgNjQtMzJzNDkuNCAxMi42IDY0IDMyem01NS42IDI4OEw1ODQuNCAzMjAgNTEyIDE5NS44IDQzOS42IDMyMHpNNTEyIDQxNmMtNjIuOSAwLTExNS4yLTM0LTEyNi03OC45LTIuNi0xMSAxLTIyLjMgNi43LTMyLjFsOTUuMi0xNjMuMmM1LTguNiAxNC4yLTEzLjggMjQuMS0xMy44czE5LjEgNS4zIDI0LjEgMTMuOGw5NS4yIDE2My4yYzUuNyA5LjggOS4zIDIxLjEgNi43IDMyLjEtMTAuOCA0NC44LTYzLjEgNzguOS0xMjYgNzguOXpNMTI2LjggMTk1LjhMNTQuNCAzMjAgMTk5LjMgMzIwIDEyNi44IDE5NS44ek0uOSAzMzcuMWMtMi42LTExIDEtMjIuMyA2LjctMzIuMWw5NS4yLTE2My4yYzUtOC42IDE0LjItMTMuOCAyNC4xLTEzLjhzMTkuMSA1LjMgMjQuMSAxMy44bDk1LjIgMTYzLjJjNS43IDkuOCA5LjMgMjEuMSA2LjcgMzIuMS0xMC44IDQ0LjgtNjMuMSA3OC45LTEyNiA3OC45UzExLjcgMzgyIC45IDMzNy4xeiJdfSxVT3Q9TjdlLFI3ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjYXIiLGljb246WzUxMiw1MTIsWzEyODY2NCwiYXV0b21vYmlsZSJdLCJmMWI5IiwiTTEzNS4yIDExNy40bC0yNi4xIDc0LjYgMjkzLjggMC0yNi4xLTc0LjZDMzcyLjMgMTA0LjYgMzYwLjIgOTYgMzQ2LjYgOTZMMTY1LjQgOTZjLTEzLjYgMC0yNS43IDguNi0zMC4yIDIxLjR6TTM5LjYgMTk2LjhMNzQuOCA5Ni4zQzg4LjMgNTcuOCAxMjQuNiAzMiAxNjUuNCAzMmwxODEuMiAwYzQwLjggMCA3Ny4xIDI1LjggOTAuNiA2NC4zbDM1LjIgMTAwLjVjMjMuMiA5LjYgMzkuNiAzMi41IDM5LjYgNTkuMmwwIDE5MmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMzIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0zMi0zMjAgMCAwIDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMybC0zMiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMkwwIDI1NmMwLTI2LjcgMTYuNC00OS42IDM5LjYtNTkuMnpNMTI4IDMwNGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem0yODggMzJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0eiJdfSxXT3Q9UjdlLE83ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjcm9wLXNpbXBsZSIsaWNvbjpbNTEyLDUxMixbImNyb3AtYWx0Il0sImY1NjUiLCJNMTI4IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyUzY0IDE0LjMgNjQgMzJsMCAzMi0zMiAwQzE0LjMgNjQgMCA3OC4zIDAgOTZzMTQuMyAzMiAzMiAzMmwzMiAwIDAgMjU2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDIwOCAwIDAtNjQtMjA4IDAgMC0zNTJ6TTM4NCA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTMyIDMyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTMyIDAgMC0yNTZjMC0zNS4zLTI4LjctNjQtNjQtNjRsLTIwOCAwIDAgNjQgMjA4IDAgMCAzNTJ6Il19LEdPdD1PN2UsS090PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im1lZGFsIixpY29uOls0NDgsNTEyLFsxMjc5NDFdLCJmNWEyIiwiTTIyNC4zIDEyOEwxMzkuNy0xMi45Yy02LjUtMTAuOC0yMC4xLTE0LjctMzEuMy05LjFMMjEuOCAyMS4zQzkuOSAyNy4yIDUuMSA0MS42IDExIDUzLjVMODAuNiAxOTIuNmMtMzAuMSAzMy45LTQ4LjMgNzguNS00OC4zIDEyNy40IDAgMTA2IDg2IDE5MiAxOTIgMTkyczE5Mi04NiAxOTItMTkyYzAtNDguOS0xOC4zLTkzLjUtNDguMy0xMjcuNEw0MzcuNiA1My41YzUuOS0xMS45IDEuMS0yNi4zLTEwLjctMzIuMkwzNDAuMi0yMi4xYy0xMS4yLTUuNi0yNC45LTEuNi0zMS4zIDkuMUwyMjQuMyAxMjh6bTMwLjggMTQyLjVjMS40IDIuOCA0IDQuNyA3IDUuMWw1MC4xIDcuM2M3LjcgMS4xIDEwLjcgMTAuNSA1LjIgMTZsLTM2LjMgMzUuNGMtMi4yIDIuMi0zLjIgNS4yLTIuNyA4LjNsOC42IDQ5LjljMS4zIDcuNi02LjcgMTMuNS0xMy42IDkuOWwtNDQuOC0yMy42Yy0yLjctMS40LTYtMS40LTguNyAwbC00NC44IDIzLjZjLTYuOSAzLjYtMTQuOS0yLjItMTMuNi05LjlsOC42LTQ5LjljLjUtMy0uNS02LjEtMi43LTguM2wtMzYuMy0zNS40Yy01LjYtNS40LTIuNS0xNC44IDUuMi0xNmw1MC4xLTcuM2MzLS40IDUuNy0yLjQgNy01LjFsMjIuNC00NS40YzMuNC03IDEzLjMtNyAxNi44IDBsMjIuNCA0NS40eiJdfSxZT3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic2Nyb2xsIixpY29uOls1NzYsNTEyLFsxMjgyMjBdLCJmNzBlIiwiTTAgMTEyQzAgNzAuNSAzMS42IDM2LjQgNzIgMzIuNGwwLS40IDI4MCAwYzUzIDAgOTYgNDMgOTYgOTZsMCAxNzYtMTc2IDBjLTM5LjggMC03MiAzMi4yLTcyIDcybDAgNjBjMCAyNC4zLTE5LjcgNDQtNDQgNDRzLTQ0LTE5LjctNDQtNDRsMC0yMjgtNjQgMGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhsMC00OHpNMjM2LjggNDgwYzcuMS0xMy4xIDExLjItMjguMSAxMS4yLTQ0bDAtNjBjMC0xMy4zIDEwLjctMjQgMjQtMjRsMjQ4IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRsMCAyNGMwIDQ0LjItMzUuOCA4MC04MCA4MGwtMjI3LjIgMHpNODAgODBjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgNDggNjQgMCAwLTQ4YzAtMTcuNy0xNC4zLTMyLTMyLTMyeiJdfSxaT3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmlsZS1leGNlbCIsaWNvbjpbMzg0LDUxMixbXSwiZjFjMyIsIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEwyMTMuNSAwYzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43TDM2NS4zIDEyNS4zYzEyIDEyIDE4LjcgMjguMyAxOC43IDQ1LjNMMzg0IDQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgNjR6bTIwOC01LjVsMCA5My41YzAgMTMuMyAxMC43IDI0IDI0IDI0TDMyNS41IDE3NiAyMDggNTguNXpNMTY0IDI2Ni43Yy03LjQtMTEtMjIuMy0xNC0zMy4zLTYuN3MtMTQgMjIuMy02LjcgMzMuM0wxNjMuMiAzNTIgMTI0IDQxMC43Yy03LjQgMTEtNC40IDI1LjkgNi43IDMzLjNzMjUuOSA0LjQgMzMuMy02LjdsMjgtNDIgMjggNDJjNy40IDExIDIyLjMgMTQgMzMuMyA2LjdzMTQtMjIuMyA2LjctMzMuM0wyMjAuOCAzNTIgMjYwIDI5My4zYzcuNC0xMSA0LjQtMjUuOS02LjctMzMuM3MtMjUuOS00LjQtMzMuMyA2LjdsLTI4IDQyLTI4LTQyeiJdfSxYT3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmlsdGVyIixpY29uOls1MTIsNTEyLFtdLCJmMGIwIiwiTTMyIDY0QzE5LjEgNjQgNy40IDcxLjggMi40IDgzLjhTLjIgMTA5LjUgOS40IDExOC42TDE5MiAzMDEuMyAxOTIgNDE2YzAgOC41IDMuNCAxNi42IDkuNCAyMi42bDY0IDY0YzkuMiA5LjIgMjIuOSAxMS45IDM0LjkgNi45UzMyMCA0OTIuOSAzMjAgNDgwbDAtMTc4LjcgMTgyLjYtMTgyLjZjOS4yLTkuMiAxMS45LTIyLjkgNi45LTM0LjlTNDkyLjkgNjQgNDgwIDY0TDMyIDY0eiJdfSxRT3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZHJ1bSIsaWNvbjpbNTEyLDUxMixbMTI5MzQ1XSwiZjU2OSIsIk01MDEuMiA3Ni4xYzExLjEtNy4zIDE0LjItMjIuMSA2LjktMzMuMnMtMjIuMS0xNC4yLTMzLjItNi45TDM3MC4yIDEwNC41QzMzNS44IDk4LjcgMjk3IDk2IDI1NiA5NiAxMTQuNiA5NiAwIDEyOCAwIDIwOEwwIDM2OGMwIDMxLjMgMjcuNCA1OC44IDcyIDc4LjdMNzIgMzQ0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCAxMTkuNGMzMyA4LjkgNzEuMSAxNC41IDExMiAxNi4xTDIzMiAzNzZjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDEwMy41YzQwLjktMS42IDc5LTcuMiAxMTItMTYuMUwzOTIgMzQ0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCAxMDIuN2M0NC42LTE5LjkgNzItNDcuNCA3Mi03OC43bDAtMTYwYzAtNDEuMS0zMC4yLTY5LjUtNzguOC04Ny40bDY3LjktNDQuNXpNMzA3LjQgMTQ1LjZsLTY0LjYgNDIuM2MtMTEuMSA3LjMtMTQuMiAyMi4xLTYuOSAzMy4yczIyLjEgMTQuMiAzMy4yIDYuOWwxMTEuMS03Mi44YzE0LjcgMy4yIDI3LjkgNyAzOS40IDExLjUgMzguOCAxNS4xIDQ0LjQgMzAuNiA0NC40IDQxLjMgMCAuOC0yLjcgMTcuMi00NiAzNS45LTM4LjkgMTYuOC05NiAyOC4xLTE2MiAyOC4xUzEzMi45IDI2MC43IDk0IDI0My45Yy00My4zLTE4LjctNDYtMzUuMS00Ni0zNS45IDAtMTAuNiA1LjYtMjYuMiA0NC40LTQxLjMgMzguMy0xNC45IDk1LjQtMjIuNyAxNjMuNi0yMi43IDE4IDAgMzUuMSAuNSA1MS40IDEuNnoiXX0sSk90PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im1hcC1waW4iLGljb246WzMyMCw1MTIsWzEyODIwNV0sImYyNzYiLCJNMTkyIDI4NC40QzI1Ni4xIDI2OS45IDMwNCAyMTIuNSAzMDQgMTQ0IDMwNCA2NC41IDIzOS41IDAgMTYwIDBTMTYgNjQuNSAxNiAxNDRjMCA2OC41IDQ3LjkgMTI1LjkgMTEyIDE0MC40TDEyOCA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTE5NS42ek0xNjggOTZjLTMwLjkgMC01NiAyNS4xLTU2IDU2IDAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0YzAtNTcuNCA0Ni42LTEwNCAxMDQtMTA0IDEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0eiJdfSxGN2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic2NhbGUtdW5iYWxhbmNlZC1mbGlwIixpY29uOls2NDAsNTEyLFsiYmFsYW5jZS1zY2FsZS1yaWdodCJdLCJmNTE2IiwiTTExOC4yIDYyLjRDMTAxLjUgNTYuOCA5Mi40IDM4LjYgOTggMjEuOVMxMjEuNy0zLjkgMTM4LjUgMS42bDExMyAzNy43YzEzLjktMjMuNSAzOS42LTM5LjMgNjguOS0zOS4zIDQ0LjIgMCA4MCAzNS44IDgwIDgwIDAgMy0uMiA1LjktLjUgOC44bDEyMi42IDQwLjljMTYuOCA1LjYgMjUuOCAyMy43IDIwLjIgNDAuNXMtMjMuNyAyNS44LTQwLjUgMjAuMkwzNjYuNyAxNDUuMmMtNC41IDMuMi05LjMgNS45LTE0LjQgOC4ybDAgMzI2LjdjMCAxNy43LTE0LjMgMzItMzIgMzJsLTE5MiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDE2MCAwIDAtMjk0LjdjLTIxLTkuMi0zNy4yLTI3LTQ0LjItNDlsLTEyNS45LTQyek0yMDAuOCAyODhMMTI4LjMgMTYzLjggNTUuOSAyODggMjAwLjggMjg4em0tNzIuNCA5NmMtNjIuOSAwLTExNS4yLTM0LTEyNi03OC45LTIuNi0xMSAxLTIyLjMgNi43LTMyLjFsOTUuMi0xNjMuMmM1LTguNiAxNC4yLTEzLjggMjQuMS0xMy44czE5LjEgNS4zIDI0LjEgMTMuOGw5NS4yIDE2My4yYzUuNyA5LjggOS4zIDIxLjEgNi43IDMyLjEtMTAuOCA0NC44LTYzLjEgNzguOS0xMjYgNzguOXptMzgyLjgtOTIuMmwtNzIuNCAxMjQuMiAxNDQuOSAwLTcyLjQtMTI0LjJ6bTEyNiAxNDEuM0M2MjYuNCA0NzggNTc0LjEgNTEyIDUxMS4yIDUxMnMtMTE1LjItMzQtMTI2LTc4LjljLTIuNi0xMSAxLTIyLjMgNi43LTMyLjFsOTUuMi0xNjMuMmM1LTguNiAxNC4yLTEzLjggMjQuMS0xMy44czE5LjEgNS4zIDI0LjEgMTMuOGw5NS4yIDE2My4yYzUuNyA5LjggOS4zIDIxLjEgNi43IDMyLjF6Il19LGVGdD1GN2UsdEZ0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImFycm93cy10by1jaXJjbGUiLGljb246WzUxMiw1MTIsW10sImU0YmQiLCJNOS40IDkuNEMyMS45LTMuMSA0Mi4xLTMuMSA1NC42IDkuNEwxMjggODIuNyAxMjggNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMybC05NiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDE4LjcgMC03My40LTczLjRDLTMuMSA0Mi4xLTMuMSAyMS45IDkuNCA5LjR6TTIwMCAyNTZhNTYgNTYgMCAxIDEgMTEyIDAgNTYgNTYgMCAxIDEgLTExMiAwek01MDIuNiA1NC42TDQyOS4zIDEyOCA0NDggMTI4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC05NiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCAxOC43IDczLjQtNzMuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zem0tNDUuMyA0NDhMMzg0IDQyOS4zIDM4NCA0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmw5NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0xOC43IDAgNzMuNCA3My40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwek05LjQgNDU3LjRMODIuNyAzODQgNjQgMzg0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDk2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTE4LjctNzMuNCA3My40Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM3oiXX0sYUZ0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImVudmVsb3BlIixpY29uOls1MTIsNTEyLFsxMjgzODYsOTk5Myw2MTQ0M10sImYwZTAiLCJNNDggNjRjLTI2LjUgMC00OCAyMS41LTQ4IDQ4IDAgMTUuMSA3LjEgMjkuMyAxOS4yIDM4LjRsMjA4IDE1NmMxNy4xIDEyLjggNDAuNSAxMi44IDU3LjYgMGwyMDgtMTU2YzEyLjEtOS4xIDE5LjItMjMuMyAxOS4yLTM4LjQgMC0yNi41LTIxLjUtNDgtNDgtNDhMNDggNjR6TTAgMTk2TDAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDM4NCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMTg4LTE5OC40IDE0OC44Yy0zNC4xIDI1LjYtODEuMSAyNS42LTExNS4yIDBMMCAxOTZ6Il19LHNGdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJiYWJ5IixpY29uOlszODQsNTEyLFtdLCJmNzdjIiwiTTEyMCA4OGE3MiA3MiAwIDEgMSAxNDQgMCA3MiA3MiAwIDEgMSAtMTQ0IDB6TTcuNyAxNDQuNWMxMy0xNy45IDM4LTIxLjggNTUuOS04LjhMOTkuOCAxNjJjMjYuOCAxOS41IDU5LjEgMzAgOTIuMiAzMHM2NS40LTEwLjUgOTIuMi0zMGwzNi4yLTI2LjRjMTcuOS0xMyA0Mi45LTkgNTUuOSA4LjhzOSA0Mi45LTguOCA1NS45bC0zNi4yIDI2LjRjLTEzLjYgOS45LTI4LjEgMTguMi00My4zIDI1bDAgMzYuMy0xOTIgMCAwLTM2LjNjLTE1LjItNi43LTI5LjctMTUuMS00My4zLTI1TDE2LjUgMjAwLjNjLTE3LjktMTMtMjEuOC0zOC04LjgtNTUuOXpNOTcuNSAzMjkuM2w2MC42IDUzLTI2IDM3LjIgMjQuMyAyNC4zYzE1LjYgMTUuNiAxNS42IDQwLjkgMCA1Ni42cy00MC45IDE1LjYtNTYuNiAwbC00OC00OEMzOCA0MzguNiAzNi4xIDQxNyA0Ny4yIDQwMS4xbDUwLjItNzEuOHptMTI4LjUgNTNsNjAuNi01MyA1MC4yIDcxLjhjMTEuMSAxNS45IDkuMiAzNy41LTQuNSA1MS4ybC00OCA0OGMtMTUuNiAxNS42LTQwLjkgMTUuNi01Ni42IDBzLTE1LjYtNDAuOSAwLTU2LjZsMjQuMy0yNC4zLTI2LTM3LjJ6Il19LEI3ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzcXVhcmUtY2FyZXQtZG93biIsaWNvbjpbNDQ4LDUxMixbImNhcmV0LXNxdWFyZS1kb3duIl0sImYxNTAiLCJNMzg0IDQ4MGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwek0yMjQgMzUyYy02LjcgMC0xMy0yLjgtMTcuNi03LjdsLTEwNC0xMTJjLTYuNS03LTguMi0xNy4yLTQuNC0yNS45UzExMC41IDE5MiAxMjAgMTkybDIwOCAwYzkuNSAwIDE4LjIgNS43IDIyIDE0LjRzMi4xIDE4LjktNC40IDI1LjlsLTEwNCAxMTJjLTQuNSA0LjktMTAuOSA3LjctMTcuNiA3Ljd6Il19LGlGdD1CN2UsckZ0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRlbnQiLGljb246WzUxMiw1MTIsW10sImU1N2QiLCJNMjYuOSAyMDYuOUwzLjcgNDQ0LjlDMS44IDQ2My43IDE2LjYgNDgwIDM1LjUgNDgwbDE3Mi43IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC0xMjljMC04LjMgNi43LTE1IDE1LTE1IDUuNSAwIDEwLjYgMyAxMy4yIDcuOWw4Ni4xIDE1OWM4LjQgMTUuNSAyNC42IDI1LjEgNDIuMiAyNS4xbDY0LjEgMGMxOC45IDAgMzMuNy0xNi4zIDMxLjgtMzUuMUw0ODUuNiAyMDcuMWMtMS45LTE5LjYtMTIuOC0zNy4zLTI5LjUtNDcuOEwyODAuOSA0OC4zYy0xNS43LTEwLTM1LjgtOS45LTUxLjUgLjFMNTYuMSAxNTkuMmMtMTYuNSAxMC42LTI3LjMgMjguMi0yOS4yIDQ3Ljd6Il19LG9GdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJhIixpY29uOlszODQsNTEyLFs5N10sIjQxIiwiTTIyMS41IDUxLjdDMjE2LjYgMzkuOCAyMDQuOSAzMiAxOTIgMzJzLTI0LjYgNy44LTI5LjUgMTkuN2MtOTMuMyAyMjQtMTQ2LjcgMzUyLTE2MCAzODQtNi44IDE2LjMgLjkgMzUgMTcuMiA0MS44czM1LS45IDQxLjgtMTcuMmwzMS44LTc2LjMgMTk3LjMgMCAzMS44IDc2LjNjNi44IDE2LjMgMjUuNSAyNCA0MS44IDE3LjJzMjQtMjUuNSAxNy4yLTQxLjhjLTEzLjMtMzItNjYuNy0xNjAtMTYwLTM4NHpNMjY0IDMyMGwtMTQ0IDAgNzItMTcyLjggNzIgMTcyLjh6Il19LG5GdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwYXJhY2h1dGUtYm94IixpY29uOls1MTIsNTEyLFtdLCJmNGNkIiwiTTEyOCAyMjRDMTI4IDE1Mi4yIDE0NC4zIDg4LjQgMTY5LjUgNDMuNCAxOTUuMS0yLjQgMjI2LjYtMjQgMjU2LTI0czYwLjkgMjEuNiA4Ni41IDY3LjRDMzY3LjcgODguNCAzODQgMTUyLjIgMzg0IDIyNGwtMTA0IDAgMCA5NiA4IDBjOS4zIDAgMTguMSAyIDI2IDUuNWwxMTguNC0xMDEuNS0uNSAwYzAtNzguNC0xNy43LTE1MC42LTQ3LjYtMjA0LTYuMS0xMS0xMi45LTIxLjMtMjAuMy0zMC45IDg2LjUgMzUuOSAxNDcuOCAxMTUuMSAxNDcuOCAyMTguOSAwIDctMy4xIDEzLjctOC40IDE4LjJMMzQ3LjQgMzYwLjFjMyA3LjQgNC42IDE1LjQgNC42IDIzLjlsMCA2NGMwIDM1LjMtMjguNyA2NC02NCA2NGwtNjQgMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRsMC02NGMwLTguNCAxLjYtMTYuNSA0LjYtMjMuOUw4LjQgMjI2LjJDMy4xIDIyMS43IDAgMjE1IDAgMjA4IDAgMTA0LjIgNjEuMyAyNC45IDE0Ny44LTEwLjkgMTQwLjUtMS40IDEzMy43IDkgMTI3LjYgMjAgOTcuNyA3My40IDgwIDE0NS42IDgwIDIyNGwtLjUgMCAxMTguNCAxMDEuNWM4LTMuNSAxNi44LTUuNSAyNi01LjVsOCAwIDAtOTYtMTA0IDB6Il19LGxGdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjYXJ0LWFycm93LWRvd24iLGljb246WzY0MCw1MTIsW10sImYyMTgiLCJNMCA4QzAtNS4zIDEwLjctMTYgMjQtMTZsNDUuMyAwYzI3LjEgMCA1MC4zIDE5LjQgNTUuMSA0NmwuNCAyIDE4Ny4yIDAgMCAxMDIuMS0zMS0zMWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWw3MiA3MmM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGw3Mi03MmM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwbC0zMSAzMSAwLTEwMi4xIDE3Ny40IDBjMjAgMCAzNS4xIDE4LjIgMzEuNCAzNy45TDUzNy44IDIzNS44Yy01LjcgMzAuMy0zMi4xIDUyLjItNjIuOSA1Mi4ybC0zMDMuNiAwIDUuMSAyOC4zYzIuMSAxMS40IDEyIDE5LjcgMjMuNiAxOS43TDQ1NiAzMzZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTI1NS45IDBjLTM0LjggMC02NC42LTI0LjktNzAuOC01OS4xTDc3LjIgMzguNmMtLjctMy44LTQtNi42LTcuOS02LjZMMjQgMzJDMTAuNyAzMiAwIDIxLjMgMCA4ek0xNjAgNDY0YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTIyNCAwYTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6Il19LGNGdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJicmlkZ2UtY2lyY2xlLWV4Y2xhbWF0aW9uIixpY29uOls1NzYsNTEyLFtdLCJlNGNhIiwiTTMyIDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRTMTQuMyA5NiAzMiA5Nmw4IDAgMCA2NC00MCAwIDAgMTEyYzM3LjYgOS40IDY0IDQzLjIgNjQgODJsMCA5NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwzMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtNjRjMC01MyA0My05NiA5Ni05NiA2LjQgMCAxMi43IC42IDE4LjcgMS44IDM0LjctNDkuNSA5Mi4yLTgxLjggMTU3LjMtODEuOCAyOC42IDAgNTUuNiA2LjIgODAgMTcuNGwwLTY1LjQtNDAgMCAwLTY0IDggMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwzMiAzMnpNNDI0IDk2bDAgNjQtODAgMCAwLTY0IDgwIDB6TTI5NiA5NmwwIDY0LTgwIDAgMC02NCA4MCAwek04OCA5Nmw4MCAwIDAgNjQtODAgMCAwLTY0ek00MzIgNTQ0YTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptMC0xMDBhMjAgMjAgMCAxIDEgMCA0MCAyMCAyMCAwIDEgMSAwLTQwem0wLTE0MGM4LjggMCAxNiA3LjIgMTYgMTZsMCA4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTgwYzAtOC44IDcuMi0xNiAxNi0xNnoiXX0sb29lPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNsb3VkLWFycm93LXVwIixpY29uOls1NzYsNTEyLFs2MjMzOCwiY2xvdWQtdXBsb2FkIiwiY2xvdWQtdXBsb2FkLWFsdCJdLCJmMGVlIiwiTTE0NCA0ODBjLTc5LjUgMC0xNDQtNjQuNS0xNDQtMTQ0IDAtNjMuNCA0MS0xMTcuMiA5Ny45LTEzNi41LTEuMy03LjctMS45LTE1LjUtMS45LTIzLjUgMC03OS41IDY0LjUtMTQ0IDE0NC0xNDQgNTUuNCAwIDEwMy41IDMxLjMgMTI3LjYgNzcuMSAxNC4yLTguMyAzMC44LTEzLjEgNDguNC0xMy4xIDUzIDAgOTYgNDMgOTYgOTYgMCAxNS43LTMuOCAzMC42LTEwLjUgNDMuNyA0NCAyMC4zIDc0LjUgNjQuNyA3NC41IDExNi4zIDAgNzAuNy01Ny4zIDEyOC0xMjggMTI4bC0zMDQgMHpNMzA1IDE5MWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBsLTcyIDcyYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsMzEtMzEgMCAxMDIuMWMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtMTAyLjEgMzEgMzFjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC03Mi03MnoiXX0sZEZ0PW9vZSx1RnQ9b29lLHBGdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJhdCIsaWNvbjpbNTEyLDUxMixbNjE5NDZdLCI0MCIsIk0yNTYgNjRDMTUwIDY0IDY0IDE1MCA2NCAyNTZzODYgMTkyIDE5MiAxOTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJDMTE0LjYgNTEyIDAgMzk3LjQgMCAyNTZTMTE0LjYgMCAyNTYgMCA1MTIgMTE0LjYgNTEyIDI1NmwwIDMyYzAgNTMtNDMgOTYtOTYgOTYtMjkuMyAwLTU1LjYtMTMuMi03My4yLTMzLjktMjIuOCAyMS01My4zIDMzLjktODYuOCAzMy45LTcwLjcgMC0xMjgtNTcuMy0xMjgtMTI4czU3LjMtMTI4IDEyOC0xMjhjMjcuOSAwIDUzLjcgOC45IDc0LjcgMjQuMSA1LjctNSAxMy4xLTguMSAyMS4zLTguMSAxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDExMmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMzJjMC0xMDYtODYtMTkyLTE5Mi0xOTJ6bTY0IDE5MmE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6Il19LG5vZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJpbmRpYW4tcnVwZWUtc2lnbiIsaWNvbjpbMzIwLDUxMixbImluZGlhbi1ydXBlZSIsImluciJdLCJlMWJjIiwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJsMjY0IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTc2LjcgMGMxNy43IDE5LjggMzAuMSA0NC42IDM0LjcgNzJsNDIgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtNDIgMGMtMTAuNCA2Mi4yLTYwLjggMTEwLjktMTIzLjggMTE4LjlMMjc0LjYgNDIyYzE0LjQgMTAuMyAxNy43IDMwLjMgNy40IDQ0LjZzLTMwLjMgMTcuNy00NC42IDcuNEwxMy40IDMxNEMyLjEgMzA2LTIuNyAyOTEuNSAxLjUgMjc4LjJTMTguMSAyNTYgMzIgMjU2bDgwIDBjMzUuOCAwIDY2LjEtMjMuNSA3Ni4zLTU2TDI0IDIwMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGwxNjQuMyAwYy0xMC4yLTMyLjUtNDAuNS01Ni03Ni4zLTU2TDMyIDk2QzE0LjMgOTYgMCA4MS43IDAgNjR6Il19LGhGdD1ub2UsZkZ0PW5vZSxtRnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidHJ1Y2siLGljb246WzU3Niw1MTIsWzEyODY2Niw5OTUxXSwiZjBkMSIsIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDI4OCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIgNTAuNyAwYzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43TDU1Ny4zIDE5MmMxMiAxMiAxOC43IDI4LjMgMTguNyA0NS4zTDU3NiAzODRjMCAzNS4zLTI4LjcgNjQtNjQgNjRsLTMuMyAwYy0xMC40IDM2LjktNDQuNCA2NC04NC43IDY0cy03NC4yLTI3LjEtODQuNy02NGwtMTAyLjYgMGMtMTAuNCAzNi45LTQ0LjQgNjQtODQuNyA2NHMtNzQuMi0yNy4xLTg0LjctNjRMNjQgNDQ4Yy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDk2ek01MTIgMjg4bDAtNTAuNy00NS4zLTQ1LjMtNTAuNyAwIDAgOTYgOTYgMHpNMTkyIDQyNGE0MCA0MCAwIDEgMCAtODAgMCA0MCA0MCAwIDEgMCA4MCAwem0yMzIgNDBhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgweiJdfSxIN2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2hhbGtib2FyZC11c2VyIixpY29uOls2NDAsNTEyLFsiY2hhbGtib2FyZC10ZWFjaGVyIl0sImY1MWMiLCJNMTkyIDM4NGM1MyAwIDk2IDQzIDk2IDk2IDAgMTcuNy0xNC4zIDMyLTMyIDMyTDMyIDUxMmMtMTcuNyAwLTMyLTE0LjMtMzItMzIgMC01MyA0My05NiA5Ni05Nmw5NiAwek01NDQgMzJjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAyODhjMCAzMy4xLTI1LjIgNjAuNC01Ny41IDYzLjdsLTYuNSAuMy0yMTEuMSAwYy01LjEtMjQuMi0xNi4zLTQ2LjEtMzIuMS02NGw1MS4yIDAgMC0zMmMwLTE3LjcgMTQuMy0zMiAzMi0zMmw5NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMzIgMzIgMCAwLTI4OC0zNTIgMCAwIDU3LjNjLTE0LjgtNi0zMS05LjMtNDgtOS4zLTUuNCAwLTEwLjggLjMtMTYgMWwwLTQ5YzAtMzUuMyAyOC43LTY0IDY0LTY0bDM1MiAwek0xNDQgMzUyYTgwIDgwIDAgMSAxIDAtMTYwIDgwIDgwIDAgMSAxIDAgMTYweiJdfSxnRnQ9SDdlLGJGdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ1c2VyLWNoZWNrIixpY29uOls2NDAsNTEyLFtdLCJmNGZjIiwiTTI4NiAzMDRjOTguNSAwIDE3OC4zIDc5LjggMTc4LjMgMTc4LjMgMCAxNi40LTEzLjMgMjkuNy0yOS43IDI5LjdMNzggNTEyYy0xNi40IDAtMjkuNy0xMy4zLTI5LjctMjkuNyAwLTk4LjUgNzkuOC0xNzguMyAxNzguMy0xNzguM2w1OS40IDB6TTU4NS43IDEwNS45YzcuOC0xMC43IDIyLjgtMTMuMSAzMy41LTUuM3MxMy4xIDIyLjggNS4zIDMzLjVMNTIyLjEgMjc0LjljLTQuMiA1LjctMTAuNyA5LjQtMTcuNyA5LjhzLTE0LTIuMi0xOC45LTcuM2wtNDYuNC00OGMtOS4yLTkuNS05LTI0LjcgLjYtMzMuOSA5LjUtOS4yIDI0LjctOC45IDMzLjkgLjZsMjYuNSAyNy40IDg1LjYtMTE3Ljd6TTI1Ni4zIDI0OGExMjAgMTIwIDAgMSAxIDAtMjQwIDEyMCAxMjAgMCAxIDEgMCAyNDB6Il19LHZGdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ1c2VyLW5pbmphIixpY29uOls0NDgsNTEyLFsxMjkzOTldLCJmNTA0IiwiTTM1MiAxMjhjMCA3MC43LTU3LjMgMTI4LTEyOCAxMjgtNTcuMiAwLTEwNS42LTM3LjUtMTIyLTg5LjMtMS4xIDEuMy0yLjIgMi42LTMuNSAzLjgtMTUuOCAxNS44LTM4LjggMjAuNy01My42IDIyLjEtOC4xIC44LTE0LjYtNS43LTEzLjgtMTMuOCAxLjQtMTQuNyA2LjMtMzcuOCAyMi4xLTUzLjYgNS44LTUuOCAxMi42LTEwLjEgMTkuNi0xMy40LTctMy4yLTEzLjgtNy42LTE5LjYtMTMuNC0xNS44LTE1LjgtMjAuNy0zOC44LTIyLjEtNTMuNi0uOC04LjEgNS43LTE0LjYgMTMuOC0xMy44IDE0LjcgMS40IDM3LjggNi4zIDUzLjYgMjIuMSA0LjggNC44IDguNyAxMC40IDExLjcgMTYuMSAyMS4zLTQxLjIgNjQuMy02OS40IDExMy44LTY5LjQgNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjh6TTE0NCAxMTJjMCA4LjggNy4yIDE2IDE2IDE2bDEyOCAwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2TDE2MCA5NmMtOC44IDAtMTYgNy4yLTE2IDE2em0tMS40IDIxMWw2NyA1MC4yYzguNSA2LjQgMjAuMyA2LjQgMjguOCAwbDY3LTUwLjJjNi41LTQuOSAxNS4yLTYuMiAyMi42LTIuOCA2MS40IDI4LjIgMTA0LjEgOTAuMiAxMDQuMSAxNjIuMSAwIDE2LjQtMTMuMyAyOS43LTI5LjcgMjkuN0w0NS43IDUxMmMtMTYuNCAwLTI5LjctMTMuMy0yOS43LTI5LjcgMC03MiA0Mi43LTEzNCAxMDQuMS0xNjIuMSA3LjQtMy40IDE2LjEtMi4xIDIyLjYgMi44eiJdfSx4RnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGxhbnQtd2lsdCIsaWNvbjpbNTEyLDUxMixbXSwiZTVhYSIsIk0zNDQtMzJjNjYuMyAwIDEyMCA1My43IDEyMCAxMjBsMCA2LjJjMjkuMyAxMi4yIDQ4IDQxLjMgNDggNzYuOSAwIDI3LjktMjUuMyA3NC44LTY2IDExMS43LTMuOCAzLjUtOC44IDUuMy0xNCA1LjNzLTEwLjItMS44LTE0LTUuM2MtNDAuNy0zNi44LTY2LTgzLjctNjYtMTExLjcgMC0zNS42IDE4LjctNjQuNyA0OC03Ni45bDAtNi4yYzAtMzAuOS0yNS4xLTU2LTU2LTU2cy01NiAyNS4xLTU2IDU2bDAgNDI0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMjk2YzAtMzAuOS0yNS4xLTU2LTU2LTU2cy01NiAyNS4xLTU2IDU2bDAgMzguMmMyOS4zIDEyLjIgNDggNDEuMyA0OCA3Ni45IDAgMjcuOS0yNS4zIDc0LjgtNjYgMTExLjctMy44IDMuNS04LjggNS4zLTE0IDUuM3MtMTAuMi0xLjgtMTQtNS4zQzI1LjMgNDA1LjkgMCAzNTkgMCAzMzEuMSAwIDI5NS40IDE4LjcgMjY2LjQgNDggMjU0LjJMNDggMjE2YzAtNjYuMyA1My43LTEyMCAxMjAtMTIwIDIwLjIgMCAzOS4zIDUgNTYgMTMuOEwyMjQgODhjMC02Ni4zIDUzLjctMTIwIDEyMC0xMjB6Il19LHE3ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ3ZWlnaHQtc2NhbGUiLGljb246WzQ0OCw1MTIsWyJ3ZWlnaHQiXSwiZjQ5NiIsIk0xMTYuNiAxOTJjLTMtMTAuMS00LjYtMjAuOS00LjYtMzIgMC02MS45IDUwLjEtMTEyIDExMi0xMTJTMzM2IDk4LjEgMzM2IDE2MGMwIDExLjEtMS42IDIxLjktNC42IDMybC03MSAwIDI0LjYtNDQuM2M2LjQtMTEuNiAyLjMtMjYuMi05LjMtMzIuNnMtMjYuMi0yLjMtMzIuNiA5LjNsLTM3LjYgNjcuNy04OC44IDB6TTEyOCAzMkw2NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0bC02NCAwQzI5My4zIDExLjkgMjYwIDAgMjI0IDBzLTY5LjMgMTEuOS05NiAzMnoiXX0seUZ0PXE3ZSxPYj17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjYXJldC1yaWdodCIsaWNvbjpbMjU2LDUxMixbXSwiZjBkYSIsIk0yNDkuMyAyMzUuOGMxMC4yIDEyLjYgOS41IDMxLjEtMi4yIDQyLjhsLTEyOCAxMjhjLTkuMiA5LjItMjIuOSAxMS45LTM0LjkgNi45UzY0LjUgMzk2LjkgNjQuNSAzODRsMC0yNTZjMC0xMi45IDcuOC0yNC42IDE5LjgtMjkuNnMyNS43LTIuMiAzNC45IDYuOWwxMjggMTI4IDIuMiAyLjR6Il19LHdGdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmbG9yaW4tc2lnbiIsaWNvbjpbMzg0LDUxMixbXSwiZTE4NCIsIk0zMTQuNyAzMmMtMzguOCAwLTczLjcgMjMuMy04OC42IDU5LjFMMTcwLjcgMjI0IDY0IDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw4MCAwLTQ1LjEgMTA4LjNjLTUgMTEuOS0xNi42IDE5LjctMjkuNSAxOS43TDMyIDQxNmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzNy4zIDBjMzguOCAwIDczLjctMjMuMyA4OC42LTU5LjFMMjEzLjMgMjg4IDMyMCAyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTgwIDAgNDUuMS0xMDguM2M1LTExLjkgMTYuNi0xOS43IDI5LjUtMTkuN0wzNTIgOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTM3LjMgMHoiXX0sRmI9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYmVsbCIsaWNvbjpbNDQ4LDUxMixbMTI4Mjc2LDYxNjAyXSwiZjBmMyIsIk0yMjQgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAzLjJDMTE5IDUwIDY0IDExNC42IDY0IDE5MmwwIDIxLjdjMCA0OC4xLTE2LjQgOTQuOC00Ni40IDEzMi40TDcuOCAzNTguM0MyLjcgMzY0LjYgMCAzNzIuNCAwIDM4MC41IDAgNDAwLjEgMTUuOSA0MTYgMzUuNSA0MTZsMzc2LjkgMGMxOS42IDAgMzUuNS0xNS45IDM1LjUtMzUuNSAwLTguMS0yLjctMTUuOS03LjgtMjIuMmwtOS44LTEyLjJDNDAwLjQgMzA4LjUgMzg0IDI2MS44IDM4NCAyMTMuN2wwLTIxLjdjMC03Ny40LTU1LTE0Mi0xMjgtMTU2LjhsMC0zLjJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTE2MiA0NjRjNy4xIDI3LjYgMzIuMiA0OCA2MiA0OHM1NC45LTIwLjQgNjItNDhsLTEyNCAweiJdfSxrRnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibGFyaS1zaWduIixpY29uOlszODQsNTEyLFtdLCJlMWM4IiwiTTE0NCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgNDEuNWM3LjktMSAxNS45LTEuNSAyNC0xLjVzMTYuMSAuNSAyNCAxLjVMMjE2IDI0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCA1NGM1OC45IDIzLjggMTAzLjIgNzYgMTE2LjIgMTM5LjcgMy41IDE3LjMtNy43IDM0LjItMjUgMzcuN3MtMzQuMi03LjctMzcuNy0yNWMtNi43LTMzLjItMjYuNC02MS44LTUzLjQtODAuMmwwIDgxLjhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC0xMDEuOGMtNy44LTEuNS0xNS44LTIuMi0yNC0yLjJzLTE2LjIgLjgtMjQgMi4yTDE2OCAyMzJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC04MS44Yy0zMy44IDIzLTU2IDYxLjktNTYgMTA1LjggMCA3MC43IDU3LjMgMTI4IDEyOCAxMjhsMTYwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMMzIgNDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDE2LjkgMEMxOC41IDM1MCAwIDMwNS4yIDAgMjU2IDAgMTc1LjQgNDkuNiAxMDYuNCAxMjAgNzhsMC01NGMwLTEzLjMgMTAuNy0yNCAyNC0yNHoiXX0sU0Z0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im1pbGwtc2lnbiIsaWNvbjpbMzg0LDUxMixbXSwiZTFlZCIsIk0yOTctMjIuMmMxMi4zIDUgMTguMiAxOSAxMy4yIDMxLjNsLTI5IDcxLjNDMzM4LjggODUuMSAzODQgMTMzLjMgMzg0IDE5MmwwIDIwOGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTIwOGMwLTI2LjUtMjEuNS00OC00OC00OC02LjQgMC0xMi41IDEuMi0xOCAzLjVsLTMwIDczLjggMCAxNzguN2MwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTIxLjItNTcuOCAxNDIuMmMtNSAxMi4zLTE5IDE4LjItMzEuMyAxMy4ycy0xOC4yLTE5LTEzLjItMzEuM0wxNjAgMjUxLjMgMTYwIDE5MmMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OGwwIDIwOGMwIDE3LjctMTQuMyAzMi0zMiAzMlMwIDQxNy43IDAgNDAwTDAgMTEyYzAtMTcuNyAxNC4zLTMyIDMyLTMyIDEwLjkgMCAyMC41IDUuNCAyNi4zIDEzLjcgMTYtOC43IDM0LjMtMTMuNyA1My43LTEzLjcgMzEuMyAwIDU5LjcgMTIuOSA4MCAzMy42IDkuNi05LjggMjAuOS0xNy44IDMzLjUtMjMuNUwyNjUuOC05YzUtMTIuMyAxOS0xOC4yIDMxLjMtMTMuMnoiXX0sajdlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBlcnNvbi1zbm93Ym9hcmRpbmciLGljb246WzU3Niw1MTIsWzEyNzkzOCwic25vd2JvYXJkaW5nIl0sImY3Y2UiLCJNNDI0LjUgMTZhNTYgNTYgMCAxIDEgMCAxMTIgNTYgNTYgMCAxIDEgMC0xMTJ6TTE2Ni40IDQ1LjVjMTAuMi0xNC40IDMwLjItMTcuOSA0NC42LTcuN2wyNzIgMTkyYzE0LjQgMTAuMiAxNy45IDMwLjIgNy43IDQ0LjZzLTMwLjIgMTcuOS00NC42IDcuN2wtOTIuMi02NS4xLTYyLjIgNTMuMyAzMi4xIDI2LjdjMTguMiAxNS4yIDI4LjggMzcuNyAyOC44IDYxLjVsMCA4Ny44IDc3LjUgMTUuMmM2LjIgMS4yIDEyLjYgLjkgMTguNy0uOGw0MS4yLTExLjhjMTIuNy0zLjYgMjYgMy43IDI5LjcgMTYuNXMtMy43IDI2LTE2LjUgMjkuN2wtNDEuMiAxMS44Yy0xMy40IDMuOC0yNy40IDQuNC00MS4xIDEuOEw4Ny4xIDQ0My4zYy0xNy4yLTMuNC0zMy0xMS44LTQ1LjMtMjQuMUwxNS41IDM5M2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDI2LjIgMjYuMmM1LjYgNS42IDEyLjggOS40IDIwLjYgMTFsNjQuMiAxMi42IDAtMTIzLjdjMC0yNy43IDEyLTU0IDMyLjgtNzIuMmw2OS02MC40LTg4LjItNjIuM0MxNTkuNiA4MCAxNTYuMiA2MCAxNjYuNCA0NS41em01OC4xIDM3NS43bDY0IDEyLjUgMC03NS4zYzAtNC43LTIuMS05LjMtNS44LTEyLjNsLTU4LjItNDguNSAwIDEyMy42eiJdfSxfRnQ9ajdlLFY3ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0dHkiLGljb246WzUxMiw1MTIsWyJ0ZWxldHlwZSJdLCJmMWU0IiwiTTQ1MC4yIDI2Ni44YzE1LjggNi41IDM0LjEgLjMgNDIuNi0xNC42bDIuNC00LjJjMjcuOS00OC45IDIzLjYtMTE4LjgtMzEuMy0xNTQuNS0xMjYtODItMjg5LjYtODItNDE1LjYgMC01NC45IDM1LjctNTkuMyAxMDUuNy0zMS4zIDE1NC41bDIuNCA0LjJjOC41IDE0LjkgMjYuNyAyMS4xIDQyLjYgMTQuNmw4MS45LTMzLjdjMTMuOS01LjcgMjIuNC0xOS45IDIwLjktMzQuOWwtNS4xLTUxYzYyLjUtMjEgMTMwLjgtMTkuOSAxOTIuNiAzLjNsLTQuOCA0Ny43Yy0xLjUgMTUgNyAyOS4yIDIwLjkgMzQuOWw4MS45IDMzLjd6TTMyIDM1MmEzMiAzMiAwIDEgMCA2NCAwIDMyIDMyIDAgMSAwIC02NCAwem05NiAwYTMyIDMyIDAgMSAwIDY0IDAgMzIgMzIgMCAxIDAgLTY0IDB6TTY0IDQxNmEzMiAzMiAwIDEgMCAwIDY0IDMyIDMyIDAgMSAwIDAtNjR6bTM1MiAzMmEzMiAzMiAwIDEgMCA2NCAwIDMyIDMyIDAgMSAwIC02NCAwek0yNTYgMzIwYTMyIDMyIDAgMSAwIDAgNjQgMzIgMzIgMCAxIDAgMC02NHptNjQgMzJhMzIgMzIgMCAxIDAgNjQgMCAzMiAzMiAwIDEgMCAtNjQgMHptMTI4LTMyYTMyIDMyIDAgMSAwIDAgNjQgMzIgMzIgMCAxIDAgMC02NHpNMTI4IDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwxOTIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMTkyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyeiJdfSxNRnQ9VjdlLHpGdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ1c2Vycy1yZWN0YW5nbGUiLGljb246WzU3Niw1MTIsW10sImU1OTQiLCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGw0NDggMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMnptMjI0IDcyYTU2IDU2IDAgMSAxIDAgMTEyIDU2IDU2IDAgMSAxIDAtMTEyem0wIDE1MmM1MyAwIDk2IDQzIDk2IDk2bDAgMjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRsLTE0NCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNGwwLTI0YzAtNTMgNDMtOTYgOTYtOTZ6bTk2LTY0YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6TTE2OCAyNzIuM2MtMTUuMiAyMi44LTI0IDUwLjItMjQgNzkuN2wwIDI0YzAgOC40IDEuNCAxNi41IDQuMSAyNGwtNDYuOCAwQzg5LjYgNDAwIDgwIDM5MC40IDgwIDM3OC43TDgwIDM2OGMwLTUwLjMgMzguNy05MS42IDg4LTk1Ljd6TTQyNy45IDQwMGMyLjctNy41IDQuMS0xNS42IDQuMS0yNGwwLTI0YzAtMjkuNS04LjgtNTYuOS0yNC03OS43IDQ5LjMgNC4xIDg4IDQ1LjMgODggOTUuN2wwIDEwLjdjMCAxMS44LTkuNiAyMS4zLTIxLjMgMjEuM2wtNDYuOCAwek05NiAxOTJhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHoiXX0sbG9lPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im1vYmlsZSIsaWNvbjpbMzg0LDUxMixbMTI4MjQxLCJtb2JpbGUtYW5kcm9pZCIsIm1vYmlsZS1waG9uZSJdLCJmM2NlIiwiTTgwIDBDNDQuNyAwIDE2IDI4LjcgMTYgNjRsMCAzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjI0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zODRjMC0zNS4zLTI4LjctNjQtNjQtNjRMODAgMHptNzIgNDE2bDgwIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTgwIDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6Il19LENGdD1sb2UsVEZ0PWxvZSwkRnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYXJyb3dzLXR1cm4tdG8tZG90cyIsaWNvbjpbNDQ4LDUxMixbXSwiZTRjMSIsIk0yNjUuNC02LjZjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBzMTIuNSAzMi44IDAgNDUuM0wyODUuMyA2NCAzNTIgNjRjNTMgMCA5NiA0MyA5NiA5NmwwIDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMzJjMC0xNy43LTE0LjMtMzItMzItMzJsLTY2LjcgMCAyNS40IDI1LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBsLTgwLTgwYy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM2w4MC04MHptLTgyLjcgMjcybDgwIDgwYzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC04MCA4MGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMMTYyLjcgNDAwIDk2IDQwMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMlMwIDQ4MS43IDAgNDY0bDAtMzJjMC01MyA0My05NiA5Ni05Nmw2Ni43IDAtMjUuNC0yNS40Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwek0zMjAgMzY4YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNNjQgMTYwYTY0IDY0IDAgMSAxIDAtMTI4IDY0IDY0IDAgMSAxIDAgMTI4eiJdfSxERnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZXhjbGFtYXRpb24iLGljb246WzEyOCw1MTIsWzEwMDY5LDEwMDcxLDYxNzM4XSwiMjEiLCJNNjQgNDMyYzIyLjEgMCA0MCAxNy45IDQwIDQwcy0xNy45IDQwLTQwIDQwLTQwLTE3LjktNDAtNDBjMC0yMi4xIDE3LjktNDAgNDAtNDB6TTY0IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDggMCAuNiAwIDEuMSAwIDEuN2wtMTYgMzA0Yy0uOSAxNy0xNSAzMC4zLTMyIDMwLjNTMzMgMzcwLjcgMzIgMzUzLjdMMTYgNDkuN2MwLS42IDAtMS4xIDAtMS43IDAtMjYuNSAyMS41LTQ4IDQ4LTQ4eiJdfSxMRnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2h1cmNoIixpY29uOls1MTIsNTEyLFs5OTYyXSwiZjUxZCIsIk0yODAtOGMwLTEzLjMtMTAuNy0yNC0yNC0yNFMyMzItMjEuMyAyMzItOGwwIDI0LTMyIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMzIgMCAwIDQ4LTk4LjYgNjUuOEMxMjAgMTg2LjcgMTEyIDIwMS42IDExMiAyMTcuN2wwIDM4LjMtNzkuOCA0NS42QzEyLjMgMzEzIDAgMzM0LjIgMCAzNTcuMUwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NCA3NC43IDAgODUuNCAwIDMyMCAwbDY0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC05MC45YzAtMjMtMTIuMy00NC4yLTMyLjItNTUuNkw0MDAgMjU2IDQwMCAyMTcuN2MwLTE2LTgtMzEtMjEuNC0zOS45bC05OC42LTY1LjggMC00OCAzMiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0zMiAwIDAtMjR6TTI1NiAzMjBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCA4MC0xMjggMCAwLTgwYzAtMzUuMyAyOC43LTY0IDY0LTY0eiJdfSxFRnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidG9nZ2xlLW9mZiIsaWNvbjpbNTc2LDUxMixbXSwiZjIwNCIsIk0zODQgMTI4YzcwLjcgMCAxMjggNTcuMyAxMjggMTI4UzQ1NC43IDM4NCAzODQgMzg0bC0xOTIgMGMtNzAuNyAwLTEyOC01Ny4zLTEyOC0xMjhzNTcuMy0xMjggMTI4LTEyOGwxOTIgMHpNNTc2IDI1NmMwLTEwNi04Ni0xOTItMTkyLTE5MkwxOTIgNjRDODYgNjQgMCAxNTAgMCAyNTZTODYgNDQ4IDE5MiA0NDhsMTkyIDBjMTA2IDAgMTkyLTg2IDE5Mi0xOTJ6TTE5MiAzMzZhODAgODAgMCAxIDAgMC0xNjAgODAgODAgMCAxIDAgMCAxNjB6Il19LFBGdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzaG9lLXByaW50cyIsaWNvbjpbNTc2LDUxMixbXSwiZjU0YiIsIk0yOTYgMTkyYy0yMS4xLTEyLjEtNDIuMy0yNC4yLTcyLTI5LjNsMC0xNDAuM0MyNTcuNyAxMyAzMTEuNCAwIDM1MiAwIDQ0OCAwIDU3NiA0OCA1NzYgMTI4cy0xMTkuNiA5Ni0xNzYgOTZjLTQ4IDAtNzYtMTYtMTA0LTMyek0xMjggMzJsNDggMCAwIDEyOC00OCAwYy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0ek0yMzIgMzIwYzI4LTE2IDU2LTMyIDEwNC0zMiA1Ni40IDAgMTc2IDE2IDE3NiA5NlMzODQgNTEyIDI4OCA1MTJjLTQwLjUgMC05NC4zLTEzLTEyOC0yMi40bDAtMTQwLjNjMjkuNy01LjIgNTAuOS0xNy4zIDcyLTI5LjR6TTY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRzMjguNy02NCA2NC02NGw0OCAwIDAgMTI4LTQ4IDB6Il19LElGdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmaWxlLWNpcmNsZS1leGNsYW1hdGlvbiIsaWNvbjpbNTc2LDUxMixbXSwiZTRlYiIsIk05NiAwQzYwLjcgMCAzMiAyOC43IDMyIDY0bDAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDE4MCAwYy0yMi43LTMxLjUtMzYtNzAuMi0zNi0xMTIgMC0xMDAuNiA3Ny40LTE4My4yIDE3Ni0xOTEuM2wwLTM4LjFjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMMjkwLjcgMTguN0MyNzguNyA2LjcgMjYyLjUgMCAyNDUuNSAwTDk2IDB6TTM1Ny41IDE3NkwyNjQgMTc2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNEwyNDAgNTguNSAzNTcuNSAxNzZ6TTQzMiA1NDRhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0wLTEwMGEyMCAyMCAwIDEgMSAwIDQwIDIwIDIwIDAgMSAxIDAtNDB6bTAtMTQwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtODBjMC04LjggNy4yLTE2IDE2LTE2eiJdfSxCYj17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ3YWxsZXQiLGljb246WzUxMiw1MTIsW10sImY1NTUiLCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwzODQgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTE5MmMwLTM1LjMtMjguNy02NC02NC02NEw3MiAxMjhjLTEzLjMgMC0yNC0xMC43LTI0LTI0UzU4LjcgODAgNzIgODBsMzg0IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRMNjQgMzJ6TTQxNiAyNTZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0eiJdfSxyZj17cHJlZml4OiJmYXMiLGljb25OYW1lOiJtZXNzYWdlIixpY29uOls1MTIsNTEyLFsiY29tbWVudC1hbHQiXSwiZjI3YSIsIk0wIDM1MkwwIDEyOEMwIDc1IDQzIDMyIDk2IDMybDMyMCAwYzUzIDAgOTYgNDMgOTYgOTZsMCAyMjRjMCA1My00MyA5Ni05NiA5NmwtMTIwIDBjLTUuMiAwLTEwLjIgMS43LTE0LjQgNC44TDE2Ni40IDUzOS4yYy00LjIgMy4xLTkuMiA0LjgtMTQuNCA0LjgtMTMuMyAwLTI0LTEwLjctMjQtMjRsMC03Mi0zMiAwYy01MyAwLTk2LTQzLTk2LTk2eiJdfSxBRnQ9cmYsTkZ0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRyb3BoeSIsaWNvbjpbNTEyLDUxMixbMTI3OTQyXSwiZjA5MSIsIk0xNDQuMyAwbDIyNCAwYzI2LjUgMCA0OC4xIDIxLjggNDcuMSA0OC4yLS4yIDUuMy0uNCAxMC42LS43IDE1LjhsNDkuNiAwYzI2LjEgMCA0OS4xIDIxLjYgNDcuMSA0OS44LTcuNSAxMDMuNy02MC41IDE2MC43LTExOCAxOTAuNS0xNS44IDguMi0zMS45IDE0LjMtNDcuMiAxOC44LTIwLjIgMjguNi00MS4yIDQzLjctNTcuOSA1MS44bDAgNzMuMSA2NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0xOTIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw2NCAwIDAtNzMuMWMtMTYtNy43LTM1LjktMjItNTUuMy00OC4zLTE4LjQtNC44LTM4LjQtMTIuMS01Ny45LTIzLjEtNTQuMS0zMC4zLTEwMi45LTg3LjQtMTA5LjktMTg5LjktMS45LTI4LjEgMjEtNDkuNyA0Ny4xLTQ5LjdsNDkuNiAwYy0uMy01LjItLjUtMTAuNC0uNy0xNS44LTEtMjYuNSAyMC42LTQ4LjIgNDcuMS00OC4yek0xMDEuNSAxMTJsLTUyLjQgMGM2LjIgODQuNyA0NS4xIDEyNy4xIDg1LjIgMTQ5LjYtMTQuNC0zNy4zLTI2LjMtODYtMzIuOC0xNDkuNnpNMzgwIDI1Ni44YzQwLjUtMjMuOCA3Ny4xLTY2LjEgODMuMy0xNDQuOEw0MTEgMTEyYy02LjIgNjAuOS0xNy40IDEwOC4yLTMxIDE0NC44eiJdfSxVN2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmFjZS1kaXp6eSIsaWNvbjpbNTEyLDUxMixbImRpenp5Il0sImY1NjciLCJNMjU2IDUxMmEyNTYgMjU2IDAgMSAwIDAtNTEyIDI1NiAyNTYgMCAxIDAgMCA1MTJ6TTEzNC4xIDE1My45bDI1LjkgMjUuOSAyNS45LTI1LjljNy44LTcuOCAyMC41LTcuOCAyOC4zIDBzNy44IDIwLjUgMCAyOC4zbC0yNS45IDI1LjkgMjUuOSAyNS45YzcuOCA3LjggNy44IDIwLjUgMCAyOC4zcy0yMC41IDcuOC0yOC4zIDBsLTI1LjktMjUuOS0yNS45IDI1LjljLTcuOCA3LjgtMjAuNSA3LjgtMjguMyAwcy03LjgtMjAuNSAwLTI4LjNsMjUuOS0yNS45LTI1LjktMjUuOWMtNy44LTcuOC03LjgtMjAuNSAwLTI4LjNzMjAuNS03LjggMjguMyAwem0xOTIgMGwyNS45IDI1LjkgMjUuOS0yNS45YzcuOC03LjggMjAuNS03LjggMjguMyAwczcuOCAyMC41IDAgMjguM2wtMjUuOSAyNS45IDI1LjkgMjUuOWM3LjggNy44IDcuOCAyMC41IDAgMjguM3MtMjAuNSA3LjgtMjguMyAwbC0yNS45LTI1LjktMjUuOSAyNS45Yy03LjggNy44LTIwLjUgNy44LTI4LjMgMHMtNy44LTIwLjUgMC0yOC4zbDI1LjktMjUuOS0yNS45LTI1LjljLTcuOC03LjgtNy44LTIwLjUgMC0yOC4zczIwLjUtNy44IDI4LjMgMHpNMjU2IDMwNGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHoiXX0sUkZ0PVU3ZSxPRnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYmFjdGVyaWEiLGljb246WzY0MCw1MTIsW10sImUwNTkiLCJNMjU2LTMyYzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgMTFjOC42IDIuMiAxNi45IDUuNiAyNC44IDEwLjNMMzExIDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC02LjMgNi4zYzQuNiA3LjggOCAxNi4yIDEwLjMgMjQuOGwxMSAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0xMSAwYy0yLjIgOC42LTUuNiAxNi45LTEwLjMgMjQuOEwzNDUgMTUxYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTQuMS00LjEtMzAuMSAzMC4xIDQuMSA0LjFjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNC4xLTQuMWMtMTAgMTAtMjAgMjAtMzAuMSAzMC4xTDIxNyAyNzljOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNi4zLTYuM2MtNy44IDQuNi0xNi4yIDgtMjQuOCAxMC4zbDAgMTFjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC0xMWMtOC42LTIuMi0xNi45LTUuNi0yNC44LTEwLjNMNzMgMzEzYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDYuMy02LjNjLTQuNi03LjgtOC0xNi4yLTEwLjMtMjQuOGwtMTEgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGwxMSAwYzIuMi04LjYgNS42LTE2LjkgMTAuMy0yNC44TDM5IDE2OWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDQuMSA0LjFjMTAtMTAgMjAtMjAgMzAuMS0zMC4xTDEwMyAxMDVjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw0LjEgNC4xIDMwLjEtMzAuMS00LjEtNC4xYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOVMxOTEuNi0yLjMgMjAxIDdsNi4zIDYuM2M3LjgtNC42IDE2LjItOCAyNC44LTEwLjNsMC0xMWMwLTEzLjMgMTAuNy0yNCAyNC0yNHpNMTI4IDI1NmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTI0MCAxNDRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMjk2IDQwbDAgMTFjOC42IDIuMiAxNi45IDUuNiAyNC44IDEwLjNMNTY3IDE5OWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTYuMyA2LjNjNC42IDcuOCA4IDE2LjIgMTAuMyAyNC44bDExIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTExIDBjLTIuMiA4LjYtNS42IDE2LjktMTAuMyAyNC44TDYwMSAzNDNjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNC4xLTQuMS0zMC4xIDMwLjEgNC4xIDQuMWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC00LjEtNC4xYy0xMCAxMC0yMCAyMC0zMC4xIDMwLjFMNDczIDQ3MWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC02LjMtNi4zYy03LjggNC42LTE2LjIgOC0yNC44IDEwLjNsMCAxMWMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTExYy04LjYtMi4yLTE2LjktNS42LTI0LjgtMTAuM0wzMjkgNTA1Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDYuMy02LjNjLTQuNi03LjgtOC0xNi4yLTEwLjMtMjQuOGwtMTEgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGwxMSAwYzIuMi04LjYgNS42LTE2LjkgMTAuMy0yNC44TDI5NSAzNjFjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw0LjEgNC4xYzEwLTEwIDIwLTIwIDMwLjEtMzAuMUwzNTkgMjk3Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsNC4xIDQuMSAzMC4xLTMwLjEtNC4xLTQuMWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDYuMyA2LjNjNy44LTQuNiAxNi4yLTggMjQuOC0xMC4zbDAtMTFjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHpNNDQ4IDM4NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAweiJdfSxaaz17cHJlZml4OiJmYXMiLGljb25OYW1lOiJlYXItZGVhZiIsaWNvbjpbNTEyLDUxMixbImRlYWYiLCJkZWFmbmVzcyIsImhhcmQtb2YtaGVhcmluZyJdLCJmMmE0IiwiTTUwMi42IDU0LjZsLTQwIDQwYy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM2w0MC00MGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zem0tMzIwIDMyMGwtMTI4IDEyOGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNsMTI4LTEyOGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zek0yNDAgMTI4Yy01Ny42IDAtMTA1LjEgNDMuNi0xMTEuMyA5OS41LTEuOSAxNy42LTE3LjggMzAuMi0zNS4zIDI4LjNzLTMwLjItMTcuOC0yOC4zLTM1LjNjOS43LTg4IDg0LjMtMTU2LjUgMTc0LjktMTU2LjUgOTcuMiAwIDE3NiA3OC44IDE3NiAxNzYgMCA0Ni0xNy43IDg3LjktNDYuNiAxMTkuMy0xMiAxMy0xNy40IDI0LjgtMTcuNCAzNC43bDAgNi4xYzAgNjEuOS01MC4xIDExMi0xMTIgMTEyLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC02LjFjMC0zMi45IDE3LjQtNTkuNiAzNC40LTc4IDE4LjQtMjAgMjkuNi00Ni42IDI5LjYtNzUuOSAwLTYxLjktNTAuMS0xMTItMTEyLTExMnptMCA4MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzIgMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGMwLTE3LjctMTQuMy0zMi0zMi0zMnoiXX0sRkZ0PVprLEJGdD1aayxIRnQ9WmssVzdlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBlb3BsZS1hcnJvd3MiLGljb246WzUxMiw1MTIsWyJwZW9wbGUtYXJyb3dzLWxlZnQtcmlnaHQiXSwiZTA2OCIsIk0zMiA2NEE2NCA2NCAwIDEgMSAxNjAgNjQgNjQgNjQgMCAxIDEgMzIgNjR6TTAgMjI0YzAtMzUuMyAyOC43LTY0IDY0LTY0bDY0IDBjMy4yIDAgNi40IC4yIDkuNSAuN0w5My4xIDIwNS4xQzY1IDIzMy4yIDY1IDI3OC44IDkzLjEgMzA2LjlsNTYgNTZjMy40IDMuNCA3IDYuNCAxMC45IDlsMCA5Mi4xYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC0zMiAwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTEyMC42QzEyLjkgMzMyLjQgMCAzMTEuNyAwIDI4OGwwLTY0ek0zNTIgNjRhNjQgNjQgMCAxIDEgMTI4IDAgNjQgNjQgMCAxIDEgLTEyOCAwem02Ni45IDE0MS4xbC00NC40LTQ0LjRjMy4xLS41IDYuMy0uNyA5LjUtLjdsNjQgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDY0YzAgMjMuNy0xMi45IDQ0LjQtMzIgNTUuNEw0ODAgNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC0zMiAwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTkyLjFjMy45LTIuNiA3LjUtNS42IDEwLjktOWw1Ni01NmMyOC4xLTI4LjEgMjguMS03My43IDAtMTAxLjh6TTMwMi44IDE3Ny44YzktMy43IDE5LjMtMS43IDI2LjIgNS4ybDU2IDU2YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45bC01NiA1NmMtNi45IDYuOS0xNy4yIDguOS0yNi4yIDUuMlMyODggMzIxLjcgMjg4IDMxMmwwLTI0LTY0IDAgMCAyNGMwIDkuNy01LjggMTguNS0xNC44IDIyLjJzLTE5LjMgMS43LTI2LjItNS4ybC01Ni01NmMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsNTYtNTZjNi45LTYuOSAxNy4yLTguOSAyNi4yLTUuMlMyMjQgMTkwLjMgMjI0IDIwMGwwIDI0IDY0IDAgMC0yNGMwLTkuNyA1LjgtMTguNSAxNC44LTIyLjJ6Il19LHFGdD1XN2UsakZ0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImhhbmRzLWNsYXBwaW5nIixpY29uOls1MTIsNTEyLFtdLCJlMWE4IiwiTTM0NCA4bDAgNjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC02NGMwLTEzLjMgMTAuNy0yNCAyNC0yNFMzNDQtNS4zIDM0NCA4ek0yMjAgMTAuN2wzMiA0OGM3LjQgMTEgNC40IDI1LjktNi43IDMzLjNzLTI1LjkgNC40LTMzLjMtNi43bC0zMi00OGMtNy40LTExLTQuNC0yNS45IDYuNy0zMy4zUzIxMi42LS4zIDIyMCAxMC43ek0xMzUgMTE5YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwTDI5Mi43IDI0Mi43YzEwLjEgMTAuMSAyNy4zIDIuOSAyNy4zLTExLjNsMC0zOS40YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCAxNTMuNmMwIDU3LjEtMzAgMTEwLTc4LjkgMTM5LjQtNjQgMzguNC0xNDUuOCAyOC4zLTE5OC41LTI0LjRMNyAzNjFjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw1MyA1M2M2LjEgNi4xIDE2IDYuMSAyMi4xIDBzNi4xLTE2IDAtMjIuMUwyMyAyNjVjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw5MyA5M2M2LjEgNi4xIDE2IDYuMSAyMi4xIDBzNi4xLTE2IDAtMjIuMUw1NSAxODVjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGwxMTcgMTE3YzYuMSA2LjEgMTYgNi4xIDIyLjEgMHM2LjEtMTYgMC0yMi4xbC05My05M2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjl6TTQzMy4xIDQ4NC45Yy0yNC4yIDE0LjUtNTAuOSAyMi4xLTc3LjcgMjMuMSA0OC4xLTM5LjYgNzYuNi05OSA3Ni42LTE2Mi40bDAtOTguMWM4LjItLjEgMTYtNi40IDE2LTE2bDAtMzkuNGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgMTUzLjZjMCA1Ny4xLTMwIDExMC03OC45IDEzOS40ek00NTMuMyA0YzExIDcuNCAxNCAyMi4zIDYuNyAzMy4zbC0zMiA0OGMtNy40IDExLTIyLjMgMTQtMzMuMyA2LjdzLTE0LTIyLjMtNi43LTMzLjNsMzItNDhjNy40LTExIDIyLjMtMTQgMzMuMy02Ljd6Il19LFZGdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ2aXJ1cy1jb3ZpZC1zbGFzaCIsaWNvbjpbNTc2LDUxMixbXSwiZTRhOSIsIk00MS0yNC45Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMFMtMi4zLS4zIDcgOS4xbDUyOCA1MjhjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC04My04MyAxMS40LTExLjRjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtMTEuMyAxMS4zLTIzLjgtMjMuOGMxNy45LTIzLjUgMjkuOS01MS43IDM0LjEtODIuM2wzMy42IDAgMCAxNmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtODBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCAxNi0zMy42IDBjLTQuMi0zMC43LTE2LjMtNTguOC0zNC4xLTgyLjNsMjMuOC0yMy44IDExLjMgMTEuM2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlMNDQwLjcgNDYuN2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWwxMS4zIDExLjMtMjMuOCAyMy44QzM3MC44IDk3LjkgMzQyLjcgODUuOCAzMTIgODEuNmwwLTMzLjYgMTYgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNFMzNDEuMyAwIDMyOCAwTDI0OCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDE2IDAgMCAzMy42Yy0zMC43IDQuMi01OC44IDE2LjMtODIuMyAzNC4xTDE1Ny45IDkyIDE2OS4yIDgwLjZjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMEwxMjMuOSA1OC4xIDQxLTI0Ljl6TTExMy42IDIzMmwtMzMuNiAwIDAtMTZjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCA4MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtMTYgMzMuNiAwYzQuMiAzMC43IDE2LjMgNTguOCAzNC4xIDgyLjNsLTIzLjggMjMuOC0xMS4zLTExLjNjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsNTYuNiA1Ni42YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtMTEuMy0xMS4zIDIzLjgtMjMuOGMyMy41IDE3LjkgNTEuNyAyOS45IDgyLjMgMzQuMWwwIDMzLjYtMTYgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw4MCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0xNiAwIDAtMzMuNmMxMy40LTEuOCAyNi40LTUuMiAzOC43LTkuOUwxMjMuNSAxOTMuM2MtNC43IDEyLjMtOCAyNS4yLTkuOSAzOC43eiJdfSxHN2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2FsZW5kYXItZGF5cyIsaWNvbjpbNDQ4LDUxMixbImNhbGVuZGFyLWFsdCJdLCJmMDczIiwiTTEyOCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMzIgMTI4IDAgMC0zMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgMzIgMzIgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDI4OGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgMTI4QzAgOTIuNyAyOC43IDY0IDY0IDY0bDMyIDAgMC0zMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNNjQgMjQwbDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwYy04LjggMC0xNiA3LjItMTYgMTZ6bTEyOCAwbDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwYy04LjggMC0xNiA3LjItMTYgMTZ6bTE0NC0xNmMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwek02NCAzNjhsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnptMTQ0LTE2Yy04LjggMC0xNiA3LjItMTYgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDB6bTExMiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2eiJdfSxVRnQ9RzdlLEs3ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJkaWFtb25kLXR1cm4tcmlnaHQiLGljb246WzUxMiw1MTIsWyJkaXJlY3Rpb25zIl0sImY1ZWIiLCJNMjE1IDE3TDE3IDIxNUM2LjEgMjI1LjkgMCAyNDAuNiAwIDI1NnM2LjEgMzAuMSAxNyA0MUwyMTUgNDk1YzEwLjkgMTAuOSAyNS42IDE3IDQxIDE3czMwLjEtNi4xIDQxLTE3TDQ5NSAyOTdjMTAuOS0xMC45IDE3LTI1LjYgMTctNDFzLTYuMS0zMC4xLTE3LTQxTDI5NyAxN0MyODYuMSA2LjEgMjcxLjQgMCAyNTYgMHMtMzAuMSA2LjEtNDEgMTd6TTM4NSAyNTdsLTcyIDcyYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDMxLTMxLTc4LjEgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCA0MGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTQwYzAtMzkuOCAzMi4yLTcyIDcyLTcybDc4LjEgMC0zMS0zMWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDcyIDcyYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45eiJdfSxXRnQ9SzdlLEdGdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoYW5kLXBvaW50LXVwIixpY29uOlszODQsNTEyLFs5NzU3XSwiZjBhNiIsIk0zMiAzMkMzMiAxNC4zIDQ2LjMgMCA2NCAwUzk2IDE0LjMgOTYgMzJsMCAyMDgtNjQgMCAwLTIwOHpNMjI0IDE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgNjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC02NHptLTY0LTY0YzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgNDhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC00OGMwLTE3LjcgMTQuMy0zMiAzMi0zMnptMTYwIDk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTY0em0tOTYgODhsMC0uNmM5LjQgNS40IDIwLjMgOC42IDMyIDguNiAxMy4yIDAgMjUuNC00IDM1LjYtMTAuOCA4LjcgMjQuOSAzMi41IDQyLjggNjAuNCA0Mi44IDExLjcgMCAyMi42LTMuMSAzMi04LjZsMCA4LjZjMCA4OC40LTcxLjYgMTYwLTE2MCAxNjBsLTYxLjcgMGMtNDIuNCAwLTgzLjEtMTYuOS0xMTMuMS00Ni45TDM3LjUgNDUzLjVDMTMuNSA0MjkuNSAwIDM5Ni45IDAgMzYzbDAtMjdjMC0zNS4zIDI4LjctNjQgNjQtNjRsODggMGMyMi4xIDAgNDAgMTcuOSA0MCA0MHMtMTcuOSA0MC00MCA0MGwtNTYgMGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmw1NiAwYzM5LjggMCA3Mi0zMi4yIDcyLTcyeiJdfSxLRnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYmV6aWVyLWN1cnZlIixpY29uOls2NDAsNTEyLFtdLCJmNTViIiwiTTI5NiAxMzZsMC00OCA0OCAwIDAgNDgtNDggMHpNMjg4IDMyYy0yNi41IDAtNDggMjEuNS00OCA0OGwwIDQtMTE4LjQgMEMxMTEuMiA2Mi43IDg5LjMgNDggNjQgNDggMjguNyA0OCAwIDc2LjcgMCAxMTJzMjguNyA2NCA2NCA2NGMyNS4zIDAgNDcuMi0xNC43IDU3LjYtMzZsNjYuOSAwYy01OC45IDM5LjYtOTguOSAxMDUtMTA0IDE4MEw4MCAzMjBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4bDAgNjRjMCAyNi41IDIxLjUgNDggNDggNDhsNjQgMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTY0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4bC0zLjMgMGM1LjktNjcgNDguNS0xMjMuNCAxMDcuNS0xNDkuMSA4LjYgMTIuNyAyMy4yIDIxLjEgMzkuOCAyMS4xbDY0IDBjMTYuNiAwIDMxLjEtOC40IDM5LjgtMjEuMSA1OSAyNS43IDEwMS42IDgyLjEgMTA3LjUgMTQ5LjFsLTMuMyAwYy0yNi41IDAtNDggMjEuNS00OCA0OGwwIDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDY0IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC02NGMwLTI2LjUtMjEuNS00OC00OC00OGwtNC41IDBjLTUtNzUtNDUuMS0xNDAuNC0xMDQtMTgwbDY2LjkgMGMxMC40IDIxLjMgMzIuMyAzNiA1Ny42IDM2IDM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0Yy0yNS4zIDAtNDcuMiAxNC43LTU3LjYgMzZsLTExOC40IDAgMC00YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4bC02NCAwek04OCAzNzZsNDggMCAwIDQ4LTQ4IDAgMC00OHptNDE2IDQ4bDAtNDggNDggMCAwIDQ4LTQ4IDB6Il19LFlGdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwZXJzb24taGFsZi1kcmVzcyIsaWNvbjpbMzg0LDUxMixbXSwiZTU0OCIsIk0xNDMuNC0zLjljOS43LTE2LjggMjcuOC0yOC4xIDQ4LjYtMjguMSAzMC45IDAgNTYgMjUuMSA1NiA1NiAwIDI1LjQtMTYuOSA0Ni44LTQwIDUzLjdsMCAwYy01LjEgMS41LTEwLjQgMi4zLTE2IDIuMy0zMC45IDAtNTYtMjUuMS01Ni01NmwwIDBjMC0xMC4xIDIuNy0xOS43IDcuNC0yNy45ek0zMTguMyAyOTkuMUwyNzIgMjM2LjcgMjcyIDUxMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTE2MCAwLS40IDAtMjM4LjZjMzYuMiA0LjQgNjkuMiAyMy40IDkxLjIgNTNsNzAuNSA5NWMxMC41IDE0LjIgNy42IDM0LjItNi42IDQ0LjhzLTM0LjIgNy42LTQ0LjgtNi42ek0xNzYgMTEzbDAgMzk5YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMTI4LTI1LjggMGMtMTAuOSAwLTE4LjYtMTAuNy0xNS4yLTIxLjFsNDMtMTI5LTQ4LjMgNjUuMWMtMTAuNSAxNC4yLTMwLjYgMTcuMi00NC44IDYuNnMtMTcuMi0zMC42LTYuNi00NC44bDcwLjUtOTVjMjItMjkuNiA1NS4xLTQ4LjYgOTEuMi01M3oiXX0sWTdlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNxdWFyZS1wb2xsLWhvcml6b250YWwiLGljb246WzQ0OCw1MTIsWyJwb2xsLWgiXSwiZjY4MiIsIk00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMHpNMjU2IDE1MmMwIDEzLjMtMTAuNyAyNC0yNCAyNGwtMTEyIDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsMTEyIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjR6bTcyIDgwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0yMDggMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGwyMDggMHpNMTkyIDM2MGMwIDEzLjMtMTAuNyAyNC0yNCAyNGwtNDggMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGw0OCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0eiJdfSxaRnQ9WTdlLFhGdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzY2hvb2wtY2lyY2xlLXhtYXJrIixpY29uOls2NDAsNTEyLFtdLCJlNTZkIiwiTTY0IDEyOGMtMzUuMyAwLTY0IDI4LjctNjQgNjRMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjc2IDBjLTEwLjUtMTQuNi0xOS0zMC43LTI1LjEtNDhsLTkwLjkgMCAwLTg4YzAtMjIuMSAxNy45LTQwIDQwLTQwbDQ4IDBjMSAwIDEuOSAwIDIuOSAuMSAyNi4zLTc0LjYgOTcuNS0xMjguMSAxODEuMS0xMjguMSAyOC42IDAgNTUuNiA2LjIgODAgMTcuNGwwLTMzLjRjMC0zNS4zLTI4LjctNjQtNjQtNjRsLTY0IDAtMTI3LjktMTE1LjFjLTE4LjMtMTYuNC00Ni0xNi40LTY0LjIgMEwxMjggMTI4IDY0IDEyOHptNjQgMjQwYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJ6TTExMiAyNTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNnpNMjg4IDEyOGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpNNDk2IDU0NGExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTU5LjMtMTgwLjdsLTM2LjcgMzYuNyAzNi43IDM2LjdjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMGwtMzYuNy0zNi43LTM2LjcgMzYuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNmwzNi43LTM2LjctMzYuNy0zNi43Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBsMzYuNyAzNi43IDM2LjctMzYuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZ6Il19LFFGdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoYW5kLWxpemFyZCIsaWNvbjpbNTEyLDUxMixbXSwiZjI1OCIsIk0wIDExMkMwIDg1LjUgMjEuNSA2NCA0OCA2NGwyMzguNSAwYzM2LjggMCA3MS4yIDE4IDkyLjEgNDguMmwxMTMuNSAxNjRjMTMgMTguNyAxOS45IDQxIDE5LjkgNjMuOGwwIDc2YzAgMTcuNy0xNC4zIDMyLTMyIDMybC05NiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTEzLjgtNzguMS01MC4yLTE2MS45IDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDhsMTI4IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhzLTIxLjUtNDgtNDgtNDhMNDggMTYwYy0yNi41IDAtNDgtMjEuNS00OC00OHoiXX0sWjdlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNoYWxrYm9hcmQiLGljb246WzU3Niw1MTIsWyJibGFja2JvYXJkIl0sImY1MWIiLCJNOTYgNjRjLTM1LjMgMC02NCAyOC43LTY0IDY0bDAgMjU2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDUxMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybDAtMjU2YzAtMzUuMy0yOC43LTY0LTY0LTY0TDk2IDY0ek00ODAgMzg0bC02NCAwIDAtMzJjMC0xNy43LTE0LjMtMzItMzItMzJsLTk2IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgMzItMTYwIDAgMC0yNTYgMzg0IDAgMCAyNTZ6Il19LEpGdD1aN2UsWDdlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InVwLXJpZ2h0LWZyb20tc3F1YXJlIixpY29uOls1MTIsNTEyLFsiZXh0ZXJuYWwtbGluay1hbHQiXSwiZjM1ZCIsIk0yOTAuNCAxOS44QzI5NS40IDcuOCAzMDcuMSAwIDMyMCAwTDQ4MCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMTYwYzAgMTIuOS03LjggMjQuNi0xOS44IDI5LjZzLTI1LjcgMi4yLTM0LjktNi45TDQwMCAxNTcuMyAyNDYuNiAzMTAuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMMzU0LjcgMTEyIDI5Ny40IDU0LjZjLTkuMi05LjItMTEuOS0yMi45LTYuOS0zNC45ek0wIDE3NmMwLTQ0LjIgMzUuOC04MCA4MC04MGw4MCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC04MCAwYy04LjggMC0xNiA3LjItMTYgMTZsMCAyNTZjMCA4LjggNy4yIDE2IDE2IDE2bDI1NiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTgwYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCA4MGMwIDQ0LjItMzUuOCA4MC04MCA4MEw4MCA1MTJjLTQ0LjIgMC04MC0zNS44LTgwLTgwTDAgMTc2eiJdfSxlQnQ9WDdlLHRCdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzcXVhcmUtZnVsbCIsaWNvbjpbNTEyLDUxMixbMTI4OTk3LDEyODk5OCwxMjg5OTksMTI5ZTMsMTI5MDAxLDEyOTAwMiwxMjkwMDMsMTEwMzUsMTEwMzZdLCJmNDVjIiwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwTDQ0OCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzg0YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA2NHoiXX0sYUJ0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNsb3ZlciIsaWNvbjpbNTEyLDUxMixbXSwiZTEzOSIsIk0zMTAuNCAxNkMzNDYuNiAxNiAzNzYgNDUuNCAzNzYgODEuN2wwIDUuMmMwIDExLjItMi43IDIyLjMtNy44IDMyLjJsLTIuMyA0LjItMjAuMSAzMy41Yy0xLjEgMS45LTEuMiAzLjQtMS4xIDQuNSAuMiAxLjMgLjkgMi43IDIuMSAzLjlzMi42IDEuOSAzLjkgMi4xYzEuMSAuMiAyLjYgLjEgNC41LTEuMWwzMy41LTIwLjEgNC4yLTIuM2MxMC01LjEgMjEtNy44IDMyLjItNy44bDUuMiAwYzM2LjIgMCA2NS42IDI5LjQgNjUuNiA2NS43IDAgMTcuNC02LjkgMzQuMS0xOS4yIDQ2LjRsLTEuMyAxLjNjLTMuNyAzLjctMy43IDkuNiAwIDEzLjNsMS4zIDEuM2MxMi4zIDEyLjMgMTkuMiAyOSAxOS4yIDQ2LjQgMCAzNi4yLTI5LjQgNjUuNi02NS42IDY1LjZsLTUuMiAwYy0xMi44IDAtMjUuNS0zLjUtMzYuNS0xMC4xbC0zMy41LTIwLjFjLTEuOS0xLjEtMy40LTEuMi00LjUtMS4xLTEuMyAuMi0yLjcgLjktMy45IDIuMXMtMS45IDIuNi0yLjEgMy45Yy0uMiAxLjEtLjEgMi42IDEuMSA0LjVsMjAuMSAzMy41YzYuNiAxMSAxMC4xIDIzLjYgMTAuMSAzNi41bDAgNS4yYzAgMzYuMi0yOS40IDY1LjYtNjUuNiA2NS42LTE3LjQgMC0zNC4xLTYuOS00Ni40LTE5LjJsLTEuMy0xLjNjLTMuNy0zLjctOS42LTMuNy0xMy4zIDBsLTEuMyAxLjNjLTEyLjMgMTIuMy0yOSAxOS4yLTQ2LjQgMTkuMi0zNi4yIDAtNjUuNi0yOS40LTY1LjctNjUuNmwwLTUuMmMwLTEyLjggMy41LTI1LjUgMTAuMS0zNi41bDIwLjEtMzMuNWMxLjEtMS45IDEuMi0zLjQgMS4xLTQuNS0uMi0xLjMtLjktMi43LTIuMS0zLjlzLTIuNi0xLjktMy45LTIuMWMtLjUtLjEtMS4yLS4xLTEuOSAwbC0yLjUgMS0zMy41IDIwLjFjLTExIDYuNi0yMy42IDEwLjEtMzYuNSAxMC4xbC01LjIgMEM0NS40IDM3NiAxNiAzNDYuNiAxNiAzMTAuNCAxNiAyOTMgMjIuOSAyNzYuMyAzNS4yIDI2NGwxLjMtMS4zIDEuMi0xLjVjMi4xLTMuMSAyLjEtNy4yIDAtMTAuM2wtMS4yLTEuNS0xLjMtMS4zQzIyLjkgMjM1LjggMTYgMjE5LjEgMTYgMjAxLjcgMTYgMTY1LjQgNDUuNCAxMzYgODEuNyAxMzZsNS4yIDBjMTIuOCAwIDI1LjUgMy41IDM2LjUgMTAuMWwzMy41IDIwLjEgMi41IDFjLjcgLjEgMS40IC4xIDEuOSAuMSAxLjMtLjIgMi43LS45IDMuOS0yLjFzMS45LTIuNiAyLjEtMy45Yy4xLS41IC4xLTEuMi0uMS0xLjlsLTEtMi41LTIwLjEtMzMuNWMtNi42LTExLTEwLjEtMjMuNi0xMC4xLTM2LjVsMC01LjJjMC0zNi4yIDI5LjQtNjUuNyA2NS43LTY1LjcgMTcuNCAwIDM0LjEgNi45IDQ2LjQgMTkuMmwxLjMgMS4zYzMuNyAzLjYgOS42IDMuNyAxMy4zIDBsMS4zLTEuMyA0LjgtNC40QzI4MC41IDIxLjMgMjk1LjEgMTYgMzEwLjQgMTZ6Il19LHNCdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0ZWV0aC1vcGVuIixpY29uOls1MTIsNTEyLFtdLCJmNjJmIiwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZsMCA4MGMwIDM1LjMgMjguNyA2NCA2NCA2NGwzODQgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTgwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyem0wIDI3MmMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCA0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwzODQgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTQ4YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMwNHptODAtMTYwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDhsMCAyNGMwIDEzLjMtMTAuNyAyNC0yNCAyNGwtNDggMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRsMC0yNHptMTI4IDBjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OGwwIDI0YzAgMTMuMy0xMC43IDI0LTI0IDI0bC00OCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNGwwLTI0ek04MCAxMTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAyNGMwIDEzLjMtMTAuNyAyNC0yNCAyNGwtMTYgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRsMC0yNGMwLTE3LjcgMTQuMy0zMiAzMi0zMnptMzIwIDMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCAyNGMwIDEzLjMtMTAuNyAyNC0yNCAyNGwtMTYgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRsMC0yNHpNNDggMzg0bDAtMTZjMC04LjggNy4yLTE2IDE2LTE2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJ6bTE0NCA0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhsMC0xNmMwLTguOCA3LjItMTYgMTYtMTZsNjQgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAxNmMwIDI2LjUtMjEuNSA0OC00OCA0OHptMTI4IDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtMTZjMC04LjggNy4yLTE2IDE2LTE2bDY0IDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMTZjMCAyNi41LTIxLjUgNDgtNDggNDh6bTExMi0xNmMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0xNmMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAxNmMwIDE3LjctMTQuMyAzMi0zMiAzMnoiXX0sY29lPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJhcnMtc3RhZ2dlcmVkIixpY29uOls1MTIsNTEyLFsicmVvcmRlciIsInN0cmVhbSJdLCJmNTUwIiwiTTAgOTZDMCA3OC4zIDE0LjMgNjQgMzIgNjRsMzg0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMMzIgMTI4QzE0LjMgMTI4IDAgMTEzLjcgMCA5NnpNNjQgMjU2YzAtMTcuNyAxNC4zLTMyIDMyLTMybDM4NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDk2IDI4OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTQ0OCA0MTZjMCAxNy43LTE0LjMgMzItMzIgMzJMMzIgNDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDM4NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyeiJdfSxpQnQ9Y29lLHJCdD1jb2Usb0J0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6IndhcmVob3VzZSIsaWNvbjpbNTc2LDUxMixbXSwiZjQ5NCIsIk0wIDE0Mi4xTDAgNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0yNDBjMC0xNy43IDE0LjMtMzIgMzItMzJsMzg0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAyNDBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTMzNy45YzAtMjcuNS0xNy42LTUyLTQzLjgtNjAuN0wzMDMuMiA1LjFjLTkuOS0zLjMtMjAuNS0zLjMtMzAuNCAwTDQzLjggODEuNEMxNy42IDkwLjEgMCAxMTQuNiAwIDE0Mi4xek00NjQgMjU2bC0zNTIgMCAwIDY0IDM1MiAwIDAtNjR6TTExMiA0MTZsMzUyIDAgMC02NC0zNTIgMCAwIDY0em0zNTIgMzJsLTM1MiAwIDAgNjQgMzUyIDAgMC02NHoiXX0sbkJ0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InN3YXRjaGJvb2siLGljb246WzUxMiw1MTIsW10sImY1YzMiLCJNMCA0OEMwIDIxLjUgMjEuNSAwIDQ4IDBsOTYgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDM2OGMwIDUzLTQzIDk2LTk2IDk2UzAgNDY5IDAgNDE2TDAgNDh6TTI0MCA0MDkuNmwwLTI3MS41IDQ4LjEtNDguMWMxOC43LTE4LjcgNDkuMS0xOC43IDY3LjkgMGw2Ny45IDY3LjljMTguNyAxOC43IDE4LjcgNDkuMSAwIDY3LjlMMjQwIDQwOS42ek0yMDUuNSA1MTJsMTkyLTE5MiA2Ni42IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCA5NmMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMjU4LjUgMHpNODAgNjRjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNkw4MCA2NHpNNjQgMjA4bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwYy04LjggMC0xNiA3LjItMTYgMTZ6TTk2IDQ0MGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6Il19LGxCdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjYW1wZ3JvdW5kIixpY29uOls1MTIsNTEyLFs5OTc4XSwiZjZiYiIsIk0zNDQuOCA1Mi4zYzExLjItMTMuNyA5LjItMzMuOC00LjUtNDVzLTMzLjgtOS4yLTQ1IDQuNWwtMzkuMiA0OC0zOS4yLTQ4QzIwNS42LTEuOSAxODUuNC00IDE3MS43IDcuMnMtMTUuNyAzMS40LTQuNSA0NWw0Ny40IDU4LTIwMiAyNDYuOUM0LjUgMzY3LjEgMCAzNzkuNiAwIDM5Mi42TDAgNDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDQxNiAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtMzkuNGMwLTEyLjktNC41LTI1LjUtMTIuNy0zNS41bC0yMDItMjQ2LjkgNDcuNC01OHpNMjU2IDI4OGwxMTIgMTI4LTIyNCAwIDExMi0xMjh6Il19LGNCdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwZXJzb24td2Fsa2luZy1hcnJvdy1yaWdodCIsaWNvbjpbNTc2LDUxMixbXSwiZTU1MiIsIk0xMDQuNSAyNGE1NiA1NiAwIDEgMSAxMTIgMCA1NiA1NiAwIDEgMSAtMTEyIDB6bS04IDE4MS4zTDczLjkgMjI3LjljLTYgNi05LjQgMTQuMS05LjQgMjIuNmwwIDM3LjVjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0zNy41YzAtMjUuNSAxMC4xLTQ5LjkgMjguMS02Ny45bDM1LjEtMzUuMWMyMi44LTIyLjggNTMuNi0zNS42IDg1LjgtMzUuNiAzNi45IDAgNzEuOCAxNi44IDk0LjggNDUuNkwyNjIuMyAxODBjNi4xIDcuNiAxNS4zIDEyIDI1IDEybDMzLjIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMzMuMiAwYy0yOS4yIDAtNTYuNy0xMy4zLTc1LTM2bC0zLjgtNC43IDAgMTE1LjIgMzQuNSAyOS42YzE3LjcgMTUuMiAyOS4zIDM2LjIgMzIuNiA1OS4zbDEyLjYgODguMWMyLjUgMTcuNS05LjcgMzMuNy0yNy4yIDM2LjJzLTMzLjctOS43LTM2LjItMjcuMmwtMTIuNi04OC4xYy0xLjEtNy43LTUtMTQuNy0xMC45LTE5LjhMMTMwIDM0Ny41Yy0yMS4zLTE4LjItMzMuNS00NC45LTMzLjUtNzIuOWwwLTY5LjN6TTk2LjYgMzcxYzIuNCAyLjMgNC44IDQuNiA3LjQgNi44bDQ2IDM5LjQtMi4yIDcuNmMtNC41IDE1LjctMTIuOSAzMC0yNC40IDQxLjVMNTUuMSA1MzQuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNsNjguMy02OC4zYzMuOC0zLjggNi42LTguNiA4LjEtMTMuOEw5Ni42IDM3MXpNNTA1LjUgMzQ1Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDMxLTMxLTEwMi4xIDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsMTAyLjEgMC0zMS0zMWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDcyIDcyYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45bC03MiA3MnoiXX0sZEJ0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImdsYXNzZXMiLGljb246WzU3Niw1MTIsW10sImY1MzAiLCJNMTQzLjMgOTZjLTE0IDAtMjYuNSA5LjItMzAuNiAyMi42TDcwLjQgMjU2IDIyNCAyNTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJsNjQgMGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwxNTMuNiAwLTQyLjMtMTM3LjRDNDU5LjIgMTA1LjIgNDQ2LjggOTYgNDMyLjcgOTZMNDAwIDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDMyLjcgMGM0Mi4xIDAgNzkuNCAyNy41IDkxLjggNjcuOGw0NS40IDE0Ny41YzQuMSAxMy4yIDYuMSAyNi45IDYuMSA0MC43bDAgOTZjMCA1My00MyA5Ni05NiA5NmwtNjQgMGMtNTMgMC05Ni00My05Ni05NmwwLTMyLTY0IDAgMCAzMmMwIDUzLTQzIDk2LTk2IDk2bC02NCAwYy01MyAwLTk2LTQzLTk2LTk2bDAtOTZjMC0xMy44IDIuMS0yNy41IDYuMS00MC43TDUxLjUgOTkuOEM2My45IDU5LjUgMTAxLjEgMzIgMTQzLjMgMzJMMTc2IDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0zMi43IDB6TTY0IDMyMGwwIDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDY0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC02NC0xMjggMHptNDE2IDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtNjQtMTI4IDAgMCA2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmw2NCAweiJdfSxRN2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2lyY2xlLXBhdXNlIixpY29uOls1MTIsNTEyLFs2MjA5MiwicGF1c2UtY2lyY2xlIl0sImYyOGIiLCJNMjU2IDUxMmEyNTYgMjU2IDAgMSAwIDAtNTEyIDI1NiAyNTYgMCAxIDAgMCA1MTJ6TTIyNCAxOTJsMCAxMjhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0xMjhjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnptMTI4IDBsMCAxMjhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0xMjhjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnoiXX0sdUJ0PVE3ZSxwQnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibWVtb3J5IixpY29uOls1MTIsNTEyLFtdLCJmNTM4IiwiTTY0IDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4bDAgNy40QzAgMTQyLjIgNC40IDE0OCAxMC4xIDE1MS43IDIzLjMgMTYwLjMgMzIgMTc1LjEgMzIgMTkycy04LjcgMzEuNy0yMS45IDQwLjNDNC40IDIzNiAwIDI0MS44IDAgMjQ4LjZsMCA1NS40IDUxMiAwIDAtNTUuNGMwLTYuOC00LjQtMTIuNi0xMC4xLTE2LjMtMTMuMi04LjYtMjEuOS0yMy40LTIxLjktNDAuM3M4LjctMzEuNyAyMS45LTQwLjNjNS43LTMuNyAxMC4xLTkuNSAxMC4xLTE2LjNsMC03LjRjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgNjR6TTUxMiA0MTZsMC02NC01MTIgMCAwIDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDY0IDAgMC0yNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0bDAgMjQgODggMCAwLTI0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCAyNCA4OCAwIDAtMjRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDI0IDY0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJ6TTE2MCAxNjBsMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ6bTEyOCAwbDAgNjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyem0xMjggMGwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnoiXX0saEJ0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImdpZnQiLGljb246WzUxMiw1MTIsWzEyNzg3M10sImYwNmIiLCJNMzIxLjUgNjguOEMzMjkuMSA1NS45IDM0Mi45IDQ4IDM1Ny44IDQ4bDIuMiAwYzIyLjEgMCA0MCAxNy45IDQwIDQwcy0xNy45IDQwLTQwIDQwbC03My4zIDAgMzQuOC01OS4yem0tMTMxIDBsMzQuOCA1OS4yLTczLjMgMGMtMjIuMSAwLTQwLTE3LjktNDAtNDBzMTcuOS00MCA0MC00MGwyLjIgMGMxNC45IDAgMjguOCA3LjkgMzYuMyAyMC44em04OS42LTI0LjNsLTI0LjEgNDEtMjQuMS00MUMyMTUuNyAxNi45IDE4Ni4xIDAgMTU0LjIgMEwxNTIgMGMtNDguNiAwLTg4IDM5LjQtODggODggMCAxNC40IDMuNSAyOCA5LjYgNDBMMzIgMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMybDQ0OCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMzJjMC0xNy43LTE0LjMtMzItMzItMzJsLTQxLjYgMGM2LjEtMTIgOS42LTI1LjYgOS42LTQwIDAtNDguNi0zOS40LTg4LTg4LTg4bC0yLjIgMGMtMzEuOSAwLTYxLjUgMTYuOS03Ny43IDQ0LjR6TTQ4MCAyNzJsLTIwMCAwIDAgMjA4IDEzNiAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMTQ0em0tMjQ4IDBsLTIwMCAwIDAgMTQ0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDEzNiAwIDAtMjA4eiJdfSxmQnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibW9uZXktYmlsbC13aGVhdCIsaWNvbjpbNTEyLDUxMixbXSwiZTUyYSIsIk0xNzYtMTZjNDQuMiAwIDgwIDM1LjggODAgODAgMCA4LjgtNy4yIDE2LTE2IDE2LTQ0LjIgMC04MC0zNS44LTgwLTgwIDAtOC44IDcuMi0xNiAxNi0xNnpNNTYgMGw0OCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0TDU2IDQ4QzQyLjcgNDggMzIgMzcuMyAzMiAyNFM0Mi43IDAgNTYgMHpNMjQgNzJsMTEyIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRMMjQgMTIwQzEwLjcgMTIwIDAgMTA5LjMgMCA5NlMxMC43IDcyIDI0IDcyem04IDk2YzAtMTMuMyAxMC43LTI0IDI0LTI0bDQ4IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTQ4IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0ek0yNzIgMGMwLTguOCA3LjItMTYgMTYtMTYgNDQuMiAwIDgwIDM1LjggODAgODAgMCA4LjgtNy4yIDE2LTE2IDE2LTQ0LjIgMC04MC0zNS44LTgwLTgwek00MDAtMTZjNDQuMiAwIDgwIDM1LjggODAgODAgMCA4LjgtNy4yIDE2LTE2IDE2LTQ0LjIgMC04MC0zNS44LTgwLTgwIDAtOC44IDcuMi0xNiAxNi0xNnptODAgMTQ0YzAgNDQuMi0zNS44IDgwLTgwIDgwLTguOCAwLTE2LTcuMi0xNi0xNiAwLTQ0LjIgMzUuOC04MCA4MC04MCA4LjggMCAxNiA3LjIgMTYgMTZ6TTM1MiAxMTJjOC44IDAgMTYgNy4yIDE2IDE2IDAgNDQuMi0zNS44IDgwLTgwIDgwLTguOCAwLTE2LTcuMi0xNi0xNiAwLTQ0LjIgMzUuOC04MCA4MC04MHptLTk2IDE2YzAgNDQuMi0zNS44IDgwLTgwIDgwLTguOCAwLTE2LTcuMi0xNi0xNiAwLTQ0LjIgMzUuOC04MCA4MC04MCA4LjggMCAxNiA3LjIgMTYgMTZ6TTAgMzA0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4bDQxNiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgMTYwYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4TDQ4IDUxMmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhMMCAzMDR6TTQ4IDQxNmwwIDQ4IDQ4IDBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTk2IDMwNGwtNDggMCAwIDQ4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4ek00NjQgNDE2Yy0yNi41IDAtNDggMjEuNS00OCA0OGw0OCAwIDAtNDh6TTQxNiAzMDRjMCAyNi41IDIxLjUgNDggNDggNDhsMC00OC00OCAwem0tOTYgODBhNjQgNjQgMCAxIDAgLTEyOCAwIDY0IDY0IDAgMSAwIDEyOCAweiJdfSxtQnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZHVuZ2VvbiIsaWNvbjpbNTEyLDUxMixbXSwiZjZkOSIsIk0zNDcuNSAxNDQuOGM2LjUgNS40IDEyLjUgMTEuMyAxOCAxNy43IDguNyAxMC4yIDIzLjcgMTQgMzUuMSA2LjlsNTQuMS0zMy44YzExLjItNyAxNC43LTIxLjcgNi45LTMyLjItMTUuMy0yMC41LTMzLjUtMzguNi01NC4xLTUzLjgtMTAuNC03LjYtMjQuNy00LjMtMzEuOCA2LjRsLTM1LjEgNTIuNmMtNy44IDExLjYtMy44IDI3LjMgNyAzNi4yek0zMjcuOCA0MS4xYzguNi0xMi45IDIuOS0zMC41LTEyLjItMzQuMS0xOS4xLTQuNi0zOS4xLTctNTkuNi03cy00MC40IDIuNC01OS42IDdjLTE1LjEgMy42LTIwLjggMjEuMi0xMi4yIDM0LjFsNDAgNjBjNS4yIDcuOCAxNC41IDExLjcgMjMuOSAxMS4yIDUuMi0uMyAxMC42LS4zIDE1LjggMCA5LjQgLjUgMTguNy0zLjQgMjMuOS0xMS4ybDQwLTYwek01MC41IDEwMy4zYy03LjkgMTAuNS00LjMgMjUuMyA2LjkgMzIuMmw1NC4xIDMzLjhjMTEuNCA3LjEgMjYuMyAzLjMgMzUuMS02LjkgNS41LTYuNCAxMS41LTEyLjMgMTgtMTcuNyAxMC44LTguOSAxNC44LTI0LjYgNy0zNi4yTDEzNi40IDU1LjljLTcuMS0xMC43LTIxLjUtMTQtMzEuOC02LjQtMjAuNiAxNS4xLTM4LjggMzMuMy01NC4xIDUzLjh6bTYyIDE0MS4xYy44LTkuOS0zLjMtMTkuOS0xMS44LTI1LjFMNDEgMTgyYy0xMi45LTgtMjkuOS0yLjMtMzMuNiAxMi41LTQuOSAxOS43LTcuNSA0MC4zLTcuNSA2MS42bDAgMjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRsNjQgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNGwwLTI0YzAtMy45IC4yLTcuOCAuNS0xMS42em0yODcuMSAwYy4zIDMuOCAuNSA3LjcgLjUgMTEuNmwwIDI0YzAgMTMuMyAxMC43IDI0IDI0IDI0bDY0IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRsMC0yNGMwLTIxLjItMi42LTQxLjgtNy41LTYxLjYtMy42LTE0LjctMjAuNy0yMC41LTMzLjYtMTIuNWwtNTkuNyAzNy4zYy04LjQgNS4zLTEyLjYgMTUuMi0xMS44IDI1LjF6TTg4IDM1MmwtNjQgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRMMCA0ODhjMCAxMy4zIDEwLjcgMjQgMjQgMjRsNjQgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNGwwLTExMmMwLTEzLjMtMTAuNy0yNC0yNC0yNHptNDAwIDBsLTY0IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0bDAgMTEyYzAgMTMuMyAxMC43IDI0IDI0IDI0bDY0IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRsMC0xMTJjMC0xMy4zLTEwLjctMjQtMjQtMjR6TTI4MCAxODRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCAzMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTMwNHptLTgwIDMyYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0bDAgMjcyYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0yNzJ6bTE2MCAwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0bDAgMjcyYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0yNzJ6Il19LEo3ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzdWl0Y2FzZS1tZWRpY2FsIixpY29uOls1MTIsNTEyLFsibWVka2l0Il0sImYwZmEiLCJNMTkyIDU2bDAgNDAgMTI4IDAgMC00MGMwLTQuNC0zLjYtOC04LThMMjAwIDQ4Yy00LjQgMC04IDMuNi04IDh6bS00OCA4bDAtOGMwLTMwLjkgMjUuMS01NiA1Ni01NkwzMTIgMGMzMC45IDAgNTYgMjUuMSA1NiA1NmwwIDQyNC0yMjQgMCAwLTQxNnpNOTYgMTc2bDAgMzA0LTMyIDBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgMTYwYzAtMzUuMyAyOC43LTY0IDY0LTY0bDMyIDAgMCA4MHpNNDE2IDQ4MGwwLTM4NCAzMiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjU2YzAgMzUuMy0yOC43IDY0LTY0IDY0bC0zMiAwek0yNDQgMjA4Yy04LjggMC0xNiA3LjItMTYgMTZsMCAzNi0zNiAwYy04LjggMC0xNiA3LjItMTYgMTZsMCAyNGMwIDguOCA3LjIgMTYgMTYgMTZsMzYgMCAwIDM2YzAgOC44IDcuMiAxNiAxNiAxNmwyNCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTM2IDM2IDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMjRjMC04LjgtNy4yLTE2LTE2LTE2bC0zNiAwIDAtMzZjMC04LjgtNy4yLTE2LTE2LTE2bC0yNCAweiJdfSxnQnQ9SjdlLGJCdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwZXJzb24tY2FuZSIsaWNvbjpbNDQ4LDUxMixbXSwiZTUzYyIsIk0yMzItMzJhNTYgNTYgMCAxIDEgMCAxMTIgNTYgNTYgMCAxIDEgMC0xMTJ6TTE0NCAyMzYuN0w5Ny43IDI5OS4xYy0xMC41IDE0LjItMzAuNiAxNy4yLTQ0LjggNi42cy0xNy4yLTMwLjYtNi42LTQ0LjhsNzAuNS05NUMxNDIgMTMyIDE4MS43IDExMiAyMjQgMTEyczgyIDIwIDEwNy4yIDUzLjlsNzAuNSA5NWMxMC41IDE0LjIgNy42IDM0LjItNi42IDQ0LjhzLTM0LjIgNy42LTQ0LjgtNi42TDMwNCAyMzYuNyAzMDQgNTEyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMTYwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2bDAgMTYwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMjc1LjN6TTM5MiAzODRjLTQuNCAwLTggMy42LTggOCAwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGMwLTMwLjkgMjUuMS01NiA1Ni01NnM1NiAyNS4xIDU2IDU2bDAgMTI4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtMTI4YzAtNC40LTMuNi04LTgtOHoiXX0sWGs9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZ2F1Z2UiLGljb246WzUxMiw1MTIsWyJkYXNoYm9hcmQiLCJnYXVnZS1tZWQiLCJ0YWNob21ldGVyLWFsdC1hdmVyYWdlIl0sImY2MjQiLCJNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMCAyNTYgMjU2IDAgMSAxIC01MTIgMHptMzIwIDk2YzAtMjYuOS0xNi41LTQ5LjktNDAtNTkuM0wyODAgMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0bDAgMTcyLjdjLTIzLjUgOS41LTQwIDMyLjUtNDAgNTkuMyAwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0ek0xNDQgMTc2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptLTE2IDgwYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTI4OCAzMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTQwMCAxNDRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHoiXX0sdkJ0PVhrLHhCdD1Yayx5QnQ9WGssd0J0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImVudmVsb3BlLW9wZW4tdGV4dCIsaWNvbjpbNTc2LDUxMixbXSwiZjY1OCIsIk0yODggMzMuOUw5Ni40IDE3NS44IDI1NC41IDI5M2M1LjMgMy45IDExLjIgNi45IDE3LjUgOC43TDI3MiA0NjRjMCA1LjUgLjUgMTAuOCAxLjMgMTZMOTYgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NGwwLTIzOS45YzAtMjAuMyA5LjYtMzkuNCAyNS45LTUxLjRMMjU0LjUtMjFjOS43LTcuMiAyMS40LTExIDMzLjUtMTFzMjMuOCAzLjkgMzMuNSAxMUw1MTguMSAxMjQuN2M3LjIgNS4zIDEzLjEgMTIgMTcuNCAxOS42LTIuNS0uMi01LS4zLTcuNS0uM0w0MzYuNiAxNDQgMjg4IDMzLjl6TTMyMCAyNDBjMC0yNi41IDIxLjUtNDggNDgtNDhsMTYwIDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCAyMjRjMCAyNi41LTIxLjUgNDgtNDggNDhsLTE2MCAwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTIyNHptODAgMTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsOTYgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtOTYgMHptMCA5NmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw1NiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC01NiAweiJdfSxrQnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidG9vbGJveCIsaWNvbjpbNTEyLDUxMixbMTI5NTIwXSwiZjU1MiIsIk0xNzYgNTZsMCA0MCAxNjAgMCAwLTQwYzAtNC40LTMuNi04LTgtOEwxODQgNDhjLTQuNCAwLTggMy42LTggOHpNMTI4IDk2bDAtNDBjMC0zMC45IDI1LjEtNTYgNTYtNTZMMzI4IDBjMzAuOSAwIDU2IDI1LjEgNTYgNTZsMCA0MCAyOC4xIDBjMTIuNyAwIDI0LjkgNS4xIDMzLjkgMTQuMWw1MS45IDUxLjljOSA5IDE0LjEgMjEuMiAxNC4xIDMzLjlsMCA3Ni4xLTEzNiAwIDAtMTZjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCAxNi0xNDQgMCAwLTE2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0bDAgMTYtMTM2IDAgMC03Ni4xYzAtMTIuNyA1LjEtMjQuOSAxNC4xLTMzLjlsNTEuOS01MS45YzktOSAyMS4yLTE0LjEgMzMuOS0xNC4xTDEyOCA5NnpNMCA0MTZsMC05NiAxMzYgMCAwIDE2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0xNiAxNDQgMCAwIDE2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0xNiAxMzYgMCAwIDk2YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjR6Il19LFNCdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwb3dlci1vZmYiLGljb246WzUxMiw1MTIsWzkyMTFdLCJmMDExIiwiTTI4OCAwYzAtMTcuNy0xNC4zLTMyLTMyLTMyUzIyNC0xNy43IDIyNCAwbDAgMjU2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJMMjg4IDB6TTE0Ni4zIDk4LjRjMTQuNS0xMC4xIDE4LTMwLjEgNy45LTQ0LjZzLTMwLjEtMTgtNDQuNi03LjlDNDMuNCA5Mi4xIDAgMTY5IDAgMjU2IDAgMzk3LjQgMTE0LjYgNTEyIDI1NiA1MTJTNTEyIDM5Ny40IDUxMiAyNTZjMC04Ny00My40LTE2My45LTEwOS43LTIxMC4xLTE0LjUtMTAuMS0zNC40LTYuNi00NC42IDcuOXMtNi42IDM0LjQgNy45IDQ0LjZjNDkuOCAzNC44IDgyLjMgOTIuNCA4Mi4zIDE1Ny42IDAgMTA2LTg2IDE5Mi0xOTIgMTkyUzY0IDM2MiA2NCAyNTZjMC02NS4yIDMyLjUtMTIyLjkgODIuMy0xNTcuNnoiXX0sZG9lPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNpZ25hbCIsaWNvbjpbNTEyLDUxMixbMTI4MjQ2LCJzaWduYWwtNSIsInNpZ25hbC1wZXJmZWN0Il0sImYwMTIiLCJNNDg4IDU2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0bDAgNDAwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC00MDB6TTM2MCAxMjhjLTEzLjMgMC0yNCAxMC43LTI0IDI0bDAgMzA0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0zMDRjMC0xMy4zLTEwLjctMjQtMjQtMjR6TTI4MCAyNDhjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCAyMDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTIwOHpNMTUyIDMyMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCAxMTJjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTExMmMwLTEzLjMtMTAuNy0yNC0yNC0yNHpNNDggMzg0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC00OGMwLTEzLjMtMTAuNy0yNC0yNC0yNHoiXX0sX0J0PWRvZSxNQnQ9ZG9lLHpCdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJhcnJvd3Mtc3BpbiIsaWNvbjpbNTEyLDUxMixbXSwiZTRiYiIsIk00ODEuNyAyNDAuMWMtMTcuNi0xLjItMzIuOSAxMi0zNC4yIDI5LjctMy4zIDQ3LTIzLjYgODkuNC01NC44IDEyMUwzNjEgMzU5Yy02LjktNi45LTE3LjItOC45LTI2LjItNS4yUzMyMCAzNjYuMyAzMjAgMzc2bDAgMTEyYzAgMTMuMyAxMC43IDI0IDI0IDI0bDExMiAwYzkuNyAwIDE4LjUtNS44IDIyLjItMTQuOHMxLjctMTkuMy01LjItMjYuMmwtMzUtMzVjNDEuNy00Mi4yIDY4LjktOTguOCA3My40LTE2MS44IDEuMi0xNy42LTEyLTMyLjktMjkuNy0zNC4yek0zOSA0MUw3NCA3NmMtNDEuNyA0Mi4yLTY4LjkgOTguOC03My40IDE2MS44LTEuMiAxNy42IDEyIDMyLjkgMjkuNyAzNC4yczMyLjktMTIgMzQuMi0yOS43YzMuMy00NyAyMy42LTg5LjQgNTQuOC0xMjFMMTUxIDE1M2M2LjkgNi45IDE3LjIgOC45IDI2LjIgNS4yUzE5MiAxNDUuNyAxOTIgMTM2bDAtMTEyYzAtMTMuMy0xMC43LTI0LTI0LTI0TDU2IDBDNDYuMyAwIDM3LjUgNS44IDMzLjggMTQuOFMzMi4yIDM0LjEgMzkgNDF6bTIwMS0xMC43Yy0xLjIgMTcuNiAxMiAzMi45IDI5LjcgMzQuMiA0NyAzLjMgODkuNCAyMy42IDEyMSA1NC44TDM1OSAxNTFjLTYuOSA2LjktOC45IDE3LjItNS4yIDI2LjJTMzY2LjMgMTkyIDM3NiAxOTJsMTEyIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRsMC0xMTJjMC05LjctNS44LTE4LjUtMTQuOC0yMi4yUzQ3Ny45IDMyLjIgNDcxIDM5TDQzNiA3NGMtNDIuMi00MS43LTk4LjgtNjguOS0xNjEuOC03My40LTE3LjYtMS4yLTMyLjkgMTItMzQuMiAyOS43ek00MSA0NzNsMzUtMzVjNDIuMiA0MS43IDk4LjggNjguOSAxNjEuOCA3My40IDE3LjYgMS4yIDMyLjktMTIgMzQuMi0yOS43cy0xMi0zMi45LTI5LjctMzQuMmMtNDctMy4zLTg5LjQtMjMuNi0xMjEtNTQuOEwxNTMgMzYxYzYuOS02LjkgOC45LTE3LjIgNS4yLTI2LjJTMTQ1LjcgMzIwIDEzNiAzMjBMMjQgMzIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNEwwIDQ1NmMwIDkuNyA1LjggMTguNSAxNC44IDIyLjJTMzQuMSA0NzkuOCA0MSA0NzN6Il19LENCdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJqb2ludCIsaWNvbjpbNTc2LDUxMixbXSwiZjU5NSIsIk0zNjAgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDE5YzAgNDAuMyAxNiA3OSA0NC41IDEwNy41bDIxIDIxQzQ2OSAxOTEgNDgwIDIxNy40IDQ4MCAyNDVsMCAxOWMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTE5YzAtMTQuOS01LjktMjkuMS0xNi40LTM5LjZsLTIxLTIxQzM1Ny4xIDE0Ni45IDMzNiA5NiAzMzYgNDNsMC0xOWMwLTEzLjMgMTAuNy0yNCAyNC0yNHpNNTUyIDI4OGMtMTMuMyAwLTI0LTEwLjctMjQtMjRsMC0xOWMwLTQwLjMtMTYtNzktNDQuNS0xMDcuNWwtMjEtMjFDNDQzIDk3IDQzMiA3MC42IDQzMiA0M2wwLTE5YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCAxOWMwIDE0LjkgNS45IDI5LjEgMTYuNCAzOS42bDIxIDIxQzU1NC45IDE0MS4xIDU3NiAxOTIgNTc2IDI0NWwwIDE5YzAgMTMuMy0xMC43IDI0LTI0IDI0ek0yOTIuNyAzMjBjNS42IDAgMTAuNyAyLjkgMTMuNiA3LjZMMzk0LjYgNDcxYzEuMyAyLjEgMCA0LjktMi40IDUuMi0xNi4xIDIuNS0zMi40IDMuNy00OC43IDMuN2wtMzguMSAwYy01LjYgMC0xMC43LTIuOS0xMy42LTcuNmwtNzktMTI4LjRjLTYtOS44IDAtMjIuNiAxMS41LTIzLjMgNi43LS40IDEzLjQtLjYgMjAuMi0uNmw0OC4zIDB6TTQ1OS4zIDQ2NS45Yy02LjQgMS0xMi43LTEuOS0xNi4xLTcuNEwzNzQuMSAzNDYuMWMtNi43LTEwLjkgMS41LTI0LjcgMTQuMi0yMi45IDEuMyAuMiAyLjYgLjQgMy44IC42bDEzNi40IDIxYzI3LjMgNC4yIDQ3LjQgMjcuNyA0Ny40IDU1LjNzLTIwLjEgNTEuMS00Ny40IDU1LjNsLTY5LjIgMTAuNnpNMTM4LjcgMzM2YzYuNy0xLjUgMTMuNiAxLjQgMTcuMiA3LjJsNjguOSAxMTJjNi42IDEwLjctMS4yIDI0LjQtMTMuOCAyMy4xLTEzLTEuNC0yNS45LTMuNS0zOC42LTYuNUwzMS4yIDQzOS4yQzEyLjkgNDM1IDAgNDE4LjcgMCA0MDBzMTIuOS0zNSAzMS4yLTM5LjJMMTM4LjcgMzM2eiJdfSxUQnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYnJhaWxsZSIsaWNvbjpbMzg0LDUxMixbXSwiZjJhMSIsIk04MCAxNDRhODAgODAgMCAxIDAgMC0xNjAgODAgODAgMCAxIDAgMCAxNjB6bTAgMTkyYTgwIDgwIDAgMSAwIDAtMTYwIDgwIDgwIDAgMSAwIDAgMTYwem0wIDEzNmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNCAyNCAxMC43IDI0IDI0LTEwLjcgMjQtMjQgMjR6bTAgNTZjNDQuMiAwIDgwLTM1LjggODAtODBzLTM1LjgtODAtODAtODAtODAgMzUuOC04MCA4MCAzNS44IDgwIDgwIDgwem0yNDgtODBjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjQgMTAuNy0yNCAyNC0yNCAyNCAxMC43IDI0IDI0em01NiAwYzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwIDM1LjggODAgODAgODAgODAtMzUuOCA4MC04MHpNMzA0IDIzMmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTAgMTA0YTgwIDgwIDAgMSAwIDAtMTYwIDgwIDgwIDAgMSAwIDAgMTYwem0wLTE5MmE4MCA4MCAwIDEgMCAwLTE2MCA4MCA4MCAwIDEgMCAwIDE2MHoiXX0sZTllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJhc2tldC1zaG9wcGluZyIsaWNvbjpbNTc2LDUxMixbInNob3BwaW5nLWJhc2tldCJdLCJmMjkxIiwiTTI4OCAwYzYuNiAwIDEyLjkgMi43IDE3LjQgNy41bDE0NCAxNTIgLjUgLjUgNzguMSAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyIDAgMTQuNS05LjYgMjYuNy0yMi44IDMwLjdMNDkxLjEgNDI5LjljLTYuNSAyOS4zLTMyLjUgNTAuMS02Mi41IDUwLjFsLTI4MS4zIDBjLTMwIDAtNTYtMjAuOC02Mi41LTUwLjFsLTQ2LTIwNy4yYy0xMy4yLTMuOS0yMi44LTE2LjItMjIuOC0zMC43IDAtMTcuNyAxNC4zLTMyIDMyLTMybDc4LjEgMCAuNS0uNSAxNDQtMTUyQzI3NS4xIDIuNyAyODEuNCAwIDI4OCAwem0wIDU4LjlMMTkyLjIgMTYwIDM4My44IDE2MCAyODggNTguOXpNMjA4IDI2NGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDExMmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtMTEyem04MC0yNGMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCAxMTJjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTExMmMwLTEzLjMtMTAuNy0yNC0yNC0yNHptMTI4IDI0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0bDAgMTEyYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0xMTJ6Il19LCRCdD1lOWUsREJ0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJyaWRnZSIsaWNvbjpbNTEyLDUxMixbXSwiZTRjOCIsIk0zMiAzMkMxNC4zIDMyIDAgNDYuMyAwIDY0UzE0LjMgOTYgMzIgOTZsOCAwIDAgNjQtNDAgMCAwIDExMmMzNy42IDkuNCA2NCA0My4yIDY0IDgybDAgOTRjMCAxNy43IDE0LjMgMzIgMzIgMzJsMzIgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTY0YzAtNTMgNDMtOTYgOTYtOTZzOTYgNDMgOTYgOTZsMCA2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwzMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtOTRjMC0zOC44IDI2LjQtNzIuNiA2NC04MmwwLTExMi00MCAwIDAtNjQgOCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDMyIDMyek00MjQgOTZsMCA2NC04MCAwIDAtNjQgODAgMHpNMjk2IDk2bDAgNjQtODAgMCAwLTY0IDgwIDB6TTg4IDk2bDgwIDAgMCA2NC04MCAwIDAtNjR6Il19LExCdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwbGFuZS1hcnJpdmFsIixpY29uOls1NzYsNTEyLFsxMjg3NDhdLCJmNWFmIiwiTTM4Ni42IDE5My4xTDI2NS45IDMuN2MtNC44LTcuNi0xMi42LTEyLjgtMjEuNC0xNC4zbC00My4xLTcuNmMtMTAuOC0xLjktMjAuMiA3LjMtMTguNiAxOC4xbDI0IDE2MS42LTEwNS0xOC41LTMzLjgtNjEuOEM2NC41IDc0LjcgNTguMiA3MC4yIDUxLjEgNjlMMzQgNjZjLTkuOC0xLjctMTguOCA1LjktMTguOCAxNS44bC42IDEwNi4zYy4yIDMwLjkgMjIuNCA1Ny4zIDUyLjkgNjIuN2wxMy41IDIuNCAwIDAgNDE3LjYgNzMuNmMzMC41IDUuNCA1OS41LTE1IDY0LjktNDUuNHMtMTUtNTkuNS00NS40LTY0LjlMMzg2LjYgMTkzLjF6TTIyNCAzODRhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0xMzEuMi0xNS4zYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTMyIDQ0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw1MTIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwzMiA0NDh6Il19LEVCdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjYXNoLXJlZ2lzdGVyIixpY29uOls1MTIsNTEyLFtdLCJmNzg4IiwiTTk2IDBDNjAuNyAwIDMyIDI4LjcgMzIgNjRzMjguNyA2NCA2NCA2NGw0OCAwIDAgMzItNTcgMGMtMzEuNiAwLTU4LjUgMjMuMS02My4zIDU0LjRMMS4xIDM2NC4xQy40IDM2OC44IDAgMzczLjYgMCAzNzguNEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwzODQgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTY5LjZjMC00LjgtLjQtOS42LTEuMS0xNC40TDQ4OC4yIDIxNC40QzQ4My41IDE4My4xIDQ1Ni42IDE2MCA0MjUgMTYwbC0yMTcgMCAwLTMyIDQ4IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRTMjkxLjMgMCAyNTYgMEw5NiAwem0wIDQ4bDE2MCAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2TDk2IDgwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2ek02NCA0MjRjMC0xMy4zIDEwLjctMjQgMjQtMjRsMzM2IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRMODggNDQ4Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHptNDgtMTYwYTI0IDI0IDAgMSAxIDAtNDggMjQgMjQgMCAxIDEgMCA0OHptMTIwLTI0YTI0IDI0IDAgMSAxIC00OCAwIDI0IDI0IDAgMSAxIDQ4IDB6TTE2MCAzNDRhMjQgMjQgMCAxIDEgMC00OCAyNCAyNCAwIDEgMSAwIDQ4ek0zMjggMjQwYTI0IDI0IDAgMSAxIC00OCAwIDI0IDI0IDAgMSAxIDQ4IDB6TTI1NiAzNDRhMjQgMjQgMCAxIDEgMC00OCAyNCAyNCAwIDEgMSAwIDQ4ek00MjQgMjQwYTI0IDI0IDAgMSAxIC00OCAwIDI0IDI0IDAgMSAxIDQ4IDB6TTM1MiAzNDRhMjQgMjQgMCAxIDEgMC00OCAyNCAyNCAwIDEgMSAwIDQ4eiJdfSxQQnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicmluZyIsaWNvbjpbNTEyLDUxMixbXSwiZjcwYiIsIk02NCAyMDhjMCA3LjggNC40IDE4LjcgMTcuMSAzMC4zIDQ1LjQtMjQuMiAxMDcuNy0zOC4zIDE3NC45LTM4LjNzMTI5LjUgMTQuMSAxNzQuOSAzOC4zYzEyLjgtMTEuNiAxNy4xLTIyLjUgMTcuMS0zMC4zIDAtMTIuMy0xMC44LTMyLTQ3LjktNTAuNi0zNS4yLTE3LjYtODYuMS0yOS40LTE0NC4xLTI5LjRzLTEwOC45IDExLjgtMTQ0LjEgMjkuNEM3NC44IDE3NiA2NCAxOTUuNyA2NCAyMDh6bTE5MiA0MGMtNDcgMC04OS4zIDcuNi0xMjIuOSAxOS43IDMzLjIgMTIuNCA3NS43IDIwLjMgMTIyLjkgMjAuM3M4OS43LTcuOCAxMjIuOS0yMC4zQzM0NS4zIDI1NS42IDMwMyAyNDggMjU2IDI0OHpNMCAyMDhDMCAxNTguNCAzOS40IDEyMi4yIDgzLjMgMTAwLjIgMTI5LjEgNzcuMyAxOTAuMyA2NCAyNTYgNjRzMTI2LjkgMTMuMyAxNzIuNyAzNi4yYzQzLjkgMjIgODMuMyA1OC4yIDgzLjMgMTA3LjhsMCA5NmMwIDQ5LjYtMzkuNCA4NS44LTgzLjMgMTA3LjgtNDUuOSAyMi45LTEwNyAzNi4yLTE3Mi43IDM2LjJTMTI5LjEgNDM0LjcgODMuMyA0MTEuOEMzOS40IDM4OS44IDAgMzUzLjYgMCAzMDRsMC05NnoiXX0sSUJ0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImFxdWFyaXVzIixpY29uOls1NzYsNTEyLFtdLCJlODQ1IiwiTTQwMS43IDI5MS40YzktNC41IDE5LjYtNC41IDI4LjYgMGwxMjggNjRjMTUuOCA3LjkgMjIuMiAyNy4xIDE0LjMgNDIuOXMtMjcuMSAyMi4yLTQyLjkgMTQuM0w0MTYgMzU1LjggMzAyLjMgNDEyLjZjLTkgNC41LTE5LjYgNC41LTI4LjYgMEwxNjAgMzU1LjggNDYuMyA0MTIuNmMtMTUuOCA3LjktMzUgMS41LTQyLjktMTQuM3MtMS41LTM1IDE0LjMtNDIuOWwxMjgtNjRjOS00LjUgMTkuNi00LjUgMjguNiAwTDI4OCAzNDguMiA0MDEuNyAyOTEuNHptMy40LTE5My41YzguMi0zIDE3LjMtMi41IDI1LjIgMS41bDEyOCA2NGMxNS44IDcuOSAyMi4yIDI3LjEgMTQuMyA0Mi45cy0yNy4xIDIyLjItNDIuOSAxNC4zTDQxNiAxNjMuOCAzMDIuMyAyMjAuNmMtOSA0LjUtMTkuNiA0LjUtMjguNiAwTDE2MCAxNjMuOCA0Ni4zIDIyMC42Yy0xNS44IDcuOS0zNSAxLjUtNDIuOS0xNC4zcy0xLjUtMzUgMTQuMy00Mi45bDEyOC02NCAzLjQtMS41YzguMi0zIDE3LjMtMi41IDI1LjIgMS41bDExMy43IDU2LjggMTEzLjctNTYuOCAzLjQtMS41eiJdfSx0OWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic2hhcmUtbm9kZXMiLGljb246WzUxMiw1MTIsWyJzaGFyZS1hbHQiXSwiZjFlMCIsIk0zODQgMTkyYzUzIDAgOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2LTk2IDQzLTk2IDk2YzAgNS40IC41IDEwLjggMS4zIDE2TDE1OS42IDE4NC4xYy0xNi45LTE1LTM5LjItMjQuMS02My42LTI0LjEtNTMgMC05NiA0My05NiA5NnM0MyA5NiA5NiA5NmMyNC40IDAgNDYuNi05LjEgNjMuNi0yNC4xTDI4OS4zIDQwMGMtLjkgNS4yLTEuMyAxMC41LTEuMyAxNiAwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2LTQzLTk2LTk2LTk2Yy0yNC40IDAtNDYuNiA5LjEtNjMuNiAyNC4xTDE5MC43IDI3MmMuOS01LjIgMS4zLTEwLjUgMS4zLTE2cy0uNS0xMC44LTEuMy0xNmwxMjkuNy03Mi4xYzE2LjkgMTUgMzkuMiAyNC4xIDYzLjYgMjQuMXoiXX0sQUJ0PXQ5ZSxOQnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGVyc29uLWNpcmNsZS1leGNsYW1hdGlvbiIsaWNvbjpbNjQwLDUxMixbXSwiZTUzZiIsIk0yODAgMjRhNTYgNTYgMCAxIDAgLTExMiAwIDU2IDU2IDAgMSAwIDExMiAwem0yNCAyMTIuN0wzNDEgMjg2LjZjMTIuOC0xNy41IDI4LjUtMzIuNyA0Ni4zLTQ1bC01Ni4yLTc1LjdDMzA2IDEzMiAyNjYuMyAxMTIgMjI0IDExMnMtODIgMjAtMTA3LjIgNTMuOWwtNzAuNSA5NWMtMTAuNSAxNC4yLTcuNiAzNC4yIDYuNiA0NC44czM0LjIgNy42IDQ0LjgtNi42TDE0NCAyMzYuNyAxNDQgNTEyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xNjBjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDE2MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMjc1LjN6TTQ5NiA1NDRhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0wLTEwMGEyMCAyMCAwIDEgMSAwIDQwIDIwIDIwIDAgMSAxIDAtNDB6bTAtMTQwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtODBjMC04LjggNy4yLTE2IDE2LTE2eiJdfSxSQnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYmlub2N1bGFycyIsaWNvbjpbNTEyLDUxMixbXSwiZjFlNSIsIk0xMjggMzJsMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDMyLTk2IDAgMC0zMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptNjQgOTZsMCAzMjBjMCAxNy43LTE0LjMgMzItMzIgMzJMMzIgNDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTU5LjFjMC0zNC42IDkuNC02OC42IDI3LjItOTguMyAxMy43LTIyLjggMjIuNS00OC4yIDI1LjgtNzQuNkw2MC41IDE1NmMyLTE2IDE1LjYtMjggMzEuOC0yOGw5OS44IDB6bTIyNy44IDBjMTYuMSAwIDI5LjggMTIgMzEuOCAyOEw0NTkgMjE2YzMuMyAyNi40IDEyLjEgNTEuOCAyNS44IDc0LjYgMTcuOCAyOS43IDI3LjIgNjMuNyAyNy4yIDk4LjNsMCA1OS4xYzAgMTcuNy0xNC4zIDMyLTMyIDMybC0xMjggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0zMjAgOTkuOCAwek0zMjAgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJsMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDMyLTk2IDAgMC0zMnptLTMyIDY0bDAgMTYwLTY0IDAgMC0xNjAgNjQgMHoiXX0sT0J0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImtpcC1zaWduIixpY29uOlszODQsNTEyLFtdLCJlMWM0IiwiTTM0MC44IDg4LjNjMTMuNC0xMS41IDE1LTMxLjcgMy41LTQ1LjFzLTMxLjctMTUtNDUuMS0zLjVMMTI4IDE4Ni40IDEyOCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMlM2NCA0Ni4zIDY0IDY0bDAgMTY4LTMyIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMzIgMCAwIDE2OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTIyLjQgMTcxLjIgMTQ2LjdjMTMuNCAxMS41IDMzLjYgOS45IDQ1LjEtMy41czkuOS0zMy42LTMuNS00NS4xTDE3My4yIDI4MCAzNTIgMjgwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0TDE3My4yIDIzMiAzNDAuOCA4OC4zeiJdfSxhOWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaGFyZC1kcml2ZSIsaWNvbjpbNDQ4LDUxMixbMTI4NDM2LCJoZGQiXSwiZjBhMCIsIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgMjYwLjFDMTguMSAyNDcuNCA0MC4yIDI0MCA2NCAyNDBsMzIwIDBjMjMuOCAwIDQ1LjkgNy40IDY0IDIwLjFMNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyek00NDggMzUyYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDI4OGMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCA2NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTY0ek0yMjQgMzg0YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTEyOC0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6Il19LEZCdD1hOWUsQkJ0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InJhbmtpbmctc3RhciIsaWNvbjpbNTc2LDUxMixbXSwiZTU2MSIsIk0zMjEuOCA1NC4xTDI5OC4yIDYuM2MtMy45LTguMy0xNi4xLTguNi0yMC40IDBsLTIzLjYgNDcuOC01Mi4zIDcuNWMtOS4zIDEuNC0xMy4zIDEyLjktNi40IDE5LjhsMzggMzctOSA1Mi4xYy0xLjQgOS4zIDguMiAxNi41IDE2LjggMTIuMmw0Ni45LTI0LjggNDYuNiAyNC40YzguNiA0LjMgMTguMy0yLjkgMTYuOC0xMi4ybC05LTUyLjEgMzgtMzYuNmM2LjgtNi44IDIuOS0xOC4zLTYuNC0xOS44bC01Mi4zLTcuNXpNMjU2IDI1NmMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCAxNjBjMCAyNi41IDIxLjUgNDggNDggNDhsNjQgMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTE2MGMwLTI2LjUtMjEuNS00OC00OC00OGwtNjQgMHpNNDggMzIwYy0yNi41IDAtNDggMjEuNS00OCA0OGwwIDk2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDY0IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC05NmMwLTI2LjUtMjEuNS00OC00OC00OGwtNjQgMHpNNDE2IDQzMmwwIDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDY0IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC0zMmMwLTI2LjUtMjEuNS00OC00OC00OGwtNjQgMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh6Il19LEhCdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ1c2VyLXRpZSIsaWNvbjpbNDQ4LDUxMixbXSwiZjUwOCIsIk0yMjQgMjQ4YTEyMCAxMjAgMCAxIDEgMC0yNDAgMTIwIDEyMCAwIDEgMSAwIDI0MHptLTMwLjUgNTZsNjEgMGM5LjcgMCAxNy41IDcuOCAxNy41IDE3LjUgMCA0LjItMS41IDguMi00LjIgMTEuNGwtMjcuNCAzMiAzMSAxMTUuMSAuNiAwIDM0LjYtMTM4LjVjMi4yLTguNyAxMS4xLTE0IDE5LjUtMTAuOCA2MS45IDIzLjYgMTA1LjkgODMuNiAxMDUuOSAxNTMuOCAwIDE1LjEtMTIuMyAyNy40LTI3LjQgMjcuNEw0My40IDUxMmMtMTUuMSAwLTI3LjQtMTIuMy0yNy40LTI3LjQgMC03MC4yIDQ0LTEzMC4yIDEwNS45LTE1My44IDguNC0zLjIgMTcuMyAyLjEgMTkuNSAxMC44bDM0LjYgMTM4LjUgLjYgMCAzMS0xMTUuMS0yNy40LTMyYy0yLjctMy4yLTQuMi03LjItNC4yLTExLjQgMC05LjcgNy44LTE3LjUgMTcuNS0xNy41eiJdfSxzOWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZWxsaXBzaXMiLGljb246WzQ0OCw1MTIsWyJlbGxpcHNpcy1oIl0sImYxNDEiLCJNMCAyNTZhNTYgNTYgMCAxIDEgMTEyIDAgNTYgNTYgMCAxIDEgLTExMiAwem0xNjggMGE1NiA1NiAwIDEgMSAxMTIgMCA1NiA1NiAwIDEgMSAtMTEyIDB6bTIyNC01NmE1NiA1NiAwIDEgMSAwIDExMiA1NiA1NiAwIDEgMSAwLTExMnoiXX0scUJ0PXM5ZSxqQnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic3RvcmUtc2xhc2giLGljb246WzU3Niw1MTIsW10sImUwNzEiLCJNNDEtMjQuOWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBTLTIuMy0uMyA3IDkuMWw1MjggNTI4YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtNTguNi01OC42YzEuMS00IDEuNi04LjIgMS42LTEyLjVsMC0xNTEuMmMtMTIuNSA0LjYtMjYuMSA3LjItNDAuNSA3LjItOC4xIDAtMTUuOS0uOC0yMy41LTIuNGwwIDY2LjQtMzAuMiAwLTEzNy41LTEzNy41YzIuOS0zLjYgNS41LTcuNCA3LjYtMTEuNSAxMS42IDIyIDM0LjcgMzcgNjEuMyAzNyAyNi44IDAgNDkuOC0xNS4xIDYxLjQtMzcuMSAxMS40IDIyLjEgMzQuNSAzNy4xIDYwLjggMzcuMSA0NS42IDAgNzguNC00My43IDY1LjYtODcuNUw1MTMuOCA3Mi4zQzUwNi44IDQ4LjQgNDg0LjkgMzIgNDYwIDMyTDExNiAzMmMtNS41IDAtMTAuOCAuOC0xNS45IDIuM0w0MS0yNC45ek0xNTEuNSAyMjEuM0w0OC43IDExOC42IDM4LjkgMTUyLjVjLTEyLjggNDMuNyAyMCA4Ny41IDY1LjYgODcuNSAxOC4xIDAgMzQuNy03LjEgNDctMTguN3pNNDEwLjIgNDgwbC0xMjgtMTI4LTE1NC4yIDAgMC02Ni40Yy03LjYgMS42LTE1LjUgMi40LTIzLjUgMi40LTE0LjQgMC0yOC0yLjYtNDAuNS03LjJMNjQgNDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDI5OC4yIDB6Il19LGk5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwZXJjZW50IixpY29uOls0NDgsNTEyLFs2MjEwMSw2Mjc4NSwicGVyY2VudGFnZSJdLCIyNSIsIk0xOTIgMTI4YTk2IDk2IDAgMSAwIC0xOTIgMCA5NiA5NiAwIDEgMCAxOTIgMHpNNDQ4IDM4NGE5NiA5NiAwIDEgMCAtMTkyIDAgOTYgOTYgMCAxIDAgMTkyIDB6TTQzOC42IDg2LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTM4NCAzODRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsMzg0LTM4NHoiXX0sVkJ0PWk5ZSxyOWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmlsZS16aXBwZXIiLGljb246WzM4NCw1MTIsWyJmaWxlLWFyY2hpdmUiXSwiZjFjNiIsIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEwyMTMuNSAwYzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43TDM2NS4zIDEyNS4zYzEyIDEyIDE4LjcgMjguMyAxOC43IDQ1LjNMMzg0IDQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgNjR6bTIwOC01LjVsMCA5My41YzAgMTMuMyAxMC43IDI0IDI0IDI0TDMyNS41IDE3NiAyMDggNTguNXpNNjQgNzJjMCAxMy4zIDEwLjcgMjQgMjQgMjRsNDggMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEw4OCA0OEM3NC43IDQ4IDY0IDU4LjcgNjQgNzJ6bTAgOTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRsNDggMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtNDggMGMtMTMuMyAwLTI0IDEwLjctMjQgMjR6bTY0IDcybC0zMiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDQ4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4czQ4LTIxLjUgNDgtNDhsMC00OGMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTE2IDY0YTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnoiXX0sVUJ0PXI5ZSxXQnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZGlzcGxheSIsaWNvbjpbNTEyLDUxMixbXSwiZTE2MyIsIk00NDggOTZsMCAyNTYtMzg0IDAgMC0yNTYgMzg0IDB6TTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCAzNTJjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMTQ0IDAtMTYgNDgtNzIgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwyNzIgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtNzIgMC0xNi00OCAxNDQgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI1NmMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMnoiXX0sbzllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Imljb25zIixpY29uOls1MTIsNTEyLFsiaGVhcnQtbXVzaWMtY2FtZXJhLWJvbHQiXSwiZjg2ZCIsIk0xNzQuOSAyNzJjMTAuNyAwIDIwLjcgNS4zIDI2LjYgMTQuMmwxMS44IDE3LjggMjYuNyAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgMTEyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4TDQ4IDUxMmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhMMCAzNTJjMC0yNi41IDIxLjUtNDggNDgtNDhsMjYuNyAwIDExLjgtMTcuOGM1LjktOC45IDE1LjktMTQuMiAyNi42LTE0LjJsNjEuNyAwem0yNzguNi0xMmM1LjYtNC45IDEzLjktNS4zIDE5LjktLjlzOC4zIDEyLjQgNS4zIDE5LjNMNDQwLjMgMzY4IDQ5NiAzNjhjNi43IDAgMTIuNiA0LjEgMTUgMTAuNHMuNiAxMy4zLTQuNCAxNy43bC0xMjggMTEyYy01LjYgNC45LTEzLjkgNS4zLTE5LjkgLjlzLTguMy0xMi40LTUuMy0xOS4zbDM4LjUtODkuNy01NS44IDBjLTYuNyAwLTEyLjYtNC4xLTE1LTEwLjRzLS42LTEzLjMgNC40LTE3LjdsMTI4LTExMnpNMTQ0IDM2MGE0OCA0OCAwIDEgMCAwIDk2IDQ4IDQ4IDAgMSAwIDAtOTZ6TTQ4My44IC40YzYuNS0xLjEgMTMuMSAuNCAxOC41IDQuNCA2LjEgNC41IDkuNyAxMS43IDkuNyAxOS4ybDAgMTUyLS4zIDQuOWMtMy4zIDI0LjItMzAuNSA0My4xLTYzLjcgNDMuMS0zNS4zIDAtNjQtMjEuNS02NC00OHMyOC43LTQ4IDY0LTQ4YzUuNSAwIDEwLjkgLjYgMTYgMS42bDAtNDkuMy0xMTIgMzMuNiAwIDExMC4yLS4zIDQuOWMtMy4zIDI0LjItMzAuNSA0My4xLTYzLjcgNDMuMS0zNS4zIDAtNjQtMjEuNS02NC00OHMyOC43LTQ4IDY0LTQ4YzUuNSAwIDEwLjkgLjYgMTYgMS42TDMwNCA3MmMwLTEwLjYgNy0yMCAxNy4xLTIzbDE2MC00OCAyLjctLjZ6TTE4OC45IDBDMjI2IDAgMjU2IDMwIDI1NiA2Ny4xbDAgNi4xYzAgNTYuMS03NS4yIDExMi4xLTExMC4zIDEzNS4zLTEwLjggNy4xLTI0LjYgNy4xLTM1LjQgMC0zNS4xLTIzLjEtMTEwLjMtNzkuMi0xMTAuMy0xMzUuM2wwLTYuMUMwIDMwIDMwIDAgNjcuMSAwIDg4LjIgMCAxMDggOS45IDEyMC43IDI2LjhsNy4zIDkuOCA3LjMtOS44QzE0OCA5LjkgMTY3LjggMCAxODguOSAweiJdfSxHQnQ9bzllLEtCdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJydWxlci12ZXJ0aWNhbCIsaWNvbjpbMjU2LDUxMixbXSwiZjU0OCIsIk0wIDE2QzAtMTAuNSAyMS41LTMyIDQ4LTMybDE2MCAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgMjQtMTA0IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMTA0IDAgMCA0OC03MiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDcyIDAgMCA0OC0xMDQgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwxMDQgMCAwIDQ4LTcyIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsNzIgMCAwIDQ4LTEwNCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDEwNCAwIDAgMjRjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNTQ0Yy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDE2eiJdfSxuOWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibWFwLWxvY2F0aW9uLWRvdCIsaWNvbjpbNjQwLDUxMixbIm1hcC1tYXJrZWQtYWx0Il0sImY1YTAiLCJNNTc2IDQ4YzAtMTEuMS01LjctMjEuNC0xNS4yLTI3LjJzLTIxLjItNi40LTMxLjEtMS40TDQxMy41IDc3LjUgMjM0LjEgMTcuNmMtOC4xLTIuNy0xNi44LTIuMS0yNC40IDEuN2wtMTI4IDY0QzcwLjggODguOCA2NCA5OS45IDY0IDExMmwwIDM1MmMwIDExLjEgNS43IDIxLjQgMTUuMiAyNy4yczIxLjIgNi40IDMxLjEgMS40bDExNi4xLTU4LjEgMTczLjMgNTcuOGMtNC4zLTYuNC04LjUtMTMuMS0xMi42LTE5LjktMTEtMTguMy0yMS45LTM5LjMtMzAtNjEuOGwtMTAxLjItMzMuNyAwLTI4NC41IDEyOCA0Mi43IDAgOTkuM2MzMS0zNS44IDc3LTU4LjQgMTI4LTU4LjQgMjIuNiAwIDQ0LjIgNC40IDY0IDEyLjVMNTc2IDQ4ek01MTIgMjI0Yy02Ni4zIDAtMTIwIDUyLjgtMTIwIDExNy45IDAgNjguOSA2NC4xIDE1MC40IDk4LjYgMTg5LjMgMTEuNiAxMyAzMS4zIDEzIDQyLjkgMCAzNC41LTM4LjkgOTguNi0xMjAuNCA5OC42LTE4OS4zIDAtNjUuMS01My43LTExNy45LTEyMC0xMTcuOXpNNDcyIDM0NGE0MCA0MCAwIDEgMSA4MCAwIDQwIDQwIDAgMSAxIC04MCAweiJdfSxZQnQ9bjllLGw5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoZWFydC1jcmFjayIsaWNvbjpbNTEyLDUxMixbMTI4MTQ4LCJoZWFydC1icm9rZW4iXSwiZjdhOSIsIk0xMzMuMSAzMmMxNy4zIDAgMzQuMiAzLjQgNDkuOSA5LjdsNTQuOCA4NS4yLTc1LjQgNzUuNGMtMS41IDEuNS0yLjQgMy42LTIuMyA1LjhzMSA0LjIgMi42IDUuN2wxMTIgMTA0YzIuOSAyLjcgNy40IDIuOSAxMC41IC4zczMuOC03IDEuNy0xMC40bC02MC40LTk4LjEgOTAuNy03NS42YzIuNi0yLjEgMy41LTUuNyAyLjQtOC44TDI5Ni40IDYwLjZDMzE5LjYgNDIuMyAzNDguNiAzMiAzNzguOSAzMiA0NTIuNCAzMiA1MTIgOTEuNiA1MTIgMTY1LjFsMCAyLjZjMCAxMTIuMi0xMzkuOSAyNDIuNS0yMTIuOSAyOTguMi0xMi40IDkuNC0yNy42IDE0LjEtNDMuMSAxNC4xcy0zMC44LTQuNi00My4xLTE0LjFDMTM5LjkgNDEwLjIgMCAyNzkuOSAwIDE2Ny43bDAtMi42QzAgOTEuNiA1OS42IDMyIDEzMy4xIDMyeiJdfSxaQnQ9bDllLFhCdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjb3ciLGljb246WzY0MCw1MTIsWzEyODAwNF0sImY2YzgiLCJNOTYgMjI0bDAgMTkyYzAgMTcuNyAxNC4zIDMyIDMyIDMybDMyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC04OC4yYzkuOSA2LjYgMjAuNiAxMiAzMiAxNi4xbDAgMjQuMmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtMTYuOWM1LjMgLjYgMTAuNiAuOSAxNiAuOXMxMC43LS4zIDE2LS45bDAgMTYuOWMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtMjQuMmMxMS40LTQgMjIuMS05LjQgMzItMTYuMWwwIDg4LjJjMCAxNy43IDE0LjMgMzIgMzIgMzJsMzIgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTE2MCAzMiAzMiAwIDQ5LjVjMCA5LjUgMi44IDE4LjcgOC4xIDI2LjZMNTMwIDQyN2M4LjggMTMuMSAyMy41IDIxIDM5LjMgMjEgMjIuNSAwIDQxLjktMTUuOSA0Ni4zLTM4bDIwLjMtMTAxLjZjMi42LTEzLS4zLTI2LjUtOC0zNy4zbC0zLjktNS41IDAtODEuNmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDE0LjQtNTIuOS03NC4xQzQ5NiA4Ni41IDQ1Mi40IDY0IDQwNS45IDY0TDE0NCA2NEM3Ny43IDY0IDI0IDExNy43IDI0IDE4NGwwIDU0QzkuNCAyNDkuOCAwIDI2Ny44IDAgMjg4bDAgMTcuNmMwIDggNi40IDE0LjQgMTQuNCAxNC40IDMxLjggMCA1Ny42LTI1LjggNTcuNi01Ny42TDcyIDE4NGMwLTI0LjMgMTIuMS00NS44IDMwLjUtNTguOS00LjIgMTAuOC02LjUgMjIuNi02LjUgMzQuOWwwIDY0ek01NjAgMzM2YTE2IDE2IDAgMSAxIDMyIDAgMTYgMTYgMCAxIDEgLTMyIDB6TTE2Ni42IDE2Ni42Yy00LjItNC4yLTYuNi0xMC02LjYtMTYgMC0xMi41IDEwLjEtMjIuNiAyMi42LTIyLjZsMTc4LjcgMGMxMi41IDAgMjIuNiAxMC4xIDIyLjYgMjIuNiAwIDYtMi40IDExLjgtNi42IDE2bC0yMy40IDIzLjRDMzMyLjIgMjExLjggMzAyLjcgMjI0IDI3MiAyMjRzLTYwLjItMTIuMi04MS45LTMzLjlsLTIzLjQtMjMuNHoiXX0sb2Y9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicnNzIixpY29uOls0NDgsNTEyLFsiZmVlZCJdLCJmMDllIiwiTTAgNjRjMC0xNy43IDE0LjMtMzIgMzItMzIgMjI5LjggMCA0MTYgMTg2LjIgNDE2IDQxNiAwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMkMzODQgMjUzLjYgMjI2LjQgOTYgMzIgOTYgMTQuMyA5NiAwIDgxLjcgMCA2NHpNMCA0MTZhNjQgNjQgMCAxIDEgMTI4IDAgNjQgNjQgMCAxIDEgLTEyOCAwek0zMiAxNjBjMTU5LjEgMCAyODggMTI4LjkgMjg4IDI4OCAwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmMwLTEyMy43LTEwMC4zLTIyNC0yMjQtMjI0LTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6Il19LFFCdD1vZixuZj17cHJlZml4OiJmYXMiLGljb25OYW1lOiJtYWduaWZ5aW5nLWdsYXNzIixpY29uOls1MTIsNTEyLFsxMjgyNjksInNlYXJjaCJdLCJmMDAyIiwiTTQxNiAyMDhjMCA0NS45LTE0LjkgODguMy00MCAxMjIuN0w1MDIuNiA0NTcuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwzMzAuNyAzNzZDMjk2LjMgNDAxLjEgMjUzLjkgNDE2IDIwOCA0MTYgOTMuMSA0MTYgMCAzMjIuOSAwIDIwOFM5My4xIDAgMjA4IDAgNDE2IDkzLjEgNDE2IDIwOHpNMjA4IDM1MmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6Il19LEpCdD1uZixlSHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2xvdWQtbW9vbiIsaWNvbjpbNjQwLDUxMixbXSwiZjZjMyIsIk00ODAgMGMxNC42IDAgMjguOCAxLjYgNDIuNSA0LjcgNy40IDEuNyAxMyA3LjggMTMuOSAxNS40cy0zIDE0LjktOS44IDE4LjNjLTQ1LjQgMjIuNi03Ni42IDY5LjUtNzYuNiAxMjMuNiAwIDc2LjIgNjEuOCAxMzggMTM4IDEzOCAzLjcgMCA3LjQtLjEgMTEuMS0uNCA3LjYtLjYgMTQuNyAzLjYgMTcuOCAxMC42czEuNSAxNS4xLTMuOSAyMC40Yy0yNiAyNS01OS4xIDQyLjctOTUuOSA0OS45LTExLjEtMjUuMy0zMC4yLTQ2LjMtNTQuMS01OS44LTcuNi02My40LTYxLjYtMTEyLjYtMTI3LjEtMTEyLjYtMTEuMiAwLTIyLjEgMS41LTMyLjUgNC4yLTQuOC00LjItOS45LTguMi0xNS4yLTExLjgtLjEtMi44LS4yLTUuNi0uMi04LjQgMC0xMDYgODYtMTkyIDE5Mi0xOTJ6bS0uMSA0MzEuOWMwIDQ0LjItMzUuOCA4MC04MCA4MGwtMjcxLjkgMGMtNTMgMC05Ni00My05Ni05NiAwLTQ3LjYgMzQuNi04NyA4MC05NC42LS40LTUyLjggNDIuOS05Ny4zIDk2LTk3LjMgMzQuOSAwIDY1LjQgMTguNiA4Mi4yIDQ2LjQgMTMtOS4xIDI4LjgtMTQuNCA0NS44LTE0LjQgNDQuMiAwIDgwIDM1LjggODAgODAgMCA1LjktLjYgMTEuNy0xLjkgMTcuMiAzNy40IDYuNyA2NS44IDM5LjQgNjUuOCA3OC43eiJdfSx1b2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYm94ZXMtc3RhY2tlZCIsaWNvbjpbNTEyLDUxMixbNjI2MjUsImJveGVzIiwiYm94ZXMtYWx0Il0sImY0NjgiLCJNMjI0IDBsMCA2NGMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC02NCAzMiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMTI4YzAgNS41LS43IDEwLjktMiAxNmwtMjUyIDBjLTEuMy01LjEtMi0xMC41LTItMTZsMC0xMjhjMC0zNS4zIDI4LjctNjQgNjQtNjRsMzIgMHptOTYgNTEyYy0xMS4yIDAtMjEuOC0yLjktMzEtOCA5LjUtMTYuNSAxNS0zNS42IDE1LTU2bDAtMTI4YzAtMjAuNC01LjUtMzkuNS0xNS01NiA5LjItNS4xIDE5LjctOCAzMS04bDMyIDAgMCA2NGMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC02NCAzMiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMTI4YzAgMzUuMy0yOC43IDY0LTY0IDY0bC0xMjggMHpNMCAzMjBjMC0zNS4zIDI4LjctNjQgNjQtNjRsMzIgMCAwIDY0YzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTY0IDMyIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAxMjhjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDMyMHoiXX0sdEh0PXVvZSxhSHQ9dW9lLHNIdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjb2RlLWJyYW5jaCIsaWNvbjpbNDQ4LDUxMixbXSwiZjEyNiIsIk04MCAxMDRhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em04MC0yNGMwIDMyLjgtMTkuNyA2MS00OCA3My4zbDAgNzAuNyAxNzYgMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTIyLjdjLTI4LjMtMTIuMy00OC00MC41LTQ4LTczLjMgMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGMwIDMyLjgtMTkuNyA2MS00OCA3My4zbDAgMjIuN2MwIDYxLjktNTAuMSAxMTItMTEyIDExMmwtMTc2IDAgMCA3MC43YzI4LjMgMTIuMyA0OCA0MC41IDQ4IDczLjMgMCA0NC4yLTM1LjggODAtODAgODBTMCA0NzYuMiAwIDQzMmMwLTMyLjggMTkuNy02MSA0OC03My4zbDAtMjA1LjNDMTkuNyAxNDEgMCAxMTIuOCAwIDgwIDAgMzUuOCAzNS44IDAgODAgMHM4MCAzNS44IDgwIDgwem0yMzIgMGEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAwek04MCA0NTZhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4eiJdfSxjOWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYmFuIixpY29uOls1MTIsNTEyLFsxMjg2ODMsImNhbmNlbCJdLCJmMDVlIiwiTTM2Ny4yIDQxMi41TDk5LjUgMTQ0LjhjLTIyLjQgMzEuNC0zNS41IDY5LjgtMzUuNSAxMTEuMiAwIDEwNiA4NiAxOTIgMTkyIDE5MiA0MS41IDAgNzkuOS0xMy4xIDExMS4yLTM1LjV6bTQ1LjMtNDUuM2MyMi40LTMxLjQgMzUuNS02OS44IDM1LjUtMTExLjIgMC0xMDYtODYtMTkyLTE5Mi0xOTItNDEuNSAwLTc5LjkgMTMuMS0xMTEuMiAzNS41TDQxMi41IDM2Ny4yek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwIDI1NiAyNTYgMCAxIDEgLTUxMiAweiJdfSxpSHQ9YzllLHJIdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJqdWctZGV0ZXJnZW50IixpY29uOlszODQsNTEyLFtdLCJlNTE5IiwiTTk2IDI0YzAtMTMuMyAxMC43LTI0IDI0LTI0bDgwIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRsMCAyNCA4IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRMODggOTZDNzQuNyA5NiA2NCA4NS4zIDY0IDcyUzc0LjcgNDggODggNDhsOCAwIDAtMjR6TTAgMjU2YzAtNzAuNyA1Ny4zLTEyOCAxMjgtMTI4bDEyOCAwYzcwLjcgMCAxMjggNTcuMyAxMjggMTI4bDAgMTkyYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCAyNTZ6bTI1NiAwbDAgOTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyeiJdfSxkOWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicmVwbHkiLGljb246WzUxMiw1MTIsWzYxNzE0LCJtYWlsLXJlcGx5Il0sImYzZTUiLCJNMjA0LjIgMTguNGMxMiA1IDE5LjggMTYuNiAxOS44IDI5LjZsMCA4MCAxMTIgMGM5Ny4yIDAgMTc2IDc4LjggMTc2IDE3NiAwIDExMy4zLTgxLjUgMTYzLjktMTAwLjIgMTc0LjEtMi41IDEuNC01LjMgMS45LTguMSAxLjktMTAuOSAwLTE5LjctOC45LTE5LjctMTkuNyAwLTcuNSA0LjMtMTQuNCA5LjgtMTkuNSA5LjQtOC44IDIyLjItMjYuNCAyMi4yLTU2LjcgMC01My00My05Ni05Ni05NmwtOTYgMCAwIDgwYzAgMTIuOS03LjggMjQuNi0xOS44IDI5LjZzLTI1LjcgMi4yLTM0LjktNi45bC0xNjAtMTYwYy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM2wxNjAtMTYwYzkuMi05LjIgMjIuOS0xMS45IDM0LjktNi45eiJdfSxvSHQ9ZDllLG5IdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzdW4tcGxhbnQtd2lsdCIsaWNvbjpbNjQwLDUxMixbXSwiZTU3YSIsIk0xNjAgMGMtNS41IDAtMTAuNiAyLjgtMTMuNSA3LjRsLTEuMSAyLjEtMjQuOCA1NS40LTU2LjctMjEuN2MtNS45LTIuMi0xMi41LS44LTE3IDMuN1M0MSA1OCA0My4yIDYzLjlsMjEuNyA1Ni43LTU1LjQgMjQuOEMzLjcgMTQ4IDAgMTUzLjcgMCAxNjBzMy43IDEyIDkuNSAxNC42bDU1LjQgMjQuOC0yMS43IDU2LjdjLTIuMiA1LjktLjggMTIuNSAzLjcgMTdzMTEuMSA1LjkgMTcgMy43bDU2LjctMjEuNyAyNC44IDU1LjRjMi42IDUuOCA4LjMgOS41IDE0LjYgOS41czEyLTMuNyAxNC42LTkuNWwyNC44LTU1LjQgNTYuOCAyMS43YzUuOSAyLjIgMTIuNSAuOCAxNy0zLjdzNS45LTExLjEgMy43LTE3bC0yMS43LTU2LjcgNTUuNC0yNC44YzUuOC0yLjYgOS41LTguMyA5LjUtMTQuNnMtMy43LTEyLTkuNS0xNC42bC01NS40LTI0LjggMjEuNy01Ni43IC43LTIuMmMxLjItNS4zLS40LTEwLjktNC4zLTE0LjhzLTkuNS01LjUtMTQuOC00LjNsLTIuMiAuNy01Ni44IDIxLjctMjQuOC01NS40QzE3MiAzLjcgMTY2LjMgMCAxNjAgMHptMCA5NmE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHptMzIgNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMzc2IDE2bDAgNTMuNGMtMTQuOCA3LjctMjQgMjMuMS0yNCA0NC42IDAgMTYuOCAxNiA0NCAzNy40IDY3LjIgNS44IDYuMiAxNS41IDYuMiAyMS4yIDAgMjEuNC0yMy4zIDM3LjQtNTAuNiAzNy40LTY3LjIgMC0yMS41LTkuMi0zNy0yNC00NC42bDAtNTMuNGMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MGwwIDIyLjdjLTkuOC00LjMtMjAuNi02LjctMzItNi43LTQ0LjIgMC04MCAzNS44LTgwIDgwbDAgMjEuNGMtMTQuOCA3LjYtMjQgMjMuMS0yNCA0NC42IDAgMTYuOCAxNiA0NCAzNy40IDY3LjIgNS44IDYuMiAxNS41IDYuMiAyMS4yIDAgMjEuNC0yMy4zIDM3LjQtNTAuNiAzNy40LTY3LjIgMC0yMS41LTkuMi0zNy0yNC00NC42bDAtMjEuNGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgMTc2LTQyNCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDU3NiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xMDQgMCAwLTI3MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyeiJdfSxsSHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYmFjdGVyaXVtIixpY29uOls1NzYsNTEyLFtdLCJlMDVhIiwiTTQwOCAxNmMwLTEzLjMtMTAuNy0yNC0yNC0yNFMzNjAgMi43IDM2MCAxNmwwIDIzLjRjLTEzLjkgNS4zLTI2LjkgMTMuNS0zOC4yIDI0LjVMMzA1IDQ3Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDE2LjggMTYuOC0zMC4xIDMwLjEtMTYuOC0xNi44Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDE2LjggMTYuOGMtMTAgMTAtMjAgMjAtMzAuMSAzMC4xTDE3NyAxNzVjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsMTYuOCAxNi44LTMwLjEgMzAuMS0xNi44LTE2LjhjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsMTYuOCAxNi44Yy0xMSAxMS4zLTE5LjIgMjQuMy0yNC41IDM4LjJMNDggMzI4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDE2LjMgMGMxLjMgMTguMyA3LjEgMzYuNCAxNy40IDUyLjRMNzEgNDM5Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsMTAuNi0xMC42YzE2IDEwLjMgMzQuMSAxNi4xIDUyLjQgMTcuNGwwIDE2LjNjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTIzLjRjMTMuOS01LjMgMjYuOS0xMy41IDM4LjItMjQuNUwyNzEgNDY1YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtMTYuOC0xNi44IDMwLjEtMzAuMSAxNi44IDE2LjhjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC0xNi44LTE2LjhjMTAtMTAgMjAtMjAgMzAuMS0zMC4xTDM5OSAzMzdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC0xNi44LTE2LjggMzAuMS0zMC4xIDE2LjggMTYuOGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTE2LjgtMTYuOGMxMS0xMS4zIDE5LjItMjQuMyAyNC41LTM4LjJsMjMuNCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0xNi4zIDBjLTEuMy0xOC4zLTcuMS0zNi40LTE3LjQtNTIuNEw1MDUgNzNjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMEw0NjAuNCA0OS43Yy0xNi0xMC4zLTM0LjEtMTYuMS01Mi40LTE3LjRMNDA4IDE2ek0xNjAgMzUyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTI3MiAyNDBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0eiJdfSxjSHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicmVjb3JkLXZpbnlsIixpY29uOls1MTIsNTEyLFtdLCJmOGQ5IiwiTTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDAgMjU2IDI1NiAwIDEgMSAtNTEyIDB6bTI1Ni05NmE5NiA5NiAwIDEgMSAwIDE5MiA5NiA5NiAwIDEgMSAwLTE5MnptMCAyNDBhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0wLTExMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6Il19LHU5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmbG9wcHktZGlzayIsaWNvbjpbNDQ4LDUxMixbMTI4MTkwLDEyODQyNiwic2F2ZSJdLCJmMGM3IiwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yNDIuN2MwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0wzNTIgNTAuN0MzNDAgMzguNyAzMjMuNyAzMiAzMDYuNyAzMkw2NCAzMnptMzIgOTZjMC0xNy43IDE0LjMtMzIgMzItMzJsMTYwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMTYwIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtNjR6TTIyNCAyODhhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6Il19LGRIdD11OWUsdUh0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRvaWxldHMtcG9ydGFibGUiLGljb246WzUxMiw1MTIsW10sImU1ODQiLCJNNjQgMGw5NiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMTYtMjI0IDAgMC0xNkMwIDI4LjcgMjguNyAwIDY0IDB6TTAgMTI4bDIyNCAwIDAgMzYwYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtOC0xMjggMCAwIDhjMCAxMy4zLTEwLjcgMjQtMjQgMjRTMCA1MDEuMyAwIDQ4OEwwIDEyOHpNMTI4IDI0OGwwIDQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0bDI0IDAgMC05Ni0yNCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHpNMzUyIDBsOTYgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDE2LTIyNCAwIDAtMTZjMC0zNS4zIDI4LjctNjQgNjQtNjR6TTI4OCAxMjhsMjI0IDAgMCAzNjBjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC04LTEyOCAwIDAgOGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTM2MHpNNDE2IDI0OGwwIDQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0bDI0IDAgMC05Ni0yNCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHoiXX0scEh0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im8iLGljb246WzQ0OCw1MTIsWzExMV0sIjRmIiwiTTIyNCA5NmExNjAgMTYwIDAgMSAwIDAgMzIwIDE2MCAxNjAgMCAxIDAgMC0zMjB6TTQ0OCAyNTZhMjI0IDIyNCAwIDEgMSAtNDQ4IDAgMjI0IDIyNCAwIDEgMSA0NDggMHoiXX0saEh0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBhbGV0dGUiLGljb246WzUxMiw1MTIsWzEyNzkxMl0sImY1M2YiLCJNNTEyIDI1NmMwIC45IDAgMS44IDAgMi43LS40IDM2LjUtMzMuNiA2MS4zLTcwLjEgNjEuM0wzNDQgMzIwYy0yNi41IDAtNDggMjEuNS00OCA0OCAwIDMuNCAuNCA2LjcgMSA5LjkgMi4xIDEwLjIgNi41IDIwIDEwLjggMjkuOSA2LjEgMTMuOCAxMi4xIDI3LjUgMTIuMSA0MiAwIDMxLjgtMjEuNiA2MC43LTUzLjQgNjItMy41IC4xLTcgLjItMTAuNiAuMi0xNDEuNCAwLTI1Ni0xMTQuNi0yNTYtMjU2UzExNC42IDAgMjU2IDAgNTEyIDExNC42IDUxMiAyNTZ6TTEyOCAyODhhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMC05NmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTI4OCA5NmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem05NiA5NmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6Il19LGZIdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ1bmxvY2siLGljb246WzM4NCw1MTIsWzEyODI3NV0sImYwOWMiLCJNMTI4IDk2YzAtMzUuMyAyOC43LTY0IDY0LTY0IDMxLjcgMCA1OCAyMyA2My4xIDUzLjMgMi45IDE3LjQgMTkuNCAyOS4yIDM2LjkgMjYuM3MyOS4yLTE5LjQgMjYuMy0zNi45QzMwOC4xIDE0LjEgMjU1LjUtMzIgMTkyLTMyIDEyMS4zLTMyIDY0IDI1LjMgNjQgOTZsMCA2NGMtMzUuMyAwLTY0IDI4LjctNjQgNjRMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjU2IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yMjRjMC0zNS4zLTI4LjctNjQtNjQtNjRsLTE5MiAwIDAtNjR6Il19LHA5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJlYXItbGlzdGVuIixpY29uOls1MTIsNTEyLFsiYXNzaXN0aXZlLWxpc3RlbmluZy1zeXN0ZW1zIl0sImYyYTIiLCJNMzc5LjYgLjNjLTguOSAxLjItMTcuMiA2LjItMjIuNCAxNC4xLTYuOCAxMC40LTcgMjQuMS0uNCAzNC42IDUuNiA4LjkgMTUuNSAxMi43IDIzLjggMTguNSA3LjUgNS4yIDE3LjYgMTMuMiAyNy43IDI0LjIgMjAgMjEuNyAzOS41IDU0LjMgMzkuNSAxMDAuMyAwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyYzAtNjYtMjguNS0xMTMuNC01Ni41LTE0My43LTEzLjktMTUuMS0yNy44LTI2LjEtMzguMy0zMy4zLTExLTcuNi0yMy41LTE2LjYtMzcuNi0xNC43ek0yNDAgMTI4Yy01Ny42IDAtMTA1LjEgNDMuNi0xMTEuMyA5OS41LTEuOSAxNy42LTE3LjggMzAuMi0zNS4zIDI4LjNzLTMwLjItMTcuOC0yOC4zLTM1LjNjOS43LTg4IDg0LjMtMTU2LjUgMTc0LjktMTU2LjUgOTcuMiAwIDE3NiA3OC44IDE3NiAxNzYgMCA0Ni0xNy43IDg3LjktNDYuNiAxMTkuMy0xMiAxMy0xNy40IDI0LjgtMTcuNCAzNC43bDAgNi4xYzAgNjEuOS01MC4xIDExMi0xMTIgMTEyLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC02LjFjMC0zMi45IDE3LjQtNTkuNiAzNC40LTc4IDE4LjQtMjAgMjkuNi00Ni42IDI5LjYtNzUuOSAwLTYxLjktNTAuMS0xMTItMTEyLTExMnpNMCA0ODBhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTYwLTk2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpNODYuNiAzNjEuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsNjQgNjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtNjQtNjR6TTI0MCAyMDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyIDAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0YzAtNDQuMiAzNS44LTgwIDgwLTgwczgwIDM1LjggODAgODBjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRjMC0xNy43LTE0LjMtMzItMzItMzJ6Il19LG1IdD1wOWUsZ0h0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNvZGUtcHVsbC1yZXF1ZXN0IixpY29uOls1MTIsNTEyLFtdLCJlMTNjIiwiTTMyOCAyNGMwLTkuNy01LjgtMTguNS0xNC44LTIyLjJTMjkzLjkgLjIgMjg3IDdMMjMxIDYzYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWw1NiA1NmM2LjkgNi45IDE3LjIgOC45IDI2LjIgNS4yUzMyOCAxNDUuNyAzMjggMTM2bDAtMjQgMjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDIxNC43Yy0yOC4zIDEyLjMtNDggNDAuNS00OCA3My4zIDAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC0zMi44LTE5LjctNjEtNDgtNzMuM0w0NDggMTQ0YzAtNTMtNDMtOTYtOTYtOTZsLTI0IDAgMC0yNHpNNzIgODBhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptNTYgNzMuM2MyOC4zLTEyLjMgNDgtNDAuNSA0OC03My4zIDAtNDQuMi0zNS44LTgwLTgwLTgwUzE2IDM1LjggMTYgODBjMCAzMi44IDE5LjcgNjEgNDggNzMuM2wwIDIwNS4zYy0yOC4zIDEyLjMtNDggNDAuNS00OCA3My4zIDAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC0zMi44LTE5LjctNjEtNDgtNzMuM2wwLTIwNS4zek03MiA0MzJhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptMzQ0LTI0YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHoiXX0sYkh0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImtleSIsaWNvbjpbNTEyLDUxMixbMTI4MjczXSwiZjA4NCIsIk0zMzYgMzUyYzk3LjIgMCAxNzYtNzguOCAxNzYtMTc2UzQzMy4yIDAgMzM2IDAgMTYwIDc4LjggMTYwIDE3NmMwIDE4LjcgMi45IDM2LjggOC4zIDUzLjdMNyAzOTFjLTQuNSA0LjUtNyAxMC42LTcgMTdsMCA4MGMwIDEzLjMgMTAuNyAyNCAyNCAyNGw4MCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0bDAtNDAgNDAgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNGwwLTQwIDQwIDBjNi40IDAgMTIuNS0yLjUgMTctN2wzMy4zLTMzLjNjMTYuOSA1LjQgMzUgOC4zIDUzLjcgOC4zek0zNzYgOTZhNDAgNDAgMCAxIDEgMCA4MCA0MCA0MCAwIDEgMSAwLTgweiJdfSx2SHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic2t1bGwiLGljb246WzUxMiw1MTIsWzEyODEyOF0sImY1NGMiLCJNNDE2IDQyNy40YzU4LjUtNDQgOTYtMTExLjYgOTYtMTg3LjQgMC0xMzIuNS0xMTQuNi0yNDAtMjU2LTI0MFMwIDEwNy41IDAgMjQwYzAgNzUuOCAzNy41IDE0My40IDk2IDE4Ny40TDk2IDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGwzMiAwIDAtNDBjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDQwIDY0IDAgMC00MGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0bDAgNDAgMzIgMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTM2LjZ6TTk2IDI1NmE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6bTI1Ni02NGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHoiXX0saDllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im1hcnMtc3Ryb2tlLXVwIixpY29uOlszODQsNTEyLFs5ODk2LCJtYXJzLXN0cm9rZS12Il0sImYyMmEiLCJNMTkyIDI1NmExMTIgMTEyIDAgMSAwIDAgMjI0IDExMiAxMTIgMCAxIDAgMC0yMjR6TTE2IDM2OGMwLTg2LjMgNjIuMS0xNTguMSAxNDQuMS0xNzMuMS0uMS0uOS0uMS0xLjktLjEtMi45bDAtMTYtMzIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwzMiAwIDAtNjEuNC0yOCAyMi40Yy0xMy44IDExLTMzLjkgOC44LTQ1LTVzLTguOC0zMy45IDUtNDVsODAtNjRjMTEuNy05LjMgMjguMy05LjMgNDAgMGw4MCA2NGMxMy44IDExIDE2IDMxLjIgNSA0NXMtMzEuMiAxNi00NSA1bC0yOC0yMi40IDAgNjEuNCAzMiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0zMiAwIDAgMTZjMCAxIDAgMS45LS4xIDIuOSA4MiAxNSAxNDQuMSA4Ni44IDE0NC4xIDE3My4xIDAgOTcuMi03OC44IDE3Ni0xNzYgMTc2UzE2IDQ2NS4yIDE2IDM2OHoiXX0seEh0PWg5ZSxmOWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmlyZS1mbGFtZS1zaW1wbGUiLGljb246WzM4NCw1MTIsWyJidXJuIl0sImY0NmEiLCJNMzcyLjUgMjU2LjVsLS43LTEuOUMzMzcuOCAxNjAuOCAyODIgNzYuNSAyMDkuMSA4LjVsLTMuMy0zQzIwMi4xIDIgMTk3LjEgMCAxOTIgMHMtMTAuMSAyLTEzLjggNS41bC0zLjMgM0MxMDIgNzYuNSA0Ni4yIDE2MC44IDEyLjIgMjU0LjZsLS43IDEuOUMzLjkgMjc3LjMgMCAyOTkuNCAwIDMyMS42IDAgNDI2LjcgODYuOCA1MTIgMTkyIDUxMnMxOTItODUuMyAxOTItMTkwLjRjMC0yMi4yLTMuOS00NC4yLTExLjUtNjUuMXptLTkwLjggNDkuNWM0LjEgOS4zIDYuMiAxOS40IDYuMiAyOS41IDAgNTMtNDMgOTYuNS05NiA5Ni41cy05Ni00My41LTk2LTk2LjVjMC0xMC4xIDIuMS0yMC4zIDYuMi0yOS41bDEuOS00LjNjMTUuOC0zNS40IDM3LjktNjcuNyA2NS4zLTk1LjFsOC45LTguOWMzLjYtMy42IDguNS01LjYgMTMuNi01LjZzMTAgMiAxMy42IDUuNmw4LjkgOC45YzI3LjQgMjcuNCA0OS42IDU5LjcgNjUuMyA5NS4xbDEuOSA0LjN6Il19LHlIdD1mOWUsd0h0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRyZWUiLGljb246WzQ0OCw1MTIsWzEyNzc5NF0sImYxYmIiLCJNMjI0LTMyYzcgMCAxMy43IDMuMSAxOC4zIDguNWwxMzYgMTYwYzYuMSA3LjEgNy40IDE3LjEgMy41IDI1LjZTMzY5LjQgMTc2IDM2MCAxNzZsLTI0LjkgMCA3NS4yIDg4LjVjNi4xIDcuMSA3LjQgMTcuMSAzLjUgMjUuNlM0MDEuNCAzMDQgMzkyIDMwNGwtMzguNSAwIDg4LjggMTA0LjVjNi4xIDcuMSA3LjQgMTcuMSAzLjUgMjUuNlM0MzMuNCA0NDggNDI0IDQ0OGwtMTY4IDAgMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTY0LTE2OCAwYy05LjQgMC0xNy45LTUuNC0yMS44LTEzLjlzLTIuNi0xOC41IDMuNS0yNS42TDk0LjUgMzA0IDU2IDMwNGMtOS40IDAtMTcuOS01LjQtMjEuOC0xMy45cy0yLjYtMTguNSAzLjUtMjUuNkwxMTIuOSAxNzYgODggMTc2Yy05LjQgMC0xNy45LTUuNC0yMS44LTEzLjlzLTIuNi0xOC41IDMuNS0yNS42bDEzNi0xNjBDMjEwLjMtMjguOSAyMTctMzIgMjI0LTMyeiJdfSxrSHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic21vZyIsaWNvbjpbNTc2LDUxMixbXSwiZjc1ZiIsIk0xNzYgMjg4Qzk2LjUgMjg4IDMyIDIyMy41IDMyIDE0NFM5Ni41IDAgMTc2IDBjMjcuMiAwIDUyLjYgNy41IDc0LjMgMjAuNiAyMC4xLTEzIDQ0LTIwLjYgNjkuNy0yMC42IDQ3LjQgMCA4OC43IDI1LjcgMTEwLjkgNjRsMS4xIDBjNjEuOSAwIDExMiA1MC4xIDExMiAxMTIgMCA2MC4zLTQ3LjYgMTA5LjQtMTA3LjIgMTExLjktMjIuNiAyMC01Mi4zIDMyLjEtODQuOCAzMi4xLTMyLjUgMC02Mi4xLTEyLjEtODQuNy0zMkwxNzYgMjg4ek01MTIgMzkyYzAgMTMuMy0xMC43IDI0LTI0IDI0TDI0IDQxNmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGw0NjQgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHpNODggNDY0bDgwIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTgwIDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6bTE3NiAwbDI4OCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0yODggMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHoiXX0sU0h0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InMiLGljb246WzMyMCw1MTIsWzExNV0sIjUzIiwiTTAgMTU3LjVDMCA4OC4yIDU2LjIgMzIgMTI1LjUgMzJMMjcyIDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDEyNS41IDk2Yy0zNCAwLTYxLjUgMjcuNS02MS41IDYxLjUgMCAzMSAyMy4xIDU3LjIgNTMuOSA2MUwyMTAuMSAyMzBDMjcyLjkgMjM3LjkgMzIwIDI5MS4yIDMyMCAzNTQuNSAzMjAgNDIzLjggMjYzLjggNDgwIDE5NC41IDQ4MEw0OCA0ODBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsMTQ2LjUgMGMzNCAwIDYxLjUtMjcuNSA2MS41LTYxLjUgMC0zMS0yMy4xLTU3LjItNTMuOS02MUwxMDkuOSAyODJDNDcuMSAyNzQuMSAwIDIyMC44IDAgMTU3LjV6Il19LF9IdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJqZWRpIixpY29uOls1NzYsNTEyLFtdLCJmNjY5IiwiTTI0NiAzMTUuN2wtMjEuMi0zMS45Yy0yLjEtMy4yLTEuNy03LjQgMS0xMC4xczYuOS0zLjEgMTAuMS0xbDI5LjUgMTkuN2MyLjEgMS40IDQuOS0uMSA1LTIuNkwyNzkuNyA4Yy4xLTQuNSAzLjgtOCA4LjMtOHM4LjEgMy41IDguMyA4bDkuNCAyODEuOWMuMSAyLjUgMi45IDMuOSA1IDIuNmwyOS41LTE5LjdjMy4yLTIuMSA3LjQtMS43IDEwLjEgMXMzLjEgNi45IDEgMTAuMUwzMzAgMzE1LjdjLTEuMyAxLjktLjIgNC41IDIgNC45bDM3LjYgNy41YzMuNyAuNyA2LjQgNCA2LjQgNy44cy0yLjcgNy4xLTYuNCA3LjhMMzMyIDM1MS40Yy0yLjIgLjQtMy4zIDMtMiA0LjlsMjEuMiAzMS45YzIuMSAzLjIgMS43IDcuNC0xIDEwLjFzLTYuOSAzLjEtMTAuMSAxbC0yNi4zLTE3LjZjLTIuMi0xLjQtNS4xIC4yLTUgMi44bDIuMSA2MS41YzU5LjgtMTAuOCAxMDUuMS02My4xIDEwNS4xLTEyNiAwLTM3LTE1LjctNzAuNC00MC44LTkzLjctNy02LjUtNi41LTE4LjYgMS0yNC40IDM0LTI2LjMgNTUuOC02Ny41IDU1LjgtMTEzLjkgMC0xNi44LTIuOS0zMy04LjItNDgtNC42LTEzIDEwLjItMzAgMjEuNC0yMiA1My41IDM4IDkyLjcgOTQuOCAxMDcuOCAxNjAuNyAuNSAyLjEtLjIgNC4zLTEuNyA1LjlsLTI4LjQgMjguNGMtNCA0LTEuMiAxMC45IDQuNSAxMC45bDI2IDBjMy40IDAgNi4yIDIuNiA2LjMgNiAuMSAzLjMgLjIgNi42IC4yIDEwIDAgMTcuNS0xLjcgMzQuNy00LjggNTEuMy0uMiAxLjItLjkgMi40LTEuNyAzLjNsLTQ2LjUgNDYuNWMtNCA0LTEuMiAxMC45IDQuNSAxMC45bDE0LjYgMGM0LjYgMCA3LjcgNC44IDUuNyA5LTQ0LjUgODkuNS0xMzYuOSAxNTEtMjQzLjcgMTUxUzg4LjggNDUwLjUgNDQuMyAzNjFjLTIuMS00LjIgMS05IDUuNy05bDE0LjYgMGM1LjcgMCA4LjYtNi45IDQuNS0xMC45TDIyLjYgMjk0LjZjLS45LS45LTEuNS0yLTEuNy0zLjMtMy4yLTE2LjYtNC44LTMzLjgtNC44LTUxLjMgMC0zLjMgLjEtNi43IC4yLTEwIC4xLTMuNCAyLjktNiA2LjMtNmwyNiAwYzUuNyAwIDguNi02LjkgNC41LTEwLjlMMjQuNiAxODQuNmMtMS41LTEuNS0yLjItMy44LTEuNy01LjkgMTUuMi02NiA1NC4zLTEyMi44IDEwNy44LTE2MC43IDExLjMtOCAyNiA4LjkgMjEuNCAyMi01LjMgMTUtOC4yIDMxLjItOC4yIDQ4IDAgNDYuMyAyMS45IDg3LjUgNTUuOCAxMTMuOSA3LjUgNS44IDggMTcuOSAxIDI0LjQtMjUuMSAyMy40LTQwLjggNTYuNy00MC44IDkzLjcgMCA2Mi45IDQ1LjQgMTE1LjIgMTA1LjEgMTI2bDIuMS02MS41Yy4xLTIuNi0yLjgtNC4yLTUtMi44bC0yNi4zIDE3LjZjLTMuMiAyLjEtNy40IDEuNy0xMC4xLTFzLTMuMS02LjktMS0xMC4xTDI0NiAzNTYuM2MxLjMtMS45IC4yLTQuNS0yLTQuOWwtMzcuNi03LjVjLTMuNy0uNy02LjQtNC02LjQtNy44czIuNy03LjEgNi40LTcuOGwzNy42LTcuNWMyLjItLjQgMy4zLTMgMi00Ljl6Il19LG05ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwZXJzb24taGlraW5nIixpY29uOls0NDgsNTEyLFsiaGlraW5nIl0sImY2ZWMiLCJNMTkyLTMyYTU2IDU2IDAgMSAxIDAgMTEyIDU2IDU2IDAgMSAxIDAtMTEyek0xMjggMTczLjZjMC0zNCAyNy42LTYxLjYgNjEuNi02MS42IDIwLjMgMCAzOS43IDguMSA1NCAyMi40bDQ4LjIgNDguMmM2IDYgMTQuMSA5LjQgMjIuNiA5LjRsMzcuNSAwYzUuOCAwIDExLjMgMS42IDE2IDQuM2wwLTc2LjNjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDQwMGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTI2OC4zYy00LjcgMi43LTEwLjIgNC4zLTE2IDQuM2wtMzcuNSAwYy0yNS41IDAtNDkuOS0xMC4xLTY3LjktMjguMWwtNi42LTYuNiAwIDEwOS4yIDM0LjUgMjkuNmMxNy43IDE1LjIgMjkuMyAzNi4yIDMyLjYgNTkuM2wxMi42IDg4LjFjMi41IDE3LjUtOS43IDMzLjctMjcuMiAzNi4ycy0zMy43LTkuNy0zNi4yLTI3LjJsLTEyLjYtODguMWMtMS4xLTcuNy01LTE0LjctMTAuOS0xOS44bC03MS40LTYxLjJjLTIxLjMtMTguMi0zMy41LTQ0LjktMzMuNS03Mi45bDAtMTAxem0tNC44IDIwMy43YzIuMyAyLjMgNC43IDQuNCA3LjEgNi41bDQ0LjkgMzguNWMtMy42IDguNC04LjUgMTYuMy0xNC40IDIzLjRMODguNiA1MzIuNWMtMTEuMyAxMy42LTMxLjUgMTUuNC00NS4xIDQuMXMtMTUuNC0zMS41LTQuMS00NS4xbDcyLjMtODYuN2MyLjYtMy4xIDQuNS02LjYgNS44LTEwLjRsNS43LTE3LjF6TTAgMTYwYzAtMzUuMyAyOC43LTY0IDY0LTY0IDE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMTI4YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0zMiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTk2eiJdfSxNSHQ9bTllLHpIdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJhcnJvd3MtdXAtdG8tbGluZSIsaWNvbjpbNDQ4LDUxMixbXSwiZTRjMiIsIk0zMiAwQzE0LjMgMCAwIDE0LjMgMCAzMlMxNC4zIDY0IDMyIDY0bDM4NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMyUzQzMy43IDAgNDE2IDBMMzIgMHptODYuNiAxMzcuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTY0IDY0Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDY0IDIzNy4zIDY0IDQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMjQyLjcgOS40IDkuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC02NC02NHptMjU2IDBjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC02NCA2NGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw5LjQtOS40IDAgMjQyLjdjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTI0Mi43IDkuNCA5LjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtNjQtNjR6Il19LENIdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJtYXJzLWRvdWJsZSIsaWNvbjpbNjQwLDUxMixbOTg5MV0sImYyMjciLCJNMjg4IDMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyTDQ0OCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMTI4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtNTAuNy05NSA5NWMxOS41IDI4LjQgMzEgNjIuNyAzMSA5OS44IDAgOTcuMi03OC44IDE3Ni0xNzYgMTc2UzAgNDAxLjIgMCAzMDQgNzguOCAxMjggMTc2IDEyOGMzNyAwIDcxLjQgMTEuNCA5OS44IDMxbDk1LTk1LTUwLjcgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTE3NiA0MTZhMTEyIDExMiAwIDEgMCAwLTIyNCAxMTIgMTEyIDAgMSAwIDAgMjI0em0xNjAgNjRjLTYuOCAwLTEzLjQtLjQtMjAtMS4xIDIzLjYtMTguOSA0My4zLTQyLjUgNTcuNi02OS40IDQzLjMtMTUuNSA3NC40LTU2LjkgNzQuNC0xMDUuNSAwLTI1LjItOC4zLTQ4LjUtMjIuNC02Ny4yIDcuMSAyLjEgMTQuNiAzLjIgMjIuNCAzLjIgMTcgMCAzMi43LTUuMyA0NS43LTE0LjMgMTEuNyAyMy42IDE4LjMgNTAuMiAxOC4zIDc4LjMgMCA5Ny4yLTc4LjggMTc2LTE3NiAxNzZ6TTUyOCAxNTcuM0w1MjggMzJjMC0xMS40LTIuNC0yMi4yLTYuNy0zMkw2MDggMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDEyOGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTUwLjctNDggNDh6Il19LFRIdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0aGVybW9tZXRlciIsaWNvbjpbNTEyLDUxMixbXSwiZjQ5MSIsIk05NiAzODIuMWwwLTg4LjhjMC0xNC45IDUuOS0yOS4xIDE2LjQtMzkuNmwyMS43LTIxLjcgNDEgNDFjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC00MS00MSA0Ni4xLTQ2LjEgNDEgNDFjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC00MS00MSA0Ni4xLTQ2LjEgNDEgNDFjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC00MS00MSA3LjgtNy44YzE5LjQtMTkuNCA0NS42LTMwLjIgNzMtMzAuMiA1NyAwIDEwMy4yIDQ2LjIgMTAzLjIgMTAzLjIgMCAyNy40LTEwLjkgNTMuNi0zMC4yIDczTDI1OC4zIDM5OS42Yy0xMC41IDEwLjUtMjQuNyAxNi40LTM5LjYgMTYuNGwtODguOCAwLTg5IDg5Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMFMtMi4zIDQ4MC40IDcgNDcxbDg5LTg5eiJdfSxnOWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGFpbnRicnVzaCIsaWNvbjpbNTc2LDUxMixbMTI4Mzk2LCJwYWludC1icnVzaCJdLCJmMWZjIiwiTTQ4MC41IDEwLjNMMjU5LjEgMTU4Yy0yOS4xIDE5LjQtNDcuNiA1MC45LTUwLjYgODUuMyA2Mi4zIDEyLjggMTExLjQgNjEuOSAxMjQuMyAxMjQuMyAzNC41LTMgNjUuOS0yMS41IDg1LjMtNTAuNkw1NjUuNyA5NS41YzYuNy0xMC4xIDEwLjMtMjEuOSAxMC4zLTM0LjEgMC0zMy45LTI3LjUtNjEuNC02MS40LTYxLjQtMTIuMSAwLTI0IDMuNi0zNC4xIDEwLjN6TTI4OCA0MDBjMC02MS45LTUwLjEtMTEyLTExMi0xMTJTNjQgMzM4LjEgNjQgNDAwYzAgMy45IC4yIDcuOCAuNiAxMS42IDEuOCAxNy41LTEwLjIgMzYuNC0yNy44IDM2LjRMMzIgNDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDE0NCAwYzYxLjkgMCAxMTItNTAuMSAxMTItMTEyeiJdfSwkSHQ9ZzllLERIdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJuZXV0ZXIiLGljb246WzM4NCw1MTIsWzk5MDZdLCJmMjJjIiwiTTgwIDE3NmExMTIgMTEyIDAgMSAxIDIyNCAwIDExMiAxMTIgMCAxIDEgLTIyNCAwek0yMjMuOSAzNDkuMUMzMDUuOSAzMzQuMSAzNjggMjYyLjMgMzY4IDE3NiAzNjggNzguOCAyODkuMiAwIDE5MiAwUzE2IDc4LjggMTYgMTc2YzAgODYuMyA2Mi4xIDE1OC4xIDE0NC4xIDE3My4xLS4xIDEtLjEgMS45LS4xIDIuOWwwIDE2MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTYwYzAtMSAwLTEuOS0uMS0yLjl6Il19LGI5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzcXVhcmUtcGhvbmUtZmxpcCIsaWNvbjpbNDQ4LDUxMixbInBob25lLXNxdWFyZS1hbHQiXSwiZjg3YiIsIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyem0yMzIgOTYuN2wyLjggLjhjMzIuMyA4LjggNTkuOSA0MC4xIDUxLjggNzguMi0xOC41IDg3LjUtODcuNCAxNTYuMy0xNzQuOSAxNzQuOS0zOC4xIDguMS02OS40LTE5LjUtNzguMi01MS44bC0uOC0yLjhjLTIuNy05LjggMi40LTIwLjEgMTEuOC0yNGw0OC43LTIwLjNjOC4zLTMuNCAxNy44LTEuMSAyMy41IDUuOWwxOS4zIDIzLjZjMzUuMS0xNy40IDYzLjQtNDYuNiA3OS42LTgyLjRsLTIyLjEtMThjLTYuOS01LjctOS4zLTE1LjItNS45LTIzLjVsMjAuMy00OC43YzMuOS05LjQgMTQuMi0xNC40IDI0LTExLjh6Il19LExIdD1iOWUsdjllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZhY2UtZ3Jpbi10b25ndWUtc3F1aW50IixpY29uOls1MTIsNTEyLFsxMjg1NDEsImdyaW4tdG9uZ3VlLXNxdWludCJdLCJmNThhIiwiTTAgMjU2YzAgMTA0LjQgNjIuNSAxOTQuMiAxNTIuMiAyMzQuMS01LjMtMTMtOC4yLTI3LjItOC4yLTQyLjFsMC02MS43Yy0xNi45LTE2LjUtMzAuMS0zNi43LTM4LjMtNTkuMy00LjMtMTEuOCA3LjctMjEuOCAxOS42LTE4LjEgMzkuMiAxMi4yIDgzLjcgMTkuMSAxMzAuNyAxOS4xczkxLjUtNi45IDEzMC43LTE5LjFjMTEuOS0zLjcgMjMuOSA2LjMgMTkuNiAxOC4xLTguMyAyMi42LTIxLjUgNDIuOC0zOC4zIDU5LjNsMCA2MS43YzAgMTQuOS0yLjkgMjkuMS04LjIgNDIuMSA4OS43LTM5LjggMTUyLjItMTI5LjYgMTUyLjItMjM0LjEgMC0xNDEuNC0xMTQuNi0yNTYtMjU2LTI1NlMwIDExNC42IDAgMjU2em0xMjUuOC05MS43Yy02LjItNS4yLTcuNi0xNC4zLTMuMS0yMS4xczEzLjMtOS4yIDIwLjYtNS41bDc5LjYgNDBjNS40IDIuNyA4LjggOC4yIDguOCAxNC4zcy0zLjQgMTEuNi04LjggMTQuM2wtNzkuNiA0MGMtNy4zIDMuNi0xNi4xIDEuMy0yMC42LTUuNXMtMy4xLTE1LjkgMy4xLTIxLjFMMTU5IDE5MiAxMjUuOCAxNjQuM3ptMjYzLjYtMjEuMWM0LjUgNi44IDMuMSAxNS45LTMuMSAyMS4xTDM1MyAxOTIgMzg2LjIgMjE5LjdjNi4yIDUuMiA3LjYgMTQuMyAzLjEgMjEuMXMtMTMuMyA5LjItMjAuNiA1LjVsLTc5LjYtNDBjLTUuNC0yLjctOC44LTguMi04LjgtMTQuM3MzLjQtMTEuNiA4LjgtMTQuM2w3OS42LTQwYzcuMy0zLjYgMTYuMS0xLjMgMjAuNiA1LjV6TTMyMCA0NDhsMC00NS40YzAtMTQuNy0xMS45LTI2LjYtMjYuNi0yNi42bC0yIDBjLTExLjMgMC0yMS4xIDcuOS0yMy42IDE4LjktMi44IDEyLjYtMjAuOCAxMi42LTIzLjYgMC0yLjUtMTEuMS0xMi4zLTE4LjktMjMuNi0xOC45bC0yIDBjLTE0LjcgMC0yNi42IDExLjktMjYuNiAyNi42bDAgNDUuNGMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0eiJdfSxFSHQ9djllLFBIdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjb21tZW50LWRvbGxhciIsaWNvbjpbNTEyLDUxMixbXSwiZjY1MSIsIk0yNTYgNDgwYzE0MS40IDAgMjU2LTEwNy41IDI1Ni0yNDBTMzk3LjQgMCAyNTYgMCAwIDEwNy41IDAgMjQwYzAgNTQuMyAxOS4yIDEwNC4zIDUxLjYgMTQ0LjVMMi44IDQ3Ni44Yy00LjggOS0zLjMgMjAgMy42IDI3LjVzMTcuOCA5LjggMjcuMSA1LjhsMTE4LjQtNTAuN0MxODMuNyA0NzIuNiAyMTguOSA0ODAgMjU2IDQ4MHptNC0zNTJjMTEgMCAyMCA5IDIwIDIwbDAgNCA4IDBjMTEgMCAyMCA5IDIwIDIwcy05IDIwLTIwIDIwbC00Ny41IDBjLTYuOSAwLTEyLjUgNS42LTEyLjUgMTIuNSAwIDYuMSA0LjQgMTEuMyAxMC40IDEyLjNsNDEuNyA3YzI1LjMgNC4yIDQzLjkgMjYuMSA0My45IDUxLjggMCAyNi4xLTE5IDQ3LjctNDQgNTEuOGwwIDQuN2MwIDExLTkgMjAtMjAgMjBzLTIwLTktMjAtMjBsMC00LTI0IDBjLTExIDAtMjAtOS0yMC0yMHM5LTIwIDIwLTIwbDU1LjUgMGM2LjkgMCAxMi41LTUuNiAxMi41LTEyLjUgMC02LjEtNC40LTExLjMtMTAuNC0xMi4zbC00MS43LTdjLTI1LjMtNC4yLTQzLjktMjYuMS00My45LTUxLjggMC0yOC44IDIzLjItNTIuMiA1Mi01Mi41bDAtNGMwLTExIDktMjAgMjAtMjB6Il19LElIdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoaXBwbyIsaWNvbjpbNjQwLDUxMixbMTI5NDM1XSwiZjZlZCIsIk00MDcgNDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMTcuMiAxNy4yYzEuOS0uMSAzLjktLjIgNS44LS4ybDMyIDBjMTEuMiAwIDIxLjkgMi4zIDMxLjYgNi41TDU0MyA1NWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlMNTY0IDEwMS45YzcuNiAxMi4yIDEyIDI2LjcgMTIgNDIuMSAwIDEwLjIgNy40IDE4LjggMTYuNyAyMyAyNy45IDEyLjUgNDcuMyA0MC41IDQ3LjMgNzMgMCAyNi4yLTEyLjYgNDkuNC0zMiA2NGwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMTYtNjQgMCAwIDE2YzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMTcuNmMtMTEuOC0yLjQtMjIuNy03LjQtMzItMTQuNC0xLjUtMS4xLTIuOS0yLjMtNC4zLTMuNS0xNy0xNC43LTI3LjctMzYuNC0yNy43LTYwLjUgMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZjMCA0NC43IDI2LjIgODMuMiA2NCAxMDEuMmwwIDEwLjhjMCAxNy43IDE0LjMgMzIgMzIgMzJsMzIgMCAwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMybC02NCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTc2Yy0xOS44IDcuNy00MS40IDEyLTY0IDEycy00NC4yLTQuMy02NC0xMmwwIDc2YzAgMTcuNy0xNC4zIDMyLTMyIDMybC02NCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTExOC45LTE4LjEgNDAuN2MtNS40IDEyLjEtMTkuNiAxNy42LTMxLjcgMTIuMlMtMy4zIDM2Mi40IDIuMSAzNTAuM0wyNCAzMDAuOWM1LjMtMTEuOSA4LTI0LjcgOC0zNy43IDAtMTA3LjUgODUuMi0xOTUuMiAxOTEuOC0xOTkuMWwuMi0uMSA2NCAwYzQxLjcgMCA4My40IDEyLjEgMTE3LjIgMjUuNyAxLjctMS44IDMuNS0zLjYgNS4zLTUuMkw0MDcgODFjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45em03MyAxODVhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHptODggMjRhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4ek00ODAgMTQ0YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6bTQ4IDE2YTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnoiXX0sQUh0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJvd2wtZm9vZCIsaWNvbjpbNTEyLDUxMixbXSwiZTRjNiIsIk0wIDE3NmMwLTM1LjMgMjguNy02NCA2NC02NCAuNSAwIDEuMSAwIDEuNiAwIDcuNC0zNi41IDM5LjctNjQgNzguNC02NCAxNSAwIDI5IDQuMSA0MC45IDExLjIgMTMuMy0yNS43IDQwLjEtNDMuMiA3MS4xLTQzLjJzNTcuOCAxNy42IDcxLjEgNDMuMmMxMi03LjEgMjYtMTEuMiA0MC45LTExLjIgMzguNyAwIDcxIDI3LjUgNzguNCA2NCAuNSAwIDEuMSAwIDEuNiAwIDM1LjMgMCA2NCAyOC43IDY0IDY0IDAgMTEuNy0zLjEgMjIuNi04LjYgMzJMOC42IDIwOEMzLjEgMTk4LjYgMCAxODcuNyAwIDE3NnpNMCAyODMuNEMwIDI2OC4zIDEyLjMgMjU2IDI3LjQgMjU2bDQ1Ny4xIDBjMTUuMSAwIDI3LjQgMTIuMyAyNy40IDI3LjQgMCA3MC41LTQ0LjQgMTMwLjctMTA2LjcgMTU0LjFMNDAzLjUgNDUyYy0yIDE2LTE1LjYgMjgtMzEuOCAyOGwtMjMxLjUgMGMtMTYuMSAwLTI5LjgtMTItMzEuOC0yOGwtMS44LTE0LjRDNDQuNCA0MTQuMSAwIDM1My45IDAgMjgzLjR6Il19LE5IdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzcXVhcmUtdmlydXMiLGljb246WzQ0OCw1MTIsW10sImU1NzgiLCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMnptMTYwIDgwYzEzLjMgMCAyNCAxMC43IDI0IDI0IDAgMjIuOSAyNy43IDM0LjQgNDMuOSAxOC4yIDkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWMtMTYuMiAxNi4yLTQuNyA0My45IDE4LjIgNDMuOSAxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGMtMjIuOSAwLTM0LjQgMjcuNy0xOC4yIDQzLjkgOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGMtMTYuMi0xNi4yLTQzLjktNC43LTQzLjkgMTguMiAwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGMwLTIyLjktMjcuNy0zNC40LTQzLjktMTguMi05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45YzE2LjItMTYuMiA0LjctNDMuOS0xOC4yLTQzLjktMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGMyMi45IDAgMzQuNC0yNy43IDE4LjItNDMuOS05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBjMTYuMiAxNi4yIDQzLjkgNC43IDQzLjktMTguMiAwLTEzLjMgMTAuNy0yNCAyNC0yNHpNMTkyIDI0OGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bTg4IDQwYTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6Il19LFJIdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjbG91ZC1zdW4tcmFpbiIsaWNvbjpbNjQwLDUxMixbMTI3NzgyXSwiZjc0MyIsIk0yNTQuOSA0NDguMmM0LjItMTIuNiAxNy44LTE5LjQgMzAuMy0xNS4yIDEyLjYgNC4yIDE5LjQgMTcuOCAxNS4yIDMwLjRsLTIxLjQgNjQuMWMtNC4yIDEyLjYtMTcuOCAxOS40LTMwLjQgMTUuMnMtMTkuNC0xNy44LTE1LjItMzAuM2wyMS40LTY0LjJ6bTEyMCAwYzQuMi0xMi42IDE3LjgtMTkuNCAzMC4zLTE1LjIgMTIuNiA0LjIgMTkuNCAxNy44IDE1LjIgMzAuNGwtMjEuNCA2NC4xYy00LjIgMTIuNi0xNy44IDE5LjQtMzAuNCAxNS4ycy0xOS40LTE3LjgtMTUuMi0zMC4zbDIxLjQtNjQuMnptMTIwIDBjNC4yLTEyLjYgMTcuOC0xOS40IDMwLjMtMTUuMiAxMi42IDQuMiAxOS40IDE3LjggMTUuMiAzMC40bC0yMS40IDY0LjFjLTQuMiAxMi42LTE3LjggMTkuNC0zMC40IDE1LjJzLTE5LjQtMTcuOC0xNS4yLTMwLjNsMjEuNC02NC4yek00NDguMyAxMjhjNDQuMiAwIDgwIDM1LjggODAgODAgMCA3LjUtMS4xIDE0LjctMyAyMS41IDI5LjggMTEuNiA1MSA0MC42IDUxIDc0LjUgMCA0NC4yLTM1LjggODAtODAgODBsLTE5MiAwLTguMi0uNGMtNDAuMy00LjEtNzEuOC0zOC4yLTcxLjgtNzkuNiAwLTM5IDI3LjktNzEuNSA2NC45LTc4LjUtLjUtMy4xLS45LTYuMi0uOS05LjUgMC0zMC45IDI1LjEtNTYgNTYtNTYgMTIuNCAwIDIzLjkgNC4xIDMzLjIgMTAuOSAxMy40LTI1LjUgNDAuMS00Mi45IDcwLjgtNDIuOXpNMjQwLjMtMzEuOGM1LjMgMCAxMC4zIDIuNyAxMy4zIDcuMWw0Ny4zIDcwLjQgODMuMy0xNi4zYzUuMi0xIDEwLjYgLjcgMTQuMyA0LjQgMy44IDMuOCA1LjQgOS4yIDQuNCAxNC40bC04LjYgNDMuOGMtMTEuOSA1LjUtMjIuOCAxMi45LTMyLjQgMjEuNi01LjctMS0xMS43LTEuNS0xNy43LTEuNS0xNC4zIDAtMjggMy00MC40IDguMi0xNi45LTE1LTM5LjItMjQuMi02My42LTI0LjItNTMgMC05NiA0My05NiA5NiAwIDMwLjkgMTQuNiA1OC4yIDM3LjIgNzUuOC0zLjQgMTEuNS01LjIgMjMuNi01LjIgMzYuMiAwIDEzLjIgMiAyNS45IDUuNyAzNy45bC0yLjQtMy41LTgzLjIgMTYuM2MtNS4yIDEtMTAuNi0uNy0xNC4zLTQuNC0zLjgtMy44LTUuNC05LjItNC40LTE0LjRsMTYuMy04My4zLTcwLjQtNDcuNGMtNC40LTMtNy4xLTgtNy4xLTEzLjMgMC01LjMgMi42LTEwLjMgNy0xMy4ybDcwLjQtNDcuNC0xNi4zLTgzLjItLjItMmMtLjMtNC42IDEuMy05LjEgNC42LTEyLjQgMy44LTMuOCA5LjItNS40IDE0LjQtNC40bDgzLjIgMTYuMyA0Ny4zLTcwLjQgMS4yLTEuNmMzLTMuNSA3LjQtNS41IDEyLjEtNS41em0wIDE3NS44YzguNiAwIDE2LjYgMi4zIDIzLjYgNi4yLTkuNyAxMS45LTE2LjkgMjUuOS0yMC43IDQxLjMtMTUgOC4xLTI4LjIgMTkuMi0zOC44IDMyLjMtNy41LTguNS0xMi4yLTE5LjYtMTIuMi0zMS44IDAtMjYuNSAyMS41LTQ4IDQ4LTQ4eiJdfSx4OWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYXJyb3ctcmlnaHQtbG9uZyIsaWNvbjpbNTc2LDUxMixbImxvbmctYXJyb3ctcmlnaHQiXSwiZjE3OCIsIk01NjYuNiAyNzguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtMTI4LTEyOGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNMNDY2LjcgMjI0IDMyIDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw0MzQuNyAwLTczLjQgNzMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGwxMjgtMTI4eiJdfSxPSHQ9eDllLEZIdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJidWlsZGluZy11biIsaWNvbjpbNTEyLDUxMixbXSwiZTRkOSIsIk0zMiA2NEMzMiAyOC43IDYwLjcgMCA5NiAwTDM1MiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjcyLTExMiAwYy0yMC45IDAtMzkuNSAxMC4xLTUxLjIgMjUuNi04LTYtMTgtOS42LTI4LjgtOS42LTI2LjUgMC00OCAyMS41LTQ4IDQ4bDAgNjQgNjQgMCAwIDQ4LTE0NCAwYy0zNS4zIDAtNjQtMjguNy02NC02NEwzMiA2NHpNMTQ0IDk2Yy04LjggMC0xNiA3LjItMTYgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDB6bTExMiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2ek0xNDQgMjI0Yy04LjggMC0xNiA3LjItMTYgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDB6bTExMiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2ek00MjcuNCAzODAuNWM5LTIuMSAxOC4zIDIuMiAyMi41IDEwLjVsMjYuMSA1Mi4yIDAtNDMuM2MwLTExIDktMjAgMjAtMjBzMjAgOSAyMCAyMGwwIDEyOGMwIDkuMy02LjQgMTcuMy0xNS40IDE5LjVzLTE4LjMtMi4yLTIyLjUtMTAuNUw0NTIgNDg0LjcgNDUyIDUyOGMwIDExLTkgMjAtMjAgMjBzLTIwLTktMjAtMjBsMC0xMjhjMC05LjMgNi40LTE3LjMgMTUuNC0xOS41ek0zMjQgNDAwbDAgOTZjMCA2LjYgNS40IDEyIDEyIDEyczEyLTUuNCAxMi0xMmwwLTk2YzAtMTEgOS0yMCAyMC0yMHMyMCA5IDIwIDIwbDAgOTZjMCAyOC43LTIzLjMgNTItNTIgNTJzLTUyLTIzLjMtNTItNTJsMC05NmMwLTExIDktMjAgMjAtMjBzMjAgOSAyMCAyMHoiXX0sQkh0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRlbXBlcmF0dXJlLWxvdyIsaWNvbjpbNTEyLDUxMixbXSwiZjc2YiIsIk05NiA5NmMwLTUzIDQzLTk2IDk2LTk2czk2IDQzIDk2IDk2bDAgMTY0LjdjMjkuNSAyNi40IDQ4IDY0LjcgNDggMTA3LjMgMCA3OS41LTY0LjUgMTQ0LTE0NCAxNDRTNDggNDQ3LjUgNDggMzY4YzAtNDIuNiAxOC41LTgxIDQ4LTEwNy4zTDk2IDk2em05NiAzMzZjMzUuMyAwIDY0LTI4LjcgNjQtNjQgMC0yNi45LTE2LjUtNDkuOS00MC01OS4zbDAtMjguN2MwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDI4LjdjLTIzLjUgOS41LTQwIDMyLjUtNDAgNTkuMyAwIDM1LjMgMjguNyA2NCA2NCA2NHpNNDY0IDgwYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTM1MiA4MGE4MCA4MCAwIDEgMSAxNjAgMCA4MCA4MCAwIDEgMSAtMTYwIDB6Il19LEhIdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJkb29yLW9wZW4iLGljb246WzQ0OCw1MTIsW10sImY1MmIiLCJNMjg4IDY0bDY0IDAgMCA0MTZjMCAxNy43IDE0LjMgMzIgMzIgMzJsMzIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwwLTM4NGMwLTM1LjMtMjguNy02NC02NC02NGwtOTYgMCAwIDAtMTYwIDBDNjAuNyAwIDMyIDI4LjcgMzIgNjRsMCAzODRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMjI0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC00MTZ6TTE2MCAyNTZhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHoiXX0scUh0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImFsaWduLWxlZnQiLGljb246WzQ0OCw1MTIsW10sImYwMzYiLCJNMjg4IDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMyTDMyIDk2QzE0LjMgOTYgMCA4MS43IDAgNjRTMTQuMyAzMiAzMiAzMmwyMjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnptMCAyNTZjMCAxNy43LTE0LjMgMzItMzIgMzJMMzIgMzUyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDIyNCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyek0wIDE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMmwzODQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkwzMiAyMjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek00NDggNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMyTDMyIDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwzODQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnoiXX0seTllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNhbWVyYSIsaWNvbjpbNTEyLDUxMixbNjIyNTgsImNhbWVyYS1hbHQiXSwiZjAzMCIsIk0xNDkuMSA2NC44TDEzOC43IDk2IDY0IDk2QzI4LjcgOTYgMCAxMjQuNyAwIDE2MEwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzODQgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI1NmMwLTM1LjMtMjguNy02NC02NC02NGwtNzQuNyAwLTEwLjQtMzEuMkMzNTYuNCA0NS4yIDMzOC4xIDMyIDMxNy40IDMyTDE5NC42IDMyYy0yMC43IDAtMzkgMTMuMi00NS41IDMyLjh6TTI1NiAxOTJhOTYgOTYgMCAxIDEgMCAxOTIgOTYgOTYgMCAxIDEgMC0xOTJ6Il19LGpIdD15OWUsVkh0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InVzZXJzLXJheXMiLGljb246WzY0MCw1MTIsW10sImU1OTMiLCJNMzEtMzNDMjEuNy0yMy42IDIxLjctOC40IDMxIDFMODcgNTdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDY1LTMzYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHpNNjA5LTMzYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEw1MTkgMjNjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMEw2MDkgMWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXpNNjUgNTQ1bDU2LTU2YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBMMzEgNTExYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDB6bTU0NCAwYzkuNC05LjQgOS40LTI0LjYgMC0zMy45bC01Ni01NmMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWw1NiA1NmM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHpNMzIwIDIwOGE2NCA2NCAwIDEgMCAwLTEyOCA2NCA2NCAwIDEgMCAwIDEyOHptMCAzMmMtNjEuOSAwLTExMiA1MC4xLTExMiAxMTJsMCA4YzAgMTMuMyAxMC43IDI0IDI0IDI0bDE3NiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0bDAtOGMwLTYxLjktNTAuMS0xMTItMTEyLTExMnptMjE2LTgwYTU2IDU2IDAgMSAwIC0xMTIgMCA1NiA1NiAwIDEgMCAxMTIgMHpNNDUxLjIgMjYwLjRDNDY5LjQgMjg2LjMgNDgwIDMxNy45IDQ4MCAzNTJsMCA4YzAgOC40LTEuNCAxNi41LTQuMSAyNGw3OC44IDBjMTEuOCAwIDIxLjMtOS42IDIxLjMtMjEuM2wwLTEwLjdjMC01My00My05Ni05Ni05Ni0xMCAwLTE5LjcgMS41LTI4LjggNC40em0tMjYyLjQgMGMtOS4xLTIuOS0xOC44LTQuNC0yOC44LTQuNC01MyAwLTk2IDQzLTk2IDk2bDAgMTAuN2MwIDExLjggOS42IDIxLjMgMjEuMyAyMS4zbDc4LjggMGMtMi43LTcuNS00LjEtMTUuNi00LjEtMjRsMC04YzAtMzQuMSAxMC42LTY1LjcgMjguOC05MS42ek0yMTYgMTYwYTU2IDU2IDAgMSAwIC0xMTIgMCA1NiA1NiAwIDEgMCAxMTIgMHoiXX0sVUh0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InJhaW5ib3ciLGljb246WzY0MCw1MTIsWzEyNzc1Ml0sImY3NWIiLCJNMzIwIDk2QzE3OC42IDk2IDY0IDIxMC42IDY0IDM1MmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMyUzAgNDMzLjcgMCA0MTZsMC02NEMwIDE3NS4zIDE0My4zIDMyIDMyMCAzMlM2NDAgMTc1LjMgNjQwIDM1MmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtNjRDNTc2IDIxMC42IDQ2MS40IDk2IDMyMCA5NnptMCAxMTJjLTc5LjUgMC0xNDQgNjQuNS0xNDQgMTQ0bDAgNjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC02NGMwLTExNC45IDkzLjEtMjA4IDIwOC0yMDhzMjA4IDkzLjEgMjA4IDIwOGwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtNjRjMC03OS41LTY0LjUtMTQ0LTE0NC0xNDR6TTI4OCAzNTJsMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTY0YzAtNTMgNDMtOTYgOTYtOTZzOTYgNDMgOTYgOTZsMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyeiJdfSxXSHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic2l0ZW1hcCIsaWNvbjpbNTEyLDUxMixbXSwiZjBlOCIsIk0xOTIgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJsNjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMybC04IDAgMCA2NCAxMjAgMGMzOS44IDAgNzIgMzIuMiA3MiA3MmwwIDU2IDggMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMybC02NCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMybDggMCAwLTU2YzAtMTMuMy0xMC43LTI0LTI0LTI0bC0xMjAgMCAwIDgwIDggMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMybC02NCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMybDggMCAwLTgwLTEyMCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDU2IDggMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMybC02NCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMybDggMCAwLTU2YzAtMzkuOCAzMi4yLTcyIDcyLTcybDEyMCAwIDAtNjQtOCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTY0eiJdfSx3OWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmFjZS1ncmluLXN0YXJzIixpY29uOls1MTIsNTEyLFsxMjkzMjEsImdyaW4tc3RhcnMiXSwiZjU4NyIsIk0yNTYgNTEyYzE0MS40IDAgMjU2LTExNC42IDI1Ni0yNTYgMC0yNC40LTMuNC00OC4xLTkuOC03MC41IDE4LjYtMzYuMS0yLjctODMuNi00Ni43LTkwLTQ2LjktNTguMy0xMTguOS05NS41LTE5OS41LTk1LjVTMTAzLjQgMzcuMyA1Ni41IDk1LjVjLTQ0IDYuNC02NS4zIDUzLjktNDYuNyA5MC02LjQgMjIuNC05LjggNDYtOS44IDcwLjUgMCAxNDEuNCAxMTQuNiAyNTYgMjU2IDI1NnpNMzg2LjcgMzI0LjljMTEuOS0zLjcgMjMuOSA2LjMgMTkuNiAxOC4xLTIyLjQgNjEuMy04MS4zIDEwNS4xLTE1MC4zIDEwNS4xUzEyOC4xIDQwNC4yIDEwNS43IDM0Mi45Yy00LjMtMTEuOCA3LjctMjEuOCAxOS42LTE4LjEgMzkuMiAxMi4yIDgzLjcgMTkuMSAxMzAuNyAxOS4xczkxLjUtNi45IDEzMC43LTE5LjF6bS0zMS42LTIzMWM1LjMtMTAuNyAyMC41LTEwLjcgMjUuOCAwbDIwLjkgNDIuNCA0Ni43IDYuOGMxMS44IDEuNyAxNi41IDE2LjIgOCAyNC41bC0zMy44IDMzIDggNDYuNmMyIDExLjctMTAuMyAyMC43LTIwLjkgMTUuMmwtNDEuOC0yMi00MS44IDIyYy0xMC41IDUuNS0yMi45LTMuNC0yMC45LTE1LjJsOC00Ni42LTMzLjgtMzNjLTguNS04LjMtMy44LTIyLjggOC0yNC41bDQ2LjctNi44IDIwLjktNDIuNHptLTE5OC4yIDBsMjAuOSA0Mi40IDQ2LjcgNi44YzExLjggMS43IDE2LjUgMTYuMiA4IDI0LjVsLTMzLjggMzMgOCA0Ni42YzIgMTEuNy0xMC4zIDIwLjctMjAuOSAxNS4ybC00MS44LTIyLTQxLjggMjJjLTEwLjUgNS41LTIyLjktMy40LTIwLjktMTUuMmw4LTQ2LjYtMzMuOC0zM2MtOC41LTguMy0zLjgtMjIuOCA4LTI0LjVsNDYuNy02LjggMjAuOS00Mi40YzUuMy0xMC43IDIwLjUtMTAuNyAyNS44IDB6Il19LEdIdD13OWUsazllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNvcnQtdXAiLGljb246WzM4NCw1MTIsWyJzb3J0LWFzYyJdLCJmMGRlIiwiTTMyIDIyNGMtMTIuOSAwLTI0LjYtNy44LTI5LjYtMTkuOFMuMiAxNzguNSA5LjQgMTY5LjRsMTYwLTE2MGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMGwxNjAgMTYwYzkuMiA5LjIgMTEuOSAyMi45IDYuOSAzNC45UzM2NC45IDIyNCAzNTIgMjI0TDMyIDIyNHoiXX0sS0h0PWs5ZSxIYj17cHJlZml4OiJmYXMiLGljb25OYW1lOiJleWUiLGljb246WzU3Niw1MTIsWzEyODA2NV0sImYwNmUiLCJNMjg4IDMyYy04MC44IDAtMTQ1LjUgMzYuOC0xOTIuNiA4MC42LTQ2LjggNDMuNS03OC4xIDk1LjQtOTMgMTMxLjEtMy4zIDcuOS0zLjMgMTYuNyAwIDI0LjYgMTQuOSAzNS43IDQ2LjIgODcuNyA5MyAxMzEuMSA0Ny4xIDQzLjcgMTExLjggODAuNiAxOTIuNiA4MC42czE0NS41LTM2LjggMTkyLjYtODAuNmM0Ni44LTQzLjUgNzguMS05NS40IDkzLTEzMS4xIDMuMy03LjkgMy4zLTE2LjcgMC0yNC42LTE0LjktMzUuNy00Ni4yLTg3LjctOTMtMTMxLjEtNDcuMS00My43LTExMS44LTgwLjYtMTkyLjYtODAuNnpNMTQ0IDI1NmExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0xNDQtNjRjMCAzNS4zLTI4LjcgNjQtNjQgNjQtMTEuNSAwLTIyLjMtMy0zMS43LTguNC0xIDEwLjktLjEgMjIuMSAyLjkgMzMuMiAxMy43IDUxLjIgNjYuNCA4MS42IDExNy42IDY3LjlzODEuNi02Ni40IDY3LjktMTE3LjZjLTEyLjItNDUuNy01NS41LTc0LjgtMTAxLjEtNzAuOCA1LjMgOS4zIDguNCAyMC4xIDguNCAzMS43eiJdfSxxYj17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjYXJldC1sZWZ0IixpY29uOlsyNTYsNTEyLFtdLCJmMGQ5IiwiTTcuNyAyMzUuOGMtMTAuMyAxMi42LTkuNSAzMS4xIDIuMiA0Mi44bDEyOCAxMjhjOS4yIDkuMiAyMi45IDExLjkgMzQuOSA2LjlzMTkuOC0xNi42IDE5LjgtMjkuNmwwLTI1NmMwLTEyLjktNy44LTI0LjYtMTkuOC0yOS42cy0yNS43LTIuMi0zNC45IDYuOWwtMTI4IDEyOC0yLjIgMi40eiJdfSxTOWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYXBwbGUtd2hvbGUiLGljb246WzQ0OCw1MTIsWzEyNzgyMiwxMjc4MjMsImFwcGxlLWFsdCJdLCJmNWQxIiwiTTIyNCAxMTJjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTE2YzAtNDQuMiAzNS44LTgwIDgwLTgwbDE2IDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMTZjMCA0NC4yLTM1LjggODAtODAgODBsLTE2IDB6TTAgMjg4YzAtNzYuMyAzNS43LTE2MCAxMTItMTYwIDI3LjMgMCA1OS43IDEwLjMgODIuNyAxOS4zIDE4LjggNy4zIDM5LjkgNy4zIDU4LjcgMCAyMi45LTguOSA1NS40LTE5LjMgODIuNy0xOS4zIDc2LjMgMCAxMTIgODMuNyAxMTIgMTYwIDAgMTI4LTgwIDIyNC0xNjAgMjI0LTE2LjUgMC0zOC4xLTYuNi01MS41LTExLjMtOC4xLTIuOC0xNi45LTIuOC0yNSAwLTEzLjQgNC43LTM1IDExLjMtNTEuNSAxMS4zLTgwIDAtMTYwLTk2LTE2MC0yMjR6Il19LFlIdD1TOWUsXzllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNjcm9sbC10b3JhaCIsaWNvbjpbNTc2LDUxMixbInRvcmFoIl0sImY2YTAiLCJNMCA0OEMwIDIxLjUgMjEuNSAwIDQ4IDAgNjguOSAwIDg2LjcgMTMuNCA5My4zIDMybDM4OS41IDBjNi42LTE4LjYgMjQuNC0zMiA0NS4zLTMyIDI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgNDE2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4LTIwLjkgMC0zOC43LTEzLjQtNDUuMy0zMkw5My4zIDQ4MGMtNi42IDE4LjYtMjQuNCAzMi00NS4zIDMyLTI2LjUgMC00OC0yMS41LTQ4LTQ4TDAgNDh6TTE3Ny45IDMwMWMtMS4yIDItMS45IDQuMi0xLjkgNi42IDAgNi45IDUuNiAxMi41IDEyLjUgMTIuNWw1Ni45IDAgMzAuNSA0OS4yYzIuNiA0LjIgNy4yIDYuOCAxMi4yIDYuOHM5LjYtMi42IDEyLjItNi44bDMwLjUtNDkuMiA1Ni45IDBjNi45IDAgMTIuNS01LjYgMTIuNS0xMi41IDAtMi4zLS42LTQuNi0xLjktNi42bC0yNy44LTQ1IDI3LjgtNDVjMS4yLTIgMS45LTQuMiAxLjktNi42IDAtNi45LTUuNi0xMi41LTEyLjUtMTIuNWwtNTYuOSAwLTMwLjUtNDkuMmMtMi42LTQuMi03LjItNi44LTEyLjItNi44cy05LjYgMi42LTEyLjIgNi44bC0zMC41IDQ5LjItNTYuOSAwYy02LjkgMC0xMi41IDUuNi0xMi41IDEyLjUgMCAyLjMgLjYgNC42IDEuOSA2LjZsMjcuOCA0NS0yNy44IDQ1eiJdfSxaSHQ9XzllLFhIdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJob3VzZS1sb2NrIixpY29uOls2NDAsNTEyLFtdLCJlNTEwIiwiTTUyOCAyMjQuMWM0NC4yIDAgODAgMzUuOCA4MCA4MGwwIDUwLjZjMTguNiA2LjYgMzIgMjQuNCAzMiA0NS4zbDAgOTZjMCAyNi41LTIxLjUgNDgtNDggNDhsLTEyOCAwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTk2YzAtMjAuOSAxMy40LTM4LjcgMzItNDUuM2wwLTUwLjZjMC00NC4yIDM1LjgtODAgODAtODB6TTI2OC42IDYuNWMxMi4yLTkuMyAyOS43LTguNyA0MS4yIDJsMTg1IDE3MS44QzQ0MC4yIDE5NSA0MDAgMjQ0LjggNDAwIDMwNGwwIDI0LjRjLTE5LjYgMTcuNi0zMiA0My4xLTMyIDcxLjVsMCA5NmMwIDUuNSAuNSAxMC45IDEuMyAxNi4xTDE0NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtMTc2LTE2IDBjLTEzLjIgMC0yNS04LjEtMjkuOC0yMC4zcy0xLjYtMjYuMiA4LTM1LjFsMjI0LTIwOCAyLjQtMnpNMjcyIDMyMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCA5NiA5NiAwIDAtODcuM2MwLTE2LjUgNy0zMS41IDE4LjQtNDIuMS04LjctOS0yMC45LTE0LjYtMzQuNC0xNC42bC0zMiAwem0yNTYtNDcuOWMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCA0Ny45IDY0IDAgMC00Ny45YzAtMTcuNy0xNC4zLTMyLTMyLTMyeiJdfSxRSHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYXJyb3dzLWxlZnQtcmlnaHQtdG8tbGluZSIsaWNvbjpbNTc2LDUxMixbXSwiZTRiYSIsIk0zMiA5NkMxNC4zIDk2IDAgMTEwLjMgMCAxMjhMMCAzODRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTI1NmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMzkwLjYgMzQyLjZsNjQtNjRjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTY0LTY0Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2w5LjQgOS40LTEzMy41IDAgOS40LTkuNGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtNjQgNjRjLTYgNi05LjQgMTQuMS05LjQgMjIuNnMzLjQgMTYuNiA5LjQgMjIuNmw2NCA2NGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC05LjQtOS40IDEzMy41IDAtOS40IDkuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMHpNNTc2IDEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDI1NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMjU2eiJdfSxmaD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0cmFzaCIsaWNvbjpbNDQ4LDUxMixbXSwiZjFmOCIsIk0xMzYuNyA1LjlMMTI4IDMyIDMyIDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRTMTQuMyA5NiAzMiA5NmwzODQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtOTYgMC04LjctMjYuMUMzMDYuOS03LjIgMjk0LjctMTYgMjgwLjktMTZMMTY3LjEtMTZjLTEzLjggMC0yNiA4LjgtMzAuNCAyMS45ek00MTYgMTQ0TDMyIDE0NCA1My4xIDQ2Ny4xQzU0LjcgNDkyLjQgNzUuNyA1MTIgMTAxIDUxMkwzNDcgNTEyYzI1LjMgMCA0Ni4zLTE5LjYgNDcuOS00NC45TDQxNiAxNDR6Il19LE05ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmYWNlLXNhZC10ZWFyIixpY29uOls1MTIsNTEyLFsxMjg1NDYsInNhZC10ZWFyIl0sImY1YjQiLCJNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMCAyNTYgMjU2IDAgMSAxIC01MTIgMHptMjcxIDk4YzUuNS0xLjMgMTEuMS0yIDE3LTIgMjQuMSAwIDQ1LjQgMTEuOCA1OC41IDMwIDcuNyAxMC44IDIyLjcgMTMuMiAzMy41IDUuNXMxMy4yLTIyLjcgNS41LTMzLjVjLTIxLjctMzAuMi01Ny4zLTUwLTk3LjUtNTAtMTIuNSAwLTI0LjYgMS45LTM1LjkgNS41IDkuOCAxMi43IDE2LjUgMjcuOSAxOC45IDQ0LjZ6TTE3NiAyNDBhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0xOTItMzJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMTg1LjQgMjkyLjhjLTIuNC0yLjktNS43LTQuOC05LjQtNC44cy03IDEuOS05LjQgNC44Yy02LjUgNy44LTEyLjYgMTYuMS0xOC4zIDI0LjYtOSAxMy40LTIwLjMgMzAuMi0yMC4zIDQ3LjQgMCAyOC4zIDIxLjUgNTEuMiA0OCA1MS4yczQ4LTIyLjkgNDgtNTEuMmMwLTE3LjItMTEuMi0zNC0yMC4zLTQ3LjQtNS43LTguNS0xMS45LTE2LjctMTguMy0yNC42eiJdfSxKSHQ9TTllLGVxdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmYXgiLGljb246WzUxMiw1MTIsWzEyODIyNCwxMjg0MzldLCJmMWFjIiwiTTE2MCA2NGwwIDgwIDY0IDAgMC04MCAxNDYuNyAwIDQ1LjMgNDUuMyAwIDM0LjcgNjQgMCAwLTM0LjdjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMNDE2IDE4LjdDNDA0IDYuNyAzODcuNyAwIDM3MC43IDBMMjI0IDBjLTM1LjMgMC02NCAyOC43LTY0IDY0ek0zMiAxMjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyTDAgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMybDQ4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0yODhjMC0xNy43LTE0LjMtMzItMzItMzJsLTQ4IDB6bTQ0OCA2NGwtMzIwIDAgMCAyNTZjMCAxNy43IDE0LjMgMzIgMzIgMzJsMjg4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0yMjRjMC0xNy43LTE0LjMtMzItMzItMzJ6TTIyNCAyODhhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptMCA5NmEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwek0zMzYgMjY0YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpNMzEyIDM4NGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwek00MjQgMjY0YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpNNDAwIDM4NGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAweiJdfSx0cXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGVyc29uLWNpcmNsZS1wbHVzIixpY29uOls2NDAsNTEyLFtdLCJlNTQxIiwiTTI4MCAyNGE1NiA1NiAwIDEgMCAtMTEyIDAgNTYgNTYgMCAxIDAgMTEyIDB6bTI0IDIxMi43TDM0MSAyODYuNmMxMi44LTE3LjUgMjguNS0zMi43IDQ2LjMtNDVsLTU2LjItNzUuN0MzMDYgMTMyIDI2Ni4zIDExMiAyMjQgMTEycy04MiAyMC0xMDcuMiA1My45bC03MC41IDk1Yy0xMC41IDE0LjItNy42IDM0LjIgNi42IDQ0LjhzMzQuMiA3LjYgNDQuOC02LjZMMTQ0IDIzNi43IDE0NCA1MTJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTE2MGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2bDAgMTYwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0yNzUuM3pNNDk2IDU0NGExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTE2LTIwOGwwIDQ4IDQ4IDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTQ4IDAgMCA0OGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTQ4LTQ4IDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZsNDggMCAwLTQ4YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6Il19LGFxdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoYW1zYSIsaWNvbjpbNTEyLDUxMixbXSwiZjY2NSIsIk0zNC42IDI4OEw4MCAyODhjOC44IDAgMTYtNy4yIDE2LTE2TDk2IDcyYzAtMjIuMSAxNy45LTQwIDQwLTQwczQwIDE3LjkgNDAgNDBsMCAxMzJjMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjBsMC0xNjRjMC0yMi4xIDE3LjktNDAgNDAtNDBzNDAgMTcuOSA0MCA0MGwwIDE2NGMwIDExIDkgMjAgMjAgMjBzMjAtOSAyMC0yMGwwLTEzMmMwLTIyLjEgMTcuOS00MCA0MC00MHM0MCAxNy45IDQwIDQwbDAgMjAwYzAgOC44IDcuMiAxNiAxNiAxNmw0NS40IDBjMTkuMSAwIDM0LjYgMTUuNSAzNC42IDM0LjYgMCA4LjYtMy4yIDE2LjktOSAyMy4zTDQxNi42IDQ0MWMtNDEuMSA0NS4yLTk5LjQgNzEtMTYwLjYgNzFTMTM2LjYgNDg2LjIgOTUuNCA0NDFMOSAzNDUuOWMtNS44LTYuNC05LTE0LjctOS0yMy4zIDAtMTkuMSAxNS41LTM0LjYgMzQuNi0zNC42ek0yNTYgMjg4Yy0zOC40IDAtNzYuOCAzNS44LTkwLjYgNTAuMi0zLjYgMy43LTUuNCA4LjctNS40IDEzLjhzMS44IDEwLjEgNS40IDEzLjhDMTc5LjIgMzgwLjIgMjE3LjYgNDE2IDI1NiA0MTZzNzYuOC0zNS44IDkwLjYtNTAuMmMzLjYtMy43IDUuNC04LjcgNS40LTEzLjhzLTEuOC0xMC4xLTUuNC0xMy44QzMzMi44IDMyMy44IDI5NC40IDI4OCAyNTYgMjg4em0wIDMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHoiXX0sc3F0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBlcnNvbi1jaXJjbGUtcXVlc3Rpb24iLGljb246WzY0MCw1MTIsW10sImU1NDIiLCJNMjgwIDI0YTU2IDU2IDAgMSAwIC0xMTIgMCA1NiA1NiAwIDEgMCAxMTIgMHptMjQgMjEyLjdMMzQxIDI4Ni42YzEyLjgtMTcuNSAyOC41LTMyLjcgNDYuMy00NWwtNTYuMi03NS43QzMwNiAxMzIgMjY2LjMgMTEyIDIyNCAxMTJzLTgyIDIwLTEwNy4yIDUzLjlsLTcwLjUgOTVjLTEwLjUgMTQuMi03LjYgMzQuMiA2LjYgNDQuOHMzNC4yIDcuNiA0NC44LTYuNkwxNDQgMjM2LjcgMTQ0IDUxMmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTYwYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZsMCAxNjBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTI3NS4zek00OTYgNTQ0YTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptMC0xMDBhMjAgMjAgMCAxIDEgMCA0MCAyMCAyMCAwIDEgMSAwLTQwem0wLTEwMGMtMTEuNiAwLTIxLjMgOC4yLTIzLjUgMTkuMi0xLjggOC43LTEwLjIgMTQuMy0xOC45IDEyLjVzLTE0LjMtMTAuMi0xMi41LTE4LjljNS4yLTI1LjYgMjcuOC00NC44IDU0LjktNDQuOCAzMC45IDAgNTYgMjUuMSA1NiA1NiAwIDE5LjgtMTEuNyAzNy44LTI5LjggNDUuOWwtMTAuNCA0LjZjLTEuMiA3LjctNy44IDEzLjUtMTUuOCAxMy41LTguOCAwLTE2LTcuMi0xNi0xNiAwLTExLjIgNi42LTIxLjMgMTYuOC0yNS45bDEyLjQtNS41YzYuNi0yLjkgMTAuOC05LjQgMTAuOC0xNi42IDAtMTMuMy0xMC43LTI0LTI0LTI0eiJdfSxpcXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2xpcGJvYXJkLWNoZWNrIixpY29uOlszODQsNTEyLFtdLCJmNDZjIiwiTTI1NiAwYzIzLjcgMCA0NC40IDEyLjkgNTUuNCAzMmw4LjYgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDM1MmMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsOC42IDBDODMuNiAxMi45IDEwNC4zIDAgMTI4IDBMMjU2IDB6bTI2LjkgMjEyLjZjLTEwLjctNy44LTI1LjctNS40LTMzLjUgNS4zbC04NS42IDExNy43LTI2LjUtMjcuNGMtOS4yLTkuNS0yNC40LTkuOC0zMy45LS42cy05LjggMjQuNC0uNiAzMy45bDQ2LjQgNDhjNC45IDUuMSAxMS44IDcuOCAxOC45IDcuM3MxMy42LTQuMSAxNy44LTkuOEwyODguMiAyNDYuMWM3LjgtMTAuNyA1LjQtMjUuNy01LjMtMzMuNXpNMTM2IDY0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDExMiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0TDEzNiA2NHoiXX0sejllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNoYXJlLWZyb20tc3F1YXJlIixpY29uOls1NzYsNTEyLFs2MTUwOSwic2hhcmUtc3F1YXJlIl0sImYxNGQiLCJNMzg0LjUgMjRsMCA3Mi02NCAwYy03OS41IDAtMTQ0IDY0LjUtMTQ0IDE0NCAwIDkzLjQgODIuOCAxMzQuOCAxMDAuNiAxNDIuNiAyLjIgMSA0LjYgMS40IDcuMSAxLjRsMi41IDBjOS44IDAgMTcuOC04IDE3LjgtMTcuOCAwLTguMy01LjktMTUuNS0xMi44LTIwLjMtOC45LTYuMi0xOS4yLTE4LjItMTkuMi00MC41IDAtNDUgMzYuNS04MS41IDgxLjUtODEuNWwzMC41IDAgMCA3MmMwIDkuNyA1LjggMTguNSAxNC44IDIyLjJzMTkuMyAxLjcgMjYuMi01LjJsMTM2LTEzNmM5LjQtOS40IDkuNC0yNC42IDAtMzMuOUw0MjUuNSA3Yy02LjktNi45LTE3LjItOC45LTI2LjItNS4yUzM4NC41IDE0LjMgMzg0LjUgMjR6bS0yNzIgNzJjLTQ0LjIgMC04MCAzNS44LTgwIDgwbDAgMjU2YzAgNDQuMiAzNS44IDgwIDgwIDgwbDI1NiAwYzQ0LjIgMCA4MC0zNS44IDgwLTgwbDAtMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTI1NiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0yNTZjMC04LjggNy4yLTE2IDE2LTE2bDE2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTE2IDB6Il19LHJxdD16OWUsamI9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicmVjZWlwdCIsaWNvbjpbMzg0LDUxMixbMTI5NTM0XSwiZjU0MyIsIk0xNCAyLjJDMjIuNS0xLjcgMzIuNS0uMyAzOS42IDUuOEw4MCA0MC40IDEyMC40IDUuOGM5LTcuNyAyMi4zLTcuNyAzMS4yIDBMMTkyIDQwLjQgMjMyLjQgNS44YzktNy43IDIyLjItNy43IDMxLjIgMEwzMDQgNDAuNCAzNDQuNCA1LjhjNy4xLTYuMSAxNy4xLTcuNSAyNS42LTMuNlMzODQgMTQuNiAzODQgMjRsMCA0NjRjMCA5LjQtNS41IDE3LjktMTQgMjEuOHMtMTguNSAyLjUtMjUuNi0zLjZsLTQwLjQtMzQuNi00MC40IDM0LjZjLTkgNy43LTIyLjIgNy43LTMxLjIgMGwtNDAuNC0zNC42LTQwLjQgMzQuNmMtOSA3LjctMjIuMyA3LjctMzEuMiAwTDgwIDQ3MS42IDM5LjYgNTA2LjJjLTcuMSA2LjEtMTcuMSA3LjUtMjUuNiAzLjZTMCA0OTcuNCAwIDQ4OEwwIDI0QzAgMTQuNiA1LjUgNi4xIDE0IDIuMnpNMTA0IDEzNmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwxNzYgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtMTc2IDB6TTgwIDM1MmMwIDEzLjMgMTAuNyAyNCAyNCAyNGwxNzYgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtMTc2IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0em0yNC0xMjBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMTc2IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTE3NiAweiJdfSxvcXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZXF1YWxzIixpY29uOls0NDgsNTEyLFs2Mjc2NF0sIjNkIiwiTTMyIDEyOGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzODQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwzMiAxMjh6bTAgMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDM4NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDMyIDMyMHoiXX0sbnF0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNoZXZyb24tdXAiLGljb246WzQ0OCw1MTIsW10sImYwNzciLCJNMjAxLjQgMTA1LjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsMTkyIDE5MmMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwyMjQgMTczLjMgNTQuNiAzNDIuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNsMTkyLTE5MnoiXX0sbHF0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InZpcnVzLXNsYXNoIixpY29uOls1NzYsNTEyLFtdLCJlMDc1IiwiTTQxLTI0LjljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwUy0yLjMtLjMgNyA5LjFsNTI4IDUyOGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTg4LjYtODguNmMxLjctMTIuMS0yLTI0LjgtMTEuMy0zNC0zMS4yLTMxLjItOS4xLTg0LjUgMzUtODQuNSAyMi4xIDAgNDAtMTcuOSA0MC00MHMtMTcuOS00MC00MC00MGMtNDQuMSAwLTY2LjEtNTMuMy0zNS04NC41IDE1LjYtMTUuNiAxNS42LTQwLjkgMC01Ni42cy00MC45LTE1LjYtNTYuNiAwYy0zMS4yIDMxLjItODQuNSA5LjEtODQuNS0zNSAwLTIyLjEtMTcuOS00MC00MC00MHMtNDAgMTcuOS00MCA0MGMwIDQ0LjEtNTMuMyA2Ni4xLTg0LjUgMzUtOS4zLTkuMy0yMi0xMy0zNC0xMS4zTDQxLTI0Ljl6TTcyIDIxNmMtMjIuMSAwLTQwIDE3LjktNDAgNDBzMTcuOSA0MCA0MCA0MGM0NC4xIDAgNjYuMSA1My4zIDM1IDg0LjUtMTUuNiAxNS42LTE1LjYgNDAuOSAwIDU2LjZzNDAuOSAxNS42IDU2LjYgMGMzMS4yLTMxLjIgODQuNS05LjEgODQuNSAzNSAwIDIyLjEgMTcuOSA0MCA0MCA0MHM0MC0xNy45IDQwLTQwYzAtMjEuNCAxMi42LTM3LjYgMjkuMS00NS4xbC0yNDAtMjQwQzEwOS42IDIwMy40IDkzLjQgMjE2IDcyIDIxNnoiXX0sY3F0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNsYXNoIixpY29uOls1NzYsNTEyLFtdLCJmNzE1IiwiTTctMjVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBMNTY5IDUwM2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwTDcgOUMtMi4zLS40LTIuMy0xNS42IDctMjV6Il19LGRxdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJleHBhbmQiLGljb246WzQ0OCw1MTIsW10sImYwNjUiLCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NGwwIDk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC02NCA2NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDMyIDMyek02NCAzNTJjMC0xNy43LTE0LjMtMzItMzItMzJTMCAzMzQuMyAwIDM1MmwwIDk2YzAgMTcuNyAxNC4zIDMyIDMyIDMybDk2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTY0IDAgMC02NHpNMzIwIDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDY0IDAgMCA2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtOTZjMC0xNy43LTE0LjMtMzItMzItMzJsLTk2IDB6TTQ0OCAzNTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCA2NC02NCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDk2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC05NnoiXX0sQzllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im5vdGUtc3RpY2t5IixpY29uOls0NDgsNTEyLFs2MjAyNiwic3RpY2t5LW5vdGUiXSwiZjI0OSIsIk02NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMzIwIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAyMTMuNWMwIDE3LTYuNyAzMy4zLTE4LjcgNDUuM0wzMjIuNyA0NjEuM2MtMTIgMTItMjguMyAxOC43LTQ1LjMgMTguN0w2NCA0ODB6TTM4OS41IDMwNEwyOTYgMzA0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDkzLjUgMTE3LjUtMTE3LjV6Il19LHVxdD1DOWUsVDllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRhYmxlLWNvbHVtbnMiLGljb246WzQ0OCw1MTIsWyJjb2x1bW5zIl0sImYwZGIiLCJNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwzMjAgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZ6bTY0IDY0bDAgMjU2IDEyOCAwIDAtMjU2LTEyOCAwem0zMjAgMGwtMTI4IDAgMCAyNTYgMTI4IDAgMC0yNTZ6Il19LHBxdD1UOWUsaHF0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBlcnNvbi1zaGVsdGVyIixpY29uOls1MTIsNTEyLFtdLCJlNTRmIiwiTTI3MS45IDQuMmMtOS44LTUuNi0yMS45LTUuNi0zMS44IDBsLTIyNCAxMjhDNi4yIDEzNy45IDAgMTQ4LjUgMCAxNjBMMCA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMkw2NCAxNzguNiAyNTYgNjguOSA0NDggMTc4LjYgNDQ4IDQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMzIwYzAtMTEuNS02LjItMjIuMS0xNi4xLTI3LjhsLTIyNC0xMjh6TTI1NiAyMDhhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwem0tOCAxOTJsMTYgMCAwIDg4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0xNzQuNSAyNi45IDQ5LjljNi4zIDExLjcgMjAuOCAxNiAzMi41IDkuOHMxNi0yMC44IDkuOC0zMi41bC0zMy4yLTYxLjdDMzI5LjcgMjQ1LjEgMjk0LjQgMjI0IDI1NiAyMjRzLTczLjcgMjEuMS05MS45IDU0LjlsLTMzLjIgNjEuN2MtNi4zIDExLjctMS45IDI2LjIgOS44IDMyLjVzMjYuMiAxLjkgMzIuNS05LjhMMjAwIDMxMy41IDIwMCA0ODhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTg4eiJdfSxmcXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2lyY2xlLW5vdGNoIixpY29uOls1MTIsNTEyLFtdLCJmMWNlIiwiTTIyMi43IDMyLjFjNSAxNi45LTQuNiAzNC44LTIxLjUgMzkuOC03OS4zIDIzLjYtMTM3LjEgOTcuMS0xMzcuMSAxODQuMSAwIDEwNiA4NiAxOTIgMTkyIDE5MnMxOTItODYgMTkyLTE5MmMwLTg2LjktNTcuOC0xNjAuNC0xMzcuMS0xODQuMS0xNi45LTUtMjYuNi0yMi45LTIxLjUtMzkuOHMyMi45LTI2LjYgMzkuOC0yMS41QzQzNC45IDQyLjEgNTEyIDE0MCA1MTIgMjU2IDUxMiAzOTcuNCAzOTcuNCA1MTIgMjU2IDUxMlMwIDM5Ny40IDAgMjU2YzAtMTE2IDc3LjEtMjEzLjkgMTgyLjktMjQ1LjQgMTYuOS01IDM0LjggNC42IDM5LjggMjEuNXoiXX0sbXF0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6IndhdGVyIixpY29uOls1MTIsNTEyLFtdLCJmNzczIiwiTTQxMC42IDEyNC4xYzIwLjcgMTUuNiA0NiAzMC43IDc0LjIgMzQuNSAxMy4xIDEuOCAyNS4yLTcuNSAyNy0yMC42cy03LjUtMjUuMi0yMC42LTI3Yy0xNS45LTIuMS0zMy4yLTExLjMtNTEuNy0yNS4yLTM4LjQtMjktOTAuNS0yOS0xMjkgMC0yNCAxOC4xLTQwLjcgMjYuMy01NC41IDI2LjNzLTMwLjUtOC4yLTU0LjUtMjYuM2MtMzguNC0yOS05MC41LTI5LTEyOSAwLTE4LjUgMTMuOS0zNS44IDIzLjEtNTEuNyAyNS4yLTEzLjEgMS44LTIyLjQgMTMuOC0yMC42IDI3czEzLjggMjIuNCAyNyAyMC42YzI4LjItMy44IDUzLjYtMTguOSA3NC4yLTM0LjUgMjEuMy0xNi4xIDQ5LjktMTYuMSA3MS4yIDAgMjQuMiAxOC4zIDUyLjMgMzUuOSA4My40IDM1LjlzNTkuMS0xNy43IDgzLjQtMzUuOWMyMS4zLTE2LjEgNDkuOS0xNi4xIDcxLjIgMHptMCAxNDRjMjAuNyAxNS42IDQ2IDMwLjcgNzQuMiAzNC41IDEzLjEgMS44IDI1LjItNy41IDI3LTIwLjZzLTcuNS0yNS4yLTIwLjYtMjdjLTE1LjktMi4xLTMzLjItMTEuMy01MS43LTI1LjItMzguNC0yOS05MC41LTI5LTEyOSAwLTI0IDE4LjEtNDAuNyAyNi4zLTU0LjUgMjYuM3MtMzAuNS04LjItNTQuNS0yNi4zYy0zOC40LTI5LTkwLjUtMjktMTI5IDAtMTguNSAxMy45LTM1LjggMjMuMS01MS43IDI1LjItMTMuMSAxLjctMjIuNCAxMy44LTIwLjYgMjdzMTMuOCAyMi40IDI3IDIwLjZjMjguMi0zLjggNTMuNi0xOC45IDc0LjItMzQuNSAyMS4zLTE2LjEgNDkuOS0xNi4xIDcxLjIgMCAyNC4yIDE4LjMgNTIuMyAzNS45IDgzLjQgMzUuOXM1OS4xLTE3LjcgODMuNC0zNS45YzIxLjMtMTYuMSA0OS45LTE2LjEgNzEuMiAwem0tNzEuMiAxNDRjMjEuMy0xNi4xIDQ5LjktMTYuMSA3MS4yIDAgMjAuNyAxNS42IDQ2IDMwLjcgNzQuMiAzNC41IDEzLjEgMS44IDI1LjItNy41IDI3LTIwLjZzLTcuNS0yNS4yLTIwLjYtMjdjLTE1LjktMi4xLTMzLjItMTEuMy01MS43LTI1LjItMzguNC0yOS05MC41LTI5LTEyOSAwLTI0IDE4LjEtNDAuNyAyNi4zLTU0LjUgMjYuM3MtMzAuNS04LjItNTQuNS0yNi4zYy0zOC40LTI5LTkwLjUtMjktMTI5IDAtMTguNSAxMy45LTM1LjggMjMuMS01MS43IDI1LjItMTMuMSAxLjgtMjIuNCAxMy44LTIwLjYgMjdzMTMuOCAyMi40IDI3IDIwLjZjMjguMi0zLjggNTMuNi0xOC45IDc0LjItMzQuNSAyMS4zLTE2LjEgNDkuOS0xNi4xIDcxLjIgMCAyNC4yIDE4LjMgNTIuMyAzNS45IDgzLjQgMzUuOXM1OS4xLTE3LjcgODMuNC0zNS45eiJdfSwkOWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZGVsZXRlLWxlZnQiLGljb246WzY0MCw1MTIsWzkwMDMsImJhY2tzcGFjZSJdLCJmNTVhIiwiTTU3NiAxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRMMjA1LjMgNjRjLTE3IDAtMzMuMyA2LjctNDUuMyAxOC43TDkuNCAyMzMuNGMtNiA2LTkuNCAxNC4xLTkuNCAyMi42czMuNCAxNi42IDkuNCAyMi42TDE2MCA0MjkuM2MxMiAxMiAyOC4zIDE4LjcgNDUuMyAxOC43TDUxMiA0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yNTZ6TTI4NC4xIDE4OC4xYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDMzLjkgMzMuOSAzMy45LTMzLjljOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC0zMy45IDMzLjkgMzMuOSAzMy45YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTMzLjktMzMuOS0zMy45IDMzLjljLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsMzMuOS0zMy45LTMzLjktMzMuOWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjl6Il19LGdxdD0kOWUscG9lPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJyb29tLWJhbGwiLGljb246WzU3Niw1MTIsWyJxdWlkZGl0Y2giLCJxdWlkZGl0Y2gtYnJvb20tYmFsbCJdLCJmNDU4IiwiTTQ5NiA1NDRhODAgODAgMCAxIDEgMC0xNjAgODAgODAgMCAxIDEgMCAxNjB6TTEwNi44IDI3Ny4yYzMwLjYtMzAuNiA3My4xLTQ1LjkgMTE1LjgtNDIuMkwzNDEgMzUzLjNjMy43IDQyLjgtMTEuNiA4NS4yLTQyLjIgMTE1LjktMjcuNCAyNy40LTY0LjYgNDIuOC0xMDMuMyA0Mi44TDIyLjEgNTEyYy0xMi4yIDAtMjIuMS05LjktMjIuMS0yMi4xIDAtNi4zIDIuNy0xMi4zIDcuMy0xNi41TDEzMy43IDM1OS43YzQuMi0zLjctLjQtMTAuNC01LjQtNy45TDc3LjIgMzc3LjRjLTYuMSAzLTEzLjItMS40LTEzLjItOC4yIDAtMzEuNSAxMi41LTYxLjggMzQuOC04NGw4LTh6bTQxNy0yNzBjMTIuNi0xMC4zIDMxLjEtOS41IDQyLjggMi4yczEyLjQgMzAuMiAyLjIgNDIuOGwtMi4yIDIuNC0xOTIgMTkyIDM0LjggMzQuN2M0LjIgNC4yIDYuNiAxMCA2LjYgMTYgMCAxMi41LTEwLjEgMjIuNi0yMi42IDIyLjZsLTI5LjEgMC0xMDguMy0xMDguMyAwLTI5LjFjMC0xMi41IDEwLjEtMjIuNiAyMi42LTIyLjYgNiAwIDExLjggMi40IDE2IDYuNmwzNC44IDM0LjcgMTkyLTE5MiAyLjQtMi4yeiJdfSxicXQ9cG9lLHZxdD1wb2UseHF0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImoiLGljb246WzMyMCw1MTIsWzEwNl0sIjRhIiwiTTI4OCAzMmMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDI1NmMwIDg4LjQtNzEuNiAxNjAtMTYwIDE2MFMwIDQwOC40IDAgMzIwbDAtMzJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDMyYzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZsMC0yNTZjMC0xNy43IDE0LjMtMzIgMzItMzJ6Il19LEQ5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzaHV0dGxlLXNwYWNlIixpY29uOls1NzYsNTEyLFsic3BhY2Utc2h1dHRsZSJdLCJmMTk3IiwiTTAgMzY4bDAgNjRjMCAyNi41IDIxLjUgNDggNDggNDhsNTAgMGM0MC42IDAgODAuNC0xMSAxMTUuMi0zMS45bDEzMy41LTgwLjEtOTMuMyAwLTY0LjkgMzguOWMtMTQgOC40LTI4LjkgMTQuNy00NC41IDE5bDAtNjYuNGM5LjctNS42IDE3LjgtMTMuNyAyMy40LTIzLjRsMTk4LjggMGM2Ny4xIDAgMTI3LjgtMjAuNiAxNzAuMy03MC42IDQuNi01LjQgNC42LTEzLjMgMC0xOC44LTQyLjUtNTAuMS0xMDMuMi03MC42LTE3MC4zLTcwLjZsLTE5OC44IDBjLTUuNi05LjctMTMuNy0xNy44LTIzLjQtMjMuNGwwLTY2LjRjMTUuNiA0LjIgMzAuNiAxMC42IDQ0LjUgMTlsNjQuOSAzOC45IDkzLjMgMC0xMzMuNS04MC4xQzE3OC40IDQzIDEzOC42IDMyIDk4IDMyTDQ4IDMyQzIxLjUgMzIgMCA1My41IDAgODBMMCAzNjh6bTk2IDBsMCA2NC00OCAwIDAtNjQgNDggMHpNOTYgODBsMCA2NC00OCAwIDAtNjQgNDggMHpNNDE2IDIyNGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNnoiXX0seXF0PUQ5ZSx3cXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToieWluLXlhbmciLGljb246WzUxMiw1MTIsWzk3NzVdLCJmNmFkIiwiTTIyNCAxNjBhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMzIgMzUyYTI1NiAyNTYgMCAxIDAgMC01MTIgMjU2IDI1NiAwIDEgMCAwIDUxMnptMC00NDhjNTMgMCA5NiA0MyA5NiA5NnMtNDMgOTYtOTYgOTYtOTYgNDMtOTYgOTYgNDMgOTYgOTYgOTZDMTUwIDQ0OCA2NCAzNjIgNjQgMjU2UzE1MCA2NCAyNTYgNjR6TTIyNCAzNTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHoiXX0sa3F0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InN0b3AiLGljb246WzQ0OCw1MTIsWzkyMDldLCJmMDRkIiwiTTY0IDMybDMyMCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMnoiXX0sU3F0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRyb3dlbCIsaWNvbjpbNTc2LDUxMixbXSwiZTU4OSIsIk00MDcuOSAxODEuNEwyNzcuMyAzMTIgMzQyLjYgMzc3LjRjNy45IDcuOSAxMS4xIDE5LjQgOC40IDMwLjNzLTEwLjggMTkuNi0yMS41IDIyLjlsLTI1NiA4MGMtMTEuNCAzLjUtMjMuOCAuNS0zMi4yLTcuOXMtMTEuNS0yMC44LTcuOS0zMi4ybDgwLTI1NmMzLjMtMTAuNyAxMi0xOC45IDIyLjktMjEuNXMyMi40IC41IDMwLjMgOC40TDIzMiAyNjYuNyAzNjIuNiAxMzYuMWMtMTQuMy0xNC42LTE0LjItMzggLjMtNTIuNWw5NS40LTk1LjRjMjYuOS0yNi45IDcwLjUtMjYuOSA5Ny41IDBzMjYuOSA3MC41IDAgOTcuNWwtOTUuNCA5NS40Yy0xNC41IDE0LjUtMzcuOSAxNC42LTUyLjUgLjN6Il19LEw5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoYW5kLWJhY2stZmlzdCIsaWNvbjpbMzg0LDUxMixbImhhbmQtcm9jayJdLCJmMjU1IiwiTTcuNCAyNTMuNkMyLjYgMjQ1LjkgMCAyMzcuMSAwIDIyOGwwLTM2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4bDE2IDAgMC04MGMwLTI2LjUgMjEuNS00OCA0OC00OCAxNy4zIDAgMzIuNCA5LjEgNDAuOSAyMi44IDQuMy0yMi4xIDIzLjgtMzguOCA0Ny4xLTM4LjggMjMuNCAwIDQyLjkgMTYuOCA0Ny4xIDM4LjkgNy4zLTQuNCAxNS44LTYuOSAyNC45LTYuOSAyMi4xIDAgNDAuOCAxNSA0Ni4zIDM1LjQgNS41LTIuMiAxMS40LTMuNCAxNy43LTMuNCAyNi41IDAgNDggMjEuNSA0OCA0OGwwIDk2LjljMCA5LjktMi4zIDE5LjctNi44IDI4LjZsLTM5LjYgNzkuMWMtMTAuOCAyMS43LTMzIDM1LjQtNTcuMiAzNS40TDk2IDM1MmMtMTYuNSAwLTMxLjgtOC40LTQwLjYtMjIuNGwtNDgtNzZ6TTMyIDQ4MGwwLTQ4YzAtMTcuNyAxNC4zLTMyIDMyLTMybDI1NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgNDhjMCAxNy43LTE0LjMgMzItMzIgMzJMNjQgNTEyYy0xNy43IDAtMzItMTQuMy0zMi0zMnoiXX0sX3F0PUw5ZSxNcXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidGVtcGVyYXR1cmUtaGlnaCIsaWNvbjpbNTEyLDUxMixbXSwiZjc2OSIsIk05NiA5NmMwLTUzIDQzLTk2IDk2LTk2czk2IDQzIDk2IDk2bDAgMTY0LjdjMjkuNSAyNi40IDQ4IDY0LjcgNDggMTA3LjMgMCA3OS41LTY0LjUgMTQ0LTE0NCAxNDRTNDggNDQ3LjUgNDggMzY4YzAtNDIuNiAxOC41LTgxIDQ4LTEwNy4zTDk2IDk2em05NiAzMzZjMzUuMyAwIDY0LTI4LjcgNjQtNjQgMC0yNi45LTE2LjUtNDkuOS00MC01OS4zTDIxNiA5NmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDIxMi43Yy0yMy41IDkuNS00MCAzMi41LTQwIDU5LjMgMCAzNS4zIDI4LjcgNjQgNjQgNjR6TTQ2NCA4MGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek0zNTIgODBhODAgODAgMCAxIDEgMTYwIDAgODAgODAgMCAxIDEgLTE2MCAweiJdfSx6cXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZ3JlYXRlci10aGFuIixpY29uOls1MTIsNTEyLFs2Mjc2OV0sIjNlIiwiTTM0LjkgNTAuNmMtNy40IDE2LS40IDM1LjEgMTUuNiA0Mi41TDQwMy42IDI1NiA1MC42IDQxOWMtMTYgNy40LTIzLjEgMjYuNC0xNS42IDQyLjVzMjYuNCAyMyA0Mi41IDE1LjZsNDE2LTE5MmMxMS4zLTUuMiAxOC42LTE2LjYgMTguNi0yOS4xcy03LjMtMjMuOC0xOC42LTI5LjFMNzcuNCAzNWMtMTYtNy40LTM1LjEtLjQtNDIuNSAxNS42eiJdfSxDcXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY3J1dGNoIixpY29uOls1MTIsNTEyLFtdLCJmN2Y3IiwiTTI5Ny40IDkuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMGwxNjAgMTYwYzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwbC0xLjQtMS40LTE1OC42IDE1OC42Yy0xOCAxOC00Mi40IDI4LjEtNjcuOSAyOC4xbC01OSAwYy04LjUgMC0xNi42IDMuNC0yMi42IDkuNC02MS43IDYxLjctOTIuOCA5Mi44LTkzLjMgOTMuMy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM2wxNi0xNiAwIDAgNzcuMy03Ny4zYzYtNiA5LjQtMTQuMSA5LjQtMjIuNmwwLTU5YzAtMjUuNSAxMC4xLTQ5LjkgMjguMS02Ny45TDI5OC43IDU2IDI5Ny40IDU0LjZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zek0zNDQgMTAxLjNMMjYxLjMgMTg0IDMyOCAyNTAuNyA0MTAuNyAxNjggMzQ0IDEwMS4zem0tMTI4IDEyOGwtMzAuNiAzMC42Yy02IDYtOS40IDE0LjEtOS40IDIyLjZsMCA1My41IDUzLjUgMGM4LjUgMCAxNi42LTMuNCAyMi42LTkuNEwyODIuNyAyOTYgMjE2IDIyOS4zeiJdfSxFOWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic2VwdGFnb24iLGljb246WzU3Niw1MTIsWyJoZXB0YWdvbiJdLCJlODIwIiwiTTI2Ny40LTMxLjVjMTUuOS01LjUgMzMuNS00LjYgNDguOCAyLjdsMTcyLjQgODMgNi4zIDMuNWMxNC4yIDkgMjQuNSAyMy4zIDI4LjMgMzkuOWw0Mi42IDE4Ni41IDEuMiA3LjJjMS42IDE0LjMtMS43IDI4LjgtOS40IDQxLjFsLTQuMiA1LjktMTE5LjMgMTQ5LjZjLTEyLjEgMTUuMi0zMC42IDI0LjEtNTAgMjQuMWwtMTkxLjMgMGMtMTkuNSAwLTM3LjktOC45LTUwLTI0LjFMMjMuNSAzMzguNGMtMTIuMS0xNS4yLTE2LjctMzUuMi0xMi4zLTU0LjJsNDIuNi0xODYuNSAyLTdjNS42LTE1LjkgMTcuMi0yOSAzMi42LTM2LjRsMTcyLjQtODMgNi43LTIuN3oiXX0sVHF0PUU5ZSwkcXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic3RyZWV0LXZpZXciLGljb246WzUxMiw1MTIsW10sImYyMWQiLCJNMjU2IDBhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6TTIyNCAxNjBsNjQgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0xLjggMC0xMS4xIDk5LjVjLTEuOCAxNi4yLTE1LjUgMjguNS0zMS44IDI4LjVsLTM4LjcgMGMtMTYuMyAwLTMwLTEyLjMtMzEuOC0yOC41bC0xMS4xLTk5LjUtMS44IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtNDhjMC0zNS4zIDI4LjctNjQgNjQtNjR6TTQxMi40IDQwMC4yYy0xNi4xLTQuMi0zNC44LTcuNi01NS40LTEwLjJsNS4zLTQ3LjdjMjIuNyAyLjkgNDMuNyA2LjcgNjIuMSAxMS41IDIyLjQgNS44IDQyLjYgMTMuMyA1Ny44IDIzLjMgMTQuNyA5LjYgMjkuOCAyNC45IDI5LjggNDdzLTE1LjEgMzcuNC0yOS44IDQ3Yy0xNS4yIDkuOS0zNS41IDE3LjUtNTcuOCAyMy4zLTQ1LjEgMTEuNy0xMDUuMyAxNy44LTE2OC40IDE3LjhzLTEyMy4zLTYuMS0xNjguNC0xNy44QzY1LjIgNDg4LjQgNDUgNDgwLjkgMjkuOCA0NzEgMTUuMSA0NjEuNCAwIDQ0Ni4xIDAgNDI0czE1LjEtMzcuNCAyOS44LTQ3YzE1LjItOS45IDM1LjUtMTcuNSA1Ny44LTIzLjMgMTguNS00LjggMzkuNS04LjYgNjIuMS0xMS41TDE1NSAzOTBjLTIwLjYgMi42LTM5LjMgNi4xLTU1LjQgMTAuMi01Ni42IDE0LjYtNTYuNiAzMi45IDAgNDcuNSAzOS45IDEwLjMgOTUuOCAxNi4yIDE1Ni40IDE2LjJzMTE2LjUtNS45IDE1Ni40LTE2LjJjNTYuNi0xNC42IDU2LjYtMzIuOSAwLTQ3LjV6Il19LERxdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ3YXZlLXNxdWFyZSIsaWNvbjpbNTEyLDUxMixbXSwiZjgzZSIsIk02NCA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmwxNjAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDI4OCA5NiAwIDAtMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMybDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTMyIDAgMCAxMjhjMCAxNy43LTE0LjMgMzItMzIgMzJsLTE2MCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTI4OC05NiAwIDAgMTI4YzAgMTcuNy0xNC4zIDMyLTMyIDMybC02NCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDMyIDAgMC0xMjh6Il19LExxdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJhbmdsZS1sZWZ0IixpY29uOlsyNTYsNTEyLFs4MjQ5XSwiZjEwNCIsIk05LjQgMjMzLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDE2MCAxNjBjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0w3Ny4zIDI1NiAyMTQuNiAxMTguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtMTYwIDE2MHoiXX0sRXF0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNjcmV3ZHJpdmVyIixpY29uOls1NzYsNTEyLFsxMjk2OTFdLCJmNTRhIiwiTTM1Mi4xIDE0Ni43bDAtNDkuNmMwLTEwLjcgNS4zLTIwLjcgMTQuMi0yNi42TDQ4NS4yLTguN2M2LjMtNC4yIDE0LjgtMy40IDIwLjIgMmw0NS40IDQ1LjVjNS40IDUuNCA2LjIgMTMuOCAyIDIwLjJMNDczLjYgMTc3LjhjLTUuOSA4LjktMTUuOSAxNC4yLTI2LjYgMTQuMmwtNDkuNiAwLTkwLjcgOTAuN2MxNSAzMy4zIDguOSA3My45LTE4LjUgMTAxLjNMMTYyLjEgNTEwLjFjLTE4LjcgMTguNy00OS4xIDE4LjctNjcuOSAwTDM0LjEgNDQ5LjljLTE4LjctMTguNy0xOC43LTQ5LjEgMC02Ny45TDE2MC4xIDI1NmMyNy40LTI3LjQgNjcuOS0zMy42IDEwMS4zLTE4LjVsOTAuNy05MC43eiJdfSxQcXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidHJhY3RvciIsaWNvbjpbNTc2LDUxMixbMTI4NjY4XSwiZjcyMiIsIk0xNjAgOTZsMCA5NiAxMzMuNCAwLTU3LjYtOTYtNzUuOCAwek05NiAyMjNMOTYgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJsMTA3LjggMGMyMi41IDAgNDMuMyAxMS44IDU0LjkgMzEuMWw3Ny40IDEyOC45IDY0IDAgMC03MmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0bDAgNzIgNDggMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDQxLjVjMCAxNC4yLTYuMyAyNy44LTE3LjMgMzYuOWwtMzUgMjkuMmMyNi41IDE1LjIgNDQuMyA0My43IDQ0LjMgNzYuNCAwIDQ4LjYtMzkuNCA4OC04OCA4OHMtODgtMzkuNC04OC04OGMwLTE0LjQgMy41LTI4IDkuNi00MGwtMTAxLjIgMGMtMyAxMy40LTcuOSAyNi0xNC40IDM3LjcgNy43IDkuNCA3LjIgMjMuNC0xLjYgMzIuMmwtMjIuNiAyMi42Yy04LjggOC44LTIyLjcgOS4zLTMyLjIgMS42LTkuMyA1LjItMTkuMyA5LjMtMjkuOCAxMi4zLTEuMiAxMi4xLTExLjQgMjEuNi0yMy45IDIxLjZsLTMyIDBjLTEyLjQgMC0yMi43LTkuNS0yMy45LTIxLjYtMTAuNS0zLTIwLjQtNy4yLTI5LjgtMTIuMy05LjQgNy43LTIzLjQgNy4yLTMyLjItMS42TDM1LjUgNDUzLjhjLTguOC04LjgtOS4zLTIyLjctMS42LTMyLjItNS4yLTkuMy05LjMtMTkuMy0xMi4zLTI5LjgtMTIuMS0xLjItMjEuNi0xMS40LTIxLjYtMjMuOWwwLTMyYzAtMTIuNCA5LjUtMjIuNyAyMS42LTIzLjkgMy0xMC41IDcuMi0yMC40IDEyLjMtMjkuOC03LjctOS40LTcuMi0yMy40IDEuNi0zMi4ybDIyLjYtMjIuNmM4LjgtOC44IDIyLjctOS4zIDMyLjItMS42IDEuOS0xIDMuNy0yIDUuNy0zem02NCA2NWE2NCA2NCAwIDEgMCAwIDEyOCA2NCA2NCAwIDEgMCAwLTEyOHpNNDQwIDQyNGE0MCA0MCAwIDEgMCA4MCAwIDQwIDQwIDAgMSAwIC04MCAweiJdfSxJcXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYnJpZGdlLWNpcmNsZS14bWFyayIsaWNvbjpbNTc2LDUxMixbXSwiZTRjYiIsIk0zMiAzMkMxNC4zIDMyIDAgNDYuMyAwIDY0UzE0LjMgOTYgMzIgOTZsOCAwIDAgNjQtNDAgMCAwIDExMmMzNy42IDkuNCA2NCA0My4yIDY0IDgybDAgOTRjMCAxNy43IDE0LjMgMzIgMzIgMzJsMzIgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTY0YzAtNTMgNDMtOTYgOTYtOTYgNi40IDAgMTIuNyAuNiAxOC43IDEuOCAzNC43LTQ5LjUgOTIuMi04MS44IDE1Ny4zLTgxLjggMjguNiAwIDU1LjYgNi4yIDgwIDE3LjRsMC02NS40LTQwIDAgMC02NCA4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMMzIgMzJ6TTQyNCA5NmwwIDY0LTgwIDAgMC02NCA4MCAwek0yOTYgOTZsMCA2NC04MCAwIDAtNjQgODAgMHpNODggOTZsODAgMCAwIDY0LTgwIDAgMC02NHpNNDMyIDU0NGExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTU5LjMtMTgwLjdsLTM2LjcgMzYuNyAzNi43IDM2LjdjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMGwtMzYuNy0zNi43LTM2LjcgMzYuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNmwzNi43LTM2LjctMzYuNy0zNi43Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBsMzYuNyAzNi43IDM2LjctMzYuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZ6Il19LEFxdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ2aWFscyIsaWNvbjpbNTEyLDUxMixbXSwiZjQ5MyIsIk0zMiAwQzE0LjMgMCAwIDE0LjMgMCAzMlMxNC4zIDY0IDMyIDY0bDAgMzUyYzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZsMC0zNTIgNjQgMCAwIDM1MmMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2bDAtMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMyUzQ5Ny43IDAgNDgwIDBMMzIgMHpNMTYwIDY0bDAgMTI4LTY0IDAgMC0xMjggNjQgMHptMjU2IDBsMCAxMjgtNjQgMCAwLTEyOCA2NCAweiJdfSxOcXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic3RldGhvc2NvcGUiLGljb246WzU3Niw1MTIsWzEyOTY1OF0sImYwZjEiLCJNMzIgNDhDMzIgMjEuNSA1My41IDAgODAgMGw0OCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0zMiAwIDAgMTI4YzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZsMC0xMjgtMzIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJTMjM4LjMgMCAyNTYgMGw0OCAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgMTQ0YzAgNzcuNC01NSAxNDItMTI4IDE1Ni44bDAgMTkuMmMwIDYxLjkgNTAuMSAxMTIgMTEyIDExMnMxMTItNTAuMSAxMTItMTEybDAtODUuNWMtMzcuMy0xMy4yLTY0LTQ4LjctNjQtOTAuNSAwLTUzIDQzLTk2IDk2LTk2czk2IDQzIDk2IDk2YzAgNDEuOC0yNi43IDc3LjQtNjQgOTAuNWwwIDg1LjVjMCA5Ny4yLTc4LjggMTc2LTE3NiAxNzZTMTYwIDQ2NS4yIDE2MCAzNjhsMC0xOS4yQzg3IDMzNCAzMiAyNjkuNCAzMiAxOTJMMzIgNDh6TTQ4MCAyMjRhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0eiJdfSxScXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicG9kY2FzdCIsaWNvbjpbNDQ4LDUxMixbXSwiZjJjZSIsIk0zMzYgMzU5LjhjMzkuMS0zMi4zIDY0LTgxLjEgNjQtMTM1LjggMC05Ny4yLTc4LjgtMTc2LTE3Ni0xNzZTNDggMTI2LjggNDggMjI0QzQ4IDI3OC43IDcyLjkgMzI3LjUgMTEyIDM1OS44IDExMi40IDM3Ny40IDExNS4yIDQwMC4yIDExOC40IDQyMS42IDQ4IDM4My45IDAgMzA5LjUgMCAyMjQgMCAxMDAuMyAxMDAuMyAwIDIyNCAwUzQ0OCAxMDAuMyA0NDggMjI0YzAgODUuNi00OCAxNTkuOS0xMTguNSAxOTcuNiAzLjMtMjEuNCA2LTQ0LjIgNi40LTYxLjh6bS0xNC01My40Yy04LjMtMTIuNi0xOS4yLTIxLjYtMzAuNC0yNy44LTIuMS0xLjEtNC4yLTIuMi02LjMtMy4yIDExLjctMTMuOSAxOC44LTMxLjkgMTguOC01MS41IDAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwYzAgMTkuNiA3LjEgMzcuNiAxOC44IDUxLjUtMi4xIDEtNC4yIDItNi4zIDMuMi0xMS4yIDYuMi0yMi4xIDE1LjItMzAuNCAyNy44LTE4LjgtMjIuMy0zMC4xLTUxLTMwLjEtODIuNCAwLTcwLjcgNTcuMy0xMjggMTI4LTEyOHMxMjggNTcuMyAxMjggMTI4YzAgMzEuNC0xMS4zIDYwLjItMzAuMSA4Mi40ek0yMjQgMzEyYzMyLjkgMCA2NCA4LjYgNjQgNDMuOCAwIDMzLTEyLjkgMTA0LjEtMjAuNiAxMzIuOS01LjEgMTktMjQuNSAyMy40LTQzLjQgMjMuNHMtMzguMi00LjQtNDMuNC0yMy40Yy03LjgtMjguNS0yMC42LTk5LjctMjAuNi0xMzIuOCAwLTM1LjEgMzEuMS00My44IDY0LTQzLjh6bTAtMTI4YTQwIDQwIDAgMSAxIDAgODAgNDAgNDAgMCAxIDEgMC04MHoiXX0sT3F0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImFycm93LXVwLXJpZ2h0LWRvdHMiLGljb246WzUxMiw1MTIsW10sImU0YjciLCJNOTYgMzJDNzguMyAzMiA2NCA0Ni4zIDY0IDY0Uzc4LjMgOTYgOTYgOTZMMTE0LjcgOTYgOS40IDIwMS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDE2MCAxNDEuMyAxNjAgMTYwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC05NmMwLTE3LjctMTQuMy0zMi0zMi0zMkw5NiAzMnpNNDAzLjggNzAuMWEzOC4xIDM4LjEgMCAxIDAgNzYuMiAwIDM4LjEgMzguMSAwIDEgMCAtNzYuMiAwek0yNzkuNyAxOTQuMmEzOC4xIDM4LjEgMCAxIDAgNzYuMiAwIDM4LjEgMzguMSAwIDEgMCAtNzYuMiAwem0xNjIuMi0zOC4xYTM4LjEgMzguMSAwIDEgMCAwIDc2LjIgMzguMSAzOC4xIDAgMSAwIDAtNzYuMnpNMTU2LjIgMzE3LjhhMzguMSAzOC4xIDAgMSAwIDc2LjIgMCAzOC4xIDM4LjEgMCAxIDAgLTc2LjIgMHptMTYxLjYtMzguMWEzOC4xIDM4LjEgMCAxIDAgMCA3Ni4yIDM4LjEgMzguMSAwIDEgMCAwLTc2LjJ6bTg2LjEgMzguMWEzOC4xIDM4LjEgMCAxIDAgNzYuMiAwIDM4LjEgMzguMSAwIDEgMCAtNzYuMiAwek03MC4xIDQwMy44YTM4LjEgMzguMSAwIDEgMCAwIDc2LjIgMzguMSAzOC4xIDAgMSAwIDAtNzYuMnptODYuMSAzOC4xYTM4LjEgMzguMSAwIDEgMCA3Ni4yIDAgMzguMSAzOC4xIDAgMSAwIC03Ni4yIDB6bTE2MS42LTM4LjFhMzguMSAzOC4xIDAgMSAwIDAgNzYuMiAzOC4xIDM4LjEgMCAxIDAgMC03Ni4yem04Ni4xIDM4LjFhMzguMSAzOC4xIDAgMSAwIDc2LjIgMCAzOC4xIDM4LjEgMCAxIDAgLTc2LjIgMHoiXX0sRnF0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNoZXNzLXF1ZWVuIixpY29uOls1MTIsNTEyLFs5ODE5XSwiZjQ0NSIsIk0yNTYgODBhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2ek01LjUgMTg1TDEyOCAzODQgNzEuOCA0NTQuM2MtNSA2LjMtNy44IDE0LjEtNy44IDIyLjIgMCAxOS42IDE1LjkgMzUuNSAzNS41IDM1LjVsMzEyLjkgMGMxOS42IDAgMzUuNS0xNS45IDM1LjUtMzUuNSAwLTguMS0yLjctMTUuOS03LjgtMjIuMkwzODQgMzg0IDUwNi41IDE4NWMzLjYtNS45IDUuNS0xMi43IDUuNS0xOS42bDAtLjZjMC0yMC4zLTE2LjUtMzYuOC0zNi44LTM2LjgtNy4zIDAtMTQuNCAyLjItMjAuNCA2LjJsLTE2LjkgMTEuM2MtMTIuNyA4LjUtMjkuNiA2LjgtNDAuNC00bC0zNC4xLTM0LjFDMzU2LjEgMTAwLjEgMzQ2LjIgOTYgMzM2IDk2cy0yMC4xIDQuMS0yNy4zIDExLjNsLTMwLjEgMzAuMWMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBsLTMwLjEtMzAuMUMxOTYuMSAxMDAuMSAxODYuMiA5NiAxNzYgOTZzLTIwLjEgNC4xLTI3LjMgMTEuM2wtMzQuMSAzNC4xYy0xMC44IDEwLjgtMjcuNyAxMi41LTQwLjQgNEw1Ny4zIDEzNC4yYy02LjEtNC0xMy4yLTYuMi0yMC40LTYuMi0yMC4zIDAtMzYuOCAxNi41LTM2LjggMzYuOGwwIC42YzAgNi45IDEuOSAxMy43IDUuNSAxOS42eiJdfSxCcXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYW5jaG9yLWNpcmNsZS1leGNsYW1hdGlvbiIsaWNvbjpbNjQwLDUxMixbXSwiZTRhYiIsIk0zMjAuNSA5NmEzMiAzMiAwIDEgMSAtNjQgMCAzMiAzMiAwIDEgMSA2NCAwem0tMzItOTZjLTUzIDAtOTYgNDMtOTYgOTYgMCA0MS44IDI2LjcgNzcuNCA2NCA5MC41bDAgMjU3LjljLTYyLjktMTQuMy0xMTAuMi02OS43LTExMS45LTEzNi41bDE2LjEgMTQuMWMxMCA4LjcgMjUuMSA3LjcgMzMuOS0yLjNzNy43LTI1LjEtMi4zLTMzLjlsLTY0LTU2Yy05LTcuOS0yMi42LTcuOS0zMS42IDBsLTY0IDU2Yy0xMCA4LjctMTEgMjMuOS0yLjMgMzMuOXMyMy45IDExIDMzLjkgMi4zbDE2LjItMTQuMmMyLjEgMTEzLjEgOTQuNCAyMDQuMSAyMDggMjA0LjEgMTYuNiAwIDMyLjctMS45IDQ4LjItNS42LTIwLjMtMzAuNS0zMi4yLTY3LTMyLjItMTA2LjQgMC0yNy4zIDUuNy01My4zIDE2LTc2LjlsMC0xMzYuNmMzNy4zLTEzLjIgNjQtNDguNyA2NC05MC41IDAtNTMtNDMtOTYtOTYtOTZ6bTIwOCA1NDRhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0wLTEwMGEyMCAyMCAwIDEgMSAwIDQwIDIwIDIwIDAgMSAxIDAtNDB6bTAtMTQwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtODBjMC04LjggNy4yLTE2IDE2LTE2eiJdfSxQOWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZWxsaXBzaXMtdmVydGljYWwiLGljb246WzEyOCw1MTIsWyJlbGxpcHNpcy12Il0sImYxNDIiLCJNNjQgMTQ0YTU2IDU2IDAgMSAxIDAtMTEyIDU2IDU2IDAgMSAxIDAgMTEyem0wIDIyNGMzMC45IDAgNTYgMjUuMSA1NiA1NnMtMjUuMSA1Ni01NiA1Ni01Ni0yNS4xLTU2LTU2IDI1LjEtNTYgNTYtNTZ6bTU2LTExMmMwIDMwLjktMjUuMSA1Ni01NiA1NnMtNTYtMjUuMS01Ni01NiAyNS4xLTU2IDU2LTU2IDU2IDI1LjEgNTYgNTZ6Il19LEhxdD1QOWUscXF0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImhlYXJ0LWNpcmNsZS1leGNsYW1hdGlvbiIsaWNvbjpbNTc2LDUxMixbXSwiZTRmZSIsIk0yNDEgODcuMWwxNSAyMC43IDE1LTIwLjdDMjk2IDUyLjUgMzM2LjIgMzIgMzc4LjkgMzIgNDUyLjQgMzIgNTEyIDkxLjYgNTEyIDE2NS4xbDAgMi42YzAgMTcuNi0zLjQgMzUuNi05LjUgNTMuNy0yMS44LTguNi00NS42LTEzLjQtNzAuNS0xMy40LTEwNiAwLTE5MiA4Ni0xOTIgMTkyIDAgMjguNSA2LjIgNTUuNiAxNy40IDgwLS41IDAtLjkgMC0xLjQgMC0xNS41IDAtMzAuOC00LjYtNDMuMS0xNC4xLTczLTU1LjctMjEyLjktMTg2LTIxMi45LTI5OC4ybDAtMi42QzAgOTEuNiA1OS42IDMyIDEzMy4xIDMyIDE3NS44IDMyIDIxNiA1Mi41IDI0MSA4Ny4xek00MzIgMjU2YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptMCAyMjhhMjAgMjAgMCAxIDAgMC00MCAyMCAyMCAwIDEgMCAwIDQwem0wLTE4MGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgODBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmwwLTgwYzAtOC44LTcuMi0xNi0xNi0xNnoiXX0sanF0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJ1aWxkaW5nLWNpcmNsZS1leGNsYW1hdGlvbiIsaWNvbjpbNTc2LDUxMixbXSwiZTRkMyIsIk05NiAwQzYwLjcgMCAzMiAyOC43IDMyIDY0bDAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDE4MCAwYy0xMC41LTE0LjYtMTktMzAuNy0yNS4xLTQ4bC03NC45IDAgMC04MGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwzMiAwYzIgMCA0IC4yIDUuOSAuNSA2LTIzLjYgMTYuMy00NS40IDMwLjEtNjQuNWwtNCAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCA0YzI3LjUtMTkuOCA2MC4zLTMyLjQgOTYtMzUuNEw0MTYgNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRMOTYgMHptMzIgMTEyYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJ6TTI3MiA5NmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2ek0xMjggMjQwYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJ6TTQzMiA1NDRhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0wLTEwMGEyMCAyMCAwIDEgMSAwIDQwIDIwIDIwIDAgMSAxIDAtNDB6bTAtMTQwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtODBjMC04LjggNy4yLTE2IDE2LTE2eiJdfSxWcXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGVyc29uLWFycm93LXVwLWZyb20tbGluZSIsaWNvbjpbNTc2LDUxMixbXSwiZTUzOSIsIk0xOTItMzJhNTYgNTYgMCAxIDEgMCAxMTIgNTYgNTYgMCAxIDEgMC0xMTJ6TTMxOC4zIDI5OS4xbC00Ni4zLTYyLjQgMCAyNDMuMyAyNzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkwzMiA1NDRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsODAgMCAwLTI0My4zLTQ2LjMgNjIuNGMtMTAuNSAxNC4yLTMwLjYgMTcuMi00NC44IDYuNnMtMTcuMi0zMC42LTYuNi00NC44bDcwLjUtOTVDMTEwIDEzMiAxNDkuNyAxMTIgMTkyIDExMnM4MiAyMCAxMDcuMiA1My45bDcwLjUgOTVjMTAuNSAxNC4yIDcuNiAzNC4yLTYuNiA0NC44cy0zNC4yIDcuNi00NC44LTYuNnpNMjA4IDQ4MGwwLTEyOGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNmwwIDEyOCAzMiAwek01NjYuNiAxMDIuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBMNDk2IDc3LjMgNDk2IDIyNGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTE0Ni43LTI1LjQgMjUuNGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNsODAtODBjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsODAgODBjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjN6Il19LFVxdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJub3QtZXF1YWwiLGljb246WzQ0OCw1MTIsW10sImY1M2UiLCJNMzc4LjYgODEuOGM5LjgtMTQuNyA1LjgtMzQuNi04LjktNDQuNHMtMzQuNi01LjgtNDQuNCA4LjlMMjcwLjkgMTI4IDMyIDEyOGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwxOTYuMiAwLTg1LjMgMTI4LTExMC45IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsNjguMiAwLTMwLjggNDYuMmMtOS44IDE0LjctNS44IDM0LjYgOC45IDQ0LjRzMzQuNiA1LjggNDQuNC04LjlMMTc3LjEgMzg0IDQxNiAzODRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTE5Ni4yIDAgODUuMy0xMjggMTEwLjkgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtNjguMiAwIDMwLjgtNDYuMnoiXX0sV3F0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRyYWluLXRyYW0iLGljb246WzM4NCw1MTIsWzEyODY1MF0sImU1YjQiLCJNMCA4QzAtNS4zIDEwLjctMTYgMjQtMTZsMzM2IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRsMCAzMmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTgtMTIwIDAgMCA2NCA0MCAwYzUzIDAgOTYgNDMgOTYgOTZsMCAxNjBjMCAzMS4yLTE0LjkgNTktMzggNzYuNWw2NC4zIDc2YzguNiAxMC4xIDcuMyAyNS4zLTIuOCAzMy44cy0yNS4zIDcuMy0zMy44LTIuOGwtNzQuNi04OC4xYy0zLjYgLjQtNy4zIC42LTExLjEgLjZsLTEyOCAwYy0zLjggMC03LjUtLjItMTEuMS0uNkw0Mi4zIDUzNS41Yy04LjYgMTAuMS0yMy43IDExLjQtMzMuOCAyLjhzLTExLjQtMjMuNy0yLjgtMzMuOGw2NC4zLTc2QzQ2LjkgNDExIDMyIDM4My4yIDMyIDM1MmwwLTE2MGMwLTUzIDQzLTk2IDk2LTk2bDQwIDAgMC02NC0xMjAgMCAwIDhjMCAxMy4zLTEwLjcgMjQtMjQgMjRTMCA1My4zIDAgNDBMMCA4ek0xMjggMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMybDEyOCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMzJjMC0xNy43LTE0LjMtMzItMzItMzJsLTEyOCAwem0zMiAxOTJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptOTYgMzJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0eiJdfSxHcXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGxhbmUtZGVwYXJ0dXJlIixpY29uOls1NzYsNTEyLFsxMjg3NDddLCJmNWIwIiwiTTM3MiAxNDMuOUwxNzIuNyA0MC4yYy04LTQuMS0xNy4zLTQuOC0yNS43LTEuN2wtNDEuMSAxNWMtMTAuMyAzLjctMTMuOCAxNi40LTcuMSAyNUwyMDAuMyAyMDYuNCAxMDAuMSAyNDIuOCA0MCAyMDYuMmMtNi4yLTMuOC0xMy44LTQuNS0yMC43LTIuMUwzIDIxMC4xYy05LjQgMy40LTEzLjQgMTQuNS04LjMgMjMuMWw1My42IDkxLjhjMTUuNiAyNi43IDQ4LjEgMzguNCA3Ny4xIDI3LjhsMTIuOS00LjcgMCAwIDM5OC40LTE0NWMyOS4xLTEwLjYgNDQtNDIuNyAzMy41LTcxLjhzLTQyLjctNDQtNzEuOC0zMy41TDM3MiAxNDMuOXpNMzIuMiA0NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsNTEyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTUxMiAweiJdfSxJOWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicmlnaHQtdG8tYnJhY2tldCIsaWNvbjpbNTEyLDUxMixbInNpZ24taW4tYWx0Il0sImYyZjYiLCJNMzQ1IDI3M2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOUwyMDEgOTVjLTYuOS02LjktMTcuMi04LjktMjYuMi01LjJTMTYwIDEwMi4zIDE2MCAxMTJsMCA4MC0xMTIgMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCAzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OGwxMTIgMCAwIDgwYzAgOS43IDUuOCAxOC41IDE0LjggMjIuMnMxOS4zIDEuNyAyNi4yLTUuMkwzNDUgMjczem03IDE0M2MtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw2NCAwYzUzIDAgOTYtNDMgOTYtOTZsMC0yNTZjMC01My00My05Ni05Ni05NmwtNjQgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw2NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMjU2YzAgMTcuNy0xNC4zIDMyLTMyIDMybC02NCAweiJdfSxLcXQ9STllLFlxdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzZC1jYXJkIixpY29uOlszODQsNTEyLFtdLCJmN2MyIiwiTTM4NCA2NGMwLTM1LjMtMjguNy02NC02NC02NEwxMjUuMyAwQzEwOC4zIDAgOTIgNi43IDgwIDE4LjdMMTguNyA4MEM2LjcgOTIgMCAxMDguMyAwIDEyNS4zTDAgNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0bDI1NiAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzg0ek0xNjAgODhsMCA0OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTQ4YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6bTg4IDBsMCA0OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTQ4YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6bTg4IDBsMCA0OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTQ4YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6Il19LFpxdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJob3VzZS1jaXJjbGUtZXhjbGFtYXRpb24iLGljb246WzY0MCw1MTIsW10sImU1MGEiLCJNNDk2IDU0NGExNDQgMTQ0IDAgMSAxIDAtMjg4IDE0NCAxNDQgMCAxIDEgMCAyODh6TTI2OC42IDYuNWMxMi4yLTkuMyAyOS43LTguNyA0MS4yIDJsMjE3LjYgMjAyYy0xMC4yLTEuNy0yMC43LTIuNi0zMS4zLTIuNi03OC42IDAtMTQ2LjEgNDcuMi0xNzUuOCAxMTQuOC01LjEtMS44LTEwLjUtMi44LTE2LjItMi44bC0zMiAwYy0yNi41IDAtNDggMjEuNS00OCA0OGwwIDk2IDkxIDBjNi4xIDE3LjMgMTQuNiAzMy40IDI1LjEgNDhMMTQ0IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRsMC0xNzYtMTYgMGMtMTMuMiAwLTI1LTguMS0yOS44LTIwLjNzLTEuNi0yNi4yIDgtMzUuMWwyMjQtMjA4IDIuNC0yek00OTYgNDQ0YTIwIDIwIDAgMSAwIDAgNDAgMjAgMjAgMCAxIDAgMC00MHptMC0xNDBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDgwYzAgOC44IDcuMiAxNiAxNiAxNiA4LjggMCAxNi03LjIgMTYtMTZsMC04MGMwLTguOC03LjItMTYtMTYtMTZ6Il19LEliPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNoZWtlbC1zaWduIixpY29uOls0NDgsNTEyLFs4MzYyLCJpbHMiLCJzaGVrZWwiLCJzaGVxZWwiLCJzaGVxZWwtc2lnbiJdLCJmMjBiIiwiTTMyIDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRMMCA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTM1MiAxMjggMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDE2MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTYwYzAtNzAuNy01Ny4zLTEyOC0xMjgtMTI4TDMyIDMyek0zMjAgNDgwYzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4bDAtMjg4YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgMjg4YzAgMzUuMy0yOC43IDY0LTY0IDY0bC0xMjggMCAwLTIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDI1NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmwxNjAgMHoiXX0sWHF0PUliLFFxdD1JYixKcXQ9SWIsZWp0PUliLHRqdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJyYWRpbyIsaWNvbjpbNTEyLDUxMixbMTI4MjUxXSwiZjhkNyIsIk00OTQuOCAxNWMxMi43LTMuNyAyMC0xNy4xIDE2LjMtMjkuOFM0OTQtMzQuOCA0ODEuMy0zMUw1MS44IDk0LjlDNDIuNCA5Ny42IDMzLjkgMTAyLjEgMjYuNiAxMDggMTAuNSAxMTkuNyAwIDEzOC42IDAgMTYwTDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDM4NCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMjU2YzAtMzUuMy0yOC43LTY0LTY0LTY0TDIxOC41IDk2IDQ5NC44IDE1ek0zNjggMjA4YTgwIDgwIDAgMSAxIDAgMTYwIDgwIDgwIDAgMSAxIDAtMTYwek02NCAyNDhjMC0xMy4zIDEwLjctMjQgMjQtMjRsMTEyIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRMODggMjcyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHptMCA5NmMwLTEzLjMgMTAuNy0yNCAyNC0yNGwxMTIgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEw4OCAzNjhjLTEzLjMgMC0yNC0xMC43LTI0LTI0eiJdfSxBOWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaGFuZC1kb3RzIixpY29uOls1MTIsNTEyLFsiYWxsZXJnaWVzIl0sImY0NjEiLCJNMjg4IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgMjA4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtMTc2YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgMjcyYzAgMS41IDAgMy4xIC4xIDQuNkw2Ny42IDI4M2MtMTYtMTUuMi00MS4zLTE0LjYtNTYuNiAxLjRTLTMuNiAzMjUuNyAxMi40IDM0MUwxMjQuOCA0NDhjNDMuMSA0MS4xIDEwMC40IDY0IDE2MCA2NGwxOS4yIDBjOTcuMiAwIDE3Ni03OC44IDE3Ni0xNzZsMC0yMDhjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAxMTJjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC0xNzZjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAxNzZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC0yMDh6TTIwMCAzNTJhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptMTIwLTU2YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptNDAgODhhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptLTg4IDI0YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHoiXX0sYWp0PUE5ZSxOOWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYm9vay1za3VsbCIsaWNvbjpbNDQ4LDUxMixbImJvb2stZGVhZCJdLCJmNmI3IiwiTTk2IDUxMmwzMjAgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwwLTY2LjdjMTguNi02LjYgMzItMjQuNCAzMi00NS4zbDAtMjg4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4TDk2IDBDNDMgMCAwIDQzIDAgOTZMMCA0MTZjMCA1MyA0MyA5NiA5NiA5NnpNNjQgNDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMybDI1NiAwIDAgNjQtMjU2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek0yNzIgMTYzLjJsMCAxMi44YzAgOC44LTcuMiAxNi0xNiAxNmwtNjQgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMTIuOGMtMTkuNC0xMS43LTMyLTMwLjMtMzItNTEuMiAwLTM1LjMgMzUuOC02NCA4MC02NHM4MCAyOC43IDgwIDY0YzAgMjAuOS0xMi42IDM5LjUtMzIgNTEuMnpNMjA4IDExMmExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem00OCAxNmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6bTc0LjIgOTUuN2M0LjYgMTAuMSAuMSAyMS45LTkuOSAyNi41bC00Ny45IDIxLjggNDcuOSAyMS44YzEwLjEgNC42IDE0LjUgMTYuNCA5LjkgMjYuNXMtMTYuNCAxNC41LTI2LjUgOS45TDIyNCAyOTQgMTQ0LjMgMzMwLjJjLTEwLjEgNC42LTIxLjkgLjEtMjYuNS05LjlzLS4xLTIxLjkgOS45LTI2LjVsNDcuOS0yMS44LTQ3LjktMjEuOGMtMTAuMS00LjYtMTQuNS0xNi40LTkuOS0yNi41czE2LjQtMTQuNSAyNi41LTkuOUwyMjQgMjUwIDMwMy43IDIxMy44YzEwLjEtNC42IDIxLjktLjEgMjYuNSA5Ljl6Il19LHNqdD1OOWUsUjllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InVubG9jay1rZXlob2xlIixpY29uOlszODQsNTEyLFsidW5sb2NrLWFsdCJdLCJmMTNlIiwiTTE5MiAzMmMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCA2NCAxOTIgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDIyNGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgMjI0YzAtMzUuMyAyOC43LTY0IDY0LTY0bDAtNjRjMC03MC43IDU3LjMtMTI4IDEyOC0xMjggNjMuNSAwIDExNi4xIDQ2LjEgMTI2LjIgMTA2LjcgMi45IDE3LjQtOC44IDMzLjktMjYuMyAzNi45cy0zMy45LTguOC0zNi45LTI2LjNDMjUwIDU1LjEgMjIzLjcgMzIgMTkyIDMyem00MCAzMjhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTgwIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsODAgMHoiXX0saWp0PVI5ZSxPOWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmlsZS1hcnJvdy11cCIsaWNvbjpbMzg0LDUxMixbImZpbGUtdXBsb2FkIl0sImY1NzQiLCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBMMjEzLjUgMGMxNyAwIDMzLjMgNi43IDQ1LjMgMTguN0wzNjUuMyAxMjUuM2MxMiAxMiAxOC43IDI4LjMgMTguNyA0NS4zTDM4NCA0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDY0em0yMDgtNS41bDAgOTMuNWMwIDEzLjMgMTAuNyAyNCAyNCAyNEwzMjUuNSAxNzYgMjA4IDU4LjV6TTIwOSAyNjNjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC02NCA2NGMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDIzLTIzIDAgODYuMWMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtODYuMSAyMyAyM2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTY0LTY0eiJdfSxyanQ9TzllLEY5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmYWNlLWdyaW4tdGVhcnMiLGljb246WzY0MCw1MTIsWzEyODUxNCwiZ3Jpbi10ZWFycyJdLCJmNTg4IiwiTTU1NC44IDIwMy40bDE2LjMgMi4zQzU0Ny43IDg4LjQgNDQ0LjIgMCAzMjAgMFM5Mi4zIDg4LjQgNjguOSAyMDUuN2wxNi4zLTIuM2MzNy01LjMgNjguNiAyNi40IDYzLjQgNjMuNGwtNi43IDQ2LjdjLTQuMSAyOS0yMS42IDUzLjItNDUuOCA2Ni44IDQzLjcgNzguNSAxMjcuNiAxMzEuNyAyMjMuOCAxMzEuN3MxODAuMS01My4xIDIyMy44LTEzMS43Yy0yNC4xLTEzLjUtNDEuNi0zNy44LTQ1LjgtNjYuOGwtNi43LTQ2LjdjLTUuMy0zNyAyNi40LTY4LjYgNjMuNC02My40ek00NzAuMyAzMjYuOUM0NDcuOSAzODguMiAzODkuMSA0MzIgMzIwIDQzMlMxOTIuMSAzODguMiAxNjkuNyAzMjYuOWMtNC4zLTExLjggNy43LTIxLjggMTkuNi0xOC4xIDM5LjIgMTIuMiA4My43IDE5LjEgMTMwLjcgMTkuMXM5MS41LTYuOSAxMzAuNy0xOS4xYzExLjktMy43IDIzLjkgNi4zIDE5LjYgMTguMXpNMjEyIDIwOGwwIDhjMCAxMS05IDIwLTIwIDIwcy0yMC05LTIwLTIwbDAtOGMwLTM3LjYgMzAuNC02OCA2OC02OHM2OCAzMC40IDY4IDY4bDAgOGMwIDExLTkgMjAtMjAgMjBzLTIwLTktMjAtMjBsMC04YzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4em0xODgtMjhjLTE1LjUgMC0yOCAxMi41LTI4IDI4bDAgOGMwIDExLTkgMjAtMjAgMjBzLTIwLTktMjAtMjBsMC04YzAtMzcuNiAzMC40LTY4IDY4LTY4czY4IDMwLjQgNjggNjhsMCA4YzAgMTEtOSAyMC0yMCAyMHMtMjAtOS0yMC0yMGwwLThjMC0xNS41LTEyLjUtMjgtMjgtMjh6TTY0MCAzMDAuNmMwLTI1LjYtMTguOC00Ny4zLTQ0LjEtNTAuOUw1NDkuMSAyNDNjLTEwLjYtMS41LTE5LjYgNy41LTE4LjEgMTguMWw2LjcgNDYuN2MzLjYgMjUuMyAyNS4zIDQ0LjEgNTAuOSA0NC4xIDI4LjQgMCA1MS40LTIzIDUxLjQtNTEuNHptLTY0MCAwQzAgMzI5IDIzIDM1MiA1MS40IDM1MiA3NyAzNTIgOTguNyAzMzMuMiAxMDIuMyAzMDcuOWw2LjctNDYuN2MxLjUtMTAuNi03LjUtMTkuNi0xOC4xLTE4LjFsLTQ2LjcgNi43QzE4LjggMjUzLjMgMCAyNzUgMCAzMDAuNnoiXX0sb2p0PUY5ZSxsZj17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwZW4tdG8tc3F1YXJlIixpY29uOls1MTIsNTEyLFsiZWRpdCJdLCJmMDQ0IiwiTTQ3MS42IDIxLjdjLTIxLjktMjEuOS01Ny4zLTIxLjktNzkuMiAwTDM2OCA0Ni4xIDQ2NS45IDE0NCA0OTAuMyAxMTkuNmMyMS45LTIxLjkgMjEuOS01Ny4zIDAtNzkuMkw0NzEuNiAyMS43em0tMjk5LjIgMjIwYy02LjEgNi4xLTEwLjggMTMuNi0xMy41IDIxLjlsLTI5LjYgODguOGMtMi45IDguNi0uNiAxOC4xIDUuOCAyNC42czE1LjkgOC43IDI0LjYgNS44bDg4LjgtMjkuNmM4LjItMi43IDE1LjctNy40IDIxLjktMTMuNUw0MzIgMTc3LjkgMzM0LjEgODAgMTcyLjQgMjQxLjd6TTk2IDY0QzQzIDY0IDAgMTA3IDAgMTYwTDAgNDE2YzAgNTMgNDMgOTYgOTYgOTZsMjU2IDBjNTMgMCA5Ni00MyA5Ni05NmwwLTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgOTZjMCAxNy43LTE0LjMgMzItMzIgMzJMOTYgNDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTI1NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmw5NiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDk2IDY0eiJdfSxuanQ9bGYsQjllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImVhcnRoLWV1cm9wZSIsaWNvbjpbNTEyLDUxMixbImdsb2JlLWV1cm9wZSJdLCJmN2EyIiwiTTI1Ni4yIDQ4YzExNC44IC4xIDIwNy44IDkzLjIgMjA3LjggMjA4IDAgMjIuMS0zLjQgNDMuNC05LjggNjMuNC0yIC40LTQuMSAuNi02LjIgLjZsLTIuNyAwYy04LjUgMC0xNi42LTMuNC0yMi42LTkuNGwtMjkuMy0yOS4zYy02LTYtOS40LTE0LjEtOS40LTIyLjZsMC01MC43YzAtOC44IDcuMi0xNiAxNi0xNnMxNi03LjIgMTYtMTYtNy4yLTE2LTE2LTE2bC0yNCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMtMTAuNyAyNC0yNCAyNGwtNTYgMGMtOC44IDAtMTYgNy4yLTE2IDE2cy03LjIgMTYtMTYgMTZsLTI1LjQgMGMtMTIuNSAwLTIyLjYtMTAuMS0yMi42LTIyLjYgMC02IDIuNC0xMS44IDYuNi0xNmw3MC4xLTcwLjFjMi4xLTIuMSAzLjMtNSAzLjMtOCAwLTYuMi01LjEtMTEuMy0xMS4zLTExLjNsLTE0LjEgMGMtMTIuNSAwLTIyLjYtMTAuMS0yMi42LTIyLjYgMC02IDIuNC0xMS44IDYuNi0xNmwyMy4xLTIzLjFjLjgtLjggMS42LTEuNSAyLjUtMi4yek00MzguNCAzNTYuMWMtMzIuOCA1OS42LTkzLjkgMTAxLjQtMTY1LjIgMTA3LjItLjctMi4zLTEuMS00LjgtMS4xLTcuMyAwLTEzLjMtMTAuNy0yNC0yNC0yNGwtMjYuNyAwYy04LjUgMC0xNi42LTMuNC0yMi42LTkuNGwtMjkuMy0yOS4zYy02LTYtOS40LTE0LjEtOS40LTIyLjZsMC02Ni43YzAtMTcuNyAxNC4zLTMyIDMyLTMybDk4LjcgMGM4LjUgMCAxNi42IDMuNCAyMi42IDkuNGwyOS4zIDI5LjNjNiA2IDE0LjEgOS40IDIyLjYgOS40bDUuNSAwYzguNSAwIDE2LjYgMy40IDIyLjYgOS40bDE2IDE2YzQuMiA0LjIgMTAgNi42IDE2IDYuNiA0LjggMCA5LjMgMS41IDEzIDQuMXpNMjU2IDUxMmwyNi4yLTEuM2MtOC42IC45LTE3LjMgMS4zLTI2LjIgMS4zem0yNi4yLTEuM0M0MTEuMyA0OTcuNiA1MTIgMzg4LjYgNTEyIDI1NiA1MTIgMTE0LjYgMzk3LjQgMCAyNTYgMGwwIDBDMTE0LjYgMCAwIDExNC42IDAgMjU2IDAgMzgzLjUgOTMuMiA0ODkuMyAyMTUuMyA1MDguOCAyMjguNSA1MTAuOSAyNDIuMSA1MTIgMjU2IDUxMnpNMTg3LjMgMTIzLjNsLTMyIDMyYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42bDMyLTMyYzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnoiXX0sbGp0PUI5ZSxIOWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmFjZS1ncmluLWJlYW0tc3dlYXQiLGljb246WzU3Niw1MTIsWzEyODUxNywiZ3Jpbi1iZWFtLXN3ZWF0Il0sImY1ODMiLCJNNTQ2LjItLjFjMTQuNyAxNy44IDI5LjggNDAuMSAyOS44IDY0LjEgMCAzNi40LTI3LjYgNjQtNjQgNjRzLTY0LTI3LjYtNjQtNjRjMC0yNCAxNS4yLTQ2LjMgMjkuOC02NC4xIDguOC0xMC43IDE4LjUtMjAuOCAyOS0zMCAzLTIuNiA3LjQtMi42IDEwLjQgMCAxMC41IDkuMSAyMC4xIDE5LjMgMjkgMzB6TTI4OCAwYzQyLjUgMCA4Mi42IDEwLjQgMTE3LjggMjguNy0zLjYgMTAuOS01LjggMjIuNy01LjggMzUuMyAwIDYyLjkgNDkuMSAxMTIgMTEyIDExMiA2LjQgMCAxMi43LS41IDE4LjgtMS41IDguNiAyNS42IDEzLjIgNTMgMTMuMiA4MS41IDAgMTQxLjQtMTE0LjYgMjU2LTI1NiAyNTZTMzIgMzk3LjQgMzIgMjU2IDE0Ni42IDAgMjg4IDB6TTQxOC43IDMwOC45QzM3OS41IDMyMS4xIDMzNS4xIDMyOCAyODggMzI4cy05MS41LTYuOS0xMzAuNy0xOS4xYy0xMS45LTMuNy0yMy45IDYuMy0xOS42IDE4LjEgMjIuNCA2MS4zIDgxLjMgMTA1LjEgMTUwLjMgMTA1LjFzMTI3LjktNDMuOCAxNTAuMy0xMDUuMWM0LjMtMTEuOC03LjctMjEuOC0xOS42LTE4LjF6TTIwOCAxODBjMTUuNSAwIDI4IDEyLjUgMjggMjhsMCA4YzAgMTEgOSAyMCAyMCAyMHMyMC05IDIwLTIwbDAtOGMwLTM3LjYtMzAuNC02OC02OC02OHMtNjggMzAuNC02OCA2OGwwIDhjMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjBsMC04YzAtMTUuNSAxMi41LTI4IDI4LTI4em0xMzIgMjhjMC0xNS41IDEyLjUtMjggMjgtMjhzMjggMTIuNSAyOCAyOGwwIDhjMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjBsMC04YzAtMzcuNi0zMC40LTY4LTY4LTY4cy02OCAzMC40LTY4IDY4bDAgOGMwIDExIDkgMjAgMjAgMjBzMjAtOSAyMC0yMGwwLTh6Il19LGNqdD1IOWUscTllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNpcmNsZS1oYWxmLXN0cm9rZSIsaWNvbjpbNTEyLDUxMixbOTY4MCwiYWRqdXN0Il0sImYwNDIiLCJNNDQ4IDI1NmMwLTEwNi04Ni0xOTItMTkyLTE5MmwwIDM4NGMxMDYgMCAxOTItODYgMTkyLTE5MnpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMCAyNTYgMjU2IDAgMSAxIC01MTIgMHoiXX0sZGp0PXE5ZSx1anQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGVyc29uLW1pbGl0YXJ5LXRvLXBlcnNvbiIsaWNvbjpbNTEyLDUxMixbXSwiZTU0YyIsIk03MSAxMi41Yy04LjYgMS0xNSA4LjItMTUgMTYuOCAwIDkuMyA3LjUgMTYuOCAxNi43IDE2LjlsMTExLjQgMGM4LjgtLjEgMTUuOS03LjIgMTUuOS0xNkwyMDAgMTZjMC05LjUtOC4zLTE3LTE3LjgtMTUuOUw3MSAxMi41ek0xODkuNSA3OC4xbC0xMjIuOSAwYy0xLjYgNS43LTIuNSAxMS43LTIuNSAxNy45IDAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjRjMC02LjItLjktMTIuMi0yLjUtMTcuOXpNMzIgMjU2bDAgMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJsMTI4IDBjMS44IDAgMy41LS4xIDUuMi0uNEw1MyAyMDguNkM0MC4xIDIyMC4zIDMyIDIzNy4yIDMyIDI1NnptMTkwLjIgNDIuNWMxLjEtMy4zIDEuOC02LjggMS44LTEwLjVsMC0zMmMwLTM1LjMtMjguNy02NC02NC02NGwtNjQgMGMtMy43IDAtNy40IC4zLTEwLjkgLjlMMjIyLjIgMjk4LjV6TTM4NCAxNjBhNjQgNjQgMCAxIDAgMC0xMjggNjQgNjQgMCAxIDAgMCAxMjh6bS0zMiAzMmMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCAzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmwxMjggMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTMyYzAtMzUuMy0yOC43LTY0LTY0LTY0bC02NCAwek0yMTUuOCA0NTAuMWM1LjItNC42IDguMi0xMS4xIDguMi0xOC4xcy0zLTEzLjUtOC4yLTE4LjFsLTY0LTU2Yy03LjEtNi4yLTE3LjEtNy43LTI1LjctMy44UzExMiAzNjYuNiAxMTIgMzc2bDAgMzItODggMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw4OCAwIDAgMzJjMCA5LjQgNS41IDE4IDE0LjEgMjEuOXMxOC42IDIuNCAyNS43LTMuOGw2NC01NnpNMjg4IDQzMS45YzAgNi45IDMgMTMuNSA4LjEgMTguMWw2NCA1Ni40YzcuMSA2LjIgMTcuMSA3LjggMjUuNyAzLjlTNDAwIDQ5Ny44IDQwMCA0ODguNGwwLTMyLjQgODggMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtODggMCAwLTMyYzAtOS40LTUuNS0xOC0xNC4xLTIxLjlzLTE4LjYtMi40LTI1LjcgMy44bC02NCA1NmMtNS4yIDQuNS04LjIgMTEuMS04LjIgMTh6Il19LHBqdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0YWJsZS1jZWxscy1jb2x1bW4tbG9jayIsaWNvbjpbNjQwLDUxMixbXSwiZTY3OCIsIk0yNTYgMjI0bDAgMTkyIDY0IDAgMC0xOTItNjQgMHptMjU2LTc5Yy00Ni43IDUuOC04NS42IDM2LjgtMTAyLjcgNzlsLTI1LjMgMCAwIDkwLjhjLTEwLjEgMTUuMi0xNiAzMy40LTE2IDUzLjFsMCA5NmMwIDUuNSAuNSAxMC45IDEuMyAxNi4xTDEyOCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDY0IDk2YzAtMzUuMyAyOC43LTY0IDY0LTY0bDMyMCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgNDl6TTEyOCAyMjRsMCAxOTIgNjQgMCAwLTE5Mi02NCAwem00MzIgNDguMWMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDQ3LjkgNjQgMCAwLTQ3Ljl6TTQxNiAzNjhjMC0yMC45IDEzLjQtMzguNyAzMi00NS4zbDAtNTAuNmMwLTQ0LjIgMzUuOC04MCA4MC04MHM4MCAzNS44IDgwIDgwbDAgNTAuNmMxOC42IDYuNiAzMiAyNC40IDMyIDQ1LjNsMCA5NmMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMTI4IDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtOTZ6Il19LGhqdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0cnVjay1maWVsZC11biIsaWNvbjpbNjQwLDUxMixbXSwiZTU4ZSIsIk05NiAzMkM2MC43IDMyIDMyIDYwLjcgMzIgOTZsMCAzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCA5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmwwIDQ4YzAgMjEuMSAxMy43IDM5LjEgMzIuNiA0NS41LS40IDMuNC0uNiA3LS42IDEwLjUgMCA0OC42IDM5LjQgODggODggODhzODgtMzkuNCA4OC04OGMwLTIuNy0uMS01LjQtLjQtOGwxNDQuNyAwYy0uMiAyLjYtLjQgNS4zLS40IDggMCA0OC42IDM5LjQgODggODggODhzODgtMzkuNCA4OC04OGMwLTIuNy0uMS01LjQtLjQtOGwuNCAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtNjRjMC0yNi41LTIxLjUtNDgtNDgtNDhsLTI0LjcgMC0xLjctNC4yLTQzLjgtMTA2LjNjLTEyLjMtMzAtNDEuNi00OS41LTc0LTQ5LjVsLTQwLjQgMEMzNjQuNCA0NC45IDM0My43IDMyIDMyMCAzMkw5NiAzMnpNMzg0IDIyNGwwLTk2IDMxLjkgMGM2LjUgMCAxMi4zIDMuOSAxNC44IDkuOWwzNS40IDg2LjEtODIuMSAwek0xNTIgMzUyYTQwIDQwIDAgMSAxIDAgODAgNDAgNDAgMCAxIDEgMC04MHptMjgwIDQwYTQwIDQwIDAgMSAxIDgwIDAgNDAgNDAgMCAxIDEgLTgwIDB6TTI1Ni42IDEzMi45bDI3LjQgNDEgMC0yOS45YzAtMTEgOS0yMCAyMC0yMHMyMCA5IDIwIDIwbDAgOTZjMCA4LjgtNS44IDE2LjYtMTQuMiAxOS4xcy0xNy41LS43LTIyLjQtOGwtMjcuNC00MSAwIDI5LjljMCAxMS05IDIwLTIwIDIwcy0yMC05LTIwLTIwbDAtOTZjMC04LjggNS44LTE2LjYgMTQuMi0xOS4xczE3LjUgLjcgMjIuNCA4ek0xMzIgMTQ0bDAgNjRjMCA2LjYgNS40IDEyIDEyIDEyczEyLTUuNCAxMi0xMmwwLTY0YzAtMTEgOS0yMCAyMC0yMHMyMCA5IDIwIDIwbDAgNjRjMCAyOC43LTIzLjMgNTItNTIgNTJzLTUyLTIzLjMtNTItNTJsMC02NGMwLTExIDktMjAgMjAtMjBzMjAgOSAyMCAyMHoiXX0sajllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNsb2NrIixpY29uOls1MTIsNTEyLFsxMjgzMzksImNsb2NrLWZvdXIiXSwiZjAxNyIsIk0yNTYgMGEyNTYgMjU2IDAgMSAxIDAgNTEyIDI1NiAyNTYgMCAxIDEgMC01MTJ6TTIzMiAxMjBsMCAxMzZjMCA4IDQgMTUuNSAxMC43IDIwbDk2IDY0YzExIDcuNCAyNS45IDQuNCAzMy4zLTYuN3M0LjQtMjUuOS02LjctMzMuM0wyODAgMjQzLjIgMjgwIDEyMGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHoiXX0sZmp0PWo5ZSxtanQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYm9vayIsaWNvbjpbNDQ4LDUxMixbMTI4MjEyXSwiZjAyZCIsIk0zODQgNTEyTDk2IDUxMmMtNTMgMC05Ni00My05Ni05NkwwIDk2QzAgNDMgNDMgMCA5NiAwTDQwMCAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgMjg4YzAgMjAuOS0xMy40IDM4LjctMzIgNDUuM2wwIDY2LjdjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTMyIDB6TTk2IDM4NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwyNTYgMCAwLTY0LTI1NiAwem0zMi0yMzJjMCAxMy4zIDEwLjcgMjQgMjQgMjRsMTc2IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTE3NiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHptMjQgNzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMTc2IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTE3NiAweiJdfSxWOWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmFjZS1sYXVnaC13aW5rIixpY29uOls1MTIsNTEyLFsibGF1Z2gtd2luayJdLCJmNTljIiwiTTI1NiA1MTJhMjU2IDI1NiAwIDEgMCAwLTUxMiAyNTYgMjU2IDAgMSAwIDAgNTEyek0xMDEuNiAzMTRjLTMuNy0xMy43IDcuNS0yNiAyMS43LTI2bDI2NS40IDBjMTQuMiAwIDI1LjQgMTIuMyAyMS43IDI2LTE4LjUgNjgtODAuNiAxMTgtMTU0LjQgMTE4UzEyMCAzODIgMTAxLjYgMzE0ek0xNDQgMTkyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE2NCA4YzAgMTEtOSAyMC0yMCAyMHMtMjAtOS0yMC0yMGMwLTMzLjEgMjYuOS02MCA2MC02MGwxNiAwYzMzLjEgMCA2MCAyNi45IDYwIDYwIDAgMTEtOSAyMC0yMCAyMHMtMjAtOS0yMC0yMC05LTIwLTIwLTIwbC0xNiAwYy0xMSAwLTIwIDktMjAgMjB6Il19LGdqdD1WOWUsYmp0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNsb3VkLW1lYXRiYWxsIixpY29uOls1MTIsNTEyLFtdLCJmNzNiIiwiTTAgMjI0YzAgNTMgNDMgOTYgOTYgOTZsMjYuOSAwYzMuNS0xMi4xIDEwLjEtMjMuMyAxOS4yLTMyLjRsMS40LTEuNGMxNS0xNSAzNS4zLTIyLjkgNTYuMS0yMi4yIDE0LjItMTUuMSAzNC4yLTIzLjkgNTUuNC0yMy45bDIgMGMyMS4xIDAgNDEuMSA4LjggNTUuNCAyMy45IDIwLjgtLjYgNDEuMSA3LjMgNTYuMSAyMi4ybDEuNCAxLjRjOS4yIDkuMiAxNS43IDIwLjQgMTkuMiAzMi40bDI2LjkgMGM1MyAwIDk2LTQzIDk2LTk2cy00My05Ni05Ni05NmMtLjUgMC0xLjEgMC0xLjYgMCAxLjEtNS4yIDEuNi0xMC41IDEuNi0xNiAwLTQ0LjItMzUuOC04MC04MC04MC0yNC4zIDAtNDYuMSAxMC45LTYwLjggMjgtMTguNy0zNS43LTU2LjEtNjAtOTkuMi02MC02MS45IDAtMTEyIDUwLjEtMTEyIDExMiAwIDcuMSAuNyAxNC4xIDEuOSAyMC44LTM4LjMgMTIuNi02NS45IDQ4LjctNjUuOSA5MS4yek0xNTYuNSA0MjQuM2M5LjUgNi4zIDE0LjIgMTcuNyAxMS45IDI4LjgtMS44IDkuMiAxIDE4LjcgNy43IDI1LjNsMS40IDEuNGM2LjYgNi42IDE2LjEgOS41IDI1LjMgNy43IDExLjEtMi4yIDIyLjUgMi41IDI4LjggMTEuOSA1LjIgNy44IDE0IDEyLjUgMjMuMyAxMi41bDIgMGM5LjQgMCAxOC4xLTQuNyAyMy4zLTEyLjUgNi4zLTkuNSAxNy43LTE0LjIgMjguOC0xMS45IDkuMiAxLjggMTguNy0xIDI1LjMtNy43bDEuNC0xLjRjNi42LTYuNiA5LjUtMTYuMSA3LjctMjUuMy0yLjItMTEuMSAyLjUtMjIuNSAxMS45LTI4LjggNy44LTUuMiAxMi41LTE0IDEyLjUtMjMuM2wwLTJjMC05LjQtNC43LTE4LjEtMTIuNS0yMy4zLTkuNS02LjMtMTQuMi0xNy43LTExLjktMjguOCAxLjgtOS4yLTEtMTguNy03LjctMjUuM2wtMS40LTEuNGMtNi42LTYuNi0xNi4xLTkuNS0yNS4zLTcuNy0xMS4xIDIuMi0yMi41LTIuNS0yOC44LTExLjktNS4yLTcuOC0xNC0xMi41LTIzLjMtMTIuNWwtMiAwYy05LjQgMC0xOC4xIDQuNy0yMy4zIDEyLjUtNi4zIDkuNS0xNy43IDE0LjItMjguOCAxMS45LTkuMi0xLjgtMTguNyAxLTI1LjMgNy43bC0xLjQgMS40Yy02LjYgNi42LTkuNSAxNi4xLTcuNyAyNS4zIDIuMiAxMS4xLTIuNSAyMi41LTExLjkgMjguOC03LjggNS4yLTEyLjUgMTQtMTIuNSAyMy4zbDAgMmMwIDkuNCA0LjcgMTguMSAxMi41IDIzLjN6TTQ4IDQ0OGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bTQxNiAwYTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnoiXX0sVTllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNoYXJ0LWFyZWEiLGljb246WzUxMiw1MTIsWyJhcmVhLWNoYXJ0Il0sImYxZmUiLCJNMzIgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMzZjMCA4LjggNy4yIDE2IDE2IDE2bDQwMCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDgwIDQ4MGMtNDQuMiAwLTgwLTM1LjgtODAtODBMMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMnpNMjQwIDk2YzYuNyAwIDEzLjEgMi44IDE3LjcgNy44TDMyOC44IDE4MS4zIDM3NSAxMzVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsNjQgNjRjNC41IDQuNSA3IDEwLjYgNyAxN2wwIDExMmMwIDEzLjMtMTAuNyAyNC0yNCAyNGwtMzA0IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0bDAtMTEyYzAtNiAyLjMtMTEuOCA2LjMtMTYuMmw4OC05NmM0LjUtNSAxMS03LjggMTcuNy03Ljh6Il19LHZqdD1VOWUseGp0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InJ1cGlhaC1zaWduIixpY29uOls1MTIsNTEyLFtdLCJlMjNkIiwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJsODAgMGM3OS41IDAgMTQ0IDY0LjUgMTQ0IDE0NCAwIDU0LjMtMzAgMTAxLjUtNzQuNCAxMjYuMWw0MSAxMzYuN2M1LjEgMTYuOS00LjUgMzQuOC0yMS41IDM5LjhzLTM0LjgtNC41LTM5LjgtMjEuNUwxMjAuMSAzMTkuOGMtMi43IC4xLTUuNCAuMi04LjEgLjJsLTQ4IDAgMCAxMjhjMCAxNy43LTE0LjMgMzItMzIgMzJTMCA0NjUuNyAwIDQ0OEwwIDY0ek02NCAyNTZsNDggMGM0NC4yIDAgODAtMzUuOCA4MC04MHMtMzUuOC04MC04MC04MGwtNDggMCAwIDE2MHptMjU2LTMybDgwIDBjNjEuOSAwIDExMiA1MC4xIDExMiAxMTJTNDYxLjkgNDQ4IDQwMCA0NDhsLTQ4IDAgMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTI1NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptODAgMTYwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4cy0yMS41LTQ4LTQ4LTQ4bC00OCAwIDAgOTYgNDggMHoiXX0seWp0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRleHQtd2lkdGgiLGljb246WzQ0OCw1MTIsW10sImYwMzUiLCJNNDAgMEMxNy45IDAgMCAxNy45IDAgNDBMMCA5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMzIgMTI4IDAgMCAxNjAtMzIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwxMjggMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMzIgMCAwLTE2MCAxMjggMCAwIDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC01NmMwLTIyLjEtMTcuOS00MC00MC00MEw0MCAwem03OC42IDQwNi42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC02NCA2NGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsNjQgNjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtOS40LTkuNCAyMjkuNSAwLTkuNCA5LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsNjQtNjRjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTY0LTY0Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2w5LjQgOS40LTIyOS41IDAgOS40LTkuNHoiXX0sd2p0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNhdGVsbGl0ZSIsaWNvbjpbNTEyLDUxMixbMTI4NzUyXSwiZjdiZiIsIk0xOTkgN2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMGw4OS40IDg5LjQgNTUtNTVjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsNDggNDhjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTU1IDU1IDg5LjQgODkuNGM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtOTYgOTZjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwbC04OS40LTg5LjQtMTUuNSAxNS41YzExLjQgMjQuNiAxNy44IDUyIDE3LjggODAuOSAwIDMxLjctNy43IDYxLjUtMjEuMiA4Ny44LTQuNyA5LTE2LjcgMTAuMy0yMy44IDMuMWwtOTYuMy05Ni4zLTYwIDYwYy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM2w2MC02MC05Ni4zLTk2LjNjLTcuMi03LjItNS45LTE5LjIgMy4xLTIzLjggMjYuMy0xMy42IDU2LjItMjEuMiA4Ny44LTIxLjIgMjguOSAwIDU2LjMgNi40IDgwLjkgMTcuOEwxOTIuNCAyMjYuMyAxMDMgMTM3Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOUwxOTkgN3ptMTcgNTAuOWwtNjIuMSA2Mi4xIDcyLjQgNzIuNCA2Mi4xLTYyLjEtNzIuNC03Mi40ek0zOTIgMzU4LjFsNjIuMS02Mi4xLTcyLjQtNzIuNC02Mi4xIDYyLjEgNzIuNCA3Mi40eiJdfSxXOWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibWFnbmlmeWluZy1nbGFzcy1taW51cyIsaWNvbjpbNTEyLDUxMixbInNlYXJjaC1taW51cyJdLCJmMDEwIiwiTTQxNiAyMDhjMCA0NS45LTE0LjkgODguMy00MCAxMjIuN0w1MDIuNiA0NTcuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwzMzAuNyAzNzZDMjk2LjMgNDAxLjEgMjUzLjkgNDE2IDIwOCA0MTYgOTMuMSA0MTYgMCAzMjIuOSAwIDIwOFM5My4xIDAgMjA4IDAgNDE2IDkzLjEgNDE2IDIwOHpNMTM2IDE4NGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwxNDQgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtMTQ0IDB6Il19LGtqdD1XOWUsU2p0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBlb3BsZS1ncm91cCIsaWNvbjpbNTEyLDUxMixbXSwiZTUzMyIsIk0yNTYgMGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHptOTYgMzEyYzAgMjUtMTIuNyA0Ny0zMiA1OS45bDAgOTIuMWMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMzIgMGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhsMC05Mi4xQzE3Mi43IDM1OSAxNjAgMzM3IDE2MCAzMTJsMC00MGMwLTUzIDQzLTk2IDk2LTk2czk2IDQzIDk2IDk2bDAgNDB6TTk2IDMyYTU2IDU2IDAgMSAxIDAgMTEyIDU2IDU2IDAgMSAxIDAtMTEyem0xNiAyNDBsMCAzMmMwIDMyLjUgMTIuMSA2Mi4xIDMyIDg0LjdsMCA3NS4zYzAgMS4yIDAgMi41IC4xIDMuNy04LjUgNy42LTE5LjcgMTIuMy0zMi4xIDEyLjNsLTMyIDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtNTYuNkMxMi45IDM2NC40IDAgMzQzLjcgMCAzMjBsMC0zMmMwLTUzIDQzLTk2IDk2LTk2IDEyLjcgMCAyNC44IDIuNSAzNS45IDYuOS0xMi42IDIxLjQtMTkuOSA0Ni40LTE5LjkgNzMuMXpNMzY4IDQ2NGwwLTc1LjNjMTkuOS0yMi41IDMyLTUyLjIgMzItODQuN2wwLTMyYzAtMjYuNy03LjMtNTEuNi0xOS45LTczLjEgMTEuMS00LjUgMjMuMi02LjkgMzUuOS02LjkgNTMgMCA5NiA0MyA5NiA5NmwwIDMyYzAgMjMuNy0xMi45IDQ0LjQtMzIgNTUuNGwwIDU2LjZjMCAyNi41LTIxLjUgNDgtNDggNDhsLTMyIDBjLTEyLjMgMC0yMy42LTQuNi0zMi4xLTEyLjMgMC0xLjIgLjEtMi41IC4xLTMuN3pNNDE2IDMyYTU2IDU2IDAgMSAxIDAgMTEyIDU2IDU2IDAgMSAxIDAtMTEyeiJdfSxfanQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic3F1YXJlLWJpbmFyeSIsaWNvbjpbNDQ4LDUxMixbXSwiZTY5YiIsIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDMyMCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NnptMTQ0IDRjLTI0LjMgMC00NCAxOS43LTQ0IDQ0bDAgNDhjMCAyNC4zIDE5LjcgNDQgNDQgNDRsMzIgMGMyNC4zIDAgNDQtMTkuNyA0NC00NGwwLTQ4YzAtMjQuMy0xOS43LTQ0LTQ0LTQ0bC0zMiAwem0tNCA0NGMwLTIuMiAxLjgtNCA0LTRsMzIgMGMyLjIgMCA0IDEuOCA0IDRsMCA0OGMwIDIuMi0xLjggNC00IDRsLTMyIDBjLTIuMiAwLTQtMS44LTQtNGwwLTQ4em0xNDAtNDRjLTExIDAtMjAgOS0yMCAyMCAwIDkuNyA2LjkgMTcuNyAxNiAxOS42bDAgNzYuNGMwIDExIDkgMjAgMjAgMjBzMjAtOSAyMC0yMGwwLTk2YzAtMTEtOS0yMC0yMC0yMGwtMTYgMHpNMTMyIDI5NmMwIDkuNyA2LjkgMTcuNyAxNiAxOS42bDAgNzYuNGMwIDExIDkgMjAgMjAgMjBzMjAtOSAyMC0yMGwwLTk2YzAtMTEtOS0yMC0yMC0yMGwtMTYgMGMtMTEgMC0yMCA5LTIwIDIwem05NiAyNGwwIDQ4YzAgMjQuMyAxOS43IDQ0IDQ0IDQ0bDMyIDBjMjQuMyAwIDQ0LTE5LjcgNDQtNDRsMC00OGMwLTI0LjMtMTkuNy00NC00NC00NGwtMzIgMGMtMjQuMyAwLTQ0IDE5LjctNDQgNDR6bTQ0LTRsMzIgMGMyLjIgMCA0IDEuOCA0IDRsMCA0OGMwIDIuMi0xLjggNC00IDRsLTMyIDBjLTIuMiAwLTQtMS44LTQtNGwwLTQ4YzAtMi4yIDEuOC00IDQtNHoiXX0sRzllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im1hc2tzLXRoZWF0ZXIiLGljb246WzU3Niw1MTIsWzEyNzkxNywidGhlYXRlci1tYXNrcyJdLCJmNjMwIiwiTS01IDExOEwyMy41IDI3OS43YzE0IDc5LjUgNzYuMyAxNDEuOCAxNTUuOCAxNTUuOGwxMi43IDIuMmMtMTYuNS0yOC42LTI3LjEtNjAuNy0zMC42LTk0LjVsLTI0LjEgNC4zYy05LjcgMS43LTE4LjgtNS44LTE2LjktMTUuNSA0LjgtMjQuNyAxOS4xLTQ2LjYgMzkuNy02MC45bDAtNzQuNmMtMS40IC44LTMgMS4zLTQuNyAxLjZsLTYzIDExLjFjLTguNyAxLjUtMTcuMy00LjQtMTUuOS0xMy4xIDMuMS0xOS42IDE4LjQtMzYgMzkuMS0zOS43IDE3LjItMyAzMy45IDMuNSA0NC42IDE1LjhsMC0yMi43YzAtMjIuNSA2LjktNTIuNCAzMi4zLTczLjQgMjYtMjEuNSA2Ny43LTQzLjkgMTI0LjktNTQuMi0zMC41LTE2LjMtODYuMy0zMi0xNjMuOC0xOC40LTgwLjMgMTQuMi0xMjggNTAuMS0xNTAuMSA3Ni4xLTkgMTAuNS0xMC44IDI0LjktOC40IDM4LjV6TTIwOCAxMzguN2wwIDE3NC44YzAgODAuNyA1MC41IDE1Mi45IDEyNi40IDE4MC40TDM2Mi4xIDUwNGMxNC4xIDUuMSAyOS42IDUuMSA0My43IDBMNDMzLjYgNDk0QzUwOS41IDQ2Ni40IDU2MCAzOTQuMyA1NjAgMzEzLjVsMC0xNzQuOGMwLTYuOS0yLjEtMTMuOC03LTE4LjYtMjIuNi0yMi41LTc4LjItNTYtMTY5LTU2cy0xNDYuNCAzMy42LTE2OSA1NmMtNC45IDQuOS03IDExLjctNyAxOC42em02Ni4xIDE4Ny4xYy0xLjQtNyA3LTExIDEyLjctNi42IDI2LjkgMjAuNiA2MC42IDMyLjkgOTcuMiAzMi45czcwLjItMTIuMyA5Ny4yLTMyLjljNS43LTQuNCAxNC4xLS40IDEyLjcgNi42LTEwLjEgNTEuNC01NS41IDkwLjMtMTA5LjkgOTAuM3MtOTkuOC0zOC44LTEwOS45LTkwLjN6bS41LTEwMS41QzI4MS4yIDIwNS41IDI5OSAxOTIgMzIwIDE5MnMzOC45IDEzLjUgNDUuNCAzMi4zYzIuOSA4LjQtNC41IDE1LjctMTMuNCAxNS43bC02NCAwYy04LjggMC0xNi4zLTcuNC0xMy40LTE1Ljd6TTQ4MCAyNDBsLTY0IDBjLTguOCAwLTE2LjMtNy40LTEzLjQtMTUuNyA2LjUtMTguOCAyNC40LTMyLjMgNDUuNC0zMi4zczM4LjkgMTMuNSA0NS40IDMyLjNjMi45IDguNC00LjUgMTUuNy0xMy40IDE1Ljd6Il19LE1qdD1HOWUsemp0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNhcnQtcGx1cyIsaWNvbjpbNjQwLDUxMixbXSwiZjIxNyIsIk0wIDhDMC01LjMgMTAuNy0xNiAyNC0xNmw0NS4zIDBjMjcuMSAwIDUwLjMgMTkuNCA1NS4xIDQ2bC40IDIgNDEyLjcgMGMyMCAwIDM1LjEgMTguMiAzMS40IDM3LjlMNTM3LjggMjM1LjhjLTUuNyAzMC4zLTMyLjEgNTIuMi02Mi45IDUyLjJsLTMwMy42IDAgNS4xIDI4LjNjMi4xIDExLjQgMTIgMTkuNyAyMy42IDE5LjdMNDU2IDMzNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMjU1LjkgMGMtMzQuOCAwLTY0LjYtMjQuOS03MC44LTU5LjFMNzcuMiAzOC42Yy0uNy0zLjgtNC02LjYtNy45LTYuNkwyNCAzMkMxMC43IDMyIDAgMjEuMyAwIDh6TTE2MCA0NjRhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptMjI0IDBhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpNMzM2IDc4LjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0bDAgMzMuNi0zMy42IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMzMuNiAwIDAgMzMuNmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtMzMuNiAzMy42IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTMzLjYgMCAwLTMzLjZjMC0xMy4zLTEwLjctMjQtMjQtMjR6Il19LFFrPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImhhbmRzLWFzbC1pbnRlcnByZXRpbmciLGljb246WzY0MCw1MTIsWyJhbWVyaWNhbi1zaWduLWxhbmd1YWdlLWludGVycHJldGluZyIsImFzbC1pbnRlcnByZXRpbmciLCJoYW5kcy1hbWVyaWNhbi1zaWduLWxhbmd1YWdlLWludGVycHJldGluZyJdLCJmMmEzIiwiTTE1Ni42IDQ2LjNjNy45LTE1LjggMS41LTM1LTE0LjMtNDIuOXMtMzUtMS41LTQyLjkgMTQuM0wxMy41IDE4OS40QzQuNiAyMDcuMiAwIDIyNi44IDAgMjQ2LjdMMCAyNTZjMCA3MC43IDU3LjMgMTI4IDEyOCAxMjhsODAgMCAwLS4zYzM1LjItMi43IDY1LjQtMjIuOCA4Mi4xLTUxLjcgOC44LTE1LjMgMy42LTM0LjktMTEuNy00My43cy0zNC45LTMuNi00My43IDExLjdjLTcgMTItMTkuOSAyMC0zNC43IDIwLTIyLjEgMC00MC0xNy45LTQwLTQwczE3LjktNDAgNDAtNDBjMTQuOCAwIDI3LjcgOCAzNC43IDIwIDguOCAxNS4zIDI4LjQgMjAuNSA0My43IDExLjdzMjAuNS0yOC40IDExLjctNDMuN2MtMTIuOC0yMi4xLTMzLjYtMzkuMS01OC40LTQ3LjFsODAuOC0yMmMxNy00LjYgMjcuMS0yMi4yIDIyLjUtMzkuM3MtMjIuMi0yNy4xLTM5LjMtMjIuNWwtMTAwLjcgMjcuNSA4MS42LTY4YzEzLjYtMTEuMyAxNS40LTMxLjUgNC4xLTQ1LjFTMjQ5LjEtMy45IDIzNS41IDcuNGwtMTAxLjkgODQuOSAyMy00NnpNNDgzLjQgNDY1LjdjLTcuOSAxNS44LTEuNSAzNSAxNC4zIDQyLjlzMzUgMS41IDQyLjktMTQuM2w4NS45LTE3MS43YzguOS0xNy44IDEzLjUtMzcuNCAxMy41LTU3LjJsMC05LjNjMC03MC43LTU3LjMtMTI4LTEyOC0xMjhsLTgwIDAgMCAuM2MtMzUuMiAyLjctNjUuNCAyMi44LTgyLjEgNTEuNy04LjkgMTUuMy0zLjYgMzQuOSAxMS43IDQzLjdzMzQuOSAzLjYgNDMuNy0xMS43YzctMTIgMTkuOS0yMCAzNC43LTIwIDIyLjEgMCA0MCAxNy45IDQwIDQwcy0xNy45IDQwLTQwIDQwYy0xNC44IDAtMjcuNy04LTM0LjctMjAtOC45LTE1LjMtMjguNC0yMC41LTQzLjctMTEuN3MtMjAuNSAyOC40LTExLjcgNDMuN2MxMi44IDIyLjEgMzMuNiAzOS4xIDU4LjQgNDcuMWwtODAuOCAyMmMtMTcuMSA0LjYtMjcuMSAyMi4yLTIyLjUgMzkuM3MyMi4yIDI3LjEgMzkuMyAyMi41bDEwMC43LTI3LjUtODEuNiA2OGMtMTMuNiAxMS4zLTE1LjQgMzEuNS00LjEgNDUuMXMzMS41IDE1LjQgNDUuMSA0LjFsMTAxLjktODQuOS0yMyA0NnoiXX0sQ2p0PVFrLFRqdD1RaywkanQ9UWssRGp0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRhYmxlLWNlbGxzLXJvdy11bmxvY2siLGljb246WzY0MCw1MTIsW10sImU2OTEiLCJNMjU2IDIyNGwwIDE5MiA2NCAwIDAtMTkyLTY0IDB6bTI1Ni03OWMtNDYuNyA1LjgtODUuNiAzNi44LTEwMi43IDc5bC0yNS4zIDAgMCA5MC44Yy0xMC4xIDE1LjItMTYgMzMuNC0xNiA1My4xbDAgOTZjMCA1LjUgLjUgMTAuOSAxLjMgMTYuMUwxMjggNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEw2NCA5NmMwLTM1LjMgMjguNy02NCA2NC02NGwzMjAgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDQ5ek0xMjggMjI0bDAgMTkyIDY0IDAgMC0xOTItNjQgMHptNDMyIDQ4Yy0uMS0xNy42LTE0LjQtMzEuOS0zMi0zMS45LTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgNDcuOSA5NiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgOTZjMCAyNi41LTIxLjUgNDgtNDggNDhsLTEyOCAwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTk2YzAtMjAuOSAxMy40LTM4LjcgMzItNDUuM2wwLTUwLjZjMC00NC4yIDM1LjgtODAgODAtODAgNDQuMiAwIDc5LjkgMzUuOCA4MCA3OS45bC00OCAweiJdfSxManQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicm9ja2V0IixpY29uOls1MTIsNTEyLFtdLCJmMTM1IiwiTTEyOCAzMjBMMjQuNSAzMjBjLTI0LjkgMC00MC4yLTI3LjEtMjcuNC00OC41TDUwIDE4My4zQzU4LjcgMTY4LjggNzQuMyAxNjAgOTEuMiAxNjBsOTUgMGM3Ni4xLTEyOC45IDE4OS42LTEzNS40IDI2NS41LTEyNC4zIDEyLjggMS45IDIyLjggMTEuOSAyNC42IDI0LjYgMTEuMSA3NS45IDQuNiAxODkuNC0xMjQuMyAyNjUuNWwwIDk1YzAgMTYuOS04LjggMzIuNS0yMy4zIDQxLjJsLTg4LjIgNTIuOWMtMjEuMyAxMi44LTQ4LjUtMi42LTQ4LjUtMjcuNEwxOTIgMzg0YzAtMzUuMy0yOC43LTY0LTY0LTY0bC0uMSAwek00MDAgMTYwYTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6Il19LEVqdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzaHJpbXAiLGljb246WzUxMiw1MTIsWzEyOTQyNF0sImU0NDgiLCJNNzIgMzJDMzIuMiAzMiAwIDY0LjIgMCAxMDQgMCAxNDEuOSAyOS4zIDE3Mi45IDY2LjQgMTc1LjggNzcuNiAyNTcuMiAxNDcuNCAzMjAgMjMyIDMyMGw1NiAwIDAtMTkyLTIxNiAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNFM1OC43IDgwIDcyIDgwbDM4NCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0TDcyIDMyek0yMjQgNDU2YzAgMTMuMyAxMC43IDI0IDI0IDI0bDcyIDAgMC03Mi4yLTY0LjEtMjIuNGMtMTIuNS00LjQtMjYuMiAyLjItMzAuNiAxNC43czIuMiAyNi4yIDE0LjcgMzAuNmw0LjUgMS42QzIzMyA0MzMuOSAyMjQgNDQzLjkgMjI0IDQ1NnptMTI4IDIzLjNjMzYuNC0zLjMgNjkuNS0xNy42IDk2LjEtMzkuNmwtODYuNS0zNC42Yy0zIDEuOC02LjIgMy4yLTkuNiA0LjNsMCA2OS45ek00NzIuNiA0MTVjMjQuNi0zMC4zIDM5LjQtNjguOSAzOS40LTExMSAwLTEyLjMtMS4zLTI0LjMtMy43LTM1LjlMMzgyLjggMzU1LjFjLjggMy40IDEuMiA3IDEuMiAxMC42IDAgNC42LS43IDktMS45IDEzLjFMNDcyLjYgNDE1ek0zMzYgMTI4bC0xNiAwIDAgMTkyIDE4LjMgMGM5LjkgMCAxOS4xIDMuMiAyNi42IDguNWwxMzMuNS05Mi40QzQ3MS44IDE3Mi42IDQwOS4xIDEyOCAzMzYgMTI4ek0xNjggMTkyYTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6Il19LEs5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0ZW5nZS1zaWduIixpY29uOlszODQsNTEyLFs4Mzc2LCJ0ZW5nZSJdLCJmN2Q3IiwiTTAgNTZDMCA0Mi43IDEwLjcgMzIgMjQgMzJsMzM2IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRMMjQgODBDMTAuNyA4MCAwIDY5LjMgMCA1NnpNMCAxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJsMzIwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTEyOCAwIDAgMjU2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMjU2LTEyOCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnoiXX0sUGp0PUs5ZSxZOWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaG91c2UtY2hpbW5leS1tZWRpY2FsIixpY29uOls1MTIsNTEyLFsiY2xpbmljLW1lZGljYWwiXSwiZjdmMiIsIk0yMzQuMiA4LjZjMTIuMy0xMS40IDMxLjMtMTEuNCA0My41IDBMMzY4IDkyLjMgMzY4IDgwYzAtMTcuNyAxNC4zLTMyIDMyLTMybDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAxMDEuNSAzNy44IDM1LjFjOS42IDkgMTIuOCAyMi45IDggMzUuMVM0OTMuMiAyNzIgNDgwIDI3MmwtMTYgMCAwIDE3NmMwIDM1LjMtMjguNyA2NC02NCA2NGwtMjg4IDBjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtMTc2LTE2IDBjLTEzLjIgMC0yNS04LjEtMjkuOC0yMC4zcy0xLjYtMjYuMiA4LTM1LjFsMjI0LTIwOHpNMjI0IDI0OGwwIDQwLTQwIDBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmw0MCAwIDAgNDBjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtNDAgNDAgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTQwIDAgMC00MGMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnoiXX0sSWp0PVk5ZSxBanQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidXNlcnMtc2xhc2giLGljb246WzY0MCw1MTIsW10sImUwNzMiLCJNNzMtMjQuOWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBTMjkuNy0uMyAzOSA5LjFsNTI4IDUyOGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlMMzIxLjggMjI0YzU2LjYtMSAxMDIuMi00Ny4yIDEwMi4yLTEwNCAwLTU3LjQtNDYuNi0xMDQtMTA0LTEwNC01Ni44IDAtMTAzIDQ1LjYtMTA0IDEwMi4yTDczLTI0Ljl6TTUxMiAyODhjLTE3LjIgMC0zMy43IDMuNC00OC43IDkuNmwxNzAgMTcwYzQuMi01LjQgNi43LTEyLjIgNi43LTE5LjZsMC0zMmMwLTcwLjctNTcuMy0xMjgtMTI4LTEyOHpNNTkuOSA5Ny43Yy0yMS41IDEyLjUtMzUuOSAzNS43LTM1LjkgNjIuMyAwIDM5LjggMzIuMiA3MiA3MiA3MiAyNi42IDAgNDkuOC0xNC40IDYyLjMtMzUuOUw1OS45IDk3Ljd6TTI1MC4yIDI4OEMxOTYuOCAzMTMuOSAxNjAgMzY4LjcgMTYwIDQzMmwwIDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMybDI1MC4yIDAtMTkyLTE5MnpNMTI4IDI4OEM1Ny4zIDI4OCAwIDM0NS4zIDAgNDE2bDAgMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJsODYuNyAwYy00LjMtOS44LTYuNy0yMC42LTYuNy0zMmwwLTE2YzAtNTMuMiAyMC0xMDEuOCA1Mi45LTEzOC42LTExLjctMy41LTI0LjEtNS40LTM2LjktNS40ek02MTYgMTYwYTcyIDcyIDAgMSAwIC0xNDQgMCA3MiA3MiAwIDEgMCAxNDQgMHoiXX0sTmp0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBhcGVyLXBsYW5lIixpY29uOls1NzYsNTEyLFs2MTkxM10sImYxZDgiLCJNNTM2LjQtMjYuM2M5LjgtMy41IDIwLjYtMSAyOCA2LjNzOS44IDE4LjIgNi4zIDI4bC0xNzggNDk2LjljLTUgMTMuOS0xOC4xIDIzLjEtMzIuOCAyMy4xLTE0LjIgMC0yNy04LjYtMzIuMy0yMS43bC02NC4yLTE1OGMtNC41LTExLTIuNS0yMy42IDUuMi0zMi42bDk0LjUtMTEyLjRjNS4xLTYuMSA0LjctMTUtLjktMjAuNnMtMTQuNi02LTIwLjYtLjlMMjI5LjIgMjc2LjFjLTkuMSA3LjYtMjEuNiA5LjYtMzIuNiA1LjJMMzguMSAyMTYuOGMtMTMuMS01LjMtMjEuNy0xOC4xLTIxLjctMzIuMyAwLTE0LjcgOS4yLTI3LjggMjMuMS0zMi44bDQ5Ni45LTE3OHoiXX0sWjllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJvb2stYXRsYXMiLGljb246WzQ0OCw1MTIsWyJhdGxhcyJdLCJmNTU4IiwiTTk2IDUxMmwzMjAgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwwLTY2LjdjMTguNi02LjYgMzItMjQuNCAzMi00NS4zbDAtMjg4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4TDk2IDBDNDMgMCAwIDQzIDAgOTZMMCA0MTZjMCA1MyA0MyA5NiA5NiA5NnpNNjQgNDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMybDI1NiAwIDAgNjQtMjU2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek0zMTAuNiAyMDhMMjc5IDIwOGMtMS40IDIzLjEtNiA0NC4yLTEyLjYgNjEuMiAyMi43LTEyLjUgMzkuNC0zNC44IDQ0LjItNjEuMnptLTE3My4xIDBjNC44IDI2LjQgMjEuNSA0OC43IDQ0LjIgNjEuMi02LjctMTctMTEuMi0zOC0xMi42LTYxLjJsLTMxLjYgMHptNzYuNCA1NWM0LjUgOS42IDguMiAxMy44IDEwLjIgMTUuNSAyLTEuNyA1LjctNS44IDEwLjItMTUuNSA2LjItMTMuNCAxMS4xLTMyLjUgMTIuNy01NWwtNDUuOCAwYzEuNiAyMi41IDYuNSA0MS42IDEyLjcgNTV6bS0xMi43LTg3bDQ1LjggMGMtMS42LTIyLjUtNi41LTQxLjYtMTIuNy01NS00LjUtOS42LTguMi0xMy44LTEwLjItMTUuNS0yIDEuNy01LjcgNS44LTEwLjIgMTUuNS02LjIgMTMuNC0xMS4xIDMyLjUtMTIuNyA1NXptMTA5LjUgMGMtNC44LTI2LjQtMjEuNS00OC43LTQ0LjItNjEuMiA2LjcgMTcgMTEuMiAzOCAxMi42IDYxLjJsMzEuNiAwek0xNjkgMTc2YzEuNC0yMy4xIDYtNDQuMiAxMi42LTYxLjItMjIuNyAxMi41LTM5LjQgMzQuOC00NC4yIDYxLjJsMzEuNiAwek05NiAxOTJhMTI4IDEyOCAwIDEgMSAyNTYgMCAxMjggMTI4IDAgMSAxIC0yNTYgMHoiXX0sUmp0PVo5ZSxPanQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidGFibGUiLGljb246WzQ0OCw1MTIsW10sImYwY2UiLCJNMzg0IDMyYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIwYzAgMzUuMy0yOC43IDY0LTY0IDY0bC0zMjAgMC02LjUtLjNDMjUuMiA0NzYuNCAwIDQ0OS4xIDAgNDE2TDAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMzIwIDB6TTY0IDMyMGwwIDk2IDEyOCAwIDAtOTYtMTI4IDB6bTE5MiAwbDAgOTYgMTI4IDAgMC05Ni0xMjggMHpNNjQgMjU2bDEyOCAwIDAtOTYtMTI4IDAgMCA5NnptMTkyIDBsMTI4IDAgMC05Ni0xMjggMCAwIDk2eiJdfSxGanQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaGVhcnQiLGljb246WzUxMiw1MTIsWzEyODE1MywxMjgxNTQsMTI4MTU1LDEyODE1NiwxMjg0MjAsMTI5MjkzLDEyOTI5NCwxMjk1MDUsOTgyOSwxMDA4NCw2MTU3OF0sImYwMDQiLCJNMjQxIDg3LjFsMTUgMjAuNyAxNS0yMC43QzI5NiA1Mi41IDMzNi4yIDMyIDM3OC45IDMyIDQ1Mi40IDMyIDUxMiA5MS42IDUxMiAxNjUuMWwwIDIuNmMwIDExMi4yLTEzOS45IDI0Mi41LTIxMi45IDI5OC4yLTEyLjQgOS40LTI3LjYgMTQuMS00My4xIDE0LjFzLTMwLjgtNC42LTQzLjEtMTQuMUMxMzkuOSA0MTAuMiAwIDI3OS45IDAgMTY3LjdsMC0yLjZDMCA5MS42IDU5LjYgMzIgMTMzLjEgMzIgMTc1LjggMzIgMjE2IDUyLjUgMjQxIDg3LjF6Il19LFg5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjaXJjbGUtY2hldnJvbi11cCIsaWNvbjpbNTEyLDUxMixbImNoZXZyb24tY2lyY2xlLXVwIl0sImYxMzkiLCJNMjU2IDUxMmEyNTYgMjU2IDAgMSAwIDAtNTEyIDI1NiAyNTYgMCAxIDAgMCA1MTJ6TTM3NyAyNzFjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtODctODctODcgODdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlMMjM5IDE2N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMEwzNzcgMjcxeiJdfSxCanQ9WDllLFE5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJiYXR0ZXJ5LWhhbGYiLGljb246WzY0MCw1MTIsWyJiYXR0ZXJ5LTMiXSwiZjI0MiIsIk01MjggMTI4YzguOCAwIDE2IDcuMiAxNiAxNmwwIDIyNGMwIDguOC03LjIgMTYtMTYgMTZsLTQxNiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0yMjRjMC04LjggNy4yLTE2IDE2LTE2bDQxNiAwek0xMTIgNjRjLTQ0LjIgMC04MCAzNS44LTgwIDgwbDAgMjI0YzAgNDQuMiAzNS44IDgwIDgwIDgwbDQxNiAwYzQ0LjIgMCA4MC0zNS44IDgwLTgwbDAtNDhjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC02NGMwLTE3LjctMTQuMy0zMi0zMi0zMmwwLTQ4YzAtNDQuMi0zNS44LTgwLTgwLTgwTDExMiA2NHptNTYgMTEyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDExMmMwIDEzLjMgMTAuNyAyNCAyNCAyNGwxNDQgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNGwwLTExMmMwLTEzLjMtMTAuNy0yNC0yNC0yNGwtMTQ0IDB6Il19LEhqdD1ROWUsaG9lPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZvbnQtYXdlc29tZSIsaWNvbjpbNTEyLDUxMixbNjI1MDEsNjI2OTQsImZvbnQtYXdlc29tZS1mbGFnIiwiZm9udC1hd2Vzb21lLWxvZ28tZnVsbCJdLCJmMmI0IiwiTTkxLjcgOTZDMTA2LjMgODYuOCAxMTYgNzAuNSAxMTYgNTIgMTE2IDIzLjMgOTIuNyAwIDY0IDBTMTIgMjMuMyAxMiA1MmMwIDE2LjcgNy44IDMxLjUgMjAgNDFsMCA0MTkgNjQgMCAwLTY0IDM3My42IDBjMTQuNiAwIDI2LjQtMTEuOCAyNi40LTI2LjQgMC0zLjctLjgtNy4zLTIuMy0xMC43TDQzMiAyNzIgNDkzLjcgMTMzLjFjMS41LTMuNCAyLjMtNyAyLjMtMTAuNyAwLTE0LjYtMTEuOC0yNi40LTI2LjQtMjYuNEw5MS43IDk2eiJdfSxxanQ9aG9lLGpqdD1ob2UsVmp0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImhhbmRjdWZmcyIsaWNvbjpbNTc2LDUxMixbXSwiZTRmOCIsIk0zMjAtMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyek0xOTIgNjRhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0ek0xNTIgOTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0bDAgMTZjMCAxIC4xIDEuOSAuMiAyLjktNzQuNyAyNi4zLTEyOC4yIDk3LjUtMTI4LjIgMTgxLjEgMCAxMDYgODYgMTkyIDE5MiAxOTJzMTkyLTg2IDE5Mi0xOTJjMC04My43LTUzLjUtMTU0LjgtMTI4LjItMTgxLjEgLjEtLjkgLjItMS45IC4yLTIuOWwwLTE2YzAtMTMuMy0xMC43LTI0LTI0LTI0bC04MCAwek02NCAzMjBhMTI4IDEyOCAwIDEgMSAyNTYgMCAxMjggMTI4IDAgMSAxIC0yNTYgMHptNDQ4IDBjMCA2Ni45LTUxLjMgMTIxLjgtMTE2LjYgMTI3LjUtMTQuMyAyMi44LTMyLjQgNDMuMS01My40IDU5LjkgMTMuNSAzIDI3LjYgNC42IDQyIDQuNiAxMDYgMCAxOTItODYgMTkyLTE5MiAwLTgzLjctNTMuNS0xNTQuOC0xMjguMi0xODEuMSAuMS0uOSAuMi0xLjkgLjItMi45bDAtMTZjMC0xMy4zLTEwLjctMjQtMjQtMjRsLTgwIDBjLTEyLjMgMC0yMi40IDkuMi0yMy44IDIxLjEgMzAuMyAxOS4yIDU2LjEgNDUgNzUuMiA3NS40IDY1LjQgNS44IDExNi42IDYwLjYgMTE2LjYgMTI3LjV6TTM4NCA2NGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6Il19LFVqdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoYXQtY293Ym95LXNpZGUiLGljb246WzY0MCw1MTIsW10sImY4YzEiLCJNNjQwIDM4OC4zYzAgMTYuOS03LjEgMzIuMi0xOC40IDQzLjFsLTM1LTIzLjMtMjkyLjctMTk1LjFjLTM2LjEtMjQuMS03OC42LTM2LjktMTIyLTM2LjlsLTMuOSAwYy0yLjcgMC01LjQgMC04IC4xbDIyLjItMTAwYzUuNy0yNS44IDI4LjYtNDQuMSA1NS00NC4xIDEyLjIgMCAyNC4xIDQgMzMuOCAxMS4zbDQuNyAzLjVjMjYuMyAxOS43IDYyLjQgMTkuNyA4OC42IDBsNC43LTMuNWM5LjgtNy4zIDIxLjYtMTEuMyAzMy44LTExLjMgMjYuNCAwIDQ5LjMgMTguMyA1NSA0NC4xbDMzIDE0OC41QzU3NC41IDIzMi4zIDY0MCAzMDIuNiA2NDAgMzg4LjN6TTE3MS45IDIyNGMzMy45IDAgNjcuMSAxMCA5NS40IDI4LjlMNTYwIDQ0OCA1NiA0NDhjLTMwLjkgMC01Ni0yNS4xLTU2LTU2IDAtOTIuOCA3NS4yLTE2OCAxNjgtMTY4bDMuOSAweiJdfSxXanQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaW5kdXN0cnkiLGljb246WzUxMiw1MTIsW10sImYyNzUiLCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NEwwIDQzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OGw0MTYgMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTI3OS44YzAtMTguMi0xOS40LTI5LjctMzUuNC0yMS4xbC0xNTYuNiA4NC4zIDAtNjMuMmMwLTE4LjItMTkuNC0yOS43LTM1LjQtMjEuMUwxMjggMjE1LjQgMTI4IDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyTDMyIDMyeiJdfSxHanQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibGluZXMtbGVhbmluZyIsaWNvbjpbMzg0LDUxMixbXSwiZTUxZSIsIk0xOTAuNCA3NC4xYzUuNi0xNi44LTMuNS0zNC45LTIwLjItNDAuNXMtMzQuOSAzLjUtNDAuNSAyMC4ybC0xMjggMzg0Yy01LjYgMTYuOCAzLjUgMzQuOSAyMC4yIDQwLjVzMzQuOS0zLjUgNDAuNS0yMC4ybDEyOC0zODR6bTcwLjktNDEuN2MtMTcuNC0yLjktMzMuOSA4LjktMzYuOCAyNi4zbC02NCAzODRjLTIuOSAxNy40IDguOSAzMy45IDI2LjMgMzYuOHMzMy45LTguOSAzNi44LTI2LjNsNjQtMzg0YzIuOS0xNy40LTguOS0zMy45LTI2LjMtMzYuOHpNMzUyIDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDM4NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMzg0YzAtMTcuNy0xNC4zLTMyLTMyLTMyeiJdfSxLanQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGFzc3BvcnQiLGljb246WzM4NCw1MTIsW10sImY1YWIiLCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBMMzIwIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAzODRjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDY0ek05NiA0MDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRsMTQ0IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTE0NCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHpNMjc4LjYgMjA4Yy00LjggMjYuNC0yMS41IDQ4LjctNDQuMiA2MS4yIDYuNy0xNyAxMS4yLTM4IDEyLjYtNjEuMmwzMS42IDB6bS0xNzMuMSAwbDMxLjYgMGMxLjQgMjMuMSA2IDQ0LjIgMTIuNiA2MS4yLTIyLjctMTIuNS0zOS40LTM0LjgtNDQuMi02MS4yem03Ni40IDU1Yy02LjItMTMuNC0xMS4xLTMyLjUtMTIuNy01NWw0NS44IDBjLTEuNiAyMi41LTYuNSA0MS42LTEyLjcgNTUtNC41IDkuNi04LjIgMTMuOC0xMC4yIDE1LjUtMi0xLjctNS43LTUuOC0xMC4yLTE1LjV6bTAtMTQyYzQuNS05LjYgOC4yLTEzLjggMTAuMi0xNS41IDIgMS43IDUuNyA1LjggMTAuMiAxNS41IDYuMiAxMy40IDExLjEgMzIuNSAxMi43IDU1bC00NS44IDBjMS42LTIyLjUgNi41LTQxLjYgMTIuNy01NXptOTYuNyA1NUwyNDcgMTc2Yy0xLjQtMjMuMS02LTQ0LjItMTIuNi02MS4yIDIyLjcgMTIuNSAzOS40IDM0LjggNDQuMiA2MS4yek0xMzcgMTc2bC0zMS42IDBjNC44LTI2LjQgMjEuNS00OC43IDQ0LjItNjEuMi02LjcgMTctMTEuMiAzOC0xMi42IDYxLjJ6bTE4MyAxNmExMjggMTI4IDAgMSAwIC0yNTYgMCAxMjggMTI4IDAgMSAwIDI1NiAweiJdfSxZanQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaW5maW5pdHkiLGljb246WzY0MCw1MTIsWzg3MzQsOTg1NF0sImY1MzQiLCJNMCAyNTZjMC04OC40IDcxLjYtMTYwIDE2MC0xNjAgNTAuNCAwIDk3LjggMjMuNyAxMjggNjRsMzIgNDIuNyAzMi00Mi43YzMwLjItNDAuMyA3Ny42LTY0IDEyOC02NCA4OC40IDAgMTYwIDcxLjYgMTYwIDE2MFM1NjguNCA0MTYgNDgwIDQxNmMtNTAuNCAwLTk3LjgtMjMuNy0xMjgtNjRsLTMyLTQyLjctMzIgNDIuN2MtMzAuMiA0MC4zLTc3LjYgNjQtMTI4IDY0LTg4LjQgMC0xNjAtNzEuNi0xNjAtMTYwem0yODAgMGwtNDMuMi01Ny42Yy0xOC4xLTI0LjItNDYuNi0zOC40LTc2LjgtMzguNC01MyAwLTk2IDQzLTk2IDk2czQzIDk2IDk2IDk2YzMwLjIgMCA1OC43LTE0LjIgNzYuOC0zOC40TDI4MCAyNTZ6bTgwIDBsNDMuMiA1Ny42YzE4LjEgMjQuMiA0Ni42IDM4LjQgNzYuOCAzOC40IDUzIDAgOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2Yy0zMC4yIDAtNTguNyAxNC4yLTc2LjggMzguNEwzNjAgMjU2eiJdfSxaanQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2xvbmUiLGljb246WzUxMiw1MTIsW10sImYyNGQiLCJNMjg4IDQ0OGwtMjI0IDAgMC0yMjQgNDggMCAwLTY0LTQ4IDBjLTM1LjMgMC02NCAyOC43LTY0IDY0TDAgNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0bDIyNCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtNDgtNjQgMCAwIDQ4em0tNjQtOTZsMjI0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yMjRjMC0zNS4zLTI4LjctNjQtNjQtNjRMMjI0IDBjLTM1LjMgMC02NCAyOC43LTY0IDY0bDAgMjI0YzAgMzUuMyAyOC43IDY0IDY0IDY0eiJdfSxYanQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZm9yd2FyZCIsaWNvbjpbNTc2LDUxMixbOTE5M10sImYwNGUiLCJNMzcxLjcgNDMuMUMzNjAuMSAzMiAzNDMgMjguOSAzMjguMyAzNS4yUzMwNCA1NiAzMDQgNzJsMCAxMzYuMy0xNzIuMy0xNjUuMUMxMjAuMSAzMiAxMDMgMjguOSA4OC4zIDM1LjJTNjQgNTYgNjQgNzJsMCAzNjhjMCAxNiA5LjYgMzAuNSAyNC4zIDM2LjhzMzEuOCAzLjIgNDMuNC03LjlMMzA0IDMwMy43IDMwNCA0NDBjMCAxNiA5LjYgMzAuNSAyNC4zIDM2LjhzMzEuOCAzLjIgNDMuNC03LjlsMTkyLTE4NGM3LjktNy41IDEyLjMtMTggMTIuMy0yOC45cy00LjUtMjEuMy0xMi4zLTI4LjlsLTE5Mi0xODR6Il19LFFqdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJtIixpY29uOls0NDgsNTEyLFsxMDldLCI0ZCIsIk0yMi43IDMzLjRjMTMuNS00LjEgMjguMSAxLjEgMzUuOSAxMi45TDIyNCAyOTQuMyAzODkuNCA0Ni4zYzcuOC0xMS43IDIyLjQtMTcgMzUuOS0xMi45UzQ0OCA0OS45IDQ0OCA2NGwwIDM4NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTI3OC4zLTEzMy40IDIwMC4xYy01LjkgOC45LTE1LjkgMTQuMi0yNi42IDE0LjJzLTIwLjctNS4zLTI2LjYtMTQuMkw2NCAxNjkuNyA2NCA0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJTMCA0NjUuNyAwIDQ0OEwwIDY0QzAgNDkuOSA5LjIgMzcuNSAyMi43IDMzLjR6Il19LEpqdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJyb2FkLXNwaWtlcyIsaWNvbjpbNjQwLDUxMixbXSwiZTU2OCIsIk02NCAxMTYuOGMwLTE1LjggMjAuNS0yMiAyOS4zLTguOWw5OC43IDE0OCAwLTEzOS4yYzAtMTUuOCAyMC41LTIyIDI5LjMtOC45bDk4LjcgMTQ4IDAtMTM5LjJjMC0xNS44IDIwLjUtMjIgMjkuMy04LjlsOTguNyAxNDggMC0xMzkuMmMwLTE1LjggMjAuNS0yMiAyOS4zLTguOUw2MDYuOCAzMDIuMmMxNC4yIDIxLjMtMS4xIDQ5LjgtMjYuNiA0OS44TDY0IDM1MiA2NCAxMTYuOHpNMzIgMzg0bDU3NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDMyIDQ0OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnoiXX0sZVZ0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im1vdW50YWluIixpY29uOls1MTIsNTEyLFsxMjc5NTZdLCJmNmZjIiwiTTI1Ni41IDBjMTQuNyAwIDI4LjIgOC4xIDM1LjIgMjFsMjE2IDQwMGM2LjcgMTIuNCA2LjQgMjcuNC0uOCAzOS41LTcuMiAxMi4xLTIwLjMgMTkuNS0zNC4zIDE5LjVsLTQzMiAwYy0xNC4xIDAtMjcuMS03LjQtMzQuMy0xOS41cy03LjUtMjcuMS0uOC0zOS41bDIxNi00MDAgMi45LTQuNkMyMzEuNyA2LjIgMjQzLjYgMCAyNTYuNSAwek0xNzAuNCAyNDkuOWwyNi44IDI2LjhjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBsNDMuMy00My4zYzYtNiAxNC4xLTkuNCAyMi42LTkuNGw0Mi44IDAtNzIuMS0xMzMuNS04Ni4xIDE1OS40eiJdfSx0VnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2hlc3MiLGljb246WzUxMiw1MTIsW10sImY0MzkiLCJNMTY4IDU2bDAgNDAtNzguMSAwYy0xNC4zIDAtMjUuOSAxMS42LTI1LjkgMjUuOSAwIDQgLjkgOCAyLjcgMTEuNmwzMy40IDY2LjhjLTExLjQgMS44LTIwLjIgMTEuNy0yMC4yIDIzLjcgMCAxMy4zIDEwLjcgMjQgMjQgMjRsNS42IDAtMTMuNiAxMzYtNTYuMiA3MC4zYy01IDYuMy03LjggMTQuMS03LjggMjIuMiAwIDE5LjYgMTUuOSAzNS41IDM1LjUgMzUuNWwyNDguOSAwYzE5LjYgMCAzNS41LTE1LjkgMzUuNS0zNS41IDAtOC4xLTIuNy0xNS45LTcuOC0yMi4yTDI4OCAzODQgMjc0LjQgMjQ4IDI4MCAyNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjQgMC0xMS45LTguNy0yMS45LTIwLjItMjMuN2wzMy40LTY2LjhjMS44LTMuNiAyLjctNy42IDIuNy0xMS42IDAtMTQuMy0xMS42LTI1LjktMjUuOS0yNS45bC03OC4xIDAgMC00MCAxNiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0UzI0NS4zIDggMjMyIDhsLTE2IDAgMC0xNmMwLTEzLjMtMTAuNy0yNC0yNC0yNFMxNjgtMjEuMyAxNjgtOGwwIDE2LTE2IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMTYgMHpNMzI1LjggMjc5LjZsOC41IDg1LjUgNDcuNCA1OS4yIDQuMiA1LjdjOS4yIDEzLjcgMTQuMSAyOS45IDE0LjEgNDYuNSAwIDEyLjctMi44IDI0LjgtNy45IDM1LjVsODMuMSAwYzIwLjMgMCAzNi44LTE2LjUgMzYuOC0zNi44IDAtNy4zLTIuMi0xNC40LTYuMi0yMC40bC0yNS44LTM4LjcgMC02NCAxMy4zLTEzLjNjMTItMTIgMTguNy0yOC4zIDE4LjctNDUuM0w1MTIgMTkyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgMTYtMzIgMCAwLTE2YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgMzJjMCAyMi40LTEwLjIgNDIuNC0yNi4yIDU1LjZ6Il19LEprPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRlbXBlcmF0dXJlLXRocmVlLXF1YXJ0ZXJzIixpY29uOlszMjAsNTEyLFsidGVtcGVyYXR1cmUtMyIsInRoZXJtb21ldGVyLTMiLCJ0aGVybW9tZXRlci10aHJlZS1xdWFydGVycyJdLCJmMmM4IiwiTTE2MCAwQzEwNyAwIDY0IDQzIDY0IDk2bDAgMTY0LjdDMzQuNSAyODcgMTYgMzI1LjQgMTYgMzY4IDE2IDQ0Ny41IDgwLjUgNTEyIDE2MCA1MTJzMTQ0LTY0LjUgMTQ0LTE0NGMwLTQyLjYtMTguNS04MS00OC0xMDcuM0wyNTYgOTZjMC01My00My05Ni05Ni05NnptNjQgMzY4YzAgMzUuMy0yOC43IDY0LTY0IDY0cy02NC0yOC43LTY0LTY0YzAtMjYuOSAxNi41LTQ5LjkgNDAtNTkuM0wxMzYgMTUyYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCAxNTYuN2MyMy41IDkuNSA0MCAzMi41IDQwIDU5LjN6Il19LGFWdD1KayxzVnQ9SmssaVZ0PUprLHJWdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJiIixpY29uOlszMjAsNTEyLFs5OF0sIjQyIiwiTTMyIDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRMMCA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJsMTYwIDBjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjggMC00Ni41LTI0LjgtODcuMy02Mi0xMDkuNyAxOC43LTIyLjMgMzAtNTEgMzAtODIuMyAwLTcwLjctNTcuMy0xMjgtMTI4LTEyOEwzMiAzMnpNMTYwIDIyNGwtOTYgMCAwLTEyOCA5NiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0ek02NCAyODhsMTI4IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRzLTI4LjcgNjQtNjQgNjRsLTEyOCAwIDAtMTI4eiJdfSxvVnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic2hpZWxkLXZpcnVzIixpY29uOls1MTIsNTEyLFtdLCJlMDZjIiwiTTI1My40IDIuOUMyNDkuMiAxIDI0NC43IDAgMjQwIDBzLTkuMiAxLTEzLjQgMi45TDM4LjMgODIuOGMtMjIgOS4zLTM4LjQgMzEtMzguMyA1Ny4yIC41IDk5LjIgNDEuMyAyODAuNyAyMTMuNiAzNjMuMiAxNi43IDggMzYuMSA4IDUyLjggMCAxNzIuNC04Mi41IDIxMy4yLTI2NCAyMTMuNi0zNjMuMiAuMS0yNi4yLTE2LjMtNDcuOS0zOC4zLTU3LjJMMjUzLjQgMi45ek0yNDAgMTI4YzEzLjMgMCAyNCAxMC43IDI0IDI0IDAgMjIuOSAyNy43IDM0LjQgNDMuOSAxOC4yIDkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWMtMTYuMiAxNi4yLTQuNyA0My45IDE4LjIgNDMuOSAxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGMtMjIuOSAwLTM0LjQgMjcuNy0xOC4yIDQzLjkgOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGMtMTYuMi0xNi4yLTQzLjktNC43LTQzLjkgMTguMiAwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGMwLTIyLjktMjcuNy0zNC40LTQzLjktMTguMi05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45YzE2LjItMTYuMiA0LjctNDMuOS0xOC4yLTQzLjktMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGMyMi45IDAgMzQuNC0yNy43IDE4LjItNDMuOS05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBjMTYuMiAxNi4yIDQzLjkgNC43IDQzLjktMTguMiAwLTEzLjMgMTAuNy0yNCAyNC0yNHpNMjA4IDI2NGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bTg4IDQwYTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6Il19LG5WdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJsaXRlY29pbi1zaWduIixpY29uOlszODQsNTEyLFtdLCJlMWQzIiwiTTEyOCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMlM2NCA0Ni4zIDY0IDY0bDAgMTU3LjktMzguNiAxMWMtMTIuNyAzLjYtMjAuMSAxNi45LTE2LjUgMjkuN3MxNi45IDIwLjEgMjkuNyAxNi41TDY0IDI3MS44IDY0IDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwyNTYgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMjI0IDAgMC0xNjIuNSAxMzQuNi0zOC41YzEyLjctMy42IDIwLjEtMTYuOSAxNi41LTI5LjdzLTE2LjktMjAuMS0yOS43LTE2LjVMMTI4IDIwMy42IDEyOCA2NHoiXX0sbFZ0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImRpY2UtZDYiLGljb246WzUxMiw1MTIsW10sImY2ZDEiLCJNMjI0LjQgOC4zQzI0NC0yLjggMjY4LTIuOCAyODcuNiA4LjNsMTc2IDk5LjdjMjAgMTEuNCAzMi40IDMyLjYgMzIuNCA1NS43bDAgMTk3LjRjMCAyMy0xMi40IDQ0LjMtMzIuNCA1NS43bC0xNzYgOTkuN2MtMTkuNiAxMS4xLTQzLjYgMTEuMS02My4xIDBsLTE3Ni05OS43QzI4LjQgNDA1LjUgMTYgMzg0LjIgMTYgMzYxLjJsMC0xOTcuNGMwLTIzIDEyLjQtNDQuMyAzMi40LTU1LjdsMTc2LTk5Ljd6TTEwMi42IDE1NS42Yy04LjgtMy4xLTE4LjggLjMtMjMuOCA4LjZzLTMuMiAxOC43IDMuNiAyNWwzLjIgMi40IDE1MC4yIDkwLjIgMCAxNDguN2MwIDExIDkgMjAgMjAgMjAgMTEgMCAyMC05IDIwLTIwbDAtMTQ4LjcgMTUwLjMtOTAuMmM5LjUtNS43IDEyLjYtMTggNi45LTI3LjRzLTE4LTEyLjUtMjcuNC02LjlsLTE0OS43IDg5LjgtMTQ5LjctODkuOC0zLjctMS43eiJdfSxjVnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZ3JpcC1saW5lcy12ZXJ0aWNhbCIsaWNvbjpbMTkyLDUxMixbXSwiZjdhNSIsIk02NCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMlMwIDQ2LjMgMCA2NEwwIDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyTDY0IDY0em0xMjggMGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDM4NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMzg0eiJdfSxKOWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZ29sZi1iYWxsLXRlZSIsaWNvbjpbMzg0LDUxMixbImdvbGYtYmFsbCJdLCJmNDUwIiwiTTI5OC41IDM4NC4xYzEyLjEgMS4yIDIxLjUgMTEuNSAyMS41IDIzLjlzLTkuNCAyMi42LTIxLjUgMjMuOWwtMi41IC4xLTgwIDAgMCA4OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTg4LTgwIDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0IDAtMTIuNCA5LjQtMjIuNiAyMS41LTIzLjlsMi41LS4xIDIwOCAwIDIuNSAuMXpNMTkyIDBjMTA2IDAgMTkyIDg2IDE5MiAxOTIgMCA1Ny40LTI1LjIgMTA4LjgtNjUuMSAxNDRMNjUuMSAzMzZDMjUuMiAzMDAuOCAwIDI0OS40IDAgMTkyIDAgODYgODYgMCAxOTIgMHptMzIgMjQwYy03LjcgMC0xNC4yIDUuNS0xNS43IDEyLjhsLS42IDYuNGMtMS4zIDYuMy02LjIgMTEuMi0xMi41IDEyLjVsLTYuNCAuNmMtNy4zIDEuNS0xMi44IDgtMTIuOCAxNS43IDAgOC44IDcuMiAxNiAxNiAxNiAyNi41IDAgNDgtMjEuNSA0OC00OCAwLTguOC03LjItMTYtMTYtMTZ6bTY0LTY0Yy03LjcgMC0xNC4yIDUuNS0xNS43IDEyLjhsLS42IDYuNGMtMS4zIDYuMy02LjIgMTEuMi0xMi41IDEyLjVsLTYuNCAuNmMtNy4zIDEuNS0xMi44IDgtMTIuOCAxNS43IDAgOC44IDcuMiAxNiAxNiAxNiAyNi41IDAgNDgtMjEuNSA0OC00OCAwLTguOC03LjItMTYtMTYtMTZ6bS04MC0xNmMtNy43IDAtMTQuMiA1LjUtMTUuNyAxMi44bC0uNiA2LjRjLTEuMyA2LjMtNi4yIDExLjItMTIuNSAxMi41bC02LjQgLjZjLTcuMyAxLjUtMTIuOCA4LTEyLjggMTUuNyAwIDguOCA3LjIgMTYgMTYgMTYgMjYuNSAwIDQ4LTIxLjUgNDgtNDggMC04LjgtNy4yLTE2LTE2LTE2eiJdfSxkVnQ9SjllLHVWdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoZXhhZ29uIixpY29uOls1NzYsNTEyLFsxMTA0M10sImYzMTIiLCJNMzMuNSAyMjAuM2MtMTIuNyAyMi4yLTEyLjcgNDkuNCAwIDcxLjVsOTYuMiAxNjguMWMxMi44IDIyLjQgMzYuNyAzNi4yIDYyLjUgMzYuMmwxOTEuNiAwYzI1LjggMCA0OS43LTEzLjggNjIuNS0zNi4ybDk2LjItMTY4LjFjMTIuNy0yMi4yIDEyLjctNDkuNCAwLTcxLjVMNDQ2LjMgNTIuMkM0MzMuNSAyOS44IDQwOS42IDE2IDM4My44IDE2TDE5Mi4yIDE2Yy0yNS44IDAtNDkuNyAxMy44LTYyLjUgMzYuMkwzMy41IDIyMC4zeiJdfSxwVnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZm9sZGVyLW9wZW4iLGljb246WzU3Niw1MTIsWzEyODE5NCwxMjg0NDksNjE3MTddLCJmMDdjIiwiTTU2IDIyNS42TDMyLjQgMjk2LjIgMzIuNCA5NmMwLTM1LjMgMjguNy02NCA2NC02NGwxMzguNyAwYzEzLjggMCAyNy4zIDQuNSAzOC40IDEyLjhsMzguNCAyOC44YzUuNSA0LjIgMTIuMyA2LjQgMTkuMiA2LjRsMTE3LjMgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDE2LTM2NS40IDBjLTQxLjMgMC03OCAyNi40LTkxLjEgNjUuNnpNNDc3LjggNDQ4TDk5IDQ0OGMtMzIuOCAwLTU1LjktMzIuMS00NS41LTYzLjJsNDgtMTQ0QzEwOCAyMjEuMiAxMjYuNCAyMDggMTQ3IDIwOGwzNzguOCAwYzMyLjggMCA1NS45IDMyLjEgNDUuNSA2My4ybC00OCAxNDRjLTYuNSAxOS42LTI0LjkgMzIuOC00NS41IDMyLjh6Il19LGhWdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJrYWFiYSIsaWNvbjpbNTEyLDUxMixbMTI4MzMxXSwiZjY2YiIsIk0yNTYgNTEuM0w5Mi44IDExMi40IDI0Ny41IDE3MS4xYzUuNSAyLjEgMTEuNSAyLjEgMTcgMEw0MTkuMiAxMTIuNCAyNTYgNTEuM3pNMCAxMjkuM2MwLTIwIDEyLjQtMzcuOSAzMS4xLTQ0LjlsMjA4LTc4YzEwLjktNC4xIDIyLjgtNC4xIDMzLjcgMGwyMDggNzhjMTguNyA3IDMxLjEgMjQuOSAzMS4xIDQ0LjlsMCAzNi0yNTMuMiA5NmMtMS44IC43LTMuOCAuNy01LjcgMGwtMjUzLjItOTYgMC0zNnptMCAxNDBsMC01Mi43IDIzNi4xIDg5LjZjMTIuOCA0LjkgMjYuOSA0LjkgMzkuNyAwbDIzNi4xLTg5LjYgMCA1Mi43LTEyOCA0OC42IDAgNTEuMyAxMjgtNDguNiAwIDYyLjJjMCAyMC0xMi40IDM3LjktMzEuMSA0NC45bC0yMDggNzhjLTEwLjkgNC4xLTIyLjggNC4xLTMzLjcgMGwtMjA4LTc4QzEyLjQgNDIwLjcgMCA0MDIuNyAwIDM4Mi43bDAtNjIuMiAxMjggNDguNiAwLTUxLjMtMTI4LTQ4LjZ6TTIzNi4xIDQxMC4xYzEyLjggNC45IDI2LjkgNC45IDM5LjcgMGw2MC4xLTIyLjggMC01MS4zLTc3LjIgMjkuM2MtMS44IC43LTMuOCAuNy01LjcgMGwtNzcuMi0yOS4zIDAgNTEuMyA2MC4xIDIyLjh6Il19LGZWdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoYW5kLWhvbGRpbmciLGljb246WzU3Niw1MTIsW10sImY0YmQiLCJNNjYuNyAzODRsNDIuNS00Mi41YzI0LTI0IDU2LjYtMzcuNSA5MC41LTM3LjVMMzUyIDMwNGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtNzIgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwxMTIuNiAwIDExOS43LTg4LjJjMTcuOC0xMy4xIDQyLjgtOS4zIDU1LjkgOC41czkuMyA0Mi44LTguNSA1NS45TDQzMy4xIDQ4NS41Yy0yMy40IDE3LjItNTEuNiAyNi41LTgwLjcgMjYuNUwzMiA1MTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtNjRjMC0xNy43IDE0LjMtMzIgMzItMzJsMzQuNyAweiJdfSxtVnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic2luZ2xlLXF1b3RlLXJpZ2h0IixpY29uOlsxOTIsNTEyLFtdLCJlODFjIiwiTTY0IDQxNmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw4IDBjMzAuOSAwIDU2LTI1LjEgNTYtNTZsMC04LTY0IDBjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRsNjQgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDEzNmMwIDY2LjMtNTMuNyAxMjAtMTIwIDEyMGwtOCAweiJdfSxnVnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYm90dGxlLWRyb3BsZXQiLGljb246WzMyMCw1MTIsW10sImU0YzQiLCJNODAgMGMwLTE3LjcgMTQuMy0zMiAzMi0zMmw5NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybDAgMTAzLjNjNjQuOSAyMC40IDExMiA4MSAxMTIgMTUyLjdsMCAxOTJjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNTQ0Yy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDI4OGMwLTcxLjYgNDcuMS0xMzIuMyAxMTItMTUyLjdMMTEyIDMyQzk0LjMgMzIgODAgMTcuNyA4MCAwem04MCA0MTZjMzUuMyAwIDY0LTMyLjQgNjQtNjQgMC0yMS4yLTI4LjktNjQuNS00Ny45LTkwLjYtOC4xLTExLjEtMjQuMi0xMS4xLTMyLjMgMC0xOSAyNi4xLTQ3LjkgNjkuNC00Ny45IDkwLjYgMCAzMS42IDI4LjcgNjQgNjQgNjR6Il19LGJWdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ3aW5kb3ctbWluaW1pemUiLGljb246WzUxMiw1MTIsWzEyODQ2OV0sImYyZDEiLCJNMCA0MTZjMC0xNy43IDE0LjMtMzIgMzItMzJsNDQ4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMMzIgNDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnoiXX0sdlZ0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNoZXZyb24tcmlnaHQiLGljb246WzMyMCw1MTIsWzkwMDJdLCJmMDU0IiwiTTMxMS4xIDIzMy40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC0xOTIgMTkyYy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0wyNDMuMiAyNTYgNzMuOSA4Ni42Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwbDE5MiAxOTJ6Il19LHhWdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJlZ2ciLGljb246WzM4NCw1MTIsWzEyOTM3MF0sImY3ZmIiLCJNMTkyIDQ5NkM4NiA0OTYgMCAzOTQgMCAyODggMCAxNzYgNjQgMTYgMTkyIDE2UzM4NCAxNzYgMzg0IDI4OGMwIDEwNi04NiAyMDgtMTkyIDIwOHpNMTU0LjggMTM0YzYuNS02IDctMTYuMSAxLTIyLjZzLTE2LjEtNy0yMi42LTFjLTIzLjkgMjEuOC00MS4xIDUyLjctNTIuMyA4NC4yLTExLjIgMzEuNi0xNi45IDY1LjEtMTYuOSA5My41IDAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZjMC0yNC41IDUtNTQuNCAxNS4xLTgyLjggMTAuMS0yOC41IDI1LTU0LjEgNDMuNy03MS4yeiJdfSxlYmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibGFuZG1hcmstZG9tZSIsaWNvbjpbNTEyLDUxMixbImxhbmRtYXJrLWFsdCJdLCJmNzUyIiwiTTI1NiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMiAwIC45IDAgMS44IC4xIDIuNi04MC41IDEzLjQtMTQ0IDc2LjktMTU3LjUgMTU3LjRMNjQgMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDAgMTYwLTUxLjIgMzguNEM0LjcgNDYwLjQgMCA0NjkuOSAwIDQ4MCAwIDQ5Ny43IDE0LjMgNTEyIDMyIDUxMmw0NDggMGMxNy43IDAgMzItMTQuMyAzMi0zMiAwLTEwLjEtNC43LTE5LjYtMTIuOC0yNS42TDQ0OCA0MTYgNDQ4IDI1NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMi43IDBjLTEzLjUtODAuNC03Ny0xNDMuOS0xNTcuNS0xNTcuNCAuMS0uOSAuMS0xLjcgLjEtMi42IDAtMTcuNy0xNC4zLTMyLTMyLTMyem04MCAyNTZsNjQgMCAwIDE2MC02NCAwIDAtMTYwek0yMjQgNDE2bDAtMTYwIDY0IDAgMCAxNjAtNjQgMHpNMTEyIDI1Nmw2NCAwIDAgMTYwLTY0IDAgMC0xNjB6Il19LHlWdD1lYmUsd1Z0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Indvcm0iLGljb246WzQ0OCw1MTIsW10sImU1OTkiLCJNMjI0IDk2YzAtNTMgNDMtOTYgOTYtOTZsMzguNCAwQzQwNy45IDAgNDQ4IDQwLjEgNDQ4IDg5LjZMNDQ4IDM3NmMwIDc1LjEtNjAuOSAxMzYtMTM2IDEzNlMxNzYgNDUxLjEgMTc2IDM3NmwwLTgwYzAtMjIuMS0xNy45LTQwLTQwLTQwcy00MCAxNy45LTQwIDQwbDAgMTY4YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4UzAgNDkwLjUgMCA0NjRMMCAyOTZjMC03NS4xIDYwLjktMTM2IDEzNi0xMzZzMTM2IDYwLjkgMTM2IDEzNmwwIDgwYzAgMjIuMSAxNy45IDQwIDQwIDQwczQwLTE3LjkgNDAtNDBsMC0xODQtMzIgMGMtNTMgMC05Ni00My05Ni05NnptMTQ0LThhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHoiXX0sa1Z0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InVzZXItaW5qdXJlZCIsaWNvbjpbNDQ4LDUxMixbXSwiZjcyOCIsIk0yNDIuNyA4MEwzMzQgODBjLTEwLjctMjQuNi0yOS41LTQ0LjktNTIuOS01Ny42TDI0Mi43IDgwem0tLjktNzAuN0MyMzYgOC40IDIzMCA4IDIyNCA4IDE3NC44IDggMTMyLjUgMzcuNiAxMTQgODBsODAuNiAwIDQ3LjEtNzAuN3pNMjI0IDI0OGM2Ni4zIDAgMTIwLTUzLjcgMTIwLTEyMGwtMjQwIDBjMCA2Ni4zIDUzLjcgMTIwIDEyMCAxMjB6TTk4LjcgMzQxLjhDNDkuMyAzNzAuMiAxNiA0MjMuNSAxNiA0ODQuNiAxNiA0OTkuNyAyOC4zIDUxMiA0My40IDUxMmwxNTEgMC05NS44LTE3MC4yem00NS4xLTE3LjdsNDIuNyA3NS45IDg1LjUgMGM0NC4yIDAgODAgMzUuOCA4MCA4MCAwIDExLjQtMi40IDIyLjItNi43IDMybDU5LjIgMGMxNS4xIDAgMjcuNC0xMi4zIDI3LjQtMjcuNCAwLTkwLjktNzMuNy0xNjQuNi0xNjQuNi0xNjQuNmwtODYuOSAwYy0xMi42IDAtMjQuOSAxLjQtMzYuNyA0LjF6TTIxMy41IDQ0OGwzNiA2NCAyMi41IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTU4LjUgMHoiXX0sU1Z0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InN0cmlrZXRocm91Z2giLGljb246WzUxMiw1MTIsW10sImYwY2MiLCJNOTYgMTU3LjVDOTYgODguMiAxNTIuMiAzMiAyMjEuNSAzMkwzNjggMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMMjIxLjUgOTZjLTM0IDAtNjEuNSAyNy41LTYxLjUgNjEuNSAwIDMxIDIzLjEgNTcuMiA1My45IDYxbDQ0LjEgNS41IDIyMiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDMyIDI4OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw4My4xIDBDMTAzIDIwNC42IDk2IDE4MS44IDk2IDE1Ny41ek0zNDkuMiAzMzZsNjUuNSAwYy45IDYuMSAxLjQgMTIuMiAxLjQgMTguNSAwIDY5LjMtNTYuMiAxMjUuNS0xMjUuNSAxMjUuNUwxNDQgNDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDE0Ni41IDBjMzQgMCA2MS41LTI3LjUgNjEuNS02MS41IDAtNi40LTEtMTIuNy0yLjgtMTguNXoiXX0sX1Z0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJsb2ciLGljb246WzUxMiw1MTIsW10sImY3ODEiLCJNMjI0IDI0YzAtMTMuMyAxMC43LTI0IDI0LTI0IDE0NS44IDAgMjY0IDExOC4yIDI2NCAyNjQgMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRjMC0xMTkuMy05Ni43LTIxNi0yMTYtMjE2LTEzLjMgMC0yNC0xMC43LTI0LTI0ek04MCA5NmMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDIyNGMwIDI2LjUgMjEuNSA0OCA0OCA0OHM0OC0yMS41IDQ4LTQ4LTIxLjUtNDgtNDgtNDhjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTY0YzAtOC44IDcuMi0xNiAxNi0xNiA3OS41IDAgMTQ0IDY0LjUgMTQ0IDE0NFMyNTUuNSA1MTIgMTc2IDUxMiAzMiA0NDcuNSAzMiAzNjhsMC0yMjRjMC0yNi41IDIxLjUtNDggNDgtNDh6bTE2OCAwYzkyLjggMCAxNjggNzUuMiAxNjggMTY4IDAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0YzAtNjYuMy01My43LTEyMC0xMjAtMTIwLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6Il19LE1WdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzdG9wd2F0Y2gtMjAiLGljb246WzQ0OCw1MTIsW10sImUwNmYiLCJNMTY4LjUgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwzMiAwIDAgMjUuM2MtMTA4IDExLjktMTkyIDEwMy41LTE5MiAyMTQuNyAwIDExOS4zIDk2LjcgMjE2IDIxNiAyMTZzMjE2LTk2LjcgMjE2LTIxNmMwLTM5LjgtMTAuOC03Ny4xLTI5LjYtMTA5LjJsMjguMi0yOC4yYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC0yMy40IDIzLjRjLTMyLjktMzAuMi03NS4yLTUwLjMtMTIyLTU1LjVsMC0yNS4zIDMyIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTExMiAwem0tNjAgMjQwYzAtMjguNyAyMy4zLTUyIDUyLTUyczUyIDIzLjMgNTIgNTJsMCAzLjhjMCAxMS43LTMuMiAyMy4xLTkuMyAzM2wtNDMuOCA3MS4yIDMzLjEgMGMxMSAwIDIwIDkgMjAgMjBzLTkgMjAtMjAgMjBsLTU3LjggMGMtMTQuNSAwLTI2LjItMTEuNy0yNi4yLTI2LjIgMC00LjkgMS4zLTkuNiAzLjktMTMuOGw1Ni43LTkyLjFjMi4yLTMuNiAzLjQtNy44IDMuNC0xMi4xbDAtMy44YzAtNi42LTUuNC0xMi0xMi0xMnMtMTIgNS40LTEyIDEyYzAgMTEtOSAyMC0yMCAyMHMtMjAtOS0yMC0yMHptMTgwLTUyYzI4LjcgMCA1MiAyMy4zIDUyIDUybDAgOTZjMCAyOC43LTIzLjMgNTItNTIgNTJzLTUyLTIzLjMtNTItNTJsMC05NmMwLTI4LjcgMjMuMy01MiA1Mi01MnptLTEyIDUybDAgOTZjMCA2LjYgNS40IDEyIDEyIDEyczEyLTUuNCAxMi0xMmwwLTk2YzAtNi42LTUuNC0xMi0xMi0xMnMtMTIgNS40LTEyIDEyeiJdfSx6VnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidHJ1Y2stcGlja3VwIixpY29uOls2NDAsNTEyLFsxMjg3NjNdLCJmNjNjIiwiTTM2My44IDk2bDU3LjYgOTYtMTMzLjQgMCAwLTk2IDc1LjggMHpNNDk2IDE5Mkw0MTguNiA2My4xQzQwNy4xIDQzLjggMzg2LjIgMzIgMzYzLjggMzJMMjU2IDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDEyOC0xNDQgMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCA4MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzMi40IDBjLS4yIDIuNi0uNCA1LjMtLjQgOCAwIDQ4LjYgMzkuNCA4OCA4OCA4OHM4OC0zOS40IDg4LTg4YzAtMi43LS4xLTUuNC0uNC04bDE2MC43IDBjLS4yIDIuNi0uNCA1LjMtLjQgOCAwIDQ4LjYgMzkuNCA4OCA4OCA4OHM4OC0zOS40IDg4LTg4YzAtMi43LS4xLTUuNC0uNC04bDMyLjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwwLTgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4bC02NCAwek0xMTIgMzkyYTQwIDQwIDAgMSAxIDgwIDAgNDAgNDAgMCAxIDEgLTgwIDB6bTM3Ni00MGE0MCA0MCAwIDEgMSAwIDgwIDQwIDQwIDAgMSAxIDAtODB6Il19LHRiZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzZWVkbGluZyIsaWNvbjpbNTEyLDUxMixbMTI3NzkzLCJzcHJvdXQiXSwiZjRkOCIsIk01MTIgMzJDNTEyIDE0MC4xIDQzNS40IDIzMC4zIDMzMy42IDI1MS40IDMyNS43IDE5My4zIDI5OS42IDE0MSAyNjEuMSAxMDAuNSAzMDEuMiA0MCAzNjkuOSAwIDQ0OCAwbDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6TTAgOTZDMCA3OC4zIDE0LjMgNjQgMzIgNjRsMzIgMGMxMjMuNyAwIDIyNCAxMDAuMyAyMjQgMjI0bDAgMTkyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMTYwQzEwMC4zIDMyMCAwIDIxOS43IDAgOTZ6Il19LENWdD10YmUsYWJlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRyYW5zZ2VuZGVyIixpY29uOls1NzYsNTEyLFs5ODk1LCJ0cmFuc2dlbmRlci1hbHQiXSwiZjIyNSIsIk0xMjgtMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMOTcuOSAzMiAxMzYgNzAuMSAxNTEgNTVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC0xNSAxNSAxNC4yIDE0LjJjMjcuOS0yMy44IDY0LjItMzguMiAxMDMuOC0zOC4yIDM2LjcgMCA3MC42IDEyLjQgOTcuNiAzMy4yTDQ2Ni43IDMyIDQ0OCAzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw5NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgOTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0xOC43LTg0LjQgODQuNGMxMyAyMy4xIDIwLjQgNDkuOSAyMC40IDc4LjMgMCA3Ny40LTU1IDE0Mi0xMjggMTU2LjhsMCAzNS4yIDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTMyIDAgMCAxNmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTE2LTMyIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsMzIgMCAwLTM1LjJjLTczLTE0LjgtMTI4LTc5LjQtMTI4LTE1Ni44IDAtMzEuNCA5LTYwLjcgMjQuNy04NS40bC0xNi43LTE2LjctMTUgMTVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsMTUtMTUtMzguMS0zOC4xIDAgMzAuMWMwIDE3LjctMTQuMyAzMi0zMiAzMlMwIDExMy43IDAgOTZMMCAwQzAtMTcuNyAxNC4zLTMyIDMyLTMybDk2IDB6TTI4OCAzMzZhOTYgOTYgMCAxIDAgMC0xOTIgOTYgOTYgMCAxIDAgMCAxOTJ6Il19LFRWdD1hYmUsJFZ0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InN0YXItaGFsZiIsaWNvbjpbNTc2LDUxMixbNjE3MzFdLCJmMDg5IiwiTTMwNC4xIDcuNmMwLTExLjEtNy42LTIwLjctMTguNC0yMy4zcy0yMS45IDIuNS0yNyAxMi40TDE5My4xIDEyNS4zIDMzLjIgMTUwLjdjLTguOSAxLjQtMTYuMyA3LjctMTkuMSAxNi4zcy0uNSAxOCA1LjggMjQuNGwxMTQuNCAxMTQuNS0yNS4yIDE1OS45Yy0xLjQgOC45IDIuMyAxNy45IDkuNiAyMy4yczE2LjkgNi4xIDI1IDJMMjkxIDQxNi4xYzgtNC4xIDEzLjEtMTIuNCAxMy4xLTIxLjRsMC0zODcuMXoiXX0sc2JlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBob3RvLWZpbG0iLGljb246WzY0MCw1MTIsWyJwaG90by12aWRlbyJdLCJmODdjIiwiTTE5MiA2NGMwLTM1LjMgMjguNy02NCA2NC02NEw1NzYgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDIyNGMwIDM1LjMtMjguNyA2NC02NCA2NGwtMzIwIDBjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtMjI0ek0zMjAgOTZhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMTU2LjUgMTEuNUM0NzIuMSAxMDAuNCA0NjQuNCA5NiA0NTYgOTZzLTE2LjEgNC40LTIwLjUgMTEuNWwtNTQgODguMy0xNy45LTI1LjZjLTQuNS02LjQtMTEuOC0xMC4yLTE5LjctMTAuMnMtMTUuMiAzLjgtMTkuNyAxMC4ybC01NiA4MGMtNS4xIDcuMy01LjggMTYuOS0xLjYgMjQuOFMyNzkuMSAyODggMjg4IDI4OGwyNTYgMGM4LjcgMCAxNi43LTQuNyAyMC45LTEyLjNzNC4xLTE2LjgtLjUtMjQuM2wtODgtMTQ0ek0xNDQgMTI4bDAgMTYwYzAgNjEuOSA1MC4xIDExMiAxMTIgMTEybDE5MiAwIDAgMTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDE5MmMwLTM1LjMgMjguNy02NCA2NC02NGw4MCAwek01MiAxOTZsMCAyNGMwIDguOCA3LjIgMTYgMTYgMTZsMjQgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0yNGMwLTguOC03LjItMTYtMTYtMTZsLTI0IDBjLTguOCAwLTE2IDcuMi0xNiAxNnptMTYgODBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDI0YzAgOC44IDcuMiAxNiAxNiAxNmwyNCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTI0YzAtOC44LTcuMi0xNi0xNi0xNmwtMjQgMHptMCA5NmMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMjRjMCA4LjggNy4yIDE2IDE2IDE2bDI0IDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMjRjMC04LjgtNy4yLTE2LTE2LTE2bC0yNCAweiJdfSxEVnQ9c2JlLExWdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwaWN0dXJlLWluLXBpY3R1cmUiLGljb246WzUxMiw1MTIsW10sImU4MGIiLCJNNDQ4IDMyYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMTEyLTY0IDAgMC0xMTItMzg0IDAgMCAzMjAgMTQ0IDAgMCA2NC0xNDQgMC02LjUtLjNjLTMwLjEtMy4xLTU0LjEtMjctNTcuMS01Ny4xTDAgNDE2IDAgOTZDMCA2Mi45IDI1LjIgMzUuNiA1Ny41IDMyLjNMNjQgMzIgNDQ4IDMyem0xNiAyMjRjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCAxMjhjMCAyNi41LTIxLjUgNDgtNDggNDhsLTE2MCAwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTEyOGMwLTI2LjUgMjEuNS00OCA0OC00OGwxNjAgMHoiXX0sRVZ0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InB1bXAtbWVkaWNhbCIsaWNvbjpbMzIwLDUxMixbXSwiZTA2YSIsIk05NiAwbDAgODAgMTI4IDAgMC0yNCA3MiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0UzMwOS4zIDggMjk2IDhsLTcyIDAgMC04YzAtMTcuNy0xNC4zLTMyLTMyLTMybC02NCAwQzExMC4zLTMyIDk2LTE3LjcgOTYgMHpNNjQgMTI4Yy0zNS4zIDAtNjQgMjguNy02NCA2NEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwxOTIgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI1NmMwLTM1LjMtMjguNy02NC02NC02NEw2NCAxMjh6bTY0IDEyMGMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCA0MCA0MCAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtNDAgMCAwIDQwYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtNDAtNDAgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2bDQwIDAgMC00MHoiXX0sUFZ0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZpcmUiLGljb246WzQ0OCw1MTIsWzEyODI5M10sImYwNmQiLCJNMTYwLjUtMjYuNGM5LjMtNy44IDIzLTcuNSAzMS45IC45IDEyLjMgMTEuNiAyMy4zIDI0LjQgMzMuOSAzNy40IDEzLjUgMTYuNSAyOS43IDM4LjMgNDUuMyA2NC4yIDUuMi02LjggMTAtMTIuOCAxNC4yLTE3LjkgMS4xLTEuMyAyLjItMi43IDMuMy00LjEgNy45LTkuOCAxNy43LTIyLjEgMzAuOC0yMi4xIDEzLjQgMCAyMi44IDExLjkgMzAuOCAyMi4xIDEuMyAxLjcgMi42IDMuMyAzLjkgNC44IDEwLjMgMTIuNCAyNCAzMC4zIDM3LjcgNTIuNCAyNy4yIDQzLjkgNTUuNiAxMDYuNCA1NS42IDE3Ni42IDAgMTIzLjctMTAwLjMgMjI0LTIyNCAyMjRTMCA0MTEuNyAwIDI4OGMwLTkxLjEgNDEuMS0xNzAgODAuNS0yMjUgMTkuOS0yNy43IDM5LjctNDkuOSA1NC42LTY1LjEgOC4yLTguNCAxNi41LTE2LjcgMjUuNS0yNC4yek0yMjUuNyA0MTZjMjUuMyAwIDQ3LjctNyA2OC44LTIxIDQyLjEtMjkuNCA1My40LTg4LjIgMjguMS0xMzQuNC00LjUtOS0xNi05LjYtMjIuNS0ybC0yNS4yIDI5LjNjLTYuNiA3LjYtMTguNSA3LjQtMjQuNy0uNS0xNy4zLTIyLjEtNDkuMS02Mi40LTY1LjMtODMtNS40LTYuOS0xNS4yLTgtMjEuNS0xLjktMTguMyAxNy44LTUxLjUgNTYuOC01MS41IDEwNC4zIDAgNjguNiA1MC42IDEwOS4yIDExMy43IDEwOS4yeiJdfSxpYmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibWFnbmlmeWluZy1nbGFzcy1wbHVzIixpY29uOls1MTIsNTEyLFsic2VhcmNoLXBsdXMiXSwiZjAwZSIsIk00MTYgMjA4YzAgNDUuOS0xNC45IDg4LjMtNDAgMTIyLjdMNTAyLjYgNDU3LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBMMzMwLjcgMzc2QzI5Ni4zIDQwMS4xIDI1My45IDQxNiAyMDggNDE2IDkzLjEgNDE2IDAgMzIyLjkgMCAyMDhTOTMuMSAwIDIwOCAwIDQxNiA5My4xIDQxNiAyMDh6TTIwOCAxMTJjLTEzLjMgMC0yNCAxMC43LTI0IDI0bDAgNDgtNDggMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw0OCAwIDAgNDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTQ4IDQ4IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTQ4IDAgMC00OGMwLTEzLjMtMTAuNy0yNC0yNC0yNHoiXX0sSVZ0PWliZSxBVnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmxhc2siLGljb246WzQ0OCw1MTIsW10sImYwYzMiLCJNMjg4IDBMMTI4IDBDMTEwLjMgMCA5NiAxNC4zIDk2IDMyczE0LjMgMzIgMzIgMzJMMTI4IDIxNS41IDcuNSA0MjYuM0MyLjYgNDM1IDAgNDQ0LjcgMCA0NTQuNyAwIDQ4Ni40IDI1LjYgNTEyIDU3LjMgNTEybDMzMy40IDBjMzEuNiAwIDU3LjMtMjUuNiA1Ny4zLTU3LjMgMC0xMC0yLjYtMTkuOC03LjUtMjguNEwzMjAgMjE1LjUgMzIwIDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyUzMzNy43IDAgMzIwIDBMMjg4IDB6TTE5MiAyMTUuNWwwLTE1MS41IDY0IDAgMCAxNTEuNWMwIDExLjEgMi45IDIyLjEgOC40IDMxLjhsNDEuNiA3Mi43LTE2NCAwIDQxLjYtNzIuN2M1LjUtOS43IDguNC0yMC42IDguNC0zMS44eiJdfSxOVnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYWxpZ24tcmlnaHQiLGljb246WzQ0OCw1MTIsW10sImYwMzgiLCJNNDQ4IDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMyTDE5MiA5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwyMjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnptMCAyNTZjMCAxNy43LTE0LjMgMzItMzIgMzJsLTIyNCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDIyNCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyek0wIDE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMmwzODQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkwzMiAyMjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek00NDggNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMyTDMyIDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwzODQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnoiXX0scmJlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNhYmxlLWNhciIsaWNvbjpbNTEyLDUxMixbMTI4NjczLDU3NTUxLCJ0cmFtIl0sImY3ZGEiLCJNMjg4LTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNMTYwIDI0YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTMyIDI4OGMwLTM1LjMgMjguNy02NCA2NC02NGwxMzYgMCAwLTk2LjItMTkzLjQgNTUuM2MtMTIuNyAzLjYtMjYtMy43LTI5LjctMTYuNXMzLjctMjYgMTYuNS0yOS43bDIyNC02NCAwIDAgMjI0LTY0YzEyLjctMy42IDI2IDMuNyAyOS43IDE2LjVzLTMuNyAyNi0xNi41IDI5LjdsLTIwNi42IDU5IDAgMTA5LjkgMTM2IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAxNjBjMCAzNS4zLTI4LjcgNjQtNjQgNjRMOTYgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NGwwLTE2MHptODAgMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgNjRjMCA4LjggNy4yIDE2IDE2IDE2bDU2IDAgMC05Ni01NiAwem0xODQgOTZsMC05Ni04MCAwIDAgOTYgODAgMHptNDggMGw1NiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTY0YzAtOC44LTcuMi0xNi0xNi0xNmwtNTYgMCAwIDk2eiJdfSxSVnQ9cmJlLG9iZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJraXQtbWVkaWNhbCIsaWNvbjpbNTEyLDUxMixbImZpcnN0LWFpZCJdLCJmNDc5IiwiTTY0IDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4TDAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDE2IDAgMC0zODQtMTYgMHptNjQgMGwwIDM4NCAyNTYgMCAwLTM4NC0yNTYgMHpNNDQ4IDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI1NmMwLTM1LjMtMjguNy02NC02NC02NGwtMTYgMCAwIDM4NCAxNiAwek0yMjQgMTg0YzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDQwIDQwIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC00MCAwIDAgNDBjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC00MC00MCAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZsNDAgMCAwLTQweiJdfSxPVnQ9b2JlLEZWdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJncmlwLWxpbmVzIixpY29uOls0NDgsNTEyLFtdLCJmN2E0IiwiTTMyIDI4OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzODQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwzMiAyODh6bTAtMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDM4NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDMyIDE2MHoiXX0sbmJlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJ1cmdlciIsaWNvbjpbNTEyLDUxMixbImhhbWJ1cmdlciJdLCJmODA1IiwiTTQ4IDM4NGMtOC44IDAtMTYgNy4yLTE2IDE2IDAgNDQuMiAzNS44IDgwIDgwIDgwbDI4OCAwYzQ0LjIgMCA4MC0zNS44IDgwLTgwIDAtOC44LTcuMi0xNi0xNi0xNkw0OCAzODR6TTMyIDIwMmMwIDEyLjIgOS45IDIyIDIyIDIyTDQ1OCAyMjRjMTIuMiAwIDIyLTkuOSAyMi0yMiAwLTE3LjItMi42LTM0LjQtMTAuOC00OS41LTIyLjItNDAuOC04Mi4zLTEyMC41LTIxMy4yLTEyMC41UzY1IDExMS42IDQyLjggMTUyLjVDMzQuNiAxNjcuNiAzMiAxODQuOCAzMiAyMDJ6TTAgMzA0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDQ0OCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDMyIDI3MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTI1NiA3MmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6TTEyMCAxMjhhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptMjQ4LTI0YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHoiXX0sQlZ0PW5iZSxIVnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic25vd21hbiIsaWNvbjpbNjQwLDUxMixbOTczMSw5OTI0XSwiZjdkMCIsIk00MDMgMjExLjdjMzIuMi0yNC45IDUzLTYzLjkgNTMtMTA3LjcgMC03NS4xLTYwLjktMTM2LTEzNi0xMzZTMTg0IDI4LjkgMTg0IDEwNGMwIDQzLjkgMjAuOCA4Mi45IDUzIDEwNy43LTMyLjIgMTYuMy01OSA0MS44LTc2LjggNzMuMUwxMTIgMjY0LjIgMTEyIDIyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDE5LjYtMjIuNS05LjdjLTEyLjItNS4yLTI2LjMgLjQtMzEuNSAxMi42cy40IDI2LjMgMTIuNiAzMS41YzM2LjEgMTUuNSA3NS45IDMyLjUgMTE5LjQgNTEuMi0zLjkgMTQuOS02IDMwLjYtNiA0Ni43IDAgNzAgMzkuMSAxMzAuOCA5Ni42IDE2MS45IDcuOSA0LjMgMTYuOSA2LjEgMjUuOSA2LjFsMTIzIDBjOSAwIDE4LTEuOCAyNS45LTYuMSA1Ny41LTMxLjEgOTYuNi05MiA5Ni42LTE2MS45IDAtMTYuMi0yLjEtMzEuOC02LTQ2LjcgNDMuNS0xOC43IDgzLjQtMzUuNyAxMTkuNC01MS4yIDEyLjItNS4yIDE3LjgtMTkuMyAxMi42LTMxLjVzLTE5LjMtMTcuOC0zMS41LTEyLjZsLTIyLjUgOS43IDAtMTkuNmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDQwLjItNDguMiAyMC42Yy0xNy45LTMxLjMtNDQuNi01Ni44LTc2LjgtNzMuMXpNMjk2IDQxNmEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwem0yNC0xMjBhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4ek0yNDggODBhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpNMzY4IDU2YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpNMjkyLjIgMTU5LjNjLTIuNy00LjgtNC4yLTEwLjItNC4yLTE1LjcgMC0xNy41IDE0LjItMzEuNiAzMS42LTMxLjZsLjggMGMxNy41IDAgMzEuNiAxNC4yIDMxLjYgMzEuNiAwIDUuNS0xLjQgMTAuOS00LjIgMTUuN0wzMjcgMTk1LjhjLTMuMSA1LjQtMTAuOCA1LjQtMTMuOSAwbC0yMC45LTM2LjZ6Il19LHFWdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJob3RlbCIsaWNvbjpbNTEyLDUxMixbMTI3OTc2XSwiZjU5NCIsIk0xNiAyNEMxNiAxMC43IDI2LjcgMCA0MCAwTDQ3MiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC04IDAgMCA0MTYgOCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0TDQwIDUxMmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGw4IDAgMC00MTYtOCAwQzI2LjcgNDggMTYgMzcuMyAxNiAyNHptMjA4IDg4bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwYy04LjggMC0xNiA3LjItMTYgMTZ6TTEyOCA5NmMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwem05NiAxMTJsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnpNMzUyIDk2Yy04LjggMC0xNiA3LjItMTYgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDB6TTExMiAyMDhsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnptMjQwLTE2Yy04LjggMC0xNiA3LjItMTYgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDB6TTI4OCAzODRsNDMuOCAwYzkuOSAwIDE3LjUtOSAxNC0xOC4yLTEzLjgtMzYuMS00OC44LTYxLjgtODkuNy02MS44cy03NS45IDI1LjctODkuNyA2MS44Yy0zLjUgOS4yIDQuMSAxOC4yIDE0IDE4LjJsNDMuOCAwIDAgODAgNjQgMCAwLTgweiJdfSxqVnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicHJpbnQiLGljb246WzUxMiw1MTIsWzEyODQyNCwxMjg0MzgsOTExM10sImYwMmYiLCJNNjQgNjRDNjQgMjguNyA5Mi43IDAgMTI4IDBMMzQxLjUgMGMxNyAwIDMzLjMgNi43IDQ1LjMgMTguN2w0Mi41IDQyLjVjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM2wwIDM3LjUtMzg0IDAgMC04MHpNMCAyNTZjMC0zNS4zIDI4LjctNjQgNjQtNjRsMzg0IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCA5NmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMzIgMCAwIDY0YzAgMzUuMy0yOC43IDY0LTY0IDY0bC0yNTYgMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRsMC02NC0zMiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTk2ek0xMjggNDE2bDAgMzIgMjU2IDAgMC05Ni0yNTYgMCAwIDY0ek00NTYgMjcyYTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6Il19LGxiZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ2b2xsZXliYWxsIixpY29uOls1MTIsNTEyLFsxMjc5NTIsInZvbGxleWJhbGwtYmFsbCJdLCJmNDVmIiwiTTUxMiAyNTguOWMtMjMuNCA4LTQ3LjggMTMuMS03Mi42IDE1LjEgNS45LTk4LjYtMzAuNy0xOTEuMS05NC45LTI1OC4zIDk3LjggMzYgMTY3LjUgMTMwIDE2Ny41IDI0MC4zIDAgMSAwIDEuOSAwIDIuOXptLTUuOSA1MmMtNS4yIDIzLjctMTMuNiA0Ni4yLTI0LjkgNjYuOS05NC43IDUyLjItMjE0IDUwLTMwOC40LTEzLjYgMjEuNy0zMS4zIDQ5LjgtNTguOSA4My44LTgwLjUgNzkuNSA0MS42IDE2OC41IDQ5LjEgMjQ5LjUgMjcuMXpNMjc5LjcgMjQxLjZjLTMuNy04OS43LTQxLjctMTcwLjUtMTAxLjMtMjI5LjcgMjIuMy03LjEgNDYtMTEuMiA3MC41LTExLjkgOTIuNSA1NS45IDE1MC4zIDE2MC4zIDE0Mi40IDI3My44LTM4LTMuMi03NS45LTEzLjctMTExLjYtMzIuM3pNMTMwLjUgMzIuOEMxNDkuMSA0OS4xIDE2NS44IDY3LjcgMTc5LjkgODguMiA5MS41IDEzMi4zIDI5LjcgMjEwLjMgMy43IDI5OS41IDEuMyAyODUuMyAwIDI3MC44IDAgMjU2IDAgMTYwLjIgNTIuNiA3Ni43IDEzMC41IDMyLjh6bTczLjQgOTdjMTYuMyAzNC41IDI2LjEgNzIuNiAyNy45IDExMi44LTc1LjggNDgtMTI2LjggMTIxLjMtMTQ4LjMgMjAyLjUtMTcuNi0xNi4xLTMzLTM0LjYtNDUuNS01NSAyLjEtMTA4LjEgNjMuNy0yMTAuNCAxNjUuOS0yNjAuM3pNMjU2IDUxMmMtNDcuNyAwLTkyLjMtMTMtMTMwLjUtMzUuNyA0LjgtMjQuMyAxMi42LTQ4IDIzLjItNzAuNCA4Mi40IDU0LjQgMTgwLjggNjguOSAyNzEgNDctNDQuNCAzNy0xMDEuNSA1OS4yLTE2My43IDU5LjJ6Il19LFZWdD1sYmUsVVZ0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRyYWZmaWMtbGlnaHQiLGljb246WzMyMCw1MTIsWzEyODY3OF0sImY2MzciLCJNNjQtMzJDMjguNy0zMiAwLTMuMyAwIDMyTDAgMzg0YzAgODguNCA3MS42IDE2MCAxNjAgMTYwczE2MC03MS42IDE2MC0xNjBsMC0zNTJjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQtMzJ6bTk2IDM5MmMzMC45IDAgNTYgMjUuMSA1NiA1NnMtMjUuMSA1Ni01NiA1Ni01Ni0yNS4xLTU2LTU2IDI1LjEtNTYgNTYtNTZ6bTU2LTEwNGE1NiA1NiAwIDEgMSAtMTEyIDAgNTYgNTYgMCAxIDEgMTEyIDB6TTE2MCAxNTJhNTYgNTYgMCAxIDEgMC0xMTIgNTYgNTYgMCAxIDEgMCAxMTJ6Il19LFdWdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwbGFuZS1jaXJjbGUtY2hlY2siLGljb246WzY0MCw1MTIsW10sImU1NTUiLCJNMjMyIDI0YzAtMzAuOSAyNS4xLTU2IDU2LTU2czU2IDI1LjEgNTYgNTZsMCAxMjcuMyA3OCA3MS41Yy02OS4zIDI5LTExOCA5Ny40LTExOCAxNzcuMiAwIDQ5LjMgMTguNiA5NC4zIDQ5LjEgMTI4LjNMMjg4IDUxMiAxNzkuOSA1MzljLTEwLjEgMi41LTE5LjktNS4xLTE5LjktMTUuNWwwLTE5LjhjMC00LjkgMi4yLTkuNSA2LTEyLjVsNjYtNTIuOCAwLTk5LjctMTYyLjkgNTQuM0M1OC43IDM5Ni40IDQ4IDM4OC43IDQ4IDM3Ny44bDAtNDMuN2MwLTkgMy44LTE3LjUgMTAuNC0yMy42TDIzMiAxNTEuMyAyMzIgMjR6TTM1MiA0MDBhMTQ0IDE0NCAwIDEgMSAyODggMCAxNDQgMTQ0IDAgMSAxIC0yODggMHptMjAxLjQtNjAuOWMtNy4xLTUuMi0xNy4yLTMuNi0yMi40IDMuNWwtNTMgNzIuOS0yNi44LTI2LjhjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZsNDAgNDBjMy4zIDMuMyA3LjkgNSAxMi42IDQuNnM4LjktMi44IDExLjctNi41bDY0LTg4YzUuMi03LjEgMy42LTE3LjItMy41LTIyLjN6Il19LFZiPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InVzZXJzIixpY29uOls2NDAsNTEyLFtdLCJmMGMwIiwiTTMyMCAxNmExMDQgMTA0IDAgMSAxIDAgMjA4IDEwNCAxMDQgMCAxIDEgMC0yMDh6TTk2IDg4YTcyIDcyIDAgMSAxIDAgMTQ0IDcyIDcyIDAgMSAxIDAtMTQ0ek0wIDQxNmMwLTcwLjcgNTcuMy0xMjggMTI4LTEyOCAxMi44IDAgMjUuMiAxLjkgMzYuOSA1LjQtMzIuOSAzNi44LTUyLjkgODUuNC01Mi45IDEzOC42bDAgMTZjMCAxMS40IDIuNCAyMi4yIDYuNyAzMkwzMiA0ODBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMzJ6bTUyMS4zIDY0YzQuMy05LjggNi43LTIwLjYgNi43LTMybDAtMTZjMC01My4yLTIwLTEwMS44LTUyLjktMTM4LjYgMTEuNy0zLjUgMjQuMS01LjQgMzYuOS01LjQgNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjhsMCAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtODYuNyAwek00NzIgMTYwYTcyIDcyIDAgMSAxIDE0NCAwIDcyIDcyIDAgMSAxIC0xNDQgMHpNMTYwIDQzMmMwLTg4LjQgNzEuNi0xNjAgMTYwLTE2MHMxNjAgNzEuNiAxNjAgMTYwbDAgMTZjMCAxNy43LTE0LjMgMzItMzIgMzJsLTI1NiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTE2eiJdfSxHVnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2VydGlmaWNhdGUiLGljb246WzU3Niw1MTIsW10sImYwYTMiLCJNMjM5LjItOGMtNi4xLTYuMi0xNS04LjctMjMuNC02LjRTMjAwLjktNS42IDE5OC44IDIuOEwxODMuNSA2M2MtMS4xIDQuNC01LjYgNy05LjkgNS43TDExMy44IDUxLjljLTguNC0yLjQtMTcuNCAwLTIzLjUgNi4xcy04LjUgMTUuMS02LjEgMjMuNWwxNi45IDU5LjhjMS4yIDQuMy0xLjQgOC44LTUuNyA5LjlMMzUuMSAxNjYuNWMtOC40IDIuMS0xNSA4LjctMTcuMyAxNy4xcy4yIDE3LjMgNi40IDIzLjRsNDQuNSA0My4zYzMuMiAzLjEgMy4yIDguMyAwIDExLjVMMjQuMyAzMDUuMWMtNi4yIDYuMS04LjcgMTUtNi40IDIzLjRzOC45IDE0LjkgMTcuMyAxNy4xbDYwLjIgMTUuM2M0LjQgMS4xIDcgNS42IDUuNyA5LjlMODQuMiA0MzAuNWMtMi40IDguNCAwIDE3LjQgNi4xIDIzLjVzMTUuMSA4LjUgMjMuNSA2LjFsNTkuOC0xNi45YzQuMy0xLjIgOC44IDEuNCA5LjkgNS43bDE1LjMgNjAuMmMyLjEgOC40IDguNyAxNSAxNy4xIDE3LjNzMTcuMy0uMiAyMy40LTYuNGw0My4zLTQ0LjVjMy4xLTMuMiA4LjMtMy4yIDExLjUgMEwzMzcuMyA1MjBjNi4xIDYuMiAxNSA4LjcgMjMuNCA2LjRzMTQuOS04LjkgMTcuMS0xNy4zTDM5My4xIDQ0OWMxLjEtNC40IDUuNi03IDkuOS01LjdsNTkuOCAxNi45YzguNCAyLjQgMTcuNCAwIDIzLjUtNi4xczguNS0xNS4xIDYuMS0yMy41bC0xNi45LTU5LjhjLTEuMi00LjMgMS40LTguOCA1LjctOS45bDYwLjItMTUuM2M4LjQtMi4xIDE1LTguNyAxNy4zLTE3LjFzLS4yLTE3LjQtNi40LTIzLjRsLTQ0LjUtNDMuM2MtMy4yLTMuMS0zLjItOC4zIDAtMTEuNWw0NC41LTQzLjNjNi4yLTYuMSA4LjctMTUgNi40LTIzLjRzLTguOS0xNC45LTE3LjMtMTcuMWwtNjAuMi0xNS4zYy00LjQtMS4xLTctNS42LTUuNy05LjlsMTYuOS01OS44YzIuNC04LjQgMC0xNy40LTYuMS0yMy41cy0xNS4xLTguNS0yMy41LTYuMUw0MDMgNjguOGMtNC4zIDEuMi04LjgtMS40LTkuOS01LjdMMzc3LjggMi44Yy0yLjEtOC40LTguNy0xNS0xNy4xLTE3LjNzLTE3LjMgLjItMjMuNCA2LjRMMjk0IDM2LjVjLTMuMSAzLjItOC4zIDMuMi0xMS41IDBMMjM5LjItOHoiXX0sS1Z0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImFsYXJtLWNsb2NrIixpY29uOls1MTIsNTEyLFs5MjAwXSwiZjM0ZSIsIk01MDQuNCAxMzIuNWMtNC41IDEwLjUtMTguNCA5LjgtMjQuOSAuNC0yNy44LTQwLTY2LjEtNzIuMi0xMTEtOTIuNi0xMC40LTQuNy0xMy43LTE4LjMtNC4xLTI0LjYgMTUtOS45IDMzLTE1LjcgNTIuMy0xNS43IDUyLjYgMCA5NS4yIDQyLjYgOTUuMiA5NS4yIDAgMTMuMi0yLjcgMjUuOC03LjYgMzcuM3ptLTQ3MS45IC40Yy02LjUgOS40LTIwLjUgMTAuMS0yNC45LS40LTQuOS0xMS41LTcuNi0yNC4xLTcuNi0zNy4zIDAtNTIuNiA0Mi42LTk1LjIgOTUuMi05NS4yIDE5LjMgMCAzNy4zIDUuOCA1Mi4zIDE1LjcgOS42IDYuMyA2LjMgMTkuOS00LjEgMjQuNi00NC44IDIwLjQtODMuMSA1Mi42LTExMSA5Mi42ek0zOTAuMiA0NjcuNEMzNTIuOCA0OTUuNCAzMDYuMyA1MTIgMjU2IDUxMnMtOTYuOC0xNi42LTEzNC4xLTQ0LjZMODYuNiA1MDIuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNsMzUuMi0zNS4yQzQ4LjYgMzg0LjggMzIgMzM4LjMgMzIgMjg4IDMyIDE2NC4zIDEzMi4zIDY0IDI1NiA2NFM0ODAgMTY0LjMgNDgwIDI4OGMwIDUwLjMtMTYuNiA5Ni44LTQ0LjYgMTM0LjJsMzUuMiAzNS4yYzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwbC0zNS4yLTM1LjJ6TTI4MCAxODRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCAxMDRjMCA2LjQgMi41IDEyLjUgNyAxN2w1NiA1NmM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTQ5LTQ5IDAtOTQuMXoiXX0sWVZ0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImhlbGljb3B0ZXItc3ltYm9sIixpY29uOls1MTIsNTEyLFtdLCJlNTAyIiwiTTQ0NS40IDIyNGw2NC43IDBDNDk1LjYgMTA4LjIgNDAzLjggMTYuNCAyODggMmwwIDY0LjdDMzY4LjQgODAuMSA0MzEuOSAxNDMuNiA0NDUuNCAyMjR6TTUxMCAyODhsLTY0LjcgMEM0MzEuOSAzNjguNCAzNjguNCA0MzEuOSAyODggNDQ1LjNsMCA2NC43YzExNS44LTE0LjQgMjA3LjYtMTA2LjIgMjIyLTIyMnpNMiAyODhDMTYuNCA0MDMuOCAxMDguMiA0OTUuNiAyMjQgNTEwbDAtNjQuN0MxNDMuNiA0MzEuOSA4MC4yIDM2OC40IDY2LjcgMjg4TDIgMjg4em0wLTY0bDY0LjcgMEM4MC4yIDE0My42IDE0My42IDgwLjEgMjI0IDY2LjdMMjI0IDJDMTA4LjIgMTYuNCAxNi40IDEwOC4yIDIgMjI0em0yMDYtNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAxOTJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTY0IDk2IDAgMCA2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTkyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgNjQtOTYgMCAwLTY0eiJdfSxjYmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaG91c2UtY2hpbW5leS1jcmFjayIsaWNvbjpbNTEyLDUxMixbImhvdXNlLWRhbWFnZSJdLCJmNmYxIiwiTTIzNC4yIDguNmMxMi4zLTExLjQgMzEuMy0xMS40IDQzLjUgMEwzNjggOTIuMyAzNjggODBjMC0xNy43IDE0LjMtMzIgMzItMzJsMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDEwMS41IDM3LjggMzUuMWM5LjYgOSAxMi44IDIyLjkgOCAzNS4xUzQ5My4yIDI3MiA0ODAgMjcybC0xNiAwIDAgMTc2YzAgMzUuMy0yOC43IDY0LTY0IDY0bC0xMDUuNiAwLTM4LjQtNjQgODAuOC02Ny4zYzcuOC02LjUgNy42LTE4LjYtLjQtMjQuOUwyMTguNiAyNjMuMmMtMTQuNi0xMS41LTMzLjggNy0yMi44IDIyTDI1NiAzNjggMTcwLjUgNDM5LjJjLTYuMSA1LTcuNSAxMy44LTMuNSAyMC41bDMxLjMgNTIuMi04Ni40IDBjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtMTc2LTE2IDBjLTEzLjIgMC0yNS04LjEtMjkuOC0yMC4zcy0xLjYtMjYuMiA4LTM1LjFsMjI0LTIwOHoiXX0sWlZ0PWNiZSxYVnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGVyc29uLW1pbGl0YXJ5LXBvaW50aW5nIixpY29uOls1MTIsNTEyLFtdLCJlNTRhIiwiTTIxNC45IDE0LjFDMjAyIDE1LjIgMTkyIDI2IDE5MiAzOSAxOTIgNTIuOCAyMDMuMiA2NCAyMTcgNjRsMTUxIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzAuNkMzODQgOCAzNzYgLjcgMzY2LjcgMS40TDIxNC45IDE0LjF6TTIwOCAxMTJjMCA0NC4yIDM1LjggODAgODAgODBzODAtMzUuOCA4MC04MGMwLTUuNS0uNi0xMC44LTEuNi0xNkwyMDkuNiA5NmMtMSA1LjItMS42IDEwLjUtMS42IDE2ek00MCAyMjRjLTIyLjEgMC00MCAxNy45LTQwIDQwczE3LjkgNDAgNDAgNDBsMTUyIDAgMCA4OS40IDE2Mi44LTE2Mi44Yy0xMy4zLTQuMy0yNy4zLTYuNS00MS42LTYuNUw0MCAyMjR6bTM0NS43IDIwLjlsLTE3MS4xIDE3MS4xIDE2OS40IDAgMC00Ni4zIDUzLjYgOTAuNmMxMS4yIDE5IDM1LjggMjUuMyA1NC44IDE0LjFzMjUuMy0zNS44IDE0LjEtNTQuOEw0MzAuMyAyOTAuOGMtMTEuMi0xOS0yNi42LTM0LjUtNDQuNi00NS45ek0xOTIgNDQ4bDAgMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJsMTI4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0zMi0xOTIgMHoiXX0sUVZ0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImRhdGFiYXNlIixpY29uOls0NDgsNTEyLFtdLCJmMWMwIiwiTTQ0OCAyMDUuOGMtMTQuOCA5LjgtMzEuOCAxNy43LTQ5LjUgMjQtNDcgMTYuOC0xMDguNyAyNi4yLTE3NC41IDI2LjJTOTYuNCAyNDYuNSA0OS41IDIyOS44Yy0xNy42LTYuMy0zNC43LTE0LjItNDkuNS0yNEwwIDI4OGMwIDQ0LjIgMTAwLjMgODAgMjI0IDgwczIyNC0zNS44IDIyNC04MGwwLTgyLjJ6bTAtNzcuOGwwLTQ4QzQ0OCAzNS44IDM0Ny43IDAgMjI0IDBTMCAzNS44IDAgODBsMCA0OGMwIDQ0LjIgMTAwLjMgODAgMjI0IDgwczIyNC0zNS44IDIyNC04MHpNMzk4LjUgMzg5LjhDMzUxLjYgNDA2LjUgMjg5LjkgNDE2IDIyNCA0MTZTOTYuNCA0MDYuNSA0OS41IDM4OS44Yy0xNy42LTYuMy0zNC43LTE0LjItNDkuNS0yNEwwIDQzMmMwIDQ0LjIgMTAwLjMgODAgMjI0IDgwczIyNC0zNS44IDIyNC04MGwwLTY2LjJjLTE0LjggOS44LTMxLjggMTcuNy00OS41IDI0eiJdfSxKVnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibmV3c3BhcGVyIixpY29uOls1MTIsNTEyLFsxMjgyNDBdLCJmMWVhIiwiTTAgNDE2TDAgMTIwYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCAyODhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNEw5NiA5NmMwLTM1LjMgMjguNy02NCA2NC02NGwyODggMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0ek0xNjAgMTI4bDAgNjRjMCAxNy43IDE0LjMgMzIgMzIgMzJsNjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTY0YzAtMTcuNy0xNC4zLTMyLTMyLTMybC02NCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnptMjQgMjQwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDI0MCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0yNDAgMHptLTI0LTcyYzAgMTMuMyAxMC43IDI0IDI0IDI0bDI0MCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0yNDAgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjR6TTM2MCAxNzZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsNjQgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtNjQgMHoiXX0sZVV0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNsb3VkLXJhaW4iLGljb246WzUxMiw1MTIsWzEyNzc4Myw5OTI2XSwiZjczZCIsIk05NiAzMjBjLTUzIDAtOTYtNDMtOTYtOTYgMC00Mi41IDI3LjYtNzguNiA2NS45LTkxLjItMS4zLTYuNy0xLjktMTMuNy0xLjktMjAuOCAwLTYxLjkgNTAuMS0xMTIgMTEyLTExMiA0My4xIDAgODAuNSAyNC4zIDk5LjIgNjAgMTQuNy0xNy4xIDM2LjUtMjggNjAuOC0yOCA0NC4yIDAgODAgMzUuOCA4MCA4MCAwIDUuNS0uNiAxMC44LTEuNiAxNiAuNSAwIDEuMSAwIDEuNiAwIDUzIDAgOTYgNDMgOTYgOTZzLTQzIDk2LTk2IDk2TDk2IDMyMHptMS42IDY4LjJjMS4xLTIuNSAzLjYtNC4yIDYuNC00LjJzNS4zIDEuNiA2LjQgNC4ybDMwLjIgNjguMmMyLjIgNS4xIDMuNCAxMC41IDMuNCAxNiAwIDIxLjktMTguMSAzOS42LTQwIDM5LjZzLTQwLTE3LjctNDAtMzkuNmMwLTUuNSAxLjItMTEgMy40LTE2bDMwLjItNjguMnptMTUyIDBjMS4xLTIuNSAzLjYtNC4yIDYuNC00LjJzNS4zIDEuNiA2LjQgNC4ybDMwLjIgNjguMmMyLjIgNS4xIDMuNCAxMC41IDMuNCAxNiAwIDIxLjktMTguMSAzOS42LTQwIDM5LjZzLTQwLTE3LjctNDAtMzkuNmMwLTUuNSAxLjItMTEgMy40LTE2bDMwLjItNjguMnptMTIxLjggNjguMmwzMC4yLTY4LjJjMS4xLTIuNSAzLjYtNC4yIDYuNC00LjJzNS4zIDEuNiA2LjQgNC4ybDMwLjIgNjguMmMyLjIgNS4xIDMuNCAxMC41IDMuNCAxNiAwIDIxLjktMTguMSAzOS42LTQwIDM5LjZzLTQwLTE3LjctNDAtMzkuNmMwLTUuNSAxLjItMTEgMy40LTE2eiJdfSxkYmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibWF4aW1pemUiLGljb246WzQ0OCw1MTIsWyJleHBhbmQtYXJyb3dzLWFsdCJdLCJmMzFlIiwiTTE2OCAzMkwyNCAzMkMxMC43IDMyIDAgNDIuNyAwIDU2TDAgMjAwYzAgOS43IDUuOCAxOC41IDE0LjggMjIuMlMzNC4xIDIyMy44IDQxIDIxN2w0MC00MCA3OSA3OS03OSA3OS00MC00MGMtNi45LTYuOS0xNy4yLTguOS0yNi4yLTUuMlMwIDMwMi4zIDAgMzEyTDAgNDU2YzAgMTMuMyAxMC43IDI0IDI0IDI0bDE0NCAwYzkuNyAwIDE4LjUtNS44IDIyLjItMTQuOHMxLjctMTkuMy01LjItMjYuMmwtNDAtNDAgNzktNzkgNzkgNzktNDAgNDBjLTYuOSA2LjktOC45IDE3LjItNS4yIDI2LjJTMjcwLjMgNDgwIDI4MCA0ODBsMTQ0IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRsMC0xNDRjMC05LjctNS44LTE4LjUtMTQuOC0yMi4ycy0xOS4zLTEuNy0yNi4yIDUuMmwtNDAgNDAtNzktNzkgNzktNzkgNDAgNDBjNi45IDYuOSAxNy4yIDguOSAyNi4yIDUuMlM0NDggMjA5LjcgNDQ4IDIwMGwwLTE0NGMwLTEzLjMtMTAuNy0yNC0yNC0yNEwyODAgMzJjLTkuNyAwLTE4LjUgNS44LTIyLjIgMTQuOFMyNTYuMiA2Ni4xIDI2MyA3M2w0MCA0MC03OSA3OS03OS03OSA0MC00MGM2LjktNi45IDguOS0xNy4yIDUuMi0yNi4yUzE3Ny43IDMyIDE2OCAzMnoiXX0sdFV0PWRiZSxhVXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibG9jYXRpb24tYXJyb3ciLGljb246WzUxMiw1MTIsW10sImYxMjQiLCJNNDc3LjkgNzUuNWM0LjUtMTEuOCAxLjctMjUuMi03LjItMzQuMXMtMjIuMy0xMS44LTM0LjEtNy4ybC00MTYgMTYwQzcuOSAxOTktLjMgMjExLjIgMCAyMjQuN3M5LjEgMjUuNCAyMS45IDI5LjZsMTc2LjggNTguOSA1OC45IDE3Ni44YzQuMyAxMi44IDE2LjEgMjEuNiAyOS42IDIxLjlzMjUuNy03LjkgMzAuNi0yMC41bDE2MC00MTZ6Il19LHNVdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjaXR5IixpY29uOls1NzYsNTEyLFsxMjc5NjFdLCJmNjRmIiwiTTMyMCAwYy0zNS4zIDAtNjQgMjguNy02NCA2NGwwIDMyLTQ4IDAgMC03MmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDcyLTY0IDAgMC03MkM5NiAxMC43IDg1LjMgMCA3MiAwUzQ4IDEwLjcgNDggMjRsMCA3NGMtMjcuNiA3LjEtNDggMzIuMi00OCA2MkwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGw0NDggMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTE5MmMwLTM1LjMtMjguNy02NC02NC02NGwtNjQgMCAwLTEyOGMwLTM1LjMtMjguNy02NC02NC02NEwzMjAgMHptNjQgMTEybDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZ6bS0xNiA4MGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwem0xNiAxMTJsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNnptMTEyLTE2YzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2bDMyIDB6TTI1NiAzMDRsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNnpNMjQwIDE5MmM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwek0xMjggMzA0bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZ6TTExMiAxOTJjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZsMzIgMHoiXX0saVV0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6IngtcmF5IixpY29uOls1MTIsNTEyLFtdLCJmNDk3IiwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJsNDQ4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsMCAzMjBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMMzIgNDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyTDMyIDk2QzE0LjMgOTYgMCA4MS43IDAgNjR6bTI4MCA1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDE2LTY0IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsNjQgMCAwIDQ4LTgwIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsODAgMCAwIDQ4LTY0IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsNjQgMCAwIDE2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0xNiA2NCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC02NCAwIDAtNDggODAgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtODAgMCAwLTQ4IDY0IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTY0IDAgMC0xNnoiXX0sclV0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InVtYnJlbGxhLWJlYWNoIixpY29uOls1MTIsNTEyLFsxMjc5NThdLCJmNWNhIiwiTTQ5Ny41IDM0MS4xYy01LjkgMTYuNy0yNS4zIDIzLTQxLjEgMTUuMWwtMTc4LjItODkuMS0xLjYgMy4yLTg4LjggMTc3LjcgMjkyLjIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkwzMiA1MTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsODQuMiAwIDEwMy4yLTIwNi4zIDEuNi0zLjItMTY1LjQtODIuN2MtMTUuOC03LjktMjIuNC0yNy4zLTEyLjUtNDIgNDUuOS02OC42IDEyNC4xLTExMy44IDIxMi45LTExMy44IDE0MS40IDAgMjU2IDExNC42IDI1NiAyNTYgMCAyOS44LTUuMSA1OC41LTE0LjUgODUuMXoiXX0sdWJlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImFycm93LXJpZ2h0LXRvLWJyYWNrZXQiLGljb246WzUxMiw1MTIsWyJzaWduLWluIl0sImYwOTAiLCJNMzUyIDk2bDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAyNTZjMCAxNy43LTE0LjMgMzItMzIgMzJsLTY0IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsNjQgMGM1MyAwIDk2LTQzIDk2LTk2bDAtMjU2YzAtNTMtNDMtOTYtOTYtOTZsLTY0IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ6bS05LjQgMTgyLjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTEyOC0xMjhjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zTDI0Mi43IDIyNCAzMiAyMjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMjEwLjcgMC03My40IDczLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsMTI4LTEyOHoiXX0sb1V0PXViZSxuVXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaGVhZHNldCIsaWNvbjpbNDQ4LDUxMixbXSwiZjU5MCIsIk0yMjQgNjRjLTc5IDAtMTQ0LjcgNTcuMy0xNTcuNyAxMzIuNyA5LjMtMyAxOS4zLTQuNyAyOS43LTQuN2wxNiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgOTZjMCAyNi41LTIxLjUgNDgtNDggNDhsLTE2IDBjLTUzIDAtOTYtNDMtOTYtOTZsMC02NEMwIDEwMC4zIDEwMC4zIDAgMjI0IDBTNDQ4IDEwMC4zIDQ0OCAyMjRsMCAxNjguMWMwIDY2LjMtNTMuOCAxMjAtMTIwLjEgMTIwbC04Ny45LS4xLTMyIDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDhsMzIgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDAgNDAgMGMzOS44IDAgNzItMzIuMiA3Mi03MmwwLTIwLjljLTE0LjEgOC4yLTMwLjUgMTIuOC00OCAxMi44bC0xNiAwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTk2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4bDE2IDBjMTAuNCAwIDIwLjMgMS42IDI5LjcgNC43LTEzLTc1LjMtNzguNi0xMzIuNy0xNTcuNy0xMzIuN3oiXX0sbFV0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNwbG90Y2giLGljb246WzUxMiw1MTIsW10sImY1YmMiLCJNMjA4LjUgNjIuM2wyOC4xLTM2LjlDMjQ4LjggOS40IDI2Ny44IDAgMjg4IDAgMzE2LjUgMCAzNDEuNiAxOC43IDM0OS44IDQ2bDE3LjggNTkuNGMxMC4zIDM0LjQgMzYuMSA2MiA2OS44IDc0LjZsMzkuOCAxNC45YzIwLjkgNy45IDM0LjggMjcuOSAzNC44IDUwLjIgMCAxNi45LTcuOSAzMi44LTIxLjUgNDIuOWwtNjcuMyA1MC41Yy0yNC4zIDE4LjItMzcuMiA0Ny45LTMzLjggNzguMWwyLjUgMjIuN2M0LjMgMzguNy0yNiA3Mi42LTY1IDcyLjYtMTQuOCAwLTI5LjMtNS4xLTQwLjktMTQuM2wtNTUuMy00NC4zYy00LjUtMy42LTkuMy02LjctMTQuNS05LjItMTUuOC03LjktMzMuNy0xMC40LTUxLTcuM0w4Mi40IDQ1MS45Yy0zNC42IDYuMy02Ni40LTIwLjMtNjYuNC01NS40IDAtMTMuMiA0LjctMjYgMTMuMS0zNi4ybDExLjItMTMuNGMxNC42LTE3LjQgMjIuNi0zOS40IDIyLjYtNjIuMSAwLTE4LjgtNS41LTM3LjItMTUuOC01M0w4LjggMTczLjVDMy4xIDE2NC43IDAgMTU0LjQgMCAxNDMuOSAwIDExMC41IDMwLjEgODUuMSA2MyA5MC43bDUxLjMgOC43YzM1LjkgNi4xIDcyLjItOC4yIDk0LjItMzcuMXoiXX0scGJlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InVwLWxvbmciLGljb246WzMyMCw1MTIsWyJsb25nLWFycm93LWFsdC11cCJdLCJmMzBjIiwiTTEzNy40LTIyLjZjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsMTI4IDEyOGM5LjIgOS4yIDExLjkgMjIuOSA2LjkgMzQuOVMzMDAuOSAxNjAgMjg4IDE2MGwtNjQgMCAwIDMzNmMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMzIgMGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhsMC0zMzYtNjQgMGMtMTIuOSAwLTI0LjYtNy44LTI5LjYtMTkuOFMuMiAxMTQuNSA5LjQgMTA1LjRsMTI4LTEyOHoiXX0sY1V0PXBiZSxkVXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaGV4YWdvbi1ub2RlcyIsaWNvbjpbNDQ4LDUxMixbXSwiZTY5OSIsIk0yNDggMTA2LjZjMTguOS05IDMyLTI4LjMgMzItNTAuNmMwLTMwLjktMjUuMS01Ni01Ni01NnMtNTYgMjUuMS01NiA1NmMwIDIyLjMgMTMuMSA0MS42IDMyIDUwLjZsMCA5OC44Yy0yLjggMS4zLTUuNSAyLjktOCA0LjdsLTgwLjEtNDUuOGMxLjYtMjAuOC04LjYtNDEuNi0yNy45LTUyLjhDNTcuMiA5NiAyMyAxMDUuMiA3LjUgMTMyUzEuMiAxOTMgMjggMjA4LjVjMS4zIC44IDIuNiAxLjUgNCAyLjFsMCA5MC44Yy0xLjMgLjYtMi43IDEuMy00IDIuMUMxLjIgMzE5LTggMzUzLjIgNy41IDM4MFM1Ny4yIDQxNiA4NCA0MDAuNWMxOS4zLTExLjEgMjkuNC0zMiAyNy44LTUyLjhsNTAuNS0yOC45Yy0xMS41LTExLjItMTkuOS0yNS42LTIzLjgtNDEuN0w4OCAzMDYuMWMtMi42LTEuOC01LjItMy4zLTgtNC43bDAtOTAuOGMyLjgtMS4zIDUuNS0yLjkgOC00LjdsODAuMSA0NS44Yy0uMSAxLjQtLjIgMi44LS4yIDQuM2MwIDIyLjMgMTMuMSA0MS42IDMyIDUwLjZsMCA5OC44Yy0xOC45IDktMzIgMjguMy0zMiA1MC42YzAgMzAuOSAyNS4xIDU2IDU2IDU2czU2LTI1LjEgNTYtNTZjMC0yMi4zLTEzLjEtNDEuNi0zMi01MC42bDAtOTguOGMyLjgtMS4zIDUuNS0yLjkgOC00LjdsODAuMSA0NS44Yy0xLjYgMjAuOCA4LjYgNDEuNiAyNy44IDUyLjhjMjYuOCAxNS41IDYxIDYuMyA3Ni41LTIwLjVzNi4zLTYxLTIwLjUtNzYuNWMtMS4zLS44LTIuNy0xLjUtNC0yLjFsMC05MC44YzEuNC0uNiAyLjctMS4zIDQtMi4xYzI2LjgtMTUuNSAzNi00OS43IDIwLjUtNzYuNVMzOTAuOCA5NiAzNjQgMTExLjVjLTE5LjMgMTEuMS0yOS40IDMyLTI3LjggNTIuOGwtNTAuNiAyOC45YzExLjUgMTEuMiAxOS45IDI1LjYgMjMuOCA0MS43TDM2MCAyMDUuOWMyLjYgMS44IDUuMiAzLjMgOCA0LjdsMCA5MC44Yy0yLjggMS4zLTUuNSAyLjktOCA0LjZsLTgwLjEtNDUuOGMuMS0xLjQgLjItMi44IC4yLTQuM2MwLTIyLjMtMTMuMS00MS42LTMyLTUwLjZsMC05OC44eiJdfSxmb2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaG9zcGl0YWwiLGljb246WzU3Niw1MTIsWzEyNzk3Myw2MjU4OSwiaG9zcGl0YWwtYWx0IiwiaG9zcGl0YWwtd2lkZSJdLCJmMGY4IiwiTTEyOCA2NGMwLTM1LjMgMjguNy02NCA2NC02NEwzODQgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDY0IDY0IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAyNTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDE5MmMwLTM1LjMgMjguNy02NCA2NC02NGw2NCAwIDAtNjR6TTI3MiAzNTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgODAgOTYgMCAwLTgwYzAtMTcuNy0xNC4zLTMyLTMyLTMybC0zMiAwek0xMjggMzY4bDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwYy04LjggMC0xNiA3LjItMTYgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZ6TTExMiAyNTZjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwYy04LjggMC0xNiA3LjItMTYgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMHpNNTEyIDM2OGwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2ek00OTYgMjU2YzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDB6TTI2NCAxMDRsMCAzMi0zMiAwYy04LjggMC0xNiA3LjItMTYgMTZsMCAxNmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMCAwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwxNiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyIDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMTZjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwIDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0xNiAwYy04LjggMC0xNiA3LjItMTYgMTZ6Il19LHVVdD1mb2UscFV0PWZvZSxoVXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGVyc29uLWhhcmFzc2luZyIsaWNvbjpbNTc2LDUxMixbXSwiZTU0OSIsIk0xOTIgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2ek01OS40IDMwNC41TDg4IDI1Ni45IDg4IDQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTI4IDE2IDAgMCAxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTI0NC43IDQ3LjQgNTcuMWMxMS4zIDEzLjYgMzEuNSAxNS41IDQ1LjEgNC4yczE1LjUtMzEuNSA0LjItNDUuMWwtNzMuNy04OC45Yy0xOC4yLTIyLTQ1LjMtMzQuNy03My45LTM0LjdsLTM1LjkgMGMtMzMuNyAwLTY0LjkgMTcuNy04Mi4zIDQ2LjZsLTU4LjMgOTdjLTkuMSAxNS4xLTQuMiAzNC44IDEwLjkgNDMuOXMzNC44IDQuMiA0My45LTEwLjl6TTQ4MCAyNDBhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNNDY0IDM0NGwwIDU4LjctNDEuNC00MS40Yy03LjMtNy4zLTE3LjYtMTAuNi0yNy44LTlzLTE4LjkgOC4xLTIzLjUgMTcuM2wtNDggOTZjLTcuOSAxNS44LTEuNSAzNSAxNC4zIDQyLjlzMzUgMS41IDQyLjktMTQuM2wyOC4xLTU2LjMgNTQuNyA1NC43YzEyLjQgMTIuNCAyOS4xIDE5LjMgNDYuNiAxOS4zIDM2LjQgMCA2NS45LTI5LjUgNjUuOS02NS45TDU3NiAzNDRjMC0zMC45LTI1LjEtNTYtNTYtNTZzLTU2IDI1LjEtNTYgNTZ6TTI4OCA0OGMwIDguOCA3LjIgMTYgMTYgMTZsNTYgMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmwtNTYgMGMtOC44IDAtMTYgNy4yLTE2IDE2em0tLjggNDkuN2MtNy45LTQtMTcuNS0uNy0yMS41IDcuMnMtLjcgMTcuNSA3LjIgMjEuNWw0OCAyNGM3LjkgNCAxNy41IC43IDIxLjUtNy4ycy43LTE3LjUtNy4yLTIxLjVsLTQ4LTI0eiJdfSxmVXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibW9uZXktYmlsbC10cmVuZC11cCIsaWNvbjpbNTEyLDUxMixbXSwiZTUyOSIsIk00ODAgOGMwLTEzLjMtMTAuNy0yNC0yNC0yNEwzNTQuMi0xNmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw0My45IDAtMTExLjMgMTExLjMtOTUuMS04MS41Yy05LTcuNy0yMi4yLTcuNy0zMS4yIDBsLTExMiA5NmMtMTAuMSA4LjYtMTEuMiAyMy44LTIuNiAzMy44czIzLjggMTEuMiAzMy44IDIuNmw5Ni40LTgyLjYgOTYuNCA4Mi42YzkuNSA4LjIgMjMuNyA3LjYgMzIuNi0xLjNsMTI3LTEyNyAwIDQzLjljMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNEw0ODAgOHpNNDggMjU2Yy0yNi41IDAtNDggMjEuNS00OCA0OEwwIDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGw0MTYgMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTE2MGMwLTI2LjUtMjEuNS00OC00OC00OEw0OCAyNTZ6bTQ3LjMgNTZjLTMuNCAyMC4xLTE5LjIgMzYtMzkuNCAzOS40LTQuNCAuNy04LTIuOS04LTcuM2wwLTMyYzAtNC40IDMuNi04IDgtOGwzMiAwYzQuNCAwIDguMSAzLjYgNy4zIDh6bTAgMTQ0LjFjLjcgNC40LTIuOSA4LTcuMyA4bC0zMiAwYy00LjQgMC04LTMuNi04LThsMC0zMmMwLTQuNCAzLjYtOC4xIDgtNy4zIDIwLjEgMy40IDM2IDE5LjIgMzkuNCAzOS40ek00NTYgNDE2LjdjNC40LS43IDggMi45IDggNy4zbDAgMzJjMCA0LjQtMy42IDgtOCA4bC0zMiAwYy00LjQgMC04LjEtMy42LTcuMy04IDMuNC0yMC4xIDE5LjItMzYgMzkuNC0zOS40ek00MTYuNyAzMTJjLS43LTQuNCAyLjktOCA3LjMtOGwzMiAwYzQuNCAwIDggMy42IDggOGwwIDMyYzAgNC40LTMuNiA4LjEtOCA3LjMtMjAuMS0zLjQtMzYtMTkuMi0zOS40LTM5LjR6TTE5MiAzODRhNjQgNjQgMCAxIDEgMTI4IDAgNjQgNjQgMCAxIDEgLTEyOCAweiJdfSxoYmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGVuLXJ1bGVyIixpY29uOls1MTIsNTEyLFsicGVuY2lsLXJ1bGVyIl0sImY1YWUiLCJNNDA0IDBjMTkuMiAwIDM3LjYgNy42IDUxLjEgMjEuMmwzNS43IDM1LjdDNTA0LjQgNzAuNCA1MTIgODguOCA1MTIgMTA4cy03LjYgMzcuNi0yMS4yIDUxLjFMNDQ1LjkgMjA0IDMwOCA2Ni4xIDM1Mi45IDIxLjJDMzY2LjQgNy42IDM4NC44IDAgNDA0IDB6TTU4LjkgMzE1LjFMMjc0LjEgMTAwIDQxMiAyMzcuOSAxOTYuOSA0NTMuMWMtMTAuNyAxMC43LTI0LjEgMTguNS0zOC43IDIyLjZMMzAuNCA1MTEuMWMtOC4zIDIuMy0xNy4zIDAtMjMuNC02LjJzLTguNS0xNS4xLTYuMi0yMy40TDM2LjQgMzUzLjhjNC4xLTE0LjYgMTEuOC0yNy45IDIyLjYtMzguN3pNMjI1LjQgODAuOEw4MC44IDIyNS40IDExLjcgMTU2LjNjLTE1LjYtMTUuNi0xNS42LTQwLjkgMC01Ni42bDg4LTg4YzE1LjYtMTUuNiA0MC45LTE1LjYgNTYuNiAwbDUuOSA1LjktNTYuMyA1Ni4zYy03LjggNy44LTcuOCAyMC41IDAgMjguM3MyMC41IDcuOCAyOC4zIDBsNTYuMy01Ni4zIDM0LjkgMzQuOXpNNDMxLjIgMjg2LjZsMzQuOSAzNC45LTU2LjMgNTYuM2MtNy44IDcuOC03LjggMjAuNSAwIDI4LjNzMjAuNSA3LjggMjguMyAwbDU2LjMtNTYuMyA1LjkgNS45YzE1LjYgMTUuNiAxNS42IDQwLjkgMCA1Ni42bC04OCA4OGMtMTUuNiAxNS42LTQwLjkgMTUuNi01Ni42IDBsLTY5LjEtNjkuMSAxNDQuNi0xNDQuNnoiXX0sbVV0PWhiZSxnVXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicmVwZWF0IixpY29uOls1MTIsNTEyLFsxMjgyNTddLCJmMzYzIiwiTTQ3MC42IDExOC42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC02NC02NGMtOS4yLTkuMi0yMi45LTExLjktMzQuOS02LjlTMzUyIDE5LjEgMzUyIDMybDAgMzItMTYwIDBDODYgNjQgMCAxNTAgMCAyNTYgMCAyNzMuNyAxNC4zIDI4OCAzMiAyODhzMzItMTQuMyAzMi0zMmMwLTcwLjcgNTcuMy0xMjggMTI4LTEyOGwxNjAgMCAwIDMyYzAgMTIuOSA3LjggMjQuNiAxOS44IDI5LjZzMjUuNyAyLjIgMzQuOS02LjlsNjQtNjR6TTQxLjQgMzkzLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDY0IDY0YzkuMiA5LjIgMjIuOSAxMS45IDM0LjkgNi45UzE2MCA0OTIuOSAxNjAgNDgwbDAtMzIgMTYwIDBjMTA2IDAgMTkyLTg2IDE5Mi0xOTIgMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJjMCA3MC43LTU3LjMgMTI4LTEyOCAxMjhsLTE2MCAwIDAtMzJjMC0xMi45LTcuOC0yNC42LTE5LjgtMjkuNnMtMjUuNy0yLjItMzQuOSA2LjlsLTY0IDY0eiJdfSxiVXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYm9uZSIsaWNvbjpbNjQwLDUxMixbMTI5NDYwXSwiZjVkNyIsIk0xOTcuNCAxNjBjLTMuOSAwLTcuMi0yLjgtOC4xLTYuNi0xMC4yLTQyLjEtNDguMS03My40LTkzLjMtNzMuNC01MyAwLTk2IDQzLTk2IDk2IDAgMjkuMSAxMi45IDU1LjEgMzMuMyA3Mi43IDQuMyAzLjcgNC4zIDEwLjggMCAxNC41LTIwLjQgMTcuNi0zMy4zIDQzLjctMzMuMyA3Mi43IDAgNTMgNDMgOTYgOTYgOTYgNDUuMiAwIDgzLjEtMzEuMyA5My4zLTczLjQgLjktMy44IDQuMi02LjYgOC4xLTYuNmwyNDUuMSAwYzMuOSAwIDcuMiAyLjggOC4xIDYuNiAxMC4yIDQyLjEgNDguMSA3My40IDkzLjMgNzMuNCA1MyAwIDk2LTQzIDk2LTk2IDAtMjkuMS0xMi45LTU1LjEtMzMuMy03Mi43LTQuMy0zLjctNC4zLTEwLjggMC0xNC41IDIwLjQtMTcuNiAzMy4zLTQzLjcgMzMuMy03Mi43IDAtNTMtNDMtOTYtOTYtOTYtNDUuMiAwLTgzLjEgMzEuMy05My4zIDczLjQtLjkgMy44LTQuMiA2LjYtOC4xIDYuNmwtMjQ1LjEgMHoiXX0sZmJlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZpcmUtZmxhbWUtY3VydmVkIixpY29uOlszODQsNTEyLFsiZmlyZS1hbHQiXSwiZjdlNCIsIk0xNTMuNiAyOS45bDE2LTIxLjNDMTczLjYgMy4yIDE4MCAwIDE4Ni43IDAgMTk4LjQgMCAyMDggOS42IDIwOCAyMS4zbDAgMjIuMWMwIDEzLjEgNS40IDI1LjcgMTQuOSAzNC43TDMwNy42IDE1OUMzNTYuNCAyMDUuNiAzODQgMjcwLjIgMzg0IDMzNy43IDM4NCA0MzQgMzA2IDUxMiAyMDkuNyA1MTJMMTkyIDUxMkM4NiA1MTIgMCA0MjYgMCAzMjBsMC0zLjhjMC00OC44IDE5LjQtOTUuNiA1My45LTEzMC4xbDMuNS0zLjVjNC4yLTQuMiAxMC02LjYgMTYtNi42IDEyLjUgMCAyMi42IDEwLjEgMjIuNiAyMi42TDk2IDI4OGMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0bDAtMy45YzAtMTgtNy4yLTM1LjMtMTkuOS00OGwtMzguNi0zOC42Yy0yNC0yNC0zNy41LTU2LjctMzcuNS05MC43IDAtMjcuNyA5LTU0LjggMjUuNi03Ni45eiJdfSx2VXQ9ZmJlLG1iZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJidXMtc2ltcGxlIixpY29uOls0NDgsNTEyLFsiYnVzLWFsdCJdLCJmNTVlIiwiTTk2IDBDNDMgMCAwIDQzIDAgOTZMMCAzODRjMCAyOS44IDIwLjQgNTQuOSA0OCA2MmwwIDM0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDE2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0zMiAxOTIgMCAwIDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMybDE2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0zNGMyNy42LTcuMSA0OC0zMi4yIDQ4LTYybDAtMjg4YzAtNTMtNDMtOTYtOTYtOTZMOTYgMHpNNjQgMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMybDI1NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgOTZjMCAxNy43LTE0LjMgMzItMzIgMzJMOTYgMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTk2ek05NiAzMjBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0yNTYgMGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6Il19LHhVdD1tYmUseVV0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InZlbnVzLW1hcnMiLGljb246WzY0MCw1MTIsWzk4OTJdLCJmMjI4IiwiTTQ4MC02NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJTNDYyLjMgMCA0ODAgMEw1MzAuNyAwIDQ3NCA1Ni43Yy0yNi4zLTE1LjctNTcuMS0yNC43LTkwLTI0LjctMzUuNCAwLTY4LjQgMTAuNS05NiAyOC41LTI3LjYtMTgtNjAuNi0yOC41LTk2LTI4LjUtOTcuMiAwLTE3NiA3OC44LTE3NiAxNzYgMCA4Ni4zIDYyLjEgMTU4LjEgMTQ0IDE3My4xbDAgMzQuOS0zMiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDMyIDAgMCAzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMzIgMzIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMzIgMCAwLTM0LjljMjMuMy00LjMgNDQuOS0xMy4xIDY0LTI1LjYgMjcuNiAxOCA2MC42IDI4LjUgOTYgMjguNSA5Ny4yIDAgMTc2LTc4LjggMTc2LTE3NiAwLTQxLjEtMTQuMS03OS0zNy44LTEwOUw1NzYgNDUuMyA1NzYgOTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMkw0ODAtNjR6TTMzNiAzMDkuMmMyMC4yLTI4LjYgMzItNjMuNSAzMi0xMDEuMnMtMTEuOC03Mi42LTMyLTEwMS4yYzE0LjYtNi45IDMwLjgtMTAuOCA0OC0xMC44IDYxLjkgMCAxMTIgNTAuMSAxMTIgMTEyUzQ0NS45IDMyMCAzODQgMzIwYy0xNy4yIDAtMzMuNS0zLjktNDgtMTAuOHpNMjg4IDE1MC4zYzEwLjIgMTYuOSAxNiAzNi42IDE2IDU3LjdzLTUuOCA0MC45LTE2IDU3LjdjLTEwLjItMTYuOS0xNi0zNi42LTE2LTU3LjdzNS44LTQwLjkgMTYtNTcuN3ptLTQ4LTQzLjVjLTIwLjIgMjguNi0zMiA2My41LTMyIDEwMS4yczExLjggNzIuNiAzMiAxMDEuMmMtMTQuNSA2LjktMzAuOCAxMC44LTQ4IDEwLjgtNjEuOSAwLTExMi01MC4xLTExMi0xMTJTMTMwLjEgOTYgMTkyIDk2YzE3LjIgMCAzMy41IDMuOSA0OCAxMC44eiJdfSx3VXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYmxlbmRlciIsaWNvbjpbNTEyLDUxMixbXSwiZjUxNyIsIk0wIDU2QzAgMjUuMSAyNS4xIDAgNTYgMEw0MzcuNiAwYzIxLjMgMCAzNi42IDIwLjMgMzAuOCA0MC44TDQ1Ny4xIDgwIDM0NCA4MGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw5OS40IDAtMTguMyA2NC04MS4xIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsNjcuNCAwLTI3LjQgOTYtMjU2IDAtOS4xLTk2LTYyLjkgMGMtMzAuOSAwLTU2LTI1LjEtNTYtNTZMMCA1NnpNMTE0LjMgMTkyTDEwMC42IDQ4IDU2IDQ4Yy00LjQgMC04IDMuNi04IDhsMCAxMjhjMCA0LjQgMy42IDggOCA4bDU4LjMgMHpNMTM2IDM4NGwyNDAgMGMyMi4xIDAgNDAgMTcuOSA0MCA0MGwwIDQ4YzAgMjIuMS0xNy45IDQwLTQwIDQwbC0yNDAgMGMtMjIuMSAwLTQwLTE3LjktNDAtNDBsMC00OGMwLTIyLjEgMTcuOS00MCA0MC00MHptMTIwIDg4YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHoiXX0sa1V0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InUiLGljb246WzM4NCw1MTIsWzExN10sIjU1IiwiTTMyIDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMjI0YzAgNzAuNyA1Ny4zIDEyOCAxMjggMTI4czEyOC01Ny4zIDEyOC0xMjhsMC0yMjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDIyNGMwIDEwNi04NiAxOTItMTkyIDE5MlMwIDM5NCAwIDI4OEwwIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMyeiJdfSxjZj17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzaGFyZSIsaWNvbjpbNTEyLDUxMixbIm1haWwtZm9yd2FyZCJdLCJmMDY0IiwiTTMwNy44IDE4LjRjLTEyIDUtMTkuOCAxNi42LTE5LjggMjkuNmwwIDgwLTExMiAwYy05Ny4yIDAtMTc2IDc4LjgtMTc2IDE3NiAwIDExMy4zIDgxLjUgMTYzLjkgMTAwLjIgMTc0LjEgMi41IDEuNCA1LjMgMS45IDguMSAxLjkgMTAuOSAwIDE5LjctOC45IDE5LjctMTkuNyAwLTcuNS00LjMtMTQuNC05LjgtMTkuNS05LjQtOC44LTIyLjItMjYuNC0yMi4yLTU2LjcgMC01MyA0My05NiA5Ni05Nmw5NiAwIDAgODBjMCAxMi45IDcuOCAyNC42IDE5LjggMjkuNnMyNS43IDIuMiAzNC45LTYuOWwxNjAtMTYwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xNjAtMTYwYy05LjItOS4yLTIyLjktMTEuOS0zNC45LTYuOXoiXX0sU1V0PWNmLGdiZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwaG9uZS1mbGlwIixpY29uOls1MTIsNTEyLFsxMjgzODEsInBob25lLWFsdCJdLCJmODc5IiwiTTM1MS44IDI1YzcuOC0xOC44IDI4LjQtMjguOSA0OC4xLTIzLjVsNS41IDEuNWM2NC42IDE3LjYgMTE5LjggODAuMiAxMDMuNyAxNTYuNC0zNy4xIDE3NS0xNzQuOCAzMTIuNy0zNDkuOCAzNDkuOC03Ni4zIDE2LjItMTM4LjgtMzkuMS0xNTYuNC0xMDMuN2wtMS41LTUuNWMtNS40LTE5LjcgNC43LTQwLjMgMjMuNS00OC4xbDk3LjMtNDAuNWMxNi41LTYuOSAzNS42LTIuMSA0NyAxMS44bDM4LjYgNDcuMmM3MC4zLTM0LjkgMTI2LjgtOTMuMyAxNTkuMy0xNjQuOWwtNDQuMS0zNi4xYy0xMy45LTExLjMtMTguNi0zMC40LTExLjgtNDdMMzUxLjggMjV6Il19LF9VdD1nYmUsTVV0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRvaWxldC1wb3J0YWJsZSIsaWNvbjpbMzIwLDUxMixbXSwiZTU4MyIsIk0wIDY0bDAgMTYgMzIwIDAgMC0xNmMwLTM1LjMtMjguNy02NC02NC02NEw2NCAwQzI4LjcgMCAwIDI4LjcgMCA2NHptMjQgNjRMMCAxMjggMCA0ODhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTggMjI0IDAgMCA4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0zNjAtMjk2IDB6bTIyNCA5NmwyNCAwIDAgOTYtMjQgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRsMC00OGMwLTEzLjMgMTAuNy0yNCAyNC0yNHoiXX0selV0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBlcnNvbi1wcmVnbmFudCIsaWNvbjpbMzg0LDUxMixbXSwiZTMxZSIsIk0xOTIgODBhNTYgNTYgMCAxIDAgMC0xMTIgNTYgNTYgMCAxIDAgMCAxMTJ6bTgwIDMyMS4yYzguNi00LjUgMTYuOC0xMCAyNC4zLTE2LjVsNC0zLjRjMjIuNi0xOS40IDM1LjctNDcuNyAzNS43LTc3LjYgMC0zNS45LTE4LjgtNjkuMS00OS42LTg3LjZsLTMwLjQtMTguMiAwLTEuOGMwLTQ2LjUtMzcuNy04NC4xLTg0LjEtODQuMS0yOC4xIDAtNTQuNCAxNC4xLTcwIDM3LjVMMjEuNCAyNzAuMmMtOS44IDE0LjctNS44IDM0LjYgOC45IDQ0LjRzMzQuNiA1LjggNDQuNC04LjlsMjktNDMuNS0zMC41IDExMy41Yy0yLjYgOS42LS42IDE5LjkgNS41IDI3LjhTOTQgNDE2IDEwNCA0MTZsOCAwIDAgOTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTk2IDMyIDAgMCA5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTEwLjh6Il19LENVdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJsZXNzLXRoYW4iLGljb246WzUxMiw1MTIsWzYyNzc0XSwiM2MiLCJNNDc3LjEgNTAuNmM3LjQgMTYgLjQgMzUuMS0xNS42IDQyLjVMMTA4LjQgMjU2IDQ2MS40IDQxOWMxNiA3LjQgMjMgMjYuNCAxNS42IDQyLjVzLTI2LjQgMjMtNDIuNSAxNS42bC00MTYtMTkyQzcuMyAyNzkuOCAwIDI2OC41IDAgMjU2UzcuMyAyMzIuMiAxOC42IDIyN2w0MTYtMTkyYzE2LTcuNCAzNS4xLS40IDQyLjUgMTUuNnoiXX0sVFV0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InN1cGVyc2NyaXB0IixpY29uOls1NzYsNTEyLFtdLCJmMTJiIiwiTTU0NCAzMmMwLTExLjEtNS43LTIxLjQtMTUuMi0yNy4ycy0yMS4yLTYuNC0zMS4xLTEuNGwtMzIgMTZDNDQ5LjkgMjcuMyA0NDMuNSA0Ni41IDQ1MS40IDYyLjMgNDU3IDczLjUgNDY4LjMgODAgNDgwIDgwbDAgODBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsNjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwwLTEyOHpNOTYgNjRDNzguMyA2NCA2NCA3OC4zIDY0IDk2czE0LjMgMzIgMzIgMzJsMTUuMyAwIDg5LjYgMTI4LTg5LjYgMTI4LTE1LjMgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzMiAwYzEwLjQgMCAyMC4yLTUuMSAyNi4yLTEzLjZMMjQwIDMxMS44IDMyNS44IDQzNC40YzYgOC42IDE1LjggMTMuNiAyNi4yIDEzLjZsMzIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMTUuMyAwLTg5LjYtMTI4IDg5LjYtMTI4IDE1LjMgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMzIgMGMtMTAuNCAwLTIwLjIgNS4xLTI2LjIgMTMuNkwyNDAgMjAwLjIgMTU0LjIgNzcuNkMxNDguMiA2OS4xIDEzOC40IDY0IDEyOCA2NEw5NiA2NHoiXX0sYmJlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNpcmNsZS1zdG9wIixpY29uOls1MTIsNTEyLFs2MjA5NCwic3RvcC1jaXJjbGUiXSwiZjI4ZCIsIk0yNTYgNTEyYTI1NiAyNTYgMCAxIDAgMC01MTIgMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTkyIDE2MGwxMjggMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDEyOGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMTI4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMyeiJdfSwkVXQ9YmJlLHZiZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJhcnJvd3MtdXAtZG93biIsaWNvbjpbMjU2LDUxMixbImFycm93cy12Il0sImYwN2QiLCJNMTUwLjYtMjIuNmMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTk2IDk2Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDk2IDc3LjMgOTYgNDM0LjcgNTQuNiAzOTMuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsOTYgOTZjNiA2IDE0LjEgOS40IDIyLjYgOS40czE2LjYtMy40IDIyLjYtOS40bDk2LTk2YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC00MS40IDQxLjQgMC0zNTcuNSA0MS40IDQxLjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtOTYtOTZ6Il19LERVdD12YmUseGJlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBvby1zdG9ybSIsaWNvbjpbNTEyLDUxMixbInBvby1ib2x0Il0sImY3NWEiLCJNMjY4LjktMzEuOGMtNS41LS43LTExIDEuNC0xNC41IDUuN3MtNC42IDEwLjEtMi44IDE1LjNjMi44IDguMiA0LjMgMTYuOSA0LjMgMjYuMSAwIDIxLjctOC41IDM3LjItMjEuOSA0Ny42LTEzLjkgMTAuOC0zNC4xIDE3LTU4LjEgMTdsLTI0IDBjLTQ4LjYgMC04OCAzOS40LTg4IDg4IDAgMTQuOCAzLjcgMjguOCAxMC4yIDQxLjEtNDIgNi42LTc0LjIgNDMtNzQuMiA4Ni45IDAgNDYuNiAzNi4yIDg0LjcgODEuOSA4Ny44IDMuMS0xMi40IDkuOS0yMy44IDE5LjYtMzIuNUwyNDIuNyAyMjVjMTIuMi0xMC45IDI4LTE3IDQ0LjQtMTcgNDQuNiAwIDc2LjUgNDMgNjMuNyA4NS43bC0xMi43IDQyLjRjMjguOCAxLjIgNTIuNyAyMS4xIDU5LjggNDcuOWwyNi4yIDBjNDguNiAwIDg4LTM5LjQgODgtODggMC00My45LTMyLjEtODAuMy03NC4yLTg2LjkgNi41LTEyLjMgMTAuMi0yNi4yIDEwLjItNDEuMSAwLTQ4LjYtMzkuNC04OC04OC04OGwtOS40IDBjLjktNS40IDEuNC0xMC45IDEuNC0xNi42IDAtNDguNy0zNi4xLTg4LjktODMuMS05NS4yek0xNDQuNiA0MTZsNjEuOCAwLTMxLjIgMTA0LjFjLTMuNiAxMS45IDUuMyAyMy45IDE3LjggMjMuOSA0LjYgMCA5LTEuNyAxMi40LTQuN0wzNDYuNSA0MTIuOWMzLjUtMy4xIDUuNS03LjYgNS41LTEyLjQgMC05LjItNy40LTE2LjYtMTYuNi0xNi42bC02MS44IDAgMzEuMi0xMDQuMWMzLjYtMTEuOS01LjMtMjMuOS0xNy44LTIzLjktNC42IDAtOSAxLjctMTIuNCA0LjdMMTMzLjUgMzg3LjFjLTMuNSAzLjEtNS41IDcuNi01LjUgMTIuNCAwIDkuMiA3LjQgMTYuNiAxNi42IDE2LjZ6Il19LExVdD14YmUsRVV0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InZpZGVvLXNsYXNoIixpY29uOls1NzYsNTEyLFtdLCJmNGUyIiwiTTQxLTI0LjljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwUy0yLjMtLjMgNyA5LjFsNTI4IDUyOGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTE1My0xNTMgMC0yMjIuMmMwLTM1LjMtMjguNy02NC02NC02NEwxMjkuOCA2NCA0MS0yNC45ek0zMiAxMjhsMCAyNTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjU2IDBjNy44IDAgMTUuMy0xLjQgMjIuMi00TDM2IDEwNS44Yy0yLjYgNi45LTQgMTQuNC00IDIyLjJ6TTQ2NCAzMzZsNzMuNSA1OC44YzQuMiAzLjQgOS40IDUuMiAxNC44IDUuMiAxMy4xIDAgMjMuNy0xMC42IDIzLjctMjMuN2wwLTI0MC42YzAtMTMuMS0xMC42LTIzLjctMjMuNy0yMy43LTUuNCAwLTEwLjYgMS44LTE0LjggNS4yTDQ2NCAxNzYgNDY0IDMzNnoiXX0sbW9lPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNxdWFyZS14bWFyayIsaWNvbjpbNDQ4LDUxMixbMTAwNjIsInRpbWVzLXNxdWFyZSIsInhtYXJrLXNxdWFyZSJdLCJmMmQzIiwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6bTcxIDEzNWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMGw1NSA1NSA1NS01NWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTU1IDU1IDU1IDU1YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTU1LTU1LTU1IDU1Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDU1LTU1LTU1LTU1Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXoiXX0sUFV0PW1vZSxJVXQ9bW9lLHliZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoYW5kLWhvbGRpbmctZHJvcGxldCIsaWNvbjpbNTc2LDUxMixbImhhbmQtaG9sZGluZy13YXRlciJdLCJmNGMxIiwiTTI3NS41IDYuNkwyMDkuMiAxMDNDMTk4IDExOS4zIDE5MiAxMzguNiAxOTIgMTU4LjNsMCAxLjdjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NmwwLTEuN2MwLTE5LjgtNi0zOS0xNy4yLTU1LjNMMzAwLjUgNi42QzI5Ny43IDIuNSAyOTMgMCAyODggMHMtOS43IDIuNS0xMi41IDYuNnpNMTA5LjMgMzQxLjVMNjYuNyAzODQgMzIgMzg0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDMyMC41IDBjMjkgMCA1Ny4zLTkuMyA4MC43LTI2LjVsMTI2LjYtOTMuM2MxNy44LTEzLjEgMjEuNi0zOC4xIDguNS01NS45cy0zOC4xLTIxLjYtNTUuOS04LjVMMzkyLjYgNDE2IDI4MCA0MTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsNzIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMTUyLjIgMGMtMzMuOSAwLTY2LjUgMTMuNS05MC41IDM3LjV6Il19LEFVdD15YmUsZ29lPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Indvbi1zaWduIixpY29uOls1MTIsNTEyLFs4MzYxLCJrcnciLCJ3b24iXSwiZjE1OSIsIk02Mi40IDUzLjlDNTYuOCAzNy4xIDM4LjcgMjguMSAyMS45IDMzLjZTLTMuOSA1Ny40IDEuNyA3NC4xTDU2LjkgMjQwIDMyIDI0MGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw0MC45IDAgNTYuNyAxNzAuMWM0LjUgMTMuNSAxNy40IDIyLjQgMzEuNiAyMS45czI2LjQtMTAuNCAyOS44LTI0LjJMMjMzIDI4OCAyNzkgMjg4IDMyMSA0NTUuOGMzLjQgMTMuOCAxNS42IDIzLjcgMjkuOCAyNC4yczI3LjEtOC40IDMxLjYtMjEuOUw0MzkuMSAyODggNDgwIDI4OGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtMjQuOSAwIDU1LjMtMTY1LjljNS42LTE2LjgtMy41LTM0LjktMjAuMi00MC41cy0zNC45IDMuNS00MC41IDIwLjJsLTYyIDE4Ni4xLTU0LjYgMC00NS45LTE4My44QzI4My41IDQyIDI3MC43IDMyIDI1NiAzMnMtMjcuNSAxMC0zMSAyNC4yTDE3OSAyNDAgMTI0LjQgMjQwIDYyLjQgNTMuOXptNzggMjM0LjFsMjYuNiAwLTExLjQgNDUuNi0xNS4yLTQ1LjZ6TTI0NSAyNDBsMTEtNDQuMSAxMSA0NC4xLTIyIDB6bTEwMCA0OGwyNi42IDAtMTUuMiA0NS42LTExLjQtNDUuNnoiXX0sTlV0PWdvZSxSVXQ9Z29lLE9VdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJvYmplY3QtdW5ncm91cCIsaWNvbjpbNjQwLDUxMixbXSwiZjI0OCIsIk0zMiAxMTkuNEMxMi45IDEwOC40IDAgODcuNyAwIDY0IDAgMjguNyAyOC43IDAgNjQgMCA4Ny43IDAgMTA4LjQgMTIuOSAxMTkuNCAzMmwyMDkuMSAwYzExLjEtMTkuMSAzMS43LTMyIDU1LjQtMzIgMzUuMyAwIDY0IDI4LjcgNjQgNjQgMCAyMy43LTEyLjkgNDQuNC0zMiA1NS40bDAgMTEzLjFjMTkuMSAxMS4xIDMyIDMxLjcgMzIgNTUuNCAwIDM1LjMtMjguNyA2NC02NCA2NC0yMy43IDAtNDQuNC0xMi45LTU1LjQtMzJsLTIwOS4xIDBjLTExLjEgMTkuMS0zMS43IDMyLTU1LjQgMzItMzUuMyAwLTY0LTI4LjctNjQtNjQgMC0yMy43IDEyLjktNDQuNCAzMi01NS40bDAtMTEzLjF6TTExOS40IDk2Yy01LjYgOS43LTEzLjcgMTcuOC0yMy40IDIzLjRsMCAxMTMuMWM5LjcgNS42IDE3LjggMTMuNyAyMy40IDIzLjRsMjA5LjEgMGM1LjYtOS43IDEzLjctMTcuOCAyMy40LTIzLjRsMC0xMTMuMWMtOS43LTUuNi0xNy44LTEzLjctMjMuNC0yMy40TDExOS40IDk2ek01NDQgMjc5LjRjLTkuNy01LjYtMTcuOC0xMy43LTIzLjQtMjMuNGwtMjkuMiAwYy01LjMtMTcuNy0xNC44LTMzLjUtMjcuNC00Ni40bDAtMTcuNiA1Ni42IDBjMTEuMS0xOS4xIDMxLjctMzIgNTUuNC0zMiAzNS4zIDAgNjQgMjguNyA2NCA2NCAwIDIzLjctMTIuOSA0NC40LTMyIDU1LjRsMCAxMTMuMWMxOS4xIDExLjEgMzIgMzEuNyAzMiA1NS40IDAgMzUuMy0yOC43IDY0LTY0IDY0LTIzLjcgMC00NC40LTEyLjktNTUuNC0zMmwtMjA5LjEgMGMtMTEuMSAxOS4xLTMxLjcgMzItNTUuNCAzMi0zNS4zIDAtNjQtMjguNy02NC02NCAwLTIzLjcgMTIuOS00NC40IDMyLTU1LjRsMC0yNC42IDY0IDAgMCAyNC42YzkuNyA1LjYgMTcuOCAxMy43IDIzLjQgMjMuNGwyMDkuMSAwYzUuNi05LjcgMTMuNy0xNy44IDIzLjQtMjMuNGwwLTExMy4xeiJdfSxGVXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY29tbWVudCIsaWNvbjpbNTEyLDUxMixbMTI4NDg5LDYxNjY5XSwiZjA3NSIsIk01MTIgMjQwYzAgMTMyLjUtMTE0LjYgMjQwLTI1NiAyNDAtMzcuMSAwLTcyLjMtNy40LTEwNC4xLTIwLjdMMzMuNSA1MTAuMWMtOS40IDQtMjAuMiAxLjctMjcuMS01LjhTLTIgNDg1LjggMi44IDQ3Ni44bDQ4LjgtOTIuMkMxOS4yIDM0NC4zIDAgMjk0LjMgMCAyNDAgMCAxMDcuNSAxMTQuNiAwIDI1NiAwUzUxMiAxMDcuNSA1MTIgMjQweiJdfSxCVXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaGlsbC1hdmFsYW5jaGUiLGljb246WzU3Niw1MTIsW10sImU1MDciLCJNNDQwLjEgNDAxLjljMzQuMiAyMy4xIDgxLjEgMTkuNSAxMTEuNC0xMC44IDM0LjQtMzQuNCAzNC40LTkwLjEgMC0xMjQuNS0yNy44LTI3LjgtNjkuNS0zMy4xLTEwMi42LTE2LTExLjggNi4xLTE2LjQgMjAuNi0xMC4zIDMyLjNzMjAuNiAxNi40IDMyLjMgMTAuM2MxNS4xLTcuOCAzNC01LjMgNDYuNiA3LjMgMTUuNiAxNS42IDE1LjYgNDAuOSAwIDU2LjZzLTQwLjkgMTUuNi01Ni42IDBsLTgxLjctODEuN2MyMi4zLTE0LjIgMzcuMS0zOS4xIDM3LjEtNjcuNSAwLTMzLjktMjEuMS02Mi45LTUwLjktNzQuNSAxLjktNi44IDIuOS0xNCAyLjktMjEuNSAwLTQ0LjItMzUuOC04MC04MC04MC0yNy4zIDAtNTEuNSAxMy43LTY1LjkgMzQuNi01LjgtMjAtMjQuMi0zNC42LTQ2LjEtMzQuNi0yNi41IDAtNDggMjEuNS00OCA0OCAwIDQgLjUgNy45IDEuNCAxMS42TDQ0MC4xIDQwMS45ek00ODAuNCA2NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem0wIDEyOGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTY4LjcgODdDNDMuNSA2MS44IC40IDc5LjcgLjQgMTE1LjNMLjQgNDMyYzAgNDQuMiAzNS44IDgwIDgwIDgwbDMxNi43IDBjMzUuNiAwIDUzLjUtNDMuMSAyOC4zLTY4LjNMNjguNyA4N3oiXX0sSFV0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImFycm93cy10by1leWUiLGljb246WzY0MCw1MTIsW10sImU0YmYiLCJNMTc2IDU2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0bDAgMzguMS02My02M2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBTMjEuNyA1NS42IDMxIDY1bDYzIDYzLTM4LjEgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw5NiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0bDAtOTZ6bTAgNDAwbDAtOTZjMC0xMy4zLTEwLjctMjQtMjQtMjRsLTk2IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMzguMSAwLTYzIDYzYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNjMtNjMgMCAzOC4xYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjR6bTMxMiAyNGMxMy4zIDAgMjQtMTAuNyAyNC0yNGwwLTM4LjEgNjMgNjNjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC02My02MyAzOC4xIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTk2IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0bDAgOTZjMCAxMy4zIDEwLjcgMjQgMjQgMjR6TTQ2NCA1NmwwIDk2YzAgMTMuMyAxMC43IDI0IDI0IDI0bDk2IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTM4LjEgMCA2My02M2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwbC02MyA2MyAwLTM4LjFjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR6TTMyMCAxMjBjLTU3LjMgMC05OS40IDM0LTEyNS42IDY0LjMtMjAgMjMuMS0zMi40IDQ1LjgtMzcuNiA1Ni4xLTIuNSA1LTQuOSA5LjctNC45IDE1LjZzMi4zIDEwLjYgNC45IDE1LjZjNS4yIDEwLjMgMTcuNiAzMyAzNy42IDU2LjEgMjYuMiAzMC4zIDY4LjIgNjQuMyAxMjUuNiA2NC4zczk5LjQtMzQgMTI1LjYtNjQuM2MyMC0yMy4xIDMyLjQtNDUuOCAzNy42LTU2LjEgMi41LTUgNC45LTkuNyA0LjktMTUuNnMtMi4zLTEwLjYtNC45LTE1LjZjLTUuMi0xMC4zLTE3LjYtMzMtMzcuNi01Ni4xLTI2LjItMzAuMy02OC4yLTY0LjMtMTI1LjYtNjQuM3pNMjU2IDI1NmE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6Il19LHFVdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzbm93cGxvdyIsaWNvbjpbNjQwLDUxMixbXSwiZjdkMiIsIk0xMjggMTYwbDAtOTZjMC0zNS4zIDI4LjctNjQgNjQtNjRMMjk2LjQgMGMyNC4yIDAgNDYuNCAxMy43IDU3LjIgMzUuNGw4Ny42IDE3NS4xYzQuNCA4LjkgNi44IDE4LjcgNi44IDI4LjZsMCA1Ni45IDgwIDAgMC04MGMwLTQ4LjYgMzkuNC04OCA4OC04OCAxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGMtMjIuMSAwLTQwIDE3LjktNDAgNDBsMCAyMDhjMCAyMi4xIDE3LjkgNDAgNDAgNDAgMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRjLTQ4LjYgMC04OC0zOS40LTg4LTg4bDAtODAtNjMgMGM5LjUgMTYuNSAxNSAzNS42IDE1IDU2IDAgNjEuOS01MC4xIDExMi0xMTIgMTEybC0yMjQgMGMtNjEuOSAwLTExMi01MC4xLTExMi0xMTIgMC0zMC41IDEyLjItNTguMiAzMi03OC40TDY0IDIyNGMwLTM1LjMgMjguNy02NCA2NC02NHptOTEuNyAzNC45bDQzLjYgMjkuMSAxMTMuMiAwLTgwLTE2MC0xMDQuNCAwIDAgMTA4LjggMjcuNyAyMi4xek00MTYgNDAwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4bC0yMjQgMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhzMjEuNSA0OCA0OCA0OGwyMjQgMGMyNi41IDAgNDgtMjEuNSA0OC00OHptLTI4MCAwYTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6bTIxNi0yNGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6TTIzMiA0MDBhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHoiXX0salV0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNoYXJ0LWdhbnR0IixpY29uOls1MTIsNTEyLFtdLCJlMGU0IiwiTTY0IDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzAgNDYuMyAwIDY0TDAgNDAwYzAgNDQuMiAzNS44IDgwIDgwIDgwbDQwMCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDgwIDQxNmMtOC44IDAtMTYtNy4yLTE2LTE2TDY0IDY0em05NiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDk2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTk2IDB6bTY0IDExMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwxMjggMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMTI4IDB6TTM4NCAyODhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsNjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtNjQgMHoiXX0sd2JlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InZpZGVvIixpY29uOls1NzYsNTEyLFsidmlkZW8tY2FtZXJhIl0sImYwM2QiLCJNOTYgNjRjLTM1LjMgMC02NCAyOC43LTY0IDY0bDAgMjU2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDI1NiAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMjU2YzAtMzUuMy0yOC43LTY0LTY0LTY0TDk2IDY0ek00NjQgMzM2bDczLjUgNTguOGM0LjIgMy40IDkuNCA1LjIgMTQuOCA1LjIgMTMuMSAwIDIzLjctMTAuNiAyMy43LTIzLjdsMC0yNDAuNmMwLTEzLjEtMTAuNi0yMy43LTIzLjctMjMuNy01LjQgMC0xMC42IDEuOC0xNC44IDUuMkw0NjQgMTc2IDQ2NCAzMzZ6Il19LFZVdD13YmUsVVV0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNoZXNzLXBhd24iLGljb246WzM4NCw1MTIsWzk4MjNdLCJmNDQzIiwiTTE5Mi0zMmM2Ni4zIDAgMTIwIDUzLjcgMTIwIDEyMCAwIDI3LTguOSA1MS45LTI0IDcyIDE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0xMC43IDAgMjYuNyAxNjAgNTYuMiA3MC4zYzUgNi4zIDcuOCAxNC4xIDcuOCAyMi4yIDAgMTkuNi0xNS45IDM1LjUtMzUuNSAzNS41TDUxLjUgNTEyYy0xOS42IDAtMzUuNS0xNS45LTM1LjUtMzUuNSAwLTguMSAyLjctMTUuOSA3LjgtMjIuMkw4MCAzODQgMTA2LjcgMjI0IDk2IDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmMtMTUuMS0yMC4xLTI0LTQ1LTI0LTcyIDAtNjYuMyA1My43LTEyMCAxMjAtMTIweiJdfSxXVXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic3luYWdvZ3VlIixpY29uOls1NzYsNTEyLFsxMjgzMzNdLCJmNjliIiwiTTE2IDgwYzAtMzUuMyAyOC43LTY0IDY0LTY0czY0IDI4LjcgNjQgNjRsMCAzMi0xMjggMCAwLTMyem0wIDM2OGwwLTI4OCAxMjggMCAxMjYuMi04NC4yYzEwLjctNy4yIDI0LjgtNy4yIDM1LjUgMGwxMjYuMiA4NC4yIDEyOCAwIDAgMjg4YzAgMzUuMy0yOC43IDY0LTY0IDY0TDgwIDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjR6TTU2MCAxMTJsLTEyOCAwIDAtMzJjMC0zNS4zIDI4LjctNjQgNjQtNjRzNjQgMjguNyA2NCA2NGwwIDMyek0yMjQgMzg0bDAgODAgMTI4IDAgMC04MGMwLTM1LjMtMjguNy02NC02NC02NHMtNjQgMjguNy02NCA2NHptNjQtMTUyYTQwIDQwIDAgMSAwIDAtODAgNDAgNDAgMCAxIDAgMCA4MHoiXX0sR1V0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJ1aWxkaW5nLWNpcmNsZS1jaGVjayIsaWNvbjpbNTc2LDUxMixbXSwiZTRkMiIsIk05NiAwQzYwLjcgMCAzMiAyOC43IDMyIDY0bDAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDE4MCAwYy0xMC41LTE0LjYtMTktMzAuNy0yNS4xLTQ4bC03NC45IDAgMC04MGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwzMiAwYzIgMCA0IC4yIDUuOSAuNSA2LTIzLjYgMTYuMy00NS40IDMwLjEtNjQuNWwtNCAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCA0YzI3LjUtMTkuOCA2MC4zLTMyLjQgOTYtMzUuNEw0MTYgNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRMOTYgMHptMzIgMTEyYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJ6TTI3MiA5NmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2ek0xMjggMjQwYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJ6TTU3NiA0MDBhMTQ0IDE0NCAwIDEgMCAtMjg4IDAgMTQ0IDE0NCAwIDEgMCAyODggMHptLTg2LjYtNjAuOWM3LjEgNS4yIDguNyAxNS4yIDMuNSAyMi4zbC02NCA4OGMtMi44IDMuOC03IDYuMi0xMS43IDYuNXMtOS4zLTEuMy0xMi42LTQuNmwtNDAtNDBjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMGwyNi44IDI2LjggNTMtNzIuOWM1LjItNy4xIDE1LjItOC43IDIyLjQtMy41eiJdfSxLVXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2FsZW5kYXItcGx1cyIsaWNvbjpbNDQ4LDUxMixbXSwiZjI3MSIsIk0xMjggMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDMyIDEyOCAwIDAtMzJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDMyIDMyIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAyODhjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NGwzMiAwIDAtMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTk2IDE5MmMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCA0OC00OCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDQ4IDAgMCA0OGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtNDggNDggMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtNDggMCAwLTQ4YzAtMTMuMy0xMC43LTI0LTI0LTI0eiJdfSxrYmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToid2hlZWxjaGFpci1tb3ZlIixpY29uOls0NDgsNTEyLFsid2hlZWxjaGFpci1hbHQiXSwiZTJjZSIsIk0zMTIgNTZhNTYgNTYgMCAxIDEgMTEyIDAgNTYgNTYgMCAxIDEgLTExMiAwek0yMDUuNCAxMjQuMWMtNi40LTUuMi0xNS42LTQuNy0yMS40IDEuMWwtMzMuNCAzMy40Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0wxMzguOCA4MGMyOS0yOSA3NS4yLTMxLjQgMTA3LTUuNWw4MS4zIDY2YzIxLjQgMTcuNCAyMy44IDQ5LjIgNS4yIDY5LjVsLTQxLjggNDYgOTggMGMzMC4zIDAgNTMgMjcuNyA0Ny4xIDU3LjRMNDA3LjQgNDU0LjNjLTMuNSAxNy4zLTIwLjMgMjguNi0zNy43IDI1LjFzLTI4LjYtMjAuMy0yNS4xLTM3LjdMMzY5IDMyMCAzMTYuOCAzMjBjMi4xIDEwLjMgMy4yIDIxIDMuMiAzMiAwIDg4LjQtNzEuNiAxNjAtMTYwIDE2MFMwIDQ0MC40IDAgMzUyIDcxLjYgMTkyIDE2MCAxOTJjNiAwIDExLjkgLjMgMTcuOCAxbDUwLjQtNTAuNC0yMi43LTE4LjV6TTE2MCA0NDhhOTYgOTYgMCAxIDAgMC0xOTIgOTYgOTYgMCAxIDAgMCAxOTJ6Il19LFlVdD1rYmUsWlV0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InVzZXItc2hpZWxkIixpY29uOls1NzYsNTEyLFtdLCJmNTA1IiwiTTIyNCAyNDhhMTIwIDEyMCAwIDEgMCAwLTI0MCAxMjAgMTIwIDAgMSAwIDAgMjQwem0tMjkuNyA1NkM5NS44IDMwNCAxNiAzODMuOCAxNiA0ODIuMyAxNiA0OTguNyAyOS4zIDUxMiA0NS43IDUxMmwyNTEuNSAwQzI2MSA0NjkuNCAyNDAgNDE0LjUgMjQwIDM1Ni40bDAtMzEuMWMwLTcuMyAxLTE0LjUgMi45LTIxLjNsLTQ4LjYgMHptMjUxIDE4NC41bC0xMy4zIDYuMyAwLTE4OC4xIDk2IDMyIDAgMTkuNmMwIDU1LjgtMzIuMiAxMDYuNS04Mi43IDEzMC4zek00MjEuOSAyNTkuNWwtMTEyIDM3LjNjLTEzLjEgNC40LTIxLjkgMTYuNi0yMS45IDMwLjRsMCAzMS4xYzAgNzQuNCA0MyAxNDIuMSAxMTAuMiAxNzMuN2wxOC41IDguN2M0LjggMi4yIDEwIDMuNCAxNS4yIDMuNHMxMC41LTEuMiAxNS4yLTMuNGwxOC41LTguN0M1MzMgNTAwLjMgNTc2IDQzMi42IDU3NiAzNTguMmwwLTMxLjFjMC0xMy44LTguOC0yNi0yMS45LTMwLjRsLTExMi0zNy4zYy02LjYtMi4yLTEzLjctMi4yLTIwLjIgMHoiXX0sWFV0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJvbGQiLGljb246WzM4NCw1MTIsW10sImYwMzIiLCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NFMxNC4zIDk2IDMyIDk2bDMyIDAgMCAzMjAtMzIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwyMjQgMGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOCAwLTQ2LjUtMjQuOC04Ny4zLTYyLTEwOS43IDE4LjctMjIuMyAzMC01MSAzMC04Mi4zIDAtNzAuNy01Ny4zLTEyOC0xMjgtMTI4TDMyIDMyek0yODggMTYwYzAgMzUuMy0yOC43IDY0LTY0IDY0bC05NiAwIDAtMTI4IDk2IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjR6TTEyOCA0MTZsMC0xMjggMTI4IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRzLTI4LjcgNjQtNjQgNjRsLTEyOCAweiJdfSxTYmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaGVhcnQtcHVsc2UiLGljb246WzUxMiw1MTIsWyJoZWFydGJlYXQiXSwiZjIxZSIsIk0yNTYgMTA3LjlMMjQxIDg3LjFDMjE2IDUyLjUgMTc1LjkgMzIgMTMzLjEgMzIgNTkuNiAzMiAwIDkxLjYgMCAxNjUuMWwwIDIuNmMwIDIzLjYgNi4yIDQ4IDE2LjYgNzIuM2wxMDYgMGMzLjIgMCA2LjEtMS45IDcuNC00LjlsMzEuOC03Ni4zYzMuNy04LjggMTIuMy0xNC42IDIxLjgtMTQuOHMxOC4zIDUuNCAyMi4yIDE0LjFsNTEuMyAxMTMuOSA0MS40LTgyLjhjNC4xLTguMSAxMi40LTEzLjMgMjEuNS0xMy4zczE3LjQgNS4xIDIxLjUgMTMuM2wyMy4yIDQ2LjNjMS40IDIuNyA0LjEgNC40IDcuMiA0LjRsMTIzLjYgMGMxMC41LTI0LjMgMTYuNi00OC43IDE2LjYtNzIuM2wwLTIuNkM1MTIgOTEuNiA0NTIuNCAzMiAzNzguOSAzMiAzMzYuMiAzMiAyOTYgNTIuNSAyNzEgODcuMWwtMTUgMjAuN3pNNDY5LjYgMjg4bC05Ny44IDBjLTIxLjIgMC00MC42LTEyLTUwLjEtMzFsLTEuNy0zLjQtNDIuNSA4NS4xYy00LjEgOC4zLTEyLjcgMTMuNS0yMiAxMy4zcy0xNy42LTUuNy0yMS40LTE0LjFsLTQ5LjMtMTA5LjUtMTAuNSAyNS4yYy04LjcgMjAuOS0yOS4xIDM0LjUtNTEuNyAzNC41bC04MC4yIDBjNDcuMiA3My44IDEyMyAxNDEuNyAxNzAuNCAxNzcuOSAxMi40IDkuNCAyNy42IDE0LjEgNDMuMSAxNC4xczMwLjgtNC42IDQzLjEtMTQuMUMzNDYuNiA0MjkuNyA0MjIuNCAzNjEuOCA0NjkuNiAyODh6Il19LFFVdD1TYmUsX2JlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNxdWFyZS1yb290LXZhcmlhYmxlIixpY29uOls1NzYsNTEyLFsic3F1YXJlLXJvb3QtYWx0Il0sImY2OTgiLCJNMjgyLjYgNzguMWM4LTI3LjMgMzMtNDYuMSA2MS40LTQ2LjFsMjAwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMMzQ0IDk2IDIzOC43IDQ1N2MtMy42IDEyLjMtMTQuMSAyMS4yLTI2LjggMjIuOHMtMjUuMS00LjYtMzEuNS0xNS42TDc3LjYgMjg4IDMyIDI4OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw0NS42IDBjMjIuOCAwIDQzLjggMTIuMSA1NS4zIDMxLjhsNjUuMiAxMTEuOCA4NC40LTI4OS41ek0zOTMuNCAyMzMuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMGw0MS40IDQxLjQgNDEuNC00MS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNsLTQxLjQgNDEuNCA0MS40IDQxLjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBsLTQxLjQtNDEuNC00MS40IDQxLjRjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zbDQxLjQtNDEuNC00MS40LTQxLjRjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zeiJdfSxKVXQ9X2JlLE1iZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoYW5kcy1idWJibGVzIixpY29uOls1MTIsNTEyLFsiaGFuZHMtd2FzaCJdLCJlMDVlIiwiTTM4NCA2NGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTk2IDEyOGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTEyOCA0NjRhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNMCAxNjBsLjEgNzIuNmMwIDQ0LjggMTcuNiA4Ny4xIDQ3LjkgMTE4LjQgLjMtNzcgNDAuMS0xNDguNCAxMDUuNC0xODkuM2wxLjktMS4yYy0yLjUtMy43LTIuOC04LjYtLjQtMTIuN2w2Mi0xMDcuNGM2LjYtMTEuNSAyLjctMjYuMi04LjgtMzIuOFMxODIgNSAxNzUuNCAxNi41bC02OCAxMTcuOCAwIDAgMCAwLTQzLjMgNzUgMC00OS4zYzAtMTcuNy0xNC40LTMyLTMyLTMyUzAgMTQyLjQgMCAxNjB6bTIxMy42LTM1LjljMTQuMS04LjggMjkuOC0xMi43IDQ1LjItMTIuMWwzNi41LTYzLjNjNi42LTExLjUgMi43LTI2LjItOC44LTMyLjhzLTI2LjItMi43LTMyLjggOC44bC02Ny4xIDExNi4yIDI3LTE2Ljl6bTg2LjUtMzUuN2wtMTYuNCAyOC40YzE1LjEgNS41IDI4LjYgMTUuNiAzOC4zIDI5LjdsMTkuNy0zNC4yYzYuNi0xMS41IDIuNy0yNi4yLTguOC0zMi44cy0yNi4yLTIuNy0zMi44IDguOHptNDYuNCA2My43bC0xMi41IDIxLjdjMiA4LjYgMi41IDE3LjUgMS43IDI2LjFsNC4zIDAgMCAwIDM0LjQgMCAxMy43LTIzLjhjNi42LTExLjUgMi43LTI2LjItOC44LTMyLjhzLTI2LjItMi43LTMyLjggOC44ek0yODMuMSAxNzVjLTkuNC0xNS0yOS4xLTE5LjUtNDQuMS0xMC4ybC02MC4yIDM3LjZDMTI3LjMgMjM0LjcgOTYgMjkxLjIgOTYgMzUybDAgOGMwIDguOSAuOCAxNy42IDIuMiAyNi4xIDM1LjQgOC4yIDYxLjggNDAgNjEuOCA3Ny45IDAgNi4zLS43IDEyLjUtMi4xIDE4LjQgMjUuMiAxOC42IDU2LjQgMjkuNiA5MC4xIDI5LjZsMTc2IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTkyIDBjLTYuNiAwLTEyLTUuNC0xMi0xMnM1LjQtMTIgMTItMTJsMTI0IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTEyNCAwYy02LjYgMC0xMi01LjQtMTItMTJzNS40LTEyIDEyLTEybDE1NiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0xNTYgMGMtNi42IDAtMTItNS40LTEyLTEyczUuNC0xMiAxMi0xMmwxMjQgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtMTM2IDAgMCAwIDAgMC05My4yIDAgNDYuMi0yOC45YzE1LTkuNCAxOS41LTI5LjEgMTAuMi00NC4xeiJdfSxlV3Q9TWJlLHRXdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJtYXJrZXIiLGljb246WzUxMiw1MTIsW10sImY1YTEiLCJNNDA4LjggMGMtMjcuNCAwLTUzLjYgMTAuOS03MyAzMC4yTDMxOC4xIDQ4IDMwNSAzNC45Yy0yOC4xLTI4LjEtNzMuNy0yOC4xLTEwMS44IDBMMTAzIDEzNWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwTDIzNy4xIDY4LjljOS40LTkuNCAyNC42LTkuNCAzMy45IDBMMjg0LjEgODEuOSAxODQgMTgyLjEgMzI5LjkgMzI4IDQ4MS44IDE3Ni4yYzE5LjQtMTkuNCAzMC4yLTQ1LjYgMzAuMi03MyAwLTU3LTQ2LjItMTAzLjItMTAzLjItMTAzLjJ6TTEwMi40IDI2My43Yy00OS45IDQ5LjktODMuMyAxMTQtOTUuNSAxODMuNUwuNCA0ODMuOEMtMSA0OTEuNiAxLjUgNDk5LjQgNyA1MDVzMTMuNCA4IDIxLjEgNi43bDM2LjctNi41YzY5LjUtMTIuMyAxMzMuNi00NS42IDE4My41LTk1LjVMMjk2IDM2MS45IDE1MC4xIDIxNiAxMDIuNCAyNjMuN3oiXX0sYVd0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNsaXBib2FyZCIsaWNvbjpbMzg0LDUxMixbMTI4MjAzXSwiZjMyOCIsIk0zMjAgMzJsLTguNiAwQzMwMC40IDEyLjkgMjc5LjcgMCAyNTYgMEwxMjggMEMxMDQuMyAwIDgzLjYgMTIuOSA3Mi42IDMyTDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjU2IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zNTJjMC0zNS4zLTI4LjctNjQtNjQtNjR6TTEzNiAxMTJjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsMTEyIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTExMiAweiJdfSxzV3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGxhY2Utb2Ytd29yc2hpcCIsaWNvbjpbNTEyLDUxMixbXSwiZjY3ZiIsIk0xNjAgNzlsMCA4MS00NC44IDMzLjZDMTAzLjEgMjAyLjcgOTYgMjE2LjkgOTYgMjMybDAgNDAtNjAuNiAzMC4zQzEzLjcgMzEzLjIgMCAzMzUuMyAwIDM1OS42TDAgNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0IDc0LjcgMCA4NS40IDAgMzIwIDBsNjQgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTg4LjRjMC0yNC4yLTEzLjctNDYuNC0zNS40LTU3LjJMNDE2IDI3MiA0MTYgMjMyYzAtMTUuMS03LjEtMjkuMy0xOS4yLTM4LjRMMzUyIDE2MCAzNTIgNzljMC05LjUtNC4yLTE4LjUtMTEuNS0yNC42TDI3MS40LTMuMmMtOC45LTcuNC0yMS44LTcuNC0zMC43IDBMMTcxLjUgNTQuNEMxNjQuMiA2MC41IDE2MCA2OS41IDE2MCA3OXptOTYgMjQxYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgODAtMTI4IDAgMC04MGMwLTM1LjMgMjguNy02NCA2NC02NHoiXX0saVd0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNhbm5hYmlzIixpY29uOls1MTIsNTEyLFtdLCJmNTVmIiwiTTI1NiAwYzUuMyAwIDEwLjMgMi43IDEzLjMgNy4xIDE1LjggMjMuNSAzNi43IDYzLjcgNDkuMiAxMDkgNy4zIDI2LjQgMTEuOCA1NS4zIDEwLjMgODQgMTEuNi04LjkgMjMuNy0xNi43IDM1LjktMjMuNyA0MS0yMy4zIDg0LjQtMzYuOSAxMTIuMi00Mi41IDUuMi0xIDEwLjcgLjYgMTQuNCA0LjRzNS40IDkuMiA0LjQgMTQuNWMtNS42IDI3LjctMTkuMyA3MC45LTQyLjcgMTExLjctOS4xIDE1LjktMTkuOSAzMS43LTMyLjUgNDYuMyAyNy45IDYuNiA1Mi41IDE3LjIgNjcuMyAyNS40IDUuMSAyLjggOC4yIDguMiA4LjIgMTRzLTMuMiAxMS4yLTguMiAxNGMtMTUuMiA4LjQtNDAuOSAxOS41LTY5LjggMjYuMS0yMC4yIDQuNi00Mi45IDcuMi02NS4yIDQuNmw4LjMgMzMuMmMxLjUgNi4xLS42IDEyLjUtNS41IDE2LjRzLTExLjYgNC42LTE3LjIgMS44TDI4MCA0MTcuMiAyODAgNDg4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtNzAuOC01OC41IDI5LjFjLTUuNiAyLjgtMTIuMyAyLjEtMTcuMi0xLjhzLTctMTAuMy01LjUtMTYuNGw4LjMtMzMuMmMtMjIuMiAyLjYtNDUgMC02NS4yLTQuNi0yOC45LTYuNi01NC41LTE3LjYtNjkuOC0yNi4xLTUuMS0yLjgtOC4yLTguMi04LjItMTRzMy4yLTExLjIgOC4yLTE0bDYuMi0zLjNjMTUtNy42IDM2LjgtMTYuNCA2MS4xLTIyLjItMTIuNS0xNC41LTIzLjMtMzAuNC0zMi40LTQ2LjItMjMuNC00MC44LTM3LjEtODQtNDIuNy0xMTEuNy0xLjEtNS4yIC42LTEwLjcgNC40LTE0LjVzOS4yLTUuNCAxNC40LTQuNGMyNy45IDUuNSA3MS4yIDE5LjIgMTEyLjIgNDIuNSAxMi4yIDYuOSAyNC4zIDE0LjggMzUuOCAyMy43LTEuNC0yOC43IDMuMS01Ny42IDEwLjMtODQgMTIuNS00NS4zIDMzLjQtODUuNSA0OS4yLTEwOWwxLjItMS42QzI0Ni45IDIgMjUxLjMgMCAyNTYgMHoiXX0scld0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBlb3BsZS1yb29mIixpY29uOls1NzYsNTEyLFtdLCJlNTM3IiwiTTMwMi4zLTEyLjZjLTktNC41LTE5LjYtNC41LTI4LjYgMGwtMjU2IDEyOEMxLjkgMTIzLjMtNC41IDE0Mi41IDMuNCAxNTguM3MyNy4xIDIyLjIgNDIuOSAxNC4zTDI4OCA1MS44IDUyOS43IDE3Mi42YzE1LjggNy45IDM1IDEuNSA0Mi45LTE0LjNzMS41LTM1LTE0LjMtNDIuOWwtMjU2LTEyOHpNMjg4IDI3MmE1NiA1NiAwIDEgMCAwLTExMiA1NiA1NiAwIDEgMCAwIDExMnptMCA0OGMtNTMgMC05NiA0My05NiA5NmwwIDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMybDEyOCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMzJjMC01My00My05Ni05Ni05NnpNMTYwIDI1NmE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwem0zNTIgMGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek0xMTIgMzM2Yy00NC4yIDAtODAgMzUuOC04MCA4MGwwIDMzLjFjMCAxNyAxMy44IDMwLjkgMzAuOSAzMC45bDg3LjggMGMtNC4zLTkuOC02LjctMjAuNi02LjctMzJsMC00OGMwLTE4LjQgMy41LTM2IDkuOC01Mi4yLTEyLjItNy41LTI2LjUtMTEuOC00MS44LTExLjh6TTQyNS40IDQ4MGw4Ny44IDBjMTcgMCAzMC45LTEzLjggMzAuOS0zMC45bDAtMzMuMWMwLTQ0LjItMzUuOC04MC04MC04MC0xNS4zIDAtMjkuNiA0LjMtNDEuOCAxMS44IDYuMyAxNi4yIDkuOCAzMy44IDkuOCA1Mi4ybDAgNDhjMCAxMS40LTIuNCAyMi4yLTYuNyAzMnoiXX0sb1d0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImRpc2Vhc2UiLGljb246WzUxMiw1MTIsW10sImY3ZmEiLCJNMjM2LjUgMjkuNEwyMjQgNDhjLTIwIDMwLTUzLjYgNDgtODkuNyA0OEw2OCA5NmMtMzcuNSAwLTY3LjkgMzAuNC02Ny45IDY3LjkgMCAxOCA3LjIgMzUuMiAxOS45IDQ3LjlsMjcgMjdjMTEgMTEgMTcuMiAyNS45IDE3LjIgNDEuNSAwIDE1LjgtNi40IDMwLjktMTcuNyA0MkwzMy40IDMzNS4xYy0xMS4xIDEwLjgtMTcuMyAyNS43LTE3LjMgNDEuMiAwIDM2LjggMzQuMSA2NC4yIDcwLjEgNTYuMmw2Mi4zLTEzLjhjNy43LTEuNyAxNS43LTIuNiAyMy42LTIuNiAzMi44IDAgNjQuMiAxNC42IDg1LjIgMzkuOGwzMC41IDM2LjZjMTAuNCAxMi40IDI1LjcgMTkuNiA0MS45IDE5LjYgMzAuMSAwIDU0LjUtMjQuNCA1NC41LTU0LjVsMC01MS4yYzAtNDEuNCAyNS40LTc4LjUgNjQtOTMuNWwyMi4yLTguNmMyNS4yLTkuOCA0MS44LTM0LjEgNDEuOC02MS4xIDAtMjYuNC0xNS45LTUwLjMtNDAuMy02MC41TDQyOSAxNjQuOGMtMzMuMi0xMy45LTU3LjYtNDMtNjUuNS03OC4xbC03LjktMzUuMmMtNi44LTMwLjEtMzMuNS01MS41LTY0LjMtNTEuNS0yMiAwLTQyLjYgMTEtNTQuOCAyOS40ek0xNjAgMTkyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptOTYgMGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0zMiA5NmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6Il19LHpiZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJib29rLWJpYmxlIixpY29uOls0NDgsNTEyLFsiYmlibGUiXSwiZjY0NyIsIk05NiA1MTJjLTUzIDAtOTYtNDMtOTYtOTZMMCA5NkMwIDQzIDQzIDAgOTYgMEw0MDAgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDI4OGMwIDIwLjktMTMuNCAzOC43LTMyIDQ1LjNsMCA2Ni43YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDk2IDUxMnptMC0xMjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMjU2IDAgMC02NC0yNTYgMHpNMTkyIDgwbDAgNDgtNDggMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDQ4IDAgMCAxMTJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMTEyIDQ4IDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC00OCAwIDAtNDhjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwYy04LjggMC0xNiA3LjItMTYgMTZ6Il19LG5XdD16YmUsbFd0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNoZXNzLWJvYXJkIixpY29uOls0NDgsNTEyLFtdLCJmNDNjIiwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6bTY0IDY0bDAgNjQgNjQgMCAwLTY0IDY0IDAgMCA2NCA2NCAwIDAtNjQgNjQgMCAwIDY0LTY0IDAgMCA2NCA2NCAwIDAgNjQtNjQgMCAwIDY0IDY0IDAgMCA2NC02NCAwIDAtNjQtNjQgMCAwIDY0LTY0IDAgMC02NC02NCAwIDAgNjQtNjQgMCAwLTY0IDY0IDAgMC02NC02NCAwIDAtNjQgNjQgMCAwLTY0LTY0IDAgMC02NCA2NCAwem02NCAxMjhsNjQgMCAwLTY0LTY0IDAgMCA2NHptMCA2NGwwLTY0LTY0IDAgMCA2NCA2NCAwem02NCAwbC02NCAwIDAgNjQgNjQgMCAwLTY0em0wIDBsNjQgMCAwLTY0LTY0IDAgMCA2NHoiXX0sY1d0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im1hcnMiLGljb246WzUxMiw1MTIsWzk3OTRdLCJmMjIyIiwiTTMyMCAzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMkw0ODAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDEyOGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTUwLjctOTUgOTVjMTkuNSAyOC40IDMxIDYyLjcgMzEgOTkuOCAwIDk3LjItNzguOCAxNzYtMTc2IDE3NlMzMiA0MDEuMiAzMiAzMDQgMTEwLjggMTI4IDIwOCAxMjhjMzcgMCA3MS40IDExLjQgOTkuOCAzMWw5NS05NS01MC43IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek0yMDggNDE2YTExMiAxMTIgMCAxIDAgMC0yMjQgMTEyIDExMiAwIDEgMCAwIDIyNHoiXX0sZFd0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImxhcHRvcCIsaWNvbjpbNjQwLDUxMixbMTI4MTg3XSwiZjEwOSIsIk0xMjggMzJDOTIuNyAzMiA2NCA2MC43IDY0IDk2bDAgMjQwIDY0IDAgMC0yNDAgMzg0IDAgMCAyNDAgNjQgMCAwLTI0MGMwLTM1LjMtMjguNy02NC02NC02NEwxMjggMzJ6TTE5LjIgMzg0QzguNiAzODQgMCAzOTIuNiAwIDQwMy4yIDAgNDQ1LjYgMzQuNCA0ODAgNzYuOCA0ODBsNDg2LjQgMGM0Mi40IDAgNzYuOC0zNC40IDc2LjgtNzYuOCAwLTEwLjYtOC42LTE5LjItMTkuMi0xOS4yTDE5LjIgMzg0eiJdfSxDYmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidXNlci14bWFyayIsaWNvbjpbNTc2LDUxMixbInVzZXItdGltZXMiXSwiZjIzNSIsIk0yNTQuMSAzMDRjOTguNSAwIDE3OC4zIDc5LjggMTc4LjMgMTc4LjMgMCAxNi40LTEzLjMgMjkuNy0yOS43IDI5LjdMNDYuMSA1MTJjLTE2LjQgMC0yOS43LTEzLjMtMjkuNy0yOS43IDAtOTguNSA3OS44LTE3OC4zIDE3OC4zLTE3OC4zbDU5LjQgMHpNNTMwLjMgMTA4LjFjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC0zMy45IDMzLjkgMzMuOSAzMy45YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTMzLjktMzMuOS0zMy45IDMzLjljLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsMzMuOS0zMy45LTMzLjktMzMuOWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDMzLjkgMzMuOSAzMy45LTMzLjl6TTIyNC40IDI0OGExMjAgMTIwIDAgMSAxIDAtMjQwIDEyMCAxMjAgMCAxIDEgMCAyNDB6Il19LHVXdD1DYmUscFd0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZsYWctdXNhIixpY29uOls0NDgsNTEyLFtdLCJmNzRkIiwiTTMyIDBDNDkuNyAwIDY0IDE0LjMgNjQgMzJsMCAxNiA2OS0xNy4yYzM4LjEtOS41IDc4LjMtNS4xIDExMy41IDEyLjUgNDYuMyAyMy4yIDEwMC44IDIzLjIgMTQ3LjEgMGw5LjYtNC44QzQyMy44IDI4LjEgNDQ4IDQzLjEgNDQ4IDY2LjFsMCAzNi4xLTQ0LjcgMTYuMmMtNDIuOCAxNS42LTkwIDEzLjktMTMxLjYtNC42bC0xNi4xLTcuMmMtMjAuMy05LTQxLjgtMTQuNy02My42LTE2LjlsMCAzMi4yYzE3LjQgMi4xIDM0LjQgNi43IDUwLjYgMTMuOWwxNi4xIDcuMmM0OS4yIDIxLjkgMTA1IDIzLjggMTU1LjYgNS40bDMzLjctMTIuMyAwIDYyLTQ0LjcgMTYuMmMtNDIuOCAxNS42LTkwIDEzLjktMTMxLjYtNC42bC0xNi4xLTcuMmMtNDAuMi0xNy45LTg1LTIyLjUtMTI4LjEtMTMuM2wtNjMuNSAxMy42IDAgMzIuNyA3MC4yLTE1LjFjMzYuNC03LjggNzQuMy0zLjkgMTA4LjQgMTEuM2wxNi4xIDcuMmM0OS4yIDIxLjkgMTA1IDIzLjggMTU1LjYgNS40bDMzLjctMTIuMyAwIDYxLjktNDQuNyAxNi4yYy00Mi44IDE1LjYtOTAgMTMuOS0xMzEuNi00LjZsLTE2LjEtNy4yYy00MC4yLTE3LjktODUtMjIuNS0xMjguMS0xMy4zbC02My41IDEzLjYgMCAzMi43IDcwLjItMTUuMWMzNi40LTcuOCA3NC4zLTMuOSAxMDguNCAxMS4zbDE2LjEgNy4yYzQ5LjIgMjEuOSAxMDUgMjMuOCAxNTUuNiA1LjRsMzMuNy0xMi4zIDAgMzMuNWMwIDEzLjMtOC4zIDI1LjMtMjAuOCAzMGwtMzQuNyAxM2MtNDYuMiAxNy4zLTk3LjYgMTQuNi0xNDEuNy03LjQtMzcuOS0xOS04MS40LTIzLjctMTIyLjUtMTMuNEw2NCA0MDAgNjQgNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMyUzAgNDk3LjcgMCA0ODBMMCAzMkMwIDE0LjMgMTQuMyAwIDMyIDB6bTgwIDk2YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6bTMyIDBhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyem0tMzIgNDhhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptMzIgMGExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6Il19LGhXdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoYW5kLW1pZGRsZS1maW5nZXIiLGljb246WzQ0OCw1MTIsWzEyODQwNV0sImY4MDYiLCJNMjMyIDBjLTIyLjEgMC00MCAxNy45LTQwIDQwbDAgMTY0LjJjLTguNS03LjYtMTkuNy0xMi4yLTMyLTEyLjItMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCA4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTU1LjdjLTIgMS40LTMuOSAzLTUuOCA0LjVMNTUgMjg0LjhDNDAuNCAyOTcgMzIgMzE1IDMyIDMzNEwzMiAzNzJjMCAzOCAxNi45IDc0IDQ2LjEgOTguM2w1LjQgNC41YzI4LjggMjQgNjUgMzcuMSAxMDIuNCAzNy4xTDMwNCA1MTJjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhsMC05NmMwLTI2LjUtMjEuNS00OC00OC00OC0xMi40IDAtMjMuNiA0LjctMzIuMSAxMi4zLTEuOS0yNC44LTIyLjYtNDQuMy00Ny45LTQ0LjMtMTIuMyAwLTIzLjUgNC42LTMyIDEyLjJMMjcyIDQwYzAtMjIuMS0xNy45LTQwLTQwLTQweiJdfSxmV3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibW9ydGFyLXBlc3RsZSIsaWNvbjpbNTEyLDUxMixbXSwiZjVhNyIsIk01MDQuMyAxMS4xQzQ5My4zLTEuNiA0NzQuNS0zLjcgNDYxIDYuMkwyNTIuMyAxNjAgMzk3LjMgMTYwIDUwMi42IDU0LjZjMTEuOC0xMS44IDEyLjYtMzAuOCAxLjYtNDMuNXpNMzIgMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyYzAgODIuNSA0My40IDE0Ny43IDEyMy45IDE3Ni4yLTExLjEgMTMuOS0xOS40IDMwLjMtMjMuOSA0OC4xLTQuNCAxNy4xIDEwLjQgMzEuNyAyOC4xIDMxLjdsMTkyIDBjMTcuNyAwIDMyLjQtMTQuNiAyOC4xLTMxLjctNC41LTE3LjgtMTIuOC0zNC4xLTIzLjktNDguMSA4MC41LTI4LjYgMTIzLjktOTMuNyAxMjMuOS0xNzYuMiAxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwzMiAxOTJ6Il19LG1XdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoZWFkLXNpZGUtY291Z2giLGljb246WzUxMiw1MTIsW10sImUwNjEiLCJNOTYgNTEybDY0IDBjNTMgMCA5Ni00MyA5Ni05NmwwLTgwYzAtOC44IDcuMi0xNiAxNi0xNmwxIDBjMjYgMCA0Ny0yMSA0Ny00NyAwLTExLTMuOS0yMS42LTEwLjktMzAuMUwyNzMuMyAyMDBDMjcxLjQgMTk3LjYgMjcwLjEgMTk0LjcgMjY5LjcgMTkxLjcgMjU0IDgzLjMgMTYwLjcgMCA0OCAwIDQwLjQgMCAzMi45IC40IDI1LjQgMS4xIDEwLjUgMi42IDAgMTUuOSAwIDMwLjlMMCA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJsNjQgMHptMTYtMzIwYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTYzLjEgMjM3LjJsLTQxLjUtMy41Yy0xMi4yLTEtMjEuNi0xMS4yLTIxLjYtMjMuNCAwLTEwLjggNy4zLTIwLjIgMTcuOC0yMi44bDQwLjQtMTAuMWMxOS4yLTQuOCAzNy44IDkuNyAzNy44IDI5LjUgMCAxNy44LTE1LjIgMzEuOC0zMi45IDMwLjN6TTQ4MCAzMTJhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em0tNDAgMjRhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHptLTY0IDQ4YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6bTEyOCAwYTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6TTQ4MCA1MDRhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em0tNDAtNzJhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHoiXX0sZ1d0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBsYW5lLWxvY2siLGljb246WzY0MCw1MTIsW10sImU1NTgiLCJNMjMyIDI0YzAtMzAuOSAyNS4xLTU2IDU2LTU2czU2IDI1LjEgNTYgNTZsMCAxMjcuMyA4Mi4xIDc1LjJDNDA5LjcgMjQ4LjEgNDAwIDI3NC45IDQwMCAzMDRsMCAyNC40Yy03LjMgNi42LTEzLjYgMTQuMi0xOC43IDIyLjdsLTM3LjMtMTIuNCAwIDk5LjcgMjQgMTkuMiAwIDM4LjNjMCAxMy41IDIuOCAyNi40IDcuOCAzOC4xTDI4OCA1MTIgMTc5LjkgNTM5Yy0xMC4xIDIuNS0xOS45LTUuMS0xOS45LTE1LjVsMC0xOS44YzAtNC45IDIuMi05LjUgNi0xMi41bDY2LTUyLjggMC05OS43LTE2Mi45IDU0LjNDNTguNyAzOTYuNCA0OCAzODguNyA0OCAzNzcuOGwwLTQzLjdjMC05IDMuOC0xNy41IDEwLjQtMjMuNkwyMzIgMTUxLjMgMjMyIDI0ek01NjAgMzA0LjFjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCA0Ny45IDY0IDAgMC00Ny45ek00MTYgNDAwYzAtMjAuOSAxMy40LTM4LjcgMzItNDUuM2wwLTUwLjZjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGwwIDUwLjZjMTguNiA2LjYgMzIgMjQuNCAzMiA0NS4zbDAgOTZjMCAyNi41LTIxLjUgNDgtNDggNDhsLTEyOCAwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTk2eiJdfSxUYmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYmF0dGVyeS10aHJlZS1xdWFydGVycyIsaWNvbjpbNjQwLDUxMixbImJhdHRlcnktNCJdLCJmMjQxIiwiTTUyOCAxMjhjOC44IDAgMTYgNy4yIDE2IDE2bDAgMjI0YzAgOC44LTcuMiAxNi0xNiAxNmwtNDE2IDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTIyNGMwLTguOCA3LjItMTYgMTYtMTZsNDE2IDB6TTExMiA2NGMtNDQuMiAwLTgwIDM1LjgtODAgODBsMCAyMjRjMCA0NC4yIDM1LjggODAgODAgODBsNDE2IDBjNDQuMiAwIDgwLTM1LjggODAtODBsMC00OGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTY0YzAtMTcuNy0xNC4zLTMyLTMyLTMybDAtNDhjMC00NC4yLTM1LjgtODAtODAtODBMMTEyIDY0em01NiAxMTJjLTEzLjMgMC0yNCAxMC43LTI0IDI0bDAgMTEyYzAgMTMuMyAxMC43IDI0IDI0IDI0bDIyNCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0bDAtMTEyYzAtMTMuMy0xMC43LTI0LTI0LTI0bC0yMjQgMHoiXX0sYld0PVRiZSx2V3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZnJhbmMtc2lnbiIsaWNvbjpbMzIwLDUxMixbXSwiZTE4ZiIsIk04MCAzMkM2Mi4zIDMyIDQ4IDQ2LjMgNDggNjRsMCAyNTYtMjQgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwyNCAwIDAgODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTgwIDg4IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTg4IDAgMC02NCAxNDQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMTQ0IDAgMC05NiAxNzYgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkw4MCAzMnoiXX0sJGJlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZpbHRlci1jaXJjbGUtZG9sbGFyIixpY29uOls1NzYsNTEyLFsiZnVubmVsLWRvbGxhciJdLCJmNjYyIiwiTTMyIDY0QzE5LjEgNjQgNy40IDcxLjggMi40IDgzLjhTLjIgMTA5LjUgOS40IDExOC42TDE5MiAzMDEuMyAxOTIgNDE2YzAgOC41IDMuNCAxNi42IDkuNCAyMi42bDY0IDY0YzIuNSAyLjUgNS4zIDQuNSA4LjMgNi0yMS4yLTMwLjktMzMuNi02OC4zLTMzLjYtMTA4LjYgMC05OS40IDc1LjUtMTgxLjEgMTcyLjMtMTkxbDkwLjQtOTAuNGM5LjItOS4yIDExLjktMjIuOSA2LjktMzQuOVM0OTIuOSA2NCA0ODAgNjRMMzIgNjR6TTU3NiA0MDBhMTQ0IDE0NCAwIDEgMCAtMjg4IDAgMTQ0IDE0NCAwIDEgMCAyODggMHpNNDE2IDMyMGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2bDAgOCAxNiAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC00NS44IDBjLTUuNiAwLTEwLjIgNC42LTEwLjIgMTAuMiAwIDQuOSAzLjUgOS4xIDguMyAxMGw0NSA4LjJjMjAgMy42IDM0LjYgMjEuMSAzNC42IDQxLjUgMCAyMy4zLTE4LjkgNDIuMi00Mi4yIDQyLjJsLTUuOCAwIDAgOGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTgtMTYgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmw1My44IDBjNS42IDAgMTAuMi00LjYgMTAuMi0xMC4yIDAtNC45LTMuNS05LjEtOC4zLTEwbC00NS04LjJjLTIwLTMuNi0zNC42LTIxLjEtMzQuNi00MS41IDAtMjIuNiAxNy43LTQxIDQwLTQyLjFsMC04LjF6Il19LHhXdD0kYmUseVd0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNoZWVzZSIsaWNvbjpbNTEyLDUxMixbXSwiZjdlZiIsIk01MTIgMjQwLjJsMCAxNS44LTUxMiAwYzAtMjAgMTAtMzguNyAyNi42LTQ5LjhMMjc0LjkgNDAuN2M4LjYtNS43IDE4LjYtOC43IDI4LjktOC43IDExNSAwIDIwOC4yIDkzLjIgMjA4LjIgMjA4LjJ6bTAgNjMuOGwwIDExMmMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtMTEyIDUxMiAweiJdfSxEYmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2lyY2xlLWgiLGljb246WzUxMiw1MTIsWzk0MDUsImhvc3BpdGFsLXN5bWJvbCJdLCJmNDdlIiwiTTI1NiA1MTJhMjU2IDI1NiAwIDEgMCAwLTUxMiAyNTYgMjU2IDAgMSAwIDAgNTEyem05Ni0zNDRsMCAxNzZjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC02NC05NiAwIDAgNjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC0xNzZjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDY0IDk2IDAgMC02NGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0eiJdfSx3V3Q9RGJlLGtXdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzY2hvb2wiLGljb246WzU3Niw1MTIsWzEyNzk3OV0sImY1NDkiLCJNMCAxOTJjMC0zNS4zIDI4LjctNjQgNjQtNjRsNjQgMCAxMjcuOS0xMTUuMWMxOC4zLTE2LjQgNDYtMTYuNCA2NC4yIDBMNDQ4IDEyOCA1MTIgMTI4YzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjU2YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCAxOTJ6TTIyNCAzNzZsMCA4OCAxMjggMCAwLTg4YzAtMjIuMS0xNy45LTQwLTQwLTQwbC00OCAwYy0yMi4xIDAtNDAgMTcuOS00MCA0MHptLTExMiA4YzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDB6bTE2LTE0NGwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2ek00OTYgMzg0YzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDB6bTE2LTE0NGwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2ek0yODggMjU2YTY0IDY0IDAgMSAwIDAtMTI4IDY0IDY0IDAgMSAwIDAgMTI4eiJdfSxTV3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZGljZS1maXZlIixpY29uOls0NDgsNTEyLFs5ODYwXSwiZjUyMyIsIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyem02NCA5NmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6TTk2IDM1MmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwek0yMjQgMjI0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptNjQtNjRhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMzIgMTYwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHoiXX0sX1d0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRvcm5hZG8iLGljb246WzQ0OCw1MTIsWzEyNzc4Nl0sImY3NmYiLCJNMCAzMkwwIDQ1LjZDMCA2Mi43IDEuNyA3OS42IDUgOTZsMzUyLjggMGMzLjItNi45IDcuNS0xMy4zIDEzLTE4LjhsMzguNi0zOC42YzQuMi00LjIgNi42LTEwIDYuNi0xNiAwLTEyLjUtMTAuMS0yMi42LTIyLjYtMjIuNkwzMiAwQzE0LjMgMCAwIDE0LjMgMCAzMnpNMzU1LjcgMTQ0bC0zMzYgMGMxMi40IDI5LjcgMzAuMiA1Ni44IDUyLjcgODBsMzM5LjYgMC00Ny4yLTYyLjljLTMuOS01LjItNy0xMS05LjItMTcuMXpNMjQyLjYgMzM0LjdjOC4yIDQuOCAxNS44IDEwLjcgMjIuNSAxNy4zTDQ0NSAzNTJjMi05LjggMy0xOS45IDMtMzAuMSAwLTE3LjEtMi45LTM0LTguNi00OS45TDEzNiAyNzIgMjQyLjYgMzM0Ljd6TTI5NC4zIDQwMGM1LjMgMTcgNi41IDM1LjIgMy42IDUzbC01LjkgMzUuN2MtMiAxMi4yIDcuNCAyMy40IDE5LjggMjMuNCA1LjMgMCAxMC40LTIuMSAxNC4yLTUuOWw3OC4yLTc4LjJjOC41LTguNSAxNS44LTE3LjggMjEuOS0yNy45bC0xMzEuOCAweiJdfSxMYmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiamV0LWZpZ2h0ZXIiLGljb246WzU3Niw1MTIsWyJmaWdodGVyLWpldCJdLCJmMGZiIiwiTTQ5Ni4yIDIwNi44Yy0xMC43LTQuNS0yMi4yLTYuOC0zMy44LTYuOEwzNjIgMjAwIDI0OCA0OCAyOTYgNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRTMzA5LjMgMCAyOTYgMEwxNTIgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw4IDAgMCAxNTItNTQuNCAwLTUyLjgtNjZjLTMtMy44LTcuNi02LTEyLjUtNkwxNiAxMjhjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDg4IDQwIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTQwIDAgMCA4OGMwIDguOCA3LjIgMTYgMTYgMTZsMjQuMyAwYzQuOSAwIDkuNS0yLjIgMTIuNS02bDUyLjgtNjYgNTQuNCAwIDAgMTUyLTggMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwxNDQgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtNDggMCAxMTQtMTUyIDEwMC40IDBjMTEuNiAwIDIzLjEtMi4zIDMzLjgtNi44bDY1LTI3LjFjOC45LTMuNyAxNC44LTEyLjUgMTQuOC0yMi4ycy01LjgtMTguNC0xNC44LTIyLjJsLTY1LTI3LjF6Il19LE1XdD1MYmUseld0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRodW1icy1kb3duIixpY29uOls1MTIsNTEyLFsxMjgwNzgsNjE1NzZdLCJmMTY1IiwiTTM4NCAzMmMyNi41IDAgNDggMjEuNSA0OCA0OCAwIDYuMy0xLjMgMTIuMi0zLjQgMTcuNyAyMC40IDUuNSAzNS40IDI0LjEgMzUuNCA0Ni4zIDAgOS4xLTIuNiAxNy42LTcgMjQuOSAyMi4yIDQuMiAzOSAyMy43IDM5IDQ3LjEgMCAxOS43LTExLjkgMzYuNi0yOC45IDQ0IDE3IDcuNCAyOC45IDI0LjMgMjguOSA0NCAwIDI2LjUtMjEuNSA0OC00OCA0OGwtMTYwIDAgMjguMiA3MC40YzIuNSA2LjMgMy44IDEzLjEgMy44IDE5LjlsMCA0LjJjMCAyNy4zLTIyLjEgNDkuNC00OS40IDQ5LjQtMTguNyAwLTM1LjgtMTAuNi00NC4yLTI3LjNMMTcwLjEgMzU2LjNjLTYuNy0xMy4zLTEwLjEtMjgtMTAuMS00Mi45bDAtMTg2LjZjMC0xOS40IDguOS0zNy44IDI0LTUwbDEyLjItOS43QzIyNC42IDQ0LjQgMjU5LjggMzIgMjk2LjEgMzJMMzg0IDMyek04MCA5NmMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDI1NmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtNDggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJMMCAxMjhjMC0xNy43IDE0LjMtMzIgMzItMzJsNDggMHoiXX0sQ1d0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJyb29tIixpY29uOls1NzYsNTEyLFsxMjk1MjldLCJmNTFhIiwiTTU2Ni42IDU0LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTE5MiAxOTItMzQuNy0zNC43Yy00LjItNC4yLTEwLTYuNi0xNi02LjYtMTIuNSAwLTIyLjYgMTAuMS0yMi42IDIyLjZsMCAyOS4xIDEwOC4zIDEwOC4zIDI5LjEgMGMxMi41IDAgMjIuNi0xMC4xIDIyLjYtMjIuNiAwLTYtMi40LTExLjgtNi42LTE2bC0zNC43LTM0LjcgMTkyLTE5MnpNMzQxLjEgMzUzLjRMMjIyLjYgMjM0LjljLTQyLjctMy43LTg1LjIgMTEuNy0xMTUuOCA0Mi4zbC04IDhjLTIyLjMgMjIuMy0zNC44IDUyLjUtMzQuOCA4NCAwIDYuOCA3LjEgMTEuMiAxMy4yIDguMmw1MS4xLTI1LjVjNS0yLjUgOS41IDQuMSA1LjQgNy45TDcuMyA0NzMuNEMyLjcgNDc3LjYgMCA0ODMuNiAwIDQ4OS45IDAgNTAyLjEgOS45IDUxMiAyMi4xIDUxMmwxNzMuMyAwYzM4LjggMCA3NS45LTE1LjQgMTAzLjQtNDIuOCAzMC42LTMwLjYgNDUuOS03My4xIDQyLjMtMTE1Ljh6Il19LEViZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmaWxlLWltcG9ydCIsaWNvbjpbMzg0LDUxMixbImFycm93LXJpZ2h0LXRvLWZpbGUiXSwiZjU2ZiIsIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NGwwIDI0MCAxODIuMSAwLTMxLTMxYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsNzIgNzJjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTcyIDcyYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDMxLTMxLTE4Mi4xIDAgMCA5NmMwIDM1LjMgMjguNyA2NCA2NCA2NGwyNTYgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI3Ny41YzAtMTctNi43LTMzLjMtMTguNy00NS4zTDI1OC43IDE4LjdDMjQ2LjcgNi43IDIzMC41IDAgMjEzLjUgMEw2NCAwek0zMjUuNSAxNzZMMjMyIDE3NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRMMjA4IDU4LjUgMzI1LjUgMTc2eiJdfSxUV3Q9RWJlLFBiZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ1dGVuc2lscyIsaWNvbjpbNTEyLDUxMixbMTI3ODYwLDYxNjg1LCJjdXRsZXJ5Il0sImYyZTciLCJNNjMuOSAxNC40QzYzLjEgNi4yIDU2LjIgMCA0OCAwcy0xNS4xIDYuMi0xNiAxNC4zTDE3LjkgMTQ5LjdjLTEuMyA2LTEuOSAxMi4xLTEuOSAxOC4yIDAgNDUuOSAzNS4xIDgzLjYgODAgODcuN0w5NiA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTIyNC40YzQ0LjktNC4xIDgwLTQxLjggODAtODcuNyAwLTYuMS0uNi0xMi4yLTEuOS0xOC4yTDIyMy45IDE0LjNDMjIzLjEgNi4yIDIxNi4yIDAgMjA4IDBzLTE1LjEgNi4yLTE1LjkgMTQuNEwxNzguNSAxNDkuOWMtLjYgNS43LTUuNCAxMC4xLTExLjEgMTAuMS01LjggMC0xMC42LTQuNC0xMS4yLTEwLjJMMTQzLjkgMTQuNkMxNDMuMiA2LjMgMTM2LjMgMCAxMjggMHMtMTUuMiA2LjMtMTUuOSAxNC42TDk5LjggMTQ5LjhjLS41IDUuOC01LjQgMTAuMi0xMS4yIDEwLjItNS44IDAtMTAuNi00LjQtMTEuMS0xMC4xTDYzLjkgMTQuNHpNNDQ4IDBDNDMyIDAgMzIwIDMyIDMyMCAxNzZsMCAxMTJjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIgMCAwIDEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtNDQ4YzAtMTcuNy0xNC4zLTMyLTMyLTMyeiJdfSwkV3Q9UGJlLERXdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJpZC1iYWRnZSIsaWNvbjpbMzg0LDUxMixbXSwiZjJjMSIsIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwyNTYgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTM4NGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAwem05NiAzNTJsNjQgMGM0NC4yIDAgODAgMzUuOCA4MCA4MCAwIDguOC03LjIgMTYtMTYgMTZMOTYgNDQ4Yy04LjggMC0xNi03LjItMTYtMTYgMC00NC4yIDM1LjgtODAgODAtODB6bS0yNC05NmE1NiA1NiAwIDEgMSAxMTIgMCA1NiA1NiAwIDEgMSAtMTEyIDB6TTE1MiA2NGw4MCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC04MCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0eiJdfSxMV3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic3BpZGVyIixpY29uOls1MTIsNTEyLFsxMjgzNzVdLCJmNzE3IiwiTTM2OS4zLTMxYzExLjktMy41IDI0LjQgMi43IDI5IDEzLjlsLjggMi4zIDQwIDEzNmMyLjUgOC40IC4xIDE3LjUtNi4xIDIzLjdsLTY0LjEgNjQuMSA3Ni40LTIwLjggMTkuOS01OS44IC45LTIuM2M1LTExLjEgMTcuNy0xNi44IDI5LjUtMTIuOSAxMS44IDMuOSAxOC41IDE2LjEgMTUuOCAyOGwtLjcgMi40LTI0IDcyYy0yLjUgNy42LTguNyAxMy40LTE2LjUgMTUuNmwtOTEuMSAyNC44IDkxLjEgMjQuOGM3LjcgMi4xIDEzLjkgOCAxNi41IDE1LjZsMjQgNzIgLjcgMi40YzIuNyAxMS45LTQuMSAyNC4xLTE1LjggMjgtMTEuOCAzLjktMjQuNS0xLjgtMjkuNS0xMi45bC0uOS0yLjMtMTkuOS01OS44LTc2LjQtMjAuOCA2NC4xIDY0LjFjNi4xIDYuMSA4LjUgMTUuMSA2LjIgMjMuNGwtNDAgMTQ0LS44IDIuM2MtNC40IDExLjMtMTYuOCAxNy43LTI4LjggMTQuNC0xMi0zLjMtMTkuMy0xNS4yLTE3LjItMjcuMmwuNS0yLjQgMzYuMi0xMzAuNS0zNy4yLTM3LjJDMzUxIDQwNiAzMDguNCA0NDggMjU2IDQ0OHMtOTUtNDItOTYtOTQuMWwtMzcgMzcgMzYgMTIyLjMgLjYgMi40YzIuMiAxMS45LTQuOSAyMy45LTE2LjggMjcuNC0xMS45IDMuNS0yNC40LTIuNy0yOS0xMy45bC0uOC0yLjMtNDAtMTM2Yy0yLjUtOC40LS4xLTE3LjUgNi4xLTIzLjhsNjQuMS02NC4xLTc2LjQgMjAuOC0xOS45IDU5LjgtLjkgMi4zYy01IDExLjEtMTcuNyAxNi44LTI5LjUgMTIuOXMtMTguNS0xNi4xLTE1LjgtMjhsLjctMi40IDI0LTcyYzIuNS03LjYgOC43LTEzLjQgMTYuNS0xNS42bDkxLjEtMjQuOC05MS4xLTI0LjhjLTcuNy0yLjEtMTMuOS04LTE2LjUtMTUuNmwtMjQtNzItLjctMi40Yy0yLjctMTEuOSA0LjEtMjQuMSAxNS44LTI4czI0LjUgMS44IDI5LjUgMTIuOWwuOSAyLjMgMTkuOSA1OS44IDc2LjQgMjAuOC02NC4xLTY0LjFjLTYuMi02LjItOC41LTE1LjMtNi4xLTIzLjdsNDAtMTM2IC44LTIuM2M0LjYtMTEuMyAxNy4xLTE3LjQgMjktMTMuOSAxMS45IDMuNSAxOSAxNS41IDE2LjggMjcuNGwtLjYgMi40LTM2IDEyMi4zIDUzIDUzYzEtNDMuMyAzNi40LTc4LjEgNzkuOS03OC4xczc4LjkgMzQuOCA3OS45IDc4LjJsNTMuMS01My4xLTM2LTEyMi4zLS42LTIuNGMtMi4yLTEyIDQuOS0yMy45IDE2LjgtMjcuNHoiXX0sRVd0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im1vYmlsZS1yZXRybyIsaWNvbjpbMzg0LDUxMixbXSwiZTUyNyIsIk0xNiA2NEMxNiAyOC43IDQ0LjcgMCA4MCAwTDMwNCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzg0YzAgMzUuMy0yOC43IDY0LTY0IDY0TDgwIDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMTYgNjR6bTgwIDk2bDAgNjRjMCAxNy43IDE0LjMgMzIgMzIgMzJsMTI4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC02NGMwLTE3LjctMTQuMy0zMi0zMi0zMmwtMTI4IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyem04IDE5MmEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bTI0IDcyYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0IDEwLjcgMjQgMjQgMjQgMjQtMTAuNyAyNC0yNHptNjQtNzJhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em0yNCA3MmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNCAxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjR6bTY0LTcyYTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptMjQgNzJjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjQgMTAuNyAyNCAyNCAyNCAyNC0xMC43IDI0LTI0ek0xNjggNDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsNDggMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtNDggMHoiXX0sSWJlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNpZ25zLXBvc3QiLGljb246WzUxMiw1MTIsWyJtYXAtc2lnbnMiXSwiZjI3NyIsIk0yNTYuNCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDMyLTE2MCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDE2MCAwIDAgNjQtMTUzLjQgMGMtNC4yIDAtOC4zIDEuNy0xMS4zIDQuN2wtNDggNDhjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42bDQ4IDQ4YzMgMyA3LjEgNC43IDExLjMgNC43bDE1My40IDAgMCA5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtOTYgMTYwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC02NGMwLTE3LjctMTQuMy0zMi0zMi0zMmwtMTYwIDAgMC02NCAxNTMuNCAwYzQuMiAwIDguMy0xLjcgMTEuMy00LjdsNDgtNDhjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTQ4LTQ4Yy0zLTMtNy4xLTQuNy0xMS4zLTQuN2wtMTUzLjQgMCAwLTMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyeiJdfSxQV3Q9SWJlLElXdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJncm91cC1hcnJvd3Mtcm90YXRlIixpY29uOls1MTIsNTEyLFtdLCJlNGY2IiwiTTM3LjYgMTIyLjNjLTExLjUgMTguNy0yMC42IDM5LTI3IDYwLjUtNSAxNi45IDQuNiAzNC44IDIxLjUgMzkuOHMzNC44LTQuNiAzOS44LTIxLjVjMTguNC02MS45IDY3LjMtMTEwLjggMTI5LjItMTI5LjIgMTYuOS01IDI2LjYtMjIuOSAyMS41LTM5LjhTMTk5LjggNS42IDE4Mi45IDEwLjZDMTYxLjQgMTcgMTQxLjEgMjYuMSAxMjIuMyAzNy42IDExMi4zIDE1LjQgODkuOSAwIDY0IDAgMjguNyAwIDAgMjguNyAwIDY0IDAgODkuOSAxNS40IDExMi4zIDM3LjYgMTIyLjN6bTQzNi43IDBjMjIuMi0xMCAzNy42LTMyLjQgMzcuNi01OC4zIDAtMzUuMy0yOC43LTY0LTY0LTY0LTI1LjkgMC00OC4zIDE1LjQtNTguMyAzNy42LTE4LjctMTEuNS0zOS0yMC42LTYwLjUtMjctMTYuOS01LTM0LjggNC42LTM5LjggMjEuNXM0LjYgMzQuOCAyMS41IDM5LjhjNjEuOSAxOC40IDExMC44IDY3LjMgMTI5LjIgMTI5LjIgNSAxNi45IDIyLjkgMjYuNiAzOS44IDIxLjVzMjYuNi0yMi45IDIxLjUtMzkuOGMtNi40LTIxLjUtMTUuNS00MS44LTI3LTYwLjV6TTUxMiA0NDhjMC0yNS45LTE1LjQtNDguMy0zNy42LTU4LjMgMTEuNS0xOC43IDIwLjYtMzkgMjctNjAuNSA1LTE2LjktNC42LTM0LjgtMjEuNS0zOS44cy0zNC44IDQuNi0zOS44IDIxLjVjLTE4LjQgNjEuOS02Ny4zIDExMC44LTEyOS4yIDEyOS4yLTE2LjkgNS0yNi42IDIyLjktMjEuNSAzOS44czIyLjkgMjYuNiAzOS44IDIxLjVjMjEuNS02LjQgNDEuOC0xNS41IDYwLjUtMjcgMTAgMjIuMiAzMi40IDM3LjYgNTguMyAzNy42IDM1LjMgMCA2NC0yOC43IDY0LTY0ek0zNy42IDM4OS43Yy0yMi4yIDEwLTM3LjYgMzIuNC0zNy42IDU4LjMgMCAzNS4zIDI4LjcgNjQgNjQgNjQgMjUuOSAwIDQ4LjMtMTUuNCA1OC4zLTM3LjYgMTguNyAxMS41IDM5IDIwLjYgNjAuNSAyNyAxNi45IDUgMzQuOC00LjYgMzkuOC0yMS41cy00LjYtMzQuOC0yMS41LTM5LjhjLTYxLjktMTguNC0xMTAuOC02Ny4zLTEyOS4yLTEyOS4yLTUtMTYuOS0yMi45LTI2LjYtMzkuOC0yMS41UzUuNiAzMTIuMiAxMC42IDMyOS4xYzYuNCAyMS41IDE1LjUgNDEuOCAyNyA2MC41ek0yNTYgMTkyYzE1LjYgMCAzMCA1LjYgNDEuMSAxNC45bC0xNS4zIDE1LjNjLTYuNiA2LjYtMS45IDE3LjggNy40IDE3LjhsNjAuNSAwYzUuNyAwIDEwLjQtNC43IDEwLjQtMTAuNGwwLTYwLjVjMC05LjMtMTEuMi0xMy45LTE3LjgtNy40bC0xMS4yIDExLjJjLTE5LjgtMTcuOS00Ni4yLTI4LjktNzUuMS0yOC45LTQzLjYgMC04MS4zIDI0LjktOTkuOCA2MS4xLTYgMTEuOC0xLjQgMjYuMyAxMC40IDMyLjNzMjYuMyAxLjQgMzIuMy0xMC40YzEwLjYtMjAuOCAzMi4yLTM0LjkgNTctMzQuOXptNTguNiA5My4xYy0xMC42IDIwLjgtMzIuMiAzNC45LTU3IDM0LjktMTUuNyAwLTMwLTUuNi00MS4xLTE0LjlsMTUuMy0xNS4zYzYuNi02LjYgMS45LTE3LjgtNy40LTE3LjhMMTY0IDI3MmMtNS43IDAtMTAuNCA0LjctMTAuNCAxMC40bDAgNjAuNWMwIDkuMyAxMS4yIDEzLjkgMTcuOCA3LjRsMTEuMi0xMS4yYzE5LjggMTcuOSA0Ni4yIDI4LjkgNzUuMSAyOC45IDQzLjYgMCA4MS4zLTI0LjkgOTkuOC02MS4xIDYtMTEuOCAxLjQtMjYuMy0xMC40LTMyLjNzLTI2LjMtMS40LTMyLjMgMTAuNHoiXX0sQVd0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImFycm93cy1zcGxpdC11cC1hbmQtbGVmdCIsaWNvbjpbNTEyLDUxMixbXSwiZTRiYyIsIk0zNDIuNi0yMi42Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtOTYgOTZjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsNDEuNC00MS40IDAgMTk1LjljLTE4LjgtMTAuOS00MC43LTE3LjEtNjQtMTcuMWwtMTE0LjcgMCA0MS40LTQxLjRjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTk2IDk2Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2w5NiA5NmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDEwOS4zIDMyMCAyMjQgMzIwYzM1LjMgMCA2NCAyOC43IDY0IDY0IDAgNzAuNyA1Ny4zIDEyOCAxMjggMTI4bDMyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTMyIDBjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtMzA2LjcgNDEuNCA0MS40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTk2LTk2eiJdfSxOV3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmlsbC1kcmlwIixpY29uOls1NzYsNTEyLFtdLCJmNTc2IiwiTTMwOS43IDcxLjZsLTY0LjQgNjQuNCAzMy40IDMzLjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBsLTMzLjQtMzMuNC05Ni40IDk2LjRjLTIuOSAyLjktNS4xIDYuNS02LjMgMTAuM2wzMjEuNSAwIDUzLjctNTMuN2M0LjktNC45IDcuNi0xMS41IDcuNi0xOC4zcy0yLjctMTMuNS03LjYtMTguM0wzNDYuMyA3MS42QzM0MS41IDY2LjcgMzM0LjkgNjQgMzI4IDY0cy0xMy41IDIuNy0xOC4zIDcuNnpNNTguMyAyMzIuNGw5Ni40LTk2LjQtNDkuNC00OS40Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwTDIwMCA5MC43IDI2NC40IDI2LjNDMjgxLjMgOS41IDMwNC4xIDAgMzI4IDBzNDYuNyA5LjUgNjMuNiAyNi4zTDUxNy43IDE1Mi40QzUzNC41IDE2OS4zIDU0NCAxOTIuMSA1NDQgMjE2cy05LjUgNDYuNy0yNi4zIDYzLjZMMzExLjYgNDg1LjdDMjk0LjcgNTAyLjUgMjcxLjkgNTEyIDI0OCA1MTJzLTQ2LjctOS41LTYzLjYtMjYuM0w1OC4zIDM1OS42QzQxLjUgMzQyLjcgMzIgMzE5LjkgMzIgMjk2czkuNS00Ni43IDI2LjMtNjMuNnpNNTEyIDU0NGMtMzUuMyAwLTY0LTI4LjctNjQtNjQgMC0yNS4yIDMyLjYtNzkuNiA1MS4yLTEwOC43IDYtOS40IDE5LjUtOS40IDI1LjUgMCAxOC43IDI5LjEgNTEuMiA4My41IDUxLjIgMTA4LjcgMCAzNS4zLTI4LjcgNjQtNjQgNjR6Il19LFJXdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzaGllbGQtaGVhcnQiLGljb246WzUxMiw1MTIsW10sImU1NzQiLCJNMjY5LjQgMi45QzI2NS4yIDEgMjYwLjcgMCAyNTYgMHMtOS4yIDEtMTMuNCAyLjlMNTQuMyA4Mi44Yy0yMiA5LjMtMzguNCAzMS0zOC4zIDU3LjIgLjUgOTkuMiA0MS4zIDI4MC43IDIxMy42IDM2My4yIDE2LjcgOCAzNi4xIDggNTIuOCAwIDE3Mi40LTgyLjUgMjEzLjItMjY0IDIxMy42LTM2My4yIC4xLTI2LjItMTYuMy00Ny45LTM4LjMtNTcuMkwyNjkuNCAyLjl6TTI0OS42IDE4My41bDYuNCA4LjUgNi40LTguNWMxMS4xLTE0LjggMjguNS0yMy41IDQ2LjktMjMuNSAzMi40IDAgNTguNyAyNi4zIDU4LjcgNTguN2wwIDUuM2MwIDQ5LjEtNjUuOCA5OC4xLTk2LjUgMTE4LjMtOS41IDYuMi0yMS41IDYuMi0zMC45IDAtMzAuNy0yMC4yLTk2LjUtNjkuMy05Ni41LTExOC4zbDAtNS4zYzAtMzIuNCAyNi4zLTU4LjcgNTguNy01OC43IDE4LjUgMCAzNS45IDguNyA0Ni45IDIzLjV6Il19LEFiZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwZXJzb24tc2tpaW5nLW5vcmRpYyIsaWNvbjpbNTc2LDUxMixbInNraWluZy1ub3JkaWMiXSwiZjdjYSIsIk00MjQuOCAxNmE1NiA1NiAwIDEgMSAwIDExMiA1NiA1NiAwIDEgMSAwLTExMnptOTkuOCAxOTMuN2M3LjYgMTUuMiAxLjkgMzMuNi0xMi42IDQybDAgMTgwLjMtMzIgMCAwLTE2NC4yLTEwLjEgNWMtMjcuNCAxMy43LTYwLjcgNi4xLTc5LjQtMTguMmwtMTkuNi0yNS41LTM5LjUgNjguOCAyNC44IDEyLjRjMjkuNSAxNC43IDQyLjkgNDkuNSAzMS4xIDgwLjJsLTI4LjIgNzMuNCAxNDkuNCAwYzcuOSAwIDE1LjYtMi4zIDIyLjItNi43bDcuOS01LjNjMTEtNy40IDI1LjktNC40IDMzLjMgNi43czQuNCAyNS45LTYuNyAzMy4zbC03LjkgNS4zQzU0MyA1MDYuOSA1MjYgNTEyIDUwOC42IDUxMmwtMTg5LjEgMGMtLjUgMC0xIDAtMS41IDBMMjQgNTEyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDg4IDBjMC04LjIgMy4xLTE2LjQgOS40LTIyLjZsNzQuMS03NC4xIDEwLjItMzUuOWMxMS4zIDE4LjMgMjcuNyAzMy44IDQ4LjQgNDQuMmw0LjggMi40LTEuOSA2LjhjLTMgMTAuNS04LjYgMjAtMTYuMyAyNy43bC01MS41IDUxLjUgMTAxLjMgMCAzNy4xLTk2LjQtNTUuNi0yNy44QzIzMC40IDMxOSAyMTUuMyAyNjcgMjM5LjMgMjI3LjFsMzcuNy02Mi43LTI3LjctNy43Yy05LTIuNS0xOC4xIDMuMi0yMCAxMi4zbC01LjkgMjkuM2MtMy4xIDE1LjYtMTcuMSAyNi4zLTMyLjUgMjUuN2wtMTMwIDIwOC0zNy43IDAgMTQwLjYtMjI1Yy0zLjQtNi4zLTQuNi0xMy44LTMuMS0yMS4zbDUuOS0yOS4zYzkuMS00NS42IDU1LjEtNzMuOCA5OS45LTYxLjRsMzIuNSA5YzQ2LjcgMTMgODggNDAuOCAxMTcuNiA3OS4zbDI0LjkgMzIuMyA0MC40LTIwLjJjMTUuOC03LjkgMzUtMS41IDQyLjkgMTQuM3oiXX0sT1d0PUFiZSxOYmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic3F1YXJlLWNoZWNrIixpY29uOls0NDgsNTEyLFs5NzQ1LDk5ODksNjE1MTAsImNoZWNrLXNxdWFyZSJdLCJmMTRhIiwiTTM4NCAzMmMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMzIwIDB6TTM0MiAxNDUuN2MtMTAuNy03LjgtMjUuNy01LjQtMzMuNSA1LjNMMTg5LjEgMzE1LjIgMTM3IDI2My4xYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDcyIDcyYzUgNSAxMS45IDcuNSAxOC44IDdzMTMuNC00LjEgMTcuNS05LjhMMzQ3LjMgMTc5LjJjNy44LTEwLjcgNS40LTI1LjctNS4zLTMzLjV6Il19LEZXdD1OYmUsUmJlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJhdGgiLGljb246WzUxMiw1MTIsWzEyODcwNSwiYmF0aHR1YiJdLCJmMmNkIiwiTTk2IDc3LjNjMC03LjMgNS45LTEzLjMgMTMuMy0xMy4zIDMuNSAwIDYuOSAxLjQgOS40IDMuOWwxNC45IDE0LjljLTMuNiA5LjEtNS41IDE4LjktNS41IDI5LjIgMCAxOS45IDcuMiAzOCAxOS4yIDUyLTUuMyA5LjItNCAyMS4xIDMuOCAyOSA5LjQgOS40IDI0LjYgOS40IDMzLjkgMEwyODkgODljOS40LTkuNCA5LjQtMjQuNiAwLTMzLjktNy44LTcuOS0xOS44LTkuMS0yOS0zLjgtMTQtMTItMzIuMS0xOS4yLTUyLTE5LjItMTAuMyAwLTIwLjIgMi0yOS4yIDUuNUwxNjMuOSAyMi42QzE0OS40IDguMSAxMjkuNyAwIDEwOS4zIDAgNjYuNiAwIDMyIDM0LjYgMzIgNzcuM0wzMiAyNTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMCA0OGMwIDI4LjQgMTIuNCA1NCAzMiA3MS42TDY0IDQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTYgMjU2IDAgMCAxNmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtNDAuNGMxOS42LTE3LjYgMzItNDMuMSAzMi03MS42bDAtNDhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMOTYgMjU2IDk2IDc3LjN6Il19LEJXdD1SYmUsSFd0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNoZXNzLWJpc2hvcCIsaWNvbjpbMzIwLDUxMixbOTgyMV0sImY0M2EiLCJNNjQgMzg0TDQ4LjMgMzY4LjNDMTcuNCAzMzcuNCAwIDI5NS40IDAgMjUxLjcgMCAyMTMuMSAxMy41IDE3NS44IDM4LjIgMTQ2LjFMMTA2LjcgNjQgOTYgNjRDNzguMyA2NCA2NCA0OS43IDY0IDMyUzc4LjMgMCA5NiAwTDIyNCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0xMC43IDAgNDcuNiA1Ny4xLTg1LjkgODUuOWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDgyLjMtODIuM2MxOC43IDI3LjMgMjguNyA1OS43IDI4LjcgOTMgMCA0My43LTE3LjQgODUuNy00OC4zIDExNi42TDI1NiAzODQgMzEyLjIgNDU0LjNjNSA2LjMgNy44IDE0LjEgNy44IDIyLjIgMCAxOS42LTE1LjkgMzUuNS0zNS41IDM1LjVMMzUuNSA1MTJjLTE5LjYgMC0zNS41LTE1LjktMzUuNS0zNS41IDAtOC4xIDIuNy0xNS45IDcuOC0yMi4yTDY0IDM4NHoiXX0sT2JlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InByZXNjcmlwdGlvbi1ib3R0bGUtbWVkaWNhbCIsaWNvbjpbMzg0LDUxMixbInByZXNjcmlwdGlvbi1ib3R0bGUtYWx0Il0sImY0ODYiLCJNMCAzMkMwIDE0LjMgMTQuMyAwIDMyIDBMMzUyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMkwzMiA5NkMxNC4zIDk2IDAgODEuNyAwIDY0TDAgMzJ6TTMyIDE0NGwzMjAgMCAwIDMwNGMwIDM1LjMtMjguNyA2NC02NCA2NEw5NiA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtMzA0ek0xNjAgMjQ4bDAgNDAtNDAgMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDQwIDAgMCA0MGMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC00MCA0MCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtNDAgMCAwLTQwYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2eiJdfSxxV3Q9T2JlLEZiZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJkcmF3LXBvbHlnb24iLGljb246WzUxMiw1MTIsWzU4MDU1LCJ2ZWN0b3ItcG9seWdvbiJdLCJmNWVlIiwiTTY0IDBjMjMuNyAwIDQ0LjQgMTIuOSA1NS40IDMybDI3My4xIDBjMTEuMS0xOS4xIDMxLjctMzIgNTUuNC0zMiAzNS4zIDAgNjQgMjguNyA2NCA2NCAwIDM0LTI2LjUgNjEuOC02MCA2My45bC0yLjEgMi45LTcxLjUgOTkuMWMzLjYgOCA1LjYgMTYuOSA1LjYgMjYuMnMtMiAxOC4yLTUuNiAyNi4ybDIuMiAzLjEgNjkuMyA5NiAyLjEgMi45YzMzLjUgMi4xIDYwIDI5LjkgNjAgNjMuOSAwIDM1LjMtMjguNyA2NC02NCA2NC0yMy43IDAtNDQuNC0xMi45LTU1LjQtMzJsLTI3My4xIDBjLTExLjEgMTkuMS0zMS43IDMyLTU1LjQgMzItMzUuMyAwLTY0LTI4LjctNjQtNjQgMC0yMy43IDEyLjktNDQuNCAzMi01NS40bDAtMjczLjFDMTIuOSAxMDguNCAwIDg3LjcgMCA2NCAwIDI4LjcgMjguNyAwIDY0IDB6TTM5NC4yIDQxMy40bC02NS41LTkwLjYtMi4yLTMuMWMtMi4xIC4yLTQuMyAuMy02LjUgLjMtMzUuMyAwLTY0LTI4LjctNjQtNjRzMjguNy02NCA2NC02NGMyLjIgMCA0LjQgLjEgNi41IC4zbDY3LjctOTMuN2MtLjYtLjktMS4xLTEuNy0xLjYtMi42TDExOS40IDk2Yy01LjYgOS43LTEzLjcgMTcuOC0yMy40IDIzLjRsMCAyNzMuMWM5LjcgNS42IDE3LjggMTMuNyAyMy40IDIzLjRsMjczLjEgMGMuNS0uOSAxLjEtMS44IDEuNi0yLjZ6Il19LGpXdD1GYmUsVld0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImktY3Vyc29yIixpY29uOlsyNTYsNTEyLFtdLCJmMjQ2IiwiTS4xIDI5LjNDLTEuNCA0NyAxMS43IDYyLjQgMjkuMyA2My45bDggLjdDNzAuNSA2Ny4zIDk2IDk1IDk2IDEyOC4zbDAgOTUuNy0zMiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDMyIDAgMCA5NS43YzAgMzMuMy0yNS41IDYxLTU4LjcgNjMuOGwtOCAuN0MxMS43IDQ0OS42LTEuNCA0NjUgLjEgNDgyLjdTMTcgNTEzLjQgMzQuNyA1MTEuOWw4LS43YzM0LjEtMi44IDY0LjItMTguOSA4NS40LTQyLjkgMjEuMiAyNCA1MS4yIDQwIDg1LjQgNDIuOWw4IC43YzE3LjYgMS41IDMzLjEtMTEuNiAzNC41LTI5LjJzLTExLjYtMzMuMS0yOS4yLTM0LjVsLTgtLjdDMTg1LjUgNDQ0LjcgMTYwIDQxNyAxNjAgMzgzLjdsMC05NS43IDMyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTMyIDAgMC05NS43YzAtMzMuMyAyNS41LTYxIDU4LjctNjMuOGw4LS43YzE3LjYtMS41IDMwLjctMTYuOSAyOS4yLTM0LjVTMjM5LTEuNCAyMjEuMyAuMWwtOCAuN2MtMzQuMSAyLjgtNjQuMiAxOC45LTg1LjQgNDIuOS0yMS4yLTI0LTUxLjItNDAtODUuNC00Mi45bC04LS43QzE3LTEuNCAxLjYgMTEuNyAuMSAyOS4zeiJdfSxVV3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaGVhcnQtY2lyY2xlLXBsdXMiLGljb246WzU3Niw1MTIsW10sImU1MDAiLCJNMjQxIDg3LjFsMTUgMjAuNyAxNS0yMC43QzI5NiA1Mi41IDMzNi4yIDMyIDM3OC45IDMyIDQ1Mi40IDMyIDUxMiA5MS42IDUxMiAxNjUuMWwwIDIuNmMwIDE3LjYtMy40IDM1LjYtOS41IDUzLjctMjEuOC04LjYtNDUuNi0xMy40LTcwLjUtMTMuNC0xMDYgMC0xOTIgODYtMTkyIDE5MiAwIDI4LjUgNi4yIDU1LjYgMTcuNCA4MC0uNSAwLS45IDAtMS40IDAtMTUuNSAwLTMwLjgtNC42LTQzLjEtMTQuMS03My01NS43LTIxMi45LTE4Ni0yMTIuOS0yOTguMmwwLTIuNkMwIDkxLjYgNTkuNiAzMiAxMzMuMSAzMiAxNzUuOCAzMiAyMTYgNTIuNSAyNDEgODcuMXpNNDMyIDI1NmExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTE2IDgwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2bDAgNDgtNDggMGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmw0OCAwIDAgNDhjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmwwLTQ4IDQ4IDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTQ4IDAgMC00OHoiXX0sV1d0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNoaWVsZC1kb2ciLGljb246WzUxMiw1MTIsW10sImU1NzMiLCJNMjY5LjQgMi45QzI2NS4yIDEgMjYwLjcgMCAyNTYgMHMtOS4yIDEtMTMuNCAyLjlMNTQuMyA4Mi44Yy0yMiA5LjMtMzguNCAzMS0zOC4zIDU3LjIgLjUgOTkuMiA0MS4zIDI4MC43IDIxMy42IDM2My4yIDE2LjcgOCAzNi4xIDggNTIuOCAwIDE3Mi40LTgyLjUgMjEzLjItMjY0IDIxMy42LTM2My4yIC4xLTI2LjItMTYuMy00Ny45LTM4LjMtNTcuMkwyNjkuNCAyLjl6TTE2MC45IDI4Ni4yYzQuOCAxLjIgOS45IDEuOCAxNS4xIDEuOCAzNS4zIDAgNjQtMjguNyA2NC02NGwwLTY0IDQ0LjIgMGMxMi4xIDAgMjMuMiA2LjggMjguNiAxNy43bDcuMiAxNC4zIDY0IDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA0NC4yLTM1LjggODAtODAgODBsLTQ4IDAgMCA1MC43YzAgNy4zLTUuOSAxMy4zLTEzLjMgMTMuMy0xLjggMC0zLjYtLjQtNS4yLTEuMWwtOTguNy00Mi4zYy02LjYtMi44LTEwLjgtOS4zLTEwLjgtMTYuNCAwLTIuOCAuNi01LjUgMS45LThsMTUtMzB6TTE2MCAxNjBsNDggMCAwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtNDhjMC04LjggNy4yLTE2IDE2LTE2em0xMjggNDhhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHoiXX0sR1d0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImdyZWF0ZXItdGhhbi1lcXVhbCIsaWNvbjpbNDQ4LDUxMixbXSwiZjUzMiIsIk0yMS45IDk0LjRDNS4xIDg4LjgtMy45IDcwLjYgMS43IDUzLjlTMjUuNCAyOC4xIDQyLjEgMzMuNmwzODQgMTI4QzQzOS4yIDE2NiA0NDggMTc4LjIgNDQ4IDE5MnMtOC44IDI2LTIxLjkgMzAuNGwtMzg0IDEyOGMtMTYuOCA1LjYtMzQuOS0zLjUtNDAuNS0yMC4yczMuNS0zNC45IDIwLjItNDAuNUwzMTQuOCAxOTIgMjEuOSA5NC40ek00MTYgNDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDMyIDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwzODQgMHoiXX0sS1d0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImVudmVsb3BlLW9wZW4iLGljb246WzUxMiw1MTIsWzYyMTM1XSwiZjJiNiIsIk02NC40IDE3NS44TDI1NiAzMy45IDQ0Ny42IDE3NS44IDI4OS41IDI5M2MtOS43IDcuMi0yMS40IDExLTMzLjUgMTFzLTIzLjgtMy45LTMzLjUtMTFMNjQuNCAxNzUuOHpNMjU2LTMyYy0xMi4xIDAtMjMuOCAzLjktMzMuNSAxMUwyNS45IDEyNC43QzkuNiAxMzYuOCAwIDE1NS44IDAgMTc2LjFMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzg0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yMzkuOWMwLTIwLjMtOS42LTM5LjQtMjUuOS01MS40TDI4OS41LTIxYy05LjctNy4yLTIxLjQtMTEtMzMuNS0xMXoiXX0sWVd0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im1vdW5kIixpY29uOls1MTIsNTEyLFtdLCJlNTJkIiwiTTExMi40IDE3OS4yQzE0MiAxMjcuNyAxOTYuOCA5NiAyNTYuMiA5NnMxMTQuMiAzMS43IDE0My45IDgzLjJMNTA4LjcgMzY4YzEyLjMgMjEuMy0zLjEgNDgtMjcuNyA0OEwzMS41IDQxNmMtMjQuNiAwLTQwLTI2LjYtMjcuNy00OEwxMTIuNCAxNzkuMnoiXX0sWld0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InZvaWNlbWFpbCIsaWNvbjpbNjQwLDUxMixbXSwiZjg5NyIsIk0xNDQgMTYwYTgwIDgwIDAgMSAxIDAgMTYwIDgwIDgwIDAgMSAxIDAtMTYwek0yNjMuOCAzMjBjMTUuMy0yMi45IDI0LjItNTAuNCAyNC4yLTgwIDAtNzkuNS02NC41LTE0NC0xNDQtMTQ0UzAgMTYwLjUgMCAyNDAgNjQuNSAzODQgMTQ0IDM4NGwzNTIgMGM3OS41IDAgMTQ0LTY0LjUgMTQ0LTE0NFM1NzUuNSA5NiA0OTYgOTYgMzUyIDE2MC41IDM1MiAyNDBjMCAyOS42IDguOSA1Ny4xIDI0LjIgODBsLTExMi41IDB6TTQ5NiAxNjBhODAgODAgMCAxIDEgMCAxNjAgODAgODAgMCAxIDEgMC0xNjB6Il19LFhXdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ2ZXN0IixpY29uOls0NDgsNTEyLFtdLCJlMDg1IiwiTTIwMCA0NjRsMC0xNzAuMWMwLTMuOS0uNS03LjgtMS40LTExLjZMMTQ0LjQgNjUuNEMxNjIuMSA3Ny4yIDE4OC4yIDg4IDIyNCA4OHM2MS45LTEwLjggNzkuNi0yMi42TDI0OS40IDI4Mi4zYy0xIDMuOC0xLjQgNy43LTEuNCAxMS42TDI0OCA0NjRjMCAyNi41IDIxLjUgNDggNDggNDhsMTA0IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC0xOTMuNWMwLTkuNS0yLjgtMTguNy04LjEtMjYuNmwtNDcuOS03MS44Yy01LjMtNy45LTguMS0xNy4xLTguMS0yNi42TDM4NCA0OGMwLTI2LjUtMjEuNS00OC00OC00OGwtMy41IDBjLS4zIDAtLjYgMC0xIDAtLjYgMC0xLjIgMC0xLjggMC0xOC44IDAtMzQuMSA5LjctNDQuMSAxOC44LTkuMyA4LjQtMjguNSAyMS4yLTYxLjcgMjEuMnMtNTIuNC0xMi44LTYxLjctMjEuMmMtMTAtOS4xLTI1LjMtMTguOC00NC4xLTE4LjgtLjYgMC0xLjIgMC0xLjggMC0uMyAwLS42IDAtMSAwTDExMiAwQzg1LjUgMCA2NCAyMS41IDY0IDQ4bDAgOTcuNWMwIDkuNS0yLjggMTguNy04LjEgMjYuNkw4LjEgMjQzLjlDMi44IDI1MS44IDAgMjYxLjEgMCAyNzAuNUwwIDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGwxMDQgMGMyNi41IDAgNDgtMjEuNSA0OC00OHoiXX0sUVd0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImF1ZGlvLWRlc2NyaXB0aW9uIixpY29uOls1MTIsNTEyLFtdLCJmMjllIiwiTTAgMTI4QzAgOTIuNyAyOC43IDY0IDY0IDY0bDM4NCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjU2YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ0OGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCAxMjh6bTk2IDk2bDAgMTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0yNCA0OCAwIDAgMjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTEwNGMwLTM1LjMtMjguNy02NC02NC02NGwtMTYgMGMtMzUuMyAwLTY0IDI4LjctNjQgNjR6bTQ4IDMybDAtMzJjMC04LjggNy4yLTE2IDE2LTE2bDE2IDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzItNDggMHptMTUyLTk2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDE0NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGw0OCAwYzM5LjggMCA3Mi0zMi4yIDcyLTcybDAtNDhjMC0zOS44LTMyLjItNzItNzItNzJsLTQ4IDB6bTQ4IDE0NGwtMjQgMCAwLTk2IDI0IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRsMCA0OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHoiXX0sSld0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InciLGljb246WzU3Niw1MTIsWzExOV0sIjU3IiwiTTIwLjggMzRjMTYuNS02LjIgMzUgMi4yIDQxLjIgMTguN0wxNzIuMiAzNDYuNyAyNTcuMyA1NWM0LTEzLjcgMTYuNS0yMyAzMC43LTIzczI2LjcgOS40IDMwLjcgMjNMNDAzLjggMzQ2LjcgNTE0IDUyLjhjNi4yLTE2LjUgMjQuNi0yNC45IDQxLjItMTguN1M1ODAuMiA1OC43IDU3NCA3NS4ybC0xNDQgMzg0Yy00LjggMTIuOS0xNy40IDIxLjMtMzEuMiAyMC43cy0yNS43LTkuOC0yOS41LTIzTDI4OCAxNzguMyAyMDYuNyA0NTdjLTMuOSAxMy4yLTE1LjggMjIuNS0yOS41IDIzcy0yNi4zLTcuOC0zMS4yLTIwLjdMMiA3NS4yQy00LjIgNTguNyA0LjIgNDAuMiAyMC44IDM0eiJdfSxib2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZXllLWRyb3BwZXIiLGljb246WzUxMiw1MTIsWyJleWUtZHJvcHBlci1lbXB0eSIsImV5ZWRyb3BwZXIiXSwiZjFmYiIsIk0zNDEuNiAyOS4ybC0xMDEuNiAxMDEuNi05LjQtOS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTkuNC05LjQgMTAxLjYtMTAxLjZjMzktMzkgMzktMTAyLjIgMC0xNDEuMXMtMTAyLjItMzktMTQxLjEgMHpNNTUuNCAzMjMuM2MtMTUgMTUtMjMuNCAzNS40LTIzLjQgNTYuNmwwIDQyLjQtMjYuNiAzOS45Yy04LjUgMTIuNy02LjggMjkuNiA0IDQwLjRzMjcuNyAxMi41IDQwLjQgNGwzOS45LTI2LjYgNDIuNCAwYzIxLjIgMCA0MS42LTguNCA1Ni42LTIzLjRsMTA5LjQtMTA5LjQtNDUuMy00NS4zLTEwOS40IDEwOS40Yy0zIDMtNy4xIDQuNy0xMS4zIDQuN2wtMzYuMSAwIDAtMzYuMWMwLTQuMiAxLjctOC4zIDQuNy0xMS4zbDEwOS40LTEwOS40LTQ1LjMtNDUuMy0xMDkuNCAxMDkuNHoiXX0sZUd0PWJvZSx0R3Q9Ym9lLHBoPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNpcmNsZS14bWFyayIsaWNvbjpbNTEyLDUxMixbNjE1MzIsInRpbWVzLWNpcmNsZSIsInhtYXJrLWNpcmNsZSJdLCJmMDU3IiwiTTI1NiA1MTJhMjU2IDI1NiAwIDEgMCAwLTUxMiAyNTYgMjU2IDAgMSAwIDAgNTEyek0xNjcgMTY3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDU1IDU1IDU1LTU1YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNTUgNTUgNTUgNTVjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNTUtNTUtNTUgNTVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNTUtNTUtNTUtNTVjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45eiJdfSxhR3Q9cGgsc0d0PXBoLGlHdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0cmFpbGVyIixpY29uOls2NDAsNTEyLFtdLCJlMDQxIiwiTTMyIDk2YzAtMzUuMyAyOC43LTY0IDY0LTY0bDM4NCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjU2IDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTI5Ni40IDBjLjIgMi42IC40IDUuMyAuNCA4IDAgNDguNi0zOS40IDg4LTg4IDg4cy04OC0zOS40LTg4LTg4YzAtMi43IC4xLTUuNCAuNC04TDk2IDQxNmMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMzIgOTZ6bTQwOCAxNmMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCAxNjBjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTE2MGMwLTEzLjMtMTAuNy0yNC0yNC0yNHpNMTEyIDEzNmwwIDE2MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtMTYwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0em0xNzYtMjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0bDAgMTYwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0xNjBjMC0xMy4zLTEwLjctMjQtMjQtMjR6TTI2NCA0MjRhNDAgNDAgMCAxIDAgLTgwIDAgNDAgNDAgMCAxIDAgODAgMHoiXX0sdm9lPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InR1cmtpc2gtbGlyYS1zaWduIixpY29uOls0NDgsNTEyLFsidHJ5IiwidHVya2lzaC1saXJhIl0sImUyYmIiLCJNMTYwIDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgNDMuNiAxMjEuNC0zNC43YzEyLjctMy42IDI2IDMuNyAyOS43IDE2LjVzLTMuNyAyNi0xNi41IDI5LjdsLTEzNC42IDM4LjUgMCA0Ni4xIDEyMS40LTM0LjdjMTIuNy0zLjYgMjYgMy43IDI5LjcgMTYuNXMtMy43IDI2LTE2LjUgMjkuN2wtMTM0LjYgMzguNSAwIDE2Mi41IDcyIDBjNTMgMCA5Ni00MyA5Ni05NiAwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyYzAgODguNC03MS42IDE2MC0xNjAgMTYwbC0xMDQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0xNzYuMi0yNS40IDcuM2MtMTIuNyAzLjYtMjYtMy43LTI5LjctMTYuNXMzLjctMjYgMTYuNS0yOS43bDM4LjYtMTEgMC00Ni4xLTI1LjQgNy4zYy0xMi43IDMuNi0yNi0zLjctMjkuNy0xNi41czMuNy0yNiAxNi41LTI5LjdsMzguNi0xMSAwLTYxLjljMC0xNy43IDE0LjMtMzIgMzItMzJ6Il19LHJHdD12b2Usb0d0PXZvZSxuR3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidm9sY2FubyIsaWNvbjpbNTEyLDUxMixbMTI3NzU1XSwiZjc3MCIsIk0xNjAgMTQ0Yy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0YzE1LjcgMCAzMCA1LjYgNDEuMiAxNSAxMS4yLTE4LjYgMzEuNi0zMSA1NC44LTMxczQzLjYgMTIuNCA1NC44IDMxYzExLjEtOS40IDI1LjUtMTUgNDEuMi0xNSAzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NGMtMTQuNyAwLTI4LjMtNS0zOS4xLTEzLjNsLTMyIDQ4QzI3NS4zIDE4NyAyNjYgMTkyIDI1NiAxOTJzLTE5LjMtNS0yNC45LTEzLjNsLTMyLTQ4QzE4OC4zIDEzOSAxNzQuNyAxNDQgMTYwIDE0NHpNMTQ0IDM1Mmw0OC40LTI0LjJjMTAuMi01LjEgMjEuNi03LjggMzMtNy44IDE5LjYgMCAzOC40IDcuOCA1Mi4yIDIxLjZsMzIuNSAzMi41YzYuMyA2LjMgMTQuOSA5LjkgMjMuOCA5LjkgMTEuMyAwIDIxLjgtNS42IDI4LTE1bDkuNy0xNC42LTU5LTY2LjNjLTkuMS0xMC4yLTIyLjItMTYuMS0zNS45LTE2LjFsLTQxLjggMGMtMTMuNyAwLTI2LjggNS45LTM1LjkgMTYuMWwtNTkuOSA2Ny40IDQuNy0zLjV6bTE5LjQtOTUuOGMxOC4yLTIwLjUgNDQuMy0zMi4yIDcxLjgtMzIuMmw0MS44IDBjMjcuNCAwIDUzLjUgMTEuNyA3MS44IDMyLjJsMTUwLjIgMTY5YzguNSA5LjUgMTMuMiAyMS45IDEzLjIgMzQuNyAwIDI4LjgtMjMuNCA1Mi4yLTUyLjIgNTIuMkw1Mi4yIDUxMkMyMy40IDUxMiAwIDQ4OC42IDAgNDU5LjggMCA0NDcuMSA0LjcgNDM0LjcgMTMuMiA0MjUuMmwxNTAuMi0xNjl6Il19LGxHdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ3YW5kLXNwYXJrbGVzIixpY29uOls1MTIsNTEyLFtdLCJmNzJiIiwiTTQ2NCA2LjFjOS41LTguNSAyNC04LjEgMzMgLjlsOCA4YzkgOSA5LjQgMjMuNSAuOSAzM2wtODUuOCA5NS45Yy0yLjYgMi45LTQuMSA2LjctNC4xIDEwLjdsMCAyMS40YzAgOC44LTcuMiAxNi0xNiAxNmwtMTUuOCAwYy00LjYgMC04LjkgMS45LTExLjkgNS4zTDEwMC43IDUwMC45Yy02LjMgNy4xLTE1LjMgMTEuMS0yNC44IDExLjEtOC44IDAtMTcuMy0zLjUtMjMuNS05LjhMOS43IDQ1OS43Yy02LjItNi4yLTkuNy0xNC43LTkuNy0yMy41IDAtOS41IDQtMTguNSAxMS4xLTI0LjhsMTExLjYtOTkuOGMzLjQtMyA1LjMtNy40IDUuMy0xMS45bDAtMjcuNmMwLTguOCA3LjItMTYgMTYtMTZsMzQuNiAwYzMuOSAwIDcuNy0xLjUgMTAuNy00LjFMNDY0IDYuMXpNNDMyIDI4OGMzLjYgMCA2LjcgMi40IDcuNyA1LjhsMTQuOCA1MS43IDUxLjcgMTQuOGMzLjQgMSA1LjggNC4xIDUuOCA3LjdzLTIuNCA2LjctNS44IDcuN2wtNTEuNyAxNC44LTE0LjggNTEuN2MtMSAzLjQtNC4xIDUuOC03LjcgNS44cy02LjctMi40LTcuNy01LjhsLTE0LjgtNTEuNy01MS43LTE0LjhjLTMuNC0xLTUuOC00LjEtNS44LTcuN3MyLjQtNi43IDUuOC03LjdsNTEuNy0xNC44IDE0LjgtNTEuN2MxLTMuNCA0LjEtNS44IDcuNy01Ljh6TTg3LjcgNjkuOGwxNC44IDUxLjcgNTEuNyAxNC44YzMuNCAxIDUuOCA0LjEgNS44IDcuN3MtMi40IDYuNy01LjggNy43bC01MS43IDE0LjgtMTQuOCA1MS43Yy0xIDMuNC00LjEgNS44LTcuNyA1LjhzLTYuNy0yLjQtNy43LTUuOEw1Ny41IDE2Ni41IDUuOCAxNTEuN2MtMy40LTEtNS44LTQuMS01LjgtNy43czIuNC02LjcgNS44LTcuN2w1MS43LTE0LjggMTQuOC01MS43YzEtMy40IDQuMS01LjggNy43LTUuOHM2LjcgMi40IDcuNyA1Ljh6TTIwOCAwYzMuNyAwIDYuOSAyLjUgNy44IDYuMWw2LjggMjcuMyAyNy4zIDYuOGMzLjYgLjkgNi4xIDQuMSA2LjEgNy44cy0yLjUgNi45LTYuMSA3LjhsLTI3LjMgNi44LTYuOCAyNy4zYy0uOSAzLjYtNC4xIDYuMS03LjggNi4xcy02LjktMi41LTcuOC02LjFsLTYuOC0yNy4zLTI3LjMtNi44Yy0zLjYtLjktNi4xLTQuMS02LjEtNy44czIuNS02LjkgNi4xLTcuOGwyNy4zLTYuOCA2LjgtMjcuM2MuOS0zLjYgNC4xLTYuMSA3LjgtNi4xeiJdfSxjR3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibWljcm9waG9uZSIsaWNvbjpbMzg0LDUxMixbXSwiZjEzMCIsIk0xOTIgMEMxMzkgMCA5NiA0MyA5NiA5NmwwIDEyOGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2bDAtMTI4YzAtNTMtNDMtOTYtOTYtOTZ6TTQ4IDE4NGMwLTEzLjMtMTAuNy0yNC0yNC0yNFMwIDE3MC43IDAgMTg0bDAgNDBjMCA5Ny45IDczLjMgMTc4LjcgMTY4IDE5MC41bDAgNDkuNS00OCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDE0NCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC00OCAwIDAtNDkuNWM5NC43LTExLjggMTY4LTkyLjYgMTY4LTE5MC41bDAtNDBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCA0MGMwIDc5LjUtNjQuNSAxNDQtMTQ0IDE0NFM0OCAzMDMuNSA0OCAyMjRsMC00MHoiXX0sZEd0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNyb3duIixpY29uOls1NzYsNTEyLFsxMjgwODFdLCJmNTIxIiwiTTMxMyA4Ny4yYzkuMi03LjMgMTUtMTguNiAxNS0zMS4yIDAtMjIuMS0xNy45LTQwLTQwLTQwcy00MCAxNy45LTQwIDQwYzAgMTIuNiA1LjkgMjMuOSAxNSAzMS4yTDE5NC42IDE5NC44Yy0xMCAxNS43LTMxLjMgMTkuNi00Ni4yIDguNEw4OC45IDE1OC43YzQuNS02LjQgNy4xLTE0LjMgNy4xLTIyLjcgMC0yMi4xLTE3LjktNDAtNDAtNDBzLTQwIDE3LjktNDAgNDBjMCAyMS44IDE3LjUgMzkuNiAzOS4yIDQwTDg3LjggMzkzLjVjNC43IDMxLjMgMzEuNiA1NC41IDYzLjMgNTQuNWwyNzMuOCAwYzMxLjcgMCA1OC42LTIzLjIgNjMuMy01NC41TDUyMC44IDE3NmMyMS43LS40IDM5LjItMTguMiAzOS4yLTQwIDAtMjIuMS0xNy45LTQwLTQwLTQwcy00MCAxNy45LTQwIDQwYzAgOC40IDIuNiAxNi4zIDcuMSAyMi43bC01OS40IDQ0LjZjLTE0LjkgMTEuMi0zNi4yIDcuMy00Ni4yLTguNEwzMTMgODcuMnoiXX0sdUd0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRlbnQtYXJyb3ctdHVybi1sZWZ0IixpY29uOls1MTIsNTEyLFtdLCJlNTgwIiwiTS0uNSAxMTNsNzIgNzJjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC0zMS0zMSAzNTAuMSAwYzIyLjEgMCA0MCAxNy45IDQwIDQwbDAgMjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTI0YzAtNDguNi0zOS40LTg4LTg4LTg4bC0zNTAuMSAwIDMxLTMxYzkuNC05LjQgOS40LTI0LjYgMC0zMy45UzgwLjktMi4zIDcxLjUgN0wtLjUgNzljLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45ek02MC4zIDI5Mi42TDM3LjEgNDc2Yy0yLjQgMTkuMSAxMi41IDM2IDMxLjcgMzZsMTU0LjUgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTExNy40YzAtNS45IDQuNy0xMC42IDEwLjYtMTAuNiA0IDAgNy43IDIuMyA5LjUgNS45bDY4LjIgMTM2LjVjNS40IDEwLjggMTYuNSAxNy43IDI4LjYgMTcuN2w3MS45IDBjMTkuMyAwIDM0LjItMTYuOSAzMS43LTM2TDQ1Mi43IDI5Mi43Yy0xLjItOS43LTYuOS0xOC40LTE1LjMtMjMuNEwyNzEuOSAxNjkuOWMtMTAuMi02LjEtMjIuOS02LjEtMzMuMSAuMUw3NS40IDI2OS4zYy04LjMgNS4xLTEzLjkgMTMuNy0xNS4xIDIzLjN6Il19LEJiZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0cnVjay1mYXN0IixpY29uOls2NDAsNTEyLFsic2hpcHBpbmctZmFzdCJdLCJmNDhiIiwiTTY0IDk2YzAtMzUuMyAyOC43LTY0IDY0LTY0bDI4OCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIgNTAuNyAwYzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43TDYyMS4zIDE5MmMxMiAxMiAxOC43IDI4LjMgMTguNyA0NS4zTDY0MCAzODRjMCAzNS4zLTI4LjcgNjQtNjQgNjRsLTMuMyAwYy0xMC40IDM2LjktNDQuNCA2NC04NC43IDY0cy03NC4yLTI3LjEtODQuNy02NGwtMTAyLjYgMGMtMTAuNCAzNi45LTQ0LjQgNjQtODQuNyA2NHMtNzQuMi0yNy4xLTg0LjctNjRsLTMuMyAwYy0zNS4zIDAtNjQtMjguNy02NC02NGwwLTQ4LTQwIDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsMTEyIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRMMjQgMjQwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDE3NiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0TDI0IDE0NGMtMTMuMyAwLTI0LTEwLjctMjQtMjRTMTAuNyA5NiAyNCA5Nmw0MCAwek01NzYgMjg4bDAtNTAuNy00NS4zLTQ1LjMtNTAuNyAwIDAgOTYgOTYgMHpNMjU2IDQyNGE0MCA0MCAwIDEgMCAtODAgMCA0MCA0MCAwIDEgMCA4MCAwem0yMzIgNDBhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgweiJdfSxwR3Q9QmJlLEhiZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ1c2VyLXBlbiIsaWNvbjpbNjQwLDUxMixbInVzZXItZWRpdCJdLCJmNGZmIiwiTTI1Ni4xIDI0OGExMjAgMTIwIDAgMSAwIDAtMjQwIDEyMCAxMjAgMCAxIDAgMCAyNDB6bS0yOS43IDU2Yy05OC41IDAtMTc4LjMgNzkuOC0xNzguMyAxNzguMyAwIDE2LjQgMTMuMyAyOS43IDI5LjcgMjkuN2wxOTYuNSAwIDEwLjktNTQuNWM0LjMtMjEuNyAxNS00MS42IDMwLjYtNTcuMmw2Ny4zLTY3LjNjLTI4LTE4LjMtNjEuNC0yOC45LTk3LjQtMjguOWwtNTkuNCAwek0zMzIuMyA0NjYuOWwtMTEuOSA1OS42Yy0uMiAuOS0uMyAxLjktLjMgMi45IDAgOCA2LjUgMTQuNiAxNC42IDE0LjYgMSAwIDEuOS0uMSAyLjktLjNsNTkuNi0xMS45YzEyLjQtMi41IDIzLjgtOC42IDMyLjctMTcuNWwxMTguOS0xMTguOS04MC04MC0xMTguOSAxMTguOWMtOC45IDguOS0xNSAyMC4zLTE3LjUgMzIuN3ptMjY3LjgtMTIzYzIyLjEtMjIuMSAyMi4xLTU3LjkgMC04MHMtNTcuOS0yMi4xLTgwIDBsLTI4LjggMjguOCA4MCA4MCAyOC44LTI4Ljh6Il19LGhHdD1IYmUsZkd0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InVzZXItY2xvY2siLGljb246WzU3Niw1MTIsW10sImY0ZmQiLCJNMjI0IDhhMTIwIDEyMCAwIDEgMSAwIDI0MCAxMjAgMTIwIDAgMSAxIDAtMjQwek0xOTQuMyAzMDRsNTkuNCAwYzMuOSAwIDcuOSAuMSAxMS44IC40LTE2LjIgMjguMi0yNS41IDYwLjgtMjUuNSA5NS42IDAgNDEuOCAxMy40IDgwLjUgMzYgMTEyTDQ1LjcgNTEyQzI5LjMgNTEyIDE2IDQ5OC43IDE2IDQ4Mi4zIDE2IDM4My44IDk1LjggMzA0IDE5NC4zIDMwNHpNMjg4IDQwMGExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0xNDQtODBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDY0YzAgOC44IDcuMiAxNiAxNiAxNmw0OCAwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2bC0zMiAwIDAtNDhjMC04LjgtNy4yLTE2LTE2LTE2eiJdfSxtR3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic2hvd2VyIixpY29uOls1MTIsNTEyLFsxMjg3MDNdLCJmMmNjIiwiTTY0IDEzMS45YzAtMTkuOCAxNi4xLTM1LjkgMzUuOS0zNS45IDkuNSAwIDE4LjYgMy44IDI1LjQgMTAuNWwxNi4yIDE2LjJjLTIxIDM4LjktMTcuNCA4Ny41IDEwLjkgMTIzTDE1MSAyNDdjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMEwzNDUgMTIxYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTEuMyAxLjNjLTM1LjUtMjguMy04NC4xLTMxLjktMTIzLTEwLjlMMTcwLjUgNjEuM0MxNTEuOCA0Mi41IDEyNi40IDMyIDk5LjkgMzIgNDQuNyAzMiAwIDc2LjcgMCAxMzEuOUwwIDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMzE2LjF6TTI1NiAzNTJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em02NCA2NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem0wLTEyOGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTY0IDY0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTAtMTI4YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptNjQgNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMzItMzJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0eiJdfSxxYmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic3F1YXJlLWNhcmV0LXVwIixpY29uOls0NDgsNTEyLFsiY2FyZXQtc3F1YXJlLXVwIl0sImYxNTEiLCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMnpNMjI0IDE2MGM2LjcgMCAxMyAyLjggMTcuNiA3LjdsMTA0IDExMmM2LjUgNyA4LjIgMTcuMiA0LjQgMjUuOVMzMzcuNSAzMjAgMzI4IDMyMGwtMjA4IDBjLTkuNSAwLTE4LjItNS43LTIyLTE0LjRzLTIuMS0xOC45IDQuNC0yNS45bDEwNC0xMTJjNC41LTQuOSAxMC45LTcuNyAxNy42LTcuN3oiXX0sZ0d0PXFiZSxqYmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibWFwLWxvY2F0aW9uIixpY29uOls2NDAsNTEyLFsibWFwLW1hcmtlZCJdLCJmNTlmIiwiTTU3NiA0OGMwLTExLjEtNS43LTIxLjQtMTUuMi0yNy4ycy0yMS4yLTYuNC0zMS4xLTEuNEw0MTMuNSA3Ny41IDIzNC4xIDE3LjZjLTguMS0yLjctMTYuOC0yLjEtMjQuNCAxLjdsLTEyOCA2NEM3MC44IDg4LjggNjQgOTkuOSA2NCAxMTJsMCAzNTJjMCAxMS4xIDUuNyAyMS40IDE1LjIgMjcuMnMyMS4yIDYuNCAzMS4xIDEuNGwxMTYuMS01OC4xIDE3My4zIDU3LjhjLTQuMy02LjQtOC41LTEzLjEtMTIuNi0xOS45LTExLTE4LjMtMjEuOS0zOS4zLTMwLTYxLjhsLTEwMS4yLTMzLjcgMC0yODQuNSAxMjggNDIuNyAwIDk5LjNjMzEtMzUuOCA3Ny01OC40IDEyOC01OC40IDIyLjYgMCA0NC4yIDQuNCA2NCAxMi41TDU3NiA0OHpNMzkyIDM0MS45YzAgNjguOSA2NC4xIDE1MC40IDk4LjYgMTg5LjMgMTEuNiAxMyAzMS4zIDEzIDQyLjkgMCAzNC41LTM4LjkgOTguNi0xMjAuNCA5OC42LTE4OS4zIDAtNjUuMS01My43LTExNy45LTEyMC0xMTcuOVMzOTIgMjc2LjggMzkyIDM0MS45eiJdfSxiR3Q9amJlLHZHdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwZW4tZmFuY3kiLGljb246WzUxMiw1MTIsWzEyODM5NSwxMDAwMl0sImY1YWMiLCJNMzczLjUgMjcuMWMxNS0xNy4yIDM2LjctMjcuMSA1OS42LTI3LjEgNDMuNiAwIDc5IDM1LjQgNzkgNzkgMCAyMi44LTkuOSA0NC42LTI3LjEgNTkuNkwyODMuNyAzMTMuOCAyNzMgMzAzIDIwOSAyMzkgMTk4LjIgMjI4LjMgMzczLjUgMjcuMXpNMTYxLjEgMjU5QzE2MiAyNjAgMTg4IDI4NiAyMzkgMzM3bDEzLjkgMTMuOS0xNy4xIDc0LjJjLTMuOSAxNy4xLTE2LjkgMzAuNy0zMy44IDM1LjRsLTE2OS44IDQ3LjUgOTIuMy05Mi4zYzEuMiAuMSAyLjMgLjIgMy41IC4yIDE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzJjMCAxLjIgLjEgMi40IC4yIDMuNUwzLjkgNDc5LjggNTEuNSAzMTBjNC43LTE2LjkgMTguMy0yOS45IDM1LjQtMzMuOEwxNjEuMSAyNTl6Il19LHhvZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJldXJvLXNpZ24iLGljb246WzQ0OCw1MTIsWzgzNjQsImV1ciIsImV1cm8iXSwiZjE1MyIsIk03My4zIDE5MkMxMDAuOCA5OS41IDE4Ni41IDMyIDI4OCAzMmw2NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC02NCAwYy02NS42IDAtMTIyIDM5LjUtMTQ2LjcgOTZMMjcyIDE5MmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMTQzLjIgMGMtLjUgNS4zLS44IDEwLjYtLjggMTZzLjMgMTAuNyAuOCAxNkwyNzIgMjcyYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0xMzAuNyAwYzI0LjcgNTYuNSA4MS4xIDk2IDE0Ni43IDk2bDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTY0IDBjLTEwMS41IDAtMTg3LjItNjcuNS0yMTQuNy0xNjBMNDAgMzIwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDI0LjYgMGMtLjctMTAuNS0uNy0yMS41IDAtMzJMNDAgMjQwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDMzLjMgMHoiXX0seEd0PXhvZSx5R3Q9eG9lLHdHdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJob3VzZS1jaXJjbGUteG1hcmsiLGljb246WzY0MCw1MTIsW10sImU1MGIiLCJNNDk2IDU0NGExNDQgMTQ0IDAgMSAxIDAtMjg4IDE0NCAxNDQgMCAxIDEgMCAyODh6TTI2OC42IDYuNWMxMi4yLTkuMyAyOS43LTguNyA0MS4yIDJsMjE3LjYgMjAyYy0xMC4yLTEuNy0yMC43LTIuNi0zMS4zLTIuNi03OC42IDAtMTQ2LjIgNDcuMi0xNzUuOSAxMTQuOC01LTEuOC0xMC41LTIuOC0xNi4xLTIuOGwtMzIgMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCA5NiA5MC45IDBjNi4xIDE3LjMgMTQuNiAzMy40IDI1LjIgNDhMMTQ0IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRsMC0xNzYtMTYgMGMtMTMuMiAwLTI1LTguMS0yOS44LTIwLjNzLTEuNi0yNi4yIDgtMzUuMWwyMjQtMjA4IDIuNC0yek01NTUuMyAzNDAuN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBsLTM2LjcgMzYuNy0zNi43LTM2LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZsMzYuNyAzNi43LTM2LjcgMzYuN2MtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZzMTYuNCA2LjIgMjIuNiAwbDM2LjctMzYuNyAzNi43IDM2LjdjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42bC0zNi43LTM2LjcgMzYuNy0zNi43YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42eiJdfSxrR3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibGlyYS1zaWduIixpY29uOlszODQsNTEyLFs4MzU2XSwiZjE5NSIsIk04NC45IDI1NmwtMjguNCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDExLjYgMEM1My4yIDEyNC43IDExNi44IDQyIDIwNy42IDQybDguMiAwYzMzLjYgMCA2Ni4yIDExLjMgOTIuNSAzMi4ybDE2LjEgMTIuN2MxMy45IDExIDE2LjIgMzEuMSA1LjIgNDVzLTMxLjEgMTYuMi00NSA1LjJsLTE2LjEtMTIuN2MtMTUtMTEuOS0zMy42LTE4LjQtNTIuOC0xOC40bC04LjIgMGMtNTMuOCAwLTkwLjEgNTIuOS03My41IDEwMmwxNjIuNCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0xNDUuMSAwYzIuMyAxMC42IDMuNiAyMS4zIDMuOSAzMmwxNDEuMiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0TDE1MCAzMzZjLTQuOCAxOC42LTEyLjYgMzYuNS0yMy42IDUyLjlsLTE4LjEgMjcuMSAyMTIuMiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0yNzIgMGMtMTEuOCAwLTIyLjYtNi41LTI4LjItMTYuOXMtNS0yMyAxLjYtMzIuOWw1MS4yLTc2LjhjMy43LTUuNiA2LjktMTEuNCA5LjQtMTcuNGwtMjYgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGwzNC44IDBjLS41LTEwLjgtMi42LTIxLjYtNi40LTMyeiJdfSxBYj17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ5ZW4tc2lnbiIsaWNvbjpbMzg0LDUxMixbMTY1LCJjbnkiLCJqcHkiLCJybWIiLCJ5ZW4iXSwiZjE1NyIsIk03NC45IDQ2LjdjLTkuNi0xNC45LTI5LjQtMTkuMi00NC4yLTkuNlMxMS41IDY2LjQgMjEuMSA4MS4zTDE0My43IDI3MiA4OCAyNzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsNzIgMCAwIDMyLTcyIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsNzIgMCAwIDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC00OCA3MiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC03MiAwIDAtMzIgNzIgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtNTUuNyAwIDEyMi42LTE5MC43YzkuNi0xNC45IDUuMy0zNC43LTkuNi00NC4ycy0zNC43LTUuMy00NC4yIDkuNkwxOTIgMjI4LjggNzQuOSA0Ni43eiJdfSxTR3Q9QWIsX0d0PUFiLE1HdD1BYix6R3Q9QWIsQ0d0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJveC1vcGVuIixpY29uOls2NDAsNTEyLFtdLCJmNDllIiwiTTU2MC4zIDIzNy4yYzEwLjQgMTEuOCAyOC4zIDE0LjQgNDEuOCA1LjUgMTQuNy05LjggMTguNy0yOS43IDguOS00NC40bC00OC03MmMtMi44LTQuMi02LjYtNy43LTExLjEtMTAuMkwzNTEuNCA0LjdjLTE5LjMtMTAuNy00Mi44LTEwLjctNjIuMiAwTDg4LjggMTE2Yy01LjQgMy05LjcgNy40LTEyLjYgMTIuOEwyNy43IDIxOC43Yy0xMi42IDIzLjQtMy44IDUyLjUgMTkuNiA2NS4xbDMzIDE3LjcgMCA1My4zYzAgMjMgMTIuNCA0NC4zIDMyLjQgNTUuN2wxNzYgOTkuN2MxOS42IDExLjEgNDMuNSAxMS4xIDYzLjEgMGwxNzYtOTkuN2MyMC4xLTExLjQgMzIuNC0zMi42IDMyLjQtNTUuN2wwLTExNy41em0tMjQwLTkuOEwxNzAuMiAxNDQgMzIwLjMgNjAuNiA0NzAuNCAxNDQgMzIwLjMgMjI3LjR6bS00MS41IDUwLjJsLTIxLjMgNDYuMi0xNjUuOC04OC44IDI1LjQtNDcuMiAxNjEuNyA4OS44eiJdfSxUR3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidHJ1Y2stZmllbGQiLGljb246WzY0MCw1MTIsW10sImU1OGQiLCJNMzIgOTZjMC0zNS4zIDI4LjctNjQgNjQtNjRsMjI0IDBjMjMuNyAwIDQ0LjQgMTIuOSA1NS40IDMybDQwLjQgMGMzMi40IDAgNjEuNiAxOS42IDc0IDQ5LjVsNDMuOCAxMDYuMyAxLjcgNC4yIDI0LjcgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC0uNCAwYy4yIDIuNiAuNCA1LjMgLjQgOCAwIDQ4LjYtMzkuNCA4OC04OCA4OHMtODgtMzkuNC04OC04OGMwLTIuNyAuMS01LjQgLjQtOGwtMTQ0LjcgMGMuMiAyLjYgLjQgNS4zIC40IDggMCA0OC42LTM5LjQgODgtODggODhzLTg4LTM5LjQtODgtODhjMC0zLjYgLjItNy4xIC42LTEwLjUtMTktNi40LTMyLjYtMjQuNC0zMi42LTQ1LjVsMC00OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmwwLTMyem0zNTIgMzJsMCA5NiA4Mi4xIDAtMzUuNC04Ni4xYy0yLjUtNi04LjMtOS45LTE0LjgtOS45TDM4NCAxMjh6TTE5MiAzOTJhNDAgNDAgMCAxIDAgLTgwIDAgNDAgNDAgMCAxIDAgODAgMHptMjgwIDQwYTQwIDQwIDAgMSAwIDAtODAgNDAgNDAgMCAxIDAgMCA4MHoiXX0sJEd0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImxvY2F0aW9uLXBpbi1sb2NrIixpY29uOls1MTIsNTEyLFtdLCJlNTFmIiwiTTAgMTg4LjZDMCA4NC40IDg2IDAgMTkyIDAgMjk0LjEgMCAzNzcuNiA3OC4zIDM4My42IDE3NyAzMjAuNyAxODUuMSAyNzIgMjM4LjggMjcyIDMwNGwwIDI0LjRjLTE5LjYgMTcuNi0zMiA0My4xLTMyIDcxLjVsMCA3NS43Yy05LjkgMTEuNi0xOC45IDIxLjctMjYuNCAyOS44LTExLjggMTIuOC0zMS41IDEyLjgtNDMuMyAwLTUwLjItNTQuNS0xNzAuNC0xOTcuNS0xNzAuNC0zMTYuOHpNMTkyIDI1NmE2NCA2NCAwIDEgMCAwLTEyOCA2NCA2NCAwIDEgMCAwIDEyOHptMjQwIDQ4LjFjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCA0Ny45IDY0IDAgMC00Ny45ek0yODggNDAwYzAtMjAuOSAxMy40LTM4LjcgMzItNDUuM2wwLTUwLjZjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGwwIDUwLjZjMTguNiA2LjYgMzIgMjQuNCAzMiA0NS4zbDAgOTZjMCAyNi41LTIxLjUgNDgtNDggNDhsLTEyOCAwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTk2eiJdfSxWYmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGVyc29uLXByYXlpbmciLGljb246WzM4NCw1MTIsWzEyODcyMCwicHJheSJdLCJmNjgzIiwiTTMyMCA2NGE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6TTIwMC43IDI2NGwyMi45IDMxLjVjNi41IDguOSAxNi4zIDE0LjcgMjcuMiAxNi4xczIxLjktMS43IDMwLjQtOC43bDg4LTcyYzE3LjEtMTQgMTkuNi0zOS4yIDUuNi01Ni4zcy0zOS4yLTE5LjYtNTYuMy01LjZsLTU1LjIgNDUuMi0yNi4yLTM2Yy0xNS42LTIxLjUtNDAuNi0zNC4yLTY3LjItMzQuMi0zMC45IDAtNTkuMiAxNy4xLTczLjYgNDQuNEw0Ny44IDI4MC45Yy0yMC4yIDM4LjUtOS40IDg1LjkgMjUuNiAxMTEuOEwxMjYuNiA0MzIgNDAgNDMyYy0yMi4xIDAtNDAgMTcuOS00MCA0MHMxNy45IDQwIDQwIDQwbDIwOCAwYzE3LjMgMCAzMi42LTExLjEgMzgtMjcuNXMtLjMtMzQuNC0xNC4yLTQ0LjdsLTExNi4xLTg1LjggNDUtOTB6Il19LERHdD1WYmUsTEd0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNsaXBib2FyZC1saXN0IixpY29uOlszODQsNTEyLFtdLCJmNDZkIiwiTTMxMS40IDMybDguNiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzUyYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmw4LjYgMEM4My42IDEyLjkgMTA0LjMgMCAxMjggMEwyNTYgMGMyMy43IDAgNDQuNCAxMi45IDU1LjQgMzJ6TTI0OCAxMTJjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRMMTM2IDY0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDExMiAwek0xMjggMjU2YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTMyIDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRsMTEyIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTExMiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHptMCAxMjhjMCAxMy4zIDEwLjcgMjQgMjQgMjRsMTEyIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTExMiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHpNOTYgNDE2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHoiXX0sRUd0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNhY2stZG9sbGFyIixpY29uOls1MTIsNTEyLFsxMjgxNzZdLCJmODFkIiwiTTMyOCAxMTJsLTE0NCAwLTM3LjMtNzQuNWMtMS44LTMuNi0yLjctNy42LTIuNy0xMS42IDAtMTQuMyAxMS42LTI1LjkgMjUuOS0yNS45TDM0Mi4xIDBjMTQuMyAwIDI1LjkgMTEuNiAyNS45IDI1LjkgMCA0LS45IDgtMi43IDExLjZMMzI4IDExMnpNMTY5LjYgMTYwbDE3Mi44IDAgNDguNyA0MC42QzQ1Ny42IDI1NiA0OTYgMzM4IDQ5NiA0MjQuNSA0OTYgNDcyLjggNDU2LjggNTEyIDQwOC41IDUxMmwtMzA1LjEgMEM1NS4yIDUxMiAxNiA0NzIuOCAxNiA0MjQuNSAxNiAzMzggNTQuNCAyNTYgMTIwLjkgMjAwLjZMMTY5LjYgMTYwek0yNjAgMjI0Yy0xMSAwLTIwIDktMjAgMjBsMCA0Yy0yOC44IC4zLTUyIDIzLjctNTIgNTIuNSAwIDI1LjcgMTguNSA0Ny42IDQzLjkgNTEuOGw0MS43IDdjNiAxIDEwLjQgNi4yIDEwLjQgMTIuMyAwIDYuOS01LjYgMTIuNS0xMi41IDEyLjVMMjE2IDM4NGMtMTEgMC0yMCA5LTIwIDIwczkgMjAgMjAgMjBsMjQgMCAwIDRjMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjBsMC00LjdjMjUtNC4xIDQ0LTI1LjcgNDQtNTEuOCAwLTI1LjctMTguNS00Ny42LTQzLjktNTEuOGwtNDEuNy03Yy02LTEtMTAuNC02LjItMTAuNC0xMi4zIDAtNi45IDUuNi0xMi41IDEyLjUtMTIuNWw0Ny41IDBjMTEgMCAyMC05IDIwLTIwcy05LTIwLTIwLTIwbC04IDAgMC00YzAtMTEtOS0yMC0yMC0yMHoiXX0sUEd0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im1vdW50YWluLXN1biIsaWNvbjpbNTc2LDUxMixbXSwiZTUyZiIsIk0yNTYuNSAwYzE0LjcgMCAyOC4yIDguMSAzNS4yIDIxbDIxNiA0MDBjNi43IDEyLjQgNi40IDI3LjQtLjggMzkuNS03LjIgMTIuMS0yMC4zIDE5LjUtMzQuMyAxOS41bC00MzIgMGMtMTQuMSAwLTI3LjEtNy40LTM0LjMtMTkuNXMtNy41LTI3LjEtLjgtMzkuNWwyMTYtNDAwIDIuOS00LjZDMjMxLjcgNi4yIDI0My42IDAgMjU2LjUgMHpNMTcwLjQgMjQ5LjlsMjYuOCAyNi44YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDQzLjMtNDMuM2M2LTYgMTQuMS05LjQgMjIuNi05LjRsNDIuOCAwLTcyLjEtMTMzLjUtODYuMSAxNTkuNHpNNDk2LjUgMTYwYTgwIDgwIDAgMSAxIDAtMTYwIDgwIDgwIDAgMSAxIDAgMTYweiJdfSxVYmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYXJyb3ctdXAtd2lkZS1zaG9ydCIsaWNvbjpbNTc2LDUxMixbInNvcnQtYW1vdW50LXVwIl0sImYxNjEiLCJNMTUwLjYgNDEuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTk2IDk2Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDk2IDE0MS4zIDk2IDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMzA2LjcgNDEuNCA0MS40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTk2LTk2ek0zMjAgNDgwbDMyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTMyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ6bTAtMTI4bDk2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTk2IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ6bTAtMTI4bDE2MCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xNjAgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMnptMC0xMjhsMjI0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMMzIwIDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyeiJdfSxJR3Q9VWJlLEFHdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ1c2Vycy1saW5lIixpY29uOls1NzYsNTEyLFtdLCJlNTkyIiwiTTIyNCAxMjhhNjQgNjQgMCAxIDEgMTI4IDAgNjQgNjQgMCAxIDEgLTEyOCAwek0xNzYgMzM2YzAtNjEuOSA1MC4xLTExMiAxMTItMTEyczExMiA1MC4xIDExMiAxMTJsMCA4YzAgMTMuMy0xMC43IDI0LTI0IDI0bC0xNzYgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRsMC04ek0zOTIgMTQ0YTU2IDU2IDAgMSAxIDExMiAwIDU2IDU2IDAgMSAxIC0xMTIgMHptMjcuMiAxMDAuNGM5LjEtMi45IDE4LjgtNC40IDI4LjgtNC40IDUzIDAgOTYgNDMgOTYgOTZsMCAxMC43YzAgMTEuOC05LjYgMjEuMy0yMS4zIDIxLjNsLTc4LjggMGMyLjctNy41IDQuMS0xNS42IDQuMS0yNGwwLThjMC0zNC4xLTEwLjYtNjUuNy0yOC44LTkxLjZ6bS0yNjIuNCAwYy0xOC4yIDI2LTI4LjggNTcuNS0yOC44IDkxLjZsMCA4YzAgOC40IDEuNCAxNi41IDQuMSAyNGwtNzguOCAwQzQxLjYgMzY4IDMyIDM1OC40IDMyIDM0Ni43TDMyIDMzNmMwLTUzIDQzLTk2IDk2LTk2IDEwIDAgMTkuNyAxLjUgMjguOCA0LjR6TTcyIDE0NGE1NiA1NiAwIDEgMSAxMTIgMCA1NiA1NiAwIDEgMSAtMTEyIDB6TTAgNDQwYzAtMTMuMyAxMC43LTI0IDI0LTI0bDUyOCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0TDI0IDQ2NGMtMTMuMyAwLTI0LTEwLjctMjQtMjR6Il19LE5HdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzdGFyLW9mLWRhdmlkIixpY29uOls1MTIsNTEyLFsxMDAxN10sImY2OWEiLCJNNDE1LjkgMzExLjlsLTI3LjggNDguMSA1NS43IDAtMjcuOC00OC4xek0zODMuNiAyNTZsLTYwLjItMTA0LTEzNC44IDAtNjAuMiAxMDQgNjAuMiAxMDQgMTM0LjggMCA2MC4yLTEwNHptNjQuNyAwbDU4LjQgMTAwLjljMy41IDYgNS4zIDEyLjggNS4zIDE5LjcgMCAyMS43LTE3LjYgMzkuNC0zOS40IDM5LjRsLTExNyAwLTYxLjMgMTA1LjhDMjg2LjUgNTM1LjYgMjcxLjggNTQ0IDI1NiA1NDRzLTMwLjUtOC40LTM4LjQtMjIuMmwtNjEuMy0xMDUuOC0xMTcgMGMtMjEuNyAwLTM5LjQtMTcuNi0zOS40LTM5LjQgMC02LjkgMS44LTEzLjcgNS4zLTE5LjdMNjMuNyAyNTYgNS4zIDE1NS4xQzEuOCAxNDkuMSAwIDE0Mi4zIDAgMTM1LjQgMCAxMTMuNiAxNy42IDk2IDM5LjQgOTZsMTE3IDAgNjEuMy0xMDUuOEMyMjUuNS0yMy42IDI0MC4yLTMyIDI1Ni0zMnMzMC41IDguNCAzOC40IDIyLjJsNjEuMyAxMDUuOCAxMTcgMGMyMS43IDAgMzkuNCAxNy42IDM5LjQgMzkuNCAwIDYuOS0xLjggMTMuNy01LjMgMTkuN0w0NDguMyAyNTZ6TTM4OC4xIDE1MmwyNy44IDQ4LjEgMjcuOC00OC4xLTU1LjcgMHpNMjkxIDk2bC0zNS02MC40LTM1IDYwLjQgNzAgMHpNMTIzLjkgMTUybC01NS43IDAgMjcuOCA0OC4xIDI3LjgtNDguMXpNOTYuMSAzMTEuOWwtMjcuOCA0OC4xIDU1LjcgMC0yNy44LTQ4LjF6TTIyMSA0MTZsMzUgNjAuNCAzNS02MC40LTcwIDB6Il19LFJHdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJub3Rlcy1tZWRpY2FsIixpY29uOls1MTIsNTEyLFtdLCJmNDgxIiwiTTk2IDM1MmMwIDM1LjMgMjguNyA2NCA2NCA2NGwxODEuNSAwYzE3IDAgMzMuMy02LjcgNDUuMy0xOC43TDQ5My4zIDI5MC43YzEyLTEyIDE4LjctMjguMyAxOC43LTQ1LjNMNTEyIDY0YzAtMzUuMy0yOC43LTY0LTY0LTY0TDE2MCAwQzEyNC43IDAgOTYgMjguNyA5NiA2NGwwIDI4OHpNMjg4IDExMmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDQ4IDQ4IDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC00OCAwIDAgNDhjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC00OC00OCAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZsNDggMCAwLTQ4YzAtOC44IDcuMi0xNiAxNi0xNnpNNDggMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0UzAgMTA2LjcgMCAxMjBMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjY0IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRMNjQgNDY0Yy04LjggMC0xNi03LjItMTYtMTZsMC0zMjh6Il19LE9HdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJhdXN0cmFsLXNpZ24iLGljb246WzQ0OCw1MTIsW10sImUwYTkiLCJNMjY2LjUgMjQwbC04NSAwIDQyLjUtMTA2LjQgNDIuNSAxMDYuNHptNjguOSAwTDI2Mi45IDU4LjNDMjU2LjUgNDIuNCAyNDEuMSAzMiAyMjQgMzJzLTMyLjUgMTAuNC0zOC45IDI2LjNMMTEyLjYgMjQwIDMyIDI0MGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw2MS40IDAtMTkuMiA0OC00Mi4zIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMjMuMSAwLTIwLjggNTIuMWMtNi42IDE2LjQgMS40IDM1IDE3LjkgNDEuNnMzNS0xLjQgNDEuNi0xNy45bDMwLjMtNzUuOSAyMDAgMCAzMC4zIDc1LjljNi42IDE2LjQgMjUuMiAyNC40IDQxLjYgMTcuOXMyNC40LTI1LjIgMTcuOS00MS42TDM5Mi45IDM4NCA0MTYgMzg0YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC00Mi4zIDAtMTkuMi00OCA2MS40IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTgwLjYgMHptLTQ5LjcgNDhsMTkuMiA0OC0xNjEuNiAwIDE5LjItNDggMTIzLjMgMHoiXX0sRkd0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNsaXBib2FyZC11c2VyIixpY29uOlszODQsNTEyLFtdLCJmN2YzIiwiTTMxMS40IDMybDguNiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzUyYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmw4LjYgMEM4My42IDEyLjkgMTA0LjMgMCAxMjggMEwyNTYgMGMyMy43IDAgNDQuNCAxMi45IDU1LjQgMzJ6TTI0OCAxMTJjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRMMTM2IDY0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDExMiAwek0xOTIgMzQ0YTU2IDU2IDAgMSAwIDAtMTEyIDU2IDU2IDAgMSAwIDAgMTEyek05OC4zIDQxM2MtMTIuOSAxNS42IDIuMiAzNSAyMi40IDM1bDE0Mi41IDBjMjAuMiAwIDM1LjMtMTkuNCAyMi40LTM1LTE0LjctMTcuNy0zNi45LTI5LTYxLjctMjlsLTY0IDBjLTI0LjggMC00NyAxMS4zLTYxLjcgMjl6Il19LEJHdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmaWxlLWltYWdlIixpY29uOlszODQsNTEyLFsxMjg0NDNdLCJmMWM1IiwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwTDIxMy41IDBjMTcgMCAzMy4zIDYuNyA0NS4zIDE4LjdMMzY1LjMgMTI1LjNjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM0wzODQgNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA2NHptMjA4LTUuNWwwIDkzLjVjMCAxMy4zIDEwLjcgMjQgMjQgMjRMMzI1LjUgMTc2IDIwOCA1OC41ek0xMjggMjU2YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTkyLjYgNDQ4bDE5OC44IDBjMTUuOCAwIDI4LjYtMTIuOCAyOC42LTI4LjYgMC03LjMtMi44LTE0LjQtNy45LTE5LjdMMjE1LjMgMjk3LjljLTYtNi4zLTE0LjQtOS45LTIzLjItOS45bC0uMyAwYy04LjggMC0xNy4xIDMuNi0yMy4yIDkuOUw3MS45IDM5OS43QzY2LjggNDA1IDY0IDQxMi4xIDY0IDQxOS40IDY0IDQzNS4yIDc2LjggNDQ4IDkyLjYgNDQ4eiJdfSxXYmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic3F1YXJlLWNhcmV0LXJpZ2h0IixpY29uOls0NDgsNTEyLFsiY2FyZXQtc3F1YXJlLXJpZ2h0Il0sImYxNTIiLCJNNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjB6TTMyMCAyNTZjMCA2LjctMi44IDEzLTcuNyAxNy42bC0xMTIgMTA0Yy03IDYuNS0xNy4yIDguMi0yNS45IDQuNFMxNjAgMzY5LjUgMTYwIDM2MGwwLTIwOGMwLTkuNSA1LjctMTguMiAxNC40LTIyczE4LjktMi4xIDI1LjkgNC40bDExMiAxMDRjNC45IDQuNSA3LjcgMTAuOSA3LjcgMTcuNnoiXX0sSEd0PVdiZSxxR3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidmlhbCIsaWNvbjpbNTEyLDUxMixbMTI5NTE0XSwiZjQ5MiIsIk0zNDIuNiA5LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zTDMwNi43IDY0IDI4LjEgMzQyLjZDMTAuMSAzNjAuNiAwIDM4NSAwIDQxMC41TDAgNDE2YzAgNTMgNDMgOTYgOTYgOTZsNS41IDBjMjUuNSAwIDQ5LjktMTAuMSA2Ny45LTI4LjFsMjc4LjYtMjc4LjYgOS40IDkuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC0xNjAtMTYwek0yMDUuMyAyNTZsMTQ2LjctMTQ2LjcgNTAuNyA1MC43LTk2IDk2LTEwMS41IDB6Il19LGpHdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoZWxpY29wdGVyIixpY29uOls1NzYsNTEyLFsxMjg2NDFdLCJmNTMzIiwiTTE3NiAzMmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwxNTIgMCAwIDQ4LTIyMC44IDAtMzIuOC0zOS40QzY5LjkgODMuMiA2My4xIDgwIDU2IDgwTDI0IDgwQzE1LjcgODAgOCA4NC4zIDMuNiA5MS40cy00LjggMTUuOS0xLjEgMjMuNGw0OCA5NkM1NC42IDIxOC45IDYyLjkgMjI0IDcyIDIyNGwxMDcuOCAwIDEwNCAxNDMuMWMxNS4xIDIwLjcgMzkuMSAzMi45IDY0LjcgMzIuOWw3NS41IDBjNzUuMSAwIDEzNi02MC45IDEzNi0xMzZTNDk5LjEgMTI4IDQyNCAxMjhsLTQ4IDAgMC00OCAxNTIgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEwxNzYgMzJ6TTM3NiAxOTJsNDggMGMzOS44IDAgNzIgMzIuMiA3MiA3MnMtMzIuMiA3Mi03MiA3MmwtNDggMCAwLTE0NHpNNTUyIDQxNmMtMTMuMyAwLTI0IDEwLjctMjQgMjQgMCA0LjQtMy42IDgtOCA4bC0yNzIgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwyNzIgMGMzMC45IDAgNTYtMjUuMSA1Ni01NiAwLTEzLjMtMTAuNy0yNC0yNC0yNHoiXX0sVkd0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im1pdHRlbiIsaWNvbjpbNDQ4LDUxMixbXSwiZjdiNSIsIk0zNTIgMzg0TDY0IDM4NCA1LjQgMTc4LjlDMS44IDE2Ni40IDAgMTUzLjQgMCAxNDAuMyAwIDYyLjggNjIuOCAwIDE0MC4zIDBsMy40IDBjNjYgMCAxMjMuNSA0NC45IDEzOS41IDEwOC45bDMxLjQgMTI1LjggMTcuNi0yMC4xQzM0NC44IDIwMC4yIDM2Mi45IDE5MiAzODIgMTkybDIuOCAwYzM0LjkgMCA2My4zIDI4LjMgNjMuMyA2My4zIDAgMTUuOS02IDMxLjItMTYuOCA0Mi45TDM1MiAzODR6TTMyIDQ2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwyODggMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDE2YzAgMTcuNy0xNC4zIDMyLTMyIDMyTDY0IDUxMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0xNnoiXX0sVUd0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Imdhcy1wdW1wIixpY29uOls1MTIsNTEyLFs5OTgxXSwiZjUyZiIsIk0zMiA2NEMzMiAyOC43IDYwLjcgMCA5NiAwTDI1NiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMTkyIDggMGM0OC42IDAgODggMzkuNCA4OCA4OGwwIDMyYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0xNTRjLTI3LjYtNy4xLTQ4LTMyLjItNDgtNjJsMC01OS41LTI1LjgtMjguM2MtOC45LTkuOC04LjItMjUgMS42LTMzLjlzMjUtOC4yIDMzLjkgMS42bDcxLjcgNzguOGM5LjQgMTAuMyAxNC42IDIzLjcgMTQuNiAzNy43TDUxMiAzNzZjMCAzOS44LTMyLjIgNzItNzIgNzJzLTcyLTMyLjItNzItNzJsMC0zMmMwLTIyLjEtMTcuOS00MC00MC00MGwtOCAwIDAgMTYxLjRjOS4zIDMuMyAxNiAxMi4yIDE2IDIyLjYgMCAxMy4zLTEwLjcgMjQtMjQgMjRMNDAgNTEyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNCAwLTEwLjUgNi43LTE5LjMgMTYtMjIuNkwzMiA2NHpNOTYgODBsMCA5NmMwIDguOCA3LjIgMTYgMTYgMTZsMTI4IDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtOTZjMC04LjgtNy4yLTE2LTE2LTE2TDExMiA2NGMtOC44IDAtMTYgNy4yLTE2IDE2eiJdfSxXR3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZW52ZWxvcGUtY2lyY2xlLWNoZWNrIixpY29uOls2NDAsNTEyLFtdLCJlNGU4IiwiTTY0IDExMmMwLTI2LjUgMjEuNS00OCA0OC00OGw0MTYgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDgxLjRjLTI0LjQtMTEuMi01MS40LTE3LjQtODAtMTcuNC04Ny43IDAtMTYxLjcgNTguOC0xODQuNyAxMzkuMi03LjEtMS4zLTE0LjEtNC4yLTIwLjEtOC44bC0yMDgtMTU2QzcxLjEgMTQxLjMgNjQgMTI3LjEgNjQgMTEyek0zMDQgMzY4YzAgMjguNiA2LjIgNTUuNiAxNy40IDgwTDEyOCA0NDhjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtMTg4IDE5OC40IDE0OC44YzEyLjYgOS40IDI2LjkgMTUuNCA0MS43IDE3LjkgMCAxLjgtLjEgMy41LS4xIDUuM3ptNDggMGExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0yMDEuNC02MC45Yy03LjEtNS4yLTE3LjItMy42LTIyLjQgMy41bC01MyA3Mi45LTI2LjgtMjYuOGMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNmw0MCA0MGMzLjMgMy4zIDcuOSA1IDEyLjYgNC42czguOS0yLjggMTEuNy02LjVsNjQtODhjNS4yLTcuMSAzLjYtMTcuMi0zLjUtMjIuM3oiXX0sR2JlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBlcnNvbi1za2F0aW5nIixpY29uOls1MTIsNTEyLFsic2thdGluZyJdLCJmN2M1IiwiTTM2OCA1NmE1NiA1NiAwIDEgMSAxMTIgMCA1NiA1NiAwIDEgMSAtMTEyIDB6TTEyOCAxMjhjMC0xNy43IDE0LjMtMzIgMzItMzJsMTUwLjEgMGM0OS45IDAgNzQuOSA2MC4zIDM5LjYgOTUuNmwtNjMuOSA2My45IDY5LjggMzFjMTcuMyA3LjcgMjguNSAyNC45IDI4LjUgNDMuOWwwIDg1LjZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC03NS4yLTgyLjQtMzYuNmMtNDEtMTguMi01MS03Mi0xOS4zLTEwMy43bDQwLjQtNDAuNC05OC43IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek04OS40IDM2MS40bDc1LjktNzUuOWM3LjcgMTkuNyAyMS42IDM3LjMgNDEgNDkuNmwtNzEuNiA3MS42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM3ptMzQ2LjUgODcuMWM4LjYgMi4xIDEzLjggMTAuOCAxMS42IDE5LjRsLS40IDEuN2MtNi4yIDI0LjktMjguNiA0Mi40LTU0LjMgNDIuNEwzMDQgNTEyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDg4LjggMGMxMSAwIDIwLjYtNy41IDIzLjMtMTguMmwuNC0xLjdjMi4xLTguNiAxMC44LTEzLjggMTkuNC0xMS42ek0xNDMuMiA0ODYuM2wtNi4yIDMuMWMtMjEuNiAxMC44LTQ3LjYgNi42LTY0LjYtMTAuNUwxMi43IDQxOS4zYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBsNTkuNiA1OS42YzcuMyA3LjMgMTguNSA5LjEgMjcuNyA0LjVsNi4yLTMuMWM3LjktNCAxNy41LS43IDIxLjUgNy4ycy43IDE3LjUtNy4yIDIxLjV6Il19LEdHdD1HYmUsVWI9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic3VuIixpY29uOls1NzYsNTEyLFs5NzI4XSwiZjE4NSIsIk0yODgtMzJjOC40IDAgMTYuMyA0LjQgMjAuNiAxMS43TDM2NC4xIDcyLjMgNDY4LjkgNDZjOC4yLTIgMTYuOSAuNCAyMi44IDYuM1M1MDAgNjcgNDk4IDc1LjFsLTI2LjMgMTA0LjcgOTIuNyA1NS41YzcuMiA0LjMgMTEuNyAxMi4yIDExLjcgMjAuNnMtNC40IDE2LjMtMTEuNyAyMC42TDQ3MS43IDMzMi4xIDQ5OCA0MzYuOGMyIDguMi0uNCAxNi45LTYuMyAyMi44UzQ3NyA0NjggNDY4LjkgNDY2bC0xMDQuNy0yNi4zLTU1LjUgOTIuN2MtNC4zIDcuMi0xMi4yIDExLjctMjAuNiAxMS43cy0xNi4zLTQuNC0yMC42LTExLjdMMjExLjkgNDM5LjcgMTA3LjIgNDY2Yy04LjIgMi0xNi44LS40LTIyLjgtNi4zUzc2IDQ0NSA3OCA0MzYuOGwyNi4yLTEwNC43LTkyLjYtNTUuNUM0LjQgMjcyLjIgMCAyNjQuNCAwIDI1NnM0LjQtMTYuMyAxMS43LTIwLjZMMTA0LjMgMTc5LjkgNzggNzUuMWMtMi04LjIgLjMtMTYuOCA2LjMtMjIuOFM5OSA0NCAxMDcuMiA0NmwxMDQuNyAyNi4yIDU1LjUtOTIuNiAxLjgtMi42YzQuNS01LjcgMTEuNC05LjEgMTguOC05LjF6bTAgMTQ0YTE0NCAxNDQgMCAxIDAgMCAyODggMTQ0IDE0NCAwIDEgMCAwLTI4OHptMCAyNDBhOTYgOTYgMCAxIDEgMC0xOTIgOTYgOTYgMCAxIDEgMCAxOTJ6Il19LEtiZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJiYXNlYmFsbCIsaWNvbjpbNTEyLDUxMixbMTI5MzU4LDk5MTgsImJhc2ViYWxsLWJhbGwiXSwiZjQzMyIsIk0yMzIuNCAxLjFjLTEyMi4yIDExLjQtMjE5LjUgMTA4LjctMjMwLjkgMjMwLjkgMTYuMi0uMSAzMi0xLjggNDcuMi01IDEzLTIuNyAyNS43IDUuNSAyOC40IDE4LjVzLTUuNSAyNS43LTE4LjUgMjguNGMtMTguNCAzLjktMzcuNiA2LTU3LjEgNi4xIDExLjQgMTIyLjIgMTA4LjcgMjE5LjUgMjMwLjkgMjMwLjkgLjEtMTkuNSAyLjItMzguNyA2LjEtNTcuMSAyLjctMTMgMTUuNS0yMS4zIDI4LjQtMTguNXMyMS4zIDE1LjUgMTguNSAyOC40Yy0zLjIgMTUuMi00LjkgMzEtNSA0Ny4yIDEyMi4yLTExLjQgMjE5LjUtMTA4LjcgMjMwLjktMjMwLjktMTYuMiAuMS0zMiAxLjgtNDcuMiA1LTEzIDIuNy0yNS43LTUuNS0yOC40LTE4LjVzNS41LTI1LjcgMTguNS0yOC40YzE4LjQtMy45IDM3LjYtNiA1Ny4xLTYuMS0xMS40LTEyMi4yLTEwOC43LTIxOS41LTIzMC45LTIzMC45LS4xIDE5LjUtMi4yIDM4LjctNi4xIDU3LjEtMi43IDEzLTE1LjUgMjEuMy0yOC40IDE4LjVzLTIxLjMtMTUuNS0xOC41LTI4LjRjMy4yLTE1LjIgNC45LTMxIDUtNDcuMnptMi44IDE1MS40Yy0yMS40IDMyLjktNDkuNSA2MC45LTgyLjMgODIuMy0xMS4xIDcuMi0yNiA0LjEtMzMuMi03cy00LjEtMjYgNy0zMy4yYzI3LjItMTcuNyA1MC41LTQxIDY4LjMtNjguMyA3LjItMTEuMSAyMi4xLTE0LjMgMzMuMi03czE0LjMgMjIuMSA3IDMzLjJ6TTM5My4xIDI4NC4yYzcuMiAxMS4xIDQuMSAyNi03IDMzLjItMjcuMiAxNy43LTUwLjUgNDEtNjguMyA2OC4zLTcuMiAxMS4xLTIyLjEgMTQuMy0zMy4yIDdzLTE0LjMtMjIuMS03LTMzLjJjMjEuNC0zMi45IDQ5LjUtNjAuOSA4Mi4zLTgyLjMgMTEuMS03LjIgMjYtNC4xIDMzLjIgN3oiXX0sS0d0PUtiZSxZR3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaW1hZ2UiLGljb246WzQ0OCw1MTIsW10sImYwM2UiLCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMnptNjQgODBhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2ek0yNzIgMjI0YzguNCAwIDE2LjEgNC40IDIwLjUgMTEuNWw4OCAxNDRjNC41IDcuNCA0LjcgMTYuNyAuNSAyNC4zUzM2OC43IDQxNiAzNjAgNDE2TDg4IDQxNmMtOC45IDAtMTcuMi01LTIxLjMtMTIuOXMtMy41LTE3LjUgMS42LTI0LjhsNTYtODBjNC41LTYuNCAxMS44LTEwLjIgMTkuNy0xMC4yczE1LjIgMy44IDE5LjcgMTAuMmwyNi40IDM3LjggNjEuNC0xMDAuNWM0LjQtNy4xIDEyLjEtMTEuNSAyMC41LTExLjV6Il19LFpHdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJub3RkZWYiLGljb246WzM4NCw1MTIsW10sImUxZmUiLCJNNjQgMzkwLjNMMTUzLjUgMjU2IDY0IDEyMS43IDY0IDM5MC4zek0xMDIuNSA0NDhMMjgxLjUgNDQ4IDE5MiAzMTMuNyAxMDIuNSA0NDh6bTEyOC0xOTJMMzIwIDM5MC4zIDMyMCAxMjEuNyAyMzAuNSAyNTZ6TTI4MS41IDY0TDEwMi41IDY0IDE5MiAxOTguMyAyODEuNSA2NHpNMCA0OEMwIDIxLjUgMjEuNSAwIDQ4IDBMMzM2IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCA0MTZjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNTEyYy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDQ4eiJdfSxZYmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYmFza2V0YmFsbCIsaWNvbjpbNTEyLDUxMixbMTI3OTM2LCJiYXNrZXRiYWxsLWJhbGwiXSwiZjQzNCIsIk05Mi43IDU4LjhsNzguNCA3OC40YzE4LjItMjUgMjguOS01NS45IDI4LjktODkuMiAwLTE0LjEtMS45LTI3LjctNS41LTQwLjYtMzggOS40LTcyLjYgMjcuMi0xMDEuOCA1MS40ek01OC44IDkyLjdjLTI0LjIgMjkuMi00MiA2My44LTUxLjQgMTAxLjggMTIuOSAzLjYgMjYuNSA1LjUgNDAuNiA1LjUgMzMuMyAwIDY0LjEtMTAuNyA4OS4yLTI4LjlMNTguOCA5Mi43ek0yNTYgMGMtNC42IDAtOS4yIC4xLTEzLjcgLjQgMy43IDE1LjMgNS43IDMxLjIgNS43IDQ3LjYgMCA0Ni42LTE1LjkgODkuNC00Mi42IDEyMy40TDI1NiAyMjIuMSA0MTkuMyA1OC44QzM3NC45IDIyLjEgMzE4LjEgMCAyNTYgMHpNNDggMjQ4Yy0xNi40IDAtMzIuNC0yLTQ3LjYtNS43LS4yIDQuNS0uNCA5LjEtLjQgMTMuNyAwIDYyLjEgMjIuMSAxMTguOSA1OC44IDE2My4zTDIyMi4xIDI1NiAxNzEuNCAyMDUuNEMxMzcuNCAyMzIuMSA5NC42IDI0OCA0OCAyNDh6bTQ2My42IDIxLjdjLjItNC41IC40LTkuMSAuNC0xMy43IDAtNjIuMS0yMi4xLTExOC45LTU4LjgtMTYzLjNMMjg5LjkgMjU2IDM0MC42IDMwNi42YzM0LTI2LjcgNzYuOS00Mi42IDEyMy40LTQyLjYgMTYuNCAwIDMyLjQgMiA0Ny42IDUuN3ptLTcuMSA0Ny44Yy0xMi45LTMuNi0yNi41LTUuNS00MC42LTUuNS0zMy4zIDAtNjQuMSAxMC43LTg5LjIgMjguOWw3OC40IDc4LjRjMjQuMi0yOS4yIDQyLTYzLjggNTEuNC0xMDEuOHpNMzQwLjkgMzc0LjhjLTE4LjIgMjUtMjguOSA1NS45LTI4LjkgODkuMiAwIDE0LjEgMS45IDI3LjcgNS41IDQwLjYgMzgtOS40IDcyLjYtMjcuMiAxMDEuOC01MS40bC03OC40LTc4LjR6bS0zNC4zLTM0LjNMMjU2IDI4OS45IDkyLjcgNDUzLjJjNDQuMyAzNi43IDEwMS4yIDU4LjggMTYzLjMgNTguOCA0LjYgMCA5LjItLjEgMTMuNy0uNC0zLjctMTUuMy01LjctMzEuMi01LjctNDcuNiAwLTQ2LjYgMTUuOS04OS40IDQyLjYtMTIzLjR6Il19LFhHdD1ZYmUsWmJlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBlbmNpbCIsaWNvbjpbNTEyLDUxMixbOTk5OSw2MTUwNCwicGVuY2lsLWFsdCJdLCJmMzAzIiwiTTM2LjQgMzUzLjJjNC4xLTE0LjYgMTEuOC0yNy45IDIyLjYtMzguN2wxODEuMi0xODEuMiAzMy45LTMzLjljMTYuNiAxNi42IDUxLjMgNTEuMyAxMDQgMTA0bDMzLjkgMzMuOS0zMy45IDMzLjktMTgxLjIgMTgxLjJjLTEwLjcgMTAuNy0yNC4xIDE4LjUtMzguNyAyMi42TDMwLjQgNTEwLjZjLTguMyAyLjMtMTcuMyAwLTIzLjQtNi4yUy0xLjQgNDg5LjMgLjkgNDgxTDM2LjQgMzUzLjJ6bTU1LjYtMy43Yy00LjQgNC43LTcuNiAxMC40LTkuMyAxNi42bC0yNC4xIDg2LjkgODYuOS0yNC4xYzYuNC0xLjggMTIuMi01LjEgMTctOS43TDkxLjkgMzQ5LjV6bTM1NC0xNDYuMWMtMTYuNi0xNi42LTUxLjMtNTEuMy0xMDQtMTA0TDMwOCA2NS41QzMzNC41IDM5IDM0OS40IDI0LjEgMzUyLjkgMjAuNiAzNjYuNCA3IDM4NC44LS42IDQwNC0uNlM0NDEuNiA3IDQ1NS4xIDIwLjZsMzUuNyAzNS43QzUwNC40IDY5LjkgNTEyIDg4LjMgNTEyIDEwNy40cy03LjYgMzcuNi0yMS4yIDUxLjFjLTMuNSAzLjUtMTguNCAxOC40LTQ0LjkgNDQuOXoiXX0sUUd0PVpiZSxKR3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGVyc29uLXdhbGtpbmctYXJyb3ctbG9vcC1sZWZ0IixpY29uOls2NDAsNTEyLFtdLCJlNTUxIiwiTTE2MCA4MGE1NiA1NiAwIDEgMCAwLTExMiA1NiA1NiAwIDEgMCAwIDExMnpNNzMuNCAyMjcuOWwyMi42LTIyLjYgMCA2OS4zYzAgMjggMTIuMiA1NC43IDMzLjUgNzIuOWw3MS40IDYxLjJjNS45IDUuMSA5LjggMTIuMSAxMC45IDE5LjhsMTIuNiA4OC4xYzIuNSAxNy41IDE4LjcgMjkuNyAzNi4yIDI3LjJzMjkuNy0xOC43IDI3LjItMzYuMmwtMTIuNi04OC4xYy0zLjMtMjMuMS0xNC45LTQ0LjEtMzIuNi01OS4zbC0zNC41LTI5LjYgMC0xMTUuMiAzLjggNC43YzE4LjIgMjIuOCA0NS44IDM2IDc1IDM2bDMzLjIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMzMuMiAwYy05LjcgMC0xOC45LTQuNC0yNS0xMmwtMTcuOS0yMi40Yy0yMy0yOC44LTU3LjktNDUuNi05NC44LTQ1LjYtMzIuMiAwLTYzLjEgMTIuOC04NS44IDM1LjZMMjguMSAxODIuNkMxMC4xIDIwMC42IDAgMjI1IDAgMjUwLjVMMCAyODhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTM3LjVjMC04LjUgMy40LTE2LjYgOS40LTIyLjZ6TTg1LjggNDA3LjNjLTEuNSA1LjItNC4zIDEwLTguMSAxMy44TDkuNCA0ODkuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw2OC4zLTY4LjNjMTEuNS0xMS41IDE5LjktMjUuOCAyNC40LTQxLjVsMi4yLTcuNi00Ni0zOS40Yy0yLjUtMi4yLTUtNC40LTcuNC02LjhMODUuOCA0MDcuM3pNMzU5IDMzNWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsNzIgNzJjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC0zMS0zMSAxMDIuMSAwYzEuMiAwIDIuNC0uMSAzLjUtLjMgNTYuMS0zLjkgMTAwLjUtNTAuNiAxMDAuNS0xMDcuNyAwLTU5LjYtNDguNC0xMDgtMTA4LTEwOGwtOTIgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw5MiAwYzMzLjEgMCA2MCAyNi45IDYwIDYwcy0yNi45IDYwLTYwIDYwbC05OC4xIDAgMzEtMzFjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtNzIgNzJ6Il19LGVLdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJkaWNlLXNpeCIsaWNvbjpbNDQ4LDUxMixbOTg2MV0sImY1MjYiLCJNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwzMjAgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZ6bTE2MCA2NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek0xMjggMjg4YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptMzIgNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMzIwIDE5MmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTMyIDY0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTMyMCAzODRhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0eiJdfSxYYmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYW5nbGVzLWRvd24iLGljb246WzM4NCw1MTIsWyJhbmdsZS1kb3VibGUtZG93biJdLCJmMTAzIiwiTTIxNC42IDQ3MC42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtMTYwLTE2MGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMEwxOTIgNDAyLjcgMzI5LjQgMjY1LjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBzMTIuNSAzMi44IDAgNDUuM2wtMTYwIDE2MHptMTYwLTM1MmwtMTYwIDE2MGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBsLTE2MC0xNjBjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBMMTkyIDIxMC43IDMyOS40IDczLjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBzMTIuNSAzMi44IDAgNDUuM3oiXX0sdEt0PVhiZSxhS3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic3lyaW5nZSIsaWNvbjpbNTc2LDUxMixbMTI4MTM3XSwiZjQ4ZSIsIk00OTcuNS0xN2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWwxNSAxNS00Ni4xIDQ2LjEtNjMtNjNjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsNyA3LTc4LjEgNzguMSA0MSA0MWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC00MS00MS00Ni4xIDQ2LjEgNDEgNDFjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNDEtNDEtMzcuNyAzNy43Yy0xMC41IDEwLjUtMTYuNCAyNC43LTE2LjQgMzkuNmwwIDg4LjgtNTcgNTdjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw1Ny01NyA4OC44IDBjMTQuOSAwIDI5LjEtNS45IDM5LjYtMTYuNGwyMjkuNy0yMjkuNyA3IDdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC02My02MyA0Ni4xLTQ2LjEgMTUgMTVjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC02NC02NHoiXX0sUWJlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6IndoZWF0LWF3biIsaWNvbjpbNTc2LDUxMixbIndoZWF0LWFsdCJdLCJlMmNkIiwiTTc5LjcgMjM0LjZjNi4yLTQuMSAxNC43LTMuNCAyMC4xIDIuMWw0Ni4xIDQ2LjEgNi4xIDYuN2MxOS43IDIzLjggMjYuMyA1NSAxOS4yIDgzLjkgMzEuNy03LjcgNjYuMiAxIDkwLjYgMjUuM2w0Ni4xIDQ2LjFjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZsLTcuNCA3LjRjLTM3LjUgMzcuNS05OC4zIDM3LjUtMTM1LjggMEwxMzQuMSA0NDQuMyA0OS40IDUyOWMtOS40IDkuNC0yNC41IDkuNC0zMy45IDAtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsODQuNy04NC43LTMwLjUtMzAuNWMtMzcuNS0zNy41LTM3LjUtOTguMyAwLTEzNS43bDcuNC03LjQgMi41LTIuMXptMTA0LTEwNGM2LjItNC4xIDE0LjctMy40IDIwLjEgMi4xbDQ2LjEgNDYuMSA2LjEgNi43YzE5LjcgMjMuOCAyNi4zIDU1IDE5LjIgODMuOSAzMS43LTcuNyA2Ni4yIDEgOTAuNiAyNS4zbDQ2LjEgNDYuMWM2LjIgNi4yIDYuMiAxNi40IDAgMjIuNmwtNy40IDcuNGMtMzcuNSAzNy41LTk4LjMgMzcuNS0xMzUuOCAwbC05NC45LTk0LjljLTM3LjUtMzcuNS0zNy41LTk4LjMgMC0xMzUuN2w3LjQtNy40IDIuNS0yLjF6TTQ5NS4yIDE1YzkuNC05LjQgMjQuNi05LjQgMzQgMCA4LjggOC44IDkuMyAyMi43IDEuNiAzMi4yTDUyOS4yIDQ5IDQxNC43IDE2My40YzcuNyAxIDE1LjIgMyAyMi41IDUuOUw0OTUuNSAxMTFjOS40LTkuNCAyNC42LTkuNCAzNCAwIDguOCA4LjggOS4zIDIyLjcgMS42IDMyLjFsLTEuNyAxLjgtNTIuNyA1Mi43IDM5IDM5YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42bC03LjQgNy40Yy0zNy41IDM3LjUtOTguMyAzNy41LTEzNS44IDBsLTk0LjktOTQuOWMtMzcuNS0zNy41LTM3LjUtOTguMyAwLTEzNS43bDcuNC03LjQgMi41LTIuMWM2LjItNC4xIDE0LjctMy40IDIwLjEgMi4xbDM5IDM5IDUyLjctNTIuN2M5LjQtOS40IDI0LjYtOS40IDM0IDAgOC44IDguOCA5LjMgMjIuNyAxLjYgMzIuMWwtMS43IDEuOC01OC4zIDU4LjNjMi44IDcuMSA0LjcgMTQuNSA1LjcgMjIuMUw0OTUuMiAxNXoiXX0sc0t0PVFiZSxpS3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGxhbmUtdXAiLGljb246WzUxMiw1MTIsW10sImUyMmQiLCJNMjAwIDI0YzAtMzAuOSAyNS4xLTU2IDU2LTU2czU2IDI1LjEgNTYgNTZsMCAxMjcuMyAxNzMuNiAxNTkuMmM2LjYgNi4xIDEwLjQgMTQuNiAxMC40IDIzLjZsMCA0My43YzAgMTAuOS0xMC43IDE4LjYtMjEuMSAxNS4ybC0xNjIuOS01NC4zIDAgOTkuNyA2NiA1Mi44YzMuOCAzIDYgNy42IDYgMTIuNWwwIDE5LjhjMCAxMC40LTkuOCAxOC0xOS45IDE1LjVMMjU2IDUxMiAxNDcuOSA1MzljLTEwLjEgMi41LTE5LjktNS4xLTE5LjktMTUuNWwwLTE5LjhjMC00LjkgMi4yLTkuNSA2LTEyLjVsNjYtNTIuOCAwLTk5LjctMTYyLjkgNTQuM0MyNi43IDM5Ni40IDE2IDM4OC43IDE2IDM3Ny44bDAtNDMuN2MwLTkgMy44LTE3LjUgMTAuNC0yMy42TDIwMCAxNTEuMyAyMDAgMjR6Il19LHJLdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJhbGlnbi1jZW50ZXIiLGljb246WzQ0OCw1MTIsW10sImYwMzciLCJNMzUyIDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyTDEyOCAzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwxOTIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnptOTYgMTI4YzAtMTcuNy0xNC4zLTMyLTMyLTMyTDMyIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzODQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnpNMCA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJsMzg0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMMzIgNDE2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNMzUyIDMyMGMwLTE3LjctMTQuMy0zMi0zMi0zMmwtMTkyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMTkyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJ6Il19LG9LdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJob2NrZXktcHVjayIsaWNvbjpbNTEyLDUxMixbXSwiZjQ1MyIsIk0yNTYgMjU2QzExNC42IDI1NiAwIDIxMyAwIDE2MHMxMTQuNi05NiAyNTYtOTYgMjU2IDQzIDI1NiA5Ni0xMTQuNiA5Ni0yNTYgOTZ6TTAgMzUyTDAgMjQyLjdjMTYuOSAxMi4zIDM3IDIyLjIgNTguMSAzMC4xIDUzIDE5LjkgMTIzIDMxLjIgMTk3LjkgMzEuMnMxNDQuOS0xMS4zIDE5Ny45LTMxLjJjMjEuMi03LjkgNDEuMi0xNy44IDU4LjEtMzAuMUw1MTIgMzUyYzAgNTMtMTE0LjYgOTYtMjU2IDk2UzAgNDA1IDAgMzUyeiJdfSxKYmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2lyY2xlLWFycm93LWxlZnQiLGljb246WzUxMiw1MTIsWyJhcnJvdy1jaXJjbGUtbGVmdCJdLCJmMGE4IiwiTTI1NiA1MTJhMjU2IDI1NiAwIDEgMCAwLTUxMiAyNTYgMjU2IDAgMSAwIDAgNTEyek0xMzUgMjM5bDgwLTgwYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtMzkgMzkgMTUwLjEgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMTUwLjEgMCAzOSAzOWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC04MC04MGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjl6Il19LG5LdD1KYmUsbEt0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBsdWctY2lyY2xlLWJvbHQiLGljb246WzY0MCw1MTIsW10sImU1NWIiLCJNMTkyLTMyYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgOTYgMTI4IDAgMC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgOTYgNjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwwIDQ4LjdjLTk4LjYgOC4xLTE3NiA5MC43LTE3NiAxOTEuMyAwIDI3LjMgNS43IDUzLjMgMTYgNzYuOWwwIDMuMWMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTY2LjdDMTY1LjIgMzk4LjEgOTYgMzE5LjEgOTYgMjI0bDAtNjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyUzc4LjMgOTYgOTYgOTZsNjQgMCAwLTk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyek0zNTIgNDAwYTE0NCAxNDQgMCAxIDEgMjg4IDAgMTQ0IDE0NCAwIDEgMSAtMjg4IDB6bTE3Ny40LTc3Yy01LjgtNC4yLTEzLjgtNC0xOS40IC41bC04MCA2NGMtNS4zIDQuMi03LjQgMTEuNC01LjEgMTcuOFM0MzMuMiA0MTYgNDQwIDQxNmwzMi45IDAtMTUuOSA0Mi40Yy0yLjUgNi43LS4yIDE0LjMgNS42IDE4LjZzMTMuOCA0IDE5LjQtLjVsODAtNjRjNS4zLTQuMiA3LjQtMTEuNCA1LjEtMTcuOFM1NTguOCAzODQgNTUyIDM4NGwtMzIuOSAwIDE1LjktNDIuNGMyLjUtNi43IC4yLTE0LjMtNS42LTE4LjZ6Il19LGNLdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJyZXN0cm9vbSIsaWNvbjpbNjQwLDUxMixbXSwiZjdiZCIsIk04MCA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem00MCAzMDRsMCAxMjhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0xNTQuOGMtOC4xIDkuMi0yMS4xIDEzLjItMzMuNSA5LjQtMTYuOS01LjMtMjYuMy0yMy4yLTIxLTQwLjFsMjkuNy05NS4yQzQ0LjQgMTU2LjkgODMuNiAxMjggMTI4IDEyOHM4My42IDI4LjkgOTYuOCA3MS4ybDI5LjcgOTUuMmM1LjMgMTYuOS00LjEgMzQuOC0yMSA0MC4xLTEyLjQgMy45LTI1LjQtLjItMzMuNS05LjRMMjAwIDQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTEyOC0xNiAwek0zMjAgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDQ2NGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTQ2NGMwLTEzLjMgMTAuNy0yNCAyNC0yNHpNNDY0IDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6TTQ0MCA0ODBsMC05Ni0xNy44IDBjLTEwLjkgMC0xOC42LTEwLjctMTUuMi0yMS4xbDktMjYuOWMtMy4yIDAtNi40LS41LTkuNS0xLjUtMTYuOS01LjMtMjYuMy0yMy4yLTIxLTQwLjFsMjkuNy05NS4yQzQyOC40IDE1Ni45IDQ2Ny42IDEyOCA1MTIgMTI4czgzLjYgMjguOSA5Ni44IDcxLjJsMjkuNyA5NS4yYzUuMyAxNi45LTQuMSAzNC44LTIxIDQwLjEtMy4yIDEtNi40IDEuNS05LjUgMS41bDkgMjYuOWMzLjUgMTAuNC00LjMgMjEuMS0xNS4yIDIxLjFsLTE3LjggMCAwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtOTYtMTYgMCAwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyeiJdfSxkS3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYW5jaG9yLWxvY2siLGljb246WzY0MCw1MTIsW10sImU0YWQiLCJNMzIwLjUgOTZhMzIgMzIgMCAxIDEgLTY0IDAgMzIgMzIgMCAxIDEgNjQgMHptLTMyLTk2Yy01MyAwLTk2IDQzLTk2IDk2IDAgNDEuOCAyNi43IDc3LjQgNjQgOTAuNWwwIDI1Ny45Yy02Mi45LTE0LjMtMTEwLjItNjkuNy0xMTEuOS0xMzYuNWwxNi4xIDE0LjFjMTAgOC43IDI1LjEgNy43IDMzLjktMi4zczcuNy0yNS4xLTIuMy0zMy45bC02NC01NmMtOS03LjktMjIuNi03LjktMzEuNiAwbC02NCA1NmMtMTAgOC43LTExIDIzLjktMi4zIDMzLjlzMjMuOSAxMSAzMy45IDIuM2wxNi4yLTE0LjJjMi4xIDExMy4xIDk0LjQgMjA0LjEgMjA4IDIwNC4xIDI4LjMgMCA1NS40LTUuNyA4MC0xNS45bDAtLjIgMC03Mi4yYy0xNC40IDkuNi0zMC42IDE2LjctNDggMjAuN2wwLTI1Ny45YzM3LjMtMTMuMiA2NC00OC43IDY0LTkwLjUgMC01My00My05Ni05Ni05NnptMjcyIDMwNC4xbDAgNDcuOS02NCAwIDAtNDcuOWMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyek00MTYuNSA0MDBsMCA5NmMwIDI2LjUgMjEuNSA0OCA0OCA0OGwxMjggMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTk2YzAtMjAuOS0xMy40LTM4LjctMzItNDUuM2wwLTUwLjZjMC00NC4yLTM1LjgtODAtODAtODBzLTgwIDM1LjgtODAgODBsMCA1MC42Yy0xOC42IDYuNi0zMiAyNC40LTMyIDQ1LjN6Il19LHVLdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0aW1lbGluZSIsaWNvbjpbNTc2LDUxMixbXSwiZTI5YyIsIk0xNjAgMTY5LjNjMjguMy0xMi4zIDQ4LTQwLjUgNDgtNzMuMyAwLTQ0LjItMzUuOC04MC04MC04MFM0OCA1MS44IDQ4IDk2YzAgMzIuOCAxOS43IDYxIDQ4IDczLjNsMCA1NC43LTY0IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMjI0IDAgMCA1NC43Yy0yOC4zIDEyLjMtNDggNDAuNS00OCA3My4zIDAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC0zMi44LTE5LjctNjEtNDgtNzMuM2wwLTU0LjcgMjI0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTY0IDAgMC01NC43YzI4LjMtMTIuMyA0OC00MC41IDQ4LTczLjMgMC00NC4yLTM1LjgtODAtODAtODBzLTgwIDM1LjgtODAgODBjMCAzMi44IDE5LjcgNjEgNDggNzMuM2wwIDU0LjctMjU2IDAgMC01NC43eiJdfSxwS3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibGlnaHRidWxiIixpY29uOlszODQsNTEyLFsxMjgxNjFdLCJmMGViIiwiTTI5Mi45IDM4NGM3LjMtMjIuMyAyMS45LTQyLjUgMzguNC01OS45IDMyLjctMzQuNCA1Mi43LTgwLjkgNTIuNy0xMzIuMSAwLTEwNi04Ni0xOTItMTkyLTE5MlMwIDg2IDAgMTkyYzAgNTEuMiAyMCA5Ny43IDUyLjcgMTMyLjEgMTYuNSAxNy40IDMxLjIgMzcuNiAzOC40IDU5LjlsMjAxLjcgMHpNMjg4IDQzMmwtMTkyIDAgMCAxNmMwIDQ0LjIgMzUuOCA4MCA4MCA4MGwzMiAwYzQ0LjIgMCA4MC0zNS44IDgwLTgwbDAtMTZ6TTE4NCAxMTJjLTM5LjggMC03MiAzMi4yLTcyIDcyIDAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0YzAtNjYuMyA1My43LTEyMCAxMjAtMTIwIDEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0eiJdfSxldmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2lyY2xlLWFycm93LXJpZ2h0IixpY29uOls1MTIsNTEyLFsiYXJyb3ctY2lyY2xlLXJpZ2h0Il0sImYwYTkiLCJNMjU2IDUxMmEyNTYgMjU2IDAgMSAwIDAtNTEyIDI1NiAyNTYgMCAxIDAgMCA1MTJ6bTQxLTE1OWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWwzOS0zOS0xNTAuMSAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDE1MC4xIDAtMzktMzljLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw4MCA4MGM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtODAgODB6Il19LGhLdD1ldmUsZkt0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im1hcnMtYW5kLXZlbnVzIixpY29uOls1MTIsNTEyLFs5ODkzXSwiZjIyNCIsIk0zNjggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwxMTIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDExMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTM0LjctNjMgNjNjMTkuNSAyOC40IDMxIDYyLjcgMzEgOTkuOCAwIDg2LjMtNjIuMSAxNTguMS0xNDQgMTczLjFsMCAzNC45IDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTMyIDAgMCAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTMyLTMyIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsMzIgMCAwLTM0LjljLTgxLjktMTUtMTQ0LTg2LjgtMTQ0LTE3My4xIDAtOTcuMiA3OC44LTE3NiAxNzYtMTc2IDM3IDAgNzEuNCAxMS40IDk5LjggMzFsNjMtNjMtMzQuNyAwek0zNTIgMjA4YTExMiAxMTIgMCAxIDAgLTIyNCAwIDExMiAxMTIgMCAxIDAgMjI0IDB6Il19LFdiPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im5ldHdvcmstd2lyZWQiLGljb246WzU3Niw1MTIsW10sImY2ZmYiLCJNMjQ4IDg4bDgwIDAgMCA0OC04MCAwIDAtNDh6bS04LTU2Yy0yNi41IDAtNDggMjEuNS00OCA0OGwwIDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDE2IDAgMCAzMi0yMjQgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw5NiAwIDAgMzItMTYgMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCA2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGw5NiAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtNjRjMC0yNi41LTIxLjUtNDgtNDgtNDhsLTE2IDAgMC0zMiAxOTIgMCAwIDMyLTE2IDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4bDAgNjRjMCAyNi41IDIxLjUgNDggNDggNDhsOTYgMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTY0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4bC0xNiAwIDAtMzIgOTYgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMjI0IDAgMC0zMiAxNiAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtNjRjMC0yNi41LTIxLjUtNDgtNDgtNDhsLTk2IDB6TTQ0OCAzNzZsOCAwIDAgNDgtODAgMCAwLTQ4IDcyIDB6bS0yNTYgMGw4IDAgMCA0OC04MCAwIDAtNDggNzIgMHoiXX0sbUt0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJ1aWxkaW5nLXNoaWVsZCIsaWNvbjpbNTc2LDUxMixbXSwiZTRkOCIsIk05NiAwQzYwLjcgMCAzMiAyOC43IDMyIDY0bDAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDIwMS4yIDBjLTEyLjUtMTQuNy0yMy4yLTMwLjgtMzEuOC00OGwtODkuNSAwIDAtODBjMC0xNy43IDE0LjMtMzIgMzItMzJsMzIgMCAwLTI2LjdjMC0xOC4xIDYuMS0zNS4yIDE2LjYtNDguOC0uNC0xLjQtLjYtMi45LS42LTQuNWwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDEgODYuNy0yOC45YzMuMS0xIDYuMi0xLjggOS4zLTIuNUw0MTYgNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRMOTYgMHptMzIgMTEyYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJ6TTI3MiA5NmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2ek0xMjggMjQwYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJ6TTQ0NS4zIDQ4OC41bC0xMy4zIDYuMyAwLTE4OC4xIDk2IDMyIDAgMTkuNmMwIDU1LjgtMzIuMiAxMDYuNS04Mi43IDEzMC4zek00MjEuOSAyNTkuNWwtMTEyIDM3LjNjLTEzLjEgNC40LTIxLjkgMTYuNi0yMS45IDMwLjRsMCAzMS4xYzAgNzQuNCA0MyAxNDIuMSAxMTAuMiAxNzMuN2wxOC41IDguN2M0LjggMi4yIDEwIDMuNCAxNS4yIDMuNHMxMC41LTEuMiAxNS4yLTMuNGwxOC41LTguN0M1MzMgNTAwLjMgNTc2IDQzMi42IDU3NiAzNTguMmwwLTMxLjFjMC0xMy44LTguOC0yNi0yMS45LTMwLjRsLTExMi0zNy4zYy02LjYtMi4yLTEzLjctMi4yLTIwLjIgMHoiXX0sZ0t0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNvZGUiLGljb246WzU3Niw1MTIsW10sImYxMjEiLCJNMzYwLjggMS4yYy0xNy00LjktMzQuNyA1LTM5LjYgMjJsLTEyOCA0NDhjLTQuOSAxNyA1IDM0LjcgMjIgMzkuNnMzNC43LTUgMzkuNi0yMmwxMjgtNDQ4YzQuOS0xNy01LTM0LjctMjItMzkuNnptNjQuNiAxMzYuMWMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsNzMuNCA3My40LTczLjQgNzMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw5Ni05NmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtOTYtOTZjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwem0tMjc0LjcgMGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTk2IDk2Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2w5NiA5NmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDc3LjMgMjU2IDE1MC42IDE4Mi42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zeiJdfSx0dmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmVhdGhlci1wb2ludGVkIixpY29uOls1MTIsNTEyLFsiZmVhdGhlci1hbHQiXSwiZjU2YiIsIk00NzUuMyAuMWM5LjktLjggMTkuNiAzIDI2LjYgMTBzMTAuOCAxNi43IDEwIDI2LjZjLTQgNDkuMy0xNy40IDEyNi4yLTQ2LjMgMTk5LjctMS44IDQuNS01LjUgNy45LTEwLjIgOS4zTDM3NC41IDI3MGMtMy45IDEuMi02LjUgNC43LTYuNSA4LjggMCA1LjEgNC4xIDkuMiA5LjIgOS4ybDM4LjYgMGMxMiAwIDE5LjcgMTIuOCAxMy41IDIzLjEtNCA2LjctOC4zIDEzLjItMTIuNyAxOS42LTIgMi45LTUgNS04LjQgNi4xTDMxMC41IDM2NmMtMy45IDEuMi02LjUgNC43LTYuNSA4LjggMCA1LjEgNC4xIDkuMiA5LjIgOS4ybDE2IDBjMTQuNiAwIDIxIDE3LjQgOC44IDI1LjQtNjggNDUtMTM3LjcgNDMuMy0xODIuNCAzMS4zLTEyLjctMy40LTI0LTkuOS0zNC40LTE3LjlMNDggNDk2Yy04LjggOC44LTIzLjIgOC44LTMyIDBzLTguOC0yMy4yIDAtMzJsODAtODAgLjUgLjVjLjctMS4zIDEuNi0yLjUgMi43LTMuNkwyNTYgMjI0YzguOC04LjggOC44LTIzLjIgMC0zMnMtMjMuMi04LjgtMzIgMEw4OS43IDMyNi4yYy04LjkgOC45LTI0IDQuNC0yNS04LjItNC4zLTUzLjIgOS4zLTEyMy4xIDcyLjYtMTg2LjQgOTEuMS05MS4xIDI1NC4yLTEyNC43IDMzNy45LTEzMS41eiJdfSxiS3Q9dHZlLHZLdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmaWxlLWNpcmNsZS1xdWVzdGlvbiIsaWNvbjpbNTc2LDUxMixbXSwiZTRlZiIsIk05NiAwQzYwLjcgMCAzMiAyOC43IDMyIDY0bDAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDE4MCAwYy0yMi43LTMxLjUtMzYtNzAuMi0zNi0xMTIgMC0xMDAuNiA3Ny40LTE4My4yIDE3Ni0xOTEuM2wwLTM4LjFjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMMjkwLjcgMTguN0MyNzguNyA2LjcgMjYyLjUgMCAyNDUuNSAwTDk2IDB6TTM1Ny41IDE3NkwyNjQgMTc2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNEwyNDAgNTguNSAzNTcuNSAxNzZ6TTQzMiA1NDRhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0wLTEwMGEyMCAyMCAwIDEgMSAwIDQwIDIwIDIwIDAgMSAxIDAtNDB6bTAtMTAwYy0xMS42IDAtMjEuMyA4LjItMjMuNSAxOS4yLTEuOCA4LjctMTAuMiAxNC4zLTE4LjkgMTIuNXMtMTQuMy0xMC4yLTEyLjUtMTguOWM1LjItMjUuNiAyNy44LTQ0LjggNTQuOS00NC44IDMwLjkgMCA1NiAyNS4xIDU2IDU2IDAgMTkuOC0xMS43IDM3LjgtMjkuOCA0NS45bC0xMC40IDQuNmMtMS4yIDcuNy03LjggMTMuNS0xNS44IDEzLjUtOC44IDAtMTYtNy4yLTE2LTE2IDAtMTEuMiA2LjYtMjEuMyAxNi44LTI1LjlsMTIuNC01LjVjNi42LTIuOSAxMC44LTkuNCAxMC44LTE2LjYgMC0xMy4zLTEwLjctMjQtMjQtMjR6Il19LHhLdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzaWduYXR1cmUiLGljb246WzY0MCw1MTIsW10sImY1YjciLCJNMTkyIDEyOGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgNy44YzAgMjcuNy0yLjQgNTUuMy03LjEgODIuNWwtODQuNCAyNS4zYy00MC42IDEyLjItNjguNCA0OS42LTY4LjQgOTJsMCAzMi40LTcyIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsNzIuNSAwYzQuMiAzNiAzNC44IDY0IDcyIDY0IDI2IDAgNTAtMTMuOSA2Mi45LTM2LjVsMTMuOS0yNC4zYzI2LjgtNDcgNDYuNS05Ny43IDU4LjQtMTUwLjVsOTQuNC0yOC4zLTEyLjUgMzcuNWMtMy4zIDkuOC0xLjYgMjAuNSA0LjQgMjguOFM0MDUuNyAzMjAgNDE2IDMyMGwxMjggMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtODMuNiAwIDE4LTUzLjljMy44LTExLjMgLjktMjMuOC03LjQtMzIuNHMtMjAuNy0xMS44LTMyLjItOC40TDMxNi40IDE5OC4xYzIuNC0yMC43IDMuNi00MS40IDMuNi02Mi4zbDAtNy44YzAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2bDAgMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTMyem0tOS4yIDE3N2w0OS0xNC43Yy0xMC40IDMzLjgtMjQuNSA2Ni40LTQyLjEgOTcuMmwtMTMuOSAyNC4zYy0xLjUgMi42LTQuMyA0LjMtNy40IDQuMy00LjcgMC04LjUtMy44LTguNS04LjVsMC03MS45YzAtMTQuMSA5LjMtMjYuNiAyMi44LTMwLjd6TTYxNiA0MTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTI5Mi45IDBjLTYuNSAxNi4zLTEzLjcgMzIuMy0yMS42IDQ4TDYxNiA0MTZ6Il19LGVTPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImVhcnRoLWFtZXJpY2FzIixpY29uOls1MTIsNTEyLFsxMjc3NTgsImVhcnRoIiwiZWFydGgtYW1lcmljYSIsImdsb2JlLWFtZXJpY2FzIl0sImY1N2QiLCJNNTUuNyAxOTkuN2wzMC45IDMwLjljNiA2IDE0LjEgOS40IDIyLjYgOS40bDIxLjUgMGM4LjUgMCAxNi42IDMuNCAyMi42IDkuNGwyOS4zIDI5LjNjNiA2IDkuNCAxNC4xIDkuNCAyMi42bDAgMzcuNWMwIDguNSAzLjQgMTYuNiA5LjQgMjIuNmwxMy4zIDEzLjNjNiA2IDkuNCAxNC4xIDkuNCAyMi42bDAgMTguN2MwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMi43YzAtOC41IDMuNC0xNi42IDkuNC0yMi42bDQ1LjMtNDUuM2M2LTYgOS40LTE0LjEgOS40LTIyLjZsMC0zNC43YzAtMTcuNy0xNC4zLTMyLTMyLTMybC04Mi43IDBjLTguNSAwLTE2LjYtMy40LTIyLjYtOS40bC0xNi0xNmMtNC4yLTQuMi02LjYtMTAtNi42LTE2IDAtMTIuNSAxMC4xLTIyLjYgMjIuNi0yMi42bDM0LjcgMGMxMi41IDAgMjIuNi0xMC4xIDIyLjYtMjIuNiAwLTYtMi40LTExLjgtNi42LTE2bC0xOS43LTE5LjdDMjQyIDEzMCAyNDAgMTI1LjEgMjQwIDEyMHMyLTEwIDUuNy0xMy43bDE3LjMtMTcuM2M1LjgtNS44IDkuMS0xMy43IDkuMS0yMS45IDAtNy4yLTIuNC0xMy43LTYuNC0xOC45LTMuMi0uMS02LjQtLjItOS42LS4yLTk1LjQgMC0xNzUuNyA2NC4yLTIwMC4zIDE1MS43ek00NjQgMjU2YzAtMzQuNi04LjQtNjcuMi0yMy40LTk1LjgtNi40IC45LTEyLjcgMy45LTE3LjkgOS4xbC0xMy40IDEzLjRjLTYgNi05LjQgMTQuMS05LjQgMjIuNmwwIDM0LjdjMCAxNy43IDE0LjMgMzIgMzIgMzJsMjQuMSAwYzIuNSAwIDUtLjMgNy4zLS44IC40LTUgLjUtMTAuMSAuNS0xNS4yek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwIDI1NiAyNTYgMCAxIDEgLTUxMiAweiJdfSx5S3Q9ZVMsd0t0PWVTLGtLdD1lUyxTS3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2Fycm90IixpY29uOls2NDAsNTEyLFsxMjkzNjVdLCJmNzg3IiwiTTQ1My4xLTM2LjdMNDQwLjktMjQuNmMtMzEuMiAzMS4yLTMxLjIgODEuOSAwIDExMy4xIDE1LjYgMTUuNiAzMS4yIDMxLjIgNDYuOSA0Ni45IDMxLjIgMzEuMiA4MS45IDMxLjIgMTEzLjEgMGwxMi4xLTEyLjFjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZMNjAwLjkgODguNmMtMzEuMi0zMS4yLTgxLjktMzEuMi0xMTMuMSAwIDMxLjItMzEuMiAzMS4yLTgxLjkgMC0xMTMuMUw0NzUuNy0zNi43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHpNMzMxLjYgOTZjLTQ1LjIgMC04Ny4xIDIwLjQtMTE1IDU0LjNMMjczLjMgMjA3YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBMMTkxLjYgMTkzLjIgNjcuMiA0NjYuOGMtNS41IDEyLjEtMi45IDI2LjQgNi41IDM1LjlzMjMuNyAxMiAzNS45IDYuNWwxNDEuNi02NC40LTQzLjgtNDMuOGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDU2LjUgNTYuNSA5NS4zLTQzLjNjNTMuMS0yNC4xIDg3LjItNzcuMSA4Ny4yLTEzNS41IDAtODIuMi02Ni42LTE0OC44LTE0OC44LTE0OC44eiJdfSx0Uz17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0ZW1wZXJhdHVyZS1mdWxsIixpY29uOlszMjAsNTEyLFsidGVtcGVyYXR1cmUtNCIsInRoZXJtb21ldGVyLTQiLCJ0aGVybW9tZXRlci1mdWxsIl0sImYyYzciLCJNMTYwIDBDMTA3IDAgNjQgNDMgNjQgOTZsMCAxNjQuN0MzNC41IDI4NyAxNiAzMjUuNCAxNiAzNjggMTYgNDQ3LjUgODAuNSA1MTIgMTYwIDUxMnMxNDQtNjQuNSAxNDQtMTQ0YzAtNDIuNi0xOC41LTgxLTQ4LTEwNy4zTDI1NiA5NmMwLTUzLTQzLTk2LTk2LTk2em02NCAzNjhjMCAzNS4zLTI4LjcgNjQtNjQgNjRzLTY0LTI4LjctNjQtNjRjMC0yNi45IDE2LjUtNDkuOSA0MC01OS4zTDEzNiA5NmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0bDAgMjEyLjdjMjMuNSA5LjUgNDAgMzIuNSA0MCA1OS4zeiJdfSxfS3Q9dFMsTUt0PXRTLHpLdD10UyxDS3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidGFibGUtY2VsbHMtcm93LWxvY2siLGljb246WzY0MCw1MTIsW10sImU2N2EiLCJNMjU2IDI4OGwwLTY0IDE1My4zIDBjMTcuMS00Mi4yIDU2LTczLjIgMTAyLjctNzlsMC00OWMwLTM1LjMtMjguNy02NC02NC02NEwxMjggMzJDOTIuNyAzMiA2NCA2MC43IDY0IDk2bDAgMzIwYzAgMzUuMyAyOC43IDY0IDY0IDY0bDI0MS4zIDBjLS45LTUuMi0xLjMtMTAuNi0xLjMtMTYuMWwwLTQ3LjktMTEyIDAgMC02NCAxMTMuMyAwYzMuNy0yMiAxNC44LTQxLjQgMzAuNy01NS42bDAtOC40LTE0NCAwem0wLTE5MmwxOTIgMCAwIDY0LTE5MiAwIDAtNjR6TTU2MCAyNzIuMWwwIDQ3LjktNjQgMCAwLTQ3LjljMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnpNNDE2IDM2OGwwIDk2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDEyOCAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtOTZjMC0yMC45LTEzLjQtMzguNy0zMi00NS4zbDAtNTAuNmMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MGwwIDUwLjZjLTE4LjYgNi42LTMyIDI0LjQtMzIgNDUuM3oiXX0sVEt0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJvbHQtbGlnaHRuaW5nIixpY29uOlszODQsNTEyLFtdLCJlMGI3IiwiTTAgMjU2TDI4LjUgMjhjMi0xNiAxNS42LTI4IDMxLjgtMjhMMjI4LjkgMGMxNSAwIDI3LjEgMTIuMSAyNy4xIDI3LjEgMCAzLjItLjYgNi41LTEuNyA5LjVMMjA4IDE2MCAzNDcuMyAxNjBjMjAuMiAwIDM2LjcgMTYuNCAzNi43IDM2LjcgMCA3LjQtMi4yIDE0LjYtNi40IDIwLjdsLTE5Mi4yIDI4MWMtNS45IDguNi0xNS42IDEzLjctMjUuOSAxMy43bC0yLjkgMGMtMTUuNyAwLTI4LjUtMTIuOC0yOC41LTI4LjUgMC0yLjMgLjMtNC42IC45LTYuOUwxNzYgMjg4IDMyIDI4OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6Il19LCRLdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjbG91ZC1zaG93ZXJzLXdhdGVyIixpY29uOls1MTIsNTEyLFtdLCJlNGU0IiwiTTI3OS4yIDU1LjdDMjYzLjkgMjIuOCAyMzAuNiAwIDE5MiAwIDEzOSAwIDk2IDQzIDk2IDk2IDYwLjcgOTYgMzIgMTI0LjcgMzIgMTYwczI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRzLTI4LjctNjQtNjQtNjRsLTEuNiAwYy03LjQtMzYuNS0zOS43LTY0LTc4LjQtNjQtMjIuMiAwLTQyLjMgOS4xLTU2LjggMjMuN3pNNDEwLjYgNDc2LjFjMjAuNyAxNS42IDQ2IDMwLjcgNzQuMiAzNC41IDEzLjEgMS44IDI1LjItNy41IDI3LTIwLjZzLTcuNS0yNS4yLTIwLjYtMjdjLTE1LjktMi4xLTMzLjItMTEuMy01MS43LTI1LjItMzguNC0yOS05MC41LTI5LTEyOSAwLTI0IDE4LjEtNDAuNyAyNi4zLTU0LjUgMjYuM3MtMzAuNS04LjItNTQuNS0yNi4zYy0zOC40LTI5LTkwLjUtMjktMTI5IDAtMTguNSAxMy45LTM1LjggMjMuMS01MS43IDI1LjItMTMuMSAxLjgtMjIuNCAxMy44LTIwLjYgMjdzMTMuOCAyMi40IDI3IDIwLjZjMjguMi0zLjggNTMuNi0xOC45IDc0LjItMzQuNSAyMS4zLTE2LjEgNDkuOS0xNi4xIDcxLjIgMCAyNC4yIDE4LjMgNTIuMyAzNS45IDgzLjQgMzUuOXM1OS4xLTE3LjcgODMuNC0zNS45YzIxLjMtMTYuMSA0OS45LTE2LjEgNzEuMiAwek0xMDAuMSAzMDMuNmM0LjItMTIuNi0yLjYtMjYuMi0xNS4yLTMwLjRzLTI2LjIgMi42LTMwLjQgMTUuMmwtMjEuMyA2NEMyOSAzNjUgMzUuOCAzNzguNiA0OC40IDM4Mi44czI2LjItMi42IDMwLjQtMTUuMmwyMS4zLTY0em0xMjAgMGM0LjItMTIuNi0yLjYtMjYuMi0xNS4yLTMwLjRzLTI2LjIgMi42LTMwLjQgMTUuMmwtMjEuMyA2NGMtNC4yIDEyLjYgMi42IDI2LjIgMTUuMiAzMC40czI2LjItMi42IDMwLjQtMTUuMmwyMS4zLTY0em0xMTIgMGM0LjItMTIuNi0yLjYtMjYuMi0xNS4yLTMwLjRzLTI2LjIgMi42LTMwLjQgMTUuMmwtMjEuMyA2NGMtNC4yIDEyLjYgMi42IDI2LjIgMTUuMiAzMC40czI2LjItMi42IDMwLjQtMTUuMmwyMS4zLTY0em0xMjAgMGM0LjItMTIuNi0yLjYtMjYuMi0xNS4yLTMwLjRzLTI2LjIgMi42LTMwLjQgMTUuMmwtMjEuMyA2NGMtNC4yIDEyLjYgMi42IDI2LjIgMTUuMiAzMC40czI2LjItMi42IDMwLjQtMTUuMmwyMS4zLTY0eiJdfSxhdmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYXJyb3ctdXAtbG9uZyIsaWNvbjpbMzIwLDUxMixbImxvbmctYXJyb3ctdXAiXSwiZjE3NiIsIk0xODIuNi0yMi42Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtMTI4IDEyOGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwxMjggNzcuMyAxMjggNTEyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC00MzQuNyA3My40IDczLjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtMTI4LTEyOHoiXX0sREt0PWF2ZSx5b2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYWRkcmVzcy1jYXJkIixpY29uOls1NzYsNTEyLFs2MjE0MCwiY29udGFjdC1jYXJkIiwidmNhcmQiXSwiZjJiYiIsIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDQ0OCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyem04MCAyNTZsNjQgMGM0NC4yIDAgODAgMzUuOCA4MCA4MCAwIDguOC03LjIgMTYtMTYgMTZMODAgMzg0Yy04LjggMC0xNi03LjItMTYtMTYgMC00NC4yIDM1LjgtODAgODAtODB6bS0yNC05NmE1NiA1NiAwIDEgMSAxMTIgMCA1NiA1NiAwIDEgMSAtMTEyIDB6bTI0MC00OGwxMTIgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMTEyIDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6bTAgOTZsMTEyIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTExMiAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0eiJdfSxMS3Q9eW9lLEVLdD15b2UsUEt0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImFuZ2xlLXJpZ2h0IixpY29uOlsyNTYsNTEyLFs4MjUwXSwiZjEwNSIsIk0yNDcuMSAyMzMuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtMTYwIDE2MGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMMTc5LjIgMjU2IDQxLjkgMTE4LjZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBsMTYwIDE2MHoiXX0sc3ZlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZhY2UtbWVoIixpY29uOls1MTIsNTEyLFsxMjg1MjgsIm1laCJdLCJmMTFhIiwiTTI1NiA1MTJhMjU2IDI1NiAwIDEgMCAwLTUxMiAyNTYgMjU2IDAgMSAwIDAgNTEyek0xNzYgMTc2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMTI4IDMyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTE3NiAzMjBsMTYwIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTE2MCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0eiJdfSxJS3Q9c3ZlLEFLdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJhcnJvdy11cC1mcm9tLWdyb3VuZC13YXRlciIsaWNvbjpbNjQwLDUxMixbXSwiZTRiNSIsIk0zMDMgN2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMGw4OCA4OGM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC00Ny00NyAwIDI3OC4xYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtMjc4LjEtNDcgNDdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlMMzAzIDd6TTI0MCAxOTJsMCAxNjMuMWMtMTAuNi0yLjItMjEuMy0zLjItMzItMy4xLTMyLjUgLjItNjQuOSAxMC43LTkyLjMgMzEuNC04LjggNi42LTE1LjkgMTAuOS0yMS43IDEzLjVsLS44IC40Yy0zLjcgMS43LTYuNCAyLjktOS44IC4zLTYtNC41LTEyLjYtOC0xOS4zLTEwLjRMNjQgMjQwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4bDEyOCAwem0zMzYgNDhsMCAxNTUuMmMtMS4xIC44LTIuMiAxLjUtMy4zIDIuNC00LjEgMy4xLTguMyAuOC0xMi42LTEuNS0uNi0uMy0xLjItLjYtMS44LTEtNS4yLTIuNy0xMS4xLTYuNi0xOC0xMS43LTI4LjEtMjEuMS02MS4zLTMxLjYtOTQuNC0zMS40LTE1LjUgLjEtMzEgMi41LTQ2IDcuM2wwLTE2Ny4zIDEyOCAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4ek00MDMuNCA0NzYuMUMzNzkuMSA0OTQuMyAzNTEuMSA1MTIgMzIwIDUxMnMtNTkuMS0xNy43LTgzLjQtMzUuOWMtMjEuMy0xNi4xLTQ5LjktMTYuMS03MS4yIDAtMjMuOCAxNy45LTU0LjEgMzUuNS04OC4xIDM1LjMtMjAuNC0uMS00MC43LTYuNy01OS44LTIxLjEtMTAuNi04LTEyLjctMjMtNC43LTMzLjZzMjMtMTIuNyAzMy42LTQuN2MxMS4zIDguNSAyMS42IDExLjQgMzEuMiAxMS41IDE3LjYgLjEgMzcuMy05LjQgNTguOS0yNS43IDM4LjQtMjkgOTAuNS0yOSAxMjkgMCAyNCAxOC4xIDQwLjcgMjYuMyA1NC41IDI2LjNzMzAuNS04LjIgNTQuNS0yNi4zYzM4LjQtMjkgOTAuNS0yOSAxMjkgMCAxNi45IDEyLjcgMzIuOSAyMS41IDQ3LjggMjQuNiAxMy43IDIuOCAyNy40IC45IDQyLjMtMTAuMyAxMC42LTggMjUuNi01LjkgMzMuNiA0LjdzNS45IDI1LjYtNC43IDMzLjZjLTI2LjQgMTkuOS01NC4yIDI0LjQtODAuNyAxOS4xLTI1LjMtNS4xLTQ4LjEtMTguOS02Ny4yLTMzLjMtMjEuMy0xNi4xLTQ5LjktMTYuMS03MS4yIDB6Il19LE5LdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJtYXAiLGljb246WzUxMiw1MTIsWzEyODUwNiw2MjA3Ml0sImYyNzkiLCJNNTEyIDQ4YzAtMTEuMS01LjctMjEuNC0xNS4yLTI3LjJzLTIxLjItNi40LTMxLjEtMS40TDM0OS41IDc3LjUgMTcwLjEgMTcuNmMtOC4xLTIuNy0xNi44LTIuMS0yNC40IDEuN2wtMTI4IDY0QzYuOCA4OC44IDAgOTkuOSAwIDExMkwwIDQ2NGMwIDExLjEgNS43IDIxLjQgMTUuMiAyNy4yczIxLjIgNi40IDMxLjEgMS40bDExNi4xLTU4LjEgMTc5LjQgNTkuOGM4LjEgMi43IDE2LjggMi4xIDI0LjQtMS43bDEyOC02NGMxMC44LTUuNCAxNy43LTE2LjUgMTcuNy0yOC42bDAtMzUyek0xOTIgMzc2LjlsMC0yODQuNSAxMjggNDIuNyAwIDI4NC41LTEyOC00Mi43eiJdfSxSS3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidXNlci1wbHVzIixpY29uOls2NDAsNTEyLFtdLCJmMjM0IiwiTTI4NS43IDMwNGM5OC41IDAgMTc4LjMgNzkuOCAxNzguMyAxNzguMyAwIDE2LjQtMTMuMyAyOS43LTI5LjcgMjkuN0w3Ny43IDUxMkM2MS4zIDUxMiA0OCA0OTguNyA0OCA0ODIuMyA0OCAzODMuOCAxMjcuOCAzMDQgMjI2LjMgMzA0bDU5LjQgMHpNNTI4IDgwYzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgNDggNDggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtNDggMCAwIDQ4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtNDgtNDggMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGw0OCAwIDAtNDhjMC0xMy4zIDEwLjctMjQgMjQtMjR6TTI1NiAyNDhhMTIwIDEyMCAwIDEgMSAwLTI0MCAxMjAgMTIwIDAgMSAxIDAgMjQweiJdfSxPS3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidmVudXMiLGljb246WzM4NCw1MTIsWzk3OTJdLCJmMjIxIiwiTTgwIDE3NmExMTIgMTEyIDAgMSAxIDIyNCAwIDExMiAxMTIgMCAxIDEgLTIyNCAwek0yMjMuOSAzNDkuMUMzMDUuOSAzMzQuMSAzNjggMjYyLjMgMzY4IDE3NiAzNjggNzguOCAyODkuMiAwIDE5MiAwUzE2IDc4LjggMTYgMTc2YzAgODYuMyA2Mi4xIDE1OC4xIDE0NC4xIDE3My4xLS4xIDEtLjEgMS45LS4xIDIuOWwwIDY0LTMyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMzIgMCAwIDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0zMiAzMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0zMiAwIDAtNjRjMC0xIDAtMS45LS4xLTIuOXoiXX0sRkt0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImRpYWdyYW0tc3VjY2Vzc29yIixpY29uOls0NDgsNTEyLFtdLCJlNDdhIiwiTTI4OS4yIDEzNy45YzIuNS02IDguMy05LjkgMTQuOC05LjlsNDAgMCAwLTI0YzAtMTMuMy0xMC43LTI0LTI0LTI0bC05OCAwYzEuMyA1LjEgMiAxMC41IDIgMTZsMCA2NGMwIDM1LjMtMjguNyA2NC02NCA2NGwtOTYgMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwyNTYgMGMzOS44IDAgNzIgMzIuMiA3MiA3MmwwIDI0IDQwIDBjNi41IDAgMTIuMyAzLjkgMTQuOCA5LjlzMS4xIDEyLjktMy41IDE3LjRsLTY0IDY0Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMGwtNjQtNjRjLTQuNi00LjYtNS45LTExLjUtMy41LTE3LjR6TTM4NCA0ODBMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NGwwLTY0YzAtMzUuMyAyOC43LTY0IDY0LTY0bDMyMCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgNjRjMCAzNS4zLTI4LjcgNjQtNjQgNjR6TTE2MCAxNjBsMC02NC05NiAwIDAgNjQgOTYgMHoiXX0sQkt0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImhlYWQtc2lkZS1jb3VnaC1zbGFzaCIsaWNvbjpbNTc2LDUxMixbXSwiZTA2MiIsIk01MzUtMjQuOWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlMNDEgNTM3LjFjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsMjUtMjUgMC00NDcuMmMwLTE1IDEwLjUtMjguMyAyNS40LTI5LjggNy40LS43IDE0LjktMS4xIDIyLjYtMS4xIDExMi43IDAgMjA2IDgzLjMgMjIxLjcgMTkxLjcgLjQgMyAxLjcgNS45IDMuNiA4LjNsMi4yIDIuNiAyMjcuNS0yMjcuNXpNMTMzLjggNTEyTDI4OCAzNTcuOCAyODggNDE2YzAgNTMtNDMgOTYtOTYgOTZsLTU4LjIgMHpNMTc2IDIyNGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTMzNiA0MGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bS04OCA3MmEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwem0tNjQgNDhhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptMTI4IDBhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptMjQgNzJhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0tODgtMjRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHoiXX0saXZlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImRpYWdyYW0tcHJvamVjdCIsaWNvbjpbNTEyLDUxMixbInByb2plY3QtZGlhZ3JhbSJdLCJmNTQyIiwiTTAgODBDMCA1My41IDIxLjUgMzIgNDggMzJsOTYgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDE2IDEyOCAwIDAtMTZjMC0yNi41IDIxLjUtNDggNDgtNDhsOTYgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDk2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC05NiAwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTE2LTEyOCAwIDAgMTZjMCA3LjMtMS43IDE0LjMtNC42IDIwLjVsNjguNiA5MS41IDgwIDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCA5NmMwIDI2LjUtMjEuNSA0OC00OCA0OGwtOTYgMGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhsMC05NmMwLTcuMyAxLjctMTQuMyA0LjYtMjAuNUwxMjggMjI0IDQ4IDIyNGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhMMCA4MHoiXX0sSEt0PWl2ZSxHYj17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0ZXJtaW5hbCIsaWNvbjpbNTEyLDUxMixbXSwiZjEyMCIsIk05LjQgMTE4LjZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBsMTYwIDE2MGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtMTYwIDE2MGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMMTQ2LjcgMjU2IDkuNCAxMTguNnpNMjI0IDM4NGwyNTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMjU2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6Il19LHFLdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJob3VzZS1maXJlIixpY29uOls2NDAsNTEyLFtdLCJlNTBjIiwiTTQ0OCAxOTJjMTQuMSAuNCAyMy44IDExLjQgMzIuNyAyMS43IDIgMi4zIDQgNC42IDYgNi43bDE5IDE5LjkgMTIuMi0xMy44YzUuNC02LjEgMTMuMy04LjkgMjAuOS04LjkgNy4yIDAgMTQuMyAyLjYgMTkuOSA3LjggMTkuNyAxOC4zIDM5LjggNDMuMiA1NSA3MC42IDE1LjEgMjcuMiAyNi4yIDU4LjIgMjYuMiA4OC4yIDAgODguNy03MS4zIDE1OS44LTE2MCAxNTkuOC04OS42IDAtMTYwLTcxLjMtMTYwLTE1OS44IDAtMzcuMyAxNi03My40IDM2LjgtMTA0LjUgMjAuOS0zMS4zIDQ3LjUtNTkgNzAuOS04MC4xIDUuNy01LjIgMTMuMS03LjcgMjAuMy03LjV6TTI2OC42IDYuNWMxMi4yLTkuMyAyOS43LTguNyA0MS4yIDJsMTQ3LjUgMTM3Yy0xOS4yLTQuMy00MCAuNS01NS41IDE0LjQtMzYuNCAzMi42LTY3LjcgNjkuOC05MC4zIDEwNi40LTEwLjMgMTYuNi0xOS43IDM0LjktMjYuOCA1My43TDI3MiAzMjBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4bDAgOTYgNjQuNiAwYzcuMyAxNy4yIDE2LjggMzMuNCAyOC4yIDQ4TDE0NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtMTc2LTE2IDBjLTEzLjIgMC0yNS04LjEtMjkuOC0yMC4zcy0xLjYtMjYuMiA4LTM1LjFsMjI0LTIwOCAyLjQtMnpNNDg5LjMgMzQzLjdjLTUuNC00LjctMTMuMS00LjctMTguNSAwLTE3LjcgMTUuNC01NC43IDUxLjktNTQuNyA4OC40IDAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjRjMC0zNi41LTM3LTczLTU0LjctODguNHoiXX0sakt0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im1hc2siLGljb246WzU3Niw1MTIsW10sImY2ZmEiLCJNMjg4IDY0QzY0IDY0IDAgMTYwIDAgMjcyUzgwIDQ0OCAxNzYgNDQ4bDguNCAwYzI0LjIgMCA0Ni40LTEzLjcgNTcuMi0zNS40bDIzLjItNDYuM2M0LjQtOC44IDEzLjMtMTQuMyAyMy4yLTE0LjNzMTguOCA1LjUgMjMuMiAxNC4zbDIzLjIgNDYuM2MxMC44IDIxLjcgMzMgMzUuNCA1Ny4yIDM1LjRsOC40IDBjOTYgMCAxNzYtNjQgMTc2LTE3NlM1MTIgNjQgMjg4IDY0ek05NiAyNTZhNjQgNjQgMCAxIDEgMTI4IDAgNjQgNjQgMCAxIDEgLTEyOCAwem0zMjAtNjRhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6Il19LFZLdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJodXJyaWNhbmUiLGljb246WzM4NCw1MTIsW10sImY3NTEiLCJNMCAyMDhDMCAxMDQuNCA3NS43IDE4LjUgMTc0LjkgMi42IDE4NCAxLjIgMTkyIDguNiAxOTIgMTcuOWwwIDYzLjNjMCA4LjQgNi41IDE1LjMgMTQuNyAxNi41IDEwMC4zIDE0LjkgMTc3LjMgMTAxLjMgMTc3LjMgMjA1LjcgMCAxMDMuNi03NS43IDE4OS41LTE3NC45IDIwNS40LTkuMiAxLjUtMTcuMS01LjktMTcuMS0xNS4ybDAtNjMuM0MxOTIgNDIxLjkgMTg1LjUgNDE1IDE3Ny4zIDQxMy43IDc3IDM5OC45IDAgMzEyLjQgMCAyMDh6bTI4OCA0OGE5NiA5NiAwIDEgMCAtMTkyIDAgOTYgOTYgMCAxIDAgMTkyIDB6bS05Ni0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6Il19LHJ2ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJlYXJ0aC1hZnJpY2EiLGljb246WzUxMiw1MTIsWzEyNzc1NywiZ2xvYmUtYWZyaWNhIl0sImY1N2MiLCJNNDQ3LjYgMTc1Yy0zMS42LTc0LjYtMTA1LjUtMTI3LTE5MS42LTEyNy0yMi4xIDAtNDMuNCAzLjUtNjMuNCA5LjgtLjQgMi0uNiA0LjEtLjYgNi4ybDAgNzMuNGMwIDEyLjUgMTAuMSAyMi42IDIyLjYgMjIuNiA2IDAgMTEuOC0yLjQgMTYtNi42bDE2LTE2YzYtNiAxNC4xLTkuNCAyMi42LTkuNGw1LjUgMGMyOC41IDAgNDIuOCAzNC41IDIyLjYgNTQuNi02IDYtMTQuMSA5LjQtMjIuNiA5LjRsLTYxLjUgMGMtOC41IDAtMTYuNiAzLjQtMjIuNiA5LjRsLTIxLjMgMjEuM2MtNiA2LTkuNCAxNC4xLTkuNCAyMi42bDAgNDIuN2MwIDE3LjcgMTQuMyAzMiAzMiAzMmwzMiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJsMi43IDBjOC41IDAgMTYuNi0zLjQgMjIuNi05LjRsMjkuMy0yOS4zYzYtNiA5LjQtMTQuMSA5LjQtMjIuNmwwLTE4LjdjMC04LjggNy4yLTE2IDE2LTE2czE2LTcuMiAxNi0xNmwwLTM0LjdjMC04LjUtMy40LTE2LjYtOS40LTIyLjZsLTE2LTE2Yy00LjItNC4yLTYuNi0xMC02LjYtMTYgMC0xMi41IDEwLjEtMjIuNiAyMi42LTIyLjZsNDUgMGMxMi40IDAgMjIuNy03LjEgMjgtMTd6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDAgMjU2IDI1NiAwIDEgMSAtNTEyIDB6Il19LFVLdD1ydmUsb3ZlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRodW1idGFjayIsaWNvbjpbMzg0LDUxMixbMTI4MjA0LDEyODM5MiwidGh1bWItdGFjayJdLCJmMDhkIiwiTTMyIDMyQzMyIDE0LjMgNDYuMyAwIDY0IDBMMzIwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTI5LjUgMCAxMC4zIDEzNC4xYzM3LjEgMjEuMiA2NS44IDU2LjQgNzguMiA5OS43bDMuOCAxMy40YzIuOCA5LjcgLjggMjAtNS4yIDI4LjFTMzYyIDM1MiAzNTIgMzUyTDMyIDM1MmMtMTAgMC0xOS41LTQuNy0yNS41LTEyLjdzLTgtMTguNC01LjItMjguMUw1IDI5Ny44YzEyLjQtNDMuMyA0MS03OC41IDc4LjItOTkuN0w5My41IDY0IDY0IDY0QzQ2LjMgNjQgMzIgNDkuNyAzMiAzMnpNMTYwIDQwMGw2NCAwIDAgMTEyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMTEyeiJdfSxXS3Q9b3ZlLEdLdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoYW5kLXBvaW50LWRvd24iLGljb246WzM4NCw1MTIsW10sImYwYTciLCJNMzIgNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0yMDgtNjQgMCAwIDIwOHpNMjI0IDMyMGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCA2NHptLTY0IDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtNDhjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCA0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnptMTYwLTk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC02NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDY0em0tOTYtODhsMCAuNmM5LjQtNS40IDIwLjMtOC42IDMyLTguNiAxMy4yIDAgMjUuNCA0IDM1LjYgMTAuOCA4LjctMjQuOSAzMi41LTQyLjggNjAuNC00Mi44IDExLjcgMCAyMi42IDMuMSAzMiA4LjZsMC04LjZDMzg0IDcxLjYgMzEyLjQgMCAyMjQgMEwxNjIuMyAwQzExOS44IDAgNzkuMSAxNi45IDQ5LjEgNDYuOUwzNy41IDU4LjVDMTMuNSA4Mi41IDAgMTE1LjEgMCAxNDlsMCAyN2MwIDM1LjMgMjguNyA2NCA2NCA2NGw4OCAwYzIyLjEgMCA0MC0xNy45IDQwLTQwcy0xNy45LTQwLTQwLTQwbC01NiAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDU2IDBjMzkuOCAwIDcyIDMyLjIgNzIgNzJ6Il19LG52ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmYWNlLW1laC1ibGFuayIsaWNvbjpbNTEyLDUxMixbMTI4NTY2LCJtZWgtYmxhbmsiXSwiZjVhNCIsIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwIDI1NiAyNTYgMCAxIDEgLTUxMiAwem0yMDgtNDhhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMTI4IDMyYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHoiXX0sS0t0PW52ZSxhUz17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0ZW1wZXJhdHVyZS1lbXB0eSIsaWNvbjpbMzIwLDUxMixbInRlbXBlcmF0dXJlLTAiLCJ0aGVybW9tZXRlci0wIiwidGhlcm1vbWV0ZXItZW1wdHkiXSwiZjJjYiIsIk02NCA5NmMwLTUzIDQzLTk2IDk2LTk2czk2IDQzIDk2IDk2bDAgMTY0LjdjMjkuNSAyNi40IDQ4IDY0LjcgNDggMTA3LjMgMCA3OS41LTY0LjUgMTQ0LTE0NCAxNDRTMTYgNDQ3LjUgMTYgMzY4YzAtNDIuNiAxOC41LTgxIDQ4LTEwNy4zTDY0IDk2em05NiAzMzZjMzUuMyAwIDY0LTI4LjcgNjQtNjRzLTI4LjctNjQtNjQtNjQtNjQgMjguNy02NCA2NCAyOC43IDY0IDY0IDY0eiJdfSxZS3Q9YVMsWkt0PWFTLFhLdD1hUyxRS3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYm9yZGVyLW5vbmUiLGljb246WzQ0OCw1MTIsW10sImY4NTAiLCJNMzIgNDE2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzItMTQuMy0zMi0zMi0zMnpNMTYwIDMyYTMyIDMyIDAgMSAwIDAgNjQgMzIgMzIgMCAxIDAgMC02NHpNMjg4IDQxNmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6TTE2MCA0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyek0yODggMzJhMzIgMzIgMCAxIDAgMCA2NCAzMiAzMiAwIDEgMCAwLTY0ek00MTYgNDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptMC0zODRhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0ek0zMiAzMmEzMiAzMiAwIDEgMCAwIDY0IDMyIDMyIDAgMSAwIDAtNjR6TTQxNiAzNTJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0ek0zMiAxNjBhMzIgMzIgMCAxIDAgMCA2NCAzMiAzMiAwIDEgMCAwLTY0em0wIDE5MmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTQxNiAxNjBhMzIgMzIgMCAxIDAgMCA2NCAzMiAzMiAwIDEgMCAwLTY0eiJdfSxKS3Q9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaGlnaGxpZ2h0ZXIiLGljb246WzU3Niw1MTIsW10sImY1OTEiLCJNMzE1IDMxNUw0NzMuNCA5OS45IDQ0NC4xIDcwLjYgMjI5IDIyOSAzMTUgMzE1em0tMTg3IDVsMCAwIDAtNzEuN2MwLTE1LjMgNy4yLTI5LjYgMTkuNS0zOC42TDQyMC42IDguNEM0MjggMi45IDQzNyAwIDQ0Ni4yIDAgNDU3LjYgMCA0NjguNSA0LjUgNDc2LjYgMTIuNmw1NC44IDU0LjhjOC4xIDguMSAxMi42IDE5IDEyLjYgMzAuNSAwIDkuMi0yLjkgMTguMi04LjQgMjUuNkwzMzQuNCAzOTYuNWMtOSAxMi4zLTIzLjQgMTkuNS0zOC42IDE5LjVsLTcxLjcgMC0yNS40IDI1LjRjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwbC01MC43LTUwLjdjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zTDEyOCAzMjB6TTcgNDY2LjNsNTEuNy01MS43IDcwLjYgNzAuNi0xOS43IDE5LjdjLTQuNSA0LjUtMTAuNiA3LTE3IDdMMjQgNTEyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNGwwLTQuN2MwLTYuNCAyLjUtMTIuNSA3LTE3eiJdfSxlWXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibW9uZXktYmlsbC13YXZlIixpY29uOls1MTIsNTEyLFtdLCJmNTNhIiwiTTAgNDE5LjZMMCAxMDkuNWMwLTIzLjIgMjQuMS0zOC42IDQ2LjMtMzIgODcuNyAyNi4yIDE0OS43IDUuNSAyMTIuMS0xNS4zIDY0LjUtMjEuNSAxMjkuNC00My4xIDIyMy4zLTEzLjEgMTguNSA1LjkgMzAuMyAyMy44IDMwLjMgNDMuM2wwIDMxMC4xYzAgMjMuMi0yNC4xIDM4LjYtNDYuMiAzMi04Ny43LTI2LjItMTQ5LjgtNS41LTIxMi4xIDE1LjMtNjQuNSAyMS41LTEyOS40IDQzLjEtMjIzLjMgMTMuMS0xOC41LTUuOS0zMC4zLTIzLjgtMzAuMy00My4zek0zMzYgMjU2YzAtNTMtMzUuOC05Ni04MC05NnMtODAgNDMtODAgOTYgMzUuOCA5NiA4MCA5NiA4MC00MyA4MC05NnpNMTIwIDQxMy42YzQuNCAwIDcuOS0zLjggNy4yLTguMS00LjYtMjcuOC0yNy00OS41LTU1LjItNTMtNC40LS41LTggMy4xLTggNy41bDAgMzkuOWMwIDMuNiAyLjQgNi44IDYgNy43IDE3LjkgNC4yIDM0LjMgNi4xIDUwIDYuMXptMzE4LjUtNTEuMWM1IC44IDkuNS0zIDkuNS04bDAtNDIuNmMwLTQuNC0zLjYtOC4xLTgtNy41LTI1LjIgMy4xLTQ1LjkgMjAuOS01My4yIDQ0LjYtMS40IDQuNyAyLjMgOS4xIDcuMiA5LjIgMTQuMiAuNCAyOSAxLjcgNDQuNCA0LjN6TTQ0OCAxNTJsMC0zOS45YzAtMy42LTIuNS02LjgtNi03LjctMTcuOS00LjItMzQuMy02LjEtNTAtNi4xLTQuNCAwLTcuOSAzLjgtNy4yIDguMSA0LjYgMjcuOCAyNyA0OS41IDU1LjIgNTMgNC40IC41IDgtMy4xIDgtNy41ek0xMjUuMiAxNjIuOWMxLjQtNC43LTIuMy05LjEtNy4yLTkuMi0xNC4yLS40LTI5LTEuNy00NC40LTQuMy01LS44LTkuNSAzLTkuNSA4TDY0IDIwMGMwIDQuNCAzLjYgOC4xIDggNy41IDI1LjItMy4xIDQ1LjktMjAuOSA1My4yLTQ0LjZ6Il19LHRZdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0b2lsZXQtcGFwZXItc2xhc2giLGljb246WzU3Niw1MTIsW10sImUwNzIiLCJNNDEtMjQuOWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBTLTIuMy0uMyA3IDkuMWw1MjggNTI4YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtOTQuNS05NC41YzQwLjItMjMgNjkuNS05Ni45IDY5LjUtMTg0LjYgMC0xMDYtNDMtMTkyLTk2LTE5MnMtOTYgODYtOTYgMTkyYzAgMjQuMSAyLjIgNDcuMiA2LjMgNjguNEwzMDQgMjM4LjIgMzA0IDIyNGMwLTU4LjkgMTEuOC0xMTQuNSAzMy4yLTE1Ny4yIDUuOS0xMS43IDEzLjEtMjMuNyAyMS45LTM0LjhMMTI4IDMyYy04LjMgMC0xNi40IDIuMS0yNC4xIDYuMWwtNjMtNjN6TTMyIDIyNGwwIDI2NGMwIDMwLjkgMjUuMSA1NiA1NiA1NmwxNjAgMGMzMC45IDAgNTYtMjUuMSA1Ni01NmwwLTExNC4yLTI1Ni0yNTZDMzcuOSAxNDguMiAzMiAxODQuNyAzMiAyMjR6bTQxNiA2NGMtMTcuNyAwLTMyLTI4LjctMzItNjRzMTQuMy02NCAzMi02NCAzMiAyOC43IDMyIDY0LTE0LjMgNjQtMzIgNjR6Il19LGFZdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmaWxlLXNoaWVsZCIsaWNvbjpbNTc2LDUxMixbXSwiZTRmMCIsIk05NiAwQzYwLjcgMCAzMiAyOC43IDMyIDY0bDAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDIwMS4yIDBDMjYxIDQ2OS40IDI0MCA0MTQuNSAyNDAgMzU2LjRsMC0zMS4xYzAtMzQuNCAyMi02NSA1NC43LTc1LjlsMTEyLTM3LjNjMy4xLTEgNi4yLTEuOCA5LjMtMi41bDAtMzkuMWMwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0wyOTAuNyAxOC43QzI3OC43IDYuNyAyNjIuNSAwIDI0NS41IDBMOTYgMHpNMzU3LjUgMTc2TDI2NCAxNzZjLTEzLjMgMC0yNC0xMC43LTI0LTI0TDI0MCA1OC41IDM1Ny41IDE3NnptODcuOCAzMTIuNWwtMTMuMyA2LjMgMC0xODguMSA5NiAzMiAwIDE5LjZjMCA1NS44LTMyLjIgMTA2LjUtODIuNyAxMzAuM3pNNDIxLjkgMjU5LjVsLTExMiAzNy4zYy0xMy4xIDQuNC0yMS45IDE2LjYtMjEuOSAzMC40bDAgMzEuMWMwIDc0LjQgNDMgMTQyLjEgMTEwLjIgMTczLjdsMTguNSA4LjdjNC44IDIuMiAxMCAzLjQgMTUuMiAzLjRzMTAuNS0xLjIgMTUuMi0zLjRsMTguNS04LjdDNTMzIDUwMC4zIDU3NiA0MzIuNiA1NzYgMzU4LjJsMC0zMS4xYzAtMTMuOC04LjgtMjYtMjEuOS0zMC40bC0xMTItMzcuM2MtNi42LTIuMi0xMy43LTIuMi0yMC4yIDB6Il19LHNZdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0ZXh0LWhlaWdodCIsaWNvbjpbNTc2LDUxMixbXSwiZjAzNCIsIk00MCAzMkMxNy45IDMyIDAgNDkuOSAwIDcybDAgNTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTMyIDY0IDAgMCAzMjAtMzIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwxMjggMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMzIgMCAwLTMyMCA2NCAwIDAgMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTU2YzAtMjIuMS0xNy45LTQwLTQwLTQwTDQwIDMyek00MzguNiAzNjEuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsNjQgNjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsNjQtNjRjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTkuNCA5LjQgMC0yMjkuNSA5LjQgOS40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTY0LTY0Yy02LTYtMTQuMS05LjQtMjIuNi05LjRzLTE2LjYgMy40LTIyLjYgOS40bC02NCA2NGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw5LjQtOS40IDAgMjI5LjUtOS40LTkuNHoiXX0sbHZlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZhY2UtZ3Jpbi10b25ndWUiLGljb246WzUxMiw1MTIsWzEyODUzOSwiZ3Jpbi10b25ndWUiXSwiZjU4OSIsIk0wIDI1NmMwIDEwNC40IDYyLjUgMTk0LjIgMTUyLjIgMjM0LjEtNS4zLTEzLTguMi0yNy4yLTguMi00Mi4xbDAtNjEuN2MtMTYuOS0xNi41LTMwLjEtMzYuNy0zOC4zLTU5LjMtNC4zLTExLjggNy43LTIxLjggMTkuNi0xOC4xIDM5LjIgMTIuMiA4My43IDE5LjEgMTMwLjcgMTkuMXM5MS41LTYuOSAxMzAuNy0xOS4xYzExLjktMy43IDIzLjkgNi4zIDE5LjYgMTguMS04LjMgMjIuNi0yMS41IDQyLjgtMzguMyA1OS4zbDAgNjEuN2MwIDE0LjktMi45IDI5LjEtOC4yIDQyLjEgODkuNy0zOS44IDE1Mi4yLTEyOS42IDE1Mi4yLTIzNC4xIDAtMTQxLjQtMTE0LjYtMjU2LTI1Ni0yNTZTMCAxMTQuNiAwIDI1NnptMTc2LTgwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMTI4IDMyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE2IDI0MGwwLTQ1LjRjMC0xNC43LTExLjktMjYuNi0yNi42LTI2LjZsLTIgMGMtMTEuMyAwLTIxLjEgNy45LTIzLjYgMTguOS0yLjggMTIuNi0yMC44IDEyLjYtMjMuNiAwLTIuNS0xMS4xLTEyLjMtMTguOS0yMy42LTE4LjlsLTIgMGMtMTQuNyAwLTI2LjYgMTEuOS0yNi42IDI2LjZsMCA0NS40YzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjR6Il19LGlZdD1sdmUscll0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZpbGUtc2lnbmF0dXJlIixpY29uOls2NDAsNTEyLFtdLCJmNTczIiwiTTY0LjEgNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRMMjc3LjYgMGMxNyAwIDMzLjMgNi43IDQ1LjMgMTguN0w0MjkuMyAxMjUuM2MxMiAxMiAxOC43IDI4LjMgMTguNyA0NS4zbDAgOTcuNS0xMzIgMTMyLTQyLjEgMC0xNi4xLTUzLjZjLTQuNy0xNS43LTE5LjEtMjYuNC0zNS41LTI2LjQtMTEuMyAwLTIxLjkgNS4xLTI4LjkgMTMuOUwxMzMuMyA0MDljLTguMyAxMC4zLTYuNiAyNS41IDMuNyAzMy43czI1LjUgNi42IDMzLjctMy44bDQ3LjEtNTguOCAxNS4yIDUwLjdjMyAxMC4yIDEyLjQgMTcuMSAyMyAxNy4xbDMxLjUgMGMtLjkgMy4xLTEuNyA2LjMtMi4zIDkuNWwtMTAuOSA1NC41LTE0Ni4yIDBjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtMzg0em0yMDgtNS41bDAgOTMuNWMwIDEzLjMgMTAuNyAyNCAyNCAyNGw5My41IDAtMTE3LjUtMTE3LjV6bTYwLjIgNDA4LjRjMi41LTEyLjQgOC42LTIzLjggMTcuNS0zMi43bDExOC45LTExOC45IDgwIDgwLTExOC45IDExOC45Yy04LjkgOC45LTIwLjMgMTUtMzIuNyAxNy41bC01OS42IDExLjljLS45IC4yLTEuOSAuMy0yLjkgLjMtOCAwLTE0LjYtNi41LTE0LjYtMTQuNiAwLTEgLjEtMS45IC4zLTIuOWwxMS45LTU5LjZ6bTI2Ny44LTEyM2wtMjguOCAyOC44LTgwLTgwIDI4LjgtMjguOGMyMi4xLTIyLjEgNTcuOS0yMi4xIDgwIDBzMjIuMSA1Ny45IDAgODB6Il19LG9ZdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJidWlsZGluZy13aGVhdCIsaWNvbjpbNjQwLDUxMixbXSwiZTRkYiIsIk05NiAwQzYwLjcgMCAzMiAyOC43IDMyIDY0bDAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDI0OS4zIDBjLTYtMTQuOC05LjMtMzEtOS4zLTQ4IDAtMTcuNyA3LjItMzMuNyAxOC44LTQ1LjMtMTEuOS0xOS40LTE4LjgtNDIuMy0xOC44LTY2LjcgMC0xNy43IDcuMi0zMy43IDE4LjgtNDUuMy0xMS45LTE5LjQtMTguOC00Mi4zLTE4LjgtNjYuNyAwLTI1LjIgMTQuNS00Ni45IDM1LjYtNTcuNC0yLjQtNy4xLTMuNi0xNC43LTMuNi0yMi42bDAtMzJDMzY4IDk2LjcgMzg4IDcwLjEgNDE1LjkgNjAuMSA0MTMuOSAyNi42IDM4NiAwIDM1MiAwTDk2IDB6TTIwOCAzNTJsMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDgwLTk2IDAgMC04MGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMTI4IDExMmMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyek0yNzIgOTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNnpNMTI4IDI0MGMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyem0xNDQtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNnptMzUyIDBsLTE2IDBjLTQ0LjIgMC04MCAzNS44LTgwIDgwIDAgOC44IDcuMiAxNiAxNiAxNmwxNiAwYzQ0LjIgMCA4MC0zNS44IDgwLTgwIDAtOC44LTcuMi0xNi0xNi0xNnptMTYgMTI4YzAtOC44LTcuMi0xNi0xNi0xNmwtMTYgMGMtNDQuMiAwLTgwIDM1LjgtODAgODAgMCA4LjggNy4yIDE2IDE2IDE2bDE2IDBjNDQuMiAwIDgwLTM1LjggODAtODB6bTAgMTEyYzAtOC44LTcuMi0xNi0xNi0xNmwtMTYgMGMtNDQuMiAwLTgwIDM1LjgtODAgODAgMCA4LjggNy4yIDE2IDE2IDE2bDE2IDBjNDQuMiAwIDgwLTM1LjggODAtODB6TTQ5NiA1MjhjMC00NC4yLTM1LjgtODAtODAtODBsLTE2IDBjLTguOCAwLTE2IDcuMi0xNiAxNiAwIDQ0LjIgMzUuOCA4MCA4MCA4MGwxNiAwYzguOCAwIDE2LTcuMiAxNi0xNnptLTE2LTk2YzguOCAwIDE2LTcuMiAxNi0xNiAwLTQ0LjItMzUuOC04MC04MC04MGwtMTYgMGMtOC44IDAtMTYgNy4yLTE2IDE2IDAgNDQuMiAzNS44IDgwIDgwIDgwbDE2IDB6bTE2LTEyOGMwLTQ0LjItMzUuOC04MC04MC04MGwtMTYgMGMtOC44IDAtMTYgNy4yLTE2IDE2IDAgNDQuMiAzNS44IDgwIDgwIDgwbDE2IDBjOC44IDAgMTYtNy4yIDE2LTE2ek01MTIgNjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0bDAgMTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0xMDRjMC0xMy4zLTEwLjctMjQtMjQtMjR6bTk2IDY0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0bDAgMzJjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTMyek00NDAgMTA0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDMyYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0zMmMwLTEzLjMtMTAuNy0yNC0yNC0yNHoiXX0sbll0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBsdWctY2lyY2xlLW1pbnVzIixpY29uOls2NDAsNTEyLFtdLCJlNTVlIiwiTTE5Mi0zMmMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDk2IDEyOCAwIDAtOTZjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDk2IDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsMCA0OC43Yy05OC42IDguMS0xNzYgOTAuNy0xNzYgMTkxLjMgMCAyNy4zIDUuNyA1My4zIDE2IDc2LjlsMCAzLjFjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC02Ni43QzE2NS4yIDM5OC4xIDk2IDMxOS4xIDk2IDIyNGwwLTY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlM3OC4zIDk2IDk2IDk2bDY0IDAgMC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMzUyIDQwMGExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0yMjQgMGMwLTguOC03LjItMTYtMTYtMTZsLTEyOCAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDEyOCAwYzguOCAwIDE2LTcuMiAxNi0xNnoiXX0sd29lPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZ1dGJvbCIsaWNvbjpbNTEyLDUxMixbOTkxNywiZnV0Ym9sLWJhbGwiLCJzb2NjZXItYmFsbCJdLCJmMWUzIiwiTTQxNy4zIDM2MC4xbC03MS42LTQuOGMtNS4yLS4zLTEwLjMgMS4xLTE0LjUgNC4ycy03LjIgNy40LTguNCAxMi41bC0xNy42IDY5LjZDMjg5LjUgNDQ1LjggMjczIDQ0OCAyNTYgNDQ4cy0zMy41LTIuMi00OS4yLTYuNEwxODkuMiAzNzJjLTEuMy01LTQuMy05LjQtOC40LTEyLjVzLTkuMy00LjUtMTQuNS00LjJsLTcxLjYgNC44Yy0xNy42LTI3LjItMjguNS01OS4yLTMwLjQtOTMuNkwxMjUgMjI4LjNjNC40LTIuOCA3LjYtNyA5LjItMTEuOXMxLjQtMTAuMi0uNS0xNWwtMjYuNy02Ni42QzEyOCAxMDkuMiAxNTUuMyA4OSAxODYuNyA3Ni45bDU1LjIgNDZjNCAzLjMgOSA1LjEgMTQuMSA1LjFzMTAuMi0xLjggMTQuMS01LjFsNTUuMi00NmMzMS4zIDEyLjEgNTguNyAzMi4zIDc5LjYgNTcuOWwtMjYuNyA2Ni42Yy0xLjkgNC44LTIuMSAxMC4xLS41IDE1czQuOSA5LjEgOS4yIDExLjlsNjAuNyAzOC4yYy0xLjkgMzQuNC0xMi44IDY2LjQtMzAuNCA5My42ek0yNTYgNTEyYTI1NiAyNTYgMCAxIDAgMC01MTIgMjU2IDI1NiAwIDEgMCAwIDUxMnptMTQuMS0zMjUuN2MtOC40LTYuMS0xOS44LTYuMS0yOC4yIDBMMTk0IDIyMWMtOC40IDYuMS0xMS45IDE2LjktOC43IDI2LjhsMTguMyA1Ni4zYzMuMiA5LjkgMTIuNCAxNi42IDIyLjggMTYuNmw1OS4yIDBjMTAuNCAwIDE5LjYtNi43IDIyLjgtMTYuNmwxOC4zLTU2LjNjMy4yLTkuOS0uMy0yMC43LTguNy0yNi44bC00Ny45LTM0Ljh6Il19LGxZdD13b2UsY1l0PXdvZSxjdmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2lyY2xlLXBsdXMiLGljb246WzUxMiw1MTIsWyJwbHVzLWNpcmNsZSJdLCJmMDU1IiwiTTI1NiA1MTJhMjU2IDI1NiAwIDEgMCAwLTUxMiAyNTYgMjU2IDAgMSAwIDAgNTEyek0yMzIgMzQ0bDAtNjQtNjQgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGw2NCAwIDAtNjRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDY0IDY0IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTY0IDAgMCA2NGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNHoiXX0sZFl0PWN2ZSx1WXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYnJhemlsaWFuLXJlYWwtc2lnbiIsaWNvbjpbNTEyLDUxMixbXSwiZTQ2YyIsIk00MDAgMTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAxNiAxNiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC00OC45IDBjLTI2IDAtNDcuMSAyMS4xLTQ3LjEgNDcuMSAwIDIyLjUgMTUuOSA0MS44IDM3LjkgNDYuMmwzMi44IDYuNmM1MS45IDEwLjQgODkuMyA1NiA4OS4zIDEwOSAwIDUwLjYtMzMuOCA5My4zLTgwIDEwNi43bDAgMjAuNGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTE2LTMyIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsNjQuOSAwYzI2IDAgNDcuMS0yMS4xIDQ3LjEtNDcuMSAwLTIyLjUtMTUuOS00MS44LTM3LjktNDYuMmwtMzIuOC02LjZjLTUxLjktMTAuNC04OS4zLTU2LTg5LjMtMTA5IDAtNTAuNiAzMy44LTkzLjIgODAtMTA2LjdMMzY4IDQ4YzAtMTcuNyAxNC4zLTMyIDMyLTMyek0wIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMybDgwIDBjNzkuNSAwIDE0NCA2NC41IDE0NCAxNDQgMCA1NC4zLTMwIDEwMS41LTc0LjQgMTI2LjFsNDEgMTM2LjdjNS4xIDE2LjktNC41IDM0LjgtMjEuNSAzOS44cy0zNC44LTQuNS0zOS44LTIxLjVMMTIwLjEgMzE5LjhjLTIuNyAuMS01LjQgLjItOC4xIC4ybC00OCAwIDAgMTI4YzAgMTcuNy0xNC4zIDMyLTMyIDMyUzAgNDY1LjcgMCA0NDhMMCA2NHpNNjQgMjU2bDQ4IDBjNDQuMiAwIDgwLTM1LjggODAtODBzLTM1LjgtODAtODAtODBsLTQ4IDAgMCAxNjB6Il19LHBZdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzdGFyLWFuZC1jcmVzY2VudCIsaWNvbjpbNTEyLDUxMixbOTc3MF0sImY2OTkiLCJNMCAyNTZjMC0xNDEuNCAxMTQuNi0yNTYgMjU2LTI1NiAzMyAwIDY0LjYgNi4zIDkzLjYgMTcuNyA3LjQgMi45IDExLjUgMTAuNyA5LjggMTguNHMtOC44IDEzLTE2LjcgMTIuNGMtNC44LS4zLTkuNy0uNS0xNC42LS41LTExNC45IDAtMjA4IDkzLjEtMjA4IDIwOHM5My4xIDIwOCAyMDggMjA4YzQuOSAwIDkuOC0uMiAxNC42LS41IDcuOS0uNSAxNSA0LjcgMTYuNyAxMi40cy0yLjQgMTUuNS05LjggMTguNEMzMjAuNiA1MDUuNyAyODkgNTEyIDI1NiA1MTIgMTE0LjYgNTEyIDAgMzk3LjQgMCAyNTZ6TTM3NS40IDEzNy40YzMuNS03LjEgMTMuNy03LjEgMTcuMiAwbDMxLjUgNjMuOGMxLjQgMi44IDQuMSA0LjggNy4yIDUuM2w3MC40IDEwLjJjNy45IDEuMSAxMSAxMC44IDUuMyAxNi40bC01MC45IDQ5LjZjLTIuMyAyLjItMy4zIDUuNC0yLjggOC41bDEyIDcwLjFjMS4zIDcuOC02LjkgMTMuOC0xMy45IDEwLjFsLTYzLTMzLjFjLTIuOC0xLjUtNi4xLTEuNS04LjkgMGwtNjMgMzMuMWMtNyAzLjctMTUuMy0yLjMtMTMuOS0xMC4xbDEyLTcwLjFjLjUtMy4xLS41LTYuMy0yLjgtOC41TDI2MSAyMzMuMWMtNS43LTUuNi0yLjYtMTUuMiA1LjMtMTYuNGw3MC40LTEwLjJjMy4xLS41IDUuOC0yLjQgNy4yLTUuM2wzMS41LTYzLjh6Il19LGR2ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmYWNlLXN1cnByaXNlIixpY29uOls1MTIsNTEyLFsxMjg1NTgsInN1cnByaXNlIl0sImY1YzIiLCJNMjU2IDUxMmEyNTYgMjU2IDAgMSAwIDAtNTEyIDI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE3NiAxNzZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0xMjggMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptLTQ4IDgwYTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4eiJdfSxoWXQ9ZHZlLGZZdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJob3NwaXRhbC11c2VyIixpY29uOls2NDAsNTEyLFtdLCJmODBkIiwiTTY0IDY0QzY0IDI4LjcgOTIuNyAwIDEyOCAwTDM4NCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMTIxLjNjLTQ2LjkgMTktODAgNjUtODAgMTE4LjcgMCAyNy43IDguOCA1My40IDIzLjggNzQuNC01MS41IDIxLTg3LjggNzEuNi04Ny44IDEzMC43IDAgMSAwIDEuOSAwIDIuOWwtMTc2IDBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDY0IDY0ek0yMDggNDAwbDAgNjQgNTMuNCAwYzcuMi0yOS40IDIxLjMtNTYuMSA0MC40LTc4LjMtNi4xLTE5LjUtMjQuMy0zMy43LTQ1LjgtMzMuNy0yNi41IDAtNDggMjEuNS00OCA0OHpNMjQ4IDg4Yy04LjggMC0xNiA3LjItMTYgMTZsMCAzMi0zMiAwYy04LjggMC0xNiA3LjItMTYgMTZsMCAxNmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMCAwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwxNiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyIDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMTZjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwIDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0xNiAwek00MTYgMzA0YTgwIDgwIDAgMSAxIDE2MCAwIDgwIDgwIDAgMSAxIC0xNjAgMHpNMzUyIDUxMmMwLTUzIDQzLTk2IDk2LTk2bDk2IDBjNTMgMCA5NiA0MyA5NiA5NiAwIDE3LjctMTQuMyAzMi0zMiAzMmwtMjI0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyeiJdfSxtWXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYXJyb3ctZG93bi11cC1sb2NrIixpY29uOls1NzYsNTEyLFtdLCJlNGIwIiwiTTI2Mi42IDQyMi42bC04MCA4MGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBsLTgwLTgwYy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwbDI1LjQgMjUuNCAwLTExNC43LTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsMjU2IDAgMC0xMTQuNy0yNS40IDI1LjRjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zbDgwLTgwYzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwbDgwIDgwYzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwbC0yNS40LTI1LjQgMCA5NC44Yy0yNS4zIDIwLjMtNDIuOCA1MC4xLTQ3IDgzLjlsLTE0NSAwIDAgMTE0LjcgMjUuNC0yNS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjN6TTE5MiAzMmwwIDE0NC02NCAwIDAtMTQ0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ6TTQ5NiAzMDQuMWMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDQ3LjkgNjQgMCAwLTQ3Ljl6TTM1MiA0MDBjMC0yMC45IDEzLjQtMzguNyAzMi00NS4zbDAtNTAuNmMwLTQ0LjIgMzUuOC04MCA4MC04MHM4MCAzNS44IDgwIDgwbDAgNTAuNmMxOC42IDYuNiAzMiAyNC40IDMyIDQ1LjNsMCA5NmMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMTI4IDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtOTZ6Il19LHV2ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmb2xkZXIiLGljb246WzUxMiw1MTIsWzEyODE5MywxMjg0NDcsNjE3MTYsImZvbGRlci1ibGFuayJdLCJmMDdiIiwiTTY0IDQ0OGwzODQgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI0MGMwLTM1LjMtMjguNy02NC02NC02NEwyOTguNyA4MGMtNi45IDAtMTMuNy0yLjItMTkuMi02LjRMMjQxLjEgNDQuOEMyMzAgMzYuNSAyMTYuNSAzMiAyMDIuNyAzMkw2NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0eiJdfSxnWXQ9dXZlLGJZdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJob2xseS1iZXJyeSIsaWNvbjpbNTEyLDUxMixbXSwiZjdhYSIsIk0yNTYuMiA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bS04MCA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTI3NyAzODMuOGMxIC4xIDIuMSAuMiAzLjIgLjIgMzkuOCAwIDcyIDMyLjIgNzIgNzJsMCAyMi43YzAgMTYuNCAxNiAyNy45IDMxLjYgMjIuOGwxMi44LTQuM2MxOC02IDM3LjMtNi41IDU1LjYtMS41bDE5LjQgNS4zYzE3LjkgNC45IDM0LjQtMTEuNiAyOS41LTI5LjVMNDk1LjkgNDUyYy01LTE4LjMtNC40LTM3LjYgMS41LTU1LjZsNC4zLTEyLjhjNS4yLTE1LjUtNi40LTMxLjYtMjIuOC0zMS42LTM0LjYgMC02Mi43LTI4LjEtNjIuNy02Mi43bDAtMzJjMC0xNi40LTE2LTI3LjktMzEuNi0yMi44bC0xMi44IDQuM2MtMTggNi0zNy4zIDYuNS01NS42IDEuNWwtMjkuNi04LjFjLTIuOS0uOC01LjktMS04LjctLjcgNC4yIDkuNyA1LjggMjAuOCAzLjcgMzIuM2wtNi4zIDM0LjhjLTEuNSA4LjQtMS40IDE3IC41IDI1LjNsNS4zIDIzLjljMi44IDEyLjcgMS4xIDI1LjItNCAzNS45ek0xMjcuOCAyMzQuNWMtMTUuNS01LjItMzEuNiA2LjQtMzEuNiAyMi44bDAgMzJjMCAzNC42LTI4LjEgNjIuNy02Mi43IDYyLjctMTYuNCAwLTI3LjkgMTYtMjIuOCAzMS42TDE1IDM5Ni40YzYgMTggNi41IDM3LjMgMS41IDU1LjZsLTUuMyAxOS40QzYuNCA0ODkuNCAyMi44IDUwNS44IDQwLjcgNTAxbDE5LjQtNS4zYzE4LjMtNSAzNy42LTQuNSA1NS42IDEuNWwxMi44IDQuM2MxNS41IDUuMiAzMS42LTYuNCAzMS42LTIyLjhsMC0zMmMwLTM0LjYgMjguMS02Mi43IDYyLjctNjIuNyAxNi40IDAgMjcuOS0xNiAyMi44LTMxLjZsLTQuMy0xMi44Yy02LTE4LTYuNS0zNy4zLTEuNS01NS42bDUuMy0xOS40YzQuOS0xNy45LTExLjYtMzQuNC0yOS41LTI5LjVsLTE5LjQgNS4zYy0xOC4zIDUtMzcuNiA0LjQtNTUuNi0xLjVsLTEyLjgtNC4zek0zODQuMiAxNDRhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHoiXX0sdll0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InZlbnVzLWRvdWJsZSIsaWNvbjpbNjQwLDUxMixbOTg5MF0sImYyMjYiLCJNMTkyIDI4OGExMTIgMTEyIDAgMSAwIDAtMjI0IDExMiAxMTIgMCAxIDAgMCAyMjR6TTM2OCAxNzZjMCA4Ni4zLTYyLjEgMTU4LjEtMTQ0LjEgMTczLjEgLjEgMSAuMSAxLjkgLjEgMi45bDAgNjQgMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMzIgMCAwIDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMzItMzIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwzMiAwIDAtNjRjMC0xIDAtMS45IC4xLTIuOS04Mi0xNS0xNDQuMS04Ni44LTE0NC4xLTE3My4xIDAtOTcuMiA3OC44LTE3NiAxNzYtMTc2UzM2OCA3OC44IDM2OCAxNzZ6TTM1Ny41IDMyN2MxNC40LTE1LjggMjYuNi0zMy43IDM2LjEtNTMuMSAxNi4xIDkgMzQuNyAxNC4xIDU0LjUgMTQuMSA2MS45IDAgMTEyLTUwLjEgMTEyLTExMlM1MDkuOSA2NCA0NDggNjRjLTE5LjggMC0zOC4zIDUuMS01NC41IDE0LjEtOS41LTE5LjQtMjEuNi0zNy4zLTM2LjEtNTMuMSAyNi40LTE1LjkgNTcuNC0yNSA5MC41LTI1IDk3LjIgMCAxNzYgNzguOCAxNzYgMTc2IDAgODYuMy02Mi4xIDE1OC4xLTE0NC4xIDE3My4xIC4xIC45IC4xIDEuOSAuMSAyLjlsMCA2NCAzMiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0zMiAwIDAgMzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0zMi0zMiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDMyIDAgMC02NGMwLTEgMC0xLjkgLjEtMi45LTIxLjEtMy45LTQwLjktMTEuNS01OC42LTIyLjJ6Il19LHhZdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjbGlwYm9hcmQtcXVlc3Rpb24iLGljb246WzM4NCw1MTIsW10sImU0ZTMiLCJNMzExLjQgMzJsOC42IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAzNTJjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDguNiAwQzgzLjYgMTIuOSAxMDQuMyAwIDEyOCAwTDI1NiAwYzIzLjcgMCA0NC40IDEyLjkgNTUuNCAzMnpNMjQ4IDExMmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEwxMzYgNjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMTEyIDB6TTE5MiAyNDhjMTYuMSAwIDI5LjIgMTMuMSAyOS4yIDI5LjIgMCA4LjctMy4xIDEzLjktNi45IDE3LjctNC41IDQuNC0xMC43IDcuNS0xNi44IDkuNS0xNC45IDUtMjkuNSAxOS4zLTI5LjUgMzkuNSAwIDEzLjMgMTAuNyAyNCAyNCAyNCAxMS41IDAgMjEuMi04LjEgMjMuNS0xOSAxOS4yLTcuMSA1My43LTI2LjMgNTMuNy03MS44IDAtNDIuNi0zNC42LTc3LjItNzcuMi03Ny4ycy03Ny4yIDM0LjYtNzcuMiA3Ny4yYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0xNi4xIDEzLjEtMjkuMiAyOS4yLTI5LjJ6bTI4IDE2OGMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6Il19LHlZdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJob3Rkb2ciLGljb246WzUxMiw1MTIsWzEyNzc4OV0sImY4MGYiLCJNMjg4IDBjLTIwLjUgMC00MC4xIDguMS01NC42IDIyLjZMMjIuNiAyMzMuNEM4LjEgMjQ3LjkgMCAyNjcuNSAwIDI4OCAwIDMwMC4yIDIuOSAzMTIuMSA4LjIgMzIyLjdMMzIyLjcgOC4yQzMxMi4xIDIuOSAzMDAuMiAwIDI4OCAwek0yMjQgNTEyYzIwLjUgMCA0MC4xLTguMSA1NC42LTIyLjZMNDg5LjQgMjc4LjZjMTQuNS0xNC41IDIyLjYtMzQuMSAyMi42LTU0LjYgMC0xMi4yLTIuOS0yNC4xLTguMi0zNC43TDE4OS4zIDUwMy44YzEwLjcgNS40IDIyLjYgOC4yIDM0LjcgOC4yek00NTYuNiAxNjguNmMzMS4yLTMxLjIgMzEuMi04MS45IDAtMTEzLjFzLTgxLjktMzEuMi0xMTMuMSAwbC0yODggMjg4Yy0zMS4yIDMxLjItMzEuMiA4MS45IDAgMTEzLjFzODEuOSAzMS4yIDExMy4xIDBsMjg4LTI4OHoiXX0sd1l0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImFycm93LXVwLWZyb20tYnJhY2tldCIsaWNvbjpbNDQ4LDUxMixbXSwiZTA5YSIsIk0yNDYuNiA5LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xMjggMTI4Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDE5MiAxMDkuMyAxOTIgMzIwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0yMTAuNyA3My40IDczLjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtMTI4LTEyOHpNNjQgMzUyYzAtMTcuNy0xNC4zLTMyLTMyLTMyUzAgMzM0LjMgMCAzNTJsMCA2NGMwIDUzIDQzIDk2IDk2IDk2bDI1NiAwYzUzIDAgOTYtNDMgOTYtOTZsMC02NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMyTDk2IDQ0OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC02NHoiXX0sa1l0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im1pY3Jvc2NvcGUiLGljb246WzUxMiw1MTIsWzEyODMwMF0sImY2MTAiLCJNMTc2IDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4bDAgMjA4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDY0IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC02NCAzMiAwYzcwLjcgMCAxMjggNTcuMyAxMjggMTI4UzM5MC43IDQ0OCAzMjAgNDQ4TDMyIDQ0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw0NDggMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMTYuOSAwYzMwLjQtMzQgNDguOS03OC44IDQ4LjktMTI4IDAtMTA2LTg2LTE5Mi0xOTItMTkybC0zMiAwIDAtODBjMC0yNi41LTIxLjUtNDgtNDgtNDhMMTc2IDB6TTEyMCAzNTJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMTc2IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTE3NiAweiJdfSxTWXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2xvdWQiLGljb246WzU3Niw1MTIsWzk3MjldLCJmMGMyIiwiTTAgMzM2YzAgNzkuNSA2NC41IDE0NCAxNDQgMTQ0bDMwNCAwYzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4IDAtNTEuNi0zMC41LTk2LjEtNzQuNS0xMTYuMyA2LjctMTMuMSAxMC41LTI4IDEwLjUtNDMuNyAwLTUzLTQzLTk2LTk2LTk2LTE3LjcgMC0zNC4yIDQuOC00OC40IDEzLjEtMjQuMS00NS44LTcyLjItNzcuMS0xMjcuNi03Ny4xLTc5LjUgMC0xNDQgNjQuNS0xNDQgMTQ0IDAgOCAuNyAxNS45IDEuOSAyMy41LTU2LjkgMTkuMi05Ny45IDczLjEtOTcuOSAxMzYuNXoiXX0sX1l0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJhc2ViYWxsLWJhdC1iYWxsIixpY29uOls1NzYsNTEyLFtdLCJmNDMyIiwiTTQ2NC4xIDU0NGE4MCA4MCAwIDEgMSAwLTE2MCA4MCA4MCAwIDEgMSAwIDE2MHptOC40LTU3NmMxNS4xIDAgMjkuNyA1LjggNDAuNyAxNi4ybDQ3LjIgNDQuOGMxMi42IDEyIDE5LjEgMjkgMTcuNSA0Ni4zLTEuMiAxMy4zLTcgMjUuOC0xNi41IDM1LjJMMzYzLjEgMzA5Yy03LjMgNy4zLTE1LjcgMTMuNC0yNSAxOEwyMDYgMzkzYy05LjIgNC42LTE3LjcgMTAuNy0yNSAxOGwtOTIgOTIgMS43IDEuOGM3LjcgOS40IDcuMSAyMy4zLTEuNyAzMi4xcy0yMi43IDkuMy0zMi4xIDEuN2wtMS44LTEuNy00OC00OC0xLjctMS44Yy03LjctOS40LTcuMS0yMy4zIDEuNy0zMi4xczIyLjctOS4zIDMyLjEtMS43bDEuOCAxLjcgOTItOTJjNy4zLTcuMyAxMy40LTE1LjcgMTgtMjVsNjYuMS0xMzIuMWM0LjYtOS4yIDEwLjctMTcuNyAxOC0yNUw0MzAuOC0xNC43QzQ0MS45LTI1LjggNDU2LjktMzIgNDcyLjUtMzJ6Il19LHB2ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjYXItcmVhciIsaWNvbjpbNTEyLDUxMixbImNhci1hbHQiXSwiZjVkZSIsIk0xNjUuNCA5NmwxODEuMiAwYzEzLjYgMCAyNS43IDguNiAzMC4yIDIxLjRsMjYuMSA3NC42LTI5My44IDAgMjYuMS03NC42YzQuNS0xMi44IDE2LjYtMjEuNCAzMC4yLTIxLjR6bS05MC42IC4zTDM5LjYgMTk2LjhDMTYuNCAyMDYuNCAwIDIyOS4zIDAgMjU2bDAgOTZjMCAyMy43IDEyLjkgNDQuNCAzMiA1NS40TDMyIDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwzMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMzIgMjU2IDAgMCAzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmwzMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtNDAuNmMxOS4xLTExLjEgMzItMzEuNyAzMi01NS40bDAtOTZjMC0yNi43LTE2LjQtNDkuNi0zOS42LTU5LjJMNDM3LjIgOTYuM0M0MjMuNyA1Ny44IDM4Ny40IDMyIDM0Ni42IDMyTDE2NS40IDMyYy00MC44IDAtNzcuMSAyNS44LTkwLjYgNjQuM3pNMjA4IDI4OGw5NiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtOTYgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2ek00OCAyODBjMC0xMy4zIDEwLjctMjQgMjQtMjRsMzIgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMzIgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjR6bTM2MC0yNGwzMiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0zMiAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0eiJdfSxNWXQ9cHZlLGh2ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0aHVtYnRhY2stc2xhc2giLGljb246WzU3Niw1MTIsWyJ0aHVtYi10YWNrLXNsYXNoIl0sImU2OGYiLCJNNDEtMjQuOWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBTLTIuMy0uMyA3IDkuMWw1MjggNTI4YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOUw0MTcuOCAzNTIgNDQ4IDM1MmMxMCAwIDE5LjUtNC43IDI1LjUtMTIuN3M4LTE4LjQgNS4yLTI4LjFMNDc1IDI5Ny44Yy0xMi40LTQzLjMtNDEtNzguNS03OC4yLTk5LjdMMzg2LjUgNjQgNDE2IDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyUzQzMy43IDAgNDE2IDBMMTYwIDBjLTcuNCAwLTE0LjEgMi41LTE5LjUgNi42TDE5MC4xIDU2LjMgMTg1LjMgMTE5LjQgNDEtMjQuOXpNMjgyLjIgMzUyTDE0OS43IDIxOS42Yy0yMi43IDIwLjUtMzkuOCA0Ny40LTQ4LjcgNzguM2wtMy44IDEzLjRjLTIuOCA5LjctLjggMjAgNS4yIDI4LjFTMTE4IDM1MiAxMjggMzUybDE1NC4yIDB6TTI1NiA1MTJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTExMi02NCAwIDAgMTEyeiJdfSx6WXQ9aHZlLENZdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwbHVzLW1pbnVzIixpY29uOlszODQsNTEyLFtdLCJlNDNjIiwiTTIyNCAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDEyOC0xMjggMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwxMjggMCAwIDEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTI4IDEyOCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xMjggMCAwLTEyOHpNMCA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJsMzIwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMMzIgNDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnoiXX0sVFl0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImhvdXNlLWNpcmNsZS1jaGVjayIsaWNvbjpbNjQwLDUxMixbXSwiZTUwOSIsIk00OTYgNTQ0YTE0NCAxNDQgMCAxIDEgMC0yODggMTQ0IDE0NCAwIDEgMSAwIDI4OHpNMjY4LjYgNi41YzEyLjItOS4zIDI5LjctOC43IDQxLjIgMmwyMTcuNiAyMDJjLTEwLjItMS43LTIwLjctMi42LTMxLjMtMi42LTc4LjYgMC0xNDYuMSA0Ny4yLTE3NS44IDExNC44LTUuMS0xLjgtMTAuNS0yLjgtMTYuMi0yLjhsLTMyIDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4bDAgOTYgOTEgMGM2LjEgMTcuMyAxNC42IDMzLjQgMjUuMSA0OEwxNDQgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NGwwLTE3Ni0xNiAwYy0xMy4yIDAtMjUtOC4xLTI5LjgtMjAuM3MtMS42LTI2LjIgOC0zNS4xbDIyNC0yMDggMi40LTJ6TTU1My40IDMzOS4xYy03LjEtNS4yLTE3LjEtMy42LTIyLjMgMy41bC01MyA3Mi44LTI2LjctMjYuOGMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDAtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZsNDAgNDBjMy4zIDMuMyA3LjkgNSAxMi42IDQuN3M4LjktMi44IDExLjctNi42bDY0LTg4YzUuMi03LjEgMy42LTE3LjEtMy41LTIyLjN6Il19LCRZdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjYWxlbmRhci1kYXkiLGljb246WzQ0OCw1MTIsW10sImY3ODMiLCJNMTI4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMiAxMjggMCAwLTMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCAzMiAzMiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjg4YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCAxMjhDMCA5Mi43IDI4LjcgNjQgNjQgNjRsMzIgMCAwLTMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0wIDI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCA2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmw2NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtNjRjMC0xNy43LTE0LjMtMzItMzItMzJsLTY0IDB6Il19LERZdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJsaWJyYSIsaWNvbjpbNTEyLDUxMixbXSwiZTg0YiIsIk00ODAgMzg0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDMyIDQ0OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw0NDggMHpNMjU2IDMyYzk3LjIgMCAxNzYgNzguOCAxNzYgMTc2IDAgMTYuNi0yLjQgMzIuNy02LjcgNDhsNTQuNyAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0xMDQuMiAwYy0xMS44IDAtMjIuNy02LjUtMjguMi0xNi45cy00LjktMjMuMSAxLjYtMzIuOWMxMS45LTE3LjggMTguOC0zOS4xIDE4LjgtNjIuMiAwLTYxLjktNTAuMS0xMTItMTEyLTExMlMxNDQgMTQ2LjEgMTQ0IDIwOGMwIDIzLjEgNi45IDQ0LjQgMTguOCA2Mi4yIDYuNiA5LjggNy4yIDIyLjUgMS42IDMyLjlTMTQ4LjEgMzIwIDEzNi4yIDMyMEwzMiAzMjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsNTQuOCAwYy00LjMtMTUuMy02LjgtMzEuNC02LjgtNDggMC05Ny4yIDc4LjgtMTc2IDE3Ni0xNzZ6Il19LExZdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjaXJjbGUiLGljb246WzUxMiw1MTIsWzEyODMwOCwxMjgzMDksMTI4OTkyLDEyODk5MywxMjg5OTQsMTI4OTk1LDEyODk5Niw5Njc5LDk4OTgsOTg5OSwxMTA0NCw2MTcwOCw2MTkxNV0sImYxMTEiLCJNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMCAyNTYgMjU2IDAgMSAxIC01MTIgMHoiXX0sRVl0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im1vYmlsZS12aWJyYXRlIixpY29uOls1NzYsNTEyLFtdLCJlODE2IiwiTTM4NCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzg0YzAgMzUuMy0yOC43IDY0LTY0IDY0bC0xOTIgMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRsMC0zODRjMC0zNS4zIDI4LjctNjQgNjQtNjRMMzg0IDB6TTI0OCA0MTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsODAgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtODAgMHpNNDguOCAxMzMuNGM5LjQtNy43IDIzLjMtNy4xIDMyLjEgMS43IDkuNCA5LjQgOS40IDI0LjYgMCAzMy45bC0zMSAzMSAyNS40IDI1LjQgMi45IDMuMmM2LjMgNy43IDkuOCAxNy40IDkuOCAyNy40IDAgMTEuNS00LjYgMjIuNS0xMi43IDMwLjZsLTI1LjQgMjUuNCAzMSAzMSAxLjcgMS44YzcuNyA5LjQgNy4xIDIzLjMtMS43IDMyLjFzLTIyLjcgOS4zLTMyLjEgMS43TDQ3IDM3NyAxMi43IDM0Mi42QzUuNiAzMzUuNSAxLjIgMzI2LjIgLjIgMzE2LjNMMCAzMTIgLjIgMzA3LjdjMS05LjkgNS40LTE5LjIgMTIuNS0yNi4zTDM4LjEgMjU2IDEyLjcgMjMwLjZDNS42IDIyMy41IDEuMiAyMTQuMiAuMiAyMDQuM0wwIDIwMCAuMiAxOTUuN2MxLTkuOSA1LjQtMTkuMiAxMi41LTI2LjNMNDcgMTM1IDQ4LjggMTMzLjR6TTQ5NSAxMzVjOC44LTguOCAyMi43LTkuMyAzMi4xLTEuN2wxLjggMS43IDM0LjMgMzQuM2M3LjEgNy4xIDExLjUgMTYuNCAxMi41IDI2LjNsLjIgNC4zLS4yIDQuM2MtMSA5LjktNS40IDE5LjItMTIuNSAyNi4zbC0yNS40IDI1LjQgMjUuNCAyNS40YzcuMSA3LjEgMTEuNSAxNi40IDEyLjUgMjYuM2wuMiA0LjMtLjIgNC4zYy0xIDkuOS01LjQgMTkuMi0xMi41IDI2LjNsLTM0LjMgMzQuMy0xLjggMS43Yy05LjQgNy43LTIzLjMgNy4xLTMyLjEtMS43cy05LjMtMjIuNy0xLjctMzIuMWwxLjctMS44IDMxLTMxLTI1LjQtMjUuNGMtOC4xLTguMS0xMi43LTE5LjEtMTIuNy0zMC42IDAtMTAgMy41LTE5LjcgOS44LTI3LjRsMi45LTMuMiAyNS40LTI1LjQtMzEtMzFjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45eiJdfSxmdmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmFjZS1ncmluLXNxdWludCIsaWNvbjpbNTEyLDUxMixbMTI4NTE4LCJncmluLXNxdWludCJdLCJmNTg1IiwiTTI1NiA1MTJhMjU2IDI1NiAwIDEgMCAwLTUxMiAyNTYgMjU2IDAgMSAwIDAgNTEyek0zODYuNyAzMDguOWMxMS45LTMuNyAyMy45IDYuMyAxOS42IDE4LjEtMjIuNCA2MS4zLTgxLjMgMTA1LjEtMTUwLjMgMTA1LjFTMTI4LjEgMzg4LjIgMTA1LjcgMzI2LjljLTQuMy0xMS44IDcuNy0yMS44IDE5LjYtMTguMSAzOS4yIDEyLjIgODMuNyAxOS4xIDEzMC43IDE5LjFzOTEuNS02LjkgMTMwLjctMTkuMXpNMTIyLjYgMTQzLjJjNC41LTYuOCAxMy4zLTkuMiAyMC42LTUuNWw3OS42IDQwYzUuNCAyLjcgOC44IDguMiA4LjggMTQuM3MtMy40IDExLjYtOC44IDE0LjNsLTc5LjYgNDBjLTcuMyAzLjYtMTYuMSAxLjMtMjAuNi01LjVzLTMuMS0xNS45IDMuMS0yMS4xTDE1OSAxOTIgMTI1LjggMTY0LjNjLTYuMi01LjItNy42LTE0LjMtMy4xLTIxLjF6bTI2My42IDIxLjFMMzUzIDE5MiAzODYuMiAyMTkuN2M2LjIgNS4yIDcuNiAxNC4zIDMuMSAyMS4xcy0xMy4zIDkuMi0yMC42IDUuNWwtNzkuNi00MGMtNS40LTIuNy04LjgtOC4yLTguOC0xNC4zczMuNC0xMS42IDguOC0xNC4zbDc5LjYtNDBjNy4zLTMuNiAxNi4xLTEuMyAyMC42IDUuNXMzLjEgMTUuOS0zLjEgMjEuMXoiXX0sUFl0PWZ2ZSxJWXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidXNlcnMtYmV0d2Vlbi1saW5lcyIsaWNvbjpbNTc2LDUxMixbXSwiZTU5MSIsIk0yNCAxNmw1MjggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEwyNCA2NEMxMC43IDY0IDAgNTMuMyAwIDQwUzEwLjcgMTYgMjQgMTZ6bTAgNDQ4bDUyOCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0TDI0IDUxMmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpNMzkyIDE5MmE1NiA1NiAwIDEgMSAxMTIgMCA1NiA1NiAwIDEgMSAtMTEyIDB6bTI3LjIgMTAwLjRjOS4xLTIuOSAxOC44LTQuNCAyOC44LTQuNCA1MyAwIDk2IDQzIDk2IDk2bDAgMTAuN2MwIDExLjgtOS42IDIxLjMtMjEuMyAyMS4zbC03OC44IDBjMi43LTcuNSA0LjEtMTUuNiA0LjEtMjRsMC04YzAtMzQuMS0xMC42LTY1LjctMjguOC05MS42em0tMjYyLjQgMEMxMzguNiAzMTguMyAxMjggMzQ5LjkgMTI4IDM4NGwwIDhjMCA4LjQgMS40IDE2LjUgNC4xIDI0bC03OC44IDBDNDEuNiA0MTYgMzIgNDA2LjQgMzIgMzk0LjdMMzIgMzg0YzAtNTMgNDMtOTYgOTYtOTYgMTAgMCAxOS43IDEuNSAyOC44IDQuNHpNNzIgMTkyYTU2IDU2IDAgMSAxIDExMiAwIDU2IDU2IDAgMSAxIC0xMTIgMHptMTUyLTE2YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNMTc2IDM4NGMwLTYxLjkgNTAuMS0xMTIgMTEyLTExMnMxMTIgNTAuMSAxMTIgMTEybDAgOGMwIDEzLjMtMTAuNyAyNC0yNCAyNGwtMTc2IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0bDAtOHoiXX0sQVl0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImhvdXNlLW1lZGljYWwtY2lyY2xlLXhtYXJrIixpY29uOls2NDAsNTEyLFtdLCJlNTEzIiwiTTMwOS44IDguNmMtMTIuMy0xMS40LTMxLjMtMTEuNC00My41IDBsLTIyNCAyMDhjLTkuNiA5LTEyLjggMjIuOS04IDM1LjFTNTAuOCAyNzIgNjQgMjcybDE2IDAgMCAxNzZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMTk2IDBjLTIxLjItMjkuNS0zNC4zLTY1LjMtMzUuOS0xMDRMMjcyIDQwOGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtNDAtNDAgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2bDQwIDAgMC00MGMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCA0MCAyMCAwYzM0LjktNDguNSA5MS43LTgwIDE1Ni04MCAxMC43IDAgMjEuMSAuOSAzMS4zIDIuNUwzMDkuOCA4LjZ6TTQ5NiA1NDRhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0yMi42LTE0NGwzNi43IDM2LjdjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMGwtMzYuNy0zNi43LTM2LjcgMzYuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNmwzNi43LTM2LjctMzYuNy0zNi43Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBsMzYuNyAzNi43IDM2LjctMzYuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZMNTE4LjYgNDAweiJdfSxtdmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidGFibGUtbGlzdCIsaWNvbjpbNDQ4LDUxMixbInRoLWxpc3QiXSwiZjAwYiIsIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDMyMCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NnptNjQgMGwwIDY0IDY0IDAgMC02NC02NCAwem0zMjAgMGwtMTkyIDAgMCA2NCAxOTIgMCAwLTY0ek02NCAyMjRsMCA2NCA2NCAwIDAtNjQtNjQgMHptMzIwIDBsLTE5MiAwIDAgNjQgMTkyIDAgMC02NHpNNjQgMzUybDAgNjQgNjQgMCAwLTY0LTY0IDB6bTMyMCAwbC0xOTIgMCAwIDY0IDE5MiAwIDAtNjR6Il19LE5ZdD1tdmUsUll0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZsYXNrLXZpYWwiLGljb246WzY0MCw1MTIsW10sImU0ZjMiLCJNMTg0LjYgNDExLjVjLTMuMSA3LjMtNS40IDE0LjktNi44IDIyLjYtMTQuNSA4LjgtMzEuNSAxMy45LTQ5LjggMTMuOS01MyAwLTk2LTQzLTk2LTk2TDMyIDY0QzE0LjMgNjQgMCA0OS43IDAgMzJTMTQuMyAwIDMyIDBMMjI0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsMCAyNTUuNi0zOS40IDkxLjl6TTk2IDY0bDAgMTI4IDY0IDAgMC0xMjgtNjQgMHpNMzUyIDBMNTEyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsMCAxNTMuNCA5MS4zIDIxM2MyLjMgNS40IDMuOCAxMS4xIDQuNCAxN2wuMyAuNi0uMyAwYy4yIDEuOCAuMyAzLjYgLjMgNS40IDAgMzIuMy0yNi4yIDU4LjYtNTguNiA1OC42bC0yNjYuOSAwYy0zMi4zIDAtNTguNi0yNi4yLTU4LjYtNTguNiAwLTEuOCAuMS0zLjYgLjMtNS40bC0uMyAwIC4zLS42Yy42LTUuOCAyLjEtMTEuNiA0LjQtMTdMMzIwIDIxNy40IDMyMCA2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJTMzAyLjMgMCAzMjAgMGwzMiAwek00NTMuMiAyNDIuNmMtMy40LTgtNS4yLTE2LjUtNS4yLTI1LjJsMC0xNTMuNC02NCAwIDAgMTUzLjRjMCA4LjctMS44IDE3LjItNS4yIDI1LjJsLTMzLjIgNzcuNCAxNDAuNyAwLTMzLjItNzcuNHoiXX0sZ3ZlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNpcmNsZS1leGNsYW1hdGlvbiIsaWNvbjpbNTEyLDUxMixbImV4Y2xhbWF0aW9uLWNpcmNsZSJdLCJmMDZhIiwiTTI1NiA1MTJhMjU2IDI1NiAwIDEgMSAwLTUxMiAyNTYgMjU2IDAgMSAxIDAgNTEyem0wLTE5MmEzMiAzMiAwIDEgMCAwIDY0IDMyIDMyIDAgMSAwIDAtNjR6bTAtMTkyYy0xOC4yIDAtMzIuNyAxNS41LTMxLjQgMzMuN2w3LjQgMTA0Yy45IDEyLjYgMTEuNCAyMi4zIDIzLjkgMjIuMyAxMi42IDAgMjMtOS43IDIzLjktMjIuM2w3LjQtMTA0YzEuMy0xOC4yLTEzLjEtMzMuNy0zMS40LTMzLjd6Il19LE9ZdD1ndmUsYnZlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRheGkiLGljb246WzUxMiw1MTIsWzEyODY2MiwiY2FiIl0sImYxYmEiLCJNMTkyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgMzItOC45IDBjLTQyIDAtNzkuMSAyNy4zLTkxLjYgNjcuNGwtMjMgNzMuNUMxNC41IDIxOS4xIDAgMjQzLjkgMCAyNzJMMCA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJsMzIgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTMyIDMyMCAwIDAgMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJsMzIgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTE3NmMwLTI4LjEtMTQuNS01Mi45LTM2LjQtNjcuMWwtMjMtNzMuNUM0NDAuMSA5MS4zIDQwMi45IDY0IDM2MC45IDY0bC04LjkgMCAwLTMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyTDE5MiAwek0xNTEuMSAxMjhsMjA5LjkgMGMxNCAwIDI2LjQgOS4xIDMwLjUgMjIuNWwxMyA0MS41LTI5Ni45IDAgMTMtNDEuNWM0LjItMTMuNCAxNi41LTIyLjUgMzAuNS0yMi41ek05NiAyNzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0yODggMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHoiXX0sRll0PWJ2ZSx2dmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidGV4dC1zbGFzaCIsaWNvbjpbNTc2LDUxMixbInJlbW92ZS1mb3JtYXQiXSwiZjg3ZCIsIk00MS0yNC45Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMFMtMi4zLS4zIDcgOS4xbDUyOCA1MjhjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDMyMi43IDI1Ni45IDM2OC4yIDk2IDQ3MSA5NiA0NjUgMTIwLjJjLTQuMyAxNy4xIDYuMSAzNC41IDIzLjMgMzguOHMzNC41LTYuMSAzOC44LTIzLjNsMTEtNDQuMUM1NDUuNiA2MS4zIDUyMi43IDMyIDQ5MS41IDMybC0zMTkgMGMtMTkuOCAwLTM3LjMgMTIuMS00NC41IDMwLjFsLTg3LTg3ek0xODAuNCAxMTQuNWw0LjYtMTguNSAxMTYuNyAwLTMwLjggMTA5LTkwLjUtOTAuNXpNMjQxIDMxMC44TDIxMS4zIDQxNiAxNjAgNDE2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDE2MCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC00Mi4yIDAgMTUuMS01My4zLTUxLjktNTEuOXoiXX0sQll0PXZ2ZSxIWXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGVvcGxlLXB1bGxpbmciLGljb246WzU3Niw1MTIsW10sImU1MzUiLCJNODAgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2ek02NCAxMjhjLTM1LjMgMC02NCAyOC43LTY0IDY0TDAgMzIwYzAgMTcuNyAxNC4zIDMyIDMyIDMyIDkuOCAwIDE4LjUtNC40IDI0LjQtMTEuMkw4MC40IDQ4NS4zYzIuOSAxNy40IDE5LjQgMjkuMiAzNi44IDI2LjNzMjkuMi0xOS40IDI2LjMtMzYuOGwtMjAuNS0xMjIuNyAxNS43IDAgMzAgMTM0LjljMy44IDE3LjMgMjAuOSAyOC4xIDM4LjIgMjQuM3MyOC4xLTIwLjkgMjQuMy0zOC4ybC01Ny4zLTI1OCAxMTYuMyA1My44Yy41IC4zIDEuMSAuNSAxLjYgLjcgOC42IDMuNiAxOCAzLjEgMjUuOS0uNyAzLjQtMS42IDYuNi0zLjkgOS4zLTYuNyAzLjEtMy4yIDUuNS03IDcuMS0xMS40IC4xLS4zIC4yLS43IC4zLTFsMi41LTcuNWM1LjctMTcuMSAxOC4zLTMwLjkgMzQuNy0zOC4ybDgtMy41YzEtLjQgMS45LS44IDIuOS0xLjJsLTE2LjkgNjMuNWMtNS42IDIxLjEtLjEgNDMuNiAxNC43IDU5LjdsNzAuNyA3Ny4xIDIyIDg4LjFjNC4zIDE3LjEgMjEuNyAyNy42IDM4LjggMjMuM3MyNy42LTIxLjcgMjMuMy0zOC44bC0yMy05Mi4xYy0xLjktNy44LTUuOC0xNC45LTExLjItMjAuOGwtNDkuNS01NCAxOS4zLTY1LjUgOS42IDIzYzQuNCAxMC42IDEyLjUgMTkuMyAyMi44IDI0LjVsMjYuNyAxMy4zYzE1LjggNy45IDM1IDEuNSA0Mi45LTE0LjNzMS41LTM1LTE0LjMtNDIuOWwtMjEuNC0xMC43LTE1LjMtMzYuOGMtMTcuMS00MS4xLTU3LjMtNjcuOS0xMDEuOS02Ny45LTIyLjggMC00NS4zIDQuOC02Ni4xIDE0bC04IDMuNWMtMjQuNCAxMC45LTQ0LjYgMjktNTguMSA1MS42TDE1Ny4zIDEzNi45QzE0NC43IDEzMSAxMzAuOSAxMjggMTE3IDEyOGwtNTMgMHpNNDY0IDk2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpNMzQ5LjcgMzM1LjZsLTI1IDYyLjQtNTkuNCA1OS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDM3Mi4zIDQ0MWM0LjYtNC42IDguMi0xMC4xIDEwLjYtMTYuMWwxNC41LTM2LjItNDAuNy00NC40Yy0yLjUtMi43LTQuOC01LjYtNy04LjZ6Il19LHFZdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJiYWNrd2FyZCIsaWNvbjpbNTc2LDUxMixbOTE5NF0sImYwNGEiLCJNMjA0LjMgNDMuMUMyMTUuOSAzMiAyMzMgMjguOSAyNDcuNyAzNS4yUzI3MiA1NiAyNzIgNzJsMCAxMzYuMyAxNzIuMy0xNjUuMUM0NTUuOSAzMiA0NzMgMjguOSA0ODcuNyAzNS4yUzUxMiA1NiA1MTIgNzJsMCAzNjhjMCAxNi05LjYgMzAuNS0yNC4zIDM2LjhzLTMxLjggMy4yLTQzLjQtNy45TDI3MiAzMDMuNyAyNzIgNDQwYzAgMTYtOS42IDMwLjUtMjQuMyAzNi44cy0zMS44IDMuMi00My40LTcuOWwtMTkyLTE4NEM0LjUgMjc3LjMgMCAyNjYuOSAwIDI1NnM0LjUtMjEuMyAxMi4zLTI4LjlsMTkyLTE4NHoiXX0seHZlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNhci1idXJzdCIsaWNvbjpbNjQwLDUxMixbImNhci1jcmFzaCJdLCJmNWUxIiwiTTIzMiAxNi4xbDAtNDhjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCA0OGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0ek0zMiAxNjguMWw0OCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC00OCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0ek0yODEuNSA3MC42YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDMzLjktMzMuOWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwTDI4MS41IDM2LjZjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45em0tMTgxIDIxNWwzMy45LTMzLjljOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMEw2Ni42IDI1MS42Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDB6TTY2LjYgMi43Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWwzMy45IDMzLjljOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDEwMC41IDIuN0M5MS4xLTYuNyA3Ni02LjcgNjYuNiAyLjd6TTM1Mi45IDE3NS40TDUwNSAyMTYuMmM2LjQgMS43IDExLjEgNy4zIDExLjggMTMuOWw3LjIgNzQtMjMxLjUtNjIgNDMuMi02MC41YzMuOS01LjQgMTAuNy03LjkgMTcuMi02LjJ6TTIyMy42IDIyOC41bC0yLjEgMi45Yy0yMS43IDUuNS0zOS45IDIyLjMtNDYuMSA0NS41LTQuMSAxNS41LTEyLjQgNDYuNC0yNC44IDkyLjdsLTguMyAzMC45Yy00LjYgMTcuMSA1LjYgMzQuNiAyMi42IDM5LjJsMTUuNSA0LjFjMTcuMSA0LjYgMzQuNi01LjYgMzkuMi0yMi42bDguMy0zMC45IDI3OC4yIDc0LjUtOC4zIDMwLjljLTQuNiAxNy4xIDUuNiAzNC42IDIyLjYgMzkuMmwxNS41IDQuMWMxNy4xIDQuNiAzNC42LTUuNiAzOS4yLTIyLjYgNC4xLTE1LjUgMTIuNC00Ni40IDI0LjgtOTIuN2w4LjMtMzAuOWM2LjItMjMuMi0xLjEtNDYuOC0xNy4yLTYyLjVsLS4zLTMuNi0xMC0xMDNjLTMuMi0zMy4yLTI2LjctNjAuOS01OC45LTY5LjVMMzY5LjUgMTEzLjZjLTMyLjItOC42LTY2LjQgMy42LTg1LjggMzAuOGwtNjAuMiA4NC4yem00OC43IDU3LjhhMzIgMzIgMCAxIDEgLTE2LjYgNjEuOCAzMiAzMiAwIDEgMSAxNi42LTYxLjh6bTIwOC4xIDg4LjlhMzIgMzIgMCAxIDEgNjEuOCAxNi42IDMyIDMyIDAgMSAxIC02MS44LTE2LjZ6Il19LGpZdD14dmUseXZlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImxpbmsiLGljb246WzU3Niw1MTIsWzEyODI3OSwiY2hhaW4iXSwiZjBjMSIsIk00MTkuNSA5NmMtMTYuNiAwLTMyLjcgNC41LTQ2LjggMTIuNy0xNS44LTE2LTM0LjItMjkuNC01NC41LTM5LjUgMjguMi0yNCA2NC4xLTM3LjIgMTAxLjMtMzcuMiA4Ni40IDAgMTU2LjUgNzAgMTU2LjUgMTU2LjUgMCA0MS41LTE2LjUgODEuMy00NS44IDExMC42bC03MS4xIDcxLjFjLTI5LjMgMjkuMy02OS4xIDQ1LjgtMTEwLjYgNDUuOC04Ni40IDAtMTU2LjUtNzAtMTU2LjUtMTU2LjUgMC0xLjUgMC0zIC4xLTQuNSAuNS0xNy43IDE1LjItMzEuNiAzMi45LTMxLjFzMzEuNiAxNS4yIDMxLjEgMzIuOWMwIC45IDAgMS44IDAgMi42IDAgNTEuMSA0MS40IDkyLjUgOTIuNSA5Mi41IDI0LjUgMCA0OC05LjcgNjUuNC0yNy4xbDcxLjEtNzEuMWMxNy4zLTE3LjMgMjcuMS00MC45IDI3LjEtNjUuNCAwLTUxLjEtNDEuNC05Mi41LTkyLjUtOTIuNXpNMjc1LjIgMTczLjNjLTEuOS0uOC0zLjgtMS45LTUuNS0zLjEtMTIuNi02LjUtMjctMTAuMi00Mi4xLTEwLjItMjQuNSAwLTQ4IDkuNy02NS40IDI3LjFMOTEuMSAyNTguMmMtMTcuMyAxNy4zLTI3LjEgNDAuOS0yNy4xIDY1LjQgMCA1MS4xIDQxLjQgOTIuNSA5Mi41IDkyLjUgMTYuNSAwIDMyLjYtNC40IDQ2LjctMTIuNiAxNS44IDE2IDM0LjIgMjkuNCA1NC42IDM5LjUtMjguMiAyMy45LTY0IDM3LjItMTAxLjMgMzcuMi04Ni40IDAtMTU2LjUtNzAtMTU2LjUtMTU2LjUgMC00MS41IDE2LjUtODEuMyA0NS44LTExMC42bDcxLjEtNzEuMWMyOS4zLTI5LjMgNjkuMS00NS44IDExMC42LTQ1LjggODYuNiAwIDE1Ni41IDcwLjYgMTU2LjUgMTU2LjkgMCAxLjMgMCAyLjYgMCAzLjktLjQgMTcuNy0xNS4xIDMxLjYtMzIuOCAzMS4ycy0zMS42LTE1LjEtMzEuMi0zMi44YzAtLjggMC0xLjUgMC0yLjMgMC0zMy43LTE4LTYzLjMtNDQuOC03OS42eiJdfSxWWXQ9eXZlLHd2ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJiYWNrd2FyZC1zdGVwIixpY29uOlszODQsNTEyLFsic3RlcC1iYWNrd2FyZCJdLCJmMDQ4IiwiTTM2MyAzNi44Yy0xMi45LTctMjguNy02LjMtNDEgMS44TDY0IDIwOC4xIDY0IDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzAgNDYuMyAwIDY0TDAgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xNDQuMSAyNTggMTY5LjZjMTIuMyA4LjEgMjggOC44IDQxIDEuOHMyMS0yMC41IDIxLTM1LjJsMC0zNjhjMC0xNC43LTguMS0yOC4yLTIxLTM1LjJ6Il19LFVZdD13dmUsV1l0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6IngiLGljb246WzM4NCw1MTIsWzEyMF0sIjU4IiwiTTM3Ni42IDg0LjVjMTEuMy0xMy42IDkuNS0zMy44LTQuMS00NS4xcy0zMy44LTkuNS00NS4xIDQuMUwxOTIgMjA2IDU2LjYgNDMuNUM0NS4zIDI5LjkgMjUuMSAyOC4xIDExLjUgMzkuNFMtMy45IDcwLjkgNy40IDg0LjVMMTUwLjMgMjU2IDcuNCA0MjcuNWMtMTEuMyAxMy42LTkuNSAzMy44IDQuMSA0NS4xczMzLjggOS41IDQ1LjEtNC4xTDE5MiAzMDYgMzI3LjQgNDY4LjVjMTEuMyAxMy42IDMxLjUgMTUuNCA0NS4xIDQuMXMxNS40LTMxLjUgNC4xLTQ1LjFMMjMzLjcgMjU2IDM3Ni42IDg0LjV6Il19LGt2ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjaXJjbGUtdXNlciIsaWNvbjpbNTEyLDUxMixbNjIxNDIsInVzZXItY2lyY2xlIl0sImYyYmQiLCJNMzk5IDM4NC4yQzM3Ni45IDM0NS44IDMzNS40IDMyMCAyODggMzIwbC02NCAwYy00Ny40IDAtODguOSAyNS44LTExMSA2NC4yIDM1LjIgMzkuMiA4Ni4yIDYzLjggMTQzIDYzLjhzMTA3LjgtMjQuNyAxNDMtNjMuOHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMCAyNTYgMjU2IDAgMSAxIC01MTIgMHptMjU2IDE2YTcyIDcyIDAgMSAwIDAtMTQ0IDcyIDcyIDAgMSAwIDAgMTQ0eiJdfSxHWXQ9a3ZlLFN2ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJyZWN0YW5nbGUtbGlzdCIsaWNvbjpbNTEyLDUxMixbImxpc3QtYWx0Il0sImYwMjIiLCJNNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjhMMCAzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzg0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yNTZjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgNjR6bTk2IDI1NmEzMiAzMiAwIDEgMSAtNjQgMCAzMiAzMiAwIDEgMSA2NCAwem0tMzItOTZhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em0xMjAtNTZsMTQ0IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTE0NCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0em0wIDEyOGwxNDQgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMTQ0IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6Il19LEtZdD1TdmUsX3ZlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImhhbmQiLGljb246WzUxMiw1MTIsWzEyOTMwNiw5OTk1LCJoYW5kLXBhcGVyIl0sImYyNTYiLCJNMjg4IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgMjA4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtMTc2YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgMjcyYzAgMS41IDAgMy4xIC4xIDQuNkw2Ny42IDI4M2MtMTYtMTUuMi00MS4zLTE0LjYtNTYuNiAxLjRTLTMuNiAzMjUuNyAxMi40IDM0MUwxMjQuOCA0NDhjNDMuMSA0MS4xIDEwMC40IDY0IDE2MCA2NGwxOS4yIDBjOTcuMiAwIDE3Ni03OC44IDE3Ni0xNzZsMC0yMDhjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAxMTJjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC0xNzZjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAxNzZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC0yMDh6Il19LFlZdD1fdmUsWll0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNhbmNlciIsaWNvbjpbNTEyLDUxMixbXSwiZTg0NyIsIk00MDggMTUyYzU3LjQgMCAxMDQgNDYuNiAxMDQgMTA0IDAgMTQxLjQtMTE0LjYgMjU2LTI1NiAyNTYtNTQuMyAwLTEwNC44LTE3LTE0Ni4zLTQ1LjktMTQuNS0xMC4xLTE4LTMwLjEtNy45LTQ0LjZzMzAuMS0xOCA0NC42LTcuOWMzMS4xIDIxLjcgNjguOSAzNC40IDEwOS43IDM0LjQgNjcuOSAwIDEyNy41LTM1LjMgMTYxLjctODguNS0zLjIgLjMtNi40IC41LTkuNyAuNS01Ny40IDAtMTA0LTQ2LjYtMTA0LTEwNHM0Ni42LTEwNCAxMDQtMTA0ek0yNTYgMGM1NC4zIDAgMTA0LjggMTcgMTQ2LjMgNDUuOSAxNC41IDEwLjEgMTggMzAuMSA3LjkgNDQuNnMtMzAuMSAxOC00NC42IDcuOWMtMzEuMS0yMS43LTY4LjktMzQuNC0xMDkuNy0zNC40LTY3LjkgMC0xMjcuNSAzNS4yLTE2MS43IDg4LjQgMy4yLS4zIDYuNC0uNCA5LjctLjQgNTcuNCAwIDEwNCA0Ni42IDEwNCAxMDRTMTYxLjQgMzYwIDEwNCAzNjAgMCAzMTMuNCAwIDI1NkMwIDI1NC4xIDAgMjUyLjIgLjEgMjUwLjQgMy4xIDExMS42IDExNi41IDAgMjU2IDB6TTEwNCAyMTZhNDAgNDAgMCAxIDAgMCA4MCA0MCA0MCAwIDEgMCAwLTgwem0zMDQgMGE0MCA0MCAwIDEgMCAwIDgwIDQwIDQwIDAgMSAwIDAtODB6Il19LE12ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ2YW4tc2h1dHRsZSIsaWNvbjpbNTc2LDUxMixbMTI4NjU2LCJzaHV0dGxlLXZhbiJdLCJmNWI2IiwiTTY0IDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4TDAgMzM2YzAgMzUuMyAyOC43IDY0IDY0IDY0bC40IDBjNCA0NC45IDQxLjcgODAgODcuNiA4MHM4My42LTM1LjEgODcuNi04MGwxMDQuNyAwYzQgNDQuOSA0MS43IDgwIDg3LjYgODAgNDYuMSAwIDgzLjktMzUuNCA4Ny43LTgwLjUgMzEuNy0zLjggNTYuMy0zMC44IDU2LjMtNjMuNWwwLTEwMS4zYzAtMTMuOC00LjUtMjcuMy0xMi44LTM4LjRsLTgwLTEwNi43QzQ3MS4xIDczLjUgNDUyLjEgNjQgNDMyIDY0TDY0IDY0ek01MDQgMjI0bC0xMjAgMCAwLTk2IDQ4IDAgNzIgOTZ6TTY0IDIyNGwwLTk2IDk2IDAgMCA5Ni05NiAwem0xNjAgMGwwLTk2IDk2IDAgMCA5Ni05NiAwek0zOTIgMzkyYTQwIDQwIDAgMSAxIDgwIDAgNDAgNDAgMCAxIDEgLTgwIDB6TTE1MiAzNTJhNDAgNDAgMCAxIDEgMCA4MCA0MCA0MCAwIDEgMSAwLTgweiJdfSxYWXQ9TXZlLFFZdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzdGFpcnMiLGljb246WzU3Niw1MTIsW10sImUyODkiLCJNMzg0IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMybDEyOCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC05NiAwIDAgOTZjMCAxNy43LTE0LjMgMzItMzIgMzJsLTk2IDAgMCA5NmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtOTYgMCAwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMyTDMyIDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw5NiAwIDAtOTZjMC0xNy43IDE0LjMtMzIgMzItMzJsOTYgMCAwLTk2YzAtMTcuNyAxNC4zLTMyIDMyLTMybDk2IDAgMC05NnoiXX0sSll0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImhvcnNlLWhlYWQiLGljb246WzUxMiw1MTIsW10sImY3YWIiLCJNMCA0NjRMMCAzMTYuOUMwIDIwOC41IDY4LjMgMTExLjggMTcwLjUgNzUuNkwzNDAuMiAxNS41YzIxLjQtNy42IDQzLjggOC4zIDQzLjggMzAuOSAwIDExLTUuNSAyMS4yLTE0LjYgMjcuM0wzMzYgOTZjNDguMSAwIDkxLjIgMjkuOCAxMDguMSA3NC45bDQ4LjYgMTI5LjVjMTEuOCAzMS40IDQuMSA2Ni44LTE5LjYgOTAuNS0xNiAxNi0zNy44IDI1LjEtNjAuNSAyNS4xbC0zLjQgMGMtMjYuMSAwLTUwLjktMTEuNi02Ny42LTMxLjdsLTMyLjMtMzguN2MtMTEuNyA0LjEtMjQuMiA2LjQtMzcuMyA2LjRsLS4xIDBjLTYuMyAwLTEyLjUtLjUtMTguNi0xLjUtMy42LS42LTcuMi0xLjQtMTAuNy0yLjNsMCAwYy0yOC45LTcuOC01My4xLTI2LjgtNjcuOC01Mi4yLTQuNC03LjctMTQuMi0xMC4zLTIxLjktNS44cy0xMC4zIDE0LjItNS44IDIxLjljMjQgNDEuNSA2OC4zIDcwIDExOS4zIDcxLjlsNDcuMiA3MC44YzQgNi4xIDYuMiAxMy4yIDYuMiAyMC40IDAgMjAuMy0xNi41IDM2LjgtMzYuOCAzNi44TDQ4IDUxMmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDh6TTMyOCAyMjRhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4eiJdfSxlWnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidmF1bHQiLGljb246WzUxMiw1MTIsW10sImUyYzUiLCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NCAwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDI1NiAwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6TTI1NiAyNTZhNjQgNjQgMCAxIDAgLTEyOCAwIDY0IDY0IDAgMSAwIDEyOCAwek02NCAyNTZhMTI4IDEyOCAwIDEgMSAyNTYgMCAxMjggMTI4IDAgMSAxIC0yNTYgMHptMzg0LTQ4YzAgMTcuOC05LjcgMzMuMy0yNCA0MS42bDAgNzguNGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTc4LjRjLTE0LjMtOC4zLTI0LTIzLjgtMjQtNDEuNiAwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4eiJdfSx0WnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2xvc2VkLWNhcHRpb25pbmctc2xhc2giLGljb246WzU3Niw1MTIsW10sImUxMzUiLCJNNy0yNC45YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwTDEyOS44IDY0IDQ4MCA2NGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDI1NmMwIDI1LjUtMTQuOSA0Ny40LTM2LjQgNTcuOEw1NjkgNTAzLjFjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMEw3IDkuMUMtMi4zLS4zLTIuMy0xNS41IDctMjQuOXptMzQ1IDMxMWwwLTcwLjJjMC00LjQgMy42LTggOC04bDMyIDBjNC40IDAgOCAzLjYgOCA4IDAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0zMC45LTI1LjEtNTYtNTYtNTZsLTMyIDBjLTMwLjkgMC01NiAyNS4xLTU2IDU2bDAgMjIuMiA0OCA0OHptNjEuNSA2MS41YzIwLjItOC40IDM0LjUtMjguNCAzNC41LTUxLjcgMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRjMCA0LjQtMy42IDgtOCA4bC0yMi4yIDAgNDMuNyA0My43ek0xMzAuMyAyMDAuMWMtMS41IDUtMi4zIDEwLjQtMi4zIDE1LjlsMCA4MGMwIDMwLjkgMjUuMSA1NiA1NiA1NmwzMiAwYzE4LjEgMCAzNC4xLTguNSA0NC40LTIxLjhMMzc4LjIgNDQ4IDk2IDQ0OGMtMzUuMyAwLTY0LTI4LjctNjQtNjRsMC0yNTZjMC03LjggMS40LTE1LjMgNC0yMi4ybDk0LjMgOTQuM3ptOTMuOCA5My44Yy0uMSAuNy0uMSAxLjQtLjEgMi4xIDAgNC40LTMuNiA4LTggOGwtMzIgMGMtNC40IDAtOC0zLjYtOC04bDAtNTAuMiA0OC4xIDQ4LjF6Il19LGFadD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJkcnVtLXN0ZWVscGFuIixpY29uOls1NzYsNTEyLFtdLCJmNTZhIiwiTTI4OCAzMmMxNTkuMSAwIDI4OCA0OCAyODggMTI4bDAgMTkyYzAgODAtMTI4LjkgMTI4LTI4OCAxMjhTMCA0MzIgMCAzNTJMMCAxNjBDMCA4MCAxMjguOSAzMiAyODggMzJ6TTUyOCAxNjBjMC05LjktOC0yOS45LTU1LTQ5LjgtMTguNi03LjktNDAuOS0xNC40LTY2LTE5LjRsLTI3LjggNDMuNmMtNy4zIDExLjUtMTEuMiAyNC44LTExLjIgMzguNCAwIDE3LjUgNi40IDM0LjQgMTguMSA0Ny41bDkuOCAxMWMyOS44LTUuMiA1NS45LTEyLjUgNzcuMi0yMS41IDQ3LjEtMTkuOSA1NS0zOS45IDU1LTQ5Ljh6TTM0OS4yIDIzNy4zYy04LTI2LjItMzIuNC00NS4zLTYxLjItNDUuM3MtNTMuMyAxOS4xLTYxLjIgNDUuM2MxOS40IDEuNyAzOS45IDIuNyA2MS4yIDIuN3M0MS44LS45IDYxLjItMi43ek0xNjkgOTAuOGMtMjUuMiA1LTQ3LjQgMTEuNi02NiAxOS40LTQ3LjEgMTkuOS01NSAzOS45LTU1IDQ5LjhzOCAyOS45IDU1IDQ5LjhjMjEuMyA5IDQ3LjQgMTYuMyA3Ny4yIDIxLjVsOS44LTExYzExLjYtMTMuMSAxOC4xLTMwIDE4LjEtNDcuNSAwLTEzLjYtMy45LTI2LjktMTEuMi0zOC40TDE2OSA5MC44em01Ni4zLThjLS45IDQuMy0xLjQgOC43LTEuNCAxMy4yIDAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjRjMC00LjUtLjUtOS0xLjQtMTMuMi0xOS44LTEuOC00MC44LTIuOC02Mi42LTIuOHMtNDIuOCAxLTYyLjYgMi44eiJdfSxzWnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidGh1bWJzLXVwIixpY29uOls1MTIsNTEyLFsxMjgwNzcsNjE1NzVdLCJmMTY0IiwiTTgwIDE2MGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDI1NmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtNDggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJMMCAxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJsNDggMHpNMjcwLjYgMTZDMjk3LjkgMTYgMzIwIDM4LjEgMzIwIDY1LjRsMCA0LjJjMCA2LjgtMS4zIDEzLjYtMy44IDE5LjlMMjg4IDE2MCA0NDggMTYwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4IDAgMTkuNy0xMS45IDM2LjYtMjguOSA0NCAxNyA3LjQgMjguOSAyNC4zIDI4LjkgNDQgMCAyMy40LTE2LjggNDIuOS0zOSA0Ny4xIDQuNCA3LjMgNyAxNS44IDcgMjQuOSAwIDIyLjItMTUgNDAuOC0zNS40IDQ2LjMgMi4yIDUuNSAzLjQgMTEuNSAzLjQgMTcuNyAwIDI2LjUtMjEuNSA0OC00OCA0OGwtODcuOSAwYy0zNi4zIDAtNzEuNi0xMi40LTk5LjktMzUuMUwxODQgNDM1LjJjLTE1LjItMTIuMS0yNC0zMC41LTI0LTUwbDAtMTg2LjZjMC0xNC45IDMuNS0yOS42IDEwLjEtNDIuOUwyMjYuMyA0My4zQzIzNC43IDI2LjYgMjUxLjggMTYgMjcwLjYgMTZ6Il19LGladD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzdGFtcCIsaWNvbjpbNTEyLDUxMixbXSwiZjViZiIsIk0zMTIgMjAxLjhjMC0xNy40IDkuMi0zMy4yIDE5LjktNDcgMTIuNi0xNi4yIDIwLjEtMzYuNiAyMC4xLTU4LjggMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZjMCAyMi4xIDcuNSA0Mi41IDIwLjEgNTguOCAxMC43IDEzLjggMTkuOSAyOS42IDE5LjkgNDcgMCAyOS45LTI0LjMgNTQuMi01NC4yIDU0LjJMMTEyIDI1NmMtNjEuOSAwLTExMiA1MC4xLTExMiAxMTIgMCAyNi41IDIxLjUgNDggNDggNDhsNDE2IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDggMC02MS45LTUwLjEtMTEyLTExMi0xMTJsLTMzLjggMGMtMjkuOSAwLTU0LjItMjQuMy01NC4yLTU0LjJ6TTU2IDQ2NGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw0MDAgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEw1NiA0NjR6Il19LHJadD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJtZW5vcmFoIixpY29uOls2NDAsNTEyLFtdLCJmNjc2IiwiTTIwLjggNy40QzIyLjggMi45IDI3LjEgMCAzMiAwczkuMiAyLjkgMTEuMiA3LjRMNjEuMyA0OS43YzEuOCA0LjEgMi43IDguNiAyLjcgMTMuMUw2NCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMlMwIDgxLjcgMCA2NGwwLTEuMmMwLTQuNSAuOS04LjkgMi43LTEzLjFMMjAuOCA3LjR6bTk2IDBDMTE4LjggMi45IDEyMy4xIDAgMTI4IDBzOS4yIDIuOSAxMS4yIDcuNGwxOC4yIDQyLjRjMS44IDQuMSAyLjcgOC42IDIuNyAxMy4xbDAgMS4yYzAgMTcuNy0xNC4zIDMyLTMyIDMyUzk2IDgxLjcgOTYgNjRsMC0xLjJjMC00LjUgLjktOC45IDIuNy0xMy4xTDExNi44IDcuNHptNzcuOCA0Mi40TDIxMi44IDcuNEMyMTQuOCAyLjkgMjE5LjEgMCAyMjQgMHM5LjIgMi45IDExLjIgNy40bDE4LjIgNDIuNGMxLjggNC4xIDIuNyA4LjYgMi43IDEzLjFsMCAxLjJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0xLjJjMC00LjUgLjktOC45IDIuNy0xMy4xek0zMDguOCA3LjRDMzEwLjggMi45IDMxNS4xIDAgMzIwIDBzOS4yIDIuOSAxMS4yIDcuNGwxOC4yIDQyLjRjMS44IDQuMSAyLjcgOC42IDIuNyAxMy4xbDAgMS4yYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMS4yYzAtNC41IC45LTguOSAyLjctMTMuMUwzMDguOCA3LjR6bTc3LjggNDIuNEw0MDQuOCA3LjRDNDA2LjggMi45IDQxMS4xIDAgNDE2IDBzOS4yIDIuOSAxMS4yIDcuNGwxOC4yIDQyLjRjMS44IDQuMSAyLjcgOC42IDIuNyAxMy4xbDAgMS4yYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMS4yYzAtNC41IC45LTguOSAyLjctMTMuMXpNNTAwLjggNy40QzUwMi44IDIuOSA1MDcuMSAwIDUxMiAwczkuMiAyLjkgMTEuMiA3LjRsMTguMiA0Mi40YzEuOCA0LjEgMi43IDguNiAyLjcgMTMuMWwwIDEuMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTEuMmMwLTQuNSAuOS04LjkgMi43LTEzLjFMNTAwLjggNy40em03Ny44IDQyLjRMNTk2LjggNy40QzU5OC44IDIuOSA2MDMuMSAwIDYwOCAwczkuMiAyLjkgMTEuMiA3LjRsMTguMiA0Mi40YzEuOCA0LjEgMi43IDguNiAyLjcgMTMuMWwwIDEuMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTEuMmMwLTQuNSAuOS04LjkgMi43LTEzLjF6TTMyIDEyOGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwxOTIgMCAwLTE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgMTYwIDE5MiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCAxMjhjMCA1My00MyA5Ni05NiA5NmwtMTkyIDAgMCA2NCAxMjggMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMzIwIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsMTI4IDAgMC02NC0xOTIgMGMtNTMgMC05Ni00My05Ni05NkwwIDE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMnptOTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDEyOC02NCAwIDAtMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMyem05NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMTI4LTY0IDAgMC0xMjhjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTE5MiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMTI4LTY0IDAgMC0xMjhjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTk2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAxMjgtNjQgMCAwLTEyOGMwLTE3LjcgMTQuMy0zMiAzMi0zMnoiXX0sb1p0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNoaWxkcmVuIixpY29uOls2NDAsNTEyLFtdLCJlNGUxIiwiTTE2MC41IDBhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6bS03MiA0ODBsMC04MC0xNy44IDBjLTEwLjkgMC0xOC42LTEwLjctMTUuMi0yMS4xTDg2LjcgMjg1LjUgNTggMzIzLjNjLTEwLjcgMTQuMS0zMC44IDE2LjgtNDQuOCA2LjJTLTMuNyAyOTguNyA3IDI4NC43TDY1LjkgMjA3YzIyLjQtMjkuNiA1Ny41LTQ3IDk0LjYtNDdzNzIuMiAxNy40IDk0LjYgNDdMMzE0IDI4NC43YzEwLjcgMTQuMSA3LjkgMzQuMi02LjIgNDQuOHMtMzQuMiA3LjktNDQuOC02LjJsLTI4LjctMzcuOCAzMS4xIDkzLjRjMy41IDEwLjQtNC4zIDIxLjEtMTUuMiAyMS4xbC0xNy44IDAgMCA4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTgwLTE2IDAgMCA4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMnpNNDgwLjUgMGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHptLTggMzg0bDAgOTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0xNzkuNS0xMi45IDIwLjVjLTkuNCAxNS0yOS4yIDE5LjQtNDQuMSAxMHMtMTkuNC0yOS4yLTEwLTQ0LjFsNTEuNy04Mi4xYzE3LjYtMjcuOSA0OC4zLTQ0LjkgODEuMi00NC45bDEyLjMgMGMzMyAwIDYzLjcgMTYuOSA4MS4yIDQ0LjlMNjE5LjYgMjg3YzkuNCAxNSA0LjkgMzQuNy0xMCA0NC4xcy0zNC43IDQuOS00NC4xLTEwbC0xMi45LTIwLjUgMCAxNzkuNWMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTk2LTE2IDB6Il19LHp2ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjaGFydC1saW5lIixpY29uOls1MTIsNTEyLFsibGluZS1jaGFydCJdLCJmMjAxIiwiTTY0IDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzAgNDYuMyAwIDY0TDAgNDAwYzAgNDQuMiAzNS44IDgwIDgwIDgwbDQwMCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDgwIDQxNmMtOC44IDAtMTYtNy4yLTE2LTE2TDY0IDY0em00MDYuNiA4Ni42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDMyMCAyMTAuNyAyNjIuNiAxNTMuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTk2IDk2Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDczLjQtNzMuNCA1Ny40IDU3LjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTI4LTEyOHoiXX0sblp0PXp2ZSxDdmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic3F1YXJlLWVudmVsb3BlIixpY29uOls0NDgsNTEyLFsiZW52ZWxvcGUtc3F1YXJlIl0sImYxOTkiLCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMnpNMjA5LjEgMjY3LjlMMTA4LjQgMjA3LjRjLTcuNy00LjYtMTIuNC0xMi45LTEyLjQtMjEuOSAwLTE0LjEgMTEuNC0yNS41IDI1LjUtMjUuNWwyMDQuOSAwYzE0LjEgMCAyNS41IDExLjQgMjUuNSAyNS41IDAgOS00LjcgMTcuMy0xMi40IDIxLjlMMjM4LjkgMjY3LjljLTQuNSAyLjctOS42IDQuMS0xNC45IDQuMXMtMTAuNC0xLjQtMTQuOS00LjF6TTM1MiAyMzcuM2wwIDgyLjdjMCAxNy43LTE0LjMgMzItMzIgMzJsLTE5MiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTgyLjcgOTYuNyA1OEMyMDIuMSAzMDEgMjEzIDMwNCAyMjQgMzA0czIxLjktMyAzMS4zLTguN2w5Ni43LTU4eiJdfSxsWnQ9Q3ZlLFR2ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJiYW4tc21va2luZyIsaWNvbjpbNTEyLDUxMixbMTI4Njg1LCJzbW9raW5nLWJhbiJdLCJmNTRkIiwiTTk5LjUgMTQ0LjhsNzkuMiA3OS4yLTUwLjcgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmwxNDYuNyAwIDkyLjUgOTIuNWMtMzEuNCAyMi40LTY5LjggMzUuNS0xMTEuMiAzNS41LTEwNiAwLTE5Mi04Ni0xOTItMTkyIDAtNDEuNSAxMy4xLTc5LjkgMzUuNS0xMTEuMnpNMzMzLjMgMjg4bC0zMi0zMiA4Mi43IDAgMCAzMi01MC43IDB6bTMyIDMybDE4LjcgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyTDI2OS4zIDIyNCAxNDQuOCA5OS41YzMxLjQtMjIuNCA2OS44LTM1LjUgMTExLjItMzUuNSAxMDYgMCAxOTIgODYgMTkyIDE5MiAwIDQxLjUtMTMuMSA3OS45LTM1LjUgMTExLjJMMzY1LjMgMzIwek0yNTYgNTEyYTI1NiAyNTYgMCAxIDAgMC01MTIgMjU2IDI1NiAwIDEgMCAwIDUxMnpNMjcyIDk2Yy04LjggMC0xNiA3LjItMTYgMTYgMCAyNi41IDIxLjUgNDggNDggNDhsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZzNy4yIDE2IDE2IDE2IDE2LTcuMiAxNi0xNmMwLTI2LjUtMjEuNS00OC00OC00OGwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2cy03LjItMTYtMTYtMTZ6Il19LGNadD1UdmUsZFp0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRydWNrLWZyb250IixpY29uOls0NDgsNTEyLFtdLCJlMmI3IiwiTTAgMTEyQzAgNjcuOCAzNS44IDMyIDgwIDMybDI4OCAwYzQ0LjIgMCA4MCAzNS44IDgwIDgwbDAgMjU2YzAgMjYuMi0xMi42IDQ5LjQtMzIgNjRsMCA0OGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMzIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0zMi0xOTIgMCAwIDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMybC0zMiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTQ4QzEyLjYgNDE3LjQgMCAzOTQuMiAwIDM2OEwwIDExMnptOTYgODBsMCA2NCAyNTYgMCAwLTY0YzAtMTcuNy0xNC4zLTMyLTMyLTMybC0xOTIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6bTMyIDE2MGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem0yMjQgMzJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0eiJdfSxLYj17cHJlZml4OiJmYXMiLGljb25OYW1lOiJidWlsZGluZyIsaWNvbjpbMzg0LDUxMixbMTI3OTcwLDYxNjg3XSwiZjFhZCIsIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwyNTYgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTM4NGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAwek0xNzYgMzUybDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA4MC05NiAwIDAtODBjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTk2IDExMmMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyek0yNDAgOTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNnpNOTYgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJ6bTE0NC0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2eiJdfSx1WnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYnVsbHNleWUiLGljb246WzUxMiw1MTIsW10sImYxNDAiLCJNNDQ4IDI1NmExOTIgMTkyIDAgMSAwIC0zODQgMCAxOTIgMTkyIDAgMSAwIDM4NCAwek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwIDI1NiAyNTYgMCAxIDEgLTUxMiAwem0yNTYgODBhODAgODAgMCAxIDAgMC0xNjAgODAgODAgMCAxIDAgMCAxNjB6bTAtMjI0YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHpNMjI0IDI1NmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAweiJdfSwkdmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYXJyb3ctbGVmdC1sb25nIixpY29uOls1NzYsNTEyLFsibG9uZy1hcnJvdy1sZWZ0Il0sImYxNzciLCJNOS40IDIzMy40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2wxMjggMTI4YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMMTA5LjMgMjg4IDU0NCAyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTQzNC43IDAgNzMuNC03My40YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC0xMjggMTI4eiJdfSxwWnQ9JHZlLGhadD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjaGVzcy1yb29rIixpY29uOlszODQsNTEyLFs5ODIwXSwiZjQ0NyIsIk0wIDMyTDAgMTMzLjVjMCAxNyA2LjcgMzMuMyAxOC43IDQ1LjNMNjQgMjI0IDY0IDM4NCA3LjggNDU0LjNDMi43IDQ2MC42IDAgNDY4LjQgMCA0NzYuNSAwIDQ5Ni4xIDE1LjkgNTEyIDM1LjUgNTEybDMxMi45IDBjMTkuNiAwIDM1LjUtMTUuOSAzNS41LTM1LjUgMC04LjEtMi43LTE1LjktNy44LTIyLjJsLTU2LjItNzAuMyAwLTE2MCA0NS4zLTQ1LjNjMTItMTIgMTguNy0yOC4zIDE4LjctNDUuM0wzODQgMzJjMC0xNy43LTE0LjMtMzItMzItMzJMMzIwIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgMzItNDggMCAwLTMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyTDE3NiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDMyLTQ4IDAgMC0zMkM5NiAxNC4zIDgxLjcgMCA2NCAwTDMyIDBDMTQuMyAwIDAgMTQuMyAwIDMyeiJdfSxmWnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYmxlbmRlci1waG9uZSIsaWNvbjpbNTc2LDUxMixbXSwiZjZiNiIsIk0xNTEuNCAxMy4yYzEwLjIgNS44IDE0LjUgMTguNCAxMCAyOS4zTDEzOC4yIDk4LjhjLTMuOSA5LjYtMTMuNyAxNS40LTI0IDE0LjRsLTIwLjItMkM3OC43IDE1Mi45IDc4IDE5OC45IDkxLjkgMjQxLjFsMjIuNC0yLjJjMTAuMy0xIDIwIDQuOCAyNCAxNC40bDIzLjIgNTYuM2M0LjUgMTAuOSAuMiAyMy40LTEwIDI5LjNsLTIuOSAxLjZjLTMzLjYgMTkuMi04MS43IDE2LjItMTA2LjItMjEuNi01Ni4zLTg2LjYtNTYuMy0xOTkuMSAwLTI4NS43IDI0LjYtMzcuNyA3Mi43LTQwLjcgMTA2LjItMjEuNmwyLjkgMS42ek0yMjQgMzM2TDE5My43IDE3LjVDMTkyLjggOC4xIDIwMC4yIDAgMjA5LjYgMGwzMjQgMGMyMS4zIDAgMzYuNiAyMC4zIDMwLjggNDAuOEw1NTMuMSA4MCA0NDAgODBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsOTkuNCAwLTE4LjMgNjQtODEuMSAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDY3LjQgMC0yNy40IDk2LTI1NiAwem04IDQ4bDI0MCAwYzIyLjEgMCA0MCAxNy45IDQwIDQwbDAgNDhjMCAyMi4xLTE3LjkgNDAtNDAgNDBsLTI0MCAwYy0yMi4xIDAtNDAtMTcuOS00MC00MGwwLTQ4YzAtMjIuMSAxNy45LTQwIDQwLTQwem0xMjAgODhhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4eiJdfSxEdmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYXJyb3ctdHVybi11cCIsaWNvbjpbMzg0LDUxMixbImxldmVsLXVwIl0sImYxNDgiLCJNMzIgNDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDk2IDBjNTMgMCA5Ni00MyA5Ni05NmwwLTMwNi43IDczLjQgNzMuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC0xMjgtMTI4Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtMTI4IDEyOGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwxNjAgMTA5LjMgMTYwIDQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtOTYgMHoiXX0sbVp0PUR2ZSxnWnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYmljeWNsZSIsaWNvbjpbNjQwLDUxMixbMTI4NjkwXSwiZjIwNiIsIk0zMzEuNyA0My4zQzMzNiAzNi4zIDM0My43IDMyIDM1MiAzMmwxMDQgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtNjUuNiAwIDcyLjIgMTQ4LjRjMTAuNy0yLjkgMjEuOS00LjQgMzMuNC00LjQgNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjhzLTU3LjMgMTI4LTEyOCAxMjgtMTI4LTU3LjMtMTI4LTEyOGMwLTQyIDIwLjItNzkuMiA1MS40LTEwMi42bC0yMC40LTQxLjktNzMuNSAxNDdjLTIuMyA0LjgtNi4zIDguOC0xMS40IDExLjItLjYgLjMtMS4yIC41LTEuOCAuNy0yLjkgMS4xLTUuOSAxLjYtOC45IDEuNUwyNzEgMzY4Yy03LjkgNjMuMS02MS43IDExMi0xMjcgMTEyLTcwLjcgMC0xMjgtNTcuMy0xMjgtMTI4UzczLjMgMjI0IDE0NCAyMjRjMTAuOCAwIDIxLjIgMS4zIDMxLjIgMy44bDI4LjUtNTYuOS0xMS41LTI2LjktNDAuMiAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDU2IDBjOS42IDAgMTguMyA1LjcgMjIuMSAxNC41bDE0LjMgMzMuNSAxMjMuNyAwLTM3LjctNzcuNWMtMy42LTcuNC0zLjItMTYuMiAxLjItMjMuMnpNMjI4LjUgMjI4LjdsLTQ1LjYgOTEuMyA4NC44IDAtMzkuMS05MS4zek0zMDUuNyAyODdsNDcuNS05NS04OC4yIDAgNDAuNyA5NXptMTY4LjcgNzUuNWwtMjkuNy02MWMtMTIuOCAxMy0yMC43IDMwLjgtMjAuNyA1MC41IDAgMzkuOCAzMi4yIDcyIDcyIDcyczcyLTMyLjIgNzItNzItMzIuMi03Mi03Mi03MmMtMi43IDAtNS41IC4yLTguMSAuNWwyOS43IDYxYzUuOCAxMS45IC44IDI2LjMtMTEuMSAzMi4xcy0yNi4zIC44LTMyLjEtMTEuMXpNMTQ5LjIgMzY4Yy0yMC4yIDAtMzMuNC0yMS4zLTI0LjMtMzkuNGwyNC4yLTQ4LjVjLTEuNy0uMS0zLjQtLjItNS4xLS4yLTM5LjggMC03MiAzMi4yLTcyIDcyczMyLjIgNzIgNzIgNzJjMzQuMyAwIDYyLjktMjMuOSA3MC4yLTU2bC02NSAweiJdfSxMdmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2lyY2xlLWFycm93LWRvd24iLGljb246WzUxMiw1MTIsWyJhcnJvdy1jaXJjbGUtZG93biJdLCJmMGFiIiwiTTI1NiA1MTJhMjU2IDI1NiAwIDEgMCAwLTUxMiAyNTYgMjU2IDAgMSAwIDAgNTEyek0yMzkgMzc3bC04MC04MGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDM5IDM5IDAtMTUwLjFjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDE1MC4xIDM5LTM5YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtODAgODBjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAweiJdfSxiWnQ9THZlLGRmPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImdlYXIiLGljb246WzUxMiw1MTIsWzk4ODEsImNvZyJdLCJmMDEzIiwiTTE5NS4xIDkuNUMxOTguMS01LjMgMjExLjItMTYgMjI2LjQtMTZsNTkuOCAwYzE1LjIgMCAyOC4zIDEwLjcgMzEuMyAyNS41TDMzMiA3OS41YzE0LjEgNiAyNy4zIDEzLjcgMzkuMyAyMi44bDY3LjgtMjIuNWMxNC40LTQuOCAzMC4yIDEuMiAzNy44IDE0LjRsMjkuOSA1MS44YzcuNiAxMy4yIDQuOSAyOS44LTYuNSAzOS45TDQ0NyAyMzMuM2MuOSA3LjQgMS4zIDE1IDEuMyAyMi43cy0uNSAxNS4zLTEuMyAyMi43bDUzLjQgNDcuNWMxMS40IDEwLjEgMTQgMjYuOCA2LjUgMzkuOWwtMjkuOSA1MS44Yy03LjYgMTMuMS0yMy40IDE5LjItMzcuOCAxNC40bC02Ny44LTIyLjVjLTEyLjEgOS4xLTI1LjMgMTYuNy0zOS4zIDIyLjhsLTE0LjQgNjkuOWMtMy4xIDE0LjktMTYuMiAyNS41LTMxLjMgMjUuNWwtNTkuOCAwYy0xNS4yIDAtMjguMy0xMC43LTMxLjMtMjUuNWwtMTQuNC02OS45Yy0xNC4xLTYtMjcuMi0xMy43LTM5LjMtMjIuOEw3My41IDQzMi4zYy0xNC40IDQuOC0zMC4yLTEuMi0zNy44LTE0LjRMNS44IDM2Ni4xYy03LjYtMTMuMi00LjktMjkuOCA2LjUtMzkuOWw1My40LTQ3LjVjLS45LTcuNC0xLjMtMTUtMS4zLTIyLjdzLjUtMTUuMyAxLjMtMjIuN0wxMi4zIDE4NS44Yy0xMS40LTEwLjEtMTQtMjYuOC02LjUtMzkuOUwzNS43IDk0LjFjNy42LTEzLjIgMjMuNC0xOS4yIDM3LjgtMTQuNGw2Ny44IDIyLjVjMTIuMS05LjEgMjUuMy0xNi43IDM5LjMtMjIuOEwxOTUuMSA5LjV6TTI1Ni4zIDMzNmE4MCA4MCAwIDEgMCAtLjYtMTYwIDgwIDgwIDAgMSAwIC42IDE2MHoiXX0sdlp0PWRmLHhadD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJtYXJzLWFuZC12ZW51cy1idXJzdCIsaWNvbjpbNjQwLDUxMixbXSwiZTUyMyIsIk00NjQtMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJsMzQuNyAwLTYzIDYzYy0yOC40LTE5LjUtNjIuNy0zMS05OS44LTMxLTk3LjIgMC0xNzYgNzguOC0xNzYgMTc2IDAgODYuMyA2Mi4xIDE1OC4xIDE0NCAxNzMuMWwwIDM0LjktMzIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzMiAwIDAgMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTMyIDMyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTMyIDAgMC0zNC45YzgxLjktMTUgMTQ0LTg2LjggMTQ0LTE3My4xIDAtMzctMTEuNC03MS40LTMxLTk5LjhsNjMtNjMgMCAzNC43YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xMTJjMC0xNy43LTE0LjMtMzItMzItMzJMNDk2LTY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNMzY4IDk2YTExMiAxMTIgMCAxIDEgMCAyMjQgMTEyIDExMiAwIDEgMSAwLTIyNHpNMTkwLjktMjEuOUMxODguNC0yOCAxODIuNi0zMiAxNzYtMzJzLTEyLjQgNC0xNC45IDEwLjFsLTI5LjQgNzQtNzYuMi0yMy4xYy02LjMtMS45LTEzLjEgLjItMTcuMiA1LjNTMzMuOCA0Ni41IDM3IDUyLjJsMzkuNSA2OS4xLTY1LjYgNDUuMWMtNS40IDMuNy04IDEwLjMtNi41IDE2LjdzNi43IDExLjIgMTMuMSAxMi4ybDc4LjcgMTIuMi01LjYgNzkuNGMtLjUgNi41IDMuMSAxMi43IDkgMTUuNXMxMi45IDEuOCAxNy44LTIuNkwxNTIuMSAyNjhjLTUuMy0xOS4xLTguMS0zOS4yLTguMS02MCAwLTY1LjQgMjgtMTI0LjIgNzIuNi0xNjUuMUwxOTAuOS0yMS45eiJdfSx5WnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToib3R0ZXIiLGljb246WzY0MCw1MTIsWzEyOTQ0Nl0sImY3MDAiLCJNMTgxLjUgMTk3LjFsMTIuOSA2LjRjNS45IDMgMTIuNCA0LjUgMTkuMSA0LjUgMjMuNSAwIDQyLjYtMTkuMSA0Mi42LTQyLjZsMC0yMS40YzAtMzUuMy0yOC43LTY0LTY0LTY0bC02NCAwYy0zNS4zIDAtNjQgMjguNy02NCA2NGwwIDIxLjRjMCAyMy41IDE5LjEgNDIuNiA0Mi42IDQyLjYgNi42IDAgMTMuMS0xLjUgMTkuMS00LjUgOS4zLTQuNyAxNi40LTguMiAyMS4yLTEwLjZMMTM1LjEgMTg1Yy00LjUtMy03LjEtOC03LjEtMTMuM2wwLTMuN2MwLTEzLjMgMTAuNy0yNCAyNC0yNGwxNiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgMy43YzAgNS4zLTIuNyAxMC4zLTcuMSAxMy4zbC0xMS44IDcuOSA4LjQgNC4yem0tOC42IDQ5LjRsLTEyLjktNi40LTEyLjkgNi40Yy0xMi42IDYuMy0yNi41IDkuNi00MC41IDkuNi0zLjYgMC03LjEtLjItMTAuNi0uNmwwIC42YzAgMzUuMyAyOC43IDY0IDY0IDY0bDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsMTYwIDAgMC02NGMwLTIzLjcgMTIuOS00NC40IDMyLTU1LjQgOS40LTUuNCAyMC4zLTguNiAzMi04LjZsMC0xNmMwLTI2LjUgMjEuNS00OCA0OC00OCA4LjggMCAxNiA3LjIgMTYgMTZsMCA5NmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtOTkuN2MwLTQ4LjItMzAuOC05MS03Ni42LTEwNi4zbC04LjUtMi44Yy04LTIuNy0xMi42LTExLjEtMTAuNC0xOS4zczEwLjMtMTMuMiAxOC42LTExLjZsMTkuOSA0QzU3NiA4Ni4xIDY0MCAxNjQuMiA2NDAgMjU0LjlsMCAxLjEgMCAwYzAgMTIzLjctMTAwLjMgMjI0LTIyNCAyMjRsLTE2MC42IDBDMTMyIDQ4MCAzMiAzODAgMzIgMjU2LjZsMC0zOS44Yy0xMC4xLTE0LjYtMTYtMzIuMy0xNi01MS40bDAtMjEuNCAwLTEuNEM2LjcgMTM5LjMgMCAxMzAuNSAwIDEyMCAwIDEwNi43IDEwLjcgOTYgMjQgOTZsMi44IDBDNDQuOCA1OC4yIDgzLjMgMzIgMTI4IDMybDY0IDBjNDQuNyAwIDgzLjIgMjYuMiAxMDEuMiA2NGwyLjggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNCAwIDEwLjUtNi43IDE5LjMtMTYgMjIuNmwwIDEuNCAwIDIxLjRjMCAxLjQgMCAyLjgtLjEgNC4zIDEyLTYuMiAyNS43LTkuNiA0MC4xLTkuNmw4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTggMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCA4IDU2LjQgMGMtMTUuMiAxNy0yNC40IDM5LjQtMjQuNCA2NGwtMzIgMGMtNDIuMyAwLTc4LjItMjcuNC05MS02NS4zLTUuMSAuOS0xMC4zIDEuMy0xNS42IDEuMy0xNC4xIDAtMjcuOS0zLjMtNDAuNS05LjZ6TTk2IDEyOGExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6bTExMiAxNmExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAweiJdfSxFdmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2lyY2xlLWNoZXZyb24tbGVmdCIsaWNvbjpbNTEyLDUxMixbImNoZXZyb24tY2lyY2xlLWxlZnQiXSwiZjEzNyIsIk01MTIgMjU2YTI1NiAyNTYgMCAxIDAgLTUxMiAwIDI1NiAyNTYgMCAxIDAgNTEyIDB6TTI3MSAxMzVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC04NyA4NyA4NyA4N2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwTDE2NyAyNzNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45TDI3MSAxMzV6Il19LHdadD1FdmUsUHZlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNpcmNsZS1xdWVzdGlvbiIsaWNvbjpbNTEyLDUxMixbNjIxMDgsInF1ZXN0aW9uLWNpcmNsZSJdLCJmMDU5IiwiTTI1NiA1MTJhMjU2IDI1NiAwIDEgMCAwLTUxMiAyNTYgMjU2IDAgMSAwIDAgNTEyem0wLTMzNmMtMTcuNyAwLTMyIDE0LjMtMzIgMzIgMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGMwIDQ3LjItMzYgNjcuMi01NiA3NC41bDAgMy44YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtOC4xYzAtMjAuNSAxNC44LTM1LjIgMzAuMS00MC4yIDYuNC0yLjEgMTMuMi01LjUgMTguMi0xMC4zIDQuMy00LjIgNy43LTEwIDcuNy0xOS42IDAtMTcuNy0xNC4zLTMyLTMyLTMyek0yMjQgMzY4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6Il19LGtadD1QdmUsU1p0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6IndhbGtpZS10YWxraWUiLGljb246WzM4NCw1MTIsW10sImY4ZWYiLCJNODgtMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRsMCA3MiA0OCAwYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMzIgMGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDE2IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCAxNjAuOWMwIDkuOS0yLjMgMTkuNy02LjggMjguNmwtMjAuMiA0MC40Yy0zLjMgNi43LTUuMSAxNC01LjEgMjEuNWwwIDg0LjdjMCAzNS4zLTI4LjcgNjQtNjQgNjRMOTYgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NGwwLTg0LjdjMC03LjUtMS43LTE0LjgtNS4xLTIxLjVMNi44IDMwMS41QzIuMyAyOTIuNiAwIDI4Mi44IDAgMjcyLjlMMCAxMTJDMCA4NS41IDIxLjUgNjQgNDggNjRsMTYgMCAwLTcyYzAtMTMuMyAxMC43LTI0IDI0LTI0em0zMiAxNzZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMTQ0IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTE0NCAwem0wIDk2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDE0NCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0xNDQgMHoiXX0sSXZlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InVzZXItZ3JvdXAiLGljb246WzU3Niw1MTIsWzEyODEwMSwidXNlci1mcmllbmRzIl0sImY1MDAiLCJNNjQgMTI4YTExMiAxMTIgMCAxIDEgMjI0IDAgMTEyIDExMiAwIDEgMSAtMjI0IDB6TTAgNDY0YzAtOTcuMiA3OC44LTE3NiAxNzYtMTc2czE3NiA3OC44IDE3NiAxNzZsMCA2YzAgMjMuMi0xOC44IDQyLTQyIDQyTDQyIDUxMmMtMjMuMiAwLTQyLTE4LjgtNDItNDJsMC02ek00MzIgNjRhOTYgOTYgMCAxIDEgMCAxOTIgOTYgOTYgMCAxIDEgMC0xOTJ6bTAgMjQwYzc5LjUgMCAxNDQgNjQuNSAxNDQgMTQ0bDAgMjIuNGMwIDIzLTE4LjYgNDEuNi00MS42IDQxLjZsLTE0NC44IDBjNi42LTEyLjUgMTAuNC0yNi44IDEwLjQtNDJsMC02YzAtNTEuNS0xNy40LTk4LjktNDYuNS0xMzYuNyAyMi42LTE0LjcgNDkuNi0yMy4zIDc4LjUtMjMuM3oiXX0sX1p0PUl2ZSxBdmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaG91c2UtY2hpbW5leSIsaWNvbjpbNTEyLDUxMixbNjM0OTksImhvbWUtbGciXSwiZTNhZiIsIk0yMzQuMiA4LjZjMTIuMy0xMS40IDMxLjMtMTEuNCA0My41IDBMMzY4IDkyLjMgMzY4IDgwYzAtMTcuNyAxNC4zLTMyIDMyLTMybDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAxMDEuNSAzNy44IDM1LjFjOS42IDkgMTIuOCAyMi45IDggMzUuMVM0OTMuMiAyNzIgNDgwIDI3MmwtMTYgMCAwIDE3NmMwIDM1LjMtMjguNyA2NC02NCA2NGwtMjg4IDBjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtMTc2LTE2IDBjLTEzLjIgMC0yNS04LjEtMjkuOC0yMC4zcy0xLjYtMjYuMiA4LTM1LjFsMjI0LTIwOHpNMjQwIDMyMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCA5NiAxMjggMCAwLTk2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4bC0zMiAweiJdfSxNWnQ9QXZlLE52ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJyaWdodC1mcm9tLWJyYWNrZXQiLGljb246WzUxMiw1MTIsWyJzaWduLW91dC1hbHQiXSwiZjJmNSIsIk01MDUgMjczYzkuNC05LjQgOS40LTI0LjYgMC0zMy45TDM2MSA5NWMtNi45LTYuOS0xNy4yLTguOS0yNi4yLTUuMlMzMjAgMTAyLjMgMzIwIDExMmwwIDgwLTExMiAwYy0yNi41IDAtNDggMjEuNS00OCA0OGwwIDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDExMiAwIDAgODBjMCA5LjcgNS44IDE4LjUgMTQuOCAyMi4yczE5LjMgMS43IDI2LjItNS4yTDUwNSAyNzN6TTE2MCA5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkw5NiAzMkM0MyAzMiAwIDc1IDAgMTI4TDAgMzg0YzAgNTMgNDMgOTYgOTYgOTZsNjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtNjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0yNTZjMC0xNy43IDE0LjMtMzIgMzItMzJsNjQgMHoiXX0selp0PU52ZSxDWnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmlsZSIsaWNvbjpbMzg0LDUxMixbMTI4MTk2LDEyODQ1OSw2MTQ2Ml0sImYxNWIiLCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjU2IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yNzcuNWMwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0wyNTguNyAxOC43QzI0Ni43IDYuNyAyMzAuNSAwIDIxMy41IDBMNjQgMHpNMzI1LjUgMTc2TDIzMiAxNzZjLTEzLjMgMC0yNC0xMC43LTI0LTI0TDIwOCA1OC41IDMyNS41IDE3NnoiXX0sVFp0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBsYW5lLXNsYXNoIixpY29uOls1NzYsNTEyLFtdLCJlMDY5IiwiTTQxLTI0LjljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwUy0yLjMtLjMgNyA5LjFsNTI4IDUyOGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTE4My40LTE4My40IDcuMS03LjcgMTI3LjMgMGMzMC45IDAgNTYtMjUuMSA1Ni01NnMtMjUuMS01Ni01Ni01NkwzOTIuNyAyMDAgMjMzLjUgMjYuNEMyMjcuNSAxOS44IDIxOC45IDE2IDIwOS45IDE2bC00My43IDBjLTEwLjkgMC0xOC42IDEwLjctMTUuMiAyMS4xTDE3NS4xIDEwOS4yIDQxLTI0Ljl6TTEzMC4yIDIwMGwtMjQuNiAwLTUyLjgtNjZjLTMtMy44LTcuNi02LTEyLjUtNmwtMTkuOCAwYy0xMC40IDAtMTggOS44LTE1LjUgMTkuOUwzMiAyNTYgNSAzNjQuMUMyLjQgMzc0LjIgMTAuMSAzODQgMjAuNSAzODRsMTkuOCAwYzQuOSAwIDkuNS0yLjIgMTIuNS02bDUyLjgtNjYgOTkuNyAwLTU0LjMgMTYyLjljLTMuNSAxMC40IDQuMyAyMS4xIDE1LjIgMjEuMWw0My43IDBjOSAwIDE3LjUtMy44IDIzLjYtMTAuNEwzMjAuNyAzOTAuNSAxMzAuMiAyMDB6Il19LCRadD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjbG91ZC1zaG93ZXJzLWhlYXZ5IixpY29uOls1MTIsNTEyLFtdLCJmNzQwIiwiTTk2IDMyMGMtNTMgMC05Ni00My05Ni05NiAwLTQyLjUgMjcuNi03OC42IDY1LjktOTEuMi0xLjMtNi43LTEuOS0xMy43LTEuOS0yMC44IDAtNjEuOSA1MC4xLTExMiAxMTItMTEyIDQzLjEgMCA4MC41IDI0LjMgOTkuMiA2MCAxNC43LTE3LjEgMzYuNS0yOCA2MC44LTI4IDQ0LjIgMCA4MCAzNS44IDgwIDgwIDAgNS41LS42IDEwLjgtMS42IDE2IC41IDAgMS4xIDAgMS42IDAgNTMgMCA5NiA0MyA5NiA5NnMtNDMgOTYtOTYgOTZMOTYgMzIwem02LjggNzkuNmwtMzIgOTZDNjYuNiA1MDguMiA1MyA1MTUgNDAuNCA1MTAuOFMyMSA0OTMgMjUuMiA0ODAuNGwzMi05NkM2MS40IDM3MS44IDc1IDM2NSA4Ny42IDM2OS4yUzEwNyAzODcgMTAyLjggMzk5LjZ6bTEyMCAwbC0zMiA5NmMtNC4yIDEyLjYtMTcuOCAxOS40LTMwLjQgMTUuMlMxNDEgNDkzIDE0NS4yIDQ4MC40bDMyLTk2YzQuMi0xMi42IDE3LjgtMTkuNCAzMC40LTE1LjJTMjI3IDM4NyAyMjIuOCAzOTkuNnptMTEyIDBsLTMyIDk2Yy00LjIgMTIuNi0xNy44IDE5LjQtMzAuNCAxNS4yUzI1MyA0OTMgMjU3LjIgNDgwLjRsMzItOTZjNC4yLTEyLjYgMTcuOC0xOS40IDMwLjQtMTUuMlMzMzkgMzg3IDMzNC44IDM5OS42em0xMjAgMGwtMzIgOTZjLTQuMiAxMi42LTE3LjggMTkuNC0zMC40IDE1LjJTMzczIDQ5MyAzNzcuMiA0ODAuNGwzMi05NmM0LjItMTIuNiAxNy44LTE5LjQgMzAuNC0xNS4yUzQ1OSAzODcgNDU0LjggMzk5LjZ6Il19LERadD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwZXJzb24tZmFsbGluZyIsaWNvbjpbNTEyLDUxMixbXSwiZTU0NiIsIk0zMjAgMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCA1LjRjMCA0NS0yMy42IDg2LjYtNjIuMSAxMDkuOGwtNC42IDIuOEMxMzEuNCAxODQuNyA5NiAyNDcuMSA5NiAzMTQuNkw5NiAzODRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTY5LjRjMC0xNi43IDMuMy0zMyA5LjQtNDhMMzU5LjIgNTAwLjJjMTEuMSAxMy43IDMxLjMgMTUuOCA0NSA0LjdzMTUuOC0zMS4zIDQuNy00NUwyOTUuMiAzMjAgNDAwIDMyMCA0MzguNCAzNzEuMmMxMC42IDE0LjEgMzAuNyAxNyA0NC44IDYuNHMxNy0zMC43IDYuNC00NC44bC00My4yLTU3LjZDNDM3LjMgMjYzLjEgNDIzLjEgMjU2IDQwOCAyNTZsLTg5IDAtNjIuOS03NS41YzQwLjMtMzYgNjMuOS04Ny45IDYzLjktMTQzLjFsMC01LjR6TTEwNCAxNDRhNTYgNTYgMCAxIDAgMC0xMTIgNTYgNTYgMCAxIDAgMCAxMTJ6Il19LFJ2ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0dXJuLWRvd24iLGljb246WzM4NCw1MTIsWzEwNTQ5LCJsZXZlbC1kb3duLWFsdCJdLCJmM2JlIiwiTTE2OS40IDUwMi42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDEyOC0xMjhjOS4yLTkuMiAxMS45LTIyLjkgNi45LTM0LjlTMzMyLjkgMzIwIDMyMCAzMjBsLTY0IDAgMC0xNjBDMjU2IDcxLjYgMTg0LjQgMCA5NiAwTDMyIDBDMTQuMyAwIDAgMTQuMyAwIDMyTDAgOTZjMCAxNy43IDE0LjMgMzIgMzIgMzJsNjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDE2MC02NCAwYy0xMi45IDAtMjQuNiA3LjgtMjkuNiAxOS44cy0yLjIgMjUuNyA2LjkgMzQuOWwxMjggMTI4eiJdfSxMWnQ9UnZlLE92ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ1cC1yaWdodC1hbmQtZG93bi1sZWZ0LWZyb20tY2VudGVyIixpY29uOls1MTIsNTEyLFsiZXhwYW5kLWFsdCJdLCJmNDI0IiwiTTM0NCAwTDQ4OCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgMTQ0YzAgOS43LTUuOCAxOC41LTE0LjggMjIuMnMtMTkuMyAxLjctMjYuMi01LjJsLTM5LTM5LTg3IDg3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtMzItMzJjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDg3LTg3LTM5LTM5Yy02LjktNi45LTguOS0xNy4yLTUuMi0yNi4yUzMzNC4zIDAgMzQ0IDB6TTE2OCA1MTJMMjQgNTEyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNEwwIDM0NGMwLTkuNyA1LjgtMTguNSAxNC44LTIyLjJTMzQuMSAzMjAuMiA0MSAzMjdsMzkgMzkgODctODdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMzIgMzJjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTg3IDg3IDM5IDM5YzYuOSA2LjkgOC45IDE3LjIgNS4yIDI2LjJTMTc3LjcgNTEyIDE2OCA1MTJ6Il19LEVadD1PdmUsUFp0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InVzZXItdGFnIixpY29uOls2NDAsNTEyLFtdLCJmNTA3IiwiTTI1Ni4xIDhhMTIwIDEyMCAwIDEgMSAwIDI0MCAxMjAgMTIwIDAgMSAxIDAtMjQwek0yMjYuNCAzMDRsNTkuNCAwYzYuNyAwIDEzLjIgLjQgMTkuNyAxLjEtLjkgNC45LTEuNCA5LjktMS40IDE1bDAgOTIuMWMwIDI1LjUgMTAuMSA0OS45IDI4LjEgNjcuOWwzMS45IDMxLjktMjg2LjMgMGMtMTYuNCAwLTI5LjctMTMuMy0yOS43LTI5LjcgMC05OC41IDc5LjgtMTc4LjMgMTc4LjMtMTc4LjN6TTM1Mi4xIDQxMi4ybDAtOTIuMWMwLTE3LjcgMTQuMy0zMiAzMi0zMmw5Mi4xIDBjMTIuNyAwIDI0LjkgNS4xIDMzLjkgMTQuMWw5NiA5NmMxOC43IDE4LjcgMTguNyA0OS4xIDAgNjcuOWwtNzYuMSA3Ni4xYy0xOC43IDE4LjctNDkuMSAxOC43LTY3LjkgMGwtOTYtOTZjLTktOS0xNC4xLTIxLjItMTQuMS0zMy45em0xMDQtNDQuMmEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAweiJdfSxJWnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaGFuZC1zcGFya2xlcyIsaWNvbjpbNjQwLDUxMixbXSwiZTA1ZCIsIk0zMjAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDIwOGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtMTc2YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCAxNzZjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmwwLTExMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgMTc4LjJjLTE5LjIgNS40LTM0LjcgMjAuNC00MC40IDQwLjNsLTYuNSAyMi43LTIyLjcgNi41Yy0yNS4yIDcuMi00Mi41IDMwLjItNDIuNSA1Ni40IDAgMjIuMSAxMi40IDQyIDMxLjQgNTEuOS0yNy41IDE3LjgtNjAuMiAyOC4xLTk1LjQgMjguMWwtMTkuMiAwYy01OS42IDAtMTE2LjktMjIuOS0xNjAtNjRMNzYuNCAzNDFjLTE2LTE1LjItMTYuNi00MC42LTEuNC01Ni42czQwLjYtMTYuNiA1Ni42LTEuNGw2MC41IDU3LjZjMC0xLjUtLjEtMy4xLS4xLTQuNmwwLTI3MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgMTc2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZsMC0yMDhjMC0xNy43IDE0LjMtMzIgMzItMzJ6bS03LjMgMzI2LjZjLTEuMS0zLjktNC43LTYuNi04LjctNi42cy03LjYgMi43LTguNyA2LjZsLTcuMyAyNS40LTI1LjQgNy4zYy0zLjkgMS4xLTYuNiA0LjctNi42IDguN3MyLjcgNy42IDYuNiA4LjdsMjUuNCA3LjMgNy4zIDI1LjRjMS4xIDMuOSA0LjcgNi42IDguNyA2LjZzNy42LTIuNyA4LjctNi42bDcuMy0yNS40IDI1LjQtNy4zYzMuOS0xLjEgNi42LTQuNyA2LjYtOC43cy0yLjctNy42LTYuNi04LjdsLTI1LjQtNy4zLTcuMy0yNS40ek0xMDQgMTIwbDQ4LjMgMTMuOGM0LjYgMS4zIDcuNyA1LjUgNy43IDEwLjJzLTMuMSA4LjktNy43IDEwLjJMMTA0IDE2OCA5MC4yIDIxNi4zYy0xLjMgNC42LTUuNSA3LjctMTAuMiA3LjdzLTguOS0zLjEtMTAuMi03LjdMNTYgMTY4IDcuNyAxNTQuMkMzLjEgMTUyLjkgMCAxNDguNyAwIDE0NHMzLjEtOC45IDcuNy0xMC4yTDU2IDEyMCA2OS44IDcxLjdDNzEuMSA2Ny4xIDc1LjMgNjQgODAgNjRzOC45IDMuMSAxMC4yIDcuN0wxMDQgMTIwek01ODQgNDA4bDQ4LjMgMTMuOGM0LjYgMS4zIDcuNyA1LjUgNy43IDEwLjJzLTMuMSA4LjktNy43IDEwLjJMNTg0IDQ1NiA1NzAuMiA1MDQuM2MtMS4zIDQuNi01LjUgNy43LTEwLjIgNy43cy04LjktMy4xLTEwLjItNy43TDUzNiA0NTYgNDg3LjcgNDQyLjJjLTQuNi0xLjMtNy43LTUuNS03LjctMTAuMnMzLjEtOC45IDcuNy0xMC4yTDUzNiA0MDggNTQ5LjggMzU5LjdjMS4zLTQuNiA1LjUtNy43IDEwLjItNy43czguOSAzLjEgMTAuMiA3LjdMNTg0IDQwOHoiXX0sQVp0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImFycm93cy10by1kb3QiLGljb246WzUxMiw1MTIsW10sImU0YmUiLCJNMjU2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMiAzMiAwYzEyLjkgMCAyNC42IDcuOCAyOS42IDE5LjhzMi4yIDI1LjctNi45IDM0LjlsLTY0IDY0Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtNjQtNjRjLTkuMi05LjItMTEuOS0yMi45LTYuOS0zNC45UzE3OS4xIDY0IDE5MiA2NGwzMiAwIDAtMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTE2OS40IDM5My40bDY0LTY0YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwbDY0IDY0YzkuMiA5LjIgMTEuOSAyMi45IDYuOSAzNC45UzMzMi45IDQ0OCAzMjAgNDQ4bC0zMiAwIDAgMzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0zMi0zMiAwYy0xMi45IDAtMjQuNi03LjgtMjkuNi0xOS44cy0yLjItMjUuNyA2LjktMzQuOXpNMzIgMjI0bDMyIDAgMC0zMmMwLTEyLjkgNy44LTI0LjYgMTkuOC0yOS42czI1LjctMi4yIDM0LjkgNi45bDY0IDY0YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC02NCA2NGMtOS4yIDkuMi0yMi45IDExLjktMzQuOSA2LjlTNjQgMzMyLjkgNjQgMzIwbDAtMzItMzIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMjk3LjQgNTQuNmMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNsNjQtNjRjOS4yLTkuMiAyMi45LTExLjkgMzQuOS02LjlTNDQ4IDE3OS4xIDQ0OCAxOTJsMCAzMiAzMiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0zMiAwIDAgMzJjMCAxMi45LTcuOCAyNC42LTE5LjggMjkuNnMtMjUuNyAyLjItMzQuOS02LjlsLTY0LTY0ek0yNTYgMjI0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHoiXX0sRnZlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZhY2Utc2FkLWNyeSIsaWNvbjpbNTEyLDUxMixbMTI4NTU3LCJzYWQtY3J5Il0sImY1YjMiLCJNMzUyIDQ5My40Yy0yOS42IDEyLTYyLjEgMTguNi05NiAxOC42cy02Ni40LTYuNi05Ni0xOC42TDE2MCAyOTZjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCAxNzEuN0M0NC40IDQyMS42IDAgMzQ0IDAgMjU2IDAgMTE0LjYgMTE0LjYgMCAyNTYgMFM1MTIgMTE0LjYgNTEyIDI1NmMwIDg4LTQ0LjQgMTY1LjYtMTEyIDIxMS43TDQwMCAyOTZjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCAxOTcuNHpNMTUyIDE5NmwxNiAwYzExIDAgMjAgOSAyMCAyMHM5IDIwIDIwIDIwIDIwLTkgMjAtMjBjMC0zMy4xLTI2LjktNjAtNjAtNjBsLTE2IDBjLTMzLjEgMC02MCAyNi45LTYwIDYwIDAgMTEgOSAyMCAyMCAyMHMyMC05IDIwLTIwIDktMjAgMjAtMjB6bTE3MiAyMGMwLTExIDktMjAgMjAtMjBsMTYgMGMxMSAwIDIwIDkgMjAgMjBzOSAyMCAyMCAyMCAyMC05IDIwLTIwYzAtMzMuMS0yNi45LTYwLTYwLTYwbC0xNiAwYy0zMy4xIDAtNjAgMjYuOS02MCA2MCAwIDExIDkgMjAgMjAgMjBzMjAtOSAyMC0yMHpNMjA4IDMzNmwwIDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4czQ4LTIxLjUgNDgtNDhsMC0zMmMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OHoiXX0sTlp0PUZ2ZSxSWnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZG9uZy1zaWduIixpY29uOlszODQsNTEyLFtdLCJlMTY5IiwiTTI4OC0xNmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAzMi0xMDQgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwxMDQgMCAwIDcyLjJjLTIyLjktMTUuMy01MC40LTI0LjItODAtMjQuMi03OS41IDAtMTQ0IDY0LjUtMTQ0IDE0NFM5Ni41IDQzMiAxNzYgNDMyYzMwIDAgNTcuOC05LjEgODAuOC0yNC44IDMuMyAxNC4yIDE2IDI0LjggMzEuMiAyNC44IDE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMzA0IDQwIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTQwIDAgMC0zMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNOTYgMjg4YTgwIDgwIDAgMSAxIDE2MCAwIDgwIDgwIDAgMSAxIC0xNjAgMHpNMjQgNDY0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDMzNiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0TDI0IDQ2NHoiXX0sT1p0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBlb3BsZS1saW5lIixpY29uOls1NzYsNTEyLFtdLCJlNTM0IiwiTTI4OCAwYTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4em05NiAzMTJjMCAyNS0xMi43IDQ3LTMyIDU5LjlsMCA0NC4xLTEyOCAwIDAtNDQuMUMyMDQuNyAzNTkgMTkyIDMzNyAxOTIgMzEybDAtNDBjMC01MyA0My05NiA5Ni05NnM5NiA0MyA5NiA5NmwwIDQwem0xNiAxMDRsMC0yNy4zYzE5LjktMjIuNSAzMi01Mi4yIDMyLTg0LjdsMC0zMmMwLTI2LjctNy4zLTUxLjYtMTkuOS03My4xIDExLjEtNC41IDIzLjItNi45IDM1LjktNi45IDUzIDAgOTYgNDMgOTYgOTZsMCAzMmMwIDIzLjctMTIuOSA0NC40LTMyIDU1LjRsMCA0MC42LTExMiAwek02NCAzNzUuNEM0NC45IDM2NC40IDMyIDM0My43IDMyIDMyMGwwLTMyYzAtNTMgNDMtOTYgOTYtOTYgMTIuNyAwIDI0LjggMi41IDM1LjkgNi45LTEyLjYgMjEuNC0xOS45IDQ2LjQtMTkuOSA3My4xbDAgMzJjMCAzMi41IDEyLjEgNjIuMSAzMiA4NC43bDAgMjcuMy0xMTIgMCAwLTQwLjZ6TTEyOCAzMmE1NiA1NiAwIDEgMSAwIDExMiA1NiA1NiAwIDEgMSAwLTExMnptMzIwIDBhNTYgNTYgMCAxIDEgMCAxMTIgNTYgNTYgMCAxIDEgMC0xMTJ6TTI0IDQ2NGw1MjggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEwyNCA1MTJjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6Il19LEJ2ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzcXVhcmUtcnNzIixpY29uOls0NDgsNTEyLFsicnNzLXNxdWFyZSJdLCJmMTQzIiwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6TTk2IDEzNmMwLTEzLjMgMTAuNy0yNCAyNC0yNCAxMzcgMCAyNDggMTExIDI0OCAyNDggMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRjMC0xMTAuNS04OS41LTIwMC0yMDAtMjAwLTEzLjMgMC0yNC0xMC43LTI0LTI0em0wIDk2YzAtMTMuMyAxMC43LTI0IDI0LTI0IDgzLjkgMCAxNTIgNjguMSAxNTIgMTUyIDAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0YzAtNTcuNC00Ni42LTEwNC0xMDQtMTA0LTEzLjMgMC0yNC0xMC43LTI0LTI0em0wIDEyMGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAweiJdfSxGWnQ9QnZlLEJadD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjYWxlbmRhci1taW51cyIsaWNvbjpbNDQ4LDUxMixbXSwiZjI3MiIsIk0xMjggMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDMyIDEyOCAwIDAtMzJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDMyIDMyIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAyODhjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NGwzMiAwIDAtMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTI0IDI2NGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwxNDQgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtMTQ0IDB6Il19LEhadD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjaGFydC1kaWFncmFtIixpY29uOls1MTIsNTEyLFtdLCJlNjk1IiwiTTgwIDMyQzUzLjUgMzIgMzIgNTMuNSAzMiA4MHMyMS41IDQ4IDQ4IDQ4bDE1MiAwIDAgNDAtNDggNDgtNzIgMGMtMzkuOCAwLTcyIDMyLjItNzIgNzJsMCA2NC04IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgNjRjMCAxNy43IDE0LjMgMzIgMzIgMzJsNjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTY0YzAtMTcuNy0xNC4zLTMyLTMyLTMybC04IDAgMC02NGMwLTEzLjMgMTAuNy0yNCAyNC0yNGw3MiAwIDQ4IDQ4IDAgNDAtOCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDY0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC02NGMwLTE3LjctMTQuMy0zMi0zMi0zMmwtOCAwIDAtNDAgNDgtNDggNzIgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDY0LTggMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCA2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmw2NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtNjRjMC0xNy43LTE0LjMtMzItMzItMzJsLTggMCAwLTY0YzAtMzkuOC0zMi4yLTcyLTcyLTcybC03MiAwLTQ4LTQ4IDAtNDAgMTUyIDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhzLTIxLjUtNDgtNDgtNDhMODAgMzJ6Il19LEh2ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmYWNlLXRpcmVkIixpY29uOls1MTIsNTEyLFsxMjg1NTUsInRpcmVkIl0sImY1YzgiLCJNMjU2IDUxMmEyNTYgMjU2IDAgMSAwIDAtNTEyIDI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE2NC43IDMyOC43YzIyLTIyIDUzLjktNDAuNyA5MS4zLTQwLjdzNjkuMyAxOC43IDkxLjMgNDAuN2MxMS4xIDExLjEgMjAuMSAyMy40IDI2LjQgMzUuNCA2LjIgMTEuNyAxMC4zIDI0LjQgMTAuMyAzNS45IDAgNS4yLTIuNiAxMC4yLTYuOSAxMy4ycy05LjggMy43LTE0LjcgMS44bC0yMC41LTcuN2MtMjYuOS0xMC4xLTU1LjUtMTUuMy04NC4zLTE1LjNsLTMuMiAwYy0yOC44IDAtNTcuMyA1LjItODQuMyAxNS4zTDE0OS42IDQxNWMtNC45IDEuOC0xMC40IDEuMi0xNC43LTEuOFMxMjggNDA1LjIgMTI4IDQwMGMwLTExLjYgNC4yLTI0LjIgMTAuMy0zNS45IDYuMy0xMiAxNS4zLTI0LjMgMjYuNC0zNS40ek0xMjIuNiAxNTkuMmM0LjUtNi44IDEzLjMtOS4yIDIwLjYtNS41bDc5LjYgNDBjNS40IDIuNyA4LjggOC4yIDguOCAxNC4zcy0zLjQgMTEuNi04LjggMTQuM2wtNzkuNiA0MGMtNy4zIDMuNi0xNi4xIDEuMy0yMC42LTUuNXMtMy4xLTE1LjkgMy4xLTIxLjFMMTU5IDIwOCAxMjUuOCAxODAuM2MtNi4yLTUuMi03LjYtMTQuMy0zLjEtMjEuMXptMjYzLjYgMjEuMUwzNTMgMjA4IDM4Ni4yIDIzNS43YzYuMiA1LjIgNy42IDE0LjMgMy4xIDIxLjFzLTEzLjMgOS4yLTIwLjYgNS41bC03OS42LTQwYy01LjQtMi43LTguOC04LjItOC44LTE0LjNzMy40LTExLjYgOC44LTE0LjNsNzkuNi00MGM3LjMtMy42IDE2LjEtMS4zIDIwLjYgNS41czMuMSAxNS45LTMuMSAyMS4xeiJdfSxxWnQ9SHZlLGpadD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoYW5kLXBvaW50LXJpZ2h0IixpY29uOls1MTIsNTEyLFtdLCJmMGE0IiwiTTQ4MCA5NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMjA4IDAgMC02NCAyMDggMHpNMzIwIDI4OGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtNjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw2NCAwem02NC02NGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtNDggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw0OCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyek0yODggMzg0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC02NCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDY0IDB6bS04OC05NmwuNiAwYy01LjQgOS40LTguNiAyMC4zLTguNiAzMiAwIDEzLjIgNCAyNS40IDEwLjggMzUuNi0yNC45IDguNy00Mi44IDMyLjUtNDIuOCA2MC40IDAgMTEuNyAzLjEgMjIuNiA4LjYgMzJsLTguNiAwQzcxLjYgNDQ4IDAgMzc2LjQgMCAyODhsMC02MS43YzAtNDIuNCAxNi45LTgzLjEgNDYuOS0xMTMuMWwxMS42LTExLjZDODIuNSA3Ny41IDExNS4xIDY0IDE0OSA2NGwyNyAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgODhjMCAyMi4xLTE3LjkgNDAtNDAgNDBzLTQwLTE3LjktNDAtNDBsMC01NmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNmwwIDU2YzAgMzkuOCAzMi4yIDcyIDcyIDcyeiJdfSxWWnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYXJyb3ctdXAiLGljb246WzM4NCw1MTIsWzg1OTNdLCJmMDYyIiwiTTIxNC42IDkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTE2MCAxNjBjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMTYwIDEwOS4zIDE2MCA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTM3MC43IDEwNS40IDEwNS40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTE2MC0xNjB6Il19LFVadD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjdWJlcy1zdGFja2VkIixpY29uOls1MTIsNTEyLFtdLCJlNGU2IiwiTTE5MiAzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMmw2NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgNjRjMCAxNy43LTE0LjMgMzItMzIgMzJsLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtNjR6bTMyIDM1Mmw2NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgNjRjMCAxNy43LTE0LjMgMzItMzIgMzJsLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtNjRjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTE5MiAwbDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtNjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMzIwIDE5Mmw2NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgNjRjMCAxNy43LTE0LjMgMzItMzIgMzJsLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtNjRjMC0xNy43IDE0LjMtMzIgMzItMzJ6bS0xODIuNi0zLjljMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsNDUuMyA0NS4zYzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC00NS4zIDQ1LjNjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwTDkyLjEgMjc4LjZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zbDQ1LjMtNDUuM3pNMzIgMzg0bDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtNjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnoiXX0scXZlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNoaWxkLWNvbWJhdGFudCIsaWNvbjpbNTc2LDUxMixbImNoaWxkLXJpZmxlIl0sImU0ZTAiLCJNMTc2LjUgMTI4YTY0IDY0IDAgMSAwIDAtMTI4IDY0IDY0IDAgMSAwIDAgMTI4em0tMTYgMzUybDAtOTYgMzIgMCAwIDk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xOTIuMiAyMC45IDMzLjJjOS40IDE1IDI5LjIgMTkuNCA0NC4xIDEwczE5LjQtMjkuMiAxMC00NC4xbC0zOS45LTYzLjNDMjY2LjggMTg0IDIyMy4zIDE2MCAxNzYuNSAxNjBTODYuMiAxODQgNjEuMyAyMjMuNkwyMS40IDI4N2MtOS40IDE1LTQuOSAzNC43IDEwIDQ0LjFzMzQuNyA0LjkgNDQuMS0xMGwyMC45LTMzLjIgMCAxOTIuMmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyek00NDguNSAwbC0zMiAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDAgMTAwLjNjLTkuNiA1LjUtMTYgMTUuOS0xNiAyNy43bDAgMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgMTQ0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDE2IDAgMCA5NmMwIDguOCA3LjIgMTYgMTYgMTZsNTkuNSAwYzEwLjQgMCAxOC05LjggMTUuNS0xOS45bC0yMy05Mi4xIDQ0IDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMTZjMC04LjgtNy4yLTE2LTE2LTE2bC00OCAwIDAtMjYuNyA1My4xLTE3LjdjNi41LTIuMiAxMC45LTguMyAxMC45LTE1LjJsMC04NC41YzAtOC44LTcuMi0xNi0xNi0xNmwtMTYgMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgNTYtMTYgNS4zIDAtMTA5LjNjMC0xMS44LTYuNC0yMi4yLTE2LTI3LjdsMC0xMTYuM2MwLTguOC03LjItMTYtMTYtMTZ6Il19LFdadD1xdmUsR1p0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InZlc3QtcGF0Y2hlcyIsaWNvbjpbNDQ4LDUxMixbXSwiZTA4NiIsIk0yMDAgMjkzLjlMMjAwIDQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEw0OCA1MTJjLTI2LjUgMC00OC0yMS41LTQ4LTQ4TDAgMjcwLjVjMC05LjUgMi44LTE4LjcgOC4xLTI2LjZsNDcuOS03MS44YzUuMy03LjkgOC4xLTE3LjEgOC4xLTI2LjZMNjQgNDhDNjQgMjEuNSA4NS41IDAgMTEyIDBsMy41IDBjLjMgMCAuNiAwIDEgMCAuNiAwIDEuMiAwIDEuOCAwIDE4LjggMCAzNC4xIDkuNyA0NC4xIDE4LjggOS4zIDguNCAyOC41IDIxLjIgNjEuNyAyMS4yczUyLjQtMTIuOCA2MS43LTIxLjJjMTAtOS4xIDI1LjMtMTguOCA0NC4xLTE4LjggLjYgMCAxLjIgMCAxLjggMCAuMyAwIC42IDAgMSAwTDMzNiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgOTcuNWMwIDkuNSAyLjggMTguNyA4LjEgMjYuNmw0Ny45IDcxLjhjNS4zIDcuOSA4LjEgMTcuMSA4LjEgMjYuNkw0NDggNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC0xMDQgMGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhsMC0xNzAuMWMwLTMuOSAuNS03LjggMS40LTExLjZMMzAzLjYgNjUuNEMyODUuOSA3Ny4yIDI1OS44IDg4IDIyNCA4OHMtNjEuOS0xMC44LTc5LjYtMjIuNmw1NC4yIDIxNi44YzEgMy44IDEuNCA3LjcgMS40IDExLjZ6TTk2IDQ1NmE0MCA0MCAwIDEgMCAwLTgwIDQwIDQwIDAgMSAwIDAgODB6TTYzLjUgMjU1LjVjLTQuNyA0LjctNC43IDEyLjMgMCAxN0w3OSAyODggNjMuNSAzMDMuNWMtNC43IDQuNy00LjcgMTIuMyAwIDE3czEyLjMgNC43IDE3IDBMOTYgMzA1IDExMS41IDMyMC41YzQuNyA0LjcgMTIuMyA0LjcgMTcgMHM0LjctMTIuMyAwLTE3TDExMyAyODggMTI4LjUgMjcyLjVjNC43LTQuNyA0LjctMTIuMyAwLTE3cy0xMi4zLTQuNy0xNyAwTDk2IDI3MSA4MC41IDI1NS41Yy00LjctNC43LTEyLjMtNC43LTE3IDB6TTMwNCAyODBsMCA0MGMwIDguOCA3LjIgMTYgMTYgMTZsNDAgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtOCAwIDAtOGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHoiXX0sanZlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im1hcnRpbmktZ2xhc3MtZW1wdHkiLGljb246WzUxMiw1MTIsWyJnbGFzcy1tYXJ0aW5pIl0sImYwMDAiLCJNMzIgMzJDMTkuMSAzMiA3LjQgMzkuOCAyLjQgNTEuOFMuMiA3Ny41IDkuNCA4Ni42bDIxNC42IDIxNC42IDAgMTQ2LjctNjQgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwxOTIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtNjQgMCAwLTE0Ni43IDIxNC42LTIxNC42YzkuMi05LjIgMTEuOS0yMi45IDYuOS0zNC45UzQ5Mi45IDMyIDQ4MCAzMkwzMiAzMnpNMjU2IDI0Mi43TDEwOS4zIDk2IDQwMi43IDk2IDI1NiAyNDIuN3oiXX0sS1p0PWp2ZSxZWnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibWFnbmV0IixpY29uOls0NDgsNTEyLFsxMjk1MjJdLCJmMDc2IiwiTTAgMTc2TDAgMjg4QzAgNDExLjcgMTAwLjMgNTEyIDIyNCA1MTJTNDQ4IDQxMS43IDQ0OCAyODhsMC0xMTItMTI4IDAgMCAxMTJjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZsMC0xMTItMTI4IDB6bTAtNDhsMTI4IDAgMC02NGMwLTE3LjctMTQuMy0zMi0zMi0zMkwzMiAzMkMxNC4zIDMyIDAgNDYuMyAwIDY0bDAgNjR6bTMyMCAwbDEyOCAwIDAtNjRjMC0xNy43LTE0LjMtMzItMzItMzJsLTY0IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgNjR6Il19LFpadD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJyb2FkLWJhcnJpZXIiLGljb246WzY0MCw1MTIsW10sImU1NjIiLCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NEwwIDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyTDY0IDI2Ni4zIDE0OS4yIDk2IDY0IDk2IDY0IDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyek00MDUuMiA5NmwtNzQuMyAwLTUuNCAxMC43LTkwLjYgMTgxLjMgNzQuMyAwIDUuNC0xMC43IDkwLjYtMTgxLjN6TTM2Mi44IDI4OGw3NC4zIDAgNS40LTEwLjcgOTAuNi0xODEuMy03NC4zIDAtNS40IDEwLjctOTAuNiAxODEuM3pNMjAyLjggOTZsLTUuNCAxMC43LTkwLjYgMTgxLjMgNzQuMyAwIDUuNC0xMC43IDkwLjYtMTgxLjMtNzQuMyAwem0yODggMTkybDg1LjIgMCAwIDE2MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMzg0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgNTMuNy04NS4yIDE3MC4zeiJdfSxWdmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY29tcGFzcy1kcmFmdGluZyIsaWNvbjpbNTEyLDUxMixbImRyYWZ0aW5nLWNvbXBhc3MiXSwiZjU2OCIsIk05OS4zIDI1Ni4xbDY5LjQtMTE5LjljLTUuNi0xMi4yLTguOC0yNS44LTguOC00MC4yIDAtNTMgNDMtOTYgOTYtOTZzOTYgNDMgOTYgOTZjMCAxNC4zLTMuMSAyNy45LTguOCA0MC4ybDQ0LjQgNzYuN2MtMjMuMSAyNi01My43IDQ1LjEtODguNCA1My44TDI1NiAxOTEuOSAxODcuOSAzMDkuNWMyMS41IDYuOCA0NC4zIDEwLjUgNjguMSAxMC41IDcwLjcgMCAxMzMuOC0zMi43IDE3NC45LTg0IDExLjEtMTMuOCAzMS4yLTE2IDQ1LTVzMTYgMzEuMiA1IDQ1Yy01Mi43IDY1LjgtMTMzLjkgMTA4LTIyNC44IDEwOC0zNS40IDAtNjkuNC02LjQtMTAwLjctMTguMUw5OC43IDQ2My43Qzk0IDQ3MS44IDg3IDQ3OC40IDc4LjYgNDgyLjZMMjMuMiA1MTAuM2MtNSAyLjUtMTAuOSAyLjItMTUuNi0uN1MwIDUwMS41IDAgNDk2bDAtNTUuNGMwLTguNCAyLjItMTYuNyA2LjUtMjQuMWw2MC0xMDMuN2MtMTIuOC0xMS4yLTI0LjYtMjMuNS0zNS4zLTM2LjgtMTEuMS0xMy44LTguOC0zMy45IDUtNDVzMzMuOS04LjggNDUgNWM1LjcgNy4xIDExLjggMTMuOCAxOC4yIDIwLjF6TTM4MS4xIDQwNy45YzMyLjUtMTMgNjIuNC0zMSA4OC45LTUyLjlsMzUuNiA2MS41YzQuMiA3LjMgNi41IDE1LjYgNi41IDI0LjFsMCA1NS40YzAgNS41LTIuOSAxMC43LTcuNiAxMy42cy0xMC42IDMuMi0xNS42IC43bC01NS40LTI3LjdjLTguNC00LjItMTUuNC0xMC44LTIwLjEtMTguOWwtMzIuMy01NS44ek0yNTYgMTI4YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHoiXX0sWFp0PVZ2ZSxRWnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic3F1YXJlLXBlcnNvbi1jb25maW5lZCIsaWNvbjpbNDQ4LDUxMixbXSwiZTU3NyIsIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyem05NiAxMTJhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptODAgMTA0YzAtMzAuOSAyNS4xLTU2IDU2LTU2czU2IDI1LjEgNTYgNTZsMCAxMDIuMWMwIDM2LjQtMjkuNSA2NS45LTY1LjkgNjUuOS0xNy41IDAtMzQuMy02LjktNDYuNi0xOS4zbC01NC43LTU0LjctMjguMSA1Ni4zYy03LjkgMTUuOC0yNy4xIDIyLjItNDIuOSAxNC4zcy0yMi4yLTI3LjEtMTQuMy00Mi45bDQ4LTk2YzQuNi05LjIgMTMuMy0xNS42IDIzLjUtMTcuM3MyMC41IDEuNyAyNy44IDlsNDEuNCA0MS40IDAtNTguN3oiXX0sSlp0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBsYXRlLXdoZWF0IixpY29uOls1MTIsNTEyLFtdLCJlNTVhIiwiTTE3NiAzMmM0NC4yIDAgODAgMzUuOCA4MCA4MGwwIDE2YzAgOC44LTcuMiAxNi0xNiAxNi00NC4yIDAtODAtMzUuOC04MC04MGwwLTE2YzAtOC44IDcuMi0xNiAxNi0xNnpNNTYgNjRsNDggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtNDggMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRTNDIuNyA2NCA1NiA2NHpNMjQgMTM2bDExMiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0TDI0IDE4NGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHptOCA5NmMwLTEzLjMgMTAuNy0yNCAyNC0yNGw0OCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC00OCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHpNMjcyIDQ4YzAtOC44IDcuMi0xNiAxNi0xNiA0NC4yIDAgODAgMzUuOCA4MCA4MGwwIDE2YzAgOC44LTcuMiAxNi0xNiAxNi00NC4yIDAtODAtMzUuOC04MC04MGwwLTE2ek00MDAgMzJjNDQuMiAwIDgwIDM1LjggODAgODBsMCAxNmMwIDguOC03LjIgMTYtMTYgMTYtNDQuMiAwLTgwLTM1LjgtODAtODBsMC0xNmMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2MGwwIDE2YzAgNDQuMi0zNS44IDgwLTgwIDgwLTguOCAwLTE2LTcuMi0xNi0xNmwwLTE2YzAtNDQuMiAzNS44LTgwIDgwLTgwIDguOCAwIDE2IDcuMiAxNiAxNnpNMzUyIDE3NmM4LjggMCAxNiA3LjIgMTYgMTZsMCAxNmMwIDQ0LjItMzUuOCA4MC04MCA4MC04LjggMC0xNi03LjItMTYtMTZsMC0xNmMwLTQ0LjIgMzUuOC04MCA4MC04MHptLTk2IDE2bDAgMTZjMCA0NC4yLTM1LjggODAtODAgODAtOC44IDAtMTYtNy4yLTE2LTE2bDAtMTZjMC00NC4yIDM1LjgtODAgODAtODAgOC44IDAgMTYgNy4yIDE2IDE2ek0zLjUgMzQ3LjZDMS42IDMzMi45IDEzIDMyMCAyNy44IDMyMGw0NTYuNCAwYzE0LjggMCAyNi4yIDEyLjkgMjQuNCAyNy42LTYuMyA1MC4yLTQ0LjQgODkuNC05Mi42IDk4LjRsMCAyYzAgMTcuNy0xNC4zIDMyLTMyIDMybC0yNTYgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0yYy00OC4yLTktODYuMy00OC4yLTkyLjUtOTguNHoiXX0sVXZlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNpZ24taGFuZ2luZyIsaWNvbjpbNTEyLDUxMixbInNpZ24iXSwiZjRkOSIsIk05NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMzIgMzUyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTM1MiAwIDAgMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMzUyLTMyIDBDMTQuMyAxMjggMCAxMTMuNyAwIDk2UzE0LjMgNjQgMzIgNjRsMzIgMCAwLTMyQzY0IDE0LjMgNzguMyAwIDk2IDB6TTIwOCAxNzZsMjQwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAxNDRjMCAxNy43LTE0LjMgMzItMzIgMzJsLTI0MCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTE0NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnoiXX0sZVh0PVV2ZSxXdmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2FyLWJhdHRlcnkiLGljb246WzUxMiw1MTIsWyJiYXR0ZXJ5LWNhciJdLCJmNWRmIiwiTTgwIDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMybDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsOTYgMGMwLTE3LjcgMTQuMy0zMiAzMi0zMmw2NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDE2IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAyNTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDQ4Yy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NGwxNiAwek0zOTIgMTg0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0bDAgMzItMzIgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwzMiAwIDAgMzJjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTMyIDMyIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTMyIDAgMC0zMnpNNjQgMjQwYzAgMTMuMyAxMC43IDI0IDI0IDI0bDExMiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0TDg4IDIxNmMtMTMuMyAwLTI0IDEwLjctMjQgMjR6Il19LHRYdD1XdmUsa29lPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNoaXJ0IixpY29uOls2NDAsNTEyLFsxMjgwODUsInQtc2hpcnQiLCJ0c2hpcnQiXSwiZjU1MyIsIk0zMjAuMiAxMTJjNDQuMiAwIDgwLTM1LjggODAtODBsNTMuNSAwYzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43TDYxNy42IDE2OS40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC01MC43IDUwLjdjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwbC00MS40LTQxLjQgMCAyMjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRsLTE5MiAwYy0zNS4zIDAtNjQtMjguNy02NC02NGwwLTIyNC00MS40IDQxLjRjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwTDIyLjkgMjE0LjZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zTDE0MS41IDUwLjdjMTItMTIgMjguMy0xOC43IDQ1LjMtMTguN2w1My41IDBjMCA0NC4yIDM1LjggODAgODAgODB6Il19LGFYdD1rb2Usc1h0PWtvZSxpWHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGFyYWdyYXBoIixpY29uOls0NDgsNTEyLFsxODJdLCJmMWRkIiwiTTE2MCAwTDQxNiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0zMiAwIDAgNDE2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtNDE2LTQ4IDAgMCA0MTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0xNjAtNDggMEM3MS42IDMyMCAwIDI0OC40IDAgMTYwUzcxLjYgMCAxNjAgMHoiXX0sR3ZlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImVudmVsb3Blcy1idWxrIixpY29uOls1NzYsNTEyLFsibWFpbC1idWxrIl0sImY2NzQiLCJNMTEyIDBDODUuNSAwIDY0IDIxLjUgNjQgNDhsMCAxNjAgODAgMCAwLTMyYzAtNTMgNDMtOTYgOTYtOTZsMjA4IDAgMC0zMmMwLTI2LjUtMjEuNS00OC00OC00OEwxMTIgMHpNMjQwIDEyOGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCAzMiA4MCAwYzUzIDAgOTYgNDMgOTYgOTZsMCAxMTIgMTYwIDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC0xOTJjMC0yNi41LTIxLjUtNDgtNDgtNDhsLTI4OCAwem0yMDAgNjRsNDggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDQ4YzAgMTMuMy0xMC43IDI0LTI0IDI0bC00OCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNGwwLTQ4YzAtMTMuMyAxMC43LTI0IDI0LTI0ek00OCAyNTZjLTI2LjUgMC00OCAyMS41LTQ4IDQ4bDAgMTAuNCAxNTYuNiA4Ni4yYzEuMSAuNiAyLjIgLjkgMy40IC45czIuNC0uMyAzLjQtLjlMMzIwIDMxNC40IDMyMCAzMDRjMC0yNi41LTIxLjUtNDgtNDgtNDhMNDggMjU2ek0zMjAgMzY5LjJMMTg2LjYgNDQyLjZjLTguMSA0LjUtMTcuMyA2LjgtMjYuNiA2LjhzLTE4LjQtMi40LTI2LjYtNi44TDAgMzY5LjIgMCA0NjRjMCAyNi41IDIxLjUgNDggNDggNDhsMjI0IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC05NC44eiJdfSxyWHQ9R3ZlLG9YdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJndWl0YXIiLGljb246WzUxMiw1MTIsW10sImY3YTYiLCJNNDY1IDdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDM4MyA1NWMtMi40IDIuNC00LjMgNS4zLTUuNSA4LjVsLTE1LjQgNDEtNzcuNSA3Ny42Yy00NS4xLTI5LjQtOTkuMy0zMC4yLTEzMSAxLjYtMTEgMTEtMTggMjQuNi0yMS40IDM5LjYtMy43IDE2LjYtMTkuMSAzMC43LTM2LjEgMzEuNi0yNS42IDEuMy00OS4zIDEwLjctNjcuMyAyOC42LTQ0LjggNDQuOC0zNi40IDEyNS44IDE4LjcgMTgwLjlTMTgzLjYgNTI4IDIyOC40IDQ4My4yYzE3LjktMTcuOSAyNy40LTQxLjcgMjguNi02Ny4zIC45LTE3IDE1LTMyLjMgMzEuNi0zNi4xIDE1LTMuNCAyOC42LTEwLjUgMzkuNi0yMS40IDMxLjgtMzEuOCAzMS04NS45IDEuNi0xMzFsNzcuNi03Ny42IDQxLTE1LjRjMy4yLTEuMiA2LjEtMy4xIDguNS01LjVsNDgtNDhjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlMNDY1IDd6TTIwOCAyNTZhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2eiJdfSxuWHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic3VpdGNhc2UiLGljb246WzUxMiw1MTIsWzEyOTUyM10sImYwZjIiLCJNMjAwIDQ4bDExMiAwYzQuNCAwIDggMy42IDggOGwwIDQwLTEyOCAwIDAtNDBjMC00LjQgMy42LTggOC04em0tNTYgOGwwIDQyNCAyMjQgMCAwLTQyNGMwLTMwLjktMjUuMS01Ni01Ni01NkwyMDAgMGMtMzAuOSAwLTU2IDI1LjEtNTYgNTZ6TTQxNiA5NmwwIDM4NCAzMiAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMjU2YzAtMzUuMy0yOC43LTY0LTY0LTY0bC0zMiAwek05NiA0ODBsMC0zODQtMzIgMEMyOC43IDk2IDAgMTI0LjcgMCAxNjBMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIgMHoiXX0sS3ZlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNpcmNsZS11cCIsaWNvbjpbNTEyLDUxMixbNjE0NjcsImFycm93LWFsdC1jaXJjbGUtdXAiXSwiZjM1YiIsIk0yNTYgNTEyYTI1NiAyNTYgMCAxIDAgMC01MTIgMjU2IDI1NiAwIDEgMCAwIDUxMnptMTEuMy0zODcuM2wxMDQgMTA0YzQuNiA0LjYgNS45IDExLjUgMy41IDE3LjRTMzY2LjUgMjU2IDM2MCAyNTZsLTU2IDAgMCA5NmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMzIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC05Ni01NiAwYy02LjUgMC0xMi4zLTMuOS0xNC44LTkuOXMtMS4xLTEyLjkgMy41LTE3LjRsMTA0LTEwNGM2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHoiXX0sbFh0PUt2ZSxjWHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZiIsaWNvbjpbMzIwLDUxMixbMTAyXSwiNDYiLCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NEwwIDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTYwIDE2MCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xNjAgMCAwLTEyOCAyMjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwzMiAzMnoiXX0sZFh0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InhtYXJrcy1saW5lcyIsaWNvbjpbNjQwLDUxMixbXSwiZTU5YSIsIk0zMiAzMkMxNC4zIDMyIDAgNDYuMyAwIDY0UzE0LjMgOTYgMzIgOTZsNTc2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMMzIgMzJ6bTAgMzg0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDU3NiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDMyIDQxNnpNNyAxNjdjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45bDU1IDU1LTU1IDU1Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNTUtNTUgNTUgNTVjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC01NS01NSA1NS01NWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwbC01NSA1NS01NS01NWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDB6TTI2NSAxNjdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsNTUgNTUtNTUgNTVjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw1NS01NSA1NSA1NWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTU1LTU1IDU1LTU1YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTU1IDU1LTU1LTU1ek00NTUgMTY3Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWw1NSA1NS01NSA1NWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDU1LTU1IDU1IDU1YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtNTUtNTUgNTUtNTVjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtNTUgNTUtNTUtNTVjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAweiJdfSxZdmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZWFydGgtb2NlYW5pYSIsaWNvbjpbNTEyLDUxMixbImdsb2JlLW9jZWFuaWEiXSwiZTQ3YiIsIk0yNTYgNTEyYTI1NiAyNTYgMCAxIDAgMC01MTIgMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTkyIDE1MC42YzAtMTIuNSAxMC4xLTIyLjYgMjIuNi0yMi42bDQxLjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMTguNyAwYy04LjUgMC0xNi42LTMuNC0yMi42LTkuNGwtMTYtMTZjLTQuMi00LjItNi42LTEwLTYuNi0xNnpNNDMyIDI1NmM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNnpNNDExLjMgMzc5LjNsLTMyIDMyYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42bDMyLTMyYzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnpNMjI0IDQzMmMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2em0tOTYtODBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTguN2MwLTguNSAzLjQtMTYuNiA5LjQtMjIuNmw0OC00OGM0LjItNC4yIDEwLTYuNiAxNi02LjZsNi42IDBjOC44IDAgMTYgNy4yIDE2IDE2czcuMiAxNiAxNiAxNiAxNi03LjIgMTYtMTYgNy4yLTE2IDE2LTE2bDYuNiAwYzYgMCAxMS44IDIuNCAxNiA2LjZsNDggNDhjNiA2IDkuNCAxNC4xIDkuNCAyMi42bDAgNTAuN2MwIDE3LjctMTQuMyAzMi0zMiAzMmwtNTAuNyAwYy04LjUgMC0xNi42LTMuNC0yMi42LTkuNGwtMTMuMy0xMy4zYy02LTYtMTQuMS05LjQtMjIuNi05LjRMMTI4IDM1MnoiXX0sdVh0PVl2ZSxwWHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY29tbWVudC1zbGFzaCIsaWNvbjpbNTc2LDUxMixbXSwiZjRiMyIsIk00MS0yNUMzMS42LTM0LjMgMTYuNC0zNC4zIDctMjVTLTIuMy0uNCA3IDlMNTM1IDUzN2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTk2LjYtOTYuNmM0NC40LTQzLjIgNzEuNi0xMDEuOCA3MS42LTE2Ni41IDAtMTMyLjUtMTE0LjYtMjQwLTI1Ni0yNDAtNjMgMC0xMjAuOCAyMS40LTE2NS40IDU2LjhMNDEtMjV6bTE5LjQgMTU1QzQyLjIgMTYzIDMyIDIwMC4zIDMyIDIzOS45IDMyIDI5NC4yIDUxLjIgMzQ0LjIgODMuNiAzODQuNEwzNC44IDQ3Ni43Yy00LjggOS0zLjMgMjAgMy42IDI3LjVTNTYuMSA1MTQgNjUuNSA1MTBsMTE4LjQtNTAuN2MzMS44IDEzLjMgNjcuMSAyMC43IDEwNC4xIDIwLjcgMzYuNCAwIDcwLjktNy4xIDEwMi4zLTE5LjlMNjAuMyAxMzAuMXoiXX0saFh0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBsYXkiLGljb246WzQ0OCw1MTIsWzk2NTRdLCJmMDRiIiwiTTkxLjIgMzYuOWMtMTIuNC02LjgtMjcuNC02LjUtMzkuNiAuN1MzMiA1Ny45IDMyIDcybDAgMzY4YzAgMTQuMSA3LjUgMjcuMiAxOS42IDM0LjRzMjcuMiA3LjUgMzkuNiAuN2wzMzYtMTg0YzEyLjgtNyAyMC44LTIwLjUgMjAuOC0zNS4xcy04LTI4LjEtMjAuOC0zNS4xbC0zMzYtMTg0eiJdfSxmWHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidmlhbC1jaXJjbGUtY2hlY2siLGljb246WzUxMiw1MTIsW10sImU1OTYiLCJNMzIgMzJDMzIgMTQuMyA0Ni4zIDAgNjQgMEwyODggMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwwIDE2MS40Yy02Ni4xIDMwLjMtMTEyIDk3LjEtMTEyIDE3NC42IDAgMzkuNyAxMiA3Ni42IDMyLjcgMTA3LjItMTAuMyAzLjEtMjEuMyA0LjgtMzIuNyA0LjgtNjEuOSAwLTExMi01MC4xLTExMi0xMTJMNjQgNjRDNDYuMyA2NCAzMiA0OS43IDMyIDMyem05NiAzMmwwIDEyOCA5NiAwIDAtMTI4LTk2IDB6bTk2IDMzNmExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0yMDEuNC02MC45Yy03LjEtNS4yLTE3LjItMy42LTIyLjQgMy41bC01MyA3Mi45LTI2LjgtMjYuOGMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNmw0MCA0MGMzLjMgMy4zIDcuOSA1IDEyLjYgNC42czguOS0yLjggMTEuNy02LjVsNjQtODhjNS4yLTcuMSAzLjYtMTcuMi0zLjUtMjIuM3oiXX0sbVh0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJyaWRnZS1jaXJjbGUtY2hlY2siLGljb246WzU3Niw1MTIsW10sImU0YzkiLCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NFMxNC4zIDk2IDMyIDk2bDggMCAwIDY0LTQwIDAgMCAxMTJjMzcuNiA5LjQgNjQgNDMuMiA2NCA4MmwwIDk0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDMyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC02NGMwLTUzIDQzLTk2IDk2LTk2IDYuNCAwIDEyLjcgLjYgMTguNyAxLjggMzQuNy00OS41IDkyLjItODEuOCAxNTcuMy04MS44IDI4LjYgMCA1NS42IDYuMiA4MCAxNy40bDAtNjUuNC00MCAwIDAtNjQgOCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDMyIDMyek00MjQgOTZsMCA2NC04MCAwIDAtNjQgODAgMHpNMjk2IDk2bDAgNjQtODAgMCAwLTY0IDgwIDB6TTg4IDk2bDgwIDAgMCA2NC04MCAwIDAtNjR6TTU3NiA0MDBhMTQ0IDE0NCAwIDEgMCAtMjg4IDAgMTQ0IDE0NCAwIDEgMCAyODggMHptLTg2LjYtNjAuOWM3LjEgNS4yIDguNyAxNS4yIDMuNSAyMi4zbC02NCA4OGMtMi44IDMuOC03IDYuMi0xMS43IDYuNXMtOS4zLTEuMy0xMi42LTQuNmwtNDAtNDBjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMGwyNi44IDI2LjggNTMtNzIuOWM1LjItNy4xIDE1LjItOC43IDIyLjQtMy41eiJdfSxnWHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2VkaS1zaWduIixpY29uOlszODQsNTEyLFtdLCJlMGRmIiwiTTIzMiAzMmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDI2LjVDODguOCA3My45IDE2IDE1Ni40IDE2IDI1NlM4OC44IDQzOC4xIDE4NCA0NTMuNWwwIDI2LjVjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTI0LjZjNDYuOC0zLjcgODkuMS0yMy42IDEyMS4zLTUzLjkgMTIuOS0xMi4xIDEzLjQtMzIuNCAxLjMtNDUuMnMtMzIuNC0xMy40LTQ1LjItMS4zYy0yMC43IDE5LjYtNDcuNiAzMi43LTc3LjMgMzYuMmwwLTI3MC4xYzI5LjggMy41IDU2LjYgMTYuNiA3Ny4zIDM2LjIgMTIuOSAxMi4xIDMzLjEgMTEuNSA0NS4yLTEuM3MxMS41LTMzLjEtMS4zLTQ1LjJDMzIxLjEgODAuMiAyNzguOCA2MC4zIDIzMiA1Ni42TDIzMiAzMnptLTQ4IDkxLjhsMCAyNjQuNEMxMjQuMyAzNzMuOCA4MCAzMjAuMSA4MCAyNTZzNDQuMy0xMTcuOCAxMDQtMTMyLjJ6Il19LGJYdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwdXp6bGUtcGllY2UiLGljb246WzUxMiw1MTIsWzEyOTUxM10sImYxMmUiLCJNMjI0IDBjMzUuMyAwIDY0IDIxLjUgNjQgNDggMCAxMC40LTQuNCAyMC0xMiAyNy45LTYuNiA2LjktMTIgMTUuMy0xMiAyNC45IDAgMTUgMTIuMiAyNy4yIDI3LjIgMjcuMmw0NC44IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCA0NC44YzAgMTUgMTIuMiAyNy4yIDI3LjIgMjcuMiA5LjUgMCAxOC01LjQgMjQuOS0xMiA3LjktNy41IDE3LjUtMTIgMjcuOS0xMiAyNi41IDAgNDggMjguNyA0OCA2NHMtMjEuNSA2NC00OCA2NGMtMTAuNCAwLTIwLjEtNC40LTI3LjktMTItNi45LTYuNi0xNS4zLTEyLTI0LjktMTItMTUgMC0yNy4yIDEyLjItMjcuMiAyNy4yTDM4NCA0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhsLTU2LjggMGMtMTIuOCAwLTIzLjItMTAuNC0yMy4yLTIzLjIgMC05LjIgNS44LTE3LjMgMTMuMi0yMi44IDExLjYtOC43IDE4LjgtMjAuNyAxOC44LTM0IDAtMjYuNS0yOC43LTQ4LTY0LTQ4cy02NCAyMS41LTY0IDQ4YzAgMTMuMyA3LjIgMjUuMyAxOC44IDM0IDcuNCA1LjUgMTMuMiAxMy41IDEzLjIgMjIuOCAwIDEyLjgtMTAuNCAyMy4yLTIzLjIgMjMuMkw0OCA1MTJjLTI2LjUgMC00OC0yMS41LTQ4LTQ4TDAgMzQzLjJjMC0xMi44IDEwLjQtMjMuMiAyMy4yLTIzLjIgOS4yIDAgMTcuMyA1LjggMjIuOCAxMy4yIDguNyAxMS42IDIwLjcgMTguOCAzNCAxOC44IDI2LjUgMCA0OC0yOC43IDQ4LTY0cy0yMS41LTY0LTQ4LTY0Yy0xMy4zIDAtMjUuMyA3LjItMzQgMTguOC01LjUgNy40LTEzLjUgMTMuMi0yMi44IDEzLjItMTIuOCAwLTIzLjItMTAuNC0yMy4yLTIzLjJMMCAxNzZjMC0yNi41IDIxLjUtNDggNDgtNDhsMTA4LjggMGMxNSAwIDI3LjItMTIuMiAyNy4yLTI3LjIgMC05LjUtNS40LTE4LTEyLTI0LjktNy41LTcuOS0xMi0xNy41LTEyLTI3LjkgMC0yNi41IDI4LjctNDggNjQtNDh6Il19LHZYdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoZWxtZXQtdW4iLGljb246WzUxMiw1MTIsW10sImU1MDMiLCJNNDc5LjUgMjI0QzQ3MS4yIDk4LjkgMzY3LjIgMCAyNDAgMCAxMDcuNSAwIDAgMTA3LjUgMCAyNDBsMCA1Ni4zQzAgMzQ0LjggMzkuMiAzODQgODcuNyAzODRsMTI3LjMgMCAxMjguNiAxMjEuNGM0LjUgNC4yIDEwLjQgNi42IDE2LjUgNi42bDk2IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTg2LjUgMC0xLjUtMS41IDAtMTc0LjUgMTEyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLS41IDB6TTMyMCA0MTcuMmwtNzgtNzMuNyAzMi40LTU1LjUgNDUuNiAwIDAgMTI5LjJ6TTI4NS4zIDEwMy4xbDM0LjcgNTIgMC00My4yYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZsMCA5NmMwIDcuMS00LjYgMTMuMy0xMS40IDE1LjNzLTE0LS42LTE3LjktNi40bC0zNC43LTUyIDAgNDMuMmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTk2YzAtNy4xIDQuNi0xMy4zIDExLjQtMTUuM3MxNCAuNiAxNy45IDYuNHpNMTYwIDExMmwwIDY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZsMC02NGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2bDAgNjRjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhsMC02NGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2eiJdfSx4WHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZ2xhc3Mtd2F0ZXIiLGljb246WzM4NCw1MTIsW10sImU0ZjQiLCJNMzIgMEMyMy4xIDAgMTQuNiAzLjcgOC42IDEwLjJTLS42IDI1LjQgLjEgMzQuM0wyOC45IDQzNy43YzMgNDEuOSAzNy44IDc0LjMgNzkuOCA3NC4zbDE2Ni42IDBjNDIgMCA3Ni44LTMyLjQgNzkuOC03NC4zTDM4My45IDM0LjNjLjYtOC45LTIuNC0xNy42LTguNS0yNC4xUzM2MC45IDAgMzUyIDBMMzIgMHpNNzMgMTU2LjVsLTYuNi05Mi41IDI1MS4zIDAtNi42IDkyLjUtMjQuMiAxMi4xYy0xOS40IDkuNy00Mi4yIDkuNy02MS42IDAtMjAuOS0xMC40LTQ1LjUtMTAuNC02Ni40IDAtMTkuNCA5LjctNDIuMiA5LjctNjEuNiAwTDczIDE1Ni41eiJdfSx5WHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaGVhcnQtY2lyY2xlLWJvbHQiLGljb246WzU3Niw1MTIsW10sImU0ZmMiLCJNMjQxIDg3LjFsMTUgMjAuNyAxNS0yMC43QzI5NiA1Mi41IDMzNi4yIDMyIDM3OC45IDMyIDQ1Mi40IDMyIDUxMiA5MS42IDUxMiAxNjUuMWwwIDIuNmMwIDE3LjYtMy40IDM1LjYtOS41IDUzLjctMjEuOC04LjYtNDUuNi0xMy40LTcwLjUtMTMuNC0xMDYgMC0xOTIgODYtMTkyIDE5MiAwIDI4LjUgNi4yIDU1LjYgMTcuNCA4MC0uNSAwLS45IDAtMS40IDAtMTUuNSAwLTMwLjgtNC42LTQzLjEtMTQuMS03My01NS43LTIxMi45LTE4Ni0yMTIuOS0yOTguMmwwLTIuNkMwIDkxLjYgNTkuNiAzMiAxMzMuMSAzMiAxNzUuOCAzMiAyMTYgNTIuNSAyNDEgODcuMXpNMjg4IDQwMGExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0xNzcuNC03N2MtNS44LTQuMi0xMy44LTQtMTkuNCAuNWwtODAgNjRjLTUuMyA0LjItNy40IDExLjQtNS4xIDE3LjhTMzY5LjIgNDE2IDM3NiA0MTZsMzIuOSAwLTE1LjkgNDIuNGMtMi41IDYuNy0uMiAxNC4zIDUuNiAxOC42czEzLjggNCAxOS40LS41bDgwLTY0YzUuMy00LjIgNy40LTExLjQgNS4xLTE3LjhTNDk0LjggMzg0IDQ4OCAzODRsLTMyLjkgMCAxNS45LTQyLjRjMi41LTYuNyAuMi0xNC4zLTUuNi0xOC42eiJdfSx3WHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicHVtcC1zb2FwIixpY29uOlszMjAsNTEyLFtdLCJlMDZiIiwiTTk2IDBsMCA4MCAxMjggMCAwLTI0IDcyIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRTMzA5LjMgOCAyOTYgOGwtNzIgMCAwLThjMC0xNy43LTE0LjMtMzItMzItMzJsLTY0IDBDMTEwLjMtMzIgOTYtMTcuNyA5NiAwek02NCAxMjhjLTM1LjMgMC02NCAyOC43LTY0IDY0TDAgNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0bDE5MiAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMjU2YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDEyOHpNMjI0IDM0NGMwIDM1LjMtMjguNyA1Ni02NCA1NnMtNjQtMjAuNy02NC01NmMwLTMyLjUgMzctODAuOSA1MC45LTk3LjkgMy4yLTMuOSA4LjEtNi4xIDEzLjEtNi4xczkuOSAyLjIgMTMuMSA2LjFDMTg3IDI2My4xIDIyNCAzMTEuNSAyMjQgMzQ0eiJdfSxrWHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaGFuZC1zY2lzc29ycyIsaWNvbjpbNTEyLDUxMixbXSwiZjI1NyIsIk00MCAyMDhjLTIyLjEgMC00MCAxNy45LTQwIDQwczE3LjkgNDAgNDAgNDBsMTgwLjIgMGMtNy42IDguNS0xMi4yIDE5LjctMTIuMiAzMiAwIDI1LjMgMTkuNSA0NiA0NC4zIDQ3LjktNy43IDguNS0xMi4zIDE5LjgtMTIuMyAzMi4xIDAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDk2IDBjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhsMC0xMTMuMWMwLTQwLjItMTYtNzguOC00NC40LTEwNy4zLTIyLjgtMjIuOC01My42LTM1LjYtODUuOC0zNS42TDMzNiA2NGMtMjEuMyAwLTM5LjMgMTMuOS00NS42IDMzLjFsNzQuNSAyMy43YzguNCAyLjcgMTMuMSAxMS43IDEwLjQgMjAuMXMtMTEuNyAxMy4xLTIwLjEgMTAuNGwtNjcuMS0yMS40IDAgLjEtMjA0LTY0LjFDNjIuOSA1OS4yIDQwLjUgNzAuOSAzMy45IDkyczUuMSA0My41IDI2LjIgNTAuMkwyNjkuNSAyMDggNDAgMjA4eiJdfSxadmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZG9sbHkiLGljb246WzU3Niw1MTIsWyJkb2xseS1ib3giXSwiZjQ3MiIsIk0zMiAwQzE0LjMgMCAwIDE0LjMgMCAzMlMxNC4zIDY0IDMyIDY0bDcyLjkgMCA5Mi4xIDI3Ni4yYy0yMi41IDE3LjYtMzcgNDUtMzcgNzUuOCAwIDUzIDQzIDk2IDk2IDk2IDUyLjQgMCA5NS4xLTQyIDk2LTk0LjNsMjAyLjEtNjcuNGMxNi44LTUuNiAyNS44LTIzLjcgMjAuMi00MC41cy0yMy43LTI1LjgtNDAuNS0yMC4yTDMzMS44IDM1N2MtMTcuMi0yMi4xLTQzLjktMzYuNS03NC0zN0wxNjUuNyA0My44QzE1Ni45IDE3LjYgMTMyLjUgMCAxMDQuOSAwTDMyIDB6TTIwOCA0MTZhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpNMjgwLjUgODkuM2MtMjUuMiA4LjItMzkgMzUuMy0zMC44IDYwLjVsMzkuNiAxMjEuN2M4LjIgMjUuMiAzNS4zIDM5IDYwLjUgMzAuOGwxMjEuNy0zOS42YzI1LjItOC4yIDM5LTM1LjMgMzAuOC02MC41TDQ2Mi44IDgwLjVjLTguMi0yNS4yLTM1LjMtMzktNjAuNS0zMC44TDI4MC41IDg5LjN6Il19LFNYdD1admUsWWI9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGFwZXJjbGlwIixpY29uOls1MTIsNTEyLFsxMjgyMDZdLCJmMGM2IiwiTTIyNC42IDEyLjhjNTYuMi01Ni4yIDE0Ny40LTU2LjIgMjAzLjYgMHM1Ni4yIDE0Ny40IDAgMjAzLjZsLTE2NCAxNjRjLTM0LjQgMzQuNC05MC4xIDM0LjQtMTI0LjUgMHMtMzQuNC05MC4xIDAtMTI0LjVMMjkyLjUgMTAzLjNjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBzMTIuNSAzMi44IDAgNDUuM0wxODUgMzAxLjNjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGwxNjQtMTY0YzMxLjItMzEuMiAzMS4yLTgxLjkgMC0xMTMuMXMtODEuOS0zMS4yLTExMy4xIDBsLTE2NCAxNjRjLTUzLjEgNTMuMS01My4xIDEzOS4yIDAgMTkyLjNzMTM5LjIgNTMuMSAxOTIuMyAwTDQyOC4zIDI4NC4zYzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNMMzQzLjQgNDU5LjZjLTc4LjEgNzguMS0yMDQuNyA3OC4xLTI4Mi44IDBzLTc4LjEtMjA0LjcgMC0yODIuOGwxNjQtMTY0eiJdfSxfWHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZGVtb2NyYXQiLGljb246WzY0MCw1MTIsW10sImY3NDciLCJNNjQgMzJjMC04LjkgMy44LTIwLjkgNi4yLTI3LjMgMS0yLjggMy44LTQuNyA2LjgtNC43IDEuOSAwIDMuOCAuNyA1LjIgMi4xTDEyOCA0NS43IDE3My44IDIuMWMxLjQtMS4zIDMuMi0yLjEgNS4yLTIuMSAzIDAgNS44IDEuOCA2LjggNC43IDIuNCA2LjUgNi4yIDE4LjQgNi4yIDI3LjMgMCAyNi41LTIxLjkgNDItMjkuNSA0Ni42bDc2LjIgNzIuNmM2IDUuNyAxMy45IDguOCAyMi4xIDguOGwyMTkuMiAwIDMyIDBjNDAuMyAwIDc4LjIgMTkgMTAyLjQgNTEuMmwxOS4yIDI1LjZjMTAuNiAxNC4xIDcuNyAzNC4yLTYuNCA0NC44cy0zNC4yIDcuNy00NC44LTYuNGwtMTkuMi0yNS42Yy01LjMtNy0xMS44LTEyLjgtMTkuMi0xN2wwIDg3LjQtMzUyIDAtNDAuNC05NC4zYy0zLjktOS4yLTE1LjMtMTIuNi0yMy42LTdsLTQyLjEgMjhjLTkuMSA2LjEtMTkuNyA5LjMtMzAuNyA5LjNsLTIgMEMyMy45IDI1NiAwIDIzMi4xIDAgMjAyLjcgMCAxOTAuNiA0LjEgMTc4LjkgMTEuNyAxNjkuNEw4Ny42IDc0LjZDNzguMSA2Ny40IDY0IDUzLjIgNjQgMzJ6TTU0NCAzNTJsMCAxMjhjMCAxNy43LTE0LjMgMzItMzIgMzJsLTMyIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtNjQtMTYwIDAgMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMzIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0xMjggMzUyIDB6TTI1NiAyODBhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em0yNDgtMjRhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHpNMzY4IDI4MGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6Il19LFh2ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzcXVhcmUtYXJyb3ctdXAtcmlnaHQiLGljb246WzQ0OCw1MTIsWyJleHRlcm5hbC1saW5rLXNxdWFyZSJdLCJmMTRjIiwiTTM4NCAzMmMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMzIwIDB6TTI3MiAyOTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTExMmMwLTEzLjMtMTAuNy0yNC0yNC0yNGwtMTEyIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsNTQuMSAwLTEwMyAxMDNjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGwxMDMtMTAzIDAgNTQuMXoiXX0sTVh0PVh2ZSx6WHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmVycnkiLGljb246WzY0MCw1MTIsW10sImU0ZWEiLCJNMjI0IDMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyTDM4NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMzIgNDggMGM0NC4yIDAgODAgMzUuOCA4MCA4MGwwIDEyOC0uMSAwYy4xIC43IC4xIDEuMyAuMSAyIDAgMzAuMi03LjYgNTkuOC0yMiA4Ni4zbC0xMi43IDIzLjMtLjYgMWMtMjIuMy0xMS4zLTQ2LjUtMTYuOC03MC44LTE2LjctMzIuNSAuMi02NC45IDEwLjctOTIuNCAzMS40LTIyLjEgMTYuNi0yOS4xIDE2LjYtNTEuMiAwLTI4LjEtMjEuMS02MS4zLTMxLjYtOTQuNC0zMS40LTIzLjYgLjItNDcuMSA1LjctNjguNyAxNi43bC0uNi0xLTEyLjctMjMuM2MtMTQuNC0yNi41LTIyLTU2LjItMjItODYuMyAwLS43IDAtMS40IC4xLTJsLS4xIDAgMC0xMjhjMC00NC4yIDM1LjgtODAgODAtODBsNDggMCAwLTMyek0xNjAgMjU2bDMyMCAwIDAtMTEyYzAtOC44LTcuMi0xNi0xNi0xNmwtMjg4IDBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDExMnpNNDAzLjQgNDc2LjFDMzc5LjEgNDk0LjMgMzUxLjEgNTEyIDMyMCA1MTJzLTU5LjEtMTcuNy04My40LTM1LjljLTIxLjMtMTYuMS00OS45LTE2LjEtNzEuMiAwLTIzLjggMTcuOS01NC4xIDM1LjUtODguMSAzNS4zLTIwLjQtLjEtNDAuNy02LjctNTkuOC0yMS4xLTEwLjYtOC0xMi43LTIzLTQuNy0zMy42czIzLTEyLjcgMzMuNi00LjdjMTEuMyA4LjUgMjEuNiAxMS40IDMxLjIgMTEuNSAxNy42IC4xIDM3LjMtOS40IDU4LjktMjUuNyAzOC40LTI5IDkwLjUtMjkgMTI5IDAgMjQgMTguMSA0MC43IDI2LjMgNTQuNSAyNi4zczMwLjUtOC4yIDU0LjUtMjYuM2MzOC40LTI5IDkwLjUtMjkgMTI5IDAgMTYuOSAxMi43IDMyLjkgMjEuNSA0Ny44IDI0LjYgMTMuNyAyLjggMjcuNCAuOSA0Mi4zLTEwLjMgMTAuNi04IDI1LjYtNS45IDMzLjYgNC43czUuOSAyNS42LTQuNyAzMy42Yy0yNi40IDE5LjktNTQuMiAyNC40LTgwLjcgMTkuMS0yNS4zLTUuMS00OC4xLTE4LjktNjcuMi0zMy4zLTIxLjMtMTYuMS00OS45LTE2LjEtNzEuMiAweiJdfSxDWHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibW9zcXVpdG8iLGljb246WzU3Niw1MTIsW10sImU1MmIiLCJNMTc4LjUgNDk1LjJjLTcuNSA5LjYtMjEgMTIuMS0zMS4zIDUuM1MxMzMuNSA0ODAgMTM4LjkgNDY5bDEuMi0yLjIgMzYuMi01OCAwLTQxIC4zLTRjLjYtMy45IDIuMi03LjcgNC42LTEwLjlsMzkuMy01Mi4yLTY2LjIgNTkuNWMtMTcgMTUuMy0zOSAyMy43LTYxLjkgMjMuOGwtOC4xIDBjLTQ2LjYgMC04NC40LTM3LjgtODQuNC04NC40IDAtNDMgMzIuNC03OS4yIDc1LjEtODMuOWwxMzAuNS0xNC41LTQ0LjgtMzguMy0yLjQtMi40Yy01LjMtNi03LjMtMTQuNC01LjMtMjIuM2wxMy4zLTUzLjQtMjUuOS0zOC45LTEuMy0yLjFjLTUuOC0xMC44LTIuNy0yNC42IDcuNC0zMS43IDEwLjEtNy4xIDIzLjctNS4xIDMxLjQgNC4zbDEuNSAyIDMyIDQ4IDEuNCAyLjJjMi44IDUuMyAzLjUgMTEuNiAyLjEgMTcuNmwtMTIuMyA0OS4yIDUzLjMgNDUuNyAwLTI4LjhjMC0xMS44IDYuNS0yMi4xIDE2LTI3LjdsMC02MC41IC4zLTMuM2MxLjUtNy4zIDgtMTIuNyAxNS43LTEyLjdzMTQuMiA1LjUgMTUuNyAxMi43bC4zIDMuMiAwIDYwLjVjOS42IDUuNSAxNiAxNS44IDE2IDI3LjdsMCAyOC45IDUzLjQtNDUuOC0xMi4zLTQ5LjJjLTEuNS01LjktLjctMTIuMiAyLjEtMTcuNmwxLjQtMi4yIDMyLTQ4IDEuNS0yYzcuNy05LjQgMjEuMy0xMS41IDMxLjQtNC4zIDEwLjEgNy4xIDEzLjEgMjAuOSA3LjQgMzEuN2wtMS4zIDIuMS0yNS45IDM4LjkgMTMuMyA1My40YzIgOC0uMSAxNi4zLTUuMyAyMi4zbC0yLjQgMi40LTQ0LjcgMzguMyAxMzAuNSAxNC41YzQyLjggNC44IDc1LjEgNDAuOSA3NS4xIDgzLjkgMCA0Ni42LTM3LjggODQuNC04NC40IDg0LjRsLTguMSAwYy0yMi44IDAtNDQuOS04LjUtNjEuOS0yMy44bC02Ni4xLTU5LjUgMzkuMiA1Mi4yYzIuNCAzLjIgNCA3IDQuNiAxMC45bC4zIDQgMCA0MSAzNi4yIDU4IDEuMiAyLjFjNS40IDExIDIgMjQuNy04LjMgMzEuNXMtMjMuOCA0LjQtMzEuMy01LjNsLTEuNC0yLTQwLTY0LTEuNi0zLjFjLTEuNC0zLjEtMi4xLTYuNi0yLjEtMTAuMWwwLTM5LjgtMzIuNC00My4xIDAgNzQuN2MwIDE3LjctMTQuMyAzMi0zMiAzMi0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTc0LjYtMzIuMyA0MyAwIDM5LjhjMCAzLjUtLjcgNi45LTIuMSAxMC4xbC0xLjYgMy4xLTQwIDY0LTEuNCAyeiJdfSxUWHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYnVpbGRpbmctY2lyY2xlLWFycm93LXJpZ2h0IixpY29uOls1NzYsNTEyLFtdLCJlNGQxIiwiTTMyIDY0QzMyIDI4LjcgNjAuNyAwIDk2IDBMMzUyIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAxNDQuN2MtMzUuNyAyLjktNjguNSAxNS42LTk2IDM1LjRsMC00YzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDQgMGMtMTMuOCAxOS4yLTI0LjEgNDEtMzAuMSA2NC41LTEuOS0uNC0zLjktLjUtNS45LS41bC0zMiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDgwIDc0LjkgMGM2LjEgMTcuMyAxNC42IDMzLjQgMjUuMSA0OEw5NiA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDMyIDY0ek0xNDQgOTZjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMHptMTEyIDE2bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwYy04LjggMC0xNiA3LjItMTYgMTZ6TTE0NCAyMjRjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMHpNMjg4IDQwMGExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0xNDAuNy02Ny4zYy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNmwyOC43IDI4LjctODkuNCAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDg5LjQgMC0yOC43IDI4LjdjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMGw1Ni01NmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtNTYtNTZjLTYuMi02LjItMTYuNC02LjItMjIuNiAweiJdfSxRdmU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibGVmdC1yaWdodCIsaWNvbjpbNTEyLDUxMixbODU5NiwiYXJyb3dzLWFsdC1oIl0sImYzMzciLCJNNTAyLjYgNDA2LjZsLTk2IDk2Yy05LjIgOS4yLTIyLjkgMTEuOS0zNC45IDYuOVMzNTIgNDkyLjkgMzUyIDQ4MGwwLTY0LTMyMCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDMyMCAwIDAtNjRjMC0xMi45IDcuOC0yNC42IDE5LjgtMjkuNnMyNS43LTIuMiAzNC45IDYuOWw5NiA5NmMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3pNOS40IDE1MC42Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM2w5Ni05NmM5LjItOS4yIDIyLjktMTEuOSAzNC45LTYuOVMxNjAgMTkuMSAxNjAgMzJsMCA2NCAzMjAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMzIwIDAgMCA2NGMwIDEyLjktNy44IDI0LjYtMTkuOCAyOS42cy0yNS43IDIuMi0zNC45LTYuOWwtOTYtOTZ6Il19LCRYdD1RdmUsRFh0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InZpcnVzIixpY29uOls1MTIsNTEyLFtdLCJlMDc0IiwiTTI5NiA0MGMwLTIyLjEtMTcuOS00MC00MC00MHMtNDAgMTcuOS00MCA0MGMwIDQ0LjEtNTMuMyA2Ni4xLTg0LjUgMzUtMTUuNi0xNS42LTQwLjktMTUuNi01Ni42IDBzLTE1LjYgNDAuOSAwIDU2LjZjMzEuMiAzMS4yIDkuMSA4NC41LTM1IDg0LjUtMjIuMSAwLTQwIDE3LjktNDAgNDBzMTcuOSA0MCA0MCA0MGM0NC4xIDAgNjYuMSA1My4zIDM1IDg0LjUtMTUuNiAxNS42LTE1LjYgNDAuOSAwIDU2LjZzNDAuOSAxNS42IDU2LjYgMGMzMS4yLTMxLjIgODQuNS05LjEgODQuNSAzNSAwIDIyLjEgMTcuOSA0MCA0MCA0MHM0MC0xNy45IDQwLTQwYzAtNDQuMSA1My4zLTY2LjEgODQuNS0zNSAxNS42IDE1LjYgNDAuOSAxNS42IDU2LjYgMHMxNS42LTQwLjkgMC01Ni42Yy0zMS4yLTMxLjItOS4xLTg0LjUgMzUtODQuNSAyMi4xIDAgNDAtMTcuOSA0MC00MHMtMTcuOS00MC00MC00MGMtNDQuMSAwLTY2LjEtNTMuMy0zNS04NC41IDE1LjYtMTUuNiAxNS42LTQwLjkgMC01Ni42cy00MC45LTE1LjYtNTYuNiAwQzM0OS4zIDEwNi4xIDI5NiA4NC4xIDI5NiA0MHpNMTYwIDIyNGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xNjAgMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0eiJdfSxMWHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZ2VtIixpY29uOls1MTIsNTEyLFsxMjgxNDJdLCJmM2E1IiwiTTExNi43IDMzLjhjNC41LTYuMSAxMS43LTkuOCAxOS4zLTkuOGwyNDAgMGM3LjYgMCAxNC44IDMuNiAxOS4zIDkuOGwxMTIgMTUyYzYuOCA5LjIgNi4xIDIxLjktMS41IDMwLjRsLTIzMiAyNTZjLTQuNSA1LTExIDcuOS0xNy44IDcuOXMtMTMuMi0yLjktMTcuOC03LjlsLTIzMi0yNTZjLTcuNy04LjUtOC4zLTIxLjItMS41LTMwLjRsMTEyLTE1MnptMzguNSAzOS44Yy0zLjMgMi41LTQuMiA3LTIuMSAxMC41TDIxMC41IDE3OS44IDYzLjMgMTkyYy00LjEgLjMtNy4zIDMuOC03LjMgOHMzLjIgNy42IDcuMyA4bDE5MiAxNmMuNCAwIC45IDAgMS4zIDBsMTkyLTE2YzQuMS0uMyA3LjMtMy44IDcuMy04cy0zLjItNy42LTcuMy04bC0xNDcuMi0xMi4zIDU3LjQtOTUuNmMyLjEtMy41IDEuMi04LjEtMi4xLTEwLjVzLTcuOS0yLTEwLjcgMUwyNTYgMTcyLjIgMTY1LjkgNzQuNmMtMi44LTMtNy40LTMuNC0xMC43LTF6Il19LEVYdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0b2lsZXQiLGljb246WzQ0OCw1MTIsWzEyODcwMV0sImY3ZDgiLCJNMjQgMEMxMC43IDAgMCAxMC43IDAgMjRTMTAuNyA0OCAyNCA0OGw4IDAgMCAxNDguOWMtMS45IDEuNC0zLjggMi45LTUuNiA0LjQtMTUuNSAxMy4yLTI2LjQgMzEuNi0yNi40IDU0LjYgMCA0Ni45IDE0LjMgODQuMSAzNyAxMTIuNSAxNC4yIDE3LjcgMzEuMSAzMS4zIDQ4LjUgNDEuOEw2NS42IDQ2OS45Yy0zLjMgOS44LTEuNiAyMC41IDQuNCAyOC44Uzg1LjcgNTEyIDk2IDUxMmwyNTYgMGMxMC4zIDAgMTkuOS00LjkgMjYtMTMuM3M3LjctMTkuMSA0LjQtMjguOGwtMTkuOC01OS41YzE3LjQtMTAuNSAzNC4zLTI0LjEgNDguNS00MS44IDIyLjctMjguNCAzNy02NS41IDM3LTExMi41IDAtMjMuMS0xMC45LTQxLjUtMjYuNC01NC42LTEuOC0xLjUtMy43LTMtNS42LTQuNGwwLTE0OC45IDggMGMxMy4zIDAgMjQtMTAuNyAyNC0yNFM0MzcuMyAwIDQyNCAwTDI0IDB6TTk2IDgwYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZ6TTIyNCAyODhjLTg4LjQgMC0xNjAtMTQuMy0xNjAtMzJzNzEuNi0zMiAxNjAtMzIgMTYwIDE0LjMgMTYwIDMyLTcxLjYgMzItMTYwIDMyeiJdfSxQWHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic2luZ2xlLXF1b3RlLWxlZnQiLGljb246WzE5Miw1MTIsW10sImU4MWIiLCJNMTI4IDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC04IDBjLTMwLjkgMC01NiAyNS4xLTU2IDU2bDAgOCA2NCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgNjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRsLTY0IDBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgMjE2QzAgMTQ5LjcgNTMuNyA5NiAxMjAgOTZsOCAweiJdfSxJWHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibW9uZXktYmlsbHMiLGljb246WzU3Niw1MTIsW10sImUxZjMiLCJNMTYwIDMyYy0zNS4zIDAtNjQgMjguNy02NCA2NGwwIDIyNGMwIDM1LjMgMjguNyA2NCA2NCA2NGwzNTIgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTIyNGMwLTM1LjMtMjguNy02NC02NC02NEwxNjAgMzJ6bTE3NiA5NmE4MCA4MCAwIDEgMSAwIDE2MCA4MCA4MCAwIDEgMSAwLTE2MHpNMTYwIDE1MmwwLTQ4YzAtNC40IDMuNi04IDgtOGw0OCAwYzQuNCAwIDguMSAzLjYgNy41IDgtMy42IDI5LTI2LjYgNTEuOS01NS41IDU1LjUtNC40IC41LTgtMy4xLTgtNy41em0wIDExMmMwLTQuNCAzLjYtOC4xIDgtNy41IDI5IDMuNiA1MS45IDI2LjYgNTUuNSA1NS41IC41IDQuNC0zLjEgOC03LjUgOGwtNDggMGMtNC40IDAtOC0zLjYtOC04bDAtNDh6TTUwNCAxNTkuNWMtMjktMy42LTUxLjktMjYuNi01NS41LTU1LjUtLjUtNC40IDMuMS04IDcuNS04bDQ4IDBjNC40IDAgOCAzLjYgOCA4bDAgNDhjMCA0LjQtMy42IDguMS04IDcuNXpNNTEyIDI2NGwwIDQ4YzAgNC40LTMuNiA4LTggOGwtNDggMGMtNC40IDAtOC4xLTMuNi03LjUtOCAzLjYtMjkgMjYuNi01MS45IDU1LjUtNTUuNSA0LjQtLjUgOCAzLjEgOCA3LjV6TTQ4IDE1MmMwLTEzLjMtMTAuNy0yNC0yNC0yNFMwIDEzOC43IDAgMTUyTDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDM5MiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0TDY0IDQzMmMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMjY0eiJdfSxBWHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidGFibGV0LWJ1dHRvbiIsaWNvbjpbNDQ4LDUxMixbXSwiZjEwYSIsIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTM4NGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAwek0yMjQgNDAwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHoiXX0sc1M9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicmVjdGFuZ2xlLXhtYXJrIixpY29uOls1MTIsNTEyLFs2MjE2NCwicmVjdGFuZ2xlLXRpbWVzIiwidGltZXMtcmVjdGFuZ2xlIiwid2luZG93LWNsb3NlIl0sImY0MTAiLCJNNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjhMMCAzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzg0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yNTZjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgNjR6TTE2NyAxNjdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsNTUgNTUgNTUtNTVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC01NSA1NSA1NSA1NWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC01NS01NS01NSA1NWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw1NS01NS01NS01NWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjl6Il19LE5YdD1zUyxSWHQ9c1MsT1h0PXNTLEZYdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ3cmVuY2giLGljb246WzU3Niw1MTIsWzEyODI5NV0sImYwYWQiLCJNNTA5LjQgOTguNmM3LjYtNy42IDIwLjMtNS43IDI0LjEgNC4zIDYuOCAxNy43IDEwLjUgMzcgMTAuNSA1Ny4xIDAgODguNC03MS42IDE2MC0xNjAgMTYwLTE3LjUgMC0zNC40LTIuOC01MC4yLThMMTQ2LjkgNDk4LjljLTI4LjEgMjguMS03My43IDI4LjEtMTAxLjggMHMtMjguMS03My43IDAtMTAxLjhMMjMyIDIxMC4yYy01LjItMTUuOC04LTMyLjYtOC01MC4yIDAtODguNCA3MS42LTE2MCAxNjAtMTYwIDIwLjEgMCAzOS40IDMuNyA1Ny4xIDEwLjUgMTAgMy44IDExLjggMTYuNSA0LjMgMjQuMWwtODguNyA4OC43Yy0zIDMtNC43IDcuMS00LjcgMTEuM2wwIDQxLjRjMCA4LjggNy4yIDE2IDE2IDE2bDQxLjQgMGM0LjIgMCA4LjMtMS43IDExLjMtNC43bDg4LjctODguN3oiXX0sdWY9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidHJhc2gtY2FuIixpY29uOls0NDgsNTEyLFs2MTQ2MCwidHJhc2gtYWx0Il0sImYyZWQiLCJNMTM2LjcgNS45QzE0MS4xLTcuMiAxNTMuMy0xNiAxNjcuMS0xNmwxMTMuOSAwYzEzLjggMCAyNiA4LjggMzAuNCAyMS45TDMyMCAzMiA0MTYgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMMzIgOTZDMTQuMyA5NiAwIDgxLjcgMCA2NFMxNC4zIDMyIDMyIDMybDk2IDAgOC43LTI2LjF6TTMyIDE0NGwzODQgMCAwIDMwNGMwIDM1LjMtMjguNyA2NC02NCA2NEw5NiA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtMzA0em04OCA2NGMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCAxOTJjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTE5MmMwLTEzLjMtMTAuNy0yNC0yNC0yNHptMTA0IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0bDAgMTkyYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0xOTJjMC0xMy4zLTEwLjctMjQtMjQtMjR6bTEwNCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDE5MmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtMTkyYzAtMTMuMy0xMC43LTI0LTI0LTI0eiJdfSxCWHQ9dWYsSnZlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRhYmxlLWNlbGxzIixpY29uOls0NDgsNTEyLFsidGgiXSwiZjAwYSIsIk0zODQgOTZsMCA2NC02NCAwIDAtNjQgNjQgMHptMCAxMjhsMCA2NC02NCAwIDAtNjQgNjQgMHptMCAxMjhsMCA2NC02NCAwIDAtNjQgNjQgMHpNMjU2IDI4OGwtNjQgMCAwLTY0IDY0IDAgMCA2NHptLTY0IDY0bDY0IDAgMCA2NC02NCAwIDAtNjR6bS02NC02NGwtNjQgMCAwLTY0IDY0IDAgMCA2NHpNNjQgMzUybDY0IDAgMCA2NC02NCAwIDAtNjR6bTAtMTkybDAtNjQgNjQgMCAwIDY0LTY0IDB6bTEyOCAwbDAtNjQgNjQgMCAwIDY0LTY0IDB6TTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6Il19LEhYdD1KdmUscVh0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InJpYmJvbiIsaWNvbjpbMzg0LDUxMixbMTI3ODk1XSwiZjRkNiIsIk0yMzUuMSAwYzMzLjQgMCA2NC41IDE3LjQgODEuOSA0NS45IDEuMiAyIDEzIDIxLjMgMzUuMyA1Ny44IDIxLjEgMzQuNSAxOC4zIDc4LjUtNyAxMTBMMjc4LjMgMjk3LjcgMzY0LjUgNDA2YzUuNSA2LjkgNC40IDE2LjktMi41IDIyLjVsLTgwIDY0Yy02LjkgNS41LTE3IDQuNC0yMi41LTIuNUwzOC42IDIxMy44QzEzLjMgMTgyLjMgMTAuNSAxMzguMyAzMS42IDEwMy44IDU0IDY3LjIgNjUuNyA0Ny45IDY3IDQ1LjkgODQuNCAxNy40IDExNS40IDAgMTQ4LjkgMGw4Ni4zIDB6TTE5MiAxODkuMmw0OC42LTYxLjItOTcuMyAwIDQ4LjYgNjEuMnpNNzUgMzM2LjJsODYuMiAxMDcuOC0zNi44IDQ2Yy01LjUgNi45LTE1LjYgOC0yMi41IDIuNWwtODAtNjRjLTYuOS01LjUtOC0xNS42LTIuNS0yMi41TDc1IDMzNi4yeiJdfSxqWHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibGFuZG1hcmstZmxhZyIsaWNvbjpbNTEyLDUxMixbXSwiZTUxYyIsIk0zNTItMzJMMjQwLTMyYy04LjggMC0xNiA3LjItMTYgMTZsMCAxNDQtMTc2IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMTYgMCAwIDIyNC01MS4yIDM4LjRDNC43IDQ2MC40IDAgNDY5LjkgMCA0ODAgMCA0OTcuNyAxNC4zIDUxMiAzMiA1MTJsNDQ4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzIgMC0xMC4xLTQuNy0xOS42LTEyLjgtMjUuNmwtNTEuMi0zOC40IDAtMjI0IDE2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTE5MiAwIDAtNjQgODAgMGM4LjggMCAxNi03LjIgMTYtMTZsMC02NGMwLTguOC03LjItMTYtMTYtMTZ6bTQ4IDIyNGwwIDIyNC02NCAwIDAtMjI0IDY0IDB6bS0xMTIgMGwwIDIyNC02NCAwIDAtMjI0IDY0IDB6bS0xMTIgMGwwIDIyNC02NCAwIDAtMjI0IDY0IDB6Il19LGV4ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ1cC1kb3duLWxlZnQtcmlnaHQiLGljb246WzUxMiw1MTIsWyJhcnJvd3MtYWx0Il0sImYwYjIiLCJNMjc4LjYgOS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtNjQgNjRjLTkuMiA5LjItMTEuOSAyMi45LTYuOSAzNC45UzE3OS4xIDEyOCAxOTIgMTI4bDMyIDAgMCA5Ni05NiAwIDAtMzJjMC0xMi45LTcuOC0yNC42LTE5LjgtMjkuNnMtMjUuNy0yLjItMzQuOSA2LjlsLTY0IDY0Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2w2NCA2NGM5LjIgOS4yIDIyLjkgMTEuOSAzNC45IDYuOVMxMjggMzMyLjkgMTI4IDMyMGwwLTMyIDk2IDAgMCA5Ni0zMiAwYy0xMi45IDAtMjQuNiA3LjgtMjkuNiAxOS44cy0yLjIgMjUuNyA2LjkgMzQuOWw2NCA2NGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGw2NC02NGM5LjItOS4yIDExLjktMjIuOSA2LjktMzQuOVMzMzIuOSAzODQgMzIwIDM4NGwtMzIgMCAwLTk2IDk2IDAgMCAzMmMwIDEyLjkgNy44IDI0LjYgMTkuOCAyOS42czI1LjcgMi4yIDM0LjktNi45bDY0LTY0YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC02NC02NGMtOS4yLTkuMi0yMi45LTExLjktMzQuOS02LjlTMzg0IDE3OS4xIDM4NCAxOTJsMCAzMi05NiAwIDAtOTYgMzIgMGMxMi45IDAgMjQuNi03LjggMjkuNi0xOS44czIuMi0yNS43LTYuOS0zNC45bC02NC02NHoiXX0sVlh0PWV4ZSxVWHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2FyLXNpZGUiLGljb246WzY0MCw1MTIsWzEyODY2M10sImY1ZTQiLCJNMTQ3IDEwNi43bC0yOS44IDg1LjMgMTIyLjkgMCAwLTk2LTc3LjkgMGMtNi44IDAtMTIuOSA0LjMtMTUuMSAxMC43ek00OC42IDE5My45TDg2LjUgODUuNkM5Ny44IDUzLjUgMTI4LjEgMzIgMTYyLjEgMzJMMzYwIDMyYzI1LjIgMCA0OC45IDExLjkgNjQgMzJsOTYuMiAxMjguM0M1ODcuMSAxOTYuNSA2NDAgMjUyLjEgNjQwIDMyMGwwIDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0bC0xNi40IDBjLTQgNDQuOS00MS43IDgwLTg3LjYgODBzLTgzLjYtMzUuMS04Ny42LTgwbC0xNDQuNyAwYy00IDQ0LjktNDEuNyA4MC04Ny42IDgwcy04My42LTM1LjEtODcuNi04MGwtLjQgMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRsMC04MGMwLTMwLjEgMjAuNy01NS4zIDQ4LjYtNjIuMXpNNDQwIDE5MmwtNjcuMi04OS42Yy0zLTQtNy44LTYuNC0xMi44LTYuNGwtNzIgMCAwIDk2IDE1MiAwek0xNTIgNDMyYTQwIDQwIDAgMSAwIDAtODAgNDAgNDAgMCAxIDAgMCA4MHptMzYwLTQwYTQwIDQwIDAgMSAwIC04MCAwIDQwIDQwIDAgMSAwIDgwIDB6Il19LHR4ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0cmFzaC1hcnJvdy11cCIsaWNvbjpbNDQ4LDUxMixbInRyYXNoLXJlc3RvcmUiXSwiZjgyOSIsIk0xNjcuMS0xNmwxMTMuOSAwYzEzLjggMCAyNiA4LjggMzAuNCAyMS45TDMyMCAzMiA0MTYgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMMzIgOTZDMTQuMyA5NiAwIDgxLjcgMCA2NFMxNC4zIDMyIDMyIDMybDk2IDAgOC43LTI2LjFDMTQxLjEtNy4yIDE1My4zLTE2IDE2Ny4xLTE2ek0zMiAxNDRsMzg0IDAtMjEuMSAzMjMuMUMzOTMuMyA0OTIuNCAzNzIuMyA1MTIgMzQ3IDUxMkwxMDEgNTEyYy0yNS4zIDAtNDYuMy0xOS42LTQ3LjktNDQuOUwzMiAxNDR6bTIwOSA3OWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBsLTcyIDcyYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsMzEtMzEgMCAxMDIuMWMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtMTAyLjEgMzEgMzFjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC03Mi03MnoiXX0sV1h0PXR4ZSxHWHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibGlmZS1yaW5nIixpY29uOls1MTIsNTEyLFtdLCJmMWNkIiwiTTM2Ny4yIDQxMi41QzMzNS45IDQzNC45IDI5Ny41IDQ0OCAyNTYgNDQ4cy03OS45LTEzLjEtMTExLjItMzUuNWw1OC01OGMxNS44IDguNiAzNCAxMy41IDUzLjMgMTMuNXMzNy40LTQuOSA1My4zLTEzLjVsNTggNTh6bTkwLjcgLjhjMzMuOC00My40IDU0LTk4IDU0LTE1Ny4zUzQ5MS44IDE0Mi4xIDQ1OCA5OC43YzktMTIuNSA3LjktMzAuMS0zLjQtNDEuM1M0MjUuOCA0NSA0MTMuMyA1NEMzNjkuOSAyMC4yIDMxNS4zIDAgMjU2IDBTMTQyLjEgMjAuMiA5OC43IDU0Yy0xMi41LTktMzAuMS03LjktNDEuMyAzLjRTNDUgODYuMiA1NCA5OC43QzIwLjIgMTQyLjEgMCAxOTYuNyAwIDI1NlMyMC4yIDM2OS45IDU0IDQxMy4zYy05IDEyLjUtNy45IDMwLjEgMy40IDQxLjNTODYuMiA0NjcgOTguNyA0NThjNDMuNCAzMy44IDk4IDU0IDE1Ny4zIDU0czExMy45LTIwLjIgMTU3LjMtNTRjMTIuNSA5IDMwLjEgNy45IDQxLjMtMy40czEyLjQtMjguOCAzLjQtNDEuM3ptLTQ1LjUtNDYuMWwtNTgtNThjOC42LTE1LjggMTMuNS0zNCAxMy41LTUzLjNzLTQuOS0zNy40LTEzLjUtNTMuM2w1OC01OEM0MzQuOSAxNzYuMSA0NDggMjE0LjUgNDQ4IDI1NnMtMTMuMSA3OS45LTM1LjUgMTExLjJ6TTM2Ny4yIDk5LjVsLTU4IDU4Yy0xNS44LTguNi0zNC0xMy41LTUzLjMtMTMuNXMtMzcuNCA0LjktNTMuMyAxMy41bC01OC01OEMxNzYuMSA3Ny4xIDIxNC41IDY0IDI1NiA2NHM3OS45IDEzLjEgMTExLjIgMzUuNXpNMTU3LjUgMzA5LjNsLTU4IDU4Qzc3LjEgMzM1LjkgNjQgMjk3LjUgNjQgMjU2czEzLjEtNzkuOSAzNS41LTExMS4ybDU4IDU4Yy04LjYgMTUuOC0xMy41IDM0LTEzLjUgNTMuM3M0LjkgMzcuNCAxMy41IDUzLjN6TTIwOCAyNTZhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHoiXX0sS1h0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNvcHlyaWdodCIsaWNvbjpbNTEyLDUxMixbMTY5XSwiZjFmOSIsIk0yNTYgNTEyYTI1NiAyNTYgMCAxIDAgMC01MTIgMjU2IDI1NiAwIDEgMCAwIDUxMnpNMjA1LjEgMzA2LjljMjguMSAyOC4xIDczLjcgMjguMSAxMDEuOCAwIDkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWMtNDYuOSA0Ni45LTEyMi44IDQ2LjktMTY5LjcgMHMtNDYuOS0xMjIuOCAwLTE2OS43IDEyMi44LTQ2LjkgMTY5LjcgMGM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwYy0yOC4xLTI4LjEtNzMuNy0yOC4xLTEwMS44IDBzLTI4LjEgNzMuNyAwIDEwMS44eiJdfSxZWHQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmlsZS1wcmVzY3JpcHRpb24iLGljb246WzM4NCw1MTIsW10sImY1NzIiLCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBMMjEzLjUgMGMxNyAwIDMzLjMgNi43IDQ1LjMgMTguN0wzNjUuMyAxMjUuM2MxMiAxMiAxOC43IDI4LjMgMTguNyA0NS4zTDM4NCA0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDY0em0yMDgtNS41bDAgOTMuNWMwIDEzLjMgMTAuNyAyNCAyNCAyNEwzMjUuNSAxNzYgMjA4IDU4LjV6TTg4IDE5MmMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCAxNDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTQwIDIyLjUgMCA1OC40IDU1LTMzLjQgMzEuNmMtOS42IDkuMS0xMC4xIDI0LjMtLjkgMzMuOXMyNC4zIDEwLjEgMzMuOSAuOWwzNS40LTMzLjUgMzUuNiAzMy41YzkuNyA5LjEgMjQuOCA4LjYgMzMuOS0xczguNi0yNC44LTEtMzMuOWwtMzMuNi0zMS42IDMzLjYtMzEuOGM5LjYtOS4xIDEwLjEtMjQuMyAuOS0zMy45cy0yNC4zLTEwLjEtMzMuOS0uOWwtMzUuNyAzMy43LTQwLjktMzguNWMxMi45LTExLjcgMjEuMS0yOC42IDIxLjEtNDcuNSAwLTM1LjMtMjguNy02NC02NC02NGwtNTYgMHptMzIgODBsLTggMCAwLTMyIDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTI0IDB6Il19LFpYdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJlcmFzZXIiLGljb246WzU3Niw1MTIsW10sImYxMmQiLCJNMTc4LjUgNDE2bDEyMyAwIDY1LjMtNjUuMy0xNzMuNS0xNzMuNS0xMjYuNyAxMjYuNyAxMTIgMTEyek0yMjQgNDgwbC00NS41IDBjLTE3IDAtMzMuMy02LjctNDUuMy0xOC43TDE3IDM0NUM2LjEgMzM0LjEgMCAzMTkuNCAwIDMwNHM2LjEtMzAuMSAxNy00MUwyNjMgMTdDMjczLjkgNi4xIDI4OC42IDAgMzA0IDBzMzAuMSA2LjEgNDEgMTdMNTI3IDE5OWMxMC45IDEwLjkgMTcgMjUuNiAxNyA0MXMtNi4xIDMwLjEtMTcgNDFsLTEzNSAxMzUgMTIwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTI4OCAweiJdfSxheGU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaG91cmdsYXNzLXN0YXJ0IixpY29uOlszODQsNTEyLFsiaG91cmdsYXNzLTEiXSwiZjI1MSIsIk0zMiAwQzE0LjMgMCAwIDE0LjMgMCAzMlMxNC4zIDY0IDMyIDY0bDAgMTFjMCA0Mi40IDE2LjkgODMuMSA0Ni45IDExMy4xbDY3LjkgNjcuOS02Ny45IDY3LjlDNDguOSAzNTMuOSAzMiAzOTQuNiAzMiA0MzdsMCAxMWMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzMjAgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwwLTExYzAtNDIuNC0xNi45LTgzLjEtNDYuOS0xMTMuMWwtNjcuOS02Ny45IDY3LjktNjcuOWMzMC0zMCA0Ni45LTcwLjcgNDYuOS0xMTMuMWwwLTExYzE3LjcgMCAzMi0xNC4zIDMyLTMyUzM2OS43IDAgMzUyIDBMMzIgMHpNMjg4IDQzN2wwIDExLTE5MiAwIDAtMTFjMC0yNS41IDEwLjEtNDkuOSAyOC4xLTY3LjlsNjcuOS02Ny45IDY3LjkgNjcuOWMxOCAxOCAyOC4xIDQyLjQgMjguMSA2Ny45eiJdfSxYWHQ9YXhlLHN4ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjaXJjbGUtbGVmdCIsaWNvbjpbNTEyLDUxMixbNjE4NDAsImFycm93LWFsdC1jaXJjbGUtbGVmdCJdLCJmMzU5IiwiTTUxMiAyNTZhMjU2IDI1NiAwIDEgMCAtNTEyIDAgMjU2IDI1NiAwIDEgMCA1MTIgMHpNMTI0LjcgMjQ0LjdsMTA0LTEwNGM0LjYtNC42IDExLjUtNS45IDE3LjQtMy41czkuOSA4LjMgOS45IDE0LjhsMCA1NiA5NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMzJjMCAxNy43LTE0LjMgMzItMzIgMzJsLTk2IDAgMCA1NmMwIDYuNS0zLjkgMTIuMy05LjkgMTQuOHMtMTIuOSAxLjEtMTcuNC0zLjVsLTEwNC0xMDRjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42eiJdfSxRWHQ9c3hlLEpYdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjcnV6ZWlyby1zaWduIixpY29uOls0NDgsNTEyLFtdLCJlMTUyIiwiTTI0MCA5NmMtODguNCAwLTE2MCA3MS42LTE2MCAxNjAgMCA3MS42IDQ3LjEgMTMyLjMgMTEyIDE1Mi43TDE5MiAyNTZjMC0xMy4zIDEwLjctMjQgMjQtMjQgMTIuOCAwIDIzLjMgMTAuMSAyNCAyMi43IDE1LjUtOS41IDMzLjUtMTQuNyA1Mi4zLTE0LjdsMTEuOCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0xMS44IDBjLTE4LjggMC0zNi4xIDEwLTQ1LjQgMjYuMy00LjUgNy45LTYuOSAxNi44LTYuOSAyNS45bDAgNzUuOGM0Mi41IDAgODEuMS0xNi42IDEwOS44LTQzLjYgMTIuOS0xMi4xIDMzLjEtMTEuNSA0NS4yIDEuM3MxMS41IDMzLjEtMS4zIDQ1LjJDMzUzLjcgNDU2LjggMjk5LjUgNDgwIDI0MCA0ODAgMTE2LjMgNDgwIDE2IDM3OS43IDE2IDI1NlMxMTYuMyAzMiAyNDAgMzJjNTkuNSAwIDExMy43IDIzLjIgMTUzLjcgNjEuMSAxMi45IDEyLjEgMTMuNCAzMi40IDEuMyA0NS4ycy0zMi40IDEzLjQtNDUuMiAxLjNDMzIxLjEgMTEyLjYgMjgyLjUgOTYgMjQwIDk2eiJdfSxlUXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic21va2luZyIsaWNvbjpbNTc2LDUxMixbMTI4Njg0XSwiZjQ4ZCIsIk0zNjAgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDE5YzAgNDAuMyAxNiA3OSA0NC41IDEwNy41bDIxIDIxQzQ2OSAxOTEgNDgwIDIxNy40IDQ4MCAyNDVsMCAxOWMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTE5YzAtMTQuOS01LjktMjkuMS0xNi40LTM5LjZsLTIxLTIxQzM1Ny4xIDE0Ni45IDMzNiA5NiAzMzYgNDNsMC0xOWMwLTEzLjMgMTAuNy0yNCAyNC0yNHpNNTUyIDI4OGMtMTMuMyAwLTI0LTEwLjctMjQtMjRsMC0xOWMwLTQwLjMtMTYtNzktNDQuNS0xMDcuNWwtMjEtMjFDNDQzIDk3IDQzMiA3MC42IDQzMiA0M2wwLTE5YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCAxOWMwIDE0LjkgNS45IDI5LjEgMTYuNCAzOS42bDIxIDIxQzU1NC45IDE0MS4xIDU3NiAxOTIgNTc2IDI0NWwwIDE5YzAgMTMuMy0xMC43IDI0LTI0IDI0ek0zMjAgNDQ4bDk2IDAgMC0zMi05NiAwIDAgMzJ6TTAgNDE2YzAtMzUuMyAyOC43LTY0IDY0LTY0bDM4NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgOTZjMCAxNy43LTE0LjMgMzItMzIgMzJMNjQgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NGwwLTMyem01NzYtNDBsMCAxMTJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC0xMTJjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHoiXX0saXhlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNxdWFyZS1wb2xsLXZlcnRpY2FsIixpY29uOls0NDgsNTEyLFsicG9sbCJdLCJmNjgxIiwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6bTU2IDE5MmMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDExMmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTExMmMwLTEzLjMgMTAuNy0yNCAyNC0yNHptMTg0IDg4YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCA0OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTQ4ek0yMjQgMTI4YzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgMjA4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtMjA4YzAtMTMuMyAxMC43LTI0IDI0LTI0eiJdfSx0UXQ9aXhlLGFRdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwZXJzb24tY2lyY2xlLW1pbnVzIixpY29uOls2NDAsNTEyLFtdLCJlNTQwIiwiTTI4MCAyNGE1NiA1NiAwIDEgMCAtMTEyIDAgNTYgNTYgMCAxIDAgMTEyIDB6bTI0IDIxMi43TDM0MSAyODYuNmMxMi44LTE3LjUgMjguNS0zMi43IDQ2LjMtNDVsLTU2LjItNzUuN0MzMDYgMTMyIDI2Ni4zIDExMiAyMjQgMTEycy04MiAyMC0xMDcuMiA1My45bC03MC41IDk1Yy0xMC41IDE0LjItNy42IDM0LjIgNi42IDQ0LjhzMzQuMiA3LjYgNDQuOC02LjZMMTQ0IDIzNi43IDE0NCA1MTJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTE2MGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2bDAgMTYwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0yNzUuM3pNNjQwIDQwMGExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tNjQgMGMwIDguOC03LjIgMTYtMTYgMTZsLTEyOCAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDEyOCAwYzguOCAwIDE2IDcuMiAxNiAxNnoiXX0sc1F0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJpb2hhemFyZCIsaWNvbjpbNTc2LDUxMixbOTc2M10sImY3ODAiLCJNMjYwIDEyLjZjMC04LjMtNy42LTE0LjUtMTUuNS0xMi4xLTYwLjkgMTguOC0xMDUuMSA3NS44LTEwNS4xIDE0My4xIDAgMjUuMSA2LjEgNDguNyAxNyA2OS41LTIxIDEuOC00MiA4LjItNjEuNSAxOS41LTU3LjkgMzMuNi04NC44IDEwMC4yLTcwLjkgMTYyLjUgMS45IDguNCAxMS40IDEyIDE4LjkgNy42IDUtMi45IDcuNi04LjYgNy4xLTE0LjQtLjMtMy4zLS40LTYuNi0uNC0xMC4xIDAtMTIzLjUgMTg0LjQtMTIzLjUgMTg0LjQgMCAwIDg4LjQtOTQuNSAxMTMuNi0xNDguMiA3NS40LTQuNS0zLjItMTAuNS0zLjktMTUuMy0xLjEtNyA0LjEtOC42IDEzLjYtMi43IDE5LjEgNDYuNiA0My44IDExOCA1My45IDE3Ni4xIDIwLjIgMTcuOS0xMC40IDMyLjgtMjMuOSA0NC41LTM5LjQgMTEuNyAxNS42IDI2LjYgMjkuMSA0NC41IDM5LjQgNTguMSAzMy43IDEyOS41IDIzLjYgMTc2LjEtMjAuMiA1LjktNS41IDQuMy0xNS4xLTIuNy0xOS4xLTQuOC0yLjgtMTAuOC0yLjEtMTUuMyAxLjEtNTMuNyAzOC4yLTE0OC4yIDEzLTE0OC4yLTc1LjQgMC0xMjMuNSAxODQuNC0xMjMuNSAxODQuNCAwIDAgMy40LS4xIDYuOC0uNCAxMC4xLS41IDUuOCAyLjEgMTEuNSA3LjEgMTQuNCA3LjQgNC4zIDE3IC44IDE4LjktNy42IDEzLjktNjIuMi0xMy0xMjguOS03MC45LTE2Mi41LTE5LjUtMTEuMy00MC40LTE3LjctNjEuNS0xOS41IDEwLjktMjAuOCAxNy00NC40IDE3LTY5LjUgMC02Ny4zLTQ0LjItMTI0LjMtMTA1LjEtMTQzLjEtNy45LTIuNC0xNS41IDMuOC0xNS41IDEyLjEgMCA1LjkgNCAxMSA5LjUgMTMuMiA4My40IDMzLjYgNzAuOCAxNzguNC0zNy44IDE3OC40UzE2Ny4xIDU5LjQgMjUwLjUgMjUuOGM1LjUtMi4yIDkuNS03LjMgOS41LTEzLjJ6TTI0OC40IDI4OGE0MCA0MCAwIDEgMSA4MCAwIDQwIDQwIDAgMSAxIC04MCAwek00MzUgMzE3LjdjLTE2LjIgMC0zMS40IDUuNS00Mi4xIDE1LTEwLjEgOS4xLTE4LjEgMjMuNC0xOC4xIDQ1LjYgMCAyMS4xIDcuMiAzNSAxNi41IDQ0LjEgMzIuMi0yNC42IDU1LjUtNjAuNSA2My45LTEwMS44LTYuMy0xLjktMTMuMi0zLTIwLjItM3pNMjAyIDM3OC4zYzAtMjIuMy04LTM2LjYtMTguMS00NS42LTEwLjctOS42LTI1LjktMTUtNDIuMS0xNS03IDAtMTMuOSAxLTIwLjIgMyA4LjQgNDEuMyAzMS42IDc3LjIgNjMuOSAxMDEuOCA5LjQtOS4xIDE2LjUtMjMuMSAxNi41LTQ0LjJ6bTQxLjItMjI0LjNjOSAxMC4yIDIzLjIgMTguMiA0NS4yIDE4LjJzMzYuMi04IDQ1LjItMTguMmM2LjctNy42IDExLjUtMTcuNSAxMy42LTI4LjQtMTguMy02LjgtMzguMi0xMC41LTU4LjgtMTAuNXMtNDAuNSAzLjctNTguOCAxMC41YzIuMiAxMC45IDYuOSAyMC44IDEzLjYgMjguNXoiXX0scnhlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJlbGwtY29uY2llcmdlIixpY29uOls1MTIsNTEyLFsxMjg3MTgsImNvbmNpZXJnZS1iZWxsIl0sImY1NjIiLCJNMjE2IDY0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDE2IDAgMCAzMy4zQzEyNC44IDE1Ni43IDQwLjIgMjQzLjcgMzIuNiAzNTJsNDQ2LjkgMEM0NzEuOCAyNDMuNyAzODcuMiAxNTYuNyAyODAgMTQ1LjNsMC0zMy4zIDE2IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTgwIDB6TTI0IDQwMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw0NjQgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEwyNCA0MDB6Il19LGlRdD1yeGUsclF0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InJ1bGVyLWhvcml6b250YWwiLGljb246WzU3Niw1MTIsW10sImY1NDciLCJNNDggMzg0Yy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDE3NmMwLTI2LjUgMjEuNS00OCA0OC00OGwyNCAwIDAgMTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0xMDQgNDggMCAwIDcyYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC03MiA0OCAwIDAgMTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0xMDQgNDggMCAwIDcyYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC03MiA0OCAwIDAgMTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0xMDQgMjQgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDE2MGMwIDI2LjUtMjEuNSA0OC00OCA0OEw0OCAzODR6Il19LG9RdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJob3JzZSIsaWNvbjpbNTc2LDUxMixbMTI4MDE0XSwiZjZmMCIsIk00NDggMjM4LjFsMC03OC4xIDE2IDAgOS44IDE5LjZjMTIuNSAyNS4xIDQyLjIgMzYuNCA2OC4zIDI2IDIwLjUtOC4yIDMzLjktMjggMzMuOS01MC4xTDU3NiA4MGMwLTE5LjEtOC40LTM2LjMtMjEuNy00OGw1LjcgMGM4LjggMCAxNi03LjIgMTYtMTZTNTY4LjggMCA1NjAgMEw0NDggMEMzNzcuMyAwIDMyMCA1Ny4zIDMyMCAxMjhsLTE3MS4yIDBDMTE4LjEgMTI4IDkxLjIgMTQ0LjMgNzYuMyAxNjguOCAzMy4yIDE3NC41IDAgMjExLjQgMCAyNTZsMCA1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtNTZjMC0xMy40IDYuNi0yNS4yIDE2LjctMzIuNSAxLjYgMTMgNi4zIDI1LjQgMTMuNiAzNi40bDI4LjIgNDIuNGM4LjMgMTIuNCA2LjQgMjguNy0xLjIgNDEuNi0xNi41IDI4LTIwLjYgNjIuMi0xMCA5My45bDE3LjUgNTIuNGM0LjQgMTMuMSAxNi42IDIxLjkgMzAuNCAyMS45bDMzLjcgMGMyMS44IDAgMzcuMy0yMS40IDMwLjQtNDIuMWwtMjAuOC02Mi41Yy0yLjEtNi40LS41LTEzLjQgNC4zLTE4LjJsMTIuNy0xMi43YzEzLjItMTMuMiAyMC42LTMxLjEgMjAuNi00OS43IDAtMi4zLS4xLTQuNi0uMy02LjlsODQgMjRjNC4xIDEuMiA4LjIgMi4xIDEyLjMgMi44TDMyMCA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJsMzIgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTE2NC4zYzE5LjItMTkuMiAzMS41LTQ1LjcgMzItNzUuN2wwIDAgMC0xLjl6TTQ5NiA2NGExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6Il19LG5RdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjYWxlbmRhciIsaWNvbjpbNDQ4LDUxMixbMTI4MTk3LDEyODE5OF0sImYxMzMiLCJNMTI4IDBDMTEwLjMgMCA5NiAxNC4zIDk2IDMybDAgMzItMzIgMEMyOC43IDY0IDAgOTIuNyAwIDEyOGwwIDQ4IDQ0OCAwIDAtNDhjMC0zNS4zLTI4LjctNjQtNjQtNjRsLTMyIDAgMC0zMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDMyLTEyOCAwIDAtMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTAgMjI0TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMTkyLTQ0OCAweiJdfSxsUXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaGFuZHMtaG9sZGluZy1jaGlsZCIsaWNvbjpbNjQwLDUxMixbXSwiZTRmYSIsIk0zMjAtMzJhNDAgNDAgMCAxIDEgMCA4MCA0MCA0MCAwIDEgMSAwLTgwek00MCA2NGMyMi4xIDAgNDAgMTcuOSA0MCA0MGwwIDE2MC4yYzAgMTcgNi43IDMzLjMgMTguNyA0NS4zbDUxLjEgNTEuMWM4LjMgOC4zIDIxLjMgOS42IDMxIDMuMSAxMi45LTguNiAxNC43LTI2LjkgMy43LTM3LjgtNy4zLTcuMy0yMy4xLTIzLjEtNDcuMi00Ny4yLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBjMjQuMSAyNC4xIDM5LjkgMzkuOSA0Ny4yIDQ3LjJsMCAwIDI1LjMgMjUuM2MyMSAyMSAzMi44IDQ5LjUgMzIuOCA3OS4ybDAgNzguOWMwIDI2LjUtMjEuNSA0OC00OCA0OGwtNjYuNyAwYy0xNyAwLTMzLjMtNi43LTQ1LjMtMTguN0wyOC4xIDM5My40QzEwLjEgMzc1LjQgMCAzNTEgMCAzMjUuNUwwIDEwNEMwIDgxLjkgMTcuOSA2NCA0MCA2NHptNTYwIDBjMjIuMSAwIDQwIDE3LjkgNDAgNDBsMCAyMjEuNWMwIDI1LjUtMTAuMSA0OS45LTI4LjEgNjcuOUw1MTIgNDkzLjNjLTEyIDEyLTI4LjMgMTguNy00NS4zIDE4LjdMNDAwIDUxMmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhsMC03OC45YzAtMjkuNyAxMS44LTU4LjIgMzIuOC03OS4ybDI1LjMtMjUuMyAwIDBjNy4zLTcuMyAyMy4xLTIzLjEgNDcuMi00Ny4yIDEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNjLTI0LjEgMjQuMS0zOS45IDM5LjktNDcuMiA0Ny4yLTExIDExLTkuMiAyOS4yIDMuNyAzNy44IDkuNyA2LjUgMjIuNyA1LjIgMzEtMy4xbDUxLjEtNTEuMWMxMi0xMiAxOC43LTI4LjMgMTguNy00NS4zTDU2MCAxMDRjMC0yMi4xIDE3LjktNDAgNDAtNDB6TTM4NC41IDE0OWwtMTkuOC0xNi43IDExLjEgODguOGMxLjYgMTMuMi03LjcgMjUuMS0yMC44IDI2LjhzLTI1LjEtNy43LTI2LjgtMjAuOGwtNC40LTM1LTcuNiAwLTQuNCAzNWMtMS42IDEzLjItMTMuNiAyMi41LTI2LjggMjAuOHMtMjIuNS0xMy42LTIwLjgtMjYuOGwxMS4xLTg4LjgtMTkuOCAxNi43Yy0xMC4xIDguNi0yNS4zIDcuMy0zMy44LTIuOHMtNy4zLTI1LjMgMi44LTMzLjhsMjcuOS0yMy42QzI3MS4zIDcyLjggMjk1LjMgNjQgMzIwIDY0czQ4LjcgOC44IDY3LjYgMjQuN2wyNy45IDIzLjZjMTAuMSA4LjYgMTEuNCAyMy43IDIuOCAzMy44cy0yMy43IDExLjQtMzMuOCAyLjh6Il19LGNRdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJpdGFsaWMiLGljb246WzM4NCw1MTIsW10sImYwMzMiLCJNMTI4IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMybDE5MiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC01OC43IDAtMTMzLjMgMzIwIDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMMzIgNDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDU4LjcgMCAxMzMuMy0zMjAtNjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6Il19LGRRdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJraGFuZGEiLGljb246WzUxMiw1MTIsWzk3NzJdLCJmNjZkIiwiTTI0MC43IDhjOC45LTcuNCAyMS44LTcuNCAzMC43IDBsMzcuOCAzMS41YzguNyA3LjMgMTEuMSAxOS42IDYgMjkuNi0xLjIgMi40LTIuOCA1LjUtNC42IDkuMiAzNC4yIDE5LjIgNTcuMyA1NS44IDU3LjMgOTcuOHMtMjMuMSA3OC42LTU3LjMgOTcuOGMxLjggMy43IDMuMyA2LjggNC42IDkuMiA1LjEgMTAgMi43IDIyLjMtNiAyOS42bC0zNy4yIDMxIDAgMTkuOGMyMi45LTE1LjcgNDguNC0zMy4zIDc2LjctNTIuNyA0Mi44LTI5LjQgNjguNC03OCA2OC40LTEzMGwwLTExLjFjMC0yMy45LTcuMS00Ny4zLTIwLjQtNjcuMi01LjEtNy43LTQuNi0xNy44IDEuNy0yNC42IDYuNi03LjEgMTcuMi04LjEgMjUuMi0yLjggMjcuNSAxOC4xIDg5LjQgNjcuNSA4OS40IDE0OS4xIDAgNDYuNS0yMC4yIDg4LjYtNDEuOCAxMjAuNC0yMS42IDMyLTQ1LjYgNTUtNTUuMyA2My44LTcuOCA3LjEtMTkgNy45LTI3LjYgM2wtNzAuOC00MC4zLTMyLjcgMjIuNSA0NS41IDMxLjNjMS44LS40IDMuNy0uNyA1LjctLjcgMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRjLTEyLjIgMC0yMi4zLTkuMS0yMy44LTIxbC00MC4yLTI3LjYgMCAyOC45YzkuNiA1LjUgMTYgMTUuOSAxNiAyNy43IDAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyYzAtMTEuOCA2LjQtMjIuMiAxNi0yNy43bDAtMjguMS00MC4zIDI3LjdjLTEuOCAxMS40LTExLjggMjAuMS0yMy43IDIwLjEtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGMyLjIgMCA0LjQgLjMgNi41IC45bDQ1LjgtMzEuNS0zMi43LTIyLjUtNzAuOCA0MC4zYy04LjcgNC45LTE5LjggNC4xLTI3LjYtMy05LjctOC44LTMzLjctMzEuOS01NS4zLTYzLjgtMjEuNS0zMS44LTQxLjgtNzMuOS00MS44LTEyMC40IDAtODEuNyA2MS45LTEzMS4xIDg5LjQtMTQ5LjEgOC4xLTUuMyAxOC42LTQuMyAyNS4yIDIuOCA2LjQgNi45IDYuOCAxNyAxLjcgMjQuNi0xMy4zIDE5LjktMjAuNCA0My4zLTIwLjQgNjcuMmwwIDExLjFjMCA1MS45IDI1LjYgMTAwLjYgNjguNCAxMzAgMjguNCAxOS42IDUzLjcgMzYuOSA3NS42IDUybDAtMTkuMS0zNy4yLTMxYy04LjctNy4zLTExLjEtMTkuNi02LTI5LjYgMS4yLTIuNCAyLjgtNS41IDQuNi05LjItMzQuMi0xOS4yLTU3LjMtNTUuOC01Ny4zLTk3LjhzMjMuMS03OC42IDU3LjMtOTcuOGMtMS44LTMuNy0zLjMtNi44LTQuNi05LjItNS4xLTEwLTIuNy0yMi4zIDYtMjkuNkwyNDAuNyA4ek0yMjAuMyAxMjIuOWMtMTcgMTEuNS0yOC4yIDMxLTI4LjIgNTMuMXMxMS4yIDQxLjYgMjguMiA1My4xYzYuOC0xOS4yIDExLjgtMzguNCAxMS44LTUzLjFzLTQuOS0zMy45LTExLjgtNTMuMXptNzEuNSAxMDYuMmMxNy0xMS41IDI4LjItMzEgMjguMi01My4xcy0xMS4yLTQxLjYtMjguMi01My4xYy02LjggMTkuMi0xMS44IDM4LjQtMTEuOCA1My4xczQuOSAzMy45IDExLjggNTMuMXoiXX0sb3hlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZhY2UtZnJvd24tb3BlbiIsaWNvbjpbNTEyLDUxMixbMTI4NTUwLCJmcm93bi1vcGVuIl0sImY1N2EiLCJNMjU2IDUxMmEyNTYgMjU2IDAgMSAwIDAtNTEyIDI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE3NiAxNzZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0xMjggMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNMTgyLjQgMzgyLjVjLTEyLjQgNS4yLTI2LjUtNC4xLTIxLjEtMTYuNCAxNi0zNi42IDUyLjQtNjIuMSA5NC44LTYyLjFzNzguOCAyNS42IDk0LjggNjIuMWM1LjQgMTIuMy04LjcgMjEuNi0yMS4xIDE2LjQtMjIuNC05LjUtNDcuNC0xNC44LTczLjctMTQuOHMtNTEuMyA1LjMtNzMuNyAxNC44eiJdfSx1UXQ9b3hlLFpiPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNoZWNrIixpY29uOls0NDgsNTEyLFsxMDAwMywxMDAwNF0sImYwMGMiLCJNNDM0LjggNzAuMWMxNC4zIDEwLjQgMTcuNSAzMC40IDcuMSA0NC43bC0yNTYgMzUyYy01LjUgNy42LTE0IDEyLjMtMjMuNCAxMy4xcy0xOC41LTIuNy0yNS4xLTkuM2wtMTI4LTEyOGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMGwxMDEuNSAxMDEuNSAyMzQtMzIxLjdjMTAuNC0xNC4zIDMwLjQtMTcuNSA0NC43LTcuMXoiXX0scFF0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZpbmdlcnByaW50IixpY29uOls1MTIsNTEyLFtdLCJmNTc3IiwiTTQ4IDI1NmMwLTExNC45IDkzLjEtMjA4IDIwOC0yMDggNjMuMSAwIDExOS42IDI4LjEgMTU3LjggNzIuNSA4LjYgMTAuMSAyMy44IDExLjIgMzMuOCAyLjZzMTEuMi0yMy44IDIuNi0zMy44QzQwMy4zIDM0LjYgMzMzLjcgMCAyNTYgMCAxMTQuNiAwIDAgMTE0LjYgMCAyNTZsMCA0MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtNDB6bTQ1OC41LTUyLjljLTIuNy0xMy0xNS41LTIxLjMtMjguNC0xOC41cy0yMS4zIDE1LjUtMTguNSAyOC40YzIuOSAxMy45IDQuNSAyOC4zIDQuNSA0My4xbDAgNDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTQwYzAtMTguMS0xLjktMzUuOC01LjUtNTIuOXpNMjU2IDgwYy0xOSAwLTM3LjQgMy01NC41IDguNi0xNS4yIDUtMTguNyAyMy43LTguMyAzNS45IDcuMSA4LjMgMTguOCAxMC44IDI5LjQgNy45IDEwLjYtMi45IDIxLjgtNC40IDMzLjQtNC40IDcwLjcgMCAxMjggNTcuMyAxMjggMTI4bDAgMjQuOWMwIDI1LjItMS41IDUwLjMtNC40IDc1LjMtMS43IDE0LjYgOS40IDI3LjggMjQuMiAyNy44IDExLjggMCAyMS45LTguNiAyMy4zLTIwLjMgMy4zLTI3LjQgNS01NSA1LTgyLjdsMC0yNC45YzAtOTcuMi03OC44LTE3Ni0xNzYtMTc2ek0xNTAuNyAxNDguN2MtOS4xLTEwLjYtMjUuMy0xMS40LTMzLjktLjQtMjMuMSAyOS44LTM2LjggNjcuMS0zNi44IDEwNy43bDAgMjQuOWMwIDI0LjItMi42IDQ4LjQtNy44IDcxLjktMy40IDE1LjYgNy45IDMxLjEgMjMuOSAzMS4xIDEwLjUgMCAxOS45LTcgMjIuMi0xNy4zIDYuNC0yOC4xIDkuNy01Ni44IDkuNy04NS44bDAtMjQuOWMwLTI3LjIgOC41LTUyLjQgMjIuOS03My4xIDcuMi0xMC40IDgtMjQuNi0uMi0zNC4yek0yNTYgMTYwYy01MyAwLTk2IDQzLTk2IDk2bDAgMjQuOWMwIDM1LjktNC42IDcxLjUtMTMuOCAxMDYuMS0zLjggMTQuMyA2LjcgMjkgMjEuNSAyOSA5LjUgMCAxNy45LTYuMiAyMC40LTE1LjQgMTAuNS0zOSAxNS45LTc5LjIgMTUuOS0xMTkuN2wwLTI0LjljMC0yOC43IDIzLjMtNTIgNTItNTJzNTIgMjMuMyA1MiA1MmwwIDI0LjljMCAzNi4zLTMuNSA3Mi40LTEwLjQgMTA3LjktMi43IDEzLjkgNy43IDI3LjIgMjEuOCAyNy4yIDEwLjIgMCAxOS03IDIxLTE3IDcuNy0zOC44IDExLjYtNzguMyAxMS42LTExOC4xbDAtMjQuOWMwLTUzLTQzLTk2LTk2LTk2em0yNCA5NmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDI0LjljMCA1OS45LTExIDExOS4zLTMyLjUgMTc1LjJsLTUuOSAxNS4zYy00LjggMTIuNCAxLjQgMjYuMyAxMy44IDMxczI2LjMtMS40IDMxLTEzLjhsNS45LTE1LjNDMjY3LjkgNDExLjkgMjgwIDM0Ni43IDI4MCAyODAuOWwwLTI0Ljl6Il19LGhRdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjaGFyZ2luZy1zdGF0aW9uIixpY29uOls1NzYsNTEyLFtdLCJmNWU3IiwiTTY0IDY0QzY0IDI4LjcgOTIuNyAwIDEyOCAwTDI4OCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjI0YzQ0LjIgMCA4MCAzNS44IDgwIDgwbDAgMTJjMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjBsMC0xMjcuN2MtMzIuNS0xMC4yLTU2LTQwLjUtNTYtNzYuM2wwLTMyYzAtOC44IDcuMi0xNiAxNi0xNmwxNiAwIDAtNDhjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDQ4IDMyIDAgMC00OGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2bDAgNDggMTYgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDM1LjgtMjMuNSA2Ni4xLTU2IDc2LjNMNTIwIDM4MGMwIDM3LjYtMzAuNCA2OC02OCA2OHMtNjgtMzAuNC02OC02OGwwLTEyYzAtMTcuNy0xNC4zLTMyLTMyLTMybDAgMTI5LjRjOS4zIDMuMyAxNiAxMi4yIDE2IDIyLjYgMCAxMy4zLTEwLjcgMjQtMjQgMjRMNzIgNTEyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNCAwLTEwLjUgNi43LTE5LjMgMTYtMjIuNkw2NCA2NHptODIuNyAxMjUuN2wzOSAwLTIwLjkgNjYuOWMtMi40IDcuNiAzLjMgMTUuNCAxMS4zIDE1LjQgMi45IDAgNS42LTEgNy44LTIuOWw5NC42LTgyYzMuMS0yLjcgNC45LTYuNiA0LjktMTAuNyAwLTcuOC02LjMtMTQuMS0xNC4xLTE0LjFsLTM5IDAgMjAuOS02Ni45YzIuNC03LjYtMy4zLTE1LjQtMTEuMy0xNS40LTIuOSAwLTUuNiAxLTcuOCAyLjlsLTk0LjYgODJjLTMuMSAyLjctNC45IDYuNi00LjkgMTAuNyAwIDcuOCA2LjMgMTQuMSAxNC4xIDE0LjF6Il19LGZRdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ1c2VyLWxvY2siLGljb246WzU3Niw1MTIsW10sImY1MDIiLCJNMjI0IDhhMTIwIDEyMCAwIDEgMSAwIDI0MCAxMjAgMTIwIDAgMSAxIDAtMjQwek0xOTQuMyAzMDRsNTkuNCAwYzI5LjcgMCA1Ny43IDcuMyA4Mi4zIDIwLjFsMCA0LjNjLTE5LjYgMTcuNi0zMiA0My4xLTMyIDcxLjVsMCA5NmMwIDUuNSAuNSAxMC45IDEuMyAxNi4xTDQ1LjcgNTEyQzI5LjMgNTEyIDE2IDQ5OC43IDE2IDQ4Mi4zIDE2IDM4My44IDk1LjggMzA0IDE5NC4zIDMwNHptMzAxLjcgLjFjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCA0Ny45IDY0IDAgMC00Ny45ek0zNTIgNDAwYzAtMjAuOSAxMy40LTM4LjcgMzItNDUuM2wwLTUwLjZjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGwwIDUwLjZjMTguNiA2LjYgMzIgMjQuNCAzMiA0NS4zbDAgOTZjMCAyNi41LTIxLjUgNDgtNDggNDhsLTEyOCAwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTk2eiJdfSxueGU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibW9iaWxlLXNjcmVlbi1idXR0b24iLGljb246WzM4NCw1MTIsWyJtb2JpbGUtYWx0Il0sImYzY2QiLCJNMTYgNjRDMTYgMjguNyA0NC43IDAgODAgMEwzMDQgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDM4NGMwIDM1LjMtMjguNyA2NC02NCA2NEw4MCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDE2IDY0em02NCAwbDAgMzA0IDIyNCAwIDAtMzA0LTIyNCAwek0xOTIgNDcyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnoiXX0sbVF0PW54ZSxnUXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYW5jaG9yLWNpcmNsZS1jaGVjayIsaWNvbjpbNjQwLDUxMixbXSwiZTRhYSIsIk0zMjAgOTZhMzIgMzIgMCAxIDEgLTY0IDAgMzIgMzIgMCAxIDEgNjQgMHpNMjg4IDBjLTUzIDAtOTYgNDMtOTYgOTYgMCA0MS44IDI2LjcgNzcuNCA2NCA5MC41bDAgMjU3LjljLTYyLjktMTQuMy0xMTAuMi02OS43LTExMS45LTEzNi41bDE2LjEgMTQuMWMxMCA4LjcgMjUuMSA3LjcgMzMuOS0yLjNzNy43LTI1LjEtMi4zLTMzLjlsLTY0LTU2Yy05LTcuOS0yMi42LTcuOS0zMS42IDBsLTY0IDU2Yy0xMCA4LjctMTEgMjMuOS0yLjMgMzMuOXMyMy45IDExIDMzLjkgMi4zTDgwIDMwNy45YzIuMSAxMTMuMSA5NC40IDIwNC4xIDIwOCAyMDQuMSAxNi42IDAgMzIuNy0xLjkgNDguMi01LjYtMjAuMy0zMC41LTMyLjItNjctMzIuMi0xMDYuNCAwLTI3LjMgNS43LTUzLjMgMTYtNzYuOWwwLTEzNi42YzM3LjMtMTMuMiA2NC00OC43IDY0LTkwLjUgMC01My00My05Ni05Ni05NnpNNjQwIDQwMGExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tODYuNi02MC45YzcuMSA1LjIgOC43IDE1LjIgMy41IDIyLjNsLTY0IDg4Yy0yLjggMy44LTcgNi4yLTExLjcgNi41cy05LjMtMS4zLTEyLjYtNC42bC00MC00MGMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwbDI2LjggMjYuOCA1My03Mi45YzUuMi03LjEgMTUuMi04LjcgMjIuNC0zLjV6Il19LGx4ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwZXJzb24td2Fsa2luZy13aXRoLWNhbmUiLGljb246WzU3Niw1MTIsWyJibGluZCJdLCJmMjlkIiwiTTIyNC0zMmE1NiA1NiAwIDEgMSAwIDExMiA1NiA1NiAwIDEgMSAwLTExMnpNMTYwIDIwNS4zbC0yMi42IDIyLjZjLTYgNi05LjQgMTQuMS05LjQgMjIuNmwwIDM3LjVjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0zNy41YzAtMjUuNSAxMC4xLTQ5LjkgMjguMS02Ny45bDM0LjQtMzQuNGMyMy4yLTIzLjIgNTQuNi0zNi4yIDg3LjMtMzYuMiAzNi4xIDAgNzAuMyAxNS44IDkzLjggNDMuMWw2OC42IDgwYzExLjUgMTMuNCA5LjkgMzMuNi0zLjUgNDUuMXMtMzMuNiA5LjktNDUuMS0zLjVsLTU1LjctNjUgMCAxMTguNiAzNC41IDI5LjZjMTcuNyAxNS4yIDI5LjMgMzYuMiAzMi42IDU5LjNsMTIuNiA4OC4xYzIuNSAxNy41LTkuNyAzMy43LTI3LjIgMzYuMnMtMzMuNy05LjctMzYuMi0yNy4ybC0xMi42LTg4LjFjLTEuMS03LjctNS0xNC43LTEwLjktMTkuOGwtNzEuNC02MS4yYy0yMS4zLTE4LjItMzMuNS00NC45LTMzLjUtNzIuOWwwLTY5LjN6bS4xIDE2NS44YzIuNCAyLjMgNC44IDQuNiA3LjQgNi44bDQ2IDM5LjQtMi4yIDcuNmMtNC41IDE1LjctMTIuOSAzMC0yNC40IDQxLjVsLTY4LjMgNjguM2MtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNsNjguMy02OC4zYzMuOC0zLjggNi42LTguNiA4LjEtMTMuOEwxNjAuMSAzNzF6bTIzMy41LTYyLjJjMTAuNi04IDI1LjYtNS44IDMzLjYgNC44bDE0NCAxOTJjOCAxMC42IDUuOCAyNS42LTQuOCAzMy42cy0yNS42IDUuOC0zMy42LTQuOGwtMTQ0LTE5MmMtOC0xMC42LTUuOC0yNS42IDQuOC0zMy42eiJdfSxiUXQ9bHhlLGN4ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmaWxlLXdhdmVmb3JtIixpY29uOlszODQsNTEyLFsiZmlsZS1tZWRpY2FsLWFsdCJdLCJmNDc4IiwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwTDIxMy41IDBjMTcgMCAzMy4zIDYuNyA0NS4zIDE4LjdMMzY1LjMgMTI1LjNjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM0wzODQgNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRsMC05NiA2MC4zIDAgNDguOCA2Mi43YzUuMSA2LjYgMTMuMyAxMCAyMS42IDkuMXMxNS41LTYuMSAxOS4xLTEzLjZsNDIuOS05MS4yIDkuOSAxOS44YzQuMSA4LjEgMTIuNCAxMy4zIDIxLjUgMTMuM2w3MiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC01Ny4yIDAtMjUuNC01MC43Yy00LjEtOC4yLTEyLjYtMTMuNC0yMS44LTEzLjNzLTE3LjUgNS41LTIxLjQgMTMuOGwtNDcuMyAxMDAuNi0zMi00MS4xQzg2LjQgMzA3LjQgNzkuNCAzMDQgNzIgMzA0TDAgMzA0IDAgNjR6bTIwOC01LjVsMCA5My41YzAgMTMuMyAxMC43IDI0IDI0IDI0TDMyNS41IDE3NiAyMDggNTguNXoiXX0sdlF0PWN4ZSx4UXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaG91c2UtY3JhY2siLGljb246WzUxMiw1MTIsW10sImUzYjEiLCJNMjc3LjggOC42Yy0xMi4zLTExLjQtMzEuMy0xMS40LTQzLjUgMGwtMjI0IDIwOGMtOS42IDktMTIuOCAyMi45LTggMzUuMVMxOC44IDI3MiAzMiAyNzJsMTYgMCAwIDE3NmMwIDM1LjMgMjguNyA2NCA2NCA2NGw4Ni40IDAtMzEuMy01Mi4yYy00LjEtNi44LTIuNi0xNS41IDMuNS0yMC41TDI1NiAzNjggMTk1LjggMjg1LjJjLTEwLjktMTUgOC4yLTMzLjUgMjIuOC0yMmwxMTcuOSA5Mi42YzggNi4zIDguMiAxOC40IC40IDI0LjlMMjU2IDQ0OCAyOTQuNCA1MTIgNDAwIDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTE3NiAxNiAwYzEzLjIgMCAyNS04LjEgMjkuOC0yMC4zczEuNi0yNi4yLTgtMzUuMWwtMjI0LTIwOHoiXX0seVF0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImhhdC13aXphcmQiLGljb246WzUxMiw1MTIsW10sImY2ZTgiLCJNNjQgNDAwbDg1LjctMjA4LjJjMTctNDEuMyA0Ny44LTc1LjMgODcuMi05Ni4zTDM4My44IDE3LjJjMTIuMy02LjYgMjYuNSA0LjcgMjMgMTguMkwzNjkuNiAxNzcuOGMtMS4xIDQuMS0xLjYgOC4zLTEuNiAxMi42IDAgNi4zIDEuMiAxMi42IDMuNiAxOC41bDc2LjQgMTkxLjEtMjA3LjEgMCAxMS44LTM1LjQgNDAuNC0xMy41YzYuNS0yLjIgMTAuOS04LjMgMTAuOS0xNS4ycy00LjQtMTMtMTAuOS0xNS4ybC00MC40LTEzLjUtMTMuNS00MC40QzIzNyAyNjAuNCAyMzAuOSAyNTYgMjI0IDI1NnMtMTMgNC40LTE1LjIgMTAuOWwtMTMuNSA0MC40LTQwLjQgMTMuNUMxNDguNCAzMjMgMTQ0IDMyOS4xIDE0NCAzMzZzNC40IDEzIDEwLjkgMTUuMmw0MC40IDEzLjUgMTEuOCAzNS40LTE0My4xIDB6TTI3OS42IDE0MS41Yy0xLjEtMy4zLTQuMS01LjUtNy42LTUuNXMtNi41IDIuMi03LjYgNS41bC02LjcgMjAuMi0yMC4yIDYuN2MtMy4zIDEuMS01LjUgNC4xLTUuNSA3LjZzMi4yIDYuNSA1LjUgNy42bDIwLjIgNi43IDYuNyAyMC4yYzEuMSAzLjMgNC4xIDUuNSA3LjYgNS41czYuNS0yLjIgNy42LTUuNWw2LjctMjAuMiAyMC4yLTYuN2MzLjMtMS4xIDUuNS00LjEgNS41LTcuNnMtMi4yLTYuNS01LjUtNy42bC0yMC4yLTYuNy02LjctMjAuMnpNMzIgNDQ4bDQ0OCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDMyIDUxMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnoiXX0sZHhlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InVzZXItZG9jdG9yIixpY29uOls0NDgsNTEyLFsidXNlci1tZCJdLCJmMGYwIiwiTTIyNCA4YTEyMCAxMjAgMCAxIDAgMCAyNDAgMTIwIDEyMCAwIDEgMCAwLTI0MHptNjAgMzEyLjhjLTUuNC0uNS0xMS0uOC0xNi42LS44bC04Ni45IDBjLTUuNiAwLTExLjEgLjMtMTYuNiAuOGwwIDY3LjVjMTYuNSA3LjYgMjggMjQuMyAyOCA0My42IDAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4YzAtMTkuNCAxMS41LTM2LjEgMjgtNDMuNmwwLTU4LjRDNjEgMzUzIDE2IDQxMy42IDE2IDQ4NC42IDE2IDQ5OS43IDI4LjMgNTEyIDQzLjQgNTEybDM2MS4xIDBjMTUuMSAwIDI3LjQtMTIuMyAyNy40LTI3LjQgMC03MS00NS0xMzEuNS0xMDgtMTU0LjZsMCAzNy40YzIzLjMgOC4yIDQwIDMwLjUgNDAgNTYuNmwwIDMyYzAgMTEtOSAyMC0yMCAyMHMtMjAtOS0yMC0yMGwwLTMyYzAtMTEtOS0yMC0yMC0yMHMtMjAgOS0yMCAyMGwwIDMyYzAgMTEtOSAyMC0yMCAyMHMtMjAtOS0yMC0yMGwwLTMyYzAtMjYuMSAxNi43LTQ4LjMgNDAtNTYuNmwwLTQ2LjZ6Il19LHdRdD1keGUsdXhlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNoYXJ0LWJhciIsaWNvbjpbNTEyLDUxMixbImJhci1jaGFydCJdLCJmMDgwIiwiTTMyIDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMzM2YzAgOC44IDcuMiAxNiAxNiAxNmw0MDAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkw4MCA0ODBjLTQ0LjIgMC04MC0zNS44LTgwLTgwTDAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJ6bTk2IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMybDE5MiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0xOTIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6bTMyIDgwbDEyOCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0xMjggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMCAxMTJsMjU2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTI1NiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyeiJdfSxrUXQ9dXhlLHB4ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzcHJheS1jYW4tc3BhcmtsZXMiLGljb246WzU3Niw1MTIsWyJhaXItZnJlc2hlbmVyIl0sImY1ZDAiLCJNMTYwIDMybDAgODAgMTI4IDAgMC04MGMwLTE3LjctMTQuMy0zMi0zMi0zMkwxOTIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6bTAgMTI4Yy01MyAwLTk2IDQzLTk2IDk2bDAgMjA4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDIyNCAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtMjA4YzAtNTMtNDMtOTYtOTYtOTZsLTEyOCAwem02NCA5NmE4MCA4MCAwIDEgMSAwIDE2MCA4MCA4MCAwIDEgMSAwLTE2MHpNNDQ4IDQ4YzAtMS40LTEtMy0yLjItMy42TDQxNiAzMiA0MDMuNiAyLjJDNDAzIDEgNDAxLjQgMCA0MDAgMHMtMyAxLTMuNiAyLjJMMzg0IDMyIDM1NC4yIDQ0LjRjLTEuMiAuNi0yLjIgMi4yLTIuMiAzLjYgMCAxLjQgMSAzIDIuMiAzLjZMMzg0IDY0IDM5Ni40IDkzLjhDMzk3IDk1IDM5OC42IDk2IDQwMCA5NnMzLTEgMy42LTIuMkw0MTYgNjQgNDQ1LjggNTEuNkM0NDcgNTEgNDQ4IDQ5LjQgNDQ4IDQ4em03Ni40IDQ1LjhDNTI1IDk1IDUyNi42IDk2IDUyOCA5NnMzLTEgMy42LTIuMkw1NDQgNjQgNTczLjggNTEuNmMxLjItLjYgMi4yLTIuMiAyLjItMy42IDAtMS40LTEtMy0yLjItMy42TDU0NCAzMiA1MzEuNiAyLjJDNTMxIDEgNTI5LjQgMCA1MjggMHMtMyAxLTMuNiAyLjJMNTEyIDMyIDQ4Mi4yIDQ0LjRjLTEuMiAuNi0yLjIgMi4yLTIuMiAzLjYgMCAxLjQgMSAzIDIuMiAzLjZMNTEyIDY0IDUyNC40IDkzLjh6bTcuMiAxMDAuNGMtLjYtMS4yLTIuMi0yLjItMy42LTIuMnMtMyAxLTMuNiAyLjJMNTEyIDIyNCA0ODIuMiAyMzYuNGMtMS4yIC42LTIuMiAyLjItMi4yIDMuNiAwIDEuNCAxIDMgMi4yIDMuNkw1MTIgMjU2IDUyNC40IDI4NS44Yy42IDEuMiAyLjIgMi4yIDMuNiAyLjJzMy0xIDMuNi0yLjJMNTQ0IDI1NiA1NzMuOCAyNDMuNmMxLjItLjYgMi4yLTIuMiAyLjItMy42IDAtMS40LTEtMy0yLjItMy42TDU0NCAyMjQgNTMxLjYgMTk0LjJ6TTUxMiAxNDRjMC0xLjQtMS0zLTIuMi0zLjZMNDgwIDEyOCA0NjcuNiA5OC4yQzQ2NyA5NyA0NjUuNCA5NiA0NjQgOTZzLTMgMS0zLjYgMi4yTDQ0OCAxMjggNDE4LjIgMTQwLjRjLTEuMiAuNi0yLjIgMi4yLTIuMiAzLjYgMCAxLjQgMSAzIDIuMiAzLjZMNDQ4IDE2MCA0NjAuNCAxODkuOGMuNiAxLjIgMi4yIDIuMiAzLjYgMi4yczMtMSAzLjYtMi4yTDQ4MCAxNjAgNTA5LjggMTQ3LjZjMS4yLS42IDIuMi0yLjIgMi4yLTMuNnoiXX0sU1F0PXB4ZSxfUXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYmFodC1zaWduIixpY29uOlszMjAsNTEyLFtdLCJlMGFjIiwiTTEzNiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDQwLTc0LjQgMEMxNi44IDY0IDAgODAuOCAwIDEwMS42TDAgNDA2LjNjMCAyMyAxOC43IDQxLjcgNDEuNyA0MS43bDcwLjMgMCAwIDQwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC00MCA0OCAwYzYxLjkgMCAxMTItNTAuMSAxMTItMTEyIDAtNDAuMS0yMS4xLTc1LjMtNTIuNy05NS4xIDEzLjEtMTguMyAyMC43LTQwLjcgMjAuNy02NC45IDAtNjEuOS01MC4xLTExMi0xMTItMTEybC0xNiAwIDAtNDBjMC0xMy4zLTEwLjctMjQtMjQtMjR6TTExMiAxMjhsMCA5Ni00OCAwIDAtOTYgNDggMHptNDggOTZsMC05NiAxNiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4bC0xNiAwem0tNDggNjRsMCA5Ni00OCAwIDAtOTYgNDggMHptNDggOTZsMC05NiA0OCAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4bC00OCAweiJdfSxoeGU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidGVtcGVyYXR1cmUtYXJyb3ctdXAiLGljb246WzUxMiw1MTIsWyJ0ZW1wZXJhdHVyZS11cCJdLCJlMDQwIiwiTTY0LjUgOTZjMC01MyA0My05NiA5Ni05NnM5NiA0MyA5NiA5NmwwIDE2NC43YzI5LjUgMjYuNCA0OCA2NC43IDQ4IDEwNy4zIDAgNzkuNS02NC41IDE0NC0xNDQgMTQ0cy0xNDQtNjQuNS0xNDQtMTQ0YzAtNDIuNiAxOC41LTgxIDQ4LTEwNy4zTDY0LjUgOTZ6bTk2IDMzNmMzNS4zIDAgNjQtMjguNyA2NC02NCAwLTI2LjktMTYuNS00OS45LTQwLTU5LjNsMC0yMTIuN2MwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDIxMi43Yy0yMy41IDkuNS00MCAzMi41LTQwIDU5LjMgMCAzNS4zIDI4LjcgNjQgNjQgNjR6TTQzOS4xIDkuNGw2NCA2NGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMGwtOS40LTkuNCAwIDE3OC43YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMTc4LjctOS40IDkuNGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNsNjQtNjRjNi02IDE0LjEtOS40IDIyLjYtOS40czE2LjYgMy40IDIyLjYgOS40eiJdfSxNUXQ9aHhlLHpRdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ3ZWItYXdlc29tZSIsaWNvbjpbNjQwLDUxMixbXSwiZTY4MiIsIk0zNzIuMiA1MmMwIDIwLjktMTIuNCAzOS0zMC4yIDQ3LjJMNDQ4IDE5MiA1NTIuNCAxNzEuMWMtNS4zLTcuNy04LjQtMTcuMS04LjQtMjcuMSAwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4YzAgMjYtMjAuNiA0Ny4xLTQ2LjQgNDhMNDgxIDQ0Mi4zYy0xMC4zIDIzLTMzLjIgMzcuNy01OC40IDM3LjdsLTIwNS4yIDBjLTI1LjIgMC00OC0xNC44LTU4LjQtMzcuN0w0Ni40IDE5MkMyMC42IDE5MS4xIDAgMTcwIDAgMTQ0IDAgMTE3LjUgMjEuNSA5NiA0OCA5NnM0OCAyMS41IDQ4IDQ4YzAgMTAuMS0zLjEgMTkuNC04LjQgMjcuMUwxOTIgMTkyIDI5OC4xIDk5LjFjLTE3LjctOC4zLTMwLTI2LjMtMzAtNDcuMSAwLTI4LjcgMjMuMy01MiA1Mi01MnM1MiAyMy4zIDUyIDUyeiJdfSxDUXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibm9uLWJpbmFyeSIsaWNvbjpbMzg0LDUxMixbXSwiZTgwNyIsIk0xOTIgNTQ0Yy05Ny4yIDAtMTc2LTc4LjgtMTc2LTE3NiAwLTg2LjMgNjIuMS0xNTggMTQ0LTE3M2wwLTQ3LjItNDkuNyAyNC44LTMgMS4zYy0xNS4yIDUuNy0zMi41LS44LTM5LjktMTUuNy03LjQtMTQuOC0yLjItMzIuNiAxMS41LTQxLjNsMi44LTEuNiAzOC44LTE5LjQtMzguOC0xOS40Yy0xNS44LTcuOS0yMi4yLTI3LjEtMTQuMy00Mi45IDcuNC0xNC44IDI0LjgtMjEuNCA0MC0xNS42bDMgMS4zIDQ5LjcgMjQuOCAwLTQ0LjJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDQ0LjIgNDkuNy0yNC44IDMtMS4zYzE1LjItNS44IDMyLjUgLjggMzkuOSAxNS42czIuMiAzMi43LTExLjUgNDEuM2wtMi44IDEuNi0zOC43IDE5LjQgMzguNyAxOS4zYzE1LjggNy45IDIyLjIgMjcuMSAxNC4zIDQyLjktNy40IDE0LjgtMjQuNyAyMS40LTM5LjkgMTUuNmwtMy0xLjMtNDkuNy0yNC44IDAgNDcuMmM4MS45IDE1LjEgMTQ0IDg2LjggMTQ0IDE3MyAwIDk3LjItNzguOCAxNzYtMTc2IDE3NnptMC02NGExMTIgMTEyIDAgMSAwIDAtMjI0IDExMiAxMTIgMCAxIDAgMCAyMjR6Il19LFRRdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJuIixpY29uOlszODQsNTEyLFsxMTBdLCI0ZSIsIk0yMS4xIDMzLjljMTIuNy00LjYgMjYuOS0uNyAzNS41IDkuNkwzMjAgMzU5LjYgMzIwIDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCAzODRjMCAxMy41LTguNCAyNS41LTIxLjEgMzAuMXMtMjYuOSAuNy0zNS41LTkuNkw2NCAxNTIuNCA2NCA0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJTMCA0NjUuNyAwIDQ0OEwwIDY0QzAgNTAuNSA4LjQgMzguNSAyMS4xIDMzLjl6Il19LGZ4ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJhcnJvd3MtdXAtZG93bi1sZWZ0LXJpZ2h0IixpY29uOls1MTIsNTEyLFsiYXJyb3dzIl0sImYwNDciLCJNMjc4LjYgOS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtNjQgNjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsOS40LTkuNCAwIDExNC43LTExNC43IDAgOS40LTkuNGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtNjQgNjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDY0IDY0YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTkuNC05LjQgMTE0LjcgMCAwIDExNC43LTkuNC05LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDY0IDY0YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDY0LTY0YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC05LjQgOS40IDAtMTE0LjcgMTE0LjcgMC05LjQgOS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDY0LTY0YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC02NC02NGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsOS40IDkuNC0xMTQuNyAwIDAtMTE0LjcgOS40IDkuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC02NC02NHoiXX0sJFF0PWZ4ZSxpUz17cHJlZml4OiJmYXMiLGljb25OYW1lOiJob3VzZSIsaWNvbjpbNTEyLDUxMixbMTI3OTY4LDYzNDk4LDYzNTAwLCJob21lIiwiaG9tZS1hbHQiLCJob21lLWxnLWFsdCJdLCJmMDE1IiwiTTI3Ny44IDguNmMtMTIuMy0xMS40LTMxLjMtMTEuNC00My41IDBsLTIyNCAyMDhjLTkuNiA5LTEyLjggMjIuOS04IDM1LjFTMTguOCAyNzIgMzIgMjcybDE2IDAgMCAxNzZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjg4IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0xNzYgMTYgMGMxMy4yIDAgMjUtOC4xIDI5LjgtMjAuM3MxLjYtMjYuMi04LTM1LjFsLTIyNC0yMDh6TTI0MCAzMjBsMzIgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDk2LTEyOCAwIDAtOTZjMC0yNi41IDIxLjUtNDggNDgtNDh6Il19LERRdD1pUyxMUXQ9aVMsRVF0PWlTLFBRdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzcGlubmVyIixpY29uOls1MTIsNTEyLFtdLCJmMTEwIiwiTTIwOCA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem0wIDQxNmE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwek00OCAyMDhhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2em0zNjggNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpNNzUgMzY5LjFBNDggNDggMCAxIDEgMTQyLjkgNDM3IDQ4IDQ4IDAgMSAxIDc1IDM2OS4xek03NSA3NUE0OCA0OCAwIDEgMSAxNDIuOSAxNDIuOSA0OCA0OCAwIDEgMSA3NSA3NXpNNDM3IDM2OS4xQTQ4IDQ4IDAgMSAxIDM2OS4xIDQzNyA0OCA0OCAwIDEgMSA0MzcgMzY5LjF6Il19LG14ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJnYXZlbCIsaWNvbjpbNTc2LDUxMixbImxlZ2FsIl0sImYwZTMiLCJNMTY5LjYgMTUzLjRsLTE4LjctMTguN2MtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNMMjY1LjYtMjUuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMEwzMjkuNi02LjZjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNMMjE0LjkgMTUzLjRjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwek0yNzYgMjExLjdsLTMxLjQtMzEuNCAxMTItMTEyIDExOS40IDExOS40LTExMiAxMTItMzEuNC0zMS40LTIzMiAyMzJjLTE1LjYgMTUuNi00MC45IDE1LjYtNTYuNiAwcy0xNS42LTQwLjkgMC01Ni42bDIzMi0yMzJ6TTM5MC45IDM3NC42Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM0w1MDUuNiAyMTQuNmMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMGwxOC43IDE4LjdjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNMNDU0LjkgMzkzLjRjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwbC0xOC43LTE4Ljd6Il19LElRdD1teGUsZ3hlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRpY2tldC1zaW1wbGUiLGljb246WzU3Niw1MTIsWyJ0aWNrZXQtYWx0Il0sImYzZmYiLCJNMCAxMjhDMCA5Mi43IDI4LjcgNjQgNjQgNjRsNDQ4IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCA2NGMwIDguOC03LjQgMTUuNy0xNS43IDE4LjYtMTguOCA2LjUtMzIuMyAyNC40LTMyLjMgNDUuNHMxMy41IDM4LjkgMzIuMyA0NS40YzguMyAyLjkgMTUuNyA5LjggMTUuNyAxOC42bDAgNjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDQ4Yy0zNS4zIDAtNjQtMjguNy02NC02NGwwLTY0QzAgMzExLjIgNy40IDMwNC4zIDE1LjcgMzAxLjQgMzQuNSAyOTQuOSA0OCAyNzcgNDggMjU2cy0xMy41LTM4LjktMzIuMy00NS40QzcuNCAyMDcuNyAwIDIwMC44IDAgMTkybDAtNjR6Il19LEFRdD1neGUsTlF0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImRvdmUiLGljb246WzUxMiw1MTIsWzEyODMzMF0sImY0YmEiLCJNNDk2IDY0YzEzLjIgMCAyMC43IDE1LjEgMTIuOCAyNS42TDQ4MCAxMjggNDgwIDMwNGMwIDc5LjUtNjQuNSAxNDQtMTQ0IDE0NGwtMTEyIDAtNDYuMyA0Ni4zYy0xMC40IDEwLjQtMjYuNSAxMi40LTM5LjEgNC44TDQxLjUgNDQwLjljLTE3LTEwLjItMTUtMzUuNSAzLjQtNDIuOUwxNjAgMzUyQzIzLjggMzExLjEgNy41IDE2OS44IDIyIDk1LjcgMjUuNiA3Ny45IDQ1LjMgNzEuNCA2MS4zIDgwLjJMMzIwIDIyNCAzMjAgMTQ0YzAtNDQuMiAzNS44LTgwIDgwLTgwbDk2IDB6bS05NiA1NmEyNCAyNCAwIDEgMCAwIDQ4IDI0IDI0IDAgMSAwIDAtNDh6TTE4Mi41LTkuNmMxMi40LTEzLjcgMzMuMy04LjkgNDIuNSA3LjFsNTYuNCA5OC4zYy01LjggMTQuNC05LjIgMzAuMS05LjQgNDYuNUwxMzguMSA2OGMxMC4xLTMxLjYgMjctNTguNCA0NC40LTc3LjZ6Il19LFJRdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0YXJwLWRyb3BsZXQiLGljb246WzUxMiw1MTIsW10sImU1N2MiLCJNMjU2IDE2MGMzNS4zIDAgNjQtMjYuOSA2NC02MCAwLTI0LTMzLjctNzAuMS01Mi4yLTkzLjUtNi4xLTcuNy0xNy41LTcuNy0yMy42IDAtMTguNSAyMy40LTUyLjIgNjkuNS01Mi4yIDkzLjUgMCAzMy4xIDI4LjcgNjAgNjQgNjB6TTM2OCA5NmMwIDYxLjktNTAuMSAxMTItMTEyIDExMlMxNDQgMTU3LjkgMTQ0IDk2YzAtMTEuMSAxLjYtMjEuOSA0LjYtMzJMNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjhMMCAzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjc3LjUgMGMxNyAwIDMzLjMtNi43IDQ1LjMtMTguN0w0OTMuMyAzMjIuN2MxMi0xMiAxOC43LTI4LjMgMTguNy00NS4zTDUxMiAxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRsLTg0LjYgMGMzIDEwLjEgNC42IDIwLjkgNC42IDMyem04NS41IDE3NkwzMzYgMzg5LjUgMzM2IDI5NmMwLTEzLjMgMTAuNy0yNCAyNC0yNGw5My41IDB6TTk2IDEyOGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6Il19LE9RdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0cmVlLWNpdHkiLGljb246WzY0MCw1MTIsW10sImU1ODciLCJNMjg4IDQ4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4bDk2IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCA0OCA0OCAwIDAtNzJjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDcyIDE2IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCAzMjBjMCAyNi41LTIxLjUgNDgtNDggNDhsLTI1NiAwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTQxNnptNjQgNjRsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnptMTYgODBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMHpNMzUyIDMwNGwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2ek01MjggMTkyYy04LjggMC0xNiA3LjItMTYgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDB6TTUxMiAzMDRsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnpNOTYgNDgwbDAtMTYwLTE2IDBjLTQ0LjIgMC04MC0zNS44LTgwLTgwIDAtMjYuNyAxMy4xLTUwLjMgMzMuMi02NC45LS44LTQuOS0xLjItMTAtMS4yLTE1LjEgMC01MyA0My05NiA5Ni05NnM5NiA0MyA5NiA5NmwwIDk2YzAgMzUuMy0yOC43IDY0LTY0IDY0bDAgMTYwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyeiJdfSxieGU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidHVybi11cCIsaWNvbjpbMzg0LDUxMixbMTA1NDgsImxldmVsLXVwLWFsdCJdLCJmM2JmIiwiTTE2OS40IDkuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMGwxMjggMTI4YzkuMiA5LjIgMTEuOSAyMi45IDYuOSAzNC45UzMzMi45IDE5MiAzMjAgMTkybC02NCAwIDAgMTYwYzAgODguNC03MS42IDE2MC0xNjAgMTYwbC02NCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMybDY0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0xNjAtNjQgMGMtMTIuOSAwLTI0LjYtNy44LTI5LjYtMTkuOHMtMi4yLTI1LjcgNi45LTM0LjlsMTI4LTEyOHoiXX0sRlF0PWJ4ZSxyUz17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0ZW1wZXJhdHVyZS1xdWFydGVyIixpY29uOlszMjAsNTEyLFsidGVtcGVyYXR1cmUtMSIsInRoZXJtb21ldGVyLTEiLCJ0aGVybW9tZXRlci1xdWFydGVyIl0sImYyY2EiLCJNMTYwIDBDMTA3IDAgNjQgNDMgNjQgOTZsMCAxNjQuN0MzNC41IDI4NyAxNiAzMjUuNCAxNiAzNjggMTYgNDQ3LjUgODAuNSA1MTIgMTYwIDUxMnMxNDQtNjQuNSAxNDQtMTQ0YzAtNDIuNi0xOC41LTgxLTQ4LTEwNy4zTDI1NiA5NmMwLTUzLTQzLTk2LTk2LTk2em02NCAzNjhjMCAzNS4zLTI4LjcgNjQtNjQgNjRzLTY0LTI4LjctNjQtNjRjMC0yNi45IDE2LjUtNDkuOSA0MC01OS4zbDAtMjguN2MwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0bDAgMjguN2MyMy41IDkuNSA0MCAzMi41IDQwIDU5LjN6Il19LEJRdD1yUyxIUXQ9clMscVF0PXJTLHZ4ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzbGlkZXJzIixpY29uOls1MTIsNTEyLFsic2xpZGVycy1oIl0sImYxZGUiLCJNMzIgNjRDMTQuMyA2NCAwIDc4LjMgMCA5NnMxNC4zIDMyIDMyIDMybDg2LjcgMGMxMi4zIDI4LjMgNDAuNSA0OCA3My4zIDQ4czYxLTE5LjcgNzMuMy00OEw0ODAgMTI4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDI2NS4zIDY0QzI1MyAzNS43IDIyNC44IDE2IDE5MiAxNnMtNjEgMTkuNy03My4zIDQ4TDMyIDY0em0wIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwyNDYuNyAwYzEyLjMgMjguMyA0MC41IDQ4IDczLjMgNDhzNjEtMTkuNyA3My4zLTQ4bDU0LjcgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtNTQuNyAwYy0xMi4zLTI4LjMtNDAuNS00OC03My4zLTQ4cy02MSAxOS43LTczLjMgNDhMMzIgMjI0em0wIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw1NC43IDBjMTIuMyAyOC4zIDQwLjUgNDggNzMuMyA0OHM2MS0xOS43IDczLjMtNDhMNDgwIDQ0OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMjQ2LjcgMGMtMTIuMy0yOC4zLTQwLjUtNDgtNzMuMy00OHMtNjEgMTkuNy03My4zIDQ4TDMyIDM4NHoiXX0salF0PXZ4ZSxWUXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibW9zcXVlIixpY29uOls1NzYsNTEyLFsxMjgzMzJdLCJmNjc4IiwiTTE3NC44IDIyNGwyMjYuNCAwYzQzLjUgMCA3OC44LTM1LjMgNzguOC03OC44IDAtMjUuNS0xMi4zLTQ5LjQtMzMuMS02NC4yTDI5Ny4zLTI1LjRjLTUuNi0zLjktMTMtMy45LTE4LjUgMEwxMjkuMSA4MUMxMDguMyA5NS44IDk2IDExOS43IDk2IDE0NS4yIDk2IDE4OC43IDEzMS4zIDIyNCAxNzQuOCAyMjR6TTUxMiA1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yMjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCA0OC00NDggMCAwLTQ4YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzAgMjA2LjMgMCAyMjRMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsNDQ4IDB6TTI0MCAzODRjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OGwwIDgwLTk2IDAgMC04MHoiXX0sVVF0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImgiLGljb246WzM4NCw1MTIsWzEwNF0sIjQ4IiwiTTMyMCAyODhsMCAxNjBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTM4NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDE2MC0yNTYgMCAwLTE2MGMwLTE3LjctMTQuMy0zMi0zMi0zMlMwIDQ2LjMgMCA2NEwwIDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTYwIDI1NiAweiJdfSxXUXQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaW5mbyIsaWNvbjpbMTkyLDUxMixbXSwiZjEyOSIsIk00OCA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwek0wIDE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMmw2NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMjU2IDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMMzIgNTEyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDMyIDAgMC0yMjQtMzIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6Il19LHh4ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwZXJzb24td2Fsa2luZyIsaWNvbjpbMzg0LDUxMixbMTI4Njk0LCJ3YWxraW5nIl0sImY1NTQiLCJNMTkyIDgwYTU2IDU2IDAgMSAwIDAtMTEyIDU2IDU2IDAgMSAwIDAgMTEyek0xMDUuNCAyMjcuOWwyMi42LTIyLjYgMCA2OS4zYzAgMjggMTIuMiA1NC43IDMzLjUgNzIuOWw3MS40IDYxLjJjNS45IDUuMSA5LjggMTIuMSAxMC45IDE5LjhsMTIuNiA4OC4xYzIuNSAxNy41IDE4LjcgMjkuNyAzNi4yIDI3LjJzMjkuNy0xOC43IDI3LjItMzYuMmwtMTIuNi04OC4xYy0zLjMtMjMuMS0xNC45LTQ0LjEtMzIuNi01OS4zbC0zNC41LTI5LjYgMC0xMTUuMiAzLjggNC43YzE4LjIgMjIuOCA0NS44IDM2IDc1IDM2bDMzLjIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMzMuMiAwYy05LjcgMC0xOC45LTQuNC0yNS0xMmwtMTcuOS0yMi40Yy0yMy0yOC44LTU3LjktNDUuNi05NC44LTQ1LjYtMzIuMiAwLTYzLjEgMTIuOC04NS44IDM1LjZMNjAuMSAxODIuNkM0Mi4xIDIwMC42IDMyIDIyNSAzMiAyNTAuNUwzMiAyODhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTM3LjVjMC04LjUgMy40LTE2LjYgOS40LTIyLjZ6bTEyLjQgMTc5LjRjLTEuNSA1LjItNC4zIDEwLTguMSAxMy44TDQxLjQgNDg5LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsNjguMy02OC4zYzExLjUtMTEuNSAxOS45LTI1LjggMjQuNC00MS41bDIuMi03LjYtNDYtMzkuNGMtMi41LTIuMi01LTQuNC03LjQtNi44bC0xMC40IDM2LjJ6Il19LEdRdD14eGUseXhlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImFycm93LXR1cm4tZG93biIsaWNvbjpbMzg0LDUxMixbImxldmVsLWRvd24iXSwiZjE0OSIsIk0zMiA2NEMxNC4zIDY0IDAgNDkuNyAwIDMyUzE0LjMgMCAzMiAwbDk2IDBjNTMgMCA5NiA0MyA5NiA5NmwwIDMwNi43IDczLjQtNzMuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zbC0xMjggMTI4Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtMTI4LTEyOGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMEwxNjAgNDAyLjcgMTYwIDk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyTDMyIDY0eiJdfSxLUXQ9eXhlLFlRdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJyb2FkIixpY29uOls1MTIsNTEyLFsxMjg3MzldLCJmMDE4IiwiTTIyMy45IDMybC03Ni4yIDBjLTI5LjQgMC01NS4xIDIwLjEtNjIuMSA0OC42TDEuNCA0MjAuNUMtNi4xIDQ1MC43IDE2LjggNDgwIDQ4IDQ4MGwxNzUuOSAwIDAtNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDY0IDE3Ni4xIDBjMzEuMiAwIDU0LjEtMjkuMyA0Ni42LTU5LjVMNDI2LjUgODAuNkM0MTkuNCA1Mi4xIDM5My44IDMyIDM2NC4zIDMybC03Ni40IDAgMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTY0em02NCAxOTJsMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ6Il19LFpRdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzcGlyYWwiLGljb246WzUxMiw1MTIsW10sImU4MGEiLCJNMTE1LjUgNy40YzEzLjYtMTEuMyAzMy44LTkuNSA0NS4xIDQuMXM5LjUgMzMuOC00LjEgNDUuMUMxMDAuMiAxMDMuNSA2NCAxNzUuMiA2NCAyNTYgNjQgMzYyIDE1MCA0NDggMjU2IDQ0OHMxOTItODYgMTkyLTE5MmMwLTc1LjEtNjAuOS0xMzYtMTM2LTEzNlMxNzYgMTgwLjkgMTc2IDI1NmMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyYzAtNDguNiAzOS40LTg4IDg4LTg4czg4IDM5LjQgODggODhjMCA3OS41LTY0LjUgMTQ0LTE0NCAxNDRTMTEyIDMzNS41IDExMiAyNTZjMC0xMTAuNSA4OS41LTIwMCAyMDAtMjAwczIwMCA4OS41IDIwMCAyMDBjMCAxNDEuNC0xMTQuNiAyNTYtMjU2IDI1NlMwIDM5Ny40IDAgMjU2QzAgMTU1LjggNDUgNjYuMSAxMTUuNSA3LjR6Il19LHd4ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmYWNlLWZyb3duIixpY29uOls1MTIsNTEyLFs5Nzg1LCJmcm93biJdLCJmMTE5IiwiTTI1NiA1MTJhMjU2IDI1NiAwIDEgMCAwLTUxMiAyNTYgMjU2IDAgMSAwIDAgNTEyem05MC42LTExMy45Yy0yMC40LTI4LTUzLjQtNDYuMS05MC42LTQ2LjFzLTcwLjIgMTguMS05MC42IDQ2LjFjLTcuOCAxMC43LTIyLjggMTMuMS0zMy41IDUuM3MtMTMuMS0yMi44LTUuMy0zMy41QzE1NS43IDMzMCAyMDIuOCAzMDQgMjU2IDMwNHMxMDAuMyAyNiAxMjkuNCA2NS45YzcuOCAxMC43IDUuNCAyNS43LTUuMyAzMy41cy0yNS43IDUuNC0zMy41LTUuM3pNMTQ0IDIwOGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xOTItMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0eiJdfSxYUXQ9d3hlLGt4ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ3aW5lLWdsYXNzLWVtcHR5IixpY29uOlszMjAsNTEyLFsid2luZS1nbGFzcy1hbHQiXSwiZjVjZSIsIk02NCAwQzQ4LjcgMCAzNS42IDEwLjggMzIuNiAyNS43TDMuMiAxNzNDMS4xIDE4My41IDAgMTk0LjIgMCAyMDVsMCAzYzAgNzcuNCA1NSAxNDIgMTI4IDE1Ni44bDAgMTE1LjItNjQgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwxOTIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtNjQgMCAwLTExNS4yQzI2NSAzNTAgMzIwIDI4NS40IDMyMCAyMDhsMC0zYzAtMTAuNy0xLjEtMjEuNC0zLjItMzJMMjg3LjQgMjUuN0MyODQuNCAxMC44IDI3MS4zIDAgMjU2IDBMNjQgMHptMS45IDE4NS42TDkwLjIgNjQgMjI5LjggNjQgMjU0LjEgMTg1LjZjMS4zIDYuNCAxLjkgMTIuOSAxLjkgMTkuNGwwIDNjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZsMC0zYzAtNi41IC42LTEzIDEuOS0xOS40eiJdfSxRUXQ9a3hlLEpRdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjbGFwcGVyYm9hcmQiLGljb246WzUxMiw1MTIsW10sImUxMzEiLCJNNDQ4IDY0YzIgMCAzLjkgLjEgNS44IC4zbC05NS43IDk1LjcgNjcuOSAwIDcyLTcyYzguOCAxMSAxNCAyNC45IDE0IDQwbDAgMjU2YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ0OGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCAxMjhDMCA5Mi43IDI4LjcgNjQgNjQgNjRsNzAuMSAwLTk2IDk2IDY3LjkgMCA5NS05NSAxLTEgOTIuMSAwLTk2IDk2IDY3LjkgMCA5NS05NSAxLTEgODYuMSAweiJdfSxTeGU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZm9yd2FyZC1zdGVwIixpY29uOlszODQsNTEyLFsic3RlcC1mb3J3YXJkIl0sImYwNTEiLCJNMjEgMzYuOGMxMi45LTcgMjguNy02LjMgNDEgMS44TDMyMCAyMDguMSAzMjAgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDM4NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTE0NC4xLTI1OCAxNjkuNmMtMTIuMyA4LjEtMjggOC44LTQxIDEuOFMwIDQ1NC43IDAgNDQwTDAgNzJDMCA1Ny4zIDguMSA0My44IDIxIDM2Ljh6Il19LGVKdD1TeGUsX3hlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNxdWFyZS11cC1yaWdodCIsaWNvbjpbNDQ4LDUxMixbODU5OSwiZXh0ZXJuYWwtbGluay1zcXVhcmUtYWx0Il0sImYzNjAiLCJNMzg0IDMyYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwzMjAgMHpNMTY4IDE2MGMtOS43IDAtMTguNSA1LjgtMjIuMiAxNC44cy0xLjcgMTkuMyA1LjIgMjYuMmwzNSAzNS02NyA2N2MtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsMjQgMjRjOS40IDkuNCAyNC42IDkuNCAzMy45IDBsNjctNjcgMzUgMzVjNi45IDYuOSAxNy4yIDguOSAyNi4yIDUuMlMzMjAgMzIxLjcgMzIwIDMxMmwwLTEyOGMwLTEzLjMtMTAuNy0yNC0yNC0yNGwtMTI4IDB6Il19LHRKdD1feGUsTXhlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJvb2stam91cm5hbC13aGlsbHMiLGljb246WzQ0OCw1MTIsWyJqb3VybmFsLXdoaWxscyJdLCJmNjZhIiwiTTk2IDUxMmwzMjAgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwwLTY2LjdjMTguNi02LjYgMzItMjQuNCAzMi00NS4zbDAtMjg4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4TDk2IDBDNDMgMCAwIDQzIDAgOTZMMCA0MTZjMCA1MyA0MyA5NiA5NiA5NnpNNjQgNDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMybDI1NiAwIDAgNjQtMjU2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek0yNzQuMSA5OS4yYzIuNi0yLjYgNi43LTMuMSA5LjktMS4xIDMyLjEgMjAgNTMuNCA1NS42IDUzLjQgOTYuMiAwIDYyLjYtNTAuNyAxMTMuMy0xMTMuMyAxMTMuM1MxMTAuNyAyNTYuOSAxMTAuNyAxOTQuM2MwLTQwLjYgMjEuNC03Ni4yIDUzLjQtOTYuMiAzLjEtMiA3LjItMS41IDkuOSAxLjFzMy4xIDYuNyAxLjIgOS44Yy01LjIgOC42LTguMiAxOC43LTguMiAyOS41IDAgMTUuMSA1LjkgMjguOCAxNS41IDM5LjEgMi41IDIuNyAyLjkgNi43IC45IDkuNy00LjcgNy40LTcuNCAxNi4xLTcuNCAyNS41IDAgMjEuNiAxNC4zIDM5LjkgMzQgNDUuOWwxLTI0LjhjLTcuMS00LjQtMTEuOC0xMi4yLTExLjgtMjEuMSAwLTkuNiA1LjUtMTggMTMuNS0yMi4xbDMuMy04MS44Yy4yLTQuMyAzLjctNy43IDgtNy43czcuOCAzLjQgOCA3LjdsMy4zIDgxLjhjOCA0LjEgMTMuNSAxMi40IDEzLjUgMjIuMSAwIDguOS00LjcgMTYuNy0xMS44IDIxLjFsMSAyNC44YzE5LjYtNiAzMy45LTI0LjEgMzQtNDUuNmwwLS42Yy0uMS05LjMtMi43LTE3LjktNy40LTI1LjItMS45LTMuMS0xLjYtNy4xIC45LTkuNyA5LjYtMTAuMiAxNS41LTIzLjkgMTUuNS0zOS4xIDAtMTAuOC0zLTIwLjktOC4yLTI5LjUtMS45LTMuMi0xLjQtNy4yIDEuMi05Ljh6Il19LGFKdD1NeGUsenhlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNoYW1wYWduZS1nbGFzc2VzIixpY29uOls2NDAsNTEyLFsxMjkzNDYsImdsYXNzLWNoZWVycyJdLCJmNzlmIiwiTTE1NS42IDE3LjNDMTYzIDMgMTc5LjktMy42IDE5NSAxLjlsMTI1IDQ1LjYgMTI1LTQ1LjZjMTUuMS01LjUgMzIgMS4xIDM5LjQgMTUuNGw3OC44IDE1Mi45YzI4LjggNTUuOCAxMC4zIDEyMi4zLTM4LjUgMTU2LjZsMzEuMyA4Ni4yIDQxLTE1YzE2LjYtNiAzNSAyLjUgNDEgMTkuMXMtMi41IDM1LTE5LjEgNDFjLTQ3LjQgMTcuMy05NC44IDM0LjUtMTQyLjIgNTEuOC0xNi42IDYuMS0zNS0yLjUtNDEtMTkuMXMyLjUtMzUgMTkuMS00MWw0MS0xNS0zMS4zLTg2LjJjLTU5LjQgNS4yLTExNi4yLTMzLjktMTMwLTk1LjJsLTE0LjYtNjQuNy0xNC42IDY0LjdjLTEzLjggNjEuMy03MC42IDEwMC40LTEzMCA5NS4ybC0zMS4zIDg2LjIgNDEgMTVjMTYuNiA2LjEgMjUuMiAyNC40IDE5LjEgNDFzLTI0LjQgMjUuMi00MSAxOS4xYy00Ny40LTE3LjMtOTQuOC0zNC42LTE0Mi4yLTUxLjgtMTYuNi02LjEtMjUuMi0yNC40LTE5LjEtNDFTMjYuMyAzOTIgNDIuOSAzOThsNDEgMTUgMzEuMy04Ni4yQzY2LjUgMjkyLjUgNDguMSAyMjYgNzYuOSAxNzAuMkwxNTUuNiAxNy4zem00NCA1NC40bC0yNy4yIDUyLjggODkuMiAzMi41IDEzLjEtNTcuOS03NS4xLTI3LjR6bTI0MC45IDBsLTc1LjEgMjcuNCAxMy4xIDU3LjkgODkuMi0zMi41LTI3LjItNTIuOHoiXX0sc0p0PXp4ZSxpSnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZHVtcHN0ZXIiLGljb246WzU3Niw1MTIsW10sImY3OTMiLCJNMTMyLjMgNjRMMTA2LjcgMTkyIDI0IDE5MmMtMTMuMyAwLTI0LTEwLjctMjQtMjRsMC00LjFjMC0yLjYgLjQtNS4xIDEuMi03LjZMMjYuNSA4MC40QzI5LjggNzAuNiAzOSA2NCA0OS4zIDY0bDgzIDB6bTIzLjQgMTI4bDI1LjYtMTI4IDgyLjcgMCAwIDEyOC0xMDguMyAwek0zMTIgNjRsODIuNyAwIDI1LjYgMTI4LTEwOC4zIDAgMC0xMjh6bTEzMS43IDBsODMgMGMxMC4zIDAgMTkuNSA2LjYgMjIuOCAxNi40bDI1LjMgNzUuOWMuOCAyLjQgMS4yIDUgMS4yIDcuNmwwIDQuMWMwIDEzLjMtMTAuNyAyNC0yNCAyNGwtODIuNyAwLTI1LjYtMTI4ek0yNS43IDI0MGw1MjQuNyAwYy0uNCAyLjEtMTMuMyA3My40LTM4LjkgMjEzLjctMyAxNi4zLTE3LjkgMjcuNi0zNC40IDI2LjFTNDQ4IDQ2NC42IDQ0OCA0NDhsMC0xNi0zMjAgMCAwIDE2YzAgMTYuNi0xMi42IDMwLjQtMjkuMSAzMS45UzY3LjUgNDcwIDY0LjUgNDUzLjdDMzkgMzEzLjMgMjYgMjQyLjEgMjUuNyAyNDB6Il19LHJKdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoZWFydC1jaXJjbGUteG1hcmsiLGljb246WzU3Niw1MTIsW10sImU1MDEiLCJNMjQxIDg3LjFsMTUgMjAuNyAxNS0yMC43QzI5NiA1Mi41IDMzNi4yIDMyIDM3OC45IDMyIDQ1Mi40IDMyIDUxMiA5MS42IDUxMiAxNjUuMWwwIDIuNmMwIDE3LjYtMy40IDM1LjYtOS41IDUzLjctMjEuOC04LjYtNDUuNi0xMy40LTcwLjUtMTMuNC0xMDYgMC0xOTIgODYtMTkyIDE5MiAwIDI4LjUgNi4yIDU1LjYgMTcuNCA4MC0uNSAwLS45IDAtMS40IDAtMTUuNSAwLTMwLjgtNC42LTQzLjEtMTQuMS03My01NS43LTIxMi45LTE4Ni0yMTIuOS0yOTguMmwwLTIuNkMwIDkxLjYgNTkuNiAzMiAxMzMuMSAzMiAxNzUuOCAzMiAyMTYgNTIuNSAyNDEgODcuMXpNNDMyIDI1NmExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTU5LjMgMTA3LjNjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZzLTE2LjQtNi4yLTIyLjYgMGwtMzYuNyAzNi43LTM2LjctMzYuN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNmwzNi43IDM2LjctMzYuNyAzNi43Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBsMzYuNy0zNi43IDM2LjcgMzYuN2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZsLTM2LjctMzYuNyAzNi43LTM2Ljd6Il19LG9KdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjb21wdXRlciIsaWNvbjpbNTc2LDUxMixbXSwiZTRlNSIsIk0zNDguOCAzMkMzNDAuNyA0Ni4xIDMzNiA2Mi41IDMzNiA4MGwwIDE2LTI3MiAwIDAgMjI0IDI3MiAwIDAgNjQtMjcyIDBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMjg0LjggMHpNMzM2IDQzMmMwIDE3LjUgNC43IDMzLjkgMTIuOCA0OEwxMjAgNDgwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDIxNiAwek00MzIgMzJsOTYgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OGwtOTYgMGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhsMC0zNTJjMC0yNi41IDIxLjUtNDggNDgtNDh6bTI0IDY0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDQ4IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTQ4IDB6bTAgOTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsNDggMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtNDggMHptNTYgMTQ0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6Il19LEN4ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ3YW5kLW1hZ2ljIixpY29uOls1MTIsNTEyLFsibWFnaWMiXSwiZjBkMCIsIk0zOTguNSAxMi4ybC04OC4yIDg4LjIgMTAxLjMgMTAxLjMgODguMi04OC4yQzUwNy42IDEwNS42IDUxMiA5NSA1MTIgODRzLTQuNC0yMS42LTEyLjItMjkuNUw0NTcuNSAxMi4yQzQ0OS42IDQuNCA0MzkgMCA0MjggMHMtMjEuNiA0LjQtMjkuNSAxMi4yek0yNzYuNCAxMzQuM0wxMi4yIDM5OC41QzQuNCA0MDYuNCAwIDQxNyAwIDQyOHM0LjQgMjEuNiAxMi4yIDI5LjVsNDIuMyA0Mi4zQzYyLjQgNTA3LjYgNzMgNTEyIDg0IDUxMnMyMS42LTQuNCAyOS41LTEyLjJMMzc3LjcgMjM1LjYgMjc2LjQgMTM0LjN6Il19LG5KdD1DeGUsbEp0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJyYWluIixpY29uOls1MTIsNTEyLFsxMjk1MDRdLCJmNWRjIiwiTTEyMCA1NmMwLTMwLjkgMjUuMS01NiA1Ni01NmwyNCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0zMiAwYy0yOS44IDAtNTQuOS0yMC40LTYyLTQ4LS43IDAtMS4zIDAtMiAwLTQ0LjIgMC04MC0zNS44LTgwLTgwIDAtMTggNi0zNC42IDE2LTQ4LTE5LjQtMTQuNi0zMi0zNy44LTMyLTY0IDAtMzAuOSAxNy42LTU3LjggNDMuMi03MS4xLTcuMS0xMi0xMS4yLTI2LTExLjItNDAuOSAwLTQ0LjIgMzUuOC04MCA4MC04MGwwLTI0em0yNzIgMGwwIDI0YzQ0LjIgMCA4MCAzNS44IDgwIDgwIDAgMTUtNC4xIDI5LTExLjIgNDAuOSAyNS43IDEzLjMgNDMuMiA0MC4xIDQzLjIgNzEuMSAwIDI2LjItMTIuNiA0OS40LTMyIDY0IDEwIDEzLjQgMTYgMzAgMTYgNDggMCA0NC4yLTM1LjggODAtODAgODAtLjcgMC0xLjMgMC0yIDAtNy4xIDI3LjYtMzIuMiA0OC02MiA0OGwtMzIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC00NDhjMC0xNy43IDE0LjMtMzIgMzItMzJsMjQgMGMzMC45IDAgNTYgMjUuMSA1NiA1NnoiXX0sY0p0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJyaWVmY2FzZS1tZWRpY2FsIixpY29uOls1MTIsNTEyLFtdLCJmNDY5IiwiTTIwMCA0OGwxMTIgMGM0LjQgMCA4IDMuNiA4IDhsMCA0MC0xMjggMCAwLTQwYzAtNC40IDMuNi04IDgtOHptLTU2IDhsMCA0MC04MCAwQzI4LjcgOTYgMCAxMjQuNyAwIDE2MEwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzODQgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI1NmMwLTM1LjMtMjguNy02NC02NC02NGwtODAgMCAwLTQwYzAtMzAuOS0yNS4xLTU2LTU2LTU2TDIwMCAwYy0zMC45IDAtNTYgMjUuMS01NiA1NnptODAgMTYwYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDQwIDQwIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC00MCAwIDAgNDBjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC00MC00MCAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZsNDAgMCAwLTQweiJdfSxkSnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaG91c2UtbWVkaWNhbC1jaXJjbGUtZXhjbGFtYXRpb24iLGljb246WzY0MCw1MTIsW10sImU1MTIiLCJNMzA5LjggOC42Yy0xMi4zLTExLjQtMzEuMy0xMS40LTQzLjUgMGwtMjI0IDIwOGMtOS42IDktMTIuOCAyMi45LTggMzUuMVM1MC44IDI3MiA2NCAyNzJsMTYgMCAwIDE3NmMwIDM1LjMgMjguNyA2NCA2NCA2NGwxOTYgMGMtMjEuMi0yOS41LTM0LjMtNjUuMy0zNS45LTEwNEwyNzIgNDA4Yy04LjggMC0xNi03LjItMTYtMTZsMC00MC00MCAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZsNDAgMCAwLTQwYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDQwIDIwIDBjMzQuOS00OC41IDkxLjctODAgMTU2LTgwIDEwLjcgMCAyMS4xIC45IDMxLjMgMi41TDMwOS44IDguNnpNNDk2IDU0NGExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTAtMTAwYTIwIDIwIDAgMSAxIDAgNDAgMjAgMjAgMCAxIDEgMC00MHptMC0xNDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC04MGMwLTguOCA3LjItMTYgMTYtMTZ6Il19LHVKdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjb2RlLWNvbW1pdCIsaWNvbjpbNTc2LDUxMixbXSwiZjM4NiIsIk0yODggMzM2YTgwIDgwIDAgMSAwIDAtMTYwIDgwIDgwIDAgMSAwIDAgMTYwem0xNTYuOC00OEM0MzAgMzYxIDM2NS40IDQxNiAyODggNDE2UzE0NiAzNjEgMTMxLjIgMjg4TDMyIDI4OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw5OS4yIDBDMTQ2IDE1MSAyMTAuNiA5NiAyODggOTZzMTQyIDU1IDE1Ni44IDEyOGw5OS4yIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTk5LjIgMHoiXX0scEp0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBlcnNvbi1icmVhc3RmZWVkaW5nIixpY29uOls0NDgsNTEyLFtdLCJlNTNhIiwiTTIyNCAwYTgwIDgwIDAgMSAxIDAgMTYwIDgwIDgwIDAgMSAxIDAtMTYwek00MzYuOCAzODIuOEwzNzMuNSA0NjJjLTE2LjYgMjAuNy00Ni44IDI0LjEtNjcuNSA3LjUtMTcuNi0xNC4xLTIyLjctMzguMS0xMy41LTU3LjdsLS43LS4xYy0zOC45LTUuNi03NC4zLTI1LjEtOTkuNy01NC44bDAtMzYuOGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDQ4YzAgLjggMCAxLjYgLjEgMi40bDEwMS40IDUwLjdjMjMuNyAxMS45IDMzLjMgNDAuNyAyMS41IDY0LjRzLTQwLjcgMzMuMy02NC40IDIxLjVMMjcuMiA0MjcuM2MtMS4xLS41LTIuMi0xLjEtMy4zLTEuNy00LjktMi44LTkuMi02LjQtMTIuNi0xMC42LTQuNi01LjQtNy44LTExLjctOS42LTE4LjQtMy4zLTEyLTEuOS0yNS4yIDQuOC0zNi42IC42LTEuMSAxLjMtMi4yIDItMy4yTDc1LjYgMjU2LjFjMjYuNy00MC4xIDcxLjctNjQuMSAxMTkuOC02NC4xbDc1LjIgMGM0Ni41IDAgOTAuMSAyMi41IDExNy4yIDYwLjNsNTAuNyA3MC45YzIuMiAzIDQgNi4xIDUuNSA5LjQgMi45IDYuNyA0LjMgMTMuOCA0IDIwLjgtLjMgMTAuNi00LjIgMjEtMTEuMiAyOS40ek0zMjAgMzMyYTQ0IDQ0IDAgMSAwIC04OCAwIDQ0IDQ0IDAgMSAwIDg4IDB6Il19LGhKdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwZXJzb24tcmF5cyIsaWNvbjpbNTEyLDUxMixbXSwiZTU0ZCIsIk0zMTIuNSAyNGE1NiA1NiAwIDEgMCAtMTEyIDAgNTYgNTYgMCAxIDAgMTEyIDB6bTI0IDIxMi43bDQ2LjMgNjIuNGMxMC41IDE0LjIgMzAuNiAxNy4yIDQ0LjggNi42czE3LjItMzAuNiA2LjYtNDQuOGwtNzAuNS05NUMzMzguNSAxMzIgMjk4LjggMTEyIDI1Ni41IDExMnMtODIgMjAtMTA3LjIgNTMuOWwtNzAuNSA5NWMtMTAuNSAxNC4yLTcuNiAzNC4yIDYuNiA0NC44czM0LjIgNy42IDQ0LjgtNi42bDQ2LjMtNjIuNCAwIDI3NS4zYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xNjBjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDE2MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMjc1LjN6TTcuNSA3Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWw4MCA4MGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlMNDEuNSA3QzMyLjEtMi4zIDE2LjktMi4zIDcuNSA3em00NjQgMGwtODAgODBjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw4MC04MGM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwek03LjUgNTA1YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDgwLTgwYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTgwIDgwYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXptNDY0IDBjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC04MC04MGMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWw4MCA4MHoiXX0sZkp0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im1hbmF0LXNpZ24iLGljb246WzM4NCw1MTIsW10sImUxZDUiLCJNMTkyIDMyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDQxLjVDNzMuMyAxMDkuMyAwIDE5MC4xIDAgMjg4TDAgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xNjBjMC02Mi41IDQ0LjgtMTE0LjUgMTA0LTEyNS44TDE2OCA0NTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTI5My44YzU5LjIgMTEuMiAxMDQgNjMuMyAxMDQgMTI1LjhsMCAxNjBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTE2MGMwLTk3LjktNzMuMy0xNzguNy0xNjgtMTkwLjVMMjE2IDU2YzAtMTMuMy0xMC43LTI0LTI0LTI0eiJdfSxUeGU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic29ydCIsaWNvbjpbMzg0LDUxMixbInVuc29ydGVkIl0sImYwZGMiLCJNMi40IDIwNC4yYzUgMTIgMTYuNiAxOS44IDI5LjYgMTkuOGwzMjAgMGMxMi45IDAgMjQuNi03LjggMjkuNi0xOS44czIuMi0yNS43LTYuOS0zNC45bC0xNjAtMTYwYy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtMTYwIDE2MGMtOS4yIDkuMi0xMS45IDIyLjktNi45IDM0Ljl6bTAgMTAzLjVjLTUgMTItMi4yIDI1LjcgNi45IDM0LjlsMTYwIDE2MGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxNjAtMTYwYzkuMi05LjIgMTEuOS0yMi45IDYuOS0zNC45UzM2NC45IDI4OCAzNTIgMjg4TDMyIDI4OGMtMTIuOSAwLTI0LjYgNy44LTI5LjYgMTkuOHoiXX0sbUp0PVR4ZSwkeGU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2lyY2xlLXJhZGlhdGlvbiIsaWNvbjpbNTEyLDUxMixbOTc2MiwicmFkaWF0aW9uLWFsdCJdLCJmN2JhIiwiTTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDAgMjU2IDI1NiAwIDEgMSAtNTEyIDB6bTgwIDBsNjQuMyAwYzguNyAwIDE1LjctNy4xIDE3LjMtMTUuNiA0LjQtMjQuNCAxOC4xLTQ1LjUgMzcuMi01OS43IDcuNC01LjUgMTAuNi0xNS42IDYtMjMuNmwtMzIuNS01Ni4zYy00LjMtNy41LTEzLjktMTAuMy0yMS4yLTUuNS00OC4yIDMxLjUtODEuMyA4NC4yLTg2LjMgMTQ0LjgtLjcgOC44IDYuNSAxNiAxNS4zIDE2em0xMzcuOSA4OS44Yy04LjUtMy43LTE4LjgtMS40LTIzLjUgNi42bC0zMSA1My44Yy00LjMgNy41LTEuOSAxNy4yIDUuOCAyMS4xIDI2LjEgMTMuMiA1NS41IDIwLjcgODYuOCAyMC43czYwLjctNy41IDg2LjgtMjAuN2M3LjctMy45IDEwLjEtMTMuNiA1LjgtMjEuMWwtMzEtNTMuOGMtNC42LTgtMTUtMTAuMy0yMy41LTYuNi0xMS43IDUtMjQuNSA3LjgtMzguMSA3LjhzLTI2LjQtMi44LTM4LjEtNy44ek0zNTAuNCAyNDAuNGMxLjYgOC42IDguNSAxNS42IDE3LjMgMTUuNmw2NC4zIDBjOC44IDAgMTYuMS03LjIgMTUuMy0xNi01LTYwLjYtMzguMS0xMTMuMi04Ni4zLTE0NC44LTcuMy00LjgtMTYuOC0yLTIxLjIgNS41TDMwNy4zIDE1N2MtNC42IDgtMS40IDE4LjEgNiAyMy42IDE5LjEgMTQuMiAzMi43IDM1LjQgMzcuMiA1OS43ek0yNTYgMzA1LjdhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2eiJdfSxnSnQ9JHhlLGJKdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJsYXB0b3AtY29kZSIsaWNvbjpbNjQwLDUxMixbXSwiZjVmYyIsIk02NCA5NmMwLTM1LjMgMjguNy02NCA2NC02NGwzODQgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDI0MC02NCAwIDAtMjQwLTM4NCAwIDAgMjQwLTY0IDAgMC0yNDB6TTAgNDAzLjJDMCAzOTIuNiA4LjYgMzg0IDE5LjIgMzg0bDYwMS42IDBjMTAuNiAwIDE5LjIgOC42IDE5LjIgMTkuMiAwIDQyLjQtMzQuNCA3Ni44LTc2LjggNzYuOEw3Ni44IDQ4MEMzNC40IDQ4MCAwIDQ0NS42IDAgNDAzLjJ6TTI4MSAyMDlsLTMxIDMxIDMxIDMxYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTQ4LTQ4Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWw0OC00OGM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjl6TTM5MyAxNzVsNDggNDhjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTQ4IDQ4Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDMxLTMxLTMxLTMxYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDB6Il19LHZKdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzaW5rIixpY29uOls1MTIsNTEyLFtdLCJlMDZkIiwiTTI4OCA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyIDE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMmMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NmwwIDE5Mi02NCAwIDAtNDBjMC0zMC45LTI1LjEtNTYtNTYtNTZsLTQ4IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsNDggMGM0LjQgMCA4IDMuNiA4IDhsMCA0MC04MCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDAgNjRjMCA1MyA0MyA5NiA5NiA5NmwyNTYgMGM1MyAwIDk2LTQzIDk2LTk2bDAtNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTgwIDAgMC00MGMwLTQuNCAzLjYtOCA4LThsNTYgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtNTYgMGMtMzAuOSAwLTU2IDI1LjEtNTYgNTZsMCA0MC02NCAwIDAtMTkyeiJdfSx4SnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYXJyb3ctdXAtZnJvbS13YXRlci1wdW1wIixpY29uOls2NDAsNTEyLFtdLCJlNGI2IiwiTTE0NCAzMmMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCAxNzYtMTYgMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCA3OS42YzE3LjYtMiAzNiAyLjUgNTEuMyAxNCAzLjQgMi42IDYuMSAxLjQgOS44LS4zbC44LS40YzUuNy0yLjYgMTIuOS02LjkgMjEuNy0xMy41IDI3LjUtMjAuNyA1OS45LTMxLjIgOTIuMy0zMS40IDMzLjEtLjIgNjYuMyAxMC4yIDk0LjQgMzEuNCAyMi4xIDE2LjYgMjkuMSAxNi42IDUxLjIgMCAyNy41LTIwLjcgNTkuOS0zMS4yIDkyLjQtMzEuNCAzMy4xLS4yIDY2LjMgMTAuMiA5NC40IDMxLjQgNi45IDUuMiAxMi44IDkgMTggMTEuNyAuNiAuMyAxLjIgLjYgMS44IDEgNC4yIDIuMyA4LjUgNC42IDEyLjYgMS41IDEwLjctOC4xIDIyLjktMTIuNyAzNS4zLTE0LjFsMC03OS41YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4bC01NiAwIDAtMTQyLjEgNDcgNDdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDQ5NyAzOWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBsLTg4IDg4Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNDctNDcgMCAxNDIuMS0xMzYgMCAwLTE3NmMwLTI2LjUtMjEuNS00OC00OC00OEwxNDQgMzJ6TTQ3NC42IDQ3Ni4xYzE5IDE0LjQgNDEuOSAyOC4yIDY3LjIgMzMuMyAyNi41IDUuNCA1NC4zIC44IDgwLjctMTkuMSAxMC42LTggMTIuNy0yMyA0LjctMzMuNnMtMjMtMTIuNy0zMy42LTQuN2MtMTQuOSAxMS4yLTI4LjYgMTMuMS00Mi4zIDEwLjMtMTQuOS0zLTMwLjktMTEuOS00Ny44LTI0LjYtMzguNC0yOS05MC41LTI5LTEyOSAwLTI0IDE4LjEtNDAuNyAyNi4zLTU0LjUgMjYuM3MtMzAuNS04LjItNTQuNS0yNi4zYy0zOC40LTI5LTkwLjUtMjktMTI5IDAtMjEuNiAxNi4zLTQxLjMgMjUuOC01OC45IDI1LjctOS42LS4xLTE5LjktMy0zMS4yLTExLjUtMTAuNi04LTI1LjYtNS45LTMzLjYgNC43UzcgNDgyLjMgMTcuNiA0OTAuM2MxOS4xIDE0LjQgMzkuNCAyMSA1OS44IDIxLjEgMzMuOSAuMiA2NC4zLTE3LjQgODguMS0zNS4zIDIxLjMtMTYuMSA0OS45LTE2LjEgNzEuMiAwIDI0LjIgMTguMyA1Mi4zIDM1LjkgODMuNCAzNS45czU5LjEtMTcuNyA4My40LTM1LjljMjEuMy0xNi4xIDQ5LjktMTYuMSA3MS4yIDB6Il19LER4ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJtaWNyb3Bob25lLWxpbmVzLXNsYXNoIixpY29uOls1NzYsNTEyLFsibWljcm9waG9uZS1hbHQtc2xhc2giXSwiZjUzOSIsIk03LTI0LjljOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMTUxIDE1MSAwLTMwLjJjMC01MyA0My05NiA5Ni05NiA1MC4zIDAgOTEuNiAzOC43IDk1LjcgODhMMzI4IDg4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDU2IDAgMCA0OC01NiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDU1LjcgMGMtMS45IDIyLjktMTEuOCA0My40LTI2LjkgNTlsMzMuOSAzMy45YzI1LjUtMjYgNDEuMy02MS42IDQxLjMtMTAwLjlsMC00MGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0bDAgNDBjMCA1Mi42LTIxLjEgMTAwLjItNTUuMyAxMzQuOEw1NjkgNTAzLjFjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMEw3IDkuMUMtMi4zLS4zLTIuMy0xNS41IDctMjQuOXpNMjk3LjggMzY3LjdsNDEuNCA0MS40Yy04LjggMi40LTE3LjkgNC4zLTI3LjMgNS40bDAgNDkuNSA0OCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0xNDQgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGw0OCAwIDAtNDkuNUMxNjkuMyA0MDIuNyA5NiAzMjEuOSA5NiAyMjRsMC00MGMwLTUuMSAxLjYtOS45IDQuNC0xMy44bDQzLjYgNDMuNiAwIDEwLjJjMCA3OS41IDY0LjUgMTQ0IDE0NCAxNDQgMy4zIDAgNi42LS4xIDkuOC0uM3oiXX0seUp0PUR4ZSx3SnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic2VydmVyIixpY29uOls0NDgsNTEyLFtdLCJmMjMzIiwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZsMCA2NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTY0YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyem0yMTYgNzJhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em01NiAyNGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwek02NCAyODhjLTM1LjMgMC02NCAyOC43LTY0IDY0bDAgNjRjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC02NGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAyODh6bTIxNiA3MmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTU2IDI0YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6Il19LFNvZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ1c2VyIixpY29uOls0NDgsNTEyLFsxMjgxMDAsNjIxNDQsNjI0NzAsInVzZXItYWx0IiwidXNlci1sYXJnZSJdLCJmMDA3IiwiTTIyNCAyNDhhMTIwIDEyMCAwIDEgMCAwLTI0MCAxMjAgMTIwIDAgMSAwIDAgMjQwem0tMjkuNyA1NkM5NS44IDMwNCAxNiAzODMuOCAxNiA0ODIuMyAxNiA0OTguNyAyOS4zIDUxMiA0NS43IDUxMmwzNTYuNiAwYzE2LjQgMCAyOS43LTEzLjMgMjkuNy0yOS43IDAtOTguNS03OS44LTE3OC4zLTE3OC4zLTE3OC4zbC01OS40IDB6Il19LGtKdD1Tb2UsU0p0PVNvZSxfSnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic25vd2ZsYWtlIixpY29uOls1MTIsNTEyLFsxMDA1MiwxMDA1NF0sImYyZGMiLCJNMjg4LjIgMGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDYyLjEtMTUtMTVjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsNDkgNDkgMCA3MC42LTYxLjItMzUuMy0xNy45LTY2LjljLTMuNC0xMi44LTE2LjYtMjAuNC0yOS40LTE3Uzk1LjMgOTggOTguNyAxMTAuOGw1LjUgMjAuNS01My43LTMxQzM1LjIgOTEuNSAxNS42IDk2LjcgNi44IDExMnMtMy42IDM0LjkgMTEuNyA0My43bDUzLjcgMzEtMjAuNSA1LjVjLTEyLjggMy40LTIwLjQgMTYuNi0xNyAyOS40czE2LjYgMjAuNCAyOS40IDE3bDY2LjktMTcuOSA2MS4yIDM1LjMtNjEuMiAzNS4zLTY2LjktMTcuOWMtMTIuOC0zLjQtMjYgNC4yLTI5LjQgMTdzNC4yIDI2IDE3IDI5LjRsMjAuNSA1LjUtNTMuNyAzMUMzLjIgMzY1LjEtMiAzODQuNyA2LjggNDAwczI4LjQgMjAuNiA0My43IDExLjdsNTMuNy0zMS01LjUgMjAuNWMtMy40IDEyLjggNC4yIDI2IDE3IDI5LjRzMjYtNC4yIDI5LjQtMTdsMTcuOS02Ni45IDYxLjItMzUuMyAwIDcwLjYtNDkgNDljLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGwxNS0xNSAwIDYyLjFjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTYyLjEgMTUgMTVjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC00OS00OSAwLTcwLjYgNjEuMiAzNS4zIDE3LjkgNjYuOWMzLjQgMTIuOCAxNi42IDIwLjQgMjkuNCAxN3MyMC40LTE2LjYgMTctMjkuNGwtNS41LTIwLjUgNTMuNyAzMWMxNS4zIDguOCAzNC45IDMuNiA0My43LTExLjdzMy42LTM0LjktMTEuNy00My43bC01My43LTMxIDIwLjUtNS41YzEyLjgtMy40IDIwLjQtMTYuNiAxNy0yOS40cy0xNi42LTIwLjQtMjkuNC0xN2wtNjYuOSAxNy45LTYxLjItMzUuMyA2MS4yLTM1LjMgNjYuOSAxNy45YzEyLjggMy40IDI2LTQuMiAyOS40LTE3cy00LjItMjYtMTctMjkuNGwtMjAuNS01LjUgNTMuNy0zMWMxNS4zLTguOCAyMC42LTI4LjQgMTEuNy00My43cy0yOC40LTIwLjUtNDMuNy0xMS43bC01My43IDMxIDUuNS0yMC41YzMuNC0xMi44LTQuMi0yNi0xNy0yOS40cy0yNiA0LjItMjkuNCAxN2wtMTcuOSA2Ni45LTYxLjIgMzUuMyAwLTcwLjYgNDktNDljOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtMTUgMTUgMC02Mi4xeiJdfSxNSnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidGF1cnVzIixpY29uOlszODQsNTEyLFtdLCJlODRmIiwiTTMzNi0xNmMxNy43IDAgMzIgMTQuMyAzMiAzMiAwIDU4LjUtMjguNiAxMTAuMy03Mi41IDE0Mi4zIDUzLjIgMzQuMSA4OC41IDkzLjggODguNSAxNjEuNyAwIDEwNi04NiAxOTItMTkyIDE5MlMwIDQyNiAwIDMyMEMwIDI1Mi4xIDM1LjMgMTkyLjQgODguNSAxNTguMyA0NC42IDEyNi4zIDE2IDc0LjUgMTYgMTYgMTYtMS43IDMwLjMtMTYgNDgtMTZTODAtMS43IDgwIDE2YzAgNjEuOSA1MC4xIDExMiAxMTIgMTEyUzMwNCA3Ny45IDMwNCAxNmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMTkyIDE5MmExMjggMTI4IDAgMSAwIDAgMjU2IDEyOCAxMjggMCAxIDAgMC0yNTZ6Il19LHpKdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJza3VsbC1jcm9zc2JvbmVzIixpY29uOls0NDgsNTEyLFsxMjgzNjksOTc2MF0sImY3MTQiLCJNMzg0IDE0NEMzODQgNjQuNSAzMTIuNCAwIDIyNCAwUzY0IDY0LjUgNjQgMTQ0YzAgNDcuMSAyNS4xIDg4LjkgNjQgMTE1LjJsMCAyOC44YzAgMTcuNyAxNC4zIDMyIDMyIDMybDEyOCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMjguOGMzOC45LTI2LjMgNjQtNjguMSA2NC0xMTUuMnpNMTYwIDEyOGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTk2IDMyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTQ0NS41IDMzOS43Yy02LjgtMTYuMy0yNS41LTI0LTQxLjgtMTcuMkwyMjQgMzk3LjMgNDQuMyAzMjIuNWMtMTYuMy02LjgtMzUgLjktNDEuOCAxNy4ycy45IDM1IDE3LjIgNDEuOEwxNDAuOCA0MzIgMTkuNyA0ODIuNUMzLjQgNDg5LjMtNC4zIDUwOCAyLjUgNTI0LjNzMjUuNSAyNCA0MS44IDE3LjJMMjI0IDQ2Ni43IDQwMy43IDU0MS41YzE2LjMgNi44IDM1LS45IDQxLjgtMTcuMnMtLjktMzUtMTcuMi00MS44TDMwNy4yIDQzMiA0MjguMyAzODEuNWMxNi4zLTYuOCAyNC0yNS41IDE3LjItNDEuOHoiXX0sQ0p0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBlc28tc2lnbiIsaWNvbjpbNDQ4LDUxMixbXSwiZTIyMiIsIk0xMTIgMzJDOTQuMyAzMiA4MCA0Ni4zIDgwIDY0bDAgNjQtMjQgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwyNCAwIDAgMzItMjQgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwyNCAwIDAgMTkyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC05NiA5NiAwYzY1LjYgMCAxMjItMzkuNSAxNDYuNy05NmwzNy4zIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTI0LjggMGMuNS01LjMgLjgtMTAuNiAuOC0xNnMtLjMtMTAuNy0uOC0xNmwyNC44IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTM3LjMgMEMzNjIgNzEuNSAzMDUuNiAzMiAyNDAgMzJMMTEyIDMyem0xOTkuNiA5NmwtMTY3LjYgMCAwLTMyIDk2IDBjMjguNCAwIDU0IDEyLjQgNzEuNiAzMnpNMTQ0IDE3NmwxOTAuNyAwYy45IDUuMiAxLjMgMTAuNSAxLjMgMTZzLS41IDEwLjgtMS4zIDE2bC0xOTAuNyAwIDAtMzJ6bTE2Ny42IDgwYy0xNy42IDE5LjYtNDMuMSAzMi03MS42IDMybC05NiAwIDAtMzIgMTY3LjYgMHoiXX0sVEp0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6IndpbmUtZ2xhc3MiLGljb246WzMyMCw1MTIsWzEyNzg2M10sImY0ZTMiLCJNMzIuNiAyNS43QzM1LjYgMTAuOCA0OC43IDAgNjQgMEwyNTYgMGMxNS4zIDAgMjguNCAxMC44IDMxLjQgMjUuN0wzMTYuOCAxNzNjMi4xIDEwLjUgMy4yIDIxLjIgMy4yIDMybDAgM2MwIDc3LjQtNTUgMTQyLTEyOCAxNTYuOGwwIDExNS4yIDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMNjQgNTQ0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDY0IDAgMC0xMTUuMkM1NSAzNTAgMCAyODUuNCAwIDIwOGwwLTNjMC0xMC43IDEuMS0yMS40IDMuMi0zMkwzMi42IDI1Ljd6TTc3LjQgMTI4bDE2NS4xIDAtMTIuOC02NC0xMzkuNSAwLTEyLjggNjR6Il19LG9TPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRlbXBlcmF0dXJlLWhhbGYiLGljb246WzMyMCw1MTIsWzEyNzc3NywidGVtcGVyYXR1cmUtMiIsInRoZXJtb21ldGVyLTIiLCJ0aGVybW9tZXRlci1oYWxmIl0sImYyYzkiLCJNMTYwIDBDMTA3IDAgNjQgNDMgNjQgOTZsMCAxNjQuN0MzNC41IDI4NyAxNiAzMjUuNCAxNiAzNjggMTYgNDQ3LjUgODAuNSA1MTIgMTYwIDUxMnMxNDQtNjQuNSAxNDQtMTQ0YzAtNDIuNi0xOC41LTgxLTQ4LTEwNy4zTDI1NiA5NmMwLTUzLTQzLTk2LTk2LTk2em02NCAzNjhjMCAzNS4zLTI4LjcgNjQtNjQgNjRzLTY0LTI4LjctNjQtNjRjMC0yNi45IDE2LjUtNDkuOSA0MC01OS4zbDAtOTIuN2MwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0bDAgOTIuN2MyMy41IDkuNSA0MCAzMi41IDQwIDU5LjN6Il19LCRKdD1vUyxESnQ9b1MsTEp0PW9TLEVKdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0aWNrZXQiLGljb246WzU3Niw1MTIsWzEyNzkwM10sImYxNDUiLCJNNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjhsMCA2NEMwIDIwMC44IDcuNCAyMDcuNyAxNS43IDIxMC42IDM0LjUgMjE3LjEgNDggMjM1IDQ4IDI1NnMtMTMuNSAzOC45LTMyLjMgNDUuNEM3LjQgMzA0LjMgMCAzMTEuMiAwIDMyMGwwIDY0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDQ0OCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtNjRjMC04LjgtNy40LTE1LjctMTUuNy0xOC42LTE4LjgtNi41LTMyLjMtMjQuNC0zMi4zLTQ1LjRzMTMuNS0zOC45IDMyLjMtNDUuNGM4LjMtMi45IDE1LjctOS44IDE1LjctMTguNmwwLTY0YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDY0ek00MTYgMzM2bDAtMTYwLTI1NiAwIDAgMTYwIDI1NiAwek0xMTIgMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMybDI4OCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMTkyYzAgMTcuNy0xNC4zIDMyLTMyIDMybC0yODggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0xOTJ6Il19LFBKdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ3aGVhdC1hd24tY2lyY2xlLWV4Y2xhbWF0aW9uIixpY29uOls2NDAsNTEyLFtdLCJlNTk4IiwiTTQ5NiA1NzZhMTQ0IDE0NCAwIDEgMSAwLTI4OCAxNDQgMTQ0IDAgMSAxIDAgMjg4ek04MSA1MjljLTkuNCA5LjMtMjQuNSA5LjMtMzMuOSAwLTkuNC05LjQtOS40LTI0LjYgMC0zMy45TDgxIDUyOXptMzAuMi0yOTQuNGM2LjItNC4xIDE0LjctMy40IDIwLjEgMi4xbDQ2LjEgNDYuMSA2LjEgNi43YzE5LjcgMjMuOCAyNi4zIDU1IDE5LjMgODMuOSAzMS43LTcuNyA2Ni4yIDEgOTAuNiAyNS4zbDEyIDEyYy0uOCA3LTEuMiAxNC4yLTEuMiAyMS40IDAgMjAgMyAzOS4zIDguNyA1Ny40LTM2LjggMjEuOC04NSAxNy0xMTYuNi0xNC43TDE2NS42IDQ0NC4zIDgxIDUyOUM2OS43IDUxNy43IDU4LjQgNTA2LjMgNDcgNDk1bDg0LjctODQuNy0zMC41LTMwLjVjLTM3LjUtMzcuNS0zNy41LTk4LjMgMC0xMzUuN2w3LjQtNy40IDIuNS0yLjF6TTQ5NiA0NzZhMjAgMjAgMCAxIDAgMCA0MCAyMCAyMCAwIDEgMCAwLTQwem0wLTE0MGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgODBjMCA4LjggNy4yIDE2IDE2IDE2IDguOCAwIDE2LTcuMiAxNi0xNmwwLTgwYzAtOC44LTcuMi0xNi0xNi0xNnpNMjE1LjIgMTMwLjZjNi4yLTQuMSAxNC43LTMuNCAyMC4xIDIuMWw0Ni4xIDQ2LjEgNi4xIDYuN2MxOS43IDIzLjggMjYuMyA1NSAxOS4zIDgzLjkgMjQuMi01LjkgNTAuMS0yLjEgNzEuOSAxMC44LTMyLjIgMjQuOS01Ni4yIDU5LjgtNjcuNCAxMDAuMS0zLjgtMi44LTcuNS02LTExLTkuNWwtOTQuOS05NC45Yy0zNy41LTM3LjUtMzcuNS05OC4zIDAtMTM1LjdsNy40LTcuNCAyLjUtMi4xek01MjYuNyAxNWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMCA4LjggOC44IDkuMyAyMi43IDEuNyAzMi4xTDU2MC42IDQ5IDQ0Ni4yIDE2My40YzcuNyAxIDE1LjMgMyAyMi41IDUuOUw1MjcgMTExYzkuNC05LjQgMjQuNi05LjQgMzQgMCA4LjggOC44IDkuMyAyMi43IDEuNiAzMi4xbC0xLjcgMS44LTUyLjcgNTIuNyAzOSAzOWMzLjIgMy4yIDQuNyA3LjQgNC43IDExLjYtMTcuNy01LjQtMzYuNS04LjMtNTUuOS04LjMtMzQuMiAwLTY2LjMgOC45LTk0LjEgMjQuNmwtOTIuNy05Mi43Yy0zNy41LTM3LjUtMzcuNS05OC4zIDAtMTM1LjhsNy40LTcuNCAyLjUtMi4xYzYuMi00LjEgMTQuNy0zLjQgMjAuMSAyLjFsMzkgMzkgNTIuNy01Mi43YzkuNC05LjQgMjQuNi05LjQgMzQgMCA4LjggOC44IDkuMyAyMi43IDEuNiAzMi4xTDQ2NSA0OSA0MDYuNyAxMDcuM2MyLjggNy4xIDQuNyAxNC41IDUuOCAyMi4xTDUyNi43IDE1eiJdfSxJSnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYXJyb3dzLXR1cm4tcmlnaHQiLGljb246WzQ0OCw1MTIsW10sImU0YzAiLCJNMzEzLjQtNi42YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwbDgwIDgwYzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC04MCA4MGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMMzM4LjcgMTI4IDEyOCAxMjhjLTM1LjMgMC02NCAyOC43LTY0IDY0bDAgMzJjMCAxNy43LTE0LjMgMzItMzIgMzJTMCAyNDEuNyAwIDIyNGwwLTMyQzAgMTIxLjMgNTcuMyA2NCAxMjggNjRsMjEwLjcgMC0yNS40LTI1LjRjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zem0tOTYgMjU2YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwbDgwIDgwYzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC04MCA4MGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMMjQyLjcgMzg0IDk2IDM4NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMlMwIDQ2NS43IDAgNDQ4bDAtMzJjMC01MyA0My05NiA5Ni05NmwxNDYuNyAwLTI1LjQtMjUuNGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjN6Il19LEFKdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjYW5keS1jYW5lIixpY29uOls0NDgsNTEyLFtdLCJmNzg2IiwiTTQyMS44IDM5LjZDNDUyIDg1LjIgNDU2LjUgMTQyLjkgNDM1LjEgMTkybC0xNjUuNCAwIDQxLjQtNDEuNGMuOC0uOCAxLjUtMS42IDIuMi0yLjRMNDIxLjggMzkuNnpNMjY4IDEwMi45Yy0uOCAuNy0xLjYgMS40LTIuNCAyLjJsLTI4LjEgMjguMWMtMjUgMjUtNjUuNSAyNS05MC41IDBzLTI1LTY1LjUgMC05MC41TDE3NSAxNC42QzIyOS45LTQwLjIgMzE0LjUtNDYuNyAzNzYuNS01LjZMMjY4IDEwMi45ek0xMjUuNyAzMzZsODAtODAgMTgxIDAtODIuNSA4Mi41IDAtMi41LTE3OC41IDB6bTExNyA2NEwxNDEuNCA1MDEuM2MtMjUgMjUtNjUuNSAyNS05MC41IDBzLTI1LTY1LjUgMC05MC41bDEwLjctMTAuNyAxODEgMHoiXX0sTkp0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6IndoZWVsY2hhaXIiLGljb246WzUxMiw1MTIsW10sImYxOTMiLCJNMTM2IDQwYTU2IDU2IDAgMSAxIDExMiAwIDU2IDU2IDAgMSAxIC0xMTIgMHpNMTE3LjkgMTk3LjZsMTIuNiA2M2MtMzguNiAxMi40LTY2LjUgNDguNy02Ni41IDkxLjQgMCA1MyA0MyA5NiA5NiA5NiAzNS42IDAgNjYuNy0xOS40IDgzLjMtNDguMiAyLjMgLjEgNC42IC4yIDcgLjJsNC4xIDBjMSAwIDIuMSAwIDMuMSAwbDU1LjIgMGMtMjAuNCA2NC45LTgxIDExMi0xNTIuNyAxMTItODguNCAwLTE2MC03MS42LTE2MC0xNjAgMC03My44IDUwLTEzNS45IDExNy45LTE1NC40em0xNDguNi0yOC4xbDIzLjcgMTE4LjUgNjAuNSAwYzMzLjMgMCA2My4yIDIwLjcgNzQuOSA1MS45bDI1LjUgNjggMTguNy02LjJjMTYuOC01LjYgMzQuOSAzLjUgNDAuNSAyMC4ycy0zLjUgMzQuOS0yMC4yIDQwLjVsLTQ4IDE2Yy0xNi4zIDUuNC0zNC0zLTQwLjEtMTkuMWwtMzYuMy05Ni45Yy0yLjMtNi4yLTguMy0xMC40LTE1LTEwLjRsLTg2LjEgMGMtLjQgMC0uOCAwLTEuMyAwbC0xMy4xIDBjLTMwLjUgMC01Ni44LTIxLjUtNjIuOC01MS40TDE2NS4zIDE4OS43Yy02LjQtMzEuOSAxOC02MS43IDUwLjYtNjEuNyAyNC42IDAgNDUuOCAxNy40IDUwLjYgNDEuNXoiXX0sUkp0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNwZWxsLWNoZWNrIixpY29uOls1NzYsNTEyLFtdLCJmODkxIiwiTTEyMCAzMmMtNDguNiAwLTg4IDM5LjQtODggODhsMCAxNjhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTY0IDY0IDAgMCA2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTY4YzAtNDguNi0zOS40LTg4LTg4LTg4bC0xNiAwem00MCAxMjhsLTY0IDAgMC00MGMwLTEzLjMgMTAuNy0yNCAyNC0yNGwxNiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgNDB6TTMwNCAzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAyMjRjMCAxNy43IDE0LjMgMzIgMzIgMzJsNzIgMGM0OC42IDAgODgtMzkuNCA4OC04OCAwLTIzLjYtOS4zLTQ1LTI0LjQtNjAuOCAxMC4zLTE0LjQgMTYuNC0zMi4xIDE2LjQtNTEuMiAwLTQ4LjYtMzkuNC04OC04OC04OGwtNjQgMHptNjQgMTEybC0zMiAwIDAtNDggMzIgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNHpNMzM2IDI1NmwwLTQ4IDQwIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTQwIDB6bTIzMyA4NGMxMS0xMy44IDguOC0zMy45LTUtNDVzLTMzLjktOC44LTQ1IDVsLTEwNS43IDEzMi4xLTM4LjctMzguN2MtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsNjQgNjRjNi40IDYuNCAxNS4zIDkuOCAyNC40IDkuM3MxNy41LTQuOSAyMy4yLTEyTDU2OSAzNDB6Il19LE9KdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ2b2x1bWUtb2ZmIixpY29uOlszMjAsNTEyLFtdLCJmMDI2IiwiTTk2IDM1MmwtNDggMGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhsMC05NmMwLTI2LjUgMjEuNS00OCA0OC00OGw0OCAwIDEzNC4xLTExOS4yYzYuNC01LjcgMTQuNi04LjggMjMuMS04LjggMTkuMiAwIDM0LjggMTUuNiAzNC44IDM0LjhsMCAzNzguNGMwIDE5LjItMTUuNiAzNC44LTM0LjggMzQuOC04LjUgMC0xNi43LTMuMS0yMy4xLTguOEw5NiAzNTJ6Il19LEZKdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJsdW5ncyIsaWNvbjpbNTc2LDUxMixbMTI5NzI5XSwiZjYwNCIsIk0zMjAgMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAxNDEuOS0zMiAxOS4yIDAtMTE2LjdjMC0yNC41LTE5LjktNDQuNC00NC40LTQ0LjQtMTIuNSAwLTI0LjQgNS4zLTMyLjggMTQuNWwtMjYuNCAyOUM0Mi45IDE2MC44IDAgMjcxLjggMCAzODdsMCAzMC41YzAgNTIuMiA0Mi4zIDk0LjUgOTQuNSA5NC41IDIyIDAgNDMuNy01LjEgNjMuNC0xNWw1LTIuNWMzNy40LTE4LjcgNjEtNTYuOSA2MS05OC44bDAtMTI4IDY0LTM4LjQgNjQgMzguNCAwIDEyOGMwIDQxLjggMjMuNiA4MC4xIDYxIDk4LjhsNSAyLjVjMTkuNyA5LjggNDEuNCAxNSA2My40IDE1IDUyLjIgMCA5NC41LTQyLjMgOTQuNS05NC41bDAtNi4yYzAtMTExLjEtMzYuNy0yMTktMTA0LjQtMzA3TDQyOC45IDQ4LjdjLTguMS0xMC42LTIwLjctMTYuNy0zNC0xNi43LTIzLjcgMC00Mi45IDE5LjItNDIuOSA0Mi45bDAgMTE4LjItMzItMTkuMiAwLTE0MS45eiJdfSxCSnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYm9va21hcmsiLGljb246WzM4NCw1MTIsWzEyODI3OCw2MTU5MV0sImYwMmUiLCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRMMCA0ODBjMCAxMS41IDYuMiAyMi4yIDE2LjIgMjcuOHMyMi4zIDUuNSAzMi4yLS40TDE5MiA0MjEuMyAzMzUuNSA1MDcuNGM5LjkgNS45IDIyLjIgNi4xIDMyLjIgLjRTMzg0IDQ5MS41IDM4NCA0ODBsMC00MTZjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMHoiXX0sSEp0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJhcmNvZGUiLGljb246WzQ0OCw1MTIsW10sImYwMmEiLCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NEwwIDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyTDY0IDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyem04OCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDQwMGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtNDAwYzAtMTMuMy0xMC43LTI0LTI0LTI0em03MiAzMmwwIDM4NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMzg0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyem0yMDgtOGwwIDQwMGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtNDAwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0em0tOTYgMGwwIDQwMGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtNDAwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0eiJdfSxfb2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibGlzdC1vbCIsaWNvbjpbNTEyLDUxMixbImxpc3QtMS0yIiwibGlzdC1udW1lcmljIl0sImYwY2IiLCJNMCA3MkMwIDU4LjggMTAuNyA0OCAyNCA0OGw0OCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgMTA0IDI0IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTk2IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsMjQgMCAwLTgwLTI0IDBDMTAuNyA5NiAwIDg1LjMgMCA3MnpNMzAuNCAzMDEuMkM0MS44IDI5Mi42IDU1LjcgMjg4IDcwIDI4OGw0LjkgMGMzMy43IDAgNjEuMSAyNy40IDYxLjEgNjEuMSAwIDE5LjYtOS40IDM3LjktMjUuMiA0OS40bC0yNCAxNy41IDMzLjIgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtOTAuNyAwQzEzLjEgNDY0IDAgNDUwLjkgMCA0MzQuNyAwIDQyNS4zIDQuNSA0MTYuNSAxMi4xIDQxMWw3MC41LTUxLjNjMy40LTIuNSA1LjQtNi40IDUuNC0xMC42IDAtNy4yLTUuOS0xMy4xLTEzLjEtMTMuMUw3MCAzMzZjLTMuOSAwLTcuNyAxLjMtMTAuOCAzLjZMMzguNCAzNTUuMmMtMTAuNiA4LTI1LjYgNS44LTMzLjYtNC44Uy0xIDMyNC44IDkuNiAzMTYuOGwyMC44LTE1LjZ6TTIyNCA2NGwyNTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMjU2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6bTAgMTYwbDI1NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0yNTYgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMCAxNjBsMjU2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTI1NiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyeiJdfSxxSnQ9X29lLGpKdD1fb2UsVkp0PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZpbGUtY2lyY2xlLXhtYXJrIixpY29uOls1NzYsNTEyLFtdLCJlNWExIiwiTTk2IDBDNjAuNyAwIDMyIDI4LjcgMzIgNjRsMCAzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMTgwIDBjLTIyLjctMzEuNS0zNi03MC4yLTM2LTExMiAwLTEwMC42IDc3LjQtMTgzLjIgMTc2LTE5MS4zbDAtMzguMWMwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0wyOTAuNyAxOC43QzI3OC43IDYuNyAyNjIuNSAwIDI0NS41IDBMOTYgMHpNMzU3LjUgMTc2TDI2NCAxNzZjLTEzLjMgMC0yNC0xMC43LTI0LTI0TDI0MCA1OC41IDM1Ny41IDE3NnpNNDMyIDU0NGExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTU5LjMtMTgwLjdsLTM2LjcgMzYuNyAzNi43IDM2LjdjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMGwtMzYuNy0zNi43LTM2LjcgMzYuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNmwzNi43LTM2LjctMzYuNy0zNi43Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBsMzYuNyAzNi43IDM2LjctMzYuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZ6Il19LFVKdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjdWJlIixpY29uOls1MTIsNTEyLFtdLCJmMWIyIiwiTTIyNC4zLTIuNWMxOS44LTExLjQgNDQuMi0xMS40IDY0IDBMNDY0LjIgOTljMTkuOCAxMS40IDMyIDMyLjYgMzIgNTUuNGwwIDIwM2MwIDIyLjktMTIuMiA0NC0zMiA1NS40TDI4OC4zIDUxNC41Yy0xOS44IDExLjQtNDQuMiAxMS40LTY0IDBMNDguNSA0MTNjLTE5LjgtMTEuNC0zMi0zMi42LTMyLTU1LjRsMC0yMDNjMC0yMi45IDEyLjItNDQgMzItNTUuNEwyMjQuMy0yLjV6bTIwNy44IDM2MGwwLTE2Ni4xLTE0My44IDgzIDAgMTY2LjEgMTQzLjgtODN6Il19LFdKdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0YXBlIixpY29uOls1NzYsNTEyLFtdLCJmNGRiIiwiTTQxMi44IDQxNmM0MS41LTQwLjcgNjcuMi05Ny4zIDY3LjItMTYwIDAtMTIzLjctMTAwLjMtMjI0LTIyNC0yMjRTMzIgMTMyLjMgMzIgMjU2IDEzMi4zIDQ4MCAyNTYgNDgwbDI4OCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xMzEuMiAwek0yNTYgMTYwYTk2IDk2IDAgMSAxIDAgMTkyIDk2IDk2IDAgMSAxIDAtMTkyem00OCA5NmE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAweiJdfSxHSnQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYm9tYiIsaWNvbjpbNTc2LDUxMixbMTI4MTYzXSwiZjFlMiIsIk00ODAtMTZjNi45IDAgMTMgNC40IDE1LjIgMTAuOWwxMy41IDQwLjQgNDAuNCAxMy41QzU1NS42IDUxIDU2MCA1Ny4xIDU2MCA2NHMtNC40IDEzLTEwLjkgMTUuMmwtNDAuNCAxMy41LTEzLjUgNDAuNEM0OTMgMTM5LjYgNDg2LjkgMTQ0IDQ4MCAxNDRzLTEzLTQuNC0xNS4yLTEwLjlsLTEzLjUtNDAuNC00MC40LTEzLjVDNDA0LjQgNzcgNDAwIDcwLjkgNDAwIDY0czQuNC0xMyAxMC45LTE1LjJsNDAuNC0xMy41IDEzLjUtNDAuNEM0NjctMTEuNiA0NzMuMS0xNiA0ODAtMTZ6TTMyMS40IDk3LjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsODAgODBjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTEwLjkgMTAuOWM3LjkgMjIgMTIuMiA0NS43IDEyLjIgNzAuNSAwIDExNC45LTkzLjEgMjA4LTIwOCAyMDhTMzIgNDE4LjkgMzIgMzA0IDEyNS4xIDk2IDI0MCA5NmMyNC43IDAgNDguNSA0LjMgNzAuNSAxMi4zbDEwLjktMTAuOXpNMTQ0IDMwNGMwLTUzIDQzLTk2IDk2LTk2IDEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0Yy03OS41IDAtMTQ0IDY0LjUtMTQ0IDE0NCAwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0eiJdfSxMeGU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic2NhbGUtdW5iYWxhbmNlZCIsaWNvbjpbNjQwLDUxMixbImJhbGFuY2Utc2NhbGUtbGVmdCJdLCJmNTE1IiwiTTUxOS44IDYyLjRjMTYuOC01LjYgMjUuOC0yMy43IDIwLjItNDAuNVM1MTYuMy0zLjkgNDk5LjYgMS42bC0xMTMgMzcuN2MtMTMuOS0yMy41LTM5LjYtMzkuMy02OC45LTM5LjMtNDQuMiAwLTgwIDM1LjgtODAgODAgMCAzIC4yIDUuOSAuNSA4LjhMMTE1LjYgMTI5LjZjLTE2LjggNS42LTI1LjggMjMuNy0yMC4yIDQwLjVzMjMuNyAyNS44IDQwLjUgMjAuMmwxMzUuNS00NS4yYzQuNSAzLjIgOS4zIDUuOSAxNC40IDguMmwwIDMyNi43YzAgMTcuNyAxNC4zIDMyIDMyIDMybDE5MiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xNjAgMCAwLTI5NC43YzIxLTkuMiAzNy4yLTI3IDQ0LjItNDlsMTI1LjktNDJ6TTQzNy4zIDI4OGw3Mi40LTEyNC4yIDcyLjQgMTI0LjItMTQ0LjkgMHptNzIuNCA5NmM2Mi45IDAgMTE1LjItMzQgMTI2LTc4LjkgMi42LTExLTEtMjIuMy02LjctMzIuMUw1MzMuOCAxMDkuOGMtNS04LjYtMTQuMi0xMy44LTI0LjEtMTMuOHMtMTkuMSA1LjMtMjQuMSAxMy44TDM5MC40IDI3My4xYy01LjcgOS44LTkuMyAyMS4xLTYuNyAzMi4xIDEwLjggNDQuOCA2My4xIDc4LjkgMTI2IDc4Ljl6TTEyNi44IDI5MS44bDcyLjQgMTI0LjItMTQ0LjkgMCA3Mi40LTEyNC4yek0uOSA0MzMuMUMxMS43IDQ3OCA2NCA1MTIgMTI2LjggNTEyczExNS4yLTM0IDEyNi03OC45YzIuNi0xMS0xLTIyLjMtNi43LTMyLjFMMTUwLjkgMjM3LjhjLTUtOC42LTE0LjItMTMuOC0yNC4xLTEzLjhzLTE5LjEgNS4zLTI0LjEgMTMuOEw3LjYgNDAxLjFjLTUuNyA5LjgtOS4zIDIxLjEtNi43IDMyLjF6Il19LEtKdD1MeGUsRXhlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNxdWFyZS1jYXJldC1sZWZ0IixpY29uOls0NDgsNTEyLFsiY2FyZXQtc3F1YXJlLWxlZnQiXSwiZjE5MSIsIk0wIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2ek0xMjggMjU2YzAtNi43IDIuOC0xMyA3LjctMTcuNmwxMTItMTA0YzctNi41IDE3LjItOC4yIDI1LjktNC40UzI4OCAxNDIuNSAyODggMTUybDAgMjA4YzAgOS41LTUuNyAxOC4yLTE0LjQgMjJzLTE4LjkgMi4xLTI1LjktNC40bC0xMTItMTA0Yy00LjktNC41LTcuNy0xMC45LTcuNy0xNy42eiJdfSxZSnQ9RXhlLFpKdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJydWxlciIsaWNvbjpbNTc2LDUxMixbMTI4MjA3XSwiZjU0NSIsIk0yMDkuMSA1MTYuMmMtMTguNyAxOC43LTQ5LjEgMTguNy02Ny45IDBMMjguMSA0MDMuMWMtMTguNy0xOC43LTE4LjctNDkuMSAwLTY3LjlsMTctMTcgNzMuNSA3My41YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtNzMuNS03My41IDMzLjktMzMuOSA1MC45IDUwLjljOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC01MC45LTUwLjkgMzMuOS0zMy45IDczLjUgNzMuNWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTczLjUtNzMuNSAzMy45LTMzLjkgNTAuOSA1MC45YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtNTAuOS01MC45IDMzLjktMzMuOSA3My41IDczLjVjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC03My41LTczLjUgMTctMTdjMTguNy0xOC43IDQ5LjEtMTguNyA2Ny45IDBMNTQ4LjUgMTA4LjljMTguNyAxOC43IDE4LjcgNDkuMSAwIDY3LjlMMjA5LjEgNTE2LjJ6Il19LFhKdD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJpIixpY29uOlszMjAsNTEyLFsxMDVdLCI0OSIsIk0zMiAzMkMxNC4zIDMyIDAgNDYuMyAwIDY0UzE0LjMgOTYgMzIgOTZsOTYgMCAwIDMyMC05NiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDI1NiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC05NiAwIDAtMzIwIDk2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMMzIgMzJ6Il19LE1vZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ2b2x1bWUteG1hcmsiLGljb246WzU3Niw1MTIsWyJ2b2x1bWUtbXV0ZSIsInZvbHVtZS10aW1lcyJdLCJmNmE5IiwiTTQ4IDM1Mmw0OCAwIDEzNC4xIDExOS4yYzYuNCA1LjcgMTQuNiA4LjggMjMuMSA4LjggMTkuMiAwIDM0LjgtMTUuNiAzNC44LTM0LjhsMC0zNzguNGMwLTE5LjItMTUuNi0zNC44LTM0LjgtMzQuOC04LjUgMC0xNi43IDMuMS0yMy4xIDguOEw5NiAxNjAgNDggMTYwYy0yNi41IDAtNDggMjEuNS00OCA0OGwwIDk2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4ek0zNjcgMTc1Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWw0NyA0Ny00NyA0N2MtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDQ3LTQ3IDQ3IDQ3YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtNDctNDcgNDctNDdjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtNDcgNDctNDctNDdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAweiJdfSxRSnQ9TW9lLEpKdD1Nb2UsZWVhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImFyY2h3YXkiLGljb246WzUxMiw1MTIsW10sImY1NTciLCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NFMxNC4zIDk2IDMyIDk2bDQ0OCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDMyIDMyem0wIDM4NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwxMjggMCAwLTEyOGMwLTUzIDQzLTk2IDk2LTk2czk2IDQzIDk2IDk2bDAgMTI4IDEyOCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybDAtMjcyLTQ0OCAwIDAgMjcyeiJdfSxQeGU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGVyc29uLWRpZ2dpbmciLGljb246WzU3Niw1MTIsWyJkaWdnaW5nIl0sImY4NWUiLCJNMjA4IDQwYTU2IDU2IDAgMSAxIDExMiAwIDU2IDU2IDAgMSAxIC0xMTIgMHpNMTAuNSAxODEuM2M1LjktMTEuOSAyMC4zLTE2LjcgMzIuMi0xMC43bDI0LjYgMTIuMyAxMi4yLTIwLjRjMTguOS0zMS41IDUzLjItNTAuNSA4OS42LTUwLjUgNDYuMiAwIDg3LjcgMzAuNSAxMDAuNSA3NS40bDMyLjIgMTEyLjcgOTIuOSA0Ni40IDI1LjgtNDNjNS44LTkuNiAxNi4yLTE1LjUgMjcuNC0xNS41czIxLjcgNS45IDI3LjQgMTUuNWw5NiAxNjBjNS45IDkuOSA2LjEgMjIuMiAuNCAzMi4yUzU1NS41IDUxMiA1NDQgNTEybC0xOTIgMGMtMTEuNSAwLTIyLjItNi4yLTI3LjgtMTYuMnMtNS41LTIyLjMgLjQtMzIuMkwzNzAgMzg3LjggMjEuMyAyMTMuNWMtMTEuOS01LjktMTYuNy0yMC4zLTEwLjctMzIuMnpNOTQuMyAzMDcuNGwxMTIgNTZjMTAuOCA1LjQgMTcuNyAxNi41IDE3LjcgMjguNmwwIDg4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtNjguMi02MS4zLTMwLjctMzYuMyAxMDljLTUuNiAxNi44LTIzLjcgMjUuOC00MC41IDIwLjJTLTMuOSA0ODYuNiAxLjcgNDY5LjlsNDgtMTQ0YzIuOS04LjggOS41LTE1LjkgMTguMS0xOS40czE4LjMtMy4yIDI2LjYgLjl6Il19LHRlYT1QeGUsem9lPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImdhdWdlLWhpZ2giLGljb246WzUxMiw1MTIsWzYyNDYxLCJ0YWNob21ldGVyLWFsdCIsInRhY2hvbWV0ZXItYWx0LWZhc3QiXSwiZjYyNSIsIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwIDI1NiAyNTYgMCAxIDEgLTUxMiAwek0yODggOTZhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMjU2IDQxNmMzNS4zIDAgNjQtMjguNyA2NC02NCAwLTE2LjItNi0zMS4xLTE2LTQyLjNsNjkuNS0xMzguOWM1LjktMTEuOSAxLjEtMjYuMy0xMC43LTMyLjJzLTI2LjMtMS4xLTMyLjIgMTAuN0wyNjEuMSAyODguMmMtMS43LS4xLTMuNC0uMi01LjEtLjItMzUuMyAwLTY0IDI4LjctNjQgNjRzMjguNyA2NCA2NCA2NHpNMTc2IDE0NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek05NiAyODhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0zNTItMzJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHoiXX0sYWVhPXpvZSxzZWE9em9lLGllYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJnZW5kZXJsZXNzIixpY29uOlszODQsNTEyLFtdLCJmMjJkIiwiTTE5MiAxMjhhMTI4IDEyOCAwIDEgMSAwIDI1NiAxMjggMTI4IDAgMSAxIDAtMjU2em0wIDMyMGExOTIgMTkyIDAgMSAwIDAtMzg0IDE5MiAxOTIgMCAxIDAgMCAzODR6Il19LHJlYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjbG91ZC1zdW4iLGljb246WzY0MCw1MTIsWzk5MjVdLCJmNmM0IiwiTTIwOC4zIDE5MmM0My4xIDAgODAuNSAyNC40IDk5LjIgNjAuMSAxNC43LTE3LjIgMzYuNC0yOC4xIDYwLjgtMjguMSA0NC4yIDAgODAgMzUuOCA4MCA4MCAwIDUuNS0uNiAxMC45LTEuNiAxNiAuNSAwIDEuMSAwIDEuNiAwIDUzIDAgOTYgNDMgOTYgOTZzLTQzIDk2LTk2IDk2bC0zMjAgMGMtNTMgMC05Ni00My05Ni05NiAwLTQyLjUgMjcuNy03OC41IDY2LTkxLjItMS4zLTYuOC0yLTEzLjctMi0yMC44IDAtNjEuOSA1MC4xLTExMiAxMTItMTEyem0xOTItMjIzLjhjNS4zIDAgMTAuMyAyLjcgMTMuMyA3LjFsNDcuMyA3MC40IDgzLjMtMTYuM2M1LjItMSAxMC42IC43IDE0LjMgNC40IDMuOCAzLjggNS40IDkuMiA0LjQgMTQuNGwtMTYuMyA4My4zIDcwLjQgNDcuM2M0LjQgMyA3LjEgOCA3LjEgMTMuMyAwIDUuMy0yLjYgMTAuMy03IDEzLjJsLTcwLjQgNDcuMyAxNC41IDc0LjJjLTE3LjItMjEuNy00MC40LTM4LjQtNjcuMi00Ny4zLTIuNS0xMi43LTYuOS0yNC42LTEyLjgtMzUuNyA5LjYtMTQuOSAxNS4yLTMyLjcgMTUuMi01MS43IDAtNTMtNDMtOTYtOTYtOTYtNDcuOSAwLTg3LjYgMzUuMS05NC44IDgwLjktMjAuOS0xNi00NS45LTI3LTczLjEtMzEuMWwyMS41LTE0LjUtMTYuMy04My4yLS4zLTJjLS4zLTQuNiAxLjMtOS4xIDQuNi0xMi40IDMuOC0zLjggOS4yLTUuNCAxNC40LTQuNGw4My4zIDE2LjMgNDcuMy03MC40IDEuMi0xLjZjMy0zLjUgNy40LTUuNSAxMi4xLTUuNXptMCAxNzUuOGMyNi41IDAgNDggMjEuNSA0OCA0OCAwIDMuOC0uNSA3LjYtMS40IDExLjEtMjEuNy0xNi45LTQ4LjktMjcuMS03OC42LTI3LjEtNC42IDAtOS4xIC4yLTEzLjUgLjcgNi40LTE5IDI0LjMtMzIuNyA0NS41LTMyLjd6Il19LFhiPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImFycm93LXJpZ2h0IixpY29uOls1MTIsNTEyLFs4NTk0XSwiZjA2MSIsIk01MDIuNiAyNzguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtMTYwLTE2MGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNMNDAyLjcgMjI0IDMyIDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzNzAuNyAwLTEwNS40IDEwNS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDE2MC0xNjB6Il19LENvZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoYW5kc2hha2UiLGljb246WzU3Niw1MTIsWzEyOTMwOSw2MjY2MiwiaGFuZHNoYWtlLWFsdCIsImhhbmRzaGFrZS1zaW1wbGUiXSwiZjJiNSIsIk0yNjguOSA4NS4yTDE1Mi4zIDIxNC44Yy00LjYgNS4xLTQuNCAxMyAuNSAxNy45IDMwLjUgMzAuNSA4MCAzMC41IDExMC41IDBsMzEuOC0zMS44YzQuMi00LjIgOS41LTYuNSAxNC45LTYuOSA2LjgtLjYgMTMuOCAxLjcgMTkgNi45TDUwNS42IDM3NiA1NzYgMzIwIDU3NiAzMiA0NjQgOTYgNDQwLjIgODAuMUM0MjQuNCA2OS42IDQwNS45IDY0IDM4Ni45IDY0bC03MC40IDBjLTEuMSAwLTIuMyAwLTMuNCAuMS0xNi45IC45LTMyLjggOC41LTQ0LjIgMjEuMXpNMTE2LjYgMTgyLjdMMjIzLjQgNjQgMTgzLjggNjRjLTI1LjUgMC00OS45IDEwLjEtNjcuOSAyOC4xTDExMiA5NiAwIDMyIDAgMzIwIDE1Ni40IDQ1MC4zYzIzIDE5LjIgNTIgMjkuNyA4MS45IDI5LjdsMTUuNyAwLTctN2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDQxIDQxIDkgMGMxOS4xIDAgMzcuOC00LjMgNTQuOC0xMi4zTDM1OSA0NDFjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGwzMiAzMiAxNy41LTE3LjVjOC45LTguOSAxMS41LTIxLjggNy42LTMzLjFsLTEzNy45LTEzNi44LTE0LjkgMTQuOWMtNDkuMyA0OS4zLTEyOS4xIDQ5LjMtMTc4LjQgMC0yMy0yMy0yMy45LTU5LjktMi4yLTg0eiJdfSxvZWE9Q29lLG5lYT1Db2UsSXhlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBlcnNvbi1za2lpbmciLGljb246WzU3Niw1MTIsWzk5NzUsInNraWluZyJdLCJmN2M5IiwiTTQxNiA1NmE1NiA1NiAwIDEgMSAxMTIgMCA1NiA1NiAwIDEgMSAtMTEyIDB6TTIuNyAzMDAuOWM2LjEtMTEuOCAyMC42LTE2LjMgMzIuNC0xMC4ybDE5Ny44IDEwMi43IDYyLjMtODcuMi04Mi05Mi4yYy0xMS0xMi40LTE2LjItMjcuNS0xNi4yLTQyLjRsMTExLjYgNTMuNCA0Mi45IDQ4LjJjMTQuOSAxNi43IDE2LjIgNDEuNiAzLjIgNTkuOGwtNjQuNCA5MC4yIDEyOC4zIDY2LjZjMTMuNiA3LjEgMjkuOCA3LjIgNDMuNiAuM2wxNS4yLTcuNmMxMS45LTUuOSAyNi4zLTEuMSAzMi4yIDEwLjdzMS4xIDI2LjMtMTAuNyAzMi4ybC0xNS4yIDcuNmMtMjcuNSAxMy43LTU5LjkgMTMuNS04Ny4yLS43TDEyLjkgMzMzLjNDMS4yIDMyNy4yLTMuNCAzMTIuNyAyLjcgMzAwLjl6TTEwMyA0OS42bDE4IDguNyA4LjctMTcuNGM0LTcuOSAxMy42LTExLjEgMjEuNS03LjJzMTEuMSAxMy42IDcuMiAyMS41bC04LjUgMTcgODQuOCA0MSAuNC0uMiA3Ni4xLTMzLjhjMzEuMy0xMy45IDY3LjktLjcgODMuMiAyOS45bDI4LjkgNTcuOCA2OC43IDI3LjVjMTYuNCA2LjYgMjQuNCAyNS4yIDE3LjggNDEuNnMtMjUuMiAyNC40LTQxLjYgMTcuOEwzOTMuOCAyMjRjLTEwLjktNC40LTE5LjgtMTIuNi0yNS4xLTIzLjFsLTExLjUtMjMuMWMtMTYuNCA5LjQtMjUuOSAxNC44LTI4LjUgMTYuM2wtNy42LTMuNy0xODUuNi04OS42LTkuMiAxOC4zYy00IDcuOS0xMy42IDExLjEtMjEuNSA3LjJzLTExLjEtMTMuNi03LjItMjEuNWw5LTE3LjktMTcuNi04LjVDODEuMSA3NC42IDc3LjggNjUgODEuNiA1N1M5NSA0NS43IDEwMyA0OS42eiJdfSxsZWE9SXhlLGNlYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJicmlkZ2Utd2F0ZXIiLGljb246WzY0MCw1MTIsW10sImU0Y2UiLCJNNjQgNjRsNTEyIDAgMCAxMTJjLTM3LjYgOS40LTY0IDQzLjItNjQgODJsMCA3Ni40Yy0yMS05LjctNDMuNS0xNC41LTY2LTE0LjQtMTAgLjEtMjAuMSAxLjEtMzAgMy4xbDAtMzUuMWMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NmwwIDMyLjdjLTUuMy0uNS0xMC43LS44LTE2LS43LTI3LjcgLjItNTUuNCA3LjgtODAgMjNsMC04NWMwLTM4LjgtMjYuNC03Mi42LTY0LTgyTDY0IDY0ek00MDMuNCA0NDQuMUMzNzkuMSA0NjIuMyAzNTEuMSA0ODAgMzIwIDQ4MHMtNTkuMS0xNy43LTgzLjQtMzUuOWMtMjEuMy0xNi4xLTQ5LjktMTYuMS03MS4yIDAtMjMuOCAxNy45LTU0LjEgMzUuNS04OC4xIDM1LjMtMjAuNC0uMS00MC43LTYuNy01OS44LTIxLjEtMTAuNi04LTEyLjctMjMtNC43LTMzLjZzMjMtMTIuNyAzMy42LTQuN2MxMS4zIDguNSAyMS42IDExLjQgMzEuMiAxMS41IDE3LjYgLjEgMzcuMy05LjQgNTguOS0yNS43IDM4LjQtMjkgOTAuNS0yOSAxMjkgMCAyNCAxOC4xIDQwLjcgMjYuMyA1NC41IDI2LjNzMzAuNS04LjIgNTQuNS0yNi4zYzM4LjQtMjkgOTAuNS0yOSAxMjkgMCAxNi45IDEyLjcgMzIuOSAyMS41IDQ3LjggMjQuNiAxMy43IDIuOCAyNy40IC45IDQyLjMtMTAuMyAxMC42LTggMjUuNi01LjkgMzMuNiA0LjdzNS45IDI1LjYtNC43IDMzLjZjLTI2LjQgMTkuOS01NC4yIDI0LjQtODAuNyAxOS4xLTI1LjMtNS4xLTQ4LjEtMTguOS02Ny4yLTMzLjMtMjEuMy0xNi4xLTQ5LjktMTYuMS03MS4yIDB6Il19LGRlYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJidWlsZGluZy1uZ28iLGljb246WzU3Niw1MTIsW10sImU0ZDciLCJNMTI4IDBDOTIuNyAwIDY0IDI4LjcgNjQgNjRsMCAzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRsNDggMCAwLTExMmMwLTM1LjMgMjguNy02NCA2NC02NGwyMDggMCAwLTI3MmMwLTM1LjMtMjguNy02NC02NC02NEwxMjggMHptMzIgMTEyYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJ6TTMwNCA5NmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2ek0xNjAgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJ6bTE0NC0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2ek01MjAgMzgwYy0yNC4zIDAtNDQgMTkuNy00NCA0NGwwIDgwYzAgMjQuMyAxOS43IDQ0IDQ0IDQ0bDE2IDBjMjQuMyAwIDQ0LTE5LjcgNDQtNDRsMC04MGMwLTI0LjMtMTkuNy00NC00NC00NGwtMTYgMHptLTQgNDRjMC0yLjIgMS44LTQgNC00bDE2IDBjMi4yIDAgNCAxLjggNCA0bDAgODBjMCAyLjItMS44IDQtNCA0bC0xNiAwYy0yLjIgMC00LTEuOC00LTRsMC04MHptLTE2OCAwbDAgODBjMCAyNC4zIDE5LjcgNDQgNDQgNDRsMTYgMGMyNC4zIDAgNDQtMTkuNyA0NC00NGwwLTI0YzAtMTEtOS0yMC0yMC0yMGwtOCAwYy0xMSAwLTIwIDktMjAgMjAgMCA2LjUgMy4xIDEyLjQgOCAxNmwwIDhjMCAyLjItMS44IDQtNCA0bC0xNiAwYy0yLjIgMC00LTEuOC00LTRsMC04MGMwLTIuMiAxLjgtNCA0LTRsMjAuNCAwYzEuOSA5LjEgOS45IDE2IDE5LjYgMTYgMTEgMCAyMC05IDIwLTIwIDAtMTkuOS0xNi4xLTM2LTM2LTM2bC0yNCAwYy0yNC4zIDAtNDQgMTkuNy00NCA0NHptLTkwLjEtMzIuOWMtNC4xLTguMy0xMy41LTEyLjctMjIuNS0xMC41UzIyMCAzOTAuNyAyMjAgNDAwbDAgMTI4YzAgMTEgOSAyMCAyMCAyMHMyMC05IDIwLTIwbDAtNDMuMyAyNi4xIDUyLjJjNC4xIDguMyAxMy41IDEyLjcgMjIuNSAxMC41UzMyNCA1MzcuMyAzMjQgNTI4bDAtMTI4YzAtMTEtOS0yMC0yMC0yMHMtMjAgOS0yMCAyMGwwIDQzLjMtMjYuMS01Mi4yeiJdfSx1ZWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaWdsb28iLGljb246WzU3Niw1MTIsW10sImY3YWUiLCJNMzIwIDMzLjhsMCAxMjYuMi0yNzEuNSAwYzUxLjctNzcuMiAxMzkuNi0xMjggMjM5LjUtMTI4IDEwLjggMCAyMS41IC42IDMyIDEuOHpNMzY4IDE2MGwwLTExNi43YzY2IDE5IDEyMi4yIDYxIDE1OS41IDExNi43TDM2OCAxNjB6TTIyLjYgMjA4bDczLjQgMCAwIDExMi05NiAwYzAtMzkuNyA4LTc3LjYgMjIuNi0xMTJ6TTE3NiAzMjBsLTMyIDAgMC0xMTIgMjg4IDAgMCAxMTItMzIgMCAwIDQ4IDE3NiAwIDAgNjRjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNDgwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTY0IDE3NiAwIDAtNDh6bTMwNCAwbDAtMTEyIDczLjQgMEM1NjggMjQyLjQgNTc2IDI4MC4zIDU3NiAzMjBsLTk2IDB6TTI4OCAyODhjLTM1LjMgMC02NCAyOC43LTY0IDY0bDAgODAgMTI4IDAgMC04MGMwLTM1LjMtMjguNy02NC02NC02NHoiXX0sQXhlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNpcmNsZS1kb2xsYXItdG8tc2xvdCIsaWNvbjpbNTc2LDUxMixbImRvbmF0ZSJdLCJmNGI5IiwiTTk2IDIyNGExOTIgMTkyIDAgMSAxIDM4NCAwIDE5MiAxOTIgMCAxIDEgLTM4NCAwem0xNzYtOTJsMCA0Yy0yOC44IC4zLTUyIDIzLjctNTIgNTIuNSAwIDI1LjcgMTguNSA0Ny42IDQzLjkgNTEuOGw0MS43IDdjNiAxIDEwLjQgNi4yIDEwLjQgMTIuMyAwIDYuOS01LjYgMTIuNS0xMi41IDEyLjVMMjQ4IDI3MmMtMTEgMC0yMCA5LTIwIDIwczkgMjAgMjAgMjBsMjQgMCAwIDRjMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjBsMC00LjdjMjUtNC4xIDQ0LTI1LjcgNDQtNTEuOCAwLTI1LjctMTguNS00Ny42LTQzLjktNTEuOGwtNDEuNy03Yy02LTEtMTAuNC02LjItMTAuNC0xMi4zIDAtNi45IDUuNi0xMi41IDEyLjUtMTIuNWw0Ny41IDBjMTEgMCAyMC05IDIwLTIwcy05LTIwLTIwLTIwbC04IDAgMC00YzAtMTEtOS0yMC0yMC0yMHMtMjAgOS0yMCAyMHpNNDggMzQ0bDAgMTA0YzAgOC44IDcuMiAxNiAxNiAxNmw0NDggMGM4LjggMCAxNi03LjIgMTYtMTZsMC0xMDRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDEwNGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgMzQ0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6Il19LHBlYT1BeGUsaGVhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InkiLGljb246WzM4NCw1MTIsWzEyMV0sIjU5IiwiTTU4IDQ1LjRDNDcuOCAzMSAyNy44IDI3LjcgMTMuNCAzOFMtNC4zIDY4LjIgNiA4Mi42TDE2MCAyOTguMyAxNjAgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xNDkuNyAxNTQtMjE1LjdjMTAuMy0xNC40IDYuOS0zNC40LTcuNC00NC42UzMzNi4yIDMxIDMyNiA0NS40TDE5MiAyMzIuOSA1OCA0NS40eiJdfSxOeGU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmFjZS1zbWlsZS13aW5rIixpY29uOls1MTIsNTEyLFsxMjg1MjEsInNtaWxlLXdpbmsiXSwiZjRkYSIsIk0yNTYgNTEyYTI1NiAyNTYgMCAxIDAgMC01MTIgMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTY1LjQgMzIxLjljMjAuNCAyOCA1My40IDQ2LjEgOTAuNiA0Ni4xczcwLjItMTguMSA5MC42LTQ2LjFjNy44LTEwLjcgMjIuOC0xMy4xIDMzLjUtNS4zczEzLjEgMjIuOCA1LjMgMzMuNUMzNTYuMyAzOTAgMzA5LjIgNDE2IDI1NiA0MTZzLTEwMC4zLTI2LTEyOS40LTY1LjljLTcuOC0xMC43LTUuNC0yNS43IDUuMy0zMy41czI1LjctNS40IDMzLjUgNS4zek0xNDQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE2NCA4YzAgMTEtOSAyMC0yMCAyMHMtMjAtOS0yMC0yMGMwLTMzLjEgMjYuOS02MCA2MC02MGwxNiAwYzMzLjEgMCA2MCAyNi45IDYwIDYwIDAgMTEtOSAyMC0yMCAyMHMtMjAtOS0yMC0yMC05LTIwLTIwLTIwbC0xNiAwYy0xMSAwLTIwIDktMjAgMjB6Il19LGZlYT1OeGUsbWVhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImRpY2UtZm91ciIsaWNvbjpbNDQ4LDUxMixbOTg1OV0sImY1MjQiLCJNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwzMjAgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZ6bTE2MCA2NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek0xMjggMzg0YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpNMzUyIDE2MGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek0zMjAgMzg0YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHoiXX0sUnhlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZhY2UtZ3Jpbi1zcXVpbnQtdGVhcnMiLGljb246WzU3Niw1MTIsWzEyOTMxNSwiZ3Jpbi1zcXVpbnQtdGVhcnMiXSwiZjU4NiIsIk01NjAgMzUuNGMwIDI1LjYtMTguOCA0Ny4zLTQ0LjEgNTAuOUw0NjkuMSA5M2MtMTAuNiAxLjUtMTkuNi03LjUtMTguMS0xOC4xbDYuNy00Ni43QzQ2MS4zIDIuOCA0ODMtMTYgNTA4LjYtMTYgNTM3LTE2IDU2MCA3IDU2MCAzNS40ek00MDMuNSA2OC4xYy02IDQyLjIgMzAuMiA3OC40IDcyLjQgNzIuNGwzNy44LTUuNEM1NjUuNyAyMzIgNTUwLjggMzU1LjMgNDY5IDQzN3MtMjA1IDk2LjYtMzAxLjkgNDQuN2w1LjQtMzcuOGM2LTQyLjItMzAuMi03OC40LTcyLjQtNzIuNGwtMzcuOCA1LjRDMTAuMyAyODAgMjUuMiAxNTYuNyAxMDcgNzVTMzEyLTIxLjcgNDA4LjkgMzAuM2wtNS40IDM3Ljh6TTQxNy44IDIwMWMtMTkuMSAzNi40LTQ1LjYgNzIuNy03OC45IDEwNnMtNjkuNiA1OS44LTEwNiA3OC45Yy0xMS4xIDUuOC0xMi40IDIxLjQtMS4xIDI2LjYgNTkuMiAyNy41IDEzMS44IDE2LjggMTgwLjYtMzJzNTkuNS0xMjEuNCAzMi0xODAuNmMtNS4zLTExLjMtMjAuOC0xMC0yNi42IDEuMXpNMTEzLjkgMjcwLjZjMS43IDggOSAxMy40IDE3LjEgMTIuN2w0My4xLTMuOS0zLjkgNDMuMWMtLjcgOC4xIDQuNyAxNS41IDEyLjcgMTcuMXMxNS45LTIuOSAxOC40LTEwLjZsMjgtODQuNmMxLjktNS43IC40LTEyLjEtMy45LTE2LjNzLTEwLjYtNS44LTE2LjMtMy45bC04NC42IDI4Yy03LjcgMi42LTEyLjMgMTAuNS0xMC42IDE4LjV6TTMxNS4yIDk5LjFjLjctOC4xLTQuNy0xNS41LTEyLjctMTcuMXMtMTUuOSAyLjktMTguNSAxMC42bC0yOCA4NC42Yy0xLjkgNS43LS40IDEyLjEgMy45IDE2LjNzMTAuNiA1LjggMTYuMyAzLjlsODQuNi0yOGM3LjctMi42IDEyLjMtMTAuNSAxMC42LTE4LjRzLTktMTMuNC0xNy4xLTEyLjdsLTQzLjEgMy45IDMuOS00My4xek02MC4xIDQyNS43bDQ2LjctNi43YzEwLjYtMS41IDE5LjYgNy41IDE4LjEgMTguMWwtNi43IDQ2LjdDMTE0LjcgNTA5LjIgOTMgNTI4IDY3LjQgNTI4IDM5IDUyOCAxNiA1MDUgMTYgNDc2LjYgMTYgNDUxIDM0LjggNDI5LjMgNjAuMSA0MjUuN3oiXX0sZ2VhPVJ4ZSxiZWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmlsZS1hdWRpbyIsaWNvbjpbMzg0LDUxMixbXSwiZjFjNyIsIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEwyMTMuNSAwYzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43TDM2NS4zIDEyNS4zYzEyIDEyIDE4LjcgMjguMyAxOC43IDQ1LjNMMzg0IDQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgNjR6bTIwOC01LjVsMCA5My41YzAgMTMuMyAxMC43IDI0IDI0IDI0TDMyNS41IDE3NiAyMDggNTguNXptNTMuOCAxODUuMmMtOS4xLTYuMy0yMS41LTQuMS0yNy44IDVzLTQuMSAyMS41IDUgMjcuOGMyMy45IDE2LjcgMzkuNCA0NC4zIDM5LjQgNzUuNXMtMTUuNiA1OC45LTM5LjQgNzUuNWMtOS4xIDYuMy0xMS4zIDE4LjgtNSAyNy44czE4LjggMTEuMyAyNy44IDVjMzQuMS0yMy44IDU2LjYtNjMuNSA1Ni42LTEwOC4zUzI5NiAyNjcuNSAyNjEuOCAyNDMuN3pNODAgMzEyYy04LjggMC0xNiA3LjItMTYgMTZsMCA0OGMwIDguOCA3LjIgMTYgMTYgMTZsMjQgMCAyNy4yIDM0YzMgMy44IDcuNiA2IDEyLjUgNmwuMyAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTEyOGMwLTguOC03LjItMTYtMTYtMTZsLS4zIDBjLTQuOSAwLTkuNSAyLjItMTIuNSA2bC0yNy4yIDM0LTI0IDB6bTEyOCA3Mi4yYzAgMTAuNyAxMC41IDE4LjIgMTguOSAxMS42IDEyLjktMTAuMyAyMS4xLTI2LjEgMjEuMS00My44cy04LjItMzMuNS0yMS4xLTQzLjhjLTguNC02LjctMTguOSAuOS0xOC45IDExLjZsMCA2NC41eiJdfSx2ZWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYXJyb3dzLWRvd24tdG8tbGluZSIsaWNvbjpbNTEyLDUxMixbXSwiZTRiOCIsIk0yMTQuNiAzMTAuNmwtNjQgNjRjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwbC02NC02NGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMEw5NiAyNzQuNyA5NiAzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgMjQyLjcgOS40LTkuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zem0yNTYgMGwtNjQgNjRjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwbC02NC02NGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMGw5LjQgOS40IDAtMjQyLjdjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDI0Mi43IDkuNC05LjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBzMTIuNSAzMi44IDAgNDUuM3pNMzIgNTEyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDQ0OCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDMyIDUxMnoiXX0seGVhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImciLGljb246WzQ0OCw1MTIsWzEwM10sIjQ3IiwiTTIyNCA5NkMxMzUuNiA5NiA2NCAxNjcuNiA2NCAyNTZzNzEuNiAxNjAgMTYwIDE2MGM3Ny40IDAgMTQyLTU1IDE1Ni44LTEyOEwyNTYgMjg4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDE0NCAwYzI1LjggMCA0OS42IDIxLjQgNDcuMiA1MC42LTkuNSAxMTUtMTA1LjggMjA1LjQtMjIzLjIgMjA1LjQtMTIzLjcgMC0yMjQtMTAwLjMtMjI0LTIyNFMxMDAuMyAzMiAyMjQgMzJjNTcuNCAwIDEwOS43IDIxLjYgMTQ5LjMgNTcgMTMuMiAxMS44IDE0LjMgMzIgMi41IDQ1LjJzLTMyIDE0LjMtNDUuMiAyLjVDMzAyLjMgMTExLjQgMjY1IDk2IDIyNCA5NnoiXX0seWVhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InZpaGFyYSIsaWNvbjpbNTc2LDUxMixbXSwiZjZhNyIsIk0yNzMuNi0zLjJjOC41LTYuNCAyMC4zLTYuNCAyOC44IDBMNDQzLjIgMTAyLjRjOC4zIDYuMiAxOC40IDkuNiAyOC44IDkuNiAxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMjQgMCAwIDQ4IDU4LjcgNjQgMTMuMyAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC04IDAgMCA0OCAyNC40IDMyIDE1LjYgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtNDAgMCAwIDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMzItMTI4IDAgMCAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTMyLTEyOCAwIDAgMzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0zMi00MCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDIyLjEgMCAxNy45LTMyIDAtNDgtOCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDEzLjMgMCA1OC43LTY0IDAtNDgtMjQgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGMxMC40IDAgMjAuNS0zLjQgMjguOC05LjZMMjczLjYtMy4yek0xMjggMzY4bDMyMCAwIDAtNDgtMzIwIDAgMCA0OHpNMzg0IDE2MGwtMTkyIDAgMCA0OCAxOTIgMCAwLTQ4eiJdfSx3ZWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmxhZy1jaGVja2VyZWQiLGljb246WzQ0OCw1MTIsWzEyNzkzN10sImYxMWUiLCJNMzIgMEM0OS43IDAgNjQgMTQuMyA2NCAzMmwwIDE2IDY5LTE3LjJjMzguMS05LjUgNzguMy01LjEgMTEzLjUgMTIuNSA0Ni4zIDIzLjIgMTAwLjggMjMuMiAxNDcuMSAwbDkuNi00LjhDNDIzLjggMjguMSA0NDggNDMuMSA0NDggNjYuMWwwIDI3OS43YzAgMTMuMy04LjMgMjUuMy0yMC44IDMwbC0zNC43IDEzYy00Ni4yIDE3LjMtOTcuNiAxNC42LTE0MS43LTcuNC0zNy45LTE5LTgxLjQtMjMuNy0xMjIuNS0xMy40TDY0IDM4NCA2NCA0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJTMCA0OTcuNyAwIDQ4MEwwIDMyQzAgMTQuMyAxNC4zIDAgMzIgMHpNNjQgMTg3LjFsNjQtMTMuOSAwIDY1LjUtNjQgMTMuOSAwIDY1LjUgNDguOC0xMi4yYzUuMS0xLjMgMTAuMS0yLjQgMTUuMi0zLjNsMC02My45IDM4LjktOC40YzguMy0xLjggMTYuNy0yLjUgMjUuMS0yLjFsMC02NGMxMy42IC40IDI3LjIgMi42IDQwLjQgNi40bDIzLjYgNi45IDAgNjYuNy00MS43LTEyLjNjLTcuMy0yLjEtMTQuOC0zLjQtMjIuMy0zLjhsMCA3MS40YzIxLjggMS45IDQzLjMgNi43IDY0IDE0LjRsMC02OS44IDIyLjcgNi43YzEzLjUgNCAyNy4zIDYuNCA0MS4zIDcuNGwwLTY0LjJjLTcuOC0uOC0xNS42LTIuMy0yMy4yLTQuNWwtNDAuOC0xMiAwLTYyYy0xMy0zLjgtMjUuOC04LjgtMzguMi0xNS04LjItNC4xLTE2LjktNy0yNS44LTguOGwwIDcyLjRjLTEzLS40LTI2IC44LTM4LjcgMy42bC0yNS4zIDUuNSAwLTc1LjItNjQgMTYgMCA3My4xek0zMjAgMzM1LjdjMTYuOCAxLjUgMzMuOS0uNyA1MC02LjhsMTQtNS4yIDAtNzEuNy03LjkgMS44Yy0xOC40IDQuMy0zNy4zIDUuNy01Ni4xIDQuNWwwIDc3LjR6bTY0LTE0OS40bDAtNzAuOGMtMjAuOSA2LjEtNDIuNCA5LjEtNjQgOS4xbDAgNjkuNGMxMy45IDEuNCAyOCAuNSA0MS43LTIuNmwyMi4zLTUuMnoiXX0sVG9lPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImdhdWdlLXNpbXBsZSIsaWNvbjpbNTEyLDUxMixbImdhdWdlLXNpbXBsZS1tZWQiLCJ0YWNob21ldGVyLWF2ZXJhZ2UiXSwiZjYyOSIsIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwIDI1NiAyNTYgMCAxIDEgLTUxMiAwem0zMjAgOTZjMC0yNi45LTE2LjUtNDkuOS00MC01OS4zTDI4MCAxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCAxNzIuN2MtMjMuNSA5LjUtNDAgMzIuNS00MCA1OS4zIDAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjR6Il19LGtlYT1Ub2UsU2VhPVRvZSxPeGU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicmlnaHQtbGVmdCIsaWNvbjpbNTEyLDUxMixbImV4Y2hhbmdlLWFsdCJdLCJmMzYyIiwiTTUwMi42IDE1MC42bC05NiA5NmMtOS4yIDkuMi0yMi45IDExLjktMzQuOSA2LjlTMzUyIDIzNi45IDM1MiAyMjRsMC02NC0zMjAgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJTMTQuMyA5NiAzMiA5NmwzMjAgMCAwLTY0YzAtMTIuOSA3LjgtMjQuNiAxOS44LTI5LjZzMjUuNy0yLjIgMzQuOSA2LjlsOTYgOTZjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjN6bS0zOTcuMyAzNTJsLTk2LTk2Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM2w5Ni05NmM5LjItOS4yIDIyLjktMTEuOSAzNC45LTYuOVMxNjAgMjc1LjEgMTYwIDI4OGwwIDY0IDMyMCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0zMjAgMCAwIDY0YzAgMTIuOS03LjggMjQuNi0xOS44IDI5LjZzLTI1LjcgMi4yLTM0LjktNi45eiJdfSxfZWE9T3hlLE1lYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwaWxscyIsaWNvbjpbNTEyLDUxMixbXSwiZjQ4NCIsIk02NCAxMTJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OGwwIDExMi05NiAwIDAtMTEyek0xNzYgMzY4YzAtNDguNyAxOC4xLTkzLjIgNDgtMTI3bDAtMTI5QzIyNCA1MC4xIDE3My45IDAgMTEyIDBTMCA1MC4xIDAgMTEyTDAgNDAwYzAgNjEuOSA1MC4xIDExMiAxMTIgMTEyIDM3LjMgMCA3MC4zLTE4LjIgOTAuNy00Ni4zLTE3LTI4LjYtMjYuNy02Mi0yNi43LTk3Ljd6bTY0LjcgNjcuNGM0LjYgOC43IDE2LjMgOS43IDIzLjMgMi43TDQzOC4xIDI2NGM3LTcgNi0xOC43LTIuNy0yMy4zLTIwLjEtMTAuNy00My0xNi43LTY3LjQtMTYuNy03OS41IDAtMTQ0IDY0LjUtMTQ0IDE0NCAwIDI0LjMgNiA0Ny4zIDE2LjcgNjcuNHpNMjk3LjkgNDcyYy03IDctNiAxOC43IDIuNyAyMy4zIDIwLjEgMTAuNyA0MyAxNi43IDY3LjQgMTYuNyA3OS41IDAgMTQ0LTY0LjUgMTQ0LTE0NCAwLTI0LjMtNi00Ny4zLTE2LjctNjcuNC00LjYtOC43LTE2LjMtOS43LTIzLjMtMi43TDI5Ny45IDQ3MnoiXX0semVhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImV4cGxvc2lvbiIsaWNvbjpbNTEyLDUxMixbXSwiZTRlOSIsIk0yNTYtMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRsMCA0OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTQ4YzAtMTMuMyAxMC43LTI0IDI0LTI0em0wIDE2MGMxMi40IDAgMjIuNyA5LjQgMjMuOSAyMS43TDI5My40IDI5MS42IDQ2Ny42IDExLjNjNi43LTEwLjcgMjAuNS0xNC41IDMxLjctOC41czE1LjggMTkuNSAxMC42IDMxTDM3Mi44IDMzOC42YzIuMiAyLjMgNC4zIDQuNyA2LjMgNy4xbDk3LjItNTQuN2MxMC41LTUuOSAyMy42LTMuMSAzMC45IDYuNHM2LjMgMjMtMi4yIDMxLjVsLTg3IDg3LTcxLjQgMGMtMTMuMi0zNy4zLTQ4LjctNjQtOTAuNS02NHMtNzcuNCAyNi43LTkwLjUgNjRsLTc5LjYgMC03NS41LTUyLjNDLjYgMzU3LTIuOCAzNDQuMSAyLjQgMzMzLjVzMTcuNC0xNS45IDI4LjctMTIuNGw5Ny4yIDMwLjRjMy0zLjkgNi4xLTcuNiA5LjQtMTEuM0w3NS40IDIzNi4zYy02LjEtMTAuMS0zLjktMjMuMSA1LjEtMzAuN3MyMi4yLTcuNSAzMS4xIC4xTDIxNCAyOTMuNmMxLjUtLjQgMy0uOCA0LjUtMS4xbDEzLjYtMTQyLjdjMS4yLTEyLjMgMTEuNS0yMS43IDIzLjktMjEuN3pNMzIgNDY0bDQ1NiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0TDI0IDUxMmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGw4IDB6Il19LENlYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJhcnJvd3MtZG93bi10by1wZW9wbGUiLGljb246WzUxMiw1MTIsW10sImU0YjkiLCJNMTEzIDE1M2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMMTUgODlDNS43IDc5LjYgNS43IDY0LjQgMTUgNTVTMzkuNiA0NS43IDQ5IDU1TDcyIDc4LjEgNzItOGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0bDAgODYuMSAyMy0yM2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTY0IDY0em0zMjAgMGMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMMzM1IDg5Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsMjMgMjMgMC04Ni4xYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCA4Ni4xIDIzLTIzYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNjQgNjR6TTI1NiAxOTJhNTYgNTYgMCAxIDEgMCAxMTIgNTYgNTYgMCAxIDEgMC0xMTJ6bTAgMTYwYzUzIDAgOTYgNDMgOTYgOTZsMCAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMTI4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMzJjMC01MyA0My05NiA5Ni05NnpNMzIgMjg4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTM1MiAwYTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6TTgwIDM2OGMxNS4zIDAgMjkuNiA0LjMgNDEuOCAxMS44LTYuMyAxNi4yLTkuOCAzMy44LTkuOCA1Mi4ybDAgNDhjMCAxMS40IDIuNCAyMi4yIDYuNyAzMmwtODcuOCAwQzEzLjggNTEyIDAgNDk4LjIgMCA0ODEuMUwwIDQ0OGMwLTQ0LjIgMzUuOC04MCA4MC04MHpNMzkzLjMgNTEyYzQuMy05LjggNi43LTIwLjYgNi43LTMybDAtNDhjMC0xOC40LTMuNS0zNi05LjgtNTIuMiAxMi4yLTcuNSAyNi41LTExLjggNDEuOC0xMS44IDQ0LjIgMCA4MCAzNS44IDgwIDgwbDAgMzMuMWMwIDE3LTEzLjggMzAuOS0zMC45IDMwLjlsLTg3LjggMHoiXX0sVGVhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InVzZXJzLXZpZXdmaW5kZXIiLGljb246WzU3Niw1MTIsW10sImU1OTUiLCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRsMCA3MmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtNzJjMC04LjggNy4yLTE2IDE2LTE2bDcyIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRTMTQ5LjMgMCAxMzYgMEw2NCAwek00NDAgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw3MiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDcyYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC03MmMwLTM1LjMtMjguNy02NC02NC02NEw0NDAgMHpNNDggMzc2YzAtMTMuMy0xMC43LTI0LTI0LTI0UzAgMzYyLjcgMCAzNzZsMCA3MmMwIDM1LjMgMjguNyA2NCA2NCA2NGw3MiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC03MiAwYy04LjggMC0xNi03LjItMTYtMTZsMC03MnptNTI4IDBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCA3MmMwIDguOC03LjIgMTYtMTYgMTZsLTcyIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsNzIgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTcyek0yODggMjE2YTU2IDU2IDAgMSAwIDAtMTEyIDU2IDU2IDAgMSAwIDAgMTEyem0wIDQwYy01MyAwLTk2IDQzLTk2IDk2bDAgMjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRsMTQ0IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRsMC0yNGMwLTUzLTQzLTk2LTk2LTk2em0xOTItNjRhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNMTY4IDI3Mi4zYy00OS4zIDQuMS04OCA0NS4zLTg4IDk1LjdsMCAxMC43YzAgMTEuOCA5LjYgMjEuMyAyMS4zIDIxLjNsNDYuOCAwYy0yLjctNy41LTQuMS0xNS42LTQuMS0yNGwwLTI0YzAtMjkuNSA4LjgtNTYuOSAyNC03OS43ek00MjcuOSA0MDBsNDYuOCAwYzExLjggMCAyMS4zLTkuNiAyMS4zLTIxLjNsMC0xMC43YzAtNTAuMy0zOC43LTkxLjYtODgtOTUuNyAxNS4yIDIyLjggMjQgNTAuMiAyNCA3OS43bDAgMjRjMCA4LjQtMS40IDE2LjUtNC4xIDI0ek0xOTIgMTkyYTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6Il19LCRlYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjYXItb24iLGljb246WzQ0OCw1MTIsW10sImU0ZGQiLCJNMjQ4LThjMC0xMy4zLTEwLjctMjQtMjQtMjRTMjAwLTIxLjMgMjAwLThsMCA2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtNjR6TTE0NS4zIDIwOGwxNTcuNSAwYzYuNyAwIDEyLjYgNC4xIDE1IDEwLjRsMjYuMSA2OS42LTIzOS42IDAgMjYuMS02OS42YzIuMy02LjIgOC4zLTEwLjQgMTUtMTAuNHpNMzQgMjkyLjhsLTEuMyAzLjRDMTMuMiAzMDcuMSAwIDMyOCAwIDM1MkwwIDQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwxNiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMzIgMjg4IDAgMCAzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmwxNiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMTI4YzAtMjQtMTMuMi00NC45LTMyLjgtNTUuOWwtMS4zLTMuNC0zNi4zLTk2LjljLTExLjctMzEuMi00MS42LTUxLjktNzQuOS01MS45bC0xNTcuNSAwYy0zMy4zIDAtNjMuMiAyMC43LTc0LjkgNTEuOUwzNCAyOTIuOHpNOTYgMzM2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMjI0IDMyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTcgN0MtMi4zIDE2LjQtMi4zIDMxLjYgNyA0MUw1NSA4OWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMFM5OC4zIDY0LjQgODkgNTVMNDEgN0MzMS42LTIuMyAxNi40LTIuMyA3IDd6TTQwNyA3TDM1OSA1NWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDQ4LTQ4YzkuNC05LjQgOS40LTI0LjYgMC0zMy45UzQxNi40LTIuMyA0MDcgN3oiXX0sRGVhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNsZWlnaCIsaWNvbjpbNjQwLDUxMixbXSwiZjdjYyIsIk02NCAzMkM0Ni4zIDMyIDMyIDQ2LjMgMzIgNjRTNDYuMyA5NiA2NCA5NmwwIDE2MGMwIDQxLjggMjYuNyA3Ny40IDY0IDkwLjVsMCA2OS41LTcyIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsNTA0IDBjNDQuMiAwIDgwLTM1LjggODAtODBsMC04YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0bDAgOGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtODAgMCAwLTY0YzUzIDAgOTYtNDMgOTYtOTZsMC05NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMzIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAzMmMwIDM1LjMtMjguNyA2NC02NCA2NGwtNDguOSAwYy00OC41IDAtOTIuOC0yNy40LTExNC41LTcwLjhsLTI1LjItNTAuNUMyMzcuNyA1OS40IDE5My40IDMyIDE0NC45IDMyTDY0IDMyek00MzIgNDE2bC0yNTYgMCAwLTY0IDI1NiAwIDAgNjR6Il19LExlYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJkdW1iYmVsbCIsaWNvbjpbNjQwLDUxMixbXSwiZjQ0YiIsIk05NiAxMTJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OGwwIDExMiAyNTYgMCAwLTExMmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4bDAgMTYgMTYgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybDAgNDhjMCAyNi41LTIxLjUgNDgtNDggNDhsLTE2IDAgMCAxNmMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OGwwLTExMi0yNTYgMCAwIDExMmMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OGwwLTE2LTE2IDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtNDhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsMC00OGMwLTI2LjUgMjEuNS00OCA0OC00OGwxNiAwIDAtMTZ6Il19LEZ4ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJiYWJ5LWNhcnJpYWdlIixpY29uOls1MTIsNTEyLFsiY2FycmlhZ2UtYmFieSJdLCJmNzdkIiwiTTY0IDIwOGwwIDgwYzAgNTMgNDMgOTYgOTYgOTZsMTkyIDBjNTMgMCA5Ni00MyA5Ni05NmwwLTExMiA0MCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC02NCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDU2LTMzNiAwem0uMi00OGwyMjMuOCAwIDAtMTI4YzAtMTcuNy0xNC4zLTMyLTMyLTMyTDIzMiAwQzE0MS45IDAgNjguNCA3MC45IDY0LjIgMTYwek0xNjAgNDY0YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6bTI4OCAwYTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6Il19LEVlYT1GeGUsUGVhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Imtpd2ktYmlyZCIsaWNvbjpbNTc2LDUxMixbXSwiZjUzNSIsIk0yOTEuMiAzODguNGMzMS4yLTE4LjggNjQuNy0zNi40IDEwMS4xLTM2LjRsNTUuNyAwYzQuNiAwIDkuMS0uMiAxMy42LS43bDg1LjMgMTIxLjljNCA1LjcgMTEuMyA4LjIgMTcuOSA2LjFTNTc2IDQ3MSA1NzYgNDY0bDAtMjQwYzAtNzAuNy01Ny4zLTEyOC0xMjgtMTI4bC01NS43IDBDMzU1LjkgOTYgMzIyLjQgNzguNCAyOTEuMiA1OS42IDI2Mi4zIDQyLjEgMjI4LjMgMzIgMTkyIDMyIDg2IDMyIDAgMTE4IDAgMjI0IDAgMjk1LjEgMzguNiAzNTcuMSA5NiAzOTAuM0w5NiA0NTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTQ2YzE1LjMgMy45IDMxLjQgNiA0OCA2IDUuNCAwIDEwLjctLjIgMTYtLjdsMCA0MC43YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC01MC45YzEyLjQtNC40IDI0LjItMTAgMzUuMi0xNi43ek00NDggMjAwYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHoiXX0sQnhlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNhbGVuZGFyLXhtYXJrIixpY29uOls0NDgsNTEyLFsiY2FsZW5kYXItdGltZXMiXSwiZjI3MyIsIk0xMjggMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDMyIDEyOCAwIDAtMzJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDMyIDMyIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAyODhjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NGwzMiAwIDAtMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTI5MS45IDIyMC4xYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMGwtMzMuOSAzMy45LTMzLjktMzMuOWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWwzMy45IDMzLjktMzMuOSAzMy45Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsMzMuOS0zMy45IDMzLjkgMzMuOWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTMzLjktMzMuOSAzMy45LTMzLjljOS40LTkuNCA5LjQtMjQuNiAwLTMzLjl6Il19LEllYT1CeGUsSHhlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNpcmNsZS1kb3duIixpY29uOls1MTIsNTEyLFs2MTQ2NiwiYXJyb3ctYWx0LWNpcmNsZS1kb3duIl0sImYzNTgiLCJNMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMiAyNTYgMjU2IDAgMSAwIDAtNTEyek0yNDQuNyAzODcuM2wtMTA0LTEwNGMtNC42LTQuNi01LjktMTEuNS0zLjUtMTcuNHM4LjMtOS45IDE0LjgtOS45bDU2IDAgMC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmwzMiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgOTYgNTYgMGM2LjUgMCAxMi4zIDMuOSAxNC44IDkuOXMxLjEgMTIuOS0zLjUgMTcuNGwtMTA0IDEwNGMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDB6Il19LEFlYT1IeGUsTmVhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZpbGUtbWVkaWNhbCIsaWNvbjpbMzg0LDUxMixbXSwiZjQ3NyIsIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEwyMTMuNSAwYzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43TDM2NS4zIDEyNS4zYzEyIDEyIDE4LjcgMjguMyAxOC43IDQ1LjNMMzg0IDQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgNjR6bTIwOC01LjVsMCA5My41YzAgMTMuMyAxMC43IDI0IDI0IDI0TDMyNS41IDE3NiAyMDggNTguNXpNMTYwIDI4MGwwIDQwLTQwIDBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmw0MCAwIDAgNDBjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtNDAgNDAgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTQwIDAgMC00MGMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnoiXX0semQ9e3ByZWZpeDoiZmFzIixpY29uTmFtZToieG1hcmsiLGljb246WzM4NCw1MTIsWzEyODQ3MywxMDAwNSwxMDAwNiwxMDA2MCwyMTUsImNsb3NlIiwibXVsdGlwbHkiLCJyZW1vdmUiLCJ0aW1lcyJdLCJmMDBkIiwiTTU1LjEgNzMuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNMMTQ3LjIgMjU2IDkuOSAzOTMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwxOTIuNSAzMDEuMyAzMjkuOSA0MzguNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDIzNy44IDI1NiAzNzUuMSAxMTguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwxOTIuNSAyMTAuNyA1NS4xIDczLjR6Il19LFJlYT16ZCxPZWE9emQsRmVhPXpkLEJlYT16ZCxxeGU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic2hhcGVzIixpY29uOls1MTIsNTEyLFsidHJpYW5nbGUtY2lyY2xlLXNxdWFyZSJdLCJmNjFmIiwiTTI1NiAwYzExLjIgMCAyMS43IDUuOSAyNy40IDE1LjVsOTYgMTYwYzUuOSA5LjkgNi4xIDIyLjIgLjQgMzIuMlMzNjMuNSAyMjQgMzUyIDIyNGwtMTkyIDBjLTExLjUgMC0yMi4yLTYuMi0yNy44LTE2LjJzLTUuNS0yMi4zIC40LTMyLjJsOTYtMTYwQzIzNC4zIDUuOSAyNDQuOCAwIDI1NiAwek0xMjggMjcyYTExMiAxMTIgMCAxIDEgMCAyMjQgMTEyIDExMiAwIDEgMSAwLTIyNHptMjAwIDE2bDExMiAwYzIyLjEgMCA0MCAxNy45IDQwIDQwbDAgMTEyYzAgMjIuMS0xNy45IDQwLTQwIDQwbC0xMTIgMGMtMjIuMSAwLTQwLTE3LjktNDAtNDBsMC0xMTJjMC0yMi4xIDE3LjktNDAgNDAtNDB6Il19LEhlYT1xeGUscWVhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImRpY2Utb25lIixpY29uOls0NDgsNTEyLFs5ODU2XSwiZjUyNSIsIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyek0yMjQgMjI0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHoiXX0samVhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImxvY2stb3BlbiIsaWNvbjpbNTc2LDUxMixbXSwiZjNjMSIsIk0zODQgOTZjMC0zNS4zIDI4LjctNjQgNjQtNjRzNjQgMjguNyA2NCA2NGwwIDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0zMmMwLTcwLjctNTcuMy0xMjgtMTI4LTEyOFMzMjAgMjUuMyAzMjAgOTZsMCA2NC0xNjAgMGMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCAyMjRjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjU2IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yMjRjMC0zNS4zLTI4LjctNjQtNjQtNjRsLTMyIDAgMC02NHoiXX0sVmVhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBlcHBlci1ob3QiLGljb246WzU3Niw1MTIsWzEyNzc5OF0sImY4MTYiLCJNNTQ1IDY1YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBMNDc4LjkgNjMuMkM0NTIuMyA0My42IDQxOS41IDMyIDM4NCAzMiAzNDguOSAzMiAzMTYuNSA0My4zIDI5MC4xIDYyLjQgMjc0LjEgNzQuMSAyODQuMiA5NiAzMDQgOTZsMjQgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDgwYzAgMTMuMyAxMC43IDI0IDI0IDI0bDgwIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRsMCAyNGMwIDE5LjggMjEuOSAyOS45IDMzLjYgMTMuOSAxOS4xLTI2LjQgMzAuNC01OC44IDMwLjQtOTMuOSAwLTM1LjUtMTEuNi02OC4zLTMxLjItOTQuOUw1NDUgNjV6TTI3MCAxMzUuNWwtMTU5LjYgMjI4QzEwMS4zIDM3Ni40IDg2LjcgMzg0IDcxIDM4NGwtNyAwYy0yNi41IDAtNDggMjEuNS00OCA0OHMyMS41IDQ4IDQ4IDQ4bDI3LjEgMGM2NS43IDAgMTI5LjctMjAuMiAxODMuNS01Ny44TDQ0MC41IDMwNi4xQzQzNSAyOTUuOSA0MzIgMjg0LjIgNDMyIDI3MmwtNTYgMGMtMzkuOCAwLTcyLTMyLjItNzItNzJsMC01NmMtMTIuMiAwLTIzLjktMy0zNC04LjV6Il19LGp4ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJkcm9wbGV0LXNsYXNoIixpY29uOls1NzYsNTEyLFsidGludC1zbGFzaCJdLCJmNWM3IiwiTTQxLTI0LjljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwUy0yLjMtLjMgNyA5LjFsNTI4IDUyOGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlMNDYzLjYgMzk3LjhjMTAuNS0yMy44IDE2LjQtNTAuMSAxNi40LTc3LjggMC05MS4yLTEzMC4yLTI3NC4xLTE2Ni42LTMyMy41LTUuOS04LTE1LjItMTIuNS0yNS4yLTEyLjVsLS40IDBjLTEwIDAtMTkuMyA0LjUtMjUuMiAxMi41LTE1LjYgMjEuMi00OC41IDY2LjktODAuOSAxMTkuNEw0MS0yNC45em05MiAyMjcuN2MtMjEuNiA0My44LTM3IDg1LjktMzcgMTE3LjIgMCAxMDYgODYgMTkyIDE5MiAxOTIgNDMuNCAwIDgzLjQtMTQuNCAxMTUuNS0zOC42TDEzMyAyMDIuOHoiXX0sVWVhPWp4ZSxWeGU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZHJvcGxldCIsaWNvbjpbMzg0LDUxMixbMTI4MTY3LCJ0aW50Il0sImYwNDMiLCJNMTkyIDUxMkM4NiA1MTIgMCA0MjYgMCAzMjAgMCAyMjguOCAxMzAuMiA0NS45IDE2Ni42LTMuNSAxNzIuNS0xMS41IDE4MS44LTE2IDE5MS44LTE2bC40IDBjMTAgMCAxOS4zIDQuNSAyNS4yIDEyLjUgMzYuNCA0OS40IDE2Ni42IDIzMi4zIDE2Ni42IDMyMy41IDAgMTA2LTg2IDE5Mi0xOTIgMTkyek0xMTIgMzEyYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0YzAgNzUuMSA2MC45IDEzNiAxMzYgMTM2IDEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0Yy00OC42IDAtODgtMzkuNC04OC04OHoiXX0sV2VhPVZ4ZSwkb2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmlsZS1saW5lcyIsaWNvbjpbMzg0LDUxMixbMTI4NDQxLDEyODQ2Miw2MTY4NiwiZmlsZS1hbHQiLCJmaWxlLXRleHQiXSwiZjE1YyIsIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEwyMTMuNSAwYzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43TDM2NS4zIDEyNS4zYzEyIDEyIDE4LjcgMjguMyAxOC43IDQ1LjNMMzg0IDQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgNjR6bTIwOC01LjVsMCA5My41YzAgMTMuMyAxMC43IDI0IDI0IDI0TDMyNS41IDE3NiAyMDggNTguNXpNMTIwIDI1NmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwxNDQgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtMTQ0IDB6bTAgOTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMTQ0IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTE0NCAweiJdfSxHZWE9JG9lLEtlYT0kb2UsWWVhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNvbW1lbnRzLWRvbGxhciIsaWNvbjpbNTc2LDUxMixbXSwiZjY1MyIsIk0xOTIgMzIwYzEwNiAwIDE5Mi03OC44IDE5Mi0xNzZTMjk4LTMyIDE5Mi0zMiAwIDQ2LjggMCAxNDRjMCAzOS42IDE0LjMgNzYuMiAzOC40IDEwNS42TDIuOCAzMTYuOEMtMi4xIDMyNi4xLS40IDMzNy41IDcgMzQ1czE4LjkgOS4yIDI4LjIgNC4yTDExNi44IDMwNmMyMy4xIDkgNDguNSAxNCA3NS4yIDE0em0zLjIgNDhjMTYuNCA4MS45IDk0LjcgMTQ0IDE4OC44IDE0NCAyNi43IDAgNTIuMS01IDc1LjItMTRsODEuNiA0My4yYzkuMyA0LjkgMjAuNyAzLjIgMjguMi00LjJzOS4yLTE4LjkgNC4yLTI4LjJsLTM1LjYtNjcuMmMyNC4xLTI5LjQgMzguNC02NiAzOC40LTEwNS42IDAtODIuNC02MS43LTE1MS41LTE0NS0xNzAuNy0xMS41IDExNS44LTExNS44IDIwMS4yLTIzNS44IDIwMi43ek0xOTYgMzJjMTEgMCAyMCA5IDIwIDIwbDAgNCA4IDBjMTEgMCAyMCA5IDIwIDIwcy05IDIwLTIwIDIwbC00Ny41IDBjLTYuOSAwLTEyLjUgNS42LTEyLjUgMTIuNSAwIDYuMSA0LjQgMTEuMyAxMC40IDEyLjNsNDEuNyA3YzI1LjMgNC4yIDQzLjkgMjYuMSA0My45IDUxLjggMCAyNi4xLTE5IDQ3LjctNDQgNTEuOGwwIDQuN2MwIDExLTkgMjAtMjAgMjBzLTIwLTktMjAtMjBsMC00LTI0IDBjLTExIDAtMjAtOS0yMC0yMHM5LTIwIDIwLTIwbDU1LjUgMGM2LjkgMCAxMi41LTUuNiAxMi41LTEyLjUgMC02LjEtNC40LTExLjMtMTAuNC0xMi4zbC00MS43LTdjLTI1LjMtNC4yLTQzLjktMjYuMS00My45LTUxLjggMC0yOC44IDIzLjItNTIuMiA1Mi01Mi41bDAtNGMwLTExIDktMjAgMjAtMjB6Il19LFV4ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJtYWduaWZ5aW5nLWdsYXNzLWxvY2F0aW9uIixpY29uOls1MTIsNTEyLFsic2VhcmNoLWxvY2F0aW9uIl0sImY2ODkiLCJNNDE2IDIwOGMwIDQ1LjktMTQuOSA4OC4zLTQwIDEyMi43TDUwMi42IDQ1Ny40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwTDMzMC43IDM3NkMyOTYuMyA0MDEuMSAyNTMuOSA0MTYgMjA4IDQxNiA5My4xIDQxNiAwIDMyMi45IDAgMjA4UzkzLjEgMCAyMDggMCA0MTYgOTMuMSA0MTYgMjA4ek0yODggMTc2YzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwYzAgNDguOCA0Ni41IDExMS42IDY4LjYgMTM4LjYgNiA3LjMgMTYuOCA3LjMgMjIuNyAwIDIyLjEtMjcgNjguNi04OS44IDY4LjYtMTM4LjZ6bS0xMTIgMGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAweiJdfSxaZWE9VXhlLFFiPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZpbGUtaW52b2ljZSIsaWNvbjpbMzg0LDUxMixbXSwiZjU3MCIsIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwyNTYgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI3Ny41YzAtMTctNi43LTMzLjMtMTguNy00NS4zTDI1OC43IDE4LjdDMjQ2LjcgNi43IDIzMC41IDAgMjEzLjUgMEw2NCAwek0zMjUuNSAxNzZMMjMyIDE3NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRMMjA4IDU4LjUgMzI1LjUgMTc2ek02NCAzODRsMC02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwxOTIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMyTDk2IDQxNmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTg4IDY0bDQ4IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTQ4IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0Uzc0LjcgNjQgODggNjR6bTAgOTZsNDggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtNDggMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHoiXX0sWGVhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBlbnRhZ29uIixpY29uOls1NzYsNTEyLFtdLCJlNzkwIiwiTTMxNi40LTMuMWMtMTYuOC0xMi4yLTM5LjYtMTIuMi01Ni40IDBMMzUuMyAxNjAuMmMtMTYuOCAxMi4yLTIzLjkgMzMuOS0xNy40IDUzLjdsODUuOCAyNjQuMWM2LjQgMTkuOCAyNC45IDMzLjIgNDUuNyAzMy4ybDI3Ny43IDBjMjAuOCAwIDM5LjItMTMuNCA0NS43LTMzLjJsODUuOC0yNjQuMWM2LjQtMTkuOC0uNi00MS40LTE3LjQtNTMuN0wzMTYuNC0zLjF6Il19LFFlYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJyZXB1YmxpY2FuIixpY29uOls2NDAsNTEyLFtdLCJmNzVlIiwiTTAgMTkyQzAgMTAzLjYgNzEuNiAzMiAxNjAgMzJsMjI0IDBjODguNCAwIDE2MCA3MS42IDE2MCAxNjBsMCA2NC01NDQgMCAwLTY0em0xNTItMzJhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHptMjMyIDI0YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpNMjgwIDE2MGEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAwek0xMjggMjg4bDQxNiAwIDAgMTEyYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZsMC00OGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgNDhjMCA0NC4yLTM1LjggODAtODAgODBzLTgwLTM1LjgtODAtODBsMC00OC0zMiAwIDAgOTZjMCAxNy43LTE0LjMgMzItMzIgMzJsLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtNjQtMTkyIDAgMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtNjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0xNjAgMTI4IDB6Il19LFd4ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzaG9wIixpY29uOls1NzYsNTEyLFsic3RvcmUtYWx0Il0sImY1NGYiLCJNMjEuNSAxODEuMUw3OC4zIDY3LjRDODkuMiA0NS43IDExMS4zIDMyIDEzNS42IDMybDMwNC45IDBjMjQuMiAwIDQ2LjQgMTMuNyA1Ny4yIDM1LjRsNTYuOCAxMTMuN2MzLjYgNy4yIDUuNSAxNS4xIDUuNSAyMy4yIDAgMjcuMy0yMS4yIDQ5LjctNDggNTEuNkw1MTIgNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMTkyLTk2IDAgMCAxNzZjMCAyNi41LTIxLjUgNDgtNDggNDhsLTE5MiAwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTE3Ni4xYy0yNi44LTEuOS00OC0yNC4zLTQ4LTUxLjYgMC04IDEuOS0xNiA1LjUtMjMuMnpNMTI4IDI1NmwwIDExMmMwIDguOCA3LjIgMTYgMTYgMTZsMTI4IDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMTEyLTE2MCAweiJdfSxKZWE9V3hlLERvZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmaWxtIixpY29uOls0NDgsNTEyLFsxMjc5MDIsNjIzNjgsImZpbG0tYWx0IiwiZmlsbS1zaW1wbGUiXSwiZjAwOCIsIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDMyMCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NnpNNDggMzY4bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwYy04LjggMC0xNiA3LjItMTYgMTZ6bTMwNC0xNmMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwek00OCAyNDBsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnptMzA0LTE2Yy04LjggMC0xNiA3LjItMTYgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDB6TTQ4IDExMmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNkw2NCA5NmMtOC44IDAtMTYgNy4yLTE2IDE2ek0zNTIgOTZjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMHoiXX0sZXRhPURvZSx0dGE9RG9lLGF0YT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJidWlsZGluZy1jaXJjbGUteG1hcmsiLGljb246WzU3Niw1MTIsW10sImU0ZDQiLCJNOTYgMEM2MC43IDAgMzIgMjguNyAzMiA2NGwwIDM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwxODAgMGMtMTAuNS0xNC42LTE5LTMwLjctMjUuMS00OGwtNzQuOSAwIDAtODBjMC0xNy43IDE0LjMtMzIgMzItMzJsMzIgMGMyIDAgNCAuMiA1LjkgLjUgNi0yMy42IDE2LjMtNDUuNCAzMC4xLTY0LjVsLTQgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgNGMyNy41LTE5LjggNjAuMy0zMi40IDk2LTM1LjRMNDE2IDY0YzAtMzUuMy0yOC43LTY0LTY0LTY0TDk2IDB6bTMyIDExMmMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyek0yNzIgOTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNnpNMTI4IDI0MGMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyek00MzIgNTQ0YTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptMjIuNi0xNDRsMzYuNyAzNi43YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBsLTM2LjctMzYuNy0zNi43IDM2LjdjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZsMzYuNy0zNi43LTM2LjctMzYuN2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwbDM2LjcgMzYuNyAzNi43LTM2LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42TDQ1NC42IDQwMHoiXX0sc3RhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNvbW1lbnRzIixpY29uOls1NzYsNTEyLFsxMjg0OTAsNjE2NzBdLCJmMDg2IiwiTTM4NCAxNDRjMCA5Ny4yLTg2IDE3Ni0xOTIgMTc2LTI2LjcgMC01Mi4xLTUtNzUuMi0xNEwzNS4yIDM0OS4yYy05LjMgNC45LTIwLjcgMy4yLTI4LjItNC4ycy05LjItMTguOS00LjItMjguMmwzNS42LTY3LjJDMTQuMyAyMjAuMiAwIDE4My42IDAgMTQ0IDAgNDYuOCA4Ni0zMiAxOTItMzJTMzg0IDQ2LjggMzg0IDE0NHptMCAzNjhjLTk0LjEgMC0xNzIuNC02Mi4xLTE4OC44LTE0NCAxMjAtMS41IDIyNC4zLTg2LjkgMjM1LjgtMjAyLjcgODMuMyAxOS4yIDE0NSA4OC4zIDE0NSAxNzAuNyAwIDM5LjYtMTQuMyA3Ni4yLTM4LjQgMTA1LjZsMzUuNiA2Ny4yYzQuOSA5LjMgMy4yIDIwLjctNC4yIDI4LjJzLTE4LjkgOS4yLTI4LjIgNC4yTDQ1OS4yIDQ5OGMtMjMuMSA5LTQ4LjUgMTQtNzUuMiAxNHoiXX0saXRhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRhZ3MiLGljb246WzU3Niw1MTIsW10sImYwMmMiLCJNNDAxLjIgMzkuMUw1NDkuNCAxODkuNGMyNy43IDI4LjEgMjcuNyA3My4xIDAgMTAxLjJMMzkzIDQ0OC45Yy05LjMgOS40LTI0LjUgOS41LTMzLjkgLjJzLTkuNS0yNC41LS4yLTMzLjlMNTE1LjMgMjU2LjhjOS4yLTkuMyA5LjItMjQuNCAwLTMzLjdMMzY3IDcyLjljLTkuMy05LjQtOS4yLTI0LjYgLjItMzMuOXMyNC42LTkuMiAzMy45IC4yek0zMi4xIDIyOS41TDMyLjEgOTZjMC0zNS4zIDI4LjctNjQgNjQtNjRsMTMzLjUgMGMxNyAwIDMzLjMgNi43IDQ1LjMgMTguN2wxNDQgMTQ0YzI1IDI1IDI1IDY1LjUgMCA5MC41TDI4NS40IDQxOC43Yy0yNSAyNS02NS41IDI1LTkwLjUgMGwtMTQ0LTE0NGMtMTItMTItMTguNy0yOC4zLTE4LjctNDUuM3ptMTQ0LTg1LjVhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHoiXX0scnRhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Imd1biIsaWNvbjpbNTc2LDUxMixbXSwiZTE5YiIsIk01MjggNTZjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCA4LTQ0OCAwQzE0LjMgNjQgMCA3OC4zIDAgOTZMMCAyMDhjMCAxNy43IDE0LjMgMzIgMzIgMzJsMTAgMGMyMC44IDAgMzYuMSAxOS42IDMxIDM5LjhMMzMgNDQwLjJjLTIuNCA5LjYtLjIgMTkuNyA1LjggMjcuNVM1NC4xIDQ4MCA2NCA0ODBsOTYgMGMxNC43IDAgMjcuNS0xMCAzMS0yNC4yTDIxNyAzNTIgMzIxLjQgMzUyYzIzLjcgMCA0NC44LTE0LjkgNTIuNy0zNy4ybDI2LjctNzQuOCAzMS4xIDBjOC41IDAgMTYuNi0zLjQgMjIuNi05LjRsMjIuNi0yMi42IDY2LjcgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTgwYzAtMTcuNy0xNC4zLTMyLTMyLTMybC0xNiAwIDAtOHpNMzIxLjQgMzA0bC05Mi41IDAgMTYtNjQgMTA1IDAtMjEgNTguN2MtMS4xIDMuMi00LjIgNS4zLTcuNSA1LjN6TTgwIDEyOGwzODQgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkw4MCAxNjBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6Il19LHBmPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNpcmNsZS1jaGVjayIsaWNvbjpbNTEyLDUxMixbNjE1MzMsImNoZWNrLWNpcmNsZSJdLCJmMDU4IiwiTTI1NiA1MTJhMjU2IDI1NiAwIDEgMSAwLTUxMiAyNTYgMjU2IDAgMSAxIDAgNTEyek0zNzQgMTQ1LjdjLTEwLjctNy44LTI1LjctNS40LTMzLjUgNS4zTDIyMS4xIDMxNS4yIDE2OSAyNjMuMWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWw3MiA3MmM1IDUgMTEuOCA3LjUgMTguOCA3czEzLjQtNC4xIDE3LjUtOS44TDM3OS4zIDE3OS4yYzcuOC0xMC43IDUuNC0yNS43LTUuMy0zMy41eiJdfSxvdGE9cGYsbnRhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNjb3JwaW8iLGljb246WzY0MCw1MTIsW10sImU4NGUiLCJNMzY4IDMyYzYxLjkgMCAxMTIgNTAuMSAxMTIgMTEybDAgMjg5LjdjMCA3LjkgNi40IDE0LjMgMTQuMyAxNC4zIDMuOSAwIDcuNi0xLjYgMTAuMi00LjNsNDAuMS00MS4xLTkuNy05LjdjLTYuOS02LjktOC45LTE3LjItNS4yLTI2LjJTNTQyLjMgMzUyIDU1MiAzNTJsNjQgMCAyLjUgLjFjMTIuMSAxLjIgMjEuNSAxMS41IDIxLjUgMjMuOWwwIDY0LS4zIDMuNmMtMS4yIDguMi02LjcgMTUuMy0xNC41IDE4LjYtOSAzLjctMTkuMyAxLjYtMjYuMi01LjJsLTkuMS05LjEtMzkuNiA0MC42Yy0xNC43IDE1LjEtMzQuOSAyMy42LTU2IDIzLjYtNDMuMyAwLTc4LjMtMzUuMS03OC4zLTc4LjNMNDE2IDE0NGMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OGwwIDMwNGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTMwNGMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OGwwIDMwNGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTMyMGMwLTE2LjYtMTIuNi0zMC4yLTI4LjctMzEuOGwtNi42LS4zQzQ0LjYgOTQuMiAzMiA4MC42IDMyIDY0IDMyIDQ2LjMgNDYuMyAzMiA2NCAzMiA5MSAzMiAxMTUuMyA0My4xIDEzMi43IDYxIDE1Mi42IDQzIDE3OSAzMiAyMDggMzIgMjM5LjMgMzIgMjY3LjcgNDQuOSAyODggNjUuNyAzMDguMyA0NC45IDMzNi42IDMyIDM2OCAzMnoiXX0sR3hlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImlkLWNhcmQtY2xpcCIsaWNvbjpbNTc2LDUxMixbImlkLWNhcmQtYWx0Il0sImY0N2YiLCJNMjU2LTMybDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA2NC0xMjggMCAwLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyek02NCAzMmwxMTIgMCAwIDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDEyOCAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtMzIgMTEyIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAzMjBjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMyek0xNzYgNDAwYzAgOC44IDcuMiAxNiAxNiAxNmwxOTIgMGM4LjggMCAxNi03LjIgMTYtMTYgMC00NC4yLTM1LjgtODAtODAtODBsLTY0IDBjLTQ0LjIgMC04MCAzNS44LTgwIDgwek0yODggMjgwYTU2IDU2IDAgMSAwIDAtMTEyIDU2IDU2IDAgMSAwIDAgMTEyeiJdfSxsdGE9R3hlLGN0YT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJtb29uIixpY29uOls1MTIsNTEyLFsxMjc3NjksOTIxNF0sImYxODYiLCJNMjU2IDBDMTE0LjYgMCAwIDExNC42IDAgMjU2UzExNC42IDUxMiAyNTYgNTEyYzY4LjggMCAxMzEuMy0yNy4yIDE3Ny4zLTcxLjQgNy4zLTcgOS40LTE3LjkgNS4zLTI3LjFzLTEzLjctMTQuOS0yMy44LTE0LjFjLTQuOSAuNC05LjggLjYtMTQuOCAuNi0xMDEuNiAwLTE4NC04Mi40LTE4NC0xODQgMC03Mi4xIDQxLjUtMTM0LjYgMTAyLjEtMTY0LjggOS4xLTQuNSAxNC4zLTE0LjMgMTMuMS0yNC40UzMyMi42IDguNSAzMTIuNyA2LjNDMjk0LjQgMi4yIDI3NS40IDAgMjU2IDB6Il19LGR0YT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJvaWwtd2VsbCIsaWNvbjpbNTc2LDUxMixbXSwiZTUzMiIsIk01MjguMyA2MS4zYy0xMS40LTQyLjctNTUuMy02OC05OC01Ni42TDQxNC45IDguOEMzOTcuOCAxMy40IDM4Ny43IDMxIDM5Mi4zIDQ4bDI0LjUgOTEuNC0xMDguMiAyOC4xLTYuMy0xOC4xQzI5Ny43IDEzNi42IDI4NS42IDEyOCAyNzIgMTI4cy0yNS43IDguNi0zMC4yIDIxLjRsLTEzLjYgMzktMTMyLjIgMzQuMyAwLTM4LjZjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCAyNjQtMTYgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw1MTIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMTM3LjMgMC02MS40LTE3NS40LTYyLjIgMTYuMSAyMi4xIDYzLjItNjYuNiAwIDE5LjktNTYuOS03NC42IDE5LjMtNDYuNyAxMzMuNS00MS4zIDAgMC0xNTkuMiAzMzcuNC04Ny41IDI1LjIgOTRjNC42IDE3LjEgMjIuMSAyNy4yIDM5LjIgMjIuNmwxNS41LTQuMWM0Mi43LTExLjQgNjgtNTUuMyA1Ni42LTk4TDUyOC4zIDYxLjN6TTIwNS4xIDQ0OGwxNi44LTQ4IDEwMC4yIDAgMTYuOCA0OC0xMzMuOCAweiJdfSxLeGU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidGFjaG9ncmFwaC1kaWdpdGFsIixpY29uOls1NzYsNTEyLFsiZGlnaXRhbC10YWNob2dyYXBoIl0sImY1NjYiLCJNMCAxMjhDMCA5Mi43IDI4LjcgNjQgNjQgNjRsNDQ4IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAyNTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDQ4Yy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDEyOHptNjQgMzJsMCAzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmwxNjAgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyTDk2IDEyOGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTg4IDM1MmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwxMzYgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEw4OCAzNTJ6bTI1NiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDE0NCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0xNDQgMHpNNDk2IDE5MmE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6TTg4IDMxMmEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bTEwNC0yNGEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAwem01NiAyNGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6Il19LHV0YT1LeGUsWXhlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRhYmxldCIsaWNvbjpbNDQ4LDUxMixbInRhYmxldC1hbmRyb2lkIl0sImYzZmIiLCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zODRjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMHpNMTg0IDQwMGw4MCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC04MCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0eiJdfSxwdGE9WXhlLG5TPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InJ1YmxlLXNpZ24iLGljb246WzQ0OCw1MTIsWzgzODEsInJvdWJsZSIsInJ1YiIsInJ1YmxlIl0sImYxNTgiLCJNMTEyIDMyQzk0LjMgMzIgODAgNDYuMyA4MCA2NGwwIDIwOC00MCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDQwIDAgMCA0OC00MCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDQwIDAgMCAzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMzIgMTUyIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTE1MiAwIDAtNDggMTEyIDBjNzkuNSAwIDE0NC02NC41IDE0NC0xNDRTMzM1LjUgMzIgMjU2IDMyTDExMiAzMnpNMjU2IDI1NmwtMTEyIDAgMC0xNjAgMTEyIDBjNDQuMiAwIDgwIDM1LjggODAgODBzLTM1LjggODAtODAgODB6Il19LGh0YT1uUyxmdGE9blMsbXRhPW5TLGd0YT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjbG9zZWQtY2FwdGlvbmluZyIsaWNvbjpbNTEyLDUxMixbXSwiZjIwYSIsIk0wIDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NGwzODQgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDI1NmMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0NDhjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgMTI4em0xNTIgODBsMzIgMGM0LjQgMCA4IDMuNiA4IDggMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTMwLjktMjUuMS01Ni01Ni01NmwtMzIgMGMtMzAuOSAwLTU2IDI1LjEtNTYgNTZsMCA4MGMwIDMwLjkgMjUuMSA1NiA1NiA1NmwzMiAwYzMwLjkgMCA1Ni0yNS4xIDU2LTU2IDAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0YzAgNC40LTMuNiA4LTggOGwtMzIgMGMtNC40IDAtOC0zLjYtOC04bDAtODBjMC00LjQgMy42LTggOC04em0xNjggOGMwLTQuNCAzLjYtOCA4LThsMzIgMGM0LjQgMCA4IDMuNiA4IDggMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTMwLjktMjUuMS01Ni01Ni01NmwtMzIgMGMtMzAuOSAwLTU2IDI1LjEtNTYgNTZsMCA4MGMwIDMwLjkgMjUuMSA1NiA1NiA1NmwzMiAwYzMwLjkgMCA1Ni0yNS4xIDU2LTU2IDAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0YzAgNC40LTMuNiA4LTggOGwtMzIgMGMtNC40IDAtOC0zLjYtOC04bDAtODB6Il19LGJ0YT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwZW4iLGljb246WzUxMiw1MTIsWzEyODM5NF0sImYzMDQiLCJNMzUyLjkgMjEuMkwzMDggNjYuMSA0NDUuOSAyMDQgNDkwLjggMTU5LjFDNTA0LjQgMTQ1LjYgNTEyIDEyNy4yIDUxMiAxMDhzLTcuNi0zNy42LTIxLjItNTEuMUw0NTUuMSAyMS4yQzQ0MS42IDcuNiA0MjMuMiAwIDQwNCAwcy0zNy42IDcuNi01MS4xIDIxLjJ6TTI3NC4xIDEwMEw1OC45IDMxNS4xYy0xMC43IDEwLjctMTguNSAyNC4xLTIyLjYgMzguN0wuOSA0ODEuNmMtMi4zIDguMyAwIDE3LjMgNi4yIDIzLjRzMTUuMSA4LjUgMjMuNCA2LjJsMTI3LjgtMzUuNWMxNC42LTQuMSAyNy45LTExLjggMzguNy0yMi42TDQxMiAyMzcuOSAyNzQuMSAxMDB6Il19LHZ0YT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwbGFuZSIsaWNvbjpbNTc2LDUxMixbXSwiZjA3MiIsIk01MjAgMjAwYzMwLjkgMCA1NiAyNS4xIDU2IDU2cy0yNS4xIDU2LTU2IDU2bC0xMjcuMyAwLTE1OS4yIDE3My42Yy02LjEgNi42LTE0LjYgMTAuNC0yMy42IDEwLjRsLTQzLjcgMGMtMTAuOSAwLTE4LjYtMTAuNy0xNS4yLTIxLjFsNTQuMy0xNjIuOS05OS43IDAtNTIuOCA2NmMtMyAzLjgtNy42IDYtMTIuNSA2bC0xOS44IDBjLTEwLjQgMC0xOC05LjgtMTUuNS0xOS45TDMyIDI1NiA1IDE0Ny45QzIuNCAxMzcuOCAxMC4xIDEyOCAyMC41IDEyOGwxOS44IDBjNC45IDAgOS41IDIuMiAxMi41IDZsNTIuOCA2NiA5OS43IDAtNTQuMy0xNjIuOUMxNDcuNiAyNi43IDE1NS4zIDE2IDE2Ni4yIDE2bDQzLjcgMGM5IDAgMTcuNSAzLjggMjMuNiAxMC40TDM5Mi43IDIwMCA1MjAgMjAweiJdfSx4dGE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaW1hZ2VzIixpY29uOls1NzYsNTEyLFtdLCJmMzAyIiwiTTk2IDk2YzAtMzUuMyAyOC43LTY0IDY0LTY0bDMyMCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjU2YzAgMzUuMy0yOC43IDY0LTY0IDY0bC0zMjAgMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMOTYgOTZ6TTI0IDEyOGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDI5NmMwIDguOCA3LjIgMTYgMTYgMTZsMzYwIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRMNjQgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDE1MmMwLTEzLjMgMTAuNy0yNCAyNC0yNHptMTY4IDMyYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptMTk2LjUgMTEuNWMtNC40LTcuMS0xMi4xLTExLjUtMjAuNS0xMS41cy0xNi4xIDQuNC0yMC41IDExLjVsLTU2LjMgOTIuMS0yNC41LTMwLjZjLTQuNi01LjctMTEuNC05LTE4LjctOXMtMTQuMiAzLjMtMTguNyA5bC02NCA4MGMtNS44IDcuMi02LjkgMTcuMS0yLjkgMjUuNFMxNzQuOCAzNTIgMTg0IDM1MmwyNzIgMGM4LjcgMCAxNi43LTQuNyAyMC45LTEyLjNzNC4xLTE2LjgtLjUtMjQuM2wtODgtMTQ0eiJdfSxaeGU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibW9iaWxlLXNjcmVlbiIsaWNvbjpbMzg0LDUxMixbIm1vYmlsZS1hbmRyb2lkLWFsdCJdLCJmM2NmIiwiTTE2IDY0QzE2IDI4LjcgNDQuNyAwIDgwIDBMMzA0IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAzODRjMCAzNS4zLTI4LjcgNjQtNjQgNjRMODAgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NEwxNiA2NHpNMTI4IDQ0MGMwIDEzLjMgMTAuNyAyNCAyNCAyNGw4MCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC04MCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHpNMzA0IDY0bC0yMjQgMCAwIDMwNCAyMjQgMCAwLTMwNHoiXX0seXRhPVp4ZSx3dGE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZ3VhcmFuaS1zaWduIixpY29uOlszODQsNTEyLFtdLCJlMTlhIiwiTTE5MiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDQxLjVDNzMuMyA3Ny4zIDAgMTU4LjEgMCAyNTZTNzMuMyA0MzQuNyAxNjggNDQ2LjVsMCA0MS41YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC00MS41Yzk0LjctMTEuOCAxNjgtOTIuNiAxNjgtMTkwLjUgMC0xNy43LTE0LjMtMzItMzItMzJsLTEzNiAwIDAtOTMuOGMyNS4zIDQuOCA0Ny45IDE3IDY1LjYgMzQuMyAxMi42IDEyLjQgMzIuOSAxMi4yIDQ1LjMtLjRzMTIuMi0zMi45LS41LTQ1LjNDMjk3LjIgOTAuMiAyNTguOCA3MC44IDIxNiA2NS41TDIxNiAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHpNMTY4IDEzMC4ybDAgMjUxLjVDMTA4LjggMzcwLjUgNjQgMzE4LjUgNjQgMjU2czQ0LjgtMTE0LjUgMTA0LTEyNS44em00OCAyNTEuNWwwLTkzLjggMTAwIDBjLTEyLjMgNDcuNi01MS4yIDg0LjUtMTAwIDkzLjh6Il19LFh4ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJiYWctc2hvcHBpbmciLGljb246WzQ0OCw1MTIsWyJzaG9wcGluZy1iYWciXSwiZjI5MCIsIk0xNjAgODBjMC0zNS4zIDI4LjctNjQgNjQtNjRzNjQgMjguNyA2NCA2NGwwIDQ4LTEyOCAwIDAtNDh6bS00OCA0OGwtNjQgMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhMMCAzODRjMCA1MyA0MyA5NiA5NiA5NmwyNTYgMGM1MyAwIDk2LTQzIDk2LTk2bDAtMjA4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4bC02NCAwIDAtNDhjMC02MS45LTUwLjEtMTEyLTExMi0xMTJTMTEyIDE4LjEgMTEyIDgwbDAgNDh6bTI0IDQ4YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptMTUyIDI0YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6Il19LGt0YT1YeGUsUXhlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNpcmNsZS1yaWdodCIsaWNvbjpbNTEyLDUxMixbNjE4MzgsImFycm93LWFsdC1jaXJjbGUtcmlnaHQiXSwiZjM1YSIsIk0wIDI1NmEyNTYgMjU2IDAgMSAwIDUxMiAwIDI1NiAyNTYgMCAxIDAgLTUxMiAwem0zODcuMyAxMS4zbC0xMDQgMTA0Yy00LjYgNC42LTExLjUgNS45LTE3LjQgMy41UzI1NiAzNjYuNSAyNTYgMzYwbDAtNTYtOTYgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0zMmMwLTE3LjcgMTQuMy0zMiAzMi0zMmw5NiAwIDAtNTZjMC02LjUgMy45LTEyLjMgOS45LTE0LjhzMTIuOS0xLjEgMTcuNCAzLjVsMTA0IDEwNGM2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnoiXX0sU3RhPVF4ZSxKeGU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGhvbmUtdm9sdW1lIixpY29uOls1NzYsNTEyLFsidm9sdW1lLWNvbnRyb2wtcGhvbmUiXSwiZjJhMCIsIk0zNDQtMzJjMTI4LjEgMCAyMzIgMTAzLjkgMjMyIDIzMiAwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGMwLTEwMS42LTgyLjQtMTg0LTE4NC0xODQtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHptOCAxOTJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0zMjAgODhjMC0xMy4zIDEwLjctMjQgMjQtMjQgNzUuMSAwIDEzNiA2MC45IDEzNiAxMzYgMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRjMC00OC42LTM5LjQtODgtODgtODgtMTMuMyAwLTI0LTEwLjctMjQtMjR6TTE0NC4xIDEuNGMxOS43LTUuNCA0MC4zIDQuNyA0OC4xIDIzLjVsNDAuNSA5Ny4zYzYuOSAxNi41IDIuMSAzNS42LTExLjggNDdsLTQ0LjEgMzYuMWMzMi41IDcxLjYgODkgMTMwIDE1OS4zIDE2NC45TDM3NC43IDMyM2MxMS4zLTEzLjkgMzAuNC0xOC42IDQ3LTExLjhMNTE5IDM1MS44YzE4LjggNy44IDI4LjkgMjguNCAyMy41IDQ4LjFsLTEuNSA1LjVDNTIzLjQgNDcwLjEgNDYwLjkgNTI1LjMgMzg0LjYgNTA5LjIgMjA5LjYgNDcyLjEgNzEuOSAzMzQuNCAzNC44IDE1OS40IDE4LjcgODMuMSA3My45IDIwLjYgMTM4LjUgMi45bDUuNS0xLjV6Il19LF90YT1KeGUsTXRhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImN1YmVzIixpY29uOls1MTIsNTEyLFtdLCJmMWIzIiwiTTI4NC0xLjNjLTE3LjMtMTAtMzguNy0xMC01NiAwTDE0My44IDQ3LjNjLTE3LjMgMTAtMjggMjguNS0yOCA0OC41bDAgMTAxLjktODguMyA1MWMtMTcuMyAxMC0yOCAyOC41LTI4IDQ4LjVsMCA5Ny4zYzAgMjAgMTAuNyAzOC41IDI4IDQ4LjVsODQuMyA0OC42YzE3LjMgMTAgMzguNyAxMCA1NiAwbDg4LjMtNTEgODguMyA1MWMxNy4zIDEwIDM4LjcgMTAgNTYgMEw0ODQuNSA0NDNjMTcuMy0xMCAyOC0yOC41IDI4LTQ4LjVsMC05Ny4zYzAtMjAtMTAuNy0zOC41LTI4LTQ4LjVsLTg4LjMtNTEgMC0xMDEuOWMwLTIwLTEwLjctMzguNS0yOC00OC41TDI4NC0xLjN6TTIzMiAyOTIuNmwwIDEwNi41LTg4LjMgNTFjLTEuMiAuNy0yLjYgMS4xLTQgMS4xbDAtMTA1LjMgOTIuMy01My4zem0yMzEuNCAuNmMuNyAxLjIgMS4xIDIuNiAxLjEgNGwwIDk3LjNjMCAyLjktMS41IDUuNS00IDYuOWwtODQuMyA0OC42Yy0xLjIgLjctMi42IDEuMS00IDEuMWwwLTEwNS4zIDkxLjItNTIuNnpNMzQ4LjMgOTUuOGwwIDEwMS45LTkyLjMgNTMuMyAwLTEwNi41IDkxLjItNTIuNmMuNyAxLjIgMS4xIDIuNiAxLjEgNHoiXX0senRhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBob25lIixpY29uOls1MTIsNTEyLFsxMjgyMjIsMTI4Mzc5XSwiZjA5NSIsIk0xNjAuMiAyNUMxNTIuMyA2LjEgMTMxLjctMy45IDExMi4xIDEuNGwtNS41IDEuNWMtNjQuNiAxNy42LTExOS44IDgwLjItMTAzLjcgMTU2LjQgMzcuMSAxNzUgMTc0LjggMzEyLjcgMzQ5LjggMzQ5LjggNzYuMyAxNi4yIDEzOC44LTM5LjEgMTU2LjQtMTAzLjdsMS41LTUuNWM1LjQtMTkuNy00LjctNDAuMy0yMy41LTQ4LjFsLTk3LjMtNDAuNWMtMTYuNS02LjktMzUuNi0yLjEtNDcgMTEuOGwtMzguNiA0Ny4yQzIzMy45IDMzNS40IDE3Ny4zIDI3NyAxNDQuOCAyMDUuM0wxODkgMTY5LjNjMTMuOS0xMS4zIDE4LjYtMzAuNCAxMS44LTQ3TDE2MC4yIDI1eiJdfSxDdGE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidG9yaWktZ2F0ZSIsaWNvbjpbNDQ4LDUxMixbOTk2MV0sImY2YTEiLCJNMCA5NkwwIDI4LjVDMCAyMS42IDUuNiAxNiAxMi41IDE2IDE0LjggMTYgMTcgMTYuNiAxOSAxNy44TDU4IDQxLjJDODIuOSA1Ni4xIDExMS4zIDY0IDE0MC4zIDY0bDE2Ny40IDBjMjkgMCA1Ny41LTcuOSA4Mi4zLTIyLjhsMzktMjMuNGMxLjktMS4yIDQuMi0xLjggNi40LTEuOCA2LjkgMCAxMi41IDUuNiAxMi41IDEyLjVMNDQ4IDk2YzAgMzUuMy0yOC43IDY0LTY0IDY0bDAgNjQgMTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMTYgMCAwIDE5MmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTE5Mi0xOTIgMCAwIDE5MmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTE5Mi0xNiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDE2IDAgMC02NEMyOC43IDE2MCAwIDEzMS4zIDAgOTZ6TTEyOCAyMjRsNjQgMCAwLTY0LTY0IDAgMCA2NHptMTI4IDBsNjQgMCAwLTY0LTY0IDAgMCA2NHoiXX0sVHRhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJhY29uIixpY29uOls1NzYsNTEyLFsxMjkzNjNdLCJmN2U1IiwiTTU1NyA5Ni43YzE0LjQgMTQuNCAxMi40IDM4LjQtNC4zIDUwLjJsLTY0LjYgNDUuN2MtNDMuNyAzMC45LTc5LjIgNzEuOS0xMDMuNCAxMTkuNmwtMjUuMyA0OS44Yy0yNS4xIDQ5LjMtNjIuMSA5MS41LTEwNy44IDEyMi42bC03NC4xIDUwLjZjLTEzLjEgOC45LTMwLjcgNy4zLTQxLjgtMy45bC00NC45LTQ0LjkgODYuNS02Ni41YzQyLjMtMzIuNSA3Ni43LTc0LjMgMTAwLjYtMTIybDI0LjUtNDkuMWMyNC41LTQ5IDYxLjgtOTAuNiAxMDcuOS0xMjAuMmwxMDguNy02OS45IDM4IDM4ek00ODQuMiAyMy45TDM4NC4zIDg4LjJjLTUzLjQgMzQuMy05Ni41IDgyLjQtMTI0LjkgMTM5LjFsLTI0LjUgNDkuMWMtMjAuNiA0MS4zLTUwLjMgNzcuMy04Ni45IDEwNS40bC05MS40IDcwLjMtMzYuOS0zNi45Yy0xNC40LTE0LjQtMTIuNC0zOC40IDQuMy01MC4ybDY0LjYtNDUuN2M0My43LTMwLjkgNzkuMi03MS45IDEwMy40LTExOS42bDI1LjMtNDkuOEMyNDIuMyAxMDAuOCAyNzkuMyA1OC42IDMyNSAyNy40bDc0LjEtNTAuNmMxMy4xLTguOSAzMC42LTcuMyA0MS44IDMuOWw0My4zIDQzLjN6Il19LCR0YT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwZXJzb24tZmFsbGluZy1idXJzdCIsaWNvbjpbNTc2LDUxMixbXSwiZTU0NyIsIk0yNTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDUuNGMwIDU1LjItMjMuNyAxMDctNjMuOSAxNDMuMWw2Mi45IDc1LjUgODkgMGMxNS4xIDAgMjkuMyA3LjEgMzguNCAxOS4ybDQzLjIgNTcuNmMxMC42IDE0LjEgNy43IDM0LjItNi40IDQ0LjhzLTM0LjIgNy43LTQ0LjgtNi40TDM2OCAzMjAgMjYzLjIgMzIwIDM3Ni44IDQ1OS44YzExLjEgMTMuNyA5LjEgMzMuOS00LjcgNDVzLTMzLjkgOS4xLTQ1LTQuN0wxMzcuNCAyNjYuNmMtNi4xIDE1LTkuNCAzMS4zLTkuNCA0OGwwIDY5LjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC02OS40YzAtNjcuNCAzNS40LTEyOS45IDkzLjItMTY0LjZsNC42LTIuOEMyMDAuNCAxMjQgMjI0IDgyLjQgMjI0IDM3LjRsMC01LjRjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTE2IDg4QTU2IDU2IDAgMSAxIDEyOCA4OCA1NiA1NiAwIDEgMSAxNiA4OHptMzc2LTcuOWMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTQ4YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCA0OHptMTA0IDE1MmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGw0OCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC00OCAwem0tNTQuNS05Ny41Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWwzMy45LTMzLjljOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC0zMy45IDMzLjljLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAweiJdfSxleWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicXVvdGUtcmlnaHQiLGljb246WzQ0OCw1MTIsWzgyMjEsInF1b3RlLXJpZ2h0LWFsdCJdLCJmMTBlIiwiTTQ0OCAyOTZjMCA2Ni4zLTUzLjcgMTIwLTEyMCAxMjBsLTggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw4IDBjMzAuOSAwIDU2LTI1LjEgNTYtNTZsMC04LTY0IDBjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRsNjQgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDEzNnptLTI1NiAwYzAgNjYuMy01My43IDEyMC0xMjAgMTIwbC04IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsOCAwYzMwLjkgMCA1Ni0yNS4xIDU2LTU2bDAtOC02NCAwYy0zNS4zIDAtNjQtMjguNy02NC02NGwwLTY0YzAtMzUuMyAyOC43LTY0IDY0LTY0bDY0IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAxMzZ6Il19LER0YT1leWUsTHRhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImhvdXNlLW1lZGljYWwtZmxhZyIsaWNvbjpbNjQwLDUxMixbXSwiZTUxNCIsIk00ODAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmw5NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgOTZjMCAxNy43LTE0LjMgMzItMzIgMzJsLTk2IDAgMCAyODhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC00NDhjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTI2Ny41IDU5LjFMNDAwIDE4Ni45IDQwMCA1MDMuNGMtOS40IDUuNC0yMC4zIDguNi0zMiA4LjZsLTI1NiAwYy0zNS4zIDAtNjQtMjguNy02NC02NGwwLTE0NC0xOS45IDBDMTIuNiAzMDQgMCAyOTEuNCAwIDI3NS45IDAgMjY4LjMgMy4xIDI2MSA4LjYgMjU1LjdMMjEyLjUgNTkuMUMyMTkuOSA1MiAyMjkuNyA0OCAyNDAgNDhzMjAuMSA0IDI3LjUgMTEuMXpNMjA0LjggMjU2LjhsMCA0NC00NCAwYy05LjcgMC0xNy42IDcuOS0xNy42IDE3LjZsMCAzNS4yYzAgOS43IDcuOSAxNy42IDE3LjYgMTcuNmw0NCAwIDAgNDRjMCA5LjcgNy45IDE3LjYgMTcuNiAxNy42bDM1LjIgMGM5LjcgMCAxNy42LTcuOSAxNy42LTE3LjZsMC00NCA0NCAwYzkuNyAwIDE3LjYtNy45IDE3LjYtMTcuNmwwLTM1LjJjMC05LjctNy45LTE3LjYtMTcuNi0xNy42bC00NCAwIDAtNDRjMC05LjctNy45LTE3LjYtMTcuNi0xNy42bC0zNS4yIDBjLTkuNyAwLTE3LjYgNy45LTE3LjYgMTcuNnoiXX0sRXRhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InByZXNjcmlwdGlvbiIsaWNvbjpbNDQ4LDUxMixbXSwiZjViMSIsIk0zMiAwQzE0LjMgMCAwIDE0LjMgMCAzMkwwIDI4OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtNjQgNTAuNyAwIDEyOCAxMjgtMTA1LjQgMTA1LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMjg4IDM5Ny4zIDM5My40IDUwMi42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMMzMzLjMgMzUyIDQzOC42IDI0Ni42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDI4OCAzMDYuNyAyMDIuMiAyMjAuOUMyNTEuNCAyMDkuMSAyODggMTY0LjggMjg4IDExMiAyODggNTAuMSAyMzcuOSAwIDE3NiAwTDMyIDB6TTE3NiAxNjBsLTExMiAwIDAtOTYgMTEyIDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDh6Il19LFB0YT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJkaWNlLXRocmVlIixpY29uOls0NDgsNTEyLFs5ODU4XSwiZjUyNyIsIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyem02NCA5NmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTY0IDEyOGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xMjggNjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0eiJdfSxJdGE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYnVpbGRpbmctbG9jayIsaWNvbjpbNTc2LDUxMixbXSwiZTRkNiIsIk0zMiA2NEMzMiAyOC43IDYwLjcgMCA5NiAwTDM1MiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMTIxLjNjLTQ2LjkgMTktODAgNjUtODAgMTE4LjdsMCAyNC40Yy0xOS42IDE3LjYtMzIgNDMuMS0zMiA3MS41bDAgOTZjMCA1LjUgLjUgMTAuOSAxLjMgMTYuMUw5NiA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDMyIDY0ek0xNzYgMzg0bDAgODAgODAgMCAwLTY0LjFjMC0xMy43IDEuOS0yNyA1LjUtMzkuNi01LjctNS4yLTEzLjItOC4zLTIxLjUtOC4zbC0zMiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNMzA3IDIyNC4zYy0xLS4yLTItLjMtMy0uM2wtMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDE2LjcgMGMyLjEtMjIuOCA4LjQtNDQuMyAxOC4zLTYzLjd6TTE0NCA5NmMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwem0xMTIgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnpNMTQ0IDIyNGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwem0zNTIgODAuMWMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDQ3LjkgNjQgMCAwLTQ3Ljl6TTM1MiA0MDBjMC0yMC45IDEzLjQtMzguNyAzMi00NS4zbDAtNTAuNmMwLTQ0LjIgMzUuOC04MCA4MC04MHM4MCAzNS44IDgwIDgwbDAgNTAuNmMxOC42IDYuNiAzMiAyNC40IDMyIDQ1LjNsMCA5NmMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMTI4IDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtOTZ6Il19LHR5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJpZC1jYXJkIixpY29uOls1NzYsNTEyLFs2MjE0NywiZHJpdmVycy1saWNlbnNlIl0sImYyYzIiLCJNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmw0NDggMGMzNS4zIDAgNjQgMjguNyA2NCA2NEwwIDk2em0wIDQ4bDU3NiAwIDAgMjcyYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCAxNDR6TTI0Ny4zIDQxNmMyMC4yIDAgMzUuMy0xOS40IDIyLjQtMzUtMTQuNy0xNy43LTM2LjktMjktNjEuNy0yOWwtNjQgMGMtMjQuOCAwLTQ3IDExLjMtNjEuNyAyOS0xMi45IDE1LjYgMi4yIDM1IDIyLjQgMzVsMTQyLjUgMHpNMTc2IDMxMmE1NiA1NiAwIDEgMCAwLTExMiA1NiA1NiAwIDEgMCAwIDExMnpNMzYwIDIwOGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwxMTIgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtMTEyIDB6bTAgOTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMTEyIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTExMiAweiJdfSxBdGE9dHllLGF5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjaXJjbGUtcGxheSIsaWNvbjpbNTEyLDUxMixbNjE0NjksInBsYXktY2lyY2xlIl0sImYxNDQiLCJNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMCAyNTYgMjU2IDAgMSAxIC01MTIgMHpNMTg4LjMgMTQ3LjFjLTcuNiA0LjItMTIuMyAxMi4zLTEyLjMgMjAuOWwwIDE3NmMwIDguNyA0LjcgMTYuNyAxMi4zIDIwLjlzMTYuOCA0LjEgMjQuMy0uNWwxNDQtODhjNy4xLTQuNCAxMS41LTEyLjEgMTEuNS0yMC41cy00LjQtMTYuMS0xMS41LTIwLjVsLTE0NC04OGMtNy40LTQuNS0xNi43LTQuNy0yNC4zLS41eiJdfSxOdGE9YXllLHN5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmYWNlLWxhdWdoLWJlYW0iLGljb246WzUxMiw1MTIsWzEyODUxMywibGF1Z2gtYmVhbSJdLCJmNTlhIiwiTTI1NiA1MTJhMjU2IDI1NiAwIDEgMCAwLTUxMiAyNTYgMjU2IDAgMSAwIDAgNTEyek0xMDEuNiAzMTRjLTMuNy0xMy43IDcuNS0yNiAyMS43LTI2bDI2NS40IDBjMTQuMiAwIDI1LjQgMTIuMyAyMS43IDI2LTE4LjUgNjgtODAuNiAxMTgtMTU0LjQgMTE4UzEyMCAzODIgMTAxLjYgMzE0ek0xNzYgMTY0Yy0xNS41IDAtMjggMTIuNS0yOCAyOGwwIDhjMCAxMS05IDIwLTIwIDIwcy0yMC05LTIwLTIwbDAtOGMwLTM3LjYgMzAuNC02OCA2OC02OHM2OCAzMC40IDY4IDY4bDAgOGMwIDExLTkgMjAtMjAgMjBzLTIwLTktMjAtMjBsMC04YzAtMTUuNS0xMi41LTI4LTI4LTI4em0xMzIgMjhsMCA4YzAgMTEtOSAyMC0yMCAyMHMtMjAtOS0yMC0yMGwwLThjMC0zNy42IDMwLjQtNjggNjgtNjhzNjggMzAuNCA2OCA2OGwwIDhjMCAxMS05IDIwLTIwIDIwcy0yMC05LTIwLTIwbDAtOGMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOHoiXX0sUnRhPXN5ZSxPdGE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibGVhZiIsaWNvbjpbNTEyLDUxMixbXSwiZjA2YyIsIk00NzEuMyA2LjdDNDc3LjcgLjYgNDg3LTEuNiA0OTUuNiAxLjIgNTA1LjQgNC41IDUxMiAxMy43IDUxMiAyNGwwIDE4Ni45YzAgMTMxLjItMTA4LjEgMjM3LjEtMjM4LjggMjM3LjEtNzcgMC0xNDMuNC00OS41LTE2Ny41LTExOC43LTM1LjQgMzAuOC01Ny43IDc2LjEtNTcuNyAxMjYuNyAwIDEzLjMtMTAuNyAyNC0yNCAyNFMwIDQ2OS4zIDAgNDU2QzAgMzgxLjEgMzguMiAzMTUuMSA5Ni4xIDI3Ni4zIDEzMS40IDI1Mi43IDE3My41IDI0MCAyMTYgMjQwbDgwIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTgwIDBjLTM5LjcgMC03Ny4zIDguOC0xMTEgMjQuNSAyMy4zLTcwIDg5LjItMTIwLjUgMTY3LTEyMC41IDY2LjQgMCAxMTUuOC0yMi4xIDE0OC43LTQ0IDE5LjItMTIuOCAzNS41LTI4LjEgNTAuNy00NS4zeiJdfSxGdGE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaG91c2UtY2hpbW5leS11c2VyIixpY29uOls1MTIsNTEyLFtdLCJlMDY1IiwiTTIzNC4yIDguNmMxMi4zLTExLjQgMzEuMy0xMS40IDQzLjUgMEwzNjggOTIuMyAzNjggODBjMC0xNy43IDE0LjMtMzIgMzItMzJsMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDEwMS41IDM3LjggMzUuMWM5LjYgOSAxMi44IDIyLjkgOCAzNS4xUzQ5My4yIDI3MiA0ODAgMjcybC0xNiAwIDAgMTc2YzAgMzUuMy0yOC43IDY0LTY0IDY0bC0yODggMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRsMC0xNzYtMTYgMGMtMTMuMiAwLTI1LTguMS0yOS44LTIwLjNzLTEuNi0yNi4yIDgtMzUuMWwyMjQtMjA4ek0zMTIgMjU2YTU2IDU2IDAgMSAwIC0xMTIgMCA1NiA1NiAwIDEgMCAxMTIgMHpNMTQ0IDQzMmMwIDguOCA3LjIgMTYgMTYgMTZsMTkyIDBjOC44IDAgMTYtNy4yIDE2LTE2IDAtNDQuMi0zNS44LTgwLTgwLTgwbC02NCAwYy00NC4yIDAtODAgMzUuOC04MCA4MHoiXX0sTG9lPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InJvdGF0ZS1yaWdodCIsaWNvbjpbNTEyLDUxMixbInJlZG8tYWx0Iiwicm90YXRlLWZvcndhcmQiXSwiZjJmOSIsIk00ODggMTkybC0xNDQgMGMtOS43IDAtMTguNS01LjgtMjIuMi0xNC44cy0xLjctMTkuMyA1LjItMjYuMmw0Ni43LTQ2LjdjLTc1LjMtNTguNi0xODQuMy01My4zLTI1My41IDE1LjktNzUgNzUtNzUgMTk2LjUgMCAyNzEuNXMxOTYuNSA3NSAyNzEuNSAwYzguMi04LjIgMTUuNS0xNi45IDIxLjktMjYuMSAxMC4xLTE0LjUgMzAuMS0xOCA0NC42LTcuOXMxOCAzMC4xIDcuOSA0NC42Yy04LjUgMTIuMi0xOC4yIDIzLjgtMjkuMSAzNC43LTEwMCAxMDAtMjYyLjEgMTAwLTM2MiAwUy0yNSAxNzUgNzUgNzVjOTQuMy05NC4zIDI0My43LTk5LjYgMzQ0LjMtMTYuMkw0NzEgN2M2LjktNi45IDE3LjItOC45IDI2LjItNS4yUzUxMiAxNC4zIDUxMiAyNGwwIDE0NGMwIDEzLjMtMTAuNyAyNC0yNCAyNHoiXX0sQnRhPUxvZSxIdGE9TG9lLHF0YT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0b290aCIsaWNvbjpbNDQ4LDUxMixbMTI5NDYzXSwiZjVjOSIsIk0xNDUgNS43TDIyNCAzMiAzMDMgNS43QzMxNC4zIDEuOSAzMjYgMCAzMzcuOSAwIDM5OC43IDAgNDQ4IDQ5LjMgNDQ4IDExMC4xbDAgNjguNWMwIDI5LjQtOS41IDU4LjEtMjcuMiA4MS42bC0xLjEgMS41Yy0xMi45IDE3LjItMjEuMyAzNy40LTI0LjMgNTguN0wzNzMuNyA0NzEuOWMtMy4zIDIzLTIzIDQwLjEtNDYuMiA0MC4xLTIyLjggMC00Mi4zLTE2LjUtNDYtMzlMMjYxLjMgMzUxLjZjLTMtMTguMi0xOC44LTMxLjYtMzcuMy0zMS42cy0zNC4yIDEzLjQtMzcuMyAzMS42TDE2Ni41IDQ3M2MtMy44IDIyLjUtMjMuMiAzOS00NiAzOS0yMy4yIDAtNDIuOS0xNy4xLTQ2LjItNDAuMUw1Mi42IDMyMC41Yy0zLTIxLjMtMTEuNC00MS41LTI0LjMtNTguN2wtMS4xLTEuNUM5LjUgMjM2LjcgMCAyMDguMSAwIDE3OC43bDAtNjguNUMwIDQ5LjMgNDkuMyAwIDExMC4xIDAgMTIyIDAgMTMzLjcgMS45IDE0NSA1Ljd6Il19LGp0YT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJob3VzZS1jaGltbmV5LXdpbmRvdyIsaWNvbjpbNTEyLDUxMixbXSwiZTAwZCIsIk0yMzQuMiA4LjZjMTIuMy0xMS40IDMxLjMtMTEuNCA0My41IDBMMzY4IDkyLjMgMzY4IDgwYzAtMTcuNyAxNC4zLTMyIDMyLTMybDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAxMDEuNSAzNy44IDM1LjFjOS42IDkgMTIuOCAyMi45IDggMzUuMVM0OTMuMiAyNzIgNDgwIDI3MmwtMTYgMCAwIDE3NmMwIDM1LjMtMjguNyA2NC02NCA2NGwtMjg4IDBjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtMTc2LTE2IDBjLTEzLjIgMC0yNS04LjEtMjkuOC0yMC4zcy0xLjYtMjYuMiA4LTM1LjFsMjI0LTIwOHpNMjE2IDIyNGMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCA4MGMwIDEzLjMgMTAuNyAyNCAyNCAyNGw4MCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0bDAtODBjMC0xMy4zLTEwLjctMjQtMjQtMjRsLTgwIDB6Il19LFZ0YT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJtb3RvcmN5Y2xlIixpY29uOls2NDAsNTEyLFsxMjc5NDldLCJmMjFjIiwiTTI4MCAxNmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw1Ni42IDAgMjIuNSA0OC43LTk1LjEgNzEuM2MtMzMuNC0yNS4xLTc1LTQwLTEyMC00MGwtNTYgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw1NiAwYzc4LjUgMCAxNDMuMiA1OS42IDE1MS4yIDEzNmwtMjUuNCAwYy0xMS4yLTU5LjItNjMuMy0xMDQtMTI1LjgtMTA0LTcwLjcgMC0xMjggNTcuMy0xMjggMTI4UzczLjMgNDgwIDE0NCA0ODBjNjIuNSAwIDExNC41LTQ0LjggMTI1LjgtMTA0bDUwLjIgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNGwwLTIyLjVjMC00NS4xIDI1LjctODUuNCA2NS41LTEwNy43bDEyLjEgMjYuMWMtMzIuNCAyMy4yLTUzLjUgNjEuMi01My41IDEwNC4xIDAgNzAuNyA1Ny4zIDEyOCAxMjggMTI4czEyOC01Ny4zIDEyOC0xMjgtNTcuMy0xMjgtMTI4LTEyOGMtMTAuNyAwLTIxIDEuMy0zMC45IDMuOEw0MzMuOCAxNjAgNDg4IDE2MGMxMy4zIDAgMjQtMTAuNyAyNC0yNGwwLTQ4YzAtMTMuMy0xMC43LTI0LTI0LTI0bC01My4zIDBjLTYuOSAwLTEzLjcgMi4yLTE5LjIgNi40bC0xNy4xIDEyLjgtMjQuNi01My4zQzM2OS45IDIxLjQgMzYxLjQgMTYgMzUyIDE2bC03MiAwek00NDUuOCAzMDAuNGwyOC40IDYxLjZjNS42IDEyIDE5LjggMTcuMyAzMS44IDExLjdzMTcuMy0xOS44IDExLjctMzEuOGwtMjguNS02MS42YzIuMi0uMiA0LjQtLjMgNi43LS4zIDM5LjggMCA3MiAzMi4yIDcyIDcycy0zMi4yIDcyLTcyIDcyLTcyLTMyLjItNzItNzJjMC0yMC4yIDguMy0zOC41IDIxLjgtNTEuNnpNMTQ0IDQyNGMtMzkuOCAwLTcyLTMyLjItNzItNzJzMzIuMi03MiA3Mi03MmMzMS4zIDAgNTggMjAgNjcuOSA0OEwxNDQgMzI4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDY3LjkgMGMtOS45IDI4LTM2LjYgNDgtNjcuOSA0OHoiXX0saXllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJhY2t3YXJkLWZhc3QiLGljb246WzUxMiw1MTIsWzkxOTgsImZhc3QtYmFja3dhcmQiXSwiZjA0OSIsIk00OTIuMiA0NzcuNmMtMTIgNS0yNS43IDIuMi0zNC45LTYuOUwyODggMzAxLjMgMjg4IDQ0OGMwIDEyLjktNy44IDI0LjYtMTkuOCAyOS42cy0yNS43IDIuMi0zNC45LTYuOUw2NCAzMDEuMyA2NCA0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJTMCA0NjUuNyAwIDQ0OEwwIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMyUzY0IDQ2LjMgNjQgNjRMNjQgMjEwLjcgMjMzLjQgNDEuNGM5LjItOS4yIDIyLjktMTEuOSAzNC45LTYuOVMyODggNTEuMSAyODggNjRsMCAxNDYuNyAxNjkuNC0xNjkuNGM5LjItOS4yIDIyLjktMTEuOSAzNC45LTYuOVM1MTIgNTEuMSA1MTIgNjRsMCAzODRjMCAxMi45LTcuOCAyNC42LTE5LjggMjkuNnoiXX0sVXRhPWl5ZSxyeWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYWRkcmVzcy1ib29rIixpY29uOls1MTIsNTEyLFs2MjEzOCwiY29udGFjdC1ib29rIl0sImYyYjkiLCJNOTYgMEM2MC43IDAgMzIgMjguNyAzMiA2NGwwIDM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwyODggMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTM4NGMwLTM1LjMtMjguNy02NC02NC02NEw5NiAwek0yMDggMjg4bDY0IDBjNDQuMiAwIDgwIDM1LjggODAgODAgMCA4LjgtNy4yIDE2LTE2IDE2bC0xOTIgMGMtOC44IDAtMTYtNy4yLTE2LTE2IDAtNDQuMiAzNS44LTgwIDgwLTgwem0tMjQtOTZhNTYgNTYgMCAxIDEgMTEyIDAgNTYgNTYgMCAxIDEgLTExMiAwek01MTIgODBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZsMCA2NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtNjR6bTAgMTI4YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2bDAgNjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmwwLTY0ek00OTYgMzIwYy04LjggMC0xNiA3LjItMTYgMTZsMCA2NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtNjRjMC04LjgtNy4yLTE2LTE2LTE2eiJdfSxXdGE9cnllLEd0YT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzYWlsYm9hdCIsaWNvbjpbNTEyLDUxMixbXSwiZTQ0NSIsIk0yNDAgMzUuOWwwIDM0OC4xLTIyNCAwYy04LjggMC0xNiA3LjItMTYgMTYgMCA2MS45IDUwLjEgMTEyIDExMiAxMTJsMjg4IDBjNjEuOSAwIDExMi01MC4xIDExMi0xMTIgMC04LjgtNy4yLTE2LTE2LTE2bC0yMDggMCAwLTQ4IDE2MS43IDBjMTIuOSAwIDIwLjUtMTQuNCAxMy4yLTI1TDI2OS4yIDI2LjljLTguOS0xMy0yOS4yLTYuNy0yOS4yIDl6TTE5MiAzMjBsMC0xODQuMmMwLTE2LjEtMjEtMjIuMS0yOS42LTguNUw0Ny4zIDMxMS41Yy02LjcgMTAuNyAxIDI0LjUgMTMuNiAyNC41TDE3NiAzMzZjOC44IDAgMTYtNy4yIDE2LTE2eiJdfSxLdGE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYm9vay1ib29rbWFyayIsaWNvbjpbNDQ4LDUxMixbXSwiZTBiYiIsIk05NiA1MTJsMzIwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsMC02Ni43YzE4LjYtNi42IDMyLTI0LjQgMzItNDUuM2wwLTI4OGMwLTI2LjUtMjEuNS00OC00OC00OGwtNDggMCAwIDE2OS40YzAgMTIuNS0xMC4xIDIyLjYtMjIuNiAyMi42LTYgMC0xMS44LTIuNC0xNi02LjZMMjcyIDE0NCAyMzAuNiAxODUuNGMtNC4yIDQuMi0xMCA2LjYtMTYgNi42LTEyLjUgMC0yMi42LTEwLjEtMjIuNi0yMi42TDE5MiAwIDk2IDBDNDMgMCAwIDQzIDAgOTZMMCA0MTZjMCA1MyA0MyA5NiA5NiA5NnpNNjQgNDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMybDI1NiAwIDAgNjQtMjU2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyeiJdfSxZdGE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibWFnbmlmeWluZy1nbGFzcy1hcnJvdy1yaWdodCIsaWNvbjpbNTEyLDUxMixbXSwiZTUyMSIsIk00MTYgMjA4YzAgNDUuOS0xNC45IDg4LjMtNDAgMTIyLjdMNTAyLjYgNDU3LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBMMzMwLjcgMzc2QzI5Ni4zIDQwMS4xIDI1My45IDQxNiAyMDggNDE2IDkzLjEgNDE2IDAgMzIyLjkgMCAyMDhTOTMuMSAwIDIwOCAwIDQxNiA5My4xIDQxNiAyMDh6TTMwNSAyMjVjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlsLTcyLTcyYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDMxIDMxLTEwMi4xIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMTAyLjEgMC0zMSAzMWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDcyLTcyeiJdfSxveWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibWljcm9waG9uZS1saW5lcyIsaWNvbjpbMzg0LDUxMixbMTI3ODk3LCJtaWNyb3Bob25lLWFsdCJdLCJmM2M5IiwiTTk2IDk2YzAtNTMgNDMtOTYgOTYtOTYgNTAuMyAwIDkxLjYgMzguNyA5NS43IDg4TDIzMiA4OGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw1NiAwIDAgNDgtNTYgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw1NS43IDBjLTQuMSA0OS4zLTQ1LjMgODgtOTUuNyA4OC01MyAwLTk2LTQzLTk2LTk2TDk2IDk2ek0yNCAxNjBjMTMuMyAwIDI0IDEwLjcgMjQgMjRsMCA0MGMwIDc5LjUgNjQuNSAxNDQgMTQ0IDE0NHMxNDQtNjQuNSAxNDQtMTQ0bDAtNDBjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDQwYzAgOTcuOS03My4zIDE3OC43LTE2OCAxOTAuNWwwIDQ5LjUgNDggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMTQ0IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsNDggMCAwLTQ5LjVDNzMuMyA0MDIuNyAwIDMyMS45IDAgMjI0bDAtNDBjMC0xMy4zIDEwLjctMjQgMjQtMjR6Il19LFp0YT1veWUsbnllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InJlcGx5LWFsbCIsaWNvbjpbNTc2LDUxMixbIm1haWwtcmVwbHktYWxsIl0sImYxMjIiLCJNMzMyLjIgMTguNGMxMiA1IDE5LjggMTYuNiAxOS44IDI5LjZsMCA4MCA0OCAwYzk3LjIgMCAxNzYgNzguOCAxNzYgMTc2IDAgMTEzLjMtODEuNSAxNjMuOS0xMDAuMiAxNzQuMS0yLjUgMS40LTUuMyAxLjktOC4xIDEuOS0xMC45IDAtMTkuNy04LjktMTkuNy0xOS43IDAtNy41IDQuMy0xNC40IDkuOC0xOS41IDkuNC04LjggMjIuMi0yNi40IDIyLjItNTYuNyAwLTUzLTQzLTk2LTk2LTk2bC0zMiAwIDAgODBjMCAxMi45LTcuOCAyNC42LTE5LjggMjkuNnMtMjUuNyAyLjItMzQuOS02LjlsLTE2MC0xNjBjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zbDE2MC0xNjBjOS4yLTkuMiAyMi45LTExLjkgMzQuOS02Ljl6TTIwNS42IDIzLjFjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlMNTQuNiAyMDggMjA1LjYgMzU4LjljOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMEwxMCAyMzEuMmMtNi40LTYtMTAtMTQuNC0xMC0yMy4yczMuNi0xNy4yIDEwLTIzLjJMMTcxLjYgMjMuMWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHoiXX0sWHRhPW55ZSxRdGE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidW5pdmVyc2FsLWFjY2VzcyIsaWNvbjpbNTEyLDUxMixbXSwiZjI5YSIsIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwIDI1NiAyNTYgMCAxIDEgLTUxMiAwem0xNjEuNS04Ni4xYy0xMi4yLTUuMi0yNi4zIC40LTMxLjUgMTIuNnMuNCAyNi4zIDEyLjYgMzEuNWwxMS45IDUuMWMxNy4zIDcuNCAzNS4yIDEyLjkgNTMuNiAxNi4zbDAgNTAuMWMwIDQuMy0uNyA4LjYtMi4xIDEyLjZsLTI4LjcgODYuMWMtNC4yIDEyLjYgMi42IDI2LjIgMTUuMiAzMC40czI2LjItMi42IDMwLjQtMTUuMmwyNC40LTczLjJjMS4zLTMuOCA0LjgtNi40IDguOC02LjRzNy42IDIuNiA4LjggNi40bDI0LjQgNzMuMmM0LjIgMTIuNiAxNy44IDE5LjQgMzAuNCAxNS4yUzMzOSAzOTcgMzM0LjggMzg0LjRsLTI4LjctODYuMWMtMS40LTQuMS0yLjEtOC4zLTIuMS0xMi42bDAtNTAuMWMxOC40LTMuNSAzNi4zLTguOSA1My42LTE2LjNsMTEuOS01LjFjMTIuMi01LjIgMTcuOC0xOS4zIDEyLjYtMzEuNXMtMTkuMy0xNy44LTMxLjUtMTIuNkwzMzguNyAxNzVjLTI2LjEgMTEuMi01NC4yIDE3LTgyLjcgMTdzLTU2LjUtNS44LTgyLjctMTdsLTExLjktNS4xek0yNTYgMTYwYTQwIDQwIDAgMSAwIDAtODAgNDAgNDAgMCAxIDAgMCA4MHoiXX0sRW9lPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRvaWxldC1wYXBlciIsaWNvbjpbNTEyLDUxMixbMTI5NTMxLDYzMjYzLCJ0b2lsZXQtcGFwZXItYWx0IiwidG9pbGV0LXBhcGVyLWJsYW5rIl0sImY3MWUiLCJNMzI3LjEgMzJjLTguOCAxMS4xLTE2IDIzLjEtMjEuOSAzNC44LTIxLjQgNDIuNy0zMy4yIDk4LjQtMzMuMiAxNTcuMmwwIDI2NGMwIDMwLjktMjUuMSA1Ni01NiA1Nkw1NiA1NDRjLTMwLjkgMC01Ni0yNS4xLTU2LTU2TDAgMjI0QzAgMTE4IDQzIDMyIDk2IDMybDIzMS4xIDB6TTQxNiA0MTZjLTUzIDAtOTYtODYtOTYtMTkyczQzLTE5MiA5Ni0xOTIgOTYgODYgOTYgMTkyLTQzIDE5Mi05NiAxOTJ6bTAtMTI4YzE3LjcgMCAzMi0yOC43IDMyLTY0cy0xNC4zLTY0LTMyLTY0LTMyIDI4LjctMzIgNjQgMTQuMyA2NCAzMiA2NHoiXX0sSnRhPUVvZSxlYWE9RW9lLHRhYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ2ci1jYXJkYm9hcmQiLGljb246WzU3Niw1MTIsW10sImY3MjkiLCJNNTEyIDk2TDY0IDk2QzI4LjcgOTYgMCAxMjQuNyAwIDE2MEwwIDM1MmMwIDM1LjMgMjguNyA2NCA2NCA2NGwxMTcuNSAwYzE3IDAgMzMuMy02LjcgNDUuMy0xOC43bDMzLjktMzMuOWM3LjItNy4yIDE3LjEtMTEuMyAyNy4zLTExLjNzMjAuMSA0LjEgMjcuMyAxMS4zbDMzLjkgMzMuOWMxMiAxMiAyOC4zIDE4LjcgNDUuMyAxOC43TDUxMiA0MTZjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0xOTJjMC0zNS4zLTI4LjctNjQtNjQtNjR6TTgwIDI0MGE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6bTM1Mi02NGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHoiXX0sYWFhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBpenphLXNsaWNlIixpY29uOls1MTIsNTEyLFtdLCJmODE4IiwiTTE2OS43IC45Yy0yMi44LTEuNi00MS45IDE0LTQ3LjUgMzQuN0wxMTIuNSA3MkMyOTMuMyA3Mi4zIDQzOS43IDIxOC43IDQ0MCAzOTkuNWwzNi40LTkuN2MyMC44LTUuNSAzNi4zLTI0LjcgMzQuNy00Ny41LTEyLjYtMTgyLjgtMTU4LjYtMzI4LjgtMzQxLjQtMzQxLjR6bTIyMiA0MTEuNWMuMi00LjEgLjMtOC4yIC4zLTEyLjQgMC0xNTQuNi0xMjUuNC0yODAtMjgwLTI4MC00LjEgMC04LjMgLjEtMTIuNCAuM0wuNSA0OTEuOWMtMS41IDUuNSAuMSAxMS40IDQuMSAxNS40czkuOSA1LjYgMTUuNCA0LjFsMzcxLjYtOTkuMXpNMTc2IDIwOGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTY0IDEyOGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwek05NiAzODRhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHoiXX0sc2FhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNwcmF5LWNhbiIsaWNvbjpbNTc2LDUxMixbXSwiZjViZCIsIk0xOTIgMGw2NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgODAtMTI4IDAgMC04MGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNNjQgMjU2YzAtNTMgNDMtOTYgOTYtOTZsMTI4IDBjNTMgMCA5NiA0MyA5NiA5NmwwIDIwOGMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMjI0IDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtMjA4em0yNDAgODBhODAgODAgMCAxIDAgLTE2MCAwIDgwIDgwIDAgMSAwIDE2MCAwek0zMjAgNjRhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNNDQ4IDMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptNjQgMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMzIgNjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek01MTIgMjU2YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTQ0OCAxMjhhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0eiJdfSxseWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidm9sdW1lLWxvdyIsaWNvbjpbNDQ4LDUxMixbMTI4MjY0LCJ2b2x1bWUtZG93biJdLCJmMDI3IiwiTTQ4IDM1Mmw0OCAwIDEzNC4xIDExOS4yYzYuNCA1LjcgMTQuNiA4LjggMjMuMSA4LjggMTkuMiAwIDM0LjgtMTUuNiAzNC44LTM0LjhsMC0zNzguNGMwLTE5LjItMTUuNi0zNC44LTM0LjgtMzQuOC04LjUgMC0xNi43IDMuMS0yMy4xIDguOEw5NiAxNjAgNDggMTYwYy0yNi41IDAtNDggMjEuNS00OCA0OGwwIDk2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4ek0zODAuNiAxODEuNWMtMTAuMy04LjQtMjUuNC02LjgtMzMuOCAzLjVzLTYuOCAyNS40IDMuNSAzMy44QzM2MS4xIDIyNy42IDM2OCAyNDEgMzY4IDI1NnMtNi45IDI4LjQtMTcuNyAzNy4zYy0xMC4zIDguNC0xMS44IDIzLjUtMy41IDMzLjhzMjMuNSAxMS44IDMzLjggMy41QzQwMi4xIDMxMi45IDQxNiAyODYuMSA0MTYgMjU2cy0xMy45LTU2LjktMzUuNS03NC41eiJdfSxpYWE9bHllLHJhYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjcm9zcyIsaWNvbjpbMzg0LDUxMixbMTI4MzI3LDEwMDEzXSwiZjY1NCIsIk0xNzYgMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCA4MC04MCAwYy0yNi41IDAtNDggMjEuNS00OCA0OGwwIDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDgwIDAgMCAyMDhjMCAyNi41IDIxLjUgNDggNDggNDhsMzIgMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTIwOCA4MCAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtMzJjMC0yNi41LTIxLjUtNDgtNDgtNDhsLTgwIDAgMC04MGMwLTI2LjUtMjEuNS00OC00OC00OEwxNzYgMHoiXX0sY3llPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBlcnNvbiIsaWNvbjpbMzg0LDUxMixbMTI5NDg1LCJtYWxlIl0sImYxODMiLCJNMjQ4IDI0YTU2IDU2IDAgMSAwIC0xMTIgMCA1NiA1NiAwIDEgMCAxMTIgMHptMjQgMjEyLjdsNDYuMyA2Mi40YzEwLjUgMTQuMiAzMC42IDE3LjIgNDQuOCA2LjZzMTcuMi0zMC42IDYuNi00NC44bC03MC41LTk1QzI3NCAxMzIgMjM0LjMgMTEyIDE5MiAxMTJzLTgyIDIwLTEwNy4yIDUzLjlsLTcwLjUgOTVjLTEwLjUgMTQuMi03LjYgMzQuMiA2LjYgNDQuOHMzNC4yIDcuNiA0NC44LTYuNkwxMTIgMjM2LjcgMTEyIDUxMmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTYwYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZsMCAxNjBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTI3NS4zeiJdfSxvYWE9Y3llLGR5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJob3VyZ2xhc3MiLGljb246WzM4NCw1MTIsWzkyMDMsNjIwMzIsImhvdXJnbGFzcy1lbXB0eSJdLCJmMjU0IiwiTTAgMzJDMCAxNC4zIDE0LjMgMCAzMiAwTDM1MiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybDAgMTFjMCA0Mi40LTE2LjkgODMuMS00Ni45IDExMy4xbC02Ny45IDY3LjkgNjcuOSA2Ny45YzMwIDMwIDQ2LjkgNzAuNyA0Ni45IDExMy4xbDAgMTFjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMMzIgNTEyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDAtMTFjMC00Mi40IDE2LjktODMuMSA0Ni45LTExMy4xbDY3LjktNjcuOS02Ny45LTY3LjlDNDguOSAxNTguMSAzMiAxMTcuNCAzMiA3NWwwLTExQzE0LjMgNjQgMCA0OS43IDAgMzJ6TTk2IDY0bDAgMTFjMCAyNS41IDEwLjEgNDkuOSAyOC4xIDY3LjlsNjcuOSA2Ny45IDY3LjktNjcuOWMxOC0xOCAyOC4xLTQyLjQgMjguMS02Ny45bDAtMTEtMTkyIDB6bTAgMzg0bDE5MiAwIDAtMTFjMC0yNS41LTEwLjEtNDkuOS0yOC4xLTY3LjlsLTY3LjktNjcuOS02Ny45IDY3LjljLTE4IDE4LTI4LjEgNDIuNC0yOC4xIDY3LjlsMCAxMXoiXX0sbmFhPWR5ZSxsYWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmlzaCIsaWNvbjpbNTc2LDUxMixbMTI4MDMxXSwiZjU3OCIsIk0xODAuNSAxNDEuNUMyMTkuNyAxMDguNSAyNzIuNiA4MCAzMzYgODBzMTE2LjMgMjguNSAxNTUuNSA2MS41YzM5LjEgMzMgNjYuOSA3Mi40IDgxIDk5LjggNC43IDkuMiA0LjcgMjAuMSAwIDI5LjMtMTQuMSAyNy40LTQxLjkgNjYuOC04MSA5OS44LTM5LjIgMzMuMS05MiA2MS41LTE1NS41IDYxLjVzLTExNi4zLTI4LjUtMTU1LjUtNjEuNWMtMTYuMi0xMy43LTMwLjUtMjguNS00Mi43LTQzLjFMNDguMSAzNzkuNmMtMTIuNSA3LjMtMjguNCA1LjMtMzguNy00LjlzLTEyLjQtMjYtNS4zLTM4LjZMNTAgMjU2IDQuMiAxNzUuOWMtNy4yLTEyLjYtNS0yOC40IDUuMy0zOC42czI2LjEtMTIuMiAzOC43LTQuOWw4OS43IDUyLjNjMTIuMi0xNC42IDI2LjUtMjkuNCA0Mi43LTQzLjF6TTQ0OCAyNTZhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHoiXX0sY2FhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImRydW1zdGljay1iaXRlIixpY29uOls1MTIsNTEyLFtdLCJmNmQ3IiwiTTE2MCAyNjUuMmMwIDguNS0zLjQgMTYuNi05LjQgMjIuNmwtMjYuOCAyNi44Yy0xMi4zIDEyLjMtMzIuNSAxMS40LTQ5LjQgNy4yLTQuNi0xLjEtOS41LTEuOC0xNC41LTEuOC0zMy4xIDAtNjAgMjYuOS02MCA2MHMyNi45IDYwIDYwIDYwYzYuMyAwIDEyIDUuNyAxMiAxMiAwIDMzLjEgMjYuOSA2MCA2MCA2MHM2MC0yNi45IDYwLTYwYzAtNS0uNi05LjgtMS44LTE0LjUtNC4yLTE2LjktNS4yLTM3LjEgNy4yLTQ5LjRsMjYuOC0yNi44YzYtNiAxNC4xLTkuNCAyMi42LTkuNGw4OS4yIDBjNi4zIDAgMTIuNC0uMyAxOC41LTEgMTEuOS0xLjIgMTYuNC0xNS41IDEwLjgtMjYtOC41LTE1LjgtMTMuMy0zMy44LTEzLjMtNTMgMC02MS45IDUwLjEtMTEyIDExMi0xMTIgOCAwIDE1LjcgLjggMjMuMiAyLjQgMTEuNyAyLjUgMjQuMS01LjkgMjItMTcuNi0xNC43LTgyLjMtODYuNy0xNDQuOC0xNzMuMi0xNDQuOC05Ny4yIDAtMTc2IDc4LjgtMTc2IDE3NmwwIDg5LjJ6Il19LGRhYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjaGFydC1zaW1wbGUiLGljb246WzUxMiw1MTIsW10sImU0NzMiLCJNMTkyIDgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4bDMyIDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCAzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhsLTMyIDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtMzUyek0wIDI3MmMwLTI2LjUgMjEuNS00OCA0OC00OGwzMiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgMTYwYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC0zMiAwYy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDI3MnpNNDMyIDk2bDMyIDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCAyODhjMCAyNi41LTIxLjUgNDgtNDggNDhsLTMyIDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtMjg4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4eiJdfSx1YWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYXRvbSIsaWNvbjpbNDQ4LDUxMixbOTg4M10sImY1ZDIiLCJNMjI0IDM5OC44Yy0xMS44IDUuMS0yMy40IDkuNy0zNC45IDEzLjUgMTYuNyAzMy44IDMxIDM1LjcgMzQuOSAzNS43czE4LjEtMS45IDM0LjktMzUuN2MtMTEuNC0zLjktMjMuMS04LjQtMzQuOS0xMy41ek00MTQgMjU2YzMzIDQ1LjIgNDQuMyA5MC45IDIzLjYgMTI4LTIwLjIgMzYuMy02Mi41IDQ5LjMtMTE1LjIgNDMuMi0yMiA1Mi4xLTU1LjcgODQuOC05OC40IDg0LjhzLTc2LjQtMzIuNy05OC40LTg0LjhDNzIuOSA0MzMuMyAzMC42IDQyMC4zIDEwLjQgMzg0LTEwLjMgMzQ2LjkgMSAzMDEuMiAzNCAyNTYgMSAyMTAuOC0xMC4zIDE2NS4xIDEwLjQgMTI4IDMwLjYgOTEuNyA3Mi45IDc4LjcgMTI1LjYgODQuOCAxNDcuNiAzMi43IDE4MS4yIDAgMjI0IDBzNzYuNCAzMi43IDk4LjQgODQuOGM1Mi43LTYuMSA5NSA2LjggMTE1LjIgNDMuMiAyMC43IDM3LjEgOS40IDgyLjgtMjMuNiAxMjh6bS02NS44IDY3LjRjLTEuNyAxNC4yLTMuOSAyOC02LjcgNDEuMiAzMS44IDEuNCAzOC42LTguNyA0MC4yLTExLjcgMi4zLTQuMiA3LTE3LjktMTEuOS00OC4xLTYuOCA2LjMtMTQgMTIuNS0yMS42IDE4LjZ6bS02LjctMTc1LjljMi44IDEzLjEgNSAyNi45IDYuNyA0MS4yIDcuNiA2LjEgMTQuOCAxMi4zIDIxLjYgMTguNiAxOC45LTMwLjIgMTQuMi00NCAxMS45LTQ4LjEtMS42LTIuOS04LjQtMTMtNDAuMi0xMS43ek0yNTguOSA5OS43QzI0Mi4xIDY1LjkgMjI3LjkgNjQgMjI0IDY0cy0xOC4xIDEuOS0zNC45IDM1LjdjMTEuNCAzLjkgMjMuMSA4LjQgMzQuOSAxMy41IDExLjgtNS4xIDIzLjQtOS43IDM0LjktMTMuNXptLTE1OSA4OC45YzEuNy0xNC4zIDMuOS0yOCA2LjctNDEuMi0zMS44LTEuNC0zOC42IDguNy00MC4yIDExLjctMi4zIDQuMi03IDE3LjkgMTEuOSA0OC4xIDYuOC02LjMgMTQtMTIuNSAyMS42LTE4LjZ6TTc4LjIgMzA0LjhjLTE4LjkgMzAuMi0xNC4yIDQ0LTExLjkgNDguMSAxLjYgMi45IDguNCAxMyA0MC4yIDExLjctMi44LTEzLjEtNS0yNi45LTYuNy00MS4yLTcuNi02LjEtMTQuOC0xMi4zLTIxLjYtMTguNnpNMzA0IDI1NmE4MCA4MCAwIDEgMCAtMTYwIDAgODAgODAgMCAxIDAgMTYwIDB6bS04MC0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6Il19LHBhYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwIixpY29uOlszMjAsNTEyLFsxMTJdLCI1MCIsIk0wIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMybDEyOCAwYzg4LjQgMCAxNjAgNzEuNiAxNjAgMTYwUzI0OC40IDM1MiAxNjAgMzUybC05NiAwIDAgOTZjMCAxNy43LTE0LjMgMzItMzIgMzJTMCA0NjUuNyAwIDQ0OEwwIDY0ek02NCAyODhsOTYgMGM1MyAwIDk2LTQzIDk2LTk2cy00My05Ni05Ni05NmwtOTYgMCAwIDE5MnoiXX0saGFhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImpldC1maWdodGVyLXVwIixpY29uOls1MTIsNTEyLFtdLCJlNTE4IiwiTTIwNi44IDQ3LjhDMjAyLjMgNTguNSAyMDAgNzAgMjAwIDgxLjZsMCAxMDAuNC0xNTIgMTE0IDAtNDhjMC0xMy4zLTEwLjctMjQtMjQtMjRTMCAyMzQuNyAwIDI0OEwwIDM5MmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtOCAxNTIgMCAwIDU0LjQtNjYgNTIuOGMtMy44IDMtNiA3LjYtNiAxMi41bDAgMjQuM2MwIDguOCA3LjIgMTYgMTYgMTZsODggMCAwLTQwYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCA0MCA4OCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTI0LjNjMC00LjktMi4yLTkuNS02LTEyLjVsLTY2LTUyLjggMC01NC40IDE1MiAwIDAgOGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtMTQ0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0bDAgNDgtMTUyLTExNCAwLTEwMC40YzAtMTEuNi0yLjMtMjMuMS02LjgtMzMuOGwtMjcuMS02NUMyNzQuNC0yNi4yIDI2NS43LTMyIDI1Ni0zMnMtMTguNCA1LjgtMjIuMiAxNC44bC0yNy4xIDY1eiJdfSxmYWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGx1Zy1jaXJjbGUteG1hcmsiLGljb246WzY0MCw1MTIsW10sImU1NjAiLCJNMTkyLTMyYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgOTYgMTI4IDAgMC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgOTYgNjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwwIDQ4LjdjLTk4LjYgOC4xLTE3NiA5MC43LTE3NiAxOTEuMyAwIDI3LjMgNS43IDUzLjMgMTYgNzYuOWwwIDMuMWMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTY2LjdDMTY1LjIgMzk4LjEgOTYgMzE5LjEgOTYgMjI0bDAtNjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyUzc4LjMgOTYgOTYgOTZsNjQgMCAwLTk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyek00OTYgMjU2YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptNTkuMyAxMDcuM2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNnMtMTYuNC02LjItMjIuNiAwbC0zNi43IDM2LjctMzYuNy0zNi43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42bDM2LjcgMzYuNy0zNi43IDM2LjdjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMGwzNi43LTM2LjcgMzYuNyAzNi43YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNmwtMzYuNy0zNi43IDM2LjctMzYuN3oiXX0sbWFhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNoZWV0LXBsYXN0aWMiLGljb246WzM4NCw1MTIsW10sImU1NzEiLCJNMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMTQ5LjUgMGMxNyAwIDMzLjMtNi43IDQ1LjMtMTguN0wzNjUuMyAzODYuN2MxMi0xMiAxOC43LTI4LjMgMTguNy00NS4zTDM4NCA2NGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAwQzI4LjcgMCAwIDI4LjcgMCA2NEwwIDQ0OHptMjA4IDUuNWwwLTkzLjVjMC0xMy4zIDEwLjctMjQgMjQtMjRsOTMuNSAwLTExNy41IDExNy41ek0xNTMgMTA1bC00OCA0OGMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw0OC00OGM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjl6bTk2IDMyTDEzNyAyNDljLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlMMjE1IDEwM2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjl6Il19LGdhYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ2IixpY29uOlszODQsNTEyLFsxMThdLCI1NiIsIk0xOS43IDM0LjVjMTYuMy02LjggMzUgLjkgNDEuOCAxNy4yTDE5MiAzNjQuOCAzMjIuNSA1MS43YzYuOC0xNi4zIDI1LjUtMjQgNDEuOC0xNy4yczI0IDI1LjUgMTcuMiA0MS44bC0xNjAgMzg0Yy01IDExLjktMTYuNiAxOS43LTI5LjUgMTkuN3MtMjQuNi03LjgtMjkuNS0xOS43TDIuNSA3Ni4zYy02LjgtMTYuMyAuOS0zNSAxNy4yLTQxLjh6Il19LHV5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJsaXN0IixpY29uOls1MTIsNTEyLFsibGlzdC1zcXVhcmVzIl0sImYwM2EiLCJNNDAgNDhDMjYuNyA0OCAxNiA1OC43IDE2IDcybDAgNDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRsNDggMGMxMy4zIDAgMjQtMTAuNyAyNC0yNGwwLTQ4YzAtMTMuMy0xMC43LTI0LTI0LTI0TDQwIDQ4ek0xOTIgNjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMjg4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMMTkyIDY0em0wIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwyODggMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMjg4IDB6bTAgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDI4OCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0yODggMHpNMTYgMjMybDAgNDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRsNDggMGMxMy4zIDAgMjQtMTAuNyAyNC0yNGwwLTQ4YzAtMTMuMy0xMC43LTI0LTI0LTI0bC00OCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHpNNDAgMzY4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0bDQ4IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRsMC00OGMwLTEzLjMtMTAuNy0yNC0yNC0yNGwtNDggMHoiXX0sYmFhPXV5ZSx2YWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGlzY2VzIixpY29uOls0NDgsNTEyLFtdLCJlODRjIiwiTTQwLjQgMTAuNGMxMS45LTEzIDMyLjItMTMuOSA0NS4yLTIgMi45IDIuNyAyOC4zIDI2LjcgNTMuNiA2Ny44IDIyLjMgMzYuMiA0NSA4Ni42IDUxLjEgMTQ3LjhsNjcuMyAwYzYuMS02MS4xIDI4LjgtMTExLjYgNTEuMS0xNDcuOCAyNS4zLTQxLjEgNTAuNy02NS4xIDUzLjYtNjcuOCAxMy0xMS45IDMzLjMtMTEuMSA0NS4yIDIgMTEuOSAxMyAxMSAzMy4zLTIgNDUuMi0xLjQgMS4zLTIyIDIxLjEtNDIuNCA1NC4yLTE3LjkgMjkuMS0zNS40IDY4LTQxLjIgMTE0LjJsOTQgMCAzLjMgLjJjMTYuMSAxLjYgMjguNyAxNS4zIDI4LjcgMzEuOHMtMTIuNiAzMC4yLTI4LjcgMzEuOGwtMy4zIC4yLTk0IDBjNS44IDQ2LjIgMjMuMyA4NS4xIDQxLjIgMTE0LjIgMjAuNCAzMy4xIDQxIDUyLjkgNDIuNCA1NC4yIDEzIDExLjkgMTMuOSAzMi4yIDIgNDUuMi0xMS45IDEzLTMyLjIgMTMuOS00NS4yIDItMi45LTIuNy0yOC4zLTI2LjctNTMuNi02Ny44LTIyLjMtMzYuMi00NS04Ni42LTUxLjEtMTQ3LjhsLTY3LjMgMGMtNi4xIDYxLjEtMjguOCAxMTEuNi01MS4xIDE0Ny44LTI1LjMgNDEuMS01MC43IDY1LjEtNTMuNiA2Ny44LTEzIDExLjktMzMuMyAxMS4xLTQ1LjItMi0xMS45LTEzLTExLTMzLjMgMi00NS4yIDEuNC0xLjMgMjItMjEuMSA0Mi40LTU0LjIgMTcuOS0yOS4xIDM1LjQtNjggNDEuMi0xMTQuMmwtOTQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw5NCAwYy01LjgtNDYuMi0yMy4zLTg1LjEtNDEuMi0xMTQuMi0yMC40LTMzLjEtNDEtNTIuOS00Mi40LTU0LjItMTMtMTEuOS0xMy45LTMyLjItMi00NS4yeiJdfSx4YWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic29sYXItcGFuZWwiLGljb246WzU3Niw1MTIsW10sImY1YmEiLCJNMTIxLjggMzJjLTMwIDAtNTYgMjAuOC02Mi41IDUwLjFMOS42IDMwNi4xQy43IDM0Ni4xIDMxLjEgMzg0IDcyIDM4NGwxODQuMSAwIDAgNjQtNjQgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwxOTIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtNjQgMCAwLTY0IDE4NC4xIDBjNDAuOSAwIDcxLjQtMzcuOSA2Mi41LTc3LjlsLTQ5LjgtMjI0QzUxMC40IDUyLjggNDg0LjUgMzIgNDU0LjUgMzJMMTIxLjggMzJ6TTI0NS42IDk2bDg1LjIgMCA3LjMgODgtOTkuOCAwIDcuMy04OHptLTU1LjUgODhsLTg3LjggMCAxOS42LTg4IDc1LjYgMC03LjMgODh6TTkxLjYgMjMybDk0LjUgMC03LjMgODgtMTA2LjcgMCAxOS42LTg4em0xNDIuNiAwbDEwNy44IDAgNy4zIDg4LTEyMi41IDAgNy4zLTg4em0xNTYgMGw5NC41IDAgMTkuNiA4OC0xMDYuNyAwLTcuMy04OHpNNDc0IDE4NGwtODcuOCAwLTcuMy04OCA3NS42IDAgMTkuNiA4OHoiXX0seWFhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImxhbmQtbWluZS1vbiIsaWNvbjpbNTc2LDUxMixbXSwiZTUxYiIsIk0zMTIgMGwwIDEyOGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNEwyNjQgMGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0ek0xNjAgMjg4YzAtMTcuNyAxNC4zLTMyIDMyLTMybDE5MiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMzIgODAgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDk2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4TDgwIDUxMmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhsMC05NmMwLTI2LjUgMjEuNS00OCA0OC00OGw4MCAwIDAtMzJ6TTEyIDExNC43YzcuNC0xMSAyMi4zLTE0IDMzLjMtNi43bDk2IDY0YzExIDcuNCAxNCAyMi4zIDYuNyAzMy4zcy0yMi4zIDE0LTMzLjMgNi43bC05Ni02NGMtMTEtNy40LTE0LTIyLjMtNi43LTMzLjN6TTUzMC43IDEwOGMxMS03LjQgMjUuOS00LjQgMzMuMyA2LjdzNC40IDI1LjktNi43IDMzLjNsLTk2IDY0Yy0xMSA3LjQtMjUuOSA0LjQtMzMuMy02LjdzLTQuNC0yNS45IDYuNy0zMy4zbDk2LTY0eiJdfSxQb2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaGVhZHBob25lcyIsaWNvbjpbNDQ4LDUxMixbMTI3OTExLDYyODYzLCJoZWFkcGhvbmVzLWFsdCIsImhlYWRwaG9uZXMtc2ltcGxlIl0sImYwMjUiLCJNNjQgMjI0YzAtODguNCA3MS42LTE2MCAxNjAtMTYwczE2MCA3MS42IDE2MCAxNjBsMCAzNy41Yy0xMC0zLjUtMjAuOC01LjUtMzItNS41bC0xNiAwYy0yNi41IDAtNDggMjEuNS00OCA0OGwwIDEyOGMwIDI2LjUgMjEuNSA0OCA0OCA0OGwxNiAwYzUzIDAgOTYtNDMgOTYtOTZsMC0xNjBDNDQ4IDEwMC4zIDM0Ny43IDAgMjI0IDBTMCAxMDAuMyAwIDIyNEwwIDM4NGMwIDUzIDQzIDk2IDk2IDk2bDE2IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC0xMjhjMC0yNi41LTIxLjUtNDgtNDgtNDhsLTE2IDBjLTExLjIgMC0yMiAxLjktMzIgNS41TDY0IDIyNHoiXX0sd2FhPVBvZSxrYWE9UG9lLFNhYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJidXMiLGljb246WzQ0OCw1MTIsWzEyODY1M10sImYyMDciLCJNOTYgMEM0MyAwIDAgNDMgMCA5NkwwIDM4NGMwIDI5LjggMjAuNCA1NC45IDQ4IDYybDAgMzRjMCAxNy43IDE0LjMgMzIgMzIgMzJsMTYgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTMyIDE5MiAwIDAgMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJsMTYgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTM0YzI3LjYtNy4xIDQ4LTMyLjIgNDgtNjJsMC0yODhjMC01My00My05Ni05Ni05Nkw5NiAwek02NCAxNzZjMC0xNy43IDE0LjMtMzIgMzItMzJsMTA0IDAgMCAxMTItMTA0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtNDh6bTE4NCA4MGwwLTExMiAxMDQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0xMDQgMHpNOTYgMzIwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMjU2IDBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0xNTIgNzJjMC0xMy4zIDEwLjctMjQgMjQtMjRsOTYgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtOTYgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjR6Il19LF9hYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmaWxlLXBvd2VycG9pbnQiLGljb246WzM4NCw1MTIsW10sImYxYzQiLCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBMMjEzLjUgMGMxNyAwIDMzLjMgNi43IDQ1LjMgMTguN0wzNjUuMyAxMjUuM2MxMiAxMiAxOC43IDI4LjMgMTguNyA0NS4zTDM4NCA0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDY0em0yMDgtNS41bDAgOTMuNWMwIDEzLjMgMTAuNyAyNCAyNCAyNEwzMjUuNSAxNzYgMjA4IDU4LjV6TTE1MiAyNTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0bDAgMTQ0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0yNCAyNCAwYzM5LjggMCA3Mi0zMi4yIDcyLTcycy0zMi4yLTcyLTcyLTcybC00OCAwem00OCA5NmwtMjQgMCAwLTQ4IDI0IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjR6Il19LHB5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJxdW90ZS1sZWZ0IixpY29uOls0NDgsNTEyLFs4MjIwLCJxdW90ZS1sZWZ0LWFsdCJdLCJmMTBkIiwiTTAgMjE2QzAgMTQ5LjcgNTMuNyA5NiAxMjAgOTZsOCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC04IDBjLTMwLjkgMC01NiAyNS4xLTU2IDU2bDAgOCA2NCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgNjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRsLTY0IDBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgMjE2em0yNTYgMGMwLTY2LjMgNTMuNy0xMjAgMTIwLTEyMGw4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTggMGMtMzAuOSAwLTU2IDI1LjEtNTYgNTZsMCA4IDY0IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCA2NGMwIDM1LjMtMjguNyA2NC02NCA2NGwtNjQgMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRsMC0xMzZ6Il19LE1hYT1weWUsemFhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNoZXZyb24tZG93biIsaWNvbjpbNDQ4LDUxMixbXSwiZjA3OCIsIk0yMDEuNCA0MDYuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxOTItMTkyYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDIyNCAzMzguNyA1NC42IDE2OS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxOTIgMTkyeiJdfSxoeWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZWFydGgtYXNpYSIsaWNvbjpbNTEyLDUxMixbMTI3NzU5LCJnbG9iZS1hc2lhIl0sImY1N2UiLCJNNTAgMjg0LjhjNC4yIDIuMSA5IDMuMiAxNCAzLjJsNTAuNyAwYzguNSAwIDE2LjYgMy40IDIyLjYgOS40bDEzLjMgMTMuM2M2IDYgMTQuMSA5LjQgMjIuNiA5LjRsMTguNyAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtNDBjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQtMTAuNyAyNC0yNGwwLTQyLjdjMC04LjUgMy40LTE2LjYgOS40LTIyLjZsMTMuMy0xMy4zYzYtNiA5LjQtMTQuMSA5LjQtMjIuNkwzMDQgNTdjMC0xLjItLjEtMi4zLS4yLTMuNS0xNS40LTMuNi0zMS40LTUuNS00Ny44LTUuNS0xMTQuOSAwLTIwOCA5My4xLTIwOCAyMDggMCA5LjggLjcgMTkuNCAyIDI4Ljh6bTQwMy4zIDM3LjNjLTMuMi0xLjQtNi43LTIuMS0xMC41LTIuMUw0MzIgMzIwYy04LjggMC0xNi03LjItMTYtMTZzLTcuMi0xNi0xNi0xNmwtMzQuNyAwYy04LjUgMC0xNi42IDMuNC0yMi42IDkuNGwtNDUuMyA0NS4zYy02IDYtOS40IDE0LjEtOS40IDIyLjZsMCAxOC43YzAgMTcuNyAxNC4zIDMyIDMyIDMybDE4LjcgMGM4LjUgMCAxNi42IDMuNCAyMi42IDkuNCAyLjIgMi4yIDQuNyA0LjEgNy4zIDUuNSAzOS4zLTI1LjQgNjkuNS02My42IDg0LjYtMTA4Ljh6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDAgMjU2IDI1NiAwIDEgMSAtNTEyIDB6TTEyOCAzNjhjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnpNMjcyIDI1NmMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNnptNDgtMTEybDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2eiJdfSxDYWE9aHllLFRhYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjZW50LXNpZ24iLGljb246WzM4NCw1MTIsW10sImUzZjUiLCJNMjA4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAyNS40YzQzLjYgNS4yIDgzIDI0LjUgMTEzLjMgNTMuMSAxMi45IDEyLjEgMTMuNCAzMi40IDEuMyA0NS4ycy0zMi40IDEzLjQtNDUuMiAxLjNjLTI0LjQtMjMtNTcuMi0zNy4xLTkzLjMtMzcuMS03NS4xIDAtMTM2IDYwLjktMTM2IDEzNnM2MC45IDEzNiAxMzYgMTM2YzM2LjIgMCA2OS0xNC4xIDkzLjMtMzcuMSAxMi45LTEyLjEgMzMuMS0xMS41IDQ1LjIgMS4zczExLjUgMzMuMS0xLjMgNDUuMkMzMjMgNDMwLjEgMjgzLjYgNDQ5LjQgMjQwIDQ1NC42bDAgMjUuNGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTI4Qzg0LjcgNDMzLjUgMTYgMzUyLjggMTYgMjU2Uzg0LjcgNzguNSAxNzYgNjBsMC0yOGMwLTE3LjcgMTQuMy0zMiAzMi0zMnoiXX0sJGFhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNoaWVsZC1jYXQiLGljb246WzUxMiw1MTIsW10sImU1NzIiLCJNMjY5LjQgMi45QzI2NS4yIDEgMjYwLjcgMCAyNTYgMHMtOS4yIDEtMTMuNCAyLjlMNTQuMyA4Mi44Yy0yMiA5LjMtMzguNCAzMS0zOC4zIDU3LjIgLjUgOTkuMiA0MS4zIDI4MC43IDIxMy42IDM2My4yIDE2LjcgOCAzNi4xIDggNTIuOCAwIDE3Mi40LTgyLjUgMjEzLjItMjY0IDIxMy42LTM2My4yIC4xLTI2LjItMTYuMy00Ny45LTM4LjMtNTcuMkwyNjkuNCAyLjl6TTE2MCAxNTQuNGMwLTUuOCA0LjctMTAuNCAxMC40LTEwLjRsLjIgMGMzLjQgMCA2LjUgMS42IDguNSA0LjNsNDAgNTMuM2MzIDQgNy44IDYuNCAxMi44IDYuNGw0OCAwYzUgMCA5LjgtMi40IDEyLjgtNi40bDQwLTUzLjNjMi0yLjcgNS4yLTQuMyA4LjUtNC4zbC4yIDBjNS44IDAgMTAuNCA0LjcgMTAuNCAxMC40TDM1MiAyNzJjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZsMC0xMTcuNnpNMjE2IDI4OGExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6bTk2LTE2YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6Il19LERhYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzY2hvb2wtY2lyY2xlLWNoZWNrIixpY29uOls2NDAsNTEyLFtdLCJlNTZiIiwiTTY0IDEyOGMtMzUuMyAwLTY0IDI4LjctNjQgNjRMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjc2IDBjLTEwLjUtMTQuNi0xOS0zMC43LTI1LjEtNDhsLTkwLjkgMCAwLTg4YzAtMjIuMSAxNy45LTQwIDQwLTQwbDQ4IDBjMSAwIDEuOSAwIDIuOSAuMSAyNi4zLTc0LjYgOTcuNS0xMjguMSAxODEuMS0xMjguMSAyOC42IDAgNTUuNiA2LjIgODAgMTcuNGwwLTMzLjRjMC0zNS4zLTI4LjctNjQtNjQtNjRsLTY0IDAtMTI3LjktMTE1LjFjLTE4LjMtMTYuNC00Ni0xNi40LTY0LjIgMEwxMjggMTI4IDY0IDEyOHptNjQgMjQwYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJ6TTExMiAyNTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNnpNMjg4IDEyOGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpNNjQwIDQwMGExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tODYuNi02MC45YzcuMSA1LjIgOC43IDE1LjIgMy41IDIyLjNsLTY0IDg4Yy0yLjggMy44LTcgNi4yLTExLjcgNi41cy05LjMtMS4zLTEyLjYtNC42bC00MC00MGMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwbDI2LjggMjYuOCA1My03Mi45YzUuMi03LjEgMTUuMi04LjcgMjIuNC0zLjV6Il19LGZ5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJtYXJ0aW5pLWdsYXNzIixpY29uOls1MTIsNTEyLFsxMjc4NjQsImdsYXNzLW1hcnRpbmktYWx0Il0sImY1N2IiLCJNMi40IDUxLjhDNy40IDM5LjggMTkuMSAzMiAzMiAzMmw0NDggMGMxMi45IDAgMjQuNiA3LjggMjkuNiAxOS44czIuMiAyNS43LTYuOSAzNC45TDI4OCAzMDEuMyAyODggNDQ4IDM1MiA0NDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTE5MiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDY0IDAgMC0xNDYuNy0yMTQuNi0yMTQuNkMuMiA3Ny41LTIuNSA2My43IDIuNCA1MS44ek0zNTQuNyAxNDRsNDgtNDgtMjkzLjUgMCA0OCA0OCAxOTcuNSAweiJdfSxMYWE9ZnllLEVhYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwbHVnIixpY29uOls0NDgsNTEyLFsxMjgyNjhdLCJmMWU2IiwiTTEyOC0zMmMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDk2IDEyOCAwIDAtOTZjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDk2IDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsMCA2NGMwIDk1LjEtNjkuMiAxNzQuMS0xNjAgMTg5LjNsMCA2Ni43YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtNjYuN0MxMDEuMiAzOTguMSAzMiAzMTkuMSAzMiAyMjRsMC02NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJTMTQuMyA5NiAzMiA5Nmw2NCAwIDAtOTZjMC0xNy43IDE0LjMtMzIgMzItMzJ6Il19LFBhYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwYW5vcmFtYSIsaWNvbjpbNTc2LDUxMixbXSwiZTIwOSIsIk00My45IDQ4QzE5LjcgNDggMCA2Ny43IDAgOTEuOUwwIDQyMC4xYzAgMjQuMyAxOS43IDQzLjkgNDMuOSA0My45IDUuNSAwIDEwLjctMSAxNS43LTIuOSAxMi45LTQuOSAxMDMuNC0zNy4xIDIyOC40LTM3LjFzMjE1LjUgMzIuMyAyMjguNCAzNy4xYzUgMS45IDEwLjIgMi45IDE1LjcgMi45IDI0LjMgMCA0My45LTE5LjcgNDMuOS00My45bDAtMzI4LjJjMC0yNC4zLTE5LjctNDMuOS00My45LTQzLjktNS41IDAtMTAuNyAxLTE1LjcgMi45LTEyLjkgNC45LTEwMy40IDM3LjEtMjI4LjQgMzcuMVM3Mi41IDU1LjcgNTkuNiA1MC45QzU0LjYgNDkgNDkuNCA0OCA0My45IDQ4ek03MiAxNzZhNDAgNDAgMCAxIDEgODAgMCA0MCA0MCAwIDEgMSAtODAgMHptMjY0LjEtMTZjNy41IDAgMTQuNiAzLjYgMTkuMSA5LjZMNDc5LjcgMzM2LjJjNS45IDcuOSA2LjQgMTguNSAxLjMgMjYuOXMtMTQuOCAxMi44LTI0LjUgMTEuMWMtNDUuOC03LjgtMTAzLjMtMTQuMi0xNjguNC0xNC4yLTY1LjYgMC0xMjMuNCA2LjUtMTY5LjMgMTQuNC05LjggMS43LTE5LjctMi45LTI0LjctMTEuNXMtNC4zLTE5LjQgMS45LTI3LjJMMTY1LjMgMjQ5YzQuNi01LjcgMTEuNS05IDE4LjctOXMxNC4yIDMuMyAxOC43IDlsMjcuNSAzNC40IDg2LjctMTEzLjljNC42LTYgMTEuNy05LjUgMTkuMi05LjV6Il19LGhmPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNsb2NrLXJvdGF0ZS1sZWZ0IixpY29uOls1NzYsNTEyLFsiaGlzdG9yeSJdLCJmMWRhIiwiTTI4OCA2NGMxMDYgMCAxOTIgODYgMTkyIDE5MlMzOTQgNDQ4IDI4OCA0NDhjLTY1LjIgMC0xMjIuOS0zMi41LTE1Ny42LTgyLjMtMTAuMS0xNC41LTMwLjEtMTgtNDQuNi03LjlzLTE4IDMwLjEtNy45IDQ0LjZDMTI0LjEgNDY4LjYgMjAxIDUxMiAyODggNTEyIDQyOS40IDUxMiA1NDQgMzk3LjQgNTQ0IDI1NlM0MjkuNCAwIDI4OCAwQzIwMi4zIDAgMTI2LjUgNDIuMSA4MCAxMDYuN0w4MCA4MGMwLTE3LjctMTQuMy0zMi0zMi0zMlMxNiA2Mi4zIDE2IDgwbDAgMTEyYzAgMTcuNyAxNC4zIDMyIDMyIDMybDI0LjYgMGMuNSAwIDEgMCAxLjUgMGw4NiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0zOC4zIDBDMTU0LjkgMTAyLjYgMjE3IDY0IDI4OCA2NHptMjQgODhjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCAxMDRjMCA2LjQgMi41IDEyLjUgNyAxN2w3MiA3MmM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTY1LTY1IDAtOTQuMXoiXX0sSWFhPWhmLEFhYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJqYXItd2hlYXQiLGljb246WzMyMCw1MTIsW10sImU1MTciLCJNMzItOGMwLTEzLjMgMTAuNy0yNCAyNC0yNGwyMDggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEw1NiAxNkM0Mi43IDE2IDMyIDUuMyAzMi04ek0wIDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NGwxOTIgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgMTI4em0xMTIgMzJsLTQyLjIgMGMtMy4yIDAtNS44IDIuNi01LjggNS44IDAgMzIuMSAyNiA1OC4yIDU4LjIgNTguMmw3NS42IDBjMzIuMSAwIDU4LjItMjYgNTguMi01OC4yIDAtMy4yLTIuNi01LjgtNS44LTUuOEwyMDggMTYwYy0xOS4xIDAtMzYuMyA4LjQtNDggMjEuNy0xMS43LTEzLjMtMjguOS0yMS43LTQ4LTIxLjd6bTQ4IDExNy43Yy0xMS43LTEzLjMtMjguOS0yMS43LTQ4LTIxLjdsLTQyLjIgMGMtMy4yIDAtNS44IDIuNi01LjggNS44IDAgMzIuMSAyNiA1OC4yIDU4LjIgNTguMmw3NS42IDBjMzIuMSAwIDU4LjItMjYgNTguMi01OC4yIDAtMy4yLTIuNi01LjgtNS44LTUuOEwyMDggMjU2Yy0xOS4xIDAtMzYuMyA4LjQtNDggMjEuN3pNMTEyIDM1MmwtNDIuMiAwYy0zLjIgMC01LjggMi42LTUuOCA1LjggMCAzMi4xIDI2IDU4LjIgNTguMiA1OC4ybDIxLjggMCAwIDMyYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZsMC0zMiAyMS44IDBjMzIuMSAwIDU4LjItMjYgNTguMi01OC4yIDAtMy4yLTIuNi01LjgtNS44LTUuOEwyMDggMzUyYy0xOS4xIDAtMzYuMyA4LjQtNDggMjEuNy0xMS43LTEzLjMtMjguOS0yMS43LTQ4LTIxLjd6Il19LElvZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjbG91ZC1hcnJvdy1kb3duIixpY29uOls1NzYsNTEyLFs2MjMzNywiY2xvdWQtZG93bmxvYWQiLCJjbG91ZC1kb3dubG9hZC1hbHQiXSwiZjBlZCIsIk0xNDQgNDgwYy03OS41IDAtMTQ0LTY0LjUtMTQ0LTE0NCAwLTYzLjQgNDEtMTE3LjIgOTcuOS0xMzYuNS0xLjMtNy43LTEuOS0xNS41LTEuOS0yMy41IDAtNzkuNSA2NC41LTE0NCAxNDQtMTQ0IDU1LjQgMCAxMDMuNSAzMS4zIDEyNy42IDc3LjEgMTQuMi04LjMgMzAuOC0xMy4xIDQ4LjQtMTMuMSA1MyAwIDk2IDQzIDk2IDk2IDAgMTUuNy0zLjggMzAuNi0xMC41IDQzLjcgNDQgMjAuMyA3NC41IDY0LjcgNzQuNSAxMTYuMyAwIDcwLjctNTcuMyAxMjgtMTI4IDEyOGwtMzA0IDB6TTM3NyAzMTNjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtMzEgMzEgMC0xMDIuMWMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDEwMi4xLTMxLTMxYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDcyIDcyYzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDcyLTcyeiJdfSxOYWE9SW9lLFJhYT1Jb2UsbXllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRydWNrLXJhbXAtYm94IixpY29uOls1NzYsNTEyLFsidHJ1Y2stbG9hZGluZyJdLCJmNGRlIiwiTTQwMCAzMmMtNDQuMiAwLTgwIDM1LjgtODAgODBsMCAyNDguMi0yOTcuMiA4OS4yQzUuOSA0NTQuNC0zLjcgNDcyLjMgMS40IDQ4OS4yczIyLjkgMjYuNSAzOS44IDIxLjVsMzE1LjUtOTQuNiA0My43IDBjLS4yIDIuNi0uNCA1LjMtLjQgOCAwIDQ4LjYgMzkuNCA4OCA4OCA4OHM4OC0zOS40IDg4LTg4bDAtMzkyLTE3NiAwek01MjggNDI0YzAgMjIuMS0xNy45IDQwLTQwIDQwcy00MC0xNy45LTQwLTQwIDE3LjktNDAgNDAtNDBjMjIuMSAwIDM5LjkgMTcuOSA0MCAzOS45bDAgLjF6TTUxLjkgMTQ5LjVDMTguMSAxNTkuOC0uOSAxOTUuNiA5LjQgMjI5LjRsMjguMSA5MS44QzQ3LjggMzU1IDgzLjYgMzc0IDExNy40IDM2My43bDkxLjgtMjguMWMzMy44LTEwLjMgNTIuOC00Ni4xIDQyLjUtNzkuOWwtMjguMS05MS44Yy0xMC4zLTMzLjgtNDYuMS01Mi44LTc5LjktNDIuNUw1MS45IDE0OS41eiJdfSxPYWE9bXllLEZhYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJhbmdsZS1kb3duIixpY29uOlszODQsNTEyLFs4OTY0XSwiZjEwNyIsIk0xNjkuNCAzNzQuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxNjAtMTYwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDE5MiAzMDYuNyA1NC42IDE2OS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYweiJdfSxCYWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGx1Zy1jaXJjbGUtY2hlY2siLGljb246WzY0MCw1MTIsW10sImU1NWMiLCJNMTkyLTMyYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgOTYgMTI4IDAgMC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgOTYgNjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwwIDQ4LjdjLTk4LjYgOC4xLTE3NiA5MC43LTE3NiAxOTEuMyAwIDI3LjMgNS43IDUzLjMgMTYgNzYuOWwwIDMuMWMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTY2LjdDMTY1LjIgMzk4LjEgOTYgMzE5LjEgOTYgMjI0bDAtNjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyUzc4LjMgOTYgOTYgOTZsNjQgMCAwLTk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyek0zNTIgNDAwYTE0NCAxNDQgMCAxIDEgMjg4IDAgMTQ0IDE0NCAwIDEgMSAtMjg4IDB6bTIwMS40LTYwLjljLTcuMS01LjItMTcuMi0zLjYtMjIuNCAzLjVsLTUzIDcyLjktMjYuOC0yNi44Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42bDQwIDQwYzMuMyAzLjMgNy45IDUgMTIuNiA0LjZzOC45LTIuOCAxMS43LTYuNWw2NC04OGM1LjItNy4xIDMuNi0xNy4yLTMuNS0yMi4zeiJdfSxIYWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToid2luZG93LW1heGltaXplIixpY29uOls1MTIsNTEyLFsxMjg0NzBdLCJmMmQwIiwiTTY0IDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4TDAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDM4NCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMjU2YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDY0em0yNCA2NGwzMzYgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEw4OCAxNzZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6Il19LHFhYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoYW5kcy1ob2xkaW5nLWNpcmNsZSIsaWNvbjpbNjQwLDUxMixbXSwiZTRmYiIsIk0zMjAgMGExMjggMTI4IDAgMSAxIDAgMjU2IDEyOCAxMjggMCAxIDEgMC0yNTZ6TTQwIDY0YzIyLjEgMCA0MCAxNy45IDQwIDQwbDAgMTYwLjJjMCAxNyA2LjcgMzMuMyAxOC43IDQ1LjNsNTEuMSA1MS4xYzguMyA4LjMgMjEuMyA5LjYgMzEgMy4xIDEyLjktOC42IDE0LjctMjYuOSAzLjctMzcuOC03LjMtNy4zLTIzLjEtMjMuMS00Ny4yLTQ3LjItMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMGMyNC4xIDI0LjEgMzkuOSAzOS45IDQ3LjIgNDcuMmwwIDAgMjUuMyAyNS4zYzIxIDIxIDMyLjggNDkuNSAzMi44IDc5LjJsMCA3OC45YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC02Ni43IDBjLTE3IDAtMzMuMy02LjctNDUuMy0xOC43TDI4LjEgMzkzLjRDMTAuMSAzNzUuNCAwIDM1MSAwIDMyNS41TDAgMTA0QzAgODEuOSAxNy45IDY0IDQwIDY0em01NjAgMGMyMi4xIDAgNDAgMTcuOSA0MCA0MGwwIDIyMS41YzAgMjUuNS0xMC4xIDQ5LjktMjguMSA2Ny45TDUxMiA0OTMuM2MtMTIgMTItMjguMyAxOC43LTQ1LjMgMTguN0w0MDAgNTEyYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTc4LjljMC0yOS43IDExLjgtNTguMiAzMi44LTc5LjJsMjUuMy0yNS4zIDAgMGM3LjMtNy4zIDIzLjEtMjMuMSA0Ny4yLTQ3LjIgMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBzMTIuNSAzMi44IDAgNDUuM2MtMjQuMSAyNC4xLTM5LjkgMzkuOS00Ny4yIDQ3LjItMTEgMTEtOS4yIDI5LjIgMy43IDM3LjggOS43IDYuNSAyMi43IDUuMiAzMS0zLjFsNTEuMS01MS4xYzEyLTEyIDE4LjctMjguMyAxOC43LTQ1LjNMNTYwIDEwNGMwLTIyLjEgMTcuOS00MCA0MC00MHoiXX0sZ3llPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImxvY2F0aW9uLXBpbiIsaWNvbjpbMzg0LDUxMixbIm1hcC1tYXJrZXIiXSwiZjA0MSIsIk0xOTIgMEM4NiAwIDAgODQuNCAwIDE4OC42IDAgMzA3LjkgMTIwLjIgNDUwLjkgMTcwLjQgNTA1LjQgMTgyLjIgNTE4LjIgMjAxLjggNTE4LjIgMjEzLjYgNTA1LjQgMjYzLjggNDUwLjkgMzg0IDMwNy45IDM4NCAxODguNiAzODQgODQuNCAyOTggMCAxOTIgMHoiXX0samFhPWd5ZSxWYWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYm93bGluZy1iYWxsIixpY29uOls1MTIsNTEyLFtdLCJmNDM2IiwiTTI1NiA1MTJhMjU2IDI1NiAwIDEgMCAwLTUxMiAyNTYgMjU2IDAgMSAwIDAgNTEyek0yNDAgODBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0yMDggMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bS02NC02NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6Il19LGJ5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjYXJ0LWZsYXRiZWQiLGljb246WzU3Niw1MTIsWyJkb2xseS1mbGF0YmVkIl0sImY0NzQiLCJNMzIgMEMxNC4zIDAgMCAxNC4zIDAgMzJTMTQuMyA2NCAzMiA2NGwxNiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDI4OGMwIDM5LjggMjkuMSA3Mi44IDY3LjEgNzktMiA1LjMtMy4xIDExLTMuMSAxNyAwIDI2LjUgMjEuNSA0OCA0OCA0OHM0OC0yMS41IDQ4LTQ4YzAtNS42LTEtMTEtMi43LTE2bDE5Ny41IDBjLTEuOCA1LTIuNyAxMC40LTIuNyAxNiAwIDI2LjUgMjEuNSA0OCA0OCA0OHM0OC0yMS41IDQ4LTQ4YzAtNS42LTEtMTEtMi43LTE2bDM0LjcgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtNDAwIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTI4OEMxMjggMzUuOCA5Mi4yIDAgNDggMEwzMiAwek0yMjQgNjRjLTI2LjUgMC00OCAyMS41LTQ4IDQ4bDAgMTc2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDI0MCAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtMTc2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4TDIyNCA2NHoiXX0sVWFhPWJ5ZSx2eWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaG91c2UtdXNlciIsaWNvbjpbNTEyLDUxMixbImhvbWUtdXNlciJdLCJlMWIwIiwiTTI3Ny44IDguNmMtMTIuMy0xMS40LTMxLjMtMTEuNC00My41IDBsLTIyNCAyMDhjLTkuNiA5LTEyLjggMjIuOS04IDM1LjFTMTguOCAyNzIgMzIgMjcybDE2IDAgMCAxNzZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjg4IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0xNzYgMTYgMGMxMy4yIDAgMjUtOC4xIDI5LjgtMjAuM3MxLjYtMjYuMi04LTM1LjFsLTIyNC0yMDh6TTIwMCAyNTZhNTYgNTYgMCAxIDEgMTEyIDAgNTYgNTYgMCAxIDEgLTExMiAwek0xNDQgNDMyYzAtNDQuMiAzNS44LTgwIDgwLTgwbDY0IDBjNDQuMiAwIDgwIDM1LjggODAgODAgMCA4LjgtNy4yIDE2LTE2IDE2bC0xOTIgMGMtOC44IDAtMTYtNy4yLTE2LTE2eiJdfSxXYWE9dnllLEdhYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJnaG9zdCIsaWNvbjpbMzg0LDUxMixbMTI4MTIzXSwiZjZlMiIsIk00MC4xIDQ2Ny4xbC0xMS4yIDlDMjUuNyA0NzguNiAyMS44IDQ4MCAxNy44IDQ4MCA4IDQ4MCAwIDQ3MiAwIDQ2Mi4yTDAgMTkyQzAgODYgODYgMCAxOTIgMFMzODQgODYgMzg0IDE5MmwwIDI3MC4yYzAgOS44LTggMTcuOC0xNy44IDE3LjgtNCAwLTcuOS0xLjQtMTEuMS0zLjlsLTExLjItOWMtMTMuNC0xMC43LTMyLjgtOS00NC4xIDMuOUwyNjkuMyA1MDZjLTMuMyAzLjgtOC4yIDYtMTMuMyA2cy05LjktMi4yLTEzLjMtNmwtMjYuNi0zMC41Yy0xMi43LTE0LjYtMzUuNC0xNC42LTQ4LjIgMEwxNDEuMyA1MDZjLTMuMyAzLjgtOC4yIDYtMTMuMyA2cy05LjktMi4yLTEzLjMtNkw4NC4yIDQ3MWMtMTEuMy0xMi45LTMwLjctMTQuNi00NC4xLTMuOXpNMTYwIDE5MmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem05NiAzMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6Il19LEthYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjb21tZW50LW5vZGVzIixpY29uOls2NDAsNTEyLFtdLCJlNjk2IiwiTTQ4MCAyMDhDNTAzLjcgMjA4IDUyNS42IDIxNS4zIDU0My43IDIyNy45IDUzNi45IDEwMC45IDQyNSAwIDI4OCAwIDE0Ni42IDAgMzIgMTA3LjUgMzIgMjQwIDMyIDI5NC4zIDUxLjIgMzQ0LjMgODMuNiAzODQuNUwzNC44IDQ3Ni44Yy00LjggOS0zLjMgMjAgMy42IDI3LjVzMTcuOCA5LjggMjcuMSA1LjhsMTE4LjQtNTAuN2MyNy4yIDExLjQgNTYuOSAxOC40IDg4LjEgMjAuMiAuMS0xOC45IDQuOS0zOCAxNS01NS41IDE3LjEtMjkuNyA0NS44LTQ4LjUgNzctNTQuMmw5LjItMTZjLTMuNC0xMC43LTUuMi0yMi01LjItMzMuOCAwLTYxLjkgNTAuMS0xMTIgMTEyLTExMnpNMzI4LjYgNDQ4Yy0xNy43IDMwLjYtNy4yIDY5LjcgMjMuNCA4Ny40czY5LjcgNy4yIDg3LjQtMjMuNGMxLjUtMi42IDIuOC01LjMgMy45LThsNzMuMyAwYzEuMSAyLjcgMi40IDUuNCAzLjkgOCAxNy43IDMwLjYgNTYuOCA0MS4xIDg3LjQgMjMuNHM0MS4xLTU2LjggMjMuNC04Ny40Yy0xMy40LTIzLjItMzkuMS0zNC44LTY0LTMxLjRsLTE3LjYtMzAuN2MtMTEgMTEuNy0yNSAyMC42LTQwLjYgMjUuNmwxNi41IDI4LjljLTMuOCA0LjgtNi44IDEwLTkgMTUuNmwtNzMuNCAwYy0yLjItNS42LTUuMy0xMC44LTktMTUuNmwzMy01Ny43YzQuMSAuOCA4LjQgMS4zIDEyLjggMS4zIDM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0LTY0IDI4LjctNjQgNjRjMCAxMy40IDQuMSAyNS44IDExLjIgMzYuMWwtMzQuNiA2MC41Yy0yNS0zLjQtNTAuNiA4LjMtNjQgMzEuNHoiXX0sWWFhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBlcnNvbi1hcnJvdy1kb3duLXRvLWxpbmUiLGljb246WzU3Niw1MTIsW10sImU1MzgiLCJNMTkyLTMyYTU2IDU2IDAgMSAxIDAgMTEyIDU2IDU2IDAgMSAxIDAtMTEyek0zMTguMyAyOTkuMWwtNDYuMy02Mi40IDAgMjQzLjMgMjcyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMMzIgNTQ0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDgwIDAgMC0yNDMuMy00Ni4zIDYyLjRjLTEwLjUgMTQuMi0zMC42IDE3LjItNDQuOCA2LjZzLTE3LjItMzAuNi02LjYtNDQuOGw3MC41LTk1QzExMCAxMzIgMTQ5LjcgMTEyIDE5MiAxMTJzODIgMjAgMTA3LjIgNTMuOWw3MC41IDk1YzEwLjUgMTQuMiA3LjYgMzQuMi02LjYgNDQuOHMtMzQuMiA3LjYtNDQuOC02LjZ6TTE3NiA0ODBsMzIgMCAwLTEyOGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNmwwIDEyOHpNNTY2LjYgMTY2LjZsLTgwIDgwYy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtODAtODBjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBMNDMyIDE0Ni43IDQzMiAwYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCAxNDYuNyAyNS40LTI1LjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBzMTIuNSAzMi44IDAgNDUuM3oiXX0sWmFhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBsdWctY2lyY2xlLXBsdXMiLGljb246WzY0MCw1MTIsW10sImU1NWYiLCJNMTkyLTMyYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgOTYgMTI4IDAgMC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgOTYgNjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwwIDQ4LjdjLTk4LjYgOC4xLTE3NiA5MC43LTE3NiAxOTEuMyAwIDI3LjMgNS43IDUzLjMgMTYgNzYuOWwwIDMuMWMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTY2LjdDMTY1LjIgMzk4LjEgOTYgMzE5LjEgOTYgMjI0bDAtNjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyUzc4LjMgOTYgOTYgOTZsNjQgMCAwLTk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyek00OTYgMjU2YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptMTYgODBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZsMCA0OC00OCAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDQ4IDAgMCA0OGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtNDggNDggMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmwtNDggMCAwLTQ4eiJdfSx4eWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGVyc29uLXN3aW1taW5nIixpY29uOls2NDAsNTEyLFsxMjc5NDYsInN3aW1tZXIiXSwiZjVjNCIsIk01NTIgMTUyYTU2IDU2IDAgMSAwIC0xMTIgMCA1NiA1NiAwIDEgMCAxMTIgMHpNMjkzLjQgMTk4LjJsLTg4LjYgNzMuOWMxLjEgMCAyLjItLjEgMy4zLS4xIDMzLjEtLjIgNjYuMyAxMC4yIDk0LjQgMzEuNCAyMi4xIDE2LjYgMjkuMSAxNi42IDUxLjIgMCAyNy41LTIwLjcgNTkuOS0zMS4yIDkyLjQtMzEuNCA0LjggMCA5LjcgLjIgMTQuNSAuNi04LjMtMzAtMjQuMy01Ny43LTQ2LjgtODAuMi0xOC40LTE4LjQtNDAuNi0zMi43LTY1LTQxLjhsLTY4LjYtMjUuN2MtMjcuNC0xMC4zLTU4LTcuNS04My4xIDcuNmwtNTMuNSAzMi4xYy0xNS4yIDkuMS0yMC4xIDI4LjctMTEgNDMuOXMyOC43IDIwLjEgNDMuOSAxMUwyMzAgMTg3LjNjOC40LTUgMTguNi01LjkgMjcuNy0yLjVsMzUuNyAxMy40em0xMTAgMTgxLjljMjEuMy0xNi4xIDQ5LjktMTYuMSA3MS4yIDAgMTkgMTQuNCA0MS45IDI4LjIgNjcuMiAzMy4zIDI2LjUgNS40IDU0LjMgLjggODAuNy0xOS4xIDEwLjYtOCAxMi43LTIzIDQuNy0zMy42cy0yMy0xMi43LTMzLjYtNC43Yy0xNC45IDExLjItMjguNiAxMy4xLTQyLjMgMTAuMy0xNC45LTMtMzAuOS0xMS45LTQ3LjgtMjQuNi0zOC40LTI5LTkwLjUtMjktMTI5IDAtMjQgMTguMS00MC43IDI2LjMtNTQuNSAyNi4zcy0zMC41LTguMi01NC41LTI2LjNjLTM4LjQtMjktOTAuNS0yOS0xMjkgMC0yMS42IDE2LjMtNDEuMyAyNS44LTU4LjkgMjUuNy05LjYtLjEtMTkuOS0zLTMxLjItMTEuNS0xMC42LTgtMjUuNi01LjktMzMuNiA0LjdTNyAzODYuMyAxNy42IDM5NC4zYzE5LjEgMTQuNCAzOS40IDIxIDU5LjggMjEuMSAzMy45IC4yIDY0LjMtMTcuNCA4OC4xLTM1LjMgMjEuMy0xNi4xIDQ5LjktMTYuMSA3MS4yIDAgMjQuMiAxOC4zIDUyLjMgMzUuOSA4My40IDM1LjlzNTkuMS0xNy43IDgzLjQtMzUuOXoiXX0sWGFhPXh5ZSx5eWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY29tbWVudC1kb3RzIixpY29uOls1MTIsNTEyLFsxMjgxNzIsNjIwNzUsImNvbW1lbnRpbmciXSwiZjRhZCIsIk0yNTYgNDgwYzE0MS40IDAgMjU2LTEwNy41IDI1Ni0yNDBTMzk3LjQgMCAyNTYgMCAwIDEwNy41IDAgMjQwYzAgNTQuMyAxOS4yIDEwNC4zIDUxLjYgMTQ0LjVMMi44IDQ3Ni44Yy00LjggOS0zLjMgMjAgMy42IDI3LjVzMTcuOCA5LjggMjcuMSA1LjhsMTE4LjQtNTAuN0MxODMuNyA0NzIuNiAyMTguOSA0ODAgMjU2IDQ4MHpNMTI4IDIwOGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTEyOCAwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptOTYgMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHoiXX0sUWFhPXl5ZSx3eWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2hhcnQtcGllIixpY29uOls1NzYsNTEyLFsicGllLWNoYXJ0Il0sImYyMDAiLCJNNTEyLjQgMjQwbC0xNzYgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0xNzZjMC0xNy43IDE0LjQtMzIuMiAzMS45LTI5LjkgMTA3IDE0LjIgMTkxLjggOTkgMjA2IDIwNiAyLjMgMTcuNS0xMi4yIDMxLjktMjkuOSAzMS45ek0yMjIuNiAzNy4yYzE4LjEtMy44IDMzLjggMTEgMzMuOCAyOS41bDAgMTk3LjNjMCA1LjYgMiAxMSA1LjUgMTUuM0wzOTQgNDM4LjdjMTEuNyAxNC4xIDkuMiAzNS40LTYuOSA0NC4xLTM0LjEgMTguNi03My4yIDI5LjItMTE0LjcgMjkuMi0xMzIuNSAwLTI0MC0xMDcuNS0yNDAtMjQwIDAtMTE1LjUgODEuNS0yMTEuOSAxOTAuMi0yMzQuOHpNNDc3LjggMjg4bDY0IDBjMTguNSAwIDMzLjMgMTUuNyAyOS41IDMzLjgtMTAuMiA0OC40LTM1IDkxLjQtNjkuNiAxMjQuMi0xMi4zIDExLjctMzEuNiA5LjItNDIuNC0zLjlMMzc0LjkgMzQwLjRjLTE3LjMtMjAuOS0yLjQtNTIuNCAyNC42LTUyLjRsNzguMiAweiJdfSxKYWE9d3llLGVzYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmcm9nIixpY29uOls1NzYsNTEyLFtdLCJmNTJlIiwiTTM2OCAzMmM0MS43IDAgNzUuOSAzMS44IDc5LjcgNzIuNWw4NS42IDI2LjNjMjUuNCA3LjggNDIuOCAzMS4zIDQyLjggNTcuOSAwIDIxLjgtMTEuNyA0MS45LTMwLjcgNTIuN2wtMTQ0LjUgODIuMSA5Mi41IDkyLjUgNTAuNyAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC02NCAwYy04LjUgMC0xNi42LTMuNC0yMi42LTkuNEwzNDYuOSAzNjAuMmMxMS43LTM2IDMuMi03Ny4xLTI1LjQtMTA1LjctNDAuNi00MC42LTEwNi4zLTQwLjYtMTQ2LjktLjFMMTAxIDMyNC40Yy02LjQgNi4xLTYuNyAxNi4yLS42IDIyLjZzMTYuMiA2LjYgMjIuNiAuNmw3My44LTcwLjIgLjEtLjEgLjEtLjFjMy41LTMuNSA3LjMtNi42IDExLjMtOS4yIDI3LjktMTguNSA2NS45LTE1LjQgOTAuNSA5LjIgMjQuNyAyNC43IDI3LjcgNjIuOSA5IDkwLjktMi42IDMuOC01LjYgNy41LTkgMTAuOUwyNjEuOCA0MTYgMzUyIDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkw2NCA0ODBDMjguNyA0ODAgMCA0NTEuMyAwIDQxNiAwIDI0OS42IDEyNyAxMTIuOSAyODkuMyA5Ny41IDI5Ni4yIDYwLjIgMzI4LjggMzIgMzY4IDMyem0wIDEwNGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6Il19LHRzYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ3aW5lLWJvdHRsZSIsaWNvbjpbMzIwLDUxMixbXSwiZjcyZiIsIk04MC0zMmMwLTE3LjcgMTQuMy0zMiAzMi0zMmw5NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyIDAgMTEuOC02LjQgMjIuMi0xNiAyNy43bDAgMTQ1LjZjNTYuNSAyNC43IDk2IDgxLjEgOTYgMTQ2LjdsMCAyMjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNTc2Yy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDI4OGMwLTY1LjYgMzkuNS0xMjIgOTYtMTQ2LjdMOTYtNC4zQzg2LjQtOS44IDgwLTIwLjIgODAtMzJ6TTk2IDI4OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJsMTI4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0xMjhjMC0xNy43LTE0LjMtMzItMzItMzJMOTYgMjg4eiJdfSxhc2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaW5ib3giLGljb246WzUxMiw1MTIsW10sImYwMWMiLCJNOTEuOCAzMkM1OS45IDMyIDMyLjkgNTUuNCAyOC40IDg2LjlMLjYgMjgxLjJjLS40IDMtLjYgNi0uNiA5LjFMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzg0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0xMjUuN2MwLTMtLjItNi4xLS42LTkuMUw0ODMuNiA4Ni45QzQ3OS4xIDU1LjQgNDUyLjEgMzIgNDIwLjIgMzJMOTEuOCAzMnptMCA2NGwzMjguNSAwIDI3LjQgMTkyLTU5LjkgMGMtMTIuMSAwLTIzLjIgNi44LTI4LjYgMTcuN2wtMTQuMyAyOC42Yy01LjQgMTAuOC0xNi41IDE3LjctMjguNiAxNy43bC0xMjAuNCAwYy0xMi4xIDAtMjMuMi02LjgtMjguNi0xNy43bC0xNC4zLTI4LjZjLTUuNC0xMC44LTE2LjUtMTcuNy0yOC42LTE3LjdMNjQuMyAyODggOTEuOCA5NnoiXX0sa3llPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNxdWFyZS1oIixpY29uOls0NDgsNTEyLFsiaC1zcXVhcmUiXSwiZjBmZCIsIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyek0zMjAgMTY4bDAgMTc2YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtNjQtOTYgMCAwIDY0YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtMTc2YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCA2NCA5NiAwIDAtNjRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHoiXX0sc3NhPWt5ZSxpc2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaG91c2UtbWVkaWNhbCIsaWNvbjpbNTEyLDUxMixbXSwiZTNiMiIsIk0yNzcuOCA4LjZjLTEyLjMtMTEuNC0zMS4zLTExLjQtNDMuNSAwbC0yMjQgMjA4Yy05LjYgOS0xMi44IDIyLjktOCAzNS4xUzE4LjggMjcyIDMyIDI3MmwxNiAwIDAgMTc2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDI4OCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMTc2IDE2IDBjMTMuMiAwIDI1LTguMSAyOS44LTIwLjNzMS42LTI2LjItOC0zNS4xbC0yMjQtMjA4ek0yMjQgMjQ4YzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDQwIDQwIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC00MCAwIDAgNDBjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC00MC00MCAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZsNDAgMCAwLTQweiJdfSxTeWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2lyY2xlLWNoZXZyb24tcmlnaHQiLGljb246WzUxMiw1MTIsWyJjaGV2cm9uLWNpcmNsZS1yaWdodCJdLCJmMTM4IiwiTTAgMjU2YTI1NiAyNTYgMCAxIDAgNTEyIDAgMjU2IDI1NiAwIDEgMCAtNTEyIDB6TTI0MSAzNzdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsODctODctODctODdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMEwzNDUgMjM5YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45TDI0MSAzNzd6Il19LHJzYT1TeWUsb3NhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZpbGUtY3N2IixpY29uOls1NzYsNTEyLFtdLCJmNmRkIiwiTTk2IDBDNjAuNyAwIDMyIDI4LjcgMzIgNjRsMCAzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRsODAgMCAwLTExMmMwLTM1LjMgMjguNy02NCA2NC02NGwxNzYgMCAwLTE2NS41YzAtMTctNi43LTMzLjMtMTguNy00NS4zTDI5MC43IDE4LjdDMjc4LjcgNi43IDI2Mi41IDAgMjQ1LjUgMEw5NiAwek0zNTcuNSAxNzZMMjY0IDE3NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRMMjQwIDU4LjUgMzU3LjUgMTc2ek0yNjQgMzgwYy0yNC4zIDAtNDQgMTkuNy00NCA0NGwwIDgwYzAgMjQuMyAxOS43IDQ0IDQ0IDQ0bDE2IDBjMjQuMyAwIDQ0LTE5LjcgNDQtNDRsMC04YzAtMTEtOS0yMC0yMC0yMHMtMjAgOS0yMCAyMGwwIDhjMCAyLjItMS44IDQtNCA0bC0xNiAwYy0yLjIgMC00LTEuOC00LTRsMC04MGMwLTIuMiAxLjgtNCA0LTRsMTYgMGMyLjIgMCA0IDEuOCA0IDRsMCA4YzAgMTEgOSAyMCAyMCAyMHMyMC05IDIwLTIwbDAtOGMwLTI0LjMtMTkuNy00NC00NC00NGwtMTYgMHptMTM2IDBjLTI4LjcgMC01MiAyMy4zLTUyIDUyczIzLjMgNTIgNTIgNTJjNi42IDAgMTIgNS40IDEyIDEycy01LjQgMTItMTIgMTJsLTMyIDBjLTExIDAtMjAgOS0yMCAyMHM5IDIwIDIwIDIwbDMyIDBjMjguNyAwIDUyLTIzLjMgNTItNTJzLTIzLjMtNTItNTItNTJjLTYuNiAwLTEyLTUuNC0xMi0xMnM1LjQtMTIgMTItMTJsMjQgMGMxMSAwIDIwLTkgMjAtMjBzLTktMjAtMjAtMjBsLTI0IDB6bTk2IDBjLTExIDAtMjAgOS0yMCAyMGwwIDMxLjZjMCAzNS41IDEwLjUgNzAuMyAzMC4yIDk5LjhsNS4xIDcuN2MzLjcgNS42IDEwIDguOSAxNi42IDguOXMxMi45LTMuMyAxNi42LTguOWw1LjEtNy43YzE5LjctMjkuNiAzMC4yLTY0LjMgMzAuMi05OS44bDAtMzEuNmMwLTExLTktMjAtMjAtMjBzLTIwIDktMjAgMjBsMCAzMS42YzAgMTkuNi00LjEgMzguOS0xMiA1Ni43LTcuOS0xNy44LTEyLTM3LjEtMTItNTYuN2wwLTMxLjZjMC0xMS05LTIwLTIwLTIweiJdfSxuc2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaGF0LWNvd2JveSIsaWNvbjpbNjQwLDUxMixbXSwiZjhjMCIsIk0xODIuMiA3Ni4xTDEzMC44IDMwNy41QzE0NS41IDMyNC45IDE2Ny40IDMzNiAxOTIgMzM2bDI1NiAwYzI0LjYgMCA0Ni41LTExLjEgNjEuMi0yOC41TDQ1Ny44IDc2LjFjLTUuNy0yNS44LTI4LjYtNDQuMS01NS00NC4xLTEyLjIgMC0yNC4xIDQtMzMuOCAxMS4zbC00LjcgMy41Yy0yNi4zIDE5LjctNjIuNCAxOS43LTg4LjYgMEwyNzEgNDMuM2MtOS44LTcuMy0yMS42LTExLjMtMzMuOC0xMS4zLTI2LjQgMC00OS4zIDE4LjMtNTUgNDQuMXpNNjQgMjU2YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzAgMjM4LjMgMCAyNTZDMCAzNjIgODYgNDQ4IDE5MiA0NDhsMjU2IDBjMTA2IDAgMTkyLTg2IDE5Mi0xOTIgMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJjMCA3MC43LTU3LjMgMTI4LTEyOCAxMjhsLTI1NiAwYy03MC43IDAtMTI4LTU3LjMtMTI4LTEyOHoiXX0sX3llPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZhY2UtZ3Jpbi10b25ndWUtd2luayIsaWNvbjpbNTEyLDUxMixbMTI4NTQwLCJncmluLXRvbmd1ZS13aW5rIl0sImY1OGIiLCJNMTUyLjIgNDkwLjFDNjIuNSA0NTAuMiAwIDM2MC40IDAgMjU2IDAgMTE0LjYgMTE0LjYgMCAyNTYgMFM1MTIgMTE0LjYgNTEyIDI1NmMwIDEwNC40LTYyLjUgMTk0LjItMTUyLjIgMjM0LjEgNS4zLTEzIDguMi0yNy4yIDguMi00Mi4xbDAtNjEuN2MxNi45LTE2LjUgMzAuMS0zNi43IDM4LjMtNTkuMyA0LjMtMTEuOC03LjctMjEuOC0xOS42LTE4LjEtMzkuMiAxMi4yLTgzLjcgMTkuMS0xMzAuNyAxOS4xcy05MS41LTYuOS0xMzAuNy0xOS4xYy0xMS45LTMuNy0yMy45IDYuMy0xOS42IDE4LjEgOC4zIDIyLjYgMjEuNSA0Mi44IDM4LjMgNTkuM2wwIDYxLjdjMCAxNC45IDIuOSAyOS4xIDguMiA0Mi4xek0xNTIgMjEybDE2IDBjMTEgMCAyMCA5IDIwIDIwczkgMjAgMjAgMjAgMjAtOSAyMC0yMGMwLTMzLjEtMjYuOS02MC02MC02MGwtMTYgMGMtMzMuMSAwLTYwIDI2LjktNjAgNjAgMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjAgOS0yMCAyMC0yMHptMTg0IDYwYTY0IDY0IDAgMSAwIDAtMTI4IDY0IDY0IDAgMSAwIDAgMTI4ek0zMjAgNDAyLjZsMCA0NS40YzAgMzUuMy0yOC43IDY0LTY0IDY0cy02NC0yOC43LTY0LTY0bDAtNDUuNGMwLTE0LjcgMTEuOS0yNi42IDI2LjYtMjYuNmwyIDBjMTEuMyAwIDIxLjEgNy45IDIzLjYgMTguOSAyLjggMTIuNiAyMC44IDEyLjYgMjMuNiAwIDIuNS0xMS4xIDEyLjMtMTguOSAyMy42LTE4LjlsMiAwYzE0LjcgMCAyNi42IDExLjkgMjYuNiAyNi42ek0zMzYgMTg0YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHoiXX0sbHNhPV95ZSxjc2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibCIsaWNvbjpbMzIwLDUxMixbMTA4XSwiNGMiLCJNNjQgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzNTIgMTkyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMNjQgNDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMkwzMiA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnoiXX0sQW9lPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImFycm93LWRvd24tc2hvcnQtd2lkZSIsaWNvbjpbNTc2LDUxMixbInNvcnQtYW1vdW50LWRlc2MiLCJzb3J0LWFtb3VudC1kb3duLWFsdCJdLCJmODg0IiwiTTI0Ni42IDM3NC42bC05NiA5NmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBsLTk2LTk2Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwTDk2IDM3MC43IDk2IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCAzMDYuNyA0MS40LTQxLjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBzMTIuNSAzMi44IDAgNDUuM3pNMzIwIDMybDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTMyIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6bTAgMTI4bDk2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTk2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6bTAgMTI4bDE2MCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0xNjAgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMCAxMjhsMjI0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTIyNCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyeiJdfSxkc2E9QW9lLHVzYT1Bb2UsTXllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImhvdXJnbGFzcy1oYWxmIixpY29uOlszODQsNTEyLFsiaG91cmdsYXNzLTIiXSwiZjI1MiIsIk0zMiAwQzE0LjMgMCAwIDE0LjMgMCAzMlMxNC4zIDY0IDMyIDY0bDAgMTFjMCA0Mi40IDE2LjkgODMuMSA0Ni45IDExMy4xbDY3LjkgNjcuOS02Ny45IDY3LjlDNDguOSAzNTMuOSAzMiAzOTQuNiAzMiA0MzdsMCAxMWMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzMjAgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwwLTExYzAtNDIuNC0xNi45LTgzLjEtNDYuOS0xMTMuMWwtNjcuOS02Ny45IDY3LjktNjcuOWMzMC0zMCA0Ni45LTcwLjcgNDYuOS0xMTMuMWwwLTExYzE3LjcgMCAzMi0xNC4zIDMyLTMyUzM2OS43IDAgMzUyIDBMMzIgMHpNOTYgNzVsMC0xMSAxOTIgMCAwIDExYzAgMTktNS42IDM3LjQtMTYgNTNMMTEyIDEyOGMtMTAuMy0xNS42LTE2LTM0LTE2LTUzem0xNiAzMDljMy41LTUuMyA3LjYtMTAuMyAxMi4xLTE0LjlsNjcuOS02Ny45IDY3LjkgNjcuOWM0LjYgNC42IDguNiA5LjYgMTIuMiAxNC45TDExMiAzODR6Il19LHBzYT1NeWUsenllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNwb29uIixpY29uOls1MTIsNTEyLFsxMjkzNDgsNjE4NzMsInV0ZW5zaWwtc3Bvb24iXSwiZjJlNSIsIk0yNDUuOCAyMjAuOWMtMTQuNS0xNy42LTIxLjgtMzkuMi0yMS44LTYwLjggMC04MC4yIDk2LTE2MC4yIDE5Mi0xNjAuMiA1MyAwIDk2IDQzIDk2IDk2IDAgOTYtODAgMTkyLTE2MC4yIDE5Mi0yMS42IDAtNDMuMi03LjMtNjAuOC0yMS44TDU0LjYgNTAyLjZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDI0NS44IDIyMC45eiJdfSxoc2E9enllLEN5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjcmVkaXQtY2FyZCIsaWNvbjpbNTEyLDUxMixbMTI4MTc5LDYyMDgzLCJjcmVkaXQtY2FyZC1hbHQiXSwiZjA5ZCIsIk0wIDEyOGwwIDMyIDUxMiAwIDAtMzJjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjh6bTAgODBMMCAzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzg0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0xNzYtNTEyIDB6TTY0IDM2MGMwLTEzLjMgMTAuNy0yNCAyNC0yNGw0OCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC00OCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHptMTQ0IDBjMC0xMy4zIDEwLjctMjQgMjQtMjRsNjQgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtNjQgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjR6Il19LGZzYT1DeWUsSmI9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmlsZS1pbnZvaWNlLWRvbGxhciIsaWNvbjpbMzg0LDUxMixbXSwiZjU3MSIsIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEwyMTMuNSAwYzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43TDM2NS4zIDEyNS4zYzEyIDEyIDE4LjcgMjguMyAxOC43IDQ1LjNMMzg0IDQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgNjR6bTIwOC01LjVsMCA5My41YzAgMTMuMyAxMC43IDI0IDI0IDI0TDMyNS41IDE3NiAyMDggNTguNXpNNjQgODhjMCAxMy4zIDEwLjcgMjQgMjQgMjRsNDggMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEw4OCA2NEM3NC43IDY0IDY0IDc0LjcgNjQgODh6bTAgOTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRsNDggMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtNDggMGMtMTMuMyAwLTI0IDEwLjctMjQgMjR6bTExMiA3NmwwIDRjLTI4LjggLjMtNTIgMjMuNy01MiA1Mi41IDAgMjUuNyAxOC41IDQ3LjYgNDMuOSA1MS44bDQxLjcgN2M2IDEgMTAuNCA2LjIgMTAuNCAxMi4zIDAgNi45LTUuNiAxMi41LTEyLjUgMTIuNUwxNTIgNDAwYy0xMSAwLTIwIDktMjAgMjBzOSAyMCAyMCAyMGwyNCAwIDAgNGMwIDExIDkgMjAgMjAgMjBzMjAtOSAyMC0yMGwwLTQuN2MyNS00LjEgNDQtMjUuNyA0NC01MS44IDAtMjUuNy0xOC41LTQ3LjYtNDMuOS01MS44bC00MS43LTdjLTYtMS0xMC40LTYuMi0xMC40LTEyLjMgMC02LjkgNS42LTEyLjUgMTIuNS0xMi41bDQ3LjUgMGMxMSAwIDIwLTkgMjAtMjBzLTktMjAtMjAtMjBsLTggMCAwLTRjMC0xMS05LTIwLTIwLTIwcy0yMCA5LTIwIDIweiJdfSxUeWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic3BhZ2hldHRpLW1vbnN0ZXItZmx5aW5nIixpY29uOls2NDAsNTEyLFsicGFzdGFmYXJpYW5pc20iXSwiZjY3YiIsIk0yMDggNjRhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptNDggMGMwIDE2LjItNiAzMS4xLTE2IDQyLjNsMTUuNiAzMS4yYzE4LjctNiAzOS45LTkuNSA2NC40LTkuNXM0NS44IDMuNSA2NC40IDkuNUw0MDAgMTA2LjNjLTEwLTExLjMtMTYtMjYuMS0xNi00Mi4zIDAtMzUuMyAyOC43LTY0IDY0LTY0czY0IDI4LjcgNjQgNjQtMjguNyA2NC02NCA2NGMtMS43IDAtMy40LS4xLTUuMS0uMkw0MjcuOCAxNThjMjEuMSAxMy42IDM3LjcgMzAuMiA1MS40IDQ2LjQgNy4xIDguMyAxMy41IDE2LjYgMTkuMyAyNGwxLjQgMS44YzYuMyA4LjEgMTEuNiAxNC44IDE2LjcgMjAuNCAxMC43IDExLjcgMTYuMSAxMy40IDE5LjQgMTMuNCAyLjUgMCA0LjMtLjYgNy4xLTMuMyAzLjctMy41IDcuMS04LjggMTIuNS0xNy40bC42LS45YzQuNi03LjQgMTEtMTcuNiAxOS40LTI1LjcgOS43LTkuMyAyMi45LTE2LjcgNDAuNC0xNi43IDEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0Yy0yLjUgMC00LjMgLjYtNy4xIDMuMy0zLjcgMy41LTcuMSA4LjgtMTIuNSAxNy40bC0uNiAuOWMtNC42IDcuNC0xMSAxNy42LTE5LjQgMjUuNy05LjcgOS4zLTIyLjkgMTYuNy00MC40IDE2LjctMTguNSAwLTMyLjktOC41LTQ0LjMtMTguNi0zLjEgNC02LjYgOC4zLTEwLjUgMTIuNyAxLjQgNC4zIDIuOCA4LjUgNCAxMi41IC45IDMgMS44IDUuOCAyLjYgOC42IDMgOS44IDUuNSAxOC4yIDguNiAyNS45IDMuOSA5LjggNy40IDE1LjQgMTAuOCAxOC41IDIuNiAyLjQgNS45IDQuMyAxMi44IDQuMyA4LjcgMCAxNi45LTQuMiAzMy43LTEzLjIgMTUtOCAzNS43LTE4LjggNjIuMy0xOC44IDEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0Yy0xMy40IDAtMjQuNyA1LjItMzkuNyAxMy4yLTEgLjYtMi4xIDEuMS0zLjIgMS43LTEzLjEgNy4xLTMxLjYgMTcuMS01My4xIDE3LjEtMTguNCAwLTMzLjYtNi4xLTQ1LjUtMTcuMi0xMS4xLTEwLjMtMTcuOS0yMy43LTIyLjctMzYtMy42LTktNi43LTE5LjEtOS41LTI4LjUtMTYuNCAxMi4zLTM2LjEgMjMuNi01OC45IDMxLjMgMy42IDEwLjggOC40IDIzLjUgMTQuNCAzNi4yIDcuNSAxNS45IDE2LjIgMzAuNCAyNS44IDQwLjUgOS42IDEwLjIgMTcuNyAxMy43IDI0LjUgMTMuNyAxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGMtMjUuMiAwLTQ1LTEzLjUtNTkuNS0yOC44LTE0LjUtMTUuNC0yNS43LTM0LjktMzQuMi01My04LTE3LTE0LjEtMzMuOC0xOC4zLTQ2LjktNS4yIC40LTEwLjYgLjYtMTYgLjZzLTEwLjgtLjItMTYtLjZjLTQuMiAxMy0xMC4zIDI5LjktMTguMyA0Ni45LTguNSAxOC4xLTE5LjggMzcuNi0zNC4yIDUzLTE0LjQgMTUuMy0zNC4zIDI4LjgtNTkuNSAyOC44LTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRjNi44IDAgMTUtMy41IDI0LjUtMTMuNyA5LjUtMTAuMSAxOC4zLTI0LjYgMjUuOC00MC41IDUuOS0xMi42IDEwLjctMjUuNCAxNC40LTM2LjItMjIuOC03LjctNDIuNS0xOS01OC45LTMxLjMtMi45IDkuNC02IDE5LjUtOS41IDI4LjUtNC44IDEyLjItMTEuNiAyNS42LTIyLjcgMzYtMTEuOSAxMS4xLTI3LjEgMTcuMi00NS41IDE3LjItMTMuMSAwLTI0LjUtNC4xLTMzLjgtOC45LTcuOS00LTE1LjctOS4yLTIyLjEtMTMuNWwwIDAtMi40LTEuNmMtMTUuMy0xMC4yLTI1LjgtMTYtMzcuNy0xNi0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0YzI4LjEgMCA0OS42IDE0LjIgNjQuMyAyNGwyLjQgMS42YzYuOSA0LjYgMTIuMSA4LjEgMTcuMiAxMC43IDUuNSAyLjggOS4xIDMuNiAxMiAzLjYgNi44IDAgMTAuMi0xLjkgMTIuOC00LjMgMy40LTMuMiA3LTguOCAxMC44LTE4LjUgMy03LjcgNS42LTE2LjEgOC42LTI1LjkgLjgtMi43IDEuNy01LjYgMi42LTguNiAxLjItNCAyLjYtOC4yIDQtMTIuNS0zLjktNC41LTcuNC04LjgtMTAuNS0xMi43LTExLjQgMTAuMS0yNS45IDE4LjYtNDQuMyAxOC42LTE3LjUgMC0zMC43LTcuNC00MC40LTE2LjctOC40LTguMS0xNC44LTE4LjMtMTkuNC0yNS43bC0uNi0uOWMtNS40LTguNi04LjgtMTMuOS0xMi41LTE3LjQtMi44LTIuNy00LjYtMy4zLTcuMS0zLjMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGMxNy41IDAgMzAuNyA3LjQgNDAuNCAxNi43IDguNCA4LjEgMTQuOCAxOC4zIDE5LjQgMjUuN2wuNiAuOWM1LjQgOC42IDguOCAxMy45IDEyLjUgMTcuNCAyLjggMi43IDQuNiAzLjMgNy4xIDMuMyAzLjMgMCA4LjctMS43IDE5LjQtMTMuNCA1LjEtNS42IDEwLjQtMTIuMyAxNi43LTIwLjRsMS40LTEuOGM1LjgtNy40IDEyLjItMTUuNyAxOS4zLTI0IDEzLjgtMTYuMiAzMC4zLTMyLjggNTEuNC00Ni40bC0xNS4xLTMwLjJjLTEuNyAuMS0zLjQgLjItNS4xIC4yLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjQgNjQgMjguNyA2NCA2NHptMjA4IDBhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHoiXX0sbXNhPVR5ZSwkeWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibWFydGluaS1nbGFzcy1jaXRydXMiLGljb246WzY0MCw1MTIsWyJjb2NrdGFpbCJdLCJmNTYxIiwiTTU3NiA4MGMwLTQ0LjItMzUuOC04MC04MC04MC0xOCAwLTM0LjYgNi00OCAxNmwtODEgMGMyMy42LTQ3LjQgNzIuNS04MCAxMjktODAgNzkuNSAwIDE0NCA2NC41IDE0NCAxNDRTNTc1LjUgMjI0IDQ5NiAyMjRjLTYuNSAwLTEzLS40LTE5LjMtMS4zbDY0LTc0LjdjMS4xLTEuMyAyLjItMi43IDMuMy00LjEgMTkuNC0xNC42IDMyLTM3LjggMzItNjR6TTY2LjkgODIuNkM3Mi4yIDcxLjMgODMuNSA2NCA5NiA2NGwzODQgMGMxMi41IDAgMjMuOCA3LjMgMjkuMSAxOC42czMuNCAyNC43LTQuOCAzNC4ybC0xODQuMyAyMTUgMCAxMTYuMiA2NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0xOTIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw2NCAwIDAtMTE2LjItMTg0LjMtMjE1Yy04LjEtOS41LTEwLTIyLjgtNC44LTM0LjJ6TTE2NS42IDEyOEwyODggMjcwLjggNDEwLjQgMTI4IDE2NS42IDEyOHoiXX0sZ3NhPSR5ZSxic2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYnVsbGhvcm4iLGljb246WzUxMiw1MTIsWzEyODIyNiwxMjgzNjNdLCJmMGExIiwiTTQ2MS4yIDE4LjlDNDcyLjcgMjQgNDgwIDM1LjQgNDgwIDQ4bDAgNDE2YzAgMTIuNi03LjMgMjQtMTguOCAyOS4xcy0yNC44IDMuMi0zNC4zLTUuMWwtNDYuNi00MC43Yy00My42LTM4LjEtOTguNy02MC4zLTE1Ni40LTYzbDAgOTUuN2MwIDE3LjctMTQuMyAzMi0zMiAzMmwtMzIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC05NkM1Ny4zIDM4NCAwIDMyNi43IDAgMjU2UzU3LjMgMTI4IDEyOCAxMjhsODQuNSAwYzYxLjgtLjIgMTIxLjQtMjIuNyAxNjcuOS02My4zbDQ2LjYtNDAuN2M5LjQtOC4zIDIyLjktMTAuMiAzNC4zLTUuMXpNMjI0IDMyMGwwIC4yYzcwLjMgMi43IDEzNy44IDI4LjUgMTkyIDczLjRsMC0yNzUuM2MtNTQuMiA0NC45LTEyMS43IDcwLjctMTkyIDczLjRMMjI0IDMyMHoiXX0sdnNhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJveC10aXNzdWUiLGljb246WzUxMiw1MTIsW10sImUwNWIiLCJNMTAzLjkgMzJsMTYxIDBjMTMuOCAwIDI2IDguOCAzMC40IDIxLjlsMTcuNCA1Mi4yYzQuNCAxMy4xIDE2LjYgMjEuOSAzMC40IDIxLjlsNjAuNSAwYzIxLjggMCAzNy4zIDIxLjQgMzAuNCA0Mi4xTDM4NCAzMjAgMTI4IDMyMCA3Mi43IDcwLjlDNjguMiA1MSA4My40IDMyIDEwMy45IDMyek00OCAyNTZsMTYuNiAwIDE2LjUgNzQuNEM4NiAzNTIuNCAxMDUuNSAzNjggMTI4IDM2OGwyNTYgMGMyMC43IDAgMzktMTMuMiA0NS41LTMyLjhsMjYuNC03OS4yIDguMSAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgMTI4YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4TDQ4IDQ4MGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhMMCAzMDRjMC0yNi41IDIxLjUtNDggNDgtNDh6Il19LHhzYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJtYXR0cmVzcy1waWxsb3ciLGljb246WzU3Niw1MTIsW10sImU1MjUiLCJNMjU2IDY0TDY0IDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4TDAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDE5MiAwIDAtMzg0em00OCAzODRsMjA4IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yNTZjMC0zNS4zLTI4LjctNjQtNjQtNjRsLTIwOCAwIDAgMzg0ek02NCAxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJsNjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDE5MmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtNjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0xOTJ6Il19LHlzYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjaGV2cm9uLWxlZnQiLGljb246WzMyMCw1MTIsWzkwMDFdLCJmMDUzIiwiTTkuNCAyMzMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsMTkyIDE5MmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDc3LjMgMjU2IDI0Ni42IDg2LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTE5MiAxOTJ6Il19LHdzYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjbG91ZC1tb29uLXJhaW4iLGljb246WzU3Niw1MTIsW10sImY3M2MiLCJNNDQ4IDBjLTY4LjYgMC0xMjcuMSA0My4xLTE0OS44IDEwMy44IDE3LjEgMTQuMSAyOS42IDMzLjUgMzQuOSA1NS44IDM5LjkgMjEuNyA2Ni45IDYzLjkgNjYuOSAxMTIuNSAwIDEzLjUtMi4xIDI2LjUtNS45IDM4LjcgMTYuOSA2IDM1IDkuMyA1My45IDkuMyA0MyAwIDgyLjEtMTcgMTEwLjgtNDQuNiA0LjYtNC40IDUuOS0xMS4yIDMuMy0xN3MtOC42LTkuMy0xNC45LTguOGMtMyAuMi02LjEgLjQtOS4yIC40LTYzLjUgMC0xMTUtNTEuNS0xMTUtMTE1IDAtNDUuMSAyNi04NC4yIDYzLjgtMTAzIDUuNy0yLjggOS04LjkgOC4yLTE1LjJTNDg5LjYgNS4zIDQ4My40IDMuOUM0NzIgMS40IDQ2MC4yIDAgNDQ4IDB6TTI3MiAzNTJjNDQuMiAwIDgwLTM1LjggODAtODAgMC0zOS0yNy45LTcxLjUtNjQuOC03OC42IC41LTMuMSAuOC02LjIgLjgtOS40IDAtMzAuOS0yNS4xLTU2LTU2LTU2LTEyLjQgMC0yMy45IDQtMzMuMSAxMC44LTEzLjQtMjUuNS00MC4xLTQyLjgtNzAuOS00Mi44LTQ0LjIgMC04MCAzNS44LTgwIDgwIDAgNy40IDEgMTQuNiAyLjkgMjEuNS0yOS44IDExLjYtNTAuOSA0MC42LTUwLjkgNzQuNSAwIDQ0LjIgMzUuOCA4MCA4MCA4MGwxOTIgMHpNNjkgNDAxLjFjLTEyLjYtNC4yLTI2LjIgMi42LTMwLjQgMTUuMkwxNy4yIDQ4MC40QzEzIDQ5MyAxOS44IDUwNi42IDMyLjQgNTEwLjhzMjYuMi0yLjYgMzAuNC0xNS4ybDIxLjQtNjQuMWM0LjItMTIuNi0yLjYtMjYuMi0xNS4yLTMwLjR6bTEyMCAwYy0xMi42LTQuMi0yNi4yIDIuNi0zMC40IDE1LjJsLTIxLjQgNjQuMWMtNC4yIDEyLjYgMi42IDI2LjIgMTUuMiAzMC40czI2LjItMi42IDMwLjQtMTUuMmwyMS40LTY0LjFjNC4yLTEyLjYtMi42LTI2LjItMTUuMi0zMC40em0xMjAgMGMtMTIuNi00LjItMjYuMiAyLjYtMzAuNCAxNS4ybC0yMS40IDY0LjFjLTQuMiAxMi42IDIuNiAyNi4yIDE1LjIgMzAuNHMyNi4yLTIuNiAzMC40LTE1LjJsMjEuNC02NC4xYzQuMi0xMi42LTIuNi0yNi4yLTE1LjItMzAuNHoiXX0sTm9lPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImFycm93LWRvd24tMS05IixpY29uOls1MTIsNTEyLFsic29ydC1udW1lcmljLWFzYyIsInNvcnQtbnVtZXJpYy1kb3duIl0sImYxNjIiLCJNNDE4LjcgMzhjOC4zIDYgMTMuMyAxNS43IDEzLjMgMjZsMCA5NiAxNiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC05NiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDE2IDAgMC01MS42LTUuOSAyYy0xNi44IDUuNi0zNC45LTMuNS00MC41LTIwLjJzMy41LTM0LjkgMjAuMi00MC41bDQ4LTE2YzkuOC0zLjMgMjAuNS0xLjYgMjguOCA0LjR6TTM2NS4xIDQzMC42bDExLjctMThjLTMyLjktOS45LTU2LjgtNDAuNS01Ni44LTc2LjYgMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGMwIDIyLjktNi42IDQ1LjMtMTkuMSA2NC41bC00Mi4xIDY0LjljLTkuNiAxNC44LTI5LjQgMTkuMS00NC4zIDkuNHMtMTkuMS0yOS40LTkuNC00NC4zek00MjQgMzM2YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6TTE1MC42IDQ3MC42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtOTYtOTZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBMOTYgMzcwLjcgOTYgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDMwNi43IDQxLjQtNDEuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zbC05NiA5NnoiXX0sa3NhPU5vZSxTc2E9Tm9lLF9zYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoYW5kLXNwb2NrIixpY29uOls1MTIsNTEyLFsxMjg0MDZdLCJmMjU5IiwiTTIxNC45IDIzLjdDMjEwLjMgNi42IDE5Mi44LTMuNSAxNzUuNyAxLjFzLTI3LjIgMjIuMS0yMi42IDM5LjJMMjA2IDIzNy44YzIuNSA5LjItNC41IDE4LjItMTQgMTguMi02LjQgMC0xMi00LjItMTMuOS0xMC4zTDEzNC42IDEwMi43Yy01LjEtMTYuOS0yMy0yNi40LTM5LjktMjEuM3MtMjYuNCAyMy0yMS4zIDM5LjlsNjIuOCAyMDYuNGMyLjQgNy45LTcuMiAxMy44LTEzLjIgOC4xTDY3LjYgMjgzYy0xNi0xNS4yLTQxLjMtMTQuNi01Ni42IDEuNFMtMy42IDMyNS43IDEyLjQgMzQxTDEyNC44IDQ0OGM0My4xIDQxLjEgMTAwLjQgNjQgMTYwIDY0bDE5LjEgMGMuMSAwIC4xLS4xIC4xLS4xcy4xLS4xIC4xLS4xYzU4LjMtMy41IDEwOC42LTQzLjIgMTI1LjMtOTkuN2w4MS4yLTI3NWM1LTE2LjktNC43LTM0LjctMjEuNi0zOS44cy0zNC43IDQuNy0zOS44IDIxLjZMNDExLjUgMjQ3LjFjLTEuNiA1LjMtNi40IDguOS0xMiA4LjktNy45IDAtMTMuOC03LjMtMTIuMi0xNS4xbDM2LTE3MC4zYzMuNy0xNy4zLTcuNC0zNC4zLTI0LjctMzcuOXMtMzQuMyA3LjQtMzcuOSAyNC43TDMyMy4xIDIzNS4xYy0yLjYgMTIuMi0xMy4zIDIwLjktMjUuOCAyMC45LTExLjkgMC0yMi40LTgtMjUuNC0xOS41bC01Ny0yMTIuOHoiXX0sRHllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6IndhbmQtbWFnaWMtc3BhcmtsZXMiLGljb246WzU3Niw1MTIsWyJtYWdpYy13YW5kLXNwYXJrbGVzIl0sImUyY2EiLCJNMjYzLjQtMjdMMjc4LjIgOS44IDMxNSAyNC42YzMgMS4yIDUgNC4yIDUgNy40cy0yIDYuMi01IDcuNEwyNzguMiA1NC4yIDI2My40IDkxYy0xLjIgMy00LjIgNS03LjQgNXMtNi4yLTItNy40LTVMMjMzLjggNTQuMiAxOTcgMzkuNGMtMy0xLjItNS00LjItNS03LjRzMi02LjIgNS03LjRMMjMzLjggOS44IDI0OC42LTI3YzEuMi0zIDQuMi01IDcuNC01czYuMiAyIDcuNCA1ek0xMTAuNyA0MS43bDIxLjUgNTAuMSA1MC4xIDIxLjVjNS45IDIuNSA5LjcgOC4zIDkuNyAxNC43cy0zLjggMTIuMi05LjcgMTQuN2wtNTAuMSAyMS41LTIxLjUgNTAuMWMtMi41IDUuOS04LjMgOS43LTE0LjcgOS43cy0xMi4yLTMuOC0xNC43LTkuN0w1OS44IDE2NC4yIDkuNyAxNDIuN0MzLjggMTQwLjIgMCAxMzQuNCAwIDEyOHMzLjgtMTIuMiA5LjctMTQuN0w1OS44IDkxLjggODEuMyA0MS43QzgzLjggMzUuOCA4OS42IDMyIDk2IDMyczEyLjIgMy44IDE0LjcgOS43ek00NjQgMzA0YzYuNCAwIDEyLjIgMy44IDE0LjcgOS43bDIxLjUgNTAuMSA1MC4xIDIxLjVjNS45IDIuNSA5LjcgOC4zIDkuNyAxNC43cy0zLjggMTIuMi05LjcgMTQuN2wtNTAuMSAyMS41LTIxLjUgNTAuMWMtMi41IDUuOS04LjMgOS43LTE0LjcgOS43cy0xMi4yLTMuOC0xNC43LTkuN2wtMjEuNS01MC4xLTUwLjEtMjEuNWMtNS45LTIuNS05LjctOC4zLTkuNy0xNC43czMuOC0xMi4yIDkuNy0xNC43bDUwLjEtMjEuNSAyMS41LTUwLjFjMi41LTUuOSA4LjMtOS43IDE0LjctOS43ek00NjAgMGMxMSAwIDIxLjYgNC40IDI5LjUgMTIuMmw0Mi4zIDQyLjNDNTM5LjYgNjIuNCA1NDQgNzMgNTQ0IDg0cy00LjQgMjEuNi0xMi4yIDI5LjVsLTg4LjIgODguMi0xMDEuMy0xMDEuMyA4OC4yLTg4LjJDNDM4LjQgNC40IDQ0OSAwIDQ2MCAwek00NC4yIDM5OC41TDMwOC40IDEzNC4zIDQwOS43IDIzNS42IDE0NS41IDQ5OS44QzEzNy42IDUwNy42IDEyNyA1MTIgMTE2IDUxMnMtMjEuNi00LjQtMjkuNS0xMi4yTDQ0LjIgNDU3LjVDMzYuNCA0NDkuNiAzMiA0MzkgMzIgNDI4czQuNC0yMS42IDEyLjItMjkuNXoiXX0sTXNhPUR5ZSx6c2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY29tbWVudC1tZWRpY2FsIixpY29uOls1MTIsNTEyLFtdLCJmN2Y1IiwiTTI1NiA0ODBjMTQxLjQgMCAyNTYtMTA3LjUgMjU2LTI0MFMzOTcuNCAwIDI1NiAwIDAgMTA3LjUgMCAyNDBjMCA1NC4zIDE5LjIgMTA0LjMgNTEuNiAxNDQuNUwyLjggNDc2LjhjLTQuOCA5LTMuMyAyMCAzLjYgMjcuNXMxNy44IDkuOCAyNy4xIDUuOGwxMTguNC01MC43QzE4My43IDQ3Mi42IDIxOC45IDQ4MCAyNTYgNDgwek0yMTcuNiAxNTMuNmMwLTEwLjYgOC42LTE5LjIgMTkuMi0xOS4ybDM4LjQgMGMxMC42IDAgMTkuMiA4LjYgMTkuMiAxOS4ybDAgNDggNDggMGMxMC42IDAgMTkuMiA4LjYgMTkuMiAxOS4ybDAgMzguNGMwIDEwLjYtOC42IDE5LjItMTkuMiAxOS4ybC00OCAwIDAgNDhjMCAxMC42LTguNiAxOS4yLTE5LjIgMTkuMmwtMzguNCAwYy0xMC42IDAtMTkuMi04LjYtMTkuMi0xOS4ybDAtNDgtNDggMGMtMTAuNiAwLTE5LjItOC42LTE5LjItMTkuMmwwLTM4LjRjMC0xMC42IDguNi0xOS4yIDE5LjItMTkuMmw0OCAwIDAtNDh6Il19LENzYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJiZWxsLXNsYXNoIixpY29uOls1NzYsNTEyLFsxMjgyNzcsNjE5NDNdLCJmMWY2IiwiTTQxLTI0LjljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwUy0yLjMtLjMgNyA5LjFsNTI4IDUyOGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTg3LjUtODcuNWMxNy4yLTIuNCAzMC41LTE3LjMgMzAuNS0zNS4yIDAtOC4xLTIuNy0xNS45LTcuOC0yMi4ybC05LjgtMTIuMkM0NjQuNCAzMDguNSA0NDggMjYxLjggNDQ4IDIxMy43bDAtMjEuN2MwLTc3LjQtNTUtMTQyLTEyOC0xNTYuOGwwLTMuMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDMuMmMtMzguNiA3LjgtNzIuMiAyOS42LTk1LjIgNTkuN0w0MS0yNC45em04NyAyMzguNWMwIDQ4LjEtMTYuNCA5NC44LTQ2LjQgMTMyLjRsLTkuOCAxMi4yYy01IDYuMy03LjggMTQuMS03LjggMjIuMiAwIDE5LjYgMTUuOSAzNS41IDM1LjUgMzUuNWwyMzUuMyAwLTIwNi45LTIwNi45IDAgNC41ek0yODggNTEyYzI5LjggMCA1NC45LTIwLjQgNjItNDhsLTEyNCAwYzcuMSAyNy42IDMyLjIgNDggNjIgNDh6Il19LFJvZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoYW5kc2hha2Utc2xhc2giLGljb246WzU3Niw1MTIsWzU3NDM5LCJoYW5kc2hha2UtYWx0LXNsYXNoIiwiaGFuZHNoYWtlLXNpbXBsZS1zbGFzaCJdLCJlMDYwIiwiTTQxLTI0LjljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwUy0yLjMtLjMgNyA5LjFsNTI4IDUyOGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTI4OC0yODggMTQuMi0xNC4yYzQuMi00LjIgOS41LTYuNSAxNC45LTYuOSA2LjgtLjYgMTMuOCAxLjcgMTkgNi45TDUwNS42IDM3NiA1NzYgMzIwIDU3NiAzMiA0NjQgOTYgNDQwLjIgODAuMUM0MjQuNCA2OS42IDQwNS45IDY0IDM4Ni45IDY0bC03MC40IDBjLTEuMSAwLTIuMyAwLTMuNCAuMS0xNi45IC45LTMyLjggOC41LTQ0LjIgMjEuMWwtNTUuOCA2Mi4xLTM0LTM0IDQ0LjMtNDkuMi0zOS43IDBjLTE1LjMgMC0zMC4xIDMuNi00My41IDEwLjRMNDEtMjQuOXpNMCA2OS44TDAgMzIwIDE1Ni40IDQ1MC4zYzIzIDE5LjIgNTIgMjkuNyA4MS45IDI5LjdsMTUuNyAwLTctN2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDQxIDQxIDkgMGMyMi4yIDAgNDMuOC01LjggNjIuOC0xNi40TDAgNjkuOHoiXX0sVHNhPVJvZSwkc2E9Um9lLERzYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJib3R0bGUtd2F0ZXIiLGljb246WzMyMCw1MTIsW10sImU0YzUiLCJNMTEyLTMybDk2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTk2IDBDOTQuMyAzMiA4MCAxNy43IDgwIDBzMTQuMy0zMiAzMi0zMnpNMTYgMTQ0YzAtMzUuMyAyOC43LTY0IDY0LTY0bDE2MCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0IDAgMjQuMS0xMy4zIDQ1LjEtMzMgNTYgMTkuNyAxMC45IDMzIDMxLjkgMzMgNTZzLTEzLjMgNDUuMS0zMyA1NmMxOS43IDEwLjkgMzMgMzEuOSAzMyA1NnMtMTMuMyA0NS4xLTMzIDU2YzE5LjcgMTAuOSAzMyAzMS45IDMzIDU2IDAgMzUuMy0yOC43IDY0LTY0IDY0TDgwIDU0NGMtMzUuMyAwLTY0LTI4LjctNjQtNjQgMC0yNC4xIDEzLjMtNDUuMSAzMy01Ni0xOS43LTEwLjktMzMtMzEuOS0zMy01NnMxMy4zLTQ1LjEgMzMtNTZjLTE5LjctMTAuOS0zMy0zMS45LTMzLTU2czEzLjMtNDUuMSAzMy01NmMtMTkuNy0xMC45LTMzLTMxLjktMzMtNTZ6Il19LExzYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJkaWNlLWQyMCIsaWNvbjpbNTEyLDUxMixbXSwiZjZjZiIsIk0yMjQuNC04LjJjMTkuNi0xMS4xIDQzLjYtMTEuMSA2My4xIDBsMTkyIDEwOC44YzIwIDExLjQgMzIuNCAzMi42IDMyLjQgNTUuN2wwIDIxNS42YzAgMjMtMTIuNCA0NC4zLTMyLjQgNTUuN2wtMTkyIDEwOC44Yy0xOS42IDExLjEtNDMuNiAxMS4xLTYzLjEgMEwzMi40IDQyNy41QzEyLjQgNDE2LjEgMCAzOTQuOCAwIDM3MS44TDAgMTU2LjJjMC0yMyAxMi40LTQ0LjMgMzIuNC01NS43TDIyNC40LTguMnptNTIgNzMuMkMyNjcgNDkuOCAyNDUgNDkuOCAyMzUuNiA2NWwtNzYuNiAxMjMuNy04NS40LTQ2LjMtMy44LTEuNmMtOC45LTIuNy0xOC44IDEuMS0yMy40IDkuNnMtMi40IDE4LjkgNC43IDI0LjhsMy4zIDIuMyA4My40IDQ1LjItNzQuNiAxMjAuNkM1NS4zIDM1Ni4yIDYxIDM3MyA3NSAzNzguNGwxNjEgNjEuOSAwIDM5LjdjMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjBsMC0zOS43IDE2MS02MS45YzE0LTUuNCAxOS43LTIyLjIgMTEuOC0zNWwtNzQuNy0xMjAuNiA4My40LTQ1LjJjOS43LTUuMyAxMy4zLTE3LjQgOC4xLTI3LjFzLTE3LjQtMTMuMy0yNy4xLTguMUwzNTMgMTg4LjcgMjc2LjQgNjV6bS00NyAzMjkuOWwtMTIyLTQ2LjkgNTQuNS04OC4xIDY3LjUgMTM1ek00MDQuNiAzNDhsLTEyMiA0Ni45IDY3LjUtMTM1IDU0LjUgODguMXpNMzE5LjMgMjMyTDI1NiAzNTguNiAxOTIuNyAyMzIgMzE5LjMgMjMyek0zMDggMTkybC0xMDQuMSAwIDUyLTg0IDUyIDg0eiJdfSxPb2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYXJyb3ctZG93bi16LWEiLGljb246WzUxMiw1MTIsWyJzb3J0LWFscGhhLWRlc2MiLCJzb3J0LWFscGhhLWRvd24tYWx0Il0sImY4ODEiLCJNMjMwLjYgMzkwLjZsLTgwIDgwYy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtODAtODBjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBMOTYgMzcwLjcgOTYgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDMwNi43IDI1LjQtMjUuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zek0yODggNjRjMC0xNy43IDE0LjMtMzIgMzItMzJsMTI4IDBjMTIuOSAwIDI0LjYgNy44IDI5LjYgMTkuOHMyLjIgMjUuNy02LjkgMzQuOUwzOTcuMyAxNjAgNDQ4IDE2MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMTI4IDBjLTEyLjkgMC0yNC42LTcuOC0yOS42LTE5LjhzLTIuMi0yNS43IDYuOS0zNC45TDM3MC44IDk2IDMyMCA5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTQxMi42IDI3My43bDgwIDE2MGM3LjkgMTUuOCAxLjUgMzUtMTQuMyA0Mi45cy0zNSAxLjUtNDIuOS0xNC4zbC03LjItMTQuMy04OC40IDAtNy4yIDE0LjNjLTcuOSAxNS44LTI3LjEgMjIuMi00Mi45IDE0LjNzLTIyLjItMjcuMS0xNC4zLTQyLjlsODAtMTYwYzUuNC0xMC44IDE2LjUtMTcuNyAyOC42LTE3LjdzMjMuMiA2LjggMjguNiAxNy43ek0zODQgMzU5LjZsLTIwLjIgNDAuNCA0MC40IDAtMjAuMi00MC40eiJdfSxFc2E9T29lLFBzYT1Pb2UsSXNhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJydXNoIixpY29uOlszODQsNTEyLFtdLCJmNTVkIiwiTTE2Mi40IDZjLTEuNS0zLjYtNS02LTguOS02bC0xOSAwYy0zLjkgMC03LjUgMi40LTguOSA2TDEwNC45IDU3LjdjLTMuMiA4LTE0LjYgOC0xNy44IDBMNjYuNCA2Yy0xLjUtMy42LTUtNi04LjktNkw0OCAwQzIxLjUgMCAwIDIxLjUgMCA0OGwwIDIwOCAzODQgMCAwLTIwOGMwLTI2LjUtMjEuNS00OC00OC00OEwyMzAuNSAwYy0zLjkgMC03LjUgMi40LTguOSA2TDIwMC45IDU3LjdjLTMuMiA4LTE0LjYgOC0xNy44IDBMMTYyLjQgNnpNMCAzMDRsMCAxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGw2NCAwIDAgNjRjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NGwwLTY0IDY0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0xNi0zODQgMHpNMTkyIDQ2NGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2eiJdfSxBc2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGVyc29uLXdhbGtpbmctZGFzaGVkLWxpbmUtYXJyb3ctcmlnaHQiLGljb246WzY0MCw1MTIsW10sImU1NTMiLCJNMTYwIDgwYTU2IDU2IDAgMSAwIDAtMTEyIDU2IDU2IDAgMSAwIDAgMTEyek03My40IDIyNy45bDIyLjYtMjIuNiAwIDY5LjNjMCAyOCAxMi4yIDU0LjcgMzMuNSA3Mi45bDcxLjQgNjEuMmM1LjkgNS4xIDkuOCAxMi4xIDEwLjkgMTkuOGwxMi42IDg4LjFjMi41IDE3LjUgMTguNyAyOS43IDM2LjIgMjcuMnMyOS43LTE4LjcgMjcuMi0zNi4ybC0xMi42LTg4LjFjLTMuMy0yMy4xLTE0LjktNDQuMS0zMi42LTU5LjNsLTM0LjUtMjkuNiAwLTExNS4yIDMuOCA0LjdjMTguMiAyMi44IDQ1LjggMzYgNzUgMzZsMzMuMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0zMy4yIDBjLTkuNyAwLTE4LjktNC40LTI1LTEybC0xNy45LTIyLjRjLTIzLTI4LjgtNTcuOS00NS42LTk0LjgtNDUuNi0zMi4yIDAtNjMuMSAxMi44LTg1LjggMzUuNkwyOC4xIDE4Mi42QzEwLjEgMjAwLjYgMCAyMjUgMCAyNTAuNUwwIDI4OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMzcuNWMwLTguNSAzLjQtMTYuNiA5LjQtMjIuNnpNODUuOCA0MDcuM2MtMS41IDUuMi00LjMgMTAtOC4xIDEzLjhMOS40IDQ4OS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDY4LjMtNjguM2MxMS41LTExLjUgMTkuOS0yNS44IDI0LjQtNDEuNWwyLjItNy42LTQ2LTM5LjRjLTIuNS0yLjItNS00LjQtNy40LTYuOEw4NS44IDQwNy4zek00MzIgOGMwLTEzLjMtMTAuNy0yNC0yNC0yNFMzODQtNS4zIDM4NCA4bDAgMzJjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTMyem0wIDEyOGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDMyYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0zMnpNNDA4IDMyMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCAzMmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtMzJjMC0xMy4zLTEwLjctMjQtMjQtMjR6bTI0IDE1MmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDMyYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0zMnpNNjA5IDI3M2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOWwtNzItNzJjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsMzEgMzEtMTAyLjEgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwxMDIuMSAwLTMxIDMxYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNzItNzJ6Il19LEx5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJhcnJvdy11cC1zaG9ydC13aWRlIixpY29uOls1NzYsNTEyLFsic29ydC1hbW91bnQtdXAtYWx0Il0sImY4ODUiLCJNMzIwIDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDMyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTMyIDB6bTAgMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDk2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTk2IDB6bTAgMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDE2MCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xNjAgMHptMCAxMjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMjI0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTIyNCAwek0xNTAuNiA0MS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtOTYgOTZjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMOTYgMTQxLjMgOTYgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0zMDYuNyA0MS40IDQxLjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtOTYtOTZ6Il19LE5zYT1MeWUsRXllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImdyaXAtdmVydGljYWwiLGljb246WzMyMCw1MTIsWyJncmlkLXZlcnRpY2FsIl0sImY1OGUiLCJNMTI4IDQwYzAtMjIuMS0xNy45LTQwLTQwLTQwTDQwIDBDMTcuOSAwIDAgMTcuOSAwIDQwTDAgODhjMCAyMi4xIDE3LjkgNDAgNDAgNDBsNDggMGMyMi4xIDAgNDAtMTcuOSA0MC00MGwwLTQ4em0wIDE5MmMwLTIyLjEtMTcuOS00MC00MC00MGwtNDggMGMtMjIuMSAwLTQwIDE3LjktNDAgNDBsMCA0OGMwIDIyLjEgMTcuOSA0MCA0MCA0MGw0OCAwYzIyLjEgMCA0MC0xNy45IDQwLTQwbDAtNDh6TTAgNDI0bDAgNDhjMCAyMi4xIDE3LjkgNDAgNDAgNDBsNDggMGMyMi4xIDAgNDAtMTcuOSA0MC00MGwwLTQ4YzAtMjIuMS0xNy45LTQwLTQwLTQwbC00OCAwYy0yMi4xIDAtNDAgMTcuOS00MCA0MHpNMzIwIDQwYzAtMjIuMS0xNy45LTQwLTQwLTQwTDIzMiAwYy0yMi4xIDAtNDAgMTcuOS00MCA0MGwwIDQ4YzAgMjIuMSAxNy45IDQwIDQwIDQwbDQ4IDBjMjIuMSAwIDQwLTE3LjkgNDAtNDBsMC00OHpNMTkyIDIzMmwwIDQ4YzAgMjIuMSAxNy45IDQwIDQwIDQwbDQ4IDBjMjIuMSAwIDQwLTE3LjkgNDAtNDBsMC00OGMwLTIyLjEtMTcuOS00MC00MC00MGwtNDggMGMtMjIuMSAwLTQwIDE3LjktNDAgNDB6TTMyMCA0MjRjMC0yMi4xLTE3LjktNDAtNDAtNDBsLTQ4IDBjLTIyLjEgMC00MCAxNy45LTQwIDQwbDAgNDhjMCAyMi4xIDE3LjkgNDAgNDAgNDBsNDggMGMyMi4xIDAgNDAtMTcuOSA0MC00MGwwLTQ4eiJdfSxSc2E9RXllLE9zYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjYXItdHVubmVsIixpY29uOls1MTIsNTEyLFtdLCJlNGRlIiwiTTI1NiAwQzExNC42IDAgMCAxMTQuNiAwIDI1NkwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGw0Mi44IDBjLTYuNi01LjktMTAuOC0xNC40LTEwLjgtMjRsMC0xMTMuMWMwLTEzLjUgMy4xLTI2LjggOS0zOC45bDM5LjctODAuOGM5LjQtMTkuMSAyOC45LTMxLjMgNTAuMi0zMS4zTDMxNyAyMjRjMjEuMyAwIDQwLjggMTIuMSA1MC4yIDMxLjNMNDA3IDMzNmM1LjkgMTIuMSA5IDI1LjQgOSAzOC45TDQxNiA0ODhjMCA5LjYtNC4yIDE4LjEtMTAuOCAyNGw0Mi44IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0xOTJDNTEyIDExNC42IDM5Ny40IDAgMjU2IDB6TTM2Mi44IDUxMmMtNi42LTUuOS0xMC44LTE0LjQtMTAuOC0yNGwwLTI0LTE5MiAwIDAgMjRjMCA5LjYtNC4yIDE4LjEtMTAuOCAyNGwyMTMuNyAwem0tMTc1LTIzNS41bC0yOS4zIDU5LjUgMTk0LjkgMC0yOS4zLTU5LjVjLTEuMy0yLjctNC4xLTQuNS03LjItNC41TDE5NSAyNzJjLTMgMC01LjggMS43LTcuMiA0LjV6TTE3NiA0MjRhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em0xODQtMjRhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHoiXX0sRnNhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNoYXJ0LWNvbHVtbiIsaWNvbjpbNTEyLDUxMixbXSwiZTBlMyIsIk0zMiAzMmMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDMzNmMwIDguOCA3LjIgMTYgMTYgMTZsNDAwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMODAgNDgwYy00NC4yIDAtODAtMzUuOC04MC04MEwwIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMyek0xNDQgMjI0YzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgNjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnptMTQ0LTY0bDAgMTYwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ6bTgwIDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgOTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNNTEyIDk2bDAgMjI0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMjI0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ6Il19LEJzYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjYXByaWNvcm4iLGljb246WzU3Niw1MTIsW10sImU4NDgiLCJNMjQwIDMyYzc5LjUgMCAxNDQgNjQuNSAxNDQgMTQ0bDAgNjUuMmMxOC44LTEwLjkgNDAuNy0xNy4yIDY0LTE3LjIgNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjhTNTE4LjcgNDgwIDQ0OCA0ODBjLTM1LjggMC02OC4yLTE0LjctOTEuNC0zOC40LTI4LjggNDIuNS03Ny40IDcwLjQtMTMyLjYgNzAuNC0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyYzUzIDAgOTYtNDMgOTYtOTZsMC0xNzZjMC00NC4yLTM1LjgtODAtODAtODBzLTgwIDM1LjgtODAgODBsMCAyMDhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0yMjRjMC0zNS4zLTI4LjctNjQtNjQtNjQtMTcuNyAwLTMyLTE0LjMtMzItMzJTMTQuMyAzMiAzMiAzMkM3Mi42IDMyIDEwOC44IDUxIDEzMi4yIDgwLjUgMTU4LjYgNTAuNyAxOTcuMSAzMiAyNDAgMzJ6TTQ0OCAyODhhNjQgNjQgMCAxIDAgMCAxMjggNjQgNjQgMCAxIDAgMC0xMjh6Il19LEhzYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0cnVjay1hcnJvdy1yaWdodCIsaWNvbjpbNTc2LDUxMixbXSwiZTU4YiIsIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMuMyAwYzEwLjQgMzYuOSA0NC40IDY0IDg0LjcgNjRzNzQuMi0yNy4xIDg0LjctNjRsMTAyLjYgMGMxMC40IDM2LjkgNDQuNCA2NCA4NC43IDY0czc0LjItMjcuMSA4NC43LTY0bDMuMyAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMTQ2LjdjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMNTEyIDE0Ni43Yy0xMi0xMi0yOC4zLTE4LjctNDUuMy0xOC43bC01MC43IDAgMC0zMmMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMnpNNTEyIDIzNy4zbDAgNTAuNy05NiAwIDAtOTYgNTAuNyAwIDQ1LjMgNDUuM3pNMTUyIDM4NGE0MCA0MCAwIDEgMSAwIDgwIDQwIDQwIDAgMSAxIDAtODB6bTIzMiA0MGE0MCA0MCAwIDEgMSA4MCAwIDQwIDQwIDAgMSAxIC04MCAwek0zMDUgMjI1bC03MiA3MmMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWwzMS0zMS0xMDIuMSAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDEwMi4xIDAtMzEtMzFjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw3MiA3MmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXoiXX0sRm9lPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InR2IixpY29uOls1NzYsNTEyLFs2MzcxNywidGVsZXZpc2lvbiIsInR2LWFsdCJdLCJmMjZjIiwiTTY0IDk2bDAgMjQwIDQ0OCAwIDAtMjQwLTQ0OCAwek0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDQ0OCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjQwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQwMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NnpNMTYwIDQ0OGwyNTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMjU2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6Il19LHFzYT1Gb2UsanNhPUZvZSxWc2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic2VjdGlvbiIsaWNvbjpbMjU2LDUxMixbXSwiZTQ0NyIsIk0xMTAgMEM0OS4yIDAgMCA0OS4yIDAgMTEwIDAgMTMzLjcgNy42IDE1NS44IDIwLjUgMTc0IDcuNiAxOTIgMCAyMTQuMSAwIDIzOCAwIDI5MS43IDM4LjkgMzM3LjYgOTEuOSAzNDYuNGw2MS43IDEwLjNjMjIuMiAzLjcgMzguNCAyMi45IDM4LjQgNDUuMyAwIDI1LjQtMjAuNiA0Ni00NiA0NmwtOTggMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw5OCAwYzYwLjcgMCAxMTAtNDkuMiAxMTAtMTEwIDAtMjMuNy03LjYtNDUuOS0yMC41LTY0IDEyLjktMTggMjAuNS00MC4xIDIwLjUtNjQgMC01My44LTM4LjktOTkuNi05MS45LTEwOC41bC02MS43LTEwLjNDODAuMiAxNTEuNiA2NCAxMzIuNCA2NCAxMTAgNjQgODQuNiA4NC42IDY0IDExMCA2NGw5OCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMyUzIyNS43IDAgMjA4IDBMMTEwIDB6bTc0LjcgMjk5LjFjLTYuNS0yLjQtMTMuNC00LjMtMjAuNS01LjVsLTYxLjctMTAuM2MtMjIuMi0zLjctMzguNC0yMi45LTM4LjQtNDUuMyAwLTkuMiAyLjctMTcuOCA3LjQtMjUgNi41IDIuNCAxMy40IDQuMyAyMC41IDUuNWw2MS43IDEwLjNjMjIuMiAzLjcgMzguNCAyMi45IDM4LjQgNDUuMyAwIDkuMi0yLjcgMTcuOC03LjQgMjV6Il19LFVzYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwZWFjZSIsaWNvbjpbNTEyLDUxMixbOTc3NF0sImY2N2MiLCJNMjI0IDQ0NS4zbDAtMTIxLjgtOTQuMyA3Ny4xYzI2LjEgMjIuOCA1OC41IDM4LjcgOTQuMyA0NC43ek04OS4yIDM1MS4xTDIyNCAyNDAuOCAyMjQgNjYuN2MtOTAuOCAxNS4yLTE2MCA5NC4yLTE2MCAxODkuMyAwIDM0LjYgOS4yIDY3LjEgMjUuMiA5NS4xem0yOTMuMSA0OS41bC05NC4zLTc3LjEgMCAxMjEuOGMzNS43LTYgNjguMS0yMS45IDk0LjMtNDQuN3ptNDAuNi00OS41YzE2LTI4IDI1LjItNjAuNSAyNS4yLTk1LjEgMC05NS4xLTY5LjItMTc0LjEtMTYwLTE4OS4zbDAgMTc0LjIgMTM0LjggMTEwLjN6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDAgMjU2IDI1NiAwIDEgMSAtNTEyIDB6Il19LFdzYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzdGFyIixpY29uOls1NzYsNTEyLFsxMTA4OCw2MTQ0Nl0sImYwMDUiLCJNMzA5LjUtMTguOWMtNC4xLTgtMTIuNC0xMy4xLTIxLjQtMTMuMXMtMTcuMyA1LjEtMjEuNCAxMy4xTDE5My4xIDEyNS4zIDMzLjIgMTUwLjdjLTguOSAxLjQtMTYuMyA3LjctMTkuMSAxNi4zcy0uNSAxOCA1LjggMjQuNGwxMTQuNCAxMTQuNS0yNS4yIDE1OS45Yy0xLjQgOC45IDIuMyAxNy45IDkuNiAyMy4yczE2LjkgNi4xIDI1IDJMMjg4LjEgNDE3LjYgNDMyLjQgNDkxYzggNC4xIDE3LjcgMy4zIDI1LTJzMTEtMTQuMiA5LjYtMjMuMkw0NDEuNyAzMDUuOSA1NTYuMSAxOTEuNGM2LjQtNi40IDguNi0xNS44IDUuOC0yNC40cy0xMC4xLTE0LjktMTkuMS0xNi4zTDM4MyAxMjUuMyAzMDkuNS0xOC45eiJdfSxHc2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmxhZyIsaWNvbjpbNDQ4LDUxMixbMTI3OTg4LDYxNzI1XSwiZjAyNCIsIk02NCAzMkM2NCAxNC4zIDQ5LjcgMCAzMiAwUzAgMTQuMyAwIDMyTDAgNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xMjEuNiA2Mi43LTE4LjhjNDEuOS0xMi42IDg3LjEtOC43IDEyNi4yIDEwLjkgNDIuNyAyMS40IDkyLjUgMjQgMTM3LjIgNy4ybDM3LjEtMTMuOWMxMi41LTQuNyAyMC44LTE2LjYgMjAuOC0zMGwwLTI0Ny43YzAtMjMtMjQuMi0zOC00NC44LTI3LjdsLTExLjggNS45Yy00NC45IDIyLjUtOTcuOCAyMi41LTE0Mi44IDAtMzYuNC0xOC4yLTc4LjMtMjEuOC0xMTcuMi0xMC4xTDY0IDU0LjQgNjQgMzJ6Il19LEJvZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0cmlhbmdsZS1leGNsYW1hdGlvbiIsaWNvbjpbNTEyLDUxMixbOTg4OCwiZXhjbGFtYXRpb24tdHJpYW5nbGUiLCJ3YXJuaW5nIl0sImYwNzEiLCJNMjU2IDBjMTQuNyAwIDI4LjIgOC4xIDM1LjIgMjFsMjE2IDQwMGM2LjcgMTIuNCA2LjQgMjcuNC0uOCAzOS41UzQ4Ni4xIDQ4MCA0NzIgNDgwTDQwIDQ4MGMtMTQuMSAwLTI3LjItNy40LTM0LjQtMTkuNXMtNy41LTI3LjEtLjgtMzkuNWwyMTYtNDAwYzctMTIuOSAyMC41LTIxIDM1LjItMjF6bTAgMzUyYTMyIDMyIDAgMSAwIDAgNjQgMzIgMzIgMCAxIDAgMC02NHptMC0xOTJjLTE4LjIgMC0zMi43IDE1LjUtMzEuNCAzMy43bDcuNCAxMDRjLjkgMTIuNSAxMS40IDIyLjMgMjMuOSAyMi4zIDEyLjYgMCAyMy05LjcgMjMuOS0yMi4zbDcuNC0xMDRjMS4zLTE4LjItMTMuMS0zMy43LTMxLjQtMzMuN3oiXX0sS3NhPUJvZSxZc2E9Qm9lLFpzYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzY2hvb2wtY2lyY2xlLWV4Y2xhbWF0aW9uIixpY29uOls2NDAsNTEyLFtdLCJlNTZjIiwiTTY0IDEyOGMtMzUuMyAwLTY0IDI4LjctNjQgNjRMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjc2IDBjLTEwLjUtMTQuNi0xOS0zMC43LTI1LjEtNDhsLTkwLjkgMCAwLTg4YzAtMjIuMSAxNy45LTQwIDQwLTQwbDQ4IDBjMSAwIDEuOSAwIDIuOSAuMSAyNi4zLTc0LjYgOTcuNS0xMjguMSAxODEuMS0xMjguMSAyOC42IDAgNTUuNiA2LjIgODAgMTcuNGwwLTMzLjRjMC0zNS4zLTI4LjctNjQtNjQtNjRsLTY0IDAtMTI3LjktMTE1LjFjLTE4LjMtMTYuNC00Ni0xNi40LTY0LjIgMEwxMjggMTI4IDY0IDEyOHptNjQgMjQwYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJ6TTExMiAyNTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNnpNMjg4IDEyOGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpNNDk2IDU0NGExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTAtMTAwYTIwIDIwIDAgMSAxIDAgNDAgMjAgMjAgMCAxIDEgMC00MHptMC0xNDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC04MGMwLTguOCA3LjItMTYgMTYtMTZ6Il19LFB5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJncmFkdWF0aW9uLWNhcCIsaWNvbjpbNTc2LDUxMixbMTI3ODkxLCJtb3J0YXItYm9hcmQiXSwiZjE5ZCIsIk00OCAxOTUuOGwyMDkuMiA4Ni4xYzkuOCA0IDIwLjIgNi4xIDMwLjggNi4xczIxLTIuMSAzMC44LTYuMWwyNDIuNC05OS44YzktMy43IDE0LjgtMTIuNCAxNC44LTIyLjFzLTUuOC0xOC40LTE0LjgtMjIuMUwzMTguOCAzOC4xQzMwOSAzNC4xIDI5OC42IDMyIDI4OCAzMnMtMjEgMi4xLTMwLjggNi4xTDE0LjggMTM3LjlDNS44IDE0MS42IDAgMTUwLjMgMCAxNjBMMCA0NTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTI2MC4yem00OCA3MS43TDk2IDM4NGMwIDUzIDg2IDk2IDE5MiA5NnMxOTItNDMgMTkyLTk2bDAtMTE2LjYtMTQyLjkgNTguOWMtMTUuNiA2LjQtMzIuMiA5LjctNDkuMSA5LjdzLTMzLjUtMy4zLTQ5LjEtOS43TDk2IDI2Ny40eiJdfSxYc2E9UHllLFFzYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzdG9yZSIsaWNvbjpbNTEyLDUxMixbXSwiZjU0ZSIsIk0zMC43IDcyLjNDMzcuNiA0OC40IDU5LjUgMzIgODQuNCAzMmwzNDQgMGMyNC45IDAgNDYuOCAxNi40IDUzLjggNDAuM2wyMy40IDgwLjJjMTIuOCA0My43LTIwLjEgODcuNS02NS42IDg3LjUtMjYuMyAwLTQ5LjQtMTQuOS02MC44LTM3LjEtMTEuNiAyMS45LTM0LjYgMzcuMS02MS40IDM3LjEtMjYuNiAwLTQ5LjctMTUtNjEuMy0zNy0xMS42IDIyLTM0LjcgMzctNjEuMyAzNy0yNi44IDAtNDkuOC0xNS4xLTYxLjQtMzcuMS0xMS40IDIyLjEtMzQuNSAzNy4xLTYwLjggMzcuMS00NS42IDAtNzguNC00My43LTY1LjYtODcuNUwzMC43IDcyLjN6TTk2LjQgMzUybDMyMCAwIDAtNjYuNGM3LjYgMS42IDE1LjUgMi40IDIzLjUgMi40IDE0LjMgMCAyOC0yLjYgNDAuNS03LjJsMCAxNTEuMmMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMzUyIDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtMTUxLjJjMTIuNSA0LjYgMjYuMSA3LjIgNDAuNSA3LjIgOC4xIDAgMTUuOS0uOCAyMy41LTIuNGwwIDY2LjR6Il19LEpzYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ1c2VyLWFzdHJvbmF1dCIsaWNvbjpbNDQ4LDUxMixbXSwiZjRmYiIsIk0yMjQgMzM2Yzc0LjYgMCAxMzguNC00Ni40IDE2NC0xMTJsNCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0bDAtODBjMC0xMy4zLTEwLjctMjQtMjQtMjRsLTQgMEMzNjIuNCAzMC40IDI5OC42LTE2IDIyNC0xNlM4NS42IDMwLjQgNjAgOTZsLTQgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCA4MGMwIDEzLjMgMTAuNyAyNCAyNCAyNGw0IDBjMjUuNiA2NS42IDg5LjQgMTEyIDE2NCAxMTJ6TTIwOCA4MGwzMiAwYzUzIDAgOTYgNDMgOTYgOTZzLTQzIDk2LTk2IDk2bC0zMiAwYy01MyAwLTk2LTQzLTk2LTk2czQzLTk2IDk2LTk2ek0xNiA0ODQuNkMxNiA0OTkuNyAyOC4zIDUxMiA0My40IDUxMmw1Mi42IDAgMC00OGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwxOTIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDQ4IDUyLjYgMGMxNS4xIDAgMjcuNC0xMi4zIDI3LjQtMjcuNCAwLTU5LjgtMzEuOS0xMTIuMi03OS42LTE0MS0zNi40IDI1LjUtODAuNiA0MC40LTEyOC40IDQwLjRzLTkyLTE0LjktMTI4LjQtNDAuNEM0Ny45IDM3Mi40IDE2IDQyNC44IDE2IDQ4NC42ek0xODMuMyAxNDEuNWMtLjktMy4zLTMuOS01LjUtNy4zLTUuNXMtNi40IDIuMi03LjMgNS41bC02IDIxLjItMjEuMiA2Yy0zLjMgLjktNS41IDMuOS01LjUgNy4zczIuMiA2LjQgNS41IDcuM2wyMS4yIDYgNiAyMS4yYy45IDMuMyAzLjkgNS41IDcuMyA1LjVzNi40LTIuMiA3LjMtNS41bDYtMjEuMiAyMS4yLTZjMy4zLS45IDUuNS0zLjkgNS41LTcuM3MtMi4yLTYuNC01LjUtNy4zbC0yMS4yLTYtNi0yMS4yek0xNTIgNDg4bDAgMjQgNDggMCAwLTI0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0em0xMjAtMjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0bDAgMjQgNDggMCAwLTI0YzAtMTMuMy0xMC43LTI0LTI0LTI0eiJdfSxlaWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYnVpbGRpbmctZmxhZyIsaWNvbjpbNjQwLDUxMixbXSwiZTRkNSIsIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwyNTYgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTM4NGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAwek0xNzYgMzUybDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA4MC05NiAwIDAtODBjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTk2IDExMmMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyek0yNDAgOTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNnpNOTYgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJ6bTE0NC0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2ek00NjQgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTI4OCAxMTIgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyTDQ5NiAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnoiXX0sSXllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im11Zy1zYXVjZXIiLGljb246WzU3Niw1MTIsWyJjb2ZmZWUiXSwiZjBmNCIsIk02NCA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwzNTIgMGM3MC43IDAgMTI4IDU3LjMgMTI4IDEyOFM1MTguNyAyODggNDQ4IDI4OGMwIDUzLTQzIDk2LTk2IDk2bC0xOTIgMGMtNTMgMC05Ni00My05Ni05Nkw2NCA2NHptNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0bDAgMTI4YzM1LjMgMCA2NC0yOC43IDY0LTY0ek02NCA0NDhsMzg0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMNjQgNTEyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyeiJdfSx0aWE9SXllLGFpYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJsZW1vbiIsaWNvbjpbNDQ4LDUxMixbMTI3ODE5XSwiZjA5NCIsIk00NDggOTZjMC0zNS4zLTI4LjctNjQtNjQtNjQtNi42IDAtMTMgMS0xOSAyLjktMjIuNSA3LTQ4LjEgMTQuOS03MSA5LTc1LjItMTkuMS0xNTYuNCAxMS0yMTMuNyA2OC4zUy03LjIgMjUwLjggMTEuOSAzMjZjNS44IDIyLjktMiA0OC40LTkgNzEtMS45IDYtMi45IDEyLjQtMi45IDE5IDAgMzUuMyAyOC43IDY0IDY0IDY0IDYuNiAwIDEzLTEgMTkuMS0yLjkgMjIuNS03IDQ4LjEtMTQuOSA3MS05IDc1LjIgMTkuMSAxNTYuNC0xMSAyMTMuNy02OC4zUzQ1NS4yIDI2MS4yIDQzNi4xIDE4NmMtNS44LTIyLjkgMi00OC40IDktNzEgMS45LTYgMi45LTEyLjQgMi45LTE5LjF6TTIyMi43IDE0M2MtNTIgMTUuMi05Ni41IDU5LjctMTExLjcgMTExLjctMy43IDEyLjctMTcuMSAyMC0yOS44IDE2LjNTNjEuMiAyNTQgNjUgMjQxLjNjMTkuOC02Ny43IDc2LjYtMTI0LjUgMTQ0LjMtMTQ0LjMgMTIuNy0zLjcgMjYuMSAzLjYgMjkuOCAxNi4zcy0zLjYgMjYuMS0xNi4zIDI5Ljh6Il19LHNpYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjYXJhdmFuIixpY29uOls2NDAsNTEyLFtdLCJmOGZmIiwiTTMyIDk2YzAtMzUuMyAyOC43LTY0IDY0LTY0bDMyMCAwYzcwLjcgMCAxMjggNTcuMyAxMjggMTI4bDAgMTkyIDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTI5Ni40IDBjLjIgMi42IC40IDUuMyAuNCA4IDAgNDguNi0zOS40IDg4LTg4IDg4cy04OC0zOS40LTg4LTg4YzAtMi43IC4xLTUuNCAuNC04TDk2IDQxNmMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMzIgOTZ6TTM1MiAzNTJsNjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTQ4LTI0IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsMjQgMCAwLTY0YzAtMTcuNy0xNC4zLTMyLTMyLTMybC02NCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDE2MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnpNMTYwIDEyOGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCA2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmw2NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtNjRjMC0xNy43LTE0LjMtMzItMzItMzJsLTY0IDB6bTY0IDMzNmE0MCA0MCAwIDEgMCAwLTgwIDQwIDQwIDAgMSAwIDAgODB6Il19LGlpYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJxIixpY29uOls0NDgsNTEyLFsxMTNdLCI1MSIsIk02NCAyNTZjMCA4OC40IDcxLjYgMTYwIDE2MCAxNjAgMjguOSAwIDU2LTcuNyA3OS40LTIxLjFsLTcyLTg2LjRjLTExLjMtMTMuNi05LjUtMzMuOCA0LjEtNDUuMXMzMy44LTkuNSA0NS4xIDQuMWw3MC45IDg1LjFjMjAuNC0yNi44IDMyLjUtNjAuMyAzMi41LTk2LjYgMC04OC40LTcxLjYtMTYwLTE2MC0xNjBTNjQgMTY3LjYgNjQgMjU2ek0zNDQuOSA0NDQuNkMzMTAgNDY3IDI2OC41IDQ4MCAyMjQgNDgwIDEwMC4zIDQ4MCAwIDM3OS43IDAgMjU2UzEwMC4zIDMyIDIyNCAzMiA0NDggMTMyLjMgNDQ4IDI1NmMwIDU2LjEtMjAuNiAxMDcuNC01NC43IDE0Ni43bDQ3LjMgNTYuOGMxMS4zIDEzLjYgOS41IDMzLjgtNC4xIDQ1LjFzLTMzLjggOS41LTQ1LjEtNC4xbC00Ni42LTU1Ljl6Il19LHJpYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJsb2NrIixpY29uOlszODQsNTEyLFsxMjgyNzRdLCJmMDIzIiwiTTEyOCA5NmwwIDY0IDEyOCAwIDAtNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRzLTY0IDI4LjctNjQgNjR6TTY0IDE2MGwwLTY0QzY0IDI1LjMgMTIxLjMtMzIgMTkyLTMyUzMyMCAyNS4zIDMyMCA5NmwwIDY0YzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjI0YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCAyMjRjMC0zNS4zIDI4LjctNjQgNjQtNjR6Il19LG9pYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwYWludC1yb2xsZXIiLGljb246WzUxMiw1MTIsW10sImY1YWEiLCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBMMzUyIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMTYgMGM0NC4yIDAgODAgMzUuOCA4MCA4MGwwIDk2YzAgNDQuMi0zNS44IDgwLTgwIDgwbC0xNjAgMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMTguN2MxOC42IDYuNiAzMiAyNC40IDMyIDQ1LjNsMCA5NmMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMzIgMGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhsMC05NmMwLTIwLjkgMTMuNC0zOC43IDMyLTQ1LjNsMC0xOC43YzAtNDQuMiAzNS44LTgwIDgwLTgwbDE2MCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTk2YzAtOC44LTcuMi0xNi0xNi0xNmwtMTYgMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCAxOTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgNjR6Il19LEF5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ2b2x1bWUtaGlnaCIsaWNvbjpbNjQwLDUxMixbMTI4MjY2LCJ2b2x1bWUtdXAiXSwiZjAyOCIsIk01MzMuNiAzMi41Yy0xMC4zLTguNC0yNS40LTYuOC0zMy44IDMuNXMtNi44IDI1LjQgMy41IDMzLjhDNTU3LjUgMTEzLjggNTkyIDE4MC44IDU5MiAyNTZzLTM0LjUgMTQyLjItODguNyAxODYuM2MtMTAuMyA4LjQtMTEuOCAyMy41LTMuNSAzMy44czIzLjUgMTEuOCAzMy44IDMuNUM1OTguNSA0MjYuNyA2NDAgMzQ2LjIgNjQwIDI1NlM1OTguNSA4NS4yIDUzMy42IDMyLjV6TTQ3My4xIDEwN2MtMTAuMy04LjQtMjUuNC02LjgtMzMuOCAzLjVzLTYuOCAyNS40IDMuNSAzMy44QzQ3NS4zIDE3MC43IDQ5NiAyMTAuOSA0OTYgMjU2cy0yMC43IDg1LjMtNTMuMiAxMTEuOGMtMTAuMyA4LjQtMTEuOCAyMy41LTMuNSAzMy44czIzLjUgMTEuOCAzMy44IDMuNWM0My4yLTM1LjIgNzAuOS04OC45IDcwLjktMTQ5cy0yNy43LTExMy44LTcwLjktMTQ5em0tNjAuNSA3NC41Yy0xMC4zLTguNC0yNS40LTYuOC0zMy44IDMuNXMtNi44IDI1LjQgMy41IDMzLjhDMzkzLjEgMjI3LjYgNDAwIDI0MSA0MDAgMjU2cy02LjkgMjguNC0xNy43IDM3LjNjLTEwLjMgOC40LTExLjggMjMuNS0zLjUgMzMuOHMyMy41IDExLjggMzMuOCAzLjVDNDM0LjEgMzEyLjkgNDQ4IDI4Ni4xIDQ0OCAyNTZzLTEzLjktNTYuOS0zNS40LTc0LjV6TTgwIDM1Mmw0OCAwIDEzNC4xIDExOS4yYzYuNCA1LjcgMTQuNiA4LjggMjMuMSA4LjggMTkuMiAwIDM0LjgtMTUuNiAzNC44LTM0LjhsMC0zNzguNGMwLTE5LjItMTUuNi0zNC44LTM0LjgtMzQuOC04LjUgMC0xNi43IDMuMS0yMy4xIDguOEwxMjggMTYwIDgwIDE2MGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCA5NmMwIDI2LjUgMjEuNSA0OCA0OCA0OHoiXX0sbmlhPUF5ZSxsaWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZm9sZGVyLXBsdXMiLGljb246WzUxMiw1MTIsW10sImY2NWUiLCJNNTEyIDM4NGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0NDhjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMTM4LjcgMGMxMy44IDAgMjcuMyA0LjUgMzguNCAxMi44bDM4LjQgMjguOGM1LjUgNC4yIDEyLjMgNi40IDE5LjIgNi40TDQ0OCA4MGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDI0MHpNMjU2IDE2MGMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCA0OC00OCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDQ4IDAgMCA0OGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtNDggNDggMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtNDggMCAwLTQ4YzAtMTMuMy0xMC43LTI0LTI0LTI0eiJdfSxjaWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibWVyY3VyeSIsaWNvbjpbMzg0LDUxMixbOTc5MV0sImYyMjMiLCJNMTE3LTRDMTA2LTE3LjggODUuOC0yMCA3Mi4xLTlzLTE2IDMxLjItNSA0NUM3NC45IDQ1LjcgODMuNyA1NC41IDkzLjUgNjIuMSA0Ni43IDkzLjcgMTYgMTQ3LjMgMTYgMjA4IDE2IDI5NC4zIDc4LjEgMzY2LjEgMTYwIDM4MS4xbDAgMzQuOS0zMiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDMyIDAgMCAzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMzIgMzIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMzIgMCAwLTM0LjljODEuOS0xNSAxNDQtODYuOCAxNDQtMTczLjEgMC02MC43LTMwLjctMTE0LjMtNzcuNS0xNDUuOSA5LjgtNy43IDE4LjctMTYuNCAyNi40LTI2LjEgMTEuMS0xMy44IDguOC0zMy45LTUtNDVTMjc4LTE3LjggMjY3LTRjLTE3LjYgMjItNDQuNyAzNi03NSAzNlMxMzQuNyAxOCAxMTctNHptNzUgMzI0Yy02MS45IDAtMTEyLTUwLjEtMTEyLTExMlMxMzAuMSA5NiAxOTIgOTYgMzA0IDE0Ni4xIDMwNCAyMDhjMCA2MS44LTUwLjEgMTEyLTExMS45IDExMmwtLjEgMHoiXX0sZGlhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImFuY2hvciIsaWNvbjpbNTc2LDUxMixbOTg3NV0sImYxM2QiLCJNMjg4IDY0YTMyIDMyIDAgMSAwIDAgNjQgMzIgMzIgMCAxIDAgMC02NHpNMTkyIDk2YzAtNTMgNDMtOTYgOTYtOTZzOTYgNDMgOTYgOTZjMCA0MS44LTI2LjcgNzcuNC02NCA5MC41bDAgMjU3LjljNjIuOS0xNC4zIDExMC4yLTY5LjcgMTExLjktMTM2LjVsLTE2LjEgMTQuMWMtMTAgOC43LTI1LjEgNy43LTMzLjktMi4zcy03LjctMjUuMSAyLjMtMzMuOWw2NC01NmM5LTcuOSAyMi42LTcuOSAzMS42IDBsNjQgNTZjMTAgOC43IDExIDIzLjkgMi4zIDMzLjlzLTIzLjkgMTEtMzMuOSAyLjNMNDk2IDMwNy45QzQ5My45IDQyMSA0MDEuNiA1MTIgMjg4IDUxMlM4Mi4xIDQyMSA4MCAzMDcuOUw2My44IDMyMi4xYy0xMCA4LjctMjUuMSA3LjctMzMuOS0yLjNzLTcuNy0yNS4xIDIuMy0zMy45bDY0LTU2YzktNy45IDIyLjYtNy45IDMxLjYgMGw2NCA1NmMxMCA4LjcgMTEgMjMuOSAyLjMgMzMuOXMtMjMuOSAxMS0zMy45IDIuM2wtMTYuMS0xNC4xYzEuOCA2Ni44IDQ5LjEgMTIyLjIgMTExLjkgMTM2LjVsMC0yNTcuOWMtMzcuMy0xMy4yLTY0LTQ4LjctNjQtOTAuNXoiXX0sTnllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNxdWFyZS1wYXJraW5nIixpY29uOls0NDgsNTEyLFsxMjczNTksInBhcmtpbmciXSwiZjU0MCIsIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyek0xOTIgMjU2bDQ4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTQ4IDAgMCA2NHptNDggNjRsLTQ4IDAgMCAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTE4NGMwLTIyLjEgMTcuOS00MCA0MC00MGw3MiAwYzUzIDAgOTYgNDMgOTYgOTZzLTQzIDk2LTk2IDk2eiJdfSx1aWE9TnllLHBpYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoYW51a2lhaCIsaWNvbjpbNjQwLDUxMixbMTI4MzM0XSwiZjZlNiIsIk0zMTQuMiAzLjNjLTUuMSA4LjgtMTguMiAzMy4zLTE4LjIgNTIuNyAwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMTkuNC0xMy4xLTQzLjktMTguMi01Mi43LTEuMi0yLjEtMy40LTMuMy01LjgtMy4zcy00LjYgMS4yLTUuOCAzLjN6bS0yODggNDhDMjEuMSA2MC4xIDggODQuNiA4IDEwNCA4IDExNy4zIDE4LjcgMTI4IDMyIDEyOHMyNC0xMC43IDI0LTI0YzAtMTkuNC0xMy4xLTQzLjktMTguMi01Mi43LTEuMi0yLjEtMy40LTMuMy01LjgtMy4zcy00LjYgMS4yLTUuOCAzLjN6TTg4IDEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMTkuNC0xMy4xLTQzLjktMTguMi01Mi43LTEuMi0yLjEtMy40LTMuMy01LjgtMy4zcy00LjYgMS4yLTUuOCAzLjNDMTAxLjEgNjAuMSA4OCA4NC42IDg4IDEwNHptODIuMi01Mi43Yy01LjEgOC44LTE4LjIgMzMuMy0xOC4yIDUyLjcgMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuNy0xLjItMi4xLTMuNC0zLjMtNS44LTMuM3MtNC42IDEuMi01LjggMy4zek0yMTYgMTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0xOS40LTEzLjEtNDMuOS0xOC4yLTUyLjctMS4yLTIuMS0zLjQtMy4zLTUuOC0zLjNzLTQuNiAxLjItNS44IDMuM0MyMjkuMSA2MC4xIDIxNiA4NC42IDIxNiAxMDR6TTM5NC4yIDUxLjNjLTUuMSA4LjgtMTguMiAzMy4zLTE4LjIgNTIuNyAwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMTkuNC0xMy4xLTQzLjktMTguMi01Mi43LTEuMi0yLjEtMy40LTMuMy01LjgtMy4zcy00LjYgMS4yLTUuOCAzLjN6TTQ0MCAxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuNy0xLjItMi4xLTMuNC0zLjMtNS44LTMuM3MtNC42IDEuMi01LjggMy4zQzQ1My4xIDYwLjEgNDQwIDg0LjYgNDQwIDEwNHptODIuMi01Mi43Yy01LjEgOC44LTE4LjIgMzMuMy0xOC4yIDUyLjcgMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuNy0xLjItMi4xLTMuNC0zLjMtNS44LTMuM3MtNC42IDEuMi01LjggMy4zek01ODQgMTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0xOS40LTEzLjEtNDMuOS0xOC4yLTUyLjctMS4yLTIuMS0zLjQtMy4zLTUuOC0zLjNzLTQuNiAxLjItNS44IDMuM0M1OTcuMSA2MC4xIDU4NCA4NC42IDU4NCAxMDR6TTExMiAxNjBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDExMiAzMiAwIDAtMTEyYzAtOC44LTcuMi0xNi0xNi0xNnptNjQgMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMTEyIDMyIDAgMC0xMTJjMC04LjgtNy4yLTE2LTE2LTE2em02NCAwYy04LjggMC0xNiA3LjItMTYgMTZsMCAxMTIgMzIgMCAwLTExMmMwLTguOC03LjItMTYtMTYtMTZ6bTE2MCAwYy04LjggMC0xNiA3LjItMTYgMTZsMCAxMTIgMzIgMCAwLTExMmMwLTguOC03LjItMTYtMTYtMTZ6bTY0IDBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDExMiAzMiAwIDAtMTEyYzAtOC44LTcuMi0xNi0xNi0xNnptNjQgMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMTEyIDMyIDAgMC0xMTJjMC04LjgtNy4yLTE2LTE2LTE2ek0zNTIgMTQ0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgMTc2LTE5MiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzAgMTc0LjMgMCAxOTJsMCA5NmMwIDUzIDQzIDk2IDk2IDk2bDE5MiAwIDAgNjQtMTI4IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMzIwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTEyOCAwIDAtNjQgMTkyIDBjNTMgMCA5Ni00MyA5Ni05NmwwLTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgOTZjMCAxNy43LTE0LjMgMzItMzIgMzJsLTE5MiAwIDAtMTc2eiJdfSxsUz17cHJlZml4OiJmYXMiLGljb25OYW1lOiJyb3RhdGUtbGVmdCIsaWNvbjpbNTEyLDUxMixbInJvdGF0ZS1iYWNrIiwicm90YXRlLWJhY2t3YXJkIiwidW5kby1hbHQiXSwiZjJlYSIsIk0yNCAxOTJsMTQ0IDBjOS43IDAgMTguNS01LjggMjIuMi0xNC44czEuNy0xOS4zLTUuMi0yNi4ybC00Ni43LTQ2LjdjNzUuMy01OC42IDE4NC4zLTUzLjMgMjUzLjUgMTUuOSA3NSA3NSA3NSAxOTYuNSAwIDI3MS41cy0xOTYuNSA3NS0yNzEuNSAwYy0xMC4yLTEwLjItMTktMjEuMy0yNi40LTMzLTkuNS0xNC45LTI5LjMtMTkuMy00NC4yLTkuOHMtMTkuMyAyOS4zLTkuOCA0NC4yQzQ5LjcgNDA4LjcgNjEuNCA0MjMuNSA3NSA0MzcgMTc1IDUzNyAzMzcgNTM3IDQzNyA0MzdTNTM3IDE3NSA0MzcgNzVDMzQyLjgtMTkuMyAxOTMuMy0yNC43IDkyLjcgNTguOEw0MSA3QzM0LjEgLjIgMjMuOC0xLjkgMTQuOCAxLjhTMCAxNC4zIDAgMjRMMCAxNjhjMCAxMy4zIDEwLjcgMjQgMjQgMjR6Il19LGhpYT1sUyxmaWE9bFMsbWlhPWxTLFJ5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoZWFkaW5nIixpY29uOls0NDgsNTEyLFsiaGVhZGVyIl0sImYxZGMiLCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMmw5NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0xNiAwIDAgMTEyIDIyNCAwIDAtMTEyLTE2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsOTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMTYgMCAwIDMyMCAxNiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC05NiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDE2IDAgMC0xNDQtMjI0IDAgMCAxNDQgMTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtOTYgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwxNiAwIDAtMzIwLTE2IDBDMTQuMyA5NiAwIDgxLjcgMCA2NHoiXX0sZ2lhPVJ5ZSxiaWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY3Jvc3NoYWlycyIsaWNvbjpbNTc2LDUxMixbXSwiZjA1YiIsIk0yODgtMTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAxOC4zYzk4LjEgMTQgMTc1LjcgOTEuNiAxODkuNyAxODkuN2wxOC4zIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTE4LjMgMGMtMTQgOTguMS05MS42IDE3NS43LTE4OS43IDE4OS43bDAgMTguM2MwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTE4LjNDMTU3LjkgNDYzLjcgODAuMyAzODYuMSA2Ni4zIDI4OEw0OCAyODhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsMTguMyAwQzgwLjMgMTI1LjkgMTU3LjkgNDguMyAyNTYgMzQuM0wyNTYgMTZjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTEzMS4yIDI4OGMxMi43IDYyLjcgNjIuMSAxMTIuMSAxMjQuOCAxMjQuOGwwLTEyLjhjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDEyLjhjNjIuNy0xMi43IDExMi4xLTYyLjEgMTI0LjgtMTI0LjhMNDMyIDI4OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwxMi44IDBDNDMyLjEgMTYxLjMgMzgyLjcgMTExLjkgMzIwIDk5LjJsMCAxMi44YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMTIuOEMxOTMuMyAxMTEuOSAxNDMuOSAxNjEuMyAxMzEuMiAyMjRsMTIuOCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0xMi44IDB6TTI4OCAyMDhhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2eiJdfSx2aWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2lyY2xlLW5vZGVzIixpY29uOls1MTIsNTEyLFtdLCJlNGUyIiwiTTQxOC40IDE1Ny45YzM1LjMtOC4zIDYxLjYtNDAgNjEuNi03Ny45IDAtNDQuMi0zNS44LTgwLTgwLTgwLTQzLjQgMC03OC43IDM0LjUtODAgNzcuNUwxMzYuMiAxNTEuMUMxMjEuNyAxMzYuOCAxMDEuOSAxMjggODAgMTI4IDM1LjggMTI4IDAgMTYzLjggMCAyMDhzMzUuOCA4MCA4MCA4MGMxMi4yIDAgMjMuOC0yLjcgMzQuMS03LjZMMjU5LjcgNDA3LjhjLTIuNCA3LjYtMy43IDE1LjgtMy43IDI0LjIgMCA0NC4yIDM1LjggODAgODAgODBzODAtMzUuOCA4MC04MGMwLTI3LjctMTQtNTIuMS0zNS40LTY2LjRsMzcuOC0yMDcuN3pNMTU2LjMgMjMyLjJjMi4yLTYuOSAzLjUtMTQuMiAzLjctMjEuN2wxODMuOC03My41YzMuNiAzLjUgNy40IDYuNyAxMS42IDkuNUwzMTcuNiAzNTQuMWMtNS41IDEuMy0xMC44IDMuMS0xNS44IDUuNUwxNTYuMyAyMzIuMnoiXX0seGlhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6IndpbmRvdy1yZXN0b3JlIixpY29uOls1NzYsNTEyLFtdLCJmMmQyIiwiTTUxMiA5NkwxNjAgOTZjMC0zNS4zIDI4LjctNjQgNjQtNjRsMjg4IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAxOTJjMCAzNS4zLTI4LjcgNjQtNjQgNjRsLTQ4IDAgMC02NCA0OCAwIDAtMTkyek0wIDIyNGMwLTM1LjMgMjguNy02NCA2NC02NGwyODggMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDE5MmMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgMjI0em02NCA0MGMwIDEzLjMgMTAuNyAyNCAyNCAyNGwyNDAgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEw4OCAyNDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0eiJdfSx5aWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiciIsaWNvbjpbMzIwLDUxMixbMTE0XSwiNTIiLCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NEwwIDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTI4IDk1LjMgMCAxMDIuNCAxNDYuNGMxMC4xIDE0LjUgMzAuMSAxOCA0NC42IDcuOXMxOC0zMC4xIDcuOS00NC42TDIzMC4xIDMwOS41QzI4Mi44IDI4OC4xIDMyMCAyMzYuNCAzMjAgMTc2IDMyMCA5Ni41IDI1NS41IDMyIDE3NiAzMkwzMiAzMnpNMTc2IDI1NmwtMTEyIDAgMC0xNjAgMTEyIDBjNDQuMiAwIDgwIDM1LjggODAgODBzLTM1LjggODAtODAgODB6Il19LHdpYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmaWx0ZXItY2lyY2xlLXhtYXJrIixpY29uOls1NzYsNTEyLFtdLCJlMTdiIiwiTTMyIDY0QzE5LjEgNjQgNy40IDcxLjggMi40IDgzLjhTLjIgMTA5LjUgOS40IDExOC42TDE5MiAzMDEuMyAxOTIgNDE2YzAgOC41IDMuNCAxNi42IDkuNCAyMi42bDY0IDY0YzIuNSAyLjUgNS4zIDQuNSA4LjMgNi0yMS4yLTMwLjktMzMuNi02OC4zLTMzLjYtMTA4LjYgMC05OS40IDc1LjUtMTgxLjEgMTcyLjMtMTkxbDkwLjQtOTAuNGM5LjItOS4yIDExLjktMjIuOSA2LjktMzQuOVM0OTIuOSA2NCA0ODAgNjRMMzIgNjR6TTQzMiA1NDRhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em01OS4zLTE4MC43bC0zNi43IDM2LjcgMzYuNyAzNi43YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBsLTM2LjctMzYuNy0zNi43IDM2LjdjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZsMzYuNy0zNi43LTM2LjctMzYuN2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwbDM2LjcgMzYuNyAzNi43LTM2LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42eiJdfSxraWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZ29wdXJhbSIsaWNvbjpbNTEyLDUxMixbXSwiZjY2NCIsIk0xMjAgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDggNDAgMCAwLThjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDggNDggMCAwLThjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDggNDAgMCAwLThjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDEzNmMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDgwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgMTI4YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC00OCAwIDAtMjI0LTMyIDAgMC0xMjgtNDggMCAwIDEyOCAzMiAwIDAgMjI0LTIyNCAwIDAtMjI0IDMyIDAgMC0xMjgtNDggMCAwIDEyOC0zMiAwIDAgMjI0LTQ4IDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4TDAgMzM2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4bDAtODBjMC0yNi41IDIxLjUtNDggNDgtNDhMOTYgMjRjMC0xMy4zIDEwLjctMjQgMjQtMjR6TTI1NiAyMDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgNDggNjQgMCAwLTQ4YzAtMTcuNy0xNC4zLTMyLTMyLTMyek0yMDggNDAwbDAgNjQgOTYgMCAwLTY0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4ek0yNTYgOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgMzIgNjQgMCAwLTMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyeiJdfSxTaWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaGVhcnQtY2lyY2xlLW1pbnVzIixpY29uOls1NzYsNTEyLFtdLCJlNGZmIiwiTTI0MSA4Ny4xbDE1IDIwLjcgMTUtMjAuN0MyOTYgNTIuNSAzMzYuMiAzMiAzNzguOSAzMiA0NTIuNCAzMiA1MTIgOTEuNiA1MTIgMTY1LjFsMCAyLjZjMCAxNy42LTMuNCAzNS42LTkuNSA1My43LTIxLjgtOC42LTQ1LjYtMTMuNC03MC41LTEzLjQtMTA2IDAtMTkyIDg2LTE5MiAxOTIgMCAyOC41IDYuMiA1NS42IDE3LjQgODAtLjUgMC0uOSAwLTEuNCAwLTE1LjUgMC0zMC44LTQuNi00My4xLTE0LjEtNzMtNTUuNy0yMTIuOS0xODYtMjEyLjktMjk4LjJsMC0yLjZDMCA5MS42IDU5LjYgMzIgMTMzLjEgMzIgMTc1LjggMzIgMjE2IDUyLjUgMjQxIDg3LjF6TTI4OCA0MDBhMTQ0IDE0NCAwIDEgMSAyODggMCAxNDQgMTQ0IDAgMSAxIC0yODggMHptMjI0IDBjMC04LjgtNy4yLTE2LTE2LTE2bC0xMjggMGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmwxMjggMGM4LjggMCAxNi03LjIgMTYtMTZ6Il19LF9pYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzdGFyLW9mLWxpZmUiLGljb246WzUxMiw1MTIsW10sImY2MjEiLCJNMjA4LjUgMzJjMC0xNy43IDE0LjMtMzIgMzItMzJsMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDE0MC45IDEyMi03MC40YzE1LjMtOC44IDM0LjktMy42IDQzLjcgMTEuN2wxNiAyNy43YzguOCAxNS4zIDMuNiAzNC45LTExLjcgNDMuN2wtMTIyIDcwLjQgMTIyIDcwLjRjMTUuMyA4LjggMjAuNiAyOC40IDExLjcgNDMuN2wtMTYgMjcuN2MtOC44IDE1LjMtMjguNCAyMC42LTQzLjcgMTEuN2wtMTIyLTcwLjQgMCAxNDAuOWMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMzIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0xNDAuOS0xMjIgNzAuNGMtMTUuMyA4LjgtMzQuOSAzLjYtNDMuNy0xMS43bC0xNi0yNy43Yy04LjgtMTUuMy0zLjYtMzQuOSAxMS43LTQzLjdsMTIyLTcwLjQtMTIyLTcwLjRjLTE1LjMtOC44LTIwLjUtMjguNC0xMS43LTQzLjdsMTYtMjcuN2M4LjgtMTUuMyAyOC40LTIwLjUgNDMuNy0xMS43bDEyMiA3MC40IDAtMTQwLjl6Il19LE95ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJidXNpbmVzcy10aW1lIixpY29uOls2NDAsNTEyLFsiYnJpZWZjYXNlLWNsb2NrIl0sImY2NGEiLCJNMjY0IDQ4bDExMiAwYzQuNCAwIDggMy42IDggOGwwIDQwLTEyOCAwIDAtNDBjMC00LjQgMy42LTggOC04em0tNTYgOGwwIDQwLTgwIDBjLTM1LjMgMC02NCAyOC43LTY0IDY0bDAgOTYgMzA1IDBjMzMuOC0yOS45IDc4LjMtNDggMTI3LTQ4IDI4LjYgMCA1NS42IDYuMiA4MCAxNy40bDAtNjUuNGMwLTM1LjMtMjguNy02NC02NC02NGwtODAgMCAwLTQwYzAtMzAuOS0yNS4xLTU2LTU2LTU2TDI2NCAwYy0zMC45IDAtNTYgMjUuMS01NiA1NnptODAgMjk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTE2LTE5MiAwIDAgMTEyYzAgMzUuMyAyOC43IDY0IDY0IDY0bDE5My40IDBjLTExLjItMjQuNC0xNy40LTUxLjQtMTcuNC04MCAwLTE2LjYgMi4xLTMyLjcgNi00OGwtMjIgMHptMzUyIDQ4YTE0NCAxNDQgMCAxIDAgLTI4OCAwIDE0NCAxNDQgMCAxIDAgMjg4IDB6TTQ5NiAzMjBjOC44IDAgMTYgNy4yIDE2IDE2bDAgNDggMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtNDggMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtNjRjMC04LjggNy4yLTE2IDE2LTE2eiJdfSxNaWE9T3llLHppYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmaXJlLWV4dGluZ3Vpc2hlciIsaWNvbjpbNTEyLDUxMixbMTI5NTE5XSwiZjEzNCIsIk01MTIgMzJjMC05LjYtNC4zLTE4LjctMTEuNy0yNC43UzQ4My4xLTEuMyA0NzMuNyAuNmwtMTYwIDMyQzMwMS41IDM1LjEgMjkyIDQ0LjMgMjg5IDU2bC02NSAwIDAtMjRjMC0xNy43LTE0LjMtMzItMzItMzJMMTYwIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgMjguNGMtNTUuMyAxMi4zLTEwMS4zIDQ5LjUtMTI1LjUgOTkuMS01LjggMTEuOS0uOSAyNi4zIDExLjEgMzIuMXMyNi4zIC45IDMyLjEtMTEuMUM2MiAxNDYuOSA5MS44IDEyMS4xIDEyOCAxMTBsMCAyOC44Yy0zNy44IDE4LTY0IDU2LjUtNjQgMTAxLjJsMCAxMjggMjI0IDAgMC0xMjhjMC00NC43LTI2LjItODMuMi02NC0xMDEuMmwwLTM0LjggNjUgMGMzIDExLjcgMTIuNSAyMC45IDI0LjcgMjMuNGwxNjAgMzJjOS40IDEuOSAxOS4xLS42IDI2LjYtNi42UzUxMiAxMzcuNiA1MTIgMTI4bDAtOTZ6TTI4OCA0NDhsMC0zMi0yMjQgMCAwIDMyYzAgMzUuMyAyOC43IDY0IDY0IDY0bDk2IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjR6Il19LEZ5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJhcnJvdy1kb3duLWxvbmciLGljb246WzMyMCw1MTIsWyJsb25nLWFycm93LWRvd24iXSwiZjE3NSIsIk0xMzcuNCA1MzQuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxMjgtMTI4YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDE5MiA0MzQuNyAxOTIgMGMwLTE3LjctMTQuMy0zMi0zMi0zMlMxMjgtMTcuNyAxMjggMGwwIDQzNC43LTczLjQtNzMuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsMTI4IDEyOHoiXX0sQ2lhPUZ5ZSxUaWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidXNlci1taW51cyIsaWNvbjpbNjQwLDUxMixbXSwiZjUwMyIsIk0yODUuNyAzMDRjOTguNSAwIDE3OC4zIDc5LjggMTc4LjMgMTc4LjMgMCAxNi40LTEzLjMgMjkuNy0yOS43IDI5LjdMNzcuNyA1MTJDNjEuMyA1MTIgNDggNDk4LjcgNDggNDgyLjMgNDggMzgzLjggMTI3LjggMzA0IDIyNi4zIDMwNGw1OS40IDB6TTI1NiAyNDhhMTIwIDEyMCAwIDEgMSAwLTI0MCAxMjAgMTIwIDAgMSAxIDAgMjQwem0zNDQtOTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTE0NCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDE0NCAweiJdfSwkaWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibW9uZXktY2hlY2siLGljb246WzUxMiw1MTIsW10sImY1M2MiLCJNMCAxMjhDMCA5Mi43IDI4LjcgNjQgNjQgNjRsMzg0IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAyNTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDQ4Yy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDEyOHpNOTYgMzEyYzAgMTMuMyAxMC43IDI0IDI0IDI0bDE0NCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0xNDQgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjR6bTI0LTEzNmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwyNzIgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtMjcyIDB6Il19LEJ5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJob3VzZS1sYXB0b3AiLGljb246WzY0MCw1MTIsWyJsYXB0b3AtaG91c2UiXSwiZTA2NiIsIk00NDggMjQwbDE5LjkgMGMxNS41IDAgMjguMS0xMi42IDI4LjEtMjguMSAwLTcuNi0zLjEtMTQuOS04LjYtMjAuMkwyODMuNS00LjlDMjc2LjEtMTIgMjY2LjMtMTYgMjU2LTE2cy0yMC4xIDQtMjcuNSAxMS4xTDI0LjYgMTkxLjdDMTkuMSAxOTcgMTYgMjA0LjMgMTYgMjExLjkgMTYgMjI3LjQgMjguNiAyNDAgNDQuMSAyNDBsMTkuOSAwIDAgMTQ0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDg1LjcgMGM3LjQtNi42IDE2LjQtMTEuNCAyNi4zLTE0bDAtMTMwYzAtNS41IC43LTEwLjkgMi0xNmwtMTAgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRsMC00OGMwLTEzLjMgMTAuNy0yNCAyNC0yNGw0OCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgMjQgMTQ0IDB6TTM1MiAzNTJsMTYwIDAgMCAxMjgtMTYwIDAgMC0xMjh6bS02NC0zMmwwIDE2MC0zMiAwYy04LjggMC0xNiA3LjItMTYgMTYgMCAyNi41IDIxLjUgNDggNDggNDhsMjg4IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDggMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwIDAtMTYwYzAtMTcuNy0xNC4zLTMyLTMyLTMybC0yMjQgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6Il19LERpYT1CeWUsTGlhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImRvd25sb2FkIixpY29uOls0NDgsNTEyLFtdLCJmMDE5IiwiTTI1NiAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDIxMC43LTQxLjQtNDEuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsOTYgOTZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsOTYtOTZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMjU2IDI0Mi43IDI1NiAzMnpNNjQgMzIwYy0zNS4zIDAtNjQgMjguNy02NCA2NGwwIDMyYzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzJjMC0zNS4zLTI4LjctNjQtNjQtNjRsLTQ2LjkgMC01Ni42IDU2LjZjLTMxLjIgMzEuMi04MS45IDMxLjItMTEzLjEgMEwxMTAuOSAzMjAgNjQgMzIwem0zMDQgNTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4eiJdfSxFaWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic2FnaXR0YXJpdXMiLGljb246WzQ0OCw1MTIsW10sImU4NGQiLCJNNDE2IDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMTYwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtODIuOC0xNDYuOCAxNDYuOCA0MS40IDQxLjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjJzLTMyLjggMTIuNS00NS4zIDBMMTkyIDMzMy4zIDU0LjYgNDcwLjZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMiAwcy0xMi41LTMyLjggMC00NS4yTDE0Ni44IDI4OCAxMDUuNCAyNDYuNmMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjJzMzIuOC0xMi41IDQ1LjIgMEwxOTIgMjQyLjggMzM4LjggOTYgMjU2IDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDE2MCAweiJdfSxQaWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY291Y2giLGljb246WzY0MCw1MTIsW10sImY0YjgiLCJNMTQ0IDI3MkMxNDQgMjI0LjcgMTA5LjggMTg1LjQgNjQuOCAxNzcuNSA3MiAxMTMuNiAxMjYuMiA2NCAxOTIgNjRsMjU2IDBjNjUuOCAwIDEyMCA0OS42IDEyNy4yIDExMy41LTQ1IDgtNzkuMiA0Ny4yLTc5LjIgOTQuNWwwIDMyLTM1MiAwIDAtMzJ6TTAgMzg0TDAgMjcyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDhsMCA4MCA0NDggMCAwLTgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDhsMCAxMTJjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDQ4Yy0zNS4zIDAtNjQtMjguNy02NC02NHoiXX0sSWlhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InJvYWQtbG9jayIsaWNvbjpbNTc2LDUxMixbXSwiZTU2NyIsIk0yNTYgMzJsLTc2LjMgMGMtMjkuNCAwLTU1LjEgMjAuMS02Mi4xIDQ4LjZMMzMuNCA0MjAuNUMyNS45IDQ1MC43IDQ4LjggNDgwIDgwIDQ4MGwxNzUuOSAwIDAtNjRjMC0xNy43IDE0LjMtMzIgMzItMzIgNi4xIDAgMTEuOCAxLjcgMTYuNyA0LjcgMi44LTIzLjkgMTQuMy00NS4xIDMxLjQtNjAuM2wwLTI0LjRjMC03MC43IDU3LjMtMTI4IDEyOC0xMjggNi4yIDAgMTIuNCAuNCAxOC40IDEuM0w0NTguNSA4MC42QzQ1MS40IDUyLjEgNDI1LjggMzIgMzk2LjMgMzJsLTc2LjQgMCAwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtNjR6bTY0IDE5MmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnptMTc2IDgwLjFsMCA0Ny45LTY0IDAgMC00Ny45YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ6TTM1MiA0MDBsMCA5NmMwIDI2LjUgMjEuNSA0OCA0OCA0OGwxMjggMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTk2YzAtMjAuOS0xMy40LTM4LjctMzItNDUuM2wwLTUwLjZjMC00NC4yLTM1LjgtODAtODAtODBzLTgwIDM1LjgtODAgODBsMCA1MC42Yy0xOC42IDYuNi0zMiAyNC40LTMyIDQ1LjN6Il19LEh5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzY2lzc29ycyIsaWNvbjpbNTEyLDUxMixbOTk4NCw5OTg2LDk5ODgsImN1dCJdLCJmMGM0IiwiTTE5MiAyNTZsLTM5LjUgMzkuNWMtMTIuNi00LjktMjYuMi03LjUtNDAuNS03LjUtNjEuOSAwLTExMiA1MC4xLTExMiAxMTJzNTAuMSAxMTIgMTEyIDExMiAxMTItNTAuMSAxMTItMTEyYzAtMTQuMy0yLjctMjcuOS03LjUtNDAuNUw0OTkuMiA3Ni44YzcuMS03LjEgNy4xLTE4LjUgMC0yNS42LTI4LjMtMjguMy03NC4xLTI4LjMtMTAyLjQgMEwyNTYgMTkyIDIxNi41IDE1Mi41YzQuOS0xMi42IDcuNS0yNi4yIDcuNS00MC41IDAtNjEuOS01MC4xLTExMi0xMTItMTEyUzAgNTAuMSAwIDExMiA1MC4xIDIyNCAxMTIgMjI0YzE0LjMgMCAyNy45LTIuNyA0MC41LTcuNUwxOTIgMjU2em05Ny45IDk3LjlMMzk2LjggNDYwLjhjMjguMyAyOC4zIDc0LjEgMjguMyAxMDIuNCAwIDcuMS03LjEgNy4xLTE4LjUgMC0yNS42bC0xNDUuMy0xNDUuMy02NCA2NHpNNjQgMTEyYTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTQ4IDI0MGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6Il19LEFpYT1IeWUsZXY9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYnVnIixpY29uOls1NzYsNTEyLFtdLCJmMTg4IiwiTTE5MiA5NmMwLTUzIDQzLTk2IDk2LTk2czk2IDQzIDk2IDk2bDAgMy42YzAgMTUuNy0xMi43IDI4LjQtMjguNCAyOC40bC0xMzUuMSAwYy0xNS43IDAtMjguNC0xMi43LTI4LjQtMjguNGwwLTMuNnptMzQ1LjYgMTIuOGMxMC42IDE0LjEgNy43IDM0LjItNi40IDQ0LjhsLTk3LjggNzMuM2M1LjMgOC45IDkuMyAxOC43IDExLjggMjkuMWw5OC44IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTk2IDAgMCAzMmMwIDIuNi0uMSA1LjMtLjIgNy45bDgzLjQgNjIuNWMxNC4xIDEwLjYgMTcgMzAuNyA2LjQgNDQuOHMtMzAuNyAxNy00NC44IDYuNGwtNjMuMS00Ny4zYy0yMy4yIDQ0LjItNjYuNSA3Ni4yLTExNy43IDgzLjlMMzEyIDI4MGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDIzMC4yYy01MS4yLTcuNy05NC41LTM5LjctMTE3LjctODMuOUw4My4yIDQ3My42Yy0xNC4xIDEwLjYtMzQuMiA3LjctNDQuOC02LjRzLTcuNy0zNC4yIDYuNC00NC44bDgzLjQtNjIuNWMtLjEtMi42LS4yLTUuMi0uMi03LjlsMC0zMi05NiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDk4LjggMGMyLjUtMTAuNCA2LjUtMjAuMiAxMS44LTI5LjFMNDQuOCAxNTMuNmMtMTQuMS0xMC42LTE3LTMwLjctNi40LTQ0LjhzMzAuNy0xNyA0NC44LTYuNEwxOTIgMTg0YzEyLjMtNS4xIDI1LjgtOCA0MC04bDExMiAwYzE0LjIgMCAyNy43IDIuOCA0MCA4bDEwOC44LTgxLjZjMTQuMS0xMC42IDM0LjItNy43IDQ0LjggNi40eiJdfSxxeWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYXJyb3ctcmlnaHQtZnJvbS1icmFja2V0IixpY29uOls1MTIsNTEyLFsic2lnbi1vdXQiXSwiZjA4YiIsIk0xNjAgOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMOTYgMzJDNDMgMzIgMCA3NSAwIDEyOEwwIDM4NGMwIDUzIDQzIDk2IDk2IDk2bDY0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMjU2YzAtMTcuNyAxNC4zLTMyIDMyLTMybDY0IDB6TTUwMi42IDI3OC42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xMjgtMTI4Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM0w0MDIuNyAyMjQgMTkyIDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwyMTAuNyAwLTczLjQgNzMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGwxMjgtMTI4eiJdfSxOaWE9cXllLFJpYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoYW5kLWhvbGRpbmctaGFuZCIsaWNvbjpbNTc2LDUxMixbXSwiZTRmNyIsIk00NjYuOCAxODYuNWw0Mi41LTQyLjUgMzQuNyAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtNjRjMC0xNy43LTE0LjMtMzItMzItMzJMMjIzLjYgMTZjLTI5IDAtNTcuMyA5LjMtODAuNyAyNi41TDE2LjMgMTM1LjhjLTE3LjggMTMuMS0yMS42IDM4LjEtOC41IDU1LjlzMzguMSAyMS42IDU1LjkgOC41TDE4My40IDExMiAyOTYgMTEyYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC03MiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDE1Mi4yIDBjMzMuOSAwIDY2LjUtMTMuNSA5MC41LTM3LjV6bS0zNTcuNSAxMzlMNjYuNyAzNjggMzIgMzY4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDMyMC41IDBjMjkgMCA1Ny4zLTkuMyA4MC43LTI2LjVsMTI2LjYtOTMuM2MxNy44LTEzLjEgMjEuNi0zOC4xIDguNS01NS45cy0zOC4xLTIxLjYtNTUuOS04LjVMMzkyLjYgNDAwIDI4MCA0MDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsNzIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMTUyLjIgMGMtMzMuOSAwLTY2LjUgMTMuNS05MC41IDM3LjV6Il19LE9pYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzdHJvb3B3YWZlbCIsaWNvbjpbNTEyLDUxMixbXSwiZjU1MSIsIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwIDI1NiAyNTYgMCAxIDEgLTUxMiAwek0zMTIuNiA2My43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEwyNTYgOTcuNiAyMjIuMSA2My43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42bDMzLjkgMzMuOS00NS4zIDQ1LjMtNTYuNi01Ni42Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42bDU2LjYgNTYuNi00NS4zIDQ1LjMtMzMuOS0zMy45Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42TDk3LjYgMjU2IDYzLjcgMjg5LjljLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMGwzMy45LTMzLjkgNDUuMyA0NS4zLTU2LjYgNTYuNmMtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZzMTYuNCA2LjIgMjIuNiAwbDU2LjYtNTYuNiA0NS4zIDQ1LjMtMzMuOSAzMy45Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBsMzMuOS0zMy45IDMzLjkgMzMuOWM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZsLTMzLjktMzMuOSA0NS4zLTQ1LjMgNTYuNiA1Ni42YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNmwtNTYuNi01Ni42IDQ1LjMtNDUuMyAzMy45IDMzLjljNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42bC0zMy45LTMzLjkgMzMuOS0zMy45YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBsLTMzLjkgMzMuOS00NS4zLTQ1LjMgNTYuNi01Ni42YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBsLTU2LjYgNTYuNi00NS4zLTQ1LjMgMzMuOS0zMy45YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42ek0xNDIuOSAyNTZsNDUuMy00NS4zIDQ1LjMgNDUuMy00NS4zIDQ1LjMtNDUuMy00NS4zem02Ny45IDY3LjlsNDUuMy00NS4zIDQ1LjMgNDUuMy00NS4zIDQ1LjMtNDUuMy00NS4zek0yNzguNiAyNTZsNDUuMy00NS4zIDQ1LjMgNDUuMy00NS4zIDQ1LjMtNDUuMy00NS4zem0yMi42LTY3LjlsLTQ1LjMgNDUuMy00NS4zLTQ1LjMgNDUuMy00NS4zIDQ1LjMgNDUuM3oiXX0sRmlhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNoaWxkIixpY29uOlszMjAsNTEyLFtdLCJmMWFlIiwiTTk2IDY0QTY0IDY0IDAgMSAxIDIyNCA2NCA2NCA2NCAwIDEgMSA5NiA2NHptNDggMzIwbDAgOTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJMODAgMjg3LjggNTkuMSAzMjFjLTkuNCAxNS0yOS4yIDE5LjQtNDQuMSAxMFMtNC41IDMwMS45IDQuOSAyODdsMzkuOS02My4zQzY5LjcgMTg0IDExMy4yIDE2MCAxNjAgMTYwczkwLjMgMjQgMTE1LjIgNjMuNkwzMTUuMSAyODdjOS40IDE1IDQuOSAzNC43LTEwIDQ0LjFzLTM0LjcgNC45LTQ0LjEtMTBMMjQwIDI4Ny44IDI0MCA0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC05Ni0zMiAweiJdfSxCaWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaWNlLWNyZWFtIixpY29uOlszODQsNTEyLFsxMjc4NDhdLCJmODEwIiwiTTMzNS4xIDE2MGMuNi01LjMgLjktMTAuNiAuOS0xNiAwLTc5LjUtNjQuNS0xNDQtMTQ0LTE0NFM0OCA2NC41IDQ4IDE0NGMwIDUuNCAuMyAxMC43IC45IDE2bC0uOSAwYy0yNi41IDAtNDggMjEuNS00OCA0OHMyMS41IDQ4IDQ4IDQ4bDI4OCAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4cy0yMS41LTQ4LTQ4LTQ4bC0uOSAwek02NCAzMDRMMTY5LjIgNTI5LjVjNC4xIDguOCAxMyAxNC41IDIyLjggMTQuNXMxOC42LTUuNyAyMi44LTE0LjVMMzIwIDMwNCA2NCAzMDR6Il19LGp5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjb21wdXRlci1tb3VzZSIsaWNvbjpbMzg0LDUxMixbMTI4NDMzLCJtb3VzZSJdLCJmOGNjIiwiTTAgMTkybDE2OCAwIDAtMTkyLTggMEM3MS42IDAgMCA3MS42IDAgMTYwbDAgMzJ6bTAgNDhMMCAzNTJjMCA4OC40IDcxLjYgMTYwIDE2MCAxNjBsNjQgMGM4OC40IDAgMTYwLTcxLjYgMTYwLTE2MGwwLTExMi0zODQgMHptMzg0LTQ4bDAtMzJDMzg0IDcxLjYgMzEyLjQgMCAyMjQgMGwtOCAwIDAgMTkyIDE2OCAweiJdfSxIaWE9anllLHFpYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmYXVjZXQiLGljb246WzUxMiw1MTIsW10sImUwMDUiLCJNMTkyIDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsOTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtOTYgMCAwIDY0IDE4LjcgMGM4LjUgMCAxNi42IDMuNCAyMi42IDkuNGwyMi42IDIyLjYgMzIgMGM4OC40IDAgMTYwIDcxLjYgMTYwIDE2MCAwIDE3LjctMTQuMyAzMi0zMiAzMmwtNjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzLTE0LjMtMzItMzItMzJsLTM2LjEgMGMtMjAuMiAyOS01My45IDQ4LTkxLjkgNDhzLTcxLjctMTktOTEuOS00OEwzMiAzNTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtNjRjMC0xNy43IDE0LjMtMzIgMzItMzJsOTYgMCAyMi42LTIyLjZjNi02IDE0LjEtOS40IDIyLjYtOS40bDE4LjcgMCAwLTY0LTk2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyUzc4LjMgNjQgOTYgNjRsOTYgMHoiXX0samlhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImF3YXJkIixpY29uOls0NDgsNTEyLFtdLCJmNTU5IiwiTTI0NS45LTI1LjljLTEzLjQtOC4yLTMwLjMtOC4yLTQzLjcgMC0yNC40IDE0LjktMzkuNSAxOC45LTY4LjEgMTguMy0xNS43LS40LTMwLjMgOC4xLTM3LjkgMjEuOS0xMy43IDI1LjEtMjQuOCAzNi4yLTQ5LjkgNDkuOS0xMy44IDcuNS0yMi4yIDIyLjItMjEuOSAzNy45IC43IDI4LjYtMy40IDQzLjctMTguMyA2OC4xLTguMiAxMy40LTguMiAzMC4zIDAgNDMuNyAxNC45IDI0LjQgMTguOSAzOS41IDE4LjMgNjguMS0uNCAxNS43IDguMSAzMC4zIDIxLjkgMzcuOSAyMi4xIDEyLjEgMzMuMyAyMi4xIDQ1LjEgNDEuNUw0Mi43IDQ1OC41Yy01LjkgMTEuOS0xLjEgMjYuMyAxMC43IDMyLjJsODYgNDNjMTEuNSA1LjcgMjUuNSAxLjQgMzEuNy05LjhsNTIuOC05NS4xIDUyLjggOTUuMWM2LjIgMTEuMiAyMC4yIDE1LjYgMzEuNyA5LjhsODYtNDNjMTEuOS01LjkgMTYuNy0yMC4zIDEwLjctMzIuMmwtNDguNi05Ny4yYzExLjctMTkuNCAyMy0yOS40IDQ1LjEtNDEuNSAxMy44LTcuNSAyMi4yLTIyLjIgMjEuOS0zNy45LS43LTI4LjYgMy40LTQzLjcgMTguMy02OC4xIDguMi0xMy40IDguMi0zMC4zIDAtNDMuNy0xNC45LTI0LjQtMTguOS0zOS41LTE4LjMtNjguMSAuNC0xNS43LTguMS0zMC4zLTIxLjktMzcuOS0yNS4xLTEzLjctMzYuMi0yNC44LTQ5LjktNDkuOS03LjUtMTMuOC0yMi4yLTIyLjItMzcuOS0yMS45LTI4LjYgLjctNDMuNy0zLjQtNjguMS0xOC4zek0yMjQgOTZhOTYgOTYgMCAxIDEgMCAxOTIgOTYgOTYgMCAxIDEgMC0xOTJ6Il19LFZpYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwZXJzb24tZHJvd25pbmciLGljb246WzY0MCw1MTIsW10sImU1NDUiLCJNMjY0IDg4YTU2IDU2IDAgMSAxIDExMiAwIDU2IDU2IDAgMSAxIC0xMTIgMHpNMTMzLjkgNjUuNmMxNi44LTUuNiAzNC45IDMuNSA0MC41IDIwLjJsMTAuOSAzMi44YzkuNCAyOC4zIDMzLjIgNDkuNSA2Mi41IDU1LjYgNS42IDEuMiAxMS4zIDEuOCAxNy4xIDEuOGw4OCAwYzE3LjIgMCAzNC4zLTIuOCA1MC42LTguMmwxMTQuNC0zOC4xYzE2LjgtNS42IDM0LjkgMy41IDQwLjUgMjAuMnMtMy41IDM0LjktMjAuMiA0MC41TDQyMy43IDIyOC41Yy04LjQgMi44LTE3IDUuMS0yNS43IDYuOWwtMjYuNSA4OC4zYy02LjEgMy40LTEyLjEgNy4zLTE3LjkgMTEuNy0yMi4xIDE2LjYtMjkuMSAxNi42LTUxLjIgMC0yNi4yLTE5LjctNTYuOS0zMC4yLTg3LjgtMzEuM2wyMC4yLTY3LjJjLTUxLjUtMTAuNy05My41LTQ4LjEtMTEwLjItOThsLTEwLjktMzIuOGMtNS42LTE2LjggMy41LTM0LjkgMjAuMi00MC41ek00MDMuNCA0MTIuMUMzNzkuMSA0MzAuMyAzNTEuMSA0NDggMzIwIDQ0OHMtNTkuMS0xNy43LTgzLjQtMzUuOWMtMjEuMy0xNi4xLTQ5LjktMTYuMS03MS4yIDAtMjMuOCAxNy45LTU0LjEgMzUuNS04OC4xIDM1LjMtMjAuNC0uMS00MC43LTYuNy01OS44LTIxLjEtMTAuNi04LTEyLjctMjMtNC43LTMzLjZzMjMtMTIuNyAzMy42LTQuN2MxMS4zIDguNSAyMS42IDExLjQgMzEuMiAxMS41IDE3LjYgLjEgMzcuMy05LjQgNTguOS0yNS43IDM4LjQtMjkgOTAuNS0yOSAxMjkgMCAyNCAxOC4xIDQwLjcgMjYuMyA1NC41IDI2LjNzMzAuNS04LjIgNTQuNS0yNi4zYzM4LjQtMjkgOTAuNS0yOSAxMjkgMCAxNi45IDEyLjcgMzIuOSAyMS41IDQ3LjggMjQuNiAxMy43IDIuOCAyNy40IC45IDQyLjMtMTAuMyAxMC42LTggMjUuNi01LjkgMzMuNiA0LjdzNS45IDI1LjYtNC43IDMzLjZjLTI2LjQgMTkuOS01NC4yIDI0LjQtODAuNyAxOS4xLTI1LjMtNS4xLTQ4LjEtMTguOS02Ny4yLTMzLjMtMjEuMy0xNi4xLTQ5LjktMTYuMS03MS4yIDB6Il19LFVpYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjYW1lcmEtcm90YXRlIixpY29uOls1MTIsNTEyLFtdLCJlMGQ4IiwiTTEzOC43IDk2bDEwLjQtMzEuMkMxNTUuNiA0NS4yIDE3My45IDMyIDE5NC42IDMybDEyMi44IDBjMjAuNyAwIDM5IDEzLjIgNDUuNSAzMi44TDM3My4zIDk2IDQ0OCA5NmMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDI1NmMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgMTYwYzAtMzUuMyAyOC43LTY0IDY0LTY0bDc0LjcgMHpNOTYgMzA1LjljMCAzLjkgMS40IDcuNyA0IDEwLjZsNDggNTRjNi40IDcuMiAxNy42IDcuMiAyMy45IDBsNDgtNTRjMi42LTIuOSA0LTYuNyA0LTEwLjZsMC0xLjljMC04LjgtNy4yLTE2LTE2LTE2bC0yNCAwYzAtMzkuOCAzMi4yLTcyIDcyLTcyIDQuNCAwIDguNyAuNCAxMi45IDEuMmwzNC45LTM5LjNjLTE0LjYtNi40LTMwLjgtOS45LTQ3LjgtOS45LTY2LjMgMC0xMjAgNTMuNy0xMjAgMTIwbC0yNCAwYy04LjggMC0xNiA3LjItMTYgMTZsMCAxLjl6bTE5Ni00Ni41Yy0yLjYgMi45LTQgNi43LTQgMTAuNmwwIDEuOWMwIDguOCA3LjIgMTYgMTYgMTZsMjQgMGMwIDM5LjgtMzIuMiA3Mi03MiA3Mi00LjQgMC04LjctLjQtMTIuOS0xLjJsLTM0LjkgMzkuM2MxNC43IDYuNCAzMC44IDkuOSA0Ny44IDkuOSA2Ni4zIDAgMTIwLTUzLjcgMTIwLTEyMGwyNCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTEuOWMwLTMuOS0xLjQtNy43LTQtMTAuNmwtNDgtNTRjLTYuNC03LjItMTcuNi03LjItMjMuOSAwbC00OCA1NHoiXX0sVnllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZhY2UtZ3Jpbi1oZWFydHMiLGljb246WzUxMiw1MTIsWzEyODUyNSwiZ3Jpbi1oZWFydHMiXSwiZjU4NCIsIk0yNTYgNTEyYzE0MS40IDAgMjU2LTExNC42IDI1Ni0yNTYgMC0yMy4zLTMuMS00NS45LTguOS02Ny4zIDUuNS0xMy41IDguOS0yOC40IDguOS00NC43IDAtNTMtNDMtOTYtOTYtOTZsLTIuOSAwYy0yLjUgMC01IC4xLTcuNCAuMy00Mi4xLTMwLjQtOTMuOC00OC4zLTE0OS43LTQ4LjNTMTQ4LjQgMTcuOSAxMDYuMyA0OC4zYy0yLjUtLjItNC45LS4zLTcuNC0uM0w5NiA0OGMtNTMgMC05NiA0My05NiA5NiAwIDE2LjMgMy41IDMxLjIgOC45IDQ0LjctNS44IDIxLjQtOC45IDQ0LTguOSA2Ny4zIDAgMTQxLjQgMTE0LjYgMjU2IDI1NiAyNTZ6TTM4Ni43IDMyNC45YzExLjktMy43IDIzLjkgNi4zIDE5LjYgMTguMS0yMi40IDYxLjMtODEuMyAxMDUuMS0xNTAuMyAxMDUuMVMxMjguMSA0MDQuMiAxMDUuNyAzNDIuOWMtNC4zLTExLjggNy43LTIxLjggMTkuNi0xOC4xIDM5LjIgMTIuMiA4My43IDE5LjEgMTMwLjcgMTkuMXM5MS41LTYuOSAxMzAuNy0xOS4xek0zMjIuOSA5NmMxMy41IDAgMjYuNSA1LjQgMzYgMTQuOWw5LjEgOS4xIDkuMS05LjFjOS41LTkuNSAyMi41LTE0LjkgMzYtMTQuOWwyLjkgMGMyNi41IDAgNDggMjEuNSA0OCA0OCAwIDUzLjQtNjYuOSA5NS43LTg5IDEwOC4yLTQuNCAyLjUtOS42IDIuNS0xNCAwLTIyLjEtMTIuNS04OS01NC44LTg5LTEwOC4yIDAtMjYuNSAyMS41LTQ4IDQ4LTQ4bDIuOSAwem0tMTg4IDE0LjlsOS4xIDkuMSA5LjEtOS4xYzkuNS05LjUgMjIuNS0xNC45IDM2LTE0LjlsMi45IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDggMCA1My40LTY2LjkgOTUuNy04OSAxMDguMi00LjQgMi41LTkuNiAyLjUtMTQgMC0yMi4xLTEyLjUtODktNTQuOC04OS0xMDguMiAwLTI2LjUgMjEuNS00OCA0OC00OGwyLjkgMGMxMy41IDAgMjYuNSA1LjQgMzYgMTQuOXoiXX0sV2lhPVZ5ZSxHaWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmlsZS1mcmFnbWVudCIsaWNvbjpbMzg0LDUxMixbXSwiZTY5NyIsIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NGwwIDI0MCAxMjggMGM0NC4yIDAgODAgMzUuOCA4MCA4MGwwIDEyOCAxMTIgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI3Ny41YzAtMTctNi43LTMzLjMtMTguNy00NS4zTDI1OC43IDE4LjdDMjQ2LjcgNi43IDIzMC41IDAgMjEzLjUgMEw2NCAwek0zMjUuNSAxNzZMMjMyIDE3NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRMMjA4IDU4LjUgMzI1LjUgMTc2ek0zMiAzNTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgOTZjMCAxNy43IDE0LjMgMzIgMzIgMzJsOTYgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMybC05NiAweiJdfSxLaWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGVyc29uLW1pbGl0YXJ5LXJpZmxlIixpY29uOls0NDgsNTEyLFtdLCJlNTRiIiwiTTEyOCAzOWMwLTEzIDEwLTIzLjggMjIuOS0yNC45TDMwMi43IDEuNEMzMTIgLjcgMzIwIDggMzIwIDE3LjRMMzIwIDQ4YzAgOC44LTcuMiAxNi0xNiAxNkwxNTMgNjRjLTEzLjggMC0yNS0xMS4yLTI1LTI1em0xNy42IDU3bDE1Ni44IDBjMSA1LjIgMS42IDEwLjUgMS42IDE2IDAgNDQuMi0zNS44IDgwLTgwIDgwcy04MC0zNS44LTgwLTgwYzAtNS41IC42LTEwLjggMS42LTE2em0yMjggMzY0LjNMMzIwIDM2OS43IDMyMCA0ODBjMCAxLjMtLjEgMi41LS4yIDMuOEwxNDUuNSAyMzQuOWMxNi42LTcuMSAzNC42LTEwLjkgNTMuMy0xMC45bDUwLjQgMGMxNS45IDAgMzEuMyAyLjggNDUuOCA3LjlMMzg5LjkgNjcuN2MtNy43LTQuNC0xMC4zLTE0LjItNS45LTIxLjlzMTQuMi0xMC4zIDIxLjktNS45bDI3LjcgMTZjNy43IDQuNCAxMC4zIDE0LjIgNS45IDIxLjlsLTU1LjUgOTYuMSAxLjYgLjljMTUuMyA4LjggMjAuNiAyOC40IDExLjcgNDMuN0wzNjAuNyAyODJjMiAyLjggMy45IDUuOCA1LjcgOC44bDc2LjEgMTI4LjhjMTEuMiAxOSA0LjkgNDMuNS0xNC4xIDU0LjhzLTQzLjUgNC45LTU0LjgtMTQuMXpNMjg4IDUxMmwtMTI4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTEwLjMtNTMuNiA5MC42Yy0xMS4yIDE5LTM1LjggMjUuMy01NC44IDE0LjFTLTUuNyA0MzguNyA1LjYgNDE5LjdMODEuNyAyOTAuOGM5LjQtMTUuOCAyMS43LTI5LjMgMzYtNDBMMjk5LjEgNTEwYy0zLjUgMS4zLTcuMiAyLTExLjEgMnpNMjY0IDMyMGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6Il19LFlpYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0b2dnbGUtb24iLGljb246WzU3Niw1MTIsW10sImYyMDUiLCJNMTkyIDY0Qzg2IDY0IDAgMTUwIDAgMjU2Uzg2IDQ0OCAxOTIgNDQ4bDE5MiAwYzEwNiAwIDE5Mi04NiAxOTItMTkyUzQ5MCA2NCAzODQgNjRMMTkyIDY0em0xOTIgOTZhOTYgOTYgMCAxIDEgMCAxOTIgOTYgOTYgMCAxIDEgMC0xOTJ6Il19LFppYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJsdW5ncy12aXJ1cyIsaWNvbjpbNTc2LDUxMixbXSwiZTA2NyIsIk0yODggMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAxNTEuM2M5LjYtNC44IDIwLjUtNy41IDMyLTcuNXMyMi40IDIuNyAzMiA3LjVMMzIwIDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek00NTAuMSA0NTFjOCAxOC4zIDguMSAzOS4yIC4yIDU3LjUgMTAuMiAyLjMgMjAuNiAzLjUgMzEuMiAzLjUgNTIuMiAwIDk0LjUtNDIuMyA5NC41LTk0LjVsMC02LjJjMC0xMTEuMS0zNi43LTIxOS0xMDQuNC0zMDdMNDI4LjkgNDguN2MtOC4xLTEwLjYtMjAuNy0xNi43LTM0LTE2LjctMjMuNyAwLTQyLjkgMTkuMi00Mi45IDQyLjlsMCAxMzkuOWMxLjIgMi4yIDIuMiA0LjYgMy4xIDYuOSAyNi40LTExLjYgNTguMy02LjYgNzkuOSAxNXMyNi42IDUzLjYgMTUgNzkuOUM0NzcgMzI3LjIgNDk2IDM1My4zIDQ5NiAzODMuOHMtMTkgNTYuNy00NS45IDY3LjF6TTIyMC45IDIyMS44Yy45LTIuNCAyLTQuNyAzLjEtNi45bDAtMTM4LjVjMC0yNC41LTE5LjktNDQuNC00NC40LTQ0LjQtMTIuNSAwLTI0LjQgNS4zLTMyLjggMTQuNWwtMjYuNCAyOUM0Mi45IDE2MC44IDAgMjcxLjggMCAzODdsMCAzMC41YzAgNTIuMiA0Mi4zIDk0LjUgOTQuNSA5NC41IDEwLjUgMCAyMS0xLjIgMzEuMi0zLjUtNy45LTE4LjMtNy44LTM5LjMgLjItNTcuNS0yNi45LTEwLjQtNDUuOS0zNi42LTQ1LjktNjcuMXMxOS01Ni43IDQ1LjktNjcuMWMtMTEuNi0yNi40LTYuNi01OC4zIDE1LTc5LjlzNTMuNi0yNi42IDc5LjktMTV6TTE1MiA0MDhjMjguOCAwIDQzLjIgMzQuOCAyMi45IDU1LjItOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwYzIwLjQtMjAuNCA1NS4yLTUuOSA1NS4yIDIyLjkgMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTI4LjggMzQuOC00My4yIDU1LjItMjIuOSA5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjljLTIwLjQtMjAuNC01LjktNTUuMiAyMi45LTU1LjIgMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRjLTI4LjggMC00My4yLTM0LjgtMjIuOS01NS4yIDkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBjLTIwLjQgMjAuNC01NS4yIDUuOS01NS4yLTIyLjkgMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRjMCAyOC44LTM0LjggNDMuMi01NS4yIDIyLjktOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWMyMC40IDIwLjQgNS45IDU1LjItMjIuOSA1NS4yLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjR6bTEwNC04MGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTQwIDg4YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6Il19LEhvZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0YWJsZS10ZW5uaXMtcGFkZGxlLWJhbGwiLGljb246WzUxMiw1MTIsWzEyNzk1NSwicGluZy1wb25nLXBhZGRsZS1iYWxsIiwidGFibGUtdGVubmlzIl0sImY0NWQiLCJNOTcgMTI3bDY3LjQtNjcuNGMzOC4yLTM4LjIgOTAtNTkuNiAxNDQtNTkuNiAxMTIuNSAwIDIwMy43IDkxLjIgMjAzLjcgMjAzLjYgMCA0Ni40LTE1LjggOTEuMS00NC41IDEyNy0yMy42LTE2LjgtNTIuNC0yNi43LTgzLjUtMjYuNy0zMS4xIDAtNTkuOSA5LjktODMuNCAyNi42TDk3IDEyN3pNMjQwIDQ0OGMwIDkuNyAxIDE5LjEgMi44IDI4LjItMTkuOC01LjItMzgtMTUuNS01Mi43LTMwLjItMTIuMi0xMi4yLTMxLjktMTIuMi00NC4xIDBMOTYuNiA0OTUuNGMtMTAuNiAxMC42LTI1IDE2LjYtNDAgMTYuNi0zMS4yIDAtNTYuNi0yNS4zLTU2LjYtNTYuNiAwLTE1IDYtMjkuNCAxNi42LTQwbDQ5LjQtNDkuNGMxMi4yLTEyLjIgMTIuMi0zMS45IDAtNDQuMS0yMS43LTIxLjctMzMuOS01MS4yLTMzLjktODEuOSAwLTI5LjQgMTEuMS01Ny42IDMxLjEtNzlMMjY2LjYgMzY0LjZDMjQ5LjkgMzg4LjEgMjQwIDQxNi45IDI0MCA0NDh6bTE0NC05NmE5NiA5NiAwIDEgMSAwIDE5MiA5NiA5NiAwIDEgMSAwLTE5MnoiXX0sWGlhPUhvZSxRaWE9SG9lLEppYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJib3hlcy1wYWNraW5nIixpY29uOls1NzYsNTEyLFtdLCJlNGM3IiwiTTIwOCAwbDgwIDAgMCA1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNGw4MCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0bDAtNTYgODAgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDQxNmMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMTA4LjggMGM4LjItMTQuMSAxMi44LTMwLjUgMTIuOC00OGwwLTE2MGMxMC0xMy40IDE2LTMwIDE2LTQ4bDAtMzJjMC00NC4yLTM1LjgtODAtODAtODBsLTE3NiAwIDAtOTZjMC0yNi41IDIxLjUtNDggNDgtNDh6TTMyIDMzNmwzMjAgMCAwIDEyOGMwIDI2LjUtMjEuNSA0OC00OCA0OEw4MCA1MTJjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtMTI4ek00OCAxOTJsMjg4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMkw0OCAyODhjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6Il19LGVyYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwZXJzb24tY2hhbGtib2FyZCIsaWNvbjpbNjQwLDUxMixbXSwiZTUzZCIsIk0xOTIgODBhNTYgNTYgMCAxIDAgMC0xMTIgNTYgNTYgMCAxIDAgMCAxMTJ6TTE3NiA1MTJsMC0xNjBjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDE2MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMzM2IDEyOCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xNiAwIDAtNDggMTkyIDAgMCAxOTItMTkyIDAgMC0zMi02NCAwIDAgNDhjMCAyNi41IDIxLjUgNDggNDggNDhsMjI0IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC0yMjRjMC0yNi41LTIxLjUtNDgtNDgtNDhMMzY4IDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4bDAgNjQtMTIyLjcgMGMtNDUuNiAwLTg4LjUgMjEuNi0xMTUuNiA1OC4yTDE0LjMgMjYwLjljLTEwLjUgMTQuMi03LjYgMzQuMiA2LjYgNDQuOHMzNC4yIDcuNiA0NC44LTYuNkwxMTIgMjM2LjcgMTEyIDUxMmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyeiJdfSx0cmE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZGljZS10d28iLGljb246WzQ0OCw1MTIsWzk4NTddLCJmNTI4IiwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMzIwIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAzMjBjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDk2ek0zNTIgMzUyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTEyOCAxOTJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0eiJdfSxVeWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYXJyb3ctcmlnaHQtYXJyb3ctbGVmdCIsaWNvbjpbNTEyLDUxMixbODY0NCwiZXhjaGFuZ2UiXSwiZjBlYyIsIk01MDIuNiAxNTAuNmwtOTYgOTZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDQwMi43IDE2MCAzMiAxNjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyUzE0LjMgOTYgMzIgOTZsMzcwLjcgMC00MS40LTQxLjRjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBsOTYgOTZjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjN6bS0zOTcuMyAzNTJsLTk2LTk2Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM2w5Ni05NmMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zTDEwOS4zIDM1MiA0ODAgMzUyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0zNzAuNyAwIDQxLjQgNDEuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMHoiXX0sYXJhPVV5ZSxXeWU9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZm9vdGJhbGwiLGljb246WzUxMiw1MTIsWzEyNzk0NCwiZm9vdGJhbGwtYmFsbCJdLCJmNDRlIiwiTTI2MS4xIDIyLjZjLTg5IDE4LTE1MC41IDYzLjQtMTkwIDEyMy45LTIzLjMgMzUuNi0zOC4xIDc1LjMtNDYuNyAxMTUuNUwyNTEuOSA0ODkuNGM4OS0xOCAxNTAuNS02My40IDE5MC4xLTEyMy45IDIzLjMtMzUuNiAzOC4xLTc1LjMgNDYuNy0xMTUuNUwyNjEuMSAyMi42em0yMzYgMTY4LjFjMy4yLTQyLjMgLjctODMuMy00LjgtMTE4LjctNC40LTI3LjgtMjYuOC00OC01My4xLTUxLjYtNDMtNS45LTgyLjItNy41LTExNy44LTUuNEw0OTcuMSAxOTAuNnpNMTkxLjcgNDk3LjFMMTUuOSAzMjEuNGMtMy4yIDQyLjMtLjcgODMuMyA0LjggMTE4LjcgNC40IDI3LjggMjYuOCA0OCA1My4xIDUxLjYgNDMgNS45IDgyLjIgNy41IDExNy44IDUuNHpNMjcxLjUgMTQzYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDY0IDY0YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTY0LTY0Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXptLTY0IDY0YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDY0IDY0YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTY0LTY0Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXptLTY0IDY0YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDY0IDY0YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTY0LTY0Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXoiXX0sc3JhPVd5ZSxpcmE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidHJ1Y2stbW9uc3RlciIsaWNvbjpbNTc2LDUxMixbXSwiZjYzYiIsIk0zMzYgOTZsNDggNjQtMTI4IDAgMC02NCA4MCAwem0xMjggNjRMMzg3LjIgNTcuNkMzNzUuMSA0MS41IDM1Ni4xIDMyIDMzNiAzMkwyMjQgMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgOTYtMTQ0IDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4bDAgNjRjMCAxOC4xIDEwLjEgMzMuOSAyNC45IDQyLjEtLjUgNS43IDEuMSAxMS42IDQuNyAxNi40LTMuNyA2LjktNi44IDE0LjEtOSAyMS44LTExLjYgMS43LTIwLjYgMTEuNy0yMC42IDIzLjhsMCAxNmMwIDEyLjEgOC45IDIyLjEgMjAuNiAyMy44IDIuMiA3LjYgNS4zIDE0LjkgOSAyMS44LTcgOS40LTYuMyAyMi44IDIuMyAzMS4zbDExLjMgMTEuM2M4LjYgOC42IDIxLjkgOS4zIDMxLjMgMi4yIDYuOCAzLjcgMTQuMSA2LjggMjEuNyA5IDEuNyAxMS42IDExLjcgMjAuNiAyMy44IDIwLjZsMTYgMGMxMi4xIDAgMjIuMS04LjkgMjMuOC0yMC42IDcuNi0yLjIgMTQuOS01LjMgMjEuNy05IDkuNCA3IDIyLjggNi4zIDMxLjMtMi4ybDExLjMtMTEuM2M4LjYtOC42IDkuMy0yMS45IDIuMy0zMS4zIDMuNy02LjggNi44LTE0LjEgOS0yMS43IDExLjYtMS43IDIwLjYtMTEuNyAyMC42LTIzLjhsMC0xNmMwLTEyLjEtOC45LTIyLjEtMjAuNi0yMy44LTIuMi03LjYtNS4zLTE0LjktOS0yMS43IDIuNC0zLjIgMy45LTYuOCA0LjUtMTAuNWwxMTQuMiAwYy42IDMuNyAyLjEgNy4zIDQuNSAxMC41LTMuNyA2LjktNi44IDE0LjEtOSAyMS44LTExLjYgMS43LTIwLjYgMTEuNy0yMC42IDIzLjhsMCAxNmMwIDEyLjEgOC45IDIyLjEgMjAuNiAyMy44IDIuMiA3LjYgNS4zIDE0LjkgOSAyMS44LTcgOS40LTYuMyAyMi44IDIuMiAzMS4zbDExLjMgMTEuM2M4LjUgOC42IDIxLjkgOS4zIDMxLjMgMi4yIDYuOCAzLjcgMTQuMSA2LjggMjEuNyA5IDEuNyAxMS42IDExLjcgMjAuNiAyMy44IDIwLjZsMTYgMGMxMi4xIDAgMjIuMS04LjkgMjMuOC0yMC42IDcuNi0yLjIgMTQuOS01LjMgMjEuOC05IDkuNCA3IDIyLjggNi4zIDMxLjMtMi4ybDExLjMtMTEuM2M4LjYtOC42IDkuMy0yMS45IDIuMi0zMS4zIDMuNy02LjggNi44LTE0LjEgOS0yMS43IDExLjYtMS43IDIwLjYtMTEuNyAyMC42LTIzLjhsMC0xNmMwLTEyLjEtOC45LTIyLjEtMjAuNi0yMy44LTIuMi03LjYtNS4zLTE0LjktOS0yMS43IDMuNi00LjggNS4yLTEwLjcgNC43LTE2LjQgMTQuOC04LjIgMjQuOS0yMy45IDI0LjktNDIuMWwwLTY0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4bC02NCAwek0xMjggMzM2YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnptMjcyIDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6Il19LHJyYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJhc3RlcmlzayIsaWNvbjpbNDQ4LDUxMixbMTAwMzMsNjE1NDVdLCIyYSIsIk0yMjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDE2OC42IDE0NC04My4xYzE1LjMtOC44IDM0LjktMy42IDQzLjcgMTEuN3MzLjYgMzQuOS0xMS43IDQzLjdMMjg4IDI1NiA0MzIgMzM5LjFjMTUuMyA4LjggMjAuNiAyOC40IDExLjcgNDMuN3MtMjguNCAyMC42LTQzLjcgMTEuN0wyNTYgMzExLjQgMjU2IDQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTE2OC42LTE0NCA4My4xYy0xNS4zIDguOC0zNC45IDMuNi00My43LTExLjdTLjcgMzQ4IDE2IDMzOS4xTDE2MCAyNTYgMTYgMTcyLjlDLjcgMTY0LTQuNSAxNDQuNSA0LjMgMTI5LjFTMzIuNyAxMDguNiA0OCAxMTcuNEwxOTIgMjAwLjYgMTkyIDMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyeiJdfSxxb2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYmF0dGVyeS1mdWxsIixpY29uOls2NDAsNTEyLFsxMjgyNjcsImJhdHRlcnkiLCJiYXR0ZXJ5LTUiXSwiZjI0MCIsIk01MjggMTI4YzguOCAwIDE2IDcuMiAxNiAxNmwwIDIyNGMwIDguOC03LjIgMTYtMTYgMTZsLTQxNiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0yMjRjMC04LjggNy4yLTE2IDE2LTE2bDQxNiAwek0xMTIgNjRjLTQ0LjIgMC04MCAzNS44LTgwIDgwbDAgMjI0YzAgNDQuMiAzNS44IDgwIDgwIDgwbDQxNiAwYzQ0LjIgMCA4MC0zNS44IDgwLTgwbDAtNDhjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC02NGMwLTE3LjctMTQuMy0zMi0zMi0zMmwwLTQ4YzAtNDQuMi0zNS44LTgwLTgwLTgwTDExMiA2NHptNTYgMTEyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDExMmMwIDEzLjMgMTAuNyAyNCAyNCAyNGwzMDQgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNGwwLTExMmMwLTEzLjMtMTAuNy0yNC0yNC0yNGwtMzA0IDB6Il19LG9yYT1xb2UsbnJhPXFvZSxscmE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2hpbGQtZHJlc3MiLGljb246WzMyMCw1MTIsW10sImU1OWMiLCJNMjI0IDY0QTY0IDY0IDAgMSAwIDk2IDY0IDY0IDY0IDAgMSAwIDIyNCA2NHpNODggNDAwbDAgODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTgwIDE2IDAgMCA4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtODAgMTcuOCAwYzEwLjkgMCAxOC42LTEwLjcgMTUuMi0yMS4xbC0zMS4xLTkzLjQgMjguNyAzNy44YzEwLjcgMTQuMSAzMC44IDE2LjggNDQuOCA2LjJzMTYuOC0zMC43IDYuMi00NC44TDI1NC42IDIwN2MtMjIuNC0yOS42LTU3LjUtNDctOTQuNi00N3MtNzIuMiAxNy40LTk0LjYgNDdMNi41IDI4NC43Yy0xMC43IDE0LjEtNy45IDM0LjIgNi4yIDQ0LjhzMzQuMiA3LjkgNDQuOC02LjJMODYuMiAyODUuNSA1NSAzNzguOUM1MS42IDM4OS4zIDU5LjMgNDAwIDcwLjIgNDAwTDg4IDQwMHoiXX0sR3llPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZhY2Uta2lzcy1iZWFtIixpY29uOls1MTIsNTEyLFsxMjg1MzcsImtpc3MtYmVhbSJdLCJmNTk3IiwiTTI1NiA1MTJhMjU2IDI1NiAwIDEgMCAwLTUxMiAyNTYgMjU2IDAgMSAwIDAgNTEyek0yNDAgMjg4bDMyIDBjMjYuNSAwIDQ4IDIxLjUgNDggNDggMCAxMi4zLTQuNiAyMy41LTEyLjIgMzIgNy42IDguNSAxMi4yIDE5LjcgMTIuMiAzMiAwIDI2LjUtMjEuNSA0OC00OCA0OGwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmwxNiAwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2bC0xNiAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDE2IDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTE2IDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6TTE3NiAxODBjLTE1LjUgMC0yOCAxMi41LTI4IDI4bDAgOGMwIDExLTkgMjAtMjAgMjBzLTIwLTktMjAtMjBsMC04YzAtMzcuNiAzMC40LTY4IDY4LTY4czY4IDMwLjQgNjggNjhsMCA4YzAgMTEtOSAyMC0yMCAyMHMtMjAtOS0yMC0yMGwwLThjMC0xNS41LTEyLjUtMjgtMjgtMjh6bTEzMiAyOGwwIDhjMCAxMS05IDIwLTIwIDIwcy0yMC05LTIwLTIwbDAtOGMwLTM3LjYgMzAuNC02OCA2OC02OHM2OCAzMC40IDY4IDY4bDAgOGMwIDExLTkgMjAtMjAgMjBzLTIwLTktMjAtMjBsMC04YzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4eiJdfSxjcmE9R3llLEt5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0cmFzaC1jYW4tYXJyb3ctdXAiLGljb246WzQ0OCw1MTIsWyJ0cmFzaC1yZXN0b3JlLWFsdCJdLCJmODJhIiwiTTE2Ny4xLTE2bDExMy45IDBjMTMuOCAwIDI2IDguOCAzMC40IDIxLjlMMzIwIDMyIDQxNiAzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkwzMiA5NkMxNC4zIDk2IDAgODEuNyAwIDY0UzE0LjMgMzIgMzIgMzJsOTYgMCA4LjctMjYuMUMxNDEuMS03LjIgMTUzLjMtMTYgMTY3LjEtMTZ6TTMyIDE0NGwzODQgMCAwIDMwNGMwIDM1LjMtMjguNyA2NC02NCA2NEw5NiA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtMzA0em0yMDkgNzljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC03MiA3MmMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDMxLTMxIDAgMTAyLjFjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTEwMi4xIDMxIDMxYzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtNzItNzJ6Il19LGRyYT1LeWUsdXJhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZvbnQiLGljb246WzUxMiw1MTIsW10sImYwMzEiLCJNMjg1LjEgNTAuN0MyNzkuOSAzOS4zIDI2OC41IDMyIDI1NiAzMnMtMjMuOSA3LjMtMjkuMSAxOC43TDU5LjUgNDE2IDQ4IDQxNmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw4OCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC02LjEgMCAyMi00OCAyMDguMyAwIDIyIDQ4LTYuMSAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDg4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTExLjUgMC0xNjcuNC0zNjUuM3pNMzMwLjggMzA0TDE4MS4yIDMwNCAyNTYgMTQwLjggMzMwLjggMzA0eiJdfSxwcmE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYm9yZS1ob2xlIixpY29uOls1MTIsNTEyLFtdLCJlNGMzIiwiTTI1NiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDIzMi42Yy0xOS4xIDExLjEtMzIgMzEuNy0zMiA1NS40IDAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjRjMC0yMy43LTEyLjktNDQuNC0zMi01NS40TDI4OCAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMCAzODRsMCA2NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwzODQgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI3MmMwLTI2LjUtMjEuNS00OC00OC00OGwtNDggMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCAxNDRjMCA2MS45LTUwLjEgMTEyLTExMiAxMTJTMTQ0IDM4MS45IDE0NCAzMjBsMC0xNDRjMC0yNi41LTIxLjUtNDgtNDgtNDhsLTQ4IDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4TDAgMzg0eiJdfSxocmE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidmlydXMtY292aWQiLGljb246WzUxMiw1MTIsW10sImU0YTgiLCJNMTkyIDI0YzAtMTMuMyAxMC43LTI0IDI0LTI0bDgwIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTE2IDAgMCAzMy42YzMwLjcgNC4yIDU4LjggMTYuMyA4Mi4zIDM0LjFMMzg2LjEgOTIgMzc0LjggODAuNmMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDU2LjYgNTYuNmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC0xMS4zLTExLjMtMjMuOCAyMy44YzE3LjkgMjMuNSAyOS45IDUxLjcgMzQuMSA4Mi4zbDMzLjYgMCAwLTE2YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCA4MGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTE2LTMzLjYgMGMtNC4yIDMwLjctMTYuMyA1OC44LTM0LjEgODIuM2wyMy44IDIzLjggMTEuMy0xMS4zYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNTYuNiA1Ni42Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDExLjMtMTEuMy0yMy44LTIzLjhjLTIzLjUgMTcuOS01MS43IDI5LjktODIuMyAzNC4xbDAgMzMuNiAxNiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC04MCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDE2IDAgMC0zMy42Yy0zMC43LTQuMi01OC44LTE2LjMtODIuMy0zNC4xbC0yMy44IDIzLjggMTEuMyAxMS4zYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBMNDYuNyA0MDguN2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDExLjMgMTEuMyAyMy44LTIzLjhDOTcuOSAzMzguOCA4NS44IDMxMC43IDgxLjYgMjgwbC0zMy42IDAgMCAxNmMwIDEzLjMtMTAuNyAyNC0yNCAyNFMwIDMwOS4zIDAgMjk2bDAtODBjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDE2IDMzLjYgMGM0LjItMzAuNyAxNi4zLTU4LjggMzQuMS04Mi4zTDkyIDEyNS45IDgwLjYgMTM3LjJjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNTYuNi01Ni42YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOUwxMjUuOSA5MiAxNDkuNyAxMTUuN2MyMy41LTE3LjkgNTEuNy0yOS45IDgyLjMtMzQuMWwwLTMzLjYtMTYgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjR6bTMyIDIwMGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem05NiA5NmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6Il19LGZyYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmaWxlLXBkZiIsaWNvbjpbNTc2LDUxMixbXSwiZjFjMSIsIk05NiAwQzYwLjcgMCAzMiAyOC43IDMyIDY0bDAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDgwIDAgMC0xMTJjMC0zNS4zIDI4LjctNjQgNjQtNjRsMTc2IDAgMC0xNjUuNWMwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0wyOTAuNyAxOC43QzI3OC43IDYuNyAyNjIuNSAwIDI0NS41IDBMOTYgMHpNMzU3LjUgMTc2TDI2NCAxNzZjLTEzLjMgMC0yNC0xMC43LTI0LTI0TDI0MCA1OC41IDM1Ny41IDE3NnpNMjQwIDM4MGMtMTEgMC0yMCA5LTIwIDIwbDAgMTI4YzAgMTEgOSAyMCAyMCAyMHMyMC05IDIwLTIwbDAtMjggMTIgMGMzMy4xIDAgNjAtMjYuOSA2MC02MHMtMjYuOS02MC02MC02MGwtMzIgMHptMzIgODBsLTEyIDAgMC00MCAxMiAwYzExIDAgMjAgOSAyMCAyMHMtOSAyMC0yMCAyMHptOTYtODBjLTExIDAtMjAgOS0yMCAyMGwwIDEyOGMwIDExIDkgMjAgMjAgMjBsMzIgMGMyOC43IDAgNTItMjMuMyA1Mi01MmwwLTY0YzAtMjguNy0yMy4zLTUyLTUyLTUybC0zMiAwem0yMCAxMjhsMC04OCAxMiAwYzYuNiAwIDEyIDUuNCAxMiAxMmwwIDY0YzAgNi42LTUuNCAxMi0xMiAxMmwtMTIgMHptODgtMTA4bDAgMTI4YzAgMTEgOSAyMCAyMCAyMHMyMC05IDIwLTIwbDAtNDQgMjggMGMxMSAwIDIwLTkgMjAtMjBzLTktMjAtMjAtMjBsLTI4IDAgMC0yNCAyOCAwYzExIDAgMjAtOSAyMC0yMHMtOS0yMC0yMC0yMGwtNDggMGMtMTEgMC0yMCA5LTIwIDIweiJdfSxtcmE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibGFuZ3VhZ2UiLGljb246WzU3Niw1MTIsW10sImYxYWIiLCJNMTYwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMiAxMjggMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtOS42IDAtOC40IDIzLjFjLTE2LjQgNDUuMi00MS4xIDg2LjUtNzIuMiAxMjIgMTQuMiA4LjggMjkgMTYuNiA0NC40IDIzLjVsNTAuNCAyMi40IDYyLjItMTQwYzUuMS0xMS42IDE2LjYtMTkgMjkuMi0xOXMyNC4xIDcuNCAyOS4yIDE5bDEyOCAyODhjNy4yIDE2LjItLjEgMzUuMS0xNi4yIDQyLjJzLTM1LjEtLjEtNDIuMi0xNi4ybC0yMC00NS0xNTcuNSAwLTIwIDQ1Yy03LjIgMTYuMi0yNi4xIDIzLjQtNDIuMiAxNi4ycy0yMy40LTI2LjEtMTYuMi00Mi4ybDM5LjgtODkuNS01MC40LTIyLjRjLTIzLTEwLjItNDUtMjIuNC02NS44LTM2LjQtMjEuMyAxNy4yLTQ0LjYgMzIuMi02OS41IDQ0LjdMNzguMyAzODAuNmMtMTUuOCA3LjktMzUgMS41LTQyLjktMTQuM3MtMS41LTM1IDE0LjMtNDIuOWwzNC41LTE3LjNjMTYuMy04LjIgMzEuOC0xNy43IDQ2LjQtMjguMy0xMy44LTEyLjctMjYuOC0yNi40LTM4LjktNDAuOUw4MS42IDIyNC43Yy0xMS4zLTEzLjYtOS41LTMzLjggNC4xLTQ1LjFzMzMuOC05LjUgNDUuMSA0LjFsMTAuMiAxMi4yYzExLjUgMTMuOSAyNC4xIDI2LjggMzcuNCAzOC43IDI3LjUtMzAuNCA0OS4yLTY2LjEgNjMuNS0xMDUuNGwuNS0xLjItMjEwLjMgMEMxNC4zIDEyOCAwIDExMy43IDAgOTZTMTQuMyA2NCAzMiA2NGw5NiAwIDAtMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTQxNiAyNzAuOEwzNjUuNyAzODQgNDY2LjMgMzg0IDQxNiAyNzAuOHoiXX0sWXllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNoaWVsZC1oYWx2ZWQiLGljb246WzUxMiw1MTIsWyJzaGllbGQtYWx0Il0sImYzZWQiLCJNMjU2IDBjNC42IDAgOS4yIDEgMTMuNCAyLjlMNDU3LjggODIuOGMyMiA5LjMgMzguNCAzMSAzOC4zIDU3LjItLjUgOTkuMi00MS4zIDI4MC43LTIxMy42IDM2My4yLTE2LjcgOC0zNi4xIDgtNTIuOCAwLTE3Mi40LTgyLjUtMjEzLjEtMjY0LTIxMy42LTM2My4yLS4xLTI2LjIgMTYuMy00Ny45IDM4LjMtNTcuMkwyNDIuNyAyLjlDMjQ2LjkgMSAyNTEuNCAwIDI1NiAwem0wIDY2LjhsMCAzNzguMWMxMzgtNjYuOCAxNzUuMS0yMTQuOCAxNzYtMzAzLjRsLTE3Ni03NC42IDAgMHoiXX0sZ3JhPVl5ZSxicmE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2FyZXQtdXAiLGljb246WzMyMCw1MTIsW10sImYwZDgiLCJNMTQwLjMgMTM1LjJjMTIuNi0xMC4zIDMxLjEtOS41IDQyLjggMi4ybDEyOCAxMjhjOS4yIDkuMiAxMS45IDIyLjkgNi45IDM0LjlTMzAxLjQgMzIwIDI4OC41IDMyMGwtMjU2IDBjLTEyLjkgMC0yNC42LTcuOC0yOS42LTE5LjhTLjcgMjc0LjUgOS45IDI2NS40bDEyOC0xMjggMi40LTIuMnoiXX0sWnllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZpbGUtcGVuIixpY29uOls2NDAsNTEyLFsxMjgyMjEsImZpbGUtZWRpdCJdLCJmMzFjIiwiTTEyOC4xIDBjLTM1LjMgMC02NCAyOC43LTY0IDY0bDAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDE0Ni4yIDAgMTAuOS01NC41YzQuMy0yMS43IDE1LTQxLjYgMzAuNi01Ny4ybDEzMi4yLTEzMi4yIDAtOTcuNWMwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0wzMjIuOCAxOC43QzMxMC44IDYuNyAyOTQuNSAwIDI3Ny42IDBMMTI4LjEgMHpNMzg5LjYgMTc2bC05My41IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0bDAtOTMuNSAxMTcuNSAxMTcuNXpNMzMyLjMgNDY2LjlsLTExLjkgNTkuNmMtLjIgLjktLjMgMS45LS4zIDIuOSAwIDggNi41IDE0LjYgMTQuNiAxNC42IDEgMCAxLjktLjEgMi45LS4zbDU5LjYtMTEuOWMxMi40LTIuNSAyMy44LTguNiAzMi43LTE3LjVsMTE4LjktMTE4LjktODAtODAtMTE4LjkgMTE4LjljLTguOSA4LjktMTUgMjAuMy0xNy41IDMyLjd6bTI2Ny44LTEyM2MyMi4xLTIyLjEgMjIuMS01Ny45IDAtODBzLTU3LjktMjIuMS04MCAwbC0yOC44IDI4LjggODAgODAgMjguOC0yOC44eiJdfSx2cmE9WnllLFh5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwZXJzb24tYmlraW5nIixpY29uOls1NzYsNTEyLFsxMjg2OTIsImJpa2luZyJdLCJmODRhIiwiTTM2OCA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bTI3LjIgNjRsLTYxLjgtNDguOGMtMTcuMy0xMy42LTQxLjctMTMuOC01OS4xLS4zbC04My4xIDY0LjJjLTMwLjcgMjMuOC0yOC41IDcwLjggNC4zIDkxLjZMMjU2IDMwNS4xIDI1NiA0MTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTEyOGMwLTEwLjctNS4zLTIwLjctMTQuMi0yNi42TDI2MyAyMzIuOSAzMjMuMyAxODQuNCAzNjQgMjE3YzUuNyA0LjUgMTIuNyA3IDIwIDdsNjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtNTIuOCAwek0xMTIgNTEyYTExMiAxMTIgMCAxIDAgMC0yMjQgMTEyIDExMiAwIDEgMCAwIDIyNHptMzUyIDBhMTEyIDExMiAwIDEgMCAwLTIyNCAxMTIgMTEyIDAgMSAwIDAgMjI0eiJdfSx4cmE9WHllLFF5ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJib29rLW9wZW4tcmVhZGVyIixpY29uOls1MTIsNTEyLFsiYm9vay1yZWFkZXIiXSwiZjVkYSIsIk0yNTYgMTUyYTg4IDg4IDAgMSAwIDAtMTc2IDg4IDg4IDAgMSAwIDAgMTc2em0wIDI5OC43bDAtMTQ5LjNjMTYuMy02LjggMzIuOS0xMy43IDQ5LjctMjAuNyAzOS0xNi4yIDgwLjgtMjQuNiAxMjMuMS0yNC42bDE5LjIgMCAwIDE2MC0xOS4yIDBjLTU5LjEgMC0xMTcuNyAxMS43LTE3Mi4zIDM0LjVsLS41IC4yek0yNTYgMjMybC0yNS4xLTEwLjVDMTg0LjEgMjAyIDEzMy45IDE5MiA4My4yIDE5Mkw0OCAxOTJjLTI2LjUgMC00OCAyMS41LTQ4IDQ4TDAgNDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDM1LjIgMGM1MC43IDAgMTAwLjkgMTAgMTQ3LjcgMjkuNWwxMi44IDUuM2M3LjkgMy4zIDE2LjcgMy4zIDI0LjYgMGwxMi44LTUuM2M0Ni44LTE5LjUgOTctMjkuNSAxNDcuNy0yOS41bDM1LjIgMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTE5MmMwLTI2LjUtMjEuNS00OC00OC00OGwtMzUuMiAwYy01MC43IDAtMTAwLjkgMTAtMTQ3LjcgMjkuNUwyNTYgMjMyeiJdfSx5cmE9UXllLHdyYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJnbGFzcy13YXRlci1kcm9wbGV0IixpY29uOlszODQsNTEyLFtdLCJlNGY1IiwiTTMyIDBDMjMuMSAwIDE0LjYgMy43IDguNiAxMC4yUy0uNiAyNS40IC4xIDM0LjNMMjguOSA0MzcuN2MzIDQxLjkgMzcuOCA3NC4zIDc5LjggNzQuM2wxNjYuNiAwYzQyIDAgNzYuOC0zMi40IDc5LjgtNzQuM0wzODMuOSAzNC4zYy42LTguOS0yLjQtMTcuNi04LjUtMjQuMVMzNjAuOSAwIDM1MiAwTDMyIDB6TTgzIDI5Ny41TDY2LjQgNjQgMzE3LjYgNjQgMzAxIDI5Ny41IDI4OCAzMDRjLTIwLjEgMTAuMS00My45IDEwLjEtNjQgMHMtNDMuOS0xMC4xLTY0IDAtNDMuOSAxMC4xLTY0IDBsLTEzLTYuNXpNMjU2IDE5NmMwLTI0LTMzLjctNzAuMS01Mi4yLTkzLjUtNi4xLTcuNy0xNy41LTcuNy0yMy42IDAtMTguNSAyMy40LTUyLjIgNjkuNS01Mi4yIDkzLjUgMCAzMy4xIDI4LjcgNjAgNjQgNjBzNjQtMjYuOSA2NC02MHoiXX0sSnllPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRvd2VyLWJyb2FkY2FzdCIsaWNvbjpbNTc2LDUxMixbImJyb2FkY2FzdC10b3dlciJdLCJmNTE5IiwiTTg3LjkgMTEuNWMtMTEuMy02LjktMjYuMS0zLjItMzMgOC4xLTI0LjggNDEtMzkgODkuMS0zOSAxNDAuNHMxNC4yIDk5LjQgMzkgMTQwLjRjNi45IDExLjMgMjEuNiAxNSAzMyA4LjFzMTUtMjEuNiA4LjEtMzNDNzUuNyAyNDEuOSA2NCAyMDIuMyA2NCAxNjBTNzUuNyA3OC4xIDk2LjEgNDQuNGM2LjktMTEuMyAzLjItMjYuMS04LjEtMzN6bTQwMC4xIDBjLTExLjMgNi45LTE1IDIxLjYtOC4xIDMzIDIwLjQgMzMuNyAzMi4xIDczLjMgMzIuMSAxMTUuNnMtMTEuNyA4MS45LTMyLjEgMTE1LjZjLTYuOSAxMS4zLTMuMiAyNi4xIDguMSAzM3MyNi4xIDMuMiAzMy04LjFjMjQuOC00MSAzOS04OS4xIDM5LTE0MC40UzU0NS44IDYwLjYgNTIxIDE5LjZjLTYuOS0xMS4zLTIxLjYtMTUtMzMtOC4xek0zMjAgMjE1LjRjMTkuMS0xMS4xIDMyLTMxLjcgMzItNTUuNCAwLTM1LjMtMjguNy02NC02NC02NHMtNjQgMjguNy02NCA2NGMwIDIzLjcgMTIuOSA0NC40IDMyIDU1LjRMMjU2IDQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMjY0LjZ6TTE4MC4yIDkxYzcuMi0xMS4yIDMuOS0yNi03LjItMzMuMnMtMjYtMy45LTMzLjIgNy4yYy0xNy42IDI3LjQtMjcuOCA2MC0yNy44IDk1czEwLjIgNjcuNiAyNy44IDk1YzcuMiAxMS4yIDIyIDE0LjQgMzMuMiA3LjJzMTQuNC0yMiA3LjItMzMuMmMtMTIuOC0xOS45LTIwLjItNDMuNi0yMC4yLTY5czcuNC00OS4xIDIwLjItNjl6TTQzNi4yIDY1Yy03LjItMTEuMi0yMi0xNC40LTMzLjItNy4ycy0xNC40IDIyLTcuMiAzMy4yYzEyLjggMTkuOSAyMC4yIDQzLjYgMjAuMiA2OXMtNy40IDQ5LjEtMjAuMiA2OWMtNy4yIDExLjItMy45IDI2IDcuMiAzMy4yczI2IDMuOSAzMy4yLTcuMmMxNy42LTI3LjQgMjcuOC02MCAyNy44LTk1cy0xMC4yLTY3LjYtMjcuOC05NXoiXX0sa3JhPUp5ZSxld2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibWluaW1pemUiLGljb246WzUxMiw1MTIsWyJjb21wcmVzcy1hcnJvd3MtYWx0Il0sImY3OGMiLCJNNDU2IDIyNGwtMTQ0IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0bDAtMTQ0YzAtOS43IDUuOC0xOC41IDE0LjgtMjIuMlMzMjIuMSAzMi4yIDMyOSAzOWw0MCA0MCA3My40LTczLjRDNDQ2IDIgNDUwLjkgMCA0NTYgMHMxMCAyIDEzLjcgNS43bDM2LjcgMzYuN0M1MTAgNDYgNTEyIDUwLjkgNTEyIDU2cy0yIDEwLTUuNyAxMy43TDQzMyAxNDMgNDczIDE4M2M2LjkgNi45IDguOSAxNy4yIDUuMiAyNi4yUzQ2NS43IDIyNCA0NTYgMjI0em0wIDY0YzkuNyAwIDE4LjUgNS44IDIyLjIgMTQuOHMxLjcgMTkuMy01LjIgMjYuMmwtNDAgNDAgNzMuNCA3My40YzMuNiAzLjYgNS43IDguNSA1LjcgMTMuN3MtMiAxMC01LjcgMTMuN2wtMzYuNyAzNi43QzQ2NiA1MTAgNDYxLjEgNTEyIDQ1NiA1MTJzLTEwLTItMTMuNy01LjdMMzY5IDQzMyAzMjkgNDczYy02LjkgNi45LTE3LjIgOC45LTI2LjIgNS4yUzI4OCA0NjUuNyAyODggNDU2bDAtMTQ0YzAtMTMuMyAxMC43LTI0IDI0LTI0bDE0NCAwem0tMjU2IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRsMCAxNDRjMCA5LjctNS44IDE4LjUtMTQuOCAyMi4ycy0xOS4zIDEuNy0yNi4yLTUuMmwtNDAtNDAtNzMuNCA3My40QzY2IDUxMCA2MS4xIDUxMiA1NiA1MTJzLTEwLTItMTMuNy01LjdMNS43IDQ2OS43QzIgNDY2IDAgNDYxLjEgMCA0NTZzMi0xMCA1LjctMTMuN0w3OSAzNjkgMzkgMzI5Yy02LjktNi45LTguOS0xNy4yLTUuMi0yNi4yUzQ2LjMgMjg4IDU2IDI4OGwxNDQgMHpNNTYgMjI0Yy05LjcgMC0xOC41LTUuOC0yMi4yLTE0LjhTMzIuMiAxODkuOSAzOSAxODNMNzkgMTQzIDUuNyA2OS43QzIgNjYgMCA2MS4xIDAgNTZTMiA0NiA1LjcgNDIuM0w0Mi4zIDUuN0M0NiAyIDUwLjkgMCA1NiAwUzY2IDIgNjkuNyA1LjdMMTQzIDc5IDE4MyAzOWM2LjktNi45IDE3LjItOC45IDI2LjItNS4yUzIyNCA0Ni4zIDIyNCA1NmwwIDE0NGMwIDEzLjMtMTAuNyAyNC0yNCAyNEw1NiAyMjR6Il19LFNyYT1ld2UsX3JhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImFycm93LXJpZ2h0LXRvLWNpdHkiLGljb246WzY0MCw1MTIsW10sImU0YjMiLCJNMjg4IDQ4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4bDk2IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCA4MCA0OCAwIDAtNzJjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDcyIDE2IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCAyODhjMCAyNi41LTIxLjUgNDgtNDggNDhsLTI1NiAwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTQxNnptNjQgNjRsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnptMTYgODBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMHpNMzUyIDMwNGwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNzYtODBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMHpNNTEyIDMzNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2ek0xNTMgMTY3bDcyIDcyYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45bC03MiA3MmMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWwzMS0zMS0xMDIuMSAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDEwMi4xIDAtMzEtMzFjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMHoiXX0sTXJhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImxhcHRvcC1tZWRpY2FsIixpY29uOls2NDAsNTEyLFtdLCJmODEyIiwiTTY0IDk2YzAtMzUuMyAyOC43LTY0IDY0LTY0bDM4NCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjQwLTY0IDAgMC0yNDAtMzg0IDAgMCAyNDAtNjQgMCAwLTI0MHpNMCA0MDMuMkMwIDM5Mi42IDguNiAzODQgMTkuMiAzODRsNjAxLjYgMGMxMC42IDAgMTkuMiA4LjYgMTkuMiAxOS4yIDAgNDIuNC0zNC40IDc2LjgtNzYuOCA3Ni44TDc2LjggNDgwQzM0LjQgNDgwIDAgNDQ1LjYgMCA0MDMuMnpNMjg4IDE2MGMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCA0MCA0MCAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtNDAgMCAwIDQwYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtNDAtNDAgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2bDQwIDAgMC00MHoiXX0senJhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJyZWFkLXNsaWNlIixpY29uOls1MTIsNTEyLFtdLCJmN2VjIiwiTTY0IDQzMmwwLTE3NmMtMzUuMyAwLTY0LTI4LjctNjQtNjQgMC0yMTYuNSA1MTItMjE2LjUgNTEyIDAgMCAzNS4zLTI4LjcgNjQtNjQgNjRsMCAxNzZjMCAyNi41LTIxLjUgNDgtNDggNDhsLTI4OCAwYy0yNi41IDAtNDgtMjEuNS00OC00OHoiXX0sQ3JhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Imdsb2JlIixpY29uOls1MTIsNTEyLFsxMjc3NjBdLCJmMGFjIiwiTTM1MS45IDI4MGwtMTkwLjkgMGMyLjkgNjQuNSAxNy4yIDEyMy45IDM3LjUgMTY3LjQgMTEuNCAyNC41IDIzLjcgNDEuOCAzNS4xIDUyLjQgMTEuMiAxMC41IDE4LjkgMTIuMiAyMi45IDEyLjJzMTEuNy0xLjcgMjIuOS0xMi4yYzExLjQtMTAuNiAyMy43LTI4IDM1LjEtNTIuNCAyMC4zLTQzLjUgMzQuNi0xMDIuOSAzNy41LTE2Ny40ek0xNjAuOSAyMzJsMTkwLjkgMEMzNDkgMTY3LjUgMzM0LjcgMTA4LjEgMzE0LjQgNjQuNiAzMDMgNDAuMiAyOTAuNyAyMi44IDI3OS4zIDEyLjIgMjY4LjEgMS43IDI2MC40IDAgMjU2LjQgMHMtMTEuNyAxLjctMjIuOSAxMi4yYy0xMS40IDEwLjYtMjMuNyAyOC0zNS4xIDUyLjQtMjAuMyA0My41LTM0LjYgMTAyLjktMzcuNSAxNjcuNHptLTQ4IDBDMTE2LjQgMTQ2LjQgMTM4LjUgNjYuOSAxNzAuOCAxNC43IDc4LjcgNDcuMyAxMC45IDEzMS4yIDEuNSAyMzJsMTExLjQgMHpNMS41IDI4MGM5LjQgMTAwLjggNzcuMiAxODQuNyAxNjkuMyAyMTcuMy0zMi4zLTUyLjItNTQuNC0xMzEuNy01Ny45LTIxNy4zTDEuNSAyODB6bTM5OC40IDBjLTMuNSA4NS42LTI1LjYgMTY1LjEtNTcuOSAyMTcuMyA5Mi4xLTMyLjcgMTU5LjktMTE2LjUgMTY5LjMtMjE3LjNsLTExMS40IDB6bTExMS40LTQ4QzUwMS45IDEzMS4yIDQzNC4xIDQ3LjMgMzQyIDE0LjcgMzc0LjMgNjYuOSAzOTYuNCAxNDYuNCAzOTkuOSAyMzJsMTExLjQgMHoiXX0sVHJhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZvbGRlci1taW51cyIsaWNvbjpbNTEyLDUxMixbXSwiZjY1ZCIsIk00NDggNDQ4TDY0IDQ0OGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwxMzguNyAwYzEzLjggMCAyNy4zIDQuNSAzOC40IDEyLjhsMzguNCAyOC44YzUuNSA0LjIgMTIuMyA2LjQgMTkuMiA2LjRMNDQ4IDgwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjQwYzAgMzUuMy0yOC43IDY0LTY0IDY0ek0xODQgMjQwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDE0NCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0xNDQgMHoiXX0sJHJhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im1hc2stZmFjZSIsaWNvbjpbNjQwLDUxMixbXSwiZTFkNyIsIk0zMjAgNjRjLTI3LjIgMC01My44IDgtNzYuNCAyMy4xbC0zNy4xIDI0LjhjLTE1LjggMTAuNS0zNC4zIDE2LjEtNTMuMyAxNi4xTDY0IDEyOGMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCA3OC43YzAgNjIuNiA0NS4yIDExNiAxMDcgMTI2LjNsOTcuOSAxNi4zYzMzIDIyIDcyLjYgMzQuNyAxMTUuMSAzNC43czgyLjItMTIuOCAxMTUuMS0zNC43TDUzMyAzOTYuOWM2MS43LTEwLjMgMTA3LTYzLjcgMTA3LTEyNi4zbDAtNzguN2MwLTM1LjMtMjguNy02NC02NC02NGwtODkuMiAwYy0xOSAwLTM3LjUtNS42LTUzLjMtMTYuMUwzOTYuNCA4Ny4xQzM3My44IDcyIDM0Ny4yIDY0IDMyMCA2NHpNMTM1LjkgMzM2LjlsLTE4LjQtMy4xQzg2LjYgMzI4LjcgNjQgMzAyIDY0IDI3MC43bDAtNzguNyA0OCAwIDAgNDhjMCAzNSA4LjYgNjcuOSAyMy45IDk2Ljl6bTM4Ni42LTMuMWwtMTguNCAzLjFDNTE5LjQgMzA3LjkgNTI4IDI3NSA1MjggMjQwbDAtNDggNDggMCAwIDc4LjdjMCAzMS4zLTIyLjYgNTgtNTMuNSA2My4xek0xOTIgMjMyYzAtMTMuMyAxMC43LTI0IDI0LTI0bDIwOCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0yMDggMGMtMTMuMyAwLTI0LTEwLjctMjQtMjR6bTU2IDU2bDE0NCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0xNDQgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHoiXX0sRHJhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJvbmciLGljb246WzUxMiw1MTIsW10sImY1NWMiLCJNNDQ4LjUgMzg0YzAgNDEuNS0xMy4xIDc5LjktMzUuNSAxMTEuMy03LjkgMTEuMS0yMS4yIDE2LjctMzQuOCAxNi43bC0yNDMuMyAwYy0xMy43IDAtMjYuOS01LjYtMzQuOC0xNi43LTIyLjQtMzEuNC0zNS41LTY5LjgtMzUuNS0xMTEuMyAwLTcxLjEgMzguNi0xMzMuMSA5Ni0xNjYuM2wwLTE1My43Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDE5MiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybDAgMTUzLjdjMTQuMiA4LjIgMjcuMiAxOC4yIDM4LjggMjkuNmwzOS4zLTM5LjMtNy03Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBjMTYgMTYgMzIgMzIgNDggNDggOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNy03LTQzLjMgNDMuM2MxNy4zIDI4LjkgMjcuMyA2Mi42IDI3LjMgOTguOHpNMjg4LjUgNjRsLTY0IDAgMCAxOTAuNi0zMiAxOC41Yy0xOS41IDExLjMtMzUuNyAyNy41LTQ2LjkgNDYuOWwyMjEuOCAwYy0xMS4yLTE5LjQtMjcuNC0zNS42LTQ2LjktNDYuOWwtMzItMTguNSAwLTE5MC42eiJdfSxMcmE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicm9hZC1icmlkZ2UiLGljb246WzU3Niw1MTIsW10sImU1NjMiLCJNMzIgMzJsMjA4IDAgMCA2NC0yNCAwIDAgNjQgMjQgMCAwIDEyOS4zYy00NS40IDcuNi04MCA0Ny4xLTgwIDk0LjdsMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMzIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC05NGMwLTM4LjgtMjYuNC03Mi42LTY0LTgybDAtMTEyIDQwIDAgMC02NC04IDBDMTQuMyA5NiAwIDgxLjcgMCA2NFMxNC4zIDMyIDMyIDMyek04OCA5NmwwIDY0IDgwIDAgMC02NC04MCAwek0zMzYgMzJsNzIgMCAwIDcyYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC03MiA3MiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgMzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC03MiAwIDAtNzJjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCA3Mi03MiAwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTM1MmMwLTI2LjUgMjEuNS00OCA0OC00OHptOTYgMTYwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDgwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC04MGMwLTEzLjMtMTAuNy0yNC0yNC0yNHoiXX0sdHdlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImFycm93LXVwLTktMSIsaWNvbjpbNTEyLDUxMixbInNvcnQtbnVtZXJpYy11cC1hbHQiXSwiZjg4NyIsIk0xNTAuNiA0MS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtOTYgOTZjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMOTYgMTQxLjMgOTYgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0zMDYuNyA0MS40IDQxLjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtOTYtOTZ6TTM2NS4xIDIwNi42Yy05LjYgMTQuOC01LjQgMzQuNiA5LjQgNDQuM3MzNC42IDUuNCA0NC4zLTkuNGw0Mi4xLTY0LjljMTIuNC0xOS4yIDE5LjEtNDEuNiAxOS4xLTY0LjUgMC00NC4yLTM1LjgtODAtODAtODBzLTgwIDM1LjgtODAgODBjMCAzNi4xIDIzLjkgNjYuNyA1Ni44IDc2LjZsLTExLjcgMTh6TTM3NiAxMTJhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptNDIuNyAxODJjLTguMy02LTE5LjEtNy43LTI4LjgtNC40bC00OCAxNmMtMTYuOCA1LjYtMjUuOCAyMy43LTIwLjIgNDAuNXMyMy43IDI1LjggNDAuNSAyMC4ybDUuOS0yIDAgNTEuNi0xNiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDk2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTE2IDAgMC05NmMwLTEwLjMtNC45LTE5LjktMTMuMy0yNnoiXX0sRXJhPXR3ZSxQcmE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibW91bnRhaW4tY2l0eSIsaWNvbjpbNjQwLDUxMixbXSwiZTUyZSIsIk0yNTYuMyA0OGMwLTI2LjUgMjEuNS00OCA0OC00OGw5NiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgNDggNDggMCAwLTcyYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCA3MiAxNiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgMzIwYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC03Ny44IDBjNC0xNS40IDIuNC0zMi42LTYuNy00OC4yTDM1NC42IDI1NiAzNjguMyAyNTZjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwYy02LjEgMC0xMS40IDMuNC0xNC4xIDguNWwtNDIuNi03M2MtNi0xMC4yLTE0LjEtMTgtMjMuMy0yMy4zbDAtNTYuMnptNjQgNjRsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnptMTYwIDk2bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwYy04LjggMC0xNiA3LjItMTYgMTZ6bTE2IDgwYy04LjggMC0xNiA3LjItMTYgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDB6bS0yNzItNjQuN2wtNjUuMSAxMTEuNiAzMy4xIDMzLjEgNDgtNDggNDAuNCAwLTU2LjQtOTYuN3ptLTI3LjYtNDcuOWMxMi4zLTIxLjIgNDIuOS0yMS4yIDU1LjMgMEw0MjAuMyA0NjMuOWMxMi40IDIxLjMtMi45IDQ4LjEtMjcuNiA0OC4xTDU2IDUxMmMtMjQuNyAwLTQwLjEtMjYuOC0yNy42LTQ4LjFMMTk2LjcgMTc1LjR6Il19LGpvZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJhcnJvdy1kb3duLTktMSIsaWNvbjpbNTEyLDUxMixbInNvcnQtbnVtZXJpYy1kZXNjIiwic29ydC1udW1lcmljLWRvd24tYWx0Il0sImY4ODYiLCJNMjMwLjYgMzkwLjZsLTgwIDgwYy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtODAtODBjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBMOTYgMzcwLjcgOTYgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDMwNi43IDI1LjQtMjUuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zem0xMzQuNS0xODRsMTEuNy0xOGMtMzIuOS05LjktNTYuOC00MC41LTU2LjgtNzYuNiAwLTQ0LjIgMzUuOC04MCA4MC04MHM4MCAzNS44IDgwIDgwYzAgMjIuOS02LjYgNDUuMy0xOS4xIDY0LjVsLTQyLjEgNjQuOWMtOS42IDE0LjgtMjkuNCAxOS4xLTQ0LjMgOS40cy0xOS4xLTI5LjQtOS40LTQ0LjN6TTQyNCAxMTJhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHptLTUuMyAxODJjOC4zIDYgMTMuMyAxNS43IDEzLjMgMjZsMCA5NiAxNiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC05NiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDE2IDAgMC01MS42LTUuOSAyYy0xNi44IDUuNi0zNC45LTMuNS00MC41LTIwLjJzMy41LTM0LjkgMjAuMi00MC41bDQ4LTE2YzkuOC0zLjMgMjAuNS0xLjYgMjguOCA0LjR6Il19LElyYT1qb2UsQXJhPWpvZSxhd2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmFjZS1ncmluLXdpZGUiLGljb246WzUxMiw1MTIsWzEyODUxNSwiZ3Jpbi1hbHQiXSwiZjU4MSIsIk0yNTYgNTEyYTI1NiAyNTYgMCAxIDAgMC01MTIgMjU2IDI1NiAwIDEgMCAwIDUxMnpNMzg2LjcgMzA4LjljMTEuOS0zLjcgMjMuOSA2LjMgMTkuNiAxOC4xLTIyLjQgNjEuMy04MS4zIDEwNS4xLTE1MC4zIDEwNS4xUzEyOC4xIDM4OC4yIDEwNS43IDMyNi45Yy00LjMtMTEuOCA3LjctMjEuOCAxOS42LTE4LjEgMzkuMiAxMi4yIDgzLjcgMTkuMSAxMzAuNyAxOS4xczkxLjUtNi45IDEzMC43LTE5LjF6TTIwOCAxOTJjMCAzNS4zLTE0LjMgNjQtMzIgNjRzLTMyLTI4LjctMzItNjQgMTQuMy02NCAzMi02NCAzMiAyOC43IDMyIDY0em0xMjggNjRjLTE3LjcgMC0zMi0yOC43LTMyLTY0czE0LjMtNjQgMzItNjQgMzIgMjguNyAzMiA2NC0xNC4zIDY0LTMyIDY0eiJdfSxOcmE9YXdlLFJyYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwb29wIixpY29uOls1MTIsNTEyLFtdLCJmNjE5IiwiTTI1NC40IDYuNmMzLjUtNC4zIDktNi41IDE0LjUtNS43IDQ2LjkgNi4zIDgzLjEgNDYuNSA4My4xIDk1LjEgMCAxMS4yLTEuOSAyMi01LjUgMzJsNS41IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjQgMCAxOS4xLTguNCAzNi4zLTIxLjcgNDhsMTMuNyAwYzM5LjggMCA3MiAzMi4yIDcyIDcyIDAgMjMuMi0xMSA0My44LTI4IDU3IDM0LjEgNS43IDYwIDM1LjMgNjAgNzEgMCAzOS44LTMyLjIgNzItNzIgNzJMNzIgNTEyYy0zOS44IDAtNzItMzIuMi03Mi03MiAwLTM1LjcgMjUuOS02NS4zIDYwLTcxLTE3LTEzLjItMjgtMzMuOC0yOC01NyAwLTM5LjggMzIuMi03MiA3Mi03MmwxMy43IDBjLTEzLjMtMTEuNy0yMS43LTI4LjktMjEuNy00OCAwLTM1LjMgMjguNy02NCA2NC02NGwxNi4yIDBjNDQuMS0uMSA3OS44LTM1LjkgNzkuOC04MCAwLTkuMi0xLjUtMTcuOS00LjMtMjYuMS0xLjgtNS4yLS44LTExLjEgMi44LTE1LjR6Il19LE9yYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJkaGFybWFjaGFrcmEiLGljb246WzUxMiw1MTIsWzk3ODRdLCJmNjU1IiwiTTMzNy44IDIwNS43bDQ4LjYtNDIuNWMxMy44IDE5LjMgMjMuNCA0MS45IDI3LjQgNjYuMmwtNjQuNCA0LjNjLTIuNC0xMC4xLTYuNC0xOS41LTExLjYtMjh6bTE0MC4xIDE5LjVjLTUuMy0zOC44LTIwLjYtNzQuNS00My4yLTEwNC4zbC44LS43QzQ0OSAxMDguNCA0NDkuNyA4Ny42IDQzNyA3NXMtMzMuNC0xMi00NS4yIDEuNWwtLjcgLjhjLTI5LjgtMjIuNi02NS41LTM3LjktMTA0LjMtNDMuMmwuMS0xLjFjMS4yLTE3LjktMTMtMzMtMzAuOS0zM3MtMzIuMSAxNS4yLTMwLjkgMzNsLjEgMS4xYy0zOC44IDUuMy03NC41IDIwLjYtMTA0LjMgNDMuMmwtLjctLjhDMTA4LjQgNjMgODcuNiA2Mi4zIDc1IDc1cy0xMiAzMy40IDEuNSA0NS4ybC44IC43Yy0yMi42IDI5LjgtMzcuOSA2NS41LTQzLjIgMTA0LjNsLTEuMS0uMWMtMTcuOS0xLjItMzMgMTMtMzMgMzAuOXMxNS4yIDMyLjEgMzMgMzAuOWwxLjEtLjFjNS4zIDM4LjggMjAuNiA3NC41IDQzLjIgMTA0LjNsLS44IC43QzYzIDQwMy42IDYyLjMgNDI0LjQgNzUgNDM3czMzLjQgMTIgNDUuMi0xLjVsLjctLjhjMjkuOCAyMi42IDY1LjUgMzcuOSAxMDQuMyA0My4ybC0uMSAxLjFjLTEuMiAxNy45IDEzIDMzIDMwLjkgMzNzMzIuMS0xNS4yIDMwLjktMzNsLS4xLTEuMWMzOC44LTUuMyA3NC41LTIwLjYgMTA0LjMtNDMuMmwuNyAuOGMxMS44IDEzLjUgMzIuNSAxNC4yIDQ1LjIgMS41czEyLTMzLjQtMS41LTQ1LjJsLS44LS43YzIyLjYtMjkuOCAzNy45LTY1LjUgNDMuMi0xMDQuM2wxLjEgLjFjMTcuOSAxLjIgMzMtMTMgMzMtMzAuOXMtMTUuMi0zMi4xLTMzLTMwLjlsLTEuMSAuMXpNMTYzLjIgMTI1LjZjMTkuMy0xMy44IDQxLjktMjMuNCA2Ni4yLTI3LjVsNC4zIDY0LjRjLTEwIDIuNC0xOS41IDYuNC0yOCAxMS42bC00Mi41LTQ4LjZ6bS02NSAxMDMuOGM0LjEtMjQuNCAxMy43LTQ2LjkgMjcuNS02Ni4ybDQ4LjYgNDIuNWMtNS4zIDguNS05LjIgMTgtMTEuNiAyOGwtNjQuNC00LjN6bTI3LjUgMTE5LjRjLTEzLjgtMTkuMy0yMy40LTQxLjktMjcuNS02Ni4ybDY0LjQtNC4zYzIuNCAxMC4xIDYuNCAxOS41IDExLjYgMjhsLTQ4LjYgNDIuNXptMTAzLjggNjVjLTI0LjQtNC4xLTQ2LjktMTMuNy02Ni4yLTI3LjRsNDIuNS00OC42YzguNSA1LjMgMTggOS4yIDI4IDExLjZsLTQuMyA2NC40em0xMTkuNC0yNy40Yy0xOS4zIDEzLjgtNDEuOSAyMy40LTY2LjIgMjcuNGwtNC4zLTY0LjRjMTAtMi40IDE5LjUtNi40IDI4LTExLjZsNDIuNSA0OC42em02NS0xMDMuOGMtNC4xIDI0LjQtMTMuNyA0Ni45LTI3LjQgNjYuMmwtNDguNi00Mi41YzUuMy04LjYgOS4yLTE4IDExLjYtMjhsNjQuNCA0LjN6bS02NS0xNTYuOWwtNDIuNSA0OC42Yy04LjYtNS4zLTE4LTkuMi0yOC0xMS42bDQuMy02NC40YzI0LjQgNC4xIDQ2LjkgMTMuNyA2Ni4yIDI3LjV6TTI1NiAyMjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0eiJdfSxzd2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYmF0dGVyeS1xdWFydGVyIixpY29uOls2NDAsNTEyLFsiYmF0dGVyeS0yIl0sImYyNDMiLCJNNTI4IDEyOGM4LjggMCAxNiA3LjIgMTYgMTZsMCAyMjRjMCA4LjgtNy4yIDE2LTE2IDE2bC00MTYgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMjI0YzAtOC44IDcuMi0xNiAxNi0xNmw0MTYgMHpNMTEyIDY0Yy00NC4yIDAtODAgMzUuOC04MCA4MGwwIDIyNGMwIDQ0LjIgMzUuOCA4MCA4MCA4MGw0MTYgMGM0NC4yIDAgODAtMzUuOCA4MC04MGwwLTQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtNjRjMC0xNy43LTE0LjMtMzItMzItMzJsMC00OGMwLTQ0LjItMzUuOC04MC04MC04MEwxMTIgNjR6bTU2IDExMmMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCAxMTJjMCAxMy4zIDEwLjcgMjQgMjQgMjRsNjQgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNGwwLTExMmMwLTEzLjMtMTAuNy0yNC0yNC0yNGwtNjQgMHoiXX0sRnJhPXN3ZSxCcmE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYW5raCIsaWNvbjpbMzIwLDUxMixbOTc2NV0sImY2NDQiLCJNOTYgMTI4YzAtMzUuMyAyOC43LTY0IDY0LTY0czY0IDI4LjcgNjQgNjRjMCA0MS42LTIwLjcgNzYuNi00Ni42IDEwNC4xLTUuOSA2LjItMTEuOCAxMS44LTE3LjQgMTYuNy01LjYtNC45LTExLjUtMTAuNS0xNy40LTE2LjctMjUuOS0yNy41LTQ2LjYtNjIuNi00Ni42LTEwNC4xek0xNjAgMEM4OS4zIDAgMzIgNTcuMyAzMiAxMjggMzIgMTgwLjQgNTMuNSAyMjMuNSA3OC44IDI1NkwzMiAyNTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsOTYgMCAwIDE2MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTYwIDk2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTQ2LjggMEMyNjYuNSAyMjMuNSAyODggMTgwLjQgMjg4IDEyOCAyODggNTcuMyAyMzAuNyAwIDE2MCAweiJdfSxIcmE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZGlhbW9uZCIsaWNvbjpbNTEyLDUxMixbOTgzMF0sImYyMTkiLCJNMTcgMjE1TDIxNSAxN0MyMjUuOSA2LjEgMjQwLjYgMCAyNTYgMHMzMC4xIDYuMSA0MSAxN0w0OTUgMjE1YzEwLjkgMTAuOSAxNyAyNS42IDE3IDQxcy02LjEgMzAuMS0xNyA0MUwyOTcgNDk1Yy0xMC45IDEwLjktMjUuNiAxNy00MSAxN3MtMzAuMS02LjEtNDEtMTdMMTcgMjk3QzYuMSAyODYuMSAwIDI3MS40IDAgMjU2czYuMS0zMC4xIDE3LTQxeiJdfSxxcmE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic3Vic2NyaXB0IixpY29uOls1NzYsNTEyLFtdLCJmMTJjIiwiTTk2IDY0Qzc4LjMgNjQgNjQgNzguMyA2NCA5NnMxNC4zIDMyIDMyIDMybDE1LjMgMCA4OS42IDEyOC04OS42IDEyOC0xNS4zIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMzIgMGMxMC40IDAgMjAuMi01LjEgMjYuMi0xMy42TDI0MCAzMTEuOCAzMjUuOCA0MzQuNGM2IDguNiAxNS44IDEzLjYgMjYuMiAxMy42bDMyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTE1LjMgMC04OS42LTEyOCA4OS42LTEyOCAxNS4zIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTMyIDBjLTEwLjQgMC0yMC4yIDUuMS0yNi4yIDEzLjZMMjQwIDIwMC4yIDE1NC4yIDc3LjZDMTQ4LjIgNjkuMSAxMzguNCA2NCAxMjggNjRMOTYgNjR6TTU0NCAzMjBjMC0xMS4xLTUuNy0yMS40LTE1LjItMjcuMnMtMjEuMi02LjQtMzEuMS0xLjRsLTMyIDE2Yy0xNS44IDcuOS0yMi4yIDI3LjEtMTQuMyA0Mi45IDUuNiAxMS4yIDE2LjkgMTcuNyAyOC42IDE3LjdsMCA4MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw2NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybDAtMTI4eiJdfSxpd2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicnVwZWUtc2lnbiIsaWNvbjpbNDQ4LDUxMixbODM2MCwicnVwZWUiXSwiZjE1NiIsIk0wIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMybDgwIDBjNzkuNSAwIDE0NCA2NC41IDE0NCAxNDQgMCA1NC4zLTMwIDEwMS41LTc0LjQgMTI2LjFsNDEgMTM2LjdjNS4xIDE2LjktNC41IDM0LjgtMjEuNSAzOS44cy0zNC44LTQuNS0zOS44LTIxLjVMMTIwLjEgMzE5LjhjLTIuNyAuMS01LjQgLjItOC4xIC4ybC00OCAwIDAgMTI4YzAgMTcuNy0xNC4zIDMyLTMyIDMyUzAgNDY1LjcgMCA0NDhMMCA2NHpNNjQgMjU2bDQ4IDBjNDQuMiAwIDgwLTM1LjggODAtODBzLTM1LjgtODAtODAtODBsLTQ4IDAgMCAxNjB6bTI4NS4xLTMybDM0LjkgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMzQuOSAwYy03LjIgMC0xMy4xIDUuOS0xMy4xIDEzLjEgMCA1LjcgMy43IDEwLjcgOS4xIDEyLjVsNDkuNCAxNS45YzMxLjkgMTAuMyA1My41IDM5LjkgNTMuNSA3My40IDAgNDIuNi0zNC41IDc3LjEtNzcuMSA3Ny4xTDMyMCA0ODBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsNTAuOSAwYzcuMiAwIDEzLjEtNS45IDEzLjEtMTMuMSAwLTUuNy0zLjctMTAuNy05LjEtMTIuNWwtNDkuNC0xNS45Yy0zMS45LTEwLjMtNTMuNS0zOS45LTUzLjUtNzMuNCAwLTQyLjYgMzQuNS03Ny4xIDc3LjEtNzcuMXoiXX0sanJhPWl3ZSxWcmE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGVyc29uLXJpZmxlIixpY29uOls1MTIsNTEyLFtdLCJlNTRlIiwiTTQxNiAwTDM4NCAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDAgMTAwLjNjLTkuNiA1LjUtMTYgMTUuOS0xNiAyNy43bDAgMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgMTQ0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDE2IDAgMCA5NmMwIDguOCA3LjIgMTYgMTYgMTZsNTkuNSAwYzEwLjQgMCAxOC05LjggMTUuNS0xOS45bC0yMy05Mi4xIDQ0IDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMTZjMC04LjgtNy4yLTE2LTE2LTE2bC00OCAwIDAtMjYuNyA1My4xLTE3LjdjNi41LTIuMiAxMC45LTguMyAxMC45LTE1LjJsMC04NC41YzAtOC44LTcuMi0xNi0xNi0xNmwtMTYgMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgNTYtMTYgNS4zIDAtMTA5LjNjMC0xMS44LTYuNC0yMi4yLTE2LTI3LjdMNDMyIDE2YzAtOC44LTcuMi0xNi0xNi0xNnpNMjI0IDIwOEMxMTggMjA4IDMyIDI5NCAzMiA0MDBsMCA0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtNDhjMC0zMi41IDEyLjEtNjIuMSAzMi04NC43bDAgMTk2LjcgMTYwIDAgMC0yOTMuMWMtMjAtNy4xLTQxLjYtMTAuOS02NC0xMC45ek0yODAgODhhNzIgNzIgMCAxIDAgLTE0NCAwIDcyIDcyIDAgMSAwIDE0NCAweiJdfSxVcmE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZCIsaWNvbjpbMzg0LDUxMixbMTAwXSwiNDQiLCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMmwxMjggMGMxMjMuNyAwIDIyNCAxMDAuMyAyMjQgMjI0UzI4My43IDQ4MCAxNjAgNDgwTDMyIDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJMMCA2NHpNNjQgOTZsMCAzMjAgOTYgMGM4OC40IDAgMTYwLTcxLjYgMTYwLTE2MFMyNDguNCA5NiAxNjAgOTZMNjQgOTZ6Il19LFdyYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzcXVhcmUtbmZpIixpY29uOls0NDgsNTEyLFtdLCJlNTc2IiwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6TTkzIDE3Mi4zbDM1IDYzIDAtNTEuNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0bDAgMTQ0YzAgMTAuOS03LjQgMjAuNS0xOCAyMy4ycy0yMS43LTItMjctMTEuNmwtMzUtNjMgMCA1MS40YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtMTQ0YzAtMTAuOSA3LjQtMjAuNSAxOC0yMy4yczIxLjcgMiAyNyAxMS42ek0yMDggMTg0YzAtMTMuMyAxMC43LTI0IDI0LTI0bDgwIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTU2IDAgMCAzMiA0MCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC00MCAwIDAgNDBjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC0xNDR6bTE5MiAwbDAgMTQ0YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtMTQ0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6Il19LEdyYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0ZWV0aCIsaWNvbjpbNTEyLDUxMixbXSwiZjYyZSIsIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDM4NCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NnpNMTQ0IDIwOGwwIDI0YzAgMTMuMyAxMC43IDI0IDI0IDI0bDQ4IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRsMC0yNGMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OHptMTI4IDBsMCAyNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGw0OCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0bDAtMjRjMC0yNi41LTIxLjUtNDgtNDgtNDhzLTQ4IDIxLjUtNDggNDh6TTgwIDE3NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAyNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGwxNiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0bDAtMjRjMC0xNy43LTE0LjMtMzItMzItMzJ6bTMyMCAzMmwwIDI0YzAgMTMuMyAxMC43IDI0IDI0IDI0bDE2IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRsMC0yNGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnpNNDggMzM2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xNmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDE2em0xNDQgNDhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC0xNmMwLTguOC03LjItMTYtMTYtMTZsLTY0IDBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4em0xMjggMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTE2YzAtOC44LTcuMi0xNi0xNi0xNmwtNjQgMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMTZjMCAyNi41IDIxLjUgNDggNDggNDh6bTExMi0xNmMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTE2YzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMTZjMCAxNy43IDE0LjMgMzIgMzIgMzJ6Il19LHJ3ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJtYWduaWZ5aW5nLWdsYXNzLWRvbGxhciIsaWNvbjpbNTEyLDUxMixbInNlYXJjaC1kb2xsYXIiXSwiZjY4OCIsIk00MTYgMjA4YzAgNDUuOS0xNC45IDg4LjMtNDAgMTIyLjdMNTAyLjYgNDU3LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBMMzMwLjcgMzc2QzI5Ni4zIDQwMS4xIDI1My45IDQxNiAyMDggNDE2IDkzLjEgNDE2IDAgMzIyLjkgMCAyMDhTOTMuMSAwIDIwOCAwIDQxNiA5My4xIDQxNiAyMDh6TTIxMiA5NmMtMTEgMC0yMCA5LTIwIDIwbDAgNGMtMjguOCAuMy01MiAyMy43LTUyIDUyLjUgMCAyNS43IDE4LjUgNDcuNiA0My45IDUxLjhsNDEuNyA3YzYgMSAxMC40IDYuMiAxMC40IDEyLjMgMCA2LjktNS42IDEyLjUtMTIuNSAxMi41TDE2OCAyNTZjLTExIDAtMjAgOS0yMCAyMHM5IDIwIDIwIDIwbDI0IDAgMCA0YzAgMTEgOSAyMCAyMCAyMHMyMC05IDIwLTIwbDAtNC43YzI1LTQuMSA0NC0yNS43IDQ0LTUxLjggMC0yNS43LTE4LjUtNDcuNi00My45LTUxLjhsLTQxLjctN2MtNi0xLTEwLjQtNi4yLTEwLjQtMTIuMyAwLTYuOSA1LjYtMTIuNSAxMi41LTEyLjVsNDcuNSAwYzExIDAgMjAtOSAyMC0yMHMtOS0yMC0yMC0yMGwtOCAwIDAtNGMwLTExLTktMjAtMjAtMjB6Il19LEtyYT1yd2UsWXJhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImR1bXBzdGVyLWZpcmUiLGljb246WzY0MCw1MTIsW10sImY3OTQiLCJNMTY0LjMgNjRMMTM4LjcgMTkyIDU2IDE5MmMtMTMuMyAwLTI0LTEwLjctMjQtMjRsMC00LjFjMC0yLjYgLjQtNS4xIDEuMi03LjZMNTguNSA4MC40QzYxLjggNzAuNiA3MSA2NCA4MS4zIDY0bDgzIDB6bTIzLjQgMTI4bDI1LjYtMTI4IDgyLjcgMCAwIDEyOC0xMDguMyAwek0zNDQgNjRsODIuNyAwIDE2IDgwYy0xNC43IC4yLTI5LjMgNS41LTQwLjkgMTUuOS0xMS41IDEwLjMtMjIuNSAyMS0zMi44IDMyLjFsLTI0LjkgMCAwLTEyOHpNOTYgMjQwbDIzMy4yIDBjLTYuNCA4LjgtMTIuMyAxNy42LTE3LjcgMjYuMy0yMS40IDM0LjctMzkuNSA3Ni4xLTM5LjUgMTE1LjggMCAxNy4xIDIuMSAzMy44IDYgNDkuOWwtMTIwLjQgMCAxLjkgMTAuM2MzLjIgMTcuNC04LjQgMzQtMjUuOCAzNy4ycy0zNC04LjQtMzcuMi0yNS44QzcxIDMxMy4zIDU4IDI0Mi4xIDU3LjcgMjQwTDk2IDI0MHptNTEyLTcyYzAgMTEtNy40IDIwLjMtMTcuNSAyMy4xLS45LS44LTEuNy0xLjYtMi42LTIuNC0yMS44LTIwLTU0LjMtMjEuOC03OC01LjUtNC4yLTQuMy04LjUtOC41LTEyLjktMTIuNmwtMjEuMy0xMDYuNiA4MyAwYzEwLjMgMCAxOS41IDYuNiAyMi44IDE2LjRsMjUuMyA3NS45Yy44IDIuNCAxLjIgNSAxLjIgNy42bDAgNC4xek01MDUuNyAyNDAuM0w1MTggMjI2LjVjNS40LTYuMSAxMy4zLTguOCAyMC45LTguOSA3LjIgMCAxNC4zIDIuNiAxOS45IDcuOCAxOS43IDE4LjMgMzkuOCA0My4yIDU1IDcwLjYgMTUuMSAyNy4yIDI2LjIgNTguMSAyNi4yIDg4LjEgMCA4OC43LTcxLjMgMTU5LjgtMTYwIDE1OS44LTg5LjYgMC0xNjAtNzEuMy0xNjAtMTU5LjggMC0zNy4zIDE2LTczLjQgMzYuOC0xMDQuNSAyMC45LTMxLjMgNDcuNS01OSA3MC45LTgwLjIgNS43LTUuMiAxMy4xLTcuNyAyMC4zLTcuNXMxMy40IDMuMiAxOC44IDcuNWMxNC40IDExLjQgMzguOSA0MC43IDM4LjkgNDAuN3pNNTQ0IDQzMi4yYzAtMzYuNS0zNy03My01NC44LTg4LjQtNS40LTQuNy0xMy4xLTQuNy0xOC41IDAtMTcuNyAxNS40LTU0LjggNTEuOS01NC44IDg4LjQgMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NHoiXX0sWnJhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InVwbG9hZCIsaWNvbjpbNDQ4LDUxMixbXSwiZjA5MyIsIk0yNTYgMTA5LjNMMjU2IDMyMGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTIxMC43LTQxLjQgNDEuNGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNsOTYtOTZjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsOTYgOTZjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBMMjU2IDEwOS4zek0yMjQgNDAwYzQ0LjIgMCA4MC0zNS44IDgwLTgwbDgwIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAzMmMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtMzJjMC0zNS4zIDI4LjctNjQgNjQtNjRsODAgMGMwIDQ0LjIgMzUuOCA4MCA4MCA4MHptMTQ0IDI0YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHoiXX0sVm9lPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InVzZXItc2xhc2giLGljb246WzU3Niw1MTIsWzYyNzE0LCJ1c2VyLWFsdC1zbGFzaCIsInVzZXItbGFyZ2Utc2xhc2giXSwiZjUwNiIsIk00MS0yNC45Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMFMtMi4zLS4zIDcgOS4xbDUyOCA1MjhjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDMxMS41IDI0NS43YzU1LTEwLjkgOTYuNS01OS41IDk2LjUtMTE3LjcgMC02Ni4zLTUzLjctMTIwLTEyMC0xMjAtNTguMiAwLTEwNi44IDQxLjUtMTE3LjcgOTYuNUw0MS0yNC45ek0yMzUuNiAzMDUuNEMxNDcuOSAzMTYuNiA4MCAzOTEuNSA4MCA0ODIuMyA4MCA0OTguNyA5My4zIDUxMiAxMDkuNyA1MTJsMzMyLjUgMC0yMDYuNi0yMDYuNnoiXX0sWHJhPVZvZSxRcmE9Vm9lLEpyYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJhcnJvdy1sZWZ0IixpY29uOls1MTIsNTEyLFs4NTkyXSwiZjA2MCIsIk05LjQgMjMzLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDE2MCAxNjBjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0wxMDkuMyAyODggNDgwIDI4OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMzcwLjcgMCAxMDUuNC0xMDUuNGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtMTYwIDE2MHoiXX0sZW9hPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InZpYWwtdmlydXMiLGljb246WzU3Niw1MTIsW10sImU1OTciLCJNNjQgMzJDNjQgMTQuMyA3OC4zIDAgOTYgMEwzMjAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwwIDE1MS43Yy0xOC41IDAtMzcgNy01MS4xIDIxLjEtMjEuNiAyMS42LTI2LjYgNTMuNi0xNSA3OS45LTI2LjkgMTAuNC00NS45IDM2LjYtNDUuOSA2Ny4xczE5IDU2LjcgNDUuOSA2Ny4xYy03LjMgMTYuNS04IDM1LjItMi4zIDUyLjItMTMuNCA1LjctMjguMiA4LjgtNDMuNiA4LjgtNjEuOSAwLTExMi01MC4xLTExMi0xMTJMOTYgNjRDNzguMyA2NCA2NCA0OS43IDY0IDMyem05NiAzMmwwIDEyOCA5NiAwIDAtMTI4LTk2IDB6TTI4MCA0MDhjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRjMjguOCAwIDQzLjItMzQuOCAyMi45LTU1LjItOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwYzIwLjQgMjAuNCA1NS4yIDUuOSA1NS4yLTIyLjkgMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGMwIDI4LjggMzQuOCA0My4yIDU1LjIgMjIuOSA5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjljLTIwLjQgMjAuNC01LjkgNTUuMiAyMi45IDU1LjIgMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRjLTI4LjggMC00My4yIDM0LjgtMjIuOSA1NS4yIDkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBjLTIwLjQtMjAuNC01NS4yLTUuOS01NS4yIDIyLjkgMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRjMC0yOC44LTM0LjgtNDMuMi01NS4yLTIyLjktOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWMyMC40LTIwLjQgNS45LTU1LjItMjIuOS01NS4yem0xMDQtMzJhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em04OCA0MGEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAweiJdfSx0b2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2hlY2stZG91YmxlIixpY29uOlszODQsNTEyLFtdLCJmNTYwIiwiTTI0OS45IDY2LjhjMTAuNC0xNC4zIDcuMi0zNC4zLTcuMS00NC43cy0zNC4zLTcuMi00NC43IDcuMWwtMTA2IDE0NS43LTM3LjUtMzcuNWMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsNjQgNjRjNi42IDYuNiAxNS44IDEwIDI1LjEgOS4zczE3LjktNS41IDIzLjQtMTMuMWwxMjgtMTc2em0xMjggMTM2YzEwLjQtMTQuMyA3LjItMzQuMy03LjEtNDQuN3MtMzQuMy03LjItNDQuNyA3LjFsLTE3MCAyMzMuNy02OS41LTY5LjVjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDk2IDk2YzYuNiA2LjYgMTUuOCAxMCAyNS4xIDkuM3MxNy45LTUuNSAyMy40LTEzLjFsMTkyLTI2NHoiXX0sYW9hPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBhdyIsaWNvbjpbNTEyLDUxMixbXSwiZjFiMCIsIk0yMzQuNSA5Mi45YzE0LjMgNDIuOS0uMyA4Ni4yLTMyLjYgOTYuOHMtNzAuMS0xNS42LTg0LjQtNTguNSAuMy04Ni4yIDMyLjYtOTYuOCA3MC4xIDE1LjYgODQuNCA1OC41ek0xMDAuNCAxOTguNmMxOC45IDMyLjQgMTQuMyA3MC4xLTEwLjIgODQuMXMtNTkuNy0uOS03OC41LTMzLjMtMTQuMy03MC4xIDEwLjItODQuMSA1OS43IC45IDc4LjUgMzMuM3pNNjkuMiA0MDEuMkMxMjEuNiAyNTkuOSAyMTQuNyAyMjQgMjU2IDIyNHMxMzQuNCAzNS45IDE4Ni44IDE3Ny4yYzMuNiA5LjcgNS4yIDIwLjEgNS4yIDMwLjVsMCAxLjZjMCAyNS44LTIwLjkgNDYuNy00Ni43IDQ2LjctMTEuNSAwLTIyLjktMS40LTM0LTQuMmwtODgtMjJjLTE1LjMtMy44LTMxLjMtMy44LTQ2LjYgMGwtODggMjJjLTExLjEgMi44LTIyLjUgNC4yLTM0IDQuMi0yNS44IDAtNDYuNy0yMC45LTQ2LjctNDYuN2wwLTEuNmMwLTEwLjQgMS42LTIwLjggNS4yLTMwLjV6TTQyMS44IDI4Mi43Yy0yNC41LTE0LTI5LjEtNTEuNy0xMC4yLTg0LjFzNTQtNDcuMyA3OC41LTMzLjMgMjkuMSA1MS43IDEwLjIgODQuMS01NCA0Ny4zLTc4LjUgMzMuM3pNMzEwLjEgMTg5LjdjLTMyLjMtMTAuNi00Ni45LTUzLjktMzIuNi05Ni44czUyLjEtNjkuMSA4NC40LTU4LjUgNDYuOSA1My45IDMyLjYgOTYuOC01Mi4xIDY5LjEtODQuNCA1OC41eiJdfSxVb2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaGVsbWV0LXNhZmV0eSIsaWNvbjpbNTc2LDUxMixbImhhcmQtaGF0IiwiaGF0LWhhcmQiXSwiZjgwNyIsIk0zNTIgMjY0bDAtMjAwYzAtMTcuNy0xNC4zLTMyLTMyLTMybC02NCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDIwMGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTE4NS45QzkwIDEwOS44IDMyIDE5MS44IDMyIDI4OGwwIDY0IDUxMiAwIDAtNjRjLTEtOTUuMi01OC40LTE3Ny43LTE0NC0yMDkuOEw0MDAgMjY0YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0ek00MCA0MDBjLTIyLjEgMC00MCAxNy45LTQwIDQwczE3LjkgNDAgNDAgNDBsNDk2IDBjMjIuMSAwIDQwLTE3LjkgNDAtNDBzLTE3LjktNDAtNDAtNDBMNDAgNDAweiJdfSxzb2E9VW9lLGlvYT1Vb2Uscm9hPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImUiLGljb246WzMyMCw1MTIsWzEwMV0sIjQ1IiwiTTMyIDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRMMCA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJsMjU2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTIyNCAwIDAtMTI4IDE2MCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xNjAgMCAwLTEyOCAyMjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwzMiAzMnoiXX0sb3dlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZhY2UtbGF1Z2gtc3F1aW50IixpY29uOls1MTIsNTEyLFsibGF1Z2gtc3F1aW50Il0sImY1OWIiLCJNMjU2IDUxMmEyNTYgMjU2IDAgMSAwIDAtNTEyIDI1NiAyNTYgMCAxIDAgMCA1MTJ6TTEwNy43IDMzMi4xQzEwMiAzMTggMTEzLjQgMzA0IDEyOC42IDMwNGwyNTQuOSAwYzE1LjIgMCAyNi42IDE0IDIwLjkgMjguMS0yMy44IDU4LjYtODEuMiA5OS45LTE0OC4zIDk5LjlzLTEyNC42LTQxLjMtMTQ4LjMtOTkuOXptMTUtMTg4LjhjNC41LTYuOCAxMy4zLTkuMiAyMC42LTUuNWw3OS42IDQwYzUuNCAyLjcgOC44IDguMiA4LjggMTQuM3MtMy40IDExLjYtOC44IDE0LjNsLTc5LjYgNDBjLTcuMyAzLjYtMTYuMSAxLjMtMjAuNi01LjVzLTMuMS0xNS45IDMuMS0yMS4xTDE1OSAxOTIgMTI1LjggMTY0LjNjLTYuMi01LjItNy42LTE0LjMtMy4xLTIxLjF6bTI2My42IDIxLjFMMzUzIDE5MiAzODYuMiAyMTkuN2M2LjIgNS4yIDcuNiAxNC4zIDMuMSAyMS4xcy0xMy4zIDkuMi0yMC42IDUuNWwtNzkuNi00MGMtNS40LTIuNy04LjgtOC4yLTguOC0xNC4zczMuNC0xMS42IDguOC0xNC4zbDc5LjYtNDBjNy4zLTMuNiAxNi4xLTEuMyAyMC42IDUuNXMzLjEgMTUuOS0zLjEgMjEuMXoiXX0sb29hPW93ZSxud2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZG93bi1sZWZ0LWFuZC11cC1yaWdodC10by1jZW50ZXIiLGljb246WzUxMiw1MTIsWyJjb21wcmVzcy1hbHQiXSwiZjQyMiIsIk00MzkuNSA3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDMyIDMyYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45bC04NyA4NyAzOSAzOWM2LjkgNi45IDguOSAxNy4yIDUuMiAyNi4yUzQ1MC4yIDI0MCA0NDAuNSAyNDBsLTE0NCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNGwwLTE0NGMwLTkuNyA1LjgtMTguNSAxNC44LTIyLjJzMTkuMy0xLjcgMjYuMiA1LjJsMzkgMzkgODctODd6TTcyLjUgMjcybDE0NCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgMTQ0YzAgOS43LTUuOCAxOC41LTE0LjggMjIuMnMtMTkuMyAxLjctMjYuMi01LjJsLTM5LTM5LTg3IDg3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtMzItMzJjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDg3LTg3LTM5LTM5Yy02LjktNi45LTguOS0xNy4yLTUuMi0yNi4yUzYyLjggMjcyIDcyLjUgMjcyeiJdfSxub2E9bndlLGxvYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJnaWZ0cyIsaWNvbjpbNTc2LDUxMixbXSwiZjc5YyIsIk0yMDItMzAuNmMxMi41IDQuNCAxOSAxOC4xIDE0LjYgMzAuNmwtOC4yIDIzLjEgMjUuNC0xOC41YzEwLjctNy44IDI1LjctNS40IDMzLjUgNS4zczUuNCAyNS43LTUuMyAzMy41TDIzMy44IDY0IDI3MiA2NGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDIuMWMtNTQuNyAxMC40LTk2IDU4LjQtOTYgMTE2bDAgMS45YzAgOC45IDEgMTcuNSAyLjggMjUuOS0xMS45IDE3LjgtMTguOCAzOS4xLTE4LjggNjIuMWwwIDEyOGMwIDIzLjggNy40IDQ1LjkgMjAuMSA2NEw0OCA1MTJjLTI2LjUgMC00OC0yMS41LTQ4LTQ4TDAgMTEyQzAgODUuNSAyMS41IDY0IDQ4IDY0bDM4LjIgMC0yOC4zLTIwLjZDNDcuMiAzNS42IDQ0LjggMjAuNiA1Mi42IDkuOVM3NS40LTMuMiA4Ni4xIDQuNmwyNy40IDIwLTguMy0yNUMxMDEtMTMgMTA3LjgtMjYuNiAxMjAuNC0zMC44czI2LjIgMi42IDMwLjQgMTUuMmw5LjkgMjkuOCAxMC43LTMwLjJjNC40LTEyLjUgMTguMS0xOSAzMC42LTE0LjZ6TTQ4OS45IDIwOGMtNy41IDAtMTQuNSAzLjgtMTguNiAxMC4xTDQ0Ni45IDI1NiA0ODggMjU2YzEzLjMgMCAyNC0xMC43IDI0LTI0bDAtMS45YzAtMTIuMi05LjktMjIuMS0yMi4xLTIyLjF6TTM4NS4xIDI1NmwtMjQuNC0zNy45Yy00LjEtNi4zLTExLjEtMTAuMS0xOC42LTEwLjEtMTIuMiAwLTIyLjEgOS45LTIyLjEgMjIuMWwwIDEuOWMwIDEzLjMgMTAuNyAyNCAyNCAyNGw0MS4xIDB6TTI4MS45IDI2OC41Yy02LjMtMTAuNy05LjktMjMuMi05LjktMzYuNWwwLTEuOWMwLTM4LjcgMzEuNC03MC4xIDcwLjEtNzAuMSAyMy44IDAgNDYgMTIuMSA1OC45IDMyLjFsMTUgMjMuMiAxNS0yMy4yYzEyLjktMjAgMzUuMS0zMi4xIDU4LjktMzIuMSAzOC43IDAgNzAuMSAzMS40IDcwLjEgNzAuMWwwIDEuOWMwIDEzLjMtMy42IDI1LjgtOS45IDM2LjUgMTUuNyAxMS43IDI1LjkgMzAuNCAyNS45IDUxLjVsMCAxMjhjMCAzNS4zLTI4LjcgNjQtNjQgNjRsLTcyIDAgMC0yMDgtNDggMCAwIDIwOC03MiAwYy0zNS4zIDAtNjQtMjguNy02NC02NGwwLTEyOGMwLTIxLjEgMTAuMi0zOS44IDI1LjktNTEuNXoiXX0sY29hPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJlZCIsaWNvbjpbNTc2LDUxMixbMTI4NzE2XSwiZjIzNiIsIk0zMiAzMmMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDIyNCAyMjQgMCAwLTEyOGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwxNjAgMGM1MyAwIDk2IDQzIDk2IDk2bDAgMjI0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtNjQtNDQ4IDAgMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMlMwIDQ2NS43IDAgNDQ4TDAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJ6bTgwIDE2MGE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6Il19LGRvYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJtb25leS1iaWxsLXRyYW5zZmVyIixpY29uOls2NDAsNTEyLFtdLCJlNTI4IiwiTTMxIDEwNWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlMMTAzLTFjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC0zMSAzMSA2Ny43IDAgMCAwIDMzOC4zIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAxNzguMi01LjEtNS4xYy0yOC4xLTI4LjEtNzMuNy0yOC4xLTEwMS44IDAtMjcuMiAyNy4yLTI4LjEgNzAuNi0yLjggOTguOWw2Ny43IDAtMzEtMzFjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw3MiA3MmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtNzIgNzJjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsMzEtMzEtNDA2LjEgMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRsMC0xNzguMiA1LjEgNS4xYzI4LjEgMjguMSA3My43IDI4LjEgMTAxLjggMCAyNy4yLTI3LjIgMjguMS03MC42IDIuOC05OC45bC02Ny43IDAgMzEgMzFjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMEwzMSAxMDV6TTQxNiAyNTZhOTYgOTYgMCAxIDAgLTE5MiAwIDk2IDk2IDAgMSAwIDE5MiAwem04OC02NC41YzQuNCAuNSA4LTMuMSA4LTcuNWwwLTQ4YzAtNC40LTMuNi04LTgtOGwtNDggMGMtNC40IDAtOC4xIDMuNi03LjUgOCAzLjYgMjkgMjYuNiA1MS45IDU1LjUgNTUuNXptLTM2OCAxMjljLTQuNC0uNS04IDMuMS04IDcuNWwwIDQ4YzAgNC40IDMuNiA4IDggOGw0OCAwYzQuNCAwIDguMS0zLjYgNy41LTgtMy42LTI5LTI2LjYtNTEuOS01NS41LTU1LjV6Il19LGx3ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwZXJzb24tcnVubmluZyIsaWNvbjpbNDQ4LDUxMixbMTI3OTM5LCJydW5uaW5nIl0sImY3MGMiLCJNMjU2LjUtMzJhNTYgNTYgMCAxIDEgMCAxMTIgNTYgNTYgMCAxIDEgMC0xMTJ6TTEyMy42IDE3NmMtMy4zIDAtNi4yIDItNy40IDVMOTQuMiAyMzUuOWMtNi42IDE2LjQtMjUuMiAyNC40LTQxLjYgMTcuOHMtMjQuNC0yNS4yLTE3LjgtNDEuNmwyMS45LTU0LjlDNjcuNyAxMjkuOSA5NC4xIDExMiAxMjMuNiAxMTJsOTcuMyAwYzI4LjUgMCA1NC44IDE1LjEgNjkuMSAzOS43bDMyLjggNTYuMyA2MS42IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTYxLjYgMGMtMjIuOCAwLTQzLjgtMTIuMS01NS4zLTMxLjhsLTEwLTE3LjEtMjAuNyA3MC40IDc1LjQgMjIuNmMyNy43IDguMyA0MS44IDM5IDMwLjEgNjUuNUwyODUuNyA1MDljLTcuMiAxNi4yLTI2LjEgMjMuNC00Mi4yIDE2LjJzLTIzLjQtMjYuMS0xNi4yLTQyLjJsNDkuMi0xMTAuOC05NS45LTI4LjhjLTMyLjctOS44LTUyLTQzLjctNDMuNy03Ni44bDIyLjctOTAuNi0zNS45IDB6bS04IDE4MWMxMy4zIDE0LjkgMzAuNyAyNi4zIDUxLjIgMzIuNGw0LjcgMS40LTYuOSAxOS4zYy01LjggMTYuMy0xNiAzMC44LTI5LjMgNDEuOEw1Mi45IDUxOS44Yy0xMy42IDExLjItMzMuOCA5LjMtNDUtNC4zcy05LjMtMzMuOCA0LjMtNDVsODIuNC02Ny45YzQuNS0zLjcgNy44LTguNSA5LjgtMTMuOUwxMTUuNiAzNTd6Il19LHVvYT1sd2UsY3dlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNpcmNsZS1jaGV2cm9uLWRvd24iLGljb246WzUxMiw1MTIsWyJjaGV2cm9uLWNpcmNsZS1kb3duIl0sImYxM2EiLCJNMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMiAyNTYgMjU2IDAgMSAwIDAtNTEyek0xMzUgMjQxYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsODcgODcgODctODdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45TDI3MyAzNDVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDEzNSAyNDF6Il19LHBvYT1jd2UsaG9hPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InVzZXItbnVyc2UiLGljb246WzQ0OCw1MTIsW10sImY4MmYiLCJNOTYgNDQuOWMwLTEyLjcgNy41LTI0LjIgMTkuMi0yOS4zbDk2LTQyYzguMi0zLjYgMTcuNS0zLjYgMjUuNyAwbDk2IDQyQzM0NC41IDIwLjcgMzUyIDMyLjIgMzUyIDQ0LjlsMCA5OS4xYzAgNzAuNy01Ny4zIDEyOC0xMjggMTI4Uzk2IDIxNC43IDk2IDE0NGwwLTk5LjF6TTMwNCAxMjhsLTExMS42IDAtLjQgMC00OCAwIDAgMTZjMCA0NC4yIDM1LjggODAgODAgODBzODAtMzUuOCA4MC04MGwwLTE2ek0yMDggMTZsMCAxNi0xNiAwYy00LjQgMC04IDMuNi04IDhsMCAxNmMwIDQuNCAzLjYgOCA4IDhsMTYgMCAwIDE2YzAgNC40IDMuNiA4IDggOGwxNiAwYzQuNCAwIDgtMy42IDgtOGwwLTE2IDE2IDBjNC40IDAgOC0zLjYgOC04bDAtMTZjMC00LjQtMy42LTgtOC04bC0xNiAwIDAtMTZjMC00LjQtMy42LTgtOC04TDIxNiA4Yy00LjQgMC04IDMuNi04IDh6TTE0Mi42IDMyM2MtNi41LTQuOS0xNS4yLTYuMi0yMi42LTIuOC02MS40IDI4LjItMTA0LjEgOTAuMi0xMDQuMSAxNjIuMSAwIDE2LjQgMTMuMyAyOS43IDI5LjcgMjkuN2wzNTYuNiAwYzE2LjQgMCAyOS43LTEzLjMgMjkuNy0yOS43IDAtNzItNDIuNy0xMzQtMTA0LjEtMTYyLjEtNy40LTMuNC0xNi4xLTIuMS0yMi42IDIuOGwtNjcgNTAuMmMtOC41IDYuNC0yMC4zIDYuNC0yOC44IDBsLTY3LTUwLjJ6Il19LGR3ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmYWNlLWtpc3Mtd2luay1oZWFydCIsaWNvbjpbNjQwLDUxMixbMTI4NTM2LCJraXNzLXdpbmstaGVhcnQiXSwiZjU5OCIsIk01NDMuNyAyNjguM2MuMi00LjEgLjMtOC4yIC4zLTEyLjMgMC0xNDEuNC0xMTQuNi0yNTYtMjU2LTI1NlMzMiAxMTQuNiAzMiAyNTYgMTQ2LjYgNTEyIDI4OCA1MTJjNDEuNCAwIDgwLjUtOS44IDExNS4xLTI3LjMtNy42LTE3LjEtMTYuMS0zOC44LTIxLjgtNjEuNy03LjctMzAuNS0xNC4xLTc2LjIgOC4yLTExNC43bDIuNy00LjZjMjkuNS01MSA5NC43LTY4LjUgMTQ1LjctMzkgMiAxLjIgNCAyLjQgNS45IDMuN3pNMjQwIDMwNGMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGMyNi41IDAgNDggMjEuNSA0OCA0OCAwIDEyLjMtNC42IDIzLjUtMTIuMiAzMiA3LjYgOC41IDEyLjIgMTkuNyAxMi4yIDMyIDAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDE2IDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTE2IDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZsMTYgMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmwtMTYgMGMtOC44IDAtMTYtNy4yLTE2LTE2ek0yMDggMTc2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMTUyIDIwYy0xMSAwLTIwIDktMjAgMjBzLTkgMjAtMjAgMjAtMjAtOS0yMC0yMGMwLTMzLjEgMjYuOS02MCA2MC02MGwxNiAwYzMzLjEgMCA2MCAyNi45IDYwIDYwIDAgMTEtOSAyMC0yMCAyMHMtMjAtOS0yMC0yMC05LTIwLTIwLTIwbC0xNiAwek01NDIuOCAzNTBjLTIuMi0xOC4zLTEyLjktMzQuNi0yOC45LTQzLjgtMjguMS0xNi4yLTYzLjktNi42LTgwLjEgMjEuNWwtMi43IDQuNmMtMjQuNSA0Mi41IDcuOSAxMTcuOSAyNC40IDE1MC44IDUuMSAxMC4xIDE1LjUgMTYuMSAyNi44IDE1LjUgMzYuNy0yLjIgMTE4LjItMTEuNyAxNDIuOC01NC4ybDIuNy00LjZjMTYuMi0yOC4xIDYuNi02My45LTIxLjUtODAuMS0xNi05LjItMzUuNC0xMC40LTUyLjQtMy4xbC05LjggNC4yLTEuMy0xMC42eiJdfSxmb2E9ZHdlLG1vYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmaWxsIixpY29uOls1MTIsNTEyLFtdLCJmNTc1IiwiTTI5NiA2NGM2LjkgMCAxMy41IDIuNyAxOC4zIDcuNkw0NDAuNCAxOTcuN2M0LjkgNC45IDcuNiAxMS41IDcuNiAxOC4zcy0yLjcgMTMuNS03LjYgMTguM0wzODYuNyAyODggNjUuMyAyODhjMS4zLTMuOSAzLjQtNy40IDYuMy0xMC4zbDk2LjQtOTYuNCAzMy40IDMzLjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0wyMTMuMyAxMzYgMjc3LjcgNzEuNmM0LjktNC45IDExLjUtNy42IDE4LjMtNy42ek0xMjIuNyAxMzZMMjYuMyAyMzIuNEM5LjUgMjQ5LjMgMCAyNzIuMSAwIDI5NnM5LjUgNDYuNyAyNi4zIDYzLjZMMTUyLjQgNDg1LjdDMTY5LjMgNTAyLjUgMTkyLjEgNTEyIDIxNiA1MTJzNDYuNy05LjUgNjMuNi0yNi4zTDQ4NS43IDI3OS42QzUwMi41IDI2Mi43IDUxMiAyMzkuOSA1MTIgMjE2cy05LjUtNDYuNy0yNi4zLTYzLjZMMzU5LjYgMjYuM0MzNDIuNyA5LjUgMzE5LjkgMCAyOTYgMHMtNDYuNyA5LjUtNjMuNiAyNi4zTDE2OCA5MC43IDExOC42IDQxLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zTDEyMi43IDEzNnoiXX0sdXdlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im1vbmV5LWJpbGwtMS13YXZlIixpY29uOls1MTIsNTEyLFsibW9uZXktYmlsbC13YXZlLWFsdCJdLCJmNTNiIiwiTTAgMTA5LjVMMCA0MTkuNmMwIDE5LjQgMTEuOCAzNy4zIDMwLjMgNDMuMyA5NCAzMCAxNTguOCA4LjQgMjIzLjMtMTMuMSA2Mi40LTIwLjggMTI0LjQtNDEuNSAyMTIuMS0xNS4zIDIyLjIgNi42IDQ2LjItOC44IDQ2LjItMzJsMC0zMTAuMWMwLTE5LjQtMTEuOC0zNy4zLTMwLjMtNDMuMy05NC0zMC0xNTguOC04LjQtMjIzLjMgMTMuMS02Mi40IDIwLjgtMTI0LjQgNDEuNS0yMTIuMSAxNS4zLTIyLjItNi42LTQ2LjMgOC44LTQ2LjMgMzJ6TTI1NiAzNjhjLTUzIDAtOTYtNTAuMS05Ni0xMTJzNDMtMTEyIDk2LTExMiA5NiA1MC4xIDk2IDExMi00MyAxMTItOTYgMTEyek0xMjcuMSA0MDUuNWMuNyA0LjQtMi44IDguMS03LjIgOC4xLTE1LjcgMC0zMi4xLTEuOC01MC02LjEtMy41LS44LTYtNC02LTcuN0w2NCAzNjBjMC00LjQgMy42LTguMSA4LTcuNSAyOC4xIDMuNSA1MC42IDI1LjIgNTUuMiA1M3pNNDQ4IDM1NC42YzAgNS00LjYgOC44LTkuNSA4LTE1LjQtMi41LTMwLjItMy45LTQ0LjQtNC4zLTQuOS0uMS04LjctNC41LTcuMi05LjIgNy4zLTIzLjcgMjgtNDEuNCA1My4yLTQ0LjYgNC40LS41IDggMy4xIDggNy41bDAgNDIuNnptLTgtMTk1LjFjLTI4LjEtMy41LTUwLjYtMjUuMi01NS4yLTUzLS43LTQuNCAyLjgtOC4xIDcuMi04LjEgMTUuNyAwIDMyLjEgMS44IDUwIDYuMSAzLjUgLjggNiA0IDYgNy43bDAgMzkuOWMwIDQuNC0zLjYgOC4xLTggNy41em0tMzIyLjEtNS44YzQuOSAuMSA4LjcgNC41IDcuMiA5LjItNy4zIDIzLjctMjggNDEuNC01My4yIDQ0LjYtNC40IC41LTgtMy4xLTgtNy41bDAtNDIuNmMwLTUgNC42LTguOCA5LjUtOCAxNS40IDIuNSAzMC4yIDMuOSA0NC40IDQuM3pNMjQwIDE4OGMtMTEgMC0yMCA5LTIwIDIwIDAgOS43IDYuOSAxNy43IDE2IDE5LjZsMCA0OC40LTQgMGMtMTEgMC0yMCA5LTIwIDIwczkgMjAgMjAgMjBsNDggMGMxMSAwIDIwLTkgMjAtMjBzLTktMjAtMjAtMjBsLTQgMCAwLTY4YzAtMTEtOS0yMC0yMC0yMGwtMTYgMHoiXX0sZ29hPXV3ZSxib2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibGFuZG1hcmsiLGljb246WzUxMiw1MTIsWzEyNzk2M10sImY2NmYiLCJNMjM4LjcgNS4xYzEwLjUtNi44IDI0LjEtNi44IDM0LjYgMGwyMjQgMTQ0YzExLjkgNy43IDE3LjQgMjIuMyAxMy40IDM1LjlzLTE2LjUgMjMtMzAuNyAyM2wtMzIgMCAwIDIwOCA1MS4yIDM4LjRjOC4xIDYgMTIuOCAxNS41IDEyLjggMjUuNiAwIDE3LjctMTQuMyAzMi0zMiAzMkwzMiA1MTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyIDAtMTAuMSA0LjctMTkuNiAxMi44LTI1LjZsNTEuMi0zOC40IDAgMCAwLTIwOC0zMiAwYy0xNC4yIDAtMjYuNy05LjQtMzAuNy0yM3MxLjUtMjguMyAxMy40LTM1LjlsMjI0LTE0NHpNMzM2IDIwOGwwIDIwOCA2NCAwIDAtMjA4LTY0IDB6TTIyNCA0MTZsNjQgMCAwLTIwOC02NCAwIDAgMjA4ek0xMTIgMjA4bDAgMjA4IDY0IDAgMC0yMDgtNjQgMHoiXX0sdm9hPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im11c2ljIixpY29uOls1MTIsNTEyLFsxMjc5MjVdLCJmMDAxIiwiTTQ2OCA3YzcuNiA2LjEgMTIgMTUuMyAxMiAyNWwwIDMwNGMwIDQ0LjItNDMgODAtOTYgODBzLTk2LTM1LjgtOTYtODAgNDMtODAgOTYtODBjMTEuMiAwIDIyIDEuNiAzMiA0LjZsMC0xMTYuNy0yMjQgNDkuOCAwIDIwNi4zYzAgNDQuMi00MyA4MC05NiA4MHMtOTYtMzUuOC05Ni04MCA0My04MCA5Ni04MGMxMS4yIDAgMjIgMS42IDMyIDQuNkwxMjggOTZjMC0xNSAxMC40LTI4IDI1LjEtMzEuMmwyODgtNjRjOS41LTIuMSAxOS40IC4yIDI3IDYuM3oiXX0seG9hPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJvb2stbWVkaWNhbCIsaWNvbjpbNDQ4LDUxMixbXSwiZjdlNiIsIk05NiA1MTJsMzIwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsMC02Ni43YzE4LjYtNi42IDMyLTI0LjQgMzItNDUuM2wwLTI4OGMwLTI2LjUtMjEuNS00OC00OC00OEw5NiAwQzQzIDAgMCA0MyAwIDk2TDAgNDE2YzAgNTMgNDMgOTYgOTYgOTZ6TTY0IDQxNmMwLTE3LjcgMTQuMy0zMiAzMi0zMmwyNTYgMCAwIDY0LTI1NiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnpNMTkyIDEyMGMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCA0MCA0MCAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtNDAgMCAwIDQwYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtNDAtNDAgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2bDQwIDAgMC00MHoiXX0scHdlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNodWZmbGUiLGljb246WzUxMiw1MTIsWzEyODI1NiwicmFuZG9tIl0sImYwNzQiLCJNNDAzLjggMzQuNGMxMi01IDI1LjctMi4yIDM0LjkgNi45bDY0IDY0YzYgNiA5LjQgMTQuMSA5LjQgMjIuNnMtMy40IDE2LjYtOS40IDIyLjZsLTY0IDY0Yy05LjIgOS4yLTIyLjkgMTEuOS0zNC45IDYuOVMzODQgMjA0LjkgMzg0IDE5MmwwLTMyLTMyIDBjLTEwLjEgMC0xOS42IDQuNy0yNS42IDEyLjhsLTMyLjQgNDMuMi00MC01My4zIDIxLjItMjguM0MyOTMuMyAxMTAuMiAzMjEuOCA5NiAzNTIgOTZsMzIgMCAwLTMyYzAtMTIuOSA3LjgtMjQuNiAxOS44LTI5LjZ6TTE1NCAyOTZsNDAgNTMuMy0yMS4yIDI4LjNDMTU0LjcgNDAxLjggMTI2LjIgNDE2IDk2IDQxNmwtNjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw2NCAwYzEwLjEgMCAxOS42LTQuNyAyNS42LTEyLjhMMTU0IDI5NnpNNDM4LjYgNDcwLjZjLTkuMiA5LjItMjIuOSAxMS45LTM0LjkgNi45UzM4NCA0NjAuOSAzODQgNDQ4bDAtMzItMzIgMGMtMzAuMiAwLTU4LjctMTQuMi03Ni44LTM4LjRMMTIxLjYgMTcyLjhjLTYtOC4xLTE1LjUtMTIuOC0yNS42LTEyLjhsLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyUzE0LjMgOTYgMzIgOTZsNjQgMGMzMC4yIDAgNTguNyAxNC4yIDc2LjggMzguNEwzMjYuNCAzMzkuMmM2IDguMSAxNS41IDEyLjggMjUuNiAxMi44bDMyIDAgMC0zMmMwLTEyLjkgNy44LTI0LjYgMTkuOC0yOS42czI1LjctMi4yIDM0LjkgNi45bDY0IDY0YzYgNiA5LjQgMTQuMSA5LjQgMjIuNnMtMy40IDE2LjYtOS40IDIyLjZsLTY0IDY0eiJdfSx5b2E9cHdlLHdvYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ1bmRlcmxpbmUiLGljb246WzM4NCw1MTIsW10sImYwY2QiLCJNMCAzMkMwIDE0LjMgMTQuMyAwIDMyIDBMOTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMlMxMTMuNyA2NCA5NiA2NGwwIDE2MGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2bDAtMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMlMyNzAuMyAwIDI4OCAwbDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsMCAxNjBjMCA4OC40LTcxLjYgMTYwLTE2MCAxNjBTMzIgMzEyLjQgMzIgMjI0TDMyIDY0QzE0LjMgNjQgMCA0OS43IDAgMzJ6TTAgNDgwYzAtMTcuNyAxNC4zLTMyIDMyLTMybDMyMCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDMyIDUxMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6Il19LGtvYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJidWlsZGluZy11c2VyIixpY29uOls2NDAsNTEyLFtdLCJlNGRhIiwiTTY0IDY0QzY0IDI4LjcgOTIuNyAwIDEyOCAwTDM4NCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMTIxLjNjLTQ2LjkgMTktODAgNjUtODAgMTE4LjcgMCAyNy43IDguOCA1My40IDIzLjggNzQuNC01MS41IDIxLTg3LjggNzEuNi04Ny44IDEzMC43IDAgMSAwIDEuOSAwIDIuOWwtMTc2IDBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDY0IDY0ek0yMDggNDAwbDAgNjQgNTMuNCAwYzcuMi0yOS40IDIxLjMtNTYuMSA0MC40LTc4LjMtNi4xLTE5LjUtMjQuMy0zMy43LTQ1LjgtMzMuNy0yNi41IDAtNDggMjEuNS00OCA0OHpNMzM5IDIyNC4zYy0xLS4yLTItLjMtMy0uM2wtMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDE2LjcgMGMyLjEtMjIuOCA4LjQtNDQuMyAxOC4zLTYzLjd6TTE3NiA5NmMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwem0xMTIgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnpNMTc2IDIyNGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwem0yNDAgODBhODAgODAgMCAxIDEgMTYwIDAgODAgODAgMCAxIDEgLTE2MCAwek0zNTIgNTEyYzAtNTMgNDMtOTYgOTYtOTZsOTYgMGM1MyAwIDk2IDQzIDk2IDk2IDAgMTcuNy0xNC4zIDMyLTMyIDMybC0yMjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6Il19LFNvYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJyb2JvdCIsaWNvbjpbNjQwLDUxMixbMTI5MzAyXSwiZjU0NCIsIk0zNTIgMGMwLTE3LjctMTQuMy0zMi0zMi0zMlMyODgtMTcuNyAyODggMGwwIDY0LTk2IDBjLTUzIDAtOTYgNDMtOTYgOTZsMCAyMjRjMCA1MyA0MyA5NiA5NiA5NmwyNTYgMGM1MyAwIDk2LTQzIDk2LTk2bDAtMjI0YzAtNTMtNDMtOTYtOTYtOTZsLTk2IDAgMC02NHpNMTYwIDM2OGMwLTEzLjMgMTAuNy0yNCAyNC0yNGwzMiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0zMiAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHptMTIwIDBjMC0xMy4zIDEwLjctMjQgMjQtMjRsMzIgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMzIgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjR6bTEyMCAwYzAtMTMuMyAxMC43LTI0IDI0LTI0bDMyIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTMyIDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0ek0yMjQgMTc2YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnptMTQ0IDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6TTY0IDIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMlMwIDIwNi4zIDAgMjI0bDAgOTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTk2em01NDQtMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgOTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyeiJdfSxmZj17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwbHVzIixpY29uOls0NDgsNTEyLFsxMDEzMyw2MTU0MywiYWRkIl0sIjJiIiwiTTI1NiA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDE2MC0xNjAgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwxNjAgMCAwIDE2MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTYwIDE2MCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xNjAgMCAwLTE2MHoiXX0sX29hPWZmLHR2PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNvcHkiLGljb246WzQ0OCw1MTIsW10sImYwYzUiLCJNMTkyIDBjLTM1LjMgMC02NCAyOC43LTY0IDY0bDAgMjU2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDE5MiAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMjAwLjZjMC0xNy40LTcuMS0zNC4xLTE5LjctNDYuMkwzNzAuNiAxNy44QzM1OC43IDYuNCAzNDIuOCAwIDMyNi4zIDBMMTkyIDB6TTY0IDEyOGMtMzUuMyAwLTY0IDI4LjctNjQgNjRMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMTkyIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0xNi02NCAwIDAgMTYtMTkyIDAgMC0yNTYgMTYgMCAwLTY0LTE2IDB6Il19LE1vYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjaGVzcy1raW5nIixpY29uOls0NDgsNTEyLFs5ODE4XSwiZjQzZiIsIk0yMjQtMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMiAzMiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0zMiAwIDAgNjQgMTUzLjggMGMyMS4xIDAgMzguMiAxNy4xIDM4LjIgMzguMiAwIDYuNC0xLjYgMTIuNy00LjcgMTguM0wzNTIgMzg0IDQwOC4yIDQ1NC4zYzUgNi4zIDcuOCAxNC4xIDcuOCAyMi4yIDAgMTkuNi0xNS45IDM1LjUtMzUuNSAzNS41TDY3LjUgNTEyYy0xOS42IDAtMzUuNS0xNS45LTM1LjUtMzUuNSAwLTguMSAyLjctMTUuOSA3LjgtMjIuMkw5NiAzODQgNC43IDIxNi42QzEuNiAyMTAuOSAwIDIwNC42IDAgMTk4LjIgMCAxNzcuMSAxNy4xIDE2MCAzOC4yIDE2MGwxNTMuOCAwIDAtNjQtMzIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwzMiAwIDAtMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6Il19LHpvYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJob3VzZS1mbG9vZC13YXRlciIsaWNvbjpbNjQwLDUxMixbXSwiZTUwZSIsIk00OTYgMjA4bDQuNSAwYzE1LjIgMCAyNy41LTEyLjMgMjcuNS0yNy41IDAtNy45LTMuNC0xNS41LTkuNC0yMC43TDM0OCAxMC41QzM0MC4zIDMuNyAzMzAuMyAwIDMyMCAwcy0yMC4zIDMuNy0yOCAxMC41TDEyMS40IDE1OS44Yy02IDUuMi05LjQgMTIuOC05LjQgMjAuNyAwIDE1LjIgMTIuMyAyNy41IDI3LjUgMjcuNWw0LjUgMCAwIDk0LjRjMjAuMy05LjQgNDIuMS0xNC4yIDY0LTE0LjQgMzMuMS0uMiA2Ni4zIDEwLjIgOTQuNCAzMS40IDIyLjEgMTYuNiAyOS4xIDE2LjYgNTEuMiAwIDI3LjUtMjAuNyA1OS45LTMxLjIgOTIuNC0zMS40IDE2LjktLjEgMzMuOCAyLjYgNTAgOGwwLTg4em0tMjI0LThjMC0xMy4zIDEwLjctMjQgMjQtMjRsNDggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDQ4YzAgMTMuMy0xMC43IDI0LTI0IDI0bC00OCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNGwwLTQ4ek00NzQuNiA0MTIuMWMxOSAxNC40IDQxLjkgMjguMiA2Ny4yIDMzLjMgMjYuNSA1LjQgNTQuMyAuOCA4MC43LTE5LjEgMTAuNi04IDEyLjctMjMgNC43LTMzLjZzLTIzLTEyLjctMzMuNi00LjdjLTE0LjkgMTEuMi0yOC42IDEzLjEtNDIuMyAxMC4zLTE0LjktMy0zMC45LTExLjktNDcuOC0yNC42LTM4LjQtMjktOTAuNS0yOS0xMjkgMC0yNCAxOC4xLTQwLjcgMjYuMy01NC41IDI2LjNzLTMwLjUtOC4yLTU0LjUtMjYuM2MtMzguNC0yOS05MC41LTI5LTEyOSAwLTIxLjYgMTYuMy00MS4zIDI1LjgtNTguOSAyNS43LTkuNi0uMS0xOS45LTMtMzEuMi0xMS41LTEwLjYtOC0yNS42LTUuOS0zMy42IDQuN1M3IDQxOC4zIDE3LjYgNDI2LjNjMTkuMSAxNC40IDM5LjQgMjEgNTkuOCAyMS4xIDMzLjkgLjIgNjQuMy0xNy40IDg4LjEtMzUuMyAyMS4zLTE2LjEgNDkuOS0xNi4xIDcxLjIgMCAyNC4yIDE4LjMgNTIuMyAzNS45IDgzLjQgMzUuOXM1OS4xLTE3LjcgODMuNC0zNS45YzIxLjMtMTYuMSA0OS45LTE2LjEgNzEuMiAwem0tNzEuMiA5NmMyMS4zLTE2LjEgNDkuOS0xNi4xIDcxLjIgMCAxOSAxNC40IDQxLjkgMjguMiA2Ny4yIDMzLjMgMjYuNSA1LjQgNTQuMyAuOCA4MC43LTE5LjEgMTAuNi04IDEyLjctMjMgNC43LTMzLjZzLTIzLTEyLjctMzMuNi00LjdjLTE0LjkgMTEuMi0yOC42IDEzLjEtNDIuMyAxMC4zLTE0LjktMy0zMC45LTExLjktNDcuOC0yNC42LTM4LjQtMjktOTAuNS0yOS0xMjkgMC0yNCAxOC4xLTQwLjcgMjYuMy01NC41IDI2LjNzLTMwLjUtOC4yLTU0LjUtMjYuM2MtMzguNC0yOS05MC41LTI5LTEyOSAwLTIxLjYgMTYuMy00MS4zIDI1LjgtNTguOSAyNS43LTkuNi0uMS0xOS45LTMtMzEuMi0xMS41LTEwLjYtOC0yNS42LTUuOS0zMy42IDQuN1M3IDUxNC4zIDE3LjYgNTIyLjNjMTkuMSAxNC40IDM5LjQgMjEgNTkuOCAyMS4xIDMzLjkgLjIgNjQuMy0xNy40IDg4LjEtMzUuMyAyMS4zLTE2LjEgNDkuOS0xNi4xIDcxLjIgMCAyNC4yIDE4LjMgNTIuMyAzNS45IDgzLjQgMzUuOXM1OS4xLTE3LjcgODMuNC0zNS45eiJdfSxDb2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYml0Y29pbi1zaWduIixpY29uOlszMjAsNTEyLFtdLCJlMGI0IiwiTTY0IDI0QzY0IDEwLjcgNzQuNyAwIDg4IDBzMjQgMTAuNyAyNCAyNGwwIDQwIDMyIDAgMC00MGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0bDAgNDEuMWM1NC4zIDcuOCA5NiA1NC40IDk2IDExMC45IDAgMjQuMi03LjcgNDYuNi0yMC43IDY0LjkgMzEuNyAxOS44IDUyLjcgNTUgNTIuNyA5NS4xIDAgNjEuOS01MC4xIDExMi0xMTIgMTEybC0xNiAwIDAgNDBjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC00MC0zMiAwIDAgNDBjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC00MC0yMi4zIDBDMTguNyA0NDggMCA0MjkuMyAwIDQwNi4zTDAgMTAxLjZDMCA4MC44IDE2LjggNjQgMzcuNiA2NEw2NCA2NCA2NCAyNHptMCAyMDBsMTEyIDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhzLTIxLjUtNDgtNDgtNDhsLTExMiAwIDAgOTZ6bTExMiA2NGwtMTEyIDAgMCA5NiAxNDQgMGMyNi41IDAgNDgtMjEuNSA0OC00OHMtMjEuNS00OC00OC00OGwtMzIgMHoiXX0sVG9hPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJveCIsaWNvbjpbNDQ4LDUxMixbMTI4MjMwXSwiZjQ2NiIsIk0zNjkuNCAxMjhsLTM0LjMtNDgtMjIyLjEgMC0zNC4zIDQ4IDI5MC43IDB6TTAgMTQ4LjVjMC0xMy4zIDQuMi0yNi4zIDExLjktMzcuMkw2MC45IDQyLjhDNzIuOSAyNiA5Mi4zIDE2IDExMi45IDE2bDIyMi4xIDBjMjAuNyAwIDQwLjEgMTAgNTIuMSAyNi44bDQ4LjkgNjguNWM3LjggMTAuOSAxMS45IDIzLjkgMTEuOSAzNy4yTDQ0OCA0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDE0OC41eiJdfSxod2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic3F1YXJlLXBsdXMiLGljb246WzQ0OCw1MTIsWzYxODQ2LCJwbHVzLXNxdWFyZSJdLCJmMGZlIiwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6TTIwMCAzNDRsMC02NC02NCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDY0IDAgMC02NGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0bDAgNjQgNjQgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtNjQgMCAwIDY0YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0eiJdfSwkb2E9aHdlLGZ3ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJhcnJvd3MtbGVmdC1yaWdodCIsaWNvbjpbNTc2LDUxMixbImFycm93cy1oIl0sImYwN2UiLCJNNDcwLjYgMzc0LjZsOTYtOTZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTk2LTk2Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2w0MS40IDQxLjQtMzU3LjUgMCA0MS40LTQxLjRjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTk2IDk2Yy02IDYtOS40IDE0LjEtOS40IDIyLjZzMy40IDE2LjYgOS40IDIyLjZsOTYgOTZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtNDEuNC00MS40IDM1Ny41IDAtNDEuNCA0MS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAweiJdfSxEb2E9ZndlLExvYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmYW4iLGljb246WzUxMiw1MTIsW10sImY4NjMiLCJNMTYwIDE0NGMwLTc5LjUgNjQuNS0xNDQgMTQ0LTE0NCA4LjggMCAxNiA3LjIgMTYgMTZsMCAxNTIuMmMxNS01LjMgMzEuMi04LjIgNDgtOC4yIDc5LjUgMCAxNDQgNjQuNSAxNDQgMTQ0IDAgOC44LTcuMiAxNi0xNiAxNmwtMTUyLjIgMGM1LjMgMTUgOC4yIDMxLjIgOC4yIDQ4IDAgNzkuNS02NC41IDE0NC0xNDQgMTQ0LTguOCAwLTE2LTcuMi0xNi0xNmwwLTE1Mi4yYy0xNSA1LjMtMzEuMiA4LjItNDggOC4yLTc5LjUgMC0xNDQtNjQuNS0xNDQtMTQ0IDAtOC44IDcuMi0xNiAxNi0xNmwxNTIuMiAwYy01LjMtMTUtOC4yLTMxLjItOC4yLTQ4em05NiAxNDRhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0eiJdfSxFb2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY3JvdyIsaWNvbjpbNjQwLDUxMixbXSwiZjUyMCIsIk00NTYuNSAwYy00OC42IDAtODggMzkuNC04OCA4OGwwIDM2LTM1NS4yIDI2Ni40Qy0uOCA0MDEtMy43IDQyMSA2LjkgNDM1LjJzMzAuNiAxNyA0NC44IDYuNGw3Ni44LTU3LjYgMTMxLjMgMCA0Ni42IDExMy4xIDEgMi4yYzUuNyAxMC43IDE4LjggMTUuNSAzMC4zIDEwLjhzMTcuMy0xNy4zIDEzLjktMjlsLS44LTIuMy0zOS4xLTk0LjkgNDAuOSAwYzEuMSAwIDIuMiAwIDMuMiAwbDQ2LjYgMTEzLjIgMSAyLjJjNS43IDEwLjcgMTguOCAxNS41IDMwLjMgMTAuOHMxNy4zLTE3LjMgMTMuOS0yOWwtLjgtMi4zLTQyLTEwMkM0ODUuMyAzNTQuMSA1NDQuNSAyODAgNTQ0LjUgMTkybDAtNzIgODAuNS0yMC4xYzguNi0yLjEgMTMuOC0xMC44IDExLjYtMTkuNC03LjEtMjguNS0zMi43LTQ4LjUtNjIuMS00OC41bC01MC4xIDBDNTA4LjIgMTIuNSA0ODMuOCAwIDQ1Ni41IDB6bTAgNjRhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4eiJdfSxQb2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmlsZS1jaXJjbGUtY2hlY2siLGljb246WzU3Niw1MTIsW10sImU1YTAiLCJNOTYgMEM2MC43IDAgMzIgMjguNyAzMiA2NGwwIDM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwxODAgMGMtMjIuNy0zMS41LTM2LTcwLjItMzYtMTEyIDAtMTAwLjYgNzcuNC0xODMuMiAxNzYtMTkxLjNsMC0zOC4xYzAtMTctNi43LTMzLjMtMTguNy00NS4zTDI5MC43IDE4LjdDMjc4LjcgNi43IDI2Mi41IDAgMjQ1LjUgMEw5NiAwek0zNTcuNSAxNzZMMjY0IDE3NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRMMjQwIDU4LjUgMzU3LjUgMTc2ek01NzYgNDAwYTE0NCAxNDQgMCAxIDAgLTI4OCAwIDE0NCAxNDQgMCAxIDAgMjg4IDB6bS04Ni42LTYwLjljNy4xIDUuMiA4LjcgMTUuMiAzLjUgMjIuM2wtNjQgODhjLTIuOCAzLjgtNyA2LjItMTEuNyA2LjVzLTkuMy0xLjMtMTIuNi00LjZsLTQwLTQwYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBsMjYuOCAyNi44IDUzLTcyLjljNS4yLTcuMSAxNS4yLTguNyAyMi40LTMuNXoiXX0sY1M9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibGluay1zbGFzaCIsaWNvbjpbNTc2LDUxMixbImNoYWluLWJyb2tlbiIsImNoYWluLXNsYXNoIiwidW5saW5rIl0sImYxMjciLCJNNDEtMjQuOWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBTLTIuMy0uMyA3IDkuMWw1MjggNTI4YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtMTIyLTEyMmM0LjItMy40IDguMy03LjEgMTIuMS0xMC45bDcxLjEtNzEuMWMyOS4zLTI5LjMgNDUuOC02OS4xIDQ1LjgtMTEwLjYgMC04Ni40LTcwLTE1Ni41LTE1Ni41LTE1Ni41LTM3LjMgMC03My4xIDEzLjMtMTAxLjMgMzcuMiAyMC4zIDEwLjEgMzguNyAyMy41IDU0LjUgMzkuNSAxNC4xLTguMyAzMC4yLTEyLjcgNDYuOC0xMi43IDUxLjEgMCA5Mi41IDQxLjQgOTIuNSA5Mi41IDAgMjQuNS05LjcgNDgtMjcuMSA2NS40bC03MS4xIDcxLjFjLTMuOSAzLjktOC4xIDcuNC0xMi42IDEwLjVsLTQ3LjUtNDcuNWMxNi41LS45IDI5LjctMTQuNCAzMC4yLTMxLjEgMC0xLjMgMC0yLjYgMC0zLjkgMC04Ni4zLTY5LjktMTU2LjktMTU2LjUtMTU2LjktMTkuMiAwLTM3LjkgMy41LTU1LjUgMTAuMkw0MS0yNC45ek0yMjUuOSAxNjBjLjYgMCAxLjEgMCAxLjcgMCAxNS4xIDAgMjkuNSAzLjcgNDIuMSAxMC4yIDEuOCAxLjIgMy42IDIuMyA1LjUgMy4xIDI2LjggMTYuMyA0NC44IDQ1LjkgNDQuOCA3OS42IDAgLjQgMCAuOCAwIDEuMkwyMjUuOSAxNjB6TTM0Ni4yIDQxNkwxOTIgMjYxLjhjMS4yIDg0LjYgNjkuNiAxNTIuOSAxNTQuMSAxNTQuMXpNMTM5LjcgMjA5LjVsLTQ1LjMtNDUuMy00OC42IDQ4LjZjLTI5LjMgMjkuMy00NS44IDY5LjEtNDUuOCAxMTAuNiAwIDg2LjQgNzAgMTU2LjUgMTU2LjUgMTU2LjUgMzcuMiAwIDczLjEtMTMuMyAxMDEuMy0zNy4yLTIwLjMtMTAuMS0zOC44LTIzLjUtNTQuNi0zOS41LTE0IDguMi0zMC4xIDEyLjYtNDYuNyAxMi42LTUxLjEgMC05Mi41LTQxLjQtOTIuNS05Mi41IDAtMjQuNSA5LjctNDggMjcuMS02NS40bDQ4LjYtNDguNnoiXX0sSW9hPWNTLEFvYT1jUyxOb2E9Y1MsZFM9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYXJyb3ctcm90YXRlLXJpZ2h0IixpY29uOls1MTIsNTEyLFs4NjM1LCJhcnJvdy1yaWdodC1yb3RhdGUiLCJhcnJvdy1yb3RhdGUtZm9yd2FyZCIsInJlZG8iXSwiZjAxZSIsIk00MzYuNyA3NC43TDQ0OCA4NS40IDQ0OCAzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgMTI4YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0xMjggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw0Ny45IDAtNy42LTcuMmMtLjItLjItLjQtLjQtLjYtLjYtNzUtNzUtMTk2LjUtNzUtMjcxLjUgMHMtNzUgMTk2LjUgMCAyNzEuNSAxOTYuNSA3NSAyNzEuNSAwYzguMi04LjIgMTUuNS0xNi45IDIxLjktMjYuMSAxMC4xLTE0LjUgMzAuMS0xOCA0NC42LTcuOXMxOCAzMC4xIDcuOSA0NC42Yy04LjUgMTIuMi0xOC4yIDIzLjgtMjkuMSAzNC43LTEwMCAxMDAtMjYyLjEgMTAwLTM2MiAwUy0yNSAxNzUgNzUgNzVjOTkuOS05OS45IDI2MS43LTEwMCAzNjEuNy0uM3oiXX0sUm9hPWRTLE9vYT1kUyxGb2E9ZFMsbXdlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBlbi1jbGlwIixpY29uOls1MTIsNTEyLFsicGVuLWFsdCJdLCJmMzA1IiwiTTQwNCAwYzE5LjIgMCAzNy42IDcuNiA1MS4xIDIxLjJsMzUuNyAzNS43QzUwNC40IDcwLjQgNTEyIDg4LjggNTEyIDEwOHMtNy42IDM3LjYtMjEuMiA1MS4xTDQ0NS45IDIwNCAzMDggNjYuMSAzNTIuOSAyMS4yQzM2Ni40IDcuNiAzODQuOCAwIDQwNCAwek0yNzQuMSAxMDBsMCAwIDEzNy45IDEzNy45LTIxNS4xIDIxNS4xYy0xMC43IDEwLjctMjQuMSAxOC41LTM4LjcgMjIuNkwzMC40IDUxMS4xYy04LjMgMi4zLTE3LjMgMC0yMy40LTYuMnMtOC41LTE1LjEtNi4yLTIzLjRMMzYuNCAzNTMuOGM0LjEtMTQuNiAxMS44LTI3LjkgMjIuNi0zOC43TDI0MC4xIDEzMy45IDIyMyAxMTYuOWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMODkgMjE3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45TDE1NS4xIDgyLjljMjguMS0yOC4xIDczLjctMjguMSAxMDEuOCAwTDI3NC4xIDEwMHoiXX0sQm9hPW13ZSxIb2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZG9vci1jbG9zZWQiLGljb246WzQ0OCw1MTIsWzEyODY4Ml0sImY1MmEiLCJNMzIgNjRDMzIgMjguNyA2MC43IDAgOTYgMEwzNTIgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDM4NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkwzMiA1MTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJMMzIgNjR6TTMyMCAyODhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0eiJdfSxXb2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYXJyb3ctZG93bi13aWRlLXNob3J0IixpY29uOls1NzYsNTEyLFsic29ydC1hbW91bnQtYXNjIiwic29ydC1hbW91bnQtZG93biJdLCJmMTYwIiwiTTI0Ni42IDM3NC42bC05NiA5NmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBsLTk2LTk2Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwTDk2IDM3MC43IDk2IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCAzMDYuNyA0MS40LTQxLjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBzMTIuNSAzMi44IDAgNDUuM3pNMzIwIDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwzMiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0zMiAwem0wLTEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw5NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC05NiAwem0wLTEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwxNjAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMTYwIDB6bTAtMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDIyNCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDMyMCA5NnoiXX0scW9hPVdvZSxqb2E9V29lLFZvYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjYXJldC1kb3duIixpY29uOlszMjAsNTEyLFtdLCJmMGQ3IiwiTTE0MC4zIDM3Ni44YzEyLjYgMTAuMiAzMS4xIDkuNSA0Mi44LTIuMmwxMjgtMTI4YzkuMi05LjIgMTEuOS0yMi45IDYuOS0zNC45UzMwMS40IDE5MiAyODguNSAxOTJsLTI1NiAwYy0xMi45IDAtMjQuNiA3LjgtMjkuNiAxOS44Uy43IDIzNy41IDkuOSAyNDYuNmwxMjggMTI4IDIuNCAyLjJ6Il19LFVvYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJrIixpY29uOlszMjAsNTEyLFsxMDddLCI0YiIsIk0zMTEgODYuM2MxMi4zLTEyLjcgMTItMzIuOS0uNy00NS4ycy0zMi45LTEyLTQ1LjIgLjdDMTQzLjQgMTY3LjIgNzYuNCAyMzYuMyA2NCAyNDlMNjQgNjRjMC0xNy43LTE0LjMtMzItMzItMzJTMCA0Ni4zIDAgNjRMMCA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTEwNyA2NC43LTY2LjcgMTMzIDE5MmMxMC4xIDE0LjUgMzAgMTguMSA0NC41IDguMXMxOC4xLTMwIDguMS00NC41TDE3NC4xIDIyNy40IDMxMSA4Ni4zeiJdfSxnd2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2hlY2stdG8tc2xvdCIsaWNvbjpbNTc2LDUxMixbInZvdGUteWVhIl0sImY3NzIiLCJNNTUyIDI4OGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDEwNGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgMzEyYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCAxMDRjMCA4LjggNy4yIDE2IDE2IDE2bDQ0OCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTEwNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHpNNDE2IDMyYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjI0YzAgMzUuMy0yOC43IDY0LTY0IDY0bC0yNTYgMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMOTYgOTZjMC0zNS4zIDI4LjctNjQgNjQtNjRsMjU2IDB6bS0zNy4xIDg0LjZjLTEwLjctNy44LTI1LjctNS40LTMzLjUgNS4zbC04NS42IDExNy43LTI2LjUtMjcuNGMtOS4yLTkuNS0yNC40LTkuOC0zMy45LS42LTkuNSA5LjItOS44IDI0LjQtLjYgMzMuOWw0Ni40IDQ4YzQuOSA1LjEgMTEuOCA3LjggMTguOSA3LjNzMTMuNi00LjEgMTcuOC05LjhMMzg0LjIgMTUwLjFjNy44LTEwLjcgNS40LTI1LjctNS4zLTMzLjV6Il19LFdvYT1nd2UsR29hPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZpc2gtZmlucyIsaWNvbjpbNTc2LDUxMixbXSwiZTRmMiIsIk0yNzUuMiAzOC40Yy0xMC42LTgtMjUtOC41LTM2LjMtMS41UzIyMiA1Ny4zIDIyNC42IDcwLjNsOS43IDQ4LjZjLTE5LjQgOS0zNi45IDE5LjktNTIuNCAzMS41LTE1LjMgMTEuNS0yOSAyMy45LTQwLjcgMzYuM0w0OC4xIDEzMi40Yy0xMi41LTcuMy0yOC40LTUuMy0zOC43IDQuOXMtMTIuNCAyNi01LjMgMzguNkw1MCAyNTYgNC4yIDMzNi4xYy03LjIgMTIuNi01IDI4LjQgNS4zIDM4LjZzMjYuMSAxMi4yIDM4LjcgNC45bDkzLjEtNTQuM2MxMS44IDEyLjMgMjUuNCAyNC44IDQwLjcgMzYuMyAxNS41IDExLjYgMzMgMjIuNSA1Mi40IDMxLjVsLTkuNyA0OC42Yy0yLjYgMTMgMy4xIDI2LjMgMTQuMyAzMy4zczI1LjYgNi41IDM2LjMtMS41bDc3LjYtNTguMmM1NC45LTQgMTAxLjUtMjcgMTM3LjItNTMuOCAzOS4yLTI5LjQgNjcuMi02NC43IDgxLjYtODkuNSA1LjgtOS45IDUuOC0yMi4yIDAtMzIuMS0xNC40LTI0LjgtNDIuNS02MC4xLTgxLjYtODkuNS0zNS44LTI2LjgtODIuMy00OS44LTEzNy4yLTUzLjhMMjc1LjIgMzguNHpNMzg0IDI1NmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAweiJdfSxLb2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY29tcHJlc3MiLGljb246WzQ0OCw1MTIsW10sImYwNjYiLCJNMTYwIDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzk2IDQ2LjMgOTYgNjRsMCA2NC02NCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDk2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC05NnpNMzIgMzIwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDY0IDAgMCA2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtOTZjMC0xNy43LTE0LjMtMzItMzItMzJsLTk2IDB6TTM1MiA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDk2YzAgMTcuNyAxNC4zIDMyIDMyIDMybDk2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTY0IDAgMC02NHpNMzIwIDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCA5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtNjQgNjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtOTYgMHoiXX0sYndlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImFycm93LXVwLWEteiIsaWNvbjpbNTEyLDUxMixbInNvcnQtYWxwaGEtdXAiXSwiZjE1ZSIsIk00MTIuNiA0OS43QzQwNy4yIDM4LjggMzk2LjEgMzIgMzg0IDMycy0yMy4yIDYuOC0yOC42IDE3LjdjLTUwLjcgMTAxLjMtNzcuMyAxNTQuNy04MCAxNjAtNy45IDE1LjgtMS41IDM1IDE0LjMgNDIuOXMzNSAxLjUgNDIuOS0xNC4zbDcuMi0xNC4zIDg4LjQgMCA3LjIgMTQuM2M3LjkgMTUuOCAyNy4xIDIyLjIgNDIuOSAxNC4zczIyLjItMjcuMSAxNC4zLTQyLjljLTIuNy01LjMtMjkuMy01OC43LTgwLTE2MHpNMzg0IDEzNS42bDIwLjIgNDAuNC00MC40IDAgMjAuMi00MC40ek0yODggMzIwYzAgMTcuNyAxNC4zIDMyIDMyIDMybDUwLjcgMC03My40IDczLjRjLTkuMiA5LjItMTEuOSAyMi45LTYuOSAzNC45UzMwNy4xIDQ4MCAzMjAgNDgwbDEyOCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC01MC43IDAgNzMuNC03My40YzkuMi05LjIgMTEuOS0yMi45IDYuOS0zNC45UzQ2MC45IDI4OCA0NDggMjg4bC0xMjggMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTE1MC42IDQxLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC04MCA4MGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEw5NiAxNDEuMyA5NiA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTMwNi43IDI1LjQgMjUuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC04MC04MHoiXX0sWW9hPWJ3ZSxab2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidXNlci1ncmFkdWF0ZSIsaWNvbjpbNDQ4LDUxMixbXSwiZjUwMSIsIk0yNDEuMy0xM2MtMTEuNC0yLjMtMjMuMS0yLjMtMzQuNSAwTDE5LjMgMjQuNUM4LjEgMjYuNyAwIDM2LjYgMCA0OCAwIDU4LjMgNi41IDY3LjMgMTYgNzAuNkwxNiAxNDQgLjMgMjIyLjZjLS4yIC45LS4zIDEuOS0uMyAyLjkgMCA4IDYuNSAxNC42IDE0LjYgMTQuNmwzNC45IDBjOCAwIDE0LjYtNi41IDE0LjYtMTQuNiAwLTEtLjEtMS45LS4zLTIuOUw0OCAxNDQgNDggNzcuMyA5NiA4Ni45IDk2IDE0NGMwIDcwLjcgNTcuMyAxMjggMTI4IDEyOHMxMjgtNTcuMyAxMjgtMTI4bDAtNTcuMSA3Ni43LTE1LjNDNDM5LjkgNjkuMyA0NDggNTkuNCA0NDggNDhzLTguMS0yMS4zLTE5LjMtMjMuNUwyNDEuMy0xM3pNMjI0IDIyNGMtNDQuMiAwLTgwLTM1LjgtODAtODBsMTYwIDBjMCA0NC4yLTM1LjggODAtODAgODB6TTEyMC4xIDMyMC4xQzU4LjcgMzQ4LjMgMTYgNDEwLjMgMTYgNDgyLjMgMTYgNDk4LjcgMjkuMyA1MTIgNDUuNyA1MTJsMTU0LjMgMCAwLTE0Ni01Ny40LTQzYy02LjUtNC45LTE1LjItNi4yLTIyLjYtMi44ek0yNDggNTEybDE1NC4zIDBjMTYuNCAwIDI5LjctMTMuMyAyOS43LTI5LjcgMC03Mi00Mi43LTEzNC0xMDQuMS0xNjIuMS03LjQtMy40LTE2LjEtMi4xLTIyLjYgMi44bC01Ny40IDQzIDAgMTQ2eiJdfSxYb2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmlsZS1jb2RlIixpY29uOlszODQsNTEyLFtdLCJmMWM5IiwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwTDIxMy41IDBjMTcgMCAzMy4zIDYuNyA0NS4zIDE4LjdMMzY1LjMgMTI1LjNjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM0wzODQgNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA2NHptMjA4LTUuNWwwIDkzLjVjMCAxMy4zIDEwLjcgMjQgMjQgMjRMMzI1LjUgMTc2IDIwOCA1OC41ek0xNTQuMiAyOTUuNmM4LjYtMTAuMSA3LjUtMjUuMi0yLjYtMzMuOHMtMjUuMi03LjUtMzMuOCAyLjZsLTQ4IDU2Yy03LjcgOS03LjcgMjIuMiAwIDMxLjJsNDggNTZjOC42IDEwLjEgMjMuOCAxMS4yIDMzLjggMi42czExLjItMjMuOCAyLjYtMzMuOGwtMzQuNi00MC40IDM0LjYtNDAuNHptMTEyLTMxLjJjLTguNi0xMC4xLTIzLjgtMTEuMi0zMy44LTIuNnMtMTEuMiAyMy44LTIuNiAzMy44bDM0LjYgNDAuNC0zNC42IDQwLjRjLTguNiAxMC4xLTcuNSAyNS4yIDIuNiAzMy44czI1LjIgNy41IDMzLjgtMi42bDQ4LTU2YzcuNy05IDcuNy0yMi4yIDAtMzEuMmwtNDgtNTZ6Il19LFFvYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzb2FwIixpY29uOls1MTIsNTEyLFsxMjk1MzJdLCJlMDZlIiwiTTIwOC0zMmE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6TTMyMCA5NmE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpNMzUyIDBhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNOTYgMTYwbDExMiAwYzAgMjMuOCA3LjQgNDUuOSAyMC4xIDY0TDE2MCAyMjRjLTUzIDAtOTYgNDMtOTYgOTZzNDMgOTYgOTYgOTZsMTkyIDBjNTMgMCA5Ni00MyA5Ni05NiAwLTM1LjEtMTguOS02NS45LTQ3LTgyLjYgMTktMTkuOCAzMC43LTQ2LjYgMzEtNzYuMSA0NS40IDcuNiA4MCA0Ny4xIDgwIDk0LjdsMCAxMjhjMCA1My00MyA5Ni05NiA5Nkw5NiA0ODBjLTUzIDAtOTYtNDMtOTYtOTZMMCAyNTZjMC01MyA0My05NiA5Ni05NnptNjQgMTEybDE5MiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4bC0xOTIgMGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OHoiXX0sSm9hPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InJlY3ljbGUiLGljb246WzUxMiw1MTIsWzk4NDIsOTg1MCw5ODUxXSwiZjFiOCIsIk0xNTIuMyA2MEMxOTguNS0yMCAzMTQtMjAgMzYwLjIgNjBsMzcuMyA2NC42IDI3LjctMTZjOC40LTQuOSAxOC45LTQuMiAyNi42IDEuN3MxMS4xIDE1LjkgOC42IDI1LjNMNDM2LjkgMjIzYy0zLjQgMTIuOC0xNi42IDIwLjQtMjkuNCAxN2wtODcuNC0yMy40Yy05LjQtMi41LTE2LjMtMTAuNC0xNy42LTIwczMuNC0xOS4xIDExLjgtMjMuOWwyNy43LTE2LTM3LjMtNjQuNmMtMjEuNi0zNy4zLTc1LjQtMzcuMy05NyAwbC01LjMgOS4xYy04LjggMTUuMy0yOC40IDIwLjUtNDMuNyAxMS43UzEzOC4yIDg0LjUgMTQ3IDY5LjFsNS4zLTkuMXpNNDQ5LjcgMjc5LjFjMTUuMy04LjggMzQuOS0zLjYgNDMuNyAxMS43bDUuMyA5LjFjNDYuMiA4MC0xMS41IDE4MC0xMDMuOSAxODBsLTc0LjYgMCAwIDMyYzAgOS43LTUuOCAxOC41LTE0LjggMjIuMnMtMTkuMyAxLjctMjYuMi01LjJsLTY0LTY0Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWw2NC02NGM2LjktNi45IDE3LjItOC45IDI2LjItNS4yczE0LjggMTIuNSAxNC44IDIyLjJsMCAzMiA3NC42IDBjNDMuMSAwIDcwLjEtNDYuNyA0OC41LTg0bC01LjMtOS4xYy04LjgtMTUuMy0zLjYtMzQuOSAxMS43LTQzLjd6TTUxIDIzNS40bC0yNy43LTE2Yy04LjQtNC45LTEzLjEtMTQuMy0xMS44LTIzLjlzOC4yLTE3LjUgMTcuNi0yMEwxMTYuNSAxNTJjMTIuOC0zLjQgMjYgNC4yIDI5LjQgMTdsMjMuNCA4Ny40YzIuNSA5LjQtLjkgMTkuMy04LjYgMjUuM3MtMTguMiA2LjYtMjYuNiAxLjdsLTI3LjctMTYtMzcuMyA2NC42Yy0yMS42IDM3LjMgNS40IDg0IDQ4LjUgODRsMTAuNiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0xMC42IDBDMjUuMyA0ODAtMzIuNCAzODAgMTMuOCAzMDBMNTEgMjM1LjR6Il19LHZ3ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmYWNlLWdyaW4td2luayIsaWNvbjpbNTEyLDUxMixbImdyaW4td2luayJdLCJmNThjIiwiTTI1NiA1MTJhMjU2IDI1NiAwIDEgMCAwLTUxMiAyNTYgMjU2IDAgMSAwIDAgNTEyek0zODYuNyAzMDguOWMxMS45LTMuNyAyMy45IDYuMyAxOS42IDE4LjEtMjIuNCA2MS4zLTgxLjMgMTA1LjEtMTUwLjMgMTA1LjFTMTI4LjEgMzg4LjIgMTA1LjcgMzI2LjljLTQuMy0xMS44IDcuNy0yMS44IDE5LjYtMTguMSAzOS4yIDEyLjIgODMuNyAxOS4xIDEzMC43IDE5LjFzOTEuNS02LjkgMTMwLjctMTkuMXpNMzI4IDE5NmMtMTEgMC0yMCA5LTIwIDIwcy05IDIwLTIwIDIwLTIwLTktMjAtMjBjMC0zMy4xIDI2LjktNjAgNjAtNjBsMTYgMGMzMy4xIDAgNjAgMjYuOSA2MCA2MCAwIDExLTkgMjAtMjAgMjBzLTIwLTktMjAtMjAtOS0yMC0yMC0yMGwtMTYgMHpNMTc2IDE3NmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6Il19LGVuYT12d2UsR29lPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6IndhdGVyLWxhZGRlciIsaWNvbjpbNjQwLDUxMixbImxhZGRlci13YXRlciIsInN3aW1taW5nLXBvb2wiXSwiZjVjNSIsIk0zNzQuNSA0MDUuN2MzOC40LTI5IDkwLjUtMjkgMTI5IDAgMTYuOSAxMi43IDMyLjkgMjEuNSA0Ny44IDI0LjYgMTMuNyAyLjggMjcuNCAuOSA0Mi4zLTEwLjMgMTAuNi04IDI1LjYtNS45IDMzLjYgNC43czUuOCAyNS43LTQuOCAzMy42Yy0yNi40IDE5LjktNTQuMiAyNC40LTgwLjcgMTkuMS0yNS4zLTUuMS00OC4xLTE4LjktNjcuMi0zMy4zLTIxLjMtMTYuMS00OS45LTE2LjEtNzEuMiAwLTI0LjIgMTguMy01Mi4zIDM1LjktODMuNCAzNS45cy01OS4xLTE3LjctODMuMy0zNS45Yy0yMS4zLTE2LjEtNDkuOS0xNi4xLTcxLjIgMC0yMy44IDE3LjktNTQuMSAzNS41LTg4LjEgMzUuMy0yMC40LS4xLTQwLjctNi43LTU5LjgtMjEuMS0xMC42LTgtMTIuNy0yMy00LjctMzMuNnMyMy0xMi43IDMzLjYtNC43YzExLjMgOC41IDIxLjYgMTEuNCAzMS4yIDExLjUgMTcuNiAuMSAzNy4zLTkuNCA1OC45LTI1LjcgMzguNC0yOSA5MC42LTI5IDEyOSAwIDI0IDE4LjEgNDAuNyAyNi4zIDU0LjUgMjYuM3MzMC41LTguMiA1NC41LTI2LjN6TTUxMS44IDMyYzQ4LjMgMCA4OSAzNiA5NSA4My45bDEgOC4yYzIuMiAxNy41LTEwLjIgMzMuNS0yNy44IDM1LjdzLTMzLjUtMTAuMi0zNS43LTI3LjhsLTEtOC4yYy0yLTE1LjktMTUuNS0yNy44LTMxLjUtMjcuOC0xNy41IDAtMzEuOCAxNC4yLTMxLjggMzEuOGwwIDIxMS44Yy0yMy4xLTUuMS00NC45LTQuNC02NC0uNGwwLTUxLjItMTkyIDAgMCA0OC43Yy01LjMtLjUtMTAuNy0uOC0xNi0uNy0xNi4yIC4xLTMyLjQgMi43LTQ4IDhsMC0yMTYuMmMwLTUyLjkgNDIuOS05NS44IDk1LjctOTUuOCA0OC4zIDAgODkgMzYgOTUgODMuOWwxIDguMmMyLjIgMTcuNS0xMC4yIDMzLjUtMjcuOCAzNS43cy0zMy41LTEwLjItMzUuNy0yNy44bC0xLTguMmMtMi0xNS45LTE1LjUtMjcuOC0zMS41LTI3LjgtMTcuNSAwLTMxLjcgMTQuMi0zMS43IDMxLjhsMCA5Ni4yIDE5MiAwIDAtOTYuMkM0MTYgNzQuOSA0NTguOSAzMiA1MTEuOCAzMnoiXX0sdG5hPUdvZSxhbmE9R29lLHNuYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJnZW1pbmkiLGljb246WzQ0OCw1MTIsW10sImU4NDkiLCJNMzk1LjQgOGMxMy4yLTExLjcgMzMuMy0xMC41IDQ1LjEgMi43IDExLjcgMTMuMiAxMC41IDMzLjQtMi43IDQ1LjItMi43IDIuNC0yMy4xIDE5LjgtNTguMyAzNi44LTguMiA0LTE3LjIgNy45LTI3IDExLjZsMCAzMDMuMmM5LjggMy44IDE4LjggNy42IDI3IDExLjYgMTguMiA4LjggMzIuNCAxNy43IDQyLjIgMjQuNSAzIDIuMSA1LjUgNC4xIDcuNyA1LjcgMS4yIC45IDIuMyAxLjYgMy4yIDIuNCAuMiAuMSAuMyAuMiAuNSAuNCAxLjMgMS4xIDIuNCAyIDMuMiAyLjYgLjQgLjMgLjcgLjYgLjkgLjggLjEgLjEgLjMgLjIgLjMgLjMgMCAwIC4xIC4xIC4xIC4xbC4xIDAgMCAwIDAgMGMzLjMgMi45IDUuOSA2LjQgNy43IDEwLjIgNS40IDExLjMgMy44IDI1LjEtNSAzNS0uMyAuNC0uNyAuNy0xLjEgMS4xLTExLjkgMTIuMi0zMS4yIDEzLjEtNDQgMS43LS4zLS4zLTEuNS0xLjMtMy41LTIuOC0uNC0uMy0uOS0uNy0xLjUtMS4xLTEuOS0xLjQtNC4yLTMuMS03LjEtNS4xLTIuMi0xLjUtNC43LTMuMS03LjQtNC44LTYuNi00LjEtMTQuOC04LjgtMjQuNC0xMy41LTcuNC0zLjYtMTUuNi03LjItMjQuNy0xMC41LTEzLjYtNS4xLTI5LTkuNi00Ni4xLTEyLjktNS43LTEuMS0xMS42LTIuMS0xNy43LTIuOC0xMi4xLTEuNi0yNS0yLjUtMzguNi0yLjUtNTQuMiAwLTk3LjQgMTQuNC0xMjcgMjguOC0zLjQgMS42LTYuNSAzLjMtOS41IDQuOS01LjEgMi44LTkuNyA1LjQtMTMuOCA3LjktMy4zIDIuMS02LjMgNC04LjkgNS43LTEuNyAxLjItMy4yIDIuMy00LjYgMy4zLTEuOSAxLjQtMy41IDIuNS00LjYgMy40LTEuNCAxLjEtMi4yIDEuOC0yLjUgMi0xMy4yIDExLjctMzMuMyAxMC41LTQ1LjEtMi44LTIuMi0yLjUtNC01LjItNS4yLTguMXMtMi4xLTUuOS0yLjUtOC45Yy0xLjQtMTAuMiAyLjItMjAuOCAxMC40LTI4LjIgLjItLjIgLjYtLjUgMS4yLTEgLjEtLjEgLjItLjIgLjMtLjNsMy4yLTIuNmMxLjctMS4zIDMuNy0yLjggNi4yLTQuNiAxLjYtMS4yIDMuMy0yLjUgNS4yLTMuOCA5LjgtNi44IDI0LTE1LjcgNDIuMi0yNC41IDguMi00IDE3LjItNy45IDI3LTExLjZsMC0zMDMuMkM4Ni43IDEwMC42IDc3LjcgOTYuNyA2OS41IDkyLjggMzQuMyA3NS43IDE0IDU4LjMgMTEuMyA1NS45LTEuOSA0NC4yLTMuMSAyNCA4LjYgMTAuNyAyMC4zLTIuNSA0MC41LTMuNyA1My43IDggNTUuMSA5LjIgNzAuNyAyMi4yIDk3LjUgMzUuMiAxMjcuMSA0OS42IDE3MC4zIDY0IDIyNC41IDY0czk3LjQtMTQuNCAxMjctMjguOGMyNi44LTEzIDQyLjQtMjYgNDMuOC0yNy4yek0yODguNSAxMjIuM2MtMTkuNyAzLjUtNDEgNS43LTY0IDUuN3MtNDQuMy0yLjItNjQtNS43bDAgMjY3LjRjMTIuNi0yLjMgMjUuOS00IDM5LjktNC45IDcuOC0uNSAxNS44LS44IDI0LS44IDIzIDAgNDQuNCAyLjIgNjQgNS43bDAtMjY3LjR6Il19LGluYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0b3dlci1jZWxsIixpY29uOls1NzYsNTEyLFtdLCJlNTg1IiwiTTU5LjYgOS44QzQ3LjMgNC44IDMzLjMgMTAuNyAyOC40IDIzIDE1LjIgNTUuNSA4IDkwLjkgOCAxMjhzNy4yIDcyLjUgMjAuNCAxMDVjNSAxMi4zIDE5IDE4LjIgMzEuMyAxMy4yczE4LjItMTkgMTMuMi0zMS4zQzYyIDE4OC4yIDU2IDE1OC44IDU2IDEyOHM2LTYwLjIgMTYuOS04N2M1LTEyLjMtMS0yNi4zLTEzLjItMzEuM3ptNDU2LjggMGMtMTIuMyA1LTE4LjIgMTktMTMuMiAzMS4zIDEwLjkgMjYuOCAxNi45IDU2LjIgMTYuOSA4N3MtNiA2MC4yLTE2LjkgODdjLTUgMTIuMyAxIDI2LjMgMTMuMiAzMS4zczI2LjMtMSAzMS4zLTEzLjJjMTMuMS0zMi41IDIwLjQtNjcuOSAyMC40LTEwNXMtNy4yLTcyLjUtMjAuNC0xMDVjLTUtMTIuMy0xOS0xOC4yLTMxLjMtMTMuMnpNMzQwLjEgMTY1LjJjNy41LTEwLjUgMTEuOS0yMy4zIDExLjktMzcuMiAwLTM1LjMtMjguNy02NC02NC02NHMtNjQgMjguNy02NCA2NGMwIDEzLjkgNC40IDI2LjcgMTEuOSAzNy4yTDk4LjkgNDY2LjhjLTcuMyAxNi4xLS4yIDM1LjEgMTUuOSA0Mi40czM1LjEgLjIgNDIuNC0xNS45bDIwLjYtNDUuMiAyMjAuNiAwIDIwLjYgNDUuMmM3LjMgMTYuMSAyNi4zIDIzLjIgNDIuNCAxNS45czIzLjItMjYuMyAxNS45LTQyLjRMMzQwLjEgMTY1LjJ6TTM3Ni41IDQwMGwtMTc3IDAgMjEuOC00OCAxMzMuMyAwIDIxLjggNDh6TTI4OCAyMDUuM2w0NC44IDk4LjctODkuNyAwIDQ0LjgtOTguN3pNMTYzLjMgNzMuNmM1LjMtMTIuMS0uMi0yNi4zLTEyLjQtMzEuNnMtMjYuMyAuMi0zMS42IDEyLjRDMTA5LjUgNzcgMTA0IDEwMS45IDEwNCAxMjhzNS41IDUxIDE1LjMgNzMuNmM1LjMgMTIuMSAxOS41IDE3LjcgMzEuNiAxMi40czE3LjctMTkuNSAxMi40LTMxLjZDMTU2IDE2NS44IDE1MiAxNDcuNCAxNTIgMTI4czQtMzcuOCAxMS4zLTU0LjR6TTQ1Ni43IDU0LjRjLTUuMy0xMi4xLTE5LjUtMTcuNy0zMS42LTEyLjRzLTE3LjcgMTkuNS0xMi40IDMxLjZDNDIwIDkwLjIgNDI0IDEwOC42IDQyNCAxMjhzLTQgMzcuOC0xMS4zIDU0LjRjLTUuMyAxMi4xIC4yIDI2LjMgMTIuNCAzMS42czI2LjMtLjIgMzEuNi0xMi40QzQ2Ni41IDE3OSA0NzIgMTU0LjEgNDcyIDEyOHMtNS41LTUxLTE1LjMtNzMuNnoiXX0scm5hPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNvbG9uLXNpZ24iLGljb246WzM4NCw1MTIsW10sImUxNDAiLCJNMjEzLjggOC43YzEyLjkgMy4yIDIwLjcgMTYuMiAxNy41IDI5LjFsLTQuNiAxOC41YzE1LjQgLjggMzAuNCAzLjQgNDQuNyA3LjVsOS40LTM3LjZDMjgzLjkgMTMuMyAyOTcgNS41IDMwOS44IDguN1MzMzAuNSAyNSAzMjcuMyAzNy44TDMxNiA4Mi44YzEzLjUgNy44IDI2IDE3LjEgMzcuMiAyNy44IDEyLjkgMTIuMSAxMy40IDMyLjQgMS4zIDQ1LjJzLTMyLjQgMTMuNC00NS4yIDEuM2MtMy4xLTIuOS02LjQtNS44LTkuOC04LjRMMjM5LjIgMzkwYzI2LjktNC42IDUxLjEtMTcuMSA3MC4xLTM1LjEgMTIuOS0xMi4xIDMzLjEtMTEuNSA0NS4yIDEuM3MxMS41IDMzLjEtMS4zIDQ1LjJjLTM0LjMgMzIuMy04MCA1Mi44LTEzMC41IDU0LjRsLTcuNSAyOS45Yy0zLjIgMTIuOS0xNi4yIDIwLjctMjkuMSAxNy41cy0yMC43LTE2LjItMTcuNS0yOS4xbDUuNi0yMi41Yy0xNS0zLjItMjkuNC04LTQyLjktMTQuNGwtMTIuMSA0OC41Yy0zLjIgMTIuOS0xNi4yIDIwLjctMjkuMSAxNy41UzY5LjUgNDg3IDcyLjcgNDc0LjJsMTYtNjMuOUM0NC4zIDM3My42IDE2IDMxOC4xIDE2IDI1NiAxNiAxNTkuMiA4NC44IDc4LjQgMTc2LjMgNjBsOC40LTMzLjhDMTg3LjkgMTMuMyAyMDEgNS41IDIxMy44IDguN3pNMTU4IDEzMi45Yy00Ni4xIDIxLjgtNzggNjguNy03OCAxMjMuMSAwIDMwLjUgMTAgNTguNiAyNi45IDgxLjNMMTU4IDEzMi45ek0xNDcuNCAzNzMuNGMxMyA3LjYgMjcuMyAxMy4xIDQyLjUgMTYuMWw2NS45LTI2My42Yy0xMi42LTMuOC0yNS45LTUuOS0zOS44LTUuOS0xLjggMC0zLjUgMC01LjMgLjFMMTQ3LjQgMzczLjR6Il19LG9uYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJsYXB0b3AtZmlsZSIsaWNvbjpbNTc2LDUxMixbXSwiZTUxZCIsIk02NCA2NEM2NCAyOC43IDkyLjcgMCAxMjggMEw0MTYgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDQ4LTY0IDAgMC00OC0yODggMCAwIDE5MiAxMTIgMCAwIDk2LTE2My4yIDBDMzQuNCAzNTIgMCAzMTcuNiAwIDI3NS4yIDAgMjY0LjYgOC42IDI1NiAxOS4yIDI1Nkw2NCAyNTYgNjQgNjR6TTUyOS45IDI1Ny45YzkgOSAxNC4xIDIxLjIgMTQuMSAzMy45TDU0NCA0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhsLTE2MCAwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTI1NmMwLTI2LjUgMjEuNS00OCA0OC00OGw3Ni4xIDBjMTIuNyAwIDI0LjkgNS4xIDMzLjkgMTQuMSAyMCAyMCA0Ny45IDQ3LjkgODMuOSA4My45ek00MTYgMjcyYzAgOC44IDcuMiAxNiAxNiAxNmw2MC4xIDAtNzYuMS03Ni4xIDAgNjAuMXoiXX0seHdlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJhaGFpIixpY29uOls1NzYsNTEyLFsiaGF5a2FsIl0sImY2NjYiLCJNMjg4LjQtOGMxMy4yIDAgMjUgOC4xIDI5LjggMjAuNGwzMS45IDgyIDc3LjItNDIuM2MxMS42LTYuMyAyNS44LTQuOSAzNS45IDMuNXMxNCAyMi4zIDkuNyAzNC44bC0yOC4yIDgzLjMgODYuMyAxNy4yYzEyLjkgMi42IDIzIDEyLjggMjUuMyAyNS44cy0zLjYgMjYuMS0xNC45IDMyLjlsLTc1LjIgNDUuNyA1NSA2OC42YzguMyAxMC4zIDkuMyAyNC42IDIuNyAzNnMtMTkuNSAxNy42LTMyLjYgMTUuNmwtODctMTMuMy0yIDg4Yy0uMyAxMy4yLTguNiAyNC44LTIxIDI5LjRzLTI2LjMgMS0zNS05bC01OC02Ni4xLTU4IDY2LjFjLTguNyA5LjktMjIuNiAxMy41LTM1IDlzLTIwLjgtMTYuMi0yMS0yOS40bC0yLTg4LTg3IDEzLjNjLTEzIDItMjYtNC4yLTMyLjYtMTUuNnMtNS41LTI1LjcgMi43LTM2bDU1LTY4LjYtNzUuMi00NS43Yy0xMS4zLTYuOC0xNy4yLTE5LjktMTQuOS0zMi45czEyLjMtMjMuMiAyNS4zLTI1LjhsODYuMy0xNy4yLTI4LjItODMuM2MtNC4yLTEyLjUtLjQtMjYuMyA5LjctMzQuOHMyNC40LTkuOSAzNS45LTMuNWw3Ny4xIDQyLjMgMzEuOS04MkMyNjMuMyAuMSAyNzUuMi04IDI4OC40LTh6bTAgMTIwLjJMMjczIDE1MS42Yy0zLjMgOC42LTEwLjIgMTUuMy0xOC45IDE4LjVzLTE4LjIgMi40LTI2LjMtMmwtMzctMjAuMyAxMy42IDQwYzMgOC43IDIgMTguMy0yLjYgMjYuM3MtMTIuNCAxMy42LTIxLjUgMTUuNGwtNDEuNCA4LjMgMzYuMSAyMS45YzcuOSA0LjggMTMuMyAxMi43IDE0LjkgMjEuOHMtLjggMTguNC02LjUgMjUuNmwtMjYuNCAzMyA0MS44LTYuNGM5LjEtMS40IDE4LjQgMS4yIDI1LjQgNy4xczExLjIgMTQuNiAxMS40IDIzLjhsLjkgNDIuMiAyNy45LTMxLjhjNi4xLTYuOSAxNC44LTEwLjkgMjQuMS0xMC45czE4IDQgMjQuMSAxMC45bDI3LjkgMzEuOCAuOS00Mi4yYy4yLTkuMiA0LjQtMTcuOSAxMS40LTIzLjhzMTYuMy04LjUgMjUuNC03LjFsNDEuOCA2LjQtMjYuNC0zM2MtNS44LTcuMi04LjItMTYuNS02LjYtMjUuNnM3LTE3IDE0LjktMjEuOGwzNi4xLTIxLjktNDEuNC04LjNjLTktMS44LTE2LjktNy40LTIxLjUtMTUuNHMtNS41LTE3LjYtMi42LTI2LjNsMTMuNi00MC0zNyAyMC4zYy04LjEgNC40LTE3LjcgNS4yLTI2LjMgMnMtMTUuNS05LjktMTguOS0xOC41bC0xNS4zLTM5LjR6Il19LG5uYT14d2UseXdlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im1vbmV5LWJpbGwtMSIsaWNvbjpbNTEyLDUxMixbIm1vbmV5LWJpbGwtYWx0Il0sImYzZDEiLCJNNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjhMMCAzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzg0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yNTZjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgNjR6bTE5MiA4MGExMTIgMTEyIDAgMSAxIDAgMjI0IDExMiAxMTIgMCAxIDEgMC0yMjR6TTY0IDE4NGwwLTQ4YzAtNC40IDMuNi04IDgtOGw0OCAwYzQuNCAwIDguMSAzLjYgNy41IDgtMy42IDI5LTI2LjYgNTEuOS01NS41IDU1LjUtNC40IC41LTgtMy4xLTgtNy41em0wIDE0NGMwLTQuNCAzLjYtOC4xIDgtNy41IDI5IDMuNiA1MS45IDI2LjYgNTUuNSA1NS41IC41IDQuNC0zLjEgOC03LjUgOGwtNDggMGMtNC40IDAtOC0zLjYtOC04bDAtNDh6TTQ0MCAxOTEuNWMtMjktMy42LTUxLjktMjYuNi01NS41LTU1LjUtLjUtNC40IDMuMS04IDcuNS04bDQ4IDBjNC40IDAgOCAzLjYgOCA4bDAgNDhjMCA0LjQtMy42IDguMS04IDcuNXpNNDQ4IDMyOGwwIDQ4YzAgNC40LTMuNiA4LTggOGwtNDggMGMtNC40IDAtOC4xLTMuNi03LjUtOCAzLjYtMjkgMjYuNi01MS45IDU1LjUtNTUuNSA0LjQtLjUgOCAzLjEgOCA3LjV6TTI0MCAxODhjLTExIDAtMjAgOS0yMCAyMCAwIDkuNyA2LjkgMTcuNyAxNiAxOS42bDAgNDguNC00IDBjLTExIDAtMjAgOS0yMCAyMHM5IDIwIDIwIDIwbDQ4IDBjMTEgMCAyMC05IDIwLTIwcy05LTIwLTIwLTIwbC00IDAgMC02OGMwLTExLTktMjAtMjAtMjBsLTE2IDB6Il19LGxuYT15d2Usd3dlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNsb3VkLWJvbHQiLGljb246WzUxMiw1MTIsWzEyNzc4NSwidGh1bmRlcnN0b3JtIl0sImY3NmMiLCJNMCAyMjRjMCA1MyA0MyA5NiA5NiA5NmwzOC42IDAgMTI0LjEtMTExYzEyLjItMTAuOSAyOC0xNyA0NC40LTE3IDQ0LjYgMCA3Ni41IDQzIDYzLjcgODUuN0wzNTQuMSAzMjAgNDE2IDMyMGM1MyAwIDk2LTQzIDk2LTk2cy00My05Ni05Ni05NmMtLjUgMC0xLjEgMC0xLjYgMCAxLjEtNS4yIDEuNi0xMC41IDEuNi0xNiAwLTQ0LjItMzUuOC04MC04MC04MC0yNC4zIDAtNDYuMSAxMC45LTYwLjggMjgtMTguNy0zNS43LTU2LjEtNjAtOTkuMi02MC02MS45IDAtMTEyIDUwLjEtMTEyIDExMiAwIDcuMSAuNyAxNC4xIDEuOSAyMC44LTM4LjMgMTIuNi02NS45IDQ4LjctNjUuOSA5MS4yek0xNjAuNiA0MDBsNjEuOCAwLTMxLjIgMTA0LjFjLTMuNiAxMS45IDUuMyAyMy45IDE3LjggMjMuOSA0LjYgMCA5LTEuNyAxMi40LTQuN0wzNjIuNSAzOTYuOWMzLjUtMy4xIDUuNS03LjYgNS41LTEyLjQgMC05LjItNy40LTE2LjYtMTYuNi0xNi42bC02MS44IDAgMzEuMi0xMDQuMWMzLjYtMTEuOS01LjMtMjMuOS0xNy44LTIzLjktNC42IDAtOSAxLjctMTIuNCA0LjdMMTQ5LjUgMzcxLjFjLTMuNSAzLjEtNS41IDcuNi01LjUgMTIuNCAwIDkuMiA3LjQgMTYuNiAxNi42IDE2LjZ6Il19LGNuYT13d2UsZG5hPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImV0aGVybmV0IixpY29uOls1MTIsNTEyLFtdLCJmNzk2IiwiTTAgMjI0TDAgNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMybDMyIDAgMC0xMDRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDEwNCA2NCAwIDAtMTA0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCAxMDQgNjQgMCAwLTEwNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0bDAgMTA0IDY0IDAgMC0xMDRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDEwNCAzMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMTkyYzAtMTcuNy0xNC4zLTMyLTMyLTMybC0zMiAwIDAtMzJjMC0xNy43LTE0LjMtMzItMzItMzJsLTMyIDAgMC0zMmMwLTE3LjctMTQuMy0zMi0zMi0zMkwxNjAgNjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgMzItMzIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAzMi0zMiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnoiXX0sa3dlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImhyeXZuaWEtc2lnbiIsaWNvbjpbMzg0LDUxMixbODM3MiwiaHJ5dm5pYSJdLCJmNmYyIiwiTTMzNiAxNDkuNEMzMzYgNzcgMjY4LjUgMjMuNSAxOTggNDAuMUw5My4yIDY0LjlDNzYgNjguOSA2NS40IDg2LjIgNjkuNCAxMDMuNHMyMS4zIDI3LjkgMzguNSAyMy44bDEwNC44LTI0LjdjMzAuMy03LjEgNTkuMyAxNS44IDU5LjMgNDYuOSAwIDE3LjYtOS42IDMzLjgtMjUgNDIuM2wtLjcgLjQtMjIyLjMgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwzMzYgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtMzIuNCAwYzUuNS0xMy4zIDguNC0yNy44IDguNC00Mi42ek0zNjAgMjcyTDI0IDI3MmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwzMy4zIDBjLTYuMSAxMy40LTkuMyAyOC4xLTkuMyA0My4zIDAgNjQuMSA1Ni45IDExMy40IDEyMC40IDEwNC4ybDEzNy45LTE5LjljMTcuNS0yLjUgMjkuNi0xOC43IDI3LjEtMzYuMnMtMTguOC0yOS42LTM2LjItMjcuMUwxNTkuMiA0MDQuMmMtMjQuOSAzLjYtNDcuMi0xNS43LTQ3LjItNDAuOSAwLTE1LjEgOC4yLTI4LjkgMjEuNC0zNi4ybDEzLTcuMSAyMTMuNiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0eiJdfSx1bmE9a3dlLGF2PXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImV5ZS1zbGFzaCIsaWNvbjpbNTc2LDUxMixbXSwiZjA3MCIsIk00MS0yNC45Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMFMtMi4zLS4zIDcgOS4xbDUyOCA1MjhjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC05Ni40LTk2LjRjMi43LTIuNCA1LjQtNC44IDgtNy4yIDQ2LjgtNDMuNSA3OC4xLTk1LjQgOTMtMTMxLjEgMy4zLTcuOSAzLjMtMTYuNyAwLTI0LjYtMTQuOS0zNS43LTQ2LjItODcuNy05My0xMzEuMS00Ny4xLTQzLjctMTExLjgtODAuNi0xOTIuNi04MC42LTU2LjggMC0xMDUuNiAxOC4yLTE0NiA0NC4yTDQxLTI0Ljl6TTIwNC41IDEzOC43YzIzLjUtMTYuOCA1Mi40LTI2LjcgODMuNS0yNi43IDc5LjUgMCAxNDQgNjQuNSAxNDQgMTQ0IDAgMzEuMS05LjkgNTkuOS0yNi43IDgzLjVsLTM0LjctMzQuN2MxMi43LTIxLjQgMTctNDcuNyAxMC4xLTczLjctMTMuNy01MS4yLTY2LjQtODEuNi0xMTcuNi02Ny45LTguNiAyLjMtMTYuNyA1LjctMjQgMTBsLTM0LjctMzQuN3pNMzI1LjMgMzk1LjFjLTExLjkgMy4yLTI0LjQgNC45LTM3LjMgNC45LTc5LjUgMC0xNDQtNjQuNS0xNDQtMTQ0IDAtMTIuOSAxLjctMjUuNCA0LjktMzcuM0w2OS40IDEzOS4yYy0zMi42IDM2LjgtNTUgNzUuOC02Ni45IDEwNC41LTMuMyA3LjktMy4zIDE2LjcgMCAyNC42IDE0LjkgMzUuNyA0Ni4yIDg3LjcgOTMgMTMxLjEgNDcuMSA0My43IDExMS44IDgwLjYgMTkyLjYgODAuNiAzNy4zIDAgNzEuMi03LjkgMTAxLjUtMjAuNmwtNjQuMi02NC4yeiJdfSxTd2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2FydC1mbGF0YmVkLXN1aXRjYXNlIixpY29uOls1NzYsNTEyLFsibHVnZ2FnZS1jYXJ0Il0sImY1OWQiLCJNMCAzMkMwIDE0LjMgMTQuMyAwIDMyIDBMNDggMGM0NC4yIDAgODAgMzUuOCA4MCA4MGwwIDI4OGMwIDguOCA3LjIgMTYgMTYgMTZsNDAwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTM0LjcgMGMxLjggNSAyLjcgMTAuNCAyLjcgMTYgMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhjMC01LjYgMS0xMSAyLjctMTZsLTE5Ny41IDBjMS44IDUgMi43IDEwLjQgMi43IDE2IDAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4YzAtNiAxLjEtMTEuNyAzLjEtMTctMzguMS02LjItNjcuMS0zOS4yLTY3LjEtNzlMNjQgODBjMC04LjgtNy4yLTE2LTE2LTE2TDMyIDY0QzE0LjMgNjQgMCA0OS43IDAgMzJ6TTE3NiAxNDRjMC0yNi41IDIxLjUtNDggNDgtNDhsMzIgMCAwLTI0YzAtMzAuOSAyNS4xLTU2IDU2LTU2bDY0IDBjMzAuOSAwIDU2IDI1LjEgNTYgNTZsMCAyNCAzMiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgMTQ0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC0yNDAgMGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhsMC0xNDR6TTM4NCA5NmwwLTI0YzAtNC40LTMuNi04LTgtOGwtNjQgMGMtNC40IDAtOCAzLjYtOCA4bDAgMjQgODAgMHoiXX0scG5hPVN3ZSxobmE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicmFkaWF0aW9uIixpY29uOls1NzYsNTEyLFtdLCJmN2I5IiwiTTQ0Ni4yIDM0LjVjLTE0LjItMTAuMS0zMy41LTQuNi00Mi4yIDEwLjVMMzMxLjYgMTcwLjNjMzEuMyAxNS44IDUyLjggNDguMyA1Mi44IDg1LjdsMTQ0IDBjMTcuNyAwIDMyLjItMTQuNCAzMC4xLTMxLjktOS4xLTc4LjEtNTEuNC0xNDYuMS0xMTIuMy0xODkuNnpNMTcyLjcgNDQuOUMxNjQgMjkuOCAxNDQuNyAyNC4zIDEzMC41IDM0LjUgNjkuNiA3Ny45IDI3LjMgMTQ1LjkgMTguMiAyMjQuMSAxNi4xIDI0MS42IDMwLjcgMjU2IDQ4LjMgMjU2bDE0NCAwYzAtMzcuNSAyMS41LTY5LjkgNTIuOC04NS43TDE3Mi43IDQ0Ljl6bS05LjQgNDE2LjhjLTguNyAxNS4xLTMuOCAzNC41IDEyIDQxLjggMzQuNCAxNS43IDcyLjcgMjQuNSAxMTMgMjQuNXM3OC42LTguOCAxMTMtMjQuNWMxNS44LTcuMiAyMC43LTI2LjcgMTItNDEuOEwzNDEgMzM2LjNjLTE1LjEgOS45LTMzLjIgMTUuNy01Mi42IDE1LjdzLTM3LjUtNS44LTUyLjYtMTUuN0wxNjMuMyA0NjEuN3pNMjg4LjMgMzA0YTQ4IDQ4IDAgMSAwIC0uNy05NiA0OCA0OCAwIDEgMCAuNyA5NnoiXX0sZm5hPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZpbGUtd29yZCIsaWNvbjpbMzg0LDUxMixbXSwiZjFjMiIsIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEwyMTMuNSAwYzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43TDM2NS4zIDEyNS4zYzEyIDEyIDE4LjcgMjguMyAxOC43IDQ1LjNMMzg0IDQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgNjR6bTIwOC01LjVsMCA5My41YzAgMTMuMyAxMC43IDI0IDI0IDI0TDMyNS41IDE3NiAyMDggNTguNXpNMTM1LjQgMjc0LjhjLTIuOS0xMi45LTE1LjctMjEuMS0yOC42LTE4LjJzLTIxLjEgMTUuNy0xOC4yIDI4LjZsMzIgMTQ0YzIuMyAxMC41IDExLjQgMTguMiAyMi4yIDE4LjhzMjAuNi02LjEgMjQtMTYuNGwyNS4yLTc1LjcgMjUuMiA3NS43YzMuNCAxMC4yIDEzLjIgMTYuOSAyNCAxNi40czE5LjktOC4yIDIyLjItMTguOGwzMi0xNDRjMi45LTEyLjktNS4zLTI1LjgtMTguMi0yOC42cy0yNS44IDUuMy0yOC42IDE4LjJsLTEzLjIgNTkuNC0yMC42LTYxLjhjLTMuMy05LjgtMTIuNC0xNi40LTIyLjgtMTYuNHMtMTkuNSA2LjYtMjIuOCAxNi40bC0yMC42IDYxLjgtMTMuMi01OS40eiJdfSxfd2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYmVkLXB1bHNlIixpY29uOls2NDAsNTEyLFsicHJvY2VkdXJlcyJdLCJmNDg3IiwiTTUzMS4yLTIyLjRMNTcyIDMyIDYxNiAzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtNTYgMGMtNy42IDAtMTQuNy0zLjYtMTkuMi05LjZsLTI0LjEtMzIuMS00NyA5OS45Yy0zLjcgNy44LTExLjMgMTMuMS0xOS45IDEzLjdzLTE2LjktMy40LTIxLjctMTAuNkwzODcuMiA4MCAzNDQgODBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsNTYgMGM4IDAgMTUuNSA0IDIwIDEwLjdsMjQuNCAzNi42IDQ1LjktOTcuNWMzLjYtNy42IDEwLjktMTIuOCAxOS4zLTEzLjdzMTYuNiAyLjcgMjEuNiA5LjV6TTMyMCAxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJsOS41IDAgMjYuNiAzOS45YzE0LjQgMjEuNiAzOS4zIDMzLjggNjUuMiAzMS45czQ4LjgtMTcuNiA1OS44LTQxLjFMNTI3IDEyOS4yYzQ1LjkgNy4yIDgxIDQ2LjkgODEgOTQuOGwwIDIyNGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTY0LTQ0OCAwIDAgNjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJMMzIgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJTOTYgNDYuMyA5NiA2NGwwIDIyNCAyMjQgMCAwLTEyOHpNMTQ0IDE5MmE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6Il19LG1uYT1fd2UsZ25hPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRlbnRzIixpY29uOls1NzYsNTEyLFtdLCJlNTgyIiwiTTUzOS45IDM1MmwtOTUuNiAwLTguNC02Ni4xYy0yLjktMjMuMi0xNS45LTQzLjktMzUuNC01Ni44TDI1Mi4yIDEzMS41Yy0xOC0xMS45LTM5LjctMTUuNy02MC4xLTExLjUgMi41LTQuMyA1LjktNy45IDEwLjEtMTAuN0wzNTAuNiAxMS42YzEwLjctNyAyNC41LTcgMzUuMiAwbDE0OC40IDk3LjdjNy44IDUuMSAxMyAxMy40IDE0LjIgMjIuN2wyMy4zIDE4NGMyLjQgMTkuMS0xMi41IDM2LTMxLjcgMzZ6TTQuOCA0NzZsMjMuMy0xODRjMS4yLTkuMyA2LjMtMTcuNiAxNC4yLTIyLjdsMTQ4LjQtOTcuN2MxMC43LTcgMjQuNS03IDM1LjIgMGwxNDguNCA5Ny43YzcuOCA1LjEgMTMgMTMuNCAxNC4yIDIyLjdsMjMuMyAxODRjMi40IDE5LjEtMTIuNSAzNi0zMS43IDM2bC00OS43IDBjLTExLjIgMC0yMS41LTUuOC0yNy4zLTE1LjRsLTc3LTEyNi43Yy0xLjctMi44LTQuOC00LjYtOC4xLTQuNi01LjMgMC05LjUgNC4zLTkuNSA5LjVsMCAxMDUuMmMwIDE3LjctMTQuMyAzMi0zMiAzMkwzNi41IDUxMmMtMTkuMyAwLTM0LjItMTYuOS0zMS43LTM2eiJdfSxzdj17cHJlZml4OiJmYXMiLGljb25OYW1lOiJtdWctaG90IixpY29uOls1NzYsNTEyLFs5NzQ5XSwiZjdiNiIsIk0xNTItMTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0IDAgMzguOSAyMy40IDU5LjQgMzkuMSA3My4xbDEuMSAxYzE2LjMgMTQuMyAyMy44IDIxLjggMjMuOCAzNy45IDAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0zOC45LTIzLjQtNTkuNC0zOS4xLTczLjFsLTEuMS0xQzE4My41IDMxLjcgMTc2IDI0LjEgMTc2IDggMTc2LTUuMyAxNjUuMy0xNiAxNTItMTZ6TTk2IDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAxOTJjMCA1MyA0MyA5NiA5NiA5NmwxOTIgMGM0MS44IDAgNzcuNC0yNi43IDkwLjUtNjRsNS41IDBjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhTNTE4LjcgMTkyIDQ0OCAxOTJMOTYgMTkyek00NDggMzg0bDAtMTI4YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0ek0yODggOGMwLTEzLjMtMTAuNy0yNC0yNC0yNFMyNDAtNS4zIDI0MCA4YzAgMzguOSAyMy40IDU5LjQgMzkuMSA3My4xbDEuMSAxYzE2LjMgMTQuMyAyMy44IDIxLjggMjMuOCAzNy45IDAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0zOC45LTIzLjQtNTkuNC0zOS4xLTczLjFsLTEuMS0xQzI5NS41IDMxLjcgMjg4IDI0LjEgMjg4IDh6Il19LE13ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJib2x0IixpY29uOls0NDgsNTEyLFs5ODg5LCJ6YXAiXSwiZjBlNyIsIk0zMzguOC05LjljMTEuOSA4LjYgMTYuMyAyNC4yIDEwLjkgMzcuOEwyNzEuMyAyMjQgNDE2IDIyNGMxMy41IDAgMjUuNSA4LjQgMzAuMSAyMS4xcy43IDI2LjktOS42IDM1LjVsLTI4OCAyNDBjLTExLjMgOS40LTI3LjQgOS45LTM5LjMgMS4zcy0xNi4zLTI0LjItMTAuOS0zNy44TDE3Ni43IDI4OCAzMiAyODhjLTEzLjUgMC0yNS41LTguNC0zMC4xLTIxLjFzLS43LTI2LjkgOS42LTM1LjVsMjg4LTI0MGMxMS4zLTkuNCAyNy40LTkuOSAzOS4zLTEuM3oiXX0sYm5hPU13ZSx2bmE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiamFyIixpY29uOlszMjAsNTEyLFtdLCJlNTE2IiwiTTMyLThjMC0xMy4zIDEwLjctMjQgMjQtMjRsMjA4IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRMNTYgMTZDNDIuNyAxNiAzMiA1LjMgMzItOHpNMCAxMjhDMCA5Mi43IDI4LjcgNjQgNjQgNjRsMTkyIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAzMjBjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDEyOHptOTYgNjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMybDEyOCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMTI4YzAtMTcuNy0xNC4zLTMyLTMyLTMyTDk2IDE5MnoiXX0seG5hPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRydWNrLXBsYW5lIixpY29uOls2NDAsNTEyLFtdLCJlNThmIiwiTTE0NCA0OGMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4bDAgMzIwYzAgMzIuNSAxMi4xIDYyLjEgMzIgODQuN2wwIDI3LjNjMCA3LjEgLjkgMTQuMSAyLjcgMjAuN0wxOTIgNDgwIDgzLjkgNTA3QzczLjggNTA5LjYgNjQgNTAxLjkgNjQgNDkxLjVsMC0xOS44YzAtNC45IDIuMi05LjUgNi0xMi41bDc0LTU5LjIgMC01Ny42LTEyMi4xIDQ4LjhDMTEuNCAzOTUuNCAwIDM4Ny43IDAgMzc2LjRsMC00NGMwLTggMy0xNS42IDguMy0yMS41TDE0NCAxNjEuNiAxNDQgNDh6bTIyNCA4MGwxOTIgMGM0NC4yIDAgODAgMzUuOCA4MCA4MGwwIDE2MGMwIDI2LjItMTIuNiA0OS40LTMyIDY0bDAgNDhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0zMi0xNjAgMCAwIDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtNDhjLTE5LjQtMTQuNi0zMi0zNy44LTMyLTY0bDAtMTYwYzAtNDQuMiAzNS44LTgwIDgwLTgwem0wIDE3NmwxOTIgMCAwLTMyYzAtMTcuNy0xNC4zLTMyLTMyLTMybC0xMjggMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAzMnptMCA4OGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bTIxNi0yNGEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAweiJdfSx5bmE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaGFuZC1ob2xkaW5nLWhlYXJ0IixpY29uOls1NzYsNTEyLFtdLCJmNGJlIiwiTTI3OS42IDMxQzI2NS41IDExLjUgMjQyLjkgMCAyMTguOSAwIDE3Ny41IDAgMTQ0IDMzLjUgMTQ0IDc0LjlsMCAyLjRjMCA2NC40IDgyIDEzMy40IDEyMi4yIDE2My4zIDEzIDkuNyAzMC41IDkuNyA0My41IDAgNDAuMi0zMCAxMjIuMi05OC45IDEyMi4yLTE2My4zbDAtMi40YzAtNDEuNC0zMy41LTc0LjktNzQuOS03NC45LTI0IDAtNDYuNiAxMS41LTYwLjcgMzFMMjg4IDQyLjcgMjc5LjYgMzF6TTEwOS4zIDM0MS41TDY2LjcgMzg0IDMyIDM4NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCA2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwzMjAuNSAwYzI5IDAgNTcuMy05LjMgODAuNy0yNi41bDEyNi42LTkzLjNjMTcuOC0xMy4xIDIxLjYtMzguMSA4LjUtNTUuOXMtMzguMS0yMS42LTU1LjktOC41TDM5Mi42IDQxNiAyODAgNDE2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDcyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTE1Mi4yIDBjLTMzLjkgMC02Ni41IDEzLjUtOTAuNSAzNy41eiJdfSxOYj17cHJlZml4OiJmYXMiLGljb25OYW1lOiJhcnJvdy1yb3RhdGUtbGVmdCIsaWNvbjpbNTEyLDUxMixbODYzNCwiYXJyb3ctbGVmdC1yb3RhdGUiLCJhcnJvdy1yb3RhdGUtYmFjayIsImFycm93LXJvdGF0ZS1iYWNrd2FyZCIsInVuZG8iXSwiZjBlMiIsIk0yNTYgNjRjLTU2LjggMC0xMDcuOSAyNC43LTE0My4xIDY0bDQ3LjEgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkwzMiAxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyTDAgMzJDMCAxNC4zIDE0LjMgMCAzMiAwUzY0IDE0LjMgNjQgMzJsMCA1NC43QzExMC45IDMzLjYgMTc5LjUgMCAyNTYgMCAzOTcuNCAwIDUxMiAxMTQuNiA1MTIgMjU2UzM5Ny40IDUxMiAyNTYgNTEyYy04NyAwLTE2My45LTQzLjQtMjEwLjEtMTA5LjctMTAuMS0xNC41LTYuNi0zNC40IDcuOS00NC42czM0LjQtNi42IDQ0LjYgNy45YzM0LjggNDkuOCA5Mi40IDgyLjMgMTU3LjYgODIuMyAxMDYgMCAxOTItODYgMTkyLTE5MlMzNjIgNjQgMjU2IDY0eiJdfSx3bmE9TmIsa25hPU5iLFNuYT1OYixfbmE9TmIsendlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZhY2UtYW5ncnkiLGljb246WzUxMiw1MTIsWzEyODU0NCwiYW5ncnkiXSwiZjU1NiIsIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwIDI1NiAyNTYgMCAxIDEgLTUxMiAwek0yNTYgMzY4YzI0LjEgMCA0NS40IDExLjggNTguNSAzMCA3LjcgMTAuOCAyMi43IDEzLjIgMzMuNSA1LjVzMTMuMi0yMi43IDUuNS0zMy41Yy0yMS43LTMwLjItNTcuMy01MC05Ny41LTUwcy03NS43IDE5LjgtOTcuNSA1MGMtNy43IDEwLjgtNS4zIDI1LjggNS41IDMzLjVzMjUuOCA1LjMgMzMuNS01LjVjMTMuMS0xOC4yIDM0LjQtMzAgNTguNS0zMHptLTgwLTk2YzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtLjMgOS43IDMuMmMxMC41IDMuNSAyMS44LTIuMiAyNS4zLTEyLjZzLTIuMi0yMS44LTEyLjYtMjUuM2wtOTYtMzJjLTEwLjUtMy41LTIxLjggMi4yLTI1LjMgMTIuNnMyLjIgMjEuOCAxMi42IDI1LjNsMjguOSA5LjZjLTQuMSA1LjQtNi42IDEyLjEtNi42IDE5LjQgMCAxNy43IDE0LjMgMzIgMzIgMzJ6bTE5Mi0zMmMwLTcuMy0yLjQtMTQtNi42LTE5LjRsMjguOS05LjZjMTAuNS0zLjUgMTYuMS0xNC44IDEyLjYtMjUuM3MtMTQuOC0xNi4xLTI1LjMtMTIuNmwtOTYgMzJjLTEwLjUgMy41LTE2LjEgMTQuOC0xMi42IDI1LjNzMTQuOCAxNi4xIDI1LjMgMTIuNmw5LjctMy4yIDAgLjNjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMnoiXX0sTW5hPXp3ZSx6bmE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYnVyc3QiLGljb246WzUxMiw1MTIsW10sImU0ZGMiLCJNMzcuNiA0LjJDMjgtMi4zIDE1LjItMS4xIDcgN1MtMi4zIDI4IDQuMiAzNy42bDExMiAxNjMuMy05OS42IDMyLjNDNi43IDIzNi40IDAgMjQ1LjYgMCAyNTZzNi43IDE5LjYgMTYuNiAyMi44bDEwMy4xIDMzLjQtNTIuOSAxMDAuNmMtNC45IDkuMy0zLjIgMjAuNyA0LjMgMjguMXMxOC44IDkuMiAyOC4xIDQuM2wxMDAuNi01Mi45IDMzLjQgMTAzLjFjMy4yIDkuOSAxMi40IDE2LjYgMjIuOCAxNi42czE5LjYtNi43IDIyLjgtMTYuNmwzMy40LTEwMy4xIDEwMC42IDUyLjljOS4zIDQuOSAyMC43IDMuMiAyOC4xLTQuM3M5LjItMTguOCA0LjMtMjguMWwtNTIuOS0xMDAuNiAxMDMuMS0zMy40YzkuOS0zLjIgMTYuNi0xMi40IDE2LjYtMjIuOHMtNi43LTE5LjYtMTYuNi0yMi44bC0xMDYuNS0zNC41IDI1LjctNzAuNGMzLjItOC44IDEtMTguNi01LjYtMjUuMnMtMTYuNC04LjgtMjUuMi01LjZsLTcwLjQgMjUuNy0zNC41LTEwNi41QzI3NS42IDYuNyAyNjYuNCAwIDI1NiAwcy0xOS42IDYuNy0yMi44IDE2LjZMMjAwLjkgMTE2LjIgMzcuNiA0LjJ6Il19LENuYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ6IixpY29uOlszODQsNTEyLFsxMjJdLCI1YSIsIk0wIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMybDMyMCAwYzEyLjQgMCAyMy43IDcuMiAyOSAxOC40czMuNiAyNC41LTQuNCAzNC4xTDEwMC4zIDQxNiAzNTIgNDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDMyIDQ4MGMtMTIuNCAwLTIzLjctNy4yLTI5LTE4LjRzLTMuNi0yNC41IDQuNC0zNC4xTDI4My43IDk2IDMyIDk2QzE0LjMgOTYgMCA4MS43IDAgNjR6Il19LEN3ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJiYW5kYWdlIixpY29uOls1NzYsNTEyLFsxMjk2NTcsImJhbmQtYWlkIl0sImY0NjIiLCJNNDY0IDQxNmw0OCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMTkyYzAtMzUuMy0yOC43LTY0LTY0LTY0bC00OCAwIDAgMzIwek00MTYgOTZsLTI1NiAwIDAgMzIwIDI1NiAwIDAtMzIwek02NCA5NkMyOC43IDk2IDAgMTI0LjcgMCAxNjBMMCAzNTJjMCAzNS4zIDI4LjcgNjQgNjQgNjRsNDggMCAwLTMyMC00OCAwek0yMTYgMjA4YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6bTEyMC0yNGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6TTIxNiAzMDRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptMTIwLTI0YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHoiXX0sVG5hPUN3ZSwkbmE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGxhbmUtY2lyY2xlLWV4Y2xhbWF0aW9uIixpY29uOls2NDAsNTEyLFtdLCJlNTU2IiwiTTIzMiAyNGMwLTMwLjkgMjUuMS01NiA1Ni01NnM1NiAyNS4xIDU2IDU2bDAgMTI3LjMgNzggNzEuNWMtNjkuMyAyOS0xMTggOTcuNC0xMTggMTc3LjIgMCA0OS4zIDE4LjYgOTQuMyA0OS4xIDEyOC4zTDI4OCA1MTIgMTc5LjkgNTM5Yy0xMC4xIDIuNS0xOS45LTUuMS0xOS45LTE1LjVsMC0xOS44YzAtNC45IDIuMi05LjUgNi0xMi41bDY2LTUyLjggMC05OS43LTE2Mi45IDU0LjNDNTguNyAzOTYuNCA0OCAzODguNyA0OCAzNzcuOGwwLTQzLjdjMC05IDMuOC0xNy41IDEwLjQtMjMuNkwyMzIgMTUxLjMgMjMyIDI0ek00OTYgMjU2YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptMCAyMjhhMjAgMjAgMCAxIDAgMC00MCAyMCAyMCAwIDEgMCAwIDQwem0wLTE4MGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgODBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmwwLTgwYzAtOC44LTcuMi0xNi0xNi0xNnoiXX0sRG5hPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJ1cy1zaWRlIixpY29uOls2NDAsNTEyLFtdLCJlODFkIiwiTTQ4MCAwYzg4LjQgMCAxNjAgNzEuNiAxNjAgMTYwbDAgMjI0YzAgMzUuMy0yOC43IDY0LTY0IDY0bC01LjYgMGMtMTMuMiAzNy4zLTQ4LjYgNjQtOTAuNCA2NHMtNzcuMy0yNi43LTkwLjQtNjRsLTEzOS4xIDBjLTEzLjIgMzcuMy00OC43IDY0LTkwLjQgNjRzLTc3LjItMjYuNy05MC40LTY0TDY0IDQ0OGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NkMwIDQzIDQzIDAgOTYgMEw0ODAgMHpNMTYwIDM2OGE0OCA0OCAwIDEgMCAwIDk2IDQ4IDQ4IDAgMSAwIDAtOTZ6bTMyMCAwYTQ4IDQ4IDAgMSAwIDAgOTYgNDggNDggMCAxIDAgMC05NnptMC0zMDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgMTkyYzAgMTcuNyAxNC4zIDMyIDMyIDMybDY0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0xMjhjMC01My00My05Ni05Ni05NnpNMjQ4IDIyNGwxMDQgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMybC0xMDQgMCAwIDE2MHpNOTYgNjRDNzguMyA2NCA2NCA3OC4zIDY0IDk2bDAgOTZjMCAxNy43IDE0LjMgMzIgMzIgMzJsMTA0IDAgMC0xNjAtMTA0IDB6Il19LExuYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJidWdzIixpY29uOls1NzYsNTEyLFtdLCJlNGQwIiwiTTQ0Ny41IDE3NC42YzguOC04LjQgMjIuNy04LjkgMzIuMi0uOHMxMSAyMS45IDQuMSAzMS45bC0xLjUgMS45LTIzIDI2LjdjMjYuNyAxMy41IDQ2LjMgMzkuMSA1MS40IDY5LjZsMjUuMyAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0yNCAwIDAgMzIgMjQgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMjUuMyAwYy03LjYgNDUuNC00Ny4xIDgwLTk0LjcgODBzLTg3LTM0LjYtOTQuNy04MEwyOTYgNDMyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDI0IDAgMC0zMi0yNCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDI1LjMgMGM1LjEtMzAuNSAyNC43LTU2LjEgNTEuNC02OS42bC0yMi45LTI2LjdjLTguNi0xMC4xLTcuNS0yNS4yIDIuNi0zMy44czI1LjItNy41IDMzLjggMi42bDI5LjggMzQuOCAyOS44LTM0LjggMS43LTEuOHptLTI1Ni0xOTJjOC44LTguNCAyMi43LTguOSAzMi4yLS44czExIDIxLjkgNC4xIDMxLjlsLTEuNSAxLjktMjMgMjYuN0MyMzAgNTUuOSAyNDkuNSA4MS41IDI1NC43IDExMmwyNS4zIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTI0IDAgMCAzMiAyNCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0yNS4zIDBjLTcuNiA0NS40LTQ3LjEgODAtOTQuNyA4MHMtODctMzQuNi05NC43LTgwTDQwIDI0MGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGwyNCAwIDAtMzItMjQgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGwyNS4zIDBDNzAuNSA4MS41IDkwIDU1LjkgMTE2LjcgNDIuNEw5My44IDE1LjZDODUuMiA1LjYgODYuMy05LjYgOTYuNC0xOC4yczI1LjItNy41IDMzLjggMi42bDI5LjggMzQuOCAyOS44LTM0LjggMS43LTEuOHoiXX0sVHdlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJlZXItbXVnLWVtcHR5IixpY29uOls1NzYsNTEyLFsiYmVlciJdLCJmMGZjIiwiTTY0IDgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4bDI4OCAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgMTYgNjQgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDEwOC4yYzAgMjQuMi0xMy43IDQ2LjQtMzUuNCA1Ny4yTDQ0OCAzNzEuOCA0NDggMzg0YzAgNTMtNDMgOTYtOTYgOTZsLTE5MiAwYy01MyAwLTk2LTQzLTk2LTk2TDY0IDgwek00NDggMzAwLjJsNjQtMzIgMC0xMDguMi02NCAwIDAgMTQwLjJ6TTE5MiAxNTJjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCAyMDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTIwOHptODggMGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDIwOGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtMjA4em04OCAwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0bDAgMjA4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0yMDh6Il19LEVuYT1Ud2UsUG5hPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBlcnNvbi1jaXJjbGUtY2hlY2siLGljb246WzY0MCw1MTIsW10sImU1M2UiLCJNMjgwIDI0YTU2IDU2IDAgMSAwIC0xMTIgMCA1NiA1NiAwIDEgMCAxMTIgMHptMjQgMjEyLjdMMzQxIDI4Ni42YzEyLjgtMTcuNSAyOC41LTMyLjcgNDYuMy00NWwtNTYuMi03NS43QzMwNiAxMzIgMjY2LjMgMTEyIDIyNCAxMTJzLTgyIDIwLTEwNy4yIDUzLjlsLTcwLjUgOTVjLTEwLjUgMTQuMi03LjYgMzQuMiA2LjYgNDQuOHMzNC4yIDcuNiA0NC44LTYuNkwxNDQgMjM2LjcgMTQ0IDUxMmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTYwYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZsMCAxNjBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTI3NS4zek02NDAgNDAwYTE0NCAxNDQgMCAxIDAgLTI4OCAwIDE0NCAxNDQgMCAxIDAgMjg4IDB6bS04Ni42LTYwLjljNy4xIDUuMiA4LjcgMTUuMiAzLjUgMjIuM2wtNjQgODhjLTIuOCAzLjgtNyA2LjItMTEuNyA2LjVzLTkuMy0xLjMtMTIuNi00LjZsLTQwLTQwYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBsMjYuOCAyNi44IDUzLTcyLjljNS4yLTcuMSAxNS4yLTguNyAyMi40LTMuNXoiXX0sSW5hPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InN0YXBsZXIiLGljb246WzY0MCw1MTIsW10sImU1YWYiLCJNNjQwIDI5OS4zTDY0MCA0MzJjMCAyNi41LTIxLjUgNDgtNDggNDhMNjQgNDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDM4NCAwIDAtNDgtMzUyIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTE2LjYtMzAuMi01LjRjLTE5LjYtMy41LTMzLjgtMjAuNS0zMy44LTQwLjQgMC04LjkgMi45LTE3LjUgOC4yLTI0LjZsMzUuNi00Ny41YzMyLjgtNDMuOCA4NC40LTY5LjYgMTM5LjEtNjkuNiAyNyAwIDUzLjYgNi4zIDc3LjggMTguNEw1ODYuOSAyMTMuNUM2MTkuNSAyMjkuNyA2NDAgMjYzIDY0MCAyOTkuM3pNNDQ4IDMwNGwwLTE2LTMyMC01Ny4xIDAgNzMuMSAzMjAgMHoiXX0sQW5hPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImhvdXNlLW1lZGljYWwtY2lyY2xlLWNoZWNrIixpY29uOls2NDAsNTEyLFtdLCJlNTExIiwiTTMwOS44IDguNmMtMTIuMy0xMS40LTMxLjMtMTEuNC00My41IDBsLTIyNCAyMDhjLTkuNiA5LTEyLjggMjIuOS04IDM1LjFTNTAuOCAyNzIgNjQgMjcybDE2IDAgMCAxNzZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMTk2IDBjLTIxLjItMjkuNS0zNC4zLTY1LjMtMzUuOS0xMDRMMjcyIDQwOGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtNDAtNDAgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2bDQwIDAgMC00MGMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCA0MCAyMCAwYzM0LjktNDguNSA5MS43LTgwIDE1Ni04MCAxMC43IDAgMjEuMSAuOSAzMS4zIDIuNUwzMDkuOCA4LjZ6TTY0MCA0MDBhMTQ0IDE0NCAwIDEgMCAtMjg4IDAgMTQ0IDE0NCAwIDEgMCAyODggMHptLTg2LjYtNjAuOWM3LjEgNS4yIDguNyAxNS4yIDMuNSAyMi4zbC02NCA4OGMtMi44IDMuOC03IDYuMi0xMS43IDYuNXMtOS4zLTEuMy0xMi42LTQuNmwtNDAtNDBjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMGwyNi44IDI2LjggNTMtNzIuOWM1LjItNy4xIDE1LjItOC43IDIyLjQtMy41eiJdfSxObmE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibmFpcmEtc2lnbiIsaWNvbjpbNDQ4LDUxMixbXSwiZTFmNiIsIk0xMjIuNiA0Ni4zYy03LjgtMTEuNy0yMi40LTE3LTM1LjktMTIuOVM2NCA0OS45IDY0IDY0bDAgMTkyLTMyIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMzIgMCAwIDE0NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTQ0IDg5LjUgMCAxMDcuOCAxNjEuOGM3LjggMTEuNyAyMi40IDE3IDM1LjkgMTIuOVMzODQgNDYyLjEgMzg0IDQ0OGwwLTE0NCAzMiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0zMiAwIDAtMTkyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgMTkyLTU3LjUgMC0xMzkuOC0yMDkuN3pNMjk0LjUgMzA0bDI1LjUgMCAwIDM4LjMtMjUuNS0zOC4zek0xODUuNSAyNTZsLTU3LjUgMCAwLTg2LjMgNTcuNSA4Ni4zeiJdfSxLb2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToid2lmaSIsaWNvbjpbNTc2LDUxMixbIndpZmktMyIsIndpZmktc3Ryb25nIl0sImYxZWIiLCJNMjg4IDk2Yy05MC45IDAtMTczLjIgMzYtMjMzLjcgOTQuNi0xMi43IDEyLjMtMzMgMTItNDUuMi0uN3MtMTItMzMgLjctNDUuMkM4MS43IDc0LjkgMTc5LjkgMzIgMjg4IDMyUzQ5NC4zIDc0LjkgNTY2LjMgMTQ0LjdjMTIuNyAxMi4zIDEzIDMyLjYgLjcgNDUuMnMtMzIuNiAxMy00NS4yIC43QzQ2MS4yIDEzMiAzNzguOSA5NiAyODggOTZ6TTI0MCA0MzJhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpNMTY4IDMyNi4yYy0xMS43IDEzLjMtMzEuOSAxNC41LTQ1LjIgMi44cy0xNC41LTMxLjktMi44LTQ1LjJDMTYxIDIzNy40IDIyMS4xIDIwOCAyODggMjA4czEyNyAyOS40IDE2OCA3NS44YzExLjcgMTMuMyAxMC40IDMzLjUtMi44IDQ1LjJzLTMzLjUgMTAuNC00NS4yLTIuOEMzNzguNiAyOTIuOSAzMzUuOCAyNzIgMjg4IDI3MnMtOTAuNiAyMC45LTEyMCA1NC4yeiJdfSxSbmE9S29lLE9uYT1Lb2UsbWY9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibW9uZXktY2hlY2stZG9sbGFyIixpY29uOls1MTIsNTEyLFsibW9uZXktY2hlY2stYWx0Il0sImY1M2QiLCJNNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjhMMCAzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzg0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yNTZjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgNjR6TTI5NiAyODhsMTI4IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTEyOCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0em0tMjQtODhjMC0xMy4zIDEwLjctMjQgMjQtMjRsMTI4IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTEyOCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHpNMTQ4IDE0NGMxMSAwIDIwIDkgMjAgMjBsMCA0IDggMGMxMSAwIDIwIDkgMjAgMjBzLTkgMjAtMjAgMjBsLTQ3LjUgMGMtNi45IDAtMTIuNSA1LjYtMTIuNSAxMi41IDAgNi4xIDQuNCAxMS4zIDEwLjQgMTIuM2w0MS43IDdjMjUuMyA0LjIgNDMuOSAyNi4xIDQzLjkgNTEuOCAwIDI2LjEtMTkgNDcuNy00NCA1MS44bDAgNC43YzAgMTEtOSAyMC0yMCAyMHMtMjAtOS0yMC0yMGwwLTQtMjQgMGMtMTEgMC0yMC05LTIwLTIwczktMjAgMjAtMjBsNTUuNSAwYzYuOSAwIDEyLjUtNS42IDEyLjUtMTIuNSAwLTYuMS00LjQtMTEuMy0xMC40LTEyLjNsLTQxLjctN0M5NC41IDI2OCA3NiAyNDYuMSA3NiAyMjAuNSA3NiAxOTEuNyA5OS4yIDE2OC4zIDEyOCAxNjhsMC00YzAtMTEgOS0yMCAyMC0yMHoiXX0sRm5hPW1mLCR3ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJleWUtbG93LXZpc2lvbiIsaWNvbjpbNTc2LDUxMixbImxvdy12aXNpb24iXSwiZjJhOCIsIk00MS0yNC45Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMFMtMi4zLS4zIDcgOS4xbDUyOCA1MjhjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC05Ni40LTk2LjRjMi43LTIuNCA1LjQtNC44IDgtNy4yIDQ2LjgtNDMuNSA3OC4xLTk1LjQgOTMtMTMxLjEgMy4zLTcuOSAzLjMtMTYuNyAwLTI0LjYtMTQuOS0zNS43LTQ2LjItODcuNy05My0xMzEuMS00Ny4xLTQzLjctMTExLjgtODAuNi0xOTIuNi04MC42LTU2LjggMC0xMDUuNiAxOC4yLTE0NiA0NC4yTDQxLTI0Ljl6TTIwNC41IDEzOC43YzIzLjUtMTYuOCA1Mi40LTI2LjcgODMuNS0yNi43IDc5LjUgMCAxNDQgNjQuNSAxNDQgMTQ0IDAgMzEuMS05LjkgNTkuOS0yNi43IDgzLjVsLTM0LjctMzQuN2MxMi43LTIxLjQgMTctNDcuNyAxMC4xLTczLjctMTMuNy01MS4yLTY2LjQtODEuNi0xMTcuNi02Ny45LTguNiAyLjMtMTYuNyA1LjctMjQgMTBsLTM0LjctMzQuN3pNODggMTU3LjljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlMMzI4LjIgNDY2YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOUw4OCAxNTcuOXpNNDUuNyAyNTEuM2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOUwxODEuOSA0NTUuNWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlMNDUuNyAyNTEuM3oiXX0sQm5hPSR3ZSxEd2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2lyY2xlLWFycm93LXVwIixpY29uOls1MTIsNTEyLFsiYXJyb3ctY2lyY2xlLXVwIl0sImYwYWEiLCJNMjU2IDUxMmEyNTYgMjU2IDAgMSAwIDAtNTEyIDI1NiAyNTYgMCAxIDAgMCA1MTJ6bTE3LTM3N2w4MCA4MGM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC0zOS0zOSAwIDE1MC4xYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtMTUwLjEtMzkgMzljLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsODAtODBjOS40LTkuNCAyNC42LTkuNCAzMy45IDB6Il19LEhuYT1Ed2UscW5hPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNhbWVyYS1yZXRybyIsaWNvbjpbNTEyLDUxMixbMTI4MjQ3XSwiZjA4MyIsIk0wIDQxNmwwLTIwOCAxMzYuMiAwYzEzLjUtMjAuMiAzMi0zNi44IDUzLjctNDhMMCAxNjAgMCAxMjUuN2MwLTM1LjMgMjguNy02NCA2NC02NGwuMSAwQzY1LjMgNDUuMSA3OS4xIDMyIDk2IDMybDMyIDBjMTYuOSAwIDMwLjcgMTMuMSAzMS45IDI5LjdsMzIuMSAwIDUxLjItMjMuOGM4LjQtMy45IDE3LjYtNiAyNi45LTZMNDQ4IDMyYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgNjQtMTkwIDBjMjEuNyAxMS4yIDQwLjIgMjcuOCA1My43IDQ4bDEzNi4yIDAgMCAyMDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NHpNMjU2IDE5MmE5Ni4xIDk2LjEgMCAxIDAgMCAxOTIuMSA5Ni4xIDk2LjEgMCAxIDAgMC0xOTIuMXoiXX0sam5hPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNhcHN1bGVzIixpY29uOls1NzYsNTEyLFtdLCJmNDZiIiwiTTk2IDExMmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4bDAgMTEyLTk2IDAgMC0xMTJ6bS02NCAwbDAgMjg4YzAgNjEuOSA1MC4xIDExMiAxMTIgMTEyczExMi01MC4xIDExMi0xMTJsMC0xMDUuOCAxMTYuMyAxNjkuNWMzNS41IDUxLjcgMTA1LjMgNjQuMyAxNTYgMjguMXM2My0xMDcuNSAyNy41LTE1OS4yTDQyNy4zIDE0NS4zYy0zNS41LTUxLjctMTA1LjMtNjQuMy0xNTYtMjguMS01LjYgNC0xMC43IDguNC0xNS4zIDEzLjFsMC0xOC4zQzI1NiA1MC4xIDIwNS45IDAgMTQ0IDBTMzIgNTAuMSAzMiAxMTJ6TTI5Ni42IDI0MC4yYy0xNi0yMy4zLTEwLTU1LjMgMTEuOS03MSAyMS4yLTE1LjEgNTAuNS0xMC4zIDY2IDEyLjJsNjcgOTcuNi03OS45IDU1LjktNjUtOTQuOHoiXX0sVm5hPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBvbyIsaWNvbjpbNTEyLDUxMixbMTI4MTY5XSwiZjJmZSIsIk0yNjguOSAuOWMtNS41LS43LTExIDEuNC0xNC41IDUuN3MtNC42IDEwLjEtMi44IDE1LjRjMi44IDguMiA0LjMgMTYuOSA0LjMgMjYuMSAwIDQ0LjEtMzUuNyA3OS45LTc5LjggODBMMTYwIDEyOGMtMzUuMyAwLTY0IDI4LjctNjQgNjQgMCAxOS4xIDguNCAzNi4zIDIxLjcgNDhMMTA0IDI0MGMtMzkuOCAwLTcyIDMyLjItNzIgNzIgMCAyMy4yIDExIDQzLjggMjggNTctMzQuMSA1LjctNjAgMzUuMy02MCA3MSAwIDM5LjggMzIuMiA3MiA3MiA3MmwzNjggMGMzOS44IDAgNzItMzIuMiA3Mi03MiAwLTM1LjctMjUuOS02NS4zLTYwLTcxIDE3LTEzLjIgMjgtMzMuOCAyOC01NyAwLTM5LjgtMzIuMi03Mi03Mi03MmwtMTMuNyAwYzEzLjMtMTEuNyAyMS43LTI4LjkgMjEuNy00OCAwLTM1LjMtMjguNy02NC02NC02NGwtNS41IDBjMy41LTEwIDUuNS0yMC44IDUuNS0zMiAwLTQ4LjYtMzYuMi04OC44LTgzLjEtOTUuMXpNMTkyIDI1NmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTk2IDMyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTY0IDEwOC4zYzAgMi40LS43IDQuOC0yLjIgNi43LTguMiAxMC41LTM5LjUgNDUtOTMuOCA0NXMtODUuNi0zNC42LTkzLjgtNDVjLTEuNS0xLjktMi4yLTQuMy0yLjItNi43IDAtNi44IDUuNS0xMi4zIDEyLjMtMTIuM2wxNjcuNCAwYzYuOCAwIDEyLjMgNS41IDEyLjMgMTIuM3oiXX0sTHdlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InZvbHVtZSIsaWNvbjpbNTEyLDUxMixbMTI4MjY1LCJ2b2x1bWUtbWVkaXVtIl0sImY2YTgiLCJNNDggMzUybDQ4IDAgMTM0LjEgMTE5LjJjNi40IDUuNyAxNC42IDguOCAyMy4xIDguOCAxOS4yIDAgMzQuOC0xNS42IDM0LjgtMzQuOGwwLTM3OC40YzAtMTkuMi0xNS42LTM0LjgtMzQuOC0zNC44LTguNSAwLTE2LjcgMy4xLTIzLjEgOC44TDk2IDE2MCA0OCAxNjBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4bDAgOTZjMCAyNi41IDIxLjUgNDggNDggNDh6TTQ0MS4xIDEwN2MtMTAuMy04LjQtMjUuNC02LjgtMzMuOCAzLjVzLTYuOCAyNS40IDMuNSAzMy44QzQ0My4zIDE3MC43IDQ2NCAyMTAuOSA0NjQgMjU2cy0yMC43IDg1LjMtNTMuMiAxMTEuOGMtMTAuMyA4LjQtMTEuOCAyMy41LTMuNSAzMy44czIzLjUgMTEuOCAzMy44IDMuNWM0My4yLTM1LjIgNzAuOS04OC45IDcwLjktMTQ5cy0yNy43LTExMy44LTcwLjktMTQ5em0tNjAuNSA3NC41Yy0xMC4zLTguNC0yNS40LTYuOC0zMy44IDMuNXMtNi44IDI1LjQgMy41IDMzLjhDMzYxLjEgMjI3LjYgMzY4IDI0MSAzNjggMjU2cy02LjkgMjguNC0xNy43IDM3LjNjLTEwLjMgOC40LTExLjggMjMuNS0zLjUgMzMuOHMyMy41IDExLjggMzMuOCAzLjVDNDAyLjEgMzEyLjkgNDE2IDI4Ni4xIDQxNiAyNTZzLTEzLjktNTYuOS0zNS41LTc0LjV6Il19LFVuYT1Md2UsV25hPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImVsZXZhdG9yIixpY29uOls1MTIsNTEyLFtdLCJlMTZkIiwiTTI5Mi43LTQuN2w2NCA2NGM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGw2NC02NGM0LjYtNC42IDUuOS0xMS41IDMuNS0xNy40UzQzOC41LTMyIDQzMi0zMkwzMDQtMzJjLTYuNSAwLTEyLjMgMy45LTE0LjggOS45cy0xLjEgMTIuOSAzLjUgMTcuNHptLTE2MC0yMi42bC02NCA2NGMtNC42IDQuNi01LjkgMTEuNS0zLjUgMTcuNFM3My41IDY0IDgwIDY0bDEyOCAwYzYuNSAwIDEyLjMtMy45IDE0LjgtOS45czEuMS0xMi45LTMuNS0xNy40bC02NC02NGMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDB6TTY0IDEyOGMtMzUuMyAwLTY0IDI4LjctNjQgNjRMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzg0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yNTZjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMTI4em05NiA5NmE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6TTgwIDQwMGMwLTI2LjUgMjEuNS00OCA0OC00OGw2NCAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgMTZjMCAxNy43LTE0LjMgMzItMzIgMzJsLTk2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTZ6bTE5MiAwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4bDY0IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCAxNmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtOTYgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0xNnptMzItMTI4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6Il19LEduYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0YWciLGljb246WzUxMiw1MTIsWzEyNzk5MV0sImYwMmIiLCJNMzIuNSA5NmwwIDE0OS41YzAgMTcgNi43IDMzLjMgMTguNyA0NS4zbDE5MiAxOTJjMjUgMjUgNjUuNSAyNSA5MC41IDBMNDgzLjIgMzMzLjNjMjUtMjUgMjUtNjUuNSAwLTkwLjVsLTE5Mi0xOTJDMjc5LjIgMzguNyAyNjMgMzIgMjQ2IDMyTDk2LjUgMzJjLTM1LjMgMC02NCAyOC43LTY0IDY0em0xMTIgMTZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0eiJdfSxLbmE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmlsZS1jaXJjbGUtbWludXMiLGljb246WzU3Niw1MTIsW10sImU0ZWQiLCJNOTYgMEM2MC43IDAgMzIgMjguNyAzMiA2NGwwIDM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwxODAgMGMtMjIuNy0zMS41LTM2LTcwLjItMzYtMTEyIDAtMTAwLjYgNzcuNC0xODMuMiAxNzYtMTkxLjNsMC0zOC4xYzAtMTctNi43LTMzLjMtMTguNy00NS4zTDI5MC43IDE4LjdDMjc4LjcgNi43IDI2Mi41IDAgMjQ1LjUgMEw5NiAwek0zNTcuNSAxNzZMMjY0IDE3NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRMMjQwIDU4LjUgMzU3LjUgMTc2ek01NzYgNDAwYTE0NCAxNDQgMCAxIDAgLTI4OCAwIDE0NCAxNDQgMCAxIDAgMjg4IDB6bS02NCAwYzAgOC44LTcuMiAxNi0xNiAxNmwtMTI4IDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZsMTI4IDBjOC44IDAgMTYgNy4yIDE2IDE2eiJdfSxFd2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZG93bi1sb25nIixpY29uOlszMjAsNTEyLFsibG9uZy1hcnJvdy1hbHQtZG93biJdLCJmMzA5IiwiTTEzNy40IDUzNC42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDEyOC0xMjhjOS4yLTkuMiAxMS45LTIyLjkgNi45LTM0LjlTMzAwLjkgMzUyIDI4OCAzNTJsLTY0IDAgMC0zMzZjMC0yNi41LTIxLjUtNDgtNDgtNDhsLTMyIDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4bDAgMzM2LTY0IDBjLTEyLjkgMC0yNC42IDcuOC0yOS42IDE5LjhTLjIgMzk3LjUgOS40IDQwNi42bDEyOCAxMjh6Il19LFluYT1Fd2UsWm5hPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNvbXBhY3QtZGlzYyIsaWNvbjpbNTEyLDUxMixbMTI4MTkxLDEyODE5MiwxMjg0NDBdLCJmNTFmIiwiTTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDAgMjU2IDI1NiAwIDEgMSAtNTEyIDB6bTI1NiAzMmEzMiAzMiAwIDEgMSAwLTY0IDMyIDMyIDAgMSAxIDAgNjR6bS05Ni0zMmE5NiA5NiAwIDEgMCAxOTIgMCA5NiA5NiAwIDEgMCAtMTkyIDB6bS01Ni0xNmMwLTMyLjQgMTYuMy02Ni42IDQyLjgtOTMuMlMyMDcuNiAxMDQgMjQwIDEwNGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGMtNDcuOSAwLTkzLjcgMjMuNS0xMjcuMSA1Ni45UzU2IDE5Mi4xIDU2IDI0MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0eiJdfSxYbmE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic3VpdGNhc2Utcm9sbGluZyIsaWNvbjpbMzg0LDUxMixbXSwiZjVjMSIsIk0xNDQgMjRjMC00LjQgMy42LTggOC04bDgwIDBjNC40IDAgOCAzLjYgOCA4bDAgNzItOTYgMCAwLTcyek0zMjAgOTZsLTMyIDAgMC03MmMwLTMwLjktMjUuMS01Ni01Ni01NmwtODAgMEMxMjEuMS0zMiA5Ni02LjkgOTYgMjRsMCA3Mi0zMiAwQzI4LjcgOTYgMCAxMjQuNyAwIDE2MEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NCAwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDEyOCAwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yODhjMC0zNS4zLTI4LjctNjQtNjQtNjR6TTEyMCAyMDhsMTQ0IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTE0NCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0em0wIDEyOGwxNDQgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMTQ0IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6Il19LFB3ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJib29rLXF1cmFuIixpY29uOls0NDgsNTEyLFsicXVyYW4iXSwiZjY4NyIsIk02NCA1MTJsMjg4IDBjNTMgMCA5Ni00MyA5Ni05NmwwLTMyMGMwLTUzLTQzLTk2LTk2LTk2TDQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4TDAgMzM2YzAgMjAuOSAxMy40IDM4LjcgMzIgNDUuM0wzMiA0NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMzIgMHpNMzUyIDM4NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMjU2IDAgMC02NCAyNTYgMHpNMjczLjEgMTQ0LjRjMi41LTYuMSAxMS4yLTYuMSAxMy43IDBsMTAuMyAyNC44IDI2LjggMi4xYzYuNiAuNSA5LjIgOC43IDQuMiAxM0wzMDcuOCAyMDEuOSAzMTQgMjI4YzEuNSA2LjQtNS41IDExLjUtMTEuMSA4LjFsLTIyLjktMTQtMjIuOSAxNGMtNS42IDMuNC0xMi42LTEuNi0xMS4xLTguMWw2LjItMjYuMS0yMC40LTE3LjVjLTUtNC4zLTIuMy0xMi41IDQuMi0xM2wyNi44LTIuMSAxMC4zLTI0Ljh6TTEwMCAxOTJjMC02OC41IDU1LjUtMTI0IDEyNC0xMjQgMjMuOCAwIDQ2LjEgNi43IDY1IDE4LjQgNC44IDIuOSA2LjkgOC44IDUgMTQuMXMtNy4xIDguNi0xMi43IDhjLTMuMS0uMy02LjItLjUtOS40LS41LTQ2LjQgMC04NCAzNy42LTg0IDg0czM3LjYgODQgODQgODRjMy4yIDAgNi4zLS4yIDkuNC0uNSA1LjYtLjYgMTAuOCAyLjcgMTIuNyA4cy0uMyAxMS4yLTUgMTQuMWMtMTguOSAxMS43LTQxLjIgMTguNC02NSAxOC40LTY4LjUgMC0xMjQtNTUuNS0xMjQtMTI0eiJdfSxRbmE9UHdlLEpuYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwaG9uZS1zbGFzaCIsaWNvbjpbNTc2LDUxMixbXSwiZjNkZCIsIk01MzUtMjQuOWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlMNDEgNTM3LjFjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlMMTQxLjUgMzY4LjZDODkuMiAzMTAuNSA1MS42IDIzOC44IDM0LjggMTU5LjQgMTguNyA4My4xIDczLjkgMjAuNiAxMzguNSAyLjlsNS41LTEuNWMxOS43LTUuNCA0MC4zIDQuNyA0OC4xIDIzLjVsNDAuNSA5Ny4zYzYuOSAxNi41IDIuMSAzNS42LTExLjggNDdsLTQ0LjEgMzYuMWMxMi45IDI4LjUgMjkuNiA1NC44IDQ5LjUgNzguNUw1MzUtMjQuOXptLTE1MC40IDUzNGMtNjMtMTMuNC0xMjEuMy0zOS44LTE3MS43LTc2LjNMMjk3LjggMzQ4YzEyLjIgOC4yIDI1IDE1LjYgMzguMyAyMi4yTDM3NC43IDMyM2MxMS4zLTEzLjkgMzAuNC0xOC42IDQ3LTExLjhMNTE5IDM1MS44YzE4LjggNy44IDI4LjkgMjguNCAyMy41IDQ4LjFsLTEuNSA1LjVjLTE3LjYgNjQuNi04MC4yIDExOS44LTE1Ni40IDEwMy43eiJdfSxlbGE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicm9hZC1jaXJjbGUtY2hlY2siLGljb246WzY0MCw1MTIsW10sImU1NjQiLCJNMjg4IDMybC03Ni4zIDBjLTI5LjQgMC01NS4xIDIwLjEtNjIuMSA0OC42TDY1LjQgNDIwLjVDNTcuOSA0NTAuNyA4MC44IDQ4MCAxMTIgNDgwbDIwOS40IDBjLTExLjItMjQuNC0xNy40LTUxLjQtMTcuNC04MCAwLTI4LjYgNi4yLTU1LjcgMTcuNC04MC0uNSAwLTEgMC0xLjUgMC0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCA0OWMzNS4yLTM5LjkgODYuNy02NSAxNDQtNjUgOSAwIDE3LjggLjYgMjYuNSAxLjhsLTMyLTEyOS4yQzQ4My40IDUyLjEgNDU3LjggMzIgNDI4LjMgMzJsLTc2LjQgMCAwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtNjR6TTY0MCA0MDBhMTQ0IDE0NCAwIDEgMCAtMjg4IDAgMTQ0IDE0NCAwIDEgMCAyODggMHptLTg2LjYtNjAuOWM3LjEgNS4yIDguNyAxNS4yIDMuNSAyMi4zbC02NCA4OGMtMi44IDMuOC03IDYuMi0xMS43IDYuNXMtOS4zLTEuMy0xMi42LTQuNmwtNDAtNDBjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMGwyNi44IDI2LjggNTMtNzIuOWM1LjItNy4xIDE1LjItOC43IDIyLjQtMy41eiJdfSx0bGE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic2hvcC1sb2NrIixpY29uOls2NDAsNTEyLFtdLCJlNGE1IiwiTTIxLjUgMTgxLjFMNzguMyA2Ny40Qzg5LjIgNDUuNyAxMTEuMyAzMiAxMzUuNiAzMmwzMDQuOSAwYzI0LjIgMCA0Ni40IDEzLjcgNTcuMiAzNS40bDU1LjYgMTExLjFjLTguMi0xLjYtMTYuNi0yLjUtMjUuMi0yLjUtNTMuNyAwLTk5LjcgMzMuMS0xMTguNyA4MGwtNTcuMyAwIDAgMTc2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC0xOTIgMGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhsMC0xNzYuMWMtMjYuOC0xLjktNDgtMjQuMy00OC01MS42IDAtOCAxLjktMTYgNS41LTIzLjJ6TTEyOCAyNTZsMCAxMTJjMCA4LjggNy4yIDE2IDE2IDE2bDEyOCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTExMi0xNjAgMHptNDMyIDQ4LjFjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCA0Ny45IDY0IDAgMC00Ny45ek00MTYgNDAwYzAtMjAuOSAxMy40LTM4LjcgMzItNDUuM2wwLTUwLjZjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGwwIDUwLjZjMTguNiA2LjYgMzIgMjQuNCAzMiA0NS4zbDAgOTZjMCAyNi41LTIxLjUgNDgtNDggNDhsLTEyOCAwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTk2eiJdfSxJd2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaW1hZ2UtcG9ydHJhaXQiLGljb246WzM4NCw1MTIsWyJwb3J0cmFpdCJdLCJmM2UwIiwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwTDMyMCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzg0YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA2NHpNODAgMzY4YzAgOC44IDcuMiAxNiAxNiAxNmwxOTIgMGM4LjggMCAxNi03LjIgMTYtMTYgMC00NC4yLTM1LjgtODAtODAtODBsLTY0IDBjLTQ0LjIgMC04MCAzNS44LTgwIDgwek0xOTIgMjQ4YTU2IDU2IDAgMSAwIDAtMTEyIDU2IDU2IDAgMSAwIDAgMTEyeiJdfSxhbGE9SXdlLHNsYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJicmlkZ2UtbG9jayIsaWNvbjpbNTc2LDUxMixbXSwiZTRjYyIsIk0wIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMybDQ0OCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC04IDAgMCAzMi4yYzEzLjggLjYgMjcuMiAyLjggNDAgNi40bDAgNTAuN2MtMTQuOC02LTMxLTkuMy00OC05LjMtNzAuNyAwLTEyOCA1Ny4zLTEyOCAxMjhsMCAyNC40Yy0uNCAuMy0uNyAuNi0xLjEgMS0xNy4zLTI1LTQ2LjItNDEuMy03OC45LTQxLjMtNTMgMC05NiA0My05NiA5NmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0zMiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTk0YzAtMzguOC0yNi40LTcyLjYtNjQtODJsMC0xMTIgNDAgMCAwLTY0LTggMEMxNC4zIDk2IDAgODEuNyAwIDY0em00MjQgNjguNmwwLTM2LjYtODAgMCAwIDY0IDE4LjggMGMxOC4yLTEyLjggMzguOS0yMi4yIDYxLjItMjcuNHpNMjE2IDk2bDAgNjQgODAgMCAwLTY0LTgwIDB6bS00OCAwbC04MCAwIDAgNjQgODAgMCAwLTY0ek00OTYgMzA0LjFjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCA0Ny45IDY0IDAgMC00Ny45ek0zNTIgNDAwYzAtMjAuOSAxMy40LTM4LjcgMzItNDUuM2wwLTUwLjZjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGwwIDUwLjZjMTguNiA2LjYgMzIgMjQuNCAzMiA0NS4zbDAgOTZjMCAyNi41LTIxLjUgNDgtNDggNDhsLTEyOCAwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTk2eiJdfSxpbGE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaGFtbWVyIixpY29uOls2NDAsNTEyLFsxMjgyOTZdLCJmNmUzIiwiTTI0Ni45IDE4LjNMMjcxIDMuOGMyMS42LTEzIDQ2LjMtMTkuOCA3MS41LTE5LjggMzYuOCAwIDcyLjIgMTQuNiA5OC4yIDQwLjdsNjMuOSA2My45YzE1IDE1IDIzLjQgMzUuNCAyMy40IDU2LjZsMCAzMC45IDE5LjcgMTkuNyAwIDBjMTUuNi0xNS42IDQwLjktMTUuNiA1Ni42IDBzMTUuNiA0MC45IDAgNTYuNmwtNjQgNjRjLTE1LjYgMTUuNi00MC45IDE1LjYtNTYuNiAwcy0xNS42LTQwLjkgMC01Ni42TDQ2NCAyNDAgNDMzLjEgMjQwYy0yMS4yIDAtNDEuNi04LjQtNTYuNi0yMy40bC00OS4xLTQ5LjFjLTE1LTE1LTIzLjQtMzUuNC0yMy40LTU2LjZsMC0xMi43YzAtMTEuMi01LjktMjEuNy0xNS41LTI3LjRsLTQxLjYtMjVjLTEwLjQtNi4yLTEwLjQtMjEuMiAwLTI3LjR6TTUwLjcgNDAyLjdsMjIyLjEtMjIyLjEgOTAuNSA5MC41LTIyMi4xIDIyMi4xYy0yNSAyNS02NS41IDI1LTkwLjUgMHMtMjUtNjUuNSAwLTkwLjV6Il19LEF3ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJhcnJvdy11cC0xLTkiLGljb246WzUxMiw1MTIsWyJzb3J0LW51bWVyaWMtdXAiXSwiZjE2MyIsIk0xNTAuNiA0MS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtOTYgOTZjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMOTYgMTQxLjMgOTYgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0zMDYuNyA0MS40IDQxLjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtOTYtOTZ6TTQxOC43IDM4Yy04LjMtNi0xOS4xLTcuNy0yOC44LTQuNGwtNDggMTZjLTE2LjggNS42LTI1LjggMjMuNy0yMC4yIDQwLjVzMjMuNyAyNS44IDQwLjUgMjAuMmw1LjktMiAwIDUxLjYtMTYgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw5NiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xNiAwIDAtOTZjMC0xMC4zLTQuOS0xOS45LTEzLjMtMjZ6TTM2NS4xIDQzMC42Yy05LjYgMTQuOC01LjQgMzQuNiA5LjQgNDQuM3MzNC42IDUuNCA0NC4zLTkuNGw0Mi4xLTY0LjljMTIuNC0xOS4yIDE5LjEtNDEuNiAxOS4xLTY0LjUgMC00NC4yLTM1LjgtODAtODAtODBzLTgwIDM1LjgtODAgODBjMCAzNi4xIDIzLjkgNjYuNyA1Ni44IDc2LjZsLTExLjcgMTh6TTM3NiAzMzZhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHoiXX0scmxhPUF3ZSxvbGE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2hlc3Mta25pZ2h0IixpY29uOlszODQsNTEyLFs5ODIyXSwiZjQ0MSIsIk0xOTItMzJjMTA2IDAgMTkyIDg2IDE5MiAxOTJsMCAxMzMuNWMwIDE3LTYuOCAzMy4yLTE4LjcgNDUuMkwzMjAgMzg0IDM3MC44IDQzNC43YzguNSA4LjUgMTMuMiAyMCAxMy4yIDMyIDAgMjUtMjAuMyA0NS4yLTQ1LjIgNDUuM0w0NS4zIDUxMmMtMjUgMC00NS4yLTIwLjMtNDUuMi00NS4zIDAtMTIgNC44LTIzLjUgMTMuMi0zMkw2NCAzODQgNjQgMzQ5LjRjMC0xOC43IDguMi0zNi40IDIyLjMtNDguNmw4OS43LTc2LjgtNDggMC0xMi4xIDEyLjFjLTEyLjcgMTIuNy0zMCAxOS45LTQ4IDE5LjktMzcuNSAwLTY3LjktMzAuNC02Ny45LTY3LjlsMC04LjdjMC0yMi44IDguMi00NC45IDIzLjEtNjIuM0w5NiAzMiA5NiAwYzAtMTcuNyAxNC4zLTMyIDMyLTMybDY0IDB6TTE2MCA3MmEyNCAyNCAwIDEgMCAwIDQ4IDI0IDI0IDAgMSAwIDAtNDh6Il19LG5sYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJob3VzZS1mbG9vZC13YXRlci1jaXJjbGUtYXJyb3ctcmlnaHQiLGljb246WzY0MCw1MTIsW10sImU1MGYiLCJNMjg4LjUgMTEyYTE0NCAxNDQgMCAxIDAgLTI4OCAwIDE0NCAxNDQgMCAxIDAgMjg4IDB6TTE0MS4yIDQ0LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBsNTYgNTZjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZsLTU2IDU2Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42bDI4LjctMjguNy04OS40IDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZsODkuNCAwLTI4LjctMjguN2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZ6TTMzNi41IDExMmMwIDcxLjEtMzguNiAxMzMuMS05NiAxNjYuM2wwIDEyLjhjMjIuMSA0LjUgNDMuNCAxMy45IDYyLjQgMjguMiAyMi4xIDE2LjYgMjkuMSAxNi42IDUxLjIgMCAyNy41LTIwLjcgNTkuOS0zMS4yIDkyLjQtMzEuNCAzMy4xLS4yIDY2LjMgMTAuMiA5NC40IDMxLjQgNi45IDUuMiAxMi44IDkgMTggMTEuNyAuNiAuMyAxLjIgLjYgMS44IDEgNC4yIDIuMyA4LjUgNC42IDEyLjYgMS41IDYtNC41IDEyLjYtOCAxOS4zLTEwLjRsMC0xMTUuMiA0LjUgMGMxNS4yIDAgMjcuNS0xMi4zIDI3LjUtMjcuNSAwLTcuOS0zLjQtMTUuNS05LjQtMjAuN0w0NDQuNSAxMC41QzQzNi44IDMuNyA0MjYuOCAwIDQxNi41IDBzLTIwLjMgMy43LTI4IDEwLjVMMzI5LjkgNjEuOGM0LjMgMTYgNi42IDMyLjggNi42IDUwLjJ6bTMyIDg4YzAtMTMuMyAxMC43LTI0IDI0LTI0bDQ4IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRsMCA0OGMwIDEzLjMtMTAuNyAyNC0yNCAyNGwtNDggMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRsMC00OHpNNDc1LjEgNDEyLjFjMTkgMTQuNCA0MS45IDI4LjIgNjcuMiAzMy4zIDI2LjUgNS40IDU0LjMgLjggODAuNy0xOS4xIDEwLjYtOCAxMi43LTIzIDQuNy0zMy42cy0yMy0xMi43LTMzLjYtNC43Yy0xNC45IDExLjItMjguNiAxMy4xLTQyLjMgMTAuMy0xNC45LTMtMzAuOS0xMS45LTQ3LjgtMjQuNi0zOC40LTI5LTkwLjUtMjktMTI5IDAtMjQgMTguMS00MC43IDI2LjMtNTQuNSAyNi4zUzI5MCAzOTEuOCAyNjYgMzczLjdjLTM4LjQtMjktOTAuNS0yOS0xMjkgMC0yMS42IDE2LjMtNDEuMyAyNS44LTU4LjkgMjUuNy05LjYtLjEtMTkuOS0zLTMxLjItMTEuNS0xMC42LTgtMjUuNi01LjktMzMuNiA0LjdzLTUuOSAyNS42IDQuNyAzMy42YzE5LjEgMTQuNCAzOS40IDIxIDU5LjggMjEuMSAzMy45IC4yIDY0LjMtMTcuNCA4OC4xLTM1LjMgMjEuMy0xNi4xIDQ5LjktMTYuMSA3MS4yIDAgMjQuMiAxOC4zIDUyLjMgMzUuOSA4My40IDM1LjlzNTkuMS0xNy43IDgzLjQtMzUuOWMyMS4zLTE2LjEgNDkuOS0xNi4xIDcxLjIgMHptLTcxLjIgOTZjMjEuMy0xNi4xIDQ5LjktMTYuMSA3MS4yIDAgMTkgMTQuNCA0MS45IDI4LjIgNjcuMiAzMy4zIDI2LjUgNS40IDU0LjMgLjggODAuNy0xOS4xIDEwLjYtOCAxMi43LTIzIDQuNy0zMy42cy0yMy0xMi43LTMzLjYtNC43Yy0xNC45IDExLjItMjguNiAxMy4xLTQyLjMgMTAuMy0xNC45LTMtMzAuOS0xMS45LTQ3LjgtMjQuNi0zOC40LTI5LTkwLjUtMjktMTI5IDAtMjQgMTguMS00MC43IDI2LjMtNTQuNSAyNi4zUzI5MCA0ODcuOCAyNjYgNDY5LjdjLTM4LjQtMjktOTAuNS0yOS0xMjkgMC0yMS42IDE2LjMtNDEuMyAyNS44LTU4LjkgMjUuNy05LjYtLjEtMTkuOS0zLTMxLjItMTEuNS0xMC42LTgtMjUuNi01LjktMzMuNiA0LjdzLTUuOSAyNS42IDQuNyAzMy42YzE5LjEgMTQuNCAzOS40IDIxIDU5LjggMjEuMSAzMy45IC4yIDY0LjMtMTcuNCA4OC4xLTM1LjMgMjEuMy0xNi4xIDQ5LjktMTYuMSA3MS4yIDAgMjQuMiAxOC4zIDUyLjMgMzUuOSA4My40IDM1LjlzNTkuMS0xNy43IDgzLjQtMzUuOXoiXX0sZ2Y9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYXJyb3ctdXAtcmlnaHQtZnJvbS1zcXVhcmUiLGljb246WzUxMiw1MTIsWyJleHRlcm5hbC1saW5rIl0sImYwOGUiLCJNMzIwIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsODIuNyAwLTIwMS40IDIwMS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDQ0OCAxMDkuMyA0NDggMTkyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xNjBjMC0xNy43LTE0LjMtMzItMzItMzJMMzIwIDB6TTgwIDk2QzM1LjggOTYgMCAxMzEuOCAwIDE3NkwwIDQzMmMwIDQ0LjIgMzUuOCA4MCA4MCA4MGwyNTYgMGM0NC4yIDAgODAtMzUuOCA4MC04MGwwLTgwYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgODBjMCA4LjgtNy4yIDE2LTE2IDE2TDgwIDQ0OGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMjU2YzAtOC44IDcuMi0xNiAxNi0xNmw4MCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDgwIDk2eiJdfSxsbGE9Z2YsY2xhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImFycm93LWRvd24tdXAtYWNyb3NzLWxpbmUiLGljb246WzUxMiw1MTIsW10sImU0YWYiLCJNMjY1LjQgMTA1LjRsOTYtOTZjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsOTYgOTZjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBsLTQxLjQtNDEuNCAwIDExNC43IDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTMyMCAwIDAgMTE0LjcgNDEuNC00MS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNsLTk2IDk2Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtOTYtOTZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBMOTYgNDAyLjcgOTYgMjg4IDMyIDI4OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwzMjAgMCAwLTExNC43LTQxLjQgNDEuNGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjN6TTQxNiAzMzZsMCAxNDRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0xNDQgNjQgMHpNOTYgMTc2TDk2IDMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCAxNDQtNjQgMHoiXX0sTndlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZhY2UtZ3Jpbi1iZWFtIixpY29uOls1MTIsNTEyLFsxMjg1MTYsImdyaW4tYmVhbSJdLCJmNTgyIiwiTTI1NiA1MTJhMjU2IDI1NiAwIDEgMCAwLTUxMiAyNTYgMjU2IDAgMSAwIDAgNTEyek0zODYuNyAzMDguOWMxMS45LTMuNyAyMy45IDYuMyAxOS42IDE4LjEtMjIuNCA2MS4zLTgxLjMgMTA1LjEtMTUwLjMgMTA1LjFTMTI4LjEgMzg4LjIgMTA1LjcgMzI2LjljLTQuMy0xMS44IDcuNy0yMS44IDE5LjYtMTguMSAzOS4yIDEyLjIgODMuNyAxOS4xIDEzMC43IDE5LjFzOTEuNS02LjkgMTMwLjctMTkuMXpNMTc2IDE4MGMtMTUuNSAwLTI4IDEyLjUtMjggMjhsMCA4YzAgMTEtOSAyMC0yMCAyMHMtMjAtOS0yMC0yMGwwLThjMC0zNy42IDMwLjQtNjggNjgtNjhzNjggMzAuNCA2OCA2OGwwIDhjMCAxMS05IDIwLTIwIDIwcy0yMC05LTIwLTIwbDAtOGMwLTE1LjUtMTIuNS0yOC0yOC0yOHptMTMyIDI4bDAgOGMwIDExLTkgMjAtMjAgMjBzLTIwLTktMjAtMjBsMC04YzAtMzcuNiAzMC40LTY4IDY4LTY4czY4IDMwLjQgNjggNjhsMCA4YzAgMTEtOSAyMC0yMCAyMHMtMjAtOS0yMC0yMGwwLThjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjh6Il19LGRsYT1Od2UsUndlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InJlY3RhbmdsZS1hZCIsaWNvbjpbNTEyLDUxMixbImFkIl0sImY2NDEiLCJNNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjhMMCAzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzg0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yNTZjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgNjR6TTQxNiAxODRsMCAxNDRjMCAxMy4zLTEwLjcgMjQtMjQgMjQtNy4xIDAtMTMuNS0zLjEtMTcuOS04LTEwLjIgNS4xLTIxLjggOC0zNC4xIDgtNDIgMC03Ni0zNC03Ni03NnMzNC03NiA3Ni03NmM5LjkgMCAxOS4zIDEuOSAyOCA1LjNsMC0yMS4zYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6bS00OCA5MmEyOCAyOCAwIDEgMCAtNTYgMCAyOCAyOCAwIDEgMCA1NiAwek0xNjAgMjA4Yy04LjggMC0xNiA3LjItMTYgMTZsMCAzMiA0OCAwIDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0xNiAwem0zMiA5NmwtNDggMCAwIDI0YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtMTA0YzAtMzUuMyAyOC43LTY0IDY0LTY0bDE2IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAxMDRjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC0yNHoiXX0sdWxhPVJ3ZSxPd2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYm9vay10YW5ha2giLGljb246WzQ0OCw1MTIsWyJ0YW5ha2giXSwiZjgyNyIsIk0zNTIgNTEyTDMyIDUxMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwwLTY2LjdDMTMuNCAzNzQuNyAwIDM1Ni45IDAgMzM2TDAgNDhDMCAyMS41IDIxLjUgMCA0OCAwTDM1MiAwYzUzIDAgOTYgNDMgOTYgOTZsMCAzMjBjMCA1My00MyA5Ni05NiA5NnptMzItOTZjMC0xNy43LTE0LjMtMzItMzItMzJsLTI1NiAwIDAgNjQgMjU2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJ6TTExMy45IDIyOWMtMS4yIDItMS45IDQuMi0xLjkgNi42IDAgNi45IDUuNiAxMi41IDEyLjUgMTIuNWw1Ni45IDAgMzAuNSA0OS4yYzIuNiA0LjIgNy4yIDYuOCAxMi4yIDYuOHM5LjYtMi42IDEyLjItNi44bDMwLjUtNDkuMiA1Ni45IDBjNi45IDAgMTIuNS01LjYgMTIuNS0xMi41IDAtMi4zLS42LTQuNi0xLjktNi42bC0yNy44LTQ1IDI3LjgtNDVjMS4yLTIgMS45LTQuMiAxLjktNi42IDAtNi45LTUuNi0xMi41LTEyLjUtMTIuNWwtNTYuOSAwLTMwLjUtNDkuMkMyMzMuNiA2Ni42IDIyOSA2NCAyMjQgNjRzLTkuNiAyLjYtMTIuMiA2LjhsLTMwLjUgNDkuMi01Ni45IDBjLTYuOSAwLTEyLjUgNS42LTEyLjUgMTIuNSAwIDIuMyAuNiA0LjYgMS45IDYuNmwyNy44IDQ1LTI3LjggNDV6Il19LHBsYT1Pd2UsRndlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImhvdC10dWItcGVyc29uIixpY29uOls0NDgsNTEyLFsiaG90LXR1YiJdLCJmNTkzIiwiTTI0MCA0MGMwIDEzLjYgNS44IDI2LjUgMTUuOCAzNS42bDI2LjUgMjMuOGMyNCAyMS42IDM3LjcgNTIuMyAzNy43IDg0LjYgMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRjMC0xOC43LTcuOS0zNi40LTIxLjgtNDguOWwtMjYuNS0yMy44QzIwMy41IDkzLjEgMTkyIDY3LjIgMTkyIDQwIDE5MiAyNi43IDIwMi43IDE2IDIxNiAxNnMyNCAxMC43IDI0IDI0ek0wIDMzNmwwLTgwYzAtMzUuMyAyOC43LTY0IDY0LTY0bDE5LjcgMGM4LjEgMCAxNi4yIDEuNiAyMy44IDQuNmwxMzcuMSA1NC44YzcuNiAzIDE1LjYgNC42IDIzLjggNC42TDM4NCAyNTZjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAxMjhjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDMzNnptOTYtMTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0bDAgODBjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTgwYzAtMTMuMy0xMC43LTI0LTI0LTI0em0xNTIgMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCA4MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtODB6bTEwNC0yNGMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCA4MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtODBjMC0xMy4zLTEwLjctMjQtMjQtMjR6TTMyOCAxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNCAwIDEzLjYgNS44IDI2LjUgMTUuOCAzNS42bDI2LjUgMjMuOGMyNCAyMS42IDM3LjcgNTIuMyAzNy43IDg0LjYgMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRjMC0xOC43LTcuOS0zNi40LTIxLjgtNDguOWwtMjYuNS0yMy44QzMxNS41IDkzLjEgMzA0IDY3LjIgMzA0IDQwIDMwNCAyNi43IDMxNC43IDE2IDMyOCAxNnpNNjQgNDBhNTYgNTYgMCAxIDEgMCAxMTIgNTYgNTYgMCAxIDEgMC0xMTJ6Il19LGhsYT1Gd2UsZmxhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZpbGUtaGFsZi1kYXNoZWQiLGljb246WzM4NCw1MTIsW10sImU2OTgiLCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRsMCAyNTYgMzg0IDAgMC0xNDkuNWMwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0wyNTguNyAxOC43QzI0Ni43IDYuNyAyMzAuNSAwIDIxMy41IDBMNjQgMHpNMzI1LjUgMTc2TDIzMiAxNzZjLTEzLjMgMC0yNC0xMC43LTI0LTI0TDIwOCA1OC41IDMyNS41IDE3NnpNMCAzNTJsMCA2NCA2NCAwIDAtNjQtNjQgMHpNNjQgNTEybDAtNjQtNjQgMGMwIDM1LjMgMjguNyA2NCA2NCA2NHptMzIgMGw4MCAwIDAtNjQtODAgMCAwIDY0em0xMTIgMGw4MCAwIDAtNjQtODAgMCAwIDY0em0xMTIgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwtNjQgMCAwIDY0em02NC0xNjBsLTY0IDAgMCA2NCA2NCAwIDAtNjR6Il19LEJ3ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJvdXRkZW50IixpY29uOls0NDgsNTEyLFsiZGVkZW50Il0sImYwM2IiLCJNLjQgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJsMzg0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTM4NCAwQzE0LjggOTYgLjQgODEuNyAuNCA2NHptMTkyIDEyOGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwxOTIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMTkyIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyem0zMiA5NmwxOTIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMTkyIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6TS40IDQ0OGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwzODQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMzg0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek0uNyAyNjguNmMtOC4yLTYuNC04LjItMTguOSAwLTI1LjNsMTAxLjktNzkuM2MxMC41LTguMiAyNS44LS43IDI1LjggMTIuNmwwIDE1OC42YzAgMTMuMy0xNS4zIDIwLjgtMjUuOCAxMi42TC43IDI2OC42eiJdfSxtbGE9QndlLGdsYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoYW5kLXBlYWNlIixpY29uOls0NDgsNTEyLFs5OTk2XSwiZjI1YiIsIk0xOTIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDIwOC02NCAwIDAtMjA4YzAtMTcuNyAxNC4zLTMyIDMyLTMyem05NiAxNjBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyem02NCA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgNjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC02NHpNNjEuMyA1MS4yTDE0My45IDI0MCA3NC4xIDI0MCAyLjcgNzYuOEMtNC40IDYwLjYgMyA0MS44IDE5LjIgMzQuN1M1NC4yIDM1IDYxLjMgNTEuMnptMjcgMjIxLjNsLS4yLS41IDk1LjkgMGMyMi4xIDAgNDAgMTcuOSA0MCA0MHMtMTcuOSA0MC00MCA0MGwtNTYgMGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmw1NiAwYzM5LjggMCA3Mi0zMi4yIDcyLTcybDAtLjZjOS40IDUuNCAyMC4zIDguNiAzMiA4LjYgMTMuMiAwIDI1LjQtNCAzNS42LTEwLjggOC43IDI0LjkgMzIuNSA0Mi44IDYwLjQgNDIuOCAxMS43IDAgMjIuNi0zLjEgMzItOC42bDAgOC42YzAgODguNC03MS42IDE2MC0xNjAgMTYwbC02MS43IDBjLTQyLjQgMC04My4xLTE2LjktMTEzLjEtNDYuOUw2OS41IDQ1My41QzQ1LjUgNDI5LjUgMzIgMzk2LjkgMzIgMzYzbDAtMjdjMC0zMi43IDI0LjYtNTkuNyA1Ni4zLTYzLjV6Il19LGJsYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoZWFkLXNpZGUtdmlydXMiLGljb246WzUxMiw1MTIsW10sImUwNjQiLCJNMzI5LjcgNDQ4Yy01LjEgMC05LjcgMy43LTkuNyA4LjhsMCA3LjJjMCAyNi41LTIxLjUgNDgtNDggNDhsLTE2MCAwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTYzLjZjMC0xMi42LTUuMS0yNC41LTEzLjEtMzQuMi0zMS44LTM4LjctNTAuOS04OC4yLTUwLjktMTQyLjIgMC0xMjMuNyAxMDAuMy0yMjQgMjI0LTIyNCAxMTIuNyAwIDIwNiA4My4zIDIyMS43IDE5MS43IC40IDMgMS43IDUuOSAzLjYgOC4zbDM1LjggNDIuOWM3IDguNCAxMC45IDE5LjEgMTAuOSAzMC4xIDAgMjUuOS0yMSA0Ny00NyA0N2wtMSAwYy04LjggMC0xNiA3LjItMTYgMTZsMCA0OGMwIDM1LjMtMjguNyA2NC02NCA2NGwtMzguMyAwek0yMjQgNjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0IDAgMjIuOS0yNy43IDM0LjQtNDMuOSAxOC4yLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjljMTYuMiAxNi4yIDQuNyA0My45LTE4LjIgNDMuOS0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0YzIyLjkgMCAzNC40IDI3LjcgMTguMiA0My45LTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGMxNi4yLTE2LjIgNDMuOS00LjcgNDMuOSAxOC4yIDAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0yMi45IDI3LjctMzQuNCA0My45LTE4LjIgOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45Yy0xNi4yLTE2LjItNC43LTQzLjkgMTguMi00My45IDEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0Yy0yMi45IDAtMzQuNC0yNy43LTE4LjItNDMuOSA5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwYy0xNi4yIDE2LjItNDMuOSA0LjctNDMuOS0xOC4yIDAtMTMuMy0xMC43LTI0LTI0LTI0em0tMzIgODhhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em00MCA4OGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAweiJdfSx2bGE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY29tcGFzcyIsaWNvbjpbNTEyLDUxMixbMTI5NTE3XSwiZjE0ZSIsIk0yNTYgNTEyYTI1NiAyNTYgMCAxIDAgMC01MTIgMjU2IDI1NiAwIDEgMCAwIDUxMnptNTAuNy0xODYuOUwxNjIuNCAzODAuNmMtMTkuNCA3LjUtMzguNS0xMS42LTMxLTMxbDU1LjUtMTQ0LjNjMy4zLTguNSA5LjktMTUuMSAxOC40LTE4LjRsMTQ0LjMtNTUuNWMxOS40LTcuNSAzOC41IDExLjYgMzEgMzFMMzI1LjEgMzA2LjdjLTMuMiA4LjUtOS45IDE1LjEtMTguNCAxOC40ek0yODggMjU2YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6Il19LHhsYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwZW4tbmliIixpY29uOls1MTIsNTEyLFsxMDAwMV0sImY1YWQiLCJNMzY4LjUgMTguM2wtNTAuMSA1MC4xIDEyNS4zIDEyNS4zIDUwLjEtNTAuMWMyMS45LTIxLjkgMjEuOS01Ny4zIDAtNzkuMkw0NDcuNyAxOC4zYy0yMS45LTIxLjktNTcuMy0yMS45LTc5LjIgMHpNMjc5LjMgOTcuMmwtLjUgLjEtMTQ0LjEgNDMuMmMtMTkuOSA2LTM1LjcgMjEuMi00Mi4zIDQxTDMuOCA0NDUuOGMtMi45IDguNy0xLjkgMTguMiAyLjUgMjZMMTYxLjcgMzE2LjRjLTEuMS00LTEuNi04LjEtMS42LTEyLjQgMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4Yy00LjMgMC04LjUtLjYtMTIuNC0xLjZMNDAuMyA1MDUuN2M3LjggNC40IDE3LjIgNS40IDI2IDIuNWwyNjQuMy04OC42YzE5LjctNi42IDM1LTIyLjQgNDEtNDIuM2w0My4yLTE0NC4xIC4xLS41LTEzNS41LTEzNS41eiJdfSx5bGE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidGVudC1hcnJvd3MtZG93biIsaWNvbjpbNTEyLDUxMixbXSwiZTU4MSIsIk0xODUuNSAxMjFjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtMzEgMzEgMC0xMDIuMWMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDEwMi4xLTMxLTMxYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDcyIDcyYzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDcyLTcyem0yNDggNzJsNzItNzJjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtMzEgMzEgMC0xMDIuMWMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDEwMi4xLTMxLTMxYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDcyIDcyYzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwek02MC4zIDI5Mi42TDM3LjEgNDc2Yy0yLjQgMTkuMSAxMi41IDM2IDMxLjcgMzZsMTU0LjUgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTExNy40YzAtNS45IDQuNy0xMC42IDEwLjYtMTAuNiA0IDAgNy43IDIuMyA5LjUgNS45bDY4LjIgMTM2LjVjNS40IDEwLjggMTYuNSAxNy43IDI4LjYgMTcuN2w3MS45IDBjMTkuMyAwIDM0LjItMTYuOSAzMS43LTM2TDQ1Mi43IDI5Mi43Yy0xLjItOS43LTYuOS0xOC40LTE1LjMtMjMuNEwyNzEuOSAxNjkuOWMtMTAuMi02LjEtMjIuOS02LjEtMzMuMSAuMUw3NS40IDI2OS4zYy04LjMgNS4xLTEzLjkgMTMuNy0xNS4xIDIzLjN6Il19LEh3ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmb3J3YXJkLWZhc3QiLGljb246WzUxMiw1MTIsWzkxOTcsImZhc3QtZm9yd2FyZCJdLCJmMDUwIiwiTTE5LjggNDc3LjZjMTIgNSAyNS43IDIuMiAzNC45LTYuOUwyMjQgMzAxLjMgMjI0IDQ0OGMwIDEyLjkgNy44IDI0LjYgMTkuOCAyOS42czI1LjcgMi4yIDM0LjktNi45TDQ0OCAzMDEuMyA0NDggNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0zODRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAxNDYuNy0xNjkuNC0xNjkuNGMtOS4yLTkuMi0yMi45LTExLjktMzQuOS02LjlTMjI0IDUxLjEgMjI0IDY0TDIyNCAyMTAuNyA1NC42IDQxLjRjLTkuMi05LjItMjIuOS0xMS45LTM0LjktNi45UzAgNTEuMSAwIDY0TDAgNDQ4YzAgMTIuOSA3LjggMjQuNiAxOS44IDI5LjZ6Il19LHdsYT1Id2Usa2xhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNyb3AiLGljb246WzUxMiw1MTIsW10sImYxMjUiLCJNNDQ4IDEwOS4zbDU0LjYtNTQuNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEw0MDIuNyA2NCAxNzYgNjQgMTc2IDEyOCAzMzguNyAxMjggMTI4IDMzOC43IDEyOCAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMlM2NCAxNC4zIDY0IDMybDAgMzItMzIgMEMxNC4zIDY0IDAgNzguMyAwIDk2czE0LjMgMzIgMzIgMzJsMzIgMCAwIDI1NmMwIDM1LjMgMjguNyA2NCA2NCA2NGwyMDggMCAwLTY0LTE2Mi43IDAgMjEwLjctMjEwLjcgMCAzMDYuN2MwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMzIgMzIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMzIgMCAwLTI3NC43eiJdfSxxd2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToid2hpc2tleS1nbGFzcyIsaWNvbjpbNDQ4LDUxMixbMTI5MzQ3LCJnbGFzcy13aGlza2V5Il0sImY3YTAiLCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NEwwIDM1MmMwIDcwLjcgNTcuMyAxMjggMTI4IDEyOGwxOTIgMGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOGwwLTI4OGMwLTE3LjctMTQuMy0zMi0zMi0zMkwzMiAzMnpNNjQgMjU2bDAtMTYwIDMyMCAwIDAgMTYwLTMyMCAweiJdfSxTbGE9cXdlLF9sYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzcXVhcmUiLGljb246WzQ0OCw1MTIsWzk2MzIsOTcyMyw5NzI0LDYxNTkwXSwiZjBjOCIsIk02NCAzMmwzMjAgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJ6Il19LGp3ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmYWNlLWdyaW4iLGljb246WzUxMiw1MTIsWzEyODUxMiwiZ3JpbiJdLCJmNTgwIiwiTTI1NiA1MTJhMjU2IDI1NiAwIDEgMCAwLTUxMiAyNTYgMjU2IDAgMSAwIDAgNTEyek0zODYuNyAzMDguOWMxMS45LTMuNyAyMy45IDYuMyAxOS42IDE4LjEtMjIuNCA2MS4zLTgxLjMgMTA1LjEtMTUwLjMgMTA1LjFTMTI4LjEgMzg4LjIgMTA1LjcgMzI2LjljLTQuMy0xMS44IDcuNy0yMS44IDE5LjYtMTguMSAzOS4yIDEyLjIgODMuNyAxOS4xIDEzMC43IDE5LjFzOTEuNS02LjkgMTMwLjctMTkuMXpNMTQ0IDIwOGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xOTItMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0eiJdfSxNbGE9andlLHpsYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmaWxlLWNvbnRyYWN0IixpY29uOlszODQsNTEyLFtdLCJmNTZjIiwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwTDIxMy41IDBjMTcgMCAzMy4zIDYuNyA0NS4zIDE4LjdMMzY1LjMgMTI1LjNjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM0wzODQgNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA2NHptMjA4LTUuNWwwIDkzLjVjMCAxMy4zIDEwLjcgMjQgMjQgMjRMMzI1LjUgMTc2IDIwOCA1OC41ek04OCA2NEM3NC43IDY0IDY0IDc0LjcgNjQgODhzMTAuNyAyNCAyNCAyNGw0OCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0TDg4IDY0em0wIDk2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDQ4IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTQ4IDB6bTcwLjMgMTYwYy0xMS4zIDAtMjEuOSA1LjEtMjguOSAxMy45TDY5LjMgNDA5Yy04LjMgMTAuMy02LjYgMjUuNSAzLjcgMzMuN3MyNS41IDYuNiAzMy43LTMuOGw0Ny4xLTU4LjggMTUuMiA1MC43YzMgMTAuMiAxMi40IDE3LjEgMjMgMTcuMWwxMDQgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtODYuMSAwLTE2LjEtNTMuNmMtNC43LTE1LjctMTkuMS0yNi40LTM1LjUtMjYuNHoiXX0sQ2xhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImFuZ2xlLXVwIixpY29uOlszODQsNTEyLFs4OTYzXSwiZjEwNiIsIk0xNjkuNCAxMzcuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMGwxNjAgMTYwYzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwTDE5MiAyMDUuMyA1NC42IDM0Mi42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM2wxNjAtMTYweiJdfSxWd2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmFjZS1zbWlsZSIsaWNvbjpbNTEyLDUxMixbMTI4NTc4LCJzbWlsZSJdLCJmMTE4IiwiTTI1NiA1MTJhMjU2IDI1NiAwIDEgMCAwLTUxMiAyNTYgMjU2IDAgMSAwIDAgNTEyek0xNjUuNCAzMjEuOWMyMC40IDI4IDUzLjQgNDYuMSA5MC42IDQ2LjFzNzAuMi0xOC4xIDkwLjYtNDYuMWM3LjgtMTAuNyAyMi44LTEzLjEgMzMuNS01LjNzMTMuMSAyMi44IDUuMyAzMy41QzM1Ni4zIDM5MCAzMDkuMiA0MTYgMjU2IDQxNnMtMTAwLjMtMjYtMTI5LjQtNjUuOWMtNy44LTEwLjctNS40LTI1LjcgNS4zLTMzLjVzMjUuNy01LjQgMzMuNSA1LjN6TTE0NCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHoiXX0sVGxhPVZ3ZSwkbGE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGVyc29uLWRyZXNzLWJ1cnN0IixpY29uOls2NDAsNTEyLFtdLCJlNTQ0IiwiTTIwOCA0MC4xYzEzLjMgMCAyNC0xMC43IDI0LTI0bDAtNDhjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCA0OGMwIDEzLjMgMTAuNyAyNCAyNCAyNHpNOCAxNDQuMWMwIDEzLjMgMTAuNyAyNCAyNCAyNGw0OCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC00OCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHptOTIuNSAxNDEuNGwzMy45LTMzLjljOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMEw2Ni42IDI1MS42Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDB6TTY2LjYgMi43Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWwzMy45IDMzLjljOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDEwMC41IDIuN0M5MS4xLTYuNyA3Ni02LjcgNjYuNiAyLjd6TTM1MiA4MGE1NiA1NiAwIDEgMCAwLTExMiA1NiA1NiAwIDEgMCAwIDExMnpNMjQ2LjIgMzg0bDI1LjggMCAwIDEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTI4IDMyIDAgMCAxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTEyOCAyNS44IDBjMTAuOSAwIDE4LjYtMTAuNyAxNS4yLTIxLjFsLTQzLTEyOSA0OC4zIDY1LjFjMTAuNSAxNC4yIDMwLjYgMTcuMiA0NC44IDYuNnMxNy4yLTMwLjYgNi42LTQ0LjhsLTcwLjUtOTVDNDM0IDEzMiAzOTQuMyAxMTIgMzUyIDExMnMtODIgMjAtMTA3LjIgNTMuOWwtNzAuNSA5NWMtMTAuNSAxNC4yLTcuNiAzNC4yIDYuNiA0NC44czM0LjIgNy42IDQ0LjgtNi42bDQ4LjMtNjUuMS00MyAxMjljLTMuNSAxMC40IDQuMyAyMS4xIDE1LjIgMjEuMXoiXX0sRGxhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImRpdmlkZSIsaWNvbjpbNDQ4LDUxMixbMTAxMzUsMjQ3XSwiZjUyOSIsIk0yMjQgNDhhNTYgNTYgMCAxIDEgMCAxMTIgNTYgNTYgMCAxIDEgMC0xMTJ6TTAgMjU2YzAtMTcuNyAxNC4zLTMyIDMyLTMybDM4NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDMyIDI4OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTE2OCA0MDhhNTYgNTYgMCAxIDEgMTEyIDAgNTYgNTYgMCAxIDEgLTExMiAweiJdfSxMbGE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY29kZS1mb3JrIixpY29uOls0NDgsNTEyLFtdLCJlMTNiIiwiTTgwIDEwNGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bTgwLTI0YzAgMzIuOC0xOS43IDYxLTQ4IDczLjNsMCAyMi43YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDEyOCAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtMjIuN2MtMjguMy0xMi4zLTQ4LTQwLjUtNDgtNzMuMyAwLTQ0LjIgMzUuOC04MCA4MC04MHM4MCAzNS44IDgwIDgwYzAgMzIuOC0xOS43IDYxLTQ4IDczLjNsMCAyMi43YzAgNjEuOS01MC4xIDExMi0xMTIgMTEybC0zMiAwIDAgNzAuN2MyOC4zIDEyLjMgNDggNDAuNSA0OCA3My4zIDAgNDQuMi0zNS44IDgwLTgwIDgwcy04MC0zNS44LTgwLTgwYzAtMzIuOCAxOS43LTYxIDQ4LTczLjNsMC03MC43LTMyIDBDOTguMSAyODggNDggMjM3LjkgNDggMTc2bDAtMjIuN0MxOS43IDE0MSAwIDExMi44IDAgODAgMCAzNS44IDM1LjggMCA4MCAwczgwIDM1LjggODAgODB6bTIwOCAyNGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6TTI0OCA0MzJhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHoiXX0sRWxhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImhvdXNlLWZsYWciLGljb246WzY0MCw1MTIsW10sImU1MGQiLCJNNDcyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsOTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMybC05NiAwIDAgMjg4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtNDQ4YzAtMTcuNyAxNC4zLTMyIDMyLTMyek0yODMuNSA1OS4xbDEwMC41IDk2LjkgMCAzNTYtMjU2IDBjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtMTQ0LTE5LjkgMGMtMTUuNSAwLTI4LjEtMTIuNi0yOC4xLTI4LjEgMC03LjYgMy4xLTE0LjkgOC42LTIwLjJMMjI4LjUgNTkuMUMyMzUuOSA1MiAyNDUuNyA0OCAyNTYgNDhzMjAuMSA0IDI3LjUgMTEuMXpNMjMyIDI1NmMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCA0OGMwIDEzLjMgMTAuNyAyNCAyNCAyNGw0OCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0bDAtNDhjMC0xMy4zLTEwLjctMjQtMjQtMjRsLTQ4IDB6Il19LFJiPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJ1aWxkaW5nLWNvbHVtbnMiLGljb246WzUxMiw1MTIsWyJiYW5rIiwiaW5zdGl0dXRpb24iLCJtdXNldW0iLCJ1bml2ZXJzaXR5Il0sImYxOWMiLCJNMjcxLjkgMjAuMmMtOS44LTUuNi0yMS45LTUuNi0zMS44IDBsLTIyNCAxMjhjLTEyLjYgNy4yLTE4LjggMjItMTUuMSAzNlMxNy41IDIwOCAzMiAyMDhsMzIgMCAwIDIwOCAwIDAtNTEuMiAzOC40QzQuNyA0NjAuNCAwIDQ2OS45IDAgNDgwIDAgNDk3LjcgMTQuMyA1MTIgMzIgNTEybDQ0OCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMyIDAtMTAuMS00LjctMTkuNi0xMi44LTI1LjZsLTUxLjItMzguNCAwLTIwOCAzMiAwYzE0LjUgMCAyNy4yLTkuOCAzMC45LTIzLjhzLTIuNS0yOC44LTE1LjEtMzZsLTIyNC0xMjh6TTQwMCAyMDhsMCAyMDgtNjQgMCAwLTIwOCA2NCAwem0tMTEyIDBsMCAyMDgtNjQgMCAwLTIwOCA2NCAwem0tMTEyIDBsMCAyMDgtNjQgMCAwLTIwOCA2NCAwek0yNTYgOTZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0eiJdfSxQbGE9UmIsSWxhPVJiLEFsYT1SYixObGE9UmIsUmxhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InJ1ZyIsaWNvbjpbNTc2LDUxMixbXSwiZTU2OSIsIk0yNCA2NGw1NiAwIDAgMzg0LTU2IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsOCAwIDAtNDAtOCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDggMCAwLTMyLTggMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGw4IDAgMC0zMi04IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsOCAwIDAtNDAtOCAwQzEwLjcgMTEyIDAgMTAxLjMgMCA4OFMxMC43IDY0IDI0IDY0em0xMDQgMGwzMjAgMCAwIDM4NC0zMjAgMCAwLTM4NHpNNTc2IDg4YzAgMTMuMy0xMC43IDI0LTI0IDI0bC04IDAgMCA0MCA4IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTggMCAwIDMyIDggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtOCAwIDAgMzIgOCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC04IDAgMCA0MCA4IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTU2IDAgMC0zODQgNTYgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHoiXX0sT2xhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImNvZGUtbWVyZ2UiLGljb246WzQ0OCw1MTIsW10sImYzODciLCJNODAgNTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0zMi40IDk3LjJjMjgtMTIuNCA0Ny42LTQwLjUgNDcuNi03My4yIDAtNDQuMi0zNS44LTgwLTgwLTgwUzAgMzUuOCAwIDgwYzAgMzIuOCAxOS43IDYxIDQ4IDczLjNsMCAyMDUuM0MxOS43IDM3MSAwIDM5OS4yIDAgNDMyIDAgNDc2LjIgMzUuOCA1MTIgODAgNTEyczgwLTM1LjggODAtODBjMC0zMi44LTE5LjctNjEtNDgtNzMuM2wwLTg2LjZjMjYuNyAyMC4xIDYwIDMyIDk2IDMybDg2LjcgMGMxMi4zIDI4LjMgNDAuNSA0OCA3My4zIDQ4IDQ0LjIgMCA4MC0zNS44IDgwLTgwcy0zNS44LTgwLTgwLTgwYy0zMi44IDAtNjEgMTkuNy03My4zIDQ4TDIwOCAyNDBjLTQ5LjkgMC05MS0zOC4xLTk1LjYtODYuOHpNODAgNDA4YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpNMzQ0IDI3MmEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAweiJdfSxGbGE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaG91c2UtdHN1bmFtaSIsaWNvbjpbNjQwLDUxMixbXSwiZTUxNSIsIk0yODggMTZDMTU1LjUgMTYgNDggMTIzLjUgNDggMjU2UzE1NS41IDQ5NiAyODggNDk2YzcuNCAwIDE5LjctMi4zIDMzLjctNy4zIDEzLjgtNC45IDI3LjEtMTEuNyAzNi43LTE4LjkgMzguNC0yOSA5MC41LTI5IDEyOSAwIDE1LjQgMTEuNiAzNS4zIDIxLjEgNTUgMjQuNCAxOS41IDMuMyAzNyAuNCA1MS4xLTEwLjIgMTAuNi04IDI1LjYtNS45IDMzLjYgNC43czUuOSAyNS42LTQuNyAzMy42Yy0yNy4zIDIwLjUtNTkuMiAyNC04Ny45IDE5LjItMjguNS00LjgtNTUuNC0xOC03NS45LTMzLjQtMjEuMy0xNi4xLTQ5LjktMTYuMS03MS4yIDAtMTQuNSAxMC45LTMyLjQgMTkuNy00OS41IDI1LjgtMTYuOCA2LTM0LjkgMTAuMS00OS45IDEwLjFsLS4xIDBDMTI4LjkgNTQzLjkgMCA0MTUgMCAyNTYgMCA5Ni45IDEyOC45LTMyIDI4OC0zMiAzMDEuMy0zMiAzMTItMjEuMyAzMTItOHMtMTAuNyAyNC0yNCAyNHptNDQuOCAxNjYuNGw5Ni03MmMxMS40LTguNSAyNy4xLTguNSAzOC41IDBsOTUuNSA3MmM4IDYgMTIuNyAxNS41IDEyLjcgMjUuNWwuMyAxMjEuNWMtMi4yIDEuMy00LjMgMi42LTYuNCA0LjItNC4zIDMuMS04LjcgLjgtMTMuMi0xLjVsLTEuMi0uNi0uNy0uM2MtNS40LTIuNy0xMS43LTYuNi0xOC45LTExLjctMjkuNS0yMS4xLTY0LjMtMzEuNi05OS4xLTMxLjQtMzQuMSAuMi02OC4xIDEwLjctOTcgMzEuNC03LjggNS42LTEzLjggOS4zLTE5LjMgMTEuMkwzMjAgMjA4YzAtMTAuMSA0LjctMTkuNiAxMi44LTI1LjZ6bTU0LjYgMjI5LjdjLTE0LjUgMTAuOS0zMi40IDE5LjctNDkuNSAyNS44LTE2LjggNi0zNC45IDEwLjEtNDkuOSAxMC4xLTEwNiAwLTE5Mi04Ni0xOTItMTkyUzE4MiA2NCAyODggNjRjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRjLTc5LjUgMC0xNDQgNjQuNS0xNDQgMTQ0czY0LjUgMTQ0IDE0NCAxNDRjNy40IDAgMTkuNy0yLjMgMzMuNy03LjMgMTMuOC00LjkgMjcuMS0xMS43IDM2LjctMTguOSAzOC40LTI5IDkwLjUtMjkgMTI5IDAgMTUuNCAxMS42IDM1LjMgMjEuMSA1NSAyNC40IDE5LjUgMy4zIDM3IC40IDUxLjEtMTAuMiAxMC42LTggMjUuNi01LjkgMzMuNiA0LjdzNS45IDI1LjYtNC43IDMzLjZjLTI3LjMgMjAuNS01OS4yIDI0LTg3LjkgMTkuMi0yOC41LTQuOC01NS40LTE4LTc1LjktMzMuNC0yMS4zLTE2LjEtNDkuOS0xNi4xLTcxLjIgMHoiXX0sQmxhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im1hZ25pZnlpbmctZ2xhc3MtY2hhcnQiLGljb246WzUxMiw1MTIsW10sImU1MjIiLCJNNDE2IDIwOGMwIDQ1LjktMTQuOSA4OC4zLTQwIDEyMi43TDUwMi42IDQ1Ny40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwTDMzMC43IDM3NkMyOTYuMyA0MDEuMSAyNTMuOSA0MTYgMjA4IDQxNiA5My4xIDQxNiAwIDMyMi45IDAgMjA4UzkzLjEgMCAyMDggMCA0MTYgOTMuMSA0MTYgMjA4em0tMzEyIDhsMCA2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtNjRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR6bTgwLTk2bDAgMTYwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0xNjBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR6bTgwIDY0bDAgOTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTk2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0eiJdfSxIbGE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidW1icmVsbGEiLGljb246WzUxMiw1MTIsW10sImYwZTkiLCJNMjU2LTMyYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMmMxMjYuMyAxNS43IDIyNCAxMjMuNSAyMjQgMjU0IDAgMy44LS4xIDcuNS0uMiAxMS4zLS4zIDYuOS01IDEyLjgtMTEuNyAxNC43cy0xMy44LS43LTE3LjYtNi41Yy0xNC40LTIxLjQtMzguOC0zNS41LTY2LjUtMzUuNS0yOS4zIDAtNTQuOSAxNS43LTY4LjkgMzkuMy0yLjcgNC42LTcuNiA3LjYtMTMgNy44cy0xMC41LTIuMi0xMy43LTYuNWMtMTQuNi0xOS44LTM4LTMyLjYtNjQuNS0zMi42cy00OS45IDEyLjgtNjQuNSAzMi42Yy0zLjIgNC4zLTguMyA2LjgtMTMuNyA2LjVzLTEwLjItMy4yLTEzLTcuOGMtMTQtMjMuNi0zOS42LTM5LjMtNjguOS0zOS4zLTI3LjcgMC01Mi4xIDE0LjEtNjYuNSAzNS41LTMuOSA1LjctMTEgOC40LTE3LjYgNi41Uy41IDI3NC4yIC4yIDI2Ny4zQy4xIDI2My41IDAgMjU5LjggMCAyNTYgMCAxMjUuNSA5Ny43IDE3LjcgMjI0IDJsMC0yYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0zMiAzNjBsMCAxMDIuNmMwIDQ1LTM2LjUgODEuNC04MS40IDgxLjQtMzAuOCAwLTU5LTE3LjQtNzIuOC00NWwtMi4zLTQuN2MtNy45LTE1LjgtMS41LTM1IDE0LjMtNDIuOXMzNS0xLjUgNDIuOSAxNC4zbDIuMyA0LjdjMyA1LjkgOSA5LjYgMTUuNiA5LjYgOS42IDAgMTcuNC03LjggMTcuNC0xNy40TDIyNCAzMjhjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnoiXX0scWxhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImhpbGwtcm9ja3NsaWRlIixpY29uOls1NzYsNTEyLFtdLCJlNTA4IiwiTTI1Mi40IDEwMy44bDI3IDQ4YzIuOCA1IDguMiA4LjIgMTMuOSA4LjJsNTMuMyAwYzUuOCAwIDExLjEtMy4xIDEzLjktOC4ybDI3LTQ4YzIuNy00LjkgMi43LTEwLjggMC0xNS43bC0yNy00OGMtMi44LTUtOC4yLTguMi0xMy45LTguMmwtNTMuMyAwYy01LjggMC0xMS4xIDMuMS0xMy45IDguMmwtMjcgNDhjLTIuNyA0LjktMi43IDEwLjggMCAxNS43ek02OC4zIDg3QzQzLjEgNjEuOCAwIDc5LjcgMCAxMTUuM0wwIDQzMmMwIDQ0LjIgMzUuOCA4MCA4MCA4MGwzMTYuNyAwYzM1LjYgMCA1My41LTQzLjEgMjguMy02OC4zTDY4LjMgODd6TTUwNC4yIDQwMy42YzQuOSAyLjcgMTAuOCAyLjcgMTUuNyAwbDQ4LTI3YzUtMi44IDguMi04LjIgOC4yLTEzLjlsMC01My4zYzAtNS44LTMuMS0xMS4xLTguMi0xMy45bC00OC0yN2MtNC45LTIuNy0xMC44LTIuNy0xNS43IDBsLTQ4IDI3Yy01IDIuOC04LjIgOC4yLTguMiAxMy45bDAgNTMuM2MwIDUuOCAzLjEgMTEuMSA4LjIgMTMuOWw0OCAyN3pNMTkyIDY0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTM4NCAyODhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0eiJdfSxqbGE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidXNlci1zZWNyZXQiLGljb246WzQ0OCw1MTIsWzEyODM3M10sImYyMWIiLCJNMTcxLTE2Yy0zNi40IDAtNTcuOCA1OC4zLTY4LjMgMTEyTDcyIDk2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDI0IDAgMCAzMmMwIDE3IDMuMyAzMy4yIDkuMyA0OGwtOS4zIDAgMCAwLTIwLjUgMGMtMTUuMiAwLTI3LjUgMTIuMy0yNy41IDI3LjUgMCAzIC41IDUuOSAxLjQgOC43bDI4LjkgODYuNkM0MC4yIDM3OS42IDE2IDQyOC4xIDE2IDQ4Mi4zIDE2IDQ5OC43IDI5LjMgNTEyIDQ1LjcgNTEybDM1Ni42IDBjMTYuNCAwIDI5LjctMTMuMyAyOS43LTI5LjcgMC01NC4yLTI0LjItMTAyLjctNjIuMy0xMzUuNGwyOC45LTg2LjZjLjktMi44IDEuNC01LjcgMS40LTguNyAwLTE1LjItMTIuMy0yNy41LTI3LjUtMjcuNWwtMjAuNSAwIDAgMC05LjMgMGM2LTE0LjggOS4zLTMxIDkuMy00OGwwLTMyIDI0IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTMwLjcgMGMtMTAuNC01My43LTMxLjktMTEyLTY4LjMtMTEyLTkuNiAwLTE5IDMuOS0yNy41IDguMi04LjIgNC4xLTE4LjQgNy44LTI1LjUgNy44cy0xNy4zLTMuNy0yNS41LTcuOEMxOTAtMTIuMSAxODAuNi0xNiAxNzEtMTZ6bTkzLjcgNDg0LjRsLTI0LjgtNzAuOSAyNy45LTMyLjVjMi43LTMuMiA0LjItNy4yIDQuMi0xMS40IDAtOS43LTcuOC0xNy41LTE3LjUtMTcuNWwtNjEgMGMtOS43IDAtMTcuNSA3LjgtMTcuNSAxNy41IDAgNC4yIDEuNSA4LjIgNC4yIDExLjRsMjcuOSAzMi41LTI0LjggNzAuOS01Ny0xODAuNCAzNS43IDBjMTguNCAxMC4yIDM5LjUgMTYgNjIgMTZzNDMuNi01LjggNjItMTZsMzUuNyAwLTU3IDE4MC40ek0yMjQgMjU2Yy0zNC43IDAtNjQuMi0yMi4xLTc1LjMtNTMgNS43IDMuMiAxMi4zIDUgMTkuMyA1bDEyLjQgMGMxNi41IDAgMzEuMS0xMC42IDM2LjMtMjYuMiAyLjMtNyAxMi4yLTcgMTQuNSAwIDUuMiAxNS42IDE5LjkgMjYuMiAzNi4zIDI2LjJsMTIuNCAwYzcgMCAxMy42LTEuOCAxOS4zLTUtMTEuMSAzMC45LTQwLjYgNTMtNzUuMyA1M3oiXX0sVmxhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBhZ2VyIixpY29uOls1MTIsNTEyLFsxMjgyMjNdLCJmODE1IiwiTTAgMTI4QzAgOTIuNyAyOC43IDY0IDY0IDY0bDM4NCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjU2YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ0OGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCAxMjh6bTY0IDMybDAgNjRjMCAxNy43IDE0LjMgMzIgMzIgMzJsMzIwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC02NGMwLTE3LjctMTQuMy0zMi0zMi0zMkw5NiAxMjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek04OCAzMjBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsNDggMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtNDggMHptMTI4IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsNDggMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtNDggMHoiXX0sVWxhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJyaWVmY2FzZSIsaWNvbjpbNTEyLDUxMixbMTI4MTg4XSwiZjBiMSIsIk0yMDAgNDhsMTEyIDBjNC40IDAgOCAzLjYgOCA4bDAgNDAtMTI4IDAgMC00MGMwLTQuNCAzLjYtOCA4LTh6bS01NiA4bDAgNDAtODAgMEMyOC43IDk2IDAgMTI0LjcgMCAxNjBsMCA5NiA1MTIgMCAwLTk2YzAtMzUuMy0yOC43LTY0LTY0LTY0bC04MCAwIDAtNDBjMC0zMC45LTI1LjEtNTYtNTYtNTZMMjAwIDBjLTMwLjkgMC01NiAyNS4xLTU2IDU2ek01MTIgMzA0bC0xOTIgMCAwIDE2YzAgMTcuNy0xNC4zIDMyLTMyIDMybC02NCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTE2LTE5MiAwIDAgMTEyYzAgMzUuMyAyOC43IDY0IDY0IDY0bDM4NCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMTEyeiJdfSxXbGE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidHJvd2VsLWJyaWNrcyIsaWNvbjpbNTEyLDUxMixbXSwiZTU4YSIsIk0yMjQgMzJjMC0xMS41LTYuMi0yMi4yLTE2LjItMjcuOHMtMjIuMy01LjUtMzIuMiAuNGwtMTYwIDk2QzUuOSAxMDYuMyAwIDExNi44IDAgMTI4czUuOSAyMS43IDE1LjUgMjcuNGwxNjAgOTZjOS45IDUuOSAyMi4yIDYuMSAzMi4yIC40UzIyNCAyMzUuNSAyMjQgMjI0bDAtNjQgMjU2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTI1NiAwIDAtNjR6bTk2IDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCA2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwxNjAgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTY0YzAtMTcuNy0xNC4zLTMyLTMyLTMybC0xNjAgMHpNMCA0MTZsMCA2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmw5NiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtNjRjMC0xNy43LTE0LjMtMzItMzItMzJsLTk2IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyem0yMjQtMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgNjRjMCAxNy43IDE0LjMgMzIgMzIgMzJsMjU2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC02NGMwLTE3LjctMTQuMy0zMi0zMi0zMmwtMjU2IDB6Il19LEdsYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzb2NrcyIsaWNvbjpbNTEyLDUxMixbMTI5NTEwXSwiZjY5NiIsIk0yNTIuOCAwTDE3NiAwYy0yNi41IDAtNDggMjEuNS00OCA0OGwwIDE2IDExMiAwIDAtMTZjMC0xNy41IDQuNy0zMy45IDEyLjgtNDh6TTEyOCAxMTJsMCAxMjhjMCAyMC4xLTkuNSAzOS4xLTI1LjYgNTEuMmwtNjQgNDhjLTI0LjIgMTguMS0zOC40IDQ2LjYtMzguNCA3Ni44IDAgNTMgNDMgOTYgOTYgOTYgMTUuNCAwIDMwLjUtMy43IDQ0LTEwLjctMTcuNi0yMy45LTI4LTUzLjQtMjgtODUuMyAwLTQ1LjMgMjEuMy04OCA1Ny42LTExNS4ybDY0LTQ4YzQtMyA2LjQtNy44IDYuNC0xMi44bDAtMTI4LTExMiAwem0xNjAgMGwwIDEyOGMwIDIwLjEtOS41IDM5LjEtMjUuNiA1MS4ybC02NCA0OGMtMjQuMiAxOC4xLTM4LjQgNDYuNi0zOC40IDc2LjggMCA1MyA0MyA5NiA5NiA5NiAyMC44IDAgNDEtNi43IDU3LjYtMTkuMmwxMTUuMi04Ni40QzQ2MSAzODIuMiA0ODAgMzQ0LjMgNDgwIDMwNGwwLTE5Mi0xOTIgMHpNNDgwIDY0bDAtMTZjMC0yNi41LTIxLjUtNDgtNDgtNDhMMzM2IDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4bDAgMTYgMTkyIDB6Il19LEtsYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0IixpY29uOlszODQsNTEyLFsxMTZdLCI1NCIsIk0zMiAzMkMxNC4zIDMyIDAgNDYuMyAwIDY0UzE0LjMgOTYgMzIgOTZsMTI4IDAgMCAzNTJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTM1MiAxMjggMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwzMiAzMnoiXX0sWWxhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im1pY3JvY2hpcCIsaWNvbjpbNTEyLDUxMixbXSwiZjJkYiIsIk0xNzYgMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCA0MGMtMzUuMyAwLTY0IDI4LjctNjQgNjRsLTQwIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsNDAgMCAwIDU2LTQwIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsNDAgMCAwIDU2LTQwIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsNDAgMGMwIDM1LjMgMjguNyA2NCA2NCA2NGwwIDQwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC00MCA1NiAwIDAgNDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTQwIDU2IDAgMCA0MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtNDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsNDAgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtNDAgMCAwLTU2IDQwIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTQwIDAgMC01NiA0MCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC00MCAwYzAtMzUuMy0yOC43LTY0LTY0LTY0bDAtNDBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCA0MC01NiAwIDAtNDBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCA0MC01NiAwIDAtNDB6TTE2MCAxMjhsMTkyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAxOTJjMCAxNy43LTE0LjMgMzItMzIgMzJsLTE5MiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptMTYgNDhsMCAxNjAgMTYwIDAgMC0xNjAtMTYwIDB6Il19LFV3ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0cnVjay1tZWRpY2FsIixpY29uOls1NzYsNTEyLFsxMjg2NTcsImFtYnVsYW5jZSJdLCJmMGY5IiwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCAzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMy4zIDBjMTAuNCAzNi45IDQ0LjQgNjQgODQuNyA2NHM3NC4yLTI3LjEgODQuNy02NGwxMDIuNiAwYzEwLjQgMzYuOSA0NC40IDY0IDg0LjcgNjRzNzQuMi0yNy4xIDg0LjctNjRsMy4zIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0xNDYuN2MwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0w1MTIgMTQ2LjdjLTEyLTEyLTI4LjMtMTguNy00NS4zLTE4LjdsLTUwLjcgMCAwLTMyYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyek01MTIgMjM3LjNsMCA1MC43LTk2IDAgMC05NiA1MC43IDAgNDUuMyA0NS4zek0xNTIgMzg0YTQwIDQwIDAgMSAxIDAgODAgNDAgNDAgMCAxIDEgMC04MHptMjMyIDQwYTQwIDQwIDAgMSAxIDgwIDAgNDAgNDAgMCAxIDEgLTgwIDB6TTE3NiAxMzZjMC04LjggNy4yLTE2IDE2LTE2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgNDAgNDAgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTQwIDAgMCA0MGMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTQwLTQwIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNmw0MCAwIDAtNDB6Il19LFpsYT1Vd2UsWGxhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im9tIixpY29uOls1NzYsNTEyLFsxMjgzMjldLCJmNjc5IiwiTTM4OC43IDQuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMGwxNiAxNmM2LjIgNi4yIDYuMiAxNi40IDAgMjIuNmwtMTYgMTZjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwbC0xNi0xNmMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZsMTYtMTZ6TTE3NiAxNjBjLTEwLjggMC0yMC44IDMuNi0yOC44IDkuNi0xNC4xIDEwLjYtMzQuMiA3LjgtNDQuOC02LjRzLTcuOC0zNC4yIDYuNC00NC44YzE4LjctMTQuMSA0Mi0yMi40IDY3LjItMjIuNCA2MS45IDAgMTEyIDUwLjEgMTEyIDExMiAwIDE3LjItMy45IDMzLjUtMTAuOCA0OGw0OS43IDBjMTIuNyAwIDI0LjktNSAzMy45LTE0LjFsMjAuNy0yMC43YzE4LjctMTguNyA0NC4xLTI5LjMgNzAuNi0yOS4zIDU1LjIgMCA5OS45IDQ0LjcgOTkuOSA5OS45bDAgOTYuMWMwIDU1LjItNDQuOCAxMDAtMTAwIDEwMFMzNTIgNDQzLjIgMzUyIDM4OGwwLTRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDRjMCAxOS45IDE2LjEgMzYgMzYgMzZzMzYtMTYuMSAzNi0zNmwwLTk2LjFjMC0xOS44LTE2LjEtMzUuOS0zNS45LTM1LjktOS41IDAtMTguNiAzLjgtMjUuNCAxMC41bC0yMC43IDIwLjdjLTIxIDIxLTQ5LjQgMzIuOC03OS4xIDMyLjhsLTI2LjggMGMxMi42IDE5LjYgMTkuOSA0Mi44IDE5LjkgNjggMCA3NS4yLTY1IDEzMi0xNDAgMTMyUzQwIDQ2My4yIDQwIDM4OGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyYzAgMzUuMyAzMS43IDY4IDc2IDY4czc2LTMyLjcgNzYtNjgtMzEuNy02OC03Ni02OGwtMjAgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwxNiAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4cy0yMS41LTQ4LTQ4LTQ4ek0zMzcuMSA2MC4xYy0xMS0xMy44LTMxLjEtMTYuMi00NS01LjJzLTE2LjIgMzEuMS01LjIgNDVDMzEyLjYgMTMyLjIgMzU0LjQgMTUyIDQwMCAxNTJzODcuNC0xOS44IDExMy4xLTUyLjFjMTEtMTMuOCA4LjctMzQtNS4yLTQ1cy0zNC04LjctNDUgNS4yQzQ1MC4zIDc2IDQyNy41IDg4IDQwMCA4OHMtNTAuMy0xMi02Mi45LTI3Ljl6Il19LFFsYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJtb3NxdWl0by1uZXQiLGljb246WzY0MCw1MTIsW10sImU1MmMiLCJNNTc2IDM1MmMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDE2IDE2IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTE2IDAgMCA0OCAxNiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0xNiAwIDAgMTYtLjEgMi41QzU5OC42IDU2Ni42IDU4OC40IDU3NiA1NzYgNTc2cy0yMi42LTkuNC0yMy45LTIxLjVsLS4xLTIuNSAwLTE2LTQ4IDAgMCAxNi0uMSAyLjVDNTAyLjYgNTY2LjYgNDkyLjQgNTc2IDQ4MCA1NzZzLTIyLjYtOS40LTIzLjktMjEuNWwtLjEtMi41IDAtMTYtMTYgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGwxNiAwIDAtNDgtMTYgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGwxNiAwIDAtMTZjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDE2IDQ4IDAgMC0xNmMwLTEzLjMgMTAuNy0yNCAyNC0yNHpNNDI5LjkgMTYuM2M3LjctOS40IDIxLjMtMTEuNSAzMS40LTQuMyAxMC4xIDcuMSAxMy4xIDIwLjkgNy40IDMxLjdsLTEuMyAyLjEtMjUuOSAzOC45IDEzLjMgNTMuNGMyIDgtLjEgMTYuMy01LjMgMjIuM2wtMi40IDIuNC00NC43IDM4LjMgMTMwLjUgMTQuNWM0Mi44IDQuOCA3NS4xIDQwLjkgNzUuMSA4My45IDAgMy45LS40IDcuNy0uOSAxMS41LTcuMy0zLjUtMTUuMy01LjgtMjMuOC02LjdMNTc2IDMwNGMtMTguNSAwLTM1LjMgNy00OCAxOC40LTExLTkuOS0yNS4xLTE2LjUtNDAuNi0xOC4xTDQ4MCAzMDRjLTMwLjMgMC01Ni4xIDE4LjctNjYuOCA0NS4yLTEyLjUgNS0yMy4yIDEzLjQtMzEuMSAyNGwtMzAuMi00MC4xIDAgNzQuN2MwIDE3LjctMTQuMyAzMi0zMiAzMi0xNi42IDAtMzAuMi0xMi42LTMxLjgtMjguN2wtLjItMy4zIDAtNzQuNi0zMi4zIDQzIDAgMzkuOGMwIDMuNS0uNyA2LjktMi4xIDEwLjFsLTEuNiAzLjEtNDAgNjQtMS40IDJjLTcuNSA5LjYtMjEgMTIuMS0zMS4zIDUuMy0xMC4zLTYuOC0xMy43LTIwLjUtOC4zLTMxLjVsMS4yLTIuMiAzNi4yLTU4IDAtNDEgLjMtNGMuNi0zLjkgMi4yLTcuNyA0LjYtMTAuOWwzOS4zLTUyLjItNjYuMiA1OS41Yy0xNyAxNS4zLTM5IDIzLjctNjEuOSAyMy44bC04LjEgMGMtNDYuNiAwLTg0LjQtMzcuOC04NC40LTg0LjQgMC00MyAzMi40LTc5LjIgNzUuMS04My45bDEzMC41LTE0LjUtNDQuNy0zOC4zLTIuNC0yLjRjLTUuMi02LTcuMy0xNC40LTUuMy0yMi4zbDEzLjMtNTMuNC0yNS45LTM4LjktMS4yLTIuMWMtNS43LTEwLjgtMi43LTI0LjYgNy40LTMxLjcgMTAuMS03LjEgMjMuNy01LjEgMzEuNCA0LjNsMS41IDIgMzIgNDggMS40IDIuMmMyLjggNS4zIDMuNSAxMS42IDIuMSAxNy42bC0xMi4zIDQ5LjIgNTMuMyA0NS43IDAtMjguOCAuMi0zLjJjMS4xLTEwLjQgNy4yLTE5LjQgMTUuOC0yNC40bDAtNjAuNSAuMy0zLjJjMS41LTcuMyA4LTEyLjcgMTUuNy0xMi44IDcuNyAwIDE0LjIgNS41IDE1LjcgMTIuOGwuMyAzLjIgMCA2MC41YzguNyA1IDE0LjggMTQgMTUuOCAyNC40bC4yIDMuMiAwIDI4LjkgNTMuNC00NS43LTEyLjMtNDkuMmMtMS41LTUuOS0uNy0xMi4yIDIuMS0xNy42bDEuNC0yLjIgMzItNDggMS41LTJ6TTUwNCA0ODhsNDggMCAwLTQ4LTQ4IDAgMCA0OHoiXX0sSmxhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InByZXNjcmlwdGlvbi1ib3R0bGUiLGljb246WzM4NCw1MTIsW10sImY0ODUiLCJNMCAzMkMwIDE0LjMgMTQuMyAwIDMyIDBMMzUyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMkwzMiA5NkMxNC4zIDk2IDAgODEuNyAwIDY0TDAgMzJ6TTMyIDE0NGwzMjAgMCAwIDMwNGMwIDM1LjMtMjguNyA2NC02NCA2NEw5NiA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0bDcyIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTcyIDAgMC00OCA3MiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC03MiAwIDAtNDggNzIgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtNzIgMCAwLTY0eiJdfSxXd2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidXNlcnMtZ2VhciIsaWNvbjpbNjQwLDUxMixbInVzZXJzLWNvZyJdLCJmNTA5IiwiTTMyMCAyMjRhMTA0IDEwNCAwIDEgMCAwLTIwOCAxMDQgMTA0IDAgMSAwIDAgMjA4ek05NiAyMzJhNzIgNzIgMCAxIDAgMC0xNDQgNzIgNzIgMCAxIDAgMCAxNDR6TTAgNDE2bDAgMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJsODYuNyAwYy00LjMtOS44LTYuNy0yMC42LTYuNy0zMmwwLTE2YzAtNTMuMiAyMC0xMDEuOCA1Mi45LTEzOC42LTExLjctMy41LTI0LjEtNS40LTM2LjktNS40LTcwLjcgMC0xMjggNTcuMy0xMjggMTI4ek02MTYgMTYwYTcyIDcyIDAgMSAwIC0xNDQgMCA3MiA3MiAwIDEgMCAxNDQgMHpNMTYwIDQzMmwwIDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMybDE1Ni44IDBjLTcuMS0yMS42LTYuMy00NC40IDEwLjctNjQtMTQtMTYuMi0yMC41LTM5LjctMTEuNC02My4zIDYuNi0xNy4xIDE1LjktMzMuMSAyNy40LTQ3LjMgNS40LTYuNiAxMS42LTExLjcgMTguMy0xNS40LTIyLjEtMTEuNS00Ny4yLTE4LTczLjgtMTgtODguNCAwLTE2MCA3MS42LTE2MCAxNjB6bTQ2NC42LTQ0LjFjNi4zLTMuNiA5LjUtMTEuMSA2LjgtMTgtNC44LTEyLjQtMTEuNS0yNC4xLTE5LjktMzQuNC00LjYtNS43LTEyLjctNi43LTE5LTMtMjEuOCAxMi42LTQ4LjYtMi44LTQ4LjYtMjguMSAwLTcuMy00LjktMTMuOC0xMi4xLTE0LjktMTIuOS0yLTI2LjgtMi0zOS43IDAtNy4yIDEuMS0xMi4xIDcuNi0xMi4xIDE0LjkgMCAyNS4yLTI2LjggNDAuNy00OC42IDI4LjEtNi4zLTMuNi0xNC40LTIuNi0xOSAzLTguNCAxMC4zLTE1LjEgMjItMTkuOSAzNC40LTIuNiA2LjggLjUgMTQuMyA2LjggMTcuOSAyMS45IDEyLjYgMjEuOSA0My41IDAgNTYuMi02LjMgMy42LTkuNSAxMS4xLTYuOCAxNy45IDQuOCAxMi40IDExLjUgMjQuMSAxOS45IDM0LjQgNC42IDUuNyAxMi43IDYuNyAxOSAzIDIxLjgtMTIuNiA0OC42IDIuOSA0OC42IDI4LjEgMCA3LjMgNC45IDEzLjggMTIuMSAxNC45IDEyLjkgMiAyNi44IDIgMzkuNyAwIDcuMi0xLjEgMTIuMS03LjYgMTIuMS0xNC45IDAtMjUuMiAyNi44LTQwLjcgNDguNi0yOC4xIDYuMyAzLjYgMTQuNCAyLjYgMTktMyA4LjQtMTAuMyAxNS4xLTIyIDE5LjktMzQuNCAyLjYtNi44LS41LTE0LjMtNi44LTE3LjktMjEuOS0xMi42LTIxLjktNDMuNSAwLTU2LjJ6TTQ3MiA0MTZhNDAgNDAgMCAxIDEgODAgMCA0MCA0MCAwIDEgMSAtODAgMHoiXX0sZWNhPVd3ZSx0Y2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicm9hZC1jaXJjbGUtZXhjbGFtYXRpb24iLGljb246WzY0MCw1MTIsW10sImU1NjUiLCJNMjg4IDMybC03Ni4zIDBjLTI5LjQgMC01NS4xIDIwLjEtNjIuMSA0OC42TDY1LjQgNDIwLjVDNTcuOSA0NTAuNyA4MC44IDQ4MCAxMTIgNDgwbDIwOS40IDBjLTExLjItMjQuNC0xNy40LTUxLjQtMTcuNC04MCAwLTI4LjYgNi4yLTU1LjcgMTcuNC04MC0uNSAwLTEgMC0xLjUgMC0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCA0OWMzNS4yLTM5LjkgODYuNy02NSAxNDQtNjUgOSAwIDE3LjggLjYgMjYuNSAxLjhsLTMyLTEyOS4yQzQ4My40IDUyLjEgNDU3LjggMzIgNDI4LjMgMzJsLTc2LjQgMCAwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtNjR6TTQ5NiA1NDRhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0wLTEwMGEyMCAyMCAwIDEgMSAwIDQwIDIwIDIwIDAgMSAxIDAtNDB6bTAtMTQwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtODBjMC04LjggNy4yLTE2IDE2LTE2eiJdfSxhY2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGF1c2UiLGljb246WzM4NCw1MTIsWzkyMDhdLCJmMDRjIiwiTTQ4IDMyQzIxLjUgMzIgMCA1My41IDAgODBMMCA0MzJjMCAyNi41IDIxLjUgNDggNDggNDhsNjQgMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTM1MmMwLTI2LjUtMjEuNS00OC00OC00OEw0OCAzMnptMjI0IDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4bDAgMzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDY0IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC0zNTJjMC0yNi41LTIxLjUtNDgtNDgtNDhsLTY0IDB6Il19LHVTPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InN0YWZmLXNuYWtlIixpY29uOls0NDgsNTEyLFsicm9kLWFzY2xlcGl1cyIsInJvZC1zbmFrZSIsInN0YWZmLWFlc2N1bGFwaXVzIl0sImU1NzkiLCJNMTkyIDMybDAtMzJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDMyIDY0IDBjNTMgMCA5NiA0MyA5NiA5NnMtNDMgOTYtOTYgOTZsLTE2IDAgMC02NCAxNiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC02NCAwIDAgMTkyIDMyIDBjNTMgMCA5NiA0MyA5NiA5NiAwIDQ3LjYtMzQuNiA4Ny4xLTgwIDk0LjdsMC02N2M5LjYtNS41IDE2LTE1LjkgMTYtMjcuNyAwLTE3LjctMTQuMy0zMi0zMi0zMmwtMzIgMCAwIDE2MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTMyLTMyIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsMzIgMCAwLTY0LTMyIDBjLTUzIDAtOTYtNDMtOTYtOTYgMC00Ny42IDM0LjYtODcuMSA4MC05NC43bDAgNjdjLTkuNiA1LjUtMTYgMTUuOS0xNiAyNy43IDAgMTcuNyAxNC4zIDMyIDMyIDMybDMyIDAgMC0xOTItNzIuNiAwYy0xMS4xIDE5LjEtMzEuNyAzMi01NS40IDMybC0xNiAwQzIxLjUgMTI4IDAgMTA2LjUgMCA4MFMyMS41IDMyIDQ4IDMybDE0NCAweiJdfSxzY2E9dVMsaWNhPXVTLHJjYT11UyxvY2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGlnZ3ktYmFuayIsaWNvbjpbNTc2LDUxMixbXSwiZjRkMyIsIk0yODgtMzJhOTYgOTYgMCAxIDEgMCAxOTIgOTYgOTYgMCAxIDEgMC0xOTJ6TTQ4IDMwNGMwLTcwLjEgNDctMTMxLjQgMTE3LjEtMTY0LjkgMjUuMyA0MS4zIDcwLjkgNjguOSAxMjIuOSA2OC45IDU1LjcgMCAxMDQuMS0zMS43IDEyOC03OCAxNS44LTExLjMgMzUuMS0xOCA1Ni0xOGwxOS41IDBjMTAuNCAwIDE4IDkuOCAxNS41IDE5LjlsLTE3LjEgNjguM2M5LjkgMTIuNCAxOC4yIDI1LjcgMjQuNCAzOS44bDIxLjcgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDExMmMwIDEzLjMtMTAuNyAyNC0yNCAyNGwtNDAgMGMtMTYuNSAyMi0zOC41IDM5LjYtNjQgNTAuN2wwIDI5LjNjMCAxNy43LTE0LjMgMzItMzIgMzJsLTMzIDBjLTE0LjMgMC0yNi44LTkuNS0zMC44LTIzLjJsLTcuMS0yNC44LTgyLjMgMC03LjEgMjQuOEMyMzUuOCA1MDIuNSAyMjMuMyA1MTIgMjA5IDUxMmwtMzMgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0yOS4zQzg3LjUgNDI2IDQ4IDM2OS42IDQ4IDMwNHptMzc2IDE2YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHoiXX0sbmNhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im1vbnVtZW50IixpY29uOlszODQsNTEyLFtdLCJmNWE2IiwiTTIwOS0zM2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMOTUgNDdjLTQuMSA0LjEtNi41IDkuNC03IDE1LjFMNTguNCA0NDggNDggNDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDI4OCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xMC40IDAtMjkuNy0zODUuOGMtLjQtNS43LTIuOS0xMS4xLTctMTUuMUwyMDktMzN6TTEyOCAyOTZjMC0xMy4zIDEwLjctMjQgMjQtMjRsODAgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtODAgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjR6Il19LEd3ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJhbmdsZXMtcmlnaHQiLGljb246WzQ0OCw1MTIsWzE4NywiYW5nbGUtZG91YmxlLXJpZ2h0Il0sImYxMDEiLCJNNDM5LjEgMjc4LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTE2MC0xNjBjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zTDM3MS4yIDI1NiAyMzMuOSAzOTMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGwxNjAtMTYwem0tMzUyIDE2MGwxNjAtMTYwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xNjAtMTYwYy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM0wxNzkuMiAyNTYgNDEuOSAzOTMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMHoiXX0sbGNhPUd3ZSxiZj17cHJlZml4OiJmYXMiLGljb25OYW1lOiJkZXNrdG9wIixpY29uOls1MTIsNTEyLFsxMjg0MjEsNjE3MDQsImRlc2t0b3AtYWx0Il0sImYzOTAiLCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDM1MmMwIDM1LjMgMjguNyA2NCA2NCA2NGwxNDQgMC0xNiA0OC03MiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDI3MiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC03MiAwLTE2LTQ4IDE0NCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMjU2YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyek05NiA5NmwzMjAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDE2MGMwIDE3LjctMTQuMyAzMi0zMiAzMkw5NiAzMjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyeiJdfSxjY2E9YmYsZGNhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBsYW5lLWNpcmNsZS14bWFyayIsaWNvbjpbNjQwLDUxMixbXSwiZTU1NyIsIk0yMzIgMjRjMC0zMC45IDI1LjEtNTYgNTYtNTZzNTYgMjUuMSA1NiA1NmwwIDEyNy4zIDc4IDcxLjVjLTY5LjMgMjktMTE4IDk3LjQtMTE4IDE3Ny4yIDAgNDkuMyAxOC42IDk0LjMgNDkuMSAxMjguM0wyODggNTEyIDE3OS45IDUzOWMtMTAuMSAyLjUtMTkuOS01LjEtMTkuOS0xNS41bDAtMTkuOGMwLTQuOSAyLjItOS41IDYtMTIuNWw2Ni01Mi44IDAtOTkuNy0xNjIuOSA1NC4zQzU4LjcgMzk2LjQgNDggMzg4LjcgNDggMzc3LjhsMC00My43YzAtOSAzLjgtMTcuNSAxMC40LTIzLjZMMjMyIDE1MS4zIDIzMiAyNHpNNDk2IDI1NmExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTU5LjMgMTA3LjNjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZzLTE2LjQtNi4yLTIyLjYgMGwtMzYuNyAzNi43LTM2LjctMzYuN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNmwzNi43IDM2LjctMzYuNyAzNi43Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBsMzYuNy0zNi43IDM2LjcgMzYuN2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZsLTM2LjctMzYuNyAzNi43LTM2Ljd6Il19LHVjYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJyZXR3ZWV0IixpY29uOls1NzYsNTEyLFtdLCJmMDc5IiwiTTExOC42IDQxLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC02NCA2NGMtOS4yIDkuMi0xMS45IDIyLjktNi45IDM0LjlTMTkuMSAxNjAgMzIgMTYwbDMyIDAgMCAyMjRjMCA1MyA0MyA5NiA5NiA5NmwxMjggMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMTI4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMjI0IDMyIDBjMTIuOSAwIDI0LjYtNy44IDI5LjYtMTkuOHMyLjItMjUuNy02LjktMzQuOWwtNjQtNjR6TTQ1Ny40IDQ3MC42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDY0LTY0YzkuMi05LjIgMTEuOS0yMi45IDYuOS0zNC45UzU1Ni45IDM1MiA1NDQgMzUybC0zMiAwIDAtMjI0YzAtNTMtNDMtOTYtOTYtOTZMMjg4IDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDEyOCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMjI0LTMyIDBjLTEyLjkgMC0yNC42IDcuOC0yOS42IDE5LjhzLTIuMiAyNS43IDYuOSAzNC45bDY0IDY0eiJdfSxLd2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidXNlci1nZWFyIixpY29uOls2NDAsNTEyLFsidXNlci1jb2ciXSwiZjRmZSIsIk0yNTYuNSA4YTEyMCAxMjAgMCAxIDEgMCAyNDAgMTIwIDEyMCAwIDEgMSAwLTI0MHpNMjI2LjcgMzA0bDU5LjQgMCAxLjUgMGMtMTIuOSAyNi44LTcuOCA1OC4yIDExLjUgNzkuNS0yMC4yIDIyLjMtMjQuOCA1NS44LTkuNCA4My40bDIyLjUgNDAuNGMuOSAxLjYgMS45IDMuMiAyLjkgNC43bC0yMzcgMGMtMTYuNCAwLTI5LjctMTMuMy0yOS43LTI5LjcgMC05OC41IDc5LjgtMTc4LjMgMTc4LjMtMTc4LjN6bTIwNS45LTU2LjRjMC0xMy4zIDEwLjctMjQgMjQtMjRsNDggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDYuMWMwIDE4LjkgMjQuMSAzMi44IDQwLjUgMjMuNGw1LTIuOWMxMS42LTYuNyAyNi41LTIuNiAzMyA5LjFsMjIuNCA0MC4yYzYuMiAxMS4yIDIuNiAyNS4yLTguMiAzMmwtNC43IDIuOWMtMTYuMiAxMC4xLTE2LjIgMzkuOSAwIDUwLjFsNC42IDIuOWMxMC44IDYuOCAxNC41IDIwLjggOC4zIDMyTDYwNyA0ODMuOGMtNi41IDExLjctMjEuNCAxNS45LTMzIDkuMWwtNC45LTIuOWMtMTYuNC05LjUtNDAuNSA0LjUtNDAuNSAyMy40bDAgNi4xYzAgMTMuMy0xMC43IDI0LTI0IDI0bC00OCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNGwwLTUuOWMwLTE5LTI0LjItMzMtNDAuNy0yMy41bC00LjggMi44Yy0xMS42IDYuNy0yNi40IDIuNi0zMy05LjFsLTIyLjYtNDAuNGMtNi4yLTExLjItMi42LTI1LjMgOC4zLTMyLjFsNC40LTIuN2MxNi4zLTEwLjEgMTYuMy00MC4xIDAtNTAuMmwtNC41LTIuOGMtMTAuOS02LjgtMTQuNS0yMC45LTguMy0zMi4xbDIyLjUtNDAuM2M2LjUtMTEuNyAyMS40LTE1LjggMzIuOS05LjFsNC44IDIuOGMxNi41IDkuNSA0MC43LTQuNSA0MC43LTIzLjVsMC01Ljl6bTk5LjkgMTM2LjJhNTIgNTIgMCAxIDAgLTEwNCAwIDUyIDUyIDAgMSAwIDEwNCAweiJdfSxwY2E9S3dlLGhjYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJib3JkZXItYWxsIixpY29uOls0NDgsNTEyLFtdLCJmODRjIiwiTTM4NCA5NmwwIDEyOC0xMjggMCAwLTEyOCAxMjggMHptMCAxOTJsMCAxMjgtMTI4IDAgMC0xMjggMTI4IDB6TTE5MiAyMjRsLTEyOCAwIDAtMTI4IDEyOCAwIDAgMTI4ek02NCAyODhsMTI4IDAgMCAxMjgtMTI4IDAgMC0xMjh6TTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6Il19LGZjYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjb2lucyIsaWNvbjpbNTEyLDUxMixbXSwiZjUxZSIsIk0xMjggOTZsMC0xNmMwLTQ0LjIgODYtODAgMTkyLTgwUzUxMiAzNS44IDUxMiA4MGwwIDE2YzAgMzAuNi00MS4zIDU3LjItMTAyIDcwLjctMi40LTIuOC00LjktNS41LTcuNC04LTE1LjUtMTUuMy0zNS41LTI2LjktNTYuNC0zNS41LTQxLjktMTcuNS05Ni41LTI3LjEtMTU0LjItMjcuMS0yMS45IDAtNDMuMyAxLjQtNjMuOCA0LjEtLjItMS4zLS4yLTIuNy0uMi00LjF6TTQzMiAzNTNsMC00Ni4yYzE1LjEtMy45IDI5LjMtOC41IDQyLjItMTMuOSAxMy4yLTUuNSAyNi4xLTEyLjIgMzcuOC0yMC4zbDAgMTUuNGMwIDI2LjgtMzEuNSA1MC41LTgwIDY1em0wLTk2bDAtMzNjMC00LjUtLjQtOC44LTEtMTMgMTUuNS0zLjkgMzAtOC42IDQzLjItMTQuMnMyNi4xLTEyLjIgMzcuOC0yMC4zbDAgMTUuNGMwIDI2LjgtMzEuNSA1MC41LTgwIDY1ek0wIDI0MGwwLTE2YzAtNDQuMiA4Ni04MCAxOTItODBzMTkyIDM1LjggMTkyIDgwbDAgMTZjMCA0NC4yLTg2IDgwLTE5MiA4MFMwIDI4NC4yIDAgMjQwem0zODQgOTZjMCA0NC4yLTg2IDgwLTE5MiA4MFMwIDM4MC4yIDAgMzM2bDAtMTUuNGMxMS42IDguMSAyNC41IDE0LjcgMzcuOCAyMC4zIDQxLjkgMTcuNSA5Ni41IDI3LjEgMTU0LjIgMjcuMXMxMTIuMy05LjcgMTU0LjItMjcuMWMxMy4yLTUuNSAyNi4xLTEyLjIgMzcuOC0yMC4zbDAgMTUuNHptMCA4MC42bDAgMTUuNGMwIDQ0LjItODYgODAtMTkyIDgwUzAgNDc2LjIgMCA0MzJsMC0xNS40YzExLjYgOC4xIDI0LjUgMTQuNyAzNy44IDIwLjMgNDEuOSAxNy41IDk2LjUgMjcuMSAxNTQuMiAyNy4xczExMi4zLTkuNyAxNTQuMi0yNy4xYzEzLjItNS41IDI2LjEtMTIuMiAzNy44LTIwLjN6Il19LG1jYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJtYXJzLXN0cm9rZSIsaWNvbjpbNTc2LDUxMixbOTg5NF0sImYyMjkiLCJNNDE2LTMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDUwLjcgMC01OC43IDU4LjctMTcuNC0xNy40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxNy40IDE3LjQtMjMgMjNjLTI4LjQtMTkuNS02Mi43LTMxLTk5LjgtMzEtOTcuMiAwLTE3NiA3OC44LTE3NiAxNzZzNzguOCAxNzYgMTc2IDE3NiAxNzYtNzguOCAxNzYtMTc2YzAtMzctMTEuNC03MS40LTMxLTk5LjhsMjMtMjMgMTcuNCAxNy40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMNDUzLjMgMTM2IDUxMiA3Ny4zIDUxMiAxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMkw1NzYgMGMwLTE3LjctMTQuMy0zMi0zMi0zMkw0MTYtMzJ6TTEyOCAzMDRhMTEyIDExMiAwIDEgMSAyMjQgMCAxMTIgMTEyIDAgMSAxIC0yMjQgMHoiXX0sWXdlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImhhbmRzaGFrZS1hbmdsZSIsaWNvbjpbNTc2LDUxMixbImhhbmRzLWhlbHBpbmciXSwiZjRjNCIsIk0yNjguOSA1My4yTDE1Mi4zIDE4Mi44Yy00LjYgNS4xLTQuNCAxMyAuNSAxNy45IDMwLjUgMzAuNSA4MCAzMC41IDExMC41IDBsMzEuOC0zMS44YzQuMi00LjIgOS41LTYuNSAxNC45LTYuOSA2LjgtLjYgMTMuOCAxLjcgMTkgNi45TDUwNS42IDM0NCA1NzYgMjg4IDU3NiAwIDQ2NCA2NCA0NDAuMiA0OC4xQzQyNC40IDM3LjYgNDA1LjkgMzIgMzg2LjkgMzJsLTcwLjQgMGMtMS4xIDAtMi4zIDAtMy40IC4xLTE2LjkgLjktMzIuOCA4LjUtNDQuMiAyMS4xek0xMTYuNiAxNTAuN0wyMjMuNCAzMiAxODMuOCAzMmMtMjUuNSAwLTQ5LjkgMTAuMS02Ny45IDI4LjFMMCAxOTIgMCA1NDQgMTQ0IDQwOCAxNTYuNCA0MTguM2MyMyAxOS4yIDUyIDI5LjcgODEuOSAyOS43bDE1LjcgMC03LTdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw0MSA0MSA5IDBjMTkuMSAwIDM3LjgtNC4zIDU0LjgtMTIuM0wzNTkgNDA5Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsMzIgMzIgMTcuNS0xNy41YzguOS04LjkgMTEuNS0yMS44IDcuNi0zMy4xbC0xMzcuOS0xMzYuOC0xNC45IDE0LjljLTQ5LjMgNDkuMy0xMjkuMSA0OS4zLTE3OC40IDAtMjMtMjMtMjMuOS01OS45LTIuMi04NHoiXX0sZ2NhPVl3ZSxiY2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYXJyb3ctZG93biIsaWNvbjpbMzg0LDUxMixbODU5NV0sImYwNjMiLCJNMTY5LjQgNTAyLjZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTYwLTE2MGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwyMjQgNDAyLjcgMjI0IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgMzcwLjctMTA1LjQtMTA1LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDE2MCAxNjB6Il19LFp3ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJsb2NhdGlvbi1kb3QiLGljb246WzM4NCw1MTIsWyJtYXAtbWFya2VyLWFsdCJdLCJmM2M1IiwiTTAgMTg4LjZDMCA4NC40IDg2IDAgMTkyIDBTMzg0IDg0LjQgMzg0IDE4OC42YzAgMTE5LjMtMTIwLjIgMjYyLjMtMTcwLjQgMzE2LjgtMTEuOCAxMi44LTMxLjUgMTIuOC00My4zIDAtNTAuMi01NC41LTE3MC40LTE5Ny41LTE3MC40LTMxNi44ek0xOTIgMjU2YTY0IDY0IDAgMSAwIDAtMTI4IDY0IDY0IDAgMSAwIDAgMTI4eiJdfSx2Y2E9WndlLHhjYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwbHVnLWNpcmNsZS1leGNsYW1hdGlvbiIsaWNvbjpbNjQwLDUxMixbXSwiZTU1ZCIsIk0xOTItMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA5NiAxMjggMCAwLTk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCA5NiA2NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybDAgNDguN2MtOTguNiA4LjEtMTc2IDkwLjctMTc2IDE5MS4zIDAgMjcuMyA1LjcgNTMuMyAxNiA3Ni45bDAgMy4xYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtNjYuN0MxNjUuMiAzOTguMSA5NiAzMTkuMSA5NiAyMjRsMC02NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJTNzguMyA5NiA5NiA5Nmw2NCAwIDAtOTZjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTQ5NiAyNTZhMTQ0IDE0NCAwIDEgMSAwIDI4OCAxNDQgMTQ0IDAgMSAxIDAtMjg4em0wIDIyOGEyMCAyMCAwIDEgMCAwLTQwIDIwIDIwIDAgMSAwIDAgNDB6bTAtMTgwYy04LjggMC0xNiA3LjItMTYgMTZsMCA4MGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtODBjMC04LjgtNy4yLTE2LTE2LTE2eiJdfSx5Y2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY29va2llLWJpdGUiLGljb246WzUxMiw1MTIsW10sImY1NjQiLCJNMjU3LjUgMjcuNmMtLjgtNS40LTQuOS05LjgtMTAuMy0xMC42LTIyLjEtMy4xLTQ0LjYgLjktNjQuNCAxMS40bC03NCAzOS41Qzg5LjEgNzguNCA3My4yIDk0LjkgNjMuNCAxMTVMMjYuNyAxOTAuNmMtOS44IDIwLjEtMTMgNDIuOS05LjEgNjQuOWwxNC41IDgyLjhjMy45IDIyLjEgMTQuNiA0Mi4zIDMwLjcgNTcuOWw2MC4zIDU4LjRjMTYuMSAxNS42IDM2LjYgMjUuNiA1OC43IDI4LjdsODMgMTEuN2MyMi4xIDMuMSA0NC42LS45IDY0LjQtMTEuNGw3NC0zOS41YzE5LjctMTAuNSAzNS42LTI3IDQ1LjQtNDcuMmwzNi43LTc1LjVjOS44LTIwLjEgMTMtNDIuOSA5LjEtNjQuOS0uOS01LjMtNS4zLTkuMy0xMC42LTEwLjEtNTEuNS04LjItOTIuOC00Ny4xLTEwNC41LTk3LjQtMS44LTcuNi04LTEzLjQtMTUuNy0xNC42LTU0LjYtOC43LTk3LjctNTItMTA2LjItMTA2Ljh6TTIwOCAxNDRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0xNDQgMzM2YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTIyNC02NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6Il19LFh3ZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzY3Jld2RyaXZlci13cmVuY2giLGljb246WzU3Niw1MTIsWyJ0b29scyJdLCJmN2Q5IiwiTTcwLjgtNi43YzUuNC01LjQgMTMuOC02LjIgMjAuMi0yTDIwOS45IDcwLjVjOC45IDUuOSAxNC4yIDE1LjkgMTQuMiAyNi42bDAgNDkuNiA5MC44IDkwLjhjMzMuMy0xNSA3My45LTguOSAxMDEuMiAxOC41TDU0Mi4yIDM4Mi4xYzE4LjcgMTguNyAxOC43IDQ5LjEgMCA2Ny45bC02MC4xIDYwLjFjLTE4LjcgMTguNy00OS4xIDE4LjctNjcuOSAwTDI4OC4xIDM4NGMtMjcuNC0yNy40LTMzLjUtNjcuOS0xOC41LTEwMS4ybC05MC44LTkwLjgtNDkuNiAwYy0xMC43IDAtMjAuNy01LjMtMjYuNi0xNC4yTDIzLjQgNTguOWMtNC4yLTYuMy0zLjQtMTQuOCAyLTIwLjJMNzAuOC02Ljd6bTE0NSAzMDMuNWMtNi4zIDM2LjkgMi4zIDc1LjkgMjYuMiAxMDcuMmwtOTQuOSA5NWMtMjguMSAyOC4xLTczLjcgMjguMS0xMDEuOCAwcy0yOC4xLTczLjcgMC0xMDEuOGwxMzUuNC0xMzUuNSAzNS4yIDM1LjF6TTM4NC4xIDBjMjAuMSAwIDM5LjQgMy43IDU3LjEgMTAuNSAxMCAzLjggMTEuOCAxNi41IDQuMyAyNC4xTDM4OC44IDkxLjNjLTMgMy00LjcgNy4xLTQuNyAxMS4zbDAgNDEuNGMwIDguOCA3LjIgMTYgMTYgMTZsNDEuNCAwYzQuMiAwIDguMy0xLjcgMTEuMy00LjdsNTYuNy01Ni43YzcuNi03LjUgMjAuMy01LjcgMjQuMSA0LjMgNi44IDE3LjcgMTAuNSAzNyAxMC41IDU3LjEgMCA0My4yLTE3LjIgODIuMy00NSAxMTEuMWwtNDkuMS00OS4xYy0zMy4xLTMzLTc4LjUtNDUuNy0xMjEuMS0zOC40bC01Ni44LTU2LjggMC0yOS43LS4yLTVjLS44LTEyLjQtNC40LTI0LjMtMTAuNS0zNC45IDI5LjQtMzUgNzMuNC01Ny4yIDEyMi43LTU3LjN6Il19LHdjYT1Yd2Usa2NhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImluZGVudCIsaWNvbjpbNDQ4LDUxMixbXSwiZjAzYyIsIk0wIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMybDM4NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDMyIDk2QzE0LjMgOTYgMCA4MS43IDAgNjR6TTE5MiAxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJsMTkyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTE5MiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnptMzIgOTZsMTkyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTE5MiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyek0wIDQ0OGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwzODQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkwzMiA0ODBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek0xMjcuOCAyNjguNkwyNS44IDM0Ny45QzE1LjMgMzU2LjEgMCAzNDguNiAwIDMzNS4zTDAgMTc2LjdjMC0xMy4zIDE1LjMtMjAuOCAyNS44LTEyLjZsMTAxLjkgNzkuM2M4LjIgNi40IDguMiAxOC45IDAgMjUuM3oiXX0sUXdlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJhcnMiLGljb246WzQ0OCw1MTIsWyJuYXZpY29uIl0sImYwYzkiLCJNMCA5NkMwIDc4LjMgMTQuMyA2NCAzMiA2NGwzODQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkwzMiAxMjhDMTQuMyAxMjggMCAxMTMuNyAwIDk2ek0wIDI1NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmwzODQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkwzMiAyODhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek00NDggNDE2YzAgMTcuNy0xNC4zIDMyLTMyIDMyTDMyIDQ0OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwzODQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnoiXX0sU2NhPVF3ZSxKd2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaGFuZHMtcHJheWluZyIsaWNvbjpbNjQwLDUxMixbInByYXlpbmctaGFuZHMiXSwiZjY4NCIsIk0yMjQgMjk2YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtMTEyLjYgODguMi0xMTkuN2MxMy4xLTE3LjggOS4zLTQyLjgtOC41LTU1LjlzLTQyLjgtOS4zLTU1LjkgOC41TDEwNi41IDE0Mi45Qzg5LjMgMTY2LjIgODAgMTk0LjUgODAgMjIzLjZsMCAxMTAuNy01OC4xIDE5LjRDOC44IDM1OCAwIDM3MC4yIDAgMzg0bDAgOTZjMCAxMCA0LjcgMTkuNSAxMi43IDI1LjVzMTguNCA4IDI4LjEgNS4ybDE1NC40LTQ0LjFjNTUtMTUuNyA5Mi44LTY1LjkgOTIuOC0xMjMuMUwyODggMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgNzJ6bTE5MiAwbDAtNzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAxMTkuNmMwIDU3LjIgMzcuOSAxMDcuNCA5Mi44IDEyMy4xbDE1NC40IDQ0LjFjOS43IDIuOCAyMCAuOCAyOC4xLTUuMlM2NDAgNDkwIDY0MCA0ODBsMC05NmMwLTEzLjgtOC44LTI2LTIxLjktMzAuNGwtNTguMS0xOS40IDAtMTEwLjdjMC0yOS05LjMtNTcuMy0yNi41LTgwLjdMNDQwLjIgMTYuM0M0MjcuMS0xLjUgNDAyLjEtNS4zIDM4NC4zIDcuOHMtMjEuNiAzOC4xLTguNSA1NS45TDQ2NCAxODMuNCA0NjQgMjk2YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0eiJdfSxfY2E9SndlLE1jYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ2aXJ1c2VzIixpY29uOls2NDAsNTEyLFtdLCJlMDc2IiwiTTE5MiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyIDAgMzAuNSAzNi45IDQ1LjggNTguNSAyNC4yIDEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNjLTIxLjYgMjEuNi02LjMgNTguNSAyNC4yIDU4LjUgMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJjLTMwLjUgMC00NS44IDM2LjktMjQuMiA1OC41IDEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwYy0yMS42LTIxLjYtNTguNS02LjMtNTguNSAyNC4yIDAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyYzAtMzAuNS0zNi45LTQ1LjgtNTguNS0yNC4yLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zQzc3LjggMjYwLjkgNjIuNSAyMjQgMzIgMjI0IDE0LjMgMjI0IDAgMjA5LjcgMCAxOTJzMTQuMy0zMiAzMi0zMmMzMC41IDAgNDUuOC0zNi45IDI0LjItNTguNS0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwQzEyMy4xIDc3LjggMTYwIDYyLjUgMTYwIDMyIDE2MCAxNC4zIDE3NC4zIDAgMTkyIDB6TTE0NCAxNzZhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0xMjggNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMjQ4IDQwYzAgMjIuOSAyNy43IDM0LjQgNDMuOSAxOC4yIDkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWMtMTYuMiAxNi4yLTQuNyA0My45IDE4LjIgNDMuOSAxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGMtMjIuOSAwLTM0LjQgMjcuNy0xOC4yIDQzLjkgOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGMtMTYuMi0xNi4yLTQzLjktNC43LTQzLjkgMTguMiAwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGMwLTIyLjktMjcuNy0zNC40LTQzLjktMTguMi05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45YzE2LjItMTYuMiA0LjctNDMuOS0xOC4yLTQzLjktMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGMyMi45IDAgMzQuNC0yNy43IDE4LjItNDMuOS05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBjMTYuMiAxNi4yIDQzLjkgNC43IDQzLjktMTguMiAwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0ek01MDQgMzg0YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6Il19LHpjYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzY2hvb2wtZmxhZyIsaWNvbjpbNTc2LDUxMixbXSwiZTU2ZSIsIk0yNTYtOGMwLTEzLjMgMTAuNy0yNCAyNC0yNGwxMTIgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDQ4YzAgMTMuMy0xMC43IDI0LTI0IDI0bC03MiAwIDAgMTkuMiAxMjggNzYuOCA2NCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjI0YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCAyMjRjMC0zNS4zIDI4LjctNjQgNjQtNjRsNjQgMCAxMjgtNzYuOCAwLTkxLjJ6TTI0MCAzODRsMCA4MCA5NiAwIDAtODBjMC0yNi41LTIxLjUtNDgtNDgtNDhzLTQ4IDIxLjUtNDggNDh6TTExMiA0MTZjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwYy04LjggMC0xNiA3LjItMTYgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMHptMTYtMTQ0bDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwYy04LjggMC0xNiA3LjItMTYgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZ6TTQ5NiA0MTZjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwYy04LjggMC0xNiA3LjItMTYgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMHptMTYtMTQ0bDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwYy04LjggMC0xNiA3LjItMTYgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZ6bS0yMjQgMGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6Il19LENjYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0cmFkZW1hcmsiLGljb246WzY0MCw1MTIsWzg0ODJdLCJmMjVjIiwiTTM0Ni42IDExMC4yYy03LjgtMTEuNy0yMi40LTE3LTM1LjktMTIuOVMyODggMTEzLjkgMjg4IDEyOGwwIDI1NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTUwLjMgNjkuNCAxMDQuMWM1LjkgOC45IDE1LjkgMTQuMiAyNi42IDE0LjJzMjAuNy01LjMgMjYuNi0xNC4yTDU0NCAyMzMuNyA1NDQgMzg0YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0yNTZjMC0xNC4xLTkuMi0yNi41LTIyLjctMzAuNnMtMjguMSAxLjEtMzUuOSAxMi45TDQ0OCAyNjIuMyAzNDYuNiAxMTAuMnpNMzIgOTZDMTQuMyA5NiAwIDExMC4zIDAgMTI4czE0LjMgMzIgMzIgMzJsNjQgMCAwIDIyNGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMjI0IDY0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMMzIgOTZ6Il19LFRjYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmaXJlLWJ1cm5lciIsaWNvbjpbNTEyLDUxMixbXSwiZTRmMSIsIk0yODEuNyA0OC4zTDI5NCAzNC41YzUuNC02LjEgMTMuMy04LjggMjAuOS04LjkgNy4yIDAgMTQuMyAyLjYgMTkuOSA3LjggMTkuNyAxOC4zIDM5LjggNDMuMiA1NSA3MC42IDE1LjEgMjcuMiAyNi4yIDU4LjEgMjYuMiA4OC4xIDAgODguNy03MS4zIDE1OS44LTE2MCAxNTkuOC04OS42IDAtMTYwLTcxLjMtMTYwLTE1OS44IDAtMzcuMyAxNi03My40IDM2LjgtMTA0LjUgMjAuOS0zMS4zIDQ3LjUtNTkgNzAuOS04MC4yIDUuNy01LjIgMTMuMS03LjcgMjAuMy03LjVzMTMuNCAzLjIgMTguOCA3LjVjMTQuNCAxMS40IDM4LjkgNDAuNyAzOC45IDQwLjd6TTMyMCAyNDAuMmMwLTM2LjUtMzctNzMtNTQuOC04OC40LTUuNC00LjctMTMuMS00LjctMTguNSAwLTE3LjcgMTUuNC01NC44IDUxLjktNTQuOCA4OC40IDAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjR6TTkyLjggMzIwYzM3LjcgNDguMyA5Ni4xIDgwIDE2My4yIDgwIDY2LjUgMCAxMjUuMS0zMS43IDE2My04MGw0NSAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgNjRjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNDgwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTY0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4bDQ0LjggMHpNNDU2IDQwMGEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAweiJdfSxla2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmFjZS1zbWlsZS1iZWFtIixpY29uOls1MTIsNTEyLFsxMjg1MjIsInNtaWxlLWJlYW0iXSwiZjViOCIsIk0yNTYgNTEyYTI1NiAyNTYgMCAxIDAgMC01MTIgMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTY1LjQgMzIxLjljMjAuNCAyOCA1My40IDQ2LjEgOTAuNiA0Ni4xczcwLjItMTguMSA5MC42LTQ2LjFjNy44LTEwLjcgMjIuOC0xMy4xIDMzLjUtNS4zczEzLjEgMjIuOCA1LjMgMzMuNUMzNTYuMyAzOTAgMzA5LjIgNDE2IDI1NiA0MTZzLTEwMC4zLTI2LTEyOS40LTY1LjljLTcuOC0xMC43LTUuNC0yNS43IDUuMy0zMy41czI1LjctNS40IDMzLjUgNS4zek0xNzYgMTgwYy0xNS41IDAtMjggMTIuNS0yOCAyOGwwIDhjMCAxMS05IDIwLTIwIDIwcy0yMC05LTIwLTIwbDAtOGMwLTM3LjYgMzAuNC02OCA2OC02OHM2OCAzMC40IDY4IDY4bDAgOGMwIDExLTkgMjAtMjAgMjBzLTIwLTktMjAtMjBsMC04YzAtMTUuNS0xMi41LTI4LTI4LTI4em0xMzIgMjhsMCA4YzAgMTEtOSAyMC0yMCAyMHMtMjAtOS0yMC0yMGwwLThjMC0zNy42IDMwLjQtNjggNjgtNjhzNjggMzAuNCA2OCA2OGwwIDhjMCAxMS05IDIwLTIwIDIwcy0yMC05LTIwLTIwbDAtOGMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOHoiXX0sJGNhPWVrZSxEY2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidGVudC1hcnJvdy1sZWZ0LXJpZ2h0IixpY29uOls1MTIsNTEyLFtdLCJlNTdmIiwiTS0uNSAxMTNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDcyLTcyYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtMzEgMzEgMzEwLjEgMCA1NC4xIDAtMzEtMzFjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw3MiA3MmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtNzIgNzJjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsMzEtMzEtMTAyLjEgMC0uMSAwLTI2MiAwIDMxIDMxYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTcyLTcyek0zNy4xIDQ3Nkw2MC4zIDI5Mi42YzEuMi05LjcgNi44LTE4LjMgMTUuMS0yMy4zTDIzOC44IDE3MGMxMC4yLTYuMiAyMi45LTYuMiAzMy4xLS4xbDE2NS41IDk5LjRjOC40IDUgMTQgMTMuNyAxNS4zIDIzLjRMNDc1LjkgNDc2YzIuNCAxOS4xLTEyLjUgMzYtMzEuNyAzNmwtNzEuOSAwYy0xMi4xIDAtMjMuMi02LjgtMjguNi0xNy43TDI3NS40IDM1Ny45Yy0xLjgtMy42LTUuNS01LjktOS41LTUuOS01LjkgMC0xMC42IDQuNy0xMC42IDEwLjZsMCAxMTcuNGMwIDE3LjctMTQuMyAzMi0zMiAzMkw2OC44IDUxMmMtMTkuMyAwLTM0LjItMTYuOS0zMS43LTM2eiJdfSxMY2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicm91dGUiLGljb246WzUxMiw1MTIsW10sImY0ZDciLCJNNTEyIDk2YzAgNTAuMi01OS4xIDEyNS4xLTg0LjYgMTU1LTMuOCA0LjQtOS40IDYuMS0xNC41IDVMMzIwIDI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw5NiAwYzUzIDAgOTYgNDMgOTYgOTZzLTQzIDk2LTk2IDk2bC0yNzYuNCAwYzguNy05LjkgMTkuMy0yMi42IDMwLTM2LjggNi4zLTguNCAxMi44LTE3LjYgMTktMjcuMkw0MTYgNDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC05NiAwYy01MyAwLTk2LTQzLTk2LTk2czQzLTk2IDk2LTk2bDM5LjggMGMtMjEtMzEuNS0zOS44LTY3LjctMzkuOC05NiAwLTUzIDQzLTk2IDk2LTk2czk2IDQzIDk2IDk2ek0xMTcuMSA0ODkuMWMtMy44IDQuMy03LjIgOC4xLTEwLjEgMTEuM2wtMS44IDItLjItLjJjLTYgNC42LTE0LjYgNC0yMC0xLjgtMjUuMi0yNy40LTg1LTk3LjktODUtMTQ4LjQgMC01MyA0My05NiA5Ni05NnM5NiA0MyA5NiA5NmMwIDMwLTIxLjEgNjctNDMuNSA5Ny45LTEwLjcgMTQuNy0yMS43IDI4LTMwLjggMzguNWwtLjYgLjd6TTEyOCAzNTJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNNDE2IDEyOGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6Il19LHRrZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJhbmdsZXMtdXAiLGljb246WzM4NCw1MTIsWyJhbmdsZS1kb3VibGUtdXAiXSwiZjEwMiIsIk0yMTQuNiA0MS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtMTYwIDE2MGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwxOTIgMTA5LjMgMzI5LjQgMjQ2LjZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtMTYwLTE2MHptMTYwIDM1MmwtMTYwLTE2MGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTE2MCAxNjBjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMTkyIDMwMS4zIDMyOS40IDQzOC42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjN6Il19LEVjYT10a2UsUGNhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJ1Y2tldCIsaWNvbjpbNDQ4LDUxMixbXSwiZTRjZiIsIk00NDMuNyAyMDhjMi43IDQuNyA0LjMgMTAuMiA0LjMgMTYgMCAxNy43LTE0LjMgMzItMzIgMzJsLTUuMSAwLTIyLjQgMjEzYy0yLjYgMjQuNC0yMy4yIDQzLTQ3LjggNDNsLTIzMy42IDBjLTI0LjYgMC00NS4yLTE4LjUtNDcuOC00M0wzNy4xIDI1NiAzMiAyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyIDAtNS44IDEuNi0xMS4zIDQuMy0xNmw0MzkuNCAwek0yMjQtMTZjNzkuNSAwIDE0NCA2NC41IDE0NCAxNDRsMCAzMi00OCAwIDAtMzJjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZsMCAzMi00OCAwIDAtMzJDODAgNDguNSAxNDQuNS0xNiAyMjQtMTZ6Il19LEljYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJsZXNzLXRoYW4tZXF1YWwiLGljb246WzQ0OCw1MTIsW10sImY1MzciLCJNNDI2LjEgOTQuNGMxNi44LTUuNiAyNS44LTIzLjcgMjAuMi00MC41cy0yMy43LTI1LjgtNDAuNS0yMC4ybC0zODQgMTI4QzguOCAxNjYgMCAxNzguMiAwIDE5MnM4LjggMjYgMjEuOSAzMC40bDM4NCAxMjhjMTYuOCA1LjYgMzQuOS0zLjUgNDAuNS0yMC4ycy0zLjUtMzQuOS0yMC4yLTQwLjVMMTMzLjIgMTkyIDQyNi4xIDk0LjR6TTMyIDQxNmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzODQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwzMiA0MTZ6Il19LEFjYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmb2xkZXItY2xvc2VkIixpY29uOls1MTIsNTEyLFtdLCJlMTg1IiwiTTQ0OCA0NDhMNjQgNDQ4Yy0zNS4zIDAtNjQtMjguNy02NC02NGwwLTE3NiA1MTIgMCAwIDE3NmMwIDM1LjMtMjguNyA2NC02NCA2NHptNjQtMjg4TDAgMTYwIDAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMTM4LjcgMGMxMy44IDAgMjcuMyA0LjUgMzguNCAxMi44bDM4LjQgMjguOGM1LjUgNC4yIDEyLjMgNi40IDE5LjIgNi40TDQ0OCA4MGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDE2eiJdfSxOY2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGVyc29uLXRocm91Z2gtd2luZG93IixpY29uOls2NDAsNTEyLFtdLCJlNWE5IiwiTTY0IDY0bDIyNCAwIDAgOS44YzAgMzktMjMuNyA3NC01OS45IDg4LjQtNjAuNSAyNC4yLTEwMC4xIDgyLjctMTAwLjEgMTQ3LjlsMCA3My44LTY0IDAgMC0zMjB6bTI4OCAwbDIyNCAwIDAgMzIwLTY3LjcgMC0zLjctNC41LTc1LjItOTAuMmMtOS4xLTEwLjktMjIuNi0xNy4zLTM2LjktMTcuM2wtNzEuMSAwLTQxLTYzLjFjLS4zLS41LS42LTEtMS0xLjQgNDQuNy0yOSA3Mi41LTc5IDcyLjUtMTMzLjZsMC05Ljh6bTczIDMyMGwtMjYuNiAwIDQyLjcgNjQgMTUwLjkgMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTM1MmMwLTI2LjUtMjEuNS00OC00OC00OEw0OCAwQzIxLjUgMCAwIDIxLjUgMCA0OEwwIDQwMGMwIDI2LjUgMjEuNSA0OCA0OCA0OGwyNjAuMiAwIDMzLjIgNDkuOGM5LjggMTQuNyAyOS43IDE4LjcgNDQuNCA4LjlzMTguNy0yOS43IDguOS00NC40bC04NC4yLTEyNi4yIDc0LjYgMCA0MCA0OHptLTE1OS41IDBsLTczLjUgMCAwLTczLjhjMC0xMC4yIDEuNi0yMC4xIDQuNy0yOS41TDI2NS41IDM4NHpNMTkyIDEyOGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAweiJdfSxSY2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic2Nob29sLWxvY2siLGljb246WzY0MCw1MTIsW10sImU1NmYiLCJNMCAxOTJjMC0zNS4zIDI4LjctNjQgNjQtNjRsNjQgMCAxMjcuOS0xMTUuMWMxOC4zLTE2LjQgNDYtMTYuNCA2NC4yIDBMNDQ4IDEyOCA1MTIgMTI4YzMzIDAgNjAuMiAyNSA2My42IDU3LjItMTQuNy01LjktMzAuOC05LjItNDcuNi05LjItNzAuNyAwLTEyOCA1Ny4zLTEyOCAxMjhsMCAyNC40Yy0xOS42IDE3LjYtMzIgNDMuMS0zMiA3MS41bDAgOTZjMCA1LjUgLjUgMTAuOSAxLjMgMTYuMUw2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgMTkyek0zMzIuMyAzNDEuNWMtNi0zLjUtMTIuOS01LjUtMjAuMy01LjVsLTQ4IDBjLTIyLjEgMC00MCAxNy45LTQwIDQwbDAgODggOTYgMCAwLTY0LjFjMC0yMC44IDQuNC00MC41IDEyLjMtNTguNHpNMTEyIDM4NGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwem0xNi0xNDRsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNnptMjI0LTQ4YTY0IDY0IDAgMSAwIC0xMjggMCA2NCA2NCAwIDEgMCAxMjggMHpNNTYwIDM1MmwwLTQ3LjljMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCA0Ny45IDY0IDB6bS0xMTIgMi43bDAtNTAuNmMwLTQ0LjIgMzUuOC04MCA4MC04MHM4MCAzNS44IDgwIDgwbDAgNTAuNmMxOC42IDYuNiAzMiAyNC40IDMyIDQ1LjNsMCA5NmMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMTI4IDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtOTZjMC0yMC45IDEzLjQtMzguNyAzMi00NS4zeiJdfSxPY2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGVyc29uLWJ1cnN0IixpY29uOls2NDAsNTEyLFtdLCJlNTNiIiwiTTIwNCA0MC4xYy0xMy4zIDAtMjQtMTAuNy0yNC0yNGwwLTQ4YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCA0OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHpNNCAxNDQuMWMwLTEzLjMgMTAuNy0yNCAyNC0yNGw0OCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC00OCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHpNOTYuNSAyODUuNWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWwzMy45LTMzLjljOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45TDk2LjUgMjg1LjV6TTYyLjYgMi43YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDMzLjkgMzMuOWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwTDYyLjYgMzYuNmMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjl6TTM1Mi40LTMyYTU2IDU2IDAgMSAxIDAgMTEyIDU2IDU2IDAgMSAxIDAtMTEyek00NzguNyAyOTkuMWwtNDYuMy02Mi40IDAgMjc1LjNjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0xNjBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZsMCAxNjBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0yNzUuMy00Ni4zIDYyLjRjLTEwLjUgMTQuMi0zMC42IDE3LjItNDQuOCA2LjZzLTE3LjItMzAuNi02LjYtNDQuOGw3MC41LTk1YzI1LjItMzMuOSA2NS01My45IDEwNy4yLTUzLjlzODIgMjAgMTA3LjIgNTMuOWw3MC41IDk1YzEwLjUgMTQuMiA3LjYgMzQuMi02LjYgNDQuOHMtMzQuMiA3LjYtNDQuOC02LjZ6Il19LGFrZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJsZWZ0LWxvbmciLGljb246WzU3Niw1MTIsWyJsb25nLWFycm93LWFsdC1sZWZ0Il0sImYzMGEiLCJNOS40IDI3OC42Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM2wxMjgtMTI4YzkuMi05LjIgMjIuOS0xMS45IDM0LjktNi45UzE5MiAxMTUuMSAxOTIgMTI4bDAgNjQgMzM2IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCAzMmMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMzM2IDAgMCA2NGMwIDEyLjktNy44IDI0LjYtMTkuOCAyOS42cy0yNS43IDIuMi0zNC45LTYuOWwtMTI4LTEyOHoiXX0sRmNhPWFrZSxza2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibG9jYXRpb24tY3Jvc3NoYWlycyIsaWNvbjpbNTc2LDUxMixbImxvY2F0aW9uIl0sImY2MDEiLCJNMjg4LTE2YzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMTguM2M5OC4xIDE0IDE3NS43IDkxLjYgMTg5LjcgMTg5LjdsMTguMyAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0xOC4zIDBjLTE0IDk4LjEtOTEuNiAxNzUuNy0xODkuNyAxODkuN2wwIDE4LjNjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0xOC4zQzE1Ny45IDQ2My43IDgwLjMgMzg2LjEgNjYuMyAyODhMNDggMjg4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDE4LjMgMEM4MC4zIDEyNS45IDE1Ny45IDQ4LjMgMjU2IDM0LjNMMjU2IDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMyek0xMjggMjU2YTE2MCAxNjAgMCAxIDAgMzIwIDAgMTYwIDE2MCAwIDEgMCAtMzIwIDB6bTE2MC05NmE5NiA5NiAwIDEgMSAwIDE5MiA5NiA5NiAwIDEgMSAwLTE5MnoiXX0sQmNhPXNrZSxpa2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGVyc29uLWRvdHMtZnJvbS1saW5lIixpY29uOls1MTIsNTEyLFsiZGlhZ25vc2VzIl0sImY0NzAiLCJNMTg0IDcyYTcyIDcyIDAgMSAxIDE0NCAwIDcyIDcyIDAgMSAxIC0xNDQgMHpNMTYwIDI5OS4zYy0xOS45IDIyLjYtMzIgNTIuMi0zMiA4NC43bDAgMzItNjQgMCAwLTMyYzAtMTA2IDg2LTE5MiAxOTItMTkyczE5MiA4NiAxOTIgMTkybDAgMzItNjQgMCAwLTMyYzAtMzIuNS0xMi4xLTYyLjEtMzItODQuN2wwIDExNi43LTE5MiAwIDAtMTE2Ljd6TTIzMiAzODRhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em04OC0xMDRhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHpNMjQgNDY0bDQ2NCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0TDI0IDUxMmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpNNjQgMTg0YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6bTQyNCA3MmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6Il19LEhjYT1pa2UsWW9lPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImdhdWdlLXNpbXBsZS1oaWdoIixpY29uOls1MTIsNTEyLFs2MTY2OCwidGFjaG9tZXRlciIsInRhY2hvbWV0ZXItZmFzdCJdLCJmNjJhIiwiTTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDAgMjU2IDI1NiAwIDEgMSAtNTEyIDB6bTMyMCA5NmMwLTE2LjItNi0zMS4xLTE2LTQyLjNsNjkuNS0xMzguOWM1LjktMTEuOSAxLjEtMjYuMy0xMC43LTMyLjJzLTI2LjMtMS4xLTMyLjIgMTAuN0wyNjEuMSAyODguMmMtMS43LS4xLTMuNC0uMi01LjEtLjItMzUuMyAwLTY0IDI4LjctNjQgNjRzMjguNyA2NCA2NCA2NCA2NC0yOC43IDY0LTY0eiJdfSxxY2E9WW9lLGpjYT1Zb2UscmtlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImFuZ2xlcy1sZWZ0IixpY29uOls0NDgsNTEyLFsxNzEsImFuZ2xlLWRvdWJsZS1sZWZ0Il0sImYxMDAiLCJNOS40IDIzMy40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMNzcuMyAyNTYgMjE0LjYgMTE4LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTE2MCAxNjB6bTM1Mi0xNjBsLTE2MCAxNjBjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDE2MCAxNjBjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0wyNjkuMyAyNTYgNDA2LjYgMTE4LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDB6Il19LFZjYT1ya2Usb2tlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InVwLWRvd24iLGljb246WzUxMiw1MTIsWzg1OTcsMTEwMjEsImFycm93cy1hbHQtdiJdLCJmMzM4IiwiTTQwNi42IDUwMi42bDk2LTk2YzkuMi05LjIgMTEuOS0yMi45IDYuOS0zNC45UzQ5Mi45IDM1MiA0ODAgMzUybC02NCAwIDAtMzIwYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgMzIwLTY0IDBjLTEyLjkgMC0yNC42IDcuOC0yOS42IDE5LjhzLTIuMiAyNS43IDYuOSAzNC45bDk2IDk2YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwek0xNTAuNiA5LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC05NiA5NmMtOS4yIDkuMi0xMS45IDIyLjktNi45IDM0LjlTMTkuMSAxNjAgMzIgMTYwbDY0IDAgMCAzMjBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTMyMCA2NCAwYzEyLjkgMCAyNC42LTcuOCAyOS42LTE5LjhzMi4yLTI1LjctNi45LTM0LjlsLTk2LTk2eiJdfSxVY2E9b2tlLG5rZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJiYXR0ZXJ5LWVtcHR5IixpY29uOls2NDAsNTEyLFsiYmF0dGVyeS0wIl0sImYyNDQiLCJNMTEyIDE2MGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMjI0YzAgOC44IDcuMiAxNiAxNiAxNmw0MTYgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0yMjRjMC04LjgtNy4yLTE2LTE2LTE2bC00MTYgMHpNMzIgMTc2YzAtNDQuMiAzNS44LTgwIDgwLTgwbDQxNiAwYzQ0LjIgMCA4MCAzNS44IDgwIDgwbDAgNDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMmwwIDQ4YzAgNDQuMi0zNS44IDgwLTgwIDgwbC00MTYgMGMtNDQuMiAwLTgwLTM1LjgtODAtODBsMC0yMjR6Il19LFdjYT1ua2UsR2NhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImtleWJvYXJkIixpY29uOls1NzYsNTEyLFs5ZTNdLCJmMTFjIiwiTTY0IDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4TDAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDQ0OCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMjU2YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDY0em0xNiA2NGwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2ek02NCAyNDBjMC04LjggNy4yLTE2IDE2LTE2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMnpNMTc2IDEyOGwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2ek0xNjAgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJ6bTE2IDgwbDIyNCAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMjI0IDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNnptODAtMTc2YzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJ6bTE2IDgwbDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZ6bTgwLTgwYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJ6bTE2IDgwbDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZ6bTgwLTgwYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJ6bTE2IDgwbDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZ6Il19LEtjYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjb29raWUiLGljb246WzUxMiw1MTIsWzEyNzg1MF0sImY1NjMiLCJNMjQ3LjIgMTdjLTIyLjEtMy4xLTQ0LjYgLjktNjQuNCAxMS40bC03NCAzOS41Qzg5LjEgNzguNCA3My4yIDk0LjkgNjMuNCAxMTVMMjYuNyAxOTAuNmMtOS44IDIwLjEtMTMgNDIuOS05LjEgNjQuOWwxNC41IDgyLjhjMy45IDIyLjEgMTQuNiA0Mi4zIDMwLjcgNTcuOWw2MC4zIDU4LjRjMTYuMSAxNS42IDM2LjYgMjUuNiA1OC43IDI4LjdsODMgMTEuN2MyMi4xIDMuMSA0NC42LS45IDY0LjQtMTEuNGw3NC0zOS41YzE5LjctMTAuNSAzNS42LTI3IDQ1LjQtNDcuMmwzNi43LTc1LjVjOS44LTIwLjEgMTMtNDIuOSA5LjEtNjQuOWwtMTQuNi04Mi44Yy0zLjktMjIuMS0xNC42LTQyLjMtMzAuNy01Ny45TDM4OC45IDU3LjVjLTE2LjEtMTUuNi0zNi42LTI1LjYtNTguNy0yOC43TDI0Ny4yIDE3ek0yMDggMTQ0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNMTQ0IDMzNmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0yMjQtNjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0eiJdfSxZY2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic3RvcHdhdGNoIixpY29uOls0NDgsNTEyLFs5MjAxXSwiZjJmMiIsIk0xNjguNSAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDMyIDAgMCAyNS4zYy0xMDggMTEuOS0xOTIgMTAzLjUtMTkyIDIxNC43IDAgMTE5LjMgOTYuNyAyMTYgMjE2IDIxNnMyMTYtOTYuNyAyMTYtMjE2YzAtMzkuOC0xMC44LTc3LjEtMjkuNi0xMDkuMmwyOC4yLTI4LjJjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTIzLjQgMjMuNGMtMzIuOS0zMC4yLTc1LjItNTAuMy0xMjItNTUuNWwwLTI1LjMgMzIgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtMTEyIDB6bTgwIDE4NGwwIDEwNGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTEwNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0eiJdfSxaY2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZWplY3QiLGljb246WzQ0OCw1MTIsWzkxNjddLCJmMDUyIiwiTTIyNCAzMmMxMy41IDAgMjYuMyA1LjYgMzUuNCAxNS42bDE3NiAxOTJjMTIuOSAxNCAxNi4yIDM0LjMgOC42IDUxLjhTNDE5IDMyMCA0MDAgMzIwTDQ4IDMyMGMtMTkgMC0zNi4zLTExLjItNDMuOS0yOC43cy00LjMtMzcuNyA4LjYtNTEuOGwxNzYtMTkyQzE5Ny43IDM3LjYgMjEwLjUgMzIgMjI0IDMyek0wIDQzMmMwLTI2LjUgMjEuNS00OCA0OC00OGwzNTIgMGMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OEw0OCA0ODBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4eiJdfSxYY2E9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic2F0ZWxsaXRlLWRpc2giLGljb246WzUxMiw1MTIsWzEyODIyNV0sImY3YzAiLCJNMjMyIDBjMTU0LjYgMCAyODAgMTI1LjQgMjgwIDI4MCAwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGMwLTEyOC4xLTEwMy45LTIzMi0yMzItMjMyLTEzLjMgMC0yNC0xMC43LTI0LTI0UzIxOC43IDAgMjMyIDB6TTIwOCAxMjBjMC0xMy4zIDEwLjctMjQgMjQtMjQgMTAxLjYgMCAxODQgODIuNCAxODQgMTg0IDAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0YzAtNzUuMS02MC45LTEzNi0xMzYtMTM2LTEzLjMgMC0yNC0xMC43LTI0LTI0ek0yNi40IDE0Mi43YzguOC0xNy45IDMyLjQtMTkuOSA0Ni41LTUuOGwxMjguNSAxMjguNSAzMi0zMmMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zbC0zMiAzMiAxMjguNSAxMjguNWMxNC4xIDE0LjEgMTIgMzcuNi01LjggNDYuNS0zNC4yIDE2LjktNzIuNiAyNi40LTExMy4zIDI2LjQtMTQxLjQgMC0yNTYtMTE0LjYtMjU2LTI1NiAwLTQwLjcgOS41LTc5LjIgMjYuNC0xMTMuM3oiXX0sbGtlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZhY2Utcm9sbGluZy1leWVzIixpY29uOls1MTIsNTEyLFsxMjg1ODAsIm1laC1yb2xsaW5nLWV5ZXMiXSwiZjVhNSIsIk0yNTYgNTEyYTI1NiAyNTYgMCAxIDAgMC01MTIgMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTkyIDM1MmwxMjggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMTI4IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6bTMyLTEyOGMwIDM1LjMtMjguNyA2NC02NCA2NHMtNjQtMjguNy02NC02NGMwLTI2IDE1LjUtNDguNCAzNy44LTU4LjQtMy43IDUuMi01LjggMTEuNi01LjggMTguNCAwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyYzAtNi45LTIuMi0xMy4yLTUuOC0xOC40IDIyLjMgMTAgMzcuOCAzMi40IDM3LjggNTguNHptMTI4IDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NCAwLTI2IDE1LjUtNDguNCAzNy44LTU4LjQtMy43IDUuMi01LjggMTEuNi01LjggMTguNCAwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyYzAtNi45LTIuMi0xMy4yLTUuOC0xOC40IDIyLjMgMTAgMzcuOCAzMi40IDM3LjggNTguNCAwIDM1LjMtMjguNyA2NC02NCA2NHoiXX0sUWNhPWxrZSxja2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibGlzdC1jaGVjayIsaWNvbjpbNTEyLDUxMixbInRhc2tzIl0sImYwYWUiLCJNMTMzLjggMzYuM2MxMC45IDcuNiAxMy41IDIyLjYgNS45IDMzLjRsLTU2IDgwYy00LjEgNS44LTEwLjUgOS41LTE3LjYgMTAuMVM1MiAxNTggNDcgMTUzTDcgMTEzQy0yLjMgMTAzLjYtMi4zIDg4LjQgNyA3OVMzMS42IDY5LjcgNDEgNzlsMTkuOCAxOS44IDM5LjYtNTYuNmM3LjYtMTAuOSAyMi42LTEzLjUgMzMuNC01Ljl6bTAgMTYwYzEwLjkgNy42IDEzLjUgMjIuNiA1LjkgMzMuNGwtNTYgODBjLTQuMSA1LjgtMTAuNSA5LjUtMTcuNiAxMC4xUzUyIDMxOCA0NyAzMTNMNyAyNzNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGwxOS44IDE5LjggMzkuNi01Ni42YzcuNi0xMC45IDIyLjYtMTMuNSAzMy40LTUuOXpNMjI0IDk2YzAtMTcuNyAxNC4zLTMyIDMyLTMybDIyNCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0yMjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6bTAgMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMybDIyNCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0yMjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTE2MCA0MTZjMC0xNy43IDE0LjMtMzIgMzItMzJsMjg4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTI4OCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnpNNjQgMzc2YTQwIDQwIDAgMSAxIDAgODAgNDAgNDAgMCAxIDEgMC04MHoiXX0sSmNhPWNrZSxlMWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic2Fjay14bWFyayIsaWNvbjpbNTEyLDUxMixbXSwiZTU2YSIsIk0zMjggMTEybC0xNDQgMC0zNy4zLTc0LjVjLTEuOC0zLjYtMi43LTcuNi0yLjctMTEuNiAwLTE0LjMgMTEuNi0yNS45IDI1LjktMjUuOUwzNDIuMSAwYzE0LjMgMCAyNS45IDExLjYgMjUuOSAyNS45IDAgNC0uOSA4LTIuNyAxMS42TDMyOCAxMTJ6TTE2OS42IDE2MGwxNzIuOCAwIDQ4LjcgNDAuNkM0NTcuNiAyNTYgNDk2IDMzOCA0OTYgNDI0LjUgNDk2IDQ3Mi44IDQ1Ni44IDUxMiA0MDguNSA1MTJsLTMwNS4xIDBDNTUuMiA1MTIgMTYgNDcyLjggMTYgNDI0LjUgMTYgMzM4IDU0LjQgMjU2IDEyMC45IDIwMC42TDE2OS42IDE2MHpNMzIzLjkgMjg0LjFjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC0zMy45IDMzLjktMzMuOS0zMy45Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDMzLjkgMzMuOS0zMy45IDMzLjljLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGwzMy45LTMzLjkgMzMuOSAzMy45YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtMzMuOS0zMy45IDMzLjktMzMuOWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXoiXX0sdDFhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Imhhc2h0YWciLGljb246WzUxMiw1MTIsWzYyMDk4XSwiMjMiLCJNMjE0LjcgLjdjMTcuMyAzLjcgMjguMyAyMC43IDI0LjYgMzhsLTE5LjEgODkuMyAxMjYuNSAwIDIyLTEwMi43QzM3Mi40IDggMzg5LjQtMyA0MDYuNyAuN3MyOC4zIDIwLjcgMjQuNiAzOEw0MTIuMiAxMjggNDgwIDEyOGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtODEuNiAwLTI3LjQgMTI4IDY3LjggMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtODEuNiAwLTIyIDEwMi43Yy0zLjcgMTcuMy0yMC43IDI4LjMtMzggMjQuNnMtMjguMy0yMC43LTI0LjYtMzhsMTkuMS04OS4zLTEyNi41IDAtMjIgMTAyLjdjLTMuNyAxNy4zLTIwLjcgMjguMy0zOCAyNC42cy0yOC4zLTIwLjctMjQuNi0zOEw5OS44IDM4NCAzMiAzODRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsODEuNiAwIDI3LjQtMTI4LTY3LjggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw4MS42IDAgMjItMTAyLjdDMTgwLjQgOCAxOTcuNC0zIDIxNC43IC43ek0yMDYuNCAxOTJsLTI3LjQgMTI4IDEyNi41IDAgMjcuNC0xMjgtMTI2LjUgMHoiXX0sYTFhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRyYWluIixpY29uOlszODQsNTEyLFsxMjg2NDZdLCJmMjM4IiwiTTAgOTZDMCA0MyA0MyAwIDk2IDBMMjg4IDBjNTMgMCA5NiA0MyA5NiA5NmwwIDI1NmMwIDQwLjEtMjQuNiA3NC41LTU5LjUgODguOGw1My45IDYzLjdjOC42IDEwLjEgNy4zIDI1LjMtMi44IDMzLjhzLTI1LjMgNy4zLTMzLjgtMi44bC03NC04Ny41LTE1MS4zIDAtNzQgODcuNWMtOC42IDEwLjEtMjMuNyAxMS40LTMzLjggMi44cy0xMS40LTIzLjctMi44LTMzLjhsNTMuOS02My43QzI0LjYgNDI2LjUgMCAzOTIuMSAwIDM1MkwwIDk2em02NCAzMmwwIDk2YzAgMTcuNyAxNC4zIDMyIDMyIDMybDE5MiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtOTZjMC0xNy43LTE0LjMtMzItMzItMzJMOTYgOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek0xOTIgMzg0YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHoiXX0sczFhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImdhbWVwYWQiLGljb246WzY0MCw1MTIsW10sImYxMWIiLCJNNDQ4IDY0YzEwNiAwIDE5MiA4NiAxOTIgMTkyUzU1NCA0NDggNDQ4IDQ0OGwtMjU2IDBDODYgNDQ4IDAgMzYyIDAgMjU2Uzg2IDY0IDE5MiA2NGwyNTYgMHpNMTkyIDE3NmMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCAzMi0zMiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDMyIDAgMCAzMmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtMzIgMzIgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtMzIgMCAwLTMyYzAtMTMuMy0xMC43LTI0LTI0LTI0em0yNDAgOTZhMzIgMzIgMCAxIDAgMCA2NCAzMiAzMiAwIDEgMCAwLTY0em02NC05NmEzMiAzMiAwIDEgMCAwIDY0IDMyIDMyIDAgMSAwIDAtNjR6Il19LGRrZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmaWxlLWV4cG9ydCIsaWNvbjpbNTc2LDUxMixbImFycm93LXJpZ2h0LWZyb20tZmlsZSJdLCJmNTZlIiwiTTk2LjUgMGMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCAzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjU2IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC05NiA3OC4xIDAtMzEgMzFjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw3Mi03MmM5LjQtOS40IDkuNC0yNC42IDAtMzMuOWwtNzItNzJjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsMzEgMzEtNzguMSAwIDAtMTMzLjVjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMMjkxLjIgMTguN0MyNzkuMiA2LjcgMjYzIDAgMjQ2IDBMOTYuNSAwek0zNTggMTc2bC05My41IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0TDI0MC41IDU4LjUgMzU4IDE3NnpNMjI0LjUgMzI4YzAtMTMuMyAxMC43LTI0IDI0LTI0bDEwNCAwIDAgNDgtMTA0IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0eiJdfSxpMWE9ZGtlLHVrZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmYWNlLWdyaW1hY2UiLGljb246WzUxMiw1MTIsWzEyODU1NiwiZ3JpbWFjZSJdLCJmNTdmIiwiTTI1NiA1MTJhMjU2IDI1NiAwIDEgMCAwLTUxMiAyNTYgMjU2IDAgMSAwIDAgNTEyek00MDAgMzUyYzAgMjUuMi0xOS40IDQ1LjgtNDQgNDcuOGwwLTk1LjdjMjQuNiAyIDQ0IDIyLjcgNDQgNDcuOHpNMjc2IDMwNGw0MCAwIDAgOTYtNDAgMCAwLTk2em0tODAgOTZsMC05NiA0MCAwIDAgOTYtNDAgMHptLTQwLTk1LjhsMCA5NS43Yy0yNC42LTItNDQtMjIuNy00NC00Ny44czE5LjQtNDUuOCA0NC00Ny44ek0xNDQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6Il19LHIxYT11a2UscGtlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRyYWluLXN1YndheSIsaWNvbjpbMzg0LDUxMixbInN1YndheSJdLCJmMjM5IiwiTTAgOTZDMCA0MyA0MyAwIDk2IDBMMjg4IDBjNTMgMCA5NiA0MyA5NiA5NmwwIDI1NmMwIDQwLjEtMjQuNiA3NC41LTU5LjUgODguOGw1My45IDYzLjdjOC42IDEwLjEgNy4zIDI1LjMtMi44IDMzLjhzLTI1LjMgNy4zLTMzLjgtMi44bC03NC04Ny41LTE1MS4zIDAtNzQgODcuNWMtOC42IDEwLjEtMjMuNyAxMS40LTMzLjggMi44cy0xMS40LTIzLjctMi44LTMzLjhsNTMuOS02My43QzI0LjYgNDI2LjUgMCAzOTIuMSAwIDM1MkwwIDk2em02NCAzMmwwIDk2YzAgMTcuNyAxNC4zIDMyIDMyIDMybDcyIDAgMC0xNjAtNzIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTIxNiAyNTZsNzIgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMybC03MiAwIDAgMTYwek05NiAzODRhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0yMjQtMzJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHoiXX0sbzFhPXBrZSxoa2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2lyY2xlLWRvdCIsaWNvbjpbNTEyLDUxMixbMTI4MjgwLCJkb3QtY2lyY2xlIl0sImYxOTIiLCJNMjU2IDUxMmEyNTYgMjU2IDAgMSAwIDAtNTEyIDI1NiAyNTYgMCAxIDAgMCA1MTJ6bTAtMzUyYTk2IDk2IDAgMSAxIDAgMTkyIDk2IDk2IDAgMSAxIDAtMTkyeiJdfSxuMWE9aGtlLGwxYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJvYmplY3QtZ3JvdXAiLGljb246WzU3Niw1MTIsW10sImYyNDciLCJNMzIgMTE5LjRDMTIuOSAxMDguNCAwIDg3LjcgMCA2NCAwIDI4LjcgMjguNyAwIDY0IDAgODcuNyAwIDEwOC40IDEyLjkgMTE5LjQgMzJsMzM3LjEgMGMxMS4xLTE5LjEgMzEuNy0zMiA1NS40LTMyIDM1LjMgMCA2NCAyOC43IDY0IDY0IDAgMjMuNy0xMi45IDQ0LjQtMzIgNTUuNGwwIDI3My4xYzE5LjEgMTEuMSAzMiAzMS43IDMyIDU1LjQgMCAzNS4zLTI4LjcgNjQtNjQgNjQtMjMuNyAwLTQ0LjQtMTIuOS01NS40LTMybC0zMzcuMSAwYy0xMS4xIDE5LjEtMzEuNyAzMi01NS40IDMyLTM1LjMgMC02NC0yOC43LTY0LTY0IDAtMjMuNyAxMi45LTQ0LjQgMzItNTUuNGwwLTI3My4xem00NDggMGMtOS43LTUuNi0xNy44LTEzLjctMjMuNC0yMy40TDExOS40IDk2Yy01LjYgOS43LTEzLjcgMTcuOC0yMy40IDIzLjRsMCAyNzMuMWM5LjcgNS42IDE3LjggMTMuNyAyMy40IDIzLjRsMzM3LjEgMGM1LjYtOS43IDEzLjctMTcuOCAyMy40LTIzLjRsMC0yNzMuMXpNMTQ0IDE3NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmwxMTIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0xMTIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC02NHpNMjU2IDMyMGwzMiAwYzQ0LjIgMCA4MC0zNS44IDgwLTgwbDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMTEyIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTZ6Il19LGMxYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzaGlwIixpY29uOls2NDAsNTEyLFsxMjg2NzRdLCJmMjFhIiwiTTI3MiAwYy0yNi41IDAtNDggMjEuNS00OCA0OGwwIDE2LTE2IDBjLTQ0LjIgMC04MCAzNS44LTgwIDgwbDAgMTA4LjgtMjEuNiA4LjZjLTE0LjggNS45LTIyLjUgMjIuNC0xNy40IDM3LjUgMTAuNCAzMS4zIDI2LjggNTkuMyA0Ny43IDgzLjEgMjAuMS05LjIgNDEuNy0xMy45IDYzLjMtMTQgMzMuMS0uMiA2Ni4zIDEwLjIgOTQuNCAzMS40bDEuNiAxLjIgMC0yMTUtMTA0IDQxLjYgMC04My4yYzAtOC44IDcuMi0xNiAxNi0xNmwyMjQgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCA4My4yLTEwNC00MS42IDAgMjE1IDEuNi0xLjJjMjcuNS0yMC43IDU5LjktMzEuMiA5Mi40LTMxLjQgMjIuMy0uMSA0NC42IDQuNSA2NS4zIDE0IDIwLjktMjMuNyAzNy4zLTUxLjggNDcuNy04My4xIDUtMTUuMi0yLjYtMzEuNi0xNy40LTM3LjVMNTEyIDI1Mi44IDUxMiAxNDRjMC00NC4yLTM1LjgtODAtODAtODBsLTE2IDAgMC0xNmMwLTI2LjUtMjEuNS00OC00OC00OEwyNzIgMHpNNDAzLjQgNDc2LjFjMjEuMy0xNi4xIDQ5LjktMTYuMSA3MS4yIDAgMTkgMTQuNCA0MS45IDI4LjIgNjcuMiAzMy4zIDI2LjUgNS40IDU0LjMgLjggODAuNy0xOS4xIDEwLjYtOCAxMi43LTIzIDQuNy0zMy42cy0yMy0xMi43LTMzLjYtNC43Yy0xNC45IDExLjItMjguNiAxMy4xLTQyLjMgMTAuMy0xNC45LTMtMzAuOS0xMS45LTQ3LjgtMjQuNi0zOC40LTI5LTkwLjUtMjktMTI5IDAtMjQgMTguMS00MC43IDI2LjMtNTQuNSAyNi4zcy0zMC41LTguMi01NC41LTI2LjNjLTM4LjQtMjktOTAuNS0yOS0xMjkgMC0yMS42IDE2LjMtNDEuMyAyNS44LTU4LjkgMjUuNy05LjYtLjEtMTkuOS0zLTMxLjItMTEuNS0xMC42LTgtMjUuNi01LjktMzMuNiA0LjdTNyA0ODIuMyAxNy42IDQ5MC4zYzE5LjEgMTQuNCAzOS40IDIxIDU5LjggMjEuMSAzMy45IC4yIDY0LjMtMTcuNCA4OC4xLTM1LjMgMjEuMy0xNi4xIDQ5LjktMTYuMSA3MS4yIDAgMjQuMiAxOC4zIDUyLjMgMzUuOSA4My40IDM1LjlzNTkuMS0xNy43IDgzLjQtMzUuOXoiXX0sZDFhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImMiLGljb246WzM4NCw1MTIsWzk5XSwiNDMiLCJNMzI5LjEgMTQyLjljLTYyLjUtNjIuNS0xNTUuOC02Mi41LTIxOC4zIDBzLTYyLjUgMTYzLjggMCAyMjYuMyAxNTUuOCA2Mi41IDIxOC4zIDBjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBzMTIuNSAzMi44IDAgNDUuM2MtODcuNSA4Ny41LTIyMS4zIDg3LjUtMzA4LjggMHMtODcuNS0yMjkuMyAwLTMxNi44IDIyMS4zLTg3LjUgMzA4LjggMGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMHoiXX0sZmtlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNxdWFyZS1waG9uZSIsaWNvbjpbNDQ4LDUxMixbInBob25lLXNxdWFyZSJdLCJmMDk4IiwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6bTg4IDk2LjdjOS44LTIuNyAyMC4xIDIuNCAyNCAxMS44bDIwLjMgNDguN2MzLjQgOC4zIDEuMSAxNy44LTUuOSAyMy41bC0yMi4xIDE4YzE2LjIgMzUuOCA0NC41IDY1IDc5LjYgODIuNGwxOS4zLTIzLjZjNS43LTYuOSAxNS4yLTkuMyAyMy41LTUuOWw0OC43IDIwLjNjOS40IDMuOSAxNC40IDE0LjIgMTEuOCAyNGwtLjggMi44Yy04LjggMzIuMy00MC4xIDU5LjktNzguMiA1MS44LTg3LjUtMTguNS0xNTYuMy04Ny40LTE3NC45LTE3NC45LTguMS0zOC4xIDE5LjUtNjkuNCA1MS44LTc4LjJsMi44LS44eiJdfSx1MWE9ZmtlLHAxYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJydWxlci1jb21iaW5lZCIsaWNvbjpbNDQ4LDUxMixbXSwiZjU0NiIsIk0xIDQ0MS43QzUuNSA0NjMuNSAyNC44IDQ4MCA0OCA0ODBsMzUyIDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC05NmMwLTI2LjUtMjEuNS00OC00OC00OGwtNDggMCAwIDcyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtNzItNjQgMCAwIDcyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtNzItNzIgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGw3MiAwIDAtNjQtNzIgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGw3MiAwIDAtNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhMNDggMzJDMjEuNSAzMiAwIDUzLjUgMCA4MEwwIDQzMmMwIDMuMyAuMyA2LjYgMSA5Ljd6Il19LFpvZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJhcnJvd3Mtcm90YXRlIixpY29uOls1MTIsNTEyLFsxMjg0NzIsInJlZnJlc2giLCJzeW5jIl0sImYwMjEiLCJNNjUuOSAyMjguNWMxMy4zLTkzIDkzLjQtMTY0LjUgMTkwLjEtMTY0LjUgNTMgMCAxMDEgMjEuNSAxMzUuOCA1Ni4yIC4yIC4yIC40IC40IC42IC42bDcuNiA3LjItNDcuOSAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDEyOCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMTI4YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgNTMuNC0xMS4zLTEwLjdDMzkwLjUgMjguNiAzMjYuNSAwIDI1NiAwIDEyNyAwIDIwLjMgOTUuNCAyLjYgMjE5LjUgLjEgMjM3IDEyLjIgMjUzLjIgMjkuNyAyNTUuN3MzMy43LTkuNyAzNi4yLTI3LjF6bTQ0My41IDY0YzIuNS0xNy41LTkuNy0zMy43LTI3LjEtMzYuMnMtMzMuNyA5LjctMzYuMiAyNy4xYy0xMy4zIDkzLTkzLjQgMTY0LjUtMTkwLjEgMTY0LjUtNTMgMC0xMDEtMjEuNS0xMzUuOC01Ni4yLS4yLS4yLS40LS40LS42LS42bC03LjYtNy4yIDQ3LjkgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwzMiAzMjBjLTguNSAwLTE2LjcgMy40LTIyLjcgOS41Uy0uMSAzNDMuNyAwIDM1Mi4zbDEgMTI3Yy4xIDE3LjcgMTQuNiAzMS45IDMyLjMgMzEuN1M2NS4yIDQ5Ni40IDY1IDQ3OC43bC0uNC01MS41IDEwLjcgMTAuMWM0Ni4zIDQ2LjEgMTEwLjIgNzQuNyAxODAuNyA3NC43IDEyOSAwIDIzNS43LTk1LjQgMjUzLjQtMjE5LjV6Il19LGgxYT1ab2UsZjFhPVpvZSxta2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicGVyc29uLWRyZXNzIixpY29uOlszODQsNTEyLFsiZmVtYWxlIl0sImYxODIiLCJNMTM2IDI0YTU2IDU2IDAgMSAxIDExMiAwIDU2IDU2IDAgMSAxIC0xMTIgMHpNMTEyIDM4NGwtMjUuOCAwYy0xMC45IDAtMTguNi0xMC43LTE1LjItMjEuMWw0My0xMjktNDguMyA2NS4xYy0xMC41IDE0LjItMzAuNiAxNy4yLTQ0LjggNi42cy0xNy4yLTMwLjYtNi42LTQ0LjhsNzAuNS05NUMxMTAgMTMyIDE0OS43IDExMiAxOTIgMTEyczgyIDIwIDEwNy4yIDUzLjlsNzAuNSA5NWMxMC41IDE0LjIgNy42IDM0LjItNi42IDQ0LjhzLTM0LjIgNy42LTQ0LjgtNi42TDI3MCAyMzQgMzEzIDM2Mi45YzMuNSAxMC40LTQuMyAyMS4xLTE1LjIgMjEuMWwtMjUuOCAwIDAgMTI4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMTI4LTMyIDAgMCAxMjhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0xMjh6Il19LG0xYT1ta2UsZzFhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJvb2stb3BlbiIsaWNvbjpbNTEyLDUxMixbMTI4MjE0LDEyODM2Nl0sImY1MTgiLCJNMjU2IDE0MS4zbDAgMzA5LjMgLjUtLjJDMzExLjEgNDI3LjcgMzY5LjcgNDE2IDQyOC44IDQxNmwxOS4yIDAgMC0zMjAtMTkuMiAwYy00Mi4yIDAtODQuMSA4LjQtMTIzLjEgMjQuNi0xNi44IDctMzMuNCAxMy45LTQ5LjcgMjAuN3pNMjMwLjkgNjEuNUwyNTYgNzIgMjgxLjEgNjEuNUMzMjcuOSA0MiAzNzguMSAzMiA0MjguOCAzMkw0NjQgMzJjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCAzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhsLTM1LjIgMGMtNTAuNyAwLTEwMC45IDEwLTE0Ny43IDI5LjVsLTEyLjggNS4zYy03LjkgMy4zLTE2LjcgMy4zLTI0LjYgMGwtMTIuOC01LjNDMTg0LjEgNDkwIDEzMy45IDQ4MCA4My4yIDQ4MEw0OCA0ODBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4TDAgODBDMCA1My41IDIxLjUgMzIgNDggMzJsMzUuMiAwYzUwLjcgMCAxMDAuOSAxMCAxNDcuNyAyOS41eiJdfSxiMWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZm9sZGVyLXRyZWUiLGljb246WzU3Niw1MTIsW10sImY4MDIiLCJNNDggMjRDNDggMTAuNyAzNy4zIDAgMjQgMFMwIDEwLjcgMCAyNEwwIDM5MmMwIDMwLjkgMjUuMSA1NiA1NiA1NmwxODQgMCAwLTQ4LTE4NCAwYy00LjQgMC04LTMuNi04LThsMC0yMzIgMTkyIDAgMC00OC0xOTIgMCAwLTg4ek0zMzYgMjI0bDE5MiAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtOTZjMC0yNi41LTIxLjUtNDgtNDgtNDhsLTgyLjcgMGMtOC41IDAtMTYuNi0zLjQtMjIuNi05LjRsLTguNi04LjZjLTktOS0yMS4yLTE0LjEtMzMuOS0xNC4xTDMzNiAwYy0yNi41IDAtNDggMjEuNS00OCA0OGwwIDEyOGMwIDI2LjUgMjEuNSA0OCA0OCA0OHptMCAyODhsMTkyIDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC05NmMwLTI2LjUtMjEuNS00OC00OC00OGwtODIuNyAwYy04LjUgMC0xNi42LTMuNC0yMi42LTkuNGwtOC42LTguNmMtOS05LTIxLjItMTQuMS0zMy45LTE0LjFMMzM2IDI4OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCAxMjhjMCAyNi41IDIxLjUgNDggNDggNDh6Il19LHYxYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ2aXJnbyIsaWNvbjpbNjQwLDUxMixbXSwiZTg1MCIsIk0zNjggMzJjNjEuOSAwIDExMiA1MC4xIDExMiAxMTJsMCAyNi44YzE0LjUtNi45IDMwLjgtMTAuOCA0OC0xMC44IDYxLjkgMCAxMTIgNTAuMSAxMTIgMTEyUzU4OS45IDM4NCA1MjggMzg0bC00OCAwIDAgMzJjMCAxNi42IDEyLjYgMzAuMiAyOC43IDMxLjhsNi42IC4zYzE2LjEgMS42IDI4LjcgMTUuMyAyOC43IDMxLjggMCAxNy43LTE0LjMgMzItMzIgMzItNTMgMC05Ni00My05Ni05NmwwLTMyLTE2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsMTYgMCAwLTE3NmMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OGwwIDMwNGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTMwNGMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OGwwIDMwNGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTMyMGMwLTE2LjYtMTIuNi0zMC4yLTI4LjctMzEuOGwtNi42LS4zQzQ0LjYgOTQuMiAzMiA4MC42IDMyIDY0IDMyIDQ2LjMgNDYuMyAzMiA2NCAzMiA5MSAzMiAxMTUuMyA0My4xIDEzMi43IDYxIDE1Mi42IDQzIDE3OSAzMiAyMDggMzIgMjM5LjMgMzIgMjY3LjcgNDQuOSAyODggNjUuNyAzMDguMyA0NC45IDMzNi42IDMyIDM2OCAzMnpNNTI4IDIyNGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCA0OCA0OCAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4cy0yMS41LTQ4LTQ4LTQ4eiJdfSxna2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiYm94LWFyY2hpdmUiLGljb246WzUxMiw1MTIsWyJhcmNoaXZlIl0sImYxODciLCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMmw0NDggMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMyTDMyIDEyOEMxNC4zIDEyOCAwIDExMy43IDAgOTZMMCA2NHpNMzIgMTc2bDQ0OCAwIDAgMjQwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDk2IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRsMC0yNDB6bTE1MiA2NGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwxNDQgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtMTQ0IDB6Il19LHgxYT1na2UseTFhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRlbnQtYXJyb3ctZG93bi10by1saW5lIixpY29uOls1NzYsNTEyLFtdLCJlNTdlIiwiTTE4NSAxMjFjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtMzEgMzEgMC0xMDIuMUMxMjAgMi43IDEwOS4zLTggOTYtOFM3MiAyLjcgNzIgMTZsMCAxMDIuMS0zMS0zMUMzMS42IDc3LjcgMTYuNCA3Ny43IDcgODdTLTIuMyAxMTEuNiA3IDEyMWw3MiA3MmM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGw3Mi03MnpNMTU1LjggMjYwLjZMMTMyLjEgNDQ4IDMyIDQ0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw1MTIgMGMxNy43IDAgMzItMTQuMyAzMi0zMiAwLTIuOC0uNC01LjUtMS04TDU0OC4yIDI2MC43Yy0xLjItOS43LTYuOS0xOC40LTE1LjMtMjMuNEwzNjcuNCAxMzcuOWMtMTAuMi02LjEtMjIuOS02LjEtMzMuMSAuMUwxNzAuOSAyMzcuM2MtOC4zIDUuMS0xMy45IDEzLjctMTUuMSAyMy4zek00NDggNDQ4bC05Ny4xIDAgMC0xNDkuNGMwLTUuOSA0LjctMTAuNiAxMC42LTEwLjYgNCAwIDcuNyAyLjMgOS41IDUuOUw0NDggNDQ4eiJdfSx3MWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToicXJjb2RlIixpY29uOls0NDgsNTEyLFtdLCJmMDI5IiwiTTY0IDE2MGw2NCAwIDAtNjQtNjQgMCAwIDY0ek0wIDgwQzAgNTMuNSAyMS41IDMyIDQ4IDMybDk2IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCA5NmMwIDI2LjUtMjEuNSA0OC00OCA0OGwtOTYgMGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhMMCA4MHpNNjQgNDE2bDY0IDAgMC02NC02NCAwIDAgNjR6TTAgMzM2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4bDk2IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCA5NmMwIDI2LjUtMjEuNSA0OC00OCA0OGwtOTYgMGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhsMC05NnpNMzIwIDk2bDAgNjQgNjQgMCAwLTY0LTY0IDB6TTMwNCAzMmw5NiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgOTZjMCAyNi41LTIxLjUgNDgtNDggNDhsLTk2IDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtOTZjMC0yNi41IDIxLjUtNDggNDgtNDh6TTI4OCAzNTJhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em0wIDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptOTYgMzJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzJ6bTMyLTk2YTMyIDMyIDAgMSAxIDAtNjQgMzIgMzIgMCAxIDEgMCA2NHptLTMyIDMyYTMyIDMyIDAgMSAxIC02NCAwIDMyIDMyIDAgMSAxIDY0IDB6Il19LGsxYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJkcmFnb24iLGljb246WzY0MCw1MTIsWzEyODAwOV0sImY2ZDUiLCJNMzUyIDEyNC41bC01MS45LTEzYy02LjUtMS42LTExLjMtNy4xLTEyLTEzLjhzMi44LTEzLjEgOC43LTE2LjFsNDAuOC0yMC40LTQzLjMtMzIuNWMtNS41LTQuMS03LjgtMTEuMy01LjYtMTcuOVMyOTcuMSAwIDMwNCAwTDQ2NCAwYzMwLjIgMCA1OC43IDE0LjIgNzYuOCAzOC40bDU3LjYgNzYuOGM2LjIgOC4zIDkuNiAxOC40IDkuNiAyOC44IDAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC0yMS41IDBjLTE3IDAtMzMuMy02LjctNDUuMy0xOC43bC0xMy4zLTEzLjMtMzIgMCAwIDIxLjVjMCAyNC44IDEyLjggNDcuOSAzMy44IDYxLjFsMTA2LjYgNjYuNmMzMi4xIDIwLjEgNTEuNiA1NS4yIDUxLjYgOTMuMSAwIDYwLjYtNDkuMSAxMDkuOC0xMDkuOCAxMDkuOEwzMi4zIDUxMmMtMy4zIDAtNi42LS40LTkuNi0xLjQtOS4yLTIuOC0xNi43LTkuNi0yMC40LTE4LjYtMS4zLTMuMy0yLjItNi45LTIuMy0xMC43LS4yLTMuNyAuMy03LjMgMS4zLTEwLjcgMi44LTkuMiA5LjYtMTYuNyAxOC42LTIwLjQgMy0xLjIgNi4yLTIgOS41LTIuMkw0MzMuMyA0MTJjOC4zLS43IDE0LjctNy43IDE0LjctMTYuMSAwLTQuMy0xLjctOC40LTQuNy0xMS40bC00NC40LTQ0LjRjLTMwLTMwLTQ2LjktNzAuNy00Ni45LTExMy4xbDAtMTAyLjV6TTUxMiA3Mi4zYzAtLjEgMC0uMiAwLS4zczAtLjIgMC0uM2wwIC42em0tMS4zIDcuNEw0NjQuMyA2OC4xYy0uMiAxLjMtLjMgMi42LS4zIDMuOSAwIDEzLjMgMTAuNyAyNCAyNCAyNCAxMC42IDAgMTkuNS02LjggMjIuNy0xNi4zek0xMzAuOSAxMTYuNWMxNi4zLTE0LjUgNDAuNC0xNi4yIDU4LjUtNC4xbDEzMC42IDg3IDAgMjcuNWMwIDMyLjggOC40IDY0LjggMjQgOTNsLTIzMiAwYy02LjcgMC0xMi43LTQuMi0xNS0xMC40cy0uNS0xMy4zIDQuNi0xNy43TDE3MSAyMzIuMyAxOC40IDI1NS44Yy03IDEuMS0xMy45LTIuNi0xNi45LTlTLjEgMjMyLjggNS40IDIyOEwxMzAuOSAxMTYuNXoiXX0sYmtlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImhvdXJnbGFzcy1lbmQiLGljb246WzM4NCw1MTIsWzg5ODcsImhvdXJnbGFzcy0zIl0sImYyNTMiLCJNMzIgMEMxNC4zIDAgMCAxNC4zIDAgMzJTMTQuMyA2NCAzMiA2NGwwIDExYzAgNDIuNCAxNi45IDgzLjEgNDYuOSAxMTMuMWw2Ny45IDY3LjktNjcuOSA2Ny45QzQ4LjkgMzUzLjkgMzIgMzk0LjYgMzIgNDM3bDAgMTFjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMzIwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsMC0xMWMwLTQyLjQtMTYuOS04My4xLTQ2LjktMTEzLjFsLTY3LjktNjcuOSA2Ny45LTY3LjljMzAtMzAgNDYuOS03MC43IDQ2LjktMTEzLjFsMC0xMWMxNy43IDAgMzItMTQuMyAzMi0zMlMzNjkuNyAwIDM1MiAwTDMyIDB6TTk2IDc1bDAtMTEgMTkyIDAgMCAxMWMwIDI1LjUtMTAuMSA0OS45LTI4LjEgNjcuOWwtNjcuOSA2Ny45LTY3LjktNjcuOUMxMDYuMSAxMjQuOSA5NiAxMDAuNCA5NiA3NXoiXX0sUzFhPWJrZSxoaD17cHJlZml4OiJmYXMiLGljb25OYW1lOiJncmlwIixpY29uOls1MTIsNTEyLFs1ODExOSwiZ3JpZC1ob3Jpem9udGFsIiwiZ3JpcC1ob3Jpem9udGFsIl0sImY1OGQiLCJNODggOTZjMjIuMSAwIDQwIDE3LjkgNDAgNDBsMCA0OGMwIDIyLjEtMTcuOSA0MC00MCA0MGwtNDggMGMtMjIuMSAwLTQwLTE3LjktNDAtNDBsMC00OGMwLTIyLjEgMTcuOS00MCA0MC00MGw0OCAwek0yODAgMjI0bC00OCAwYy0yMi4xIDAtNDAtMTcuOS00MC00MGwwLTQ4YzAtMjIuMSAxNy45LTQwIDQwLTQwbDQ4IDBjMjIuMSAwIDQwIDE3LjkgNDAgNDBsMCA0OGMwIDIyLjEtMTcuOSA0MC00MCA0MHptMTkyIDBsLTQ4IDBjLTIyLjEgMC00MC0xNy45LTQwLTQwbDAtNDhjMC0yMi4xIDE3LjktNDAgNDAtNDBsNDggMGMyMi4xIDAgNDAgMTcuOSA0MCA0MGwwIDQ4YzAgMjIuMS0xNy45IDQwLTQwIDQwem0wIDE5MmwtNDggMGMtMjIuMSAwLTQwLTE3LjktNDAtNDBsMC00OGMwLTIyLjEgMTcuOS00MCA0MC00MGw0OCAwYzIyLjEgMCA0MCAxNy45IDQwIDQwbDAgNDhjMCAyMi4xLTE3LjkgNDAtNDAgNDB6TTI4MCAyODhjMjIuMSAwIDQwIDE3LjkgNDAgNDBsMCA0OGMwIDIyLjEtMTcuOSA0MC00MCA0MGwtNDggMGMtMjIuMSAwLTQwLTE3LjktNDAtNDBsMC00OGMwLTIyLjEgMTcuOS00MCA0MC00MGw0OCAwek04OCA0MTZsLTQ4IDBjLTIyLjEgMC00MC0xNy45LTQwLTQwbDAtNDhjMC0yMi4xIDE3LjktNDAgNDAtNDBsNDggMGMyMi4xIDAgNDAgMTcuOSA0MCA0MGwwIDQ4YzAgMjIuMS0xNy45IDQwLTQwIDQweiJdfSxfMWE9aGgsTTFhPWhoLHZrZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJib3JkZXItdG9wLWxlZnQiLGljb246WzQ0OCw1MTIsWyJib3JkZXItc3R5bGUiXSwiZjg1MyIsIk0wIDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMzUyIDM1MiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0NDh6bTEyOCAwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzItMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyem0xMjggMGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMnptMTYwIDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnpNMzg0IDE5MmEzMiAzMiAwIDEgMCA2NCAwIDMyIDMyIDAgMSAwIC02NCAwem0zMiAxNjBhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0eiJdfSx6MWE9dmtlLHhrZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJsaXN0LXVsIixpY29uOls1MTIsNTEyLFsibGlzdC1kb3RzIl0sImYwY2EiLCJNNDggMTQ0YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpNMTkyIDY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDI4OCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDE5MiA2NHptMCAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMjg4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTI4OCAwem0wIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwyODggMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMjg4IDB6TTQ4IDQ2NGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTk2IDI1NmE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAweiJdfSxDMWE9eGtlLFQxYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwZW9wbGUtcm9iYmVyeSIsaWNvbjpbNTc2LDUxMixbXSwiZTUzNiIsIk00ODguMiA1OS4xQzQ3OC4xIDk5LjYgNDQxLjcgMTI4IDQwMCAxMjhzLTc4LjEtMjguNC04OC4yLTY4LjlMMzAzIDI0LjJDMjk4LjggNy4xIDI4MS40LTMuMyAyNjQuMiAxUzIzNi43IDIyLjYgMjQxIDM5LjhsOC43IDM0LjljMTEgNDQgNDAuMiA3OS42IDc4LjMgOTkuNkwzMjggNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xMjggMTYgMCAwIDEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMzA1LjdjMzguMS0yMCA2Ny4zLTU1LjYgNzguMy05OS42TDU1OSAzOS44YzQuMy0xNy4xLTYuMS0zNC41LTIzLjMtMzguOFM1MDEuMiA3LjEgNDk3IDI0LjJsLTguNyAzNC45ek00MDAgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2ek04MCA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bS04IDMyYy0zNS4zIDAtNjQgMjguNy02NCA2NGwwIDk2IDAgLjYgMCAxOTEuNGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTI4IDE2IDAgMCAxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTIyNy4zIDEzIDIwLjVjNS45IDkuMiAxNi4xIDE0LjkgMjcgMTQuOWw0OCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0zMC40IDAtMzcuNC01OC45QzE1Ny42IDE0MiAxMzIuMSAxMjggMTA0LjcgMTI4TDcyIDEyOHoiXX0sJDFhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im1vYmlsZS1idXR0b24iLGljb246WzM4NCw1MTIsW10sImYxMGIiLCJNODAgMEM0NC43IDAgMTYgMjguNyAxNiA2NGwwIDM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwyMjQgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTM4NGMwLTM1LjMtMjguNy02NC02NC02NEw4MCAwek0xOTIgNDY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnoiXX0sWG9lPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImFycm93LWRvd24tYS16IixpY29uOls1MTIsNTEyLFsic29ydC1hbHBoYS1hc2MiLCJzb3J0LWFscGhhLWRvd24iXSwiZjE1ZCIsIk0yMzAuNiAzOTAuNmwtODAgODBjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwbC04MC04MGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMEw5NiAzNzAuNyA5NiA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgMzA2LjcgMjUuNC0yNS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjN6bTE4Mi0zNDAuOWM1MC43IDEwMS4zIDc3LjMgMTU0LjcgODAgMTYwIDcuOSAxNS44IDEuNSAzNS0xNC4zIDQyLjlzLTM1IDEuNS00Mi45LTE0LjNsLTcuMi0xNC4zLTg4LjQgMC03LjIgMTQuM2MtNy45IDE1LjgtMjcuMSAyMi4yLTQyLjkgMTQuM3MtMjIuMi0yNy4xLTE0LjMtNDIuOWMyLjctNS4zIDI5LjMtNTguNyA4MC0xNjAgNS40LTEwLjggMTYuNS0xNy43IDI4LjYtMTcuN3MyMy4yIDYuOCAyOC42IDE3Ljd6TTM4NCAxMzUuNmwtMjAuMiA0MC40IDQwLjQgMC0yMC4yLTQwLjR6TTI4OCAzMjBjMC0xNy43IDE0LjMtMzIgMzItMzJsMTI4IDBjMTIuOSAwIDI0LjYgNy44IDI5LjYgMTkuOHMyLjIgMjUuNy02LjkgMzQuOUwzOTcuMyA0MTYgNDQ4IDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMTI4IDBjLTEyLjkgMC0yNC42LTcuOC0yOS42LTE5LjhzLTIuMi0yNS43IDYuOS0zNC45bDczLjQtNzMuNC01MC43IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyeiJdfSxEMWE9WG9lLEwxYT1Yb2UsRTFhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im1vbmV5LWJpbGwiLGljb246WzUxMiw1MTIsW10sImYwZDYiLCJNNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjhMMCAzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzg0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yNTZjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgNjR6bTE5MiA5NmE5NiA5NiAwIDEgMSAwIDE5MiA5NiA5NiAwIDEgMSAwLTE5MnptMTkyIDI0YzAgNC40LTMuNiA4LjEtOCA3LjUtMjktMy42LTUxLjktMjYuNi01NS41LTU1LjUtLjUtNC40IDMuMS04IDcuNS04bDQ4IDBjNC40IDAgOCAzLjYgOCA4bDAgNDh6TTY0IDMyOGMwLTQuNCAzLjYtOC4xIDgtNy41IDI5IDMuNiA1MS45IDI2LjYgNTUuNSA1NS41IC41IDQuNC0zLjEgOC03LjUgOGwtNDggMGMtNC40IDAtOC0zLjYtOC04bDAtNDh6bTgtMTM2LjVjLTQuNCAuNS04LTMuMS04LTcuNWwwLTQ4YzAtNC40IDMuNi04IDgtOGw0OCAwYzQuNCAwIDguMSAzLjYgNy41IDgtMy42IDI5LTI2LjYgNTEuOS01NS41IDU1LjV6bTM2OCAxMjljNC40LS41IDggMy4xIDggNy41bDAgNDhjMCA0LjQtMy42IDgtOCA4bC00OCAwYy00LjQgMC04LjEtMy42LTcuNS04IDMuNi0yOSAyNi42LTUxLjkgNTUuNS01NS41eiJdfSx5a2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2lyY2xlLW1pbnVzIixpY29uOls1MTIsNTEyLFsibWludXMtY2lyY2xlIl0sImYwNTYiLCJNMjU2IDUxMmEyNTYgMjU2IDAgMSAwIDAtNTEyIDI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE2OCAyMzJsMTc2IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTE3NiAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0eiJdfSxQMWE9eWtlLHdrZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJhcnJvdy1wb2ludGVyIixpY29uOls0NDgsNTEyLFsibW91c2UtcG9pbnRlciJdLCJmMjQ1IiwiTTc3LjMgMi41YzguMS00LjEgMTcuOS0zLjIgMjUuMSAyLjNsMzIwIDIzOS45YzguMyA2LjIgMTEuNiAxNyA4LjQgMjYuOHMtMTIuNCAxNi40LTIyLjggMTYuNGwtMTUyLjMgMCA4OC45IDE3Ny43YzcuOSAxNS44IDEuNSAzNS0xNC4zIDQyLjlzLTM1IDEuNS00Mi45LTE0LjNsLTg4LjktMTc3LjctOTEuMyAxMjEuOGMtNi4yIDguMy0xNyAxMS42LTI2LjggOC40UzY0IDQzNC4zIDY0IDQyNEw2NCAyNGMwLTkuMSA1LjEtMTcuNCAxMy4zLTIxLjV6Il19LEkxYT13a2Usa2tlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InNxdWFyZS1zaGFyZS1ub2RlcyIsaWNvbjpbNDQ4LDUxMixbInNoYXJlLWFsdC1zcXVhcmUiXSwiZjFlMSIsIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyek0zNjggMTYwYzAgMzUuMy0yOC43IDY0LTY0IDY0LTE1LjQgMC0yOS41LTUuNC00MC42LTE0LjVsLTg1LjMgNDYuNSA4NS4zIDQ2LjVjMTEtOS4xIDI1LjItMTQuNSA0MC42LTE0LjUgMzUuMyAwIDY0IDI4LjcgNjQgNjRzLTI4LjcgNjQtNjQgNjQtNjQtMjguNy02NC02NGMwLTIuNSAuMS00LjkgLjQtNy4zTDE1OC41IDMwMGMtMTEuNyAxMi4zLTI4LjIgMjAtNDYuNSAyMC0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0YzE4LjMgMCAzNC44IDcuNyA0Ni41IDIwbDgxLjktNDQuN2MtLjMtMi40LS40LTQuOS0uNC03LjMgMC0zNS4zIDI4LjctNjQgNjQtNjRzNjQgMjguNyA2NCA2NHoiXX0sQTFhPWtrZSxTa2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidGFibGUtY2VsbHMtbGFyZ2UiLGljb246WzQ0OCw1MTIsWyJ0aC1sYXJnZSJdLCJmMDA5IiwiTTM4NCA5NmwtMTI4IDAgMCAxMjggMTI4IDAgMC0xMjh6bTY0IDEyOGwwIDE5MmMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMzIwIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAxMjh6TTY0IDI4OGwwIDEyOCAxMjggMCAwLTEyOC0xMjggMHptMTI4LTY0bDAtMTI4LTEyOCAwIDAgMTI4IDEyOCAwem02NCA2NGwwIDEyOCAxMjggMCAwLTEyOC0xMjggMHoiXX0sTjFhPVNrZSxSMWE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2F0IixpY29uOls1NzYsNTEyLFsxMjgwMDhdLCJmNmJlIiwiTTY0IDk2YzUzIDAgOTYgNDMgOTYgOTZsMCA4NS44YzI5LjctNDQuNyA3Ny44LTc2LjIgMTMzLjQtODQgMjUuNiA2MCA4NS4yIDEwMi4xIDE1NC42IDEwMi4xIDEwLjkgMCAyMS42LTEuMSAzMi0zLjFMNDgwIDQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTE0MC44LTEzNiAxMDguOCA1NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0xNDQgMGMtNTMgMC05Ni00My05Ni05NmwwLTIyNGMwLTE2LjYtMTIuNi0zMC4yLTI4LjctMzEuOGwtNi42LS4zQzQ0LjYgMTU4LjIgMzIgMTQ0LjYgMzIgMTI4IDMyIDExMC4zIDQ2LjMgOTYgNjQgOTZ6TTUzMy44IDMuMkM1NDQuMi01LjUgNTYwIDEuOSA1NjAgMTUuNUw1NjAgMTI4YzAgNjEuOS01MC4xIDExMi0xMTIgMTEyUzMzNiAxODkuOSAzMzYgMTI4bDAtMTEyLjVjMC0xMy42IDE1LjgtMjEgMjYuMi0xMi4zTDQxNiA0OCA0ODAgNDggNTMzLjggMy4yek00MDAgMTA4YTIwIDIwIDAgMSAwIDAgNDAgMjAgMjAgMCAxIDAgMC00MHptOTYgMGEyMCAyMCAwIDEgMCAwIDQwIDIwIDIwIDAgMSAwIDAtNDB6Il19LE8xYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjYWxlbmRhci13ZWVrIixpY29uOls0NDgsNTEyLFtdLCJmNzg0IiwiTTEyOCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMzIgMTI4IDAgMC0zMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgMzIgMzIgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDI4OGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgMTI4QzAgOTIuNyAyOC43IDY0IDY0IDY0bDMyIDAgMC0zMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptMCAyNTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgNjRjMCAxNy43IDE0LjMgMzIgMzIgMzJsMTkyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC02NGMwLTE3LjctMTQuMy0zMi0zMi0zMmwtMTkyIDB6Il19LEYxYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjb2RlLWNvbXBhcmUiLGljb246WzUxMiw1MTIsW10sImUxM2EiLCJNMTk4LjggMS44YzktMy43IDE5LjMtMS43IDI2LjIgNS4ybDU2IDU2YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45bC01NiA1NmMtNi45IDYuOS0xNy4yIDguOS0yNi4yIDUuMlMxODQgMTQ1LjcgMTg0IDEzNmwwLTI0LTI0IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgMjE0LjdjMjguMyAxMi4zIDQ4IDQwLjUgNDggNzMuMyAwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MGMwLTMyLjggMTkuNy02MSA0OC03My4zTDY0IDE0NGMwLTUzIDQzLTk2IDk2LTk2bDI0IDAgMC0yNGMwLTkuNyA1LjgtMTguNSAxNC44LTIyLjJ6TTM5MiA4MGEyNCAyNCAwIDEgMCA0OCAwIDI0IDI0IDAgMSAwIC00OCAwem0tOCA3My4zYy0yOC4zLTEyLjMtNDgtNDAuNS00OC03My4zIDAtNDQuMiAzNS44LTgwIDgwLTgwczgwIDM1LjggODAgODBjMCAzMi44LTE5LjcgNjEtNDggNzMuM0w0NDggMzY4YzAgNTMtNDMgOTYtOTYgOTZsLTI0IDAgMCAyNGMwIDkuNy01LjggMTguNS0xNC44IDIyLjJzLTE5LjMgMS43LTI2LjItNS4ybC01Ni01NmMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsNTYtNTZjNi45LTYuOSAxNy4yLTguOSAyNi4yLTUuMlMzMjggMzY2LjMgMzI4IDM3NmwwIDI0IDI0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0yMTQuN3pNNzIgNDMyYTI0IDI0IDAgMSAwIDQ4IDAgMjQgMjQgMCAxIDAgLTQ4IDB6Il19LEIxYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJsZW8iLGljb246WzUxMiw1MTIsW10sImU4NGEiLCJNMjYwIDBjNzIuOSAwIDEzMiA1OS4xIDEzMiAxMzJsMCA1LjQtLjEgMS40LTIzLjggMjcwYy40IDIxLjcgMTguMiAzOS4yIDQwIDM5LjIgMjIuMSAwIDQwLTE3LjkgNDAtNDBsMC00MGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgNDBjMCA1Ny40LTQ2LjYgMTA0LTEwNCAxMDRTMzA0IDQ2NS40IDMwNCA0MDhsMC0xLjQgLjEtMS40IDIzLjktMjcwLjYgMC0yLjZjMC0zNy42LTMwLjQtNjgtNjgtNjhzLTY4IDMwLjQtNjggNjhsMCA0YzAgMy43IC4zIDcuMyAuOCAxMWwyOS43IDE5My40Yy45IDYuMSAxLjQgMTIuMiAxLjQgMTguNGwwIDkuMmMwIDYxLjktNTAuMSAxMTItMTEyIDExMlMwIDQyOS45IDAgMzY4IDUwLjEgMjU2IDExMiAyNTZjMTEuNyAwIDIzIDEuOCAzMy43IDUuMUwxMjkuNiAxNTYuN2MtMS4xLTYuOC0xLjYtMTMuOC0xLjYtMjAuN2wwLTRDMTI4IDU5LjEgMTg3LjEgMCAyNjAgMHpNMTEyIDMyMGE0OCA0OCAwIDEgMCAwIDk2IDQ4IDQ4IDAgMSAwIDAtOTZ6Il19LEgxYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJyb2FkLWNpcmNsZS14bWFyayIsaWNvbjpbNjQwLDUxMixbXSwiZTU2NiIsIk0yODcuOSAzMmwtNzYuMiAwYy0yOS40IDAtNTUuMSAyMC4xLTYyLjEgNDguNkw2NS40IDQyMC41QzU3LjkgNDUwLjcgODAuOCA0ODAgMTEyIDQ4MGwyMDkuNCAwYy0xMS4yLTI0LjQtMTcuNC01MS40LTE3LjQtODAgMC0yOC42IDYuMi01NS43IDE3LjQtODAtLjUgMC0xIDAtMS42IDAtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgNDkuMmMzNS4yLTQwIDg2LjctNjUuMiAxNDQuMi02NS4yIDkgMCAxNy44IC42IDI2LjQgMS44bC0zMi0xMjkuMkM0ODMuNCA1Mi4xIDQ1Ny44IDMyIDQyOC4zIDMybC03Ni41IDAgMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTY0ek00OTYgNTQ0YTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptNTkuMy0xODAuN2wtMzYuNyAzNi43IDM2LjcgMzYuN2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwbC0zNi43LTM2LjctMzYuNyAzNi43Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42bDM2LjctMzYuNy0zNi43LTM2LjdjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMGwzNi43IDM2LjcgMzYuNy0zNi43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnoiXX0scTFhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBhbGxldCIsaWNvbjpbNTc2LDUxMixbXSwiZjQ4MiIsIk0zMiAzMjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMzIgMCAwIDY0LTMyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsNTEyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTMyIDAgMC02NCAzMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDMyIDMyMHptOTYgNjRsMTI4IDAgMCA2NC0xMjggMCAwLTY0em0xOTIgMGwxMjggMCAwIDY0LTEyOCAwIDAtNjR6Il19LFFvZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjYWtlLWNhbmRsZXMiLGljb246WzQ0OCw1MTIsWzEyNzg3NCwiYmlydGhkYXktY2FrZSIsImNha2UiXSwiZjFmZCIsIk04Ni40LTEwLjVMNjEuOCAzMS42QzU4IDM4LjEgNTYgNDUuNiA1NiA1My4yTDU2IDU2YzAgMjIuMSAxNy45IDQwIDQwIDQwczQwLTE3LjkgNDAtNDBsMC0yLjhjMC03LjYtMi0xNS01LjgtMjEuNkwxMDUuNi0xMC41Yy0yLTMuNC01LjctNS41LTkuNi01LjVzLTcuNiAyLjEtOS42IDUuNXptMTI4IDBMMTg5LjggMzEuNmMtMy44IDYuNS01LjggMTQtNS44IDIxLjZsMCAyLjhjMCAyMi4xIDE3LjkgNDAgNDAgNDBzNDAtMTcuOSA0MC00MGwwLTIuOGMwLTcuNi0yLTE1LTUuOC0yMS42TDIzMy42LTEwLjVjLTItMy40LTUuNy01LjUtOS42LTUuNXMtNy42IDIuMS05LjYgNS41ek0zMTcuOCAzMS42Yy0zLjggNi41LTUuOCAxNC01LjggMjEuNmwwIDIuOGMwIDIyLjEgMTcuOSA0MCA0MCA0MHM0MC0xNy45IDQwLTQwbDAtMi44YzAtNy42LTItMTUtNS44LTIxLjZMMzYxLjYtMTAuNWMtMi0zLjQtNS43LTUuNS05LjYtNS41cy03LjYgMi4xLTkuNiA1LjVMMzE3LjggMzEuNnpNMTI4IDE2MGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDUzLjVDMjYuNyAyMjYuNiAwIDI2Mi4yIDAgMzA0bDAgMjAuOGMyMC45IDEuMyA0MS42IDcuMyA2MC4zIDE4bDcuMSA0LjFjMjYuMyAxNSA1OC45IDEzLjQgODMuNi00LjIgNDMuNy0zMS4yIDEwMi4zLTMxLjIgMTQ2IDAgMjQuNiAxNy42IDU3LjMgMTkuMyA4My42IDQuMmw3LjEtNC4xYzE4LjctMTAuNyAzOS4zLTE2LjcgNjAuMy0xOGwwLTIwLjhjMC00MS44LTI2LjctNzcuNC02NC05MC41bDAtNTMuNWMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDQ4LTY0IDAgMC00OGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDQ4LTY0IDAgMC00OHpNNDQ4IDM3M2MtMTIuNyAxLjItMjUuMSA1LTM2LjUgMTEuNWwtNy4xIDQuMWMtNDIuNiAyNC4zLTk1LjQgMjEuNy0xMzUuMy02LjgtMjctMTkuMy02My4yLTE5LjMtOTAuMiAwLTM5LjkgMjguNS05Mi43IDMxLjItMTM1LjMgNi44bC03LjEtNC4xQzI1LjEgMzc4IDEyLjcgMzc0LjEgMCAzNzNsMCA3NWMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTc1eiJdfSxqMWE9UW9lLFYxYT1Rb2UsVTFhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJ1Zy1zbGFzaCIsaWNvbjpbNTc2LDUxMixbXSwiZTQ5MCIsIk03LTI0LjljOS40LTkuNCAyNC42LTkuNCAzMy45IDBMMjQxLjggMTc2IDM0NCAxNzZjMTQuMiAwIDI3LjcgMi44IDQwIDhsMTA4LjgtODEuNmMxNC4xLTEwLjYgMzQuMi03LjcgNDQuOCA2LjRzNy43IDM0LjItNi40IDQ0LjhsLTk3LjggNzMuM2M1LjMgOC45IDkuMyAxOC43IDExLjggMjkuMWw5OC44IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTk2IDAgMCAzMmMwIDkuNS0uOCAxOC43LTIuNCAyNy44TDU2OSA1MDMuMWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwTDcgOS4xQy0yLjMtLjMtMi4zLTE1LjUgNy0yNC45ek0zOTguMiA0NjhjLTIzLjIgMjIuMS01MyAzNy4yLTg2LjIgNDIuMmwwLTEyOC40IDg2LjIgODYuMnpNMjY0IDMzMy44bDAgMTc2LjRjLTUxLjItNy43LTk0LjUtMzkuNy0xMTcuNy04My45TDgzLjIgNDczLjZjLTE0LjEgMTAuNi0zNC4yIDcuNy00NC44LTYuNHMtNy43LTM0LjIgNi40LTQ0LjhsODMuNC02Mi41Yy0uMS0yLjYtLjItNS4yLS4yLTcuOWwwLTMyLTk2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsOTguOCAwYzMuMy0xMy45IDkuMy0yNi43IDE3LjYtMzcuOEwyNjQgMzMzLjh6TTM1NS42IDEyOGwtODIuNCAwLTcyLjMtNzIuM0MyMTYuMSAyMi44IDI0OS40IDAgMjg4IDAgMzQxIDAgMzg0IDQzIDM4NCA5NmwwIDMuNmMwIDE1LjctMTIuNyAyOC40LTI4LjQgMjguNHoiXX0sVzFhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRhcnAiLGljb246WzUxMiw1MTIsW10sImU1N2IiLCJNNDQ4IDY0YzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMTQ5LjVjMCAxNy02LjcgMzMuMy0xOC43IDQ1LjNMMzg2LjcgNDI5LjNjLTEyIDEyLTI4LjMgMTguNy00NS4zIDE4LjdMNjQgNDQ4Yy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NGwzODQgMHptNS41IDIwOEwzNjAgMjcyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDkzLjUgMTE3LjUtMTE3LjV6TTk2IDE5MmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6Il19LEcxYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJkaWFncmFtLXByZWRlY2Vzc29yIixpY29uOls0NDgsNTEyLFtdLCJlNDc3IiwiTTI4OS4yIDEzNy45YzIuNS02IDguMy05LjkgMTQuOC05LjlsNDAgMCAwLTI0YzAtMTMuMy0xMC43LTI0LTI0LTI0bC05OCAwYzEuMyA1LjEgMiAxMC41IDIgMTZsMCA2NGMwIDM1LjMtMjguNyA2NC02NCA2NGwtOTYgMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwyNTYgMGMzOS44IDAgNzIgMzIuMiA3MiA3MmwwIDI0IDQwIDBjNi41IDAgMTIuMyAzLjkgMTQuOCA5LjlzMS4xIDEyLjktMy41IDE3LjRsLTY0IDY0Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMGwtNjQtNjRjLTQuNi00LjYtNS45LTExLjUtMy41LTE3LjR6TTM4NCAzNTJsLTMyMCAwIDAgNjQgMzIwIDAgMC02NHptNjQgNjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NGwwLTY0YzAtMzUuMyAyOC43LTY0IDY0LTY0bDMyMCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgNjR6Il19LF9rZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmYWNlLWZsdXNoZWQiLGljb246WzUxMiw1MTIsWzEyODU2MywiZmx1c2hlZCJdLCJmNTc5IiwiTTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDAgMjU2IDI1NiAwIDEgMSAtNTEyIDB6TTE2OCAzOTJjMCAxMy4zIDEwLjcgMjQgMjQgMjRsMTI4IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTEyOCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHptLTgtOTZhNzIgNzIgMCAxIDAgMC0xNDQgNzIgNzIgMCAxIDAgMCAxNDR6bTI2NC03MmE3MiA3MiAwIDEgMCAtMTQ0IDAgNzIgNzIgMCAxIDAgMTQ0IDB6bS0yODggMGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwem0xOTIgMGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAweiJdfSxLMWE9X2tlLFkxYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJkaWFncmFtLW5leHQiLGljb246WzQ0OCw1MTIsW10sImU0NzYiLCJNMzg0IDIyNGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTY0YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZsMCA2NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwxMjggMCAwIDY0LTMyIDBjLTYuNSAwLTEyLjMgMy45LTE0LjggOS45cy0xLjEgMTIuOSAzLjUgMTcuNGw2NCA2NGM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGw2NC02NGM0LjYtNC42IDUuOS0xMS41IDMuNS0xNy40UzI5NC41IDI4OCAyODggMjg4bC0zMiAwIDAtNjQgMTI4IDB6TTY0IDI4OGMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCA2NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTY0YzAtMzUuMy0yOC43LTY0LTY0LTY0bC0zNCAwYzUuNiAyMS43LS41IDQ1LjEtMTYuNyA2MS4zbC02NCA2NGMtMjUgMjUtNjUuNSAyNS05MC41IDBsLTY0LTY0Qzk4LjYgMzMzLjEgOTIuNCAzMDkuNyA5OCAyODhsLTM0IDB6Il19LFoxYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJhbmNob3ItY2lyY2xlLXhtYXJrIixpY29uOls2NDAsNTEyLFtdLCJlNGFjIiwiTTMyMC41IDk2YTMyIDMyIDAgMSAxIC02NCAwIDMyIDMyIDAgMSAxIDY0IDB6bS0zMi05NmMtNTMgMC05NiA0My05NiA5NiAwIDQxLjggMjYuNyA3Ny40IDY0IDkwLjVsMCAyNTcuOWMtNjIuOS0xNC4zLTExMC4yLTY5LjctMTExLjktMTM2LjVsMTYuMSAxNC4xYzEwIDguNyAyNS4xIDcuNyAzMy45LTIuM3M3LjctMjUuMS0yLjMtMzMuOWwtNjQtNTZjLTktNy45LTIyLjYtNy45LTMxLjYgMGwtNjQgNTZjLTEwIDguNy0xMSAyMy45LTIuMyAzMy45czIzLjkgMTEgMzMuOSAyLjNsMTYuMi0xNC4yYzIuMSAxMTMuMSA5NC40IDIwNC4xIDIwOCAyMDQuMSAxNi42IDAgMzIuNy0xLjkgNDguMi01LjYtMjAuMy0zMC41LTMyLjItNjctMzIuMi0xMDYuNCAwLTI3LjMgNS43LTUzLjMgMTYtNzYuOWwwLTEzNi42YzM3LjMtMTMuMiA2NC00OC43IDY0LTkwLjUgMC01My00My05Ni05Ni05NnptMjA4IDU0NGExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTU5LjMtMTgwLjdsLTM2LjcgMzYuNyAzNi43IDM2LjdjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMGwtMzYuNy0zNi43LTM2LjcgMzYuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNmwzNi43LTM2LjctMzYuNy0zNi43Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBsMzYuNyAzNi43IDM2LjctMzYuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZ6Il19LFgxYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwZXJzb24tY2lyY2xlLXhtYXJrIixpY29uOls2NDAsNTEyLFtdLCJlNTQzIiwiTTI4MCAyNGE1NiA1NiAwIDEgMCAtMTEyIDAgNTYgNTYgMCAxIDAgMTEyIDB6bTI0IDIxMi43TDM0MSAyODYuNmMxMi44LTE3LjUgMjguNS0zMi43IDQ2LjMtNDVsLTU2LjItNzUuN0MzMDYgMTMyIDI2Ni4zIDExMiAyMjQgMTEycy04MiAyMC0xMDcuMiA1My45bC03MC41IDk1Yy0xMC41IDE0LjItNy42IDM0LjIgNi42IDQ0LjhzMzQuMiA3LjYgNDQuOC02LjZMMTQ0IDIzNi43IDE0NCA1MTJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTE2MGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2bDAgMTYwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0yNzUuM3pNNDk2IDU0NGExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTIyLjYtMTQ0bDM2LjcgMzYuN2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwbC0zNi43LTM2LjctMzYuNyAzNi43Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42bDM2LjctMzYuNy0zNi43LTM2LjdjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMGwzNi43IDM2LjcgMzYuNy0zNi43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNkw1MTguNiA0MDB6Il19LFExYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzcGEiLGljb246WzU3Niw1MTIsW10sImY1YmIiLCJNMTY5LjcgMjI3LjVjMzQuMyAxOC43IDY0LjUgNDQuMSA4OC44IDc0LjUgMTEuMSAxMy45IDIxIDI4LjkgMjkuNCA0NC44IDguNS0xNS45IDE4LjMtMzAuOCAyOS40LTQ0LjggMjQuMy0zMC41IDU0LjUtNTUuOSA4OC44LTc0LjUgNDEuNy0yMi43IDg5LjQtMzUuNSAxMzkuNy0zNS41bDkuOSAwYzExLjEgMCAyMC4xIDkgMjAuMSAyMC4xIDAgMTQ4LTExOS45IDI2Ny45LTI2Ny45IDI2Ny45bC00MC4yIDBDMTE5LjkgNDgwIDAgMzYwLjEgMCAyMTIuMSAwIDIwMSA5IDE5MiAyMC4xIDE5Mmw5LjkgMGM1MC40IDAgOTguMSAxMi44IDEzOS43IDM1LjV6TTMwMy45IDM4YzE2LjkgMTUuOSA2MS40IDYzLjQgODkgMTQyLjMtNDAuMSAyMC4yLTc1LjggNDguMi0xMDQuOSA4Mi4xLTI5LjItMzMuOS02NC44LTYxLjgtMTA0LjktODIuMSAyNy42LTc4LjkgNzIuMi0xMjYuNCA4OS0xNDIuMyA0LjMtNC4xIDEwLTYgMTUuOS02czExLjYgMiAxNS45IDZ6Il19LEoxYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJhcmllcyIsaWNvbjpbNTEyLDUxMixbXSwiZTg0NiIsIk00MDEuNiAwYzYxLjMgMCAxMTAuNCA1MC4zIDExMC40IDExMSAwIDI5LjQtMTEuNiA1Ny45LTMyLjYgNzguOGwtOC44IDguOGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4yIDBzLTEyLjUtMzIuOCAwLTQ1LjJsOC44LTguOGM4LjgtOC44IDEzLjgtMjEgMTMuOC0zMy42IDAtMjUuOS0yMS4xLTQ3LTQ2LjQtNDctMjIuNSAwLTQxLjcgMTYuMS00NS43IDM4LjJMMjg3LjUgNDg1LjZjMCAuMS0uMSAuMy0uMSAuNC0uMiAuOC0uMyAxLjYtLjUgMi4zLS4xIC4zLS4xIC41LS4yIC43LS4yIC42LS40IDEuMy0uNyAxLjktLjIgLjUtLjQgMS0uNiAxLjUtLjEgLjMtLjMgLjYtLjQgLjktMS42IDMuNS0zLjggNi41LTYuNCA5LjItMiAyLTQuMiAzLjctNi42IDUuMS0uMiAuMS0uMyAuMi0uNSAuMy0uNyAuNC0xLjQgLjctMi4xIDEtLjMgLjEtLjYgLjMtLjkgLjQtLjUgLjItMSAuNC0xLjUgLjYtLjYgLjItMS4yIC41LTEuOSAuNy0uMiAuMS0uNSAuMi0uNyAuMi0uOCAuMi0xLjYgLjQtMi4zIC41LS4yIDAtLjMgLjEtLjQgLjEtLjIgMC0uNCAwLS42IC4xLS43IC4xLTEuMyAuMi0yIC4yLS40IDAtLjggLjEtMS4yIC4xLS42IDAtMS4yIC4xLTEuOCAuMS0uNiAwLTEuMiAwLTEuOC0uMS0uNCAwLS44LS4xLTEuMi0uMS0uNy0uMS0xLjQtLjEtMi0uMi0uMiAwLS40IDAtLjYtLjEtLjIgMC0uMy0uMS0uNS0uMS0uOC0uMi0xLjYtLjMtMi4zLS41LS4zLS4xLS41LS4xLS44LS4yLS42LS4yLTEuMy0uNC0xLjktLjctLjUtLjItMS0uNC0xLjUtLjYtLjMtLjEtLjYtLjMtLjktLjQtLjctLjMtMS40LS43LTIuMS0xLS4yLS4xLS4zLS4yLS41LS4zLTIuNC0xLjQtNC43LTMuMS02LjYtNS4xLTIuNi0yLjYtNC44LTUuNy02LjQtOS4yLS4xLS4yLS4yLS4zLS4yLS41bC0uNS0xLjFjLS4xLS4zLS4yLS41LS4zLS44LS4yLS42LS41LTEuMi0uNy0xLjktLjEtLjItLjItLjUtLjItLjctLjItLjgtLjQtMS42LS41LTIuMyAwLS4xLS4xLS4zLS4xLS40TDE1NiAxMDIuMmMtNC0yMi4xLTIzLjItMzguMi00NS43LTM4LjItMjUuMyAwLTQ2LjQgMjEuMS00Ni40IDQ3IDAgMTIuNiA1IDI0LjggMTMuOCAzMy42bDguOCA4LjhjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjJzLTMyLjggMTIuNS00NS4yIDBsLTguOC04LjhDMTEuNiAxNjguOSAwIDE0MC4zIDAgMTExIDAgNTAuMyA0OS4xIDAgMTEwLjQgMCAxNjMuOCAwIDIwOS42IDM4LjMgMjE5IDkxbDM3IDIwNyAzNy0yMDdjOS40LTUyLjYgNTUuMi05MSAxMDguNy05MXoiXX0sTWtlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImJhcnMtcHJvZ3Jlc3MiLGljb246WzQ0OCw1MTIsWyJ0YXNrcy1hbHQiXSwiZjgyOCIsIk0yODggMTYwbDk2IDAgMC02NC05NiAwIDAgNjR6TTAgMTYwTDAgODBDMCA1My41IDIxLjUgMzIgNDggMzJsMzUyIDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCA5NmMwIDI2LjUtMjEuNSA0OC00OCA0OEw0OCAyMjRjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtMTZ6TTE2MCA0MTZsMjI0IDAgMC02NC0yMjQgMCAwIDY0ek0wIDQxNmwwLTgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4bDM1MiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgOTZjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNDgwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTE2eiJdfSxlMmE9TWtlLHQyYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoZWFydC1jaXJjbGUtY2hlY2siLGljb246WzU3Niw1MTIsW10sImU0ZmQiLCJNMjQxIDg3LjFsMTUgMjAuNyAxNS0yMC43QzI5NiA1Mi41IDMzNi4yIDMyIDM3OC45IDMyIDQ1Mi40IDMyIDUxMiA5MS42IDUxMiAxNjUuMWwwIDIuNmMwIDE3LjYtMy40IDM1LjYtOS41IDUzLjctMjEuOC04LjYtNDUuNi0xMy40LTcwLjUtMTMuNC0xMDYgMC0xOTIgODYtMTkyIDE5MiAwIDI4LjUgNi4yIDU1LjYgMTcuNCA4MC0uNSAwLS45IDAtMS40IDAtMTUuNSAwLTMwLjgtNC42LTQzLjEtMTQuMS03My01NS43LTIxMi45LTE4Ni0yMTIuOS0yOTguMmwwLTIuNkMwIDkxLjYgNTkuNiAzMiAxMzMuMSAzMiAxNzUuOCAzMiAyMTYgNTIuNSAyNDEgODcuMXpNMjg4IDQwMGExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0yMDEuNC02MC45Yy03LjEtNS4yLTE3LjItMy42LTIyLjQgMy41bC01MyA3Mi45LTI2LjgtMjYuOGMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNmw0MCA0MGMzLjMgMy4zIDcuOSA1IDEyLjYgNC42czguOS0yLjggMTEuNy02LjVsNjQtODhjNS4yLTcuMSAzLjYtMTcuMi0zLjUtMjIuM3oiXX0semtlPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6Im1hcnMtc3Ryb2tlLXJpZ2h0IixpY29uOls2NDAsNTEyLFs5ODk3LCJtYXJzLXN0cm9rZS1oIl0sImYyMmIiLCJNMzIwLjUgMjU2YTExMiAxMTIgMCAxIDAgLTIyNCAwIDExMiAxMTIgMCAxIDAgMjI0IDB6TTIwOC41IDgwYzg2LjMgMCAxNTguMSA2Mi4xIDE3My4xIDE0NC4xIDEtLjEgMS45LS4xIDIuOS0uMWwxNiAwIDAtMzJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDMyIDYxLjQgMC0yMi40LTI4Yy0xMS0xMy44LTguOC0zMy45IDUtNDVzMzMuOS04LjggNDUgNWw2NCA4MGM5LjMgMTEuNyA5LjMgMjguMyAwIDQwbC02NCA4MGMtMTEgMTMuOC0zMS4yIDE2LTQ1IDVzLTE2LTMxLjItNS00NWwyMi40LTI4LTYxLjQgMCAwIDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMzItMTYgMGMtMSAwLTEuOSAwLTIuOS0uMS0xNSA4Mi04Ni44IDE0NC4xLTE3My4xIDE0NC4xLTk3LjIgMC0xNzYtNzguOC0xNzYtMTc2czc4LjgtMTc2IDE3Ni0xNzZ6Il19LGEyYT16a2UsczJhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InRvd2VyLW9ic2VydmF0aW9uIixpY29uOls0NDgsNTEyLFtdLCJlNTg2IiwiTTIwOS43IDMuNGM5LTQuNSAxOS42LTQuNSAyOC42IDBsMTYwIDgwYzE1LjggNy45IDIyLjIgMjcuMSAxNC4zIDQyLjktNS42IDExLjItMTYuOSAxNy43LTI4LjYgMTcuN2wwIDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMybC0xMyAwIDMyIDE5MiA0NSAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDMyIDUxMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw0NSAwIDMyLTE5Mi0xMyAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTgwYy0xMS43IDAtMjMtNi41LTI4LjYtMTcuNy03LjktMTUuOC0xLjUtMzUgMTQuMy00Mi45bDE2MC04MHpNMzEwLjcgNDQ4bC04Ni43LTYxLjktODYuNyA2MS45IDE3My40IDB6bS0xNTMtMTkybC0zLjUgMjEuMiA2OS45IDQ5LjkgNjkuOS00OS45LTMuNS0yMS4yLTEzMi43IDB6bS0xMi4zIDczLjlsLTEwLjEgNjAuNiA0Ny41LTMzLjktMzcuNC0yNi43em0xMTkuOSAyNi43bDQ3LjUgMzMuOS0xMC4xLTYwLjYtMzcuNCAyNi43ek0xNTIgMTI4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDE0NCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0xNDQgMHoiXX0sSm9lPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InN0ZXJsaW5nLXNpZ24iLGljb246WzM4NCw1MTIsWzE2MywiZ2JwIiwicG91bmQtc2lnbiJdLCJmMTU0IiwiTTkxLjMgMjg4bC0zNC44IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsMjEuNCAwQzM3LjMgMTQ3LjMgMTA1LjEgNDIgMjA3LjYgNDJsOC4yIDBjMzMuNiAwIDY2LjIgMTEuMyA5Mi41IDMyLjJsMTYuMSAxMi43YzEzLjkgMTEgMTYuMiAzMS4xIDUuMiA0NXMtMzEuMSAxNi4yLTQ1IDUuMmwtMTYuMS0xMi43Yy0xNS0xMS45LTMzLjYtMTguNC01Mi44LTE4LjRsLTguMiAwYy01Ny4zIDAtOTQuNyA1OS45LTY5LjcgMTExLjQgMy42IDcuNCA2LjYgMTQuOSA5LjEgMjIuNmwxNDkuNSAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0xNDEuMiAwYzEgMzUuMy04LjcgNzAuNi0yOC45IDEwMC45bC0xOC4xIDI3LjEgMjEyLjIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMjcyIDBjLTExLjggMC0yMi42LTYuNS0yOC4yLTE2LjlzLTUtMjMgMS42LTMyLjlsNTEuMi03Ni44YzEzLjEtMTkuNiAxOS4yLTQyLjYgMTguMi02NS40eiJdfSxpMmE9Sm9lLHIyYT1Kb2UsbzJhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImZhdWNldC1kcmlwIixpY29uOls1MTIsNTEyLFsxMjg2ODhdLCJlMDA2IiwiTTIyNCAzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJMOTYgNjRDNzguMyA2NCA2NCA3OC4zIDY0IDk2czE0LjMgMzIgMzIgMzJsOTYgMCAwIDY0LTE4LjcgMGMtOC41IDAtMTYuNiAzLjQtMjIuNiA5LjRMMTI4IDIyNCAzMiAyMjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgNjRjMCAxNy43IDE0LjMgMzIgMzIgMzJsMTAwLjEgMGMyMC4yIDI5IDUzLjkgNDggOTEuOSA0OHM3MS43LTE5IDkxLjktNDhsMzYuMSAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyczE0LjMgMzIgMzIgMzJsNjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMiAwLTg4LjQtNzEuNi0xNjAtMTYwLTE2MGwtMzIgMC0yMi42LTIyLjZjLTYtNi0xNC4xLTkuNC0yMi42LTkuNGwtMTguNyAwIDAtNjQgOTYgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtOTYgMGMwLTE3LjctMTQuMy0zMi0zMi0zMnpNNDM2LjggNDU1LjRsLTE4LjIgNDIuNGMtMS44IDQuMS0yLjcgOC42LTIuNyAxMy4xbDAgMS4yYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xLjJjMC00LjUtLjktOC45LTIuNy0xMy4xbC0xOC4yLTQyLjRjLTEuOS00LjUtNi4zLTcuNC0xMS4yLTcuNHMtOS4yIDIuOS0xMS4yIDcuNHoiXX0sdmY9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2lyY2xlLWluZm8iLGljb246WzUxMiw1MTIsWyJpbmZvLWNpcmNsZSJdLCJmMDVhIiwiTTI1NiA1MTJhMjU2IDI1NiAwIDEgMCAwLTUxMiAyNTYgMjU2IDAgMSAwIDAgNTEyek0yMjQgMTYwYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bS04IDY0bDQ4IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRsMCA4OCA4IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTgwIDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsMjQgMCAwLTY0LTI0IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6Il19LG4yYT12ZixsMmE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmVhdGhlciIsaWNvbjpbNTEyLDUxMixbMTI5NzE4XSwiZjUyZCIsIk0zNTIgMGM0MSAwIDgwLjMgMTYuMyAxMDkuMiA0NS4ybDUuNSA1LjVjMjkgMjkgNDUuMyA2OC4zIDQ1LjMgMTA5LjIgMCAyNC4xLTUuNyA0Ny42LTE2LjIgNjguOC0xLjkgMy43LTUuMyA2LjUtOS4zIDcuN0wzNzQuNSAyNzBjLTMuOSAxLjItNi41IDQuNy02LjUgOC44IDAgNS4xIDQuMSA5LjIgOS4yIDkuMmwzMi4yIDBjMTQuMyAwIDIxLjQgMTcuMiAxMS4zIDI3LjNsLTIyLjQgMjIuNGMtMS45IDEuOS00LjIgMy4yLTYuNyA0bC04MSAyNC4zYy0zLjkgMS4yLTYuNSA0LjctNi41IDguOCAwIDUuMSA0LjEgOS4yIDkuMiA5LjIgMTMuMiAwIDE4LjkgMTUuNyA3LjggMjIuOS00MS4xIDI2LjYtODkuMyA0MS4xLTEzOSA0MS4xbC04NiAwLTQ4IDQ4Yy04LjggOC44LTIzLjIgOC44LTMyIDBzLTguOC0yMy4yIDAtMzJMMjU2IDIyNGM4LjgtOC44IDguOC0yMy4yIDAtMzJzLTIzLjItOC44LTMyIDBMNzkuNSAzMzYuNWMtNS43IDUuNy0xNS41IDEuNy0xNS41LTYuNCAwLTY3LjkgMjctMTMzIDc1LTE4MUwyNDIuOCA0NS4yQzI3MS43IDE2LjMgMzExIDAgMzUyIDB6Il19LGMyYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJib3dsLXJpY2UiLGljb246WzUxMiw1MTIsW10sImUyZWIiLCJNMTc2IDQwYzAtMTMuMyAxMC43LTI0IDI0LTI0bDE2IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTE2IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0yNCA0OGwxNiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0xNiAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0ek01NiAxNjBsMTYgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMTYgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpNMCAyODMuNEMwIDI2OC4zIDEyLjMgMjU2IDI3LjQgMjU2bDQ1Ny4xIDBjMTUuMSAwIDI3LjQgMTIuMyAyNy40IDI3LjQgMCA3MC41LTQ0LjQgMTMwLjctMTA2LjcgMTU0LjFMNDAzLjUgNDUyYy0yIDE2LTE1LjYgMjgtMzEuOCAyOGwtMjMxLjUgMGMtMTYuMSAwLTI5LjgtMTItMzEuOC0yOGwtMS44LTE0LjRDNDQuNCA0MTQuMSAwIDM1My45IDAgMjgzLjR6TTIyNCAxODRjMC0xMy4zIDEwLjctMjQgMjQtMjRsMTYgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMTYgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjR6bS05NiAwYzAtMTMuMyAxMC43LTI0IDI0LTI0bDE2IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTE2IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0ek0xMDQgODhsMTYgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMTYgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHptMjE2IDk2YzAtMTMuMyAxMC43LTI0IDI0LTI0bDE2IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTE2IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0ek0yOTYgODhsMTYgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMTYgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHptMTIwIDk2YzAtMTMuMyAxMC43LTI0IDI0LTI0bDE2IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTE2IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0ek0zOTIgODhsMTYgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMTYgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpNMjk2IDE2bDE2IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTE2IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6Il19LENrZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzdGFyLWhhbGYtc3Ryb2tlIixpY29uOls1NzYsNTEyLFsic3Rhci1oYWxmLWFsdCJdLCJmNWMwIiwiTTI4OC4xIDM1My42YzEwIDAgMTkuOSAyLjMgMjkgN2w3NC40IDM3LjktMTMtODIuNWMtMy4yLTIwLjIgMy41LTQwLjcgMTcuOS01NS4ybDU5LTU5LjEtODIuNS0xMy4xYy0yMC4yLTMuMi0zNy43LTE1LjktNDctMzQuMWwtMzgtNzQuNCAwIDI3My42ek00NTcuNCA0ODljLTcuMyA1LjMtMTcgNi4xLTI1IDJMMjg4LjEgNDE3LjYgMTQzLjggNDkxYy04IDQuMS0xNy43IDMuMy0yNS0ycy0xMS0xNC4yLTkuNi0yMy4yTDEzNC40IDMwNS45IDIwIDE5MS40Yy02LjQtNi40LTguNi0xNS44LTUuOC0yNC40czEwLjEtMTQuOSAxOS4xLTE2LjNsMTU5LjktMjUuNCA3My42LTE0NC4yYzQuMS04IDEyLjQtMTMuMSAyMS40LTEzLjFzMTcuMyA1LjEgMjEuNCAxMy4xTDM4MyAxMjUuMyA1NDIuOSAxNTAuN2M4LjkgMS40IDE2LjMgNy43IDE5LjEgMTYuM3MuNSAxOC01LjggMjQuNEw0NDEuNyAzMDUuOSA0NjcgNDY1LjhjMS40IDguOS0yLjMgMTcuOS05LjYgMjMuMnoiXX0sZDJhPUNrZSxUa2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToidGVtcGVyYXR1cmUtYXJyb3ctZG93biIsaWNvbjpbNTEyLDUxMixbInRlbXBlcmF0dXJlLWRvd24iXSwiZTAzZiIsIk02NC41IDk2YzAtNTMgNDMtOTYgOTYtOTZzOTYgNDMgOTYgOTZsMCAxNjQuN2MyOS41IDI2LjQgNDggNjQuNyA0OCAxMDcuMyAwIDc5LjUtNjQuNSAxNDQtMTQ0IDE0NHMtMTQ0LTY0LjUtMTQ0LTE0NGMwLTQyLjYgMTguNS04MSA0OC0xMDcuM0w2NC41IDk2em05NiAzMzZjMzUuMyAwIDY0LTI4LjcgNjQtNjQgMC0yNi45LTE2LjUtNDkuOS00MC01OS4zbDAtMjguN2MwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDI4LjdjLTIzLjUgOS41LTQwIDMyLjUtNDAgNTkuMyAwIDM1LjMgMjguNyA2NCA2NCA2NHpNNDM5LjEgMzEwLjZjLTYgNi0xNC4xIDkuNC0yMi42IDkuNHMtMTYuNi0zLjQtMjIuNi05LjRsLTY0LTY0Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwbDkuNCA5LjQgMC0xNzguN2MwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgMTc4LjcgOS40LTkuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zbC02NCA2NHoiXX0sdTJhPVRrZSxwMmE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToibWFzay12ZW50aWxhdG9yIixpY29uOls2NDAsNTEyLFtdLCJlNTI0IiwiTTE1Mi4yIDE5MmMtMTUuNCAzOC4zLTI0LjIgNzcuMi0yNC4yIDEwOC44IDAgMTMuMyAxLjUgMjYuMiA0LjQgMzguN2wtMTctMy40Yy0yOS45LTYtNTEuNC0zMi4yLTUxLjQtNjIuOGwwLTgxLjMgODguMiAwem0zMi45LTY0TDY0IDEyOGMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCA4MS4zYzAgNjEgNDMuMSAxMTMuNSAxMDIuOSAxMjUuNWw2Ni4zIDEzLjNjMTguNyAyMi4xIDQyLjkgNDAgNzAuOCA1MS44bDAtODcuOGMtMTAuMS0xNC4yLTE2LTMxLjMtMTYtNDkuNyAwLTQ5LjUgNDMtMTM0LjQgOTYtMTM0LjQgNTIuNSAwIDk2IDg0LjkgOTYgMTM0LjQgMCAxOC40LTUuOSAzNS40LTE2IDQ5LjZsMCA4Ny43YzI3LjYtMTEuOCA1MS43LTI5LjYgNzAuNC01MS42bDY2LjctMTMuM2M1OS44LTEyIDEwMi45LTY0LjUgMTAyLjktMTI1LjVsMC04MS4zYzAtMzUuMy0yOC43LTY0LTY0LTY0bC0xMjEuNSAwYy0zNC44LTU0LjItODIuNS05Ni0xMzQuNS05Ni01Mi42IDAtMTAwLjIgNDEuOC0xMzQuOSA5NnptMzAyLjUgNjRsODguNCAwIDAgODEuM2MwIDMwLjUtMjEuNSA1Ni44LTUxLjQgNjIuOGwtMTcgMy40YzIuOS0xMi40IDQuNS0yNS40IDQuNS0zOC43IDAtMzEuNi04LjktNzAuNS0yNC40LTEwOC44ek0yODggMzIwbDAgMTkyIDY0IDAgMC0xOTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ6Il19LGgyYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJmaWxlLXZpZGVvIixpY29uOlszODQsNTEyLFtdLCJmMWM4IiwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwTDIxMy41IDBjMTcgMCAzMy4zIDYuNyA0NS4zIDE4LjdMMzY1LjMgMTI1LjNjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM0wzODQgNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA2NHptMjA4LTUuNWwwIDkzLjVjMCAxMy4zIDEwLjcgMjQgMjQgMjRMMzI1LjUgMTc2IDIwOCA1OC41ek04MCAzMDRsMCA5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmw5NiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMjQgMzUgMzVjMy4yIDMuMiA3LjUgNSAxMiA1IDkuNCAwIDE3LTcuNiAxNy0xN2wwLTk0LjFjMC05LjQtNy42LTE3LTE3LTE3LTQuNSAwLTguOCAxLjgtMTIgNWwtMzUgMzUgMC0yNGMwLTE3LjctMTQuMy0zMi0zMi0zMmwtOTYgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6Il19LGYyYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJhcnJvdy10cmVuZC1kb3duIixpY29uOls1NzYsNTEyLFtdLCJlMDk3IiwiTTM4NCAzNTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMTYwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0xNjBjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCA4Mi43LTE2OS40LTE2OS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMEwxOTIgMjQyLjcgNTQuNiAxMDUuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsMTYwIDE2MGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMEwzMjAgMjA1LjMgNDY2LjcgMzUyIDM4NCAzNTJ6Il19LG0yYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJvaWwtY2FuIixpY29uOls2NDAsNTEyLFtdLCJmNjEzIiwiTTMyMCAxMjhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMMTkyIDY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDMyIDAgMCAzMi0xNzYgMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCA2NC44YzAgMTkgMTEuMiAzNi4yIDI4LjUgNDMuOWw2Ny41IDMwIDAgMjEuM2MwIDI2LjUgMjEuNSA0OCA0OCA0OGwyNTkuMSAwYzE4LjQgMCAzNS44LTcuOSA0OC0yMS43TDYzMy41IDE4Ny43YzEyLjMtMTMuOS0uMy0zNS40LTE4LjQtMzEuNUw0NDggMTkyIDM5Ny41IDE2Ni44Yy04LjktNC40LTE4LjctNi44LTI4LjYtNi44bC04MC45IDAgMC0zMiAzMiAwek05NiAyMDhsMCA4Ni4xLTQ4LTIxLjMgMC02NC44IDQ4IDB6Il19LCRrZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJwZW9wbGUtY2FycnktYm94IixpY29uOls1NzYsNTEyLFsicGVvcGxlLWNhcnJ5Il0sImY0Y2UiLCJNNjQtMzJBNTYgNTYgMCAxIDEgNjQgODAgNTYgNTYgMCAxIDEgNjQtMzJ6TTAgMTcxLjFjMC0zMi42IDI2LjUtNTkuMSA1OS4xLTU5LjEgMjMuNSAwIDQ1LjUgMTEuMyA1OS4xIDMwLjRsNDguNyA2OC4yYzUuOCA4LjIgMTUuMSAxMy4xIDI1LjEgMTMuNGwwLTk2YzAtMTcuNyAxNC4zLTMyIDMyLTMybDEyOCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgOTZjMTAtLjMgMTkuMy01LjIgMjUuMS0xMy40bDQ4LjctNjguMmMxMy42LTE5LjEgMzUuNi0zMC40IDU5LjEtMzAuNCAzMi42IDAgNTkuMSAyNi41IDU5LjEgNTkuMUw1NzYgMjcyYzAgMzAuMi0xNC4yIDU4LjctMzguNCA3Ni44bC03Ni44IDU3LjZjLTguMSA2LTEyLjggMTUuNS0xMi44IDI1LjZsMCA4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTgwYzAtMzAuMiAxNC4yLTU4LjcgMzguNC03Ni44bDQxLjYtMzEuMiAwLTgwLjEtMi44IDMuOWMtMTggMjUuMi00Ny4xIDQwLjItNzguMSA0MC4yTDM1MiAyODhjLS42IDAtMS4zIDAtMS45LS4xLS42IDAtMS4zIC4xLTEuOSAuMWwtMTIwLjQgMGMtLjYgMC0xLjMgMC0xLjktLjEtLjYgMC0xLjMgLjEtMS45IC4xbC0zMS4xIDBjLTMxIDAtNjAuMS0xNS03OC4xLTQwLjJsLTIuOC0zLjkgMCA4MC4xIDQxLjYgMzEuMkMxNzcuOCAzNzMuMyAxOTIgNDAxLjggMTkyIDQzMmwwIDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtODBjMC0xMC4xLTQuNy0xOS42LTEyLjgtMjUuNkwzOC40IDM0OC44QzE0LjIgMzMwLjcgMCAzMDIuMiAwIDI3MkwwIDE3MS4xek0wIDM3OS4zYzMuMSAyLjcgNi4zIDUuNCA5LjYgNy45TDY0IDQyOCA2NCA1MTJjMCAxNy43LTE0LjMgMzItMzIgMzJTMCA1MjkuNyAwIDUxMkwwIDM3OS4zek01NjggMjRhNTYgNTYgMCAxIDEgLTExMiAwIDU2IDU2IDAgMSAxIDExMiAwem04IDQ4OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTg0IDU0LjQtNDAuOGMzLjMtMi41IDYuNS01LjEgOS42LTcuOUw1NzYgNTEyeiJdfSxnMmE9JGtlLGIyYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJjaGFpciIsaWNvbjpbNDQ4LDUxMixbMTI5NjgxXSwiZjZjMCIsIk0xNTIgMjU2bDAtMTgxLjhjLTI0LjUgMjAuNS00MCA1MS40LTQwIDg1LjhsMCA5NiA0MCAwem00OCAwbDQ4IDAgMC0yMDUuNGMtNy43LTEuNy0xNS44LTIuNi0yNC0yLjZzLTE2LjMgLjktMjQgMi42TDIwMCAyNTZ6TTI5NiA3NC4ybDAgMTgxLjggNDAgMCAwLTk2YzAtMzQuNC0xNS41LTY1LjItNDAtODUuOHpNMzIgMjU2bDMyIDAgMC05NkM2NCA3MS42IDEzNS42IDAgMjI0IDBTMzg0IDcxLjYgMzg0IDE2MGwwIDk2IDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMmwwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtOTYtMjU2IDAgMCA5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyeiJdfSx2MmE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToid2luZCIsaWNvbjpbNTEyLDUxMixbXSwiZjcyZSIsIk0yODggMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJsNDAgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEwzMiAxMTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMzI4IDBjNDguNiAwIDg4LTM5LjQgODgtODhTNDA4LjYgMCAzNjAgMEwzMjAgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6bTY0IDM1MmMwIDE3LjcgMTQuMyAzMiAzMiAzMmwzMiAwYzUzIDAgOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2TDMyIDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzODQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMzIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTEyOCA1MTJsNDAgMGM0OC42IDAgODgtMzkuNCA4OC04OHMtMzkuNC04OC04OC04OEwzMiAzMzZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMTM2IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTQwIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ6Il19LHgyYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJsYXllci1ncm91cCIsaWNvbjpbNTEyLDUxMixbXSwiZjVmZCIsIk0yMzIuNSA1LjJjMTQuOS02LjkgMzIuMS02LjkgNDcgMGwyMTguNiAxMDFjOC41IDMuOSAxMy45IDEyLjQgMTMuOSAyMS44cy01LjQgMTcuOS0xMy45IDIxLjhsLTIxOC42IDEwMWMtMTQuOSA2LjktMzIuMSA2LjktNDcgMEwxMy45IDE0OS44QzUuNCAxNDUuOCAwIDEzNy4zIDAgMTI4czUuNC0xNy45IDEzLjktMjEuOEwyMzIuNSA1LjJ6TTQ4LjEgMjE4LjRsMTY0LjMgNzUuOWMyNy43IDEyLjggNTkuNiAxMi44IDg3LjMgMGwxNjQuMy03NS45IDM0LjEgMTUuOGM4LjUgMy45IDEzLjkgMTIuNCAxMy45IDIxLjhzLTUuNCAxNy45LTEzLjkgMjEuOGwtMjE4LjYgMTAxYy0xNC45IDYuOS0zMi4xIDYuOS00NyAwTDEzLjkgMjc3LjhDNS40IDI3My44IDAgMjY1LjMgMCAyNTZzNS40LTE3LjkgMTMuOS0yMS44bDM0LjEtMTUuOHpNMTMuOSAzNjIuMmwzNC4xLTE1LjggMTY0LjMgNzUuOWMyNy43IDEyLjggNTkuNiAxMi44IDg3LjMgMGwxNjQuMy03NS45IDM0LjEgMTUuOGM4LjUgMy45IDEzLjkgMTIuNCAxMy45IDIxLjhzLTUuNCAxNy45LTEzLjkgMjEuOGwtMjE4LjYgMTAxYy0xNC45IDYuOS0zMi4xIDYuOS00NyAwTDEzLjkgNDA1LjhDNS40IDQwMS44IDAgMzkzLjMgMCAzODRzNS40LTE3LjkgMTMuOS0yMS44eiJdfSx5MmE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaGVhZC1zaWRlLW1hc2siLGljb246WzUxMiw1MTIsW10sImUwNjMiLCJNNDQ1LjkgMTkzYy0uMS0uNC0uMi0uOS0uMi0xLjMtMTUuNy0xMDguNC0xMDguOS0xOTEuNy0yMjEuNy0xOTEuNy04NSAwLTE1OSA0Ny40LTE5Ni45IDExNy4yTDI4My4zIDI4OCA0NTYgMjg4IDQ0Mi45IDMzNiAzMzYgMzM2Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDk4LjIgMC04LjcgMzItODkuNSAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDgwLjYgMGMtNi43IDE5LjEtMjQuOCAzMi00NS4zIDMyTDI4OCA0NjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTA0LjUtMjQ3LjUtMTY1QzMgMTgyLjEgMCAyMDIuNyAwIDIyNCAwIDI3OCAxOS4xIDMyNy41IDUwLjkgMzY2LjIgNTguOSAzNzUuOSA2NCAzODcuOCA2NCA0MDAuNEw2NCA0NjRjMCAyNi41IDIxLjUgNDggNDggNDhsMTI3LjMgMCAuNyAwIDEzMS4zIDBjNDQuOSAwIDgzLjgtMzEuMSA5My42LTc0LjlsMzMuOS0xNTAuM2MzLjMtMTQuNC0uMy0yOS41LTkuNy00MUw0NDUuOSAxOTN6TTI4OCAxOTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHoiXX0sZW5lPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImhhbmRzIixpY29uOls1MTIsNTEyLFsic2lnbi1sYW5ndWFnZSIsInNpZ25pbmciXSwiZjJhNyIsIk01MTIgMTYwbC0uMSA3Mi42YzAgNDQuOC0xNy42IDg3LjEtNDcuOSAxMTguNC0uMy03Ny00MC4xLTE0OC40LTEwNS40LTE4OS4zbC0xLjktMS4yYzIuNS0zLjcgMi44LTguNiAuNC0xMi43bC02Mi0xMDcuNGMtNi42LTExLjUtMi43LTI2LjIgOC44LTMyLjhTMzMwIDUgMzM2LjYgMTYuNWw2OCAxMTcuOCAwIDAgMCAwIDQzLjMgNzUgLjEtNDkuM2MwLTE3LjcgMTQuNC0zMiAzMi0zMnMzMiAxNC40IDMyIDMyek0yOTguNCAxMjQuMmMtMTQuMS04LjgtMjkuOC0xMi43LTQ1LjItMTIuMUwyMTYuNyA0OC44Yy02LjYtMTEuNS0yLjctMjYuMiA4LjgtMzIuOHMyNi4yLTIuNyAzMi44IDguOGw2Ny4xIDExNi4yLTI3LTE2Ljl6TTIxMS45IDg4LjVsMTYuNCAyOC40Yy0xNS4xIDUuNS0yOC42IDE1LjYtMzguMyAyOS43bC0xOS43LTM0LjJjLTYuNi0xMS41LTIuNy0yNi4yIDguOC0zMi44czI2LjItMi43IDMyLjggOC44em0tNDYuNCA2My43bDEyLjUgMjEuN2MtMiA4LjYtMi41IDE3LjUtMS43IDI2LjFsLTQuMyAwIDAgMC0zNC40IDAtMTMuNy0yMy44Yy02LjYtMTEuNS0yLjctMjYuMiA4LjgtMzIuOHMyNi4yLTIuNyAzMi44IDguOHpNMjI4LjkgMTc1YzkuNC0xNSAyOS4xLTE5LjUgNDQuMS0xMC4ybDYwLjIgMzcuNkMzODQuNyAyMzQuNyA0MTYgMjkxLjIgNDE2IDM1MmwwIDhjMCA4My45LTY4LjEgMTUyLTE1MiAxNTJMODggNTEyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDkyIDBjNi42IDAgMTItNS40IDEyLTEycy01LjQtMTItMTItMTJMNTYgNDQwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDEyNCAwYzYuNiAwIDEyLTUuNCAxMi0xMnMtNS40LTEyLTEyLTEyTDI0IDM2OGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGwxNTYgMGM2LjYgMCAxMi01LjQgMTItMTJzLTUuNC0xMi0xMi0xMkw1NiAyOTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsMTM2IDAgMCAwIDAgMCA5My4yIDAtNDYuMi0yOC45Yy0xNS05LjQtMTkuNS0yOS4xLTEwLjItNDQuMXoiXX0sdzJhPWVuZSxrMmE9ZW5lLFMyYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0YWJsZXRzIixpY29uOls1MTIsNTEyLFtdLCJmNDkwIiwiTTQ5NS4zIDc2LjZjLTQuNi04LjctMTYuMy05LjctMjMuMy0yLjdMMjk3LjkgMjQ4Yy03IDctNiAxOC43IDIuNyAyMy4zIDIwLjEgMTAuNyA0MyAxNi43IDY3LjQgMTYuNyA3OS41IDAgMTQ0LTY0LjUgMTQ0LTE0NCAwLTI0LjMtNi00Ny4zLTE2LjctNjcuNHpNMjQwLjcgMjExLjRjNC42IDguNyAxNi4zIDkuNyAyMy4zIDIuN0w0MzguMSA0MGM3LTcgNi0xOC43LTIuNy0yMy4zLTIwLjEtMTAuNy00My0xNi43LTY3LjQtMTYuNy03OS41IDAtMTQ0IDY0LjUtMTQ0IDE0NCAwIDI0LjMgNiA0Ny4zIDE2LjcgNjcuNHpNMTQ0IDIyNEM3OS4yIDIyNCAyNC40IDI2Ni44IDYuMyAzMjUuNiAzLjQgMzM1LjEgMTEgMzQ0IDIwLjkgMzQ0bDI0Ni4yIDBjOS45IDAgMTcuNS04LjkgMTQuNi0xOC40LS45LTMtMS45LTUuOS0zLTguNy0zNy40LTE4LjEtNjgtNDgtODctODQuOC0xNC45LTUuMi0zMC45LTguMS00Ny42LTguMXpNMjgxLjcgNDEwLjRjMi45LTkuNS00LjctMTguNC0xNC42LTE4LjRMMjAuOSAzOTJDMTEgMzkyIDMuNCA0MDAuOSA2LjMgNDEwLjQgMjQuNCA0NjkuMiA3OS4yIDUxMiAxNDQgNTEyczExOS42LTQyLjggMTM3LjctMTAxLjZ6Il19LF8yYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ3ZWlnaHQtaGFuZ2luZyIsaWNvbjpbNTEyLDUxMixbXSwiZjVjZCIsIk0yMjQgOTZhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTIyLjUgMzJjMy41LTEwIDUuNS0yMC44IDUuNS0zMiAwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NmMwIDExLjIgMS45IDIyIDUuNSAzMmwtMjEuOCAwYy0yOC4zIDAtNTMuMiAxOC41LTYxLjMgNDUuNkwyLjQgNDQwLjJDLjggNDQ1LjQgMCA0NTAuOCAwIDQ1Ni4yIDAgNDg3IDI1IDUxMiA1NS44IDUxMmw0MDAuNCAwYzMwLjggMCA1NS44LTI1IDU1LjgtNTUuOCAwLTUuNC0uOC0xMC44LTIuNC0xNmwtODAtMjY2LjVjLTguMS0yNy4xLTMzLTQ1LjYtNjEuMy00NS42bC0yMS44IDB6Il19LE0yYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJkaWNlIixpY29uOls1MTIsNTEyLFsxMjc5MjJdLCJmNTIyIiwiTTE0MS40IDIuM0MxMDMtOCA2My41IDE0LjggNTMuMyA1My4yTDIuNSAyNDIuN0MtNy44IDI4MS4xIDE1IDMyMC42IDUzLjQgMzMwLjlsMTg5LjUgNTAuOGMzOC40IDEwLjMgNzcuOS0xMi41IDg4LjItNTAuOWw1MC44LTE4OS41YzEwLjMtMzguNC0xMi41LTc3LjktNTAuOS04OC4yTDE0MS40IDIuM3ptMjMgMjA1LjdhMzIgMzIgMCAxIDEgNTUuNC0zMiAzMiAzMiAwIDEgMSAtNTUuNCAzMnpNNzkuMiAyMjAuM2EzMiAzMiAwIDEgMSAzMiA1NS40IDMyIDMyIDAgMSAxIC0zMi01NS40em0xODUgOTYuNGEzMiAzMiAwIDEgMSAtMzItNTUuNCAzMiAzMiAwIDEgMSAzMiA1NS40em05LTIwOC40YTMyIDMyIDAgMSAxIDMyIDU1LjQgMzIgMzIgMCAxIDEgLTMyLTU1LjR6bS0xMjEgMTQuNGEzMiAzMiAwIDEgMSAtMzItNTUuNCAzMiAzMiAwIDEgMSAzMiA1NS40ek00MTggMTkyTDM3Ny40IDM0My4yYy0xNy4yIDY0LTgzIDEwMi0xNDcgODQuOWwtMzguMy0xMC4zIDAgMzAuMmMwIDM1LjMgMjguNyA2NCA2NCA2NGwxOTIgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTE5MmMwLTM1LjMtMjguNy02NC02NC02NEw0MTggMTkyeiJdfSxEa2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic2hvcC1zbGFzaCIsaWNvbjpbNTc2LDUxMixbInN0b3JlLWFsdC1zbGFzaCJdLCJlMDcwIiwiTTQxLTI0LjljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwUy0yLjMtLjMgNyA5LjFsNTI4IDUyOGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTU3LTU3IDAtMTkwLjNjMjYuOC0xLjkgNDgtMjQuMyA0OC01MS42IDAtOC0xLjktMTYtNS41LTIzLjJMNDk3LjcgNjcuNEM0ODYuOCA0NS43IDQ2NC43IDMyIDQ0MC40IDMyTDEzNS42IDMyYy0xMC43IDAtMjEgMi43LTMwLjIgNy42TDQxLTI0Ljl6TTMyMS44IDI1Nkw0NDggMjU2IDQ0OCAzODIuMiAzMjEuOCAyNTZ6TTM1MiA0MjEuOGwtNjQtNjQgMCAxMC4yYzAgOC44LTcuMiAxNi0xNiAxNmwtMTI4IDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTExMiA1OC4yIDAtMTM0LjgtMTM0LjgtMjkuOSA1OS45Yy0zLjYgNy4yLTUuNSAxNS4xLTUuNSAyMy4yIDAgMjcuMyAyMS4yIDQ5LjcgNDggNTEuNkw2NCA0MzJjMCAyNi41IDIxLjUgNDggNDggNDhsMTkyIDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC0xMC4yeiJdfSx6MmE9RGtlLExrZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJzb3J0LWRvd24iLGljb246WzM4NCw1MTIsWyJzb3J0LWRlc2MiXSwiZjBkZCIsIk0zMiAyODhjLTEyLjkgMC0yNC42IDcuOC0yOS42IDE5LjhTLjIgMzMzLjUgOS40IDM0Mi42bDE2MCAxNjBjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTYwLTE2MGM5LjItOS4yIDExLjktMjIuOSA2LjktMzQuOVMzNjQuOSAyODggMzUyIDI4OEwzMiAyODh6Il19LEMyYT1Ma2UsVDJhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InBlc2V0YS1zaWduIixpY29uOls0NDgsNTEyLFtdLCJlMjIxIiwiTTExMiAzMkM5NC4zIDMyIDgwIDQ2LjMgODAgNjRsMCAxMDQtMjQgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwyNCAwIDAgMjMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC05NiA5NiAwYzgwLjIgMCAxNDYuNi01OSAxNTguMi0xMzZsMjUuOCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0yNS44IDBDMzg2LjYgOTEgMzIwLjIgMzIgMjQwIDMyTDExMiAzMnpNMzMzIDE2OGwtMTg5IDAgMC03MiA5NiAwYzQ0LjcgMCA4Mi4zIDMwLjYgOTMgNzJ6TTE0NCAyMTZsMTg5IDBjLTEwLjcgNDEuNC00OC4yIDcyLTkzIDcybC05NiAwIDAtNzJ6Il19LEVrZT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJ0YWJsZXQtc2NyZWVuLWJ1dHRvbiIsaWNvbjpbNDQ4LDUxMixbInRhYmxldC1hbHQiXSwiZjNmYSIsIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEwzODQgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDM4NGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgNjR6TTI1NiA0MzJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMzg0IDY0bC0zMjAgMCAwIDI4OCAzMjAgMCAwLTI4OHoiXX0sJDJhPUVrZSxQa2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaGFuZC1ob2xkaW5nLWRvbGxhciIsaWNvbjpbNTc2LDUxMixbImhhbmQtaG9sZGluZy11c2QiXSwiZjRjMCIsIk0yODgtMTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0bDAgMTItMS44IDBjLTM2LjYgMC02Ni4yIDI5LjctNjYuMiA2Ni4yIDAgMzMuNCAyNC45IDYxLjYgNTggNjUuN2w2MSA3LjZjNS4xIC42IDkgNSA5IDEwLjIgMCA1LjctNC42IDEwLjItMTAuMiAxMC4yTDI0MCAxODBjLTE1LjUgMC0yOCAxMi41LTI4IDI4czEyLjUgMjggMjggMjhsMjQgMCAwIDEyYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0xMiAxLjggMGMzNi42IDAgNjYuMi0yOS43IDY2LjItNjYuMiAwLTMzLjQtMjQuOS02MS42LTU4LTY1LjdsLTYxLTcuNmMtNS4xLS42LTktNS05LTEwLjIgMC01LjcgNC42LTEwLjIgMTAuMi0xMC4yTDMyOCA3NmMxNS41IDAgMjgtMTIuNSAyOC0yOHMtMTIuNS0yOC0yOC0yOGwtMTYgMCAwLTEyYzAtMTMuMy0xMC43LTI0LTI0LTI0ek0xMDkuMyAzNDEuNUw2Ni43IDM4NCAzMiAzODRjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgNjRjMCAxNy43IDE0LjMgMzIgMzIgMzJsMzIwLjUgMGMyOSAwIDU3LjMtOS4zIDgwLjctMjYuNWwxMjYuNi05My4zYzE3LjgtMTMuMSAyMS42LTM4LjEgOC41LTU1LjlzLTM4LjEtMjEuNi01NS45LTguNUwzOTIuNiA0MTYgMjgwIDQxNmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGw3MiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xNTIuMiAwYy0zMy45IDAtNjYuNSAxMy41LTkwLjUgMzcuNXoiXX0sRDJhPVBrZSxJa2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToic2hpZWxkIixpY29uOls1MTIsNTEyLFsxMjg3MzcsInNoaWVsZC1ibGFuayJdLCJmMTMyIiwiTTI1NiAwYzQuNiAwIDkuMiAxIDEzLjQgMi45TDQ1Ny44IDgyLjhjMjIgOS4zIDM4LjQgMzEgMzguMyA1Ny4yLS41IDk5LjItNDEuMyAyODAuNy0yMTMuNiAzNjMuMi0xNi43IDgtMzYuMSA4LTUyLjggMC0xNzIuNC04Mi41LTIxMy4xLTI2NC0yMTMuNi0zNjMuMi0uMS0yNi4yIDE2LjMtNDcuOSAzOC4zLTU3LjJMMjQyLjcgMi45QzI0Ni45IDEgMjUxLjQgMCAyNTYgMHoiXX0sTDJhPUlrZSxBa2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiZmFjZS1sYXVnaCIsaWNvbjpbNTEyLDUxMixbImxhdWdoIl0sImY1OTkiLCJNMjU2IDUxMmEyNTYgMjU2IDAgMSAwIDAtNTEyIDI1NiAyNTYgMCAxIDAgMCA1MTJ6TTEwMS42IDMxNGMtMy43LTEzLjcgNy41LTI2IDIxLjctMjZsMjY1LjQgMGMxNC4yIDAgMjUuNCAxMi4zIDIxLjcgMjYtMTguNSA2OC04MC42IDExOC0xNTQuNCAxMThTMTIwIDM4MiAxMDEuNiAzMTR6TTE0NCAxOTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHoiXX0sRTJhPUFrZSxQMmE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiaGFuZHMtaG9sZGluZyIsaWNvbjpbNjQwLDUxMixbXSwiZjRjMiIsIk04MCAxMDRjMC0yMi4xLTE3LjktNDAtNDAtNDBTMCA4MS45IDAgMTA0TDAgMzI1LjVjMCAyNS41IDEwLjEgNDkuOSAyOC4xIDY3LjlMMTI4IDQ5My4zYzEyIDEyIDI4LjMgMTguNyA0NS4zIDE4LjdsNjYuNyAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtNzguOWMwLTI5LjctMTEuOC01OC4yLTMyLjgtNzkuMmwtMjUuMy0yNS4zIDAgMGMtNy4zLTcuMy0yMy4xLTIzLjEtNDcuMi00Ny4yLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zYzI0LjEgMjQuMSAzOS45IDM5LjkgNDcuMiA0Ny4yIDExIDExIDkuMiAyOS4yLTMuNyAzNy44LTkuNyA2LjUtMjIuNyA1LjItMzEtMy4xTDk4LjcgMzA5LjVjLTEyLTEyLTE4LjctMjguMy0xOC43LTQ1LjNMODAgMTA0em00ODAgMGwwIDE2MC4yYzAgMTctNi43IDMzLjMtMTguNyA0NS4zbC01MS4xIDUxLjFjLTguMyA4LjMtMjEuMyA5LjYtMzEgMy4xLTEyLjktOC42LTE0LjctMjYuOS0zLjctMzcuOCA3LjMtNy4zIDIzLjEtMjMuMSA0Ny4yLTQ3LjIgMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBjLTI0LjEgMjQuMS0zOS45IDM5LjktNDcuMiA0Ny4ybDAgMC0yNS4zIDI1LjNjLTIxIDIxLTMyLjggNDkuNS0zMi44IDc5LjJsMCA3OC45YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDY2LjcgMGMxNyAwIDMzLjMtNi43IDQ1LjMtMTguN2w5OS45LTk5LjljMTgtMTggMjguMS00Mi40IDI4LjEtNjcuOUw2NDAgMTA0YzAtMjIuMS0xNy45LTQwLTQwLTQwcy00MCAxNy45LTQwIDQweiJdfSxOa2U9e3ByZWZpeDoiZmFzIixpY29uTmFtZToiY2FydC1zaG9wcGluZyIsaWNvbjpbNjQwLDUxMixbMTI4NzIyLCJzaG9wcGluZy1jYXJ0Il0sImYwN2EiLCJNMjQtMTZDMTAuNy0xNiAwLTUuMyAwIDhTMTAuNyAzMiAyNCAzMmw0NS4zIDBjMy45IDAgNy4yIDIuOCA3LjkgNi42bDUyLjEgMjg2LjNjNi4yIDM0LjIgMzYgNTkuMSA3MC44IDU5LjFMNDU2IDM4NGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtMjU1LjkgMGMtMTEuNiAwLTIxLjUtOC4zLTIzLjYtMTkuN2wtNS4xLTI4LjMgMzAzLjYgMGMzMC44IDAgNTcuMi0yMS45IDYyLjktNTIuMkw1NjguOSA2OS45QzU3Mi42IDUwLjIgNTU3LjUgMzIgNTM3LjQgMzJsLTQxMi43IDAtLjQtMmMtNC44LTI2LjYtMjgtNDYtNTUuMS00NkwyNC0xNnpNMjA4IDUxMmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bTIyNCAwYTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnoiXX0sSTJhPU5rZSxBMmE9e3ByZWZpeDoiZmFzIixpY29uTmFtZToib2N0YWdvbiIsaWNvbjpbNTEyLDUxMixbMTI4NzIxXSwiZjMwNiIsIk0xODguNiAuMWMtMTcgMC0zMy4zIDYuNy00NS4zIDE4LjdMMTkuMiAxNDNDNy4yIDE1NSAuNSAxNzEuMiAuNSAxODguMmwwIDEzNS42YzAgMTcgNi43IDMzLjMgMTguNyA0NS4zTDE0My40IDQ5My4yYzEyIDEyIDI4LjMgMTguNyA0NS4zIDE4LjdsMTM1LjYgMGMxNyAwIDMzLjMtNi43IDQ1LjMtMTguN0w0OTMuNiAzNjljMTItMTIgMTguNy0yOC4zIDE4LjctNDUuM2wwLTEzNS42YzAtMTctNi43LTMzLjMtMTguNy00NS4zTDM2OS41IDE4LjhjLTEyLTEyLTI4LjMtMTguNy00NS4zLTE4LjdMMTg4LjYgLjF6Il19LE4yYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJoYW5kLXBvaW50ZXIiLGljb246WzQ0OCw1MTIsW10sImYyNWEiLCJNMTI4IDQwYzAtMjIuMSAxNy45LTQwIDQwLTQwczQwIDE3LjkgNDAgNDBsMCAxNDguMmM4LjUtNy42IDE5LjctMTIuMiAzMi0xMi4yIDIwLjYgMCAzOC4yIDEzIDQ1IDMxLjIgOC44LTkuMyAyMS4yLTE1LjIgMzUtMTUuMiAyNS4zIDAgNDYgMTkuNSA0Ny45IDQ0LjMgOC41LTcuNyAxOS44LTEyLjMgMzIuMS0xMi4zIDI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgMTEyYzAgNzAuNy01Ny4zIDEyOC0xMjggMTI4bC04NS4zIDBjLTUgMC05LjktLjMtMTQuNy0xLTU1LjMtNS42LTEwNi4yLTM0LTE0MC03OUw4IDMzNmMtMTMuMy0xNy43LTkuNy00Mi43IDgtNTZzNDIuNy05LjcgNTYgOGw1NiA3NC43IDAtMzIyLjd6TTI0MCAzMDRjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZsMCA5NmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtOTZ6bTQ4LTE2Yy04LjggMC0xNiA3LjItMTYgMTZsMCA5NmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtOTZjMC04LjgtNy4yLTE2LTE2LTE2em04MCAxNmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNmwwIDk2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZsMC05NnoiXX0sUjJhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6InJlZ2lzdGVyZWQiLGljb246WzUxMiw1MTIsWzE3NF0sImYyNWQiLCJNMjU2IDUxMmEyNTYgMjU2IDAgMSAwIDAtNTEyIDI1NiAyNTYgMCAxIDAgMCA1MTJ6TTIwMCAxNDRsODAgMGMzOS44IDAgNzIgMzIuMiA3MiA3MiAwIDI4LjktMTcgNTMuOC00MS42IDY1LjNsMzAuMiA1MC4zYzYuOCAxMS40IDMuMSAyNi4xLTguMiAzMi45cy0yNi4xIDMuMS0zMi45LTguMmwtNDEtNjguMy0zNC40IDAgMCA1NmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTE3NmMwLTEzLjMgMTAuNy0yNCAyNC0yNHptNzIgOTZsOCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC01NiAwIDAgNDggNDggMHoiXX0sTzJhPXtwcmVmaXg6ImZhcyIsaWNvbk5hbWU6ImhvdXNlLXNpZ25hbCIsaWNvbjpbNTc2LDUxMixbXSwiZTAxMiIsIk01MTUuOSAyNDBsLTE5LjkgMCAwIDE0NGMwIDM1LjMtMjguNyA2NC02NCA2NGwtMTM3IDBjLTI0LTkxLjctOTMuNS0xNjUtMTgzLTE5NC4zbDAtMTMuNy0xOS45IDBjLTE1LjUgMC0yOC4xLTEyLjYtMjguMS0yOC4xIDAtNy42IDMuMS0xNC45IDguNi0yMC4yTDI3Ni41LTQuOUMyODMuOS0xMiAyOTMuNy0xNiAzMDQtMTZzMjAuMSA0IDI3LjUgMTEuMUw1MzUuNCAxOTEuN2M1LjUgNS4zIDguNiAxMi42IDguNiAyMC4yIDAgMTUuNS0xMi42IDI4LjEtMjguMSAyOC4xek0yODAgMTkyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0bDQ4IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRsMC00OGMwLTEzLjMtMTAuNy0yNC0yNC0yNGwtNDggMHpNMjQgMjg4YzEyOC4xIDAgMjMyIDEwMy45IDIzMiAyMzIgMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRjMC0xMDEuNi04Mi40LTE4NC0xODQtMTg0LTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6bTggMTkyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNMCA0MDhjMC0xMy4zIDEwLjctMjQgMjQtMjQgNzUuMSAwIDEzNiA2MC45IDEzNiAxMzYgMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRjMC00OC42LTM5LjQtODgtODgtODgtMTMuMyAwLTI0LTEwLjctMjQtMjR6Il19LEYyYT17cHJlZml4OiJmYXMiLGljb25OYW1lOiJiYW5nbGFkZXNoaS10YWthLXNpZ24iLGljb246WzM4NCw1MTIsW10sImUyZTYiLCJNMzYgMzIuM0MxOC40IDMwLjEgMi40IDQyLjUgLjMgNjBTMTAuNSA5My42IDI4IDk1LjhsNy45IDFjMTYgMiAyOCAxNS42IDI4IDMxLjhsMCAzMS41LTQwIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsNDAgMCAwIDE3NmMwIDUzIDQzIDk2IDk2IDk2bDMyIDBjMTA2IDAgMTkyLTg2IDE5Mi0xOTJsMC0zMmMwLTUzLTQzLTk2LTk2LTk2bC0xNiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDE2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMmMwIDcwLjctNTcuMyAxMjgtMTI4IDEyOGwtMzIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0xNzYgNDAgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtNDAgMCAwLTMxLjVDMTI4IDgwLjEgOTIgMzkuMiA0My45IDMzLjJsLTcuOS0xeiJdfSxnV2E9e2ZhMDpYUnQsZmExOlFSdCxmYTI6SlJ0LGZhMzplT3QsZmE0OnRPdCxmYTU6YU90LGZhNjpzT3QsZmE3OmlPdCxmYTg6ck90LGZhOTpvT3QsZmFEb2xsYXJTaWduOmlvZSxmYURvbGxhcjpuT3QsZmFVc2Q6bE90LGZhRG9nOmNPdCxmYVRydWNrTW92aW5nOmRPdCxmYVJvdGF0ZTpDN2UsZmFTeW5jQWx0OnVPdCxmYVNxdWFyZU1pbnVzOlQ3ZSxmYU1pbnVzU3F1YXJlOnBPdCxmYUFsaWduSnVzdGlmeTpoT3QsZmFDYWxlbmRhckNoZWNrOmZPdCxmYUZhY2VLaXNzOiQ3ZSxmYUtpc3M6bU90LGZhS2l0Y2hlblNldDpnT3QsZmFEbmE6Yk90LGZhQ2hpbGRSZWFjaGluZzp2T3QsZmFQYXN0ZTphZixmYUZpbGVDbGlwYm9hcmQ6eE90LGZhTWV0ZW9yOnlPdCxmYUdlYXJzOkQ3ZSxmYUNvZ3M6d090LGZhRmlsZUNpcmNsZVBsdXM6a090LGZhSWNpY2xlczpTT3QsZmFBcnJvd1RyZW5kVXA6X090LGZhSGV4YWdvbk5vZGVzQm9sdDpNT3QsZmFRdWVzdGlvbjp6T3QsZmFIYW5kc0JvdW5kOkNPdCxmYVBlcnNvbldhbGtpbmdMdWdnYWdlOlRPdCxmYUZpbGVBcnJvd0Rvd246TDdlLGZhRmlsZURvd25sb2FkOiRPdCxmYVBlcnNvbkJvb3RoOkRPdCxmYUxvY3VzdDpMT3QsZmFSaWdodExvbmc6RTdlLGZhTG9uZ0Fycm93QWx0UmlnaHQ6RU90LGZhVHJ1Y2tEcm9wbGV0OlBPdCxmYUhhbmRIb2xkaW5nTWVkaWNhbDpJT3QsZmFIYW5kUG9pbnRMZWZ0OkFPdCxmYUNhbGN1bGF0b3I6Tk90LGZhTWludXM6c2YsZmFTdWJ0cmFjdDpST3QsZmFBcnJvd1VwWkE6UDdlLGZhU29ydEFscGhhVXBBbHQ6T090LGZhTWljcm9waG9uZVNsYXNoOkZPdCxmYVNxdWFyZVBlbjpyb2UsZmFQZW5TcXVhcmU6Qk90LGZhUGVuY2lsU3F1YXJlOkhPdCxmYUhhbmRGaXN0Okk3ZSxmYUZpc3RSYWlzZWQ6cU90LGZhQ29tbWVudFNtczpBN2UsZmFTbXM6ak90LGZhU2ltQ2FyZDpWT3QsZmFTY2FsZUJhbGFuY2VkOk43ZSxmYUJhbGFuY2VTY2FsZTpVT3QsZmFDYXI6UjdlLGZhQXV0b21vYmlsZTpXT3QsZmFDcm9wU2ltcGxlOk83ZSxmYUNyb3BBbHQ6R090LGZhTWVkYWw6S090LGZhU2Nyb2xsOllPdCxmYUZpbGVFeGNlbDpaT3QsZmFGaWx0ZXI6WE90LGZhRHJ1bTpRT3QsZmFNYXBQaW46Sk90LGZhU2NhbGVVbmJhbGFuY2VkRmxpcDpGN2UsZmFCYWxhbmNlU2NhbGVSaWdodDplRnQsZmFBcnJvd3NUb0NpcmNsZTp0RnQsZmFFbnZlbG9wZTphRnQsZmFCYWJ5OnNGdCxmYVNxdWFyZUNhcmV0RG93bjpCN2UsZmFDYXJldFNxdWFyZURvd246aUZ0LGZhVGVudDpyRnQsZmFBOm9GdCxmYVBhcmFjaHV0ZUJveDpuRnQsZmFDYXJ0QXJyb3dEb3duOmxGdCxmYUJyaWRnZUNpcmNsZUV4Y2xhbWF0aW9uOmNGdCxmYUNsb3VkQXJyb3dVcDpvb2UsZmFDbG91ZFVwbG9hZDpkRnQsZmFDbG91ZFVwbG9hZEFsdDp1RnQsZmFBdDpwRnQsZmFJbmRpYW5SdXBlZVNpZ246bm9lLGZhSW5kaWFuUnVwZWU6aEZ0LGZhSW5yOmZGdCxmYVRydWNrOm1GdCxmYUNoYWxrYm9hcmRVc2VyOkg3ZSxmYUNoYWxrYm9hcmRUZWFjaGVyOmdGdCxmYVVzZXJDaGVjazpiRnQsZmFVc2VyTmluamE6dkZ0LGZhUGxhbnRXaWx0OnhGdCxmYVdlaWdodFNjYWxlOnE3ZSxmYVdlaWdodDp5RnQsZmFDYXJldFJpZ2h0Ok9iLGZhRmxvcmluU2lnbjp3RnQsZmFCZWxsOkZiLGZhTGFyaVNpZ246a0Z0LGZhTWlsbFNpZ246U0Z0LGZhUGVyc29uU25vd2JvYXJkaW5nOmo3ZSxmYVNub3dib2FyZGluZzpfRnQsZmFUdHk6VjdlLGZhVGVsZXR5cGU6TUZ0LGZhVXNlcnNSZWN0YW5nbGU6ekZ0LGZhTW9iaWxlOmxvZSxmYU1vYmlsZUFuZHJvaWQ6Q0Z0LGZhTW9iaWxlUGhvbmU6VEZ0LGZhQXJyb3dzVHVyblRvRG90czokRnQsZmFFeGNsYW1hdGlvbjpERnQsZmFDaHVyY2g6TEZ0LGZhVG9nZ2xlT2ZmOkVGdCxmYVNob2VQcmludHM6UEZ0LGZhRmlsZUNpcmNsZUV4Y2xhbWF0aW9uOklGdCxmYVdhbGxldDpCYixmYU1lc3NhZ2U6cmYsZmFDb21tZW50QWx0OkFGdCxmYVRyb3BoeTpORnQsZmFGYWNlRGl6enk6VTdlLGZhRGl6enk6UkZ0LGZhQmFjdGVyaWE6T0Z0LGZhRWFyRGVhZjpaayxmYURlYWY6RkZ0LGZhRGVhZm5lc3M6QkZ0LGZhSGFyZE9mSGVhcmluZzpIRnQsZmFQZW9wbGVBcnJvd3M6VzdlLGZhUGVvcGxlQXJyb3dzTGVmdFJpZ2h0OnFGdCxmYUhhbmRzQ2xhcHBpbmc6akZ0LGZhVmlydXNDb3ZpZFNsYXNoOlZGdCxmYUNhbGVuZGFyRGF5czpHN2UsZmFDYWxlbmRhckFsdDpVRnQsZmFEaWFtb25kVHVyblJpZ2h0Oks3ZSxmYURpcmVjdGlvbnM6V0Z0LGZhSGFuZFBvaW50VXA6R0Z0LGZhQmV6aWVyQ3VydmU6S0Z0LGZhUGVyc29uSGFsZkRyZXNzOllGdCxmYVNxdWFyZVBvbGxIb3Jpem9udGFsOlk3ZSxmYVBvbGxIOlpGdCxmYVNjaG9vbENpcmNsZVhtYXJrOlhGdCxmYUhhbmRMaXphcmQ6UUZ0LGZhQ2hhbGtib2FyZDpaN2UsZmFCbGFja2JvYXJkOkpGdCxmYVVwUmlnaHRGcm9tU3F1YXJlOlg3ZSxmYUV4dGVybmFsTGlua0FsdDplQnQsZmFTcXVhcmVGdWxsOnRCdCxmYUNsb3ZlcjphQnQsZmFUZWV0aE9wZW46c0J0LGZhQmFyc1N0YWdnZXJlZDpjb2UsZmFSZW9yZGVyOmlCdCxmYVN0cmVhbTpyQnQsZmFXYXJlaG91c2U6b0J0LGZhU3dhdGNoYm9vazpuQnQsZmFDYW1wZ3JvdW5kOmxCdCxmYVBlcnNvbldhbGtpbmdBcnJvd1JpZ2h0OmNCdCxmYUdsYXNzZXM6ZEJ0LGZhQ2lyY2xlUGF1c2U6UTdlLGZhUGF1c2VDaXJjbGU6dUJ0LGZhTWVtb3J5OnBCdCxmYUdpZnQ6aEJ0LGZhTW9uZXlCaWxsV2hlYXQ6ZkJ0LGZhRHVuZ2VvbjptQnQsZmFTdWl0Y2FzZU1lZGljYWw6SjdlLGZhTWVka2l0OmdCdCxmYVBlcnNvbkNhbmU6YkJ0LGZhR2F1Z2U6WGssZmFEYXNoYm9hcmQ6dkJ0LGZhR2F1Z2VNZWQ6eEJ0LGZhVGFjaG9tZXRlckFsdEF2ZXJhZ2U6eUJ0LGZhRW52ZWxvcGVPcGVuVGV4dDp3QnQsZmFUb29sYm94OmtCdCxmYVBvd2VyT2ZmOlNCdCxmYVNpZ25hbDpkb2UsZmFTaWduYWw1Ol9CdCxmYVNpZ25hbFBlcmZlY3Q6TUJ0LGZhQXJyb3dzU3Bpbjp6QnQsZmFKb2ludDpDQnQsZmFCcmFpbGxlOlRCdCxmYUJhc2tldFNob3BwaW5nOmU5ZSxmYVNob3BwaW5nQmFza2V0OiRCdCxmYUJyaWRnZTpEQnQsZmFQbGFuZUFycml2YWw6TEJ0LGZhQ2FzaFJlZ2lzdGVyOkVCdCxmYVJpbmc6UEJ0LGZhQXF1YXJpdXM6SUJ0LGZhU2hhcmVOb2Rlczp0OWUsZmFTaGFyZUFsdDpBQnQsZmFQZXJzb25DaXJjbGVFeGNsYW1hdGlvbjpOQnQsZmFCaW5vY3VsYXJzOlJCdCxmYUtpcFNpZ246T0J0LGZhSGFyZERyaXZlOmE5ZSxmYUhkZDpGQnQsZmFSYW5raW5nU3RhcjpCQnQsZmFVc2VyVGllOkhCdCxmYUVsbGlwc2lzOnM5ZSxmYUVsbGlwc2lzSDpxQnQsZmFTdG9yZVNsYXNoOmpCdCxmYVBlcmNlbnQ6aTllLGZhUGVyY2VudGFnZTpWQnQsZmFGaWxlWmlwcGVyOnI5ZSxmYUZpbGVBcmNoaXZlOlVCdCxmYURpc3BsYXk6V0J0LGZhSWNvbnM6bzllLGZhSGVhcnRNdXNpY0NhbWVyYUJvbHQ6R0J0LGZhUnVsZXJWZXJ0aWNhbDpLQnQsZmFNYXBMb2NhdGlvbkRvdDpuOWUsZmFNYXBNYXJrZWRBbHQ6WUJ0LGZhSGVhcnRDcmFjazpsOWUsZmFIZWFydEJyb2tlbjpaQnQsZmFDb3c6WEJ0LGZhUnNzOm9mLGZhRmVlZDpRQnQsZmFNYWduaWZ5aW5nR2xhc3M6bmYsZmFTZWFyY2g6SkJ0LGZhQ2xvdWRNb29uOmVIdCxmYUJveGVzU3RhY2tlZDp1b2UsZmFCb3hlczp0SHQsZmFCb3hlc0FsdDphSHQsZmFDb2RlQnJhbmNoOnNIdCxmYUJhbjpjOWUsZmFDYW5jZWw6aUh0LGZhSnVnRGV0ZXJnZW50OnJIdCxmYVJlcGx5OmQ5ZSxmYU1haWxSZXBseTpvSHQsZmFTdW5QbGFudFdpbHQ6bkh0LGZhQmFjdGVyaXVtOmxIdCxmYVJlY29yZFZpbnlsOmNIdCxmYUZsb3BweURpc2s6dTllLGZhU2F2ZTpkSHQsZmFUb2lsZXRzUG9ydGFibGU6dUh0LGZhTzpwSHQsZmFQYWxldHRlOmhIdCxmYVVubG9jazpmSHQsZmFFYXJMaXN0ZW46cDllLGZhQXNzaXN0aXZlTGlzdGVuaW5nU3lzdGVtczptSHQsZmFDb2RlUHVsbFJlcXVlc3Q6Z0h0LGZhS2V5OmJIdCxmYVNrdWxsOnZIdCxmYU1hcnNTdHJva2VVcDpoOWUsZmFNYXJzU3Ryb2tlVjp4SHQsZmFGaXJlRmxhbWVTaW1wbGU6ZjllLGZhQnVybjp5SHQsZmFUcmVlOndIdCxmYVNtb2c6a0h0LGZhUzpTSHQsZmFKZWRpOl9IdCxmYVBlcnNvbkhpa2luZzptOWUsZmFIaWtpbmc6TUh0LGZhQXJyb3dzVXBUb0xpbmU6ekh0LGZhTWFyc0RvdWJsZTpDSHQsZmFUaGVybW9tZXRlcjpUSHQsZmFQYWludGJydXNoOmc5ZSxmYVBhaW50QnJ1c2g6JEh0LGZhTmV1dGVyOkRIdCxmYVNxdWFyZVBob25lRmxpcDpiOWUsZmFQaG9uZVNxdWFyZUFsdDpMSHQsZmFGYWNlR3JpblRvbmd1ZVNxdWludDp2OWUsZmFHcmluVG9uZ3VlU3F1aW50OkVIdCxmYUNvbW1lbnREb2xsYXI6UEh0LGZhSGlwcG86SUh0LGZhQm93bEZvb2Q6QUh0LGZhU3F1YXJlVmlydXM6Tkh0LGZhQ2xvdWRTdW5SYWluOlJIdCxmYUFycm93UmlnaHRMb25nOng5ZSxmYUxvbmdBcnJvd1JpZ2h0Ok9IdCxmYUJ1aWxkaW5nVW46Rkh0LGZhVGVtcGVyYXR1cmVMb3c6Qkh0LGZhRG9vck9wZW46SEh0LGZhQWxpZ25MZWZ0OnFIdCxmYUNhbWVyYTp5OWUsZmFDYW1lcmFBbHQ6akh0LGZhVXNlcnNSYXlzOlZIdCxmYVJhaW5ib3c6VUh0LGZhU2l0ZW1hcDpXSHQsZmFGYWNlR3JpblN0YXJzOnc5ZSxmYUdyaW5TdGFyczpHSHQsZmFTb3J0VXA6azllLGZhU29ydEFzYzpLSHQsZmFFeWU6SGIsZmFDYXJldExlZnQ6cWIsZmFBcHBsZVdob2xlOlM5ZSxmYUFwcGxlQWx0OllIdCxmYVNjcm9sbFRvcmFoOl85ZSxmYVRvcmFoOlpIdCxmYUhvdXNlTG9jazpYSHQsZmFBcnJvd3NMZWZ0UmlnaHRUb0xpbmU6UUh0LGZhVHJhc2g6ZmgsZmFGYWNlU2FkVGVhcjpNOWUsZmFTYWRUZWFyOkpIdCxmYUZheDplcXQsZmFQZXJzb25DaXJjbGVQbHVzOnRxdCxmYUhhbXNhOmFxdCxmYVBlcnNvbkNpcmNsZVF1ZXN0aW9uOnNxdCxmYUNsaXBib2FyZENoZWNrOmlxdCxmYVNoYXJlRnJvbVNxdWFyZTp6OWUsZmFTaGFyZVNxdWFyZTpycXQsZmFSZWNlaXB0OmpiLGZhRXF1YWxzOm9xdCxmYUNoZXZyb25VcDpucXQsZmFWaXJ1c1NsYXNoOmxxdCxmYVNsYXNoOmNxdCxmYUV4cGFuZDpkcXQsZmFOb3RlU3RpY2t5OkM5ZSxmYVN0aWNreU5vdGU6dXF0LGZhVGFibGVDb2x1bW5zOlQ5ZSxmYUNvbHVtbnM6cHF0LGZhUGVyc29uU2hlbHRlcjpocXQsZmFDaXJjbGVOb3RjaDpmcXQsZmFXYXRlcjptcXQsZmFEZWxldGVMZWZ0OiQ5ZSxmYUJhY2tzcGFjZTpncXQsZmFCcm9vbUJhbGw6cG9lLGZhUXVpZGRpdGNoOmJxdCxmYVF1aWRkaXRjaEJyb29tQmFsbDp2cXQsZmFKOnhxdCxmYVNodXR0bGVTcGFjZTpEOWUsZmFTcGFjZVNodXR0bGU6eXF0LGZhWWluWWFuZzp3cXQsZmFTdG9wOmtxdCxmYVRyb3dlbDpTcXQsZmFIYW5kQmFja0Zpc3Q6TDllLGZhSGFuZFJvY2s6X3F0LGZhVGVtcGVyYXR1cmVIaWdoOk1xdCxmYUdyZWF0ZXJUaGFuOnpxdCxmYUNydXRjaDpDcXQsZmFTZXB0YWdvbjpFOWUsZmFIZXB0YWdvbjpUcXQsZmFTdHJlZXRWaWV3OiRxdCxmYVdhdmVTcXVhcmU6RHF0LGZhQW5nbGVMZWZ0OkxxdCxmYVNjcmV3ZHJpdmVyOkVxdCxmYVRyYWN0b3I6UHF0LGZhQnJpZGdlQ2lyY2xlWG1hcms6SXF0LGZhVmlhbHM6QXF0LGZhU3RldGhvc2NvcGU6TnF0LGZhUG9kY2FzdDpScXQsZmFBcnJvd1VwUmlnaHREb3RzOk9xdCxmYUNoZXNzUXVlZW46RnF0LGZhQW5jaG9yQ2lyY2xlRXhjbGFtYXRpb246QnF0LGZhRWxsaXBzaXNWZXJ0aWNhbDpQOWUsZmFFbGxpcHNpc1Y6SHF0LGZhSGVhcnRDaXJjbGVFeGNsYW1hdGlvbjpxcXQsZmFCdWlsZGluZ0NpcmNsZUV4Y2xhbWF0aW9uOmpxdCxmYVBlcnNvbkFycm93VXBGcm9tTGluZTpWcXQsZmFOb3RFcXVhbDpVcXQsZmFUcmFpblRyYW06V3F0LGZhUGxhbmVEZXBhcnR1cmU6R3F0LGZhUmlnaHRUb0JyYWNrZXQ6STllLGZhU2lnbkluQWx0OktxdCxmYVNkQ2FyZDpZcXQsZmFIb3VzZUNpcmNsZUV4Y2xhbWF0aW9uOlpxdCxmYVNoZWtlbFNpZ246SWIsZmFJbHM6WHF0LGZhU2hla2VsOlFxdCxmYVNoZXFlbDpKcXQsZmFTaGVxZWxTaWduOmVqdCxmYVJhZGlvOnRqdCxmYUhhbmREb3RzOkE5ZSxmYUFsbGVyZ2llczphanQsZmFCb29rU2t1bGw6TjllLGZhQm9va0RlYWQ6c2p0LGZhVW5sb2NrS2V5aG9sZTpSOWUsZmFVbmxvY2tBbHQ6aWp0LGZhRmlsZUFycm93VXA6TzllLGZhRmlsZVVwbG9hZDpyanQsZmFGYWNlR3JpblRlYXJzOkY5ZSxmYUdyaW5UZWFyczpvanQsZmFQZW5Ub1NxdWFyZTpsZixmYUVkaXQ6bmp0LGZhRWFydGhFdXJvcGU6QjllLGZhR2xvYmVFdXJvcGU6bGp0LGZhRmFjZUdyaW5CZWFtU3dlYXQ6SDllLGZhR3JpbkJlYW1Td2VhdDpjanQsZmFDaXJjbGVIYWxmU3Ryb2tlOnE5ZSxmYUFkanVzdDpkanQsZmFQZXJzb25NaWxpdGFyeVRvUGVyc29uOnVqdCxmYVRhYmxlQ2VsbHNDb2x1bW5Mb2NrOnBqdCxmYVRydWNrRmllbGRVbjpoanQsZmFDbG9jazpqOWUsZmFDbG9ja0ZvdXI6Zmp0LGZhQm9vazptanQsZmFGYWNlTGF1Z2hXaW5rOlY5ZSxmYUxhdWdoV2luazpnanQsZmFDbG91ZE1lYXRiYWxsOmJqdCxmYUNoYXJ0QXJlYTpVOWUsZmFBcmVhQ2hhcnQ6dmp0LGZhUnVwaWFoU2lnbjp4anQsZmFUZXh0V2lkdGg6eWp0LGZhU2F0ZWxsaXRlOndqdCxmYU1hZ25pZnlpbmdHbGFzc01pbnVzOlc5ZSxmYVNlYXJjaE1pbnVzOmtqdCxmYVBlb3BsZUdyb3VwOlNqdCxmYVNxdWFyZUJpbmFyeTpfanQsZmFNYXNrc1RoZWF0ZXI6RzllLGZhVGhlYXRlck1hc2tzOk1qdCxmYUNhcnRQbHVzOnpqdCxmYUhhbmRzQXNsSW50ZXJwcmV0aW5nOlFrLGZhQW1lcmljYW5TaWduTGFuZ3VhZ2VJbnRlcnByZXRpbmc6Q2p0LGZhQXNsSW50ZXJwcmV0aW5nOlRqdCxmYUhhbmRzQW1lcmljYW5TaWduTGFuZ3VhZ2VJbnRlcnByZXRpbmc6JGp0LGZhVGFibGVDZWxsc1Jvd1VubG9jazpEanQsZmFSb2NrZXQ6TGp0LGZhU2hyaW1wOkVqdCxmYVRlbmdlU2lnbjpLOWUsZmFUZW5nZTpQanQsZmFIb3VzZUNoaW1uZXlNZWRpY2FsOlk5ZSxmYUNsaW5pY01lZGljYWw6SWp0LGZhVXNlcnNTbGFzaDpBanQsZmFQYXBlclBsYW5lOk5qdCxmYUJvb2tBdGxhczpaOWUsZmFBdGxhczpSanQsZmFUYWJsZTpPanQsZmFIZWFydDpGanQsZmFDaXJjbGVDaGV2cm9uVXA6WDllLGZhQ2hldnJvbkNpcmNsZVVwOkJqdCxmYUJhdHRlcnlIYWxmOlE5ZSxmYUJhdHRlcnkzOkhqdCxmYUZvbnRBd2Vzb21lOmhvZSxmYUZvbnRBd2Vzb21lRmxhZzpxanQsZmFGb250QXdlc29tZUxvZ29GdWxsOmpqdCxmYUhhbmRjdWZmczpWanQsZmFIYXRDb3dib3lTaWRlOlVqdCxmYUluZHVzdHJ5OldqdCxmYUxpbmVzTGVhbmluZzpHanQsZmFQYXNzcG9ydDpLanQsZmFJbmZpbml0eTpZanQsZmFDbG9uZTpaanQsZmFGb3J3YXJkOlhqdCxmYU06UWp0LGZhUm9hZFNwaWtlczpKanQsZmFNb3VudGFpbjplVnQsZmFDaGVzczp0VnQsZmFUZW1wZXJhdHVyZVRocmVlUXVhcnRlcnM6SmssZmFUZW1wZXJhdHVyZTM6YVZ0LGZhVGhlcm1vbWV0ZXIzOnNWdCxmYVRoZXJtb21ldGVyVGhyZWVRdWFydGVyczppVnQsZmFCOnJWdCxmYVNoaWVsZFZpcnVzOm9WdCxmYUxpdGVjb2luU2lnbjpuVnQsZmFEaWNlRDY6bFZ0LGZhR3JpcExpbmVzVmVydGljYWw6Y1Z0LGZhR29sZkJhbGxUZWU6SjllLGZhR29sZkJhbGw6ZFZ0LGZhSGV4YWdvbjp1VnQsZmFGb2xkZXJPcGVuOnBWdCxmYUthYWJhOmhWdCxmYUhhbmRIb2xkaW5nOmZWdCxmYVNpbmdsZVF1b3RlUmlnaHQ6bVZ0LGZhQm90dGxlRHJvcGxldDpnVnQsZmFXaW5kb3dNaW5pbWl6ZTpiVnQsZmFDaGV2cm9uUmlnaHQ6dlZ0LGZhRWdnOnhWdCxmYUxhbmRtYXJrRG9tZTplYmUsZmFMYW5kbWFya0FsdDp5VnQsZmFXb3JtOndWdCxmYVVzZXJJbmp1cmVkOmtWdCxmYVN0cmlrZXRocm91Z2g6U1Z0LGZhQmxvZzpfVnQsZmFTdG9wd2F0Y2gyMDpNVnQsZmFUcnVja1BpY2t1cDp6VnQsZmFTZWVkbGluZzp0YmUsZmFTcHJvdXQ6Q1Z0LGZhVHJhbnNnZW5kZXI6YWJlLGZhVHJhbnNnZW5kZXJBbHQ6VFZ0LGZhU3RhckhhbGY6JFZ0LGZhUGhvdG9GaWxtOnNiZSxmYVBob3RvVmlkZW86RFZ0LGZhUGljdHVyZUluUGljdHVyZTpMVnQsZmFQdW1wTWVkaWNhbDpFVnQsZmFGaXJlOlBWdCxmYU1hZ25pZnlpbmdHbGFzc1BsdXM6aWJlLGZhU2VhcmNoUGx1czpJVnQsZmFGbGFzazpBVnQsZmFBbGlnblJpZ2h0Ok5WdCxmYUNhYmxlQ2FyOnJiZSxmYVRyYW06UlZ0LGZhS2l0TWVkaWNhbDpvYmUsZmFGaXJzdEFpZDpPVnQsZmFHcmlwTGluZXM6RlZ0LGZhQnVyZ2VyOm5iZSxmYUhhbWJ1cmdlcjpCVnQsZmFTbm93bWFuOkhWdCxmYUhvdGVsOnFWdCxmYVByaW50OmpWdCxmYVZvbGxleWJhbGw6bGJlLGZhVm9sbGV5YmFsbEJhbGw6VlZ0LGZhVHJhZmZpY0xpZ2h0OlVWdCxmYVBsYW5lQ2lyY2xlQ2hlY2s6V1Z0LGZhVXNlcnM6VmIsZmFDZXJ0aWZpY2F0ZTpHVnQsZmFBbGFybUNsb2NrOktWdCxmYUhlbGljb3B0ZXJTeW1ib2w6WVZ0LGZhSG91c2VDaGltbmV5Q3JhY2s6Y2JlLGZhSG91c2VEYW1hZ2U6WlZ0LGZhUGVyc29uTWlsaXRhcnlQb2ludGluZzpYVnQsZmFEYXRhYmFzZTpRVnQsZmFOZXdzcGFwZXI6SlZ0LGZhQ2xvdWRSYWluOmVVdCxmYU1heGltaXplOmRiZSxmYUV4cGFuZEFycm93c0FsdDp0VXQsZmFMb2NhdGlvbkFycm93OmFVdCxmYUNpdHk6c1V0LGZhWFJheTppVXQsZmFVbWJyZWxsYUJlYWNoOnJVdCxmYUFycm93UmlnaHRUb0JyYWNrZXQ6dWJlLGZhU2lnbkluOm9VdCxmYUhlYWRzZXQ6blV0LGZhU3Bsb3RjaDpsVXQsZmFVcExvbmc6cGJlLGZhTG9uZ0Fycm93QWx0VXA6Y1V0LGZhSGV4YWdvbk5vZGVzOmRVdCxmYUhvc3BpdGFsOmZvZSxmYUhvc3BpdGFsQWx0OnVVdCxmYUhvc3BpdGFsV2lkZTpwVXQsZmFQZXJzb25IYXJhc3Npbmc6aFV0LGZhTW9uZXlCaWxsVHJlbmRVcDpmVXQsZmFQZW5SdWxlcjpoYmUsZmFQZW5jaWxSdWxlcjptVXQsZmFSZXBlYXQ6Z1V0LGZhQm9uZTpiVXQsZmFGaXJlRmxhbWVDdXJ2ZWQ6ZmJlLGZhRmlyZUFsdDp2VXQsZmFCdXNTaW1wbGU6bWJlLGZhQnVzQWx0OnhVdCxmYVZlbnVzTWFyczp5VXQsZmFCbGVuZGVyOndVdCxmYVU6a1V0LGZhU2hhcmU6Y2YsZmFNYWlsRm9yd2FyZDpTVXQsZmFQaG9uZUZsaXA6Z2JlLGZhUGhvbmVBbHQ6X1V0LGZhVG9pbGV0UG9ydGFibGU6TVV0LGZhUGVyc29uUHJlZ25hbnQ6elV0LGZhTGVzc1RoYW46Q1V0LGZhU3VwZXJzY3JpcHQ6VFV0LGZhQ2lyY2xlU3RvcDpiYmUsZmFTdG9wQ2lyY2xlOiRVdCxmYUFycm93c1VwRG93bjp2YmUsZmFBcnJvd3NWOkRVdCxmYVBvb1N0b3JtOnhiZSxmYVBvb0JvbHQ6TFV0LGZhVmlkZW9TbGFzaDpFVXQsZmFTcXVhcmVYbWFyazptb2UsZmFUaW1lc1NxdWFyZTpQVXQsZmFYbWFya1NxdWFyZTpJVXQsZmFIYW5kSG9sZGluZ0Ryb3BsZXQ6eWJlLGZhSGFuZEhvbGRpbmdXYXRlcjpBVXQsZmFXb25TaWduOmdvZSxmYUtydzpOVXQsZmFXb246UlV0LGZhT2JqZWN0VW5ncm91cDpPVXQsZmFDb21tZW50OkZVdCxmYUhpbGxBdmFsYW5jaGU6QlV0LGZhQXJyb3dzVG9FeWU6SFV0LGZhU25vd3Bsb3c6cVV0LGZhQ2hhcnRHYW50dDpqVXQsZmFWaWRlbzp3YmUsZmFWaWRlb0NhbWVyYTpWVXQsZmFDaGVzc1Bhd246VVV0LGZhU3luYWdvZ3VlOldVdCxmYUJ1aWxkaW5nQ2lyY2xlQ2hlY2s6R1V0LGZhQ2FsZW5kYXJQbHVzOktVdCxmYVdoZWVsY2hhaXJNb3ZlOmtiZSxmYVdoZWVsY2hhaXJBbHQ6WVV0LGZhVXNlclNoaWVsZDpaVXQsZmFCb2xkOlhVdCxmYUhlYXJ0UHVsc2U6U2JlLGZhSGVhcnRiZWF0OlFVdCxmYVNxdWFyZVJvb3RWYXJpYWJsZTpfYmUsZmFTcXVhcmVSb290QWx0OkpVdCxmYUhhbmRzQnViYmxlczpNYmUsZmFIYW5kc1dhc2g6ZVd0LGZhTWFya2VyOnRXdCxmYUNsaXBib2FyZDphV3QsZmFQbGFjZU9mV29yc2hpcDpzV3QsZmFDYW5uYWJpczppV3QsZmFQZW9wbGVSb29mOnJXdCxmYURpc2Vhc2U6b1d0LGZhQm9va0JpYmxlOnpiZSxmYUJpYmxlOm5XdCxmYUNoZXNzQm9hcmQ6bFd0LGZhTWFyczpjV3QsZmFMYXB0b3A6ZFd0LGZhVXNlclhtYXJrOkNiZSxmYVVzZXJUaW1lczp1V3QsZmFGbGFnVXNhOnBXdCxmYUhhbmRNaWRkbGVGaW5nZXI6aFd0LGZhTW9ydGFyUGVzdGxlOmZXdCxmYUhlYWRTaWRlQ291Z2g6bVd0LGZhUGxhbmVMb2NrOmdXdCxmYUJhdHRlcnlUaHJlZVF1YXJ0ZXJzOlRiZSxmYUJhdHRlcnk0OmJXdCxmYUZyYW5jU2lnbjp2V3QsZmFGaWx0ZXJDaXJjbGVEb2xsYXI6JGJlLGZhRnVubmVsRG9sbGFyOnhXdCxmYUNoZWVzZTp5V3QsZmFDaXJjbGVIOkRiZSxmYUhvc3BpdGFsU3ltYm9sOndXdCxmYVNjaG9vbDprV3QsZmFEaWNlRml2ZTpTV3QsZmFUb3JuYWRvOl9XdCxmYUpldEZpZ2h0ZXI6TGJlLGZhRmlnaHRlckpldDpNV3QsZmFUaHVtYnNEb3duOnpXdCxmYUJyb29tOkNXdCxmYUZpbGVJbXBvcnQ6RWJlLGZhQXJyb3dSaWdodFRvRmlsZTpUV3QsZmFVdGVuc2lsczpQYmUsZmFDdXRsZXJ5OiRXdCxmYUlkQmFkZ2U6RFd0LGZhU3BpZGVyOkxXdCxmYU1vYmlsZVJldHJvOkVXdCxmYVNpZ25zUG9zdDpJYmUsZmFNYXBTaWduczpQV3QsZmFHcm91cEFycm93c1JvdGF0ZTpJV3QsZmFBcnJvd3NTcGxpdFVwQW5kTGVmdDpBV3QsZmFGaWxsRHJpcDpOV3QsZmFTaGllbGRIZWFydDpSV3QsZmFQZXJzb25Ta2lpbmdOb3JkaWM6QWJlLGZhU2tpaW5nTm9yZGljOk9XdCxmYVNxdWFyZUNoZWNrOk5iZSxmYUNoZWNrU3F1YXJlOkZXdCxmYUJhdGg6UmJlLGZhQmF0aHR1YjpCV3QsZmFDaGVzc0Jpc2hvcDpIV3QsZmFQcmVzY3JpcHRpb25Cb3R0bGVNZWRpY2FsOk9iZSxmYVByZXNjcmlwdGlvbkJvdHRsZUFsdDpxV3QsZmFEcmF3UG9seWdvbjpGYmUsZmFWZWN0b3JQb2x5Z29uOmpXdCxmYUlDdXJzb3I6Vld0LGZhSGVhcnRDaXJjbGVQbHVzOlVXdCxmYVNoaWVsZERvZzpXV3QsZmFHcmVhdGVyVGhhbkVxdWFsOkdXdCxmYUVudmVsb3BlT3BlbjpLV3QsZmFNb3VuZDpZV3QsZmFWb2ljZW1haWw6Wld0LGZhVmVzdDpYV3QsZmFBdWRpb0Rlc2NyaXB0aW9uOlFXdCxmYVc6Sld0LGZhRXllRHJvcHBlcjpib2UsZmFFeWVEcm9wcGVyRW1wdHk6ZUd0LGZhRXllZHJvcHBlcjp0R3QsZmFDaXJjbGVYbWFyazpwaCxmYVRpbWVzQ2lyY2xlOmFHdCxmYVhtYXJrQ2lyY2xlOnNHdCxmYVRyYWlsZXI6aUd0LGZhVHVya2lzaExpcmFTaWduOnZvZSxmYVRyeTpyR3QsZmFUdXJraXNoTGlyYTpvR3QsZmFWb2xjYW5vOm5HdCxmYVdhbmRTcGFya2xlczpsR3QsZmFNaWNyb3Bob25lOmNHdCxmYUNyb3duOmRHdCxmYVRlbnRBcnJvd1R1cm5MZWZ0OnVHdCxmYVRydWNrRmFzdDpCYmUsZmFTaGlwcGluZ0Zhc3Q6cEd0LGZhVXNlclBlbjpIYmUsZmFVc2VyRWRpdDpoR3QsZmFVc2VyQ2xvY2s6Zkd0LGZhU2hvd2VyOm1HdCxmYVNxdWFyZUNhcmV0VXA6cWJlLGZhQ2FyZXRTcXVhcmVVcDpnR3QsZmFNYXBMb2NhdGlvbjpqYmUsZmFNYXBNYXJrZWQ6Ykd0LGZhUGVuRmFuY3k6dkd0LGZhRXVyb1NpZ246eG9lLGZhRXVyOnhHdCxmYUV1cm86eUd0LGZhSG91c2VDaXJjbGVYbWFyazp3R3QsZmFMaXJhU2lnbjprR3QsZmFZZW5TaWduOkFiLGZhQ255OlNHdCxmYUpweTpfR3QsZmFSbWI6TUd0LGZhWWVuOnpHdCxmYUJveE9wZW46Q0d0LGZhVHJ1Y2tGaWVsZDpUR3QsZmFMb2NhdGlvblBpbkxvY2s6JEd0LGZhUGVyc29uUHJheWluZzpWYmUsZmFQcmF5OkRHdCxmYUNsaXBib2FyZExpc3Q6TEd0LGZhU2Fja0RvbGxhcjpFR3QsZmFNb3VudGFpblN1bjpQR3QsZmFBcnJvd1VwV2lkZVNob3J0OlViZSxmYVNvcnRBbW91bnRVcDpJR3QsZmFVc2Vyc0xpbmU6QUd0LGZhU3Rhck9mRGF2aWQ6Tkd0LGZhTm90ZXNNZWRpY2FsOlJHdCxmYUF1c3RyYWxTaWduOk9HdCxmYUNsaXBib2FyZFVzZXI6Rkd0LGZhRmlsZUltYWdlOkJHdCxmYVNxdWFyZUNhcmV0UmlnaHQ6V2JlLGZhQ2FyZXRTcXVhcmVSaWdodDpIR3QsZmFWaWFsOnFHdCxmYUhlbGljb3B0ZXI6akd0LGZhTWl0dGVuOlZHdCxmYUdhc1B1bXA6VUd0LGZhRW52ZWxvcGVDaXJjbGVDaGVjazpXR3QsZmFQZXJzb25Ta2F0aW5nOkdiZSxmYVNrYXRpbmc6R0d0LGZhU3VuOlViLGZhQmFzZWJhbGw6S2JlLGZhQmFzZWJhbGxCYWxsOktHdCxmYUltYWdlOllHdCxmYU5vdGRlZjpaR3QsZmFCYXNrZXRiYWxsOlliZSxmYUJhc2tldGJhbGxCYWxsOlhHdCxmYVBlbmNpbDpaYmUsZmFQZW5jaWxBbHQ6UUd0LGZhUGVyc29uV2Fsa2luZ0Fycm93TG9vcExlZnQ6Skd0LGZhRGljZVNpeDplS3QsZmFBbmdsZXNEb3duOlhiZSxmYUFuZ2xlRG91YmxlRG93bjp0S3QsZmFTeXJpbmdlOmFLdCxmYVdoZWF0QXduOlFiZSxmYVdoZWF0QWx0OnNLdCxmYVBsYW5lVXA6aUt0LGZhQWxpZ25DZW50ZXI6ckt0LGZhSG9ja2V5UHVjazpvS3QsZmFDaXJjbGVBcnJvd0xlZnQ6SmJlLGZhQXJyb3dDaXJjbGVMZWZ0Om5LdCxmYVBsdWdDaXJjbGVCb2x0OmxLdCxmYVJlc3Ryb29tOmNLdCxmYUFuY2hvckxvY2s6ZEt0LGZhVGltZWxpbmU6dUt0LGZhTGlnaHRidWxiOnBLdCxmYUNpcmNsZUFycm93UmlnaHQ6ZXZlLGZhQXJyb3dDaXJjbGVSaWdodDpoS3QsZmFNYXJzQW5kVmVudXM6Zkt0LGZhTmV0d29ya1dpcmVkOldiLGZhQnVpbGRpbmdTaGllbGQ6bUt0LGZhQ29kZTpnS3QsZmFGZWF0aGVyUG9pbnRlZDp0dmUsZmFGZWF0aGVyQWx0OmJLdCxmYUZpbGVDaXJjbGVRdWVzdGlvbjp2S3QsZmFTaWduYXR1cmU6eEt0LGZhRWFydGhBbWVyaWNhczplUyxmYUVhcnRoOnlLdCxmYUVhcnRoQW1lcmljYTp3S3QsZmFHbG9iZUFtZXJpY2FzOmtLdCxmYUNhcnJvdDpTS3QsZmFUZW1wZXJhdHVyZUZ1bGw6dFMsZmFUZW1wZXJhdHVyZTQ6X0t0LGZhVGhlcm1vbWV0ZXI0Ok1LdCxmYVRoZXJtb21ldGVyRnVsbDp6S3QsZmFUYWJsZUNlbGxzUm93TG9jazpDS3QsZmFCb2x0TGlnaHRuaW5nOlRLdCxmYUNsb3VkU2hvd2Vyc1dhdGVyOiRLdCxmYUFycm93VXBMb25nOmF2ZSxmYUxvbmdBcnJvd1VwOkRLdCxmYUFkZHJlc3NDYXJkOnlvZSxmYUNvbnRhY3RDYXJkOkxLdCxmYVZjYXJkOkVLdCxmYUFuZ2xlUmlnaHQ6UEt0LGZhRmFjZU1laDpzdmUsZmFNZWg6SUt0LGZhQXJyb3dVcEZyb21Hcm91bmRXYXRlcjpBS3QsZmFNYXA6Tkt0LGZhVXNlclBsdXM6Ukt0LGZhVmVudXM6T0t0LGZhRGlhZ3JhbVN1Y2Nlc3NvcjpGS3QsZmFIZWFkU2lkZUNvdWdoU2xhc2g6Qkt0LGZhRGlhZ3JhbVByb2plY3Q6aXZlLGZhUHJvamVjdERpYWdyYW06SEt0LGZhVGVybWluYWw6R2IsZmFIb3VzZUZpcmU6cUt0LGZhTWFzazpqS3QsZmFIdXJyaWNhbmU6Vkt0LGZhRWFydGhBZnJpY2E6cnZlLGZhR2xvYmVBZnJpY2E6VUt0LGZhVGh1bWJ0YWNrOm92ZSxmYVRodW1iVGFjazpXS3QsZmFIYW5kUG9pbnREb3duOkdLdCxmYUZhY2VNZWhCbGFuazpudmUsZmFNZWhCbGFuazpLS3QsZmFUZW1wZXJhdHVyZUVtcHR5OmFTLGZhVGVtcGVyYXR1cmUwOllLdCxmYVRoZXJtb21ldGVyMDpaS3QsZmFUaGVybW9tZXRlckVtcHR5OlhLdCxmYUJvcmRlck5vbmU6UUt0LGZhSGlnaGxpZ2h0ZXI6Skt0LGZhTW9uZXlCaWxsV2F2ZTplWXQsZmFUb2lsZXRQYXBlclNsYXNoOnRZdCxmYUZpbGVTaGllbGQ6YVl0LGZhVGV4dEhlaWdodDpzWXQsZmFGYWNlR3JpblRvbmd1ZTpsdmUsZmFHcmluVG9uZ3VlOmlZdCxmYUZpbGVTaWduYXR1cmU6cll0LGZhQnVpbGRpbmdXaGVhdDpvWXQsZmFQbHVnQ2lyY2xlTWludXM6bll0LGZhRnV0Ym9sOndvZSxmYUZ1dGJvbEJhbGw6bFl0LGZhU29jY2VyQmFsbDpjWXQsZmFDaXJjbGVQbHVzOmN2ZSxmYVBsdXNDaXJjbGU6ZFl0LGZhQnJhemlsaWFuUmVhbFNpZ246dVl0LGZhU3RhckFuZENyZXNjZW50OnBZdCxmYUZhY2VTdXJwcmlzZTpkdmUsZmFTdXJwcmlzZTpoWXQsZmFIb3NwaXRhbFVzZXI6Zll0LGZhQXJyb3dEb3duVXBMb2NrOm1ZdCxmYUZvbGRlcjp1dmUsZmFGb2xkZXJCbGFuazpnWXQsZmFIb2xseUJlcnJ5OmJZdCxmYVZlbnVzRG91YmxlOnZZdCxmYUNsaXBib2FyZFF1ZXN0aW9uOnhZdCxmYUhvdGRvZzp5WXQsZmFBcnJvd1VwRnJvbUJyYWNrZXQ6d1l0LGZhTWljcm9zY29wZTprWXQsZmFDbG91ZDpTWXQsZmFCYXNlYmFsbEJhdEJhbGw6X1l0LGZhQ2FyUmVhcjpwdmUsZmFDYXJBbHQ6TVl0LGZhVGh1bWJ0YWNrU2xhc2g6aHZlLGZhVGh1bWJUYWNrU2xhc2g6ell0LGZhUGx1c01pbnVzOkNZdCxmYUhvdXNlQ2lyY2xlQ2hlY2s6VFl0LGZhQ2FsZW5kYXJEYXk6JFl0LGZhTGlicmE6RFl0LGZhQ2lyY2xlOkxZdCxmYU1vYmlsZVZpYnJhdGU6RVl0LGZhRmFjZUdyaW5TcXVpbnQ6ZnZlLGZhR3JpblNxdWludDpQWXQsZmFVc2Vyc0JldHdlZW5MaW5lczpJWXQsZmFIb3VzZU1lZGljYWxDaXJjbGVYbWFyazpBWXQsZmFUYWJsZUxpc3Q6bXZlLGZhVGhMaXN0Ok5ZdCxmYUZsYXNrVmlhbDpSWXQsZmFDaXJjbGVFeGNsYW1hdGlvbjpndmUsZmFFeGNsYW1hdGlvbkNpcmNsZTpPWXQsZmFUYXhpOmJ2ZSxmYUNhYjpGWXQsZmFUZXh0U2xhc2g6dnZlLGZhUmVtb3ZlRm9ybWF0OkJZdCxmYVBlb3BsZVB1bGxpbmc6SFl0LGZhQmFja3dhcmQ6cVl0LGZhQ2FyQnVyc3Q6eHZlLGZhQ2FyQ3Jhc2g6all0LGZhTGluazp5dmUsZmFDaGFpbjpWWXQsZmFCYWNrd2FyZFN0ZXA6d3ZlLGZhU3RlcEJhY2t3YXJkOlVZdCxmYVg6V1l0LGZhQ2lyY2xlVXNlcjprdmUsZmFVc2VyQ2lyY2xlOkdZdCxmYVJlY3RhbmdsZUxpc3Q6U3ZlLGZhTGlzdEFsdDpLWXQsZmFIYW5kOl92ZSxmYUhhbmRQYXBlcjpZWXQsZmFDYW5jZXI6Wll0LGZhVmFuU2h1dHRsZTpNdmUsZmFTaHV0dGxlVmFuOlhZdCxmYVN0YWlyczpRWXQsZmFIb3JzZUhlYWQ6Sll0LGZhVmF1bHQ6ZVp0LGZhQ2xvc2VkQ2FwdGlvbmluZ1NsYXNoOnRadCxmYURydW1TdGVlbHBhbjphWnQsZmFUaHVtYnNVcDpzWnQsZmFTdGFtcDppWnQsZmFNZW5vcmFoOnJadCxmYUNoaWxkcmVuOm9adCxmYUNoYXJ0TGluZTp6dmUsZmFMaW5lQ2hhcnQ6blp0LGZhU3F1YXJlRW52ZWxvcGU6Q3ZlLGZhRW52ZWxvcGVTcXVhcmU6bFp0LGZhQmFuU21va2luZzpUdmUsZmFTbW9raW5nQmFuOmNadCxmYVRydWNrRnJvbnQ6ZFp0LGZhQnVpbGRpbmc6S2IsZmFCdWxsc2V5ZTp1WnQsZmFBcnJvd0xlZnRMb25nOiR2ZSxmYUxvbmdBcnJvd0xlZnQ6cFp0LGZhQ2hlc3NSb29rOmhadCxmYUJsZW5kZXJQaG9uZTpmWnQsZmFBcnJvd1R1cm5VcDpEdmUsZmFMZXZlbFVwOm1adCxmYUJpY3ljbGU6Z1p0LGZhQ2lyY2xlQXJyb3dEb3duOkx2ZSxmYUFycm93Q2lyY2xlRG93bjpiWnQsZmFHZWFyOmRmLGZhQ29nOnZadCxmYU1hcnNBbmRWZW51c0J1cnN0OnhadCxmYU90dGVyOnladCxmYUNpcmNsZUNoZXZyb25MZWZ0OkV2ZSxmYUNoZXZyb25DaXJjbGVMZWZ0OndadCxmYUNpcmNsZVF1ZXN0aW9uOlB2ZSxmYVF1ZXN0aW9uQ2lyY2xlOmtadCxmYVdhbGtpZVRhbGtpZTpTWnQsZmFVc2VyR3JvdXA6SXZlLGZhVXNlckZyaWVuZHM6X1p0LGZhSG91c2VDaGltbmV5OkF2ZSxmYUhvbWVMZzpNWnQsZmFSaWdodEZyb21CcmFja2V0Ok52ZSxmYVNpZ25PdXRBbHQ6elp0LGZhRmlsZTpDWnQsZmFQbGFuZVNsYXNoOlRadCxmYUNsb3VkU2hvd2Vyc0hlYXZ5OiRadCxmYVBlcnNvbkZhbGxpbmc6RFp0LGZhVHVybkRvd246UnZlLGZhTGV2ZWxEb3duQWx0OkxadCxmYVVwUmlnaHRBbmREb3duTGVmdEZyb21DZW50ZXI6T3ZlLGZhRXhwYW5kQWx0OkVadCxmYVVzZXJUYWc6UFp0LGZhSGFuZFNwYXJrbGVzOkladCxmYUFycm93c1RvRG90OkFadCxmYUZhY2VTYWRDcnk6RnZlLGZhU2FkQ3J5Ok5adCxmYURvbmdTaWduOlJadCxmYVBlb3BsZUxpbmU6T1p0LGZhU3F1YXJlUnNzOkJ2ZSxmYVJzc1NxdWFyZTpGWnQsZmFDYWxlbmRhck1pbnVzOkJadCxmYUNoYXJ0RGlhZ3JhbTpIWnQsZmFGYWNlVGlyZWQ6SHZlLGZhVGlyZWQ6cVp0LGZhSGFuZFBvaW50UmlnaHQ6alp0LGZhQXJyb3dVcDpWWnQsZmFDdWJlc1N0YWNrZWQ6VVp0LGZhQ2hpbGRDb21iYXRhbnQ6cXZlLGZhQ2hpbGRSaWZsZTpXWnQsZmFWZXN0UGF0Y2hlczpHWnQsZmFNYXJ0aW5pR2xhc3NFbXB0eTpqdmUsZmFHbGFzc01hcnRpbmk6S1p0LGZhTWFnbmV0OlladCxmYVJvYWRCYXJyaWVyOlpadCxmYUNvbXBhc3NEcmFmdGluZzpWdmUsZmFEcmFmdGluZ0NvbXBhc3M6WFp0LGZhU3F1YXJlUGVyc29uQ29uZmluZWQ6UVp0LGZhUGxhdGVXaGVhdDpKWnQsZmFTaWduSGFuZ2luZzpVdmUsZmFTaWduOmVYdCxmYUNhckJhdHRlcnk6V3ZlLGZhQmF0dGVyeUNhcjp0WHQsZmFTaGlydDprb2UsZmFUU2hpcnQ6YVh0LGZhVHNoaXJ0OnNYdCxmYVBhcmFncmFwaDppWHQsZmFFbnZlbG9wZXNCdWxrOkd2ZSxmYU1haWxCdWxrOnJYdCxmYUd1aXRhcjpvWHQsZmFTdWl0Y2FzZTpuWHQsZmFDaXJjbGVVcDpLdmUsZmFBcnJvd0FsdENpcmNsZVVwOmxYdCxmYUY6Y1h0LGZhWG1hcmtzTGluZXM6ZFh0LGZhRWFydGhPY2VhbmlhOll2ZSxmYUdsb2JlT2NlYW5pYTp1WHQsZmFDb21tZW50U2xhc2g6cFh0LGZhUGxheTpoWHQsZmFWaWFsQ2lyY2xlQ2hlY2s6Zlh0LGZhQnJpZGdlQ2lyY2xlQ2hlY2s6bVh0LGZhQ2VkaVNpZ246Z1h0LGZhUHV6emxlUGllY2U6Ylh0LGZhSGVsbWV0VW46dlh0LGZhR2xhc3NXYXRlcjp4WHQsZmFIZWFydENpcmNsZUJvbHQ6eVh0LGZhUHVtcFNvYXA6d1h0LGZhSGFuZFNjaXNzb3JzOmtYdCxmYURvbGx5Olp2ZSxmYURvbGx5Qm94OlNYdCxmYVBhcGVyY2xpcDpZYixmYURlbW9jcmF0Ol9YdCxmYVNxdWFyZUFycm93VXBSaWdodDpYdmUsZmFFeHRlcm5hbExpbmtTcXVhcmU6TVh0LGZhRmVycnk6elh0LGZhTW9zcXVpdG86Q1h0LGZhQnVpbGRpbmdDaXJjbGVBcnJvd1JpZ2h0OlRYdCxmYUxlZnRSaWdodDpRdmUsZmFBcnJvd3NBbHRIOiRYdCxmYVZpcnVzOkRYdCxmYUdlbTpMWHQsZmFUb2lsZXQ6RVh0LGZhU2luZ2xlUXVvdGVMZWZ0OlBYdCxmYU1vbmV5QmlsbHM6SVh0LGZhVGFibGV0QnV0dG9uOkFYdCxmYVJlY3RhbmdsZVhtYXJrOnNTLGZhUmVjdGFuZ2xlVGltZXM6Tlh0LGZhVGltZXNSZWN0YW5nbGU6Ulh0LGZhV2luZG93Q2xvc2U6T1h0LGZhV3JlbmNoOkZYdCxmYVRyYXNoQ2FuOnVmLGZhVHJhc2hBbHQ6Qlh0LGZhVGFibGVDZWxsczpKdmUsZmFUaDpIWHQsZmFSaWJib246cVh0LGZhTGFuZG1hcmtGbGFnOmpYdCxmYVVwRG93bkxlZnRSaWdodDpleGUsZmFBcnJvd3NBbHQ6Vlh0LGZhQ2FyU2lkZTpVWHQsZmFUcmFzaEFycm93VXA6dHhlLGZhVHJhc2hSZXN0b3JlOldYdCxmYUxpZmVSaW5nOkdYdCxmYUNvcHlyaWdodDpLWHQsZmFGaWxlUHJlc2NyaXB0aW9uOllYdCxmYUVyYXNlcjpaWHQsZmFIb3VyZ2xhc3NTdGFydDpheGUsZmFIb3VyZ2xhc3MxOlhYdCxmYUNpcmNsZUxlZnQ6c3hlLGZhQXJyb3dBbHRDaXJjbGVMZWZ0OlFYdCxmYUNydXplaXJvU2lnbjpKWHQsZmFTbW9raW5nOmVRdCxmYVNxdWFyZVBvbGxWZXJ0aWNhbDppeGUsZmFQb2xsOnRRdCxmYVBlcnNvbkNpcmNsZU1pbnVzOmFRdCxmYUJpb2hhemFyZDpzUXQsZmFCZWxsQ29uY2llcmdlOnJ4ZSxmYUNvbmNpZXJnZUJlbGw6aVF0LGZhUnVsZXJIb3Jpem9udGFsOnJRdCxmYUhvcnNlOm9RdCxmYUNhbGVuZGFyOm5RdCxmYUhhbmRzSG9sZGluZ0NoaWxkOmxRdCxmYUl0YWxpYzpjUXQsZmFLaGFuZGE6ZFF0LGZhRmFjZUZyb3duT3BlbjpveGUsZmFGcm93bk9wZW46dVF0LGZhQ2hlY2s6WmIsZmFGaW5nZXJwcmludDpwUXQsZmFDaGFyZ2luZ1N0YXRpb246aFF0LGZhVXNlckxvY2s6ZlF0LGZhTW9iaWxlU2NyZWVuQnV0dG9uOm54ZSxmYU1vYmlsZUFsdDptUXQsZmFBbmNob3JDaXJjbGVDaGVjazpnUXQsZmFQZXJzb25XYWxraW5nV2l0aENhbmU6bHhlLGZhQmxpbmQ6YlF0LGZhRmlsZVdhdmVmb3JtOmN4ZSxmYUZpbGVNZWRpY2FsQWx0OnZRdCxmYUhvdXNlQ3JhY2s6eFF0LGZhSGF0V2l6YXJkOnlRdCxmYVVzZXJEb2N0b3I6ZHhlLGZhVXNlck1kOndRdCxmYUNoYXJ0QmFyOnV4ZSxmYUJhckNoYXJ0OmtRdCxmYVNwcmF5Q2FuU3BhcmtsZXM6cHhlLGZhQWlyRnJlc2hlbmVyOlNRdCxmYUJhaHRTaWduOl9RdCxmYVRlbXBlcmF0dXJlQXJyb3dVcDpoeGUsZmFUZW1wZXJhdHVyZVVwOk1RdCxmYVdlYkF3ZXNvbWU6elF0LGZhTm9uQmluYXJ5OkNRdCxmYU46VFF0LGZhQXJyb3dzVXBEb3duTGVmdFJpZ2h0OmZ4ZSxmYUFycm93czokUXQsZmFIb3VzZTppUyxmYUhvbWU6RFF0LGZhSG9tZUFsdDpMUXQsZmFIb21lTGdBbHQ6RVF0LGZhU3Bpbm5lcjpQUXQsZmFHYXZlbDpteGUsZmFMZWdhbDpJUXQsZmFUaWNrZXRTaW1wbGU6Z3hlLGZhVGlja2V0QWx0OkFRdCxmYURvdmU6TlF0LGZhVGFycERyb3BsZXQ6UlF0LGZhVHJlZUNpdHk6T1F0LGZhVHVyblVwOmJ4ZSxmYUxldmVsVXBBbHQ6RlF0LGZhVGVtcGVyYXR1cmVRdWFydGVyOnJTLGZhVGVtcGVyYXR1cmUxOkJRdCxmYVRoZXJtb21ldGVyMTpIUXQsZmFUaGVybW9tZXRlclF1YXJ0ZXI6cVF0LGZhU2xpZGVyczp2eGUsZmFTbGlkZXJzSDpqUXQsZmFNb3NxdWU6VlF0LGZhSDpVUXQsZmFJbmZvOldRdCxmYVBlcnNvbldhbGtpbmc6eHhlLGZhV2Fsa2luZzpHUXQsZmFBcnJvd1R1cm5Eb3duOnl4ZSxmYUxldmVsRG93bjpLUXQsZmFSb2FkOllRdCxmYVNwaXJhbDpaUXQsZmFGYWNlRnJvd246d3hlLGZhRnJvd246WFF0LGZhV2luZUdsYXNzRW1wdHk6a3hlLGZhV2luZUdsYXNzQWx0OlFRdCxmYUNsYXBwZXJib2FyZDpKUXQsZmFGb3J3YXJkU3RlcDpTeGUsZmFTdGVwRm9yd2FyZDplSnQsZmFTcXVhcmVVcFJpZ2h0Ol94ZSxmYUV4dGVybmFsTGlua1NxdWFyZUFsdDp0SnQsZmFCb29rSm91cm5hbFdoaWxsczpNeGUsZmFKb3VybmFsV2hpbGxzOmFKdCxmYUNoYW1wYWduZUdsYXNzZXM6enhlLGZhR2xhc3NDaGVlcnM6c0p0LGZhRHVtcHN0ZXI6aUp0LGZhSGVhcnRDaXJjbGVYbWFyazpySnQsZmFDb21wdXRlcjpvSnQsZmFXYW5kTWFnaWM6Q3hlLGZhTWFnaWM6bkp0LGZhQnJhaW46bEp0LGZhQnJpZWZjYXNlTWVkaWNhbDpjSnQsZmFIb3VzZU1lZGljYWxDaXJjbGVFeGNsYW1hdGlvbjpkSnQsZmFDb2RlQ29tbWl0OnVKdCxmYVBlcnNvbkJyZWFzdGZlZWRpbmc6cEp0LGZhUGVyc29uUmF5czpoSnQsZmFNYW5hdFNpZ246Zkp0LGZhU29ydDpUeGUsZmFVbnNvcnRlZDptSnQsZmFDaXJjbGVSYWRpYXRpb246JHhlLGZhUmFkaWF0aW9uQWx0OmdKdCxmYUxhcHRvcENvZGU6Ykp0LGZhU2luazp2SnQsZmFBcnJvd1VwRnJvbVdhdGVyUHVtcDp4SnQsZmFNaWNyb3Bob25lTGluZXNTbGFzaDpEeGUsZmFNaWNyb3Bob25lQWx0U2xhc2g6eUp0LGZhU2VydmVyOndKdCxmYVVzZXI6U29lLGZhVXNlckFsdDprSnQsZmFVc2VyTGFyZ2U6U0p0LGZhU25vd2ZsYWtlOl9KdCxmYVRhdXJ1czpNSnQsZmFTa3VsbENyb3NzYm9uZXM6ekp0LGZhUGVzb1NpZ246Q0p0LGZhV2luZUdsYXNzOlRKdCxmYVRlbXBlcmF0dXJlSGFsZjpvUyxmYVRlbXBlcmF0dXJlMjokSnQsZmFUaGVybW9tZXRlcjI6REp0LGZhVGhlcm1vbWV0ZXJIYWxmOkxKdCxmYVRpY2tldDpFSnQsZmFXaGVhdEF3bkNpcmNsZUV4Y2xhbWF0aW9uOlBKdCxmYUFycm93c1R1cm5SaWdodDpJSnQsZmFDYW5keUNhbmU6QUp0LGZhV2hlZWxjaGFpcjpOSnQsZmFTcGVsbENoZWNrOlJKdCxmYVZvbHVtZU9mZjpPSnQsZmFMdW5nczpGSnQsZmFCb29rbWFyazpCSnQsZmFCYXJjb2RlOkhKdCxmYUxpc3RPbDpfb2UsZmFMaXN0MTI6cUp0LGZhTGlzdE51bWVyaWM6akp0LGZhRmlsZUNpcmNsZVhtYXJrOlZKdCxmYUN1YmU6VUp0LGZhVGFwZTpXSnQsZmFCb21iOkdKdCxmYVNjYWxlVW5iYWxhbmNlZDpMeGUsZmFCYWxhbmNlU2NhbGVMZWZ0OktKdCxmYVNxdWFyZUNhcmV0TGVmdDpFeGUsZmFDYXJldFNxdWFyZUxlZnQ6WUp0LGZhUnVsZXI6Wkp0LGZhSTpYSnQsZmFWb2x1bWVYbWFyazpNb2UsZmFWb2x1bWVNdXRlOlFKdCxmYVZvbHVtZVRpbWVzOkpKdCxmYUFyY2h3YXk6ZWVhLGZhUGVyc29uRGlnZ2luZzpQeGUsZmFEaWdnaW5nOnRlYSxmYUdhdWdlSGlnaDp6b2UsZmFUYWNob21ldGVyQWx0OmFlYSxmYVRhY2hvbWV0ZXJBbHRGYXN0OnNlYSxmYUdlbmRlcmxlc3M6aWVhLGZhQ2xvdWRTdW46cmVhLGZhQXJyb3dSaWdodDpYYixmYUhhbmRzaGFrZTpDb2UsZmFIYW5kc2hha2VBbHQ6b2VhLGZhSGFuZHNoYWtlU2ltcGxlOm5lYSxmYVBlcnNvblNraWluZzpJeGUsZmFTa2lpbmc6bGVhLGZhQnJpZGdlV2F0ZXI6Y2VhLGZhQnVpbGRpbmdOZ286ZGVhLGZhSWdsb286dWVhLGZhQ2lyY2xlRG9sbGFyVG9TbG90OkF4ZSxmYURvbmF0ZTpwZWEsZmFZOmhlYSxmYUZhY2VTbWlsZVdpbms6TnhlLGZhU21pbGVXaW5rOmZlYSxmYURpY2VGb3VyOm1lYSxmYUZhY2VHcmluU3F1aW50VGVhcnM6UnhlLGZhR3JpblNxdWludFRlYXJzOmdlYSxmYUZpbGVBdWRpbzpiZWEsZmFBcnJvd3NEb3duVG9MaW5lOnZlYSxmYUc6eGVhLGZhVmloYXJhOnllYSxmYUZsYWdDaGVja2VyZWQ6d2VhLGZhR2F1Z2VTaW1wbGU6VG9lLGZhR2F1Z2VTaW1wbGVNZWQ6a2VhLGZhVGFjaG9tZXRlckF2ZXJhZ2U6U2VhLGZhUmlnaHRMZWZ0Ok94ZSxmYUV4Y2hhbmdlQWx0Ol9lYSxmYVBpbGxzOk1lYSxmYUV4cGxvc2lvbjp6ZWEsZmFBcnJvd3NEb3duVG9QZW9wbGU6Q2VhLGZhVXNlcnNWaWV3ZmluZGVyOlRlYSxmYUNhck9uOiRlYSxmYVNsZWlnaDpEZWEsZmFEdW1iYmVsbDpMZWEsZmFCYWJ5Q2FycmlhZ2U6RnhlLGZhQ2FycmlhZ2VCYWJ5OkVlYSxmYUtpd2lCaXJkOlBlYSxmYUNhbGVuZGFyWG1hcms6QnhlLGZhQ2FsZW5kYXJUaW1lczpJZWEsZmFDaXJjbGVEb3duOkh4ZSxmYUFycm93QWx0Q2lyY2xlRG93bjpBZWEsZmFGaWxlTWVkaWNhbDpOZWEsZmFYbWFyazp6ZCxmYUNsb3NlOlJlYSxmYU11bHRpcGx5Ok9lYSxmYVJlbW92ZTpGZWEsZmFUaW1lczpCZWEsZmFTaGFwZXM6cXhlLGZhVHJpYW5nbGVDaXJjbGVTcXVhcmU6SGVhLGZhRGljZU9uZTpxZWEsZmFMb2NrT3BlbjpqZWEsZmFQZXBwZXJIb3Q6VmVhLGZhRHJvcGxldFNsYXNoOmp4ZSxmYVRpbnRTbGFzaDpVZWEsZmFEcm9wbGV0OlZ4ZSxmYVRpbnQ6V2VhLGZhRmlsZUxpbmVzOiRvZSxmYUZpbGVBbHQ6R2VhLGZhRmlsZVRleHQ6S2VhLGZhQ29tbWVudHNEb2xsYXI6WWVhLGZhTWFnbmlmeWluZ0dsYXNzTG9jYXRpb246VXhlLGZhU2VhcmNoTG9jYXRpb246WmVhLGZhRmlsZUludm9pY2U6UWIsZmFQZW50YWdvbjpYZWEsZmFSZXB1YmxpY2FuOlFlYSxmYVNob3A6V3hlLGZhU3RvcmVBbHQ6SmVhLGZhRmlsbTpEb2UsZmFGaWxtQWx0OmV0YSxmYUZpbG1TaW1wbGU6dHRhLGZhQnVpbGRpbmdDaXJjbGVYbWFyazphdGEsZmFDb21tZW50czpzdGEsZmFUYWdzOml0YSxmYUd1bjpydGEsZmFDaXJjbGVDaGVjazpwZixmYUNoZWNrQ2lyY2xlOm90YSxmYVNjb3JwaW86bnRhLGZhSWRDYXJkQ2xpcDpHeGUsZmFJZENhcmRBbHQ6bHRhLGZhTW9vbjpjdGEsZmFPaWxXZWxsOmR0YSxmYVRhY2hvZ3JhcGhEaWdpdGFsOkt4ZSxmYURpZ2l0YWxUYWNob2dyYXBoOnV0YSxmYVRhYmxldDpZeGUsZmFUYWJsZXRBbmRyb2lkOnB0YSxmYVJ1YmxlU2lnbjpuUyxmYVJvdWJsZTpodGEsZmFSdWI6ZnRhLGZhUnVibGU6bXRhLGZhQ2xvc2VkQ2FwdGlvbmluZzpndGEsZmFQZW46YnRhLGZhUGxhbmU6dnRhLGZhSW1hZ2VzOnh0YSxmYU1vYmlsZVNjcmVlbjpaeGUsZmFNb2JpbGVBbmRyb2lkQWx0Onl0YSxmYUd1YXJhbmlTaWduOnd0YSxmYUJhZ1Nob3BwaW5nOlh4ZSxmYVNob3BwaW5nQmFnOmt0YSxmYUNpcmNsZVJpZ2h0OlF4ZSxmYUFycm93QWx0Q2lyY2xlUmlnaHQ6U3RhLGZhUGhvbmVWb2x1bWU6SnhlLGZhVm9sdW1lQ29udHJvbFBob25lOl90YSxmYUN1YmVzOk10YSxmYVBob25lOnp0YSxmYVRvcmlpR2F0ZTpDdGEsZmFCYWNvbjpUdGEsZmFQZXJzb25GYWxsaW5nQnVyc3Q6JHRhLGZhUXVvdGVSaWdodDpleWUsZmFRdW90ZVJpZ2h0QWx0OkR0YSxmYUhvdXNlTWVkaWNhbEZsYWc6THRhLGZhUHJlc2NyaXB0aW9uOkV0YSxmYURpY2VUaHJlZTpQdGEsZmFCdWlsZGluZ0xvY2s6SXRhLGZhSWRDYXJkOnR5ZSxmYURyaXZlcnNMaWNlbnNlOkF0YSxmYUNpcmNsZVBsYXk6YXllLGZhUGxheUNpcmNsZTpOdGEsZmFGYWNlTGF1Z2hCZWFtOnN5ZSxmYUxhdWdoQmVhbTpSdGEsZmFMZWFmOk90YSxmYUhvdXNlQ2hpbW5leVVzZXI6RnRhLGZhUm90YXRlUmlnaHQ6TG9lLGZhUmVkb0FsdDpCdGEsZmFSb3RhdGVGb3J3YXJkOkh0YSxmYVRvb3RoOnF0YSxmYUhvdXNlQ2hpbW5leVdpbmRvdzpqdGEsZmFNb3RvcmN5Y2xlOlZ0YSxmYUJhY2t3YXJkRmFzdDppeWUsZmFGYXN0QmFja3dhcmQ6VXRhLGZhQWRkcmVzc0Jvb2s6cnllLGZhQ29udGFjdEJvb2s6V3RhLGZhU2FpbGJvYXQ6R3RhLGZhQm9va0Jvb2ttYXJrOkt0YSxmYU1hZ25pZnlpbmdHbGFzc0Fycm93UmlnaHQ6WXRhLGZhTWljcm9waG9uZUxpbmVzOm95ZSxmYU1pY3JvcGhvbmVBbHQ6WnRhLGZhUmVwbHlBbGw6bnllLGZhTWFpbFJlcGx5QWxsOlh0YSxmYVVuaXZlcnNhbEFjY2VzczpRdGEsZmFUb2lsZXRQYXBlcjpFb2UsZmFUb2lsZXRQYXBlckFsdDpKdGEsZmFUb2lsZXRQYXBlckJsYW5rOmVhYSxmYVZyQ2FyZGJvYXJkOnRhYSxmYVBpenphU2xpY2U6YWFhLGZhU3ByYXlDYW46c2FhLGZhVm9sdW1lTG93Omx5ZSxmYVZvbHVtZURvd246aWFhLGZhQ3Jvc3M6cmFhLGZhUGVyc29uOmN5ZSxmYU1hbGU6b2FhLGZhSG91cmdsYXNzOmR5ZSxmYUhvdXJnbGFzc0VtcHR5Om5hYSxmYUZpc2g6bGFhLGZhRHJ1bXN0aWNrQml0ZTpjYWEsZmFDaGFydFNpbXBsZTpkYWEsZmFBdG9tOnVhYSxmYVA6cGFhLGZhSmV0RmlnaHRlclVwOmhhYSxmYVBsdWdDaXJjbGVYbWFyazpmYWEsZmFTaGVldFBsYXN0aWM6bWFhLGZhVjpnYWEsZmFMaXN0OnV5ZSxmYUxpc3RTcXVhcmVzOmJhYSxmYVBpc2Nlczp2YWEsZmFTb2xhclBhbmVsOnhhYSxmYUxhbmRNaW5lT246eWFhLGZhSGVhZHBob25lczpQb2UsZmFIZWFkcGhvbmVzQWx0OndhYSxmYUhlYWRwaG9uZXNTaW1wbGU6a2FhLGZhQnVzOlNhYSxmYUZpbGVQb3dlcnBvaW50Ol9hYSxmYVF1b3RlTGVmdDpweWUsZmFRdW90ZUxlZnRBbHQ6TWFhLGZhQ2hldnJvbkRvd246emFhLGZhRWFydGhBc2lhOmh5ZSxmYUdsb2JlQXNpYTpDYWEsZmFDZW50U2lnbjpUYWEsZmFTaGllbGRDYXQ6JGFhLGZhU2Nob29sQ2lyY2xlQ2hlY2s6RGFhLGZhTWFydGluaUdsYXNzOmZ5ZSxmYUdsYXNzTWFydGluaUFsdDpMYWEsZmFQbHVnOkVhYSxmYVBhbm9yYW1hOlBhYSxmYUNsb2NrUm90YXRlTGVmdDpoZixmYUhpc3Rvcnk6SWFhLGZhSmFyV2hlYXQ6QWFhLGZhQ2xvdWRBcnJvd0Rvd246SW9lLGZhQ2xvdWREb3dubG9hZDpOYWEsZmFDbG91ZERvd25sb2FkQWx0OlJhYSxmYVRydWNrUmFtcEJveDpteWUsZmFUcnVja0xvYWRpbmc6T2FhLGZhQW5nbGVEb3duOkZhYSxmYVBsdWdDaXJjbGVDaGVjazpCYWEsZmFXaW5kb3dNYXhpbWl6ZTpIYWEsZmFIYW5kc0hvbGRpbmdDaXJjbGU6cWFhLGZhTG9jYXRpb25QaW46Z3llLGZhTWFwTWFya2VyOmphYSxmYUJvd2xpbmdCYWxsOlZhYSxmYUNhcnRGbGF0YmVkOmJ5ZSxmYURvbGx5RmxhdGJlZDpVYWEsZmFIb3VzZVVzZXI6dnllLGZhSG9tZVVzZXI6V2FhLGZhR2hvc3Q6R2FhLGZhQ29tbWVudE5vZGVzOkthYSxmYVBlcnNvbkFycm93RG93blRvTGluZTpZYWEsZmFQbHVnQ2lyY2xlUGx1czpaYWEsZmFQZXJzb25Td2ltbWluZzp4eWUsZmFTd2ltbWVyOlhhYSxmYUNvbW1lbnREb3RzOnl5ZSxmYUNvbW1lbnRpbmc6UWFhLGZhQ2hhcnRQaWU6d3llLGZhUGllQ2hhcnQ6SmFhLGZhRnJvZzplc2EsZmFXaW5lQm90dGxlOnRzYSxmYUluYm94OmFzYSxmYVNxdWFyZUg6a3llLGZhSFNxdWFyZTpzc2EsZmFIb3VzZU1lZGljYWw6aXNhLGZhQ2lyY2xlQ2hldnJvblJpZ2h0OlN5ZSxmYUNoZXZyb25DaXJjbGVSaWdodDpyc2EsZmFGaWxlQ3N2Om9zYSxmYUhhdENvd2JveTpuc2EsZmFGYWNlR3JpblRvbmd1ZVdpbms6X3llLGZhR3JpblRvbmd1ZVdpbms6bHNhLGZhTDpjc2EsZmFBcnJvd0Rvd25TaG9ydFdpZGU6QW9lLGZhU29ydEFtb3VudERlc2M6ZHNhLGZhU29ydEFtb3VudERvd25BbHQ6dXNhLGZhSG91cmdsYXNzSGFsZjpNeWUsZmFIb3VyZ2xhc3MyOnBzYSxmYVNwb29uOnp5ZSxmYVV0ZW5zaWxTcG9vbjpoc2EsZmFDcmVkaXRDYXJkOkN5ZSxmYUNyZWRpdENhcmRBbHQ6ZnNhLGZhRmlsZUludm9pY2VEb2xsYXI6SmIsZmFTcGFnaGV0dGlNb25zdGVyRmx5aW5nOlR5ZSxmYVBhc3RhZmFyaWFuaXNtOm1zYSxmYU1hcnRpbmlHbGFzc0NpdHJ1czokeWUsZmFDb2NrdGFpbDpnc2EsZmFCdWxsaG9ybjpic2EsZmFCb3hUaXNzdWU6dnNhLGZhTWF0dHJlc3NQaWxsb3c6eHNhLGZhQ2hldnJvbkxlZnQ6eXNhLGZhQ2xvdWRNb29uUmFpbjp3c2EsZmFBcnJvd0Rvd24xOTpOb2UsZmFTb3J0TnVtZXJpY0FzYzprc2EsZmFTb3J0TnVtZXJpY0Rvd246U3NhLGZhSGFuZFNwb2NrOl9zYSxmYVdhbmRNYWdpY1NwYXJrbGVzOkR5ZSxmYU1hZ2ljV2FuZFNwYXJrbGVzOk1zYSxmYUNvbW1lbnRNZWRpY2FsOnpzYSxmYUJlbGxTbGFzaDpDc2EsZmFIYW5kc2hha2VTbGFzaDpSb2UsZmFIYW5kc2hha2VBbHRTbGFzaDpUc2EsZmFIYW5kc2hha2VTaW1wbGVTbGFzaDokc2EsZmFCb3R0bGVXYXRlcjpEc2EsZmFEaWNlRDIwOkxzYSxmYUFycm93RG93blpBOk9vZSxmYVNvcnRBbHBoYURlc2M6RXNhLGZhU29ydEFscGhhRG93bkFsdDpQc2EsZmFCcnVzaDpJc2EsZmFQZXJzb25XYWxraW5nRGFzaGVkTGluZUFycm93UmlnaHQ6QXNhLGZhQXJyb3dVcFNob3J0V2lkZTpMeWUsZmFTb3J0QW1vdW50VXBBbHQ6TnNhLGZhR3JpcFZlcnRpY2FsOkV5ZSxmYUdyaWRWZXJ0aWNhbDpSc2EsZmFDYXJUdW5uZWw6T3NhLGZhQ2hhcnRDb2x1bW46RnNhLGZhQ2Fwcmljb3JuOkJzYSxmYVRydWNrQXJyb3dSaWdodDpIc2EsZmFUdjpGb2UsZmFUZWxldmlzaW9uOnFzYSxmYVR2QWx0OmpzYSxmYVNlY3Rpb246VnNhLGZhUGVhY2U6VXNhLGZhU3RhcjpXc2EsZmFGbGFnOkdzYSxmYVRyaWFuZ2xlRXhjbGFtYXRpb246Qm9lLGZhRXhjbGFtYXRpb25UcmlhbmdsZTpLc2EsZmFXYXJuaW5nOllzYSxmYVNjaG9vbENpcmNsZUV4Y2xhbWF0aW9uOlpzYSxmYUdyYWR1YXRpb25DYXA6UHllLGZhTW9ydGFyQm9hcmQ6WHNhLGZhU3RvcmU6UXNhLGZhVXNlckFzdHJvbmF1dDpKc2EsZmFCdWlsZGluZ0ZsYWc6ZWlhLGZhTXVnU2F1Y2VyOkl5ZSxmYUNvZmZlZTp0aWEsZmFMZW1vbjphaWEsZmFDYXJhdmFuOnNpYSxmYVE6aWlhLGZhTG9jazpyaWEsZmFQYWludFJvbGxlcjpvaWEsZmFWb2x1bWVIaWdoOkF5ZSxmYVZvbHVtZVVwOm5pYSxmYUZvbGRlclBsdXM6bGlhLGZhTWVyY3VyeTpjaWEsZmFBbmNob3I6ZGlhLGZhU3F1YXJlUGFya2luZzpOeWUsZmFQYXJraW5nOnVpYSxmYUhhbnVraWFoOnBpYSxmYVJvdGF0ZUxlZnQ6bFMsZmFSb3RhdGVCYWNrOmhpYSxmYVJvdGF0ZUJhY2t3YXJkOmZpYSxmYVVuZG9BbHQ6bWlhLGZhSGVhZGluZzpSeWUsZmFIZWFkZXI6Z2lhLGZhQ3Jvc3NoYWlyczpiaWEsZmFDaXJjbGVOb2Rlczp2aWEsZmFXaW5kb3dSZXN0b3JlOnhpYSxmYVI6eWlhLGZhRmlsdGVyQ2lyY2xlWG1hcms6d2lhLGZhR29wdXJhbTpraWEsZmFIZWFydENpcmNsZU1pbnVzOlNpYSxmYVN0YXJPZkxpZmU6X2lhLGZhQnVzaW5lc3NUaW1lOk95ZSxmYUJyaWVmY2FzZUNsb2NrOk1pYSxmYUZpcmVFeHRpbmd1aXNoZXI6emlhLGZhQXJyb3dEb3duTG9uZzpGeWUsZmFMb25nQXJyb3dEb3duOkNpYSxmYVVzZXJNaW51czpUaWEsZmFNb25leUNoZWNrOiRpYSxmYUhvdXNlTGFwdG9wOkJ5ZSxmYUxhcHRvcEhvdXNlOkRpYSxmYURvd25sb2FkOkxpYSxmYVNhZ2l0dGFyaXVzOkVpYSxmYUNvdWNoOlBpYSxmYVJvYWRMb2NrOklpYSxmYVNjaXNzb3JzOkh5ZSxmYUN1dDpBaWEsZmFCdWc6ZXYsZmFBcnJvd1JpZ2h0RnJvbUJyYWNrZXQ6cXllLGZhU2lnbk91dDpOaWEsZmFIYW5kSG9sZGluZ0hhbmQ6UmlhLGZhU3Ryb29wd2FmZWw6T2lhLGZhQ2hpbGQ6RmlhLGZhSWNlQ3JlYW06QmlhLGZhQ29tcHV0ZXJNb3VzZTpqeWUsZmFNb3VzZTpIaWEsZmFGYXVjZXQ6cWlhLGZhQXdhcmQ6amlhLGZhUGVyc29uRHJvd25pbmc6VmlhLGZhQ2FtZXJhUm90YXRlOlVpYSxmYUZhY2VHcmluSGVhcnRzOlZ5ZSxmYUdyaW5IZWFydHM6V2lhLGZhRmlsZUZyYWdtZW50OkdpYSxmYVBlcnNvbk1pbGl0YXJ5UmlmbGU6S2lhLGZhVG9nZ2xlT246WWlhLGZhTHVuZ3NWaXJ1czpaaWEsZmFUYWJsZVRlbm5pc1BhZGRsZUJhbGw6SG9lLGZhUGluZ1BvbmdQYWRkbGVCYWxsOlhpYSxmYVRhYmxlVGVubmlzOlFpYSxmYUJveGVzUGFja2luZzpKaWEsZmFQZXJzb25DaGFsa2JvYXJkOmVyYSxmYURpY2VUd286dHJhLGZhQXJyb3dSaWdodEFycm93TGVmdDpVeWUsZmFFeGNoYW5nZTphcmEsZmFGb290YmFsbDpXeWUsZmFGb290YmFsbEJhbGw6c3JhLGZhVHJ1Y2tNb25zdGVyOmlyYSxmYUFzdGVyaXNrOnJyYSxmYUJhdHRlcnlGdWxsOnFvZSxmYUJhdHRlcnk6b3JhLGZhQmF0dGVyeTU6bnJhLGZhQ2hpbGREcmVzczpscmEsZmFGYWNlS2lzc0JlYW06R3llLGZhS2lzc0JlYW06Y3JhLGZhVHJhc2hDYW5BcnJvd1VwOkt5ZSxmYVRyYXNoUmVzdG9yZUFsdDpkcmEsZmFGb250OnVyYSxmYUJvcmVIb2xlOnByYSxmYVZpcnVzQ292aWQ6aHJhLGZhRmlsZVBkZjpmcmEsZmFMYW5ndWFnZTptcmEsZmFTaGllbGRIYWx2ZWQ6WXllLGZhU2hpZWxkQWx0OmdyYSxmYUNhcmV0VXA6YnJhLGZhRmlsZVBlbjpaeWUsZmFGaWxlRWRpdDp2cmEsZmFQZXJzb25CaWtpbmc6WHllLGZhQmlraW5nOnhyYSxmYUJvb2tPcGVuUmVhZGVyOlF5ZSxmYUJvb2tSZWFkZXI6eXJhLGZhR2xhc3NXYXRlckRyb3BsZXQ6d3JhLGZhVG93ZXJCcm9hZGNhc3Q6SnllLGZhQnJvYWRjYXN0VG93ZXI6a3JhLGZhTWluaW1pemU6ZXdlLGZhQ29tcHJlc3NBcnJvd3NBbHQ6U3JhLGZhQXJyb3dSaWdodFRvQ2l0eTpfcmEsZmFMYXB0b3BNZWRpY2FsOk1yYSxmYUJyZWFkU2xpY2U6enJhLGZhR2xvYmU6Q3JhLGZhRm9sZGVyTWludXM6VHJhLGZhTWFza0ZhY2U6JHJhLGZhQm9uZzpEcmEsZmFSb2FkQnJpZGdlOkxyYSxmYUFycm93VXA5MTp0d2UsZmFTb3J0TnVtZXJpY1VwQWx0OkVyYSxmYU1vdW50YWluQ2l0eTpQcmEsZmFBcnJvd0Rvd245MTpqb2UsZmFTb3J0TnVtZXJpY0Rlc2M6SXJhLGZhU29ydE51bWVyaWNEb3duQWx0OkFyYSxmYUZhY2VHcmluV2lkZTphd2UsZmFHcmluQWx0Ok5yYSxmYVBvb3A6UnJhLGZhRGhhcm1hY2hha3JhOk9yYSxmYUJhdHRlcnlRdWFydGVyOnN3ZSxmYUJhdHRlcnkyOkZyYSxmYUFua2g6QnJhLGZhRGlhbW9uZDpIcmEsZmFTdWJzY3JpcHQ6cXJhLGZhUnVwZWVTaWduOml3ZSxmYVJ1cGVlOmpyYSxmYVBlcnNvblJpZmxlOlZyYSxmYUQ6VXJhLGZhU3F1YXJlTmZpOldyYSxmYVRlZXRoOkdyYSxmYU1hZ25pZnlpbmdHbGFzc0RvbGxhcjpyd2UsZmFTZWFyY2hEb2xsYXI6S3JhLGZhRHVtcHN0ZXJGaXJlOllyYSxmYVVwbG9hZDpacmEsZmFVc2VyU2xhc2g6Vm9lLGZhVXNlckFsdFNsYXNoOlhyYSxmYVVzZXJMYXJnZVNsYXNoOlFyYSxmYUFycm93TGVmdDpKcmEsZmFWaWFsVmlydXM6ZW9hLGZhQ2hlY2tEb3VibGU6dG9hLGZhUGF3OmFvYSxmYUhlbG1ldFNhZmV0eTpVb2UsZmFIYXJkSGF0OnNvYSxmYUhhdEhhcmQ6aW9hLGZhRTpyb2EsZmFGYWNlTGF1Z2hTcXVpbnQ6b3dlLGZhTGF1Z2hTcXVpbnQ6b29hLGZhRG93bkxlZnRBbmRVcFJpZ2h0VG9DZW50ZXI6bndlLGZhQ29tcHJlc3NBbHQ6bm9hLGZhR2lmdHM6bG9hLGZhQmVkOmNvYSxmYU1vbmV5QmlsbFRyYW5zZmVyOmRvYSxmYVBlcnNvblJ1bm5pbmc6bHdlLGZhUnVubmluZzp1b2EsZmFDaXJjbGVDaGV2cm9uRG93bjpjd2UsZmFDaGV2cm9uQ2lyY2xlRG93bjpwb2EsZmFVc2VyTnVyc2U6aG9hLGZhRmFjZUtpc3NXaW5rSGVhcnQ6ZHdlLGZhS2lzc1dpbmtIZWFydDpmb2EsZmFGaWxsOm1vYSxmYU1vbmV5QmlsbDFXYXZlOnV3ZSxmYU1vbmV5QmlsbFdhdmVBbHQ6Z29hLGZhTGFuZG1hcms6Ym9hLGZhTXVzaWM6dm9hLGZhQm9va01lZGljYWw6eG9hLGZhU2h1ZmZsZTpwd2UsZmFSYW5kb206eW9hLGZhVW5kZXJsaW5lOndvYSxmYUJ1aWxkaW5nVXNlcjprb2EsZmFSb2JvdDpTb2EsZmFQbHVzOmZmLGZhQWRkOl9vYSxmYUNvcHk6dHYsZmFDaGVzc0tpbmc6TW9hLGZhSG91c2VGbG9vZFdhdGVyOnpvYSxmYUJpdGNvaW5TaWduOkNvYSxmYUJveDpUb2EsZmFTcXVhcmVQbHVzOmh3ZSxmYVBsdXNTcXVhcmU6JG9hLGZhQXJyb3dzTGVmdFJpZ2h0OmZ3ZSxmYUFycm93c0g6RG9hLGZhRmFuOkxvYSxmYUNyb3c6RW9hLGZhRmlsZUNpcmNsZUNoZWNrOlBvYSxmYUxpbmtTbGFzaDpjUyxmYUNoYWluQnJva2VuOklvYSxmYUNoYWluU2xhc2g6QW9hLGZhVW5saW5rOk5vYSxmYUFycm93Um90YXRlUmlnaHQ6ZFMsZmFBcnJvd1JpZ2h0Um90YXRlOlJvYSxmYUFycm93Um90YXRlRm9yd2FyZDpPb2EsZmFSZWRvOkZvYSxmYVBlbkNsaXA6bXdlLGZhUGVuQWx0OkJvYSxmYURvb3JDbG9zZWQ6SG9hLGZhQXJyb3dEb3duV2lkZVNob3J0OldvZSxmYVNvcnRBbW91bnRBc2M6cW9hLGZhU29ydEFtb3VudERvd246am9hLGZhQ2FyZXREb3duOlZvYSxmYUs6VW9hLGZhQ2hlY2tUb1Nsb3Q6Z3dlLGZhVm90ZVllYTpXb2EsZmFGaXNoRmluczpHb2EsZmFDb21wcmVzczpLb2EsZmFBcnJvd1VwQVo6YndlLGZhU29ydEFscGhhVXA6WW9hLGZhVXNlckdyYWR1YXRlOlpvYSxmYUZpbGVDb2RlOlhvYSxmYVNvYXA6UW9hLGZhUmVjeWNsZTpKb2EsZmFGYWNlR3Jpbldpbms6dndlLGZhR3Jpbldpbms6ZW5hLGZhV2F0ZXJMYWRkZXI6R29lLGZhTGFkZGVyV2F0ZXI6dG5hLGZhU3dpbW1pbmdQb29sOmFuYSxmYUdlbWluaTpzbmEsZmFUb3dlckNlbGw6aW5hLGZhQ29sb25TaWduOnJuYSxmYUxhcHRvcEZpbGU6b25hLGZhQmFoYWk6eHdlLGZhSGF5a2FsOm5uYSxmYU1vbmV5QmlsbDE6eXdlLGZhTW9uZXlCaWxsQWx0OmxuYSxmYUNsb3VkQm9sdDp3d2UsZmFUaHVuZGVyc3Rvcm06Y25hLGZhRXRoZXJuZXQ6ZG5hLGZhSHJ5dm5pYVNpZ246a3dlLGZhSHJ5dm5pYTp1bmEsZmFFeWVTbGFzaDphdixmYUNhcnRGbGF0YmVkU3VpdGNhc2U6U3dlLGZhTHVnZ2FnZUNhcnQ6cG5hLGZhUmFkaWF0aW9uOmhuYSxmYUZpbGVXb3JkOmZuYSxmYUJlZFB1bHNlOl93ZSxmYVByb2NlZHVyZXM6bW5hLGZhVGVudHM6Z25hLGZhTXVnSG90OnN2LGZhQm9sdDpNd2UsZmFaYXA6Ym5hLGZhSmFyOnZuYSxmYVRydWNrUGxhbmU6eG5hLGZhSGFuZEhvbGRpbmdIZWFydDp5bmEsZmFBcnJvd1JvdGF0ZUxlZnQ6TmIsZmFBcnJvd0xlZnRSb3RhdGU6d25hLGZhQXJyb3dSb3RhdGVCYWNrOmtuYSxmYUFycm93Um90YXRlQmFja3dhcmQ6U25hLGZhVW5kbzpfbmEsZmFGYWNlQW5ncnk6endlLGZhQW5ncnk6TW5hLGZhQnVyc3Q6em5hLGZhWjpDbmEsZmFCYW5kYWdlOkN3ZSxmYUJhbmRBaWQ6VG5hLGZhUGxhbmVDaXJjbGVFeGNsYW1hdGlvbjokbmEsZmFCdXNTaWRlOkRuYSxmYUJ1Z3M6TG5hLGZhQmVlck11Z0VtcHR5OlR3ZSxmYUJlZXI6RW5hLGZhUGVyc29uQ2lyY2xlQ2hlY2s6UG5hLGZhU3RhcGxlcjpJbmEsZmFIb3VzZU1lZGljYWxDaXJjbGVDaGVjazpBbmEsZmFOYWlyYVNpZ246Tm5hLGZhV2lmaTpLb2UsZmFXaWZpMzpSbmEsZmFXaWZpU3Ryb25nOk9uYSxmYU1vbmV5Q2hlY2tEb2xsYXI6bWYsZmFNb25leUNoZWNrQWx0OkZuYSxmYUV5ZUxvd1Zpc2lvbjokd2UsZmFMb3dWaXNpb246Qm5hLGZhQ2lyY2xlQXJyb3dVcDpEd2UsZmFBcnJvd0NpcmNsZVVwOkhuYSxmYUNhbWVyYVJldHJvOnFuYSxmYUNhcHN1bGVzOmpuYSxmYVBvbzpWbmEsZmFWb2x1bWU6THdlLGZhVm9sdW1lTWVkaXVtOlVuYSxmYUVsZXZhdG9yOlduYSxmYVRhZzpHbmEsZmFGaWxlQ2lyY2xlTWludXM6S25hLGZhRG93bkxvbmc6RXdlLGZhTG9uZ0Fycm93QWx0RG93bjpZbmEsZmFDb21wYWN0RGlzYzpabmEsZmFTdWl0Y2FzZVJvbGxpbmc6WG5hLGZhQm9va1F1cmFuOlB3ZSxmYVF1cmFuOlFuYSxmYVBob25lU2xhc2g6Sm5hLGZhUm9hZENpcmNsZUNoZWNrOmVsYSxmYVNob3BMb2NrOnRsYSxmYUltYWdlUG9ydHJhaXQ6SXdlLGZhUG9ydHJhaXQ6YWxhLGZhQnJpZGdlTG9jazpzbGEsZmFIYW1tZXI6aWxhLGZhQXJyb3dVcDE5OkF3ZSxmYVNvcnROdW1lcmljVXA6cmxhLGZhQ2hlc3NLbmlnaHQ6b2xhLGZhSG91c2VGbG9vZFdhdGVyQ2lyY2xlQXJyb3dSaWdodDpubGEsZmFBcnJvd1VwUmlnaHRGcm9tU3F1YXJlOmdmLGZhRXh0ZXJuYWxMaW5rOmxsYSxmYUFycm93RG93blVwQWNyb3NzTGluZTpjbGEsZmFGYWNlR3JpbkJlYW06TndlLGZhR3JpbkJlYW06ZGxhLGZhUmVjdGFuZ2xlQWQ6UndlLGZhQWQ6dWxhLGZhQm9va1RhbmFraDpPd2UsZmFUYW5ha2g6cGxhLGZhSG90VHViUGVyc29uOkZ3ZSxmYUhvdFR1YjpobGEsZmFGaWxlSGFsZkRhc2hlZDpmbGEsZmFPdXRkZW50OkJ3ZSxmYURlZGVudDptbGEsZmFIYW5kUGVhY2U6Z2xhLGZhSGVhZFNpZGVWaXJ1czpibGEsZmFDb21wYXNzOnZsYSxmYVBlbk5pYjp4bGEsZmFUZW50QXJyb3dzRG93bjp5bGEsZmFGb3J3YXJkRmFzdDpId2UsZmFGYXN0Rm9yd2FyZDp3bGEsZmFDcm9wOmtsYSxmYVdoaXNrZXlHbGFzczpxd2UsZmFHbGFzc1doaXNrZXk6U2xhLGZhU3F1YXJlOl9sYSxmYUZhY2VHcmluOmp3ZSxmYUdyaW46TWxhLGZhRmlsZUNvbnRyYWN0OnpsYSxmYUFuZ2xlVXA6Q2xhLGZhRmFjZVNtaWxlOlZ3ZSxmYVNtaWxlOlRsYSxmYVBlcnNvbkRyZXNzQnVyc3Q6JGxhLGZhRGl2aWRlOkRsYSxmYUNvZGVGb3JrOkxsYSxmYUhvdXNlRmxhZzpFbGEsZmFCdWlsZGluZ0NvbHVtbnM6UmIsZmFCYW5rOlBsYSxmYUluc3RpdHV0aW9uOklsYSxmYU11c2V1bTpBbGEsZmFVbml2ZXJzaXR5Ok5sYSxmYVJ1ZzpSbGEsZmFDb2RlTWVyZ2U6T2xhLGZhSG91c2VUc3VuYW1pOkZsYSxmYU1hZ25pZnlpbmdHbGFzc0NoYXJ0OkJsYSxmYVVtYnJlbGxhOkhsYSxmYUhpbGxSb2Nrc2xpZGU6cWxhLGZhVXNlclNlY3JldDpqbGEsZmFQYWdlcjpWbGEsZmFCcmllZmNhc2U6VWxhLGZhVHJvd2VsQnJpY2tzOldsYSxmYVNvY2tzOkdsYSxmYVQ6S2xhLGZhTWljcm9jaGlwOllsYSxmYVRydWNrTWVkaWNhbDpVd2UsZmFBbWJ1bGFuY2U6WmxhLGZhT206WGxhLGZhTW9zcXVpdG9OZXQ6UWxhLGZhUHJlc2NyaXB0aW9uQm90dGxlOkpsYSxmYVVzZXJzR2VhcjpXd2UsZmFVc2Vyc0NvZzplY2EsZmFSb2FkQ2lyY2xlRXhjbGFtYXRpb246dGNhLGZhUGF1c2U6YWNhLGZhU3RhZmZTbmFrZTp1UyxmYVJvZEFzY2xlcGl1czpzY2EsZmFSb2RTbmFrZTppY2EsZmFTdGFmZkFlc2N1bGFwaXVzOnJjYSxmYVBpZ2d5QmFuazpvY2EsZmFNb251bWVudDpuY2EsZmFBbmdsZXNSaWdodDpHd2UsZmFBbmdsZURvdWJsZVJpZ2h0OmxjYSxmYURlc2t0b3A6YmYsZmFEZXNrdG9wQWx0OmNjYSxmYVBsYW5lQ2lyY2xlWG1hcms6ZGNhLGZhUmV0d2VldDp1Y2EsZmFVc2VyR2VhcjpLd2UsZmFVc2VyQ29nOnBjYSxmYUJvcmRlckFsbDpoY2EsZmFDb2luczpmY2EsZmFNYXJzU3Ryb2tlOm1jYSxmYUhhbmRzaGFrZUFuZ2xlOll3ZSxmYUhhbmRzSGVscGluZzpnY2EsZmFBcnJvd0Rvd246YmNhLGZhTG9jYXRpb25Eb3Q6WndlLGZhTWFwTWFya2VyQWx0OnZjYSxmYVBsdWdDaXJjbGVFeGNsYW1hdGlvbjp4Y2EsZmFDb29raWVCaXRlOnljYSxmYVNjcmV3ZHJpdmVyV3JlbmNoOlh3ZSxmYVRvb2xzOndjYSxmYUluZGVudDprY2EsZmFCYXJzOlF3ZSxmYU5hdmljb246U2NhLGZhSGFuZHNQcmF5aW5nOkp3ZSxmYVByYXlpbmdIYW5kczpfY2EsZmFWaXJ1c2VzOk1jYSxmYVNjaG9vbEZsYWc6emNhLGZhVHJhZGVtYXJrOkNjYSxmYUZpcmVCdXJuZXI6VGNhLGZhRmFjZVNtaWxlQmVhbTpla2UsZmFTbWlsZUJlYW06JGNhLGZhVGVudEFycm93TGVmdFJpZ2h0OkRjYSxmYVJvdXRlOkxjYSxmYUFuZ2xlc1VwOnRrZSxmYUFuZ2xlRG91YmxlVXA6RWNhLGZhQnVja2V0OlBjYSxmYUxlc3NUaGFuRXF1YWw6SWNhLGZhRm9sZGVyQ2xvc2VkOkFjYSxmYVBlcnNvblRocm91Z2hXaW5kb3c6TmNhLGZhU2Nob29sTG9jazpSY2EsZmFQZXJzb25CdXJzdDpPY2EsZmFMZWZ0TG9uZzpha2UsZmFMb25nQXJyb3dBbHRMZWZ0OkZjYSxmYUxvY2F0aW9uQ3Jvc3NoYWlyczpza2UsZmFMb2NhdGlvbjpCY2EsZmFQZXJzb25Eb3RzRnJvbUxpbmU6aWtlLGZhRGlhZ25vc2VzOkhjYSxmYUdhdWdlU2ltcGxlSGlnaDpZb2UsZmFUYWNob21ldGVyOnFjYSxmYVRhY2hvbWV0ZXJGYXN0OmpjYSxmYUFuZ2xlc0xlZnQ6cmtlLGZhQW5nbGVEb3VibGVMZWZ0OlZjYSxmYVVwRG93bjpva2UsZmFBcnJvd3NBbHRWOlVjYSxmYUJhdHRlcnlFbXB0eTpua2UsZmFCYXR0ZXJ5MDpXY2EsZmFLZXlib2FyZDpHY2EsZmFDb29raWU6S2NhLGZhU3RvcHdhdGNoOlljYSxmYUVqZWN0OlpjYSxmYVNhdGVsbGl0ZURpc2g6WGNhLGZhRmFjZVJvbGxpbmdFeWVzOmxrZSxmYU1laFJvbGxpbmdFeWVzOlFjYSxmYUxpc3RDaGVjazpja2UsZmFUYXNrczpKY2EsZmFTYWNrWG1hcms6ZTFhLGZhSGFzaHRhZzp0MWEsZmFUcmFpbjphMWEsZmFHYW1lcGFkOnMxYSxmYUZpbGVFeHBvcnQ6ZGtlLGZhQXJyb3dSaWdodEZyb21GaWxlOmkxYSxmYUZhY2VHcmltYWNlOnVrZSxmYUdyaW1hY2U6cjFhLGZhVHJhaW5TdWJ3YXk6cGtlLGZhU3Vid2F5Om8xYSxmYUNpcmNsZURvdDpoa2UsZmFEb3RDaXJjbGU6bjFhLGZhT2JqZWN0R3JvdXA6bDFhLGZhU2hpcDpjMWEsZmFDOmQxYSxmYVNxdWFyZVBob25lOmZrZSxmYVBob25lU3F1YXJlOnUxYSxmYVJ1bGVyQ29tYmluZWQ6cDFhLGZhQXJyb3dzUm90YXRlOlpvZSxmYVJlZnJlc2g6aDFhLGZhU3luYzpmMWEsZmFQZXJzb25EcmVzczpta2UsZmFGZW1hbGU6bTFhLGZhQm9va09wZW46ZzFhLGZhRm9sZGVyVHJlZTpiMWEsZmFWaXJnbzp2MWEsZmFCb3hBcmNoaXZlOmdrZSxmYUFyY2hpdmU6eDFhLGZhVGVudEFycm93RG93blRvTGluZTp5MWEsZmFRcmNvZGU6dzFhLGZhRHJhZ29uOmsxYSxmYUhvdXJnbGFzc0VuZDpia2UsZmFIb3VyZ2xhc3MzOlMxYSxmYUdyaXA6aGgsZmFHcmlkSG9yaXpvbnRhbDpfMWEsZmFHcmlwSG9yaXpvbnRhbDpNMWEsZmFCb3JkZXJUb3BMZWZ0OnZrZSxmYUJvcmRlclN0eWxlOnoxYSxmYUxpc3RVbDp4a2UsZmFMaXN0RG90czpDMWEsZmFQZW9wbGVSb2JiZXJ5OlQxYSxmYU1vYmlsZUJ1dHRvbjokMWEsZmFBcnJvd0Rvd25BWjpYb2UsZmFTb3J0QWxwaGFBc2M6RDFhLGZhU29ydEFscGhhRG93bjpMMWEsZmFNb25leUJpbGw6RTFhLGZhQ2lyY2xlTWludXM6eWtlLGZhTWludXNDaXJjbGU6UDFhLGZhQXJyb3dQb2ludGVyOndrZSxmYU1vdXNlUG9pbnRlcjpJMWEsZmFTcXVhcmVTaGFyZU5vZGVzOmtrZSxmYVNoYXJlQWx0U3F1YXJlOkExYSxmYVRhYmxlQ2VsbHNMYXJnZTpTa2UsZmFUaExhcmdlOk4xYSxmYUNhdDpSMWEsZmFDYWxlbmRhcldlZWs6TzFhLGZhQ29kZUNvbXBhcmU6RjFhLGZhTGVvOkIxYSxmYVJvYWRDaXJjbGVYbWFyazpIMWEsZmFQYWxsZXQ6cTFhLGZhQ2FrZUNhbmRsZXM6UW9lLGZhQmlydGhkYXlDYWtlOmoxYSxmYUNha2U6VjFhLGZhQnVnU2xhc2g6VTFhLGZhVGFycDpXMWEsZmFEaWFncmFtUHJlZGVjZXNzb3I6RzFhLGZhRmFjZUZsdXNoZWQ6X2tlLGZhRmx1c2hlZDpLMWEsZmFEaWFncmFtTmV4dDpZMWEsZmFBbmNob3JDaXJjbGVYbWFyazpaMWEsZmFQZXJzb25DaXJjbGVYbWFyazpYMWEsZmFTcGE6UTFhLGZhQXJpZXM6SjFhLGZhQmFyc1Byb2dyZXNzOk1rZSxmYVRhc2tzQWx0OmUyYSxmYUhlYXJ0Q2lyY2xlQ2hlY2s6dDJhLGZhTWFyc1N0cm9rZVJpZ2h0OnprZSxmYU1hcnNTdHJva2VIOmEyYSxmYVRvd2VyT2JzZXJ2YXRpb246czJhLGZhU3RlcmxpbmdTaWduOkpvZSxmYUdicDppMmEsZmFQb3VuZFNpZ246cjJhLGZhRmF1Y2V0RHJpcDpvMmEsZmFDaXJjbGVJbmZvOnZmLGZhSW5mb0NpcmNsZTpuMmEsZmFGZWF0aGVyOmwyYSxmYUJvd2xSaWNlOmMyYSxmYVN0YXJIYWxmU3Ryb2tlOkNrZSxmYVN0YXJIYWxmQWx0OmQyYSxmYVRlbXBlcmF0dXJlQXJyb3dEb3duOlRrZSxmYVRlbXBlcmF0dXJlRG93bjp1MmEsZmFNYXNrVmVudGlsYXRvcjpwMmEsZmFGaWxlVmlkZW86aDJhLGZhQXJyb3dUcmVuZERvd246ZjJhLGZhT2lsQ2FuOm0yYSxmYVBlb3BsZUNhcnJ5Qm94OiRrZSxmYVBlb3BsZUNhcnJ5OmcyYSxmYUNoYWlyOmIyYSxmYVdpbmQ6djJhLGZhTGF5ZXJHcm91cDp4MmEsZmFIZWFkU2lkZU1hc2s6eTJhLGZhSGFuZHM6ZW5lLGZhU2lnbkxhbmd1YWdlOncyYSxmYVNpZ25pbmc6azJhLGZhVGFibGV0czpTMmEsZmFXZWlnaHRIYW5naW5nOl8yYSxmYURpY2U6TTJhLGZhU2hvcFNsYXNoOkRrZSxmYVN0b3JlQWx0U2xhc2g6ejJhLGZhU29ydERvd246TGtlLGZhU29ydERlc2M6QzJhLGZhUGVzZXRhU2lnbjpUMmEsZmFUYWJsZXRTY3JlZW5CdXR0b246RWtlLGZhVGFibGV0QWx0OiQyYSxmYUhhbmRIb2xkaW5nRG9sbGFyOlBrZSxmYUhhbmRIb2xkaW5nVXNkOkQyYSxmYVNoaWVsZDpJa2UsZmFTaGllbGRCbGFuazpMMmEsZmFGYWNlTGF1Z2g6QWtlLGZhTGF1Z2g6RTJhLGZhSGFuZHNIb2xkaW5nOlAyYSxmYUNhcnRTaG9wcGluZzpOa2UsZmFTaG9wcGluZ0NhcnQ6STJhLGZhT2N0YWdvbjpBMmEsZmFIYW5kUG9pbnRlcjpOMmEsZmFSZWdpc3RlcmVkOlIyYSxmYUhvdXNlU2lnbmFsOk8yYSxmYUJhbmdsYWRlc2hpVGFrYVNpZ246RjJhfX0pO3ZhciBwUyxPa2U9ZygoKT0+e3BTPXt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOjI0LGhlaWdodDoyNCx2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIiwic3Ryb2tlLXdpZHRoIjoyLCJzdHJva2UtbGluZWNhcCI6InJvdW5kIiwic3Ryb2tlLWxpbmVqb2luIjoicm91bmQifX0pO3ZhciBCMmEsajEsRmtlPWcoKCk9PntPa2UoKTtCMmE9aSgoW3MsZSx0XSk9PntsZXQgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixzKTtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaChyPT57YS5zZXRBdHRyaWJ1dGUocixTdHJpbmcoZVtyXSkpfSksdD8ubGVuZ3RoJiZ0LmZvckVhY2gocj0+e2xldCBuPUIyYShyKTthLmFwcGVuZENoaWxkKG4pfSksYX0sImNyZWF0ZVNWR0VsZW1lbnQiKSxqMT1pKChzLGU9e30pPT57bGV0IGE9ey4uLnBTLC4uLmV9O3JldHVybiBCMmEoWyJzdmciLGEsc10pfSwiY3JlYXRlRWxlbWVudCIpfSk7dmFyIEJrZSxIMmE9ZygoKT0+e0JrZT1pKHM9Pntmb3IobGV0IGUgaW4gcylpZihlLnN0YXJ0c1dpdGgoImFyaWEtIil8fGU9PT0icm9sZSJ8fGU9PT0idGl0bGUiKXJldHVybiEwO3JldHVybiExfSwiaGFzQTExeVByb3AiKX0pO3ZhciBIa2UscTJhPWcoKCk9PntIa2U9aSgoLi4ucyk9PnMuZmlsdGVyKChlLHQsYSk9PiEhZSYmZS50cmltKCkhPT0iIiYmYS5pbmRleE9mKGUpPT09dCkuam9pbigiICIpLnRyaW0oKSwibWVyZ2VDbGFzc2VzIil9KTt2YXIgcWtlLGoyYT1nKCgpPT57cWtlPWkocz0+cy5yZXBsYWNlKC9eKFtBLVpdKXxbXHMtX10rKFx3KS9nLChlLHQsYSk9PmE/YS50b1VwcGVyQ2FzZSgpOnQudG9Mb3dlckNhc2UoKSksInRvQ2FtZWxDYXNlIil9KTt2YXIgamtlLFYyYT1nKCgpPT57ajJhKCk7amtlPWkocz0+e2xldCBlPXFrZShzKTtyZXR1cm4gZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpfSwidG9QYXNjYWxDYXNlIil9KTt2YXIgVTJhLFZrZSx0bmUsVzJhPWcoKCk9PntGa2UoKTtPa2UoKTtIMmEoKTtxMmEoKTtWMmEoKTtVMmE9aShzPT5BcnJheS5mcm9tKHMuYXR0cmlidXRlcykucmVkdWNlKChlLHQpPT4oZVt0Lm5hbWVdPXQudmFsdWUsZSkse30pLCJnZXRBdHRycyIpLFZrZT1pKHM9PnR5cGVvZiBzPT0ic3RyaW5nIj9zOiFzfHwhcy5jbGFzcz8iIjpzLmNsYXNzJiZ0eXBlb2Ygcy5jbGFzcz09InN0cmluZyI/cy5jbGFzcy5zcGxpdCgiICIpOnMuY2xhc3MmJkFycmF5LmlzQXJyYXkocy5jbGFzcyk/cy5jbGFzczoiIiwiZ2V0Q2xhc3NOYW1lcyIpLHRuZT1pKChzLHtuYW1lQXR0cjplLGljb25zOnQsYXR0cnM6YX0pPT57bGV0IHI9cy5nZXRBdHRyaWJ1dGUoZSk7aWYocj09bnVsbClyZXR1cm47bGV0IG49amtlKHIpLG89dFtuXTtpZighbylyZXR1cm4gY29uc29sZS53YXJuKGAke3Mub3V0ZXJIVE1MfSBpY29uIG5hbWUgd2FzIG5vdCBmb3VuZCBpbiB0aGUgcHJvdmlkZWQgaWNvbnMgb2JqZWN0LmApO2xldCBsPVUyYShzKSxwPUJrZShsKT97fTp7ImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LGQ9ey4uLnBTLCJkYXRhLWx1Y2lkZSI6ciwuLi5wLC4uLmEsLi4ubH0sdT1Wa2UobCksYz1Wa2UoYSksYj1Ia2UoImx1Y2lkZSIsYGx1Y2lkZS0ke3J9YCwuLi51LC4uLmMpO2ImJk9iamVjdC5hc3NpZ24oZCx7Y2xhc3M6Yn0pO2xldCB2PWoxKG8sZCk7cmV0dXJuIHMucGFyZW50Tm9kZT8ucmVwbGFjZUNoaWxkKHYscyl9LCJyZXBsYWNlRWxlbWVudCIpfSk7dmFyIGhTLFVrZT1nKCgpPT57aFM9W1sicGF0aCIse2Q6Im0xNCAxMiA0IDQgNC00In1dLFsicGF0aCIse2Q6Ik0xOCAxNlY3In1dLFsicGF0aCIse2Q6Im0yIDE2IDQuMDM5LTkuNjlhLjUuNSAwIDAgMSAuOTIzIDBMMTEgMTYifV0sWyJwYXRoIix7ZDoiTTMuMzA0IDEzaDYuMzkyIn1dXX0pO3ZhciBmUyxXa2U9ZygoKT0+e2ZTPVtbInBhdGgiLHtkOiJtMTQgMTEgNC00IDQgNCJ9XSxbInBhdGgiLHtkOiJNMTggMTZWNyJ9XSxbInBhdGgiLHtkOiJtMiAxNiA0LjAzOS05LjY5YS41LjUgMCAwIDEgLjkyMyAwTDExIDE2In1dLFsicGF0aCIse2Q6Ik0zLjMwNCAxM2g2LjM5MiJ9XV19KTt2YXIgbVMsR2tlPWcoKCk9PnttUz1bWyJwYXRoIix7ZDoibTE1IDE2IDIuNTM2LTcuMzI4YTEuMDIgMS4wMiAxIDAgMSAxLjkyOCAwTDIyIDE2In1dLFsicGF0aCIse2Q6Ik0xNS42OTcgMTRoNS42MDYifV0sWyJwYXRoIix7ZDoibTIgMTYgNC4wMzktOS42OWEuNS41IDAgMCAxIC45MjMgMEwxMSAxNiJ9XSxbInBhdGgiLHtkOiJNMy4zMDQgMTNoNi4zOTIifV1dfSk7dmFyIGdTLEtrZT1nKCgpPT57Z1M9W1siY2lyY2xlIix7Y3g6IjE2IixjeToiNCIscjoiMSJ9XSxbInBhdGgiLHtkOiJtMTggMTkgMS03LTYgMSJ9XSxbInBhdGgiLHtkOiJtNSA4IDMtMyA1LjUgMy0yLjM2IDMuNSJ9XSxbInBhdGgiLHtkOiJNNC4yNCAxNC41YTUgNSAwIDAgMCA2Ljg4IDYifV0sWyJwYXRoIix7ZDoiTTEzLjc2IDE3LjVhNSA1IDAgMCAwLTYuODgtNiJ9XV19KTt2YXIgYlMsWWtlPWcoKCk9PntiUz1bWyJwYXRoIix7ZDoiTTIyIDEyaC0yLjQ4YTIgMiAwIDAgMC0xLjkzIDEuNDZsLTIuMzUgOC4zNmEuMjUuMjUgMCAwIDEtLjQ4IDBMOS4yNCAyLjE4YS4yNS4yNSAwIDAgMC0uNDggMGwtMi4zNSA4LjM2QTIgMiAwIDAgMSA0LjQ5IDEySDIifV1dfSk7dmFyIHZTLFprZT1nKCgpPT57dlM9W1sicGF0aCIse2Q6Ik0xOCAxNy41YTIuNSAyLjUgMCAxIDEtNCAyLjAzVjEyIn1dLFsicGF0aCIse2Q6Ik02IDEySDRhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoMTZhMiAyIDAgMCAxIDIgMnY1YTIgMiAwIDAgMS0yIDJoLTIifV0sWyJwYXRoIix7ZDoiTTYgOGgxMiJ9XSxbInBhdGgiLHtkOiJNNi42IDE1LjU3MkEyIDIgMCAxIDAgMTAgMTd2LTUifV1dfSk7dmFyIHhTLFhrZT1nKCgpPT57eFM9W1sicGF0aCIse2Q6Ik01IDE3SDRhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoMTZhMiAyIDAgMCAxIDIgMnYxMGEyIDIgMCAwIDEtMiAyaC0xIn1dLFsicGF0aCIse2Q6Im0xMiAxNSA1IDZIN1oifV1dfSk7dmFyIHhmLFFrZT1nKCgpPT57eGY9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTMiLHI6IjgifV0sWyJwYXRoIix7ZDoiTTUgMyAyIDYifV0sWyJwYXRoIix7ZDoibTIyIDYtMy0zIn1dLFsicGF0aCIse2Q6Ik02LjM4IDE4LjcgNCAyMSJ9XSxbInBhdGgiLHtkOiJNMTcuNjQgMTguNjcgMjAgMjEifV0sWyJwYXRoIix7ZDoibTkgMTMgMiAyIDQtNCJ9XV19KTt2YXIgeWYsSmtlPWcoKCk9Pnt5Zj1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMyIscjoiOCJ9XSxbInBhdGgiLHtkOiJNNSAzIDIgNiJ9XSxbInBhdGgiLHtkOiJtMjIgNi0zLTMifV0sWyJwYXRoIix7ZDoiTTYuMzggMTguNyA0IDIxIn1dLFsicGF0aCIse2Q6Ik0xNy42NCAxOC42NyAyMCAyMSJ9XSxbInBhdGgiLHtkOiJNOSAxM2g2In1dXX0pO3ZhciB5UyxlU2U9ZygoKT0+e3lTPVtbInBhdGgiLHtkOiJNNi44NyA2Ljg3YTggOCAwIDEgMCAxMS4yNiAxMS4yNiJ9XSxbInBhdGgiLHtkOiJNMTkuOSAxNC4yNWE4IDggMCAwIDAtOS4xNS05LjE1In1dLFsicGF0aCIse2Q6Im0yMiA2LTMtMyJ9XSxbInBhdGgiLHtkOiJNNi4yNiAxOC42NyA0IDIxIn1dLFsicGF0aCIse2Q6Im0yIDIgMjAgMjAifV0sWyJwYXRoIix7ZDoiTTQgNCAyIDYifV1dfSk7dmFyIHdmLHRTZT1nKCgpPT57d2Y9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTMiLHI6IjgifV0sWyJwYXRoIix7ZDoiTTUgMyAyIDYifV0sWyJwYXRoIix7ZDoibTIyIDYtMy0zIn1dLFsicGF0aCIse2Q6Ik02LjM4IDE4LjcgNCAyMSJ9XSxbInBhdGgiLHtkOiJNMTcuNjQgMTguNjcgMjAgMjEifV0sWyJwYXRoIix7ZDoiTTEyIDEwdjYifV0sWyJwYXRoIix7ZDoiTTkgMTNoNiJ9XV19KTt2YXIgd1MsYVNlPWcoKCk9Pnt3Uz1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMyIscjoiOCJ9XSxbInBhdGgiLHtkOiJNMTIgOXY0bDIgMiJ9XSxbInBhdGgiLHtkOiJNNSAzIDIgNiJ9XSxbInBhdGgiLHtkOiJtMjIgNi0zLTMifV0sWyJwYXRoIix7ZDoiTTYuMzggMTguNyA0IDIxIn1dLFsicGF0aCIse2Q6Ik0xNy42NCAxOC42NyAyMCAyMSJ9XV19KTt2YXIga1Msc1NlPWcoKCk9PntrUz1bWyJwYXRoIix7ZDoiTTExIDIxYzAtMi41IDItMi41IDItNSJ9XSxbInBhdGgiLHtkOiJNMTYgMjFjMC0yLjUgMi0yLjUgMi01In1dLFsicGF0aCIse2Q6Im0xOSA4LS44IDNhMS4yNSAxLjI1IDAgMCAxLTEuMiAxSDdhMS4yNSAxLjI1IDAgMCAxLTEuMi0xTDUgOCJ9XSxbInBhdGgiLHtkOiJNMjEgM2ExIDEgMCAwIDEgMSAxdjJhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWNGExIDEgMCAwIDEgMS0xeiJ9XSxbInBhdGgiLHtkOiJNNiAyMWMwLTIuNSAyLTIuNSAyLTUifV1dfSk7dmFyIFNTLGlTZT1nKCgpPT57U1M9W1sicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiMyIscng6IjIiLHJ5OiIyIn1dLFsicG9seWxpbmUiLHtwb2ludHM6IjExIDMgMTEgMTEgMTQgOCAxNyAxMSAxNyAzIn1dXX0pO3ZhciBfUyxyU2U9ZygoKT0+e19TPVtbInBhdGgiLHtkOiJNMiAxMmgyMCJ9XSxbInBhdGgiLHtkOiJNMTAgMTZ2NGEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMnYtNCJ9XSxbInBhdGgiLHtkOiJNMTAgOFY0YTIgMiAwIDAgMC0yLTJINmEyIDIgMCAwIDAtMiAydjQifV0sWyJwYXRoIix7ZDoiTTIwIDE2djFhMiAyIDAgMCAxLTIgMmgtMmEyIDIgMCAwIDEtMi0ydi0xIn1dLFsicGF0aCIse2Q6Ik0xNCA4VjdjMC0xLjEuOS0yIDItMmgyYTIgMiAwIDAgMSAyIDJ2MSJ9XV19KTt2YXIgTVMsb1NlPWcoKCk9PntNUz1bWyJwYXRoIix7ZDoiTTEyIDJ2MjAifV0sWyJwYXRoIix7ZDoiTTggMTBINGEyIDIgMCAwIDEtMi0yVjZjMC0xLjEuOS0yIDItMmg0In1dLFsicGF0aCIse2Q6Ik0xNiAxMGg0YTIgMiAwIDAgMCAyLTJWNmEyIDIgMCAwIDAtMi0yaC00In1dLFsicGF0aCIse2Q6Ik04IDIwSDdhMiAyIDAgMCAxLTItMnYtMmMwLTEuMS45LTIgMi0yaDEifV0sWyJwYXRoIix7ZDoiTTE2IDE0aDFhMiAyIDAgMCAxIDIgMnYyYTIgMiAwIDAgMS0yIDJoLTEifV1dfSk7dmFyIHpTLG5TZT1nKCgpPT57elM9W1sicmVjdCIse3dpZHRoOiI2IixoZWlnaHQ6IjE2Iix4OiI0Iix5OiIyIixyeDoiMiJ9XSxbInJlY3QiLHt3aWR0aDoiNiIsaGVpZ2h0OiI5Iix4OiIxNCIseToiOSIscng6IjIifV0sWyJwYXRoIix7ZDoiTTIyIDIySDIifV1dfSk7dmFyIENTLGxTZT1nKCgpPT57Q1M9W1sicmVjdCIse3dpZHRoOiI2IixoZWlnaHQ6IjE0Iix4OiI0Iix5OiI1IixyeDoiMiJ9XSxbInJlY3QiLHt3aWR0aDoiNiIsaGVpZ2h0OiIxMCIseDoiMTQiLHk6IjciLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik0xNyAyMnYtNSJ9XSxbInBhdGgiLHtkOiJNMTcgN1YyIn1dLFsicGF0aCIse2Q6Ik03IDIydi0zIn1dLFsicGF0aCIse2Q6Ik03IDVWMiJ9XV19KTt2YXIgVFMsY1NlPWcoKCk9PntUUz1bWyJyZWN0Iix7d2lkdGg6IjE2IixoZWlnaHQ6IjYiLHg6IjIiLHk6IjQiLHJ4OiIyIn1dLFsicmVjdCIse3dpZHRoOiI5IixoZWlnaHQ6IjYiLHg6IjkiLHk6IjE0IixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNMjIgMjJWMiJ9XV19KTt2YXIgJFMsZFNlPWcoKCk9PnskUz1bWyJyZWN0Iix7d2lkdGg6IjYiLGhlaWdodDoiMTQiLHg6IjQiLHk6IjUiLHJ4OiIyIn1dLFsicmVjdCIse3dpZHRoOiI2IixoZWlnaHQ6IjEwIix4OiIxNCIseToiNyIscng6IjIifV0sWyJwYXRoIix7ZDoiTTEwIDJ2MjAifV0sWyJwYXRoIix7ZDoiTTIwIDJ2MjAifV1dfSk7dmFyIERTLHVTZT1nKCgpPT57RFM9W1sicmVjdCIse3dpZHRoOiI2IixoZWlnaHQ6IjE0Iix4OiI0Iix5OiI1IixyeDoiMiJ9XSxbInJlY3QiLHt3aWR0aDoiNiIsaGVpZ2h0OiIxMCIseDoiMTQiLHk6IjciLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik00IDJ2MjAifV0sWyJwYXRoIix7ZDoiTTE0IDJ2MjAifV1dfSk7dmFyIExTLHBTZT1nKCgpPT57TFM9W1sicmVjdCIse3dpZHRoOiI2IixoZWlnaHQ6IjE0Iix4OiIyIix5OiI1IixyeDoiMiJ9XSxbInJlY3QiLHt3aWR0aDoiNiIsaGVpZ2h0OiIxMCIseDoiMTYiLHk6IjciLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik0xMiAydjIwIn1dXX0pO3ZhciBFUyxoU2U9ZygoKT0+e0VTPVtbInJlY3QiLHt3aWR0aDoiNiIsaGVpZ2h0OiIxNCIseDoiMiIseToiNSIscng6IjIifV0sWyJyZWN0Iix7d2lkdGg6IjYiLGhlaWdodDoiMTAiLHg6IjEyIix5OiI3IixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNMjIgMnYyMCJ9XV19KTt2YXIgUFMsZlNlPWcoKCk9PntQUz1bWyJyZWN0Iix7d2lkdGg6IjYiLGhlaWdodDoiMTQiLHg6IjYiLHk6IjUiLHJ4OiIyIn1dLFsicmVjdCIse3dpZHRoOiI2IixoZWlnaHQ6IjEwIix4OiIxNiIseToiNyIscng6IjIifV0sWyJwYXRoIix7ZDoiTTIgMnYyMCJ9XV19KTt2YXIgSVMsbVNlPWcoKCk9PntJUz1bWyJyZWN0Iix7d2lkdGg6IjYiLGhlaWdodDoiMTAiLHg6IjkiLHk6IjciLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik00IDIyVjIifV0sWyJwYXRoIix7ZDoiTTIwIDIyVjIifV1dfSk7dmFyIEFTLGdTZT1nKCgpPT57QVM9W1sicmVjdCIse3dpZHRoOiI2IixoZWlnaHQ6IjE2Iix4OiI0Iix5OiI2IixyeDoiMiJ9XSxbInJlY3QiLHt3aWR0aDoiNiIsaGVpZ2h0OiI5Iix4OiIxNCIseToiNiIscng6IjIifV0sWyJwYXRoIix7ZDoiTTIyIDJIMiJ9XV19KTt2YXIgTlMsYlNlPWcoKCk9PntOUz1bWyJyZWN0Iix7d2lkdGg6IjkiLGhlaWdodDoiNiIseDoiNiIseToiMTQiLHJ4OiIyIn1dLFsicmVjdCIse3dpZHRoOiIxNiIsaGVpZ2h0OiI2Iix4OiI2Iix5OiI0IixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNMiAydjIwIn1dXX0pO3ZhciBSUyx2U2U9ZygoKT0+e1JTPVtbInJlY3QiLHt3aWR0aDoiNiIsaGVpZ2h0OiIxNCIseDoiMyIseToiNSIscng6IjIifV0sWyJyZWN0Iix7d2lkdGg6IjYiLGhlaWdodDoiMTAiLHg6IjE1Iix5OiI3IixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNMyAydjIwIn1dLFsicGF0aCIse2Q6Ik0yMSAydjIwIn1dXX0pO3ZhciBPUyx4U2U9ZygoKT0+e09TPVtbInBhdGgiLHtkOiJNMjIgMTdoLTMifV0sWyJwYXRoIix7ZDoiTTIyIDdoLTUifV0sWyJwYXRoIix7ZDoiTTUgMTdIMiJ9XSxbInBhdGgiLHtkOiJNNyA3SDIifV0sWyJyZWN0Iix7eDoiNSIseToiMTQiLHdpZHRoOiIxNCIsaGVpZ2h0OiI2IixyeDoiMiJ9XSxbInJlY3QiLHt4OiI3Iix5OiI0Iix3aWR0aDoiMTAiLGhlaWdodDoiNiIscng6IjIifV1dfSk7dmFyIEZTLHlTZT1nKCgpPT57RlM9W1sicmVjdCIse3dpZHRoOiIxNCIsaGVpZ2h0OiI2Iix4OiI1Iix5OiIxNCIscng6IjIifV0sWyJyZWN0Iix7d2lkdGg6IjEwIixoZWlnaHQ6IjYiLHg6IjciLHk6IjQiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik0yIDIwaDIwIn1dLFsicGF0aCIse2Q6Ik0yIDEwaDIwIn1dXX0pO3ZhciBCUyx3U2U9ZygoKT0+e0JTPVtbInJlY3QiLHt3aWR0aDoiMTQiLGhlaWdodDoiNiIseDoiNSIseToiMTQiLHJ4OiIyIn1dLFsicmVjdCIse3dpZHRoOiIxMCIsaGVpZ2h0OiI2Iix4OiI3Iix5OiI0IixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNMiAxNGgyMCJ9XSxbInBhdGgiLHtkOiJNMiA0aDIwIn1dXX0pO3ZhciBIUyxrU2U9ZygoKT0+e0hTPVtbInJlY3QiLHt3aWR0aDoiMTQiLGhlaWdodDoiNiIseDoiNSIseToiMTYiLHJ4OiIyIn1dLFsicmVjdCIse3dpZHRoOiIxMCIsaGVpZ2h0OiI2Iix4OiI3Iix5OiIyIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNMiAxMmgyMCJ9XV19KTt2YXIgcVMsU1NlPWcoKCk9PntxUz1bWyJyZWN0Iix7d2lkdGg6IjE0IixoZWlnaHQ6IjYiLHg6IjUiLHk6IjEyIixyeDoiMiJ9XSxbInJlY3QiLHt3aWR0aDoiMTAiLGhlaWdodDoiNiIseDoiNyIseToiMiIscng6IjIifV0sWyJwYXRoIix7ZDoiTTIgMjJoMjAifV1dfSk7dmFyIGpTLF9TZT1nKCgpPT57alM9W1sicmVjdCIse3dpZHRoOiIxNCIsaGVpZ2h0OiI2Iix4OiI1Iix5OiIxNiIscng6IjIifV0sWyJyZWN0Iix7d2lkdGg6IjEwIixoZWlnaHQ6IjYiLHg6IjciLHk6IjYiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik0yIDJoMjAifV1dfSk7dmFyIFZTLE1TZT1nKCgpPT57VlM9W1sicmVjdCIse3dpZHRoOiIxMCIsaGVpZ2h0OiI2Iix4OiI3Iix5OiI5IixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNMjIgMjBIMiJ9XSxbInBhdGgiLHtkOiJNMjIgNEgyIn1dXX0pO3ZhciBVUyx6U2U9ZygoKT0+e1VTPVtbInJlY3QiLHt3aWR0aDoiMTQiLGhlaWdodDoiNiIseDoiNSIseToiMTUiLHJ4OiIyIn1dLFsicmVjdCIse3dpZHRoOiIxMCIsaGVpZ2h0OiI2Iix4OiI3Iix5OiIzIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNMiAyMWgyMCJ9XSxbInBhdGgiLHtkOiJNMiAzaDIwIn1dXX0pO3ZhciBXUyxDU2U9ZygoKT0+e1dTPVtbInBhdGgiLHtkOiJNMTAgMTBINiJ9XSxbInBhdGgiLHtkOiJNMTQgMThWNmEyIDIgMCAwIDAtMi0ySDRhMiAyIDAgMCAwLTIgMnYxMWExIDEgMCAwIDAgMSAxaDIifV0sWyJwYXRoIix7ZDoiTTE5IDE4aDJhMSAxIDAgMCAwIDEtMXYtMy4yOGExIDEgMCAwIDAtLjY4NC0uOTQ4bC0xLjkyMy0uNjQxYTEgMSAwIDAgMS0uNTc4LS41MDJsLTEuNTM5LTMuMDc2QTEgMSAwIDAgMCAxNi4zODIgOEgxNCJ9XSxbInBhdGgiLHtkOiJNOCA4djQifV0sWyJwYXRoIix7ZDoiTTkgMThoNiJ9XSxbImNpcmNsZSIse2N4OiIxNyIsY3k6IjE4IixyOiIyIn1dLFsiY2lyY2xlIix7Y3g6IjciLGN5OiIxOCIscjoiMiJ9XV19KTt2YXIgR1MsVFNlPWcoKCk9PntHUz1bWyJwYXRoIix7ZDoiTTEwIDE3Yy01LTMtNy03LTctOWEyIDIgMCAwIDEgNCAwYzAgMi41LTUgMi41LTUgNiAwIDEuNyAxLjMgMyAzIDMgMi44IDAgNS0yLjIgNS01In1dLFsicGF0aCIse2Q6Ik0yMiAxN2MtNS0zLTctNy03LTlhMiAyIDAgMCAxIDQgMGMwIDIuNS01IDIuNS01IDYgMCAxLjcgMS4zIDMgMyAzIDIuOCAwIDUtMi4yIDUtNSJ9XV19KTt2YXIgS1MsJFNlPWcoKCk9PntLUz1bWyJwYXRoIix7ZDoiTTE2IDEyaDMifV0sWyJwYXRoIix7ZDoiTTE3LjUgMTJhOCA4IDAgMCAxLTggOEE0LjUgNC41IDAgMCAxIDUgMTUuNWMwLTYgOC00IDgtOC41YTMgMyAwIDEgMC02IDBjMCAzIDIuNSA4LjUgMTIgMTMifV1dfSk7dmFyIFlTLERTZT1nKCgpPT57WVM9W1sicGF0aCIse2Q6Ik0xMCAydjUuNjMyYzAgLjQyNC0uMjcyLjc5NS0uNjUzLjk4MkE2IDYgMCAwIDAgNiAxNGMuMDA2IDQgMyA3IDUgOCJ9XSxbInBhdGgiLHtkOiJNMTAgNUg4YTIgMiAwIDAgMCAwIDRoLjY4In1dLFsicGF0aCIse2Q6Ik0xNCAydjUuNjMyYzAgLjQyNC4yNzIuNzk1LjY1Mi45ODJBNiA2IDAgMCAxIDE4IDE0YzAgNC0zIDctNSA4In1dLFsicGF0aCIse2Q6Ik0xNCA1aDJhMiAyIDAgMCAxIDAgNGgtLjY4In1dLFsicGF0aCIse2Q6Ik0xOCAyMkg2In1dLFsicGF0aCIse2Q6Ik05IDJoNiJ9XV19KTt2YXIgWlMsTFNlPWcoKCk9PntaUz1bWyJwYXRoIix7ZDoiTTEyIDZ2MTYifV0sWyJwYXRoIix7ZDoibTE5IDEzIDItMWE5IDkgMCAwIDEtMTggMGwyIDEifV0sWyJwYXRoIix7ZDoiTTkgMTFoNiJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjQiLHI6IjIifV1dfSk7dmFyIFhTLEVTZT1nKCgpPT57WFM9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIn1dLFsicGF0aCIse2Q6Ik0xNiAxNnMtMS41LTItNC0yLTQgMi00IDIifV0sWyJwYXRoIix7ZDoiTTcuNSA4IDEwIDkifV0sWyJwYXRoIix7ZDoibTE0IDkgMi41LTEifV0sWyJwYXRoIix7ZDoiTTkgMTBoLjAxIn1dLFsicGF0aCIse2Q6Ik0xNSAxMGguMDEifV1dfSk7dmFyIFFTLFBTZT1nKCgpPT57UVM9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIn1dLFsicGF0aCIse2Q6Ik04IDE1aDgifV0sWyJwYXRoIix7ZDoiTTggOWgyIn1dLFsicGF0aCIse2Q6Ik0xNCA5aDIifV1dfSk7dmFyIEpTLElTZT1nKCgpPT57SlM9W1sicGF0aCIse2Q6Ik0yIDEyIDcgMiJ9XSxbInBhdGgiLHtkOiJtNyAxMiA1LTEwIn1dLFsicGF0aCIse2Q6Im0xMiAxMiA1LTEwIn1dLFsicGF0aCIse2Q6Im0xNyAxMiA1LTEwIn1dLFsicGF0aCIse2Q6Ik00LjUgN2gxNSJ9XSxbInBhdGgiLHtkOiJNMTIgMTZ2NiJ9XV19KTt2YXIgZV8sQVNlPWcoKCk9PntlXz1bWyJwYXRoIix7ZDoiTTcgMTBINmE0IDQgMCAwIDEtNC00IDEgMSAwIDAgMSAxLTFoNCJ9XSxbInBhdGgiLHtkOiJNNyA1YTEgMSAwIDAgMSAxLTFoMTNhMSAxIDAgMCAxIDEgMSA3IDcgMCAwIDEtNyA3SDhhMSAxIDAgMCAxLTEtMXoifV0sWyJwYXRoIix7ZDoiTTkgMTJ2NSJ9XSxbInBhdGgiLHtkOiJNMTUgMTJ2NSJ9XSxbInBhdGgiLHtkOiJNNSAyMGEzIDMgMCAwIDEgMy0zaDhhMyAzIDAgMCAxIDMgMyAxIDEgMCAwIDEtMSAxSDZhMSAxIDAgMCAxLTEtMSJ9XV19KTt2YXIgdF8sTlNlPWcoKCk9Pnt0Xz1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifV0sWyJwYXRoIix7ZDoibTE0LjMxIDggNS43NCA5Ljk0In1dLFsicGF0aCIse2Q6Ik05LjY5IDhoMTEuNDgifV0sWyJwYXRoIix7ZDoibTcuMzggMTIgNS43NC05Ljk0In1dLFsicGF0aCIse2Q6Ik05LjY5IDE2IDMuOTUgNi4wNiJ9XSxbInBhdGgiLHtkOiJNMTQuMzEgMTZIMi44MyJ9XSxbInBhdGgiLHtkOiJtMTYuNjIgMTItNS43NCA5Ljk0In1dXX0pO3ZhciBhXyxSU2U9ZygoKT0+e2FfPVtbInJlY3QiLHt3aWR0aDoiMjAiLGhlaWdodDoiMTYiLHg6IjIiLHk6IjQiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik02IDhoLjAxIn1dLFsicGF0aCIse2Q6Ik0xMCA4aC4wMSJ9XSxbInBhdGgiLHtkOiJNMTQgOGguMDEifV1dfSk7dmFyIHNfLE9TZT1nKCgpPT57c189W1sicmVjdCIse3g6IjIiLHk6IjQiLHdpZHRoOiIyMCIsaGVpZ2h0OiIxNiIscng6IjIifV0sWyJwYXRoIix7ZDoiTTEwIDR2NCJ9XSxbInBhdGgiLHtkOiJNMiA4aDIwIn1dLFsicGF0aCIse2Q6Ik02IDR2NCJ9XV19KTt2YXIgaV8sRlNlPWcoKCk9PntpXz1bWyJyZWN0Iix7d2lkdGg6IjIwIixoZWlnaHQ6IjUiLHg6IjIiLHk6IjMiLHJ4OiIxIn1dLFsicGF0aCIse2Q6Ik00IDh2MTFhMiAyIDAgMCAwIDIgMmgyIn1dLFsicGF0aCIse2Q6Ik0yMCA4djExYTIgMiAwIDAgMS0yIDJoLTIifV0sWyJwYXRoIix7ZDoibTkgMTUgMy0zIDMgMyJ9XSxbInBhdGgiLHtkOiJNMTIgMTJ2OSJ9XV19KTt2YXIgcl8sQlNlPWcoKCk9PntyXz1bWyJwYXRoIix7ZDoiTTEyIDYuNTI4VjNhMSAxIDAgMCAxIDEtMWgwIn1dLFsicGF0aCIse2Q6Ik0xOC4yMzcgMjFBMTUgMTUgMCAwIDAgMjIgMTFhNiA2IDAgMCAwLTEwLTQuNDcyQTYgNiAwIDAgMCAyIDExYTE1LjEgMTUuMSAwIDAgMCAzLjc2MyAxMCAzIDMgMCAwIDAgMy42NDguNjQ4IDUuNSA1LjUgMCAwIDEgNS4xNzggMEEzIDMgMCAwIDAgMTguMjM3IDIxIn1dXX0pO3ZhciBvXyxIU2U9ZygoKT0+e29fPVtbInJlY3QiLHt3aWR0aDoiMjAiLGhlaWdodDoiNSIseDoiMiIseToiMyIscng6IjEifV0sWyJwYXRoIix7ZDoiTTQgOHYxMWEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWOCJ9XSxbInBhdGgiLHtkOiJtOS41IDE3IDUtNSJ9XSxbInBhdGgiLHtkOiJtOS41IDEyIDUgNSJ9XV19KTt2YXIgbl8scVNlPWcoKCk9PntuXz1bWyJwYXRoIix7ZDoiTTE5IDlWNmEyIDIgMCAwIDAtMi0ySDdhMiAyIDAgMCAwLTIgMnYzIn1dLFsicGF0aCIse2Q6Ik0zIDE2YTIgMiAwIDAgMCAyIDJoMTRhMiAyIDAgMCAwIDItMnYtNWEyIDIgMCAwIDAtNCAwdjEuNWEuNS41IDAgMCAxLS41LjVoLTlhLjUuNSAwIDAgMS0uNS0uNVYxMWEyIDIgMCAwIDAtNCAweiJ9XSxbInBhdGgiLHtkOiJNNSAxOHYyIn1dLFsicGF0aCIse2Q6Ik0xOSAxOHYyIn1dXX0pO3ZhciBsXyxqU2U9ZygoKT0+e2xfPVtbInJlY3QiLHt3aWR0aDoiMjAiLGhlaWdodDoiNSIseDoiMiIseToiMyIscng6IjEifV0sWyJwYXRoIix7ZDoiTTQgOHYxMWEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWOCJ9XSxbInBhdGgiLHtkOiJNMTAgMTJoNCJ9XV19KTt2YXIgY18sVlNlPWcoKCk9PntjXz1bWyJwYXRoIix7ZDoiTTE0IDhhMSAxIDAgMCAxIDEgMXYyYTEgMSAwIDAgMCAxIDFoMy4yOTNhLjcwNy43MDcgMCAwIDEgLjUgMS4yMDdsLTYuOTM5IDYuOTM5YTEuMjA3IDEuMjA3IDAgMCAxLTEuNzA4IDBsLTYuOTQtNi45NGEuNzA3LjcwNyAwIDAgMSAuNS0xLjIwNkg4YTEgMSAwIDAgMCAxLTFWOWExIDEgMCAwIDEgMS0xeiJ9XSxbInBhdGgiLHtkOiJNOSA0aDYifV1dfSk7dmFyIGRfLFVTZT1nKCgpPT57ZF89W1sicGF0aCIse2Q6Ik05IDVhMSAxIDAgMCAxIDEtMWg0YTEgMSAwIDAgMSAxIDF2NmExIDEgMCAwIDAgMSAxaDMuMjkzYS43MDcuNzA3IDAgMCAxIC41IDEuMjA3bC03LjA4NiA3LjA4NmExIDEgMCAwIDEtMS40MTQgMGwtNy4wODYtNy4wODZhLjcwNy43MDcgMCAwIDEgLjUtMS4yMDdIOGExIDEgMCAwIDAgMS0xeiJ9XV19KTt2YXIgdV8sV1NlPWcoKCk9Pnt1Xz1bWyJwYXRoIix7ZDoiTTEwLjc5MyAxOS43OTNhLjcwNy43MDcgMCAwIDAgMS4yMDctLjVWMTZhMSAxIDAgMCAxIDEtMWg2YTEgMSAwIDAgMCAxLTF2LTRhMSAxIDAgMCAwLTEtMWgtNmExIDEgMCAwIDEtMS0xVjQuNzA3YS43MDcuNzA3IDAgMCAwLTEuMjA3LS41bC02Ljk0IDYuOTRhMS4yMDcgMS4yMDcgMCAwIDAgMCAxLjcwN3oifV1dfSk7dmFyIHBfLEdTZT1nKCgpPT57cF89W1sicGF0aCIse2Q6Ik0xMyA5YTEgMSAwIDAgMS0xLTFWNC43MDdhLjcwNy43MDcgMCAwIDAtMS4yMDctLjVsLTYuOTQgNi45NGExLjIwNyAxLjIwNyAwIDAgMCAwIDEuNzA3bDYuOTQgNi45NGEuNzA3LjcwNyAwIDAgMCAxLjIwNy0uNVYxNmExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAwIDEtMXYtNGExIDEgMCAwIDAtMS0xeiJ9XSxbInBhdGgiLHtkOiJNMjAgOXY2In1dXX0pO3ZhciBoXyxLU2U9ZygoKT0+e2hfPVtbInBhdGgiLHtkOiJNMTEgOWExIDEgMCAwIDAgMS0xVjQuNzA3YS43MDcuNzA3IDAgMCAxIDEuMjA3LS41bDYuOTQgNi45NGExLjIwNyAxLjIwNyAwIDAgMSAwIDEuNzA3bC02Ljk0IDYuOTRhLjcwNy43MDcgMCAwIDEtMS4yMDctLjVWMTZhMSAxIDAgMCAwLTEtMUg5YTEgMSAwIDAgMS0xLTF2LTRhMSAxIDAgMCAxIDEtMXoifV0sWyJwYXRoIix7ZDoiTTQgOXY2In1dXX0pO3ZhciBmXyxZU2U9ZygoKT0+e2ZfPVtbInBhdGgiLHtkOiJNMTMuMjA3IDE5Ljc5M2EuNzA3LjcwNyAwIDAgMS0xLjIwNy0uNVYxNmExIDEgMCAwIDAtMS0xSDVhMSAxIDAgMCAxLTEtMXYtNGExIDEgMCAwIDEgMS0xaDZhMSAxIDAgMCAwIDEtMVY0LjcwN2EuNzA3LjcwNyAwIDAgMSAxLjIwNy0uNWw2Ljk0IDYuOTRhMS4yMDcgMS4yMDcgMCAwIDEgMCAxLjcwN3oifV1dfSk7dmFyIG1fLFpTZT1nKCgpPT57bV89W1sicGF0aCIse2Q6Ik0xNCAxNmExIDEgMCAwIDAgMS0xdi0yYTEgMSAwIDAgMSAxLTFoMy4yOTNhLjcwNy43MDcgMCAwIDAgLjUtMS4yMDdsLTYuOTM5LTYuOTM5YTEuMjA3IDEuMjA3IDAgMCAwLTEuNzA4IDBsLTYuOTQgNi45NGEuNzA3LjcwNyAwIDAgMCAuNSAxLjIwNkg4YTEgMSAwIDAgMSAxIDF2MmExIDEgMCAwIDAgMSAxeiJ9XSxbInBhdGgiLHtkOiJNOSAyMGg2In1dXX0pO3ZhciBnXyxYU2U9ZygoKT0+e2dfPVtbInBhdGgiLHtkOiJNOSAxOWExIDEgMCAwIDAgMSAxaDRhMSAxIDAgMCAwIDEtMXYtNmExIDEgMCAwIDEgMS0xaDMuMjkzYS43MDcuNzA3IDAgMCAwIC41LTEuMjA3bC03LjA4Ni03LjA4NmExIDEgMCAwIDAtMS40MTQgMGwtNy4wODYgNy4wODZhLjcwNy43MDcgMCAwIDAgLjUgMS4yMDdIOGExIDEgMCAwIDEgMSAxeiJ9XV19KTt2YXIgYl8sUVNlPWcoKCk9PntiXz1bWyJwYXRoIix7ZDoibTMgMTYgNCA0IDQtNCJ9XSxbInBhdGgiLHtkOiJNNyAyMFY0In1dLFsicmVjdCIse3g6IjE1Iix5OiI0Iix3aWR0aDoiNCIsaGVpZ2h0OiI2IixyeToiMiJ9XSxbInBhdGgiLHtkOiJNMTcgMjB2LTZoLTIifV0sWyJwYXRoIix7ZDoiTTE1IDIwaDQifV1dfSk7dmFyIHZfLEpTZT1nKCgpPT57dl89W1sicGF0aCIse2Q6Im0zIDE2IDQgNCA0LTQifV0sWyJwYXRoIix7ZDoiTTcgMjBWNCJ9XSxbInBhdGgiLHtkOiJNMTcgMTBWNGgtMiJ9XSxbInBhdGgiLHtkOiJNMTUgMTBoNCJ9XSxbInJlY3QiLHt4OiIxNSIseToiMTQiLHdpZHRoOiI0IixoZWlnaHQ6IjYiLHJ5OiIyIn1dXX0pO3ZhciB4XyxlX2U9ZygoKT0+e3hfPVtbInBhdGgiLHtkOiJNMTkgM0g1In1dLFsicGF0aCIse2Q6Ik0xMiAyMVY3In1dLFsicGF0aCIse2Q6Im02IDE1IDYgNiA2LTYifV1dfSk7dmFyIGtmLHRfZT1nKCgpPT57a2Y9W1sicGF0aCIse2Q6Im0zIDE2IDQgNCA0LTQifV0sWyJwYXRoIix7ZDoiTTcgMjBWNCJ9XSxbInBhdGgiLHtkOiJNMjAgOGgtNSJ9XSxbInBhdGgiLHtkOiJNMTUgMTBWNi41YTIuNSAyLjUgMCAwIDEgNSAwVjEwIn1dLFsicGF0aCIse2Q6Ik0xNSAxNGg1bC01IDZoNSJ9XV19KTt2YXIgeV8sYV9lPWcoKCk9Pnt5Xz1bWyJwYXRoIix7ZDoiTTE3IDcgNyAxNyJ9XSxbInBhdGgiLHtkOiJNMTcgMTdIN1Y3In1dXX0pO3ZhciB3XyxzX2U9ZygoKT0+e3dfPVtbInBhdGgiLHtkOiJtMyAxNiA0IDQgNC00In1dLFsicGF0aCIse2Q6Ik03IDIwVjQifV0sWyJwYXRoIix7ZDoiTTExIDRoNCJ9XSxbInBhdGgiLHtkOiJNMTEgOGg3In1dLFsicGF0aCIse2Q6Ik0xMSAxMmgxMCJ9XV19KTt2YXIga18saV9lPWcoKCk9PntrXz1bWyJwYXRoIix7ZDoibTcgNyAxMCAxMCJ9XSxbInBhdGgiLHtkOiJNMTcgN3YxMEg3In1dXX0pO3ZhciBTXyxyX2U9ZygoKT0+e1NfPVtbInBhdGgiLHtkOiJNMTIgMnYxNCJ9XSxbInBhdGgiLHtkOiJtMTkgOS03IDctNy03In1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiMjEiLHI6IjEifV1dfSk7dmFyIF9fLG9fZT1nKCgpPT57X189W1sicGF0aCIse2Q6Im0zIDE2IDQgNCA0LTQifV0sWyJwYXRoIix7ZDoiTTcgMjBWNCJ9XSxbInBhdGgiLHtkOiJtMjEgOC00LTQtNCA0In1dLFsicGF0aCIse2Q6Ik0xNyA0djE2In1dXX0pO3ZhciBNXyxuX2U9ZygoKT0+e01fPVtbInBhdGgiLHtkOiJNMTIgMTdWMyJ9XSxbInBhdGgiLHtkOiJtNiAxMSA2IDYgNi02In1dLFsicGF0aCIse2Q6Ik0xOSAyMUg1In1dXX0pO3ZhciBTZixsX2U9ZygoKT0+e1NmPVtbInBhdGgiLHtkOiJtMyAxNiA0IDQgNC00In1dLFsicGF0aCIse2Q6Ik03IDIwVjQifV0sWyJwYXRoIix7ZDoiTTExIDRoMTAifV0sWyJwYXRoIix7ZDoiTTExIDhoNyJ9XSxbInBhdGgiLHtkOiJNMTEgMTJoNCJ9XV19KTt2YXIgX2YsY19lPWcoKCk9PntfZj1bWyJwYXRoIix7ZDoibTMgMTYgNCA0IDQtNCJ9XSxbInBhdGgiLHtkOiJNNyA0djE2In1dLFsicGF0aCIse2Q6Ik0xNSA0aDVsLTUgNmg1In1dLFsicGF0aCIse2Q6Ik0xNSAyMHYtMy41YTIuNSAyLjUgMCAwIDEgNSAwVjIwIn1dLFsicGF0aCIse2Q6Ik0yMCAxOGgtNSJ9XV19KTt2YXIgel8sZF9lPWcoKCk9Pnt6Xz1bWyJwYXRoIix7ZDoiTTEyIDV2MTQifV0sWyJwYXRoIix7ZDoibTE5IDEyLTcgNy03LTcifV1dfSk7dmFyIENfLHVfZT1nKCgpPT57Q189W1sicGF0aCIse2Q6Im05IDYtNiA2IDYgNiJ9XSxbInBhdGgiLHtkOiJNMyAxMmgxNCJ9XSxbInBhdGgiLHtkOiJNMjEgMTlWNSJ9XV19KTt2YXIgVF8scF9lPWcoKCk9PntUXz1bWyJwYXRoIix7ZDoiTTggMyA0IDdsNCA0In1dLFsicGF0aCIse2Q6Ik00IDdoMTYifV0sWyJwYXRoIix7ZDoibTE2IDIxIDQtNC00LTQifV0sWyJwYXRoIix7ZDoiTTIwIDE3SDQifV1dfSk7dmFyICRfLGhfZT1nKCgpPT57JF89W1sicGF0aCIse2Q6Ik0zIDE5VjUifV0sWyJwYXRoIix7ZDoibTEzIDYtNiA2IDYgNiJ9XSxbInBhdGgiLHtkOiJNNyAxMmgxNCJ9XV19KTt2YXIgRF8sZl9lPWcoKCk9PntEXz1bWyJwYXRoIix7ZDoiTTMgNXYxNCJ9XSxbInBhdGgiLHtkOiJNMjEgMTJINyJ9XSxbInBhdGgiLHtkOiJtMTUgMTggNi02LTYtNiJ9XV19KTt2YXIgTF8sbV9lPWcoKCk9PntMXz1bWyJwYXRoIix7ZDoibTEyIDE5LTctNyA3LTcifV0sWyJwYXRoIix7ZDoiTTE5IDEySDUifV1dfSk7dmFyIEVfLGdfZT1nKCgpPT57RV89W1sicGF0aCIse2Q6Im0xNiAzIDQgNC00IDQifV0sWyJwYXRoIix7ZDoiTTIwIDdINCJ9XSxbInBhdGgiLHtkOiJtOCAyMS00LTQgNC00In1dLFsicGF0aCIse2Q6Ik00IDE3aDE2In1dXX0pO3ZhciBQXyxiX2U9ZygoKT0+e1BfPVtbInBhdGgiLHtkOiJNMTcgMTJIMyJ9XSxbInBhdGgiLHtkOiJtMTEgMTggNi02LTYtNiJ9XSxbInBhdGgiLHtkOiJNMjEgNXYxNCJ9XV19KTt2YXIgSV8sdl9lPWcoKCk9PntJXz1bWyJwYXRoIix7ZDoiTTUgMTJoMTQifV0sWyJwYXRoIix7ZDoibTEyIDUgNyA3LTcgNyJ9XV19KTt2YXIgQV8seF9lPWcoKCk9PntBXz1bWyJwYXRoIix7ZDoibTMgOCA0LTQgNCA0In1dLFsicGF0aCIse2Q6Ik03IDR2MTYifV0sWyJwYXRoIix7ZDoiTTE3IDEwVjRoLTIifV0sWyJwYXRoIix7ZDoiTTE1IDEwaDQifV0sWyJyZWN0Iix7eDoiMTUiLHk6IjE0Iix3aWR0aDoiNCIsaGVpZ2h0OiI2IixyeToiMiJ9XV19KTt2YXIgTl8seV9lPWcoKCk9PntOXz1bWyJwYXRoIix7ZDoibTMgOCA0LTQgNCA0In1dLFsicGF0aCIse2Q6Ik03IDR2MTYifV0sWyJyZWN0Iix7eDoiMTUiLHk6IjQiLHdpZHRoOiI0IixoZWlnaHQ6IjYiLHJ5OiIyIn1dLFsicGF0aCIse2Q6Ik0xNyAyMHYtNmgtMiJ9XSxbInBhdGgiLHtkOiJNMTUgMjBoNCJ9XV19KTt2YXIgTWYsd19lPWcoKCk9PntNZj1bWyJwYXRoIix7ZDoibTMgOCA0LTQgNCA0In1dLFsicGF0aCIse2Q6Ik03IDR2MTYifV0sWyJwYXRoIix7ZDoiTTIwIDhoLTUifV0sWyJwYXRoIix7ZDoiTTE1IDEwVjYuNWEyLjUgMi41IDAgMCAxIDUgMFYxMCJ9XSxbInBhdGgiLHtkOiJNMTUgMTRoNWwtNSA2aDUifV1dfSk7dmFyIFJfLGtfZT1nKCgpPT57Ul89W1sicGF0aCIse2Q6Im0yMSAxNi00IDQtNC00In1dLFsicGF0aCIse2Q6Ik0xNyAyMFY0In1dLFsicGF0aCIse2Q6Im0zIDggNC00IDQgNCJ9XSxbInBhdGgiLHtkOiJNNyA0djE2In1dXX0pO3ZhciBPXyxTX2U9ZygoKT0+e09fPVtbInBhdGgiLHtkOiJtNSA5IDctNyA3IDcifV0sWyJwYXRoIix7ZDoiTTEyIDE2VjIifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIyMSIscjoiMSJ9XV19KTt2YXIgRl8sX19lPWcoKCk9PntGXz1bWyJwYXRoIix7ZDoibTE4IDktNi02LTYgNiJ9XSxbInBhdGgiLHtkOiJNMTIgM3YxNCJ9XSxbInBhdGgiLHtkOiJNNSAyMWgxNCJ9XV19KTt2YXIgQl8sTV9lPWcoKCk9PntCXz1bWyJwYXRoIix7ZDoiTTcgMTdWN2gxMCJ9XSxbInBhdGgiLHtkOiJNMTcgMTcgNyA3In1dXX0pO3ZhciB6Zix6X2U9ZygoKT0+e3pmPVtbInBhdGgiLHtkOiJtMyA4IDQtNCA0IDQifV0sWyJwYXRoIix7ZDoiTTcgNHYxNiJ9XSxbInBhdGgiLHtkOiJNMTEgMTJoNCJ9XSxbInBhdGgiLHtkOiJNMTEgMTZoNyJ9XSxbInBhdGgiLHtkOiJNMTEgMjBoMTAifV1dfSk7dmFyIEhfLENfZT1nKCgpPT57SF89W1sicGF0aCIse2Q6Ik03IDdoMTB2MTAifV0sWyJwYXRoIix7ZDoiTTcgMTcgMTcgNyJ9XV19KTt2YXIgcV8sVF9lPWcoKCk9PntxXz1bWyJwYXRoIix7ZDoibTMgOCA0LTQgNCA0In1dLFsicGF0aCIse2Q6Ik03IDR2MTYifV0sWyJwYXRoIix7ZDoiTTExIDEyaDEwIn1dLFsicGF0aCIse2Q6Ik0xMSAxNmg3In1dLFsicGF0aCIse2Q6Ik0xMSAyMGg0In1dXX0pO3ZhciBqXywkX2U9ZygoKT0+e2pfPVtbInBhdGgiLHtkOiJNNSAzaDE0In1dLFsicGF0aCIse2Q6Im0xOCAxMy02LTYtNiA2In1dLFsicGF0aCIse2Q6Ik0xMiA3djE0In1dXX0pO3ZhciBWXyxEX2U9ZygoKT0+e1ZfPVtbInBhdGgiLHtkOiJtNSAxMiA3LTcgNyA3In1dLFsicGF0aCIse2Q6Ik0xMiAxOVY1In1dXX0pO3ZhciBDZixMX2U9ZygoKT0+e0NmPVtbInBhdGgiLHtkOiJtMyA4IDQtNCA0IDQifV0sWyJwYXRoIix7ZDoiTTcgNHYxNiJ9XSxbInBhdGgiLHtkOiJNMTUgNGg1bC01IDZoNSJ9XSxbInBhdGgiLHtkOiJNMTUgMjB2LTMuNWEyLjUgMi41IDAgMCAxIDUgMFYyMCJ9XSxbInBhdGgiLHtkOiJNMjAgMThoLTUifV1dfSk7dmFyIFVfLEVfZT1nKCgpPT57VV89W1sicGF0aCIse2Q6Ik0xMiA2djEyIn1dLFsicGF0aCIse2Q6Ik0xNy4xOTYgOSA2LjgwNCAxNSJ9XSxbInBhdGgiLHtkOiJtNi44MDQgOSAxMC4zOTIgNiJ9XV19KTt2YXIgV18sUF9lPWcoKCk9PntXXz1bWyJwYXRoIix7ZDoibTQgNiAzLTMgMyAzIn1dLFsicGF0aCIse2Q6Ik03IDE3VjMifV0sWyJwYXRoIix7ZDoibTE0IDYgMy0zIDMgMyJ9XSxbInBhdGgiLHtkOiJNMTcgMTdWMyJ9XSxbInBhdGgiLHtkOiJNNCAyMWgxNiJ9XV19KTt2YXIgR18sSV9lPWcoKCk9PntHXz1bWyJwYXRoIix7ZDoiTTEyLjk4MyAyMS4xODZhMSAxIDAgMCAxLTEuOTY2IDAgMTAgMTAgMCAwIDAtOC4yMDMtOC4yMDMgMSAxIDAgMCAxIDAtMS45NjYgMTAgMTAgMCAwIDAgOC4yMDMtOC4yMDMgMSAxIDAgMCAxIDEuOTY2IDAgMTAgMTAgMCAwIDAgOC4yMDMgOC4yMDMgMSAxIDAgMCAxIDAgMS45NjYgMTAgMTAgMCAwIDAtOC4yMDMgOC4yMDMifV1dfSk7dmFyIEtfLEFfZT1nKCgpPT57S189W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjQifV0sWyJwYXRoIix7ZDoiTTE2IDh2NWEzIDMgMCAwIDAgNiAwdi0xYTEwIDEwIDAgMSAwLTQgOCJ9XV19KTt2YXIgWV8sTl9lPWcoKCk9PntZXz1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMSJ9XSxbInBhdGgiLHtkOiJNMjAuMiAyMC4yYzIuMDQtMi4wMy4wMi03LjM2LTQuNS0xMS45LTQuNTQtNC41Mi05Ljg3LTYuNTQtMTEuOS00LjUtMi4wNCAyLjAzLS4wMiA3LjM2IDQuNSAxMS45IDQuNTQgNC41MiA5Ljg3IDYuNTQgMTEuOSA0LjVaIn1dLFsicGF0aCIse2Q6Ik0xNS43IDE1LjdjNC41Mi00LjU0IDYuNTQtOS44NyA0LjUtMTEuOS0yLjAzLTIuMDQtNy4zNi0uMDItMTEuOSA0LjUtNC41MiA0LjU0LTYuNTQgOS44Ny00LjUgMTEuOSAyLjAzIDIuMDQgNy4zNi4wMiAxMS45LTQuNVoifV1dfSk7dmFyIFpfLFJfZT1nKCgpPT57Wl89W1sicGF0aCIse2Q6Ik0yIDEwdjMifV0sWyJwYXRoIix7ZDoiTTYgNnYxMSJ9XSxbInBhdGgiLHtkOiJNMTAgM3YxOCJ9XSxbInBhdGgiLHtkOiJNMTQgOHY3In1dLFsicGF0aCIse2Q6Ik0xOCA1djEzIn1dLFsicGF0aCIse2Q6Ik0yMiAxMHYzIn1dXX0pO3ZhciBYXyxPX2U9ZygoKT0+e1hfPVtbInBhdGgiLHtkOiJNMiAxM2EyIDIgMCAwIDAgMi0yVjdhMiAyIDAgMCAxIDQgMHYxM2EyIDIgMCAwIDAgNCAwVjRhMiAyIDAgMCAxIDQgMHYxM2EyIDIgMCAwIDAgNCAwdi00YTIgMiAwIDAgMSAyLTIifV1dfSk7dmFyIFFfLEZfZT1nKCgpPT57UV89W1sicGF0aCIse2Q6Im0xNS40NzcgMTIuODkgMS41MTUgOC41MjZhLjUuNSAwIDAgMS0uODEuNDdsLTMuNTgtMi42ODdhMSAxIDAgMCAwLTEuMTk3IDBsLTMuNTg2IDIuNjg2YS41LjUgMCAwIDEtLjgxLS40NjlsMS41MTQtOC41MjYifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiI4IixyOiI2In1dXX0pO3ZhciBKXyxCX2U9ZygoKT0+e0pfPVtbInBhdGgiLHtkOiJtMTQgMTItOC4zODEgOC4zOGExIDEgMCAwIDEtMy4wMDEtM0wxMSA5In1dLFsicGF0aCIse2Q6Ik0xNSAxNS41YS41LjUgMCAwIDAgLjUuNUE2LjUgNi41IDAgMCAwIDIyIDkuNWEuNS41IDAgMCAwLS41LS41aC0xLjY3MmEyIDIgMCAwIDEtMS40MTQtLjU4NmwtNS4wNjItNS4wNjJhMS4yMDUgMS4yMDUgMCAwIDAtMS43MDQgMEw5LjM1MiA1LjY0OGExLjIwNSAxLjIwNSAwIDAgMCAwIDEuNzA0bDUuMDYyIDUuMDYyQTIgMiAwIDAgMSAxNSAxMy44Mjh6In1dXX0pO3ZhciBlTSxIX2U9ZygoKT0+e2VNPVtbInBhdGgiLHtkOiJNMTAgMTZjLjUuMyAxLjIuNSAyIC41czEuNS0uMiAyLS41In1dLFsicGF0aCIse2Q6Ik0xNSAxMmguMDEifV0sWyJwYXRoIix7ZDoiTTE5LjM4IDYuODEzQTkgOSAwIDAgMSAyMC44IDEwLjJhMiAyIDAgMCAxIDAgMy42IDkgOSAwIDAgMS0xNy42IDAgMiAyIDAgMCAxIDAtMy42QTkgOSAwIDAgMSAxMiAzYzIgMCAzLjUgMS4xIDMuNSAyLjVzLS45IDIuNS0yIDIuNWMtLjggMC0xLjUtLjQtMS41LTEifV0sWyJwYXRoIix7ZDoiTTkgMTJoLjAxIn1dXX0pO3ZhciBUZixxX2U9ZygoKT0+e1RmPVtbInBhdGgiLHtkOiJNMTMuNSAxMC41IDE1IDkifV0sWyJwYXRoIix7ZDoiTTQgNHYxNWExIDEgMCAwIDAgMSAxaDE1In1dLFsicGF0aCIse2Q6Ik00LjI5MyAxOS43MDcgNiAxOCJ9XSxbInBhdGgiLHtkOiJtOSAxNSAxLjUtMS41In1dXX0pO3ZhciB0TSxqX2U9ZygoKT0+e3RNPVtbInBhdGgiLHtkOiJNNCAxMGE0IDQgMCAwIDEgNC00aDhhNCA0IDAgMCAxIDQgNHYxMGEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMnoifV0sWyJwYXRoIix7ZDoiTTggMTBoOCJ9XSxbInBhdGgiLHtkOiJNOCAxOGg4In1dLFsicGF0aCIse2Q6Ik04IDIydi02YTIgMiAwIDAgMSAyLTJoNGEyIDIgMCAwIDEgMiAydjYifV0sWyJwYXRoIix7ZDoiTTkgNlY0YTIgMiAwIDAgMSAyLTJoMmEyIDIgMCAwIDEgMiAydjIifV1dfSk7dmFyIGFNLFZfZT1nKCgpPT57YU09W1sicGF0aCIse2Q6Ik0zLjg1IDguNjJhNCA0IDAgMCAxIDQuNzgtNC43NyA0IDQgMCAwIDEgNi43NCAwIDQgNCAwIDAgMSA0Ljc4IDQuNzggNCA0IDAgMCAxIDAgNi43NCA0IDQgMCAwIDEtNC43NyA0Ljc4IDQgNCAwIDAgMS02Ljc1IDAgNCA0IDAgMCAxLTQuNzgtNC43NyA0IDQgMCAwIDEgMC02Ljc2WiJ9XSxbImxpbmUiLHt4MToiMTIiLHgyOiIxMiIseTE6IjgiLHkyOiIxMiJ9XSxbImxpbmUiLHt4MToiMTIiLHgyOiIxMi4wMSIseTE6IjE2Iix5MjoiMTYifV1dfSk7dmFyIHNNLFVfZT1nKCgpPT57c009W1sicGF0aCIse2Q6Ik0zLjg1IDguNjJhNCA0IDAgMCAxIDQuNzgtNC43NyA0IDQgMCAwIDEgNi43NCAwIDQgNCAwIDAgMSA0Ljc4IDQuNzggNCA0IDAgMCAxIDAgNi43NCA0IDQgMCAwIDEtNC43NyA0Ljc4IDQgNCAwIDAgMS02Ljc1IDAgNCA0IDAgMCAxLTQuNzgtNC43NyA0IDQgMCAwIDEgMC02Ljc2WiJ9XSxbInBhdGgiLHtkOiJNMTIgN3YxMCJ9XSxbInBhdGgiLHtkOiJNMTUuNCAxMGE0IDQgMCAxIDAgMCA0In1dXX0pO3ZhciAkZixXX2U9ZygoKT0+eyRmPVtbInBhdGgiLHtkOiJNMy44NSA4LjYyYTQgNCAwIDAgMSA0Ljc4LTQuNzcgNCA0IDAgMCAxIDYuNzQgMCA0IDQgMCAwIDEgNC43OCA0Ljc4IDQgNCAwIDAgMSAwIDYuNzQgNCA0IDAgMCAxLTQuNzcgNC43OCA0IDQgMCAwIDEtNi43NSAwIDQgNCAwIDAgMS00Ljc4LTQuNzcgNCA0IDAgMCAxIDAtNi43NloifV0sWyJwYXRoIix7ZDoibTkgMTIgMiAyIDQtNCJ9XV19KTt2YXIgaU0sR19lPWcoKCk9PntpTT1bWyJwYXRoIix7ZDoiTTMuODUgOC42MmE0IDQgMCAwIDEgNC43OC00Ljc3IDQgNCAwIDAgMSA2Ljc0IDAgNCA0IDAgMCAxIDQuNzggNC43OCA0IDQgMCAwIDEgMCA2Ljc0IDQgNCAwIDAgMS00Ljc3IDQuNzggNCA0IDAgMCAxLTYuNzUgMCA0IDQgMCAwIDEtNC43OC00Ljc3IDQgNCAwIDAgMSAwLTYuNzZaIn1dLFsicGF0aCIse2Q6Ik0xNiA4aC02YTIgMiAwIDEgMCAwIDRoNGEyIDIgMCAxIDEgMCA0SDgifV0sWyJwYXRoIix7ZDoiTTEyIDE4VjYifV1dfSk7dmFyIHJNLEtfZT1nKCgpPT57ck09W1sicGF0aCIse2Q6Ik0zLjg1IDguNjJhNCA0IDAgMCAxIDQuNzgtNC43NyA0IDQgMCAwIDEgNi43NCAwIDQgNCAwIDAgMSA0Ljc4IDQuNzggNCA0IDAgMCAxIDAgNi43NCA0IDQgMCAwIDEtNC43NyA0Ljc4IDQgNCAwIDAgMS02Ljc1IDAgNCA0IDAgMCAxLTQuNzgtNC43NyA0IDQgMCAwIDEgMC02Ljc2WiJ9XSxbInBhdGgiLHtkOiJNNyAxMmg1In1dLFsicGF0aCIse2Q6Ik0xNSA5LjRhNCA0IDAgMSAwIDAgNS4yIn1dXX0pO3ZhciBvTSxZX2U9ZygoKT0+e29NPVtbInBhdGgiLHtkOiJNMy44NSA4LjYyYTQgNCAwIDAgMSA0Ljc4LTQuNzcgNCA0IDAgMCAxIDYuNzQgMCA0IDQgMCAwIDEgNC43OCA0Ljc4IDQgNCAwIDAgMSAwIDYuNzQgNCA0IDAgMCAxLTQuNzcgNC43OCA0IDQgMCAwIDEtNi43NSAwIDQgNCAwIDAgMS00Ljc4LTQuNzcgNCA0IDAgMCAxIDAtNi43NloifV0sWyJwYXRoIix7ZDoiTTggOGg4In1dLFsicGF0aCIse2Q6Ik04IDEyaDgifV0sWyJwYXRoIix7ZDoibTEzIDE3LTUtMWgxYTQgNCAwIDAgMCAwLTgifV1dfSk7dmFyIG5NLFpfZT1nKCgpPT57bk09W1sicGF0aCIse2Q6Ik0zLjg1IDguNjJhNCA0IDAgMCAxIDQuNzgtNC43NyA0IDQgMCAwIDEgNi43NCAwIDQgNCAwIDAgMSA0Ljc4IDQuNzggNCA0IDAgMCAxIDAgNi43NCA0IDQgMCAwIDEtNC43NyA0Ljc4IDQgNCAwIDAgMS02Ljc1IDAgNCA0IDAgMCAxLTQuNzgtNC43NyA0IDQgMCAwIDEgMC02Ljc2WiJ9XSxbImxpbmUiLHt4MToiMTIiLHgyOiIxMiIseTE6IjE2Iix5MjoiMTIifV0sWyJsaW5lIix7eDE6IjEyIix4MjoiMTIuMDEiLHkxOiI4Iix5MjoiOCJ9XV19KTt2YXIgbE0sWF9lPWcoKCk9PntsTT1bWyJwYXRoIix7ZDoiTTMuODUgOC42MmE0IDQgMCAwIDEgNC43OC00Ljc3IDQgNCAwIDAgMSA2Ljc0IDAgNCA0IDAgMCAxIDQuNzggNC43OCA0IDQgMCAwIDEgMCA2Ljc0IDQgNCAwIDAgMS00Ljc3IDQuNzggNCA0IDAgMCAxLTYuNzUgMCA0IDQgMCAwIDEtNC43OC00Ljc3IDQgNCAwIDAgMSAwLTYuNzZaIn1dLFsicGF0aCIse2Q6Im05IDggMyAzdjcifV0sWyJwYXRoIix7ZDoibTEyIDExIDMtMyJ9XSxbInBhdGgiLHtkOiJNOSAxMmg2In1dLFsicGF0aCIse2Q6Ik05IDE2aDYifV1dfSk7dmFyIGNNLFFfZT1nKCgpPT57Y009W1sicGF0aCIse2Q6Ik0zLjg1IDguNjJhNCA0IDAgMCAxIDQuNzgtNC43NyA0IDQgMCAwIDEgNi43NCAwIDQgNCAwIDAgMSA0Ljc4IDQuNzggNCA0IDAgMCAxIDAgNi43NCA0IDQgMCAwIDEtNC43NyA0Ljc4IDQgNCAwIDAgMS02Ljc1IDAgNCA0IDAgMCAxLTQuNzgtNC43NyA0IDQgMCAwIDEgMC02Ljc2WiJ9XSxbImxpbmUiLHt4MToiOCIseDI6IjE2Iix5MToiMTIiLHkyOiIxMiJ9XV19KTt2YXIgZE0sSl9lPWcoKCk9PntkTT1bWyJwYXRoIix7ZDoiTTMuODUgOC42MmE0IDQgMCAwIDEgNC43OC00Ljc3IDQgNCAwIDAgMSA2Ljc0IDAgNCA0IDAgMCAxIDQuNzggNC43OCA0IDQgMCAwIDEgMCA2Ljc0IDQgNCAwIDAgMS00Ljc3IDQuNzggNCA0IDAgMCAxLTYuNzUgMCA0IDQgMCAwIDEtNC43OC00Ljc3IDQgNCAwIDAgMSAwLTYuNzZaIn1dLFsicGF0aCIse2Q6Im0xNSA5LTYgNiJ9XSxbInBhdGgiLHtkOiJNOSA5aC4wMSJ9XSxbInBhdGgiLHtkOiJNMTUgMTVoLjAxIn1dXX0pO3ZhciB1TSxlTWU9ZygoKT0+e3VNPVtbInBhdGgiLHtkOiJNMy44NSA4LjYyYTQgNCAwIDAgMSA0Ljc4LTQuNzcgNCA0IDAgMCAxIDYuNzQgMCA0IDQgMCAwIDEgNC43OCA0Ljc4IDQgNCAwIDAgMSAwIDYuNzQgNCA0IDAgMCAxLTQuNzcgNC43OCA0IDQgMCAwIDEtNi43NSAwIDQgNCAwIDAgMS00Ljc4LTQuNzcgNCA0IDAgMCAxIDAtNi43NloifV0sWyJsaW5lIix7eDE6IjEyIix4MjoiMTIiLHkxOiI4Iix5MjoiMTYifV0sWyJsaW5lIix7eDE6IjgiLHgyOiIxNiIseTE6IjEyIix5MjoiMTIifV1dfSk7dmFyIHBNLHRNZT1nKCgpPT57cE09W1sicGF0aCIse2Q6Ik0zLjg1IDguNjJhNCA0IDAgMCAxIDQuNzgtNC43NyA0IDQgMCAwIDEgNi43NCAwIDQgNCAwIDAgMSA0Ljc4IDQuNzggNCA0IDAgMCAxIDAgNi43NCA0IDQgMCAwIDEtNC43NyA0Ljc4IDQgNCAwIDAgMS02Ljc1IDAgNCA0IDAgMCAxLTQuNzgtNC43NyA0IDQgMCAwIDEgMC02Ljc2WiJ9XSxbInBhdGgiLHtkOiJNOCAxMmg0In1dLFsicGF0aCIse2Q6Ik0xMCAxNlY5LjVhMi41IDIuNSAwIDAgMSA1IDAifV0sWyJwYXRoIix7ZDoiTTggMTZoNyJ9XV19KTt2YXIgRGYsYU1lPWcoKCk9PntEZj1bWyJwYXRoIix7ZDoiTTMuODUgOC42MmE0IDQgMCAwIDEgNC43OC00Ljc3IDQgNCAwIDAgMSA2Ljc0IDAgNCA0IDAgMCAxIDQuNzggNC43OCA0IDQgMCAwIDEgMCA2Ljc0IDQgNCAwIDAgMS00Ljc3IDQuNzggNCA0IDAgMCAxLTYuNzUgMCA0IDQgMCAwIDEtNC43OC00Ljc3IDQgNCAwIDAgMSAwLTYuNzZaIn1dLFsicGF0aCIse2Q6Ik05LjA5IDlhMyAzIDAgMCAxIDUuODMgMWMwIDItMyAzLTMgMyJ9XSxbImxpbmUiLHt4MToiMTIiLHgyOiIxMi4wMSIseTE6IjE3Iix5MjoiMTcifV1dfSk7dmFyIGhNLHNNZT1nKCgpPT57aE09W1sicGF0aCIse2Q6Ik0zLjg1IDguNjJhNCA0IDAgMCAxIDQuNzgtNC43NyA0IDQgMCAwIDEgNi43NCAwIDQgNCAwIDAgMSA0Ljc4IDQuNzggNCA0IDAgMCAxIDAgNi43NCA0IDQgMCAwIDEtNC43NyA0Ljc4IDQgNCAwIDAgMS02Ljc1IDAgNCA0IDAgMCAxLTQuNzgtNC43NyA0IDQgMCAwIDEgMC02Ljc2WiJ9XSxbInBhdGgiLHtkOiJNMTEgMTdWOGg0In1dLFsicGF0aCIse2Q6Ik0xMSAxMmgzIn1dLFsicGF0aCIse2Q6Ik05IDE2aDQifV1dfSk7dmFyIGZNLGlNZT1nKCgpPT57Zk09W1sicGF0aCIse2Q6Ik0zLjg1IDguNjJhNCA0IDAgMCAxIDQuNzgtNC43NyA0IDQgMCAwIDEgNi43NCAwIDQgNCAwIDAgMSA0Ljc4IDQuNzggNCA0IDAgMCAxIDAgNi43NCA0IDQgMCAwIDEtNC43NyA0Ljc4IDQgNCAwIDAgMS02Ljc1IDAgNCA0IDAgMCAxLTQuNzgtNC43NyA0IDQgMCAwIDEgMC02Ljc2WiJ9XSxbInBhdGgiLHtkOiJNOSAxNmg1In1dLFsicGF0aCIse2Q6Ik05IDEyaDVhMiAyIDAgMSAwIDAtNGgtM3Y5In1dXX0pO3ZhciBtTSxyTWU9ZygoKT0+e21NPVtbInBhdGgiLHtkOiJNMTEgN3YxMGE1IDUgMCAwIDAgNS01In1dLFsicGF0aCIse2Q6Im0xNSA4LTYgMyJ9XSxbInBhdGgiLHtkOiJNMy44NSA4LjYyYTQgNCAwIDAgMSA0Ljc4LTQuNzcgNCA0IDAgMCAxIDYuNzQgMCA0IDQgMCAwIDEgNC43OCA0Ljc4IDQgNCAwIDAgMSAwIDYuNzQgNCA0IDAgMCAxLTQuNzcgNC43OCA0IDQgMCAwIDEtNi43NSAwIDQgNCAwIDAgMS00Ljc4LTQuNzcgNCA0IDAgMCAxIDAtNi43NiJ9XV19KTt2YXIgZ00sb01lPWcoKCk9PntnTT1bWyJwYXRoIix7ZDoiTTMuODUgOC42MmE0IDQgMCAwIDEgNC43OC00Ljc3IDQgNCAwIDAgMSA2Ljc0IDAgNCA0IDAgMCAxIDQuNzggNC43OCA0IDQgMCAwIDEgMCA2Ljc0IDQgNCAwIDAgMS00Ljc3IDQuNzggNCA0IDAgMCAxLTYuNzUgMCA0IDQgMCAwIDEtNC43OC00Ljc3IDQgNCAwIDAgMSAwLTYuNzZaIn1dLFsibGluZSIse3gxOiIxNSIseDI6IjkiLHkxOiI5Iix5MjoiMTUifV0sWyJsaW5lIix7eDE6IjkiLHgyOiIxNSIseTE6IjkiLHkyOiIxNSJ9XV19KTt2YXIgYk0sbk1lPWcoKCk9PntiTT1bWyJwYXRoIix7ZDoiTTMuODUgOC42MmE0IDQgMCAwIDEgNC43OC00Ljc3IDQgNCAwIDAgMSA2Ljc0IDAgNCA0IDAgMCAxIDQuNzggNC43OCA0IDQgMCAwIDEgMCA2Ljc0IDQgNCAwIDAgMS00Ljc3IDQuNzggNCA0IDAgMCAxLTYuNzUgMCA0IDQgMCAwIDEtNC43OC00Ljc3IDQgNCAwIDAgMSAwLTYuNzZaIn1dXX0pO3ZhciB2TSxsTWU9ZygoKT0+e3ZNPVtbInBhdGgiLHtkOiJNMjIgMThINmEyIDIgMCAwIDEtMi0yVjdhMiAyIDAgMCAwLTItMiJ9XSxbInBhdGgiLHtkOiJNMTcgMTRWNGEyIDIgMCAwIDAtMi0yaC0xYTIgMiAwIDAgMC0yIDJ2MTAifV0sWyJyZWN0Iix7d2lkdGg6IjEzIixoZWlnaHQ6IjgiLHg6IjgiLHk6IjYiLHJ4OiIxIn1dLFsiY2lyY2xlIix7Y3g6IjE4IixjeToiMjAiLHI6IjIifV0sWyJjaXJjbGUiLHtjeDoiOSIsY3k6IjIwIixyOiIyIn1dXX0pO3ZhciB4TSxjTWU9ZygoKT0+e3hNPVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9XSxbInBhdGgiLHtkOiJNNC45MjkgNC45MjkgMTkuMDcgMTkuMDcxIn1dXX0pO3ZhciB5TSxkTWU9ZygoKT0+e3lNPVtbInBhdGgiLHtkOiJNMTIgMTZ2MWEyIDIgMCAwIDAgMiAyaDFhMiAyIDAgMCAxIDIgMnYxIn1dLFsicGF0aCIse2Q6Ik0xMiA2YTIgMiAwIDAgMSAyIDIifV0sWyJwYXRoIix7ZDoiTTE4IDhjMCA0LTMuNSA4LTYgOHMtNi00LTYtOGE2IDYgMCAwIDEgMTIgMCJ9XV19KTt2YXIgd00sdU1lPWcoKCk9Pnt3TT1bWyJwYXRoIix7ZDoiTTQgMTNjMy41LTIgOC0yIDEwIDJhNS41IDUuNSAwIDAgMSA4IDUifV0sWyJwYXRoIix7ZDoiTTUuMTUgMTcuODljNS41Mi0xLjUyIDguNjUtNi44OSA3LTEyQzExLjU1IDQgMTEuNSAyIDEzIDJjMy4yMiAwIDUgNS41IDUgOCAwIDYuNS00LjIgMTItMTAuNDkgMTJDNS4xMSAyMiAyIDIyIDIgMjBjMC0xLjUgMS4xNC0xLjU1IDMuMTUtMi4xMVoifV1dfSk7dmFyIGtNLHBNZT1nKCgpPT57a009W1sicGF0aCIse2Q6Ik0xMCAxMC4wMWguMDEifV0sWyJwYXRoIix7ZDoiTTEwIDE0LjAxaC4wMSJ9XSxbInBhdGgiLHtkOiJNMTQgMTAuMDFoLjAxIn1dLFsicGF0aCIse2Q6Ik0xNCAxNC4wMWguMDEifV0sWyJwYXRoIix7ZDoiTTE4IDZ2MTIifV0sWyJwYXRoIix7ZDoiTTYgNnYxMiJ9XSxbInJlY3QiLHt4OiIyIix5OiI2Iix3aWR0aDoiMjAiLGhlaWdodDoiMTIiLHJ4OiIyIn1dXX0pO3ZhciBTTSxoTWU9ZygoKT0+e1NNPVtbInBhdGgiLHtkOiJNMTIgMThINGEyIDIgMCAwIDEtMi0yVjhhMiAyIDAgMCAxIDItMmgxNmEyIDIgMCAwIDEgMiAydjUifV0sWyJwYXRoIix7ZDoiTTE4IDEyaC4wMSJ9XSxbInBhdGgiLHtkOiJNMTkgMjJ2LTYifV0sWyJwYXRoIix7ZDoibTIyIDE5LTMtMy0zIDMifV0sWyJwYXRoIix7ZDoiTTYgMTJoLjAxIn1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjIifV1dfSk7dmFyIF9NLGZNZT1nKCgpPT57X009W1sicGF0aCIse2Q6Ik0xMiAxOEg0YTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDE2YTIgMiAwIDAgMSAyIDJ2NSJ9XSxbInBhdGgiLHtkOiJtMTYgMTkgMyAzIDMtMyJ9XSxbInBhdGgiLHtkOiJNMTggMTJoLjAxIn1dLFsicGF0aCIse2Q6Ik0xOSAxNnY2In1dLFsicGF0aCIse2Q6Ik02IDEyaC4wMSJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIyIn1dXX0pO3ZhciBNTSxtTWU9ZygoKT0+e01NPVtbInBhdGgiLHtkOiJNMTMgMThINGEyIDIgMCAwIDEtMi0yVjhhMiAyIDAgMCAxIDItMmgxNmEyIDIgMCAwIDEgMiAydjUifV0sWyJwYXRoIix7ZDoibTE3IDE3IDUgNSJ9XSxbInBhdGgiLHtkOiJNMTggMTJoLjAxIn1dLFsicGF0aCIse2Q6Im0yMiAxNy01IDUifV0sWyJwYXRoIix7ZDoiTTYgMTJoLjAxIn1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjIifV1dfSk7dmFyIHpNLGdNZT1nKCgpPT57ek09W1sicmVjdCIse3dpZHRoOiIyMCIsaGVpZ2h0OiIxMiIseDoiMiIseToiNiIscng6IjIifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMiJ9XSxbInBhdGgiLHtkOiJNNiAxMmguMDFNMTggMTJoLjAxIn1dXX0pO3ZhciBDTSxiTWU9ZygoKT0+e0NNPVtbInBhdGgiLHtkOiJNMyA1djE0In1dLFsicGF0aCIse2Q6Ik04IDV2MTQifV0sWyJwYXRoIix7ZDoiTTEyIDV2MTQifV0sWyJwYXRoIix7ZDoiTTE3IDV2MTQifV0sWyJwYXRoIix7ZDoiTTIxIDV2MTQifV1dfSk7dmFyIFRNLHZNZT1nKCgpPT57VE09W1sicGF0aCIse2Q6Ik0xMCAzYTQxIDQxIDAgMCAwIDAgMTgifV0sWyJwYXRoIix7ZDoiTTE0IDNhNDEgNDEgMCAwIDEgMCAxOCJ9XSxbInBhdGgiLHtkOiJNMTcgM2EyIDIgMCAwIDEgMS42OC45MiAxNS4yNSAxNS4yNSAwIDAgMSAwIDE2LjE2QTIgMiAwIDAgMSAxNyAyMUg3YTIgMiAwIDAgMS0xLjY4LS45MiAxNS4yNSAxNS4yNSAwIDAgMSAwLTE2LjE2QTIgMiAwIDAgMSA3IDN6In1dLFsicGF0aCIse2Q6Ik0zLjg0IDE3aDE2LjMyIn1dLFsicGF0aCIse2Q6Ik0zLjg0IDdoMTYuMzIifV1dfSk7dmFyICRNLHhNZT1nKCgpPT57JE09W1sicGF0aCIse2Q6Ik00IDIwaDE2In1dLFsicGF0aCIse2Q6Im02IDE2IDYtMTIgNiAxMiJ9XSxbInBhdGgiLHtkOiJNOCAxMmg4In1dXX0pO3ZhciBETSx5TWU9ZygoKT0+e0RNPVtbInBhdGgiLHtkOiJNMTAgNCA4IDYifV0sWyJwYXRoIix7ZDoiTTE3IDE5djIifV0sWyJwYXRoIix7ZDoiTTIgMTJoMjAifV0sWyJwYXRoIix7ZDoiTTcgMTl2MiJ9XSxbInBhdGgiLHtkOiJNOSA1IDcuNjIxIDMuNjIxQTIuMTIxIDIuMTIxIDAgMCAwIDQgNXYxMmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJ2LTUifV1dfSk7dmFyIExNLHdNZT1nKCgpPT57TE09W1sicGF0aCIse2Q6Im0xMSA3LTMgNWg0bC0zIDUifV0sWyJwYXRoIix7ZDoiTTE0Ljg1NiA2SDE2YTIgMiAwIDAgMSAyIDJ2OGEyIDIgMCAwIDEtMiAyaC0yLjkzNSJ9XSxbInBhdGgiLHtkOiJNMjIgMTR2LTQifV0sWyJwYXRoIix7ZDoiTTUuMTQgMThINGEyIDIgMCAwIDEtMi0yVjhhMiAyIDAgMCAxIDItMmgyLjkzNiJ9XV19KTt2YXIgRU0sa01lPWcoKCk9PntFTT1bWyJwYXRoIix7ZDoiTTEwIDEwdjQifV0sWyJwYXRoIix7ZDoiTTE0IDEwdjQifV0sWyJwYXRoIix7ZDoiTTIyIDE0di00In1dLFsicGF0aCIse2Q6Ik02IDEwdjQifV0sWyJyZWN0Iix7eDoiMiIseToiNiIsd2lkdGg6IjE2IixoZWlnaHQ6IjEyIixyeDoiMiJ9XV19KTt2YXIgUE0sU01lPWcoKCk9PntQTT1bWyJwYXRoIix7ZDoiTTIyIDE0di00In1dLFsicGF0aCIse2Q6Ik02IDE0di00In1dLFsicmVjdCIse3g6IjIiLHk6IjYiLHdpZHRoOiIxNiIsaGVpZ2h0OiIxMiIscng6IjIifV1dfSk7dmFyIElNLF9NZT1nKCgpPT57SU09W1sicGF0aCIse2Q6Ik0xMCAxNHYtNCJ9XSxbInBhdGgiLHtkOiJNMjIgMTR2LTQifV0sWyJwYXRoIix7ZDoiTTYgMTR2LTQifV0sWyJyZWN0Iix7eDoiMiIseToiNiIsd2lkdGg6IjE2IixoZWlnaHQ6IjEyIixyeDoiMiJ9XV19KTt2YXIgQU0sTU1lPWcoKCk9PntBTT1bWyJwYXRoIix7ZDoiTTEwIDl2NiJ9XSxbInBhdGgiLHtkOiJNMTIuNTQzIDZIMTZhMiAyIDAgMCAxIDIgMnY4YTIgMiAwIDAgMS0yIDJoLTMuNjA1In1dLFsicGF0aCIse2Q6Ik0yMiAxNHYtNCJ9XSxbInBhdGgiLHtkOiJNNyAxMmg2In1dLFsicGF0aCIse2Q6Ik03LjYwNiAxOEg0YTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDMuNjA2In1dXX0pO3ZhciBOTSx6TWU9ZygoKT0+e05NPVtbInBhdGgiLHtkOiJNMTAgMTdoLjAxIn1dLFsicGF0aCIse2Q6Ik0xMCA3djYifV0sWyJwYXRoIix7ZDoiTTE0IDZoMmEyIDIgMCAwIDEgMiAydjhhMiAyIDAgMCAxLTIgMmgtMiJ9XSxbInBhdGgiLHtkOiJNMjIgMTR2LTQifV0sWyJwYXRoIix7ZDoiTTYgMThINGEyIDIgMCAwIDEtMi0yVjhhMiAyIDAgMCAxIDItMmgyIn1dXX0pO3ZhciBSTSxDTWU9ZygoKT0+e1JNPVtbInBhdGgiLHtkOiJNIDIyIDE0IEwgMjIgMTAifV0sWyJyZWN0Iix7eDoiMiIseToiNiIsd2lkdGg6IjE2IixoZWlnaHQ6IjEyIixyeDoiMiJ9XV19KTt2YXIgT00sVE1lPWcoKCk9PntPTT1bWyJwYXRoIix7ZDoiTTkgOWMtLjY0LjY0LTEuNTIxLjk1NC0yLjQwMiAxLjE2NUE2IDYgMCAwIDAgOCAyMmExMy45NiAxMy45NiAwIDAgMCA5LjktNC4xIn1dLFsicGF0aCIse2Q6Ik0xMC43NSA1LjA5M0E2IDYgMCAwIDEgMjIgOGMwIDIuNDExLS42MSA0LjY4LTEuNjgzIDYuNjYifV0sWyJwYXRoIix7ZDoiTTUuMzQxIDEwLjYyYTQgNCAwIDAgMCA2LjQ4NyAxLjIwOE0xMC42MiA1LjM0MWE0LjAxNSA0LjAxNSAwIDAgMSAyLjAzOSAyLjA0In1dLFsibGluZSIse3gxOiIyIix4MjoiMjIiLHkxOiIyIix5MjoiMjIifV1dfSk7dmFyIEZNLCRNZT1nKCgpPT57Rk09W1sicGF0aCIse2Q6Ik00LjUgM2gxNSJ9XSxbInBhdGgiLHtkOiJNNiAzdjE2YTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjMifV0sWyJwYXRoIix7ZDoiTTYgMTRoMTIifV1dfSk7dmFyIEJNLERNZT1nKCgpPT57Qk09W1sicGF0aCIse2Q6Ik0yIDIwdi04YTIgMiAwIDAgMSAyLTJoMTZhMiAyIDAgMCAxIDIgMnY4In1dLFsicGF0aCIse2Q6Ik00IDEwVjZhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjQifV0sWyJwYXRoIix7ZDoiTTEyIDR2NiJ9XSxbInBhdGgiLHtkOiJNMiAxOGgyMCJ9XV19KTt2YXIgSE0sTE1lPWcoKCk9PntITT1bWyJwYXRoIix7ZDoiTTEwLjE2NSA2LjU5OEM5Ljk1NCA3LjQ3OCA5LjY0IDguMzYgOSA5Yy0uNjQuNjQtMS41MjEuOTU0LTIuNDAyIDEuMTY1QTYgNiAwIDAgMCA4IDIyYzcuNzMyIDAgMTQtNi4yNjggMTQtMTRhNiA2IDAgMCAwLTExLjgzNS0xLjQwMloifV0sWyJwYXRoIix7ZDoiTTUuMzQxIDEwLjYyYTQgNCAwIDEgMCA1LjI3OS01LjI4In1dXX0pO3ZhciBxTSxFTWU9ZygoKT0+e3FNPVtbInBhdGgiLHtkOiJNMyAyMHYtOGEyIDIgMCAwIDEgMi0yaDE0YTIgMiAwIDAgMSAyIDJ2OCJ9XSxbInBhdGgiLHtkOiJNNSAxMFY2YTIgMiAwIDAgMSAyLTJoMTBhMiAyIDAgMCAxIDIgMnY0In1dLFsicGF0aCIse2Q6Ik0zIDE4aDE4In1dXX0pO3ZhciBqTSxQTWU9ZygoKT0+e2pNPVtbInBhdGgiLHtkOiJNMTEuNzcxIDYuMTA5YTIuNSAyLjUgMCAwIDEgMy4xMiAzLjEyIn1dLFsicGF0aCIse2Q6Ik0xNy44NTIgMTIuMTg1YTYuNSA2LjUgMCAwIDAtOS4wMzUtOS4wNCJ9XSxbInBhdGgiLHtkOiJNMTguMDEzIDE4LjAxM0MxNS4wMjkgMjAuMzQ5IDEwLjgzMSAyMiA3IDIyYTMgMyAwIDAgMS0yLjY4LTEuNjZMMi40IDE2LjUifV0sWyJwYXRoIix7ZDoibTE4LjUgNiAyLjE5IDQuNWE2LjQ4IDYuNDggMCAwIDEtLjEzOSA0LjM5MyJ9XSxbInBhdGgiLHtkOiJtMiAyIDIwIDIwIn1dLFsicGF0aCIse2Q6Ik02LjM1NSA2LjM3YTcgNyAwIDAgMC0uMDc1LjIzYy0xLjEgMy4xMy0uNzggMy45LTMuMTggNi4wOEEzIDMgMCAwIDAgNSAxOGMzLjM1NiAwIDYuOTkzLTEuMjY3IDkuODUtMy4xNTEifV1dfSk7dmFyIFZNLElNZT1nKCgpPT57Vk09W1sicGF0aCIse2Q6Ik0yIDR2MTYifV0sWyJwYXRoIix7ZDoiTTIgOGgxOGEyIDIgMCAwIDEgMiAydjEwIn1dLFsicGF0aCIse2Q6Ik0yIDE3aDIwIn1dLFsicGF0aCIse2Q6Ik02IDh2OSJ9XV19KTt2YXIgVU0sQU1lPWcoKCk9PntVTT1bWyJwYXRoIix7ZDoiTTE2LjQgMTMuN0E2LjUgNi41IDAgMSAwIDYuMjggNi42Yy0xLjEgMy4xMy0uNzggMy45LTMuMTggNi4wOEEzIDMgMCAwIDAgNSAxOGM0IDAgOC40LTEuOCAxMS40LTQuMyJ9XSxbInBhdGgiLHtkOiJtMTguNSA2IDIuMTkgNC41YTYuNDggNi40OCAwIDAgMS0yLjI5IDcuMkMxNS40IDIwLjIgMTEgMjIgNyAyMmEzIDMgMCAwIDEtMi42OC0xLjY2TDIuNCAxNi41In1dLFsiY2lyY2xlIix7Y3g6IjEyLjUiLGN5OiI4LjUiLHI6IjIuNSJ9XV19KTt2YXIgV00sTk1lPWcoKCk9PntXTT1bWyJwYXRoIix7ZDoiTTEzIDEzdjUifV0sWyJwYXRoIix7ZDoiTTE3IDExLjQ3VjgifV0sWyJwYXRoIix7ZDoiTTE3IDExaDFhMyAzIDAgMCAxIDIuNzQ1IDQuMjExIn1dLFsicGF0aCIse2Q6Im0yIDIgMjAgMjAifV0sWyJwYXRoIix7ZDoiTTUgOHYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMnYtMyJ9XSxbInBhdGgiLHtkOiJNNy41MzYgNy41MzVDNi43NjYgNy42NDkgNi4xNTQgOCA1LjUgOGEyLjUgMi41IDAgMCAxLTEuNzY4LTQuMjY4In1dLFsicGF0aCIse2Q6Ik04LjcyNyAzLjIwNEM5LjMwNiAyLjc2NyA5Ljg4NSAyIDExIDJjMS41NiAwIDIgMS41IDMgMS41czEuNzItLjUgMi41LS41YTEgMSAwIDEgMSAwIDVjLS43OCAwLTEuNS0uNS0yLjUtLjVhMy4xNDkgMy4xNDkgMCAwIDAtLjg0Mi4xMiJ9XSxbInBhdGgiLHtkOiJNOSAxNC42VjE4In1dXX0pO3ZhciBHTSxSTWU9ZygoKT0+e0dNPVtbInBhdGgiLHtkOiJNMTcgMTFoMWEzIDMgMCAwIDEgMCA2aC0xIn1dLFsicGF0aCIse2Q6Ik05IDEydjYifV0sWyJwYXRoIix7ZDoiTTEzIDEydjYifV0sWyJwYXRoIix7ZDoiTTE0IDcuNWMtMSAwLTEuNDQuNS0zIC41cy0yLS41LTMtLjUtMS43Mi41LTIuNS41YTIuNSAyLjUgMCAwIDEgMC01Yy43OCAwIDEuNTcuNSAyLjUuNVM5LjQ0IDIgMTEgMnMyIDEuNSAzIDEuNSAxLjcyLS41IDIuNS0uNWEyLjUgMi41IDAgMCAxIDAgNWMtLjc4IDAtMS41LS41LTIuNS0uNVoifV0sWyJwYXRoIix7ZDoiTTUgOHYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlY4In1dXX0pO3ZhciBLTSxPTWU9ZygoKT0+e0tNPVtbInBhdGgiLHtkOiJNMTAuMjY4IDIxYTIgMiAwIDAgMCAzLjQ2NCAwIn1dLFsicGF0aCIse2Q6Im0xNSA4IDIgMiA0LTQifV0sWyJwYXRoIix7ZDoiTTE2Ljg2MDcgNC40ODI0QTYgNiAwIDAgMCA2IDhDNiAxMi40OTkgNC41ODkgMTMuOTU2IDMuMjYyIDE1LjMyNiJ9XSxbInBhdGgiLHtkOiJNMy4yNjIgMTUuMzI2QTEgMSAwIDAgMCA0IDE3SDIwQTEgMSAwIDAgMCAyMC43NCAxNS4zMjdDMjAuMjA5IDE0Ljc3OSAxOS42NjUgMTQuMjE4IDE5LjIwMyAxMy40NTQifV1dfSk7dmFyIFlNLEZNZT1nKCgpPT57WU09W1sicGF0aCIse2Q6Ik0xMC4yNjggMjFhMiAyIDAgMCAwIDMuNDY0IDAifV0sWyJwYXRoIix7ZDoiTTExLjY4IDIuMDA5QTYgNiAwIDAgMCA2IDhjMCA0LjQ5OS0xLjQxMSA1Ljk1Ni0yLjczOCA3LjMyNkExIDEgMCAwIDAgNCAxN2gxNmExIDEgMCAwIDAgLjc0LTEuNjczYy0uODI0LS44NS0xLjY3OC0xLjczMS0yLjIxLTMuMzQ4In1dLFsiY2lyY2xlIix7Y3g6IjE4IixjeToiNSIscjoiMyJ9XV19KTt2YXIgWk0sQk1lPWcoKCk9PntaTT1bWyJwYXRoIix7ZDoiTTE4LjUxOCAxNy4zNDdBNyA3IDAgMCAxIDE0IDE5In1dLFsicGF0aCIse2Q6Ik0xOC44IDRBMTEgMTEgMCAwIDEgMjAgOSJ9XSxbInBhdGgiLHtkOiJNOSA5aC4wMSJ9XSxbImNpcmNsZSIse2N4OiIyMCIsY3k6IjE2IixyOiIyIn1dLFsiY2lyY2xlIix7Y3g6IjkiLGN5OiI5IixyOiI3In1dLFsicmVjdCIse3g6IjQiLHk6IjE2Iix3aWR0aDoiMTAiLGhlaWdodDoiNiIscng6IjIifV1dfSk7dmFyIFhNLEhNZT1nKCgpPT57WE09W1sicGF0aCIse2Q6Ik0xMC4yNjggMjFhMiAyIDAgMCAwIDMuNDY0IDAifV0sWyJwYXRoIix7ZDoiTTE3IDE3SDRhMSAxIDAgMCAxLS43NC0xLjY3M0M0LjU5IDEzLjk1NiA2IDEyLjQ5OSA2IDhhNiA2IDAgMCAxIC4yNTgtMS43NDIifV0sWyJwYXRoIix7ZDoibTIgMiAyMCAyMCJ9XSxbInBhdGgiLHtkOiJNOC42NjggMy4wMUE2IDYgMCAwIDEgMTggOGMwIDIuNjg3Ljc3IDQuNjUzIDEuNzA3IDYuMDUifV1dfSk7dmFyIFFNLHFNZT1nKCgpPT57UU09W1sicGF0aCIse2Q6Ik0xMC4yNjggMjFhMiAyIDAgMCAwIDMuNDY0IDAifV0sWyJwYXRoIix7ZDoiTTE1IDhoNiJ9XSxbInBhdGgiLHtkOiJNMTYuMjQzIDMuNzU3QTYgNiAwIDAgMCA2IDhjMCA0LjQ5OS0xLjQxMSA1Ljk1Ni0yLjczOCA3LjMyNkExIDEgMCAwIDAgNCAxN2gxNmExIDEgMCAwIDAgLjc0LTEuNjczQTkuNCA5LjQgMCAwIDEgMTguNjY3IDEyIn1dXX0pO3ZhciBKTSxqTWU9ZygoKT0+e0pNPVtbInBhdGgiLHtkOiJNMTAuMjY4IDIxYTIgMiAwIDAgMCAzLjQ2NCAwIn1dLFsicGF0aCIse2Q6Ik0xNSA4aDYifV0sWyJwYXRoIix7ZDoiTTE4IDV2NiJ9XSxbInBhdGgiLHtkOiJNMjAuMDAyIDE0LjQ2NGE5IDkgMCAwIDAgLjczOC44NjNBMSAxIDAgMCAxIDIwIDE3SDRhMSAxIDAgMCAxLS43NC0xLjY3M0M0LjU5IDEzLjk1NiA2IDEyLjQ5OSA2IDhhNiA2IDAgMCAxIDguNzUtNS4zMzIifV1dfSk7dmFyIGV6LFZNZT1nKCgpPT57ZXo9W1sicGF0aCIse2Q6Ik0xMC4yNjggMjFhMiAyIDAgMCAwIDMuNDY0IDAifV0sWyJwYXRoIix7ZDoiTTIyIDhjMC0yLjMtLjgtNC4zLTItNiJ9XSxbInBhdGgiLHtkOiJNMy4yNjIgMTUuMzI2QTEgMSAwIDAgMCA0IDE3aDE2YTEgMSAwIDAgMCAuNzQtMS42NzNDMTkuNDEgMTMuOTU2IDE4IDEyLjQ5OSAxOCA4QTYgNiAwIDAgMCA2IDhjMCA0LjQ5OS0xLjQxMSA1Ljk1Ni0yLjczOCA3LjMyNiJ9XSxbInBhdGgiLHtkOiJNNCAyQzIuOCAzLjcgMiA1LjcgMiA4In1dXX0pO3ZhciB0eixVTWU9ZygoKT0+e3R6PVtbInBhdGgiLHtkOiJNMTAuMjY4IDIxYTIgMiAwIDAgMCAzLjQ2NCAwIn1dLFsicGF0aCIse2Q6Ik0zLjI2MiAxNS4zMjZBMSAxIDAgMCAwIDQgMTdoMTZhMSAxIDAgMCAwIC43NC0xLjY3M0MxOS40MSAxMy45NTYgMTggMTIuNDk5IDE4IDhBNiA2IDAgMCAwIDYgOGMwIDQuNDk5LTEuNDExIDUuOTU2LTIuNzM4IDcuMzI2In1dXX0pO3ZhciBMZixXTWU9ZygoKT0+e0xmPVtbInJlY3QiLHt3aWR0aDoiMTMiLGhlaWdodDoiNyIseDoiMyIseToiMyIscng6IjEifV0sWyJwYXRoIix7ZDoibTIyIDE1LTMtMyAzLTMifV0sWyJyZWN0Iix7d2lkdGg6IjEzIixoZWlnaHQ6IjciLHg6IjMiLHk6IjE0IixyeDoiMSJ9XV19KTt2YXIgRWYsR01lPWcoKCk9PntFZj1bWyJyZWN0Iix7d2lkdGg6IjEzIixoZWlnaHQ6IjciLHg6IjgiLHk6IjMiLHJ4OiIxIn1dLFsicGF0aCIse2Q6Im0yIDkgMyAzLTMgMyJ9XSxbInJlY3QiLHt3aWR0aDoiMTMiLGhlaWdodDoiNyIseDoiOCIseToiMTQiLHJ4OiIxIn1dXX0pO3ZhciBheixLTWU9ZygoKT0+e2F6PVtbInJlY3QiLHt3aWR0aDoiNyIsaGVpZ2h0OiIxMyIseDoiMyIseToiMyIscng6IjEifV0sWyJwYXRoIix7ZDoibTkgMjIgMy0zIDMgMyJ9XSxbInJlY3QiLHt3aWR0aDoiNyIsaGVpZ2h0OiIxMyIseDoiMTQiLHk6IjMiLHJ4OiIxIn1dXX0pO3ZhciBzeixZTWU9ZygoKT0+e3N6PVtbInJlY3QiLHt3aWR0aDoiNyIsaGVpZ2h0OiIxMyIseDoiMyIseToiOCIscng6IjEifV0sWyJwYXRoIix7ZDoibTE1IDItMyAzLTMtMyJ9XSxbInJlY3QiLHt3aWR0aDoiNyIsaGVpZ2h0OiIxMyIseDoiMTQiLHk6IjgiLHJ4OiIxIn1dXX0pO3ZhciBpeixaTWU9ZygoKT0+e2l6PVtbInBhdGgiLHtkOiJNMTIuNDA5IDEzLjAxN0E1IDUgMCAwIDEgMjIgMTVjMCAzLjg2Ni00IDctOSA3LTQuMDc3IDAtOC4xNTMtLjgyLTEwLjM3MS0yLjQ2Mi0uNDI2LS4zMTYtLjYzMS0uODMyLS42Mi0xLjM2MkMyLjExOCAxMi43MjMgMi42MjcgMiAxMCAyYTMgMyAwIDAgMSAzIDMgMiAyIDAgMCAxLTIgMmMtMS4xMDUgMC0xLjY0LS40NDQtMi0xIn1dLFsicGF0aCIse2Q6Ik0xNSAxNGE1IDUgMCAwIDAtNy41ODQgMiJ9XSxbInBhdGgiLHtkOiJNOS45NjQgNi44MjVDOC4wMTkgNy45NzcgOS41IDEzIDggMTUifV1dfSk7dmFyIHJ6LFhNZT1nKCgpPT57cno9W1siY2lyY2xlIix7Y3g6IjE4LjUiLGN5OiIxNy41IixyOiIzLjUifV0sWyJjaXJjbGUiLHtjeDoiNS41IixjeToiMTcuNSIscjoiMy41In1dLFsiY2lyY2xlIix7Y3g6IjE1IixjeToiNSIscjoiMSJ9XSxbInBhdGgiLHtkOiJNMTIgMTcuNVYxNGwtMy0zIDQtMyAyIDNoMiJ9XV19KTt2YXIgb3osUU1lPWcoKCk9Pntvej1bWyJyZWN0Iix7eDoiMTQiLHk6IjE0Iix3aWR0aDoiNCIsaGVpZ2h0OiI2IixyeDoiMiJ9XSxbInJlY3QiLHt4OiI2Iix5OiI0Iix3aWR0aDoiNCIsaGVpZ2h0OiI2IixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNNiAyMGg0In1dLFsicGF0aCIse2Q6Ik0xNCAxMGg0In1dLFsicGF0aCIse2Q6Ik02IDE0aDJ2NiJ9XSxbInBhdGgiLHtkOiJNMTQgNGgydjYifV1dfSk7dmFyIG56LEpNZT1nKCgpPT57bno9W1sicGF0aCIse2Q6Ik0xMCAxMGg0In1dLFsicGF0aCIse2Q6Ik0xOSA3VjRhMSAxIDAgMCAwLTEtMWgtMmExIDEgMCAwIDAtMSAxdjMifV0sWyJwYXRoIix7ZDoiTTIwIDIxYTIgMiAwIDAgMCAyLTJ2LTMuODUxYzAtMS4zOS0yLTIuOTYyLTItNC44MjlWOGExIDEgMCAwIDAtMS0xaC00YTEgMSAwIDAgMC0xIDF2MTFhMiAyIDAgMCAwIDIgMnoifV0sWyJwYXRoIix7ZDoiTSAyMiAxNiBMIDIgMTYifV0sWyJwYXRoIix7ZDoiTTQgMjFhMiAyIDAgMCAxLTItMnYtMy44NTFjMC0xLjM5IDItMi45NjIgMi00LjgyOVY4YTEgMSAwIDAgMSAxLTFoNGExIDEgMCAwIDEgMSAxdjExYTIgMiAwIDAgMS0yIDJ6In1dLFsicGF0aCIse2Q6Ik05IDdWNGExIDEgMCAwIDAtMS0xSDZhMSAxIDAgMCAwLTEgMXYzIn1dXX0pO3ZhciBseixlemU9ZygoKT0+e2x6PVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjExLjkiLHI6IjIifV0sWyJwYXRoIix7ZDoiTTYuNyAzLjRjLS45IDIuNSAwIDUuMiAyLjIgNi43QzYuNSA5IDMuNyA5LjYgMiAxMS42In1dLFsicGF0aCIse2Q6Im04LjkgMTAuMSAxLjQuOCJ9XSxbInBhdGgiLHtkOiJNMTcuMyAzLjRjLjkgMi41IDAgNS4yLTIuMiA2LjcgMi40LTEuMiA1LjItLjYgNi45IDEuNSJ9XSxbInBhdGgiLHtkOiJtMTUuMSAxMC4xLTEuNC44In1dLFsicGF0aCIse2Q6Ik0xNi43IDIwLjhjLTIuNi0uNC00LjYtMi42LTQuNy01LjMtLjIgMi42LTIuMSA0LjgtNC43IDUuMiJ9XSxbInBhdGgiLHtkOiJNMTIgMTMuOXYxLjYifV0sWyJwYXRoIix7ZDoiTTEzLjUgNS40Yy0xLS4yLTItLjItMyAwIn1dLFsicGF0aCIse2Q6Ik0xNyAxNi40Yy43LS43IDEuMi0xLjYgMS41LTIuNSJ9XSxbInBhdGgiLHtkOiJNNS41IDEzLjljLjMuOS44IDEuOCAxLjUgMi41In1dXX0pO3ZhciBjeix0emU9ZygoKT0+e2N6PVtbInBhdGgiLHtkOiJNMTYgN2guMDEifV0sWyJwYXRoIix7ZDoiTTMuNCAxOEgxMmE4IDggMCAwIDAgOC04VjdhNCA0IDAgMCAwLTcuMjgtMi4zTDIgMjAifV0sWyJwYXRoIix7ZDoibTIwIDcgMiAuNS0yIC41In1dLFsicGF0aCIse2Q6Ik0xMCAxOHYzIn1dLFsicGF0aCIse2Q6Ik0xNCAxNy43NVYyMSJ9XSxbInBhdGgiLHtkOiJNNyAxOGE2IDYgMCAwIDAgMy44NC0xMC42MSJ9XV19KTt2YXIgZHosYXplPWcoKCk9Pntkej1bWyJwYXRoIix7ZDoiTTEyIDE4djQifV0sWyJwYXRoIix7ZDoibTE3IDE4IDEuOTU2LTExLjQ2OCJ9XSxbInBhdGgiLHtkOiJtMyA4IDcuODItNS42MTVhMiAyIDAgMCAxIDIuMzYgMEwyMSA4In1dLFsicGF0aCIse2Q6Ik00IDE4aDE2In1dLFsicGF0aCIse2Q6Ik03IDE4IDUuMDQ0IDYuNTMyIn1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiMTAiLHI6IjIifV1dfSk7dmFyIHV6LHN6ZT1nKCgpPT57dXo9W1sicGF0aCIse2Q6Ik0xMS43NjcgMTkuMDg5YzQuOTI0Ljg2OCA2LjE0LTYuMDI1IDEuMjE2LTYuODk0bS0xLjIxNiA2Ljg5NEw1Ljg2IDE4LjA0N201LjkwOCAxLjA0Mi0uMzQ3IDEuOTdtMS41NjMtOC44NjRjNC45MjQuODY5IDYuMTQtNi4wMjUgMS4yMTUtNi44OTNtLTEuMjE1IDYuODkzLTMuOTQtLjY5NG01LjE1NS02LjJMOC4yOSA0LjI2bTUuOTA4IDEuMDQyLjM0OC0xLjk3TTcuNDggMjAuMzY0bDMuMTI2LTE3LjcyNyJ9XV19KTt2YXIgcHosaXplPWcoKCk9Pntwej1bWyJjaXJjbGUiLHtjeDoiOSIsY3k6IjkiLHI6IjcifV0sWyJjaXJjbGUiLHtjeDoiMTUiLGN5OiIxNSIscjoiNyJ9XV19KTt2YXIgaHoscnplPWcoKCk9Pntoej1bWyJwYXRoIix7ZDoiTTMgM2gxOCJ9XSxbInBhdGgiLHtkOiJNMjAgN0g4In1dLFsicGF0aCIse2Q6Ik0yMCAxMUg4In1dLFsicGF0aCIse2Q6Ik0xMCAxOWgxMCJ9XSxbInBhdGgiLHtkOiJNOCAxNWgxMiJ9XSxbInBhdGgiLHtkOiJNNCAzdjE0In1dLFsiY2lyY2xlIix7Y3g6IjQiLGN5OiIxOSIscjoiMiJ9XV19KTt2YXIgZnosb3plPWcoKCk9Pntmej1bWyJwYXRoIix7ZDoiTTEwIDIyVjdhMSAxIDAgMCAwLTEtMUg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0ydi01YTEgMSAwIDAgMC0xLTFIMiJ9XSxbInJlY3QiLHt4OiIxNCIseToiMiIsd2lkdGg6IjgiLGhlaWdodDoiOCIscng6IjEifV1dfSk7dmFyIG16LG56ZT1nKCgpPT57bXo9W1sicGF0aCIse2Q6Im03IDcgMTAgMTAtNSA1VjJsNSA1TDcgMTcifV0sWyJsaW5lIix7eDE6IjE4Iix4MjoiMjEiLHkxOiIxMiIseTI6IjEyIn1dLFsibGluZSIse3gxOiIzIix4MjoiNiIseTE6IjEyIix5MjoiMTIifV1dfSk7dmFyIGd6LGx6ZT1nKCgpPT57Z3o9W1sicGF0aCIse2Q6Im0xNyAxNy01IDVWMTJsLTUgNSJ9XSxbInBhdGgiLHtkOiJtMiAyIDIwIDIwIn1dLFsicGF0aCIse2Q6Ik0xNC41IDkuNSAxNyA3bC01LTV2NC41In1dXX0pO3ZhciBieixjemU9ZygoKT0+e2J6PVtbInBhdGgiLHtkOiJtNyA3IDEwIDEwLTUgNVYybDUgNUw3IDE3In1dXX0pO3ZhciB2eixkemU9ZygoKT0+e3Z6PVtbInBhdGgiLHtkOiJtNyA3IDEwIDEwLTUgNVYybDUgNUw3IDE3In1dLFsicGF0aCIse2Q6Ik0yMC44MyAxNC44M2E0IDQgMCAwIDAgMC01LjY2In1dLFsicGF0aCIse2Q6Ik0xOCAxMmguMDEifV1dfSk7dmFyIHh6LHV6ZT1nKCgpPT57eHo9W1sicGF0aCIse2Q6Ik02IDEyaDlhNCA0IDAgMCAxIDAgOEg3YTEgMSAwIDAgMS0xLTFWNWExIDEgMCAwIDEgMS0xaDdhNCA0IDAgMCAxIDAgOCJ9XV19KTt2YXIgeXoscHplPWcoKCk9Pnt5ej1bWyJjaXJjbGUiLHtjeDoiMTEiLGN5OiIxMyIscjoiOSJ9XSxbInBhdGgiLHtkOiJNMTQuMzUgNC42NSAxNi4zIDIuN2EyLjQxIDIuNDEgMCAwIDEgMy40IDBsMS42IDEuNmEyLjQgMi40IDAgMCAxIDAgMy40bC0xLjk1IDEuOTUifV0sWyJwYXRoIix7ZDoibTIyIDItMS41IDEuNSJ9XV19KTt2YXIgd3osaHplPWcoKCk9Pnt3ej1bWyJwYXRoIix7ZDoiTTIxIDE2VjhhMiAyIDAgMCAwLTEtMS43M2wtNy00YTIgMiAwIDAgMC0yIDBsLTcgNEEyIDIgMCAwIDAgMyA4djhhMiAyIDAgMCAwIDEgMS43M2w3IDRhMiAyIDAgMCAwIDIgMGw3LTRBMiAyIDAgMCAwIDIxIDE2eiJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiI0In1dXX0pO3ZhciBreixmemU9ZygoKT0+e2t6PVtbInBhdGgiLHtkOiJNMTcgMTBjLjctLjcgMS42OSAwIDIuNSAwYTIuNSAyLjUgMCAxIDAgMC01IC41LjUgMCAwIDEtLjUtLjUgMi41IDIuNSAwIDEgMC01IDBjMCAuODEuNyAxLjggMCAyLjVsLTcgN2MtLjcuNy0xLjY5IDAtMi41IDBhMi41IDIuNSAwIDAgMCAwIDVjLjI4IDAgLjUuMjIuNS41YTIuNSAyLjUgMCAxIDAgNSAwYzAtLjgxLS43LTEuOCAwLTIuNVoifV1dfSk7dmFyIFN6LG16ZT1nKCgpPT57U3o9W1sicGF0aCIse2Q6Ik00IDE5LjV2LTE1QTIuNSAyLjUgMCAwIDEgNi41IDJIMTlhMSAxIDAgMCAxIDEgMXYxOGExIDEgMCAwIDEtMSAxSDYuNWExIDEgMCAwIDEgMC01SDIwIn1dLFsicGF0aCIse2Q6Im04IDEzIDQtNyA0IDcifV0sWyJwYXRoIix7ZDoiTTkuMSAxMWg1LjcifV1dfSk7dmFyIF96LGd6ZT1nKCgpPT57X3o9W1sicGF0aCIse2Q6Ik0xMiAxM2guMDEifV0sWyJwYXRoIix7ZDoiTTEyIDZ2MyJ9XSxbInBhdGgiLHtkOiJNNCAxOS41di0xNUEyLjUgMi41IDAgMCAxIDYuNSAySDE5YTEgMSAwIDAgMSAxIDF2MThhMSAxIDAgMCAxLTEgMUg2LjVhMSAxIDAgMCAxIDAtNUgyMCJ9XV19KTt2YXIgTXosYnplPWcoKCk9PntNej1bWyJwYXRoIix7ZDoiTTEyIDZ2NyJ9XSxbInBhdGgiLHtkOiJNMTYgOHYzIn1dLFsicGF0aCIse2Q6Ik00IDE5LjV2LTE1QTIuNSAyLjUgMCAwIDEgNi41IDJIMTlhMSAxIDAgMCAxIDEgMXYxOGExIDEgMCAwIDEtMSAxSDYuNWExIDEgMCAwIDEgMC01SDIwIn1dLFsicGF0aCIse2Q6Ik04IDh2MyJ9XV19KTt2YXIgenosdnplPWcoKCk9Pnt6ej1bWyJwYXRoIix7ZDoiTTQgMTkuNXYtMTVBMi41IDIuNSAwIDAgMSA2LjUgMkgxOWExIDEgMCAwIDEgMSAxdjE4YTEgMSAwIDAgMS0xIDFINi41YTEgMSAwIDAgMSAwLTVIMjAifV0sWyJwYXRoIix7ZDoibTkgOS41IDIgMiA0LTQifV1dfSk7dmFyIEN6LHh6ZT1nKCgpPT57Q3o9W1sicGF0aCIse2Q6Ik01IDdhMiAyIDAgMCAwLTIgMnYxMSJ9XSxbInBhdGgiLHtkOiJNNS44MDMgMThINWEyIDIgMCAwIDAgMCA0aDkuNWEuNS41IDAgMCAwIC41LS41VjIxIn1dLFsicGF0aCIse2Q6Ik05IDE1VjRhMiAyIDAgMCAxIDItMmg5LjVhLjUuNSAwIDAgMSAuNS41djE0YS41LjUgMCAwIDEtLjUuNUgxMWEyIDIgMCAwIDEgMC00aDEwIn1dXX0pO3ZhciBQZix5emU9ZygoKT0+e1BmPVtbInBhdGgiLHtkOiJNMTIgMTdoMS41In1dLFsicGF0aCIse2Q6Ik0xMiAyMmgxLjUifV0sWyJwYXRoIix7ZDoiTTEyIDJoMS41In1dLFsicGF0aCIse2Q6Ik0xNy41IDIySDE5YTEgMSAwIDAgMCAxLTEifV0sWyJwYXRoIix7ZDoiTTE3LjUgMkgxOWExIDEgMCAwIDEgMSAxdjEuNSJ9XSxbInBhdGgiLHtkOiJNMjAgMTR2M2gtMi41In1dLFsicGF0aCIse2Q6Ik0yMCA4LjVWMTAifV0sWyJwYXRoIix7ZDoiTTQgMTBWOC41In1dLFsicGF0aCIse2Q6Ik00IDE5LjVWMTQifV0sWyJwYXRoIix7ZDoiTTQgNC41QTIuNSAyLjUgMCAwIDEgNi41IDJIOCJ9XSxbInBhdGgiLHtkOiJNOCAyMkg2LjVhMSAxIDAgMCAxIDAtNUg4In1dXX0pO3ZhciBUeix3emU9ZygoKT0+e1R6PVtbInBhdGgiLHtkOiJNMTIgMTNWNyJ9XSxbInBhdGgiLHtkOiJNNCAxOS41di0xNUEyLjUgMi41IDAgMCAxIDYuNSAySDE5YTEgMSAwIDAgMSAxIDF2MThhMSAxIDAgMCAxLTEgMUg2LjVhMSAxIDAgMCAxIDAtNUgyMCJ9XSxbInBhdGgiLHtkOiJtOSAxMCAzIDMgMy0zIn1dXX0pO3ZhciAkeixremU9ZygoKT0+eyR6PVtbInBhdGgiLHtkOiJNNCAxOS41di0xNUEyLjUgMi41IDAgMCAxIDYuNSAySDE5YTEgMSAwIDAgMSAxIDF2MThhMSAxIDAgMCAxLTEgMUg2LjVhMSAxIDAgMCAxIDAtNUgyMCJ9XSxbInBhdGgiLHtkOiJNOCAxMnYtMmE0IDQgMCAwIDEgOCAwdjIifV0sWyJjaXJjbGUiLHtjeDoiMTUiLGN5OiIxMiIscjoiMSJ9XSxbImNpcmNsZSIse2N4OiI5IixjeToiMTIiLHI6IjEifV1dfSk7dmFyIER6LFN6ZT1nKCgpPT57RHo9W1sicGF0aCIse2Q6Ik00IDE5LjV2LTE1QTIuNSAyLjUgMCAwIDEgNi41IDJIMTlhMSAxIDAgMCAxIDEgMXYxOGExIDEgMCAwIDEtMSAxSDYuNWExIDEgMCAwIDEgMC01SDIwIn1dLFsicGF0aCIse2Q6Ik04LjYyIDkuOEEyLjI1IDIuMjUgMCAxIDEgMTIgNi44MzZhMi4yNSAyLjI1IDAgMSAxIDMuMzggMi45NjZsLTIuNjI2IDIuODU2YS45OTguOTk4IDAgMCAxLTEuNTA3IDB6In1dXX0pO3ZhciBMeixfemU9ZygoKT0+e0x6PVtbInBhdGgiLHtkOiJtMjAgMTMuNy0yLjEtMi4xYTIgMiAwIDAgMC0yLjggMEw5LjcgMTcifV0sWyJwYXRoIix7ZDoiTTQgMTkuNXYtMTVBMi41IDIuNSAwIDAgMSA2LjUgMkgxOWExIDEgMCAwIDEgMSAxdjE4YTEgMSAwIDAgMS0xIDFINi41YTEgMSAwIDAgMSAwLTVIMjAifV0sWyJjaXJjbGUiLHtjeDoiMTAiLGN5OiI4IixyOiIyIn1dXX0pO3ZhciBFeixNemU9ZygoKT0+e0V6PVtbInBhdGgiLHtkOiJNMTMgMkg2LjVBMi41IDIuNSAwIDAgMCA0IDQuNXYxNSJ9XSxbInBhdGgiLHtkOiJNMTcgMnY2In1dLFsicGF0aCIse2Q6Ik0xNyA0aDIifV0sWyJwYXRoIix7ZDoiTTIwIDE1LjJWMjFhMSAxIDAgMCAxLTEgMUg2LjVhMSAxIDAgMCAxIDAtNUgyMCJ9XSxbImNpcmNsZSIse2N4OiIxNyIsY3k6IjEwIixyOiIyIn1dXX0pO3ZhciBQeix6emU9ZygoKT0+e1B6PVtbInBhdGgiLHtkOiJNMTAgMnY4bDMtMyAzIDNWMiJ9XSxbInBhdGgiLHtkOiJNNCAxOS41di0xNUEyLjUgMi41IDAgMCAxIDYuNSAySDE5YTEgMSAwIDAgMSAxIDF2MThhMSAxIDAgMCAxLTEgMUg2LjVhMSAxIDAgMCAxIDAtNUgyMCJ9XV19KTt2YXIgSXosQ3plPWcoKCk9PntJej1bWyJwYXRoIix7ZDoiTTE4IDZWNGEyIDIgMCAxIDAtNCAwdjIifV0sWyJwYXRoIix7ZDoiTTIwIDE1djZhMSAxIDAgMCAxLTEgMUg2LjVhMSAxIDAgMCAxIDAtNUgyMCJ9XSxbInBhdGgiLHtkOiJNNCAxOS41di0xNUEyLjUgMi41IDAgMCAxIDYuNSAySDEwIn1dLFsicmVjdCIse3g6IjEyIix5OiI2Iix3aWR0aDoiOCIsaGVpZ2h0OiI1IixyeDoiMSJ9XV19KTt2YXIgQXosVHplPWcoKCk9PntBej1bWyJwYXRoIix7ZDoiTTQgMTkuNXYtMTVBMi41IDIuNSAwIDAgMSA2LjUgMkgxOWExIDEgMCAwIDEgMSAxdjE4YTEgMSAwIDAgMS0xIDFINi41YTEgMSAwIDAgMSAwLTVIMjAifV0sWyJwYXRoIix7ZDoiTTkgMTBoNiJ9XV19KTt2YXIgTnosJHplPWcoKCk9PntOej1bWyJwYXRoIix7ZDoiTTEyIDIxVjcifV0sWyJwYXRoIix7ZDoibTE2IDEyIDIgMiA0LTQifV0sWyJwYXRoIix7ZDoiTTIyIDZWNGExIDEgMCAwIDAtMS0xaC01YTQgNCAwIDAgMC00IDQgNCA0IDAgMCAwLTQtNEgzYTEgMSAwIDAgMC0xIDF2MTNhMSAxIDAgMCAwIDEgMWg2YTMgMyAwIDAgMSAzIDMgMyAzIDAgMCAxIDMtM2g2YTEgMSAwIDAgMCAxLTF2LTEuMyJ9XV19KTt2YXIgUnosRHplPWcoKCk9PntSej1bWyJwYXRoIix7ZDoiTTEyIDd2MTQifV0sWyJwYXRoIix7ZDoiTTE2IDEyaDIifV0sWyJwYXRoIix7ZDoiTTE2IDhoMiJ9XSxbInBhdGgiLHtkOiJNMyAxOGExIDEgMCAwIDEtMS0xVjRhMSAxIDAgMCAxIDEtMWg1YTQgNCAwIDAgMSA0IDQgNCA0IDAgMCAxIDQtNGg1YTEgMSAwIDAgMSAxIDF2MTNhMSAxIDAgMCAxLTEgMWgtNmEzIDMgMCAwIDAtMyAzIDMgMyAwIDAgMC0zLTN6In1dLFsicGF0aCIse2Q6Ik02IDEyaDIifV0sWyJwYXRoIix7ZDoiTTYgOGgyIn1dXX0pO3ZhciBPeixMemU9ZygoKT0+e096PVtbInBhdGgiLHtkOiJNMTEgMjJINS41YTEgMSAwIDAgMSAwLTVoNC41MDEifV0sWyJwYXRoIix7ZDoibTIxIDIyLTEuODc5LTEuODc4In1dLFsicGF0aCIse2Q6Ik0zIDE5LjV2LTE1QTIuNSAyLjUgMCAwIDEgNS41IDJIMThhMSAxIDAgMCAxIDEgMXY4In1dLFsiY2lyY2xlIix7Y3g6IjE3IixjeToiMTgiLHI6IjMifV1dfSk7dmFyIEZ6LEV6ZT1nKCgpPT57Rno9W1sicGF0aCIse2Q6Ik0xMiA3djE0In1dLFsicGF0aCIse2Q6Ik0zIDE4YTEgMSAwIDAgMS0xLTFWNGExIDEgMCAwIDEgMS0xaDVhNCA0IDAgMCAxIDQgNCA0IDQgMCAwIDEgNC00aDVhMSAxIDAgMCAxIDEgMXYxM2ExIDEgMCAwIDEtMSAxaC02YTMgMyAwIDAgMC0zIDMgMyAzIDAgMCAwLTMtM3oifV1dfSk7dmFyIEJ6LFB6ZT1nKCgpPT57Qno9W1sicGF0aCIse2Q6Ik0xMiA3djYifV0sWyJwYXRoIix7ZDoiTTQgMTkuNXYtMTVBMi41IDIuNSAwIDAgMSA2LjUgMkgxOWExIDEgMCAwIDEgMSAxdjE4YTEgMSAwIDAgMS0xIDFINi41YTEgMSAwIDAgMSAwLTVIMjAifV0sWyJwYXRoIix7ZDoiTTkgMTBoNiJ9XV19KTt2YXIgSHosSXplPWcoKCk9PntIej1bWyJwYXRoIix7ZDoiTTQgMTkuNXYtMTVBMi41IDIuNSAwIDAgMSA2LjUgMkgxOWExIDEgMCAwIDEgMSAxdjE4YTEgMSAwIDAgMS0xIDFINi41YTEgMSAwIDAgMSAwLTVIMjAifV0sWyJwYXRoIix7ZDoiTTggMTFoOCJ9XSxbInBhdGgiLHtkOiJNOCA3aDYifV1dfSk7dmFyIHF6LEF6ZT1nKCgpPT57cXo9W1sicGF0aCIse2Q6Ik0xMiAxM1Y3In1dLFsicGF0aCIse2Q6Ik0xOCAyaDFhMSAxIDAgMCAxIDEgMXYxOGExIDEgMCAwIDEtMSAxSDYuNWExIDEgMCAwIDEgMC01SDIwIn1dLFsicGF0aCIse2Q6Ik00IDE5LjV2LTE1QTIuNSAyLjUgMCAwIDEgNi41IDIifV0sWyJwYXRoIix7ZDoibTkgMTAgMy0zIDMgMyJ9XSxbInBhdGgiLHtkOiJtOSA1IDMtMyAzIDMifV1dfSk7dmFyIGp6LE56ZT1nKCgpPT57ano9W1sicGF0aCIse2Q6Ik0xMiAxM1Y3In1dLFsicGF0aCIse2Q6Ik00IDE5LjV2LTE1QTIuNSAyLjUgMCAwIDEgNi41IDJIMTlhMSAxIDAgMCAxIDEgMXYxOGExIDEgMCAwIDEtMSAxSDYuNWExIDEgMCAwIDEgMC01SDIwIn1dLFsicGF0aCIse2Q6Im05IDEwIDMtMyAzIDMifV1dfSk7dmFyIFZ6LFJ6ZT1nKCgpPT57Vno9W1sicGF0aCIse2Q6Ik0xMCAxM2g0In1dLFsicGF0aCIse2Q6Ik0xMiA2djcifV0sWyJwYXRoIix7ZDoiTTE2IDhWNkg4djIifV0sWyJwYXRoIix7ZDoiTTQgMTkuNXYtMTVBMi41IDIuNSAwIDAgMSA2LjUgMkgxOWExIDEgMCAwIDEgMSAxdjE4YTEgMSAwIDAgMS0xIDFINi41YTEgMSAwIDAgMSAwLTVIMjAifV1dfSk7dmFyIFV6LE96ZT1nKCgpPT57VXo9W1sicGF0aCIse2Q6Ik0xNSAxM2EzIDMgMCAxIDAtNiAwIn1dLFsicGF0aCIse2Q6Ik00IDE5LjV2LTE1QTIuNSAyLjUgMCAwIDEgNi41IDJIMTlhMSAxIDAgMCAxIDEgMXYxOGExIDEgMCAwIDEtMSAxSDYuNWExIDEgMCAwIDEgMC01SDIwIn1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiOCIscjoiMiJ9XV19KTt2YXIgV3osRnplPWcoKCk9PntXej1bWyJwYXRoIix7ZDoibTE0LjUgNy01IDUifV0sWyJwYXRoIix7ZDoiTTQgMTkuNXYtMTVBMi41IDIuNSAwIDAgMSA2LjUgMkgxOWExIDEgMCAwIDEgMSAxdjE4YTEgMSAwIDAgMS0xIDFINi41YTEgMSAwIDAgMSAwLTVIMjAifV0sWyJwYXRoIix7ZDoibTkuNSA3IDUgNSJ9XV19KTt2YXIgR3osQnplPWcoKCk9PntHej1bWyJwYXRoIix7ZDoiTTQgMTkuNXYtMTVBMi41IDIuNSAwIDAgMSA2LjUgMkgxOWExIDEgMCAwIDEgMSAxdjE4YTEgMSAwIDAgMS0xIDFINi41YTEgMSAwIDAgMSAwLTVIMjAifV1dfSk7dmFyIEt6LEh6ZT1nKCgpPT57S3o9W1sicGF0aCIse2Q6Ik0xNyAzYTIgMiAwIDAgMSAyIDJ2MTVhMSAxIDAgMCAxLTEuNDk2Ljg2OGwtNC41MTItMi41NzhhMiAyIDAgMCAwLTEuOTg0IDBsLTQuNTEyIDIuNTc4QTEgMSAwIDAgMSA1IDIwVjVhMiAyIDAgMCAxIDItMnoifV0sWyJwYXRoIix7ZDoibTkgMTAgMiAyIDQtNCJ9XV19KTt2YXIgWXoscXplPWcoKCk9PntZej1bWyJwYXRoIix7ZDoiTTE1IDEwSDkifV0sWyJwYXRoIix7ZDoiTTE3IDNhMiAyIDAgMCAxIDIgMnYxNWExIDEgMCAwIDEtMS40OTYuODY4bC00LjUxMi0yLjU3OGEyIDIgMCAwIDAtMS45ODQgMGwtNC41MTIgMi41NzhBMSAxIDAgMCAxIDUgMjBWNWEyIDIgMCAwIDEgMi0yeiJ9XV19KTt2YXIgWnosanplPWcoKCk9Pntaej1bWyJwYXRoIix7ZDoiTTE5IDE5djFhMSAxIDAgMCAxLTEuNDk2Ljg2OGwtNC41MTItMi41NzhhMiAyIDAgMCAwLTEuOTg0IDBsLTQuNTEyIDIuNTc4QTEgMSAwIDAgMSA1IDIwVjUifV0sWyJwYXRoIix7ZDoibTIgMiAyMCAyMCJ9XSxbInBhdGgiLHtkOiJNOC42NTYgM0gxN2EyIDIgMCAwIDEgMiAydjguMzQ0In1dXX0pO3ZhciBYeixWemU9ZygoKT0+e1h6PVtbInBhdGgiLHtkOiJNMTIgN3Y2In1dLFsicGF0aCIse2Q6Ik0xNSAxMEg5In1dLFsicGF0aCIse2Q6Ik0xNyAzYTIgMiAwIDAgMSAyIDJ2MTVhMSAxIDAgMCAxLTEuNDk2Ljg2OGwtNC41MTItMi41NzhhMiAyIDAgMCAwLTEuOTg0IDBsLTQuNTEyIDIuNTc4QTEgMSAwIDAgMSA1IDIwVjVhMiAyIDAgMCAxIDItMnoifV1dfSk7dmFyIFF6LFV6ZT1nKCgpPT57UXo9W1sicGF0aCIse2Q6Im0xNC41IDcuNS01IDUifV0sWyJwYXRoIix7ZDoiTTE3IDNhMiAyIDAgMCAxIDIgMnYxNWExIDEgMCAwIDEtMS40OTYuODY4bC00LjUxMi0yLjU3OGEyIDIgMCAwIDAtMS45ODQgMGwtNC41MTIgMi41NzhBMSAxIDAgMCAxIDUgMjBWNWEyIDIgMCAwIDEgMi0yeiJ9XSxbInBhdGgiLHtkOiJtOS41IDcuNSA1IDUifV1dfSk7dmFyIEp6LFd6ZT1nKCgpPT57Sno9W1sicGF0aCIse2Q6Ik0xNyAzYTIgMiAwIDAgMSAyIDJ2MTVhMSAxIDAgMCAxLTEuNDk2Ljg2OGwtNC41MTItMi41NzhhMiAyIDAgMCAwLTEuOTg0IDBsLTQuNTEyIDIuNTc4QTEgMSAwIDAgMSA1IDIwVjVhMiAyIDAgMCAxIDItMnoifV1dfSk7dmFyIGVDLEd6ZT1nKCgpPT57ZUM9W1sicGF0aCIse2Q6Ik00IDlWNWEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2NCJ9XSxbInBhdGgiLHtkOiJNOCA4djEifV0sWyJwYXRoIix7ZDoiTTEyIDh2MSJ9XSxbInBhdGgiLHtkOiJNMTYgOHYxIn1dLFsicmVjdCIse3dpZHRoOiIyMCIsaGVpZ2h0OiIxMiIseDoiMiIseToiOSIscng6IjIifV0sWyJjaXJjbGUiLHtjeDoiOCIsY3k6IjE1IixyOiIyIn1dLFsiY2lyY2xlIix7Y3g6IjE2IixjeToiMTUiLHI6IjIifV1dfSk7dmFyIHRDLEt6ZT1nKCgpPT57dEM9W1sicGF0aCIse2Q6Ik0xMiA2VjJIOCJ9XSxbInBhdGgiLHtkOiJNMTUgMTF2MiJ9XSxbInBhdGgiLHtkOiJNMiAxMmgyIn1dLFsicGF0aCIse2Q6Ik0yMCAxMmgyIn1dLFsicGF0aCIse2Q6Ik0yMCAxNmEyIDIgMCAwIDEtMiAySDguODI4YTIgMiAwIDAgMC0xLjQxNC41ODZsLTIuMjAyIDIuMjAyQS43MS43MSAwIDAgMSA0IDIwLjI4NlY4YTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnoifV0sWyJwYXRoIix7ZDoiTTkgMTF2MiJ9XV19KTt2YXIgYUMsWXplPWcoKCk9PnthQz1bWyJwYXRoIix7ZDoiTTEzLjY3IDhIMThhMiAyIDAgMCAxIDIgMnY0LjMzIn1dLFsicGF0aCIse2Q6Ik0yIDE0aDIifV0sWyJwYXRoIix7ZDoiTTIwIDE0aDIifV0sWyJwYXRoIix7ZDoiTTIyIDIyIDIgMiJ9XSxbInBhdGgiLHtkOiJNOCA4SDZhMiAyIDAgMCAwLTIgMnY4YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDEuNDE0LS41ODYifV0sWyJwYXRoIix7ZDoiTTkgMTN2MiJ9XSxbInBhdGgiLHtkOiJNOS42NyA0SDEydjIuMzMifV1dfSk7dmFyIHNDLFp6ZT1nKCgpPT57c0M9W1sicGF0aCIse2Q6Ik0xMiA4VjRIOCJ9XSxbInJlY3QiLHt3aWR0aDoiMTYiLGhlaWdodDoiMTIiLHg6IjQiLHk6IjgiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik0yIDE0aDIifV0sWyJwYXRoIix7ZDoiTTIwIDE0aDIifV0sWyJwYXRoIix7ZDoiTTE1IDEzdjIifV0sWyJwYXRoIix7ZDoiTTkgMTN2MiJ9XV19KTt2YXIgaUMsWHplPWcoKCk9PntpQz1bWyJwYXRoIix7ZDoiTTE3IDNoNHY0In1dLFsicGF0aCIse2Q6Ik0xOC41NzUgMTEuMDgyYTEzIDEzIDAgMCAxIDEuMDQ4IDkuMDI3IDEuMTcgMS4xNyAwIDAgMS0xLjkxNC41OTdMMTQgMTcifV0sWyJwYXRoIix7ZDoiTTcgMTAgMy4yOSA2LjI5YTEuMTcgMS4xNyAwIDAgMSAuNi0xLjkxIDEzIDEzIDAgMCAxIDkuMDMgMS4wNSJ9XSxbInBhdGgiLHtkOiJNNyAxNGExLjcgMS43IDAgMCAwLTEuMjA3LjVsLTIuNjQ2IDIuNjQ2QS41LjUgMCAwIDAgMy41IDE4SDVhMSAxIDAgMCAxIDEgMXYxLjVhLjUuNSAwIDAgMCAuODU0LjM1NEw5LjUgMTguMjA3QTEuNyAxLjcgMCAwIDAgMTAgMTd2LTJhMSAxIDAgMCAwLTEtMXoifV0sWyJwYXRoIix7ZDoiTTkuNzA3IDE0LjI5MyAyMSAzIn1dXX0pO3ZhciByQyxRemU9ZygoKT0+e3JDPVtbInBhdGgiLHtkOiJNMTAgM2ExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDEgMXYyYTYgNiAwIDAgMCAxLjIgMy42bC42LjhBNiA2IDAgMCAxIDE3IDEzdjhhMSAxIDAgMCAxLTEgMUg4YTEgMSAwIDAgMS0xLTF2LThhNiA2IDAgMCAxIDEuMi0zLjZsLjYtLjhBNiA2IDAgMCAwIDEwIDV6In1dLFsicGF0aCIse2Q6Ik0xNyAxM2gtNGExIDEgMCAwIDAtMSAxdjNhMSAxIDAgMCAwIDEgMWg0In1dXX0pO3ZhciBvQyxKemU9ZygoKT0+e29DPVtbInBhdGgiLHtkOiJNMjEgOGEyIDIgMCAwIDAtMS0xLjczbC03LTRhMiAyIDAgMCAwLTIgMGwtNyA0QTIgMiAwIDAgMCAzIDh2OGEyIDIgMCAwIDAgMSAxLjczbDcgNGEyIDIgMCAwIDAgMiAwbDctNEEyIDIgMCAwIDAgMjEgMTZaIn1dLFsicGF0aCIse2Q6Im0zLjMgNyA4LjcgNSA4LjctNSJ9XSxbInBhdGgiLHtkOiJNMTIgMjJWMTIifV1dfSk7dmFyIG5DLGVDZT1nKCgpPT57bkM9W1sicGF0aCIse2Q6Ik0yLjk3IDEyLjkyQTIgMiAwIDAgMCAyIDE0LjYzdjMuMjRhMiAyIDAgMCAwIC45NyAxLjcxbDMgMS44YTIgMiAwIDAgMCAyLjA2IDBMMTIgMTl2LTUuNWwtNS0zLTQuMDMgMi40MloifV0sWyJwYXRoIix7ZDoibTcgMTYuNS00Ljc0LTIuODUifV0sWyJwYXRoIix7ZDoibTcgMTYuNSA1LTMifV0sWyJwYXRoIix7ZDoiTTcgMTYuNXY1LjE3In1dLFsicGF0aCIse2Q6Ik0xMiAxMy41VjE5bDMuOTcgMi4zOGEyIDIgMCAwIDAgMi4wNiAwbDMtMS44YTIgMiAwIDAgMCAuOTctMS43MXYtMy4yNGEyIDIgMCAwIDAtLjk3LTEuNzFMMTcgMTAuNWwtNSAzWiJ9XSxbInBhdGgiLHtkOiJtMTcgMTYuNS01LTMifV0sWyJwYXRoIix7ZDoibTE3IDE2LjUgNC43NC0yLjg1In1dLFsicGF0aCIse2Q6Ik0xNyAxNi41djUuMTcifV0sWyJwYXRoIix7ZDoiTTcuOTcgNC40MkEyIDIgMCAwIDAgNyA2LjEzdjQuMzdsNSAzIDUtM1Y2LjEzYTIgMiAwIDAgMC0uOTctMS43MWwtMy0xLjhhMiAyIDAgMCAwLTIuMDYgMGwtMyAxLjhaIn1dLFsicGF0aCIse2Q6Ik0xMiA4IDcuMjYgNS4xNSJ9XSxbInBhdGgiLHtkOiJtMTIgOCA0Ljc0LTIuODUifV0sWyJwYXRoIix7ZDoiTTEyIDEzLjVWOCJ9XV19KTt2YXIgSWYsdENlPWcoKCk9PntJZj1bWyJwYXRoIix7ZDoiTTggM0g3YTIgMiAwIDAgMC0yIDJ2NWEyIDIgMCAwIDEtMiAyIDIgMiAwIDAgMSAyIDJ2NWMwIDEuMS45IDIgMiAyaDEifV0sWyJwYXRoIix7ZDoiTTE2IDIxaDFhMiAyIDAgMCAwIDItMnYtNWMwLTEuMS45LTIgMi0yYTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDAtMi0yaC0xIn1dXX0pO3ZhciBsQyxhQ2U9ZygoKT0+e2xDPVtbInBhdGgiLHtkOiJNMTYgM2gzYTEgMSAwIDAgMSAxIDF2MTZhMSAxIDAgMCAxLTEgMWgtMyJ9XSxbInBhdGgiLHtkOiJNOCAyMUg1YTEgMSAwIDAgMS0xLTFWNGExIDEgMCAwIDEgMS0xaDMifV1dfSk7dmFyIGNDLHNDZT1nKCgpPT57Y0M9W1sicGF0aCIse2Q6Ik0xMiA1YTMgMyAwIDEgMC01Ljk5Ny4xMjUgNCA0IDAgMCAwLTIuNTI2IDUuNzcgNCA0IDAgMCAwIC41NTYgNi41ODhBNCA0IDAgMSAwIDEyIDE4WiJ9XSxbInBhdGgiLHtkOiJNOSAxM2E0LjUgNC41IDAgMCAwIDMtNCJ9XSxbInBhdGgiLHtkOiJNNi4wMDMgNS4xMjVBMyAzIDAgMCAwIDYuNDAxIDYuNSJ9XSxbInBhdGgiLHtkOiJNMy40NzcgMTAuODk2YTQgNCAwIDAgMSAuNTg1LS4zOTYifV0sWyJwYXRoIix7ZDoiTTYgMThhNCA0IDAgMCAxLTEuOTY3LS41MTYifV0sWyJwYXRoIix7ZDoiTTEyIDEzaDQifV0sWyJwYXRoIix7ZDoiTTEyIDE4aDZhMiAyIDAgMCAxIDIgMnYxIn1dLFsicGF0aCIse2Q6Ik0xMiA4aDgifV0sWyJwYXRoIix7ZDoiTTE2IDhWNWEyIDIgMCAwIDEgMi0yIn1dLFsiY2lyY2xlIix7Y3g6IjE2IixjeToiMTMiLHI6Ii41In1dLFsiY2lyY2xlIix7Y3g6IjE4IixjeToiMyIscjoiLjUifV0sWyJjaXJjbGUiLHtjeDoiMjAiLGN5OiIyMSIscjoiLjUifV0sWyJjaXJjbGUiLHtjeDoiMjAiLGN5OiI4IixyOiIuNSJ9XV19KTt2YXIgZEMsaUNlPWcoKCk9PntkQz1bWyJwYXRoIix7ZDoibTEwLjg1MiAxNC43NzItLjM4My45MjMifV0sWyJwYXRoIix7ZDoibTEwLjg1MiA5LjIyOC0uMzgzLS45MjMifV0sWyJwYXRoIix7ZDoibTEzLjE0OCAxNC43NzIuMzgyLjkyNCJ9XSxbInBhdGgiLHtkOiJtMTMuNTMxIDguMzA1LS4zODMuOTIzIn1dLFsicGF0aCIse2Q6Im0xNC43NzIgMTAuODUyLjkyMy0uMzgzIn1dLFsicGF0aCIse2Q6Im0xNC43NzIgMTMuMTQ4LjkyMy4zODMifV0sWyJwYXRoIix7ZDoiTTE3LjU5OCA2LjVBMyAzIDAgMSAwIDEyIDVhMyAzIDAgMCAwLTUuNjMtMS40NDYgMyAzIDAgMCAwLS4zNjggMS41NzEgNCA0IDAgMCAwLTIuNTI1IDUuNzcxIn1dLFsicGF0aCIse2Q6Ik0xNy45OTggNS4xMjVhNCA0IDAgMCAxIDIuNTI1IDUuNzcxIn1dLFsicGF0aCIse2Q6Ik0xOS41MDUgMTAuMjk0YTQgNCAwIDAgMS0xLjUgNy43MDYifV0sWyJwYXRoIix7ZDoiTTQuMDMyIDE3LjQ4M0E0IDQgMCAwIDAgMTEuNDY0IDIwYy4xOC0uMzExLjg5Mi0uMzExIDEuMDcyIDBhNCA0IDAgMCAwIDcuNDMyLTIuNTE2In1dLFsicGF0aCIse2Q6Ik00LjUgMTAuMjkxQTQgNCAwIDAgMCA2IDE4In1dLFsicGF0aCIse2Q6Ik02LjAwMiA1LjEyNWEzIDMgMCAwIDAgLjQgMS4zNzUifV0sWyJwYXRoIix7ZDoibTkuMjI4IDEwLjg1Mi0uOTIzLS4zODMifV0sWyJwYXRoIix7ZDoibTkuMjI4IDEzLjE0OC0uOTIzLjM4MyJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIzIn1dXX0pO3ZhciB1QyxyQ2U9ZygoKT0+e3VDPVtbInBhdGgiLHtkOiJNMTYgM3YyLjEwNyJ9XSxbInBhdGgiLHtkOiJNMTcgOWMxIDMgMi41IDMuNSAzLjUgNC41QTUgNSAwIDAgMSAyMiAxN2E1IDUgMCAwIDEtMTAgMGMwLS4zIDAtLjYuMS0uOWEyIDIgMCAxIDAgMy4zLTJDMTMgMTEuNSAxNiA5IDE3IDkifV0sWyJwYXRoIix7ZDoiTTIxIDguMjc0VjVhMiAyIDAgMCAwLTItMkg1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgzLjkzOCJ9XSxbInBhdGgiLHtkOiJNMyAxNWg1LjI1MyJ9XSxbInBhdGgiLHtkOiJNMyA5aDguMjI4In1dLFsicGF0aCIse2Q6Ik04IDE1djYifV0sWyJwYXRoIix7ZDoiTTggM3Y2In1dXX0pO3ZhciBwQyxvQ2U9ZygoKT0+e3BDPVtbInBhdGgiLHtkOiJNMTIgMThWNSJ9XSxbInBhdGgiLHtkOiJNMTUgMTNhNC4xNyA0LjE3IDAgMCAxLTMtNCA0LjE3IDQuMTcgMCAwIDEtMyA0In1dLFsicGF0aCIse2Q6Ik0xNy41OTggNi41QTMgMyAwIDEgMCAxMiA1YTMgMyAwIDEgMC01LjU5OCAxLjUifV0sWyJwYXRoIix7ZDoiTTE3Ljk5NyA1LjEyNWE0IDQgMCAwIDEgMi41MjYgNS43NyJ9XSxbInBhdGgiLHtkOiJNMTggMThhNCA0IDAgMCAwIDItNy40NjQifV0sWyJwYXRoIix7ZDoiTTE5Ljk2NyAxNy40ODNBNCA0IDAgMSAxIDEyIDE4YTQgNCAwIDEgMS03Ljk2Ny0uNTE3In1dLFsicGF0aCIse2Q6Ik02IDE4YTQgNCAwIDAgMS0yLTcuNDY0In1dLFsicGF0aCIse2Q6Ik02LjAwMyA1LjEyNWE0IDQgMCAwIDAtMi41MjYgNS43NyJ9XV19KTt2YXIgaEMsbkNlPWcoKCk9PntoQz1bWyJwYXRoIix7ZDoiTTEyIDl2MS4yNTgifV0sWyJwYXRoIix7ZDoiTTE2IDN2NS40NiJ9XSxbInBhdGgiLHtkOiJNMjEgOS4xMThWNWEyIDIgMCAwIDAtMi0ySDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDUuNzUifV0sWyJwYXRoIix7ZDoiTTIyIDE3LjVjMCAyLjQ5OS0xLjc1IDMuNzQ5LTMuODMgNC40NzRhLjUuNSAwIDAgMS0uMzM1LS4wMDVjLTIuMDg1LS43Mi0zLjgzNS0xLjk3LTMuODM1LTQuNDdWMTRhLjUuNSAwIDAgMSAuNS0uNDk5YzEgMCAyLjI1LS42IDMuMTItMS4zNmEuNi42IDAgMCAxIC43Ni0uMDAxYy44NzUuNzY1IDIuMTIgMS4zNiAzLjEyIDEuMzZhLjUuNSAwIDAgMSAuNS41eiJ9XSxbInBhdGgiLHtkOiJNMyAxNWg3In1dLFsicGF0aCIse2Q6Ik0zIDloMTIuMTQyIn1dLFsicGF0aCIse2Q6Ik04IDE1djYifV0sWyJwYXRoIix7ZDoiTTggM3Y2In1dXX0pO3ZhciBmQyxsQ2U9ZygoKT0+e2ZDPVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik0xMiA5djYifV0sWyJwYXRoIix7ZDoiTTE2IDE1djYifV0sWyJwYXRoIix7ZDoiTTE2IDN2NiJ9XSxbInBhdGgiLHtkOiJNMyAxNWgxOCJ9XSxbInBhdGgiLHtkOiJNMyA5aDE4In1dLFsicGF0aCIse2Q6Ik04IDE1djYifV0sWyJwYXRoIix7ZDoiTTggM3Y2In1dXX0pO3ZhciBtQyxjQ2U9ZygoKT0+e21DPVtbInBhdGgiLHtkOiJNMTIgMTJoLjAxIn1dLFsicGF0aCIse2Q6Ik0xNiA2VjRhMiAyIDAgMCAwLTItMmgtNGEyIDIgMCAwIDAtMiAydjIifV0sWyJwYXRoIix7ZDoiTTIyIDEzYTE4LjE1IDE4LjE1IDAgMCAxLTIwIDAifV0sWyJyZWN0Iix7d2lkdGg6IjIwIixoZWlnaHQ6IjE0Iix4OiIyIix5OiI2IixyeDoiMiJ9XV19KTt2YXIgZ0MsZENlPWcoKCk9PntnQz1bWyJwYXRoIix7ZDoiTTEwIDIwdjIifV0sWyJwYXRoIix7ZDoiTTE0IDIwdjIifV0sWyJwYXRoIix7ZDoiTTE4IDIwdjIifV0sWyJwYXRoIix7ZDoiTTIxIDIwSDMifV0sWyJwYXRoIix7ZDoiTTYgMjB2MiJ9XSxbInBhdGgiLHtkOiJNOCAxNlY0YTIgMiAwIDAgMSAyLTJoNGEyIDIgMCAwIDEgMiAydjEyIn1dLFsicmVjdCIse3g6IjQiLHk6IjYiLHdpZHRoOiIxNiIsaGVpZ2h0OiIxMCIscng6IjIifV1dfSk7dmFyIGJDLHVDZT1nKCgpPT57YkM9W1sicGF0aCIse2Q6Ik0xMiAxMXY0In1dLFsicGF0aCIse2Q6Ik0xNCAxM2gtNCJ9XSxbInBhdGgiLHtkOiJNMTYgNlY0YTIgMiAwIDAgMC0yLTJoLTRhMiAyIDAgMCAwLTIgMnYyIn1dLFsicGF0aCIse2Q6Ik0xOCA2djE0In1dLFsicGF0aCIse2Q6Ik02IDZ2MTQifV0sWyJyZWN0Iix7d2lkdGg6IjIwIixoZWlnaHQ6IjE0Iix4OiIyIix5OiI2IixyeDoiMiJ9XV19KTt2YXIgdkMscENlPWcoKCk9Pnt2Qz1bWyJwYXRoIix7ZDoiTTE2IDIwVjRhMiAyIDAgMCAwLTItMmgtNGEyIDIgMCAwIDAtMiAydjE2In1dLFsicmVjdCIse3dpZHRoOiIyMCIsaGVpZ2h0OiIxNCIseDoiMiIseToiNiIscng6IjIifV1dfSk7dmFyIHhDLGhDZT1nKCgpPT57eEM9W1sicmVjdCIse3g6IjgiLHk6IjgiLHdpZHRoOiI4IixoZWlnaHQ6IjgiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik00IDEwYTIgMiAwIDAgMS0yLTJWNGEyIDIgMCAwIDEgMi0yaDRhMiAyIDAgMCAxIDIgMiJ9XSxbInBhdGgiLHtkOiJNMTQgMjBhMiAyIDAgMCAwIDIgMmg0YTIgMiAwIDAgMCAyLTJ2LTRhMiAyIDAgMCAwLTItMiJ9XV19KTt2YXIgeUMsZkNlPWcoKCk9Pnt5Qz1bWyJwYXRoIix7ZDoibTE2IDIyLTEtNCJ9XSxbInBhdGgiLHtkOiJNMTkgMTRhMSAxIDAgMCAwIDEtMXYtMWEyIDIgMCAwIDAtMi0yaC0zYTEgMSAwIDAgMS0xLTFWNGEyIDIgMCAwIDAtNCAwdjVhMSAxIDAgMCAxLTEgMUg2YTIgMiAwIDAgMC0yIDJ2MWExIDEgMCAwIDAgMSAxIn1dLFsicGF0aCIse2Q6Ik0xOSAxNEg1bC0xLjk3MyA2Ljc2N0ExIDEgMCAwIDAgNCAyMmgxNmExIDEgMCAwIDAgLjk3My0xLjIzM3oifV0sWyJwYXRoIix7ZDoibTggMjIgMS00In1dXX0pO3ZhciB3QyxtQ2U9ZygoKT0+e3dDPVtbInBhdGgiLHtkOiJtMTEgMTAgMyAzIn1dLFsicGF0aCIse2Q6Ik02LjUgMjFBMy41IDMuNSAwIDEgMCAzIDE3LjVhMi42MiAyLjYyIDAgMCAxLS43MDggMS43OTJBMSAxIDAgMCAwIDMgMjF6In1dLFsicGF0aCIse2Q6Ik05Ljk2OSAxNy4wMzEgMjEuMzc4IDUuNjI0YTEgMSAwIDAgMC0zLjAwMi0zLjAwMkw2Ljk2NyAxNC4wMzEifV1dfSk7dmFyIGtDLGdDZT1nKCgpPT57a0M9W1sicGF0aCIse2Q6Ik0xMiAyMHYtOCJ9XSxbInBhdGgiLHtkOiJNMTIuNjU2IDdIMTRhNCA0IDAgMCAxIDQgNHYxLjM0NCJ9XSxbInBhdGgiLHtkOiJNMTQuMTIgMy44OCAxNiAyIn1dLFsicGF0aCIse2Q6Ik0xNy4xMjMgMTcuMTIzQTYgNiAwIDAgMSA2IDE0di0zYTQgNCAwIDAgMSAxLjcyLTMuMjg3In1dLFsicGF0aCIse2Q6Im0yIDIgMjAgMjAifV0sWyJwYXRoIix7ZDoiTTIxIDVhNCA0IDAgMCAxLTMuNTUgMy45NyJ9XSxbInBhdGgiLHtkOiJNMjIgMTNoLTMuMzQ0In1dLFsicGF0aCIse2Q6Ik0zIDIxYTQgNCAwIDAgMSAzLjgxLTQifV0sWyJwYXRoIix7ZDoiTTMgNWE0IDQgMCAwIDAgMy41NSAzLjk3In1dLFsicGF0aCIse2Q6Ik02IDEzSDIifV0sWyJwYXRoIix7ZDoibTggMiAxLjg4IDEuODgifV0sWyJwYXRoIix7ZDoiTTkuNzEyIDQuMDZBMyAzIDAgMCAxIDE1IDZ2MS4xMyJ9XV19KTt2YXIgU0MsYkNlPWcoKCk9PntTQz1bWyJwYXRoIix7ZDoiTTcuMDAxIDE1LjA4NUExLjUgMS41IDAgMCAxIDkgMTYuNSJ9XSxbImNpcmNsZSIse2N4OiIxOC41IixjeToiOC41IixyOiIzLjUifV0sWyJjaXJjbGUiLHtjeDoiNy41IixjeToiMTYuNSIscjoiNS41In1dLFsiY2lyY2xlIix7Y3g6IjcuNSIsY3k6IjQuNSIscjoiMi41In1dXX0pO3ZhciBfQyx2Q2U9ZygoKT0+e19DPVtbInBhdGgiLHtkOiJNMTAgMTkuNjU1QTYgNiAwIDAgMSA2IDE0di0zYTQgNCAwIDAgMSA0LTRoNGE0IDQgMCAwIDEgNCAzLjk3In1dLFsicGF0aCIse2Q6Ik0xNCAxNS4wMDNhMSAxIDAgMCAxIDEuNTE3LS44NTlsNC45OTcgMi45OTdhMSAxIDAgMCAxIDAgMS43MThsLTQuOTk3IDIuOTk3YTEgMSAwIDAgMS0xLjUxNy0uODZ6In1dLFsicGF0aCIse2Q6Ik0xNC4xMiAzLjg4IDE2IDIifV0sWyJwYXRoIix7ZDoiTTIxIDVhNCA0IDAgMCAxLTMuNTUgMy45NyJ9XSxbInBhdGgiLHtkOiJNMyAyMWE0IDQgMCAwIDEgMy44MS00In1dLFsicGF0aCIse2Q6Ik0zIDVhNCA0IDAgMCAwIDMuNTUgMy45NyJ9XSxbInBhdGgiLHtkOiJNNiAxM0gyIn1dLFsicGF0aCIse2Q6Im04IDIgMS44OCAxLjg4In1dLFsicGF0aCIse2Q6Ik05IDcuMTNWNmEzIDMgMCAxIDEgNiAwdjEuMTMifV1dfSk7dmFyIE1DLHhDZT1nKCgpPT57TUM9W1sicGF0aCIse2Q6Ik0xMiAyMHYtOSJ9XSxbInBhdGgiLHtkOiJNMTQgN2E0IDQgMCAwIDEgNCA0djNhNiA2IDAgMCAxLTEyIDB2LTNhNCA0IDAgMCAxIDQtNHoifV0sWyJwYXRoIix7ZDoiTTE0LjEyIDMuODggMTYgMiJ9XSxbInBhdGgiLHtkOiJNMjEgMjFhNCA0IDAgMCAwLTMuODEtNCJ9XSxbInBhdGgiLHtkOiJNMjEgNWE0IDQgMCAwIDEtMy41NSAzLjk3In1dLFsicGF0aCIse2Q6Ik0yMiAxM2gtNCJ9XSxbInBhdGgiLHtkOiJNMyAyMWE0IDQgMCAwIDEgMy44MS00In1dLFsicGF0aCIse2Q6Ik0zIDVhNCA0IDAgMCAwIDMuNTUgMy45NyJ9XSxbInBhdGgiLHtkOiJNNiAxM0gyIn1dLFsicGF0aCIse2Q6Im04IDIgMS44OCAxLjg4In1dLFsicGF0aCIse2Q6Ik05IDcuMTNWNmEzIDMgMCAxIDEgNiAwdjEuMTMifV1dfSk7dmFyIHpDLHlDZT1nKCgpPT57ekM9W1sicGF0aCIse2Q6Ik0xMiAxMGguMDEifV0sWyJwYXRoIix7ZDoiTTEyIDE0aC4wMSJ9XSxbInBhdGgiLHtkOiJNMTIgNmguMDEifV0sWyJwYXRoIix7ZDoiTTE2IDEwaC4wMSJ9XSxbInBhdGgiLHtkOiJNMTYgMTRoLjAxIn1dLFsicGF0aCIse2Q6Ik0xNiA2aC4wMSJ9XSxbInBhdGgiLHtkOiJNOCAxMGguMDEifV0sWyJwYXRoIix7ZDoiTTggMTRoLjAxIn1dLFsicGF0aCIse2Q6Ik04IDZoLjAxIn1dLFsicGF0aCIse2Q6Ik05IDIydi0zYTEgMSAwIDAgMSAxLTFoNGExIDEgMCAwIDEgMSAxdjMifV0sWyJyZWN0Iix7eDoiNCIseToiMiIsd2lkdGg6IjE2IixoZWlnaHQ6IjIwIixyeDoiMiJ9XV19KTt2YXIgQ0Msd0NlPWcoKCk9PntDQz1bWyJwYXRoIix7ZDoiTTEwIDEyaDQifV0sWyJwYXRoIix7ZDoiTTEwIDhoNCJ9XSxbInBhdGgiLHtkOiJNMTQgMjF2LTNhMiAyIDAgMCAwLTQgMHYzIn1dLFsicGF0aCIse2Q6Ik02IDEwSDRhMiAyIDAgMCAwLTIgMnY3YTIgMiAwIDAgMCAyIDJoMTZhMiAyIDAgMCAwIDItMlY5YTIgMiAwIDAgMC0yLTJoLTIifV0sWyJwYXRoIix7ZDoiTTYgMjFWNWEyIDIgMCAwIDEgMi0yaDhhMiAyIDAgMCAxIDIgMnYxNiJ9XV19KTt2YXIgVEMsa0NlPWcoKCk9PntUQz1bWyJwYXRoIix7ZDoiTTQgNiAyIDcifV0sWyJwYXRoIix7ZDoiTTEwIDZoNCJ9XSxbInBhdGgiLHtkOiJtMjIgNy0yLTEifV0sWyJyZWN0Iix7d2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix4OiI0Iix5OiIzIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNNCAxMWgxNiJ9XSxbInBhdGgiLHtkOiJNOCAxNWguMDEifV0sWyJwYXRoIix7ZDoiTTE2IDE1aC4wMSJ9XSxbInBhdGgiLHtkOiJNNiAxOXYyIn1dLFsicGF0aCIse2Q6Ik0xOCAyMXYtMiJ9XV19KTt2YXIgJEMsU0NlPWcoKCk9PnskQz1bWyJwYXRoIix7ZDoiTTggNnY2In1dLFsicGF0aCIse2Q6Ik0xNSA2djYifV0sWyJwYXRoIix7ZDoiTTIgMTJoMTkuNiJ9XSxbInBhdGgiLHtkOiJNMTggMThoM3MuNS0xLjcuOC0yLjhjLjEtLjQuMi0uOC4yLTEuMiAwLS40LS4xLS44LS4yLTEuMmwtMS40LTVDMjAuMSA2LjggMTkuMSA2IDE4IDZINGEyIDIgMCAwIDAtMiAydjEwaDMifV0sWyJjaXJjbGUiLHtjeDoiNyIsY3k6IjE4IixyOiIyIn1dLFsicGF0aCIse2Q6Ik05IDE4aDUifV0sWyJjaXJjbGUiLHtjeDoiMTYiLGN5OiIxOCIscjoiMiJ9XV19KTt2YXIgREMsX0NlPWcoKCk9PntEQz1bWyJwYXRoIix7ZDoiTTE3IDE5YTEgMSAwIDAgMS0xLTF2LTJhMiAyIDAgMCAxIDItMmgyYTIgMiAwIDAgMSAyIDJ2MmExIDEgMCAwIDEtMSAxeiJ9XSxbInBhdGgiLHtkOiJNMTcgMjF2LTIifV0sWyJwYXRoIix7ZDoiTTE5IDE0VjYuNWExIDEgMCAwIDAtNyAwdjExYTEgMSAwIDAgMS03IDBWMTAifV0sWyJwYXRoIix7ZDoiTTIxIDIxdi0yIn1dLFsicGF0aCIse2Q6Ik0zIDVWMyJ9XSxbInBhdGgiLHtkOiJNNCAxMGEyIDIgMCAwIDEtMi0yVjZhMSAxIDAgMCAxIDEtMWg0YTEgMSAwIDAgMSAxIDF2MmEyIDIgMCAwIDEtMiAyeiJ9XSxbInBhdGgiLHtkOiJNNyA1VjMifV1dfSk7dmFyIExDLE1DZT1nKCgpPT57TEM9W1sicGF0aCIse2Q6Ik0xMCAzaC4wMSJ9XSxbInBhdGgiLHtkOiJNMTQgMmguMDEifV0sWyJwYXRoIix7ZDoibTIgOSAyMC01In1dLFsicGF0aCIse2Q6Ik0xMiAxMlY2LjUifV0sWyJyZWN0Iix7d2lkdGg6IjE2IixoZWlnaHQ6IjEwIix4OiI0Iix5OiIxMiIscng6IjMifV0sWyJwYXRoIix7ZDoiTTkgMTJ2NSJ9XSxbInBhdGgiLHtkOiJNMTUgMTJ2NSJ9XSxbInBhdGgiLHtkOiJNNCAxN2gxNiJ9XV19KTt2YXIgRUMsekNlPWcoKCk9PntFQz1bWyJwYXRoIix7ZDoiTTE2IDEzSDMifV0sWyJwYXRoIix7ZDoiTTE2IDE3SDMifV0sWyJwYXRoIix7ZDoibTcuMiA3LjktMy4zODggMi41QTIgMiAwIDAgMCAzIDEyLjAxVjIwYTEgMSAwIDAgMCAxIDFoMTZhMSAxIDAgMCAwIDEtMXYtOC42NTRjMC0yLTIuNDQtNi4wMjYtNi40NC04LjAyNmExIDEgMCAwIDAtMS4wODIuMDU3TDEwLjQgNS42In1dLFsiY2lyY2xlIix7Y3g6IjkiLGN5OiI3IixyOiIyIn1dXX0pO3ZhciBQQyxDQ2U9ZygoKT0+e1BDPVtbInBhdGgiLHtkOiJNMjAgMjF2LThhMiAyIDAgMCAwLTItMkg2YTIgMiAwIDAgMC0yIDJ2OCJ9XSxbInBhdGgiLHtkOiJNNCAxNnMuNS0xIDItMSAyLjUgMiA0IDIgMi41LTIgNC0yIDIuNSAyIDQgMiAyLTEgMi0xIn1dLFsicGF0aCIse2Q6Ik0yIDIxaDIwIn1dLFsicGF0aCIse2Q6Ik03IDh2MyJ9XSxbInBhdGgiLHtkOiJNMTIgOHYzIn1dLFsicGF0aCIse2Q6Ik0xNyA4djMifV0sWyJwYXRoIix7ZDoiTTcgNGguMDEifV0sWyJwYXRoIix7ZDoiTTEyIDRoLjAxIn1dLFsicGF0aCIse2Q6Ik0xNyA0aC4wMSJ9XV19KTt2YXIgSUMsVENlPWcoKCk9PntJQz1bWyJwYXRoIix7ZDoiTTExIDE0aDF2NCJ9XSxbInBhdGgiLHtkOiJNMTYgMnY0In1dLFsicGF0aCIse2Q6Ik0zIDEwaDE4In1dLFsicGF0aCIse2Q6Ik04IDJ2NCJ9XSxbInJlY3QiLHt4OiIzIix5OiI0Iix3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHJ4OiIyIn1dXX0pO3ZhciBBQywkQ2U9ZygoKT0+e0FDPVtbInJlY3QiLHt3aWR0aDoiMTYiLGhlaWdodDoiMjAiLHg6IjQiLHk6IjIiLHJ4OiIyIn1dLFsibGluZSIse3gxOiI4Iix4MjoiMTYiLHkxOiI2Iix5MjoiNiJ9XSxbImxpbmUiLHt4MToiMTYiLHgyOiIxNiIseTE6IjE0Iix5MjoiMTgifV0sWyJwYXRoIix7ZDoiTTE2IDEwaC4wMSJ9XSxbInBhdGgiLHtkOiJNMTIgMTBoLjAxIn1dLFsicGF0aCIse2Q6Ik04IDEwaC4wMSJ9XSxbInBhdGgiLHtkOiJNMTIgMTRoLjAxIn1dLFsicGF0aCIse2Q6Ik04IDE0aC4wMSJ9XSxbInBhdGgiLHtkOiJNMTIgMThoLjAxIn1dLFsicGF0aCIse2Q6Ik04IDE4aC4wMSJ9XV19KTt2YXIgTkMsRENlPWcoKCk9PntOQz1bWyJwYXRoIix7ZDoibTE0IDE4IDQgNCA0LTQifV0sWyJwYXRoIix7ZDoiTTE2IDJ2NCJ9XSxbInBhdGgiLHtkOiJNMTggMTR2OCJ9XSxbInBhdGgiLHtkOiJNMjEgMTEuMzU0VjZhMiAyIDAgMCAwLTItMkg1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmg3LjM0MyJ9XSxbInBhdGgiLHtkOiJNMyAxMGgxOCJ9XSxbInBhdGgiLHtkOiJNOCAydjQifV1dfSk7dmFyIFJDLExDZT1nKCgpPT57UkM9W1sicGF0aCIse2Q6Im0xNCAxOCA0LTQgNCA0In1dLFsicGF0aCIse2Q6Ik0xNiAydjQifV0sWyJwYXRoIix7ZDoiTTE4IDIydi04In1dLFsicGF0aCIse2Q6Ik0yMSAxMS4zNDNWNmEyIDIgMCAwIDAtMi0ySDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDkifV0sWyJwYXRoIix7ZDoiTTMgMTBoMTgifV0sWyJwYXRoIix7ZDoiTTggMnY0In1dXX0pO3ZhciBPQyxFQ2U9ZygoKT0+e09DPVtbInBhdGgiLHtkOiJNOCAydjQifV0sWyJwYXRoIix7ZDoiTTE2IDJ2NCJ9XSxbInBhdGgiLHtkOiJNMjEgMTRWNmEyIDIgMCAwIDAtMi0ySDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDgifV0sWyJwYXRoIix7ZDoiTTMgMTBoMTgifV0sWyJwYXRoIix7ZDoibTE2IDIwIDIgMiA0LTQifV1dfSk7dmFyIEZDLFBDZT1nKCgpPT57RkM9W1sicGF0aCIse2Q6Ik04IDJ2NCJ9XSxbInBhdGgiLHtkOiJNMTYgMnY0In1dLFsicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiNCIscng6IjIifV0sWyJwYXRoIix7ZDoiTTMgMTBoMTgifV0sWyJwYXRoIix7ZDoibTkgMTYgMiAyIDQtNCJ9XV19KTt2YXIgQkMsSUNlPWcoKCk9PntCQz1bWyJwYXRoIix7ZDoiTTE2IDE0djIuMmwxLjYgMSJ9XSxbInBhdGgiLHtkOiJNMTYgMnY0In1dLFsicGF0aCIse2Q6Ik0yMSA3LjVWNmEyIDIgMCAwIDAtMi0ySDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDMuNSJ9XSxbInBhdGgiLHtkOiJNMyAxMGg1In1dLFsicGF0aCIse2Q6Ik04IDJ2NCJ9XSxbImNpcmNsZSIse2N4OiIxNiIsY3k6IjE2IixyOiI2In1dXX0pO3ZhciBIQyxBQ2U9ZygoKT0+e0hDPVtbInBhdGgiLHtkOiJtMTUuMjI4IDE2Ljg1Mi0uOTIzLS4zODMifV0sWyJwYXRoIix7ZDoibTE1LjIyOCAxOS4xNDgtLjkyMy4zODMifV0sWyJwYXRoIix7ZDoiTTE2IDJ2NCJ9XSxbInBhdGgiLHtkOiJtMTYuNDcgMTQuMzA1LjM4Mi45MjMifV0sWyJwYXRoIix7ZDoibTE2Ljg1MiAyMC43NzItLjM4My45MjQifV0sWyJwYXRoIix7ZDoibTE5LjE0OCAxNS4yMjguMzgzLS45MjMifV0sWyJwYXRoIix7ZDoibTE5LjUzIDIxLjY5Ni0uMzgyLS45MjQifV0sWyJwYXRoIix7ZDoibTIwLjc3MiAxNi44NTIuOTI0LS4zODMifV0sWyJwYXRoIix7ZDoibTIwLjc3MiAxOS4xNDguOTI0LjM4MyJ9XSxbInBhdGgiLHtkOiJNMjEgMTAuNTkyVjZhMiAyIDAgMCAwLTItMkg1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmg2In1dLFsicGF0aCIse2Q6Ik0zIDEwaDE4In1dLFsicGF0aCIse2Q6Ik04IDJ2NCJ9XSxbImNpcmNsZSIse2N4OiIxOCIsY3k6IjE4IixyOiIzIn1dXX0pO3ZhciBxQyxOQ2U9ZygoKT0+e3FDPVtbInBhdGgiLHtkOiJNOCAydjQifV0sWyJwYXRoIix7ZDoiTTE2IDJ2NCJ9XSxbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjQiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik0zIDEwaDE4In1dLFsicGF0aCIse2Q6Ik04IDE0aC4wMSJ9XSxbInBhdGgiLHtkOiJNMTIgMTRoLjAxIn1dLFsicGF0aCIse2Q6Ik0xNiAxNGguMDEifV0sWyJwYXRoIix7ZDoiTTggMThoLjAxIn1dLFsicGF0aCIse2Q6Ik0xMiAxOGguMDEifV0sWyJwYXRoIix7ZDoiTTE2IDE4aC4wMSJ9XV19KTt2YXIgakMsUkNlPWcoKCk9PntqQz1bWyJwYXRoIix7ZDoiTTMgMjBhMiAyIDAgMCAwIDIgMmgxMGEyLjQgMi40IDAgMCAwIDEuNzA2LS43MDZsMy41ODgtMy41ODhBMi40IDIuNCAwIDAgMCAyMSAxNlY2YTIgMiAwIDAgMC0yLTJINWEyIDIgMCAwIDAtMiAyeiJ9XSxbInBhdGgiLHtkOiJNMTUgMjJ2LTVhMSAxIDAgMCAxIDEtMWg1In1dLFsicGF0aCIse2Q6Ik04IDJ2NCJ9XSxbInBhdGgiLHtkOiJNMTYgMnY0In1dLFsicGF0aCIse2Q6Ik0zIDEwaDE4In1dXX0pO3ZhciBWQyxPQ2U9ZygoKT0+e1ZDPVtbInBhdGgiLHtkOiJNOCAydjQifV0sWyJwYXRoIix7ZDoiTTE2IDJ2NCJ9XSxbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjQiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik0zIDEwaDE4In1dLFsicGF0aCIse2Q6Ik0xMCAxNmg0In1dXX0pO3ZhciBVQyxGQ2U9ZygoKT0+e1VDPVtbInBhdGgiLHtkOiJNMTIuMTI3IDIySDVhMiAyIDAgMCAxLTItMlY2YTIgMiAwIDAgMSAyLTJoMTRhMiAyIDAgMCAxIDIgMnY1LjEyNSJ9XSxbInBhdGgiLHtkOiJNMTQuNjIgMTguOEEyLjI1IDIuMjUgMCAxIDEgMTggMTUuODM2YTIuMjUgMi4yNSAwIDEgMSAzLjM4IDIuOTY2bC0yLjYyNiAyLjg1NmEuOTk4Ljk5OCAwIDAgMS0xLjUwNyAweiJ9XSxbInBhdGgiLHtkOiJNMTYgMnY0In1dLFsicGF0aCIse2Q6Ik0zIDEwaDE4In1dLFsicGF0aCIse2Q6Ik04IDJ2NCJ9XV19KTt2YXIgV0MsQkNlPWcoKCk9PntXQz1bWyJwYXRoIix7ZDoiTTQuMiA0LjJBMiAyIDAgMCAwIDMgNnYxNGEyIDIgMCAwIDAgMiAyaDE0YTIgMiAwIDAgMCAxLjgyLTEuMTgifV0sWyJwYXRoIix7ZDoiTTIxIDE1LjVWNmEyIDIgMCAwIDAtMi0ySDkuNSJ9XSxbInBhdGgiLHtkOiJNMTYgMnY0In1dLFsicGF0aCIse2Q6Ik0zIDEwaDcifV0sWyJwYXRoIix7ZDoiTTIxIDEwaC01LjUifV0sWyJwYXRoIix7ZDoibTIgMiAyMCAyMCJ9XV19KTt2YXIgR0MsSENlPWcoKCk9PntHQz1bWyJwYXRoIix7ZDoiTTE2IDE5aDYifV0sWyJwYXRoIix7ZDoiTTE2IDJ2NCJ9XSxbInBhdGgiLHtkOiJNMjEgMTVWNmEyIDIgMCAwIDAtMi0ySDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDguNSJ9XSxbInBhdGgiLHtkOiJNMyAxMGgxOCJ9XSxbInBhdGgiLHtkOiJNOCAydjQifV1dfSk7dmFyIEtDLHFDZT1nKCgpPT57S0M9W1sicGF0aCIse2Q6Ik04IDJ2NCJ9XSxbInBhdGgiLHtkOiJNMTYgMnY0In1dLFsicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiNCIscng6IjIifV0sWyJwYXRoIix7ZDoiTTMgMTBoMTgifV0sWyJwYXRoIix7ZDoiTTEwIDE2aDQifV0sWyJwYXRoIix7ZDoiTTEyIDE0djQifV1dfSk7dmFyIFlDLGpDZT1nKCgpPT57WUM9W1sicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiNCIscng6IjIifV0sWyJwYXRoIix7ZDoiTTE2IDJ2NCJ9XSxbInBhdGgiLHtkOiJNMyAxMGgxOCJ9XSxbInBhdGgiLHtkOiJNOCAydjQifV0sWyJwYXRoIix7ZDoiTTE3IDE0aC02In1dLFsicGF0aCIse2Q6Ik0xMyAxOEg3In1dLFsicGF0aCIse2Q6Ik03IDE0aC4wMSJ9XSxbInBhdGgiLHtkOiJNMTcgMThoLjAxIn1dXX0pO3ZhciBaQyxWQ2U9ZygoKT0+e1pDPVtbInBhdGgiLHtkOiJNMTYgMTloNiJ9XSxbInBhdGgiLHtkOiJNMTYgMnY0In1dLFsicGF0aCIse2Q6Ik0xOSAxNnY2In1dLFsicGF0aCIse2Q6Ik0yMSAxMi41OThWNmEyIDIgMCAwIDAtMi0ySDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDguNSJ9XSxbInBhdGgiLHtkOiJNMyAxMGgxOCJ9XSxbInBhdGgiLHtkOiJNOCAydjQifV1dfSk7dmFyIFhDLFVDZT1nKCgpPT57WEM9W1sicGF0aCIse2Q6Ik0xNiAydjQifV0sWyJwYXRoIix7ZDoiTTIxIDExLjc1VjZhMiAyIDAgMCAwLTItMkg1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmg3LjI1In1dLFsicGF0aCIse2Q6Im0yMiAyMi0xLjg3NS0xLjg3NSJ9XSxbInBhdGgiLHtkOiJNMyAxMGgxOCJ9XSxbInBhdGgiLHtkOiJNOCAydjQifV0sWyJjaXJjbGUiLHtjeDoiMTgiLGN5OiIxOCIscjoiMyJ9XV19KTt2YXIgUUMsV0NlPWcoKCk9PntRQz1bWyJwYXRoIix7ZDoiTTExIDEwdjRoNCJ9XSxbInBhdGgiLHtkOiJtMTEgMTQgMS41MzUtMS42MDVhNSA1IDAgMCAxIDggMS41In1dLFsicGF0aCIse2Q6Ik0xNiAydjQifV0sWyJwYXRoIix7ZDoibTIxIDE4LTEuNTM1IDEuNjA1YTUgNSAwIDAgMS04LTEuNSJ9XSxbInBhdGgiLHtkOiJNMjEgMjJ2LTRoLTQifV0sWyJwYXRoIix7ZDoiTTIxIDguNVY2YTIgMiAwIDAgMC0yLTJINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoNC4zIn1dLFsicGF0aCIse2Q6Ik0zIDEwaDQifV0sWyJwYXRoIix7ZDoiTTggMnY0In1dXX0pO3ZhciBKQyxHQ2U9ZygoKT0+e0pDPVtbInBhdGgiLHtkOiJNOCAydjQifV0sWyJwYXRoIix7ZDoiTTE2IDJ2NCJ9XSxbInBhdGgiLHtkOiJNMjEgMTNWNmEyIDIgMCAwIDAtMi0ySDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDgifV0sWyJwYXRoIix7ZDoiTTMgMTBoMTgifV0sWyJwYXRoIix7ZDoibTE3IDIyIDUtNSJ9XSxbInBhdGgiLHtkOiJtMTcgMTcgNSA1In1dXX0pO3ZhciBlVCxLQ2U9ZygoKT0+e2VUPVtbInBhdGgiLHtkOiJNOCAydjQifV0sWyJwYXRoIix7ZDoiTTE2IDJ2NCJ9XSxbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjQiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik0zIDEwaDE4In1dLFsicGF0aCIse2Q6Im0xNCAxNC00IDQifV0sWyJwYXRoIix7ZDoibTEwIDE0IDQgNCJ9XV19KTt2YXIgdFQsWUNlPWcoKCk9Pnt0VD1bWyJwYXRoIix7ZDoiTTggMnY0In1dLFsicGF0aCIse2Q6Ik0xNiAydjQifV0sWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiI0IixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNMyAxMGgxOCJ9XV19KTt2YXIgYVQsWkNlPWcoKCk9PnthVD1bWyJwYXRoIix7ZDoiTTEyIDJ2MiJ9XSxbInBhdGgiLHtkOiJNMTUuNzI2IDIxLjAxQTIgMiAwIDAgMSAxNCAyMkg0YTIgMiAwIDAgMS0yLTJWMTBhMiAyIDAgMCAxIDItMiJ9XSxbInBhdGgiLHtkOiJNMTggMnYyIn1dLFsicGF0aCIse2Q6Ik0yIDEzaDIifV0sWyJwYXRoIix7ZDoiTTggOGgxNCJ9XSxbInJlY3QiLHt4OiI4Iix5OiIzIix3aWR0aDoiMTQiLGhlaWdodDoiMTQiLHJ4OiIyIn1dXX0pO3ZhciBzVCxYQ2U9ZygoKT0+e3NUPVtbInBhdGgiLHtkOiJNMTQuNTY0IDE0LjU1OGEzIDMgMCAxIDEtNC4xMjItNC4xMjEifV0sWyJwYXRoIix7ZDoibTIgMiAyMCAyMCJ9XSxbInBhdGgiLHtkOiJNMjAgMjBINGEyIDIgMCAwIDEtMi0yVjlhMiAyIDAgMCAxIDItMmgxLjk5N2EyIDIgMCAwIDAgLjgxOS0uMTc1In1dLFsicGF0aCIse2Q6Ik05LjY5NSA0LjAyNEEyIDIgMCAwIDEgMTAuMDA0IDRoMy45OTNhMiAyIDAgMCAxIDEuNzYgMS4wNWwuNDg2LjlBMiAyIDAgMCAwIDE4LjAwMyA3SDIwYTIgMiAwIDAgMSAyIDJ2Ny4zNDQifV1dfSk7dmFyIGlULFFDZT1nKCgpPT57aVQ9W1sicGF0aCIse2Q6Ik0xMy45OTcgNGEyIDIgMCAwIDEgMS43NiAxLjA1bC40ODYuOUEyIDIgMCAwIDAgMTguMDAzIDdIMjBhMiAyIDAgMCAxIDIgMnY5YTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0yVjlhMiAyIDAgMCAxIDItMmgxLjk5N2EyIDIgMCAwIDAgMS43NTktMS4wNDhsLjQ4OS0uOTA0QTIgMiAwIDAgMSAxMC4wMDQgNHoifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMyIscjoiMyJ9XV19KTt2YXIgclQsSkNlPWcoKCk9PntyVD1bWyJwYXRoIix7ZDoiTTUuNyAyMWEyIDIgMCAwIDEtMy41LTJsOC42LTE0YTYgNiAwIDAgMSAxMC40IDYgMiAyIDAgMSAxLTMuNDY0LTIgMiAyIDAgMSAwLTMuNDY0LTJaIn1dLFsicGF0aCIse2Q6Ik0xNy43NSA3IDE1IDIuMSJ9XSxbInBhdGgiLHtkOiJNMTAuOSA0LjggMTMgOSJ9XSxbInBhdGgiLHtkOiJtNy45IDkuNyAyIDQuNCJ9XSxbInBhdGgiLHtkOiJNNC45IDE0LjcgNyAxOC45In1dXX0pO3ZhciBvVCxlVGU9ZygoKT0+e29UPVtbInBhdGgiLHtkOiJNMTAgN3YxMC45In1dLFsicGF0aCIse2Q6Ik0xNCA2LjFWMTcifV0sWyJwYXRoIix7ZDoiTTE2IDdWM2ExIDEgMCAwIDEgMS43MDctLjcwNyAyLjUgMi41IDAgMCAwIDIuMTUyLjcxNyAxIDEgMCAwIDEgMS4xMzEgMS4xMzEgMi41IDIuNSAwIDAgMCAuNzE3IDIuMTUyQTEgMSAwIDAgMSAyMSA4aC00In1dLFsicGF0aCIse2Q6Ik0xNi41MzYgNy40NjVhNSA1IDAgMCAwLTcuMDcyIDBsLTIgMmE1IDUgMCAwIDAgMCA3LjA3IDUgNSAwIDAgMCA3LjA3MiAwbDItMmE1IDUgMCAwIDAgMC03LjA3In1dLFsicGF0aCIse2Q6Ik04IDE3djRhMSAxIDAgMCAxLTEuNzA3LjcwNyAyLjUgMi41IDAgMCAwLTIuMTUyLS43MTcgMSAxIDAgMCAxLTEuMTMxLTEuMTMxIDIuNSAyLjUgMCAwIDAtLjcxNy0yLjE1MkExIDEgMCAwIDEgMyAxNmg0In1dXX0pO3ZhciBuVCx0VGU9ZygoKT0+e25UPVtbInBhdGgiLHtkOiJNMTAgMTB2Ny45In1dLFsicGF0aCIse2Q6Ik0xMS44MDIgNi4xNDVhNSA1IDAgMCAxIDYuMDUzIDYuMDUzIn1dLFsicGF0aCIse2Q6Ik0xNCA2LjF2Mi4yNDMifV0sWyJwYXRoIix7ZDoibTE1LjUgMTUuNTcxLS45NjQuOTY0YTUgNSAwIDAgMS03LjA3MSAwIDUgNSAwIDAgMSAwLTcuMDdsLjk2NC0uOTY1In1dLFsicGF0aCIse2Q6Ik0xNiA3VjNhMSAxIDAgMCAxIDEuNzA3LS43MDcgMi41IDIuNSAwIDAgMCAyLjE1Mi43MTcgMSAxIDAgMCAxIDEuMTMxIDEuMTMxIDIuNSAyLjUgMCAwIDAgLjcxNyAyLjE1MkExIDEgMCAwIDEgMjEgOGgtNCJ9XSxbInBhdGgiLHtkOiJtMiAyIDIwIDIwIn1dLFsicGF0aCIse2Q6Ik04IDE3djRhMSAxIDAgMCAxLTEuNzA3LjcwNyAyLjUgMi41IDAgMCAwLTIuMTUyLS43MTcgMSAxIDAgMCAxLTEuMTMxLTEuMTMxIDIuNSAyLjUgMCAwIDAtLjcxNy0yLjE1MkExIDEgMCAwIDEgMyAxNmg0In1dXX0pO3ZhciBsVCxhVGU9ZygoKT0+e2xUPVtbInBhdGgiLHtkOiJNMTIgMjJ2LTRjMS41IDEuNSAzLjUgMyA2IDMgMC0xLjUtLjUtMy41LTItNSJ9XSxbInBhdGgiLHtkOiJNMTMuOTg4IDguMzI3QzEzLjkwMiA2LjA1NCAxMy4zNjUgMy44MiAxMiAyYTkuMyA5LjMgMCAwIDAtMS40NDUgMi45In1dLFsicGF0aCIse2Q6Ik0xNy4zNzUgMTEuNzI1QzE4Ljg4MiAxMC41MyAyMSA3Ljg0MSAyMSA2Yy0yLjMyNCAwLTUuMDggMS4yOTYtNi42NjIgMi42ODQifV0sWyJwYXRoIix7ZDoibTIgMiAyMCAyMCJ9XSxbInBhdGgiLHtkOiJNMjEuMDI0IDE1LjM3OEExNSAxNSAwIDAgMCAyMiAxNWMtLjQyNi0xLjI3OS0yLjY3LTIuNTU3LTQuMjUtMi45MDcifV0sWyJwYXRoIix7ZDoiTTYuOTk1IDYuOTkyQzUuNzE0IDYuNCA0LjI5IDYgMyA2YzAgMiAyLjUgNSA0IDYtMS41IDAtNC41IDEuNS01IDMgMy41IDEuNSA2IDEgNiAxLTEuNSAxLjUtMiAzLjUtMiA1IDIuNSAwIDQuNS0xLjUgNi0zIn1dXX0pO3ZhciBjVCxzVGU9ZygoKT0+e2NUPVtbInBhdGgiLHtkOiJNMTIgMjJ2LTQifV0sWyJwYXRoIix7ZDoiTTcgMTJjLTEuNSAwLTQuNSAxLjUtNSAzIDMuNSAxLjUgNiAxIDYgMS0xLjUgMS41LTIgMy41LTIgNSAyLjUgMCA0LjUtMS41IDYtMyAxLjUgMS41IDMuNSAzIDYgMyAwLTEuNS0uNS0zLjUtMi01IDAgMCAyLjUuNSA2LTEtLjUtMS41LTMuNS0zLTUtMyAxLjUtMSA0LTQgNC02LTIuNSAwLTUuNSAxLjUtNyAzIDAtMi41LS41LTUtMi03LTEuNSAyLTIgNC41LTIgNy0xLjUtMS41LTQuNS0zLTctMyAwIDIgMi41IDUgNCA2In1dXX0pO3ZhciBkVCxpVGU9ZygoKT0+e2RUPVtbInBhdGgiLHtkOiJNMTAuNSA1SDE5YTIgMiAwIDAgMSAyIDJ2OC41In1dLFsicGF0aCIse2Q6Ik0xNyAxMWgtLjUifV0sWyJwYXRoIix7ZDoiTTE5IDE5SDVhMiAyIDAgMCAxLTItMlY3YTIgMiAwIDAgMSAyLTIifV0sWyJwYXRoIix7ZDoibTIgMiAyMCAyMCJ9XSxbInBhdGgiLHtkOiJNNyAxMWg0In1dLFsicGF0aCIse2Q6Ik03IDE1aDIuNSJ9XV19KTt2YXIgQWYsclRlPWcoKCk9PntBZj1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE0Iix4OiIzIix5OiI1IixyeDoiMiIscnk6IjIifV0sWyJwYXRoIix7ZDoiTTcgMTVoNE0xNSAxNWgyTTcgMTFoMk0xMyAxMWg0In1dXX0pO3ZhciB1VCxvVGU9ZygoKT0+e3VUPVtbInBhdGgiLHtkOiJtMjEgOC0yIDItMS41LTMuN0EyIDIgMCAwIDAgMTUuNjQ2IDVIOC40YTIgMiAwIDAgMC0xLjkwMyAxLjI1N0w1IDEwIDMgOCJ9XSxbInBhdGgiLHtkOiJNNyAxNGguMDEifV0sWyJwYXRoIix7ZDoiTTE3IDE0aC4wMSJ9XSxbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiOCIseDoiMyIseToiMTAiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik01IDE4djIifV0sWyJwYXRoIix7ZDoiTTE5IDE4djIifV1dfSk7dmFyIHBULG5UZT1nKCgpPT57cFQ9W1sicGF0aCIse2Q6Ik0xOSAxN2gyYy42IDAgMS0uNCAxLTF2LTNjMC0uOS0uNy0xLjctMS41LTEuOUMxOC43IDEwLjYgMTYgMTAgMTYgMTBzLTEuMy0xLjQtMi4yLTIuM2MtLjUtLjQtMS4xLS43LTEuOC0uN0g1Yy0uNiAwLTEuMS40LTEuNC45bC0xLjQgMi45QTMuNyAzLjcgMCAwIDAgMiAxMnY0YzAgLjYuNCAxIDEgMWgyIn1dLFsiY2lyY2xlIix7Y3g6IjciLGN5OiIxNyIscjoiMiJ9XSxbInBhdGgiLHtkOiJNOSAxN2g2In1dLFsiY2lyY2xlIix7Y3g6IjE3IixjeToiMTciLHI6IjIifV1dfSk7dmFyIGhULGxUZT1nKCgpPT57aFQ9W1sicGF0aCIse2Q6Ik0xMCAyaDQifV0sWyJwYXRoIix7ZDoibTIxIDgtMiAyLTEuNS0zLjdBMiAyIDAgMCAwIDE1LjY0NiA1SDguNGEyIDIgMCAwIDAtMS45MDMgMS4yNTdMNSAxMCAzIDgifV0sWyJwYXRoIix7ZDoiTTcgMTRoLjAxIn1dLFsicGF0aCIse2Q6Ik0xNyAxNGguMDEifV0sWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjgiLHg6IjMiLHk6IjEwIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNNSAxOHYyIn1dLFsicGF0aCIse2Q6Ik0xOSAxOHYyIn1dXX0pO3ZhciBmVCxjVGU9ZygoKT0+e2ZUPVtbInBhdGgiLHtkOiJNMTggMTlWOWE0IDQgMCAwIDAtNC00SDZhNCA0IDAgMCAwLTQgNHY4YTIgMiAwIDAgMCAyIDJoMiJ9XSxbInBhdGgiLHtkOiJNMiA5aDNhMSAxIDAgMCAxIDEgMXYyYTEgMSAwIDAgMS0xIDFIMiJ9XSxbInBhdGgiLHtkOiJNMjIgMTd2MWExIDEgMCAwIDEtMSAxSDEwdi05YTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMSAxdjkifV0sWyJjaXJjbGUiLHtjeDoiOCIsY3k6IjE5IixyOiIyIn1dXX0pO3ZhciBtVCxkVGU9ZygoKT0+e21UPVtbInBhdGgiLHtkOiJNMTIgMTR2NCJ9XSxbInBhdGgiLHtkOiJNMTQuMTcyIDJhMiAyIDAgMCAxIDEuNDE0LjU4NmwzLjgyOCAzLjgyOEEyIDIgMCAwIDEgMjAgNy44MjhWMjBhMiAyIDAgMCAxLTIgMkg2YTIgMiAwIDAgMS0yLTJWNGEyIDIgMCAwIDEgMi0yeiJ9XSxbInBhdGgiLHtkOiJNOCAxNGg4In1dLFsicmVjdCIse3g6IjgiLHk6IjEwIix3aWR0aDoiOCIsaGVpZ2h0OiI4IixyeDoiMSJ9XV19KTt2YXIgZ1QsdVRlPWcoKCk9PntnVD1bWyJwYXRoIix7ZDoiTTIuMjcgMjEuN3M5Ljg3LTMuNSAxMi43My02LjM2YTQuNSA0LjUgMCAwIDAtNi4zNi02LjM3QzUuNzcgMTEuODQgMi4yNyAyMS43IDIuMjcgMjEuN3pNOC42NCAxNGwtMi4wNS0yLjA0TTE1LjM0IDE1bC0yLjQ2LTIuNDYifV0sWyJwYXRoIix7ZDoiTTIyIDlzLTEuMzMtMi0zLjUtMkMxNi44NiA3IDE1IDkgMTUgOXMxLjMzIDIgMy41IDJTMjIgOSAyMiA5eiJ9XSxbInBhdGgiLHtkOiJNMTUgMnMtMiAxLjMzLTIgMy41UzE1IDkgMTUgOXMyLTEuODQgMi0zLjVDMTcgMy4zMyAxNSAyIDE1IDJ6In1dXX0pO3ZhciBiVCxwVGU9ZygoKT0+e2JUPVtbInBhdGgiLHtkOiJNMTAgOXY3In1dLFsicGF0aCIse2Q6Ik0xNCA2djEwIn1dLFsiY2lyY2xlIix7Y3g6IjE3LjUiLGN5OiIxMi41IixyOiIzLjUifV0sWyJjaXJjbGUiLHtjeDoiNi41IixjeToiMTIuNSIscjoiMy41In1dXX0pO3ZhciB2VCxoVGU9ZygoKT0+e3ZUPVtbInBhdGgiLHtkOiJtMiAxNiA0LjAzOS05LjY5YS41LjUgMCAwIDEgLjkyMyAwTDExIDE2In1dLFsicGF0aCIse2Q6Ik0yMiA5djcifV0sWyJwYXRoIix7ZDoiTTMuMzA0IDEzaDYuMzkyIn1dLFsiY2lyY2xlIix7Y3g6IjE4LjUiLGN5OiIxMi41IixyOiIzLjUifV1dfSk7dmFyIHhULGZUZT1nKCgpPT57eFQ9W1sicGF0aCIse2Q6Ik0xNSAxMWg0LjVhMSAxIDAgMCAxIDAgNWgtNGEuNS41IDAgMCAxLS41LS41di05YS41LjUgMCAwIDEgLjUtLjVoM2ExIDEgMCAwIDEgMCA1In1dLFsicGF0aCIse2Q6Im0yIDE2IDQuMDM5LTkuNjlhLjUuNSAwIDAgMSAuOTIzIDBMMTEgMTYifV0sWyJwYXRoIix7ZDoiTTMuMzA0IDEzaDYuMzkyIn1dXX0pO3ZhciB5VCxtVGU9ZygoKT0+e3lUPVtbInJlY3QiLHt3aWR0aDoiMjAiLGhlaWdodDoiMTYiLHg6IjIiLHk6IjQiLHJ4OiIyIn1dLFsiY2lyY2xlIix7Y3g6IjgiLGN5OiIxMCIscjoiMiJ9XSxbInBhdGgiLHtkOiJNOCAxMmg4In1dLFsiY2lyY2xlIix7Y3g6IjE2IixjeToiMTAiLHI6IjIifV0sWyJwYXRoIix7ZDoibTYgMjAgLjctMi45QTEuNCAxLjQgMCAwIDEgOC4xIDE2aDcuOGExLjQgMS40IDAgMCAxIDEuNCAxbC43IDMifV1dfSk7dmFyIHdULGdUZT1nKCgpPT57d1Q9W1sicGF0aCIse2Q6Ik0yIDhWNmEyIDIgMCAwIDEgMi0yaDE2YTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMmgtNiJ9XSxbInBhdGgiLHtkOiJNMiAxMmE5IDkgMCAwIDEgOCA4In1dLFsicGF0aCIse2Q6Ik0yIDE2YTUgNSAwIDAgMSA0IDQifV0sWyJsaW5lIix7eDE6IjIiLHgyOiIyLjAxIix5MToiMjAiLHkyOiIyMCJ9XV19KTt2YXIga1QsYlRlPWcoKCk9PntrVD1bWyJwYXRoIix7ZDoiTTEwIDVWMyJ9XSxbInBhdGgiLHtkOiJNMTQgNVYzIn1dLFsicGF0aCIse2Q6Ik0xNSAyMXYtM2EzIDMgMCAwIDAtNiAwdjMifV0sWyJwYXRoIix7ZDoiTTE4IDN2OCJ9XSxbInBhdGgiLHtkOiJNMTggNUg2In1dLFsicGF0aCIse2Q6Ik0yMiAxMUgyIn1dLFsicGF0aCIse2Q6Ik0yMiA5djEwYTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0yVjkifV0sWyJwYXRoIix7ZDoiTTYgM3Y4In1dXX0pO3ZhciBTVCx2VGU9ZygoKT0+e1NUPVtbInBhdGgiLHtkOiJNMTIgNWMuNjcgMCAxLjM1LjA5IDIgLjI2IDEuNzgtMiA1LjAzLTIuODQgNi40Mi0yLjI2IDEuNC41OC0uNDIgNy0uNDIgNyAuNTcgMS4wNyAxIDIuMjQgMSAzLjQ0QzIxIDE3LjkgMTYuOTcgMjEgMTIgMjFzLTktMy05LTcuNTZjMC0xLjI1LjUtMi40IDEtMy40NCAwIDAtMS44OS02LjQyLS41LTcgMS4zOS0uNTggNC43Mi4yMyA2LjUgMi4yM0E5LjA0IDkuMDQgMCAwIDEgMTIgNVoifV0sWyJwYXRoIix7ZDoiTTggMTR2LjUifV0sWyJwYXRoIix7ZDoiTTE2IDE0di41In1dLFsicGF0aCIse2Q6Ik0xMS4yNSAxNi4yNWgxLjVMMTIgMTdsLS43NS0uNzVaIn1dXX0pO3ZhciBfVCx4VGU9ZygoKT0+e19UPVtbInBhdGgiLHtkOiJtMTIuMzA5IDYuNjUyIDQuNzk3IDIuNDAxYTEgMSAwIDAgMSAuNDQ3IDEuMzQxbC0uNTAxIDEuMDAxLjYwNS42MDVoMi43MjVhMSAxIDAgMCAxIC44OTQgMS40NDdsLS43MjQgMS40NDgifV0sWyJwYXRoIix7ZDoibTE1LjE2NiAxNS4xNjYtLjcxOSAxLjQzOWExIDEgMCAwIDEtMS4zNDIuNDQ3TDMuNjEgMTIuM2EyLjkyIDIuOTIgMCAwIDEtMS4zLTMuOTFMMy42OSA1LjZhMi45IDIuOSAwIDAgMSAuODczLTEuMDM3In1dLFsicGF0aCIse2Q6Ik0yIDE5aDMuNzZhMiAyIDAgMCAwIDEuOC0xLjFsMS40NDEtMi45MDIifV0sWyJwYXRoIix7ZDoibTIgMiAyMCAyMCJ9XSxbInBhdGgiLHtkOiJNMiAyMXYtNCJ9XSxbInBhdGgiLHtkOiJNNyA5aC4wMSJ9XV19KTt2YXIgTVQseVRlPWcoKCk9PntNVD1bWyJwYXRoIix7ZDoiTTE2Ljc1IDEyaDMuNjMyYTEgMSAwIDAgMSAuODk0IDEuNDQ3bC0yLjAzNCA0LjA2OWExIDEgMCAwIDEtMS43MDguMTM0bC0yLjEyNC0yLjk3In1dLFsicGF0aCIse2Q6Ik0xNy4xMDYgOS4wNTNhMSAxIDAgMCAxIC40NDcgMS4zNDFsLTMuMTA2IDYuMjExYTEgMSAwIDAgMS0xLjM0Mi40NDdMMy42MSAxMi4zYTIuOTIgMi45MiAwIDAgMS0xLjMtMy45MUwzLjY5IDUuNmEyLjkyIDIuOTIgMCAwIDEgMy45Mi0xLjN6In1dLFsicGF0aCIse2Q6Ik0yIDE5aDMuNzZhMiAyIDAgMCAwIDEuOC0xLjFMOSAxNSJ9XSxbInBhdGgiLHtkOiJNMiAyMXYtNCJ9XSxbInBhdGgiLHtkOiJNNyA5aC4wMSJ9XV19KTt2YXIgTmYsd1RlPWcoKCk9PntOZj1bWyJwYXRoIix7ZDoiTTMgM3YxNmEyIDIgMCAwIDAgMiAyaDE2In1dLFsicGF0aCIse2Q6Ik03IDExLjIwN2EuNS41IDAgMCAxIC4xNDYtLjM1M2wyLTJhLjUuNSAwIDAgMSAuNzA4IDBsMy4yOTIgMy4yOTJhLjUuNSAwIDAgMCAuNzA4IDBsNC4yOTItNC4yOTJhLjUuNSAwIDAgMSAuODU0LjM1M1YxNmExIDEgMCAwIDEtMSAxSDhhMSAxIDAgMCAxLTEtMXoifV1dfSk7dmFyIFJmLGtUZT1nKCgpPT57UmY9W1sicGF0aCIse2Q6Ik0zIDN2MTZhMiAyIDAgMCAwIDIgMmgxNiJ9XSxbInJlY3QiLHt4OiI3Iix5OiIxMyIsd2lkdGg6IjkiLGhlaWdodDoiNCIscng6IjEifV0sWyJyZWN0Iix7eDoiNyIseToiNSIsd2lkdGg6IjEyIixoZWlnaHQ6IjQiLHJ4OiIxIn1dXX0pO3ZhciB6VCxTVGU9ZygoKT0+e3pUPVtbInBhdGgiLHtkOiJNMyAzdjE2YTIgMiAwIDAgMCAyIDJoMTYifV0sWyJwYXRoIix7ZDoiTTcgMTFoOCJ9XSxbInBhdGgiLHtkOiJNNyAxNmgzIn1dLFsicGF0aCIse2Q6Ik03IDZoMTIifV1dfSk7dmFyIENULF9UZT1nKCgpPT57Q1Q9W1sicGF0aCIse2Q6Ik0zIDN2MTZhMiAyIDAgMCAwIDIgMmgxNiJ9XSxbInBhdGgiLHtkOiJNNyAxMWg4In1dLFsicGF0aCIse2Q6Ik03IDE2aDEyIn1dLFsicGF0aCIse2Q6Ik03IDZoMyJ9XV19KTt2YXIgVFQsTVRlPWcoKCk9PntUVD1bWyJwYXRoIix7ZDoiTTExIDEzdjQifV0sWyJwYXRoIix7ZDoiTTE1IDV2NCJ9XSxbInBhdGgiLHtkOiJNMyAzdjE2YTIgMiAwIDAgMCAyIDJoMTYifV0sWyJyZWN0Iix7eDoiNyIseToiMTMiLHdpZHRoOiI5IixoZWlnaHQ6IjQiLHJ4OiIxIn1dLFsicmVjdCIse3g6IjciLHk6IjUiLHdpZHRoOiIxMiIsaGVpZ2h0OiI0IixyeDoiMSJ9XV19KTt2YXIgT2YselRlPWcoKCk9PntPZj1bWyJwYXRoIix7ZDoiTTMgM3YxNmEyIDIgMCAwIDAgMiAyaDE2In1dLFsicGF0aCIse2Q6Ik03IDE2aDgifV0sWyJwYXRoIix7ZDoiTTcgMTFoMTIifV0sWyJwYXRoIix7ZDoiTTcgNmgzIn1dXX0pO3ZhciBGZixDVGU9ZygoKT0+e0ZmPVtbInBhdGgiLHtkOiJNOSA1djQifV0sWyJyZWN0Iix7d2lkdGg6IjQiLGhlaWdodDoiNiIseDoiNyIseToiOSIscng6IjEifV0sWyJwYXRoIix7ZDoiTTkgMTV2MiJ9XSxbInBhdGgiLHtkOiJNMTcgM3YyIn1dLFsicmVjdCIse3dpZHRoOiI0IixoZWlnaHQ6IjgiLHg6IjE1Iix5OiI1IixyeDoiMSJ9XSxbInBhdGgiLHtkOiJNMTcgMTN2MyJ9XSxbInBhdGgiLHtkOiJNMyAzdjE2YTIgMiAwIDAgMCAyIDJoMTYifV1dfSk7dmFyIEJmLFRUZT1nKCgpPT57QmY9W1sicGF0aCIse2Q6Ik0zIDN2MTZhMiAyIDAgMCAwIDIgMmgxNiJ9XSxbInJlY3QiLHt4OiIxNSIseToiNSIsd2lkdGg6IjQiLGhlaWdodDoiMTIiLHJ4OiIxIn1dLFsicmVjdCIse3g6IjciLHk6IjgiLHdpZHRoOiI0IixoZWlnaHQ6IjkiLHJ4OiIxIn1dXX0pO3ZhciAkVCwkVGU9ZygoKT0+eyRUPVtbInBhdGgiLHtkOiJNMTMgMTdWOSJ9XSxbInBhdGgiLHtkOiJNMTggMTd2LTMifV0sWyJwYXRoIix7ZDoiTTMgM3YxNmEyIDIgMCAwIDAgMiAyaDE2In1dLFsicGF0aCIse2Q6Ik04IDE3VjUifV1dfSk7dmFyIEhmLERUZT1nKCgpPT57SGY9W1sicGF0aCIse2Q6Ik0xMyAxN1Y5In1dLFsicGF0aCIse2Q6Ik0xOCAxN1Y1In1dLFsicGF0aCIse2Q6Ik0zIDN2MTZhMiAyIDAgMCAwIDIgMmgxNiJ9XSxbInBhdGgiLHtkOiJNOCAxN3YtMyJ9XV19KTt2YXIgRFQsTFRlPWcoKCk9PntEVD1bWyJwYXRoIix7ZDoiTTExIDEzSDcifV0sWyJwYXRoIix7ZDoiTTE5IDloLTQifV0sWyJwYXRoIix7ZDoiTTMgM3YxNmEyIDIgMCAwIDAgMiAyaDE2In1dLFsicmVjdCIse3g6IjE1Iix5OiI1Iix3aWR0aDoiNCIsaGVpZ2h0OiIxMiIscng6IjEifV0sWyJyZWN0Iix7eDoiNyIseToiOCIsd2lkdGg6IjQiLGhlaWdodDoiOSIscng6IjEifV1dfSk7dmFyIHFmLEVUZT1nKCgpPT57cWY9W1sicGF0aCIse2Q6Ik0zIDN2MTZhMiAyIDAgMCAwIDIgMmgxNiJ9XSxbInBhdGgiLHtkOiJNMTggMTdWOSJ9XSxbInBhdGgiLHtkOiJNMTMgMTdWNSJ9XSxbInBhdGgiLHtkOiJNOCAxN3YtMyJ9XV19KTt2YXIgTFQsUFRlPWcoKCk9PntMVD1bWyJwYXRoIix7ZDoiTTEwIDZoOCJ9XSxbInBhdGgiLHtkOiJNMTIgMTZoNiJ9XSxbInBhdGgiLHtkOiJNMyAzdjE2YTIgMiAwIDAgMCAyIDJoMTYifV0sWyJwYXRoIix7ZDoiTTggMTFoNyJ9XV19KTt2YXIgamYsSVRlPWcoKCk9PntqZj1bWyJwYXRoIix7ZDoiTTMgM3YxNmEyIDIgMCAwIDAgMiAyaDE2In1dLFsicGF0aCIse2Q6Im0xOSA5LTUgNS00LTQtMyAzIn1dXX0pO3ZhciBFVCxBVGU9ZygoKT0+e0VUPVtbInBhdGgiLHtkOiJtMTMuMTEgNy42NjQgMS43OCAyLjY3MiJ9XSxbInBhdGgiLHtkOiJtMTQuMTYyIDEyLjc4OC0zLjMyNCAxLjQyNCJ9XSxbInBhdGgiLHtkOiJtMjAgNC02LjA2IDEuNTE1In1dLFsicGF0aCIse2Q6Ik0zIDN2MTZhMiAyIDAgMCAwIDIgMmgxNiJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjYiLHI6IjIifV0sWyJjaXJjbGUiLHtjeDoiMTYiLGN5OiIxMiIscjoiMiJ9XSxbImNpcmNsZSIse2N4OiI5IixjeToiMTUiLHI6IjIifV1dfSk7dmFyIFBULE5UZT1nKCgpPT57UFQ9W1sicGF0aCIse2Q6Ik01IDIxVjMifV0sWyJwYXRoIix7ZDoiTTEyIDIxVjkifV0sWyJwYXRoIix7ZDoiTTE5IDIxdi02In1dXX0pO3ZhciBWZixSVGU9ZygoKT0+e1ZmPVtbInBhdGgiLHtkOiJNNSAyMXYtNiJ9XSxbInBhdGgiLHtkOiJNMTIgMjFWOSJ9XSxbInBhdGgiLHtkOiJNMTkgMjFWMyJ9XV19KTt2YXIgVWYsT1RlPWcoKCk9PntVZj1bWyJwYXRoIix7ZDoiTTUgMjF2LTYifV0sWyJwYXRoIix7ZDoiTTEyIDIxVjMifV0sWyJwYXRoIix7ZDoiTTE5IDIxVjkifV1dfSk7dmFyIElULEZUZT1nKCgpPT57SVQ9W1sicGF0aCIse2Q6Ik0xMiAxNnY1In1dLFsicGF0aCIse2Q6Ik0xNiAxNHY3In1dLFsicGF0aCIse2Q6Ik0yMCAxMHYxMSJ9XSxbInBhdGgiLHtkOiJtMjIgMy04LjY0NiA4LjY0NmEuNS41IDAgMCAxLS43MDggMEw5LjM1NCA4LjM1NGEuNS41IDAgMCAwLS43MDcgMEwyIDE1In1dLFsicGF0aCIse2Q6Ik00IDE4djMifV0sWyJwYXRoIix7ZDoiTTggMTR2NyJ9XV19KTt2YXIgV2YsQlRlPWcoKCk9PntXZj1bWyJwYXRoIix7ZDoiTTYgNWgxMiJ9XSxbInBhdGgiLHtkOiJNNCAxMmgxMCJ9XSxbInBhdGgiLHtkOiJNMTIgMTloOCJ9XV19KTt2YXIgR2YsSFRlPWcoKCk9PntHZj1bWyJwYXRoIix7ZDoiTTIxIDEyYy41NTIgMCAxLjAwNS0uNDQ5Ljk1LS45OThhMTAgMTAgMCAwIDAtOC45NTMtOC45NTFjLS41NS0uMDU1LS45OTguMzk4LS45OTguOTV2OGExIDEgMCAwIDAgMSAxeiJ9XSxbInBhdGgiLHtkOiJNMjEuMjEgMTUuODlBMTAgMTAgMCAxIDEgOCAyLjgzIn1dXX0pO3ZhciBLZixxVGU9ZygoKT0+e0tmPVtbImNpcmNsZSIse2N4OiI3LjUiLGN5OiI3LjUiLHI6Ii41IixmaWxsOiJjdXJyZW50Q29sb3IifV0sWyJjaXJjbGUiLHtjeDoiMTguNSIsY3k6IjUuNSIscjoiLjUiLGZpbGw6ImN1cnJlbnRDb2xvciJ9XSxbImNpcmNsZSIse2N4OiIxMS41IixjeToiMTEuNSIscjoiLjUiLGZpbGw6ImN1cnJlbnRDb2xvciJ9XSxbImNpcmNsZSIse2N4OiI3LjUiLGN5OiIxNi41IixyOiIuNSIsZmlsbDoiY3VycmVudENvbG9yIn1dLFsiY2lyY2xlIix7Y3g6IjE3LjUiLGN5OiIxNC41IixyOiIuNSIsZmlsbDoiY3VycmVudENvbG9yIn1dLFsicGF0aCIse2Q6Ik0zIDN2MTZhMiAyIDAgMCAwIDIgMmgxNiJ9XV19KTt2YXIgQVQsalRlPWcoKCk9PntBVD1bWyJwYXRoIix7ZDoiTTMgM3YxNmEyIDIgMCAwIDAgMiAyaDE2In1dLFsicGF0aCIse2Q6Ik03IDE2Yy41LTIgMS41LTcgNC03IDIgMCAyIDMgNCAzIDIuNSAwIDQuNS01IDUtNyJ9XV19KTt2YXIgTlQsVlRlPWcoKCk9PntOVD1bWyJwYXRoIix7ZDoiTTE4IDYgNyAxN2wtNS01In1dLFsicGF0aCIse2Q6Im0yMiAxMC03LjUgNy41TDEzIDE2In1dXX0pO3ZhciBSVCxVVGU9ZygoKT0+e1JUPVtbInBhdGgiLHtkOiJNMjAgNEw5IDE1In1dLFsicGF0aCIse2Q6Ik0yMSAxOUwzIDE5In1dLFsicGF0aCIse2Q6Ik05IDE1TDQgMTAifV1dfSk7dmFyIE9ULFdUZT1nKCgpPT57T1Q9W1sicGF0aCIse2Q6Ik0yMCA2IDkgMTdsLTUtNSJ9XV19KTt2YXIgRlQsR1RlPWcoKCk9PntGVD1bWyJwYXRoIix7ZDoiTTE3IDIxYTEgMSAwIDAgMCAxLTF2LTUuMzVjMC0uNDU3LjMxNi0uODQ0LjcyNy0xLjA0MWE0IDQgMCAwIDAtMi4xMzQtNy41ODkgNSA1IDAgMCAwLTkuMTg2IDAgNCA0IDAgMCAwLTIuMTM0IDcuNTg4Yy40MTEuMTk4LjcyNy41ODUuNzI3IDEuMDQxVjIwYTEgMSAwIDAgMCAxIDFaIn1dLFsicGF0aCIse2Q6Ik02IDE3aDEyIn1dXX0pO3ZhciBCVCxLVGU9ZygoKT0+e0JUPVtbInBhdGgiLHtkOiJNMiAxN2E1IDUgMCAwIDAgMTAgMGMwLTIuNzYtMi41LTUtNS0zLTIuNS0yLTUgLjI0LTUgM1oifV0sWyJwYXRoIix7ZDoiTTEyIDE3YTUgNSAwIDAgMCAxMCAwYzAtMi43Ni0yLjUtNS01LTMtMi41LTItNSAuMjQtNSAzWiJ9XSxbInBhdGgiLHtkOiJNNyAxNGMzLjIyLTIuOTEgNC4yOS04Ljc1IDUtMTIgMS42NiAyLjM4IDQuOTQgOSA1IDEyIn1dLFsicGF0aCIse2Q6Ik0yMiA5Yy00LjI5IDAtNy4xNC0yLjMzLTEwLTcgNS43MSAwIDEwIDQuNjcgMTAgN1oifV1dfSk7dmFyIEhULFlUZT1nKCgpPT57SFQ9W1sicGF0aCIse2Q6Ik00IDIwYTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnYxYTEgMSAwIDAgMS0xIDFINWExIDEgMCAwIDEtMS0xeiJ9XSxbInBhdGgiLHtkOiJtNi43IDE4LTEtMUM0LjM1IDE1LjY4MiAzIDE0LjA5IDMgMTJhNSA1IDAgMCAxIDQuOTUtNWMxLjU4NCAwIDIuNy40NTUgNC4wNSAxLjgxOEMxMy4zNSA3LjQ1NSAxNC40NjYgNyAxNi4wNSA3QTUgNSAwIDAgMSAyMSAxMmMwIDIuMDgyLTEuMzU5IDMuNjczLTIuNyA1bC0xIDEifV0sWyJwYXRoIix7ZDoiTTEwIDRoNCJ9XSxbInBhdGgiLHtkOiJNMTIgMnY2LjgxOCJ9XV19KTt2YXIgcVQsWlRlPWcoKCk9PntxVD1bWyJwYXRoIix7ZDoiTTUgMjBhMiAyIDAgMCAxIDItMmgxMGEyIDIgMCAwIDEgMiAydjFhMSAxIDAgMCAxLTEgMUg2YTEgMSAwIDAgMS0xLTF6In1dLFsicGF0aCIse2Q6Ik0xNSAxOGMxLjUtLjYxNSAzLTIuNDYxIDMtNC45MjNDMTggOC43NjkgMTQuNSA0LjQ2MiAxMiAyIDkuNSA0LjQ2MiA2IDguNzcgNiAxMy4wNzcgNiAxNS41MzkgNy41IDE3LjM4NSA5IDE4In1dLFsicGF0aCIse2Q6Im0xNiA3LTIuNSAyLjUifV0sWyJwYXRoIix7ZDoiTTkgMmg2In1dXX0pO3ZhciBqVCxYVGU9ZygoKT0+e2pUPVtbInBhdGgiLHtkOiJNNSAyMGEyIDIgMCAwIDEgMi0yaDEwYTIgMiAwIDAgMSAyIDJ2MWExIDEgMCAwIDEtMSAxSDZhMSAxIDAgMCAxLTEtMXoifV0sWyJwYXRoIix7ZDoiTTE2LjUgMThjMS0yIDIuNS01IDIuNS05YTcgNyAwIDAgMC03LTdINi42MzVhMSAxIDAgMCAwLS43NjggMS42NEw3IDVsLTIuMzIgNS44MDJhMiAyIDAgMCAwIC45NSAyLjUyNmwyLjg3IDEuNDU2In1dLFsicGF0aCIse2Q6Im0xNSA1IDEuNDI1LTEuNDI1In1dLFsicGF0aCIse2Q6Im0xNyA4IDEuNTMtMS41MyJ9XSxbInBhdGgiLHtkOiJNOS43MTMgMTIuMTg1IDcgMTgifV1dfSk7dmFyIFZULFFUZT1nKCgpPT57VlQ9W1sicGF0aCIse2Q6Ik01IDIwYTIgMiAwIDAgMSAyLTJoMTBhMiAyIDAgMCAxIDIgMnYxYTEgMSAwIDAgMS0xIDFINmExIDEgMCAwIDEtMS0xeiJ9XSxbInBhdGgiLHtkOiJtMTQuNSAxMCAxLjUgOCJ9XSxbInBhdGgiLHtkOiJNNyAxMGgxMCJ9XSxbInBhdGgiLHtkOiJtOCAxOCAxLjUtOCJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjYiLHI6IjQifV1dfSk7dmFyIFVULEpUZT1nKCgpPT57VVQ9W1sicGF0aCIse2Q6Ik01IDIwYTIgMiAwIDAgMSAyLTJoMTBhMiAyIDAgMCAxIDIgMnYxYTEgMSAwIDAgMS0xIDFINmExIDEgMCAwIDEtMS0xeiJ9XSxbInBhdGgiLHtkOiJNMTAgMnYyIn1dLFsicGF0aCIse2Q6Ik0xNCAydjIifV0sWyJwYXRoIix7ZDoibTE3IDE4LTEtOSJ9XSxbInBhdGgiLHtkOiJNNiAydjVhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMiJ9XSxbInBhdGgiLHtkOiJNNiA0aDEyIn1dLFsicGF0aCIse2Q6Im03IDE4IDEtOSJ9XV19KTt2YXIgV1QsZSRlPWcoKCk9PntXVD1bWyJwYXRoIix7ZDoibTYgOSA2IDYgNi02In1dXX0pO3ZhciBHVCx0JGU9ZygoKT0+e0dUPVtbInBhdGgiLHtkOiJNNCAyMGEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2MWExIDEgMCAwIDEtMSAxSDVhMSAxIDAgMCAxLTEtMXoifV0sWyJwYXRoIix7ZDoibTEyLjQ3NCA1Ljk0MyAxLjU2NyA1LjM0YTEgMSAwIDAgMCAxLjc1LjMyOGwyLjYxNi0zLjQwMiJ9XSxbInBhdGgiLHtkOiJtMjAgOS0zIDkifV0sWyJwYXRoIix7ZDoibTUuNTk0IDguMjA5IDIuNjE1IDMuNDAzYTEgMSAwIDAgMCAxLjc1LS4zMjlsMS41NjctNS4zNCJ9XSxbInBhdGgiLHtkOiJNNyAxOCA0IDkifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiI0IixyOiIyIn1dLFsiY2lyY2xlIix7Y3g6IjIwIixjeToiNyIscjoiMiJ9XSxbImNpcmNsZSIse2N4OiI0IixjeToiNyIscjoiMiJ9XV19KTt2YXIgS1QsYSRlPWcoKCk9PntLVD1bWyJwYXRoIix7ZDoibTE3IDE4LTYtNiA2LTYifV0sWyJwYXRoIix7ZDoiTTcgNnYxMiJ9XV19KTt2YXIgWVQscyRlPWcoKCk9PntZVD1bWyJwYXRoIix7ZDoibTcgMTggNi02LTYtNiJ9XSxbInBhdGgiLHtkOiJNMTcgNnYxMiJ9XV19KTt2YXIgWlQsaSRlPWcoKCk9PntaVD1bWyJwYXRoIix7ZDoibTE1IDE4LTYtNiA2LTYifV1dfSk7dmFyIFhULHIkZT1nKCgpPT57WFQ9W1sicGF0aCIse2Q6Im05IDE4IDYtNi02LTYifV1dfSk7dmFyIFFULG8kZT1nKCgpPT57UVQ9W1sicGF0aCIse2Q6Im0xOCAxNS02LTYtNiA2In1dXX0pO3ZhciBKVCxuJGU9ZygoKT0+e0pUPVtbInBhdGgiLHtkOiJtNyAyMCA1LTUgNSA1In1dLFsicGF0aCIse2Q6Im03IDQgNSA1IDUtNSJ9XV19KTt2YXIgZSQsbCRlPWcoKCk9PntlJD1bWyJwYXRoIix7ZDoibTcgNiA1IDUgNS01In1dLFsicGF0aCIse2Q6Im03IDEzIDUgNSA1LTUifV1dfSk7dmFyIHQkLGMkZT1nKCgpPT57dCQ9W1sicGF0aCIse2Q6Ik0xMiAxMmguMDEifV0sWyJwYXRoIix7ZDoiTTE2IDEyaC4wMSJ9XSxbInBhdGgiLHtkOiJtMTcgNyA1IDUtNSA1In1dLFsicGF0aCIse2Q6Im03IDctNSA1IDUgNSJ9XSxbInBhdGgiLHtkOiJNOCAxMmguMDEifV1dfSk7dmFyIGEkLGQkZT1nKCgpPT57YSQ9W1sicGF0aCIse2Q6Im05IDctNSA1IDUgNSJ9XSxbInBhdGgiLHtkOiJtMTUgNyA1IDUtNSA1In1dXX0pO3ZhciBzJCx1JGU9ZygoKT0+e3MkPVtbInBhdGgiLHtkOiJtMTEgMTctNS01IDUtNSJ9XSxbInBhdGgiLHtkOiJtMTggMTctNS01IDUtNSJ9XV19KTt2YXIgaSQscCRlPWcoKCk9PntpJD1bWyJwYXRoIix7ZDoibTIwIDE3LTUtNSA1LTUifV0sWyJwYXRoIix7ZDoibTQgMTcgNS01LTUtNSJ9XV19KTt2YXIgciQsaCRlPWcoKCk9PntyJD1bWyJwYXRoIix7ZDoibTYgMTcgNS01LTUtNSJ9XSxbInBhdGgiLHtkOiJtMTMgMTcgNS01LTUtNSJ9XV19KTt2YXIgbyQsZiRlPWcoKCk9PntvJD1bWyJwYXRoIix7ZDoibTE3IDExLTUtNS01IDUifV0sWyJwYXRoIix7ZDoibTE3IDE4LTUtNS01IDUifV1dfSk7dmFyIG4kLG0kZT1nKCgpPT57biQ9W1sicGF0aCIse2Q6Im03IDE1IDUgNSA1LTUifV0sWyJwYXRoIix7ZDoibTcgOSA1LTUgNSA1In1dXX0pO3ZhciBsJCxnJGU9ZygoKT0+e2wkPVtbInBhdGgiLHtkOiJNMTAgOWg0In1dLFsicGF0aCIse2Q6Ik0xMiA3djUifV0sWyJwYXRoIix7ZDoiTTE0IDIxdi0zYTIgMiAwIDAgMC00IDB2MyJ9XSxbInBhdGgiLHtkOiJtMTggOSAzLjUyIDIuMTQ3YTEgMSAwIDAgMSAuNDguODU0VjE5YTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0ydi02Ljk5OWExIDEgMCAwIDEgLjQ4LS44NTRMNiA5In1dLFsicGF0aCIse2Q6Ik02IDIxVjdhMSAxIDAgMCAxIC4zNzYtLjc4Mmw1LTMuOTk5YTEgMSAwIDAgMSAxLjI0OS4wMDFsNSA0QTEgMSAwIDAgMSAxOCA3djE0In1dXX0pO3ZhciBjJCxiJGU9ZygoKT0+e2MkPVtbInBhdGgiLHtkOiJNMTIgMTJIM2ExIDEgMCAwIDAtMSAxdjJhMSAxIDAgMCAwIDEgMWgxMyJ9XSxbInBhdGgiLHtkOiJNMTggOGMwLTIuNS0yLTIuNS0yLTUifV0sWyJwYXRoIix7ZDoibTIgMiAyMCAyMCJ9XSxbInBhdGgiLHtkOiJNMjEgMTJhMSAxIDAgMCAxIDEgMXYyYTEgMSAwIDAgMS0uNS44NjYifV0sWyJwYXRoIix7ZDoiTTIyIDhjMC0yLjUtMi0yLjUtMi01In1dLFsicGF0aCIse2Q6Ik03IDEydjQifV1dfSk7dmFyIGQkLHYkZT1nKCgpPT57ZCQ9W1sicGF0aCIse2Q6Ik0xNyAxMkgzYTEgMSAwIDAgMC0xIDF2MmExIDEgMCAwIDAgMSAxaDE0In1dLFsicGF0aCIse2Q6Ik0xOCA4YzAtMi41LTItMi41LTItNSJ9XSxbInBhdGgiLHtkOiJNMjEgMTZhMSAxIDAgMCAwIDEtMXYtMmExIDEgMCAwIDAtMS0xIn1dLFsicGF0aCIse2Q6Ik0yMiA4YzAtMi41LTItMi41LTItNSJ9XSxbInBhdGgiLHtkOiJNNyAxMnY0In1dXX0pO3ZhciBZZix4JGU9ZygoKT0+e1lmPVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9XSxbImxpbmUiLHt4MToiMTIiLHgyOiIxMiIseTE6IjgiLHkyOiIxMiJ9XSxbImxpbmUiLHt4MToiMTIiLHgyOiIxMi4wMSIseTE6IjE2Iix5MjoiMTYifV1dfSk7dmFyIFpmLHkkZT1nKCgpPT57WmY9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIn1dLFsicGF0aCIse2Q6Ik0xMiA4djgifV0sWyJwYXRoIix7ZDoibTggMTIgNCA0IDQtNCJ9XV19KTt2YXIgWGYsdyRlPWcoKCk9PntYZj1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifV0sWyJwYXRoIix7ZDoibTEyIDgtNCA0IDQgNCJ9XSxbInBhdGgiLHtkOiJNMTYgMTJIOCJ9XV19KTt2YXIgUWYsayRlPWcoKCk9PntRZj1bWyJwYXRoIix7ZDoiTTIgMTJhMTAgMTAgMCAxIDEgMTAgMTAifV0sWyJwYXRoIix7ZDoibTIgMjIgMTAtMTAifV0sWyJwYXRoIix7ZDoiTTggMjJIMnYtNiJ9XV19KTt2YXIgSmYsUyRlPWcoKCk9PntKZj1bWyJwYXRoIix7ZDoiTTEyIDIyYTEwIDEwIDAgMSAxIDEwLTEwIn1dLFsicGF0aCIse2Q6Ik0yMiAyMiAxMiAxMiJ9XSxbInBhdGgiLHtkOiJNMjIgMTZ2NmgtNiJ9XV19KTt2YXIgZW0sXyRlPWcoKCk9PntlbT1bWyJwYXRoIix7ZDoiTTIgOFYyaDYifV0sWyJwYXRoIix7ZDoibTIgMiAxMCAxMCJ9XSxbInBhdGgiLHtkOiJNMTIgMkExMCAxMCAwIDEgMSAyIDEyIn1dXX0pO3ZhciB0bSxNJGU9ZygoKT0+e3RtPVtbInBhdGgiLHtkOiJNMjIgMTJBMTAgMTAgMCAxIDEgMTIgMiJ9XSxbInBhdGgiLHtkOiJNMjIgMiAxMiAxMiJ9XSxbInBhdGgiLHtkOiJNMTYgMmg2djYifV1dfSk7dmFyIGFtLHokZT1nKCgpPT57YW09W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIn1dLFsicGF0aCIse2Q6Im0xMiAxNiA0LTQtNC00In1dLFsicGF0aCIse2Q6Ik04IDEyaDgifV1dfSk7dmFyIHNtLEMkZT1nKCgpPT57c209W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIn1dLFsicGF0aCIse2Q6Im0xNiAxMi00LTQtNCA0In1dLFsicGF0aCIse2Q6Ik0xMiAxNlY4In1dXX0pO3ZhciBpbSxUJGU9ZygoKT0+e2ltPVtbInBhdGgiLHtkOiJNMjEuODAxIDEwQTEwIDEwIDAgMSAxIDE3IDMuMzM1In1dLFsicGF0aCIse2Q6Im05IDExIDMgM0wyMiA0In1dXX0pO3ZhciBybSwkJGU9ZygoKT0+e3JtPVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9XSxbInBhdGgiLHtkOiJtOSAxMiAyIDIgNC00In1dXX0pO3ZhciBvbSxEJGU9ZygoKT0+e29tPVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9XSxbInBhdGgiLHtkOiJtMTQgMTYtNC00IDQtNCJ9XV19KTt2YXIgbm0sTCRlPWcoKCk9PntubT1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifV0sWyJwYXRoIix7ZDoibTE2IDEwLTQgNC00LTQifV1dfSk7dmFyIGxtLEUkZT1nKCgpPT57bG09W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIn1dLFsicGF0aCIse2Q6Im0xMCA4IDQgNC00IDQifV1dfSk7dmFyIGNtLFAkZT1nKCgpPT57Y209W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIn1dLFsicGF0aCIse2Q6Im04IDE0IDQtNCA0IDQifV1dfSk7dmFyIHUkLEkkZT1nKCgpPT57dSQ9W1sicGF0aCIse2Q6Ik0xMC4xIDIuMTgyYTEwIDEwIDAgMCAxIDMuOCAwIn1dLFsicGF0aCIse2Q6Ik0xMy45IDIxLjgxOGExMCAxMCAwIDAgMS0zLjggMCJ9XSxbInBhdGgiLHtkOiJNMTcuNjA5IDMuNzIxYTEwIDEwIDAgMCAxIDIuNjkgMi43In1dLFsicGF0aCIse2Q6Ik0yLjE4MiAxMy45YTEwIDEwIDAgMCAxIDAtMy44In1dLFsicGF0aCIse2Q6Ik0yMC4yNzkgMTcuNjA5YTEwIDEwIDAgMCAxLTIuNyAyLjY5In1dLFsicGF0aCIse2Q6Ik0yMS44MTggMTAuMWExMCAxMCAwIDAgMSAwIDMuOCJ9XSxbInBhdGgiLHtkOiJNMy43MjEgNi4zOTFhMTAgMTAgMCAwIDEgMi43LTIuNjkifV0sWyJwYXRoIix7ZDoiTTYuMzkxIDIwLjI3OWExMCAxMCAwIDAgMS0yLjY5LTIuNyJ9XV19KTt2YXIgZG0sQSRlPWcoKCk9PntkbT1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifV0sWyJsaW5lIix7eDE6IjgiLHgyOiIxNiIseTE6IjEyIix5MjoiMTIifV0sWyJsaW5lIix7eDE6IjEyIix4MjoiMTIiLHkxOiIxNiIseTI6IjE2In1dLFsibGluZSIse3gxOiIxMiIseDI6IjEyIix5MToiOCIseTI6IjgifV1dfSk7dmFyIHAkLE4kZT1nKCgpPT57cCQ9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIn1dLFsicGF0aCIse2Q6Ik0xNiA4aC02YTIgMiAwIDEgMCAwIDRoNGEyIDIgMCAxIDEgMCA0SDgifV0sWyJwYXRoIix7ZDoiTTEyIDE4VjYifV1dfSk7dmFyIGgkLFIkZT1nKCgpPT57aCQ9W1sicGF0aCIse2Q6Ik0xMC4xIDIuMThhOS45MyA5LjkzIDAgMCAxIDMuOCAwIn1dLFsicGF0aCIse2Q6Ik0xNy42IDMuNzFhOS45NSA5Ljk1IDAgMCAxIDIuNjkgMi43In1dLFsicGF0aCIse2Q6Ik0yMS44MiAxMC4xYTkuOTMgOS45MyAwIDAgMSAwIDMuOCJ9XSxbInBhdGgiLHtkOiJNMjAuMjkgMTcuNmE5Ljk1IDkuOTUgMCAwIDEtMi43IDIuNjkifV0sWyJwYXRoIix7ZDoiTTEzLjkgMjEuODJhOS45NCA5Ljk0IDAgMCAxLTMuOCAwIn1dLFsicGF0aCIse2Q6Ik02LjQgMjAuMjlhOS45NSA5Ljk1IDAgMCAxLTIuNjktMi43In1dLFsicGF0aCIse2Q6Ik0yLjE4IDEzLjlhOS45MyA5LjkzIDAgMCAxIDAtMy44In1dLFsicGF0aCIse2Q6Ik0zLjcxIDYuNGE5Ljk1IDkuOTUgMCAwIDEgMi43LTIuNjkifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMSJ9XV19KTt2YXIgZiQsTyRlPWcoKCk9PntmJD1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifV0sWyJwYXRoIix7ZDoiTTE3IDEyaC4wMSJ9XSxbInBhdGgiLHtkOiJNMTIgMTJoLjAxIn1dLFsicGF0aCIse2Q6Ik03IDEyaC4wMSJ9XV19KTt2YXIgbSQsRiRlPWcoKCk9PnttJD1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMSJ9XV19KTt2YXIgZyQsQiRlPWcoKCk9PntnJD1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifV0sWyJwYXRoIix7ZDoiTTcgMTBoMTAifV0sWyJwYXRoIix7ZDoiTTcgMTRoMTAifV1dfSk7dmFyIGIkLEgkZT1nKCgpPT57YiQ9W1sicGF0aCIse2Q6Ik0xMiAyYTEwIDEwIDAgMCAxIDcuMzggMTYuNzUifV0sWyJwYXRoIix7ZDoibTE2IDEyLTQtNC00IDQifV0sWyJwYXRoIix7ZDoiTTEyIDE2VjgifV0sWyJwYXRoIix7ZDoiTTIuNSA4Ljg3NWExMCAxMCAwIDAgMC0uNSAzIn1dLFsicGF0aCIse2Q6Ik0yLjgzIDE2YTEwIDEwIDAgMCAwIDIuNDMgMy40In1dLFsicGF0aCIse2Q6Ik00LjYzNiA1LjIzNWExMCAxMCAwIDAgMSAuODkxLS44NTcifV0sWyJwYXRoIix7ZDoiTTguNjQ0IDIxLjQyYTEwIDEwIDAgMCAwIDcuNjMxLS4zOCJ9XV19KTt2YXIgdiQscSRlPWcoKCk9Pnt2JD1bWyJwYXRoIix7ZDoiTTEyIDJhMTAgMTAgMCAwIDEgNy4zOCAxNi43NSJ9XSxbInBhdGgiLHtkOiJNMTIgOHY4In1dLFsicGF0aCIse2Q6Ik0xNiAxMkg4In1dLFsicGF0aCIse2Q6Ik0yLjUgOC44NzVhMTAgMTAgMCAwIDAtLjUgMyJ9XSxbInBhdGgiLHtkOiJNMi44MyAxNmExMCAxMCAwIDAgMCAyLjQzIDMuNCJ9XSxbInBhdGgiLHtkOiJNNC42MzYgNS4yMzVhMTAgMTAgMCAwIDEgLjg5MS0uODU3In1dLFsicGF0aCIse2Q6Ik04LjY0NCAyMS40MmExMCAxMCAwIDAgMCA3LjYzMS0uMzgifV1dfSk7dmFyIHVtLGokZT1nKCgpPT57dW09W1sicGF0aCIse2Q6Ik0xNS42IDIuN2ExMCAxMCAwIDEgMCA1LjcgNS43In1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjIifV0sWyJwYXRoIix7ZDoiTTEzLjQgMTAuNiAxOSA1In1dXX0pO3ZhciBwbSxWJGU9ZygoKT0+e3BtPVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9XSxbInBhdGgiLHtkOiJNOCAxMmg4In1dXX0pO3ZhciB4JCxVJGU9ZygoKT0+e3gkPVtbInBhdGgiLHtkOiJtMiAyIDIwIDIwIn1dLFsicGF0aCIse2Q6Ik04LjM1IDIuNjlBMTAgMTAgMCAwIDEgMjEuMyAxNS42NSJ9XSxbInBhdGgiLHtkOiJNMTkuMDggMTkuMDhBMTAgMTAgMCAxIDEgNC45MiA0LjkyIn1dXX0pO3ZhciBobSxXJGU9ZygoKT0+e2htPVtbInBhdGgiLHtkOiJNMTIuNjU2IDdIMTNhMyAzIDAgMCAxIDIuOTg0IDMuMzA3In1dLFsicGF0aCIse2Q6Ik0xMyAxM0g5In1dLFsicGF0aCIse2Q6Ik0xOS4wNzEgMTkuMDcxQTEgMSAwIDAgMSA0LjkzIDQuOTMifV0sWyJwYXRoIix7ZDoibTIgMiAyMCAyMCJ9XSxbInBhdGgiLHtkOiJNOC4zNTcgMi42ODdhMTAgMTAgMCAwIDEgMTIuOTU2IDEyLjk1NiJ9XSxbInBhdGgiLHtkOiJNOSAxN1Y5In1dXX0pO3ZhciBmbSxHJGU9ZygoKT0+e2ZtPVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9XSxbInBhdGgiLHtkOiJNOSAxN1Y3aDRhMyAzIDAgMCAxIDAgNkg5In1dXX0pO3ZhciBtbSxLJGU9ZygoKT0+e21tPVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9XSxbImxpbmUiLHt4MToiMTAiLHgyOiIxMCIseTE6IjE1Iix5MjoiOSJ9XSxbImxpbmUiLHt4MToiMTQiLHgyOiIxNCIseTE6IjE1Iix5MjoiOSJ9XV19KTt2YXIgZ20sWSRlPWcoKCk9PntnbT1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifV0sWyJwYXRoIix7ZDoibTE1IDktNiA2In1dLFsicGF0aCIse2Q6Ik05IDloLjAxIn1dLFsicGF0aCIse2Q6Ik0xNSAxNWguMDEifV1dfSk7dmFyIGJtLFokZT1nKCgpPT57Ym09W1sicGF0aCIse2Q6Ik05IDkuMDAzYTEgMSAwIDAgMSAxLjUxNy0uODU5bDQuOTk3IDIuOTk3YTEgMSAwIDAgMSAwIDEuNzE4bC00Ljk5NyAyLjk5N0ExIDEgMCAwIDEgOSAxNC45OTZ6In1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIn1dXX0pO3ZhciB5JCxYJGU9ZygoKT0+e3kkPVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjE5IixyOiIyIn1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiNSIscjoiMiJ9XSxbImNpcmNsZSIse2N4OiIxNiIsY3k6IjEyIixyOiIyIn1dLFsiY2lyY2xlIix7Y3g6IjIwIixjeToiMTkiLHI6IjIifV0sWyJjaXJjbGUiLHtjeDoiNCIsY3k6IjE5IixyOiIyIn1dLFsiY2lyY2xlIix7Y3g6IjgiLGN5OiIxMiIscjoiMiJ9XV19KTt2YXIgdm0sUSRlPWcoKCk9Pnt2bT1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifV0sWyJwYXRoIix7ZDoiTTggMTJoOCJ9XSxbInBhdGgiLHtkOiJNMTIgOHY4In1dXX0pO3ZhciB3JCxKJGU9ZygoKT0+e3ckPVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9XSxbInBhdGgiLHtkOiJNMTAgMTZWOS41YTEgMSAwIDAgMSA1IDAifV0sWyJwYXRoIix7ZDoiTTggMTJoNCJ9XSxbInBhdGgiLHtkOiJNOCAxNmg3In1dXX0pO3ZhciB4bSxlRGU9ZygoKT0+e3htPVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9XSxbInBhdGgiLHtkOiJNMTIgN3Y0In1dLFsicGF0aCIse2Q6Ik03Ljk5OCA5LjAwM2E1IDUgMCAxIDAgOC0uMDA1In1dXX0pO3ZhciBqMCx0RGU9ZygoKT0+e2owPVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9XSxbInBhdGgiLHtkOiJNOS4wOSA5YTMgMyAwIDAgMSA1LjgzIDFjMCAyLTMgMy0zIDMifV0sWyJwYXRoIix7ZDoiTTEyIDE3aC4wMSJ9XV19KTt2YXIgeW0sYURlPWcoKCk9Pnt5bT1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifV0sWyJwYXRoIix7ZDoiTTIyIDIgMiAyMiJ9XV19KTt2YXIgayQsc0RlPWcoKCk9PntrJD1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifV0sWyJsaW5lIix7eDE6IjkiLHgyOiIxNSIseTE6IjE1Iix5MjoiOSJ9XV19KTt2YXIgUyQsaURlPWcoKCk9PntTJD1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiNiJ9XV19KTt2YXIgXyQsckRlPWcoKCk9PntfJD1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifV0sWyJwYXRoIix7ZDoiTTExLjA1MSA3LjYxNmExIDEgMCAwIDEgMS45MDkuMDI0bC43MzcgMS40NTJhMSAxIDAgMCAwIC43MzcuNTM1bDEuNjM0LjI1NmExIDEgMCAwIDEgLjU4OCAxLjgwNmwtMS4xNzIgMS4xNjhhMSAxIDAgMCAwLS4yODIuODY2bC4yNTkgMS42MTNhMSAxIDAgMCAxLTEuNTQxIDEuMTM0bC0xLjQ2NS0uNzVhMSAxIDAgMCAwLS45MTIgMGwtMS40NjUuNzVhMSAxIDAgMCAxLTEuNTM5LTEuMTMzbC4yNTgtMS42MTNhMSAxIDAgMCAwLS4yODItLjg2N2wtMS4xNTYtMS4xNTJhMSAxIDAgMCAxIC41NzItMS44MjJsMS42MzMtLjI1NmExIDEgMCAwIDAgLjczNy0uNTM1eiJ9XV19KTt2YXIgd20sb0RlPWcoKCk9Pnt3bT1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifV0sWyJyZWN0Iix7eDoiOSIseToiOSIsd2lkdGg6IjYiLGhlaWdodDoiNiIscng6IjEifV1dfSk7dmFyIGttLG5EZT1nKCgpPT57a209W1sicGF0aCIse2Q6Ik0xNy45MjUgMjAuMDU2YTYgNiAwIDAgMC0xMS44NTEuMDAxIn1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiMTEiLHI6IjQifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifV1dfSk7dmFyIFNtLGxEZT1nKCgpPT57U209W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIn1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiMTAiLHI6IjMifV0sWyJwYXRoIix7ZDoiTTcgMjAuNjYyVjE5YTIgMiAwIDAgMSAyLTJoNmEyIDIgMCAwIDEgMiAydjEuNjYyIn1dXX0pO3ZhciBfbSxjRGU9ZygoKT0+e19tPVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9XSxbInBhdGgiLHtkOiJtMTUgOS02IDYifV0sWyJwYXRoIix7ZDoibTkgOSA2IDYifV1dfSk7dmFyIE0kLGREZT1nKCgpPT57TSQ9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIn1dXX0pO3ZhciB6JCx1RGU9ZygoKT0+e3okPVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik0xMSA5aDRhMiAyIDAgMCAwIDItMlYzIn1dLFsiY2lyY2xlIix7Y3g6IjkiLGN5OiI5IixyOiIyIn1dLFsicGF0aCIse2Q6Ik03IDIxdi00YTIgMiAwIDAgMSAyLTJoNCJ9XSxbImNpcmNsZSIse2N4OiIxNSIsY3k6IjE1IixyOiIyIn1dXX0pO3ZhciBDJCxwRGU9ZygoKT0+e0MkPVtbInBhdGgiLHtkOiJNMjEuNjYgMTcuNjdhMS4wOCAxLjA4IDAgMCAxLS4wNCAxLjZBMTIgMTIgMCAwIDEgNC43MyAyLjM4YTEuMSAxLjEgMCAwIDEgMS42MS0uMDR6In1dLFsicGF0aCIse2Q6Ik0xOS42NSAxNS42NkE4IDggMCAwIDEgOC4zNSA0LjM0In1dLFsicGF0aCIse2Q6Im0xNCAxMC01LjUgNS41In1dLFsicGF0aCIse2Q6Ik0xNCAxNy44NVYxMEg2LjE1In1dXX0pO3ZhciBUJCxoRGU9ZygoKT0+e1QkPVtbInBhdGgiLHtkOiJtMTIuMjk2IDMuNDY0IDMuMDIgMy45NTYifV0sWyJwYXRoIix7ZDoiTTIwLjIgNiAzIDExbC0uOS0yLjRjLS4zLTEuMS4zLTIuMiAxLjMtMi41bDEzLjUtNGMxLjEtLjMgMi4yLjMgMi41IDEuM3oifV0sWyJwYXRoIix7ZDoiTTMgMTFoMTh2OGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnoifV0sWyJwYXRoIix7ZDoibTYuMTggNS4yNzYgMy4xIDMuODk5In1dXX0pO3ZhciAkJCxmRGU9ZygoKT0+eyQkPVtbInJlY3QiLHt3aWR0aDoiOCIsaGVpZ2h0OiI0Iix4OiI4Iix5OiIyIixyeDoiMSIscnk6IjEifV0sWyJwYXRoIix7ZDoiTTE2IDRoMmEyIDIgMCAwIDEgMiAydjE0YTIgMiAwIDAgMS0yIDJINmEyIDIgMCAwIDEtMi0yVjZhMiAyIDAgMCAxIDItMmgyIn1dLFsicGF0aCIse2Q6Im05IDE0IDIgMiA0LTQifV1dfSk7dmFyIEQkLG1EZT1nKCgpPT57RCQ9W1sicGF0aCIse2Q6Ik0xNiAxNHYyLjJsMS42IDEifV0sWyJwYXRoIix7ZDoiTTE2IDRoMmEyIDIgMCAwIDEgMiAydi44MzIifV0sWyJwYXRoIix7ZDoiTTggNEg2YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgyIn1dLFsiY2lyY2xlIix7Y3g6IjE2IixjeToiMTYiLHI6IjYifV0sWyJyZWN0Iix7eDoiOCIseToiMiIsd2lkdGg6IjgiLGhlaWdodDoiNCIscng6IjEifV1dfSk7dmFyIEwkLGdEZT1nKCgpPT57TCQ9W1sicmVjdCIse3dpZHRoOiI4IixoZWlnaHQ6IjQiLHg6IjgiLHk6IjIiLHJ4OiIxIixyeToiMSJ9XSxbInBhdGgiLHtkOiJNOCA0SDZhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJ2LTIifV0sWyJwYXRoIix7ZDoiTTE2IDRoMmEyIDIgMCAwIDEgMiAydjQifV0sWyJwYXRoIix7ZDoiTTIxIDE0SDExIn1dLFsicGF0aCIse2Q6Im0xNSAxMC00IDQgNCA0In1dXX0pO3ZhciBFJCxiRGU9ZygoKT0+e0UkPVtbInJlY3QiLHt3aWR0aDoiOCIsaGVpZ2h0OiI0Iix4OiI4Iix5OiIyIixyeDoiMSIscnk6IjEifV0sWyJwYXRoIix7ZDoiTTE2IDRoMmEyIDIgMCAwIDEgMiAydjE0YTIgMiAwIDAgMS0yIDJINmEyIDIgMCAwIDEtMi0yVjZhMiAyIDAgMCAxIDItMmgyIn1dLFsicGF0aCIse2Q6Ik0xMiAxMWg0In1dLFsicGF0aCIse2Q6Ik0xMiAxNmg0In1dLFsicGF0aCIse2Q6Ik04IDExaC4wMSJ9XSxbInBhdGgiLHtkOiJNOCAxNmguMDEifV1dfSk7dmFyIFAkLHZEZT1nKCgpPT57UCQ9W1sicmVjdCIse3dpZHRoOiI4IixoZWlnaHQ6IjQiLHg6IjgiLHk6IjIiLHJ4OiIxIixyeToiMSJ9XSxbInBhdGgiLHtkOiJNMTYgNGgyYTIgMiAwIDAgMSAyIDJ2MTRhMiAyIDAgMCAxLTIgMkg2YTIgMiAwIDAgMS0yLTJWNmEyIDIgMCAwIDEgMi0yaDIifV0sWyJwYXRoIix7ZDoiTTkgMTRoNiJ9XV19KTt2YXIgSSQseERlPWcoKCk9PntJJD1bWyJwYXRoIix7ZDoiTTExIDE0aDEwIn1dLFsicGF0aCIse2Q6Ik0xNiA0aDJhMiAyIDAgMCAxIDIgMnYxLjM0NCJ9XSxbInBhdGgiLHtkOiJtMTcgMTggNC00LTQtNCJ9XSxbInBhdGgiLHtkOiJNOCA0SDZhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAxLjc5My0xLjExMyJ9XSxbInJlY3QiLHt4OiI4Iix5OiIyIix3aWR0aDoiOCIsaGVpZ2h0OiI0IixyeDoiMSJ9XV19KTt2YXIgTW0seURlPWcoKCk9PntNbT1bWyJyZWN0Iix7d2lkdGg6IjgiLGhlaWdodDoiNCIseDoiOCIseToiMiIscng6IjEifV0sWyJwYXRoIix7ZDoiTTggNEg2YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0ydi0uNSJ9XSxbInBhdGgiLHtkOiJNMTYgNGgyYTIgMiAwIDAgMSAxLjczIDEifV0sWyJwYXRoIix7ZDoiTTggMThoMSJ9XSxbInBhdGgiLHtkOiJNMjEuMzc4IDEyLjYyNmExIDEgMCAwIDAtMy4wMDQtMy4wMDRsLTQuMDEgNC4wMTJhMiAyIDAgMCAwLS41MDYuODU0bC0uODM3IDIuODdhLjUuNSAwIDAgMCAuNjIuNjJsMi44Ny0uODM3YTIgMiAwIDAgMCAuODU0LS41MDZ6In1dXX0pO3ZhciB6bSx3RGU9ZygoKT0+e3ptPVtbInBhdGgiLHtkOiJNMTYgNGgyYTIgMiAwIDAgMSAyIDJ2MiJ9XSxbInBhdGgiLHtkOiJNMjEuMzQgMTUuNjY0YTEgMSAwIDEgMC0zLjAwNC0zLjAwNGwtNS4wMSA1LjAxMmEyIDIgMCAwIDAtLjUwNi44NTRsLS44MzcgMi44N2EuNS41IDAgMCAwIC42Mi42MmwyLjg3LS44MzdhMiAyIDAgMCAwIC44NTQtLjUwNnoifV0sWyJwYXRoIix7ZDoiTTggMjJINmEyIDIgMCAwIDEtMi0yVjZhMiAyIDAgMCAxIDItMmgyIn1dLFsicmVjdCIse3g6IjgiLHk6IjIiLHdpZHRoOiI4IixoZWlnaHQ6IjQiLHJ4OiIxIn1dXX0pO3ZhciBBJCxrRGU9ZygoKT0+e0EkPVtbInJlY3QiLHt3aWR0aDoiOCIsaGVpZ2h0OiI0Iix4OiI4Iix5OiIyIixyeDoiMSIscnk6IjEifV0sWyJwYXRoIix7ZDoiTTE2IDRoMmEyIDIgMCAwIDEgMiAydjE0YTIgMiAwIDAgMS0yIDJINmEyIDIgMCAwIDEtMi0yVjZhMiAyIDAgMCAxIDItMmgyIn1dLFsicGF0aCIse2Q6Ik05IDE0aDYifV0sWyJwYXRoIix7ZDoiTTEyIDE3di02In1dXX0pO3ZhciBOJCxTRGU9ZygoKT0+e04kPVtbInJlY3QiLHt3aWR0aDoiOCIsaGVpZ2h0OiI0Iix4OiI4Iix5OiIyIixyeDoiMSIscnk6IjEifV0sWyJwYXRoIix7ZDoiTTE2IDRoMmEyIDIgMCAwIDEgMiAydjE0YTIgMiAwIDAgMS0yIDJINmEyIDIgMCAwIDEtMi0yVjZhMiAyIDAgMCAxIDItMmgyIn1dLFsicGF0aCIse2Q6Ik05IDEydi0xaDZ2MSJ9XSxbInBhdGgiLHtkOiJNMTEgMTdoMiJ9XSxbInBhdGgiLHtkOiJNMTIgMTF2NiJ9XV19KTt2YXIgUiQsX0RlPWcoKCk9PntSJD1bWyJyZWN0Iix7d2lkdGg6IjgiLGhlaWdodDoiNCIseDoiOCIseToiMiIscng6IjEiLHJ5OiIxIn1dLFsicGF0aCIse2Q6Ik0xNiA0aDJhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY2YTIgMiAwIDAgMSAyLTJoMiJ9XSxbInBhdGgiLHtkOiJtMTUgMTEtNiA2In1dLFsicGF0aCIse2Q6Im05IDExIDYgNiJ9XV19KTt2YXIgTyQsTURlPWcoKCk9PntPJD1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifV0sWyJwYXRoIix7ZDoiTTEyIDZ2NmwyLTQifV1dfSk7dmFyIEYkLHpEZT1nKCgpPT57RiQ9W1sicmVjdCIse3dpZHRoOiI4IixoZWlnaHQ6IjQiLHg6IjgiLHk6IjIiLHJ4OiIxIixyeToiMSJ9XSxbInBhdGgiLHtkOiJNMTYgNGgyYTIgMiAwIDAgMSAyIDJ2MTRhMiAyIDAgMCAxLTIgMkg2YTIgMiAwIDAgMS0yLTJWNmEyIDIgMCAwIDEgMi0yaDIifV1dfSk7dmFyIEIkLENEZT1nKCgpPT57QiQ9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIn1dLFsicGF0aCIse2Q6Ik0xMiA2djZsLTQtMiJ9XV19KTt2YXIgSCQsVERlPWcoKCk9PntIJD1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifV0sWyJwYXRoIix7ZDoiTTEyIDZ2NmwtMi00In1dXX0pO3ZhciBxJCwkRGU9ZygoKT0+e3EkPVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9XSxbInBhdGgiLHtkOiJNMTIgNnY2In1dXX0pO3ZhciBqJCxERGU9ZygoKT0+e2okPVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9XSxbInBhdGgiLHtkOiJNMTIgNnY2bDQtMiJ9XV19KTt2YXIgViQsTERlPWcoKCk9PntWJD1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifV0sWyJwYXRoIix7ZDoiTTEyIDZ2Nmg0In1dXX0pO3ZhciBVJCxFRGU9ZygoKT0+e1UkPVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9XSxbInBhdGgiLHtkOiJNMTIgNnY2bDQgMiJ9XV19KTt2YXIgVyQsUERlPWcoKCk9PntXJD1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifV0sWyJwYXRoIix7ZDoiTTEyIDZ2NmwyIDQifV1dfSk7dmFyIEckLElEZT1nKCgpPT57RyQ9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIn1dLFsicGF0aCIse2Q6Ik0xMiA2djEwIn1dXX0pO3ZhciBLJCxBRGU9ZygoKT0+e0skPVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9XSxbInBhdGgiLHtkOiJNMTIgNnY2bC00IDIifV1dfSk7dmFyIFkkLE5EZT1nKCgpPT57WSQ9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIn1dLFsicGF0aCIse2Q6Ik0xMiA2djZsLTIgNCJ9XV19KTt2YXIgWiQsUkRlPWcoKCk9PntaJD1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifV0sWyJwYXRoIix7ZDoiTTEyIDZ2Nkg4In1dXX0pO3ZhciBYJCxPRGU9ZygoKT0+e1gkPVtbInBhdGgiLHtkOiJNMTIgNnY2bDQgMiJ9XSxbInBhdGgiLHtkOiJNMjAgMTJ2NSJ9XSxbInBhdGgiLHtkOiJNMjAgMjFoLjAxIn1dLFsicGF0aCIse2Q6Ik0yMS4yNSA4LjJBMTAgMTAgMCAxIDAgMTYgMjEuMTYifV1dfSk7dmFyIFEkLEZEZT1nKCgpPT57USQ9W1sicGF0aCIse2Q6Ik0xMiA2djZsMiAxIn1dLFsicGF0aCIse2Q6Ik0xMi4zMzcgMjEuOTk0YTEwIDEwIDAgMSAxIDkuNTg4LTguNzY3In1dLFsicGF0aCIse2Q6Im0xNCAxOCA0IDQgNC00In1dLFsicGF0aCIse2Q6Ik0xOCAxNHY4In1dXX0pO3ZhciBKJCxCRGU9ZygoKT0+e0okPVtbInBhdGgiLHtkOiJNMTIgNnY2bDEuNTYuNzgifV0sWyJwYXRoIix7ZDoiTTEzLjIyNyAyMS45MjVhMTAgMTAgMCAxIDEgOC43NjctOS41ODgifV0sWyJwYXRoIix7ZDoibTE0IDE4IDQtNCA0IDQifV0sWyJwYXRoIix7ZDoiTTE4IDIydi04In1dXX0pO3ZhciBlRCxIRGU9ZygoKT0+e2VEPVtbInBhdGgiLHtkOiJNMTIgNnY2bDQgMiJ9XSxbInBhdGgiLHtkOiJNMjIgMTJhMTAgMTAgMCAxIDAtMTEgOS45NSJ9XSxbInBhdGgiLHtkOiJtMjIgMTYtNS41IDUuNUwxNCAxOSJ9XV19KTt2YXIgdEQscURlPWcoKCk9Pnt0RD1bWyJwYXRoIix7ZDoiTTEyIDJhMTAgMTAgMCAwIDEgNy4zOCAxNi43NSJ9XSxbInBhdGgiLHtkOiJNMTIgNnY2bDQgMiJ9XSxbInBhdGgiLHtkOiJNMi41IDguODc1YTEwIDEwIDAgMCAwLS41IDMifV0sWyJwYXRoIix7ZDoiTTIuODMgMTZhMTAgMTAgMCAwIDAgMi40MyAzLjQifV0sWyJwYXRoIix7ZDoiTTQuNjM2IDUuMjM1YTEwIDEwIDAgMCAxIC44OTEtLjg1NyJ9XSxbInBhdGgiLHtkOiJNOC42NDQgMjEuNDJhMTAgMTAgMCAwIDAgNy42MzEtLjM4In1dXX0pO3ZhciBhRCxqRGU9ZygoKT0+e2FEPVtbInBhdGgiLHtkOiJNMTIgNnY2bDMuNjQ0IDEuODIyIn1dLFsicGF0aCIse2Q6Ik0xNiAxOWg2In1dLFsicGF0aCIse2Q6Ik0xOSAxNnY2In1dLFsicGF0aCIse2Q6Ik0yMS45MiAxMy4yNjdhMTAgMTAgMCAxIDAtOC42NTMgOC42NTMifV1dfSk7dmFyIHNELFZEZT1nKCgpPT57c0Q9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIn1dLFsicGF0aCIse2Q6Ik0xMiA2djZsNCAyIn1dXX0pO3ZhciBpRCxVRGU9ZygoKT0+e2lEPVtbInBhdGgiLHtkOiJNMTAgOS4xN2EzIDMgMCAxIDAgMCA1LjY2In1dLFsicGF0aCIse2Q6Ik0xNyA5LjE3YTMgMyAwIDEgMCAwIDUuNjYifV0sWyJyZWN0Iix7eDoiMiIseToiNSIsd2lkdGg6IjIwIixoZWlnaHQ6IjE0IixyeDoiMiJ9XV19KTt2YXIgckQsV0RlPWcoKCk9PntyRD1bWyJwYXRoIix7ZDoiTTEyIDEydjQifV0sWyJwYXRoIix7ZDoiTTEyIDIwaC4wMSJ9XSxbInBhdGgiLHtkOiJNOC4xMjggMTYuOTQ5QTcgNyAwIDEgMSAxNS43MSA4aDEuNzlhMSAxIDAgMCAxIDAgOWgtMS42NDIifV1dfSk7dmFyIG9ELEdEZT1nKCgpPT57b0Q9W1sicGF0aCIse2Q6Ik0yMSAxNS4yNTFBNC41IDQuNSAwIDAgMCAxNy41IDhoLTEuNzlBNyA3IDAgMSAwIDMgMTMuNjA3In1dLFsicGF0aCIse2Q6Ik03IDExdjRoNCJ9XSxbInBhdGgiLHtkOiJNOCAxOWE1IDUgMCAwIDAgOS0zIDQuNSA0LjUgMCAwIDAtNC41LTQuNSA0LjgyIDQuODIgMCAwIDAtMy40MSAxLjQxTDcgMTUifV1dfSk7dmFyIG5ELEtEZT1nKCgpPT57bkQ9W1sicGF0aCIse2Q6Im0xNyAxNS01LjUgNS41TDkgMTgifV0sWyJwYXRoIix7ZDoiTTUuNTE2IDE2LjA3QTcgNyAwIDEgMSAxNS43MSA4aDEuNzlhNC41IDQuNSAwIDAgMSAzLjUwMSA3LjMyNyJ9XV19KTt2YXIgbEQsWURlPWcoKCk9PntsRD1bWyJwYXRoIix7ZDoibTEwLjg1MiAxOS43NzItLjM4My45MjQifV0sWyJwYXRoIix7ZDoibTEzLjE0OCAxNC4yMjguMzgzLS45MjMifV0sWyJwYXRoIix7ZDoiTTEzLjE0OCAxOS43NzJhMyAzIDAgMSAwLTIuMjk2LTUuNTQ0bC0uMzgzLS45MjMifV0sWyJwYXRoIix7ZDoibTEzLjUzIDIwLjY5Ni0uMzgyLS45MjRhMyAzIDAgMSAxLTIuMjk2LTUuNTQ0In1dLFsicGF0aCIse2Q6Im0xNC43NzIgMTUuODUyLjkyMy0uMzgzIn1dLFsicGF0aCIse2Q6Im0xNC43NzIgMTguMTQ4LjkyMy4zODMifV0sWyJwYXRoIix7ZDoiTTQuMiAxNS4xYTcgNyAwIDEgMSA5LjkzLTkuODU4QTcgNyAwIDAgMSAxNS43MSA4aDEuNzlhNC41IDQuNSAwIDAgMSAyLjUgOC4yIn1dLFsicGF0aCIse2Q6Im05LjIyOCAxNS44NTItLjkyMy0uMzgzIn1dLFsicGF0aCIse2Q6Im05LjIyOCAxOC4xNDgtLjkyMy4zODMifV1dfSk7dmFyIENtLFpEZT1nKCgpPT57Q209W1sicGF0aCIse2Q6Ik0xMiAxM3Y4bC00LTQifV0sWyJwYXRoIix7ZDoibTEyIDIxIDQtNCJ9XSxbInBhdGgiLHtkOiJNNC4zOTMgMTUuMjY5QTcgNyAwIDEgMSAxNS43MSA4aDEuNzlhNC41IDQuNSAwIDAgMSAyLjQzNiA4LjI4NCJ9XV19KTt2YXIgY0QsWERlPWcoKCk9PntjRD1bWyJwYXRoIix7ZDoiTTQgMTQuODk5QTcgNyAwIDEgMSAxNS43MSA4aDEuNzlhNC41IDQuNSAwIDAgMSAyLjUgOC4yNDIifV0sWyJwYXRoIix7ZDoiTTggMTl2MSJ9XSxbInBhdGgiLHtkOiJNOCAxNHYxIn1dLFsicGF0aCIse2Q6Ik0xNiAxOXYxIn1dLFsicGF0aCIse2Q6Ik0xNiAxNHYxIn1dLFsicGF0aCIse2Q6Ik0xMiAyMXYxIn1dLFsicGF0aCIse2Q6Ik0xMiAxNnYxIn1dXX0pO3ZhciBkRCxRRGU9ZygoKT0+e2REPVtbInBhdGgiLHtkOiJNNCAxNC44OTlBNyA3IDAgMSAxIDE1LjcxIDhoMS43OWE0LjUgNC41IDAgMCAxIDIuNSA4LjI0MiJ9XSxbInBhdGgiLHtkOiJNMTYgMTR2MiJ9XSxbInBhdGgiLHtkOiJNOCAxNHYyIn1dLFsicGF0aCIse2Q6Ik0xNiAyMGguMDEifV0sWyJwYXRoIix7ZDoiTTggMjBoLjAxIn1dLFsicGF0aCIse2Q6Ik0xMiAxNnYyIn1dLFsicGF0aCIse2Q6Ik0xMiAyMmguMDEifV1dfSk7dmFyIHVELEpEZT1nKCgpPT57dUQ9W1sicGF0aCIse2Q6Ik00IDE0Ljg5OUE3IDcgMCAxIDEgMTUuNzEgOGgxLjc5YTQuNSA0LjUgMCAwIDEgMi41IDguMjQyIn1dLFsicGF0aCIse2Q6Ik0xNiAxN0g3In1dLFsicGF0aCIse2Q6Ik0xNyAyMUg5In1dXX0pO3ZhciBwRCxlTGU9ZygoKT0+e3BEPVtbInBhdGgiLHtkOiJNNiAxNi4zMjZBNyA3IDAgMSAxIDE1LjcxIDhoMS43OWE0LjUgNC41IDAgMCAxIC41IDguOTczIn1dLFsicGF0aCIse2Q6Im0xMyAxMi0zIDVoNGwtMyA1In1dXX0pO3ZhciBoRCx0TGU9ZygoKT0+e2hEPVtbInBhdGgiLHtkOiJNMTEgMjB2MiJ9XSxbInBhdGgiLHtkOiJNMTguMzc2IDE0LjUxMmE2IDYgMCAwIDAgMy40NjEtNC4xMjdjLjE0OC0uNjI1LS42NTktLjk3LTEuMjQ4LS43MTRhNCA0IDAgMCAxLTUuMjU5LTUuMjZjLjI1NS0uNTg5LS4wOS0xLjM5NS0uNzE2LTEuMjQ4YTYgNiAwIDAgMC00LjU5NCA1LjM2In1dLFsicGF0aCIse2Q6Ik0zIDIwYTUgNSAwIDEgMSA4LjktNEgxM2EzIDMgMCAwIDEgMiA1LjI0In1dLFsicGF0aCIse2Q6Ik03IDE5djIifV1dfSk7dmFyIGZELGFMZT1nKCgpPT57ZkQ9W1sicGF0aCIse2Q6Ik0xMyAxNmEzIDMgMCAwIDEgMCA2SDdhNSA1IDAgMSAxIDQuOS02eiJ9XSxbInBhdGgiLHtkOiJNMTguMzc2IDE0LjUxMmE2IDYgMCAwIDAgMy40NjEtNC4xMjdjLjE0OC0uNjI1LS42NTktLjk3LTEuMjQ4LS43MTRhNCA0IDAgMCAxLTUuMjU5LTUuMjZjLjI1NS0uNTg5LS4wOS0xLjM5NS0uNzE2LTEuMjQ4YTYgNiAwIDAgMC00LjU5NCA1LjM2In1dXX0pO3ZhciBtRCxzTGU9ZygoKT0+e21EPVtbInBhdGgiLHtkOiJNNCAxNC44OTlBNyA3IDAgMSAxIDE1LjcxIDhoMS43OWE0LjUgNC41IDAgMCAxIDIuNSA4LjI0MiJ9XSxbInBhdGgiLHtkOiJtOS4yIDIyIDMtNyJ9XSxbInBhdGgiLHtkOiJtOSAxMy0zIDcifV0sWyJwYXRoIix7ZDoibTE3IDEzLTMgNyJ9XV19KTt2YXIgZ0QsaUxlPWcoKCk9PntnRD1bWyJwYXRoIix7ZDoiTTEwLjk0IDUuMjc0QTcgNyAwIDAgMSAxNS43MSAxMGgxLjc5YTQuNSA0LjUgMCAwIDEgNC4yMjIgNi4wNTcifV0sWyJwYXRoIix7ZDoiTTE4Ljc5NiAxOC44MUE0LjUgNC41IDAgMCAxIDE3LjUgMTlIOUE3IDcgMCAwIDEgNS43OSA1Ljc4In1dLFsicGF0aCIse2Q6Im0yIDIgMjAgMjAifV1dfSk7dmFyIGJELHJMZT1nKCgpPT57YkQ9W1sicGF0aCIse2Q6Ik00IDE0Ljg5OUE3IDcgMCAxIDEgMTUuNzEgOGgxLjc5YTQuNSA0LjUgMCAwIDEgMi41IDguMjQyIn1dLFsicGF0aCIse2Q6Ik0xNiAxNHY2In1dLFsicGF0aCIse2Q6Ik04IDE0djYifV0sWyJwYXRoIix7ZDoiTTEyIDE2djYifV1dfSk7dmFyIHZELG9MZT1nKCgpPT57dkQ9W1sicGF0aCIse2Q6Ik00IDE0Ljg5OUE3IDcgMCAxIDEgMTUuNzEgOGgxLjc5YTQuNSA0LjUgMCAwIDEgMi41IDguMjQyIn1dLFsicGF0aCIse2Q6Ik04IDE1aC4wMSJ9XSxbInBhdGgiLHtkOiJNOCAxOWguMDEifV0sWyJwYXRoIix7ZDoiTTEyIDE3aC4wMSJ9XSxbInBhdGgiLHtkOiJNMTIgMjFoLjAxIn1dLFsicGF0aCIse2Q6Ik0xNiAxNWguMDEifV0sWyJwYXRoIix7ZDoiTTE2IDE5aC4wMSJ9XV19KTt2YXIgeEQsbkxlPWcoKCk9Pnt4RD1bWyJwYXRoIix7ZDoiTTEyIDJ2MiJ9XSxbInBhdGgiLHtkOiJtNC45MyA0LjkzIDEuNDEgMS40MSJ9XSxbInBhdGgiLHtkOiJNMjAgMTJoMiJ9XSxbInBhdGgiLHtkOiJtMTkuMDcgNC45My0xLjQxIDEuNDEifV0sWyJwYXRoIix7ZDoiTTE1Ljk0NyAxMi42NWE0IDQgMCAwIDAtNS45MjUtNC4xMjgifV0sWyJwYXRoIix7ZDoiTTMgMjBhNSA1IDAgMSAxIDguOS00SDEzYTMgMyAwIDAgMSAyIDUuMjQifV0sWyJwYXRoIix7ZDoiTTExIDIwdjIifV0sWyJwYXRoIix7ZDoiTTcgMTl2MiJ9XV19KTt2YXIgeUQsbExlPWcoKCk9Pnt5RD1bWyJwYXRoIix7ZDoibTE3IDE4LTEuNTM1IDEuNjA1YTUgNSAwIDAgMS04LTEuNSJ9XSxbInBhdGgiLHtkOiJNMTcgMjJ2LTRoLTQifV0sWyJwYXRoIix7ZDoiTTIwLjk5NiAxNS4yNTFBNC41IDQuNSAwIDAgMCAxNy40OTUgOGgtMS43OWE3IDcgMCAxIDAtMTIuNzA5IDUuNjA3In1dLFsicGF0aCIse2Q6Ik03IDEwdjRoNCJ9XSxbInBhdGgiLHtkOiJtNyAxNCAxLjUzNS0xLjYwNWE1IDUgMCAwIDEgOCAxLjUifV1dfSk7dmFyIHdELGNMZT1nKCgpPT57d0Q9W1sicGF0aCIse2Q6Ik0xMiAydjIifV0sWyJwYXRoIix7ZDoibTQuOTMgNC45MyAxLjQxIDEuNDEifV0sWyJwYXRoIix7ZDoiTTIwIDEyaDIifV0sWyJwYXRoIix7ZDoibTE5LjA3IDQuOTMtMS40MSAxLjQxIn1dLFsicGF0aCIse2Q6Ik0xNS45NDcgMTIuNjVhNCA0IDAgMCAwLTUuOTI1LTQuMTI4In1dLFsicGF0aCIse2Q6Ik0xMyAyMkg3YTUgNSAwIDEgMSA0LjktNkgxM2EzIDMgMCAwIDEgMCA2WiJ9XV19KTt2YXIgVG0sZExlPWcoKCk9PntUbT1bWyJwYXRoIix7ZDoiTTEyIDEzdjgifV0sWyJwYXRoIix7ZDoiTTQgMTQuODk5QTcgNyAwIDEgMSAxNS43MSA4aDEuNzlhNC41IDQuNSAwIDAgMSAyLjUgOC4yNDIifV0sWyJwYXRoIix7ZDoibTggMTcgNC00IDQgNCJ9XV19KTt2YXIga0QsdUxlPWcoKCk9PntrRD1bWyJwYXRoIix7ZDoiTTE3LjUgMTlIOWE3IDcgMCAxIDEgNi43MS05aDEuNzlhNC41IDQuNSAwIDEgMSAwIDlaIn1dXX0pO3ZhciBTRCxwTGU9ZygoKT0+e1NEPVtbInBhdGgiLHtkOiJNMTcuNSAxMmExIDEgMCAxIDEgMCA5SDkuMDA2YTcgNyAwIDEgMSA2LjcwMi05eiJ9XSxbInBhdGgiLHtkOiJNMjEuODMyIDlBMyAzIDAgMCAwIDE5IDdoLTIuMjA3YTUuNSA1LjUgMCAwIDAtMTAuNzIuNjEifV1dfSk7dmFyIF9ELGhMZT1nKCgpPT57X0Q9W1sicGF0aCIse2Q6Ik0xNi4xNyA3LjgzIDIgMjIifV0sWyJwYXRoIix7ZDoiTTQuMDIgMTJhMi44MjcgMi44MjcgMCAxIDEgMy44MS00LjE3QTIuODI3IDIuODI3IDAgMSAxIDEyIDQuMDJhMi44MjcgMi44MjcgMCAxIDEgNC4xNyAzLjgxQTIuODI3IDIuODI3IDAgMSAxIDE5Ljk4IDEyYTIuODI3IDIuODI3IDAgMSAxLTMuODEgNC4xN0EyLjgyNyAyLjgyNyAwIDEgMSAxMiAxOS45OGEyLjgyNyAyLjgyNyAwIDEgMS00LjE3LTMuODFBMSAxIDAgMSAxIDQgMTIifV0sWyJwYXRoIix7ZDoibTcuODMgNy44MyA4LjM0IDguMzQifV1dfSk7dmFyIE1ELGZMZT1nKCgpPT57TUQ9W1sicGF0aCIse2Q6Ik0xNy4yOCA5LjA1YTUuNSA1LjUgMCAxIDAtMTAuNTYgMEE1LjUgNS41IDAgMSAwIDEyIDE3LjY2YTUuNSA1LjUgMCAxIDAgNS4yOC04LjZaIn1dLFsicGF0aCIse2Q6Ik0xMiAxNy42NkwxMiAyMiJ9XV19KTt2YXIgJG0sbUxlPWcoKCk9PnskbT1bWyJwYXRoIix7ZDoibTE4IDE2IDQtNC00LTQifV0sWyJwYXRoIix7ZDoibTYgOC00IDQgNCA0In1dLFsicGF0aCIse2Q6Im0xNC41IDQtNSAxNiJ9XV19KTt2YXIgekQsZ0xlPWcoKCk9Pnt6RD1bWyJwYXRoIix7ZDoibTE2IDE4IDYtNi02LTYifV0sWyJwYXRoIix7ZDoibTggNi02IDYgNiA2In1dXX0pO3ZhciBDRCxiTGU9ZygoKT0+e0NEPVtbInBhdGgiLHtkOiJNMTAgMnYyIn1dLFsicGF0aCIse2Q6Ik0xNCAydjIifV0sWyJwYXRoIix7ZDoiTTE2IDhhMSAxIDAgMCAxIDEgMXY4YTQgNCAwIDAgMS00IDRIN2E0IDQgMCAwIDEtNC00VjlhMSAxIDAgMCAxIDEtMWgxNGE0IDQgMCAxIDEgMCA4aC0xIn1dLFsicGF0aCIse2Q6Ik02IDJ2MiJ9XV19KTt2YXIgVEQsdkxlPWcoKCk9PntURD1bWyJwYXRoIix7ZDoiTTExIDEwLjI3IDcgMy4zNCJ9XSxbInBhdGgiLHtkOiJtMTEgMTMuNzMtNCA2LjkzIn1dLFsicGF0aCIse2Q6Ik0xMiAyMnYtMiJ9XSxbInBhdGgiLHtkOiJNMTIgMnYyIn1dLFsicGF0aCIse2Q6Ik0xNCAxMmg4In1dLFsicGF0aCIse2Q6Im0xNyAyMC42Ni0xLTEuNzMifV0sWyJwYXRoIix7ZDoibTE3IDMuMzQtMSAxLjczIn1dLFsicGF0aCIse2Q6Ik0yIDEyaDIifV0sWyJwYXRoIix7ZDoibTIwLjY2IDE3LTEuNzMtMSJ9XSxbInBhdGgiLHtkOiJtMjAuNjYgNy0xLjczIDEifV0sWyJwYXRoIix7ZDoibTMuMzQgMTcgMS43My0xIn1dLFsicGF0aCIse2Q6Im0zLjM0IDcgMS43MyAxIn1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjIifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiOCJ9XV19KTt2YXIgJEQseExlPWcoKCk9PnskRD1bWyJwYXRoIix7ZDoiTTEzLjc0NCAxNy43MzZhNiA2IDAgMSAxLTcuNDgtNy40OCJ9XSxbInBhdGgiLHtkOiJNMTUgNmgxdjQifV0sWyJwYXRoIix7ZDoibTYuMTM0IDE0Ljc2OC44NjYtLjUgMiAzLjQ2NCJ9XSxbImNpcmNsZSIse2N4OiIxNiIsY3k6IjgiLHI6IjYifV1dfSk7dmFyIERtLHlMZT1nKCgpPT57RG09W1sicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiMyIscng6IjIifV0sWyJwYXRoIix7ZDoiTTEyIDN2MTgifV1dfSk7dmFyIFYwLHdMZT1nKCgpPT57VjA9W1sicGF0aCIse2Q6Ik0xMC41IDIxSDVhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoMTRhMiAyIDAgMCAxIDIgMnY1LjUifV0sWyJwYXRoIix7ZDoibTE0LjMgMTkuNiAxLS40In1dLFsicGF0aCIse2Q6Ik0xNSAzdjcuNSJ9XSxbInBhdGgiLHtkOiJtMTUuMiAxNi45LS45LS4zIn1dLFsicGF0aCIse2Q6Im0xNi42IDIxLjcuMy0uOSJ9XSxbInBhdGgiLHtkOiJtMTYuOCAxNS4zLS40LTEifV0sWyJwYXRoIix7ZDoibTE5LjEgMTUuMi4zLS45In1dLFsicGF0aCIse2Q6Im0xOS42IDIxLjctLjQtMSJ9XSxbInBhdGgiLHtkOiJtMjAuNyAxNi44IDEtLjQifV0sWyJwYXRoIix7ZDoibTIxLjcgMTkuNC0uOS0uMyJ9XSxbInBhdGgiLHtkOiJNOSAzdjE4In1dLFsiY2lyY2xlIix7Y3g6IjE4IixjeToiMTgiLHI6IjMifV1dfSk7dmFyIExtLGtMZT1nKCgpPT57TG09W1sicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiMyIscng6IjIifV0sWyJwYXRoIix7ZDoiTTkgM3YxOCJ9XSxbInBhdGgiLHtkOiJNMTUgM3YxOCJ9XV19KTt2YXIgREQsU0xlPWcoKCk9PntERD1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNNy41IDN2MTgifV0sWyJwYXRoIix7ZDoiTTEyIDN2MTgifV0sWyJwYXRoIix7ZDoiTTE2LjUgM3YxOCJ9XV19KTt2YXIgTEQsX0xlPWcoKCk9PntMRD1bWyJwYXRoIix7ZDoiTTE0IDNhMSAxIDAgMCAxIDEgMXY1YTEgMSAwIDAgMS0xIDEifV0sWyJwYXRoIix7ZDoiTTE5IDNhMSAxIDAgMCAxIDEgMXY1YTEgMSAwIDAgMS0xIDEifV0sWyJwYXRoIix7ZDoibTcgMTUgMyAzIn1dLFsicGF0aCIse2Q6Im03IDIxIDMtM0g1YTIgMiAwIDAgMS0yLTJ2LTIifV0sWyJyZWN0Iix7eDoiMTQiLHk6IjE0Iix3aWR0aDoiNyIsaGVpZ2h0OiI3IixyeDoiMSJ9XSxbInJlY3QiLHt4OiIzIix5OiIzIix3aWR0aDoiNyIsaGVpZ2h0OiI3IixyeDoiMSJ9XV19KTt2YXIgRUQsTUxlPWcoKCk9PntFRD1bWyJwYXRoIix7ZDoiTTE1IDZ2MTJhMyAzIDAgMSAwIDMtM0g2YTMgMyAwIDEgMCAzIDNWNmEzIDMgMCAxIDAtMyAzaDEyYTMgMyAwIDEgMC0zLTMifV1dfSk7dmFyIFBELHpMZT1nKCgpPT57UEQ9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIn1dLFsicGF0aCIse2Q6Im0xNi4yNCA3Ljc2LTEuODA0IDUuNDExYTIgMiAwIDAgMS0xLjI2NSAxLjI2NUw3Ljc2IDE2LjI0bDEuODA0LTUuNDExYTIgMiAwIDAgMSAxLjI2NS0xLjI2NXoifV1dfSk7dmFyIElELENMZT1nKCgpPT57SUQ9W1sicGF0aCIse2Q6Ik0xNS41MzYgMTEuMjkzYTEgMSAwIDAgMCAwIDEuNDE0bDIuMzc2IDIuMzc3YTEgMSAwIDAgMCAxLjQxNCAwbDIuMzc3LTIuMzc3YTEgMSAwIDAgMCAwLTEuNDE0bC0yLjM3Ny0yLjM3N2ExIDEgMCAwIDAtMS40MTQgMHoifV0sWyJwYXRoIix7ZDoiTTIuMjk3IDExLjI5M2ExIDEgMCAwIDAgMCAxLjQxNGwyLjM3NyAyLjM3N2ExIDEgMCAwIDAgMS40MTQgMGwyLjM3Ny0yLjM3N2ExIDEgMCAwIDAgMC0xLjQxNEw2LjA4OCA4LjkxNmExIDEgMCAwIDAtMS40MTQgMHoifV0sWyJwYXRoIix7ZDoiTTguOTE2IDE3LjkxMmExIDEgMCAwIDAgMCAxLjQxNWwyLjM3NyAyLjM3NmExIDEgMCAwIDAgMS40MTQgMGwyLjM3Ny0yLjM3NmExIDEgMCAwIDAgMC0xLjQxNWwtMi4zNzctMi4zNzZhMSAxIDAgMCAwLTEuNDE0IDB6In1dLFsicGF0aCIse2Q6Ik04LjkxNiA0LjY3NGExIDEgMCAwIDAgMCAxLjQxNGwyLjM3NyAyLjM3NmExIDEgMCAwIDAgMS40MTQgMGwyLjM3Ny0yLjM3NmExIDEgMCAwIDAgMC0xLjQxNGwtMi4zNzctMi4zNzdhMSAxIDAgMCAwLTEuNDE0IDB6In1dXX0pO3ZhciBBRCxUTGU9ZygoKT0+e0FEPVtbInJlY3QiLHt3aWR0aDoiMTQiLGhlaWdodDoiOCIseDoiNSIseToiMiIscng6IjIifV0sWyJyZWN0Iix7d2lkdGg6IjIwIixoZWlnaHQ6IjgiLHg6IjIiLHk6IjE0IixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNNiAxOGgyIn1dLFsicGF0aCIse2Q6Ik0xMiAxOGg2In1dXX0pO3ZhciBORCwkTGU9ZygoKT0+e05EPVtbInBhdGgiLHtkOiJNMyAyMGExIDEgMCAwIDEtMS0xdi0xYTIgMiAwIDAgMSAyLTJoMTZhMiAyIDAgMCAxIDIgMnYxYTEgMSAwIDAgMS0xIDFaIn1dLFsicGF0aCIse2Q6Ik0yMCAxNmE4IDggMCAxIDAtMTYgMCJ9XSxbInBhdGgiLHtkOiJNMTIgNHY0In1dLFsicGF0aCIse2Q6Ik0xMCA0aDQifV1dfSk7dmFyIFJELERMZT1nKCgpPT57UkQ9W1sicGF0aCIse2Q6Im0yMC45IDE4LjU1LTgtMTUuOThhMSAxIDAgMCAwLTEuOCAwbC04IDE1Ljk4In1dLFsiZWxsaXBzZSIse2N4OiIxMiIsY3k6IjE5IixyeDoiOSIscnk6IjMifV1dfSk7dmFyIE9ELExMZT1nKCgpPT57T0Q9W1sicmVjdCIse3g6IjIiLHk6IjYiLHdpZHRoOiIyMCIsaGVpZ2h0OiI4IixyeDoiMSJ9XSxbInBhdGgiLHtkOiJNMTcgMTR2NyJ9XSxbInBhdGgiLHtkOiJNNyAxNHY3In1dLFsicGF0aCIse2Q6Ik0xNyAzdjMifV0sWyJwYXRoIix7ZDoiTTcgM3YzIn1dLFsicGF0aCIse2Q6Ik0xMCAxNCAyLjMgNi4zIn1dLFsicGF0aCIse2Q6Im0xNCA2IDcuNyA3LjcifV0sWyJwYXRoIix7ZDoibTggNiA4IDgifV1dfSk7dmFyIEVtLEVMZT1nKCgpPT57RW09W1sicGF0aCIse2Q6Ik0xNiAydjIifV0sWyJwYXRoIix7ZDoiTTE3LjkxNSAyMmE2IDYgMCAwIDAtMTIgMCJ9XSxbInBhdGgiLHtkOiJNOCAydjIifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiNCJ9XSxbInJlY3QiLHt4OiIzIix5OiI0Iix3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHJ4OiIyIn1dXX0pO3ZhciBGRCxQTGU9ZygoKT0+e0ZEPVtbInBhdGgiLHtkOiJNMTYgMnYyIn1dLFsicGF0aCIse2Q6Ik03IDIydi0yYTIgMiAwIDAgMSAyLTJoNmEyIDIgMCAwIDEgMiAydjIifV0sWyJwYXRoIix7ZDoiTTggMnYyIn1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiMTEiLHI6IjMifV0sWyJyZWN0Iix7eDoiMyIseToiNCIsd2lkdGg6IjE4IixoZWlnaHQ6IjE4IixyeDoiMiJ9XV19KTt2YXIgQkQsSUxlPWcoKCk9PntCRD1bWyJwYXRoIix7ZDoiTTIyIDcuN2MwLS42LS40LTEuMi0uOC0xLjVsLTYuMy0zLjlhMS43MiAxLjcyIDAgMCAwLTEuNyAwbC0xMC4zIDZjLS41LjItLjkuOC0uOSAxLjR2Ni42YzAgLjUuNCAxLjIuOCAxLjVsNi4zIDMuOWExLjcyIDEuNzIgMCAwIDAgMS43IDBsMTAuMy02Yy41LS4zLjktMSAuOS0xLjVaIn1dLFsicGF0aCIse2Q6Ik0xMCAyMS45VjE0TDIuMSA5LjEifV0sWyJwYXRoIix7ZDoibTEwIDE0IDExLjktNi45In1dLFsicGF0aCIse2Q6Ik0xNCAxOS44di04LjEifV0sWyJwYXRoIix7ZDoiTTE4IDE3LjVWOS40In1dXX0pO3ZhciBIRCxBTGU9ZygoKT0+e0hEPVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9XSxbInBhdGgiLHtkOiJNMTIgMThhNiA2IDAgMCAwIDAtMTJ2MTJ6In1dXX0pO3ZhciBxRCxOTGU9ZygoKT0+e3FEPVtbInBhdGgiLHtkOiJNMTIgMmExMCAxMCAwIDEgMCAxMCAxMCA0IDQgMCAwIDEtNS01IDQgNCAwIDAgMS01LTUifV0sWyJwYXRoIix7ZDoiTTguNSA4LjV2LjAxIn1dLFsicGF0aCIse2Q6Ik0xNiAxNS41di4wMSJ9XSxbInBhdGgiLHtkOiJNMTIgMTJ2LjAxIn1dLFsicGF0aCIse2Q6Ik0xMSAxN3YuMDEifV0sWyJwYXRoIix7ZDoiTTcgMTR2LjAxIn1dXX0pO3ZhciBqRCxSTGU9ZygoKT0+e2pEPVtbInBhdGgiLHtkOiJNMiAxMmgyMCJ9XSxbInBhdGgiLHtkOiJNMjAgMTJ2OGEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMnYtOCJ9XSxbInBhdGgiLHtkOiJtNCA4IDE2LTQifV0sWyJwYXRoIix7ZDoibTguODYgNi43OC0uNDUtMS44MWEyIDIgMCAwIDEgMS40NS0yLjQzbDEuOTQtLjQ4YTIgMiAwIDAgMSAyLjQzIDEuNDZsLjQ1IDEuOCJ9XV19KTt2YXIgVkQsT0xlPWcoKCk9PntWRD1bWyJwYXRoIix7ZDoibTEyIDE1IDIgMiA0LTQifV0sWyJyZWN0Iix7d2lkdGg6IjE0IixoZWlnaHQ6IjE0Iix4OiI4Iix5OiI4IixyeDoiMiIscnk6IjIifV0sWyJwYXRoIix7ZDoiTTQgMTZjLTEuMSAwLTItLjktMi0yVjRjMC0xLjEuOS0yIDItMmgxMGMxLjEgMCAyIC45IDIgMiJ9XV19KTt2YXIgVUQsRkxlPWcoKCk9PntVRD1bWyJsaW5lIix7eDE6IjEyIix4MjoiMTgiLHkxOiIxNSIseTI6IjE1In1dLFsicmVjdCIse3dpZHRoOiIxNCIsaGVpZ2h0OiIxNCIseDoiOCIseToiOCIscng6IjIiLHJ5OiIyIn1dLFsicGF0aCIse2Q6Ik00IDE2Yy0xLjEgMC0yLS45LTItMlY0YzAtMS4xLjktMiAyLTJoMTBjMS4xIDAgMiAuOSAyIDIifV1dfSk7dmFyIFdELEJMZT1nKCgpPT57V0Q9W1sibGluZSIse3gxOiIxNSIseDI6IjE1Iix5MToiMTIiLHkyOiIxOCJ9XSxbImxpbmUiLHt4MToiMTIiLHgyOiIxOCIseTE6IjE1Iix5MjoiMTUifV0sWyJyZWN0Iix7d2lkdGg6IjE0IixoZWlnaHQ6IjE0Iix4OiI4Iix5OiI4IixyeDoiMiIscnk6IjIifV0sWyJwYXRoIix7ZDoiTTQgMTZjLTEuMSAwLTItLjktMi0yVjRjMC0xLjEuOS0yIDItMmgxMGMxLjEgMCAyIC45IDIgMiJ9XV19KTt2YXIgR0QsSExlPWcoKCk9PntHRD1bWyJsaW5lIix7eDE6IjEyIix4MjoiMTgiLHkxOiIxOCIseTI6IjEyIn1dLFsicmVjdCIse3dpZHRoOiIxNCIsaGVpZ2h0OiIxNCIseDoiOCIseToiOCIscng6IjIiLHJ5OiIyIn1dLFsicGF0aCIse2Q6Ik00IDE2Yy0xLjEgMC0yLS45LTItMlY0YzAtMS4xLjktMiAyLTJoMTBjMS4xIDAgMiAuOSAyIDIifV1dfSk7dmFyIEtELHFMZT1nKCgpPT57S0Q9W1sibGluZSIse3gxOiIxMiIseDI6IjE4Iix5MToiMTIiLHkyOiIxOCJ9XSxbImxpbmUiLHt4MToiMTIiLHgyOiIxOCIseTE6IjE4Iix5MjoiMTIifV0sWyJyZWN0Iix7d2lkdGg6IjE0IixoZWlnaHQ6IjE0Iix4OiI4Iix5OiI4IixyeDoiMiIscnk6IjIifV0sWyJwYXRoIix7ZDoiTTQgMTZjLTEuMSAwLTItLjktMi0yVjRjMC0xLjEuOS0yIDItMmgxMGMxLjEgMCAyIC45IDIgMiJ9XV19KTt2YXIgWUQsakxlPWcoKCk9PntZRD1bWyJyZWN0Iix7d2lkdGg6IjE0IixoZWlnaHQ6IjE0Iix4OiI4Iix5OiI4IixyeDoiMiIscnk6IjIifV0sWyJwYXRoIix7ZDoiTTQgMTZjLTEuMSAwLTItLjktMi0yVjRjMC0xLjEuOS0yIDItMmgxMGMxLjEgMCAyIC45IDIgMiJ9XV19KTt2YXIgWkQsVkxlPWcoKCk9PntaRD1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifV0sWyJwYXRoIix7ZDoiTTkuMTcgMTQuODNhNCA0IDAgMSAwIDAtNS42NiJ9XV19KTt2YXIgWEQsVUxlPWcoKCk9PntYRD1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifV0sWyJwYXRoIix7ZDoiTTE0LjgzIDE0LjgzYTQgNCAwIDEgMSAwLTUuNjYifV1dfSk7dmFyIFFELFdMZT1nKCgpPT57UUQ9W1sicGF0aCIse2Q6Ik0yMCA0djdhNCA0IDAgMCAxLTQgNEg0In1dLFsicGF0aCIse2Q6Im05IDEwLTUgNSA1IDUifV1dfSk7dmFyIEpELEdMZT1nKCgpPT57SkQ9W1sicGF0aCIse2Q6Im0xNSAxMCA1IDUtNSA1In1dLFsicGF0aCIse2Q6Ik00IDR2N2E0IDQgMCAwIDAgNCA0aDEyIn1dXX0pO3ZhciBlTCxLTGU9ZygoKT0+e2VMPVtbInBhdGgiLHtkOiJtMTQgMTUtNSA1LTUtNSJ9XSxbInBhdGgiLHtkOiJNMjAgNGgtN2E0IDQgMCAwIDAtNCA0djEyIn1dXX0pO3ZhciB0TCxZTGU9ZygoKT0+e3RMPVtbInBhdGgiLHtkOiJNMTQgOSA5IDQgNCA5In1dLFsicGF0aCIse2Q6Ik0yMCAyMGgtN2E0IDQgMCAwIDEtNC00VjQifV1dfSk7dmFyIGFMLFpMZT1nKCgpPT57YUw9W1sicGF0aCIse2Q6Im0xMCAxNSA1IDUgNS01In1dLFsicGF0aCIse2Q6Ik00IDRoN2E0IDQgMCAwIDEgNCA0djEyIn1dXX0pO3ZhciBzTCxYTGU9ZygoKT0+e3NMPVtbInBhdGgiLHtkOiJtMTAgOSA1LTUgNSA1In1dLFsicGF0aCIse2Q6Ik00IDIwaDdhNCA0IDAgMCAwIDQtNFY0In1dXX0pO3ZhciBpTCxRTGU9ZygoKT0+e2lMPVtbInBhdGgiLHtkOiJNMjAgMjB2LTdhNCA0IDAgMCAwLTQtNEg0In1dLFsicGF0aCIse2Q6Ik05IDE0IDQgOWw1LTUifV1dfSk7dmFyIHJMLEpMZT1nKCgpPT57ckw9W1sicGF0aCIse2Q6Im0xNSAxNCA1LTUtNS01In1dLFsicGF0aCIse2Q6Ik00IDIwdi03YTQgNCAwIDAgMSA0LTRoMTIifV1dfSk7dmFyIG9MLGVFZT1nKCgpPT57b0w9W1sicGF0aCIse2Q6Ik0xMiAyMHYyIn1dLFsicGF0aCIse2Q6Ik0xMiAydjIifV0sWyJwYXRoIix7ZDoiTTE3IDIwdjIifV0sWyJwYXRoIix7ZDoiTTE3IDJ2MiJ9XSxbInBhdGgiLHtkOiJNMiAxMmgyIn1dLFsicGF0aCIse2Q6Ik0yIDE3aDIifV0sWyJwYXRoIix7ZDoiTTIgN2gyIn1dLFsicGF0aCIse2Q6Ik0yMCAxMmgyIn1dLFsicGF0aCIse2Q6Ik0yMCAxN2gyIn1dLFsicGF0aCIse2Q6Ik0yMCA3aDIifV0sWyJwYXRoIix7ZDoiTTcgMjB2MiJ9XSxbInBhdGgiLHtkOiJNNyAydjIifV0sWyJyZWN0Iix7eDoiNCIseToiNCIsd2lkdGg6IjE2IixoZWlnaHQ6IjE2IixyeDoiMiJ9XSxbInJlY3QiLHt4OiI4Iix5OiI4Iix3aWR0aDoiOCIsaGVpZ2h0OiI4IixyeDoiMSJ9XV19KTt2YXIgbkwsdEVlPWcoKCk9PntuTD1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifV0sWyJwYXRoIix7ZDoiTTEwIDkuM2EyLjggMi44IDAgMCAwLTMuNSAxIDMuMSAzLjEgMCAwIDAgMCAzLjQgMi43IDIuNyAwIDAgMCAzLjUgMSJ9XSxbInBhdGgiLHtkOiJNMTcgOS4zYTIuOCAyLjggMCAwIDAtMy41IDEgMy4xIDMuMSAwIDAgMCAwIDMuNCAyLjcgMi43IDAgMCAwIDMuNSAxIn1dXX0pO3ZhciBsTCxhRWU9ZygoKT0+e2xMPVtbInJlY3QiLHt3aWR0aDoiMjAiLGhlaWdodDoiMTQiLHg6IjIiLHk6IjUiLHJ4OiIyIn1dLFsibGluZSIse3gxOiIyIix4MjoiMjIiLHkxOiIxMCIseTI6IjEwIn1dXX0pO3ZhciBjTCxzRWU9ZygoKT0+e2NMPVtbInBhdGgiLHtkOiJNMTAuMiAxOEg0Ljc3NGExLjUgMS41IDAgMCAxLTEuMzUyLS45NyAxMSAxMSAwIDAgMSAuMTMyLTYuNDg3In1dLFsicGF0aCIse2Q6Ik0xOCAxMC4yVjQuNzc0YTEuNSAxLjUgMCAwIDAtLjk3LTEuMzUyIDExIDExIDAgMCAwLTYuNDg2LjEzMiJ9XSxbInBhdGgiLHtkOiJNMTggNWE0IDMgMCAwIDEgNCAzIDIgMiAwIDAgMS0yIDIgMTAgMTAgMCAwIDAtNS4xMzkgMS40MiJ9XSxbInBhdGgiLHtkOiJNNSAxOGEzIDQgMCAwIDAgMyA0IDIgMiAwIDAgMCAyLTIgMTAgMTAgMCAwIDEgMS40Mi01LjE0In1dLFsicGF0aCIse2Q6Ik04LjcwOSAyLjU1NGExMCAxMCAwIDAgMC02LjE1NSA2LjE1NSAxLjUgMS41IDAgMCAwIC42NzYgMS42MjZsOS44MDcgNS40MmEyIDIgMCAwIDAgMi43MTgtMi43MThsLTUuNDItOS44MDdhMS41IDEuNSAwIDAgMC0xLjYyNi0uNjc2In1dXX0pO3ZhciBkTCxpRWU9ZygoKT0+e2RMPVtbInBhdGgiLHtkOiJNNiAydjE0YTIgMiAwIDAgMCAyIDJoMTQifV0sWyJwYXRoIix7ZDoiTTE4IDIyVjhhMiAyIDAgMCAwLTItMkgyIn1dXX0pO3ZhciB1TCxyRWU9ZygoKT0+e3VMPVtbInBhdGgiLHtkOiJNNCA5YTIgMiAwIDAgMC0yIDJ2MmEyIDIgMCAwIDAgMiAyaDRhMSAxIDAgMCAxIDEgMXY0YTIgMiAwIDAgMCAyIDJoMmEyIDIgMCAwIDAgMi0ydi00YTEgMSAwIDAgMSAxLTFoNGEyIDIgMCAwIDAgMi0ydi0yYTIgMiAwIDAgMC0yLTJoLTRhMSAxIDAgMCAxLTEtMVY0YTIgMiAwIDAgMC0yLTJoLTJhMiAyIDAgMCAwLTIgMnY0YTEgMSAwIDAgMS0xIDF6In1dXX0pO3ZhciBwTCxvRWU9ZygoKT0+e3BMPVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9XSxbImxpbmUiLHt4MToiMjIiLHgyOiIxOCIseTE6IjEyIix5MjoiMTIifV0sWyJsaW5lIix7eDE6IjYiLHgyOiIyIix5MToiMTIiLHkyOiIxMiJ9XSxbImxpbmUiLHt4MToiMTIiLHgyOiIxMiIseTE6IjYiLHkyOiIyIn1dLFsibGluZSIse3gxOiIxMiIseDI6IjEyIix5MToiMjIiLHkyOiIxOCJ9XV19KTt2YXIgaEwsbkVlPWcoKCk9PntoTD1bWyJwYXRoIix7ZDoiTTExLjU2MiAzLjI2NmEuNS41IDAgMCAxIC44NzYgMEwxNS4zOSA4Ljg3YTEgMSAwIDAgMCAxLjUxNi4yOTRMMjEuMTgzIDUuNWEuNS41IDAgMCAxIC43OTguNTE5bC0yLjgzNCAxMC4yNDZhMSAxIDAgMCAxLS45NTYuNzM0SDUuODFhMSAxIDAgMCAxLS45NTctLjczNEwyLjAyIDYuMDJhLjUuNSAwIDAgMSAuNzk4LS41MTlsNC4yNzYgMy42NjRhMSAxIDAgMCAwIDEuNTE2LS4yOTR6In1dLFsicGF0aCIse2Q6Ik01IDIxaDE0In1dXX0pO3ZhciBmTCxsRWU9ZygoKT0+e2ZMPVtbInBhdGgiLHtkOiJNMTAgMjJ2LTgifV0sWyJwYXRoIix7ZDoiTTIuMzM2IDguODkgMTAgMTRsMTEuNzE1LTcuMDI5In1dLFsicGF0aCIse2Q6Ik0yMiAxNGEyIDIgMCAwIDEtLjk3MSAxLjcxNWwtMTAgNmEyIDIgMCAwIDEtMi4xMzgtLjA1bC02LTRBMiAyIDAgMCAxIDIgMTZ2LTZhMiAyIDAgMCAxIC45NzEtMS43MTVsMTAtNmEyIDIgMCAwIDEgMi4xMzguMDVsNiA0QTIgMiAwIDAgMSAyMiA4eiJ9XV19KTt2YXIgbUwsY0VlPWcoKCk9PnttTD1bWyJwYXRoIix7ZDoibTYgOCAxLjc1IDEyLjI4YTIgMiAwIDAgMCAyIDEuNzJoNC41NGEyIDIgMCAwIDAgMi0xLjcyTDE4IDgifV0sWyJwYXRoIix7ZDoiTTUgOGgxNCJ9XSxbInBhdGgiLHtkOiJNNyAxNWE2LjQ3IDYuNDcgMCAwIDEgNSAwIDYuNDcgNi40NyAwIDAgMCA1IDAifV0sWyJwYXRoIix7ZDoibTEyIDggMS02aDIifV1dfSk7dmFyIGdMLGRFZT1nKCgpPT57Z0w9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjgifV0sWyJsaW5lIix7eDE6IjMiLHgyOiI2Iix5MToiMyIseTI6IjYifV0sWyJsaW5lIix7eDE6IjIxIix4MjoiMTgiLHkxOiIzIix5MjoiNiJ9XSxbImxpbmUiLHt4MToiMyIseDI6IjYiLHkxOiIyMSIseTI6IjE4In1dLFsibGluZSIse3gxOiIyMSIseDI6IjE4Iix5MToiMjEiLHkyOiIxOCJ9XV19KTt2YXIgYkwsdUVlPWcoKCk9PntiTD1bWyJlbGxpcHNlIix7Y3g6IjEyIixjeToiNSIscng6IjkiLHJ5OiIzIn1dLFsicGF0aCIse2Q6Ik0zIDV2MTRhOSAzIDAgMCAwIDE4IDBWNSJ9XV19KTt2YXIgdkwscEVlPWcoKCk9Pnt2TD1bWyJwYXRoIix7ZDoiTTExIDExLjMxYzEuMTcuNTYgMS41NCAxLjY5IDMuNSAxLjY5IDIuNSAwIDIuNS0yIDUtMiAxLjMgMCAxLjkuNSAyLjUgMSJ9XSxbInBhdGgiLHtkOiJNMTEuNzUgMThjLjM1LjUgMS40NSAxIDIuNzUgMSAyLjUgMCAyLjUtMiA1LTIgMS4zIDAgMS45LjUgMi41IDEifV0sWyJwYXRoIix7ZDoiTTIgMTBoNCJ9XSxbInBhdGgiLHtkOiJNMiAxNGg0In1dLFsicGF0aCIse2Q6Ik0yIDE4aDQifV0sWyJwYXRoIix7ZDoiTTIgNmg0In1dLFsicGF0aCIse2Q6Ik03IDNhMSAxIDAgMCAwLTEgMXYxNmExIDEgMCAwIDAgMSAxaDRhMSAxIDAgMCAwIDEtMUwxMCA0YTEgMSAwIDAgMC0xLTF6In1dXX0pO3ZhciB4TCxoRWU9ZygoKT0+e3hMPVtbImVsbGlwc2UiLHtjeDoiMTIiLGN5OiI1IixyeDoiOSIscnk6IjMifV0sWyJwYXRoIix7ZDoiTTMgMTJhOSAzIDAgMCAwIDUgMi42OSJ9XSxbInBhdGgiLHtkOiJNMjEgOS4zVjUifV0sWyJwYXRoIix7ZDoiTTMgNXYxNGE5IDMgMCAwIDAgNi40NyAyLjg4In1dLFsicGF0aCIse2Q6Ik0xMiAxMnY0aDQifV0sWyJwYXRoIix7ZDoiTTEzIDIwYTUgNSAwIDAgMCA5LTMgNC41IDQuNSAwIDAgMC00LjUtNC41Yy0xLjMzIDAtMi41NC41NC0zLjQxIDEuNDFMMTIgMTYifV1dfSk7dmFyIHlMLGZFZT1nKCgpPT57eUw9W1siZWxsaXBzZSIse2N4OiIxMiIsY3k6IjUiLHJ4OiI5IixyeToiMyJ9XSxbInBhdGgiLHtkOiJNMyA1VjE5QTkgMyAwIDAgMCAxNSAyMS44NCJ9XSxbInBhdGgiLHtkOiJNMjEgNVY4In1dLFsicGF0aCIse2Q6Ik0yMSAxMkwxOCAxN0gyMkwxOSAyMiJ9XSxbInBhdGgiLHtkOiJNMyAxMkE5IDMgMCAwIDAgMTQuNTkgMTQuODcifV1dfSk7dmFyIHdMLG1FZT1nKCgpPT57d0w9W1sicGF0aCIse2Q6Ik0yMSAxMS42OTNWNSJ9XSxbInBhdGgiLHtkOiJtMjIgMjItMS44NzUtMS44NzUifV0sWyJwYXRoIix7ZDoiTTMgMTJhOSAzIDAgMCAwIDguNjk3IDIuOTk4In1dLFsicGF0aCIse2Q6Ik0zIDV2MTRhOSAzIDAgMCAwIDkuMjggMi45OTkifV0sWyJjaXJjbGUiLHtjeDoiMTgiLGN5OiIxOCIscjoiMyJ9XSxbImVsbGlwc2UiLHtjeDoiMTIiLGN5OiI1IixyeDoiOSIscnk6IjMifV1dfSk7dmFyIGtMLGdFZT1nKCgpPT57a0w9W1siZWxsaXBzZSIse2N4OiIxMiIsY3k6IjUiLHJ4OiI5IixyeToiMyJ9XSxbInBhdGgiLHtkOiJNMyA1VjE5QTkgMyAwIDAgMCAyMSAxOVY1In1dLFsicGF0aCIse2Q6Ik0zIDEyQTkgMyAwIDAgMCAyMSAxMiJ9XV19KTt2YXIgU0wsYkVlPWcoKCk9PntTTD1bWyJwYXRoIix7ZDoibTEzIDIxLTMtMyAzLTMifV0sWyJwYXRoIix7ZDoiTTIwIDE4SDEwIn1dLFsicGF0aCIse2Q6Ik0zIDExaC4wMSJ9XSxbInJlY3QiLHt4OiI2Iix5OiIzIix3aWR0aDoiNSIsaGVpZ2h0OiI4IixyeDoiMi41In1dXX0pO3ZhciBfTCx2RWU9ZygoKT0+e19MPVtbInBhdGgiLHtkOiJNMTAgMThoMTAifV0sWyJwYXRoIix7ZDoibTE3IDIxIDMtMy0zLTMifV0sWyJwYXRoIix7ZDoiTTMgMTFoLjAxIn1dLFsicmVjdCIse3g6IjE1Iix5OiIzIix3aWR0aDoiNSIsaGVpZ2h0OiI4IixyeDoiMi41In1dLFsicmVjdCIse3g6IjYiLHk6IjMiLHdpZHRoOiI1IixoZWlnaHQ6IjgiLHJ4OiIyLjUifV1dfSk7dmFyIE1MLHhFZT1nKCgpPT57TUw9W1sicGF0aCIse2Q6Ik0xMCA1YTIgMiAwIDAgMC0xLjM0NC41MTlsLTYuMzI4IDUuNzRhMSAxIDAgMCAwIDAgMS40ODFsNi4zMjggNS43NDFBMiAyIDAgMCAwIDEwIDE5aDEwYTIgMiAwIDAgMCAyLTJWN2EyIDIgMCAwIDAtMi0yeiJ9XSxbInBhdGgiLHtkOiJtMTIgOSA2IDYifV0sWyJwYXRoIix7ZDoibTE4IDktNiA2In1dXX0pO3ZhciB6TCx5RWU9ZygoKT0+e3pMPVtbInBhdGgiLHtkOiJNMTAuMTYyIDMuMTY3QTEwIDEwIDAgMCAwIDIgMTNhMiAyIDAgMCAwIDQgMHYtMWEyIDIgMCAwIDEgNCAwdjRhMiAyIDAgMCAwIDQgMHYtNGEyIDIgMCAwIDEgNCAwdjFhMiAyIDAgMCAwIDQtLjAwNiAxMCAxMCAwIDAgMC04LjE2MS05LjgyNiJ9XSxbInBhdGgiLHtkOiJNMjAuODA0IDE0Ljg2OWE5IDkgMCAwIDEtMTcuNjA4IDAifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiI0IixyOiIyIn1dXX0pO3ZhciBDTCx3RWU9ZygoKT0+e0NMPVtbImNpcmNsZSIse2N4OiIxOSIsY3k6IjE5IixyOiIyIn1dLFsiY2lyY2xlIix7Y3g6IjUiLGN5OiI1IixyOiIyIn1dLFsicGF0aCIse2Q6Ik02LjQ4IDMuNjZhMTAgMTAgMCAwIDEgMTMuODYgMTMuODYifV0sWyJwYXRoIix7ZDoibTYuNDEgNi40MSAxMS4xOCAxMS4xOCJ9XSxbInBhdGgiLHtkOiJNMy42NiA2LjQ4YTEwIDEwIDAgMCAwIDEzLjg2IDEzLjg2In1dXX0pO3ZhciBUTCxrRWU9ZygoKT0+e1RMPVtbInBhdGgiLHtkOiJNMi43IDEwLjNhMi40MSAyLjQxIDAgMCAwIDAgMy40MWw3LjU5IDcuNTlhMi40MSAyLjQxIDAgMCAwIDMuNDEgMGw3LjU5LTcuNTlhMi40MSAyLjQxIDAgMCAwIDAtMy40MUwxMy43IDIuNzFhMi40MSAyLjQxIDAgMCAwLTMuNDEgMHoifV0sWyJwYXRoIix7ZDoiTTggMTJoOCJ9XV19KTt2YXIgUG0sU0VlPWcoKCk9PntQbT1bWyJwYXRoIix7ZDoiTTIuNyAxMC4zYTIuNDEgMi40MSAwIDAgMCAwIDMuNDFsNy41OSA3LjU5YTIuNDEgMi40MSAwIDAgMCAzLjQxIDBsNy41OS03LjU5YTIuNDEgMi40MSAwIDAgMCAwLTMuNDFMMTMuNyAyLjcxYTIuNDEgMi40MSAwIDAgMC0zLjQxIDBaIn1dLFsicGF0aCIse2Q6Ik05LjIgOS4yaC4wMSJ9XSxbInBhdGgiLHtkOiJtMTQuNSA5LjUtNSA1In1dLFsicGF0aCIse2Q6Ik0xNC43IDE0LjhoLjAxIn1dXX0pO3ZhciAkTCxfRWU9ZygoKT0+eyRMPVtbInBhdGgiLHtkOiJNMTIgOHY4In1dLFsicGF0aCIse2Q6Ik0yLjcgMTAuM2EyLjQxIDIuNDEgMCAwIDAgMCAzLjQxbDcuNTkgNy41OWEyLjQxIDIuNDEgMCAwIDAgMy40MSAwbDcuNTktNy41OWEyLjQxIDIuNDEgMCAwIDAgMC0zLjQxTDEzLjcgMi43MWEyLjQxIDIuNDEgMCAwIDAtMy40MSAweiJ9XSxbInBhdGgiLHtkOiJNOCAxMmg4In1dXX0pO3ZhciBETCxNRWU9ZygoKT0+e0RMPVtbInBhdGgiLHtkOiJNMi43IDEwLjNhMi40MSAyLjQxIDAgMCAwIDAgMy40MWw3LjU5IDcuNTlhMi40MSAyLjQxIDAgMCAwIDMuNDEgMGw3LjU5LTcuNTlhMi40MSAyLjQxIDAgMCAwIDAtMy40MWwtNy41OS03LjU5YTIuNDEgMi40MSAwIDAgMC0zLjQxIDBaIn1dXX0pO3ZhciBMTCx6RWU9ZygoKT0+e0xMPVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIyIixyeToiMiJ9XSxbInBhdGgiLHtkOiJNMTIgMTJoLjAxIn1dXX0pO3ZhciBFTCxDRWU9ZygoKT0+e0VMPVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIyIixyeToiMiJ9XSxbInBhdGgiLHtkOiJNMTUgOWguMDEifV0sWyJwYXRoIix7ZDoiTTkgMTVoLjAxIn1dXX0pO3ZhciBQTCxURWU9ZygoKT0+e1BMPVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIyIixyeToiMiJ9XSxbInBhdGgiLHtkOiJNMTYgOGguMDEifV0sWyJwYXRoIix7ZDoiTTEyIDEyaC4wMSJ9XSxbInBhdGgiLHtkOiJNOCAxNmguMDEifV1dfSk7dmFyIElMLCRFZT1nKCgpPT57SUw9W1sicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiMyIscng6IjIiLHJ5OiIyIn1dLFsicGF0aCIse2Q6Ik0xNiA4aC4wMSJ9XSxbInBhdGgiLHtkOiJNOCA4aC4wMSJ9XSxbInBhdGgiLHtkOiJNOCAxNmguMDEifV0sWyJwYXRoIix7ZDoiTTE2IDE2aC4wMSJ9XV19KTt2YXIgQUwsREVlPWcoKCk9PntBTD1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiIscnk6IjIifV0sWyJwYXRoIix7ZDoiTTE2IDhoLjAxIn1dLFsicGF0aCIse2Q6Ik04IDhoLjAxIn1dLFsicGF0aCIse2Q6Ik04IDE2aC4wMSJ9XSxbInBhdGgiLHtkOiJNMTYgMTZoLjAxIn1dLFsicGF0aCIse2Q6Ik0xMiAxMmguMDEifV1dfSk7dmFyIE5MLExFZT1nKCgpPT57Tkw9W1sicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiMyIscng6IjIiLHJ5OiIyIn1dLFsicGF0aCIse2Q6Ik0xNiA4aC4wMSJ9XSxbInBhdGgiLHtkOiJNMTYgMTJoLjAxIn1dLFsicGF0aCIse2Q6Ik0xNiAxNmguMDEifV0sWyJwYXRoIix7ZDoiTTggOGguMDEifV0sWyJwYXRoIix7ZDoiTTggMTJoLjAxIn1dLFsicGF0aCIse2Q6Ik04IDE2aC4wMSJ9XV19KTt2YXIgUkwsRUVlPWcoKCk9PntSTD1bWyJwYXRoIix7ZDoiTTEyIDN2MTQifV0sWyJwYXRoIix7ZDoiTTUgMTBoMTQifV0sWyJwYXRoIix7ZDoiTTUgMjFoMTQifV1dfSk7dmFyIE9MLFBFZT1nKCgpPT57T0w9W1sicmVjdCIse3dpZHRoOiIxMiIsaGVpZ2h0OiIxMiIseDoiMiIseToiMTAiLHJ4OiIyIixyeToiMiJ9XSxbInBhdGgiLHtkOiJtMTcuOTIgMTQgMy41LTMuNWEyLjI0IDIuMjQgMCAwIDAgMC0zbC01LTQuOTJhMi4yNCAyLjI0IDAgMCAwLTMgMEwxMCA2In1dLFsicGF0aCIse2Q6Ik02IDE4aC4wMSJ9XSxbInBhdGgiLHtkOiJNMTAgMTRoLjAxIn1dLFsicGF0aCIse2Q6Ik0xNSA2aC4wMSJ9XSxbInBhdGgiLHtkOiJNMTggOWguMDEifV1dfSk7dmFyIEZMLElFZT1nKCgpPT57Rkw9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIn1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjQifV0sWyJwYXRoIix7ZDoiTTEyIDEyaC4wMSJ9XV19KTt2YXIgQkwsQUVlPWcoKCk9PntCTD1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifV0sWyJwYXRoIix7ZDoiTTYgMTJjMC0xLjcuNy0zLjIgMS44LTQuMiJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIyIn1dLFsicGF0aCIse2Q6Ik0xOCAxMmMwIDEuNy0uNyAzLjItMS44IDQuMiJ9XV19KTt2YXIgSEwsTkVlPWcoKCk9PntITD1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiI1In1dLFsicGF0aCIse2Q6Ik0xMiAxMmguMDEifV1dfSk7dmFyIHFMLFJFZT1nKCgpPT57cUw9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiNiIscjoiMSJ9XSxbImxpbmUiLHt4MToiNSIseDI6IjE5Iix5MToiMTIiLHkyOiIxMiJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjE4IixyOiIxIn1dXX0pO3ZhciBqTCxPRWU9ZygoKT0+e2pMPVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIyIn1dXX0pO3ZhciBWTCxGRWU9ZygoKT0+e1ZMPVtbInBhdGgiLHtkOiJNMTUgMmMtMS4zNSAxLjUtMi4wOTIgMy0yLjUgNC41TDE0IDgifV0sWyJwYXRoIix7ZDoibTE3IDYtMi44OTEtMi44OTEifV0sWyJwYXRoIix7ZDoiTTIgMTVjMy4zMzMtMyA2LjY2Ny0zIDEwLTMifV0sWyJwYXRoIix7ZDoibTIgMiAyMCAyMCJ9XSxbInBhdGgiLHtkOiJtMjAgOSAuODkxLjg5MSJ9XSxbInBhdGgiLHtkOiJNMjIgOWMtMS41IDEuMzUtMyAyLjA5Mi00LjUgMi41bC0xLTEifV0sWyJwYXRoIix7ZDoiTTMuMTA5IDE0LjEwOSA0IDE1In1dLFsicGF0aCIse2Q6Im02LjUgMTIuNSAxIDEifV0sWyJwYXRoIix7ZDoibTcgMTggMi44OTEgMi44OTEifV0sWyJwYXRoIix7ZDoiTTkgMjJjMS4zNS0xLjUgMi4wOTItMyAyLjUtNC41TDEwIDE2In1dXX0pO3ZhciBVTCxCRWU9ZygoKT0+e1VMPVtbInBhdGgiLHtkOiJtMTAgMTYgMS41IDEuNSJ9XSxbInBhdGgiLHtkOiJtMTQgOC0xLjUtMS41In1dLFsicGF0aCIse2Q6Ik0xNSAyYy0xLjc5OCAxLjk5OC0yLjUxOCAzLjk5NS0yLjgwNyA1Ljk5MyJ9XSxbInBhdGgiLHtkOiJtMTYuNSAxMC41IDEgMSJ9XSxbInBhdGgiLHtkOiJtMTcgNi0yLjg5MS0yLjg5MSJ9XSxbInBhdGgiLHtkOiJNMiAxNWM2LjY2Ny02IDEzLjMzMyAwIDIwLTYifV0sWyJwYXRoIix7ZDoibTIwIDkgLjg5MS44OTEifV0sWyJwYXRoIix7ZDoiTTMuMTA5IDE0LjEwOSA0IDE1In1dLFsicGF0aCIse2Q6Im02LjUgMTIuNSAxIDEifV0sWyJwYXRoIix7ZDoibTcgMTggMi44OTEgMi44OTEifV0sWyJwYXRoIix7ZDoiTTkgMjJjMS43OTgtMS45OTggMi41MTgtMy45OTUgMi44MDctNS45OTMifV1dfSk7dmFyIFdMLEhFZT1nKCgpPT57V0w9W1sicGF0aCIse2Q6Ik0yIDhoMjAifV0sWyJyZWN0Iix7d2lkdGg6IjIwIixoZWlnaHQ6IjE2Iix4OiIyIix5OiI0IixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNNiAxNmgxMiJ9XV19KTt2YXIgR0wscUVlPWcoKCk9PntHTD1bWyJsaW5lIix7eDE6IjEyIix4MjoiMTIiLHkxOiIyIix5MjoiMjIifV0sWyJwYXRoIix7ZDoiTTE3IDVIOS41YTMuNSAzLjUgMCAwIDAgMCA3aDVhMy41IDMuNSAwIDAgMSAwIDdINiJ9XV19KTt2YXIgS0wsakVlPWcoKCk9PntLTD1bWyJwYXRoIix7ZDoiTTExLjI1IDE2LjI1aDEuNUwxMiAxN3oifV0sWyJwYXRoIix7ZDoiTTE2IDE0di41In1dLFsicGF0aCIse2Q6Ik00LjQyIDExLjI0N0ExMy4xNTIgMTMuMTUyIDAgMCAwIDQgMTQuNTU2QzQgMTguNzI4IDcuNTgyIDIxIDEyIDIxczgtMi4yNzIgOC02LjQ0NGExMS43MDIgMTEuNzAyIDAgMCAwLS40OTMtMy4zMDkifV0sWyJwYXRoIix7ZDoiTTggMTR2LjUifV0sWyJwYXRoIix7ZDoiTTguNSA4LjVjLS4zODQgMS4wNS0xLjA4MyAyLjAyOC0yLjM0NCAyLjUtMS45MzEuNzIyLTMuNTc2LS4yOTctMy42NTYtMS0uMTEzLS45OTQgMS4xNzctNi41MyA0LTcgMS45MjMtLjMyMSAzLjY1MS44NDUgMy42NTEgMi4yMzVBNy40OTcgNy40OTcgMCAwIDEgMTQgNS4yNzdjMC0xLjM5IDEuODQ0LTIuNTk4IDMuNzY3LTIuMjc3IDIuODIzLjQ3IDQuMTEzIDYuMDA2IDQgNy0uMDguNzAzLTEuNzI1IDEuNzIyLTMuNjU2IDEtMS4yNjEtLjQ3Mi0xLjg1NS0xLjQ1LTIuMjM5LTIuNSJ9XV19KTt2YXIgWUwsVkVlPWcoKCk9PntZTD1bWyJwYXRoIix7ZDoiTTIwLjUgMTBhMi41IDIuNSAwIDAgMS0yLjQtM0gxOGEyLjk1IDIuOTUgMCAwIDEtMi42LTQuNCAxMCAxMCAwIDEgMCA2LjMgNy4xYy0uMy4yLS44LjMtMS4yLjMifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMyJ9XV19KTt2YXIgWkwsVUVlPWcoKCk9PntaTD1bWyJwYXRoIix7ZDoiTTEwIDEyaC4wMSJ9XSxbInBhdGgiLHtkOiJNMTggOVY2YTIgMiAwIDAgMC0yLTJIOGEyIDIgMCAwIDAtMiAydjE0In1dLFsicGF0aCIse2Q6Ik0yIDIwaDgifV0sWyJwYXRoIix7ZDoiTTIwIDE3di0yYTIgMiAwIDEgMC00IDB2MiJ9XSxbInJlY3QiLHt4OiIxNCIseToiMTciLHdpZHRoOiI4IixoZWlnaHQ6IjUiLHJ4OiIxIn1dXX0pO3ZhciBYTCxXRWU9ZygoKT0+e1hMPVtbInBhdGgiLHtkOiJNMTAgMTJoLjAxIn1dLFsicGF0aCIse2Q6Ik0xOCAyMFY2YTIgMiAwIDAgMC0yLTJIOGEyIDIgMCAwIDAtMiAydjE0In1dLFsicGF0aCIse2Q6Ik0yIDIwaDIwIn1dXX0pO3ZhciBRTCxHRWU9ZygoKT0+e1FMPVtbInBhdGgiLHtkOiJNMTEgMjBIMiJ9XSxbInBhdGgiLHtkOiJNMTEgNC41NjJ2MTYuMTU3YTEgMSAwIDAgMCAxLjI0Mi45N0wxOSAyMFY1LjU2MmEyIDIgMCAwIDAtMS41MTUtMS45NGwtNC0xQTIgMiAwIDAgMCAxMSA0LjU2MXoifV0sWyJwYXRoIix7ZDoiTTExIDRIOGEyIDIgMCAwIDAtMiAydjE0In1dLFsicGF0aCIse2Q6Ik0xNCAxMmguMDEifV0sWyJwYXRoIix7ZDoiTTIyIDIwaC0zIn1dXX0pO3ZhciBKTCxLRWU9ZygoKT0+e0pMPVtbImNpcmNsZSIse2N4OiIxMi4xIixjeToiMTIuMSIscjoiMSJ9XV19KTt2YXIgZUUsWUVlPWcoKCk9PntlRT1bWyJwYXRoIix7ZDoiTTEyIDE1VjMifV0sWyJwYXRoIix7ZDoiTTIxIDE1djRhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJ2LTQifV0sWyJwYXRoIix7ZDoibTcgMTAgNSA1IDUtNSJ9XV19KTt2YXIgdEUsWkVlPWcoKCk9Pnt0RT1bWyJwYXRoIix7ZDoibTEyLjk5IDYuNzQgMS45MyAzLjQ0In1dLFsicGF0aCIse2Q6Ik0xOS4xMzYgMTJhMTAgMTAgMCAwIDEtMTQuMjcxIDAifV0sWyJwYXRoIix7ZDoibTIxIDIxLTIuMTYtMy44NCJ9XSxbInBhdGgiLHtkOiJtMyAyMSA4LjAyLTE0LjI2In1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiNSIscjoiMiJ9XV19KTt2YXIgYUUsWEVlPWcoKCk9PnthRT1bWyJwYXRoIix7ZDoiTTEwIDE4YTEgMSAwIDAgMSAxIDF2MmExIDEgMCAwIDEtMSAxSDVhMyAzIDAgMCAxLTMtMyAxIDEgMCAwIDEgMS0xeiJ9XSxbInBhdGgiLHtkOiJNMTMgMTBINGEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmg5YTEgMSAwIDAgMSAxIDF2NmExIDEgMCAwIDEtMSAxbC0uODEgMy4yNDJhMSAxIDAgMCAxLS45Ny43NThIOCJ9XSxbInBhdGgiLHtkOiJNMTQgNGgzYTEgMSAwIDAgMSAxIDF2MmExIDEgMCAwIDEtMSAxaC0zIn1dLFsicGF0aCIse2Q6Ik0xOCA2aDQifV0sWyJwYXRoIix7ZDoibTUgMTAtMiA4In1dLFsicGF0aCIse2Q6Im03IDE4IDItOCJ9XV19KTt2YXIgc0UsUUVlPWcoKCk9PntzRT1bWyJwYXRoIix7ZDoiTTEwIDExaC4wMSJ9XSxbInBhdGgiLHtkOiJNMTQgNmguMDEifV0sWyJwYXRoIix7ZDoiTTE4IDZoLjAxIn1dLFsicGF0aCIse2Q6Ik02LjUgMTMuMWguMDEifV0sWyJwYXRoIix7ZDoiTTIyIDVjMCA5LTQgMTItNiAxMnMtNi0zLTYtMTJjMC0yIDItMyA2LTNzNiAxIDYgMyJ9XSxbInBhdGgiLHtkOiJNMTcuNCA5LjljLS44LjgtMiAuOC0yLjggMCJ9XSxbInBhdGgiLHtkOiJNMTAuMSA3LjFDOSA3LjIgNy43IDcuNyA2IDguNmMtMy41IDItNC43IDMuOS0zLjcgNS42IDQuNSA3LjggOS41IDguNCAxMS4yIDcuNC45LS41IDEuOS0yLjEgMS45LTQuNyJ9XSxbInBhdGgiLHtkOiJNOS4xIDE2LjVjLjMtMS4xIDEuNC0xLjcgMi40LTEuNCJ9XV19KTt2YXIgaUUsSkVlPWcoKCk9PntpRT1bWyJwYXRoIix7ZDoiTTEwIDEwIDcgNyJ9XSxbInBhdGgiLHtkOiJtMTAgMTQtMyAzIn1dLFsicGF0aCIse2Q6Im0xNCAxMCAzLTMifV0sWyJwYXRoIix7ZDoibTE0IDE0IDMgMyJ9XSxbInBhdGgiLHtkOiJNMTQuMjA1IDQuMTM5YTQgNCAwIDEgMSA1LjQzOSA1Ljg2MyJ9XSxbInBhdGgiLHtkOiJNMTkuNjM3IDE0YTQgNCAwIDEgMS01LjQzMiA1Ljg2OCJ9XSxbInBhdGgiLHtkOiJNNC4zNjcgMTBhNCA0IDAgMSAxIDUuNDM4LTUuODYyIn1dLFsicGF0aCIse2Q6Ik05Ljc5NSAxOS44NjJhNCA0IDAgMSAxLTUuNDI5LTUuODczIn1dLFsicmVjdCIse3g6IjEwIix5OiI4Iix3aWR0aDoiNCIsaGVpZ2h0OiI4IixyeDoiMSJ9XV19KTt2YXIgckUsZVBlPWcoKCk9PntyRT1bWyJwYXRoIix7ZDoiTTEyIDIyYTcgNyAwIDAgMCA3LTdjMC0yLTEtMy45LTMtNS41cy0zLjUtNC00LTYuNWMtLjUgMi41LTIgNC45LTQgNi41QzYgMTEuMSA1IDEzIDUgMTVhNyA3IDAgMCAwIDcgN3oifV1dfSk7dmFyIG9FLHRQZT1nKCgpPT57b0U9W1sicGF0aCIse2Q6Ik0xOC43MTUgMTMuMTg2QzE4LjI5IDExLjg1OCAxNy4zODQgMTAuNjA3IDE2IDkuNWMtMi0xLjYtMy41LTQtNC02LjVhMTAuNyAxMC43IDAgMCAxLS44ODQgMi41ODYifV0sWyJwYXRoIix7ZDoibTIgMiAyMCAyMCJ9XSxbInBhdGgiLHtkOiJNOC43OTUgOC43OTdBMTEgMTEgMCAwIDEgOCA5LjVDNiAxMS4xIDUgMTMgNSAxNWE3IDcgMCAwIDAgMTMuMjIyIDMuMjA4In1dXX0pO3ZhciBuRSxhUGU9ZygoKT0+e25FPVtbInBhdGgiLHtkOiJNNyAxNi4zYzIuMiAwIDQtMS44MyA0LTQuMDUgMC0xLjE2LS41Ny0yLjI2LTEuNzEtMy4xOVM3LjI5IDYuNzUgNyA1LjNjLS4yOSAxLjQ1LTEuMTQgMi44NC0yLjI5IDMuNzZTMyAxMS4xIDMgMTIuMjVjMCAyLjIyIDEuOCA0LjA1IDQgNC4wNXoifV0sWyJwYXRoIix7ZDoiTTEyLjU2IDYuNkExMC45NyAxMC45NyAwIDAgMCAxNCAzLjAyYy41IDIuNSAyIDQuOSA0IDYuNXMzIDMuNSAzIDUuNWE2Ljk4IDYuOTggMCAwIDEtMTEuOTEgNC45NyJ9XV19KTt2YXIgbEUsc1BlPWcoKCk9PntsRT1bWyJwYXRoIix7ZDoibTIgMiA4IDgifV0sWyJwYXRoIix7ZDoibTIyIDItOCA4In1dLFsiZWxsaXBzZSIse2N4OiIxMiIsY3k6IjkiLHJ4OiIxMCIscnk6IjUifV0sWyJwYXRoIix7ZDoiTTcgMTMuNHY3LjkifV0sWyJwYXRoIix7ZDoiTTEyIDE0djgifV0sWyJwYXRoIix7ZDoiTTE3IDEzLjR2Ny45In1dLFsicGF0aCIse2Q6Ik0yIDl2OGExMCA1IDAgMCAwIDIwIDBWOSJ9XV19KTt2YXIgY0UsaVBlPWcoKCk9PntjRT1bWyJwYXRoIix7ZDoiTTE1LjQgMTUuNjNhNy44NzUgNiAxMzUgMSAxIDYuMjMtNi4yMyA0LjUgMy40MyAxMzUgMCAwLTYuMjMgNi4yMyJ9XSxbInBhdGgiLHtkOiJtOC4yOSAxMi43MS0yLjYgMi42YTIuNSAyLjUgMCAxIDAtMS42NSA0LjY1QTIuNSAyLjUgMCAxIDAgOC43IDE4LjNsMi41OS0yLjU5In1dXX0pO3ZhciBkRSxyUGU9ZygoKT0+e2RFPVtbInBhdGgiLHtkOiJNMTcuNTk2IDEyLjc2OGEyIDIgMCAxIDAgMi44MjktMi44MjlsLTEuNzY4LTEuNzY3YTIgMiAwIDAgMCAyLjgyOC0yLjgyOWwtMi44MjgtMi44MjhhMiAyIDAgMCAwLTIuODI5IDIuODI4bC0xLjc2Ny0xLjc2OGEyIDIgMCAxIDAtMi44MjkgMi44Mjl6In1dLFsicGF0aCIse2Q6Im0yLjUgMjEuNSAxLjQtMS40In1dLFsicGF0aCIse2Q6Im0yMC4xIDMuOSAxLjQtMS40In1dLFsicGF0aCIse2Q6Ik01LjM0MyAyMS40ODVhMiAyIDAgMSAwIDIuODI5LTIuODI4bDEuNzY3IDEuNzY4YTIgMiAwIDEgMCAyLjgyOS0yLjgyOWwtNi4zNjQtNi4zNjRhMiAyIDAgMSAwLTIuODI5IDIuODI5bDEuNzY4IDEuNzY3YTIgMiAwIDAgMC0yLjgyOCAyLjgyOXoifV0sWyJwYXRoIix7ZDoibTkuNiAxNC40IDQuOC00LjgifV1dfSk7dmFyIHVFLG9QZT1nKCgpPT57dUU9W1sicGF0aCIse2Q6Ik02IDE4LjVhMy41IDMuNSAwIDEgMCA3IDBjMC0xLjU3LjkyLTIuNTIgMi4wNC0zLjQ2In1dLFsicGF0aCIse2Q6Ik02IDguNWMwLS43NS4xMy0xLjQ3LjM2LTIuMTQifV0sWyJwYXRoIix7ZDoiTTguOCAzLjE1QTYuNSA2LjUgMCAwIDEgMTkgOC41YzAgMS42My0uNDQgMi44MS0xLjA5IDMuNzYifV0sWyJwYXRoIix7ZDoiTTEyLjUgNkEyLjUgMi41IDAgMCAxIDE1IDguNU0xMCAxM2EyIDIgMCAwIDAgMS44Mi0xLjE4In1dLFsibGluZSIse3gxOiIyIix4MjoiMjIiLHkxOiIyIix5MjoiMjIifV1dfSk7dmFyIHBFLG5QZT1nKCgpPT57cEU9W1sicGF0aCIse2Q6Ik02IDguNWE2LjUgNi41IDAgMSAxIDEzIDBjMCA2LTYgNi02IDEwYTMuNSAzLjUgMCAxIDEtNyAwIn1dLFsicGF0aCIse2Q6Ik0xNSA4LjVhMi41IDIuNSAwIDAgMC01IDB2MWEyIDIgMCAxIDEgMCA0In1dXX0pO3ZhciBoRSxsUGU9ZygoKT0+e2hFPVtbInBhdGgiLHtkOiJNNyAzLjM0VjVhMyAzIDAgMCAwIDMgMyJ9XSxbInBhdGgiLHtkOiJNMTEgMjEuOTVWMThhMiAyIDAgMCAwLTItMiAyIDIgMCAwIDEtMi0ydi0xYTIgMiAwIDAgMC0yLTJIMi4wNSJ9XSxbInBhdGgiLHtkOiJNMjEuNTQgMTVIMTdhMiAyIDAgMCAwLTIgMnY0LjU0In1dLFsicGF0aCIse2Q6Ik0xMiAyYTEwIDEwIDAgMSAwIDkuNTQgMTMifV0sWyJwYXRoIix7ZDoiTTIwIDZWNGEyIDIgMCAxIDAtNCAwdjIifV0sWyJyZWN0Iix7d2lkdGg6IjgiLGhlaWdodDoiNSIseDoiMTQiLHk6IjYiLHJ4OiIxIn1dXX0pO3ZhciBJbSxjUGU9ZygoKT0+e0ltPVtbInBhdGgiLHtkOiJNMjEuNTQgMTVIMTdhMiAyIDAgMCAwLTIgMnY0LjU0In1dLFsicGF0aCIse2Q6Ik03IDMuMzRWNWEzIDMgMCAwIDAgMyAzYTIgMiAwIDAgMSAyIDJjMCAxLjEuOSAyIDIgMmEyIDIgMCAwIDAgMi0yYzAtMS4xLjktMiAyLTJoMy4xNyJ9XSxbInBhdGgiLHtkOiJNMTEgMjEuOTVWMThhMiAyIDAgMCAwLTItMmEyIDIgMCAwIDEtMi0ydi0xYTIgMiAwIDAgMC0yLTJIMi4wNSJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9XV19KTt2YXIgZkUsZFBlPWcoKCk9PntmRT1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifV0sWyJwYXRoIix7ZDoiTTEyIDJhNyA3IDAgMSAwIDEwIDEwIn1dXX0pO3ZhciBtRSx1UGU9ZygoKT0+e21FPVtbImNpcmNsZSIse2N4OiIxMS41IixjeToiMTIuNSIscjoiMy41In1dLFsicGF0aCIse2Q6Ik0zIDhjMC0zLjUgMi41LTYgNi41LTYgNSAwIDQuODMgMyA3LjUgNXM1IDIgNSA2YzAgNC41LTIuNSA2LjUtNyA2LjUtMi41IDAtMi41IDIuNS02IDIuNXMtNy0yLTctNS41YzAtMyAxLjUtMyAxLjUtNUMzLjUgMTAgMyA5IDMgOFoifV1dfSk7dmFyIGdFLHBQZT1nKCgpPT57Z0U9W1sicGF0aCIse2Q6Ik0xMiAyQzggMiA0IDggNCAxNGE4IDggMCAwIDAgMTYgMGMwLTYtNC0xMi04LTEyIn1dXX0pO3ZhciBiRSxoUGU9ZygoKT0+e2JFPVtbInBhdGgiLHtkOiJtMiAyIDIwIDIwIn1dLFsicGF0aCIse2Q6Ik0yMCAxNC4zNDdWMTRjMC02LTQtMTItOC0xMi0xLjA3OCAwLTIuMTU3LjQzNi0zLjE1NyAxLjE5In1dLFsicGF0aCIse2Q6Ik02LjIwNiA2LjIxQzQuODcxIDguNCA0IDExLjIgNCAxNGE4IDggMCAwIDAgMTQuNTY4IDQuNTY4In1dXX0pO3ZhciB2RSxmUGU9ZygoKT0+e3ZFPVtbImVsbGlwc2UiLHtjeDoiMTIiLGN5OiIxMiIscng6IjEwIixyeToiNiJ9XV19KTt2YXIgQW0sbVBlPWcoKCk9PntBbT1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMSJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjUiLHI6IjEifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxOSIscjoiMSJ9XV19KTt2YXIgeEUsZ1BlPWcoKCk9Pnt4RT1bWyJwYXRoIix7ZDoiTTUgMTVhNi41IDYuNSAwIDAgMSA3IDAgNi41IDYuNSAwIDAgMCA3IDAifV0sWyJwYXRoIix7ZDoiTTUgOWE2LjUgNi41IDAgMCAxIDcgMCA2LjUgNi41IDAgMCAwIDcgMCJ9XV19KTt2YXIgTm0sYlBlPWcoKCk9PntObT1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMSJ9XSxbImNpcmNsZSIse2N4OiIxOSIsY3k6IjEyIixyOiIxIn1dLFsiY2lyY2xlIix7Y3g6IjUiLGN5OiIxMiIscjoiMSJ9XV19KTt2YXIgeUUsdlBlPWcoKCk9Pnt5RT1bWyJsaW5lIix7eDE6IjUiLHgyOiIxOSIseTE6IjkiLHkyOiI5In1dLFsibGluZSIse3gxOiI1Iix4MjoiMTkiLHkxOiIxNSIseTI6IjE1In1dLFsibGluZSIse3gxOiIxOSIseDI6IjUiLHkxOiI1Iix5MjoiMTkifV1dfSk7dmFyIHdFLHhQZT1nKCgpPT57d0U9W1sibGluZSIse3gxOiI1Iix4MjoiMTkiLHkxOiI5Iix5MjoiOSJ9XSxbImxpbmUiLHt4MToiNSIseDI6IjE5Iix5MToiMTUiLHkyOiIxNSJ9XV19KTt2YXIga0UseVBlPWcoKCk9PntrRT1bWyJwYXRoIix7ZDoiTTIxIDIxSDhhMiAyIDAgMCAxLTEuNDItLjU4N2wtMy45OTQtMy45OTlhMiAyIDAgMCAxIDAtMi44MjhsMTAtMTBhMiAyIDAgMCAxIDIuODI5IDBsNS45OTkgNmEyIDIgMCAwIDEgMCAyLjgyOEwxMi44MzQgMjEifV0sWyJwYXRoIix7ZDoibTUuMDgyIDExLjA5IDguODI4IDguODI4In1dXX0pO3ZhciBTRSx3UGU9ZygoKT0+e1NFPVtbInBhdGgiLHtkOiJtMTUgMjAgMy0zaDJhMiAyIDAgMCAwIDItMlY2YTIgMiAwIDAgMC0yLTJINGEyIDIgMCAwIDAtMiAydjlhMiAyIDAgMCAwIDIgMmgybDMgM3oifV0sWyJwYXRoIix7ZDoiTTYgOHYxIn1dLFsicGF0aCIse2Q6Ik0xMCA4djEifV0sWyJwYXRoIix7ZDoiTTE0IDh2MSJ9XSxbInBhdGgiLHtkOiJNMTggOHYxIn1dXX0pO3ZhciBfRSxrUGU9ZygoKT0+e19FPVtbInBhdGgiLHtkOiJNNCAxMGgxMiJ9XSxbInBhdGgiLHtkOiJNNCAxNGg5In1dLFsicGF0aCIse2Q6Ik0xOSA2YTcuNyA3LjcgMCAwIDAtNS4yLTJBNy45IDcuOSAwIDAgMCA2IDEyYzAgNC40IDMuNSA4IDcuOCA4IDIgMCAzLjgtLjggNS4yLTIifV1dfSk7dmFyIE1FLFNQZT1nKCgpPT57TUU9W1sicGF0aCIse2Q6Ik0xNCAxM2gyYTIgMiAwIDAgMSAyIDJ2MmEyIDIgMCAwIDAgNCAwdi02Ljk5OGEyIDIgMCAwIDAtLjU5LTEuNDJMMTggNSJ9XSxbInBhdGgiLHtkOiJNMTQgMjFWNWEyIDIgMCAwIDAtMi0ySDVhMiAyIDAgMCAwLTIgMnYxNiJ9XSxbInBhdGgiLHtkOiJNMiAyMWgxMyJ9XSxbInBhdGgiLHtkOiJNMyA3aDExIn1dLFsicGF0aCIse2Q6Im05IDExLTIgM2gzbC0yIDMifV1dfSk7dmFyIHpFLF9QZT1nKCgpPT57ekU9W1sicGF0aCIse2Q6Im0xNSAxNSA2IDYifV0sWyJwYXRoIix7ZDoibTE1IDkgNi02In1dLFsicGF0aCIse2Q6Ik0yMSAxNnY1aC01In1dLFsicGF0aCIse2Q6Ik0yMSA4VjNoLTUifV0sWyJwYXRoIix7ZDoiTTMgMTZ2NWg1In1dLFsicGF0aCIse2Q6Im0zIDIxIDYtNiJ9XSxbInBhdGgiLHtkOiJNMyA4VjNoNSJ9XSxbInBhdGgiLHtkOiJNOSA5IDMgMyJ9XV19KTt2YXIgQ0UsTVBlPWcoKCk9PntDRT1bWyJwYXRoIix7ZDoiTTE1IDNoNnY2In1dLFsicGF0aCIse2Q6Ik0xMCAxNCAyMSAzIn1dLFsicGF0aCIse2Q6Ik0xOCAxM3Y2YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0yVjhhMiAyIDAgMCAxIDItMmg2In1dXX0pO3ZhciBURSx6UGU9ZygoKT0+e1RFPVtbInBhdGgiLHtkOiJtMTUgMTgtLjcyMi0zLjI1In1dLFsicGF0aCIse2Q6Ik0yIDhhMTAuNjQ1IDEwLjY0NSAwIDAgMCAyMCAwIn1dLFsicGF0aCIse2Q6Im0yMCAxNS0xLjcyNi0yLjA1In1dLFsicGF0aCIse2Q6Im00IDE1IDEuNzI2LTIuMDUifV0sWyJwYXRoIix7ZDoibTkgMTggLjcyMi0zLjI1In1dXX0pO3ZhciAkRSxDUGU9ZygoKT0+eyRFPVtbInBhdGgiLHtkOiJNMTAuNzMzIDUuMDc2YTEwLjc0NCAxMC43NDQgMCAwIDEgMTEuMjA1IDYuNTc1IDEgMSAwIDAgMSAwIC42OTYgMTAuNzQ3IDEwLjc0NyAwIDAgMS0xLjQ0NCAyLjQ5In1dLFsicGF0aCIse2Q6Ik0xNC4wODQgMTQuMTU4YTMgMyAwIDAgMS00LjI0Mi00LjI0MiJ9XSxbInBhdGgiLHtkOiJNMTcuNDc5IDE3LjQ5OWExMC43NSAxMC43NSAwIDAgMS0xNS40MTctNS4xNTEgMSAxIDAgMCAxIDAtLjY5NiAxMC43NSAxMC43NSAwIDAgMSA0LjQ0Ni01LjE0MyJ9XSxbInBhdGgiLHtkOiJtMiAyIDIwIDIwIn1dXX0pO3ZhciBERSxUUGU9ZygoKT0+e0RFPVtbInBhdGgiLHtkOiJNMi4wNjIgMTIuMzQ4YTEgMSAwIDAgMSAwLS42OTYgMTAuNzUgMTAuNzUgMCAwIDEgMTkuODc2IDAgMSAxIDAgMCAxIDAgLjY5NiAxMC43NSAxMC43NSAwIDAgMS0xOS44NzYgMCJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIzIn1dXX0pO3ZhciBMRSwkUGU9ZygoKT0+e0xFPVtbInBhdGgiLHtkOiJNMTIgMTZoLjAxIn1dLFsicGF0aCIse2Q6Ik0xNiAxNmguMDEifV0sWyJwYXRoIix7ZDoiTTMgMTlhMiAyIDAgMCAwIDIgMmgxNGEyIDIgMCAwIDAgMi0yVjguNWEuNS41IDAgMCAwLS43NjktLjQyMmwtNC40NjIgMi44NDRBLjUuNSAwIDAgMSAxNSAxMC41di0yYS41LjUgMCAwIDAtLjc2OS0uNDIyTDkuNzcgMTAuOTIyQS41LjUgMCAwIDEgOSAxMC41VjVhMiAyIDAgMCAwLTItMkg1YTIgMiAwIDAgMC0yIDJ6In1dLFsicGF0aCIse2Q6Ik04IDE2aC4wMSJ9XV19KTt2YXIgRUUsRFBlPWcoKCk9PntFRT1bWyJwYXRoIix7ZDoiTTEwLjgyNyAxNi4zNzlhNi4wODIgNi4wODIgMCAwIDEtOC42MTgtNy4wMDJsNS40MTIgMS40NWE2LjA4MiA2LjA4MiAwIDAgMSA3LjAwMi04LjYxOGwtMS40NSA1LjQxMmE2LjA4MiA2LjA4MiAwIDAgMSA4LjYxOCA3LjAwMmwtNS40MTItMS40NWE2LjA4MiA2LjA4MiAwIDAgMS03LjAwMiA4LjYxOGwxLjQ1LTUuNDEyWiJ9XSxbInBhdGgiLHtkOiJNMTIgMTJ2LjAxIn1dXX0pO3ZhciBQRSxMUGU9ZygoKT0+e1BFPVtbInBhdGgiLHtkOiJNMTIgNmEyIDIgMCAwIDEgMy40MTQtMS40MTRsNiA2YTIgMiAwIDAgMSAwIDIuODI4bC02IDZBMiAyIDAgMCAxIDEyIDE4eiJ9XSxbInBhdGgiLHtkOiJNMiA2YTIgMiAwIDAgMSAzLjQxNC0xLjQxNGw2IDZhMiAyIDAgMCAxIDAgMi44MjhsLTYgNkEyIDIgMCAwIDEgMiAxOHoifV1dfSk7dmFyIElFLEVQZT1nKCgpPT57SUU9W1sicGF0aCIse2Q6Ik0xMi42NyAxOWEyIDIgMCAwIDAgMS40MTYtLjU4OGw2LjE1NC02LjE3MmE2IDYgMCAwIDAtOC40OS04LjQ5TDUuNTg2IDkuOTE0QTIgMiAwIDAgMCA1IDExLjMyOFYxOGExIDEgMCAwIDAgMSAxeiJ9XSxbInBhdGgiLHtkOiJNMTYgOCAyIDIyIn1dLFsicGF0aCIse2Q6Ik0xNy41IDE1SDkifV1dfSk7dmFyIEFFLFBQZT1nKCgpPT57QUU9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjIifV0sWyJwYXRoIix7ZDoiTTEyIDJ2NCJ9XSxbInBhdGgiLHtkOiJtNi44IDE1LTMuNSAyIn1dLFsicGF0aCIse2Q6Im0yMC43IDctMy41IDIifV0sWyJwYXRoIix7ZDoiTTYuOCA5IDMuMyA3In1dLFsicGF0aCIse2Q6Im0yMC43IDE3LTMuNS0yIn1dLFsicGF0aCIse2Q6Im05IDIyIDMtOCAzIDgifV0sWyJwYXRoIix7ZDoiTTggMjJoOCJ9XSxbInBhdGgiLHtkOiJNMTggMTguN2E5IDkgMCAxIDAtMTIgMCJ9XV19KTt2YXIgTkUsSVBlPWcoKCk9PntORT1bWyJwYXRoIix7ZDoiTTQgMyAyIDV2MTVjMCAuNi40IDEgMSAxaDJjLjYgMCAxLS40IDEtMVY1WiJ9XSxbInBhdGgiLHtkOiJNNiA4aDQifV0sWyJwYXRoIix7ZDoiTTYgMThoNCJ9XSxbInBhdGgiLHtkOiJtMTIgMy0yIDJ2MTVjMCAuNi40IDEgMSAxaDJjLjYgMCAxLS40IDEtMVY1WiJ9XSxbInBhdGgiLHtkOiJNMTQgOGg0In1dLFsicGF0aCIse2Q6Ik0xNCAxOGg0In1dLFsicGF0aCIse2Q6Im0yMCAzLTIgMnYxNWMwIC42LjQgMSAxIDFoMmMuNiAwIDEtLjQgMS0xVjVaIn1dXX0pO3ZhciBSRSxBUGU9ZygoKT0+e1JFPVtbInBhdGgiLHtkOiJNMTMuNjU5IDIySDE4YTIgMiAwIDAgMCAyLTJWOGEyLjQgMi40IDAgMCAwLS43MDYtMS43MDZsLTMuNTg4LTMuNTg4QTIuNCAyLjQgMCAwIDAgMTQgMkg2YTIgMiAwIDAgMC0yIDJ2MTEuNSJ9XSxbInBhdGgiLHtkOiJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSJ9XSxbInBhdGgiLHtkOiJNOCAxMnYtMSJ9XSxbInBhdGgiLHtkOiJNOCAxOHYtMiJ9XSxbInBhdGgiLHtkOiJNOCA3VjYifV0sWyJjaXJjbGUiLHtjeDoiOCIsY3k6IjIwIixyOiIyIn1dXX0pO3ZhciBSbSxOUGU9ZygoKT0+e1JtPVtbInBhdGgiLHtkOiJNNiAyMmEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmg4YTIuNCAyLjQgMCAwIDEgMS43MDQuNzA2bDMuNTg4IDMuNTg4QTIuNCAyLjQgMCAwIDEgMjAgOHYxMmEyIDIgMCAwIDEtMiAyeiJ9XSxbInBhdGgiLHtkOiJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSJ9XSxbInBhdGgiLHtkOiJtOCAxOCA0LTQifV0sWyJwYXRoIix7ZDoiTTggMTB2OGg4In1dXX0pO3ZhciBPbSxSUGU9ZygoKT0+e09tPVtbInBhdGgiLHtkOiJNMTMgMjJoNWEyIDIgMCAwIDAgMi0yVjhhMi40IDIuNCAwIDAgMC0uNzA2LTEuNzA2bC0zLjU4OC0zLjU4OEEyLjQgMi40IDAgMCAwIDE0IDJINmEyIDIgMCAwIDAtMiAydjMuMyJ9XSxbInBhdGgiLHtkOiJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSJ9XSxbInBhdGgiLHtkOiJtNy42OSAxNi40NzkgMS4yOSA0Ljg4YS41LjUgMCAwIDEtLjY5OC41OTFsLTEuODQzLS44NDlhMSAxIDAgMCAwLS44NzkuMDAxbC0xLjg0Ni44NWEuNS41IDAgMCAxLS42OTItLjU5M2wxLjI5LTQuODgifV0sWyJjaXJjbGUiLHtjeDoiNiIsY3k6IjE0IixyOiIzIn1dXX0pO3ZhciBPRSxPUGU9ZygoKT0+e09FPVtbInBhdGgiLHtkOiJNMTQuNSAyMkgxOGEyIDIgMCAwIDAgMi0yVjhhMi40IDIuNCAwIDAgMC0uNzA2LTEuNzA2bC0zLjU4OC0zLjU4OEEyLjQgMi40IDAgMCAwIDE0IDJINmEyIDIgMCAwIDAtMiAydjMuOCJ9XSxbInBhdGgiLHtkOiJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSJ9XSxbInBhdGgiLHtkOiJNMTEuNyAxNC4yIDcgMTdsLTQuNy0yLjgifV0sWyJwYXRoIix7ZDoiTTMgMTMuMWEyIDIgMCAwIDAtLjk5OSAxLjc2djMuMjRhMiAyIDAgMCAwIC45NjkgMS43OEw2IDIxLjdhMiAyIDAgMCAwIDIuMDMuMDFMMTEgMTkuOWEyIDIgMCAwIDAgMS0xLjc2VjE0LjlhMiAyIDAgMCAwLS45Ny0xLjc4TDggMTEuM2EyIDIgMCAwIDAtMi4wMy0uMDF6In1dLFsicGF0aCIse2Q6Ik03IDE3djUifV1dfSk7dmFyIEZtLEZQZT1nKCgpPT57Rm09W1sicGF0aCIse2Q6Ik02IDIyYTIgMiAwIDAgMS0yLTJWNGEyIDIgMCAwIDEgMi0yaDhhMi40IDIuNCAwIDAgMSAxLjcwNC43MDZsMy41ODggMy41ODhBMi40IDIuNCAwIDAgMSAyMCA4djEyYTIgMiAwIDAgMS0yIDJ6In1dLFsicGF0aCIse2Q6Ik0xNCAydjVhMSAxIDAgMCAwIDEgMWg1In1dLFsicGF0aCIse2Q6Ik0xMCAxMmExIDEgMCAwIDAtMSAxdjFhMSAxIDAgMCAxLTEgMSAxIDEgMCAwIDEgMSAxdjFhMSAxIDAgMCAwIDEgMSJ9XSxbInBhdGgiLHtkOiJNMTQgMThhMSAxIDAgMCAwIDEtMXYtMWExIDEgMCAwIDEgMS0xIDEgMSAwIDAgMS0xLTF2LTFhMSAxIDAgMCAwLTEtMSJ9XV19KTt2YXIgQm0sQlBlPWcoKCk9PntCbT1bWyJwYXRoIix7ZDoiTTYgMjJhMiAyIDAgMCAxLTItMlY0YTIgMiAwIDAgMSAyLTJoOGEyLjQgMi40IDAgMCAxIDEuNzA0LjcwNmwzLjU4OCAzLjU4OEEyLjQgMi40IDAgMCAxIDIwIDh2MTJhMiAyIDAgMCAxLTIgMnoifV0sWyJwYXRoIix7ZDoiTTE0IDJ2NWExIDEgMCAwIDAgMSAxaDUifV0sWyJwYXRoIix7ZDoiTTggMTh2LTIifV0sWyJwYXRoIix7ZDoiTTEyIDE4di00In1dLFsicGF0aCIse2Q6Ik0xNiAxOHYtNiJ9XV19KTt2YXIgSG0sSFBlPWcoKCk9PntIbT1bWyJwYXRoIix7ZDoiTTE0IDIyaDRhMiAyIDAgMCAwIDItMlY4YTIuNCAyLjQgMCAwIDAtLjcwNi0xLjcwNmwtMy41ODgtMy41ODhBMi40IDIuNCAwIDAgMCAxNCAySDZhMiAyIDAgMCAwLTIgMnY2In1dLFsicGF0aCIse2Q6Ik0xNCAydjVhMSAxIDAgMCAwIDEgMWg1In1dLFsicGF0aCIse2Q6Ik01IDE0YTEgMSAwIDAgMC0xIDF2MmExIDEgMCAwIDEtMSAxIDEgMSAwIDAgMSAxIDF2MmExIDEgMCAwIDAgMSAxIn1dLFsicGF0aCIse2Q6Ik05IDIyYTEgMSAwIDAgMCAxLTF2LTJhMSAxIDAgMCAxIDEtMSAxIDEgMCAwIDEtMS0xdi0yYTEgMSAwIDAgMC0xLTEifV1dfSk7dmFyIHFtLHFQZT1nKCgpPT57cW09W1sicGF0aCIse2Q6Ik02IDIyYTIgMiAwIDAgMS0yLTJWNGEyIDIgMCAwIDEgMi0yaDhhMi40IDIuNCAwIDAgMSAxLjcwNC43MDZsMy41ODggMy41ODhBMi40IDIuNCAwIDAgMSAyMCA4djEyYTIgMiAwIDAgMS0yIDJ6In1dLFsicGF0aCIse2Q6Ik0xNCAydjVhMSAxIDAgMCAwIDEgMWg1In1dLFsicGF0aCIse2Q6Ik04IDE4di0xIn1dLFsicGF0aCIse2Q6Ik0xMiAxOHYtNiJ9XSxbInBhdGgiLHtkOiJNMTYgMTh2LTMifV1dfSk7dmFyIGptLGpQZT1nKCgpPT57am09W1sicGF0aCIse2Q6Ik02IDIyYTIgMiAwIDAgMS0yLTJWNGEyIDIgMCAwIDEgMi0yaDhhMi40IDIuNCAwIDAgMSAxLjcwNC43MDZsMy41ODggMy41ODhBMi40IDIuNCAwIDAgMSAyMCA4djEyYTIgMiAwIDAgMS0yIDJ6In1dLFsicGF0aCIse2Q6Ik0xNCAydjVhMSAxIDAgMCAwIDEgMWg1In1dLFsicGF0aCIse2Q6Im0xNiAxMy0zLjUgMy41LTItMkw4IDE3In1dXX0pO3ZhciBWbSxWUGU9ZygoKT0+e1ZtPVtbInBhdGgiLHtkOiJNMTUuOTQxIDIySDE4YTIgMiAwIDAgMCAyLTJWOGEyLjQgMi40IDAgMCAwLS43MDYtMS43MDRsLTMuNTg4LTMuNTg4QTIuNCAyLjQgMCAwIDAgMTQgMkg2YTIgMiAwIDAgMC0yIDJ2My41MTIifV0sWyJwYXRoIix7ZDoiTTE0IDJ2NWExIDEgMCAwIDAgMSAxaDUifV0sWyJwYXRoIix7ZDoiTTQuMDE3IDExLjUxMmE2IDYgMCAxIDAgOC40NjYgOC40NzUifV0sWyJwYXRoIix7ZDoiTTkgMTZhMSAxIDAgMCAxLTEtMXYtNGMwLS41NTIuNDUtMS4wMDguOTk1LS45MTdhNiA2IDAgMCAxIDQuOTIyIDQuOTIyYy4wOTEuNTQ0LS4zNjUuOTk1LS45MTcuOTk1eiJ9XV19KTt2YXIgVW0sVVBlPWcoKCk9PntVbT1bWyJwYXRoIix7ZDoiTTEwLjUgMjJINmEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmg4YTIuNCAyLjQgMCAwIDEgMS43MDYuNzA2bDMuNTg4IDMuNTg4QTIuNCAyLjQgMCAwIDEgMjAgOHY2In1dLFsicGF0aCIse2Q6Ik0xNCAydjVhMSAxIDAgMCAwIDEgMWg1In1dLFsicGF0aCIse2Q6Im0xNCAyMCAyIDIgNC00In1dXX0pO3ZhciBGRSxXUGU9ZygoKT0+e0ZFPVtbInBhdGgiLHtkOiJNNiAyMmEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmg4YTIuNCAyLjQgMCAwIDEgMS43MDQuNzA2bDMuNTg4IDMuNTg4QTIuNCAyLjQgMCAwIDEgMjAgOHYxMmEyIDIgMCAwIDEtMiAyeiJ9XSxbInBhdGgiLHtkOiJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSJ9XSxbInBhdGgiLHtkOiJtOSAxNSAyIDIgNC00In1dXX0pO3ZhciBCRSxHUGU9ZygoKT0+e0JFPVtbInBhdGgiLHtkOiJNMTYgMjJoMmEyIDIgMCAwIDAgMi0yVjhhMi40IDIuNCAwIDAgMC0uNzA2LTEuNzA2bC0zLjU4OC0zLjU4OEEyLjQgMi40IDAgMCAwIDE0IDJINmEyIDIgMCAwIDAtMiAydjIuODUifV0sWyJwYXRoIix7ZDoiTTE0IDJ2NWExIDEgMCAwIDAgMSAxaDUifV0sWyJwYXRoIix7ZDoiTTggMTR2Mi4ybDEuNiAxIn1dLFsiY2lyY2xlIix7Y3g6IjgiLGN5OiIxNiIscjoiNiJ9XV19KTt2YXIgV20sS1BlPWcoKCk9PntXbT1bWyJwYXRoIix7ZDoiTTQgMTIuMTVWNGEyIDIgMCAwIDEgMi0yaDhhMi40IDIuNCAwIDAgMSAxLjcwNi43MDZsMy41ODggMy41ODhBMi40IDIuNCAwIDAgMSAyMCA4djEyYTIgMiAwIDAgMS0yIDJoLTMuMzUifV0sWyJwYXRoIix7ZDoiTTE0IDJ2NWExIDEgMCAwIDAgMSAxaDUifV0sWyJwYXRoIix7ZDoibTUgMTYtMyAzIDMgMyJ9XSxbInBhdGgiLHtkOiJtOSAyMiAzLTMtMy0zIn1dXX0pO3ZhciBIRSxZUGU9ZygoKT0+e0hFPVtbInBhdGgiLHtkOiJNNiAyMmEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmg4YTIuNCAyLjQgMCAwIDEgMS43MDQuNzA2bDMuNTg4IDMuNTg4QTIuNCAyLjQgMCAwIDEgMjAgOHYxMmEyIDIgMCAwIDEtMiAyeiJ9XSxbInBhdGgiLHtkOiJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSJ9XSxbInBhdGgiLHtkOiJNMTAgMTIuNSA4IDE1bDIgMi41In1dLFsicGF0aCIse2Q6Im0xNCAxMi41IDIgMi41LTIgMi41In1dXX0pO3ZhciBHbSxaUGU9ZygoKT0+e0dtPVtbInBhdGgiLHtkOiJNMTUgOGExIDEgMCAwIDEtMS0xVjJhMi40IDIuNCAwIDAgMSAxLjcwNC43MDZsMy41ODggMy41ODhBMi40IDIuNCAwIDAgMSAyMCA4eiJ9XSxbInBhdGgiLHtkOiJNMjAgOHYxMmEyIDIgMCAwIDEtMiAyaC00LjE4MiJ9XSxbInBhdGgiLHtkOiJtMy4zMDUgMTkuNTMuOTIzLS4zODIifV0sWyJwYXRoIix7ZDoiTTQgMTAuNTkyVjRhMiAyIDAgMCAxIDItMmg4In1dLFsicGF0aCIse2Q6Im00LjIyOCAxNi44NTItLjkyNC0uMzgzIn1dLFsicGF0aCIse2Q6Im01Ljg1MiAxNS4yMjgtLjM4My0uOTIzIn1dLFsicGF0aCIse2Q6Im01Ljg1MiAyMC43NzItLjM4My45MjQifV0sWyJwYXRoIix7ZDoibTguMTQ4IDE1LjIyOC4zODMtLjkyMyJ9XSxbInBhdGgiLHtkOiJtOC41MyAyMS42OTYtLjM4Mi0uOTI0In1dLFsicGF0aCIse2Q6Im05Ljc3MyAxNi44NTIuOTIyLS4zODMifV0sWyJwYXRoIix7ZDoibTkuNzczIDE5LjE0OC45MjIuMzgzIn1dLFsiY2lyY2xlIix7Y3g6IjciLGN5OiIxOCIscjoiMyJ9XV19KTt2YXIgcUUsWFBlPWcoKCk9PntxRT1bWyJwYXRoIix7ZDoiTTYgMjJhMiAyIDAgMCAxLTItMlY0YTIgMiAwIDAgMSAyLTJoOGEyLjQgMi40IDAgMCAxIDEuNzA0LjcwNmwzLjU4OCAzLjU4OEEyLjQgMi40IDAgMCAxIDIwIDh2MTJhMiAyIDAgMCAxLTIgMnoifV0sWyJwYXRoIix7ZDoiTTkgMTBoNiJ9XSxbInBhdGgiLHtkOiJNMTIgMTNWNyJ9XSxbInBhdGgiLHtkOiJNOSAxN2g2In1dXX0pO3ZhciBqRSxRUGU9ZygoKT0+e2pFPVtbInBhdGgiLHtkOiJNNCAxMlY0YTIgMiAwIDAgMSAyLTJoOGEyLjQgMi40IDAgMCAxIDEuNzA2LjcwNmwzLjU4OCAzLjU4OEEyLjQgMi40IDAgMCAxIDIwIDh2MTJhMiAyIDAgMCAxLTIgMiJ9XSxbInBhdGgiLHtkOiJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSJ9XSxbInBhdGgiLHtkOiJNMTAgMTZoMnY2In1dLFsicGF0aCIse2Q6Ik0xMCAyMmg0In1dLFsicmVjdCIse3g6IjIiLHk6IjE2Iix3aWR0aDoiNCIsaGVpZ2h0OiI2IixyeDoiMiJ9XV19KTt2YXIgVkUsSlBlPWcoKCk9PntWRT1bWyJwYXRoIix7ZDoiTTYgMjJhMiAyIDAgMCAxLTItMlY0YTIgMiAwIDAgMSAyLTJoOGEyLjQgMi40IDAgMCAxIDEuNzA0LjcwNmwzLjU4OCAzLjU4OEEyLjQgMi40IDAgMCAxIDIwIDh2MTJhMiAyIDAgMCAxLTIgMnoifV0sWyJwYXRoIix7ZDoiTTE0IDJ2NWExIDEgMCAwIDAgMSAxaDUifV0sWyJwYXRoIix7ZDoiTTEyIDE4di02In1dLFsicGF0aCIse2Q6Im05IDE1IDMgMyAzLTMifV1dfSk7dmFyIEttLGVJZT1nKCgpPT57S209W1sicGF0aCIse2Q6Ik02IDIyYTIgMiAwIDAgMS0yLTJWNGEyIDIgMCAwIDEgMi0yaDhhMi40IDIuNCAwIDAgMSAxLjcwNC43MDZsMy41ODggMy41ODhBMi40IDIuNCAwIDAgMSAyMCA4djEyYTIgMiAwIDAgMS0yIDJ6In1dLFsicGF0aCIse2Q6Ik0xMiA5djQifV0sWyJwYXRoIix7ZDoiTTEyIDE3aC4wMSJ9XV19KTt2YXIgVTAsdEllPWcoKCk9PntVMD1bWyJwYXRoIix7ZDoiTTQgNi44MzVWNGEyIDIgMCAwIDEgMi0yaDhhMi40IDIuNCAwIDAgMSAxLjcwNi43MDZsMy41ODggMy41ODhBMi40IDIuNCAwIDAgMSAyMCA4djEyYTIgMiAwIDAgMS0yIDJoLS4zNDMifV0sWyJwYXRoIix7ZDoiTTE0IDJ2NWExIDEgMCAwIDAgMSAxaDUifV0sWyJwYXRoIix7ZDoiTTIgMTlhMiAyIDAgMCAxIDQgMHYxYTIgMiAwIDAgMS00IDB2LTRhNiA2IDAgMCAxIDEyIDB2NGEyIDIgMCAwIDEtNCAwdi0xYTIgMiAwIDAgMSA0IDAifV1dfSk7dmFyIFVFLGFJZT1nKCgpPT57VUU9W1sicGF0aCIse2Q6Ik0xMyAyMmg1YTIgMiAwIDAgMCAyLTJWOGEyLjQgMi40IDAgMCAwLS43MDYtMS43MDZsLTMuNTg4LTMuNTg4QTIuNCAyLjQgMCAwIDAgMTQgMkg2YTIgMiAwIDAgMC0yIDJ2NyJ9XSxbInBhdGgiLHtkOiJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSJ9XSxbInBhdGgiLHtkOiJNMy42MiAxOC44QTIuMjUgMi4yNSAwIDEgMSA3IDE1LjgzNmEyLjI1IDIuMjUgMCAxIDEgMy4zOCAyLjk2NmwtMi42MjYgMi44NTZhMSAxIDAgMCAxLTEuNTA3IDB6In1dXX0pO3ZhciBXRSxzSWU9ZygoKT0+e1dFPVtbInBhdGgiLHtkOiJNNiAyMmEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmg4YTIuNCAyLjQgMCAwIDEgMS43MDQuNzA2bDMuNTg4IDMuNTg4QTIuNCAyLjQgMCAwIDEgMjAgOHYxMmEyIDIgMCAwIDEtMiAyeiJ9XSxbInBhdGgiLHtkOiJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSJ9XSxbImNpcmNsZSIse2N4OiIxMCIsY3k6IjEyIixyOiIyIn1dLFsicGF0aCIse2Q6Im0yMCAxNy0xLjI5Ni0xLjI5NmEyLjQxIDIuNDEgMCAwIDAtMy40MDggMEw5IDIyIn1dXX0pO3ZhciBHRSxpSWU9ZygoKT0+e0dFPVtbInBhdGgiLHtkOiJNNCAxMVY0YTIgMiAwIDAgMSAyLTJoOGEyLjQgMi40IDAgMCAxIDEuNzA2LjcwNmwzLjU4OCAzLjU4OEEyLjQgMi40IDAgMCAxIDIwIDh2MTJhMiAyIDAgMCAxLTIgMkg2YTIgMiAwIDAgMS0yLTJ2LTEifV0sWyJwYXRoIix7ZDoiTTE0IDJ2NWExIDEgMCAwIDAgMSAxaDUifV0sWyJwYXRoIix7ZDoiTTIgMTVoMTAifV0sWyJwYXRoIix7ZDoibTkgMTggMy0zLTMtMyJ9XV19KTt2YXIgWW0sckllPWcoKCk9PntZbT1bWyJwYXRoIix7ZDoiTTE0IDJ2NWExIDEgMCAwIDAgMSAxaDUifV0sWyJwYXRoIix7ZDoiTTQgMTJ2NiJ9XSxbInBhdGgiLHtkOiJNNCAxNGgyIn1dLFsicGF0aCIse2Q6Ik05LjY1IDIySDE4YTIgMiAwIDAgMCAyLTJWOGEyLjQgMi40IDAgMCAwLS43MDYtMS43MDZsLTMuNTg4LTMuNTg4QTIuNCAyLjQgMCAwIDAgMTQgMkg2YTIgMiAwIDAgMC0yIDJ2NCJ9XSxbImNpcmNsZSIse2N4OiI0IixjeToiMjAiLHI6IjIifV1dfSk7dmFyIFptLG9JZT1nKCgpPT57Wm09W1sicGF0aCIse2Q6Ik00IDkuOFY0YTIgMiAwIDAgMSAyLTJoOGEyLjQgMi40IDAgMCAxIDEuNzA2LjcwNmwzLjU4OCAzLjU4OEEyLjQgMi40IDAgMCAxIDIwIDh2MTJhMiAyIDAgMCAxLTIgMmgtMyJ9XSxbInBhdGgiLHtkOiJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSJ9XSxbInBhdGgiLHtkOiJNOSAxN3YtMmEyIDIgMCAwIDAtNCAwdjIifV0sWyJyZWN0Iix7d2lkdGg6IjgiLGhlaWdodDoiNSIseDoiMyIseToiMTciLHJ4OiIxIn1dXX0pO3ZhciBYbSxuSWU9ZygoKT0+e1htPVtbInBhdGgiLHtkOiJNMjAgMTRWOGEyLjQgMi40IDAgMCAwLS43MDYtMS43MDZsLTMuNTg4LTMuNTg4QTIuNCAyLjQgMCAwIDAgMTQgMkg2YTIgMiAwIDAgMC0yIDJ2MTZhMiAyIDAgMCAwIDIgMmgxMiJ9XSxbInBhdGgiLHtkOiJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSJ9XSxbInBhdGgiLHtkOiJNMTQgMThoNiJ9XV19KTt2YXIgS0UsbEllPWcoKCk9PntLRT1bWyJwYXRoIix7ZDoiTTYgMjJhMiAyIDAgMCAxLTItMlY0YTIgMiAwIDAgMSAyLTJoOGEyLjQgMi40IDAgMCAxIDEuNzA0LjcwNmwzLjU4OCAzLjU4OEEyLjQgMi40IDAgMCAxIDIwIDh2MTJhMiAyIDAgMCAxLTIgMnoifV0sWyJwYXRoIix7ZDoiTTE0IDJ2NWExIDEgMCAwIDAgMSAxaDUifV0sWyJwYXRoIix7ZDoiTTkgMTVoNiJ9XV19KTt2YXIgWUUsY0llPWcoKCk9PntZRT1bWyJwYXRoIix7ZDoiTTExLjY1IDIySDE4YTIgMiAwIDAgMCAyLTJWOGEyLjQgMi40IDAgMCAwLS43MDYtMS43MDZsLTMuNTg4LTMuNTg4QTIuNCAyLjQgMCAwIDAgMTQgMkg2YTIgMiAwIDAgMC0yIDJ2MTAuMzUifV0sWyJwYXRoIix7ZDoiTTE0IDJ2NWExIDEgMCAwIDAgMSAxaDUifV0sWyJwYXRoIix7ZDoiTTggMjB2LTdsMyAxLjQ3NCJ9XSxbImNpcmNsZSIse2N4OiI2IixjeToiMjAiLHI6IjIifV1dfSk7dmFyIFpFLGRJZT1nKCgpPT57WkU9W1sicGF0aCIse2Q6Ik00LjIyNiAyMC45MjVBMiAyIDAgMCAwIDYgMjJoMTJhMiAyIDAgMCAwIDItMlY4YTIuNCAyLjQgMCAwIDAtLjcwNi0xLjcwNmwtMy41ODgtMy41ODhBMi40IDIuNCAwIDAgMCAxNCAySDZhMiAyIDAgMCAwLTIgMnYzLjEyNyJ9XSxbInBhdGgiLHtkOiJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSJ9XSxbInBhdGgiLHtkOiJtNSAxMS0zIDMifV0sWyJwYXRoIix7ZDoibTUgMTctMy0zaDEwIn1dXX0pO3ZhciBRbSx1SWU9ZygoKT0+e1FtPVtbInBhdGgiLHtkOiJNMTQuMzY0IDEzLjYzNGEyIDIgMCAwIDAtLjUwNi44NTRsLS44MzcgMi44N2EuNS41IDAgMCAwIC42Mi42MmwyLjg3LS44MzdhMiAyIDAgMCAwIC44NTQtLjUwNmw0LjAxMy00LjAwOWExIDEgMCAwIDAtMy4wMDQtMy4wMDR6In1dLFsicGF0aCIse2Q6Ik0xNC40ODcgNy44NThBMSAxIDAgMCAxIDE0IDdWMiJ9XSxbInBhdGgiLHtkOiJNMjAgMTkuNjQ1VjIwYTIgMiAwIDAgMS0yIDJINmEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmg4YTIuNCAyLjQgMCAwIDEgMS43MDQuNzA2bDIuNTE2IDIuNTE2In1dLFsicGF0aCIse2Q6Ik04IDE4aDEifV1dfSk7dmFyIEptLHBJZT1nKCgpPT57Sm09W1sicGF0aCIse2Q6Ik02IDIyYTIgMiAwIDAgMS0yLTJWNGEyIDIgMCAwIDEgMi0yaDhhMi40IDIuNCAwIDAgMSAxLjcwNC43MDZsMy41ODggMy41ODhBMi40IDIuNCAwIDAgMSAyMCA4djEyYTIgMiAwIDAgMS0yIDJ6In1dLFsicGF0aCIse2Q6Ik0xNCAydjVhMSAxIDAgMCAwIDEgMWg1In1dLFsicGF0aCIse2Q6Ik0xNS4wMzMgMTMuNDRhLjY0Ny42NDcgMCAwIDEgMCAxLjEybC00LjA2NSAyLjM1MmEuNjQ1LjY0NSAwIDAgMS0uOTY4LS41NnYtNC43MDRhLjY0NS42NDUgMCAwIDEgLjk2Ny0uNTZ6In1dXX0pO3ZhciBlNixoSWU9ZygoKT0+e2U2PVtbInBhdGgiLHtkOiJNMTIuNjU5IDIySDE4YTIgMiAwIDAgMCAyLTJWOGEyLjQgMi40IDAgMCAwLS43MDYtMS43MDZsLTMuNTg4LTMuNTg4QTIuNCAyLjQgMCAwIDAgMTQgMkg2YTIgMiAwIDAgMC0yIDJ2OS4zNCJ9XSxbInBhdGgiLHtkOiJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSJ9XSxbInBhdGgiLHtkOiJNMTAuMzc4IDEyLjYyMmExIDEgMCAwIDEgMyAzLjAwM0w4LjM2IDIwLjYzN2EyIDIgMCAwIDEtLjg1NC41MDZsLTIuODY3LjgzN2EuNS41IDAgMCAxLS42Mi0uNjJsLjgzNi0yLjg2OWEyIDIgMCAwIDEgLjUwNi0uODUzeiJ9XV19KTt2YXIgdDYsZkllPWcoKCk9Pnt0Nj1bWyJwYXRoIix7ZDoiTTExLjM1IDIySDZhMiAyIDAgMCAxLTItMlY0YTIgMiAwIDAgMSAyLTJoOGEyLjQgMi40IDAgMCAxIDEuNzA2LjcwNmwzLjU4OCAzLjU4OEEyLjQgMi40IDAgMCAxIDIwIDh2NS4zNSJ9XSxbInBhdGgiLHtkOiJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSJ9XSxbInBhdGgiLHtkOiJNMTQgMTloNiJ9XSxbInBhdGgiLHtkOiJNMTcgMTZ2NiJ9XV19KTt2YXIgWEUsbUllPWcoKCk9PntYRT1bWyJwYXRoIix7ZDoiTTYgMjJhMiAyIDAgMCAxLTItMlY0YTIgMiAwIDAgMSAyLTJoOGEyLjQgMi40IDAgMCAxIDEuNzA0LjcwNmwzLjU4OCAzLjU4OEEyLjQgMi40IDAgMCAxIDIwIDh2MTJhMiAyIDAgMCAxLTIgMnoifV0sWyJwYXRoIix7ZDoiTTE0IDJ2NWExIDEgMCAwIDAgMSAxaDUifV0sWyJwYXRoIix7ZDoiTTkgMTVoNiJ9XSxbInBhdGgiLHtkOiJNMTIgMTh2LTYifV1dfSk7dmFyIGE2LGdJZT1nKCgpPT57YTY9W1sicGF0aCIse2Q6Ik02IDIyYTIgMiAwIDAgMS0yLTJWNGEyIDIgMCAwIDEgMi0yaDhhMi40IDIuNCAwIDAgMSAxLjcwNC43MDZsMy41ODggMy41ODhBMi40IDIuNCAwIDAgMSAyMCA4djEyYTIgMiAwIDAgMS0yIDJ6In1dLFsicGF0aCIse2Q6Ik0xMiAxN2guMDEifV0sWyJwYXRoIix7ZDoiTTkuMSA5YTMgMyAwIDAgMSA1LjgyIDFjMCAyLTMgMy0zIDMifV1dfSk7dmFyIFFFLGJJZT1nKCgpPT57UUU9W1sicGF0aCIse2Q6Ik0yMCAxMFY4YTIuNCAyLjQgMCAwIDAtLjcwNi0xLjcwNGwtMy41ODgtMy41ODhBMi40IDIuNCAwIDAgMCAxNCAySDZhMiAyIDAgMCAwLTIgMnYxNmEyIDIgMCAwIDAgMiAyaDQuMzUifV0sWyJwYXRoIix7ZDoiTTE0IDJ2NWExIDEgMCAwIDAgMSAxaDUifV0sWyJwYXRoIix7ZDoiTTE2IDE0YTIgMiAwIDAgMC0yIDIifV0sWyJwYXRoIix7ZDoiTTE2IDIyYTIgMiAwIDAgMS0yLTIifV0sWyJwYXRoIix7ZDoiTTIwIDE0YTIgMiAwIDAgMSAyIDIifV0sWyJwYXRoIix7ZDoiTTIwIDIyYTIgMiAwIDAgMCAyLTIifV1dfSk7dmFyIHM2LHZJZT1nKCgpPT57czY9W1sicGF0aCIse2Q6Ik0xMS4xIDIySDZhMiAyIDAgMCAxLTItMlY0YTIgMiAwIDAgMSAyLTJoOGEyLjQgMi40IDAgMCAxIDEuNzA2LjcwNmwzLjU4OSAzLjU4OEEyLjQgMi40IDAgMCAxIDIwIDh2My4yNSJ9XSxbInBhdGgiLHtkOiJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSJ9XSxbInBhdGgiLHtkOiJtMjEgMjItMi44OC0yLjg4In1dLFsiY2lyY2xlIix7Y3g6IjE2IixjeToiMTciLHI6IjMifV1dfSk7dmFyIEpFLHhJZT1nKCgpPT57SkU9W1sicGF0aCIse2Q6Ik02IDIyYTIgMiAwIDAgMS0yLTJWNGEyIDIgMCAwIDEgMi0yaDhhMi40IDIuNCAwIDAgMSAxLjcwNC43MDZsMy41ODggMy41ODhBMi40IDIuNCAwIDAgMSAyMCA4djEyYTIgMiAwIDAgMS0yIDJ6In1dLFsicGF0aCIse2Q6Ik0xNCAydjVhMSAxIDAgMCAwIDEgMWg1In1dLFsiY2lyY2xlIix7Y3g6IjExLjUiLGN5OiIxNC41IixyOiIyLjUifV0sWyJwYXRoIix7ZDoiTTEzLjMgMTYuMyAxNSAxOCJ9XV19KTt2YXIgaTYseUllPWcoKCk9PntpNj1bWyJwYXRoIix7ZDoiTTYgMjJhMiAyIDAgMCAxLTItMlY0YTIgMiAwIDAgMSAyLTJoOGEyLjQgMi40IDAgMCAxIDEuNzA0LjcwNmwzLjU4OCAzLjU4OEEyLjQgMi40IDAgMCAxIDIwIDh2MTJhMiAyIDAgMCAxLTIgMnoifV0sWyJwYXRoIix7ZDoiTTE0IDJ2NWExIDEgMCAwIDAgMSAxaDUifV0sWyJwYXRoIix7ZDoiTTggMTVoLjAxIn1dLFsicGF0aCIse2Q6Ik0xMS41IDEzLjVhMi41IDIuNSAwIDAgMSAwIDMifV0sWyJwYXRoIix7ZDoiTTE1IDEyYTUgNSAwIDAgMSAwIDYifV1dfSk7dmFyIGVQLHdJZT1nKCgpPT57ZVA9W1sicGF0aCIse2Q6Ik02IDIyYTIgMiAwIDAgMS0yLTJWNGEyIDIgMCAwIDEgMi0yaDhhMi40IDIuNCAwIDAgMSAxLjcwNC43MDZsMy41ODggMy41ODhBMi40IDIuNCAwIDAgMSAyMCA4djEyYTIgMiAwIDAgMS0yIDJ6In1dLFsicGF0aCIse2Q6Ik0xNCAydjVhMSAxIDAgMCAwIDEgMWg1In1dLFsicGF0aCIse2Q6Ik04IDEyaDgifV0sWyJwYXRoIix7ZDoiTTEwIDExdjIifV0sWyJwYXRoIix7ZDoiTTggMTdoOCJ9XSxbInBhdGgiLHtkOiJNMTQgMTZ2MiJ9XV19KTt2YXIgdFAsa0llPWcoKCk9Pnt0UD1bWyJwYXRoIix7ZDoiTTYgMjJhMiAyIDAgMCAxLTItMlY0YTIgMiAwIDAgMSAyLTJoOGEyLjQgMi40IDAgMCAxIDEuNzA0LjcwNmwzLjU4OCAzLjU4OEEyLjQgMi40IDAgMCAxIDIwIDh2MTJhMiAyIDAgMCAxLTIgMnoifV0sWyJwYXRoIix7ZDoiTTE0IDJ2NWExIDEgMCAwIDAgMSAxaDUifV0sWyJwYXRoIix7ZDoiTTggMTNoMiJ9XSxbInBhdGgiLHtkOiJNMTQgMTNoMiJ9XSxbInBhdGgiLHtkOiJNOCAxN2gyIn1dLFsicGF0aCIse2Q6Ik0xNCAxN2gyIn1dXX0pO3ZhciBhUCxTSWU9ZygoKT0+e2FQPVtbInBhdGgiLHtkOiJNNCAxMVY0YTIgMiAwIDAgMSAyLTJoOGEyLjQgMi40IDAgMCAxIDEuNzA2LjcwNmwzLjU4OCAzLjU4OEEyLjQgMi40IDAgMCAxIDIwIDh2MTJhMiAyIDAgMCAxLTIgMkg2YTIgMiAwIDAgMS0yLTJ2LTNhMiAyIDAgMCAxIDItMmg3In1dLFsicGF0aCIse2Q6Ik0xNCAydjVhMSAxIDAgMCAwIDEgMWg1In1dLFsicGF0aCIse2Q6Im0xMCAxOCAzLTMtMy0zIn1dXX0pO3ZhciBzUCxfSWU9ZygoKT0+e3NQPVtbInBhdGgiLHtkOiJNMTEgMjFhMSAxIDAgMCAxLTEgMUg0YTEgMSAwIDAgMS0xLTF2LThhMSAxIDAgMCAxIDEtMSJ9XSxbInBhdGgiLHtkOiJNMTYgMTZhMSAxIDAgMCAxLTEgMUg5YTEgMSAwIDAgMS0xLTFWOGExIDEgMCAwIDEgMS0xIn1dLFsicGF0aCIse2Q6Ik0yMSA2YTIgMiAwIDAgMC0uNTg2LTEuNDE0bC0yLTJBMiAyIDAgMCAwIDE3IDJoLTNhMSAxIDAgMCAwLTEgMXY4YTEgMSAwIDAgMCAxIDFoNmExIDEgMCAwIDAgMS0xeiJ9XV19KTt2YXIgaVAsTUllPWcoKCk9PntpUD1bWyJwYXRoIix7ZDoiTTYgMjJhMiAyIDAgMCAxLTItMlY0YTIgMiAwIDAgMSAyLTJoOGEyLjQgMi40IDAgMCAxIDEuNzA0LjcwNmwzLjU4OCAzLjU4OEEyLjQgMi40IDAgMCAxIDIwIDh2MTJhMiAyIDAgMCAxLTIgMnoifV0sWyJwYXRoIix7ZDoiTTE0IDJ2NWExIDEgMCAwIDAgMSAxaDUifV0sWyJwYXRoIix7ZDoibTggMTYgMi0yLTItMiJ9XSxbInBhdGgiLHtkOiJNMTIgMThoNCJ9XV19KTt2YXIgclAsekllPWcoKCk9PntyUD1bWyJwYXRoIix7ZDoiTTYgMjJhMiAyIDAgMCAxLTItMlY0YTIgMiAwIDAgMSAyLTJoOGEyLjQgMi40IDAgMCAxIDEuNzA0LjcwNmwzLjU4OCAzLjU4OEEyLjQgMi40IDAgMCAxIDIwIDh2MTJhMiAyIDAgMCAxLTIgMnoifV0sWyJwYXRoIix7ZDoiTTE0IDJ2NWExIDEgMCAwIDAgMSAxaDUifV0sWyJwYXRoIix7ZDoiTTEwIDlIOCJ9XSxbInBhdGgiLHtkOiJNMTYgMTNIOCJ9XSxbInBhdGgiLHtkOiJNMTYgMTdIOCJ9XV19KTt2YXIgcjYsQ0llPWcoKCk9PntyNj1bWyJwYXRoIix7ZDoiTTEyIDIyaDZhMiAyIDAgMCAwIDItMlY4YTIuNCAyLjQgMCAwIDAtLjcwNi0xLjcwNmwtMy41ODgtMy41ODhBMi40IDIuNCAwIDAgMCAxNCAySDZhMiAyIDAgMCAwLTIgMnY2In1dLFsicGF0aCIse2Q6Ik0xNCAydjVhMSAxIDAgMCAwIDEgMWg1In1dLFsicGF0aCIse2Q6Ik0zIDE2di0xLjVhLjUuNSAwIDAgMSAuNS0uNWg3YS41LjUgMCAwIDEgLjUuNVYxNiJ9XSxbInBhdGgiLHtkOiJNNiAyMmgyIn1dLFsicGF0aCIse2Q6Ik03IDE0djgifV1dfSk7dmFyIG9QLFRJZT1nKCgpPT57b1A9W1sicGF0aCIse2Q6Ik02IDIyYTIgMiAwIDAgMS0yLTJWNGEyIDIgMCAwIDEgMi0yaDhhMi40IDIuNCAwIDAgMSAxLjcwNC43MDZsMy41ODggMy41ODhBMi40IDIuNCAwIDAgMSAyMCA4djEyYTIgMiAwIDAgMS0yIDJ6In1dLFsicGF0aCIse2Q6Ik0xNCAydjVhMSAxIDAgMCAwIDEgMWg1In1dLFsicGF0aCIse2Q6Ik0xMSAxOGgyIn1dLFsicGF0aCIse2Q6Ik0xMiAxMnY2In1dLFsicGF0aCIse2Q6Ik05IDEzdi0uNWEuNS41IDAgMCAxIC41LS41aDVhLjUuNSAwIDAgMSAuNS41di41In1dXX0pO3ZhciBuUCwkSWU9ZygoKT0+e25QPVtbInBhdGgiLHtkOiJNNiAyMmEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmg4YTIuNCAyLjQgMCAwIDEgMS43MDQuNzA2bDMuNTg4IDMuNTg4QTIuNCAyLjQgMCAwIDEgMjAgOHYxMmEyIDIgMCAwIDEtMiAyeiJ9XSxbInBhdGgiLHtkOiJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSJ9XSxbInBhdGgiLHtkOiJNMTIgMTJ2NiJ9XSxbInBhdGgiLHtkOiJtMTUgMTUtMy0zLTMgMyJ9XV19KTt2YXIgbFAsREllPWcoKCk9PntsUD1bWyJwYXRoIix7ZDoiTTYgMjJhMiAyIDAgMCAxLTItMlY0YTIgMiAwIDAgMSAyLTJoOGEyLjQgMi40IDAgMCAxIDEuNzA0LjcwNmwzLjU4OCAzLjU4OEEyLjQgMi40IDAgMCAxIDIwIDh2MTJhMiAyIDAgMCAxLTIgMnoifV0sWyJwYXRoIix7ZDoiTTE0IDJ2NWExIDEgMCAwIDAgMSAxaDUifV0sWyJwYXRoIix7ZDoiTTE2IDIyYTQgNCAwIDAgMC04IDAifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxNSIscjoiMyJ9XV19KTt2YXIgY1AsTEllPWcoKCk9PntjUD1bWyJwYXRoIix7ZDoiTTQgMTEuNTVWNGEyIDIgMCAwIDEgMi0yaDhhMi40IDIuNCAwIDAgMSAxLjcwNi43MDZsMy41ODggMy41ODhBMi40IDIuNCAwIDAgMSAyMCA4djEyYTIgMiAwIDAgMS0yIDJoLTEuOTUifV0sWyJwYXRoIix7ZDoiTTE0IDJ2NWExIDEgMCAwIDAgMSAxaDUifV0sWyJwYXRoIix7ZDoiTTEyIDE1YTUgNSAwIDAgMSAwIDYifV0sWyJwYXRoIix7ZDoiTTggMTQuNTAyYS41LjUgMCAwIDAtLjgyNi0uMzgxbC0xLjg5MyAxLjYzMWExIDEgMCAwIDEtLjY1MS4yNDNIMy41YS41LjUgMCAwIDAtLjUuNTAxdjMuMDA2YS41LjUgMCAwIDAgLjUuNTAxaDEuMTI5YTEgMSAwIDAgMSAuNjUyLjI0M2wxLjg5MyAxLjYzM2EuNS41IDAgMCAwIC44MjYtLjM4eiJ9XV19KTt2YXIgbzYsRUllPWcoKCk9PntvNj1bWyJwYXRoIix7ZDoiTTQgMTJWNGEyIDIgMCAwIDEgMi0yaDhhMi40IDIuNCAwIDAgMSAxLjcwNi43MDZsMy41ODggMy41ODhBMi40IDIuNCAwIDAgMSAyMCA4djEyYTIgMiAwIDAgMS0yIDIifV0sWyJwYXRoIix7ZDoiTTE0IDJ2NWExIDEgMCAwIDAgMSAxaDUifV0sWyJwYXRoIix7ZDoibTEwIDE3Ljg0MyAzLjAzMy0xLjc1NWEuNjQuNjQgMCAwIDEgLjk2Ny41NnY0LjcwNGEuNjUuNjUgMCAwIDEtLjk2Ny41NkwxMCAyMC4xNTcifV0sWyJyZWN0Iix7d2lkdGg6IjciLGhlaWdodDoiNiIseDoiMyIseToiMTYiLHJ4OiIxIn1dXX0pO3ZhciBuNixQSWU9ZygoKT0+e242PVtbInBhdGgiLHtkOiJNMTEgMjJINmEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmg4YTIuNCAyLjQgMCAwIDEgMS43MDYuNzA2bDMuNTg4IDMuNTg4QTIuNCAyLjQgMCAwIDEgMjAgOHY1In1dLFsicGF0aCIse2Q6Ik0xNCAydjVhMSAxIDAgMCAwIDEgMWg1In1dLFsicGF0aCIse2Q6Im0xNSAxNyA1IDUifV0sWyJwYXRoIix7ZDoibTIwIDE3LTUgNSJ9XV19KTt2YXIgZFAsSUllPWcoKCk9PntkUD1bWyJwYXRoIix7ZDoiTTYgMjJhMiAyIDAgMCAxLTItMlY0YTIgMiAwIDAgMSAyLTJoOGEyLjQgMi40IDAgMCAxIDEuNzA0LjcwNmwzLjU4OCAzLjU4OEEyLjQgMi40IDAgMCAxIDIwIDh2MTJhMiAyIDAgMCAxLTIgMnoifV0sWyJwYXRoIix7ZDoiTTE0IDJ2NWExIDEgMCAwIDAgMSAxaDUifV0sWyJwYXRoIix7ZDoibTE0LjUgMTIuNS01IDUifV0sWyJwYXRoIix7ZDoibTkuNSAxMi41IDUgNSJ9XV19KTt2YXIgdVAsQUllPWcoKCk9Pnt1UD1bWyJwYXRoIix7ZDoiTTYgMjJhMiAyIDAgMCAxLTItMlY0YTIgMiAwIDAgMSAyLTJoOGEyLjQgMi40IDAgMCAxIDEuNzA0LjcwNmwzLjU4OCAzLjU4OEEyLjQgMi40IDAgMCAxIDIwIDh2MTJhMiAyIDAgMCAxLTIgMnoifV0sWyJwYXRoIix7ZDoiTTE0IDJ2NWExIDEgMCAwIDAgMSAxaDUifV1dfSk7dmFyIHBQLE5JZT1nKCgpPT57cFA9W1sicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiMyIscng6IjIifV0sWyJwYXRoIix7ZDoiTTcgM3YxOCJ9XSxbInBhdGgiLHtkOiJNMyA3LjVoNCJ9XSxbInBhdGgiLHtkOiJNMyAxMmgxOCJ9XSxbInBhdGgiLHtkOiJNMyAxNi41aDQifV0sWyJwYXRoIix7ZDoiTTE3IDN2MTgifV0sWyJwYXRoIix7ZDoiTTE3IDcuNWg0In1dLFsicGF0aCIse2Q6Ik0xNyAxNi41aDQifV1dfSk7dmFyIGhQLFJJZT1nKCgpPT57aFA9W1sicGF0aCIse2Q6Ik0xNSAyaC00YTIgMiAwIDAgMC0yIDJ2MTFhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWOCJ9XSxbInBhdGgiLHtkOiJNMTYuNzA2IDIuNzA2QTIuNCAyLjQgMCAwIDAgMTUgMnY1YTEgMSAwIDAgMCAxIDFoNWEyLjQgMi40IDAgMCAwLS43MDYtMS43MDZ6In1dLFsicGF0aCIse2Q6Ik01IDdhMiAyIDAgMCAwLTIgMnYxMWEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDEuNzMyLTEifV1dfSk7dmFyIGw2LE9JZT1nKCgpPT57bDY9W1sicGF0aCIse2Q6Ik0xMiAxMGEyIDIgMCAwIDAtMiAyYzAgMS4wMi0uMSAyLjUxLS4yNiA0In1dLFsicGF0aCIse2Q6Ik0xNCAxMy4xMmMwIDIuMzggMCA2LjM4LTEgOC44OCJ9XSxbInBhdGgiLHtkOiJNMTcuMjkgMjEuMDJjLjEyLS42LjQzLTIuMy41LTMuMDIifV0sWyJwYXRoIix7ZDoiTTIgMTJhMTAgMTAgMCAwIDEgMTgtNiJ9XSxbInBhdGgiLHtkOiJNMiAxNmguMDEifV0sWyJwYXRoIix7ZDoiTTIxLjggMTZjLjItMiAuMTMxLTUuMzU0IDAtNiJ9XSxbInBhdGgiLHtkOiJNNSAxOS41QzUuNSAxOCA2IDE1IDYgMTJhNiA2IDAgMCAxIC4zNC0yIn1dLFsicGF0aCIse2Q6Ik04LjY1IDIyYy4yMS0uNjYuNDUtMS4zMi41Ny0yIn1dLFsicGF0aCIse2Q6Ik05IDYuOGE2IDYgMCAwIDEgOSA1LjJ2MiJ9XV19KTt2YXIgZlAsRkllPWcoKCk9PntmUD1bWyJwYXRoIix7ZDoiTTE1IDYuNVYzYTEgMSAwIDAgMC0xLTFoLTJhMSAxIDAgMCAwLTEgMXYzLjUifV0sWyJwYXRoIix7ZDoiTTkgMThoOCJ9XSxbInBhdGgiLHtkOiJNMTggM2gtMyJ9XSxbInBhdGgiLHtkOiJNMTEgM2E2IDYgMCAwIDAtNiA2djExIn1dLFsicGF0aCIse2Q6Ik01IDEzaDQifV0sWyJwYXRoIix7ZDoiTTE3IDEwYTQgNCAwIDAgMC04IDB2MTBhMiAyIDAgMCAwIDIgMmg0YTIgMiAwIDAgMCAyLTJaIn1dXX0pO3ZhciBtUCxCSWU9ZygoKT0+e21QPVtbInBhdGgiLHtkOiJNMiAxNnM5LTE1IDIwLTRDMTEgMjMgMiA4IDIgOCJ9XV19KTt2YXIgZ1AsSEllPWcoKCk9PntnUD1bWyJwYXRoIix7ZDoiTTE4IDEyLjQ3di4wM20wLS41di40N20tLjQ3NSA1LjA1NkE2Ljc0NCA2Ljc0NCAwIDAgMSAxNSAxOGMtMy41NiAwLTcuNTYtMi41My04LjUtNiAuMzQ4LTEuMjggMS4xMTQtMi40MzMgMi4xMjEtMy4zOG0zLjQ0NC0yLjA4OEE4LjgwMiA4LjgwMiAwIDAgMSAxNSA2YzMuNTYgMCA2LjA2IDIuNTQgNyA2LS4zMDkgMS4xNC0uNzg2IDIuMTc3LTEuNDEzIDMuMDU4In1dLFsicGF0aCIse2Q6Ik03IDEwLjY3QzcgOCA1LjU4IDUuOTcgMi43MyA1LjVjLTEgMS41LTEgNSAuMjMgNi41LTEuMjQgMS41LTEuMjQgNS0uMjMgNi41QzUuNTggMTguMDMgNyAxNiA3IDEzLjMzbTcuNDgtNC4zNzJBOS43NyA5Ljc3IDAgMCAxIDE2IDYuMDdtMCAxMS44NmE5Ljc3IDkuNzcgMCAwIDEtMS43MjgtMy42MTgifV0sWyJwYXRoIix7ZDoibTE2LjAxIDE3LjkzLS4yMyAxLjRBMiAyIDAgMCAxIDEzLjggMjFIOS41YTUuOTYgNS45NiAwIDAgMCAxLjQ5LTMuOThNOC41MyAzaDUuMjdhMiAyIDAgMCAxIDEuOTggMS42N2wuMjMgMS40TTIgMmwyMCAyMCJ9XV19KTt2YXIgYlAscUllPWcoKCk9PntiUD1bWyJwYXRoIix7ZDoiTTYuNSAxMmMuOTQtMy40NiA0Ljk0LTYgOC41LTYgMy41NiAwIDYuMDYgMi41NCA3IDYtLjk0IDMuNDctMy40NCA2LTcgNnMtNy41Ni0yLjUzLTguNS02WiJ9XSxbInBhdGgiLHtkOiJNMTggMTJ2LjUifV0sWyJwYXRoIix7ZDoiTTE2IDE3LjkzYTkuNzcgOS43NyAwIDAgMSAwLTExLjg2In1dLFsicGF0aCIse2Q6Ik03IDEwLjY3QzcgOCA1LjU4IDUuOTcgMi43MyA1LjVjLTEgMS41LTEgNSAuMjMgNi41LTEuMjQgMS41LTEuMjQgNS0uMjMgNi41QzUuNTggMTguMDMgNyAxNiA3IDEzLjMzIn1dLFsicGF0aCIse2Q6Ik0xMC40NiA3LjI2QzEwLjIgNS44OCA5LjE3IDQuMjQgOCAzaDUuOGEyIDIgMCAwIDEgMS45OCAxLjY3bC4yMyAxLjQifV0sWyJwYXRoIix7ZDoibTE2LjAxIDE3LjkzLS4yMyAxLjRBMiAyIDAgMCAxIDEzLjggMjFIOS41YTUuOTYgNS45NiAwIDAgMCAxLjQ5LTMuOTgifV1dfSk7dmFyIHZQLGpJZT1nKCgpPT57dlA9W1sicGF0aCIse2Q6Im0xNy41ODYgMTEuNDE0LTUuOTMgNS45M2ExIDEgMCAwIDEtOC04bDMuMTM3LTMuMTM3YS43MDcuNzA3IDAgMCAxIDEuMjA3LjVWMTAifV0sWyJwYXRoIix7ZDoiTTIwLjQxNCA4LjU4NiAyMiA3In1dLFsiY2lyY2xlIix7Y3g6IjE5IixjeToiMTAiLHI6IjIifV1dfSk7dmFyIHhQLFZJZT1nKCgpPT57eFA9W1sicGF0aCIse2Q6Ik0xNiAxNmMtMyAwLTUtMi04LTJhNiA2IDAgMCAwLTQgMS41MjgifV0sWyJwYXRoIix7ZDoibTIgMiAyMCAyMCJ9XSxbInBhdGgiLHtkOiJNNCAyMlY0In1dLFsicGF0aCIse2Q6Ik03LjY1NiAySDhjMyAwIDUgMiA3LjMzMyAycTIgMCAzLjA2Ny0uOEExIDEgMCAwIDEgMjAgNHYxMC4zNDcifV1dfSk7dmFyIHlQLFVJZT1nKCgpPT57eVA9W1sicGF0aCIse2Q6Ik00IDExaDEifV0sWyJwYXRoIix7ZDoiTTggMTVhMiAyIDAgMCAxLTQgMFYzYTEgMSAwIDAgMSAxLTFoLjVDMTQgMiAyMCA5IDIwIDE4djQifV0sWyJjaXJjbGUiLHtjeDoiMTgiLGN5OiIxOCIscjoiMiJ9XV19KTt2YXIgd1AsV0llPWcoKCk9Pnt3UD1bWyJwYXRoIix7ZDoiTTE4IDIyVjIuOGEuOC44IDAgMCAwLTEuMTctLjcxTDUuNDUgNy43OGEuOC44IDAgMCAwIDAgMS40NEwxOCAxNS41In1dXX0pO3ZhciBrUCxHSWU9ZygoKT0+e2tQPVtbInBhdGgiLHtkOiJNNiAyMlYyLjhhLjguOCAwIDAgMSAxLjE3LS43MWwxMS4zOCA1LjY5YS44LjggMCAwIDEgMCAxLjQ0TDYgMTUuNSJ9XV19KTt2YXIgU1AsS0llPWcoKCk9PntTUD1bWyJwYXRoIix7ZDoiTTQgMjJWNGExIDEgMCAwIDEgLjQtLjhBNiA2IDAgMCAxIDggMmMzIDAgNSAyIDcuMzMzIDJxMiAwIDMuMDY3LS44QTEgMSAwIDAgMSAyMCA0djEwYTEgMSAwIDAgMS0uNC44QTYgNiAwIDAgMSAxNiAxNmMtMyAwLTUtMi04LTJhNiA2IDAgMCAwLTQgMS41MjgifV1dfSk7dmFyIF9QLFlJZT1nKCgpPT57X1A9W1sicGF0aCIse2Q6Ik0xMiAzcTEgNCA0IDYuNXQzIDUuNWExIDEgMCAwIDEtMTQgMCA1IDUgMCAwIDEgMS0zIDEgMSAwIDAgMCA1IDBjMC0yLTEuNS0zLTEuNS01cTAtMiAyLjUtNCJ9XV19KTt2YXIgTVAsWkllPWcoKCk9PntNUD1bWyJwYXRoIix7ZDoiTTExLjY1MiA2SDE4In1dLFsicGF0aCIse2Q6Ik0xMiAxM3YxIn1dLFsicGF0aCIse2Q6Ik0xNiAxNnY0YTIgMiAwIDAgMS0yIDJoLTRhMiAyIDAgMCAxLTItMnYtOGE0IDQgMCAwIDAtLjgtMi40bC0uNi0uOEEzIDMgMCAwIDEgNiA3VjYifV0sWyJwYXRoIix7ZDoibTIgMiAyMCAyMCJ9XSxbInBhdGgiLHtkOiJNNy42NDkgMkgxN2ExIDEgMCAwIDEgMSAxdjRhMyAzIDAgMCAxLS42IDEuOGwtLjYuOGE0IDQgMCAwIDAtLjU1IDEuMDA3In1dXX0pO3ZhciB6UCxYSWU9ZygoKT0+e3pQPVtbInBhdGgiLHtkOiJNMTIgMmMxIDMgMi41IDMuNSAzLjUgNC41QTUgNSAwIDAgMSAxNyAxMGE1IDUgMCAxIDEtMTAgMGMwLS4zIDAtLjYuMS0uOWEyIDIgMCAxIDAgMy4zLTJDOCA0LjUgMTEgMiAxMiAyWiJ9XSxbInBhdGgiLHtkOiJtNSAyMiAxNC00In1dLFsicGF0aCIse2Q6Im01IDE4IDE0IDQifV1dfSk7dmFyIENQLFFJZT1nKCgpPT57Q1A9W1sicGF0aCIse2Q6Ik0xMiAxM3YxIn1dLFsicGF0aCIse2Q6Ik0xNyAyYTEgMSAwIDAgMSAxIDF2NGEzIDMgMCAwIDEtLjYgMS44bC0uNi44QTQgNCAwIDAgMCAxNiAxMnY4YTIgMiAwIDAgMS0yIDJIMTBhMiAyIDAgMCAxLTItMnYtOGE0IDQgMCAwIDAtLjgtMi40bC0uNi0uOEEzIDMgMCAwIDEgNiA3VjNhMSAxIDAgMCAxIDEtMXoifV0sWyJwYXRoIix7ZDoiTTYgNmgxMiJ9XV19KTt2YXIgVFAsSkllPWcoKCk9PntUUD1bWyJwYXRoIix7ZDoiTTEwIDJ2Mi4zNDMifV0sWyJwYXRoIix7ZDoiTTE0IDJ2Ni4zNDMifV0sWyJwYXRoIix7ZDoibTIgMiAyMCAyMCJ9XSxbInBhdGgiLHtkOiJNMjAgMjBhMiAyIDAgMCAxLTIgMkg2YTIgMiAwIDAgMS0xLjc1NS0yLjk2bDUuMjI3LTkuNTYzIn1dLFsicGF0aCIse2Q6Ik02LjQ1MyAxNUgxNSJ9XSxbInBhdGgiLHtkOiJNOC41IDJoNyJ9XV19KTt2YXIgJFAsZUFlPWcoKCk9PnskUD1bWyJwYXRoIix7ZDoiTTE0IDJ2NmEyIDIgMCAwIDAgLjI0NS45Nmw1LjUxIDEwLjA4QTIgMiAwIDAgMSAxOCAyMkg2YTIgMiAwIDAgMS0xLjc1NS0yLjk2bDUuNTEtMTAuMDhBMiAyIDAgMCAwIDEwIDhWMiJ9XSxbInBhdGgiLHtkOiJNNi40NTMgMTVoMTEuMDk0In1dLFsicGF0aCIse2Q6Ik04LjUgMmg3In1dXX0pO3ZhciBEUCx0QWU9ZygoKT0+e0RQPVtbInBhdGgiLHtkOiJNMTAgMnY2LjI5MmE3IDcgMCAxIDAgNCAwVjIifV0sWyJwYXRoIix7ZDoiTTUgMTVoMTQifV0sWyJwYXRoIix7ZDoiTTguNSAyaDcifV1dfSk7dmFyIExQLGFBZT1nKCgpPT57TFA9W1sicGF0aCIse2Q6Im0zIDcgNSA1LTUgNVY3In1dLFsicGF0aCIse2Q6Im0yMSA3LTUgNSA1IDVWNyJ9XSxbInBhdGgiLHtkOiJNMTIgMjB2MiJ9XSxbInBhdGgiLHtkOiJNMTIgMTR2MiJ9XSxbInBhdGgiLHtkOiJNMTIgOHYyIn1dLFsicGF0aCIse2Q6Ik0xMiAydjIifV1dfSk7dmFyIEVQLHNBZT1nKCgpPT57RVA9W1sicGF0aCIse2Q6Im0xNyAzLTUgNS01LTVoMTAifV0sWyJwYXRoIix7ZDoibTE3IDIxLTUtNS01IDVoMTAifV0sWyJwYXRoIix7ZDoiTTQgMTJIMiJ9XSxbInBhdGgiLHtkOiJNMTAgMTJIOCJ9XSxbInBhdGgiLHtkOiJNMTYgMTJoLTIifV0sWyJwYXRoIix7ZDoiTTIyIDEyaC0yIn1dXX0pO3ZhciBQUCxpQWU9ZygoKT0+e1BQPVtbInBhdGgiLHtkOiJNMTIgNWEzIDMgMCAxIDEgMyAzbS0zLTNhMyAzIDAgMSAwLTMgM20zLTN2MU05IDhhMyAzIDAgMSAwIDMgM005IDhoMW01IDBhMyAzIDAgMSAxLTMgM20zLTNoLTFtLTIgM3YtMSJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjgiLHI6IjIifV0sWyJwYXRoIix7ZDoiTTEyIDEwdjEyIn1dLFsicGF0aCIse2Q6Ik0xMiAyMmM0LjIgMCA3LTEuNjY3IDctNS00LjIgMC03IDEuNjY3LTcgNVoifV0sWyJwYXRoIix7ZDoiTTEyIDIyYy00LjIgMC03LTEuNjY3LTctNSA0LjIgMCA3IDEuNjY3IDcgNVoifV1dfSk7dmFyIElQLHJBZT1nKCgpPT57SVA9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjMifV0sWyJwYXRoIix7ZDoiTTMgN1Y1YTIgMiAwIDAgMSAyLTJoMiJ9XSxbInBhdGgiLHtkOiJNMTcgM2gyYTIgMiAwIDAgMSAyIDJ2MiJ9XSxbInBhdGgiLHtkOiJNMjEgMTd2MmEyIDIgMCAwIDEtMiAyaC0yIn1dLFsicGF0aCIse2Q6Ik03IDIxSDVhMiAyIDAgMCAxLTItMnYtMiJ9XV19KTt2YXIgQVAsb0FlPWcoKCk9PntBUD1bWyJwYXRoIix7ZDoiTTIgMTJoNiJ9XSxbInBhdGgiLHtkOiJNMjIgMTJoLTYifV0sWyJwYXRoIix7ZDoiTTEyIDJ2MiJ9XSxbInBhdGgiLHtkOiJNMTIgOHYyIn1dLFsicGF0aCIse2Q6Ik0xMiAxNHYyIn1dLFsicGF0aCIse2Q6Ik0xMiAyMHYyIn1dLFsicGF0aCIse2Q6Im0xOSA5LTMgMyAzIDMifV0sWyJwYXRoIix7ZDoibTUgMTUgMy0zLTMtMyJ9XV19KTt2YXIgTlAsbkFlPWcoKCk9PntOUD1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMyJ9XSxbInBhdGgiLHtkOiJNMTIgMTYuNUE0LjUgNC41IDAgMSAxIDcuNSAxMiA0LjUgNC41IDAgMSAxIDEyIDcuNWE0LjUgNC41IDAgMSAxIDQuNSA0LjUgNC41IDQuNSAwIDEgMS00LjUgNC41In1dLFsicGF0aCIse2Q6Ik0xMiA3LjVWOSJ9XSxbInBhdGgiLHtkOiJNNy41IDEySDkifV0sWyJwYXRoIix7ZDoiTTE2LjUgMTJIMTUifV0sWyJwYXRoIix7ZDoiTTEyIDE2LjVWMTUifV0sWyJwYXRoIix7ZDoibTggOCAxLjg4IDEuODgifV0sWyJwYXRoIix7ZDoiTTE0LjEyIDkuODggMTYgOCJ9XSxbInBhdGgiLHtkOiJtOCAxNiAxLjg4LTEuODgifV0sWyJwYXRoIix7ZDoiTTE0LjEyIDE0LjEyIDE2IDE2In1dXX0pO3ZhciBSUCxsQWU9ZygoKT0+e1JQPVtbImNpcmNsZSIse2N4OiIxNSIsY3k6IjE5IixyOiIyIn1dLFsicGF0aCIse2Q6Ik0yMC45IDE5LjhBMiAyIDAgMCAwIDIyIDE4VjhhMiAyIDAgMCAwLTItMmgtNy45YTIgMiAwIDAgMS0xLjY5LS45TDkuNiAzLjlBMiAyIDAgMCAwIDcuOTMgM0g0YTIgMiAwIDAgMC0yIDJ2MTNhMiAyIDAgMCAwIDIgMmg1LjEifV0sWyJwYXRoIix7ZDoiTTE1IDExdi0xIn1dLFsicGF0aCIse2Q6Ik0xNSAxN3YtMiJ9XV19KTt2YXIgT1AsY0FlPWcoKCk9PntPUD1bWyJwYXRoIix7ZDoiTTEyIDZ2OGwzLTMgMyAzVjYifV0sWyJwYXRoIix7ZDoiTTIwIDIwYTIgMiAwIDAgMCAyLTJWOGEyIDIgMCAwIDAtMi0yaC03LjlhMiAyIDAgMCAxLTEuNjktLjlMOS42IDMuOUEyIDIgMCAwIDAgNy45MyAzSDRhMiAyIDAgMCAwLTIgMnYxM2EyIDIgMCAwIDAgMiAyeiJ9XV19KTt2YXIgRlAsZEFlPWcoKCk9PntGUD1bWyJwYXRoIix7ZDoiTTEyIDIydi02In1dLFsicGF0aCIse2Q6Ik0xMiA4VjIifV0sWyJwYXRoIix7ZDoiTTQgMTJIMiJ9XSxbInBhdGgiLHtkOiJNMTAgMTJIOCJ9XSxbInBhdGgiLHtkOiJNMTYgMTJoLTIifV0sWyJwYXRoIix7ZDoiTTIyIDEyaC0yIn1dLFsicGF0aCIse2Q6Im0xNSAxOS0zLTMtMyAzIn1dLFsicGF0aCIse2Q6Im0xNSA1LTMgMy0zLTMifV1dfSk7dmFyIEJQLHVBZT1nKCgpPT57QlA9W1sicGF0aCIse2Q6Ik0yMCAyMGEyIDIgMCAwIDAgMi0yVjhhMiAyIDAgMCAwLTItMmgtNy45YTIgMiAwIDAgMS0xLjY5LS45TDkuNiAzLjlBMiAyIDAgMCAwIDcuOTMgM0g0YTIgMiAwIDAgMC0yIDJ2MTNhMiAyIDAgMCAwIDIgMloifV0sWyJwYXRoIix7ZDoibTkgMTMgMiAyIDQtNCJ9XV19KTt2YXIgSFAscEFlPWcoKCk9PntIUD1bWyJwYXRoIix7ZDoiTTIwIDIwYTIgMiAwIDAgMCAyLTJWOGEyIDIgMCAwIDAtMi0yaC03LjlhMiAyIDAgMCAxLTEuNjktLjlMOS42IDMuOUEyIDIgMCAwIDAgNy45MyAzSDRhMiAyIDAgMCAwLTIgMnYxM2EyIDIgMCAwIDAgMiAyWiJ9XSxbInBhdGgiLHtkOiJNMiAxMGgyMCJ9XV19KTt2YXIgcVAsaEFlPWcoKCk9PntxUD1bWyJwYXRoIix7ZDoiTTEwIDEwLjUgOCAxM2wyIDIuNSJ9XSxbInBhdGgiLHtkOiJtMTQgMTAuNSAyIDIuNS0yIDIuNSJ9XSxbInBhdGgiLHtkOiJNMjAgMjBhMiAyIDAgMCAwIDItMlY4YTIgMiAwIDAgMC0yLTJoLTcuOWEyIDIgMCAwIDEtMS42OS0uOUw5LjYgMy45QTIgMiAwIDAgMCA3LjkzIDNINGEyIDIgMCAwIDAtMiAydjEzYTIgMiAwIDAgMCAyIDJ6In1dXX0pO3ZhciBjNixmQWU9ZygoKT0+e2M2PVtbInBhdGgiLHtkOiJNMTAuMyAyMEg0YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDMuOThhMiAyIDAgMCAxIDEuNjkuOWwuNjYgMS4yQTIgMiAwIDAgMCAxMiA2aDhhMiAyIDAgMCAxIDIgMnYzLjMifV0sWyJwYXRoIix7ZDoibTE0LjMwNSAxOS41My45MjMtLjM4MiJ9XSxbInBhdGgiLHtkOiJtMTUuMjI4IDE2Ljg1Mi0uOTIzLS4zODMifV0sWyJwYXRoIix7ZDoibTE2Ljg1MiAxNS4yMjgtLjM4My0uOTIzIn1dLFsicGF0aCIse2Q6Im0xNi44NTIgMjAuNzcyLS4zODMuOTI0In1dLFsicGF0aCIse2Q6Im0xOS4xNDggMTUuMjI4LjM4My0uOTIzIn1dLFsicGF0aCIse2Q6Im0xOS41MyAyMS42OTYtLjM4Mi0uOTI0In1dLFsicGF0aCIse2Q6Im0yMC43NzIgMTYuODUyLjkyNC0uMzgzIn1dLFsicGF0aCIse2Q6Im0yMC43NzIgMTkuMTQ4LjkyNC4zODMifV0sWyJjaXJjbGUiLHtjeDoiMTgiLGN5OiIxOCIscjoiMyJ9XV19KTt2YXIgalAsbUFlPWcoKCk9PntqUD1bWyJwYXRoIix7ZDoiTTE2IDE0djIuMmwxLjYgMSJ9XSxbInBhdGgiLHtkOiJNNyAyMEg0YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDMuOWEyIDIgMCAwIDEgMS42OS45bC44MSAxLjJhMiAyIDAgMCAwIDEuNjcuOUgyMGEyIDIgMCAwIDEgMiAyIn1dLFsiY2lyY2xlIix7Y3g6IjE2IixjeToiMTYiLHI6IjYifV1dfSk7dmFyIFZQLGdBZT1nKCgpPT57VlA9W1sicGF0aCIse2Q6Ik00IDIwaDE2YTIgMiAwIDAgMCAyLTJWOGEyIDIgMCAwIDAtMi0yaC03LjkzYTIgMiAwIDAgMS0xLjY2LS45bC0uODItMS4yQTIgMiAwIDAgMCA3LjkzIDNINGEyIDIgMCAwIDAtMiAydjEzYzAgMS4xLjkgMiAyIDJaIn1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiMTMiLHI6IjEifV1dfSk7dmFyIFVQLGJBZT1nKCgpPT57VVA9W1sicGF0aCIse2Q6Ik0yMCAyMGEyIDIgMCAwIDAgMi0yVjhhMiAyIDAgMCAwLTItMmgtNy45YTIgMiAwIDAgMS0xLjY5LS45TDkuNiAzLjlBMiAyIDAgMCAwIDcuOTMgM0g0YTIgMiAwIDAgMC0yIDJ2MTNhMiAyIDAgMCAwIDIgMloifV0sWyJwYXRoIix7ZDoiTTEyIDEwdjYifV0sWyJwYXRoIix7ZDoibTE1IDEzLTMgMy0zLTMifV1dfSk7dmFyIFdQLHZBZT1nKCgpPT57V1A9W1sicGF0aCIse2Q6Ik0xOCAxOWE1IDUgMCAwIDEtNS01djgifV0sWyJwYXRoIix7ZDoiTTkgMjBINGEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmgzLjlhMiAyIDAgMCAxIDEuNjkuOWwuODEgMS4yYTIgMiAwIDAgMCAxLjY3LjlIMjBhMiAyIDAgMCAxIDIgMnY1In1dLFsiY2lyY2xlIix7Y3g6IjEzIixjeToiMTIiLHI6IjIifV0sWyJjaXJjbGUiLHtjeDoiMjAiLGN5OiIxOSIscjoiMiJ9XV19KTt2YXIgR1AseEFlPWcoKCk9PntHUD1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMyIscjoiMiJ9XSxbInBhdGgiLHtkOiJNMjAgMjBhMiAyIDAgMCAwIDItMlY4YTIgMiAwIDAgMC0yLTJoLTcuOWEyIDIgMCAwIDEtMS42OS0uOUw5LjYgMy45QTIgMiAwIDAgMCA3LjkzIDNINGEyIDIgMCAwIDAtMiAydjEzYTIgMiAwIDAgMCAyIDJaIn1dLFsicGF0aCIse2Q6Ik0xNCAxM2gzIn1dLFsicGF0aCIse2Q6Ik03IDEzaDMifV1dfSk7dmFyIEtQLHlBZT1nKCgpPT57S1A9W1sicGF0aCIse2Q6Ik0xMC42MzggMjBINGEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmgzLjlhMiAyIDAgMCAxIDEuNjkuOWwuODEgMS4yYTIgMiAwIDAgMCAxLjY3LjlIMjBhMiAyIDAgMCAxIDIgMnYzLjQxNyJ9XSxbInBhdGgiLHtkOiJNMTQuNjIgMTguOEEyLjI1IDIuMjUgMCAxIDEgMTggMTUuODM2YTIuMjUgMi4yNSAwIDEgMSAzLjM4IDIuOTY2bC0yLjYyNiAyLjg1NmEuOTk4Ljk5OCAwIDAgMS0xLjUwNyAweiJ9XV19KTt2YXIgWVAsd0FlPWcoKCk9PntZUD1bWyJwYXRoIix7ZDoiTTQgMjBoMTZhMiAyIDAgMCAwIDItMlY4YTIgMiAwIDAgMC0yLTJoLTcuOTNhMiAyIDAgMCAxLTEuNjYtLjlsLS44Mi0xLjJBMiAyIDAgMCAwIDcuOTMgM0g0YTIgMiAwIDAgMC0yIDJ2MTNjMCAxLjEuOSAyIDIgMloifV0sWyJwYXRoIix7ZDoiTTggMTB2NCJ9XSxbInBhdGgiLHtkOiJNMTIgMTB2MiJ9XSxbInBhdGgiLHtkOiJNMTYgMTB2NiJ9XV19KTt2YXIgWlAsa0FlPWcoKCk9PntaUD1bWyJwYXRoIix7ZDoiTTEzIDIwSDRhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoMy45YTIgMiAwIDAgMSAxLjY5LjlsLjgxIDEuMmEyIDIgMCAwIDAgMS42Ny45SDIwYTIgMiAwIDAgMSAyIDJ2MS4zNiJ9XSxbInBhdGgiLHtkOiJNMTkgMTJ2NiJ9XSxbInBhdGgiLHtkOiJNMTkgMTRoMiJ9XSxbImNpcmNsZSIse2N4OiIxOSIsY3k6IjIwIixyOiIyIn1dXX0pO3ZhciBYUCxTQWU9ZygoKT0+e1hQPVtbInBhdGgiLHtkOiJNMiA5VjVhMiAyIDAgMCAxIDItMmgzLjlhMiAyIDAgMCAxIDEuNjkuOWwuODEgMS4yYTIgMiAwIDAgMCAxLjY3LjlIMjBhMiAyIDAgMCAxIDIgMnYxMGEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMnYtMSJ9XSxbInBhdGgiLHtkOiJNMiAxM2gxMCJ9XSxbInBhdGgiLHtkOiJtOSAxNiAzLTMtMy0zIn1dXX0pO3ZhciBRUCxfQWU9ZygoKT0+e1FQPVtbInJlY3QiLHt3aWR0aDoiOCIsaGVpZ2h0OiI1Iix4OiIxNCIseToiMTciLHJ4OiIxIn1dLFsicGF0aCIse2Q6Ik0xMCAyMEg0YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDMuOWEyIDIgMCAwIDEgMS42OS45bC44MSAxLjJhMiAyIDAgMCAwIDEuNjcuOUgyMGEyIDIgMCAwIDEgMiAydjIuNSJ9XSxbInBhdGgiLHtkOiJNMjAgMTd2LTJhMiAyIDAgMSAwLTQgMHYyIn1dXX0pO3ZhciBKUCxNQWU9ZygoKT0+e0pQPVtbInBhdGgiLHtkOiJtNiAxNCAxLjQ1LTIuOUEyIDIgMCAwIDEgOS4yNCAxMEgyMGEyIDIgMCAwIDEgMS45NCAyLjVsLTEuNTUgNmEyIDIgMCAwIDEtMS45NCAxLjVINGEyIDIgMCAwIDEtMi0yVjVjMC0xLjEuOS0yIDItMmgzLjkzYTIgMiAwIDAgMSAxLjY2LjlsLjgyIDEuMmEyIDIgMCAwIDAgMS42Ni45SDE4YTIgMiAwIDAgMSAyIDJ2MiJ9XSxbImNpcmNsZSIse2N4OiIxNCIsY3k6IjE1IixyOiIxIn1dXX0pO3ZhciBlSSx6QWU9ZygoKT0+e2VJPVtbInBhdGgiLHtkOiJtNiAxNCAxLjUtMi45QTIgMiAwIDAgMSA5LjI0IDEwSDIwYTIgMiAwIDAgMSAxLjk0IDIuNWwtMS41NCA2YTIgMiAwIDAgMS0xLjk1IDEuNUg0YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDMuOWEyIDIgMCAwIDEgMS42OS45bC44MSAxLjJhMiAyIDAgMCAwIDEuNjcuOUgxOGEyIDIgMCAwIDEgMiAydjIifV1dfSk7dmFyIHRJLENBZT1nKCgpPT57dEk9W1sicGF0aCIse2Q6Ik05IDEzaDYifV0sWyJwYXRoIix7ZDoiTTIwIDIwYTIgMiAwIDAgMCAyLTJWOGEyIDIgMCAwIDAtMi0yaC03LjlhMiAyIDAgMCAxLTEuNjktLjlMOS42IDMuOUEyIDIgMCAwIDAgNy45MyAzSDRhMiAyIDAgMCAwLTIgMnYxM2EyIDIgMCAwIDAgMiAyWiJ9XV19KTt2YXIgYUksVEFlPWcoKCk9PnthST1bWyJwYXRoIix7ZDoiTTIgNy41VjVhMiAyIDAgMCAxIDItMmgzLjlhMiAyIDAgMCAxIDEuNjkuOWwuODEgMS4yYTIgMiAwIDAgMCAxLjY3LjlIMjBhMiAyIDAgMCAxIDIgMnYxMGEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMS41In1dLFsicGF0aCIse2Q6Ik0yIDEzaDEwIn1dLFsicGF0aCIse2Q6Im01IDEwLTMgMyAzIDMifV1dfSk7dmFyIGQ2LCRBZT1nKCgpPT57ZDY9W1sicGF0aCIse2Q6Ik0yIDExLjVWNWEyIDIgMCAwIDEgMi0yaDMuOWMuNyAwIDEuMy4zIDEuNy45bC44IDEuMmMuNC42IDEgLjkgMS43LjlIMjBhMiAyIDAgMCAxIDIgMnYxMGEyIDIgMCAwIDEtMiAyaC05LjUifV0sWyJwYXRoIix7ZDoiTTExLjM3OCAxMy42MjZhMSAxIDAgMSAwLTMuMDA0LTMuMDA0bC01LjAxIDUuMDEyYTIgMiAwIDAgMC0uNTA2Ljg1NGwtLjgzNyAyLjg3YS41LjUgMCAwIDAgLjYyLjYybDIuODctLjgzN2EyIDIgMCAwIDAgLjg1NC0uNTA2eiJ9XV19KTt2YXIgc0ksREFlPWcoKCk9PntzST1bWyJwYXRoIix7ZDoiTTEyIDEwdjYifV0sWyJwYXRoIix7ZDoiTTkgMTNoNiJ9XSxbInBhdGgiLHtkOiJNMjAgMjBhMiAyIDAgMCAwIDItMlY4YTIgMiAwIDAgMC0yLTJoLTcuOWEyIDIgMCAwIDEtMS42OS0uOUw5LjYgMy45QTIgMiAwIDAgMCA3LjkzIDNINGEyIDIgMCAwIDAtMiAydjEzYTIgMiAwIDAgMCAyIDJaIn1dXX0pO3ZhciBpSSxMQWU9ZygoKT0+e2lJPVtbInBhdGgiLHtkOiJNNCAyMGgxNmEyIDIgMCAwIDAgMi0yVjhhMiAyIDAgMCAwLTItMmgtNy45M2EyIDIgMCAwIDEtMS42Ni0uOWwtLjgyLTEuMkEyIDIgMCAwIDAgNy45MyAzSDRhMiAyIDAgMCAwLTIgMnYxM2MwIDEuMS45IDIgMiAyWiJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEzIixyOiIyIn1dLFsicGF0aCIse2Q6Ik0xMiAxNXY1In1dXX0pO3ZhciBySSxFQWU9ZygoKT0+e3JJPVtbImNpcmNsZSIse2N4OiIxMS41IixjeToiMTIuNSIscjoiMi41In1dLFsicGF0aCIse2Q6Ik0yMCAyMGEyIDIgMCAwIDAgMi0yVjhhMiAyIDAgMCAwLTItMmgtNy45YTIgMiAwIDAgMS0xLjY5LS45TDkuNiAzLjlBMiAyIDAgMCAwIDcuOTMgM0g0YTIgMiAwIDAgMC0yIDJ2MTNhMiAyIDAgMCAwIDIgMloifV0sWyJwYXRoIix7ZDoiTTEzLjMgMTQuMyAxNSAxNiJ9XV19KTt2YXIgb0ksUEFlPWcoKCk9PntvST1bWyJwYXRoIix7ZDoiTTEwLjcgMjBINGEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmgzLjlhMiAyIDAgMCAxIDEuNjkuOWwuODEgMS4yYTIgMiAwIDAgMCAxLjY3LjlIMjBhMiAyIDAgMCAxIDIgMnY0LjEifV0sWyJwYXRoIix7ZDoibTIxIDIxLTEuOS0xLjkifV0sWyJjaXJjbGUiLHtjeDoiMTciLGN5OiIxNyIscjoiMyJ9XV19KTt2YXIgbkksSUFlPWcoKCk9PntuST1bWyJwYXRoIix7ZDoiTTIgOS4zNVY1YTIgMiAwIDAgMSAyLTJoMy45YTIgMiAwIDAgMSAxLjY5LjlsLjgxIDEuMmEyIDIgMCAwIDAgMS42Ny45SDIwYTIgMiAwIDAgMSAyIDJ2MTBhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJ2LTNhMiAyIDAgMCAxIDItMmg3In1dLFsicGF0aCIse2Q6Im04IDE2IDMtMy0zLTMifV1dfSk7dmFyIGxJLEFBZT1nKCgpPT57bEk9W1sicGF0aCIse2Q6Ik0yMCAxMGExIDEgMCAwIDAgMS0xVjZhMSAxIDAgMCAwLTEtMWgtMi41YTEgMSAwIDAgMS0uOC0uNGwtLjktMS4yQTEgMSAwIDAgMCAxNSAzaC0yYTEgMSAwIDAgMC0xIDF2NWExIDEgMCAwIDAgMSAxWiJ9XSxbInBhdGgiLHtkOiJNMjAgMjFhMSAxIDAgMCAwIDEtMXYtM2ExIDEgMCAwIDAtMS0xaC0yLjlhMSAxIDAgMCAxLS44OC0uNTVsLS40Mi0uODVhMSAxIDAgMCAwLS45Mi0uNkgxM2ExIDEgMCAwIDAtMSAxdjVhMSAxIDAgMCAwIDEgMVoifV0sWyJwYXRoIix7ZDoiTTMgNWEyIDIgMCAwIDAgMiAyaDMifV0sWyJwYXRoIix7ZDoiTTMgM3YxM2EyIDIgMCAwIDAgMiAyaDMifV1dfSk7dmFyIGNJLE5BZT1nKCgpPT57Y0k9W1sicGF0aCIse2Q6Ik05IDIwSDRhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoMy45YTIgMiAwIDAgMSAxLjY5LjlsLjgxIDEuMmEyIDIgMCAwIDAgMS42Ny45SDIwYTIgMiAwIDAgMSAyIDJ2LjUifV0sWyJwYXRoIix7ZDoiTTEyIDEwdjRoNCJ9XSxbInBhdGgiLHtkOiJtMTIgMTQgMS41MzUtMS42MDVhNSA1IDAgMCAxIDggMS41In1dLFsicGF0aCIse2Q6Ik0yMiAyMnYtNGgtNCJ9XSxbInBhdGgiLHtkOiJtMjIgMTgtMS41MzUgMS42MDVhNSA1IDAgMCAxLTgtMS41In1dXX0pO3ZhciBkSSxSQWU9ZygoKT0+e2RJPVtbInBhdGgiLHtkOiJNMjAgMjBhMiAyIDAgMCAwIDItMlY4YTIgMiAwIDAgMC0yLTJoLTcuOWEyIDIgMCAwIDEtMS42OS0uOUw5LjYgMy45QTIgMiAwIDAgMCA3LjkzIDNINGEyIDIgMCAwIDAtMiAydjEzYTIgMiAwIDAgMCAyIDJaIn1dLFsicGF0aCIse2Q6Ik0xMiAxMHY2In1dLFsicGF0aCIse2Q6Im05IDEzIDMtMyAzIDMifV1dfSk7dmFyIHVJLE9BZT1nKCgpPT57dUk9W1sicGF0aCIse2Q6Ik0yMCAyMGEyIDIgMCAwIDAgMi0yVjhhMiAyIDAgMCAwLTItMmgtNy45YTIgMiAwIDAgMS0xLjY5LS45TDkuNiAzLjlBMiAyIDAgMCAwIDcuOTMgM0g0YTIgMiAwIDAgMC0yIDJ2MTNhMiAyIDAgMCAwIDIgMloifV0sWyJwYXRoIix7ZDoibTkuNSAxMC41IDUgNSJ9XSxbInBhdGgiLHtkOiJtMTQuNSAxMC41LTUgNSJ9XV19KTt2YXIgcEksRkFlPWcoKCk9PntwST1bWyJwYXRoIix7ZDoiTTIwIDIwYTIgMiAwIDAgMCAyLTJWOGEyIDIgMCAwIDAtMi0yaC03LjlhMiAyIDAgMCAxLTEuNjktLjlMOS42IDMuOUEyIDIgMCAwIDAgNy45MyAzSDRhMiAyIDAgMCAwLTIgMnYxM2EyIDIgMCAwIDAgMiAyWiJ9XV19KTt2YXIgaEksQkFlPWcoKCk9PntoST1bWyJwYXRoIix7ZDoiTTIwIDVhMiAyIDAgMCAxIDIgMnY3YTIgMiAwIDAgMS0yIDJIOWEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmgyLjVhMS41IDEuNSAwIDAgMSAxLjIuNmwuNi44YTEuNSAxLjUgMCAwIDAgMS4yLjZ6In1dLFsicGF0aCIse2Q6Ik0zIDguMjY4YTIgMiAwIDAgMC0xIDEuNzM4VjE5YTIgMiAwIDAgMCAyIDJoMTFhMiAyIDAgMCAwIDEuNzMyLTEifV1dfSk7dmFyIGZJLEhBZT1nKCgpPT57Zkk9W1sicGF0aCIse2Q6Ik00IDE2di0yLjM4QzQgMTEuNSAyLjk3IDEwLjUgMyA4Yy4wMy0yLjcyIDEuNDktNiA0LjUtNkM5LjM3IDIgMTAgMy44IDEwIDUuNWMwIDMuMTEtMiA1LjY2LTIgOC42OFYxNmEyIDIgMCAxIDEtNCAwWiJ9XSxbInBhdGgiLHtkOiJNMjAgMjB2LTIuMzhjMC0yLjEyIDEuMDMtMy4xMiAxLTUuNjItLjAzLTIuNzItMS40OS02LTQuNS02QzE0LjYzIDYgMTQgNy44IDE0IDkuNWMwIDMuMTEgMiA1LjY2IDIgOC42OFYyMGEyIDIgMCAxIDAgNCAwWiJ9XSxbInBhdGgiLHtkOiJNMTYgMTdoNCJ9XSxbInBhdGgiLHtkOiJNNCAxM2g0In1dXX0pO3ZhciBtSSxxQWU9ZygoKT0+e21JPVtbInBhdGgiLHtkOiJNMTIgMTJINWEyIDIgMCAwIDAtMiAydjUifV0sWyJwYXRoIix7ZDoiTTE1IDE5aDcifV0sWyJwYXRoIix7ZDoiTTE2IDE5VjIifV0sWyJwYXRoIix7ZDoiTTYgMTJWN2EyIDIgMCAwIDEgMi0yaDIuMTcyYTIgMiAwIDAgMSAxLjQxNC41ODZsMy44MjggMy44MjhBMiAyIDAgMCAxIDE2IDEwLjgyOCJ9XSxbInBhdGgiLHtkOiJNNyAxOWg0In1dLFsiY2lyY2xlIix7Y3g6IjEzIixjeToiMTkiLHI6IjIifV0sWyJjaXJjbGUiLHtjeDoiNSIsY3k6IjE5IixyOiIyIn1dXX0pO3ZhciBnSSxqQWU9ZygoKT0+e2dJPVtbInBhdGgiLHtkOiJNNCAxNGg2In1dLFsicGF0aCIse2Q6Ik00IDJoMTAifV0sWyJyZWN0Iix7eDoiNCIseToiMTgiLHdpZHRoOiIxNiIsaGVpZ2h0OiI0IixyeDoiMSJ9XSxbInJlY3QiLHt4OiI0Iix5OiI2Iix3aWR0aDoiMTYiLGhlaWdodDoiNCIscng6IjEifV1dfSk7dmFyIGJJLFZBZT1nKCgpPT57Ykk9W1sicGF0aCIse2Q6Im0xNSAxNyA1LTUtNS01In1dLFsicGF0aCIse2Q6Ik00IDE4di0yYTQgNCAwIDAgMSA0LTRoMTIifV1dfSk7dmFyIHZJLFVBZT1nKCgpPT57dkk9W1sibGluZSIse3gxOiIyMiIseDI6IjIiLHkxOiI2Iix5MjoiNiJ9XSxbImxpbmUiLHt4MToiMjIiLHgyOiIyIix5MToiMTgiLHkyOiIxOCJ9XSxbImxpbmUiLHt4MToiNiIseDI6IjYiLHkxOiIyIix5MjoiMjIifV0sWyJsaW5lIix7eDE6IjE4Iix4MjoiMTgiLHkxOiIyIix5MjoiMjIifV1dfSk7dmFyIHhJLFdBZT1nKCgpPT57eEk9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIn1dLFsicGF0aCIse2Q6Ik0xNiAxNnMtMS41LTItNC0yLTQgMi00IDIifV0sWyJsaW5lIix7eDE6IjkiLHgyOiI5LjAxIix5MToiOSIseTI6IjkifV0sWyJsaW5lIix7eDE6IjE1Iix4MjoiMTUuMDEiLHkxOiI5Iix5MjoiOSJ9XV19KTt2YXIgeUksR0FlPWcoKCk9Pnt5ST1bWyJwYXRoIix7ZDoiTTE0IDEzaDJhMiAyIDAgMCAxIDIgMnYyYTIgMiAwIDAgMCA0IDB2LTYuOTk4YTIgMiAwIDAgMC0uNTktMS40MkwxOCA1In1dLFsicGF0aCIse2Q6Ik0xNCAyMVY1YTIgMiAwIDAgMC0yLTJINWEyIDIgMCAwIDAtMiAydjE2In1dLFsicGF0aCIse2Q6Ik0yIDIxaDEzIn1dLFsicGF0aCIse2Q6Ik0zIDloMTEifV1dfSk7dmFyIHdJLEtBZT1nKCgpPT57d0k9W1sicGF0aCIse2Q6Ik0zIDdWNWEyIDIgMCAwIDEgMi0yaDIifV0sWyJwYXRoIix7ZDoiTTE3IDNoMmEyIDIgMCAwIDEgMiAydjIifV0sWyJwYXRoIix7ZDoiTTIxIDE3djJhMiAyIDAgMCAxLTIgMmgtMiJ9XSxbInBhdGgiLHtkOiJNNyAyMUg1YTIgMiAwIDAgMS0yLTJ2LTIifV0sWyJyZWN0Iix7d2lkdGg6IjEwIixoZWlnaHQ6IjgiLHg6IjciLHk6IjgiLHJ4OiIxIn1dXX0pO3ZhciBrSSxZQWU9ZygoKT0+e2tJPVtbInBhdGgiLHtkOiJNMTMuMzU0IDNIM2ExIDEgMCAwIDAtLjc0MiAxLjY3bDcuMjI1IDcuOTg5QTIgMiAwIDAgMSAxMCAxNHY2YTEgMSAwIDAgMCAuNTUzLjg5NWwyIDFBMSAxIDAgMCAwIDE0IDIxdi03YTIgMiAwIDAgMSAuNTE3LTEuMzQxbDEuMjE4LTEuMzQ4In1dLFsicGF0aCIse2Q6Ik0xNiA2aDYifV0sWyJwYXRoIix7ZDoiTTE5IDN2NiJ9XV19KTt2YXIgdTYsWkFlPWcoKCk9Pnt1Nj1bWyJwYXRoIix7ZDoiTTEyLjUzMSAzSDNhMSAxIDAgMCAwLS43NDIgMS42N2w3LjIyNSA3Ljk4OUEyIDIgMCAwIDEgMTAgMTR2NmExIDEgMCAwIDAgLjU1My44OTVsMiAxQTEgMSAwIDAgMCAxNCAyMXYtN2EyIDIgMCAwIDEgLjUxNy0xLjM0MWwuNDI3LS40NzMifV0sWyJwYXRoIix7ZDoibTE2LjUgMy41IDUgNSJ9XSxbInBhdGgiLHtkOiJtMjEuNSAzLjUtNSA1In1dXX0pO3ZhciBTSSxYQWU9ZygoKT0+e1NJPVtbInBhdGgiLHtkOiJNMiA3djEwIn1dLFsicGF0aCIse2Q6Ik02IDV2MTQifV0sWyJyZWN0Iix7d2lkdGg6IjEyIixoZWlnaHQ6IjE4Iix4OiIxMCIseToiMyIscng6IjIifV1dfSk7dmFyIHA2LFFBZT1nKCgpPT57cDY9W1sicGF0aCIse2Q6Ik0xMCAyMGExIDEgMCAwIDAgLjU1My44OTVsMiAxQTEgMSAwIDAgMCAxNCAyMXYtN2EyIDIgMCAwIDEgLjUxNy0xLjM0MUwyMS43NCA0LjY3QTEgMSAwIDAgMCAyMSAzSDNhMSAxIDAgMCAwLS43NDIgMS42N2w3LjIyNSA3Ljk4OUEyIDIgMCAwIDEgMTAgMTR6In1dXX0pO3ZhciBfSSxKQWU9ZygoKT0+e19JPVtbInBhdGgiLHtkOiJNMiAzdjE4In1dLFsicmVjdCIse3dpZHRoOiIxMiIsaGVpZ2h0OiIxOCIseDoiNiIseToiMyIscng6IjIifV0sWyJwYXRoIix7ZDoiTTIyIDN2MTgifV1dfSk7dmFyIE1JLGVOZT1nKCgpPT57TUk9W1sicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxNCIseDoiMyIseToiMyIscng6IjIifV0sWyJwYXRoIix7ZDoiTTQgMjFoMSJ9XSxbInBhdGgiLHtkOiJNOSAyMWgxIn1dLFsicGF0aCIse2Q6Ik0xNCAyMWgxIn1dLFsicGF0aCIse2Q6Ik0xOSAyMWgxIn1dXX0pO3ZhciB6SSx0TmU9ZygoKT0+e3pJPVtbInBhdGgiLHtkOiJNNyAyaDEwIn1dLFsicGF0aCIse2Q6Ik01IDZoMTQifV0sWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjEyIix4OiIzIix5OiIxMCIscng6IjIifV1dfSk7dmFyIENJLGFOZT1nKCgpPT57Q0k9W1sicGF0aCIse2Q6Ik0zIDJoMTgifV0sWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjEyIix4OiIzIix5OiI2IixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNMyAyMmgxOCJ9XV19KTt2YXIgVEksc05lPWcoKCk9PntUST1bWyJsaW5lIix7eDE6IjYiLHgyOiIxMCIseTE6IjExIix5MjoiMTEifV0sWyJsaW5lIix7eDE6IjgiLHgyOiI4Iix5MToiOSIseTI6IjEzIn1dLFsibGluZSIse3gxOiIxNSIseDI6IjE1LjAxIix5MToiMTIiLHkyOiIxMiJ9XSxbImxpbmUiLHt4MToiMTgiLHgyOiIxOC4wMSIseTE6IjEwIix5MjoiMTAifV0sWyJwYXRoIix7ZDoiTTE3LjMyIDVINi42OGE0IDQgMCAwIDAtMy45NzggMy41OWMtLjAwNi4wNTItLjAxLjEwMS0uMDE3LjE1MkMyLjYwNCA5LjQxNiAyIDE0LjQ1NiAyIDE2YTMgMyAwIDAgMCAzIDNjMSAwIDEuNS0uNSAyLTFsMS40MTQtMS40MTRBMiAyIDAgMCAxIDkuODI4IDE2aDQuMzQ0YTIgMiAwIDAgMSAxLjQxNC41ODZMMTcgMThjLjUuNSAxIDEgMiAxYTMgMyAwIDAgMCAzLTNjMC0xLjU0NS0uNjA0LTYuNTg0LS42ODUtNy4yNTgtLjAwNy0uMDUtLjAxMS0uMS0uMDE3LS4xNTFBNCA0IDAgMCAwIDE3LjMyIDV6In1dXX0pO3ZhciAkSSxpTmU9ZygoKT0+eyRJPVtbInBhdGgiLHtkOiJNMTEuMTQ2IDE1Ljg1NGExLjIwNyAxLjIwNyAwIDAgMSAxLjcwOCAwbDEuNTYgMS41NkEyIDIgMCAwIDEgMTUgMTguODI4VjIxYTEgMSAwIDAgMS0xIDFoLTRhMSAxIDAgMCAxLTEtMXYtMi4xNzJhMiAyIDAgMCAxIC41ODYtMS40MTR6In1dLFsicGF0aCIse2Q6Ik0xOC44MjggMTVhMiAyIDAgMCAxLTEuNDE0LS41ODZsLTEuNTYtMS41NmExLjIwNyAxLjIwNyAwIDAgMSAwLTEuNzA4bDEuNTYtMS41NkEyIDIgMCAwIDEgMTguODI4IDlIMjFhMSAxIDAgMCAxIDEgMXY0YTEgMSAwIDAgMS0xIDF6In1dLFsicGF0aCIse2Q6Ik02LjU4NiAxNC40MTRBMiAyIDAgMCAxIDUuMTcyIDE1SDNhMSAxIDAgMCAxLTEtMXYtNGExIDEgMCAwIDEgMS0xaDIuMTcyYTIgMiAwIDAgMSAxLjQxNC41ODZsMS41NiAxLjU2YTEuMjA3IDEuMjA3IDAgMCAxIDAgMS43MDh6In1dLFsicGF0aCIse2Q6Ik05IDNhMSAxIDAgMCAxIDEtMWg0YTEgMSAwIDAgMSAxIDF2Mi4xNzJhMiAyIDAgMCAxLS41ODYgMS40MTRsLTEuNTYgMS41NmExLjIwNyAxLjIwNyAwIDAgMS0xLjcwOCAwbC0xLjU2LTEuNTZBMiAyIDAgMCAxIDkgNS4xNzJ6In1dXX0pO3ZhciBESSxyTmU9ZygoKT0+e0RJPVtbImxpbmUiLHt4MToiNiIseDI6IjEwIix5MToiMTIiLHkyOiIxMiJ9XSxbImxpbmUiLHt4MToiOCIseDI6IjgiLHkxOiIxMCIseTI6IjE0In1dLFsibGluZSIse3gxOiIxNSIseDI6IjE1LjAxIix5MToiMTMiLHkyOiIxMyJ9XSxbImxpbmUiLHt4MToiMTgiLHgyOiIxOC4wMSIseTE6IjExIix5MjoiMTEifV0sWyJyZWN0Iix7d2lkdGg6IjIwIixoZWlnaHQ6IjEyIix4OiIyIix5OiI2IixyeDoiMiJ9XV19KTt2YXIgTEksb05lPWcoKCk9PntMST1bWyJwYXRoIix7ZDoibTEyIDE0IDQtNCJ9XSxbInBhdGgiLHtkOiJNMy4zNCAxOWExMCAxMCAwIDEgMSAxNy4zMiAwIn1dXX0pO3ZhciBFSSxuTmU9ZygoKT0+e0VJPVtbInBhdGgiLHtkOiJtMTQgMTMtOC4zODEgOC4zOGExIDEgMCAwIDEtMy4wMDEtM2w4LjM4NC04LjM4MSJ9XSxbInBhdGgiLHtkOiJtMTYgMTYgNi02In1dLFsicGF0aCIse2Q6Im0yMS41IDEwLjUtOC04In1dLFsicGF0aCIse2Q6Im04IDggNi02In1dLFsicGF0aCIse2Q6Im04LjUgNy41IDggOCJ9XV19KTt2YXIgUEksbE5lPWcoKCk9PntQST1bWyJwYXRoIix7ZDoiTTEwLjUgMyA4IDlsNCAxMyA0LTEzLTIuNS02In1dLFsicGF0aCIse2Q6Ik0xNyAzYTIgMiAwIDAgMSAxLjYuOGwzIDRhMiAyIDAgMCAxIC4wMTMgMi4zODJsLTcuOTkgMTAuOTg2YTIgMiAwIDAgMS0zLjI0NyAwbC03Ljk5LTEwLjk4NkEyIDIgMCAwIDEgMi40IDcuOGwyLjk5OC0zLjk5N0EyIDIgMCAwIDEgNyAzeiJ9XSxbInBhdGgiLHtkOiJNMiA5aDIwIn1dXX0pO3ZhciBJSSxjTmU9ZygoKT0+e0lJPVtbInBhdGgiLHtkOiJNOSAxMGguMDEifV0sWyJwYXRoIix7ZDoiTTE1IDEwaC4wMSJ9XSxbInBhdGgiLHtkOiJNMTIgMmE4IDggMCAwIDAtOCA4djEybDMtMyAyLjUgMi41TDEyIDE5bDIuNSAyLjVMMTcgMTlsMyAzVjEwYTggOCAwIDAgMC04LTh6In1dXX0pO3ZhciBBSSxkTmU9ZygoKT0+e0FJPVtbInBhdGgiLHtkOiJNMTEuNSAyMWE3LjUgNy41IDAgMSAxIDcuMzUtOSJ9XSxbInBhdGgiLHtkOiJNMTMgMTJWMyJ9XSxbInBhdGgiLHtkOiJNNCAyMWgxNiJ9XSxbInBhdGgiLHtkOiJNOSAxMlYzIn1dXX0pO3ZhciBOSSx1TmU9ZygoKT0+e05JPVtbInBhdGgiLHtkOiJNMTUgNmE5IDkgMCAwIDAtOSA5VjMifV0sWyJwYXRoIix7ZDoiTTIxIDE4aC02In1dLFsiY2lyY2xlIix7Y3g6IjE4IixjeToiNiIscjoiMyJ9XSxbImNpcmNsZSIse2N4OiI2IixjeToiMTgiLHI6IjMifV1dfSk7dmFyIFJJLHBOZT1nKCgpPT57Ukk9W1sicGF0aCIse2Q6Ik0xMiA3djE0In1dLFsicGF0aCIse2Q6Ik0yMCAxMXY4YTIgMiAwIDAgMS0yIDJINmEyIDIgMCAwIDEtMi0ydi04In1dLFsicGF0aCIse2Q6Ik03LjUgN2ExIDEgMCAwIDEgMC01QTQuOCA4IDAgMCAxIDEyIDdhNC44IDggMCAwIDEgNC41LTUgMSAxIDAgMCAxIDAgNSJ9XSxbInJlY3QiLHt4OiIzIix5OiI3Iix3aWR0aDoiMTgiLGhlaWdodDoiNCIscng6IjEifV1dfSk7dmFyIE9JLGhOZT1nKCgpPT57T0k9W1sicGF0aCIse2Q6Ik02IDN2MTIifV0sWyJwYXRoIix7ZDoiTTE4IDlhMyAzIDAgMSAwIDAtNiAzIDMgMCAwIDAgMCA2eiJ9XSxbInBhdGgiLHtkOiJNNiAyMWEzIDMgMCAxIDAgMC02IDMgMyAwIDAgMCAwIDZ6In1dLFsicGF0aCIse2Q6Ik0xNSA2YTkgOSAwIDAgMC05IDkifV0sWyJwYXRoIix7ZDoiTTE4IDE1djYifV0sWyJwYXRoIix7ZDoiTTIxIDE4aC02In1dXX0pO3ZhciBGSSxmTmU9ZygoKT0+e0ZJPVtbInBhdGgiLHtkOiJNMTUgNmE5IDkgMCAwIDAtOSA5VjMifV0sWyJjaXJjbGUiLHtjeDoiMTgiLGN5OiI2IixyOiIzIn1dLFsiY2lyY2xlIix7Y3g6IjYiLGN5OiIxOCIscjoiMyJ9XV19KTt2YXIgaDYsbU5lPWcoKCk9PntoNj1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMyJ9XSxbImxpbmUiLHt4MToiMyIseDI6IjkiLHkxOiIxMiIseTI6IjEyIn1dLFsibGluZSIse3gxOiIxNSIseDI6IjIxIix5MToiMTIiLHkyOiIxMiJ9XV19KTt2YXIgQkksZ05lPWcoKCk9PntCST1bWyJwYXRoIix7ZDoiTTEyIDN2NiJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIzIn1dLFsicGF0aCIse2Q6Ik0xMiAxNXY2In1dXX0pO3ZhciBISSxiTmU9ZygoKT0+e0hJPVtbImNpcmNsZSIse2N4OiI1IixjeToiNiIscjoiMyJ9XSxbInBhdGgiLHtkOiJNMTIgNmg1YTIgMiAwIDAgMSAyIDJ2NyJ9XSxbInBhdGgiLHtkOiJtMTUgOS0zLTMgMy0zIn1dLFsiY2lyY2xlIix7Y3g6IjE5IixjeToiMTgiLHI6IjMifV0sWyJwYXRoIix7ZDoiTTEyIDE4SDdhMiAyIDAgMCAxLTItMlY5In1dLFsicGF0aCIse2Q6Im05IDE1IDMgMy0zIDMifV1dfSk7dmFyIHFJLHZOZT1nKCgpPT57cUk9W1siY2lyY2xlIix7Y3g6IjE4IixjeToiMTgiLHI6IjMifV0sWyJjaXJjbGUiLHtjeDoiNiIsY3k6IjYiLHI6IjMifV0sWyJwYXRoIix7ZDoiTTEzIDZoM2EyIDIgMCAwIDEgMiAydjcifV0sWyJwYXRoIix7ZDoiTTExIDE4SDhhMiAyIDAgMCAxLTItMlY5In1dXX0pO3ZhciBqSSx4TmU9ZygoKT0+e2pJPVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjE4IixyOiIzIn1dLFsiY2lyY2xlIix7Y3g6IjYiLGN5OiI2IixyOiIzIn1dLFsiY2lyY2xlIix7Y3g6IjE4IixjeToiNiIscjoiMyJ9XSxbInBhdGgiLHtkOiJNMTggOXYyYzAgLjYtLjQgMS0xIDFIN2MtLjYgMC0xLS40LTEtMVY5In1dLFsicGF0aCIse2Q6Ik0xMiAxMnYzIn1dXX0pO3ZhciBWSSx5TmU9ZygoKT0+e1ZJPVtbImNpcmNsZSIse2N4OiI1IixjeToiNiIscjoiMyJ9XSxbInBhdGgiLHtkOiJNNSA5djYifV0sWyJjaXJjbGUiLHtjeDoiNSIsY3k6IjE4IixyOiIzIn1dLFsicGF0aCIse2Q6Ik0xMiAzdjE4In1dLFsiY2lyY2xlIix7Y3g6IjE5IixjeToiNiIscjoiMyJ9XSxbInBhdGgiLHtkOiJNMTYgMTUuN0E5IDkgMCAwIDAgMTkgOSJ9XV19KTt2YXIgVUksd05lPWcoKCk9PntVST1bWyJjaXJjbGUiLHtjeDoiMTgiLGN5OiIxOCIscjoiMyJ9XSxbImNpcmNsZSIse2N4OiI2IixjeToiNiIscjoiMyJ9XSxbInBhdGgiLHtkOiJNNiAyMVY5YTkgOSAwIDAgMCA5IDkifV1dfSk7dmFyIFdJLGtOZT1nKCgpPT57V0k9W1sicGF0aCIse2Q6Ik0xMiA2aDRhMiAyIDAgMCAxIDIgMnY3In1dLFsicGF0aCIse2Q6Ik02IDEydjkifV0sWyJwYXRoIix7ZDoiTTkgMyAzIDkifV0sWyJwYXRoIix7ZDoiTTkgOSAzIDMifV0sWyJjaXJjbGUiLHtjeDoiMTgiLGN5OiIxOCIscjoiMyJ9XV19KTt2YXIgR0ksU05lPWcoKCk9PntHST1bWyJjaXJjbGUiLHtjeDoiNSIsY3k6IjYiLHI6IjMifV0sWyJwYXRoIix7ZDoiTTUgOXYxMiJ9XSxbImNpcmNsZSIse2N4OiIxOSIsY3k6IjE4IixyOiIzIn1dLFsicGF0aCIse2Q6Im0xNSA5LTMtMyAzLTMifV0sWyJwYXRoIix7ZDoiTTEyIDZoNWEyIDIgMCAwIDEgMiAydjcifV1dfSk7dmFyIEtJLF9OZT1nKCgpPT57S0k9W1siY2lyY2xlIix7Y3g6IjYiLGN5OiI2IixyOiIzIn1dLFsicGF0aCIse2Q6Ik02IDl2MTIifV0sWyJwYXRoIix7ZDoibTIxIDMtNiA2In1dLFsicGF0aCIse2Q6Im0yMSA5LTYtNiJ9XSxbInBhdGgiLHtkOiJNMTggMTEuNVYxNSJ9XSxbImNpcmNsZSIse2N4OiIxOCIsY3k6IjE4IixyOiIzIn1dXX0pO3ZhciBZSSxNTmU9ZygoKT0+e1lJPVtbImNpcmNsZSIse2N4OiI1IixjeToiNiIscjoiMyJ9XSxbInBhdGgiLHtkOiJNNSA5djEyIn1dLFsicGF0aCIse2Q6Im0xNSA5LTMtMyAzLTMifV0sWyJwYXRoIix7ZDoiTTEyIDZoNWEyIDIgMCAwIDEgMiAydjMifV0sWyJwYXRoIix7ZDoiTTE5IDE1djYifV0sWyJwYXRoIix7ZDoiTTIyIDE4aC02In1dXX0pO3ZhciBaSSx6TmU9ZygoKT0+e1pJPVtbImNpcmNsZSIse2N4OiI2IixjeToiNiIscjoiMyJ9XSxbInBhdGgiLHtkOiJNNiA5djEyIn1dLFsicGF0aCIse2Q6Ik0xMyA2aDNhMiAyIDAgMCAxIDIgMnYzIn1dLFsicGF0aCIse2Q6Ik0xOCAxNXY2In1dLFsicGF0aCIse2Q6Ik0yMSAxOGgtNiJ9XV19KTt2YXIgWEksQ05lPWcoKCk9PntYST1bWyJjaXJjbGUiLHtjeDoiMTgiLGN5OiIxOCIscjoiMyJ9XSxbImNpcmNsZSIse2N4OiI2IixjeToiNiIscjoiMyJ9XSxbInBhdGgiLHtkOiJNMTggNlY1In1dLFsicGF0aCIse2Q6Ik0xOCAxMXYtMSJ9XSxbImxpbmUiLHt4MToiNiIseDI6IjYiLHkxOiI5Iix5MjoiMjEifV1dfSk7dmFyIFFJLFROZT1nKCgpPT57UUk9W1siY2lyY2xlIix7Y3g6IjE4IixjeToiMTgiLHI6IjMifV0sWyJjaXJjbGUiLHtjeDoiNiIsY3k6IjYiLHI6IjMifV0sWyJwYXRoIix7ZDoiTTEzIDZoM2EyIDIgMCAwIDEgMiAydjcifV0sWyJsaW5lIix7eDE6IjYiLHgyOiI2Iix5MToiOSIseTI6IjIxIn1dXX0pO3ZhciBKSSwkTmU9ZygoKT0+e0pJPVtbInBhdGgiLHtkOiJNNS4xMTYgNC4xMDRBMSAxIDAgMCAxIDYuMTEgM2gxMS43OGExIDEgMCAwIDEgLjk5NCAxLjEwNUwxNy4xOSAyMC4yMUEyIDIgMCAwIDEgMTUuMiAyMkg4LjhhMiAyIDAgMCAxLTItMS43OXoifV0sWyJwYXRoIix7ZDoiTTYgMTJhNSA1IDAgMCAxIDYgMCA1IDUgMCAwIDAgNiAwIn1dXX0pO3ZhciBlQSxETmU9ZygoKT0+e2VBPVtbImNpcmNsZSIse2N4OiI2IixjeToiMTUiLHI6IjQifV0sWyJjaXJjbGUiLHtjeDoiMTgiLGN5OiIxNSIscjoiNCJ9XSxbInBhdGgiLHtkOiJNMTQgMTVhMiAyIDAgMCAwLTItMiAyIDIgMCAwIDAtMiAyIn1dLFsicGF0aCIse2Q6Ik0yLjUgMTMgNSA3Yy43LTEuMyAxLjQtMiAzLTIifV0sWyJwYXRoIix7ZDoiTTIxLjUgMTMgMTkgN2MtLjctMS4zLTEuNS0yLTMtMiJ9XV19KTt2YXIgdEEsTE5lPWcoKCk9Pnt0QT1bWyJwYXRoIix7ZDoiTTE1LjY4NiAxNUExNC41IDE0LjUgMCAwIDEgMTIgMjJhMTQuNSAxNC41IDAgMCAxIDAtMjAgMTAgMTAgMCAxIDAgOS41NDIgMTMifV0sWyJwYXRoIix7ZDoiTTIgMTJoOC41In1dLFsicGF0aCIse2Q6Ik0yMCA2VjRhMiAyIDAgMSAwLTQgMHYyIn1dLFsicmVjdCIse3dpZHRoOiI4IixoZWlnaHQ6IjUiLHg6IjE0Iix5OiI2IixyeDoiMSJ9XV19KTt2YXIgYUEsRU5lPWcoKCk9PnthQT1bWyJwYXRoIix7ZDoibTE2IDMgNSA1In1dLFsicGF0aCIse2Q6Ik0yIDEyaDIwQTEwIDEwIDAgMSAxIDEyIDJhMTQuNSAxNC41IDAgMCAwIDAgMjAgMTQuNSAxNC41IDAgMCAwIDQtMTAifV0sWyJwYXRoIix7ZDoibTIxIDMtNSA1In1dXX0pO3ZhciBzQSxQTmU9ZygoKT0+e3NBPVtbInBhdGgiLHtkOiJNMTAuMTE0IDQuNDYyQTE0LjUgMTQuNSAwIDAgMSAxMiAyYTEwIDEwIDAgMCAxIDkuMzEzIDEzLjY0MyJ9XSxbInBhdGgiLHtkOiJNMTUuNTU3IDE1LjU1NkExNC41IDE0LjUgMCAwIDEgMTIgMjIgMTAgMTAgMCAwIDEgNC45MjkgNC45MjkifV0sWyJwYXRoIix7ZDoiTTE1Ljg5MiAxMC4yMzRBMTQuNSAxNC41IDAgMCAwIDEyIDJhMTAgMTAgMCAwIDAtMy42NDMuNjg3In1dLFsicGF0aCIse2Q6Ik0xNy42NTYgMTJIMjIifV0sWyJwYXRoIix7ZDoiTTE5LjA3MSAxOS4wNzFBMTAgMTAgMCAwIDEgMTIgMjIgMTQuNSAxNC41IDAgMCAxIDguNDQgOC40NSJ9XSxbInBhdGgiLHtkOiJNMiAxMmgxMCJ9XSxbInBhdGgiLHtkOiJtMiAyIDIwIDIwIn1dXX0pO3ZhciBpQSxJTmU9ZygoKT0+e2lBPVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9XSxbInBhdGgiLHtkOiJNMTIgMmExNC41IDE0LjUgMCAwIDAgMCAyMCAxNC41IDE0LjUgMCAwIDAgMC0yMCJ9XSxbInBhdGgiLHtkOiJNMiAxMmgyMCJ9XV19KTt2YXIgckEsQU5lPWcoKCk9PntyQT1bWyJwYXRoIix7ZDoiTTEyIDEzVjJsOCA0LTggNCJ9XSxbInBhdGgiLHtkOiJNMjAuNTYxIDEwLjIyMmE5IDkgMCAxIDEtMTIuNTUtNS4yOSJ9XSxbInBhdGgiLHtkOiJNOC4wMDIgOS45OTdhNSA1IDAgMSAwIDguOSAyLjAyIn1dXX0pO3ZhciBvQSxOTmU9ZygoKT0+e29BPVtbInBhdGgiLHtkOiJNMiAxN2gxOGEyIDIgMCAwIDAgMi0yVjdhMiAyIDAgMCAwLTItMkgyIn1dLFsicGF0aCIse2Q6Ik0yIDIxVjMifV0sWyJwYXRoIix7ZDoiTTcgMTd2M2ExIDEgMCAwIDAgMSAxaDVhMSAxIDAgMCAwIDEtMXYtMyJ9XSxbImNpcmNsZSIse2N4OiIxNiIsY3k6IjExIixyOiIyIn1dLFsiY2lyY2xlIix7Y3g6IjgiLGN5OiIxMSIscjoiMiJ9XV19KTt2YXIgbkEsUk5lPWcoKCk9PntuQT1bWyJwYXRoIix7ZDoiTTIxLjQyIDEwLjkyMmExIDEgMCAwIDAtLjAxOS0xLjgzOEwxMi44MyA1LjE4YTIgMiAwIDAgMC0xLjY2IDBMMi42IDkuMDhhMSAxIDAgMCAwIDAgMS44MzJsOC41NyAzLjkwOGEyIDIgMCAwIDAgMS42NiAweiJ9XSxbInBhdGgiLHtkOiJNMjIgMTB2NiJ9XSxbInBhdGgiLHtkOiJNNiAxMi41VjE2YTYgMyAwIDAgMCAxMiAwdi0zLjUifV1dfSk7dmFyIGxBLE9OZT1nKCgpPT57bEE9W1sicGF0aCIse2Q6Ik0yMiA1VjJsLTUuODkgNS44OSJ9XSxbImNpcmNsZSIse2N4OiIxNi42IixjeToiMTUuODkiLHI6IjMifV0sWyJjaXJjbGUiLHtjeDoiOC4xMSIsY3k6IjcuNCIscjoiMyJ9XSxbImNpcmNsZSIse2N4OiIxMi4zNSIsY3k6IjExLjY1IixyOiIzIn1dLFsiY2lyY2xlIix7Y3g6IjEzLjkxIixjeToiNS44NSIscjoiMyJ9XSxbImNpcmNsZSIse2N4OiIxOC4xNSIsY3k6IjEwLjA5IixyOiIzIn1dLFsiY2lyY2xlIix7Y3g6IjYuNTYiLGN5OiIxMy4yIixyOiIzIn1dLFsiY2lyY2xlIix7Y3g6IjEwLjgiLGN5OiIxNy40NCIscjoiMyJ9XSxbImNpcmNsZSIse2N4OiI1IixjeToiMTkiLHI6IjMifV1dfSk7dmFyIGY2LEZOZT1nKCgpPT57ZjY9W1sicGF0aCIse2Q6Ik0xMiAzdjE3YTEgMSAwIDAgMS0xIDFINWEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmgxNGEyIDIgMCAwIDEgMiAydjZhMSAxIDAgMCAxLTEgMUgzIn1dLFsicGF0aCIse2Q6Im0xNiAxOSAyIDIgNC00In1dXX0pO3ZhciBtNixCTmU9ZygoKT0+e202PVtbInBhdGgiLHtkOiJNMTIgM3YxN2ExIDEgMCAwIDEtMSAxSDVhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoMTRhMiAyIDAgMCAxIDIgMnY2YTEgMSAwIDAgMS0xIDFIMyJ9XSxbInBhdGgiLHtkOiJNMTYgMTloNiJ9XSxbInBhdGgiLHtkOiJNMTkgMjJ2LTYifV1dfSk7dmFyIGc2LEhOZT1nKCgpPT57ZzY9W1sicGF0aCIse2Q6Ik0xMiAzdjE3YTEgMSAwIDAgMS0xIDFINWEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmgxNGEyIDIgMCAwIDEgMiAydjZhMSAxIDAgMCAxLTEgMUgzIn1dLFsicGF0aCIse2Q6Im0xNiAxNiA1IDUifV0sWyJwYXRoIix7ZDoibTE2IDIxIDUtNSJ9XV19KTt2YXIgYjYscU5lPWcoKCk9PntiNj1bWyJwYXRoIix7ZDoiTTEyIDN2MTgifV0sWyJwYXRoIix7ZDoiTTMgMTJoMTgifV0sWyJyZWN0Iix7eDoiMyIseToiMyIsd2lkdGg6IjE4IixoZWlnaHQ6IjE4IixyeDoiMiJ9XV19KTt2YXIgY0Esak5lPWcoKCk9PntjQT1bWyJwYXRoIix7ZDoiTTE1IDN2MTgifV0sWyJwYXRoIix7ZDoiTTMgMTJoMTgifV0sWyJwYXRoIix7ZDoiTTkgM3YxOCJ9XSxbInJlY3QiLHt4OiIzIix5OiIzIix3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHJ4OiIyIn1dXX0pO3ZhciBXMCxWTmU9ZygoKT0+e1cwPVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik0zIDloMTgifV0sWyJwYXRoIix7ZDoiTTMgMTVoMTgifV0sWyJwYXRoIix7ZDoiTTkgM3YxOCJ9XSxbInBhdGgiLHtkOiJNMTUgM3YxOCJ9XV19KTt2YXIgZEEsVU5lPWcoKCk9PntkQT1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiI5IixyOiIxIn1dLFsiY2lyY2xlIix7Y3g6IjE5IixjeToiOSIscjoiMSJ9XSxbImNpcmNsZSIse2N4OiI1IixjeToiOSIscjoiMSJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjE1IixyOiIxIn1dLFsiY2lyY2xlIix7Y3g6IjE5IixjeToiMTUiLHI6IjEifV0sWyJjaXJjbGUiLHtjeDoiNSIsY3k6IjE1IixyOiIxIn1dXX0pO3ZhciB1QSxXTmU9ZygoKT0+e3VBPVtbImNpcmNsZSIse2N4OiI5IixjeToiMTIiLHI6IjEifV0sWyJjaXJjbGUiLHtjeDoiOSIsY3k6IjUiLHI6IjEifV0sWyJjaXJjbGUiLHtjeDoiOSIsY3k6IjE5IixyOiIxIn1dLFsiY2lyY2xlIix7Y3g6IjE1IixjeToiMTIiLHI6IjEifV0sWyJjaXJjbGUiLHtjeDoiMTUiLGN5OiI1IixyOiIxIn1dLFsiY2lyY2xlIix7Y3g6IjE1IixjeToiMTkiLHI6IjEifV1dfSk7dmFyIHBBLEdOZT1nKCgpPT57cEE9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiNSIscjoiMSJ9XSxbImNpcmNsZSIse2N4OiIxOSIsY3k6IjUiLHI6IjEifV0sWyJjaXJjbGUiLHtjeDoiNSIsY3k6IjUiLHI6IjEifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMSJ9XSxbImNpcmNsZSIse2N4OiIxOSIsY3k6IjEyIixyOiIxIn1dLFsiY2lyY2xlIix7Y3g6IjUiLGN5OiIxMiIscjoiMSJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjE5IixyOiIxIn1dLFsiY2lyY2xlIix7Y3g6IjE5IixjeToiMTkiLHI6IjEifV0sWyJjaXJjbGUiLHtjeDoiNSIsY3k6IjE5IixyOiIxIn1dXX0pO3ZhciBoQSxLTmU9ZygoKT0+e2hBPVtbInBhdGgiLHtkOiJNMyA3VjVjMC0xLjEuOS0yIDItMmgyIn1dLFsicGF0aCIse2Q6Ik0xNyAzaDJjMS4xIDAgMiAuOSAyIDJ2MiJ9XSxbInBhdGgiLHtkOiJNMjEgMTd2MmMwIDEuMS0uOSAyLTIgMmgtMiJ9XSxbInBhdGgiLHtkOiJNNyAyMUg1Yy0xLjEgMC0yLS45LTItMnYtMiJ9XSxbInJlY3QiLHt3aWR0aDoiNyIsaGVpZ2h0OiI1Iix4OiI3Iix5OiI3IixyeDoiMSJ9XSxbInJlY3QiLHt3aWR0aDoiNyIsaGVpZ2h0OiI1Iix4OiIxMCIseToiMTIiLHJ4OiIxIn1dXX0pO3ZhciBmQSxZTmU9ZygoKT0+e2ZBPVtbInBhdGgiLHtkOiJtMTEuOSAxMi4xIDQuNTE0LTQuNTE0In1dLFsicGF0aCIse2Q6Ik0yMC4xIDIuM2ExIDEgMCAwIDAtMS40IDBsLTEuMTE0IDEuMTE0QTIgMiAwIDAgMCAxNyA0LjgyOHYxLjM0NGEyIDIgMCAwIDEtLjU4NiAxLjQxNEEyIDIgMCAwIDEgMTcuODI4IDdoMS4zNDRhMiAyIDAgMCAwIDEuNDE0LS41ODZMMjEuNyA1LjNhMSAxIDAgMCAwIDAtMS40eiJ9XSxbInBhdGgiLHtkOiJtNiAxNiAyIDIifV0sWyJwYXRoIix7ZDoiTTguMjMgOS44NUEzIDMgMCAwIDEgMTEgOGE1IDUgMCAwIDEgNSA1IDMgMyAwIDAgMS0xLjg1IDIuNzdsLS45Mi4zOEEyIDIgMCAwIDAgMTIgMThhNCA0IDAgMCAxLTQgNCA2IDYgMCAwIDEtNi02IDQgNCAwIDAgMSA0LTQgMiAyIDAgMCAwIDEuODUtMS4yM3oifV1dfSk7dmFyIG1BLFpOZT1nKCgpPT57bUE9W1sicGF0aCIse2Q6Ik0xMy4xNDQgMjEuMTQ0QTcuMjc0IDEwLjQ0NSA0NSAxIDAgMi44NTYgMTAuODU2In1dLFsicGF0aCIse2Q6Ik0xMy4xNDQgMjEuMTQ0QTcuMjc0IDQuMzY1IDQ1IDAgMCAyLjg1NiAxMC44NTZhNy4yNzQgNC4zNjUgNDUgMCAwIDEwLjI4OCAxMC4yODgifV0sWyJwYXRoIix7ZDoiTTE2LjU2NSAxMC40MzUgMTguNiA4LjRhMi41MDEgMi41MDEgMCAxIDAgMS42NS00LjY1IDIuNSAyLjUgMCAxIDAtNC42NiAxLjY2bC0yLjAyNCAyLjAyNSJ9XSxbInBhdGgiLHtkOiJtOC41IDE2LjUtMS0xIn1dXX0pO3ZhciBnQSxYTmU9ZygoKT0+e2dBPVtbInBhdGgiLHtkOiJNMTIgMTZINGEyIDIgMCAxIDEgMC00aDE2YTIgMiAwIDEgMSAwIDRoLTQuMjUifV0sWyJwYXRoIix7ZDoiTTUgMTJhMiAyIDAgMCAxLTItMiA5IDcgMCAwIDEgMTggMCAyIDIgMCAwIDEtMiAyIn1dLFsicGF0aCIse2Q6Ik01IDE2YTIgMiAwIDAgMC0yIDIgMyAzIDAgMCAwIDMgM2gxMmEzIDMgMCAwIDAgMy0zIDIgMiAwIDAgMC0yLTJxMCAwIDAgMCJ9XSxbInBhdGgiLHtkOiJtNi42NyAxMiA2LjEzIDQuNmEyIDIgMCAwIDAgMi44LS40bDMuMTUtNC4yIn1dXX0pO3ZhciBiQSxRTmU9ZygoKT0+e2JBPVtbInBhdGgiLHtkOiJtMTUgMTItOS4zNzMgOS4zNzNhMSAxIDAgMCAxLTMuMDAxLTNMMTIgOSJ9XSxbInBhdGgiLHtkOiJtMTggMTUgNC00In1dLFsicGF0aCIse2Q6Im0yMS41IDExLjUtMS45MTQtMS45MTRBMiAyIDAgMCAxIDE5IDguMTcydi0uMzQ0YTIgMiAwIDAgMC0uNTg2LTEuNDE0bC0xLjY1Ny0xLjY1N0E2IDYgMCAwIDAgMTIuNTE2IDNIOWwxLjI0MyAxLjI0M0E2IDYgMCAwIDEgMTIgOC40ODVWMTBsMiAyaDEuMTcyYTIgMiAwIDAgMSAxLjQxNC41ODZMMTguNSAxNC41In1dXX0pO3ZhciB2QSxKTmU9ZygoKT0+e3ZBPVtbInBhdGgiLHtkOiJNMTEgMTVoMmEyIDIgMCAxIDAgMC00aC0zYy0uNiAwLTEuMS4yLTEuNC42TDMgMTcifV0sWyJwYXRoIix7ZDoibTcgMjEgMS42LTEuNGMuMy0uNC44LS42IDEuNC0uNmg0YzEuMSAwIDIuMS0uNCAyLjgtMS4ybDQuNi00LjRhMiAyIDAgMCAwLTIuNzUtMi45MWwtNC4yIDMuOSJ9XSxbInBhdGgiLHtkOiJtMiAxNiA2IDYifV0sWyJjaXJjbGUiLHtjeDoiMTYiLGN5OiI5IixyOiIyLjkifV0sWyJjaXJjbGUiLHtjeDoiNiIsY3k6IjUiLHI6IjMifV1dfSk7dmFyIHhBLGVSZT1nKCgpPT57eEE9W1sicGF0aCIse2Q6Ik0xMi4wMzUgMTcuMDEyYTMgMyAwIDAgMC0zLTNsLS4zMTEtLjAwMmEuNzIuNzIgMCAwIDEtLjUwNS0xLjIyOWwxLjE5NS0xLjE5NUEyIDIgMCAwIDEgMTAuODI4IDExSDEyYTIgMiAwIDAgMCAwLTRIOS4yNDNhMyAzIDAgMCAwLTIuMTIyLjg3OWwtMi43MDcgMi43MDdBNC44MyA0LjgzIDAgMCAwIDMgMTRhOCA4IDAgMCAwIDggOGgyYTggOCAwIDAgMCA4LThWN2EyIDIgMCAxIDAtNCAwdjJhMiAyIDAgMSAwIDQgMCJ9XSxbInBhdGgiLHtkOiJNMTMuODg4IDkuNjYyQTIgMiAwIDAgMCAxNyA4VjVBMiAyIDAgMSAwIDEzIDUifV0sWyJwYXRoIix7ZDoiTTkgNUEyIDIgMCAxIDAgNSA1VjEwIn1dLFsicGF0aCIse2Q6Ik05IDdWNEEyIDIgMCAxIDEgMTMgNFY3LjI2OCJ9XV19KTt2YXIgdjYsdFJlPWcoKCk9Pnt2Nj1bWyJwYXRoIix7ZDoiTTE4IDExLjVWOWEyIDIgMCAwIDAtMi0yYTIgMiAwIDAgMC0yIDJ2MS40In1dLFsicGF0aCIse2Q6Ik0xNCAxMFY4YTIgMiAwIDAgMC0yLTJhMiAyIDAgMCAwLTIgMnYyIn1dLFsicGF0aCIse2Q6Ik0xMCA5LjlWOWEyIDIgMCAwIDAtMi0yYTIgMiAwIDAgMC0yIDJ2NSJ9XSxbInBhdGgiLHtkOiJNNiAxNGEyIDIgMCAwIDAtMi0yYTIgMiAwIDAgMC0yIDIifV0sWyJwYXRoIix7ZDoiTTE4IDExYTIgMiAwIDEgMSA0IDB2M2E4IDggMCAwIDEtOCA4aC00YTggOCAwIDAgMS04LTggMiAyIDAgMSAxIDQgMCJ9XV19KTt2YXIgeUEsYVJlPWcoKCk9Pnt5QT1bWyJwYXRoIix7ZDoiTTExIDE0aDJhMiAyIDAgMCAwIDAtNGgtM2MtLjYgMC0xLjEuMi0xLjQuNkwzIDE2In1dLFsicGF0aCIse2Q6Im0xNC40NSAxMy4zOSA1LjA1LTQuNjk0QzIwLjE5NiA4IDIxIDYuODUgMjEgNS43NWEyLjc1IDIuNzUgMCAwIDAtNC43OTctMS44MzcuMjc2LjI3NiAwIDAgMS0uNDA2IDBBMi43NSAyLjc1IDAgMCAwIDExIDUuNzVjMCAxLjIuODAyIDIuMjQ4IDEuNSAyLjk0NkwxNiAxMS45NSJ9XSxbInBhdGgiLHtkOiJtMiAxNSA2IDYifV0sWyJwYXRoIix7ZDoibTcgMjAgMS42LTEuNGMuMy0uNC44LS42IDEuNC0uNmg0YzEuMSAwIDIuMS0uNCAyLjgtMS4ybDQuNi00LjRhMSAxIDAgMCAwLTIuNzUtMi45MSJ9XV19KTt2YXIgeDYsc1JlPWcoKCk9Pnt4Nj1bWyJwYXRoIix7ZDoiTTExIDEyaDJhMiAyIDAgMSAwIDAtNGgtM2MtLjYgMC0xLjEuMi0xLjQuNkwzIDE0In1dLFsicGF0aCIse2Q6Im03IDE4IDEuNi0xLjRjLjMtLjQuOC0uNiAxLjQtLjZoNGMxLjEgMCAyLjEtLjQgMi44LTEuMmw0LjYtNC40YTIgMiAwIDAgMC0yLjc1LTIuOTFsLTQuMiAzLjkifV0sWyJwYXRoIix7ZDoibTIgMTMgNiA2In1dXX0pO3ZhciB3QSxpUmU9ZygoKT0+e3dBPVtbInBhdGgiLHtkOiJNMTggMTIuNVYxMGEyIDIgMCAwIDAtMi0yYTIgMiAwIDAgMC0yIDJ2MS40In1dLFsicGF0aCIse2Q6Ik0xNCAxMVY5YTIgMiAwIDEgMC00IDB2MiJ9XSxbInBhdGgiLHtkOiJNMTAgMTAuNVY1YTIgMiAwIDEgMC00IDB2OSJ9XSxbInBhdGgiLHtkOiJtNyAxNS0xLjc2LTEuNzZhMiAyIDAgMCAwLTIuODMgMi44MmwzLjYgMy42QzcuNSAyMS4xNCA5LjIgMjIgMTIgMjJoMmE4IDggMCAwIDAgOC04VjdhMiAyIDAgMSAwLTQgMHY1In1dXX0pO3ZhciBrQSxyUmU9ZygoKT0+e2tBPVtbInBhdGgiLHtkOiJNMTIgM1YyIn1dLFsicGF0aCIse2Q6Im0xNS40IDE3LjQgMy4yLTIuOGEyIDIgMCAxIDEgMi44IDIuOWwtMy42IDMuM2MtLjcuOC0xLjcgMS4yLTIuOCAxLjJoLTRjLTEuMSAwLTIuMS0uNC0yLjgtMS4ybC0xLjMwMi0xLjQ2NEExIDEgMCAwIDAgNi4xNTEgMTlINSJ9XSxbInBhdGgiLHtkOiJNMiAxNGgxMmEyIDIgMCAwIDEgMCA0aC0yIn1dLFsicGF0aCIse2Q6Ik00IDEwaDE2In1dLFsicGF0aCIse2Q6Ik01IDEwYTcgNyAwIDAgMSAxNCAwIn1dLFsicGF0aCIse2Q6Ik01IDE0djZhMSAxIDAgMCAxLTEgMUgyIn1dXX0pO3ZhciBTQSxvUmU9ZygoKT0+e1NBPVtbInBhdGgiLHtkOiJNMTggMTFWNmEyIDIgMCAwIDAtMi0yYTIgMiAwIDAgMC0yIDIifV0sWyJwYXRoIix7ZDoiTTE0IDEwVjRhMiAyIDAgMCAwLTItMmEyIDIgMCAwIDAtMiAydjIifV0sWyJwYXRoIix7ZDoiTTEwIDEwLjVWNmEyIDIgMCAwIDAtMi0yYTIgMiAwIDAgMC0yIDJ2OCJ9XSxbInBhdGgiLHtkOiJNMTggOGEyIDIgMCAxIDEgNCAwdjZhOCA4IDAgMCAxLTggOGgtMmMtMi44IDAtNC41LS44Ni01Ljk5LTIuMzRsLTMuNi0zLjZhMiAyIDAgMCAxIDIuODMtMi44Mkw3IDE1In1dXX0pO3ZhciBfQSxuUmU9ZygoKT0+e19BPVtbInBhdGgiLHtkOiJNMi4wNDggMTguNTY2QTIgMiAwIDAgMCA0IDIxaDE2YTIgMiAwIDAgMCAxLjk1Mi0yLjQzNGwtMi05QTIgMiAwIDAgMCAxOCA4SDZhMiAyIDAgMCAwLTEuOTUyIDEuNTY2eiJ9XSxbInBhdGgiLHtkOiJNOCAxMVY2YTQgNCAwIDAgMSA4IDB2NSJ9XV19KTt2YXIgTUEsbFJlPWcoKCk9PntNQT1bWyJwYXRoIix7ZDoibTExIDE3IDIgMmExIDEgMCAxIDAgMy0zIn1dLFsicGF0aCIse2Q6Im0xNCAxNCAyLjUgMi41YTEgMSAwIDEgMCAzLTNsLTMuODgtMy44OGEzIDMgMCAwIDAtNC4yNCAwbC0uODguODhhMSAxIDAgMSAxLTMtM2wyLjgxLTIuODFhNS43OSA1Ljc5IDAgMCAxIDcuMDYtLjg3bC40Ny4yOGEyIDIgMCAwIDAgMS40Mi4yNUwyMSA0In1dLFsicGF0aCIse2Q6Im0yMSAzIDEgMTFoLTIifV0sWyJwYXRoIix7ZDoiTTMgMyAyIDE0bDYuNSA2LjVhMSAxIDAgMSAwIDMtMyJ9XSxbInBhdGgiLHtkOiJNMyA0aDgifV1dfSk7dmFyIHpBLGNSZT1nKCgpPT57ekE9W1sicGF0aCIse2Q6Ik0xMiAydjgifV0sWyJwYXRoIix7ZDoibTE2IDYtNCA0LTQtNCJ9XSxbInJlY3QiLHt3aWR0aDoiMjAiLGhlaWdodDoiOCIseDoiMiIseToiMTQiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik02IDE4aC4wMSJ9XSxbInBhdGgiLHtkOiJNMTAgMThoLjAxIn1dXX0pO3ZhciBDQSxkUmU9ZygoKT0+e0NBPVtbInBhdGgiLHtkOiJtMTYgNi00LTQtNCA0In1dLFsicGF0aCIse2Q6Ik0xMiAydjgifV0sWyJyZWN0Iix7d2lkdGg6IjIwIixoZWlnaHQ6IjgiLHg6IjIiLHk6IjE0IixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNNiAxOGguMDEifV0sWyJwYXRoIix7ZDoiTTEwIDE4aC4wMSJ9XV19KTt2YXIgVEEsdVJlPWcoKCk9PntUQT1bWyJwYXRoIix7ZDoiTTEwIDEwVjVhMSAxIDAgMCAxIDEtMWgyYTEgMSAwIDAgMSAxIDF2NSJ9XSxbInBhdGgiLHtkOiJNMTQgNmE2IDYgMCAwIDEgNiA2djMifV0sWyJwYXRoIix7ZDoiTTQgMTV2LTNhNiA2IDAgMCAxIDYtNiJ9XSxbInJlY3QiLHt4OiIyIix5OiIxNSIsd2lkdGg6IjIwIixoZWlnaHQ6IjQiLHJ4OiIxIn1dXX0pO3ZhciAkQSxwUmU9ZygoKT0+eyRBPVtbInBhdGgiLHtkOiJNMTAgMTZoLjAxIn1dLFsicGF0aCIse2Q6Ik0yLjIxMiAxMS41NzdhMiAyIDAgMCAwLS4yMTIuODk2VjE4YTIgMiAwIDAgMCAyIDJoMTZhMiAyIDAgMCAwIDItMnYtNS41MjdhMiAyIDAgMCAwLS4yMTItLjg5NkwxOC41NSA1LjExQTIgMiAwIDAgMCAxNi43NiA0SDcuMjRhMiAyIDAgMCAwLTEuNzkgMS4xMXoifV0sWyJwYXRoIix7ZDoiTTIxLjk0NiAxMi4wMTNIMi4wNTQifV0sWyJwYXRoIix7ZDoiTTYgMTZoLjAxIn1dXX0pO3ZhciBEQSxoUmU9ZygoKT0+e0RBPVtbImxpbmUiLHt4MToiNCIseDI6IjIwIix5MToiOSIseTI6IjkifV0sWyJsaW5lIix7eDE6IjQiLHgyOiIyMCIseTE6IjE1Iix5MjoiMTUifV0sWyJsaW5lIix7eDE6IjEwIix4MjoiOCIseTE6IjMiLHkyOiIyMSJ9XSxbImxpbmUiLHt4MToiMTYiLHgyOiIxNCIseTE6IjMiLHkyOiIyMSJ9XV19KTt2YXIgTEEsZlJlPWcoKCk9PntMQT1bWyJwYXRoIix7ZDoiTTE0IDE4YTIgMiAwIDAgMC00IDAifV0sWyJwYXRoIix7ZDoibTE5IDExLTIuMTEtNi42NTdhMiAyIDAgMCAwLTIuNzUyLTEuMTQ4bC0xLjI3Ni42MUEyIDIgMCAwIDEgMTIgNEg4LjVhMiAyIDAgMCAwLTEuOTI1IDEuNDU2TDUgMTEifV0sWyJwYXRoIix7ZDoiTTIgMTFoMjAifV0sWyJjaXJjbGUiLHtjeDoiMTciLGN5OiIxOCIscjoiMyJ9XSxbImNpcmNsZSIse2N4OiI3IixjeToiMTgiLHI6IjMifV1dfSk7dmFyIEVBLG1SZT1nKCgpPT57RUE9W1sicGF0aCIse2Q6Im01LjIgNi4yIDEuNCAxLjQifV0sWyJwYXRoIix7ZDoiTTIgMTNoMiJ9XSxbInBhdGgiLHtkOiJNMjAgMTNoMiJ9XSxbInBhdGgiLHtkOiJtMTcuNCA3LjYgMS40LTEuNCJ9XSxbInBhdGgiLHtkOiJNMjIgMTdIMiJ9XSxbInBhdGgiLHtkOiJNMjIgMjFIMiJ9XSxbInBhdGgiLHtkOiJNMTYgMTNhNCA0IDAgMCAwLTggMCJ9XSxbInBhdGgiLHtkOiJNMTIgNVYyLjUifV1dfSk7dmFyIFBBLGdSZT1nKCgpPT57UEE9W1sicGF0aCIse2Q6Ik0xMCAxMkg2In1dLFsicGF0aCIse2Q6Ik0xMCAxNVY5In1dLFsicGF0aCIse2Q6Ik0xNCAxNC41YS41LjUgMCAwIDAgLjUuNWgxYTIuNSAyLjUgMCAwIDAgMi41LTIuNXYtMUEyLjUgMi41IDAgMCAwIDE1LjUgOWgtMWEuNS41IDAgMCAwLS41LjV6In1dLFsicGF0aCIse2Q6Ik02IDE1VjkifV0sWyJyZWN0Iix7eDoiMiIseToiNSIsd2lkdGg6IjIwIixoZWlnaHQ6IjE0IixyeDoiMiJ9XV19KTt2YXIgSUEsYlJlPWcoKCk9PntJQT1bWyJwYXRoIix7ZDoiTTIyIDlhMSAxIDAgMCAwLTEtMUgzYTEgMSAwIDAgMC0xIDF2NGExIDEgMCAwIDAgMSAxaDFsMiAyaDEybDItMmgxYTEgMSAwIDAgMCAxLTFaIn1dLFsicGF0aCIse2Q6Ik03LjUgMTJoOSJ9XV19KTt2YXIgQUEsdlJlPWcoKCk9PntBQT1bWyJwYXRoIix7ZDoiTTQgMTJoOCJ9XSxbInBhdGgiLHtkOiJNNCAxOFY2In1dLFsicGF0aCIse2Q6Ik0xMiAxOFY2In1dLFsicGF0aCIse2Q6Im0xNyAxMiAzLTJ2OCJ9XV19KTt2YXIgTkEseFJlPWcoKCk9PntOQT1bWyJwYXRoIix7ZDoiTTQgMTJoOCJ9XSxbInBhdGgiLHtkOiJNNCAxOFY2In1dLFsicGF0aCIse2Q6Ik0xMiAxOFY2In1dLFsicGF0aCIse2Q6Ik0yMSAxOGgtNGMwLTQgNC0zIDQtNiAwLTEuNS0yLTIuNS00LTEifV1dfSk7dmFyIFJBLHlSZT1nKCgpPT57UkE9W1sicGF0aCIse2Q6Ik00IDEyaDgifV0sWyJwYXRoIix7ZDoiTTQgMThWNiJ9XSxbInBhdGgiLHtkOiJNMTIgMThWNiJ9XSxbInBhdGgiLHtkOiJNMTcuNSAxMC41YzEuNy0xIDMuNSAwIDMuNSAxLjVhMiAyIDAgMCAxLTIgMiJ9XSxbInBhdGgiLHtkOiJNMTcgMTcuNWMyIDEuNSA0IC4zIDQtMS41YTIgMiAwIDAgMC0yLTIifV1dfSk7dmFyIE9BLHdSZT1nKCgpPT57T0E9W1sicGF0aCIse2Q6Ik0xMiAxOFY2In1dLFsicGF0aCIse2Q6Ik0xNyAxMHYzYTEgMSAwIDAgMCAxIDFoMyJ9XSxbInBhdGgiLHtkOiJNMjEgMTB2OCJ9XSxbInBhdGgiLHtkOiJNNCAxMmg4In1dLFsicGF0aCIse2Q6Ik00IDE4VjYifV1dfSk7dmFyIEZBLGtSZT1nKCgpPT57RkE9W1sicGF0aCIse2Q6Ik00IDEyaDgifV0sWyJwYXRoIix7ZDoiTTQgMThWNiJ9XSxbInBhdGgiLHtkOiJNMTIgMThWNiJ9XSxbInBhdGgiLHtkOiJNMTcgMTN2LTNoNCJ9XSxbInBhdGgiLHtkOiJNMTcgMTcuN2MuNC4yLjguMyAxLjMuMyAxLjUgMCAyLjctMS4xIDIuNy0yLjVTMTkuOCAxMyAxOC4zIDEzSDE3In1dXX0pO3ZhciBCQSxTUmU9ZygoKT0+e0JBPVtbInBhdGgiLHtkOiJNNCAxMmg4In1dLFsicGF0aCIse2Q6Ik00IDE4VjYifV0sWyJwYXRoIix7ZDoiTTEyIDE4VjYifV0sWyJjaXJjbGUiLHtjeDoiMTkiLGN5OiIxNiIscjoiMiJ9XSxbInBhdGgiLHtkOiJNMjAgMTBjLTIgMi0zIDMuNS0zIDYifV1dfSk7dmFyIEhBLF9SZT1nKCgpPT57SEE9W1sicGF0aCIse2Q6Ik02IDEyaDEyIn1dLFsicGF0aCIse2Q6Ik02IDIwVjQifV0sWyJwYXRoIix7ZDoiTTE4IDIwVjQifV1dfSk7dmFyIHFBLE1SZT1nKCgpPT57cUE9W1sicGF0aCIse2Q6Ik0yMSAxNGgtMS4zNDMifV0sWyJwYXRoIix7ZDoiTTkuMTI4IDMuNDdBOSA5IDAgMCAxIDIxIDEydjMuMzQzIn1dLFsicGF0aCIse2Q6Im0yIDIgMjAgMjAifV0sWyJwYXRoIix7ZDoiTTIwLjQxNCAyMC40MTRBMiAyIDAgMCAxIDE5IDIxaC0xYTIgMiAwIDAgMS0yLTJ2LTMifV0sWyJwYXRoIix7ZDoiTTMgMTRoM2EyIDIgMCAwIDEgMiAydjNhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJ2LTdhOSA5IDAgMCAxIDIuNjM2LTYuMzY0In1dXX0pO3ZhciBqQSx6UmU9ZygoKT0+e2pBPVtbInBhdGgiLHtkOiJNMyAxMWgzYTIgMiAwIDAgMSAyIDJ2M2EyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNVptMCAwYTkgOSAwIDEgMSAxOCAwbTAgMHY1YTIgMiAwIDAgMS0yIDJoLTFhMiAyIDAgMCAxLTItMnYtM2EyIDIgMCAwIDEgMi0yaDNaIn1dLFsicGF0aCIse2Q6Ik0yMSAxNnYyYTQgNCAwIDAgMS00IDRoLTUifV1dfSk7dmFyIFZBLENSZT1nKCgpPT57VkE9W1sicGF0aCIse2Q6Ik0zIDE0aDNhMiAyIDAgMCAxIDIgMnYzYTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0ydi03YTkgOSAwIDAgMSAxOCAwdjdhMiAyIDAgMCAxLTIgMmgtMWEyIDIgMCAwIDEtMi0ydi0zYTIgMiAwIDAgMSAyLTJoMyJ9XV19KTt2YXIgVUEsVFJlPWcoKCk9PntVQT1bWyJwYXRoIix7ZDoiTTEyLjQwOSA1LjgyNGMtLjcwMi43OTItMS4xNSAxLjQ5Ni0xLjQxNSAyLjE2NmwyLjE1MyAyLjE1NmEuNS41IDAgMCAxIDAgLjcwN2wtMi4yOTMgMi4yOTNhLjUuNSAwIDAgMCAwIC43MDdMMTIgMTUifV0sWyJwYXRoIix7ZDoiTTEzLjUwOCAyMC4zMTNhMiAyIDAgMCAxLTMgLjAxOUw1IDE1Yy0xLjUtMS41LTMtMy4yLTMtNS41YTUuNSA1LjUgMCAwIDEgOS41OTEtMy42NzcuNi42IDAgMCAwIC44MTguMDAxQTUuNSA1LjUgMCAwIDEgMjIgOS41YzAgMi4yOS0xLjUgNC0zIDUuNXoifV1dfSk7dmFyIFdBLCRSZT1nKCgpPT57V0E9W1sicGF0aCIse2Q6Ik0xOS40MTQgMTQuNDE0QzIxIDEyLjgyOCAyMiAxMS41IDIyIDkuNWE1LjUgNS41IDAgMCAwLTkuNTkxLTMuNjc2LjYuNiAwIDAgMS0uODE4LjAwMUE1LjUgNS41IDAgMCAwIDIgOS41YzAgMi4zIDEuNSA0IDMgNS41bDUuNTM1IDUuMzYyYTIgMiAwIDAgMCAyLjg3OS4wNTIgMi4xMiAyLjEyIDAgMCAwLS4wMDQtMyAyLjEyNCAyLjEyNCAwIDEgMCAzLTMgMi4xMjQgMi4xMjQgMCAwIDAgMy4wMDQgMCAyIDIgMCAwIDAgMC0yLjgyOGwtMS44ODEtMS44ODJhMi40MSAyLjQxIDAgMCAwLTMuNDA5IDBsLTEuNzEgMS43MWEyIDIgMCAwIDEtMi44MjggMCAyIDIgMCAwIDEgMC0yLjgyOGwyLjgyMy0yLjc2MiJ9XV19KTt2YXIgR0EsRFJlPWcoKCk9PntHQT1bWyJwYXRoIix7ZDoibTE0Ljg3NiAxOC45OS0xLjM2OCAxLjMyM2EyIDIgMCAwIDEtMyAuMDE5TDUgMTVjLTEuNS0xLjUtMy0zLjItMy01LjVhNS41IDUuNSAwIDAgMSA5LjU5MS0zLjY3Ni41Ni41NiAwIDAgMCAuODE4IDBBNS40OSA1LjQ5IDAgMCAxIDIyIDkuNWE1LjIgNS4yIDAgMCAxLS4yNDQgMS41NzIifV0sWyJwYXRoIix7ZDoiTTE1IDE1aDYifV1dfSk7dmFyIEtBLExSZT1nKCgpPT57S0E9W1sicGF0aCIse2Q6Ik0xMC41IDQuODkzYTUuNSA1LjUgMCAwIDEgMS4wOTEuOTMxLjU2LjU2IDAgMCAwIC44MTggMEE1LjQ5IDUuNDkgMCAwIDEgMjIgOS41YzAgMS44NzItMS4wMDIgMy4zNTYtMi4xODcgNC42NTUifV0sWyJwYXRoIix7ZDoibTE2Ljk2NyAxNi45NjctMy40NTkgMy4zNDZhMiAyIDAgMCAxLTMgLjAxOUw1IDE1Yy0xLjUtMS41LTMtMy4yLTMtNS41YTUuNSA1LjUgMCAwIDEgMi43NDctNC43NjEifV0sWyJwYXRoIix7ZDoibTIgMiAyMCAyMCJ9XV19KTt2YXIgWUEsRVJlPWcoKCk9PntZQT1bWyJwYXRoIix7ZDoibTE0LjQ3OSAxOS4zNzQtLjk3MS45MzlhMiAyIDAgMCAxLTMgLjAxOUw1IDE1Yy0xLjUtMS41LTMtMy4yLTMtNS41YTUuNSA1LjUgMCAwIDEgOS41OTEtMy42NzYuNTYuNTYgMCAwIDAgLjgxOCAwQTUuNDkgNS40OSAwIDAgMSAyMiA5LjVhNS4yIDUuMiAwIDAgMS0uMjE5IDEuNDkifV0sWyJwYXRoIix7ZDoiTTE1IDE1aDYifV0sWyJwYXRoIix7ZDoiTTE4IDEydjYifV1dfSk7dmFyIFpBLFBSZT1nKCgpPT57WkE9W1sicGF0aCIse2Q6Ik0yIDkuNWE1LjUgNS41IDAgMCAxIDkuNTkxLTMuNjc2LjU2LjU2IDAgMCAwIC44MTggMEE1LjQ5IDUuNDkgMCAwIDEgMjIgOS41YzAgMi4yOS0xLjUgNC0zIDUuNWwtNS40OTIgNS4zMTNhMiAyIDAgMCAxLTMgLjAxOUw1IDE1Yy0xLjUtMS41LTMtMy4yLTMtNS41In1dLFsicGF0aCIse2Q6Ik0zLjIyIDEzSDkuNWwuNS0xIDIgNC41IDItNyAxLjUgMy41aDUuMjcifV1dfSk7dmFyIFhBLElSZT1nKCgpPT57WEE9W1sicGF0aCIse2Q6Im0xNS41IDEyLjUgNSA1In1dLFsicGF0aCIse2Q6Im0yMC41IDEyLjUtNSA1In1dLFsicGF0aCIse2Q6Ik0yMS45NTUgOC43NzRhNS41IDUuNSAwIDAgMC05LjU0Ni0yLjk1LjYuNiAwIDAgMS0uODE4IDBBNS41IDUuNSAwIDAgMCAyIDkuNWMwIDIuMyAxLjUgNCAzIDUuNWw1LjUwOCA1LjMzMmEyIDIgMCAwIDAgMi41Ny4zNTIifV1dfSk7dmFyIFFBLEFSZT1nKCgpPT57UUE9W1sicGF0aCIse2Q6Ik0yIDkuNWE1LjUgNS41IDAgMCAxIDkuNTkxLTMuNjc2LjU2LjU2IDAgMCAwIC44MTggMEE1LjQ5IDUuNDkgMCAwIDEgMjIgOS41YzAgMi4yOS0xLjUgNC0zIDUuNWwtNS40OTIgNS4zMTNhMiAyIDAgMCAxLTMgLjAxOUw1IDE1Yy0xLjUtMS41LTMtMy4yLTMtNS41In1dXX0pO3ZhciBKQSxOUmU9ZygoKT0+e0pBPVtbInBhdGgiLHtkOiJNMTEgOGMyLTMtMi0zIDAtNiJ9XSxbInBhdGgiLHtkOiJNMTUuNSA4YzItMy0yLTMgMC02In1dLFsicGF0aCIse2Q6Ik02IDEwaC4wMSJ9XSxbInBhdGgiLHtkOiJNNiAxNGguMDEifV0sWyJwYXRoIix7ZDoiTTEwIDE2di00In1dLFsicGF0aCIse2Q6Ik0xNCAxNnYtNCJ9XSxbInBhdGgiLHtkOiJNMTggMTZ2LTQifV0sWyJwYXRoIix7ZDoiTTIwIDZhMiAyIDAgMCAxIDIgMnYxMGEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMlY4YTIgMiAwIDAgMSAyLTJoMyJ9XSxbInBhdGgiLHtkOiJNNSAyMHYyIn1dLFsicGF0aCIse2Q6Ik0xOSAyMHYyIn1dXX0pO3ZhciBlTixSUmU9ZygoKT0+e2VOPVtbInBhdGgiLHtkOiJNMTEgMTd2NCJ9XSxbInBhdGgiLHtkOiJNMTQgM3Y4YTIgMiAwIDAgMCAyIDJoNS44NjUifV0sWyJwYXRoIix7ZDoiTTE3IDE3djQifV0sWyJwYXRoIix7ZDoiTTE4IDE3YTQgNCAwIDAgMCA0LTQgOCA2IDAgMCAwLTgtNiA2IDUgMCAwIDAtNiA1djNhMiAyIDAgMCAwIDIgMnoifV0sWyJwYXRoIix7ZDoiTTIgMTB2NSJ9XSxbInBhdGgiLHtkOiJNNiAzaDE2In1dLFsicGF0aCIse2Q6Ik03IDIxaDE0In1dLFsicGF0aCIse2Q6Ik04IDEzSDIifV1dfSk7dmFyIHROLE9SZT1nKCgpPT57dE49W1sicGF0aCIse2Q6Ik0yMSAxNlY4YTIgMiAwIDAgMC0xLTEuNzNsLTctNGEyIDIgMCAwIDAtMiAwbC03IDRBMiAyIDAgMCAwIDMgOHY4YTIgMiAwIDAgMCAxIDEuNzNsNyA0YTIgMiAwIDAgMCAyIDBsNy00QTIgMiAwIDAgMCAyMSAxNnoifV1dfSk7dmFyIGFOLEZSZT1nKCgpPT57YU49W1sicGF0aCIse2Q6Im05IDExLTYgNnYzaDlsMy0zIn1dLFsicGF0aCIse2Q6Im0yMiAxMi00LjYgNC42YTIgMiAwIDAgMS0yLjggMGwtNS4yLTUuMmEyIDIgMCAwIDEgMC0yLjhMMTQgNCJ9XV19KTt2YXIgc04sQlJlPWcoKCk9PntzTj1bWyJwYXRoIix7ZDoiTTMgMTJhOSA5IDAgMSAwIDktOSA5Ljc1IDkuNzUgMCAwIDAtNi43NCAyLjc0TDMgOCJ9XSxbInBhdGgiLHtkOiJNMyAzdjVoNSJ9XSxbInBhdGgiLHtkOiJNMTIgN3Y1bDQgMiJ9XV19KTt2YXIgaU4sSFJlPWcoKCk9PntpTj1bWyJwYXRoIix7ZDoiTTEwLjgyIDE2LjEyYzEuNjkuNiAzLjkxLjc5IDUuMTguODUuNTUuMDMgMS0uNDIuOTctLjk3LS4wNi0xLjI3LS4yNi0zLjUtLjg1LTUuMTgifV0sWyJwYXRoIix7ZDoiTTExLjUgNi41YzEuNjQgMCA1LS4zOCA2LjcxLTEuMDcuNTItLjIuNTUtLjgyLjEyLTEuMTdBMTAgMTAgMCAwIDAgNC4yNiAxOC4zM2MuMzUuNDMuOTYuNCAxLjE3LS4xMi42OS0xLjcxIDEuMDctNS4wNyAxLjA3LTYuNzEgMS4zNC40NSAzLjEuOSA0Ljg4LjYyYS44OC44OCAwIDAgMCAuNzMtLjc0Yy4zLTIuMTQtLjE1LTMuNS0uNjEtNC44OCJ9XSxbInBhdGgiLHtkOiJNMTUuNjIgMTYuOTVjLjIuODUuNjIgMi43Ni41IDQuMjhhLjc3Ljc3IDAgMCAxLS45LjcgMTYuNjQgMTYuNjQgMCAwIDEtNC4wOC0xLjM2In1dLFsicGF0aCIse2Q6Ik0xNi4xMyAyMS4wNWMxLjY1LjYzIDMuNjguODQgNC44Ny45MWEuOS45IDAgMCAwIC45Ni0uOTYgMTcuNjggMTcuNjggMCAwIDAtLjktNC44NyJ9XSxbInBhdGgiLHtkOiJNMTYuOTQgMTUuNjJjLjg2LjIgMi43Ny42MiA0LjI5LjVhLjc3Ljc3IDAgMCAwIC43LS45IDE2LjY0IDE2LjY0IDAgMCAwLTEuMzYtNC4wOCJ9XSxbInBhdGgiLHtkOiJNMTcuOTkgNS41MmEyMC44MiAyMC44MiAwIDAgMSAzLjE1IDQuNS44LjggMCAwIDEtLjY4IDEuMTNjLTIuMzMuMi01LjMtLjMyLTguMjctMS41NyJ9XSxbInBhdGgiLHtkOiJNNC45MyA0LjkzIDMgM2EuNy43IDAgMCAxIDAtMSJ9XSxbInBhdGgiLHtkOiJNOS41OCAxMi4xOGMxLjI0IDIuOTggMS43NyA1Ljk1IDEuNTcgOC4yOGEuOC44IDAgMCAxLTEuMTMuNjggMjAuODIgMjAuODIgMCAwIDEtNC41LTMuMTUifV1dfSk7dmFyIHJOLHFSZT1nKCgpPT57ck49W1sicGF0aCIse2Q6Ik0xMC44MiAxNi4xMmMxLjY5LjYgMy45MS43OSA1LjE4Ljg1LjI4LjAxLjUzLS4wOS43LS4yNyJ9XSxbInBhdGgiLHtkOiJNMTEuMTQgMjAuNTdjLjUyLjI0IDIuNDQgMS4xMiA0LjA4IDEuMzcuNDYuMDYuODYtLjI1LjktLjcxLjEyLTEuNTItLjMtMy40My0uNS00LjI4In1dLFsicGF0aCIse2Q6Ik0xNi4xMyAyMS4wNWMxLjY1LjYzIDMuNjguODQgNC44Ny45MWEuOS45IDAgMCAwIC43LS4yNiJ9XSxbInBhdGgiLHtkOiJNMTcuOTkgNS41MmEyMC44MyAyMC44MyAwIDAgMSAzLjE1IDQuNS44LjggMCAwIDEtLjY4IDEuMTNjLTEuMTcuMS0yLjUuMDItMy45LS4yNSJ9XSxbInBhdGgiLHtkOiJNMjAuNTcgMTEuMTRjLjI0LjUyIDEuMTIgMi40NCAxLjM3IDQuMDguMDQuMy0uMDguNTktLjMxLjc1In1dLFsicGF0aCIse2Q6Ik00LjkzIDQuOTNhMTAgMTAgMCAwIDAtLjY3IDEzLjRjLjM1LjQzLjk2LjQgMS4xNy0uMTIuNjktMS43MSAxLjA3LTUuMDcgMS4wNy02LjcxIDEuMzQuNDUgMy4xLjkgNC44OC42MmEuODUuODUgMCAwIDAgLjQ4LS4yNCJ9XSxbInBhdGgiLHtkOiJNNS41MiAxNy45OWMxLjA1Ljk1IDIuOTEgMi40MiA0LjUgMy4xNWEuOC44IDAgMCAwIDEuMTMtLjY4Yy4yLTIuMzQtLjMzLTUuMy0xLjU3LTguMjgifV0sWyJwYXRoIix7ZDoiTTguMzUgMi42OGExMCAxMCAwIDAgMSA5Ljk4IDEuNThjLjQzLjM1LjQuOTYtLjEyIDEuMTctMS41LjYtNC4zLjk4LTYuMDcgMS4wNSJ9XSxbInBhdGgiLHtkOiJtMiAyIDIwIDIwIn1dXX0pO3ZhciBvTixqUmU9ZygoKT0+e29OPVtbInBhdGgiLHtkOiJNMTIgN3Y0In1dLFsicGF0aCIse2Q6Ik0xNCAyMXYtM2EyIDIgMCAwIDAtNCAwdjMifV0sWyJwYXRoIix7ZDoiTTE0IDloLTQifV0sWyJwYXRoIix7ZDoiTTE4IDExaDJhMiAyIDAgMCAxIDIgMnY2YTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0ydi05YTIgMiAwIDAgMSAyLTJoMiJ9XSxbInBhdGgiLHtkOiJNMTggMjFWNWEyIDIgMCAwIDAtMi0ySDhhMiAyIDAgMCAwLTIgMnYxNiJ9XV19KTt2YXIgbk4sVlJlPWcoKCk9PntuTj1bWyJwYXRoIix7ZDoiTTEwIDIydi02LjU3In1dLFsicGF0aCIse2Q6Ik0xMiAxMWguMDEifV0sWyJwYXRoIix7ZDoiTTEyIDdoLjAxIn1dLFsicGF0aCIse2Q6Ik0xNCAxNS40M1YyMiJ9XSxbInBhdGgiLHtkOiJNMTUgMTZhNSA1IDAgMCAwLTYgMCJ9XSxbInBhdGgiLHtkOiJNMTYgMTFoLjAxIn1dLFsicGF0aCIse2Q6Ik0xNiA3aC4wMSJ9XSxbInBhdGgiLHtkOiJNOCAxMWguMDEifV0sWyJwYXRoIix7ZDoiTTggN2guMDEifV0sWyJyZWN0Iix7eDoiNCIseToiMiIsd2lkdGg6IjE2IixoZWlnaHQ6IjIwIixyeDoiMiJ9XV19KTt2YXIgbE4sVVJlPWcoKCk9PntsTj1bWyJwYXRoIix7ZDoiTTUgMjJoMTQifV0sWyJwYXRoIix7ZDoiTTUgMmgxNCJ9XSxbInBhdGgiLHtkOiJNMTcgMjJ2LTQuMTcyYTIgMiAwIDAgMC0uNTg2LTEuNDE0TDEyIDEybC00LjQxNCA0LjQxNEEyIDIgMCAwIDAgNyAxNy44MjhWMjIifV0sWyJwYXRoIix7ZDoiTTcgMnY0LjE3MmEyIDIgMCAwIDAgLjU4NiAxLjQxNEwxMiAxMmw0LjQxNC00LjQxNEEyIDIgMCAwIDAgMTcgNi4xNzJWMiJ9XV19KTt2YXIgY04sV1JlPWcoKCk9PntjTj1bWyJwYXRoIix7ZDoiTTguNjIgMTMuOEEyLjI1IDIuMjUgMCAxIDEgMTIgMTAuODM2YTIuMjUgMi4yNSAwIDEgMSAzLjM4IDIuOTY2bC0yLjYyNiAyLjg1NmEuOTk4Ljk5OCAwIDAgMS0xLjUwNyAweiJ9XSxbInBhdGgiLHtkOiJNMyAxMGEyIDIgMCAwIDEgLjcwOS0xLjUyOGw3LTZhMiAyIDAgMCAxIDIuNTgyIDBsNyA2QTIgMiAwIDAgMSAyMSAxMHY5YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0yeiJ9XV19KTt2YXIgZE4sR1JlPWcoKCk9PntkTj1bWyJwYXRoIix7ZDoiTTEwIDEyVjguOTY0In1dLFsicGF0aCIse2Q6Ik0xNCAxMlY4Ljk2NCJ9XSxbInBhdGgiLHtkOiJNMTUgMTJhMSAxIDAgMCAxIDEgMXYyYTIgMiAwIDAgMS0yIDJoLTRhMiAyIDAgMCAxLTItMnYtMmExIDEgMCAwIDEgMS0xeiJ9XSxbInBhdGgiLHtkOiJNOC41IDIxSDVhMiAyIDAgMCAxLTItMnYtOWEyIDIgMCAwIDEgLjcwOS0xLjUyOGw3LTZhMiAyIDAgMCAxIDIuNTgyIDBsNyA2QTIgMiAwIDAgMSAyMSAxMHY5YTIgMiAwIDAgMS0yIDJoLTVhMiAyIDAgMCAxLTItMnYtMiJ9XV19KTt2YXIgdU4sS1JlPWcoKCk9Pnt1Tj1bWyJwYXRoIix7ZDoiTTkuNSAxMy44NjZhNCA0IDAgMCAxIDUgLjAxIn1dLFsicGF0aCIse2Q6Ik0xMiAxN2guMDEifV0sWyJwYXRoIix7ZDoiTTMgMTBhMiAyIDAgMCAxIC43MDktMS41MjhsNy02YTIgMiAwIDAgMSAyLjU4MiAwbDcgNkEyIDIgMCAwIDEgMjEgMTB2OWEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnoifV0sWyJwYXRoIix7ZDoiTTcgMTAuNzU0YTggOCAwIDAgMSAxMCAwIn1dXX0pO3ZhciBwTixZUmU9ZygoKT0+e3BOPVtbInBhdGgiLHtkOiJNMTIuMzUgMjFINWEyIDIgMCAwIDEtMi0ydi05YTIgMiAwIDAgMSAuNzEtMS41M2w3LTZhMiAyIDAgMCAxIDIuNTggMGw3IDZBMiAyIDAgMCAxIDIxIDEwdjIuMzUifV0sWyJwYXRoIix7ZDoiTTE0LjggMTIuNEExIDEgMCAwIDAgMTQgMTJoLTRhMSAxIDAgMCAwLTEgMXY4In1dLFsicGF0aCIse2Q6Ik0xNSAxOGg2In1dLFsicGF0aCIse2Q6Ik0xOCAxNXY2In1dXX0pO3ZhciB5NixaUmU9ZygoKT0+e3k2PVtbInBhdGgiLHtkOiJNMTUgMjF2LThhMSAxIDAgMCAwLTEtMWgtNGExIDEgMCAwIDAtMSAxdjgifV0sWyJwYXRoIix7ZDoiTTMgMTBhMiAyIDAgMCAxIC43MDktMS41MjhsNy02YTIgMiAwIDAgMSAyLjU4MiAwbDcgNkEyIDIgMCAwIDEgMjEgMTB2OWEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnoifV1dfSk7dmFyIHc2LFhSZT1nKCgpPT57dzY9W1sicGF0aCIse2Q6Ik0xMiAxN2M1IDAgOC0yLjY5IDgtNkg0YzAgMy4zMSAzIDYgOCA2bS00IDRoOG0tNC0zdjNNNS4xNCAxMWEzLjUgMy41IDAgMSAxIDYuNzEgMCJ9XSxbInBhdGgiLHtkOiJNMTIuMTQgMTFhMy41IDMuNSAwIDEgMSA2LjcxIDAifV0sWyJwYXRoIix7ZDoiTTE1LjUgNi41YTMuNSAzLjUgMCAxIDAtNyAwIn1dXX0pO3ZhciBrNixRUmU9ZygoKT0+e2s2PVtbInBhdGgiLHtkOiJtNyAxMSA0LjA4IDEwLjM1YTEgMSAwIDAgMCAxLjg0IDBMMTcgMTEifV0sWyJwYXRoIix7ZDoiTTE3IDdBNSA1IDAgMCAwIDcgNyJ9XSxbInBhdGgiLHtkOiJNMTcgN2EyIDIgMCAwIDEgMCA0SDdhMiAyIDAgMCAxIDAtNCJ9XV19KTt2YXIgaE4sSlJlPWcoKCk9PntoTj1bWyJwYXRoIix7ZDoiTTEzLjUgOGgtMyJ9XSxbInBhdGgiLHtkOiJtMTUgMi0xIDJoM2EyIDIgMCAwIDEgMiAydjE0YTIgMiAwIDAgMS0yIDJIN2EyIDIgMCAwIDEtMi0yVjZhMiAyIDAgMCAxIDItMmgzIn1dLFsicGF0aCIse2Q6Ik0xNi44OTkgMjJBNSA1IDAgMCAwIDcuMSAyMiJ9XSxbInBhdGgiLHtkOiJtOSAyIDMgNiJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjE1IixyOiIzIn1dXX0pO3ZhciBmTixlT2U9ZygoKT0+e2ZOPVtbInBhdGgiLHtkOiJNMTYgMTBoMiJ9XSxbInBhdGgiLHtkOiJNMTYgMTRoMiJ9XSxbInBhdGgiLHtkOiJNNi4xNyAxNWEzIDMgMCAwIDEgNS42NiAwIn1dLFsiY2lyY2xlIix7Y3g6IjkiLGN5OiIxMSIscjoiMiJ9XSxbInJlY3QiLHt4OiIyIix5OiI1Iix3aWR0aDoiMjAiLGhlaWdodDoiMTQiLHJ4OiIyIn1dXX0pO3ZhciBtTix0T2U9ZygoKT0+e21OPVtbInBhdGgiLHtkOiJNMTAuMyAyMUg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDE0YTIgMiAwIDAgMSAyIDJ2MTBsLTMuMS0zLjFhMiAyIDAgMCAwLTIuODE0LjAxNEw2IDIxIn1dLFsicGF0aCIse2Q6Im0xNCAxOSAzIDN2LTUuNSJ9XSxbInBhdGgiLHtkOiJtMTcgMjIgMy0zIn1dLFsiY2lyY2xlIix7Y3g6IjkiLGN5OiI5IixyOiIyIn1dXX0pO3ZhciBnTixhT2U9ZygoKT0+e2dOPVtbInBhdGgiLHtkOiJNMjEgOXYxMGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoNyJ9XSxbImxpbmUiLHt4MToiMTYiLHgyOiIyMiIseTE6IjUiLHkyOiI1In1dLFsiY2lyY2xlIix7Y3g6IjkiLGN5OiI5IixyOiIyIn1dLFsicGF0aCIse2Q6Im0yMSAxNS0zLjA4Ni0zLjA4NmEyIDIgMCAwIDAtMi44MjggMEw2IDIxIn1dXX0pO3ZhciBiTixzT2U9ZygoKT0+e2JOPVtbImxpbmUiLHt4MToiMiIseDI6IjIyIix5MToiMiIseTI6IjIyIn1dLFsicGF0aCIse2Q6Ik0xMC40MSAxMC40MWEyIDIgMCAxIDEtMi44My0yLjgzIn1dLFsibGluZSIse3gxOiIxMy41Iix4MjoiNiIseTE6IjEzLjUiLHkyOiIyMSJ9XSxbImxpbmUiLHt4MToiMTgiLHgyOiIyMSIseTE6IjEyIix5MjoiMTUifV0sWyJwYXRoIix7ZDoiTTMuNTkgMy41OUExLjk5IDEuOTkgMCAwIDAgMyA1djE0YTIgMiAwIDAgMCAyIDJoMTRjLjU1IDAgMS4wNTItLjIyIDEuNDEtLjU5In1dLFsicGF0aCIse2Q6Ik0yMSAxNVY1YTIgMiAwIDAgMC0yLTJIOSJ9XV19KTt2YXIgdk4saU9lPWcoKCk9Pnt2Tj1bWyJwYXRoIix7ZDoiTTE1IDE1LjAwM2ExIDEgMCAwIDEgMS41MTctLjg1OWw0Ljk5NyAyLjk5N2ExIDEgMCAwIDEgMCAxLjcxOGwtNC45OTcgMi45OTdhMSAxIDAgMCAxLTEuNTE3LS44NnoifV0sWyJwYXRoIix7ZDoiTTIxIDEyLjE3VjVhMiAyIDAgMCAwLTItMkg1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmg2In1dLFsicGF0aCIse2Q6Im02IDIxIDUtNSJ9XSxbImNpcmNsZSIse2N4OiI5IixjeToiOSIscjoiMiJ9XV19KTt2YXIgeE4sck9lPWcoKCk9Pnt4Tj1bWyJwYXRoIix7ZDoiTTE2IDVoNiJ9XSxbInBhdGgiLHtkOiJNMTkgMnY2In1dLFsicGF0aCIse2Q6Ik0yMSAxMS41VjE5YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmg3LjUifV0sWyJwYXRoIix7ZDoibTIxIDE1LTMuMDg2LTMuMDg2YTIgMiAwIDAgMC0yLjgyOCAwTDYgMjEifV0sWyJjaXJjbGUiLHtjeDoiOSIsY3k6IjkiLHI6IjIifV1dfSk7dmFyIHlOLG9PZT1nKCgpPT57eU49W1sicGF0aCIse2Q6Ik0xMC4zIDIxSDVhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoMTRhMiAyIDAgMCAxIDIgMnYxMGwtMy4xLTMuMWEyIDIgMCAwIDAtMi44MTQuMDE0TDYgMjEifV0sWyJwYXRoIix7ZDoibTE0IDE5LjUgMy0zIDMgMyJ9XSxbInBhdGgiLHtkOiJNMTcgMjJ2LTUuNSJ9XSxbImNpcmNsZSIse2N4OiI5IixjeToiOSIscjoiMiJ9XV19KTt2YXIgd04sbk9lPWcoKCk9Pnt3Tj1bWyJwYXRoIix7ZDoiTTE2IDNoNXY1In1dLFsicGF0aCIse2Q6Ik0xNyAyMWgyYTIgMiAwIDAgMCAyLTIifV0sWyJwYXRoIix7ZDoiTTIxIDEydjMifV0sWyJwYXRoIix7ZDoibTIxIDMtNSA1In1dLFsicGF0aCIse2Q6Ik0zIDdWNWEyIDIgMCAwIDEgMi0yIn1dLFsicGF0aCIse2Q6Im01IDIxIDQuMTQ0LTQuMTQ0YTEuMjEgMS4yMSAwIDAgMSAxLjcxMiAwTDEzIDE5In1dLFsicGF0aCIse2Q6Ik05IDNoMyJ9XSxbInJlY3QiLHt4OiIzIix5OiIxMSIsd2lkdGg6IjEwIixoZWlnaHQ6IjEwIixyeDoiMSJ9XV19KTt2YXIga04sbE9lPWcoKCk9PntrTj1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiIscnk6IjIifV0sWyJjaXJjbGUiLHtjeDoiOSIsY3k6IjkiLHI6IjIifV0sWyJwYXRoIix7ZDoibTIxIDE1LTMuMDg2LTMuMDg2YTIgMiAwIDAgMC0yLjgyOCAwTDYgMjEifV1dfSk7dmFyIFNOLGNPZT1nKCgpPT57U049W1sicGF0aCIse2Q6Im0yMiAxMS0xLjI5Ni0xLjI5NmEyLjQgMi40IDAgMCAwLTMuNDA4IDBMMTEgMTYifV0sWyJwYXRoIix7ZDoiTTQgOGEyIDIgMCAwIDAtMiAydjEwYTIgMiAwIDAgMCAyIDJoMTBhMiAyIDAgMCAwIDItMiJ9XSxbImNpcmNsZSIse2N4OiIxMyIsY3k6IjciLHI6IjEiLGZpbGw6ImN1cnJlbnRDb2xvciJ9XSxbInJlY3QiLHt4OiI4Iix5OiIyIix3aWR0aDoiMTQiLGhlaWdodDoiMTQiLHJ4OiIyIn1dXX0pO3ZhciBfTixkT2U9ZygoKT0+e19OPVtbInBhdGgiLHtkOiJNMTIgM3YxMiJ9XSxbInBhdGgiLHtkOiJtOCAxMSA0IDQgNC00In1dLFsicGF0aCIse2Q6Ik04IDVINGEyIDIgMCAwIDAtMiAydjEwYTIgMiAwIDAgMCAyIDJoMTZhMiAyIDAgMCAwIDItMlY3YTIgMiAwIDAgMC0yLTJoLTQifV1dfSk7dmFyIE1OLHVPZT1nKCgpPT57TU49W1sicG9seWxpbmUiLHtwb2ludHM6IjIyIDEyIDE2IDEyIDE0IDE1IDEwIDE1IDggMTIgMiAxMiJ9XSxbInBhdGgiLHtkOiJNNS40NSA1LjExIDIgMTJ2NmEyIDIgMCAwIDAgMiAyaDE2YTIgMiAwIDAgMCAyLTJ2LTZsLTMuNDUtNi44OUEyIDIgMCAwIDAgMTYuNzYgNEg3LjI0YTIgMiAwIDAgMC0xLjc5IDEuMTF6In1dXX0pO3ZhciB6TixwT2U9ZygoKT0+e3pOPVtbInBhdGgiLHtkOiJNNiAzaDEyIn1dLFsicGF0aCIse2Q6Ik02IDhoMTIifV0sWyJwYXRoIix7ZDoibTYgMTMgOC41IDgifV0sWyJwYXRoIix7ZDoiTTYgMTNoMyJ9XSxbInBhdGgiLHtkOiJNOSAxM2M2LjY2NyAwIDYuNjY3LTEwIDAtMTAifV1dfSk7dmFyIENOLGhPZT1nKCgpPT57Q049W1sicGF0aCIse2Q6Ik02IDE2YzUgMCA3LTggMTItOGE0IDQgMCAwIDEgMCA4Yy01IDAtNy04LTEyLThhNCA0IDAgMSAwIDAgOCJ9XV19KTt2YXIgVE4sZk9lPWcoKCk9PntUTj1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifV0sWyJwYXRoIix7ZDoiTTEyIDE2di00In1dLFsicGF0aCIse2Q6Ik0xMiA4aC4wMSJ9XV19KTt2YXIgJE4sbU9lPWcoKCk9PnskTj1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNNyA3aC4wMSJ9XSxbInBhdGgiLHtkOiJNMTcgN2guMDEifV0sWyJwYXRoIix7ZDoiTTcgMTdoLjAxIn1dLFsicGF0aCIse2Q6Ik0xNyAxN2guMDEifV1dfSk7dmFyIEROLGdPZT1nKCgpPT57RE49W1sibGluZSIse3gxOiIxOSIseDI6IjEwIix5MToiNCIseTI6IjQifV0sWyJsaW5lIix7eDE6IjE0Iix4MjoiNSIseTE6IjIwIix5MjoiMjAifV0sWyJsaW5lIix7eDE6IjE1Iix4MjoiOSIseTE6IjQiLHkyOiIyMCJ9XV19KTt2YXIgTE4sYk9lPWcoKCk9PntMTj1bWyJwYXRoIix7ZDoibTE2IDE0IDQgNC00IDQifV0sWyJwYXRoIix7ZDoiTTIwIDEwYTggOCAwIDEgMC04IDhoOCJ9XV19KTt2YXIgRU4sdk9lPWcoKCk9PntFTj1bWyJwYXRoIix7ZDoiTTQgMTBhOCA4IDAgMSAxIDggOEg0In1dLFsicGF0aCIse2Q6Im04IDIyLTQtNCA0LTQifV1dfSk7dmFyIFBOLHhPZT1nKCgpPT57UE49W1sicGF0aCIse2Q6Ik0xMiA5LjVWMjFtMC0xMS41TDYgM202IDYuNUwxOCAzIn1dLFsicGF0aCIse2Q6Ik02IDE1aDEyIn1dLFsicGF0aCIse2Q6Ik02IDExaDEyIn1dXX0pO3ZhciBJTix5T2U9ZygoKT0+e0lOPVtbInBhdGgiLHtkOiJNMjEgMTdhMiAyIDAgMCAwLTItMkg1YTIgMiAwIDAgMC0yIDJ2MmEyIDIgMCAwIDAgMiAyaDE0YTIgMiAwIDAgMCAyLTJ2LTJaIn1dLFsicGF0aCIse2Q6Ik02IDE1di0yIn1dLFsicGF0aCIse2Q6Ik0xMiAxNVY5In1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiNiIscjoiMyJ9XV19KTt2YXIgQU4sd09lPWcoKCk9PntBTj1bWyJwYXRoIix7ZDoiTTUgM3YxNCJ9XSxbInBhdGgiLHtkOiJNMTIgM3Y4In1dLFsicGF0aCIse2Q6Ik0xOSAzdjE4In1dXX0pO3ZhciBOTixrT2U9ZygoKT0+e05OPVtbInBhdGgiLHtkOiJNMTggMTdhMSAxIDAgMCAwLTEgMXYxYTIgMiAwIDEgMCAyLTJ6In1dLFsicGF0aCIse2Q6Ik0yMC45NyAzLjYxYS40NS40NSAwIDAgMC0uNTgtLjU4QzEwLjIgNi42IDYuNiAxMC4yIDMuMDMgMjAuMzlhLjQ1LjQ1IDAgMCAwIC41OC41OEMxMy44IDE3LjQgMTcuNCAxMy44IDIwLjk3IDMuNjEifV0sWyJwYXRoIix7ZDoibTYuNzA3IDYuNzA3IDEwLjU4NiAxMC41ODYifV0sWyJwYXRoIix7ZDoiTTcgNWEyIDIgMCAxIDAtMiAyaDFhMSAxIDAgMCAwIDEtMXoifV1dfSk7dmFyIFJOLFNPZT1nKCgpPT57Uk49W1sicGF0aCIse2Q6Ik0xMi40IDIuN2EyLjUgMi41IDAgMCAxIDMuNCAwbDUuNSA1LjVhMi41IDIuNSAwIDAgMSAwIDMuNGwtMy43IDMuN2EyLjUgMi41IDAgMCAxLTMuNCAwTDguNyA5LjhhMi41IDIuNSAwIDAgMSAwLTMuNHoifV0sWyJwYXRoIix7ZDoibTE0IDcgMyAzIn1dLFsicGF0aCIse2Q6Im05LjQgMTAuNi02LjgxNCA2LjgxNEEyIDIgMCAwIDAgMiAxOC44MjhWMjFhMSAxIDAgMCAwIDEgMWgzYTEgMSAwIDAgMCAxLTF2LTFhMSAxIDAgMCAxIDEtMWgxYTEgMSAwIDAgMCAxLTF2LTFhMSAxIDAgMCAxIDEtMWguMTcyYTIgMiAwIDAgMCAxLjQxNC0uNTg2bC44MTQtLjgxNCJ9XV19KTt2YXIgT04sX09lPWcoKCk9PntPTj1bWyJwYXRoIix7ZDoiTTIuNTg2IDE3LjQxNEEyIDIgMCAwIDAgMiAxOC44MjhWMjFhMSAxIDAgMCAwIDEgMWgzYTEgMSAwIDAgMCAxLTF2LTFhMSAxIDAgMCAxIDEtMWgxYTEgMSAwIDAgMCAxLTF2LTFhMSAxIDAgMCAxIDEtMWguMTcyYTIgMiAwIDAgMCAxLjQxNC0uNTg2bC44MTQtLjgxNGE2LjUgNi41IDAgMSAwLTQtNHoifV0sWyJjaXJjbGUiLHtjeDoiMTYuNSIsY3k6IjcuNSIscjoiLjUiLGZpbGw6ImN1cnJlbnRDb2xvciJ9XV19KTt2YXIgRk4sTU9lPWcoKCk9PntGTj1bWyJwYXRoIix7ZDoibTE1LjUgNy41IDIuMyAyLjNhMSAxIDAgMCAwIDEuNCAwbDIuMS0yLjFhMSAxIDAgMCAwIDAtMS40TDE5IDQifV0sWyJwYXRoIix7ZDoibTIxIDItOS42IDkuNiJ9XSxbImNpcmNsZSIse2N4OiI3LjUiLGN5OiIxNS41IixyOiI1LjUifV1dfSk7dmFyIEJOLHpPZT1nKCgpPT57Qk49W1sicmVjdCIse3dpZHRoOiIyMCIsaGVpZ2h0OiIxNiIseDoiMiIseToiNCIscng6IjIifV0sWyJwYXRoIix7ZDoiTTYgOGg0In1dLFsicGF0aCIse2Q6Ik0xNCA4aC4wMSJ9XSxbInBhdGgiLHtkOiJNMTggOGguMDEifV0sWyJwYXRoIix7ZDoiTTIgMTJoMjAifV0sWyJwYXRoIix7ZDoiTTYgMTJ2NCJ9XSxbInBhdGgiLHtkOiJNMTAgMTJ2NCJ9XSxbInBhdGgiLHtkOiJNMTQgMTJ2NCJ9XSxbInBhdGgiLHtkOiJNMTggMTJ2NCJ9XV19KTt2YXIgSE4sQ09lPWcoKCk9PntITj1bWyJwYXRoIix7ZDoiTSAyMCA0IEEyIDIgMCAwIDEgMjIgNiJ9XSxbInBhdGgiLHtkOiJNIDIyIDYgTCAyMiAxNi40MSJ9XSxbInBhdGgiLHtkOiJNIDcgMTYgTCAxNiAxNiJ9XSxbInBhdGgiLHtkOiJNIDkuNjkgNCBMIDIwIDQifV0sWyJwYXRoIix7ZDoiTTE0IDhoLjAxIn1dLFsicGF0aCIse2Q6Ik0xOCA4aC4wMSJ9XSxbInBhdGgiLHtkOiJtMiAyIDIwIDIwIn1dLFsicGF0aCIse2Q6Ik0yMCAyMEg0YTIgMiAwIDAgMS0yLTJWNmEyIDIgMCAwIDEgMi0yIn1dLFsicGF0aCIse2Q6Ik02IDhoLjAxIn1dLFsicGF0aCIse2Q6Ik04IDEyaC4wMSJ9XV19KTt2YXIgcU4sVE9lPWcoKCk9PntxTj1bWyJwYXRoIix7ZDoiTTEwIDhoLjAxIn1dLFsicGF0aCIse2Q6Ik0xMiAxMmguMDEifV0sWyJwYXRoIix7ZDoiTTE0IDhoLjAxIn1dLFsicGF0aCIse2Q6Ik0xNiAxMmguMDEifV0sWyJwYXRoIix7ZDoiTTE4IDhoLjAxIn1dLFsicGF0aCIse2Q6Ik02IDhoLjAxIn1dLFsicGF0aCIse2Q6Ik03IDE2aDEwIn1dLFsicGF0aCIse2Q6Ik04IDEyaC4wMSJ9XSxbInJlY3QiLHt3aWR0aDoiMjAiLGhlaWdodDoiMTYiLHg6IjIiLHk6IjQiLHJ4OiIyIn1dXX0pO3ZhciBqTiwkT2U9ZygoKT0+e2pOPVtbInBhdGgiLHtkOiJNMTIgMnY1In1dLFsicGF0aCIse2Q6Ik0xNC44MjkgMTUuOTk4YTMgMyAwIDEgMS01LjY1OCAwIn1dLFsicGF0aCIse2Q6Ik0yMC45MiAxNC42MDZBMSAxIDAgMCAxIDIwIDE2SDRhMSAxIDAgMCAxLS45Mi0xLjM5NGwzLTdBMSAxIDAgMCAxIDcgN2gxMGExIDEgMCAwIDEgLjkyLjYwNnoifV1dfSk7dmFyIFZOLERPZT1nKCgpPT57Vk49W1sicGF0aCIse2Q6Ik0xMC4yOTMgMi4yOTNhMSAxIDAgMCAxIDEuNDE0IDBsMi41IDIuNSA1Ljk5NCAxLjIyN2ExIDEgMCAwIDEgLjUwNiAxLjY4N2wtNyA3YTEgMSAwIDAgMS0xLjY4Ny0uNTA2bC0xLjIyNy01Ljk5NC0yLjUtMi41YTEgMSAwIDAgMSAwLTEuNDE0eiJ9XSxbInBhdGgiLHtkOiJtMTQuMjA3IDQuNzkzLTMuNDE0IDMuNDE0In1dLFsicGF0aCIse2Q6Ik0zIDIwYTIgMiAwIDAgMSAyLTJoNGEyIDIgMCAwIDEgMiAydjFhMSAxIDAgMCAxLTEgMUg0YTEgMSAwIDAgMS0xLTF6In1dLFsicGF0aCIse2Q6Im05LjA4NiA2LjUtNC43OTMgNC43OTNhMSAxIDAgMCAwLS4xOCAxLjE3TDcgMTgifV1dfSk7dmFyIFVOLExPZT1nKCgpPT57VU49W1sicGF0aCIse2Q6Ik0xMiAxMHYxMiJ9XSxbInBhdGgiLHtkOiJNMTcuOTI5IDcuNjI5QTEgMSAwIDAgMSAxNyA5SDdhMSAxIDAgMCAxLS45MjgtMS4zNzFsMi01QTEgMSAwIDAgMSA5IDJoNmExIDEgMCAwIDEgLjkyOC42Mjl6In1dLFsicGF0aCIse2Q6Ik05IDIyaDYifV1dfSk7dmFyIFdOLEVPZT1nKCgpPT57V049W1sicGF0aCIse2Q6Ik0xOS45MjkgMTguNjI5QTEgMSAwIDAgMSAxOSAyMEg5YTEgMSAwIDAgMS0uOTI4LTEuMzcxbDItNUExIDEgMCAwIDEgMTEgMTNoNmExIDEgMCAwIDEgLjkyOC42Mjl6In1dLFsicGF0aCIse2Q6Ik02IDNhMiAyIDAgMCAxIDIgMnYyYTIgMiAwIDAgMS0yIDJINWExIDEgMCAwIDEtMS0xVjRhMSAxIDAgMCAxIDEtMXoifV0sWyJwYXRoIix7ZDoiTTggNmg0YTIgMiAwIDAgMSAyIDJ2NSJ9XV19KTt2YXIgR04sUE9lPWcoKCk9PntHTj1bWyJwYXRoIix7ZDoiTTE5LjkyOSA5LjYyOUExIDEgMCAwIDEgMTkgMTFIOWExIDEgMCAwIDEtLjkyOC0xLjM3MWwyLTVBMSAxIDAgMCAxIDExIDRoNmExIDEgMCAwIDEgLjkyOC42Mjl6In1dLFsicGF0aCIse2Q6Ik02IDE1YTIgMiAwIDAgMSAyIDJ2MmEyIDIgMCAwIDEtMiAySDVhMSAxIDAgMCAxLTEtMXYtNGExIDEgMCAwIDEgMS0xeiJ9XSxbInBhdGgiLHtkOiJNOCAxOGg0YTIgMiAwIDAgMCAyLTJ2LTUifV1dfSk7dmFyIEtOLElPZT1nKCgpPT57S049W1sicGF0aCIse2Q6Ik0xMiAxMnY2In1dLFsicGF0aCIse2Q6Ik00LjA3NyAxMC42MTVBMSAxIDAgMCAwIDUgMTJoMTRhMSAxIDAgMCAwIC45MjMtMS4zODVsLTMuMDc3LTcuMzg0QTIgMiAwIDAgMCAxNSAySDlhMiAyIDAgMCAwLTEuODQ2IDEuMjNaIn1dLFsicGF0aCIse2Q6Ik04IDIwYTIgMiAwIDAgMSAyLTJoNGEyIDIgMCAwIDEgMiAydjFhMSAxIDAgMCAxLTEgMUg5YTEgMSAwIDAgMS0xLTF6In1dXX0pO3ZhciBZTixBT2U9ZygoKT0+e1lOPVtbInBhdGgiLHtkOiJtMTIgOCA2LTMtNi0zdjEwIn1dLFsicGF0aCIse2Q6Im04IDExLjk5LTUuNSAzLjE0YTEgMSAwIDAgMCAwIDEuNzRsOC41IDQuODZhMiAyIDAgMCAwIDIgMGw4LjUtNC44NmExIDEgMCAwIDAgMC0xLjc0TDE2IDEyIn1dLFsicGF0aCIse2Q6Im02LjQ5IDEyLjg1IDExLjAyIDYuMyJ9XSxbInBhdGgiLHtkOiJNMTcuNTEgMTIuODUgNi41IDE5LjE1In1dXX0pO3ZhciBaTixOT2U9ZygoKT0+e1pOPVtbInBhdGgiLHtkOiJNMTAgMTh2LTcifV0sWyJwYXRoIix7ZDoiTTExLjEyIDIuMTk4YTIgMiAwIDAgMSAxLjc2LjAwNmw3Ljg2NiAzLjg0N2MuNDc2LjIzMy4zMS45NDktLjIyLjk0OUgzLjQ3NGMtLjUzIDAtLjY5NS0uNzE2LS4yMi0uOTQ5eiJ9XSxbInBhdGgiLHtkOiJNMTQgMTh2LTcifV0sWyJwYXRoIix7ZDoiTTE4IDE4di03In1dLFsicGF0aCIse2Q6Ik0zIDIyaDE4In1dLFsicGF0aCIse2Q6Ik02IDE4di03In1dXX0pO3ZhciBYTixST2U9ZygoKT0+e1hOPVtbInBhdGgiLHtkOiJtNSA4IDYgNiJ9XSxbInBhdGgiLHtkOiJtNCAxNCA2LTYgMi0zIn1dLFsicGF0aCIse2Q6Ik0yIDVoMTIifV0sWyJwYXRoIix7ZDoiTTcgMmgxIn1dLFsicGF0aCIse2Q6Im0yMiAyMi01LTEwLTUgMTAifV0sWyJwYXRoIix7ZDoiTTE0IDE4aDYifV1dfSk7dmFyIFFOLE9PZT1nKCgpPT57UU49W1sicGF0aCIse2Q6Ik0yIDIwaDIwIn1dLFsicGF0aCIse2Q6Im05IDEwIDIgMiA0LTQifV0sWyJyZWN0Iix7eDoiMyIseToiNCIsd2lkdGg6IjE4IixoZWlnaHQ6IjEyIixyeDoiMiJ9XV19KTt2YXIgUzYsRk9lPWcoKCk9PntTNj1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjEyIix4OiIzIix5OiI0IixyeDoiMiIscnk6IjIifV0sWyJsaW5lIix7eDE6IjIiLHgyOiIyMiIseTE6IjIwIix5MjoiMjAifV1dfSk7dmFyIEpOLEJPZT1nKCgpPT57Sk49W1sicGF0aCIse2Q6Ik0xOCA1YTIgMiAwIDAgMSAyIDJ2OC41MjZhMiAyIDAgMCAwIC4yMTIuODk3bDEuMDY4IDIuMTI3YTEgMSAwIDAgMS0uOSAxLjQ1SDMuNjJhMSAxIDAgMCAxLS45LTEuNDVsMS4wNjgtMi4xMjdBMiAyIDAgMCAwIDQgMTUuNTI2VjdhMiAyIDAgMCAxIDItMnoifV0sWyJwYXRoIix7ZDoiTTIwLjA1NCAxNS45ODdIMy45NDYifV1dfSk7dmFyIGVSLEhPZT1nKCgpPT57ZVI9W1sicGF0aCIse2Q6Ik03IDIyYTUgNSAwIDAgMS0yLTQifV0sWyJwYXRoIix7ZDoiTTcgMTYuOTNjLjk2LjQzIDEuOTYuNzQgMi45OS45MSJ9XSxbInBhdGgiLHtkOiJNMy4zNCAxNEE2LjggNi44IDAgMCAxIDIgMTBjMC00LjQyIDQuNDgtOCAxMC04czEwIDMuNTggMTAgOGE3LjE5IDcuMTkgMCAwIDEtLjMzIDIifV0sWyJwYXRoIix7ZDoiTTUgMThhMiAyIDAgMSAwIDAtNCAyIDIgMCAwIDAgMCA0eiJ9XSxbInBhdGgiLHtkOiJNMTQuMzMgMjJoLS4wOWEuMzUuMzUgMCAwIDEtLjI0LS4zMnYtMTBhLjM0LjM0IDAgMCAxIC4zMy0uMzRjLjA4IDAgLjE1LjAzLjIxLjA4bDcuMzQgNmEuMzMuMzMgMCAwIDEtLjIxLjU5aC00LjQ5bC0yLjU3IDMuODVhLjM1LjM1IDAgMCAxLS4yOC4xNHoifV1dfSk7dmFyIHRSLHFPZT1nKCgpPT57dFI9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIn1dLFsicGF0aCIse2Q6Ik0xOCAxM2E2IDYgMCAwIDEtNiA1IDYgNiAwIDAgMS02LTVoMTJaIn1dLFsibGluZSIse3gxOiI5Iix4MjoiOS4wMSIseTE6IjkiLHkyOiI5In1dLFsibGluZSIse3gxOiIxNSIseDI6IjE1LjAxIix5MToiOSIseTI6IjkifV1dfSk7dmFyIGFSLGpPZT1nKCgpPT57YVI9W1sicGF0aCIse2Q6Ik0zLjcwNCAxNC40NjdhMTAgOCAwIDEgMSAzLjExNSAyLjM3NSJ9XSxbInBhdGgiLHtkOiJNNyAyMmE1IDUgMCAwIDEtMi0zLjk5NCJ9XSxbImNpcmNsZSIse2N4OiI1IixjeToiMTYiLHI6IjIifV1dfSk7dmFyIHNSLFZPZT1nKCgpPT57c1I9W1sicGF0aCIse2Q6Ik0xMyAxMy43NGEyIDIgMCAwIDEtMiAwTDIuNSA4Ljg3YTEgMSAwIDAgMSAwLTEuNzRMMTEgMi4yNmEyIDIgMCAwIDEgMiAwbDguNSA0Ljg3YTEgMSAwIDAgMSAwIDEuNzR6In1dLFsicGF0aCIse2Q6Im0yMCAxNC4yODUgMS41Ljg0NWExIDEgMCAwIDEgMCAxLjc0TDEzIDIxLjc0YTIgMiAwIDAgMS0yIDBsLTguNS00Ljg3YTEgMSAwIDAgMSAwLTEuNzRsMS41LS44NDUifV1dfSk7dmFyIGlSLFVPZT1nKCgpPT57aVI9W1sicGF0aCIse2Q6Ik0xMi44MyAyLjE4YTIgMiAwIDAgMC0xLjY2IDBMMi42IDYuMDhhMSAxIDAgMCAwIDAgMS44M2w4LjU4IDMuOTFhMiAyIDAgMCAwIC44My4xOCAyIDIgMCAwIDAgLjgzLS4xOGw4LjU4LTMuOWExIDEgMCAwIDAgMC0xLjgzMnoifV0sWyJwYXRoIix7ZDoiTTE2IDE3aDYifV0sWyJwYXRoIix7ZDoiTTIuMDAzIDExLjk5NWExIDEgMCAwIDAgLjU5Ny45MTVsOC41OCAzLjkxYTIgMiAwIDAgMCAuODMuMTgifV0sWyJwYXRoIix7ZDoiTTIuMDAzIDE2Ljk5NWExIDEgMCAwIDAgLjU5Ny45MTVsOC41OCAzLjkxYTIgMiAwIDAgMCAuODMuMTggMiAyIDAgMCAwIC44My0uMThsMi4xMS0uOTYifV0sWyJwYXRoIix7ZDoiTTIyLjAxOCAxMi4wMDRhMSAxIDAgMCAxLS41OTguOTE2bC0uMTc3LjA4In1dXX0pO3ZhciByUixXT2U9ZygoKT0+e3JSPVtbInBhdGgiLHtkOiJNMTIuODMgMi4xOGEyIDIgMCAwIDAtMS42NiAwTDIuNiA2LjA4YTEgMSAwIDAgMCAwIDEuODNsOC41OCAzLjkxYTIgMiAwIDAgMCAuODMuMTggMiAyIDAgMCAwIC44My0uMThsOC41OC0zLjlhMSAxIDAgMCAwIDAtMS44MzF6In1dLFsicGF0aCIse2Q6Ik0xNiAxN2g2In1dLFsicGF0aCIse2Q6Ik0xOSAxNHY2In1dLFsicGF0aCIse2Q6Ik0yIDEyYTEgMSAwIDAgMCAuNTguOTFsOC42IDMuOTFhMiAyIDAgMCAwIC44MjUuMTc4In1dLFsicGF0aCIse2Q6Ik0yIDE3YTEgMSAwIDAgMCAuNTguOTFsOC42IDMuOTFhMiAyIDAgMCAwIDEuNjUgMGwyLjExNi0uOTYyIn1dXX0pO3ZhciBvUixHT2U9ZygoKT0+e29SPVtbInJlY3QiLHt3aWR0aDoiNyIsaGVpZ2h0OiI5Iix4OiIzIix5OiIzIixyeDoiMSJ9XSxbInJlY3QiLHt3aWR0aDoiNyIsaGVpZ2h0OiI1Iix4OiIxNCIseToiMyIscng6IjEifV0sWyJyZWN0Iix7d2lkdGg6IjciLGhlaWdodDoiOSIseDoiMTQiLHk6IjEyIixyeDoiMSJ9XSxbInJlY3QiLHt3aWR0aDoiNyIsaGVpZ2h0OiI1Iix4OiIzIix5OiIxNiIscng6IjEifV1dfSk7dmFyIF82LEtPZT1nKCgpPT57XzY9W1sicGF0aCIse2Q6Ik0xMi44MyAyLjE4YTIgMiAwIDAgMC0xLjY2IDBMMi42IDYuMDhhMSAxIDAgMCAwIDAgMS44M2w4LjU4IDMuOTFhMiAyIDAgMCAwIDEuNjYgMGw4LjU4LTMuOWExIDEgMCAwIDAgMC0xLjgzeiJ9XSxbInBhdGgiLHtkOiJNMiAxMmExIDEgMCAwIDAgLjU4LjkxbDguNiAzLjkxYTIgMiAwIDAgMCAxLjY1IDBsOC41OC0zLjlBMSAxIDAgMCAwIDIyIDEyIn1dLFsicGF0aCIse2Q6Ik0yIDE3YTEgMSAwIDAgMCAuNTguOTFsOC42IDMuOTFhMiAyIDAgMCAwIDEuNjUgMGw4LjU4LTMuOUExIDEgMCAwIDAgMjIgMTcifV1dfSk7dmFyIG5SLFlPZT1nKCgpPT57blI9W1sicmVjdCIse3dpZHRoOiI3IixoZWlnaHQ6IjciLHg6IjMiLHk6IjMiLHJ4OiIxIn1dLFsicmVjdCIse3dpZHRoOiI3IixoZWlnaHQ6IjciLHg6IjE0Iix5OiIzIixyeDoiMSJ9XSxbInJlY3QiLHt3aWR0aDoiNyIsaGVpZ2h0OiI3Iix4OiIxNCIseToiMTQiLHJ4OiIxIn1dLFsicmVjdCIse3dpZHRoOiI3IixoZWlnaHQ6IjciLHg6IjMiLHk6IjE0IixyeDoiMSJ9XV19KTt2YXIgbFIsWk9lPWcoKCk9PntsUj1bWyJyZWN0Iix7d2lkdGg6IjciLGhlaWdodDoiNyIseDoiMyIseToiMyIscng6IjEifV0sWyJyZWN0Iix7d2lkdGg6IjciLGhlaWdodDoiNyIseDoiMyIseToiMTQiLHJ4OiIxIn1dLFsicGF0aCIse2Q6Ik0xNCA0aDcifV0sWyJwYXRoIix7ZDoiTTE0IDloNyJ9XSxbInBhdGgiLHtkOiJNMTQgMTVoNyJ9XSxbInBhdGgiLHtkOiJNMTQgMjBoNyJ9XV19KTt2YXIgY1IsWE9lPWcoKCk9PntjUj1bWyJyZWN0Iix7d2lkdGg6IjciLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIxIn1dLFsicmVjdCIse3dpZHRoOiI3IixoZWlnaHQ6IjciLHg6IjE0Iix5OiIzIixyeDoiMSJ9XSxbInJlY3QiLHt3aWR0aDoiNyIsaGVpZ2h0OiI3Iix4OiIxNCIseToiMTQiLHJ4OiIxIn1dXX0pO3ZhciBkUixRT2U9ZygoKT0+e2RSPVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiNyIseDoiMyIseToiMyIscng6IjEifV0sWyJyZWN0Iix7d2lkdGg6IjkiLGhlaWdodDoiNyIseDoiMyIseToiMTQiLHJ4OiIxIn1dLFsicmVjdCIse3dpZHRoOiI1IixoZWlnaHQ6IjciLHg6IjE2Iix5OiIxNCIscng6IjEifV1dfSk7dmFyIHVSLEpPZT1nKCgpPT57dVI9W1sicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiI3Iix4OiIzIix5OiIzIixyeDoiMSJ9XSxbInJlY3QiLHt3aWR0aDoiNyIsaGVpZ2h0OiI3Iix4OiIzIix5OiIxNCIscng6IjEifV0sWyJyZWN0Iix7d2lkdGg6IjciLGhlaWdodDoiNyIseDoiMTQiLHk6IjE0IixyeDoiMSJ9XV19KTt2YXIgcFIsZUZlPWcoKCk9PntwUj1bWyJwYXRoIix7ZDoiTTExIDIwQTcgNyAwIDAgMSA5LjggNi4xQzE1LjUgNSAxNyA0LjQ4IDE5IDJjMSAyIDIgNC4xOCAyIDggMCA1LjUtNC43OCAxMC0xMCAxMFoifV0sWyJwYXRoIix7ZDoiTTIgMjFjMC0zIDEuODUtNS4zNiA1LjA4LTZDOS41IDE0LjUyIDEyIDEzIDEzIDEyIn1dXX0pO3ZhciBoUix0RmU9ZygoKT0+e2hSPVtbInBhdGgiLHtkOiJNMiAyMmMxLjI1LS45ODcgMi4yNy0xLjk3NSAzLjktMi4yYTUuNTYgNS41NiAwIDAgMSAzLjggMS41IDQgNCAwIDAgMCA2LjE4Ny0yLjM1MyAzLjUgMy41IDAgMCAwIDMuNjktNS4xMTZBMy41IDMuNSAwIDAgMCAyMC45NSA4IDMuNSAzLjUgMCAxIDAgMTYgMy4wNWEzLjUgMy41IDAgMCAwLTUuODMxIDEuMzczIDMuNSAzLjUgMCAwIDAtNS4xMTYgMy42OSA0IDQgMCAwIDAtMi4zNDggNi4xNTVDMy40OTkgMTUuNDIgNC40MDkgMTYuNzEyIDQuMiAxOC4xIDMuOTI2IDE5Ljc0MyAzLjAxNCAyMC43MzIgMiAyMiJ9XSxbInBhdGgiLHtkOiJNMiAyMiAxNyA3In1dXX0pO3ZhciBmUixhRmU9ZygoKT0+e2ZSPVtbInBhdGgiLHtkOiJNMTYgMTJoM2EyIDIgMCAwIDAgMS45MDItMS4zOGwxLjA1Ni0zLjMzM0ExIDEgMCAwIDAgMjEgNkgzYTEgMSAwIDAgMC0uOTU4IDEuMjg3bDEuMDU2IDMuMzM0QTIgMiAwIDAgMCA1IDEyaDMifV0sWyJwYXRoIix7ZDoiTTE4IDZWM2ExIDEgMCAwIDAtMS0xaC0zIn1dLFsicmVjdCIse3dpZHRoOiI4IixoZWlnaHQ6IjEyIix4OiI4Iix5OiIxMCIscng6IjEifV1dfSk7dmFyIG1SLHNGZT1nKCgpPT57bVI9W1sicGF0aCIse2Q6Ik03IDJhMSAxIDAgMCAwLS44IDEuNiAxNCAxNCAwIDAgMSAwIDE2LjhBMSAxIDAgMCAwIDcgMjJoMTBhMSAxIDAgMCAwIC44LTEuNiAxNCAxNCAwIDAgMSAwLTE2LjhBMSAxIDAgMCAwIDE3IDJ6In1dXX0pO3ZhciBnUixpRmU9ZygoKT0+e2dSPVtbInBhdGgiLHtkOiJNMTMuNDMzIDJhMSAxIDAgMCAxIC44MjQuNDQ4IDE4IDE4IDAgMCAxIDAgMTkuMTA0IDEgMSAwIDAgMS0uODI0LjQ0OGgtMi44NjZhMSAxIDAgMCAxLS44MjQtLjQ0OCAxOCAxOCAwIDAgMSAwLTE5LjEwNEExIDEgMCAwIDEgMTAuNTY3IDJ6In1dXX0pO3ZhciBiUixyRmU9ZygoKT0+e2JSPVtbInJlY3QiLHt3aWR0aDoiOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiMyIscng6IjEifV0sWyJwYXRoIix7ZDoiTTcgM3YxOCJ9XSxbInBhdGgiLHtkOiJNMjAuNCAxOC45Yy4yLjUtLjEgMS4xLS42IDEuM2wtMS45LjdjLS41LjItMS4xLS4xLTEuMy0uNkwxMS4xIDUuMWMtLjItLjUuMS0xLjEuNi0xLjNsMS45LS43Yy41LS4yIDEuMS4xIDEuMy42WiJ9XV19KTt2YXIgdlIsb0ZlPWcoKCk9Pnt2Uj1bWyJwYXRoIix7ZDoibTE2IDYgNCAxNCJ9XSxbInBhdGgiLHtkOiJNMTIgNnYxNCJ9XSxbInBhdGgiLHtkOiJNOCA4djEyIn1dLFsicGF0aCIse2Q6Ik00IDR2MTYifV1dfSk7dmFyIHhSLG5GZT1nKCgpPT57eFI9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIn1dLFsicGF0aCIse2Q6Im00LjkzIDQuOTMgNC4yNCA0LjI0In1dLFsicGF0aCIse2Q6Im0xNC44MyA5LjE3IDQuMjQtNC4yNCJ9XSxbInBhdGgiLHtkOiJtMTQuODMgMTQuODMgNC4yNCA0LjI0In1dLFsicGF0aCIse2Q6Im05LjE3IDE0LjgzLTQuMjQgNC4yNCJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiI0In1dXX0pO3ZhciB5UixsRmU9ZygoKT0+e3lSPVtbInBhdGgiLHtkOiJNMTQgMTJoMnY4In1dLFsicGF0aCIse2Q6Ik0xNCAyMGg0In1dLFsicGF0aCIse2Q6Ik02IDEyaDQifV0sWyJwYXRoIix7ZDoiTTYgMjBoNCJ9XSxbInBhdGgiLHtkOiJNOCAyMFY4YTQgNCAwIDAgMSA3LjQ2NC0yIn1dXX0pO3ZhciB3UixjRmU9ZygoKT0+e3dSPVtbInBhdGgiLHtkOiJNMTUgMTRjLjItMSAuNy0xLjcgMS41LTIuNSAxLS45IDEuNS0yLjIgMS41LTMuNUE2IDYgMCAwIDAgNiA4YzAgMSAuMiAyLjIgMS41IDMuNS43LjcgMS4zIDEuNSAxLjUgMi41In1dLFsicGF0aCIse2Q6Ik05IDE4aDYifV0sWyJwYXRoIix7ZDoiTTEwIDIyaDQifV1dfSk7dmFyIGtSLGRGZT1nKCgpPT57a1I9W1sicGF0aCIse2Q6Ik0xNi44IDExLjJjLjgtLjkgMS4yLTIgMS4yLTMuMmE2IDYgMCAwIDAtOS4zLTUifV0sWyJwYXRoIix7ZDoibTIgMiAyMCAyMCJ9XSxbInBhdGgiLHtkOiJNNi4zIDYuM2E0LjY3IDQuNjcgMCAwIDAgMS4yIDUuMmMuNy43IDEuMyAxLjUgMS41IDIuNSJ9XSxbInBhdGgiLHtkOiJNOSAxOGg2In1dLFsicGF0aCIse2Q6Ik0xMCAyMmg0In1dXX0pO3ZhciBTUix1RmU9ZygoKT0+e1NSPVtbInBhdGgiLHtkOiJNIDMgMTIgTCAxNSAxMiJ9XSxbImNpcmNsZSIse2N4OiIxOCIsY3k6IjEyIixyOiIzIn1dXX0pO3ZhciBfUixwRmU9ZygoKT0+e19SPVtbInBhdGgiLHtkOiJNMTEgNWgyIn1dLFsicGF0aCIse2Q6Ik0xNSAxMmg2In1dLFsicGF0aCIse2Q6Ik0xOSA1aDIifV0sWyJwYXRoIix7ZDoiTTMgMTJoNiJ9XSxbInBhdGgiLHtkOiJNMyAxOWgxOCJ9XSxbInBhdGgiLHtkOiJNMyA1aDIifV1dfSk7dmFyIE1SLGhGZT1nKCgpPT57TVI9W1sicGF0aCIse2Q6Ik03IDMuNWM1LTIgNyAyLjUgMyA0QzEuNSAxMCAyIDE1IDUgMTZjNSAyIDktMTAgMTQtN3MuNSAxMy41LTQgMTJjLTUtMi41LjUtMTEgNi0yIn1dXX0pO3ZhciB6UixmRmU9ZygoKT0+e3pSPVtbInBhdGgiLHtkOiJNOSAxN0g3QTUgNSAwIDAgMSA3IDcifV0sWyJwYXRoIix7ZDoiTTE1IDdoMmE1IDUgMCAwIDEgNCA4In1dLFsibGluZSIse3gxOiI4Iix4MjoiMTIiLHkxOiIxMiIseTI6IjEyIn1dLFsibGluZSIse3gxOiIyIix4MjoiMjIiLHkxOiIyIix5MjoiMjIifV1dfSk7dmFyIENSLG1GZT1nKCgpPT57Q1I9W1sicGF0aCIse2Q6Ik05IDE3SDdBNSA1IDAgMCAxIDcgN2gyIn1dLFsicGF0aCIse2Q6Ik0xNSA3aDJhNSA1IDAgMSAxIDAgMTBoLTIifV0sWyJsaW5lIix7eDE6IjgiLHgyOiIxNiIseTE6IjEyIix5MjoiMTIifV1dfSk7dmFyIFRSLGdGZT1nKCgpPT57VFI9W1sicGF0aCIse2Q6Ik0xMCAxM2E1IDUgMCAwIDAgNy41NC41NGwzLTNhNSA1IDAgMCAwLTcuMDctNy4wN2wtMS43MiAxLjcxIn1dLFsicGF0aCIse2Q6Ik0xNCAxMWE1IDUgMCAwIDAtNy41NC0uNTRsLTMgM2E1IDUgMCAwIDAgNy4wNyA3LjA3bDEuNzEtMS43MSJ9XV19KTt2YXIgJFIsYkZlPWcoKCk9PnskUj1bWyJwYXRoIix7ZDoiTTE2IDVIMyJ9XSxbInBhdGgiLHtkOiJNMTYgMTJIMyJ9XSxbInBhdGgiLHtkOiJNMTEgMTlIMyJ9XSxbInBhdGgiLHtkOiJtMTUgMTggMiAyIDQtNCJ9XV19KTt2YXIgRFIsdkZlPWcoKCk9PntEUj1bWyJwYXRoIix7ZDoiTTEzIDVoOCJ9XSxbInBhdGgiLHtkOiJNMTMgMTJoOCJ9XSxbInBhdGgiLHtkOiJNMTMgMTloOCJ9XSxbInBhdGgiLHtkOiJtMyAxNyAyIDIgNC00In1dLFsicGF0aCIse2Q6Im0zIDcgMiAyIDQtNCJ9XV19KTt2YXIgTFIseEZlPWcoKCk9PntMUj1bWyJwYXRoIix7ZDoiTTMgNWg4In1dLFsicGF0aCIse2Q6Ik0zIDEyaDgifV0sWyJwYXRoIix7ZDoiTTMgMTloOCJ9XSxbInBhdGgiLHtkOiJtMTUgNSAzIDMgMy0zIn1dLFsicGF0aCIse2Q6Im0xNSAxOSAzLTMgMyAzIn1dXX0pO3ZhciBFUix5RmU9ZygoKT0+e0VSPVtbInBhdGgiLHtkOiJNMyA1aDgifV0sWyJwYXRoIix7ZDoiTTMgMTJoOCJ9XSxbInBhdGgiLHtkOiJNMyAxOWg4In1dLFsicGF0aCIse2Q6Im0xNSA4IDMtMyAzIDMifV0sWyJwYXRoIix7ZDoibTE1IDE2IDMgMyAzLTMifV1dfSk7dmFyIFBSLHdGZT1nKCgpPT57UFI9W1sicGF0aCIse2Q6Ik0xMCA1aDExIn1dLFsicGF0aCIse2Q6Ik0xMCAxMmgxMSJ9XSxbInBhdGgiLHtkOiJNMTAgMTloMTEifV0sWyJwYXRoIix7ZDoibTMgMTAgMy0zLTMtMyJ9XSxbInBhdGgiLHtkOiJtMyAyMCAzLTMtMy0zIn1dXX0pO3ZhciBJUixrRmU9ZygoKT0+e0lSPVtbInBhdGgiLHtkOiJNMTYgNUgzIn1dLFsicGF0aCIse2Q6Ik0xNiAxMkgzIn1dLFsicGF0aCIse2Q6Ik05IDE5SDMifV0sWyJwYXRoIix7ZDoibTE2IDE2LTMgMyAzIDMifV0sWyJwYXRoIix7ZDoiTTIxIDV2MTJhMiAyIDAgMCAxLTIgMmgtNiJ9XV19KTt2YXIgQVIsU0ZlPWcoKCk9PntBUj1bWyJwYXRoIix7ZDoiTTEyIDVIMiJ9XSxbInBhdGgiLHtkOiJNNiAxMmgxMiJ9XSxbInBhdGgiLHtkOiJNOSAxOWg2In1dLFsicGF0aCIse2Q6Ik0xNiA1aDYifV0sWyJwYXRoIix7ZDoiTTE5IDhWMiJ9XV19KTt2YXIgTlIsX0ZlPWcoKCk9PntOUj1bWyJwYXRoIix7ZDoiTTIgNWgyMCJ9XSxbInBhdGgiLHtkOiJNNiAxMmgxMiJ9XSxbInBhdGgiLHtkOiJNOSAxOWg2In1dXX0pO3ZhciBHMCxNRmU9ZygoKT0+e0cwPVtbInBhdGgiLHtkOiJNMjEgNUgxMSJ9XSxbInBhdGgiLHtkOiJNMjEgMTJIMTEifV0sWyJwYXRoIix7ZDoiTTIxIDE5SDExIn1dLFsicGF0aCIse2Q6Im03IDgtNCA0IDQgNCJ9XV19KTt2YXIgSzAsekZlPWcoKCk9PntLMD1bWyJwYXRoIix7ZDoiTTIxIDVIMTEifV0sWyJwYXRoIix7ZDoiTTIxIDEySDExIn1dLFsicGF0aCIse2Q6Ik0yMSAxOUgxMSJ9XSxbInBhdGgiLHtkOiJtMyA4IDQgNC00IDQifV1dfSk7dmFyIFJSLENGZT1nKCgpPT57UlI9W1sicGF0aCIse2Q6Ik0xNiA1SDMifV0sWyJwYXRoIix7ZDoiTTExIDEySDMifV0sWyJwYXRoIix7ZDoiTTE2IDE5SDMifV0sWyJwYXRoIix7ZDoiTTIxIDEyaC02In1dXX0pO3ZhciBPUixURmU9ZygoKT0+e09SPVtbInBhdGgiLHtkOiJNMTYgNUgzIn1dLFsicGF0aCIse2Q6Ik0xMSAxMkgzIn1dLFsicGF0aCIse2Q6Ik0xMSAxOUgzIn1dLFsicGF0aCIse2Q6Ik0yMSAxNlY1In1dLFsiY2lyY2xlIix7Y3g6IjE4IixjeToiMTYiLHI6IjMifV1dfSk7dmFyIEZSLCRGZT1nKCgpPT57RlI9W1sicGF0aCIse2Q6Ik0xMSA1aDEwIn1dLFsicGF0aCIse2Q6Ik0xMSAxMmgxMCJ9XSxbInBhdGgiLHtkOiJNMTEgMTloMTAifV0sWyJwYXRoIix7ZDoiTTQgNGgxdjUifV0sWyJwYXRoIix7ZDoiTTQgOWgyIn1dLFsicGF0aCIse2Q6Ik02LjUgMjBIMy40YzAtMSAyLjYtMS45MjUgMi42LTMuNWExLjUgMS41IDAgMCAwLTIuNi0xLjAyIn1dXX0pO3ZhciBCUixERmU9ZygoKT0+e0JSPVtbInBhdGgiLHtkOiJNMTYgNUgzIn1dLFsicGF0aCIse2Q6Ik0xMSAxMkgzIn1dLFsicGF0aCIse2Q6Ik0xNiAxOUgzIn1dLFsicGF0aCIse2Q6Ik0xOCA5djYifV0sWyJwYXRoIix7ZDoiTTIxIDEyaC02In1dXX0pO3ZhciBIUixMRmU9ZygoKT0+e0hSPVtbInBhdGgiLHtkOiJNMjEgNUgzIn1dLFsicGF0aCIse2Q6Ik03IDEySDMifV0sWyJwYXRoIix7ZDoiTTcgMTlIMyJ9XSxbInBhdGgiLHtkOiJNMTIgMThhNSA1IDAgMCAwIDktMyA0LjUgNC41IDAgMCAwLTQuNS00LjVjLTEuMzMgMC0yLjU0LjU0LTMuNDEgMS40MUwxMSAxNCJ9XSxbInBhdGgiLHtkOiJNMTEgMTB2NGg0In1dXX0pO3ZhciBxUixFRmU9ZygoKT0+e3FSPVtbInBhdGgiLHtkOiJNMyA1aDYifV0sWyJwYXRoIix7ZDoiTTMgMTJoMTMifV0sWyJwYXRoIix7ZDoiTTMgMTloMTMifV0sWyJwYXRoIix7ZDoibTE2IDgtMy0zIDMtMyJ9XSxbInBhdGgiLHtkOiJNMjEgMTlWN2EyIDIgMCAwIDAtMi0yaC02In1dXX0pO3ZhciBqUixQRmU9ZygoKT0+e2pSPVtbInBhdGgiLHtkOiJNMTMgNWg4In1dLFsicGF0aCIse2Q6Ik0xMyAxMmg4In1dLFsicGF0aCIse2Q6Ik0xMyAxOWg4In1dLFsicGF0aCIse2Q6Im0zIDE3IDIgMiA0LTQifV0sWyJyZWN0Iix7eDoiMyIseToiNCIsd2lkdGg6IjYiLGhlaWdodDoiNiIscng6IjEifV1dfSk7dmFyIFZSLElGZT1nKCgpPT57VlI9W1sicGF0aCIse2Q6Ik04IDVoMTMifV0sWyJwYXRoIix7ZDoiTTEzIDEyaDgifV0sWyJwYXRoIix7ZDoiTTEzIDE5aDgifV0sWyJwYXRoIix7ZDoiTTMgMTBhMiAyIDAgMCAwIDIgMmgzIn1dLFsicGF0aCIse2Q6Ik0zIDV2MTJhMiAyIDAgMCAwIDIgMmgzIn1dXX0pO3ZhciBVUixBRmU9ZygoKT0+e1VSPVtbInBhdGgiLHtkOiJNMjEgNUgzIn1dLFsicGF0aCIse2Q6Ik0xMCAxMkgzIn1dLFsicGF0aCIse2Q6Ik0xMCAxOUgzIn1dLFsicGF0aCIse2Q6Ik0xNSAxMi4wMDNhMSAxIDAgMCAxIDEuNTE3LS44NTlsNC45OTcgMi45OTdhMSAxIDAgMCAxIDAgMS43MThsLTQuOTk3IDIuOTk3YTEgMSAwIDAgMS0xLjUxNy0uODZ6In1dXX0pO3ZhciBXUixORmU9ZygoKT0+e1dSPVtbInBhdGgiLHtkOiJNMTYgNUgzIn1dLFsicGF0aCIse2Q6Ik0xMSAxMkgzIn1dLFsicGF0aCIse2Q6Ik0xNiAxOUgzIn1dLFsicGF0aCIse2Q6Im0xNS41IDkuNSA1IDUifV0sWyJwYXRoIix7ZDoibTIwLjUgOS41LTUgNSJ9XV19KTt2YXIgR1IsUkZlPWcoKCk9PntHUj1bWyJwYXRoIix7ZDoiTTMgNWguMDEifV0sWyJwYXRoIix7ZDoiTTMgMTJoLjAxIn1dLFsicGF0aCIse2Q6Ik0zIDE5aC4wMSJ9XSxbInBhdGgiLHtkOiJNOCA1aDEzIn1dLFsicGF0aCIse2Q6Ik04IDEyaDEzIn1dLFsicGF0aCIse2Q6Ik04IDE5aDEzIn1dXX0pO3ZhciBNNixPRmU9ZygoKT0+e002PVtbInBhdGgiLHtkOiJNMjEgMTJhOSA5IDAgMSAxLTYuMjE5LTguNTYifV1dfSk7dmFyIEtSLEZGZT1nKCgpPT57S1I9W1sicGF0aCIse2Q6Ik0yMiAxMmExIDEgMCAwIDEtMTAgMCAxIDEgMCAwIDAtMTAgMCJ9XSxbInBhdGgiLHtkOiJNNyAyMC43YTEgMSAwIDEgMSA1LTguNyAxIDEgMCAxIDAgNS04LjYifV0sWyJwYXRoIix7ZDoiTTcgMy4zYTEgMSAwIDEgMSA1IDguNiAxIDEgMCAxIDAgNSA4LjYifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifV1dfSk7dmFyIFlSLEJGZT1nKCgpPT57WVI9W1sicGF0aCIse2Q6Ik0xMiAydjQifV0sWyJwYXRoIix7ZDoibTE2LjIgNy44IDIuOS0yLjkifV0sWyJwYXRoIix7ZDoiTTE4IDEyaDQifV0sWyJwYXRoIix7ZDoibTE2LjIgMTYuMiAyLjkgMi45In1dLFsicGF0aCIse2Q6Ik0xMiAxOHY0In1dLFsicGF0aCIse2Q6Im00LjkgMTkuMSAyLjktMi45In1dLFsicGF0aCIse2Q6Ik0yIDEyaDQifV0sWyJwYXRoIix7ZDoibTQuOSA0LjkgMi45IDIuOSJ9XV19KTt2YXIgWlIsSEZlPWcoKCk9PntaUj1bWyJsaW5lIix7eDE6IjIiLHgyOiI1Iix5MToiMTIiLHkyOiIxMiJ9XSxbImxpbmUiLHt4MToiMTkiLHgyOiIyMiIseTE6IjEyIix5MjoiMTIifV0sWyJsaW5lIix7eDE6IjEyIix4MjoiMTIiLHkxOiIyIix5MjoiNSJ9XSxbImxpbmUiLHt4MToiMTIiLHgyOiIxMiIseTE6IjE5Iix5MjoiMjIifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiNyJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIzIn1dXX0pO3ZhciBYUixxRmU9ZygoKT0+e1hSPVtbInBhdGgiLHtkOiJNMTIgMTl2MyJ9XSxbInBhdGgiLHtkOiJNMTIgMnYzIn1dLFsicGF0aCIse2Q6Ik0xOC44OSAxMy4yNGE3IDcgMCAwIDAtOC4xMy04LjEzIn1dLFsicGF0aCIse2Q6Ik0xOSAxMmgzIn1dLFsicGF0aCIse2Q6Ik0yIDEyaDMifV0sWyJwYXRoIix7ZDoibTIgMiAyMCAyMCJ9XSxbInBhdGgiLHtkOiJNNy4wNSA3LjA1YTcgNyAwIDAgMCA5LjkgOS45In1dXX0pO3ZhciBRUixqRmU9ZygoKT0+e1FSPVtbImxpbmUiLHt4MToiMiIseDI6IjUiLHkxOiIxMiIseTI6IjEyIn1dLFsibGluZSIse3gxOiIxOSIseDI6IjIyIix5MToiMTIiLHkyOiIxMiJ9XSxbImxpbmUiLHt4MToiMTIiLHgyOiIxMiIseTE6IjIiLHkyOiI1In1dLFsibGluZSIse3gxOiIxMiIseDI6IjEyIix5MToiMTkiLHkyOiIyMiJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiI3In1dXX0pO3ZhciB6NixWRmU9ZygoKT0+e3o2PVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjE2IixyOiIxIn1dLFsicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxMiIseDoiMyIseToiMTAiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik03IDEwVjdhNSA1IDAgMCAxIDkuMzMtMi41In1dXX0pO3ZhciBKUixVRmU9ZygoKT0+e0pSPVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjE2IixyOiIxIn1dLFsicmVjdCIse3g6IjMiLHk6IjEwIix3aWR0aDoiMTgiLGhlaWdodDoiMTIiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik03IDEwVjdhNSA1IDAgMCAxIDEwIDB2MyJ9XV19KTt2YXIgQzYsV0ZlPWcoKCk9PntDNj1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjExIix4OiIzIix5OiIxMSIscng6IjIiLHJ5OiIyIn1dLFsicGF0aCIse2Q6Ik03IDExVjdhNSA1IDAgMCAxIDkuOS0xIn1dXX0pO3ZhciBlTyxHRmU9ZygoKT0+e2VPPVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTEiLHg6IjMiLHk6IjExIixyeDoiMiIscnk6IjIifV0sWyJwYXRoIix7ZDoiTTcgMTFWN2E1IDUgMCAwIDEgMTAgMHY0In1dXX0pO3ZhciB0TyxLRmU9ZygoKT0+e3RPPVtbInBhdGgiLHtkOiJtMTAgMTcgNS01LTUtNSJ9XSxbInBhdGgiLHtkOiJNMTUgMTJIMyJ9XSxbInBhdGgiLHtkOiJNMTUgM2g0YTIgMiAwIDAgMSAyIDJ2MTRhMiAyIDAgMCAxLTIgMmgtNCJ9XV19KTt2YXIgYU8sWUZlPWcoKCk9PnthTz1bWyJwYXRoIix7ZDoibTE2IDE3IDUtNS01LTUifV0sWyJwYXRoIix7ZDoiTTIxIDEySDkifV0sWyJwYXRoIix7ZDoiTTkgMjFINWEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmg0In1dXX0pO3ZhciBzTyxaRmU9ZygoKT0+e3NPPVtbInBhdGgiLHtkOiJNMyA1aDEifV0sWyJwYXRoIix7ZDoiTTMgMTJoMSJ9XSxbInBhdGgiLHtkOiJNMyAxOWgxIn1dLFsicGF0aCIse2Q6Ik04IDVoMSJ9XSxbInBhdGgiLHtkOiJNOCAxMmgxIn1dLFsicGF0aCIse2Q6Ik04IDE5aDEifV0sWyJwYXRoIix7ZDoiTTEzIDVoOCJ9XSxbInBhdGgiLHtkOiJNMTMgMTJoOCJ9XSxbInBhdGgiLHtkOiJNMTMgMTloOCJ9XV19KTt2YXIgaU8sWEZlPWcoKCk9PntpTz1bWyJjaXJjbGUiLHtjeDoiMTEiLGN5OiIxMSIscjoiOCJ9XSxbInBhdGgiLHtkOiJtMjEgMjEtNC4zLTQuMyJ9XSxbInBhdGgiLHtkOiJNMTEgMTFhMiAyIDAgMCAwIDQgMCA0IDQgMCAwIDAtOCAwIDYgNiAwIDAgMCAxMiAwIn1dXX0pO3ZhciByTyxRRmU9ZygoKT0+e3JPPVtbInBhdGgiLHtkOiJNNiAyMGEyIDIgMCAwIDEtMi0yVjhhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjEwYTIgMiAwIDAgMS0yIDIifV0sWyJwYXRoIix7ZDoiTTggMThWNGEyIDIgMCAwIDEgMi0yaDRhMiAyIDAgMCAxIDIgMnYxNCJ9XSxbInBhdGgiLHtkOiJNMTAgMjBoNCJ9XSxbImNpcmNsZSIse2N4OiIxNiIsY3k6IjIwIixyOiIyIn1dLFsiY2lyY2xlIix7Y3g6IjgiLGN5OiIyMCIscjoiMiJ9XV19KTt2YXIgb08sSkZlPWcoKCk9PntvTz1bWyJwYXRoIix7ZDoiTTIyIDEzVjZhMiAyIDAgMCAwLTItMkg0YTIgMiAwIDAgMC0yIDJ2MTJjMCAxLjEuOSAyIDIgMmg4In1dLFsicGF0aCIse2Q6Im0yMiA3LTguOTcgNS43YTEuOTQgMS45NCAwIDAgMS0yLjA2IDBMMiA3In1dLFsicGF0aCIse2Q6Im0xNiAxOSAyIDIgNC00In1dXX0pO3ZhciBuTyxlQmU9ZygoKT0+e25PPVtbInBhdGgiLHtkOiJtMTIgMTUgNCA0In1dLFsicGF0aCIse2Q6Ik0yLjM1MiAxMC42NDhhMS4yMDUgMS4yMDUgMCAwIDAgMCAxLjcwNGwyLjI5NiAyLjI5NmExLjIwNSAxLjIwNSAwIDAgMCAxLjcwNCAwbDYuMDI5LTYuMDI5YTEgMSAwIDEgMSAzIDNsLTYuMDI5IDYuMDI5YTEuMjA1IDEuMjA1IDAgMCAwIDAgMS43MDRsMi4yOTYgMi4yOTZhMS4yMDUgMS4yMDUgMCAwIDAgMS43MDQgMGw2LjM2NS02LjM2N0ExIDEgMCAwIDAgOC43MTYgNC4yODJ6In1dLFsicGF0aCIse2Q6Im01IDggNCA0In1dXX0pO3ZhciBsTyx0QmU9ZygoKT0+e2xPPVtbInBhdGgiLHtkOiJNMjIgMTVWNmEyIDIgMCAwIDAtMi0ySDRhMiAyIDAgMCAwLTIgMnYxMmMwIDEuMS45IDIgMiAyaDgifV0sWyJwYXRoIix7ZDoibTIyIDctOC45NyA1LjdhMS45NCAxLjk0IDAgMCAxLTIuMDYgMEwyIDcifV0sWyJwYXRoIix7ZDoiTTE2IDE5aDYifV1dfSk7dmFyIGNPLGFCZT1nKCgpPT57Y089W1sicGF0aCIse2Q6Ik0yMS4yIDguNGMuNS4zOC44Ljk3LjggMS42djEwYTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0yVjEwYTIgMiAwIDAgMSAuOC0xLjZsOC02YTIgMiAwIDAgMSAyLjQgMGw4IDZaIn1dLFsicGF0aCIse2Q6Im0yMiAxMC04Ljk3IDUuN2ExLjk0IDEuOTQgMCAwIDEtMi4wNiAwTDIgMTAifV1dfSk7dmFyIGRPLHNCZT1nKCgpPT57ZE89W1sicGF0aCIse2Q6Ik0yMiAxM1Y2YTIgMiAwIDAgMC0yLTJINGEyIDIgMCAwIDAtMiAydjEyYzAgMS4xLjkgMiAyIDJoOCJ9XSxbInBhdGgiLHtkOiJtMjIgNy04Ljk3IDUuN2ExLjk0IDEuOTQgMCAwIDEtMi4wNiAwTDIgNyJ9XSxbInBhdGgiLHtkOiJNMTkgMTZ2NiJ9XSxbInBhdGgiLHtkOiJNMTYgMTloNiJ9XV19KTt2YXIgVDYsaUJlPWcoKCk9PntUNj1bWyJwYXRoIix7ZDoiTTIyIDEwLjVWNmEyIDIgMCAwIDAtMi0ySDRhMiAyIDAgMCAwLTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyLjUifV0sWyJwYXRoIix7ZDoibTIyIDctOC45NyA1LjdhMS45NCAxLjk0IDAgMCAxLTIuMDYgMEwyIDcifV0sWyJwYXRoIix7ZDoiTTE4IDE1LjI4Yy4yLS40LjUtLjguOS0xYTIuMSAyLjEgMCAwIDEgMi42LjRjLjMuNC41LjguNSAxLjMgMCAxLjMtMiAyLTIgMiJ9XSxbInBhdGgiLHtkOiJNMjAgMjJ2LjAxIn1dXX0pO3ZhciB1TyxyQmU9ZygoKT0+e3VPPVtbInBhdGgiLHtkOiJNMjIgMTIuNVY2YTIgMiAwIDAgMC0yLTJINGEyIDIgMCAwIDAtMiAydjEyYzAgMS4xLjkgMiAyIDJoNy41In1dLFsicGF0aCIse2Q6Im0yMiA3LTguOTcgNS43YTEuOTQgMS45NCAwIDAgMS0yLjA2IDBMMiA3In1dLFsicGF0aCIse2Q6Ik0xOCAyMWEzIDMgMCAxIDAgMC02IDMgMyAwIDAgMCAwIDZaIn1dLFsiY2lyY2xlIix7Y3g6IjE4IixjeToiMTgiLHI6IjMifV0sWyJwYXRoIix7ZDoibTIyIDIyLTEuNS0xLjUifV1dfSk7dmFyIHBPLG9CZT1nKCgpPT57cE89W1sicGF0aCIse2Q6Ik0yMiAxMC41VjZhMiAyIDAgMCAwLTItMkg0YTIgMiAwIDAgMC0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMi41In1dLFsicGF0aCIse2Q6Im0yMiA3LTguOTcgNS43YTEuOTQgMS45NCAwIDAgMS0yLjA2IDBMMiA3In1dLFsicGF0aCIse2Q6Ik0yMCAxNHY0In1dLFsicGF0aCIse2Q6Ik0yMCAyMnYuMDEifV1dfSk7dmFyIGhPLG5CZT1nKCgpPT57aE89W1sicGF0aCIse2Q6Ik0yMiAxM1Y2YTIgMiAwIDAgMC0yLTJINGEyIDIgMCAwIDAtMiAydjEyYzAgMS4xLjkgMiAyIDJoOSJ9XSxbInBhdGgiLHtkOiJtMjIgNy04Ljk3IDUuN2ExLjk0IDEuOTQgMCAwIDEtMi4wNiAwTDIgNyJ9XSxbInBhdGgiLHtkOiJtMTcgMTcgNCA0In1dLFsicGF0aCIse2Q6Im0yMSAxNy00IDQifV1dfSk7dmFyIGZPLGxCZT1nKCgpPT57Zk89W1sicGF0aCIse2Q6Ik0yMiAxN2EyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMlY5LjVDMiA3IDQgNSA2LjUgNUgxOGMyLjIgMCA0IDEuOCA0IDR2OFoifV0sWyJwb2x5bGluZSIse3BvaW50czoiMTUsOSAxOCw5IDE4LDExIn1dLFsicGF0aCIse2Q6Ik02LjUgNUM5IDUgMTEgNyAxMSA5LjVWMTdhMiAyIDAgMCAxLTIgMiJ9XSxbImxpbmUiLHt4MToiNiIseDI6IjciLHkxOiIxMCIseTI6IjEwIn1dXX0pO3ZhciBtTyxjQmU9ZygoKT0+e21PPVtbInBhdGgiLHtkOiJtMjIgNy04Ljk5MSA1LjcyN2EyIDIgMCAwIDEtMi4wMDkgMEwyIDcifV0sWyJyZWN0Iix7eDoiMiIseToiNCIsd2lkdGg6IjIwIixoZWlnaHQ6IjE2IixyeDoiMiJ9XV19KTt2YXIgZ08sZEJlPWcoKCk9PntnTz1bWyJwYXRoIix7ZDoiTTE3IDE5YTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0ydi04YTIgMiAwIDAgMSAxLTEuNzMyIn1dLFsicGF0aCIse2Q6Im0yMiA1LjUtNi40MTkgNC4xNzlhMiAyIDAgMCAxLTIuMTYyIDBMNyA1LjUifV0sWyJyZWN0Iix7eDoiNyIseToiMyIsd2lkdGg6IjE1IixoZWlnaHQ6IjEyIixyeDoiMiJ9XV19KTt2YXIgYk8sdUJlPWcoKCk9PntiTz1bWyJwYXRoIix7ZDoibTExIDE5LTEuMTA2LS41NTJhMiAyIDAgMCAwLTEuNzg4IDBsLTMuNjU5IDEuODNBMSAxIDAgMCAxIDMgMTkuMzgxVjYuNjE4YTEgMSAwIDAgMSAuNTUzLS44OTRsNC41NTMtMi4yNzdhMiAyIDAgMCAxIDEuNzg4IDBsNC4yMTIgMi4xMDZhMiAyIDAgMCAwIDEuNzg4IDBsMy42NTktMS44M0ExIDEgMCAwIDEgMjEgNC42MTlWMTQifV0sWyJwYXRoIix7ZDoiTTE1IDUuNzY0VjE0In1dLFsicGF0aCIse2Q6Ik0yMSAxOGgtNiJ9XSxbInBhdGgiLHtkOiJNOSAzLjIzNnYxNSJ9XV19KTt2YXIgdk8scEJlPWcoKCk9Pnt2Tz1bWyJwYXRoIix7ZDoiTTIwIDEwYzAgNC45OTMtNS41MzkgMTAuMTkzLTcuMzk5IDExLjc5OWExIDEgMCAwIDEtMS4yMDIgMEM5LjUzOSAyMC4xOTMgNCAxNC45OTMgNCAxMGE4IDggMCAwIDEgMTYgMCJ9XSxbInBhdGgiLHtkOiJtOSAxMCAyIDIgNC00In1dXX0pO3ZhciB4TyxoQmU9ZygoKT0+e3hPPVtbInBhdGgiLHtkOiJNMTkuNDMgMTIuOTM1Yy4zNTctLjk2Ny41Ny0xLjk1NS41Ny0yLjkzNWE4IDggMCAwIDAtMTYgMGMwIDQuOTkzIDUuNTM5IDEwLjE5MyA3LjM5OSAxMS43OTlhMSAxIDAgMCAwIDEuMjAyIDAgMzIuMTk3IDMyLjE5NyAwIDAgMCAuODEzLS43MjgifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMCIscjoiMyJ9XSxbInBhdGgiLHtkOiJtMTYgMTggMiAyIDQtNCJ9XV19KTt2YXIgeU8sZkJlPWcoKCk9Pnt5Tz1bWyJwYXRoIix7ZDoiTTE1IDIyYTEgMSAwIDAgMS0xLTF2LTRhMSAxIDAgMCAxIC40NDUtLjgzMmwzLTJhMSAxIDAgMCAxIDEuMTEgMGwzIDJBMSAxIDAgMCAxIDIyIDE3djRhMSAxIDAgMCAxLTEgMXoifV0sWyJwYXRoIix7ZDoiTTE4IDEwYTggOCAwIDAgMC0xNiAwYzAgNC45OTMgNS41MzkgMTAuMTkzIDcuMzk5IDExLjc5OWExIDEgMCAwIDAgLjYwMS4yIn1dLFsicGF0aCIse2Q6Ik0xOCAyMnYtMyJ9XSxbImNpcmNsZSIse2N4OiIxMCIsY3k6IjEwIixyOiIzIn1dXX0pO3ZhciB3TyxtQmU9ZygoKT0+e3dPPVtbInBhdGgiLHtkOiJNMjAgMTBjMCA0Ljk5My01LjUzOSAxMC4xOTMtNy4zOTkgMTEuNzk5YTEgMSAwIDAgMS0xLjIwMiAwQzkuNTM5IDIwLjE5MyA0IDE0Ljk5MyA0IDEwYTggOCAwIDAgMSAxNiAwIn1dLFsicGF0aCIse2Q6Ik05IDEwaDYifV1dfSk7dmFyIGtPLGdCZT1nKCgpPT57a089W1sicGF0aCIse2Q6Ik0xOC45NzcgMTRDMTkuNiAxMi43MDEgMjAgMTEuMzQzIDIwIDEwYTggOCAwIDAgMC0xNiAwYzAgNC45OTMgNS41MzkgMTAuMTkzIDcuMzk5IDExLjc5OWExIDEgMCAwIDAgMS4yMDIgMCAzMiAzMiAwIDAgMCAuODI0LS43MzgifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMCIscjoiMyJ9XSxbInBhdGgiLHtkOiJNMTYgMThoNiJ9XV19KTt2YXIgU08sYkJlPWcoKCk9PntTTz1bWyJwYXRoIix7ZDoiTTEyLjc1IDcuMDlhMyAzIDAgMCAxIDIuMTYgMi4xNiJ9XSxbInBhdGgiLHtkOiJNMTcuMDcyIDE3LjA3MmMtMS42MzQgMi4xNy0zLjUyNyAzLjkxMi00LjQ3MSA0LjcyN2ExIDEgMCAwIDEtMS4yMDIgMEM5LjUzOSAyMC4xOTMgNCAxNC45OTMgNCAxMGE4IDggMCAwIDEgMS40MzItNC41NjgifV0sWyJwYXRoIix7ZDoibTIgMiAyMCAyMCJ9XSxbInBhdGgiLHtkOiJNOC40NzUgMi44MThBOCA4IDAgMCAxIDIwIDEwYzAgMS4xODMtLjMxIDIuMzc3LS44MSAzLjUzMyJ9XSxbInBhdGgiLHtkOiJNOS4xMyA5LjEzYTMgMyAwIDAgMCAzLjc0IDMuNzQifV1dfSk7dmFyICQ2LHZCZT1nKCgpPT57JDY9W1sicGF0aCIse2Q6Ik0xNy45NyA5LjMwNEE4IDggMCAwIDAgMiAxMGMwIDQuNjkgNC44ODcgOS41NjIgNy4wMjIgMTEuNDY4In1dLFsicGF0aCIse2Q6Ik0yMS4zNzggMTYuNjI2YTEgMSAwIDAgMC0zLjAwNC0zLjAwNGwtNC4wMSA0LjAxMmEyIDIgMCAwIDAtLjUwNi44NTRsLS44MzcgMi44N2EuNS41IDAgMCAwIC42Mi42MmwyLjg3LS44MzdhMiAyIDAgMCAwIC44NTQtLjUwNnoifV0sWyJjaXJjbGUiLHtjeDoiMTAiLGN5OiIxMCIscjoiMyJ9XV19KTt2YXIgX08seEJlPWcoKCk9PntfTz1bWyJwYXRoIix7ZDoiTTIwIDEwYzAgNC45OTMtNS41MzkgMTAuMTkzLTcuMzk5IDExLjc5OWExIDEgMCAwIDEtMS4yMDIgMEM5LjUzOSAyMC4xOTMgNCAxNC45OTMgNCAxMGE4IDggMCAwIDEgMTYgMCJ9XSxbInBhdGgiLHtkOiJNMTIgN3Y2In1dLFsicGF0aCIse2Q6Ik05IDEwaDYifV1dfSk7dmFyIE1PLHlCZT1nKCgpPT57TU89W1sicGF0aCIse2Q6Ik0xOS45MTQgMTEuMTA1QTcuMjk4IDcuMjk4IDAgMCAwIDIwIDEwYTggOCAwIDAgMC0xNiAwYzAgNC45OTMgNS41MzkgMTAuMTkzIDcuMzk5IDExLjc5OWExIDEgMCAwIDAgMS4yMDIgMCAzMiAzMiAwIDAgMCAuODI0LS43MzgifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMCIscjoiMyJ9XSxbInBhdGgiLHtkOiJNMTYgMThoNiJ9XSxbInBhdGgiLHtkOiJNMTkgMTV2NiJ9XV19KTt2YXIgek8sd0JlPWcoKCk9Pnt6Tz1bWyJwYXRoIix7ZDoiTSAxMi4yNDggMjEuOTY5IGEgMSAxIDAgMCAxIC0wLjg0OSAtMC4xNyBDIDkuNTM5IDIwLjE5MyA0IDE0Ljk5MyA0IDEwIGEgOCA4IDAgMCAxIDE2IDAgQyAyMCAxMC40MiAxOS45NjEgMTAuODQxIDE5Ljg4OCAxMS4yNjIifV0sWyJwYXRoIix7ZDoibTIyIDIyLTEuODgtMS44OCJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEwIixyOiIzIn1dLFsiY2lyY2xlIix7Y3g6IjE4IixjeToiMTgiLHI6IjMifV1dfSk7dmFyIENPLGtCZT1nKCgpPT57Q089W1sicGF0aCIse2Q6Ik0xOS43NTIgMTEuOTAxQTcuNzggNy43OCAwIDAgMCAyMCAxMGE4IDggMCAwIDAtMTYgMGMwIDQuOTkzIDUuNTM5IDEwLjE5MyA3LjM5OSAxMS43OTlhMSAxIDAgMCAwIDEuMjAyIDAgMTkgMTkgMCAwIDAgLjA5LS4wNzcifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMCIscjoiMyJ9XSxbInBhdGgiLHtkOiJtMjEuNSAxNS41LTUgNSJ9XSxbInBhdGgiLHtkOiJtMjEuNSAyMC41LTUtNSJ9XV19KTt2YXIgVE8sU0JlPWcoKCk9PntUTz1bWyJwYXRoIix7ZDoiTTIwIDEwYzAgNC45OTMtNS41MzkgMTAuMTkzLTcuMzk5IDExLjc5OWExIDEgMCAwIDEtMS4yMDIgMEM5LjUzOSAyMC4xOTMgNCAxNC45OTMgNCAxMGE4IDggMCAwIDEgMTYgMCJ9XSxbInBhdGgiLHtkOiJtMTQuNSA3LjUtNSA1In1dLFsicGF0aCIse2Q6Im05LjUgNy41IDUgNSJ9XV19KTt2YXIgJE8sX0JlPWcoKCk9PnskTz1bWyJwYXRoIix7ZDoiTTIwIDEwYzAgNC45OTMtNS41MzkgMTAuMTkzLTcuMzk5IDExLjc5OWExIDEgMCAwIDEtMS4yMDIgMEM5LjUzOSAyMC4xOTMgNCAxNC45OTMgNCAxMGE4IDggMCAwIDEgMTYgMCJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEwIixyOiIzIn1dXX0pO3ZhciBETyxNQmU9ZygoKT0+e0RPPVtbInBhdGgiLHtkOiJNMTggOGMwIDMuNjEzLTMuODY5IDcuNDI5LTUuMzkzIDguNzk1YTEgMSAwIDAgMS0xLjIxNCAwQzkuODcgMTUuNDI5IDYgMTEuNjEzIDYgOGE2IDYgMCAwIDEgMTIgMCJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjgiLHI6IjIifV0sWyJwYXRoIix7ZDoiTTguNzE0IDE0aC0zLjcxYTEgMSAwIDAgMC0uOTQ4LjY4M2wtMi4wMDQgNkExIDEgMCAwIDAgMyAyMmgxOGExIDEgMCAwIDAgLjk0OC0xLjMxNmwtMi02YTEgMSAwIDAgMC0uOTQ5LS42ODRoLTMuNzEyIn1dXX0pO3ZhciBMTyx6QmU9ZygoKT0+e0xPPVtbInBhdGgiLHtkOiJtMTEgMTktMS4xMDYtLjU1MmEyIDIgMCAwIDAtMS43ODggMGwtMy42NTkgMS44M0ExIDEgMCAwIDEgMyAxOS4zODFWNi42MThhMSAxIDAgMCAxIC41NTMtLjg5NGw0LjU1My0yLjI3N2EyIDIgMCAwIDEgMS43ODggMGw0LjIxMiAyLjEwNmEyIDIgMCAwIDAgMS43ODggMGwzLjY1OS0xLjgzQTEgMSAwIDAgMSAyMSA0LjYxOVYxMiJ9XSxbInBhdGgiLHtkOiJNMTUgNS43NjRWMTIifV0sWyJwYXRoIix7ZDoiTTE4IDE1djYifV0sWyJwYXRoIix7ZDoiTTIxIDE4aC02In1dLFsicGF0aCIse2Q6Ik05IDMuMjM2djE1In1dXX0pO3ZhciBFTyxDQmU9ZygoKT0+e0VPPVtbInBhdGgiLHtkOiJNMTQuMTA2IDUuNTUzYTIgMiAwIDAgMCAxLjc4OCAwbDMuNjU5LTEuODNBMSAxIDAgMCAxIDIxIDQuNjE5djEyLjc2NGExIDEgMCAwIDEtLjU1My44OTRsLTQuNTUzIDIuMjc3YTIgMiAwIDAgMS0xLjc4OCAwbC00LjIxMi0yLjEwNmEyIDIgMCAwIDAtMS43ODggMGwtMy42NTkgMS44M0ExIDEgMCAwIDEgMyAxOS4zODFWNi42MThhMSAxIDAgMCAxIC41NTMtLjg5NGw0LjU1My0yLjI3N2EyIDIgMCAwIDEgMS43ODggMHoifV0sWyJwYXRoIix7ZDoiTTE1IDUuNzY0djE1In1dLFsicGF0aCIse2Q6Ik05IDMuMjM2djE1In1dXX0pO3ZhciBQTyxUQmU9ZygoKT0+e1BPPVtbInBhdGgiLHtkOiJtMTQgNiA0IDQifV0sWyJwYXRoIix7ZDoiTTE3IDNoNHY0In1dLFsicGF0aCIse2Q6Im0yMSAzLTcuNzUgNy43NSJ9XSxbImNpcmNsZSIse2N4OiI5IixjeToiMTUiLHI6IjYifV1dfSk7dmFyIElPLCRCZT1nKCgpPT57SU89W1sicGF0aCIse2Q6Ik0xNiAzaDV2NSJ9XSxbInBhdGgiLHtkOiJtMjEgMy02Ljc1IDYuNzUifV0sWyJjaXJjbGUiLHtjeDoiMTAiLGN5OiIxNCIscjoiNiJ9XV19KTt2YXIgQU8sREJlPWcoKCk9PntBTz1bWyJwYXRoIix7ZDoiTTggMjJoOCJ9XSxbInBhdGgiLHtkOiJNMTIgMTF2MTEifV0sWyJwYXRoIix7ZDoibTE5IDMtNyA4LTctOFoifV1dfSk7dmFyIE5PLExCZT1nKCgpPT57Tk89W1sicGF0aCIse2Q6Ik0xNSAzaDZ2NiJ9XSxbInBhdGgiLHtkOiJtMjEgMy03IDcifV0sWyJwYXRoIix7ZDoibTMgMjEgNy03In1dLFsicGF0aCIse2Q6Ik05IDIxSDN2LTYifV1dfSk7dmFyIFJPLEVCZT1nKCgpPT57Uk89W1sicGF0aCIse2Q6Ik04IDNINWEyIDIgMCAwIDAtMiAydjMifV0sWyJwYXRoIix7ZDoiTTIxIDhWNWEyIDIgMCAwIDAtMi0yaC0zIn1dLFsicGF0aCIse2Q6Ik0zIDE2djNhMiAyIDAgMCAwIDIgMmgzIn1dLFsicGF0aCIse2Q6Ik0xNiAyMWgzYTIgMiAwIDAgMCAyLTJ2LTMifV1dfSk7dmFyIE9PLFBCZT1nKCgpPT57T089W1sicGF0aCIse2Q6Ik03LjIxIDE1IDIuNjYgNy4xNGEyIDIgMCAwIDEgLjEzLTIuMkw0LjQgMi44QTIgMiAwIDAgMSA2IDJoMTJhMiAyIDAgMCAxIDEuNi44bDEuNiAyLjE0YTIgMiAwIDAgMSAuMTQgMi4yTDE2Ljc5IDE1In1dLFsicGF0aCIse2Q6Ik0xMSAxMiA1LjEyIDIuMiJ9XSxbInBhdGgiLHtkOiJtMTMgMTIgNS44OC05LjgifV0sWyJwYXRoIix7ZDoiTTggN2g4In1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiMTciLHI6IjUifV0sWyJwYXRoIix7ZDoiTTEyIDE4di0yaC0uNSJ9XV19KTt2YXIgRk8sSUJlPWcoKCk9PntGTz1bWyJwYXRoIix7ZDoiTTExLjYzNiA2QTEzIDEzIDAgMCAwIDE5LjQgMy4yIDEgMSAwIDAgMSAyMSA0djExLjM0NCJ9XSxbInBhdGgiLHtkOiJNMTQuMzc4IDE0LjM1N0ExMyAxMyAwIDAgMCAxMSAxNEg1YTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDEifV0sWyJwYXRoIix7ZDoibTIgMiAyMCAyMCJ9XSxbInBhdGgiLHtkOiJNNiAxNGExMiAxMiAwIDAgMCAyLjQgNy4yIDIgMiAwIDAgMCAzLjItMi40QTggOCAwIDAgMSAxMCAxNCJ9XSxbInBhdGgiLHtkOiJNOCA4djYifV1dfSk7dmFyIEJPLEFCZT1nKCgpPT57Qk89W1sicGF0aCIse2Q6Ik0xMSA2YTEzIDEzIDAgMCAwIDguNC0yLjhBMSAxIDAgMCAxIDIxIDR2MTJhMSAxIDAgMCAxLTEuNi44QTEzIDEzIDAgMCAwIDExIDE0SDVhMiAyIDAgMCAxLTItMlY4YTIgMiAwIDAgMSAyLTJ6In1dLFsicGF0aCIse2Q6Ik02IDE0YTEyIDEyIDAgMCAwIDIuNCA3LjIgMiAyIDAgMCAwIDMuMi0yLjRBOCA4IDAgMCAxIDEwIDE0In1dLFsicGF0aCIse2Q6Ik04IDZ2OCJ9XV19KTt2YXIgSE8sTkJlPWcoKCk9PntITz1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifV0sWyJsaW5lIix7eDE6IjgiLHgyOiIxNiIseTE6IjE1Iix5MjoiMTUifV0sWyJsaW5lIix7eDE6IjkiLHgyOiI5LjAxIix5MToiOSIseTI6IjkifV0sWyJsaW5lIix7eDE6IjE1Iix4MjoiMTUuMDEiLHkxOiI5Iix5MjoiOSJ9XV19KTt2YXIgcU8sUkJlPWcoKCk9PntxTz1bWyJwYXRoIix7ZDoiTTEyIDEydi0yIn1dLFsicGF0aCIse2Q6Ik0xMiAxOHYtMiJ9XSxbInBhdGgiLHtkOiJNMTYgMTJ2LTIifV0sWyJwYXRoIix7ZDoiTTE2IDE4di0yIn1dLFsicGF0aCIse2Q6Ik0yIDExaDEuNSJ9XSxbInBhdGgiLHtkOiJNMjAgMTh2LTIifV0sWyJwYXRoIix7ZDoiTTIwLjUgMTFIMjIifV0sWyJwYXRoIix7ZDoiTTQgMTh2LTIifV0sWyJwYXRoIix7ZDoiTTggMTJ2LTIifV0sWyJwYXRoIix7ZDoiTTggMTh2LTIifV0sWyJyZWN0Iix7eDoiMiIseToiNiIsd2lkdGg6IjIwIixoZWlnaHQ6IjEwIixyeDoiMiJ9XV19KTt2YXIgak8sT0JlPWcoKCk9PntqTz1bWyJwYXRoIix7ZDoiTTQgNWgxNiJ9XSxbInBhdGgiLHtkOiJNNCAxMmgxNiJ9XSxbInBhdGgiLHtkOiJNNCAxOWgxNiJ9XV19KTt2YXIgVk8sRkJlPWcoKCk9PntWTz1bWyJwYXRoIix7ZDoibTggNiA0LTQgNCA0In1dLFsicGF0aCIse2Q6Ik0xMiAydjEwLjNhNCA0IDAgMCAxLTEuMTcyIDIuODcyTDQgMjIifV0sWyJwYXRoIix7ZDoibTIwIDIyLTUtNSJ9XV19KTt2YXIgVU8sQkJlPWcoKCk9PntVTz1bWyJwYXRoIix7ZDoiTTIuOTkyIDE2LjM0MmEyIDIgMCAwIDEgLjA5NCAxLjE2N2wtMS4wNjUgMy4yOWExIDEgMCAwIDAgMS4yMzYgMS4xNjhsMy40MTMtLjk5OGEyIDIgMCAwIDEgMS4wOTkuMDkyIDEwIDEwIDAgMSAwLTQuNzc3LTQuNzE5In1dLFsicGF0aCIse2Q6Im05IDEyIDIgMiA0LTQifV1dfSk7dmFyIFdPLEhCZT1nKCgpPT57V089W1sicGF0aCIse2Q6Im0xMCA5LTMgMyAzIDMifV0sWyJwYXRoIix7ZDoibTE0IDE1IDMtMy0zLTMifV0sWyJwYXRoIix7ZDoiTTIuOTkyIDE2LjM0MmEyIDIgMCAwIDEgLjA5NCAxLjE2N2wtMS4wNjUgMy4yOWExIDEgMCAwIDAgMS4yMzYgMS4xNjhsMy40MTMtLjk5OGEyIDIgMCAwIDEgMS4wOTkuMDkyIDEwIDEwIDAgMSAwLTQuNzc3LTQuNzE5In1dXX0pO3ZhciBHTyxxQmU9ZygoKT0+e0dPPVtbInBhdGgiLHtkOiJNMTAuMSAyLjE4MmExMCAxMCAwIDAgMSAzLjggMCJ9XSxbInBhdGgiLHtkOiJNMTMuOSAyMS44MThhMTAgMTAgMCAwIDEtMy44IDAifV0sWyJwYXRoIix7ZDoiTTE3LjYwOSAzLjcyYTEwIDEwIDAgMCAxIDIuNjkgMi43In1dLFsicGF0aCIse2Q6Ik0yLjE4MiAxMy45YTEwIDEwIDAgMCAxIDAtMy44In1dLFsicGF0aCIse2Q6Ik0yMC4yOCAxNy42MWExMCAxMCAwIDAgMS0yLjcgMi42OSJ9XSxbInBhdGgiLHtkOiJNMjEuODE4IDEwLjFhMTAgMTAgMCAwIDEgMCAzLjgifV0sWyJwYXRoIix7ZDoiTTMuNzIxIDYuMzkxYTEwIDEwIDAgMCAxIDIuNy0yLjY5In1dLFsicGF0aCIse2Q6Im02LjE2MyAyMS4xMTctMi45MDYuODVhMSAxIDAgMCAxLTEuMjM2LTEuMTY5bC45NjUtMi45OCJ9XV19KTt2YXIgS08sakJlPWcoKCk9PntLTz1bWyJwYXRoIix7ZDoiTTIuOTkyIDE2LjM0MmEyIDIgMCAwIDEgLjA5NCAxLjE2N2wtMS4wNjUgMy4yOWExIDEgMCAwIDAgMS4yMzYgMS4xNjhsMy40MTMtLjk5OGEyIDIgMCAwIDEgMS4wOTkuMDkyIDEwIDEwIDAgMSAwLTQuNzc3LTQuNzE5In1dLFsicGF0aCIse2Q6Ik03LjgyOCAxMy4wN0EzIDMgMCAwIDEgMTIgOC43NjRhMyAzIDAgMCAxIDUuMDA0IDIuMjI0IDMgMyAwIDAgMS0uODMyIDIuMDgzbC0zLjQ0NyAzLjYyYTEgMSAwIDAgMS0xLjQ1LS4wMDF6In1dXX0pO3ZhciBZTyxWQmU9ZygoKT0+e1lPPVtbInBhdGgiLHtkOiJNMi45OTIgMTYuMzQyYTIgMiAwIDAgMSAuMDk0IDEuMTY3bC0xLjA2NSAzLjI5YTEgMSAwIDAgMCAxLjIzNiAxLjE2OGwzLjQxMy0uOTk4YTIgMiAwIDAgMSAxLjA5OS4wOTIgMTAgMTAgMCAxIDAtNC43NzctNC43MTkifV0sWyJwYXRoIix7ZDoiTTggMTJoLjAxIn1dLFsicGF0aCIse2Q6Ik0xMiAxMmguMDEifV0sWyJwYXRoIix7ZDoiTTE2IDEyaC4wMSJ9XV19KTt2YXIgWk8sVUJlPWcoKCk9PntaTz1bWyJwYXRoIix7ZDoibTIgMiAyMCAyMCJ9XSxbInBhdGgiLHtkOiJNNC45MyA0LjkyOWExMCAxMCAwIDAgMC0xLjkzOCAxMS40MTIgMiAyIDAgMCAxIC4wOTQgMS4xNjdsLTEuMDY1IDMuMjlhMSAxIDAgMCAwIDEuMjM2IDEuMTY4bDMuNDEzLS45OThhMiAyIDAgMCAxIDEuMDk5LjA5MiAxMCAxMCAwIDAgMCAxMS4zMDItMS45ODkifV0sWyJwYXRoIix7ZDoiTTguMzUgMi42OUExMCAxMCAwIDAgMSAyMS4zIDE1LjY1In1dXX0pO3ZhciBYTyxXQmU9ZygoKT0+e1hPPVtbInBhdGgiLHtkOiJNMi45OTIgMTYuMzQyYTIgMiAwIDAgMSAuMDk0IDEuMTY3bC0xLjA2NSAzLjI5YTEgMSAwIDAgMCAxLjIzNiAxLjE2OGwzLjQxMy0uOTk4YTIgMiAwIDAgMSAxLjA5OS4wOTIgMTAgMTAgMCAxIDAtNC43NzctNC43MTkifV0sWyJwYXRoIix7ZDoiTTggMTJoOCJ9XSxbInBhdGgiLHtkOiJNMTIgOHY4In1dXX0pO3ZhciBENixHQmU9ZygoKT0+e0Q2PVtbInBhdGgiLHtkOiJNMi45OTIgMTYuMzQyYTIgMiAwIDAgMSAuMDk0IDEuMTY3bC0xLjA2NSAzLjI5YTEgMSAwIDAgMCAxLjIzNiAxLjE2OGwzLjQxMy0uOTk4YTIgMiAwIDAgMSAxLjA5OS4wOTIgMTAgMTAgMCAxIDAtNC43NzctNC43MTkifV0sWyJwYXRoIix7ZDoiTTkuMDkgOWEzIDMgMCAwIDEgNS44MyAxYzAgMi0zIDMtMyAzIn1dLFsicGF0aCIse2Q6Ik0xMiAxN2guMDEifV1dfSk7dmFyIFFPLEtCZT1nKCgpPT57UU89W1sicGF0aCIse2Q6Ik0yLjk5MiAxNi4zNDJhMiAyIDAgMCAxIC4wOTQgMS4xNjdsLTEuMDY1IDMuMjlhMSAxIDAgMCAwIDEuMjM2IDEuMTY4bDMuNDEzLS45OThhMiAyIDAgMCAxIDEuMDk5LjA5MiAxMCAxMCAwIDEgMC00Ljc3Ny00LjcxOSJ9XSxbInBhdGgiLHtkOiJtMTAgMTUtMy0zIDMtMyJ9XSxbInBhdGgiLHtkOiJNNyAxMmg4YTIgMiAwIDAgMSAyIDJ2MSJ9XV19KTt2YXIgSk8sWUJlPWcoKCk9PntKTz1bWyJwYXRoIix7ZDoiTTIuOTkyIDE2LjM0MmEyIDIgMCAwIDEgLjA5NCAxLjE2N2wtMS4wNjUgMy4yOWExIDEgMCAwIDAgMS4yMzYgMS4xNjhsMy40MTMtLjk5OGEyIDIgMCAwIDEgMS4wOTkuMDkyIDEwIDEwIDAgMSAwLTQuNzc3LTQuNzE5In1dLFsicGF0aCIse2Q6Ik0xMiA4djQifV0sWyJwYXRoIix7ZDoiTTEyIDE2aC4wMSJ9XV19KTt2YXIgZUYsWkJlPWcoKCk9PntlRj1bWyJwYXRoIix7ZDoiTTIuOTkyIDE2LjM0MmEyIDIgMCAwIDEgLjA5NCAxLjE2N2wtMS4wNjUgMy4yOWExIDEgMCAwIDAgMS4yMzYgMS4xNjhsMy40MTMtLjk5OGEyIDIgMCAwIDEgMS4wOTkuMDkyIDEwIDEwIDAgMSAwLTQuNzc3LTQuNzE5In1dLFsicGF0aCIse2Q6Im0xNSA5LTYgNiJ9XSxbInBhdGgiLHtkOiJtOSA5IDYgNiJ9XV19KTt2YXIgdEYsWEJlPWcoKCk9Pnt0Rj1bWyJwYXRoIix7ZDoiTTIuOTkyIDE2LjM0MmEyIDIgMCAwIDEgLjA5NCAxLjE2N2wtMS4wNjUgMy4yOWExIDEgMCAwIDAgMS4yMzYgMS4xNjhsMy40MTMtLjk5OGEyIDIgMCAwIDEgMS4wOTkuMDkyIDEwIDEwIDAgMSAwLTQuNzc3LTQuNzE5In1dXX0pO3ZhciBhRixRQmU9ZygoKT0+e2FGPVtbInBhdGgiLHtkOiJNMjIgMTdhMiAyIDAgMCAxLTIgMkg2LjgyOGEyIDIgMCAwIDAtMS40MTQuNTg2bC0yLjIwMiAyLjIwMkEuNzEuNzEgMCAwIDEgMiAyMS4yODZWNWEyIDIgMCAwIDEgMi0yaDE2YTIgMiAwIDAgMSAyIDJ6In1dLFsicGF0aCIse2Q6Im0xMCA4LTMgMyAzIDMifV0sWyJwYXRoIix7ZDoibTE0IDE0IDMtMy0zLTMifV1dfSk7dmFyIHNGLEpCZT1nKCgpPT57c0Y9W1sicGF0aCIse2Q6Ik0yMiAxN2EyIDIgMCAwIDEtMiAySDYuODI4YTIgMiAwIDAgMC0xLjQxNC41ODZsLTIuMjAyIDIuMjAyQS43LjcgMCAwIDEgMiAyMS4yODZWNWEyIDIgMCAwIDEgMi0yaDE2YTIgMiAwIDAgMSAyIDJ6In1dLFsicGF0aCIse2Q6Im05IDExIDIgMiA0LTQifV1dfSk7dmFyIGlGLGVIZT1nKCgpPT57aUY9W1sicGF0aCIse2Q6Ik0xNCAzaDIifV0sWyJwYXRoIix7ZDoiTTE2IDE5aC0yIn1dLFsicGF0aCIse2Q6Ik0yIDEydi0yIn1dLFsicGF0aCIse2Q6Ik0yIDE2djUuMjg2YS43MS43MSAwIDAgMCAxLjIxMi41MDJsMS4xNDktMS4xNDkifV0sWyJwYXRoIix7ZDoiTTIwIDE5YTIgMiAwIDAgMCAyLTJ2LTEifV0sWyJwYXRoIix7ZDoiTTIyIDEwdjIifV0sWyJwYXRoIix7ZDoiTTIyIDZWNWEyIDIgMCAwIDAtMi0yIn1dLFsicGF0aCIse2Q6Ik00IDNhMiAyIDAgMCAwLTIgMnYxIn1dLFsicGF0aCIse2Q6Ik04IDE5aDIifV0sWyJwYXRoIix7ZDoiTTggM2gyIn1dXX0pO3ZhciByRix0SGU9ZygoKT0+e3JGPVtbInBhdGgiLHtkOiJNMjIgMTdhMiAyIDAgMCAxLTIgMkg2LjgyOGEyIDIgMCAwIDAtMS40MTQuNTg2bC0yLjIwMiAyLjIwMkEuNzEuNzEgMCAwIDEgMiAyMS4yODZWNWEyIDIgMCAwIDEgMi0yaDE2YTIgMiAwIDAgMSAyIDJ6In1dLFsicGF0aCIse2Q6Ik0xMCAxNWg0In1dLFsicGF0aCIse2Q6Ik0xMCA5aDQifV0sWyJwYXRoIix7ZDoiTTEyIDd2NCJ9XV19KTt2YXIgb0YsYUhlPWcoKCk9PntvRj1bWyJwYXRoIix7ZDoiTTEyLjcgM0g0YTIgMiAwIDAgMC0yIDJ2MTYuMjg2YS43MS43MSAwIDAgMCAxLjIxMi41MDJsMi4yMDItMi4yMDJBMiAyIDAgMCAxIDYuODI4IDE5SDIwYTIgMiAwIDAgMCAyLTJ2LTQuNyJ9XSxbImNpcmNsZSIse2N4OiIxOSIsY3k6IjYiLHI6IjMifV1dfSk7dmFyIG5GLHNIZT1nKCgpPT57bkY9W1sicGF0aCIse2Q6Ik0yMiAxN2EyIDIgMCAwIDEtMiAySDYuODI4YTIgMiAwIDAgMC0xLjQxNC41ODZsLTIuMjAyIDIuMjAyQS43MS43MSAwIDAgMSAyIDIxLjI4NlY1YTIgMiAwIDAgMSAyLTJoMTZhMiAyIDAgMCAxIDIgMnoifV0sWyJwYXRoIix7ZDoiTTcuNSA5LjVjMCAuNjg3LjI2NSAxLjM4My42OTcgMS44NDRsMy4wMDkgMy4yNjRhMS4xNCAxLjE0IDAgMCAwIC40MDcuMzE0IDEgMSAwIDAgMCAuNzgzLS4wMDQgMS4xNCAxLjE0IDAgMCAwIC4zOTgtLjMxbDMuMDA4LTMuMjY0QTIuNzcgMi43NyAwIDAgMCAxNi41IDkuNSAyLjUgMi41IDAgMCAwIDEyIDhhMi41IDIuNSAwIDAgMC00LjUgMS41In1dXX0pO3ZhciBsRixpSGU9ZygoKT0+e2xGPVtbInBhdGgiLHtkOiJNMjIgOC41VjVhMiAyIDAgMCAwLTItMkg0YTIgMiAwIDAgMC0yIDJ2MTYuMjg2YS43MS43MSAwIDAgMCAxLjIxMi41MDJsMi4yMDItMi4yMDJBMiAyIDAgMCAxIDYuODI4IDE5SDEwIn1dLFsicGF0aCIse2Q6Ik0yMCAxNXYtMmEyIDIgMCAwIDAtNCAwdjIifV0sWyJyZWN0Iix7eDoiMTQiLHk6IjE1Iix3aWR0aDoiOCIsaGVpZ2h0OiI1IixyeDoiMSJ9XV19KTt2YXIgY0YsckhlPWcoKCk9PntjRj1bWyJwYXRoIix7ZDoiTTIyIDE3YTIgMiAwIDAgMS0yIDJINi44MjhhMiAyIDAgMCAwLTEuNDE0LjU4NmwtMi4yMDIgMi4yMDJBLjcxLjcxIDAgMCAxIDIgMjEuMjg2VjVhMiAyIDAgMCAxIDItMmgxNmEyIDIgMCAwIDEgMiAyeiJ9XSxbInBhdGgiLHtkOiJNMTIgMTFoLjAxIn1dLFsicGF0aCIse2Q6Ik0xNiAxMWguMDEifV0sWyJwYXRoIix7ZDoiTTggMTFoLjAxIn1dXX0pO3ZhciBkRixvSGU9ZygoKT0+e2RGPVtbInBhdGgiLHtkOiJNMTkgMTlINi44MjhhMiAyIDAgMCAwLTEuNDE0LjU4NmwtMi4yMDIgMi4yMDJBLjcuNyAwIDAgMSAyIDIxLjI4NlY1YTIgMiAwIDAgMSAxLjE4NC0xLjgyNiJ9XSxbInBhdGgiLHtkOiJtMiAyIDIwIDIwIn1dLFsicGF0aCIse2Q6Ik04LjY1NiAzSDIwYTIgMiAwIDAgMSAyIDJ2MTEuMzQ0In1dXX0pO3ZhciB1RixuSGU9ZygoKT0+e3VGPVtbInBhdGgiLHtkOiJNMjIgMTdhMiAyIDAgMCAxLTIgMkg2LjgyOGEyIDIgMCAwIDAtMS40MTQuNTg2bC0yLjIwMiAyLjIwMkEuNzEuNzEgMCAwIDEgMiAyMS4yODZWNWEyIDIgMCAwIDEgMi0yaDE2YTIgMiAwIDAgMSAyIDJ6In1dLFsicGF0aCIse2Q6Ik0xMiA4djYifV0sWyJwYXRoIix7ZDoiTTkgMTFoNiJ9XV19KTt2YXIgcEYsbEhlPWcoKCk9PntwRj1bWyJwYXRoIix7ZDoiTTE0IDE0YTIgMiAwIDAgMCAyLTJWOGgtMiJ9XSxbInBhdGgiLHtkOiJNMjIgMTdhMiAyIDAgMCAxLTIgMkg2LjgyOGEyIDIgMCAwIDAtMS40MTQuNTg2bC0yLjIwMiAyLjIwMkEuNzEuNzEgMCAwIDEgMiAyMS4yODZWNWEyIDIgMCAwIDEgMi0yaDE2YTIgMiAwIDAgMSAyIDJ6In1dLFsicGF0aCIse2Q6Ik04IDE0YTIgMiAwIDAgMCAyLTJWOEg4In1dXX0pO3ZhciBoRixjSGU9ZygoKT0+e2hGPVtbInBhdGgiLHtkOiJNMjIgMTdhMiAyIDAgMCAxLTIgMkg2LjgyOGEyIDIgMCAwIDAtMS40MTQuNTg2bC0yLjIwMiAyLjIwMkEuNzEuNzEgMCAwIDEgMiAyMS4yODZWNWEyIDIgMCAwIDEgMi0yaDE2YTIgMiAwIDAgMSAyIDJ6In1dLFsicGF0aCIse2Q6Im0xMCA4LTMgMyAzIDMifV0sWyJwYXRoIix7ZDoiTTE3IDE0di0xYTIgMiAwIDAgMC0yLTJINyJ9XV19KTt2YXIgZkYsZEhlPWcoKCk9PntmRj1bWyJwYXRoIix7ZDoiTTEyIDNINGEyIDIgMCAwIDAtMiAydjE2LjI4NmEuNzEuNzEgMCAwIDAgMS4yMTIuNTAybDIuMjAyLTIuMjAyQTIgMiAwIDAgMSA2LjgyOCAxOUgyMGEyIDIgMCAwIDAgMi0ydi00In1dLFsicGF0aCIse2Q6Ik0xNiAzaDZ2NiJ9XSxbInBhdGgiLHtkOiJtMTYgOSA2LTYifV1dfSk7dmFyIG1GLHVIZT1nKCgpPT57bUY9W1sicGF0aCIse2Q6Ik0yMiAxN2EyIDIgMCAwIDEtMiAySDYuODI4YTIgMiAwIDAgMC0xLjQxNC41ODZsLTIuMjAyIDIuMjAyQS43MS43MSAwIDAgMSAyIDIxLjI4NlY1YTIgMiAwIDAgMSAyLTJoMTZhMiAyIDAgMCAxIDIgMnoifV0sWyJwYXRoIix7ZDoiTTcgMTFoMTAifV0sWyJwYXRoIix7ZDoiTTcgMTVoNiJ9XSxbInBhdGgiLHtkOiJNNyA3aDgifV1dfSk7dmFyIGdGLHBIZT1nKCgpPT57Z0Y9W1sicGF0aCIse2Q6Ik0yMiAxN2EyIDIgMCAwIDEtMiAySDYuODI4YTIgMiAwIDAgMC0xLjQxNC41ODZsLTIuMjAyIDIuMjAyQS43MS43MSAwIDAgMSAyIDIxLjI4NlY1YTIgMiAwIDAgMSAyLTJoMTZhMiAyIDAgMCAxIDIgMnoifV0sWyJwYXRoIix7ZDoiTTEyIDE1aC4wMSJ9XSxbInBhdGgiLHtkOiJNMTIgN3Y0In1dXX0pO3ZhciBiRixoSGU9ZygoKT0+e2JGPVtbInBhdGgiLHtkOiJNMjIgMTdhMiAyIDAgMCAxLTIgMkg2LjgyOGEyIDIgMCAwIDAtMS40MTQuNTg2bC0yLjIwMiAyLjIwMkEuNzEuNzEgMCAwIDEgMiAyMS4yODZWNWEyIDIgMCAwIDEgMi0yaDE2YTIgMiAwIDAgMSAyIDJ6In1dLFsicGF0aCIse2Q6Im0xNC41IDguNS01IDUifV0sWyJwYXRoIix7ZDoibTkuNSA4LjUgNSA1In1dXX0pO3ZhciB2RixmSGU9ZygoKT0+e3ZGPVtbInBhdGgiLHtkOiJNMjIgMTdhMiAyIDAgMCAxLTIgMkg2LjgyOGEyIDIgMCAwIDAtMS40MTQuNTg2bC0yLjIwMiAyLjIwMkEuNzEuNzEgMCAwIDEgMiAyMS4yODZWNWEyIDIgMCAwIDEgMi0yaDE2YTIgMiAwIDAgMSAyIDJ6In1dXX0pO3ZhciB4RixtSGU9ZygoKT0+e3hGPVtbInBhdGgiLHtkOiJNMTYgMTBhMiAyIDAgMCAxLTIgMkg2LjgyOGEyIDIgMCAwIDAtMS40MTQuNTg2bC0yLjIwMiAyLjIwMkEuNzEuNzEgMCAwIDEgMiAxNC4yODZWNGEyIDIgMCAwIDEgMi0yaDEwYTIgMiAwIDAgMSAyIDJ6In1dLFsicGF0aCIse2Q6Ik0yMCA5YTIgMiAwIDAgMSAyIDJ2MTAuMjg2YS43MS43MSAwIDAgMS0xLjIxMi41MDJsLTIuMjAyLTIuMjAyQTIgMiAwIDAgMCAxNy4xNzIgMTlIMTBhMiAyIDAgMCAxLTItMnYtMSJ9XV19KTt2YXIgeUYsZ0hlPWcoKCk9Pnt5Rj1bWyJwYXRoIix7ZDoiTTEyIDExLjRWOS4xIn1dLFsicGF0aCIse2Q6Im0xMiAxNyA2LjU5LTYuNTkifV0sWyJwYXRoIix7ZDoibTE1LjA1IDUuNy0uMjE4LS42OTFhMyAzIDAgMCAwLTUuNjYzIDBMNC40MTggMTkuNjk1QTEgMSAwIDAgMCA1LjM3IDIxaDEzLjI1M2ExIDEgMCAwIDAgLjk1MS0xLjMxTDE4LjQ1IDE2LjIifV0sWyJjaXJjbGUiLHtjeDoiMjAiLGN5OiI5IixyOiIyIn1dXX0pO3ZhciB3RixiSGU9ZygoKT0+e3dGPVtbInBhdGgiLHtkOiJNMTIgMTl2MyJ9XSxbInBhdGgiLHtkOiJNMTUgOS4zNFY1YTMgMyAwIDAgMC01LjY4LTEuMzMifV0sWyJwYXRoIix7ZDoiTTE2Ljk1IDE2Ljk1QTcgNyAwIDAgMSA1IDEydi0yIn1dLFsicGF0aCIse2Q6Ik0xOC44OSAxMy4yM0E3IDcgMCAwIDAgMTkgMTJ2LTIifV0sWyJwYXRoIix7ZDoibTIgMiAyMCAyMCJ9XSxbInBhdGgiLHtkOiJNOSA5djNhMyAzIDAgMCAwIDUuMTIgMi4xMiJ9XV19KTt2YXIgTDYsdkhlPWcoKCk9PntMNj1bWyJwYXRoIix7ZDoibTExIDcuNjAxLTUuOTk0IDguMTlhMSAxIDAgMCAwIC4xIDEuMjk4bC44MTcuODE4YTEgMSAwIDAgMCAxLjMxNC4wODdMMTUuMDkgMTIifV0sWyJwYXRoIix7ZDoiTTE2LjUgMjEuMTc0QzE1LjUgMjAuNSAxNC4zNzIgMjAgMTMgMjBjLTIuMDU4IDAtMy45MjggMi4zNTYtNiAyLTIuMDcyLS4zNTYtMi43NzUtMy4zNjktMS41LTQuNSJ9XSxbImNpcmNsZSIse2N4OiIxNiIsY3k6IjciLHI6IjUifV1dfSk7dmFyIGtGLHhIZT1nKCgpPT57a0Y9W1sicGF0aCIse2Q6Ik0xMiAxOXYzIn1dLFsicGF0aCIse2Q6Ik0xOSAxMHYyYTcgNyAwIDAgMS0xNCAwdi0yIn1dLFsicmVjdCIse3g6IjkiLHk6IjIiLHdpZHRoOiI2IixoZWlnaHQ6IjEzIixyeDoiMyJ9XV19KTt2YXIgU0YseUhlPWcoKCk9PntTRj1bWyJwYXRoIix7ZDoiTTEwIDEyaDQifV0sWyJwYXRoIix7ZDoiTTEwIDE3aDQifV0sWyJwYXRoIix7ZDoiTTEwIDdoNCJ9XSxbInBhdGgiLHtkOiJNMTggMTJoMiJ9XSxbInBhdGgiLHtkOiJNMTggMThoMiJ9XSxbInBhdGgiLHtkOiJNMTggNmgyIn1dLFsicGF0aCIse2Q6Ik00IDEyaDIifV0sWyJwYXRoIix7ZDoiTTQgMThoMiJ9XSxbInBhdGgiLHtkOiJNNCA2aDIifV0sWyJyZWN0Iix7eDoiNiIseToiMiIsd2lkdGg6IjEyIixoZWlnaHQ6IjIwIixyeDoiMiJ9XV19KTt2YXIgX0Ysd0hlPWcoKCk9PntfRj1bWyJwYXRoIix7ZDoiTTYgMThoOCJ9XSxbInBhdGgiLHtkOiJNMyAyMmgxOCJ9XSxbInBhdGgiLHtkOiJNMTQgMjJhNyA3IDAgMSAwIDAtMTRoLTEifV0sWyJwYXRoIix7ZDoiTTkgMTRoMiJ9XSxbInBhdGgiLHtkOiJNOSAxMmEyIDIgMCAwIDEtMi0yVjZoNnY0YTIgMiAwIDAgMS0yIDJaIn1dLFsicGF0aCIse2Q6Ik0xMiA2VjNhMSAxIDAgMCAwLTEtMUg5YTEgMSAwIDAgMC0xIDF2MyJ9XV19KTt2YXIgTUYsa0hlPWcoKCk9PntNRj1bWyJyZWN0Iix7d2lkdGg6IjIwIixoZWlnaHQ6IjE1Iix4OiIyIix5OiI0IixyeDoiMiJ9XSxbInJlY3QiLHt3aWR0aDoiOCIsaGVpZ2h0OiI3Iix4OiI2Iix5OiI4IixyeDoiMSJ9XSxbInBhdGgiLHtkOiJNMTggOHY3In1dLFsicGF0aCIse2Q6Ik02IDE5djIifV0sWyJwYXRoIix7ZDoiTTE4IDE5djIifV1dfSk7dmFyIHpGLFNIZT1nKCgpPT57ekY9W1sicGF0aCIse2Q6Ik0xMiAxM3Y4In1dLFsicGF0aCIse2Q6Ik0xMiAzdjMifV0sWyJwYXRoIix7ZDoiTTE4LjE3MiA2YTIgMiAwIDAgMSAxLjQxNC41ODZsMi4wNiAyLjA2YTEuMjA3IDEuMjA3IDAgMCAxIDAgMS43MDhsLTIuMDYgMi4wNmEyIDIgMCAwIDEtMS40MTQuNTg2SDRhMSAxIDAgMCAxLTEtMVY3YTEgMSAwIDAgMSAxLTF6In1dXX0pO3ZhciBDRixfSGU9ZygoKT0+e0NGPVtbInBhdGgiLHtkOiJNOCAyaDgifV0sWyJwYXRoIix7ZDoiTTkgMnYxLjM0M00xNSAydjIuNzg5YTQgNCAwIDAgMCAuNjcyIDIuMjE5bC42NTYuOTg0YTQgNCAwIDAgMSAuNjcyIDIuMjJ2MS4xMzFNNy44IDcuOGwtLjEyOC4xOTJBNCA0IDAgMCAwIDcgMTAuMjEyVjIwYTIgMiAwIDAgMCAyIDJoNmEyIDIgMCAwIDAgMi0ydi0zIn1dLFsicGF0aCIse2Q6Ik03IDE1YTYuNDcgNi40NyAwIDAgMSA1IDAgNi40NzIgNi40NzIgMCAwIDAgMy40MzUuNDM1In1dLFsibGluZSIse3gxOiIyIix4MjoiMjIiLHkxOiIyIix5MjoiMjIifV1dfSk7dmFyIFRGLE1IZT1nKCgpPT57VEY9W1sicGF0aCIse2Q6Ik04IDJoOCJ9XSxbInBhdGgiLHtkOiJNOSAydjIuNzg5YTQgNCAwIDAgMS0uNjcyIDIuMjE5bC0uNjU2Ljk4NEE0IDQgMCAwIDAgNyAxMC4yMTJWMjBhMiAyIDAgMCAwIDIgMmg2YTIgMiAwIDAgMCAyLTJ2LTkuNzg5YTQgNCAwIDAgMC0uNjcyLTIuMjE5bC0uNjU2LS45ODRBNCA0IDAgMCAxIDE1IDQuNzg4VjIifV0sWyJwYXRoIix7ZDoiTTcgMTVhNi40NzIgNi40NzIgMCAwIDEgNSAwIDYuNDcgNi40NyAwIDAgMCA1IDAifV1dfSk7dmFyICRGLHpIZT1nKCgpPT57JEY9W1sicGF0aCIse2Q6Im0xNCAxMCA3LTcifV0sWyJwYXRoIix7ZDoiTTIwIDEwaC02VjQifV0sWyJwYXRoIix7ZDoibTMgMjEgNy03In1dLFsicGF0aCIse2Q6Ik00IDE0aDZ2NiJ9XV19KTt2YXIgREYsQ0hlPWcoKCk9PntERj1bWyJwYXRoIix7ZDoiTTggM3YzYTIgMiAwIDAgMS0yIDJIMyJ9XSxbInBhdGgiLHtkOiJNMjEgOGgtM2EyIDIgMCAwIDEtMi0yVjMifV0sWyJwYXRoIix7ZDoiTTMgMTZoM2EyIDIgMCAwIDEgMiAydjMifV0sWyJwYXRoIix7ZDoiTTE2IDIxdi0zYTIgMiAwIDAgMSAyLTJoMyJ9XV19KTt2YXIgTEYsVEhlPWcoKCk9PntMRj1bWyJwYXRoIix7ZDoiTTUgMTJoMTQifV1dfSk7dmFyIEVGLCRIZT1nKCgpPT57RUY9W1sicGF0aCIse2Q6Ik0xMSA2IDggOSJ9XSxbInBhdGgiLHtkOiJtMTYgNy04IDgifV0sWyJyZWN0Iix7eDoiNCIseToiMiIsd2lkdGg6IjE2IixoZWlnaHQ6IjIwIixyeDoiMiJ9XV19KTt2YXIgUEYsREhlPWcoKCk9PntQRj1bWyJwYXRoIix7ZDoiTTEwIDYuNiA4LjYgOCJ9XSxbInBhdGgiLHtkOiJNMTIgMTh2NCJ9XSxbInBhdGgiLHtkOiJNMTUgNy41IDkuNSAxMyJ9XSxbInBhdGgiLHtkOiJNNyAyMmgxMCJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEwIixyOiI4In1dXX0pO3ZhciBJRixMSGU9ZygoKT0+e0lGPVtbInBhdGgiLHtkOiJtOSAxMCAyIDIgNC00In1dLFsicmVjdCIse3dpZHRoOiIyMCIsaGVpZ2h0OiIxNCIseDoiMiIseToiMyIscng6IjIifV0sWyJwYXRoIix7ZDoiTTEyIDE3djQifV0sWyJwYXRoIix7ZDoiTTggMjFoOCJ9XV19KTt2YXIgQUYsRUhlPWcoKCk9PntBRj1bWyJwYXRoIix7ZDoiTTExIDEzYTMgMyAwIDEgMSAyLjgzLTRIMTRhMiAyIDAgMCAxIDAgNHoifV0sWyJwYXRoIix7ZDoiTTEyIDE3djQifV0sWyJwYXRoIix7ZDoiTTggMjFoOCJ9XSxbInJlY3QiLHt4OiIyIix5OiIzIix3aWR0aDoiMjAiLGhlaWdodDoiMTQiLHJ4OiIyIn1dXX0pO3ZhciBORixQSGU9ZygoKT0+e05GPVtbInBhdGgiLHtkOiJNMTIgMTd2NCJ9XSxbInBhdGgiLHtkOiJtMTQuMzA1IDcuNTMuOTIzLS4zODIifV0sWyJwYXRoIix7ZDoibTE1LjIyOCA0Ljg1Mi0uOTIzLS4zODMifV0sWyJwYXRoIix7ZDoibTE2Ljg1MiAzLjIyOC0uMzgzLS45MjQifV0sWyJwYXRoIix7ZDoibTE2Ljg1MiA4Ljc3Mi0uMzgzLjkyMyJ9XSxbInBhdGgiLHtkOiJtMTkuMTQ4IDMuMjI4LjM4My0uOTI0In1dLFsicGF0aCIse2Q6Im0xOS41MyA5LjY5Ni0uMzgyLS45MjQifV0sWyJwYXRoIix7ZDoibTIwLjc3MiA0Ljg1Mi45MjQtLjM4MyJ9XSxbInBhdGgiLHtkOiJtMjAuNzcyIDcuMTQ4LjkyNC4zODMifV0sWyJwYXRoIix7ZDoiTTIyIDEzdjJhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDcifV0sWyJwYXRoIix7ZDoiTTggMjFoOCJ9XSxbImNpcmNsZSIse2N4OiIxOCIsY3k6IjYiLHI6IjMifV1dfSk7dmFyIFJGLElIZT1nKCgpPT57UkY9W1sicGF0aCIse2Q6Ik0xMiAxN3Y0In1dLFsicGF0aCIse2Q6Ik0yMiAxMi4zMDdWMTVhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDguNjkzIn1dLFsicGF0aCIse2Q6Ik04IDIxaDgifV0sWyJjaXJjbGUiLHtjeDoiMTkiLGN5OiI2IixyOiIzIn1dXX0pO3ZhciBPRixBSGU9ZygoKT0+e09GPVtbInBhdGgiLHtkOiJNMTIgMTd2NCJ9XSxbInBhdGgiLHtkOiJNMTcgMTdINGEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDEuMTg0LTEuODI2In1dLFsicGF0aCIse2Q6Im0yIDIgMjAgMjAifV0sWyJwYXRoIix7ZDoiTTggMjFoOCJ9XSxbInBhdGgiLHtkOiJNOC42NTYgM0gyMGEyIDIgMCAwIDEgMiAydjEwYTIgMiAwIDAgMS0uMjkzIDEuMDQyIn1dXX0pO3ZhciBGRixOSGU9ZygoKT0+e0ZGPVtbInBhdGgiLHtkOiJNMTIgMTNWNyJ9XSxbInBhdGgiLHtkOiJtMTUgMTAtMyAzLTMtMyJ9XSxbInJlY3QiLHt3aWR0aDoiMjAiLGhlaWdodDoiMTQiLHg6IjIiLHk6IjMiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik0xMiAxN3Y0In1dLFsicGF0aCIse2Q6Ik04IDIxaDgifV1dfSk7dmFyIEJGLFJIZT1nKCgpPT57QkY9W1sicGF0aCIse2Q6Ik0xMCAxM1Y3In1dLFsicGF0aCIse2Q6Ik0xNCAxM1Y3In1dLFsicmVjdCIse3dpZHRoOiIyMCIsaGVpZ2h0OiIxNCIseDoiMiIseToiMyIscng6IjIifV0sWyJwYXRoIix7ZDoiTTEyIDE3djQifV0sWyJwYXRoIix7ZDoiTTggMjFoOCJ9XV19KTt2YXIgSEYsT0hlPWcoKCk9PntIRj1bWyJwYXRoIix7ZDoiTTE1LjAzMyA5LjQ0YS42NDcuNjQ3IDAgMCAxIDAgMS4xMmwtNC4wNjUgMi4zNTJhLjY0NS42NDUgMCAwIDEtLjk2OC0uNTZWNy42NDhhLjY0NS42NDUgMCAwIDEgLjk2Ny0uNTZ6In1dLFsicGF0aCIse2Q6Ik0xMiAxN3Y0In1dLFsicGF0aCIse2Q6Ik04IDIxaDgifV0sWyJyZWN0Iix7eDoiMiIseToiMyIsd2lkdGg6IjIwIixoZWlnaHQ6IjE0IixyeDoiMiJ9XV19KTt2YXIgcUYsRkhlPWcoKCk9PntxRj1bWyJwYXRoIix7ZDoiTTE4IDhWNmEyIDIgMCAwIDAtMi0ySDRhMiAyIDAgMCAwLTIgMnY3YTIgMiAwIDAgMCAyIDJoOCJ9XSxbInBhdGgiLHtkOiJNMTAgMTl2LTMuOTYgMy4xNSJ9XSxbInBhdGgiLHtkOiJNNyAxOWg1In1dLFsicmVjdCIse3dpZHRoOiI2IixoZWlnaHQ6IjEwIix4OiIxNiIseToiMTIiLHJ4OiIyIn1dXX0pO3ZhciBqRixCSGU9ZygoKT0+e2pGPVtbInBhdGgiLHtkOiJNNS41IDIwSDgifV0sWyJwYXRoIix7ZDoiTTE3IDloLjAxIn1dLFsicmVjdCIse3dpZHRoOiIxMCIsaGVpZ2h0OiIxNiIseDoiMTIiLHk6IjQiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik04IDZINGEyIDIgMCAwIDAtMiAydjZhMiAyIDAgMCAwIDIgMmg0In1dLFsiY2lyY2xlIix7Y3g6IjE3IixjeToiMTUiLHI6IjEifV1dfSk7dmFyIFZGLEhIZT1nKCgpPT57VkY9W1sicGF0aCIse2Q6Im05IDEwIDMtMyAzIDMifV0sWyJwYXRoIix7ZDoiTTEyIDEzVjcifV0sWyJyZWN0Iix7d2lkdGg6IjIwIixoZWlnaHQ6IjE0Iix4OiIyIix5OiIzIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNMTIgMTd2NCJ9XSxbInBhdGgiLHtkOiJNOCAyMWg4In1dXX0pO3ZhciBVRixxSGU9ZygoKT0+e1VGPVtbInBhdGgiLHtkOiJNMTIgMTd2NCJ9XSxbInBhdGgiLHtkOiJNOCAyMWg4In1dLFsicmVjdCIse3g6IjIiLHk6IjMiLHdpZHRoOiIyMCIsaGVpZ2h0OiIxNCIscng6IjIifV0sWyJyZWN0Iix7eDoiOSIseToiNyIsd2lkdGg6IjYiLGhlaWdodDoiNiIscng6IjEifV1dfSk7dmFyIFdGLGpIZT1nKCgpPT57V0Y9W1sicGF0aCIse2Q6Im0xNC41IDEyLjUtNS01In1dLFsicGF0aCIse2Q6Im05LjUgMTIuNSA1LTUifV0sWyJyZWN0Iix7d2lkdGg6IjIwIixoZWlnaHQ6IjE0Iix4OiIyIix5OiIzIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNMTIgMTd2NCJ9XSxbInBhdGgiLHtkOiJNOCAyMWg4In1dXX0pO3ZhciBHRixWSGU9ZygoKT0+e0dGPVtbInJlY3QiLHt3aWR0aDoiMjAiLGhlaWdodDoiMTQiLHg6IjIiLHk6IjMiLHJ4OiIyIn1dLFsibGluZSIse3gxOiI4Iix4MjoiMTYiLHkxOiIyMSIseTI6IjIxIn1dLFsibGluZSIse3gxOiIxMiIseDI6IjEyIix5MToiMTciLHkyOiIyMSJ9XV19KTt2YXIgS0YsVUhlPWcoKCk9PntLRj1bWyJwYXRoIix7ZDoiTTE4IDVoNCJ9XSxbInBhdGgiLHtkOiJNMjAgM3Y0In1dLFsicGF0aCIse2Q6Ik0yMC45ODUgMTIuNDg2YTkgOSAwIDEgMS05LjQ3My05LjQ3MmMuNDA1LS4wMjIuNjE3LjQ2LjQwMi44MDNhNiA2IDAgMCAwIDguMjY4IDguMjY4Yy4zNDQtLjIxNS44MjUtLjAwNC44MDMuNDAxIn1dXX0pO3ZhciBZRixXSGU9ZygoKT0+e1lGPVtbInBhdGgiLHtkOiJNMjAuOTg1IDEyLjQ4NmE5IDkgMCAxIDEtOS40NzMtOS40NzJjLjQwNS0uMDIyLjYxNy40Ni40MDIuODAzYTYgNiAwIDAgMCA4LjI2OCA4LjI2OGMuMzQ0LS4yMTUuODI1LS4wMDQuODAzLjQwMSJ9XV19KTt2YXIgWkYsR0hlPWcoKCk9PntaRj1bWyJwYXRoIix7ZDoibTE4IDE0LTEtMyJ9XSxbInBhdGgiLHtkOiJtMyA5IDYgMmEyIDIgMCAwIDEgMi0yaDJhMiAyIDAgMCAxIDEuOTkgMS44MSJ9XSxbInBhdGgiLHtkOiJNOCAxN2gzYTEgMSAwIDAgMCAxLTEgNiA2IDAgMCAxIDYtNiAxIDEgMCAwIDAgMS0xdi0uNzVBNSA1IDAgMCAwIDE3IDUifV0sWyJjaXJjbGUiLHtjeDoiMTkiLGN5OiIxNyIscjoiMyJ9XSxbImNpcmNsZSIse2N4OiI1IixjeToiMTciLHI6IjMifV1dfSk7dmFyIFhGLEtIZT1nKCgpPT57WEY9W1sicGF0aCIse2Q6Im04IDMgNCA4IDUtNSA1IDE1SDJMOCAzeiJ9XSxbInBhdGgiLHtkOiJNNC4xNCAxNS4wOGMyLjYyLTEuNTcgNS4yNC0xLjQzIDcuODYuNDIgMi43NCAxLjk0IDUuNDkgMiA4LjIzLjE5In1dXX0pO3ZhciBRRixZSGU9ZygoKT0+e1FGPVtbInBhdGgiLHtkOiJtOCAzIDQgOCA1LTUgNSAxNUgyTDggM3oifV1dfSk7dmFyIEpGLFpIZT1nKCgpPT57SkY9W1sicGF0aCIse2Q6Ik0xMiA3LjMxOFYxMCJ9XSxbInBhdGgiLHtkOiJNNSAxMHY1YTcgNyAwIDAgMCAxNCAwVjljMC0zLjUyNy0yLjYwOC02LjUxNS02LTcifV0sWyJjaXJjbGUiLHtjeDoiNyIsY3k6IjQiLHI6IjIifV1dfSk7dmFyIGVCLFhIZT1nKCgpPT57ZUI9W1sicGF0aCIse2Q6Ik0xMiA2di4zNDMifV0sWyJwYXRoIix7ZDoiTTE4LjIxOCAxOC4yMThBNyA3IDAgMCAxIDUgMTVWOWE3IDcgMCAwIDEgLjc4Mi0zLjIxOCJ9XSxbInBhdGgiLHtkOiJNMTkgMTMuMzQzVjlBNyA3IDAgMCAwIDguNTYgMi45MDIifV0sWyJwYXRoIix7ZDoiTTIyIDIyIDIgMiJ9XV19KTt2YXIgdEIsUUhlPWcoKCk9Pnt0Qj1bWyJwYXRoIix7ZDoibTE1LjU1IDguNDUgNS4xMzggMi4wODdhLjUuNSAwIDAgMS0uMDYzLjk0N2wtNi4xMjQgMS41OGEyIDIgMCAwIDAtMS40MzggMS40MzVsLTEuNTc5IDYuMTI2YS41LjUgMCAwIDEtLjk0Ny4wNjNMOC40NSAxNS41NTEifV0sWyJwYXRoIix7ZDoiTTIyIDIgMiAyMiJ9XSxbInBhdGgiLHtkOiJtNi44MTYgMTEuNTI4LTIuNzc5LTYuODRhLjQ5NS40OTUgMCAwIDEgLjY1MS0uNjUxbDYuODQgMi43NzkifV1dfSk7dmFyIGFCLEpIZT1nKCgpPT57YUI9W1sicGF0aCIse2Q6Ik00LjAzNyA0LjY4OGEuNDk1LjQ5NSAwIDAgMSAuNjUxLS42NTFsMTYgNi41YS41LjUgMCAwIDEtLjA2My45NDdsLTYuMTI0IDEuNThhMiAyIDAgMCAwLTEuNDM4IDEuNDM1bC0xLjU3OSA2LjEyNmEuNS41IDAgMCAxLS45NDcuMDYzeiJ9XV19KTt2YXIgc0IsZXFlPWcoKCk9PntzQj1bWyJwYXRoIix7ZDoiTTIuMDM0IDIuNjgxYS40OTguNDk4IDAgMCAxIC42NDctLjY0N2w5IDMuNWEuNS41IDAgMCAxLS4wMzMuOTQ0TDguMjA0IDcuNTQ1YTEgMSAwIDAgMC0uNjYuNjZsLTEuMDY2IDMuNDQzYS41LjUgMCAwIDEtLjk0NC4wMzN6In1dLFsiY2lyY2xlIix7Y3g6IjE2IixjeToiMTYiLHI6IjYifV0sWyJwYXRoIix7ZDoibTExLjggMTEuOCA4LjQgOC40In1dXX0pO3ZhciBpQix0cWU9ZygoKT0+e2lCPVtbInBhdGgiLHtkOiJNMTQgNC4xIDEyIDYifV0sWyJwYXRoIix7ZDoibTUuMSA4LTIuOS0uOCJ9XSxbInBhdGgiLHtkOiJtNiAxMi0xLjkgMiJ9XSxbInBhdGgiLHtkOiJNNy4yIDIuMiA4IDUuMSJ9XSxbInBhdGgiLHtkOiJNOS4wMzcgOS42OWEuNDk4LjQ5OCAwIDAgMSAuNjUzLS42NTNsMTEgNC41YS41LjUgMCAwIDEtLjA3NC45NDlsLTQuMzQ5IDEuMDQxYTEgMSAwIDAgMC0uNzQuNzM5bC0xLjA0IDQuMzVhLjUuNSAwIDAgMS0uOTUuMDc0eiJ9XV19KTt2YXIgckIsYXFlPWcoKCk9PntyQj1bWyJwYXRoIix7ZDoiTTEyLjU4NiAxMi41ODYgMTkgMTkifV0sWyJwYXRoIix7ZDoiTTMuNjg4IDMuMDM3YS40OTcuNDk3IDAgMCAwLS42NTEuNjUxbDYuNSAxNS45OTlhLjUwMS41MDEgMCAwIDAgLjk0Ny0uMDYybDEuNTY5LTYuMDgzYTIgMiAwIDAgMSAxLjQ0OC0xLjQ3OWw2LjEyNC0xLjU3OWEuNS41IDAgMCAwIC4wNjMtLjk0N3oifV1dfSk7dmFyIG9CLHNxZT1nKCgpPT57b0I9W1sicGF0aCIse2Q6Ik0xMiA3LjMxOFYxMCJ9XSxbInBhdGgiLHtkOiJNMTkgMTB2NWE3IDcgMCAwIDEtMTQgMFY5YzAtMy41MjcgMi42MDgtNi41MTUgNi03In1dLFsiY2lyY2xlIix7Y3g6IjE3IixjeToiNCIscjoiMiJ9XV19KTt2YXIgbkIsaXFlPWcoKCk9PntuQj1bWyJyZWN0Iix7eDoiNSIseToiMiIsd2lkdGg6IjE0IixoZWlnaHQ6IjIwIixyeDoiNyJ9XSxbInBhdGgiLHtkOiJNMTIgNnY0In1dXX0pO3ZhciBFNixycWU9ZygoKT0+e0U2PVtbInBhdGgiLHtkOiJNNSAzdjE2aDE2In1dLFsicGF0aCIse2Q6Im01IDE5IDYtNiJ9XSxbInBhdGgiLHtkOiJtMiA2IDMtMyAzIDMifV0sWyJwYXRoIix7ZDoibTE4IDE2IDMgMy0zIDMifV1dfSk7dmFyIGxCLG9xZT1nKCgpPT57bEI9W1sicGF0aCIse2Q6Ik0xOSAxM3Y2aC02In1dLFsicGF0aCIse2Q6Ik01IDExVjVoNiJ9XSxbInBhdGgiLHtkOiJtNSA1IDE0IDE0In1dXX0pO3ZhciBjQixucWU9ZygoKT0+e2NCPVtbInBhdGgiLHtkOiJNMTEgMTlINXYtNiJ9XSxbInBhdGgiLHtkOiJNMTMgNWg2djYifV0sWyJwYXRoIix7ZDoiTTE5IDUgNSAxOSJ9XV19KTt2YXIgZEIsbHFlPWcoKCk9PntkQj1bWyJwYXRoIix7ZDoiTTExIDE5SDVWMTMifV0sWyJwYXRoIix7ZDoiTTE5IDVMNSAxOSJ9XV19KTt2YXIgdUIsY3FlPWcoKCk9Pnt1Qj1bWyJwYXRoIix7ZDoiTTE5IDEzVjE5SDEzIn1dLFsicGF0aCIse2Q6Ik01IDVMMTkgMTkifV1dfSk7dmFyIHBCLGRxZT1nKCgpPT57cEI9W1sicGF0aCIse2Q6Ik04IDE4TDEyIDIyTDE2IDE4In1dLFsicGF0aCIse2Q6Ik0xMiAyVjIyIn1dXX0pO3ZhciBoQix1cWU9ZygoKT0+e2hCPVtbInBhdGgiLHtkOiJtMTggOCA0IDQtNCA0In1dLFsicGF0aCIse2Q6Ik0yIDEyaDIwIn1dLFsicGF0aCIse2Q6Im02IDgtNCA0IDQgNCJ9XV19KTt2YXIgZkIscHFlPWcoKCk9PntmQj1bWyJwYXRoIix7ZDoiTTYgOEwyIDEyTDYgMTYifV0sWyJwYXRoIix7ZDoiTTIgMTJIMjIifV1dfSk7dmFyIG1CLGhxZT1nKCgpPT57bUI9W1sicGF0aCIse2Q6Ik0xOCA4TDIyIDEyTDE4IDE2In1dLFsicGF0aCIse2Q6Ik0yIDEySDIyIn1dXX0pO3ZhciBnQixmcWU9ZygoKT0+e2dCPVtbInBhdGgiLHtkOiJNNSAxMVY1SDExIn1dLFsicGF0aCIse2Q6Ik01IDVMMTkgMTkifV1dfSk7dmFyIGJCLG1xZT1nKCgpPT57YkI9W1sicGF0aCIse2Q6Ik0xMyA1SDE5VjExIn1dLFsicGF0aCIse2Q6Ik0xOSA1TDUgMTkifV1dfSk7dmFyIHZCLGdxZT1nKCgpPT57dkI9W1sicGF0aCIse2Q6Ik04IDZMMTIgMkwxNiA2In1dLFsicGF0aCIse2Q6Ik0xMiAyVjIyIn1dXX0pO3ZhciB4QixicWU9ZygoKT0+e3hCPVtbInBhdGgiLHtkOiJNMTIgMnYyMCJ9XSxbInBhdGgiLHtkOiJtOCAxOCA0IDQgNC00In1dLFsicGF0aCIse2Q6Im04IDYgNC00IDQgNCJ9XV19KTt2YXIgeUIsdnFlPWcoKCk9Pnt5Qj1bWyJwYXRoIix7ZDoiTTEyIDJ2MjAifV0sWyJwYXRoIix7ZDoibTE1IDE5LTMgMy0zLTMifV0sWyJwYXRoIix7ZDoibTE5IDkgMyAzLTMgMyJ9XSxbInBhdGgiLHtkOiJNMiAxMmgyMCJ9XSxbInBhdGgiLHtkOiJtNSA5LTMgMyAzIDMifV0sWyJwYXRoIix7ZDoibTkgNSAzLTMgMyAzIn1dXX0pO3ZhciB3Qix4cWU9ZygoKT0+e3dCPVtbImNpcmNsZSIse2N4OiI4IixjeToiMTgiLHI6IjQifV0sWyJwYXRoIix7ZDoiTTEyIDE4VjJsNyA0In1dXX0pO3ZhciBrQix5cWU9ZygoKT0+e2tCPVtbInBhdGgiLHtkOiJNOSAxOFY1bDEyLTJ2MTMifV0sWyJwYXRoIix7ZDoibTkgOSAxMi0yIn1dLFsiY2lyY2xlIix7Y3g6IjYiLGN5OiIxOCIscjoiMyJ9XSxbImNpcmNsZSIse2N4OiIxOCIsY3k6IjE2IixyOiIzIn1dXX0pO3ZhciBTQix3cWU9ZygoKT0+e1NCPVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjE4IixyOiI0In1dLFsicGF0aCIse2Q6Ik0xNiAxOFYyIn1dXX0pO3ZhciBfQixrcWU9ZygoKT0+e19CPVtbInBhdGgiLHtkOiJNOSAxOFY1bDEyLTJ2MTMifV0sWyJjaXJjbGUiLHtjeDoiNiIsY3k6IjE4IixyOiIzIn1dLFsiY2lyY2xlIix7Y3g6IjE4IixjeToiMTYiLHI6IjMifV1dfSk7dmFyIE1CLFNxZT1nKCgpPT57TUI9W1sicGF0aCIse2Q6Ik05LjMxIDkuMzEgNSAyMWw3LTQgNyA0LTEuMTctMy4xNyJ9XSxbInBhdGgiLHtkOiJNMTQuNTMgOC44OCAxMiAybC0xLjE3IDMuMTcifV0sWyJsaW5lIix7eDE6IjIiLHgyOiIyMiIseTE6IjIiLHkyOiIyMiJ9XV19KTt2YXIgekIsX3FlPWcoKCk9Pnt6Qj1bWyJwb2x5Z29uIix7cG9pbnRzOiIxMiAyIDE5IDIxIDEyIDE3IDUgMjEgMTIgMiJ9XV19KTt2YXIgQ0IsTXFlPWcoKCk9PntDQj1bWyJwYXRoIix7ZDoiTTguNDMgOC40MyAzIDExbDggMiAyIDggMi41Ny01LjQzIn1dLFsicGF0aCIse2Q6Ik0xNy4zOSAxMS43MyAyMiAybC05LjczIDQuNjEifV0sWyJsaW5lIix7eDE6IjIiLHgyOiIyMiIseTE6IjIiLHkyOiIyMiJ9XV19KTt2YXIgVEIsenFlPWcoKCk9PntUQj1bWyJwb2x5Z29uIix7cG9pbnRzOiIzIDExIDIyIDIgMTMgMjEgMTEgMTMgMyAxMSJ9XV19KTt2YXIgJEIsQ3FlPWcoKCk9PnskQj1bWyJyZWN0Iix7eDoiMTYiLHk6IjE2Iix3aWR0aDoiNiIsaGVpZ2h0OiI2IixyeDoiMSJ9XSxbInJlY3QiLHt4OiIyIix5OiIxNiIsd2lkdGg6IjYiLGhlaWdodDoiNiIscng6IjEifV0sWyJyZWN0Iix7eDoiOSIseToiMiIsd2lkdGg6IjYiLGhlaWdodDoiNiIscng6IjEifV0sWyJwYXRoIix7ZDoiTTUgMTZ2LTNhMSAxIDAgMCAxIDEtMWgxMmExIDEgMCAwIDEgMSAxdjMifV0sWyJwYXRoIix7ZDoiTTEyIDEyVjgifV1dfSk7dmFyIERCLFRxZT1nKCgpPT57REI9W1sicGF0aCIse2Q6Ik0xNSAxOGgtNSJ9XSxbInBhdGgiLHtkOiJNMTggMTRoLTgifV0sWyJwYXRoIix7ZDoiTTQgMjJoMTZhMiAyIDAgMCAwIDItMlY0YTIgMiAwIDAgMC0yLTJIOGEyIDIgMCAwIDAtMiAydjE2YTIgMiAwIDAgMS00IDB2LTlhMiAyIDAgMCAxIDItMmgyIn1dLFsicmVjdCIse3dpZHRoOiI4IixoZWlnaHQ6IjQiLHg6IjEwIix5OiI2IixyeDoiMSJ9XV19KTt2YXIgTEIsJHFlPWcoKCk9PntMQj1bWyJwYXRoIix7ZDoiTTYgOC4zMmE3LjQzIDcuNDMgMCAwIDEgMCA3LjM2In1dLFsicGF0aCIse2Q6Ik05LjQ2IDYuMjFhMTEuNzYgMTEuNzYgMCAwIDEgMCAxMS41OCJ9XSxbInBhdGgiLHtkOiJNMTIuOTEgNC4xYTE1LjkxIDE1LjkxIDAgMCAxIC4wMSAxNS44In1dLFsicGF0aCIse2Q6Ik0xNi4zNyAyYTIwLjE2IDIwLjE2IDAgMCAxIDAgMjAifV1dfSk7dmFyIEVCLERxZT1nKCgpPT57RUI9W1sicGF0aCIse2Q6Ik0xMiAydjEwIn1dLFsicGF0aCIse2Q6Im04LjUgNCA3IDQifV0sWyJwYXRoIix7ZDoibTguNSA4IDctNCJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjE3IixyOiI1In1dXX0pO3ZhciBQQixMcWU9ZygoKT0+e1BCPVtbInBhdGgiLHtkOiJNMTMuNCAySDZhMiAyIDAgMCAwLTIgMnYxNmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJ2LTcuNCJ9XSxbInBhdGgiLHtkOiJNMiA2aDQifV0sWyJwYXRoIix7ZDoiTTIgMTBoNCJ9XSxbInBhdGgiLHtkOiJNMiAxNGg0In1dLFsicGF0aCIse2Q6Ik0yIDE4aDQifV0sWyJwYXRoIix7ZDoiTTIxLjM3OCA1LjYyNmExIDEgMCAxIDAtMy4wMDQtMy4wMDRsLTUuMDEgNS4wMTJhMiAyIDAgMCAwLS41MDYuODU0bC0uODM3IDIuODdhLjUuNSAwIDAgMCAuNjIuNjJsMi44Ny0uODM3YTIgMiAwIDAgMCAuODU0LS41MDZ6In1dXX0pO3ZhciBJQixFcWU9ZygoKT0+e0lCPVtbInBhdGgiLHtkOiJNMiA2aDQifV0sWyJwYXRoIix7ZDoiTTIgMTBoNCJ9XSxbInBhdGgiLHtkOiJNMiAxNGg0In1dLFsicGF0aCIse2Q6Ik0yIDE4aDQifV0sWyJyZWN0Iix7d2lkdGg6IjE2IixoZWlnaHQ6IjIwIix4OiI0Iix5OiIyIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNOS41IDhoNSJ9XSxbInBhdGgiLHtkOiJNOS41IDEySDE2In1dLFsicGF0aCIse2Q6Ik05LjUgMTZIMTQifV1dfSk7dmFyIEFCLFBxZT1nKCgpPT57QUI9W1sicGF0aCIse2Q6Ik0yIDZoNCJ9XSxbInBhdGgiLHtkOiJNMiAxMGg0In1dLFsicGF0aCIse2Q6Ik0yIDE0aDQifV0sWyJwYXRoIix7ZDoiTTIgMThoNCJ9XSxbInJlY3QiLHt3aWR0aDoiMTYiLGhlaWdodDoiMjAiLHg6IjQiLHk6IjIiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik0xNSAydjIwIn1dLFsicGF0aCIse2Q6Ik0xNSA3aDUifV0sWyJwYXRoIix7ZDoiTTE1IDEyaDUifV0sWyJwYXRoIix7ZDoiTTE1IDE3aDUifV1dfSk7dmFyIE5CLElxZT1nKCgpPT57TkI9W1sicGF0aCIse2Q6Ik0yIDZoNCJ9XSxbInBhdGgiLHtkOiJNMiAxMGg0In1dLFsicGF0aCIse2Q6Ik0yIDE0aDQifV0sWyJwYXRoIix7ZDoiTTIgMThoNCJ9XSxbInJlY3QiLHt3aWR0aDoiMTYiLGhlaWdodDoiMjAiLHg6IjQiLHk6IjIiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik0xNiAydjIwIn1dXX0pO3ZhciBSQixBcWU9ZygoKT0+e1JCPVtbInBhdGgiLHtkOiJNOCAydjQifV0sWyJwYXRoIix7ZDoiTTEyIDJ2NCJ9XSxbInBhdGgiLHtkOiJNMTYgMnY0In1dLFsicGF0aCIse2Q6Ik0xNiA0aDJhMiAyIDAgMCAxIDIgMnYyIn1dLFsicGF0aCIse2Q6Ik0yMCAxMnYyIn1dLFsicGF0aCIse2Q6Ik0yMCAxOHYyYTIgMiAwIDAgMS0yIDJoLTEifV0sWyJwYXRoIix7ZDoiTTEzIDIyaC0yIn1dLFsicGF0aCIse2Q6Ik03IDIySDZhMiAyIDAgMCAxLTItMnYtMiJ9XSxbInBhdGgiLHtkOiJNNCAxNHYtMiJ9XSxbInBhdGgiLHtkOiJNNCA4VjZhMiAyIDAgMCAxIDItMmgyIn1dLFsicGF0aCIse2Q6Ik04IDEwaDYifV0sWyJwYXRoIix7ZDoiTTggMTRoOCJ9XSxbInBhdGgiLHtkOiJNOCAxOGg1In1dXX0pO3ZhciBPQixOcWU9ZygoKT0+e09CPVtbInBhdGgiLHtkOiJNOCAydjQifV0sWyJwYXRoIix7ZDoiTTEyIDJ2NCJ9XSxbInBhdGgiLHtkOiJNMTYgMnY0In1dLFsicmVjdCIse3dpZHRoOiIxNiIsaGVpZ2h0OiIxOCIseDoiNCIseToiNCIscng6IjIifV0sWyJwYXRoIix7ZDoiTTggMTBoNiJ9XSxbInBhdGgiLHtkOiJNOCAxNGg4In1dLFsicGF0aCIse2Q6Ik04IDE4aDUifV1dfSk7dmFyIEZCLFJxZT1nKCgpPT57RkI9W1sicGF0aCIse2Q6Ik0xMiA0VjIifV0sWyJwYXRoIix7ZDoiTTUgMTB2NGE3LjAwNCA3LjAwNCAwIDAgMCA1LjI3NyA2Ljc4N2MuNDEyLjEwNC44MDIuMjkyIDEuMTAyLjU5MkwxMiAyMmwuNjIxLS42MjFjLjMtLjMuNjktLjQ4OCAxLjEwMi0uNTkyYTcuMDEgNy4wMSAwIDAgMCA0LjEyNS0yLjkzOSJ9XSxbInBhdGgiLHtkOiJNMTkgMTB2My4zNDMifV0sWyJwYXRoIix7ZDoiTTEyIDEyYy0xLjM0OS0uNTczLTEuOTA1LTEuMDA1LTIuNS0yLS41NDYuOTAyLTEuMDQ4IDEuMzUzLTIuNSAyLTEuMDE4LS42NDQtMS40Ni0xLjA4LTItMi0xLjAyOC43MS0xLjY5LjkxOC0zIDEgMS4wODEtMS4wNDggMS43NTctMi4wMyAyLTMgLjE5NC0uNzc2Ljg0LTEuNTUxIDEuNzktMi4yMW0xMS42NTQgNS45OTdjLjg4Ny0uNDU3IDEuMjgtLjg5MSAxLjU1Ni0xLjc4NyAxLjAzMi45MTYgMS42ODMgMS4xNTcgMyAxLTEuMjk3LTEuMDM2LTEuNzU4LTIuMDMtMi0zLS41LTItNC00LTgtNC0uNzQgMC0xLjQ2MS4wNjgtMi4xNS4xOTIifV0sWyJsaW5lIix7eDE6IjIiLHgyOiIyMiIseTE6IjIiLHkyOiIyMiJ9XV19KTt2YXIgQkIsT3FlPWcoKCk9PntCQj1bWyJwYXRoIix7ZDoiTTEyIDRWMiJ9XSxbInBhdGgiLHtkOiJNNSAxMHY0YTcuMDA0IDcuMDA0IDAgMCAwIDUuMjc3IDYuNzg3Yy40MTIuMTA0LjgwMi4yOTIgMS4xMDIuNTkyTDEyIDIybC42MjEtLjYyMWMuMy0uMy42OS0uNDg4IDEuMTAyLS41OTJBNy4wMDMgNy4wMDMgMCAwIDAgMTkgMTR2LTQifV0sWyJwYXRoIix7ZDoiTTEyIDRDOCA0IDQuNSA2IDQgOGMtLjI0My45Ny0uOTE5IDEuOTUyLTIgMyAxLjMxLS4wODIgMS45NzItLjI5IDMtMSAuNTQuOTIuOTgyIDEuMzU2IDIgMiAxLjQ1Mi0uNjQ3IDEuOTU0LTEuMDk4IDIuNS0yIC41OTUuOTk1IDEuMTUxIDEuNDI3IDIuNSAyIDEuMzEtLjYyMSAxLjg2Mi0xLjA1OCAyLjUtMiAuNjI5Ljk3NyAxLjE2MiAxLjQyMyAyLjUgMiAxLjIwOS0uNTQ4IDEuNjgtLjk2NyAyLTIgMS4wMzIuOTE2IDEuNjgzIDEuMTU3IDMgMS0xLjI5Ny0xLjAzNi0xLjc1OC0yLjAzLTItMy0uNS0yLTQtNC04LTRaIn1dXX0pO3ZhciBQNixGcWU9ZygoKT0+e1A2PVtbInBhdGgiLHtkOiJNMTIgMTZoLjAxIn1dLFsicGF0aCIse2Q6Ik0xMiA4djQifV0sWyJwYXRoIix7ZDoiTTE1LjMxMiAyYTIgMiAwIDAgMSAxLjQxNC41ODZsNC42ODggNC42ODhBMiAyIDAgMCAxIDIyIDguNjg4djYuNjI0YTIgMiAwIDAgMS0uNTg2IDEuNDE0bC00LjY4OCA0LjY4OGEyIDIgMCAwIDEtMS40MTQuNTg2SDguNjg4YTIgMiAwIDAgMS0xLjQxNC0uNTg2bC00LjY4OC00LjY4OEEyIDIgMCAwIDEgMiAxNS4zMTJWOC42ODhhMiAyIDAgMCAxIC41ODYtMS40MTRsNC42ODgtNC42ODhBMiAyIDAgMCAxIDguNjg4IDJ6In1dXX0pO3ZhciBIQixCcWU9ZygoKT0+e0hCPVtbInBhdGgiLHtkOiJNMi41ODYgMTYuNzI2QTIgMiAwIDAgMSAyIDE1LjMxMlY4LjY4OGEyIDIgMCAwIDEgLjU4Ni0xLjQxNGw0LjY4OC00LjY4OEEyIDIgMCAwIDEgOC42ODggMmg2LjYyNGEyIDIgMCAwIDEgMS40MTQuNTg2bDQuNjg4IDQuNjg4QTIgMiAwIDAgMSAyMiA4LjY4OHY2LjYyNGEyIDIgMCAwIDEtLjU4NiAxLjQxNGwtNC42ODggNC42ODhhMiAyIDAgMCAxLTEuNDE0LjU4Nkg4LjY4OGEyIDIgMCAwIDEtMS40MTQtLjU4NnoifV0sWyJwYXRoIix7ZDoiTTggMTJoOCJ9XV19KTt2YXIgSTYsSHFlPWcoKCk9PntJNj1bWyJwYXRoIix7ZDoiTTEwIDE1VjkifV0sWyJwYXRoIix7ZDoiTTE0IDE1VjkifV0sWyJwYXRoIix7ZDoiTTIuNTg2IDE2LjcyNkEyIDIgMCAwIDEgMiAxNS4zMTJWOC42ODhhMiAyIDAgMCAxIC41ODYtMS40MTRsNC42ODgtNC42ODhBMiAyIDAgMCAxIDguNjg4IDJoNi42MjRhMiAyIDAgMCAxIDEuNDE0LjU4Nmw0LjY4OCA0LjY4OEEyIDIgMCAwIDEgMjIgOC42ODh2Ni42MjRhMiAyIDAgMCAxLS41ODYgMS40MTRsLTQuNjg4IDQuNjg4YTIgMiAwIDAgMS0xLjQxNC41ODZIOC42ODhhMiAyIDAgMCAxLTEuNDE0LS41ODZ6In1dXX0pO3ZhciBxQixxcWU9ZygoKT0+e3FCPVtbInBhdGgiLHtkOiJNMi41ODYgMTYuNzI2QTIgMiAwIDAgMSAyIDE1LjMxMlY4LjY4OGEyIDIgMCAwIDEgLjU4Ni0xLjQxNGw0LjY4OC00LjY4OEEyIDIgMCAwIDEgOC42ODggMmg2LjYyNGEyIDIgMCAwIDEgMS40MTQuNTg2bDQuNjg4IDQuNjg4QTIgMiAwIDAgMSAyMiA4LjY4OHY2LjYyNGEyIDIgMCAwIDEtLjU4NiAxLjQxNGwtNC42ODggNC42ODhhMiAyIDAgMCAxLTEuNDE0LjU4Nkg4LjY4OGEyIDIgMCAwIDEtMS40MTQtLjU4NnoifV1dfSk7dmFyIEE2LGpxZT1nKCgpPT57QTY9W1sicGF0aCIse2Q6Im0xNSA5LTYgNiJ9XSxbInBhdGgiLHtkOiJNMi41ODYgMTYuNzI2QTIgMiAwIDAgMSAyIDE1LjMxMlY4LjY4OGEyIDIgMCAwIDEgLjU4Ni0xLjQxNGw0LjY4OC00LjY4OEEyIDIgMCAwIDEgOC42ODggMmg2LjYyNGEyIDIgMCAwIDEgMS40MTQuNTg2bDQuNjg4IDQuNjg4QTIgMiAwIDAgMSAyMiA4LjY4OHY2LjYyNGEyIDIgMCAwIDEtLjU4NiAxLjQxNGwtNC42ODggNC42ODhhMiAyIDAgMCAxLTEuNDE0LjU4Nkg4LjY4OGEyIDIgMCAwIDEtMS40MTQtLjU4NnoifV0sWyJwYXRoIix7ZDoibTkgOSA2IDYifV1dfSk7dmFyIGpCLFZxZT1nKCgpPT57akI9W1sicGF0aCIse2Q6Ik0zIDIwaDQuNWEuNS41IDAgMCAwIC41LS41di0uMjgyYS41Mi41MiAwIDAgMC0uMjQ3LS40MzcgOCA4IDAgMSAxIDguNDk0LS4wMDEuNTIuNTIgMCAwIDAtLjI0Ny40Mzh2LjI4MmEuNS41IDAgMCAwIC41LjVIMjEifV1dfSk7dmFyIFZCLFVxZT1nKCgpPT57VkI9W1sicGF0aCIse2Q6Ik0zIDNoNmw2IDE4aDYifV0sWyJwYXRoIix7ZDoiTTE0IDNoNyJ9XV19KTt2YXIgVUIsV3FlPWcoKCk9PntVQj1bWyJwYXRoIix7ZDoiTTIwLjM0MSA2LjQ4NEExMCAxMCAwIDAgMSAxMC4yNjYgMjEuODUifV0sWyJwYXRoIix7ZDoiTTMuNjU5IDE3LjUxNkExMCAxMCAwIDAgMSAxMy43NCAyLjE1MiJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIzIn1dLFsiY2lyY2xlIix7Y3g6IjE5IixjeToiNSIscjoiMiJ9XSxbImNpcmNsZSIse2N4OiI1IixjeToiMTkiLHI6IjIifV1dfSk7dmFyIFdCLEdxZT1nKCgpPT57V0I9W1sicGF0aCIse2Q6Ik0xMiAxMlY0YTEgMSAwIDAgMSAxLTFoNi4yOTdhMSAxIDAgMCAxIC42NTEgMS43NTlsLTQuNjk2IDQuMDI1In1dLFsicGF0aCIse2Q6Im0xMiAyMS03LjQxNC03LjQxNEEyIDIgMCAwIDEgNCAxMi4xNzJWNi40MTVhMS4wMDIgMS4wMDIgMCAwIDEgMS43MDctLjcwN0wyMCAyMC4wMDkifV0sWyJwYXRoIix7ZDoibTEyLjIxNCAzLjM4MSA4LjQxNCAxNC45NjZhMSAxIDAgMCAxLS4xNjcgMS4xOTlsLTEuMTY4IDEuMTYzYTEgMSAwIDAgMS0uNzA2LjI5MUg2LjM1MWExIDEgMCAwIDEtLjYyNS0uMjE5TDMuMjUgMTguOGExIDEgMCAwIDEgLjYzMS0xLjc4MWw0LjE2NS4wMjcifV1dfSk7dmFyIEdCLEtxZT1nKCgpPT57R0I9W1sicGF0aCIse2Q6Ik0xMiAzdjYifV0sWyJwYXRoIix7ZDoiTTE2Ljc2IDNhMiAyIDAgMCAxIDEuOCAxLjFsMi4yMyA0LjQ3OWEyIDIgMCAwIDEgLjIxLjg5MVYxOWEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMlY5LjQ3MmEyIDIgMCAwIDEgLjIxMS0uODk0TDUuNDUgNC4xQTIgMiAwIDAgMSA3LjI0IDN6In1dLFsicGF0aCIse2Q6Ik0zLjA1NCA5LjAxM2gxNy44OTMifV1dfSk7dmFyIEtCLFlxZT1nKCgpPT57S0I9W1sicGF0aCIse2Q6Ik0xMiAyMlYxMiJ9XSxbInBhdGgiLHtkOiJtMTYgMTcgMiAyIDQtNCJ9XSxbInBhdGgiLHtkOiJNMjEgMTEuMTI3VjhhMiAyIDAgMCAwLTEtMS43M2wtNy00YTIgMiAwIDAgMC0yIDBsLTcgNEEyIDIgMCAwIDAgMyA4djhhMiAyIDAgMCAwIDEgMS43MjlsNyA0YTIgMiAwIDAgMCAyIC4wMDFsMS4zMi0uNzUzIn1dLFsicGF0aCIse2Q6Ik0zLjI5IDcgMTIgMTJsOC43MS01In1dLFsicGF0aCIse2Q6Im03LjUgNC4yNyA4Ljk5NyA1LjE0OCJ9XV19KTt2YXIgWUIsWnFlPWcoKCk9PntZQj1bWyJwYXRoIix7ZDoiTTEyIDIyVjEyIn1dLFsicGF0aCIse2Q6Ik0xNiAxN2g2In1dLFsicGF0aCIse2Q6Ik0yMSAxM1Y4YTIgMiAwIDAgMC0xLTEuNzNsLTctNGEyIDIgMCAwIDAtMiAwbC03IDRBMiAyIDAgMCAwIDMgOHY4YTIgMiAwIDAgMCAxIDEuNzI5bDcgNGEyIDIgMCAwIDAgMiAuMDAxbDEuNjc1LS45NTUifV0sWyJwYXRoIix7ZDoiTTMuMjkgNyAxMiAxMmw4LjcxLTUifV0sWyJwYXRoIix7ZDoibTcuNSA0LjI3IDguOTk3IDUuMTQ4In1dXX0pO3ZhciBaQixYcWU9ZygoKT0+e1pCPVtbInBhdGgiLHtkOiJNMTIgMjJ2LTkifV0sWyJwYXRoIix7ZDoiTTE1LjE3IDIuMjFhMS42NyAxLjY3IDAgMCAxIDEuNjMgMEwyMSA0LjU3YTEuOTMgMS45MyAwIDAgMSAwIDMuMzZMOC44MiAxNC43OWExLjY1NSAxLjY1NSAwIDAgMS0xLjY0IDBMMyAxMi40M2ExLjkzIDEuOTMgMCAwIDEgMC0zLjM2eiJ9XSxbInBhdGgiLHtkOiJNMjAgMTN2My44N2EyLjA2IDIuMDYgMCAwIDEtMS4xMSAxLjgzbC02IDMuMDhhMS45MyAxLjkzIDAgMCAxLTEuNzggMGwtNi0zLjA4QTIuMDYgMi4wNiAwIDAgMSA0IDE2Ljg3VjEzIn1dLFsicGF0aCIse2Q6Ik0yMSAxMi40M2ExLjkzIDEuOTMgMCAwIDAgMC0zLjM2TDguODMgMi4yYTEuNjQgMS42NCAwIDAgMC0xLjYzIDBMMyA0LjU3YTEuOTMgMS45MyAwIDAgMCAwIDMuMzZsMTIuMTggNi44NmExLjYzNiAxLjYzNiAwIDAgMCAxLjYzIDB6In1dXX0pO3ZhciBYQixRcWU9ZygoKT0+e1hCPVtbInBhdGgiLHtkOiJNMTIgMjJWMTIifV0sWyJwYXRoIix7ZDoiTTE2IDE3aDYifV0sWyJwYXRoIix7ZDoiTTE5IDE0djYifV0sWyJwYXRoIix7ZDoiTTIxIDEwLjUzNVY4YTIgMiAwIDAgMC0xLTEuNzNsLTctNGEyIDIgMCAwIDAtMiAwbC03IDRBMiAyIDAgMCAwIDMgOHY4YTIgMiAwIDAgMCAxIDEuNzI5bDcgNGEyIDIgMCAwIDAgMiAuMDAxbDEuNjc1LS45NTUifV0sWyJwYXRoIix7ZDoiTTMuMjkgNyAxMiAxMmw4LjcxLTUifV0sWyJwYXRoIix7ZDoibTcuNSA0LjI3IDguOTk3IDUuMTQ4In1dXX0pO3ZhciBRQixKcWU9ZygoKT0+e1FCPVtbInBhdGgiLHtkOiJNMTIgMjJWMTIifV0sWyJwYXRoIix7ZDoiTTIwLjI3IDE4LjI3IDIyIDIwIn1dLFsicGF0aCIse2Q6Ik0yMSAxMC40OThWOGEyIDIgMCAwIDAtMS0xLjczbC03LTRhMiAyIDAgMCAwLTIgMGwtNyA0QTIgMiAwIDAgMCAzIDh2OGEyIDIgMCAwIDAgMSAxLjcyOWw3IDRhMiAyIDAgMCAwIDIgLjAwMWwuOTgtLjU1OSJ9XSxbInBhdGgiLHtkOiJNMy4yOSA3IDEyIDEybDguNzEtNSJ9XSxbInBhdGgiLHtkOiJtNy41IDQuMjcgOC45OTcgNS4xNDgifV0sWyJjaXJjbGUiLHtjeDoiMTguNSIsY3k6IjE2LjUiLHI6IjIuNSJ9XV19KTt2YXIgSkIsZWplPWcoKCk9PntKQj1bWyJwYXRoIix7ZDoiTTExIDIxLjczYTIgMiAwIDAgMCAyIDBsNy00QTIgMiAwIDAgMCAyMSAxNlY4YTIgMiAwIDAgMC0xLTEuNzNsLTctNGEyIDIgMCAwIDAtMiAwbC03IDRBMiAyIDAgMCAwIDMgOHY4YTIgMiAwIDAgMCAxIDEuNzN6In1dLFsicGF0aCIse2Q6Ik0xMiAyMlYxMiJ9XSxbInBvbHlsaW5lIix7cG9pbnRzOiIzLjI5IDcgMTIgMTIgMjAuNzEgNyJ9XSxbInBhdGgiLHtkOiJtNy41IDQuMjcgOSA1LjE1In1dXX0pO3ZhciBlSCx0amU9ZygoKT0+e2VIPVtbInBhdGgiLHtkOiJNMTIgMjJWMTIifV0sWyJwYXRoIix7ZDoibTE2LjUgMTQuNSA1IDUifV0sWyJwYXRoIix7ZDoibTE2LjUgMTkuNSA1LTUifV0sWyJwYXRoIix7ZDoiTTIxIDEwLjVWOGEyIDIgMCAwIDAtMS0xLjczbC03LTRhMiAyIDAgMCAwLTIgMGwtNyA0QTIgMiAwIDAgMCAzIDh2OGEyIDIgMCAwIDAgMSAxLjcyOWw3IDRhMiAyIDAgMCAwIDIgLjAwMWwuMTMtLjA3NCJ9XSxbInBhdGgiLHtkOiJNMy4yOSA3IDEyIDEybDguNzEtNSJ9XSxbInBhdGgiLHtkOiJtNy41IDQuMjcgOC45OTcgNS4xNDgifV1dfSk7dmFyIHRILGFqZT1nKCgpPT57dEg9W1sicGF0aCIse2Q6Ik0xMSA3IDYgMiJ9XSxbInBhdGgiLHtkOiJNMTguOTkyIDEySDIuMDQxIn1dLFsicGF0aCIse2Q6Ik0yMS4xNDUgMTguMzhBMy4zNCAzLjM0IDAgMCAxIDIwIDE2LjVhMy4zIDMuMyAwIDAgMS0xLjE0NSAxLjg4Yy0uNTc1LjQ2LS44NTUgMS4wMi0uODU1IDEuNTk1QTIgMiAwIDAgMCAyMCAyMmEyIDIgMCAwIDAgMi0yLjAyNWMwLS41OC0uMjg1LTEuMTMtLjg1NS0xLjU5NSJ9XSxbInBhdGgiLHtkOiJtOC41IDQuNSAyLjE0OC0yLjE0OGExLjIwNSAxLjIwNSAwIDAgMSAxLjcwNCAwbDcuMjk2IDcuMjk2YTEuMjA1IDEuMjA1IDAgMCAxIDAgMS43MDRsLTcuNTkyIDcuNTkyYTMuNjE1IDMuNjE1IDAgMCAxLTUuMTEyIDBsLTMuODg4LTMuODg4YTMuNjE1IDMuNjE1IDAgMCAxIDAtNS4xMTJMNS42NyA3LjMzIn1dXX0pO3ZhciBhSCxzamU9ZygoKT0+e2FIPVtbInJlY3QiLHt3aWR0aDoiMTYiLGhlaWdodDoiNiIseDoiMiIseToiMiIscng6IjIifV0sWyJwYXRoIix7ZDoiTTEwIDE2di0yYTIgMiAwIDAgMSAyLTJoOGEyIDIgMCAwIDAgMi0yVjdhMiAyIDAgMCAwLTItMmgtMiJ9XSxbInJlY3QiLHt3aWR0aDoiNCIsaGVpZ2h0OiI2Iix4OiI4Iix5OiIxNiIscng6IjEifV1dfSk7dmFyIE42LGlqZT1nKCgpPT57TjY9W1sicGF0aCIse2Q6Ik0xMCAydjIifV0sWyJwYXRoIix7ZDoiTTE0IDJ2NCJ9XSxbInBhdGgiLHtkOiJNMTcgMmExIDEgMCAwIDEgMSAxdjlINlYzYTEgMSAwIDAgMSAxLTF6In1dLFsicGF0aCIse2Q6Ik02IDEyYTEgMSAwIDAgMC0xIDF2MWEyIDIgMCAwIDAgMiAyaDJhMSAxIDAgMCAxIDEgMXYyLjlhMiAyIDAgMSAwIDQgMFYxN2ExIDEgMCAwIDEgMS0xaDJhMiAyIDAgMCAwIDItMnYtMWExIDEgMCAwIDAtMS0xIn1dXX0pO3ZhciBzSCxyamU9ZygoKT0+e3NIPVtbInBhdGgiLHtkOiJtMTQuNjIyIDE3Ljg5Ny0xMC42OC0yLjkxMyJ9XSxbInBhdGgiLHtkOiJNMTguMzc2IDIuNjIyYTEgMSAwIDEgMSAzLjAwMiAzLjAwMkwxNy4zNiA5LjY0M2EuNS41IDAgMCAwIDAgLjcwN2wuOTQ0Ljk0NGEyLjQxIDIuNDEgMCAwIDEgMCAzLjQwOGwtLjk0NC45NDRhLjUuNSAwIDAgMS0uNzA3IDBMOC4zNTQgNy4zNDhhLjUuNSAwIDAgMSAwLS43MDdsLjk0NC0uOTQ0YTIuNDEgMi40MSAwIDAgMSAzLjQwOCAwbC45NDQuOTQ0YS41LjUgMCAwIDAgLjcwNyAweiJ9XSxbInBhdGgiLHtkOiJNOSA4Yy0xLjgwNCAyLjcxLTMuOTcgMy40Ni02LjU4MyAzLjk0OGEuNTA3LjUwNyAwIDAgMC0uMzAyLjgxOWw3LjMyIDguODgzYTEgMSAwIDAgMCAxLjE4NS4yMDRDMTIuNzM1IDIwLjQwNSAxNiAxNi43OTIgMTYgMTUifV1dfSk7dmFyIGlILG9qZT1nKCgpPT57aUg9W1sicGF0aCIse2Q6Ik0xMiAyMmExIDEgMCAwIDEgMC0yMCAxMCA5IDAgMCAxIDEwIDkgNSA1IDAgMCAxLTUgNWgtMi4yNWExLjc1IDEuNzUgMCAwIDAtMS40IDIuOGwuMy40YTEuNzUgMS43NSAwIDAgMS0xLjQgMi44eiJ9XSxbImNpcmNsZSIse2N4OiIxMy41IixjeToiNi41IixyOiIuNSIsZmlsbDoiY3VycmVudENvbG9yIn1dLFsiY2lyY2xlIix7Y3g6IjE3LjUiLGN5OiIxMC41IixyOiIuNSIsZmlsbDoiY3VycmVudENvbG9yIn1dLFsiY2lyY2xlIix7Y3g6IjYuNSIsY3k6IjEyLjUiLHI6Ii41IixmaWxsOiJjdXJyZW50Q29sb3IifV0sWyJjaXJjbGUiLHtjeDoiOC41IixjeToiNy41IixyOiIuNSIsZmlsbDoiY3VycmVudENvbG9yIn1dXX0pO3ZhciBySCxuamU9ZygoKT0+e3JIPVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik0zIDE1aDE4In1dLFsicGF0aCIse2Q6Im0xNSA4LTMgMy0zLTMifV1dfSk7dmFyIG9ILGxqZT1nKCgpPT57b0g9W1sicGF0aCIse2Q6Ik0xMS4yNSAxNy4yNWgxLjVMMTIgMTh6In1dLFsicGF0aCIse2Q6Im0xNSAxMiAyIDIifV0sWyJwYXRoIix7ZDoiTTE4IDYuNWEuNS41IDAgMCAwLS41LS41In1dLFsicGF0aCIse2Q6Ik0yMC42OSA5LjY3YTQuNSA0LjUgMCAxIDAtNy4wNC01LjUgOC4zNSA4LjM1IDAgMCAwLTMuMyAwIDQuNSA0LjUgMCAxIDAtNy4wNCA1LjVDMi40OSAxMS4yIDIgMTIuODggMiAxNC41IDIgMTkuNDcgNi40OCAyMiAxMiAyMnMxMC0yLjUzIDEwLTcuNWMwLTEuNjItLjQ4LTMuMy0xLjMtNC44MyJ9XSxbInBhdGgiLHtkOiJNNiA2LjVhLjQ5NS40OTUgMCAwIDEgLjUtLjUifV0sWyJwYXRoIix7ZDoibTkgMTItMiAyIn1dXX0pO3ZhciBSNixjamU9ZygoKT0+e1I2PVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik0xNCAxNWgxIn1dLFsicGF0aCIse2Q6Ik0xOSAxNWgyIn1dLFsicGF0aCIse2Q6Ik0zIDE1aDIifV0sWyJwYXRoIix7ZDoiTTkgMTVoMSJ9XV19KTt2YXIgbkgsZGplPWcoKCk9PntuSD1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNMyAxNWgxOCJ9XSxbInBhdGgiLHtkOiJtOSAxMCAzLTMgMyAzIn1dXX0pO3ZhciBsSCx1amU9ZygoKT0+e2xIPVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik0zIDE1aDE4In1dXX0pO3ZhciBPNixwamU9ZygoKT0+e082PVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik05IDN2MTgifV0sWyJwYXRoIix7ZDoibTE2IDE1LTMtMyAzLTMifV1dfSk7dmFyIEY2LGhqZT1nKCgpPT57RjY9W1sicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiMyIscng6IjIifV0sWyJwYXRoIix7ZDoiTTkgMTR2MSJ9XSxbInBhdGgiLHtkOiJNOSAxOXYyIn1dLFsicGF0aCIse2Q6Ik05IDN2MiJ9XSxbInBhdGgiLHtkOiJNOSA5djEifV1dfSk7dmFyIEI2LGZqZT1nKCgpPT57QjY9W1sicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiMyIscng6IjIifV0sWyJwYXRoIix7ZDoiTTkgM3YxOCJ9XSxbInBhdGgiLHtkOiJtMTQgOSAzIDMtMyAzIn1dXX0pO3ZhciBjSCxtamU9ZygoKT0+e2NIPVtbInBhdGgiLHtkOiJNMTUgMTBWOSJ9XSxbInBhdGgiLHtkOiJNMTUgMTV2LTEifV0sWyJwYXRoIix7ZDoiTTE1IDIxdi0yIn1dLFsicGF0aCIse2Q6Ik0xNSA1VjMifV0sWyJwYXRoIix7ZDoiTTkgMTBWOSJ9XSxbInBhdGgiLHtkOiJNOSAxNXYtMSJ9XSxbInBhdGgiLHtkOiJNOSAyMXYtMiJ9XSxbInBhdGgiLHtkOiJNOSA1VjMifV0sWyJyZWN0Iix7eDoiMyIseToiMyIsd2lkdGg6IjE4IixoZWlnaHQ6IjE4IixyeDoiMiJ9XV19KTt2YXIgSDYsZ2plPWcoKCk9PntINj1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNOSAzdjE4In1dXX0pO3ZhciBkSCxiamU9ZygoKT0+e2RIPVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik0xNSAzdjE4In1dLFsicGF0aCIse2Q6Im04IDkgMyAzLTMgMyJ9XV19KTt2YXIgcTYsdmplPWcoKCk9PntxNj1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNMTUgMTR2MSJ9XSxbInBhdGgiLHtkOiJNMTUgMTl2MiJ9XSxbInBhdGgiLHtkOiJNMTUgM3YyIn1dLFsicGF0aCIse2Q6Ik0xNSA5djEifV1dfSk7dmFyIHVILHhqZT1nKCgpPT57dUg9W1sicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiMyIscng6IjIifV0sWyJwYXRoIix7ZDoiTTE1IDN2MTgifV0sWyJwYXRoIix7ZDoibTEwIDE1LTMtMyAzLTMifV1dfSk7dmFyIHBILHlqZT1nKCgpPT57cEg9W1sicGF0aCIse2Q6Ik0xNCAxNWgxIn1dLFsicGF0aCIse2Q6Ik0xNCA5aDEifV0sWyJwYXRoIix7ZDoiTTE5IDE1aDIifV0sWyJwYXRoIix7ZDoiTTE5IDloMiJ9XSxbInBhdGgiLHtkOiJNMyAxNWgyIn1dLFsicGF0aCIse2Q6Ik0zIDloMiJ9XSxbInBhdGgiLHtkOiJNOSAxNWgxIn1dLFsicGF0aCIse2Q6Ik05IDloMSJ9XSxbInJlY3QiLHt4OiIzIix5OiIzIix3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHJ4OiIyIn1dXX0pO3ZhciBoSCx3amU9ZygoKT0+e2hIPVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik0xNSAzdjE4In1dXX0pO3ZhciBmSCxramU9ZygoKT0+e2ZIPVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik0zIDloMTgifV0sWyJwYXRoIix7ZDoibTkgMTYgMy0zIDMgMyJ9XV19KTt2YXIgajYsU2plPWcoKCk9PntqNj1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNMTQgOWgxIn1dLFsicGF0aCIse2Q6Ik0xOSA5aDIifV0sWyJwYXRoIix7ZDoiTTMgOWgyIn1dLFsicGF0aCIse2Q6Ik05IDloMSJ9XV19KTt2YXIgbUgsX2plPWcoKCk9PnttSD1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNMyA5aDE4In1dLFsicGF0aCIse2Q6Im0xNSAxNC0zIDMtMy0zIn1dXX0pO3ZhciBnSCxNamU9ZygoKT0+e2dIPVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik0zIDloMTgifV1dfSk7dmFyIGJILHpqZT1nKCgpPT57Ykg9W1sicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiMyIscng6IjIifV0sWyJwYXRoIix7ZDoiTTkgM3YxOCJ9XSxbInBhdGgiLHtkOiJNOSAxNWgxMiJ9XV19KTt2YXIgdkgsQ2plPWcoKCk9Pnt2SD1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNMyAxNWgxMiJ9XSxbInBhdGgiLHtkOiJNMTUgM3YxOCJ9XV19KTt2YXIgVjYsVGplPWcoKCk9PntWNj1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNMyA5aDE4In1dLFsicGF0aCIse2Q6Ik05IDIxVjkifV1dfSk7dmFyIHhILCRqZT1nKCgpPT57eEg9W1sicGF0aCIse2Q6Im0xNiA2LTguNDE0IDguNTg2YTIgMiAwIDAgMCAyLjgyOSAyLjgyOWw4LjQxNC04LjU4NmE0IDQgMCAxIDAtNS42NTctNS42NTdsLTguMzc5IDguNTUxYTYgNiAwIDEgMCA4LjQ4NSA4LjQ4NWw4LjM3OS04LjU1MSJ9XV19KTt2YXIgeUgsRGplPWcoKCk9Pnt5SD1bWyJwYXRoIix7ZDoiTTggMjFzLTQtMy00LTkgNC05IDQtOSJ9XSxbInBhdGgiLHtkOiJNMTYgM3M0IDMgNCA5LTQgOS00IDkifV1dfSk7dmFyIHdILExqZT1nKCgpPT57d0g9W1sicGF0aCIse2Q6Ik0xMSAxNWgyIn1dLFsicGF0aCIse2Q6Ik0xMiAxMnYzIn1dLFsicGF0aCIse2Q6Ik0xMiAxOXYzIn1dLFsicGF0aCIse2Q6Ik0xNS4yODIgMTlhMSAxIDAgMCAwIC45NDgtLjY4bDIuMzctNi45ODhhNyA3IDAgMSAwLTEzLjIgMGwyLjM3IDYuOTg4YTEgMSAwIDAgMCAuOTQ4LjY4eiJ9XSxbInBhdGgiLHtkOiJNOSA5YTMgMyAwIDEgMSA2IDAifV1dfSk7dmFyIGtILEVqZT1nKCgpPT57a0g9W1sicmVjdCIse3g6IjE0Iix5OiIzIix3aWR0aDoiNSIsaGVpZ2h0OiIxOCIscng6IjEifV0sWyJyZWN0Iix7eDoiNSIseToiMyIsd2lkdGg6IjUiLGhlaWdodDoiMTgiLHJ4OiIxIn1dXX0pO3ZhciBTSCxQamU9ZygoKT0+e1NIPVtbInBhdGgiLHtkOiJNNS44IDExLjMgMiAyMmwxMC43LTMuNzkifV0sWyJwYXRoIix7ZDoiTTQgM2guMDEifV0sWyJwYXRoIix7ZDoiTTIyIDhoLjAxIn1dLFsicGF0aCIse2Q6Ik0xNSAyaC4wMSJ9XSxbInBhdGgiLHtkOiJNMjIgMjBoLjAxIn1dLFsicGF0aCIse2Q6Im0yMiAyLTIuMjQuNzVhMi45IDIuOSAwIDAgMC0xLjk2IDMuMTJjLjEuODYtLjU3IDEuNjMtMS40NSAxLjYzaC0uMzhjLS44NiAwLTEuNi42LTEuNzYgMS40NEwxNCAxMCJ9XSxbInBhdGgiLHtkOiJtMjIgMTMtLjgyLS4zM2MtLjg2LS4zNC0xLjgyLjItMS45OCAxLjExYy0uMTEuNy0uNzIgMS4yMi0xLjQzIDEuMjJIMTcifV0sWyJwYXRoIix7ZDoibTExIDIgLjMzLjgyYy4zNC44Ni0uMiAxLjgyLTEuMTEgMS45OEM5LjUyIDQuOSA5IDUuNTIgOSA2LjIzVjcifV0sWyJwYXRoIix7ZDoiTTExIDEzYzEuOTMgMS45MyAyLjgzIDQuMTcgMiA1LS44My44My0zLjA3LS4wNy01LTItMS45My0xLjkzLTIuODMtNC4xNy0yLTUgLjgzLS44MyAzLjA3LjA3IDUgMloifV1dfSk7dmFyIF9ILElqZT1nKCgpPT57X0g9W1siY2lyY2xlIix7Y3g6IjExIixjeToiNCIscjoiMiJ9XSxbImNpcmNsZSIse2N4OiIxOCIsY3k6IjgiLHI6IjIifV0sWyJjaXJjbGUiLHtjeDoiMjAiLGN5OiIxNiIscjoiMiJ9XSxbInBhdGgiLHtkOiJNOSAxMGE1IDUgMCAwIDEgNSA1djMuNWEzLjUgMy41IDAgMCAxLTYuODQgMS4wNDVRNi41MiAxNy40OCA0LjQ2IDE2Ljg0QTMuNSAzLjUgMCAwIDEgNS41IDEwWiJ9XV19KTt2YXIgTUgsQWplPWcoKCk9PntNSD1bWyJyZWN0Iix7d2lkdGg6IjE0IixoZWlnaHQ6IjIwIix4OiI1Iix5OiIyIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNMTUgMTRoLjAxIn1dLFsicGF0aCIse2Q6Ik05IDZoNiJ9XSxbInBhdGgiLHtkOiJNOSAxMGg2In1dXX0pO3ZhciBVNixOamU9ZygoKT0+e1U2PVtbInBhdGgiLHtkOiJNMTMgMjFoOCJ9XSxbInBhdGgiLHtkOiJNMjEuMTc0IDYuODEyYTEgMSAwIDAgMC0zLjk4Ni0zLjk4N0wzLjg0MiAxNi4xNzRhMiAyIDAgMCAwLS41LjgzbC0xLjMyMSA0LjM1MmEuNS41IDAgMCAwIC42MjMuNjIybDQuMzUzLTEuMzJhMiAyIDAgMCAwIC44My0uNDk3eiJ9XV19KTt2YXIgekgsUmplPWcoKCk9Pnt6SD1bWyJwYXRoIix7ZDoibTEwIDEwLTYuMTU3IDYuMTYyYTIgMiAwIDAgMC0uNS44MzNsLTEuMzIyIDQuMzZhLjUuNSAwIDAgMCAuNjIyLjYyNGw0LjM1OC0xLjMyM2EyIDIgMCAwIDAgLjgzLS41TDE0IDEzLjk4MiJ9XSxbInBhdGgiLHtkOiJtMTIuODI5IDcuMTcyIDQuMzU5LTQuMzQ2YTEgMSAwIDEgMSAzLjk4NiAzLjk4NmwtNC4zNTMgNC4zNTMifV0sWyJwYXRoIix7ZDoibTIgMiAyMCAyMCJ9XV19KTt2YXIgVzYsT2plPWcoKCk9PntXNj1bWyJwYXRoIix7ZDoiTTIxLjE3NCA2LjgxMmExIDEgMCAwIDAtMy45ODYtMy45ODdMMy44NDIgMTYuMTc0YTIgMiAwIDAgMC0uNS44M2wtMS4zMjEgNC4zNTJhLjUuNSAwIDAgMCAuNjIzLjYyMmw0LjM1My0xLjMyYTIgMiAwIDAgMCAuODMtLjQ5N3oifV1dfSk7dmFyIENILEZqZT1nKCgpPT57Q0g9W1sicGF0aCIse2Q6Ik0xNS43MDcgMjEuMjkzYTEgMSAwIDAgMS0xLjQxNCAwbC0xLjU4Ni0xLjU4NmExIDEgMCAwIDEgMC0xLjQxNGw1LjU4Ni01LjU4NmExIDEgMCAwIDEgMS40MTQgMGwxLjU4NiAxLjU4NmExIDEgMCAwIDEgMCAxLjQxNHoifV0sWyJwYXRoIix7ZDoibTE4IDEzLTEuMzc1LTYuODc0YTEgMSAwIDAgMC0uNzQ2LS43NzZMMy4yMzUgMi4wMjhhMSAxIDAgMCAwLTEuMjA3IDEuMjA3TDUuMzUgMTUuODc5YTEgMSAwIDAgMCAuNzc2Ljc0NkwxMyAxOCJ9XSxbInBhdGgiLHtkOiJtMi4zIDIuMyA3LjI4NiA3LjI4NiJ9XSxbImNpcmNsZSIse2N4OiIxMSIsY3k6IjExIixyOiIyIn1dXX0pO3ZhciBUSCxCamU9ZygoKT0+e1RIPVtbInBhdGgiLHtkOiJNMTMgMjFoOCJ9XSxbInBhdGgiLHtkOiJtMTUgNSA0IDQifV0sWyJwYXRoIix7ZDoiTTIxLjE3NCA2LjgxMmExIDEgMCAwIDAtMy45ODYtMy45ODdMMy44NDIgMTYuMTc0YTIgMiAwIDAgMC0uNS44M2wtMS4zMjEgNC4zNTJhLjUuNSAwIDAgMCAuNjIzLjYyMmw0LjM1My0xLjMyYTIgMiAwIDAgMCAuODMtLjQ5N3oifV1dfSk7dmFyICRILEhqZT1nKCgpPT57JEg9W1sicGF0aCIse2Q6Im0xMCAxMC02LjE1NyA2LjE2MmEyIDIgMCAwIDAtLjUuODMzbC0xLjMyMiA0LjM2YS41LjUgMCAwIDAgLjYyMi42MjRsNC4zNTgtMS4zMjNhMiAyIDAgMCAwIC44My0uNUwxNCAxMy45ODIifV0sWyJwYXRoIix7ZDoibTEyLjgyOSA3LjE3MiA0LjM1OS00LjM0NmExIDEgMCAxIDEgMy45ODYgMy45ODZsLTQuMzUzIDQuMzUzIn1dLFsicGF0aCIse2Q6Im0xNSA1IDQgNCJ9XSxbInBhdGgiLHtkOiJtMiAyIDIwIDIwIn1dXX0pO3ZhciBESCxxamU9ZygoKT0+e0RIPVtbInBhdGgiLHtkOiJNMjEuMTc0IDYuODEyYTEgMSAwIDAgMC0zLjk4Ni0zLjk4N0wzLjg0MiAxNi4xNzRhMiAyIDAgMCAwLS41LjgzbC0xLjMyMSA0LjM1MmEuNS41IDAgMCAwIC42MjMuNjIybDQuMzUzLTEuMzJhMiAyIDAgMCAwIC44My0uNDk3eiJ9XSxbInBhdGgiLHtkOiJtMTUgNSA0IDQifV1dfSk7dmFyIExILGpqZT1nKCgpPT57TEg9W1sicGF0aCIse2Q6Ik0xMyA3IDguNyAyLjdhMi40MSAyLjQxIDAgMCAwLTMuNCAwTDIuNyA1LjNhMi40MSAyLjQxIDAgMCAwIDAgMy40TDcgMTMifV0sWyJwYXRoIix7ZDoibTggNiAyLTIifV0sWyJwYXRoIix7ZDoibTE4IDE2IDItMiJ9XSxbInBhdGgiLHtkOiJtMTcgMTEgNC4zIDQuM2MuOTQuOTQuOTQgMi40NiAwIDMuNGwtMi42IDIuNmMtLjk0Ljk0LTIuNDYuOTQtMy40IDBMMTEgMTcifV0sWyJwYXRoIix7ZDoiTTIxLjE3NCA2LjgxMmExIDEgMCAwIDAtMy45ODYtMy45ODdMMy44NDIgMTYuMTc0YTIgMiAwIDAgMC0uNS44M2wtMS4zMjEgNC4zNTJhLjUuNSAwIDAgMCAuNjIzLjYyMmw0LjM1My0xLjMyYTIgMiAwIDAgMCAuODMtLjQ5N3oifV0sWyJwYXRoIix7ZDoibTE1IDUgNCA0In1dXX0pO3ZhciBFSCxWamU9ZygoKT0+e0VIPVtbInBhdGgiLHtkOiJNMTAuODMgMi4zOGEyIDIgMCAwIDEgMi4zNCAwbDggNS43NGEyIDIgMCAwIDEgLjczIDIuMjVsLTMuMDQgOS4yNmEyIDIgMCAwIDEtMS45IDEuMzdINy4wNGEyIDIgMCAwIDEtMS45LTEuMzdMMi4xIDEwLjM3YTIgMiAwIDAgMSAuNzMtMi4yNXoifV1dfSk7dmFyIFBILFVqZT1nKCgpPT57UEg9W1sibGluZSIse3gxOiIxOSIseDI6IjUiLHkxOiI1Iix5MjoiMTkifV0sWyJjaXJjbGUiLHtjeDoiNi41IixjeToiNi41IixyOiIyLjUifV0sWyJjaXJjbGUiLHtjeDoiMTcuNSIsY3k6IjE3LjUiLHI6IjIuNSJ9XV19KTt2YXIgSUgsV2plPWcoKCk9PntJSD1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiI1IixyOiIxIn1dLFsicGF0aCIse2Q6Im05IDIwIDMtNiAzIDYifV0sWyJwYXRoIix7ZDoibTYgOCA2IDIgNi0yIn1dLFsicGF0aCIse2Q6Ik0xMiAxMHY0In1dXX0pO3ZhciBBSCxHamU9ZygoKT0+e0FIPVtbInBhdGgiLHtkOiJNMjAgMTFINCJ9XSxbInBhdGgiLHtkOiJNMjAgN0g0In1dLFsicGF0aCIse2Q6Ik03IDIxVjRhMSAxIDAgMCAxIDEtMWg0YTEgMSAwIDAgMSAwIDEySDcifV1dfSk7dmFyIE5ILEtqZT1nKCgpPT57Tkg9W1sicGF0aCIse2Q6Ik0xMyAyYTkgOSAwIDAgMSA5IDkifV0sWyJwYXRoIix7ZDoiTTEzIDZhNSA1IDAgMCAxIDUgNSJ9XSxbInBhdGgiLHtkOiJNMTMuODMyIDE2LjU2OGExIDEgMCAwIDAgMS4yMTMtLjMwM2wuMzU1LS40NjVBMiAyIDAgMCAxIDE3IDE1aDNhMiAyIDAgMCAxIDIgMnYzYTIgMiAwIDAgMS0yIDJBMTggMTggMCAwIDEgMiA0YTIgMiAwIDAgMSAyLTJoM2EyIDIgMCAwIDEgMiAydjNhMiAyIDAgMCAxLS44IDEuNmwtLjQ2OC4zNTFhMSAxIDAgMCAwLS4yOTIgMS4yMzMgMTQgMTQgMCAwIDAgNi4zOTIgNi4zODQifV1dfSk7dmFyIFJILFlqZT1nKCgpPT57Ukg9W1sicGF0aCIse2Q6Ik0xNCA2aDgifV0sWyJwYXRoIix7ZDoibTE4IDIgNCA0LTQgNCJ9XSxbInBhdGgiLHtkOiJNMTMuODMyIDE2LjU2OGExIDEgMCAwIDAgMS4yMTMtLjMwM2wuMzU1LS40NjVBMiAyIDAgMCAxIDE3IDE1aDNhMiAyIDAgMCAxIDIgMnYzYTIgMiAwIDAgMS0yIDJBMTggMTggMCAwIDEgMiA0YTIgMiAwIDAgMSAyLTJoM2EyIDIgMCAwIDEgMiAydjNhMiAyIDAgMCAxLS44IDEuNmwtLjQ2OC4zNTFhMSAxIDAgMCAwLS4yOTIgMS4yMzMgMTQgMTQgMCAwIDAgNi4zOTIgNi4zODQifV1dfSk7dmFyIE9ILFpqZT1nKCgpPT57T0g9W1sicGF0aCIse2Q6Ik0xNiAydjZoNiJ9XSxbInBhdGgiLHtkOiJtMjIgMi02IDYifV0sWyJwYXRoIix7ZDoiTTEzLjgzMiAxNi41NjhhMSAxIDAgMCAwIDEuMjEzLS4zMDNsLjM1NS0uNDY1QTIgMiAwIDAgMSAxNyAxNWgzYTIgMiAwIDAgMSAyIDJ2M2EyIDIgMCAwIDEtMiAyQTE4IDE4IDAgMCAxIDIgNGEyIDIgMCAwIDEgMi0yaDNhMiAyIDAgMCAxIDIgMnYzYTIgMiAwIDAgMS0uOCAxLjZsLS40NjguMzUxYTEgMSAwIDAgMC0uMjkyIDEuMjMzIDE0IDE0IDAgMCAwIDYuMzkyIDYuMzg0In1dXX0pO3ZhciBGSCxYamU9ZygoKT0+e0ZIPVtbInBhdGgiLHtkOiJtMTYgMiA2IDYifV0sWyJwYXRoIix7ZDoibTIyIDItNiA2In1dLFsicGF0aCIse2Q6Ik0xMy44MzIgMTYuNTY4YTEgMSAwIDAgMCAxLjIxMy0uMzAzbC4zNTUtLjQ2NUEyIDIgMCAwIDEgMTcgMTVoM2EyIDIgMCAwIDEgMiAydjNhMiAyIDAgMCAxLTIgMkExOCAxOCAwIDAgMSAyIDRhMiAyIDAgMCAxIDItMmgzYTIgMiAwIDAgMSAyIDJ2M2EyIDIgMCAwIDEtLjggMS42bC0uNDY4LjM1MWExIDEgMCAwIDAtLjI5MiAxLjIzMyAxNCAxNCAwIDAgMCA2LjM5MiA2LjM4NCJ9XV19KTt2YXIgQkgsUWplPWcoKCk9PntCSD1bWyJwYXRoIix7ZDoiTTEwLjEgMTMuOWExNCAxNCAwIDAgMCAzLjczMiAyLjY2OCAxIDEgMCAwIDAgMS4yMTMtLjMwM2wuMzU1LS40NjVBMiAyIDAgMCAxIDE3IDE1aDNhMiAyIDAgMCAxIDIgMnYzYTIgMiAwIDAgMS0yIDIgMTggMTggMCAwIDEtMTIuNzI4LTUuMjcyIn1dLFsicGF0aCIse2Q6Ik0yMiAyIDIgMjIifV0sWyJwYXRoIix7ZDoiTTQuNzYgMTMuNTgyQTE4IDE4IDAgMCAxIDIgNGEyIDIgMCAwIDEgMi0yaDNhMiAyIDAgMCAxIDIgMnYzYTIgMiAwIDAgMS0uOCAxLjZsLS40NjguMzUxYTEgMSAwIDAgMC0uMjkyIDEuMjMzIDE0IDE0IDAgMCAwIC4yNDQuNDczIn1dXX0pO3ZhciBISCxKamU9ZygoKT0+e0hIPVtbInBhdGgiLHtkOiJtMTYgOCA2LTYifV0sWyJwYXRoIix7ZDoiTTIyIDhWMmgtNiJ9XSxbInBhdGgiLHtkOiJNMTMuODMyIDE2LjU2OGExIDEgMCAwIDAgMS4yMTMtLjMwM2wuMzU1LS40NjVBMiAyIDAgMCAxIDE3IDE1aDNhMiAyIDAgMCAxIDIgMnYzYTIgMiAwIDAgMS0yIDJBMTggMTggMCAwIDEgMiA0YTIgMiAwIDAgMSAyLTJoM2EyIDIgMCAwIDEgMiAydjNhMiAyIDAgMCAxLS44IDEuNmwtLjQ2OC4zNTFhMSAxIDAgMCAwLS4yOTIgMS4yMzMgMTQgMTQgMCAwIDAgNi4zOTIgNi4zODQifV1dfSk7dmFyIHFILGVWZT1nKCgpPT57cUg9W1sibGluZSIse3gxOiI5Iix4MjoiOSIseTE6IjQiLHkyOiIyMCJ9XSxbInBhdGgiLHtkOiJNNCA3YzAtMS43IDEuMy0zIDMtM2gxMyJ9XSxbInBhdGgiLHtkOiJNMTggMjBjLTEuNyAwLTMtMS4zLTMtM1Y0In1dXX0pO3ZhciBqSCx0VmU9ZygoKT0+e2pIPVtbInBhdGgiLHtkOiJNMTMuODMyIDE2LjU2OGExIDEgMCAwIDAgMS4yMTMtLjMwM2wuMzU1LS40NjVBMiAyIDAgMCAxIDE3IDE1aDNhMiAyIDAgMCAxIDIgMnYzYTIgMiAwIDAgMS0yIDJBMTggMTggMCAwIDEgMiA0YTIgMiAwIDAgMSAyLTJoM2EyIDIgMCAwIDEgMiAydjNhMiAyIDAgMCAxLS44IDEuNmwtLjQ2OC4zNTFhMSAxIDAgMCAwLS4yOTIgMS4yMzMgMTQgMTQgMCAwIDAgNi4zOTIgNi4zODQifV1dfSk7dmFyIFZILGFWZT1nKCgpPT57Vkg9W1sicGF0aCIse2Q6Ik0xOC41IDhjLTEuNCAwLTIuNi0uOC0zLjItMkE2Ljg3IDYuODcgMCAwIDAgMiA5djExYTIgMiAwIDAgMCAyIDJoMTZhMiAyIDAgMCAwIDItMnYtOC41QzIyIDkuNiAyMC40IDggMTguNSA4In1dLFsicGF0aCIse2Q6Ik0yIDE0aDIwIn1dLFsicGF0aCIse2Q6Ik02IDE0djQifV0sWyJwYXRoIix7ZDoiTTEwIDE0djQifV0sWyJwYXRoIix7ZDoiTTE0IDE0djQifV0sWyJwYXRoIix7ZDoiTTE4IDE0djQifV1dfSk7dmFyIFVILHNWZT1nKCgpPT57VUg9W1sicGF0aCIse2Q6Im0xNCAxMy04LjM4MSA4LjM4YTEgMSAwIDAgMS0zLjAwMS0zTDExIDkuOTk5In1dLFsicGF0aCIse2Q6Ik0xNS45NzMgNC4wMjdBMTMgMTMgMCAwIDAgNS45MDIgMi4zNzNjLTEuMzk4LjM0Mi0xLjA5MiAyLjE1OC4yNzcgMi42MDFhMTkuOSAxOS45IDAgMCAxIDUuODIyIDMuMDI0In1dLFsicGF0aCIse2Q6Ik0xNi4wMDEgMTEuOTk5YTE5LjkgMTkuOSAwIDAgMSAzLjAyNCA1LjgyNGMuNDQ0IDEuMzY5IDIuMjYgMS42NzYgMi42MDMuMjc4QTEzIDEzIDAgMCAwIDIwIDguMDY5In1dLFsicGF0aCIse2Q6Ik0xOC4zNTIgMy4zNTJhMS4yMDUgMS4yMDUgMCAwIDAtMS43MDQgMGwtNS4yOTYgNS4yOTZhMS4yMDUgMS4yMDUgMCAwIDAgMCAxLjcwNGwyLjI5NiAyLjI5NmExLjIwNSAxLjIwNSAwIDAgMCAxLjcwNCAwbDUuMjk2LTUuMjk2YTEuMjA1IDEuMjA1IDAgMCAwIDAtMS43MDR6In1dXX0pO3ZhciBXSCxpVmU9ZygoKT0+e1dIPVtbInBhdGgiLHtkOiJNMjEgOVY2YTIgMiAwIDAgMC0yLTJINGEyIDIgMCAwIDAtMiAydjEwYzAgMS4xLjkgMiAyIDJoNCJ9XSxbInJlY3QiLHt3aWR0aDoiMTAiLGhlaWdodDoiNyIseDoiMTIiLHk6IjEzIixyeDoiMiJ9XV19KTt2YXIgR0gsclZlPWcoKCk9PntHSD1bWyJwYXRoIix7ZDoiTTIgMTBoNlY0In1dLFsicGF0aCIse2Q6Im0yIDQgNiA2In1dLFsicGF0aCIse2Q6Ik0yMSAxMFY3YTIgMiAwIDAgMC0yLTJoLTcifV0sWyJwYXRoIix7ZDoiTTMgMTR2MmEyIDIgMCAwIDAgMiAyaDMifV0sWyJyZWN0Iix7eDoiMTIiLHk6IjE0Iix3aWR0aDoiMTAiLGhlaWdodDoiNyIscng6IjEifV1dfSk7dmFyIEtILG9WZT1nKCgpPT57S0g9W1sicGF0aCIse2Q6Ik0xMSAxN2gzdjJhMSAxIDAgMCAwIDEgMWgyYTEgMSAwIDAgMCAxLTF2LTNhMy4xNiAzLjE2IDAgMCAwIDItMmgxYTEgMSAwIDAgMCAxLTF2LTJhMSAxIDAgMCAwLTEtMWgtMWE1IDUgMCAwIDAtMi00VjNhNCA0IDAgMCAwLTMuMiAxLjZsLS4zLjRIMTFhNiA2IDAgMCAwLTYgNnYxYTUgNSAwIDAgMCAyIDR2M2ExIDEgMCAwIDAgMSAxaDJhMSAxIDAgMCAwIDEtMXoifV0sWyJwYXRoIix7ZDoiTTE2IDEwaC4wMSJ9XSxbInBhdGgiLHtkOiJNMiA4djFhMiAyIDAgMCAwIDIgMmgxIn1dXX0pO3ZhciBZSCxuVmU9ZygoKT0+e1lIPVtbInBhdGgiLHtkOiJNMTQgM3YxMSJ9XSxbInBhdGgiLHtkOiJNMTQgOWgtM2EzIDMgMCAwIDEgMC02aDkifV0sWyJwYXRoIix7ZDoiTTE4IDN2MTEifV0sWyJwYXRoIix7ZDoiTTIyIDE4SDJsNC00In1dLFsicGF0aCIse2Q6Im02IDIyLTQtNCJ9XV19KTt2YXIgWkgsbFZlPWcoKCk9PntaSD1bWyJwYXRoIix7ZDoiTTEwIDN2MTEifV0sWyJwYXRoIix7ZDoiTTEwIDlIN2ExIDEgMCAwIDEgMC02aDgifV0sWyJwYXRoIix7ZDoiTTE0IDN2MTEifV0sWyJwYXRoIix7ZDoibTE4IDE0IDQgNEgyIn1dLFsicGF0aCIse2Q6Im0yMiAxOC00IDQifV1dfSk7dmFyIFhILGNWZT1nKCgpPT57WEg9W1sicGF0aCIse2Q6Ik0xMyA0djE2In1dLFsicGF0aCIse2Q6Ik0xNyA0djE2In1dLFsicGF0aCIse2Q6Ik0xOSA0SDkuNWE0LjUgNC41IDAgMCAwIDAgOUgxMyJ9XV19KTt2YXIgUUgsZFZlPWcoKCk9PntRSD1bWyJwYXRoIix7ZDoiTTE4IDExaC00YTEgMSAwIDAgMC0xIDF2NWExIDEgMCAwIDAgMSAxaDQifV0sWyJwYXRoIix7ZDoiTTYgN3YxM2EyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlY3In1dLFsicmVjdCIse3dpZHRoOiIxNiIsaGVpZ2h0OiI1Iix4OiI0Iix5OiIyIixyeDoiMSJ9XV19KTt2YXIgSkgsdVZlPWcoKCk9PntKSD1bWyJwYXRoIix7ZDoiTTEyIDE3djUifV0sWyJwYXRoIix7ZDoiTTE1IDkuMzRWN2ExIDEgMCAwIDEgMS0xIDIgMiAwIDAgMCAwLTRINy44OSJ9XSxbInBhdGgiLHtkOiJtMiAyIDIwIDIwIn1dLFsicGF0aCIse2Q6Ik05IDl2MS43NmEyIDIgMCAwIDEtMS4xMSAxLjc5bC0xLjc4LjlBMiAyIDAgMCAwIDUgMTUuMjRWMTZhMSAxIDAgMCAwIDEgMWgxMSJ9XV19KTt2YXIgZXEscFZlPWcoKCk9PntlcT1bWyJwYXRoIix7ZDoibTEwLjUgMjAuNSAxMC0xMGE0Ljk1IDQuOTUgMCAxIDAtNy03bC0xMCAxMGE0Ljk1IDQuOTUgMCAxIDAgNyA3WiJ9XSxbInBhdGgiLHtkOiJtOC41IDguNSA3IDcifV1dfSk7dmFyIHRxLGhWZT1nKCgpPT57dHE9W1sicGF0aCIse2Q6Ik0xMiAxN3Y1In1dLFsicGF0aCIse2Q6Ik05IDEwLjc2YTIgMiAwIDAgMS0xLjExIDEuNzlsLTEuNzguOUEyIDIgMCAwIDAgNSAxNS4yNFYxNmExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTF2LS43NmEyIDIgMCAwIDAtMS4xMS0xLjc5bC0xLjc4LS45QTIgMiAwIDAgMSAxNSAxMC43NlY3YTEgMSAwIDAgMSAxLTEgMiAyIDAgMCAwIDAtNEg4YTIgMiAwIDAgMCAwIDQgMSAxIDAgMCAxIDEgMXoifV1dfSk7dmFyIGFxLGZWZT1nKCgpPT57YXE9W1sicGF0aCIse2Q6Im0xMiA5LTguNDE0IDguNDE0QTIgMiAwIDAgMCAzIDE4LjgyOHYxLjM0NGEyIDIgMCAwIDEtLjU4NiAxLjQxNEEyIDIgMCAwIDEgMy44MjggMjFoMS4zNDRhMiAyIDAgMCAwIDEuNDE0LS41ODZMMTUgMTIifV0sWyJwYXRoIix7ZDoibTE4IDkgLjQuNGExIDEgMCAxIDEtMyAzbC0zLjgtMy44YTEgMSAwIDEgMSAzLTNsLjQuNCAzLjQtMy40YTEgMSAwIDEgMSAzIDN6In1dLFsicGF0aCIse2Q6Im0yIDIyIC40MTQtLjQxNCJ9XV19KTt2YXIgc3EsbVZlPWcoKCk9PntzcT1bWyJwYXRoIix7ZDoibTEyIDE0LTEgMSJ9XSxbInBhdGgiLHtkOiJtMTMuNzUgMTguMjUtMS4yNSAxLjQyIn1dLFsicGF0aCIse2Q6Ik0xNy43NzUgNS42NTRhMTUuNjggMTUuNjggMCAwIDAtMTIuMTIxIDEyLjEyIn1dLFsicGF0aCIse2Q6Ik0xOC44IDkuM2ExIDEgMCAwIDAgMi4xIDcuNyJ9XSxbInBhdGgiLHtkOiJNMjEuOTY0IDIwLjczMmExIDEgMCAwIDEtMS4yMzIgMS4yMzJsLTE4LTVhMSAxIDAgMCAxLS42OTUtMS4yMzJBMTkuNjggMTkuNjggMCAwIDEgMTUuNzMyIDIuMDM3YTEgMSAwIDAgMSAxLjIzMi42OTV6In1dXX0pO3ZhciBpcSxnVmU9ZygoKT0+e2lxPVtbInBhdGgiLHtkOiJNMiAyMmgyMCJ9XSxbInBhdGgiLHtkOiJNMy43NyAxMC43NyAyIDlsMi00LjUgMS4xLjU1Yy41NS4yOC45Ljg0LjkgMS40NXMuMzUgMS4xNy45IDEuNDVMOCA4LjVsMy02IDEuMDUuNTNhMiAyIDAgMCAxIDEuMDkgMS41MmwuNzIgNS40YTIgMiAwIDAgMCAxLjA5IDEuNTJsNC40IDIuMmMuNDIuMjIuNzguNTUgMS4wMS45NmwuNiAxLjAzYy40OS44OC0uMDYgMS45OC0xLjA2IDIuMWwtMS4xOC4xNWMtLjQ3LjA2LS45NS0uMDItMS4zNy0uMjRMNC4yOSAxMS4xNWEyIDIgMCAwIDEtLjUyLS4zOFoifV1dfSk7dmFyIHJxLGJWZT1nKCgpPT57cnE9W1sicGF0aCIse2Q6Ik0yIDIyaDIwIn1dLFsicGF0aCIse2Q6Ik02LjM2IDE3LjQgNCAxN2wtMi00IDEuMS0uNTVhMiAyIDAgMCAxIDEuOCAwbC4xNy4xYTIgMiAwIDAgMCAxLjggMEw4IDEyIDUgNmwuOS0uNDVhMiAyIDAgMCAxIDIuMDkuMmw0LjAyIDNhMiAyIDAgMCAwIDIuMS4ybDQuMTktMi4wNmEyLjQxIDIuNDEgMCAwIDEgMS43My0uMTdMMjEgN2ExLjQgMS40IDAgMCAxIC44NyAxLjk5bC0uMzguNzZjLS4yMy40Ni0uNi44NC0xLjA3IDEuMDhMNy41OCAxNy4yYTIgMiAwIDAgMS0xLjIyLjE4WiJ9XV19KTt2YXIgb3EsdlZlPWcoKCk9PntvcT1bWyJwYXRoIix7ZDoiTTE3LjggMTkuMiAxNiAxMWwzLjUtMy41QzIxIDYgMjEuNSA0IDIxIDNjLTEtLjUtMyAwLTQuNSAxLjVMMTMgOCA0LjggNi4yYy0uNS0uMS0uOS4xLTEuMS41bC0uMy41Yy0uMi41LS4xIDEgLjMgMS4zTDkgMTJsLTIgM0g0bC0xIDEgMyAyIDIgMyAxLTF2LTNsMy0yIDMuNSA1LjNjLjMuNC44LjUgMS4zLjNsLjUtLjJjLjQtLjMuNi0uNy41LTEuMnoifV1dfSk7dmFyIG5xLHhWZT1nKCgpPT57bnE9W1sicGF0aCIse2Q6Ik01IDVhMiAyIDAgMCAxIDMuMDA4LTEuNzI4bDExLjk5NyA2Ljk5OGEyIDIgMCAwIDEgLjAwMyAzLjQ1OGwtMTIgN0EyIDIgMCAwIDEgNSAxOXoifV1dfSk7dmFyIGxxLHlWZT1nKCgpPT57bHE9W1sicGF0aCIse2Q6Ik05IDJ2NiJ9XSxbInBhdGgiLHtkOiJNMTUgMnY2In1dLFsicGF0aCIse2Q6Ik0xMiAxN3Y1In1dLFsicGF0aCIse2Q6Ik01IDhoMTQifV0sWyJwYXRoIix7ZDoiTTYgMTFWOGgxMnYzYTYgNiAwIDEgMS0xMiAwWiJ9XV19KTt2YXIgRzYsd1ZlPWcoKCk9PntHNj1bWyJwYXRoIix7ZDoiTTYuMyAyMC4zYTIuNCAyLjQgMCAwIDAgMy40IDBMMTIgMThsLTYtNi0yLjMgMi4zYTIuNCAyLjQgMCAwIDAgMCAzLjRaIn1dLFsicGF0aCIse2Q6Im0yIDIyIDMtMyJ9XSxbInBhdGgiLHtkOiJNNy41IDEzLjUgMTAgMTEifV0sWyJwYXRoIix7ZDoiTTEwLjUgMTYuNSAxMyAxNCJ9XSxbInBhdGgiLHtkOiJtMTggMy00IDRoNmwtNCA0In1dXX0pO3ZhciBjcSxrVmU9ZygoKT0+e2NxPVtbInBhdGgiLHtkOiJNMTIgMjJ2LTUifV0sWyJwYXRoIix7ZDoiTTE1IDhWMiJ9XSxbInBhdGgiLHtkOiJNMTcgOGExIDEgMCAwIDEgMSAxdjRhNCA0IDAgMCAxLTQgNGgtNGE0IDQgMCAwIDEtNC00VjlhMSAxIDAgMCAxIDEtMXoifV0sWyJwYXRoIix7ZDoiTTkgOFYyIn1dXX0pO3ZhciBkcSxTVmU9ZygoKT0+e2RxPVtbInBhdGgiLHtkOiJNNSAxMmgxNCJ9XSxbInBhdGgiLHtkOiJNMTIgNXYxNCJ9XV19KTt2YXIgdXEsX1ZlPWcoKCk9Pnt1cT1bWyJwYXRoIix7ZDoiTTMgMnYxYzAgMSAyIDEgMiAyUzMgNiAzIDdzMiAxIDIgMi0yIDEtMiAyIDIgMSAyIDIifV0sWyJwYXRoIix7ZDoiTTE4IDZoLjAxIn1dLFsicGF0aCIse2Q6Ik02IDE4aC4wMSJ9XSxbInBhdGgiLHtkOiJNMjAuODMgOC44M2E0IDQgMCAwIDAtNS42Ni01LjY2bC0xMiAxMmE0IDQgMCAxIDAgNS42NiA1LjY2WiJ9XSxbInBhdGgiLHtkOiJNMTggMTEuNjZWMjJhNCA0IDAgMCAwIDQtNFY2In1dXX0pO3ZhciBwcSxNVmU9ZygoKT0+e3BxPVtbInBhdGgiLHtkOiJNMTMgMTdhMSAxIDAgMSAwLTIgMGwuNSA0LjVhMC41IDAuNSAwIDAgMCAxIDB6IixmaWxsOiJjdXJyZW50Q29sb3IifV0sWyJwYXRoIix7ZDoiTTE2Ljg1IDE4LjU4YTkgOSAwIDEgMC05LjcgMCJ9XSxbInBhdGgiLHtkOiJNOCAxNGE1IDUgMCAxIDEgOCAwIn1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiMTEiLHI6IjEiLGZpbGw6ImN1cnJlbnRDb2xvciJ9XV19KTt2YXIgaHEselZlPWcoKCk9PntocT1bWyJwYXRoIix7ZDoiTTIyIDE0YTggOCAwIDAgMS04IDgifV0sWyJwYXRoIix7ZDoiTTE4IDExdi0xYTIgMiAwIDAgMC0yLTJhMiAyIDAgMCAwLTIgMiJ9XSxbInBhdGgiLHtkOiJNMTQgMTBWOWEyIDIgMCAwIDAtMi0yYTIgMiAwIDAgMC0yIDJ2MSJ9XSxbInBhdGgiLHtkOiJNMTAgOS41VjRhMiAyIDAgMCAwLTItMmEyIDIgMCAwIDAtMiAydjEwIn1dLFsicGF0aCIse2Q6Ik0xOCAxMWEyIDIgMCAxIDEgNCAwdjNhOCA4IDAgMCAxLTggOGgtMmMtMi44IDAtNC41LS44Ni01Ljk5LTIuMzRsLTMuNi0zLjZhMiAyIDAgMCAxIDIuODMtMi44Mkw3IDE1In1dXX0pO3ZhciBmcSxDVmU9ZygoKT0+e2ZxPVtbInBhdGgiLHtkOiJNMTAgNC41VjRhMiAyIDAgMCAwLTIuNDEtMS45NTcifV0sWyJwYXRoIix7ZDoiTTEzLjkgOC40YTIgMiAwIDAgMC0xLjI2LTEuMjk1In1dLFsicGF0aCIse2Q6Ik0yMS43IDE2LjJBOCA4IDAgMCAwIDIyIDE0di0zYTIgMiAwIDEgMC00IDB2LTFhMiAyIDAgMCAwLTMuNjMtMS4xNTgifV0sWyJwYXRoIix7ZDoibTcgMTUtMS44LTEuOGEyIDIgMCAwIDAtMi43OSAyLjg2TDYgMTkuN2E3Ljc0IDcuNzQgMCAwIDAgNiAyLjNoMmE4IDggMCAwIDAgNS42NTctMi4zNDMifV0sWyJwYXRoIix7ZDoiTTYgNnY4In1dLFsicGF0aCIse2Q6Im0yIDIgMjAgMjAifV1dfSk7dmFyIG1xLFRWZT1nKCgpPT57bXE9W1sicGF0aCIse2Q6Ik0xOCA4YTIgMiAwIDAgMCAwLTQgMiAyIDAgMCAwLTQgMCAyIDIgMCAwIDAtNCAwIDIgMiAwIDAgMC00IDAgMiAyIDAgMCAwIDAgNCJ9XSxbInBhdGgiLHtkOiJNMTAgMjIgOSA4In1dLFsicGF0aCIse2Q6Im0xNCAyMiAxLTE0In1dLFsicGF0aCIse2Q6Ik0yMCA4Yy41IDAgLjkuNC44IDFsLTIuNiAxMmMtLjEuNS0uNyAxLTEuMiAxSDdjLS42IDAtMS4xLS40LTEuMi0xTDMuMiA5Yy0uMS0uNi4zLTEgLjgtMVoifV1dfSk7dmFyIGdxLCRWZT1nKCgpPT57Z3E9W1sicGF0aCIse2Q6Ik0xOC42IDE0LjRjLjgtLjguOC0yIDAtMi44bC04LjEtOC4xYTQuOTUgNC45NSAwIDEgMC03LjEgNy4xbDguMSA4LjFjLjkuNyAyLjEuNyAyLjktLjFaIn1dLFsicGF0aCIse2Q6Im0yMiAyMi01LjUtNS41In1dXX0pO3ZhciBicSxEVmU9ZygoKT0+e2JxPVtbInBhdGgiLHtkOiJNMTggN2MwLTUuMzMzLTgtNS4zMzMtOCAwIn1dLFsicGF0aCIse2Q6Ik0xMCA3djE0In1dLFsicGF0aCIse2Q6Ik02IDIxaDEyIn1dLFsicGF0aCIse2Q6Ik02IDEzaDEwIn1dXX0pO3ZhciB2cSxMVmU9ZygoKT0+e3ZxPVtbInBhdGgiLHtkOiJNMTguMzYgNi42NEE5IDkgMCAwIDEgMjAuNzcgMTUifV0sWyJwYXRoIix7ZDoiTTYuMTYgNi4xNmE5IDkgMCAxIDAgMTIuNjggMTIuNjgifV0sWyJwYXRoIix7ZDoiTTEyIDJ2NCJ9XSxbInBhdGgiLHtkOiJtMiAyIDIwIDIwIn1dXX0pO3ZhciB4cSxFVmU9ZygoKT0+e3hxPVtbInBhdGgiLHtkOiJNMTIgMnYxMCJ9XSxbInBhdGgiLHtkOiJNMTguNCA2LjZhOSA5IDAgMSAxLTEyLjc3LjA0In1dXX0pO3ZhciB5cSxQVmU9ZygoKT0+e3lxPVtbInBhdGgiLHtkOiJNMiAzaDIwIn1dLFsicGF0aCIse2Q6Ik0yMSAzdjExYTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0yVjMifV0sWyJwYXRoIix7ZDoibTcgMjEgNS01IDUgNSJ9XV19KTt2YXIgd3EsSVZlPWcoKCk9Pnt3cT1bWyJwYXRoIix7ZDoiTTEyLjUzMSAyMkg3YTEgMSAwIDAgMS0xLTF2LTZhMSAxIDAgMCAxIDEtMWg2LjM3NyJ9XSxbInBhdGgiLHtkOiJtMTYuNSAxNi41IDUgNSJ9XSxbInBhdGgiLHtkOiJtMTYuNSAyMS41IDUtNSJ9XSxbInBhdGgiLHtkOiJNNiAxOEg0YTIgMiAwIDAgMS0yLTJ2LTVhMiAyIDAgMCAxIDItMmgxNmEyIDIgMCAwIDEgMiAydjEuNSJ9XSxbInBhdGgiLHtkOiJNNiA5VjNhMSAxIDAgMCAxIDEtMWgxMGExIDEgMCAwIDEgMSAxdjYifV1dfSk7dmFyIGtxLEFWZT1nKCgpPT57a3E9W1sicGF0aCIse2Q6Ik0xMy41IDIySDdhMSAxIDAgMCAxLTEtMXYtNmExIDEgMCAwIDEgMS0xaDEwYTEgMSAwIDAgMSAxIDF2LjUifV0sWyJwYXRoIix7ZDoibTE2IDE5IDIgMiA0LTQifV0sWyJwYXRoIix7ZDoiTTYgMThINGEyIDIgMCAwIDEtMi0ydi01YTIgMiAwIDAgMSAyLTJoMTZhMiAyIDAgMCAxIDIgMnYyIn1dLFsicGF0aCIse2Q6Ik02IDlWM2ExIDEgMCAwIDEgMS0xaDEwYTEgMSAwIDAgMSAxIDF2NiJ9XV19KTt2YXIgU3EsTlZlPWcoKCk9PntTcT1bWyJwYXRoIix7ZDoiTTYgMThINGEyIDIgMCAwIDEtMi0ydi01YTIgMiAwIDAgMSAyLTJoMTZhMiAyIDAgMCAxIDIgMnY1YTIgMiAwIDAgMS0yIDJoLTIifV0sWyJwYXRoIix7ZDoiTTYgOVYzYTEgMSAwIDAgMSAxLTFoMTBhMSAxIDAgMCAxIDEgMXY2In1dLFsicmVjdCIse3g6IjYiLHk6IjE0Iix3aWR0aDoiMTIiLGhlaWdodDoiOCIscng6IjEifV1dfSk7dmFyIF9xLFJWZT1nKCgpPT57X3E9W1sicmVjdCIse3dpZHRoOiIyMCIsaGVpZ2h0OiIxNiIseDoiMiIseToiNCIscng6IjIifV0sWyJwYXRoIix7ZDoiTTEyIDl2MTEifV0sWyJwYXRoIix7ZDoiTTIgOWgxM2EyIDIgMCAwIDEgMiAydjkifV1dfSk7dmFyIE1xLE9WZT1nKCgpPT57TXE9W1sicGF0aCIse2Q6Ik0xNS4zOSA0LjM5YTEgMSAwIDAgMCAxLjY4LS40NzQgMi41IDIuNSAwIDEgMSAzLjAxNCAzLjAxNSAxIDEgMCAwIDAtLjQ3NCAxLjY4bDEuNjgzIDEuNjgyYTIuNDE0IDIuNDE0IDAgMCAxIDAgMy40MTRMMTkuNjEgMTUuMzlhMSAxIDAgMCAxLTEuNjgtLjQ3NCAyLjUgMi41IDAgMSAwLTMuMDE0IDMuMDE1IDEgMSAwIDAgMSAuNDc0IDEuNjhsLTEuNjgzIDEuNjgyYTIuNDE0IDIuNDE0IDAgMCAxLTMuNDE0IDBMOC42MSAxOS42MWExIDEgMCAwIDAtMS42OC40NzQgMi41IDIuNSAwIDEgMS0zLjAxNC0zLjAxNSAxIDEgMCAwIDAgLjQ3NC0xLjY4bC0xLjY4My0xLjY4MmEyLjQxNCAyLjQxNCAwIDAgMSAwLTMuNDE0TDQuMzkgOC42MWExIDEgMCAwIDEgMS42OC40NzQgMi41IDIuNSAwIDEgMCAzLjAxNC0zLjAxNSAxIDEgMCAwIDEtLjQ3NC0xLjY4bDEuNjgzLTEuNjgyYTIuNDE0IDIuNDE0IDAgMCAxIDMuNDE0IDB6In1dXX0pO3ZhciB6cSxGVmU9ZygoKT0+e3pxPVtbInBhdGgiLHtkOiJNNSA3IDMgNSJ9XSxbInBhdGgiLHtkOiJNOSA2VjMifV0sWyJwYXRoIix7ZDoibTEzIDcgMi0yIn1dLFsiY2lyY2xlIix7Y3g6IjkiLGN5OiIxMyIscjoiMyJ9XSxbInBhdGgiLHtkOiJNMTEuODMgMTJIMjBhMiAyIDAgMCAxIDIgMnY0YTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0ydi00YTIgMiAwIDAgMSAyLTJoMi4xNyJ9XSxbInBhdGgiLHtkOiJNMTYgMTZoMiJ9XV19KTt2YXIgQ3EsQlZlPWcoKCk9PntDcT1bWyJwYXRoIix7ZDoiTTIuNSAxNi44OGExIDEgMCAwIDEtLjMyLTEuNDNsOS0xMy4wMmExIDEgMCAwIDEgMS42NCAwbDkgMTMuMDFhMSAxIDAgMCAxLS4zMiAxLjQ0bC04LjUxIDQuODZhMiAyIDAgMCAxLTEuOTggMFoifV0sWyJwYXRoIix7ZDoiTTEyIDJ2MjAifV1dfSk7dmFyIFRxLEhWZT1nKCgpPT57VHE9W1sicGF0aCIse2Q6Ik0xNiAzYTIgMiAwIDAgMC0yIDJ2NmEyIDIgMCAwIDAgMiAyIDEgMSAwIDAgMSAxIDF2MWEyIDIgMCAwIDEtMiAyIDEgMSAwIDAgMC0xIDF2MmExIDEgMCAwIDAgMSAxIDYgNiAwIDAgMCA2LTZWNWEyIDIgMCAwIDAtMi0yeiJ9XSxbInBhdGgiLHtkOiJNNSAzYTIgMiAwIDAgMC0yIDJ2NmEyIDIgMCAwIDAgMiAyIDEgMSAwIDAgMSAxIDF2MWEyIDIgMCAwIDEtMiAyIDEgMSAwIDAgMC0xIDF2MmExIDEgMCAwIDAgMSAxIDYgNiAwIDAgMCA2LTZWNWEyIDIgMCAwIDAtMi0yeiJ9XV19KTt2YXIgJHEscVZlPWcoKCk9PnskcT1bWyJyZWN0Iix7d2lkdGg6IjUiLGhlaWdodDoiNSIseDoiMyIseToiMyIscng6IjEifV0sWyJyZWN0Iix7d2lkdGg6IjUiLGhlaWdodDoiNSIseDoiMTYiLHk6IjMiLHJ4OiIxIn1dLFsicmVjdCIse3dpZHRoOiI1IixoZWlnaHQ6IjUiLHg6IjMiLHk6IjE2IixyeDoiMSJ9XSxbInBhdGgiLHtkOiJNMjEgMTZoLTNhMiAyIDAgMCAwLTIgMnYzIn1dLFsicGF0aCIse2Q6Ik0yMSAyMXYuMDEifV0sWyJwYXRoIix7ZDoiTTEyIDd2M2EyIDIgMCAwIDEtMiAySDcifV0sWyJwYXRoIix7ZDoiTTMgMTJoLjAxIn1dLFsicGF0aCIse2Q6Ik0xMiAzaC4wMSJ9XSxbInBhdGgiLHtkOiJNMTIgMTZ2LjAxIn1dLFsicGF0aCIse2Q6Ik0xNiAxMmgxIn1dLFsicGF0aCIse2Q6Ik0yMSAxMnYuMDEifV0sWyJwYXRoIix7ZDoiTTEyIDIxdi0xIn1dXX0pO3ZhciBEcSxqVmU9ZygoKT0+e0RxPVtbInBhdGgiLHtkOiJNMTkuMDcgNC45M0ExMCAxMCAwIDAgMCA2Ljk5IDMuMzQifV0sWyJwYXRoIix7ZDoiTTQgNmguMDEifV0sWyJwYXRoIix7ZDoiTTIuMjkgOS42MkExMCAxMCAwIDEgMCAyMS4zMSA4LjM1In1dLFsicGF0aCIse2Q6Ik0xNi4yNCA3Ljc2QTYgNiAwIDEgMCA4LjIzIDE2LjY3In1dLFsicGF0aCIse2Q6Ik0xMiAxOGguMDEifV0sWyJwYXRoIix7ZDoiTTE3Ljk5IDExLjY2QTYgNiAwIDAgMSAxNS43NyAxNi42NyJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIyIn1dLFsicGF0aCIse2Q6Im0xMy40MSAxMC41OSA1LjY2LTUuNjYifV1dfSk7dmFyIExxLFZWZT1nKCgpPT57THE9W1sicGF0aCIse2Q6Ik0xMyAxNmEzIDMgMCAwIDEgMi4yNCA1In1dLFsicGF0aCIse2Q6Ik0xOCAxMmguMDEifV0sWyJwYXRoIix7ZDoiTTE4IDIxaC04YTQgNCAwIDAgMS00LTQgNyA3IDAgMCAxIDctN2guMkw5LjYgNi40YTEgMSAwIDEgMSAyLjgtMi44TDE1LjggN2guMmMzLjMgMCA2IDIuNyA2IDZ2MWEyIDIgMCAwIDEtMiAyaC0xYTMgMyAwIDAgMC0zIDMifV0sWyJwYXRoIix7ZDoiTTIwIDguNTRWNGEyIDIgMCAxIDAtNCAwdjMifV0sWyJwYXRoIix7ZDoiTTcuNjEyIDEyLjUyNGEzIDMgMCAxIDAtMS42IDQuMyJ9XV19KTt2YXIgRXEsVVZlPWcoKCk9PntFcT1bWyJwYXRoIix7ZDoiTTEyIDEyaC4wMSJ9XSxbInBhdGgiLHtkOiJNMTQgMTUuNDY0MWE0IDQgMCAwIDEtNCAwTDcuNTI3ODYgMTkuNzQ1OTcgQSAxIDEgMCAwIDAgNy45OTMwMyAyMS4xNjIxMSAxMCAxMCAwIDAgMCAxNi4wMDY5NyAyMS4xNjIxMSAxIDEgMCAwIDAgMTYuNDcyMTQgMTkuNzQ1OTd6In1dLFsicGF0aCIse2Q6Ik0xNiAxMmE0IDQgMCAwIDAtMi0zLjQ2NGwyLjQ3Mi00LjI4MmExIDEgMCAwIDEgMS40Ni0uMzA1IDEwIDEwIDAgMCAxIDQuMDA2IDYuOTRBMSAxIDAgMCAxIDIxIDEyeiJ9XSxbInBhdGgiLHtkOiJNOCAxMmE0IDQgMCAwIDEgMi0zLjQ2NEw3LjUyOCA0LjI1NGExIDEgMCAwIDAtMS40Ni0uMzA1IDEwIDEwIDAgMCAwLTQuMDA2IDYuOTRBMSAxIDAgMCAwIDMgMTJ6In1dXX0pO3ZhciBQcSxXVmU9ZygoKT0+e1BxPVtbInBhdGgiLHtkOiJNMyAxMmgzLjI4YTEgMSAwIDAgMSAuOTQ4LjY4NGwyLjI5OCA3LjkzNGEuNS41IDAgMCAwIC45Ni0uMDQ0TDEzLjgyIDQuNzcxQTEgMSAwIDAgMSAxNC43OTIgNEgyMSJ9XV19KTt2YXIgSXEsR1ZlPWcoKCk9PntJcT1bWyJwYXRoIix7ZDoiTTEzLjQxNCAxMy40MTRhMiAyIDAgMSAxLTIuODI4LTIuODI4In1dLFsicGF0aCIse2Q6Ik0xNi4yNDcgNy43NjFhNiA2IDAgMCAxIDEuNzQ0IDQuNTcyIn1dLFsicGF0aCIse2Q6Ik0xOS4wNzUgNC45MzNhMTAgMTAgMCAwIDEgMi4yMzQgMTAuNzIifV0sWyJwYXRoIix7ZDoibTIgMiAyMCAyMCJ9XSxbInBhdGgiLHtkOiJNNC45MjUgMTkuMDY3YTEwIDEwIDAgMCAxIDAtMTQuMTM0In1dLFsicGF0aCIse2Q6Ik03Ljc1MyAxNi4yMzlhNiA2IDAgMCAxIDAtOC40NzgifV1dfSk7dmFyIEFxLEtWZT1nKCgpPT57QXE9W1sicGF0aCIse2Q6Ik01IDE2djIifV0sWyJwYXRoIix7ZDoiTTE5IDE2djIifV0sWyJyZWN0Iix7d2lkdGg6IjIwIixoZWlnaHQ6IjgiLHg6IjIiLHk6IjgiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik0xOCAxMmguMDEifV1dfSk7dmFyIE5xLFlWZT1nKCgpPT57TnE9W1sicGF0aCIse2Q6Ik00LjkgMTYuMUMxIDEyLjIgMSA1LjggNC45IDEuOSJ9XSxbInBhdGgiLHtkOiJNNy44IDQuN2E2LjE0IDYuMTQgMCAwIDAtLjggNy41In1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiOSIscjoiMiJ9XSxbInBhdGgiLHtkOiJNMTYuMiA0LjhjMiAyIDIuMjYgNS4xMS44IDcuNDcifV0sWyJwYXRoIix7ZDoiTTE5LjEgMS45YTkuOTYgOS45NiAwIDAgMSAwIDE0LjEifV0sWyJwYXRoIix7ZDoiTTkuNSAxOGg1In1dLFsicGF0aCIse2Q6Im04IDIyIDQtMTEgNCAxMSJ9XV19KTt2YXIgUnEsWlZlPWcoKCk9PntScT1bWyJwYXRoIix7ZDoiTTE2LjI0NyA3Ljc2MWE2IDYgMCAwIDEgMCA4LjQ3OCJ9XSxbInBhdGgiLHtkOiJNMTkuMDc1IDQuOTMzYTEwIDEwIDAgMCAxIDAgMTQuMTM0In1dLFsicGF0aCIse2Q6Ik00LjkyNSAxOS4wNjdhMTAgMTAgMCAwIDEgMC0xNC4xMzQifV0sWyJwYXRoIix7ZDoiTTcuNzUzIDE2LjIzOWE2IDYgMCAwIDEgMC04LjQ3OCJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIyIn1dXX0pO3ZhciBPcSxYVmU9ZygoKT0+e09xPVtbInBhdGgiLHtkOiJNMjAuMzQgMTcuNTJhMTAgMTAgMCAxIDAtMi44MiAyLjgyIn1dLFsiY2lyY2xlIix7Y3g6IjE5IixjeToiMTkiLHI6IjIifV0sWyJwYXRoIix7ZDoibTEzLjQxIDEzLjQxIDQuMTggNC4xOCJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIyIn1dXX0pO3ZhciBGcSxRVmU9ZygoKT0+e0ZxPVtbInBhdGgiLHtkOiJNMjIgMTdhMTAgMTAgMCAwIDAtMjAgMCJ9XSxbInBhdGgiLHtkOiJNNiAxN2E2IDYgMCAwIDEgMTIgMCJ9XSxbInBhdGgiLHtkOiJNMTAgMTdhMiAyIDAgMCAxIDQgMCJ9XV19KTt2YXIgQnEsSlZlPWcoKCk9PntCcT1bWyJwYXRoIix7ZDoiTTEzIDIySDRhMiAyIDAgMCAxIDAtNGgxMiJ9XSxbInBhdGgiLHtkOiJNMTMuMjM2IDE4YTMgMyAwIDAgMC0yLjItNSJ9XSxbInBhdGgiLHtkOiJNMTYgOWguMDEifV0sWyJwYXRoIix7ZDoiTTE2LjgyIDMuOTRhMyAzIDAgMSAxIDMuMjM3IDQuODY4bDEuODE1IDIuNTg3YTEuNSAxLjUgMCAwIDEtMS41IDIuMWwtMi44NzItLjQ1M2EzIDMgMCAwIDAtMy41IDMifV0sWyJwYXRoIix7ZDoiTTE3IDQuOTg4YTMgMyAwIDEgMC01LjIgMi4wNTJBNyA3IDAgMCAwIDQgMTQuMDE1IDQgNCAwIDAgMCA4IDE4In1dXX0pO3ZhciBIcSxlVWU9ZygoKT0+e0hxPVtbInJlY3QiLHt3aWR0aDoiMTIiLGhlaWdodDoiMjAiLHg6IjYiLHk6IjIiLHJ4OiIyIn1dLFsicmVjdCIse3dpZHRoOiIyMCIsaGVpZ2h0OiIxMiIseDoiMiIseToiNiIscng6IjIifV1dfSk7dmFyIHFxLHRVZT1nKCgpPT57cXE9W1sicGF0aCIse2Q6Ik0xMiA3djEwIn1dLFsicGF0aCIse2Q6Ik0xNC44MjggMTQuODI5YTQgNCAwIDAgMS01LjY1NiAwIDQgNCAwIDAgMSAwLTUuNjU3IDQgNCAwIDAgMSA1LjY1NiAwIn1dLFsicGF0aCIse2Q6Ik00IDNhMSAxIDAgMCAxIDEtMSAxLjMgMS4zIDAgMCAxIC43LjJsLjkzMy42YTEuMyAxLjMgMCAwIDAgMS40IDBsLjkzNC0uNmExLjMgMS4zIDAgMCAxIDEuNCAwbC45MzMuNmExLjMgMS4zIDAgMCAwIDEuNCAwbC45MzMtLjZhMS4zIDEuMyAwIDAgMSAxLjQgMGwuOTM0LjZhMS4zIDEuMyAwIDAgMCAxLjQgMGwuOTMzLS42QTEuMyAxLjMgMCAwIDEgMTkgMmExIDEgMCAwIDEgMSAxdjE4YTEgMSAwIDAgMS0xIDEgMS4zIDEuMyAwIDAgMS0uNy0uMmwtLjkzMy0uNmExLjMgMS4zIDAgMCAwLTEuNCAwbC0uOTM0LjZhMS4zIDEuMyAwIDAgMS0xLjQgMGwtLjkzMy0uNmExLjMgMS4zIDAgMCAwLTEuNCAwbC0uOTMzLjZhMS4zIDEuMyAwIDAgMS0xLjQgMGwtLjkzNC0uNmExLjMgMS4zIDAgMCAwLTEuNCAwbC0uOTMzLjZhMS4zIDEuMyAwIDAgMS0uNy4yIDEgMSAwIDAgMS0xLTF6In1dXX0pO3ZhciBqcSxhVWU9ZygoKT0+e2pxPVtbInBhdGgiLHtkOiJNMTUuODI4IDE0LjgyOWE0IDQgMCAwIDEtNS42NTYgMCA0IDQgMCAwIDEgMC01LjY1NyA0IDQgMCAwIDEgNS42NTYgMCJ9XSxbInBhdGgiLHtkOiJNNCAzYTEgMSAwIDAgMSAxLTEgMS4zIDEuMyAwIDAgMSAuNy4ybC45MzMuNmExLjMgMS4zIDAgMCAwIDEuNCAwbC45MzQtLjZhMS4zIDEuMyAwIDAgMSAxLjQgMGwuOTMzLjZhMS4zIDEuMyAwIDAgMCAxLjQgMGwuOTMzLS42YTEuMyAxLjMgMCAwIDEgMS40IDBsLjkzNC42YTEuMyAxLjMgMCAwIDAgMS40IDBsLjkzMy0uNkExLjMgMS4zIDAgMCAxIDE5IDJhMSAxIDAgMCAxIDEgMXYxOGExIDEgMCAwIDEtMSAxIDEuMyAxLjMgMCAwIDEtLjctLjJsLS45MzMtLjZhMS4zIDEuMyAwIDAgMC0xLjQgMGwtLjkzNC42YTEuMyAxLjMgMCAwIDEtMS40IDBsLS45MzMtLjZhMS4zIDEuMyAwIDAgMC0xLjQgMGwtLjkzMy42YTEuMyAxLjMgMCAwIDEtMS40IDBsLS45MzQtLjZhMS4zIDEuMyAwIDAgMC0xLjQgMGwtLjkzMy42YTEuMyAxLjMgMCAwIDEtLjcuMiAxIDEgMCAwIDEtMS0xeiJ9XSxbInBhdGgiLHtkOiJNOCAxMmg1In1dXX0pO3ZhciBWcSxzVWU9ZygoKT0+e1ZxPVtbInBhdGgiLHtkOiJNNCAzYTEgMSAwIDAgMSAxLTEgMS4zIDEuMyAwIDAgMSAuNy4ybC45MzMuNmExLjMgMS4zIDAgMCAwIDEuNCAwbC45MzQtLjZhMS4zIDEuMyAwIDAgMSAxLjQgMGwuOTMzLjZhMS4zIDEuMyAwIDAgMCAxLjQgMGwuOTMzLS42YTEuMyAxLjMgMCAwIDEgMS40IDBsLjkzNC42YTEuMyAxLjMgMCAwIDAgMS40IDBsLjkzMy0uNkExLjMgMS4zIDAgMCAxIDE5IDJhMSAxIDAgMCAxIDEgMXYxOGExIDEgMCAwIDEtMSAxIDEuMyAxLjMgMCAwIDEtLjctLjJsLS45MzMtLjZhMS4zIDEuMyAwIDAgMC0xLjQgMGwtLjkzNC42YTEuMyAxLjMgMCAwIDEtMS40IDBsLS45MzMtLjZhMS4zIDEuMyAwIDAgMC0xLjQgMGwtLjkzMy42YTEuMyAxLjMgMCAwIDEtMS40IDBsLS45MzQtLjZhMS4zIDEuMyAwIDAgMC0xLjQgMGwtLjkzMy42YTEuMyAxLjMgMCAwIDEtLjcuMiAxIDEgMCAwIDEtMS0xeiJ9XSxbInBhdGgiLHtkOiJNOCAxMWg4In1dLFsicGF0aCIse2Q6Ik04IDdoOCJ9XSxbInBhdGgiLHtkOiJNOSA3YTQgNCAwIDAgMSAwIDhIOGwzIDIifV1dfSk7dmFyIFVxLGlVZT1nKCgpPT57VXE9W1sicGF0aCIse2Q6Ik0xMCAxN1Y5LjVhMSAxIDAgMCAxIDUgMCJ9XSxbInBhdGgiLHtkOiJNNCAzYTEgMSAwIDAgMSAxLTEgMS4zIDEuMyAwIDAgMSAuNy4ybC45MzMuNmExLjMgMS4zIDAgMCAwIDEuNCAwbC45MzQtLjZhMS4zIDEuMyAwIDAgMSAxLjQgMGwuOTMzLjZhMS4zIDEuMyAwIDAgMCAxLjQgMGwuOTMzLS42YTEuMyAxLjMgMCAwIDEgMS40IDBsLjkzNC42YTEuMyAxLjMgMCAwIDAgMS40IDBsLjkzMy0uNkExLjMgMS4zIDAgMCAxIDE5IDJhMSAxIDAgMCAxIDEgMXYxOGExIDEgMCAwIDEtMSAxIDEuMyAxLjMgMCAwIDEtLjctLjJsLS45MzMtLjZhMS4zIDEuMyAwIDAgMC0xLjQgMGwtLjkzNC42YTEuMyAxLjMgMCAwIDEtMS40IDBsLS45MzMtLjZhMS4zIDEuMyAwIDAgMC0xLjQgMGwtLjkzMy42YTEuMyAxLjMgMCAwIDEtMS40IDBsLS45MzQtLjZhMS4zIDEuMyAwIDAgMC0xLjQgMGwtLjkzMy42YTEuMyAxLjMgMCAwIDEtLjcuMiAxIDEgMCAwIDEtMS0xeiJ9XSxbInBhdGgiLHtkOiJNOCAxM2g1In1dLFsicGF0aCIse2Q6Ik04IDE3aDcifV1dfSk7dmFyIFdxLHJVZT1nKCgpPT57V3E9W1sicGF0aCIse2Q6Im0xMiAxMCAzLTMifV0sWyJwYXRoIix7ZDoiTTQgM2ExIDEgMCAwIDEgMS0xIDEuMyAxLjMgMCAwIDEgLjcuMmwuOTMzLjZhMS4zIDEuMyAwIDAgMCAxLjQgMGwuOTM0LS42YTEuMyAxLjMgMCAwIDEgMS40IDBsLjkzMy42YTEuMyAxLjMgMCAwIDAgMS40IDBsLjkzMy0uNmExLjMgMS4zIDAgMCAxIDEuNCAwbC45MzQuNmExLjMgMS4zIDAgMCAwIDEuNCAwbC45MzMtLjZBMS4zIDEuMyAwIDAgMSAxOSAyYTEgMSAwIDAgMSAxIDF2MThhMSAxIDAgMCAxLTEgMSAxLjMgMS4zIDAgMCAxLS43LS4ybC0uOTMzLS42YTEuMyAxLjMgMCAwIDAtMS40IDBsLS45MzQuNmExLjMgMS4zIDAgMCAxLTEuNCAwbC0uOTMzLS42YTEuMyAxLjMgMCAwIDAtMS40IDBsLS45MzMuNmExLjMgMS4zIDAgMCAxLTEuNCAwbC0uOTM0LS42YTEuMyAxLjMgMCAwIDAtMS40IDBsLS45MzMuNmExLjMgMS4zIDAgMCAxLS43LjIgMSAxIDAgMCAxLTEtMXoifV0sWyJwYXRoIix7ZDoiTTkgMTFoNiJ9XSxbInBhdGgiLHtkOiJNOSAxNWg2In1dLFsicGF0aCIse2Q6Im05IDcgMyAzdjcifV1dfSk7dmFyIEdxLG9VZT1nKCgpPT57R3E9W1sicGF0aCIse2Q6Ik00IDNhMSAxIDAgMCAxIDEtMSAxLjMgMS4zIDAgMCAxIC43LjJsLjkzMy42YTEuMyAxLjMgMCAwIDAgMS40IDBsLjkzNC0uNmExLjMgMS4zIDAgMCAxIDEuNCAwbC45MzMuNmExLjMgMS4zIDAgMCAwIDEuNCAwbC45MzMtLjZhMS4zIDEuMyAwIDAgMSAxLjQgMGwuOTM0LjZhMS4zIDEuMyAwIDAgMCAxLjQgMGwuOTMzLS42QTEuMyAxLjMgMCAwIDEgMTkgMmExIDEgMCAwIDEgMSAxdjE4YTEgMSAwIDAgMS0xIDEgMS4zIDEuMyAwIDAgMS0uNy0uMmwtLjkzMy0uNmExLjMgMS4zIDAgMCAwLTEuNCAwbC0uOTM0LjZhMS4zIDEuMyAwIDAgMS0xLjQgMGwtLjkzMy0uNmExLjMgMS4zIDAgMCAwLTEuNCAwbC0uOTMzLjZhMS4zIDEuMyAwIDAgMS0xLjQgMGwtLjkzNC0uNmExLjMgMS4zIDAgMCAwLTEuNCAwbC0uOTMzLjZhMS4zIDEuMyAwIDAgMS0uNy4yIDEgMSAwIDAgMS0xLTF6In1dLFsicGF0aCIse2Q6Ik04IDExaDVhMiAyIDAgMCAwIDAtNGgtM3YxMCJ9XSxbInBhdGgiLHtkOiJNOCAxNWg1In1dXX0pO3ZhciBLcSxuVWU9ZygoKT0+e0txPVtbInBhdGgiLHtkOiJNMTMgMTZIOCJ9XSxbInBhdGgiLHtkOiJNMTQgOEg4In1dLFsicGF0aCIse2Q6Ik0xNiAxMkg4In1dLFsicGF0aCIse2Q6Ik00IDNhMSAxIDAgMCAxIDEtMSAxLjMgMS4zIDAgMCAxIC43LjJsLjkzMy42YTEuMyAxLjMgMCAwIDAgMS40IDBsLjkzNC0uNmExLjMgMS4zIDAgMCAxIDEuNCAwbC45MzMuNmExLjMgMS4zIDAgMCAwIDEuNCAwbC45MzMtLjZhMS4zIDEuMyAwIDAgMSAxLjQgMGwuOTM0LjZhMS4zIDEuMyAwIDAgMCAxLjQgMGwuOTMzLS42QTEuMyAxLjMgMCAwIDEgMTkgMmExIDEgMCAwIDEgMSAxdjE4YTEgMSAwIDAgMS0xIDEgMS4zIDEuMyAwIDAgMS0uNy0uMmwtLjkzMy0uNmExLjMgMS4zIDAgMCAwLTEuNCAwbC0uOTM0LjZhMS4zIDEuMyAwIDAgMS0xLjQgMGwtLjkzMy0uNmExLjMgMS4zIDAgMCAwLTEuNCAwbC0uOTMzLjZhMS4zIDEuMyAwIDAgMS0xLjQgMGwtLjkzNC0uNmExLjMgMS4zIDAgMCAwLTEuNCAwbC0uOTMzLjZhMS4zIDEuMyAwIDAgMS0uNy4yIDEgMSAwIDAgMS0xLTF6In1dXX0pO3ZhciBZcSxsVWU9ZygoKT0+e1lxPVtbInBhdGgiLHtkOiJNMTAgMTFoNCJ9XSxbInBhdGgiLHtkOiJNMTAgMTdWN2g1In1dLFsicGF0aCIse2Q6Ik00IDNhMSAxIDAgMCAxIDEtMSAxLjMgMS4zIDAgMCAxIC43LjJsLjkzMy42YTEuMyAxLjMgMCAwIDAgMS40IDBsLjkzNC0uNmExLjMgMS4zIDAgMCAxIDEuNCAwbC45MzMuNmExLjMgMS4zIDAgMCAwIDEuNCAwbC45MzMtLjZhMS4zIDEuMyAwIDAgMSAxLjQgMGwuOTM0LjZhMS4zIDEuMyAwIDAgMCAxLjQgMGwuOTMzLS42QTEuMyAxLjMgMCAwIDEgMTkgMmExIDEgMCAwIDEgMSAxdjE4YTEgMSAwIDAgMS0xIDEgMS4zIDEuMyAwIDAgMS0uNy0uMmwtLjkzMy0uNmExLjMgMS4zIDAgMCAwLTEuNCAwbC0uOTM0LjZhMS4zIDEuMyAwIDAgMS0xLjQgMGwtLjkzMy0uNmExLjMgMS4zIDAgMCAwLTEuNCAwbC0uOTMzLjZhMS4zIDEuMyAwIDAgMS0xLjQgMGwtLjkzNC0uNmExLjMgMS4zIDAgMCAwLTEuNCAwbC0uOTMzLjZhMS4zIDEuMyAwIDAgMS0uNy4yIDEgMSAwIDAgMS0xLTF6In1dLFsicGF0aCIse2Q6Ik04IDE1aDUifV1dfSk7dmFyIFpxLGNVZT1nKCgpPT57WnE9W1sicGF0aCIse2Q6Ik0xMiAxN1Y3In1dLFsicGF0aCIse2Q6Ik0xNiA4aC02YTIgMiAwIDAgMCAwIDRoNGEyIDIgMCAwIDEgMCA0SDgifV0sWyJwYXRoIix7ZDoiTTQgM2ExIDEgMCAwIDEgMS0xIDEuMyAxLjMgMCAwIDEgLjcuMmwuOTMzLjZhMS4zIDEuMyAwIDAgMCAxLjQgMGwuOTM0LS42YTEuMyAxLjMgMCAwIDEgMS40IDBsLjkzMy42YTEuMyAxLjMgMCAwIDAgMS40IDBsLjkzMy0uNmExLjMgMS4zIDAgMCAxIDEuNCAwbC45MzQuNmExLjMgMS4zIDAgMCAwIDEuNCAwbC45MzMtLjZBMS4zIDEuMyAwIDAgMSAxOSAyYTEgMSAwIDAgMSAxIDF2MThhMSAxIDAgMCAxLTEgMSAxLjMgMS4zIDAgMCAxLS43LS4ybC0uOTMzLS42YTEuMyAxLjMgMCAwIDAtMS40IDBsLS45MzQuNmExLjMgMS4zIDAgMCAxLTEuNCAwbC0uOTMzLS42YTEuMyAxLjMgMCAwIDAtMS40IDBsLS45MzMuNmExLjMgMS4zIDAgMCAxLTEuNCAwbC0uOTM0LS42YTEuMyAxLjMgMCAwIDAtMS40IDBsLS45MzMuNmExLjMgMS4zIDAgMCAxLS43LjIgMSAxIDAgMCAxLTEtMXoifV1dfSk7dmFyIFhxLGRVZT1nKCgpPT57WHE9W1sicGF0aCIse2Q6Ik0xMCA3djEwYTUgNSAwIDAgMCA1LTUifV0sWyJwYXRoIix7ZDoibTE0IDgtNiAzIn1dLFsicGF0aCIse2Q6Ik00IDNhMSAxIDAgMCAxIDEtMSAxLjMgMS4zIDAgMCAxIC43LjJsLjkzMy42YTEuMyAxLjMgMCAwIDAgMS40IDBsLjkzNC0uNmExLjMgMS4zIDAgMCAxIDEuNCAwbC45MzMuNmExLjMgMS4zIDAgMCAwIDEuNCAwbC45MzMtLjZhMS4zIDEuMyAwIDAgMSAxLjQgMGwuOTM0LjZhMS4zIDEuMyAwIDAgMCAxLjQgMGwuOTMzLS42QTEuMyAxLjMgMCAwIDEgMTkgMmExIDEgMCAwIDEgMSAxdjE4YTEgMSAwIDAgMS0xIDEgMS4zIDEuMyAwIDAgMS0uNy0uMmwtLjkzMy0uNmExLjMgMS4zIDAgMCAwLTEuNCAwbC0uOTM0LjZhMS4zIDEuMyAwIDAgMS0xLjQgMGwtLjkzMy0uNmExLjMgMS4zIDAgMCAwLTEuNCAwbC0uOTMzLjZhMS4zIDEuMyAwIDAgMS0xLjQgMGwtLjkzNC0uNmExLjMgMS4zIDAgMCAwLTEuNCAwbC0uOTMzLjZhMS4zIDEuMyAwIDAgMS0uNy4yIDEgMSAwIDAgMS0xLTF6In1dXX0pO3ZhciBRcSx1VWU9ZygoKT0+e1FxPVtbInBhdGgiLHtkOiJNMTQgNHYxNkgzYTEgMSAwIDAgMS0xLTFWNWExIDEgMCAwIDEgMS0xeiJ9XSxbImNpcmNsZSIse2N4OiIxNCIsY3k6IjEyIixyOiI4In1dXX0pO3ZhciBLNixwVWU9ZygoKT0+e0s2PVtbInJlY3QiLHt3aWR0aDoiMjAiLGhlaWdodDoiMTIiLHg6IjIiLHk6IjYiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik0xMiAxMmguMDEifV0sWyJwYXRoIix7ZDoiTTE3IDEyaC4wMSJ9XSxbInBhdGgiLHtkOiJNNyAxMmguMDEifV1dfSk7dmFyIEpxLGhVZT1nKCgpPT57SnE9W1sicGF0aCIse2Q6Ik0yMCA2YTIgMiAwIDAgMSAyIDJ2OGEyIDIgMCAwIDEtMiAyaC00YTIgMiAwIDAgMS0xLjYtLjhsLTEuNi0yLjEzYTEgMSAwIDAgMC0xLjYgMEw5LjYgMTcuMkEyIDIgMCAwIDEgOCAxOEg0YTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yeiJ9XV19KTt2YXIgZWosZlVlPWcoKCk9Pntlaj1bWyJyZWN0Iix7d2lkdGg6IjIwIixoZWlnaHQ6IjEyIix4OiIyIix5OiI2IixyeDoiMiJ9XV19KTt2YXIgdGosbVVlPWcoKCk9Pnt0aj1bWyJyZWN0Iix7d2lkdGg6IjEyIixoZWlnaHQ6IjIwIix4OiI2Iix5OiIyIixyeDoiMiJ9XV19KTt2YXIgYWosZ1VlPWcoKCk9Pnthaj1bWyJwYXRoIix7ZDoiTTcgMTlINC44MTVhMS44MyAxLjgzIDAgMCAxLTEuNTctLjg4MSAxLjc4NSAxLjc4NSAwIDAgMS0uMDA0LTEuNzg0TDcuMTk2IDkuNSJ9XSxbInBhdGgiLHtkOiJNMTEgMTloOC4yMDNhMS44MyAxLjgzIDAgMCAwIDEuNTU2LS44OSAxLjc4NCAxLjc4NCAwIDAgMCAwLTEuNzc1bC0xLjIyNi0yLjEyIn1dLFsicGF0aCIse2Q6Im0xNCAxNi0zIDMgMyAzIn1dLFsicGF0aCIse2Q6Ik04LjI5MyAxMy41OTYgNy4xOTYgOS41IDMuMSAxMC41OTgifV0sWyJwYXRoIix7ZDoibTkuMzQ0IDUuODExIDEuMDkzLTEuODkyQTEuODMgMS44MyAwIDAgMSAxMS45ODUgM2ExLjc4NCAxLjc4NCAwIDAgMSAxLjU0Ni44ODhsMy45NDMgNi44NDMifV0sWyJwYXRoIix7ZDoibTEzLjM3OCA5LjYzMyA0LjA5NiAxLjA5OCAxLjA5Ny00LjA5NiJ9XV19KTt2YXIgc2osYlVlPWcoKCk9Pntzaj1bWyJwYXRoIix7ZDoibTE1IDE0IDUtNS01LTUifV0sWyJwYXRoIix7ZDoiTTIwIDlIOS41QTUuNSA1LjUgMCAwIDAgNCAxNC41QTUuNSA1LjUgMCAwIDAgOS41IDIwSDEzIn1dXX0pO3ZhciBpaix2VWU9ZygoKT0+e2lqPVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjE3IixyOiIxIn1dLFsicGF0aCIse2Q6Ik0yMSA3djZoLTYifV0sWyJwYXRoIix7ZDoiTTMgMTdhOSA5IDAgMCAxIDktOSA5IDkgMCAwIDEgNiAyLjNsMyAyLjcifV1dfSk7dmFyIHJqLHhVZT1nKCgpPT57cmo9W1sicGF0aCIse2Q6Ik0yMSA3djZoLTYifV0sWyJwYXRoIix7ZDoiTTMgMTdhOSA5IDAgMCAxIDktOSA5IDkgMCAwIDEgNiAyLjNsMyAyLjcifV1dfSk7dmFyIG9qLHlVZT1nKCgpPT57b2o9W1sicGF0aCIse2Q6Ik0yMSAxMmE5IDkgMCAwIDAtOS05IDkuNzUgOS43NSAwIDAgMC02Ljc0IDIuNzRMMyA4In1dLFsicGF0aCIse2Q6Ik0zIDN2NWg1In1dLFsicGF0aCIse2Q6Ik0zIDEyYTkgOSAwIDAgMCA5IDkgOS43NSA5Ljc1IDAgMCAwIDYuNzQtMi43NEwyMSAxNiJ9XSxbInBhdGgiLHtkOiJNMTYgMTZoNXY1In1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEifV1dfSk7dmFyIG5qLHdVZT1nKCgpPT57bmo9W1sicGF0aCIse2Q6Ik0yMSAxMmE5IDkgMCAwIDAtOS05IDkuNzUgOS43NSAwIDAgMC02Ljc0IDIuNzRMMyA4In1dLFsicGF0aCIse2Q6Ik0zIDN2NWg1In1dLFsicGF0aCIse2Q6Ik0zIDEyYTkgOSAwIDAgMCA5IDkgOS43NSA5Ljc1IDAgMCAwIDYuNzQtMi43NEwyMSAxNiJ9XSxbInBhdGgiLHtkOiJNMTYgMTZoNXY1In1dXX0pO3ZhciBsaixrVWU9ZygoKT0+e2xqPVtbInBhdGgiLHtkOiJNMjEgOEwxOC43NCA1Ljc0QTkuNzUgOS43NSAwIDAgMCAxMiAzQzExIDMgMTAuMDMgMy4xNiA5LjEzIDMuNDcifV0sWyJwYXRoIix7ZDoiTTggMTZIM3Y1In1dLFsicGF0aCIse2Q6Ik0zIDEyQzMgOS41MSA0IDcuMjYgNS42NCA1LjY0In1dLFsicGF0aCIse2Q6Im0zIDE2IDIuMjYgMi4yNkE5Ljc1IDkuNzUgMCAwIDAgMTIgMjFjMi40OSAwIDQuNzQtMSA2LjM2LTIuNjQifV0sWyJwYXRoIix7ZDoiTTIxIDEyYzAgMS0uMTYgMS45Ny0uNDcgMi44NyJ9XSxbInBhdGgiLHtkOiJNMjEgM3Y1aC01In1dLFsicGF0aCIse2Q6Ik0yMiAyMiAyIDIifV1dfSk7dmFyIGNqLFNVZT1nKCgpPT57Y2o9W1sicGF0aCIse2Q6Ik0zIDEyYTkgOSAwIDAgMSA5LTkgOS43NSA5Ljc1IDAgMCAxIDYuNzQgMi43NEwyMSA4In1dLFsicGF0aCIse2Q6Ik0yMSAzdjVoLTUifV0sWyJwYXRoIix7ZDoiTTIxIDEyYTkgOSAwIDAgMS05IDkgOS43NSA5Ljc1IDAgMCAxLTYuNzQtMi43NEwzIDE2In1dLFsicGF0aCIse2Q6Ik04IDE2SDN2NSJ9XV19KTt2YXIgZGosX1VlPWcoKCk9Pntkaj1bWyJwYXRoIix7ZDoiTTUgNmE0IDQgMCAwIDEgNC00aDZhNCA0IDAgMCAxIDQgNHYxNGEyIDIgMCAwIDEtMiAySDdhMiAyIDAgMCAxLTItMlY2WiJ9XSxbInBhdGgiLHtkOiJNNSAxMGgxNCJ9XSxbInBhdGgiLHtkOiJNMTUgN3Y2In1dXX0pO3ZhciB1aixNVWU9ZygoKT0+e3VqPVtbInBhdGgiLHtkOiJNMTcgM3YxMCJ9XSxbInBhdGgiLHtkOiJtMTIuNjcgNS41IDguNjYgNSJ9XSxbInBhdGgiLHtkOiJtMTIuNjcgMTAuNSA4LjY2LTUifV0sWyJwYXRoIix7ZDoiTTkgMTdhMiAyIDAgMCAwLTItMkg1YTIgMiAwIDAgMC0yIDJ2MmEyIDIgMCAwIDAgMiAyaDJhMiAyIDAgMCAwIDItMnYtMnoifV1dfSk7dmFyIHBqLHpVZT1nKCgpPT57cGo9W1sicGF0aCIse2Q6Ik00IDdWNGgxNnYzIn1dLFsicGF0aCIse2Q6Ik01IDIwaDYifV0sWyJwYXRoIix7ZDoiTTEzIDQgOCAyMCJ9XSxbInBhdGgiLHtkOiJtMTUgMTUgNSA1In1dLFsicGF0aCIse2Q6Im0yMCAxNS01IDUifV1dfSk7dmFyIGhqLENVZT1nKCgpPT57aGo9W1sicGF0aCIse2Q6Im0yIDkgMy0zIDMgMyJ9XSxbInBhdGgiLHtkOiJNMTMgMThIN2EyIDIgMCAwIDEtMi0yVjYifV0sWyJwYXRoIix7ZDoibTIyIDE1LTMgMy0zLTMifV0sWyJwYXRoIix7ZDoiTTExIDZoNmEyIDIgMCAwIDEgMiAydjEwIn1dXX0pO3ZhciBmaixUVWU9ZygoKT0+e2ZqPVtbInBhdGgiLHtkOiJtMTcgMiA0IDQtNCA0In1dLFsicGF0aCIse2Q6Ik0zIDExdi0xYTQgNCAwIDAgMSA0LTRoMTQifV0sWyJwYXRoIix7ZDoibTcgMjItNC00IDQtNCJ9XSxbInBhdGgiLHtkOiJNMjEgMTN2MWE0IDQgMCAwIDEtNCA0SDMifV0sWyJwYXRoIix7ZDoiTTExIDEwaDF2NCJ9XV19KTt2YXIgbWosJFVlPWcoKCk9Pnttaj1bWyJwYXRoIix7ZDoiTTExLjY1NiA2SDIxbC00LTQifV0sWyJwYXRoIix7ZDoiTTE3Ljg5OCAxNy44OThBNCA0IDAgMCAxIDE3IDE4SDNsNC00In1dLFsicGF0aCIse2Q6Im0yIDIgMjAgMjAifV0sWyJwYXRoIix7ZDoiTTIxIDEzdjFhNCA0IDAgMCAxLS4xNzEgMS4xNTkifV0sWyJwYXRoIix7ZDoibTIxIDYtNCA0In1dLFsicGF0aCIse2Q6Ik0zIDExdi0xYTQgNCAwIDAgMSAzLjEwMi0zLjg5OCJ9XSxbInBhdGgiLHtkOiJtNyAyMi00LTQifV1dfSk7dmFyIGdqLERVZT1nKCgpPT57Z2o9W1sicGF0aCIse2Q6Im0xNyAyIDQgNC00IDQifV0sWyJwYXRoIix7ZDoiTTMgMTF2LTFhNCA0IDAgMCAxIDQtNGgxNCJ9XSxbInBhdGgiLHtkOiJtNyAyMi00LTQgNC00In1dLFsicGF0aCIse2Q6Ik0yMSAxM3YxYTQgNCAwIDAgMS00IDRIMyJ9XV19KTt2YXIgYmosTFVlPWcoKCk9Pntiaj1bWyJwYXRoIix7ZDoiTTE0IDE0YTEgMSAwIDAgMSAxIDF2NWExIDEgMCAwIDEtMSAxIn1dLFsicGF0aCIse2Q6Ik0xNCA0YTEgMSAwIDAgMSAxLTEifV0sWyJwYXRoIix7ZDoiTTE1IDEwYTEgMSAwIDAgMS0xLTEifV0sWyJwYXRoIix7ZDoiTTE5IDE0YTEgMSAwIDAgMSAxIDF2NWExIDEgMCAwIDEtMSAxIn1dLFsicGF0aCIse2Q6Ik0yMSA0YTEgMSAwIDAgMC0xLTEifV0sWyJwYXRoIix7ZDoiTTIxIDlhMSAxIDAgMCAxLTEgMSJ9XSxbInBhdGgiLHtkOiJtMyA3IDMgMyAzLTMifV0sWyJwYXRoIix7ZDoiTTYgMTBWNWEyIDIgMCAwIDEgMi0yaDIifV0sWyJyZWN0Iix7eDoiMyIseToiMTQiLHdpZHRoOiI3IixoZWlnaHQ6IjciLHJ4OiIxIn1dXX0pO3ZhciB2aixFVWU9ZygoKT0+e3ZqPVtbInBhdGgiLHtkOiJNMTQgNGExIDEgMCAwIDEgMS0xIn1dLFsicGF0aCIse2Q6Ik0xNSAxMGExIDEgMCAwIDEtMS0xIn1dLFsicGF0aCIse2Q6Ik0yMSA0YTEgMSAwIDAgMC0xLTEifV0sWyJwYXRoIix7ZDoiTTIxIDlhMSAxIDAgMCAxLTEgMSJ9XSxbInBhdGgiLHtkOiJtMyA3IDMgMyAzLTMifV0sWyJwYXRoIix7ZDoiTTYgMTBWNWEyIDIgMCAwIDEgMi0yaDIifV0sWyJyZWN0Iix7eDoiMyIseToiMTQiLHdpZHRoOiI3IixoZWlnaHQ6IjciLHJ4OiIxIn1dXX0pO3ZhciB4aixQVWU9ZygoKT0+e3hqPVtbInBhdGgiLHtkOiJtMTIgMTctNS01IDUtNSJ9XSxbInBhdGgiLHtkOiJNMjIgMTh2LTJhNCA0IDAgMCAwLTQtNEg3In1dLFsicGF0aCIse2Q6Im03IDE3LTUtNSA1LTUifV1dfSk7dmFyIHlqLElVZT1nKCgpPT57eWo9W1sicGF0aCIse2Q6Ik0yMCAxOHYtMmE0IDQgMCAwIDAtNC00SDQifV0sWyJwYXRoIix7ZDoibTkgMTctNS01IDUtNSJ9XV19KTt2YXIgd2osQVVlPWcoKCk9Pnt3aj1bWyJwYXRoIix7ZDoiTTEyIDExLjIyQzExIDkuOTk3IDEwIDkgMTAgOGEyIDIgMCAwIDEgNCAwYzAgMS0uOTk4IDIuMDAyLTIuMDEgMy4yMiJ9XSxbInBhdGgiLHtkOiJtMTIgMTggMi41Ny0zLjUifV0sWyJwYXRoIix7ZDoiTTYuMjQzIDkuMDE2YTcgNyAwIDAgMSAxMS41MDctLjAwOSJ9XSxbInBhdGgiLHtkOiJNOS4zNSAxNC41MyAxMiAxMS4yMiJ9XSxbInBhdGgiLHtkOiJNOS4zNSAxNC41M0M3LjcyOCAxMi4yNDYgNiAxMC4yMjEgNiA3YTYgNSAwIDAgMSAxMiAwYy0uMDA1IDMuMjItMS43NzggNS4yMzUtMy40MyA3LjVsMy41NTcgNC41MjdhMSAxIDAgMCAxLS4yMDMgMS40M2wtMS44OTQgMS4zNmExIDEgMCAwIDEtMS4zODQtLjIxNUwxMiAxOGwtMi42NzkgMy41OTNhMSAxIDAgMCAxLTEuMzkuMjEzbC0xLjg2NS0xLjM1M2ExIDEgMCAwIDEtLjIwMy0xLjQyMnoifV1dfSk7dmFyIGtqLE5VZT1nKCgpPT57a2o9W1sicGF0aCIse2Q6Ik0xMiA2YTIgMiAwIDAgMC0zLjQxNC0xLjQxNGwtNiA2YTIgMiAwIDAgMCAwIDIuODI4bDYgNkEyIDIgMCAwIDAgMTIgMTh6In1dLFsicGF0aCIse2Q6Ik0yMiA2YTIgMiAwIDAgMC0zLjQxNC0xLjQxNGwtNiA2YTIgMiAwIDAgMCAwIDIuODI4bDYgNkEyIDIgMCAwIDAgMjIgMTh6In1dXX0pO3ZhciBTaixSVWU9ZygoKT0+e1NqPVtbInBhdGgiLHtkOiJNMTIgMTd2NCJ9XSxbInBhdGgiLHtkOiJNMTIgNVYzIn1dLFsicGF0aCIse2Q6Ik0xMiA5djMifV0sWyJwYXRoIix7ZDoiTTIuMDc3IDE4LjQ0OUEyIDIgMCAwIDAgNCAyMWgxNmEyIDIgMCAwIDAgMS45MjQtMi41NWwtNC0xNEEyIDIgMCAwIDAgMTYgM0g4YTIgMiAwIDAgMC0xLjkyNCAxLjQ1eiJ9XV19KTt2YXIgX2osT1VlPWcoKCk9Pntfaj1bWyJwYXRoIix7ZDoiTTEyIDE1djVzMy4wMy0uNTUgNC0yYzEuMDgtMS42MiAwLTUgMC01In1dLFsicGF0aCIse2Q6Ik00LjUgMTYuNWMtMS41IDEuMjYtMiA1LTIgNXMzLjc0LS41IDUtMmMuNzEtLjg0LjctMi4xMy0uMDktMi45MWEyLjE4IDIuMTggMCAwIDAtMi45MS0uMDkifV0sWyJwYXRoIix7ZDoiTTkgMTJhMjIgMjIgMCAwIDEgMi0zLjk1QTEyLjg4IDEyLjg4IDAgMCAxIDIyIDJjMCAyLjcyLS43OCA3LjUtNiAxMWEyMi40IDIyLjQgMCAwIDEtNCAyeiJ9XSxbInBhdGgiLHtkOiJNOSAxMkg0cy41NS0zLjAzIDItNGMxLjYyLTEuMDggNSAuMDUgNSAuMDUifV1dfSk7dmFyIE1qLEZVZT1nKCgpPT57TWo9W1sicGF0aCIse2Q6Im0xNSAxMyAzLjcwOCA3LjQxNiJ9XSxbInBhdGgiLHtkOiJNMyAxOWExNSAxNSAwIDAgMCAxOCAwIn1dLFsicGF0aCIse2Q6Im0zIDIgMy4yMSA5LjYzM0EyIDIgMCAwIDAgOC4xMDkgMTNIMTgifV0sWyJwYXRoIix7ZDoibTkgMTMtMy43MDggNy40MTYifV1dfSk7dmFyIHpqLEJVZT1nKCgpPT57emo9W1sicGF0aCIse2Q6Ik02IDE5VjUifV0sWyJwYXRoIix7ZDoiTTEwIDE5VjYuOCJ9XSxbInBhdGgiLHtkOiJNMTQgMTl2LTcuOCJ9XSxbInBhdGgiLHtkOiJNMTggNXY0In1dLFsicGF0aCIse2Q6Ik0xOCAxOXYtNiJ9XSxbInBhdGgiLHtkOiJNMjIgMTlWOSJ9XSxbInBhdGgiLHtkOiJNMiAxOVY5YTQgNCAwIDAgMSA0LTRjMiAwIDQgMS4zMyA2IDRzNCA0IDYgNGE0IDQgMCAxIDAtMy02LjY1In1dXX0pO3ZhciBDaixIVWU9ZygoKT0+e0NqPVtbInBhdGgiLHtkOiJNMTcgMTBoLTFhNCA0IDAgMSAxIDQtNHYuNTM0In1dLFsicGF0aCIse2Q6Ik0xNyA2aDFhNCA0IDAgMCAxIDEuNDIgNy43NGwtMi4yOS44N2E2IDYgMCAwIDEtNS4zMzktMTAuNjhsMi4wNjktMS4zMSJ9XSxbInBhdGgiLHtkOiJNNC41IDE3YzIuOC0uNSA0LjQgMCA1LjUuOHMxLjggMi4yIDIuMyAzLjdjLTIgLjQtMy41LjQtNC44LS4zLTEuMi0uNi0yLjMtMS45LTMtNC4yIn1dLFsicGF0aCIse2Q6Ik05Ljc3IDEyQzQgMTUgMiAyMiAyIDIyIn1dLFsiY2lyY2xlIix7Y3g6IjE3IixjeToiOCIscjoiMiJ9XV19KTt2YXIgWTYscVVlPWcoKCk9PntZNj1bWyJwYXRoIix7ZDoibTE1LjE5NCAxMy43MDcgMy44MTQgMS44Ni0xLjg2IDMuODE0In1dLFsicGF0aCIse2Q6Ik0xNi40NzIxNCA3LjUyNzg2IEEgNSAxMCAwIDEgMCAxMyAyMS43OTc5NiJ9XSxbInBhdGgiLHtkOiJNMjEuNzk3OTYgMTEgQSAxMCA1IDAgMSAwIDE5IDE1LjU3MDcxIn1dXX0pO3ZhciBUaixqVWU9ZygoKT0+e1RqPVtbInBhdGgiLHtkOiJNMTIgN3Y2In1dLFsicGF0aCIse2Q6Ik0xMiA5aDIifV0sWyJwYXRoIix7ZDoiTTMgMTJhOSA5IDAgMSAwIDktOSA5Ljc0IDkuNzQgMCAwIDAtNi43NCAyLjc0TDMgOCJ9XSxbInBhdGgiLHtkOiJNMyAzdjVoNSJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjE1IixyOiIyIn1dXX0pO3ZhciAkaixWVWU9ZygoKT0+eyRqPVtbInBhdGgiLHtkOiJNMjAgOVY3YTIgMiAwIDAgMC0yLTJoLTYifV0sWyJwYXRoIix7ZDoibTE1IDItMyAzIDMgMyJ9XSxbInBhdGgiLHtkOiJNMjAgMTN2NWEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY3YTIgMiAwIDAgMSAyLTJoMiJ9XV19KTt2YXIgRGosVVVlPWcoKCk9PntEaj1bWyJwYXRoIix7ZDoiTTMgMTJhOSA5IDAgMSAwIDktOSA5Ljc1IDkuNzUgMCAwIDAtNi43NCAyLjc0TDMgOCJ9XSxbInBhdGgiLHtkOiJNMyAzdjVoNSJ9XV19KTt2YXIgTGosV1VlPWcoKCk9PntMaj1bWyJwYXRoIix7ZDoiTTEyIDVINmEyIDIgMCAwIDAtMiAydjMifV0sWyJwYXRoIix7ZDoibTkgOCAzLTMtMy0zIn1dLFsicGF0aCIse2Q6Ik00IDE0djRhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjdhMiAyIDAgMCAwLTItMmgtMiJ9XV19KTt2YXIgRWosR1VlPWcoKCk9PntFaj1bWyJwYXRoIix7ZDoiTTIxIDEyYTkgOSAwIDEgMS05LTljMi41MiAwIDQuOTMgMSA2Ljc0IDIuNzRMMjEgOCJ9XSxbInBhdGgiLHtkOiJNMjEgM3Y1aC01In1dXX0pO3ZhciBQaixLVWU9ZygoKT0+e1BqPVtbImNpcmNsZSIse2N4OiI2IixjeToiMTkiLHI6IjMifV0sWyJwYXRoIix7ZDoiTTkgMTloOC41Yy40IDAgLjktLjEgMS4zLS4yIn1dLFsicGF0aCIse2Q6Ik01LjIgNS4yQTMuNSAzLjUzIDAgMCAwIDYuNSAxMkgxMiJ9XSxbInBhdGgiLHtkOiJtMiAyIDIwIDIwIn1dLFsicGF0aCIse2Q6Ik0yMSAxNS4zYTMuNSAzLjUgMCAwIDAtMy4zLTMuMyJ9XSxbInBhdGgiLHtkOiJNMTUgNWgtNC4zIn1dLFsiY2lyY2xlIix7Y3g6IjE4IixjeToiNSIscjoiMyJ9XV19KTt2YXIgSWosWVVlPWcoKCk9PntJaj1bWyJjaXJjbGUiLHtjeDoiNiIsY3k6IjE5IixyOiIzIn1dLFsicGF0aCIse2Q6Ik05IDE5aDguNWEzLjUgMy41IDAgMCAwIDAtN2gtMTFhMy41IDMuNSAwIDAgMSAwLTdIMTUifV0sWyJjaXJjbGUiLHtjeDoiMTgiLGN5OiI1IixyOiIzIn1dXX0pO3ZhciBBaixaVWU9ZygoKT0+e0FqPVtbInJlY3QiLHt3aWR0aDoiMjAiLGhlaWdodDoiOCIseDoiMiIseToiMTQiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik02LjAxIDE4SDYifV0sWyJwYXRoIix7ZDoiTTEwLjAxIDE4SDEwIn1dLFsicGF0aCIse2Q6Ik0xNSAxMHY0In1dLFsicGF0aCIse2Q6Ik0xNy44NCA3LjE3YTQgNCAwIDAgMC01LjY2IDAifV0sWyJwYXRoIix7ZDoiTTIwLjY2IDQuMzRhOCA4IDAgMCAwLTExLjMxIDAifV1dfSk7dmFyIFo2LFhVZT1nKCgpPT57WjY9W1sicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiMyIscng6IjIifV0sWyJwYXRoIix7ZDoiTTMgMTJoMTgifV1dfSk7dmFyIFg2LFFVZT1nKCgpPT57WDY9W1sicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiMyIscng6IjIifV0sWyJwYXRoIix7ZDoiTTIxIDlIMyJ9XSxbInBhdGgiLHtkOiJNMjEgMTVIMyJ9XV19KTt2YXIgTmosSlVlPWcoKCk9PntOaj1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNMjEgNy41SDMifV0sWyJwYXRoIix7ZDoiTTIxIDEySDMifV0sWyJwYXRoIix7ZDoiTTIxIDE2LjVIMyJ9XV19KTt2YXIgUmosZVdlPWcoKCk9PntSaj1bWyJwYXRoIix7ZDoiTTQgMTFhOSA5IDAgMCAxIDkgOSJ9XSxbInBhdGgiLHtkOiJNNCA0YTE2IDE2IDAgMCAxIDE2IDE2In1dLFsiY2lyY2xlIix7Y3g6IjUiLGN5OiIxOSIscjoiMSJ9XV19KTt2YXIgT2osdFdlPWcoKCk9PntPaj1bWyJwYXRoIix7ZDoiTTEwIDE1di0zIn1dLFsicGF0aCIse2Q6Ik0xNCAxNXYtMyJ9XSxbInBhdGgiLHtkOiJNMTggMTV2LTMifV0sWyJwYXRoIix7ZDoiTTIgOFY0In1dLFsicGF0aCIse2Q6Ik0yMiA2SDIifV0sWyJwYXRoIix7ZDoiTTIyIDhWNCJ9XSxbInBhdGgiLHtkOiJNNiAxNXYtMyJ9XSxbInJlY3QiLHt4OiIyIix5OiIxMiIsd2lkdGg6IjIwIixoZWlnaHQ6IjgiLHJ4OiIyIn1dXX0pO3ZhciBGaixhV2U9ZygoKT0+e0ZqPVtbInBhdGgiLHtkOiJNMjEuMyAxNS4zYTIuNCAyLjQgMCAwIDEgMCAzLjRsLTIuNiAyLjZhMi40IDIuNCAwIDAgMS0zLjQgMEwyLjcgOC43YTIuNDEgMi40MSAwIDAgMSAwLTMuNGwyLjYtMi42YTIuNDEgMi40MSAwIDAgMSAzLjQgMFoifV0sWyJwYXRoIix7ZDoibTE0LjUgMTIuNSAyLTIifV0sWyJwYXRoIix7ZDoibTExLjUgOS41IDItMiJ9XSxbInBhdGgiLHtkOiJtOC41IDYuNSAyLTIifV0sWyJwYXRoIix7ZDoibTE3LjUgMTUuNSAyLTIifV1dfSk7dmFyIEJqLHNXZT1nKCgpPT57Qmo9W1sicGF0aCIse2Q6Ik02IDExaDhhNCA0IDAgMCAwIDAtOEg5djE4In1dLFsicGF0aCIse2Q6Ik02IDE1aDgifV1dfSk7dmFyIEhqLGlXZT1nKCgpPT57SGo9W1sicGF0aCIse2Q6Ik0xMCAydjE1In1dLFsicGF0aCIse2Q6Ik03IDIyYTQgNCAwIDAgMS00LTQgMSAxIDAgMCAxIDEtMWgxNmExIDEgMCAwIDEgMSAxIDQgNCAwIDAgMS00IDR6In1dLFsicGF0aCIse2Q6Ik05LjE1OSAyLjQ2YTEgMSAwIDAgMSAxLjUyMS0uMTkzbDkuOTc3IDguOThBMSAxIDAgMCAxIDIwIDEzSDRhMSAxIDAgMCAxLS44MjQtMS41Njd6In1dXX0pO3ZhciBxaixyV2U9ZygoKT0+e3FqPVtbInBhdGgiLHtkOiJNNyAyMWgxMCJ9XSxbInBhdGgiLHtkOiJNMTIgMjFhOSA5IDAgMCAwIDktOUgzYTkgOSAwIDAgMCA5IDlaIn1dLFsicGF0aCIse2Q6Ik0xMS4zOCAxMmEyLjQgMi40IDAgMCAxLS40LTQuNzcgMi40IDIuNCAwIDAgMSAzLjItMi43NyAyLjQgMi40IDAgMCAxIDMuNDctLjYzIDIuNCAyLjQgMCAwIDEgMy4zNyAzLjM3IDIuNCAyLjQgMCAwIDEtMS4xIDMuNyAyLjUxIDIuNTEgMCAwIDEgLjAzIDEuMSJ9XSxbInBhdGgiLHtkOiJtMTMgMTIgNC00In1dLFsicGF0aCIse2Q6Ik0xMC45IDcuMjVBMy45OSAzLjk5IDAgMCAwIDQgMTBjMCAuNzMuMiAxLjQxLjU0IDIifV1dfSk7dmFyIGpqLG9XZT1nKCgpPT57amo9W1sicGF0aCIse2Q6Im0yLjM3IDExLjIyMyA4LjM3Mi02Ljc3N2EyIDIgMCAwIDEgMi41MTYgMGw4LjM3MSA2Ljc3NyJ9XSxbInBhdGgiLHtkOiJNMjEgMTVhMSAxIDAgMCAxIDEgMXYyYTEgMSAwIDAgMS0xIDFoLTUuMjUifV0sWyJwYXRoIix7ZDoiTTMgMTVhMSAxIDAgMCAwLTEgMXYyYTEgMSAwIDAgMCAxIDFoOSJ9XSxbInBhdGgiLHtkOiJtNi42NyAxNSA2LjEzIDQuNmEyIDIgMCAwIDAgMi44LS40bDMuMTUtNC4yIn1dLFsicmVjdCIse3dpZHRoOiIyMCIsaGVpZ2h0OiI0Iix4OiIyIix5OiIxMSIscng6IjEifV1dfSk7dmFyIFZqLG5XZT1nKCgpPT57Vmo9W1sicGF0aCIse2Q6Im0xMy41IDYuNS0zLjE0OC0zLjE0OGExLjIwNSAxLjIwNSAwIDAgMC0xLjcwNCAwTDYuMzUyIDUuNjQ4YTEuMjA1IDEuMjA1IDAgMCAwIDAgMS43MDRMOS41IDEwLjUifV0sWyJwYXRoIix7ZDoiTTE2LjUgNy41IDE5IDUifV0sWyJwYXRoIix7ZDoibTE3LjUgMTAuNSAzLjE0OCAzLjE0OGExLjIwNSAxLjIwNSAwIDAgMSAwIDEuNzA0bC0yLjI5NiAyLjI5NmExLjIwNSAxLjIwNSAwIDAgMS0xLjcwNCAwTDEzLjUgMTQuNSJ9XSxbInBhdGgiLHtkOiJNOSAyMWE2IDYgMCAwIDAtNi02In1dLFsicGF0aCIse2Q6Ik05LjM1MiAxMC42NDhhMS4yMDUgMS4yMDUgMCAwIDAgMCAxLjcwNGwyLjI5NiAyLjI5NmExLjIwNSAxLjIwNSAwIDAgMCAxLjcwNCAwbDQuMjk2LTQuMjk2YTEuMjA1IDEuMjA1IDAgMCAwIDAtMS43MDRsLTIuMjk2LTIuMjk2YTEuMjA1IDEuMjA1IDAgMCAwLTEuNzA0IDB6In1dXX0pO3ZhciBVaixsV2U9ZygoKT0+e1VqPVtbInBhdGgiLHtkOiJNNCAxMGE3LjMxIDcuMzEgMCAwIDAgMTAgMTBaIn1dLFsicGF0aCIse2Q6Im05IDE1IDMtMyJ9XSxbInBhdGgiLHtkOiJNMTcgMTNhNiA2IDAgMCAwLTYtNiJ9XSxbInBhdGgiLHtkOiJNMjEgMTNBMTAgMTAgMCAwIDAgMTEgMyJ9XV19KTt2YXIgV2osY1dlPWcoKCk9PntXaj1bWyJwYXRoIix7ZDoibTIwIDE5LjUtNS41IDEuMiJ9XSxbInBhdGgiLHtkOiJNMTQuNSA0djExLjIyYTEgMSAwIDAgMCAxLjI0Mi45N0wyMCAxNS4yIn1dLFsicGF0aCIse2Q6Im0yLjk3OCAxOS4zNTEgNS41NDktMS4zNjNBMiAyIDAgMCAwIDEwIDE2VjIifV0sWyJwYXRoIix7ZDoiTTIwIDEwIDQgMTMuNSJ9XV19KTt2YXIgR2osZFdlPWcoKCk9PntHaj1bWyJwYXRoIix7ZDoiTTEzIDEzSDhhMSAxIDAgMCAwLTEgMXY3In1dLFsicGF0aCIse2Q6Ik0xNCA4aDEifV0sWyJwYXRoIix7ZDoiTTE3IDIxdi00In1dLFsicGF0aCIse2Q6Im0yIDIgMjAgMjAifV0sWyJwYXRoIix7ZDoiTTIwLjQxIDIwLjQxQTIgMiAwIDAgMSAxOSAyMUg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgLjU5LTEuNDEifV0sWyJwYXRoIix7ZDoiTTI5LjUgMTEuNXM1IDUgNCA1In1dLFsicGF0aCIse2Q6Ik05IDNoNi4yYTIgMiAwIDAgMSAxLjQuNmwzLjggMy44YTIgMiAwIDAgMSAuNiAxLjRWMTUifV1dfSk7dmFyIEtqLHVXZT1nKCgpPT57S2o9W1sicGF0aCIse2Q6Ik0xMCAydjNhMSAxIDAgMCAwIDEgMWg1In1dLFsicGF0aCIse2Q6Ik0xOCAxOHYtNmExIDEgMCAwIDAtMS0xaC02YTEgMSAwIDAgMC0xIDF2NiJ9XSxbInBhdGgiLHtkOiJNMTggMjJINGEyIDIgMCAwIDEtMi0yVjYifV0sWyJwYXRoIix7ZDoiTTggMThhMiAyIDAgMCAxLTItMlY0YTIgMiAwIDAgMSAyLTJoOS4xNzJhMiAyIDAgMCAxIDEuNDE0LjU4NmwyLjgyOCAyLjgyOEEyIDIgMCAwIDEgMjIgNi44MjhWMTZhMiAyIDAgMCAxLTIuMDEgMnoifV1dfSk7dmFyIFlqLHBXZT1nKCgpPT57WWo9W1sicGF0aCIse2Q6Ik0xNS4yIDNhMiAyIDAgMCAxIDEuNC42bDMuOCAzLjhhMiAyIDAgMCAxIC42IDEuNFYxOWEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJ6In1dLFsicGF0aCIse2Q6Ik0xNyAyMXYtN2ExIDEgMCAwIDAtMS0xSDhhMSAxIDAgMCAwLTEgMXY3In1dLFsicGF0aCIse2Q6Ik03IDN2NGExIDEgMCAwIDAgMSAxaDcifV1dfSk7dmFyIFE2LGhXZT1nKCgpPT57UTY9W1sicGF0aCIse2Q6Ik01IDd2MTFhMSAxIDAgMCAwIDEgMWgxMSJ9XSxbInBhdGgiLHtkOiJNNS4yOTMgMTguNzA3IDExIDEzIn1dLFsiY2lyY2xlIix7Y3g6IjE5IixjeToiMTkiLHI6IjIifV0sWyJjaXJjbGUiLHtjeDoiNSIsY3k6IjUiLHI6IjIifV1dfSk7dmFyIFpqLGZXZT1nKCgpPT57Wmo9W1sicGF0aCIse2Q6Ik0xMiAzdjE4In1dLFsicGF0aCIse2Q6Im0xOSA4IDMgOGE1IDUgMCAwIDEtNiAwelY3In1dLFsicGF0aCIse2Q6Ik0zIDdoMWExNyAxNyAwIDAgMCA4LTIgMTcgMTcgMCAwIDAgOCAyaDEifV0sWyJwYXRoIix7ZDoibTUgOCAzIDhhNSA1IDAgMCAxLTYgMHpWNyJ9XSxbInBhdGgiLHtkOiJNNyAyMWgxMCJ9XV19KTt2YXIgWGosbVdlPWcoKCk9PntYaj1bWyJwYXRoIix7ZDoiTTMgN1Y1YTIgMiAwIDAgMSAyLTJoMiJ9XSxbInBhdGgiLHtkOiJNMTcgM2gyYTIgMiAwIDAgMSAyIDJ2MiJ9XSxbInBhdGgiLHtkOiJNMjEgMTd2MmEyIDIgMCAwIDEtMiAyaC0yIn1dLFsicGF0aCIse2Q6Ik03IDIxSDVhMiAyIDAgMCAxLTItMnYtMiJ9XSxbInBhdGgiLHtkOiJNOCA3djEwIn1dLFsicGF0aCIse2Q6Ik0xMiA3djEwIn1dLFsicGF0aCIse2Q6Ik0xNyA3djEwIn1dXX0pO3ZhciBRaixnV2U9ZygoKT0+e1FqPVtbInBhdGgiLHtkOiJNMTIgM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGEyIDIgMCAwIDAgMi0ydi03In1dLFsicGF0aCIse2Q6Ik0xNCAxNUg5di01In1dLFsicGF0aCIse2Q6Ik0xNiAzaDV2NSJ9XSxbInBhdGgiLHtkOiJNMjEgMyA5IDE1In1dXX0pO3ZhciBKaixiV2U9ZygoKT0+e0pqPVtbInBhdGgiLHtkOiJNMyA3VjVhMiAyIDAgMCAxIDItMmgyIn1dLFsicGF0aCIse2Q6Ik0xNyAzaDJhMiAyIDAgMCAxIDIgMnYyIn1dLFsicGF0aCIse2Q6Ik0yMSAxN3YyYTIgMiAwIDAgMS0yIDJoLTIifV0sWyJwYXRoIix7ZDoiTTcgMjFINWEyIDIgMCAwIDEtMi0ydi0yIn1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEifV0sWyJwYXRoIix7ZDoiTTE4Ljk0NCAxMi4zM2ExIDEgMCAwIDAgMC0uNjYgNy41IDcuNSAwIDAgMC0xMy44ODggMCAxIDEgMCAwIDAgMCAuNjYgNy41IDcuNSAwIDAgMCAxMy44ODggMCJ9XV19KTt2YXIgZVYsdldlPWcoKCk9PntlVj1bWyJwYXRoIix7ZDoiTTMgN1Y1YTIgMiAwIDAgMSAyLTJoMiJ9XSxbInBhdGgiLHtkOiJNMTcgM2gyYTIgMiAwIDAgMSAyIDJ2MiJ9XSxbInBhdGgiLHtkOiJNMjEgMTd2MmEyIDIgMCAwIDEtMiAyaC0yIn1dLFsicGF0aCIse2Q6Ik03IDIxSDVhMiAyIDAgMCAxLTItMnYtMiJ9XSxbInBhdGgiLHtkOiJNOCAxNHMxLjUgMiA0IDIgNC0yIDQtMiJ9XSxbInBhdGgiLHtkOiJNOSA5aC4wMSJ9XSxbInBhdGgiLHtkOiJNMTUgOWguMDEifV1dfSk7dmFyIHRWLHhXZT1nKCgpPT57dFY9W1sicGF0aCIse2Q6Ik0xNyAzaDJhMiAyIDAgMCAxIDIgMnYyIn1dLFsicGF0aCIse2Q6Ik0yMSAxN3YyYTIgMiAwIDAgMS0yIDJoLTIifV0sWyJwYXRoIix7ZDoiTTMgN1Y1YTIgMiAwIDAgMSAyLTJoMiJ9XSxbInBhdGgiLHtkOiJNNyAyMUg1YTIgMiAwIDAgMS0yLTJ2LTIifV0sWyJwYXRoIix7ZDoiTTcuODI4IDEzLjA3QTMgMyAwIDAgMSAxMiA4Ljc2NGEzIDMgMCAwIDEgNC4xNzIgNC4zMDZsLTMuNDQ3IDMuNjJhMSAxIDAgMCAxLTEuNDQ5IDB6In1dXX0pO3ZhciBhVix5V2U9ZygoKT0+e2FWPVtbInBhdGgiLHtkOiJNMyA3VjVhMiAyIDAgMCAxIDItMmgyIn1dLFsicGF0aCIse2Q6Ik0xNyAzaDJhMiAyIDAgMCAxIDIgMnYyIn1dLFsicGF0aCIse2Q6Ik0yMSAxN3YyYTIgMiAwIDAgMS0yIDJoLTIifV0sWyJwYXRoIix7ZDoiTTcgMjFINWEyIDIgMCAwIDEtMi0ydi0yIn1dLFsicGF0aCIse2Q6Ik03IDEyaDEwIn1dXX0pO3ZhciBzVix3V2U9ZygoKT0+e3NWPVtbInBhdGgiLHtkOiJNMTcgMTJ2NGExIDEgMCAwIDEtMSAxaC00In1dLFsicGF0aCIse2Q6Ik0xNyAzaDJhMiAyIDAgMCAxIDIgMnYyIn1dLFsicGF0aCIse2Q6Ik0xNyA4VjcifV0sWyJwYXRoIix7ZDoiTTIxIDE3djJhMiAyIDAgMCAxLTIgMmgtMiJ9XSxbInBhdGgiLHtkOiJNMyA3VjVhMiAyIDAgMCAxIDItMmgyIn1dLFsicGF0aCIse2Q6Ik03IDE3aC4wMSJ9XSxbInBhdGgiLHtkOiJNNyAyMUg1YTIgMiAwIDAgMS0yLTJ2LTIifV0sWyJyZWN0Iix7eDoiNyIseToiNyIsd2lkdGg6IjUiLGhlaWdodDoiNSIscng6IjEifV1dfSk7dmFyIGlWLGtXZT1nKCgpPT57aVY9W1sicGF0aCIse2Q6Ik0zIDdWNWEyIDIgMCAwIDEgMi0yaDIifV0sWyJwYXRoIix7ZDoiTTE3IDNoMmEyIDIgMCAwIDEgMiAydjIifV0sWyJwYXRoIix7ZDoiTTIxIDE3djJhMiAyIDAgMCAxLTIgMmgtMiJ9XSxbInBhdGgiLHtkOiJNNyAyMUg1YTIgMiAwIDAgMS0yLTJ2LTIifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMyJ9XSxbInBhdGgiLHtkOiJtMTYgMTYtMS45LTEuOSJ9XV19KTt2YXIgclYsU1dlPWcoKCk9PntyVj1bWyJwYXRoIix7ZDoiTTMgN1Y1YTIgMiAwIDAgMSAyLTJoMiJ9XSxbInBhdGgiLHtkOiJNMTcgM2gyYTIgMiAwIDAgMSAyIDJ2MiJ9XSxbInBhdGgiLHtkOiJNMjEgMTd2MmEyIDIgMCAwIDEtMiAyaC0yIn1dLFsicGF0aCIse2Q6Ik03IDIxSDVhMiAyIDAgMCAxLTItMnYtMiJ9XSxbInBhdGgiLHtkOiJNNyA4aDgifV0sWyJwYXRoIix7ZDoiTTcgMTJoMTAifV0sWyJwYXRoIix7ZDoiTTcgMTZoNiJ9XV19KTt2YXIgb1YsX1dlPWcoKCk9PntvVj1bWyJwYXRoIix7ZDoiTTMgN1Y1YTIgMiAwIDAgMSAyLTJoMiJ9XSxbInBhdGgiLHtkOiJNMTcgM2gyYTIgMiAwIDAgMSAyIDJ2MiJ9XSxbInBhdGgiLHtkOiJNMjEgMTd2MmEyIDIgMCAwIDEtMiAyaC0yIn1dLFsicGF0aCIse2Q6Ik03IDIxSDVhMiAyIDAgMCAxLTItMnYtMiJ9XV19KTt2YXIgblYsTVdlPWcoKCk9PntuVj1bWyJwYXRoIix7ZDoiTTE0IDIxdi0zYTIgMiAwIDAgMC00IDB2MyJ9XSxbInBhdGgiLHtkOiJNMTggNC45MzNWMjEifV0sWyJwYXRoIix7ZDoibTQgNiA3LjEwNi0zLjc5YTIgMiAwIDAgMSAxLjc4OCAwTDIwIDYifV0sWyJwYXRoIix7ZDoibTYgMTEtMy41MiAyLjE0N2ExIDEgMCAwIDAtLjQ4Ljg1NFYxOWEyIDIgMCAwIDAgMiAyaDE2YTIgMiAwIDAgMCAyLTJ2LTVhMSAxIDAgMCAwLS40OC0uODUzTDE4IDExIn1dLFsicGF0aCIse2Q6Ik02IDQuOTMzVjIxIn1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiOSIscjoiMiJ9XV19KTt2YXIgbFYseldlPWcoKCk9PntsVj1bWyJwYXRoIix7ZDoiTTUuNDIgOS40MiA4IDEyIn1dLFsiY2lyY2xlIix7Y3g6IjQiLGN5OiI4IixyOiIyIn1dLFsicGF0aCIse2Q6Im0xNCA2LTguNTggOC41OCJ9XSxbImNpcmNsZSIse2N4OiI0IixjeToiMTYiLHI6IjIifV0sWyJwYXRoIix7ZDoiTTEwLjggMTQuOCAxNCAxOCJ9XSxbInBhdGgiLHtkOiJNMTYgMTJoLTIifV0sWyJwYXRoIix7ZDoiTTIyIDEyaC0yIn1dXX0pO3ZhciBjVixDV2U9ZygoKT0+e2NWPVtbImNpcmNsZSIse2N4OiI2IixjeToiNiIscjoiMyJ9XSxbInBhdGgiLHtkOiJNOC4xMiA4LjEyIDEyIDEyIn1dLFsicGF0aCIse2Q6Ik0yMCA0IDguMTIgMTUuODgifV0sWyJjaXJjbGUiLHtjeDoiNiIsY3k6IjE4IixyOiIzIn1dLFsicGF0aCIse2Q6Ik0xNC44IDE0LjggMjAgMjAifV1dfSk7dmFyIGRWLFRXZT1nKCgpPT57ZFY9W1sicGF0aCIse2Q6Ik0yMSA0aC0zLjVsMiAxMS4wNSJ9XSxbInBhdGgiLHtkOiJNNi45NSAxN2g1LjE0MmMuNTIzIDAgLjk1LS40MDYgMS4wNjMtLjkxNmE2LjUgNi41IDAgMCAxIDUuMzQ1LTUuMDA5In1dLFsiY2lyY2xlIix7Y3g6IjE5LjUiLGN5OiIxNy41IixyOiIyLjUifV0sWyJjaXJjbGUiLHtjeDoiNC41IixjeToiMTcuNSIscjoiMi41In1dXX0pO3ZhciB1ViwkV2U9ZygoKT0+e3VWPVtbInBhdGgiLHtkOiJNMTMgM0g0YTIgMiAwIDAgMC0yIDJ2MTBhMiAyIDAgMCAwIDIgMmgxNmEyIDIgMCAwIDAgMi0ydi0zIn1dLFsicGF0aCIse2Q6Ik04IDIxaDgifV0sWyJwYXRoIix7ZDoiTTEyIDE3djQifV0sWyJwYXRoIix7ZDoibTIyIDMtNSA1In1dLFsicGF0aCIse2Q6Im0xNyAzIDUgNSJ9XV19KTt2YXIgcFYsRFdlPWcoKCk9PntwVj1bWyJwYXRoIix7ZDoiTTEzIDNINGEyIDIgMCAwIDAtMiAydjEwYTIgMiAwIDAgMCAyIDJoMTZhMiAyIDAgMCAwIDItMnYtMyJ9XSxbInBhdGgiLHtkOiJNOCAyMWg4In1dLFsicGF0aCIse2Q6Ik0xMiAxN3Y0In1dLFsicGF0aCIse2Q6Im0xNyA4IDUtNSJ9XSxbInBhdGgiLHtkOiJNMTcgM2g1djUifV1dfSk7dmFyIGhWLExXZT1nKCgpPT57aFY9W1sicGF0aCIse2Q6Ik0xNSAxMmgtNSJ9XSxbInBhdGgiLHtkOiJNMTUgOGgtNSJ9XSxbInBhdGgiLHtkOiJNMTkgMTdWNWEyIDIgMCAwIDAtMi0ySDQifV0sWyJwYXRoIix7ZDoiTTggMjFoMTJhMiAyIDAgMCAwIDItMnYtMWExIDEgMCAwIDAtMS0xSDExYTEgMSAwIDAgMC0xIDF2MWEyIDIgMCAxIDEtNCAwVjVhMiAyIDAgMSAwLTQgMHYyYTEgMSAwIDAgMCAxIDFoMyJ9XV19KTt2YXIgZlYsRVdlPWcoKCk9PntmVj1bWyJwYXRoIix7ZDoiTTE5IDE3VjVhMiAyIDAgMCAwLTItMkg0In1dLFsicGF0aCIse2Q6Ik04IDIxaDEyYTIgMiAwIDAgMCAyLTJ2LTFhMSAxIDAgMCAwLTEtMUgxMWExIDEgMCAwIDAtMSAxdjFhMiAyIDAgMSAxLTQgMFY1YTIgMiAwIDEgMC00IDB2MmExIDEgMCAwIDAgMSAxaDMifV1dfSk7dmFyIG1WLFBXZT1nKCgpPT57bVY9W1siY2lyY2xlIix7Y3g6IjExIixjeToiMTEiLHI6IjgifV0sWyJwYXRoIix7ZDoibTIxIDIxLTQuMy00LjMifV0sWyJwYXRoIix7ZDoiTTExIDd2NCJ9XSxbInBhdGgiLHtkOiJNMTEgMTVoLjAxIn1dXX0pO3ZhciBnVixJV2U9ZygoKT0+e2dWPVtbInBhdGgiLHtkOiJtOCAxMSAyIDIgNC00In1dLFsiY2lyY2xlIix7Y3g6IjExIixjeToiMTEiLHI6IjgifV0sWyJwYXRoIix7ZDoibTIxIDIxLTQuMy00LjMifV1dfSk7dmFyIGJWLEFXZT1nKCgpPT57YlY9W1sicGF0aCIse2Q6Im0xMyAxMy41IDItMi41LTItMi41In1dLFsicGF0aCIse2Q6Im0yMSAyMS00LjMtNC4zIn1dLFsicGF0aCIse2Q6Ik05IDguNSA3IDExbDIgMi41In1dLFsiY2lyY2xlIix7Y3g6IjExIixjeToiMTEiLHI6IjgifV1dfSk7dmFyIHZWLE5XZT1nKCgpPT57dlY9W1sicGF0aCIse2Q6Im0xMy41IDguNS01IDUifV0sWyJjaXJjbGUiLHtjeDoiMTEiLGN5OiIxMSIscjoiOCJ9XSxbInBhdGgiLHtkOiJtMjEgMjEtNC4zLTQuMyJ9XV19KTt2YXIgeFYsUldlPWcoKCk9Pnt4Vj1bWyJwYXRoIix7ZDoibTEzLjUgOC41LTUgNSJ9XSxbInBhdGgiLHtkOiJtOC41IDguNSA1IDUifV0sWyJjaXJjbGUiLHtjeDoiMTEiLGN5OiIxMSIscjoiOCJ9XSxbInBhdGgiLHtkOiJtMjEgMjEtNC4zLTQuMyJ9XV19KTt2YXIgeVYsT1dlPWcoKCk9Pnt5Vj1bWyJwYXRoIix7ZDoibTIxIDIxLTQuMzQtNC4zNCJ9XSxbImNpcmNsZSIse2N4OiIxMSIsY3k6IjExIixyOiI4In1dXX0pO3ZhciB3VixGV2U9ZygoKT0+e3dWPVtbInBhdGgiLHtkOiJNMTYgNWE0IDMgMCAwIDAtOCAwYzAgNCA4IDMgOCA3YTQgMyAwIDAgMS04IDAifV0sWyJwYXRoIix7ZDoiTTggMTlhNCAzIDAgMCAwIDggMGMwLTQtOC0zLTgtN2E0IDMgMCAwIDEgOCAwIn1dXX0pO3ZhciBKNixCV2U9ZygoKT0+e0o2PVtbInBhdGgiLHtkOiJNMy43MTQgMy4wNDhhLjQ5OC40OTggMCAwIDAtLjY4My42MjdsMi44NDMgNy42MjdhMiAyIDAgMCAxIDAgMS4zOTZsLTIuODQyIDcuNjI3YS40OTguNDk4IDAgMCAwIC42ODIuNjI3bDE4LTguNWEuNS41IDAgMCAwIDAtLjkwNHoifV0sWyJwYXRoIix7ZDoiTTYgMTJoMTYifV1dfSk7dmFyIGtWLEhXZT1nKCgpPT57a1Y9W1sicmVjdCIse3g6IjE0Iix5OiIxNCIsd2lkdGg6IjgiLGhlaWdodDoiOCIscng6IjIifV0sWyJyZWN0Iix7eDoiMiIseToiMiIsd2lkdGg6IjgiLGhlaWdodDoiOCIscng6IjIifV0sWyJwYXRoIix7ZDoiTTcgMTR2MWEyIDIgMCAwIDAgMiAyaDEifV0sWyJwYXRoIix7ZDoiTTE0IDdoMWEyIDIgMCAwIDEgMiAydjEifV1dfSk7dmFyIFNWLHFXZT1nKCgpPT57U1Y9W1sicGF0aCIse2Q6Ik0xNC41MzYgMjEuNjg2YS41LjUgMCAwIDAgLjkzNy0uMDI0bDYuNS0xOWEuNDk2LjQ5NiAwIDAgMC0uNjM1LS42MzVsLTE5IDYuNWEuNS41IDAgMCAwLS4wMjQuOTM3bDcuOTMgMy4xOGEyIDIgMCAwIDEgMS4xMTIgMS4xMXoifV0sWyJwYXRoIix7ZDoibTIxLjg1NCAyLjE0Ny0xMC45NCAxMC45MzkifV1dfSk7dmFyIF9WLGpXZT1nKCgpPT57X1Y9W1sicGF0aCIse2Q6Im0xNiAxNi00IDQtNC00In1dLFsicGF0aCIse2Q6Ik0zIDEyaDE4In1dLFsicGF0aCIse2Q6Im04IDggNC00IDQgNCJ9XV19KTt2YXIgTVYsVldlPWcoKCk9PntNVj1bWyJwYXRoIix7ZDoiTTEyIDN2MTgifV0sWyJwYXRoIix7ZDoibTE2IDE2IDQtNC00LTQifV0sWyJwYXRoIix7ZDoibTggOC00IDQgNCA0In1dXX0pO3ZhciB6VixVV2U9ZygoKT0+e3pWPVtbInBhdGgiLHtkOiJtMTAuODUyIDE0Ljc3Mi0uMzgzLjkyMyJ9XSxbInBhdGgiLHtkOiJNMTMuMTQ4IDE0Ljc3MmEzIDMgMCAxIDAtMi4yOTYtNS41NDRsLS4zODMtLjkyMyJ9XSxbInBhdGgiLHtkOiJtMTMuMTQ4IDkuMjI4LjM4My0uOTIzIn1dLFsicGF0aCIse2Q6Im0xMy41MyAxNS42OTYtLjM4Mi0uOTI0YTMgMyAwIDEgMS0yLjI5Ni01LjU0NCJ9XSxbInBhdGgiLHtkOiJtMTQuNzcyIDEwLjg1Mi45MjMtLjM4MyJ9XSxbInBhdGgiLHtkOiJtMTQuNzcyIDEzLjE0OC45MjMuMzgzIn1dLFsicGF0aCIse2Q6Ik00LjUgMTBINGEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmgxNmEyIDIgMCAwIDEgMiAydjRhMiAyIDAgMCAxLTIgMmgtLjUifV0sWyJwYXRoIix7ZDoiTTQuNSAxNEg0YTIgMiAwIDAgMC0yIDJ2NGEyIDIgMCAwIDAgMiAyaDE2YTIgMiAwIDAgMCAyLTJ2LTRhMiAyIDAgMCAwLTItMmgtLjUifV0sWyJwYXRoIix7ZDoiTTYgMThoLjAxIn1dLFsicGF0aCIse2Q6Ik02IDZoLjAxIn1dLFsicGF0aCIse2Q6Im05LjIyOCAxMC44NTItLjkyMy0uMzgzIn1dLFsicGF0aCIse2Q6Im05LjIyOCAxMy4xNDgtLjkyMy4zODMifV1dfSk7dmFyIENWLFdXZT1nKCgpPT57Q1Y9W1sicGF0aCIse2Q6Ik02IDEwSDRhMiAyIDAgMCAxLTItMlY0YTIgMiAwIDAgMSAyLTJoMTZhMiAyIDAgMCAxIDIgMnY0YTIgMiAwIDAgMS0yIDJoLTIifV0sWyJwYXRoIix7ZDoiTTYgMTRINGEyIDIgMCAwIDAtMiAydjRhMiAyIDAgMCAwIDIgMmgxNmEyIDIgMCAwIDAgMi0ydi00YTIgMiAwIDAgMC0yLTJoLTIifV0sWyJwYXRoIix7ZDoiTTYgNmguMDEifV0sWyJwYXRoIix7ZDoiTTYgMThoLjAxIn1dLFsicGF0aCIse2Q6Im0xMyA2LTQgNmg2bC00IDYifV1dfSk7dmFyIFRWLEdXZT1nKCgpPT57VFY9W1sicGF0aCIse2Q6Ik03IDJoMTNhMiAyIDAgMCAxIDIgMnY0YTIgMiAwIDAgMS0yIDJoLTUifV0sWyJwYXRoIix7ZDoiTTEwIDEwIDIuNSAyLjVDMiAyIDIgMi41IDIgNXYzYTIgMiAwIDAgMCAyIDJoNnoifV0sWyJwYXRoIix7ZDoiTTIyIDE3di0xYTIgMiAwIDAgMC0yLTJoLTEifV0sWyJwYXRoIix7ZDoiTTQgMTRhMiAyIDAgMCAwLTIgMnY0YTIgMiAwIDAgMCAyIDJoMTYuNWwxLS41LjUuNS04LThINHoifV0sWyJwYXRoIix7ZDoiTTYgMThoLjAxIn1dLFsicGF0aCIse2Q6Im0yIDIgMjAgMjAifV1dfSk7dmFyICRWLEtXZT1nKCgpPT57JFY9W1sicmVjdCIse3dpZHRoOiIyMCIsaGVpZ2h0OiI4Iix4OiIyIix5OiIyIixyeDoiMiIscnk6IjIifV0sWyJyZWN0Iix7d2lkdGg6IjIwIixoZWlnaHQ6IjgiLHg6IjIiLHk6IjE0IixyeDoiMiIscnk6IjIifV0sWyJsaW5lIix7eDE6IjYiLHgyOiI2LjAxIix5MToiNiIseTI6IjYifV0sWyJsaW5lIix7eDE6IjYiLHgyOiI2LjAxIix5MToiMTgiLHkyOiIxOCJ9XV19KTt2YXIgRFYsWVdlPWcoKCk9PntEVj1bWyJwYXRoIix7ZDoiTTE0IDE3SDUifV0sWyJwYXRoIix7ZDoiTTE5IDdoLTkifV0sWyJjaXJjbGUiLHtjeDoiMTciLGN5OiIxNyIscjoiMyJ9XSxbImNpcmNsZSIse2N4OiI3IixjeToiNyIscjoiMyJ9XV19KTt2YXIgTFYsWldlPWcoKCk9PntMVj1bWyJwYXRoIix7ZDoiTTguMyAxMGEuNy43IDAgMCAxLS42MjYtMS4wNzlMMTEuNCAzYS43LjcgMCAwIDEgMS4xOTgtLjA0M0wxNi4zIDguOWEuNy43IDAgMCAxLS41NzIgMS4xWiJ9XSxbInJlY3QiLHt4OiIzIix5OiIxNCIsd2lkdGg6IjciLGhlaWdodDoiNyIscng6IjEifV0sWyJjaXJjbGUiLHtjeDoiMTcuNSIsY3k6IjE3LjUiLHI6IjMuNSJ9XV19KTt2YXIgRVYsWFdlPWcoKCk9PntFVj1bWyJwYXRoIix7ZDoiTTkuNjcxIDQuMTM2YTIuMzQgMi4zNCAwIDAgMSA0LjY1OSAwIDIuMzQgMi4zNCAwIDAgMCAzLjMxOSAxLjkxNSAyLjM0IDIuMzQgMCAwIDEgMi4zMyA0LjAzMyAyLjM0IDIuMzQgMCAwIDAgMCAzLjgzMSAyLjM0IDIuMzQgMCAwIDEtMi4zMyA0LjAzMyAyLjM0IDIuMzQgMCAwIDAtMy4zMTkgMS45MTUgMi4zNCAyLjM0IDAgMCAxLTQuNjU5IDAgMi4zNCAyLjM0IDAgMCAwLTMuMzItMS45MTUgMi4zNCAyLjM0IDAgMCAxLTIuMzMtNC4wMzMgMi4zNCAyLjM0IDAgMCAwIDAtMy44MzFBMi4zNCAyLjM0IDAgMCAxIDYuMzUgNi4wNTFhMi4zNCAyLjM0IDAgMCAwIDMuMzE5LTEuOTE1In1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjMifV1dfSk7dmFyIFBWLFFXZT1nKCgpPT57UFY9W1siY2lyY2xlIix7Y3g6IjE4IixjeToiNSIscjoiMyJ9XSxbImNpcmNsZSIse2N4OiI2IixjeToiMTIiLHI6IjMifV0sWyJjaXJjbGUiLHtjeDoiMTgiLGN5OiIxOSIscjoiMyJ9XSxbImxpbmUiLHt4MToiOC41OSIseDI6IjE1LjQyIix5MToiMTMuNTEiLHkyOiIxNy40OSJ9XSxbImxpbmUiLHt4MToiMTUuNDEiLHgyOiI4LjU5Iix5MToiNi41MSIseTI6IjEwLjQ5In1dXX0pO3ZhciBJVixKV2U9ZygoKT0+e0lWPVtbInBhdGgiLHtkOiJNMTIgMnYxMyJ9XSxbInBhdGgiLHtkOiJtMTYgNi00LTQtNCA0In1dLFsicGF0aCIse2Q6Ik00IDEydjhhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0ydi04In1dXX0pO3ZhciBBVixlR2U9ZygoKT0+e0FWPVtbInBhdGgiLHtkOiJNMTQgMTFhMiAyIDAgMSAxLTQgMCA0IDQgMCAwIDEgOCAwIDYgNiAwIDAgMS0xMiAwIDggOCAwIDAgMSAxNiAwIDEwIDEwIDAgMSAxLTIwIDAgMTEuOTMgMTEuOTMgMCAwIDEgMi40Mi03LjIyIDIgMiAwIDEgMSAzLjE2IDIuNDQifV1dfSk7dmFyIE5WLHRHZT1nKCgpPT57TlY9W1sicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiMyIscng6IjIiLHJ5OiIyIn1dLFsibGluZSIse3gxOiIzIix4MjoiMjEiLHkxOiI5Iix5MjoiOSJ9XSxbImxpbmUiLHt4MToiMyIseDI6IjIxIix5MToiMTUiLHkyOiIxNSJ9XSxbImxpbmUiLHt4MToiOSIseDI6IjkiLHkxOiI5Iix5MjoiMjEifV0sWyJsaW5lIix7eDE6IjE1Iix4MjoiMTUiLHkxOiI5Iix5MjoiMjEifV1dfSk7dmFyIFJWLGFHZT1nKCgpPT57UlY9W1sicGF0aCIse2Q6Ik0xMiAxMlY5YTEgMSAwIDAgMC0xLTFIOWExIDEgMCAwIDAtMSAxdjMifV0sWyJwYXRoIix7ZDoiTTE2IDIwdi0zYTEgMSAwIDAgMC0xLTFoLTJhMSAxIDAgMCAwLTEgMXYzIn1dLFsicGF0aCIse2Q6Ik0yMCAyMlYyIn1dLFsicGF0aCIse2Q6Ik00IDEyaDE2In1dLFsicGF0aCIse2Q6Ik00IDIwaDE2In1dLFsicGF0aCIse2Q6Ik00IDJ2MjAifV0sWyJwYXRoIix7ZDoiTTQgNGgxNiJ9XV19KTt2YXIgT1Ysc0dlPWcoKCk9PntPVj1bWyJwYXRoIix7ZDoiTTIwIDEzYzAgNS0zLjUgNy41LTcuNjYgOC45NWExIDEgMCAwIDEtLjY3LS4wMUM3LjUgMjAuNSA0IDE4IDQgMTNWNmExIDEgMCAwIDEgMS0xYzIgMCA0LjUtMS4yIDYuMjQtMi43MmExLjE3IDEuMTcgMCAwIDEgMS41MiAwQzE0LjUxIDMuODEgMTcgNSAxOSA1YTEgMSAwIDAgMSAxIDF6In1dLFsicGF0aCIse2Q6Ik0xMiA4djQifV0sWyJwYXRoIix7ZDoiTTEyIDE2aC4wMSJ9XV19KTt2YXIgRlYsaUdlPWcoKCk9PntGVj1bWyJwYXRoIix7ZDoiTTIwIDEzYzAgNS0zLjUgNy41LTcuNjYgOC45NWExIDEgMCAwIDEtLjY3LS4wMUM3LjUgMjAuNSA0IDE4IDQgMTNWNmExIDEgMCAwIDEgMS0xYzIgMCA0LjUtMS4yIDYuMjQtMi43MmExLjE3IDEuMTcgMCAwIDEgMS41MiAwQzE0LjUxIDMuODEgMTcgNSAxOSA1YTEgMSAwIDAgMSAxIDF6In1dLFsicGF0aCIse2Q6Im00LjI0MyA1LjIxIDE0LjM5IDEyLjQ3MiJ9XV19KTt2YXIgQlYsckdlPWcoKCk9PntCVj1bWyJwYXRoIix7ZDoiTTIwIDEzYzAgNS0zLjUgNy41LTcuNjYgOC45NWExIDEgMCAwIDEtLjY3LS4wMUM3LjUgMjAuNSA0IDE4IDQgMTNWNmExIDEgMCAwIDEgMS0xYzIgMCA0LjUtMS4yIDYuMjQtMi43MmExLjE3IDEuMTcgMCAwIDEgMS41MiAwQzE0LjUxIDMuODEgMTcgNSAxOSA1YTEgMSAwIDAgMSAxIDF6In1dLFsicGF0aCIse2Q6Im05IDEyIDIgMiA0LTQifV1dfSk7dmFyIEhWLG9HZT1nKCgpPT57SFY9W1sicGF0aCIse2Q6Ik0xMSAyMmMtMy44MDYtMS40NS03LTMuOTY2LTctOVY2YTEgMSAwIDAgMSAxLTFjMiAwIDQuNS0xLjIgNi4yNC0yLjcyYTEuMTcgMS4xNyAwIDAgMSAxLjUyIDBDMTQuNTEgMy44MSAxNyA1IDE5IDVhMSAxIDAgMCAxIDEgMXY0In1dLFsicGF0aCIse2Q6Ik0xNC45MjMgMTYuNTQ3IDE0IDE2LjE2NCJ9XSxbInBhdGgiLHtkOiJtMTQuOTIzIDE4Ljg0My0uOTIzLjM4MyJ9XSxbInBhdGgiLHtkOiJNMTYuNTQ3IDE0LjkyMyAxNi4xNjQgMTQifV0sWyJwYXRoIix7ZDoibTE2LjU0NyAyMC40NjctLjM4My45MjQifV0sWyJwYXRoIix7ZDoibTE4Ljg0MyAxNC45MjMuMzgzLS45MjMifV0sWyJwYXRoIix7ZDoibTE5LjIyNSAyMS4zOTEtLjM4Mi0uOTI0In1dLFsicGF0aCIse2Q6Im0yMC40NjcgMTYuNTQ3LjkyMy0uMzgzIn1dLFsicGF0aCIse2Q6Im0yMC40NjcgMTguODQzLjkyMy4zODMifV0sWyJjaXJjbGUiLHtjeDoiMTcuNjk1IixjeToiMTcuNjk1IixyOiIzIn1dXX0pO3ZhciBxVixuR2U9ZygoKT0+e3FWPVtbInBhdGgiLHtkOiJNMjAgMTNjMCA1LTMuNSA3LjUtNy42NiA4Ljk1YTEgMSAwIDAgMS0uNjctLjAxQzcuNSAyMC41IDQgMTggNCAxM1Y2YTEgMSAwIDAgMSAxLTFjMiAwIDQuNS0xLjIgNi4yNC0yLjcyYTEuMTcgMS4xNyAwIDAgMSAxLjUyIDBDMTQuNTEgMy44MSAxNyA1IDE5IDVhMSAxIDAgMCAxIDEgMXoifV0sWyJwYXRoIix7ZDoiTTggMTJoLjAxIn1dLFsicGF0aCIse2Q6Ik0xMiAxMmguMDEifV0sWyJwYXRoIix7ZDoiTTE2IDEyaC4wMSJ9XV19KTt2YXIgalYsbEdlPWcoKCk9PntqVj1bWyJwYXRoIix7ZDoibTEwLjkyOSAxNC40NjctLjM4My45MjQifV0sWyJwYXRoIix7ZDoiTTEwLjkyOSA4LjkyMyAxMC41NDYgOCJ9XSxbInBhdGgiLHtkOiJNMTMuMjI1IDguOTIzIDEzLjYwOCA4In1dLFsicGF0aCIse2Q6Im0xMy42MDcgMTUuMzkxLS4zODItLjkyNCJ9XSxbInBhdGgiLHtkOiJtMTQuODQ5IDEwLjU0Ny45MjMtLjM4MyJ9XSxbInBhdGgiLHtkOiJtMTQuODQ5IDEyLjg0My45MjMuMzgzIn1dLFsicGF0aCIse2Q6Ik0yMCAxM2MwIDUtMy41IDcuNS03LjY2IDguOTVhMSAxIDAgMCAxLS42Ny0uMDFDNy41IDIwLjUgNCAxOCA0IDEzVjZhMSAxIDAgMCAxIDEtMWMyIDAgNC41LTEuMiA2LjI0LTIuNzJhMS4xNyAxLjE3IDAgMCAxIDEuNTIgMEMxNC41MSAzLjgxIDE3IDUgMTkgNWExIDEgMCAwIDEgMSAxeiJ9XSxbInBhdGgiLHtkOiJtOS4zMDUgMTAuNTQ3LS45MjMtLjM4MyJ9XSxbInBhdGgiLHtkOiJtOS4zMDUgMTIuODQzLS45MjMuMzgzIn1dLFsiY2lyY2xlIix7Y3g6IjEyLjA3NyIsY3k6IjExLjY5NSIscjoiMyJ9XV19KTt2YXIgVlYsY0dlPWcoKCk9PntWVj1bWyJwYXRoIix7ZDoiTTIwIDEzYzAgNS0zLjUgNy41LTcuNjYgOC45NWExIDEgMCAwIDEtLjY3LS4wMUM3LjUgMjAuNSA0IDE4IDQgMTNWNmExIDEgMCAwIDEgMS0xYzIgMCA0LjUtMS4yIDYuMjQtMi43MmExLjE3IDEuMTcgMCAwIDEgMS41MiAwQzE0LjUxIDMuODEgMTcgNSAxOSA1YTEgMSAwIDAgMSAxIDF6In1dLFsicGF0aCIse2Q6Ik0xMiAyMlYyIn1dXX0pO3ZhciBVVixkR2U9ZygoKT0+e1VWPVtbInBhdGgiLHtkOiJNMjAgMTNjMCA1LTMuNSA3LjUtNy42NiA4Ljk1YTEgMSAwIDAgMS0uNjctLjAxQzcuNSAyMC41IDQgMTggNCAxM1Y2YTEgMSAwIDAgMSAxLTFjMiAwIDQuNS0xLjIgNi4yNC0yLjcyYTEuMTcgMS4xNyAwIDAgMSAxLjUyIDBDMTQuNTEgMy44MSAxNyA1IDE5IDVhMSAxIDAgMCAxIDEgMXoifV0sWyJwYXRoIix7ZDoiTTkgMTJoNiJ9XV19KTt2YXIgV1YsdUdlPWcoKCk9PntXVj1bWyJwYXRoIix7ZDoibTIgMiAyMCAyMCJ9XSxbInBhdGgiLHtkOiJNNSA1YTEgMSAwIDAgMC0xIDF2N2MwIDUgMy41IDcuNSA3LjY3IDguOTRhMSAxIDAgMCAwIC42Ny4wMWMyLjM1LS44MiA0LjQ4LTEuOTcgNS45LTMuNzEifV0sWyJwYXRoIix7ZDoiTTkuMzA5IDMuNjUyQTEyLjI1MiAxMi4yNTIgMCAwIDAgMTEuMjQgMi4yOGExLjE3IDEuMTcgMCAwIDEgMS41MiAwQzE0LjUxIDMuODEgMTcgNSAxOSA1YTEgMSAwIDAgMSAxIDF2N2E5Ljc4NCA5Ljc4NCAwIDAgMS0uMDggMS4yNjQifV1dfSk7dmFyIEdWLHBHZT1nKCgpPT57R1Y9W1sicGF0aCIse2Q6Ik0yMCAxM2MwIDUtMy41IDcuNS03LjY2IDguOTVhMSAxIDAgMCAxLS42Ny0uMDFDNy41IDIwLjUgNCAxOCA0IDEzVjZhMSAxIDAgMCAxIDEtMWMyIDAgNC41LTEuMiA2LjI0LTIuNzJhMS4xNyAxLjE3IDAgMCAxIDEuNTIgMEMxNC41MSAzLjgxIDE3IDUgMTkgNWExIDEgMCAwIDEgMSAxeiJ9XSxbInBhdGgiLHtkOiJNOSAxMmg2In1dLFsicGF0aCIse2Q6Ik0xMiA5djYifV1dfSk7dmFyIGU1LGhHZT1nKCgpPT57ZTU9W1sicGF0aCIse2Q6Ik0yMCAxM2MwIDUtMy41IDcuNS03LjY2IDguOTVhMSAxIDAgMCAxLS42Ny0uMDFDNy41IDIwLjUgNCAxOCA0IDEzVjZhMSAxIDAgMCAxIDEtMWMyIDAgNC41LTEuMiA2LjI0LTIuNzJhMS4xNyAxLjE3IDAgMCAxIDEuNTIgMEMxNC41MSAzLjgxIDE3IDUgMTkgNWExIDEgMCAwIDEgMSAxeiJ9XSxbInBhdGgiLHtkOiJNOS4xIDlhMyAzIDAgMCAxIDUuODIgMWMwIDItMyAzLTMgMyJ9XSxbInBhdGgiLHtkOiJNMTIgMTdoLjAxIn1dXX0pO3ZhciBLVixmR2U9ZygoKT0+e0tWPVtbInBhdGgiLHtkOiJNMjAgMTNjMCA1LTMuNSA3LjUtNy42NiA4Ljk1YTEgMSAwIDAgMS0uNjctLjAxQzcuNSAyMC41IDQgMTggNCAxM1Y2YTEgMSAwIDAgMSAxLTFjMiAwIDQuNS0xLjIgNi4yNC0yLjcyYTEuMTcgMS4xNyAwIDAgMSAxLjUyIDBDMTQuNTEgMy44MSAxNyA1IDE5IDVhMSAxIDAgMCAxIDEgMXoifV0sWyJwYXRoIix7ZDoiTTYuMzc2IDE4LjkxYTYgNiAwIDAgMSAxMS4yNDkuMDAzIn1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiMTEiLHI6IjQifV1dfSk7dmFyIHQ1LG1HZT1nKCgpPT57dDU9W1sicGF0aCIse2Q6Ik0yMCAxM2MwIDUtMy41IDcuNS03LjY2IDguOTVhMSAxIDAgMCAxLS42Ny0uMDFDNy41IDIwLjUgNCAxOCA0IDEzVjZhMSAxIDAgMCAxIDEtMWMyIDAgNC41LTEuMiA2LjI0LTIuNzJhMS4xNyAxLjE3IDAgMCAxIDEuNTIgMEMxNC41MSAzLjgxIDE3IDUgMTkgNWExIDEgMCAwIDEgMSAxeiJ9XSxbInBhdGgiLHtkOiJtMTQuNSA5LjUtNSA1In1dLFsicGF0aCIse2Q6Im05LjUgOS41IDUgNSJ9XV19KTt2YXIgWVYsZ0dlPWcoKCk9PntZVj1bWyJwYXRoIix7ZDoiTTIwIDEzYzAgNS0zLjUgNy41LTcuNjYgOC45NWExIDEgMCAwIDEtLjY3LS4wMUM3LjUgMjAuNSA0IDE4IDQgMTNWNmExIDEgMCAwIDEgMS0xYzIgMCA0LjUtMS4yIDYuMjQtMi43MmExLjE3IDEuMTcgMCAwIDEgMS41MiAwQzE0LjUxIDMuODEgMTcgNSAxOSA1YTEgMSAwIDAgMSAxIDF6In1dXX0pO3ZhciBaVixiR2U9ZygoKT0+e1pWPVtbInBhdGgiLHtkOiJNMTIgMTAuMTg5VjE0In1dLFsicGF0aCIse2Q6Ik0xMiAydjMifV0sWyJwYXRoIix7ZDoiTTE5IDEzVjdhMiAyIDAgMCAwLTItMkg3YTIgMiAwIDAgMC0yIDJ2NiJ9XSxbInBhdGgiLHtkOiJNMTkuMzggMjBBMTEuNiAxMS42IDAgMCAwIDIxIDE0bC04LjE4OC0zLjYzOWEyIDIgMCAwIDAtMS42MjQgMEwzIDE0YTExLjYgMTEuNiAwIDAgMCAyLjgxIDcuNzYifV0sWyJwYXRoIix7ZDoiTTIgMjFjLjYuNSAxLjIgMSAyLjUgMSAyLjUgMCAyLjUtMiA1LTIgMS4zIDAgMS45LjUgMi41IDFzMS4yIDEgMi41IDFjMi41IDAgMi41LTIgNS0yIDEuMyAwIDEuOS41IDIuNSAxIn1dXX0pO3ZhciBYVix2R2U9ZygoKT0+e1hWPVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiI4In1dLFsicGF0aCIse2Q6Ik0xMiAydjcuNSJ9XSxbInBhdGgiLHtkOiJtMTkgNS01LjIzIDUuMjMifV0sWyJwYXRoIix7ZDoiTTIyIDEyaC03LjUifV0sWyJwYXRoIix7ZDoibTE5IDE5LTUuMjMtNS4yMyJ9XSxbInBhdGgiLHtkOiJNMTIgMTQuNVYyMiJ9XSxbInBhdGgiLHtkOiJNMTAuMjMgMTMuNzcgNSAxOSJ9XSxbInBhdGgiLHtkOiJNOS41IDEySDIifV0sWyJwYXRoIix7ZDoiTTEwLjIzIDEwLjIzIDUgNSJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIyLjUifV1dfSk7dmFyIFFWLHhHZT1nKCgpPT57UVY9W1sicGF0aCIse2Q6Ik0yMC4zOCAzLjQ2IDE2IDJhNCA0IDAgMCAxLTggMEwzLjYyIDMuNDZhMiAyIDAgMCAwLTEuMzQgMi4yM2wuNTggMy40N2ExIDEgMCAwIDAgLjk5Ljg0SDZ2MTBjMCAxLjEuOSAyIDIgMmg4YTIgMiAwIDAgMCAyLTJWMTBoMi4xNWExIDEgMCAwIDAgLjk5LS44NGwuNTgtMy40N2EyIDIgMCAwIDAtMS4zNC0yLjIzeiJ9XV19KTt2YXIgSlYseUdlPWcoKCk9PntKVj1bWyJwYXRoIix7ZDoiTTE2IDEwYTQgNCAwIDAgMS04IDAifV0sWyJwYXRoIix7ZDoiTTMuMTAzIDYuMDM0aDE3Ljc5NCJ9XSxbInBhdGgiLHtkOiJNMy40IDUuNDY3YTIgMiAwIDAgMC0uNCAxLjJWMjBhMiAyIDAgMCAwIDIgMmgxNGEyIDIgMCAwIDAgMi0yVjYuNjY3YTIgMiAwIDAgMC0uNC0xLjJsLTItMi42NjdBMiAyIDAgMCAwIDE3IDJIN2EyIDIgMCAwIDAtMS42Ljh6In1dXX0pO3ZhciBlVSx3R2U9ZygoKT0+e2VVPVtbInBhdGgiLHtkOiJtMTUgMTEtMSA5In1dLFsicGF0aCIse2Q6Im0xOSAxMS00LTcifV0sWyJwYXRoIix7ZDoiTTIgMTFoMjAifV0sWyJwYXRoIix7ZDoibTMuNSAxMSAxLjYgNy40YTIgMiAwIDAgMCAyIDEuNmg5LjhhMiAyIDAgMCAwIDItMS42bDEuNy03LjQifV0sWyJwYXRoIix7ZDoiTTQuNSAxNS41aDE1In1dLFsicGF0aCIse2Q6Im01IDExIDQtNyJ9XSxbInBhdGgiLHtkOiJtOSAxMSAxIDkifV1dfSk7dmFyIHRVLGtHZT1nKCgpPT57dFU9W1siY2lyY2xlIix7Y3g6IjgiLGN5OiIyMSIscjoiMSJ9XSxbImNpcmNsZSIse2N4OiIxOSIsY3k6IjIxIixyOiIxIn1dLFsicGF0aCIse2Q6Ik0yLjA1IDIuMDVoMmwyLjY2IDEyLjQyYTIgMiAwIDAgMCAyIDEuNThoOS43OGEyIDIgMCAwIDAgMS45NS0xLjU3bDEuNjUtNy40M0g1LjEyIn1dXX0pO3ZhciBhVSxTR2U9ZygoKT0+e2FVPVtbInBhdGgiLHtkOiJNMjEuNTYgNC41NmExLjUgMS41IDAgMCAxIDAgMi4xMjJsLS40Ny40N2EzIDMgMCAwIDEtNC4yMTItLjAzIDMgMyAwIDAgMSAwLTQuMjQzbC40NC0uNDRhMS41IDEuNSAwIDAgMSAyLjEyMSAweiJ9XSxbInBhdGgiLHtkOiJNMyAyMmExIDEgMCAwIDEtMS0xdi0zLjU4NmExIDEgMCAwIDEgLjI5My0uNzA3bDMuMzU1LTMuMzU1YTEuMjA1IDEuMjA1IDAgMCAxIDEuNzA0IDBsMy4yOTYgMy4yOTZhMS4yMDUgMS4yMDUgMCAwIDEgMCAxLjcwNGwtMy4zNTUgMy4zNTVhMSAxIDAgMCAxLS43MDcuMjkzeiJ9XSxbInBhdGgiLHtkOiJtOSAxNSA3Ljg3OS03Ljg3OCJ9XV19KTt2YXIgc1UsX0dlPWcoKCk9PntzVT1bWyJwYXRoIix7ZDoibTQgNCAyLjUgMi41In1dLFsicGF0aCIse2Q6Ik0xMy41IDYuNWE0Ljk1IDQuOTUgMCAwIDAtNyA3In1dLFsicGF0aCIse2Q6Ik0xNSA1IDUgMTUifV0sWyJwYXRoIix7ZDoiTTE0IDE3di4wMSJ9XSxbInBhdGgiLHtkOiJNMTAgMTZ2LjAxIn1dLFsicGF0aCIse2Q6Ik0xMyAxM3YuMDEifV0sWyJwYXRoIix7ZDoiTTE2IDEwdi4wMSJ9XSxbInBhdGgiLHtkOiJNMTEgMjB2LjAxIn1dLFsicGF0aCIse2Q6Ik0xNyAxNHYuMDEifV0sWyJwYXRoIix7ZDoiTTIwIDExdi4wMSJ9XV19KTt2YXIgaVUsTUdlPWcoKCk9PntpVT1bWyJwYXRoIix7ZDoiTTQgMTNWNGEyIDIgMCAwIDEgMi0yaDhhMi40IDIuNCAwIDAgMSAxLjcwNi43MDZsMy41ODggMy41ODhBMi40IDIuNCAwIDAgMSAyMCA4djUifV0sWyJwYXRoIix7ZDoiTTE0IDJ2NWExIDEgMCAwIDAgMSAxaDUifV0sWyJwYXRoIix7ZDoiTTEwIDIydi01In1dLFsicGF0aCIse2Q6Ik0xNCAxOXYtMiJ9XSxbInBhdGgiLHtkOiJNMTggMjB2LTMifV0sWyJwYXRoIix7ZDoiTTIgMTNoMjAifV0sWyJwYXRoIix7ZDoiTTYgMjB2LTMifV1dfSk7dmFyIHJVLHpHZT1nKCgpPT57clU9W1sicGF0aCIse2Q6Im0xNSAxNSA2IDZtLTYtNnY0LjhtMC00LjhoNC44In1dLFsicGF0aCIse2Q6Ik05IDE5LjhWMTVtMCAwSDQuMk05IDE1bC02IDYifV0sWyJwYXRoIix7ZDoiTTE1IDQuMlY5bTAgMGg0LjhNMTUgOWw2LTYifV0sWyJwYXRoIix7ZDoiTTkgNC4yVjltMCAwSDQuMk05IDkgMyAzIn1dXX0pO3ZhciBvVSxDR2U9ZygoKT0+e29VPVtbInBhdGgiLHtkOiJNMTEgMTJoLjAxIn1dLFsicGF0aCIse2Q6Ik0xMyAyMmMuNS0uNSAxLjEyLTEgMi41LTEtMS4zOCAwLTItLjUtMi41LTEifV0sWyJwYXRoIix7ZDoiTTE0IDJhMy4yOCAzLjI4IDAgMCAxLTMuMjI3IDEuNzk4bC02LjE3LS41NjFBMi4zODcgMi4zODcgMCAxIDAgNC4zODcgOEgxNS41YTEgMSAwIDAgMSAwIDEzIDEgMSAwIDAgMCAwLTVIMTJhNyA3IDAgMCAxLTctN1Y4In1dLFsicGF0aCIse2Q6Ik0xNCA4YTguNSA4LjUgMCAwIDEgMCA4In1dLFsicGF0aCIse2Q6Ik0xNiAxNmMyIDAgNC41LTQgNC02In1dXX0pO3ZhciBuVSxUR2U9ZygoKT0+e25VPVtbInBhdGgiLHtkOiJNMTIgMjJ2LTUuMTcyYTIgMiAwIDAgMC0uNTg2LTEuNDE0TDkuNSAxMy41In1dLFsicGF0aCIse2Q6Ik0xNC41IDE0LjUgMTIgMTcifV0sWyJwYXRoIix7ZDoiTTE3IDguOEE2IDYgMCAwIDEgMTMuOCAyMEgxMEE2LjUgNi41IDAgMCAxIDcgOGE1IDUgMCAwIDEgMTAgMHoifV1dfSk7dmFyIGxVLCRHZT1nKCgpPT57bFU9W1sicGF0aCIse2Q6Im0xOCAxNCA0IDQtNCA0In1dLFsicGF0aCIse2Q6Im0xOCAyIDQgNC00IDQifV0sWyJwYXRoIix7ZDoiTTIgMThoMS45NzNhNCA0IDAgMCAwIDMuMy0xLjdsNS40NTQtOC42YTQgNCAwIDAgMSAzLjMtMS43SDIyIn1dLFsicGF0aCIse2Q6Ik0yIDZoMS45NzJhNCA0IDAgMCAxIDMuNiAyLjIifV0sWyJwYXRoIix7ZDoiTTIyIDE4aC02LjA0MWE0IDQgMCAwIDEtMy4zLTEuOGwtLjM1OS0uNDUifV1dfSk7dmFyIGNVLERHZT1nKCgpPT57Y1U9W1sicGF0aCIse2Q6Ik0xOCA3VjVhMSAxIDAgMCAwLTEtMUg2LjVhLjUuNSAwIDAgMC0uNC44bDQuNSA2YTIgMiAwIDAgMSAwIDIuNGwtNC41IDZhLjUuNSAwIDAgMCAuNC44SDE3YTEgMSAwIDAgMCAxLTF2LTIifV1dfSk7dmFyIGRVLExHZT1nKCgpPT57ZFU9W1sicGF0aCIse2Q6Ik0yIDIwaC4wMSJ9XSxbInBhdGgiLHtkOiJNNyAyMHYtNCJ9XSxbInBhdGgiLHtkOiJNMTIgMjB2LTgifV0sWyJwYXRoIix7ZDoiTTE3IDIwVjgifV1dfSk7dmFyIHVVLEVHZT1nKCgpPT57dVU9W1sicGF0aCIse2Q6Ik0yIDIwaC4wMSJ9XSxbInBhdGgiLHtkOiJNNyAyMHYtNCJ9XV19KTt2YXIgcFUsUEdlPWcoKCk9PntwVT1bWyJwYXRoIix7ZDoiTTIgMjBoLjAxIn1dLFsicGF0aCIse2Q6Ik03IDIwdi00In1dLFsicGF0aCIse2Q6Ik0xMiAyMHYtOCJ9XV19KTt2YXIgaFUsSUdlPWcoKCk9PntoVT1bWyJwYXRoIix7ZDoiTTIgMjBoLjAxIn1dXX0pO3ZhciBmVSxBR2U9ZygoKT0+e2ZVPVtbInBhdGgiLHtkOiJNMiAyMGguMDEifV0sWyJwYXRoIix7ZDoiTTcgMjB2LTQifV0sWyJwYXRoIix7ZDoiTTEyIDIwdi04In1dLFsicGF0aCIse2Q6Ik0xNyAyMFY4In1dLFsicGF0aCIse2Q6Ik0yMiA0djE2In1dXX0pO3ZhciBtVSxOR2U9ZygoKT0+e21VPVtbInBhdGgiLHtkOiJtMjEgMTctMi4xNTYtMS44NjhBLjUuNSAwIDAgMCAxOCAxNS41di41YTEgMSAwIDAgMS0xIDFoLTJhMSAxIDAgMCAxLTEtMWMwLTIuNTQ1LTMuOTkxLTMuOTctOC41LTRhMSAxIDAgMCAwIDAgNWM0LjE1MyAwIDQuNzQ1LTExLjI5NSA1LjcwOC0xMy41YTIuNSAyLjUgMCAxIDEgMy4zMSAzLjI4NCJ9XSxbInBhdGgiLHtkOiJNMyAyMWgxOCJ9XV19KTt2YXIgZ1UsUkdlPWcoKCk9PntnVT1bWyJwYXRoIix7ZDoiTTEwIDlINEwyIDdsMi0yaDYifV0sWyJwYXRoIix7ZDoiTTE0IDVoNmwyIDItMiAyaC02In1dLFsicGF0aCIse2Q6Ik0xMCAyMlY0YTIgMiAwIDEgMSA0IDB2MTgifV0sWyJwYXRoIix7ZDoiTTggMjJoOCJ9XV19KTt2YXIgYlUsT0dlPWcoKCk9PntiVT1bWyJwYXRoIix7ZDoiTTEyIDEzdjgifV0sWyJwYXRoIix7ZDoiTTEyIDN2MyJ9XSxbInBhdGgiLHtkOiJNMi4zNTQgMTAuMzU0YTEuMjA3IDEuMjA3IDAgMCAxIDAtMS43MDhsMi4wNi0yLjA2QTIgMiAwIDAgMSA1LjgyOCA2aDEyLjM0NGEyIDIgMCAwIDEgMS40MTQuNTg2bDIuMDYgMi4wNmExLjIwNyAxLjIwNyAwIDAgMSAwIDEuNzA4bC0yLjA2IDIuMDZhMiAyIDAgMCAxLTEuNDE0LjU4Nkg1LjgyOGEyIDIgMCAwIDEtMS40MTQtLjU4NnoifV1dfSk7dmFyIHZVLEZHZT1nKCgpPT57dlU9W1sicGF0aCIse2Q6Ik03IDE4di02YTUgNSAwIDEgMSAxMCAwdjYifV0sWyJwYXRoIix7ZDoiTTUgMjFhMSAxIDAgMCAwIDEgMWgxMmExIDEgMCAwIDAgMS0xdi0xYTIgMiAwIDAgMC0yLTJIN2EyIDIgMCAwIDAtMiAyeiJ9XSxbInBhdGgiLHtkOiJNMjEgMTJoMSJ9XSxbInBhdGgiLHtkOiJNMTguNSA0LjUgMTggNSJ9XSxbInBhdGgiLHtkOiJNMiAxMmgxIn1dLFsicGF0aCIse2Q6Ik0xMiAydjEifV0sWyJwYXRoIix7ZDoibTQuOTI5IDQuOTI5LjcwNy43MDcifV0sWyJwYXRoIix7ZDoiTTEyIDEydjYifV1dfSk7dmFyIHhVLEJHZT1nKCgpPT57eFU9W1sicGF0aCIse2Q6Ik0xNy45NzEgNC4yODVBMiAyIDAgMCAxIDIxIDZ2MTJhMiAyIDAgMCAxLTMuMDI5IDEuNzE1bC05Ljk5Ny01Ljk5OGEyIDIgMCAwIDEtLjAwMy0zLjQzMnoifV0sWyJwYXRoIix7ZDoiTTMgMjBWNCJ9XV19KTt2YXIgeVUsSEdlPWcoKCk9Pnt5VT1bWyJwYXRoIix7ZDoiTTIxIDR2MTYifV0sWyJwYXRoIix7ZDoiTTYuMDI5IDQuMjg1QTIgMiAwIDAgMCAzIDZ2MTJhMiAyIDAgMCAwIDMuMDI5IDEuNzE1bDkuOTk3LTUuOTk4YTIgMiAwIDAgMCAuMDAzLTMuNDMyeiJ9XV19KTt2YXIgd1UscUdlPWcoKCk9Pnt3VT1bWyJwYXRoIix7ZDoibTEyLjUgMTctLjUtMS0uNSAxaDF6In1dLFsicGF0aCIse2Q6Ik0xNSAyMmExIDEgMCAwIDAgMS0xdi0xYTIgMiAwIDAgMCAxLjU2LTMuMjUgOCA4IDAgMSAwLTExLjEyIDBBMiAyIDAgMCAwIDggMjB2MWExIDEgMCAwIDAgMSAxeiJ9XSxbImNpcmNsZSIse2N4OiIxNSIsY3k6IjEyIixyOiIxIn1dLFsiY2lyY2xlIix7Y3g6IjkiLGN5OiIxMiIscjoiMSJ9XV19KTt2YXIga1UsakdlPWcoKCk9PntrVT1bWyJwYXRoIix7ZDoiTTIyIDIgMiAyMiJ9XV19KTt2YXIgU1UsVkdlPWcoKCk9PntTVT1bWyJwYXRoIix7ZDoiTTEwIDVIMyJ9XSxbInBhdGgiLHtkOiJNMTIgMTlIMyJ9XSxbInBhdGgiLHtkOiJNMTQgM3Y0In1dLFsicGF0aCIse2Q6Ik0xNiAxN3Y0In1dLFsicGF0aCIse2Q6Ik0yMSAxMmgtOSJ9XSxbInBhdGgiLHtkOiJNMjEgMTloLTUifV0sWyJwYXRoIix7ZDoiTTIxIDVoLTcifV0sWyJwYXRoIix7ZDoiTTggMTB2NCJ9XSxbInBhdGgiLHtkOiJNOCAxMkgzIn1dXX0pO3ZhciBfVSxVR2U9ZygoKT0+e19VPVtbInBhdGgiLHtkOiJNMTEgMTYuNTg2VjE5YTEgMSAwIDAgMS0xIDFIMkwxOC4zNyAzLjYzYTEgMSAwIDEgMSAzIDNsLTkuNjYzIDkuNjYzYTEgMSAwIDAgMS0xLjQxNCAwTDggMTQifV1dfSk7dmFyIGE1LFdHZT1nKCgpPT57YTU9W1sicGF0aCIse2Q6Ik0xMCA4aDQifV0sWyJwYXRoIix7ZDoiTTEyIDIxdi05In1dLFsicGF0aCIse2Q6Ik0xMiA4VjMifV0sWyJwYXRoIix7ZDoiTTE3IDE2aDQifV0sWyJwYXRoIix7ZDoiTTE5IDEyVjMifV0sWyJwYXRoIix7ZDoiTTE5IDIxdi01In1dLFsicGF0aCIse2Q6Ik0zIDE0aDQifV0sWyJwYXRoIix7ZDoiTTUgMTBWMyJ9XSxbInBhdGgiLHtkOiJNNSAyMXYtNyJ9XV19KTt2YXIgTVUsR0dlPWcoKCk9PntNVT1bWyJyZWN0Iix7d2lkdGg6IjE0IixoZWlnaHQ6IjIwIix4OiI1Iix5OiIyIixyeDoiMiIscnk6IjIifV0sWyJwYXRoIix7ZDoiTTEyLjY2NyA4IDEwIDEyaDRsLTIuNjY3IDQifV1dfSk7dmFyIHpVLEtHZT1nKCgpPT57elU9W1sicmVjdCIse3dpZHRoOiI3IixoZWlnaHQ6IjEyIix4OiIyIix5OiI2IixyeDoiMSJ9XSxbInBhdGgiLHtkOiJNMTMgOC4zMmE3LjQzIDcuNDMgMCAwIDEgMCA3LjM2In1dLFsicGF0aCIse2Q6Ik0xNi40NiA2LjIxYTExLjc2IDExLjc2IDAgMCAxIDAgMTEuNTgifV0sWyJwYXRoIix7ZDoiTTE5LjkxIDQuMWExNS45MSAxNS45MSAwIDAgMSAuMDEgMTUuOCJ9XV19KTt2YXIgQ1UsWUdlPWcoKCk9PntDVT1bWyJwYXRoIix7ZDoiTTIyIDExdjFhMTAgMTAgMCAxIDEtOS0xMCJ9XSxbInBhdGgiLHtkOiJNOCAxNHMxLjUgMiA0IDIgNC0yIDQtMiJ9XSxbImxpbmUiLHt4MToiOSIseDI6IjkuMDEiLHkxOiI5Iix5MjoiOSJ9XSxbImxpbmUiLHt4MToiMTUiLHgyOiIxNS4wMSIseTE6IjkiLHkyOiI5In1dLFsicGF0aCIse2Q6Ik0xNiA1aDYifV0sWyJwYXRoIix7ZDoiTTE5IDJ2NiJ9XV19KTt2YXIgVFUsWkdlPWcoKCk9PntUVT1bWyJyZWN0Iix7d2lkdGg6IjE0IixoZWlnaHQ6IjIwIix4OiI1Iix5OiIyIixyeDoiMiIscnk6IjIifV0sWyJwYXRoIix7ZDoiTTEyIDE4aC4wMSJ9XV19KTt2YXIgJFUsWEdlPWcoKCk9PnskVT1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifV0sWyJwYXRoIix7ZDoiTTggMTRzMS41IDIgNCAyIDQtMiA0LTIifV0sWyJsaW5lIix7eDE6IjkiLHgyOiI5LjAxIix5MToiOSIseTI6IjkifV0sWyJsaW5lIix7eDE6IjE1Iix4MjoiMTUuMDEiLHkxOiI5Iix5MjoiOSJ9XV19KTt2YXIgRFUsUUdlPWcoKCk9PntEVT1bWyJwYXRoIix7ZDoiTTIgMTNhNiA2IDAgMSAwIDEyIDAgNCA0IDAgMSAwLTggMCAyIDIgMCAwIDAgNCAwIn1dLFsiY2lyY2xlIix7Y3g6IjEwIixjeToiMTMiLHI6IjgifV0sWyJwYXRoIix7ZDoiTTIgMjFoMTJjNC40IDAgOC0zLjYgOC04VjdhMiAyIDAgMSAwLTQgMHY2In1dLFsicGF0aCIse2Q6Ik0xOCAzIDE5LjEgNS4yIn1dLFsicGF0aCIse2Q6Ik0yMiAzIDIwLjkgNS4yIn1dXX0pO3ZhciBMVSxKR2U9ZygoKT0+e0xVPVtbInBhdGgiLHtkOiJtMTAgMjAtMS4yNS0yLjVMNiAxOCJ9XSxbInBhdGgiLHtkOiJNMTAgNCA4Ljc1IDYuNSA2IDYifV0sWyJwYXRoIix7ZDoibTE0IDIwIDEuMjUtMi41TDE4IDE4In1dLFsicGF0aCIse2Q6Im0xNCA0IDEuMjUgMi41TDE4IDYifV0sWyJwYXRoIix7ZDoibTE3IDIxLTMtNmgtNCJ9XSxbInBhdGgiLHtkOiJtMTcgMy0zIDYgMS41IDMifV0sWyJwYXRoIix7ZDoiTTIgMTJoNi41TDEwIDkifV0sWyJwYXRoIix7ZDoibTIwIDEwLTEuNSAyIDEuNSAyIn1dLFsicGF0aCIse2Q6Ik0yMiAxMmgtNi41TDE0IDE1In1dLFsicGF0aCIse2Q6Im00IDEwIDEuNSAyTDQgMTQifV0sWyJwYXRoIix7ZDoibTcgMjEgMy02LTEuNS0zIn1dLFsicGF0aCIse2Q6Im03IDMgMyA2aDQifV1dfSk7dmFyIEVVLGVLZT1nKCgpPT57RVU9W1sicGF0aCIse2Q6Ik0xMC41IDJ2NCJ9XSxbInBhdGgiLHtkOiJNMTQgMkg3YTIgMiAwIDAgMC0yIDIifV0sWyJwYXRoIix7ZDoiTTE5LjI5IDE0Ljc2QTYuNjcgNi42NyAwIDAgMSAxNyAxMWE2LjYgNi42IDAgMCAxLTIuMjkgMy43NmMtMS4xNS45Mi0xLjcxIDIuMDQtMS43MSAzLjE5IDAgMi4yMiAxLjggNC4wNSA0IDQuMDVzNC0xLjgzIDQtNC4wNWMwLTEuMTYtLjU3LTIuMjYtMS43MS0zLjE5In1dLFsicGF0aCIse2Q6Ik05LjYwNyAyMUg2YTIgMiAwIDAgMS0yLTJ2LTdhMiAyIDAgMCAxIDItMmg3VjdhMSAxIDAgMCAwLTEtMUg5YTEgMSAwIDAgMC0xIDF2MyJ9XV19KTt2YXIgUFUsdEtlPWcoKCk9PntQVT1bWyJwYXRoIix7ZDoiTTIwIDlWNmEyIDIgMCAwIDAtMi0ySDZhMiAyIDAgMCAwLTIgMnYzIn1dLFsicGF0aCIse2Q6Ik0yIDE2YTIgMiAwIDAgMCAyIDJoMTZhMiAyIDAgMCAwIDItMnYtNWEyIDIgMCAwIDAtNCAwdjEuNWEuNS41IDAgMCAxLS41LjVoLTExYS41LjUgMCAwIDEtLjUtLjVWMTFhMiAyIDAgMCAwLTQgMHoifV0sWyJwYXRoIix7ZDoiTTQgMTh2MiJ9XSxbInBhdGgiLHtkOiJNMjAgMTh2MiJ9XSxbInBhdGgiLHtkOiJNMTIgNHY5In1dXX0pO3ZhciBJVSxhS2U9ZygoKT0+e0lVPVtbInBhdGgiLHtkOiJNMTEgMmgyIn1dLFsicGF0aCIse2Q6Im0xNC4yOCAxNC00LjU2IDgifV0sWyJwYXRoIix7ZDoibTIxIDIyLTEuNTU4LTRINC41NTgifV0sWyJwYXRoIix7ZDoiTTMgMTB2MiJ9XSxbInBhdGgiLHtkOiJNNi4yNDUgMTUuMDRBMiAyIDAgMCAxIDggMTRoMTJhMSAxIDAgMCAxIC44NjQgMS41MDVsLTMuMTEgNS40NTdBMiAyIDAgMCAxIDE2IDIySDRhMSAxIDAgMCAxLS44NjMtMS41MDZ6In1dLFsicGF0aCIse2Q6Ik03IDJhNCA0IDAgMCAxLTQgNCJ9XSxbInBhdGgiLHtkOiJtOC42NiA3LjY2IDEuNDEgMS40MSJ9XV19KTt2YXIgQVUsc0tlPWcoKCk9PntBVT1bWyJwYXRoIix7ZDoiTTEyIDIxYTkgOSAwIDAgMCA5LTlIM2E5IDkgMCAwIDAgOSA5WiJ9XSxbInBhdGgiLHtkOiJNNyAyMWgxMCJ9XSxbInBhdGgiLHtkOiJNMTkuNSAxMiAyMiA2In1dLFsicGF0aCIse2Q6Ik0xNi4yNSAzYy4yNy4xLjguNTMuNzUgMS4zNi0uMDYuODMtLjkzIDEuMi0xIDIuMDItLjA1Ljc4LjM0IDEuMjQuNzMgMS42MiJ9XSxbInBhdGgiLHtkOiJNMTEuMjUgM2MuMjcuMS44LjUzLjc0IDEuMzYtLjA1LjgzLS45MyAxLjItLjk4IDIuMDItLjA2Ljc4LjMzIDEuMjQuNzIgMS42MiJ9XSxbInBhdGgiLHtkOiJNNi4yNSAzYy4yNy4xLjguNTMuNzUgMS4zNi0uMDYuODMtLjkzIDEuMi0xIDIuMDItLjA1Ljc4LjM0IDEuMjQuNzQgMS42MiJ9XV19KTt2YXIgTlUsaUtlPWcoKCk9PntOVT1bWyJwYXRoIix7ZDoiTTIyIDE3djFjMCAuNS0uNSAxLTEgMUgzYy0uNSAwLTEtLjUtMS0xdi0xIn1dXX0pO3ZhciBSVSxyS2U9ZygoKT0+e1JVPVtbInBhdGgiLHtkOiJNMTIgMTh2NCJ9XSxbInBhdGgiLHtkOiJNMiAxNC40OTlhNS41IDUuNSAwIDAgMCA5LjU5MSAzLjY3NS42LjYgMCAwIDEgLjgxOC4wMDFBNS41IDUuNSAwIDAgMCAyMiAxNC41YzAtMi4yOS0xLjUtNC0zLTUuNWwtNS40OTItNS4zMTJhMiAyIDAgMCAwLTMtLjAyTDUgOC45OTljLTEuNSAxLjUtMyAzLjItMyA1LjUifV1dfSk7dmFyIE9VLG9LZT1nKCgpPT57T1U9W1sicGF0aCIse2Q6Ik0xMS4wMTcgMi44MTRhMSAxIDAgMCAxIDEuOTY2IDBsMS4wNTEgNS41NThhMiAyIDAgMCAwIDEuNTk0IDEuNTk0bDUuNTU4IDEuMDUxYTEgMSAwIDAgMSAwIDEuOTY2bC01LjU1OCAxLjA1MWEyIDIgMCAwIDAtMS41OTQgMS41OTRsLTEuMDUxIDUuNTU4YTEgMSAwIDAgMS0xLjk2NiAwbC0xLjA1MS01LjU1OGEyIDIgMCAwIDAtMS41OTQtMS41OTRsLTUuNTU4LTEuMDUxYTEgMSAwIDAgMSAwLTEuOTY2bDUuNTU4LTEuMDUxYTIgMiAwIDAgMCAxLjU5NC0xLjU5NHoifV1dfSk7dmFyIHM1LG5LZT1nKCgpPT57czU9W1sicGF0aCIse2Q6Ik0xMS4wMTcgMi44MTRhMSAxIDAgMCAxIDEuOTY2IDBsMS4wNTEgNS41NThhMiAyIDAgMCAwIDEuNTk0IDEuNTk0bDUuNTU4IDEuMDUxYTEgMSAwIDAgMSAwIDEuOTY2bC01LjU1OCAxLjA1MWEyIDIgMCAwIDAtMS41OTQgMS41OTRsLTEuMDUxIDUuNTU4YTEgMSAwIDAgMS0xLjk2NiAwbC0xLjA1MS01LjU1OGEyIDIgMCAwIDAtMS41OTQtMS41OTRsLTUuNTU4LTEuMDUxYTEgMSAwIDAgMSAwLTEuOTY2bDUuNTU4LTEuMDUxYTIgMiAwIDAgMCAxLjU5NC0xLjU5NHoifV0sWyJwYXRoIix7ZDoiTTIwIDJ2NCJ9XSxbInBhdGgiLHtkOiJNMjIgNGgtNCJ9XSxbImNpcmNsZSIse2N4OiI0IixjeToiMjAiLHI6IjIifV1dfSk7dmFyIEZVLGxLZT1nKCgpPT57RlU9W1sicmVjdCIse3dpZHRoOiIxNiIsaGVpZ2h0OiIyMCIseDoiNCIseToiMiIscng6IjIifV0sWyJwYXRoIix7ZDoiTTEyIDZoLjAxIn1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiMTQiLHI6IjQifV0sWyJwYXRoIix7ZDoiTTEyIDE0aC4wMSJ9XV19KTt2YXIgQlUsY0tlPWcoKCk9PntCVT1bWyJwYXRoIix7ZDoiTTguOCAyMHYtNC4xbDEuOS4yYTIuMyAyLjMgMCAwIDAgMi4xNjQtMi4xVjguM0E1LjM3IDUuMzcgMCAwIDAgMiA4LjI1YzAgMi44LjY1NiAzLjA1NCAxIDQuNTVhNS43NyA1Ljc3IDAgMCAxIC4wMjkgMi43NThMMiAyMCJ9XSxbInBhdGgiLHtkOiJNMTkuOCAxNy44YTcuNSA3LjUgMCAwIDAgLjAwMy0xMC42MDMifV0sWyJwYXRoIix7ZDoiTTE3IDE1YTMuNSAzLjUgMCAwIDAtLjAyNS00Ljk3NSJ9XV19KTt2YXIgSFUsZEtlPWcoKCk9PntIVT1bWyJwYXRoIix7ZDoibTYgMTYgNi0xMiA2IDEyIn1dLFsicGF0aCIse2Q6Ik04IDEyaDgifV0sWyJwYXRoIix7ZDoibTE2IDIwIDIgMiA0LTQifV1dfSk7dmFyIHFVLHVLZT1nKCgpPT57cVU9W1sicGF0aCIse2Q6Im02IDE2IDYtMTIgNiAxMiJ9XSxbInBhdGgiLHtkOiJNOCAxMmg4In1dLFsicGF0aCIse2Q6Ik00IDIxYzEuMSAwIDEuMS0xIDIuMy0xczEuMSAxIDIuMyAxYzEuMSAwIDEuMS0xIDIuMy0xIDEuMSAwIDEuMSAxIDIuMyAxIDEuMSAwIDEuMS0xIDIuMy0xIDEuMSAwIDEuMSAxIDIuMyAxIDEuMSAwIDEuMS0xIDIuMy0xIn1dXX0pO3ZhciBqVSxwS2U9ZygoKT0+e2pVPVtbInBhdGgiLHtkOiJNMTIuMDM0IDEyLjY4MWEuNDk4LjQ5OCAwIDAgMSAuNjQ3LS42NDdsOSAzLjVhLjUuNSAwIDAgMS0uMDMzLjk0M2wtMy40NDQgMS4wNjhhMSAxIDAgMCAwLS42Ni42NmwtMS4wNjcgMy40NDNhLjUuNSAwIDAgMS0uOTQzLjAzM3oifV0sWyJwYXRoIix7ZDoiTTUgMTdBMTIgMTIgMCAwIDEgMTcgNSJ9XSxbImNpcmNsZSIse2N4OiIxOSIsY3k6IjUiLHI6IjIifV0sWyJjaXJjbGUiLHtjeDoiNSIsY3k6IjE5IixyOiIyIn1dXX0pO3ZhciBWVSxoS2U9ZygoKT0+e1ZVPVtbImNpcmNsZSIse2N4OiIxOSIsY3k6IjUiLHI6IjIifV0sWyJjaXJjbGUiLHtjeDoiNSIsY3k6IjE5IixyOiIyIn1dLFsicGF0aCIse2Q6Ik01IDE3QTEyIDEyIDAgMCAxIDE3IDUifV1dfSk7dmFyIFVVLGZLZT1nKCgpPT57VVU9W1sicGF0aCIse2Q6Ik0xNiAzaDV2NSJ9XSxbInBhdGgiLHtkOiJNOCAzSDN2NSJ9XSxbInBhdGgiLHtkOiJNMTIgMjJ2LTguM2E0IDQgMCAwIDAtMS4xNzItMi44NzJMMyAzIn1dLFsicGF0aCIse2Q6Im0xNSA5IDYtNiJ9XV19KTt2YXIgV1UsbUtlPWcoKCk9PntXVT1bWyJwYXRoIix7ZDoiTTE3IDEzLjQ0IDQuNDQyIDE3LjA4MkEyIDIgMCAwIDAgNC45ODIgMjFIMTlhMiAyIDAgMCAwIC41NTgtMy45MjFsLTEuMTE1LS4zMkEyIDIgMCAwIDEgMTcgMTQuODM3VjcuNjYifV0sWyJwYXRoIix7ZDoibTcgMTAuNTYgMTIuNTU4LTMuNjQyQTIgMiAwIDAgMCAxOS4wMTggM0g1YTIgMiAwIDAgMC0uNTU4IDMuOTIxbDEuMTE1LjMyQTIgMiAwIDAgMSA3IDkuMTYzdjcuMTc4In1dXX0pO3ZhciBHVSxnS2U9ZygoKT0+e0dVPVtbInBhdGgiLHtkOiJtMTUgMTAuNDIgNC44LTUuMDcifV0sWyJwYXRoIix7ZDoiTTE5IDE4aDMifV0sWyJwYXRoIix7ZDoiTTkuNSAyMiAyMS40MTQgOS40MTVBMiAyIDAgMCAwIDIxLjIgNi40bC01LjYxLTQuMjA4QTEgMSAwIDAgMCAxNCAzdjJhMiAyIDAgMCAxLTEuMzk0IDEuOTA2TDguNjc3IDguMDUzQTEgMSAwIDAgMCA4IDljLS4xNTUgNi4zOTMtMi4wODIgOS00IDlhMiAyIDAgMCAwIDAgNGgxNCJ9XV19KTt2YXIgS1UsYktlPWcoKCk9PntLVT1bWyJwYXRoIix7ZDoiTTMgM2guMDEifV0sWyJwYXRoIix7ZDoiTTcgNWguMDEifV0sWyJwYXRoIix7ZDoiTTExIDdoLjAxIn1dLFsicGF0aCIse2Q6Ik0zIDdoLjAxIn1dLFsicGF0aCIse2Q6Ik03IDloLjAxIn1dLFsicGF0aCIse2Q6Ik0zIDExaC4wMSJ9XSxbInJlY3QiLHt3aWR0aDoiNCIsaGVpZ2h0OiI0Iix4OiIxNSIseToiNSJ9XSxbInBhdGgiLHtkOiJtMTkgOSAyIDJ2MTBjMCAuNi0uNCAxLTEgMWgtNmMtLjYgMC0xLS40LTEtMVYxMWwyLTIifV0sWyJwYXRoIix7ZDoibTEzIDE0IDgtMiJ9XSxbInBhdGgiLHtkOiJtMTMgMTkgOC0yIn1dXX0pO3ZhciBZVSx2S2U9ZygoKT0+e1lVPVtbInBhdGgiLHtkOiJNMTQgOS41MzZWN2E0IDQgMCAwIDEgNC00aDEuNWEuNS41IDAgMCAxIC41LjVWNWE0IDQgMCAwIDEtNCA0IDQgNCAwIDAgMC00IDRjMCAyIDEgMyAxIDVhNSA1IDAgMCAxLTEgMyJ9XSxbInBhdGgiLHtkOiJNNCA5YTUgNSAwIDAgMSA4IDQgNSA1IDAgMCAxLTgtNCJ9XSxbInBhdGgiLHtkOiJNNSAyMWgxNCJ9XV19KTt2YXIgWlUseEtlPWcoKCk9PntaVT1bWyJwYXRoIix7ZDoiTTE1LjI5NSAxOS41NjIgMTYgMjIifV0sWyJwYXRoIix7ZDoibTE3IDE2IDMuNzU4IDIuMDk4In1dLFsicGF0aCIse2Q6Im0xOSAxMi41IDMuMDI2LS41OTgifV0sWyJwYXRoIix7ZDoiTTcuNjEgNi4zYTMgMyAwIDAgMC0zLjkyIDEuM2wtMS4zOCAyLjc5YTMgMyAwIDAgMCAxLjMgMy45MWw2Ljg5IDMuNTk3YTEgMSAwIDAgMCAxLjM0Mi0uNDQ3bDMuMTA2LTYuMjExYTEgMSAwIDAgMC0uNDQ3LTEuMzQxeiJ9XSxbInBhdGgiLHtkOiJNOCA5VjIifV1dfSk7dmFyIGk1LHlLZT1nKCgpPT57aTU9W1sicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiMyIscng6IjIifV0sWyJwYXRoIix7ZDoiTTE3IDEyaC0ybC0yIDUtMi0xMC0yIDVINyJ9XV19KTt2YXIgcjUsd0tlPWcoKCk9PntyNT1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJtMTYgOC04IDgifV0sWyJwYXRoIix7ZDoiTTE2IDE2SDhWOCJ9XV19KTt2YXIgbzUsa0tlPWcoKCk9PntvNT1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJtOCA4IDggOCJ9XSxbInBhdGgiLHtkOiJNMTYgOHY4SDgifV1dfSk7dmFyIG41LFNLZT1nKCgpPT57bjU9W1sicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiMyIscng6IjIifV0sWyJwYXRoIix7ZDoiTTEyIDh2OCJ9XSxbInBhdGgiLHtkOiJtOCAxMiA0IDQgNC00In1dXX0pO3ZhciBsNSxfS2U9ZygoKT0+e2w1PVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Im0xMiA4LTQgNCA0IDQifV0sWyJwYXRoIix7ZDoiTTE2IDEySDgifV1dfSk7dmFyIGM1LE1LZT1nKCgpPT57YzU9W1sicGF0aCIse2Q6Ik0xMyAyMWg2YTIgMiAwIDAgMCAyLTJWNWEyIDIgMCAwIDAtMi0ySDVhMiAyIDAgMCAwLTIgMnY2In1dLFsicGF0aCIse2Q6Im0zIDIxIDktOSJ9XSxbInBhdGgiLHtkOiJNOSAyMUgzdi02In1dXX0pO3ZhciBkNSx6S2U9ZygoKT0+e2Q1PVtbInBhdGgiLHtkOiJNMjEgMTFWNWEyIDIgMCAwIDAtMi0ySDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDYifV0sWyJwYXRoIix7ZDoibTIxIDIxLTktOSJ9XSxbInBhdGgiLHtkOiJNMjEgMTV2NmgtNiJ9XV19KTt2YXIgdTUsQ0tlPWcoKCk9Pnt1NT1bWyJwYXRoIix7ZDoiTTEzIDNoNmEyIDIgMCAwIDEgMiAydjE0YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0ydi02In1dLFsicGF0aCIse2Q6Im0zIDMgOSA5In1dLFsicGF0aCIse2Q6Ik0zIDlWM2g2In1dXX0pO3ZhciBwNSxUS2U9ZygoKT0+e3A1PVtbInBhdGgiLHtkOiJNMjEgMTN2NmEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoNiJ9XSxbInBhdGgiLHtkOiJtMjEgMy05IDkifV0sWyJwYXRoIix7ZDoiTTE1IDNoNnY2In1dXX0pO3ZhciBYVSwkS2U9ZygoKT0+e1hVPVtbInBhdGgiLHtkOiJtMTAgMTYgNC00LTQtNCJ9XSxbInBhdGgiLHtkOiJNMyAxMmgxMSJ9XSxbInBhdGgiLHtkOiJNMyA4VjVhMiAyIDAgMCAxIDItMmgxNGEyIDIgMCAwIDEgMiAydjE0YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0ydi0zIn1dXX0pO3ZhciBRVSxES2U9ZygoKT0+e1FVPVtbInBhdGgiLHtkOiJNMTAgMTJoMTEifV0sWyJwYXRoIix7ZDoibTE3IDE2IDQtNC00LTQifV0sWyJwYXRoIix7ZDoiTTIxIDYuMzQ0VjVhMiAyIDAgMCAwLTItMkg1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGEyIDIgMCAwIDAgMi0ydi0xLjM0NCJ9XV19KTt2YXIgaDUsTEtlPWcoKCk9PntoNT1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNOCAxMmg4In1dLFsicGF0aCIse2Q6Im0xMiAxNiA0LTQtNC00In1dXX0pO3ZhciBmNSxFS2U9ZygoKT0+e2Y1PVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik04IDE2VjhoOCJ9XSxbInBhdGgiLHtkOiJNMTYgMTYgOCA4In1dXX0pO3ZhciBtNSxQS2U9ZygoKT0+e201PVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik04IDhoOHY4In1dLFsicGF0aCIse2Q6Im04IDE2IDgtOCJ9XV19KTt2YXIgZzUsSUtlPWcoKCk9PntnNT1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJtMTYgMTItNC00LTQgNCJ9XSxbInBhdGgiLHtkOiJNMTIgMTZWOCJ9XV19KTt2YXIgYjUsQUtlPWcoKCk9PntiNT1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNMTIgOHY4In1dLFsicGF0aCIse2Q6Im04LjUgMTQgNy00In1dLFsicGF0aCIse2Q6Im04LjUgMTAgNyA0In1dXX0pO3ZhciB2NSxOS2U9ZygoKT0+e3Y1PVtbImxpbmUiLHt4MToiNSIseTE6IjMiLHgyOiIxOSIseTI6IjMifV0sWyJsaW5lIix7eDE6IjMiLHkxOiI1Iix4MjoiMyIseTI6IjE5In1dLFsibGluZSIse3gxOiIyMSIseTE6IjUiLHgyOiIyMSIseTI6IjE5In1dLFsibGluZSIse3gxOiI5Iix5MToiMjEiLHgyOiIxMCIseTI6IjIxIn1dLFsibGluZSIse3gxOiIxNCIseTE6IjIxIix4MjoiMTUiLHkyOiIyMSJ9XSxbInBhdGgiLHtkOiJNIDMgNSBBMiAyIDAgMCAxIDUgMyJ9XSxbInBhdGgiLHtkOiJNIDE5IDMgQTIgMiAwIDAgMSAyMSA1In1dLFsicGF0aCIse2Q6Ik0gNSAyMSBBMiAyIDAgMCAxIDMgMTkifV0sWyJwYXRoIix7ZDoiTSAyMSAxOSBBMiAyIDAgMCAxIDE5IDIxIn1dLFsiY2lyY2xlIix7Y3g6IjguNSIsY3k6IjguNSIscjoiMS41In1dLFsibGluZSIse3gxOiI5LjU2MDY2Iix5MToiOS41NjA2NiIseDI6IjEyIix5MjoiMTIifV0sWyJsaW5lIix7eDE6IjE3Iix5MToiMTciLHgyOiIxNC44MiIseTI6IjE0LjgyIn1dLFsiY2lyY2xlIix7Y3g6IjguNSIsY3k6IjE1LjUiLHI6IjEuNSJ9XSxbImxpbmUiLHt4MToiOS41NjA2NiIseTE6IjE0LjQzOTM0Iix4MjoiMTciLHkyOiI3In1dXX0pO3ZhciB4NSxSS2U9ZygoKT0+e3g1PVtbInBhdGgiLHtkOiJNOCAzSDVhMiAyIDAgMCAwLTIgMnYxNGMwIDEuMS45IDIgMiAyaDMifV0sWyJwYXRoIix7ZDoiTTE2IDNoM2EyIDIgMCAwIDEgMiAydjE0YTIgMiAwIDAgMS0yIDJoLTMifV0sWyJwYXRoIix7ZDoiTTEyIDIwdjIifV0sWyJwYXRoIix7ZDoiTTEyIDE0djIifV0sWyJwYXRoIix7ZDoiTTEyIDh2MiJ9XSxbInBhdGgiLHtkOiJNMTIgMnYyIn1dXX0pO3ZhciB5NSxPS2U9ZygoKT0+e3k1PVtbInBhdGgiLHtkOiJNMjEgOFY1YTIgMiAwIDAgMC0yLTJINWEyIDIgMCAwIDAtMiAydjMifV0sWyJwYXRoIix7ZDoiTTIxIDE2djNhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJ2LTMifV0sWyJwYXRoIix7ZDoiTTQgMTJIMiJ9XSxbInBhdGgiLHtkOiJNMTAgMTJIOCJ9XSxbInBhdGgiLHtkOiJNMTYgMTJoLTIifV0sWyJwYXRoIix7ZDoiTTIyIDEyaC0yIn1dXX0pO3ZhciBZMCxGS2U9ZygoKT0+e1kwPVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik05IDhoNyJ9XSxbInBhdGgiLHtkOiJNOCAxMmg2In1dLFsicGF0aCIse2Q6Ik0xMSAxNmg1In1dXX0pO3ZhciB3NSxCS2U9ZygoKT0+e3c1PVtbInBhdGgiLHtkOiJNMjEgMTAuNjU2VjE5YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmgxMi4zNDQifV0sWyJwYXRoIix7ZDoibTkgMTEgMyAzTDIyIDQifV1dfSk7dmFyIGs1LEhLZT1nKCgpPT57azU9W1sicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiMyIscng6IjIifV0sWyJwYXRoIix7ZDoibTkgMTIgMiAyIDQtNCJ9XV19KTt2YXIgUzUscUtlPWcoKCk9PntTNT1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJtMTYgMTAtNCA0LTQtNCJ9XV19KTt2YXIgXzUsaktlPWcoKCk9PntfNT1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJtMTQgMTYtNC00IDQtNCJ9XV19KTt2YXIgTTUsVktlPWcoKCk9PntNNT1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJtMTAgOCA0IDQtNCA0In1dXX0pO3ZhciB6NSxVS2U9ZygoKT0+e3o1PVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Im04IDE0IDQtNCA0IDQifV1dfSk7dmFyIEM1LFdLZT1nKCgpPT57QzU9W1sicGF0aCIse2Q6Im0xMCA5LTMgMyAzIDMifV0sWyJwYXRoIix7ZDoibTE0IDE1IDMtMy0zLTMifV0sWyJyZWN0Iix7eDoiMyIseToiMyIsd2lkdGg6IjE4IixoZWlnaHQ6IjE4IixyeDoiMiJ9XV19KTt2YXIgSlUsR0tlPWcoKCk9PntKVT1bWyJwYXRoIix7ZDoiTTEwIDkuNSA4IDEybDIgMi41In1dLFsicGF0aCIse2Q6Ik0xNCAyMWgxIn1dLFsicGF0aCIse2Q6Im0xNCA5LjUgMiAyLjUtMiAyLjUifV0sWyJwYXRoIix7ZDoiTTUgMjFhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoMTRhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAyIn1dLFsicGF0aCIse2Q6Ik05IDIxaDEifV1dfSk7dmFyIGVXLEtLZT1nKCgpPT57ZVc9W1sicGF0aCIse2Q6Ik01IDIxYTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDE0YTIgMiAwIDAgMSAyIDJ2MTRhMiAyIDAgMCAxLTIgMiJ9XSxbInBhdGgiLHtkOiJNOSAyMWgxIn1dLFsicGF0aCIse2Q6Ik0xNCAyMWgxIn1dXX0pO3ZhciBUNSxZS2U9ZygoKT0+e1Q1PVtbInBhdGgiLHtkOiJNOCA3djcifV0sWyJwYXRoIix7ZDoiTTEyIDd2NCJ9XSxbInBhdGgiLHtkOiJNMTYgN3Y5In1dLFsicGF0aCIse2Q6Ik01IDNhMiAyIDAgMCAwLTIgMiJ9XSxbInBhdGgiLHtkOiJNOSAzaDEifV0sWyJwYXRoIix7ZDoiTTE0IDNoMSJ9XSxbInBhdGgiLHtkOiJNMTkgM2EyIDIgMCAwIDEgMiAyIn1dLFsicGF0aCIse2Q6Ik0yMSA5djEifV0sWyJwYXRoIix7ZDoiTTIxIDE0djEifV0sWyJwYXRoIix7ZDoiTTIxIDE5YTIgMiAwIDAgMS0yIDIifV0sWyJwYXRoIix7ZDoiTTE0IDIxaDEifV0sWyJwYXRoIix7ZDoiTTkgMjFoMSJ9XSxbInBhdGgiLHtkOiJNNSAyMWEyIDIgMCAwIDEtMi0yIn1dLFsicGF0aCIse2Q6Ik0zIDE0djEifV0sWyJwYXRoIix7ZDoiTTMgOXYxIn1dXX0pO3ZhciAkNSxaS2U9ZygoKT0+eyQ1PVtbInBhdGgiLHtkOiJNMTIuMDM0IDEyLjY4MWEuNDk4LjQ5OCAwIDAgMSAuNjQ3LS42NDdsOSAzLjVhLjUuNSAwIDAgMS0uMDMzLjk0M2wtMy40NDQgMS4wNjhhMSAxIDAgMCAwLS42Ni42NmwtMS4wNjcgMy40NDNhLjUuNSAwIDAgMS0uOTQzLjAzM3oifV0sWyJwYXRoIix7ZDoiTTUgM2EyIDIgMCAwIDAtMiAyIn1dLFsicGF0aCIse2Q6Ik0xOSAzYTIgMiAwIDAgMSAyIDIifV0sWyJwYXRoIix7ZDoiTTUgMjFhMiAyIDAgMCAxLTItMiJ9XSxbInBhdGgiLHtkOiJNOSAzaDEifV0sWyJwYXRoIix7ZDoiTTkgMjFoMiJ9XSxbInBhdGgiLHtkOiJNMTQgM2gxIn1dLFsicGF0aCIse2Q6Ik0zIDl2MSJ9XSxbInBhdGgiLHtkOiJNMjEgOXYyIn1dLFsicGF0aCIse2Q6Ik0zIDE0djEifV1dfSk7dmFyIFowLFhLZT1nKCgpPT57WjA9W1sicGF0aCIse2Q6Ik0xNCAyMWgxIn1dLFsicGF0aCIse2Q6Ik0xNCAzaDEifV0sWyJwYXRoIix7ZDoiTTE5IDNhMiAyIDAgMCAxIDIgMiJ9XSxbInBhdGgiLHtkOiJNMjEgMTR2MSJ9XSxbInBhdGgiLHtkOiJNMjEgMTlhMiAyIDAgMCAxLTIgMiJ9XSxbInBhdGgiLHtkOiJNMjEgOXYxIn1dLFsicGF0aCIse2Q6Ik0zIDE0djEifV0sWyJwYXRoIix7ZDoiTTMgOXYxIn1dLFsicGF0aCIse2Q6Ik01IDIxYTIgMiAwIDAgMS0yLTIifV0sWyJwYXRoIix7ZDoiTTUgM2EyIDIgMCAwIDAtMiAyIn1dLFsicGF0aCIse2Q6Ik03IDEyaDEwIn1dLFsicGF0aCIse2Q6Ik03IDE2aDYifV0sWyJwYXRoIix7ZDoiTTcgOGg4In1dLFsicGF0aCIse2Q6Ik05IDIxaDEifV0sWyJwYXRoIix7ZDoiTTkgM2gxIn1dXX0pO3ZhciB0VyxRS2U9ZygoKT0+e3RXPVtbInBhdGgiLHtkOiJNMTQgMjFoMSJ9XSxbInBhdGgiLHtkOiJNMjEgMTR2MSJ9XSxbInBhdGgiLHtkOiJNMjEgMTlhMiAyIDAgMCAxLTIgMiJ9XSxbInBhdGgiLHtkOiJNMjEgOXYxIn1dLFsicGF0aCIse2Q6Ik0zIDE0djEifV0sWyJwYXRoIix7ZDoiTTMgNWEyIDIgMCAwIDEgMi0yaDE0YTIgMiAwIDAgMSAyIDIifV0sWyJwYXRoIix7ZDoiTTMgOXYxIn1dLFsicGF0aCIse2Q6Ik01IDIxYTIgMiAwIDAgMS0yLTIifV0sWyJwYXRoIix7ZDoiTTkgMjFoMSJ9XV19KTt2YXIgRDUsSktlPWcoKCk9PntENT1bWyJwYXRoIix7ZDoiTTUgM2EyIDIgMCAwIDAtMiAyIn1dLFsicGF0aCIse2Q6Ik0xOSAzYTIgMiAwIDAgMSAyIDIifV0sWyJwYXRoIix7ZDoiTTIxIDE5YTIgMiAwIDAgMS0yIDIifV0sWyJwYXRoIix7ZDoiTTUgMjFhMiAyIDAgMCAxLTItMiJ9XSxbInBhdGgiLHtkOiJNOSAzaDEifV0sWyJwYXRoIix7ZDoiTTkgMjFoMSJ9XSxbInBhdGgiLHtkOiJNMTQgM2gxIn1dLFsicGF0aCIse2Q6Ik0xNCAyMWgxIn1dLFsicGF0aCIse2Q6Ik0zIDl2MSJ9XSxbInBhdGgiLHtkOiJNMjEgOXYxIn1dLFsicGF0aCIse2Q6Ik0zIDE0djEifV0sWyJwYXRoIix7ZDoiTTIxIDE0djEifV1dfSk7dmFyIEw1LGVZZT1nKCgpPT57TDU9W1sicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiMyIscng6IjIifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMSJ9XV19KTt2YXIgRTUsdFllPWcoKCk9PntFNT1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiIscnk6IjIifV0sWyJsaW5lIix7eDE6IjgiLHgyOiIxNiIseTE6IjEyIix5MjoiMTIifV0sWyJsaW5lIix7eDE6IjEyIix4MjoiMTIiLHkxOiIxNiIseTI6IjE2In1dLFsibGluZSIse3gxOiIxMiIseDI6IjEyIix5MToiOCIseTI6IjgifV1dfSk7dmFyIFA1LGFZZT1nKCgpPT57UDU9W1sicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiMyIscng6IjIifV0sWyJwYXRoIix7ZDoiTTcgMTBoMTAifV0sWyJwYXRoIix7ZDoiTTcgMTRoMTAifV1dfSk7dmFyIEk1LHNZZT1nKCgpPT57STU9W1sicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiMyIscng6IjIiLHJ5OiIyIn1dLFsicGF0aCIse2Q6Ik05IDE3YzIgMCAyLjgtMSAyLjgtMi44VjEwYzAtMiAxLTMuMyAzLjItMyJ9XSxbInBhdGgiLHtkOiJNOSAxMS4yaDUuNyJ9XV19KTt2YXIgQTUsaVllPWcoKCk9PntBNT1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNNyA3djEwIn1dLFsicGF0aCIse2Q6Ik0xMSA3djEwIn1dLFsicGF0aCIse2Q6Im0xNSA3IDIgMTAifV1dfSk7dmFyIE41LHJZZT1nKCgpPT57TjU9W1sicGF0aCIse2Q6Ik04IDE2VjguNWEuNS41IDAgMCAxIC45LS4zbDIuNyAzLjU5OWEuNS41IDAgMCAwIC44IDBsMi43LTMuNmEuNS41IDAgMCAxIC45LjNWMTYifV0sWyJyZWN0Iix7eDoiMyIseToiMyIsd2lkdGg6IjE4IixoZWlnaHQ6IjE4IixyeDoiMiJ9XV19KTt2YXIgUjUsb1llPWcoKCk9PntSNT1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNOCA3djcifV0sWyJwYXRoIix7ZDoiTTEyIDd2NCJ9XSxbInBhdGgiLHtkOiJNMTYgN3Y5In1dXX0pO3ZhciBPNSxuWWU9ZygoKT0+e081PVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik03IDhoMTAifV0sWyJwYXRoIix7ZDoiTTcgMTJoMTAifV0sWyJwYXRoIix7ZDoiTTcgMTZoMTAifV1dfSk7dmFyIEY1LGxZZT1nKCgpPT57RjU9W1sicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiMyIscng6IjIifV0sWyJwYXRoIix7ZDoiTTggMTJoOCJ9XV19KTt2YXIgQjUsY1llPWcoKCk9PntCNT1bWyJwYXRoIix7ZDoiTTEyLjAzNCAxMi42ODFhLjQ5OC40OTggMCAwIDEgLjY0Ny0uNjQ3bDkgMy41YS41LjUgMCAwIDEtLjAzMy45NDNsLTMuNDQ0IDEuMDY4YTEgMSAwIDAgMC0uNjYuNjZsLTEuMDY3IDMuNDQzYS41LjUgMCAwIDEtLjk0My4wMzN6In1dLFsicGF0aCIse2Q6Ik0yMSAxMVY1YTIgMiAwIDAgMC0yLTJINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoNiJ9XV19KTt2YXIgSDUsZFllPWcoKCk9PntINT1bWyJwYXRoIix7ZDoiTTMuNiAzLjZBMiAyIDAgMCAxIDUgM2gxNGEyIDIgMCAwIDEgMiAydjE0YTIgMiAwIDAgMS0uNTkgMS40MSJ9XSxbInBhdGgiLHtkOiJNMyA4LjdWMTlhMiAyIDAgMCAwIDIgMmgxMC4zIn1dLFsicGF0aCIse2Q6Im0yIDIgMjAgMjAifV0sWyJwYXRoIix7ZDoiTTEzIDEzYTMgMyAwIDEgMCAwLTZIOXYyIn1dLFsicGF0aCIse2Q6Ik05IDE3di0yLjMifV1dfSk7dmFyIHE1LHVZZT1nKCgpPT57cTU9W1sicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiMyIscng6IjIifV0sWyJwYXRoIix7ZDoiTTkgMTdWN2g0YTMgMyAwIDAgMSAwIDZIOSJ9XV19KTt2YXIgVjEscFllPWcoKCk9PntWMT1bWyJwYXRoIix7ZDoiTTEyIDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRhMiAyIDAgMCAwIDItMnYtNyJ9XSxbInBhdGgiLHtkOiJNMTguMzc1IDIuNjI1YTEgMSAwIDAgMSAzIDNsLTkuMDEzIDkuMDE0YTIgMiAwIDAgMS0uODUzLjUwNWwtMi44NzMuODRhLjUuNSAwIDAgMS0uNjItLjYybC44NC0yLjg3M2EyIDIgMCAwIDEgLjUwNi0uODUyeiJ9XV19KTt2YXIgajUsaFllPWcoKCk9PntqNT1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJtMTUgOS02IDYifV0sWyJwYXRoIix7ZDoiTTkgOWguMDEifV0sWyJwYXRoIix7ZDoiTTE1IDE1aC4wMSJ9XV19KTt2YXIgYVcsZlllPWcoKCk9PnthVz1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiJ9XSxbImxpbmUiLHt4MToiMTAiLHgyOiIxMCIseTE6IjE1Iix5MjoiOSJ9XSxbImxpbmUiLHt4MToiMTQiLHgyOiIxNCIseTE6IjE1Iix5MjoiOSJ9XV19KTt2YXIgVjUsbVllPWcoKCk9PntWNT1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNNyA3aDEwIn1dLFsicGF0aCIse2Q6Ik0xMCA3djEwIn1dLFsicGF0aCIse2Q6Ik0xNiAxN2EyIDIgMCAwIDEtMi0yVjcifV1dfSk7dmFyIFU1LGdZZT1nKCgpPT57VTU9W1sicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiMyIscng6IjIifV0sWyJwYXRoIix7ZDoiTTEyIDEySDkuNWEyLjUgMi41IDAgMCAxIDAtNUgxNyJ9XSxbInBhdGgiLHtkOiJNMTIgN3YxMCJ9XSxbInBhdGgiLHtkOiJNMTYgN3YxMCJ9XV19KTt2YXIgVzUsYlllPWcoKCk9PntXNT1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNOCAxMmg4In1dLFsicGF0aCIse2Q6Ik0xMiA4djgifV1dfSk7dmFyIEc1LHZZZT1nKCgpPT57RzU9W1sicmVjdCIse3g6IjMiLHk6IjMiLHdpZHRoOiIxOCIsaGVpZ2h0OiIxOCIscng6IjIifV0sWyJwYXRoIix7ZDoiTTkgOS4wMDNhMSAxIDAgMCAxIDEuNTE3LS44NTlsNC45OTcgMi45OTdhMSAxIDAgMCAxIDAgMS43MThsLTQuOTk3IDIuOTk3QTEgMSAwIDAgMSA5IDE0Ljk5NnoifV1dfSk7dmFyIEs1LHhZZT1nKCgpPT57SzU9W1sicGF0aCIse2Q6Ik0xMiA3djQifV0sWyJwYXRoIix7ZDoiTTcuOTk4IDkuMDAzYTUgNSAwIDEgMCA4LS4wMDUifV0sWyJyZWN0Iix7eDoiMyIseToiMyIsd2lkdGg6IjE4IixoZWlnaHQ6IjE4IixyeDoiMiJ9XV19KTt2YXIgc1cseVllPWcoKCk9PntzVz1bWyJwYXRoIix7ZDoiTTcgMTJoMmwyIDUgMi0xMGg0In1dLFsicmVjdCIse3g6IjMiLHk6IjMiLHdpZHRoOiIxOCIsaGVpZ2h0OiIxOCIscng6IjIifV1dfSk7dmFyIGlXLHdZZT1nKCgpPT57aVc9W1sicGF0aCIse2Q6Ik0yMSAxMWE4IDggMCAwIDAtOC04In1dLFsicGF0aCIse2Q6Ik0yMSAxNXY0YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmg0In1dXX0pO3ZhciBZNSxrWWU9ZygoKT0+e1k1PVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik0xNiA4LjlWN0g4bDQgNS00IDVoOHYtMS45In1dXX0pO3ZhciBaNSxTWWU9ZygoKT0+e1o1PVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIyIn1dLFsiY2lyY2xlIix7Y3g6IjguNSIsY3k6IjguNSIscjoiMS41In1dLFsibGluZSIse3gxOiI5LjU2MDY2Iix5MToiOS41NjA2NiIseDI6IjEyIix5MjoiMTIifV0sWyJsaW5lIix7eDE6IjE3Iix5MToiMTciLHgyOiIxNC44MiIseTI6IjE0LjgyIn1dLFsiY2lyY2xlIix7Y3g6IjguNSIsY3k6IjE1LjUiLHI6IjEuNSJ9XSxbImxpbmUiLHt4MToiOS41NjA2NiIseTE6IjE0LjQzOTM0Iix4MjoiMTciLHkyOiI3In1dXX0pO3ZhciBYNSxfWWU9ZygoKT0+e1g1PVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIyIn1dLFsibGluZSIse3gxOiI5Iix4MjoiMTUiLHkxOiIxNSIseTI6IjkifV1dfSk7dmFyIFE1LE1ZZT1nKCgpPT57UTU9W1sicGF0aCIse2Q6Ik04IDE5SDVjLTEgMC0yLTEtMi0yVjdjMC0xIDEtMiAyLTJoMyJ9XSxbInBhdGgiLHtkOiJNMTYgNWgzYzEgMCAyIDEgMiAydjEwYzAgMS0xIDItMiAyaC0zIn1dLFsibGluZSIse3gxOiIxMiIseDI6IjEyIix5MToiNCIseTI6IjIwIn1dXX0pO3ZhciBKNSx6WWU9ZygoKT0+e0o1PVtbInBhdGgiLHtkOiJNNSA4VjVjMC0xIDEtMiAyLTJoMTBjMSAwIDIgMSAyIDJ2MyJ9XSxbInBhdGgiLHtkOiJNMTkgMTZ2M2MwIDEtMSAyLTIgMkg3Yy0xIDAtMi0xLTItMnYtMyJ9XSxbImxpbmUiLHt4MToiNCIseDI6IjIwIix5MToiMTIiLHkyOiIxMiJ9XV19KTt2YXIgclcsQ1llPWcoKCk9PntyVz1bWyJyZWN0Iix7eDoiMyIseToiMyIsd2lkdGg6IjE4IixoZWlnaHQ6IjE4IixyeDoiMiJ9XSxbInJlY3QiLHt4OiI4Iix5OiI4Iix3aWR0aDoiOCIsaGVpZ2h0OiI4IixyeDoiMSJ9XV19KTt2YXIgb1csVFllPWcoKCk9PntvVz1bWyJwYXRoIix7ZDoiTTQgMTBjLTEuMSAwLTItLjktMi0yVjRjMC0xLjEuOS0yIDItMmg0YzEuMSAwIDIgLjkgMiAyIn1dLFsicGF0aCIse2Q6Ik0xMCAxNmMtMS4xIDAtMi0uOS0yLTJ2LTRjMC0xLjEuOS0yIDItMmg0YzEuMSAwIDIgLjkgMiAyIn1dLFsicmVjdCIse3dpZHRoOiI4IixoZWlnaHQ6IjgiLHg6IjE0Iix5OiIxNCIscng6IjIifV1dfSk7dmFyIG5XLCRZZT1nKCgpPT57blc9W1sicGF0aCIse2Q6Ik0xMS4wMzUgNy42OWExIDEgMCAwIDEgMS45MDkuMDI0bC43MzcgMS40NTJhMSAxIDAgMCAwIC43MzcuNTM1bDEuNjM0LjI1NmExIDEgMCAwIDEgLjU4OCAxLjgwNmwtMS4xNzIgMS4xNjhhMSAxIDAgMCAwLS4yODIuODY2bC4yNTkgMS42MTNhMSAxIDAgMCAxLTEuNTQxIDEuMTM0bC0xLjQ2NS0uNzVhMSAxIDAgMCAwLS45MTIgMGwtMS40NjUuNzVhMSAxIDAgMCAxLTEuNTM5LTEuMTMzbC4yNTgtMS42MTNhMSAxIDAgMCAwLS4yODItLjg2NmwtMS4xNTYtMS4xNTNhMSAxIDAgMCAxIC41NzItMS44MjJsMS42MzMtLjI1NmExIDEgMCAwIDAgLjczNy0uNTM1eiJ9XSxbInJlY3QiLHt4OiIzIix5OiIzIix3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHJ4OiIyIn1dXX0pO3ZhciBsVyxEWWU9ZygoKT0+e2xXPVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIyIn1dLFsicmVjdCIse3g6IjkiLHk6IjkiLHdpZHRoOiI2IixoZWlnaHQ6IjYiLHJ4OiIxIn1dXX0pO3ZhciBlOCxMWWU9ZygoKT0+e2U4PVtbInBhdGgiLHtkOiJtNyAxMSAyLTItMi0yIn1dLFsicGF0aCIse2Q6Ik0xMSAxM2g0In1dLFsicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiMyIscng6IjIiLHJ5OiIyIn1dXX0pO3ZhciB0OCxFWWU9ZygoKT0+e3Q4PVtbInBhdGgiLHtkOiJNMTggMjFhNiA2IDAgMCAwLTEyIDAifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMSIscjoiNCJ9XSxbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIyIn1dXX0pO3ZhciBhOCxQWWU9ZygoKT0+e2E4PVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIyIixyeToiMiJ9XSxbInBhdGgiLHtkOiJtMTUgOS02IDYifV0sWyJwYXRoIix7ZDoibTkgOSA2IDYifV1dfSk7dmFyIHM4LElZZT1nKCgpPT57czg9W1sicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiMyIscng6IjIifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMCIscjoiMyJ9XSxbInBhdGgiLHtkOiJNNyAyMXYtMmEyIDIgMCAwIDEgMi0yaDZhMiAyIDAgMCAxIDIgMnYyIn1dXX0pO3ZhciBjVyxBWWU9ZygoKT0+e2NXPVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIyIn1dXX0pO3ZhciBkVyxOWWU9ZygoKT0+e2RXPVtbInBhdGgiLHtkOiJNMTYgMTJ2MmEyIDIgMCAwIDEtMiAySDlhMSAxIDAgMCAwLTEgMXYzYTIgMiAwIDAgMCAyIDJoMTBhMiAyIDAgMCAwIDItMlYxMGEyIDIgMCAwIDAtMi0yaDAifV0sWyJwYXRoIix7ZDoiTTQgMTZhMiAyIDAgMCAxLTItMlY0YTIgMiAwIDAgMSAyLTJoMTBhMiAyIDAgMCAxIDIgMnYzYTEgMSAwIDAgMS0xIDFoLTVhMiAyIDAgMCAwLTIgMnYyIn1dXX0pO3ZhciB1VyxSWWU9ZygoKT0+e3VXPVtbInBhdGgiLHtkOiJNMTAgMjJhMiAyIDAgMCAxLTItMiJ9XSxbInBhdGgiLHtkOiJNMTQgMmEyIDIgMCAwIDEgMiAyIn1dLFsicGF0aCIse2Q6Ik0xNiAyMmgtMiJ9XSxbInBhdGgiLHtkOiJNMiAxMFY4In1dLFsicGF0aCIse2Q6Ik0yIDRhMiAyIDAgMCAxIDItMiJ9XSxbInBhdGgiLHtkOiJNMjAgOGEyIDIgMCAwIDEgMiAyIn1dLFsicGF0aCIse2Q6Ik0yMiAxNHYyIn1dLFsicGF0aCIse2Q6Ik0yMiAyMGEyIDIgMCAwIDEtMiAyIn1dLFsicGF0aCIse2Q6Ik00IDE2YTIgMiAwIDAgMS0yLTIifV0sWyJwYXRoIix7ZDoiTTggMTBhMiAyIDAgMCAxIDItMmg1YTEgMSAwIDAgMSAxIDF2NWEyIDIgMCAwIDEtMiAySDlhMSAxIDAgMCAxLTEtMXoifV0sWyJwYXRoIix7ZDoiTTggMmgyIn1dXX0pO3ZhciBwVyxPWWU9ZygoKT0+e3BXPVtbInBhdGgiLHtkOiJNMTAgMjJhMiAyIDAgMCAxLTItMiJ9XSxbInBhdGgiLHtkOiJNMTYgMjJoLTIifV0sWyJwYXRoIix7ZDoiTTE2IDRhMiAyIDAgMCAwLTItMkg0YTIgMiAwIDAgMC0yIDJ2MTBhMiAyIDAgMCAwIDIgMmgzYTEgMSAwIDAgMCAxLTF2LTVhMiAyIDAgMCAxIDItMmg1YTEgMSAwIDAgMCAxLTF6In1dLFsicGF0aCIse2Q6Ik0yMCA4YTIgMiAwIDAgMSAyIDIifV0sWyJwYXRoIix7ZDoiTTIyIDE0djIifV0sWyJwYXRoIix7ZDoiTTIyIDIwYTIgMiAwIDAgMS0yIDIifV1dfSk7dmFyIGhXLEZZZT1nKCgpPT57aFc9W1sicGF0aCIse2Q6Ik00IDE2YTIgMiAwIDAgMS0yLTJWNGEyIDIgMCAwIDEgMi0yaDEwYTIgMiAwIDAgMSAyIDJ2M2ExIDEgMCAwIDAgMSAxaDNhMiAyIDAgMCAxIDIgMnYxMGEyIDIgMCAwIDEtMiAySDEwYTIgMiAwIDAgMS0yLTJ2LTNhMSAxIDAgMCAwLTEtMXoifV1dfSk7dmFyIGZXLEJZZT1nKCgpPT57Zlc9W1sicGF0aCIse2Q6Ik0xMy43NyAzLjA0M2EzNCAzNCAwIDAgMC0zLjU0IDAifV0sWyJwYXRoIix7ZDoiTTEzLjc3MSAyMC45NTZhMzMgMzMgMCAwIDEtMy41NDEuMDAxIn1dLFsicGF0aCIse2Q6Ik0yMC4xOCAxNy43NGMtLjUxIDEuMTUtMS4yOSAxLjkzLTIuNDM5IDIuNDQifV0sWyJwYXRoIix7ZDoiTTIwLjE4IDYuMjU5Yy0uNTEtMS4xNDgtMS4yOTEtMS45MjktMi40NC0yLjQzOCJ9XSxbInBhdGgiLHtkOiJNMjAuOTU3IDEwLjIzYTMzIDMzIDAgMCAxIDAgMy41NCJ9XSxbInBhdGgiLHtkOiJNMy4wNDMgMTAuMjNhMzQgMzQgMCAwIDAgLjAwMSAzLjU0MSJ9XSxbInBhdGgiLHtkOiJNNi4yNiAyMC4xNzljLTEuMTUtLjUwOC0xLjkzLTEuMjktMi40NC0yLjQzOCJ9XSxbInBhdGgiLHtkOiJNNi4yNiAzLjgyYy0xLjE0OS41MS0xLjkzIDEuMjkxLTIuNDQgMi40NCJ9XV19KTt2YXIgbVcsSFllPWcoKCk9PnttVz1bWyJwYXRoIix7ZDoiTTEyIDNjNy4yIDAgOSAxLjggOSA5cy0xLjggOS05IDktOS0xLjgtOS05IDEuOC05IDktOSJ9XV19KTt2YXIgZ1cscVllPWcoKCk9PntnVz1bWyJwYXRoIix7ZDoiTTE1LjIzNiAyMmEzIDMgMCAwIDAtMi4yLTUifV0sWyJwYXRoIix7ZDoiTTE2IDIwYTMgMyAwIDAgMSAzLTNoMWEyIDIgMCAwIDAgMi0ydi0yYTQgNCAwIDAgMC00LTRWNCJ9XSxbInBhdGgiLHtkOiJNMTggMTNoLjAxIn1dLFsicGF0aCIse2Q6Ik0xOCA2YTQgNCAwIDAgMC00IDQgNyA3IDAgMCAwLTcgN2MwLTUgNC01IDQtMTAuNWE0LjUgNC41IDAgMSAwLTkgMCAyLjUgMi41IDAgMCAwIDUgMEM3IDEwIDMgMTEgMyAxN2MwIDIuOCAyLjIgNSA1IDVoMTAifV1dfSk7dmFyIGJXLGpZZT1nKCgpPT57Ylc9W1sicGF0aCIse2Q6Ik0xNCAxM1Y4LjVDMTQgNyAxNSA3IDE1IDVhMyAzIDAgMCAwLTYgMGMwIDIgMSAyIDEgMy41VjEzIn1dLFsicGF0aCIse2Q6Ik0yMCAxNS41YTIuNSAyLjUgMCAwIDAtMi41LTIuNWgtMTFBMi41IDIuNSAwIDAgMCA0IDE1LjVWMTdhMSAxIDAgMCAwIDEgMWgxNGExIDEgMCAwIDAgMS0xeiJ9XSxbInBhdGgiLHtkOiJNNSAyMmgxNCJ9XV19KTt2YXIgdlcsVlllPWcoKCk9Pnt2Vz1bWyJwYXRoIix7ZDoiTTEyIDE4LjMzOGEyLjEgMi4xIDAgMCAwLS45ODcuMjQ0TDYuMzk2IDIxLjAxYS41My41MyAwIDAgMS0uNzctLjU2bC44ODEtNS4xMzlhMi4xMiAyLjEyIDAgMCAwLS42MTEtMS44NzlMMi4xNiA5Ljc5NWEuNTMuNTMgMCAwIDEgLjI5NC0uOTA2bDUuMTY1LS43NTVhMi4xMiAyLjEyIDAgMCAwIDEuNTk3LTEuMTZsMi4zMDktNC42NzlBLjUzLjUzIDAgMCAxIDEyIDIifV1dfSk7dmFyIHhXLFVZZT1nKCgpPT57eFc9W1sicGF0aCIse2Q6Im0xMC4zNDQgNC42ODggMS4xODEtMi4zOTNhLjUzLjUzIDAgMCAxIC45NSAwbDIuMzEgNC42NzlhMi4xMiAyLjEyIDAgMCAwIDEuNTk1IDEuMTZsNS4xNjYuNzU2YS41My41MyAwIDAgMSAuMjk0LjkwNGwtMy4yMzcgMy4xNTIifV0sWyJwYXRoIix7ZDoibTE3Ljk0NSAxNy45NDUuNDMgMi41MDVhLjUzLjUzIDAgMCAxLS43NzEuNTZsLTQuNjE4LTIuNDI4YTIuMTIgMi4xMiAwIDAgMC0xLjk3MyAwTDYuMzk2IDIxLjAxYS41My41MyAwIDAgMS0uNzctLjU2bC44ODEtNS4xMzlhMi4xMiAyLjEyIDAgMCAwLS42MTEtMS44NzlMMi4xNiA5Ljc5NWEuNTMuNTMgMCAwIDEgLjI5NC0uOTA2bDUuMTY1LS43NTVhOCA4IDAgMCAwIC40LS4wOTkifV0sWyJwYXRoIix7ZDoibTIgMiAyMCAyMCJ9XV19KTt2YXIgeVcsV1llPWcoKCk9Pnt5Vz1bWyJwYXRoIix7ZDoiTTExLjUyNSAyLjI5NWEuNTMuNTMgMCAwIDEgLjk1IDBsMi4zMSA0LjY3OWEyLjEyMyAyLjEyMyAwIDAgMCAxLjU5NSAxLjE2bDUuMTY2Ljc1NmEuNTMuNTMgMCAwIDEgLjI5NC45MDRsLTMuNzM2IDMuNjM4YTIuMTIzIDIuMTIzIDAgMCAwLS42MTEgMS44NzhsLjg4MiA1LjE0YS41My41MyAwIDAgMS0uNzcxLjU2bC00LjYxOC0yLjQyOGEyLjEyMiAyLjEyMiAwIDAgMC0xLjk3MyAwTDYuMzk2IDIxLjAxYS41My41MyAwIDAgMS0uNzctLjU2bC44ODEtNS4xMzlhMi4xMjIgMi4xMjIgMCAwIDAtLjYxMS0xLjg3OUwyLjE2IDkuNzk1YS41My41MyAwIDAgMSAuMjk0LS45MDZsNS4xNjUtLjc1NWEyLjEyMiAyLjEyMiAwIDAgMCAxLjU5Ny0xLjE2eiJ9XV19KTt2YXIgd1csR1llPWcoKCk9Pnt3Vz1bWyJwYXRoIix7ZDoiTTEzLjk3MSA0LjI4NUEyIDIgMCAwIDEgMTcgNnYxMmEyIDIgMCAwIDEtMy4wMjkgMS43MTVsLTkuOTk3LTUuOTk4YTIgMiAwIDAgMS0uMDAzLTMuNDMyeiJ9XSxbInBhdGgiLHtkOiJNMjEgMjBWNCJ9XV19KTt2YXIga1csS1llPWcoKCk9PntrVz1bWyJwYXRoIix7ZDoiTTEwLjAyOSA0LjI4NUEyIDIgMCAwIDAgNyA2djEyYTIgMiAwIDAgMCAzLjAyOSAxLjcxNWw5Ljk5Ny01Ljk5OGEyIDIgMCAwIDAgLjAwMy0zLjQzMnoifV0sWyJwYXRoIix7ZDoiTTMgNHYxNiJ9XV19KTt2YXIgU1csWVllPWcoKCk9PntTVz1bWyJwYXRoIix7ZDoiTTIxIDlhMi40IDIuNCAwIDAgMC0uNzA2LTEuNzA2bC0zLjU4OC0zLjU4OEEyLjQgMi40IDAgMCAwIDE1IDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRhMiAyIDAgMCAwIDItMnoifV0sWyJwYXRoIix7ZDoiTTE1IDN2NWExIDEgMCAwIDAgMSAxaDUifV0sWyJwYXRoIix7ZDoiTTggMTNoLjAxIn1dLFsicGF0aCIse2Q6Ik0xNiAxM2guMDEifV0sWyJwYXRoIix7ZDoiTTEwIDE2cy44IDEgMiAxYzEuMyAwIDItMSAyLTEifV1dfSk7dmFyIF9XLFpZZT1nKCgpPT57X1c9W1sicGF0aCIse2Q6Ik0xMSAydjIifV0sWyJwYXRoIix7ZDoiTTUgMnYyIn1dLFsicGF0aCIse2Q6Ik01IDNINGEyIDIgMCAwIDAtMiAydjRhNiA2IDAgMCAwIDEyIDBWNWEyIDIgMCAwIDAtMi0yaC0xIn1dLFsicGF0aCIse2Q6Ik04IDE1YTYgNiAwIDAgMCAxMiAwdi0zIn1dLFsiY2lyY2xlIix7Y3g6IjIwIixjeToiMTAiLHI6IjIifV1dfSk7dmFyIE1XLFhZZT1nKCgpPT57TVc9W1sicGF0aCIse2Q6Ik0yMSA5YTIuNCAyLjQgMCAwIDAtLjcwNi0xLjcwNmwtMy41ODgtMy41ODhBMi40IDIuNCAwIDAgMCAxNSAzSDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YTIgMiAwIDAgMCAyLTJ6In1dLFsicGF0aCIse2Q6Ik0xNSAzdjVhMSAxIDAgMCAwIDEgMWg1In1dXX0pO3ZhciB6VyxRWWU9ZygoKT0+e3pXPVtbInBhdGgiLHtkOiJNMTUgMjF2LTVhMSAxIDAgMCAwLTEtMWgtNGExIDEgMCAwIDAtMSAxdjUifV0sWyJwYXRoIix7ZDoiTTE3Ljc3NCAxMC4zMWExLjEyIDEuMTIgMCAwIDAtMS41NDkgMCAyLjUgMi41IDAgMCAxLTMuNDUxIDAgMS4xMiAxLjEyIDAgMCAwLTEuNTQ4IDAgMi41IDIuNSAwIDAgMS0zLjQ1MiAwIDEuMTIgMS4xMiAwIDAgMC0xLjU0OSAwIDIuNSAyLjUgMCAwIDEtMy43Ny0zLjI0OGwyLjg4OS00LjE4NEEyIDIgMCAwIDEgNyAyaDEwYTIgMiAwIDAgMSAxLjY1My44NzNsMi44OTUgNC4xOTJhMi41IDIuNSAwIDAgMS0zLjc3NCAzLjI0NCJ9XSxbInBhdGgiLHtkOiJNNCAxMC45NVYxOWEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJ2LTguMDUifV1dfSk7dmFyIENXLEpZZT1nKCgpPT57Q1c9W1sicmVjdCIse3dpZHRoOiIyMCIsaGVpZ2h0OiI2Iix4OiIyIix5OiI0IixyeDoiMiJ9XSxbInJlY3QiLHt3aWR0aDoiMjAiLGhlaWdodDoiNiIseDoiMiIseToiMTQiLHJ4OiIyIn1dXX0pO3ZhciBUVyxlWmU9ZygoKT0+e1RXPVtbInBhdGgiLHtkOiJNMTEuMjY0IDIuMjA1QTQgNCAwIDAgMCA2LjQyIDQuMjExbC00IDhhNCA0IDAgMCAwIDEuMzU5IDUuMTE3bDYgNGE0IDQgMCAwIDAgNC40MzggMGw2LTRhNCA0IDAgMCAwIDEuNTc2LTQuNTkybC0yLTZhNCA0IDAgMCAwLTIuNTMtMi41M3oifV0sWyJwYXRoIix7ZDoiTTExLjk5IDIyIDE0IDEybDcuODIyIDMuMTg0In1dLFsicGF0aCIse2Q6Ik0xNCAxMiA4LjQ3IDIuMzAyIn1dXX0pO3ZhciAkVyx0WmU9ZygoKT0+eyRXPVtbInJlY3QiLHt3aWR0aDoiNiIsaGVpZ2h0OiIyMCIseDoiNCIseToiMiIscng6IjIifV0sWyJyZWN0Iix7d2lkdGg6IjYiLGhlaWdodDoiMjAiLHg6IjE0Iix5OiIyIixyeDoiMiJ9XV19KTt2YXIgRFcsYVplPWcoKCk9PntEVz1bWyJwYXRoIix7ZDoiTTE2IDRIOWEzIDMgMCAwIDAtMi44MyA0In1dLFsicGF0aCIse2Q6Ik0xNCAxMmE0IDQgMCAwIDEgMCA4SDYifV0sWyJsaW5lIix7eDE6IjQiLHgyOiIyMCIseTE6IjEyIix5MjoiMTIifV1dfSk7dmFyIExXLHNaZT1nKCgpPT57TFc9W1sicGF0aCIse2Q6Im00IDUgOCA4In1dLFsicGF0aCIse2Q6Im0xMiA1LTggOCJ9XSxbInBhdGgiLHtkOiJNMjAgMTloLTRjMC0xLjUuNDQtMiAxLjUtMi41UzIwIDE1LjMzIDIwIDE0YzAtLjQ3LS4xNy0uOTMtLjQ4LTEuMjlhMi4xMSAyLjExIDAgMCAwLTIuNjItLjQ0Yy0uNDIuMjQtLjc0LjYyLS45IDEuMDcifV1dfSk7dmFyIEVXLGlaZT1nKCgpPT57RVc9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjQifV0sWyJwYXRoIix7ZDoiTTEyIDRoLjAxIn1dLFsicGF0aCIse2Q6Ik0yMCAxMmguMDEifV0sWyJwYXRoIix7ZDoiTTEyIDIwaC4wMSJ9XSxbInBhdGgiLHtkOiJNNCAxMmguMDEifV0sWyJwYXRoIix7ZDoiTTE3LjY1NyA2LjM0M2guMDEifV0sWyJwYXRoIix7ZDoiTTE3LjY1NyAxNy42NTdoLjAxIn1dLFsicGF0aCIse2Q6Ik02LjM0MyAxNy42NTdoLjAxIn1dLFsicGF0aCIse2Q6Ik02LjM0MyA2LjM0M2guMDEifV1dfSk7dmFyIFBXLHJaZT1nKCgpPT57UFc9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjQifV0sWyJwYXRoIix7ZDoiTTEyIDN2MSJ9XSxbInBhdGgiLHtkOiJNMTIgMjB2MSJ9XSxbInBhdGgiLHtkOiJNMyAxMmgxIn1dLFsicGF0aCIse2Q6Ik0yMCAxMmgxIn1dLFsicGF0aCIse2Q6Im0xOC4zNjQgNS42MzYtLjcwNy43MDcifV0sWyJwYXRoIix7ZDoibTYuMzQzIDE3LjY1Ny0uNzA3LjcwNyJ9XSxbInBhdGgiLHtkOiJtNS42MzYgNS42MzYuNzA3LjcwNyJ9XSxbInBhdGgiLHtkOiJtMTcuNjU3IDE3LjY1Ny43MDcuNzA3In1dXX0pO3ZhciBJVyxvWmU9ZygoKT0+e0lXPVtbInBhdGgiLHtkOiJNMTIgMnYyIn1dLFsicGF0aCIse2Q6Ik0xNC44MzcgMTYuMzg1YTYgNiAwIDEgMS03LjIyMy03LjIyMmMuNjI0LS4xNDcuOTcuNjYuNzE1IDEuMjQ4YTQgNCAwIDAgMCA1LjI2IDUuMjU5Yy41ODktLjI1NSAxLjM5Ni4wOSAxLjI0OC43MTUifV0sWyJwYXRoIix7ZDoiTTE2IDEyYTQgNCAwIDAgMC00LTQifV0sWyJwYXRoIix7ZDoibTE5IDUtMS4yNTYgMS4yNTYifV0sWyJwYXRoIix7ZDoiTTIwIDEyaDIifV1dfSk7dmFyIEFXLG5aZT1nKCgpPT57QVc9W1sicGF0aCIse2Q6Ik0xMCAyMXYtMSJ9XSxbInBhdGgiLHtkOiJNMTAgNFYzIn1dLFsicGF0aCIse2Q6Ik0xMCA5YTMgMyAwIDAgMCAwIDYifV0sWyJwYXRoIix7ZDoibTE0IDIwIDEuMjUtMi41TDE4IDE4In1dLFsicGF0aCIse2Q6Im0xNCA0IDEuMjUgMi41TDE4IDYifV0sWyJwYXRoIix7ZDoibTE3IDIxLTMtNiAxLjUtM0gyMiJ9XSxbInBhdGgiLHtkOiJtMTcgMy0zIDYgMS41IDMifV0sWyJwYXRoIix7ZDoiTTIgMTJoMSJ9XSxbInBhdGgiLHtkOiJtMjAgMTAtMS41IDIgMS41IDIifV0sWyJwYXRoIix7ZDoibTMuNjQgMTguMzYuNy0uNyJ9XSxbInBhdGgiLHtkOiJtNC4zNCA2LjM0LS43LS43In1dXX0pO3ZhciBOVyxsWmU9ZygoKT0+e05XPVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiI0In1dLFsicGF0aCIse2Q6Ik0xMiAydjIifV0sWyJwYXRoIix7ZDoiTTEyIDIwdjIifV0sWyJwYXRoIix7ZDoibTQuOTMgNC45MyAxLjQxIDEuNDEifV0sWyJwYXRoIix7ZDoibTE3LjY2IDE3LjY2IDEuNDEgMS40MSJ9XSxbInBhdGgiLHtkOiJNMiAxMmgyIn1dLFsicGF0aCIse2Q6Ik0yMCAxMmgyIn1dLFsicGF0aCIse2Q6Im02LjM0IDE3LjY2LTEuNDEgMS40MSJ9XSxbInBhdGgiLHtkOiJtMTkuMDcgNC45My0xLjQxIDEuNDEifV1dfSk7dmFyIFJXLGNaZT1nKCgpPT57Ulc9W1sicGF0aCIse2Q6Ik0xMiAydjgifV0sWyJwYXRoIix7ZDoibTQuOTMgMTAuOTMgMS40MSAxLjQxIn1dLFsicGF0aCIse2Q6Ik0yIDE4aDIifV0sWyJwYXRoIix7ZDoiTTIwIDE4aDIifV0sWyJwYXRoIix7ZDoibTE5LjA3IDEwLjkzLTEuNDEgMS40MSJ9XSxbInBhdGgiLHtkOiJNMjIgMjJIMiJ9XSxbInBhdGgiLHtkOiJtOCA2IDQtNCA0IDQifV0sWyJwYXRoIix7ZDoiTTE2IDE4YTQgNCAwIDAgMC04IDAifV1dfSk7dmFyIE9XLGRaZT1nKCgpPT57T1c9W1sicGF0aCIse2Q6Ik0xMiAxMFYyIn1dLFsicGF0aCIse2Q6Im00LjkzIDEwLjkzIDEuNDEgMS40MSJ9XSxbInBhdGgiLHtkOiJNMiAxOGgyIn1dLFsicGF0aCIse2Q6Ik0yMCAxOGgyIn1dLFsicGF0aCIse2Q6Im0xOS4wNyAxMC45My0xLjQxIDEuNDEifV0sWyJwYXRoIix7ZDoiTTIyIDIySDIifV0sWyJwYXRoIix7ZDoibTE2IDYtNCA0LTQtNCJ9XSxbInBhdGgiLHtkOiJNMTYgMThhNCA0IDAgMCAwLTggMCJ9XV19KTt2YXIgRlcsdVplPWcoKCk9PntGVz1bWyJwYXRoIix7ZDoibTQgMTkgOC04In1dLFsicGF0aCIse2Q6Im0xMiAxOS04LTgifV0sWyJwYXRoIix7ZDoiTTIwIDEyaC00YzAtMS41LjQ0Mi0yIDEuNS0yLjVTMjAgOC4zMzQgMjAgNy4wMDJjMC0uNDcyLS4xNy0uOTMtLjQ4NC0xLjI5YTIuMTA1IDIuMTA1IDAgMCAwLTIuNjE3LS40MzZjLS40Mi4yMzktLjczOC42MTQtLjg5OSAxLjA2In1dXX0pO3ZhciBCVyxwWmU9ZygoKT0+e0JXPVtbInBhdGgiLHtkOiJNMTEgMTdhNCA0IDAgMCAxLTggMFY1YTIgMiAwIDAgMSAyLTJoNGEyIDIgMCAwIDEgMiAyWiJ9XSxbInBhdGgiLHtkOiJNMTYuNyAxM0gxOWEyIDIgMCAwIDEgMiAydjRhMiAyIDAgMCAxLTIgMkg3In1dLFsicGF0aCIse2Q6Ik0gNyAxN2guMDEifV0sWyJwYXRoIix7ZDoibTExIDggMi4zLTIuM2EyLjQgMi40IDAgMCAxIDMuNDA0LjAwNEwxOC42IDcuNmEyLjQgMi40IDAgMCAxIC4wMjYgMy40MzRMOS45IDE5LjgifV1dfSk7dmFyIEhXLGhaZT1nKCgpPT57SFc9W1sicGF0aCIse2Q6Ik0xMCAyMVYzaDgifV0sWyJwYXRoIix7ZDoiTTYgMTZoOSJ9XSxbInBhdGgiLHtkOiJNMTAgOS41aDcifV1dfSk7dmFyIHFXLGZaZT1nKCgpPT57cVc9W1sicGF0aCIse2Q6Ik0xMSAxOUg0YTIgMiAwIDAgMS0yLTJWN2EyIDIgMCAwIDEgMi0yaDUifV0sWyJwYXRoIix7ZDoiTTEzIDVoN2EyIDIgMCAwIDEgMiAydjEwYTIgMiAwIDAgMS0yIDJoLTUifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMyJ9XSxbInBhdGgiLHtkOiJtMTggMjItMy0zIDMtMyJ9XSxbInBhdGgiLHtkOiJtNiAyIDMgMy0zIDMifV1dfSk7dmFyIGpXLG1aZT1nKCgpPT57alc9W1sicGF0aCIse2Q6Im0xMSAxOS02LTYifV0sWyJwYXRoIix7ZDoibTUgMjEtMi0yIn1dLFsicGF0aCIse2Q6Im04IDE2LTQgNCJ9XSxbInBhdGgiLHtkOiJNOS41IDE3LjUgMjEgNlYzaC0zTDYuNSAxNC41In1dXX0pO3ZhciBWVyxnWmU9ZygoKT0+e1ZXPVtbInBvbHlsaW5lIix7cG9pbnRzOiIxNC41IDE3LjUgMyA2IDMgMyA2IDMgMTcuNSAxNC41In1dLFsibGluZSIse3gxOiIxMyIseDI6IjE5Iix5MToiMTkiLHkyOiIxMyJ9XSxbImxpbmUiLHt4MToiMTYiLHgyOiIyMCIseTE6IjE2Iix5MjoiMjAifV0sWyJsaW5lIix7eDE6IjE5Iix4MjoiMjEiLHkxOiIyMSIseTI6IjE5In1dLFsicG9seWxpbmUiLHtwb2ludHM6IjE0LjUgNi41IDE4IDMgMjEgMyAyMSA2IDE3LjUgOS41In1dLFsibGluZSIse3gxOiI1Iix4MjoiOSIseTE6IjE0Iix5MjoiMTgifV0sWyJsaW5lIix7eDE6IjciLHgyOiI0Iix5MToiMTciLHkyOiIyMCJ9XSxbImxpbmUiLHt4MToiMyIseDI6IjUiLHkxOiIxOSIseTI6IjIxIn1dXX0pO3ZhciBVVyxiWmU9ZygoKT0+e1VXPVtbInBhdGgiLHtkOiJtMTggMiA0IDQifV0sWyJwYXRoIix7ZDoibTE3IDcgMy0zIn1dLFsicGF0aCIse2Q6Ik0xOSA5IDguNyAxOS4zYy0xIDEtMi41IDEtMy40IDBsLS42LS42Yy0xLTEtMS0yLjUgMC0zLjRMMTUgNSJ9XSxbInBhdGgiLHtkOiJtOSAxMSA0IDQifV0sWyJwYXRoIix7ZDoibTUgMTktMyAzIn1dLFsicGF0aCIse2Q6Im0xNCA0IDYgNiJ9XV19KTt2YXIgV1csdlplPWcoKCk9PntXVz1bWyJwYXRoIix7ZDoiTTkgM0g1YTIgMiAwIDAgMC0yIDJ2NG02LTZoMTBhMiAyIDAgMCAxIDIgMnY0TTkgM3YxOG0wIDBoMTBhMiAyIDAgMCAwIDItMlY5TTkgMjFINWEyIDIgMCAwIDEtMi0yVjltMCAwaDE4In1dXX0pO3ZhciBHVyx4WmU9ZygoKT0+e0dXPVtbInBhdGgiLHtkOiJNMTIgMjF2LTYifV0sWyJwYXRoIix7ZDoiTTEyIDlWMyJ9XSxbInBhdGgiLHtkOiJNMyAxNWgxOCJ9XSxbInBhdGgiLHtkOiJNMyA5aDE4In1dLFsicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiMyIscng6IjIifV1dfSk7dmFyIEtXLHlaZT1nKCgpPT57S1c9W1sicGF0aCIse2Q6Ik0xMiAxNVY5In1dLFsicGF0aCIse2Q6Ik0zIDE1aDE4In1dLFsicGF0aCIse2Q6Ik0zIDloMTgifV0sWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiJ9XV19KTt2YXIgWVcsd1plPWcoKCk9PntZVz1bWyJwYXRoIix7ZDoiTTE0IDE0djIifV0sWyJwYXRoIix7ZDoiTTE0IDIwdjIifV0sWyJwYXRoIix7ZDoiTTE0IDJ2MiJ9XSxbInBhdGgiLHtkOiJNMTQgOHYyIn1dLFsicGF0aCIse2Q6Ik0yIDE1aDgifV0sWyJwYXRoIix7ZDoiTTIgM2g2YTIgMiAwIDAgMSAyIDJ2MTRhMiAyIDAgMCAxLTIgMkgyIn1dLFsicGF0aCIse2Q6Ik0yIDloOCJ9XSxbInBhdGgiLHtkOiJNMjIgMTVoLTQifV0sWyJwYXRoIix7ZDoiTTIyIDNoLTJhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDIifV0sWyJwYXRoIix7ZDoiTTIyIDloLTQifV0sWyJwYXRoIix7ZDoiTTUgM3YxOCJ9XV19KTt2YXIgWlcsa1plPWcoKCk9PntaVz1bWyJwYXRoIix7ZDoiTTE2IDVIMyJ9XSxbInBhdGgiLHtkOiJNMTYgMTJIMyJ9XSxbInBhdGgiLHtkOiJNMTYgMTlIMyJ9XSxbInBhdGgiLHtkOiJNMjEgNWguMDEifV0sWyJwYXRoIix7ZDoiTTIxIDEyaC4wMSJ9XSxbInBhdGgiLHtkOiJNMjEgMTloLjAxIn1dXX0pO3ZhciBYVyxTWmU9ZygoKT0+e1hXPVtbInBhdGgiLHtkOiJNMTUgM3YxOCJ9XSxbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHg6IjMiLHk6IjMiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik0yMSA5SDMifV0sWyJwYXRoIix7ZDoiTTIxIDE1SDMifV1dfSk7dmFyIFFXLF9aZT1nKCgpPT57UVc9W1sicGF0aCIse2Q6Ik0xNCAxMGgyIn1dLFsicGF0aCIse2Q6Ik0xNSAyMnYtOCJ9XSxbInBhdGgiLHtkOiJNMTUgMnY0In1dLFsicGF0aCIse2Q6Ik0yIDEwaDIifV0sWyJwYXRoIix7ZDoiTTIwIDEwaDIifV0sWyJwYXRoIix7ZDoiTTMgMTloMTgifV0sWyJwYXRoIix7ZDoiTTMgMjJ2LTZhMiAyIDEzNSAwIDEgMi0yaDE0YTIgMiA0NSAwIDEgMiAydjYifV0sWyJwYXRoIix7ZDoiTTMgMnYyYTIgMiA0NSAwIDAgMiAyaDE0YTIgMiAxMzUgMCAwIDItMlYyIn1dLFsicGF0aCIse2Q6Ik04IDEwaDIifV0sWyJwYXRoIix7ZDoiTTkgMjJ2LTgifV0sWyJwYXRoIix7ZDoiTTkgMnY0In1dXX0pO3ZhciBKVyxNWmU9ZygoKT0+e0pXPVtbInJlY3QiLHt3aWR0aDoiMTAiLGhlaWdodDoiMTQiLHg6IjMiLHk6IjgiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik01IDRhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjE2YTIgMiAwIDAgMS0yIDJoLTIuNCJ9XSxbInBhdGgiLHtkOiJNOCAxOGguMDEifV1dfSk7dmFyIGVHLHpaZT1nKCgpPT57ZUc9W1sicGF0aCIse2Q6Ik0xMiAzdjE4In1dLFsicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiMyIscng6IjIifV0sWyJwYXRoIix7ZDoiTTMgOWgxOCJ9XSxbInBhdGgiLHtkOiJNMyAxNWgxOCJ9XV19KTt2YXIgdEcsQ1plPWcoKCk9Pnt0Rz1bWyJyZWN0Iix7d2lkdGg6IjE2IixoZWlnaHQ6IjIwIix4OiI0Iix5OiIyIixyeDoiMiIscnk6IjIifV0sWyJsaW5lIix7eDE6IjEyIix4MjoiMTIuMDEiLHkxOiIxOCIseTI6IjE4In1dXX0pO3ZhciBhRyxUWmU9ZygoKT0+e2FHPVtbImNpcmNsZSIse2N4OiI3IixjeToiNyIscjoiNSJ9XSxbImNpcmNsZSIse2N4OiIxNyIsY3k6IjE3IixyOiI1In1dLFsicGF0aCIse2Q6Ik0xMiAxN2gxMCJ9XSxbInBhdGgiLHtkOiJtMy40NiAxMC41NCA3LjA4LTcuMDgifV1dfSk7dmFyIHNHLCRaZT1nKCgpPT57c0c9W1sicGF0aCIse2Q6Ik0xMi41ODYgMi41ODZBMiAyIDAgMCAwIDExLjE3MiAySDRhMiAyIDAgMCAwLTIgMnY3LjE3MmEyIDIgMCAwIDAgLjU4NiAxLjQxNGw4LjcwNCA4LjcwNGEyLjQyNiAyLjQyNiAwIDAgMCAzLjQyIDBsNi41OC02LjU4YTIuNDI2IDIuNDI2IDAgMCAwIDAtMy40MnoifV0sWyJjaXJjbGUiLHtjeDoiNy41IixjeToiNy41IixyOiIuNSIsZmlsbDoiY3VycmVudENvbG9yIn1dXX0pO3ZhciBpRyxEWmU9ZygoKT0+e2lHPVtbInBhdGgiLHtkOiJNMTMuMTcyIDJhMiAyIDAgMCAxIDEuNDE0LjU4Nmw2LjcxIDYuNzFhMi40IDIuNCAwIDAgMSAwIDMuNDA4bC00LjU5MiA0LjU5MmEyLjQgMi40IDAgMCAxLTMuNDA4IDBsLTYuNzEtNi43MUEyIDIgMCAwIDEgNiA5LjE3MlYzYTEgMSAwIDAgMSAxLTF6In1dLFsicGF0aCIse2Q6Ik0yIDd2Ni4xNzJhMiAyIDAgMCAwIC41ODYgMS40MTRsNi43MSA2LjcxYTIuNCAyLjQgMCAwIDAgMy4xOTEuMTkzIn1dLFsiY2lyY2xlIix7Y3g6IjEwLjUiLGN5OiI2LjUiLHI6Ii41IixmaWxsOiJjdXJyZW50Q29sb3IifV1dfSk7dmFyIHJHLExaZT1nKCgpPT57ckc9W1sicGF0aCIse2Q6Ik00IDR2MTYifV1dfSk7dmFyIG9HLEVaZT1nKCgpPT57b0c9W1sicGF0aCIse2Q6Ik00IDR2MTYifV0sWyJwYXRoIix7ZDoiTTkgNHYxNiJ9XV19KTt2YXIgbkcsUFplPWcoKCk9PntuRz1bWyJwYXRoIix7ZDoiTTQgNHYxNiJ9XSxbInBhdGgiLHtkOiJNOSA0djE2In1dLFsicGF0aCIse2Q6Ik0xNCA0djE2In1dXX0pO3ZhciBsRyxJWmU9ZygoKT0+e2xHPVtbInBhdGgiLHtkOiJNNCA0djE2In1dLFsicGF0aCIse2Q6Ik05IDR2MTYifV0sWyJwYXRoIix7ZDoiTTE0IDR2MTYifV0sWyJwYXRoIix7ZDoiTTE5IDR2MTYifV1dfSk7dmFyIGNHLEFaZT1nKCgpPT57Y0c9W1siY2lyY2xlIix7Y3g6IjE3IixjeToiNCIscjoiMiJ9XSxbInBhdGgiLHtkOiJNMTUuNTkgNS40MSA1LjQxIDE1LjU5In1dLFsiY2lyY2xlIix7Y3g6IjQiLGN5OiIxNyIscjoiMiJ9XSxbInBhdGgiLHtkOiJNMTIgMjJzLTQtOS0xLjUtMTEuNVMyMiAxMiAyMiAxMiJ9XV19KTt2YXIgZEcsTlplPWcoKCk9PntkRz1bWyJwYXRoIix7ZDoiTTQgNHYxNiJ9XSxbInBhdGgiLHtkOiJNOSA0djE2In1dLFsicGF0aCIse2Q6Ik0xNCA0djE2In1dLFsicGF0aCIse2Q6Ik0xOSA0djE2In1dLFsicGF0aCIse2Q6Ik0yMiA2IDIgMTgifV1dfSk7dmFyIHVHLFJaZT1nKCgpPT57dUc9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIn1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjYifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMiJ9XV19KTt2YXIgcEcsT1plPWcoKCk9PntwRz1bWyJwYXRoIix7ZDoibTEwLjA2NSAxMi40OTMtNi4xOCAxLjMxOGEuOTM0LjkzNCAwIDAgMS0xLjEwOC0uNzAybC0uNTM3LTIuMTVhMS4wNyAxLjA3IDAgMCAxIC42OTEtMS4yNjVsMTMuNTA0LTQuNDQifV0sWyJwYXRoIix7ZDoibTEzLjU2IDExLjc0NyA0LjMzMi0uOTI0In1dLFsicGF0aCIse2Q6Im0xNiAyMS0zLjEwNS02LjIxIn1dLFsicGF0aCIse2Q6Ik0xNi40ODUgNS45NGEyIDIgMCAwIDEgMS40NTUtMi40MjVsMS4wOS0uMjcyYTEgMSAwIDAgMSAxLjIxMi43MjdsMS41MTUgNi4wNmExIDEgMCAwIDEtLjcyNyAxLjIxM2wtMS4wOS4yNzJhMiAyIDAgMCAxLTIuNDI1LTEuNDU1eiJ9XSxbInBhdGgiLHtkOiJtNi4xNTggOC42MzMgMS4xMTQgNC40NTYifV0sWyJwYXRoIix7ZDoibTggMjEgMy4xMDUtNi4yMSJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEzIixyOiIyIn1dXX0pO3ZhciBoRyxGWmU9ZygoKT0+e2hHPVtbImNpcmNsZSIse2N4OiI0IixjeToiNCIscjoiMiJ9XSxbInBhdGgiLHtkOiJtMTQgNSAzLTMgMyAzIn1dLFsicGF0aCIse2Q6Im0xNCAxMCAzLTMgMyAzIn1dLFsicGF0aCIse2Q6Ik0xNyAxNFYyIn1dLFsicGF0aCIse2Q6Ik0xNyAxNEg3bC01IDhoMjBaIn1dLFsicGF0aCIse2Q6Ik04IDE0djgifV0sWyJwYXRoIix7ZDoibTkgMTQgNSA4In1dXX0pO3ZhciBmRyxCWmU9ZygoKT0+e2ZHPVtbInBhdGgiLHtkOiJNMy41IDIxIDE0IDMifV0sWyJwYXRoIix7ZDoiTTIwLjUgMjEgMTAgMyJ9XSxbInBhdGgiLHtkOiJNMTUuNSAyMSAxMiAxNWwtMy41IDYifV0sWyJwYXRoIix7ZDoiTTIgMjFoMjAifV1dfSk7dmFyIG1HLEhaZT1nKCgpPT57bUc9W1sicGF0aCIse2Q6Ik0xMiAxOWg4In1dLFsicGF0aCIse2Q6Im00IDE3IDYtNi02LTYifV1dfSk7dmFyIGk4LHFaZT1nKCgpPT57aTg9W1sicGF0aCIse2Q6Ik0yMSA3IDYuODIgMjEuMThhMi44MyAyLjgzIDAgMCAxLTMuOTktLjAxYTIuODMgMi44MyAwIDAgMSAwLTRMMTcgMyJ9XSxbInBhdGgiLHtkOiJtMTYgMiA2IDYifV0sWyJwYXRoIix7ZDoiTTEyIDE2SDQifV1dfSk7dmFyIGdHLGpaZT1nKCgpPT57Z0c9W1sicGF0aCIse2Q6Ik0xNC41IDJ2MTcuNWMwIDEuNC0xLjEgMi41LTIuNSAyLjVjLTEuNCAwLTIuNS0xLjEtMi41LTIuNVYyIn1dLFsicGF0aCIse2Q6Ik04LjUgMmg3In1dLFsicGF0aCIse2Q6Ik0xNC41IDE2aC01In1dXX0pO3ZhciByOCxWWmU9ZygoKT0+e3I4PVtbInBhdGgiLHtkOiJNMjEgNUgzIn1dLFsicGF0aCIse2Q6Ik0xNyAxMkg3In1dLFsicGF0aCIse2Q6Ik0xOSAxOUg1In1dXX0pO3ZhciBiRyxVWmU9ZygoKT0+e2JHPVtbInBhdGgiLHtkOiJNOSAydjE3LjVBMi41IDIuNSAwIDAgMSA2LjUgMjJBMi41IDIuNSAwIDAgMSA0IDE5LjVWMiJ9XSxbInBhdGgiLHtkOiJNMjAgMnYxNy41YTIuNSAyLjUgMCAwIDEtMi41IDIuNWEyLjUgMi41IDAgMCAxLTIuNS0yLjVWMiJ9XSxbInBhdGgiLHtkOiJNMyAyaDcifV0sWyJwYXRoIix7ZDoiTTE0IDJoNyJ9XSxbInBhdGgiLHtkOiJNOSAxNkg0In1dLFsicGF0aCIse2Q6Ik0yMCAxNmgtNSJ9XV19KTt2YXIgbzgsV1plPWcoKCk9PntvOD1bWyJwYXRoIix7ZDoiTTIxIDVIMyJ9XSxbInBhdGgiLHtkOiJNMjEgMTJIOSJ9XSxbInBhdGgiLHtkOiJNMjEgMTlINyJ9XV19KTt2YXIgbjgsR1plPWcoKCk9PntuOD1bWyJwYXRoIix7ZDoiTTMgNWgxOCJ9XSxbInBhdGgiLHtkOiJNMyAxMmgxOCJ9XSxbInBhdGgiLHtkOiJNMyAxOWgxOCJ9XV19KTt2YXIgWDAsS1plPWcoKCk9PntYMD1bWyJwYXRoIix7ZDoiTTIxIDVIMyJ9XSxbInBhdGgiLHtkOiJNMTUgMTJIMyJ9XSxbInBhdGgiLHtkOiJNMTcgMTlIMyJ9XV19KTt2YXIgdkcsWVplPWcoKCk9Pnt2Rz1bWyJwYXRoIix7ZDoiTTEyIDIwaC0xYTIgMiAwIDAgMS0yLTIgMiAyIDAgMCAxLTIgMkg2In1dLFsicGF0aCIse2Q6Ik0xMyA4aDdhMiAyIDAgMCAxIDIgMnY0YTIgMiAwIDAgMS0yIDJoLTcifV0sWyJwYXRoIix7ZDoiTTUgMTZINGEyIDIgMCAwIDEtMi0ydi00YTIgMiAwIDAgMSAyLTJoMSJ9XSxbInBhdGgiLHtkOiJNNiA0aDFhMiAyIDAgMCAxIDIgMiAyIDIgMCAwIDEgMi0yaDEifV0sWyJwYXRoIix7ZDoiTTkgNnYxMiJ9XV19KTt2YXIgeEcsWlplPWcoKCk9Pnt4Rz1bWyJwYXRoIix7ZDoiTTE3IDIyaC0xYTQgNCAwIDAgMS00LTRWNmE0IDQgMCAwIDEgNC00aDEifV0sWyJwYXRoIix7ZDoiTTcgMjJoMWE0IDQgMCAwIDAgNC00di0xIn1dLFsicGF0aCIse2Q6Ik03IDJoMWE0IDQgMCAwIDEgNCA0djEifV1dfSk7dmFyIGw4LFhaZT1nKCgpPT57bDg9W1sicGF0aCIse2Q6Ik0xNSA1aDYifV0sWyJwYXRoIix7ZDoiTTE1IDEyaDYifV0sWyJwYXRoIix7ZDoiTTMgMTloMTgifV0sWyJwYXRoIix7ZDoibTMgMTIgMy41NTMtNy43MjRhLjUuNSAwIDAgMSAuODk0IDBMMTEgMTIifV0sWyJwYXRoIix7ZDoiTTMuOTIgMTBoNi4xNiJ9XV19KTt2YXIgeUcsUVplPWcoKCk9Pnt5Rz1bWyJwYXRoIix7ZDoiTTE3IDVIMyJ9XSxbInBhdGgiLHtkOiJNMjEgMTJIOCJ9XSxbInBhdGgiLHtkOiJNMjEgMTlIOCJ9XSxbInBhdGgiLHtkOiJNMyAxMnY3In1dXX0pO3ZhciB3RyxKWmU9ZygoKT0+e3dHPVtbInBhdGgiLHtkOiJNMjEgNUgzIn1dLFsicGF0aCIse2Q6Ik0xMCAxMkgzIn1dLFsicGF0aCIse2Q6Ik0xMCAxOUgzIn1dLFsiY2lyY2xlIix7Y3g6IjE3IixjeToiMTUiLHI6IjMifV0sWyJwYXRoIix7ZDoibTIxIDE5LTEuOS0xLjkifV1dfSk7dmFyIGM4LGVYZT1nKCgpPT57Yzg9W1sicGF0aCIse2Q6Im0xNiAxNi0zIDMgMyAzIn1dLFsicGF0aCIse2Q6Ik0zIDEyaDE0LjVhMSAxIDAgMCAxIDAgN0gxMyJ9XSxbInBhdGgiLHtkOiJNMyAxOWg2In1dLFsicGF0aCIse2Q6Ik0zIDVoMTgifV1dfSk7dmFyIGtHLHRYZT1nKCgpPT57a0c9W1sicGF0aCIse2Q6Ik0yIDEwczMtMyAzLTgifV0sWyJwYXRoIix7ZDoiTTIyIDEwcy0zLTMtMy04In1dLFsicGF0aCIse2Q6Ik0xMCAyYzAgNC40LTMuNiA4LTggOCJ9XSxbInBhdGgiLHtkOiJNMTQgMmMwIDQuNCAzLjYgOCA4IDgifV0sWyJwYXRoIix7ZDoiTTIgMTBzMiAyIDIgNSJ9XSxbInBhdGgiLHtkOiJNMjIgMTBzLTIgMi0yIDUifV0sWyJwYXRoIix7ZDoiTTggMTVoOCJ9XSxbInBhdGgiLHtkOiJNMiAyMnYtMWEyIDIgMCAwIDEgMi0yaDRhMiAyIDAgMCAxIDIgMnYxIn1dLFsicGF0aCIse2Q6Ik0xNCAyMnYtMWEyIDIgMCAwIDEgMi0yaDRhMiAyIDAgMCAxIDIgMnYxIn1dXX0pO3ZhciBTRyxhWGU9ZygoKT0+e1NHPVtbInBhdGgiLHtkOiJtMTAgMjAtMS4yNS0yLjVMNiAxOCJ9XSxbInBhdGgiLHtkOiJNMTAgNCA4Ljc1IDYuNSA2IDYifV0sWyJwYXRoIix7ZDoiTTEwLjU4NSAxNUgxMCJ9XSxbInBhdGgiLHtkOiJNMiAxMmg2LjVMMTAgOSJ9XSxbInBhdGgiLHtkOiJNMjAgMTQuNTRhNCA0IDAgMSAxLTQgMFY0YTIgMiAwIDAgMSA0IDB6In1dLFsicGF0aCIse2Q6Im00IDEwIDEuNSAyTDQgMTQifV0sWyJwYXRoIix7ZDoibTcgMjEgMy02LTEuNS0zIn1dLFsicGF0aCIse2Q6Im03IDMgMyA2aDIifV1dfSk7dmFyIF9HLHNYZT1nKCgpPT57X0c9W1sicGF0aCIse2Q6Ik0xMiAydjIifV0sWyJwYXRoIix7ZDoiTTEyIDhhNCA0IDAgMCAwLTEuNjQ1IDcuNjQ3In1dLFsicGF0aCIse2Q6Ik0yIDEyaDIifV0sWyJwYXRoIix7ZDoiTTIwIDE0LjU0YTQgNCAwIDEgMS00IDBWNGEyIDIgMCAwIDEgNCAweiJ9XSxbInBhdGgiLHtkOiJtNC45MyA0LjkzIDEuNDEgMS40MSJ9XSxbInBhdGgiLHtkOiJtNi4zNCAxNy42Ni0xLjQxIDEuNDEifV1dfSk7dmFyIE1HLGlYZT1nKCgpPT57TUc9W1sicGF0aCIse2Q6Ik0xNCA0djEwLjU0YTQgNCAwIDEgMS00IDBWNGEyIDIgMCAwIDEgNCAwWiJ9XV19KTt2YXIgekcsclhlPWcoKCk9Pnt6Rz1bWyJwYXRoIix7ZDoiTTkgMTguMTIgMTAgMTRINC4xN2EyIDIgMCAwIDEtMS45Mi0yLjU2bDIuMzMtOEEyIDIgMCAwIDEgNi41IDJIMjBhMiAyIDAgMCAxIDIgMnY4YTIgMiAwIDAgMS0yIDJoLTIuNzZhMiAyIDAgMCAwLTEuNzkgMS4xMUwxMiAyMmEzLjEzIDMuMTMgMCAwIDEtMy0zLjg4WiJ9XSxbInBhdGgiLHtkOiJNMTcgMTRWMiJ9XV19KTt2YXIgQ0csb1hlPWcoKCk9PntDRz1bWyJwYXRoIix7ZDoiTTE1IDUuODggMTQgMTBoNS44M2EyIDIgMCAwIDEgMS45MiAyLjU2bC0yLjMzIDhBMiAyIDAgMCAxIDE3LjUgMjJINGEyIDIgMCAwIDEtMi0ydi04YTIgMiAwIDAgMSAyLTJoMi43NmEyIDIgMCAwIDAgMS43OS0xLjExTDEyIDJhMy4xMyAzLjEzIDAgMCAxIDMgMy44OFoifV0sWyJwYXRoIix7ZDoiTTcgMTB2MTIifV1dfSk7dmFyIFRHLG5YZT1nKCgpPT57VEc9W1sicGF0aCIse2Q6Ik0yIDlhMyAzIDAgMCAxIDAgNnYyYTIgMiAwIDAgMCAyIDJoMTZhMiAyIDAgMCAwIDItMnYtMmEzIDMgMCAwIDEgMC02VjdhMiAyIDAgMCAwLTItMkg0YTIgMiAwIDAgMC0yIDJaIn1dLFsicGF0aCIse2Q6Im05IDEyIDIgMiA0LTQifV1dfSk7dmFyICRHLGxYZT1nKCgpPT57JEc9W1sicGF0aCIse2Q6Ik0yIDlhMyAzIDAgMCAxIDAgNnYyYTIgMiAwIDAgMCAyIDJoMTZhMiAyIDAgMCAwIDItMnYtMmEzIDMgMCAwIDEgMC02VjdhMiAyIDAgMCAwLTItMkg0YTIgMiAwIDAgMC0yIDJaIn1dLFsicGF0aCIse2Q6Ik05IDEyaDYifV1dfSk7dmFyIERHLGNYZT1nKCgpPT57REc9W1sicGF0aCIse2Q6Ik0yIDlhMyAzIDAgMSAxIDAgNnYyYTIgMiAwIDAgMCAyIDJoMTZhMiAyIDAgMCAwIDItMnYtMmEzIDMgMCAxIDEgMC02VjdhMiAyIDAgMCAwLTItMkg0YTIgMiAwIDAgMC0yIDJaIn1dLFsicGF0aCIse2Q6Ik05IDloLjAxIn1dLFsicGF0aCIse2Q6Im0xNSA5LTYgNiJ9XSxbInBhdGgiLHtkOiJNMTUgMTVoLjAxIn1dXX0pO3ZhciBMRyxkWGU9ZygoKT0+e0xHPVtbInBhdGgiLHtkOiJNMiA5YTMgMyAwIDAgMSAwIDZ2MmEyIDIgMCAwIDAgMiAyaDE2YTIgMiAwIDAgMCAyLTJ2LTJhMyAzIDAgMCAxIDAtNlY3YTIgMiAwIDAgMC0yLTJINGEyIDIgMCAwIDAtMiAyWiJ9XSxbInBhdGgiLHtkOiJNOSAxMmg2In1dLFsicGF0aCIse2Q6Ik0xMiA5djYifV1dfSk7dmFyIEVHLHVYZT1nKCgpPT57RUc9W1sicGF0aCIse2Q6Ik0yIDlhMyAzIDAgMCAxIDAgNnYyYTIgMiAwIDAgMCAyIDJoMTZhMiAyIDAgMCAwIDItMnYtMmEzIDMgMCAwIDEgMC02VjdhMiAyIDAgMCAwLTItMkg0YTIgMiAwIDAgMC0yIDJaIn1dLFsicGF0aCIse2Q6Im05LjUgMTQuNSA1LTUifV1dfSk7dmFyIFBHLHBYZT1nKCgpPT57UEc9W1sicGF0aCIse2Q6Ik0yIDlhMyAzIDAgMCAxIDAgNnYyYTIgMiAwIDAgMCAyIDJoMTZhMiAyIDAgMCAwIDItMnYtMmEzIDMgMCAwIDEgMC02VjdhMiAyIDAgMCAwLTItMkg0YTIgMiAwIDAgMC0yIDJaIn1dLFsicGF0aCIse2Q6Im05LjUgMTQuNSA1LTUifV0sWyJwYXRoIix7ZDoibTkuNSA5LjUgNSA1In1dXX0pO3ZhciBJRyxoWGU9ZygoKT0+e0lHPVtbInBhdGgiLHtkOiJNMiA5YTMgMyAwIDAgMSAwIDZ2MmEyIDIgMCAwIDAgMiAyaDE2YTIgMiAwIDAgMCAyLTJ2LTJhMyAzIDAgMCAxIDAtNlY3YTIgMiAwIDAgMC0yLTJINGEyIDIgMCAwIDAtMiAyWiJ9XSxbInBhdGgiLHtkOiJNMTMgNXYyIn1dLFsicGF0aCIse2Q6Ik0xMyAxN3YyIn1dLFsicGF0aCIse2Q6Ik0xMyAxMXYyIn1dXX0pO3ZhciBBRyxmWGU9ZygoKT0+e0FHPVtbInBhdGgiLHtkOiJNMTAuNSAxN2gxLjIyN2EyIDIgMCAwIDAgMS4zNDUtLjUyTDE4IDEyIn1dLFsicGF0aCIse2Q6Im0xMiAxMy41IDMuNzk0LjUwNiJ9XSxbInBhdGgiLHtkOiJtMy4xNzMgOC4xOCAxMS01YTIgMiAwIDAgMSAyLjY0Ny45OTNMMTguNTYgOCJ9XSxbInBhdGgiLHtkOiJNNiAxMFY4In1dLFsicGF0aCIse2Q6Ik02IDE0djEifV0sWyJwYXRoIix7ZDoiTTYgMTl2MiJ9XSxbInJlY3QiLHt4OiIyIix5OiI4Iix3aWR0aDoiMjAiLGhlaWdodDoiMTMiLHJ4OiIyIn1dXX0pO3ZhciBORyxtWGU9ZygoKT0+e05HPVtbInBhdGgiLHtkOiJtMy4xNzMgOC4xOCAxMS01YTIgMiAwIDAgMSAyLjY0Ny45OTNMMTguNTYgOCJ9XSxbInBhdGgiLHtkOiJNNiAxMFY4In1dLFsicGF0aCIse2Q6Ik02IDE0djEifV0sWyJwYXRoIix7ZDoiTTYgMTl2MiJ9XSxbInJlY3QiLHt4OiIyIix5OiI4Iix3aWR0aDoiMjAiLGhlaWdodDoiMTMiLHJ4OiIyIn1dXX0pO3ZhciBSRyxnWGU9ZygoKT0+e1JHPVtbInBhdGgiLHtkOiJNNCAxMmguMDEifV0sWyJwYXRoIix7ZDoiTTQgMTZoLjAxIn1dLFsicGF0aCIse2Q6Ik00IDIwaC4wMSJ9XSxbInBhdGgiLHtkOiJNNCA0aC4wMSJ9XSxbInBhdGgiLHtkOiJNNCA4aC4wMSJ9XSxbInBhdGgiLHtkOiJNOS40MTQgMTMuNDE0YTIgMiAwIDAgMCAxLjQxNC41ODZIMTlhMSAxIDAgMCAwIDEtMXYtMmExIDEgMCAwIDAtMS0xaC04LjE3MmEyIDIgMCAwIDAtMS40MTQuNTg2TDggMTJ6In1dLFsicGF0aCIse2Q6Ik05LjQxNCAyMS40MTRhMiAyIDAgMCAwIDEuNDE0LjU4NkgxOWExIDEgMCAwIDAgMS0xdi0yYTEgMSAwIDAgMC0xLTFoLTguMTcyYTIgMiAwIDAgMC0xLjQxNC41ODZMOCAyMHoifV0sWyJwYXRoIix7ZDoiTTkuNDE0IDUuNDE0QTIgMiAwIDAgMCAxMC44MjggNkgxOWExIDEgMCAwIDAgMS0xVjNhMSAxIDAgMCAwLTEtMWgtOC4xNzJhMiAyIDAgMCAwLTEuNDE0LjU4Nkw4IDR6In1dXX0pO3ZhciBPRyxiWGU9ZygoKT0+e09HPVtbInBhdGgiLHtkOiJNMTAgMmg0In1dLFsicGF0aCIse2Q6Ik00LjYgMTFhOCA4IDAgMCAwIDEuNyA4LjcgOCA4IDAgMCAwIDguNyAxLjcifV0sWyJwYXRoIix7ZDoiTTcuNCA3LjRhOCA4IDAgMCAxIDEwLjMgMSA4IDggMCAwIDEgLjkgMTAuMiJ9XSxbInBhdGgiLHtkOiJtMiAyIDIwIDIwIn1dLFsicGF0aCIse2Q6Ik0xMiAxMnYtMiJ9XV19KTt2YXIgRkcsdlhlPWcoKCk9PntGRz1bWyJwYXRoIix7ZDoiTTEwIDJoNCJ9XSxbInBhdGgiLHtkOiJNMTIgMTR2LTQifV0sWyJwYXRoIix7ZDoiTTQgMTNhOCA4IDAgMCAxIDgtNyA4IDggMCAxIDEtNS4zIDE0TDQgMTcuNiJ9XSxbInBhdGgiLHtkOiJNOSAxN0g0djUifV1dfSk7dmFyIEJHLHhYZT1nKCgpPT57Qkc9W1sibGluZSIse3gxOiIxMCIseDI6IjE0Iix5MToiMiIseTI6IjIifV0sWyJsaW5lIix7eDE6IjEyIix4MjoiMTUiLHkxOiIxNCIseTI6IjExIn1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiMTQiLHI6IjgifV1dfSk7dmFyIEhHLHlYZT1nKCgpPT57SEc9W1sicGF0aCIse2Q6Ik03IDEyaDEzYTEgMSAwIDAgMSAxIDEgNSA1IDAgMCAxLTUgNWgtLjU5OGEuNS41IDAgMCAwLS40MjQuNzY1bDEuNTQ0IDIuNDdhLjUuNSAwIDAgMS0uNDI0Ljc2NUg1LjQwMmEuNS41IDAgMCAxLS40MjQtLjc2NUw3IDE4In1dLFsicGF0aCIse2Q6Ik04IDE4YTUgNSAwIDAgMS01LTVWNGEyIDIgMCAwIDEgMi0yaDhhMiAyIDAgMCAxIDIgMnY4In1dXX0pO3ZhciBxRyx3WGU9ZygoKT0+e3FHPVtbImNpcmNsZSIse2N4OiI5IixjeToiMTIiLHI6IjMifV0sWyJyZWN0Iix7d2lkdGg6IjIwIixoZWlnaHQ6IjE0Iix4OiIyIix5OiI1IixyeDoiNyJ9XV19KTt2YXIgakcsa1hlPWcoKCk9PntqRz1bWyJjaXJjbGUiLHtjeDoiMTUiLGN5OiIxMiIscjoiMyJ9XSxbInJlY3QiLHt3aWR0aDoiMjAiLGhlaWdodDoiMTQiLHg6IjIiLHk6IjUiLHJ4OiI3In1dXX0pO3ZhciBWRyxTWGU9ZygoKT0+e1ZHPVtbInBhdGgiLHtkOiJNMTAgMTVoNCJ9XSxbInBhdGgiLHtkOiJtMTQuODE3IDEwLjk5NS0uOTcxLTEuNDUgMS4wMzQtMS4yMzJhMiAyIDAgMCAwLTIuMDI1LTMuMjM4bC0xLjgyLjM2NEw5LjkxIDMuODg1YTIgMiAwIDAgMC0zLjYyNS43NDhMNi4xNDEgNi41NWwtMS43MjUuNDI2YTIgMiAwIDAgMC0uMTkgMy43NTZsLjY1Ny4yNyJ9XSxbInBhdGgiLHtkOiJtMTguODIyIDEwLjk5NSAyLjI2LTUuMzhhMSAxIDAgMCAwLS41NTctMS4zMThMMTYuOTU0IDIuOWExIDEgMCAwIDAtMS4yODEuNTMzbC0uOTI0IDIuMTIyIn1dLFsicGF0aCIse2Q6Ik00IDEyLjAwNkExIDEgMCAwIDEgNC45OTQgMTFIMTlhMSAxIDAgMCAxIDEgMXY3YTIgMiAwIDAgMS0yIDJINmEyIDIgMCAwIDEtMi0yeiJ9XV19KTt2YXIgVUcsX1hlPWcoKCk9PntVRz1bWyJwYXRoIix7ZDoiTTE2IDEydjQifV0sWyJwYXRoIix7ZDoiTTE2IDZhMiAyIDAgMCAxIDEuNDE0LjU4Nmw0IDRBMiAyIDAgMCAxIDIyIDEydjdhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJ2LTdhMiAyIDAgMCAxIC41ODYtMS40MTRsNC00QTIgMiAwIDAgMSA4IDZ6In1dLFsicGF0aCIse2Q6Ik0xNiA2VjRhMiAyIDAgMCAwLTItMmgtNGEyIDIgMCAwIDAtMiAydjIifV0sWyJwYXRoIix7ZDoiTTIgMTRoMjAifV0sWyJwYXRoIix7ZDoiTTggMTJ2NCJ9XV19KTt2YXIgV0csTVhlPWcoKCk9PntXRz1bWyJlbGxpcHNlIix7Y3g6IjEyIixjeToiMTEiLHJ4OiIzIixyeToiMiJ9XSxbImVsbGlwc2UiLHtjeDoiMTIiLGN5OiIxMi41IixyeDoiMTAiLHJ5OiI4LjUifV1dfSk7dmFyIEdHLHpYZT1nKCgpPT57R0c9W1sicGF0aCIse2Q6Ik0xMiAyMHYtNiJ9XSxbInBhdGgiLHtkOiJNMTkuNjU2IDE0SDIyIn1dLFsicGF0aCIse2Q6Ik0yIDE0aDEyIn1dLFsicGF0aCIse2Q6Im0yIDIgMjAgMjAifV0sWyJwYXRoIix7ZDoiTTIwIDIwSDRhMiAyIDAgMCAxLTItMlY2YTIgMiAwIDAgMSAyLTIifV0sWyJwYXRoIix7ZDoiTTkuNjU2IDRIMjBhMiAyIDAgMCAxIDIgMnYxMC4zNDQifV1dfSk7dmFyIEtHLENYZT1nKCgpPT57S0c9W1sicGF0aCIse2Q6Ik0yMSA0SDMifV0sWyJwYXRoIix7ZDoiTTE4IDhINiJ9XSxbInBhdGgiLHtkOiJNMTkgMTJIOSJ9XSxbInBhdGgiLHtkOiJNMTYgMTZoLTYifV0sWyJwYXRoIix7ZDoiTTExIDIwSDkifV1dfSk7dmFyIFlHLFRYZT1nKCgpPT57WUc9W1sicmVjdCIse3dpZHRoOiIyMCIsaGVpZ2h0OiIxNiIseDoiMiIseToiNCIscng6IjIifV0sWyJwYXRoIix7ZDoiTTIgMTRoMjAifV0sWyJwYXRoIix7ZDoiTTEyIDIwdi02In1dXX0pO3ZhciBaRywkWGU9ZygoKT0+e1pHPVtbInBhdGgiLHtkOiJNMjIgN2gtMiJ9XSxbInBhdGgiLHtkOiJNNi41IDNoMTFBMi41IDIuNSAwIDAgMSAyMCA1LjVWMjBhMSAxIDAgMCAxLTEgMWgtOWExIDEgMCAwIDEtMS0xVjUuNWExIDEgMCAwIDAtNSAwVjE3YTEgMSAwIDAgMCAxIDFoNCJ9XSxbInBhdGgiLHtkOiJNOSA3SDIifV1dfSk7dmFyIFhHLERYZT1nKCgpPT57WEc9W1sicGF0aCIse2Q6Ik0xOC4yIDEyLjI3IDIwIDZINGwxLjggNi4yN2ExIDEgMCAwIDAgLjk1LjczaDEwLjVhMSAxIDAgMCAwIC45Ni0uNzNaIn1dLFsicGF0aCIse2Q6Ik04IDEzdjkifV0sWyJwYXRoIix7ZDoiTTE2IDIydi05In1dLFsicGF0aCIse2Q6Im05IDYgMSA3In1dLFsicGF0aCIse2Q6Im0xNSA2LTEgNyJ9XSxbInBhdGgiLHtkOiJNMTIgNlYyIn1dLFsicGF0aCIse2Q6Ik0xMyAyaC0yIn1dXX0pO3ZhciBRRyxMWGU9ZygoKT0+e1FHPVtbInJlY3QiLHt3aWR0aDoiMTgiLGhlaWdodDoiMTIiLHg6IjMiLHk6IjgiLHJ4OiIxIn1dLFsicGF0aCIse2Q6Ik0xMCA4VjVjMC0uNi0uNC0xLTEtMUg2YTEgMSAwIDAgMC0xIDF2MyJ9XSxbInBhdGgiLHtkOiJNMTkgOFY1YzAtLjYtLjQtMS0xLTFoLTNhMSAxIDAgMCAwLTEgMXYzIn1dXX0pO3ZhciBKRyxFWGU9ZygoKT0+e0pHPVtbInBhdGgiLHtkOiJtMTAgMTEgMTEgLjlhMSAxIDAgMCAxIC44IDEuMWwtLjY2NSA0LjE1OGExIDEgMCAwIDEtLjk4OC44NDJIMjAifV0sWyJwYXRoIix7ZDoiTTE2IDE4aC01In1dLFsicGF0aCIse2Q6Ik0xOCA1YTEgMSAwIDAgMC0xIDF2NS41NzMifV0sWyJwYXRoIix7ZDoiTTMgNGg4LjEyOWExIDEgMCAwIDEgLjk5Ljg2M0wxMyAxMS4yNDYifV0sWyJwYXRoIix7ZDoiTTQgMTFWNCJ9XSxbInBhdGgiLHtkOiJNNyAxNWguMDEifV0sWyJwYXRoIix7ZDoiTTggMTAuMVY0In1dLFsiY2lyY2xlIix7Y3g6IjE4IixjeToiMTgiLHI6IjIifV0sWyJjaXJjbGUiLHtjeDoiNyIsY3k6IjE1IixyOiI1In1dXX0pO3ZhciBlSyxQWGU9ZygoKT0+e2VLPVtbInBhdGgiLHtkOiJNMTYuMDUgMTAuOTY2YTUgMi41IDAgMCAxLTguMSAwIn1dLFsicGF0aCIse2Q6Im0xNi45MjMgMTQuMDQ5IDQuNDggMi4wNGExIDEgMCAwIDEgLjAwMSAxLjgzMWwtOC41NzQgMy45YTIgMiAwIDAgMS0xLjY2IDBsLTguNTc0LTMuOTFhMSAxIDAgMCAxIDAtMS44M2w0LjQ4NC0yLjA0In1dLFsicGF0aCIse2Q6Ik0xNi45NDkgMTQuMTRhNSAyLjUgMCAxIDEtOS45IDBMMTAuMDYzIDMuNWEyIDIgMCAwIDEgMy44NzQgMHoifV0sWyJwYXRoIix7ZDoiTTkuMTk0IDYuNTdhNSAyLjUgMCAwIDAgNS42MSAwIn1dXX0pO3ZhciB0SyxJWGU9ZygoKT0+e3RLPVtbInBhdGgiLHtkOiJNMiAyMlYxMmExMCAxMCAwIDEgMSAyMCAwdjEwIn1dLFsicGF0aCIse2Q6Ik0xNSA2Ljh2MS40YTMgMi44IDAgMSAxLTYgMFY2LjgifV0sWyJwYXRoIix7ZDoiTTEwIDE1aC4wMSJ9XSxbInBhdGgiLHtkOiJNMTQgMTVoLjAxIn1dLFsicGF0aCIse2Q6Ik0xMCAxOWE0IDQgMCAwIDEtNC00di0zYTYgNiAwIDEgMSAxMiAwdjNhNCA0IDAgMCAxLTQgNFoifV0sWyJwYXRoIix7ZDoibTkgMTktMiAzIn1dLFsicGF0aCIse2Q6Im0xNSAxOSAyIDMifV1dfSk7dmFyIGFLLEFYZT1nKCgpPT57YUs9W1sicGF0aCIse2Q6Ik04IDMuMVY3YTQgNCAwIDAgMCA4IDBWMy4xIn1dLFsicGF0aCIse2Q6Im05IDE1LTEtMSJ9XSxbInBhdGgiLHtkOiJtMTUgMTUgMS0xIn1dLFsicGF0aCIse2Q6Ik05IDE5Yy0yLjggMC01LTIuMi01LTV2LTRhOCA4IDAgMCAxIDE2IDB2NGMwIDIuOC0yLjIgNS01IDVaIn1dLFsicGF0aCIse2Q6Im04IDE5LTIgMyJ9XSxbInBhdGgiLHtkOiJtMTYgMTkgMiAzIn1dXX0pO3ZhciBzSyxOWGU9ZygoKT0+e3NLPVtbInBhdGgiLHtkOiJNMiAxNyAxNyAyIn1dLFsicGF0aCIse2Q6Im0yIDE0IDggOCJ9XSxbInBhdGgiLHtkOiJtNSAxMSA4IDgifV0sWyJwYXRoIix7ZDoibTggOCA4IDgifV0sWyJwYXRoIix7ZDoibTExIDUgOCA4In1dLFsicGF0aCIse2Q6Im0xNCAyIDggOCJ9XSxbInBhdGgiLHtkOiJNNyAyMiAyMiA3In1dXX0pO3ZhciBkOCxSWGU9ZygoKT0+e2Q4PVtbInJlY3QiLHt3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHg6IjQiLHk6IjMiLHJ4OiIyIn1dLFsicGF0aCIse2Q6Ik00IDExaDE2In1dLFsicGF0aCIse2Q6Ik0xMiAzdjgifV0sWyJwYXRoIix7ZDoibTggMTktMiAzIn1dLFsicGF0aCIse2Q6Im0xOCAyMi0yLTMifV0sWyJwYXRoIix7ZDoiTTggMTVoLjAxIn1dLFsicGF0aCIse2Q6Ik0xNiAxNWguMDEifV1dfSk7dmFyIGlLLE9YZT1nKCgpPT57aUs9W1sicGF0aCIse2Q6Ik0xMiAxNnY2In1dLFsicGF0aCIse2Q6Ik0xNCAyMGgtNCJ9XSxbInBhdGgiLHtkOiJNMTggMmg0djQifV0sWyJwYXRoIix7ZDoibTIgMiA3LjE3IDcuMTcifV0sWyJwYXRoIix7ZDoiTTIgNS4zNTVWMmgzLjM1NyJ9XSxbInBhdGgiLHtkOiJtMjIgMi03LjE3IDcuMTcifV0sWyJwYXRoIix7ZDoiTTggNSA1IDgifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiNCJ9XV19KTt2YXIgckssRlhlPWcoKCk9PntySz1bWyJwYXRoIix7ZDoiTTEwIDExdjYifV0sWyJwYXRoIix7ZDoiTTE0IDExdjYifV0sWyJwYXRoIix7ZDoiTTE5IDZ2MTRhMiAyIDAgMCAxLTIgMkg3YTIgMiAwIDAgMS0yLTJWNiJ9XSxbInBhdGgiLHtkOiJNMyA2aDE4In1dLFsicGF0aCIse2Q6Ik04IDZWNGEyIDIgMCAwIDEgMi0yaDRhMiAyIDAgMCAxIDIgMnYyIn1dXX0pO3ZhciBvSyxCWGU9ZygoKT0+e29LPVtbInBhdGgiLHtkOiJNMTkgNnYxNGEyIDIgMCAwIDEtMiAySDdhMiAyIDAgMCAxLTItMlY2In1dLFsicGF0aCIse2Q6Ik0zIDZoMTgifV0sWyJwYXRoIix7ZDoiTTggNlY0YTIgMiAwIDAgMSAyLTJoNGEyIDIgMCAwIDEgMiAydjIifV1dfSk7dmFyIG5LLEhYZT1nKCgpPT57bks9W1sicGF0aCIse2Q6Ik04IDE5YTQgNCAwIDAgMS0yLjI0LTcuMzJBMy41IDMuNSAwIDAgMSA5IDYuMDNWNmEzIDMgMCAxIDEgNiAwdi4wNGEzLjUgMy41IDAgMCAxIDMuMjQgNS42NUE0IDQgMCAwIDEgMTYgMTlaIn1dLFsicGF0aCIse2Q6Ik0xMiAxOXYzIn1dXX0pO3ZhciB1OCxxWGU9ZygoKT0+e3U4PVtbInBhdGgiLHtkOiJNMTMgOGMwLTIuNzYtMi40Ni01LTUuNS01UzIgNS4yNCAyIDhoMmwxLTEgMSAxaDQifV0sWyJwYXRoIix7ZDoiTTEzIDcuMTRBNS44MiA1LjgyIDAgMCAxIDE2LjUgNmMzLjA0IDAgNS41IDIuMjQgNS41IDVoLTNsLTEtMS0xIDFoLTMifV0sWyJwYXRoIix7ZDoiTTUuODkgOS43MWMtMi4xNSAyLjE1LTIuMyA1LjQ3LS4zNSA3LjQzbDQuMjQtNC4yNS43LS43LjcxLS43MSAyLjEyLTIuMTJjLTEuOTUtMS45Ni01LjI3LTEuOC03LjQyLjM1In1dLFsicGF0aCIse2Q6Ik0xMSAxNS41Yy41IDIuNS0uMTcgNC41LTEgNi41aDRjMi01LjUtLjUtMTItMS0xNCJ9XV19KTt2YXIgbEssalhlPWcoKCk9PntsSz1bWyJwYXRoIix7ZDoibTE3IDE0IDMgMy4zYTEgMSAwIDAgMS0uNyAxLjdINC43YTEgMSAwIDAgMS0uNy0xLjdMNyAxNGgtLjNhMSAxIDAgMCAxLS43LTEuN0w5IDloLS4yQTEgMSAwIDAgMSA4IDcuM0wxMiAzbDQgNC4zYTEgMSAwIDAgMS0uOCAxLjdIMTVsMyAzLjNhMSAxIDAgMCAxLS43IDEuN0gxN1oifV0sWyJwYXRoIix7ZDoiTTEyIDIydi0zIn1dXX0pO3ZhciBjSyxWWGU9ZygoKT0+e2NLPVtbInBhdGgiLHtkOiJNMTAgMTB2LjJBMyAzIDAgMCAxIDguOSAxNkg1YTMgMyAwIDAgMS0xLTUuOFYxMGEzIDMgMCAwIDEgNiAwWiJ9XSxbInBhdGgiLHtkOiJNNyAxNnY2In1dLFsicGF0aCIse2Q6Ik0xMyAxOXYzIn1dLFsicGF0aCIse2Q6Ik0xMiAxOWg4LjNhMSAxIDAgMCAwIC43LTEuN0wxOCAxNGguM2ExIDEgMCAwIDAgLjctMS43TDE2IDloLjJhMSAxIDAgMCAwIC44LTEuN0wxMyAzbC0xLjQgMS41In1dXX0pO3ZhciBkSyxVWGU9ZygoKT0+e2RLPVtbInBhdGgiLHtkOiJNMTYgMTdoNnYtNiJ9XSxbInBhdGgiLHtkOiJtMjIgMTctOC41LTguNS01IDVMMiA3In1dXX0pO3ZhciB1SyxXWGU9ZygoKT0+e3VLPVtbInBhdGgiLHtkOiJNMTQuODI4IDE0LjgyOCAyMSAyMSJ9XSxbInBhdGgiLHtkOiJNMjEgMTZ2NWgtNSJ9XSxbInBhdGgiLHtkOiJtMjEgMy05IDktNC00LTYgNiJ9XSxbInBhdGgiLHtkOiJNMjEgOFYzaC01In1dXX0pO3ZhciBwSyxHWGU9ZygoKT0+e3BLPVtbInBhdGgiLHtkOiJNMTYgN2g2djYifV0sWyJwYXRoIix7ZDoibTIyIDctOC41IDguNS01LTVMMiAxNyJ9XV19KTt2YXIgcDgsS1hlPWcoKCk9PntwOD1bWyJwYXRoIix7ZDoibTIxLjczIDE4LTgtMTRhMiAyIDAgMCAwLTMuNDggMGwtOCAxNEEyIDIgMCAwIDAgNCAyMWgxNmEyIDIgMCAwIDAgMS43My0zIn1dLFsicGF0aCIse2Q6Ik0xMiA5djQifV0sWyJwYXRoIix7ZDoiTTEyIDE3aC4wMSJ9XV19KTt2YXIgaEssWVhlPWcoKCk9PntoSz1bWyJwYXRoIix7ZDoiTTEwLjE3IDQuMTkzYTIgMiAwIDAgMSAzLjY2Ni4wMTMifV0sWyJwYXRoIix7ZDoiTTE0IDIxaDIifV0sWyJwYXRoIix7ZDoibTE1Ljg3NCA3Ljc0MyAxIDEuNzMyIn1dLFsicGF0aCIse2Q6Im0xOC44NDkgMTIuOTUyIDEgMS43MzIifV0sWyJwYXRoIix7ZDoiTTIxLjgyNCAxOC4xOGEyIDIgMCAwIDEtMS44MzUgMi44MjQifV0sWyJwYXRoIix7ZDoiTTQuMDI0IDIxYTIgMiAwIDAgMS0xLjgzOS0yLjgzOSJ9XSxbInBhdGgiLHtkOiJtNS4xMzYgMTIuOTUyLTEgMS43MzIifV0sWyJwYXRoIix7ZDoiTTggMjFoMiJ9XSxbInBhdGgiLHtkOiJtOC4xMDIgNy43NDMtMSAxLjczMiJ9XV19KTt2YXIgZkssWlhlPWcoKCk9PntmSz1bWyJwYXRoIix7ZDoiTTIyIDE4YTIgMiAwIDAgMS0yIDJIM2MtMS4xIDAtMS4zLS42LS40LTEuM0wyMC40IDQuM2MuOS0uNyAxLjYtLjQgMS42LjdaIn1dXX0pO3ZhciBtSyxYWGU9ZygoKT0+e21LPVtbInBhdGgiLHtkOiJNMTMuNzMgNGEyIDIgMCAwIDAtMy40NiAwbC04IDE0QTIgMiAwIDAgMCA0IDIxaDE2YTIgMiAwIDAgMCAxLjczLTNaIn1dXX0pO3ZhciBnSyxRWGU9ZygoKT0+e2dLPVtbInBhdGgiLHtkOiJNMTAgMTQuNjZ2MS42MjZhMiAyIDAgMCAxLS45NzYgMS42OTZBNSA1IDAgMCAwIDcgMjEuOTc4In1dLFsicGF0aCIse2Q6Ik0xNCAxNC42NnYxLjYyNmEyIDIgMCAwIDAgLjk3NiAxLjY5NkE1IDUgMCAwIDEgMTcgMjEuOTc4In1dLFsicGF0aCIse2Q6Ik0xOCA5aDEuNWExIDEgMCAwIDAgMC01SDE4In1dLFsicGF0aCIse2Q6Ik00IDIyaDE2In1dLFsicGF0aCIse2Q6Ik02IDlhNiA2IDAgMCAwIDEyIDBWM2ExIDEgMCAwIDAtMS0xSDdhMSAxIDAgMCAwLTEgMXoifV0sWyJwYXRoIix7ZDoiTTYgOUg0LjVhMSAxIDAgMCAxIDAtNUg2In1dXX0pO3ZhciBiSyxKWGU9ZygoKT0+e2JLPVtbInBhdGgiLHtkOiJNMTQgMTlWN2EyIDIgMCAwIDAtMi0ySDkifV0sWyJwYXRoIix7ZDoiTTE1IDE5SDkifV0sWyJwYXRoIix7ZDoiTTE5IDE5aDJhMSAxIDAgMCAwIDEtMXYtMy42NWExIDEgMCAwIDAtLjIyLS42MkwxOC4zIDkuMzhhMSAxIDAgMCAwLS43OC0uMzhIMTQifV0sWyJwYXRoIix7ZDoiTTIgMTN2NWExIDEgMCAwIDAgMSAxaDIifV0sWyJwYXRoIix7ZDoiTTQgMyAyLjE1IDUuMTVhLjQ5NS40OTUgMCAwIDAgLjM1Ljg2aDIuMTVhLjQ3LjQ3IDAgMCAxIC4zNS44NkwzIDkuMDIifV0sWyJjaXJjbGUiLHtjeDoiMTciLGN5OiIxOSIscjoiMiJ9XSxbImNpcmNsZSIse2N4OiI3IixjeToiMTkiLHI6IjIifV1dfSk7dmFyIHZLLGVRZT1nKCgpPT57dks9W1sicGF0aCIse2Q6Ik0xNCAxOFY2YTIgMiAwIDAgMC0yLTJINGEyIDIgMCAwIDAtMiAydjExYTEgMSAwIDAgMCAxIDFoMiJ9XSxbInBhdGgiLHtkOiJNMTUgMThIOSJ9XSxbInBhdGgiLHtkOiJNMTkgMThoMmExIDEgMCAwIDAgMS0xdi0zLjY1YTEgMSAwIDAgMC0uMjItLjYyNGwtMy40OC00LjM1QTEgMSAwIDAgMCAxNy41MiA4SDE0In1dLFsiY2lyY2xlIix7Y3g6IjE3IixjeToiMTgiLHI6IjIifV0sWyJjaXJjbGUiLHtjeDoiNyIsY3k6IjE4IixyOiIyIn1dXX0pO3ZhciB4Syx0UWU9ZygoKT0+e3hLPVtbInBhdGgiLHtkOiJNMTUgNCA1IDkifV0sWyJwYXRoIix7ZDoibTE1IDguNS0xMCA1In1dLFsicGF0aCIse2Q6Ik0xOCAxMmE5IDkgMCAwIDEtOSA5VjMifV1dfSk7dmFyIHlLLGFRZT1nKCgpPT57eUs9W1sicGF0aCIse2Q6Ik0xMCAxMi4wMWguMDEifV0sWyJwYXRoIix7ZDoiTTE4IDh2NGE4IDggMCAwIDEtMS4wNyA0In1dLFsiY2lyY2xlIix7Y3g6IjEwIixjeToiMTIiLHI6IjQifV0sWyJyZWN0Iix7eDoiMiIseToiNCIsd2lkdGg6IjIwIixoZWlnaHQ6IjE2IixyeDoiMiJ9XV19KTt2YXIgd0ssc1FlPWcoKCk9Pnt3Sz1bWyJwYXRoIix7ZDoibTEyIDEwIDIgNHYzYTEgMSAwIDAgMCAxIDFoMmExIDEgMCAwIDAgMS0xdi0zYTggOCAwIDEgMC0xNiAwdjNhMSAxIDAgMCAwIDEgMWgyYTEgMSAwIDAgMCAxLTF2LTNsMi00aDRaIn1dLFsicGF0aCIse2Q6Ik00LjgyIDcuOSA4IDEwIn1dLFsicGF0aCIse2Q6Ik0xNS4xOCA3LjkgMTIgMTAifV0sWyJwYXRoIix7ZDoiTTE2LjkzIDEwSDIwYTIgMiAwIDAgMSAwIDRIMiJ9XV19KTt2YXIga0ssaVFlPWcoKCk9PntrSz1bWyJwYXRoIix7ZDoiTTE1LjAzMyA5LjQ0YS42NDcuNjQ3IDAgMCAxIDAgMS4xMmwtNC4wNjUgMi4zNTJhLjY0NS42NDUgMCAwIDEtLjk2OC0uNTZWNy42NDhhLjY0NS42NDUgMCAwIDEgLjk2Ny0uNTZ6In1dLFsicGF0aCIse2Q6Ik03IDIxaDEwIn1dLFsicmVjdCIse3dpZHRoOiIyMCIsaGVpZ2h0OiIxNCIseDoiMiIseToiMyIscng6IjIifV1dfSk7dmFyIGg4LHJRZT1nKCgpPT57aDg9W1sicGF0aCIse2Q6Ik03IDIxaDEwIn1dLFsicmVjdCIse3dpZHRoOiIyMCIsaGVpZ2h0OiIxNCIseDoiMiIseToiMyIscng6IjIifV1dfSk7dmFyIFNLLG9RZT1nKCgpPT57U0s9W1sicGF0aCIse2Q6Im0xNyAyLTUgNS01LTUifV0sWyJyZWN0Iix7d2lkdGg6IjIwIixoZWlnaHQ6IjE1Iix4OiIyIix5OiI3IixyeDoiMiJ9XV19KTt2YXIgX0ssblFlPWcoKCk9PntfSz1bWyJwYXRoIix7ZDoiTTE0IDE2LjVhLjUuNSAwIDAgMCAuNS41aC41YTIgMiAwIDAgMSAwIDRIOWEyIDIgMCAwIDEgMC00aC41YS41LjUgMCAwIDAgLjUtLjV2LTlhLjUuNSAwIDAgMC0uNS0uNWgtM2EuNS41IDAgMCAwLS41LjVWOGEyIDIgMCAwIDEtNCAwVjVhMiAyIDAgMCAxIDItMmgxNmEyIDIgMCAwIDEgMiAydjNhMiAyIDAgMCAxLTQgMHYtLjVhLjUuNSAwIDAgMC0uNS0uNWgtM2EuNS41IDAgMCAwLS41LjVaIn1dXX0pO3ZhciBNSyxsUWU9ZygoKT0+e01LPVtbInBhdGgiLHtkOiJNMTIgNHYxNiJ9XSxbInBhdGgiLHtkOiJNNCA3VjVhMSAxIDAgMCAxIDEtMWgxNGExIDEgMCAwIDEgMSAxdjIifV0sWyJwYXRoIix7ZDoiTTkgMjBoNiJ9XV19KTt2YXIgekssY1FlPWcoKCk9Pnt6Sz1bWyJwYXRoIix7ZDoiTTEyIDEzdjdhMiAyIDAgMCAwIDQgMCJ9XSxbInBhdGgiLHtkOiJNMTIgMnYyIn1dLFsicGF0aCIse2Q6Ik0xOC42NTYgMTNoMi4zMzZhMSAxIDAgMCAwIC45Ny0xLjI3NCAxMC4yODQgMTAuMjg0IDAgMCAwLTEyLjA3LTcuNTEifV0sWyJwYXRoIix7ZDoibTIgMiAyMCAyMCJ9XSxbInBhdGgiLHtkOiJNNS45NjEgNS45NTdhMTAuMjggMTAuMjggMCAwIDAtMy45MjIgNS43NjlBMSAxIDAgMCAwIDMgMTNoMTAifV1dfSk7dmFyIENLLGRRZT1nKCgpPT57Q0s9W1sicGF0aCIse2Q6Ik0xMiAxM3Y3YTIgMiAwIDAgMCA0IDAifV0sWyJwYXRoIix7ZDoiTTEyIDJ2MiJ9XSxbInBhdGgiLHtkOiJNMjAuOTkyIDEzYTEgMSAwIDAgMCAuOTctMS4yNzQgMTAuMjg0IDEwLjI4NCAwIDAgMC0xOS45MjMgMEExIDEgMCAwIDAgMyAxM3oifV1dfSk7dmFyIFRLLHVRZT1nKCgpPT57VEs9W1sicGF0aCIse2Q6Ik02IDR2NmE2IDYgMCAwIDAgMTIgMFY0In1dLFsibGluZSIse3gxOiI0Iix4MjoiMjAiLHkxOiIyMCIseTI6IjIwIn1dXX0pO3ZhciAkSyxwUWU9ZygoKT0+eyRLPVtbInBhdGgiLHtkOiJNOSAxNCA0IDlsNS01In1dLFsicGF0aCIse2Q6Ik00IDloMTAuNWE1LjUgNS41IDAgMCAxIDUuNSA1LjVhNS41IDUuNSAwIDAgMS01LjUgNS41SDExIn1dXX0pO3ZhciBESyxoUWU9ZygoKT0+e0RLPVtbInBhdGgiLHtkOiJNMjEgMTdhOSA5IDAgMCAwLTE1LTYuN0wzIDEzIn1dLFsicGF0aCIse2Q6Ik0zIDd2Nmg2In1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiMTciLHI6IjEifV1dfSk7dmFyIExLLGZRZT1nKCgpPT57TEs9W1sicGF0aCIse2Q6Ik0zIDd2Nmg2In1dLFsicGF0aCIse2Q6Ik0yMSAxN2E5IDkgMCAwIDAtOS05IDkgOSAwIDAgMC02IDIuM0wzIDEzIn1dXX0pO3ZhciBFSyxtUWU9ZygoKT0+e0VLPVtbInBhdGgiLHtkOiJNMTYgMTJoNiJ9XSxbInBhdGgiLHtkOiJNOCAxMkgyIn1dLFsicGF0aCIse2Q6Ik0xMiAydjIifV0sWyJwYXRoIix7ZDoiTTEyIDh2MiJ9XSxbInBhdGgiLHtkOiJNMTIgMTR2MiJ9XSxbInBhdGgiLHtkOiJNMTIgMjB2MiJ9XSxbInBhdGgiLHtkOiJtMTkgMTUgMy0zLTMtMyJ9XSxbInBhdGgiLHtkOiJtNSA5LTMgMyAzIDMifV1dfSk7dmFyIFBLLGdRZT1nKCgpPT57UEs9W1sicGF0aCIse2Q6Ik0xMiAyMnYtNiJ9XSxbInBhdGgiLHtkOiJNMTIgOFYyIn1dLFsicGF0aCIse2Q6Ik00IDEySDIifV0sWyJwYXRoIix7ZDoiTTEwIDEySDgifV0sWyJwYXRoIix7ZDoiTTE2IDEyaC0yIn1dLFsicGF0aCIse2Q6Ik0yMiAxMmgtMiJ9XSxbInBhdGgiLHtkOiJtMTUgMTktMyAzLTMtMyJ9XSxbInBhdGgiLHtkOiJtMTUgNS0zLTMtMyAzIn1dXX0pO3ZhciBmOCxiUWU9ZygoKT0+e2Y4PVtbInBhdGgiLHtkOiJNMTQgMjF2LTNhMiAyIDAgMCAwLTQgMHYzIn1dLFsicGF0aCIse2Q6Ik0xOCAxMmguMDEifV0sWyJwYXRoIix7ZDoiTTE4IDE2aC4wMSJ9XSxbInBhdGgiLHtkOiJNMjIgN2ExIDEgMCAwIDAtMS0xaC0yYTIgMiAwIDAgMS0xLjE0My0uMzU5TDEzLjE0MyAyLjM2YTIgMiAwIDAgMC0yLjI4Ni0uMDAxTDYuMTQzIDUuNjRBMiAyIDAgMCAxIDUgNkgzYTEgMSAwIDAgMC0xIDF2MTJhMiAyIDAgMCAwIDIgMmgxNmEyIDIgMCAwIDAgMi0yeiJ9XSxbInBhdGgiLHtkOiJNNiAxMmguMDEifV0sWyJwYXRoIix7ZDoiTTYgMTZoLjAxIn1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiMTAiLHI6IjIifV1dfSk7dmFyIElLLHZRZT1nKCgpPT57SUs9W1sicmVjdCIse3dpZHRoOiI4IixoZWlnaHQ6IjYiLHg6IjUiLHk6IjQiLHJ4OiIxIn1dLFsicmVjdCIse3dpZHRoOiI4IixoZWlnaHQ6IjYiLHg6IjExIix5OiIxNCIscng6IjEifV1dfSk7dmFyIEFLLHhRZT1nKCgpPT57QUs9W1sicGF0aCIse2Q6Ik0xNSA3aDJhNSA1IDAgMCAxIDAgMTBoLTJtLTYgMEg3QTUgNSAwIDAgMSA3IDdoMiJ9XV19KTt2YXIgTksseVFlPWcoKCk9PntOSz1bWyJwYXRoIix7ZDoibTE5IDUgMy0zIn1dLFsicGF0aCIse2Q6Im0yIDIyIDMtMyJ9XSxbInBhdGgiLHtkOiJNNi4zIDIwLjNhMi40IDIuNCAwIDAgMCAzLjQgMEwxMiAxOGwtNi02LTIuMyAyLjNhMi40IDIuNCAwIDAgMCAwIDMuNFoifV0sWyJwYXRoIix7ZDoiTTcuNSAxMy41IDEwIDExIn1dLFsicGF0aCIse2Q6Ik0xMC41IDE2LjUgMTMgMTQifV0sWyJwYXRoIix7ZDoibTEyIDYgNiA2IDIuMy0yLjNhMi40IDIuNCAwIDAgMCAwLTMuNGwtMi42LTIuNmEyLjQgMi40IDAgMCAwLTMuNCAwWiJ9XV19KTt2YXIgUkssd1FlPWcoKCk9PntSSz1bWyJwYXRoIix7ZDoibTE4Ljg0IDEyLjI1IDEuNzItMS43MWgtLjAyYTUuMDA0IDUuMDA0IDAgMCAwLS4xMi03LjA3IDUuMDA2IDUuMDA2IDAgMCAwLTYuOTUgMGwtMS43MiAxLjcxIn1dLFsicGF0aCIse2Q6Im01LjE3IDExLjc1LTEuNzEgMS43MWE1LjAwNCA1LjAwNCAwIDAgMCAuMTIgNy4wNyA1LjAwNiA1LjAwNiAwIDAgMCA2Ljk1IDBsMS43MS0xLjcxIn1dLFsibGluZSIse3gxOiI4Iix4MjoiOCIseTE6IjIiLHkyOiI1In1dLFsibGluZSIse3gxOiIyIix4MjoiNSIseTE6IjgiLHkyOiI4In1dLFsibGluZSIse3gxOiIxNiIseDI6IjE2Iix5MToiMTkiLHkyOiIyMiJ9XSxbImxpbmUiLHt4MToiMTkiLHgyOiIyMiIseTE6IjE2Iix5MjoiMTYifV1dfSk7dmFyIE9LLGtRZT1nKCgpPT57T0s9W1sicGF0aCIse2Q6Ik0xMiAzdjEyIn1dLFsicGF0aCIse2Q6Im0xNyA4LTUtNS01IDUifV0sWyJwYXRoIix7ZDoiTTIxIDE1djRhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJ2LTQifV1dfSk7dmFyIEZLLFNRZT1nKCgpPT57Rks9W1siY2lyY2xlIix7Y3g6IjEwIixjeToiNyIscjoiMSJ9XSxbImNpcmNsZSIse2N4OiI0IixjeToiMjAiLHI6IjEifV0sWyJwYXRoIix7ZDoiTTQuNyAxOS4zIDE5IDUifV0sWyJwYXRoIix7ZDoibTIxIDMtMyAxIDIgMloifV0sWyJwYXRoIix7ZDoiTTkuMjYgNy42OCA1IDEybDIgNSJ9XSxbInBhdGgiLHtkOiJtMTAgMTQgNSAyIDMuNS0zLjUifV0sWyJwYXRoIix7ZDoibTE4IDEyIDEtMSAxIDEtMSAxWiJ9XV19KTt2YXIgQkssX1FlPWcoKCk9PntCSz1bWyJwYXRoIix7ZDoibTE2IDExIDIgMiA0LTQifV0sWyJwYXRoIix7ZDoiTTE2IDIxdi0yYTQgNCAwIDAgMC00LTRINmE0IDQgMCAwIDAtNCA0djIifV0sWyJjaXJjbGUiLHtjeDoiOSIsY3k6IjciLHI6IjQifV1dfSk7dmFyIEhLLE1RZT1nKCgpPT57SEs9W1sicGF0aCIse2Q6Ik0xMCAxNUg2YTQgNCAwIDAgMC00IDR2MiJ9XSxbInBhdGgiLHtkOiJtMTQuMzA1IDE2LjUzLjkyMy0uMzgyIn1dLFsicGF0aCIse2Q6Im0xNS4yMjggMTMuODUyLS45MjMtLjM4MyJ9XSxbInBhdGgiLHtkOiJtMTYuODUyIDEyLjIyOC0uMzgzLS45MjMifV0sWyJwYXRoIix7ZDoibTE2Ljg1MiAxNy43NzItLjM4My45MjQifV0sWyJwYXRoIix7ZDoibTE5LjE0OCAxMi4yMjguMzgzLS45MjMifV0sWyJwYXRoIix7ZDoibTE5LjUzIDE4LjY5Ni0uMzgyLS45MjQifV0sWyJwYXRoIix7ZDoibTIwLjc3MiAxMy44NTIuOTI0LS4zODMifV0sWyJwYXRoIix7ZDoibTIwLjc3MiAxNi4xNDguOTI0LjM4MyJ9XSxbImNpcmNsZSIse2N4OiIxOCIsY3k6IjE1IixyOiIzIn1dLFsiY2lyY2xlIix7Y3g6IjkiLGN5OiI3IixyOiI0In1dXX0pO3ZhciBxSyx6UWU9ZygoKT0+e3FLPVtbInBhdGgiLHtkOiJNMjAgMTF2NiJ9XSxbInBhdGgiLHtkOiJNMjAgMTNoMiJ9XSxbInBhdGgiLHtkOiJNMyAyMXYtMmE0IDQgMCAwIDEgNC00aDZhNCA0IDAgMCAxIDIuMDcyLjU3OCJ9XSxbImNpcmNsZSIse2N4OiIxMCIsY3k6IjciLHI6IjQifV0sWyJjaXJjbGUiLHtjeDoiMjAiLGN5OiIxOSIscjoiMiJ9XV19KTt2YXIgakssQ1FlPWcoKCk9PntqSz1bWyJwYXRoIix7ZDoiTTE5IDE2di0yYTIgMiAwIDAgMC00IDB2MiJ9XSxbInBhdGgiLHtkOiJNOS41IDE1SDdhNCA0IDAgMCAwLTQgNHYyIn1dLFsiY2lyY2xlIix7Y3g6IjEwIixjeToiNyIscjoiNCJ9XSxbInJlY3QiLHt4OiIxMyIseToiMTYiLHdpZHRoOiI4IixoZWlnaHQ6IjUiLHJ4OiIuODk5In1dXX0pO3ZhciBWSyxUUWU9ZygoKT0+e1ZLPVtbInBhdGgiLHtkOiJNMTYgMjF2LTJhNCA0IDAgMCAwLTQtNEg2YTQgNCAwIDAgMC00IDR2MiJ9XSxbImNpcmNsZSIse2N4OiI5IixjeToiNyIscjoiNCJ9XSxbImxpbmUiLHt4MToiMjIiLHgyOiIxNiIseTE6IjExIix5MjoiMTEifV1dfSk7dmFyIFVLLCRRZT1nKCgpPT57VUs9W1sicGF0aCIse2Q6Ik0xMS41IDE1SDdhNCA0IDAgMCAwLTQgNHYyIn1dLFsicGF0aCIse2Q6Ik0yMS4zNzggMTYuNjI2YTEgMSAwIDAgMC0zLjAwNC0zLjAwNGwtNC4wMSA0LjAxMmEyIDIgMCAwIDAtLjUwNi44NTRsLS44MzcgMi44N2EuNS41IDAgMCAwIC42Mi42MmwyLjg3LS44MzdhMiAyIDAgMCAwIC44NTQtLjUwNnoifV0sWyJjaXJjbGUiLHtjeDoiMTAiLGN5OiI3IixyOiI0In1dXX0pO3ZhciBXSyxEUWU9ZygoKT0+e1dLPVtbInBhdGgiLHtkOiJNMTYgMjF2LTJhNCA0IDAgMCAwLTQtNEg2YTQgNCAwIDAgMC00IDR2MiJ9XSxbImNpcmNsZSIse2N4OiI5IixjeToiNyIscjoiNCJ9XSxbImxpbmUiLHt4MToiMTkiLHgyOiIxOSIseTE6IjgiLHkyOiIxNCJ9XSxbImxpbmUiLHt4MToiMjIiLHgyOiIxNiIseTE6IjExIix5MjoiMTEifV1dfSk7dmFyIG04LExRZT1nKCgpPT57bTg9W1sicGF0aCIse2Q6Ik0yIDIxYTggOCAwIDAgMSAxMy4yOTItNiJ9XSxbImNpcmNsZSIse2N4OiIxMCIsY3k6IjgiLHI6IjUifV0sWyJwYXRoIix7ZDoibTE2IDE5IDIgMiA0LTQifV1dfSk7dmFyIGc4LEVRZT1nKCgpPT57Zzg9W1sicGF0aCIse2Q6Im0xNC4zMDUgMTkuNTMuOTIzLS4zODIifV0sWyJwYXRoIix7ZDoibTE1LjIyOCAxNi44NTItLjkyMy0uMzgzIn1dLFsicGF0aCIse2Q6Im0xNi44NTIgMTUuMjI4LS4zODMtLjkyMyJ9XSxbInBhdGgiLHtkOiJtMTYuODUyIDIwLjc3Mi0uMzgzLjkyNCJ9XSxbInBhdGgiLHtkOiJtMTkuMTQ4IDE1LjIyOC4zODMtLjkyMyJ9XSxbInBhdGgiLHtkOiJtMTkuNTMgMjEuNjk2LS4zODItLjkyNCJ9XSxbInBhdGgiLHtkOiJNMiAyMWE4IDggMCAwIDEgMTAuNDM0LTcuNjIifV0sWyJwYXRoIix7ZDoibTIwLjc3MiAxNi44NTIuOTI0LS4zODMifV0sWyJwYXRoIix7ZDoibTIwLjc3MiAxOS4xNDguOTI0LjM4MyJ9XSxbImNpcmNsZSIse2N4OiIxMCIsY3k6IjgiLHI6IjUifV0sWyJjaXJjbGUiLHtjeDoiMTgiLGN5OiIxOCIscjoiMyJ9XV19KTt2YXIgR0ssUFFlPWcoKCk9PntHSz1bWyJwYXRoIix7ZDoiTTE5IDExdjYifV0sWyJwYXRoIix7ZDoiTTE5IDEzaDIifV0sWyJwYXRoIix7ZDoiTTIgMjFhOCA4IDAgMCAxIDEyLjg2OC02LjM0OSJ9XSxbImNpcmNsZSIse2N4OiIxMCIsY3k6IjgiLHI6IjUifV0sWyJjaXJjbGUiLHtjeDoiMTkiLGN5OiIxOSIscjoiMiJ9XV19KTt2YXIgYjgsSVFlPWcoKCk9PntiOD1bWyJwYXRoIix7ZDoiTTIgMjFhOCA4IDAgMCAxIDEzLjI5Mi02In1dLFsiY2lyY2xlIix7Y3g6IjEwIixjeToiOCIscjoiNSJ9XSxbInBhdGgiLHtkOiJNMjIgMTloLTYifV1dfSk7dmFyIEtLLEFRZT1nKCgpPT57S0s9W1sicGF0aCIse2Q6Ik0yIDIxYTggOCAwIDAgMSAxMC44MjEtNy40ODcifV0sWyJwYXRoIix7ZDoiTTIxLjM3OCAxNi42MjZhMSAxIDAgMCAwLTMuMDA0LTMuMDA0bC00LjAxIDQuMDEyYTIgMiAwIDAgMC0uNTA2Ljg1NGwtLjgzNyAyLjg3YS41LjUgMCAwIDAgLjYyLjYybDIuODctLjgzN2EyIDIgMCAwIDAgLjg1NC0uNTA2eiJ9XSxbImNpcmNsZSIse2N4OiIxMCIsY3k6IjgiLHI6IjUifV1dfSk7dmFyIHY4LE5RZT1nKCgpPT57djg9W1sicGF0aCIse2Q6Ik0yIDIxYTggOCAwIDAgMSAxMy4yOTItNiJ9XSxbImNpcmNsZSIse2N4OiIxMCIsY3k6IjgiLHI6IjUifV0sWyJwYXRoIix7ZDoiTTE5IDE2djYifV0sWyJwYXRoIix7ZDoiTTIyIDE5aC02In1dXX0pO3ZhciBZSyxSUWU9ZygoKT0+e1lLPVtbImNpcmNsZSIse2N4OiIxMCIsY3k6IjgiLHI6IjUifV0sWyJwYXRoIix7ZDoiTTIgMjFhOCA4IDAgMCAxIDEwLjQzNC03LjYyIn1dLFsiY2lyY2xlIix7Y3g6IjE4IixjeToiMTgiLHI6IjMifV0sWyJwYXRoIix7ZDoibTIyIDIyLTEuOS0xLjkifV1dfSk7dmFyIHg4LE9RZT1nKCgpPT57eDg9W1sicGF0aCIse2Q6Ik0yIDIxYTggOCAwIDAgMSAxMS44NzMtNyJ9XSxbImNpcmNsZSIse2N4OiIxMCIsY3k6IjgiLHI6IjUifV0sWyJwYXRoIix7ZDoibTE3IDE3IDUgNSJ9XSxbInBhdGgiLHtkOiJtMjIgMTctNSA1In1dXX0pO3ZhciB5OCxGUWU9ZygoKT0+e3k4PVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjgiLHI6IjUifV0sWyJwYXRoIix7ZDoiTTIwIDIxYTggOCAwIDAgMC0xNiAwIn1dXX0pO3ZhciBaSyxCUWU9ZygoKT0+e1pLPVtbImNpcmNsZSIse2N4OiIxMCIsY3k6IjciLHI6IjQifV0sWyJwYXRoIix7ZDoiTTEwLjMgMTVIN2E0IDQgMCAwIDAtNCA0djIifV0sWyJjaXJjbGUiLHtjeDoiMTciLGN5OiIxNyIscjoiMyJ9XSxbInBhdGgiLHtkOiJtMjEgMjEtMS45LTEuOSJ9XV19KTt2YXIgWEssSFFlPWcoKCk9PntYSz1bWyJwYXRoIix7ZDoiTTE2LjA1MSAxMi42MTZhMSAxIDAgMCAxIDEuOTA5LjAyNGwuNzM3IDEuNDUyYTEgMSAwIDAgMCAuNzM3LjUzNWwxLjYzNC4yNTZhMSAxIDAgMCAxIC41ODggMS44MDZsLTEuMTcyIDEuMTY4YTEgMSAwIDAgMC0uMjgyLjg2NmwuMjU5IDEuNjEzYTEgMSAwIDAgMS0xLjU0MSAxLjEzNGwtMS40NjUtLjc1YTEgMSAwIDAgMC0uOTEyIDBsLTEuNDY1Ljc1YTEgMSAwIDAgMS0xLjUzOS0xLjEzM2wuMjU4LTEuNjEzYTEgMSAwIDAgMC0uMjgyLS44NjZsLTEuMTU2LTEuMTUzYTEgMSAwIDAgMSAuNTcyLTEuODIybDEuNjMzLS4yNTZhMSAxIDAgMCAwIC43MzctLjUzNXoifV0sWyJwYXRoIix7ZDoiTTggMTVIN2E0IDQgMCAwIDAtNCA0djIifV0sWyJjaXJjbGUiLHtjeDoiMTAiLGN5OiI3IixyOiI0In1dXX0pO3ZhciBRSyxxUWU9ZygoKT0+e1FLPVtbInBhdGgiLHtkOiJNMTYgMjF2LTJhNCA0IDAgMCAwLTQtNEg2YTQgNCAwIDAgMC00IDR2MiJ9XSxbImNpcmNsZSIse2N4OiI5IixjeToiNyIscjoiNCJ9XSxbImxpbmUiLHt4MToiMTciLHgyOiIyMiIseTE6IjgiLHkyOiIxMyJ9XSxbImxpbmUiLHt4MToiMjIiLHgyOiIxNyIseTE6IjgiLHkyOiIxMyJ9XV19KTt2YXIgSkssalFlPWcoKCk9PntKSz1bWyJwYXRoIix7ZDoiTTE5IDIxdi0yYTQgNCAwIDAgMC00LTRIOWE0IDQgMCAwIDAtNCA0djIifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiI3IixyOiI0In1dXX0pO3ZhciB3OCxWUWU9ZygoKT0+e3c4PVtbInBhdGgiLHtkOiJNMTggMjFhOCA4IDAgMCAwLTE2IDAifV0sWyJjaXJjbGUiLHtjeDoiMTAiLGN5OiI4IixyOiI1In1dLFsicGF0aCIse2Q6Ik0yMiAyMGMwLTMuMzctMi02LjUtNC04YTUgNSAwIDAgMC0uNDUtOC4zIn1dXX0pO3ZhciBlWSxVUWU9ZygoKT0+e2VZPVtbInBhdGgiLHtkOiJNMTYgMjF2LTJhNCA0IDAgMCAwLTQtNEg2YTQgNCAwIDAgMC00IDR2MiJ9XSxbInBhdGgiLHtkOiJNMTYgMy4xMjhhNCA0IDAgMCAxIDAgNy43NDQifV0sWyJwYXRoIix7ZDoiTTIyIDIxdi0yYTQgNCAwIDAgMC0zLTMuODcifV0sWyJjaXJjbGUiLHtjeDoiOSIsY3k6IjciLHI6IjQifV1dfSk7dmFyIGs4LFdRZT1nKCgpPT57azg9W1sicGF0aCIse2Q6Im0xNiAyLTIuMyAyLjNhMyAzIDAgMCAwIDAgNC4ybDEuOCAxLjhhMyAzIDAgMCAwIDQuMiAwTDIyIDgifV0sWyJwYXRoIix7ZDoiTTE1IDE1IDMuMyAzLjNhNC4yIDQuMiAwIDAgMCAwIDZsNy4zIDcuM2MuNy43IDIgLjcgMi44IDBMMTUgMTVabTAgMCA3IDcifV0sWyJwYXRoIix7ZDoibTIuMSAyMS44IDYuNC02LjMifV0sWyJwYXRoIix7ZDoibTE5IDUtNyA3In1dXX0pO3ZhciBTOCxHUWU9ZygoKT0+e1M4PVtbInBhdGgiLHtkOiJNMyAydjdjMCAxLjEuOSAyIDIgMmg0YTIgMiAwIDAgMCAyLTJWMiJ9XSxbInBhdGgiLHtkOiJNNyAydjIwIn1dLFsicGF0aCIse2Q6Ik0yMSAxNVYyYTUgNSAwIDAgMC01IDV2NmMwIDEuMS45IDIgMiAyaDNabTAgMHY3In1dXX0pO3ZhciB0WSxLUWU9ZygoKT0+e3RZPVtbInBhdGgiLHtkOiJNMTMgNnY1YTEgMSAwIDAgMCAxIDFoNi4xMDJhMSAxIDAgMCAxIC43MTIuMjk4bC44OTguOTFhMSAxIDAgMCAxIC4yODguNzAyVjE3YTEgMSAwIDAgMS0xIDFoLTMifV0sWyJwYXRoIix7ZDoiTTUgMThIM2ExIDEgMCAwIDEtMS0xVjhhMiAyIDAgMCAxIDItMmgxMmMxLjEgMCAyLjEuOCAyLjQgMS44bDEuMTc2IDQuMiJ9XSxbInBhdGgiLHtkOiJNOSAxOGg1In1dLFsiY2lyY2xlIix7Y3g6IjE2IixjeToiMTgiLHI6IjIifV0sWyJjaXJjbGUiLHtjeDoiNyIsY3k6IjE4IixyOiIyIn1dXX0pO3ZhciBhWSxZUWU9ZygoKT0+e2FZPVtbInBhdGgiLHtkOiJNMTIgMnYyMCJ9XSxbInBhdGgiLHtkOiJNMiA1aDIwIn1dLFsicGF0aCIse2Q6Ik0zIDN2MiJ9XSxbInBhdGgiLHtkOiJNNyAzdjIifV0sWyJwYXRoIix7ZDoiTTE3IDN2MiJ9XSxbInBhdGgiLHtkOiJNMjEgM3YyIn1dLFsicGF0aCIse2Q6Im0xOSA1LTcgNy03LTcifV1dfSk7dmFyIHNZLFpRZT1nKCgpPT57c1k9W1sicGF0aCIse2Q6Ik04IDIxcy00LTMtNC05IDQtOSA0LTkifV0sWyJwYXRoIix7ZDoiTTE2IDNzNCAzIDQgOS00IDktNCA5In1dLFsibGluZSIse3gxOiIxNSIseDI6IjkiLHkxOiI5Iix5MjoiMTUifV0sWyJsaW5lIix7eDE6IjkiLHgyOiIxNSIseTE6IjkiLHkyOiIxNSJ9XV19KTt2YXIgaVksWFFlPWcoKCk9PntpWT1bWyJyZWN0Iix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix4OiIzIix5OiIzIixyeDoiMiJ9XSxbImNpcmNsZSIse2N4OiI3LjUiLGN5OiI3LjUiLHI6Ii41IixmaWxsOiJjdXJyZW50Q29sb3IifV0sWyJwYXRoIix7ZDoibTcuOSA3LjkgMi43IDIuNyJ9XSxbImNpcmNsZSIse2N4OiIxNi41IixjeToiNy41IixyOiIuNSIsZmlsbDoiY3VycmVudENvbG9yIn1dLFsicGF0aCIse2Q6Im0xMy40IDEwLjYgMi43LTIuNyJ9XSxbImNpcmNsZSIse2N4OiI3LjUiLGN5OiIxNi41IixyOiIuNSIsZmlsbDoiY3VycmVudENvbG9yIn1dLFsicGF0aCIse2Q6Im03LjkgMTYuMSAyLjctMi43In1dLFsiY2lyY2xlIix7Y3g6IjE2LjUiLGN5OiIxNi41IixyOiIuNSIsZmlsbDoiY3VycmVudENvbG9yIn1dLFsicGF0aCIse2Q6Im0xMy40IDEzLjQgMi43IDIuNyJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIyIn1dXX0pO3ZhciByWSxRUWU9ZygoKT0+e3JZPVtbInBhdGgiLHtkOiJNMTkuNSA3YTI0IDI0IDAgMCAxIDAgMTAifV0sWyJwYXRoIix7ZDoiTTQuNSA3YTI0IDI0IDAgMCAwIDAgMTAifV0sWyJwYXRoIix7ZDoiTTcgMTkuNWEyNCAyNCAwIDAgMCAxMCAwIn1dLFsicGF0aCIse2Q6Ik03IDQuNWEyNCAyNCAwIDAgMSAxMCAwIn1dLFsicmVjdCIse3g6IjE3Iix5OiIxNyIsd2lkdGg6IjUiLGhlaWdodDoiNSIscng6IjEifV0sWyJyZWN0Iix7eDoiMTciLHk6IjIiLHdpZHRoOiI1IixoZWlnaHQ6IjUiLHJ4OiIxIn1dLFsicmVjdCIse3g6IjIiLHk6IjE3Iix3aWR0aDoiNSIsaGVpZ2h0OiI1IixyeDoiMSJ9XSxbInJlY3QiLHt4OiIyIix5OiIyIix3aWR0aDoiNSIsaGVpZ2h0OiI1IixyeDoiMSJ9XV19KTt2YXIgb1ksSlFlPWcoKCk9PntvWT1bWyJwYXRoIix7ZDoiTTE2IDhxNiAwIDYtNi02IDAtNiA2In1dLFsicGF0aCIse2Q6Ik0xNy40MSAzLjU5YTEwIDEwIDAgMSAwIDMgMyJ9XSxbInBhdGgiLHtkOiJNMiAyYTI2LjYgMjYuNiAwIDAgMSAxMCAyMGMuOS02LjgyIDEuNS05LjUgNC0xNCJ9XV19KTt2YXIgblksZUplPWcoKCk9PntuWT1bWyJwYXRoIix7ZDoiTTE4IDExYy0xLjUgMC0yLjUuNS0zIDIifV0sWyJwYXRoIix7ZDoiTTQgNmEyIDIgMCAwIDAtMiAydjRhNSA1IDAgMCAwIDUgNSA4IDggMCAwIDEgNSAyIDggOCAwIDAgMSA1LTIgNSA1IDAgMCAwIDUtNVY4YTIgMiAwIDAgMC0yLTJoLTNhOCA4IDAgMCAwLTUgMiA4IDggMCAwIDAtNS0yeiJ9XSxbInBhdGgiLHtkOiJNNiAxMWMxLjUgMCAyLjUuNSAzIDIifV1dfSk7dmFyIGxZLHRKZT1nKCgpPT57bFk9W1sicGF0aCIse2Q6Ik0xMCAyMGg0In1dLFsicGF0aCIse2Q6Ik0xMiAxNnY2In1dLFsicGF0aCIse2Q6Ik0xNyAyaDR2NCJ9XSxbInBhdGgiLHtkOiJtMjEgMi01LjQ2IDUuNDYifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMSIscjoiNSJ9XV19KTt2YXIgY1ksYUplPWcoKCk9PntjWT1bWyJwYXRoIix7ZDoiTTEyIDE1djcifV0sWyJwYXRoIix7ZDoiTTkgMTloNiJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjkiLHI6IjYifV1dfSk7dmFyIGRZLHNKZT1nKCgpPT57ZFk9W1sicGF0aCIse2Q6Im0yIDggMiAyLTIgMiAyIDItMiAyIn1dLFsicGF0aCIse2Q6Im0yMiA4LTIgMiAyIDItMiAyIDIgMiJ9XSxbInBhdGgiLHtkOiJNOCA4djEwYzAgLjU1LjQ1IDEgMSAxaDZjLjU1IDAgMS0uNDUgMS0xdi0yIn1dLFsicGF0aCIse2Q6Ik0xNiAxMC4zNFY2YzAtLjU1LS40NS0xLTEtMWgtNC4zNCJ9XSxbImxpbmUiLHt4MToiMiIseDI6IjIyIix5MToiMiIseTI6IjIyIn1dXX0pO3ZhciB1WSxpSmU9ZygoKT0+e3VZPVtbInBhdGgiLHtkOiJtMiA4IDIgMi0yIDIgMiAyLTIgMiJ9XSxbInBhdGgiLHtkOiJtMjIgOC0yIDIgMiAyLTIgMiAyIDIifV0sWyJyZWN0Iix7d2lkdGg6IjgiLGhlaWdodDoiMTQiLHg6IjgiLHk6IjUiLHJ4OiIxIn1dXX0pO3ZhciBwWSxySmU9ZygoKT0+e3BZPVtbInBhdGgiLHtkOiJNMTAuNjYgNkgxNGEyIDIgMCAwIDEgMiAydjIuNWw1LjI0OC0zLjA2MkEuNS41IDAgMCAxIDIyIDcuODd2OC4xOTYifV0sWyJwYXRoIix7ZDoiTTE2IDE2YTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0yVjhhMiAyIDAgMCAxIDItMmgyIn1dLFsicGF0aCIse2Q6Im0yIDIgMjAgMjAifV1dfSk7dmFyIGhZLG9KZT1nKCgpPT57aFk9W1sicGF0aCIse2Q6Im0xNiAxMyA1LjIyMyAzLjQ4MmEuNS41IDAgMCAwIC43NzctLjQxNlY3Ljg3YS41LjUgMCAwIDAtLjc1Mi0uNDMyTDE2IDEwLjUifV0sWyJyZWN0Iix7eDoiMiIseToiNiIsd2lkdGg6IjE0IixoZWlnaHQ6IjEyIixyeDoiMiJ9XV19KTt2YXIgZlksbkplPWcoKCk9PntmWT1bWyJyZWN0Iix7d2lkdGg6IjIwIixoZWlnaHQ6IjE2Iix4OiIyIix5OiI0IixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNMiA4aDIwIn1dLFsiY2lyY2xlIix7Y3g6IjgiLGN5OiIxNCIscjoiMiJ9XSxbInBhdGgiLHtkOiJNOCAxMmg4In1dLFsiY2lyY2xlIix7Y3g6IjE2IixjeToiMTQiLHI6IjIifV1dfSk7dmFyIG1ZLGxKZT1nKCgpPT57bVk9W1sicGF0aCIse2Q6Ik0yMSAxN3YyYTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0ydi0yIn1dLFsicGF0aCIse2Q6Ik0yMSA3VjVhMiAyIDAgMCAwLTItMkg1YTIgMiAwIDAgMC0yIDJ2MiJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxIn1dLFsicGF0aCIse2Q6Ik0xOC45NDQgMTIuMzNhMSAxIDAgMCAwIDAtLjY2IDcuNSA3LjUgMCAwIDAtMTMuODg4IDAgMSAxIDAgMCAwIDAgLjY2IDcuNSA3LjUgMCAwIDAgMTMuODg4IDAifV1dfSk7dmFyIGdZLGNKZT1nKCgpPT57Z1k9W1sicGF0aCIse2Q6Ik0xMS4xIDcuMWExNi41NSAxNi41NSAwIDAgMSAxMC45IDQifV0sWyJwYXRoIix7ZDoiTTEyIDEyYTEyLjYgMTIuNiAwIDAgMS04LjcgNSJ9XSxbInBhdGgiLHtkOiJNMTYuOCAxMy42YTE2LjU1IDE2LjU1IDAgMCAxLTkgNy41In1dLFsicGF0aCIse2Q6Ik0yMC43IDE3YTEyLjggMTIuOCAwIDAgMC04LjctNSAxMy4zIDEzLjMgMCAwIDEgMC0xMCJ9XSxbInBhdGgiLHtkOiJNNi4zIDMuOGExNi41NSAxNi41NSAwIDAgMCAxLjkgMTEuNSJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9XV19KTt2YXIgYlksZEplPWcoKCk9PntiWT1bWyJjaXJjbGUiLHtjeDoiNiIsY3k6IjEyIixyOiI0In1dLFsiY2lyY2xlIix7Y3g6IjE4IixjeToiMTIiLHI6IjQifV0sWyJsaW5lIix7eDE6IjYiLHgyOiIxOCIseTE6IjE2Iix5MjoiMTYifV1dfSk7dmFyIHZZLHVKZT1nKCgpPT57dlk9W1sicGF0aCIse2Q6Ik0xMSA0LjcwMmEuNzA1LjcwNSAwIDAgMC0xLjIwMy0uNDk4TDYuNDEzIDcuNTg3QTEuNCAxLjQgMCAwIDEgNS40MTYgOEgzYTEgMSAwIDAgMC0xIDF2NmExIDEgMCAwIDAgMSAxaDIuNDE2YTEuNCAxLjQgMCAwIDEgLjk5Ny40MTNsMy4zODMgMy4zODRBLjcwNS43MDUgMCAwIDAgMTEgMTkuMjk4eiJ9XSxbInBhdGgiLHtkOiJNMTYgOWE1IDUgMCAwIDEgMCA2In1dXX0pO3ZhciB4WSxwSmU9ZygoKT0+e3hZPVtbInBhdGgiLHtkOiJNMTEgNC43MDJhLjcwNS43MDUgMCAwIDAtMS4yMDMtLjQ5OEw2LjQxMyA3LjU4N0ExLjQgMS40IDAgMCAxIDUuNDE2IDhIM2ExIDEgMCAwIDAtMSAxdjZhMSAxIDAgMCAwIDEgMWgyLjQxNmExLjQgMS40IDAgMCAxIC45OTcuNDEzbDMuMzgzIDMuMzg0QS43MDUuNzA1IDAgMCAwIDExIDE5LjI5OHoifV0sWyJwYXRoIix7ZDoiTTE2IDlhNSA1IDAgMCAxIDAgNiJ9XSxbInBhdGgiLHtkOiJNMTkuMzY0IDE4LjM2NGE5IDkgMCAwIDAgMC0xMi43MjgifV1dfSk7dmFyIHlZLGhKZT1nKCgpPT57eVk9W1sicGF0aCIse2Q6Ik0xNiA5YTUgNSAwIDAgMSAuOTUgMi4yOTMifV0sWyJwYXRoIix7ZDoiTTE5LjM2NCA1LjYzNmE5IDkgMCAwIDEgMS44ODkgOS45NiJ9XSxbInBhdGgiLHtkOiJtMiAyIDIwIDIwIn1dLFsicGF0aCIse2Q6Im03IDctLjU4Ny41ODdBMS40IDEuNCAwIDAgMSA1LjQxNiA4SDNhMSAxIDAgMCAwLTEgMXY2YTEgMSAwIDAgMCAxIDFoMi40MTZhMS40IDEuNCAwIDAgMSAuOTk3LjQxM2wzLjM4MyAzLjM4NEEuNzA1LjcwNSAwIDAgMCAxMSAxOS4yOThWMTEifV0sWyJwYXRoIix7ZDoiTTkuODI4IDQuMTcyQS42ODYuNjg2IDAgMCAxIDExIDQuNjU3di42ODYifV1dfSk7dmFyIHdZLGZKZT1nKCgpPT57d1k9W1sicGF0aCIse2Q6Ik0xMSA0LjcwMmEuNzA1LjcwNSAwIDAgMC0xLjIwMy0uNDk4TDYuNDEzIDcuNTg3QTEuNCAxLjQgMCAwIDEgNS40MTYgOEgzYTEgMSAwIDAgMC0xIDF2NmExIDEgMCAwIDAgMSAxaDIuNDE2YTEuNCAxLjQgMCAwIDEgLjk5Ny40MTNsMy4zODMgMy4zODRBLjcwNS43MDUgMCAwIDAgMTEgMTkuMjk4eiJ9XSxbImxpbmUiLHt4MToiMjIiLHgyOiIxNiIseTE6IjkiLHkyOiIxNSJ9XSxbImxpbmUiLHt4MToiMTYiLHgyOiIyMiIseTE6IjkiLHkyOiIxNSJ9XV19KTt2YXIga1ksbUplPWcoKCk9PntrWT1bWyJwYXRoIix7ZDoiTTExIDQuNzAyYS43MDUuNzA1IDAgMCAwLTEuMjAzLS40OThMNi40MTMgNy41ODdBMS40IDEuNCAwIDAgMSA1LjQxNiA4SDNhMSAxIDAgMCAwLTEgMXY2YTEgMSAwIDAgMCAxIDFoMi40MTZhMS40IDEuNCAwIDAgMSAuOTk3LjQxM2wzLjM4MyAzLjM4NEEuNzA1LjcwNSAwIDAgMCAxMSAxOS4yOTh6In1dXX0pO3ZhciBTWSxnSmU9ZygoKT0+e1NZPVtbInBhdGgiLHtkOiJtOSAxMiAyIDIgNC00In1dLFsicGF0aCIse2Q6Ik01IDdjMC0xLjEuOS0yIDItMmgxMGEyIDIgMCAwIDEgMiAydjEySDVWN1oifV0sWyJwYXRoIix7ZDoiTTIyIDE5SDIifV1dfSk7dmFyIF9ZLGJKZT1nKCgpPT57X1k9W1sicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIseDoiMyIseToiMyIscng6IjIifV0sWyJwYXRoIix7ZDoiTTMgOWEyIDIgMCAwIDEgMi0yaDE0YTIgMiAwIDAgMSAyIDIifV0sWyJwYXRoIix7ZDoiTTMgMTFoM2MuOCAwIDEuNi4zIDIuMS45bDEuMS45YzEuNiAxLjYgNC4xIDEuNiA1LjcgMGwxLjEtLjljLjUtLjUgMS4zLS45IDIuMS0uOUgyMSJ9XV19KTt2YXIgXzgsdkplPWcoKCk9PntfOD1bWyJwYXRoIix7ZDoiTTE3IDE0aC4wMSJ9XSxbInBhdGgiLHtkOiJNNyA3aDEyYTIgMiAwIDAgMSAyIDJ2MTBhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDE0In1dXX0pO3ZhciBNWSx4SmU9ZygoKT0+e01ZPVtbInBhdGgiLHtkOiJNMTkgN1Y0YTEgMSAwIDAgMC0xLTFINWEyIDIgMCAwIDAgMCA0aDE1YTEgMSAwIDAgMSAxIDF2NGgtM2EyIDIgMCAwIDAgMCA0aDNhMSAxIDAgMCAwIDEtMXYtMmExIDEgMCAwIDAtMS0xIn1dLFsicGF0aCIse2Q6Ik0zIDV2MTRhMiAyIDAgMCAwIDIgMmgxNWExIDEgMCAwIDAgMS0xdi00In1dXX0pO3ZhciB6WSx5SmU9ZygoKT0+e3pZPVtbInBhdGgiLHtkOiJNMTIgMTd2NCJ9XSxbInBhdGgiLHtkOiJNOCAyMWg4In1dLFsicGF0aCIse2Q6Im05IDE3IDYuMS02LjFhMiAyIDAgMCAxIDIuODEuMDFMMjIgMTUifV0sWyJjaXJjbGUiLHtjeDoiOCIsY3k6IjkiLHI6IjIifV0sWyJyZWN0Iix7eDoiMiIseToiMyIsd2lkdGg6IjIwIixoZWlnaHQ6IjE0IixyeDoiMiJ9XV19KTt2YXIgTTgsd0plPWcoKCk9PntNOD1bWyJwYXRoIix7ZDoibTIxLjY0IDMuNjQtMS4yOC0xLjI4YTEuMjEgMS4yMSAwIDAgMC0xLjcyIDBMMi4zNiAxOC42NGExLjIxIDEuMjEgMCAwIDAgMCAxLjcybDEuMjggMS4yOGExLjIgMS4yIDAgMCAwIDEuNzIgMEwyMS42NCA1LjM2YTEuMiAxLjIgMCAwIDAgMC0xLjcyIn1dLFsicGF0aCIse2Q6Im0xNCA3IDMgMyJ9XSxbInBhdGgiLHtkOiJNNSA2djQifV0sWyJwYXRoIix7ZDoiTTE5IDE0djQifV0sWyJwYXRoIix7ZDoiTTEwIDJ2MiJ9XSxbInBhdGgiLHtkOiJNNyA4SDMifV0sWyJwYXRoIix7ZDoiTTIxIDE2aC00In1dLFsicGF0aCIse2Q6Ik0xMSAzSDkifV1dfSk7dmFyIENZLGtKZT1nKCgpPT57Q1k9W1sicGF0aCIse2Q6Ik0xNSA0VjIifV0sWyJwYXRoIix7ZDoiTTE1IDE2di0yIn1dLFsicGF0aCIse2Q6Ik04IDloMiJ9XSxbInBhdGgiLHtkOiJNMjAgOWgyIn1dLFsicGF0aCIse2Q6Ik0xNy44IDExLjggMTkgMTMifV0sWyJwYXRoIix7ZDoiTTE1IDloLjAxIn1dLFsicGF0aCIse2Q6Ik0xNy44IDYuMiAxOSA1In1dLFsicGF0aCIse2Q6Im0zIDIxIDktOSJ9XSxbInBhdGgiLHtkOiJNMTIuMiA2LjIgMTEgNSJ9XV19KTt2YXIgVFksU0plPWcoKCk9PntUWT1bWyJwYXRoIix7ZDoiTTE4IDIxVjEwYTEgMSAwIDAgMC0xLTFIN2ExIDEgMCAwIDAtMSAxdjExIn1dLFsicGF0aCIse2Q6Ik0yMiAxOWEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMlY4YTIgMiAwIDAgMSAxLjEzMi0xLjgwM2w3Ljk1LTMuOTc0YTIgMiAwIDAgMSAxLjgzNyAwbDcuOTQ4IDMuOTc0QTIgMiAwIDAgMSAyMiA4eiJ9XSxbInBhdGgiLHtkOiJNNiAxM2gxMiJ9XSxbInBhdGgiLHtkOiJNNiAxN2gxMiJ9XV19KTt2YXIgJFksX0plPWcoKCk9PnskWT1bWyJwYXRoIix7ZDoiTTEyIDEwdjIuMmwxLjYgMSJ9XSxbInBhdGgiLHtkOiJtMTYuMTMgNy42Ni0uODEtNC4wNWEyIDIgMCAwIDAtMi0xLjYxaC0yLjY4YTIgMiAwIDAgMC0yIDEuNjFsLS43OCA0LjA1In1dLFsicGF0aCIse2Q6Im03Ljg4IDE2LjM2LjggNGEyIDIgMCAwIDAgMiAxLjYxaDIuNzJhMiAyIDAgMCAwIDItMS42MWwuODEtNC4wNSJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiI2In1dXX0pO3ZhciBEWSxNSmU9ZygoKT0+e0RZPVtbInBhdGgiLHtkOiJNMyA2aDMifV0sWyJwYXRoIix7ZDoiTTE3IDZoLjAxIn1dLFsicmVjdCIse3dpZHRoOiIxOCIsaGVpZ2h0OiIyMCIseDoiMyIseToiMiIscng6IjIifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMyIscjoiNSJ9XSxbInBhdGgiLHtkOiJNMTIgMThhMi41IDIuNSAwIDAgMCAwLTUgMi41IDIuNSAwIDAgMSAwLTUifV1dfSk7dmFyIExZLHpKZT1nKCgpPT57TFk9W1sicGF0aCIse2Q6Ik0xMiAxMEwxMiAyIn1dLFsicGF0aCIse2Q6Ik0xNiA2TDEyIDEwTDggNiJ9XSxbInBhdGgiLHtkOiJNMiAxNUMyLjYgMTUuNSAzLjIgMTYgNC41IDE2QzcgMTYgNyAxNCA5LjUgMTRDMTIuMSAxNCAxMS45IDE2IDE0LjUgMTZDMTcgMTYgMTcgMTQgMTkuNSAxNEMyMC44IDE0IDIxLjQgMTQuNSAyMiAxNSJ9XSxbInBhdGgiLHtkOiJNMiAyMUMyLjYgMjEuNSAzLjIgMjIgNC41IDIyQzcgMjIgNyAyMCA5LjUgMjBDMTIuMSAyMCAxMS45IDIyIDE0LjUgMjJDMTcgMjIgMTcgMjAgMTkuNSAyMEMyMC44IDIwIDIxLjQgMjAuNSAyMiAyMSJ9XV19KTt2YXIgRVksQ0plPWcoKCk9PntFWT1bWyJwYXRoIix7ZDoiTTEyIDJ2OCJ9XSxbInBhdGgiLHtkOiJNMiAxNWMuNi41IDEuMiAxIDIuNSAxIDIuNSAwIDIuNS0yIDUtMiAyLjYgMCAyLjQgMiA1IDIgMi41IDAgMi41LTIgNS0yIDEuMyAwIDEuOS41IDIuNSAxIn1dLFsicGF0aCIse2Q6Ik0yIDIxYy42LjUgMS4yIDEgMi41IDEgMi41IDAgMi41LTIgNS0yIDIuNiAwIDIuNCAyIDUgMiAyLjUgMCAyLjUtMiA1LTIgMS4zIDAgMS45LjUgMi41IDEifV0sWyJwYXRoIix7ZDoibTggNiA0LTQgNCA0In1dXX0pO3ZhciB6OCxUSmU9ZygoKT0+e3o4PVtbInBhdGgiLHtkOiJNMiAxMnEyLjUgMiA1IDB0NSAwIDUgMCA1IDAifV0sWyJwYXRoIix7ZDoiTTIgMTlxMi41IDIgNSAwdDUgMCA1IDAgNSAwIn1dLFsicGF0aCIse2Q6Ik0yIDVxMi41IDIgNSAwdDUgMCA1IDAgNSAwIn1dXX0pO3ZhciBQWSwkSmU9ZygoKT0+e1BZPVtbInBhdGgiLHtkOiJNMTkgNWEyIDIgMCAwIDAtMiAydjExIn1dLFsicGF0aCIse2Q6Ik0yIDE4Yy42LjUgMS4yIDEgMi41IDEgMi41IDAgMi41LTIgNS0yIDIuNiAwIDIuNCAyIDUgMiAyLjUgMCAyLjUtMiA1LTIgMS4zIDAgMS45LjUgMi41IDEifV0sWyJwYXRoIix7ZDoiTTcgMTNoMTAifV0sWyJwYXRoIix7ZDoiTTcgOWgxMCJ9XSxbInBhdGgiLHtkOiJNOSA1YTIgMiAwIDAgMC0yIDJ2MTEifV1dfSk7dmFyIElZLERKZT1nKCgpPT57SVk9W1sicGF0aCIse2Q6Ik0xMiAycTIgMi41IDAgNXQwIDUgMCA1IDAgNSJ9XSxbInBhdGgiLHtkOiJNMTkgMnEyIDIuNSAwIDV0MCA1IDAgNSAwIDUifV0sWyJwYXRoIix7ZDoiTTUgMnEyIDIuNSAwIDV0MCA1IDAgNSAwIDUifV1dfSk7dmFyIEFZLExKZT1nKCgpPT57QVk9W1sicGF0aCIse2Q6Im0xMC41ODYgNS40MTQtNS4xNzIgNS4xNzIifV0sWyJwYXRoIix7ZDoibTE4LjU4NiAxMy40MTQtNS4xNzIgNS4xNzIifV0sWyJwYXRoIix7ZDoiTTYgMTJoMTIifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIyMCIscjoiMiJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjQiLHI6IjIifV0sWyJjaXJjbGUiLHtjeDoiMjAiLGN5OiIxMiIscjoiMiJ9XSxbImNpcmNsZSIse2N4OiI0IixjeToiMTIiLHI6IjIifV1dfSk7dmFyIE5ZLEVKZT1nKCgpPT57Tlk9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTAiLHI6IjgifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMCIscjoiMyJ9XSxbInBhdGgiLHtkOiJNNyAyMmgxMCJ9XSxbInBhdGgiLHtkOiJNMTIgMjJ2LTQifV1dfSk7dmFyIFJZLFBKZT1nKCgpPT57Ulk9W1sicGF0aCIse2Q6Ik0xNyAxN2gtNWMtMS4wOS0uMDItMS45NC45Mi0yLjUgMS45QTMgMyAwIDEgMSAyLjU3IDE1In1dLFsicGF0aCIse2Q6Ik05IDMuNGE0IDQgMCAwIDEgNi41Mi42NiJ9XSxbInBhdGgiLHtkOiJtNiAxNyAzLjEtNS44YTIuNSAyLjUgMCAwIDAgLjA1Ny0yLjA1In1dLFsicGF0aCIse2Q6Ik0yMC4zIDIwLjNhNCA0IDAgMCAxLTIuMy43In1dLFsicGF0aCIse2Q6Ik0xOC42IDEzYTQgNCAwIDAgMSAzLjM1NyAzLjQxNCJ9XSxbInBhdGgiLHtkOiJtMTIgNiAuNiAxIn1dLFsicGF0aCIse2Q6Im0yIDIgMjAgMjAifV1dfSk7dmFyIE9ZLElKZT1nKCgpPT57T1k9W1sicGF0aCIse2Q6Ik0xOCAxNi45OGgtNS45OWMtMS4xIDAtMS45NS45NC0yLjQ4IDEuOUE0IDQgMCAwIDEgMiAxN2MuMDEtLjcuMi0xLjQuNTctMiJ9XSxbInBhdGgiLHtkOiJtNiAxNyAzLjEzLTUuNzhjLjUzLS45Ny4xLTIuMTgtLjUtMy4xYTQgNCAwIDEgMSA2Ljg5LTQuMDYifV0sWyJwYXRoIix7ZDoibTEyIDYgMy4xMyA1LjczQzE1LjY2IDEyLjcgMTYuOSAxMyAxOCAxM2E0IDQgMCAwIDEgMCA4In1dXX0pO3ZhciBGWSxBSmU9ZygoKT0+e0ZZPVtbInBhdGgiLHtkOiJNNi41IDhhMiAyIDAgMCAwLTEuOTA2IDEuNDZMMi4xIDE4LjVBMiAyIDAgMCAwIDQgMjFoMTZhMiAyIDAgMCAwIDEuOTI1LTIuNTRMMTkuNCA5LjVBMiAyIDAgMCAwIDE3LjQ4IDh6In1dLFsicGF0aCIse2Q6Ik03Ljk5OSAxNWEyLjUgMi41IDAgMCAxIDQgMCAyLjUgMi41IDAgMCAwIDQgMCJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjUiLHI6IjMifV1dfSk7dmFyIEJZLE5KZT1nKCgpPT57Qlk9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiNSIscjoiMyJ9XSxbInBhdGgiLHtkOiJNNi41IDhhMiAyIDAgMCAwLTEuOTA1IDEuNDZMMi4xIDE4LjVBMiAyIDAgMCAwIDQgMjFoMTZhMiAyIDAgMCAwIDEuOTI1LTIuNTRMMTkuNCA5LjVBMiAyIDAgMCAwIDE3LjQ4IDhaIn1dXX0pO3ZhciBIWSxSSmU9ZygoKT0+e0hZPVtbInBhdGgiLHtkOiJtMiAyMiAxMC0xMCJ9XSxbInBhdGgiLHtkOiJtMTYgOC0xLjE3IDEuMTcifV0sWyJwYXRoIix7ZDoiTTMuNDcgMTIuNTMgNSAxMWwxLjUzIDEuNTNhMy41IDMuNSAwIDAgMSAwIDQuOTRMNSAxOWwtMS41My0xLjUzYTMuNSAzLjUgMCAwIDEgMC00Ljk0WiJ9XSxbInBhdGgiLHtkOiJtOCA4LS41My41M2EzLjUgMy41IDAgMCAwIDAgNC45NEw5IDE1bDEuNTMtMS41M2MuNTUtLjU1Ljg4LTEuMjUuOTgtMS45NyJ9XSxbInBhdGgiLHtkOiJNMTAuOTEgNS4yNmMuMTUtLjI2LjM0LS41MS41Ni0uNzNMMTMgM2wxLjUzIDEuNTNhMy41IDMuNSAwIDAgMSAuMjggNC42MiJ9XSxbInBhdGgiLHtkOiJNMjAgMmgydjJhNCA0IDAgMCAxLTQgNGgtMlY2YTQgNCAwIDAgMSA0LTRaIn1dLFsicGF0aCIse2Q6Ik0xMS40NyAxNy40NyAxMyAxOWwtMS41MyAxLjUzYTMuNSAzLjUgMCAwIDEtNC45NCAwTDUgMTlsMS41My0xLjUzYTMuNSAzLjUgMCAwIDEgNC45NCAwWiJ9XSxbInBhdGgiLHtkOiJtMTYgMTYtLjUzLjUzYTMuNSAzLjUgMCAwIDEtNC45NCAwTDkgMTVsMS41My0xLjUzYTMuNDkgMy40OSAwIDAgMSAxLjk3LS45OCJ9XSxbInBhdGgiLHtkOiJNMTguNzQgMTMuMDljLjI2LS4xNS41MS0uMzQuNzMtLjU2TDIxIDExbC0xLjUzLTEuNTNhMy41IDMuNSAwIDAgMC00LjYyLS4yOCJ9XSxbImxpbmUiLHt4MToiMiIseDI6IjIyIix5MToiMiIseTI6IjIyIn1dXX0pO3ZhciBxWSxPSmU9ZygoKT0+e3FZPVtbInBhdGgiLHtkOiJNMiAyMiAxNiA4In1dLFsicGF0aCIse2Q6Ik0zLjQ3IDEyLjUzIDUgMTFsMS41MyAxLjUzYTMuNSAzLjUgMCAwIDEgMCA0Ljk0TDUgMTlsLTEuNTMtMS41M2EzLjUgMy41IDAgMCAxIDAtNC45NFoifV0sWyJwYXRoIix7ZDoiTTcuNDcgOC41MyA5IDdsMS41MyAxLjUzYTMuNSAzLjUgMCAwIDEgMCA0Ljk0TDkgMTVsLTEuNTMtMS41M2EzLjUgMy41IDAgMCAxIDAtNC45NFoifV0sWyJwYXRoIix7ZDoiTTExLjQ3IDQuNTMgMTMgM2wxLjUzIDEuNTNhMy41IDMuNSAwIDAgMSAwIDQuOTRMMTMgMTFsLTEuNTMtMS41M2EzLjUgMy41IDAgMCAxIDAtNC45NFoifV0sWyJwYXRoIix7ZDoiTTIwIDJoMnYyYTQgNCAwIDAgMS00IDRoLTJWNmE0IDQgMCAwIDEgNC00WiJ9XSxbInBhdGgiLHtkOiJNMTEuNDcgMTcuNDcgMTMgMTlsLTEuNTMgMS41M2EzLjUgMy41IDAgMCAxLTQuOTQgMEw1IDE5bDEuNTMtMS41M2EzLjUgMy41IDAgMCAxIDQuOTQgMFoifV0sWyJwYXRoIix7ZDoiTTE1LjQ3IDEzLjQ3IDE3IDE1bC0xLjUzIDEuNTNhMy41IDMuNSAwIDAgMS00Ljk0IDBMOSAxNWwxLjUzLTEuNTNhMy41IDMuNSAwIDAgMSA0Ljk0IDBaIn1dLFsicGF0aCIse2Q6Ik0xOS40NyA5LjQ3IDIxIDExbC0xLjUzIDEuNTNhMy41IDMuNSAwIDAgMS00Ljk0IDBMMTMgMTFsMS41My0xLjUzYTMuNSAzLjUgMCAwIDEgNC45NCAwWiJ9XV19KTt2YXIgalksRkplPWcoKCk9PntqWT1bWyJjaXJjbGUiLHtjeDoiNyIsY3k6IjEyIixyOiIzIn1dLFsicGF0aCIse2Q6Ik0xMCA5djYifV0sWyJjaXJjbGUiLHtjeDoiMTciLGN5OiIxMiIscjoiMyJ9XSxbInBhdGgiLHtkOiJNMTQgN3Y4In1dLFsicGF0aCIse2Q6Ik0yMiAxN3YxYzAgLjUtLjUgMS0xIDFIM2MtLjUgMC0xLS41LTEtMXYtMSJ9XV19KTt2YXIgVlksQkplPWcoKCk9PntWWT1bWyJwYXRoIix7ZDoibTE0LjMwNSAxOS41My45MjMtLjM4MiJ9XSxbInBhdGgiLHtkOiJtMTUuMjI4IDE2Ljg1Mi0uOTIzLS4zODMifV0sWyJwYXRoIix7ZDoibTE2Ljg1MiAxNS4yMjgtLjM4My0uOTIzIn1dLFsicGF0aCIse2Q6Im0xNi44NTIgMjAuNzcyLS4zODMuOTI0In1dLFsicGF0aCIse2Q6Im0xOS4xNDggMTUuMjI4LjM4My0uOTIzIn1dLFsicGF0aCIse2Q6Im0xOS41MyAyMS42OTYtLjM4Mi0uOTI0In1dLFsicGF0aCIse2Q6Ik0yIDcuODJhMTUgMTUgMCAwIDEgMjAgMCJ9XSxbInBhdGgiLHtkOiJtMjAuNzcyIDE2Ljg1Mi45MjQtLjM4MyJ9XSxbInBhdGgiLHtkOiJtMjAuNzcyIDE5LjE0OC45MjQuMzgzIn1dLFsicGF0aCIse2Q6Ik01IDExLjg1OGExMCAxMCAwIDAgMSAxMS41LTEuNzg1In1dLFsicGF0aCIse2Q6Ik04LjUgMTUuNDI5YTUgNSAwIDAgMSAyLjQxMy0xLjMxIn1dLFsiY2lyY2xlIix7Y3g6IjE4IixjeToiMTgiLHI6IjMifV1dfSk7dmFyIFVZLEhKZT1nKCgpPT57VVk9W1sicGF0aCIse2Q6Ik0xMiAyMGguMDEifV0sWyJwYXRoIix7ZDoiTTUgMTIuODU5YTEwIDEwIDAgMCAxIDE0IDAifV0sWyJwYXRoIix7ZDoiTTguNSAxNi40MjlhNSA1IDAgMCAxIDcgMCJ9XV19KTt2YXIgV1kscUplPWcoKCk9PntXWT1bWyJwYXRoIix7ZDoiTTEyIDIwaC4wMSJ9XSxbInBhdGgiLHtkOiJNOC41IDE2LjQyOWE1IDUgMCAwIDEgNyAwIn1dXX0pO3ZhciBHWSxqSmU9ZygoKT0+e0dZPVtbInBhdGgiLHtkOiJNMTIgMjBoLjAxIn1dLFsicGF0aCIse2Q6Ik04LjUgMTYuNDI5YTUgNSAwIDAgMSA3IDAifV0sWyJwYXRoIix7ZDoiTTUgMTIuODU5YTEwIDEwIDAgMCAxIDUuMTctMi42OSJ9XSxbInBhdGgiLHtkOiJNMTkgMTIuODU5YTEwIDEwIDAgMCAwLTIuMDA3LTEuNTIzIn1dLFsicGF0aCIse2Q6Ik0yIDguODJhMTUgMTUgMCAwIDEgNC4xNzctMi42NDMifV0sWyJwYXRoIix7ZDoiTTIyIDguODJhMTUgMTUgMCAwIDAtMTEuMjg4LTMuNzY0In1dLFsicGF0aCIse2Q6Im0yIDIgMjAgMjAifV1dfSk7dmFyIEtZLFZKZT1nKCgpPT57S1k9W1sicGF0aCIse2Q6Ik0yIDguODJhMTUgMTUgMCAwIDEgMjAgMCJ9XSxbInBhdGgiLHtkOiJNMjEuMzc4IDE2LjYyNmExIDEgMCAwIDAtMy4wMDQtMy4wMDRsLTQuMDEgNC4wMTJhMiAyIDAgMCAwLS41MDYuODU0bC0uODM3IDIuODdhLjUuNSAwIDAgMCAuNjIuNjJsMi44Ny0uODM3YTIgMiAwIDAgMCAuODU0LS41MDZ6In1dLFsicGF0aCIse2Q6Ik01IDEyLjg1OWExMCAxMCAwIDAgMSAxMC41LTIuMjIyIn1dLFsicGF0aCIse2Q6Ik04LjUgMTYuNDI5YTUgNSAwIDAgMSAzLTEuNDA2In1dXX0pO3ZhciBZWSxVSmU9ZygoKT0+e1lZPVtbInBhdGgiLHtkOiJNMTEuOTY1IDEwLjEwNXY0TDEzLjUgMTIuNWE1IDUgMCAwIDEgOCAxLjUifV0sWyJwYXRoIix7ZDoiTTExLjk2NSAxNC4xMDVoNCJ9XSxbInBhdGgiLHtkOiJNMTcuOTY1IDE4LjEwNWg0TDIwLjQzIDE5LjcxYTUgNSAwIDAgMS04LTEuNSJ9XSxbInBhdGgiLHtkOiJNMiA4LjgyYTE1IDE1IDAgMCAxIDIwIDAifV0sWyJwYXRoIix7ZDoiTTIxLjk2NSAyMi4xMDV2LTQifV0sWyJwYXRoIix7ZDoiTTUgMTIuODZhMTAgMTAgMCAwIDEgMy0yLjAzMiJ9XSxbInBhdGgiLHtkOiJNOC41IDE2LjQyOWguMDEifV1dfSk7dmFyIFpZLFdKZT1nKCgpPT57Wlk9W1sicGF0aCIse2Q6Ik0xMiAyMGguMDEifV1dfSk7dmFyIFhZLEdKZT1nKCgpPT57WFk9W1sicGF0aCIse2Q6Ik0xMCAydjgifV0sWyJwYXRoIix7ZDoiTTEyLjggMjEuNkEyIDIgMCAxIDAgMTQgMThIMiJ9XSxbInBhdGgiLHtkOiJNMTcuNSAxMGEyLjUgMi41IDAgMSAxIDIgNEgyIn1dLFsicGF0aCIse2Q6Im02IDYgNCA0IDQtNCJ9XV19KTt2YXIgUVksS0plPWcoKCk9PntRWT1bWyJwYXRoIix7ZDoiTTEyIDIwaC4wMSJ9XSxbInBhdGgiLHtkOiJNMiA4LjgyYTE1IDE1IDAgMCAxIDIwIDAifV0sWyJwYXRoIix7ZDoiTTUgMTIuODU5YTEwIDEwIDAgMCAxIDE0IDAifV0sWyJwYXRoIix7ZDoiTTguNSAxNi40MjlhNSA1IDAgMCAxIDcgMCJ9XV19KTt2YXIgSlksWUplPWcoKCk9PntKWT1bWyJwYXRoIix7ZDoiTTEyLjggMTkuNkEyIDIgMCAxIDAgMTQgMTZIMiJ9XSxbInBhdGgiLHtkOiJNMTcuNSA4YTIuNSAyLjUgMCAxIDEgMiA0SDIifV0sWyJwYXRoIix7ZDoiTTkuOCA0LjRBMiAyIDAgMSAxIDExIDhIMiJ9XV19KTt2YXIgZVosWkplPWcoKCk9PntlWj1bWyJwYXRoIix7ZDoiTTggMjJoOCJ9XSxbInBhdGgiLHtkOiJNNyAxMGgzbTcgMGgtMS4zNDMifV0sWyJwYXRoIix7ZDoiTTEyIDE1djcifV0sWyJwYXRoIix7ZDoiTTcuMzA3IDcuMzA3QTEyLjMzIDEyLjMzIDAgMCAwIDcgMTBhNSA1IDAgMCAwIDcuMzkxIDQuMzkxTTguNjM4IDIuOTgxQzguNzUgMi42NjggOC44NzIgMi4zNCA5IDJoNmMxLjUgNCAyIDYgMiA4IDAgLjQwNy0uMDUuODA5LS4xNDUgMS4xOTgifV0sWyJsaW5lIix7eDE6IjIiLHgyOiIyMiIseTE6IjIiLHkyOiIyMiJ9XV19KTt2YXIgdFosWEplPWcoKCk9Pnt0Wj1bWyJwYXRoIix7ZDoibTE5IDEyLTEuNSAzIn1dLFsicGF0aCIse2Q6Ik0xOS42MyAxOC44MSAyMiAyMCJ9XSxbInBhdGgiLHtkOiJNNi40NyA4LjIzYTEuNjggMS42OCAwIDAgMSAyLjQ0IDEuOTNsLS42NCAyLjA4YTYuNzYgNi43NiAwIDAgMCAxMC4xNiA3LjY3bC40Mi0uMjdhMSAxIDAgMSAwLTIuNzMtNC4yMWwtLjQyLjI3YTEuNzYgMS43NiAwIDAgMS0yLjYzLTEuOTlsLjY0LTIuMDhBNi42NiA2LjY2IDAgMCAwIDMuOTQgMy45bC0uNy40YTEgMSAwIDEgMCAyLjU1IDQuMzR6In1dXX0pO3ZhciBhWixRSmU9ZygoKT0+e2FaPVtbInJlY3QiLHt3aWR0aDoiOCIsaGVpZ2h0OiI4Iix4OiIzIix5OiIzIixyeDoiMiJ9XSxbInBhdGgiLHtkOiJNNyAxMXY0YTIgMiAwIDAgMCAyIDJoNCJ9XSxbInJlY3QiLHt3aWR0aDoiOCIsaGVpZ2h0OiI4Iix4OiIxMyIseToiMTMiLHJ4OiIyIn1dXX0pO3ZhciBzWixKSmU9ZygoKT0+e3NaPVtbInBhdGgiLHtkOiJNOCAyMmg4In1dLFsicGF0aCIse2Q6Ik03IDEwaDEwIn1dLFsicGF0aCIse2Q6Ik0xMiAxNXY3In1dLFsicGF0aCIse2Q6Ik0xMiAxNWE1IDUgMCAwIDAgNS01YzAtMi0uNS00LTItOEg5Yy0xLjUgNC0yIDYtMiA4YTUgNSAwIDAgMCA1IDVaIn1dXX0pO3ZhciBpWixlZXQ9ZygoKT0+e2laPVtbInBhdGgiLHtkOiJNMTQuNyA2LjNhMSAxIDAgMCAwIDAgMS40bDEuNiAxLjZhMSAxIDAgMCAwIDEuNCAwbDMuMTA2LTMuMTA1Yy4zMi0uMzIyLjg2My0uMjIuOTgzLjIxOGE2IDYgMCAwIDEtOC4yNTkgNy4wNTdsLTcuOTEgNy45MWExIDEgMCAwIDEtMi45OTktM2w3LjkxLTcuOTFhNiA2IDAgMCAxIDcuMDU3LTguMjU5Yy40MzguMTIuNTQuNjYyLjIxOS45ODR6In1dXX0pO3ZhciByWix0ZXQ9ZygoKT0+e3JaPVtbInBhdGgiLHtkOiJNMTggNEg2In1dLFsicGF0aCIse2Q6Ik0xOCA4IDYgMjAifV0sWyJwYXRoIix7ZDoibTYgOCAxMiAxMiJ9XV19KTt2YXIgb1osYWV0PWcoKCk9PntvWj1bWyJwYXRoIix7ZDoiTTE4IDYgNiAxOCJ9XSxbInBhdGgiLHtkOiJtNiA2IDEyIDEyIn1dXX0pO3ZhciBuWixzZXQ9ZygoKT0+e25aPVtbInBhdGgiLHtkOiJNMTAuNTEzIDQuODU2IDEzLjEyIDIuMTdhLjUuNSAwIDAgMSAuODYuNDZsLTEuMzc3IDQuMzE3In1dLFsicGF0aCIse2Q6Ik0xNS42NTYgMTBIMjBhMSAxIDAgMCAxIC43OCAxLjYzbC0xLjcyIDEuNzczIn1dLFsicGF0aCIse2Q6Ik0xNi4yNzMgMTYuMjczIDEwLjg4IDIxLjgzYS41LjUgMCAwIDEtLjg2LS40NmwxLjkyLTYuMDJBMSAxIDAgMCAwIDExIDE0SDRhMSAxIDAgMCAxLS43OC0xLjYzbDQuNTA3LTQuNjQzIn1dLFsicGF0aCIse2Q6Im0yIDIgMjAgMjAifV1dfSk7dmFyIGxaLGlldD1nKCgpPT57bFo9W1sicGF0aCIse2Q6Ik00IDE0YTEgMSAwIDAgMS0uNzgtMS42M2w5LjktMTAuMmEuNS41IDAgMCAxIC44Ni40NmwtMS45MiA2LjAyQTEgMSAwIDAgMCAxMyAxMGg3YTEgMSAwIDAgMSAuNzggMS42M2wtOS45IDEwLjJhLjUuNSAwIDAgMS0uODYtLjQ2bDEuOTItNi4wMkExIDEgMCAwIDAgMTEgMTR6In1dXX0pO3ZhciBjWixyZXQ9ZygoKT0+e2NaPVtbInBhdGgiLHtkOiJtMiAxMCAyLjQ1Ni0zLjY4NGEuNy43IDAgMCAxIDEuMTA2LS4wMTNsMi4zOSAzLjQxM2EuNy43IDAgMCAwIDEuMDk2LS4wMDFsMi40MDItMy40MzJhLjcuNyAwIDAgMSAxLjA5OCAwbDIuNDAyIDMuNDMyYS43LjcgMCAwIDAgMS4wOTggMGwyLjM4OS0zLjQxM2EuNy43IDAgMCAxIDEuMTA2LjAxM0wyMiAxMCJ9XSxbInBhdGgiLHtkOiJtMiAxOC4wMDIgMi40NTYtMy42ODRhLjcuNyAwIDAgMSAxLjEwNi0uMDEzbDIuMzkgMy40MTNhLjcuNyAwIDAgMCAxLjA5NyAwbDIuNDAyLTMuNDMyYS43LjcgMCAwIDEgMS4wOTggMGwyLjQwMiAzLjQzMmEuNy43IDAgMCAwIDEuMDk4IDBsMi4zODktMy40MTNhLjcuNyAwIDAgMSAxLjEwNi4wMTNMMjIgMTguMDAyIn1dXX0pO3ZhciBkWixvZXQ9ZygoKT0+e2RaPVtbInBhdGgiLHtkOiJNMTIgNy41YTQuNSA0LjUgMCAxIDEgNSA0LjUifV0sWyJwYXRoIix7ZDoiTTcgMTJhNC41IDQuNSAwIDEgMSA1LTQuNVYyMSJ9XV19KTt2YXIgdVosbmV0PWcoKCk9Pnt1Wj1bWyJwYXRoIix7ZDoiTTIxIDE0LjVBOSA2LjUgMCAwIDEgNS41IDE5In1dLFsicGF0aCIse2Q6Ik0zIDkuNUE5IDYuNSAwIDAgMSAxOC41IDUifV0sWyJjaXJjbGUiLHtjeDoiMTcuNSIsY3k6IjE0LjUiLHI6IjMuNSJ9XSxbImNpcmNsZSIse2N4OiI2LjUiLGN5OiI5LjUiLHI6IjMuNSJ9XV19KTt2YXIgcFosY2V0PWcoKCk9PntwWj1bWyJwYXRoIix7ZDoiTTExIDIxYTMgMyAwIDAgMCAzLTNWNi41YTEgMSAwIDAgMC03IDAifV0sWyJwYXRoIix7ZDoiTTcgMTlWNmEzIDMgMCAwIDAtMy0zaDAifV0sWyJjaXJjbGUiLHtjeDoiMTciLGN5OiIxNyIscjoiMyJ9XV19KTt2YXIgaFosZGV0PWcoKCk9PntoWj1bWyJwYXRoIix7ZDoiTTE2IDQuNTI1djE0Ljk0OCJ9XSxbInBhdGgiLHtkOiJNMjAgM0ExNyAxNyAwIDAgMSA0IDMifV0sWyJwYXRoIix7ZDoiTTQgMjFhMTcgMTcgMCAwIDEgMTYgMCJ9XSxbInBhdGgiLHtkOiJNOCA0LjUyNXYxNC45NDgifV1dfSk7dmFyIGZaLHVldD1nKCgpPT57Zlo9W1sicGF0aCIse2Q6Ik0xMCAxNmMwLTQtMy00LjUtMy04YTUgNSAwIDAgMSAxMCAwYzAgMy40NjYtMyA2LjE5Ni0zIDEwYTMgMyAwIDAgMCA2IDAifV0sWyJjaXJjbGUiLHtjeDoiNyIsY3k6IjE2IixyOiIzIn1dXX0pO3ZhciBtWixwZXQ9ZygoKT0+e21aPVtbInBhdGgiLHtkOiJNMyAxNmg2Ljg1N2MuMTYyLS4wMTIuMTktLjMyMy4wMzgtLjM4YTYgNiAwIDEgMSA0LjIxMiAwYy0uMTUzLjA1Ny0uMTI1LjM2OC4wMzguMzhIMjEifV0sWyJwYXRoIix7ZDoiTTMgMjBoMTgifV1dfSk7dmFyIGdaLGhldD1nKCgpPT57Z1o9W1sicGF0aCIse2Q6Ik0zIDEwQTYuMDYgNi4wNiAwIDAgMSAxMiAxMCBBNi4wNiA2LjA2IDAgMCAwIDIxIDEwIn1dLFsicGF0aCIse2Q6Ik02IDN2MTJhNiA2IDAgMCAwIDEyIDBWMyJ9XV19KTt2YXIgYlosZmV0PWcoKCk9PntiWj1bWyJwYXRoIix7ZDoiTTE5IDIxYTE1IDE1IDAgMCAxIDAtMTgifV0sWyJwYXRoIix7ZDoiTTIwIDEySDQifV0sWyJwYXRoIix7ZDoiTTUgM2ExNSAxNSAwIDAgMSAwIDE4In1dXX0pO3ZhciB2WixtZXQ9ZygoKT0+e3ZaPVtbInBhdGgiLHtkOiJNMTAgMTlWNS41YTEgMSAwIDAgMSA1IDBWMTdhMiAyIDAgMCAwIDIgMmg1bC0zLTMifV0sWyJwYXRoIix7ZDoibTIyIDE5LTMgMyJ9XSxbInBhdGgiLHtkOiJNNSAxOVY1LjVhMSAxIDAgMCAxIDUgMCJ9XSxbInBhdGgiLHtkOiJNNSA1LjVBMi41IDIuNSAwIDAgMCAyLjUgMyJ9XV19KTt2YXIgeFosZ2V0PWcoKCk9Pnt4Wj1bWyJwYXRoIix7ZDoiTTE1IDNoNnY2In1dLFsicGF0aCIse2Q6Ik0yMSAzIDMgMjEifV0sWyJwYXRoIix7ZDoibTkgOSA2IDYifV1dfSk7dmFyIHlaLGJldD1nKCgpPT57eVo9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTUiLHI6IjYifV0sWyJwYXRoIix7ZDoiTTE4IDNBNiA2IDAgMCAxIDYgMyJ9XV19KTt2YXIgd1osdmV0PWcoKCk9Pnt3Wj1bWyJwYXRoIix7ZDoiTTExIDUuNWExIDEgMCAwIDEgNSAwVjE2YTUgNSAwIDAgMCA1IDUifV0sWyJwYXRoIix7ZDoiTTE2IDExLjVhMSAxIDAgMCAxIDUgMFYxNmE1IDUgMCAwIDEtNSA1In1dLFsicGF0aCIse2Q6Ik02IDE5VjZhMyAzIDAgMCAwLTMtM2gwIn1dLFsicGF0aCIse2Q6Ik02IDUuNWExIDEgMCAwIDEgNSAwVjE5In1dXX0pO3ZhciBrWix4ZXQ9ZygoKT0+e2taPVtbImNpcmNsZSIse2N4OiIxMSIsY3k6IjExIixyOiI4In1dLFsibGluZSIse3gxOiIyMSIseDI6IjE2LjY1Iix5MToiMjEiLHkyOiIxNi42NSJ9XSxbImxpbmUiLHt4MToiMTEiLHgyOiIxMSIseTE6IjgiLHkyOiIxNCJ9XSxbImxpbmUiLHt4MToiOCIseDI6IjE0Iix5MToiMTEiLHkyOiIxMSJ9XV19KTt2YXIgU1oseWV0PWcoKCk9PntTWj1bWyJjaXJjbGUiLHtjeDoiMTEiLGN5OiIxMSIscjoiOCJ9XSxbImxpbmUiLHt4MToiMjEiLHgyOiIxNi42NSIseTE6IjIxIix5MjoiMTYuNjUifV0sWyJsaW5lIix7eDE6IjgiLHgyOiIxNCIseTE6IjExIix5MjoiMTEifV1dfSk7dmFyIENkPXt9O3l0KENkLHtBQXJyb3dEb3duOigpPT5oUyxBQXJyb3dVcDooKT0+ZlMsQUxhcmdlU21hbGw6KCk9Pm1TLEFjY2Vzc2liaWxpdHk6KCk9PmdTLEFjdGl2aXR5OigpPT5iUyxBY3Rpdml0eVNxdWFyZTooKT0+aTUsQWlyVmVudDooKT0+dlMsQWlycGxheTooKT0+eFMsQWxhcm1DaGVjazooKT0+eGYsQWxhcm1DbG9jazooKT0+d1MsQWxhcm1DbG9ja0NoZWNrOigpPT54ZixBbGFybUNsb2NrTWludXM6KCk9PnlmLEFsYXJtQ2xvY2tPZmY6KCk9PnlTLEFsYXJtQ2xvY2tQbHVzOigpPT53ZixBbGFybU1pbnVzOigpPT55ZixBbGFybVBsdXM6KCk9PndmLEFsYXJtU21va2U6KCk9PmtTLEFsYnVtOigpPT5TUyxBbGVydENpcmNsZTooKT0+WWYsQWxlcnRPY3RhZ29uOigpPT5QNixBbGVydFRyaWFuZ2xlOigpPT5wOCxBbGlnbkNlbnRlcjooKT0+cjgsQWxpZ25DZW50ZXJIb3Jpem9udGFsOigpPT5fUyxBbGlnbkNlbnRlclZlcnRpY2FsOigpPT5NUyxBbGlnbkVuZEhvcml6b250YWw6KCk9PnpTLEFsaWduRW5kVmVydGljYWw6KCk9PlRTLEFsaWduSG9yaXpvbnRhbERpc3RyaWJ1dGVDZW50ZXI6KCk9PkNTLEFsaWduSG9yaXpvbnRhbERpc3RyaWJ1dGVFbmQ6KCk9PiRTLEFsaWduSG9yaXpvbnRhbERpc3RyaWJ1dGVTdGFydDooKT0+RFMsQWxpZ25Ib3Jpem9udGFsSnVzdGlmeUNlbnRlcjooKT0+TFMsQWxpZ25Ib3Jpem9udGFsSnVzdGlmeUVuZDooKT0+RVMsQWxpZ25Ib3Jpem9udGFsSnVzdGlmeVN0YXJ0OigpPT5QUyxBbGlnbkhvcml6b250YWxTcGFjZUFyb3VuZDooKT0+SVMsQWxpZ25Ib3Jpem9udGFsU3BhY2VCZXR3ZWVuOigpPT5SUyxBbGlnbkp1c3RpZnk6KCk9Pm44LEFsaWduTGVmdDooKT0+WDAsQWxpZ25SaWdodDooKT0+bzgsQWxpZ25TdGFydEhvcml6b250YWw6KCk9PkFTLEFsaWduU3RhcnRWZXJ0aWNhbDooKT0+TlMsQWxpZ25WZXJ0aWNhbERpc3RyaWJ1dGVDZW50ZXI6KCk9Pk9TLEFsaWduVmVydGljYWxEaXN0cmlidXRlRW5kOigpPT5GUyxBbGlnblZlcnRpY2FsRGlzdHJpYnV0ZVN0YXJ0OigpPT5CUyxBbGlnblZlcnRpY2FsSnVzdGlmeUNlbnRlcjooKT0+SFMsQWxpZ25WZXJ0aWNhbEp1c3RpZnlFbmQ6KCk9PnFTLEFsaWduVmVydGljYWxKdXN0aWZ5U3RhcnQ6KCk9PmpTLEFsaWduVmVydGljYWxTcGFjZUFyb3VuZDooKT0+VlMsQWxpZ25WZXJ0aWNhbFNwYWNlQmV0d2VlbjooKT0+VVMsQW1idWxhbmNlOigpPT5XUyxBbXBlcnNhbmQ6KCk9PktTLEFtcGVyc2FuZHM6KCk9PkdTLEFtcGhvcmE6KCk9PllTLEFuY2hvcjooKT0+WlMsQW5ncnk6KCk9PlhTLEFubm95ZWQ6KCk9PlFTLEFudGVubmE6KCk9PkpTLEFudmlsOigpPT5lXyxBcGVydHVyZTooKT0+dF8sQXBwV2luZG93OigpPT5zXyxBcHBXaW5kb3dNYWM6KCk9PmFfLEFwcGxlOigpPT5yXyxBcmNoaXZlOigpPT5sXyxBcmNoaXZlUmVzdG9yZTooKT0+aV8sQXJjaGl2ZVg6KCk9Pm9fLEFyZWFDaGFydDooKT0+TmYsQXJtY2hhaXI6KCk9Pm5fLEFycm93QmlnRG93bjooKT0+ZF8sQXJyb3dCaWdEb3duRGFzaDooKT0+Y18sQXJyb3dCaWdMZWZ0OigpPT51XyxBcnJvd0JpZ0xlZnREYXNoOigpPT5wXyxBcnJvd0JpZ1JpZ2h0OigpPT5mXyxBcnJvd0JpZ1JpZ2h0RGFzaDooKT0+aF8sQXJyb3dCaWdVcDooKT0+Z18sQXJyb3dCaWdVcERhc2g6KCk9Pm1fLEFycm93RG93bjooKT0+el8sQXJyb3dEb3duMDE6KCk9PmJfLEFycm93RG93bjEwOigpPT52XyxBcnJvd0Rvd25BWjooKT0+a2YsQXJyb3dEb3duQXo6KCk9PmtmLEFycm93RG93bkNpcmNsZTooKT0+WmYsQXJyb3dEb3duRnJvbUxpbmU6KCk9PnhfLEFycm93RG93bkxlZnQ6KCk9PnlfLEFycm93RG93bkxlZnRGcm9tQ2lyY2xlOigpPT5RZixBcnJvd0Rvd25MZWZ0RnJvbVNxdWFyZTooKT0+YzUsQXJyb3dEb3duTGVmdFNxdWFyZTooKT0+cjUsQXJyb3dEb3duTmFycm93V2lkZTooKT0+d18sQXJyb3dEb3duUmlnaHQ6KCk9PmtfLEFycm93RG93blJpZ2h0RnJvbUNpcmNsZTooKT0+SmYsQXJyb3dEb3duUmlnaHRGcm9tU3F1YXJlOigpPT5kNSxBcnJvd0Rvd25SaWdodFNxdWFyZTooKT0+bzUsQXJyb3dEb3duU3F1YXJlOigpPT5uNSxBcnJvd0Rvd25Ub0RvdDooKT0+U18sQXJyb3dEb3duVG9MaW5lOigpPT5NXyxBcnJvd0Rvd25VcDooKT0+X18sQXJyb3dEb3duV2lkZU5hcnJvdzooKT0+U2YsQXJyb3dEb3duWkE6KCk9Pl9mLEFycm93RG93blphOigpPT5fZixBcnJvd0xlZnQ6KCk9PkxfLEFycm93TGVmdENpcmNsZTooKT0+WGYsQXJyb3dMZWZ0RnJvbUxpbmU6KCk9PkNfLEFycm93TGVmdFJpZ2h0OigpPT5UXyxBcnJvd0xlZnRTcXVhcmU6KCk9Pmw1LEFycm93TGVmdFRvTGluZTooKT0+JF8sQXJyb3dSaWdodDooKT0+SV8sQXJyb3dSaWdodENpcmNsZTooKT0+YW0sQXJyb3dSaWdodEZyb21MaW5lOigpPT5EXyxBcnJvd1JpZ2h0TGVmdDooKT0+RV8sQXJyb3dSaWdodFNxdWFyZTooKT0+aDUsQXJyb3dSaWdodFRvTGluZTooKT0+UF8sQXJyb3dVcDooKT0+Vl8sQXJyb3dVcDAxOigpPT5OXyxBcnJvd1VwMTA6KCk9PkFfLEFycm93VXBBWjooKT0+TWYsQXJyb3dVcEF6OigpPT5NZixBcnJvd1VwQ2lyY2xlOigpPT5zbSxBcnJvd1VwRG93bjooKT0+Ul8sQXJyb3dVcEZyb21Eb3Q6KCk9Pk9fLEFycm93VXBGcm9tTGluZTooKT0+Rl8sQXJyb3dVcExlZnQ6KCk9PkJfLEFycm93VXBMZWZ0RnJvbUNpcmNsZTooKT0+ZW0sQXJyb3dVcExlZnRGcm9tU3F1YXJlOigpPT51NSxBcnJvd1VwTGVmdFNxdWFyZTooKT0+ZjUsQXJyb3dVcE5hcnJvd1dpZGU6KCk9PnpmLEFycm93VXBSaWdodDooKT0+SF8sQXJyb3dVcFJpZ2h0RnJvbUNpcmNsZTooKT0+dG0sQXJyb3dVcFJpZ2h0RnJvbVNxdWFyZTooKT0+cDUsQXJyb3dVcFJpZ2h0U3F1YXJlOigpPT5tNSxBcnJvd1VwU3F1YXJlOigpPT5nNSxBcnJvd1VwVG9MaW5lOigpPT5qXyxBcnJvd1VwV2lkZU5hcnJvdzooKT0+cV8sQXJyb3dVcFpBOigpPT5DZixBcnJvd1VwWmE6KCk9PkNmLEFycm93c1VwRnJvbUxpbmU6KCk9PldfLEFzdGVyaXNrOigpPT5VXyxBc3Rlcmlza1NxdWFyZTooKT0+YjUsQXN0cm9pZDooKT0+R18sQXRTaWduOigpPT5LXyxBdG9tOigpPT5ZXyxBdWRpb0xpbmVzOigpPT5aXyxBdWRpb1dhdmVmb3JtOigpPT5YXyxBd2FyZDooKT0+UV8sQXhlOigpPT5KXyxBeGlzM0Q6KCk9PlRmLEF4aXMzZDooKT0+VGYsQmFieTooKT0+ZU0sQmFja3BhY2s6KCk9PnRNLEJhZGdlOigpPT5iTSxCYWRnZUFsZXJ0OigpPT5hTSxCYWRnZUNlbnQ6KCk9PnNNLEJhZGdlQ2hlY2s6KCk9PiRmLEJhZGdlRG9sbGFyU2lnbjooKT0+aU0sQmFkZ2VFdXJvOigpPT5yTSxCYWRnZUhlbHA6KCk9PkRmLEJhZGdlSW5kaWFuUnVwZWU6KCk9Pm9NLEJhZGdlSW5mbzooKT0+bk0sQmFkZ2VKYXBhbmVzZVllbjooKT0+bE0sQmFkZ2VNaW51czooKT0+Y00sQmFkZ2VQZXJjZW50OigpPT5kTSxCYWRnZVBsdXM6KCk9PnVNLEJhZGdlUG91bmRTdGVybGluZzooKT0+cE0sQmFkZ2VRdWVzdGlvbk1hcms6KCk9PkRmLEJhZGdlUnVzc2lhblJ1YmxlOigpPT5mTSxCYWRnZVN3aXNzRnJhbmM6KCk9PmhNLEJhZGdlVHVya2lzaExpcmE6KCk9Pm1NLEJhZGdlWDooKT0+Z00sQmFnZ2FnZUNsYWltOigpPT52TSxCYWxsb29uOigpPT55TSxCYW46KCk9PnhNLEJhbmFuYTooKT0+d00sQmFuZGFnZTooKT0+a00sQmFua25vdGU6KCk9PnpNLEJhbmtub3RlQXJyb3dEb3duOigpPT5fTSxCYW5rbm90ZUFycm93VXA6KCk9PlNNLEJhbmtub3RlWDooKT0+TU0sQmFyQ2hhcnQ6KCk9PlZmLEJhckNoYXJ0MjooKT0+VWYsQmFyQ2hhcnQzOigpPT5xZixCYXJDaGFydDQ6KCk9PkhmLEJhckNoYXJ0QmlnOigpPT5CZixCYXJDaGFydEhvcml6b250YWw6KCk9Pk9mLEJhckNoYXJ0SG9yaXpvbnRhbEJpZzooKT0+UmYsQmFyY29kZTooKT0+Q00sQmFycmVsOigpPT5UTSxCYXNlbGluZTooKT0+JE0sQmF0aDooKT0+RE0sQmF0dGVyeTooKT0+Uk0sQmF0dGVyeUNoYXJnaW5nOigpPT5MTSxCYXR0ZXJ5RnVsbDooKT0+RU0sQmF0dGVyeUxvdzooKT0+UE0sQmF0dGVyeU1lZGl1bTooKT0+SU0sQmF0dGVyeVBsdXM6KCk9PkFNLEJhdHRlcnlXYXJuaW5nOigpPT5OTSxCZWFrZXI6KCk9PkZNLEJlYW46KCk9PkhNLEJlYW5PZmY6KCk9Pk9NLEJlZDooKT0+Vk0sQmVkRG91YmxlOigpPT5CTSxCZWRTaW5nbGU6KCk9PnFNLEJlZWY6KCk9PlVNLEJlZWZPZmY6KCk9PmpNLEJlZXI6KCk9PkdNLEJlZXJPZmY6KCk9PldNLEJlbGw6KCk9PnR6LEJlbGxDaGVjazooKT0+S00sQmVsbERvdDooKT0+WU0sQmVsbEVsZWN0cmljOigpPT5aTSxCZWxsTWludXM6KCk9PlFNLEJlbGxPZmY6KCk9PlhNLEJlbGxQbHVzOigpPT5KTSxCZWxsUmluZzooKT0+ZXosQmV0d2Vlbkhvcml6b25hbEVuZDooKT0+TGYsQmV0d2Vlbkhvcml6b25hbFN0YXJ0OigpPT5FZixCZXR3ZWVuSG9yaXpvbnRhbEVuZDooKT0+TGYsQmV0d2Vlbkhvcml6b250YWxTdGFydDooKT0+RWYsQmV0d2VlblZlcnRpY2FsRW5kOigpPT5heixCZXR3ZWVuVmVydGljYWxTdGFydDooKT0+c3osQmljZXBzRmxleGVkOigpPT5peixCaWtlOigpPT5yeixCaW5hcnk6KCk9Pm96LEJpbm9jdWxhcnM6KCk9Pm56LEJpb2hhemFyZDooKT0+bHosQmlyZDooKT0+Y3osQmlyZGhvdXNlOigpPT5keixCaXRjb2luOigpPT51eixCbGVuZDooKT0+cHosQmxpbmRzOigpPT5oeixCbG9ja3M6KCk9PmZ6LEJsdWV0b290aDooKT0+YnosQmx1ZXRvb3RoQ29ubmVjdGVkOigpPT5teixCbHVldG9vdGhPZmY6KCk9Pmd6LEJsdWV0b290aFNlYXJjaGluZzooKT0+dnosQm9sZDooKT0+eHosQm9sdDooKT0+d3osQm9tYjooKT0+eXosQm9uZTooKT0+a3osQm9vazooKT0+R3osQm9va0E6KCk9PlN6LEJvb2tBbGVydDooKT0+X3osQm9va0F1ZGlvOigpPT5NeixCb29rQ2hlY2s6KCk9Pnp6LEJvb2tDb3B5OigpPT5DeixCb29rRGFzaGVkOigpPT5QZixCb29rRG93bjooKT0+VHosQm9va0hlYWRwaG9uZXM6KCk9PiR6LEJvb2tIZWFydDooKT0+RHosQm9va0ltYWdlOigpPT5MeixCb29rS2V5OigpPT5FeixCb29rTG9jazooKT0+SXosQm9va01hcmtlZDooKT0+UHosQm9va01pbnVzOigpPT5BeixCb29rT3BlbjooKT0+RnosQm9va09wZW5DaGVjazooKT0+TnosQm9va09wZW5UZXh0OigpPT5SeixCb29rUGx1czooKT0+QnosQm9va1NlYXJjaDooKT0+T3osQm9va1RlbXBsYXRlOigpPT5QZixCb29rVGV4dDooKT0+SHosQm9va1R5cGU6KCk9PlZ6LEJvb2tVcDooKT0+anosQm9va1VwMjooKT0+cXosQm9va1VzZXI6KCk9PlV6LEJvb2tYOigpPT5XeixCb29rbWFyazooKT0+SnosQm9va21hcmtDaGVjazooKT0+S3osQm9va21hcmtNaW51czooKT0+WXosQm9va21hcmtPZmY6KCk9Plp6LEJvb2ttYXJrUGx1czooKT0+WHosQm9va21hcmtYOigpPT5ReixCb29tQm94OigpPT5lQyxCb3Q6KCk9PnNDLEJvdE1lc3NhZ2VTcXVhcmU6KCk9PnRDLEJvdE9mZjooKT0+YUMsQm90dGxlV2luZTooKT0+ckMsQm93QXJyb3c6KCk9PmlDLEJveDooKT0+b0MsQm94U2VsZWN0OigpPT5ENSxCb3hlczooKT0+bkMsQnJhY2VzOigpPT5JZixCcmFja2V0czooKT0+bEMsQnJhaW46KCk9PnBDLEJyYWluQ2lyY3VpdDooKT0+Y0MsQnJhaW5Db2c6KCk9PmRDLEJyaWNrV2FsbDooKT0+ZkMsQnJpY2tXYWxsRmlyZTooKT0+dUMsQnJpY2tXYWxsU2hpZWxkOigpPT5oQyxCcmllZmNhc2U6KCk9PnZDLEJyaWVmY2FzZUJ1c2luZXNzOigpPT5tQyxCcmllZmNhc2VDb252ZXlvckJlbHQ6KCk9PmdDLEJyaWVmY2FzZU1lZGljYWw6KCk9PmJDLEJyaW5nVG9Gcm9udDooKT0+eEMsQnJ1c2g6KCk9PndDLEJydXNoQ2xlYW5pbmc6KCk9PnlDLEJ1YmJsZXM6KCk9PlNDLEJ1ZzooKT0+TUMsQnVnT2ZmOigpPT5rQyxCdWdQbGF5OigpPT5fQyxCdWlsZGluZzooKT0+ekMsQnVpbGRpbmcyOigpPT5DQyxCdXM6KCk9PiRDLEJ1c0Zyb250OigpPT5UQyxDYWJsZTooKT0+REMsQ2FibGVDYXI6KCk9PkxDLENha2U6KCk9PlBDLENha2VTbGljZTooKT0+RUMsQ2FsY3VsYXRvcjooKT0+QUMsQ2FsZW5kYXI6KCk9PnRULENhbGVuZGFyMTooKT0+SUMsQ2FsZW5kYXJBcnJvd0Rvd246KCk9Pk5DLENhbGVuZGFyQXJyb3dVcDooKT0+UkMsQ2FsZW5kYXJDaGVjazooKT0+RkMsQ2FsZW5kYXJDaGVjazI6KCk9Pk9DLENhbGVuZGFyQ2xvY2s6KCk9PkJDLENhbGVuZGFyQ29nOigpPT5IQyxDYWxlbmRhckRheXM6KCk9PnFDLENhbGVuZGFyRm9sZDooKT0+akMsQ2FsZW5kYXJIZWFydDooKT0+VUMsQ2FsZW5kYXJNaW51czooKT0+R0MsQ2FsZW5kYXJNaW51czI6KCk9PlZDLENhbGVuZGFyT2ZmOigpPT5XQyxDYWxlbmRhclBsdXM6KCk9PlpDLENhbGVuZGFyUGx1czI6KCk9PktDLENhbGVuZGFyUmFuZ2U6KCk9PllDLENhbGVuZGFyU2VhcmNoOigpPT5YQyxDYWxlbmRhclN5bmM6KCk9PlFDLENhbGVuZGFyWDooKT0+ZVQsQ2FsZW5kYXJYMjooKT0+SkMsQ2FsZW5kYXJzOigpPT5hVCxDYW1lcmE6KCk9PmlULENhbWVyYU9mZjooKT0+c1QsQ2FuZGxlc3RpY2tDaGFydDooKT0+RmYsQ2FuZHk6KCk9Pm9ULENhbmR5Q2FuZTooKT0+clQsQ2FuZHlPZmY6KCk9Pm5ULENhbm5hYmlzOigpPT5jVCxDYW5uYWJpc09mZjooKT0+bFQsQ2FwdGlvbnM6KCk9PkFmLENhcHRpb25zT2ZmOigpPT5kVCxDYXI6KCk9PnBULENhckZyb250OigpPT51VCxDYXJUYXhpRnJvbnQ6KCk9PmhULENhcmF2YW46KCk9PmZULENhcmRTaW06KCk9Pm1ULENhcnJvdDooKT0+Z1QsQ2FzZUxvd2VyOigpPT5iVCxDYXNlU2Vuc2l0aXZlOigpPT52VCxDYXNlVXBwZXI6KCk9PnhULENhc3NldHRlVGFwZTooKT0+eVQsQ2FzdDooKT0+d1QsQ2FzdGxlOigpPT5rVCxDYXQ6KCk9PlNULENjdHY6KCk9Pk1ULENjdHZPZmY6KCk9Pl9ULENoYXJ0QXJlYTooKT0+TmYsQ2hhcnRCYXI6KCk9Pk9mLENoYXJ0QmFyQmlnOigpPT5SZixDaGFydEJhckRlY3JlYXNpbmc6KCk9PnpULENoYXJ0QmFySW5jcmVhc2luZzooKT0+Q1QsQ2hhcnRCYXJTdGFja2VkOigpPT5UVCxDaGFydENhbmRsZXN0aWNrOigpPT5GZixDaGFydENvbHVtbjooKT0+cWYsQ2hhcnRDb2x1bW5CaWc6KCk9PkJmLENoYXJ0Q29sdW1uRGVjcmVhc2luZzooKT0+JFQsQ2hhcnRDb2x1bW5JbmNyZWFzaW5nOigpPT5IZixDaGFydENvbHVtblN0YWNrZWQ6KCk9PkRULENoYXJ0R2FudHQ6KCk9PkxULENoYXJ0TGluZTooKT0+amYsQ2hhcnROZXR3b3JrOigpPT5FVCxDaGFydE5vQXhlc0NvbHVtbjooKT0+VWYsQ2hhcnROb0F4ZXNDb2x1bW5EZWNyZWFzaW5nOigpPT5QVCxDaGFydE5vQXhlc0NvbHVtbkluY3JlYXNpbmc6KCk9PlZmLENoYXJ0Tm9BeGVzQ29tYmluZWQ6KCk9PklULENoYXJ0Tm9BeGVzR2FudHQ6KCk9PldmLENoYXJ0UGllOigpPT5HZixDaGFydFNjYXR0ZXI6KCk9PktmLENoYXJ0U3BsaW5lOigpPT5BVCxDaGVjazooKT0+T1QsQ2hlY2tDaGVjazooKT0+TlQsQ2hlY2tDaXJjbGU6KCk9PmltLENoZWNrQ2lyY2xlMjooKT0+cm0sQ2hlY2tMaW5lOigpPT5SVCxDaGVja1NxdWFyZTooKT0+dzUsQ2hlY2tTcXVhcmUyOigpPT5rNSxDaGVmSGF0OigpPT5GVCxDaGVycnk6KCk9PkJULENoZXNzQmlzaG9wOigpPT5xVCxDaGVzc0tpbmc6KCk9PkhULENoZXNzS25pZ2h0OigpPT5qVCxDaGVzc1Bhd246KCk9PlZULENoZXNzUXVlZW46KCk9PkdULENoZXNzUm9vazooKT0+VVQsQ2hldnJvbkRvd246KCk9PldULENoZXZyb25Eb3duQ2lyY2xlOigpPT5ubSxDaGV2cm9uRG93blNxdWFyZTooKT0+UzUsQ2hldnJvbkZpcnN0OigpPT5LVCxDaGV2cm9uTGFzdDooKT0+WVQsQ2hldnJvbkxlZnQ6KCk9PlpULENoZXZyb25MZWZ0Q2lyY2xlOigpPT5vbSxDaGV2cm9uTGVmdFNxdWFyZTooKT0+XzUsQ2hldnJvblJpZ2h0OigpPT5YVCxDaGV2cm9uUmlnaHRDaXJjbGU6KCk9PmxtLENoZXZyb25SaWdodFNxdWFyZTooKT0+TTUsQ2hldnJvblVwOigpPT5RVCxDaGV2cm9uVXBDaXJjbGU6KCk9PmNtLENoZXZyb25VcFNxdWFyZTooKT0+ejUsQ2hldnJvbnNEb3duOigpPT5lJCxDaGV2cm9uc0Rvd25VcDooKT0+SlQsQ2hldnJvbnNMZWZ0OigpPT5zJCxDaGV2cm9uc0xlZnRSaWdodDooKT0+YSQsQ2hldnJvbnNMZWZ0UmlnaHRFbGxpcHNpczooKT0+dCQsQ2hldnJvbnNSaWdodDooKT0+ciQsQ2hldnJvbnNSaWdodExlZnQ6KCk9PmkkLENoZXZyb25zVXA6KCk9Pm8kLENoZXZyb25zVXBEb3duOigpPT5uJCxDaHVyY2g6KCk9PmwkLENpZ2FyZXR0ZTooKT0+ZCQsQ2lnYXJldHRlT2ZmOigpPT5jJCxDaXJjbGU6KCk9Pk0kLENpcmNsZUFsZXJ0OigpPT5ZZixDaXJjbGVBcnJvd0Rvd246KCk9PlpmLENpcmNsZUFycm93TGVmdDooKT0+WGYsQ2lyY2xlQXJyb3dPdXREb3duTGVmdDooKT0+UWYsQ2lyY2xlQXJyb3dPdXREb3duUmlnaHQ6KCk9PkpmLENpcmNsZUFycm93T3V0VXBMZWZ0OigpPT5lbSxDaXJjbGVBcnJvd091dFVwUmlnaHQ6KCk9PnRtLENpcmNsZUFycm93UmlnaHQ6KCk9PmFtLENpcmNsZUFycm93VXA6KCk9PnNtLENpcmNsZUNoZWNrOigpPT5ybSxDaXJjbGVDaGVja0JpZzooKT0+aW0sQ2lyY2xlQ2hldnJvbkRvd246KCk9Pm5tLENpcmNsZUNoZXZyb25MZWZ0OigpPT5vbSxDaXJjbGVDaGV2cm9uUmlnaHQ6KCk9PmxtLENpcmNsZUNoZXZyb25VcDooKT0+Y20sQ2lyY2xlRGFzaGVkOigpPT51JCxDaXJjbGVEaXZpZGU6KCk9PmRtLENpcmNsZURvbGxhclNpZ246KCk9PnAkLENpcmNsZURvdDooKT0+bSQsQ2lyY2xlRG90RGFzaGVkOigpPT5oJCxDaXJjbGVFbGxpcHNpczooKT0+ZiQsQ2lyY2xlRXF1YWw6KCk9PmckLENpcmNsZUZhZGluZ0Fycm93VXA6KCk9PmIkLENpcmNsZUZhZGluZ1BsdXM6KCk9PnYkLENpcmNsZUdhdWdlOigpPT51bSxDaXJjbGVIZWxwOigpPT5qMCxDaXJjbGVNaW51czooKT0+cG0sQ2lyY2xlT2ZmOigpPT54JCxDaXJjbGVQYXJraW5nOigpPT5mbSxDaXJjbGVQYXJraW5nT2ZmOigpPT5obSxDaXJjbGVQYXVzZTooKT0+bW0sQ2lyY2xlUGVyY2VudDooKT0+Z20sQ2lyY2xlUGlsZTooKT0+eSQsQ2lyY2xlUGxheTooKT0+Ym0sQ2lyY2xlUGx1czooKT0+dm0sQ2lyY2xlUG91bmRTdGVybGluZzooKT0+dyQsQ2lyY2xlUG93ZXI6KCk9PnhtLENpcmNsZVF1ZXN0aW9uTWFyazooKT0+ajAsQ2lyY2xlU2xhc2g6KCk9PmskLENpcmNsZVNsYXNoMjooKT0+eW0sQ2lyY2xlU2xhc2hlZDooKT0+eW0sQ2lyY2xlU21hbGw6KCk9PlMkLENpcmNsZVN0YXI6KCk9Pl8kLENpcmNsZVN0b3A6KCk9PndtLENpcmNsZVVzZXI6KCk9PlNtLENpcmNsZVVzZXJSb3VuZDooKT0+a20sQ2lyY2xlWDooKT0+X20sQ2lyY3VpdEJvYXJkOigpPT56JCxDaXRydXM6KCk9PkMkLENsYXBwZXJib2FyZDooKT0+VCQsQ2xpcGJvYXJkOigpPT5GJCxDbGlwYm9hcmRDaGVjazooKT0+JCQsQ2xpcGJvYXJkQ2xvY2s6KCk9PkQkLENsaXBib2FyZENvcHk6KCk9PkwkLENsaXBib2FyZEVkaXQ6KCk9PnptLENsaXBib2FyZExpc3Q6KCk9PkUkLENsaXBib2FyZE1pbnVzOigpPT5QJCxDbGlwYm9hcmRQYXN0ZTooKT0+SSQsQ2xpcGJvYXJkUGVuOigpPT56bSxDbGlwYm9hcmRQZW5MaW5lOigpPT5NbSxDbGlwYm9hcmRQbHVzOigpPT5BJCxDbGlwYm9hcmRTaWduYXR1cmU6KCk9Pk1tLENsaXBib2FyZFR5cGU6KCk9Pk4kLENsaXBib2FyZFg6KCk9PlIkLENsb2NrOigpPT5zRCxDbG9jazE6KCk9Pk8kLENsb2NrMTA6KCk9PkIkLENsb2NrMTE6KCk9PkgkLENsb2NrMTI6KCk9PnEkLENsb2NrMjooKT0+aiQsQ2xvY2szOigpPT5WJCxDbG9jazQ6KCk9PlUkLENsb2NrNTooKT0+VyQsQ2xvY2s2OigpPT5HJCxDbG9jazc6KCk9PlkkLENsb2NrODooKT0+SyQsQ2xvY2s5OigpPT5aJCxDbG9ja0FsZXJ0OigpPT5YJCxDbG9ja0Fycm93RG93bjooKT0+USQsQ2xvY2tBcnJvd1VwOigpPT5KJCxDbG9ja0NoZWNrOigpPT5lRCxDbG9ja0ZhZGluZzooKT0+dEQsQ2xvY2tQbHVzOigpPT5hRCxDbG9zZWRDYXB0aW9uOigpPT5pRCxDbG91ZDooKT0+a0QsQ2xvdWRBbGVydDooKT0+ckQsQ2xvdWRCYWNrdXA6KCk9Pm9ELENsb3VkQ2hlY2s6KCk9Pm5ELENsb3VkQ29nOigpPT5sRCxDbG91ZERvd25sb2FkOigpPT5DbSxDbG91ZERyaXp6bGU6KCk9PmNELENsb3VkRm9nOigpPT51RCxDbG91ZEhhaWw6KCk9PmRELENsb3VkTGlnaHRuaW5nOigpPT5wRCxDbG91ZE1vb246KCk9PmZELENsb3VkTW9vblJhaW46KCk9PmhELENsb3VkT2ZmOigpPT5nRCxDbG91ZFJhaW46KCk9PmJELENsb3VkUmFpbldpbmQ6KCk9Pm1ELENsb3VkU25vdzooKT0+dkQsQ2xvdWRTdW46KCk9PndELENsb3VkU3VuUmFpbjooKT0+eEQsQ2xvdWRTeW5jOigpPT55RCxDbG91ZFVwbG9hZDooKT0+VG0sQ2xvdWR5OigpPT5TRCxDbG92ZXI6KCk9Pl9ELENsdWI6KCk9Pk1ELENvZGU6KCk9PnpELENvZGUyOigpPT4kbSxDb2RlU3F1YXJlOigpPT5DNSxDb2RlWG1sOigpPT4kbSxDb2ZmZWU6KCk9PkNELENvZzooKT0+VEQsQ29pbnM6KCk9PiRELENvbHVtbnM6KCk9PkRtLENvbHVtbnMyOigpPT5EbSxDb2x1bW5zMzooKT0+TG0sQ29sdW1uczNDb2c6KCk9PlYwLENvbHVtbnM0OigpPT5ERCxDb2x1bW5zU2V0dGluZ3M6KCk9PlYwLENvbWJpbmU6KCk9PkxELENvbW1hbmQ6KCk9PkVELENvbXBhc3M6KCk9PlBELENvbXBvbmVudDooKT0+SUQsQ29tcHV0ZXI6KCk9PkFELENvbmNpZXJnZUJlbGw6KCk9Pk5ELENvbmU6KCk9PlJELENvbnN0cnVjdGlvbjooKT0+T0QsQ29udGFjdDooKT0+RkQsQ29udGFjdDI6KCk9PkVtLENvbnRhY3RSb3VuZDooKT0+RW0sQ29udGFpbmVyOigpPT5CRCxDb250cmFzdDooKT0+SEQsQ29va2llOigpPT5xRCxDb29raW5nUG90OigpPT5qRCxDb3B5OigpPT5ZRCxDb3B5Q2hlY2s6KCk9PlZELENvcHlNaW51czooKT0+VUQsQ29weVBsdXM6KCk9PldELENvcHlTbGFzaDooKT0+R0QsQ29weVg6KCk9PktELENvcHlsZWZ0OigpPT5aRCxDb3B5cmlnaHQ6KCk9PlhELENvcm5lckRvd25MZWZ0OigpPT5RRCxDb3JuZXJEb3duUmlnaHQ6KCk9PkpELENvcm5lckxlZnREb3duOigpPT5lTCxDb3JuZXJMZWZ0VXA6KCk9PnRMLENvcm5lclJpZ2h0RG93bjooKT0+YUwsQ29ybmVyUmlnaHRVcDooKT0+c0wsQ29ybmVyVXBMZWZ0OigpPT5pTCxDb3JuZXJVcFJpZ2h0OigpPT5yTCxDcHU6KCk9Pm9MLENyZWF0aXZlQ29tbW9uczooKT0+bkwsQ3JlZGl0Q2FyZDooKT0+bEwsQ3JvaXNzYW50OigpPT5jTCxDcm9wOigpPT5kTCxDcm9zczooKT0+dUwsQ3Jvc3NoYWlyOigpPT5wTCxDcm93bjooKT0+aEwsQ3Vib2lkOigpPT5mTCxDdXBTb2RhOigpPT5tTCxDdXJseUJyYWNlczooKT0+SWYsQ3VycmVuY3k6KCk9PmdMLEN5bGluZGVyOigpPT5iTCxEYW06KCk9PnZMLERhdGFiYXNlOigpPT5rTCxEYXRhYmFzZUJhY2t1cDooKT0+eEwsRGF0YWJhc2VTZWFyY2g6KCk9PndMLERhdGFiYXNlWmFwOigpPT55TCxEZWNpbWFsc0Fycm93TGVmdDooKT0+U0wsRGVjaW1hbHNBcnJvd1JpZ2h0OigpPT5fTCxEZWxldGU6KCk9Pk1MLERlc3NlcnQ6KCk9PnpMLERpYW1ldGVyOigpPT5DTCxEaWFtb25kOigpPT5ETCxEaWFtb25kTWludXM6KCk9PlRMLERpYW1vbmRQZXJjZW50OigpPT5QbSxEaWFtb25kUGx1czooKT0+JEwsRGljZTE6KCk9PkxMLERpY2UyOigpPT5FTCxEaWNlMzooKT0+UEwsRGljZTQ6KCk9PklMLERpY2U1OigpPT5BTCxEaWNlNjooKT0+TkwsRGljZXM6KCk9Pk9MLERpZmY6KCk9PlJMLERpc2M6KCk9PmpMLERpc2MyOigpPT5GTCxEaXNjMzooKT0+QkwsRGlzY0FsYnVtOigpPT5ITCxEaXZpZGU6KCk9PnFMLERpdmlkZUNpcmNsZTooKT0+ZG0sRGl2aWRlU3F1YXJlOigpPT5FNSxEbmE6KCk9PlVMLERuYU9mZjooKT0+VkwsRG9jazooKT0+V0wsRG9nOigpPT5LTCxEb2xsYXJTaWduOigpPT5HTCxEb251dDooKT0+WUwsRG9vckNsb3NlZDooKT0+WEwsRG9vckNsb3NlZExvY2tlZDooKT0+WkwsRG9vck9wZW46KCk9PlFMLERvdDooKT0+SkwsRG90U3F1YXJlOigpPT5MNSxEb3dubG9hZDooKT0+ZUUsRG93bmxvYWRDbG91ZDooKT0+Q20sRHJhZnRpbmdDb21wYXNzOigpPT50RSxEcmFtYTooKT0+c0UsRHJpbGw6KCk9PmFFLERyb25lOigpPT5pRSxEcm9wbGV0OigpPT5yRSxEcm9wbGV0T2ZmOigpPT5vRSxEcm9wbGV0czooKT0+bkUsRHJ1bTooKT0+bEUsRHJ1bXN0aWNrOigpPT5jRSxEdW1iYmVsbDooKT0+ZEUsRWFyOigpPT5wRSxFYXJPZmY6KCk9PnVFLEVhcnRoOigpPT5JbSxFYXJ0aExvY2s6KCk9PmhFLEVjbGlwc2U6KCk9PmZFLEVkaXQ6KCk9PlYxLEVkaXQyOigpPT5XNixFZGl0MzooKT0+VTYsRWdnOigpPT5nRSxFZ2dGcmllZDooKT0+bUUsRWdnT2ZmOigpPT5iRSxFbGxpcHNlOigpPT52RSxFbGxpcHNpczooKT0+Tm0sRWxsaXBzaXNWZXJ0aWNhbDooKT0+QW0sRXF1YWw6KCk9PndFLEVxdWFsQXBwcm94aW1hdGVseTooKT0+eEUsRXF1YWxOb3Q6KCk9PnlFLEVxdWFsU3F1YXJlOigpPT5QNSxFcmFzZXI6KCk9PmtFLEV0aGVybmV0UG9ydDooKT0+U0UsRXVybzooKT0+X0UsRXZDaGFyZ2VyOigpPT5NRSxFeHBhbmQ6KCk9PnpFLEV4dGVybmFsTGluazooKT0+Q0UsRXllOigpPT5ERSxFeWVDbG9zZWQ6KCk9PlRFLEV5ZU9mZjooKT0+JEUsRmFjdG9yeTooKT0+TEUsRmFuOigpPT5FRSxGYXN0Rm9yd2FyZDooKT0+UEUsRmVhdGhlcjooKT0+SUUsRmVuY2U6KCk9Pk5FLEZlcnJpc1doZWVsOigpPT5BRSxGaWxlOigpPT51UCxGaWxlQXJjaGl2ZTooKT0+UkUsRmlsZUF1ZGlvOigpPT5VMCxGaWxlQXVkaW8yOigpPT5VMCxGaWxlQXhpczNEOigpPT5SbSxGaWxlQXhpczNkOigpPT5SbSxGaWxlQmFkZ2U6KCk9Pk9tLEZpbGVCYWRnZTI6KCk9Pk9tLEZpbGVCYXJDaGFydDooKT0+Qm0sRmlsZUJhckNoYXJ0MjooKT0+cW0sRmlsZUJveDooKT0+T0UsRmlsZUJyYWNlczooKT0+Rm0sRmlsZUJyYWNlc0Nvcm5lcjooKT0+SG0sRmlsZUNoYXJ0Q29sdW1uOigpPT5xbSxGaWxlQ2hhcnRDb2x1bW5JbmNyZWFzaW5nOigpPT5CbSxGaWxlQ2hhcnRMaW5lOigpPT5qbSxGaWxlQ2hhcnRQaWU6KCk9PlZtLEZpbGVDaGVjazooKT0+RkUsRmlsZUNoZWNrMjooKT0+VW0sRmlsZUNoZWNrQ29ybmVyOigpPT5VbSxGaWxlQ2xvY2s6KCk9PkJFLEZpbGVDb2RlOigpPT5IRSxGaWxlQ29kZTI6KCk9PldtLEZpbGVDb2RlQ29ybmVyOigpPT5XbSxGaWxlQ29nOigpPT5HbSxGaWxlQ29nMjooKT0+R20sRmlsZURpZmY6KCk9PnFFLEZpbGVEaWdpdDooKT0+akUsRmlsZURvd246KCk9PlZFLEZpbGVFZGl0OigpPT5lNixGaWxlRXhjbGFtYXRpb25Qb2ludDooKT0+S20sRmlsZUhlYWRwaG9uZTooKT0+VTAsRmlsZUhlYXJ0OigpPT5VRSxGaWxlSW1hZ2U6KCk9PldFLEZpbGVJbnB1dDooKT0+R0UsRmlsZUpzb246KCk9PkZtLEZpbGVKc29uMjooKT0+SG0sRmlsZUtleTooKT0+WW0sRmlsZUtleTI6KCk9PlltLEZpbGVMaW5lQ2hhcnQ6KCk9PmptLEZpbGVMb2NrOigpPT5abSxGaWxlTG9jazI6KCk9PlptLEZpbGVNaW51czooKT0+S0UsRmlsZU1pbnVzMjooKT0+WG0sRmlsZU1pbnVzQ29ybmVyOigpPT5YbSxGaWxlTXVzaWM6KCk9PllFLEZpbGVPdXRwdXQ6KCk9PlpFLEZpbGVQZW46KCk9PmU2LEZpbGVQZW5MaW5lOigpPT5RbSxGaWxlUGllQ2hhcnQ6KCk9PlZtLEZpbGVQbGF5OigpPT5KbSxGaWxlUGx1czooKT0+WEUsRmlsZVBsdXMyOigpPT50NixGaWxlUGx1c0Nvcm5lcjooKT0+dDYsRmlsZVF1ZXN0aW9uOigpPT5hNixGaWxlUXVlc3Rpb25NYXJrOigpPT5hNixGaWxlU2NhbjooKT0+UUUsRmlsZVNlYXJjaDooKT0+SkUsRmlsZVNlYXJjaDI6KCk9PnM2LEZpbGVTZWFyY2hDb3JuZXI6KCk9PnM2LEZpbGVTaWduYWw6KCk9Pmk2LEZpbGVTaWduYXR1cmU6KCk9PlFtLEZpbGVTbGlkZXJzOigpPT5lUCxGaWxlU3ByZWFkc2hlZXQ6KCk9PnRQLEZpbGVTdGFjazooKT0+c1AsRmlsZVN5bWxpbms6KCk9PmFQLEZpbGVUZXJtaW5hbDooKT0+aVAsRmlsZVRleHQ6KCk9PnJQLEZpbGVUeXBlOigpPT5vUCxGaWxlVHlwZTI6KCk9PnI2LEZpbGVUeXBlQ29ybmVyOigpPT5yNixGaWxlVXA6KCk9Pm5QLEZpbGVVc2VyOigpPT5sUCxGaWxlVmlkZW86KCk9PkptLEZpbGVWaWRlbzI6KCk9Pm82LEZpbGVWaWRlb0NhbWVyYTooKT0+bzYsRmlsZVZvbHVtZTooKT0+Y1AsRmlsZVZvbHVtZTI6KCk9Pmk2LEZpbGVXYXJuaW5nOigpPT5LbSxGaWxlWDooKT0+ZFAsRmlsZVgyOigpPT5uNixGaWxlWENvcm5lcjooKT0+bjYsRmlsZXM6KCk9PmhQLEZpbG06KCk9PnBQLEZpbHRlcjooKT0+cDYsRmlsdGVyWDooKT0+dTYsRmluZ2VycHJpbnQ6KCk9Pmw2LEZpbmdlcnByaW50UGF0dGVybjooKT0+bDYsRmlyZUV4dGluZ3Vpc2hlcjooKT0+ZlAsRmlzaDooKT0+YlAsRmlzaE9mZjooKT0+Z1AsRmlzaFN5bWJvbDooKT0+bVAsRmlzaGluZ0hvb2s6KCk9PnZQLEZpc2hpbmdSb2Q6KCk9PnlQLEZsYWc6KCk9PlNQLEZsYWdPZmY6KCk9PnhQLEZsYWdUcmlhbmdsZUxlZnQ6KCk9PndQLEZsYWdUcmlhbmdsZVJpZ2h0OigpPT5rUCxGbGFtZTooKT0+X1AsRmxhbWVLaW5kbGluZzooKT0+elAsRmxhc2hsaWdodDooKT0+Q1AsRmxhc2hsaWdodE9mZjooKT0+TVAsRmxhc2tDb25pY2FsOigpPT4kUCxGbGFza0NvbmljYWxPZmY6KCk9PlRQLEZsYXNrUm91bmQ6KCk9PkRQLEZsaXBIb3Jpem9udGFsOigpPT54NSxGbGlwSG9yaXpvbnRhbDI6KCk9PkxQLEZsaXBWZXJ0aWNhbDooKT0+eTUsRmxpcFZlcnRpY2FsMjooKT0+RVAsRmxvd2VyOigpPT5OUCxGbG93ZXIyOigpPT5QUCxGb2N1czooKT0+SVAsRm9sZEhvcml6b250YWw6KCk9PkFQLEZvbGRWZXJ0aWNhbDooKT0+RlAsRm9sZGVyOigpPT5wSSxGb2xkZXJBcmNoaXZlOigpPT5SUCxGb2xkZXJCb29rbWFyazooKT0+T1AsRm9sZGVyQ2hlY2s6KCk9PkJQLEZvbGRlckNsb2NrOigpPT5qUCxGb2xkZXJDbG9zZWQ6KCk9PkhQLEZvbGRlckNvZGU6KCk9PnFQLEZvbGRlckNvZzooKT0+YzYsRm9sZGVyQ29nMjooKT0+YzYsRm9sZGVyRG90OigpPT5WUCxGb2xkZXJEb3duOigpPT5VUCxGb2xkZXJFZGl0OigpPT5kNixGb2xkZXJHaXQ6KCk9PkdQLEZvbGRlckdpdDI6KCk9PldQLEZvbGRlckhlYXJ0OigpPT5LUCxGb2xkZXJJbnB1dDooKT0+WFAsRm9sZGVyS2FuYmFuOigpPT5ZUCxGb2xkZXJLZXk6KCk9PlpQLEZvbGRlckxvY2s6KCk9PlFQLEZvbGRlck1pbnVzOigpPT50SSxGb2xkZXJPcGVuOigpPT5lSSxGb2xkZXJPcGVuRG90OigpPT5KUCxGb2xkZXJPdXRwdXQ6KCk9PmFJLEZvbGRlclBlbjooKT0+ZDYsRm9sZGVyUGx1czooKT0+c0ksRm9sZGVyUm9vdDooKT0+aUksRm9sZGVyU2VhcmNoOigpPT5vSSxGb2xkZXJTZWFyY2gyOigpPT5ySSxGb2xkZXJTeW1saW5rOigpPT5uSSxGb2xkZXJTeW5jOigpPT5jSSxGb2xkZXJUcmVlOigpPT5sSSxGb2xkZXJVcDooKT0+ZEksRm9sZGVyWDooKT0+dUksRm9sZGVyczooKT0+aEksRm9vdHByaW50czooKT0+ZkksRm9ya0tuaWZlOigpPT5TOCxGb3JrS25pZmVDcm9zc2VkOigpPT5rOCxGb3JrbGlmdDooKT0+bUksRm9ybTooKT0+Z0ksRm9ybUlucHV0OigpPT5LNixGb3J3YXJkOigpPT5iSSxGcmFtZTooKT0+dkksRnJvd246KCk9PnhJLEZ1ZWw6KCk9PnlJLEZ1bGxzY3JlZW46KCk9PndJLEZ1bmN0aW9uU3F1YXJlOigpPT5JNSxGdW5uZWw6KCk9PnA2LEZ1bm5lbFBsdXM6KCk9PmtJLEZ1bm5lbFg6KCk9PnU2LEdhbGxlcnlIb3Jpem9udGFsOigpPT5fSSxHYWxsZXJ5SG9yaXpvbnRhbEVuZDooKT0+U0ksR2FsbGVyeVRodW1ibmFpbHM6KCk9Pk1JLEdhbGxlcnlWZXJ0aWNhbDooKT0+Q0ksR2FsbGVyeVZlcnRpY2FsRW5kOigpPT56SSxHYW1lcGFkOigpPT5ESSxHYW1lcGFkMjooKT0+VEksR2FtZXBhZERpcmVjdGlvbmFsOigpPT4kSSxHYW50dENoYXJ0OigpPT5XZixHYW50dENoYXJ0U3F1YXJlOigpPT5ZMCxHYXVnZTooKT0+TEksR2F1Z2VDaXJjbGU6KCk9PnVtLEdhdmVsOigpPT5FSSxHZW06KCk9PlBJLEdlb3JnaWFuTGFyaTooKT0+QUksR2hvc3Q6KCk9PklJLEdpZnQ6KCk9PlJJLEdpdEJyYW5jaDooKT0+RkksR2l0QnJhbmNoTWludXM6KCk9Pk5JLEdpdEJyYW5jaFBsdXM6KCk9Pk9JLEdpdENvbW1pdDooKT0+aDYsR2l0Q29tbWl0SG9yaXpvbnRhbDooKT0+aDYsR2l0Q29tbWl0VmVydGljYWw6KCk9PkJJLEdpdENvbXBhcmU6KCk9PnFJLEdpdENvbXBhcmVBcnJvd3M6KCk9PkhJLEdpdEZvcms6KCk9PmpJLEdpdEdyYXBoOigpPT5WSSxHaXRNZXJnZTooKT0+VUksR2l0TWVyZ2VDb25mbGljdDooKT0+V0ksR2l0UHVsbFJlcXVlc3Q6KCk9PlFJLEdpdFB1bGxSZXF1ZXN0QXJyb3c6KCk9PkdJLEdpdFB1bGxSZXF1ZXN0Q2xvc2VkOigpPT5LSSxHaXRQdWxsUmVxdWVzdENyZWF0ZTooKT0+WkksR2l0UHVsbFJlcXVlc3RDcmVhdGVBcnJvdzooKT0+WUksR2l0UHVsbFJlcXVlc3REcmFmdDooKT0+WEksR2xhc3NXYXRlcjooKT0+SkksR2xhc3NlczooKT0+ZUEsR2xvYmU6KCk9PmlBLEdsb2JlMjooKT0+SW0sR2xvYmVMb2NrOigpPT50QSxHbG9iZU9mZjooKT0+c0EsR2xvYmVYOigpPT5hQSxHb2FsOigpPT5yQSxHcHU6KCk9Pm9BLEdyYWI6KCk9PnY2LEdyYWR1YXRpb25DYXA6KCk9Pm5BLEdyYXBlOigpPT5sQSxHcmlkOigpPT5XMCxHcmlkMlgyOigpPT5iNixHcmlkMlgyQ2hlY2s6KCk9PmY2LEdyaWQyWDJQbHVzOigpPT5tNixHcmlkMlgyWDooKT0+ZzYsR3JpZDJ4MjooKT0+YjYsR3JpZDJ4MkNoZWNrOigpPT5mNixHcmlkMngyUGx1czooKT0+bTYsR3JpZDJ4Mlg6KCk9Pmc2LEdyaWQzWDM6KCk9PlcwLEdyaWQzeDI6KCk9PmNBLEdyaWQzeDM6KCk9PlcwLEdyaXA6KCk9PnBBLEdyaXBIb3Jpem9udGFsOigpPT5kQSxHcmlwVmVydGljYWw6KCk9PnVBLEdyb3VwOigpPT5oQSxHdWl0YXI6KCk9PmZBLEhhbTooKT0+bUEsSGFtYnVyZ2VyOigpPT5nQSxIYW1tZXI6KCk9PmJBLEhhbmQ6KCk9PlNBLEhhbmRDb2luczooKT0+dkEsSGFuZEZpc3Q6KCk9PnhBLEhhbmRHcmFiOigpPT52NixIYW5kSGVhcnQ6KCk9PnlBLEhhbmRIZWxwaW5nOigpPT54NixIYW5kTWV0YWw6KCk9PndBLEhhbmRQbGF0dGVyOigpPT5rQSxIYW5kYmFnOigpPT5fQSxIYW5kc2hha2U6KCk9Pk1BLEhhcmREcml2ZTooKT0+JEEsSGFyZERyaXZlRG93bmxvYWQ6KCk9PnpBLEhhcmREcml2ZVVwbG9hZDooKT0+Q0EsSGFyZEhhdDooKT0+VEEsSGFzaDooKT0+REEsSGF0R2xhc3NlczooKT0+TEEsSGF6ZTooKT0+RUEsSGQ6KCk9PlBBLEhkbWlQb3J0OigpPT5JQSxIZWFkaW5nOigpPT5IQSxIZWFkaW5nMTooKT0+QUEsSGVhZGluZzI6KCk9Pk5BLEhlYWRpbmczOigpPT5SQSxIZWFkaW5nNDooKT0+T0EsSGVhZGluZzU6KCk9PkZBLEhlYWRpbmc2OigpPT5CQSxIZWFkcGhvbmVPZmY6KCk9PnFBLEhlYWRwaG9uZXM6KCk9PlZBLEhlYWRzZXQ6KCk9PmpBLEhlYXJ0OigpPT5RQSxIZWFydENyYWNrOigpPT5VQSxIZWFydEhhbmRzaGFrZTooKT0+V0EsSGVhcnRNaW51czooKT0+R0EsSGVhcnRPZmY6KCk9PktBLEhlYXJ0UGx1czooKT0+WUEsSGVhcnRQdWxzZTooKT0+WkEsSGVhcnRYOigpPT5YQSxIZWF0ZXI6KCk9PkpBLEhlbGljb3B0ZXI6KCk9PmVOLEhlbHBDaXJjbGU6KCk9PmowLEhlbHBpbmdIYW5kOigpPT54NixIZXhhZ29uOigpPT50TixIaWdobGlnaHRlcjooKT0+YU4sSGlzdG9yeTooKT0+c04sSG9tZTooKT0+eTYsSG9wOigpPT5pTixIb3BPZmY6KCk9PnJOLEhvc3BpdGFsOigpPT5vTixIb3RlbDooKT0+bk4sSG91cmdsYXNzOigpPT5sTixIb3VzZTooKT0+eTYsSG91c2VIZWFydDooKT0+Y04sSG91c2VQbHVnOigpPT5kTixIb3VzZVBsdXM6KCk9PnBOLEhvdXNlV2lmaTooKT0+dU4sSWNlQ3JlYW06KCk9Pms2LEljZUNyZWFtMjooKT0+dzYsSWNlQ3JlYW1Cb3dsOigpPT53NixJY2VDcmVhbUNvbmU6KCk9Pms2LElkQ2FyZDooKT0+Zk4sSWRDYXJkTGFueWFyZDooKT0+aE4sSW1hZ2U6KCk9PmtOLEltYWdlRG93bjooKT0+bU4sSW1hZ2VNaW51czooKT0+Z04sSW1hZ2VPZmY6KCk9PmJOLEltYWdlUGxheTooKT0+dk4sSW1hZ2VQbHVzOigpPT54TixJbWFnZVVwOigpPT55TixJbWFnZVVwc2NhbGU6KCk9PndOLEltYWdlczooKT0+U04sSW1wb3J0OigpPT5fTixJbmJveDooKT0+TU4sSW5kZW50OigpPT5LMCxJbmRlbnREZWNyZWFzZTooKT0+RzAsSW5kZW50SW5jcmVhc2U6KCk9PkswLEluZGlhblJ1cGVlOigpPT56TixJbmZpbml0eTooKT0+Q04sSW5mbzooKT0+VE4sSW5zcGVjdDooKT0+QjUsSW5zcGVjdGlvblBhbmVsOigpPT4kTixJdGFsaWM6KCk9PkROLEl0ZXJhdGlvbkNjdzooKT0+TE4sSXRlcmF0aW9uQ3c6KCk9PkVOLEphcGFuZXNlWWVuOigpPT5QTixKb3lzdGljazooKT0+SU4sS2FuYmFuOigpPT5BTixLYW5iYW5TcXVhcmU6KCk9PlI1LEthbmJhblNxdWFyZURhc2hlZDooKT0+VDUsS2F5YWs6KCk9Pk5OLEtleTooKT0+Rk4sS2V5Um91bmQ6KCk9Pk9OLEtleVNxdWFyZTooKT0+Uk4sS2V5Ym9hcmQ6KCk9PnFOLEtleWJvYXJkTXVzaWM6KCk9PkJOLEtleWJvYXJkT2ZmOigpPT5ITixMYW1wOigpPT5LTixMYW1wQ2VpbGluZzooKT0+ak4sTGFtcERlc2s6KCk9PlZOLExhbXBGbG9vcjooKT0+VU4sTGFtcFdhbGxEb3duOigpPT5XTixMYW1wV2FsbFVwOigpPT5HTixMYW5kUGxvdDooKT0+WU4sTGFuZG1hcms6KCk9PlpOLExhbmd1YWdlczooKT0+WE4sTGFwdG9wOigpPT5KTixMYXB0b3AyOigpPT5TNixMYXB0b3BNaW5pbWFsOigpPT5TNixMYXB0b3BNaW5pbWFsQ2hlY2s6KCk9PlFOLExhc3NvOigpPT5hUixMYXNzb1NlbGVjdDooKT0+ZVIsTGF1Z2g6KCk9PnRSLExheWVyczooKT0+XzYsTGF5ZXJzMjooKT0+c1IsTGF5ZXJzMzooKT0+XzYsTGF5ZXJzTWludXM6KCk9PmlSLExheWVyc1BsdXM6KCk9PnJSLExheW91dDooKT0+VjYsTGF5b3V0RGFzaGJvYXJkOigpPT5vUixMYXlvdXRHcmlkOigpPT5uUixMYXlvdXRMaXN0OigpPT5sUixMYXlvdXRQYW5lbExlZnQ6KCk9PmNSLExheW91dFBhbmVsVG9wOigpPT51UixMYXlvdXRUZW1wbGF0ZTooKT0+ZFIsTGVhZjooKT0+cFIsTGVhZnlHcmVlbjooKT0+aFIsTGVjdGVybjooKT0+ZlIsTGVuc0NvbmNhdmU6KCk9Pm1SLExlbnNDb252ZXg6KCk9PmdSLExldHRlclRleHQ6KCk9Pmw4LExpYnJhcnk6KCk9PnZSLExpYnJhcnlCaWc6KCk9PmJSLExpYnJhcnlTcXVhcmU6KCk9PkE1LExpZmVCdW95OigpPT54UixMaWdhdHVyZTooKT0+eVIsTGlnaHRidWxiOigpPT53UixMaWdodGJ1bGJPZmY6KCk9PmtSLExpbmVDaGFydDooKT0+amYsTGluZURvdFJpZ2h0SG9yaXpvbnRhbDooKT0+U1IsTGluZVNxdWlnZ2xlOigpPT5NUixMaW5lU3R5bGU6KCk9Pl9SLExpbms6KCk9PlRSLExpbmsyOigpPT5DUixMaW5rMk9mZjooKT0+elIsTGlzdDooKT0+R1IsTGlzdENoZWNrOigpPT4kUixMaXN0Q2hlY2tzOigpPT5EUixMaXN0Q2hldnJvbnNEb3duVXA6KCk9PkxSLExpc3RDaGV2cm9uc1VwRG93bjooKT0+RVIsTGlzdENvbGxhcHNlOigpPT5QUixMaXN0RW5kOigpPT5JUixMaXN0RmlsdGVyOigpPT5OUixMaXN0RmlsdGVyUGx1czooKT0+QVIsTGlzdEluZGVudERlY3JlYXNlOigpPT5HMCxMaXN0SW5kZW50SW5jcmVhc2U6KCk9PkswLExpc3RNaW51czooKT0+UlIsTGlzdE11c2ljOigpPT5PUixMaXN0T3JkZXJlZDooKT0+RlIsTGlzdFBsdXM6KCk9PkJSLExpc3RSZXN0YXJ0OigpPT5IUixMaXN0U3RhcnQ6KCk9PnFSLExpc3RUb2RvOigpPT5qUixMaXN0VHJlZTooKT0+VlIsTGlzdFZpZGVvOigpPT5VUixMaXN0WDooKT0+V1IsTG9hZGVyOigpPT5ZUixMb2FkZXIyOigpPT5NNixMb2FkZXJDaXJjbGU6KCk9Pk02LExvYWRlclBpbndoZWVsOigpPT5LUixMb2NhdGU6KCk9PlFSLExvY2F0ZUZpeGVkOigpPT5aUixMb2NhdGVPZmY6KCk9PlhSLExvY2F0aW9uRWRpdDooKT0+JDYsTG9jazooKT0+ZU8sTG9ja0tleWhvbGU6KCk9PkpSLExvY2tLZXlob2xlT3BlbjooKT0+ejYsTG9ja09wZW46KCk9PkM2LExvZ0luOigpPT50TyxMb2dPdXQ6KCk9PmFPLExvZ3M6KCk9PnNPLExvbGxpcG9wOigpPT5pTyxMdWdnYWdlOigpPT5yTyxNU3F1YXJlOigpPT5ONSxNYWduZXQ6KCk9Pm5PLE1haWw6KCk9Pm1PLE1haWxDaGVjazooKT0+b08sTWFpbE1pbnVzOigpPT5sTyxNYWlsT3BlbjooKT0+Y08sTWFpbFBsdXM6KCk9PmRPLE1haWxRdWVzdGlvbjooKT0+VDYsTWFpbFF1ZXN0aW9uTWFyazooKT0+VDYsTWFpbFNlYXJjaDooKT0+dU8sTWFpbFdhcm5pbmc6KCk9PnBPLE1haWxYOigpPT5oTyxNYWlsYm94OigpPT5mTyxNYWlsczooKT0+Z08sTWFwOigpPT5FTyxNYXBNaW51czooKT0+Yk8sTWFwUGluOigpPT4kTyxNYXBQaW5DaGVjazooKT0+eE8sTWFwUGluQ2hlY2tJbnNpZGU6KCk9PnZPLE1hcFBpbkhvdXNlOigpPT55TyxNYXBQaW5NaW51czooKT0+a08sTWFwUGluTWludXNJbnNpZGU6KCk9PndPLE1hcFBpbk9mZjooKT0+U08sTWFwUGluUGVuOigpPT4kNixNYXBQaW5QbHVzOigpPT5NTyxNYXBQaW5QbHVzSW5zaWRlOigpPT5fTyxNYXBQaW5TZWFyY2g6KCk9PnpPLE1hcFBpblg6KCk9PkNPLE1hcFBpblhJbnNpZGU6KCk9PlRPLE1hcFBpbm5lZDooKT0+RE8sTWFwUGx1czooKT0+TE8sTWFyczooKT0+SU8sTWFyc1N0cm9rZTooKT0+UE8sTWFydGluaTooKT0+QU8sTWF4aW1pemU6KCk9PlJPLE1heGltaXplMjooKT0+Tk8sTWVkYWw6KCk9Pk9PLE1lZ2FwaG9uZTooKT0+Qk8sTWVnYXBob25lT2ZmOigpPT5GTyxNZWg6KCk9PkhPLE1lbW9yeVN0aWNrOigpPT5xTyxNZW51OigpPT5qTyxNZW51U3F1YXJlOigpPT5PNSxNZXJnZTooKT0+Vk8sTWVzc2FnZUNpcmNsZTooKT0+dEYsTWVzc2FnZUNpcmNsZUNoZWNrOigpPT5VTyxNZXNzYWdlQ2lyY2xlQ29kZTooKT0+V08sTWVzc2FnZUNpcmNsZURhc2hlZDooKT0+R08sTWVzc2FnZUNpcmNsZUhlYXJ0OigpPT5LTyxNZXNzYWdlQ2lyY2xlTW9yZTooKT0+WU8sTWVzc2FnZUNpcmNsZU9mZjooKT0+Wk8sTWVzc2FnZUNpcmNsZVBsdXM6KCk9PlhPLE1lc3NhZ2VDaXJjbGVRdWVzdGlvbjooKT0+RDYsTWVzc2FnZUNpcmNsZVF1ZXN0aW9uTWFyazooKT0+RDYsTWVzc2FnZUNpcmNsZVJlcGx5OigpPT5RTyxNZXNzYWdlQ2lyY2xlV2FybmluZzooKT0+Sk8sTWVzc2FnZUNpcmNsZVg6KCk9PmVGLE1lc3NhZ2VTcXVhcmU6KCk9PnZGLE1lc3NhZ2VTcXVhcmVDaGVjazooKT0+c0YsTWVzc2FnZVNxdWFyZUNvZGU6KCk9PmFGLE1lc3NhZ2VTcXVhcmVEYXNoZWQ6KCk9PmlGLE1lc3NhZ2VTcXVhcmVEaWZmOigpPT5yRixNZXNzYWdlU3F1YXJlRG90OigpPT5vRixNZXNzYWdlU3F1YXJlSGVhcnQ6KCk9Pm5GLE1lc3NhZ2VTcXVhcmVMb2NrOigpPT5sRixNZXNzYWdlU3F1YXJlTW9yZTooKT0+Y0YsTWVzc2FnZVNxdWFyZU9mZjooKT0+ZEYsTWVzc2FnZVNxdWFyZVBsdXM6KCk9PnVGLE1lc3NhZ2VTcXVhcmVRdW90ZTooKT0+cEYsTWVzc2FnZVNxdWFyZVJlcGx5OigpPT5oRixNZXNzYWdlU3F1YXJlU2hhcmU6KCk9PmZGLE1lc3NhZ2VTcXVhcmVUZXh0OigpPT5tRixNZXNzYWdlU3F1YXJlV2FybmluZzooKT0+Z0YsTWVzc2FnZVNxdWFyZVg6KCk9PmJGLE1lc3NhZ2VzU3F1YXJlOigpPT54RixNZXRyb25vbWU6KCk9PnlGLE1pYzooKT0+a0YsTWljMjooKT0+TDYsTWljT2ZmOigpPT53RixNaWNWb2NhbDooKT0+TDYsTWljcm9jaGlwOigpPT5TRixNaWNyb3Njb3BlOigpPT5fRixNaWNyb3dhdmU6KCk9Pk1GLE1pbGVzdG9uZTooKT0+ekYsTWlsazooKT0+VEYsTWlsa09mZjooKT0+Q0YsTWluaW1pemU6KCk9PkRGLE1pbmltaXplMjooKT0+JEYsTWludXM6KCk9PkxGLE1pbnVzQ2lyY2xlOigpPT5wbSxNaW51c1NxdWFyZTooKT0+RjUsTWlycm9yUmVjdGFuZ3VsYXI6KCk9PkVGLE1pcnJvclJvdW5kOigpPT5QRixNb25pdG9yOigpPT5HRixNb25pdG9yQ2hlY2s6KCk9PklGLE1vbml0b3JDbG91ZDooKT0+QUYsTW9uaXRvckNvZzooKT0+TkYsTW9uaXRvckRvdDooKT0+UkYsTW9uaXRvckRvd246KCk9PkZGLE1vbml0b3JPZmY6KCk9Pk9GLE1vbml0b3JQYXVzZTooKT0+QkYsTW9uaXRvclBsYXk6KCk9PkhGLE1vbml0b3JTbWFydHBob25lOigpPT5xRixNb25pdG9yU3BlYWtlcjooKT0+akYsTW9uaXRvclN0b3A6KCk9PlVGLE1vbml0b3JVcDooKT0+VkYsTW9uaXRvclg6KCk9PldGLE1vb246KCk9PllGLE1vb25TdGFyOigpPT5LRixNb3JlSG9yaXpvbnRhbDooKT0+Tm0sTW9yZVZlcnRpY2FsOigpPT5BbSxNb3RvcmJpa2U6KCk9PlpGLE1vdW50YWluOigpPT5RRixNb3VudGFpblNub3c6KCk9PlhGLE1vdXNlOigpPT5uQixNb3VzZUxlZnQ6KCk9PkpGLE1vdXNlT2ZmOigpPT5lQixNb3VzZVBvaW50ZXI6KCk9PnJCLE1vdXNlUG9pbnRlcjI6KCk9PmFCLE1vdXNlUG9pbnRlcjJPZmY6KCk9PnRCLE1vdXNlUG9pbnRlckJhbjooKT0+c0IsTW91c2VQb2ludGVyQ2xpY2s6KCk9PmlCLE1vdXNlUG9pbnRlclNxdWFyZURhc2hlZDooKT0+JDUsTW91c2VSaWdodDooKT0+b0IsTW92ZTooKT0+eUIsTW92ZTNEOigpPT5FNixNb3ZlM2Q6KCk9PkU2LE1vdmVEaWFnb25hbDooKT0+Y0IsTW92ZURpYWdvbmFsMjooKT0+bEIsTW92ZURvd246KCk9PnBCLE1vdmVEb3duTGVmdDooKT0+ZEIsTW92ZURvd25SaWdodDooKT0+dUIsTW92ZUhvcml6b250YWw6KCk9PmhCLE1vdmVMZWZ0OigpPT5mQixNb3ZlUmlnaHQ6KCk9Pm1CLE1vdmVVcDooKT0+dkIsTW92ZVVwTGVmdDooKT0+Z0IsTW92ZVVwUmlnaHQ6KCk9PmJCLE1vdmVWZXJ0aWNhbDooKT0+eEIsTXVzaWM6KCk9Pl9CLE11c2ljMjooKT0+d0IsTXVzaWMzOigpPT5TQixNdXNpYzQ6KCk9PmtCLE5hdmlnYXRpb246KCk9PlRCLE5hdmlnYXRpb24yOigpPT56QixOYXZpZ2F0aW9uMk9mZjooKT0+TUIsTmF2aWdhdGlvbk9mZjooKT0+Q0IsTmV0d29yazooKT0+JEIsTmV3c3BhcGVyOigpPT5EQixOZmM6KCk9PkxCLE5vbkJpbmFyeTooKT0+RUIsTm90ZWJvb2s6KCk9Pk5CLE5vdGVib29rUGVuOigpPT5QQixOb3RlYm9va1RhYnM6KCk9PkFCLE5vdGVib29rVGV4dDooKT0+SUIsTm90ZXBhZFRleHQ6KCk9Pk9CLE5vdGVwYWRUZXh0RGFzaGVkOigpPT5SQixOdXQ6KCk9PkJCLE51dE9mZjooKT0+RkIsT2N0YWdvbjooKT0+cUIsT2N0YWdvbkFsZXJ0OigpPT5QNixPY3RhZ29uTWludXM6KCk9PkhCLE9jdGFnb25QYXVzZTooKT0+STYsT2N0YWdvblg6KCk9PkE2LE9tZWdhOigpPT5qQixPcHRpb246KCk9PlZCLE9yYml0OigpPT5VQixPcmlnYW1pOigpPT5XQixPdXRkZW50OigpPT5HMCxQYWNrYWdlOigpPT5KQixQYWNrYWdlMjooKT0+R0IsUGFja2FnZUNoZWNrOigpPT5LQixQYWNrYWdlTWludXM6KCk9PllCLFBhY2thZ2VPcGVuOigpPT5aQixQYWNrYWdlUGx1czooKT0+WEIsUGFja2FnZVNlYXJjaDooKT0+UUIsUGFja2FnZVg6KCk9PmVILFBhaW50QnVja2V0OigpPT50SCxQYWludFJvbGxlcjooKT0+YUgsUGFpbnRicnVzaDooKT0+c0gsUGFpbnRicnVzaDI6KCk9Pk42LFBhaW50YnJ1c2hWZXJ0aWNhbDooKT0+TjYsUGFsZXR0ZTooKT0+aUgsUGFsbXRyZWU6KCk9PnU4LFBhbmRhOigpPT5vSCxQYW5lbEJvdHRvbTooKT0+bEgsUGFuZWxCb3R0b21DbG9zZTooKT0+ckgsUGFuZWxCb3R0b21EYXNoZWQ6KCk9PlI2LFBhbmVsQm90dG9tSW5hY3RpdmU6KCk9PlI2LFBhbmVsQm90dG9tT3BlbjooKT0+bkgsUGFuZWxMZWZ0OigpPT5INixQYW5lbExlZnRDbG9zZTooKT0+TzYsUGFuZWxMZWZ0RGFzaGVkOigpPT5GNixQYW5lbExlZnRJbmFjdGl2ZTooKT0+RjYsUGFuZWxMZWZ0T3BlbjooKT0+QjYsUGFuZWxMZWZ0UmlnaHREYXNoZWQ6KCk9PmNILFBhbmVsUmlnaHQ6KCk9PmhILFBhbmVsUmlnaHRDbG9zZTooKT0+ZEgsUGFuZWxSaWdodERhc2hlZDooKT0+cTYsUGFuZWxSaWdodEluYWN0aXZlOigpPT5xNixQYW5lbFJpZ2h0T3BlbjooKT0+dUgsUGFuZWxUb3A6KCk9PmdILFBhbmVsVG9wQm90dG9tRGFzaGVkOigpPT5wSCxQYW5lbFRvcENsb3NlOigpPT5mSCxQYW5lbFRvcERhc2hlZDooKT0+ajYsUGFuZWxUb3BJbmFjdGl2ZTooKT0+ajYsUGFuZWxUb3BPcGVuOigpPT5tSCxQYW5lbHNMZWZ0Qm90dG9tOigpPT5iSCxQYW5lbHNMZWZ0UmlnaHQ6KCk9PkxtLFBhbmVsc1JpZ2h0Qm90dG9tOigpPT52SCxQYW5lbHNUb3BCb3R0b206KCk9Plg2LFBhbmVsc1RvcExlZnQ6KCk9PlY2LFBhcGVyY2xpcDooKT0+eEgsUGFyZW50aGVzZXM6KCk9PnlILFBhcmtpbmdDaXJjbGU6KCk9PmZtLFBhcmtpbmdDaXJjbGVPZmY6KCk9PmhtLFBhcmtpbmdNZXRlcjooKT0+d0gsUGFya2luZ1NxdWFyZTooKT0+cTUsUGFya2luZ1NxdWFyZU9mZjooKT0+SDUsUGFydHlQb3BwZXI6KCk9PlNILFBhdXNlOigpPT5rSCxQYXVzZUNpcmNsZTooKT0+bW0sUGF1c2VPY3RhZ29uOigpPT5JNixQYXdQcmludDooKT0+X0gsUGNDYXNlOigpPT5NSCxQZW46KCk9Plc2LFBlbkJveDooKT0+VjEsUGVuTGluZTooKT0+VTYsUGVuT2ZmOigpPT56SCxQZW5TcXVhcmU6KCk9PlYxLFBlblRvb2w6KCk9PkNILFBlbmNpbDooKT0+REgsUGVuY2lsTGluZTooKT0+VEgsUGVuY2lsT2ZmOigpPT4kSCxQZW5jaWxSdWxlcjooKT0+TEgsUGVudGFnb246KCk9PkVILFBlcmNlbnQ6KCk9PlBILFBlcmNlbnRDaXJjbGU6KCk9PmdtLFBlcmNlbnREaWFtb25kOigpPT5QbSxQZXJjZW50U3F1YXJlOigpPT5qNSxQZXJzb25TdGFuZGluZzooKT0+SUgsUGhpbGlwcGluZVBlc286KCk9PkFILFBob25lOigpPT5qSCxQaG9uZUNhbGw6KCk9Pk5ILFBob25lRm9yd2FyZGVkOigpPT5SSCxQaG9uZUluY29taW5nOigpPT5PSCxQaG9uZU1pc3NlZDooKT0+RkgsUGhvbmVPZmY6KCk9PkJILFBob25lT3V0Z29pbmc6KCk9PkhILFBpOigpPT5xSCxQaVNxdWFyZTooKT0+VjUsUGlhbm86KCk9PlZILFBpY2theGU6KCk9PlVILFBpY3R1cmVJblBpY3R1cmU6KCk9PkdILFBpY3R1cmVJblBpY3R1cmUyOigpPT5XSCxQaWVDaGFydDooKT0+R2YsUGlnZ3lCYW5rOigpPT5LSCxQaWxjcm93OigpPT5YSCxQaWxjcm93TGVmdDooKT0+WUgsUGlsY3Jvd1JpZ2h0OigpPT5aSCxQaWxjcm93U3F1YXJlOigpPT5VNSxQaWxsOigpPT5lcSxQaWxsQm90dGxlOigpPT5RSCxQaW46KCk9PnRxLFBpbk9mZjooKT0+SkgsUGlwZXR0ZTooKT0+YXEsUGl6emE6KCk9PnNxLFBsYW5lOigpPT5vcSxQbGFuZUxhbmRpbmc6KCk9PmlxLFBsYW5lVGFrZW9mZjooKT0+cnEsUGxheTooKT0+bnEsUGxheUNpcmNsZTooKT0+Ym0sUGxheVNxdWFyZTooKT0+RzUsUGx1ZzooKT0+Y3EsUGx1ZzI6KCk9PmxxLFBsdWdaYXA6KCk9Pkc2LFBsdWdaYXAyOigpPT5HNixQbHVzOigpPT5kcSxQbHVzQ2lyY2xlOigpPT52bSxQbHVzU3F1YXJlOigpPT5XNSxQb2NrZXRLbmlmZTooKT0+dXEsUG9kY2FzdDooKT0+cHEsUG9pbnRlcjooKT0+aHEsUG9pbnRlck9mZjooKT0+ZnEsUG9wY29ybjooKT0+bXEsUG9wc2ljbGU6KCk9PmdxLFBvdW5kU3Rlcmxpbmc6KCk9PmJxLFBvd2VyOigpPT54cSxQb3dlckNpcmNsZTooKT0+eG0sUG93ZXJPZmY6KCk9PnZxLFBvd2VyU3F1YXJlOigpPT5LNSxQcmVzZW50YXRpb246KCk9PnlxLFByaW50ZXI6KCk9PlNxLFByaW50ZXJDaGVjazooKT0+a3EsUHJpbnRlclg6KCk9PndxLFByb2plY3RvcjooKT0+enEsUHJvcG9ydGlvbnM6KCk9Pl9xLFB1enpsZTooKT0+TXEsUHlyYW1pZDooKT0+Q3EsUXJDb2RlOigpPT4kcSxRdW90ZTooKT0+VHEsUmFiYml0OigpPT5McSxSYWRhcjooKT0+RHEsUmFkaWF0aW9uOigpPT5FcSxSYWRpY2FsOigpPT5QcSxSYWRpbzooKT0+UnEsUmFkaW9PZmY6KCk9PklxLFJhZGlvUmVjZWl2ZXI6KCk9PkFxLFJhZGlvVG93ZXI6KCk9Pk5xLFJhZGl1czooKT0+T3EsUmFpbmJvdzooKT0+RnEsUmF0OigpPT5CcSxSYXRpbzooKT0+SHEsUmVjZWlwdDooKT0+WnEsUmVjZWlwdENlbnQ6KCk9PnFxLFJlY2VpcHRFdXJvOigpPT5qcSxSZWNlaXB0SW5kaWFuUnVwZWU6KCk9PlZxLFJlY2VpcHRKYXBhbmVzZVllbjooKT0+V3EsUmVjZWlwdFBvdW5kU3Rlcmxpbmc6KCk9PlVxLFJlY2VpcHRSdXNzaWFuUnVibGU6KCk9PkdxLFJlY2VpcHRTd2lzc0ZyYW5jOigpPT5ZcSxSZWNlaXB0VGV4dDooKT0+S3EsUmVjZWlwdFR1cmtpc2hMaXJhOigpPT5YcSxSZWN0YW5nbGVDaXJjbGU6KCk9PlFxLFJlY3RhbmdsZUVsbGlwc2lzOigpPT5LNixSZWN0YW5nbGVHb2dnbGVzOigpPT5KcSxSZWN0YW5nbGVIb3Jpem9udGFsOigpPT5laixSZWN0YW5nbGVWZXJ0aWNhbDooKT0+dGosUmVjeWNsZTooKT0+YWosUmVkbzooKT0+cmosUmVkbzI6KCk9PnNqLFJlZG9Eb3Q6KCk9PmlqLFJlZnJlc2hDY3c6KCk9Pm5qLFJlZnJlc2hDY3dEb3Q6KCk9Pm9qLFJlZnJlc2hDdzooKT0+Y2osUmVmcmVzaEN3T2ZmOigpPT5saixSZWZyaWdlcmF0b3I6KCk9PmRqLFJlZ2V4OigpPT51aixSZW1vdmVGb3JtYXR0aW5nOigpPT5waixSZXBlYXQ6KCk9PmdqLFJlcGVhdDE6KCk9PmZqLFJlcGVhdDI6KCk9PmhqLFJlcGVhdE9mZjooKT0+bWosUmVwbGFjZTooKT0+dmosUmVwbGFjZUFsbDooKT0+YmosUmVwbHk6KCk9PnlqLFJlcGx5QWxsOigpPT54aixSZXdpbmQ6KCk9PmtqLFJpYmJvbjooKT0+d2osUm9hZDooKT0+U2osUm9ja2V0OigpPT5faixSb2NraW5nQ2hhaXI6KCk9Pk1qLFJvbGxlckNvYXN0ZXI6KCk9PnpqLFJvc2U6KCk9PkNqLFJvdGF0ZTNEOigpPT5ZNixSb3RhdGUzZDooKT0+WTYsUm90YXRlQ2N3OigpPT5EaixSb3RhdGVDY3dLZXk6KCk9PlRqLFJvdGF0ZUNjd1NxdWFyZTooKT0+JGosUm90YXRlQ3c6KCk9PkVqLFJvdGF0ZUN3U3F1YXJlOigpPT5MaixSb3V0ZTooKT0+SWosUm91dGVPZmY6KCk9PlBqLFJvdXRlcjooKT0+QWosUm93czooKT0+WjYsUm93czI6KCk9Plo2LFJvd3MzOigpPT5YNixSb3dzNDooKT0+TmosUnNzOigpPT5SaixSdWxlcjooKT0+RmosUnVsZXJEaW1lbnNpb25MaW5lOigpPT5PaixSdXNzaWFuUnVibGU6KCk9PkJqLFNhaWxib2F0OigpPT5IaixTYWxhZDooKT0+cWosU2FuZHdpY2g6KCk9PmpqLFNhdGVsbGl0ZTooKT0+VmosU2F0ZWxsaXRlRGlzaDooKT0+VWosU2F1ZGlSaXlhbDooKT0+V2osU2F2ZTooKT0+WWosU2F2ZUFsbDooKT0+S2osU2F2ZU9mZjooKT0+R2osU2NhbGU6KCk9PlpqLFNjYWxlM0Q6KCk9PlE2LFNjYWxlM2Q6KCk9PlE2LFNjYWxpbmc6KCk9PlFqLFNjYW46KCk9Pm9WLFNjYW5CYXJjb2RlOigpPT5YaixTY2FuRXllOigpPT5KaixTY2FuRmFjZTooKT0+ZVYsU2NhbkhlYXJ0OigpPT50VixTY2FuTGluZTooKT0+YVYsU2NhblFyQ29kZTooKT0+c1YsU2NhblNlYXJjaDooKT0+aVYsU2NhblRleHQ6KCk9PnJWLFNjYXR0ZXJDaGFydDooKT0+S2YsU2Nob29sOigpPT5uVixTY2hvb2wyOigpPT5mOCxTY2lzc29yczooKT0+Y1YsU2Npc3NvcnNMaW5lRGFzaGVkOigpPT5sVixTY2lzc29yc1NxdWFyZTooKT0+WjUsU2Npc3NvcnNTcXVhcmVEYXNoZWRCb3R0b206KCk9PnY1LFNjb290ZXI6KCk9PmRWLFNjcmVlblNoYXJlOigpPT5wVixTY3JlZW5TaGFyZU9mZjooKT0+dVYsU2Nyb2xsOigpPT5mVixTY3JvbGxUZXh0OigpPT5oVixTZWFyY2g6KCk9PnlWLFNlYXJjaEFsZXJ0OigpPT5tVixTZWFyY2hDaGVjazooKT0+Z1YsU2VhcmNoQ29kZTooKT0+YlYsU2VhcmNoU2xhc2g6KCk9PnZWLFNlYXJjaFg6KCk9PnhWLFNlY3Rpb246KCk9PndWLFNlbmQ6KCk9PlNWLFNlbmRIb3Jpem9uYWw6KCk9Pko2LFNlbmRIb3Jpem9udGFsOigpPT5KNixTZW5kVG9CYWNrOigpPT5rVixTZXBhcmF0b3JIb3Jpem9udGFsOigpPT5fVixTZXBhcmF0b3JWZXJ0aWNhbDooKT0+TVYsU2VydmVyOigpPT4kVixTZXJ2ZXJDb2c6KCk9PnpWLFNlcnZlckNyYXNoOigpPT5DVixTZXJ2ZXJPZmY6KCk9PlRWLFNldHRpbmdzOigpPT5FVixTZXR0aW5nczI6KCk9PkRWLFNoYXBlczooKT0+TFYsU2hhcmU6KCk9PklWLFNoYXJlMjooKT0+UFYsU2hlZXQ6KCk9Pk5WLFNoZWxsOigpPT5BVixTaGVsdmluZ1VuaXQ6KCk9PlJWLFNoaWVsZDooKT0+WVYsU2hpZWxkQWxlcnQ6KCk9Pk9WLFNoaWVsZEJhbjooKT0+RlYsU2hpZWxkQ2hlY2s6KCk9PkJWLFNoaWVsZENsb3NlOigpPT50NSxTaGllbGRDb2c6KCk9PmpWLFNoaWVsZENvZ0Nvcm5lcjooKT0+SFYsU2hpZWxkRWxsaXBzaXM6KCk9PnFWLFNoaWVsZEhhbGY6KCk9PlZWLFNoaWVsZE1pbnVzOigpPT5VVixTaGllbGRPZmY6KCk9PldWLFNoaWVsZFBsdXM6KCk9PkdWLFNoaWVsZFF1ZXN0aW9uOigpPT5lNSxTaGllbGRRdWVzdGlvbk1hcms6KCk9PmU1LFNoaWVsZFVzZXI6KCk9PktWLFNoaWVsZFg6KCk9PnQ1LFNoaXA6KCk9PlpWLFNoaXBXaGVlbDooKT0+WFYsU2hpcnQ6KCk9PlFWLFNob3BwaW5nQmFnOigpPT5KVixTaG9wcGluZ0Jhc2tldDooKT0+ZVUsU2hvcHBpbmdDYXJ0OigpPT50VSxTaG92ZWw6KCk9PmFVLFNob3dlckhlYWQ6KCk9PnNVLFNocmVkZGVyOigpPT5pVSxTaHJpbXA6KCk9Pm9VLFNocmluazooKT0+clUsU2hydWI6KCk9Pm5VLFNodWZmbGU6KCk9PmxVLFNpZGViYXI6KCk9Pkg2LFNpZGViYXJDbG9zZTooKT0+TzYsU2lkZWJhck9wZW46KCk9PkI2LFNpZ21hOigpPT5jVSxTaWdtYVNxdWFyZTooKT0+WTUsU2lnbmFsOigpPT5mVSxTaWduYWxIaWdoOigpPT5kVSxTaWduYWxMb3c6KCk9PnVVLFNpZ25hbE1lZGl1bTooKT0+cFUsU2lnbmFsWmVybzooKT0+aFUsU2lnbmF0dXJlOigpPT5tVSxTaWducG9zdDooKT0+YlUsU2lnbnBvc3RCaWc6KCk9PmdVLFNpcmVuOigpPT52VSxTa2lwQmFjazooKT0+eFUsU2tpcEZvcndhcmQ6KCk9PnlVLFNrdWxsOigpPT53VSxTbGFzaDooKT0+a1UsU2xhc2hTcXVhcmU6KCk9Plg1LFNsaWNlOigpPT5fVSxTbGlkZXJzOigpPT5hNSxTbGlkZXJzSG9yaXpvbnRhbDooKT0+U1UsU2xpZGVyc1ZlcnRpY2FsOigpPT5hNSxTbWFydHBob25lOigpPT5UVSxTbWFydHBob25lQ2hhcmdpbmc6KCk9Pk1VLFNtYXJ0cGhvbmVOZmM6KCk9PnpVLFNtaWxlOigpPT4kVSxTbWlsZVBsdXM6KCk9PkNVLFNuYWlsOigpPT5EVSxTbm93Zmxha2U6KCk9PkxVLFNvYXBEaXNwZW5zZXJEcm9wbGV0OigpPT5FVSxTb2ZhOigpPT5QVSxTb2xhclBhbmVsOigpPT5JVSxTb3J0QXNjOigpPT56ZixTb3J0RGVzYzooKT0+U2YsU291cDooKT0+QVUsU3BhY2U6KCk9Pk5VLFNwYWRlOigpPT5SVSxTcGFya2xlOigpPT5PVSxTcGFya2xlczooKT0+czUsU3BlYWtlcjooKT0+RlUsU3BlZWNoOigpPT5CVSxTcGVsbENoZWNrOigpPT5IVSxTcGVsbENoZWNrMjooKT0+cVUsU3BsaW5lOigpPT5WVSxTcGxpbmVQb2ludGVyOigpPT5qVSxTcGxpdDooKT0+VVUsU3BsaXRTcXVhcmVIb3Jpem9udGFsOigpPT5RNSxTcGxpdFNxdWFyZVZlcnRpY2FsOigpPT5KNSxTcG9vbDooKT0+V1UsU3BvcnRTaG9lOigpPT5HVSxTcG90bGlnaHQ6KCk9PlpVLFNwcmF5Q2FuOigpPT5LVSxTcHJvdXQ6KCk9PllVLFNxdWFyZTooKT0+Y1csU3F1YXJlQWN0aXZpdHk6KCk9Pmk1LFNxdWFyZUFycm93RG93bjooKT0+bjUsU3F1YXJlQXJyb3dEb3duTGVmdDooKT0+cjUsU3F1YXJlQXJyb3dEb3duUmlnaHQ6KCk9Pm81LFNxdWFyZUFycm93TGVmdDooKT0+bDUsU3F1YXJlQXJyb3dPdXREb3duTGVmdDooKT0+YzUsU3F1YXJlQXJyb3dPdXREb3duUmlnaHQ6KCk9PmQ1LFNxdWFyZUFycm93T3V0VXBMZWZ0OigpPT51NSxTcXVhcmVBcnJvd091dFVwUmlnaHQ6KCk9PnA1LFNxdWFyZUFycm93UmlnaHQ6KCk9Pmg1LFNxdWFyZUFycm93UmlnaHRFbnRlcjooKT0+WFUsU3F1YXJlQXJyb3dSaWdodEV4aXQ6KCk9PlFVLFNxdWFyZUFycm93VXA6KCk9Pmc1LFNxdWFyZUFycm93VXBMZWZ0OigpPT5mNSxTcXVhcmVBcnJvd1VwUmlnaHQ6KCk9Pm01LFNxdWFyZUFzdGVyaXNrOigpPT5iNSxTcXVhcmVCb3R0b21EYXNoZWRTY2lzc29yczooKT0+djUsU3F1YXJlQ2VudGVybGluZURhc2hlZEhvcml6b250YWw6KCk9Png1LFNxdWFyZUNlbnRlcmxpbmVEYXNoZWRWZXJ0aWNhbDooKT0+eTUsU3F1YXJlQ2hhcnRHYW50dDooKT0+WTAsU3F1YXJlQ2hlY2s6KCk9Pms1LFNxdWFyZUNoZWNrQmlnOigpPT53NSxTcXVhcmVDaGV2cm9uRG93bjooKT0+UzUsU3F1YXJlQ2hldnJvbkxlZnQ6KCk9Pl81LFNxdWFyZUNoZXZyb25SaWdodDooKT0+TTUsU3F1YXJlQ2hldnJvblVwOigpPT56NSxTcXVhcmVDb2RlOigpPT5DNSxTcXVhcmVEYXNoZWQ6KCk9PkQ1LFNxdWFyZURhc2hlZEJvdHRvbTooKT0+ZVcsU3F1YXJlRGFzaGVkQm90dG9tQ29kZTooKT0+SlUsU3F1YXJlRGFzaGVkS2FuYmFuOigpPT5UNSxTcXVhcmVEYXNoZWRNb3VzZVBvaW50ZXI6KCk9PiQ1LFNxdWFyZURhc2hlZFRleHQ6KCk9PlowLFNxdWFyZURhc2hlZFRvcFNvbGlkOigpPT50VyxTcXVhcmVEaXZpZGU6KCk9PkU1LFNxdWFyZURvdDooKT0+TDUsU3F1YXJlRXF1YWw6KCk9PlA1LFNxdWFyZUZ1bmN0aW9uOigpPT5JNSxTcXVhcmVHYW50dENoYXJ0OigpPT5ZMCxTcXVhcmVLYW5iYW46KCk9PlI1LFNxdWFyZUxpYnJhcnk6KCk9PkE1LFNxdWFyZU06KCk9Pk41LFNxdWFyZU1lbnU6KCk9Pk81LFNxdWFyZU1pbnVzOigpPT5GNSxTcXVhcmVNb3VzZVBvaW50ZXI6KCk9PkI1LFNxdWFyZVBhcmtpbmc6KCk9PnE1LFNxdWFyZVBhcmtpbmdPZmY6KCk9Pkg1LFNxdWFyZVBhdXNlOigpPT5hVyxTcXVhcmVQZW46KCk9PlYxLFNxdWFyZVBlcmNlbnQ6KCk9Pmo1LFNxdWFyZVBpOigpPT5WNSxTcXVhcmVQaWxjcm93OigpPT5VNSxTcXVhcmVQbGF5OigpPT5HNSxTcXVhcmVQbHVzOigpPT5XNSxTcXVhcmVQb3dlcjooKT0+SzUsU3F1YXJlUmFkaWNhbDooKT0+c1csU3F1YXJlUm91bmRDb3JuZXI6KCk9PmlXLFNxdWFyZVNjaXNzb3JzOigpPT5aNSxTcXVhcmVTaWdtYTooKT0+WTUsU3F1YXJlU2xhc2g6KCk9Plg1LFNxdWFyZVNwbGl0SG9yaXpvbnRhbDooKT0+UTUsU3F1YXJlU3BsaXRWZXJ0aWNhbDooKT0+SjUsU3F1YXJlU3F1YXJlOigpPT5yVyxTcXVhcmVTdGFjazooKT0+b1csU3F1YXJlU3RhcjooKT0+blcsU3F1YXJlU3RvcDooKT0+bFcsU3F1YXJlVGVybWluYWw6KCk9PmU4LFNxdWFyZVVzZXI6KCk9PnM4LFNxdWFyZVVzZXJSb3VuZDooKT0+dDgsU3F1YXJlWDooKT0+YTgsU3F1YXJlc0V4Y2x1ZGU6KCk9PmRXLFNxdWFyZXNJbnRlcnNlY3Q6KCk9PnVXLFNxdWFyZXNTdWJ0cmFjdDooKT0+cFcsU3F1YXJlc1VuaXRlOigpPT5oVyxTcXVpcmNsZTooKT0+bVcsU3F1aXJjbGVEYXNoZWQ6KCk9PmZXLFNxdWlycmVsOigpPT5nVyxTdGFtcDooKT0+YlcsU3RhcjooKT0+eVcsU3RhckhhbGY6KCk9PnZXLFN0YXJPZmY6KCk9PnhXLFN0YXJzOigpPT5zNSxTdGVwQmFjazooKT0+d1csU3RlcEZvcndhcmQ6KCk9PmtXLFN0ZXRob3Njb3BlOigpPT5fVyxTdGlja2VyOigpPT5TVyxTdGlja3lOb3RlOigpPT5NVyxTdG9uZTooKT0+VFcsU3RvcENpcmNsZTooKT0+d20sU3RvcmU6KCk9PnpXLFN0cmV0Y2hIb3Jpem9udGFsOigpPT5DVyxTdHJldGNoVmVydGljYWw6KCk9PiRXLFN0cmlrZXRocm91Z2g6KCk9PkRXLFN1YnNjcmlwdDooKT0+TFcsU3VidGl0bGVzOigpPT5BZixTdW46KCk9Pk5XLFN1bkRpbTooKT0+RVcsU3VuTWVkaXVtOigpPT5QVyxTdW5Nb29uOigpPT5JVyxTdW5Tbm93OigpPT5BVyxTdW5yaXNlOigpPT5SVyxTdW5zZXQ6KCk9Pk9XLFN1cGVyc2NyaXB0OigpPT5GVyxTd2F0Y2hCb29rOigpPT5CVyxTd2lzc0ZyYW5jOigpPT5IVyxTd2l0Y2hDYW1lcmE6KCk9PnFXLFN3b3JkOigpPT5qVyxTd29yZHM6KCk9PlZXLFN5cmluZ2U6KCk9PlVXLFRhYmxlOigpPT5lRyxUYWJsZTI6KCk9PldXLFRhYmxlQ2VsbHNNZXJnZTooKT0+R1csVGFibGVDZWxsc1NwbGl0OigpPT5LVyxUYWJsZUNvbHVtbnNTcGxpdDooKT0+WVcsVGFibGVDb25maWc6KCk9PlYwLFRhYmxlT2ZDb250ZW50czooKT0+WlcsVGFibGVQcm9wZXJ0aWVzOigpPT5YVyxUYWJsZVJvd3NTcGxpdDooKT0+UVcsVGFibGV0OigpPT50RyxUYWJsZXRTbWFydHBob25lOigpPT5KVyxUYWJsZXRzOigpPT5hRyxUYWc6KCk9PnNHLFRhZ3M6KCk9PmlHLFRhbGx5MTooKT0+ckcsVGFsbHkyOigpPT5vRyxUYWxseTM6KCk9Pm5HLFRhbGx5NDooKT0+bEcsVGFsbHk1OigpPT5kRyxUYW5nZW50OigpPT5jRyxUYXJnZXQ6KCk9PnVHLFRlbGVzY29wZTooKT0+cEcsVGVudDooKT0+ZkcsVGVudFRyZWU6KCk9PmhHLFRlcm1pbmFsOigpPT5tRyxUZXJtaW5hbFNxdWFyZTooKT0+ZTgsVGVzdFR1YmU6KCk9PmdHLFRlc3RUdWJlMjooKT0+aTgsVGVzdFR1YmVEaWFnb25hbDooKT0+aTgsVGVzdFR1YmVzOigpPT5iRyxUZXh0OigpPT5YMCxUZXh0QWxpZ25DZW50ZXI6KCk9PnI4LFRleHRBbGlnbkVuZDooKT0+bzgsVGV4dEFsaWduSnVzdGlmeTooKT0+bjgsVGV4dEFsaWduU3RhcnQ6KCk9PlgwLFRleHRDdXJzb3I6KCk9PnhHLFRleHRDdXJzb3JJbnB1dDooKT0+dkcsVGV4dEluaXRpYWw6KCk9Pmw4LFRleHRRdW90ZTooKT0+eUcsVGV4dFNlYXJjaDooKT0+d0csVGV4dFNlbGVjdDooKT0+WjAsVGV4dFNlbGVjdGlvbjooKT0+WjAsVGV4dFdyYXA6KCk9PmM4LFRoZWF0ZXI6KCk9PmtHLFRoZXJtb21ldGVyOigpPT5NRyxUaGVybW9tZXRlclNub3dmbGFrZTooKT0+U0csVGhlcm1vbWV0ZXJTdW46KCk9Pl9HLFRodW1ic0Rvd246KCk9PnpHLFRodW1ic1VwOigpPT5DRyxUaWNrZXQ6KCk9PklHLFRpY2tldENoZWNrOigpPT5URyxUaWNrZXRNaW51czooKT0+JEcsVGlja2V0UGVyY2VudDooKT0+REcsVGlja2V0UGx1czooKT0+TEcsVGlja2V0U2xhc2g6KCk9PkVHLFRpY2tldFg6KCk9PlBHLFRpY2tldHM6KCk9Pk5HLFRpY2tldHNQbGFuZTooKT0+QUcsVGltZWxpbmU6KCk9PlJHLFRpbWVyOigpPT5CRyxUaW1lck9mZjooKT0+T0csVGltZXJSZXNldDooKT0+RkcsVG9nZ2xlTGVmdDooKT0+cUcsVG9nZ2xlUmlnaHQ6KCk9PmpHLFRvaWxldDooKT0+SEcsVG9vbENhc2U6KCk9PlZHLFRvb2xib3g6KCk9PlVHLFRvcm5hZG86KCk9PktHLFRvcnVzOigpPT5XRyxUb3VjaHBhZDooKT0+WUcsVG91Y2hwYWRPZmY6KCk9PkdHLFRvd2VsUmFjazooKT0+WkcsVG93ZXJDb250cm9sOigpPT5YRyxUb3lCcmljazooKT0+UUcsVHJhY3RvcjooKT0+SkcsVHJhZmZpY0NvbmU6KCk9PmVLLFRyYWluOigpPT5kOCxUcmFpbkZyb250OigpPT5hSyxUcmFpbkZyb250VHVubmVsOigpPT50SyxUcmFpblRyYWNrOigpPT5zSyxUcmFtRnJvbnQ6KCk9PmQ4LFRyYW5zZ2VuZGVyOigpPT5pSyxUcmFzaDooKT0+b0ssVHJhc2gyOigpPT5ySyxUcmVlRGVjaWR1b3VzOigpPT5uSyxUcmVlUGFsbTooKT0+dTgsVHJlZVBpbmU6KCk9PmxLLFRyZWVzOigpPT5jSyxUcmVuZGluZ0Rvd246KCk9PmRLLFRyZW5kaW5nVXA6KCk9PnBLLFRyZW5kaW5nVXBEb3duOigpPT51SyxUcmlhbmdsZTooKT0+bUssVHJpYW5nbGVBbGVydDooKT0+cDgsVHJpYW5nbGVEYXNoZWQ6KCk9PmhLLFRyaWFuZ2xlUmlnaHQ6KCk9PmZLLFRyb3BoeTooKT0+Z0ssVHJ1Y2s6KCk9PnZLLFRydWNrRWxlY3RyaWM6KCk9PmJLLFR1cmtpc2hMaXJhOigpPT54SyxUdXJudGFibGU6KCk9PnlLLFR1cnRsZTooKT0+d0ssVHY6KCk9PlNLLFR2MjooKT0+aDgsVHZNaW5pbWFsOigpPT5oOCxUdk1pbmltYWxQbGF5OigpPT5rSyxUeXBlOigpPT5NSyxUeXBlT3V0bGluZTooKT0+X0ssVW1icmVsbGE6KCk9PkNLLFVtYnJlbGxhT2ZmOigpPT56SyxVbmRlcmxpbmU6KCk9PlRLLFVuZG86KCk9PkxLLFVuZG8yOigpPT4kSyxVbmRvRG90OigpPT5ESyxVbmZvbGRIb3Jpem9udGFsOigpPT5FSyxVbmZvbGRWZXJ0aWNhbDooKT0+UEssVW5ncm91cDooKT0+SUssVW5pdmVyc2l0eTooKT0+ZjgsVW5saW5rOigpPT5SSyxVbmxpbmsyOigpPT5BSyxVbmxvY2s6KCk9PkM2LFVubG9ja0tleWhvbGU6KCk9Pno2LFVucGx1ZzooKT0+TkssVXBsb2FkOigpPT5PSyxVcGxvYWRDbG91ZDooKT0+VG0sVXNiOigpPT5GSyxVc2VyOigpPT5KSyxVc2VyMjooKT0+eTgsVXNlckNoZWNrOigpPT5CSyxVc2VyQ2hlY2syOigpPT5tOCxVc2VyQ2lyY2xlOigpPT5TbSxVc2VyQ2lyY2xlMjooKT0+a20sVXNlckNvZzooKT0+SEssVXNlckNvZzI6KCk9Pmc4LFVzZXJLZXk6KCk9PnFLLFVzZXJMb2NrOigpPT5qSyxVc2VyTWludXM6KCk9PlZLLFVzZXJNaW51czI6KCk9PmI4LFVzZXJQZW46KCk9PlVLLFVzZXJQbHVzOigpPT5XSyxVc2VyUGx1czI6KCk9PnY4LFVzZXJSb3VuZDooKT0+eTgsVXNlclJvdW5kQ2hlY2s6KCk9Pm04LFVzZXJSb3VuZENvZzooKT0+ZzgsVXNlclJvdW5kS2V5OigpPT5HSyxVc2VyUm91bmRNaW51czooKT0+YjgsVXNlclJvdW5kUGVuOigpPT5LSyxVc2VyUm91bmRQbHVzOigpPT52OCxVc2VyUm91bmRTZWFyY2g6KCk9PllLLFVzZXJSb3VuZFg6KCk9Png4LFVzZXJTZWFyY2g6KCk9PlpLLFVzZXJTcXVhcmU6KCk9PnM4LFVzZXJTcXVhcmUyOigpPT50OCxVc2VyU3RhcjooKT0+WEssVXNlclg6KCk9PlFLLFVzZXJYMjooKT0+eDgsVXNlcnM6KCk9PmVZLFVzZXJzMjooKT0+dzgsVXNlcnNSb3VuZDooKT0+dzgsVXRlbnNpbHM6KCk9PlM4LFV0ZW5zaWxzQ3Jvc3NlZDooKT0+azgsVXRpbGl0eVBvbGU6KCk9PmFZLFZhbjooKT0+dFksVmFyaWFibGU6KCk9PnNZLFZhdWx0OigpPT5pWSxWZWN0b3JTcXVhcmU6KCk9PnJZLFZlZ2FuOigpPT5vWSxWZW5ldGlhbk1hc2s6KCk9Pm5ZLFZlbnVzOigpPT5jWSxWZW51c0FuZE1hcnM6KCk9PmxZLFZlcmlmaWVkOigpPT4kZixWaWJyYXRlOigpPT51WSxWaWJyYXRlT2ZmOigpPT5kWSxWaWRlbzooKT0+aFksVmlkZW9PZmY6KCk9PnBZLFZpZGVvdGFwZTooKT0+ZlksVmlldzooKT0+bVksVm9pY2VtYWlsOigpPT5iWSxWb2xsZXliYWxsOigpPT5nWSxWb2x1bWU6KCk9PmtZLFZvbHVtZTE6KCk9PnZZLFZvbHVtZTI6KCk9PnhZLFZvbHVtZU9mZjooKT0+eVksVm9sdW1lWDooKT0+d1ksVm90ZTooKT0+U1ksV2FsbGV0OigpPT5NWSxXYWxsZXQyOigpPT5fOCxXYWxsZXRDYXJkczooKT0+X1ksV2FsbGV0TWluaW1hbDooKT0+XzgsV2FsbHBhcGVyOigpPT56WSxXYW5kOigpPT5DWSxXYW5kMjooKT0+TTgsV2FuZFNwYXJrbGVzOigpPT5NOCxXYXJlaG91c2U6KCk9PlRZLFdhc2hpbmdNYWNoaW5lOigpPT5EWSxXYXRjaDooKT0+JFksV2F2ZXM6KCk9Pno4LFdhdmVzQXJyb3dEb3duOigpPT5MWSxXYXZlc0Fycm93VXA6KCk9PkVZLFdhdmVzSG9yaXpvbnRhbDooKT0+ejgsV2F2ZXNMYWRkZXI6KCk9PlBZLFdhdmVzVmVydGljYWw6KCk9PklZLFdheXBvaW50czooKT0+QVksV2ViY2FtOigpPT5OWSxXZWJob29rOigpPT5PWSxXZWJob29rT2ZmOigpPT5SWSxXZWlnaHQ6KCk9PkJZLFdlaWdodFRpbGRlOigpPT5GWSxXaGVhdDooKT0+cVksV2hlYXRPZmY6KCk9PkhZLFdob2xlV29yZDooKT0+alksV2lmaTooKT0+UVksV2lmaUNvZzooKT0+VlksV2lmaUhpZ2g6KCk9PlVZLFdpZmlMb3c6KCk9PldZLFdpZmlPZmY6KCk9PkdZLFdpZmlQZW46KCk9PktZLFdpZmlTeW5jOigpPT5ZWSxXaWZpWmVybzooKT0+WlksV2luZDooKT0+SlksV2luZEFycm93RG93bjooKT0+WFksV2luZTooKT0+c1osV2luZU9mZjooKT0+ZVosV29ya2Zsb3c6KCk9PmFaLFdvcm06KCk9PnRaLFdyYXBUZXh0OigpPT5jOCxXcmVuY2g6KCk9PmlaLFg6KCk9Pm9aLFhDaXJjbGU6KCk9Pl9tLFhMaW5lVG9wOigpPT5yWixYT2N0YWdvbjooKT0+QTYsWFNxdWFyZTooKT0+YTgsWmFwOigpPT5sWixaYXBPZmY6KCk9Pm5aLFpvZGlhY0FxdWFyaXVzOigpPT5jWixab2RpYWNBcmllczooKT0+ZFosWm9kaWFjQ2FuY2VyOigpPT51Wixab2RpYWNDYXByaWNvcm46KCk9PnBaLFpvZGlhY0dlbWluaTooKT0+aFosWm9kaWFjTGVvOigpPT5mWixab2RpYWNMaWJyYTooKT0+bVosWm9kaWFjT3BoaXVjaHVzOigpPT5nWixab2RpYWNQaXNjZXM6KCk9PmJaLFpvZGlhY1NhZ2l0dGFyaXVzOigpPT54Wixab2RpYWNTY29ycGlvOigpPT52Wixab2RpYWNUYXVydXM6KCk9PnlaLFpvZGlhY1ZpcmdvOigpPT53Wixab29tSW46KCk9PmtaLFpvb21PdXQ6KCk9PlNafSk7dmFyIEcyYT1nKCgpPT57VWtlKCk7V2tlKCk7R2tlKCk7S2tlKCk7WWtlKCk7WmtlKCk7WGtlKCk7UWtlKCk7SmtlKCk7ZVNlKCk7dFNlKCk7YVNlKCk7c1NlKCk7aVNlKCk7clNlKCk7b1NlKCk7blNlKCk7bFNlKCk7Y1NlKCk7ZFNlKCk7dVNlKCk7cFNlKCk7aFNlKCk7ZlNlKCk7bVNlKCk7Z1NlKCk7YlNlKCk7dlNlKCk7eFNlKCk7eVNlKCk7d1NlKCk7a1NlKCk7U1NlKCk7X1NlKCk7TVNlKCk7elNlKCk7Q1NlKCk7VFNlKCk7JFNlKCk7RFNlKCk7TFNlKCk7RVNlKCk7UFNlKCk7SVNlKCk7QVNlKCk7TlNlKCk7UlNlKCk7T1NlKCk7RlNlKCk7QlNlKCk7SFNlKCk7cVNlKCk7alNlKCk7VlNlKCk7VVNlKCk7V1NlKCk7R1NlKCk7S1NlKCk7WVNlKCk7WlNlKCk7WFNlKCk7UVNlKCk7SlNlKCk7ZV9lKCk7dF9lKCk7YV9lKCk7c19lKCk7aV9lKCk7cl9lKCk7b19lKCk7bl9lKCk7bF9lKCk7Y19lKCk7ZF9lKCk7dV9lKCk7cF9lKCk7aF9lKCk7Zl9lKCk7bV9lKCk7Z19lKCk7Yl9lKCk7dl9lKCk7eF9lKCk7eV9lKCk7d19lKCk7a19lKCk7U19lKCk7X19lKCk7TV9lKCk7el9lKCk7Q19lKCk7VF9lKCk7JF9lKCk7RF9lKCk7TF9lKCk7RV9lKCk7UF9lKCk7SV9lKCk7QV9lKCk7Tl9lKCk7Ul9lKCk7T19lKCk7Rl9lKCk7Ql9lKCk7SF9lKCk7cV9lKCk7al9lKCk7Vl9lKCk7VV9lKCk7V19lKCk7R19lKCk7S19lKCk7WV9lKCk7Wl9lKCk7WF9lKCk7UV9lKCk7Sl9lKCk7ZU1lKCk7dE1lKCk7YU1lKCk7c01lKCk7aU1lKCk7ck1lKCk7b01lKCk7bk1lKCk7bE1lKCk7Y01lKCk7ZE1lKCk7dU1lKCk7cE1lKCk7aE1lKCk7Zk1lKCk7bU1lKCk7Z01lKCk7Yk1lKCk7dk1lKCk7eE1lKCk7eU1lKCk7d01lKCk7a01lKCk7U01lKCk7X01lKCk7TU1lKCk7ek1lKCk7Q01lKCk7VE1lKCk7JE1lKCk7RE1lKCk7TE1lKCk7RU1lKCk7UE1lKCk7SU1lKCk7QU1lKCk7Tk1lKCk7Uk1lKCk7T01lKCk7Rk1lKCk7Qk1lKCk7SE1lKCk7cU1lKCk7ak1lKCk7Vk1lKCk7VU1lKCk7V01lKCk7R01lKCk7S01lKCk7WU1lKCk7Wk1lKCk7WE1lKCk7UU1lKCk7Sk1lKCk7ZXplKCk7dHplKCk7YXplKCk7c3plKCk7aXplKCk7cnplKCk7b3plKCk7bnplKCk7bHplKCk7Y3plKCk7ZHplKCk7dXplKCk7cHplKCk7aHplKCk7ZnplKCk7bXplKCk7Z3plKCk7YnplKCk7dnplKCk7eHplKCk7eXplKCk7d3plKCk7a3plKCk7U3plKCk7X3plKCk7TXplKCk7enplKCk7Q3plKCk7VHplKCk7JHplKCk7RHplKCk7THplKCk7RXplKCk7UHplKCk7SXplKCk7QXplKCk7TnplKCk7UnplKCk7T3plKCk7RnplKCk7QnplKCk7SHplKCk7cXplKCk7anplKCk7VnplKCk7VXplKCk7V3plKCk7R3plKCk7S3plKCk7WXplKCk7WnplKCk7WHplKCk7UXplKCk7SnplKCk7ZUNlKCk7dENlKCk7YUNlKCk7c0NlKCk7aUNlKCk7ckNlKCk7b0NlKCk7bkNlKCk7bENlKCk7Y0NlKCk7ZENlKCk7dUNlKCk7cENlKCk7aENlKCk7ZkNlKCk7bUNlKCk7Z0NlKCk7YkNlKCk7dkNlKCk7eENlKCk7eUNlKCk7d0NlKCk7a0NlKCk7U0NlKCk7X0NlKCk7TUNlKCk7ekNlKCk7Q0NlKCk7VENlKCk7JENlKCk7RENlKCk7TENlKCk7RUNlKCk7UENlKCk7SUNlKCk7QUNlKCk7TkNlKCk7UkNlKCk7T0NlKCk7RkNlKCk7QkNlKCk7SENlKCk7cUNlKCk7akNlKCk7VkNlKCk7VUNlKCk7V0NlKCk7R0NlKCk7S0NlKCk7WUNlKCk7WkNlKCk7WENlKCk7UUNlKCk7SkNlKCk7ZVRlKCk7dFRlKCk7YVRlKCk7c1RlKCk7aVRlKCk7clRlKCk7b1RlKCk7blRlKCk7bFRlKCk7Y1RlKCk7ZFRlKCk7dVRlKCk7cFRlKCk7aFRlKCk7ZlRlKCk7bVRlKCk7Z1RlKCk7YlRlKCk7dlRlKCk7eFRlKCk7eVRlKCk7d1RlKCk7a1RlKCk7U1RlKCk7X1RlKCk7TVRlKCk7elRlKCk7Q1RlKCk7VFRlKCk7JFRlKCk7RFRlKCk7TFRlKCk7RVRlKCk7UFRlKCk7SVRlKCk7QVRlKCk7TlRlKCk7UlRlKCk7T1RlKCk7RlRlKCk7QlRlKCk7SFRlKCk7cVRlKCk7alRlKCk7VlRlKCk7VVRlKCk7V1RlKCk7R1RlKCk7S1RlKCk7WVRlKCk7WlRlKCk7WFRlKCk7UVRlKCk7SlRlKCk7ZSRlKCk7dCRlKCk7YSRlKCk7cyRlKCk7aSRlKCk7ciRlKCk7byRlKCk7biRlKCk7bCRlKCk7YyRlKCk7ZCRlKCk7dSRlKCk7cCRlKCk7aCRlKCk7ZiRlKCk7bSRlKCk7ZyRlKCk7YiRlKCk7diRlKCk7eCRlKCk7eSRlKCk7dyRlKCk7ayRlKCk7UyRlKCk7XyRlKCk7TSRlKCk7eiRlKCk7QyRlKCk7VCRlKCk7JCRlKCk7RCRlKCk7TCRlKCk7RSRlKCk7UCRlKCk7SSRlKCk7QSRlKCk7TiRlKCk7UiRlKCk7TyRlKCk7RiRlKCk7QiRlKCk7SCRlKCk7cSRlKCk7aiRlKCk7ViRlKCk7VSRlKCk7VyRlKCk7RyRlKCk7SyRlKCk7WSRlKCk7WiRlKCk7WCRlKCk7USRlKCk7SiRlKCk7ZURlKCk7dERlKCk7YURlKCk7c0RlKCk7aURlKCk7ckRlKCk7b0RlKCk7bkRlKCk7bERlKCk7Y0RlKCk7ZERlKCk7dURlKCk7cERlKCk7aERlKCk7ZkRlKCk7bURlKCk7Z0RlKCk7YkRlKCk7dkRlKCk7eERlKCk7eURlKCk7d0RlKCk7a0RlKCk7U0RlKCk7X0RlKCk7TURlKCk7ekRlKCk7Q0RlKCk7VERlKCk7JERlKCk7RERlKCk7TERlKCk7RURlKCk7UERlKCk7SURlKCk7QURlKCk7TkRlKCk7UkRlKCk7T0RlKCk7RkRlKCk7QkRlKCk7SERlKCk7cURlKCk7akRlKCk7VkRlKCk7VURlKCk7V0RlKCk7R0RlKCk7S0RlKCk7WURlKCk7WkRlKCk7WERlKCk7UURlKCk7SkRlKCk7ZUxlKCk7dExlKCk7YUxlKCk7c0xlKCk7aUxlKCk7ckxlKCk7b0xlKCk7bkxlKCk7bExlKCk7Y0xlKCk7ZExlKCk7dUxlKCk7cExlKCk7aExlKCk7ZkxlKCk7bUxlKCk7Z0xlKCk7YkxlKCk7dkxlKCk7eExlKCk7eUxlKCk7d0xlKCk7a0xlKCk7U0xlKCk7X0xlKCk7TUxlKCk7ekxlKCk7Q0xlKCk7VExlKCk7JExlKCk7RExlKCk7TExlKCk7RUxlKCk7UExlKCk7SUxlKCk7QUxlKCk7TkxlKCk7UkxlKCk7T0xlKCk7RkxlKCk7QkxlKCk7SExlKCk7cUxlKCk7akxlKCk7VkxlKCk7VUxlKCk7V0xlKCk7R0xlKCk7S0xlKCk7WUxlKCk7WkxlKCk7WExlKCk7UUxlKCk7SkxlKCk7ZUVlKCk7dEVlKCk7YUVlKCk7c0VlKCk7aUVlKCk7ckVlKCk7b0VlKCk7bkVlKCk7bEVlKCk7Y0VlKCk7ZEVlKCk7dUVlKCk7cEVlKCk7aEVlKCk7ZkVlKCk7bUVlKCk7Z0VlKCk7YkVlKCk7dkVlKCk7eEVlKCk7eUVlKCk7d0VlKCk7a0VlKCk7U0VlKCk7X0VlKCk7TUVlKCk7ekVlKCk7Q0VlKCk7VEVlKCk7JEVlKCk7REVlKCk7TEVlKCk7RUVlKCk7UEVlKCk7SUVlKCk7QUVlKCk7TkVlKCk7UkVlKCk7T0VlKCk7RkVlKCk7QkVlKCk7SEVlKCk7cUVlKCk7akVlKCk7VkVlKCk7VUVlKCk7V0VlKCk7R0VlKCk7S0VlKCk7WUVlKCk7WkVlKCk7WEVlKCk7UUVlKCk7SkVlKCk7ZVBlKCk7dFBlKCk7YVBlKCk7c1BlKCk7aVBlKCk7clBlKCk7b1BlKCk7blBlKCk7bFBlKCk7Y1BlKCk7ZFBlKCk7dVBlKCk7cFBlKCk7aFBlKCk7ZlBlKCk7bVBlKCk7Z1BlKCk7YlBlKCk7dlBlKCk7eFBlKCk7eVBlKCk7d1BlKCk7a1BlKCk7U1BlKCk7X1BlKCk7TVBlKCk7elBlKCk7Q1BlKCk7VFBlKCk7JFBlKCk7RFBlKCk7TFBlKCk7RVBlKCk7UFBlKCk7SVBlKCk7QVBlKCk7TlBlKCk7UlBlKCk7T1BlKCk7RlBlKCk7QlBlKCk7SFBlKCk7cVBlKCk7alBlKCk7VlBlKCk7VVBlKCk7V1BlKCk7R1BlKCk7S1BlKCk7WVBlKCk7WlBlKCk7WFBlKCk7UVBlKCk7SlBlKCk7ZUllKCk7dEllKCk7YUllKCk7c0llKCk7aUllKCk7ckllKCk7b0llKCk7bkllKCk7bEllKCk7Y0llKCk7ZEllKCk7dUllKCk7cEllKCk7aEllKCk7ZkllKCk7bUllKCk7Z0llKCk7YkllKCk7dkllKCk7eEllKCk7eUllKCk7d0llKCk7a0llKCk7U0llKCk7X0llKCk7TUllKCk7ekllKCk7Q0llKCk7VEllKCk7JEllKCk7REllKCk7TEllKCk7RUllKCk7UEllKCk7SUllKCk7QUllKCk7TkllKCk7UkllKCk7T0llKCk7RkllKCk7QkllKCk7SEllKCk7cUllKCk7akllKCk7VkllKCk7VUllKCk7V0llKCk7R0llKCk7S0llKCk7WUllKCk7WkllKCk7WEllKCk7UUllKCk7SkllKCk7ZUFlKCk7dEFlKCk7YUFlKCk7c0FlKCk7aUFlKCk7ckFlKCk7b0FlKCk7bkFlKCk7bEFlKCk7Y0FlKCk7ZEFlKCk7dUFlKCk7cEFlKCk7aEFlKCk7ZkFlKCk7bUFlKCk7Z0FlKCk7YkFlKCk7dkFlKCk7eEFlKCk7eUFlKCk7d0FlKCk7a0FlKCk7U0FlKCk7X0FlKCk7TUFlKCk7ekFlKCk7Q0FlKCk7VEFlKCk7JEFlKCk7REFlKCk7TEFlKCk7RUFlKCk7UEFlKCk7SUFlKCk7QUFlKCk7TkFlKCk7UkFlKCk7T0FlKCk7RkFlKCk7QkFlKCk7SEFlKCk7cUFlKCk7akFlKCk7VkFlKCk7VUFlKCk7V0FlKCk7R0FlKCk7S0FlKCk7WUFlKCk7WkFlKCk7WEFlKCk7UUFlKCk7SkFlKCk7ZU5lKCk7dE5lKCk7YU5lKCk7c05lKCk7aU5lKCk7ck5lKCk7b05lKCk7bk5lKCk7bE5lKCk7Y05lKCk7ZE5lKCk7dU5lKCk7cE5lKCk7aE5lKCk7Zk5lKCk7bU5lKCk7Z05lKCk7Yk5lKCk7dk5lKCk7eE5lKCk7eU5lKCk7d05lKCk7a05lKCk7U05lKCk7X05lKCk7TU5lKCk7ek5lKCk7Q05lKCk7VE5lKCk7JE5lKCk7RE5lKCk7TE5lKCk7RU5lKCk7UE5lKCk7SU5lKCk7QU5lKCk7Tk5lKCk7Uk5lKCk7T05lKCk7Rk5lKCk7Qk5lKCk7SE5lKCk7cU5lKCk7ak5lKCk7Vk5lKCk7VU5lKCk7V05lKCk7R05lKCk7S05lKCk7WU5lKCk7Wk5lKCk7WE5lKCk7UU5lKCk7Sk5lKCk7ZVJlKCk7dFJlKCk7YVJlKCk7c1JlKCk7aVJlKCk7clJlKCk7b1JlKCk7blJlKCk7bFJlKCk7Y1JlKCk7ZFJlKCk7dVJlKCk7cFJlKCk7aFJlKCk7ZlJlKCk7bVJlKCk7Z1JlKCk7YlJlKCk7dlJlKCk7eFJlKCk7eVJlKCk7d1JlKCk7a1JlKCk7U1JlKCk7X1JlKCk7TVJlKCk7elJlKCk7Q1JlKCk7VFJlKCk7JFJlKCk7RFJlKCk7TFJlKCk7RVJlKCk7UFJlKCk7SVJlKCk7QVJlKCk7TlJlKCk7UlJlKCk7T1JlKCk7RlJlKCk7QlJlKCk7SFJlKCk7cVJlKCk7alJlKCk7VlJlKCk7VVJlKCk7V1JlKCk7R1JlKCk7S1JlKCk7WVJlKCk7WlJlKCk7WFJlKCk7UVJlKCk7SlJlKCk7ZU9lKCk7dE9lKCk7YU9lKCk7c09lKCk7aU9lKCk7ck9lKCk7b09lKCk7bk9lKCk7bE9lKCk7Y09lKCk7ZE9lKCk7dU9lKCk7cE9lKCk7aE9lKCk7Zk9lKCk7bU9lKCk7Z09lKCk7Yk9lKCk7dk9lKCk7eE9lKCk7eU9lKCk7d09lKCk7a09lKCk7U09lKCk7X09lKCk7TU9lKCk7ek9lKCk7Q09lKCk7VE9lKCk7JE9lKCk7RE9lKCk7TE9lKCk7RU9lKCk7UE9lKCk7SU9lKCk7QU9lKCk7Tk9lKCk7Uk9lKCk7T09lKCk7Rk9lKCk7Qk9lKCk7SE9lKCk7cU9lKCk7ak9lKCk7Vk9lKCk7VU9lKCk7V09lKCk7R09lKCk7S09lKCk7WU9lKCk7Wk9lKCk7WE9lKCk7UU9lKCk7Sk9lKCk7ZUZlKCk7dEZlKCk7YUZlKCk7c0ZlKCk7aUZlKCk7ckZlKCk7b0ZlKCk7bkZlKCk7bEZlKCk7Y0ZlKCk7ZEZlKCk7dUZlKCk7cEZlKCk7aEZlKCk7ZkZlKCk7bUZlKCk7Z0ZlKCk7YkZlKCk7dkZlKCk7eEZlKCk7eUZlKCk7d0ZlKCk7a0ZlKCk7U0ZlKCk7X0ZlKCk7TUZlKCk7ekZlKCk7Q0ZlKCk7VEZlKCk7JEZlKCk7REZlKCk7TEZlKCk7RUZlKCk7UEZlKCk7SUZlKCk7QUZlKCk7TkZlKCk7UkZlKCk7T0ZlKCk7RkZlKCk7QkZlKCk7SEZlKCk7cUZlKCk7akZlKCk7VkZlKCk7VUZlKCk7V0ZlKCk7R0ZlKCk7S0ZlKCk7WUZlKCk7WkZlKCk7WEZlKCk7UUZlKCk7SkZlKCk7ZUJlKCk7dEJlKCk7YUJlKCk7c0JlKCk7aUJlKCk7ckJlKCk7b0JlKCk7bkJlKCk7bEJlKCk7Y0JlKCk7ZEJlKCk7dUJlKCk7cEJlKCk7aEJlKCk7ZkJlKCk7bUJlKCk7Z0JlKCk7YkJlKCk7dkJlKCk7eEJlKCk7eUJlKCk7d0JlKCk7a0JlKCk7U0JlKCk7X0JlKCk7TUJlKCk7ekJlKCk7Q0JlKCk7VEJlKCk7JEJlKCk7REJlKCk7TEJlKCk7RUJlKCk7UEJlKCk7SUJlKCk7QUJlKCk7TkJlKCk7UkJlKCk7T0JlKCk7RkJlKCk7QkJlKCk7SEJlKCk7cUJlKCk7akJlKCk7VkJlKCk7VUJlKCk7V0JlKCk7R0JlKCk7S0JlKCk7WUJlKCk7WkJlKCk7WEJlKCk7UUJlKCk7SkJlKCk7ZUhlKCk7dEhlKCk7YUhlKCk7c0hlKCk7aUhlKCk7ckhlKCk7b0hlKCk7bkhlKCk7bEhlKCk7Y0hlKCk7ZEhlKCk7dUhlKCk7cEhlKCk7aEhlKCk7ZkhlKCk7bUhlKCk7Z0hlKCk7YkhlKCk7dkhlKCk7eEhlKCk7eUhlKCk7d0hlKCk7a0hlKCk7U0hlKCk7X0hlKCk7TUhlKCk7ekhlKCk7Q0hlKCk7VEhlKCk7JEhlKCk7REhlKCk7TEhlKCk7RUhlKCk7UEhlKCk7SUhlKCk7QUhlKCk7TkhlKCk7UkhlKCk7T0hlKCk7RkhlKCk7QkhlKCk7SEhlKCk7cUhlKCk7akhlKCk7VkhlKCk7VUhlKCk7V0hlKCk7R0hlKCk7S0hlKCk7WUhlKCk7WkhlKCk7WEhlKCk7UUhlKCk7SkhlKCk7ZXFlKCk7dHFlKCk7YXFlKCk7c3FlKCk7aXFlKCk7cnFlKCk7b3FlKCk7bnFlKCk7bHFlKCk7Y3FlKCk7ZHFlKCk7dXFlKCk7cHFlKCk7aHFlKCk7ZnFlKCk7bXFlKCk7Z3FlKCk7YnFlKCk7dnFlKCk7eHFlKCk7eXFlKCk7d3FlKCk7a3FlKCk7U3FlKCk7X3FlKCk7TXFlKCk7enFlKCk7Q3FlKCk7VHFlKCk7JHFlKCk7RHFlKCk7THFlKCk7RXFlKCk7UHFlKCk7SXFlKCk7QXFlKCk7TnFlKCk7UnFlKCk7T3FlKCk7RnFlKCk7QnFlKCk7SHFlKCk7cXFlKCk7anFlKCk7VnFlKCk7VXFlKCk7V3FlKCk7R3FlKCk7S3FlKCk7WXFlKCk7WnFlKCk7WHFlKCk7UXFlKCk7SnFlKCk7ZWplKCk7dGplKCk7YWplKCk7c2plKCk7aWplKCk7cmplKCk7b2plKCk7bmplKCk7bGplKCk7Y2plKCk7ZGplKCk7dWplKCk7cGplKCk7aGplKCk7ZmplKCk7bWplKCk7Z2plKCk7YmplKCk7dmplKCk7eGplKCk7eWplKCk7d2plKCk7a2plKCk7U2plKCk7X2plKCk7TWplKCk7emplKCk7Q2plKCk7VGplKCk7JGplKCk7RGplKCk7TGplKCk7RWplKCk7UGplKCk7SWplKCk7QWplKCk7TmplKCk7UmplKCk7T2plKCk7RmplKCk7QmplKCk7SGplKCk7cWplKCk7amplKCk7VmplKCk7VWplKCk7V2plKCk7R2plKCk7S2plKCk7WWplKCk7WmplKCk7WGplKCk7UWplKCk7SmplKCk7ZVZlKCk7dFZlKCk7YVZlKCk7c1ZlKCk7aVZlKCk7clZlKCk7b1ZlKCk7blZlKCk7bFZlKCk7Y1ZlKCk7ZFZlKCk7dVZlKCk7cFZlKCk7aFZlKCk7ZlZlKCk7bVZlKCk7Z1ZlKCk7YlZlKCk7dlZlKCk7eFZlKCk7eVZlKCk7d1ZlKCk7a1ZlKCk7U1ZlKCk7X1ZlKCk7TVZlKCk7elZlKCk7Q1ZlKCk7VFZlKCk7JFZlKCk7RFZlKCk7TFZlKCk7RVZlKCk7UFZlKCk7SVZlKCk7QVZlKCk7TlZlKCk7UlZlKCk7T1ZlKCk7RlZlKCk7QlZlKCk7SFZlKCk7cVZlKCk7alZlKCk7VlZlKCk7VVZlKCk7V1ZlKCk7R1ZlKCk7S1ZlKCk7WVZlKCk7WlZlKCk7WFZlKCk7UVZlKCk7SlZlKCk7ZVVlKCk7dFVlKCk7YVVlKCk7c1VlKCk7aVVlKCk7clVlKCk7b1VlKCk7blVlKCk7bFVlKCk7Y1VlKCk7ZFVlKCk7dVVlKCk7cFVlKCk7aFVlKCk7ZlVlKCk7bVVlKCk7Z1VlKCk7YlVlKCk7dlVlKCk7eFVlKCk7eVVlKCk7d1VlKCk7a1VlKCk7U1VlKCk7X1VlKCk7TVVlKCk7elVlKCk7Q1VlKCk7VFVlKCk7JFVlKCk7RFVlKCk7TFVlKCk7RVVlKCk7UFVlKCk7SVVlKCk7QVVlKCk7TlVlKCk7UlVlKCk7T1VlKCk7RlVlKCk7QlVlKCk7SFVlKCk7cVVlKCk7alVlKCk7VlVlKCk7VVVlKCk7V1VlKCk7R1VlKCk7S1VlKCk7WVVlKCk7WlVlKCk7WFVlKCk7UVVlKCk7SlVlKCk7ZVdlKCk7dFdlKCk7YVdlKCk7c1dlKCk7aVdlKCk7cldlKCk7b1dlKCk7bldlKCk7bFdlKCk7Y1dlKCk7ZFdlKCk7dVdlKCk7cFdlKCk7aFdlKCk7ZldlKCk7bVdlKCk7Z1dlKCk7YldlKCk7dldlKCk7eFdlKCk7eVdlKCk7d1dlKCk7a1dlKCk7U1dlKCk7X1dlKCk7TVdlKCk7eldlKCk7Q1dlKCk7VFdlKCk7JFdlKCk7RFdlKCk7TFdlKCk7RVdlKCk7UFdlKCk7SVdlKCk7QVdlKCk7TldlKCk7UldlKCk7T1dlKCk7RldlKCk7QldlKCk7SFdlKCk7cVdlKCk7aldlKCk7VldlKCk7VVdlKCk7V1dlKCk7R1dlKCk7S1dlKCk7WVdlKCk7WldlKCk7WFdlKCk7UVdlKCk7SldlKCk7ZUdlKCk7dEdlKCk7YUdlKCk7c0dlKCk7aUdlKCk7ckdlKCk7b0dlKCk7bkdlKCk7bEdlKCk7Y0dlKCk7ZEdlKCk7dUdlKCk7cEdlKCk7aEdlKCk7ZkdlKCk7bUdlKCk7Z0dlKCk7YkdlKCk7dkdlKCk7eEdlKCk7eUdlKCk7d0dlKCk7a0dlKCk7U0dlKCk7X0dlKCk7TUdlKCk7ekdlKCk7Q0dlKCk7VEdlKCk7JEdlKCk7REdlKCk7TEdlKCk7RUdlKCk7UEdlKCk7SUdlKCk7QUdlKCk7TkdlKCk7UkdlKCk7T0dlKCk7RkdlKCk7QkdlKCk7SEdlKCk7cUdlKCk7akdlKCk7VkdlKCk7VUdlKCk7V0dlKCk7R0dlKCk7S0dlKCk7WUdlKCk7WkdlKCk7WEdlKCk7UUdlKCk7SkdlKCk7ZUtlKCk7dEtlKCk7YUtlKCk7c0tlKCk7aUtlKCk7cktlKCk7b0tlKCk7bktlKCk7bEtlKCk7Y0tlKCk7ZEtlKCk7dUtlKCk7cEtlKCk7aEtlKCk7ZktlKCk7bUtlKCk7Z0tlKCk7YktlKCk7dktlKCk7eEtlKCk7eUtlKCk7d0tlKCk7a0tlKCk7U0tlKCk7X0tlKCk7TUtlKCk7ektlKCk7Q0tlKCk7VEtlKCk7JEtlKCk7REtlKCk7TEtlKCk7RUtlKCk7UEtlKCk7SUtlKCk7QUtlKCk7TktlKCk7UktlKCk7T0tlKCk7RktlKCk7QktlKCk7SEtlKCk7cUtlKCk7aktlKCk7VktlKCk7VUtlKCk7V0tlKCk7R0tlKCk7S0tlKCk7WUtlKCk7WktlKCk7WEtlKCk7UUtlKCk7SktlKCk7ZVllKCk7dFllKCk7YVllKCk7c1llKCk7aVllKCk7clllKCk7b1llKCk7blllKCk7bFllKCk7Y1llKCk7ZFllKCk7dVllKCk7cFllKCk7aFllKCk7ZlllKCk7bVllKCk7Z1llKCk7YlllKCk7dlllKCk7eFllKCk7eVllKCk7d1llKCk7a1llKCk7U1llKCk7X1llKCk7TVllKCk7elllKCk7Q1llKCk7VFllKCk7JFllKCk7RFllKCk7TFllKCk7RVllKCk7UFllKCk7SVllKCk7QVllKCk7TlllKCk7UlllKCk7T1llKCk7RlllKCk7QlllKCk7SFllKCk7cVllKCk7alllKCk7VlllKCk7VVllKCk7V1llKCk7R1llKCk7S1llKCk7WVllKCk7WlllKCk7WFllKCk7UVllKCk7SlllKCk7ZVplKCk7dFplKCk7YVplKCk7c1plKCk7aVplKCk7clplKCk7b1plKCk7blplKCk7bFplKCk7Y1plKCk7ZFplKCk7dVplKCk7cFplKCk7aFplKCk7ZlplKCk7bVplKCk7Z1plKCk7YlplKCk7dlplKCk7eFplKCk7eVplKCk7d1plKCk7a1plKCk7U1plKCk7X1plKCk7TVplKCk7elplKCk7Q1plKCk7VFplKCk7JFplKCk7RFplKCk7TFplKCk7RVplKCk7UFplKCk7SVplKCk7QVplKCk7TlplKCk7UlplKCk7T1plKCk7RlplKCk7QlplKCk7SFplKCk7cVplKCk7alplKCk7VlplKCk7VVplKCk7V1plKCk7R1plKCk7S1plKCk7WVplKCk7WlplKCk7WFplKCk7UVplKCk7SlplKCk7ZVhlKCk7dFhlKCk7YVhlKCk7c1hlKCk7aVhlKCk7clhlKCk7b1hlKCk7blhlKCk7bFhlKCk7Y1hlKCk7ZFhlKCk7dVhlKCk7cFhlKCk7aFhlKCk7ZlhlKCk7bVhlKCk7Z1hlKCk7YlhlKCk7dlhlKCk7eFhlKCk7eVhlKCk7d1hlKCk7a1hlKCk7U1hlKCk7X1hlKCk7TVhlKCk7elhlKCk7Q1hlKCk7VFhlKCk7JFhlKCk7RFhlKCk7TFhlKCk7RVhlKCk7UFhlKCk7SVhlKCk7QVhlKCk7TlhlKCk7UlhlKCk7T1hlKCk7RlhlKCk7QlhlKCk7SFhlKCk7cVhlKCk7alhlKCk7VlhlKCk7VVhlKCk7V1hlKCk7R1hlKCk7S1hlKCk7WVhlKCk7WlhlKCk7WFhlKCk7UVhlKCk7SlhlKCk7ZVFlKCk7dFFlKCk7YVFlKCk7c1FlKCk7aVFlKCk7clFlKCk7b1FlKCk7blFlKCk7bFFlKCk7Y1FlKCk7ZFFlKCk7dVFlKCk7cFFlKCk7aFFlKCk7ZlFlKCk7bVFlKCk7Z1FlKCk7YlFlKCk7dlFlKCk7eFFlKCk7eVFlKCk7d1FlKCk7a1FlKCk7U1FlKCk7X1FlKCk7TVFlKCk7elFlKCk7Q1FlKCk7VFFlKCk7JFFlKCk7RFFlKCk7TFFlKCk7RVFlKCk7UFFlKCk7SVFlKCk7QVFlKCk7TlFlKCk7UlFlKCk7T1FlKCk7RlFlKCk7QlFlKCk7SFFlKCk7cVFlKCk7alFlKCk7VlFlKCk7VVFlKCk7V1FlKCk7R1FlKCk7S1FlKCk7WVFlKCk7WlFlKCk7WFFlKCk7UVFlKCk7SlFlKCk7ZUplKCk7dEplKCk7YUplKCk7c0plKCk7aUplKCk7ckplKCk7b0plKCk7bkplKCk7bEplKCk7Y0plKCk7ZEplKCk7dUplKCk7cEplKCk7aEplKCk7ZkplKCk7bUplKCk7Z0plKCk7YkplKCk7dkplKCk7eEplKCk7eUplKCk7d0plKCk7a0plKCk7U0plKCk7X0plKCk7TUplKCk7ekplKCk7Q0plKCk7VEplKCk7JEplKCk7REplKCk7TEplKCk7RUplKCk7UEplKCk7SUplKCk7QUplKCk7TkplKCk7UkplKCk7T0plKCk7RkplKCk7QkplKCk7SEplKCk7cUplKCk7akplKCk7VkplKCk7VUplKCk7V0plKCk7R0plKCk7S0plKCk7WUplKCk7WkplKCk7WEplKCk7UUplKCk7SkplKCk7ZWV0KCk7dGV0KCk7YWV0KCk7c2V0KCk7aWV0KCk7cmV0KCk7b2V0KCk7bmV0KCk7Y2V0KCk7ZGV0KCk7dWV0KCk7cGV0KCk7aGV0KCk7ZmV0KCk7bWV0KCk7Z2V0KCk7YmV0KCk7dmV0KCk7eGV0KCk7eWV0KCk7fSk7dmFyIEdyPXt9O3l0KEdyLHtBQXJyb3dEb3duOigpPT5oUyxBQXJyb3dVcDooKT0+ZlMsQUxhcmdlU21hbGw6KCk9Pm1TLEFjY2Vzc2liaWxpdHk6KCk9PmdTLEFjdGl2aXR5OigpPT5iUyxBY3Rpdml0eVNxdWFyZTooKT0+aTUsQWlyVmVudDooKT0+dlMsQWlycGxheTooKT0+eFMsQWxhcm1DaGVjazooKT0+eGYsQWxhcm1DbG9jazooKT0+d1MsQWxhcm1DbG9ja0NoZWNrOigpPT54ZixBbGFybUNsb2NrTWludXM6KCk9PnlmLEFsYXJtQ2xvY2tPZmY6KCk9PnlTLEFsYXJtQ2xvY2tQbHVzOigpPT53ZixBbGFybU1pbnVzOigpPT55ZixBbGFybVBsdXM6KCk9PndmLEFsYXJtU21va2U6KCk9PmtTLEFsYnVtOigpPT5TUyxBbGVydENpcmNsZTooKT0+WWYsQWxlcnRPY3RhZ29uOigpPT5QNixBbGVydFRyaWFuZ2xlOigpPT5wOCxBbGlnbkNlbnRlcjooKT0+cjgsQWxpZ25DZW50ZXJIb3Jpem9udGFsOigpPT5fUyxBbGlnbkNlbnRlclZlcnRpY2FsOigpPT5NUyxBbGlnbkVuZEhvcml6b250YWw6KCk9PnpTLEFsaWduRW5kVmVydGljYWw6KCk9PlRTLEFsaWduSG9yaXpvbnRhbERpc3RyaWJ1dGVDZW50ZXI6KCk9PkNTLEFsaWduSG9yaXpvbnRhbERpc3RyaWJ1dGVFbmQ6KCk9PiRTLEFsaWduSG9yaXpvbnRhbERpc3RyaWJ1dGVTdGFydDooKT0+RFMsQWxpZ25Ib3Jpem9udGFsSnVzdGlmeUNlbnRlcjooKT0+TFMsQWxpZ25Ib3Jpem9udGFsSnVzdGlmeUVuZDooKT0+RVMsQWxpZ25Ib3Jpem9udGFsSnVzdGlmeVN0YXJ0OigpPT5QUyxBbGlnbkhvcml6b250YWxTcGFjZUFyb3VuZDooKT0+SVMsQWxpZ25Ib3Jpem9udGFsU3BhY2VCZXR3ZWVuOigpPT5SUyxBbGlnbkp1c3RpZnk6KCk9Pm44LEFsaWduTGVmdDooKT0+WDAsQWxpZ25SaWdodDooKT0+bzgsQWxpZ25TdGFydEhvcml6b250YWw6KCk9PkFTLEFsaWduU3RhcnRWZXJ0aWNhbDooKT0+TlMsQWxpZ25WZXJ0aWNhbERpc3RyaWJ1dGVDZW50ZXI6KCk9Pk9TLEFsaWduVmVydGljYWxEaXN0cmlidXRlRW5kOigpPT5GUyxBbGlnblZlcnRpY2FsRGlzdHJpYnV0ZVN0YXJ0OigpPT5CUyxBbGlnblZlcnRpY2FsSnVzdGlmeUNlbnRlcjooKT0+SFMsQWxpZ25WZXJ0aWNhbEp1c3RpZnlFbmQ6KCk9PnFTLEFsaWduVmVydGljYWxKdXN0aWZ5U3RhcnQ6KCk9PmpTLEFsaWduVmVydGljYWxTcGFjZUFyb3VuZDooKT0+VlMsQWxpZ25WZXJ0aWNhbFNwYWNlQmV0d2VlbjooKT0+VVMsQW1idWxhbmNlOigpPT5XUyxBbXBlcnNhbmQ6KCk9PktTLEFtcGVyc2FuZHM6KCk9PkdTLEFtcGhvcmE6KCk9PllTLEFuY2hvcjooKT0+WlMsQW5ncnk6KCk9PlhTLEFubm95ZWQ6KCk9PlFTLEFudGVubmE6KCk9PkpTLEFudmlsOigpPT5lXyxBcGVydHVyZTooKT0+dF8sQXBwV2luZG93OigpPT5zXyxBcHBXaW5kb3dNYWM6KCk9PmFfLEFwcGxlOigpPT5yXyxBcmNoaXZlOigpPT5sXyxBcmNoaXZlUmVzdG9yZTooKT0+aV8sQXJjaGl2ZVg6KCk9Pm9fLEFyZWFDaGFydDooKT0+TmYsQXJtY2hhaXI6KCk9Pm5fLEFycm93QmlnRG93bjooKT0+ZF8sQXJyb3dCaWdEb3duRGFzaDooKT0+Y18sQXJyb3dCaWdMZWZ0OigpPT51XyxBcnJvd0JpZ0xlZnREYXNoOigpPT5wXyxBcnJvd0JpZ1JpZ2h0OigpPT5mXyxBcnJvd0JpZ1JpZ2h0RGFzaDooKT0+aF8sQXJyb3dCaWdVcDooKT0+Z18sQXJyb3dCaWdVcERhc2g6KCk9Pm1fLEFycm93RG93bjooKT0+el8sQXJyb3dEb3duMDE6KCk9PmJfLEFycm93RG93bjEwOigpPT52XyxBcnJvd0Rvd25BWjooKT0+a2YsQXJyb3dEb3duQXo6KCk9PmtmLEFycm93RG93bkNpcmNsZTooKT0+WmYsQXJyb3dEb3duRnJvbUxpbmU6KCk9PnhfLEFycm93RG93bkxlZnQ6KCk9PnlfLEFycm93RG93bkxlZnRGcm9tQ2lyY2xlOigpPT5RZixBcnJvd0Rvd25MZWZ0RnJvbVNxdWFyZTooKT0+YzUsQXJyb3dEb3duTGVmdFNxdWFyZTooKT0+cjUsQXJyb3dEb3duTmFycm93V2lkZTooKT0+d18sQXJyb3dEb3duUmlnaHQ6KCk9PmtfLEFycm93RG93blJpZ2h0RnJvbUNpcmNsZTooKT0+SmYsQXJyb3dEb3duUmlnaHRGcm9tU3F1YXJlOigpPT5kNSxBcnJvd0Rvd25SaWdodFNxdWFyZTooKT0+bzUsQXJyb3dEb3duU3F1YXJlOigpPT5uNSxBcnJvd0Rvd25Ub0RvdDooKT0+U18sQXJyb3dEb3duVG9MaW5lOigpPT5NXyxBcnJvd0Rvd25VcDooKT0+X18sQXJyb3dEb3duV2lkZU5hcnJvdzooKT0+U2YsQXJyb3dEb3duWkE6KCk9Pl9mLEFycm93RG93blphOigpPT5fZixBcnJvd0xlZnQ6KCk9PkxfLEFycm93TGVmdENpcmNsZTooKT0+WGYsQXJyb3dMZWZ0RnJvbUxpbmU6KCk9PkNfLEFycm93TGVmdFJpZ2h0OigpPT5UXyxBcnJvd0xlZnRTcXVhcmU6KCk9Pmw1LEFycm93TGVmdFRvTGluZTooKT0+JF8sQXJyb3dSaWdodDooKT0+SV8sQXJyb3dSaWdodENpcmNsZTooKT0+YW0sQXJyb3dSaWdodEZyb21MaW5lOigpPT5EXyxBcnJvd1JpZ2h0TGVmdDooKT0+RV8sQXJyb3dSaWdodFNxdWFyZTooKT0+aDUsQXJyb3dSaWdodFRvTGluZTooKT0+UF8sQXJyb3dVcDooKT0+Vl8sQXJyb3dVcDAxOigpPT5OXyxBcnJvd1VwMTA6KCk9PkFfLEFycm93VXBBWjooKT0+TWYsQXJyb3dVcEF6OigpPT5NZixBcnJvd1VwQ2lyY2xlOigpPT5zbSxBcnJvd1VwRG93bjooKT0+Ul8sQXJyb3dVcEZyb21Eb3Q6KCk9Pk9fLEFycm93VXBGcm9tTGluZTooKT0+Rl8sQXJyb3dVcExlZnQ6KCk9PkJfLEFycm93VXBMZWZ0RnJvbUNpcmNsZTooKT0+ZW0sQXJyb3dVcExlZnRGcm9tU3F1YXJlOigpPT51NSxBcnJvd1VwTGVmdFNxdWFyZTooKT0+ZjUsQXJyb3dVcE5hcnJvd1dpZGU6KCk9PnpmLEFycm93VXBSaWdodDooKT0+SF8sQXJyb3dVcFJpZ2h0RnJvbUNpcmNsZTooKT0+dG0sQXJyb3dVcFJpZ2h0RnJvbVNxdWFyZTooKT0+cDUsQXJyb3dVcFJpZ2h0U3F1YXJlOigpPT5tNSxBcnJvd1VwU3F1YXJlOigpPT5nNSxBcnJvd1VwVG9MaW5lOigpPT5qXyxBcnJvd1VwV2lkZU5hcnJvdzooKT0+cV8sQXJyb3dVcFpBOigpPT5DZixBcnJvd1VwWmE6KCk9PkNmLEFycm93c1VwRnJvbUxpbmU6KCk9PldfLEFzdGVyaXNrOigpPT5VXyxBc3Rlcmlza1NxdWFyZTooKT0+YjUsQXN0cm9pZDooKT0+R18sQXRTaWduOigpPT5LXyxBdG9tOigpPT5ZXyxBdWRpb0xpbmVzOigpPT5aXyxBdWRpb1dhdmVmb3JtOigpPT5YXyxBd2FyZDooKT0+UV8sQXhlOigpPT5KXyxBeGlzM0Q6KCk9PlRmLEF4aXMzZDooKT0+VGYsQmFieTooKT0+ZU0sQmFja3BhY2s6KCk9PnRNLEJhZGdlOigpPT5iTSxCYWRnZUFsZXJ0OigpPT5hTSxCYWRnZUNlbnQ6KCk9PnNNLEJhZGdlQ2hlY2s6KCk9PiRmLEJhZGdlRG9sbGFyU2lnbjooKT0+aU0sQmFkZ2VFdXJvOigpPT5yTSxCYWRnZUhlbHA6KCk9PkRmLEJhZGdlSW5kaWFuUnVwZWU6KCk9Pm9NLEJhZGdlSW5mbzooKT0+bk0sQmFkZ2VKYXBhbmVzZVllbjooKT0+bE0sQmFkZ2VNaW51czooKT0+Y00sQmFkZ2VQZXJjZW50OigpPT5kTSxCYWRnZVBsdXM6KCk9PnVNLEJhZGdlUG91bmRTdGVybGluZzooKT0+cE0sQmFkZ2VRdWVzdGlvbk1hcms6KCk9PkRmLEJhZGdlUnVzc2lhblJ1YmxlOigpPT5mTSxCYWRnZVN3aXNzRnJhbmM6KCk9PmhNLEJhZGdlVHVya2lzaExpcmE6KCk9Pm1NLEJhZGdlWDooKT0+Z00sQmFnZ2FnZUNsYWltOigpPT52TSxCYWxsb29uOigpPT55TSxCYW46KCk9PnhNLEJhbmFuYTooKT0+d00sQmFuZGFnZTooKT0+a00sQmFua25vdGU6KCk9PnpNLEJhbmtub3RlQXJyb3dEb3duOigpPT5fTSxCYW5rbm90ZUFycm93VXA6KCk9PlNNLEJhbmtub3RlWDooKT0+TU0sQmFyQ2hhcnQ6KCk9PlZmLEJhckNoYXJ0MjooKT0+VWYsQmFyQ2hhcnQzOigpPT5xZixCYXJDaGFydDQ6KCk9PkhmLEJhckNoYXJ0QmlnOigpPT5CZixCYXJDaGFydEhvcml6b250YWw6KCk9Pk9mLEJhckNoYXJ0SG9yaXpvbnRhbEJpZzooKT0+UmYsQmFyY29kZTooKT0+Q00sQmFycmVsOigpPT5UTSxCYXNlbGluZTooKT0+JE0sQmF0aDooKT0+RE0sQmF0dGVyeTooKT0+Uk0sQmF0dGVyeUNoYXJnaW5nOigpPT5MTSxCYXR0ZXJ5RnVsbDooKT0+RU0sQmF0dGVyeUxvdzooKT0+UE0sQmF0dGVyeU1lZGl1bTooKT0+SU0sQmF0dGVyeVBsdXM6KCk9PkFNLEJhdHRlcnlXYXJuaW5nOigpPT5OTSxCZWFrZXI6KCk9PkZNLEJlYW46KCk9PkhNLEJlYW5PZmY6KCk9Pk9NLEJlZDooKT0+Vk0sQmVkRG91YmxlOigpPT5CTSxCZWRTaW5nbGU6KCk9PnFNLEJlZWY6KCk9PlVNLEJlZWZPZmY6KCk9PmpNLEJlZXI6KCk9PkdNLEJlZXJPZmY6KCk9PldNLEJlbGw6KCk9PnR6LEJlbGxDaGVjazooKT0+S00sQmVsbERvdDooKT0+WU0sQmVsbEVsZWN0cmljOigpPT5aTSxCZWxsTWludXM6KCk9PlFNLEJlbGxPZmY6KCk9PlhNLEJlbGxQbHVzOigpPT5KTSxCZWxsUmluZzooKT0+ZXosQmV0d2Vlbkhvcml6b25hbEVuZDooKT0+TGYsQmV0d2Vlbkhvcml6b25hbFN0YXJ0OigpPT5FZixCZXR3ZWVuSG9yaXpvbnRhbEVuZDooKT0+TGYsQmV0d2Vlbkhvcml6b250YWxTdGFydDooKT0+RWYsQmV0d2VlblZlcnRpY2FsRW5kOigpPT5heixCZXR3ZWVuVmVydGljYWxTdGFydDooKT0+c3osQmljZXBzRmxleGVkOigpPT5peixCaWtlOigpPT5yeixCaW5hcnk6KCk9Pm96LEJpbm9jdWxhcnM6KCk9Pm56LEJpb2hhemFyZDooKT0+bHosQmlyZDooKT0+Y3osQmlyZGhvdXNlOigpPT5keixCaXRjb2luOigpPT51eixCbGVuZDooKT0+cHosQmxpbmRzOigpPT5oeixCbG9ja3M6KCk9PmZ6LEJsdWV0b290aDooKT0+YnosQmx1ZXRvb3RoQ29ubmVjdGVkOigpPT5teixCbHVldG9vdGhPZmY6KCk9Pmd6LEJsdWV0b290aFNlYXJjaGluZzooKT0+dnosQm9sZDooKT0+eHosQm9sdDooKT0+d3osQm9tYjooKT0+eXosQm9uZTooKT0+a3osQm9vazooKT0+R3osQm9va0E6KCk9PlN6LEJvb2tBbGVydDooKT0+X3osQm9va0F1ZGlvOigpPT5NeixCb29rQ2hlY2s6KCk9Pnp6LEJvb2tDb3B5OigpPT5DeixCb29rRGFzaGVkOigpPT5QZixCb29rRG93bjooKT0+VHosQm9va0hlYWRwaG9uZXM6KCk9PiR6LEJvb2tIZWFydDooKT0+RHosQm9va0ltYWdlOigpPT5MeixCb29rS2V5OigpPT5FeixCb29rTG9jazooKT0+SXosQm9va01hcmtlZDooKT0+UHosQm9va01pbnVzOigpPT5BeixCb29rT3BlbjooKT0+RnosQm9va09wZW5DaGVjazooKT0+TnosQm9va09wZW5UZXh0OigpPT5SeixCb29rUGx1czooKT0+QnosQm9va1NlYXJjaDooKT0+T3osQm9va1RlbXBsYXRlOigpPT5QZixCb29rVGV4dDooKT0+SHosQm9va1R5cGU6KCk9PlZ6LEJvb2tVcDooKT0+anosQm9va1VwMjooKT0+cXosQm9va1VzZXI6KCk9PlV6LEJvb2tYOigpPT5XeixCb29rbWFyazooKT0+SnosQm9va21hcmtDaGVjazooKT0+S3osQm9va21hcmtNaW51czooKT0+WXosQm9va21hcmtPZmY6KCk9Plp6LEJvb2ttYXJrUGx1czooKT0+WHosQm9va21hcmtYOigpPT5ReixCb29tQm94OigpPT5lQyxCb3Q6KCk9PnNDLEJvdE1lc3NhZ2VTcXVhcmU6KCk9PnRDLEJvdE9mZjooKT0+YUMsQm90dGxlV2luZTooKT0+ckMsQm93QXJyb3c6KCk9PmlDLEJveDooKT0+b0MsQm94U2VsZWN0OigpPT5ENSxCb3hlczooKT0+bkMsQnJhY2VzOigpPT5JZixCcmFja2V0czooKT0+bEMsQnJhaW46KCk9PnBDLEJyYWluQ2lyY3VpdDooKT0+Y0MsQnJhaW5Db2c6KCk9PmRDLEJyaWNrV2FsbDooKT0+ZkMsQnJpY2tXYWxsRmlyZTooKT0+dUMsQnJpY2tXYWxsU2hpZWxkOigpPT5oQyxCcmllZmNhc2U6KCk9PnZDLEJyaWVmY2FzZUJ1c2luZXNzOigpPT5tQyxCcmllZmNhc2VDb252ZXlvckJlbHQ6KCk9PmdDLEJyaWVmY2FzZU1lZGljYWw6KCk9PmJDLEJyaW5nVG9Gcm9udDooKT0+eEMsQnJ1c2g6KCk9PndDLEJydXNoQ2xlYW5pbmc6KCk9PnlDLEJ1YmJsZXM6KCk9PlNDLEJ1ZzooKT0+TUMsQnVnT2ZmOigpPT5rQyxCdWdQbGF5OigpPT5fQyxCdWlsZGluZzooKT0+ekMsQnVpbGRpbmcyOigpPT5DQyxCdXM6KCk9PiRDLEJ1c0Zyb250OigpPT5UQyxDYWJsZTooKT0+REMsQ2FibGVDYXI6KCk9PkxDLENha2U6KCk9PlBDLENha2VTbGljZTooKT0+RUMsQ2FsY3VsYXRvcjooKT0+QUMsQ2FsZW5kYXI6KCk9PnRULENhbGVuZGFyMTooKT0+SUMsQ2FsZW5kYXJBcnJvd0Rvd246KCk9Pk5DLENhbGVuZGFyQXJyb3dVcDooKT0+UkMsQ2FsZW5kYXJDaGVjazooKT0+RkMsQ2FsZW5kYXJDaGVjazI6KCk9Pk9DLENhbGVuZGFyQ2xvY2s6KCk9PkJDLENhbGVuZGFyQ29nOigpPT5IQyxDYWxlbmRhckRheXM6KCk9PnFDLENhbGVuZGFyRm9sZDooKT0+akMsQ2FsZW5kYXJIZWFydDooKT0+VUMsQ2FsZW5kYXJNaW51czooKT0+R0MsQ2FsZW5kYXJNaW51czI6KCk9PlZDLENhbGVuZGFyT2ZmOigpPT5XQyxDYWxlbmRhclBsdXM6KCk9PlpDLENhbGVuZGFyUGx1czI6KCk9PktDLENhbGVuZGFyUmFuZ2U6KCk9PllDLENhbGVuZGFyU2VhcmNoOigpPT5YQyxDYWxlbmRhclN5bmM6KCk9PlFDLENhbGVuZGFyWDooKT0+ZVQsQ2FsZW5kYXJYMjooKT0+SkMsQ2FsZW5kYXJzOigpPT5hVCxDYW1lcmE6KCk9PmlULENhbWVyYU9mZjooKT0+c1QsQ2FuZGxlc3RpY2tDaGFydDooKT0+RmYsQ2FuZHk6KCk9Pm9ULENhbmR5Q2FuZTooKT0+clQsQ2FuZHlPZmY6KCk9Pm5ULENhbm5hYmlzOigpPT5jVCxDYW5uYWJpc09mZjooKT0+bFQsQ2FwdGlvbnM6KCk9PkFmLENhcHRpb25zT2ZmOigpPT5kVCxDYXI6KCk9PnBULENhckZyb250OigpPT51VCxDYXJUYXhpRnJvbnQ6KCk9PmhULENhcmF2YW46KCk9PmZULENhcmRTaW06KCk9Pm1ULENhcnJvdDooKT0+Z1QsQ2FzZUxvd2VyOigpPT5iVCxDYXNlU2Vuc2l0aXZlOigpPT52VCxDYXNlVXBwZXI6KCk9PnhULENhc3NldHRlVGFwZTooKT0+eVQsQ2FzdDooKT0+d1QsQ2FzdGxlOigpPT5rVCxDYXQ6KCk9PlNULENjdHY6KCk9Pk1ULENjdHZPZmY6KCk9Pl9ULENoYXJ0QXJlYTooKT0+TmYsQ2hhcnRCYXI6KCk9Pk9mLENoYXJ0QmFyQmlnOigpPT5SZixDaGFydEJhckRlY3JlYXNpbmc6KCk9PnpULENoYXJ0QmFySW5jcmVhc2luZzooKT0+Q1QsQ2hhcnRCYXJTdGFja2VkOigpPT5UVCxDaGFydENhbmRsZXN0aWNrOigpPT5GZixDaGFydENvbHVtbjooKT0+cWYsQ2hhcnRDb2x1bW5CaWc6KCk9PkJmLENoYXJ0Q29sdW1uRGVjcmVhc2luZzooKT0+JFQsQ2hhcnRDb2x1bW5JbmNyZWFzaW5nOigpPT5IZixDaGFydENvbHVtblN0YWNrZWQ6KCk9PkRULENoYXJ0R2FudHQ6KCk9PkxULENoYXJ0TGluZTooKT0+amYsQ2hhcnROZXR3b3JrOigpPT5FVCxDaGFydE5vQXhlc0NvbHVtbjooKT0+VWYsQ2hhcnROb0F4ZXNDb2x1bW5EZWNyZWFzaW5nOigpPT5QVCxDaGFydE5vQXhlc0NvbHVtbkluY3JlYXNpbmc6KCk9PlZmLENoYXJ0Tm9BeGVzQ29tYmluZWQ6KCk9PklULENoYXJ0Tm9BeGVzR2FudHQ6KCk9PldmLENoYXJ0UGllOigpPT5HZixDaGFydFNjYXR0ZXI6KCk9PktmLENoYXJ0U3BsaW5lOigpPT5BVCxDaGVjazooKT0+T1QsQ2hlY2tDaGVjazooKT0+TlQsQ2hlY2tDaXJjbGU6KCk9PmltLENoZWNrQ2lyY2xlMjooKT0+cm0sQ2hlY2tMaW5lOigpPT5SVCxDaGVja1NxdWFyZTooKT0+dzUsQ2hlY2tTcXVhcmUyOigpPT5rNSxDaGVmSGF0OigpPT5GVCxDaGVycnk6KCk9PkJULENoZXNzQmlzaG9wOigpPT5xVCxDaGVzc0tpbmc6KCk9PkhULENoZXNzS25pZ2h0OigpPT5qVCxDaGVzc1Bhd246KCk9PlZULENoZXNzUXVlZW46KCk9PkdULENoZXNzUm9vazooKT0+VVQsQ2hldnJvbkRvd246KCk9PldULENoZXZyb25Eb3duQ2lyY2xlOigpPT5ubSxDaGV2cm9uRG93blNxdWFyZTooKT0+UzUsQ2hldnJvbkZpcnN0OigpPT5LVCxDaGV2cm9uTGFzdDooKT0+WVQsQ2hldnJvbkxlZnQ6KCk9PlpULENoZXZyb25MZWZ0Q2lyY2xlOigpPT5vbSxDaGV2cm9uTGVmdFNxdWFyZTooKT0+XzUsQ2hldnJvblJpZ2h0OigpPT5YVCxDaGV2cm9uUmlnaHRDaXJjbGU6KCk9PmxtLENoZXZyb25SaWdodFNxdWFyZTooKT0+TTUsQ2hldnJvblVwOigpPT5RVCxDaGV2cm9uVXBDaXJjbGU6KCk9PmNtLENoZXZyb25VcFNxdWFyZTooKT0+ejUsQ2hldnJvbnNEb3duOigpPT5lJCxDaGV2cm9uc0Rvd25VcDooKT0+SlQsQ2hldnJvbnNMZWZ0OigpPT5zJCxDaGV2cm9uc0xlZnRSaWdodDooKT0+YSQsQ2hldnJvbnNMZWZ0UmlnaHRFbGxpcHNpczooKT0+dCQsQ2hldnJvbnNSaWdodDooKT0+ciQsQ2hldnJvbnNSaWdodExlZnQ6KCk9PmkkLENoZXZyb25zVXA6KCk9Pm8kLENoZXZyb25zVXBEb3duOigpPT5uJCxDaHVyY2g6KCk9PmwkLENpZ2FyZXR0ZTooKT0+ZCQsQ2lnYXJldHRlT2ZmOigpPT5jJCxDaXJjbGU6KCk9Pk0kLENpcmNsZUFsZXJ0OigpPT5ZZixDaXJjbGVBcnJvd0Rvd246KCk9PlpmLENpcmNsZUFycm93TGVmdDooKT0+WGYsQ2lyY2xlQXJyb3dPdXREb3duTGVmdDooKT0+UWYsQ2lyY2xlQXJyb3dPdXREb3duUmlnaHQ6KCk9PkpmLENpcmNsZUFycm93T3V0VXBMZWZ0OigpPT5lbSxDaXJjbGVBcnJvd091dFVwUmlnaHQ6KCk9PnRtLENpcmNsZUFycm93UmlnaHQ6KCk9PmFtLENpcmNsZUFycm93VXA6KCk9PnNtLENpcmNsZUNoZWNrOigpPT5ybSxDaXJjbGVDaGVja0JpZzooKT0+aW0sQ2lyY2xlQ2hldnJvbkRvd246KCk9Pm5tLENpcmNsZUNoZXZyb25MZWZ0OigpPT5vbSxDaXJjbGVDaGV2cm9uUmlnaHQ6KCk9PmxtLENpcmNsZUNoZXZyb25VcDooKT0+Y20sQ2lyY2xlRGFzaGVkOigpPT51JCxDaXJjbGVEaXZpZGU6KCk9PmRtLENpcmNsZURvbGxhclNpZ246KCk9PnAkLENpcmNsZURvdDooKT0+bSQsQ2lyY2xlRG90RGFzaGVkOigpPT5oJCxDaXJjbGVFbGxpcHNpczooKT0+ZiQsQ2lyY2xlRXF1YWw6KCk9PmckLENpcmNsZUZhZGluZ0Fycm93VXA6KCk9PmIkLENpcmNsZUZhZGluZ1BsdXM6KCk9PnYkLENpcmNsZUdhdWdlOigpPT51bSxDaXJjbGVIZWxwOigpPT5qMCxDaXJjbGVNaW51czooKT0+cG0sQ2lyY2xlT2ZmOigpPT54JCxDaXJjbGVQYXJraW5nOigpPT5mbSxDaXJjbGVQYXJraW5nT2ZmOigpPT5obSxDaXJjbGVQYXVzZTooKT0+bW0sQ2lyY2xlUGVyY2VudDooKT0+Z20sQ2lyY2xlUGlsZTooKT0+eSQsQ2lyY2xlUGxheTooKT0+Ym0sQ2lyY2xlUGx1czooKT0+dm0sQ2lyY2xlUG91bmRTdGVybGluZzooKT0+dyQsQ2lyY2xlUG93ZXI6KCk9PnhtLENpcmNsZVF1ZXN0aW9uTWFyazooKT0+ajAsQ2lyY2xlU2xhc2g6KCk9PmskLENpcmNsZVNsYXNoMjooKT0+eW0sQ2lyY2xlU2xhc2hlZDooKT0+eW0sQ2lyY2xlU21hbGw6KCk9PlMkLENpcmNsZVN0YXI6KCk9Pl8kLENpcmNsZVN0b3A6KCk9PndtLENpcmNsZVVzZXI6KCk9PlNtLENpcmNsZVVzZXJSb3VuZDooKT0+a20sQ2lyY2xlWDooKT0+X20sQ2lyY3VpdEJvYXJkOigpPT56JCxDaXRydXM6KCk9PkMkLENsYXBwZXJib2FyZDooKT0+VCQsQ2xpcGJvYXJkOigpPT5GJCxDbGlwYm9hcmRDaGVjazooKT0+JCQsQ2xpcGJvYXJkQ2xvY2s6KCk9PkQkLENsaXBib2FyZENvcHk6KCk9PkwkLENsaXBib2FyZEVkaXQ6KCk9PnptLENsaXBib2FyZExpc3Q6KCk9PkUkLENsaXBib2FyZE1pbnVzOigpPT5QJCxDbGlwYm9hcmRQYXN0ZTooKT0+SSQsQ2xpcGJvYXJkUGVuOigpPT56bSxDbGlwYm9hcmRQZW5MaW5lOigpPT5NbSxDbGlwYm9hcmRQbHVzOigpPT5BJCxDbGlwYm9hcmRTaWduYXR1cmU6KCk9Pk1tLENsaXBib2FyZFR5cGU6KCk9Pk4kLENsaXBib2FyZFg6KCk9PlIkLENsb2NrOigpPT5zRCxDbG9jazE6KCk9Pk8kLENsb2NrMTA6KCk9PkIkLENsb2NrMTE6KCk9PkgkLENsb2NrMTI6KCk9PnEkLENsb2NrMjooKT0+aiQsQ2xvY2szOigpPT5WJCxDbG9jazQ6KCk9PlUkLENsb2NrNTooKT0+VyQsQ2xvY2s2OigpPT5HJCxDbG9jazc6KCk9PlkkLENsb2NrODooKT0+SyQsQ2xvY2s5OigpPT5aJCxDbG9ja0FsZXJ0OigpPT5YJCxDbG9ja0Fycm93RG93bjooKT0+USQsQ2xvY2tBcnJvd1VwOigpPT5KJCxDbG9ja0NoZWNrOigpPT5lRCxDbG9ja0ZhZGluZzooKT0+dEQsQ2xvY2tQbHVzOigpPT5hRCxDbG9zZWRDYXB0aW9uOigpPT5pRCxDbG91ZDooKT0+a0QsQ2xvdWRBbGVydDooKT0+ckQsQ2xvdWRCYWNrdXA6KCk9Pm9ELENsb3VkQ2hlY2s6KCk9Pm5ELENsb3VkQ29nOigpPT5sRCxDbG91ZERvd25sb2FkOigpPT5DbSxDbG91ZERyaXp6bGU6KCk9PmNELENsb3VkRm9nOigpPT51RCxDbG91ZEhhaWw6KCk9PmRELENsb3VkTGlnaHRuaW5nOigpPT5wRCxDbG91ZE1vb246KCk9PmZELENsb3VkTW9vblJhaW46KCk9PmhELENsb3VkT2ZmOigpPT5nRCxDbG91ZFJhaW46KCk9PmJELENsb3VkUmFpbldpbmQ6KCk9Pm1ELENsb3VkU25vdzooKT0+dkQsQ2xvdWRTdW46KCk9PndELENsb3VkU3VuUmFpbjooKT0+eEQsQ2xvdWRTeW5jOigpPT55RCxDbG91ZFVwbG9hZDooKT0+VG0sQ2xvdWR5OigpPT5TRCxDbG92ZXI6KCk9Pl9ELENsdWI6KCk9Pk1ELENvZGU6KCk9PnpELENvZGUyOigpPT4kbSxDb2RlU3F1YXJlOigpPT5DNSxDb2RlWG1sOigpPT4kbSxDb2ZmZWU6KCk9PkNELENvZzooKT0+VEQsQ29pbnM6KCk9PiRELENvbHVtbnM6KCk9PkRtLENvbHVtbnMyOigpPT5EbSxDb2x1bW5zMzooKT0+TG0sQ29sdW1uczNDb2c6KCk9PlYwLENvbHVtbnM0OigpPT5ERCxDb2x1bW5zU2V0dGluZ3M6KCk9PlYwLENvbWJpbmU6KCk9PkxELENvbW1hbmQ6KCk9PkVELENvbXBhc3M6KCk9PlBELENvbXBvbmVudDooKT0+SUQsQ29tcHV0ZXI6KCk9PkFELENvbmNpZXJnZUJlbGw6KCk9Pk5ELENvbmU6KCk9PlJELENvbnN0cnVjdGlvbjooKT0+T0QsQ29udGFjdDooKT0+RkQsQ29udGFjdDI6KCk9PkVtLENvbnRhY3RSb3VuZDooKT0+RW0sQ29udGFpbmVyOigpPT5CRCxDb250cmFzdDooKT0+SEQsQ29va2llOigpPT5xRCxDb29raW5nUG90OigpPT5qRCxDb3B5OigpPT5ZRCxDb3B5Q2hlY2s6KCk9PlZELENvcHlNaW51czooKT0+VUQsQ29weVBsdXM6KCk9PldELENvcHlTbGFzaDooKT0+R0QsQ29weVg6KCk9PktELENvcHlsZWZ0OigpPT5aRCxDb3B5cmlnaHQ6KCk9PlhELENvcm5lckRvd25MZWZ0OigpPT5RRCxDb3JuZXJEb3duUmlnaHQ6KCk9PkpELENvcm5lckxlZnREb3duOigpPT5lTCxDb3JuZXJMZWZ0VXA6KCk9PnRMLENvcm5lclJpZ2h0RG93bjooKT0+YUwsQ29ybmVyUmlnaHRVcDooKT0+c0wsQ29ybmVyVXBMZWZ0OigpPT5pTCxDb3JuZXJVcFJpZ2h0OigpPT5yTCxDcHU6KCk9Pm9MLENyZWF0aXZlQ29tbW9uczooKT0+bkwsQ3JlZGl0Q2FyZDooKT0+bEwsQ3JvaXNzYW50OigpPT5jTCxDcm9wOigpPT5kTCxDcm9zczooKT0+dUwsQ3Jvc3NoYWlyOigpPT5wTCxDcm93bjooKT0+aEwsQ3Vib2lkOigpPT5mTCxDdXBTb2RhOigpPT5tTCxDdXJseUJyYWNlczooKT0+SWYsQ3VycmVuY3k6KCk9PmdMLEN5bGluZGVyOigpPT5iTCxEYW06KCk9PnZMLERhdGFiYXNlOigpPT5rTCxEYXRhYmFzZUJhY2t1cDooKT0+eEwsRGF0YWJhc2VTZWFyY2g6KCk9PndMLERhdGFiYXNlWmFwOigpPT55TCxEZWNpbWFsc0Fycm93TGVmdDooKT0+U0wsRGVjaW1hbHNBcnJvd1JpZ2h0OigpPT5fTCxEZWxldGU6KCk9Pk1MLERlc3NlcnQ6KCk9PnpMLERpYW1ldGVyOigpPT5DTCxEaWFtb25kOigpPT5ETCxEaWFtb25kTWludXM6KCk9PlRMLERpYW1vbmRQZXJjZW50OigpPT5QbSxEaWFtb25kUGx1czooKT0+JEwsRGljZTE6KCk9PkxMLERpY2UyOigpPT5FTCxEaWNlMzooKT0+UEwsRGljZTQ6KCk9PklMLERpY2U1OigpPT5BTCxEaWNlNjooKT0+TkwsRGljZXM6KCk9Pk9MLERpZmY6KCk9PlJMLERpc2M6KCk9PmpMLERpc2MyOigpPT5GTCxEaXNjMzooKT0+QkwsRGlzY0FsYnVtOigpPT5ITCxEaXZpZGU6KCk9PnFMLERpdmlkZUNpcmNsZTooKT0+ZG0sRGl2aWRlU3F1YXJlOigpPT5FNSxEbmE6KCk9PlVMLERuYU9mZjooKT0+VkwsRG9jazooKT0+V0wsRG9nOigpPT5LTCxEb2xsYXJTaWduOigpPT5HTCxEb251dDooKT0+WUwsRG9vckNsb3NlZDooKT0+WEwsRG9vckNsb3NlZExvY2tlZDooKT0+WkwsRG9vck9wZW46KCk9PlFMLERvdDooKT0+SkwsRG90U3F1YXJlOigpPT5MNSxEb3dubG9hZDooKT0+ZUUsRG93bmxvYWRDbG91ZDooKT0+Q20sRHJhZnRpbmdDb21wYXNzOigpPT50RSxEcmFtYTooKT0+c0UsRHJpbGw6KCk9PmFFLERyb25lOigpPT5pRSxEcm9wbGV0OigpPT5yRSxEcm9wbGV0T2ZmOigpPT5vRSxEcm9wbGV0czooKT0+bkUsRHJ1bTooKT0+bEUsRHJ1bXN0aWNrOigpPT5jRSxEdW1iYmVsbDooKT0+ZEUsRWFyOigpPT5wRSxFYXJPZmY6KCk9PnVFLEVhcnRoOigpPT5JbSxFYXJ0aExvY2s6KCk9PmhFLEVjbGlwc2U6KCk9PmZFLEVkaXQ6KCk9PlYxLEVkaXQyOigpPT5XNixFZGl0MzooKT0+VTYsRWdnOigpPT5nRSxFZ2dGcmllZDooKT0+bUUsRWdnT2ZmOigpPT5iRSxFbGxpcHNlOigpPT52RSxFbGxpcHNpczooKT0+Tm0sRWxsaXBzaXNWZXJ0aWNhbDooKT0+QW0sRXF1YWw6KCk9PndFLEVxdWFsQXBwcm94aW1hdGVseTooKT0+eEUsRXF1YWxOb3Q6KCk9PnlFLEVxdWFsU3F1YXJlOigpPT5QNSxFcmFzZXI6KCk9PmtFLEV0aGVybmV0UG9ydDooKT0+U0UsRXVybzooKT0+X0UsRXZDaGFyZ2VyOigpPT5NRSxFeHBhbmQ6KCk9PnpFLEV4dGVybmFsTGluazooKT0+Q0UsRXllOigpPT5ERSxFeWVDbG9zZWQ6KCk9PlRFLEV5ZU9mZjooKT0+JEUsRmFjdG9yeTooKT0+TEUsRmFuOigpPT5FRSxGYXN0Rm9yd2FyZDooKT0+UEUsRmVhdGhlcjooKT0+SUUsRmVuY2U6KCk9Pk5FLEZlcnJpc1doZWVsOigpPT5BRSxGaWxlOigpPT51UCxGaWxlQXJjaGl2ZTooKT0+UkUsRmlsZUF1ZGlvOigpPT5VMCxGaWxlQXVkaW8yOigpPT5VMCxGaWxlQXhpczNEOigpPT5SbSxGaWxlQXhpczNkOigpPT5SbSxGaWxlQmFkZ2U6KCk9Pk9tLEZpbGVCYWRnZTI6KCk9Pk9tLEZpbGVCYXJDaGFydDooKT0+Qm0sRmlsZUJhckNoYXJ0MjooKT0+cW0sRmlsZUJveDooKT0+T0UsRmlsZUJyYWNlczooKT0+Rm0sRmlsZUJyYWNlc0Nvcm5lcjooKT0+SG0sRmlsZUNoYXJ0Q29sdW1uOigpPT5xbSxGaWxlQ2hhcnRDb2x1bW5JbmNyZWFzaW5nOigpPT5CbSxGaWxlQ2hhcnRMaW5lOigpPT5qbSxGaWxlQ2hhcnRQaWU6KCk9PlZtLEZpbGVDaGVjazooKT0+RkUsRmlsZUNoZWNrMjooKT0+VW0sRmlsZUNoZWNrQ29ybmVyOigpPT5VbSxGaWxlQ2xvY2s6KCk9PkJFLEZpbGVDb2RlOigpPT5IRSxGaWxlQ29kZTI6KCk9PldtLEZpbGVDb2RlQ29ybmVyOigpPT5XbSxGaWxlQ29nOigpPT5HbSxGaWxlQ29nMjooKT0+R20sRmlsZURpZmY6KCk9PnFFLEZpbGVEaWdpdDooKT0+akUsRmlsZURvd246KCk9PlZFLEZpbGVFZGl0OigpPT5lNixGaWxlRXhjbGFtYXRpb25Qb2ludDooKT0+S20sRmlsZUhlYWRwaG9uZTooKT0+VTAsRmlsZUhlYXJ0OigpPT5VRSxGaWxlSW1hZ2U6KCk9PldFLEZpbGVJbnB1dDooKT0+R0UsRmlsZUpzb246KCk9PkZtLEZpbGVKc29uMjooKT0+SG0sRmlsZUtleTooKT0+WW0sRmlsZUtleTI6KCk9PlltLEZpbGVMaW5lQ2hhcnQ6KCk9PmptLEZpbGVMb2NrOigpPT5abSxGaWxlTG9jazI6KCk9PlptLEZpbGVNaW51czooKT0+S0UsRmlsZU1pbnVzMjooKT0+WG0sRmlsZU1pbnVzQ29ybmVyOigpPT5YbSxGaWxlTXVzaWM6KCk9PllFLEZpbGVPdXRwdXQ6KCk9PlpFLEZpbGVQZW46KCk9PmU2LEZpbGVQZW5MaW5lOigpPT5RbSxGaWxlUGllQ2hhcnQ6KCk9PlZtLEZpbGVQbGF5OigpPT5KbSxGaWxlUGx1czooKT0+WEUsRmlsZVBsdXMyOigpPT50NixGaWxlUGx1c0Nvcm5lcjooKT0+dDYsRmlsZVF1ZXN0aW9uOigpPT5hNixGaWxlUXVlc3Rpb25NYXJrOigpPT5hNixGaWxlU2NhbjooKT0+UUUsRmlsZVNlYXJjaDooKT0+SkUsRmlsZVNlYXJjaDI6KCk9PnM2LEZpbGVTZWFyY2hDb3JuZXI6KCk9PnM2LEZpbGVTaWduYWw6KCk9Pmk2LEZpbGVTaWduYXR1cmU6KCk9PlFtLEZpbGVTbGlkZXJzOigpPT5lUCxGaWxlU3ByZWFkc2hlZXQ6KCk9PnRQLEZpbGVTdGFjazooKT0+c1AsRmlsZVN5bWxpbms6KCk9PmFQLEZpbGVUZXJtaW5hbDooKT0+aVAsRmlsZVRleHQ6KCk9PnJQLEZpbGVUeXBlOigpPT5vUCxGaWxlVHlwZTI6KCk9PnI2LEZpbGVUeXBlQ29ybmVyOigpPT5yNixGaWxlVXA6KCk9Pm5QLEZpbGVVc2VyOigpPT5sUCxGaWxlVmlkZW86KCk9PkptLEZpbGVWaWRlbzI6KCk9Pm82LEZpbGVWaWRlb0NhbWVyYTooKT0+bzYsRmlsZVZvbHVtZTooKT0+Y1AsRmlsZVZvbHVtZTI6KCk9Pmk2LEZpbGVXYXJuaW5nOigpPT5LbSxGaWxlWDooKT0+ZFAsRmlsZVgyOigpPT5uNixGaWxlWENvcm5lcjooKT0+bjYsRmlsZXM6KCk9PmhQLEZpbG06KCk9PnBQLEZpbHRlcjooKT0+cDYsRmlsdGVyWDooKT0+dTYsRmluZ2VycHJpbnQ6KCk9Pmw2LEZpbmdlcnByaW50UGF0dGVybjooKT0+bDYsRmlyZUV4dGluZ3Vpc2hlcjooKT0+ZlAsRmlzaDooKT0+YlAsRmlzaE9mZjooKT0+Z1AsRmlzaFN5bWJvbDooKT0+bVAsRmlzaGluZ0hvb2s6KCk9PnZQLEZpc2hpbmdSb2Q6KCk9PnlQLEZsYWc6KCk9PlNQLEZsYWdPZmY6KCk9PnhQLEZsYWdUcmlhbmdsZUxlZnQ6KCk9PndQLEZsYWdUcmlhbmdsZVJpZ2h0OigpPT5rUCxGbGFtZTooKT0+X1AsRmxhbWVLaW5kbGluZzooKT0+elAsRmxhc2hsaWdodDooKT0+Q1AsRmxhc2hsaWdodE9mZjooKT0+TVAsRmxhc2tDb25pY2FsOigpPT4kUCxGbGFza0NvbmljYWxPZmY6KCk9PlRQLEZsYXNrUm91bmQ6KCk9PkRQLEZsaXBIb3Jpem9udGFsOigpPT54NSxGbGlwSG9yaXpvbnRhbDI6KCk9PkxQLEZsaXBWZXJ0aWNhbDooKT0+eTUsRmxpcFZlcnRpY2FsMjooKT0+RVAsRmxvd2VyOigpPT5OUCxGbG93ZXIyOigpPT5QUCxGb2N1czooKT0+SVAsRm9sZEhvcml6b250YWw6KCk9PkFQLEZvbGRWZXJ0aWNhbDooKT0+RlAsRm9sZGVyOigpPT5wSSxGb2xkZXJBcmNoaXZlOigpPT5SUCxGb2xkZXJCb29rbWFyazooKT0+T1AsRm9sZGVyQ2hlY2s6KCk9PkJQLEZvbGRlckNsb2NrOigpPT5qUCxGb2xkZXJDbG9zZWQ6KCk9PkhQLEZvbGRlckNvZGU6KCk9PnFQLEZvbGRlckNvZzooKT0+YzYsRm9sZGVyQ29nMjooKT0+YzYsRm9sZGVyRG90OigpPT5WUCxGb2xkZXJEb3duOigpPT5VUCxGb2xkZXJFZGl0OigpPT5kNixGb2xkZXJHaXQ6KCk9PkdQLEZvbGRlckdpdDI6KCk9PldQLEZvbGRlckhlYXJ0OigpPT5LUCxGb2xkZXJJbnB1dDooKT0+WFAsRm9sZGVyS2FuYmFuOigpPT5ZUCxGb2xkZXJLZXk6KCk9PlpQLEZvbGRlckxvY2s6KCk9PlFQLEZvbGRlck1pbnVzOigpPT50SSxGb2xkZXJPcGVuOigpPT5lSSxGb2xkZXJPcGVuRG90OigpPT5KUCxGb2xkZXJPdXRwdXQ6KCk9PmFJLEZvbGRlclBlbjooKT0+ZDYsRm9sZGVyUGx1czooKT0+c0ksRm9sZGVyUm9vdDooKT0+aUksRm9sZGVyU2VhcmNoOigpPT5vSSxGb2xkZXJTZWFyY2gyOigpPT5ySSxGb2xkZXJTeW1saW5rOigpPT5uSSxGb2xkZXJTeW5jOigpPT5jSSxGb2xkZXJUcmVlOigpPT5sSSxGb2xkZXJVcDooKT0+ZEksRm9sZGVyWDooKT0+dUksRm9sZGVyczooKT0+aEksRm9vdHByaW50czooKT0+ZkksRm9ya0tuaWZlOigpPT5TOCxGb3JrS25pZmVDcm9zc2VkOigpPT5rOCxGb3JrbGlmdDooKT0+bUksRm9ybTooKT0+Z0ksRm9ybUlucHV0OigpPT5LNixGb3J3YXJkOigpPT5iSSxGcmFtZTooKT0+dkksRnJvd246KCk9PnhJLEZ1ZWw6KCk9PnlJLEZ1bGxzY3JlZW46KCk9PndJLEZ1bmN0aW9uU3F1YXJlOigpPT5JNSxGdW5uZWw6KCk9PnA2LEZ1bm5lbFBsdXM6KCk9PmtJLEZ1bm5lbFg6KCk9PnU2LEdhbGxlcnlIb3Jpem9udGFsOigpPT5fSSxHYWxsZXJ5SG9yaXpvbnRhbEVuZDooKT0+U0ksR2FsbGVyeVRodW1ibmFpbHM6KCk9Pk1JLEdhbGxlcnlWZXJ0aWNhbDooKT0+Q0ksR2FsbGVyeVZlcnRpY2FsRW5kOigpPT56SSxHYW1lcGFkOigpPT5ESSxHYW1lcGFkMjooKT0+VEksR2FtZXBhZERpcmVjdGlvbmFsOigpPT4kSSxHYW50dENoYXJ0OigpPT5XZixHYW50dENoYXJ0U3F1YXJlOigpPT5ZMCxHYXVnZTooKT0+TEksR2F1Z2VDaXJjbGU6KCk9PnVtLEdhdmVsOigpPT5FSSxHZW06KCk9PlBJLEdlb3JnaWFuTGFyaTooKT0+QUksR2hvc3Q6KCk9PklJLEdpZnQ6KCk9PlJJLEdpdEJyYW5jaDooKT0+RkksR2l0QnJhbmNoTWludXM6KCk9Pk5JLEdpdEJyYW5jaFBsdXM6KCk9Pk9JLEdpdENvbW1pdDooKT0+aDYsR2l0Q29tbWl0SG9yaXpvbnRhbDooKT0+aDYsR2l0Q29tbWl0VmVydGljYWw6KCk9PkJJLEdpdENvbXBhcmU6KCk9PnFJLEdpdENvbXBhcmVBcnJvd3M6KCk9PkhJLEdpdEZvcms6KCk9PmpJLEdpdEdyYXBoOigpPT5WSSxHaXRNZXJnZTooKT0+VUksR2l0TWVyZ2VDb25mbGljdDooKT0+V0ksR2l0UHVsbFJlcXVlc3Q6KCk9PlFJLEdpdFB1bGxSZXF1ZXN0QXJyb3c6KCk9PkdJLEdpdFB1bGxSZXF1ZXN0Q2xvc2VkOigpPT5LSSxHaXRQdWxsUmVxdWVzdENyZWF0ZTooKT0+WkksR2l0UHVsbFJlcXVlc3RDcmVhdGVBcnJvdzooKT0+WUksR2l0UHVsbFJlcXVlc3REcmFmdDooKT0+WEksR2xhc3NXYXRlcjooKT0+SkksR2xhc3NlczooKT0+ZUEsR2xvYmU6KCk9PmlBLEdsb2JlMjooKT0+SW0sR2xvYmVMb2NrOigpPT50QSxHbG9iZU9mZjooKT0+c0EsR2xvYmVYOigpPT5hQSxHb2FsOigpPT5yQSxHcHU6KCk9Pm9BLEdyYWI6KCk9PnY2LEdyYWR1YXRpb25DYXA6KCk9Pm5BLEdyYXBlOigpPT5sQSxHcmlkOigpPT5XMCxHcmlkMlgyOigpPT5iNixHcmlkMlgyQ2hlY2s6KCk9PmY2LEdyaWQyWDJQbHVzOigpPT5tNixHcmlkMlgyWDooKT0+ZzYsR3JpZDJ4MjooKT0+YjYsR3JpZDJ4MkNoZWNrOigpPT5mNixHcmlkMngyUGx1czooKT0+bTYsR3JpZDJ4Mlg6KCk9Pmc2LEdyaWQzWDM6KCk9PlcwLEdyaWQzeDI6KCk9PmNBLEdyaWQzeDM6KCk9PlcwLEdyaXA6KCk9PnBBLEdyaXBIb3Jpem9udGFsOigpPT5kQSxHcmlwVmVydGljYWw6KCk9PnVBLEdyb3VwOigpPT5oQSxHdWl0YXI6KCk9PmZBLEhhbTooKT0+bUEsSGFtYnVyZ2VyOigpPT5nQSxIYW1tZXI6KCk9PmJBLEhhbmQ6KCk9PlNBLEhhbmRDb2luczooKT0+dkEsSGFuZEZpc3Q6KCk9PnhBLEhhbmRHcmFiOigpPT52NixIYW5kSGVhcnQ6KCk9PnlBLEhhbmRIZWxwaW5nOigpPT54NixIYW5kTWV0YWw6KCk9PndBLEhhbmRQbGF0dGVyOigpPT5rQSxIYW5kYmFnOigpPT5fQSxIYW5kc2hha2U6KCk9Pk1BLEhhcmREcml2ZTooKT0+JEEsSGFyZERyaXZlRG93bmxvYWQ6KCk9PnpBLEhhcmREcml2ZVVwbG9hZDooKT0+Q0EsSGFyZEhhdDooKT0+VEEsSGFzaDooKT0+REEsSGF0R2xhc3NlczooKT0+TEEsSGF6ZTooKT0+RUEsSGQ6KCk9PlBBLEhkbWlQb3J0OigpPT5JQSxIZWFkaW5nOigpPT5IQSxIZWFkaW5nMTooKT0+QUEsSGVhZGluZzI6KCk9Pk5BLEhlYWRpbmczOigpPT5SQSxIZWFkaW5nNDooKT0+T0EsSGVhZGluZzU6KCk9PkZBLEhlYWRpbmc2OigpPT5CQSxIZWFkcGhvbmVPZmY6KCk9PnFBLEhlYWRwaG9uZXM6KCk9PlZBLEhlYWRzZXQ6KCk9PmpBLEhlYXJ0OigpPT5RQSxIZWFydENyYWNrOigpPT5VQSxIZWFydEhhbmRzaGFrZTooKT0+V0EsSGVhcnRNaW51czooKT0+R0EsSGVhcnRPZmY6KCk9PktBLEhlYXJ0UGx1czooKT0+WUEsSGVhcnRQdWxzZTooKT0+WkEsSGVhcnRYOigpPT5YQSxIZWF0ZXI6KCk9PkpBLEhlbGljb3B0ZXI6KCk9PmVOLEhlbHBDaXJjbGU6KCk9PmowLEhlbHBpbmdIYW5kOigpPT54NixIZXhhZ29uOigpPT50TixIaWdobGlnaHRlcjooKT0+YU4sSGlzdG9yeTooKT0+c04sSG9tZTooKT0+eTYsSG9wOigpPT5pTixIb3BPZmY6KCk9PnJOLEhvc3BpdGFsOigpPT5vTixIb3RlbDooKT0+bk4sSG91cmdsYXNzOigpPT5sTixIb3VzZTooKT0+eTYsSG91c2VIZWFydDooKT0+Y04sSG91c2VQbHVnOigpPT5kTixIb3VzZVBsdXM6KCk9PnBOLEhvdXNlV2lmaTooKT0+dU4sSWNlQ3JlYW06KCk9Pms2LEljZUNyZWFtMjooKT0+dzYsSWNlQ3JlYW1Cb3dsOigpPT53NixJY2VDcmVhbUNvbmU6KCk9Pms2LElkQ2FyZDooKT0+Zk4sSWRDYXJkTGFueWFyZDooKT0+aE4sSW1hZ2U6KCk9PmtOLEltYWdlRG93bjooKT0+bU4sSW1hZ2VNaW51czooKT0+Z04sSW1hZ2VPZmY6KCk9PmJOLEltYWdlUGxheTooKT0+dk4sSW1hZ2VQbHVzOigpPT54TixJbWFnZVVwOigpPT55TixJbWFnZVVwc2NhbGU6KCk9PndOLEltYWdlczooKT0+U04sSW1wb3J0OigpPT5fTixJbmJveDooKT0+TU4sSW5kZW50OigpPT5LMCxJbmRlbnREZWNyZWFzZTooKT0+RzAsSW5kZW50SW5jcmVhc2U6KCk9PkswLEluZGlhblJ1cGVlOigpPT56TixJbmZpbml0eTooKT0+Q04sSW5mbzooKT0+VE4sSW5zcGVjdDooKT0+QjUsSW5zcGVjdGlvblBhbmVsOigpPT4kTixJdGFsaWM6KCk9PkROLEl0ZXJhdGlvbkNjdzooKT0+TE4sSXRlcmF0aW9uQ3c6KCk9PkVOLEphcGFuZXNlWWVuOigpPT5QTixKb3lzdGljazooKT0+SU4sS2FuYmFuOigpPT5BTixLYW5iYW5TcXVhcmU6KCk9PlI1LEthbmJhblNxdWFyZURhc2hlZDooKT0+VDUsS2F5YWs6KCk9Pk5OLEtleTooKT0+Rk4sS2V5Um91bmQ6KCk9Pk9OLEtleVNxdWFyZTooKT0+Uk4sS2V5Ym9hcmQ6KCk9PnFOLEtleWJvYXJkTXVzaWM6KCk9PkJOLEtleWJvYXJkT2ZmOigpPT5ITixMYW1wOigpPT5LTixMYW1wQ2VpbGluZzooKT0+ak4sTGFtcERlc2s6KCk9PlZOLExhbXBGbG9vcjooKT0+VU4sTGFtcFdhbGxEb3duOigpPT5XTixMYW1wV2FsbFVwOigpPT5HTixMYW5kUGxvdDooKT0+WU4sTGFuZG1hcms6KCk9PlpOLExhbmd1YWdlczooKT0+WE4sTGFwdG9wOigpPT5KTixMYXB0b3AyOigpPT5TNixMYXB0b3BNaW5pbWFsOigpPT5TNixMYXB0b3BNaW5pbWFsQ2hlY2s6KCk9PlFOLExhc3NvOigpPT5hUixMYXNzb1NlbGVjdDooKT0+ZVIsTGF1Z2g6KCk9PnRSLExheWVyczooKT0+XzYsTGF5ZXJzMjooKT0+c1IsTGF5ZXJzMzooKT0+XzYsTGF5ZXJzTWludXM6KCk9PmlSLExheWVyc1BsdXM6KCk9PnJSLExheW91dDooKT0+VjYsTGF5b3V0RGFzaGJvYXJkOigpPT5vUixMYXlvdXRHcmlkOigpPT5uUixMYXlvdXRMaXN0OigpPT5sUixMYXlvdXRQYW5lbExlZnQ6KCk9PmNSLExheW91dFBhbmVsVG9wOigpPT51UixMYXlvdXRUZW1wbGF0ZTooKT0+ZFIsTGVhZjooKT0+cFIsTGVhZnlHcmVlbjooKT0+aFIsTGVjdGVybjooKT0+ZlIsTGVuc0NvbmNhdmU6KCk9Pm1SLExlbnNDb252ZXg6KCk9PmdSLExldHRlclRleHQ6KCk9Pmw4LExpYnJhcnk6KCk9PnZSLExpYnJhcnlCaWc6KCk9PmJSLExpYnJhcnlTcXVhcmU6KCk9PkE1LExpZmVCdW95OigpPT54UixMaWdhdHVyZTooKT0+eVIsTGlnaHRidWxiOigpPT53UixMaWdodGJ1bGJPZmY6KCk9PmtSLExpbmVDaGFydDooKT0+amYsTGluZURvdFJpZ2h0SG9yaXpvbnRhbDooKT0+U1IsTGluZVNxdWlnZ2xlOigpPT5NUixMaW5lU3R5bGU6KCk9Pl9SLExpbms6KCk9PlRSLExpbmsyOigpPT5DUixMaW5rMk9mZjooKT0+elIsTGlzdDooKT0+R1IsTGlzdENoZWNrOigpPT4kUixMaXN0Q2hlY2tzOigpPT5EUixMaXN0Q2hldnJvbnNEb3duVXA6KCk9PkxSLExpc3RDaGV2cm9uc1VwRG93bjooKT0+RVIsTGlzdENvbGxhcHNlOigpPT5QUixMaXN0RW5kOigpPT5JUixMaXN0RmlsdGVyOigpPT5OUixMaXN0RmlsdGVyUGx1czooKT0+QVIsTGlzdEluZGVudERlY3JlYXNlOigpPT5HMCxMaXN0SW5kZW50SW5jcmVhc2U6KCk9PkswLExpc3RNaW51czooKT0+UlIsTGlzdE11c2ljOigpPT5PUixMaXN0T3JkZXJlZDooKT0+RlIsTGlzdFBsdXM6KCk9PkJSLExpc3RSZXN0YXJ0OigpPT5IUixMaXN0U3RhcnQ6KCk9PnFSLExpc3RUb2RvOigpPT5qUixMaXN0VHJlZTooKT0+VlIsTGlzdFZpZGVvOigpPT5VUixMaXN0WDooKT0+V1IsTG9hZGVyOigpPT5ZUixMb2FkZXIyOigpPT5NNixMb2FkZXJDaXJjbGU6KCk9Pk02LExvYWRlclBpbndoZWVsOigpPT5LUixMb2NhdGU6KCk9PlFSLExvY2F0ZUZpeGVkOigpPT5aUixMb2NhdGVPZmY6KCk9PlhSLExvY2F0aW9uRWRpdDooKT0+JDYsTG9jazooKT0+ZU8sTG9ja0tleWhvbGU6KCk9PkpSLExvY2tLZXlob2xlT3BlbjooKT0+ejYsTG9ja09wZW46KCk9PkM2LExvZ0luOigpPT50TyxMb2dPdXQ6KCk9PmFPLExvZ3M6KCk9PnNPLExvbGxpcG9wOigpPT5pTyxMdWdnYWdlOigpPT5yTyxNU3F1YXJlOigpPT5ONSxNYWduZXQ6KCk9Pm5PLE1haWw6KCk9Pm1PLE1haWxDaGVjazooKT0+b08sTWFpbE1pbnVzOigpPT5sTyxNYWlsT3BlbjooKT0+Y08sTWFpbFBsdXM6KCk9PmRPLE1haWxRdWVzdGlvbjooKT0+VDYsTWFpbFF1ZXN0aW9uTWFyazooKT0+VDYsTWFpbFNlYXJjaDooKT0+dU8sTWFpbFdhcm5pbmc6KCk9PnBPLE1haWxYOigpPT5oTyxNYWlsYm94OigpPT5mTyxNYWlsczooKT0+Z08sTWFwOigpPT5FTyxNYXBNaW51czooKT0+Yk8sTWFwUGluOigpPT4kTyxNYXBQaW5DaGVjazooKT0+eE8sTWFwUGluQ2hlY2tJbnNpZGU6KCk9PnZPLE1hcFBpbkhvdXNlOigpPT55TyxNYXBQaW5NaW51czooKT0+a08sTWFwUGluTWludXNJbnNpZGU6KCk9PndPLE1hcFBpbk9mZjooKT0+U08sTWFwUGluUGVuOigpPT4kNixNYXBQaW5QbHVzOigpPT5NTyxNYXBQaW5QbHVzSW5zaWRlOigpPT5fTyxNYXBQaW5TZWFyY2g6KCk9PnpPLE1hcFBpblg6KCk9PkNPLE1hcFBpblhJbnNpZGU6KCk9PlRPLE1hcFBpbm5lZDooKT0+RE8sTWFwUGx1czooKT0+TE8sTWFyczooKT0+SU8sTWFyc1N0cm9rZTooKT0+UE8sTWFydGluaTooKT0+QU8sTWF4aW1pemU6KCk9PlJPLE1heGltaXplMjooKT0+Tk8sTWVkYWw6KCk9Pk9PLE1lZ2FwaG9uZTooKT0+Qk8sTWVnYXBob25lT2ZmOigpPT5GTyxNZWg6KCk9PkhPLE1lbW9yeVN0aWNrOigpPT5xTyxNZW51OigpPT5qTyxNZW51U3F1YXJlOigpPT5PNSxNZXJnZTooKT0+Vk8sTWVzc2FnZUNpcmNsZTooKT0+dEYsTWVzc2FnZUNpcmNsZUNoZWNrOigpPT5VTyxNZXNzYWdlQ2lyY2xlQ29kZTooKT0+V08sTWVzc2FnZUNpcmNsZURhc2hlZDooKT0+R08sTWVzc2FnZUNpcmNsZUhlYXJ0OigpPT5LTyxNZXNzYWdlQ2lyY2xlTW9yZTooKT0+WU8sTWVzc2FnZUNpcmNsZU9mZjooKT0+Wk8sTWVzc2FnZUNpcmNsZVBsdXM6KCk9PlhPLE1lc3NhZ2VDaXJjbGVRdWVzdGlvbjooKT0+RDYsTWVzc2FnZUNpcmNsZVF1ZXN0aW9uTWFyazooKT0+RDYsTWVzc2FnZUNpcmNsZVJlcGx5OigpPT5RTyxNZXNzYWdlQ2lyY2xlV2FybmluZzooKT0+Sk8sTWVzc2FnZUNpcmNsZVg6KCk9PmVGLE1lc3NhZ2VTcXVhcmU6KCk9PnZGLE1lc3NhZ2VTcXVhcmVDaGVjazooKT0+c0YsTWVzc2FnZVNxdWFyZUNvZGU6KCk9PmFGLE1lc3NhZ2VTcXVhcmVEYXNoZWQ6KCk9PmlGLE1lc3NhZ2VTcXVhcmVEaWZmOigpPT5yRixNZXNzYWdlU3F1YXJlRG90OigpPT5vRixNZXNzYWdlU3F1YXJlSGVhcnQ6KCk9Pm5GLE1lc3NhZ2VTcXVhcmVMb2NrOigpPT5sRixNZXNzYWdlU3F1YXJlTW9yZTooKT0+Y0YsTWVzc2FnZVNxdWFyZU9mZjooKT0+ZEYsTWVzc2FnZVNxdWFyZVBsdXM6KCk9PnVGLE1lc3NhZ2VTcXVhcmVRdW90ZTooKT0+cEYsTWVzc2FnZVNxdWFyZVJlcGx5OigpPT5oRixNZXNzYWdlU3F1YXJlU2hhcmU6KCk9PmZGLE1lc3NhZ2VTcXVhcmVUZXh0OigpPT5tRixNZXNzYWdlU3F1YXJlV2FybmluZzooKT0+Z0YsTWVzc2FnZVNxdWFyZVg6KCk9PmJGLE1lc3NhZ2VzU3F1YXJlOigpPT54RixNZXRyb25vbWU6KCk9PnlGLE1pYzooKT0+a0YsTWljMjooKT0+TDYsTWljT2ZmOigpPT53RixNaWNWb2NhbDooKT0+TDYsTWljcm9jaGlwOigpPT5TRixNaWNyb3Njb3BlOigpPT5fRixNaWNyb3dhdmU6KCk9Pk1GLE1pbGVzdG9uZTooKT0+ekYsTWlsazooKT0+VEYsTWlsa09mZjooKT0+Q0YsTWluaW1pemU6KCk9PkRGLE1pbmltaXplMjooKT0+JEYsTWludXM6KCk9PkxGLE1pbnVzQ2lyY2xlOigpPT5wbSxNaW51c1NxdWFyZTooKT0+RjUsTWlycm9yUmVjdGFuZ3VsYXI6KCk9PkVGLE1pcnJvclJvdW5kOigpPT5QRixNb25pdG9yOigpPT5HRixNb25pdG9yQ2hlY2s6KCk9PklGLE1vbml0b3JDbG91ZDooKT0+QUYsTW9uaXRvckNvZzooKT0+TkYsTW9uaXRvckRvdDooKT0+UkYsTW9uaXRvckRvd246KCk9PkZGLE1vbml0b3JPZmY6KCk9Pk9GLE1vbml0b3JQYXVzZTooKT0+QkYsTW9uaXRvclBsYXk6KCk9PkhGLE1vbml0b3JTbWFydHBob25lOigpPT5xRixNb25pdG9yU3BlYWtlcjooKT0+akYsTW9uaXRvclN0b3A6KCk9PlVGLE1vbml0b3JVcDooKT0+VkYsTW9uaXRvclg6KCk9PldGLE1vb246KCk9PllGLE1vb25TdGFyOigpPT5LRixNb3JlSG9yaXpvbnRhbDooKT0+Tm0sTW9yZVZlcnRpY2FsOigpPT5BbSxNb3RvcmJpa2U6KCk9PlpGLE1vdW50YWluOigpPT5RRixNb3VudGFpblNub3c6KCk9PlhGLE1vdXNlOigpPT5uQixNb3VzZUxlZnQ6KCk9PkpGLE1vdXNlT2ZmOigpPT5lQixNb3VzZVBvaW50ZXI6KCk9PnJCLE1vdXNlUG9pbnRlcjI6KCk9PmFCLE1vdXNlUG9pbnRlcjJPZmY6KCk9PnRCLE1vdXNlUG9pbnRlckJhbjooKT0+c0IsTW91c2VQb2ludGVyQ2xpY2s6KCk9PmlCLE1vdXNlUG9pbnRlclNxdWFyZURhc2hlZDooKT0+JDUsTW91c2VSaWdodDooKT0+b0IsTW92ZTooKT0+eUIsTW92ZTNEOigpPT5FNixNb3ZlM2Q6KCk9PkU2LE1vdmVEaWFnb25hbDooKT0+Y0IsTW92ZURpYWdvbmFsMjooKT0+bEIsTW92ZURvd246KCk9PnBCLE1vdmVEb3duTGVmdDooKT0+ZEIsTW92ZURvd25SaWdodDooKT0+dUIsTW92ZUhvcml6b250YWw6KCk9PmhCLE1vdmVMZWZ0OigpPT5mQixNb3ZlUmlnaHQ6KCk9Pm1CLE1vdmVVcDooKT0+dkIsTW92ZVVwTGVmdDooKT0+Z0IsTW92ZVVwUmlnaHQ6KCk9PmJCLE1vdmVWZXJ0aWNhbDooKT0+eEIsTXVzaWM6KCk9Pl9CLE11c2ljMjooKT0+d0IsTXVzaWMzOigpPT5TQixNdXNpYzQ6KCk9PmtCLE5hdmlnYXRpb246KCk9PlRCLE5hdmlnYXRpb24yOigpPT56QixOYXZpZ2F0aW9uMk9mZjooKT0+TUIsTmF2aWdhdGlvbk9mZjooKT0+Q0IsTmV0d29yazooKT0+JEIsTmV3c3BhcGVyOigpPT5EQixOZmM6KCk9PkxCLE5vbkJpbmFyeTooKT0+RUIsTm90ZWJvb2s6KCk9Pk5CLE5vdGVib29rUGVuOigpPT5QQixOb3RlYm9va1RhYnM6KCk9PkFCLE5vdGVib29rVGV4dDooKT0+SUIsTm90ZXBhZFRleHQ6KCk9Pk9CLE5vdGVwYWRUZXh0RGFzaGVkOigpPT5SQixOdXQ6KCk9PkJCLE51dE9mZjooKT0+RkIsT2N0YWdvbjooKT0+cUIsT2N0YWdvbkFsZXJ0OigpPT5QNixPY3RhZ29uTWludXM6KCk9PkhCLE9jdGFnb25QYXVzZTooKT0+STYsT2N0YWdvblg6KCk9PkE2LE9tZWdhOigpPT5qQixPcHRpb246KCk9PlZCLE9yYml0OigpPT5VQixPcmlnYW1pOigpPT5XQixPdXRkZW50OigpPT5HMCxQYWNrYWdlOigpPT5KQixQYWNrYWdlMjooKT0+R0IsUGFja2FnZUNoZWNrOigpPT5LQixQYWNrYWdlTWludXM6KCk9PllCLFBhY2thZ2VPcGVuOigpPT5aQixQYWNrYWdlUGx1czooKT0+WEIsUGFja2FnZVNlYXJjaDooKT0+UUIsUGFja2FnZVg6KCk9PmVILFBhaW50QnVja2V0OigpPT50SCxQYWludFJvbGxlcjooKT0+YUgsUGFpbnRicnVzaDooKT0+c0gsUGFpbnRicnVzaDI6KCk9Pk42LFBhaW50YnJ1c2hWZXJ0aWNhbDooKT0+TjYsUGFsZXR0ZTooKT0+aUgsUGFsbXRyZWU6KCk9PnU4LFBhbmRhOigpPT5vSCxQYW5lbEJvdHRvbTooKT0+bEgsUGFuZWxCb3R0b21DbG9zZTooKT0+ckgsUGFuZWxCb3R0b21EYXNoZWQ6KCk9PlI2LFBhbmVsQm90dG9tSW5hY3RpdmU6KCk9PlI2LFBhbmVsQm90dG9tT3BlbjooKT0+bkgsUGFuZWxMZWZ0OigpPT5INixQYW5lbExlZnRDbG9zZTooKT0+TzYsUGFuZWxMZWZ0RGFzaGVkOigpPT5GNixQYW5lbExlZnRJbmFjdGl2ZTooKT0+RjYsUGFuZWxMZWZ0T3BlbjooKT0+QjYsUGFuZWxMZWZ0UmlnaHREYXNoZWQ6KCk9PmNILFBhbmVsUmlnaHQ6KCk9PmhILFBhbmVsUmlnaHRDbG9zZTooKT0+ZEgsUGFuZWxSaWdodERhc2hlZDooKT0+cTYsUGFuZWxSaWdodEluYWN0aXZlOigpPT5xNixQYW5lbFJpZ2h0T3BlbjooKT0+dUgsUGFuZWxUb3A6KCk9PmdILFBhbmVsVG9wQm90dG9tRGFzaGVkOigpPT5wSCxQYW5lbFRvcENsb3NlOigpPT5mSCxQYW5lbFRvcERhc2hlZDooKT0+ajYsUGFuZWxUb3BJbmFjdGl2ZTooKT0+ajYsUGFuZWxUb3BPcGVuOigpPT5tSCxQYW5lbHNMZWZ0Qm90dG9tOigpPT5iSCxQYW5lbHNMZWZ0UmlnaHQ6KCk9PkxtLFBhbmVsc1JpZ2h0Qm90dG9tOigpPT52SCxQYW5lbHNUb3BCb3R0b206KCk9Plg2LFBhbmVsc1RvcExlZnQ6KCk9PlY2LFBhcGVyY2xpcDooKT0+eEgsUGFyZW50aGVzZXM6KCk9PnlILFBhcmtpbmdDaXJjbGU6KCk9PmZtLFBhcmtpbmdDaXJjbGVPZmY6KCk9PmhtLFBhcmtpbmdNZXRlcjooKT0+d0gsUGFya2luZ1NxdWFyZTooKT0+cTUsUGFya2luZ1NxdWFyZU9mZjooKT0+SDUsUGFydHlQb3BwZXI6KCk9PlNILFBhdXNlOigpPT5rSCxQYXVzZUNpcmNsZTooKT0+bW0sUGF1c2VPY3RhZ29uOigpPT5JNixQYXdQcmludDooKT0+X0gsUGNDYXNlOigpPT5NSCxQZW46KCk9Plc2LFBlbkJveDooKT0+VjEsUGVuTGluZTooKT0+VTYsUGVuT2ZmOigpPT56SCxQZW5TcXVhcmU6KCk9PlYxLFBlblRvb2w6KCk9PkNILFBlbmNpbDooKT0+REgsUGVuY2lsTGluZTooKT0+VEgsUGVuY2lsT2ZmOigpPT4kSCxQZW5jaWxSdWxlcjooKT0+TEgsUGVudGFnb246KCk9PkVILFBlcmNlbnQ6KCk9PlBILFBlcmNlbnRDaXJjbGU6KCk9PmdtLFBlcmNlbnREaWFtb25kOigpPT5QbSxQZXJjZW50U3F1YXJlOigpPT5qNSxQZXJzb25TdGFuZGluZzooKT0+SUgsUGhpbGlwcGluZVBlc286KCk9PkFILFBob25lOigpPT5qSCxQaG9uZUNhbGw6KCk9Pk5ILFBob25lRm9yd2FyZGVkOigpPT5SSCxQaG9uZUluY29taW5nOigpPT5PSCxQaG9uZU1pc3NlZDooKT0+RkgsUGhvbmVPZmY6KCk9PkJILFBob25lT3V0Z29pbmc6KCk9PkhILFBpOigpPT5xSCxQaVNxdWFyZTooKT0+VjUsUGlhbm86KCk9PlZILFBpY2theGU6KCk9PlVILFBpY3R1cmVJblBpY3R1cmU6KCk9PkdILFBpY3R1cmVJblBpY3R1cmUyOigpPT5XSCxQaWVDaGFydDooKT0+R2YsUGlnZ3lCYW5rOigpPT5LSCxQaWxjcm93OigpPT5YSCxQaWxjcm93TGVmdDooKT0+WUgsUGlsY3Jvd1JpZ2h0OigpPT5aSCxQaWxjcm93U3F1YXJlOigpPT5VNSxQaWxsOigpPT5lcSxQaWxsQm90dGxlOigpPT5RSCxQaW46KCk9PnRxLFBpbk9mZjooKT0+SkgsUGlwZXR0ZTooKT0+YXEsUGl6emE6KCk9PnNxLFBsYW5lOigpPT5vcSxQbGFuZUxhbmRpbmc6KCk9PmlxLFBsYW5lVGFrZW9mZjooKT0+cnEsUGxheTooKT0+bnEsUGxheUNpcmNsZTooKT0+Ym0sUGxheVNxdWFyZTooKT0+RzUsUGx1ZzooKT0+Y3EsUGx1ZzI6KCk9PmxxLFBsdWdaYXA6KCk9Pkc2LFBsdWdaYXAyOigpPT5HNixQbHVzOigpPT5kcSxQbHVzQ2lyY2xlOigpPT52bSxQbHVzU3F1YXJlOigpPT5XNSxQb2NrZXRLbmlmZTooKT0+dXEsUG9kY2FzdDooKT0+cHEsUG9pbnRlcjooKT0+aHEsUG9pbnRlck9mZjooKT0+ZnEsUG9wY29ybjooKT0+bXEsUG9wc2ljbGU6KCk9PmdxLFBvdW5kU3Rlcmxpbmc6KCk9PmJxLFBvd2VyOigpPT54cSxQb3dlckNpcmNsZTooKT0+eG0sUG93ZXJPZmY6KCk9PnZxLFBvd2VyU3F1YXJlOigpPT5LNSxQcmVzZW50YXRpb246KCk9PnlxLFByaW50ZXI6KCk9PlNxLFByaW50ZXJDaGVjazooKT0+a3EsUHJpbnRlclg6KCk9PndxLFByb2plY3RvcjooKT0+enEsUHJvcG9ydGlvbnM6KCk9Pl9xLFB1enpsZTooKT0+TXEsUHlyYW1pZDooKT0+Q3EsUXJDb2RlOigpPT4kcSxRdW90ZTooKT0+VHEsUmFiYml0OigpPT5McSxSYWRhcjooKT0+RHEsUmFkaWF0aW9uOigpPT5FcSxSYWRpY2FsOigpPT5QcSxSYWRpbzooKT0+UnEsUmFkaW9PZmY6KCk9PklxLFJhZGlvUmVjZWl2ZXI6KCk9PkFxLFJhZGlvVG93ZXI6KCk9Pk5xLFJhZGl1czooKT0+T3EsUmFpbmJvdzooKT0+RnEsUmF0OigpPT5CcSxSYXRpbzooKT0+SHEsUmVjZWlwdDooKT0+WnEsUmVjZWlwdENlbnQ6KCk9PnFxLFJlY2VpcHRFdXJvOigpPT5qcSxSZWNlaXB0SW5kaWFuUnVwZWU6KCk9PlZxLFJlY2VpcHRKYXBhbmVzZVllbjooKT0+V3EsUmVjZWlwdFBvdW5kU3Rlcmxpbmc6KCk9PlVxLFJlY2VpcHRSdXNzaWFuUnVibGU6KCk9PkdxLFJlY2VpcHRTd2lzc0ZyYW5jOigpPT5ZcSxSZWNlaXB0VGV4dDooKT0+S3EsUmVjZWlwdFR1cmtpc2hMaXJhOigpPT5YcSxSZWN0YW5nbGVDaXJjbGU6KCk9PlFxLFJlY3RhbmdsZUVsbGlwc2lzOigpPT5LNixSZWN0YW5nbGVHb2dnbGVzOigpPT5KcSxSZWN0YW5nbGVIb3Jpem9udGFsOigpPT5laixSZWN0YW5nbGVWZXJ0aWNhbDooKT0+dGosUmVjeWNsZTooKT0+YWosUmVkbzooKT0+cmosUmVkbzI6KCk9PnNqLFJlZG9Eb3Q6KCk9PmlqLFJlZnJlc2hDY3c6KCk9Pm5qLFJlZnJlc2hDY3dEb3Q6KCk9Pm9qLFJlZnJlc2hDdzooKT0+Y2osUmVmcmVzaEN3T2ZmOigpPT5saixSZWZyaWdlcmF0b3I6KCk9PmRqLFJlZ2V4OigpPT51aixSZW1vdmVGb3JtYXR0aW5nOigpPT5waixSZXBlYXQ6KCk9PmdqLFJlcGVhdDE6KCk9PmZqLFJlcGVhdDI6KCk9PmhqLFJlcGVhdE9mZjooKT0+bWosUmVwbGFjZTooKT0+dmosUmVwbGFjZUFsbDooKT0+YmosUmVwbHk6KCk9PnlqLFJlcGx5QWxsOigpPT54aixSZXdpbmQ6KCk9PmtqLFJpYmJvbjooKT0+d2osUm9hZDooKT0+U2osUm9ja2V0OigpPT5faixSb2NraW5nQ2hhaXI6KCk9Pk1qLFJvbGxlckNvYXN0ZXI6KCk9PnpqLFJvc2U6KCk9PkNqLFJvdGF0ZTNEOigpPT5ZNixSb3RhdGUzZDooKT0+WTYsUm90YXRlQ2N3OigpPT5EaixSb3RhdGVDY3dLZXk6KCk9PlRqLFJvdGF0ZUNjd1NxdWFyZTooKT0+JGosUm90YXRlQ3c6KCk9PkVqLFJvdGF0ZUN3U3F1YXJlOigpPT5MaixSb3V0ZTooKT0+SWosUm91dGVPZmY6KCk9PlBqLFJvdXRlcjooKT0+QWosUm93czooKT0+WjYsUm93czI6KCk9Plo2LFJvd3MzOigpPT5YNixSb3dzNDooKT0+TmosUnNzOigpPT5SaixSdWxlcjooKT0+RmosUnVsZXJEaW1lbnNpb25MaW5lOigpPT5PaixSdXNzaWFuUnVibGU6KCk9PkJqLFNhaWxib2F0OigpPT5IaixTYWxhZDooKT0+cWosU2FuZHdpY2g6KCk9PmpqLFNhdGVsbGl0ZTooKT0+VmosU2F0ZWxsaXRlRGlzaDooKT0+VWosU2F1ZGlSaXlhbDooKT0+V2osU2F2ZTooKT0+WWosU2F2ZUFsbDooKT0+S2osU2F2ZU9mZjooKT0+R2osU2NhbGU6KCk9PlpqLFNjYWxlM0Q6KCk9PlE2LFNjYWxlM2Q6KCk9PlE2LFNjYWxpbmc6KCk9PlFqLFNjYW46KCk9Pm9WLFNjYW5CYXJjb2RlOigpPT5YaixTY2FuRXllOigpPT5KaixTY2FuRmFjZTooKT0+ZVYsU2NhbkhlYXJ0OigpPT50VixTY2FuTGluZTooKT0+YVYsU2NhblFyQ29kZTooKT0+c1YsU2NhblNlYXJjaDooKT0+aVYsU2NhblRleHQ6KCk9PnJWLFNjYXR0ZXJDaGFydDooKT0+S2YsU2Nob29sOigpPT5uVixTY2hvb2wyOigpPT5mOCxTY2lzc29yczooKT0+Y1YsU2Npc3NvcnNMaW5lRGFzaGVkOigpPT5sVixTY2lzc29yc1NxdWFyZTooKT0+WjUsU2Npc3NvcnNTcXVhcmVEYXNoZWRCb3R0b206KCk9PnY1LFNjb290ZXI6KCk9PmRWLFNjcmVlblNoYXJlOigpPT5wVixTY3JlZW5TaGFyZU9mZjooKT0+dVYsU2Nyb2xsOigpPT5mVixTY3JvbGxUZXh0OigpPT5oVixTZWFyY2g6KCk9PnlWLFNlYXJjaEFsZXJ0OigpPT5tVixTZWFyY2hDaGVjazooKT0+Z1YsU2VhcmNoQ29kZTooKT0+YlYsU2VhcmNoU2xhc2g6KCk9PnZWLFNlYXJjaFg6KCk9PnhWLFNlY3Rpb246KCk9PndWLFNlbmQ6KCk9PlNWLFNlbmRIb3Jpem9uYWw6KCk9Pko2LFNlbmRIb3Jpem9udGFsOigpPT5KNixTZW5kVG9CYWNrOigpPT5rVixTZXBhcmF0b3JIb3Jpem9udGFsOigpPT5fVixTZXBhcmF0b3JWZXJ0aWNhbDooKT0+TVYsU2VydmVyOigpPT4kVixTZXJ2ZXJDb2c6KCk9PnpWLFNlcnZlckNyYXNoOigpPT5DVixTZXJ2ZXJPZmY6KCk9PlRWLFNldHRpbmdzOigpPT5FVixTZXR0aW5nczI6KCk9PkRWLFNoYXBlczooKT0+TFYsU2hhcmU6KCk9PklWLFNoYXJlMjooKT0+UFYsU2hlZXQ6KCk9Pk5WLFNoZWxsOigpPT5BVixTaGVsdmluZ1VuaXQ6KCk9PlJWLFNoaWVsZDooKT0+WVYsU2hpZWxkQWxlcnQ6KCk9Pk9WLFNoaWVsZEJhbjooKT0+RlYsU2hpZWxkQ2hlY2s6KCk9PkJWLFNoaWVsZENsb3NlOigpPT50NSxTaGllbGRDb2c6KCk9PmpWLFNoaWVsZENvZ0Nvcm5lcjooKT0+SFYsU2hpZWxkRWxsaXBzaXM6KCk9PnFWLFNoaWVsZEhhbGY6KCk9PlZWLFNoaWVsZE1pbnVzOigpPT5VVixTaGllbGRPZmY6KCk9PldWLFNoaWVsZFBsdXM6KCk9PkdWLFNoaWVsZFF1ZXN0aW9uOigpPT5lNSxTaGllbGRRdWVzdGlvbk1hcms6KCk9PmU1LFNoaWVsZFVzZXI6KCk9PktWLFNoaWVsZFg6KCk9PnQ1LFNoaXA6KCk9PlpWLFNoaXBXaGVlbDooKT0+WFYsU2hpcnQ6KCk9PlFWLFNob3BwaW5nQmFnOigpPT5KVixTaG9wcGluZ0Jhc2tldDooKT0+ZVUsU2hvcHBpbmdDYXJ0OigpPT50VSxTaG92ZWw6KCk9PmFVLFNob3dlckhlYWQ6KCk9PnNVLFNocmVkZGVyOigpPT5pVSxTaHJpbXA6KCk9Pm9VLFNocmluazooKT0+clUsU2hydWI6KCk9Pm5VLFNodWZmbGU6KCk9PmxVLFNpZGViYXI6KCk9Pkg2LFNpZGViYXJDbG9zZTooKT0+TzYsU2lkZWJhck9wZW46KCk9PkI2LFNpZ21hOigpPT5jVSxTaWdtYVNxdWFyZTooKT0+WTUsU2lnbmFsOigpPT5mVSxTaWduYWxIaWdoOigpPT5kVSxTaWduYWxMb3c6KCk9PnVVLFNpZ25hbE1lZGl1bTooKT0+cFUsU2lnbmFsWmVybzooKT0+aFUsU2lnbmF0dXJlOigpPT5tVSxTaWducG9zdDooKT0+YlUsU2lnbnBvc3RCaWc6KCk9PmdVLFNpcmVuOigpPT52VSxTa2lwQmFjazooKT0+eFUsU2tpcEZvcndhcmQ6KCk9PnlVLFNrdWxsOigpPT53VSxTbGFzaDooKT0+a1UsU2xhc2hTcXVhcmU6KCk9Plg1LFNsaWNlOigpPT5fVSxTbGlkZXJzOigpPT5hNSxTbGlkZXJzSG9yaXpvbnRhbDooKT0+U1UsU2xpZGVyc1ZlcnRpY2FsOigpPT5hNSxTbWFydHBob25lOigpPT5UVSxTbWFydHBob25lQ2hhcmdpbmc6KCk9Pk1VLFNtYXJ0cGhvbmVOZmM6KCk9PnpVLFNtaWxlOigpPT4kVSxTbWlsZVBsdXM6KCk9PkNVLFNuYWlsOigpPT5EVSxTbm93Zmxha2U6KCk9PkxVLFNvYXBEaXNwZW5zZXJEcm9wbGV0OigpPT5FVSxTb2ZhOigpPT5QVSxTb2xhclBhbmVsOigpPT5JVSxTb3J0QXNjOigpPT56ZixTb3J0RGVzYzooKT0+U2YsU291cDooKT0+QVUsU3BhY2U6KCk9Pk5VLFNwYWRlOigpPT5SVSxTcGFya2xlOigpPT5PVSxTcGFya2xlczooKT0+czUsU3BlYWtlcjooKT0+RlUsU3BlZWNoOigpPT5CVSxTcGVsbENoZWNrOigpPT5IVSxTcGVsbENoZWNrMjooKT0+cVUsU3BsaW5lOigpPT5WVSxTcGxpbmVQb2ludGVyOigpPT5qVSxTcGxpdDooKT0+VVUsU3BsaXRTcXVhcmVIb3Jpem9udGFsOigpPT5RNSxTcGxpdFNxdWFyZVZlcnRpY2FsOigpPT5KNSxTcG9vbDooKT0+V1UsU3BvcnRTaG9lOigpPT5HVSxTcG90bGlnaHQ6KCk9PlpVLFNwcmF5Q2FuOigpPT5LVSxTcHJvdXQ6KCk9PllVLFNxdWFyZTooKT0+Y1csU3F1YXJlQWN0aXZpdHk6KCk9Pmk1LFNxdWFyZUFycm93RG93bjooKT0+bjUsU3F1YXJlQXJyb3dEb3duTGVmdDooKT0+cjUsU3F1YXJlQXJyb3dEb3duUmlnaHQ6KCk9Pm81LFNxdWFyZUFycm93TGVmdDooKT0+bDUsU3F1YXJlQXJyb3dPdXREb3duTGVmdDooKT0+YzUsU3F1YXJlQXJyb3dPdXREb3duUmlnaHQ6KCk9PmQ1LFNxdWFyZUFycm93T3V0VXBMZWZ0OigpPT51NSxTcXVhcmVBcnJvd091dFVwUmlnaHQ6KCk9PnA1LFNxdWFyZUFycm93UmlnaHQ6KCk9Pmg1LFNxdWFyZUFycm93UmlnaHRFbnRlcjooKT0+WFUsU3F1YXJlQXJyb3dSaWdodEV4aXQ6KCk9PlFVLFNxdWFyZUFycm93VXA6KCk9Pmc1LFNxdWFyZUFycm93VXBMZWZ0OigpPT5mNSxTcXVhcmVBcnJvd1VwUmlnaHQ6KCk9Pm01LFNxdWFyZUFzdGVyaXNrOigpPT5iNSxTcXVhcmVCb3R0b21EYXNoZWRTY2lzc29yczooKT0+djUsU3F1YXJlQ2VudGVybGluZURhc2hlZEhvcml6b250YWw6KCk9Png1LFNxdWFyZUNlbnRlcmxpbmVEYXNoZWRWZXJ0aWNhbDooKT0+eTUsU3F1YXJlQ2hhcnRHYW50dDooKT0+WTAsU3F1YXJlQ2hlY2s6KCk9Pms1LFNxdWFyZUNoZWNrQmlnOigpPT53NSxTcXVhcmVDaGV2cm9uRG93bjooKT0+UzUsU3F1YXJlQ2hldnJvbkxlZnQ6KCk9Pl81LFNxdWFyZUNoZXZyb25SaWdodDooKT0+TTUsU3F1YXJlQ2hldnJvblVwOigpPT56NSxTcXVhcmVDb2RlOigpPT5DNSxTcXVhcmVEYXNoZWQ6KCk9PkQ1LFNxdWFyZURhc2hlZEJvdHRvbTooKT0+ZVcsU3F1YXJlRGFzaGVkQm90dG9tQ29kZTooKT0+SlUsU3F1YXJlRGFzaGVkS2FuYmFuOigpPT5UNSxTcXVhcmVEYXNoZWRNb3VzZVBvaW50ZXI6KCk9PiQ1LFNxdWFyZURhc2hlZFRleHQ6KCk9PlowLFNxdWFyZURhc2hlZFRvcFNvbGlkOigpPT50VyxTcXVhcmVEaXZpZGU6KCk9PkU1LFNxdWFyZURvdDooKT0+TDUsU3F1YXJlRXF1YWw6KCk9PlA1LFNxdWFyZUZ1bmN0aW9uOigpPT5JNSxTcXVhcmVHYW50dENoYXJ0OigpPT5ZMCxTcXVhcmVLYW5iYW46KCk9PlI1LFNxdWFyZUxpYnJhcnk6KCk9PkE1LFNxdWFyZU06KCk9Pk41LFNxdWFyZU1lbnU6KCk9Pk81LFNxdWFyZU1pbnVzOigpPT5GNSxTcXVhcmVNb3VzZVBvaW50ZXI6KCk9PkI1LFNxdWFyZVBhcmtpbmc6KCk9PnE1LFNxdWFyZVBhcmtpbmdPZmY6KCk9Pkg1LFNxdWFyZVBhdXNlOigpPT5hVyxTcXVhcmVQZW46KCk9PlYxLFNxdWFyZVBlcmNlbnQ6KCk9Pmo1LFNxdWFyZVBpOigpPT5WNSxTcXVhcmVQaWxjcm93OigpPT5VNSxTcXVhcmVQbGF5OigpPT5HNSxTcXVhcmVQbHVzOigpPT5XNSxTcXVhcmVQb3dlcjooKT0+SzUsU3F1YXJlUmFkaWNhbDooKT0+c1csU3F1YXJlUm91bmRDb3JuZXI6KCk9PmlXLFNxdWFyZVNjaXNzb3JzOigpPT5aNSxTcXVhcmVTaWdtYTooKT0+WTUsU3F1YXJlU2xhc2g6KCk9Plg1LFNxdWFyZVNwbGl0SG9yaXpvbnRhbDooKT0+UTUsU3F1YXJlU3BsaXRWZXJ0aWNhbDooKT0+SjUsU3F1YXJlU3F1YXJlOigpPT5yVyxTcXVhcmVTdGFjazooKT0+b1csU3F1YXJlU3RhcjooKT0+blcsU3F1YXJlU3RvcDooKT0+bFcsU3F1YXJlVGVybWluYWw6KCk9PmU4LFNxdWFyZVVzZXI6KCk9PnM4LFNxdWFyZVVzZXJSb3VuZDooKT0+dDgsU3F1YXJlWDooKT0+YTgsU3F1YXJlc0V4Y2x1ZGU6KCk9PmRXLFNxdWFyZXNJbnRlcnNlY3Q6KCk9PnVXLFNxdWFyZXNTdWJ0cmFjdDooKT0+cFcsU3F1YXJlc1VuaXRlOigpPT5oVyxTcXVpcmNsZTooKT0+bVcsU3F1aXJjbGVEYXNoZWQ6KCk9PmZXLFNxdWlycmVsOigpPT5nVyxTdGFtcDooKT0+YlcsU3RhcjooKT0+eVcsU3RhckhhbGY6KCk9PnZXLFN0YXJPZmY6KCk9PnhXLFN0YXJzOigpPT5zNSxTdGVwQmFjazooKT0+d1csU3RlcEZvcndhcmQ6KCk9PmtXLFN0ZXRob3Njb3BlOigpPT5fVyxTdGlja2VyOigpPT5TVyxTdGlja3lOb3RlOigpPT5NVyxTdG9uZTooKT0+VFcsU3RvcENpcmNsZTooKT0+d20sU3RvcmU6KCk9PnpXLFN0cmV0Y2hIb3Jpem9udGFsOigpPT5DVyxTdHJldGNoVmVydGljYWw6KCk9PiRXLFN0cmlrZXRocm91Z2g6KCk9PkRXLFN1YnNjcmlwdDooKT0+TFcsU3VidGl0bGVzOigpPT5BZixTdW46KCk9Pk5XLFN1bkRpbTooKT0+RVcsU3VuTWVkaXVtOigpPT5QVyxTdW5Nb29uOigpPT5JVyxTdW5Tbm93OigpPT5BVyxTdW5yaXNlOigpPT5SVyxTdW5zZXQ6KCk9Pk9XLFN1cGVyc2NyaXB0OigpPT5GVyxTd2F0Y2hCb29rOigpPT5CVyxTd2lzc0ZyYW5jOigpPT5IVyxTd2l0Y2hDYW1lcmE6KCk9PnFXLFN3b3JkOigpPT5qVyxTd29yZHM6KCk9PlZXLFN5cmluZ2U6KCk9PlVXLFRhYmxlOigpPT5lRyxUYWJsZTI6KCk9PldXLFRhYmxlQ2VsbHNNZXJnZTooKT0+R1csVGFibGVDZWxsc1NwbGl0OigpPT5LVyxUYWJsZUNvbHVtbnNTcGxpdDooKT0+WVcsVGFibGVDb25maWc6KCk9PlYwLFRhYmxlT2ZDb250ZW50czooKT0+WlcsVGFibGVQcm9wZXJ0aWVzOigpPT5YVyxUYWJsZVJvd3NTcGxpdDooKT0+UVcsVGFibGV0OigpPT50RyxUYWJsZXRTbWFydHBob25lOigpPT5KVyxUYWJsZXRzOigpPT5hRyxUYWc6KCk9PnNHLFRhZ3M6KCk9PmlHLFRhbGx5MTooKT0+ckcsVGFsbHkyOigpPT5vRyxUYWxseTM6KCk9Pm5HLFRhbGx5NDooKT0+bEcsVGFsbHk1OigpPT5kRyxUYW5nZW50OigpPT5jRyxUYXJnZXQ6KCk9PnVHLFRlbGVzY29wZTooKT0+cEcsVGVudDooKT0+ZkcsVGVudFRyZWU6KCk9PmhHLFRlcm1pbmFsOigpPT5tRyxUZXJtaW5hbFNxdWFyZTooKT0+ZTgsVGVzdFR1YmU6KCk9PmdHLFRlc3RUdWJlMjooKT0+aTgsVGVzdFR1YmVEaWFnb25hbDooKT0+aTgsVGVzdFR1YmVzOigpPT5iRyxUZXh0OigpPT5YMCxUZXh0QWxpZ25DZW50ZXI6KCk9PnI4LFRleHRBbGlnbkVuZDooKT0+bzgsVGV4dEFsaWduSnVzdGlmeTooKT0+bjgsVGV4dEFsaWduU3RhcnQ6KCk9PlgwLFRleHRDdXJzb3I6KCk9PnhHLFRleHRDdXJzb3JJbnB1dDooKT0+dkcsVGV4dEluaXRpYWw6KCk9Pmw4LFRleHRRdW90ZTooKT0+eUcsVGV4dFNlYXJjaDooKT0+d0csVGV4dFNlbGVjdDooKT0+WjAsVGV4dFNlbGVjdGlvbjooKT0+WjAsVGV4dFdyYXA6KCk9PmM4LFRoZWF0ZXI6KCk9PmtHLFRoZXJtb21ldGVyOigpPT5NRyxUaGVybW9tZXRlclNub3dmbGFrZTooKT0+U0csVGhlcm1vbWV0ZXJTdW46KCk9Pl9HLFRodW1ic0Rvd246KCk9PnpHLFRodW1ic1VwOigpPT5DRyxUaWNrZXQ6KCk9PklHLFRpY2tldENoZWNrOigpPT5URyxUaWNrZXRNaW51czooKT0+JEcsVGlja2V0UGVyY2VudDooKT0+REcsVGlja2V0UGx1czooKT0+TEcsVGlja2V0U2xhc2g6KCk9PkVHLFRpY2tldFg6KCk9PlBHLFRpY2tldHM6KCk9Pk5HLFRpY2tldHNQbGFuZTooKT0+QUcsVGltZWxpbmU6KCk9PlJHLFRpbWVyOigpPT5CRyxUaW1lck9mZjooKT0+T0csVGltZXJSZXNldDooKT0+RkcsVG9nZ2xlTGVmdDooKT0+cUcsVG9nZ2xlUmlnaHQ6KCk9PmpHLFRvaWxldDooKT0+SEcsVG9vbENhc2U6KCk9PlZHLFRvb2xib3g6KCk9PlVHLFRvcm5hZG86KCk9PktHLFRvcnVzOigpPT5XRyxUb3VjaHBhZDooKT0+WUcsVG91Y2hwYWRPZmY6KCk9PkdHLFRvd2VsUmFjazooKT0+WkcsVG93ZXJDb250cm9sOigpPT5YRyxUb3lCcmljazooKT0+UUcsVHJhY3RvcjooKT0+SkcsVHJhZmZpY0NvbmU6KCk9PmVLLFRyYWluOigpPT5kOCxUcmFpbkZyb250OigpPT5hSyxUcmFpbkZyb250VHVubmVsOigpPT50SyxUcmFpblRyYWNrOigpPT5zSyxUcmFtRnJvbnQ6KCk9PmQ4LFRyYW5zZ2VuZGVyOigpPT5pSyxUcmFzaDooKT0+b0ssVHJhc2gyOigpPT5ySyxUcmVlRGVjaWR1b3VzOigpPT5uSyxUcmVlUGFsbTooKT0+dTgsVHJlZVBpbmU6KCk9PmxLLFRyZWVzOigpPT5jSyxUcmVuZGluZ0Rvd246KCk9PmRLLFRyZW5kaW5nVXA6KCk9PnBLLFRyZW5kaW5nVXBEb3duOigpPT51SyxUcmlhbmdsZTooKT0+bUssVHJpYW5nbGVBbGVydDooKT0+cDgsVHJpYW5nbGVEYXNoZWQ6KCk9PmhLLFRyaWFuZ2xlUmlnaHQ6KCk9PmZLLFRyb3BoeTooKT0+Z0ssVHJ1Y2s6KCk9PnZLLFRydWNrRWxlY3RyaWM6KCk9PmJLLFR1cmtpc2hMaXJhOigpPT54SyxUdXJudGFibGU6KCk9PnlLLFR1cnRsZTooKT0+d0ssVHY6KCk9PlNLLFR2MjooKT0+aDgsVHZNaW5pbWFsOigpPT5oOCxUdk1pbmltYWxQbGF5OigpPT5rSyxUeXBlOigpPT5NSyxUeXBlT3V0bGluZTooKT0+X0ssVW1icmVsbGE6KCk9PkNLLFVtYnJlbGxhT2ZmOigpPT56SyxVbmRlcmxpbmU6KCk9PlRLLFVuZG86KCk9PkxLLFVuZG8yOigpPT4kSyxVbmRvRG90OigpPT5ESyxVbmZvbGRIb3Jpem9udGFsOigpPT5FSyxVbmZvbGRWZXJ0aWNhbDooKT0+UEssVW5ncm91cDooKT0+SUssVW5pdmVyc2l0eTooKT0+ZjgsVW5saW5rOigpPT5SSyxVbmxpbmsyOigpPT5BSyxVbmxvY2s6KCk9PkM2LFVubG9ja0tleWhvbGU6KCk9Pno2LFVucGx1ZzooKT0+TkssVXBsb2FkOigpPT5PSyxVcGxvYWRDbG91ZDooKT0+VG0sVXNiOigpPT5GSyxVc2VyOigpPT5KSyxVc2VyMjooKT0+eTgsVXNlckNoZWNrOigpPT5CSyxVc2VyQ2hlY2syOigpPT5tOCxVc2VyQ2lyY2xlOigpPT5TbSxVc2VyQ2lyY2xlMjooKT0+a20sVXNlckNvZzooKT0+SEssVXNlckNvZzI6KCk9Pmc4LFVzZXJLZXk6KCk9PnFLLFVzZXJMb2NrOigpPT5qSyxVc2VyTWludXM6KCk9PlZLLFVzZXJNaW51czI6KCk9PmI4LFVzZXJQZW46KCk9PlVLLFVzZXJQbHVzOigpPT5XSyxVc2VyUGx1czI6KCk9PnY4LFVzZXJSb3VuZDooKT0+eTgsVXNlclJvdW5kQ2hlY2s6KCk9Pm04LFVzZXJSb3VuZENvZzooKT0+ZzgsVXNlclJvdW5kS2V5OigpPT5HSyxVc2VyUm91bmRNaW51czooKT0+YjgsVXNlclJvdW5kUGVuOigpPT5LSyxVc2VyUm91bmRQbHVzOigpPT52OCxVc2VyUm91bmRTZWFyY2g6KCk9PllLLFVzZXJSb3VuZFg6KCk9Png4LFVzZXJTZWFyY2g6KCk9PlpLLFVzZXJTcXVhcmU6KCk9PnM4LFVzZXJTcXVhcmUyOigpPT50OCxVc2VyU3RhcjooKT0+WEssVXNlclg6KCk9PlFLLFVzZXJYMjooKT0+eDgsVXNlcnM6KCk9PmVZLFVzZXJzMjooKT0+dzgsVXNlcnNSb3VuZDooKT0+dzgsVXRlbnNpbHM6KCk9PlM4LFV0ZW5zaWxzQ3Jvc3NlZDooKT0+azgsVXRpbGl0eVBvbGU6KCk9PmFZLFZhbjooKT0+dFksVmFyaWFibGU6KCk9PnNZLFZhdWx0OigpPT5pWSxWZWN0b3JTcXVhcmU6KCk9PnJZLFZlZ2FuOigpPT5vWSxWZW5ldGlhbk1hc2s6KCk9Pm5ZLFZlbnVzOigpPT5jWSxWZW51c0FuZE1hcnM6KCk9PmxZLFZlcmlmaWVkOigpPT4kZixWaWJyYXRlOigpPT51WSxWaWJyYXRlT2ZmOigpPT5kWSxWaWRlbzooKT0+aFksVmlkZW9PZmY6KCk9PnBZLFZpZGVvdGFwZTooKT0+ZlksVmlldzooKT0+bVksVm9pY2VtYWlsOigpPT5iWSxWb2xsZXliYWxsOigpPT5nWSxWb2x1bWU6KCk9PmtZLFZvbHVtZTE6KCk9PnZZLFZvbHVtZTI6KCk9PnhZLFZvbHVtZU9mZjooKT0+eVksVm9sdW1lWDooKT0+d1ksVm90ZTooKT0+U1ksV2FsbGV0OigpPT5NWSxXYWxsZXQyOigpPT5fOCxXYWxsZXRDYXJkczooKT0+X1ksV2FsbGV0TWluaW1hbDooKT0+XzgsV2FsbHBhcGVyOigpPT56WSxXYW5kOigpPT5DWSxXYW5kMjooKT0+TTgsV2FuZFNwYXJrbGVzOigpPT5NOCxXYXJlaG91c2U6KCk9PlRZLFdhc2hpbmdNYWNoaW5lOigpPT5EWSxXYXRjaDooKT0+JFksV2F2ZXM6KCk9Pno4LFdhdmVzQXJyb3dEb3duOigpPT5MWSxXYXZlc0Fycm93VXA6KCk9PkVZLFdhdmVzSG9yaXpvbnRhbDooKT0+ejgsV2F2ZXNMYWRkZXI6KCk9PlBZLFdhdmVzVmVydGljYWw6KCk9PklZLFdheXBvaW50czooKT0+QVksV2ViY2FtOigpPT5OWSxXZWJob29rOigpPT5PWSxXZWJob29rT2ZmOigpPT5SWSxXZWlnaHQ6KCk9PkJZLFdlaWdodFRpbGRlOigpPT5GWSxXaGVhdDooKT0+cVksV2hlYXRPZmY6KCk9PkhZLFdob2xlV29yZDooKT0+alksV2lmaTooKT0+UVksV2lmaUNvZzooKT0+VlksV2lmaUhpZ2g6KCk9PlVZLFdpZmlMb3c6KCk9PldZLFdpZmlPZmY6KCk9PkdZLFdpZmlQZW46KCk9PktZLFdpZmlTeW5jOigpPT5ZWSxXaWZpWmVybzooKT0+WlksV2luZDooKT0+SlksV2luZEFycm93RG93bjooKT0+WFksV2luZTooKT0+c1osV2luZU9mZjooKT0+ZVosV29ya2Zsb3c6KCk9PmFaLFdvcm06KCk9PnRaLFdyYXBUZXh0OigpPT5jOCxXcmVuY2g6KCk9PmlaLFg6KCk9Pm9aLFhDaXJjbGU6KCk9Pl9tLFhMaW5lVG9wOigpPT5yWixYT2N0YWdvbjooKT0+QTYsWFNxdWFyZTooKT0+YTgsWmFwOigpPT5sWixaYXBPZmY6KCk9Pm5aLFpvZGlhY0FxdWFyaXVzOigpPT5jWixab2RpYWNBcmllczooKT0+ZFosWm9kaWFjQ2FuY2VyOigpPT51Wixab2RpYWNDYXByaWNvcm46KCk9PnBaLFpvZGlhY0dlbWluaTooKT0+aFosWm9kaWFjTGVvOigpPT5mWixab2RpYWNMaWJyYTooKT0+bVosWm9kaWFjT3BoaXVjaHVzOigpPT5nWixab2RpYWNQaXNjZXM6KCk9PmJaLFpvZGlhY1NhZ2l0dGFyaXVzOigpPT54Wixab2RpYWNTY29ycGlvOigpPT52Wixab2RpYWNUYXVydXM6KCk9PnlaLFpvZGlhY1ZpcmdvOigpPT53Wixab29tSW46KCk9PmtaLFpvb21PdXQ6KCk9PlNaLGNyZWF0ZUVsZW1lbnQ6KCk9PmoxLGNyZWF0ZUljb25zOigpPT53ZXQsaWNvbnM6KCk9PkNkfSk7dmFyIHdldCxDOD1nKCgpPT57VzJhKCk7RzJhKCk7RmtlKCk7VWtlKCk7V2tlKCk7R2tlKCk7S2tlKCk7WWtlKCk7WmtlKCk7WGtlKCk7UWtlKCk7SmtlKCk7ZVNlKCk7dFNlKCk7YVNlKCk7c1NlKCk7aVNlKCk7clNlKCk7b1NlKCk7blNlKCk7bFNlKCk7Y1NlKCk7ZFNlKCk7dVNlKCk7cFNlKCk7aFNlKCk7ZlNlKCk7bVNlKCk7Z1NlKCk7YlNlKCk7dlNlKCk7eFNlKCk7eVNlKCk7d1NlKCk7a1NlKCk7U1NlKCk7X1NlKCk7TVNlKCk7elNlKCk7Q1NlKCk7VFNlKCk7JFNlKCk7RFNlKCk7TFNlKCk7RVNlKCk7UFNlKCk7SVNlKCk7QVNlKCk7TlNlKCk7UlNlKCk7T1NlKCk7RlNlKCk7QlNlKCk7SFNlKCk7cVNlKCk7alNlKCk7VlNlKCk7VVNlKCk7V1NlKCk7R1NlKCk7S1NlKCk7WVNlKCk7WlNlKCk7WFNlKCk7UVNlKCk7SlNlKCk7ZV9lKCk7dF9lKCk7YV9lKCk7c19lKCk7aV9lKCk7cl9lKCk7b19lKCk7bl9lKCk7bF9lKCk7Y19lKCk7ZF9lKCk7dV9lKCk7cF9lKCk7aF9lKCk7Zl9lKCk7bV9lKCk7Z19lKCk7Yl9lKCk7dl9lKCk7eF9lKCk7eV9lKCk7d19lKCk7a19lKCk7U19lKCk7X19lKCk7TV9lKCk7el9lKCk7Q19lKCk7VF9lKCk7JF9lKCk7RF9lKCk7TF9lKCk7RV9lKCk7UF9lKCk7SV9lKCk7QV9lKCk7Tl9lKCk7Ul9lKCk7T19lKCk7Rl9lKCk7Ql9lKCk7SF9lKCk7cV9lKCk7al9lKCk7Vl9lKCk7VV9lKCk7V19lKCk7R19lKCk7S19lKCk7WV9lKCk7Wl9lKCk7WF9lKCk7UV9lKCk7Sl9lKCk7ZU1lKCk7dE1lKCk7YU1lKCk7c01lKCk7aU1lKCk7ck1lKCk7b01lKCk7bk1lKCk7bE1lKCk7Y01lKCk7ZE1lKCk7dU1lKCk7cE1lKCk7aE1lKCk7Zk1lKCk7bU1lKCk7Z01lKCk7Yk1lKCk7dk1lKCk7eE1lKCk7eU1lKCk7d01lKCk7a01lKCk7U01lKCk7X01lKCk7TU1lKCk7ek1lKCk7Q01lKCk7VE1lKCk7JE1lKCk7RE1lKCk7TE1lKCk7RU1lKCk7UE1lKCk7SU1lKCk7QU1lKCk7Tk1lKCk7Uk1lKCk7T01lKCk7Rk1lKCk7Qk1lKCk7SE1lKCk7cU1lKCk7ak1lKCk7Vk1lKCk7VU1lKCk7V01lKCk7R01lKCk7S01lKCk7WU1lKCk7Wk1lKCk7WE1lKCk7UU1lKCk7Sk1lKCk7ZXplKCk7dHplKCk7YXplKCk7c3plKCk7aXplKCk7cnplKCk7b3plKCk7bnplKCk7bHplKCk7Y3plKCk7ZHplKCk7dXplKCk7cHplKCk7aHplKCk7ZnplKCk7bXplKCk7Z3plKCk7YnplKCk7dnplKCk7eHplKCk7eXplKCk7d3plKCk7a3plKCk7U3plKCk7X3plKCk7TXplKCk7enplKCk7Q3plKCk7VHplKCk7JHplKCk7RHplKCk7THplKCk7RXplKCk7UHplKCk7SXplKCk7QXplKCk7TnplKCk7UnplKCk7T3plKCk7RnplKCk7QnplKCk7SHplKCk7cXplKCk7anplKCk7VnplKCk7VXplKCk7V3plKCk7R3plKCk7S3plKCk7WXplKCk7WnplKCk7WHplKCk7UXplKCk7SnplKCk7ZUNlKCk7dENlKCk7YUNlKCk7c0NlKCk7aUNlKCk7ckNlKCk7b0NlKCk7bkNlKCk7bENlKCk7Y0NlKCk7ZENlKCk7dUNlKCk7cENlKCk7aENlKCk7ZkNlKCk7bUNlKCk7Z0NlKCk7YkNlKCk7dkNlKCk7eENlKCk7eUNlKCk7d0NlKCk7a0NlKCk7U0NlKCk7X0NlKCk7TUNlKCk7ekNlKCk7Q0NlKCk7VENlKCk7JENlKCk7RENlKCk7TENlKCk7RUNlKCk7UENlKCk7SUNlKCk7QUNlKCk7TkNlKCk7UkNlKCk7T0NlKCk7RkNlKCk7QkNlKCk7SENlKCk7cUNlKCk7akNlKCk7VkNlKCk7VUNlKCk7V0NlKCk7R0NlKCk7S0NlKCk7WUNlKCk7WkNlKCk7WENlKCk7UUNlKCk7SkNlKCk7ZVRlKCk7dFRlKCk7YVRlKCk7c1RlKCk7aVRlKCk7clRlKCk7b1RlKCk7blRlKCk7bFRlKCk7Y1RlKCk7ZFRlKCk7dVRlKCk7cFRlKCk7aFRlKCk7ZlRlKCk7bVRlKCk7Z1RlKCk7YlRlKCk7dlRlKCk7eFRlKCk7eVRlKCk7d1RlKCk7a1RlKCk7U1RlKCk7X1RlKCk7TVRlKCk7elRlKCk7Q1RlKCk7VFRlKCk7JFRlKCk7RFRlKCk7TFRlKCk7RVRlKCk7UFRlKCk7SVRlKCk7QVRlKCk7TlRlKCk7UlRlKCk7T1RlKCk7RlRlKCk7QlRlKCk7SFRlKCk7cVRlKCk7alRlKCk7VlRlKCk7VVRlKCk7V1RlKCk7R1RlKCk7S1RlKCk7WVRlKCk7WlRlKCk7WFRlKCk7UVRlKCk7SlRlKCk7ZSRlKCk7dCRlKCk7YSRlKCk7cyRlKCk7aSRlKCk7ciRlKCk7byRlKCk7biRlKCk7bCRlKCk7YyRlKCk7ZCRlKCk7dSRlKCk7cCRlKCk7aCRlKCk7ZiRlKCk7bSRlKCk7ZyRlKCk7YiRlKCk7diRlKCk7eCRlKCk7eSRlKCk7dyRlKCk7ayRlKCk7UyRlKCk7XyRlKCk7TSRlKCk7eiRlKCk7QyRlKCk7VCRlKCk7JCRlKCk7RCRlKCk7TCRlKCk7RSRlKCk7UCRlKCk7SSRlKCk7QSRlKCk7TiRlKCk7UiRlKCk7TyRlKCk7RiRlKCk7QiRlKCk7SCRlKCk7cSRlKCk7aiRlKCk7ViRlKCk7VSRlKCk7VyRlKCk7RyRlKCk7SyRlKCk7WSRlKCk7WiRlKCk7WCRlKCk7USRlKCk7SiRlKCk7ZURlKCk7dERlKCk7YURlKCk7c0RlKCk7aURlKCk7ckRlKCk7b0RlKCk7bkRlKCk7bERlKCk7Y0RlKCk7ZERlKCk7dURlKCk7cERlKCk7aERlKCk7ZkRlKCk7bURlKCk7Z0RlKCk7YkRlKCk7dkRlKCk7eERlKCk7eURlKCk7d0RlKCk7a0RlKCk7U0RlKCk7X0RlKCk7TURlKCk7ekRlKCk7Q0RlKCk7VERlKCk7JERlKCk7RERlKCk7TERlKCk7RURlKCk7UERlKCk7SURlKCk7QURlKCk7TkRlKCk7UkRlKCk7T0RlKCk7RkRlKCk7QkRlKCk7SERlKCk7cURlKCk7akRlKCk7VkRlKCk7VURlKCk7V0RlKCk7R0RlKCk7S0RlKCk7WURlKCk7WkRlKCk7WERlKCk7UURlKCk7SkRlKCk7ZUxlKCk7dExlKCk7YUxlKCk7c0xlKCk7aUxlKCk7ckxlKCk7b0xlKCk7bkxlKCk7bExlKCk7Y0xlKCk7ZExlKCk7dUxlKCk7cExlKCk7aExlKCk7ZkxlKCk7bUxlKCk7Z0xlKCk7YkxlKCk7dkxlKCk7eExlKCk7eUxlKCk7d0xlKCk7a0xlKCk7U0xlKCk7X0xlKCk7TUxlKCk7ekxlKCk7Q0xlKCk7VExlKCk7JExlKCk7RExlKCk7TExlKCk7RUxlKCk7UExlKCk7SUxlKCk7QUxlKCk7TkxlKCk7UkxlKCk7T0xlKCk7RkxlKCk7QkxlKCk7SExlKCk7cUxlKCk7akxlKCk7VkxlKCk7VUxlKCk7V0xlKCk7R0xlKCk7S0xlKCk7WUxlKCk7WkxlKCk7WExlKCk7UUxlKCk7SkxlKCk7ZUVlKCk7dEVlKCk7YUVlKCk7c0VlKCk7aUVlKCk7ckVlKCk7b0VlKCk7bkVlKCk7bEVlKCk7Y0VlKCk7ZEVlKCk7dUVlKCk7cEVlKCk7aEVlKCk7ZkVlKCk7bUVlKCk7Z0VlKCk7YkVlKCk7dkVlKCk7eEVlKCk7eUVlKCk7d0VlKCk7a0VlKCk7U0VlKCk7X0VlKCk7TUVlKCk7ekVlKCk7Q0VlKCk7VEVlKCk7JEVlKCk7REVlKCk7TEVlKCk7RUVlKCk7UEVlKCk7SUVlKCk7QUVlKCk7TkVlKCk7UkVlKCk7T0VlKCk7RkVlKCk7QkVlKCk7SEVlKCk7cUVlKCk7akVlKCk7VkVlKCk7VUVlKCk7V0VlKCk7R0VlKCk7S0VlKCk7WUVlKCk7WkVlKCk7WEVlKCk7UUVlKCk7SkVlKCk7ZVBlKCk7dFBlKCk7YVBlKCk7c1BlKCk7aVBlKCk7clBlKCk7b1BlKCk7blBlKCk7bFBlKCk7Y1BlKCk7ZFBlKCk7dVBlKCk7cFBlKCk7aFBlKCk7ZlBlKCk7bVBlKCk7Z1BlKCk7YlBlKCk7dlBlKCk7eFBlKCk7eVBlKCk7d1BlKCk7a1BlKCk7U1BlKCk7X1BlKCk7TVBlKCk7elBlKCk7Q1BlKCk7VFBlKCk7JFBlKCk7RFBlKCk7TFBlKCk7RVBlKCk7UFBlKCk7SVBlKCk7QVBlKCk7TlBlKCk7UlBlKCk7T1BlKCk7RlBlKCk7QlBlKCk7SFBlKCk7cVBlKCk7alBlKCk7VlBlKCk7VVBlKCk7V1BlKCk7R1BlKCk7S1BlKCk7WVBlKCk7WlBlKCk7WFBlKCk7UVBlKCk7SlBlKCk7ZUllKCk7dEllKCk7YUllKCk7c0llKCk7aUllKCk7ckllKCk7b0llKCk7bkllKCk7bEllKCk7Y0llKCk7ZEllKCk7dUllKCk7cEllKCk7aEllKCk7ZkllKCk7bUllKCk7Z0llKCk7YkllKCk7dkllKCk7eEllKCk7eUllKCk7d0llKCk7a0llKCk7U0llKCk7X0llKCk7TUllKCk7ekllKCk7Q0llKCk7VEllKCk7JEllKCk7REllKCk7TEllKCk7RUllKCk7UEllKCk7SUllKCk7QUllKCk7TkllKCk7UkllKCk7T0llKCk7RkllKCk7QkllKCk7SEllKCk7cUllKCk7akllKCk7VkllKCk7VUllKCk7V0llKCk7R0llKCk7S0llKCk7WUllKCk7WkllKCk7WEllKCk7UUllKCk7SkllKCk7ZUFlKCk7dEFlKCk7YUFlKCk7c0FlKCk7aUFlKCk7ckFlKCk7b0FlKCk7bkFlKCk7bEFlKCk7Y0FlKCk7ZEFlKCk7dUFlKCk7cEFlKCk7aEFlKCk7ZkFlKCk7bUFlKCk7Z0FlKCk7YkFlKCk7dkFlKCk7eEFlKCk7eUFlKCk7d0FlKCk7a0FlKCk7U0FlKCk7X0FlKCk7TUFlKCk7ekFlKCk7Q0FlKCk7VEFlKCk7JEFlKCk7REFlKCk7TEFlKCk7RUFlKCk7UEFlKCk7SUFlKCk7QUFlKCk7TkFlKCk7UkFlKCk7T0FlKCk7RkFlKCk7QkFlKCk7SEFlKCk7cUFlKCk7akFlKCk7VkFlKCk7VUFlKCk7V0FlKCk7R0FlKCk7S0FlKCk7WUFlKCk7WkFlKCk7WEFlKCk7UUFlKCk7SkFlKCk7ZU5lKCk7dE5lKCk7YU5lKCk7c05lKCk7aU5lKCk7ck5lKCk7b05lKCk7bk5lKCk7bE5lKCk7Y05lKCk7ZE5lKCk7dU5lKCk7cE5lKCk7aE5lKCk7Zk5lKCk7bU5lKCk7Z05lKCk7Yk5lKCk7dk5lKCk7eE5lKCk7eU5lKCk7d05lKCk7a05lKCk7U05lKCk7X05lKCk7TU5lKCk7ek5lKCk7Q05lKCk7VE5lKCk7JE5lKCk7RE5lKCk7TE5lKCk7RU5lKCk7UE5lKCk7SU5lKCk7QU5lKCk7Tk5lKCk7Uk5lKCk7T05lKCk7Rk5lKCk7Qk5lKCk7SE5lKCk7cU5lKCk7ak5lKCk7Vk5lKCk7VU5lKCk7V05lKCk7R05lKCk7S05lKCk7WU5lKCk7Wk5lKCk7WE5lKCk7UU5lKCk7Sk5lKCk7ZVJlKCk7dFJlKCk7YVJlKCk7c1JlKCk7aVJlKCk7clJlKCk7b1JlKCk7blJlKCk7bFJlKCk7Y1JlKCk7ZFJlKCk7dVJlKCk7cFJlKCk7aFJlKCk7ZlJlKCk7bVJlKCk7Z1JlKCk7YlJlKCk7dlJlKCk7eFJlKCk7eVJlKCk7d1JlKCk7a1JlKCk7U1JlKCk7X1JlKCk7TVJlKCk7elJlKCk7Q1JlKCk7VFJlKCk7JFJlKCk7RFJlKCk7TFJlKCk7RVJlKCk7UFJlKCk7SVJlKCk7QVJlKCk7TlJlKCk7UlJlKCk7T1JlKCk7RlJlKCk7QlJlKCk7SFJlKCk7cVJlKCk7alJlKCk7VlJlKCk7VVJlKCk7V1JlKCk7R1JlKCk7S1JlKCk7WVJlKCk7WlJlKCk7WFJlKCk7UVJlKCk7SlJlKCk7ZU9lKCk7dE9lKCk7YU9lKCk7c09lKCk7aU9lKCk7ck9lKCk7b09lKCk7bk9lKCk7bE9lKCk7Y09lKCk7ZE9lKCk7dU9lKCk7cE9lKCk7aE9lKCk7Zk9lKCk7bU9lKCk7Z09lKCk7Yk9lKCk7dk9lKCk7eE9lKCk7eU9lKCk7d09lKCk7a09lKCk7U09lKCk7X09lKCk7TU9lKCk7ek9lKCk7Q09lKCk7VE9lKCk7JE9lKCk7RE9lKCk7TE9lKCk7RU9lKCk7UE9lKCk7SU9lKCk7QU9lKCk7Tk9lKCk7Uk9lKCk7T09lKCk7Rk9lKCk7Qk9lKCk7SE9lKCk7cU9lKCk7ak9lKCk7Vk9lKCk7VU9lKCk7V09lKCk7R09lKCk7S09lKCk7WU9lKCk7Wk9lKCk7WE9lKCk7UU9lKCk7Sk9lKCk7ZUZlKCk7dEZlKCk7YUZlKCk7c0ZlKCk7aUZlKCk7ckZlKCk7b0ZlKCk7bkZlKCk7bEZlKCk7Y0ZlKCk7ZEZlKCk7dUZlKCk7cEZlKCk7aEZlKCk7ZkZlKCk7bUZlKCk7Z0ZlKCk7YkZlKCk7dkZlKCk7eEZlKCk7eUZlKCk7d0ZlKCk7a0ZlKCk7U0ZlKCk7X0ZlKCk7TUZlKCk7ekZlKCk7Q0ZlKCk7VEZlKCk7JEZlKCk7REZlKCk7TEZlKCk7RUZlKCk7UEZlKCk7SUZlKCk7QUZlKCk7TkZlKCk7UkZlKCk7T0ZlKCk7RkZlKCk7QkZlKCk7SEZlKCk7cUZlKCk7akZlKCk7VkZlKCk7VUZlKCk7V0ZlKCk7R0ZlKCk7S0ZlKCk7WUZlKCk7WkZlKCk7WEZlKCk7UUZlKCk7SkZlKCk7ZUJlKCk7dEJlKCk7YUJlKCk7c0JlKCk7aUJlKCk7ckJlKCk7b0JlKCk7bkJlKCk7bEJlKCk7Y0JlKCk7ZEJlKCk7dUJlKCk7cEJlKCk7aEJlKCk7ZkJlKCk7bUJlKCk7Z0JlKCk7YkJlKCk7dkJlKCk7eEJlKCk7eUJlKCk7d0JlKCk7a0JlKCk7U0JlKCk7X0JlKCk7TUJlKCk7ekJlKCk7Q0JlKCk7VEJlKCk7JEJlKCk7REJlKCk7TEJlKCk7RUJlKCk7UEJlKCk7SUJlKCk7QUJlKCk7TkJlKCk7UkJlKCk7T0JlKCk7RkJlKCk7QkJlKCk7SEJlKCk7cUJlKCk7akJlKCk7VkJlKCk7VUJlKCk7V0JlKCk7R0JlKCk7S0JlKCk7WUJlKCk7WkJlKCk7WEJlKCk7UUJlKCk7SkJlKCk7ZUhlKCk7dEhlKCk7YUhlKCk7c0hlKCk7aUhlKCk7ckhlKCk7b0hlKCk7bkhlKCk7bEhlKCk7Y0hlKCk7ZEhlKCk7dUhlKCk7cEhlKCk7aEhlKCk7ZkhlKCk7bUhlKCk7Z0hlKCk7YkhlKCk7dkhlKCk7eEhlKCk7eUhlKCk7d0hlKCk7a0hlKCk7U0hlKCk7X0hlKCk7TUhlKCk7ekhlKCk7Q0hlKCk7VEhlKCk7JEhlKCk7REhlKCk7TEhlKCk7RUhlKCk7UEhlKCk7SUhlKCk7QUhlKCk7TkhlKCk7UkhlKCk7T0hlKCk7RkhlKCk7QkhlKCk7SEhlKCk7cUhlKCk7akhlKCk7VkhlKCk7VUhlKCk7V0hlKCk7R0hlKCk7S0hlKCk7WUhlKCk7WkhlKCk7WEhlKCk7UUhlKCk7SkhlKCk7ZXFlKCk7dHFlKCk7YXFlKCk7c3FlKCk7aXFlKCk7cnFlKCk7b3FlKCk7bnFlKCk7bHFlKCk7Y3FlKCk7ZHFlKCk7dXFlKCk7cHFlKCk7aHFlKCk7ZnFlKCk7bXFlKCk7Z3FlKCk7YnFlKCk7dnFlKCk7eHFlKCk7eXFlKCk7d3FlKCk7a3FlKCk7U3FlKCk7X3FlKCk7TXFlKCk7enFlKCk7Q3FlKCk7VHFlKCk7JHFlKCk7RHFlKCk7THFlKCk7RXFlKCk7UHFlKCk7SXFlKCk7QXFlKCk7TnFlKCk7UnFlKCk7T3FlKCk7RnFlKCk7QnFlKCk7SHFlKCk7cXFlKCk7anFlKCk7VnFlKCk7VXFlKCk7V3FlKCk7R3FlKCk7S3FlKCk7WXFlKCk7WnFlKCk7WHFlKCk7UXFlKCk7SnFlKCk7ZWplKCk7dGplKCk7YWplKCk7c2plKCk7aWplKCk7cmplKCk7b2plKCk7bmplKCk7bGplKCk7Y2plKCk7ZGplKCk7dWplKCk7cGplKCk7aGplKCk7ZmplKCk7bWplKCk7Z2plKCk7YmplKCk7dmplKCk7eGplKCk7eWplKCk7d2plKCk7a2plKCk7U2plKCk7X2plKCk7TWplKCk7emplKCk7Q2plKCk7VGplKCk7JGplKCk7RGplKCk7TGplKCk7RWplKCk7UGplKCk7SWplKCk7QWplKCk7TmplKCk7UmplKCk7T2plKCk7RmplKCk7QmplKCk7SGplKCk7cWplKCk7amplKCk7VmplKCk7VWplKCk7V2plKCk7R2plKCk7S2plKCk7WWplKCk7WmplKCk7WGplKCk7UWplKCk7SmplKCk7ZVZlKCk7dFZlKCk7YVZlKCk7c1ZlKCk7aVZlKCk7clZlKCk7b1ZlKCk7blZlKCk7bFZlKCk7Y1ZlKCk7ZFZlKCk7dVZlKCk7cFZlKCk7aFZlKCk7ZlZlKCk7bVZlKCk7Z1ZlKCk7YlZlKCk7dlZlKCk7eFZlKCk7eVZlKCk7d1ZlKCk7a1ZlKCk7U1ZlKCk7X1ZlKCk7TVZlKCk7elZlKCk7Q1ZlKCk7VFZlKCk7JFZlKCk7RFZlKCk7TFZlKCk7RVZlKCk7UFZlKCk7SVZlKCk7QVZlKCk7TlZlKCk7UlZlKCk7T1ZlKCk7RlZlKCk7QlZlKCk7SFZlKCk7cVZlKCk7alZlKCk7VlZlKCk7VVZlKCk7V1ZlKCk7R1ZlKCk7S1ZlKCk7WVZlKCk7WlZlKCk7WFZlKCk7UVZlKCk7SlZlKCk7ZVVlKCk7dFVlKCk7YVVlKCk7c1VlKCk7aVVlKCk7clVlKCk7b1VlKCk7blVlKCk7bFVlKCk7Y1VlKCk7ZFVlKCk7dVVlKCk7cFVlKCk7aFVlKCk7ZlVlKCk7bVVlKCk7Z1VlKCk7YlVlKCk7dlVlKCk7eFVlKCk7eVVlKCk7d1VlKCk7a1VlKCk7U1VlKCk7X1VlKCk7TVVlKCk7elVlKCk7Q1VlKCk7VFVlKCk7JFVlKCk7RFVlKCk7TFVlKCk7RVVlKCk7UFVlKCk7SVVlKCk7QVVlKCk7TlVlKCk7UlVlKCk7T1VlKCk7RlVlKCk7QlVlKCk7SFVlKCk7cVVlKCk7alVlKCk7VlVlKCk7VVVlKCk7V1VlKCk7R1VlKCk7S1VlKCk7WVVlKCk7WlVlKCk7WFVlKCk7UVVlKCk7SlVlKCk7ZVdlKCk7dFdlKCk7YVdlKCk7c1dlKCk7aVdlKCk7cldlKCk7b1dlKCk7bldlKCk7bFdlKCk7Y1dlKCk7ZFdlKCk7dVdlKCk7cFdlKCk7aFdlKCk7ZldlKCk7bVdlKCk7Z1dlKCk7YldlKCk7dldlKCk7eFdlKCk7eVdlKCk7d1dlKCk7a1dlKCk7U1dlKCk7X1dlKCk7TVdlKCk7eldlKCk7Q1dlKCk7VFdlKCk7JFdlKCk7RFdlKCk7TFdlKCk7RVdlKCk7UFdlKCk7SVdlKCk7QVdlKCk7TldlKCk7UldlKCk7T1dlKCk7RldlKCk7QldlKCk7SFdlKCk7cVdlKCk7aldlKCk7VldlKCk7VVdlKCk7V1dlKCk7R1dlKCk7S1dlKCk7WVdlKCk7WldlKCk7WFdlKCk7UVdlKCk7SldlKCk7ZUdlKCk7dEdlKCk7YUdlKCk7c0dlKCk7aUdlKCk7ckdlKCk7b0dlKCk7bkdlKCk7bEdlKCk7Y0dlKCk7ZEdlKCk7dUdlKCk7cEdlKCk7aEdlKCk7ZkdlKCk7bUdlKCk7Z0dlKCk7YkdlKCk7dkdlKCk7eEdlKCk7eUdlKCk7d0dlKCk7a0dlKCk7U0dlKCk7X0dlKCk7TUdlKCk7ekdlKCk7Q0dlKCk7VEdlKCk7JEdlKCk7REdlKCk7TEdlKCk7RUdlKCk7UEdlKCk7SUdlKCk7QUdlKCk7TkdlKCk7UkdlKCk7T0dlKCk7RkdlKCk7QkdlKCk7SEdlKCk7cUdlKCk7akdlKCk7VkdlKCk7VUdlKCk7V0dlKCk7R0dlKCk7S0dlKCk7WUdlKCk7WkdlKCk7WEdlKCk7UUdlKCk7SkdlKCk7ZUtlKCk7dEtlKCk7YUtlKCk7c0tlKCk7aUtlKCk7cktlKCk7b0tlKCk7bktlKCk7bEtlKCk7Y0tlKCk7ZEtlKCk7dUtlKCk7cEtlKCk7aEtlKCk7ZktlKCk7bUtlKCk7Z0tlKCk7YktlKCk7dktlKCk7eEtlKCk7eUtlKCk7d0tlKCk7a0tlKCk7U0tlKCk7X0tlKCk7TUtlKCk7ektlKCk7Q0tlKCk7VEtlKCk7JEtlKCk7REtlKCk7TEtlKCk7RUtlKCk7UEtlKCk7SUtlKCk7QUtlKCk7TktlKCk7UktlKCk7T0tlKCk7RktlKCk7QktlKCk7SEtlKCk7cUtlKCk7aktlKCk7VktlKCk7VUtlKCk7V0tlKCk7R0tlKCk7S0tlKCk7WUtlKCk7WktlKCk7WEtlKCk7UUtlKCk7SktlKCk7ZVllKCk7dFllKCk7YVllKCk7c1llKCk7aVllKCk7clllKCk7b1llKCk7blllKCk7bFllKCk7Y1llKCk7ZFllKCk7dVllKCk7cFllKCk7aFllKCk7ZlllKCk7bVllKCk7Z1llKCk7YlllKCk7dlllKCk7eFllKCk7eVllKCk7d1llKCk7a1llKCk7U1llKCk7X1llKCk7TVllKCk7elllKCk7Q1llKCk7VFllKCk7JFllKCk7RFllKCk7TFllKCk7RVllKCk7UFllKCk7SVllKCk7QVllKCk7TlllKCk7UlllKCk7T1llKCk7RlllKCk7QlllKCk7SFllKCk7cVllKCk7alllKCk7VlllKCk7VVllKCk7V1llKCk7R1llKCk7S1llKCk7WVllKCk7WlllKCk7WFllKCk7UVllKCk7SlllKCk7ZVplKCk7dFplKCk7YVplKCk7c1plKCk7aVplKCk7clplKCk7b1plKCk7blplKCk7bFplKCk7Y1plKCk7ZFplKCk7dVplKCk7cFplKCk7aFplKCk7ZlplKCk7bVplKCk7Z1plKCk7YlplKCk7dlplKCk7eFplKCk7eVplKCk7d1plKCk7a1plKCk7U1plKCk7X1plKCk7TVplKCk7elplKCk7Q1plKCk7VFplKCk7JFplKCk7RFplKCk7TFplKCk7RVplKCk7UFplKCk7SVplKCk7QVplKCk7TlplKCk7UlplKCk7T1plKCk7RlplKCk7QlplKCk7SFplKCk7cVplKCk7alplKCk7VlplKCk7VVplKCk7V1plKCk7R1plKCk7S1plKCk7WVplKCk7WlplKCk7WFplKCk7UVplKCk7SlplKCk7ZVhlKCk7dFhlKCk7YVhlKCk7c1hlKCk7aVhlKCk7clhlKCk7b1hlKCk7blhlKCk7bFhlKCk7Y1hlKCk7ZFhlKCk7dVhlKCk7cFhlKCk7aFhlKCk7ZlhlKCk7bVhlKCk7Z1hlKCk7YlhlKCk7dlhlKCk7eFhlKCk7eVhlKCk7d1hlKCk7a1hlKCk7U1hlKCk7X1hlKCk7TVhlKCk7elhlKCk7Q1hlKCk7VFhlKCk7JFhlKCk7RFhlKCk7TFhlKCk7RVhlKCk7UFhlKCk7SVhlKCk7QVhlKCk7TlhlKCk7UlhlKCk7T1hlKCk7RlhlKCk7QlhlKCk7SFhlKCk7cVhlKCk7alhlKCk7VlhlKCk7VVhlKCk7V1hlKCk7R1hlKCk7S1hlKCk7WVhlKCk7WlhlKCk7WFhlKCk7UVhlKCk7SlhlKCk7ZVFlKCk7dFFlKCk7YVFlKCk7c1FlKCk7aVFlKCk7clFlKCk7b1FlKCk7blFlKCk7bFFlKCk7Y1FlKCk7ZFFlKCk7dVFlKCk7cFFlKCk7aFFlKCk7ZlFlKCk7bVFlKCk7Z1FlKCk7YlFlKCk7dlFlKCk7eFFlKCk7eVFlKCk7d1FlKCk7a1FlKCk7U1FlKCk7X1FlKCk7TVFlKCk7elFlKCk7Q1FlKCk7VFFlKCk7JFFlKCk7RFFlKCk7TFFlKCk7RVFlKCk7UFFlKCk7SVFlKCk7QVFlKCk7TlFlKCk7UlFlKCk7T1FlKCk7RlFlKCk7QlFlKCk7SFFlKCk7cVFlKCk7alFlKCk7VlFlKCk7VVFlKCk7V1FlKCk7R1FlKCk7S1FlKCk7WVFlKCk7WlFlKCk7WFFlKCk7UVFlKCk7SlFlKCk7ZUplKCk7dEplKCk7YUplKCk7c0plKCk7aUplKCk7ckplKCk7b0plKCk7bkplKCk7bEplKCk7Y0plKCk7ZEplKCk7dUplKCk7cEplKCk7aEplKCk7ZkplKCk7bUplKCk7Z0plKCk7YkplKCk7dkplKCk7eEplKCk7eUplKCk7d0plKCk7a0plKCk7U0plKCk7X0plKCk7TUplKCk7ekplKCk7Q0plKCk7VEplKCk7JEplKCk7REplKCk7TEplKCk7RUplKCk7UEplKCk7SUplKCk7QUplKCk7TkplKCk7UkplKCk7T0plKCk7RkplKCk7QkplKCk7SEplKCk7cUplKCk7akplKCk7VkplKCk7VUplKCk7V0plKCk7R0plKCk7S0plKCk7WUplKCk7WkplKCk7WEplKCk7UUplKCk7SkplKCk7ZWV0KCk7dGV0KCk7YWV0KCk7c2V0KCk7aWV0KCk7cmV0KCk7b2V0KCk7bmV0KCk7Y2V0KCk7ZGV0KCk7dWV0KCk7cGV0KCk7aGV0KCk7ZmV0KCk7bWV0KCk7Z2V0KCk7YmV0KCk7dmV0KCk7eGV0KCk7eWV0KCk7d2V0PWkoKHtpY29uczpzPXt9LG5hbWVBdHRyOmU9ImRhdGEtbHVjaWRlIixhdHRyczp0PXt9LHJvb3Q6YT1kb2N1bWVudCxpblRlbXBsYXRlczpyfT17fSk9PntpZighT2JqZWN0LnZhbHVlcyhzKS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBQbGVhc2UgcHJvdmlkZSBhbiBpY29ucyBvYmplY3QuCklmIHlvdSB3YW50IHRvIHVzZSBhbGwgdGhlIGljb25zIHlvdSBjYW4gaW1wb3J0IGl0IGxpa2U6CiBcYGltcG9ydCB7IGNyZWF0ZUljb25zLCBpY29ucyB9IGZyb20gJ2x1Y2lkZSc7Cmx1Y2lkZS5jcmVhdGVJY29ucyh7aWNvbnN9KTtcYGApO2lmKHR5cGVvZiBhPiJ1Iil0aHJvdyBuZXcgRXJyb3IoImBjcmVhdGVJY29ucygpYCBvbmx5IHdvcmtzIGluIGEgYnJvd3NlciBlbnZpcm9ubWVudC4iKTtpZihBcnJheS5mcm9tKGEucXVlcnlTZWxlY3RvckFsbChgWyR7ZX1dYCkpLmZvckVhY2gobz0+dG5lKG8se25hbWVBdHRyOmUsaWNvbnM6cyxhdHRyczp0fSkpLHImJkFycmF5LmZyb20oYS5xdWVyeVNlbGVjdG9yQWxsKCJ0ZW1wbGF0ZSIpKS5mb3JFYWNoKGw9PndldCh7aWNvbnM6cyxuYW1lQXR0cjplLGF0dHJzOnQscm9vdDpsLmNvbnRlbnQsaW5UZW1wbGF0ZXM6cn0pKSxlPT09ImRhdGEtbHVjaWRlIil7bGV0IG89YS5xdWVyeVNlbGVjdG9yQWxsKCJbaWNvbi1uYW1lXSIpO28ubGVuZ3RoPjAmJihjb25zb2xlLndhcm4oIltMdWNpZGVdIFNvbWUgaWNvbnMgd2VyZSBmb3VuZCB3aXRoIHRoZSBub3cgZGVwcmVjYXRlZCBpY29uLW5hbWUgYXR0cmlidXRlLiBUaGVzZSB3aWxsIHN0aWxsIGJlIHJlcGxhY2VkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgYnV0IHdpbGwgbm8gbG9uZ2VyIGJlIHN1cHBvcnRlZCBpbiB2MS4wIGFuZCB5b3Ugc2hvdWxkIHN3aXRjaCB0byBkYXRhLWx1Y2lkZSIpLEFycmF5LmZyb20obykuZm9yRWFjaChsPT50bmUobCx7bmFtZUF0dHI6Imljb24tbmFtZSIsaWNvbnM6cyxhdHRyczp0fSkpKX19LCJjcmVhdGVJY29ucyIpfSk7dmFyIEsyYSxZMmE9ZygoKT0+e3BlKCk7VWEoKTtDOCgpO0syYT1pKCgpPT57bGV0IHM9T2JqZWN0LmtleXMoYW5lLmZhKTtjb25zb2xlLmxvZygiRmlyc3QgZmV3IEx1Y2lkZSBrZXlzOiIsT2JqZWN0LmtleXMoR3IpLnNsaWNlKDAsNSkpO2xldCBlPU9iamVjdC5rZXlzKEdyKS5maWx0ZXIobj0+e2xldCBvPW5bMF09PT1uWzBdLnRvVXBwZXJDYXNlKCkmJm5bMF0hPT1uWzBdLnRvTG93ZXJDYXNlKCksbD10eXBlb2YgR3Jbbl09PSJmdW5jdGlvbiIscD0hWyJjcmVhdGVFbGVtZW50IiwiY3JlYXRlSWNvbnMiLCJkZWZhdWx0Il0uaW5jbHVkZXMobik7cmV0dXJuIGwmJm8mJnB9KS5tYXAobj0+bi5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKStuLnNsaWNlKDEpKTtpZihjb25zb2xlLmxvZyhgRm91bmQgJHtlLmxlbmd0aH0gTHVjaWRlIGljb25zYCksZS5sZW5ndGg9PT0wJiYoY29uc29sZS5sb2coIlRyeWluZyBhbHRlcm5hdGl2ZSBhcHByb2FjaCB0byBmaW5kIEx1Y2lkZSBpY29ucyIpLENkKSl7bGV0IG49Q2R8fHt9O2UucHVzaCguLi5PYmplY3Qua2V5cyhuKSksY29uc29sZS5sb2coYEZvdW5kICR7ZS5sZW5ndGh9IGljb25zIHZpYSBhbHRlcm5hdGl2ZSBtZXRob2RgKX1sZXQgdD1pKCgpPT57bGV0IG49cy5tYXAoZD0+YGZhOiR7ZH1gKSxvPWUubWFwKGQ9PmBsdWNpZGU6JHtkfWApLGw9Wy4uLm4sLi4ub10scD1sLmpvaW4oYApgKTtuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChwKS50aGVuKCgpPT57bGV0IHU9d2luZG93LmV2ZW50LmN1cnJlbnRUYXJnZXQsYz11LnRleHRDb250ZW50O3UudGV4dENvbnRlbnQ9YFx1MjcxMyBDb3BpZWQgJHtsLmxlbmd0aH0gaWNvbiBuYW1lcyFgLHNldFRpbWVvdXQoKCk9Pnt1LnRleHRDb250ZW50PWN9LDJlMyl9KX0sImNvcHlBbGxJY29uTmFtZXMiKSxhPWkobj0+e2xldCBvPW4udGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCkudHJpbSgpLGw9bi50YXJnZXQuY2xvc2VzdCgiLmRlbW9Db250YWluZXIiKTtsLnF1ZXJ5U2VsZWN0b3JBbGwoIi5pY29uQ29udGFpbmVyIikuZm9yRWFjaChkPT57bGV0IHU9ZC5nZXRBdHRyaWJ1dGUoImRhdGEtbmFtZSIpO289PT0iInx8dSYmdS5pbmNsdWRlcyhvKT9kLmNsYXNzTGlzdC5yZW1vdmUoImhpZGRlbiIpOmQuY2xhc3NMaXN0LmFkZCgiaGlkZGVuIil9KSxsLnF1ZXJ5U2VsZWN0b3JBbGwoIi5zZWN0aW9uLWNvbnRhaW5lciIpLmZvckVhY2goZD0+e2xldCB1PWQucXVlcnlTZWxlY3RvckFsbCgiLmljb25Db250YWluZXI6bm90KC5oaWRkZW4pIikubGVuZ3RoLGM9ZC5xdWVyeVNlbGVjdG9yKCIuaWNvbi1jb3VudCIpO2lmKGMpe2xldCBiPWQuY2xhc3NMaXN0LmNvbnRhaW5zKCJmYS1zZWN0aW9uIik/cy5sZW5ndGg6ZS5sZW5ndGg7Yy50ZXh0Q29udGVudD11PT09Yj9gJHtifSBpY29uc2A6YCR7dX0gb2YgJHtifSBpY29uc2B9fSl9LCJzZWFyY2hJY29ucyIpLHI9aSgobixvKT0+e2xldCBsPWAke299OiR7bn1gO25hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGwpLnRoZW4oKCk9PntsZXQgdT13aW5kb3cuZXZlbnQuY3VycmVudFRhcmdldC5xdWVyeVNlbGVjdG9yKCIuY29weS10b29sdGlwIik7dSYmKHUudGV4dENvbnRlbnQ9IkNvcGllZCEiLHNldFRpbWVvdXQoKCk9Pnt1LnRleHRDb250ZW50PSJDbGljayB0byBjb3B5In0sMmUzKSl9KX0sImNvcHlJY29uTmFtZSIpO3JldHVybiB3YAogIDxzdHlsZT4KICAgIC5kZW1vQ29udGFpbmVyIHsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgYmFja2dyb3VuZDogIzExMTExMTsKICAgICAgcGFkZGluZzogMjBweDsKICAgICAgZm9udC1zaXplOiAzMHB4OwogICAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAiU2Vnb2UgVUkiLCBSb2JvdG8sIE94eWdlbi1TYW5zLCBVYnVudHUsIENhbnRhcmVsbCwgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjsKICAgIH0KICAgIAogICAgLnNlYXJjaC1jb250YWluZXIgewogICAgICB3aWR0aDogMTAwJTsKICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZ2FwOiAxMHB4OwogICAgfQogICAgCiAgICAjaWNvblNlYXJjaCB7CiAgICAgIGZsZXg6IDE7CiAgICAgIHBhZGRpbmc6IDEycHggMTZweDsKICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICBib3JkZXI6IG5vbmU7CiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgYmFja2dyb3VuZDogIzIyMjsKICAgICAgY29sb3I6ICNmZmY7CiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMzMzM7CiAgICB9CiAgICAKICAgICNpY29uU2VhcmNoOmZvY3VzIHsKICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgYm9yZGVyLWNvbG9yOiAjZTQwMDJiOwogICAgfQogICAgCiAgICAuY29weS1hbGwtYnV0dG9uIHsKICAgICAgcGFkZGluZzogMTJweCAyMHB4OwogICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICBiYWNrZ3JvdW5kOiAjZTQwMDJiOwogICAgICBjb2xvcjogI2ZmZjsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICB0cmFuc2l0aW9uOiBhbGwgMC4yczsKICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIH0KICAgIAogICAgLmNvcHktYWxsLWJ1dHRvbjpob3ZlciB7CiAgICAgIGJhY2tncm91bmQ6ICNjNDAwMWI7CiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsKICAgIH0KICAgIAogICAgLmNvcHktYWxsLWJ1dHRvbjphY3RpdmUgewogICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICB9CiAgICAKICAgIGRlZXMtaWNvbiB7CiAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7CiAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgfQoKICAgIC5pY29uQ29udGFpbmVyIHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgcGFkZGluZzogMjBweCAxNnB4IDBweCAxNnB4OwogICAgICBib3JkZXI6IDFweCBzb2xpZCAjMzMzMzMzOwogICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7CiAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzOwogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIH0KICAgIAogICAgLmljb25Db250YWluZXI6aG92ZXIgewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjIyOwogICAgfQoKICAgIC5pY29uTmFtZSB7CiAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICBjb2xvcjogI2NjYzsKICAgICAgYmFja2dyb3VuZDogIzMzMzMzMzsKICAgICAgcGFkZGluZzogNnB4IDEwcHg7CiAgICAgIG1hcmdpbi1sZWZ0OiAtMTZweDsKICAgICAgbWFyZ2luLXJpZ2h0OiAtMTZweDsKICAgICAgbWFyZ2luLXRvcDogMjBweDsKICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgIG1heC13aWR0aDogMTIwcHg7CiAgICAgIGJvcmRlci1yYWRpdXM6IDAgMCA0cHggNHB4OwogICAgfQoKICAgIC5zZWN0aW9uLXRpdGxlIHsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgICBmb250LXNpemU6IDI0cHg7CiAgICAgIG1hcmdpbjogMjBweCAwOwogICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDsKICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMzMzMzMzM7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIH0KICAgIAogICAgLmFwaS1ub3RlIHsKICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICBjb2xvcjogI2U0MDAyYjsKICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgcGFkZGluZzogMTBweDsKICAgICAgYm9yZGVyOiAxcHggc29saWQgI2U0MDAyYjsKICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICBiYWNrZ3JvdW5kOiByZ2JhKDIyOCwgMCwgNDMsIDAuMSk7CiAgICB9CiAgICAKICAgIC5pY29uLWNvdW50IHsKICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICBjb2xvcjogIzg4ODsKICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgICAgYmFja2dyb3VuZDogIzIyMjsKICAgICAgcGFkZGluZzogNXB4IDEwcHg7CiAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICB9CiAgICAKICAgIC5pY29ucy1ncmlkIHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICB3aWR0aDogMTAwJTsKICAgIH0KICAgIAogICAgLnNlY3Rpb24tY29udGFpbmVyIHsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgICB9CiAgICAKICAgIC5jb3B5LXRvb2x0aXAgewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIGJhY2tncm91bmQ6ICMzMzM7CiAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgcGFkZGluZzogNXB4IDEwcHg7CiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICB0b3A6IC0zMHB4OwogICAgICBvcGFjaXR5OiAwOwogICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3M7CiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgfQogICAgCiAgICAuaWNvbkNvbnRhaW5lcjpob3ZlciAuY29weS10b29sdGlwIHsKICAgICAgb3BhY2l0eTogMTsKICAgIH0KCiAgICAuaWNvbkNvbnRhaW5lcjpob3ZlciBkZWVzLWljb24gewogICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7CiAgICB9CiAgICAKICAgIC5oaWRkZW4gewogICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICB9CiAgPC9zdHlsZT4KICAKICA8ZGl2IGNsYXNzPSJkZW1vQ29udGFpbmVyIj4KICAgIDxkaXYgY2xhc3M9InNlYXJjaC1jb250YWluZXIiPgogICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9Imljb25TZWFyY2giIHBsYWNlaG9sZGVyPSJTZWFyY2ggaWNvbnMuLi4iIEBpbnB1dD0ke2F9PgogICAgICA8YnV0dG9uIGNsYXNzPSJjb3B5LWFsbC1idXR0b24iIEBjbGljaz0ke3R9PvCfk4sgQ29weSBBbGwgSWNvbiBOYW1lczwvYnV0dG9uPgogICAgPC9kaXY+CiAgICAKICAgIDxkaXYgY2xhc3M9ImFwaS1ub3RlIj4KICAgICAgTmV3IEFQSTogVXNlIDxjb2RlPmljb249ImZhOmljb25OYW1lIjwvY29kZT4gb3IgPGNvZGU+aWNvbj0ibHVjaWRlOmljb25OYW1lIjwvY29kZT4gaW5zdGVhZCBvZiA8Y29kZT5pY29uRkE8L2NvZGU+LiAKICAgICAgQ2xpY2sgYW55IGljb24gdG8gY29weSBpdHMgbmV3IGZvcm1hdCB0byBjbGlwYm9hcmQuCiAgICA8L2Rpdj4KICAgIAogICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1jb250YWluZXIgZmEtc2VjdGlvbiI+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPgogICAgICAgIEZvbnRBd2Vzb21lIEljb25zCiAgICAgICAgPHNwYW4gY2xhc3M9Imljb24tY291bnQiPiR7cy5sZW5ndGh9IGljb25zPC9zcGFuPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iaWNvbnMtZ3JpZCI+CiAgICAgICAgJHtzLm1hcChuPT57bGV0IG89YGZhOiR7bn1gO3JldHVybiB3YAogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imljb25Db250YWluZXIgZmEtaWNvbiIgZGF0YS1uYW1lPSR7bi50b0xvd2VyQ2FzZSgpfSBAY2xpY2s9JHsoKT0+cihuLCJmYSIpfT4KICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHtvfSBpY29uU2l6ZT0iMjQiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaWNvbk5hbWUiPmZhOiR7bn08L2Rpdj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb3B5LXRvb2x0aXAiPkNsaWNrIHRvIGNvcHk8L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGB9KX0KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWNvbnRhaW5lciBsdWNpZGUtc2VjdGlvbiI+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPgogICAgICAgIEx1Y2lkZSBJY29ucwogICAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWNvdW50Ij4ke2UubGVuZ3RofSBpY29uczwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9Imljb25zLWdyaWQiPgogICAgICAgICR7ZS5tYXAobj0+e2xldCBvPWBsdWNpZGU6JHtufWA7cmV0dXJuIHdgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaWNvbkNvbnRhaW5lciBsdWNpZGUtaWNvbiIgZGF0YS1uYW1lPSR7bi50b0xvd2VyQ2FzZSgpfSBAY2xpY2s9JHsoKT0+cihuLCJsdWNpZGUiKX0+CiAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7b30gaWNvblNpemU9IjI0Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imljb25OYW1lIj5sdWNpZGU6JHtufTwvZGl2PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvcHktdG9vbHRpcCI+Q2xpY2sgdG8gY29weTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYH0pfQogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2PgogIGB9LCJkZW1vRnVuYyIpfSk7ZnVuY3Rpb24gdldhKCl7cnYuc2l6ZT5aMmEmJkFycmF5LmZyb20ocnYua2V5cygpKS5zbGljZSgwLFoyYS81KS5mb3JFYWNoKGU9PnJ2LmRlbGV0ZShlKSl9dmFyIGl2LFUxLGJXYSxhbmUscnYsWjJhLFgyYSxVYT1nKCgpPT57cGUoKTtrdCgpO3B0KCk7azhlKCk7c2dlKCk7ejdlKCk7UmtlKCk7WTJhKCk7QzgoKTtDOCgpO2l2PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxVMT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sYldhPXthcnJvd1JpZ2h0OlhiLGFycm93VXBSaWdodEZyb21TcXVhcmU6Z2YsYmVsbDpGYixidWc6ZXYsYnVpbGRpbmc6S2IsY2FyZXRMZWZ0OnFiLGNhcmV0UmlnaHQ6T2IsY2hlY2s6WmIsY2lyY2xlSW5mbzp2ZixjaXJjbGVDaGVjazp0ZixjaXJjbGVDaGVja1NvbGlkOnBmLGNpcmNsZVhtYXJrOnVoLGNpcmNsZVhtYXJrU29saWQ6cGgsY2xvY2tSb3RhdGVMZWZ0OmhmLGNvcHk6UGIsY29weVNvbGlkOnR2LGRlc2t0b3A6YmYsZXllOkhiLGV5ZVNsYXNoOmF2LGZpbGVJbnZvaWNlOlFiLGZpbGVJbnZvaWNlRG9sbGVyOkpiLGdlYXI6ZGYsZ3JpcDpoaCxtYWduaWZ5aW5nR2xhc3M6bmYsbWVzc2FnZTpKMyxtZXNzYWdlU29saWQ6cmYsbW9uZXlDaGVja0RvbGxhcjptZixtdWdIb3Q6c3YsbWludXM6c2YsbmV0d29ya1dpcmVkOldiLHBhcGVyY2xpcDpZYixwYXN0ZTpRMyxwYXN0ZVNvbGlkOmFmLHBlblRvU3F1YXJlOmxmLHBsdXM6ZmYscmVjZWlwdDpqYixyc3M6b2Ysc2hhcmU6Y2Ysc3VuOkViLHN1blNvbGlkOlViLHRlcm1pbmFsOkdiLHRyYXNoOmZoLHRyYXNoU29saWQ6ZmgsdHJhc2hDYW46ZWYsdHJhc2hDYW5Tb2xpZDp1Zix1c2VyczpWYix3YWxsZXQ6QmIseG1hcms6emQsZmFjZWJvb2s6Q2IsZ29vZ2xlOk1iLGluc3RhZ3JhbTpEYixsaW5rZWRpbjp6YixtZWRpdW06WDMsc2xhY2s6VGIsdGlrdG9rOiRiLHR3aXR0ZXI6TGJ9LGFuZT17ZmE6YldhfSxydj1uZXcgTWFwLFoyYT01MDA7aSh2V2EsImxpbWl0Q2FjaGVTaXplIik7WDJhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1pY29uIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W107dmFyIE49Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNJY29uIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IEM9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpTdHJpbmcsY29udmVydGVyOntmcm9tQXR0cmlidXRlOmkoXz0+XywiZnJvbUF0dHJpYnV0ZSIpLHRvQXR0cmlidXRlOmkoXz0+XywidG9BdHRyaWJ1dGUiKX19KV0scD1bTCh7dHlwZTpTdHJpbmcsY29udmVydGVyOntmcm9tQXR0cmlidXRlOmkoXz0+XywiZnJvbUF0dHJpYnV0ZSIpLHRvQXR0cmlidXRlOmkoXz0+XywidG9BdHRyaWJ1dGUiKX19KV0sYz1bTCh7dHlwZTpOdW1iZXJ9KV0seD1bTCh7dHlwZTpTdHJpbmd9KV0seT1bTCh7dHlwZTpOdW1iZXJ9KV0saXYodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpY29uRkEiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+Imljb25GQSJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLmljb25GQSwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLmljb25GQT1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LG8sbCksaXYodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpY29uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJpY29uImluIF8sImhhcyIpLGdldDppKF89Pl8uaWNvbiwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLmljb249T30sInNldCIpfSxtZXRhZGF0YTpDfSxkLHUpLGl2KHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaWNvblNpemUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+Imljb25TaXplImluIF8sImhhcyIpLGdldDppKF89Pl8uaWNvblNpemUsImdldCIpLHNldDppKChfLE8pPT57Xy5pY29uU2l6ZT1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LGIsdiksaXYodGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjb2xvciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4iY29sb3IiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5jb2xvciwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLmNvbG9yPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sbSxmKSxpdih0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InN0cm9rZVdpZHRoIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJzdHJva2VXaWR0aCJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLnN0cm9rZVdpZHRoLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uc3Ryb2tlV2lkdGg9T30sInNldCIpfSxtZXRhZGF0YTpDfSxNLHopLGl2KG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOkN9LG51bGwsdCksTj1hPWUudmFsdWUsQyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpDfSl9c3RhdGljIGRlbW89SzJhO3N0YXRpYyBkZW1vR3JvdXBzPVsiVXRpbGl0eSJdOyNlPVUxKHRoaXMsbyx2b2lkIDApO2dldCBpY29uRkEoKXtyZXR1cm4gdGhpcy4jZX1zZXQgaWNvbkZBKEMpe3RoaXMuI2U9Q30jdD0oVTEodGhpcyxsKSxVMSh0aGlzLGQsdm9pZCAwKSk7Z2V0IGljb24oKXtyZXR1cm4gdGhpcy4jdH1zZXQgaWNvbihDKXt0aGlzLiN0PUN9I2E9KFUxKHRoaXMsdSksVTEodGhpcyxiLHZvaWQgMCkpO2dldCBpY29uU2l6ZSgpe3JldHVybiB0aGlzLiNhfXNldCBpY29uU2l6ZShDKXt0aGlzLiNhPUN9I3M9KFUxKHRoaXMsdiksVTEodGhpcyxtLCJjdXJyZW50Q29sb3IiKSk7Z2V0IGNvbG9yKCl7cmV0dXJuIHRoaXMuI3N9c2V0IGNvbG9yKEMpe3RoaXMuI3M9Q30jaT0oVTEodGhpcyxmKSxVMSh0aGlzLE0sMikpO2dldCBzdHJva2VXaWR0aCgpe3JldHVybiB0aGlzLiNpfXNldCBzdHJva2VXaWR0aChDKXt0aGlzLiNpPUN9bGFzdEljb249KFUxKHRoaXMseiksbnVsbCk7bGFzdEljb25TaXplPW51bGw7bGFzdENvbG9yPW51bGw7bGFzdFN0cm9rZVdpZHRoPW51bGw7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRhLnNldHVwKCl9Z2V0RWZmZWN0aXZlSWNvbigpe3JldHVybiB0aGlzLmljb24/dGhpcy5pY29uOnRoaXMuaWNvbkZBP3RoaXMuaWNvbkZBLnN0YXJ0c1dpdGgoImx1Y2lkZToiKT90aGlzLmljb25GQTpgZmE6JHt0aGlzLmljb25GQX1gOm51bGx9cGFyc2VJY29uU3RyaW5nKEMpe2xldCBfPUMudG9Mb3dlckNhc2UoKTtyZXR1cm4gXy5zdGFydHNXaXRoKCJmYToiKT97dHlwZToiZmEiLG5hbWU6Qy5zdWJzdHJpbmcoMyl9Ol8uc3RhcnRzV2l0aCgibHVjaWRlOiIpP3t0eXBlOiJsdWNpZGUiLG5hbWU6Qy5zdWJzdHJpbmcoNyl9Ont0eXBlOiJsdWNpZGUiLG5hbWU6Q319cmVuZGVyTHVjaWRlSWNvbihDKXtsZXQgXz1gbHVjaWRlOiR7Q306JHt0aGlzLmljb25TaXplfToke3RoaXMuY29sb3J9OiR7dGhpcy5zdHJva2VXaWR0aH1gO2lmKHJ2LmhhcyhfKSlyZXR1cm4gcnYuZ2V0KF8pfHwiIjt0cnl7bGV0IE89Qy5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStDLnNsaWNlKDEpO2lmKCFHcltPXSlyZXR1cm4gY29uc29sZS53YXJuKGBMdWNpZGUgaWNvbiAnJHtPfScgbm90IGZvdW5kIGluIGx1Y2lkZUljb25zIG9iamVjdGApLCIiO2xldCAkPWoxKEdyW09dLHtjb2xvcjp0aGlzLmNvbG9yLHNpemU6dGhpcy5pY29uU2l6ZSxzdHJva2VXaWR0aDp0aGlzLnN0cm9rZVdpZHRofSk7aWYoISQpcmV0dXJuIGNvbnNvbGUud2FybihgY3JlYXRlRWxlbWVudCByZXR1cm5lZCBlbXB0eSByZXN1bHQgZm9yICR7T31gKSwiIjtsZXQgRT0kLm91dGVySFRNTDtyZXR1cm4gcnYuc2V0KF8sRSksdldhKCksRX1jYXRjaChPKXtyZXR1cm4gY29uc29sZS5lcnJvcihgRXJyb3IgcmVuZGVyaW5nIEx1Y2lkZSBpY29uICR7Q306YCxPKSxgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIke3RoaXMuaWNvblNpemV9IiBoZWlnaHQ9IiR7dGhpcy5pY29uU2l6ZX0iIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIke3RoaXMuY29sb3J9IiBzdHJva2Utd2lkdGg9IiR7dGhpcy5zdHJva2VXaWR0aH0iIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+CiAgICAgICAgPHRleHQgeD0iNTAlIiB5PSI1MCUiIGZvbnQtc2l6ZT0iNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZG9taW5hbnQtYmFzZWxpbmU9Im1pZGRsZSIgZmlsbD0iJHt0aGlzLmNvbG9yfSI+JHtDfTwvdGV4dD4KICAgICAgPC9zdmc+YH19c3RhdGljIHN0eWxlcz1bSGUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICAgIC8qIEltcHJvdmUgcmVuZGVyaW5nIHBlcmZvcm1hbmNlICovCiAgICAgICNpY29uQ29udGFpbmVyIHN2ZyB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07IC8qIEhlbHBzIHdpdGggYW5pbWF0aW9ucyAqLwogICAgICAgIGNvbnRhaW46IHN0cmljdDsgLyogUGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uICovCiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICAke3RhLnN0eWxlc30KICAgICAgPHN0eWxlPgogICAgICAgICNpY29uQ29udGFpbmVyIHsKICAgICAgICAgIHdpZHRoOiAke3RoaXMuaWNvblNpemV9cHg7CiAgICAgICAgICBoZWlnaHQ6ICR7dGhpcy5pY29uU2l6ZX1weDsKICAgICAgICB9CiAgICAgIDwvc3R5bGU+CiAgICAgIDxkaXYgaWQ9Imljb25Db250YWluZXIiPjwvZGl2PgogICAgYH11cGRhdGVkKCl7dGhpcy5pY29uU2l6ZXx8KHRoaXMuaWNvblNpemU9cGFyc2VJbnQoZ2xvYmFsVGhpcy5nZXRDb21wdXRlZFN0eWxlKHRoaXMpLmZvbnRTaXplLnJlcGxhY2UoL1xEL2csIiIpKSk7bGV0IEM9dGhpcy5nZXRFZmZlY3RpdmVJY29uKCk7aWYodGhpcy5sYXN0SWNvbj09PUMmJnRoaXMubGFzdEljb25TaXplPT09dGhpcy5pY29uU2l6ZSYmdGhpcy5sYXN0Q29sb3I9PT10aGlzLmNvbG9yJiZ0aGlzLmxhc3RTdHJva2VXaWR0aD09PXRoaXMuc3Ryb2tlV2lkdGgpcmV0dXJuO3RoaXMubGFzdEljb249Qyx0aGlzLmxhc3RJY29uU2l6ZT10aGlzLmljb25TaXplLHRoaXMubGFzdENvbG9yPXRoaXMuY29sb3IsdGhpcy5sYXN0U3Ryb2tlV2lkdGg9dGhpcy5zdHJva2VXaWR0aDtsZXQgXz10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIiNpY29uQ29udGFpbmVyIik7aWYoISghX3x8IUMpKXRyeXtsZXR7dHlwZTpPLG5hbWU6JH09dGhpcy5wYXJzZUljb25TdHJpbmcoQyk7aWYoTz09PSJsdWNpZGUiKXtfLmlubmVySFRNTD0iIjt0cnl7bGV0IEU9JC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSskLnNsaWNlKDEpO2lmKEdyW0VdKXtsZXQgSD1qMShHcltFXSx7Y29sb3I6dGhpcy5jb2xvcixzaXplOnRoaXMuaWNvblNpemUsc3Ryb2tlV2lkdGg6dGhpcy5zdHJva2VXaWR0aH0pO2lmKEgpe18uYXBwZW5kQ2hpbGQoSCk7cmV0dXJufX10aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBjcmVhdGUgZWxlbWVudCBmb3IgJHtFfWApfWNhdGNoKEUpe2NvbnNvbGUuZXJyb3IoIkVycm9yIHJlbmRlcmluZyBMdWNpZGUgaWNvbjoiLEUpO2xldCBIPXRoaXMucmVuZGVyTHVjaWRlSWNvbigkKTtIJiYoXy5pbm5lckhUTUw9SCl9fWVsc2V7bGV0IEU9YW5lLmZhWyRdO2lmKEUpe2xldCBIPUdrKEUpLmh0bWxbMF07Xy5pbm5lckhUTUw9SH1lbHNlIGNvbnNvbGUud2FybihgRm9udEF3ZXNvbWUgaWNvbiBub3QgZm91bmQ6ICR7JH1gKX19Y2F0Y2goTyl7Y29uc29sZS5lcnJvcihgRXJyb3IgdXBkYXRpbmcgaWNvbiAke0N9OmAsTyl9fWFzeW5jIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLmxhc3RJY29uPW51bGwsdGhpcy5sYXN0SWNvblNpemU9bnVsbCx0aGlzLmxhc3RDb2xvcj1udWxsLHRoaXMubGFzdFN0cm9rZVdpZHRoPW51bGx9c3RhdGlje1UxKGEsdCl9fTtyZXR1cm4gTj1hfSkoKX0pO3ZhciBRMmEsa2V0LGthLG9yPWcoKCk9PntwbygpO0trdCgpO3BlKCk7a3QoKTtGMSgpO3puKCk7VWEoKTtwdCgpO1EyYT1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sa2V0PWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxrYT0oKCk9PntsZXQgcz1bbmUoImRlZXMtY29udGV4dG1lbnUiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXTt2YXIgcD1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0NvbnRleHRtZW51Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpBcnJheX0pXSxRMmEodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtZW51SXRlbXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkodT0+Im1lbnVJdGVtcyJpbiB1LCJoYXMiKSxnZXQ6aSh1PT51Lm1lbnVJdGVtcywiZ2V0Iiksc2V0OmkoKHUsYyk9Pnt1Lm1lbnVJdGVtcz1jfSwic2V0Iil9LG1ldGFkYXRhOmR9LG8sbCksUTJhKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOmR9LG51bGwsdCkscD1hPWUudmFsdWUsZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpkfSl9c3RhdGljIGRlbW89R2t0O3N0YXRpYyBkZW1vR3JvdXBzPVsiT3ZlcmxheSJdO3N0YXRpYyBjb250ZXh0TWVudURlYWN0aXZhdGVkPSExO3N0YXRpYyBhY2N1bXVsYXRlZE1lbnVJdGVtcz1bXTtzdGF0aWMgaW5pdGlhbGl6ZUdsb2JhbExpc3RlbmVyKCl7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLGQ9PntpZih0aGlzLmNvbnRleHRNZW51RGVhY3RpdmF0ZWQpcmV0dXJuO2QucHJldmVudERlZmF1bHQoKSxwLmFjY3VtdWxhdGVkTWVudUl0ZW1zPVtdO2xldCB1PWQuY29tcG9zZWRQYXRoKCk7Zm9yKGxldCBjIG9mIHUpaWYoYy5nZXRDb250ZXh0TWVudUl0ZW1zKXtsZXQgYj1jLmdldENvbnRleHRNZW51SXRlbXMoKTtiJiZiLmxlbmd0aD4wJiYocC5hY2N1bXVsYXRlZE1lbnVJdGVtcy5sZW5ndGg+MCYmcC5hY2N1bXVsYXRlZE1lbnVJdGVtcy5wdXNoKHtkaXZpZGVyOiEwfSkscC5hY2N1bXVsYXRlZE1lbnVJdGVtcy5wdXNoKC4uLmIpKX1wLm9wZW5Db250ZXh0TWVudVdpdGhPcHRpb25zKGQscC5hY2N1bXVsYXRlZE1lbnVJdGVtcyl9KX1zdGF0aWMgYXN5bmMgb3BlbkNvbnRleHRNZW51V2l0aE9wdGlvbnMoZCx1KXtpZih0aGlzLmNvbnRleHRNZW51RGVhY3RpdmF0ZWQpcmV0dXJuO2QucHJldmVudERlZmF1bHQoKSxkLnN0b3BQcm9wYWdhdGlvbigpO2xldCBjPW5ldyBwO2Muc3R5bGUucG9zaXRpb249ImZpeGVkIixjLnN0eWxlLnpJbmRleD1TdHJpbmcoV3Iub3ZlcmxheS5jb250ZXh0TWVudSksYy5zdHlsZS5vcGFjaXR5PSIwIixjLnN0eWxlLnRyYW5zZm9ybT0ic2NhbGUoMC45NSkgdHJhbnNsYXRlWSgtMTBweCkiLGMubWVudUl0ZW1zPXUsYy53aW5kb3dMYXllcj1hd2FpdCBoby5jcmVhdGVBbmRTaG93KCksYy53aW5kb3dMYXllci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsYXN5bmMgeT0+e3kudGFyZ2V0LmNsb3Nlc3QoImRlZXMtY29udGV4dG1lbnUiKXx8YXdhaXQgYy5kZXN0cm95KCl9KSxkb2N1bWVudC5ib2R5LmFwcGVuZChjKSxhd2FpdCB1dC5zbWFydGRlbGF5LmRlbGF5Rm9yKDApO2xldCBiPWMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdj13aW5kb3cuaW5uZXJXaWR0aCx4PXdpbmRvdy5pbm5lckhlaWdodCxtPWQuY2xpZW50WSxmPWQuY2xpZW50WDtmK2Iud2lkdGg+diYmKGY9di1iLndpZHRoLTEwKSxtK2IuaGVpZ2h0PngmJihtPXgtYi5oZWlnaHQtMTApLGY8MTAmJihmPTEwKSxtPDEwJiYobT0xMCksYy5zdHlsZS50b3A9YCR7bX1weGAsYy5zdHlsZS5sZWZ0PWAke2Z9cHhgLGMuc3R5bGUudHJhbnNmb3JtT3JpZ2luPSJ0b3AgbGVmdCIsYXdhaXQgdXQuc21hcnRkZWxheS5kZWxheUZvcigwKSxjLnN0eWxlLm9wYWNpdHk9IjEiLGMuc3R5bGUudHJhbnNmb3JtPSJzY2FsZSgxKSB0cmFuc2xhdGVZKDApIn0jZT1rZXQodGhpcyxvLFtdKTtnZXQgbWVudUl0ZW1zKCl7cmV0dXJuIHRoaXMuI2V9c2V0IG1lbnVJdGVtcyhkKXt0aGlzLiNlPWR9d2luZG93TGF5ZXI9a2V0KHRoaXMsbCk7c3VibWVudT1udWxsO3N1Ym1lbnVUaW1lb3V0PW51bGw7cGFyZW50TWVudT1udWxsO2lzRGVzdHJveWluZz0hMTtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy50YWJJbmRleD0wfXN0YXRpYyBzdHlsZXM9W0hlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICAvKiBUT0RPOiBNaWdyYXRlIGhhcmRjb2RlZCB2YWx1ZXMgdG8gLS1kZWVzLSogQ1NTIHZhcmlhYmxlcyAqLwogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzLCB0cmFuc2Zvcm0gMC4yczsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICB9CgogICAgICAubWFpbmJveCB7CiAgICAgICAgbWluLXdpZHRoOiAyMDBweDsKICAgICAgICBtYXgtd2lkdGg6IDI4MHB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzAwMDAwMCIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2UwZTBlMCIsIiMyMDIwMjAiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGJveC1zaGFkb3c6ICR7aC5iZFRoZW1lKCIwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xNSkiLCIwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4zKSIpfTsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICBwYWRkaW5nOiA0cHggMDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMzMzIiwiI2NjYyIpfTsKICAgICAgfQoKICAgICAgLm1lbnVpdGVtIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xczsKICAgICAgICBsaW5lLWhlaWdodDogMTsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIC5tZW51aXRlbTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wNCkiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpIil9OwogICAgICB9CiAgICAgIAogICAgICAubWVudWl0ZW0uaGFzLXN1Ym1lbnU6OmFmdGVyIHsKICAgICAgICBjb250ZW50OiAn4oC6JzsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgcmlnaHQ6IDhweDsKICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICB9CgogICAgICAubWVudWl0ZW06YWN0aXZlOm5vdCguaGFzLXN1Ym1lbnUpIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjA4KSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMikiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5tZW51aXRlbS5kaXNhYmxlZCB7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5tZW51aXRlbSBkZWVzLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBvcGFjaXR5OiAwLjc7CiAgICAgIH0KCiAgICAgIC5tZW51aXRlbS10ZXh0IHsKICAgICAgICBmbGV4OiAxOwogICAgICB9CgogICAgICAubWVudWl0ZW0tc2hvcnRjdXQgewogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM5OTkiLCIjNjY2Iil9OwogICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICAgIG9wYWNpdHk6IDAuNzsKICAgICAgfQoKICAgICAgLm1lbnUtZGl2aWRlciB7CiAgICAgICAgaGVpZ2h0OiAxcHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNlMGUwZTAiLCIjMjAyMDIwIil9OwogICAgICAgIG1hcmdpbjogNHB4IDA7CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJtYWluYm94Ij4KICAgICAgICAke3RoaXMubWVudUl0ZW1zLm1hcChkPT57aWYoImRpdmlkZXIiaW4gZCYmZC5kaXZpZGVyKXJldHVybiB3YDxkaXYgY2xhc3M9Im1lbnUtZGl2aWRlciI+PC9kaXY+YDtsZXQgdT1kLGM9dS5zdWJtZW51JiZ1LnN1Ym1lbnUubGVuZ3RoPjA7cmV0dXJuIHdgCiAgICAgICAgICAgIDxkaXYgCiAgICAgICAgICAgICAgY2xhc3M9Im1lbnVpdGVtICR7dS5kaXNhYmxlZD8iZGlzYWJsZWQiOiIifSAke2M/Imhhcy1zdWJtZW51IjoiIn0iIAogICAgICAgICAgICAgIEBjbGljaz0keygpPT4hdS5kaXNhYmxlZCYmIWMmJnRoaXMuaGFuZGxlQ2xpY2sodSl9CiAgICAgICAgICAgICAgQG1vdXNlZW50ZXI9JHsoKT0+dGhpcy5oYW5kbGVNZW51SXRlbUhvdmVyKHUsYyl9CiAgICAgICAgICAgICAgQG1vdXNlbGVhdmU9JHsoKT0+dGhpcy5oYW5kbGVNZW51SXRlbUxlYXZlKCl9CiAgICAgICAgICAgID4KICAgICAgICAgICAgICAke3UuaWNvbk5hbWU/d2AKICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249IiR7dS5pY29uTmFtZX0iPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1lbnVpdGVtLXRleHQiPiR7dS5uYW1lfTwvc3Bhbj4KICAgICAgICAgICAgICAke3Uuc2hvcnRjdXQmJiFjP3dgCiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibWVudWl0ZW0tc2hvcnRjdXQiPiR7dS5zaG9ydGN1dH08L3NwYW4+CiAgICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgfSl9CiAgICAgICAgJHt0aGlzLm1lbnVJdGVtcy5sZW5ndGg9PT0wP3dgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lbnVpdGVtIiBAY2xpY2s9JHsoKT0+e3AuY29udGV4dE1lbnVEZWFjdGl2YXRlZD0hMCx0aGlzLmRlc3Ryb3koKX19PgogICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249Imx1Y2lkZTp4Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibWVudWl0ZW0tdGV4dCI+QWxsb3cgbmF0aXZlIGNvbnRleHQ8L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIGA6d2BgfQogICAgICA8L2Rpdj4KICAgIGB9YXN5bmMgZmlyc3RVcGRhdGVkKCl7dGhpcy5mb2N1cygpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5oYW5kbGVLZXlkb3duKX1oYW5kbGVLZXlkb3duPWkoZD0+e2xldCB1PUFycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoIi5tZW51aXRlbTpub3QoLmRpc2FibGVkKSIpKSxjPXUuZmluZEluZGV4KGI9PmIubWF0Y2hlcygiOmhvdmVyIikpO3N3aXRjaChkLmtleSl7Y2FzZSJBcnJvd0Rvd24iOmQucHJldmVudERlZmF1bHQoKTtsZXQgYj1jKzE8dS5sZW5ndGg/YysxOjA7dVtiXS5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCJtb3VzZWVudGVyIikpO2JyZWFrO2Nhc2UiQXJyb3dVcCI6ZC5wcmV2ZW50RGVmYXVsdCgpO2xldCB2PWMtMT49MD9jLTE6dS5sZW5ndGgtMTt1W3ZdLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoIm1vdXNlZW50ZXIiKSk7YnJlYWs7Y2FzZSJFbnRlciI6ZC5wcmV2ZW50RGVmYXVsdCgpLGM+PTAmJnVbY10uY2xpY2soKTticmVhaztjYXNlIkVzY2FwZSI6ZC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuZGVzdHJveSgpO2JyZWFrfX0sImhhbmRsZUtleWRvd24iKTthc3luYyBoYW5kbGVDbGljayhkKXtkLmFjdGlvbigpLGF3YWl0IHRoaXMuZGVzdHJveUFsbCgpfWFzeW5jIGhhbmRsZU1lbnVJdGVtSG92ZXIoZCx1KXt0aGlzLnN1Ym1lbnVUaW1lb3V0JiYoY2xlYXJUaW1lb3V0KHRoaXMuc3VibWVudVRpbWVvdXQpLHRoaXMuc3VibWVudVRpbWVvdXQ9bnVsbCksdGhpcy5zdWJtZW51JiZhd2FpdCB0aGlzLmhpZGVTdWJtZW51KCksdSYmZC5zdWJtZW51JiYodGhpcy5zdWJtZW51VGltZW91dD1zZXRUaW1lb3V0KCgpPT57dGhpcy5zaG93U3VibWVudShkKX0sMjAwKSl9aGFuZGxlTWVudUl0ZW1MZWF2ZSgpe3RoaXMuc3VibWVudVRpbWVvdXQmJmNsZWFyVGltZW91dCh0aGlzLnN1Ym1lbnVUaW1lb3V0KSx0aGlzLnN1Ym1lbnVUaW1lb3V0PXNldFRpbWVvdXQoKCk9Pnt0aGlzLnN1Ym1lbnUmJiF0aGlzLnN1Ym1lbnUubWF0Y2hlcygiOmhvdmVyIikmJnRoaXMuaGlkZVN1Ym1lbnUoKX0sMzAwKX1hc3luYyBzaG93U3VibWVudShkKXtpZighZC5zdWJtZW51fHxkLnN1Ym1lbnUubGVuZ3RoPT09MClyZXR1cm47bGV0IGM9QXJyYXkuZnJvbSh0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgiLm1lbnVpdGVtIikpLmZpbmQoTT0+TS5xdWVyeVNlbGVjdG9yKCIubWVudWl0ZW0tdGV4dCIpPy50ZXh0Q29udGVudD09PWQubmFtZSk7aWYoIWMpcmV0dXJuO3RoaXMuc3VibWVudT1uZXcgcCx0aGlzLnN1Ym1lbnUubWVudUl0ZW1zPWQuc3VibWVudSx0aGlzLnN1Ym1lbnUucGFyZW50TWVudT10aGlzLHRoaXMuc3VibWVudS5zdHlsZS5wb3NpdGlvbj0iZml4ZWQiLHRoaXMuc3VibWVudS5zdHlsZS56SW5kZXg9U3RyaW5nKHBhcnNlSW50KHRoaXMuc3R5bGUuekluZGV4KSsxKSx0aGlzLnN1Ym1lbnUuc3R5bGUub3BhY2l0eT0iMCIsdGhpcy5zdWJtZW51LnN0eWxlLnRyYW5zZm9ybT0ic2NhbGUoMC45NSkiLGRvY3VtZW50LmJvZHkuYXBwZW5kKHRoaXMuc3VibWVudSksYXdhaXQgdXQuc21hcnRkZWxheS5kZWxheUZvcigwKTtsZXQgYj1jLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHY9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx4PXRoaXMuc3VibWVudS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxtPXdpbmRvdy5pbm5lcldpZHRoLGY9di5yaWdodC00LHk9Yi50b3A7Zit4LndpZHRoPm0tMTAmJihmPXYubGVmdC14LndpZHRoKzQpLHkreC5oZWlnaHQ+d2luZG93LmlubmVySGVpZ2h0LTEwJiYoeT13aW5kb3cuaW5uZXJIZWlnaHQteC5oZWlnaHQtMTApLHRoaXMuc3VibWVudS5zdHlsZS5sZWZ0PWAke2Z9cHhgLHRoaXMuc3VibWVudS5zdHlsZS50b3A9YCR7eX1weGAsYXdhaXQgdXQuc21hcnRkZWxheS5kZWxheUZvcigwKSx0aGlzLnN1Ym1lbnUuc3R5bGUub3BhY2l0eT0iMSIsdGhpcy5zdWJtZW51LnN0eWxlLnRyYW5zZm9ybT0ic2NhbGUoMSkiLHRoaXMuc3VibWVudS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWVudGVyIiwoKT0+e3RoaXMuc3VibWVudVRpbWVvdXQmJihjbGVhclRpbWVvdXQodGhpcy5zdWJtZW51VGltZW91dCksdGhpcy5zdWJtZW51VGltZW91dD1udWxsKX0pLHRoaXMuc3VibWVudS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIiwoKT0+e3RoaXMuaGFuZGxlTWVudUl0ZW1MZWF2ZSgpfSl9YXN5bmMgaGlkZVN1Ym1lbnUoKXt0aGlzLnN1Ym1lbnUmJihhd2FpdCB0aGlzLnN1Ym1lbnUuZGVzdHJveSgpLHRoaXMuc3VibWVudT1udWxsKX1hc3luYyBkZXN0cm95KCl7dGhpcy5pc0Rlc3Ryb3lpbmd8fCh0aGlzLmlzRGVzdHJveWluZz0hMCx0aGlzLnN1Ym1lbnVUaW1lb3V0JiYoY2xlYXJUaW1lb3V0KHRoaXMuc3VibWVudVRpbWVvdXQpLHRoaXMuc3VibWVudVRpbWVvdXQ9bnVsbCksdGhpcy5zdWJtZW51JiYoYXdhaXQgdGhpcy5zdWJtZW51LmRlc3Ryb3koKSx0aGlzLnN1Ym1lbnU9bnVsbCksdGhpcy53aW5kb3dMYXllciYmIXRoaXMucGFyZW50TWVudSYmdGhpcy53aW5kb3dMYXllci5kZXN0cm95KCksdGhpcy5zdHlsZS5vcGFjaXR5PSIwIix0aGlzLnN0eWxlLnRyYW5zZm9ybT0ic2NhbGUoMC45NSkgdHJhbnNsYXRlWSgtMTBweCkiLGF3YWl0IHV0LnNtYXJ0ZGVsYXkuZGVsYXlGb3IoMTAwKSx0aGlzLnBhcmVudEVsZW1lbnQmJnRoaXMucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzKSl9YXN5bmMgZGVzdHJveUFsbCgpe2xldCBkPXRoaXM7Zm9yKDtkLnBhcmVudE1lbnU7KWQ9ZC5wYXJlbnRNZW51O2F3YWl0IGQuZGVzdHJveSgpfXN0YXRpY3trZXQoYSx0KX19O3JldHVybiBwPWF9KSgpO2thLmluaXRpYWxpemVHbG9iYWxMaXN0ZW5lcigpfSk7dmFyIEoyYSxfZXQseFdhLGVkYT1nKCgpPT57cGUoKTtKMmE9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LF9ldD1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0seFdhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1kZW1vd3JhcHBlciIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdO3ZhciBwPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzRGVtb1dyYXBwZXIiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgZD10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHthdHRyaWJ1dGU6ITF9KV0sSjJhKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicnVuQWZ0ZXJSZW5kZXIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkodT0+InJ1bkFmdGVyUmVuZGVyImluIHUsImhhcyIpLGdldDppKHU9PnUucnVuQWZ0ZXJSZW5kZXIsImdldCIpLHNldDppKCh1LGMpPT57dS5ydW5BZnRlclJlbmRlcj1jfSwic2V0Iil9LG1ldGFkYXRhOmR9LG8sbCksSjJhKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOmR9LG51bGwsdCkscD1hPWUudmFsdWUsZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpkfSl9I2U9X2V0KHRoaXMsbyx2b2lkIDApO2dldCBydW5BZnRlclJlbmRlcigpe3JldHVybiB0aGlzLiNlfXNldCBydW5BZnRlclJlbmRlcihkKXt0aGlzLiNlPWR9c3RhdGljIHN0eWxlcz1bSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGNvbnRlbnRzOwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPHNsb3Q+PC9zbG90PgogICAgYH1hc3luYyBmaXJzdFVwZGF0ZWQoKXtpZihhd2FpdCB0aGlzLnVwZGF0ZUNvbXBsZXRlLGF3YWl0IG5ldyBQcm9taXNlKGQ9PnNldFRpbWVvdXQoZCw1MCkpLHRoaXMuY2hpbGRyZW4ubGVuZ3RoPjAmJnRoaXMucnVuQWZ0ZXJSZW5kZXIpdHJ5e2F3YWl0IHRoaXMucnVuQWZ0ZXJSZW5kZXIodGhpcyl9Y2F0Y2goZCl7Y29uc29sZS5lcnJvcigiRXJyb3IgaW4gcnVuQWZ0ZXJSZW5kZXI6IixkKX19Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLF9ldCh0aGlzLGwpfXN0YXRpY3tfZXQoYSx0KX19O3JldHVybiBwPWF9KSgpfSk7dmFyIEl0PWcoKCk9PntlZGEoKX0pO3ZhciB0ZGEsYWRhPWcoKCk9PntwZSgpO0l0KCk7dGRhPWkoKCk9PntsZXQgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkZWVzLWFwcHVpLWFjdGl2aXR5bG9nIik7cmV0dXJuIHNldFRpbWVvdXQoKCk9PntzLmFkZE1hbnkoW3t0eXBlOiJsb2dpbiIsdXNlcjoiSm9obiBEb2UiLG1lc3NhZ2U6ImxvZ2dlZCBpbiBmcm9tIENocm9tZSBvbiBtYWNPUyJ9LHt0eXBlOiJjcmVhdGUiLHVzZXI6IkpvaG4gRG9lIixtZXNzYWdlOidjcmVhdGVkIGEgbmV3IHByb2plY3QgIkZyb250ZW5kIEFwcCInfSx7dHlwZToidXBkYXRlIix1c2VyOiJKYW5lIFNtaXRoIixtZXNzYWdlOiJ1cGRhdGVkIEFQSSBkb2N1bWVudGF0aW9uIn0se3R5cGU6InZpZXciLHVzZXI6IkpvaG4gRG9lIixtZXNzYWdlOiJ2aWV3ZWQgZGFzaGJvYXJkIGFuYWx5dGljcyJ9LHt0eXBlOiJkZWxldGUiLHVzZXI6IkFkbWluIixtZXNzYWdlOiJyZW1vdmVkIGRlcHJlY2F0ZWQgZW5kcG9pbnQifSx7dHlwZToiY3VzdG9tIix1c2VyOiJTeXN0ZW0iLG1lc3NhZ2U6InNjaGVkdWxlZCBiYWNrdXAgY29tcGxldGVkIixpY29uTmFtZToibHVjaWRlOmRhdGFiYXNlIn0se3R5cGU6ImxvZ291dCIsdXNlcjoiQWxpY2UgQnJvd24iLG1lc3NhZ2U6ImxvZ2dlZCBvdXQifSx7dHlwZToiY3JlYXRlIix1c2VyOiJKYW5lIFNtaXRoIixtZXNzYWdlOiJjcmVhdGVkIGludm9pY2UgIzEyMzQifV0pLHMuZW50cmllcyQuc3Vic2NyaWJlKGU9Pntjb25zb2xlLmxvZygiQWN0aXZpdHkgbG9nIHVwZGF0ZWQ6IixlLmxlbmd0aCwiZW50cmllcyIpfSl9LDEwMCksd2AKICAgIDxkZWVzLWRlbW93cmFwcGVyPgogICAgICA8c3R5bGU+CiAgICAgICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBoZWlnaHQ6IDYwMHB4OwogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMDkwOTBiIil9OwogICAgICAgICAgcGFkZGluZzogMzJweDsKICAgICAgICB9CiAgICAgIDwvc3R5bGU+CiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgICAgICAke3N9CiAgICAgIDwvZGl2PgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgogIGB9LCJkZW1vRnVuYyIpfSk7dmFyIHNuZSxUOCxzZGEsTWV0PWcoKCk9PntwZSgpO2t0KCk7b3IoKTtVYSgpO2FkYSgpO3B0KCk7c25lPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxUOD1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sc2RhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1hcHB1aS1hY3Rpdml0eWxvZyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdO3ZhciB4PWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzQXBwdWlBY3Rpdml0eWxvZyIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBtPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W1koKV0scD1bWSgpXSxjPVtZKCldLHNuZSh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImVudHJpZXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+ImVudHJpZXMiaW4gZiwiaGFzIiksZ2V0OmkoZj0+Zi5lbnRyaWVzLCJnZXQiKSxzZXQ6aSgoZix5KT0+e2YuZW50cmllcz15fSwic2V0Iil9LG1ldGFkYXRhOm19LG8sbCksc25lKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VhcmNoUXVlcnkiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+InNlYXJjaFF1ZXJ5ImluIGYsImhhcyIpLGdldDppKGY9PmYuc2VhcmNoUXVlcnksImdldCIpLHNldDppKChmLHkpPT57Zi5zZWFyY2hRdWVyeT15fSwic2V0Iil9LG1ldGFkYXRhOm19LGQsdSksc25lKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZmlsdGVyQ3JpdGVyaWEiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+ImZpbHRlckNyaXRlcmlhImluIGYsImhhcyIpLGdldDppKGY9PmYuZmlsdGVyQ3JpdGVyaWEsImdldCIpLHNldDppKChmLHkpPT57Zi5maWx0ZXJDcml0ZXJpYT15fSwic2V0Iil9LG1ldGFkYXRhOm19LGIsdiksc25lKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOm19LG51bGwsdCkseD1hPWUudmFsdWUsbSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTptfSl9c3RhdGljIGRlbW89dGRhO3N0YXRpYyBkZW1vR3JvdXBzPVsiQXBwIFVJIl07I2U9VDgodGhpcyxvLFtdKTtnZXQgZW50cmllcygpe3JldHVybiB0aGlzLiNlfXNldCBlbnRyaWVzKG0pe3RoaXMuI2U9bX0jdD0oVDgodGhpcyxsKSxUOCh0aGlzLGQsIiIpKTtnZXQgc2VhcmNoUXVlcnkoKXtyZXR1cm4gdGhpcy4jdH1zZXQgc2VhcmNoUXVlcnkobSl7dGhpcy4jdD1tfSNhPShUOCh0aGlzLHUpLFQ4KHRoaXMsYix7fSkpO2dldCBmaWx0ZXJDcml0ZXJpYSgpe3JldHVybiB0aGlzLiNhfXNldCBmaWx0ZXJDcml0ZXJpYShtKXt0aGlzLiNhPW19ZW50cmllcyQ9KFQ4KHRoaXMsdiksbmV3IHV0LnNtYXJ0cngucnhqcy5TdWJqZWN0KTtzdGF0aWMgc3R5bGVzPVtIZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIC8qIENTUyBWYXJpYWJsZXMgYWxpZ25lZCB3aXRoIHNlY29uZGFyeSBtZW51ICovCiAgICAgICAgLS1hY3Rpdml0eWxvZy1iZzogJHtoLmJkVGhlbWUoIiNmYWZhZmEiLCIjMGEwYTBhIil9OwogICAgICAgIC0tYWN0aXZpdHlsb2ctZmc6ICR7aC5iZFRoZW1lKCIjNTI1MjUyIiwiI2EzYTNhMyIpfTsKICAgICAgICAtLWFjdGl2aXR5bG9nLWZnLW11dGVkOiAke2guYmRUaGVtZSgiIzczNzM3MyIsIiM3MzczNzMiKX07CiAgICAgICAgLS1hY3Rpdml0eWxvZy1mZy1hY3RpdmU6ICR7aC5iZFRoZW1lKCIjMGEwYTBhIiwiI2ZhZmFmYSIpfTsKICAgICAgICAtLWFjdGl2aXR5bG9nLWJvcmRlcjogJHtoLmJkVGhlbWUoIiNlNWU1ZTUiLCIjMWExYTFhIil9OwogICAgICAgIC0tYWN0aXZpdHlsb2ctaG92ZXI6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMDQpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA2KSIpfTsKICAgICAgICAtLWFjdGl2aXR5bG9nLWFjY2VudDogJHtoLmJkVGhlbWUoIiM3ODcxNmMiLCIjYjVhOTlhIil9OwoKICAgICAgICBjb2xvcjogdmFyKC0tYWN0aXZpdHlsb2ctZmcpOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYWN0aXZpdHlsb2ctYmcpOwogICAgICAgIGZvbnQtZmFtaWx5OiAnR2Vpc3QgU2FucycsIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgc2Fucy1zZXJpZjsKICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWFjdGl2aXR5bG9nLWJvcmRlcik7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC5tYWluY29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwcHg7CiAgICAgICAgbGVmdDogMHB4OwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB3aWR0aDogMjgwcHg7CiAgICAgIH0KCiAgICAgIC8qIEhlYWRlciB3aXRoIHN0cmVhbWluZyBpbmRpY2F0b3IgKi8KICAgICAgLnRvcGJhciB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMHB4OwogICAgICAgIGhlaWdodDogNDhweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBwYWRkaW5nOiAwcHggMTJweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1hY3Rpdml0eWxvZy1iZyk7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWFjdGl2aXR5bG9nLWJvcmRlcik7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAudG9wYmFyIC5oZWFkaW5nIHsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogdmFyKC0tYWN0aXZpdHlsb2ctZmctYWN0aXZlKTsKICAgICAgfQoKICAgICAgLmxpdmUtaW5kaWNhdG9yIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtOwogICAgICAgIGNvbG9yOiB2YXIoLS1hY3Rpdml0eWxvZy1mZy1tdXRlZCk7CiAgICAgIH0KCiAgICAgIC5saXZlLWluZGljYXRvciAuZG90IHsKICAgICAgICB3aWR0aDogNnB4OwogICAgICAgIGhlaWdodDogNnB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjMjJjNTVlIiwiIzIyYzU1ZSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYW5pbWF0aW9uOiBwdWxzZSAycyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBwdWxzZSB7CiAgICAgICAgMCUsIDEwMCUgeyBvcGFjaXR5OiAwLjU7IHRyYW5zZm9ybTogc2NhbGUoMC45KTsgfQogICAgICAgIDUwJSB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogc2NhbGUoMS4xKTsgfQogICAgICB9CgogICAgICAvKiBBY3Rpdml0eSBjb250YWluZXIgKi8KICAgICAgLmFjdGl2aXR5Q29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiA0OHB4OwogICAgICAgIGJvdHRvbTogNDhweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBwYWRkaW5nOiA4cHggMDsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW47CiAgICAgICAgc2Nyb2xsYmFyLXdpZHRoOiB0aGluOwogICAgICAgIHNjcm9sbGJhci1jb2xvcjogJHtoLmJkVGhlbWUoIiNkNGQ0ZDQiLCIjMzMzMzMzIil9IHRyYW5zcGFyZW50OwogICAgICB9CgogICAgICAuYWN0aXZpdHlDb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFyIHsKICAgICAgICB3aWR0aDogNnB4OwogICAgICB9CgogICAgICAuYWN0aXZpdHlDb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgfQoKICAgICAgLmFjdGl2aXR5Q29udGFpbmVyOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNkNGQ0ZDQiLCIjMzMzMzMzIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgfQoKICAgICAgLmFjdGl2aXR5Q29udGFpbmVyOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNhM2EzYTMiLCIjNTI1MjUyIil9OwogICAgICB9CgogICAgICAuZW1wdHktc3RhdGUgewogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgcGFkZGluZzogNDBweCAxNnB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1hY3Rpdml0eWxvZy1mZy1tdXRlZCk7CiAgICAgIH0KCiAgICAgIC8qIERhdGUgc2VwYXJhdG9yIC0gd2FybSB0YXVwZSBzdHlsaW5nICovCiAgICAgIC5kYXRlLXNlcGFyYXRvciB7CiAgICAgICAgcGFkZGluZzogMTJweCAxMnB4IDZweDsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDsKICAgICAgICBjb2xvcjogdmFyKC0tYWN0aXZpdHlsb2ctYWNjZW50KTsKICAgICAgICBwb3NpdGlvbjogc3RpY2t5OwogICAgICAgIHRvcDogMDsKICAgICAgICB6LWluZGV4OiAxOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWFjdGl2aXR5bG9nLWJnKTsKICAgICAgfQoKICAgICAgLyogQWN0aXZpdHkgZW50cnkgLSBtb2Rlcm4gc3RhY2tlZCBsYXlvdXQgKi8KICAgICAgLmFjdGl2aXR5ZW50cnkgewogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgICAgICBtYXJnaW46IDJweCA0cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xNXMgZWFzZTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICAgIGdhcDogMTBweDsKICAgICAgICBsaW5lLWhlaWdodDogMS40OwogICAgICAgIGFuaW1hdGlvbjogZmFkZUluIDAuMnMgZWFzZS1vdXQ7CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMgZmFkZUluIHsKICAgICAgICBmcm9tIHsKICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7CiAgICAgICAgfQogICAgICAgIHRvIHsKICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgfQogICAgICB9CgogICAgICAuYWN0aXZpdHllbnRyeTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYWN0aXZpdHlsb2ctaG92ZXIpOwogICAgICB9CgogICAgICAuYWN0aXZpdHktaWNvbiB7CiAgICAgICAgd2lkdGg6IDI4cHg7CiAgICAgICAgaGVpZ2h0OiAyOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjA0KSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNikiKX07CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBjb2xvcjogdmFyKC0tYWN0aXZpdHlsb2ctZmctbXV0ZWQpOwogICAgICAgIG1hcmdpbi10b3A6IDFweDsKICAgICAgfQoKICAgICAgLmFjdGl2aXR5LWljb24ubG9naW4gewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDM0LCAxOTcsIDk0LCAwLjA4KSIsInJnYmEoMzQsIDE5NywgOTQsIDAuMTIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE2YTM0YSIsIiM0YWRlODAiKX07CiAgICAgIH0KCiAgICAgIC5hY3Rpdml0eS1pY29uLmxvZ291dCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMjM5LCA2OCwgNjgsIDAuMDgpIiwicmdiYSgyMzksIDY4LCA2OCwgMC4xMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZGMyNjI2IiwiI2Y4NzE3MSIpfTsKICAgICAgfQoKICAgICAgLmFjdGl2aXR5LWljb24udmlldyB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoNTksIDEzMCwgMjQ2LCAwLjA4KSIsInJnYmEoNTksIDEzMCwgMjQ2LCAwLjEyKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMyNTYzZWIiLCIjNjBhNWZhIil9OwogICAgICB9CgogICAgICAuYWN0aXZpdHktaWNvbi5jcmVhdGUgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDE2OCwgODUsIDI0NywgMC4wOCkiLCJyZ2JhKDE2OCwgODUsIDI0NywgMC4xMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjOTMzM2VhIiwiI2MwODRmYyIpfTsKICAgICAgfQoKICAgICAgLmFjdGl2aXR5LWljb24udXBkYXRlIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgyNTEsIDE0NiwgNjAsIDAuMDgpIiwicmdiYSgyNTEsIDE0NiwgNjAsIDAuMTIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2VhNTgwYyIsIiNmYjkyM2MiKX07CiAgICAgIH0KCiAgICAgIC5hY3Rpdml0eS1pY29uLmRlbGV0ZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMjM5LCA2OCwgNjgsIDAuMDgpIiwicmdiYSgyMzksIDY4LCA2OCwgMC4xMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZGMyNjI2IiwiI2Y4NzE3MSIpfTsKICAgICAgfQoKICAgICAgLmFjdGl2aXR5LWljb24uY3VzdG9tIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgxMDAsIDExNiwgMTM5LCAwLjA4KSIsInJnYmEoMTAwLCAxMTYsIDEzOSwgMC4xMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNDc1NTY5IiwiIzk0YTNiOCIpfTsKICAgICAgfQoKICAgICAgLmFjdGl2aXR5LWNvbnRlbnQgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgbWluLXdpZHRoOiAwOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDJweDsKICAgICAgfQoKICAgICAgLmFjdGl2aXR5LWhlYWRlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4OwogICAgICB9CgogICAgICAuYWN0aXZpdHktdXNlciB7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY29sb3I6IHZhcigtLWFjdGl2aXR5bG9nLWZnLWFjdGl2ZSk7CiAgICAgIH0KCiAgICAgIC5hY3Rpdml0eS1zZXBhcmF0b3IgewogICAgICAgIGNvbG9yOiB2YXIoLS1hY3Rpdml0eWxvZy1mZy1tdXRlZCk7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICB9CgogICAgICAudGltZXN0YW1wIHsKICAgICAgICBjb2xvcjogdmFyKC0tYWN0aXZpdHlsb2ctZmctbXV0ZWQpOwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7CiAgICAgICAgZm9udC1mYW1pbHk6ICdHZWlzdCBNb25vJywgbW9ub3NwYWNlOwogICAgICB9CgogICAgICAuYWN0aXZpdHktbWVzc2FnZSB7CiAgICAgICAgY29sb3I6IHZhcigtLWFjdGl2aXR5bG9nLWZnKTsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTsKICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkOwogICAgICB9CgogICAgICAvKiBTZWFyY2ggYm94IC0gcmVmaW5lZCBzdHlsaW5nICovCiAgICAgIC5zZWFyY2hib3ggewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBib3R0b206IDBweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDQ4cHg7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYWN0aXZpdHlsb2ctYmcpOwogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1hY3Rpdml0eWxvZy1ib3JkZXIpOwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgIC5zZWFyY2gtd3JhcHBlciB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMzJweDsKICAgICAgfQoKICAgICAgLnNlYXJjaC1pY29uIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgbGVmdDogMTBweDsKICAgICAgICB0b3A6IDUwJTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICAgICAgY29sb3I6IHZhcigtLWFjdGl2aXR5bG9nLWZnLW11dGVkKTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgMC4xNXMgZWFzZTsKICAgICAgfQoKICAgICAgLnNlYXJjaGJveCBpbnB1dCB7CiAgICAgICAgY29sb3I6IHZhcigtLWFjdGl2aXR5bG9nLWZnLWFjdGl2ZSk7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wMykiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDQpIil9OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjA4KSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCkiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIHBhZGRpbmc6IDAgMTJweCAwIDM0cHg7CiAgICAgICAgZm9udC1mYW1pbHk6ICdHZWlzdCBTYW5zJywgc2Fucy1zZXJpZjsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5zZWFyY2hib3ggaW5wdXQ6OnBsYWNlaG9sZGVyIHsKICAgICAgICBjb2xvcjogdmFyKC0tYWN0aXZpdHlsb2ctZmctbXV0ZWQpOwogICAgICB9CgogICAgICAuc2VhcmNoYm94IGlucHV0OmZvY3VzIHsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4xNSkiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIil9OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMDIpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA2KSIpfTsKICAgICAgfQoKICAgICAgLnNlYXJjaC13cmFwcGVyOmhhcyhpbnB1dDpmb2N1cykgLnNlYXJjaC1pY29uIHsKICAgICAgICBjb2xvcjogdmFyKC0tYWN0aXZpdHlsb2ctZmcpOwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtsZXQgbT10aGlzLmdldEZpbHRlcmVkRW50cmllcygpLGY9dGhpcy5ncm91cEVudHJpZXNCeURhdGUobSk7cmV0dXJuIHdgCiAgICAgICR7dGEuc3R5bGVzfQogICAgICA8c3R5bGU+PC9zdHlsZT4KICAgICAgPGRpdiBjbGFzcz0ibWFpbmNvbnRhaW5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0idG9wYmFyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRpbmciPkFjdGl2aXR5IExvZzwvZGl2PgogICAgICAgICAgJHttLmxlbmd0aD4wP3dgPGRpdiBjbGFzcz0ibGl2ZS1pbmRpY2F0b3IiPjxzcGFuIGNsYXNzPSJkb3QiPjwvc3Bhbj5MaXZlPC9kaXY+YDoiIn0KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpdml0eUNvbnRhaW5lciI+CiAgICAgICAgICAke20ubGVuZ3RoPT09MD93YDxkaXYgY2xhc3M9ImVtcHR5LXN0YXRlIj5ObyBhY3Rpdml0eSBlbnRyaWVzPC9kaXY+YDpmLm1hcCh5PT53YAogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkYXRlLXNlcGFyYXRvciI+JHt5LmxhYmVsfTwvZGl2PgogICAgICAgICAgICAgICAgICAke3kuZW50cmllcy5tYXAoTT0+dGhpcy5yZW5kZXJBY3Rpdml0eUVudHJ5KE0pKX0KICAgICAgICAgICAgICAgIGApfQogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlYXJjaGJveCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWFyY2gtd3JhcHBlciI+CiAgICAgICAgICAgIDxkZWVzLWljb24gY2xhc3M9InNlYXJjaC1pY29uIiAuaWNvbj0keyJsdWNpZGU6c2VhcmNoIn0+PC9kZWVzLWljb24+CiAgICAgICAgICAgIDxpbnB1dAogICAgICAgICAgICAgIHR5cGU9InRleHQiCiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9IlNlYXJjaCBhY3Rpdml0aWVzLCB1c2Vycy4uLiIKICAgICAgICAgICAgICAudmFsdWU9JHt0aGlzLnNlYXJjaFF1ZXJ5fQogICAgICAgICAgICAgIEBpbnB1dD0ke3RoaXMuaGFuZGxlU2VhcmNoSW5wdXR9CiAgICAgICAgICAgIC8+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfXJlbmRlckFjdGl2aXR5RW50cnkobSl7bGV0IGY9bS50aW1lc3RhbXB8fG5ldyBEYXRlLHk9dGhpcy5mb3JtYXRUaW1lKGYpLE09bS5pY29uTmFtZXx8dGhpcy5nZXRJY29uRm9yVHlwZShtLnR5cGUpO3JldHVybiB3YAogICAgICA8ZGl2CiAgICAgICAgY2xhc3M9ImFjdGl2aXR5ZW50cnkiCiAgICAgICAgQGNvbnRleHRtZW51PSR7ej0+dGhpcy5oYW5kbGVDb250ZXh0TWVudSh6LG0pfQogICAgICA+CiAgICAgICAgPGRpdiBjbGFzcz0iYWN0aXZpdHktaWNvbiAke20udHlwZX0iPgogICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0ke019PjwvZGVlcy1pY29uPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImFjdGl2aXR5LWNvbnRlbnQiPgogICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aXZpdHktaGVhZGVyIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFjdGl2aXR5LXVzZXIiPiR7bS51c2VyfTwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFjdGl2aXR5LXNlcGFyYXRvciI+wrc8L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0aW1lc3RhbXAiPiR7eX08L3NwYW4+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGl2aXR5LW1lc3NhZ2UiPiR7bS5tZXNzYWdlfTwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9YWRkKG0pe2xldCBmPXsuLi5tLGlkOm0uaWR8fHRoaXMuZ2VuZXJhdGVJZCgpLHRpbWVzdGFtcDptLnRpbWVzdGFtcHx8bmV3IERhdGV9O3RoaXMuZW50cmllcz1bZiwuLi50aGlzLmVudHJpZXNdLHRoaXMuZW50cmllcyQubmV4dCh0aGlzLmVudHJpZXMpfWFkZE1hbnkobSl7bGV0IGY9bS5tYXAoeT0+KHsuLi55LGlkOnkuaWR8fHRoaXMuZ2VuZXJhdGVJZCgpLHRpbWVzdGFtcDp5LnRpbWVzdGFtcHx8bmV3IERhdGV9KSk7dGhpcy5lbnRyaWVzPVsuLi5mLnJldmVyc2UoKSwuLi50aGlzLmVudHJpZXNdLHRoaXMuZW50cmllcyQubmV4dCh0aGlzLmVudHJpZXMpfWNsZWFyKCl7dGhpcy5lbnRyaWVzPVtdLHRoaXMuZW50cmllcyQubmV4dCh0aGlzLmVudHJpZXMpfWdldEVudHJpZXMoKXtyZXR1cm5bLi4udGhpcy5lbnRyaWVzXX1maWx0ZXIobSl7cmV0dXJuIHRoaXMuZW50cmllcy5maWx0ZXIoZj0+IShtLnVzZXImJmYudXNlciE9PW0udXNlcnx8bS50eXBlJiZmLnR5cGUhPT1tLnR5cGUpKX1zZWFyY2gobSl7bGV0IGY9bS50b0xvd2VyQ2FzZSgpO3JldHVybiB0aGlzLmVudHJpZXMuZmlsdGVyKHk9PnkubWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGYpfHx5LnVzZXIudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmKSl9Z2VuZXJhdGVJZCgpe3JldHVybmBhY3Rpdml0eS0ke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsOSl9YH1nZXRGaWx0ZXJlZEVudHJpZXMoKXtsZXQgbT10aGlzLmVudHJpZXM7aWYodGhpcy5zZWFyY2hRdWVyeSl7bGV0IGY9dGhpcy5zZWFyY2hRdWVyeS50b0xvd2VyQ2FzZSgpO209bS5maWx0ZXIoeT0+eS5tZXNzYWdlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZil8fHkudXNlci50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGYpKX1yZXR1cm4odGhpcy5maWx0ZXJDcml0ZXJpYS51c2VyfHx0aGlzLmZpbHRlckNyaXRlcmlhLnR5cGUpJiYobT1tLmZpbHRlcihmPT4hKHRoaXMuZmlsdGVyQ3JpdGVyaWEudXNlciYmZi51c2VyIT09dGhpcy5maWx0ZXJDcml0ZXJpYS51c2VyfHx0aGlzLmZpbHRlckNyaXRlcmlhLnR5cGUmJmYudHlwZSE9PXRoaXMuZmlsdGVyQ3JpdGVyaWEudHlwZSkpKSxtfWdyb3VwRW50cmllc0J5RGF0ZShtKXtsZXQgZj1uZXcgTWFwLHk9bmV3IERhdGUsTT1uZXcgRGF0ZSh5KTtNLnNldERhdGUoTS5nZXREYXRlKCktMSk7Zm9yKGxldCB6IG9mIG0pe2xldCBOPXoudGltZXN0YW1wfHxuZXcgRGF0ZSxDO3RoaXMuaXNTYW1lRGF5KE4seSk/Qz0iVG9kYXkiOnRoaXMuaXNTYW1lRGF5KE4sTSk/Qz0iWWVzdGVyZGF5IjpDPU4udG9Mb2NhbGVEYXRlU3RyaW5nKCJlbi1VUyIse21vbnRoOiJzaG9ydCIsZGF5OiJudW1lcmljIix5ZWFyOk4uZ2V0RnVsbFllYXIoKSE9PXkuZ2V0RnVsbFllYXIoKT8ibnVtZXJpYyI6dm9pZCAwfSksZi5oYXMoQyl8fGYuc2V0KEMsW10pLGYuZ2V0KEMpLnB1c2goeil9cmV0dXJuIEFycmF5LmZyb20oZi5lbnRyaWVzKCkpLm1hcCgoW3osTl0pPT4oe2xhYmVsOnosZW50cmllczpOfSkpfWlzU2FtZURheShtLGYpe3JldHVybiBtLmdldEZ1bGxZZWFyKCk9PT1mLmdldEZ1bGxZZWFyKCkmJm0uZ2V0TW9udGgoKT09PWYuZ2V0TW9udGgoKSYmbS5nZXREYXRlKCk9PT1mLmdldERhdGUoKX1mb3JtYXRUaW1lKG0pe3JldHVybiBtLnRvTG9jYWxlVGltZVN0cmluZygiZW4tVVMiLHtob3VyOiIyLWRpZ2l0IixtaW51dGU6IjItZGlnaXQiLGhvdXIxMjohMX0pfWdldEljb25Gb3JUeXBlKG0pe2xldCBmPXtsb2dpbjoibHVjaWRlOmxvZ0luIixsb2dvdXQ6Imx1Y2lkZTpsb2dPdXQiLHZpZXc6Imx1Y2lkZTpleWUiLGNyZWF0ZToibHVjaWRlOnBsdXMiLHVwZGF0ZToibHVjaWRlOmVkaXQiLGRlbGV0ZToibHVjaWRlOnRyYXNoMiIsY3VzdG9tOiJsdWNpZGU6YWN0aXZpdHkifTtyZXR1cm4gZlttXXx8Zi5jdXN0b219aGFuZGxlU2VhcmNoSW5wdXQobSl7bGV0IGY9bS50YXJnZXQ7dGhpcy5zZWFyY2hRdWVyeT1mLnZhbHVlfWhhbmRsZUNvbnRleHRNZW51KG0sZil7bS5wcmV2ZW50RGVmYXVsdCgpLGthLm9wZW5Db250ZXh0TWVudVdpdGhPcHRpb25zKG0sW3tuYW1lOiJDb3B5IGFjdGl2aXR5IixpY29uTmFtZToibHVjaWRlOmNvcHkiLGFjdGlvbjppKGFzeW5jKCk9Pnthd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChgJHtmLnVzZXJ9ICR7Zi5tZXNzYWdlfWApfSwiYWN0aW9uIil9LHtuYW1lOiJGaWx0ZXIgYnkgdXNlciIsaWNvbk5hbWU6Imx1Y2lkZTp1c2VyIixhY3Rpb246aShhc3luYygpPT57dGhpcy5maWx0ZXJDcml0ZXJpYT17dXNlcjpmLnVzZXJ9fSwiYWN0aW9uIil9LHtuYW1lOiJGaWx0ZXIgYnkgdHlwZSIsaWNvbk5hbWU6Imx1Y2lkZTpmaWx0ZXIiLGFjdGlvbjppKGFzeW5jKCk9Pnt0aGlzLmZpbHRlckNyaXRlcmlhPXt0eXBlOmYudHlwZX19LCJhY3Rpb24iKX0se25hbWU6IkNsZWFyIGZpbHRlcnMiLGljb25OYW1lOiJsdWNpZGU6eCIsYWN0aW9uOmkoYXN5bmMoKT0+e3RoaXMuZmlsdGVyQ3JpdGVyaWE9e30sdGhpcy5zZWFyY2hRdWVyeT0iIn0sImFjdGlvbiIpfV0pfXN0YXRpY3tUOChhLHQpfX07cmV0dXJuIHg9YX0pKCl9KTt2YXIgaWRhPWcoKCk9PntNZXQoKX0pO3ZhciByZGE9ZygoKT0+e30pO3ZhciBvZGE9ZygoKT0+e3BvKCl9KTt2YXIgbmRhPWcoKCk9Pnt9KTt2YXIgbGRhPWcoKCk9Pnt9KTt2YXIgY2RhPWcoKCk9Pnt9KTt2YXIgbWg9ZygoKT0+e3JkYSgpO29kYSgpO25kYSgpO2xkYSgpO2NkYSgpfSk7dmFyIGRkYSx1ZGE9ZygoKT0+e3BlKCk7SXQoKTt6ZXQoKTtkZGE9aSgoKT0+e2xldCBzPVt7bmFtZToiRmlsZSIsYWN0aW9uOmkoYXN5bmMoKT0+e30sImFjdGlvbiIpLHN1Ym1lbnU6W3tuYW1lOiJOZXcgRmlsZSIsc2hvcnRjdXQ6IkNtZCtOIixpY29uTmFtZToiZmlsZS1wbHVzIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiTmV3IGZpbGUiKSwiYWN0aW9uIil9LHtuYW1lOiJPcGVuLi4uIixzaG9ydGN1dDoiQ21kK08iLGljb25OYW1lOiJmb2xkZXItb3BlbiIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIk9wZW4iKSwiYWN0aW9uIil9LHtuYW1lOiJPcGVuIFJlY2VudCIsYWN0aW9uOmkoYXN5bmMoKT0+e30sImFjdGlvbiIpLHN1Ym1lbnU6W3tuYW1lOiJwcm9qZWN0LWFscGhhLnRzIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiT3BlbiByZWNlbnQgMSIpLCJhY3Rpb24iKX0se25hbWU6ImNvbmZpZy5qc29uIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiT3BlbiByZWNlbnQgMiIpLCJhY3Rpb24iKX0se25hbWU6InJlYWRtZS5tZCIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIk9wZW4gcmVjZW50IDMiKSwiYWN0aW9uIil9XX0se2RpdmlkZXI6ITB9LHtuYW1lOiJTYXZlIixzaG9ydGN1dDoiQ21kK1MiLGljb25OYW1lOiJzYXZlIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiU2F2ZSIpLCJhY3Rpb24iKX0se25hbWU6IlNhdmUgQXMuLi4iLHNob3J0Y3V0OiJDbWQrU2hpZnQrUyIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIlNhdmUgYXMiKSwiYWN0aW9uIiksZGlzYWJsZWQ6ITB9LHtkaXZpZGVyOiEwfSx7bmFtZToiRXhpdCIsc2hvcnRjdXQ6IkNtZCtRIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiRXhpdCIpLCJhY3Rpb24iKX1dfSx7bmFtZToiRWRpdCIsYWN0aW9uOmkoYXN5bmMoKT0+e30sImFjdGlvbiIpLHN1Ym1lbnU6W3tuYW1lOiJVbmRvIixzaG9ydGN1dDoiQ21kK1oiLGljb25OYW1lOiJ1bmRvIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiVW5kbyIpLCJhY3Rpb24iKX0se25hbWU6IlJlZG8iLHNob3J0Y3V0OiJDbWQrU2hpZnQrWiIsaWNvbk5hbWU6InJlZG8iLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJSZWRvIiksImFjdGlvbiIpfSx7ZGl2aWRlcjohMH0se25hbWU6IkN1dCIsc2hvcnRjdXQ6IkNtZCtYIixpY29uTmFtZToic2Npc3NvcnMiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJDdXQiKSwiYWN0aW9uIil9LHtuYW1lOiJDb3B5IixzaG9ydGN1dDoiQ21kK0MiLGljb25OYW1lOiJjb3B5IixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiQ29weSIpLCJhY3Rpb24iKX0se25hbWU6IlBhc3RlIixzaG9ydGN1dDoiQ21kK1YiLGljb25OYW1lOiJjbGlwYm9hcmQiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJQYXN0ZSIpLCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJGaW5kIixzaG9ydGN1dDoiQ21kK0YiLGljb25OYW1lOiJzZWFyY2giLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJGaW5kIiksImFjdGlvbiIpfSx7bmFtZToiUmVwbGFjZSIsc2hvcnRjdXQ6IkNtZCtIIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiUmVwbGFjZSIpLCJhY3Rpb24iKX1dfSx7bmFtZToiVmlldyIsYWN0aW9uOmkoYXN5bmMoKT0+e30sImFjdGlvbiIpLHN1Ym1lbnU6W3tuYW1lOiJUb2dnbGUgRnVsbHNjcmVlbiIsc2hvcnRjdXQ6IkYxMSIsaWNvbk5hbWU6ImV4cGFuZCIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIkZ1bGxzY3JlZW4iKSwiYWN0aW9uIil9LHtuYW1lOiJab29tIEluIixzaG9ydGN1dDoiQ21kKysiLGljb25OYW1lOiJ6b29tLWluIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiWm9vbSBpbiIpLCJhY3Rpb24iKX0se25hbWU6Ilpvb20gT3V0IixzaG9ydGN1dDoiQ21kKy0iLGljb25OYW1lOiJ6b29tLW91dCIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIlpvb20gb3V0IiksImFjdGlvbiIpfSx7bmFtZToiUmVzZXQgWm9vbSIsc2hvcnRjdXQ6IkNtZCswIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiUmVzZXQgem9vbSIpLCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJUb2dnbGUgU2lkZWJhciIsc2hvcnRjdXQ6IkNtZCtCIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiVG9nZ2xlIHNpZGViYXIiKSwiYWN0aW9uIil9LHtuYW1lOiJUb2dnbGUgVGVybWluYWwiLHNob3J0Y3V0OiJDbWQrSiIsaWNvbk5hbWU6InRlcm1pbmFsIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiVG9nZ2xlIHRlcm1pbmFsIiksImFjdGlvbiIpfV19LHtuYW1lOiJIZWxwIixhY3Rpb246aShhc3luYygpPT57fSwiYWN0aW9uIiksc3VibWVudTpbe25hbWU6IkRvY3VtZW50YXRpb24iLGljb25OYW1lOiJib29rIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiRG9jdW1lbnRhdGlvbiIpLCJhY3Rpb24iKX0se25hbWU6IlJlbGVhc2UgTm90ZXMiLGljb25OYW1lOiJmaWxlLXRleHQiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJSZWxlYXNlIG5vdGVzIiksImFjdGlvbiIpfSx7ZGl2aWRlcjohMH0se25hbWU6IlJlcG9ydCBJc3N1ZSIsaWNvbk5hbWU6ImJ1ZyIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIlJlcG9ydCBpc3N1ZSIpLCJhY3Rpb24iKX0se25hbWU6IkFib3V0IixpY29uTmFtZToiaW5mbyIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIkFib3V0IiksImFjdGlvbiIpfV19XTtyZXR1cm4gd2AKICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIGU9PntsZXQgdD1lLnF1ZXJ5U2VsZWN0b3IoIiNhcHBiYXIiKSxhPWUucXVlcnlTZWxlY3RvckFsbCgiLnN0YXR1cy10b2dnbGUgZGVlcy1idXR0b24iKTthWzBdLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e3QudXNlcj17Li4udC51c2VyLHN0YXR1czoib25saW5lIn19KSxhWzFdLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e3QudXNlcj17Li4udC51c2VyLHN0YXR1czoiYnVzeSJ9fSksYVsyXS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9Pnt0LnVzZXI9ey4uLnQudXNlcixzdGF0dXM6ImF3YXkifX0pLGFbM10uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57dC51c2VyPXsuLi50LnVzZXIsc3RhdHVzOiJvZmZsaW5lIn19KSxlLnF1ZXJ5U2VsZWN0b3IoIi53aW5kb3ctY29udHJvbHMtdG9nZ2xlIGRlZXMtYnV0dG9uIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57dC5zaG93V2luZG93Q29udHJvbHM9IXQuc2hvd1dpbmRvd0NvbnRyb2xzfSk7bGV0IG49ZS5xdWVyeVNlbGVjdG9yQWxsKCIuYnJlYWRjcnVtYi10b2dnbGUgZGVlcy1idXR0b24iKTtuWzBdLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e3QuYnJlYWRjcnVtYnM9IkhvbWUgPiBEb2N1bWVudHMgPiBQcm9qZWN0cyA+IE15QXBwID4gc3JjID4gaW5kZXgudHMifSksblsxXS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9Pnt0LmJyZWFkY3J1bWJzPSJEYXNoYm9hcmQifSl9fT4KICAgICAgPHN0eWxlPgogICAgICAgICR7SmAKICAgICAgICAuZGVtby1jb250YWluZXIgewogICAgICAgICAgaGVpZ2h0OiA2MDBweDsKICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgYmFja2dyb3VuZDogIzFhMWExYTsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuY29udGVudCB7CiAgICAgICAgICBmbGV4OiAxOwogICAgICAgICAgcGFkZGluZzogMjBweDsKICAgICAgICAgIGNvbG9yOiAjY2NjOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuY29udHJvbHMgewogICAgICAgICAgcGFkZGluZzogMjBweDsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBnYXA6IDE2cHg7CiAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5jb250cm9sLWdyb3VwIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5jb250cm9sLWdyb3VwIGxhYmVsIHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICAgIGNvbG9yOiAjODg4OwogICAgICAgIH0KICAgICAgYH0KICAgIDwvc3R5bGU+CiAgICAKICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgICAgPGRlZXMtYXBwdWktYXBwYmFyCiAgICAgICAgaWQ9ImFwcGJhciIKICAgICAgICAubWVudUl0ZW1zPSR7c30KICAgICAgICAuYnJlYWRjcnVtYnM9JHsiUHJvamVjdCA+IHNyYyA+IGNvbXBvbmVudHMgPiBBcHBCYXIudHMifQogICAgICAgIC5icmVhZGNydW1iU2VwYXJhdG9yPSR7IiA+ICJ9CiAgICAgICAgLnNob3dXaW5kb3dDb250cm9scz0keyEwfQogICAgICAgIC5zaG93U2VhcmNoPSR7ITB9CiAgICAgICAgLnRoZW1lPSR7ImRhcmsifQogICAgICAgIC51c2VyPSR7e25hbWU6IkpvaG4gRG9lIixzdGF0dXM6Im9ubGluZSJ9fQogICAgICAgIEBtZW51LXNlbGVjdD0ke2U9PmNvbnNvbGUubG9nKCJNZW51IHNlbGVjdGVkOiIsZS5kZXRhaWwuaXRlbSl9CiAgICAgICAgQGJyZWFkY3J1bWItbmF2aWdhdGU9JHtlPT5jb25zb2xlLmxvZygiQnJlYWRjcnVtYiBjbGlja2VkOiIsZS5kZXRhaWwpfQogICAgICAgIEBzZWFyY2gtY2xpY2s9JHsoKT0+Y29uc29sZS5sb2coIlNlYXJjaCBjbGlja2VkIil9CiAgICAgICAgQHVzZXItbWVudS1vcGVuPSR7KCk9PmNvbnNvbGUubG9nKCJVc2VyIG1lbnUgY2xpY2tlZCIpfQogICAgICA+PC9kZWVzLWFwcHVpLWFwcGJhcj4KICAgICAgCiAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgogICAgICAgIDxoMj5BcHAgQmFyIERlbW88L2gyPgogICAgICAgIDxwPlRoaXMgZGVtbyBzaG93cyB2YXJpb3VzIGZlYXR1cmVzIG9mIHRoZSBhcHAgYmFyIGNvbXBvbmVudDo8L3A+CiAgICAgICAgPHVsPgogICAgICAgICAgPGxpPkR5bmFtaWMgbWVudSBpdGVtcyB3aXRoIGljb25zLCBzaG9ydGN1dHMsIGFuZCBzdWJtZW51czwvbGk+CiAgICAgICAgICA8bGk+QnJlYWRjcnVtYiBuYXZpZ2F0aW9uPC9saT4KICAgICAgICAgIDxsaT5Vc2VyIGFjY291bnQgc2VjdGlvbiB3aXRoIHN0YXR1cyBpbmRpY2F0b3I8L2xpPgogICAgICAgICAgPGxpPlNlYXJjaCBpY29uPC9saT4KICAgICAgICAgIDxsaT5XaW5kb3cgY29udHJvbHMgKHBsYXRmb3JtLXNwZWNpZmljKTwvbGk+CiAgICAgICAgICA8bGk+RGFyay9saWdodCB0aGVtZSBzdXBwb3J0PC9saT4KICAgICAgICAgIDxsaT5LZXlib2FyZCBuYXZpZ2F0aW9uIChUYWIsIEVudGVyLCBFc2NhcGUpPC9saT4KICAgICAgICAgIDxsaT5DdXN0b20gZXZlbnRzIGZvciBhbGwgaW50ZXJhY3Rpb25zPC9saT4KICAgICAgICA8L3VsPgogICAgICA8L2Rpdj4KICAgICAgCiAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2xzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9sLWdyb3VwIj4KICAgICAgICAgIDxsYWJlbD5UaGVtZTwvbGFiZWw+CiAgICAgICAgICA8ZGVlcy1idXR0b24tZ3JvdXAgY2xhc3M9InRoZW1lLXRvZ2dsZSI+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbj5EYXJrPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uPkxpZ2h0PC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDwvZGVlcy1idXR0b24tZ3JvdXA+CiAgICAgICAgPC9kaXY+CiAgICAgICAgCiAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbC1ncm91cCI+CiAgICAgICAgICA8bGFiZWw+VXNlciBTdGF0dXM8L2xhYmVsPgogICAgICAgICAgPGRlZXMtYnV0dG9uLWdyb3VwIGNsYXNzPSJzdGF0dXMtdG9nZ2xlIj4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uPk9ubGluZTwvZGVlcy1idXR0b24+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbj5CdXN5PC9kZWVzLWJ1dHRvbj4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uPkF3YXk8L2RlZXMtYnV0dG9uPgogICAgICAgICAgICA8ZGVlcy1idXR0b24+T2ZmbGluZTwvZGVlcy1idXR0b24+CiAgICAgICAgICA8L2RlZXMtYnV0dG9uLWdyb3VwPgogICAgICAgIDwvZGl2PgogICAgICAgIAogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtZ3JvdXAiPgogICAgICAgICAgPGxhYmVsPldpbmRvdyBDb250cm9sczwvbGFiZWw+CiAgICAgICAgICA8ZGVlcy1idXR0b24tZ3JvdXAgY2xhc3M9IndpbmRvdy1jb250cm9scy10b2dnbGUiPgogICAgICAgICAgICA8ZGVlcy1idXR0b24+VG9nZ2xlPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDwvZGVlcy1idXR0b24tZ3JvdXA+CiAgICAgICAgPC9kaXY+CiAgICAgICAgCiAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbC1ncm91cCI+CiAgICAgICAgICA8bGFiZWw+QnJlYWRjcnVtYnM8L2xhYmVsPgogICAgICAgICAgPGRlZXMtYnV0dG9uLWdyb3VwIGNsYXNzPSJicmVhZGNydW1iLXRvZ2dsZSI+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbj5Mb25nIFBhdGg8L2RlZXMtYnV0dG9uPgogICAgICAgICAgICA8ZGVlcy1idXR0b24+U2hvcnQgUGF0aDwvZGVlcy1idXR0b24+CiAgICAgICAgICA8L2RlZXMtYnV0dG9uLWdyb3VwPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgogIGB9LCJkZW1vRnVuYyIpfSk7dmFyIHBkYSxoZGE9ZygoKT0+e3BlKCk7cGRhPVtoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIC8qIENTUyBWYXJpYWJsZXMgZm9yIHRoZW1pbmcgKi8KICAgICAgICAtLWFwcGJhci1oZWlnaHQ6IDQwcHg7CiAgICAgICAgLS1hcHBiYXItZm9udC1zaXplOiAxMnB4OwogICAgICAgIAogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IHZhcigtLWFwcGJhci1oZWlnaHQpOwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXByaW1hcnkpOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzAwMDAwMDgwIiwiI2ZmZmZmZjgwIil9OwogICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tYXBwYmFyLWZvbnQtc2l6ZSk7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gMWZyIGF1dG87CiAgICAgICAgLXdlYmtpdC1hcHAtcmVnaW9uOiBkcmFnOwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICB9CgogICAgICAubWVudXMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDRweDsKICAgICAgICBwYWRkaW5nOiAwIDhweDsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgIH0KCiAgICAgIC5tZW51SXRlbSB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4OwogICAgICAgIHBhZGRpbmc6IDBweCAxMnB4OwogICAgICAgIG1hcmdpbjogOHB4IDBweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgLXdlYmtpdC1hcHAtcmVnaW9uOiBuby1kcmFnOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNHB4OwogICAgICB9CgogICAgICAvKiBPcHRpb25hbDogU3R5bGUgZm9yIG1lbnUgaXRlbXMgd2l0aCBpY29ucyAobm90IHR5cGljYWxseSB1c2VkIGZvciB0b3AtbGV2ZWwgaXRlbXMpICovCiAgICAgIC5tZW51SXRlbSBkZWVzLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBvcGFjaXR5OiAwLjg7CiAgICAgIH0KCiAgICAgIC5tZW51SXRlbTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiMwMDAwMDAxMCIsIiNmZmZmZmYyMCIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwMDAwMDAiLCIjZmZmZmZmIil9OwogICAgICB9CgogICAgICAubWVudUl0ZW0uYWN0aXZlIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiIzAwMDAwMDIwIiwiI2ZmZmZmZjMwIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzAwMDAwMCIsIiNmZmZmZmYiKX07CiAgICAgIH0KCiAgICAgIC5tZW51SXRlbVtkaXNhYmxlZF0gewogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICAubWVudUl0ZW06Zm9jdXMtdmlzaWJsZSB7CiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4ICR7aC5iZFRoZW1lKCIjMDAwMDAwODAiLCIjZmZmZmZmODAiKX07CiAgICAgIH0KCgogICAgICAvKiBEcm9wZG93biBzdHlsZXMgKi8KICAgICAgLmRyb3Bkb3duIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAxMDAlOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgbWluLXdpZHRoOiAyMDBweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXByaW1hcnkpOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBib3gtc2hhZG93OiAke2guYmRUaGVtZSgiMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpIiwiMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMykiKX07CiAgICAgICAgbWFyZ2luLXRvcDogNHB4OwogICAgICAgIHotaW5kZXg6IDEwMDA7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpOwogICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycywgdHJhbnNmb3JtIDAuMnM7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5kcm9wZG93bi5vcGVuIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0bzsKICAgICAgfQoKICAgICAgLmRyb3Bkb3duLWl0ZW0gewogICAgICAgIHBhZGRpbmc6IDhweCAxNnB4OwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjFzOwogICAgICB9CgogICAgICAuZHJvcGRvd24taXRlbTpob3ZlciwKICAgICAgLmRyb3Bkb3duLWl0ZW0uZm9jdXNlZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiMwMDAwMDAxMCIsIiNmZmZmZmYyMCIpfTsKICAgICAgfQoKICAgICAgLmRyb3Bkb3duLWRpdmlkZXIgewogICAgICAgIGhlaWdodDogMXB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIG1hcmdpbjogNHB4IDA7CiAgICAgIH0KCiAgICAgIC5kcm9wZG93bi1pdGVtW2Rpc2FibGVkXSB7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5kcm9wZG93bi1pdGVtIC5zaG9ydGN1dCB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgICAgb3BhY2l0eTogMC42OwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgfQoKICAgICAgLyogQnJlYWRjcnVtYnMgKi8KICAgICAgLmJyZWFkY3J1bWJzIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgIH0KCiAgICAgIC5icmVhZGNydW1iLWl0ZW0gewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzAwMDAwMDgwIiwiI2ZmZmZmZjgwIil9OwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzOwogICAgICB9CgogICAgICAuYnJlYWRjcnVtYi1pdGVtOmhvdmVyIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwMDAwMDAiLCIjZmZmZmZmIil9OwogICAgICB9CgogICAgICAuYnJlYWRjcnVtYi1zZXBhcmF0b3IgewogICAgICAgIG1hcmdpbjogMCA4cHg7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICB9CgogICAgICAvKiBBY2NvdW50IHNlY3Rpb24gKi8KICAgICAgLmFjY291bnQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgICBnYXA6IDEycHg7CiAgICAgIH0KCiAgICAgIC5zZWFyY2gtaWNvbiB7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICAgIG9wYWNpdHk6IDAuNzsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnM7CiAgICAgIH0KCiAgICAgIC5zZWFyY2gtaWNvbjpob3ZlciB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgLnVzZXItaW5mbyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgICBwYWRkaW5nOiA0cHggOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMnM7CiAgICAgIH0KCiAgICAgIC51c2VyLWluZm86aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjMDAwMDAwMTAiLCIjZmZmZmZmMjAiKX07CiAgICAgIH0KCiAgICAgIC51c2VyLWF2YXRhciB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHdpZHRoOiAyNHB4OwogICAgICAgIGhlaWdodDogMjRweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiMwMDAwMDAyMCIsIiNmZmZmZmYzMCIpfTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICB9CgogICAgICAudXNlci1hdmF0YXIgaW1nIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIG9iamVjdC1maXQ6IGNvdmVyOwogICAgICB9CgogICAgICAudXNlci1zdGF0dXMgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBib3R0b206IC0ycHg7CiAgICAgICAgcmlnaHQ6IC0ycHg7CiAgICAgICAgd2lkdGg6IDhweDsKICAgICAgICBoZWlnaHQ6IDhweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1iZy1wcmltYXJ5KTsKICAgICAgfQoKICAgICAgLnVzZXItc3RhdHVzLm9ubGluZSB7CiAgICAgICAgYmFja2dyb3VuZDogIzRjYWY1MDsKICAgICAgfQoKICAgICAgLnVzZXItc3RhdHVzLm9mZmxpbmUgewogICAgICAgIGJhY2tncm91bmQ6ICM3NTc1NzU7CiAgICAgIH0KCiAgICAgIC51c2VyLXN0YXR1cy5idXN5IHsKICAgICAgICBiYWNrZ3JvdW5kOiAjZjQ0MzM2OwogICAgICB9CgogICAgICAudXNlci1zdGF0dXMuYXdheSB7CiAgICAgICAgYmFja2dyb3VuZDogI2ZmOTgwMDsKICAgICAgfQoKICAgICAgLyogQWN0aXZpdHkgbG9nIHRvZ2dsZSBidXR0b24gKi8KICAgICAgLmFjdGl2aXR5LXRvZ2dsZSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMnB4OwogICAgICAgIGhlaWdodDogMjhweDsKICAgICAgICBwYWRkaW5nOiAwIDhweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICAgIC13ZWJraXQtYXBwLXJlZ2lvbjogbm8tZHJhZzsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwMDAwMDA2MCIsIiNmZmZmZmY2MCIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjEpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpIil9OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICB9CgogICAgICAuYWN0aXZpdHktdG9nZ2xlOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiIzAwMDAwMDEwIiwiI2ZmZmZmZjE1Iil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzAwMDAwMCIsIiNmZmZmZmYiKX07CiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgfQoKICAgICAgLmFjdGl2aXR5LXRvZ2dsZS5hY3RpdmUgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjMDAwMDAwMTUiLCIjZmZmZmZmMjAiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDAwMDAwIiwiI2ZmZmZmZiIpfTsKICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwogICAgICB9CgogICAgICAuYWN0aXZpdHktdG9nZ2xlIGRlZXMtaWNvbiB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICB9CgogICAgICAuYWN0aXZpdHktYmFkZ2UgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBtYXJnaW4tbGVmdDogNHB4OwogICAgICAgIG1pbi13aWR0aDogMTZweDsKICAgICAgICBoZWlnaHQ6IDE2cHg7CiAgICAgICAgcGFkZGluZzogMCA0cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiM1MjUyNTIiLCIjNTI1MjUyIil9OwogICAgICAgIGNvbG9yOiAjZmFmYWZhOwogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE7CiAgICAgIH0KICAgIGBdfSk7dmFyIGZkYSxtZGE9ZygoKT0+e3BlKCk7ZmRhPWkocz0+d2AKICAgICAgICA8ZGl2IGNsYXNzPSJtZW51cyI+CiAgICAgICAgICAke3Muc2hvd1dpbmRvd0NvbnRyb2xzP3dgPGRlZXMtd2luZG93Y29udHJvbHM+PC9kZWVzLXdpbmRvd2NvbnRyb2xzPmA6IiJ9CiAgICAgICAgICAke3MucmVuZGVyTWVudUl0ZW1zKCl9CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYnJlYWRjcnVtYnMiPgogICAgICAgICAgJHtzLnJlbmRlckJyZWFkY3J1bWJzKCl9CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3VudCI+CiAgICAgICAgICAke3MucmVuZGVyQWNjb3VudFNlY3Rpb24oKX0KICAgICAgICA8L2Rpdj4KICAgICAgYCwicmVuZGVyQXBwdWlBcHBiYXIiKX0pO3ZhciBDZXQsX1osZ2RhLFRldD1nKCgpPT57cGUoKTtwdCgpO0NldD1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sX1o9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LGdkYT0oKCk9PntsZXQgcz1bbmUoImRlZXMtd2luZG93Y29udHJvbHMiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXTt2YXIgYz1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1dpbmRvd0NvbnRyb2xzIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGI9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7cmVmbGVjdDohMH0pXSxwPVtMKHtyZWZsZWN0OiEwfSldLENldCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InR5cGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkodj0+InR5cGUiaW4gdiwiaGFzIiksZ2V0Omkodj0+di50eXBlLCJnZXQiKSxzZXQ6aSgodix4KT0+e3YudHlwZT14fSwic2V0Iil9LG1ldGFkYXRhOmJ9LG8sbCksQ2V0KHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicG9zaXRpb24iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkodj0+InBvc2l0aW9uImluIHYsImhhcyIpLGdldDppKHY9PnYucG9zaXRpb24sImdldCIpLHNldDppKCh2LHgpPT57di5wb3NpdGlvbj14fSwic2V0Iil9LG1ldGFkYXRhOmJ9LGQsdSksQ2V0KG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOmJ9LG51bGwsdCksYz1hPWUudmFsdWUsYiYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSl9c3RhdGljIGRlbW89aSgoKT0+d2A8ZGVlcy13aW5kb3djb250cm9scz48L2RlZXMtd2luZG93Y29udHJvbHM+YCwiZGVtbyIpO3N0YXRpYyBkZW1vR3JvdXBzPVsiVXRpbGl0eSJdOyNlPV9aKHRoaXMsbywibWFjIik7Z2V0IHR5cGUoKXtyZXR1cm4gdGhpcy4jZX1zZXQgdHlwZShiKXt0aGlzLiNlPWJ9I3Q9KF9aKHRoaXMsbCksX1oodGhpcyxkLCJsZWZ0IikpO2dldCBwb3NpdGlvbigpe3JldHVybiB0aGlzLiN0fXNldCBwb3NpdGlvbihiKXt0aGlzLiN0PWJ9c3RhdGljIHN0eWxlcz1bSGUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICAgIDpob3N0IHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDE2cHg7CiAgICAgICAgcGFkZGluZy1yaWdodDogMTZweDsKICAgICAgfQoKICAgICAgLndpbmRvd0NvbnRyb2xzIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgfQoKICAgICAgLndpbmRvd0NvbnRyb2xzIGRpdiB7CiAgICAgICAgd2lkdGg6IDEycHg7CiAgICAgICAgaGVpZ2h0OiAxMnB4OwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgbWFyZ2luOiAwcHg7CiAgICAgICAgcGFkZGluZzogMHB4OwogICAgICAgIGJhY2tncm91bmQ6ICMyMjIyMjI7CiAgICAgIH0KCiAgICAgIC53aW5kb3dDb250cm9scyBkaXYuY2xvc2UgewogICAgICAgIGJhY2tncm91bmQ6ICNmZjVmNTc7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMnB4OwogICAgICB9CgogICAgICAud2luZG93Q29udHJvbHMgZGl2LnRvRG9jayB7CiAgICAgICAgYmFja2dyb3VuZDogI2ZmYmQyZTsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDEycHg7CiAgICAgIH0KCiAgICAgIC53aW5kb3dDb250cm9scyBkaXYubWluTWF4IHsKICAgICAgICBiYWNrZ3JvdW5kOiAjMjdjOTNmOwogICAgICB9CgogICAgICAud2luZG93Q29udHJvbHMgZGl2OmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAjMzMzMzMzOwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgJHt0aGlzLnR5cGU9PT0ibWFjIiYmdGhpcy5wb3NpdGlvbj09PSJsZWZ0Inx8KHRoaXMudHlwZT09PSJsaW51eCJ8fHRoaXMudHlwZT09PSJ3aW5kb3dzIikmJnRoaXMucG9zaXRpb249PT0icmlnaHQiP3dgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IndpbmRvd0NvbnRyb2xzIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjbG9zZSI+PC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9Eb2NrIj48L2Rpdj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtaW5NYXgiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIGA6d2BgfQogICAgYH1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksX1oodGhpcyx1KX1zdGF0aWN7X1ooYSx0KX19O3JldHVybiBjPWF9KSgpfSk7dmFyIE1aLFEwLGJkYSwkZXQ9ZygoKT0+e3BvKCk7em4oKTtwZSgpO3B0KCk7TVo9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LFEwPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxiZGE9KCgpPT57bGV0IHM9W25lKCJkZWVzLWFwcHVpLXByb2ZpbGVkcm9wZG93biIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdO3ZhciB5PWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzQXBwdWlQcm9maWxlRHJvcGRvd24iKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgTT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOk9iamVjdH0pXSxwPVtMKHt0eXBlOkFycmF5fSldLGM9W0woe3R5cGU6Qm9vbGVhbixyZWZsZWN0OiEwfSldLHg9W0woe3R5cGU6U3RyaW5nfSldLE1aKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidXNlciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4idXNlciJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LnVzZXIsImdldCIpLHNldDppKCh6LE4pPT57ei51c2VyPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sbyxsKSxNWih0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1lbnVJdGVtcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4ibWVudUl0ZW1zImluIHosImhhcyIpLGdldDppKHo9PnoubWVudUl0ZW1zLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3oubWVudUl0ZW1zPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sZCx1KSxNWih0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImlzT3BlbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4iaXNPcGVuImluIHosImhhcyIpLGdldDppKHo9PnouaXNPcGVuLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3ouaXNPcGVuPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sYix2KSxNWih0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InBvc2l0aW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJwb3NpdGlvbiJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LnBvc2l0aW9uLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3oucG9zaXRpb249Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxtLGYpLE1aKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOk19LG51bGwsdCkseT1hPWUudmFsdWUsTSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpNfSl9c3RhdGljIGRlbW89aSgoKT0+d2AKICAgIDxkZWVzLWFwcHVpLXByb2ZpbGVkcm9wZG93bgogICAgICAudXNlcj0ke3tuYW1lOiJKb2huIERvZSIsZW1haWw6ImpvaG4uZG9lQGV4YW1wbGUuY29tIixhdmF0YXI6Imh0dHBzOi8vcmFuZG9tdXNlci5tZS9hcGkvcG9ydHJhaXRzL21lbi8xLmpwZyIsc3RhdHVzOiJvbmxpbmUifX0KICAgICAgLm1lbnVJdGVtcz0ke1t7bmFtZToiUHJvZmlsZSBTZXR0aW5ncyIsaWNvbk5hbWU6InVzZXIiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJQcm9maWxlIiksImFjdGlvbiIpfSx7bmFtZToiQWNjb3VudCIsaWNvbk5hbWU6InNldHRpbmdzIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiQWNjb3VudCIpLCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJIZWxwICYgU3VwcG9ydCIsaWNvbk5hbWU6ImhlbHBDaXJjbGUiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJIZWxwIiksImFjdGlvbiIpfSx7bmFtZToiS2V5Ym9hcmQgU2hvcnRjdXRzIixpY29uTmFtZToia2V5Ym9hcmQiLHNob3J0Y3V0OiJDbWQrSyIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIlNob3J0Y3V0cyIpLCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJTaWduIE91dCIsaWNvbk5hbWU6ImxvZ091dCIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIlNpZ24gb3V0IiksImFjdGlvbiIpfV19CiAgICAgIC5pc09wZW49JHshMH0KICAgID48L2RlZXMtYXBwdWktcHJvZmlsZWRyb3Bkb3duPgogIGAsImRlbW8iKTtzdGF0aWMgZGVtb0dyb3Vwcz1bIkFwcCBVSSJdOyNlPVEwKHRoaXMsbyx2b2lkIDApO2dldCB1c2VyKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHVzZXIoTSl7dGhpcy4jZT1NfSN0PShRMCh0aGlzLGwpLFEwKHRoaXMsZCxbXSkpO2dldCBtZW51SXRlbXMoKXtyZXR1cm4gdGhpcy4jdH1zZXQgbWVudUl0ZW1zKE0pe3RoaXMuI3Q9TX0jYT0oUTAodGhpcyx1KSxRMCh0aGlzLGIsITEpKTtnZXQgaXNPcGVuKCl7cmV0dXJuIHRoaXMuI2F9c2V0IGlzT3BlbihNKXt0aGlzLiNhPU19I3M9KFEwKHRoaXMsdiksUTAodGhpcyxtLCJ0b3AtcmlnaHQiKSk7Z2V0IHBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuI3N9c2V0IHBvc2l0aW9uKE0pe3RoaXMuI3M9TX1zdGF0aWMgc3R5bGVzPVtIZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgLyogVE9ETzogTWlncmF0ZSBoYXJkY29kZWQgdmFsdWVzIHRvIC0tZGVlcy0qIENTUyB2YXJpYWJsZXMgKi8KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDEwMCU7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgLmRyb3Bkb3duIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgbWluLXdpZHRoOiAyMjBweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMwMDAwMDAiKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlMGUwZTAiLCIjMjAyMDIwIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBib3gtc2hhZG93OiAke2guYmRUaGVtZSgiMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpIiwiMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMykiKX07CiAgICAgICAgei1pbmRleDogJHtXci5vdmVybGF5LmRyb3Bkb3dufTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45NSkgdHJhbnNsYXRlWSgtMTBweCk7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzLCB0cmFuc2Zvcm0gMC4yczsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgfQoKICAgICAgOmhvc3QoW2lzb3Blbl0pIC5kcm9wZG93biB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpIHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87CiAgICAgIH0KICAgICAgCiAgICAgIC5iYWNrZHJvcCB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgLyogUG9zaXRpb24gdmFyaWFudHMgKi8KICAgICAgLmRyb3Bkb3duLnRvcC1yaWdodCB7CiAgICAgICAgdG9wOiAxMDAlOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIG1hcmdpbi10b3A6IDRweDsKICAgICAgfQoKICAgICAgLmRyb3Bkb3duLnRvcC1sZWZ0IHsKICAgICAgICB0b3A6IDEwMCU7CiAgICAgICAgbGVmdDogMDsKICAgICAgICBtYXJnaW4tdG9wOiA4cHg7CiAgICAgIH0KCiAgICAgIC5kcm9wZG93bi5ib3R0b20tcmlnaHQgewogICAgICAgIGJvdHRvbTogMTAwJTsKICAgICAgICByaWdodDogMDsKICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgIH0KCiAgICAgIC5kcm9wZG93bi5ib3R0b20tbGVmdCB7CiAgICAgICAgYm90dG9tOiAxMDAlOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICB9CgogICAgICAvKiBVc2VyIHNlY3Rpb24gKi8KICAgICAgLnVzZXItc2VjdGlvbiB7CiAgICAgICAgcGFkZGluZzogMTJweDsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlMGUwZTAiLCIjMjAyMDIwIil9OwogICAgICB9CgogICAgICAudXNlci1pbmZvIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAxMHB4OwogICAgICB9CgogICAgICAudXNlci1hdmF0YXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogMzZweDsKICAgICAgICBoZWlnaHQ6IDM2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjBmMGYwIiwiIzFhMWExYSIpfTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNjY2IiwiIzk5OSIpfTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAudXNlci1hdmF0YXIgaW1nIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7CiAgICAgIH0KCiAgICAgIC51c2VyLXN0YXR1cyB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICB3aWR0aDogMTBweDsKICAgICAgICBoZWlnaHQ6IDEwcHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzAwMDAwMCIpfTsKICAgICAgfQoKICAgICAgLnVzZXItc3RhdHVzLm9ubGluZSB7CiAgICAgICAgYmFja2dyb3VuZDogIzRjYWY1MDsKICAgICAgfQoKICAgICAgLnVzZXItc3RhdHVzLm9mZmxpbmUgewogICAgICAgIGJhY2tncm91bmQ6ICM3NTc1NzU7CiAgICAgIH0KCiAgICAgIC51c2VyLXN0YXR1cy5idXN5IHsKICAgICAgICBiYWNrZ3JvdW5kOiAjZjQ0MzM2OwogICAgICB9CgogICAgICAudXNlci1zdGF0dXMuYXdheSB7CiAgICAgICAgYmFja2dyb3VuZDogI2ZmOTgwMDsKICAgICAgfQoKICAgICAgLnVzZXItZGV0YWlscyB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBtaW4td2lkdGg6IDA7CiAgICAgIH0KCiAgICAgIC51c2VyLW5hbWUgewogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzAwMCIsIiNmZmYiKX07CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICB9CgogICAgICAudXNlci1lbWFpbCB7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzY2NiIsIiM5OTkiKX07CiAgICAgICAgbWFyZ2luLXRvcDogMnB4OwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgfQoKICAgICAgLyogTWVudSBzZWN0aW9uICovCiAgICAgIC5tZW51LXNlY3Rpb24gewogICAgICAgIHBhZGRpbmc6IDRweCAwOwogICAgICB9CgogICAgICAubWVudS1pdGVtIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xczsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzMzMiLCIjY2NjIil9OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBsaW5lLWhlaWdodDogMTsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgfQoKICAgICAgLm1lbnUtaXRlbTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wNCkiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpIil9OwogICAgICB9CgogICAgICAubWVudS1pdGVtOmFjdGl2ZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wOCkiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpIil9OwogICAgICB9CgogICAgICAubWVudS1pdGVtIGRlZXMtaWNvbiB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIG9wYWNpdHk6IDAuNzsKICAgICAgfQoKICAgICAgLm1lbnUtaXRlbS10ZXh0IHsKICAgICAgICBmbGV4OiAxOwogICAgICB9CgogICAgICAubWVudS1zaG9ydGN1dCB7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzk5OSIsIiM2NjYiKX07CiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgICAgb3BhY2l0eTogMC43OwogICAgICB9CgogICAgICAubWVudS1kaXZpZGVyIHsKICAgICAgICBoZWlnaHQ6IDFweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2UwZTBlMCIsIiMyMDIwMjAiKX07CiAgICAgICAgbWFyZ2luOiA0cHggMDsKICAgICAgfQoKICAgICAgLyogQmFja2Ryb3AgZm9yIG1vYmlsZSAqLwogICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsKICAgICAgICAuYmFja2Ryb3AgewogICAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgICAgdG9wOiAwOwogICAgICAgICAgbGVmdDogMDsKICAgICAgICAgIHJpZ2h0OiAwOwogICAgICAgICAgYm90dG9tOiAwOwogICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjMpOwogICAgICAgICAgei1pbmRleDogJHtXci5iYWNrZHJvcC5kcm9wZG93bn07CiAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzOwogICAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICB9CgogICAgICAgIDpob3N0KFtpc29wZW5dKSAuYmFja2Ryb3AgewogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87CiAgICAgICAgfQoKICAgICAgICAuZHJvcGRvd24gewogICAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgICAgdG9wOiA1MCU7CiAgICAgICAgICBsZWZ0OiA1MCU7CiAgICAgICAgICByaWdodDogYXV0bzsKICAgICAgICAgIGJvdHRvbTogYXV0bzsKICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpIHNjYWxlKDAuOTUpOwogICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMHZ3IC0gMzJweCk7CiAgICAgICAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMzJweCk7CiAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbjsKICAgICAgICB9CgogICAgICAgIDpob3N0KFtpc29wZW5dKSAuZHJvcGRvd24gewogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgc2NhbGUoMSk7CiAgICAgICAgfQogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iYmFja2Ryb3AiIEBjbGljaz0keygpPT50aGlzLmNsb3NlKCl9PjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJkcm9wZG93biAke3RoaXMucG9zaXRpb259Ij4KICAgICAgICAke3RoaXMudXNlcj93YAogICAgICAgICAgPGRpdiBjbGFzcz0idXNlci1zZWN0aW9uIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idXNlci1pbmZvIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ1c2VyLWF2YXRhciI+CiAgICAgICAgICAgICAgICAke3RoaXMudXNlci5hdmF0YXI/d2A8aW1nIHNyYz0iJHt0aGlzLnVzZXIuYXZhdGFyfSIgYWx0PSIke3RoaXMudXNlci5uYW1lfSI+YDp0aGlzLmdldEluaXRpYWxzKHRoaXMudXNlci5uYW1lKX0KICAgICAgICAgICAgICAgICR7dGhpcy51c2VyLnN0YXR1cz93YAogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ1c2VyLXN0YXR1cyAke3RoaXMudXNlci5zdGF0dXN9Ij48L2Rpdj4KICAgICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idXNlci1kZXRhaWxzIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InVzZXItbmFtZSI+JHt0aGlzLnVzZXIubmFtZX08L2Rpdj4KICAgICAgICAgICAgICAgICR7dGhpcy51c2VyLmVtYWlsP3dgCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InVzZXItZW1haWwiPiR7dGhpcy51c2VyLmVtYWlsfTwvZGl2PgogICAgICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgOiIifQogICAgICAgIAogICAgICAgIDxkaXYgY2xhc3M9Im1lbnUtc2VjdGlvbiI+CiAgICAgICAgICAke3RoaXMubWVudUl0ZW1zLm1hcChNPT50aGlzLnJlbmRlck1lbnVJdGVtKE0pKX0KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfXJlbmRlck1lbnVJdGVtKE0pe2lmKCJkaXZpZGVyImluIE0mJk0uZGl2aWRlcilyZXR1cm4gd2A8ZGl2IGNsYXNzPSJtZW51LWRpdmlkZXIiPjwvZGl2PmA7bGV0IHo9TTtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0ibWVudS1pdGVtIiBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVNZW51Q2xpY2soeil9PgogICAgICAgICR7ei5pY29uTmFtZT93YAogICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0iJHtgbHVjaWRlOiR7ei5pY29uTmFtZX1gfSI+PC9kZWVzLWljb24+CiAgICAgICAgYDoiIn0KICAgICAgICA8c3BhbiBjbGFzcz0ibWVudS1pdGVtLXRleHQiPiR7ei5uYW1lfTwvc3Bhbj4KICAgICAgICAke3ouc2hvcnRjdXQ/d2AKICAgICAgICAgIDxzcGFuIGNsYXNzPSJtZW51LXNob3J0Y3V0Ij4ke3ouc2hvcnRjdXR9PC9zcGFuPgogICAgICAgIGA6IiJ9CiAgICAgIDwvZGl2PgogICAgYH1nZXRJbml0aWFscyhNKXtyZXR1cm4gTS5zcGxpdCgiICIpLm1hcCh6PT56WzBdKS5qb2luKCIiKS50b1VwcGVyQ2FzZSgpLnNsaWNlKDAsMil9YXN5bmMgaGFuZGxlTWVudUNsaWNrKE0pe2F3YWl0IE0uYWN0aW9uKCksdGhpcy5jbG9zZSgpLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoIm1lbnUtc2VsZWN0Iix7ZGV0YWlsOntpdGVtOk19LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9b3Blbigpe3RoaXMuaXNPcGVuPSEwfWNsb3NlKCl7dGhpcy5pc09wZW49ITF9dG9nZ2xlKCl7dGhpcy5pc09wZW49IXRoaXMuaXNPcGVufWFzeW5jIGNvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLmhhbmRsZU91dHNpZGVDbGljaz10aGlzLmhhbmRsZU91dHNpZGVDbGljay5iaW5kKHRoaXMpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLmhhbmRsZU91dHNpZGVDbGljayl9YXN5bmMgZGlzY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLmhhbmRsZU91dHNpZGVDbGljayl9aGFuZGxlT3V0c2lkZUNsaWNrKE0pe2lmKHRoaXMuaXNPcGVuJiYhdGhpcy5jb250YWlucyhNLnRhcmdldCkpe2xldCB6PXRoaXMucGFyZW50RWxlbWVudDtpZih6JiZ6LmNvbnRhaW5zKE0udGFyZ2V0KSlyZXR1cm47dGhpcy5jbG9zZSgpfX1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksUTAodGhpcyxmKX1zdGF0aWN7UTAoYSx0KX19O3JldHVybiB5PWF9KSgpfSk7dmFyIHNuLFNzLHZkYSx6ZXQ9ZygoKT0+e3BlKCk7a3QoKTttaCgpO3BvKCk7dWRhKCk7aGRhKCk7bWRhKCk7VWEoKTtUZXQoKTskZXQoKTtzbj1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sU3M9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LHZkYT0oKCk9PntsZXQgcz1bbmUoImRlZXMtYXBwdWktYXBwYmFyIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W10sSCxrPVtdLFM9W10sSSxQPVtdLFI9W10sSyxWPVtdLFc9W10sbWUsQj1bXSxVPVtdLGhlLEY9W10saj1bXSx1ZSxsZT1bXSxRPVtdLGllLHRlPVtdLGVlPVtdLGtlLFg9W10sWj1bXTt2YXIgeWU9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNBcHB1aUJhciIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBxPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6QXJyYXl9KV0scD1bTCh7dHlwZTpTdHJpbmd9KV0sYz1bTCh7dHlwZTpTdHJpbmd9KV0seD1bTCh7dHlwZTpCb29sZWFufSldLHk9W0woe3R5cGU6T2JqZWN0fSldLE49W0woe3R5cGU6QXJyYXl9KV0sTz1bTCh7dHlwZTpCb29sZWFufSldLEg9W0woe3R5cGU6Qm9vbGVhbn0pXSxJPVtMKHt0eXBlOk51bWJlcn0pXSxLPVtMKHt0eXBlOkJvb2xlYW59KV0sbWU9W1koKV0saGU9W1koKV0sdWU9W1koKV0saWU9W1koKV0sa2U9W1koKV0sc24odGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtZW51SXRlbXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+Im1lbnVJdGVtcyJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLm1lbnVJdGVtcywiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS5tZW51SXRlbXM9c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sbyxsKSxzbih0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImJyZWFkY3J1bWJzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJicmVhZGNydW1icyJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLmJyZWFkY3J1bWJzLCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLmJyZWFkY3J1bWJzPXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LGQsdSksc24odGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJicmVhZGNydW1iU2VwYXJhdG9yIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJicmVhZGNydW1iU2VwYXJhdG9yImluIEEsImhhcyIpLGdldDppKEE9PkEuYnJlYWRjcnVtYlNlcGFyYXRvciwiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS5icmVhZGNydW1iU2VwYXJhdG9yPXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LGIsdiksc24odGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93V2luZG93Q29udHJvbHMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+InNob3dXaW5kb3dDb250cm9scyJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLnNob3dXaW5kb3dDb250cm9scywiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS5zaG93V2luZG93Q29udHJvbHM9c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sbSxmKSxzbih0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InVzZXIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+InVzZXIiaW4gQSwiaGFzIiksZ2V0OmkoQT0+QS51c2VyLCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLnVzZXI9c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sTSx6KSxzbih0aGlzLG51bGwsTix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InByb2ZpbGVNZW51SXRlbXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+InByb2ZpbGVNZW51SXRlbXMiaW4gQSwiaGFzIiksZ2V0OmkoQT0+QS5wcm9maWxlTWVudUl0ZW1zLCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLnByb2ZpbGVNZW51SXRlbXM9c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sQyxfKSxzbih0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dTZWFyY2giLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+InNob3dTZWFyY2giaW4gQSwiaGFzIiksZ2V0OmkoQT0+QS5zaG93U2VhcmNoLCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLnNob3dTZWFyY2g9c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sJCxFKSxzbih0aGlzLG51bGwsSCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dBY3Rpdml0eUxvZ1RvZ2dsZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4ic2hvd0FjdGl2aXR5TG9nVG9nZ2xlImluIEEsImhhcyIpLGdldDppKEE9PkEuc2hvd0FjdGl2aXR5TG9nVG9nZ2xlLCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLnNob3dBY3Rpdml0eUxvZ1RvZ2dsZT1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSxrLFMpLHNuKHRoaXMsbnVsbCxJLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYWN0aXZpdHlMb2dDb3VudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4iYWN0aXZpdHlMb2dDb3VudCJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLmFjdGl2aXR5TG9nQ291bnQsImdldCIpLHNldDppKChBLHNlKT0+e0EuYWN0aXZpdHlMb2dDb3VudD1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSxQLFIpLHNuKHRoaXMsbnVsbCxLLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYWN0aXZpdHlMb2dBY3RpdmUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+ImFjdGl2aXR5TG9nQWN0aXZlImluIEEsImhhcyIpLGdldDppKEE9PkEuYWN0aXZpdHlMb2dBY3RpdmUsImdldCIpLHNldDppKChBLHNlKT0+e0EuYWN0aXZpdHlMb2dBY3RpdmU9c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sVixXKSxzbih0aGlzLG51bGwsbWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJhY3RpdmVNZW51IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJhY3RpdmVNZW51ImluIEEsImhhcyIpLGdldDppKEE9PkEuYWN0aXZlTWVudSwiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS5hY3RpdmVNZW51PXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LEIsVSksc24odGhpcyxudWxsLGhlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToib3BlbkRyb3Bkb3ducyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4ib3BlbkRyb3Bkb3ducyJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLm9wZW5Ecm9wZG93bnMsImdldCIpLHNldDppKChBLHNlKT0+e0Eub3BlbkRyb3Bkb3ducz1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSxGLGopLHNuKHRoaXMsbnVsbCx1ZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImZvY3VzZWRJdGVtIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJmb2N1c2VkSXRlbSJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLmZvY3VzZWRJdGVtLCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLmZvY3VzZWRJdGVtPXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LGxlLFEpLHNuKHRoaXMsbnVsbCxpZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImZvY3VzZWREcm9wZG93bkl0ZW0iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+ImZvY3VzZWREcm9wZG93bkl0ZW0iaW4gQSwiaGFzIiksZ2V0OmkoQT0+QS5mb2N1c2VkRHJvcGRvd25JdGVtLCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLmZvY3VzZWREcm9wZG93bkl0ZW09c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sdGUsZWUpLHNuKHRoaXMsbnVsbCxrZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImlzUHJvZmlsZURyb3Bkb3duT3BlbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4iaXNQcm9maWxlRHJvcGRvd25PcGVuImluIEEsImhhcyIpLGdldDppKEE9PkEuaXNQcm9maWxlRHJvcGRvd25PcGVuLCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLmlzUHJvZmlsZURyb3Bkb3duT3Blbj1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSxYLFopLHNuKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOnF9LG51bGwsdCkseWU9YT1lLnZhbHVlLHEmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6cX0pfXN0YXRpYyBkZW1vPWRkYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIkFwcCBVSSJdOyNlPVNzKHRoaXMsbyxbXSk7Z2V0IG1lbnVJdGVtcygpe3JldHVybiB0aGlzLiNlfXNldCBtZW51SXRlbXMocSl7dGhpcy4jZT1xfSN0PShTcyh0aGlzLGwpLFNzKHRoaXMsZCwiIikpO2dldCBicmVhZGNydW1icygpe3JldHVybiB0aGlzLiN0fXNldCBicmVhZGNydW1icyhxKXt0aGlzLiN0PXF9I2E9KFNzKHRoaXMsdSksU3ModGhpcyxiLCIgPiAiKSk7Z2V0IGJyZWFkY3J1bWJTZXBhcmF0b3IoKXtyZXR1cm4gdGhpcy4jYX1zZXQgYnJlYWRjcnVtYlNlcGFyYXRvcihxKXt0aGlzLiNhPXF9I3M9KFNzKHRoaXMsdiksU3ModGhpcyxtLCEwKSk7Z2V0IHNob3dXaW5kb3dDb250cm9scygpe3JldHVybiB0aGlzLiNzfXNldCBzaG93V2luZG93Q29udHJvbHMocSl7dGhpcy4jcz1xfSNpPShTcyh0aGlzLGYpLFNzKHRoaXMsTSx2b2lkIDApKTtnZXQgdXNlcigpe3JldHVybiB0aGlzLiNpfXNldCB1c2VyKHEpe3RoaXMuI2k9cX0jcj0oU3ModGhpcyx6KSxTcyh0aGlzLEMsW10pKTtnZXQgcHJvZmlsZU1lbnVJdGVtcygpe3JldHVybiB0aGlzLiNyfXNldCBwcm9maWxlTWVudUl0ZW1zKHEpe3RoaXMuI3I9cX0jbz0oU3ModGhpcyxfKSxTcyh0aGlzLCQsITEpKTtnZXQgc2hvd1NlYXJjaCgpe3JldHVybiB0aGlzLiNvfXNldCBzaG93U2VhcmNoKHEpe3RoaXMuI289cX0jbj0oU3ModGhpcyxFKSxTcyh0aGlzLGssITEpKTtnZXQgc2hvd0FjdGl2aXR5TG9nVG9nZ2xlKCl7cmV0dXJuIHRoaXMuI259c2V0IHNob3dBY3Rpdml0eUxvZ1RvZ2dsZShxKXt0aGlzLiNuPXF9I2w9KFNzKHRoaXMsUyksU3ModGhpcyxQLDApKTtnZXQgYWN0aXZpdHlMb2dDb3VudCgpe3JldHVybiB0aGlzLiNsfXNldCBhY3Rpdml0eUxvZ0NvdW50KHEpe3RoaXMuI2w9cX0jYz0oU3ModGhpcyxSKSxTcyh0aGlzLFYsITEpKTtnZXQgYWN0aXZpdHlMb2dBY3RpdmUoKXtyZXR1cm4gdGhpcy4jY31zZXQgYWN0aXZpdHlMb2dBY3RpdmUocSl7dGhpcy4jYz1xfSNkPShTcyh0aGlzLFcpLFNzKHRoaXMsQixudWxsKSk7Z2V0IGFjdGl2ZU1lbnUoKXtyZXR1cm4gdGhpcy4jZH1zZXQgYWN0aXZlTWVudShxKXt0aGlzLiNkPXF9I3U9KFNzKHRoaXMsVSksU3ModGhpcyxGLG5ldyBTZXQpKTtnZXQgb3BlbkRyb3Bkb3ducygpe3JldHVybiB0aGlzLiN1fXNldCBvcGVuRHJvcGRvd25zKHEpe3RoaXMuI3U9cX0jcD0oU3ModGhpcyxqKSxTcyh0aGlzLGxlLG51bGwpKTtnZXQgZm9jdXNlZEl0ZW0oKXtyZXR1cm4gdGhpcy4jcH1zZXQgZm9jdXNlZEl0ZW0ocSl7dGhpcy4jcD1xfSNoPShTcyh0aGlzLFEpLFNzKHRoaXMsdGUsLTEpKTtnZXQgZm9jdXNlZERyb3Bkb3duSXRlbSgpe3JldHVybiB0aGlzLiNofXNldCBmb2N1c2VkRHJvcGRvd25JdGVtKHEpe3RoaXMuI2g9cX0jZj0oU3ModGhpcyxlZSksU3ModGhpcyxYLCExKSk7Z2V0IGlzUHJvZmlsZURyb3Bkb3duT3Blbigpe3JldHVybiB0aGlzLiNmfXNldCBpc1Byb2ZpbGVEcm9wZG93bk9wZW4ocSl7dGhpcy4jZj1xfXN0YXRpYyBzdHlsZXM9cGRhO3JlbmRlcigpe3JldHVybiBmZGEodGhpcyl9cmVuZGVyTWVudUl0ZW1zKCl7cmV0dXJuIHdgCiAgICAgICR7dGhpcy5tZW51SXRlbXMubWFwKChxLEEpPT50aGlzLnJlbmRlck1lbnVJdGVtKHEsYG1lbnUtJHtBfWApKX0KICAgIGB9cmVuZGVyTWVudUl0ZW0ocSxBKXtpZigiZGl2aWRlciJpbiBxJiZxLmRpdmlkZXIpcmV0dXJuIHdgPGRpdiBjbGFzcz0iZHJvcGRvd24tZGl2aWRlciI+PC9kaXY+YDtsZXQgc2U9cSxvZT10aGlzLmFjdGl2ZU1lbnU9PT1BLGFlPXNlLnN1Ym1lbnUmJnNlLnN1Ym1lbnUubGVuZ3RoPjA7cmV0dXJuIHdgCiAgICAgIDxkaXYKICAgICAgICBjbGFzcz0ibWVudUl0ZW0gJHtvZT8iYWN0aXZlIjoiIn0iCiAgICAgICAgP2Rpc2FibGVkPSR7c2UuZGlzYWJsZWR9CiAgICAgICAgdGFiaW5kZXg9IiR7c2UuZGlzYWJsZWQ/LTE6MH0iCiAgICAgICAgZGF0YS1pdGVtLWlkPSIke0F9IgogICAgICAgIEBjbGljaz0keygpPT50aGlzLmhhbmRsZU1lbnVDbGljayhzZSxBKX0KICAgICAgICBAa2V5ZG93bj0ke1RlPT50aGlzLmhhbmRsZU1lbnVLZXlkb3duKFRlLHNlLEEpfQogICAgICAgIHJvbGU9Im1lbnVpdGVtIgogICAgICAgIGFyaWEtaGFzcG9wdXA9IiR7YWV9IgogICAgICAgIGFyaWEtZXhwYW5kZWQ9IiR7b2V9IgogICAgICA+CiAgICAgICAgJHtzZS5pY29uTmFtZT93YDxkZWVzLWljb24gLmljb249IiR7YGx1Y2lkZToke3NlLmljb25OYW1lfWB9Ij48L2RlZXMtaWNvbj5gOiIifQogICAgICAgICR7c2UubmFtZX0KICAgICAgICAke2FlP3RoaXMucmVuZGVyRHJvcGRvd24oc2Uuc3VibWVudSxBLG9lKToiIn0KICAgICAgPC9kaXY+CiAgICBgfXJlbmRlckRyb3Bkb3duKHEsQSxzZSl7cmV0dXJuIHdgCiAgICAgIDxkaXYgCiAgICAgICAgY2xhc3M9ImRyb3Bkb3duICR7c2U/Im9wZW4iOiIifSIgCiAgICAgICAgQGNsaWNrPSR7b2U9Pm9lLnN0b3BQcm9wYWdhdGlvbigpfQogICAgICAgIEBrZXlkb3duPSR7b2U9PnRoaXMuaGFuZGxlRHJvcGRvd25LZXlkb3duKG9lLHEsQSl9CiAgICAgICAgdGFiaW5kZXg9IiR7c2U/MDotMX0iCiAgICAgICAgcm9sZT0ibWVudSIKICAgICAgPgogICAgICAgICR7cS5tYXAoKG9lLGFlKT0+dGhpcy5yZW5kZXJEcm9wZG93bkl0ZW0ob2UsYCR7QX0tJHthZX1gKSl9CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJEcm9wZG93bkl0ZW0ocSxBKXtpZigiZGl2aWRlciJpbiBxJiZxLmRpdmlkZXIpcmV0dXJuIHdgPGRpdiBjbGFzcz0iZHJvcGRvd24tZGl2aWRlciI+PC9kaXY+YDtsZXQgc2U9cSxvZT1wYXJzZUludChBLnNwbGl0KCItIikucG9wKCl8fCIwIiksYWU9dGhpcy5mb2N1c2VkRHJvcGRvd25JdGVtPT09b2U7cmV0dXJuIHdgCiAgICAgIDxkaXYKICAgICAgICBjbGFzcz0iZHJvcGRvd24taXRlbSAke2FlPyJmb2N1c2VkIjoiIn0iCiAgICAgICAgP2Rpc2FibGVkPSR7c2UuZGlzYWJsZWR9CiAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlRHJvcGRvd25JdGVtQ2xpY2soc2UpfQogICAgICAgIEBtb3VzZWVudGVyPSR7KCk9PnRoaXMuZm9jdXNlZERyb3Bkb3duSXRlbT1vZX0KICAgICAgICByb2xlPSJtZW51aXRlbSIKICAgICAgICB0YWJpbmRleD0iJHtzZS5kaXNhYmxlZD8tMTowfSIKICAgICAgPgogICAgICAgICR7c2UuaWNvbk5hbWU/d2A8ZGVlcy1pY29uIC5pY29uPSIke2BsdWNpZGU6JHtzZS5pY29uTmFtZX1gfSI+PC9kZWVzLWljb24+YDoiIn0KICAgICAgICA8c3Bhbj4ke3NlLm5hbWV9PC9zcGFuPgogICAgICAgICR7c2Uuc2hvcnRjdXQ/d2A8c3BhbiBjbGFzcz0ic2hvcnRjdXQiPiR7c2Uuc2hvcnRjdXR9PC9zcGFuPmA6IiJ9CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJCcmVhZGNydW1icygpe2lmKCF0aGlzLmJyZWFkY3J1bWJzKXJldHVybiB3YGA7bGV0IHE9dGhpcy5icmVhZGNydW1icy5zcGxpdCh0aGlzLmJyZWFkY3J1bWJTZXBhcmF0b3IpO3JldHVybiB3YAogICAgICAke3EubWFwKChBLHNlKT0+d2AKICAgICAgICAke3NlPjA/d2A8c3BhbiBjbGFzcz0iYnJlYWRjcnVtYi1zZXBhcmF0b3IiPiR7dGhpcy5icmVhZGNydW1iU2VwYXJhdG9yfTwvc3Bhbj5gOiIifQogICAgICAgIDxzcGFuIAogICAgICAgICAgY2xhc3M9ImJyZWFkY3J1bWItaXRlbSIgCiAgICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVCcmVhZGNydW1iQ2xpY2soQSxzZSl9CiAgICAgICAgPgogICAgICAgICAgJHtBfQogICAgICAgIDwvc3Bhbj4KICAgICAgYCl9CiAgICBgfXJlbmRlckFjY291bnRTZWN0aW9uKCl7cmV0dXJuIHdgCiAgICAgICR7dGhpcy5zaG93U2VhcmNoP3dgCiAgICAgICAgPGRlZXMtaWNvbgogICAgICAgICAgY2xhc3M9InNlYXJjaC1pY29uIgogICAgICAgICAgLmljb249JHsibHVjaWRlOnNlYXJjaCJ9CiAgICAgICAgICBAY2xpY2s9JHt0aGlzLmhhbmRsZVNlYXJjaENsaWNrfQogICAgICAgID48L2RlZXMtaWNvbj4KICAgICAgYDoiIn0KICAgICAgJHt0aGlzLnVzZXI/d2AKICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9InVzZXItaW5mbyIgQGNsaWNrPSR7dGhpcy5oYW5kbGVVc2VyQ2xpY2t9PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ1c2VyLWF2YXRhciI+CiAgICAgICAgICAgICAgJHt0aGlzLnVzZXIuYXZhdGFyP3dgPGltZyBzcmM9IiR7dGhpcy51c2VyLmF2YXRhcn0iIGFsdD0iJHt0aGlzLnVzZXIubmFtZX0iPmA6d2Ake3RoaXMudXNlci5uYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfWB9CiAgICAgICAgICAgICAgJHt0aGlzLnVzZXIuc3RhdHVzP3dgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ1c2VyLXN0YXR1cyAke3RoaXMudXNlci5zdGF0dXN9Ij48L2Rpdj4KICAgICAgICAgICAgICBgOiIifQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHNwYW4+JHt0aGlzLnVzZXIubmFtZX08L3NwYW4+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkZWVzLWFwcHVpLXByb2ZpbGVkcm9wZG93bgogICAgICAgICAgICAudXNlcj0ke3RoaXMudXNlcn0KICAgICAgICAgICAgLm1lbnVJdGVtcz0ke3RoaXMucHJvZmlsZU1lbnVJdGVtc30KICAgICAgICAgICAgLmlzT3Blbj0ke3RoaXMuaXNQcm9maWxlRHJvcGRvd25PcGVufQogICAgICAgICAgICAucG9zaXRpb249JHsidG9wLXJpZ2h0In0KICAgICAgICAgICAgQG1lbnUtc2VsZWN0PSR7cT0+dGhpcy5oYW5kbGVQcm9maWxlTWVudVNlbGVjdChxKX0KICAgICAgICAgID48L2RlZXMtYXBwdWktcHJvZmlsZWRyb3Bkb3duPgogICAgICAgIDwvZGl2PgogICAgICBgOiIifQogICAgICAke3RoaXMuc2hvd0FjdGl2aXR5TG9nVG9nZ2xlP3dgCiAgICAgICAgPGRpdgogICAgICAgICAgY2xhc3M9ImFjdGl2aXR5LXRvZ2dsZSAke3RoaXMuYWN0aXZpdHlMb2dBY3RpdmU/ImFjdGl2ZSI6IiJ9IgogICAgICAgICAgQGNsaWNrPSR7dGhpcy5oYW5kbGVBY3Rpdml0eVRvZ2dsZX0KICAgICAgICAgIHRpdGxlPSJBY3Rpdml0eSBMb2ciCiAgICAgICAgPgogICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6YWN0aXZpdHkifT48L2RlZXMtaWNvbj4KICAgICAgICAgICR7dGhpcy5hY3Rpdml0eUxvZ0NvdW50PjA/d2AKICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFjdGl2aXR5LWJhZGdlIj4ke3RoaXMuYWN0aXZpdHlMb2dDb3VudD45OT8iOTkrIjp0aGlzLmFjdGl2aXR5TG9nQ291bnR9PC9zcGFuPgogICAgICAgICAgYDoiIn0KICAgICAgICA8L2Rpdj4KICAgICAgYDoiIn0KICAgIGB9aGFuZGxlTWVudUNsaWNrKHEsQSl7cS5kaXNhYmxlZHx8KHEuc3VibWVudSYmcS5zdWJtZW51Lmxlbmd0aD4wP3RoaXMuYWN0aXZlTWVudT09PUE/dGhpcy5hY3RpdmVNZW51PW51bGw6dGhpcy5hY3RpdmVNZW51PUE6KHRoaXMuYWN0aXZlTWVudT1udWxsLHEuYWN0aW9uJiZxLmFjdGlvbigpLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoIm1lbnUtc2VsZWN0Iix7ZGV0YWlsOntpdGVtOnF9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSkpKX1oYW5kbGVEcm9wZG93bkl0ZW1DbGljayhxKXtxLmRpc2FibGVkfHwodGhpcy5hY3RpdmVNZW51PW51bGwscS5hY3Rpb24mJnEuYWN0aW9uKCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgibWVudS1zZWxlY3QiLHtkZXRhaWw6e2l0ZW06cX0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKSl9aGFuZGxlTWVudUtleWRvd24ocSxBLHNlKXtzd2l0Y2gocS5rZXkpe2Nhc2UiRW50ZXIiOmNhc2UiICI6cS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuaGFuZGxlTWVudUNsaWNrKEEsc2UpO2JyZWFrO2Nhc2UiQXJyb3dEb3duIjppZihBLnN1Ym1lbnUmJnRoaXMuYWN0aXZlTWVudT09PXNlKXtxLnByZXZlbnREZWZhdWx0KCksdGhpcy5mb2N1c2VkRHJvcGRvd25JdGVtPTA7bGV0IG9lPXRoaXMuZmluZE5leHRWYWxpZEl0ZW0oQS5zdWJtZW51LC0xLDEpO29lIT09LTEmJih0aGlzLmZvY3VzZWREcm9wZG93bkl0ZW09b2Usc2V0VGltZW91dCgoKT0+e2xldCBhZT10aGlzLnJlbmRlclJvb3QucXVlcnlTZWxlY3RvcigiLmRyb3Bkb3duLm9wZW4iKTthZSYmYWUuZm9jdXMoKX0sMCkpfWJyZWFrO2Nhc2UiRXNjYXBlIjp0aGlzLmFjdGl2ZU1lbnU9bnVsbCx0aGlzLmZvY3VzZWREcm9wZG93bkl0ZW09LTE7YnJlYWs7Y2FzZSJUYWIiOnRoaXMuYWN0aXZlTWVudT09PXNlJiYodGhpcy5hY3RpdmVNZW51PW51bGwsdGhpcy5mb2N1c2VkRHJvcGRvd25JdGVtPS0xKTticmVhaztjYXNlIkFycm93UmlnaHQiOnEucHJldmVudERlZmF1bHQoKSx0aGlzLmZvY3VzTmV4dE1lbnVJdGVtKHNlLDEpO2JyZWFrO2Nhc2UiQXJyb3dMZWZ0IjpxLnByZXZlbnREZWZhdWx0KCksdGhpcy5mb2N1c05leHRNZW51SXRlbShzZSwtMSk7YnJlYWt9fWhhbmRsZUJyZWFkY3J1bWJDbGljayhxLEEpe3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImJyZWFkY3J1bWItbmF2aWdhdGUiLHtkZXRhaWw6e2JyZWFkY3J1bWI6cSxpbmRleDpBfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZVNlYXJjaENsaWNrKCl7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgic2VhcmNoLWNsaWNrIix7YnViYmxlczohMCxjb21wb3NlZDohMH0pKX1oYW5kbGVBY3Rpdml0eVRvZ2dsZSgpe3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImFjdGl2aXR5LXRvZ2dsZSIse2J1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9aGFuZGxlVXNlckNsaWNrKCl7dGhpcy5pc1Byb2ZpbGVEcm9wZG93bk9wZW49IXRoaXMuaXNQcm9maWxlRHJvcGRvd25PcGVuLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInVzZXItbWVudS1vcGVuIix7YnViYmxlczohMCxjb21wb3NlZDohMH0pKX1oYW5kbGVQcm9maWxlTWVudVNlbGVjdChxKXt0aGlzLmlzUHJvZmlsZURyb3Bkb3duT3Blbj0hMSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJwcm9maWxlLW1lbnUtc2VsZWN0Iix7ZGV0YWlsOnEuZGV0YWlsLGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9YXN5bmMgY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMuaGFuZGxlR2xvYmFsQ2xpY2spLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLmhhbmRsZURvY3VtZW50Q2xpY2spfWFzeW5jIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5oYW5kbGVEb2N1bWVudENsaWNrKX1oYW5kbGVHbG9iYWxDbGljaz0oU3ModGhpcyxaKSxxPT57cS5zdG9wUHJvcGFnYXRpb24oKX0pO2hhbmRsZURvY3VtZW50Q2xpY2s9aSgoKT0+e3RoaXMuYWN0aXZlTWVudT1udWxsLHRoaXMuZm9jdXNlZERyb3Bkb3duSXRlbT0tMX0sImhhbmRsZURvY3VtZW50Q2xpY2siKTtoYW5kbGVEcm9wZG93bktleWRvd24ocSxBLHNlKXtsZXQgb2U9QS5maWx0ZXIoYWU9PiEoImRpdmlkZXIiaW4gYWUmJmFlLmRpdmlkZXIpKTtzd2l0Y2gocS5rZXkpe2Nhc2UiQXJyb3dEb3duIjpxLnByZXZlbnREZWZhdWx0KCk7bGV0IGFlPXRoaXMuZmluZE5leHRWYWxpZEl0ZW0oQSx0aGlzLmZvY3VzZWREcm9wZG93bkl0ZW0sMSk7YWUhPT0tMSYmKHRoaXMuZm9jdXNlZERyb3Bkb3duSXRlbT1hZSk7YnJlYWs7Y2FzZSJBcnJvd1VwIjpxLnByZXZlbnREZWZhdWx0KCk7bGV0IFRlPXRoaXMuZmluZE5leHRWYWxpZEl0ZW0oQSx0aGlzLmZvY3VzZWREcm9wZG93bkl0ZW0sLTEpO1RlIT09LTEmJih0aGlzLmZvY3VzZWREcm9wZG93bkl0ZW09VGUpO2JyZWFrO2Nhc2UiRW50ZXIiOmlmKHEucHJldmVudERlZmF1bHQoKSx0aGlzLmZvY3VzZWREcm9wZG93bkl0ZW0hPT0tMSl7bGV0IERlPW9lW3RoaXMuZm9jdXNlZERyb3Bkb3duSXRlbV07RGUmJiJhY3Rpb24iaW4gRGUmJiFEZS5kaXNhYmxlZCYmdGhpcy5oYW5kbGVEcm9wZG93bkl0ZW1DbGljayhEZSl9YnJlYWs7Y2FzZSJIb21lIjpxLnByZXZlbnREZWZhdWx0KCk7bGV0IFJlPXRoaXMuZmluZE5leHRWYWxpZEl0ZW0oQSwtMSwxKTtSZSE9PS0xJiYodGhpcy5mb2N1c2VkRHJvcGRvd25JdGVtPVJlKTticmVhaztjYXNlIkVuZCI6cS5wcmV2ZW50RGVmYXVsdCgpO2xldCBCZT10aGlzLmZpbmROZXh0VmFsaWRJdGVtKEEsQS5sZW5ndGgsLTEpO0JlIT09LTEmJih0aGlzLmZvY3VzZWREcm9wZG93bkl0ZW09QmUpO2JyZWFrO2Nhc2UiRXNjYXBlIjpxLnByZXZlbnREZWZhdWx0KCksdGhpcy5hY3RpdmVNZW51PW51bGwsdGhpcy5mb2N1c2VkRHJvcGRvd25JdGVtPS0xO2xldCBHZT10aGlzLnJlbmRlclJvb3QucXVlcnlTZWxlY3RvcigiLm1lbnVJdGVtLmFjdGl2ZSIpO0dlJiZHZS5mb2N1cygpO2JyZWFrfX1maW5kTmV4dFZhbGlkSXRlbShxLEEsc2Upe2xldCBvZT1BK3NlO2Zvcig7b2U+PTAmJm9lPHEubGVuZ3RoOyl7bGV0IGFlPXFbb2VdO2lmKCEoImRpdmlkZXIiaW4gYWUmJmFlLmRpdmlkZXIpJiYhKCJkaXNhYmxlZCJpbiBhZSYmYWUuZGlzYWJsZWQpKXJldHVybiBvZTtvZSs9c2V9cmV0dXJuLTF9Zm9jdXNOZXh0TWVudUl0ZW0ocSxBKXtsZXQgc2U9QXJyYXkuZnJvbSh0aGlzLnJlbmRlclJvb3QucXVlcnlTZWxlY3RvckFsbCgiLm1lbnVJdGVtIikpLG9lPXNlLmZpbmRJbmRleChSZT0+UmUuZ2V0QXR0cmlidXRlKCJkYXRhLWl0ZW0taWQiKT09PXEpO2lmKG9lPT09LTEpcmV0dXJuO2xldCBhZT1vZStBO2FlPDA/YWU9c2UubGVuZ3RoLTE6YWU+PXNlLmxlbmd0aCYmKGFlPTApO2xldCBUZT0wO2Zvcig7VGU8c2UubGVuZ3RoOyl7bGV0IFJlPXNlW2FlXTtpZighUmUuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpKXtSZS5mb2N1cygpLHRoaXMuYWN0aXZlTWVudSYmKHRoaXMuYWN0aXZlTWVudT1udWxsLHRoaXMuZm9jdXNlZERyb3Bkb3duSXRlbT0tMSk7YnJlYWt9YWU9KGFlK0Erc2UubGVuZ3RoKSVzZS5sZW5ndGgsVGUrK319c3RhdGlje1NzKGEsdCl9fTtyZXR1cm4geWU9YX0pKCl9KTt2YXIgRGV0PWcoKCk9Pnt6ZXQoKX0pO3ZhciB4ZGEseWRhLHdkYT1nKCgpPT57cGUoKTtJdCgpO3lkYT1pKCgpPT53KHhkYXx8KHhkYT1iYyhbYAogICAgPGRlZXMtZGVtb3dyYXBwZXI+CiAgICAgIDxzdHlsZT4KICAgICAgICAuZGVtby1jb250YWluZXIgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICBnYXA6IDI0cHg7CiAgICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgICAgYmFja2dyb3VuZDogIzFhMWExYTsKICAgICAgICB9CgogICAgICAgIC5kZW1vLXNlY3Rpb24gewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICBnYXA6IDhweDsKICAgICAgICB9CgogICAgICAgIC5kZW1vLWxhYmVsIHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICAgIGNvbG9yOiAjNzM3MzczOwogICAgICAgICAgZm9udC1mYW1pbHk6ICdHZWlzdCBTYW5zJywgc2Fucy1zZXJpZjsKICAgICAgICB9CgogICAgICAgIC5kZW1vLWJvdHRvbWJhci13cmFwcGVyIHsKICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGhzbCgwIDAlIDIwJSk7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIH0KICAgICAgPC9zdHlsZT4KICAgICAgPGRpdiBjbGFzcz0iZGVtby1jb250YWluZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkZW1vLWxhYmVsIj5Cb3R0b20gYmFyIHdpdGggc3RhdHVzIHdpZGdldHMgYW5kIGFjdGlvbnM8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImRlbW8tYm90dG9tYmFyLXdyYXBwZXIiPgogICAgICAgICAgICA8ZGVlcy1hcHB1aS1ib3R0b21iYXIKICAgICAgICAgICAgICBpZD0iZGVtby1ib3R0b21iYXIiCiAgICAgICAgICAgID48L2RlZXMtYXBwdWktYm90dG9tYmFyPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkZW1vLWxhYmVsIj5Db250cm9sczwvZGl2PgogICAgICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTogZmxleDsgZ2FwOiA4cHg7IGZsZXgtd3JhcDogd3JhcDsiPgogICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9ImFkZFN1Y2Nlc3NXaWRnZXQoKSI+QWRkIFN1Y2Nlc3MgV2lkZ2V0PC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iYWRkV2FybmluZ1dpZGdldCgpIj5BZGQgV2FybmluZyBXaWRnZXQ8L2J1dHRvbj4KICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJhZGRFcnJvcldpZGdldCgpIj5BZGQgRXJyb3IgV2lkZ2V0PC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iYWRkTG9hZGluZ1dpZGdldCgpIj5BZGQgTG9hZGluZyBXaWRnZXQ8L2J1dHRvbj4KICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJhZGRSaWdodFdpZGdldCgpIj5BZGQgUmlnaHQgV2lkZ2V0PC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iYWRkQWN0aW9uKCkiPkFkZCBBY3Rpb248L2J1dHRvbj4KICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJjbGVhckFsbCgpIj5DbGVhciBBbGw8L2J1dHRvbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPHNjcmlwdCB0eXBlPSJtb2R1bGUiPgogICAgICAgIGNvbnN0IGJvdHRvbWJhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZW1vLWJvdHRvbWJhcicpOwoKICAgICAgICAvLyBXYWl0IGZvciBjb21wb25lbnQgdG8gaW5pdGlhbGl6ZQogICAgICAgIGF3YWl0IGJvdHRvbWJhci51cGRhdGVDb21wbGV0ZTsKCiAgICAgICAgLy8gQWRkIGluaXRpYWwgd2lkZ2V0cwogICAgICAgIGJvdHRvbWJhci5hZGRXaWRnZXQoewogICAgICAgICAgaWQ6ICdzdGF0dXMnLAogICAgICAgICAgaWNvbk5hbWU6ICdsdWNpZGU6YWN0aXZpdHknLAogICAgICAgICAgbGFiZWw6ICdTeXN0ZW0gT25saW5lJywKICAgICAgICAgIHN0YXR1czogJ3N1Y2Nlc3MnLAogICAgICAgICAgdG9vbHRpcDogJ0FsbCBzeXN0ZW1zIG9wZXJhdGlvbmFsJywKICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IGNvbnNvbGUubG9nKCdTdGF0dXMgY2xpY2tlZCcpLAogICAgICAgICAgY29udGV4dE1lbnVJdGVtczogWwogICAgICAgICAgICB7IG5hbWU6ICdWaWV3IERldGFpbHMnLCBpY29uTmFtZTogJ2x1Y2lkZTppbmZvJywgYWN0aW9uOiAoKSA9PiBhbGVydCgnU3lzdGVtIGRldGFpbHMnKSB9LAogICAgICAgICAgICB7IGRpdmlkZXI6IHRydWUgfSwKICAgICAgICAgICAgeyBuYW1lOiAnUmVmcmVzaCBTdGF0dXMnLCBpY29uTmFtZTogJ2x1Y2lkZTpyZWZyZXNoQ3cnLCBhY3Rpb246ICgpID0+IGFsZXJ0KCdSZWZyZXNoaW5nLi4uJykgfSwKICAgICAgICAgIF0sCiAgICAgICAgfSk7CgogICAgICAgIGJvdHRvbWJhci5hZGRXaWRnZXQoewogICAgICAgICAgaWQ6ICdub3RpZmljYXRpb25zJywKICAgICAgICAgIGljb25OYW1lOiAnbHVjaWRlOmJlbGwnLAogICAgICAgICAgbGFiZWw6ICczIG5vdGlmaWNhdGlvbnMnLAogICAgICAgICAgc3RhdHVzOiAnd2FybmluZycsCiAgICAgICAgICB0b29sdGlwOiAnWW91IGhhdmUgdW5yZWFkIG5vdGlmaWNhdGlvbnMnLAogICAgICAgICAgb25DbGljazogKCkgPT4gY29uc29sZS5sb2coJ05vdGlmaWNhdGlvbnMgY2xpY2tlZCcpLAogICAgICAgIH0pOwoKICAgICAgICBib3R0b21iYXIuYWRkV2lkZ2V0KHsKICAgICAgICAgIGlkOiAndmVyc2lvbicsCiAgICAgICAgICBpY29uTmFtZTogJ2x1Y2lkZTpnaXRCcmFuY2gnLAogICAgICAgICAgbGFiZWw6ICd2MS4yLjMnLAogICAgICAgICAgdG9vbHRpcDogJ0N1cnJlbnQgdmVyc2lvbicsCiAgICAgICAgICBwb3NpdGlvbjogJ3JpZ2h0JywKICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IGNvbnNvbGUubG9nKCdWZXJzaW9uIGNsaWNrZWQnKSwKICAgICAgICB9KTsKCiAgICAgICAgLy8gQWRkIGluaXRpYWwgYWN0aW9ucwogICAgICAgIGJvdHRvbWJhci5hZGRBY3Rpb24oewogICAgICAgICAgaWQ6ICdzZXR0aW5ncycsCiAgICAgICAgICBpY29uTmFtZTogJ2x1Y2lkZTpzZXR0aW5ncycsCiAgICAgICAgICB0b29sdGlwOiAnU2V0dGluZ3MnLAogICAgICAgICAgcG9zaXRpb246ICdyaWdodCcsCiAgICAgICAgICBvbkNsaWNrOiAoKSA9PiBhbGVydCgnU2V0dGluZ3MgY2xpY2tlZCcpLAogICAgICAgIH0pOwoKICAgICAgICBib3R0b21iYXIuYWRkQWN0aW9uKHsKICAgICAgICAgIGlkOiAnaGVscCcsCiAgICAgICAgICBpY29uTmFtZTogJ2x1Y2lkZTpoZWxwQ2lyY2xlJywKICAgICAgICAgIHRvb2x0aXA6ICdIZWxwJywKICAgICAgICAgIHBvc2l0aW9uOiAncmlnaHQnLAogICAgICAgICAgb25DbGljazogKCkgPT4gYWxlcnQoJ0hlbHAgY2xpY2tlZCcpLAogICAgICAgIH0pOwoKICAgICAgICAvLyBEZW1vIGNvbnRyb2wgZnVuY3Rpb25zCiAgICAgICAgbGV0IHdpZGdldENvdW50ZXIgPSAwOwogICAgICAgIGxldCBhY3Rpb25Db3VudGVyID0gMDsKCiAgICAgICAgd2luZG93LmFkZFN1Y2Nlc3NXaWRnZXQgPSAoKSA9PiB7CiAgICAgICAgICB3aWRnZXRDb3VudGVyKys7CiAgICAgICAgICBib3R0b21iYXIuYWRkV2lkZ2V0KHsKICAgICAgICAgICAgaWQ6ICdzdWNjZXNzLScgKyB3aWRnZXRDb3VudGVyLAogICAgICAgICAgICBpY29uTmFtZTogJ2x1Y2lkZTpjaGVja0NpcmNsZScsCiAgICAgICAgICAgIGxhYmVsOiAnU3VjY2VzcyAnICsgd2lkZ2V0Q291bnRlciwKICAgICAgICAgICAgc3RhdHVzOiAnc3VjY2VzcycsCiAgICAgICAgICAgIHRvb2x0aXA6ICdTdWNjZXNzIHdpZGdldCcsCiAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IGJvdHRvbWJhci5yZW1vdmVXaWRnZXQoJ3N1Y2Nlc3MtJyArIHdpZGdldENvdW50ZXIpLAogICAgICAgICAgfSk7CiAgICAgICAgfTsKCiAgICAgICAgd2luZG93LmFkZFdhcm5pbmdXaWRnZXQgPSAoKSA9PiB7CiAgICAgICAgICB3aWRnZXRDb3VudGVyKys7CiAgICAgICAgICBib3R0b21iYXIuYWRkV2lkZ2V0KHsKICAgICAgICAgICAgaWQ6ICd3YXJuaW5nLScgKyB3aWRnZXRDb3VudGVyLAogICAgICAgICAgICBpY29uTmFtZTogJ2x1Y2lkZTphbGVydFRyaWFuZ2xlJywKICAgICAgICAgICAgbGFiZWw6ICdXYXJuaW5nICcgKyB3aWRnZXRDb3VudGVyLAogICAgICAgICAgICBzdGF0dXM6ICd3YXJuaW5nJywKICAgICAgICAgICAgdG9vbHRpcDogJ1dhcm5pbmcgd2lkZ2V0JywKICAgICAgICAgICAgb25DbGljazogKCkgPT4gYm90dG9tYmFyLnJlbW92ZVdpZGdldCgnd2FybmluZy0nICsgd2lkZ2V0Q291bnRlciksCiAgICAgICAgICB9KTsKICAgICAgICB9OwoKICAgICAgICB3aW5kb3cuYWRkRXJyb3JXaWRnZXQgPSAoKSA9PiB7CiAgICAgICAgICB3aWRnZXRDb3VudGVyKys7CiAgICAgICAgICBib3R0b21iYXIuYWRkV2lkZ2V0KHsKICAgICAgICAgICAgaWQ6ICdlcnJvci0nICsgd2lkZ2V0Q291bnRlciwKICAgICAgICAgICAgaWNvbk5hbWU6ICdsdWNpZGU6eENpcmNsZScsCiAgICAgICAgICAgIGxhYmVsOiAnRXJyb3IgJyArIHdpZGdldENvdW50ZXIsCiAgICAgICAgICAgIHN0YXR1czogJ2Vycm9yJywKICAgICAgICAgICAgdG9vbHRpcDogJ0Vycm9yIHdpZGdldCcsCiAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IGJvdHRvbWJhci5yZW1vdmVXaWRnZXQoJ2Vycm9yLScgKyB3aWRnZXRDb3VudGVyKSwKICAgICAgICAgIH0pOwogICAgICAgIH07CgogICAgICAgIHdpbmRvdy5hZGRMb2FkaW5nV2lkZ2V0ID0gKCkgPT4gewogICAgICAgICAgd2lkZ2V0Q291bnRlcisrOwogICAgICAgICAgY29uc3QgaWQgPSAnbG9hZGluZy0nICsgd2lkZ2V0Q291bnRlcjsKICAgICAgICAgIGJvdHRvbWJhci5hZGRXaWRnZXQoewogICAgICAgICAgICBpZDogaWQsCiAgICAgICAgICAgIGljb25OYW1lOiAnbHVjaWRlOmxvYWRlcjInLAogICAgICAgICAgICBsYWJlbDogJ0xvYWRpbmcuLi4nLAogICAgICAgICAgICBzdGF0dXM6ICdhY3RpdmUnLAogICAgICAgICAgICBsb2FkaW5nOiB0cnVlLAogICAgICAgICAgICB0b29sdGlwOiAnTG9hZGluZyBpbiBwcm9ncmVzcycsCiAgICAgICAgICB9KTsKCiAgICAgICAgICAvLyBTaW11bGF0ZSBjb21wbGV0aW9uIGFmdGVyIDMgc2Vjb25kcwogICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgICAgIGJvdHRvbWJhci51cGRhdGVXaWRnZXQoaWQsIHsKICAgICAgICAgICAgICBpY29uTmFtZTogJ2x1Y2lkZTpjaGVjaycsCiAgICAgICAgICAgICAgbGFiZWw6ICdEb25lIScsCiAgICAgICAgICAgICAgc3RhdHVzOiAnc3VjY2VzcycsCiAgICAgICAgICAgICAgbG9hZGluZzogZmFsc2UsCiAgICAgICAgICAgIH0pOwogICAgICAgICAgfSwgMzAwMCk7CiAgICAgICAgfTsKCiAgICAgICAgd2luZG93LmFkZFJpZ2h0V2lkZ2V0ID0gKCkgPT4gewogICAgICAgICAgd2lkZ2V0Q291bnRlcisrOwogICAgICAgICAgYm90dG9tYmFyLmFkZFdpZGdldCh7CiAgICAgICAgICAgIGlkOiAncmlnaHQtJyArIHdpZGdldENvdW50ZXIsCiAgICAgICAgICAgIGljb25OYW1lOiAnbHVjaWRlOmluZm8nLAogICAgICAgICAgICBsYWJlbDogJ1JpZ2h0ICcgKyB3aWRnZXRDb3VudGVyLAogICAgICAgICAgICBwb3NpdGlvbjogJ3JpZ2h0JywKICAgICAgICAgICAgb25DbGljazogKCkgPT4gYm90dG9tYmFyLnJlbW92ZVdpZGdldCgncmlnaHQtJyArIHdpZGdldENvdW50ZXIpLAogICAgICAgICAgfSk7CiAgICAgICAgfTsKCiAgICAgICAgd2luZG93LmFkZEFjdGlvbiA9ICgpID0+IHsKICAgICAgICAgIGFjdGlvbkNvdW50ZXIrKzsKICAgICAgICAgIGJvdHRvbWJhci5hZGRBY3Rpb24oewogICAgICAgICAgICBpZDogJ2FjdGlvbi0nICsgYWN0aW9uQ291bnRlciwKICAgICAgICAgICAgaWNvbk5hbWU6ICdsdWNpZGU6emFwJywKICAgICAgICAgICAgdG9vbHRpcDogJ0FjdGlvbiAnICsgYWN0aW9uQ291bnRlciwKICAgICAgICAgICAgb25DbGljazogKCkgPT4gewogICAgICAgICAgICAgIGFsZXJ0KCdBY3Rpb24gJyArIGFjdGlvbkNvdW50ZXIgKyAnIGNsaWNrZWQnKTsKICAgICAgICAgICAgICBib3R0b21iYXIucmVtb3ZlQWN0aW9uKCdhY3Rpb24tJyArIGFjdGlvbkNvdW50ZXIpOwogICAgICAgICAgICB9LAogICAgICAgICAgfSk7CiAgICAgICAgfTsKCiAgICAgICAgd2luZG93LmNsZWFyQWxsID0gKCkgPT4gewogICAgICAgICAgYm90dG9tYmFyLmNsZWFyV2lkZ2V0cygpOwogICAgICAgICAgYm90dG9tYmFyLmNsZWFyQWN0aW9ucygpOwogICAgICAgICAgd2lkZ2V0Q291bnRlciA9IDA7CiAgICAgICAgICBhY3Rpb25Db3VudGVyID0gMDsKICAgICAgICB9OwogICAgICA8XC9zY3JpcHQ+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CiAgYF0pKSksImRlbW9GdW5jIil9KTt2YXIgTGV0LHpaLGtkYSxFZXQ9ZygoKT0+e3BlKCk7cHQoKTtVYSgpO29yKCk7d2RhKCk7TGV0PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSx6Wj1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sa2RhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1hcHB1aS1ib3R0b21iYXIiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXTt2YXIgYz1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0FwcHVpQm90dG9tYmFyIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGI9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bWSgpXSxwPVtZKCldLExldCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6IndpZGdldHMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkodj0+IndpZGdldHMiaW4gdiwiaGFzIiksZ2V0Omkodj0+di53aWRnZXRzLCJnZXQiKSxzZXQ6aSgodix4KT0+e3Yud2lkZ2V0cz14fSwic2V0Iil9LG1ldGFkYXRhOmJ9LG8sbCksTGV0KHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYWN0aW9ucyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh2PT4iYWN0aW9ucyJpbiB2LCJoYXMiKSxnZXQ6aSh2PT52LmFjdGlvbnMsImdldCIpLHNldDppKCh2LHgpPT57di5hY3Rpb25zPXh9LCJzZXQiKX0sbWV0YWRhdGE6Yn0sZCx1KSxMZXQobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6Yn0sbnVsbCx0KSxjPWE9ZS52YWx1ZSxiJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KX1zdGF0aWMgZGVtbz15ZGE7c3RhdGljIGRlbW9Hcm91cHM9WyJBcHAgVUkiXTsjZT16Wih0aGlzLG8sW10pO2dldCB3aWRnZXRzKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHdpZGdldHMoYil7dGhpcy4jZT1ifSN0PSh6Wih0aGlzLGwpLHpaKHRoaXMsZCxbXSkpO2dldCBhY3Rpb25zKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGFjdGlvbnMoYil7dGhpcy4jdD1ifXN0YXRpYyBzdHlsZXM9W0hlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAyNHB4OwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICB9CgogICAgICAuYm90dG9tLWJhciB7CiAgICAgICAgaGVpZ2h0OiAyNHB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiAwIDhweDsKICAgICAgICBnYXA6IDRweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXRlcnRpYXJ5KTsKICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICB9CgogICAgICAud2lkZ2V0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA0cHg7CiAgICAgICAgcGFkZGluZzogMnB4IDZweDsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xNXMgZWFzZSwgY29sb3IgMC4xNXMgZWFzZTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CgogICAgICAud2lkZ2V0OmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWhvdmVyKTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXNlY29uZGFyeSk7CiAgICAgIH0KCiAgICAgIC53aWRnZXQgZGVlcy1pY29uIHsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQoKICAgICAgLndpZGdldC1zZXBhcmF0b3IgewogICAgICAgIHdpZHRoOiAxcHg7CiAgICAgICAgaGVpZ2h0OiAxNHB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLXN0cm9uZyk7CiAgICAgICAgbWFyZ2luOiAwIDRweDsKICAgICAgfQoKICAgICAgLyogU3RhdHVzIGNvbG9ycyBtYXRjaGluZyBkZWVzLXdvcmtzcGFjZS1ib3R0b21iYXIgKi8KICAgICAgLndpZGdldC5hY3RpdmUgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxMCAxMDAlIDQ1JSkiLCJoc2woMjEwIDEwMCUgNjAlKSIpfTsKICAgICAgfQoKICAgICAgLndpZGdldC5zdWNjZXNzIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgxNDIgNzAlIDM1JSkiLCJoc2woMTQyIDcwJSA1MCUpIil9OwogICAgICB9CgogICAgICAud2lkZ2V0Lndhcm5pbmcgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDM4IDkyJSA0NSUpIiwiaHNsKDM4IDkyJSA1NSUpIil9OwogICAgICB9CgogICAgICAud2lkZ2V0LmVycm9yIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDcwJSA1MCUpIiwiaHNsKDAgNzAlIDYwJSkiKX07CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMgc3BpbiB7CiAgICAgICAgZnJvbSB7IHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9CiAgICAgICAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9CiAgICAgIH0KCiAgICAgIC5zcGlubmluZyB7CiAgICAgICAgYW5pbWF0aW9uOiBzcGluIDFzIGxpbmVhciBpbmZpbml0ZTsKICAgICAgfQoKICAgICAgLnNwYWNlciB7CiAgICAgICAgZmxleDogMTsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICB3aWR0aDogMjBweDsKICAgICAgICBoZWlnaHQ6IDIwcHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzIGVhc2U7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWhvdmVyKTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXNlY29uZGFyeSk7CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uLmRpc2FibGVkIHsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idXR0b24uZGlzYWJsZWQ6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtsZXQgYj10aGlzLndpZGdldHMuZmlsdGVyKGY9PmYucG9zaXRpb24hPT0icmlnaHQiKS5zb3J0KChmLHkpPT4oZi5vcmRlcnx8MCktKHkub3JkZXJ8fDApKSx2PXRoaXMud2lkZ2V0cy5maWx0ZXIoZj0+Zi5wb3NpdGlvbj09PSJyaWdodCIpLnNvcnQoKGYseSk9PihmLm9yZGVyfHwwKS0oeS5vcmRlcnx8MCkpLHg9dGhpcy5hY3Rpb25zLmZpbHRlcihmPT5mLnBvc2l0aW9uPT09ImxlZnQiKSxtPXRoaXMuYWN0aW9ucy5maWx0ZXIoZj0+Zi5wb3NpdGlvbiE9PSJsZWZ0Iik7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImJvdHRvbS1iYXIiPgogICAgICAgIDwhLS0gTGVmdCBhY3Rpb25zIC0tPgogICAgICAgICR7eC5tYXAoZj0+dGhpcy5yZW5kZXJBY3Rpb24oZikpfQoKICAgICAgICA8IS0tIExlZnQgd2lkZ2V0cyAtLT4KICAgICAgICAke2IubWFwKChmLHkpPT53YAogICAgICAgICAgJHt5PjB8fHgubGVuZ3RoPjA/d2A8ZGl2IGNsYXNzPSJ3aWRnZXQtc2VwYXJhdG9yIj48L2Rpdj5gOiIifQogICAgICAgICAgJHt0aGlzLnJlbmRlcldpZGdldChmKX0KICAgICAgICBgKX0KCiAgICAgICAgPGRpdiBjbGFzcz0ic3BhY2VyIj48L2Rpdj4KCiAgICAgICAgPCEtLSBSaWdodCB3aWRnZXRzIC0tPgogICAgICAgICR7di5tYXAoKGYseSk9PndgCiAgICAgICAgICAke3RoaXMucmVuZGVyV2lkZ2V0KGYpfQogICAgICAgICAgJHt5PHYubGVuZ3RoLTF8fG0ubGVuZ3RoPjA/d2A8ZGl2IGNsYXNzPSJ3aWRnZXQtc2VwYXJhdG9yIj48L2Rpdj5gOiIifQogICAgICAgIGApfQoKICAgICAgICA8IS0tIFJpZ2h0IGFjdGlvbnMgLS0+CiAgICAgICAgJHttLm1hcChmPT50aGlzLnJlbmRlckFjdGlvbihmKSl9CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJXaWRnZXQoYil7bGV0IHY9Yi5zdGF0dXMmJmIuc3RhdHVzIT09ImlkbGUiP2Iuc3RhdHVzOiIiLHg9Yi5pY29uTmFtZT9iLmljb25OYW1lLnN0YXJ0c1dpdGgoImx1Y2lkZToiKT9iLmljb25OYW1lOmBsdWNpZGU6JHtiLmljb25OYW1lfWA6IiI7cmV0dXJuIHdgCiAgICAgIDxkaXYKICAgICAgICBjbGFzcz0id2lkZ2V0ICR7dn0iCiAgICAgICAgdGl0bGU9IiR7Yi50b29sdGlwfHwiIn0iCiAgICAgICAgQGNsaWNrPSR7KCk9PmIub25DbGljaz8uKCl9CiAgICAgICAgQGNvbnRleHRtZW51PSR7bT0+dGhpcy5oYW5kbGVXaWRnZXRDb250ZXh0TWVudShtLGIpfQogICAgICA+CiAgICAgICAgJHt4P3dgCiAgICAgICAgICA8ZGVlcy1pY29uCiAgICAgICAgICAgIC5pY29uPSR7eH0KICAgICAgICAgICAgaWNvblNpemU9IjEyIgogICAgICAgICAgICBjbGFzcz0iJHtiLmxvYWRpbmc/InNwaW5uaW5nIjoiIn0iCiAgICAgICAgICA+PC9kZWVzLWljb24+CiAgICAgICAgYDoiIn0KICAgICAgICAke2IubGFiZWw/d2A8c3Bhbj4ke2IubGFiZWx9PC9zcGFuPmA6IiJ9CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJBY3Rpb24oYil7bGV0IHY9Yi5pY29uTmFtZS5zdGFydHNXaXRoKCJsdWNpZGU6Iik/Yi5pY29uTmFtZTpgbHVjaWRlOiR7Yi5pY29uTmFtZX1gO3JldHVybiB3YAogICAgICA8ZGl2CiAgICAgICAgY2xhc3M9ImFjdGlvbi1idXR0b24gJHtiLmRpc2FibGVkPyJkaXNhYmxlZCI6IiJ9IgogICAgICAgIHRpdGxlPSIke2IudG9vbHRpcHx8IiJ9IgogICAgICAgIEBjbGljaz0keygpPT4hYi5kaXNhYmxlZCYmYi5vbkNsaWNrPy4oKX0KICAgICAgPgogICAgICAgIDxkZWVzLWljb24KICAgICAgICAgIC5pY29uPSR7dn0KICAgICAgICAgIGljb25TaXplPSIxMiIKICAgICAgICA+PC9kZWVzLWljb24+CiAgICAgIDwvZGl2PgogICAgYH1hc3luYyBoYW5kbGVXaWRnZXRDb250ZXh0TWVudShiLHYpe2lmKCF2LmNvbnRleHRNZW51SXRlbXN8fHYuY29udGV4dE1lbnVJdGVtcy5sZW5ndGg9PT0wKXJldHVybjtiLnByZXZlbnREZWZhdWx0KCk7bGV0IHg9W107Zm9yKGxldCBtIG9mIHYuY29udGV4dE1lbnVJdGVtcyltLmRpdmlkZXI/eC5wdXNoKHtkaXZpZGVyOiEwfSk6eC5wdXNoKHtuYW1lOm0ubmFtZSxpY29uTmFtZTptLmljb25OYW1lLGFjdGlvbjppKGFzeW5jKCk9Pnthd2FpdCBtLmFjdGlvbigpfSwiYWN0aW9uIiksZGlzYWJsZWQ6bS5kaXNhYmxlZH0pO2F3YWl0IGthLm9wZW5Db250ZXh0TWVudVdpdGhPcHRpb25zKGIseCl9YWRkV2lkZ2V0KGIpe3RoaXMud2lkZ2V0cz10aGlzLndpZGdldHMuZmlsdGVyKHY9PnYuaWQhPT1iLmlkKSx0aGlzLndpZGdldHM9Wy4uLnRoaXMud2lkZ2V0cyxiXX11cGRhdGVXaWRnZXQoYix2KXt0aGlzLndpZGdldHM9dGhpcy53aWRnZXRzLm1hcCh4PT54LmlkPT09Yj97Li4ueCwuLi52fTp4KX1yZW1vdmVXaWRnZXQoYil7dGhpcy53aWRnZXRzPXRoaXMud2lkZ2V0cy5maWx0ZXIodj0+di5pZCE9PWIpfWdldFdpZGdldChiKXtyZXR1cm4gdGhpcy53aWRnZXRzLmZpbmQodj0+di5pZD09PWIpfWNsZWFyV2lkZ2V0cygpe3RoaXMud2lkZ2V0cz1bXX1hZGRBY3Rpb24oYil7dGhpcy5hY3Rpb25zPXRoaXMuYWN0aW9ucy5maWx0ZXIodj0+di5pZCE9PWIuaWQpLHRoaXMuYWN0aW9ucz1bLi4udGhpcy5hY3Rpb25zLGJdfXJlbW92ZUFjdGlvbihiKXt0aGlzLmFjdGlvbnM9dGhpcy5hY3Rpb25zLmZpbHRlcih2PT52LmlkIT09Yil9Y2xlYXJBY3Rpb25zKCl7dGhpcy5hY3Rpb25zPVtdfWNvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx6Wih0aGlzLHUpfXN0YXRpY3t6WihhLHQpfX07cmV0dXJuIGM9YX0pKCl9KTt2YXIgU2RhPWcoKCk9PntFZXQoKX0pO3ZhciBfZGEsTWRhPWcoKCk9PntwZSgpO19kYT1pKCgpPT53YAogIDxzdHlsZT4KICAgICR7SmAKICAgICAgLmRlbW8tYmFja2dyb3VuZCB7CiAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTUlKSIsImhzbCgwIDAlIDUlKSIpfTsKICAgICAgICBtaW4taGVpZ2h0OiAxMDB2aDsKICAgICAgfQogICAgICAKICAgICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgICBtYXgtd2lkdGg6IDEyMDBweDsKICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiAyNHB4OwogICAgICB9CiAgICAgIAogICAgICAuc2VjdGlvbi10aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAyNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgbWFyZ2luOiAzMnB4IDAgMTZweCAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOSUpIiwiaHNsKDAgMCUgOTUlKSIpfTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDI1ZW07CiAgICAgIH0KICAgICAgCiAgICAgIC5zZWN0aW9uLXRpdGxlOmZpcnN0LWNoaWxkIHsKICAgICAgICBtYXJnaW4tdG9wOiAwOwogICAgICB9CiAgICAgIAogICAgICAuZ3JpZC1sYXlvdXQgewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOwogICAgICAgIGdhcDogMjRweDsKICAgICAgfQogICAgICAKICAgICAgLmdyaWQtM2NvbCB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnIgMWZyOwogICAgICAgIGdhcDogMjRweDsKICAgICAgfQogICAgICAKICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDk2OHB4KSB7CiAgICAgICAgLmdyaWQtM2NvbCB7CiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKICAgICAgICB9CiAgICAgIH0KICAgICAgCiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgewogICAgICAgIC5ncmlkLWxheW91dCB7CiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKICAgICAgICB9CiAgICAgIH0KICAgICAgCiAgICAgIGNvZGUgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4OS44JSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgcGFkZGluZzogMnB4IDZweDsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICB9CiAgICBgfQogIDwvc3R5bGU+CiAgCiAgPGRpdiBjbGFzcz0iZGVtby1iYWNrZ3JvdW5kIj4KICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgICAgPGgyIGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5EZWZhdWx0IFBhbmVsczwvaDI+CiAgICAgIAogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiUGFuZWwgQ29tcG9uZW50In0gLnN1YnRpdGxlPSR7IlRoZSBkZWZhdWx0IHBhbmVsIHZhcmlhbnQgd2l0aCBzaGFkY24taW5zcGlyZWQgc3R5bGluZyJ9PgogICAgICAgIDxwPlRoZSBwYW5lbCBjb21wb25lbnQgYXV0b21hdGljYWxseSBmb2xsb3dzIHRoZSB0aGVtZSBhbmQgcHJvdmlkZXMgY29uc2lzdGVudCBzdHlsaW5nIGZvciBncm91cGVkIGNvbnRlbnQuPC9wPgogICAgICAgIDxwPkl0J3MgcGVyZmVjdCBmb3IgY3JlYXRpbmcgc2VjdGlvbnMgaW4geW91ciBhcHBsaWNhdGlvbiB3aXRoIHByb3BlciBzcGFjaW5nIGFuZCBib3JkZXJzLjwvcD4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGRpdiBjbGFzcz0iZ3JpZC1sYXlvdXQiPgogICAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJGZWF0dXJlIE92ZXJ2aWV3In0gLnN1YnRpdGxlPSR7IktleSBjYXBhYmlsaXRpZXMifT4KICAgICAgICAgIDxwPkdyaWQgbGF5b3V0cyB3b3JrIGdyZWF0IHdpdGggcGFuZWxzIGZvciBjcmVhdGluZyBkYXNoYm9hcmRzIGFuZCBmZWF0dXJlIHNlY3Rpb25zLjwvcD4KICAgICAgICAgIDxkZWVzLWJ1dHRvbj5MZWFybiBNb3JlPC9kZWVzLWJ1dHRvbj4KICAgICAgICA8L2RlZXMtcGFuZWw+CiAgICAgICAgCiAgICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IlF1aWNrIEFjdGlvbnMifSAuc3VidGl0bGU9JHsiQ29tbW9uIHRhc2tzIn0+CiAgICAgICAgICA8cD5FYWNoIHBhbmVsIG1haW50YWlucyBjb25zaXN0ZW50IHNwYWNpbmcgYW5kIHN0eWxpbmcgYWNyb3NzIHlvdXIgYXBwbGljYXRpb24uPC9wPgogICAgICAgICAgPGRlZXMtYnV0dG9uPkdldCBTdGFydGVkPC9kZWVzLWJ1dHRvbj4KICAgICAgICA8L2RlZXMtcGFuZWw+CiAgICAgIDwvZGl2PgogICAgICAKICAgICAgPGgyIGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5QYW5lbCBWYXJpYW50czwvaDI+CiAgICAgIAogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiRGVmYXVsdCBWYXJpYW50In0gLnZhcmlhbnQ9JHsiZGVmYXVsdCJ9PgogICAgICAgIDxwPlRoZSBkZWZhdWx0IHZhcmlhbnQgaGFzIGEgd2hpdGUgYmFja2dyb3VuZCwgc3VidGxlIGJvcmRlciwgYW5kIG1pbmltYWwgc2hhZG93LiBJdCdzIHRoZSBzdGFuZGFyZCBjaG9pY2UgZm9yIG1vc3QgY29udGVudC48L3A+CiAgICAgICAgPHA+VXNlIDxjb2RlPnZhcmlhbnQ9ImRlZmF1bHQiPC9jb2RlPiBvciBvbWl0IHRoZSB2YXJpYW50IHByb3BlcnR5LjwvcD4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7Ik91dGxpbmUgVmFyaWFudCJ9IC5zdWJ0aXRsZT0keyJUcmFuc3BhcmVudCBiYWNrZ3JvdW5kIHdpdGggYm9yZGVyIn0gLnZhcmlhbnQ9JHsib3V0bGluZSJ9PgogICAgICAgIDxwPlRoZSBvdXRsaW5lIHZhcmlhbnQgcmVtb3ZlcyB0aGUgYmFja2dyb3VuZCBjb2xvciBhbmQgc2hhZG93LCBrZWVwaW5nIG9ubHkgdGhlIGJvcmRlci48L3A+CiAgICAgICAgPHA+VXNlIDxjb2RlPnZhcmlhbnQ9Im91dGxpbmUiPC9jb2RlPiBmb3IgYSBsaWdodGVyIHZpc3VhbCB3ZWlnaHQuPC9wPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICAgIAogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiR2hvc3QgVmFyaWFudCJ9IC5zdWJ0aXRsZT0keyJNaW5pbWFsIHN0eWxpbmcgZm9yIHN1YnRsZSBzZWN0aW9ucyJ9IC52YXJpYW50PSR7Imdob3N0In0+CiAgICAgICAgPHA+VGhlIGdob3N0IHZhcmlhbnQgaGFzIG5vIGJvcmRlciBvciBiYWNrZ3JvdW5kIGJ5IGRlZmF1bHQsIG9ubHkgc2hvd2luZyBhIHN1YnRsZSBiYWNrZ3JvdW5kIG9uIGhvdmVyLjwvcD4KICAgICAgICA8cD5Vc2UgPGNvZGU+dmFyaWFudD0iZ2hvc3QiPC9jb2RlPiBmb3IgdGhlIG1vc3QgbWluaW1hbCBhcHBlYXJhbmNlLjwvcD4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGgyIGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5QYW5lbCBTaXplczwvaDI+CiAgICAgIAogICAgICA8ZGl2IGNsYXNzPSJncmlkLTNjb2wiPgogICAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJTbWFsbCBQYW5lbCJ9IC5zaXplPSR7InNtIn0+CiAgICAgICAgICA8cD5Db21wYWN0IHBhZGRpbmcgZm9yIGRlbnNlIGxheW91dHMuPC9wPgogICAgICAgICAgPHA+VXNlIDxjb2RlPnNpemU9InNtIjwvY29kZT48L3A+CiAgICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAgIAogICAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJNZWRpdW0gUGFuZWwifSAuc2l6ZT0keyJtZCJ9PgogICAgICAgICAgPHA+RGVmYXVsdCBzaXplIHdpdGggYmFsYW5jZWQgc3BhY2luZy48L3A+CiAgICAgICAgICA8cD5Vc2UgPGNvZGU+c2l6ZT0ibWQiPC9jb2RlPiBvciBvbWl0LjwvcD4KICAgICAgICA8L2RlZXMtcGFuZWw+CiAgICAgICAgCiAgICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IkxhcmdlIFBhbmVsIn0gLnNpemU9JHsibGcifT4KICAgICAgICAgIDxwPkdlbmVyb3VzIHBhZGRpbmcgZm9yIHByb21pbmVudCBzZWN0aW9ucy48L3A+CiAgICAgICAgICA8cD5Vc2UgPGNvZGU+c2l6ZT0ibGciPC9jb2RlPjwvcD4KICAgICAgICA8L2RlZXMtcGFuZWw+CiAgICAgIDwvZGl2PgogICAgICAKICAgICAgPGgyIGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5Db21wbGV4IEV4YW1wbGVzPC9oMj4KICAgICAgCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJGb3JtIEV4YW1wbGUifSAuc3VidGl0bGU9JHsiUGFuZWxzIHdvcmsgZ3JlYXQgZm9yIG9yZ2FuaXppbmcgZm9ybSBzZWN0aW9ucyJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0IC5sYWJlbD0keyJQcm9qZWN0IE5hbWUifSAucmVxdWlyZWQ9JHshMH0+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0IC5sYWJlbD0keyJEZXNjcmlwdGlvbiJ9IC5pbnB1dFR5cGU9JHsidGV4dGFyZWEifT48L2RlZXMtaW5wdXQtdGV4dD4KICAgICAgICAgIDxkZWVzLWlucHV0LWRyb3Bkb3duIAogICAgICAgICAgICAubGFiZWw9JHsiQ2F0ZWdvcnkifSAKICAgICAgICAgICAgLm9wdGlvbnM9JHtbe29wdGlvbjoiV2ViIERldmVsb3BtZW50IixrZXk6IndlYiJ9LHtvcHRpb246Ik1vYmlsZSBBcHAiLGtleToibW9iaWxlIn0se29wdGlvbjoiRGVza3RvcCBTb2Z0d2FyZSIsa2V5OiJkZXNrdG9wIn1dfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1kcm9wZG93bj4KICAgICAgICAgIDxkZWVzLWZvcm0tc3VibWl0PkNyZWF0ZSBQcm9qZWN0PC9kZWVzLWZvcm0tc3VibWl0PgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICAgIAogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiTmVzdGVkIFBhbmVscyJ9IC5zdWJ0aXRsZT0keyJQYW5lbHMgY2FuIGJlIG5lc3RlZCBmb3IgaGllcmFyY2hpY2FsIG9yZ2FuaXphdGlvbiJ9PgogICAgICAgIDxwPllvdSBjYW4gbmVzdCBwYW5lbHMgdG8gY3JlYXRlIG1vcmUgY29tcGxleCBsYXlvdXRzOjwvcD4KICAgICAgICAKICAgICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiTmVzdGVkIFBhbmVsIDEifSAudmFyaWFudD0keyJvdXRsaW5lIn0gLnNpemU9JHsic20ifT4KICAgICAgICAgIDxwPlRoaXMgaXMgYSBuZXN0ZWQgcGFuZWwgd2l0aCBvdXRsaW5lIHZhcmlhbnQgYW5kIHNtYWxsIHNpemUuPC9wPgogICAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgICAKICAgICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiTmVzdGVkIFBhbmVsIDIifSAudmFyaWFudD0keyJnaG9zdCJ9IC5zaXplPSR7InNtIn0+CiAgICAgICAgICA8cD5UaGlzIGlzIGFub3RoZXIgbmVzdGVkIHBhbmVsIHdpdGggZ2hvc3QgdmFyaWFudC48L3A+CiAgICAgICAgPC9kZWVzLXBhbmVsPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICAgIAogICAgICA8aDIgY2xhc3M9InNlY3Rpb24tdGl0bGUiPlVudGl0bGVkIFBhbmVsczwvaDI+CiAgICAgIAogICAgICA8ZGVlcy1wYW5lbD4KICAgICAgICA8cD5QYW5lbHMgd29yayBncmVhdCBldmVuIHdpdGhvdXQgYSB0aXRsZSBmb3Igc2ltcGxlIGNvbnRlbnQgZ3JvdXBpbmcuPC9wPgogICAgICAgIDxwPlRoZXkgcHJvdmlkZSB2aXN1YWwgc2VwYXJhdGlvbiBhbmQgY29uc2lzdGVudCBwYWRkaW5nIHRocm91Z2hvdXQgeW91ciBpbnRlcmZhY2UuPC9wPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICAgIAogICAgICA8ZGl2IGNsYXNzPSJncmlkLWxheW91dCI+CiAgICAgICAgPGRlZXMtcGFuZWwgLnZhcmlhbnQ9JHsib3V0bGluZSJ9PgogICAgICAgICAgPGg0IHN0eWxlPSJtYXJnaW4tdG9wOiAwOyI+Q3VzdG9tIENvbnRlbnQ8L2g0PgogICAgICAgICAgPHA+WW91IGNhbiBhZGQgeW91ciBvd24gaGVhZGluZ3MgYW5kIHN0cnVjdHVyZSB3aXRoaW4gdW50aXRsZWQgcGFuZWxzLjwvcD4KICAgICAgICA8L2RlZXMtcGFuZWw+CiAgICAgICAgCiAgICAgICAgPGRlZXMtcGFuZWwgLnZhcmlhbnQ9JHsiZ2hvc3QifT4KICAgICAgICAgIDxoNCBzdHlsZT0ibWFyZ2luLXRvcDogMDsiPk1pbmltYWwgU3R5bGU8L2g0PgogICAgICAgICAgPHA+R2hvc3QgcGFuZWxzIHdpdGhvdXQgdGl0bGVzIGNyZWF0ZSB2ZXJ5IHN1YnRsZSBjb250ZW50IHNlY3Rpb25zLjwvcD4KICAgICAgICA8L2RlZXMtcGFuZWw+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CmAsImRlbW9GdW5jIil9KTt2YXIgeVdhLHdXYSxQZXQsaW5lLE5hLCQ4LGtXYSxTV2EsemRhLF9XYSxNV2EsUVhyLEpYcixDcj1nKCgpPT57cGUoKTt5V2E9IkdlaXN0IFNhbnMiLHdXYT0iSW50ZWwgT25lIE1vbm8iLFBldD1gJyR7eVdhfScsIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgJ1JvYm90bycsICdPeHlnZW4nLCAnVWJ1bnR1JywgJ0NhbnRhcmVsbCcsICdGaXJhIFNhbnMnLCAnRHJvaWQgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWZgLGluZT1gJyR7d1dhfScsICdTRiBNb25vJywgJ01vbmFjbycsICdJbmNvbnNvbGF0YScsICdGaXJhIENvZGUnLCAnRmlyYSBNb25vJywgJ0Ryb2lkIFNhbnMgTW9ubycsICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZWAsTmE9YWEoUGV0KSwkOD1hYShpbmUpLGtXYT0iQ2FsIFNhbnMiLFNXYT1gJyR7a1dhfScsICR7UGV0fWAsemRhPWFhKFNXYSksX1dhPSJSb2JvdG8gU2xhYiIsTVdhPWAnJHtfV2F9JywgR2VvcmdpYSwgc2VyaWZgLFFYcj1hYShNV2EpLEpYcj1hYShgCiAgZm9udC1mYW1pbHk6ICR7UGV0fTsKICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOwogIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogJ2N2MTEnLCAndG51bScsICdjdjA1JyAxOwpgKX0pO3ZhciBvdixXMSxDZGEsZm89ZygoKT0+e3BlKCk7TWRhKCk7Q3IoKTtwdCgpO292PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxXMT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sQ2RhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1wYW5lbCIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdO3ZhciBOPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzUGFuZWwiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgQz10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZ30pXSxwPVtMKHt0eXBlOlN0cmluZ30pXSxjPVtMKHt0eXBlOlN0cmluZ30pXSx4PVtMKHt0eXBlOlN0cmluZ30pXSx5PVtMKHthdHRyaWJ1dGU6ITF9KV0sb3YodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0aXRsZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4idGl0bGUiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy50aXRsZSwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLnRpdGxlPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sbyxsKSxvdih0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InN1YnRpdGxlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJzdWJ0aXRsZSJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLnN1YnRpdGxlLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uc3VidGl0bGU9T30sInNldCIpfSxtZXRhZGF0YTpDfSxkLHUpLG92KHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidmFyaWFudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4idmFyaWFudCJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLnZhcmlhbnQsImdldCIpLHNldDppKChfLE8pPT57Xy52YXJpYW50PU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sYix2KSxvdih0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNpemUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+InNpemUiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5zaXplLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uc2l6ZT1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LG0sZiksb3YodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJydW5BZnRlclJlbmRlciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4icnVuQWZ0ZXJSZW5kZXIiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5ydW5BZnRlclJlbmRlciwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLnJ1bkFmdGVyUmVuZGVyPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sTSx6KSxvdihudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpDfSxudWxsLHQpLE49YT1lLnZhbHVlLEMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Q30pfXN0YXRpYyBkZW1vPV9kYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIkxheW91dCJdOyNlPVcxKHRoaXMsbywiIik7Z2V0IHRpdGxlKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHRpdGxlKEMpe3RoaXMuI2U9Q30jdD0oVzEodGhpcyxsKSxXMSh0aGlzLGQsIiIpKTtnZXQgc3VidGl0bGUoKXtyZXR1cm4gdGhpcy4jdH1zZXQgc3VidGl0bGUoQyl7dGhpcy4jdD1DfSNhPShXMSh0aGlzLHUpLFcxKHRoaXMsYiwiZGVmYXVsdCIpKTtnZXQgdmFyaWFudCgpe3JldHVybiB0aGlzLiNhfXNldCB2YXJpYW50KEMpe3RoaXMuI2E9Q30jcz0oVzEodGhpcyx2KSxXMSh0aGlzLG0sIm1kIikpO2dldCBzaXplKCl7cmV0dXJuIHRoaXMuI3N9c2V0IHNpemUoQyl7dGhpcy4jcz1DfSNpPShXMSh0aGlzLGYpLFcxKHRoaXMsTSx2b2lkIDApKTtnZXQgcnVuQWZ0ZXJSZW5kZXIoKXtyZXR1cm4gdGhpcy4jaX1zZXQgcnVuQWZ0ZXJSZW5kZXIoQyl7dGhpcy4jaT1DfXN0YXRpYyBzdHlsZXM9W0hlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICAvKiBUT0RPOiBNaWdyYXRlIGhhcmRjb2RlZCB2YWx1ZXMgdG8gLS1kZWVzLSogQ1NTIHZhcmlhYmxlcyAqLwogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgZm9udC1mYW1pbHk6ICR7TmF9OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxMDAlKSIsImhzbCgwIDAlIDMuOSUpIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4OS44JSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTsKICAgICAgfQoKICAgICAgLyogVmFyaWFudDogZGVmYXVsdCAqLwogICAgICA6aG9zdChbdmFyaWFudD0iZGVmYXVsdCJdKSB7CiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggMnB4IDAgaHNsKDAgMCUgMCUgLyAwLjA1KTsKICAgICAgfQoKICAgICAgLyogVmFyaWFudDogb3V0bGluZSAqLwogICAgICA6aG9zdChbdmFyaWFudD0ib3V0bGluZSJdKSB7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm94LXNoYWRvdzogbm9uZTsKICAgICAgfQoKICAgICAgLyogVmFyaWFudDogZ2hvc3QgKi8KICAgICAgOmhvc3QoW3ZhcmlhbnQ9Imdob3N0Il0pIHsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwogICAgICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgfQoKICAgICAgLyogU2l6ZSB2YXJpYXRpb25zICovCiAgICAgIDpob3N0KFtzaXplPSJzbSJdKSB7CiAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgfQoKICAgICAgOmhvc3QoW3NpemU9ImxnIl0pIHsKICAgICAgICBwYWRkaW5nOiAzMnB4OwogICAgICB9CgogICAgICAuaGVhZGVyIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICB9CgogICAgICAuaGVhZGVyOmVtcHR5IHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CgogICAgICAudGl0bGUgewogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDklKSIsImhzbCgwIDAlIDk1JSkiKX07CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyNWVtOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICAgIH0KCiAgICAgIC8qIFRpdGxlIHNpemUgdmFyaWF0aW9ucyAqLwogICAgICA6aG9zdChbc2l6ZT0ic20iXSkgLnRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgIH0KCiAgICAgIDpob3N0KFtzaXplPSJsZyJdKSAudGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMjBweDsKICAgICAgfQoKICAgICAgLnN1YnRpdGxlIHsKICAgICAgICBtYXJnaW46IDRweCAwIDAgMDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNTYuOSUpIiwiaHNsKDIxNSAyMC4yJSA1NS4xJSkiKX07CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAwNmVtOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICAgIH0KCiAgICAgIC8qIFN1YnRpdGxlIHNpemUgdmFyaWF0aW9ucyAqLwogICAgICA6aG9zdChbc2l6ZT0ic20iXSkgLnN1YnRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgIH0KCiAgICAgIDpob3N0KFtzaXplPSJsZyJdKSAuc3VidGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTVweDsKICAgICAgICBtYXJnaW4tdG9wOiA2cHg7CiAgICAgIH0KCiAgICAgIC5jb250ZW50IHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuMyAyNSUgMjYuNyUpIiwiaHNsKDIxNy45IDEwLjYlIDg0LjklKSIpfTsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgfQoKICAgICAgLyogQ29udGVudCBzaXplIHZhcmlhdGlvbnMgKi8KICAgICAgOmhvc3QoW3NpemU9InNtIl0pIC5jb250ZW50IHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgIH0KCiAgICAgIDpob3N0KFtzaXplPSJsZyJdKSAuY29udGVudCB7CiAgICAgICAgZm9udC1zaXplOiAxNXB4OwogICAgICB9CgogICAgICAvKiBSZW1vdmUgbWFyZ2lucyBmcm9tIGZpcnN0IGFuZCBsYXN0IGNoaWxkcmVuICovCiAgICAgIC5jb250ZW50IDo6c2xvdHRlZCgqOmZpcnN0LWNoaWxkKSB7CiAgICAgICAgbWFyZ2luLXRvcDogMDsKICAgICAgfQoKICAgICAgLmNvbnRlbnQgOjpzbG90dGVkKCo6bGFzdC1jaGlsZCkgewogICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgIH0KCiAgICAgIC8qIEludGVyYWN0aXZlIHN0YXRlcyBmb3IgZGVmYXVsdCB2YXJpYW50ICovCiAgICAgIDpob3N0KFt2YXJpYW50PSJkZWZhdWx0Il06aG92ZXIpIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA3OS44JSkiLCJoc2woMCAwJSAyMC45JSkiKX07CiAgICAgICAgYm94LXNoYWRvdzogMCA0cHggNnB4IC0xcHggaHNsKDAgMCUgMCUgLyAwLjEpLCAwIDJweCA0cHggLTJweCBoc2woMCAwJSAwJSAvIDAuMSk7CiAgICAgIH0KCiAgICAgIC8qIEludGVyYWN0aXZlIHN0YXRlcyBmb3Igb3V0bGluZSB2YXJpYW50ICovCiAgICAgIDpob3N0KFt2YXJpYW50PSJvdXRsaW5lIl06aG92ZXIpIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA3OS44JSkiLCJoc2woMCAwJSAyMC45JSkiKX07CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk4JSkiLCJoc2woMCAwJSA3LjglKSIpfTsKICAgICAgfQoKICAgICAgLyogSW50ZXJhY3RpdmUgc3RhdGVzIGZvciBnaG9zdCB2YXJpYW50ICovCiAgICAgIDpob3N0KFt2YXJpYW50PSJnaG9zdCJdOmhvdmVyKSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk1LjElKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgfQoKICAgICAgLyogRm9jdXMgc3RhdGVzICovCiAgICAgIDpob3N0KDpmb2N1cy13aXRoaW4pIHsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMjIuMiA0Ny40JSA1MS4yJSkiLCJoc2woMjE3LjIgOTEuMiUgNTkuOCUpIil9OwogICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDUxLjIlIC8gMC4xKSIsImhzbCgyMTcuMiA5MS4yJSA1OS44JSAvIDAuMSkiKX07CiAgICAgIH0KCiAgICAgIC8qIE5lc3RlZCBwYW5lbHMgc3BhY2luZyAqLwogICAgICA6OnNsb3R0ZWQoZGVlcy1wYW5lbCkgewogICAgICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICAgIH0KCiAgICAgIDo6c2xvdHRlZChkZWVzLXBhbmVsOmZpcnN0LWNoaWxkKSB7CiAgICAgICAgbWFyZ2luLXRvcDogMDsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgJHt0aGlzLnRpdGxlP3dgPGgzIGNsYXNzPSJ0aXRsZSI+JHt0aGlzLnRpdGxlfTwvaDM+YDoiIn0KICAgICAgICAke3RoaXMuc3VidGl0bGU/d2A8cCBjbGFzcz0ic3VidGl0bGUiPiR7dGhpcy5zdWJ0aXRsZX08L3A+YDoiIn0KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgogICAgICAgIDxzbG90Pjwvc2xvdD4KICAgICAgPC9kaXY+CiAgICBgfWFzeW5jIGZpcnN0VXBkYXRlZCgpe3RoaXMucnVuQWZ0ZXJSZW5kZXImJmF3YWl0IHRoaXMucnVuQWZ0ZXJSZW5kZXIodGhpcyl9Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLFcxKHRoaXMseil9c3RhdGlje1cxKGEsdCl9fTtyZXR1cm4gTj1hfSkoKX0pO3ZhciBUZGEsSWV0LCRkYSxEZGE9ZygoKT0+e3BlKCk7SXQoKTtmbygpO0lldD1pKHM9PkFycmF5LmZyb20oe2xlbmd0aDpzfSwoZSx0KT0+KHtpZDp0LHVzYWdlOk1hdGgucm91bmQoTWF0aC5yYW5kb20oKSoxMDApLGxhYmVsOmAke3R9YH0pKSwiZ2VuZXJhdGVDcHVDb3JlcyIpLCRkYT1pKCgpPT53KFRkYXx8KFRkYT1iYyhbYAogIDxkZWVzLWRlbW93cmFwcGVyPgogICAgPHN0eWxlPgogICAgICBgLGAKICAgIDwvc3R5bGU+CiAgICAKICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPWAsIiAuc3VidGl0bGU9IixgPgogICAgICAgIDxkZWVzLXN0YXRzZ3JpZAogICAgICAgICAgLnRpbGVzPWAsYAogICAgICAgICAgLmdyaWRBY3Rpb25zPWAsYAogICAgICAgICAgLm1pblRpbGVXaWR0aD1gLGAKICAgICAgICAgIC5nYXA9YCxgCiAgICAgICAgPjwvZGVlcy1zdGF0c2dyaWQ+CiAgICAgICAgCiAgICAgICAgPGRpdiBpZD0iYWN0aW9uLW91dHB1dCIgc3R5bGU9Im1hcmdpbi10b3A6IDE2cHg7IHBhZGRpbmc6IDEycHg7IGJhY2tncm91bmQ6IGAsIjsgYm9yZGVyLXJhZGl1czogNnB4OyBmb250LXNpemU6IDE0cHg7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IGNvbG9yOiAiLGA7Ij4KICAgICAgICAgIDxlbT5DbGljayBvbiB0aWxlIGFjdGlvbnMgb3IgZ3JpZCBhY3Rpb25zIHRvIHNlZSB0aGUgcmVzdWx0Li4uPC9lbT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPWAsIiAuc3VidGl0bGU9IixgPgogICAgICAgIDxkZWVzLXN0YXRzZ3JpZAogICAgICAgICAgLnRpbGVzPWAsYAogICAgICAgICAgLm1pblRpbGVXaWR0aD1gLGAKICAgICAgICAgIC5nYXA9YCxgCiAgICAgICAgPjwvZGVlcy1zdGF0c2dyaWQ+CiAgICAgICAgCiAgICAgICAgPGRpdiBjbGFzcz0idGlsZS1jb25maWciPgogICAgICAgICAgPGRpdiBjbGFzcz0iY29uZmlnLXNlY3Rpb24iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb25maWctdGl0bGUiPkNvbmZpZ3VyYXRpb24gT3B0aW9uczwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb25maWctZGVzY3JpcHRpb24iPgogICAgICAgICAgICAgIEVhY2ggdGlsZSB0eXBlIHN1cHBvcnRzIGRpZmZlcmVudCBwcm9wZXJ0aWVzOgogICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luOiA4cHggMDsgcGFkZGluZy1sZWZ0OiAyMHB4OyI+CiAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5OdW1iZXI6PC9zdHJvbmc+IHZhbHVlLCB1bml0LCBjb2xvciwgZGVzY3JpcHRpb248L2xpPgogICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+R2F1Z2U6PC9zdHJvbmc+IHZhbHVlLCB1bml0LCBnYXVnZU9wdGlvbnMgKG1pbiwgbWF4LCB0aHJlc2hvbGRzKTwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5QZXJjZW50YWdlOjwvc3Ryb25nPiB2YWx1ZSAoMC0xMDApLCBjb2xvciwgZGVzY3JpcHRpb248L2xpPgogICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+VHJlbmQ6PC9zdHJvbmc+IHZhbHVlLCB1bml0LCB0cmVuZERhdGEgYXJyYXksIGRlc2NyaXB0aW9uPC9saT4KICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPlRleHQ6PC9zdHJvbmc+IHZhbHVlIChzdHJpbmcpLCBjb2xvciwgZGVzY3JpcHRpb248L2xpPgogICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT1gLCIgLnN1YnRpdGxlPSIsYD4KICAgICAgICA8aDQgc3R5bGU9Im1hcmdpbjogMCAwIDE2cHggMDsgZm9udC1zaXplOiAxNnB4OyBmb250LXdlaWdodDogNjAwOyI+Q29tcGFjdCBMYXlvdXQgKDE4MHB4IHRpbGVzKTwvaDQ+CiAgICAgICAgPGRlZXMtc3RhdHNncmlkCiAgICAgICAgICAudGlsZXM9YCxgCiAgICAgICAgICAubWluVGlsZVdpZHRoPWAsYAogICAgICAgICAgLmdhcD1gLGAKICAgICAgICA+PC9kZWVzLXN0YXRzZ3JpZD4KICAgICAgICAKICAgICAgICA8aDQgc3R5bGU9Im1hcmdpbjogMjRweCAwIDE2cHggMDsgZm9udC1zaXplOiAxNnB4OyBmb250LXdlaWdodDogNjAwOyI+U3BhY2lvdXMgTGF5b3V0ICgzMjBweCB0aWxlcyk8L2g0PgogICAgICAgIDxkZWVzLXN0YXRzZ3JpZAogICAgICAgICAgLnRpbGVzPWAsYAogICAgICAgICAgLm1pblRpbGVXaWR0aD1gLGAKICAgICAgICAgIC5nYXA9YCxgCiAgICAgICAgPjwvZGVlcy1zdGF0c2dyaWQ+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT1gLCIgLnN1YnRpdGxlPSIsYD4KICAgICAgICA8ZGVlcy1zdGF0c2dyaWQKICAgICAgICAgIGlkPSJjcHUtY29yZXMtZ3JpZCIKICAgICAgICAgIC50aWxlcz1gLGAKICAgICAgICAgIC5ncmlkQWN0aW9ucz1gLGAKICAgICAgICAgIC5taW5UaWxlV2lkdGg9YCxgCiAgICAgICAgICAuZ2FwPWAsYAogICAgICAgID48L2RlZXMtc3RhdHNncmlkPgogICAgICA8L2RlZXMtcGFuZWw+CgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9YCwiIC5zdWJ0aXRsZT0iLGA+CiAgICAgICAgPGRlZXMtc3RhdHNncmlkCiAgICAgICAgICBpZD0iaW50ZXJhY3RpdmUtZ3JpZCIKICAgICAgICAgIC50aWxlcz1gLGAKICAgICAgICAgIC5ncmlkQWN0aW9ucz1gLGAKICAgICAgICAgIC5taW5UaWxlV2lkdGg9YCxgCiAgICAgICAgICAuZ2FwPWAsYAogICAgICAgID48L2RlZXMtc3RhdHNncmlkPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICAgIAogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9YCwiIC5zdWJ0aXRsZT0iLGA+CiAgICAgICAgPGRpdiBjbGFzcz0iY29kZS1ibG9jayI+YCxgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT1gLCIgLnN1YnRpdGxlPSIsYD4KICAgICAgICA8ZGVlcy1zdGF0c2dyaWQKICAgICAgICAgIC50aWxlcz1gLGAKICAgICAgICAgIC5taW5UaWxlV2lkdGg9YCxgCiAgICAgICAgICAuZ2FwPWAsYAogICAgICAgID48L2RlZXMtc3RhdHNncmlkPgoKICAgICAgICA8ZGl2IGNsYXNzPSJ0aWxlLWNvbmZpZyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb25maWctc2VjdGlvbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbmZpZy10aXRsZSI+UGFydGl0aW9uIFRpbGUgUHJvcGVydGllczwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb25maWctZGVzY3JpcHRpb24iPgogICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luOiA4cHggMDsgcGFkZGluZy1sZWZ0OiAyMHB4OyI+CiAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5wYXJ0aXRpb25EYXRhLnVzZWQ6PC9zdHJvbmc+IFVzZWQgc3BhY2UgaW4gYnl0ZXMgKGF1dG8tZm9ybWF0dGVkKTwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5wYXJ0aXRpb25EYXRhLnRvdGFsOjwvc3Ryb25nPiBUb3RhbCBjYXBhY2l0eSBpbiBieXRlczwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5wYXJ0aXRpb25EYXRhLmZpbGVzeXN0ZW06PC9zdHJvbmc+IEZpbGVzeXN0ZW0gdHlwZSAoZXh0NCwgeGZzLCBudGZzKTwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5wYXJ0aXRpb25EYXRhLm1vdW50UG9pbnQ6PC9zdHJvbmc+IE1vdW50IHBvaW50IHBhdGggKG9wdGlvbmFsKTwvbGk+CiAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICBDb2xvciB0aHJlc2hvbGRzOiBOb3JtYWwgKCZsdDs3NSUpLCBXYXJuaW5nICg3NS05MCUpLCBDcml0aWNhbCAoJmd0OzkwJSkKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbmZpZy1zZWN0aW9uIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29uZmlnLXRpdGxlIj5EaXNrIFRpbGUgUHJvcGVydGllczwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb25maWctZGVzY3JpcHRpb24iPgogICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luOiA4cHggMDsgcGFkZGluZy1sZWZ0OiAyMHB4OyI+CiAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5kaXNrRGF0YS5jYXBhY2l0eTo8L3N0cm9uZz4gVG90YWwgY2FwYWNpdHkgaW4gYnl0ZXM8L2xpPgogICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+ZGlza0RhdGEubW9kZWw6PC9zdHJvbmc+IERpc2sgbW9kZWwgbmFtZSAob3B0aW9uYWwpPC9saT4KICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPmRpc2tEYXRhLnR5cGU6PC9zdHJvbmc+IERpc2sgdHlwZTogJ3NzZCcsICdoZGQnLCBvciAnbnZtZSc8L2xpPgogICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+ZGlza0RhdGEuaW9wczo8L3N0cm9uZz4gUmVhZC93cml0ZSBJT1BTIChvcHRpb25hbCk8L2xpPgogICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+ZGlza0RhdGEuaGVhbHRoOjwvc3Ryb25nPiBIZWFsdGggcGVyY2VudGFnZSAwLTEwMCAob3B0aW9uYWwpPC9saT4KICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgIEhlYWx0aCB0aHJlc2hvbGRzOiBHb29kICg3MC0xMDAlKSwgV2FybmluZyAoMzAtNzAlKSwgQ3JpdGljYWwgKCZsdDszMCUpCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGl2PgoKICAgIDxzY3JpcHQ+CiAgICAgIC8vIENsZWFudXAgbGl2ZSB1cGRhdGVzIG9uIHBhZ2UgdW5sb2FkCiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCAoKSA9PiB7CiAgICAgICAgaWYgKCh3aW5kb3cgYXMgYW55KS5saXZlVXBkYXRlSW50ZXJ2YWwpIHsKICAgICAgICAgIGNsZWFySW50ZXJ2YWwoKHdpbmRvdyBhcyBhbnkpLmxpdmVVcGRhdGVJbnRlcnZhbCk7CiAgICAgICAgfQogICAgICB9KTsKICAgIDxcL3NjcmlwdD4KICA8L2RlZXMtZGVtb3dyYXBwZXI+CiAgYF0pKSxKYAogICAgICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgIGdhcDogMjRweDsKICAgICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgICBtYXgtd2lkdGg6IDE0MDBweDsKICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBkZWVzLXBhbmVsIHsKICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGRlZXMtcGFuZWw6bGFzdC1jaGlsZCB7CiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAudGlsZS1jb25maWcgewogICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMzAwcHgsIDFmcikpOwogICAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgICAgbWFyZ2luLXRvcDogMTZweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmNvbmZpZy1zZWN0aW9uIHsKICAgICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxMCA0MCUgOTYuMSUpIiwiaHNsKDIxNSAyMC4yJSAxNi44JSkiKX07CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5jb25maWctdGl0bGUgewogICAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS4zIDI1JSA4LjglKSIsImhzbCgyMTAgNDAlIDk4JSkiKX07CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5jb25maWctZGVzY3JpcHRpb24gewogICAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNTYuOSUpIiwiaHNsKDIxNSAyMC4yJSA1NS4xJSkiKX07CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5jb2RlLWJsb2NrIHsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDQwJSA5Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDExLjglKSIpfTsKICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMjE0LjMgMzEuOCUgOTEuNCUpIiwiaHNsKDIxNSAyMC4yJSAxNi44JSkiKX07CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICAgICAgICB3aGl0ZS1zcGFjZTogcHJlOwogICAgICAgIH0KICAgICAgYCwiMS4gQ29tcHJlaGVuc2l2ZSBEYXNoYm9hcmQiLCJGdWxsLWZlYXR1cmVkIHN0YXRzIGdyaWQgd2l0aCB2YXJpb3VzIHRpbGUgdHlwZXMsIGFjdGlvbnMsIGFuZCBMdWNpZGUgaWNvbnMiLFt7aWQ6InJldmVudWUiLHRpdGxlOiJUb3RhbCBSZXZlbnVlIix2YWx1ZToxMjU0MjAsdW5pdDoiJCIsdHlwZToibnVtYmVyIixpY29uOiJsdWNpZGU6ZG9sbGFyLXNpZ24iLGRlc2NyaXB0aW9uOiIrMTIuNSUgZnJvbSBsYXN0IG1vbnRoIixhY3Rpb25zOlt7bmFtZToiVmlldyBEZXRhaWxzIixpY29uTmFtZToibHVjaWRlOnRyZW5kaW5nLXVwIixhY3Rpb246aShhc3luYygpPT57bGV0IHM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2FjdGlvbi1vdXRwdXQiKTtzJiYocy50ZXh0Q29udGVudD0iVmlld2luZyByZXZlbnVlIGRldGFpbHM6ICQxMjUsNDIwICgrMTIuNSUpIil9LCJhY3Rpb24iKX0se25hbWU6IkV4cG9ydCBEYXRhIixpY29uTmFtZToibHVjaWRlOmRvd25sb2FkIixhY3Rpb246aShhc3luYygpPT57bGV0IHM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2FjdGlvbi1vdXRwdXQiKTtzJiYocy50ZXh0Q29udGVudD0iRXhwb3J0aW5nIHJldmVudWUgZGF0YSB0byBDU1YuLi4iKX0sImFjdGlvbiIpfV19LHtpZDoidXNlcnMiLHRpdGxlOiJBY3RpdmUgVXNlcnMiLHZhbHVlOjM4NDcsdHlwZToibnVtYmVyIixpY29uOiJsdWNpZGU6dXNlcnMiLGRlc2NyaXB0aW9uOiIzMjQgbmV3IHRoaXMgd2VlayIsYWN0aW9uczpbe25hbWU6IlZpZXcgVXNlciBMaXN0IixpY29uTmFtZToibHVjaWRlOmxpc3QiLGFjdGlvbjppKGFzeW5jKCk9PntsZXQgcz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjYWN0aW9uLW91dHB1dCIpO3MmJihzLnRleHRDb250ZW50PSJPcGVuaW5nIHVzZXIgbGlzdC4uLiIpfSwiYWN0aW9uIil9XX0se2lkOiJjcHUiLHRpdGxlOiJDUFUgVXNhZ2UiLHZhbHVlOjczLHVuaXQ6IiUiLHR5cGU6ImdhdWdlIixpY29uOiJsdWNpZGU6Y3B1IixnYXVnZU9wdGlvbnM6e21pbjowLG1heDoxMDAsdGhyZXNob2xkczpbe3ZhbHVlOjAsY29sb3I6ImhzbCgxNDIuMSA3Ni4yJSAzNi4zJSkifSx7dmFsdWU6NjAsY29sb3I6ImhzbCg0NS40IDkzLjQlIDQ3LjUlKSJ9LHt2YWx1ZTo4MCxjb2xvcjoiaHNsKDAgODQuMiUgNjAuMiUpIn1dfX0se2lkOiJzdG9yYWdlIix0aXRsZToiU3RvcmFnZSBVc2VkIix2YWx1ZTo2NSx0eXBlOiJwZXJjZW50YWdlIixpY29uOiJsdWNpZGU6aGFyZC1kcml2ZSIsZGVzY3JpcHRpb246IjY1MCBHQiBvZiAxIFRCIn0se2lkOiJsYXRlbmN5Iix0aXRsZToiUmVzcG9uc2UgVGltZSIsdmFsdWU6MTQyLHVuaXQ6Im1zIix0eXBlOiJ0cmVuZCIsaWNvbjoibHVjaWRlOmFjdGl2aXR5Iix0cmVuZERhdGE6WzE1MCwxNDUsMTQ4LDE0MiwxMzgsMTQwLDEzNSwxNDUsMTQyXSxkZXNjcmlwdGlvbjoiUDk1In0se2lkOiJ1cHRpbWUiLHRpdGxlOiJTeXN0ZW0gVXB0aW1lIix2YWx1ZToiOTkuOTUlIix0eXBlOiJ0ZXh0IixpY29uOiJsdWNpZGU6Y2hlY2stY2lyY2xlIixjb2xvcjoiaHNsKDE0Mi4xIDc2LjIlIDM2LjMlKSIsZGVzY3JpcHRpb246Ikxhc3QgMzAgZGF5cyJ9XSxbe25hbWU6IlJlZnJlc2giLGljb25OYW1lOiJsdWNpZGU6cmVmcmVzaC1jdyIsYWN0aW9uOmkoYXN5bmMoKT0+e2xldCBzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRlZXMtc3RhdHNncmlkIik7cyYmKHMuc3R5bGUub3BhY2l0eT0iMC41IixzZXRUaW1lb3V0KCgpPT57cy5zdHlsZS5vcGFjaXR5PSIxIn0sMzAwKSl9LCJhY3Rpb24iKX0se25hbWU6IkV4cG9ydCIsaWNvbk5hbWU6Imx1Y2lkZTpzaGFyZSIsYWN0aW9uOmkoYXN5bmMoKT0+e2xldCBzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNhY3Rpb24tb3V0cHV0Iik7cyYmKHMudGV4dENvbnRlbnQ9IkV4cG9ydGluZyBkYXNoYm9hcmQgcmVwb3J0Li4uIil9LCJhY3Rpb24iKX0se25hbWU6IlNldHRpbmdzIixpY29uTmFtZToibHVjaWRlOnNldHRpbmdzIixhY3Rpb246aShhc3luYygpPT57bGV0IHM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2FjdGlvbi1vdXRwdXQiKTtzJiYocy50ZXh0Q29udGVudD0iT3BlbmluZyBkYXNoYm9hcmQgc2V0dGluZ3MuLi4iKX0sImFjdGlvbiIpfV0sMjUwLDE2LGguYmRUaGVtZSgiaHNsKDIxMCA0MCUgOTYuMSUpIiwiaHNsKDIxNSAyMC4yJSAxNi44JSkiKSxoLmJkVGhlbWUoImhzbCgyMTUuMyAyNSUgOC44JSkiLCJoc2woMjEwIDQwJSA5OCUpIiksIjIuIFRpbGUgVHlwZXMiLCJEaWZmZXJlbnQgdmlzdWFsaXphdGlvbiB0eXBlcyBhdmFpbGFibGUgaW4gdGhlIHN0YXRzIGdyaWQiLFt7aWQ6Im51bWJlci1leGFtcGxlIix0aXRsZToiTnVtYmVyIFRpbGUiLHZhbHVlOjQyMTk1LHVuaXQ6IiQiLHR5cGU6Im51bWJlciIsaWNvbjoibHVjaWRlOmhhc2giLGRlc2NyaXB0aW9uOiJTaW1wbGUgbnVtZXJpYyBkaXNwbGF5In0se2lkOiJnYXVnZS1leGFtcGxlIix0aXRsZToiR2F1Z2UgVGlsZSIsdmFsdWU6NjgsdW5pdDoiJSIsdHlwZToiZ2F1Z2UiLGljb246Imx1Y2lkZTpnYXVnZSIsZ2F1Z2VPcHRpb25zOnttaW46MCxtYXg6MTAwLHRocmVzaG9sZHM6W3t2YWx1ZTowLGNvbG9yOiJoc2woMTQyLjEgNzYuMiUgMzYuMyUpIn0se3ZhbHVlOjUwLGNvbG9yOiJoc2woNDUuNCA5My40JSA0Ny41JSkifSx7dmFsdWU6ODAsY29sb3I6ImhzbCgwIDg0LjIlIDYwLjIlKSJ9XX19LHtpZDoicGVyY2VudGFnZS1leGFtcGxlIix0aXRsZToiUGVyY2VudGFnZSBUaWxlIix2YWx1ZTo3OCx0eXBlOiJwZXJjZW50YWdlIixpY29uOiJsdWNpZGU6cGVyY2VudCIsZGVzY3JpcHRpb246IlByb2dyZXNzIGJhciB2aXN1YWxpemF0aW9uIn0se2lkOiJ0cmVuZC1leGFtcGxlIix0aXRsZToiVHJlbmQgVGlsZSIsdmFsdWU6ODkyLHVuaXQ6Im9wcy9zIix0eXBlOiJ0cmVuZCIsaWNvbjoibHVjaWRlOnRyZW5kaW5nLXVwIix0cmVuZERhdGE6WzcyMCw3NTAsNzgwLDc5NSw4MTAsODM1LDg1MCw4NjUsODgwLDg5Ml0sZGVzY3JpcHRpb246ImF2ZyJ9LHtpZDoidGV4dC1leGFtcGxlIix0aXRsZToiVGV4dCBUaWxlIix2YWx1ZToiT3BlcmF0aW9uYWwiLHR5cGU6InRleHQiLGljb246Imx1Y2lkZTppbmZvIixjb2xvcjoiaHNsKDE0Mi4xIDc2LjIlIDM2LjMlKSIsZGVzY3JpcHRpb246IlN0YXR1cyBkaXNwbGF5In1dLDI4MCwxNiwiMy4gR3JpZCBDb25maWd1cmF0aW9ucyIsIkRpZmZlcmVudCBsYXlvdXQgb3B0aW9ucyBhbmQgcmVzcG9uc2l2ZSBiZWhhdmlvciIsW3tpZDoiMSIsdGl0bGU6Ik9yZGVycyIsdmFsdWU6MTU2LHR5cGU6Im51bWJlciIsaWNvbjoibHVjaWRlOnNob3BwaW5nLWNhcnQifSx7aWQ6IjIiLHRpdGxlOiJSZXZlbnVlIix2YWx1ZTo4NDIwLHVuaXQ6IiQiLHR5cGU6Im51bWJlciIsaWNvbjoibHVjaWRlOmRvbGxhci1zaWduIn0se2lkOiIzIix0aXRsZToiVXNlcnMiLHZhbHVlOjQyMyx0eXBlOiJudW1iZXIiLGljb246Imx1Y2lkZTp1c2VycyJ9LHtpZDoiNCIsdGl0bGU6Ikdyb3d0aCIsdmFsdWU6MTIuNSx1bml0OiIlIix0eXBlOiJudW1iZXIiLGljb246Imx1Y2lkZTp0cmVuZGluZy11cCIsY29sb3I6ImhzbCgxNDIuMSA3Ni4yJSAzNi4zJSkifV0sMTgwLDEyLFt7aWQ6InNwYWNpb3VzMSIsdGl0bGU6Ik1vbnRobHkgUmV2ZW51ZSIsdmFsdWU6MTg0NTAwLHVuaXQ6IiQiLHR5cGU6Im51bWJlciIsaWNvbjoibHVjaWRlOmNyZWRpdC1jYXJkIixkZXNjcmlwdGlvbjoiVG90YWwgcmV2ZW51ZSB0aGlzIG1vbnRoIn0se2lkOiJzcGFjaW91czIiLHRpdGxlOiJDdXN0b21lciBTYXRpc2ZhY3Rpb24iLHZhbHVlOjk0LHR5cGU6InBlcmNlbnRhZ2UiLGljb246Imx1Y2lkZTpzbWlsZSIsZGVzY3JpcHRpb246IkJhc2VkIG9uIDEsMjM0IHJldmlld3MifSx7aWQ6InNwYWNpb3VzMyIsdGl0bGU6IlNlcnZlciBSZXNwb25zZSIsdmFsdWU6OTgsdW5pdDoibXMiLHR5cGU6InRyZW5kIixpY29uOiJsdWNpZGU6c2VydmVyIix0cmVuZERhdGE6WzEwNSwxMDIsMTAwLDk5LDk4LDk4LDk3LDk4XSxkZXNjcmlwdGlvbjoiYXZnIHJlc3BvbnNlIHRpbWUifV0sMzIwLDIwLCI0LiBDUFUgQ29yZXMgVmlzdWFsaXphdGlvbiIsIlZlcnRpY2FsIGJhciB2aXN1YWxpemF0aW9uIGZvciBtdWx0aS1jb3JlIENQVSB1c2FnZSB3aXRoIGNvbHVtbiBzcGFubmluZyIsW3tpZDoiY3B1LWNvcmVzLTgiLHRpdGxlOiJDUFUgQ29yZXMgKDgtY29yZSkiLHZhbHVlOjAsdHlwZToiY3B1Q29yZXMiLGljb246Imx1Y2lkZTpjcHUiLGNvbHVtblNwYW46Mixjb3Jlc0RhdGE6SWV0KDgpLGRlc2NyaXB0aW9uOiJJbnRlbCBpNyAtIDggY29yZXMifSx7aWQ6Im1lbW9yeSIsdGl0bGU6Ik1lbW9yeSBVc2FnZSIsdmFsdWU6NjgsdHlwZToicGVyY2VudGFnZSIsaWNvbjoibHVjaWRlOmRhdGFiYXNlIixkZXNjcmlwdGlvbjoiMTMuNiBHQiBvZiAyMCBHQiJ9LHtpZDoiY3B1LWNvcmVzLTE2Iix0aXRsZToiQ1BVIENvcmVzICgxNi1jb3JlKSIsdmFsdWU6MCx0eXBlOiJjcHVDb3JlcyIsaWNvbjoibHVjaWRlOmNwdSIsY29sdW1uU3BhbjoyLGNvcmVzRGF0YTpJZXQoMTYpLGRlc2NyaXB0aW9uOiJBTUQgUnl6ZW4gOSAtIDE2IGNvcmVzIn0se2lkOiJuZXR3b3JrIix0aXRsZToiTmV0d29yayBJL08iLHZhbHVlOjI0NSx1bml0OiJNQi9zIix0eXBlOiJ0cmVuZCIsaWNvbjoibHVjaWRlOm5ldHdvcmsiLHRyZW5kRGF0YTpbMjAwLDIyMCwyMzUsMjQwLDIzOCwyNDVdLGRlc2NyaXB0aW9uOiJ0aHJvdWdocHV0In0se2lkOiJjcHUtY29yZXMtMzIiLHRpdGxlOiJTZXJ2ZXIgQ1BVICgzMi1jb3JlKSIsdmFsdWU6MCx0eXBlOiJjcHVDb3JlcyIsaWNvbjoibHVjaWRlOnNlcnZlciIsY29sdW1uU3BhbjozLGNvcmVzRGF0YTpJZXQoMzIpLGRlc2NyaXB0aW9uOiJBTUQgRVBZQyAtIDMyIGNvcmVzIn0se2lkOiJkaXNrIix0aXRsZToiRGlzayBVc2FnZSIsdmFsdWU6NDIsdHlwZToicGVyY2VudGFnZSIsaWNvbjoibHVjaWRlOmhhcmQtZHJpdmUiLGRlc2NyaXB0aW9uOiI0MjAgR0Igb2YgMSBUQiJ9XSxbe25hbWU6IlJhbmRvbWl6ZSIsaWNvbk5hbWU6Imx1Y2lkZTpzaHVmZmxlIixhY3Rpb246aShhc3luYygpPT57bGV0IHM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2NwdS1jb3Jlcy1ncmlkIik7aWYoIXMpcmV0dXJuO2xldCBlPXMudGlsZXMubWFwKHQ9PnQudHlwZT09PSJjcHVDb3JlcyImJnQuY29yZXNEYXRhP3suLi50LGNvcmVzRGF0YTp0LmNvcmVzRGF0YS5tYXAoYT0+KHsuLi5hLHVzYWdlOk1hdGgucm91bmQoTWF0aC5yYW5kb20oKSoxMDApfSkpfTp0KTtzLnRpbGVzPWV9LCJhY3Rpb24iKX1dLDI1MCwxNiwiNS4gSW50ZXJhY3RpdmUgRmVhdHVyZXMiLCJUaWxlcyB3aXRoIGFjdGlvbnMgYW5kIHJlYWwtdGltZSB1cGRhdGVzIixbe2lkOiJsaXZlLWNwdSIsdGl0bGU6IkxpdmUgQ1BVIix2YWx1ZTo0NSx1bml0OiIlIix0eXBlOiJnYXVnZSIsaWNvbjoibHVjaWRlOmNwdSIsZ2F1Z2VPcHRpb25zOnttaW46MCxtYXg6MTAwLHRocmVzaG9sZHM6W3t2YWx1ZTowLGNvbG9yOiJoc2woMTQyLjEgNzYuMiUgMzYuMyUpIn0se3ZhbHVlOjYwLGNvbG9yOiJoc2woNDUuNCA5My40JSA0Ny41JSkifSx7dmFsdWU6ODAsY29sb3I6ImhzbCgwIDg0LjIlIDYwLjIlKSJ9XX19LHtpZDoibGl2ZS1yZXF1ZXN0cyIsdGl0bGU6IlJlcXVlc3RzL3NlYyIsdmFsdWU6ODkyLHR5cGU6InRyZW5kIixpY29uOiJsdWNpZGU6YWN0aXZpdHkiLHRyZW5kRGF0YTpbODUwLDg2MCw4NzAsODgwLDg4NSw4OTAsODkyXX0se2lkOiJsaXZlLW1lbW9yeSIsdGl0bGU6Ik1lbW9yeSBVc2FnZSIsdmFsdWU6NjIsdHlwZToicGVyY2VudGFnZSIsaWNvbjoibHVjaWRlOmRhdGFiYXNlIn0se2lkOiJjb3VudGVyIix0aXRsZToiRXZlbnQgQ291bnRlciIsdmFsdWU6MCx0eXBlOiJudW1iZXIiLGljb246Imx1Y2lkZTp6YXAiLGFjdGlvbnM6W3tuYW1lOiJJbmNyZW1lbnQiLGljb25OYW1lOiJsdWNpZGU6cGx1cyIsYWN0aW9uOmkoYXN5bmMoKT0+e2xldCBzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNpbnRlcmFjdGl2ZS1ncmlkIik7aWYoIXMpcmV0dXJuO2xldCBlPXMudGlsZXMuZmluZCh0PT50LmlkPT09ImNvdW50ZXIiKTtlLnZhbHVlPXR5cGVvZiBlLnZhbHVlPT0ibnVtYmVyIj9lLnZhbHVlKzE6MSxzLnRpbGVzPVsuLi5zLnRpbGVzXX0sImFjdGlvbiIpfSx7bmFtZToiUmVzZXQiLGljb25OYW1lOiJsdWNpZGU6cm90YXRlLWNjdyIsYWN0aW9uOmkoYXN5bmMoKT0+e2xldCBzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNpbnRlcmFjdGl2ZS1ncmlkIik7aWYoIXMpcmV0dXJuO2xldCBlPXMudGlsZXMuZmluZCh0PT50LmlkPT09ImNvdW50ZXIiKTtlLnZhbHVlPTAscy50aWxlcz1bLi4ucy50aWxlc119LCJhY3Rpb24iKX1dfV0sW3tuYW1lOiJTdGFydCBMaXZlIFVwZGF0ZXMiLGljb25OYW1lOiJsdWNpZGU6cGxheSIsYWN0aW9uOmkoYXN5bmMgZnVuY3Rpb24oKXt3aW5kb3cubGl2ZVVwZGF0ZUludGVydmFsPyhjbGVhckludGVydmFsKHdpbmRvdy5saXZlVXBkYXRlSW50ZXJ2YWwpLHdpbmRvdy5saXZlVXBkYXRlSW50ZXJ2YWw9bnVsbCx0aGlzLm5hbWU9IlN0YXJ0IExpdmUgVXBkYXRlcyIsdGhpcy5pY29uTmFtZT0ibHVjaWRlOnBsYXkiKTood2luZG93LmxpdmVVcGRhdGVJbnRlcnZhbD1zZXRJbnRlcnZhbCgoKT0+e2xldCBzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNpbnRlcmFjdGl2ZS1ncmlkIik7aWYocyl7bGV0IGU9Wy4uLnMudGlsZXNdLHQ9ZS5maW5kKG89Pm8uaWQ9PT0ibGl2ZS1jcHUiKTt0LnZhbHVlPU1hdGgubWF4KDAsTWF0aC5taW4oMTAwLHQudmFsdWUrKE1hdGgucmFuZG9tKCkqMjAtMTApKSk7bGV0IGE9ZS5maW5kKG89Pm8uaWQ9PT0ibGl2ZS1yZXF1ZXN0cyIpLHI9YS52YWx1ZStNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkqNTAtMjUpO2EudmFsdWU9TWF0aC5tYXgoODAwLHIpLGEudHJlbmREYXRhPVsuLi5hLnRyZW5kRGF0YS5zbGljZSgxKSxhLnZhbHVlXTtsZXQgbj1lLmZpbmQobz0+by5pZD09PSJsaXZlLW1lbW9yeSIpO24udmFsdWU9TWF0aC5tYXgoMCxNYXRoLm1pbigxMDAsbi52YWx1ZSsoTWF0aC5yYW5kb20oKSoxMC01KSkpLHMudGlsZXM9ZX19LDFlMyksdGhpcy5uYW1lPSJTdG9wIExpdmUgVXBkYXRlcyIsdGhpcy5pY29uTmFtZT0ibHVjaWRlOnBhdXNlIil9LCJhY3Rpb24iKX1dLDI1MCwxNiwiNi4gQ29kZSBFeGFtcGxlIiwiSG93IHRvIGltcGxlbWVudCBhIHN0YXRzIGdyaWQgd2l0aCBUeXBlU2NyaXB0IixgY29uc3QgdGlsZXM6IElTdGF0c1RpbGVbXSA9IFsKICB7CiAgICBpZDogJ3JldmVudWUnLAogICAgdGl0bGU6ICdUb3RhbCBSZXZlbnVlJywKICAgIHZhbHVlOiAxMjU0MjAsCiAgICB1bml0OiAnJCcsCiAgICB0eXBlOiAnbnVtYmVyJywKICAgIGljb246ICdsdWNpZGU6ZG9sbGFyLXNpZ24nLAogICAgZGVzY3JpcHRpb246ICcrMTIuNSUgZnJvbSBsYXN0IG1vbnRoJywKICAgIGFjdGlvbnM6IFsKICAgICAgewogICAgICAgIG5hbWU6ICdWaWV3IERldGFpbHMnLAogICAgICAgIGljb25OYW1lOiAnbHVjaWRlOnRyZW5kaW5nLXVwJywKICAgICAgICBhY3Rpb246IGFzeW5jICgpID0+IHsKICAgICAgICAgIGNvbnNvbGUubG9nKCdWaWV3IHJldmVudWUgZGV0YWlscycpOwogICAgICAgIH0KICAgICAgfQogICAgXQogIH0sCiAgewogICAgaWQ6ICdjcHUnLAogICAgdGl0bGU6ICdDUFUgVXNhZ2UnLAogICAgdmFsdWU6IDczLAogICAgdW5pdDogJyUnLAogICAgdHlwZTogJ2dhdWdlJywKICAgIGljb246ICdsdWNpZGU6Y3B1JywKICAgIGdhdWdlT3B0aW9uczogewogICAgICBtaW46IDAsCiAgICAgIG1heDogMTAwLAogICAgICB0aHJlc2hvbGRzOiBbCiAgICAgICAgeyB2YWx1ZTogMCwgY29sb3I6ICdoc2woMTQyLjEgNzYuMiUgMzYuMyUpJyB9LAogICAgICAgIHsgdmFsdWU6IDYwLCBjb2xvcjogJ2hzbCg0NS40IDkzLjQlIDQ3LjUlKScgfSwKICAgICAgICB7IHZhbHVlOiA4MCwgY29sb3I6ICdoc2woMCA4NC4yJSA2MC4yJSknIH0KICAgICAgXQogICAgfQogIH0KXTsKCi8vIFJlbmRlciB0aGUgc3RhdHMgZ3JpZApodG1sXGAKICA8ZGVlcy1zdGF0c2dyaWQKICAgIC50aWxlcz1cJHt0aWxlc30KICAgIC5taW5UaWxlV2lkdGg9XCR7MjUwfQogICAgLmdhcD1cJHsxNn0KICAgIC5ncmlkQWN0aW9ucz1cJHtbCiAgICAgIHsKICAgICAgICBuYW1lOiAnUmVmcmVzaCcsCiAgICAgICAgaWNvbk5hbWU6ICdsdWNpZGU6cmVmcmVzaC1jdycsCiAgICAgICAgYWN0aW9uOiBhc3luYyAoKSA9PiBjb25zb2xlLmxvZygnUmVmcmVzaCcpCiAgICAgIH0KICAgIF19CiAgPjwvZGVlcy1zdGF0c2dyaWQ+ClxgO2AsIjcuIERpc2sgJiBTdG9yYWdlIFRpbGVzIiwiUGFydGl0aW9uIGFuZCBwaHlzaWNhbCBkaXNrIHZpc3VhbGl6YXRpb24gdGlsZXMiLFt7aWQ6InJvb3QtcGFydGl0aW9uIix0aXRsZToiUm9vdCBQYXJ0aXRpb24iLHZhbHVlOjAsdHlwZToicGFydGl0aW9uIixpY29uOiJsdWNpZGU6Zm9sZGVyLXJvb3QiLHBhcnRpdGlvbkRhdGE6e3VzZWQ6Njk4MzQxNDI1MTUyLHRvdGFsOjEwNzM3NDE4MjRlMyxmaWxlc3lzdGVtOiJleHQ0Iixtb3VudFBvaW50OiIvIn19LHtpZDoiaG9tZS1wYXJ0aXRpb24iLHRpdGxlOiJIb21lIFBhcnRpdGlvbiIsdmFsdWU6MCx0eXBlOiJwYXJ0aXRpb24iLGljb246Imx1Y2lkZTpob21lIixwYXJ0aXRpb25EYXRhOnt1c2VkOjIxNDc0ODM2NDgwMCx0b3RhbDo1MzY4NzA5MTJlMyxmaWxlc3lzdGVtOiJleHQ0Iixtb3VudFBvaW50OiIvaG9tZSJ9fSx7aWQ6ImRhdGEtcGFydGl0aW9uIix0aXRsZToiRGF0YSBQYXJ0aXRpb24iLHZhbHVlOjAsdHlwZToicGFydGl0aW9uIixpY29uOiJsdWNpZGU6ZGF0YWJhc2UiLHBhcnRpdGlvbkRhdGE6e3VzZWQ6MTkzMjczNTI4MzIwMCx0b3RhbDoyMTQ3NDgzNjQ4ZTMsZmlsZXN5c3RlbToieGZzIixtb3VudFBvaW50OiIvZGF0YSJ9fSx7aWQ6Im52bWUtc3NkIix0aXRsZToiUHJpbWFyeSBOVk1lIix2YWx1ZTowLHR5cGU6ImRpc2siLGljb246Imx1Y2lkZTpoYXJkLWRyaXZlIixjb2x1bW5TcGFuOjIsZGlza0RhdGE6e2NhcGFjaXR5OjJlMTIsbW9kZWw6IlNhbXN1bmcgOTkwIFBybyIsdHlwZToibnZtZSIsaW9wczp7cmVhZDo3NDUwLHdyaXRlOjY5MDB9LGhlYWx0aDo5OH19LHtpZDoic2F0YS1zc2QiLHRpdGxlOiJTZWNvbmRhcnkgU1NEIix2YWx1ZTowLHR5cGU6ImRpc2siLGljb246Imx1Y2lkZTpoYXJkLWRyaXZlIixkaXNrRGF0YTp7Y2FwYWNpdHk6MWUxMixtb2RlbDoiQ3J1Y2lhbCBNWDUwMCIsdHlwZToic3NkIixpb3BzOntyZWFkOjU2MCx3cml0ZTo1MTB9LGhlYWx0aDo4NX19LHtpZDoiaGRkLXN0b3JhZ2UiLHRpdGxlOiJCYWNrdXAgSEREIix2YWx1ZTowLHR5cGU6ImRpc2siLGljb246Imx1Y2lkZTphcmNoaXZlIixkaXNrRGF0YTp7Y2FwYWNpdHk6OGUxMixtb2RlbDoiU2VhZ2F0ZSBJcm9uV29sZiIsdHlwZToiaGRkIixpb3BzOntyZWFkOjIxMCx3cml0ZToxOTV9LGhlYWx0aDo0Mn19XSwyODAsMTYpLCJkZW1vRnVuYyIpfSk7dmFyIGdoLHJuLE90LHppPWcoKCk9PntwZSgpO2t0KCk7Z2g9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LHJuPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxPdD0oKCk9PntsZXQgcz13ZSxlLHQ9W10sYT1bXSxyLG49W10sbz1bXSxsLHA9W10sZD1bXSx1LGM9W10sYj1bXSx2LHg9W10sbT1bXSxmLHk9W10sTT1bXSx6LE49W10sQz1bXSxfLE89W10sJD1bXTtyZXR1cm4gY2xhc3MgZXh0ZW5kcyBze3N0YXRpY3tpKHRoaXMsIkRlZXNJbnB1dEJhc2UiKX1zdGF0aWN7bGV0IEg9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUoc1tTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7ZT1bTCh7dHlwZTpTdHJpbmd9KV0scj1bTCh7dHlwZTpTdHJpbmd9KV0sbD1bTCh7dHlwZTpTdHJpbmd9KV0sdT1bTCh7dHlwZTpTdHJpbmd9KV0sdj1bTCh7dHlwZTpCb29sZWFufSldLGY9W0woe3R5cGU6Qm9vbGVhbn0pXSx6PVtMKHt0eXBlOlN0cmluZ30pXSxfPVtMKHt0eXBlOlN0cmluZ30pXSxnaCh0aGlzLG51bGwsZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImxheW91dE1vZGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoaz0+ImxheW91dE1vZGUiaW4gaywiaGFzIiksZ2V0Omkoaz0+ay5sYXlvdXRNb2RlLCJnZXQiKSxzZXQ6aSgoayxTKT0+e2subGF5b3V0TW9kZT1TfSwic2V0Iil9LG1ldGFkYXRhOkh9LHQsYSksZ2godGhpcyxudWxsLHIse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJsYWJlbFBvc2l0aW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGs9PiJsYWJlbFBvc2l0aW9uImluIGssImhhcyIpLGdldDppKGs9PmsubGFiZWxQb3NpdGlvbiwiZ2V0Iiksc2V0OmkoKGssUyk9PntrLmxhYmVsUG9zaXRpb249U30sInNldCIpfSxtZXRhZGF0YTpIfSxuLG8pLGdoKHRoaXMsbnVsbCxsLHtraW5kOiJhY2Nlc3NvciIsbmFtZToia2V5IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGs9PiJrZXkiaW4gaywiaGFzIiksZ2V0Omkoaz0+ay5rZXksImdldCIpLHNldDppKChrLFMpPT57ay5rZXk9U30sInNldCIpfSxtZXRhZGF0YTpIfSxwLGQpLGdoKHRoaXMsbnVsbCx1LHtraW5kOiJhY2Nlc3NvciIsbmFtZToibGFiZWwiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoaz0+ImxhYmVsImluIGssImhhcyIpLGdldDppKGs9PmsubGFiZWwsImdldCIpLHNldDppKChrLFMpPT57ay5sYWJlbD1TfSwic2V0Iil9LG1ldGFkYXRhOkh9LGMsYiksZ2godGhpcyxudWxsLHYse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJyZXF1aXJlZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShrPT4icmVxdWlyZWQiaW4gaywiaGFzIiksZ2V0Omkoaz0+ay5yZXF1aXJlZCwiZ2V0Iiksc2V0OmkoKGssUyk9PntrLnJlcXVpcmVkPVN9LCJzZXQiKX0sbWV0YWRhdGE6SH0seCxtKSxnaCh0aGlzLG51bGwsZix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImRpc2FibGVkIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGs9PiJkaXNhYmxlZCJpbiBrLCJoYXMiKSxnZXQ6aShrPT5rLmRpc2FibGVkLCJnZXQiKSxzZXQ6aSgoayxTKT0+e2suZGlzYWJsZWQ9U30sInNldCIpfSxtZXRhZGF0YTpIfSx5LE0pLGdoKHRoaXMsbnVsbCx6LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaW5mb1RleHQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoaz0+ImluZm9UZXh0ImluIGssImhhcyIpLGdldDppKGs9PmsuaW5mb1RleHQsImdldCIpLHNldDppKChrLFMpPT57ay5pbmZvVGV4dD1TfSwic2V0Iil9LG1ldGFkYXRhOkh9LE4sQyksZ2godGhpcyxudWxsLF8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJkZXNjcmlwdGlvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShrPT4iZGVzY3JpcHRpb24iaW4gaywiaGFzIiksZ2V0Omkoaz0+ay5kZXNjcmlwdGlvbiwiZ2V0Iiksc2V0OmkoKGssUyk9PntrLmRlc2NyaXB0aW9uPVN9LCJzZXQiKX0sbWV0YWRhdGE6SH0sTywkKSxIJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOkh9KX0jZT1ybih0aGlzLHQsImF1dG8iKTtnZXQgbGF5b3V0TW9kZSgpe3JldHVybiB0aGlzLiNlfXNldCBsYXlvdXRNb2RlKEgpe3RoaXMuI2U9SH0jdD0ocm4odGhpcyxhKSxybih0aGlzLG4sInRvcCIpKTtnZXQgbGFiZWxQb3NpdGlvbigpe3JldHVybiB0aGlzLiN0fXNldCBsYWJlbFBvc2l0aW9uKEgpe3RoaXMuI3Q9SH0jYT0ocm4odGhpcyxvKSxybih0aGlzLHAsdm9pZCAwKSk7Z2V0IGtleSgpe3JldHVybiB0aGlzLiNhfXNldCBrZXkoSCl7dGhpcy4jYT1IfSNzPShybih0aGlzLGQpLHJuKHRoaXMsYyx2b2lkIDApKTtnZXQgbGFiZWwoKXtyZXR1cm4gdGhpcy4jc31zZXQgbGFiZWwoSCl7dGhpcy4jcz1IfSNpPShybih0aGlzLGIpLHJuKHRoaXMseCwhMSkpO2dldCByZXF1aXJlZCgpe3JldHVybiB0aGlzLiNpfXNldCByZXF1aXJlZChIKXt0aGlzLiNpPUh9I3I9KHJuKHRoaXMsbSkscm4odGhpcyx5LCExKSk7Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuI3J9c2V0IGRpc2FibGVkKEgpe3RoaXMuI3I9SH0jbz0ocm4odGhpcyxNKSxybih0aGlzLE4sdm9pZCAwKSk7Z2V0IGluZm9UZXh0KCl7cmV0dXJuIHRoaXMuI299c2V0IGluZm9UZXh0KEgpe3RoaXMuI289SH0jbj0ocm4odGhpcyxDKSxybih0aGlzLE8sdm9pZCAwKSk7Z2V0IGRlc2NyaXB0aW9uKCl7cmV0dXJuIHRoaXMuI259c2V0IGRlc2NyaXB0aW9uKEgpe3RoaXMuI249SH1zdGF0aWMgZ2V0IGJhc2VTdHlsZXMoKXtyZXR1cm5bSmAKICAgICAgICAvKiBDU1MgVmFyaWFibGVzIGZvciBjb25zaXN0ZW50IHNwYWNpbmcgKi8KICAgICAgICA6aG9zdCB7CiAgICAgICAgICAtLWRlZXMtaW5wdXQtc3BhY2luZy11bml0OiA4cHg7CiAgICAgICAgICAtLWRlZXMtaW5wdXQtbGFiZWwtZ2FwOiB2YXIoLS1kZWVzLWlucHV0LXNwYWNpbmctdW5pdCk7IC8qIDhweCAqLwogICAgICAgIH0KCiAgICAgICAgLyogRGVmYXVsdCBibG9jayBkaXNwbGF5IHdpdGggbm8gbWFyZ2lucyAtIHNwYWNpbmcgaXMgY29udGFpbmVyLWRyaXZlbiAqLwogICAgICAgIDpob3N0IHsKICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIH0KCiAgICAgICAgLyogSG9yaXpvbnRhbCBsYXlvdXQgbW9kZSAtIGFjdGl2YXRlZCBieSBhdHRyaWJ1dGUgKi8KICAgICAgICA6aG9zdChbbGF5b3V0LW1vZGU9Imhvcml6b250YWwiXSkgewogICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIH0KCiAgICAgICAgLyogTGFiZWwgcG9zaXRpb24gdmFyaWF0aW9ucyAqLwogICAgICAgIDpob3N0KFtsYWJlbC1wb3NpdGlvbj0ibGVmdCJdKSAuaW5wdXQtd3JhcHBlciB7CiAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmcjsKICAgICAgICAgIGdhcDogdmFyKC0tZGVlcy1pbnB1dC1sYWJlbC1nYXApOwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICB9CgogICAgICAgIDpob3N0KFtsYWJlbC1wb3NpdGlvbj0icmlnaHQiXSkgLmlucHV0LXdyYXBwZXIgewogICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIGF1dG87CiAgICAgICAgICBnYXA6IHZhcigtLWRlZXMtaW5wdXQtbGFiZWwtZ2FwKTsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgfQoKICAgICAgICA6aG9zdChbbGFiZWwtcG9zaXRpb249InRvcCJdKSAuaW5wdXQtd3JhcHBlciB7CiAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB9CgogICAgICAgIDpob3N0KFtsYWJlbC1wb3NpdGlvbj0ibm9uZSJdKSBkZWVzLWxhYmVsIHsKICAgICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICAgfQoKICAgICAgICAvKiBEZXNjcmlwdGlvbiB0ZXh0IGJlbG93IGlucHV0ICovCiAgICAgICAgLmRlc2NyaXB0aW9uVGV4dCB7CiAgICAgICAgICBtYXJnaW4tdG9wOiA0cHg7CiAgICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgICBsaW5lLWhlaWdodDogMS40OwogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA0NS4xJSkiLCJoc2woMCAwJSA2My45JSkiKX07CiAgICAgICAgfQogICAgICBgXX1jaGFuZ2VTdWJqZWN0PShybih0aGlzLCQpLG5ldyB1dC5zbWFydHJ4LnJ4anMuU3ViamVjdCk7YXN5bmMgY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuZGV0ZWN0TGF5b3V0TW9kZSgpfWRldGVjdExheW91dE1vZGUoKXtpZih0aGlzLmxheW91dE1vZGUhPT0iYXV0byIpe3RoaXMuc2V0QXR0cmlidXRlKCJsYXlvdXQtbW9kZSIsdGhpcy5sYXlvdXRNb2RlKTtyZXR1cm59bGV0IEg9dGhpcy5jbG9zZXN0KCJkZWVzLWZvcm0iKTtIJiZILmhhc0F0dHJpYnV0ZSgiaG9yaXpvbnRhbC1sYXlvdXQiKT90aGlzLnNldEF0dHJpYnV0ZSgibGF5b3V0LW1vZGUiLCJob3Jpem9udGFsIik6dGhpcy5zZXRBdHRyaWJ1dGUoImxheW91dC1tb2RlIiwidmVydGljYWwiKX11cGRhdGVkKEgpe3N1cGVyLnVwZGF0ZWQoSCksSC5oYXMoImxheW91dE1vZGUiKSYmdGhpcy5kZXRlY3RMYXlvdXRNb2RlKCksSC5oYXMoImxhYmVsUG9zaXRpb24iKSYmdGhpcy5zZXRBdHRyaWJ1dGUoImxhYmVsLXBvc2l0aW9uIix0aGlzLmxhYmVsUG9zaXRpb24pfWFzeW5jIGZyZWV6ZSgpe3RoaXMuZGlzYWJsZWQ9ITB9YXN5bmMgdW5mcmVlemUoKXt0aGlzLmRpc2FibGVkPSExfXJlbmRlckRlc2NyaXB0aW9uKCl7cmV0dXJuIHRoaXMuZGVzY3JpcHRpb24/d2A8ZGl2IGNsYXNzPSJkZXNjcmlwdGlvblRleHQiPiR7dGhpcy5kZXNjcmlwdGlvbn08L2Rpdj5gOiIifX19KSgpfSk7dmFyIExkYSxFZGE9ZygoKT0+e3BlKCk7SXQoKTtmbygpO0Q4KCk7TGRhPWkoKCk9PndgCiAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e2xldCBlPXMucXVlcnlTZWxlY3RvckFsbCgiZGVlcy1pbnB1dC1jaGVja2JveCIpLHQ9cy5xdWVyeVNlbGVjdG9yKCIjc2VsZWN0LWFsbC1idG4iKSxhPXMucXVlcnlTZWxlY3RvcigiI2NsZWFyLWFsbC1idG4iKTt0JiZhJiYodC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PntlLmZvckVhY2gocj0+eyFyLmRpc2FibGVkJiZyLmtleT8uc3RhcnRzV2l0aCgiZmVhdHVyZSIpJiYoci52YWx1ZT0hMCl9KX0pLGEuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57ZS5mb3JFYWNoKHI9Pnshci5kaXNhYmxlZCYmci5rZXk/LnN0YXJ0c1dpdGgoImZlYXR1cmUiKSYmKHIudmFsdWU9ITEpfSl9KSl9fT4KICAgIDxzdHlsZT4KICAgICAgJHtKYAogICAgICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgIGdhcDogMjRweDsKICAgICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgICBtYXgtd2lkdGg6IDEyMDBweDsKICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBkZWVzLXBhbmVsIHsKICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGRlZXMtcGFuZWw6bGFzdC1jaGlsZCB7CiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuY2hlY2tib3gtZ3JvdXAgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5ob3Jpem9udGFsLWNoZWNrYm94ZXMgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGdhcDogMjRweDsKICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmludGVyYWN0aXZlLXNlY3Rpb24gewogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgNDAlIDk2LjElKSIsImhzbCgyMTUgMjAuMiUgMTYuOCUpIil9OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5vdXRwdXQtdGV4dCB7CiAgICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogICAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjMgMjUlIDI2LjclKSIsImhzbCgyMTAgNDAlIDgwJSkiKX07CiAgICAgICAgICBwYWRkaW5nOiA4cHg7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxMCA0MCUgOTglKSIsImhzbCgyMTUgMjAuMiUgMTEuOCUpIil9OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgICAgbWluLWhlaWdodDogMjRweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmZvcm0tc2VjdGlvbiB7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTclKSIsImhzbCgwIDAlIDclKSIpfTsKICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4OS44JSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgICAgICAgbWFyZ2luLXRvcDogMTZweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmJ1dHRvbi1ncm91cCB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuZmVhdHVyZS1saXN0IHsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDQwJSA5Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDExLjglKSIpfTsKICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMjE0LjMgMzEuOCUgOTEuNCUpIiwiaHNsKDIxNSAyMC4yJSAxNi44JSkiKX07CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuc2VjdGlvbi10aXRsZSB7CiAgICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS4zIDI1JSA4LjglKSIsImhzbCgyMTAgNDAlIDk4JSkiKX07CiAgICAgICAgfQogICAgICBgfQogICAgPC9zdHlsZT4KICAgIAogICAgPGRpdiBjbGFzcz0iZGVtby1jb250YWluZXIiPgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiQmFzaWMgQ2hlY2tib3hlcyJ9IC5zdWJ0aXRsZT0keyJTaW1wbGUgY2hlY2tib3ggZXhhbXBsZXMgd2l0aCB2YXJpb3VzIGxhYmVscyJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1jaGVja2JveAogICAgICAgICAgICAubGFiZWw9JHsiSSBhZ3JlZSB0byB0aGUgVGVybXMgYW5kIENvbmRpdGlvbnMifQogICAgICAgICAgICAudmFsdWU9JHshMH0KICAgICAgICAgICAgLmtleT0keyJ0ZXJtcyJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LWNoZWNrYm94PgoKICAgICAgICAgIDxkZWVzLWlucHV0LWNoZWNrYm94CiAgICAgICAgICAgIC5sYWJlbD0keyJTdWJzY3JpYmUgdG8gbmV3c2xldHRlciJ9CiAgICAgICAgICAgIC52YWx1ZT0keyExfQogICAgICAgICAgICAua2V5PSR7Im5ld3NsZXR0ZXIifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1jaGVja2JveD4KCiAgICAgICAgICA8ZGVlcy1pbnB1dC1jaGVja2JveAogICAgICAgICAgICAubGFiZWw9JHsiRW5hYmxlIG5vdGlmaWNhdGlvbnMifQogICAgICAgICAgICAudmFsdWU9JHshMX0KICAgICAgICAgICAgLmRlc2NyaXB0aW9uPSR7IlJlY2VpdmUgZW1haWwgdXBkYXRlcyBhYm91dCB5b3VyIGFjY291bnQifQogICAgICAgICAgICAua2V5PSR7Im5vdGlmaWNhdGlvbnMifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1jaGVja2JveD4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IkNoZWNrYm94IFN0YXRlcyJ9IC5zdWJ0aXRsZT0keyJEaWZmZXJlbnQgY2hlY2tib3ggc3RhdGVzIGFuZCBjb25maWd1cmF0aW9ucyJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1jaGVja2JveAogICAgICAgICAgICAubGFiZWw9JHsiRGVmYXVsdCBzdGF0ZSJ9CiAgICAgICAgICAgIC52YWx1ZT0keyExfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1jaGVja2JveD4KCiAgICAgICAgICA8ZGVlcy1pbnB1dC1jaGVja2JveAogICAgICAgICAgICAubGFiZWw9JHsiQ2hlY2tlZCBzdGF0ZSJ9CiAgICAgICAgICAgIC52YWx1ZT0keyEwfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1jaGVja2JveD4KCiAgICAgICAgICA8ZGVlcy1pbnB1dC1jaGVja2JveAogICAgICAgICAgICAubGFiZWw9JHsiRGlzYWJsZWQgdW5jaGVja2VkIn0KICAgICAgICAgICAgLnZhbHVlPSR7ITF9CiAgICAgICAgICAgIC5kaXNhYmxlZD0keyEwfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1jaGVja2JveD4KCiAgICAgICAgICA8ZGVlcy1pbnB1dC1jaGVja2JveAogICAgICAgICAgICAubGFiZWw9JHsiRGlzYWJsZWQgY2hlY2tlZCJ9CiAgICAgICAgICAgIC52YWx1ZT0keyEwfQogICAgICAgICAgICAuZGlzYWJsZWQ9JHshMH0KICAgICAgICAgID48L2RlZXMtaW5wdXQtY2hlY2tib3g+CgogICAgICAgICAgPGRlZXMtaW5wdXQtY2hlY2tib3gKICAgICAgICAgICAgLmxhYmVsPSR7IlJlcXVpcmVkIGNoZWNrYm94In0KICAgICAgICAgICAgLnJlcXVpcmVkPSR7ITB9CiAgICAgICAgICAgIC5rZXk9JHsicmVxdWlyZWQifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1jaGVja2JveD4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7Ikhvcml6b250YWwgTGF5b3V0In0gLnN1YnRpdGxlPSR7IkNoZWNrYm94ZXMgYXJyYW5nZWQgaG9yaXpvbnRhbGx5IGZvciBjb21wYWN0IGZvcm1zIn0+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkaXYgY2xhc3M9Imhvcml6b250YWwtY2hlY2tib3hlcyI+CiAgICAgICAgICAgIDxkZWVzLWlucHV0LWNoZWNrYm94CiAgICAgICAgICAgICAgLmxhYmVsPSR7Ik9wdGlvbiBBIn0KICAgICAgICAgICAgICAudmFsdWU9JHshMX0KICAgICAgICAgICAgICAubGF5b3V0TW9kZT0keyJob3Jpem9udGFsIn0KICAgICAgICAgICAgICAua2V5PSR7Im9wdGlvbkEifQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LWNoZWNrYm94PgoKICAgICAgICAgICAgPGRlZXMtaW5wdXQtY2hlY2tib3gKICAgICAgICAgICAgICAubGFiZWw9JHsiT3B0aW9uIEIifQogICAgICAgICAgICAgIC52YWx1ZT0keyEwfQogICAgICAgICAgICAgIC5sYXlvdXRNb2RlPSR7Imhvcml6b250YWwifQogICAgICAgICAgICAgIC5rZXk9JHsib3B0aW9uQiJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtY2hlY2tib3g+CgogICAgICAgICAgICA8ZGVlcy1pbnB1dC1jaGVja2JveAogICAgICAgICAgICAgIC5sYWJlbD0keyJPcHRpb24gQyJ9CiAgICAgICAgICAgICAgLnZhbHVlPSR7ITF9CiAgICAgICAgICAgICAgLmxheW91dE1vZGU9JHsiaG9yaXpvbnRhbCJ9CiAgICAgICAgICAgICAgLmtleT0keyJvcHRpb25DIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1jaGVja2JveD4KCiAgICAgICAgICAgIDxkZWVzLWlucHV0LWNoZWNrYm94CiAgICAgICAgICAgICAgLmxhYmVsPSR7Ik9wdGlvbiBEIn0KICAgICAgICAgICAgICAudmFsdWU9JHshMH0KICAgICAgICAgICAgICAubGF5b3V0TW9kZT0keyJob3Jpem9udGFsIn0KICAgICAgICAgICAgICAua2V5PSR7Im9wdGlvbkQifQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LWNoZWNrYm94PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJGZWF0dXJlIFNlbGVjdGlvbiBFeGFtcGxlIn0gLnN1YnRpdGxlPSR7IkNvbW1vbiB1c2UgY2FzZSBmb3IgZmVhdHVyZSB0b2dnbGVzIHdpdGggYmF0Y2ggb3BlcmF0aW9ucyJ9PgogICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ncm91cCI+CiAgICAgICAgICA8ZGVlcy1idXR0b24gaWQ9InNlbGVjdC1hbGwtYnRuIiB0eXBlPSJzZWNvbmRhcnkiPlNlbGVjdCBBbGw8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIGlkPSJjbGVhci1hbGwtYnRuIiB0eXBlPSJzZWNvbmRhcnkiPkNsZWFyIEFsbDwvZGVlcy1idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgICAgCiAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZS1saXN0Ij4KICAgICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICAgIDxkZWVzLWlucHV0LWNoZWNrYm94CiAgICAgICAgICAgICAgLmxhYmVsPSR7IkRhcmsgTW9kZSBTdXBwb3J0In0KICAgICAgICAgICAgICAudmFsdWU9JHshMH0KICAgICAgICAgICAgICAua2V5PSR7ImZlYXR1cmUxIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1jaGVja2JveD4KCiAgICAgICAgICAgIDxkZWVzLWlucHV0LWNoZWNrYm94CiAgICAgICAgICAgICAgLmxhYmVsPSR7IkVtYWlsIE5vdGlmaWNhdGlvbnMifQogICAgICAgICAgICAgIC52YWx1ZT0keyEwfQogICAgICAgICAgICAgIC5rZXk9JHsiZmVhdHVyZTIifQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LWNoZWNrYm94PgoKICAgICAgICAgICAgPGRlZXMtaW5wdXQtY2hlY2tib3gKICAgICAgICAgICAgICAubGFiZWw9JHsiVHdvLUZhY3RvciBBdXRoZW50aWNhdGlvbiJ9CiAgICAgICAgICAgICAgLnZhbHVlPSR7ITF9CiAgICAgICAgICAgICAgLmtleT0keyJmZWF0dXJlMyJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtY2hlY2tib3g+CgogICAgICAgICAgICA8ZGVlcy1pbnB1dC1jaGVja2JveAogICAgICAgICAgICAgIC5sYWJlbD0keyJBUEkgQWNjZXNzIn0KICAgICAgICAgICAgICAudmFsdWU9JHshMH0KICAgICAgICAgICAgICAua2V5PSR7ImZlYXR1cmU0In0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1jaGVja2JveD4KCiAgICAgICAgICAgIDxkZWVzLWlucHV0LWNoZWNrYm94CiAgICAgICAgICAgICAgLmxhYmVsPSR7IkFkdmFuY2VkIEFuYWx5dGljcyJ9CiAgICAgICAgICAgICAgLnZhbHVlPSR7ITF9CiAgICAgICAgICAgICAgLmtleT0keyJmZWF0dXJlNSJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtY2hlY2tib3g+CiAgICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IlByaXZhY3kgU2V0dGluZ3MgRXhhbXBsZSJ9IC5zdWJ0aXRsZT0keyJDaGVja2JveGVzIGluIGEgdHlwaWNhbCBmb3JtIGNvbnRleHQifT4KICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLXNlY3Rpb24iPgogICAgICAgICAgPGg0IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5Qcml2YWN5IFByZWZlcmVuY2VzPC9oND4KCiAgICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgICA8ZGVlcy1pbnB1dC1jaGVja2JveAogICAgICAgICAgICAgIC5sYWJlbD0keyJTaGFyZSBhbmFseXRpY3MgZGF0YSJ9CiAgICAgICAgICAgICAgLnZhbHVlPSR7ITB9CiAgICAgICAgICAgICAgLmRlc2NyaXB0aW9uPSR7IkhlbHAgdXMgaW1wcm92ZSBieSBzaGFyaW5nIGFub255bW91cyB1c2FnZSBkYXRhIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1jaGVja2JveD4KCiAgICAgICAgICAgIDxkZWVzLWlucHV0LWNoZWNrYm94CiAgICAgICAgICAgICAgLmxhYmVsPSR7IlBlcnNvbmFsaXplZCByZWNvbW1lbmRhdGlvbnMifQogICAgICAgICAgICAgIC52YWx1ZT0keyEwfQogICAgICAgICAgICAgIC5kZXNjcmlwdGlvbj0keyJHZXQgc3VnZ2VzdGlvbnMgYmFzZWQgb24geW91ciBhY3Rpdml0eSJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtY2hlY2tib3g+CgogICAgICAgICAgICA8ZGVlcy1pbnB1dC1jaGVja2JveAogICAgICAgICAgICAgIC5sYWJlbD0keyJNYXJrZXRpbmcgY29tbXVuaWNhdGlvbnMifQogICAgICAgICAgICAgIC52YWx1ZT0keyExfQogICAgICAgICAgICAgIC5kZXNjcmlwdGlvbj0keyJSZWNlaXZlIHByb21vdGlvbmFsIGVtYWlscyBhbmQgc3BlY2lhbCBvZmZlcnMifQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LWNoZWNrYm94PgoKICAgICAgICAgICAgPGRlZXMtaW5wdXQtY2hlY2tib3gKICAgICAgICAgICAgICAubGFiZWw9JHsiVGhpcmQtcGFydHkgaW50ZWdyYXRpb25zIn0KICAgICAgICAgICAgICAudmFsdWU9JHshMX0KICAgICAgICAgICAgICAuZGVzY3JpcHRpb249JHsiQWxsb3cgYXBwcm92ZWQgcGFydG5lcnMgdG8gYWNjZXNzIHlvdXIgZGF0YSJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtY2hlY2tib3g+CiAgICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IkludGVyYWN0aXZlIEV4YW1wbGUifSAuc3VidGl0bGU9JHsiQ2xpY2sgY2hlY2tib3hlcyB0byBzZWUgdmFsdWUgY2hhbmdlcyJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1jaGVja2JveAogICAgICAgICAgICAubGFiZWw9JHsiRmVhdHVyZSB0b2dnbGUifQogICAgICAgICAgICAudmFsdWU9JHshMX0KICAgICAgICAgICAgQGNoYW5nZVN1YmplY3Q9JHtzPT57bGV0IGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2NoZWNrYm94LW91dHB1dCIpO2lmKGUmJnMuZGV0YWlsKXtsZXQgdD1zLmRldGFpbC5nZXRWYWx1ZSgpO2UudGV4dENvbnRlbnQ9YEZlYXR1cmUgaXMgJHt0PyJlbmFibGVkIjoiZGlzYWJsZWQifWB9fX0KICAgICAgICAgID48L2RlZXMtaW5wdXQtY2hlY2tib3g+CgogICAgICAgICAgPGRlZXMtaW5wdXQtY2hlY2tib3gKICAgICAgICAgICAgLmxhYmVsPSR7IkRlYnVnIG1vZGUifQogICAgICAgICAgICAudmFsdWU9JHshMX0KICAgICAgICAgICAgQGNoYW5nZVN1YmplY3Q9JHtzPT57bGV0IGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2RlYnVnLW91dHB1dCIpO2lmKGUmJnMuZGV0YWlsKXtsZXQgdD1zLmRldGFpbC5nZXRWYWx1ZSgpO2UudGV4dENvbnRlbnQ9YERlYnVnIG1vZGU6ICR7dD8iT04iOiJPRkYifWB9fX0KICAgICAgICAgID48L2RlZXMtaW5wdXQtY2hlY2tib3g+CiAgICAgICAgPC9kZWVzLWZvcm0+CgogICAgICAgIDxkaXYgY2xhc3M9ImludGVyYWN0aXZlLXNlY3Rpb24iPgogICAgICAgICAgPGRpdiBpZD0iY2hlY2tib3gtb3V0cHV0IiBjbGFzcz0ib3V0cHV0LXRleHQiPkZlYXR1cmUgaXMgZGlzYWJsZWQ8L2Rpdj4KICAgICAgICAgIDxkaXYgaWQ9ImRlYnVnLW91dHB1dCIgY2xhc3M9Im91dHB1dC10ZXh0IiBzdHlsZT0ibWFyZ2luLXRvcDogOHB4OyI+RGVidWcgbW9kZTogT0ZGPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGl2PgogIDwvZGVlcy1kZW1vd3JhcHBlcj4KYCwiZGVtb0Z1bmMiKX0pO3ZhciBBZXQsQ1oscm5lLG9uZT1nKCgpPT57cGUoKTt6aSgpO0VkYSgpO0NyKCk7cHQoKTtBZXQ9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LENaPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxybmU9KCgpPT57bGV0IHM9W25lKCJkZWVzLWlucHV0LWNoZWNrYm94IildLGUsdD1bXSxhLHI9T3QsbixvPVtdLGw9W10scCxkPVtdLHU9W107dmFyIGM9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNJbnB1dENoZWNrYm94Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGI9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpCb29sZWFufSldLHA9W0woe3R5cGU6Qm9vbGVhbn0pXSxBZXQodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2YWx1ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh2PT4idmFsdWUiaW4gdiwiaGFzIiksZ2V0Omkodj0+di52YWx1ZSwiZ2V0Iiksc2V0OmkoKHYseCk9Pnt2LnZhbHVlPXh9LCJzZXQiKX0sbWV0YWRhdGE6Yn0sbyxsKSxBZXQodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpbmRldGVybWluYXRlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHY9PiJpbmRldGVybWluYXRlImluIHYsImhhcyIpLGdldDppKHY9PnYuaW5kZXRlcm1pbmF0ZSwiZ2V0Iiksc2V0OmkoKHYseCk9Pnt2LmluZGV0ZXJtaW5hdGU9eH0sInNldCIpfSxtZXRhZGF0YTpifSxkLHUpLEFldChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpifSxudWxsLHQpLGM9YT1lLnZhbHVlLGImJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pfXN0YXRpYyBkZW1vPUxkYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIklucHV0Il07I2U9Q1oodGhpcyxvLCExKTtnZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy4jZX1zZXQgdmFsdWUoYil7dGhpcy4jZT1ifSN0PShDWih0aGlzLGwpLENaKHRoaXMsZCwhMSkpO2dldCBpbmRldGVybWluYXRlKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGluZGV0ZXJtaW5hdGUoYil7dGhpcy4jdD1ifWNvbnN0cnVjdG9yKCl7c3VwZXIoKSxDWih0aGlzLHUpLHRoaXMubGFiZWxQb3NpdGlvbj0icmlnaHQifXN0YXRpYyBzdHlsZXM9W0hlLC4uLk90LmJhc2VTdHlsZXMsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgICAgLyogVE9ETzogTWlncmF0ZSBoYXJkY29kZWQgdmFsdWVzIHRvIC0tZGVlcy0qIENTUyB2YXJpYWJsZXMgKi8KICAgICAgICAqIHsKICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgfQoKICAgICAgICA6aG9zdCB7CiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgICAgICBmb250LWZhbWlseTogJHtOYX07CiAgICAgICAgfQoKICAgICAgICAubWFpbmNvbnRhaW5lciB7CiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgLmNoZWNrYm94IHsKICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgIGhlaWdodDogMThweDsKICAgICAgICAgIHdpZHRoOiAxOHB4OwogICAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDAgMCUgODkuOCUpIiwiaHNsKDAgMCUgMTQuOSUpIil9OwogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDEwMCUpIiwiaHNsKDAgMCUgMy45JSkiKX07CiAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICAgIG1hcmdpbi10b3A6IDFweDsKICAgICAgICB9CgogICAgICAgIC5tYWluY29udGFpbmVyOmhvdmVyIC5jaGVja2JveCB7CiAgICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA3OS44JSkiLCJoc2woMCAwJSAyMC45JSkiKX07CiAgICAgICAgfQoKICAgICAgICAuY2hlY2tib3guc2VsZWN0ZWQgewogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMjIuMiA0Ny40JSA1MS4yJSkiLCJoc2woMjE3LjIgOTEuMiUgNTkuOCUpIil9OwogICAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDUxLjIlKSIsImhzbCgyMTcuMiA5MS4yJSA1OS44JSkiKX07CiAgICAgICAgfQoKICAgICAgICAuY2hlY2tib3g6Zm9jdXMtdmlzaWJsZSB7CiAgICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUgLyAwLjEpIiwiaHNsKDIxNy4yIDkxLjIlIDU5LjglIC8gMC4xKSIpfTsKICAgICAgICB9CgogICAgICAgIC8qIENoZWNrbWFyayB1c2luZyBMdWNpZGUgaWNvbiBzdHlsZSAqLwogICAgICAgIC5jaGVja2JveCAuY2hlY2ttYXJrIHsKICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgIHRvcDogNTAlOwogICAgICAgICAgbGVmdDogNTAlOwogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgLmNoZWNrYm94LnNlbGVjdGVkIC5jaGVja21hcmsgewogICAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICB9CgogICAgICAgIC5jaGVja2JveCAuY2hlY2ttYXJrIHN2ZyB7CiAgICAgICAgICB3aWR0aDogMTJweDsKICAgICAgICAgIGhlaWdodDogMTJweDsKICAgICAgICAgIHN0cm9rZTogd2hpdGU7CiAgICAgICAgICBzdHJva2Utd2lkdGg6IDM7CiAgICAgICAgfQoKICAgICAgICAvKiBEaXNhYmxlZCBzdGF0ZSAqLwogICAgICAgIC5tYWluY29udGFpbmVyLmRpc2FibGVkIHsKICAgICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgICAgfQoKICAgICAgICAuY2hlY2tib3guZGlzYWJsZWQgewogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk1LjElKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDg5LjglKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgICB9CgogICAgICAgIC8qIExhYmVsICovCiAgICAgICAgLmxhYmVsLWNvbnRhaW5lciB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgIGdhcDogMnB4OwogICAgICAgICAgZmxleDogMTsKICAgICAgICB9CgogICAgICAgIC5jaGVja2JveC1sYWJlbCB7CiAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDE1JSkiLCJoc2woMCAwJSA5MCUpIil9OwogICAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgMC4xNXMgZWFzZTsKICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICAgIH0KCiAgICAgICAgLm1haW5jb250YWluZXI6aG92ZXIgLmNoZWNrYm94LWxhYmVsIHsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOSUpIiwiaHNsKDAgMCUgOTUlKSIpfTsKICAgICAgICB9CgogICAgICAgIC5tYWluY29udGFpbmVyLmRpc2FibGVkOmhvdmVyIC5jaGVja2JveC1sYWJlbCB7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDE1JSkiLCJoc2woMCAwJSA5MCUpIil9OwogICAgICAgIH0KCiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iaW5wdXQtd3JhcHBlciI+CiAgICAgICAgPGRpdiBjbGFzcz0ibWFpbmNvbnRhaW5lciAke3RoaXMuZGlzYWJsZWQ/ImRpc2FibGVkIjoiIn0iIEBjbGljaz0iJHt0aGlzLnRvZ2dsZVNlbGVjdGVkfSI+CiAgICAgICAgICA8ZGl2IAogICAgICAgICAgICBjbGFzcz0iY2hlY2tib3ggJHt0aGlzLnZhbHVlPyJzZWxlY3RlZCI6IiJ9ICR7dGhpcy5kaXNhYmxlZD8iZGlzYWJsZWQiOiIifSIgCiAgICAgICAgICAgIHRhYmluZGV4PSIke3RoaXMuZGlzYWJsZWQ/Ii0xIjoiMCJ9IgogICAgICAgICAgICBAa2V5ZG93bj0iJHt0aGlzLmhhbmRsZUtleWRvd259IgogICAgICAgICAgPgogICAgICAgICAgICAke3RoaXMudmFsdWU/d2AKICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNoZWNrbWFyayI+CiAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjAgNkw5IDE3TDQgMTIiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgYDp0aGlzLmluZGV0ZXJtaW5hdGU/d2AKICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2hlY2ttYXJrIj4KICAgICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNSAxMkgxOSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgogICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICBgOndgYH0KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwtY29udGFpbmVyIj4KICAgICAgICAgICAgJHt0aGlzLmxhYmVsP3dgPGRpdiBjbGFzcz0iY2hlY2tib3gtbGFiZWwiPiR7dGhpcy5sYWJlbH08L2Rpdj5gOiIifQogICAgICAgICAgICAke3RoaXMucmVuZGVyRGVzY3JpcHRpb24oKX0KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9YXN5bmMgdG9nZ2xlU2VsZWN0ZWQoKXt0aGlzLmRpc2FibGVkfHwodGhpcy52YWx1ZT0hdGhpcy52YWx1ZSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJuZXdWYWx1ZSIse2RldGFpbDp0aGlzLnZhbHVlLGJ1YmJsZXM6ITB9KSksdGhpcy5jaGFuZ2VTdWJqZWN0Lm5leHQodGhpcykpfWdldFZhbHVlKCl7cmV0dXJuIHRoaXMudmFsdWV9c2V0VmFsdWUoYil7dGhpcy52YWx1ZT1ifWZvY3VzKCl7bGV0IGI9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5jaGVja2JveCIpO2ImJmIuZm9jdXMoKX1oYW5kbGVLZXlkb3duKGIpeyhiLmtleT09PSIgInx8Yi5rZXk9PT0iRW50ZXIiKSYmKGIucHJldmVudERlZmF1bHQoKSx0aGlzLnRvZ2dsZVNlbGVjdGVkKCkpfXN0YXRpY3tDWihhLHQpfX07cmV0dXJuIGM9YX0pKCl9KTt2YXIgbnY9e307eXQobnYse2JyaWdodDooKT0+dmgsZGFyazooKT0+Ymh9KTt2YXIgYmgsdmgsRzE9ZygoKT0+e2JoPXtibHVlOiIjMDA1MGI5IixibHVlQWN0aXZlOiIjMDA2OWYyIixibHVlTXV0ZWQ6IiMwMTI0NTIiLHRleHQ6IiNmZmZmZmYifSx2aD17Ymx1ZToiIzAwNTBiOSIsYmx1ZUFjdGl2ZToiIzAwNjlmMiIsYmx1ZU11dGVkOiIjMDA2OWYyIix0ZXh0OiIjMzMzMzMzIn19KTt2YXIgUGRhLElkYT1nKCgpPT57cGUoKTtKMCgpO1BkYT1pKCgpPT53YAogIDxzdHlsZT4KICAgICR7SmAKICAgICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHg7CiAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgIH0KICAgICAgCiAgICAgIC5kZW1vLXNlY3Rpb24gewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjhmOWZhIiwiIzFhMWExYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2UwZTBlMCIsIiMzMzMiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5kZW1vLXNlY3Rpb24gaDMgewogICAgICAgIG1hcmdpbi10b3A6IDA7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzMzMiLCIjZmZmIil9OwogICAgICB9CiAgICAgIAogICAgICAuZGVtby1zZWN0aW9uIHAgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzY2NiIsIiM5OTkiKX07CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgfQogICAgICAKICAgICAgLmJ1dHRvbi1ncmlkIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMTUwcHgsIDFmcikpOwogICAgICAgIGdhcDogMTZweDsKICAgICAgfQogICAgYH0KICA8L3N0eWxlPgogIAogIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgIDxoMz5IZWFkZXIgQnV0dG9uczwvaDM+CiAgICAgIDxwPk1vZGFscyBjYW4gaGF2ZSBvcHRpb25hbCBoZWFkZXIgYnV0dG9ucyBmb3IgaGVscCBhbmQgY2xvc2luZy48L3A+CiAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ncmlkIj4KICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrPSR7KCk9PntRYS5jcmVhdGVBbmRTaG93KHtoZWFkaW5nOiJXaXRoIEhlbHAgQnV0dG9uIixzaG93SGVscEJ1dHRvbjohMCxvbkhlbHA6aShhc3luYygpPT57YXdhaXQgUWEuY3JlYXRlQW5kU2hvdyh7aGVhZGluZzoiSGVscCIsd2lkdGg6InNtYWxsIixzaG93Q2xvc2VCdXR0b246ITAsc2hvd0hlbHBCdXR0b246ITEsY29udGVudDp3YAogICAgICAgICAgICAgICAgICA8cD5UaGlzIGlzIHRoZSBoZWxwIGNvbnRlbnQgZm9yIHRoZSBtb2RhbC48L3A+CiAgICAgICAgICAgICAgICAgIDxwPllvdSBjYW4gcHJvdmlkZSBjb250ZXh0LXNwZWNpZmljIGhlbHAgaGVyZS48L3A+CiAgICAgICAgICAgICAgICBgLG1lbnVPcHRpb25zOlt7bmFtZToiR290IGl0IixhY3Rpb246aShhc3luYyBzPT5zLmRlc3Ryb3koKSwiYWN0aW9uIil9XX0pfSwib25IZWxwIiksY29udGVudDp3YAogICAgICAgICAgICAgIDxwPlRoaXMgbW9kYWwgaGFzIGEgaGVscCBidXR0b24gaW4gdGhlIGhlYWRlci4gQ2xpY2sgaXQgdG8gc2VlIGhlbHAgY29udGVudC48L3A+CiAgICAgICAgICAgICAgPHA+VGhlIGNsb3NlIGJ1dHRvbiBpcyBhbHNvIHZpc2libGUgYnkgZGVmYXVsdC48L3A+CiAgICAgICAgICAgIGAsbWVudU9wdGlvbnM6W3tuYW1lOiJPSyIsYWN0aW9uOmkoYXN5bmMgcz0+cy5kZXN0cm95KCksImFjdGlvbiIpfV19KX19PldpdGggSGVscCBCdXR0b248L2RlZXMtYnV0dG9uPgogICAgICAgIAogICAgICAgIDxkZWVzLWJ1dHRvbiBAY2xpY2s9JHsoKT0+e1FhLmNyZWF0ZUFuZFNob3coe2hlYWRpbmc6Ik5vIENsb3NlIEJ1dHRvbiIsc2hvd0Nsb3NlQnV0dG9uOiExLGNvbnRlbnQ6d2AKICAgICAgICAgICAgICA8cD5UaGlzIG1vZGFsIGhhcyBubyBjbG9zZSBidXR0b24gaW4gdGhlIGhlYWRlci48L3A+CiAgICAgICAgICAgICAgPHA+WW91IG11c3QgdXNlIHRoZSBhY3Rpb24gYnV0dG9ucyBvciBjbGljayBvdXRzaWRlIHRvIGNsb3NlIGl0LjwvcD4KICAgICAgICAgICAgYCxtZW51T3B0aW9uczpbe25hbWU6IkNsb3NlIixhY3Rpb246aShhc3luYyBzPT5zLmRlc3Ryb3koKSwiYWN0aW9uIil9XX0pfX0+Tm8gQ2xvc2UgQnV0dG9uPC9kZWVzLWJ1dHRvbj4KICAgICAgICAKICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrPSR7KCk9PntRYS5jcmVhdGVBbmRTaG93KHtoZWFkaW5nOiJCb3RoIEJ1dHRvbnMiLHNob3dIZWxwQnV0dG9uOiEwLHNob3dDbG9zZUJ1dHRvbjohMCxvbkhlbHA6aSgoKT0+YWxlcnQoIkhlbHAgY2xpY2tlZCEiKSwib25IZWxwIiksY29udGVudDp3YAogICAgICAgICAgICAgIDxwPlRoaXMgbW9kYWwgaGFzIGJvdGggaGVscCBhbmQgY2xvc2UgYnV0dG9ucy48L3A+CiAgICAgICAgICAgIGAsbWVudU9wdGlvbnM6W3tuYW1lOiJEb25lIixhY3Rpb246aShhc3luYyBzPT5zLmRlc3Ryb3koKSwiYWN0aW9uIil9XX0pfX0+Qm90aCBCdXR0b25zPC9kZWVzLWJ1dHRvbj4KICAgICAgICAKICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrPSR7KCk9PntRYS5jcmVhdGVBbmRTaG93KHtoZWFkaW5nOiJDbGVhbiBIZWFkZXIiLHNob3dDbG9zZUJ1dHRvbjohMSxzaG93SGVscEJ1dHRvbjohMSxjb250ZW50OndgCiAgICAgICAgICAgICAgPHA+VGhpcyBtb2RhbCBoYXMgYSBjbGVhbiBoZWFkZXIgd2l0aCBubyBidXR0b25zLjwvcD4KICAgICAgICAgICAgYCxtZW51T3B0aW9uczpbe25hbWU6IkNsb3NlIixhY3Rpb246aShhc3luYyBzPT5zLmRlc3Ryb3koKSwiYWN0aW9uIil9XX0pfX0+Q2xlYW4gSGVhZGVyPC9kZWVzLWJ1dHRvbj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIAogICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgPGgzPk1vZGFsIFdpZHRoIFZhcmlhdGlvbnM8L2gzPgogICAgICA8cD5Nb2RhbHMgY2FuIGhhdmUgZGlmZmVyZW50IHdpZHRoczogc21hbGwsIG1lZGl1bSwgbGFyZ2UsIGZ1bGxzY3JlZW4sIG9yIGN1c3RvbSBwaXhlbCB2YWx1ZXMuPC9wPgogICAgICA8ZGl2IGNsYXNzPSJidXR0b24tZ3JpZCI+CiAgICAgICAgPGRlZXMtYnV0dG9uIEBjbGljaz0keygpPT57UWEuY3JlYXRlQW5kU2hvdyh7aGVhZGluZzoiU21hbGwgTW9kYWwiLHdpZHRoOiJzbWFsbCIsY29udGVudDp3YAogICAgICAgICAgICAgIDxwPlRoaXMgaXMgYSBzbWFsbCBtb2RhbCB3aXRoIGEgd2lkdGggb2YgMzgwcHguIFBlcmZlY3QgZm9yIHNpbXBsZSBjb25maXJtYXRpb25zIG9yIGJyaWVmIG1lc3NhZ2VzLjwvcD4KICAgICAgICAgICAgYCxtZW51T3B0aW9uczpbe25hbWU6IkNhbmNlbCIsYWN0aW9uOmkoYXN5bmMgcz0+cy5kZXN0cm95KCksImFjdGlvbiIpfSx7bmFtZToiT0siLGFjdGlvbjppKGFzeW5jIHM9PnMuZGVzdHJveSgpLCJhY3Rpb24iKX1dfSl9fT5TbWFsbCBNb2RhbDwvZGVlcy1idXR0b24+CiAgICAgICAgCiAgICAgICAgPGRlZXMtYnV0dG9uIEBjbGljaz0keygpPT57UWEuY3JlYXRlQW5kU2hvdyh7aGVhZGluZzoiTWVkaXVtIE1vZGFsIChEZWZhdWx0KSIsd2lkdGg6Im1lZGl1bSIsY29udGVudDp3YAogICAgICAgICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0IC5sYWJlbD0keyJVc2VybmFtZSJ9PjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dCAubGFiZWw9JHsiRW1haWwifSAuaW5wdXRUeXBlPSR7ImVtYWlsIn0+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0IC5sYWJlbD0keyJQYXNzd29yZCJ9IC5pbnB1dFR5cGU9JHsicGFzc3dvcmQifT48L2RlZXMtaW5wdXQtdGV4dD4KICAgICAgICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgICAgICAgYCxtZW51T3B0aW9uczpbe25hbWU6IkNhbmNlbCIsYWN0aW9uOmkoYXN5bmMgcz0+cy5kZXN0cm95KCksImFjdGlvbiIpfSx7bmFtZToiU2lnbiBVcCIsYWN0aW9uOmkoYXN5bmMgcz0+cy5kZXN0cm95KCksImFjdGlvbiIpfV19KX19Pk1lZGl1bSBNb2RhbDwvZGVlcy1idXR0b24+CiAgICAgICAgCiAgICAgICAgPGRlZXMtYnV0dG9uIEBjbGljaz0keygpPT57UWEuY3JlYXRlQW5kU2hvdyh7aGVhZGluZzoiTGFyZ2UgTW9kYWwiLHdpZHRoOiJsYXJnZSIsY29udGVudDp3YAogICAgICAgICAgICAgIDxoND5XaWRlIENvbnRlbnQgQXJlYTwvaDQ+CiAgICAgICAgICAgICAgPHA+VGhpcyBsYXJnZSBtb2RhbCBpcyA4MDBweCB3aWRlIGFuZCBwZXJmZWN0IGZvciBkaXNwbGF5aW5nIG1vcmUgY29tcGxleCBjb250ZW50IGxpa2UgZm9ybXMgd2l0aCBtdWx0aXBsZSBjb2x1bW5zLCB0YWJsZXMsIG9yIGRldGFpbGVkIGluZm9ybWF0aW9uLjwvcD4KICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7IGdhcDogMTZweDsgbWFyZ2luLXRvcDogMTZweDsiPgogICAgICAgICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dCAubGFiZWw9JHsiRmlyc3QgTmFtZSJ9PjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dCAubGFiZWw9JHsiTGFzdCBOYW1lIn0+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0IC5sYWJlbD0keyJDb21wYW55In0+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0IC5sYWJlbD0keyJQb3NpdGlvbiJ9PjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICBgLG1lbnVPcHRpb25zOlt7bmFtZToiQ2FuY2VsIixhY3Rpb246aShhc3luYyBzPT5zLmRlc3Ryb3koKSwiYWN0aW9uIil9LHtuYW1lOiJTYXZlIixhY3Rpb246aShhc3luYyBzPT5zLmRlc3Ryb3koKSwiYWN0aW9uIil9XX0pfX0+TGFyZ2UgTW9kYWw8L2RlZXMtYnV0dG9uPgogICAgICAgIAogICAgICAgIDxkZWVzLWJ1dHRvbiBAY2xpY2s9JHsoKT0+e1FhLmNyZWF0ZUFuZFNob3coe2hlYWRpbmc6IkZ1bGxzY3JlZW4gRWRpdG9yIix3aWR0aDoiZnVsbHNjcmVlbiIsc2hvd0hlbHBCdXR0b246ITAsb25IZWxwOmkoYXN5bmMoKT0+e2FsZXJ0KCJJbiBhIHJlYWwgYXBwLCB0aGlzIHdvdWxkIHNob3cgZWRpdG9yIGRvY3VtZW50YXRpb24iKX0sIm9uSGVscCIpLGNvbnRlbnQ6d2AKICAgICAgICAgICAgICA8aDQ+RnVsbHNjcmVlbiBFeHBlcmllbmNlIHdpdGggSGVhZGVyIENvbnRyb2xzPC9oND4KICAgICAgICAgICAgICA8cD5UaGlzIG1vZGFsIHRha2VzIHVwIGFsbW9zdCB0aGUgZW50aXJlIHZpZXdwb3J0IHdpdGggYSAyMHB4IG1hcmdpbiBvbiBhbGwgc2lkZXMuIFRoZSBoZWFkZXIgYnV0dG9ucyBhcmUgcGFydGljdWxhcmx5IHVzZWZ1bCBpbiBmdWxsc2NyZWVuIG1vZGUuPC9wPgogICAgICAgICAgICAgIDxwPlRoZSBjb250ZW50IGFyZWEgY2FuIGJlIGFzIHRhbGwgYXMgbmVlZGVkIGFuZCB3aWxsIHNjcm9sbCBpZiBuZWNlc3NhcnkuPC9wPgogICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImhlaWdodDogMjAwcHg7IGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjBmMGYwIiwiIzJhMmEyYSIpfTsgYm9yZGVyLXJhZGl1czogOHB4OyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgbWFyZ2luLXRvcDogMTZweDsiPgogICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImNvbG9yOiAke2guYmRUaGVtZSgiIzk5OSIsIiM2NjYiKX0iPkxhcmdlIGNvbnRlbnQgYXJlYTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYCxtZW51T3B0aW9uczpbe25hbWU6IlNhdmUiLGFjdGlvbjppKGFzeW5jIHM9PnMuZGVzdHJveSgpLCJhY3Rpb24iKX0se25hbWU6IkNhbmNlbCIsYWN0aW9uOmkoYXN5bmMgcz0+cy5kZXN0cm95KCksImFjdGlvbiIpfV19KX19PkZ1bGxzY3JlZW4gTW9kYWw8L2RlZXMtYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgCiAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICA8aDM+Q3VzdG9tIFdpZHRoICYgQ29uc3RyYWludHM8L2gzPgogICAgICA8cD5Zb3UgY2FuIGFsc28gc2V0IGN1c3RvbSBwaXhlbCB3aWR0aHMgYW5kIG1pbi9tYXggY29uc3RyYWludHMuPC9wPgogICAgICA8ZGl2IGNsYXNzPSJidXR0b24tZ3JpZCI+CiAgICAgICAgPGRlZXMtYnV0dG9uIEBjbGljaz0keygpPT57UWEuY3JlYXRlQW5kU2hvdyh7aGVhZGluZzoiQ3VzdG9tIFdpZHRoICg3MDBweCkiLHdpZHRoOjcwMCxjb250ZW50OndgCiAgICAgICAgICAgICAgPHA+VGhpcyBtb2RhbCBoYXMgYSBjdXN0b20gd2lkdGggb2YgZXhhY3RseSA3MDAgcGl4ZWxzLjwvcD4KICAgICAgICAgICAgYCxtZW51T3B0aW9uczpbe25hbWU6IkNsb3NlIixhY3Rpb246aShhc3luYyBzPT5zLmRlc3Ryb3koKSwiYWN0aW9uIil9XX0pfX0+Q3VzdG9tIDcwMHB4PC9kZWVzLWJ1dHRvbj4KICAgICAgICAKICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrPSR7KCk9PntRYS5jcmVhdGVBbmRTaG93KHtoZWFkaW5nOiJXaXRoIE1heCBXaWR0aCIsd2lkdGg6ImxhcmdlIixtYXhXaWR0aDo2MDAsY29udGVudDp3YAogICAgICAgICAgICAgIDxwPlRoaXMgbW9kYWwgaXMgc2V0IHRvICdsYXJnZScgYnV0IGNvbnN0cmFpbmVkIGJ5IGEgbWF4V2lkdGggb2YgNjAwcHguPC9wPgogICAgICAgICAgICBgLG1lbnVPcHRpb25zOlt7bmFtZToiR290IGl0IixhY3Rpb246aShhc3luYyBzPT5zLmRlc3Ryb3koKSwiYWN0aW9uIil9XX0pfX0+TWF4IFdpZHRoIDYwMHB4PC9kZWVzLWJ1dHRvbj4KICAgICAgICAKICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrPSR7KCk9PntRYS5jcmVhdGVBbmRTaG93KHtoZWFkaW5nOiJXaXRoIE1pbiBXaWR0aCIsd2lkdGg6MzAwLG1pbldpZHRoOjQwMCxjb250ZW50OndgCiAgICAgICAgICAgICAgPHA+VGhpcyBtb2RhbCB3aWR0aCBpcyBzZXQgdG8gMzAwcHggYnV0IGhhcyBhIG1pbldpZHRoIG9mIDQwMHB4LCBzbyBpdCB3aWxsIGJlIDQwMHB4IHdpZGUuPC9wPgogICAgICAgICAgICBgLG1lbnVPcHRpb25zOlt7bmFtZToiT0siLGFjdGlvbjppKGFzeW5jIHM9PnMuZGVzdHJveSgpLCJhY3Rpb24iKX1dfSl9fT5NaW4gV2lkdGggNDAwcHg8L2RlZXMtYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgCiAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICA8aDM+QnV0dG9uIFZhcmlhdGlvbnM8L2gzPgogICAgICA8cD5Nb2RhbHMgY2FuIGhhdmUgZGlmZmVyZW50IGJ1dHRvbiBjb25maWd1cmF0aW9ucyB3aXRoIHByb3BlciBzcGFjaW5nLjwvcD4KICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWdyaWQiPgogICAgICAgIDxkZWVzLWJ1dHRvbiBAY2xpY2s9JHsoKT0+e1FhLmNyZWF0ZUFuZFNob3coe2hlYWRpbmc6Ik11bHRpcGxlIEFjdGlvbnMiLGNvbnRlbnQ6d2AKICAgICAgICAgICAgICA8cD5UaGlzIG1vZGFsIGRlbW9uc3RyYXRlcyBtdWx0aXBsZSBidXR0b25zIHdpdGggcHJvcGVyIHNwYWNpbmcgYmV0d2VlbiB0aGVtLjwvcD4KICAgICAgICAgICAgYCxtZW51T3B0aW9uczpbe25hbWU6IkRlbGV0ZSIsYWN0aW9uOmkoYXN5bmMgcz0+cy5kZXN0cm95KCksImFjdGlvbiIpfSx7bmFtZToiQ2FuY2VsIixhY3Rpb246aShhc3luYyBzPT5zLmRlc3Ryb3koKSwiYWN0aW9uIil9LHtuYW1lOiJTYXZlIENoYW5nZXMiLGFjdGlvbjppKGFzeW5jIHM9PnMuZGVzdHJveSgpLCJhY3Rpb24iKX1dfSl9fT5UaHJlZSBCdXR0b25zPC9kZWVzLWJ1dHRvbj4KICAgICAgICAKICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrPSR7KCk9PntRYS5jcmVhdGVBbmRTaG93KHtoZWFkaW5nOiJTaW5nbGUgQWN0aW9uIixjb250ZW50OndgCiAgICAgICAgICAgICAgPHA+U29tZXRpbWVzIHlvdSBqdXN0IG5lZWQgb25lIGJ1dHRvbi48L3A+CiAgICAgICAgICAgIGAsbWVudU9wdGlvbnM6W3tuYW1lOiJBY2tub3dsZWRnZSIsYWN0aW9uOmkoYXN5bmMgcz0+cy5kZXN0cm95KCksImFjdGlvbiIpfV19KX19PlNpbmdsZSBCdXR0b248L2RlZXMtYnV0dG9uPgogICAgICAgIAogICAgICAgIDxkZWVzLWJ1dHRvbiBAY2xpY2s9JHsoKT0+e1FhLmNyZWF0ZUFuZFNob3coe2hlYWRpbmc6Ik5vIEFjdGlvbnMiLGNvbnRlbnQ6d2AKICAgICAgICAgICAgICA8cD5UaGlzIG1vZGFsIGhhcyBubyBib3R0b20gYnV0dG9ucy4gVXNlIHRoZSBYIGJ1dHRvbiBvciBjbGljayBvdXRzaWRlIHRvIGNsb3NlLjwvcD4KICAgICAgICAgICAgICA8cCBzdHlsZT0ibWFyZ2luLXRvcDogMTZweDsgY29sb3I6ICR7aC5iZFRoZW1lKCIjNjY2IiwiIzk5OSIpfTsiPlRoaXMgaXMgdXNlZnVsIGZvciBpbmZvcm1hdGlvbmFsIG1vZGFscyB0aGF0IGRvbid0IHJlcXVpcmUgdXNlciBhY3Rpb24uPC9wPgogICAgICAgICAgICBgLG1lbnVPcHRpb25zOltdfSl9fT5ObyBCdXR0b25zPC9kZWVzLWJ1dHRvbj4KICAgICAgICAKICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrPSR7KCk9PntRYS5jcmVhdGVBbmRTaG93KHtoZWFkaW5nOiJMb25nIEJ1dHRvbiBMYWJlbHMiLGNvbnRlbnQ6d2AKICAgICAgICAgICAgICA8cD5UZXN0aW5nIGJ1dHRvbiBsYXlvdXQgd2l0aCBsb25nZXIgbGFiZWxzLjwvcD4KICAgICAgICAgICAgYCxtZW51T3B0aW9uczpbe25hbWU6IkRpc2NhcmQgQWxsIENoYW5nZXMiLGFjdGlvbjppKGFzeW5jIHM9PnMuZGVzdHJveSgpLCJhY3Rpb24iKX0se25hbWU6IlNhdmUgYW5kIENvbnRpbnVlIEVkaXRpbmciLGFjdGlvbjppKGFzeW5jIHM9PnMuZGVzdHJveSgpLCJhY3Rpb24iKX1dfSl9fT5Mb25nIExhYmVsczwvZGVlcy1idXR0b24+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICAKICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgIDxoMz5SZXNwb25zaXZlIEJlaGF2aW9yPC9oMz4KICAgICAgPHA+QWxsIG1vZGFscyBhdXRvbWF0aWNhbGx5IGJlY29tZSBmdWxsLXdpZHRoIG9uIG1vYmlsZSBkZXZpY2VzICg8IDc2OHB4IHZpZXdwb3J0IHdpZHRoKSBmb3IgYmV0dGVyIHVzYWJpbGl0eS48L3A+CiAgICAgIDxkZWVzLWJ1dHRvbiBAY2xpY2s9JHsoKT0+e1FhLmNyZWF0ZUFuZFNob3coe2hlYWRpbmc6IlJlc3BvbnNpdmUgTW9kYWwiLHdpZHRoOiJsYXJnZSIsc2hvd0hlbHBCdXR0b246ITAsb25IZWxwOmkoKCk9PmNvbnNvbGUubG9nKCJIZWxwIHJlcXVlc3RlZCBmb3IgcmVzcG9uc2l2ZSBtb2RhbCIpLCJvbkhlbHAiKSxjb250ZW50OndgCiAgICAgICAgICAgIDxwPlJlc2l6ZSB5b3VyIGJyb3dzZXIgd2luZG93IHRvIHNlZSBob3cgdGhpcyBtb2RhbCBhZGFwdHMuIE9uIG1vYmlsZSB2aWV3cG9ydHMsIGl0IHdpbGwgYXV0b21hdGljYWxseSB0YWtlIHRoZSBmdWxsIHdpZHRoIG1pbnVzIG1hcmdpbnMuPC9wPgogICAgICAgICAgICA8cD5UaGUgaGVhZGVyIGJ1dHRvbnMgcmVtYWluIGFjY2Vzc2libGUgYXQgYWxsIHZpZXdwb3J0IHNpemVzLjwvcD4KICAgICAgICAgIGAsbWVudU9wdGlvbnM6W3tuYW1lOiJDbG9zZSIsYWN0aW9uOmkoYXN5bmMgcz0+cy5kZXN0cm95KCksImFjdGlvbiIpfV19KX19PlRlc3QgUmVzcG9uc2l2ZTwvZGVlcy1idXR0b24+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICA8aDM+U2Nyb2xsYWJsZSBDb250ZW50PC9oMz4KICAgICAgPHA+V2hlbiBjb250ZW50IGV4Y2VlZHMgdGhlIG1vZGFsJ3MgbWF4LWhlaWdodCAoPGNvZGU+Y2FsYygxMDB2aCAtIDgwcHgpPC9jb2RlPiksIHRoZSB0aWxlIGNhcHMgYXQgdGhhdCBoZWlnaHQgYW5kIHRoZSBjb250ZW50IGFyZWEgc2Nyb2xscyBpbnNpZGUuIFRoZSBoZWFkaW5nIGFuZCBib3R0b20gYnV0dG9ucyBzdGF5IHBpbm5lZC48L3A+CiAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ncmlkIj4KICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrPSR7KCk9PntRYS5jcmVhdGVBbmRTaG93KHtoZWFkaW5nOiJMb25nIEFydGljbGUiLHdpZHRoOiJtZWRpdW0iLGNvbnRlbnQ6d2AKICAgICAgICAgICAgICA8aDQgc3R5bGU9Im1hcmdpbi10b3A6IDA7Ij5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldDwvaDQ+CiAgICAgICAgICAgICAgJHtBcnJheS5mcm9tKHtsZW5ndGg6NDB9LChzLGUpPT53YAogICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+wqcgJHtlKzF9Ljwvc3Ryb25nPgogICAgICAgICAgICAgICAgICBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LiBTZWQgZG8KICAgICAgICAgICAgICAgICAgZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQKICAgICAgICAgICAgICAgICAgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzCiAgICAgICAgICAgICAgICAgIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4gRHVpcyBhdXRlIGlydXJlIGRvbG9yCiAgICAgICAgICAgICAgICAgIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQKICAgICAgICAgICAgICAgICAgbnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsCiAgICAgICAgICAgICAgICAgIHN1bnQgaW4gY3VscGEgcXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW0uCiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgYCl9CiAgICAgICAgICAgIGAsbWVudU9wdGlvbnM6W3tuYW1lOiJDYW5jZWwiLGFjdGlvbjppKGFzeW5jIHM9PnMuZGVzdHJveSgpLCJhY3Rpb24iKX0se25hbWU6IkFjY2VwdCIsYWN0aW9uOmkoYXN5bmMgcz0+cy5kZXN0cm95KCksImFjdGlvbiIpfV19KX19PkxvbmcgQXJ0aWNsZTwvZGVlcy1idXR0b24+CgogICAgICAgIDxkZWVzLWJ1dHRvbiBAY2xpY2s9JHsoKT0+e1FhLmNyZWF0ZUFuZFNob3coe2hlYWRpbmc6IkxvbmcgTGlzdCIsd2lkdGg6InNtYWxsIixjb250ZW50OndgCiAgICAgICAgICAgICAgPHA+U2VsZWN0ZWQgaXRlbXM6PC9wPgogICAgICAgICAgICAgIDx1bCBzdHlsZT0icGFkZGluZy1sZWZ0OiAyMHB4OyBtYXJnaW46IDA7Ij4KICAgICAgICAgICAgICAgICR7QXJyYXkuZnJvbSh7bGVuZ3RoOjgwfSwocyxlKT0+d2AKICAgICAgICAgICAgICAgICAgPGxpIHN0eWxlPSJwYWRkaW5nOiA0cHggMDsiPkl0ZW0gJHtlKzF9IOKAlCBvcHRpb24gbGFiZWw8L2xpPgogICAgICAgICAgICAgICAgYCl9CiAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgYCxtZW51T3B0aW9uczpbe25hbWU6IkRvbmUiLGFjdGlvbjppKGFzeW5jIHM9PnMuZGVzdHJveSgpLCJhY3Rpb24iKX1dfSl9fT5Mb25nIExpc3Q8L2RlZXMtYnV0dG9uPgoKICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrPSR7KCk9PntRYS5jcmVhdGVBbmRTaG93KHtoZWFkaW5nOiJUYWxsIEZvcm0iLHdpZHRoOiJtZWRpdW0iLGNvbnRlbnQ6d2AKICAgICAgICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgICAgICAgJHtBcnJheS5mcm9tKHtsZW5ndGg6MjV9LChzLGUpPT53YAogICAgICAgICAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0IC5sYWJlbD0ke2BGaWVsZCAke2UrMX1gfT48L2RlZXMtaW5wdXQtdGV4dD4KICAgICAgICAgICAgICAgIGApfQogICAgICAgICAgICAgIDwvZGVlcy1mb3JtPgogICAgICAgICAgICBgLG1lbnVPcHRpb25zOlt7bmFtZToiQ2FuY2VsIixhY3Rpb246aShhc3luYyBzPT5zLmRlc3Ryb3koKSwiYWN0aW9uIil9LHtuYW1lOiJTdWJtaXQiLGFjdGlvbjppKGFzeW5jIHM9PnMuZGVzdHJveSgpLCJhY3Rpb24iKX1dfSl9fT5UYWxsIEZvcm08L2RlZXMtYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2PgpgLCJkZW1vRnVuYyIpfSk7dmFyIEFkYSxOZGE9ZygoKT0+e3BlKCk7bnIoKTtBZGE9aSgoKT0+d2AKICAgIDxkZWVzLWRlbW93cmFwcGVyPgogICAgICA8c3R5bGU+CiAgICAgICAgJHtKYAogICAgICAgICAgLmRlbW9Cb3ggewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTUlKSIsImhzbCgwIDAlIDklKSIpfTsKICAgICAgICAgICAgcGFkZGluZzogNDBweDsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgICAgfQogICAgICAgICAgLnRpbGUtZGVtby1jb250ZW50IHsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICBpbnNldDogMDsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNDUlKSIsImhzbCgwIDAlIDU1JSkiKX07CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICAgIH0KICAgICAgICAgIC5mb290ZXItc3RhdHMgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBnYXA6IDI0cHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICB9CiAgICAgICAgICAuZm9vdGVyLXN0YXRzIC5zdGF0IHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgICB9CiAgICAgICAgICAuZm9vdGVyLXN0YXRzIC5zdGF0IHN0cm9uZyB7CiAgICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTUlKSIsImhzbCgwIDAlIDkwJSkiKX07CiAgICAgICAgICB9CiAgICAgICAgYH0KICAgICAgPC9zdHlsZT4KICAgICAgPGRpdiBjbGFzcz0iZGVtb0JveCI+CiAgICAgICAgPGRlZXMtdGlsZSBoZWFkaW5nPSJTaW1wbGUgVGlsZSIgc3R5bGU9ImhlaWdodDogMjAwcHg7Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpbGUtZGVtby1jb250ZW50Ij5Db250ZW50IGFyZWEgd2l0aCByb3VuZGVkIGNvcm5lcnM8L2Rpdj4KICAgICAgICA8L2RlZXMtdGlsZT4KCiAgICAgICAgPGRlZXMtdGlsZSBoZWFkaW5nPSJUaWxlIHdpdGggRm9vdGVyIiBzdHlsZT0iaGVpZ2h0OiAyMDBweDsiPgogICAgICAgICAgPGRpdiBjbGFzcz0idGlsZS1kZW1vLWNvbnRlbnQiPkNvbnRlbnQgZ29lcyBoZXJlPC9kaXY+CiAgICAgICAgICA8ZGl2IHNsb3Q9ImZvb3RlciIgY2xhc3M9ImZvb3Rlci1zdGF0cyI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzdGF0Ij5sYXRlc3QgPHN0cm9uZz40Mjwvc3Ryb25nPjwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN0YXQiPm1pbiA8c3Ryb25nPjEyPC9zdHJvbmc+PC9zcGFuPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3RhdCI+bWF4IDxzdHJvbmc+ODc8L3N0cm9uZz48L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzdGF0Ij5hdmcgPHN0cm9uZz40NS4zPC9zdHJvbmc+PC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kZWVzLXRpbGU+CgogICAgICAgIDxkZWVzLXRpbGUgc3R5bGU9ImhlaWdodDogMjAwcHg7Ij4KICAgICAgICAgIDxkaXYgc2xvdD0iaGVhZGVyIiBzdHlsZT0iZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTJweDt3aWR0aDoxMDAlOyI+CiAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDo1MDA7Ij5DdXN0b20gSGVhZGVyPC9zcGFuPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IlNlYXJjaC4uLiIgc3R5bGU9ImZsZXg6MTttYXgtd2lkdGg6MjAwcHg7cGFkZGluZzoycHggOHB4O2JvcmRlcjoxcHggc29saWQ7Ym9yZGVyLXJhZGl1czo0cHg7Zm9udC1zaXplOjEycHg7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjppbmhlcml0O2JvcmRlci1jb2xvcjppbmhlcml0OyI+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpbGUtZGVtby1jb250ZW50Ij5DdXN0b20gaGVhZGVyIHNsb3Qgd2l0aCBzZWFyY2ggaW5wdXQ8L2Rpdj4KICAgICAgICA8L2RlZXMtdGlsZT4KICAgICAgPC9kaXY+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CiAgYCwiZGVtb0Z1bmMiKX0pO3ZhciBubmUsTDgsUmRhLG5yPWcoKCk9PntwZSgpO05kYSgpO0NyKCk7cHQoKTtubmU9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LEw4PWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxSZGE9KCgpPT57bGV0IHM9W25lKCJkZWVzLXRpbGUiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXTt2YXIgeD1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1RpbGUiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgbT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZ30pXSxwPVtMKHt0eXBlOlN0cmluZyxyZWZsZWN0OiEwfSldLGM9W1koKV0sbm5lKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaGVhZGluZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShmPT4iaGVhZGluZyJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLmhlYWRpbmcsImdldCIpLHNldDppKChmLHkpPT57Zi5oZWFkaW5nPXl9LCJzZXQiKX0sbWV0YWRhdGE6bX0sbyxsKSxubmUodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJvdmVyc2Nyb2xsIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGY9PiJvdmVyc2Nyb2xsImluIGYsImhhcyIpLGdldDppKGY9PmYub3ZlcnNjcm9sbCwiZ2V0Iiksc2V0OmkoKGYseSk9PntmLm92ZXJzY3JvbGw9eX0sInNldCIpfSxtZXRhZGF0YTptfSxkLHUpLG5uZSh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Imhhc0Zvb3RlciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShmPT4iaGFzRm9vdGVyImluIGYsImhhcyIpLGdldDppKGY9PmYuaGFzRm9vdGVyLCJnZXQiKSxzZXQ6aSgoZix5KT0+e2YuaGFzRm9vdGVyPXl9LCJzZXQiKX0sbWV0YWRhdGE6bX0sYix2KSxubmUobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6bX0sbnVsbCx0KSx4PWE9ZS52YWx1ZSxtJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm19KX1zdGF0aWMgZGVtbz1BZGE7c3RhdGljIGRlbW9Hcm91cHM9WyJMYXlvdXQiXTsjZT1MOCh0aGlzLG8sIiIpO2dldCBoZWFkaW5nKCl7cmV0dXJuIHRoaXMuI2V9c2V0IGhlYWRpbmcobSl7dGhpcy4jZT1tfSN0PShMOCh0aGlzLGwpLEw4KHRoaXMsZCwiYXV0byIpKTtnZXQgb3ZlcnNjcm9sbCgpe3JldHVybiB0aGlzLiN0fXNldCBvdmVyc2Nyb2xsKG0pe3RoaXMuI3Q9bX0jYT0oTDgodGhpcyx1KSxMOCh0aGlzLGIsITEpKTtnZXQgaGFzRm9vdGVyKCl7cmV0dXJuIHRoaXMuI2F9c2V0IGhhc0Zvb3RlcihtKXt0aGlzLiNhPW19c3RhdGljIHN0eWxlcz1bSGUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZm9udC1mYW1pbHk6ICR7TmF9OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIH0KCiAgICAgIC8qIC0tLSBUaGUgZnJhbWUgLS0tICovCiAgICAgIC50aWxlLW91dGVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZmxleDogMTsKICAgICAgICBtaW4taGVpZ2h0OiAwOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYmctcHJpbWFyeSk7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICB9CgogICAgICAvKiAtLS0gSGVhZGVyOiBiYXJlIGNvbnRhaW5lciwgb25seSB0aGUgZGVmYXVsdCBoZWFkaW5nIGdldHMgc3R5bGVkIC0tLSAqLwogICAgICAudGlsZS1oZWFkZXIgewogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAudGlsZS1oZWFkaW5nIHsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDMycHg7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTsKICAgICAgfQoKICAgICAgLyogLS0tIENvbnRlbnQ6IHRoZSByb3VuZGVkIGluc2V0IC0tLQogICAgICAgICBVc2VzIG92ZXJmbG93LXk6IGF1dG8gc28gdGhhdCB3aGVuIGEgY29uc3VtZXIgKGUuZy4gZGVlcy1tb2RhbCkgY2FwcwogICAgICAgICB0aGUgdGlsZSB3aXRoIG1heC1oZWlnaHQsIGxvbmcgY29udGVudCBzY3JvbGxzIGluc2lkZSB0aGUgdGlsZQogICAgICAgICBpbnN0ZWFkIG9mIGJlaW5nIGNsaXBwZWQuIEZvciBjb25zdW1lcnMgd2l0aG91dCBtYXgtaGVpZ2h0CiAgICAgICAgIChlLmcuIGRlZXMtc3RlcHBlciksIHRoZSB0aWxlIGdyb3dzIHdpdGggY29udGVudCBhbmQgdGhlIHNjcm9sbAogICAgICAgICBuZXZlciBhY3RpdmF0ZXMuIEhvcml6b250YWwgb3ZlcmZsb3cgc3RheXMgY2xpcHBlZCB0byBwcmVzZXJ2ZSB0aGUKICAgICAgICAgcm91bmRlZCBjb3JuZXJzLiAqLwogICAgICAudGlsZS1jb250ZW50IHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLXN1YnRsZSk7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLXN1YnRsZSk7CiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgc2Nyb2xsYmFyLXdpZHRoOiB0aGluOwogICAgICAgIHNjcm9sbGJhci1jb2xvcjogdmFyKC0tZGVlcy1jb2xvci1zY3JvbGxiYXItdGh1bWIpIHRyYW5zcGFyZW50OwogICAgICB9CgogICAgICA6aG9zdChbb3ZlcnNjcm9sbD0iY29udGFpbiJdKSAudGlsZS1jb250ZW50IHsKICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluOwogICAgICB9CgogICAgICAudGlsZS1jb250ZW50Lm5vLWZvb3RlciB7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwogICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwogICAgICB9CgogICAgICAvKiAtLS0gRm9vdGVyOiBiYXJlIGNvbnRhaW5lciwgY29uc3VtZXIgc3R5bGVzIHRoZSBzbG90dGVkIGNvbnRlbnQgLS0tICovCiAgICAgIC50aWxlLWZvb3RlciB7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC50aWxlLWZvb3Rlci5oaWRkZW4gewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJ0aWxlLW91dGVyIiBwYXJ0PSJvdXRlciI+CiAgICAgICAgPGRpdiBjbGFzcz0idGlsZS1oZWFkZXIiIHBhcnQ9ImhlYWRlciI+CiAgICAgICAgICA8c2xvdCBuYW1lPSJoZWFkZXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aWxlLWhlYWRpbmciPiR7dGhpcy5oZWFkaW5nfTwvZGl2PgogICAgICAgICAgPC9zbG90PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InRpbGUtY29udGVudCAke3RoaXMuaGFzRm9vdGVyPyIiOiJuby1mb290ZXIifSIgcGFydD0iY29udGVudCI+CiAgICAgICAgICA8c2xvdD48L3Nsb3Q+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0idGlsZS1mb290ZXIgJHt0aGlzLmhhc0Zvb3Rlcj8iIjoiaGlkZGVuIn0iIHBhcnQ9ImZvb3RlciI+CiAgICAgICAgICA8c2xvdCBuYW1lPSJmb290ZXIiIEBzbG90Y2hhbmdlPSR7dGhpcy5vbkZvb3RlclNsb3RDaGFuZ2V9Pjwvc2xvdD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfW9uRm9vdGVyU2xvdENoYW5nZShtKXtsZXQgZj1tLnRhcmdldDt0aGlzLmhhc0Zvb3Rlcj1mLmFzc2lnbmVkTm9kZXMoe2ZsYXR0ZW46ITB9KS5sZW5ndGg+MH1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksTDgodGhpcyx2KX1zdGF0aWN7TDgoYSx0KX19O3JldHVybiB4PWF9KSgpfSk7dmFyIEdsLHVpLFFhLEowPWcoKCk9PntHMSgpO3BvKCk7em4oKTtDcigpO0lkYSgpO3BlKCk7a3QoKTtGMSgpO1VhKCk7bnIoKTtwdCgpO0dsPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSx1aT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sUWE9KCgpPT57bGV0IHM9W25lKCJkZWVzLW1vZGFsIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W10sSCxrPVtdLFM9W10sSSxQPVtdLFI9W10sSyxWPVtdLFc9W10sbWUsQj1bXSxVPVtdLGhlLEY9W10saj1bXTt2YXIgdWU9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNNb2RhbCIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBsZT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZ30pXSxwPVtZKHt9KV0sYz1bWSh7fSldLHg9W0woe3R5cGU6U3RyaW5nfSldLHk9W0woe3R5cGU6TnVtYmVyfSldLE49W0woe3R5cGU6TnVtYmVyfSldLE89W0woe3R5cGU6Qm9vbGVhbn0pXSxIPVtMKHt0eXBlOkJvb2xlYW59KV0sST1bTCh7YXR0cmlidXRlOiExfSldLEs9W0woe3R5cGU6Qm9vbGVhbn0pXSxtZT1bTCh7dHlwZTpOdW1iZXJ9KV0saGU9W1koKV0sR2wodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJoZWFkaW5nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFE9PiJoZWFkaW5nImluIFEsImhhcyIpLGdldDppKFE9PlEuaGVhZGluZywiZ2V0Iiksc2V0OmkoKFEsaWUpPT57US5oZWFkaW5nPWllfSwic2V0Iil9LG1ldGFkYXRhOmxlfSxvLGwpLEdsKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY29udGVudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShRPT4iY29udGVudCJpbiBRLCJoYXMiKSxnZXQ6aShRPT5RLmNvbnRlbnQsImdldCIpLHNldDppKChRLGllKT0+e1EuY29udGVudD1pZX0sInNldCIpfSxtZXRhZGF0YTpsZX0sZCx1KSxHbCh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1lbnVPcHRpb25zIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFE9PiJtZW51T3B0aW9ucyJpbiBRLCJoYXMiKSxnZXQ6aShRPT5RLm1lbnVPcHRpb25zLCJnZXQiKSxzZXQ6aSgoUSxpZSk9PntRLm1lbnVPcHRpb25zPWllfSwic2V0Iil9LG1ldGFkYXRhOmxlfSxiLHYpLEdsKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToid2lkdGgiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUT0+IndpZHRoImluIFEsImhhcyIpLGdldDppKFE9PlEud2lkdGgsImdldCIpLHNldDppKChRLGllKT0+e1Eud2lkdGg9aWV9LCJzZXQiKX0sbWV0YWRhdGE6bGV9LG0sZiksR2wodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtYXhXaWR0aCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShRPT4ibWF4V2lkdGgiaW4gUSwiaGFzIiksZ2V0OmkoUT0+US5tYXhXaWR0aCwiZ2V0Iiksc2V0OmkoKFEsaWUpPT57US5tYXhXaWR0aD1pZX0sInNldCIpfSxtZXRhZGF0YTpsZX0sTSx6KSxHbCh0aGlzLG51bGwsTix7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1pbldpZHRoIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFE9PiJtaW5XaWR0aCJpbiBRLCJoYXMiKSxnZXQ6aShRPT5RLm1pbldpZHRoLCJnZXQiKSxzZXQ6aSgoUSxpZSk9PntRLm1pbldpZHRoPWllfSwic2V0Iil9LG1ldGFkYXRhOmxlfSxDLF8pLEdsKHRoaXMsbnVsbCxPLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2hvd0Nsb3NlQnV0dG9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFE9PiJzaG93Q2xvc2VCdXR0b24iaW4gUSwiaGFzIiksZ2V0OmkoUT0+US5zaG93Q2xvc2VCdXR0b24sImdldCIpLHNldDppKChRLGllKT0+e1Euc2hvd0Nsb3NlQnV0dG9uPWllfSwic2V0Iil9LG1ldGFkYXRhOmxlfSwkLEUpLEdsKHRoaXMsbnVsbCxILHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2hvd0hlbHBCdXR0b24iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUT0+InNob3dIZWxwQnV0dG9uImluIFEsImhhcyIpLGdldDppKFE9PlEuc2hvd0hlbHBCdXR0b24sImdldCIpLHNldDppKChRLGllKT0+e1Euc2hvd0hlbHBCdXR0b249aWV9LCJzZXQiKX0sbWV0YWRhdGE6bGV9LGssUyksR2wodGhpcyxudWxsLEkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJvbkhlbHAiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUT0+Im9uSGVscCJpbiBRLCJoYXMiKSxnZXQ6aShRPT5RLm9uSGVscCwiZ2V0Iiksc2V0OmkoKFEsaWUpPT57US5vbkhlbHA9aWV9LCJzZXQiKX0sbWV0YWRhdGE6bGV9LFAsUiksR2wodGhpcyxudWxsLEsse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtb2JpbGVGdWxsc2NyZWVuIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFE9PiJtb2JpbGVGdWxsc2NyZWVuImluIFEsImhhcyIpLGdldDppKFE9PlEubW9iaWxlRnVsbHNjcmVlbiwiZ2V0Iiksc2V0OmkoKFEsaWUpPT57US5tb2JpbGVGdWxsc2NyZWVuPWllfSwic2V0Iil9LG1ldGFkYXRhOmxlfSxWLFcpLEdsKHRoaXMsbnVsbCxtZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNvbnRlbnRQYWRkaW5nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFE9PiJjb250ZW50UGFkZGluZyJpbiBRLCJoYXMiKSxnZXQ6aShRPT5RLmNvbnRlbnRQYWRkaW5nLCJnZXQiKSxzZXQ6aSgoUSxpZSk9PntRLmNvbnRlbnRQYWRkaW5nPWllfSwic2V0Iil9LG1ldGFkYXRhOmxlfSxCLFUpLEdsKHRoaXMsbnVsbCxoZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1vZGFsWkluZGV4IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFE9PiJtb2RhbFpJbmRleCJpbiBRLCJoYXMiKSxnZXQ6aShRPT5RLm1vZGFsWkluZGV4LCJnZXQiKSxzZXQ6aSgoUSxpZSk9PntRLm1vZGFsWkluZGV4PWllfSwic2V0Iil9LG1ldGFkYXRhOmxlfSxGLGopLEdsKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOmxlfSxudWxsLHQpLHVlPWE9ZS52YWx1ZSxsZSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpsZX0pfXN0YXRpYyBkZW1vPVBkYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIk92ZXJsYXkiXTtzdGF0aWMgYXN5bmMgY3JlYXRlQW5kU2hvdyhsZSl7bGV0IFE9ZG9jdW1lbnQuYm9keSxpZT1uZXcgdWU7cmV0dXJuIGllLmhlYWRpbmc9bGUuaGVhZGluZyxpZS5jb250ZW50PWxlLmNvbnRlbnQsaWUubWVudU9wdGlvbnM9bGUubWVudU9wdGlvbnMsbGUud2lkdGgmJihpZS53aWR0aD1sZS53aWR0aCksbGUubWF4V2lkdGgmJihpZS5tYXhXaWR0aD1sZS5tYXhXaWR0aCksbGUubWluV2lkdGgmJihpZS5taW5XaWR0aD1sZS5taW5XaWR0aCksbGUuc2hvd0Nsb3NlQnV0dG9uIT09dm9pZCAwJiYoaWUuc2hvd0Nsb3NlQnV0dG9uPWxlLnNob3dDbG9zZUJ1dHRvbiksbGUuc2hvd0hlbHBCdXR0b24hPT12b2lkIDAmJihpZS5zaG93SGVscEJ1dHRvbj1sZS5zaG93SGVscEJ1dHRvbiksbGUub25IZWxwJiYoaWUub25IZWxwPWxlLm9uSGVscCksbGUubW9iaWxlRnVsbHNjcmVlbiE9PXZvaWQgMCYmKGllLm1vYmlsZUZ1bGxzY3JlZW49bGUubW9iaWxlRnVsbHNjcmVlbiksbGUuY29udGVudFBhZGRpbmchPT12b2lkIDAmJihpZS5jb250ZW50UGFkZGluZz1sZS5jb250ZW50UGFkZGluZyksaWUud2luZG93TGF5ZXI9YXdhaXQgaG8uY3JlYXRlQW5kU2hvdyh7Ymx1cjohMH0pLGllLndpbmRvd0xheWVyLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixhc3luYygpPT57YXdhaXQgaWUuZGVzdHJveSgpfSksUS5hcHBlbmQoaWUud2luZG93TGF5ZXIpLFEuYXBwZW5kKGllKSxpZS5tb2RhbFpJbmRleD14YS5nZXROZXh0WkluZGV4KCkseGEucmVnaXN0ZXIoaWUsaWUubW9kYWxaSW5kZXgpLGllfSNlPXVpKHRoaXMsbywiIik7Z2V0IGhlYWRpbmcoKXtyZXR1cm4gdGhpcy4jZX1zZXQgaGVhZGluZyhsZSl7dGhpcy4jZT1sZX0jdD0odWkodGhpcyxsKSx1aSh0aGlzLGQsdm9pZCAwKSk7Z2V0IGNvbnRlbnQoKXtyZXR1cm4gdGhpcy4jdH1zZXQgY29udGVudChsZSl7dGhpcy4jdD1sZX0jYT0odWkodGhpcyx1KSx1aSh0aGlzLGIsW10pKTtnZXQgbWVudU9wdGlvbnMoKXtyZXR1cm4gdGhpcy4jYX1zZXQgbWVudU9wdGlvbnMobGUpe3RoaXMuI2E9bGV9I3M9KHVpKHRoaXMsdiksdWkodGhpcyxtLCJtZWRpdW0iKSk7Z2V0IHdpZHRoKCl7cmV0dXJuIHRoaXMuI3N9c2V0IHdpZHRoKGxlKXt0aGlzLiNzPWxlfSNpPSh1aSh0aGlzLGYpLHVpKHRoaXMsTSx2b2lkIDApKTtnZXQgbWF4V2lkdGgoKXtyZXR1cm4gdGhpcy4jaX1zZXQgbWF4V2lkdGgobGUpe3RoaXMuI2k9bGV9I3I9KHVpKHRoaXMseiksdWkodGhpcyxDLHZvaWQgMCkpO2dldCBtaW5XaWR0aCgpe3JldHVybiB0aGlzLiNyfXNldCBtaW5XaWR0aChsZSl7dGhpcy4jcj1sZX0jbz0odWkodGhpcyxfKSx1aSh0aGlzLCQsITApKTtnZXQgc2hvd0Nsb3NlQnV0dG9uKCl7cmV0dXJuIHRoaXMuI299c2V0IHNob3dDbG9zZUJ1dHRvbihsZSl7dGhpcy4jbz1sZX0jbj0odWkodGhpcyxFKSx1aSh0aGlzLGssITEpKTtnZXQgc2hvd0hlbHBCdXR0b24oKXtyZXR1cm4gdGhpcy4jbn1zZXQgc2hvd0hlbHBCdXR0b24obGUpe3RoaXMuI249bGV9I2w9KHVpKHRoaXMsUyksdWkodGhpcyxQLHZvaWQgMCkpO2dldCBvbkhlbHAoKXtyZXR1cm4gdGhpcy4jbH1zZXQgb25IZWxwKGxlKXt0aGlzLiNsPWxlfSNjPSh1aSh0aGlzLFIpLHVpKHRoaXMsViwhMSkpO2dldCBtb2JpbGVGdWxsc2NyZWVuKCl7cmV0dXJuIHRoaXMuI2N9c2V0IG1vYmlsZUZ1bGxzY3JlZW4obGUpe3RoaXMuI2M9bGV9I2Q9KHVpKHRoaXMsVyksdWkodGhpcyxCLDE2KSk7Z2V0IGNvbnRlbnRQYWRkaW5nKCl7cmV0dXJuIHRoaXMuI2R9c2V0IGNvbnRlbnRQYWRkaW5nKGxlKXt0aGlzLiNkPWxlfSN1PSh1aSh0aGlzLFUpLHVpKHRoaXMsRiwxZTMpKTtnZXQgbW9kYWxaSW5kZXgoKXtyZXR1cm4gdGhpcy4jdX1zZXQgbW9kYWxaSW5kZXgobGUpe3RoaXMuI3U9bGV9Y29uc3RydWN0b3IoKXtzdXBlcigpfXN0YXRpYyBzdHlsZXM9W0hlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICAvKiBUT0RPOiBNaWdyYXRlIGhhcmRjb2RlZCB2YWx1ZXMgdG8gLS1kZWVzLSogQ1NTIHZhcmlhYmxlcyAqLwogICAgICA6aG9zdCB7CiAgICAgICAgZm9udC1mYW1pbHk6ICR7TmF9OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIH0KICAgICAgLm1vZGFsQ29udGFpbmVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICB0b3A6IDBweDsKICAgICAgICBsZWZ0OiAwcHg7CiAgICAgICAgd2lkdGg6IDEwMHZ3OwogICAgICAgIGhlaWdodDogMTAwdmg7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICB9CiAgICAgIGRlZXMtdGlsZSB7CiAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybSwgb3BhY2l0eTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoOHB4KSBzY2FsZSgwLjk4KTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIG1pbi1oZWlnaHQ6IDEyMHB4OwogICAgICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSA4MHB4KTsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4yNXMgY3ViaWMtYmV6aWVyKDAuMTYsIDEsIDAuMywgMSksIG9wYWNpdHkgMC4ycyBlYXNlOwogICAgICAgIG1hcmdpbjogNDBweDsKICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluOwogICAgICB9CgogICAgICBkZWVzLXRpbGU6OnBhcnQob3V0ZXIpIHsKICAgICAgICBib3gtc2hhZG93OgogICAgICAgICAgMCAwIDAgMXB4ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAwJSAvIDAuMDMpIiwiaHNsKDAgMCUgMTAwJSAvIDAuMDMpIil9LAogICAgICAgICAgMCA4cHggNDBweCAke2guYmRUaGVtZSgiaHNsKDAgMCUgMCUgLyAwLjEyKSIsImhzbCgwIDAlIDAlIC8gMC41KSIpfSwKICAgICAgICAgIDAgMnB4IDhweCAke2guYmRUaGVtZSgiaHNsKDAgMCUgMCUgLyAwLjA2KSIsImhzbCgwIDAlIDAlIC8gMC4yNSkiKX07CiAgICAgIH0KCiAgICAgIC8qIFdpZHRoIHZhcmlhdGlvbnMgKi8KICAgICAgZGVlcy10aWxlLndpZHRoLXNtYWxsIHsKICAgICAgICB3aWR0aDogMzgwcHg7CiAgICAgIH0KCiAgICAgIGRlZXMtdGlsZS53aWR0aC1tZWRpdW0gewogICAgICAgIHdpZHRoOiA1NjBweDsKICAgICAgfQoKICAgICAgZGVlcy10aWxlLndpZHRoLWxhcmdlIHsKICAgICAgICB3aWR0aDogODAwcHg7CiAgICAgIH0KCiAgICAgIGRlZXMtdGlsZS53aWR0aC1mdWxsc2NyZWVuIHsKICAgICAgICB3aWR0aDogY2FsYygxMDB2dyAtIDQwcHgpOwogICAgICAgIGhlaWdodDogY2FsYygxMDB2aCAtIDQwcHgpOwogICAgICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSA0MHB4KTsKICAgICAgfQoKICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgICAgICAgZGVlcy10aWxlIHsKICAgICAgICAgIHdpZHRoOiBjYWxjKDEwMHZ3IC0gNDBweCkgIWltcG9ydGFudDsKICAgICAgICAgIG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLm1vZGFsQ29udGFpbmVyIHsKICAgICAgICAgIHBhZGRpbmc6IDEwcHg7CiAgICAgICAgfQoKICAgICAgICBkZWVzLXRpbGUgewogICAgICAgICAgbWFyZ2luOiAxMHB4OwogICAgICAgICAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDIwcHgpOwogICAgICAgIH0KCiAgICAgICAgZGVlcy10aWxlLm1vYmlsZS1mdWxsc2NyZWVuIHsKICAgICAgICAgIHdpZHRoOiAxMDB2dyAhaW1wb3J0YW50OwogICAgICAgICAgaGVpZ2h0OiAxMDB2aCAhaW1wb3J0YW50OwogICAgICAgICAgbWF4LWhlaWdodDogMTAwdmggIWltcG9ydGFudDsKICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICB9CgogICAgICAgIGRlZXMtdGlsZS5tb2JpbGUtZnVsbHNjcmVlbjo6cGFydChvdXRlcikgewogICAgICAgICAgYm9yZGVyLXJhZGl1czogMDsKICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGRlZXMtdGlsZS5zaG93IHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTsKICAgICAgfQoKICAgICAgZGVlcy10aWxlLnNob3cucHJlZGVzdHJveSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNnB4KSBzY2FsZSgwLjk4KTsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xNXMgZWFzZS1pbiwgb3BhY2l0eSAwLjE1cyBlYXNlLWluOwogICAgICB9CgogICAgICAuaGVhZGluZyB7CiAgICAgICAgaGVpZ2h0OiAzNnB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiAwIDhweCAwIDE2cHg7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAuaGVhZGluZyAuaGVhZGluZy10ZXh0IHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgIH0KCiAgICAgIC5oZWFkaW5nIC5oZWFkZXItYnV0dG9ucyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMnB4OwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7CiAgICAgIH0KCiAgICAgIC5oZWFkaW5nIC5oZWFkZXItYnV0dG9uIHsKICAgICAgICB3aWR0aDogMjRweDsKICAgICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgIH0KCiAgICAgIC5oZWFkaW5nIC5oZWFkZXItYnV0dG9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWhvdmVyKTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXNlY29uZGFyeSk7CiAgICAgIH0KCiAgICAgIC5oZWFkaW5nIC5oZWFkZXItYnV0dG9uOmFjdGl2ZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDkwJSkiLCJoc2woMCAwJSAxNSUpIil9OwogICAgICB9CgogICAgICAuaGVhZGluZyAuaGVhZGVyLWJ1dHRvbiBkZWVzLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgfQoKICAgICAgLmJvdHRvbUJ1dHRvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAwOwogICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAuYm90dG9tQnV0dG9ucyAuYm90dG9tQnV0dG9uIHsKICAgICAgICBwYWRkaW5nOiAwIDE2cHg7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItc3VidGxlKTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgfQoKICAgICAgLmJvdHRvbUJ1dHRvbnMgLmJvdHRvbUJ1dHRvbjpmaXJzdC1jaGlsZCB7CiAgICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5ib3R0b21CdXR0b25zIC5ib3R0b21CdXR0b246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItaG92ZXIpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIH0KCiAgICAgIC5ib3R0b21CdXR0b25zIC5ib3R0b21CdXR0b246YWN0aXZlIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTIlKSIsImhzbCgwIDAlIDEzJSkiKX07CiAgICAgIH0KCiAgICAgIC5ib3R0b21CdXR0b25zIC5ib3R0b21CdXR0b24ucHJpbWFyeSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE3LjIgOTEuMiUgNTkuOCUpIiwiaHNsKDIxMy4xIDkzLjklIDY3LjglKSIpfTsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICB9CgogICAgICAuYm90dG9tQnV0dG9ucyAuYm90dG9tQnV0dG9uLnByaW1hcnk6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjE3LjIgOTEuMiUgNTkuOCUgLyAwLjA4KSIsImhzbCgyMTMuMSA5My45JSA2Ny44JSAvIDAuMDgpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNy4yIDkxLjIlIDUwJSkiLCJoc2woMjEzLjEgOTMuOSUgNzUlKSIpfTsKICAgICAgfQoKICAgICAgLmJvdHRvbUJ1dHRvbnMgLmJvdHRvbUJ1dHRvbi5wcmltYXJ5OmFjdGl2ZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTcuMiA5MS4yJSA1OS44JSAvIDAuMTIpIiwiaHNsKDIxMy4xIDkzLjklIDY3LjglIC8gMC4xMikiKX07CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe2xldCBsZT10eXBlb2YgdGhpcy53aWR0aD09InN0cmluZyI/YHdpZHRoLSR7dGhpcy53aWR0aH1gOiIiLFE9dHlwZW9mIHRoaXMud2lkdGg9PSJudW1iZXIiP2Ake3RoaXMud2lkdGh9cHhgOiIiLGllPXRoaXMubWF4V2lkdGg/YCR7dGhpcy5tYXhXaWR0aH1weGA6IiIsdGU9dGhpcy5taW5XaWR0aD9gJHt0aGlzLm1pbldpZHRofXB4YDoiIixlZT10aGlzLm1vYmlsZUZ1bGxzY3JlZW4/Im1vYmlsZS1mdWxsc2NyZWVuIjoiIjtyZXR1cm4gd2AKICAgICAgPHN0eWxlPgogICAgICAgICR7UT9gZGVlcy10aWxlIHsgd2lkdGg6ICR7UX07IH1gOiIifQogICAgICAgICR7aWU/YGRlZXMtdGlsZSB7IG1heC13aWR0aDogJHtpZX07IH1gOiIifQogICAgICAgICR7dGU/YGRlZXMtdGlsZSB7IG1pbi13aWR0aDogJHt0ZX07IH1gOiIifQogICAgICA8L3N0eWxlPgogICAgICA8ZGl2IGNsYXNzPSJtb2RhbENvbnRhaW5lciIgQGNsaWNrPSR7dGhpcy5oYW5kbGVPdXRzaWRlQ2xpY2t9IHN0eWxlPSJ6LWluZGV4OiAke3RoaXMubW9kYWxaSW5kZXh9Ij4KICAgICAgICA8ZGVlcy10aWxlIGNsYXNzPSIke2xlfSAke2VlfSIgLm92ZXJzY3JvbGw9JHsiY29udGFpbiJ9PgogICAgICAgICAgPGRpdiBzbG90PSJoZWFkZXIiIGNsYXNzPSJoZWFkaW5nIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy10ZXh0Ij4ke3RoaXMuaGVhZGluZ308L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyLWJ1dHRvbnMiPgogICAgICAgICAgICAgICR7dGhpcy5zaG93SGVscEJ1dHRvbj93YAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyLWJ1dHRvbiIgQGNsaWNrPSR7dGhpcy5oYW5kbGVIZWxwfSB0aXRsZT0iSGVscCI+CiAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHsibHVjaWRlOmhlbHBDaXJjbGUifT48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAgICAgJHt0aGlzLnNob3dDbG9zZUJ1dHRvbj93YAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyLWJ1dHRvbiIgQGNsaWNrPSR7KCk9PnRoaXMuZGVzdHJveSgpfSB0aXRsZT0iQ2xvc2UiPgogICAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7Imx1Y2lkZTp4In0+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICBgOiIifQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCIgc3R5bGU9InBhZGRpbmc6ICR7dGhpcy5jb250ZW50UGFkZGluZ31weDsiPiR7dGhpcy5jb250ZW50fTwvZGl2PgogICAgICAgICAgJHt0aGlzLm1lbnVPcHRpb25zLmxlbmd0aD4wP3dgCiAgICAgICAgICAgIDxkaXYgc2xvdD0iZm9vdGVyIiBjbGFzcz0iYm90dG9tQnV0dG9ucyI+CiAgICAgICAgICAgICAgJHt0aGlzLm1lbnVPcHRpb25zLm1hcCgoa2UsWCk9PndgCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvdHRvbUJ1dHRvbiAke1g9PT10aGlzLm1lbnVPcHRpb25zLmxlbmd0aC0xPyJwcmltYXJ5IjoiIn0gJHtrZS5uYW1lPT09Ik9LIj8ib2siOiIifSIgQGNsaWNrPSR7KCk9PntrZS5hY3Rpb24odGhpcyl9fT4ke2tlLm5hbWV9PC9kaXY+CiAgICAgICAgICAgICAgICBgKX0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgOiIifQogICAgICAgIDwvZGVlcy10aWxlPgogICAgICA8L2Rpdj4KICAgIGB9d2luZG93TGF5ZXI9dWkodGhpcyxqKTthc3luYyBmaXJzdFVwZGF0ZWQobGUpe3N1cGVyLmZpcnN0VXBkYXRlZChsZSksYXdhaXQoYXdhaXQgdGhpcy5kb210b29sc1Byb21pc2UpLmNvbnZlbmllbmNlLnNtYXJ0ZGVsYXkuZGVsYXlGb3IoMzApLHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCJkZWVzLXRpbGUiKS5jbGFzc0xpc3QuYWRkKCJzaG93Iil9YXN5bmMgaGFuZGxlT3V0c2lkZUNsaWNrKGxlKXtsZS5zdG9wUHJvcGFnYXRpb24oKTtsZXQgUT10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLm1vZGFsQ29udGFpbmVyIik7bGUudGFyZ2V0PT09USYmYXdhaXQgdGhpcy5kZXN0cm95KCl9YXN5bmMgZGVzdHJveSgpe2xldCBsZT1hd2FpdCB0aGlzLmRvbXRvb2xzUHJvbWlzZTt0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiZGVlcy10aWxlIikuY2xhc3NMaXN0LmFkZCgicHJlZGVzdHJveSIpLGF3YWl0IGxlLmNvbnZlbmllbmNlLnNtYXJ0ZGVsYXkuZGVsYXlGb3IoMjAwKSxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMpLGF3YWl0IHRoaXMud2luZG93TGF5ZXIuZGVzdHJveSgpLHhhLnVucmVnaXN0ZXIodGhpcyl9YXN5bmMgaGFuZGxlSGVscCgpe3RoaXMub25IZWxwJiZhd2FpdCB0aGlzLm9uSGVscCgpfXN0YXRpY3t1aShhLHQpfX07cmV0dXJuIHVlPWF9KSgpfSk7dmFyIE9kYSxGZGE9ZygoKT0+e3BlKCk7T2RhPWkoKCk9PndgCiAgPHN0eWxlPgogICAgJHtKYAogICAgICAuZGVtby1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDI0cHg7CiAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICBtYXgtd2lkdGg6IDgwMHB4OwogICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICB9CgogICAgICAuZGVtby1zZWN0aW9uIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y4ZjlmYSIsIiMxYTFhMWEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlMGUwZTAiLCIjMzMzIil9OwogICAgICB9CgogICAgICAuZGVtby1zZWN0aW9uIGgzIHsKICAgICAgICBtYXJnaW4tdG9wOiAwOwogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMzMzIiwiI2ZmZiIpfTsKICAgICAgfQoKICAgICAgLmRlbW8tc2VjdGlvbiBwIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM2NjYiLCIjOTk5Iil9OwogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICB9CgogICAgICAubGFiZWwtZ3JpZCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMjRweDsKICAgICAgfQoKICAgICAgLmxhYmVsLXJvdyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgICAgZ2FwOiAxNnB4OwogICAgICB9CgogICAgICAubGFiZWwtcm93IC5hbm5vdGF0aW9uIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM4ODgiLCIjNjY2Iil9OwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIG1pbi13aWR0aDogMjAwcHg7CiAgICAgIH0KICAgIGB9CiAgPC9zdHlsZT4KCiAgPGRpdiBjbGFzcz0iZGVtby1jb250YWluZXIiPgogICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgPGgzPkJhc2ljIExhYmVsPC9oMz4KICAgICAgPHA+QSBzaW1wbGUgdGV4dCBsYWJlbCB3aXRoIG5vIGFkZGl0aW9uYWwgaW5kaWNhdG9ycy48L3A+CiAgICAgIDxkaXYgY2xhc3M9ImxhYmVsLWdyaWQiPgogICAgICAgIDxkaXYgY2xhc3M9ImxhYmVsLXJvdyI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+bGFiZWw9IlVzZXJuYW1lIjwvc3Bhbj4KICAgICAgICAgIDxkZWVzLWxhYmVsIC5sYWJlbD0keyJVc2VybmFtZSJ9PjwvZGVlcy1sYWJlbD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbC1yb3ciPgogICAgICAgICAgPHNwYW4gY2xhc3M9ImFubm90YXRpb24iPmxhYmVsPSJFbWFpbCBBZGRyZXNzIjwvc3Bhbj4KICAgICAgICAgIDxkZWVzLWxhYmVsIC5sYWJlbD0keyJFbWFpbCBBZGRyZXNzIn0+PC9kZWVzLWxhYmVsPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgIDxoMz5SZXF1aXJlZCBJbmRpY2F0b3I8L2gzPgogICAgICA8cD5XaGVuIDxjb2RlPnJlcXVpcmVkPC9jb2RlPiBpcyBzZXQsIGEgcmVkIGFzdGVyaXNrIGFwcGVhcnMgYWZ0ZXIgdGhlIGxhYmVsIHRleHQuPC9wPgogICAgICA8ZGl2IGNsYXNzPSJsYWJlbC1ncmlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbC1yb3ciPgogICAgICAgICAgPHNwYW4gY2xhc3M9ImFubm90YXRpb24iPnJlcXVpcmVkPSR7Int0cnVlfSJ9PC9zcGFuPgogICAgICAgICAgPGRlZXMtbGFiZWwgLmxhYmVsPSR7IkZ1bGwgTmFtZSJ9IC5yZXF1aXJlZD0keyEwfT48L2RlZXMtbGFiZWw+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwtcm93Ij4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5yZXF1aXJlZD0keyJ7ZmFsc2V9In0gKGRlZmF1bHQpPC9zcGFuPgogICAgICAgICAgPGRlZXMtbGFiZWwgLmxhYmVsPSR7Ik5pY2tuYW1lIn0gLnJlcXVpcmVkPSR7ITF9PjwvZGVlcy1sYWJlbD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICA8aDM+SW5mbyBUZXh0IChJbmZvIEljb24pPC9oMz4KICAgICAgPHA+V2hlbiA8Y29kZT5pbmZvVGV4dDwvY29kZT4gaXMgc2V0LCBhbiBpbmZvIGljb24gYXBwZWFycyBuZXh0IHRvIHRoZSBsYWJlbC4gSG92ZXIgb3ZlciBpdCB0byBzZWUgdGhlIHRvb2x0aXAuPC9wPgogICAgICA8ZGl2IGNsYXNzPSJsYWJlbC1ncmlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbC1yb3ciPgogICAgICAgICAgPHNwYW4gY2xhc3M9ImFubm90YXRpb24iPmluZm9UZXh0PSIuLi4iPC9zcGFuPgogICAgICAgICAgPGRlZXMtbGFiZWwgLmxhYmVsPSR7IkFQSSBLZXkifSAuaW5mb1RleHQ9JHsiWW91ciBBUEkga2V5IGNhbiBiZSBmb3VuZCBpbiB0aGUgZGV2ZWxvcGVyIHNldHRpbmdzIGRhc2hib2FyZC4ifT48L2RlZXMtbGFiZWw+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwtcm93Ij4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5zaG9ydCBpbmZvVGV4dDwvc3Bhbj4KICAgICAgICAgIDxkZWVzLWxhYmVsIC5sYWJlbD0keyJSZWdpb24ifSAuaW5mb1RleHQ9JHsiU2VsZWN0IHlvdXIgbmVhcmVzdCBkYXRhY2VudGVyLiJ9PjwvZGVlcy1sYWJlbD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICA8aDM+UmVxdWlyZWQgKyBJbmZvIFRleHQ8L2gzPgogICAgICA8cD5Cb3RoIGluZGljYXRvcnMgY2FuIGJlIGNvbWJpbmVkLiBUaGUgYXN0ZXJpc2sgYXBwZWFycyBmaXJzdCwgdGhlbiB0aGUgaW5mbyBpY29uLjwvcD4KICAgICAgPGRpdiBjbGFzcz0ibGFiZWwtZ3JpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwtcm93Ij4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5yZXF1aXJlZCArIGluZm9UZXh0PC9zcGFuPgogICAgICAgICAgPGRlZXMtbGFiZWwgLmxhYmVsPSR7IlBhc3N3b3JkIn0gLnJlcXVpcmVkPSR7ITB9IC5pbmZvVGV4dD0keyJNdXN0IGJlIGF0IGxlYXN0IDggY2hhcmFjdGVycyB3aXRoIG9uZSB1cHBlcmNhc2UgbGV0dGVyIGFuZCBvbmUgbnVtYmVyLiJ9PjwvZGVlcy1sYWJlbD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbC1yb3ciPgogICAgICAgICAgPHNwYW4gY2xhc3M9ImFubm90YXRpb24iPnJlcXVpcmVkICsgaW5mb1RleHQ8L3NwYW4+CiAgICAgICAgICA8ZGVlcy1sYWJlbCAubGFiZWw9JHsiRW1haWwgQWRkcmVzcyJ9IC5yZXF1aXJlZD0keyEwfSAuaW5mb1RleHQ9JHsiV2Ugd2lsbCBzZW5kIGEgdmVyaWZpY2F0aW9uIGxpbmsgdG8gdGhpcyBhZGRyZXNzLiJ9PjwvZGVlcy1sYWJlbD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICA8aDM+RW1wdHkgTGFiZWw8L2gzPgogICAgICA8cD5XaGVuIDxjb2RlPmxhYmVsPC9jb2RlPiBpcyBlbXB0eSBvciBub3Qgc2V0LCBub3RoaW5nIGlzIHJlbmRlcmVkLiBUaGUgZWxlbWVudCBiZWxvdyBoYXMgbm8gbGFiZWwgdGV4dDo8L3A+CiAgICAgIDxkaXYgY2xhc3M9ImxhYmVsLWdyaWQiPgogICAgICAgIDxkaXYgY2xhc3M9ImxhYmVsLXJvdyI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+bGFiZWw9IiIgKGVtcHR5KTwvc3Bhbj4KICAgICAgICAgIDxkZWVzLWxhYmVsIC5sYWJlbD0keyIifT48L2RlZXMtbGFiZWw+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CmAsImRlbW9GdW5jIil9KTt2YXIgbG5lLEU4LEJkYSxsdj1nKCgpPT57cG8oKTtHMSgpO3BlKCk7RmRhKCk7cHQoKTtsbmU9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LEU4PWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxCZGE9KCgpPT57bGV0IHM9W25lKCJkZWVzLWxhYmVsIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W107dmFyIHg9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNMYWJlbCIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBtPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6U3RyaW5nLHJlZmxlY3Q6ITB9KV0scD1bTCh7dHlwZTpTdHJpbmcscmVmbGVjdDohMH0pXSxjPVtMKHt0eXBlOkJvb2xlYW4scmVmbGVjdDohMH0pXSxsbmUodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJsYWJlbCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShmPT4ibGFiZWwiaW4gZiwiaGFzIiksZ2V0OmkoZj0+Zi5sYWJlbCwiZ2V0Iiksc2V0OmkoKGYseSk9PntmLmxhYmVsPXl9LCJzZXQiKX0sbWV0YWRhdGE6bX0sbyxsKSxsbmUodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpbmZvVGV4dCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShmPT4iaW5mb1RleHQiaW4gZiwiaGFzIiksZ2V0OmkoZj0+Zi5pbmZvVGV4dCwiZ2V0Iiksc2V0OmkoKGYseSk9PntmLmluZm9UZXh0PXl9LCJzZXQiKX0sbWV0YWRhdGE6bX0sZCx1KSxsbmUodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJyZXF1aXJlZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShmPT4icmVxdWlyZWQiaW4gZiwiaGFzIiksZ2V0OmkoZj0+Zi5yZXF1aXJlZCwiZ2V0Iiksc2V0OmkoKGYseSk9PntmLnJlcXVpcmVkPXl9LCJzZXQiKX0sbWV0YWRhdGE6bX0sYix2KSxsbmUobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6bX0sbnVsbCx0KSx4PWE9ZS52YWx1ZSxtJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm19KX1zdGF0aWMgZGVtbz1PZGE7c3RhdGljIGRlbW9Hcm91cHM9WyJMYXlvdXQiLCJJbnB1dCJdOyNlPUU4KHRoaXMsbywiIik7Z2V0IGxhYmVsKCl7cmV0dXJuIHRoaXMuI2V9c2V0IGxhYmVsKG0pe3RoaXMuI2U9bX0jdD0oRTgodGhpcyxsKSxFOCh0aGlzLGQsdm9pZCAwKSk7Z2V0IGluZm9UZXh0KCl7cmV0dXJuIHRoaXMuI3R9c2V0IGluZm9UZXh0KG0pe3RoaXMuI3Q9bX0jYT0oRTgodGhpcyx1KSxFOCh0aGlzLGIsITEpKTtnZXQgcmVxdWlyZWQoKXtyZXR1cm4gdGhpcy4jYX1zZXQgcmVxdWlyZWQobSl7dGhpcy4jYT1tfXN0YXRpYyBzdHlsZXM9W0hlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICAvKiBUT0RPOiBNaWdyYXRlIGhhcmRjb2RlZCB2YWx1ZXMgdG8gLS1kZWVzLSogQ1NTIHZhcmlhYmxlcyAqLwogICAgICA6aG9zdCB7CiAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgJ1JvYm90bycsIHNhbnMtc2VyaWY7CiAgICAgIH0KCiAgICAgIC5sYWJlbCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDE1JSkiLCJoc2woMCAwJSA5MCUpIil9OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNnB4OwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTsKICAgICAgfQoKICAgICAgLnJlcXVpcmVkIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDg0LjIlIDYwLjIlKSIsImhzbCgwIDcyLjIlIDUwLjYlKSIpfTsKICAgICAgICBtYXJnaW4tbGVmdDogMnB4OwogICAgICB9CgogICAgICAuZGVzY3JpcHRpb24taWNvbiB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICB3aWR0aDogMjRweDsKICAgICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgICAgbWFyZ2luOiAtNnB4IDAgLTZweCAycHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzIGVhc2UsIGNvbG9yIDAuMTVzIGVhc2U7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA0NS4xJSkiLCJoc2woMCAwJSA2My45JSkiKX07CiAgICAgIH0KCiAgICAgIC5kZXNjcmlwdGlvbi1pY29uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMCUgLyAwLjA2KSIsImhzbCgwIDAlIDEwMCUgLyAwLjA4KSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDI1JSkiLCJoc2woMCAwJSA4MCUpIil9OwogICAgICB9CgogICAgICAuZGVzY3JpcHRpb24taWNvbiBkZWVzLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgICR7dGhpcy5sYWJlbD93YAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbCI+CiAgICAgICAgICAgICAgJHt0aGlzLmxhYmVsfQogICAgICAgICAgICAgICR7dGhpcy5yZXF1aXJlZD93YDxzcGFuIGNsYXNzPSJyZXF1aXJlZCI+Kjwvc3Bhbj5gOiIifQogICAgICAgICAgICAgICR7dGhpcy5pbmZvVGV4dD93YAogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlc2NyaXB0aW9uLWljb24iPgogICAgICAgICAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6aW5mbyJ9PjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkZWVzLXNwZWVjaGJ1YmJsZSAudGV4dD0ke3RoaXMuaW5mb1RleHR9PjwvZGVlcy1zcGVlY2hidWJibGU+CiAgICAgICAgICAgICAgICAgIGA6d2BgfQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIGA6d2BgfQogICAgYH1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksRTgodGhpcyx2KX1zdGF0aWN7RTgoYSx0KX19O3JldHVybiB4PWF9KSgpfSk7dmFyIGNuZSxOZXQ9ZygoKT0+e2NuZT0iMC41NS4xIn0pO3ZhciBjdixLMSxIZGEsUDg9ZygoKT0+e3BlKCk7a3QoKTtOZXQoKTtwdCgpO2N2PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxLMT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sSGRhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy13b3Jrc3BhY2UtbW9uYWNvIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W107dmFyIE49Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNXb3Jrc3BhY2VNb25hY28iKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgQz10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZ30pXSxwPVtMKHt0eXBlOlN0cmluZ30pXSxjPVtMKHt0eXBlOlN0cmluZ30pXSx4PVtMKHt0eXBlOk9iamVjdH0pXSx5PVtMKHt0eXBlOkJvb2xlYW59KV0sY3YodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjb250ZW50IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJjb250ZW50ImluIF8sImhhcyIpLGdldDppKF89Pl8uY29udGVudCwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLmNvbnRlbnQ9T30sInNldCIpfSxtZXRhZGF0YTpDfSxvLGwpLGN2KHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibGFuZ3VhZ2UiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+Imxhbmd1YWdlImluIF8sImhhcyIpLGdldDppKF89Pl8ubGFuZ3VhZ2UsImdldCIpLHNldDppKChfLE8pPT57Xy5sYW5ndWFnZT1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LGQsdSksY3YodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJmaWxlUGF0aCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4iZmlsZVBhdGgiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5maWxlUGF0aCwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLmZpbGVQYXRoPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sYix2KSxjdih0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNvbnRlbnRTdWJqZWN0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJjb250ZW50U3ViamVjdCJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLmNvbnRlbnRTdWJqZWN0LCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uY29udGVudFN1YmplY3Q9T30sInNldCIpfSxtZXRhZGF0YTpDfSxtLGYpLGN2KHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToid29yZFdyYXAiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+IndvcmRXcmFwImluIF8sImhhcyIpLGdldDppKF89Pl8ud29yZFdyYXAsImdldCIpLHNldDppKChfLE8pPT57Xy53b3JkV3JhcD1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LE0seiksY3YobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6Q30sbnVsbCx0KSxOPWE9ZS52YWx1ZSxDJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOkN9KX1zdGF0aWMgZGVtbz1pKCgpPT53YDxkZWVzLXdvcmtzcGFjZS1tb25hY28+PC9kZWVzLXdvcmtzcGFjZS1tb25hY28+YCwiZGVtbyIpO3N0YXRpYyBkZW1vR3JvdXBzPVsiV29ya3NwYWNlIl07c3RhdGljIG1vbmFjb0RlZmVycmVkO2VkaXRvckRlZmVycmVkPXV0LnNtYXJ0cHJvbWlzZS5kZWZlcigpOyNlPUsxKHRoaXMsbyxgZnVuY3Rpb24gaGVsbG8oKSB7CglhbGVydCgnSGVsbG8gd29ybGQhJyk7Cn1gKTtnZXQgY29udGVudCgpe3JldHVybiB0aGlzLiNlfXNldCBjb250ZW50KEMpe3RoaXMuI2U9Q30jdD0oSzEodGhpcyxsKSxLMSh0aGlzLGQsInR5cGVzY3JpcHQiKSk7Z2V0IGxhbmd1YWdlKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGxhbmd1YWdlKEMpe3RoaXMuI3Q9Q30jYT0oSzEodGhpcyx1KSxLMSh0aGlzLGIsIiIpKTtnZXQgZmlsZVBhdGgoKXtyZXR1cm4gdGhpcy4jYX1zZXQgZmlsZVBhdGgoQyl7dGhpcy4jYT1DfSNzPShLMSh0aGlzLHYpLEsxKHRoaXMsbSxuZXcgdXQuc21hcnRyeC5yeGpzLlN1YmplY3QpKTtnZXQgY29udGVudFN1YmplY3QoKXtyZXR1cm4gdGhpcy4jc31zZXQgY29udGVudFN1YmplY3QoQyl7dGhpcy4jcz1DfSNpPShLMSh0aGlzLGYpLEsxKHRoaXMsTSwib2ZmIikpO2dldCB3b3JkV3JhcCgpe3JldHVybiB0aGlzLiNpfXNldCB3b3JkV3JhcChDKXt0aGlzLiNpPUN9bW9uYWNvVGhlbWVTdWJzY3JpcHRpb249KEsxKHRoaXMseiksbnVsbCk7aXNVcGRhdGluZ0Zyb21FeHRlcm5hbD0hMTtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksamkuc2V0dXBEb21Ub29scygpfXN0YXRpYyBzdHlsZXM9W0hlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICAvKiBUT0RPOiBNaWdyYXRlIGhhcmRjb2RlZCB2YWx1ZXMgdG8gLS1kZWVzLSogQ1NTIHZhcmlhYmxlcyAqLwogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgKiB7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLm1haW5ib3ggewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgICNjb250YWluZXIgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJtYWluYm94Ij4KICAgICAgICA8ZGl2IGlkPSJjb250YWluZXIiPjwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9YXN5bmMgZmlyc3RVcGRhdGVkKEMpe3N1cGVyLmZpcnN0VXBkYXRlZChDKTtsZXQgXz10aGlzLnNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNvbnRhaW5lciIpLE89YGh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbW9uYWNvLWVkaXRvckAke2NuZX1gO2lmKCFOLm1vbmFjb0RlZmVycmVkKXtOLm1vbmFjb0RlZmVycmVkPXV0LnNtYXJ0cHJvbWlzZS5kZWZlcigpO2xldCBrPWAke099L21pbi92cy9sb2FkZXIuanNgLFM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7Uy5zcmM9ayxTLm9ubG9hZD0oKT0+e04ubW9uYWNvRGVmZXJyZWQucmVzb2x2ZSgpfSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKFMpfWF3YWl0IE4ubW9uYWNvRGVmZXJyZWQucHJvbWlzZSx3aW5kb3cucmVxdWlyZS5jb25maWcoe3BhdGhzOnt2czpgJHtPfS9taW4vdnNgfX0pLHdpbmRvdy5yZXF1aXJlKFsidnMvZWRpdG9yL2VkaXRvci5tYWluIl0sYXN5bmMoKT0+e2xldCBrPWF3YWl0IHRoaXMuZG9tdG9vbHNQcm9taXNlLEk9ay50aGVtZU1hbmFnZXIuZ29CcmlnaHRCb29sZWFuPyJ2cyI6InZzLWRhcmsiLFA9d2luZG93Lm1vbmFjbyxSPW51bGw7aWYodGhpcy5maWxlUGF0aCl7bGV0IFY9UC5VcmkucGFyc2UoYGZpbGU6Ly8ke3RoaXMuZmlsZVBhdGh9YCk7Uj1QLmVkaXRvci5nZXRNb2RlbChWKSxSP1Iuc2V0VmFsdWUodGhpcy5jb250ZW50KTpSPVAuZWRpdG9yLmNyZWF0ZU1vZGVsKHRoaXMuY29udGVudCx0aGlzLmxhbmd1YWdlLFYpfWxldCBLPVAuZWRpdG9yLmNyZWF0ZShfLHttb2RlbDpSfHx2b2lkIDAsdmFsdWU6Uj92b2lkIDA6dGhpcy5jb250ZW50LGxhbmd1YWdlOlI/dm9pZCAwOnRoaXMubGFuZ3VhZ2UsdGhlbWU6SSx1c2VTaGFkb3dET006ITAsZm9udFNpemU6MTYsYXV0b21hdGljTGF5b3V0OiEwLHdvcmRXcmFwOnRoaXMud29yZFdyYXAsaG92ZXI6e2VuYWJsZWQ6ITAsZGVsYXk6MzAwLHN0aWNreTohMCxhYm92ZTohMX19KTt0aGlzLm1vbmFjb1RoZW1lU3Vic2NyaXB0aW9uPWsudGhlbWVNYW5hZ2VyLnRoZW1lT2JzZXJ2YWJsZS5zdWJzY3JpYmUoVj0+e2xldCBXPVY/InZzIjoidnMtZGFyayI7Sy51cGRhdGVPcHRpb25zKHt0aGVtZTpXfSl9KSx0aGlzLmVkaXRvckRlZmVycmVkLnJlc29sdmUoSyl9KTtsZXQgJD1hd2FpdChhd2FpdCBmZXRjaChgJHtPfS9taW4vdnMvZWRpdG9yL2VkaXRvci5tYWluLmNzc2ApKS50ZXh0KCksRT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO0UudGV4dENvbnRlbnQ9JCx0aGlzLnNoYWRvd1Jvb3QuYXBwZW5kKEUpO2xldCBIPWF3YWl0IHRoaXMuZWRpdG9yRGVmZXJyZWQucHJvbWlzZTtILm9uRGlkQ2hhbmdlTW9kZWxDb250ZW50KGFzeW5jIGs9PntpZih0aGlzLmlzVXBkYXRpbmdGcm9tRXh0ZXJuYWwpcmV0dXJuO2xldCBTPUguZ2V0VmFsdWUoKTt0aGlzLmNvbnRlbnRTdWJqZWN0Lm5leHQoUyksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY29udGVudC1jaGFuZ2UiLHtkZXRhaWw6UyxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfSksdGhpcy5jb250ZW50U3ViamVjdC5uZXh0KEguZ2V0VmFsdWUoKSl9YXN5bmMgdXBkYXRlZChDKXtzdXBlci51cGRhdGVkKEMpO2xldCBfPXdpbmRvdy5tb25hY287aWYoXyl7aWYoQy5oYXMoImZpbGVQYXRoIikmJnRoaXMuZmlsZVBhdGgpe2xldCBPPWF3YWl0IHRoaXMuZWRpdG9yRGVmZXJyZWQucHJvbWlzZSwkPV8uVXJpLnBhcnNlKGBmaWxlOi8vJHt0aGlzLmZpbGVQYXRofWApLEU9Xy5lZGl0b3IuZ2V0TW9kZWwoJCk7RT9FLmdldFZhbHVlKCkhPT10aGlzLmNvbnRlbnQmJih0aGlzLmlzVXBkYXRpbmdGcm9tRXh0ZXJuYWw9ITAsRS5zZXRWYWx1ZSh0aGlzLmNvbnRlbnQpLHRoaXMuaXNVcGRhdGluZ0Zyb21FeHRlcm5hbD0hMSk6RT1fLmVkaXRvci5jcmVhdGVNb2RlbCh0aGlzLmNvbnRlbnQsdGhpcy5sYW5ndWFnZSwkKSxPLmdldE1vZGVsKCk/LnVyaS50b1N0cmluZygpIT09JC50b1N0cmluZygpJiZPLnNldE1vZGVsKEUpO3JldHVybn1pZihDLmhhcygiY29udGVudCIpKXtsZXQgTz1hd2FpdCB0aGlzLmVkaXRvckRlZmVycmVkLnByb21pc2U7Ty5nZXRWYWx1ZSgpIT09dGhpcy5jb250ZW50JiYodGhpcy5pc1VwZGF0aW5nRnJvbUV4dGVybmFsPSEwLE8uc2V0VmFsdWUodGhpcy5jb250ZW50KSx0aGlzLmlzVXBkYXRpbmdGcm9tRXh0ZXJuYWw9ITEpfWlmKEMuaGFzKCJsYW5ndWFnZSIpKXtsZXQgJD0oYXdhaXQgdGhpcy5lZGl0b3JEZWZlcnJlZC5wcm9taXNlKS5nZXRNb2RlbCgpOyQmJl8uZWRpdG9yLnNldE1vZGVsTGFuZ3VhZ2UoJCx0aGlzLmxhbmd1YWdlKX19fWFzeW5jIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLm1vbmFjb1RoZW1lU3Vic2NyaXB0aW9uJiYodGhpcy5tb25hY29UaGVtZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMubW9uYWNvVGhlbWVTdWJzY3JpcHRpb249bnVsbCl9YXN5bmMgc2V0Q29udGVudEV4dGVybmFsKEMsXz0hMCl7bGV0IE89YXdhaXQgdGhpcy5lZGl0b3JEZWZlcnJlZC5wcm9taXNlO2lmKE8uZ2V0VmFsdWUoKT09PUMpcmV0dXJuO2xldCBFPV8/Ty5nZXRQb3NpdGlvbigpOm51bGwsSD1fP08uZ2V0U2VsZWN0aW9ucygpOm51bGwsaz1fP08uZ2V0U2Nyb2xsVG9wKCk6MCxTPV8/Ty5nZXRTY3JvbGxMZWZ0KCk6MDtpZih0aGlzLmlzVXBkYXRpbmdGcm9tRXh0ZXJuYWw9ITAsTy5zZXRWYWx1ZShDKSx0aGlzLmlzVXBkYXRpbmdGcm9tRXh0ZXJuYWw9ITEsXyl7aWYoRSl7bGV0IEk9Ty5nZXRNb2RlbCgpLFA9ST8uZ2V0TGluZUNvdW50KCl8fDEsUj1NYXRoLm1pbihFLmxpbmVOdW1iZXIsUCksSz1JPy5nZXRMaW5lTWF4Q29sdW1uKFIpfHwxLFY9TWF0aC5taW4oRS5jb2x1bW4sSyk7Ty5zZXRQb3NpdGlvbih7bGluZU51bWJlcjpSLGNvbHVtbjpWfSl9aWYoSCYmSC5sZW5ndGg+MCl0cnl7Ty5zZXRTZWxlY3Rpb25zKEgpfWNhdGNoe31PLnNldFNjcm9sbFBvc2l0aW9uKHtzY3JvbGxUb3A6ayxzY3JvbGxMZWZ0OlN9KX19c3RhdGlje0sxKGEsdCl9fTtyZXR1cm4gTj1hfSkoKX0pO3ZhciBUZCxLcixJOCxkbmUsUmV0PWcoKCk9Pnt6aSgpO3BlKCk7cHQoKTtKMCgpO1VhKCk7bHYoKTtucigpO1A4KCk7UDgoKTtUZD1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sS3I9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LEk4PVt7a2V5OiJ0eXBlc2NyaXB0IixsYWJlbDoiVHlwZVNjcmlwdCJ9LHtrZXk6ImphdmFzY3JpcHQiLGxhYmVsOiJKYXZhU2NyaXB0In0se2tleToianNvbiIsbGFiZWw6IkpTT04ifSx7a2V5OiJodG1sIixsYWJlbDoiSFRNTCJ9LHtrZXk6ImNzcyIsbGFiZWw6IkNTUyJ9LHtrZXk6InNjc3MiLGxhYmVsOiJTQ1NTIn0se2tleToibWFya2Rvd24iLGxhYmVsOiJNYXJrZG93biJ9LHtrZXk6InlhbWwiLGxhYmVsOiJZQU1MIn0se2tleToieG1sIixsYWJlbDoiWE1MIn0se2tleToic3FsIixsYWJlbDoiU1FMIn0se2tleToicHl0aG9uIixsYWJlbDoiUHl0aG9uIn0se2tleToiamF2YSIsbGFiZWw6IkphdmEifSx7a2V5OiJjc2hhcnAiLGxhYmVsOiJDIyJ9LHtrZXk6ImNwcCIsbGFiZWw6IkMrKyJ9LHtrZXk6ImdvIixsYWJlbDoiR28ifSx7a2V5OiJydXN0IixsYWJlbDoiUnVzdCJ9LHtrZXk6InNoZWxsIixsYWJlbDoiU2hlbGwifSx7a2V5OiJwbGFpbnRleHQiLGxhYmVsOiJQbGFpbiBUZXh0In1dLGRuZT0oKCk9PntsZXQgcz1bbmUoImRlZXMtaW5wdXQtY29kZSIpXSxlLHQ9W10sYSxyPU90LG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdLEgsaz1bXSxTPVtdLEksUD1bXSxSPVtdO3ZhciBLPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzSW5wdXRDb2RlIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IFY9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpTdHJpbmd9KV0scD1bTCh7dHlwZTpTdHJpbmd9KV0sYz1bTCh7dHlwZTpTdHJpbmd9KV0seD1bTCh7dHlwZTpTdHJpbmd9KV0seT1bTCh7dHlwZTpCb29sZWFufSldLE49W1koKV0sTz1bWSgpXSxIPVtZKCldLEk9W1koKV0sVGQodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2YWx1ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShXPT4idmFsdWUiaW4gVywiaGFzIiksZ2V0OmkoVz0+Vy52YWx1ZSwiZ2V0Iiksc2V0OmkoKFcsbWUpPT57Vy52YWx1ZT1tZX0sInNldCIpfSxtZXRhZGF0YTpWfSxvLGwpLFRkKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibGFuZ3VhZ2UiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVz0+Imxhbmd1YWdlImluIFcsImhhcyIpLGdldDppKFc9PlcubGFuZ3VhZ2UsImdldCIpLHNldDppKChXLG1lKT0+e1cubGFuZ3VhZ2U9bWV9LCJzZXQiKX0sbWV0YWRhdGE6Vn0sZCx1KSxUZCh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImhlaWdodCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShXPT4iaGVpZ2h0ImluIFcsImhhcyIpLGdldDppKFc9PlcuaGVpZ2h0LCJnZXQiKSxzZXQ6aSgoVyxtZSk9PntXLmhlaWdodD1tZX0sInNldCIpfSxtZXRhZGF0YTpWfSxiLHYpLFRkKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToid29yZFdyYXAiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVz0+IndvcmRXcmFwImluIFcsImhhcyIpLGdldDppKFc9Plcud29yZFdyYXAsImdldCIpLHNldDppKChXLG1lKT0+e1cud29yZFdyYXA9bWV9LCJzZXQiKX0sbWV0YWRhdGE6Vn0sbSxmKSxUZCh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dMaW5lTnVtYmVycyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShXPT4ic2hvd0xpbmVOdW1iZXJzImluIFcsImhhcyIpLGdldDppKFc9Plcuc2hvd0xpbmVOdW1iZXJzLCJnZXQiKSxzZXQ6aSgoVyxtZSk9PntXLnNob3dMaW5lTnVtYmVycz1tZX0sInNldCIpfSxtZXRhZGF0YTpWfSxNLHopLFRkKHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNMYW5ndWFnZURyb3Bkb3duT3BlbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShXPT4iaXNMYW5ndWFnZURyb3Bkb3duT3BlbiJpbiBXLCJoYXMiKSxnZXQ6aShXPT5XLmlzTGFuZ3VhZ2VEcm9wZG93bk9wZW4sImdldCIpLHNldDppKChXLG1lKT0+e1cuaXNMYW5ndWFnZURyb3Bkb3duT3Blbj1tZX0sInNldCIpfSxtZXRhZGF0YTpWfSxDLF8pLFRkKHRoaXMsbnVsbCxPLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY29weVN1Y2Nlc3MiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVz0+ImNvcHlTdWNjZXNzImluIFcsImhhcyIpLGdldDppKFc9PlcuY29weVN1Y2Nlc3MsImdldCIpLHNldDppKChXLG1lKT0+e1cuY29weVN1Y2Nlc3M9bWV9LCJzZXQiKX0sbWV0YWRhdGE6Vn0sJCxFKSxUZCh0aGlzLG51bGwsSCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImxpbmVDb3VudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShXPT4ibGluZUNvdW50ImluIFcsImhhcyIpLGdldDppKFc9PlcubGluZUNvdW50LCJnZXQiKSxzZXQ6aSgoVyxtZSk9PntXLmxpbmVDb3VudD1tZX0sInNldCIpfSxtZXRhZGF0YTpWfSxrLFMpLFRkKHRoaXMsbnVsbCxJLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY3Vyc29yUG9zaXRpb24iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVz0+ImN1cnNvclBvc2l0aW9uImluIFcsImhhcyIpLGdldDppKFc9PlcuY3Vyc29yUG9zaXRpb24sImdldCIpLHNldDppKChXLG1lKT0+e1cuY3Vyc29yUG9zaXRpb249bWV9LCJzZXQiKX0sbWV0YWRhdGE6Vn0sUCxSKSxUZChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpWfSxudWxsLHQpLEs9YT1lLnZhbHVlLFYmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Vn0pfXN0YXRpYyBkZW1vPWkoKCk9PndgCiAgICA8ZGVlcy1pbnB1dC1jb2RlCiAgICAgIGxhYmVsPSJUeXBlU2NyaXB0IENvZGUiCiAgICAgIGtleT0iY29kZSIKICAgICAgbGFuZ3VhZ2U9InR5cGVzY3JpcHQiCiAgICAgIGhlaWdodD0iMzAwcHgiCiAgICAgIC52YWx1ZT0ke2Bjb25zdCBncmVldGluZzogc3RyaW5nID0gIkhlbGxvIFdvcmxkIjsKY29uc29sZS5sb2coZ3JlZXRpbmcpO2B9CiAgICA+PC9kZWVzLWlucHV0LWNvZGU+CiAgYCwiZGVtbyIpO3N0YXRpYyBkZW1vR3JvdXBzPVsiSW5wdXQiLCJXb3Jrc3BhY2UiXTsjZT1Lcih0aGlzLG8sIiIpO2dldCB2YWx1ZSgpe3JldHVybiB0aGlzLiNlfXNldCB2YWx1ZShWKXt0aGlzLiNlPVZ9I3Q9KEtyKHRoaXMsbCksS3IodGhpcyxkLCJ0eXBlc2NyaXB0IikpO2dldCBsYW5ndWFnZSgpe3JldHVybiB0aGlzLiN0fXNldCBsYW5ndWFnZShWKXt0aGlzLiN0PVZ9I2E9KEtyKHRoaXMsdSksS3IodGhpcyxiLCIyMDBweCIpKTtnZXQgaGVpZ2h0KCl7cmV0dXJuIHRoaXMuI2F9c2V0IGhlaWdodChWKXt0aGlzLiNhPVZ9I3M9KEtyKHRoaXMsdiksS3IodGhpcyxtLCJvZmYiKSk7Z2V0IHdvcmRXcmFwKCl7cmV0dXJuIHRoaXMuI3N9c2V0IHdvcmRXcmFwKFYpe3RoaXMuI3M9Vn0jaT0oS3IodGhpcyxmKSxLcih0aGlzLE0sITApKTtnZXQgc2hvd0xpbmVOdW1iZXJzKCl7cmV0dXJuIHRoaXMuI2l9c2V0IHNob3dMaW5lTnVtYmVycyhWKXt0aGlzLiNpPVZ9I3I9KEtyKHRoaXMseiksS3IodGhpcyxDLCExKSk7Z2V0IGlzTGFuZ3VhZ2VEcm9wZG93bk9wZW4oKXtyZXR1cm4gdGhpcy4jcn1zZXQgaXNMYW5ndWFnZURyb3Bkb3duT3BlbihWKXt0aGlzLiNyPVZ9I289KEtyKHRoaXMsXyksS3IodGhpcywkLCExKSk7Z2V0IGNvcHlTdWNjZXNzKCl7cmV0dXJuIHRoaXMuI299c2V0IGNvcHlTdWNjZXNzKFYpe3RoaXMuI289Vn0jbj0oS3IodGhpcyxFKSxLcih0aGlzLGssMCkpO2dldCBsaW5lQ291bnQoKXtyZXR1cm4gdGhpcy4jbn1zZXQgbGluZUNvdW50KFYpe3RoaXMuI249Vn0jbD0oS3IodGhpcyxTKSxLcih0aGlzLFAse2xpbmU6MSxjb2x1bW46MX0pKTtnZXQgY3Vyc29yUG9zaXRpb24oKXtyZXR1cm4gdGhpcy4jbH1zZXQgY3Vyc29yUG9zaXRpb24oVil7dGhpcy4jbD1WfWVkaXRvckVsZW1lbnQ9KEtyKHRoaXMsUiksbnVsbCk7c3RhdGljIHN0eWxlcz1bSGUsLi4uT3QuYmFzZVN0eWxlcyxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgKiB7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBtaW4taGVpZ2h0OiAwOwogICAgICB9CgogICAgICAuaW5wdXQtd3JhcHBlciwKICAgICAgOmhvc3QoW2xhYmVsLXBvc2l0aW9uPSJ0b3AiXSkgLmlucHV0LXdyYXBwZXIsCiAgICAgIDpob3N0KFtsYWJlbC1wb3NpdGlvbj0ibGVmdCJdKSAuaW5wdXQtd3JhcHBlciwKICAgICAgOmhvc3QoW2xhYmVsLXBvc2l0aW9uPSJyaWdodCJdKSAuaW5wdXQtd3JhcHBlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGZsZXg6IDE7CiAgICAgICAgbWluLWhlaWdodDogMDsKICAgICAgfQoKICAgICAgZGVlcy10aWxlIHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG1pbi1oZWlnaHQ6IDA7CiAgICAgIH0KCiAgICAgIC50b29sYmFyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIHBhZGRpbmc6IDRweCAxMnB4OwogICAgICAgIGdhcDogOHB4OwogICAgICB9CgogICAgICAudG9vbGJhci1sZWZ0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgIH0KCiAgICAgIC50b29sYmFyLXJpZ2h0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA0cHg7CiAgICAgIH0KCiAgICAgIC5sYW5ndWFnZS1zZWxlY3RvciB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAubGFuZ3VhZ2UtYnV0dG9uIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgcGFkZGluZzogNHB4IDEwcHg7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1iZy1wcmltYXJ5KTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgfQoKICAgICAgLmxhbmd1YWdlLWJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1ob3Zlcik7CiAgICAgIH0KCiAgICAgIC5sYW5ndWFnZS1kcm9wZG93biB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMTAwJTsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIG1hcmdpbi10b3A6IDRweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXByaW1hcnkpOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7CiAgICAgICAgei1pbmRleDogMTAwOwogICAgICAgIG1heC1oZWlnaHQ6IDI1MHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgbWluLXdpZHRoOiAxNDBweDsKICAgICAgfQoKICAgICAgLmxhbmd1YWdlLW9wdGlvbiB7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXNlY29uZGFyeSk7CiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cyBlYXNlOwogICAgICB9CgogICAgICAubGFuZ3VhZ2Utb3B0aW9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWhvdmVyKTsKICAgICAgfQoKICAgICAgLmxhbmd1YWdlLW9wdGlvbi5zZWxlY3RlZCB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1hY3RpdmUpOwogICAgICB9CgogICAgICAudG9vbGJhci1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICB3aWR0aDogMzJweDsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC50b29sYmFyLWJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1ob3Zlcik7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOwogICAgICB9CgogICAgICAudG9vbGJhci1idXR0b24uYWN0aXZlIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWFjdGl2ZSk7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOwogICAgICB9CgogICAgICAudG9vbGJhci1idXR0b24uc3VjY2VzcyB7CiAgICAgICAgY29sb3I6IGhzbCgxNDIuMSA3Ni4yJSAzNi4zJSk7CiAgICAgIH0KCiAgICAgIC5lZGl0b3Itd3JhcHBlciB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGluc2V0OiAwOwogICAgICB9CgogICAgICBkZWVzLXdvcmtzcGFjZS1tb25hY28gewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgLyogTWF0Y2ggTW9uYWNvIGJhY2tncm91bmQgdG8gdGlsZSAqLwogICAgICBkZWVzLXdvcmtzcGFjZS1tb25hY286OnBhcnQoY29udGFpbmVyKSB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1iZy1wcmltYXJ5KTsKICAgICAgfQoKICAgICAgLnRvb2xiYXItZGl2aWRlciB7CiAgICAgICAgd2lkdGg6IDFweDsKICAgICAgICBoZWlnaHQ6IDIwcHg7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICAgICAgbWFyZ2luOiAwIDRweDsKICAgICAgfQoKICAgICAgLyogRm9vdGVyICovCiAgICAgIC5lZGl0b3ItZm9vdGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIHBhZGRpbmc6IDAgMTJweDsKICAgICAgICBoZWlnaHQ6IDI4cHg7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgIC5mb290ZXItbGVmdCwKICAgICAgLmZvb3Rlci1yaWdodCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMTJweDsKICAgICAgfQoKICAgICAgLmZvb3Rlci1zZXBhcmF0b3IgewogICAgICAgIHdpZHRoOiAxcHg7CiAgICAgICAgaGVpZ2h0OiAxMnB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSAuY29kZS1jb250YWluZXIgewogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQogICAgYF07cmVuZGVyKCl7bGV0IFY9STguZmluZChXPT5XLmtleT09PXRoaXMubGFuZ3VhZ2UpfHxJOFswXTtyZXR1cm4gd2AKICAgICAgPHN0eWxlPgogICAgICAgIDpob3N0IHsKICAgICAgICAgIGhlaWdodDogJHt0aGlzLmhlaWdodH07CiAgICAgICAgfQogICAgICA8L3N0eWxlPgogICAgICA8ZGl2IGNsYXNzPSJpbnB1dC13cmFwcGVyIj4KICAgICAgICA8ZGVlcy1sYWJlbCAubGFiZWw9JHt0aGlzLmxhYmVsfSAuaW5mb1RleHQ9JHt0aGlzLmluZm9UZXh0fSAucmVxdWlyZWQ9JHt0aGlzLnJlcXVpcmVkfT48L2RlZXMtbGFiZWw+CiAgICAgICAgPGRlZXMtdGlsZT4KICAgICAgICAgIDxkaXYgc2xvdD0iaGVhZGVyIiBjbGFzcz0idG9vbGJhciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvb2xiYXItbGVmdCI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ3VhZ2Utc2VsZWN0b3IiPgogICAgICAgICAgICAgICAgPGJ1dHRvbgogICAgICAgICAgICAgICAgICBjbGFzcz0ibGFuZ3VhZ2UtYnV0dG9uIgogICAgICAgICAgICAgICAgICBAY2xpY2s9JHt0aGlzLnRvZ2dsZUxhbmd1YWdlRHJvcGRvd259CiAgICAgICAgICAgICAgICAgIEBibHVyPSR7dGhpcy5oYW5kbGVMYW5ndWFnZUJsdXJ9CiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICR7Vi5sYWJlbH0KICAgICAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6Q2hldnJvbkRvd24ifSBpY29uU2l6ZT0iMTQiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAke3RoaXMuaXNMYW5ndWFnZURyb3Bkb3duT3Blbj93YAogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5ndWFnZS1kcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgJHtJOC5tYXAoVz0+d2AKICAgICAgICAgICAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Imxhbmd1YWdlLW9wdGlvbiAke1cua2V5PT09dGhpcy5sYW5ndWFnZT8ic2VsZWN0ZWQiOiIifSIKICAgICAgICAgICAgICAgICAgICAgICAgQG1vdXNlZG93bj0ke21lPT50aGlzLnNlbGVjdExhbmd1YWdlKG1lLFcua2V5KX0KICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgJHtXLmxhYmVsfQogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgYCl9CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvb2xiYXItcmlnaHQiPgogICAgICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgICAgIGNsYXNzPSJ0b29sYmFyLWJ1dHRvbiAke3RoaXMud29yZFdyYXA9PT0ib24iPyJhY3RpdmUiOiIifSIKICAgICAgICAgICAgICAgIHRpdGxlPSJXb3JkIFdyYXAiCiAgICAgICAgICAgICAgICBAY2xpY2s9JHt0aGlzLnRvZ2dsZVdvcmRXcmFwfQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHsibHVjaWRlOldyYXBUZXh0In0gaWNvblNpemU9IjE2Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgICAgICBjbGFzcz0idG9vbGJhci1idXR0b24gJHt0aGlzLnNob3dMaW5lTnVtYmVycz8iYWN0aXZlIjoiIn0iCiAgICAgICAgICAgICAgICB0aXRsZT0iTGluZSBOdW1iZXJzIgogICAgICAgICAgICAgICAgQGNsaWNrPSR7dGhpcy50b2dnbGVMaW5lTnVtYmVyc30KICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7Imx1Y2lkZTpIYXNoIn0gaWNvblNpemU9IjE2Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b29sYmFyLWRpdmlkZXIiPjwvZGl2PgogICAgICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgICAgIGNsYXNzPSJ0b29sYmFyLWJ1dHRvbiAke3RoaXMuY29weVN1Y2Nlc3M/InN1Y2Nlc3MiOiIifSIKICAgICAgICAgICAgICAgIHRpdGxlPSJDb3B5IENvZGUiCiAgICAgICAgICAgICAgICBAY2xpY2s9JHt0aGlzLmNvcHlDb2RlfQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHt0aGlzLmNvcHlTdWNjZXNzPyJsdWNpZGU6Q2hlY2siOiJsdWNpZGU6Q29weSJ9IGljb25TaXplPSIxNiI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgPGJ1dHRvbgogICAgICAgICAgICAgICAgY2xhc3M9InRvb2xiYXItYnV0dG9uIgogICAgICAgICAgICAgICAgdGl0bGU9IkV4cGFuZCIKICAgICAgICAgICAgICAgIEBjbGljaz0ke3RoaXMub3BlbkZ1bGxzY3JlZW59CiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6TWF4aW1pemUyIn0gaWNvblNpemU9IjE2Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImVkaXRvci13cmFwcGVyIj4KICAgICAgICAgICAgPGRlZXMtd29ya3NwYWNlLW1vbmFjbwogICAgICAgICAgICAgIC5jb250ZW50PSR7dGhpcy52YWx1ZX0KICAgICAgICAgICAgICAubGFuZ3VhZ2U9JHt0aGlzLmxhbmd1YWdlfQogICAgICAgICAgICAgIC53b3JkV3JhcD0ke3RoaXMud29yZFdyYXB9CiAgICAgICAgICAgICAgQGNvbnRlbnQtY2hhbmdlPSR7dGhpcy5oYW5kbGVDb250ZW50Q2hhbmdlfQogICAgICAgICAgICA+PC9kZWVzLXdvcmtzcGFjZS1tb25hY28+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgc2xvdD0iZm9vdGVyIiBjbGFzcz0iZWRpdG9yLWZvb3RlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlci1sZWZ0Ij4KICAgICAgICAgICAgICA8c3Bhbj5MbiAke3RoaXMuY3Vyc29yUG9zaXRpb24ubGluZX0sIENvbCAke3RoaXMuY3Vyc29yUG9zaXRpb24uY29sdW1ufTwvc3Bhbj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItc2VwYXJhdG9yIj48L2Rpdj4KICAgICAgICAgICAgICA8c3Bhbj4ke3RoaXMubGluZUNvdW50fSBsaW5lJHt0aGlzLmxpbmVDb3VudCE9PTE/InMiOiIifTwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlci1yaWdodCI+CiAgICAgICAgICAgICAgPHNwYW4+JHsoSTguZmluZChXPT5XLmtleT09PXRoaXMubGFuZ3VhZ2UpfHxJOFswXSkubGFiZWx9PC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGVlcy10aWxlPgogICAgICAgICR7dGhpcy5yZW5kZXJEZXNjcmlwdGlvbigpfQogICAgICA8L2Rpdj4KICAgIGB9YXN5bmMgZmlyc3RVcGRhdGVkKCl7aWYodGhpcy5lZGl0b3JFbGVtZW50PXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiZGVlcy13b3Jrc3BhY2UtbW9uYWNvIiksdGhpcy5lZGl0b3JFbGVtZW50KXt0aGlzLmVkaXRvckVsZW1lbnQuY29udGVudFN1YmplY3Quc3Vic2NyaWJlKFU9Pnt0aGlzLnZhbHVlIT09VSYmKHRoaXMudmFsdWU9VSx0aGlzLmNoYW5nZVN1YmplY3QubmV4dCh0aGlzKSl9KTtsZXQgVj1hd2FpdCB0aGlzLmVkaXRvckVsZW1lbnQuZWRpdG9yRGVmZXJyZWQucHJvbWlzZSxXPVYuZ2V0TW9kZWwoKTtXJiYodGhpcy5saW5lQ291bnQ9Vy5nZXRMaW5lQ291bnQoKSxXLm9uRGlkQ2hhbmdlQ29udGVudCgoKT0+e3RoaXMubGluZUNvdW50PVcuZ2V0TGluZUNvdW50KCl9KSksVi5vbkRpZENoYW5nZUN1cnNvclBvc2l0aW9uKFU9Pnt0aGlzLmN1cnNvclBvc2l0aW9uPXtsaW5lOlUucG9zaXRpb24ubGluZU51bWJlcixjb2x1bW46VS5wb3NpdGlvbi5jb2x1bW59fSk7bGV0IG1lPWF3YWl0IHRoaXMuZWRpdG9yRWxlbWVudC5kb210b29sc1Byb21pc2UsQj1pKFU9PntsZXQgaGU9VT8iI2ZmZmZmZiI6IiMwYTBhMGEiO1YudXBkYXRlT3B0aW9ucyh7fSksd2luZG93Lm1vbmFjbz8uZWRpdG9yPy5kZWZpbmVUaGVtZT8uKCJkZWVzLWxpZ2h0Iix7YmFzZToidnMiLGluaGVyaXQ6ITAscnVsZXM6W10sY29sb3JzOnsiZWRpdG9yLmJhY2tncm91bmQiOmhlfX0pLHdpbmRvdy5tb25hY28/LmVkaXRvcj8uZGVmaW5lVGhlbWU/LigiZGVlcy1kYXJrIix7YmFzZToidnMtZGFyayIsaW5oZXJpdDohMCxydWxlczpbXSxjb2xvcnM6eyJlZGl0b3IuYmFja2dyb3VuZCI6aGV9fSksVi51cGRhdGVPcHRpb25zKHt0aGVtZTpVPyJkZWVzLWxpZ2h0IjoiZGVlcy1kYXJrIn0pfSwidXBkYXRlRWRpdG9yQmciKTtCKG1lLnRoZW1lTWFuYWdlci5nb0JyaWdodEJvb2xlYW4pLG1lLnRoZW1lTWFuYWdlci50aGVtZU9ic2VydmFibGUuc3Vic2NyaWJlKFU9PntCKFUpfSl9fXRvZ2dsZUxhbmd1YWdlRHJvcGRvd24oKXt0aGlzLmlzTGFuZ3VhZ2VEcm9wZG93bk9wZW49IXRoaXMuaXNMYW5ndWFnZURyb3Bkb3duT3Blbn1oYW5kbGVMYW5ndWFnZUJsdXIoKXtzZXRUaW1lb3V0KCgpPT57dGhpcy5pc0xhbmd1YWdlRHJvcGRvd25PcGVuPSExfSwxNTApfWFzeW5jIHNlbGVjdExhbmd1YWdlKFYsVyl7aWYoVi5wcmV2ZW50RGVmYXVsdCgpLHRoaXMubGFuZ3VhZ2U9Vyx0aGlzLmlzTGFuZ3VhZ2VEcm9wZG93bk9wZW49ITEsdGhpcy5lZGl0b3JFbGVtZW50KXt0aGlzLmVkaXRvckVsZW1lbnQubGFuZ3VhZ2U9VztsZXQgQj0oYXdhaXQgdGhpcy5lZGl0b3JFbGVtZW50LmVkaXRvckRlZmVycmVkLnByb21pc2UpLmdldE1vZGVsKCk7QiYmd2luZG93Lm1vbmFjby5lZGl0b3Iuc2V0TW9kZWxMYW5ndWFnZShCLFcpfX10b2dnbGVXb3JkV3JhcCgpe3RoaXMud29yZFdyYXA9dGhpcy53b3JkV3JhcD09PSJvbiI/Im9mZiI6Im9uIix0aGlzLnVwZGF0ZUVkaXRvck9wdGlvbigid29yZFdyYXAiLHRoaXMud29yZFdyYXApfXRvZ2dsZUxpbmVOdW1iZXJzKCl7dGhpcy5zaG93TGluZU51bWJlcnM9IXRoaXMuc2hvd0xpbmVOdW1iZXJzLHRoaXMudXBkYXRlRWRpdG9yT3B0aW9uKCJsaW5lTnVtYmVycyIsdGhpcy5zaG93TGluZU51bWJlcnM/Im9uIjoib2ZmIil9YXN5bmMgdXBkYXRlRWRpdG9yT3B0aW9uKFYsVyl7dGhpcy5lZGl0b3JFbGVtZW50JiYoYXdhaXQgdGhpcy5lZGl0b3JFbGVtZW50LmVkaXRvckRlZmVycmVkLnByb21pc2UpLnVwZGF0ZU9wdGlvbnMoe1tWXTpXfSl9YXN5bmMgY29weUNvZGUoKXt0cnl7YXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGhpcy52YWx1ZSksdGhpcy5jb3B5U3VjY2Vzcz0hMCxzZXRUaW1lb3V0KCgpPT57dGhpcy5jb3B5U3VjY2Vzcz0hMX0sMmUzKX1jYXRjaChWKXtjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gY29weSBjb2RlOiIsVil9fWhhbmRsZUNvbnRlbnRDaGFuZ2UoVil7bGV0IFc9Vi5kZXRhaWw7dGhpcy52YWx1ZSE9PVcmJih0aGlzLnZhbHVlPVcsdGhpcy5jaGFuZ2VTdWJqZWN0Lm5leHQodGhpcykpfWFzeW5jIG9wZW5GdWxsc2NyZWVuKCl7bGV0IFY9dGhpcy52YWx1ZSxXPW51bGwsbWU9dGhpcy5sYW5ndWFnZSxCPXRoaXMud29yZFdyYXAsVT10aGlzLnNob3dMaW5lTnVtYmVycyxoZT0hMSxGPSExLGo9aSgoKT0+e2xldCBYPUk4LmZpbmQoWj0+Wi5rZXk9PT1tZSk7cmV0dXJuIFg/WC5sYWJlbDoiVHlwZVNjcmlwdCJ9LCJnZXRMYW5ndWFnZUxhYmVsIiksdWU9aShYPT57bGV0IFo9WC5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIubW9kYWwtdG9vbGJhciIpO2lmKCFaKXJldHVybjtsZXQgeWU9Wi5xdWVyeVNlbGVjdG9yKCIubGFuZ3VhZ2UtYnV0dG9uIHNwYW4iKTt5ZSYmKHllLnRleHRDb250ZW50PWooKSk7bGV0IHE9Wi5xdWVyeVNlbGVjdG9yKCIud3JhcC1idG4iKTtxJiZxLmNsYXNzTGlzdC50b2dnbGUoImFjdGl2ZSIsQj09PSJvbiIpO2xldCBBPVoucXVlcnlTZWxlY3RvcigiLmxpbmVzLWJ0biIpO0EmJkEuY2xhc3NMaXN0LnRvZ2dsZSgiYWN0aXZlIixVKTtsZXQgc2U9Wi5xdWVyeVNlbGVjdG9yKCIuY29weS1idG4iKSxvZT1zZT8ucXVlcnlTZWxlY3RvcigiZGVlcy1pY29uIik7c2UmJm9lJiYoc2UuY2xhc3NMaXN0LnRvZ2dsZSgic3VjY2VzcyIsRiksb2UuaWNvbj1GPyJsdWNpZGU6Q2hlY2siOiJsdWNpZGU6Q29weSIpO2xldCBhZT1aLnF1ZXJ5U2VsZWN0b3IoIi5sYW5ndWFnZS1kcm9wZG93biIpO2FlJiYoYWUuc3R5bGUuZGlzcGxheT1oZT8iYmxvY2siOiJub25lIil9LCJ1cGRhdGVUb29sYmFyVUkiKSxsZT1pKFg9PntsZXQgWj1YLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5tb2RhbC1mb290ZXIiKTtpZighWilyZXR1cm47bGV0IHllPVoucXVlcnlTZWxlY3RvcigiLmZvb3Rlci1jdXJzb3IiKSxxPVoucXVlcnlTZWxlY3RvcigiLmZvb3Rlci1saW5lcyIpLEE9Wi5xdWVyeVNlbGVjdG9yKCIuZm9vdGVyLWxhbmciKTt5ZSYmKHllLnRleHRDb250ZW50PWBMbiAke1F9LCBDb2wgJHtpZX1gKSxxJiYocS50ZXh0Q29udGVudD1gJHt0ZX0gbGluZSR7dGUhPT0xPyJzIjoiIn1gKSxBJiYoQS50ZXh0Q29udGVudD1qKCkpfSwidXBkYXRlRm9vdGVyVUkiKSxRPTEsaWU9MSx0ZT1WLnNwbGl0KGAKYCkubGVuZ3RoLGVlPWF3YWl0IFFhLmNyZWF0ZUFuZFNob3coe2hlYWRpbmc6dGhpcy5sYWJlbHx8IkNvZGUgRWRpdG9yIix3aWR0aDoiZnVsbHNjcmVlbiIsY29udGVudFBhZGRpbmc6MCxjb250ZW50OndgCiAgICAgICAgPHN0eWxlPgogICAgICAgICAgLm1vZGFsLXRvb2xiYXIgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgICAgIHBhZGRpbmc6IDRweCAxMnB4OwogICAgICAgICAgICBnYXA6IDhweDsKICAgICAgICAgIH0KICAgICAgICAgIC5tb2RhbC10b29sYmFyIC50b29sYmFyLWxlZnQgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBnYXA6IDhweDsKICAgICAgICAgIH0KICAgICAgICAgIC5tb2RhbC10b29sYmFyIC50b29sYmFyLXJpZ2h0IHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiA0cHg7CiAgICAgICAgICB9CiAgICAgICAgICAubW9kYWwtdG9vbGJhciAubGFuZ3VhZ2Utc2VsZWN0b3IgewogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICB9CiAgICAgICAgICAubW9kYWwtdG9vbGJhciAubGFuZ3VhZ2UtYnV0dG9uIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDRweCAxMHB4OwogICAgICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxMDAlKSIsImhzbCgwIDAlIDEyJSkiKX07CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4OS44JSkiLCJoc2woMCAwJSAyMCUpIil9OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAyMCUpIiwiaHNsKDAgMCUgOTAlKSIpfTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgICB9CiAgICAgICAgICAubW9kYWwtdG9vbGJhciAubGFuZ3VhZ2UtYnV0dG9uOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk1JSkiLCJoc2woMCAwJSAxNSUpIil9OwogICAgICAgICAgfQogICAgICAgICAgLm1vZGFsLXRvb2xiYXIgLmxhbmd1YWdlLWRyb3Bkb3duIHsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICB0b3A6IDEwMCU7CiAgICAgICAgICAgIGxlZnQ6IDA7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDRweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDEwMCUpIiwiaHNsKDAgMCUgOSUpIil9OwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDAgMCUgODkuOCUpIiwiaHNsKDAgMCUgMjAlKSIpfTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7CiAgICAgICAgICAgIHotaW5kZXg6IDEwMDsKICAgICAgICAgICAgbWF4LWhlaWdodDogMjUwcHg7CiAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgICAgIG1pbi13aWR0aDogMTQwcHg7CiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICAgICB9CiAgICAgICAgICAubW9kYWwtdG9vbGJhciAubGFuZ3VhZ2Utb3B0aW9uIHsKICAgICAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDIwJSkiLCJoc2woMCAwJSA5MCUpIil9OwogICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzIGVhc2U7CiAgICAgICAgICB9CiAgICAgICAgICAubW9kYWwtdG9vbGJhciAubGFuZ3VhZ2Utb3B0aW9uOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk1JSkiLCJoc2woMCAwJSAxNSUpIil9OwogICAgICAgICAgfQogICAgICAgICAgLm1vZGFsLXRvb2xiYXIgLmxhbmd1YWdlLW9wdGlvbi5zZWxlY3RlZCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5MCUpIiwiaHNsKDAgMCUgMjAlKSIpfTsKICAgICAgICAgIH0KICAgICAgICAgIC5tb2RhbC10b29sYmFyIC50b29sYmFyLWJ1dHRvbiB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICB3aWR0aDogMzJweDsKICAgICAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA0NSUpIiwiaHNsKDAgMCUgNjAlKSIpfTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgICB9CiAgICAgICAgICAubW9kYWwtdG9vbGJhciAudG9vbGJhci1idXR0b246aG92ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTAlKSIsImhzbCgwIDAlIDE1JSkiKX07CiAgICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMjAlKSIsImhzbCgwIDAlIDkwJSkiKX07CiAgICAgICAgICB9CiAgICAgICAgICAubW9kYWwtdG9vbGJhciAudG9vbGJhci1idXR0b24uYWN0aXZlIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDg1JSkiLCJoc2woMCAwJSAyMCUpIil9OwogICAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDIwJSkiLCJoc2woMCAwJSA5MCUpIil9OwogICAgICAgICAgfQogICAgICAgICAgLm1vZGFsLXRvb2xiYXIgLnRvb2xiYXItYnV0dG9uLnN1Y2Nlc3MgewogICAgICAgICAgICBjb2xvcjogaHNsKDE0Mi4xIDc2LjIlIDM2LjMlKTsKICAgICAgICAgIH0KICAgICAgICAgIC5tb2RhbC10b29sYmFyIC50b29sYmFyLWRpdmlkZXIgewogICAgICAgICAgICB3aWR0aDogMXB4OwogICAgICAgICAgICBoZWlnaHQ6IDIwcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4NSUpIiwiaHNsKDAgMCUgMjAlKSIpfTsKICAgICAgICAgICAgbWFyZ2luOiAwIDRweDsKICAgICAgICAgIH0KICAgICAgICAgIC5tb2RhbC1lZGl0b3Itd3JhcHBlciB7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMjAwcHgpOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgIH0KICAgICAgICAgIC5tb2RhbC1mb290ZXIgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgICAgIHBhZGRpbmc6IDAgMTJweDsKICAgICAgICAgICAgaGVpZ2h0OiAyOHB4OwogICAgICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNDUlKSIsImhzbCgwIDAlIDU1JSkiKX07CiAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDAgMCUgODkuOCUpIiwiaHNsKDAgMCUgMTQuOSUpIil9OwogICAgICAgICAgfQogICAgICAgICAgLm1vZGFsLWZvb3RlciAuZm9vdGVyLWxlZnQsCiAgICAgICAgICAubW9kYWwtZm9vdGVyIC5mb290ZXItcmlnaHQgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgICB9CiAgICAgICAgICAubW9kYWwtZm9vdGVyIC5mb290ZXItc2VwYXJhdG9yIHsKICAgICAgICAgICAgd2lkdGg6IDFweDsKICAgICAgICAgICAgaGVpZ2h0OiAxMnB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgODUlKSIsImhzbCgwIDAlIDIwJSkiKX07CiAgICAgICAgICB9CiAgICAgICAgPC9zdHlsZT4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC10b29sYmFyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRvb2xiYXItbGVmdCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Imxhbmd1YWdlLXNlbGVjdG9yIj4KICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJsYW5ndWFnZS1idXR0b24iPgogICAgICAgICAgICAgICAgPHNwYW4+JHtqKCl9PC9zcGFuPgogICAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6Q2hldnJvbkRvd24ifSBpY29uU2l6ZT0iMTQiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imxhbmd1YWdlLWRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICR7STgubWFwKFg9PndgCiAgICAgICAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibGFuZ3VhZ2Utb3B0aW9uICR7WC5rZXk9PT1tZT8ic2VsZWN0ZWQiOiIifSIKICAgICAgICAgICAgICAgICAgICBkYXRhLWxhbmc9IiR7WC5rZXl9IgogICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgJHtYLmxhYmVsfQogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIGApfQogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0idG9vbGJhci1yaWdodCI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InRvb2xiYXItYnV0dG9uIHdyYXAtYnRuICR7Qj09PSJvbiI/ImFjdGl2ZSI6IiJ9IiB0aXRsZT0iV29yZCBXcmFwIj4KICAgICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7Imx1Y2lkZTpXcmFwVGV4dCJ9IGljb25TaXplPSIxNiI+PC9kZWVzLWljb24+CiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJ0b29sYmFyLWJ1dHRvbiBsaW5lcy1idG4gJHtVPyJhY3RpdmUiOiIifSIgdGl0bGU9IkxpbmUgTnVtYmVycyI+CiAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6SGFzaCJ9IGljb25TaXplPSIxNiI+PC9kZWVzLWljb24+CiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b29sYmFyLWRpdmlkZXIiPjwvZGl2PgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJ0b29sYmFyLWJ1dHRvbiBjb3B5LWJ0biIgdGl0bGU9IkNvcHkgQ29kZSI+CiAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6Q29weSJ9IGljb25TaXplPSIxNiI+PC9kZWVzLWljb24+CiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZWRpdG9yLXdyYXBwZXIiPgogICAgICAgICAgPGRlZXMtd29ya3NwYWNlLW1vbmFjbwogICAgICAgICAgICAuY29udGVudD0ke1Z9CiAgICAgICAgICAgIC5sYW5ndWFnZT0ke21lfQogICAgICAgICAgICAud29yZFdyYXA9JHtCfQogICAgICAgICAgPjwvZGVlcy13b3Jrc3BhY2UtbW9uYWNvPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItbGVmdCI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmb290ZXItY3Vyc29yIj5MbiAke1F9LCBDb2wgJHtpZX08L3NwYW4+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlci1zZXBhcmF0b3IiPjwvZGl2PgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iZm9vdGVyLWxpbmVzIj4ke3RlfSBsaW5lJHt0ZSE9PTE/InMiOiIifTwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLXJpZ2h0Ij4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZvb3Rlci1sYW5nIj4ke2ooKX08L3NwYW4+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgYCxtZW51T3B0aW9uczpbe25hbWU6IkNhbmNlbCIsYWN0aW9uOmkoYXN5bmMgWD0+e2F3YWl0IFguZGVzdHJveSgpfSwiYWN0aW9uIil9LHtuYW1lOiJTYXZlICYgQ2xvc2UiLGFjdGlvbjppKGFzeW5jIFg9PntpZihXPVguc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiZGVlcy13b3Jrc3BhY2UtbW9uYWNvIiksVyl7bGV0IHllPShhd2FpdCBXLmVkaXRvckRlZmVycmVkLnByb21pc2UpLmdldFZhbHVlKCk7dGhpcy5zZXRWYWx1ZSh5ZSl9YXdhaXQgWC5kZXN0cm95KCl9LCJhY3Rpb24iKX1dfSk7aWYoYXdhaXQgbmV3IFByb21pc2UoWD0+c2V0VGltZW91dChYLDEwMCkpLFc9ZWUuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiZGVlcy13b3Jrc3BhY2UtbW9uYWNvIiksVyl7bGV0IFg9YXdhaXQgVy5lZGl0b3JEZWZlcnJlZC5wcm9taXNlLFo9YXdhaXQgVy5kb210b29sc1Byb21pc2UseWU9aShBPT57bGV0IHNlPUE/IiNmZmZmZmYiOiIjMGEwYTBhIjt3aW5kb3cubW9uYWNvPy5lZGl0b3I/LmRlZmluZVRoZW1lPy4oImRlZXMtbGlnaHQiLHtiYXNlOiJ2cyIsaW5oZXJpdDohMCxydWxlczpbXSxjb2xvcnM6eyJlZGl0b3IuYmFja2dyb3VuZCI6c2V9fSksd2luZG93Lm1vbmFjbz8uZWRpdG9yPy5kZWZpbmVUaGVtZT8uKCJkZWVzLWRhcmsiLHtiYXNlOiJ2cy1kYXJrIixpbmhlcml0OiEwLHJ1bGVzOltdLGNvbG9yczp7ImVkaXRvci5iYWNrZ3JvdW5kIjpzZX19KSxYLnVwZGF0ZU9wdGlvbnMoe3RoZW1lOkE/ImRlZXMtbGlnaHQiOiJkZWVzLWRhcmsifSl9LCJhcHBseU1vZGFsVGhlbWUiKTt5ZShaLnRoZW1lTWFuYWdlci5nb0JyaWdodEJvb2xlYW4pLFoudGhlbWVNYW5hZ2VyLnRoZW1lT2JzZXJ2YWJsZS5zdWJzY3JpYmUoQT0+e3llKEEpfSksWC5vbkRpZENoYW5nZUN1cnNvclBvc2l0aW9uKEE9PntRPUEucG9zaXRpb24ubGluZU51bWJlcixpZT1BLnBvc2l0aW9uLmNvbHVtbixsZShlZSl9KTtsZXQgcT1YLmdldE1vZGVsKCk7cSYmKHRlPXEuZ2V0TGluZUNvdW50KCksbGUoZWUpLHEub25EaWRDaGFuZ2VDb250ZW50KCgpPT57dGU9cS5nZXRMaW5lQ291bnQoKSxsZShlZSl9KSl9bGV0IGtlPWVlLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5tb2RhbC10b29sYmFyIik7aWYoa2Upe2xldCBYPWtlLnF1ZXJ5U2VsZWN0b3IoIi5sYW5ndWFnZS1idXR0b24iKTtYPy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PntoZT0haGUsdWUoZWUpfSk7bGV0IFo9a2UucXVlcnlTZWxlY3RvckFsbCgiLmxhbmd1YWdlLW9wdGlvbiIpO1ouZm9yRWFjaChzZT0+e3NlLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixhc3luYygpPT57bGV0IG9lPXNlLmRhdGFzZXQubGFuZztpZihvZSYmVyl7bWU9b2UsaGU9ITE7bGV0IFRlPShhd2FpdCBXLmVkaXRvckRlZmVycmVkLnByb21pc2UpLmdldE1vZGVsKCk7VGUmJndpbmRvdy5tb25hY28uZWRpdG9yLnNldE1vZGVsTGFuZ3VhZ2UoVGUsb2UpLFouZm9yRWFjaChSZT0+UmUuY2xhc3NMaXN0LnJlbW92ZSgic2VsZWN0ZWQiKSksc2UuY2xhc3NMaXN0LmFkZCgic2VsZWN0ZWQiKSx1ZShlZSksbGUoZWUpfX0pfSksa2UucXVlcnlTZWxlY3RvcigiLndyYXAtYnRuIik/LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixhc3luYygpPT57Qj1CPT09Im9uIj8ib2ZmIjoib24iLFcmJihhd2FpdCBXLmVkaXRvckRlZmVycmVkLnByb21pc2UpLnVwZGF0ZU9wdGlvbnMoe3dvcmRXcmFwOkJ9KSx1ZShlZSl9KSxrZS5xdWVyeVNlbGVjdG9yKCIubGluZXMtYnRuIik/LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixhc3luYygpPT57VT0hVSxXJiYoYXdhaXQgVy5lZGl0b3JEZWZlcnJlZC5wcm9taXNlKS51cGRhdGVPcHRpb25zKHtsaW5lTnVtYmVyczpVPyJvbiI6Im9mZiJ9KSx1ZShlZSl9KSxrZS5xdWVyeVNlbGVjdG9yKCIuY29weS1idG4iKT8uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGFzeW5jKCk9PntpZihXKXtsZXQgb2U9KGF3YWl0IFcuZWRpdG9yRGVmZXJyZWQucHJvbWlzZSkuZ2V0VmFsdWUoKTt0cnl7YXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQob2UpLEY9ITAsdWUoZWUpLHNldFRpbWVvdXQoKCk9PntGPSExLHVlKGVlKX0sMmUzKX1jYXRjaChhZSl7Y29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGNvcHkgY29kZToiLGFlKX19fSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLHNlPT57aGUmJiFYPy5jb250YWlucyhzZS50YXJnZXQpJiYoaGU9ITEsdWUoZWUpKX0se29uY2U6ITB9KX19Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy52YWx1ZX1zZXRWYWx1ZShWKXt0aGlzLnZhbHVlPVYsdGhpcy5lZGl0b3JFbGVtZW50JiYodGhpcy5lZGl0b3JFbGVtZW50LmNvbnRlbnQ9Vix0aGlzLmVkaXRvckVsZW1lbnQuZWRpdG9yRGVmZXJyZWQucHJvbWlzZS50aGVuKFc9PntXLmdldFZhbHVlKCkhPT1WJiZXLnNldFZhbHVlKFYpfSkpLHRoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMpfXN0YXRpY3tLcihhLHQpfX07cmV0dXJuIEs9YX0pKCl9KTt2YXIgcWRhLGpkYT1nKCgpPT57cGUoKTtJdCgpO2ZvKCk7T2V0KCk7cWRhPWkoKCk9PndgCiAgPHN0eWxlPgogICAgJHtKYAogICAgICAuZGVtby1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDI0cHg7CiAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICBtYXgtd2lkdGg6IDEyMDBweDsKICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgfQogICAgICAKICAgICAgZGVlcy1wYW5lbCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgICAgfQogICAgICAKICAgICAgZGVlcy1wYW5lbDpsYXN0LWNoaWxkIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICB9CiAgICAgIAogICAgICAuZGVtby1vdXRwdXQgewogICAgICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICAgICAgcGFkZGluZzogMTJweDsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDEwNSwgMjQyLCAwLjEpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgfQogICAgICAKICAgICAgLmRhdGUtZ3JvdXAgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgfQogICAgYH0KICA8L3N0eWxlPgogIAogIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntsZXQgZT1zLnF1ZXJ5U2VsZWN0b3IoImRlZXMtaW5wdXQtZGF0ZXBpY2tlciIpO2UmJmUuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwodD0+e2NvbnNvbGUubG9nKCJCYXNpYyBkYXRlIHNlbGVjdGVkOiIsdC50YXJnZXQudmFsdWUpfSkpfX0+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJCYXNpYyBEYXRlIFBpY2tlciJ9IC5zdWJ0aXRsZT0keyJTaW1wbGUgZGF0ZSBzZWxlY3Rpb24gd2l0aG91dCB0aW1lIn0+CiAgICAgICAgPGRlZXMtaW5wdXQtZGF0ZXBpY2tlcgogICAgICAgICAgbGFiZWw9IlNlbGVjdCBEYXRlIgogICAgICAgICAgZGVzY3JpcHRpb249IkNob29zZSBhIGRhdGUgZnJvbSB0aGUgY2FsZW5kYXIiCiAgICAgICAgPjwvZGVlcy1pbnB1dC1kYXRlcGlja2VyPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CgogICAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e2xldCBlPXMucXVlcnlTZWxlY3RvcignZGVlcy1pbnB1dC1kYXRlcGlja2VyW2xhYmVsPSJFdmVudCBEYXRlICYgVGltZSJdJyksdD1zLnF1ZXJ5U2VsZWN0b3IoJ2RlZXMtaW5wdXQtZGF0ZXBpY2tlcltsYWJlbD0iQXBwb2ludG1lbnQiXScpO2UmJmUuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwoYT0+e2xldCByPWEudGFyZ2V0LnZhbHVlO2NvbnNvbGUubG9nKCIyNGggZm9ybWF0IGRhdGV0aW1lOiIscil9KSksdCYmdC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLChhPT57bGV0IHI9YS50YXJnZXQudmFsdWU7Y29uc29sZS5sb2coIjEyaCBmb3JtYXQgZGF0ZXRpbWU6IixyKX0pKX19PgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiRGF0ZSBhbmQgVGltZSBTZWxlY3Rpb24ifSAuc3VidGl0bGU9JHsiRGF0ZSBwaWNrZXJzIHdpdGggdGltZSBzZWxlY3Rpb24gaW4gZGlmZmVyZW50IGZvcm1hdHMifT4KICAgICAgICA8ZGVlcy1pbnB1dC1kYXRlcGlja2VyCiAgICAgICAgICBsYWJlbD0iRXZlbnQgRGF0ZSAmIFRpbWUiCiAgICAgICAgICBkZXNjcmlwdGlvbj0iU2VsZWN0IGJvdGggZGF0ZSBhbmQgdGltZSAoMjQtaG91ciBmb3JtYXQpIgogICAgICAgICAgLmVuYWJsZVRpbWU9JHshMH0KICAgICAgICAgIHRpbWVGb3JtYXQ9IjI0aCIKICAgICAgICA+PC9kZWVzLWlucHV0LWRhdGVwaWNrZXI+CiAgICAgICAgCiAgICAgICAgPGRlZXMtaW5wdXQtZGF0ZXBpY2tlcgogICAgICAgICAgbGFiZWw9IkFwcG9pbnRtZW50IgogICAgICAgICAgZGVzY3JpcHRpb249IkRhdGUgYW5kIHRpbWUgd2l0aCBBTS9QTSBzZWxlY3RvciAoMTUtbWludXRlIGluY3JlbWVudHMpIgogICAgICAgICAgLmVuYWJsZVRpbWU9JHshMH0KICAgICAgICAgIHRpbWVGb3JtYXQ9IjEyaCIKICAgICAgICAgIC5taW51dGVJbmNyZW1lbnQ9JHsxNX0KICAgICAgICA+PC9kZWVzLWlucHV0LWRhdGVwaWNrZXI+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57cy5xdWVyeVNlbGVjdG9yQWxsKCJkZWVzLWlucHV0LWRhdGVwaWNrZXIiKS5mb3JFYWNoKHQ9Pnt0LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsKGE9PntsZXQgcj1hLnRhcmdldDtjb25zb2xlLmxvZyhgJHtyLmxhYmVsfSB2YWx1ZTpgLHIudmFsdWUpO2xldCBuPXIuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLmRhdGUtaW5wdXQiKTtuJiZjb25zb2xlLmxvZyhgJHtyLmxhYmVsfSBmb3JtYXR0ZWQ6YCxuLnZhbHVlKX0pKX0pfX0+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJUaW1lem9uZSBTdXBwb3J0In0gLnN1YnRpdGxlPSR7IkRhdGUgYW5kIHRpbWUgc2VsZWN0aW9uIHdpdGggdGltZXpvbmUgYXdhcmVuZXNzIn0+CiAgICAgICAgPGRlZXMtaW5wdXQtZGF0ZXBpY2tlcgogICAgICAgICAgbGFiZWw9Ik1lZXRpbmcgVGltZSAod2l0aCBUaW1lem9uZSkiCiAgICAgICAgICBkZXNjcmlwdGlvbj0iU2VsZWN0IGEgZGF0ZS90aW1lIGFuZCB0aW1lem9uZSBmb3IgdGhlIG1lZXRpbmciCiAgICAgICAgICAuZW5hYmxlVGltZT0keyEwfQogICAgICAgICAgLmVuYWJsZVRpbWV6b25lPSR7ITB9CiAgICAgICAgICB0aW1lRm9ybWF0PSIyNGgiCiAgICAgICAgICB0aW1lem9uZT0iQW1lcmljYS9OZXdfWW9yayIKICAgICAgICA+PC9kZWVzLWlucHV0LWRhdGVwaWNrZXI+CiAgICAgICAgCiAgICAgICAgPGRlZXMtaW5wdXQtZGF0ZXBpY2tlcgogICAgICAgICAgbGFiZWw9Ikdsb2JhbCBFdmVudCBTY2hlZHVsZSIKICAgICAgICAgIGRlc2NyaXB0aW9uPSJTY2hlZHVsZSBhbiBldmVudCBhY3Jvc3MgZGlmZmVyZW50IHRpbWV6b25lcyIKICAgICAgICAgIC5lbmFibGVUaW1lPSR7ITB9CiAgICAgICAgICAuZW5hYmxlVGltZXpvbmU9JHshMH0KICAgICAgICAgIHRpbWVGb3JtYXQ9IjEyaCIKICAgICAgICAgIHRpbWV6b25lPSJFdXJvcGUvTG9uZG9uIgogICAgICAgICAgLm1pbnV0ZUluY3JlbWVudD0kezMwfQogICAgICAgID48L2RlZXMtaW5wdXQtZGF0ZXBpY2tlcj4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgoKICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntsZXQgZT1zLnF1ZXJ5U2VsZWN0b3IoImRlZXMtaW5wdXQtZGF0ZXBpY2tlciIpO2UmJmUuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwodD0+e2xldCBhPXQudGFyZ2V0LnZhbHVlO2lmKGEpe2xldCByPW5ldyBEYXRlKGEpLG49bmV3IERhdGUsbz1NYXRoLmZsb29yKChyLmdldFRpbWUoKS1uLmdldFRpbWUoKSkvKDFlMyo2MCo2MCoyNCkpO2NvbnNvbGUubG9nKGBTZWxlY3RlZCBkYXRlIGlzICR7b30gZGF5cyBmcm9tIHRvZGF5YCl9fSkpfX0+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJEYXRlIFJhbmdlIENvbnN0cmFpbnRzIn0gLnN1YnRpdGxlPSR7IkxpbWl0IHNlbGVjdGFibGUgZGF0ZXMgd2l0aCBtaW4gYW5kIG1heCB2YWx1ZXMifT4KICAgICAgICA8ZGVlcy1pbnB1dC1kYXRlcGlja2VyCiAgICAgICAgICBsYWJlbD0iRnV0dXJlIERhdGUgT25seSIKICAgICAgICAgIGRlc2NyaXB0aW9uPSJDYW4gb25seSBzZWxlY3QgZGF0ZXMgZnJvbSB0b2RheSB0byA5MCBkYXlzIGluIHRoZSBmdXR1cmUiCiAgICAgICAgICAubWluRGF0ZT0ke25ldyBEYXRlKCkudG9JU09TdHJpbmcoKX0KICAgICAgICAgIC5tYXhEYXRlPSR7bmV3IERhdGUoRGF0ZS5ub3coKSsyMTYwKjYwKjYwKjFlMykudG9JU09TdHJpbmcoKX0KICAgICAgICA+PC9kZWVzLWlucHV0LWRhdGVwaWNrZXI+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57bGV0IGU9eyJERC9NTS9ZWVlZIjoiRXVyb3BlYW4iLCJNTS9ERC9ZWVlZIjoiVVMiLCJZWVlZLU1NLUREIjoiSVNPIn07cy5xdWVyeVNlbGVjdG9yQWxsKCJkZWVzLWlucHV0LWRhdGVwaWNrZXIiKS5mb3JFYWNoKGE9PnthLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsKHI9PntsZXQgbj1yLnRhcmdldCxvPW4uc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLmRhdGUtaW5wdXQiKTtvJiZjb25zb2xlLmxvZyhgJHtuLmxhYmVsfSBmb3JtYXQ6YCxvLnZhbHVlKX0pKX0pfX0+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJEYXRlIEZvcm1hdHMifSAuc3VidGl0bGU9JHsiRGlmZmVyZW50IGRhdGUgZGlzcGxheSBmb3JtYXRzIGZvciB2YXJpb3VzIHJlZ2lvbnMifT4KICAgICAgICA8ZGl2IGNsYXNzPSJkYXRlLWdyb3VwIj4KICAgICAgICAgIDxkZWVzLWlucHV0LWRhdGVwaWNrZXIKICAgICAgICAgICAgbGFiZWw9IkV1cm9wZWFuIEZvcm1hdCIKICAgICAgICAgICAgZGF0ZUZvcm1hdD0iREQvTU0vWVlZWSIKICAgICAgICAgICAgLnZhbHVlPSR7bmV3IERhdGUoKS50b0lTT1N0cmluZygpfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1kYXRlcGlja2VyPgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1pbnB1dC1kYXRlcGlja2VyCiAgICAgICAgICAgIGxhYmVsPSJVUyBGb3JtYXQiCiAgICAgICAgICAgIGRhdGVGb3JtYXQ9Ik1NL0REL1lZWVkiCiAgICAgICAgICAgIC52YWx1ZT0ke25ldyBEYXRlKCkudG9JU09TdHJpbmcoKX0KICAgICAgICAgID48L2RlZXMtaW5wdXQtZGF0ZXBpY2tlcj4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtaW5wdXQtZGF0ZXBpY2tlcgogICAgICAgICAgICBsYWJlbD0iSVNPIEZvcm1hdCIKICAgICAgICAgICAgZGF0ZUZvcm1hdD0iWVlZWS1NTS1ERCIKICAgICAgICAgICAgLnZhbHVlPSR7bmV3IERhdGUoKS50b0lTT1N0cmluZygpfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1kYXRlcGlja2VyPgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CgogICAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e2xldCBlPXMucXVlcnlTZWxlY3RvcigiZGVlcy1pbnB1dC1kYXRlcGlja2VyW3JlcXVpcmVkXSIpO2UmJmUuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsKCk9PntlLmdldFZhbHVlKCl8fGNvbnNvbGUubG9nKCJSZXF1aXJlZCBkYXRlIGZpZWxkIGlzIGVtcHR5Iil9KX19PgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiRm9ybSBTdGF0ZXMifSAuc3VidGl0bGU9JHsiUmVxdWlyZWQgYW5kIGRpc2FibGVkIHN0YXRlcyJ9PgogICAgICAgIDxkZWVzLWlucHV0LWRhdGVwaWNrZXIKICAgICAgICAgIGxhYmVsPSJCaXJ0aCBEYXRlIgogICAgICAgICAgZGVzY3JpcHRpb249IlRoaXMgZmllbGQgaXMgcmVxdWlyZWQiCiAgICAgICAgICAucmVxdWlyZWQ9JHshMH0KICAgICAgICAgIHBsYWNlaG9sZGVyPSJTZWxlY3QgeW91ciBiaXJ0aCBkYXRlIgogICAgICAgID48L2RlZXMtaW5wdXQtZGF0ZXBpY2tlcj4KICAgICAgICAKICAgICAgICA8ZGVlcy1pbnB1dC1kYXRlcGlja2VyCiAgICAgICAgICBsYWJlbD0iRGlzYWJsZWQgRGF0ZSIKICAgICAgICAgIGRlc2NyaXB0aW9uPSJUaGlzIGZpZWxkIGNhbm5vdCBiZSBlZGl0ZWQiCiAgICAgICAgICAuZGlzYWJsZWQ9JHshMH0KICAgICAgICAgIC52YWx1ZT0ke25ldyBEYXRlKCkudG9JU09TdHJpbmcoKX0KICAgICAgICA+PC9kZWVzLWlucHV0LWRhdGVwaWNrZXI+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57bGV0IGU9cy5xdWVyeVNlbGVjdG9yKCdkZWVzLWlucHV0LWRhdGVwaWNrZXJbbGFiZWw9IlVTIENhbGVuZGFyIl0nKSx0PXMucXVlcnlTZWxlY3RvcignZGVlcy1pbnB1dC1kYXRlcGlja2VyW2xhYmVsPSJFVSBDYWxlbmRhciJdJyk7ZSYmY29uc29sZS5sb2coIlVTIENhbGVuZGFyIHN0YXJ0cyBvbiBTdW5kYXkgKDApIiksdCYmY29uc29sZS5sb2coIkVVIENhbGVuZGFyIHN0YXJ0cyBvbiBNb25kYXkgKDEpIil9fT4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IkNhbGVuZGFyIEN1c3RvbWl6YXRpb24ifSAuc3VidGl0bGU9JHsiRGlmZmVyZW50IHdlZWsgc3RhcnQgZGF5cyBmb3IgdmFyaW91cyByZWdpb25zIn0+CiAgICAgICAgPGRpdiBjbGFzcz0iZGF0ZS1ncm91cCI+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1kYXRlcGlja2VyCiAgICAgICAgICAgIGxhYmVsPSJVUyBDYWxlbmRhciIKICAgICAgICAgICAgZGVzY3JpcHRpb249IldlZWsgc3RhcnRzIG9uIFN1bmRheSIKICAgICAgICAgICAgLndlZWtTdGFydHNPbj0kezB9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LWRhdGVwaWNrZXI+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWlucHV0LWRhdGVwaWNrZXIKICAgICAgICAgICAgbGFiZWw9IkVVIENhbGVuZGFyIgogICAgICAgICAgICBkZXNjcmlwdGlvbj0iV2VlayBzdGFydHMgb24gTW9uZGF5IgogICAgICAgICAgICAud2Vla1N0YXJ0c09uPSR7MX0KICAgICAgICAgID48L2RlZXMtaW5wdXQtZGF0ZXBpY2tlcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgoKICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntsZXQgZT1pKCgpPT57bGV0IGE9W10scj1uZXcgRGF0ZSxuPXIuZ2V0RnVsbFllYXIoKSxvPXIuZ2V0TW9udGgoKSxsPW5ldyBEYXRlKG4sbywxKTtmb3IoO2wuZ2V0TW9udGgoKT09PW87KShsLmdldERheSgpPT09MHx8bC5nZXREYXkoKT09PTYpJiZhLnB1c2gobmV3IERhdGUobCkudG9JU09TdHJpbmcoKSksbC5zZXREYXRlKGwuZ2V0RGF0ZSgpKzEpO3JldHVybiBhfSwiZ2VuZXJhdGVXZWVrZW5kcyIpLHQ9cy5xdWVyeVNlbGVjdG9yKCJkZWVzLWlucHV0LWRhdGVwaWNrZXIiKTt0JiYodC5kaXNhYmxlZERhdGVzPWUoKSxjb25zb2xlLmxvZygiRGlzYWJsZWQgd2Vla2VuZCBkYXRlcyBmb3IgY3VycmVudCBtb250aCIpKX19PgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiRGlzYWJsZWQgRGF0ZXMifSAuc3VidGl0bGU9JHsiQ2FsZW5kYXIgd2l0aCBzcGVjaWZpYyBkYXRlcyBkaXNhYmxlZCAod2Vla2VuZHMgaW4gY3VycmVudCBtb250aCkifT4KICAgICAgICA8ZGVlcy1pbnB1dC1kYXRlcGlja2VyCiAgICAgICAgICBsYWJlbD0iQXZhaWxhYmlsaXR5IENhbGVuZGFyIgogICAgICAgICAgZGVzY3JpcHRpb249IldlZWtlbmRzIGFyZSBkaXNhYmxlZCBmb3IgdGhlIGN1cnJlbnQgbW9udGgiCiAgICAgICAgPjwvZGVlcy1pbnB1dC1kYXRlcGlja2VyPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CgogICAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e2xldCBlPW5ldyBEYXRlLHQ9ZS5nZXRNb250aCgpLGE9ZS5nZXRGdWxsWWVhcigpLHI9W3tkYXRlOmAke2F9LSR7KHQrMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9LSR7ZS5nZXREYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9YCx0aXRsZToiVGVhbSBNZWV0aW5nIix0eXBlOiJpbmZvIixjb3VudDoyfSx7ZGF0ZTpgJHthfS0keyh0KzEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfS0keyhlLmdldERhdGUoKSsxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX1gLHRpdGxlOiJQcm9qZWN0IERlYWRsaW5lIix0eXBlOiJ3YXJuaW5nIn0se2RhdGU6YCR7YX0tJHsodCsxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX0tJHsoZS5nZXREYXRlKCkrMikudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9YCx0aXRsZToiUmVsZWFzZSBEYXkiLHR5cGU6InN1Y2Nlc3MifSx7ZGF0ZTpgJHthfS0keyh0KzEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfS0keyhlLmdldERhdGUoKSs1KS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX1gLHRpdGxlOiJVcmdlbnQgRml4IFJlcXVpcmVkIix0eXBlOiJlcnJvciJ9LHtkYXRlOmAke2F9LSR7KHQrMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9LSR7KGUuZ2V0RGF0ZSgpKzcpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfWAsdGl0bGU6Ik11bHRpcGxlIEV2ZW50cyBUb2RheSIsdHlwZToiaW5mbyIsY291bnQ6NX0se2RhdGU6YCR7YX0tJHsodCsyKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX0tMTVgLHRpdGxlOiJGdXR1cmUgUGxhbm5pbmcgU2Vzc2lvbiIsdHlwZToiaW5mbyJ9XSxuPXMucXVlcnlTZWxlY3RvcigiZGVlcy1pbnB1dC1kYXRlcGlja2VyIik7biYmKG4uZXZlbnRzPXIsY29uc29sZS5sb2coIkNhbGVuZGFyIGV2ZW50cyBsb2FkZWQ6IixyKSl9fT4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IkNhbGVuZGFyIHdpdGggRXZlbnRzIn0gLnN1YnRpdGxlPSR7IlZpc3VhbCBmZWVkYmFjayBmb3Igc2NoZWR1bGVkIGV2ZW50cyJ9PgogICAgICAgIDxkZWVzLWlucHV0LWRhdGVwaWNrZXIKICAgICAgICAgIGxhYmVsPSJFdmVudCBDYWxlbmRhciIKICAgICAgICAgIGRlc2NyaXB0aW9uPSJEYXlzIHdpdGggY29sb3JlZCBkb3RzIGhhdmUgZXZlbnRzLiBIb3ZlciB0byBzZWUgZGV0YWlscy4iCiAgICAgICAgPjwvZGVlcy1pbnB1dC1kYXRlcGlja2VyPgogICAgICAgIAogICAgICAgIDxkaXYgY2xhc3M9ImRlbW8tb3V0cHV0IiBzdHlsZT0ibWFyZ2luLXRvcDogMTZweDsiPgogICAgICAgICAgPHN0cm9uZz5FdmVudCBMZWdlbmQ6PC9zdHJvbmc+PGJyPgogICAgICAgICAgPHNwYW4gc3R5bGU9ImNvbG9yOiAjMDk2OWRhOyI+4pePIEluZm88L3NwYW4+IHwgCiAgICAgICAgICA8c3BhbiBzdHlsZT0iY29sb3I6ICNkMjk5MjI7Ij7il48gV2FybmluZzwvc3Bhbj4gfCAKICAgICAgICAgIDxzcGFuIHN0eWxlPSJjb2xvcjogIzJlYTA0MzsiPuKXjyBTdWNjZXNzPC9zcGFuPiB8IAogICAgICAgICAgPHNwYW4gc3R5bGU9ImNvbG9yOiAjY2YyMjJlOyI+4pePIEVycm9yPC9zcGFuPjxicj4KICAgICAgICAgIDxlbT5EYXlzIHdpdGggbW9yZSB0aGFuIDMgZXZlbnRzIHNob3cgYSBjb3VudCBiYWRnZTwvZW0+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57bGV0IGU9cy5xdWVyeVNlbGVjdG9yKCJkZWVzLWlucHV0LWRhdGVwaWNrZXIiKSx0PXMucXVlcnlTZWxlY3RvcigiI2V2ZW50LW91dHB1dCIpO2UmJnQmJihlLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsKGE9PntsZXQgcj1hLnRhcmdldCxuPXIudmFsdWU7aWYobil7bGV0IG89bmV3IERhdGUobikscD1yLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5kYXRlLWlucHV0Iik/LnZhbHVlfHwiTi9BIjt0LmlubmVySFRNTD1gCiAgICAgICAgICAgICAgPHN0cm9uZz5FdmVudCB0cmlnZ2VyZWQhPC9zdHJvbmc+PGJyPgogICAgICAgICAgICAgIElTTyBWYWx1ZTogJHtufTxicj4KICAgICAgICAgICAgICBGb3JtYXR0ZWQ6ICR7cH08YnI+CiAgICAgICAgICAgICAgRGF0ZSBvYmplY3Q6ICR7by50b0xvY2FsZVN0cmluZygpfQogICAgICAgICAgICBgfWVsc2UgdC5pbm5lckhUTUw9IjxlbT5EYXRlIGNsZWFyZWQ8L2VtPiJ9KSksZS5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwoKT0+e2NvbnNvbGUubG9nKCJEYXRlcGlja2VyIGxvc3QgZm9jdXMiKX0pKX19PgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiRXZlbnQgSGFuZGxpbmcifSAuc3VidGl0bGU9JHsiSW50ZXJhY3RpdmUgZGVtb25zdHJhdGlvbiBvZiBjaGFuZ2UgZXZlbnRzIn0+CiAgICAgICAgPGRlZXMtaW5wdXQtZGF0ZXBpY2tlcgogICAgICAgICAgbGFiZWw9IkV2ZW50IERlbW8iCiAgICAgICAgICBkZXNjcmlwdGlvbj0iU2VsZWN0IGEgZGF0ZSB0byBzZWUgdGhlIGV2ZW50IGRldGFpbHMiCiAgICAgICAgPjwvZGVlcy1pbnB1dC1kYXRlcGlja2VyPgogICAgICAgIAogICAgICAgIDxkaXYgaWQ9ImV2ZW50LW91dHB1dCIgY2xhc3M9ImRlbW8tb3V0cHV0Ij4KICAgICAgICAgIDxlbT5TZWxlY3QgYSBkYXRlIHRvIHNlZSBldmVudCBkZXRhaWxzLi4uPC9lbT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgogIDwvZGl2PgpgLCJkZW1vRnVuYyIpfSk7dmFyIFZkYSxVZGE9ZygoKT0+e3BlKCk7emkoKTtWZGE9Wy4uLk90LmJhc2VTdHlsZXMsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIC5pbnB1dC1jb250YWluZXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgLmRhdGUtaW5wdXQgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogNDBweDsKICAgICAgICBwYWRkaW5nOiAwIDEycHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDEwMCUpIiwiaHNsKDIyNCA3MS40JSA0LjElKSIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDIxNC4zIDMxLjglIDkxLjQlKSIsImhzbCgyMTcuMiAzMi42JSAxNy41JSkiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBsaW5lLWhlaWdodDogMS41OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIyNCA3MS40JSA0LjElKSIsImhzbCgyMTAgMjAlIDk4JSkiKX07CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgICAgfQoKICAgICAgLmRhdGUtaW5wdXQ6OnBsYWNlaG9sZGVyIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMjAgOC45JSA0Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDY1LjElKSIpfTsKICAgICAgfQoKICAgICAgLmRhdGUtaW5wdXQ6aG92ZXI6bm90KDpkaXNhYmxlZCkgewogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTQuMyAzMS44JSA5MS40JSkiLCJoc2woMjE3LjIgMzIuNiUgMTcuNSUpIil9OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDIwJSA5OCUpIiwiaHNsKDIxNSAyNy45JSAxNi45JSkiKX07CiAgICAgIH0KCiAgICAgIC5kYXRlLWlucHV0OmZvY3VzLAogICAgICAuZGF0ZS1pbnB1dC5vcGVuIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgMTEuMiUpIiwiaHNsKDIxMCAyMCUgOTglKSIpfTsKICAgICAgICBvdXRsaW5lOiAycHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDJweDsKICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggJHtoLmJkVGhlbWUoImhzbCgwIDAlIDEwMCUpIiwiaHNsKDIyNCA3MS40JSA0LjElKSIpfSwKICAgICAgICAgICAgICAgICAgICAwIDAgMCA0cHggJHtoLmJkVGhlbWUoImhzbCgyMjIuMiA0Ny40JSAxMS4yJSAvIDAuMSkiLCJoc2woMjEwIDIwJSA5OCUgLyAwLjEpIil9OwogICAgICB9CgogICAgICAuZGF0ZS1pbnB1dDpkaXNhYmxlZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgMjAlIDk4JSkiLCJoc2woMjE1IDI3LjklIDE2LjklKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMjAgOC45JSA0Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDY1LjElKSIpfTsKICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgfQoKICAgICAgLmljb24tY29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA0cHg7CiAgICAgICAgcGFkZGluZzogMCAxMnB4OwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICAuaWNvbi1jb250YWluZXIgPiAqIHsKICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0bzsKICAgICAgfQoKICAgICAgLmNhbGVuZGFyLWljb24gewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIyMCA4LjklIDQ2LjElKSIsImhzbCgyMTUgMjAuMiUgNjUuMSUpIil9OwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgfQoKICAgICAgLmNsZWFyLWJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMjAgOC45JSA0Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDY1LjElKSIpfTsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZSwgYmFja2dyb3VuZC1jb2xvciAwLjJzIGVhc2U7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQoKICAgICAgLmNsZWFyLWJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgMjAlIDk4JSkiLCJoc2woMjE1IDI3LjklIDE2LjklKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMjQgNzEuNCUgNC4xJSkiLCJoc2woMjEwIDIwJSA5OCUpIil9OwogICAgICB9CiAgICBgXX0pO3ZhciBXZGEsR2RhPWcoKCk9PntwZSgpO1dkYT1pKHM9PndgCiAgICAgICAgPGRpdiBjbGFzcz0iaW5wdXQtd3JhcHBlciI+CiAgICAgICAgICA8ZGVlcy1sYWJlbCAubGFiZWw9JHtzLmxhYmVsfSAuaW5mb1RleHQ9JHtzLmluZm9UZXh0fSAucmVxdWlyZWQ9JHtzLnJlcXVpcmVkfT48L2RlZXMtbGFiZWw+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dC1jb250YWluZXIiPgogICAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgICB0eXBlPSJ0ZXh0IgogICAgICAgICAgICAgIGNsYXNzPSJkYXRlLWlucHV0ICR7cy5pc09wZW5lZD8ib3BlbiI6IiJ9IgogICAgICAgICAgICAgIC52YWx1ZT0ke3MuZm9ybWF0RGF0ZShzLnZhbHVlKX0KICAgICAgICAgICAgICAucGxhY2Vob2xkZXI9JHtzLnBsYWNlaG9sZGVyfQogICAgICAgICAgICAgID9kaXNhYmxlZD0ke3MuZGlzYWJsZWR9CiAgICAgICAgICAgICAgQGNsaWNrPSR7cy50b2dnbGVDYWxlbmRhcn0KICAgICAgICAgICAgICBAa2V5ZG93bj0ke3MuaGFuZGxlS2V5ZG93bn0KICAgICAgICAgICAgICBAaW5wdXQ9JHtzLmhhbmRsZU1hbnVhbElucHV0fQogICAgICAgICAgICAgIEBibHVyPSR7cy5oYW5kbGVJbnB1dEJsdXJ9CiAgICAgICAgICAgICAgc3R5bGU9InBhZGRpbmctcmlnaHQ6ICR7cy52YWx1ZT8iNjRweCI6IjQwcHgifSIKICAgICAgICAgICAgLz4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaWNvbi1jb250YWluZXIiPgogICAgICAgICAgICAgICR7cy52YWx1ZSYmIXMuZGlzYWJsZWQ/d2AKICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImNsZWFyLWJ1dHRvbiIgQGNsaWNrPSR7cy5jbGVhclZhbHVlfSB0aXRsZT0iQ2xlYXIiPgogICAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTp4IiBpY29uU2l6ZT0iMTQiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICAgICA8ZGVlcy1pY29uIGNsYXNzPSJjYWxlbmRhci1pY29uIiBpY29uPSJsdWNpZGU6Y2FsZW5kYXIiIGljb25TaXplPSIxNiI+PC9kZWVzLWljb24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICAke3MucmVuZGVyRGVzY3JpcHRpb24oKX0KICAgICAgICA8L2Rpdj4KICAgICAgYCwicmVuZGVyRGF0ZXBpY2tlciIpfSk7dmFyIFRyLFRhLHVuZSxGZXQ9ZygoKT0+e3BlKCk7a3QoKTt6bigpO3B0KCk7RjEoKTtVYSgpO1RyPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxUYT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sdW5lPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1pbnB1dC1kYXRlcGlja2VyLXBvcHVwIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W10sSCxrPVtdLFM9W10sSSxQPVtdLFI9W10sSyxWPVtdLFc9W10sbWUsQj1bXSxVPVtdLGhlLEY9W10saj1bXSx1ZSxsZT1bXSxRPVtdLGllLHRlPVtdLGVlPVtdLGtlLFg9W10sWj1bXSx5ZSxxPVtdLEE9W10sc2Usb2U9W10sYWU9W10sVGUsUmU9W10sQmU9W10sR2UsRGU9W10sX2U9W107dmFyIENlPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzSW5wdXREYXRlcGlja2VyUG9wdXAiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgdmU9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7YXR0cmlidXRlOiExfSldLHA9W0woe2F0dHJpYnV0ZTohMX0pXSxjPVtMKHt0eXBlOkJvb2xlYW59KV0seD1bTCh7dHlwZTpTdHJpbmd9KV0seT1bTCh7dHlwZTpOdW1iZXJ9KV0sTj1bTCh7dHlwZTpOdW1iZXJ9KV0sTz1bTCh7dHlwZTpTdHJpbmd9KV0sSD1bTCh7dHlwZTpTdHJpbmd9KV0sST1bTCh7dHlwZTpBcnJheX0pXSxLPVtMKHt0eXBlOkJvb2xlYW59KV0sbWU9W0woe3R5cGU6U3RyaW5nfSldLGhlPVtMKHt0eXBlOkFycmF5fSldLHVlPVtMKHt0eXBlOkJvb2xlYW59KV0saWU9W1koKV0sa2U9W1koKV0seWU9W1koKV0sc2U9W1koKV0sVGU9W1koKV0sR2U9W1koKV0sVHIodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0cmlnZ2VyUmVjdCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShiZT0+InRyaWdnZXJSZWN0ImluIGJlLCJoYXMiKSxnZXQ6aShiZT0+YmUudHJpZ2dlclJlY3QsImdldCIpLHNldDppKChiZSxFZSk9PntiZS50cmlnZ2VyUmVjdD1FZX0sInNldCIpfSxtZXRhZGF0YTp2ZX0sbyxsKSxUcih0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im93bmVyQ29tcG9uZW50IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGJlPT4ib3duZXJDb21wb25lbnQiaW4gYmUsImhhcyIpLGdldDppKGJlPT5iZS5vd25lckNvbXBvbmVudCwiZ2V0Iiksc2V0OmkoKGJlLEVlKT0+e2JlLm93bmVyQ29tcG9uZW50PUVlfSwic2V0Iil9LG1ldGFkYXRhOnZlfSxkLHUpLFRyKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZW5hYmxlVGltZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShiZT0+ImVuYWJsZVRpbWUiaW4gYmUsImhhcyIpLGdldDppKGJlPT5iZS5lbmFibGVUaW1lLCJnZXQiKSxzZXQ6aSgoYmUsRWUpPT57YmUuZW5hYmxlVGltZT1FZX0sInNldCIpfSxtZXRhZGF0YTp2ZX0sYix2KSxUcih0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InRpbWVGb3JtYXQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYmU9PiJ0aW1lRm9ybWF0ImluIGJlLCJoYXMiKSxnZXQ6aShiZT0+YmUudGltZUZvcm1hdCwiZ2V0Iiksc2V0OmkoKGJlLEVlKT0+e2JlLnRpbWVGb3JtYXQ9RWV9LCJzZXQiKX0sbWV0YWRhdGE6dmV9LG0sZiksVHIodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtaW51dGVJbmNyZW1lbnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYmU9PiJtaW51dGVJbmNyZW1lbnQiaW4gYmUsImhhcyIpLGdldDppKGJlPT5iZS5taW51dGVJbmNyZW1lbnQsImdldCIpLHNldDppKChiZSxFZSk9PntiZS5taW51dGVJbmNyZW1lbnQ9RWV9LCJzZXQiKX0sbWV0YWRhdGE6dmV9LE0seiksVHIodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ3ZWVrU3RhcnRzT24iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYmU9PiJ3ZWVrU3RhcnRzT24iaW4gYmUsImhhcyIpLGdldDppKGJlPT5iZS53ZWVrU3RhcnRzT24sImdldCIpLHNldDppKChiZSxFZSk9PntiZS53ZWVrU3RhcnRzT249RWV9LCJzZXQiKX0sbWV0YWRhdGE6dmV9LEMsXyksVHIodGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtaW5EYXRlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGJlPT4ibWluRGF0ZSJpbiBiZSwiaGFzIiksZ2V0OmkoYmU9PmJlLm1pbkRhdGUsImdldCIpLHNldDppKChiZSxFZSk9PntiZS5taW5EYXRlPUVlfSwic2V0Iil9LG1ldGFkYXRhOnZlfSwkLEUpLFRyKHRoaXMsbnVsbCxILHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWF4RGF0ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShiZT0+Im1heERhdGUiaW4gYmUsImhhcyIpLGdldDppKGJlPT5iZS5tYXhEYXRlLCJnZXQiKSxzZXQ6aSgoYmUsRWUpPT57YmUubWF4RGF0ZT1FZX0sInNldCIpfSxtZXRhZGF0YTp2ZX0sayxTKSxUcih0aGlzLG51bGwsSSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImRpc2FibGVkRGF0ZXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYmU9PiJkaXNhYmxlZERhdGVzImluIGJlLCJoYXMiKSxnZXQ6aShiZT0+YmUuZGlzYWJsZWREYXRlcywiZ2V0Iiksc2V0OmkoKGJlLEVlKT0+e2JlLmRpc2FibGVkRGF0ZXM9RWV9LCJzZXQiKX0sbWV0YWRhdGE6dmV9LFAsUiksVHIodGhpcyxudWxsLEsse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJlbmFibGVUaW1lem9uZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShiZT0+ImVuYWJsZVRpbWV6b25lImluIGJlLCJoYXMiKSxnZXQ6aShiZT0+YmUuZW5hYmxlVGltZXpvbmUsImdldCIpLHNldDppKChiZSxFZSk9PntiZS5lbmFibGVUaW1lem9uZT1FZX0sInNldCIpfSxtZXRhZGF0YTp2ZX0sVixXKSxUcih0aGlzLG51bGwsbWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0aW1lem9uZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShiZT0+InRpbWV6b25lImluIGJlLCJoYXMiKSxnZXQ6aShiZT0+YmUudGltZXpvbmUsImdldCIpLHNldDppKChiZSxFZSk9PntiZS50aW1lem9uZT1FZX0sInNldCIpfSxtZXRhZGF0YTp2ZX0sQixVKSxUcih0aGlzLG51bGwsaGUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJldmVudHMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYmU9PiJldmVudHMiaW4gYmUsImhhcyIpLGdldDppKGJlPT5iZS5ldmVudHMsImdldCIpLHNldDppKChiZSxFZSk9PntiZS5ldmVudHM9RWV9LCJzZXQiKX0sbWV0YWRhdGE6dmV9LEYsaiksVHIodGhpcyxudWxsLHVlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToib3BlbnNUb1RvcCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShiZT0+Im9wZW5zVG9Ub3AiaW4gYmUsImhhcyIpLGdldDppKGJlPT5iZS5vcGVuc1RvVG9wLCJnZXQiKSxzZXQ6aSgoYmUsRWUpPT57YmUub3BlbnNUb1RvcD1FZX0sInNldCIpfSxtZXRhZGF0YTp2ZX0sbGUsUSksVHIodGhpcyxudWxsLGllLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VsZWN0ZWREYXRlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGJlPT4ic2VsZWN0ZWREYXRlImluIGJlLCJoYXMiKSxnZXQ6aShiZT0+YmUuc2VsZWN0ZWREYXRlLCJnZXQiKSxzZXQ6aSgoYmUsRWUpPT57YmUuc2VsZWN0ZWREYXRlPUVlfSwic2V0Iil9LG1ldGFkYXRhOnZlfSx0ZSxlZSksVHIodGhpcyxudWxsLGtlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidmlld0RhdGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYmU9PiJ2aWV3RGF0ZSJpbiBiZSwiaGFzIiksZ2V0OmkoYmU9PmJlLnZpZXdEYXRlLCJnZXQiKSxzZXQ6aSgoYmUsRWUpPT57YmUudmlld0RhdGU9RWV9LCJzZXQiKX0sbWV0YWRhdGE6dmV9LFgsWiksVHIodGhpcyxudWxsLHllLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VsZWN0ZWRIb3VyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGJlPT4ic2VsZWN0ZWRIb3VyImluIGJlLCJoYXMiKSxnZXQ6aShiZT0+YmUuc2VsZWN0ZWRIb3VyLCJnZXQiKSxzZXQ6aSgoYmUsRWUpPT57YmUuc2VsZWN0ZWRIb3VyPUVlfSwic2V0Iil9LG1ldGFkYXRhOnZlfSxxLEEpLFRyKHRoaXMsbnVsbCxzZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlbGVjdGVkTWludXRlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGJlPT4ic2VsZWN0ZWRNaW51dGUiaW4gYmUsImhhcyIpLGdldDppKGJlPT5iZS5zZWxlY3RlZE1pbnV0ZSwiZ2V0Iiksc2V0OmkoKGJlLEVlKT0+e2JlLnNlbGVjdGVkTWludXRlPUVlfSwic2V0Iil9LG1ldGFkYXRhOnZlfSxvZSxhZSksVHIodGhpcyxudWxsLFRlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWVudVpJbmRleCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShiZT0+Im1lbnVaSW5kZXgiaW4gYmUsImhhcyIpLGdldDppKGJlPT5iZS5tZW51WkluZGV4LCJnZXQiKSxzZXQ6aSgoYmUsRWUpPT57YmUubWVudVpJbmRleD1FZX0sInNldCIpfSxtZXRhZGF0YTp2ZX0sUmUsQmUpLFRyKHRoaXMsbnVsbCxHZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InZpc2libGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYmU9PiJ2aXNpYmxlImluIGJlLCJoYXMiKSxnZXQ6aShiZT0+YmUudmlzaWJsZSwiZ2V0Iiksc2V0OmkoKGJlLEVlKT0+e2JlLnZpc2libGU9RWV9LCJzZXQiKX0sbWV0YWRhdGE6dmV9LERlLF9lKSxUcihudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTp2ZX0sbnVsbCx0KSxDZT1hPWUudmFsdWUsdmUmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6dmV9KX0jZT1UYSh0aGlzLG8sbnVsbCk7Z2V0IHRyaWdnZXJSZWN0KCl7cmV0dXJuIHRoaXMuI2V9c2V0IHRyaWdnZXJSZWN0KHZlKXt0aGlzLiNlPXZlfSN0PShUYSh0aGlzLGwpLFRhKHRoaXMsZCxudWxsKSk7Z2V0IG93bmVyQ29tcG9uZW50KCl7cmV0dXJuIHRoaXMuI3R9c2V0IG93bmVyQ29tcG9uZW50KHZlKXt0aGlzLiN0PXZlfSNhPShUYSh0aGlzLHUpLFRhKHRoaXMsYiwhMSkpO2dldCBlbmFibGVUaW1lKCl7cmV0dXJuIHRoaXMuI2F9c2V0IGVuYWJsZVRpbWUodmUpe3RoaXMuI2E9dmV9I3M9KFRhKHRoaXMsdiksVGEodGhpcyxtLCIyNGgiKSk7Z2V0IHRpbWVGb3JtYXQoKXtyZXR1cm4gdGhpcy4jc31zZXQgdGltZUZvcm1hdCh2ZSl7dGhpcy4jcz12ZX0jaT0oVGEodGhpcyxmKSxUYSh0aGlzLE0sMSkpO2dldCBtaW51dGVJbmNyZW1lbnQoKXtyZXR1cm4gdGhpcy4jaX1zZXQgbWludXRlSW5jcmVtZW50KHZlKXt0aGlzLiNpPXZlfSNyPShUYSh0aGlzLHopLFRhKHRoaXMsQywxKSk7Z2V0IHdlZWtTdGFydHNPbigpe3JldHVybiB0aGlzLiNyfXNldCB3ZWVrU3RhcnRzT24odmUpe3RoaXMuI3I9dmV9I289KFRhKHRoaXMsXyksVGEodGhpcywkLCIiKSk7Z2V0IG1pbkRhdGUoKXtyZXR1cm4gdGhpcy4jb31zZXQgbWluRGF0ZSh2ZSl7dGhpcy4jbz12ZX0jbj0oVGEodGhpcyxFKSxUYSh0aGlzLGssIiIpKTtnZXQgbWF4RGF0ZSgpe3JldHVybiB0aGlzLiNufXNldCBtYXhEYXRlKHZlKXt0aGlzLiNuPXZlfSNsPShUYSh0aGlzLFMpLFRhKHRoaXMsUCxbXSkpO2dldCBkaXNhYmxlZERhdGVzKCl7cmV0dXJuIHRoaXMuI2x9c2V0IGRpc2FibGVkRGF0ZXModmUpe3RoaXMuI2w9dmV9I2M9KFRhKHRoaXMsUiksVGEodGhpcyxWLCExKSk7Z2V0IGVuYWJsZVRpbWV6b25lKCl7cmV0dXJuIHRoaXMuI2N9c2V0IGVuYWJsZVRpbWV6b25lKHZlKXt0aGlzLiNjPXZlfSNkPShUYSh0aGlzLFcpLFRhKHRoaXMsQixJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmUpKTtnZXQgdGltZXpvbmUoKXtyZXR1cm4gdGhpcy4jZH1zZXQgdGltZXpvbmUodmUpe3RoaXMuI2Q9dmV9I3U9KFRhKHRoaXMsVSksVGEodGhpcyxGLFtdKSk7Z2V0IGV2ZW50cygpe3JldHVybiB0aGlzLiN1fXNldCBldmVudHModmUpe3RoaXMuI3U9dmV9I3A9KFRhKHRoaXMsaiksVGEodGhpcyxsZSwhMSkpO2dldCBvcGVuc1RvVG9wKCl7cmV0dXJuIHRoaXMuI3B9c2V0IG9wZW5zVG9Ub3AodmUpe3RoaXMuI3A9dmV9I2g9KFRhKHRoaXMsUSksVGEodGhpcyx0ZSxudWxsKSk7Z2V0IHNlbGVjdGVkRGF0ZSgpe3JldHVybiB0aGlzLiNofXNldCBzZWxlY3RlZERhdGUodmUpe3RoaXMuI2g9dmV9I2Y9KFRhKHRoaXMsZWUpLFRhKHRoaXMsWCxuZXcgRGF0ZSkpO2dldCB2aWV3RGF0ZSgpe3JldHVybiB0aGlzLiNmfXNldCB2aWV3RGF0ZSh2ZSl7dGhpcy4jZj12ZX0jbT0oVGEodGhpcyxaKSxUYSh0aGlzLHEsMCkpO2dldCBzZWxlY3RlZEhvdXIoKXtyZXR1cm4gdGhpcy4jbX1zZXQgc2VsZWN0ZWRIb3VyKHZlKXt0aGlzLiNtPXZlfSNnPShUYSh0aGlzLEEpLFRhKHRoaXMsb2UsMCkpO2dldCBzZWxlY3RlZE1pbnV0ZSgpe3JldHVybiB0aGlzLiNnfXNldCBzZWxlY3RlZE1pbnV0ZSh2ZSl7dGhpcy4jZz12ZX0jYj0oVGEodGhpcyxhZSksVGEodGhpcyxSZSwxZTMpKTtnZXQgbWVudVpJbmRleCgpe3JldHVybiB0aGlzLiNifXNldCBtZW51WkluZGV4KHZlKXt0aGlzLiNiPXZlfSN2PShUYSh0aGlzLEJlKSxUYSh0aGlzLERlLCExKSk7Z2V0IHZpc2libGUoKXtyZXR1cm4gdGhpcy4jdn1zZXQgdmlzaWJsZSh2ZSl7dGhpcy4jdj12ZX13aW5kb3dMYXllcj0oVGEodGhpcyxfZSksbnVsbCk7aXNEZXN0cm95aW5nPSExO3N0YXRpYyBzdHlsZXM9W0hlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHdpZHRoOiAwOwogICAgICAgIGhlaWdodDogMDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgKiB7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLmNhbGVuZGFyLXBvcHVwIHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87CiAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybSwgb3BhY2l0eTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNHB4KTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTAwJSkiLCJoc2woMjI0IDcxLjQlIDQuMSUpIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMjE0LjMgMzEuOCUgOTEuNCUpIiwiaHNsKDIxNy4yIDMyLjYlIDE3LjUlKSIpfTsKICAgICAgICBib3gtc2hhZG93OiAke2guYmRUaGVtZSgiMCAxMHB4IDE1cHggLTNweCBoc2woMCAwJSAwJSAvIDAuMSksIDAgNHB4IDZweCAtNHB4IGhzbCgwIDAlIDAlIC8gMC4xKSIsIjAgMTBweCAxNXB4IC0zcHggaHNsKDAgMCUgMCUgLyAwLjIpLCAwIDRweCA2cHggLTRweCBoc2woMCAwJSAwJSAvIDAuMikiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIHBhZGRpbmc6IDEycHg7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgbWluLXdpZHRoOiAyODBweDsKICAgICAgfQoKICAgICAgLmNhbGVuZGFyLXBvcHVwLnRvcCB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDRweCk7CiAgICAgIH0KCiAgICAgIC5jYWxlbmRhci1wb3B1cC5zaG93IHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgLyogQ2FsZW5kYXIgSGVhZGVyICovCiAgICAgIC5jYWxlbmRhci1oZWFkZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgICBnYXA6IDhweDsKICAgICAgfQoKICAgICAgLm1vbnRoLXllYXItZGlzcGxheSB7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjI0IDcxLjQlIDQuMSUpIiwiaHNsKDIxMCAyMCUgOTglKSIpfTsKICAgICAgICBmbGV4OiAxOwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgfQoKICAgICAgLm5hdi1idXR0b24gewogICAgICAgIHdpZHRoOiAyOHB4OwogICAgICAgIGhlaWdodDogMjhweDsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjIwIDguOSUgNDYuMSUpIiwiaHNsKDIxNSAyMC4yJSA2NS4xJSkiKX07CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTsKICAgICAgfQoKICAgICAgLm5hdi1idXR0b246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDIwJSA5OCUpIiwiaHNsKDIxNSAyNy45JSAxNi45JSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjI0IDcxLjQlIDQuMSUpIiwiaHNsKDIxMCAyMCUgOTglKSIpfTsKICAgICAgfQoKICAgICAgLyogV2Vla2RheSBoZWFkZXJzICovCiAgICAgIC53ZWVrZGF5cyB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg3LCAxZnIpOwogICAgICAgIG1hcmdpbi1ib3R0b206IDRweDsKICAgICAgfQoKICAgICAgLndlZWtkYXkgewogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMjAgOC45JSA0Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDY1LjElKSIpfTsKICAgICAgICBwYWRkaW5nOiAwIDAgOHB4IDA7CiAgICAgIH0KCiAgICAgIC8qIERheXMgZ3JpZCAqLwogICAgICAuZGF5cy1ncmlkIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDcsIDFmcik7CiAgICAgICAgZ2FwOiAycHg7CiAgICAgIH0KCiAgICAgIC5kYXkgewogICAgICAgIGFzcGVjdC1yYXRpbzogMTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMjQgNzEuNCUgNC4xJSkiLCJoc2woMjEwIDIwJSA5OCUpIil9OwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICB3aWR0aDogMzZweDsKICAgICAgICBoZWlnaHQ6IDM2cHg7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAuZGF5OmhvdmVyOm5vdCguZGlzYWJsZWQpIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxMCAyMCUgOTglKSIsImhzbCgyMTUgMjcuOSUgMTYuOSUpIil9OwogICAgICB9CgogICAgICAuZGF5Lm90aGVyLW1vbnRoIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMjAgOC45JSA0Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDY1LjElKSIpfTsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgIH0KCiAgICAgIC5kYXkudG9kYXkgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDIwJSA5OCUpIiwiaHNsKDIxNSAyNy45JSAxNi45JSkiKX07CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgfQoKICAgICAgLmRheS5zZWxlY3RlZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMjIuMiA0Ny40JSAxMS4yJSkiLCJoc2woMjEwIDIwJSA5OCUpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxMCAyMCUgOTglKSIsImhzbCgyMjIuMiA0Ny40JSAxMS4yJSkiKX07CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgfQoKICAgICAgLmRheS5kaXNhYmxlZCB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjIwIDguOSUgNDYuMSUpIiwiaHNsKDIxNSAyMC4yJSA2NS4xJSkiKX07CiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgICAgICBvcGFjaXR5OiAwLjM7CiAgICAgIH0KCiAgICAgIC8qIEV2ZW50IGluZGljYXRvcnMgKi8KICAgICAgLmV2ZW50LWluZGljYXRvciB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGJvdHRvbTogNHB4OwogICAgICAgIGxlZnQ6IDUwJTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBnYXA6IDJweDsKICAgICAgfQoKICAgICAgLmV2ZW50LWRvdCB7CiAgICAgICAgd2lkdGg6IDRweDsKICAgICAgICBoZWlnaHQ6IDRweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMjAgOC45JSA0Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDY1LjElKSIpfTsKICAgICAgfQoKICAgICAgLmV2ZW50LWRvdC5pbmZvIHsgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTEgNzAlIDUyJSkiLCJoc2woMjExIDcwJSA2MiUpIil9OyB9CiAgICAgIC5ldmVudC1kb3Qud2FybmluZyB7IGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woNDUgOTAlIDQ1JSkiLCJoc2woNDUgOTAlIDU1JSkiKX07IH0KICAgICAgLmV2ZW50LWRvdC5zdWNjZXNzIHsgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgxNDIgNjklIDQ1JSkiLCJoc2woMTQyIDY5JSA1NSUpIil9OyB9CiAgICAgIC5ldmVudC1kb3QuZXJyb3IgeyBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgNzIlIDUxJSkiLCJoc2woMCA3MiUgNjElKSIpfTsgfQoKICAgICAgLmV2ZW50LWNvdW50IHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAycHg7CiAgICAgICAgcmlnaHQ6IDJweDsKICAgICAgICBtaW4td2lkdGg6IDE2cHg7CiAgICAgICAgaGVpZ2h0OiAxNnB4OwogICAgICAgIHBhZGRpbmc6IDAgNHB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCA3MiUgNTElKSIsImhzbCgwIDcyJSA2MSUpIil9OwogICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICB9CgogICAgICAuZXZlbnQtdG9vbHRpcCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGJvdHRvbTogY2FsYygxMDAlICsgOHB4KTsKICAgICAgICBsZWZ0OiA1MCU7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAyMCUpIiwiaHNsKDAgMCUgOTAlKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDEwMCUpIiwiaHNsKDAgMCUgMCUpIil9OwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlOwogICAgICAgIHotaW5kZXg6IDEwOwogICAgICB9CgogICAgICAuZGF5Lmhhcy1ldmVudDpob3ZlciAuZXZlbnQtdG9vbHRpcCB7IG9wYWNpdHk6IDE7IH0KCiAgICAgIC8qIFRpbWUgc2VsZWN0b3IgKi8KICAgICAgLnRpbWUtc2VsZWN0b3IgewogICAgICAgIG1hcmdpbi10b3A6IDEycHg7CiAgICAgICAgcGFkZGluZy10b3A6IDEycHg7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMjE0LjMgMzEuOCUgOTEuNCUpIiwiaHNsKDIxNy4yIDMyLjYlIDE3LjUlKSIpfTsKICAgICAgfQoKICAgICAgLnRpbWUtc2VsZWN0b3ItdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMjAgOC45JSA0Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDY1LjElKSIpfTsKICAgICAgfQoKICAgICAgLnRpbWUtaW5wdXRzIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGdhcDogOHB4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC50aW1lLWlucHV0IHsKICAgICAgICB3aWR0aDogNjVweDsKICAgICAgICBoZWlnaHQ6IDM2cHg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgyMTQuMyAzMS44JSA5MS40JSkiLCJoc2woMjE3LjIgMzIuNiUgMTcuNSUpIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBwYWRkaW5nOiAwIDEycHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTAwJSkiLCJoc2woMjI0IDcxLjQlIDQuMSUpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIyNCA3MS40JSA0LjElKSIsImhzbCgyMTAgMjAlIDk4JSkiKX07CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTsKICAgICAgfQoKICAgICAgLnRpbWUtaW5wdXQ6Zm9jdXMgewogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDExLjIlKSIsImhzbCgyMTAgMjAlIDk4JSkiKX07CiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgMTEuMiUgLyAwLjEpIiwiaHNsKDIxMCAyMCUgOTglIC8gMC4xKSIpfTsKICAgICAgfQoKICAgICAgLnRpbWUtc2VwYXJhdG9yIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMjAgOC45JSA0Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDY1LjElKSIpfTsKICAgICAgfQoKICAgICAgLmFtLXBtLXNlbGVjdG9yIHsgZGlzcGxheTogZmxleDsgZ2FwOiA0cHg7IG1hcmdpbi1sZWZ0OiA4cHg7IH0KCiAgICAgIC5hbS1wbS1idXR0b24gewogICAgICAgIHBhZGRpbmc6IDZweCAxMnB4OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMjE0LjMgMzEuOCUgOTEuNCUpIiwiaHNsKDIxNy4yIDMyLjYlIDE3LjUlKSIpfTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTAwJSkiLCJoc2woMjI0IDcxLjQlIDQuMSUpIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMjAgOC45JSA0Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDY1LjElKSIpfTsKICAgICAgfQoKICAgICAgLmFtLXBtLWJ1dHRvbi5zZWxlY3RlZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMjIuMiA0Ny40JSAxMS4yJSkiLCJoc2woMjEwIDIwJSA5OCUpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxMCAyMCUgOTglKSIsImhzbCgyMjIuMiA0Ny40JSAxMS4yJSkiKX07CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDExLjIlKSIsImhzbCgyMTAgMjAlIDk4JSkiKX07CiAgICAgIH0KCiAgICAgIC5hbS1wbS1idXR0b246aG92ZXI6bm90KC5zZWxlY3RlZCkgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDIwJSA5OCUpIiwiaHNsKDIxNSAyNy45JSAxNi45JSkiKX07CiAgICAgIH0KCiAgICAgIC8qIFRpbWV6b25lIHNlbGVjdG9yICovCiAgICAgIC50aW1lem9uZS1zZWxlY3RvciB7CiAgICAgICAgbWFyZ2luLXRvcDogMTJweDsKICAgICAgICBwYWRkaW5nLXRvcDogMTJweDsKICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgyMTQuMyAzMS44JSA5MS40JSkiLCJoc2woMjE3LjIgMzIuNiUgMTcuNSUpIil9OwogICAgICB9CgogICAgICAudGltZXpvbmUtc2VsZWN0b3ItdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMjAgOC45JSA0Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDY1LjElKSIpfTsKICAgICAgfQoKICAgICAgLnRpbWV6b25lLXNlbGVjdCB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAzNnB4OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMjE0LjMgMzEuOCUgOTEuNCUpIiwiaHNsKDIxNy4yIDMyLjYlIDE3LjUlKSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgcGFkZGluZzogMCAxMnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTAwJSkiLCJoc2woMjI0IDcxLjQlIDQuMSUpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIyNCA3MS40JSA0LjElKSIsImhzbCgyMTAgMjAlIDk4JSkiKX07CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICB9CgogICAgICAvKiBBY3Rpb24gYnV0dG9ucyAqLwogICAgICAuY2FsZW5kYXItYWN0aW9ucyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBtYXJnaW4tdG9wOiAxMnB4OwogICAgICAgIHBhZGRpbmctdG9wOiAxMnB4OwogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDIxNC4zIDMxLjglIDkxLjQlKSIsImhzbCgyMTcuMiAzMi42JSAxNy41JSkiKX07CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uIHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgfQoKICAgICAgLnRvZGF5LWJ1dHRvbiB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDEwMCUpIiwiaHNsKDIyNCA3MS40JSA0LjElKSIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDIxNC4zIDMxLjglIDkxLjQlKSIsImhzbCgyMTcuMiAzMi42JSAxNy41JSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjI0IDcxLjQlIDQuMSUpIiwiaHNsKDIxMCAyMCUgOTglKSIpfTsKICAgICAgfQoKICAgICAgLnRvZGF5LWJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgMjAlIDk4JSkiLCJoc2woMjE1IDI3LjklIDE2LjklKSIpfTsKICAgICAgfQoKICAgICAgLmNsZWFyLWFjdGlvbi1idXR0b24gewogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIyMCA4LjklIDQ2LjElKSIsImhzbCgyMTUgMjAuMiUgNjUuMSUpIil9OwogICAgICB9CgogICAgICAuY2xlYXItYWN0aW9uLWJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDcyLjIlIDUwLjYlIC8gMC4xKSIsImhzbCgwIDYyLjglIDMwLjYlIC8gMC4xKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDcyLjIlIDUwLjYlKSIsImhzbCgwIDYyLjglIDMwLjYlKSIpfTsKICAgICAgfQogICAgYF07c3RhdGljIE1PTlRIX05BTUVTPVsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXTtzdGF0aWMgVElNRVpPTkVTPVt7dmFsdWU6IlVUQyIsbGFiZWw6IlVUQyAoQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWUpIn0se3ZhbHVlOiJBbWVyaWNhL05ld19Zb3JrIixsYWJlbDoiRWFzdGVybiBUaW1lIChVUyAmIENhbmFkYSkifSx7dmFsdWU6IkFtZXJpY2EvQ2hpY2FnbyIsbGFiZWw6IkNlbnRyYWwgVGltZSAoVVMgJiBDYW5hZGEpIn0se3ZhbHVlOiJBbWVyaWNhL0RlbnZlciIsbGFiZWw6Ik1vdW50YWluIFRpbWUgKFVTICYgQ2FuYWRhKSJ9LHt2YWx1ZToiQW1lcmljYS9Mb3NfQW5nZWxlcyIsbGFiZWw6IlBhY2lmaWMgVGltZSAoVVMgJiBDYW5hZGEpIn0se3ZhbHVlOiJFdXJvcGUvTG9uZG9uIixsYWJlbDoiTG9uZG9uIn0se3ZhbHVlOiJFdXJvcGUvUGFyaXMiLGxhYmVsOiJQYXJpcyJ9LHt2YWx1ZToiRXVyb3BlL0JlcmxpbiIsbGFiZWw6IkJlcmxpbiJ9LHt2YWx1ZToiRXVyb3BlL01vc2NvdyIsbGFiZWw6Ik1vc2NvdyJ9LHt2YWx1ZToiQXNpYS9EdWJhaSIsbGFiZWw6IkR1YmFpIn0se3ZhbHVlOiJBc2lhL0tvbGthdGEiLGxhYmVsOiJJbmRpYSBTdGFuZGFyZCBUaW1lIn0se3ZhbHVlOiJBc2lhL1NoYW5naGFpIixsYWJlbDoiQ2hpbmEgU3RhbmRhcmQgVGltZSJ9LHt2YWx1ZToiQXNpYS9Ub2t5byIsbGFiZWw6IlRva3lvIn0se3ZhbHVlOiJBdXN0cmFsaWEvU3lkbmV5IixsYWJlbDoiU3lkbmV5In0se3ZhbHVlOiJQYWNpZmljL0F1Y2tsYW5kIixsYWJlbDoiQXVja2xhbmQifV07cmVuZGVyKCl7aWYoIXRoaXMudHJpZ2dlclJlY3QpcmV0dXJuIHdgYDtsZXQgdmU9dGhpcy5jb21wdXRlUG9zaXRpb25TdHlsZSgpLGJlPXRoaXMud2Vla1N0YXJ0c09uPT09MT9bIk1vIiwiVHUiLCJXZSIsIlRoIiwiRnIiLCJTYSIsIlN1Il06WyJTdSIsIk1vIiwiVHUiLCJXZSIsIlRoIiwiRnIiLCJTYSJdLEVlPXRoaXMuZ2V0RGF5c0luTW9udGgoKSxqZT10aGlzLnNlbGVjdGVkSG91cjwxMjtyZXR1cm4gd2AKICAgICAgPGRpdgogICAgICAgIGNsYXNzPSJjYWxlbmRhci1wb3B1cCAke3RoaXMudmlzaWJsZT8ic2hvdyI6IiJ9ICR7dGhpcy5vcGVuc1RvVG9wPyJ0b3AiOiJib3R0b20ifSIKICAgICAgICBzdHlsZT0iJHt2ZX07IHotaW5kZXg6ICR7dGhpcy5tZW51WkluZGV4fTsiCiAgICAgID4KICAgICAgICA8ZGl2IGNsYXNzPSJjYWxlbmRhci1oZWFkZXIiPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibmF2LWJ1dHRvbiIgQGNsaWNrPSR7dGhpcy5wcmV2aW91c01vbnRofT4KICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6Y2hldnJvbkxlZnQiIGljb25TaXplPSIxNiI+PC9kZWVzLWljb24+CiAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im1vbnRoLXllYXItZGlzcGxheSI+CiAgICAgICAgICAgICR7Q2UuTU9OVEhfTkFNRVNbdGhpcy52aWV3RGF0ZS5nZXRNb250aCgpXX0gJHt0aGlzLnZpZXdEYXRlLmdldEZ1bGxZZWFyKCl9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9Im5hdi1idXR0b24iIEBjbGljaz0ke3RoaXMubmV4dE1vbnRofT4KICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6Y2hldnJvblJpZ2h0IiBpY29uU2l6ZT0iMTYiPjwvZGVlcy1pY29uPgogICAgICAgICAgPC9idXR0b24+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IndlZWtkYXlzIj4KICAgICAgICAgICR7YmUubWFwKFdlPT53YDxkaXYgY2xhc3M9IndlZWtkYXkiPiR7V2V9PC9kaXY+YCl9CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9ImRheXMtZ3JpZCI+CiAgICAgICAgICAke0VlLm1hcChXZT0+e2xldCBzdD10aGlzLmlzVG9kYXkoV2UpLE1lPXRoaXMuaXNTZWxlY3RlZChXZSksZ2U9V2UuZ2V0TW9udGgoKSE9PXRoaXMudmlld0RhdGUuZ2V0TW9udGgoKSxJZT10aGlzLmlzRGF5RGlzYWJsZWQoV2UpLGNlPXRoaXMuZ2V0RXZlbnRzRm9yRGF0ZShXZSksZGU9Y2UubGVuZ3RoPjAsTGU9Y2UucmVkdWNlKChLZSxZZSk9PktlKyhZZS5jb3VudHx8MSksMCk7cmV0dXJuIHdgCiAgICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgY2xhc3M9ImRheSAke2dlPyJvdGhlci1tb250aCI6IiJ9ICR7c3Q/InRvZGF5IjoiIn0gJHtNZT8ic2VsZWN0ZWQiOiIifSAke0llPyJkaXNhYmxlZCI6IiJ9ICR7ZGU/Imhhcy1ldmVudCI6IiJ9IgogICAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PiFJZSYmdGhpcy5oYW5kbGVTZWxlY3REYXRlKFdlKX0KICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAke1dlLmdldERhdGUoKX0KICAgICAgICAgICAgICAgICR7ZGU/d2AKICAgICAgICAgICAgICAgICAgJHtMZT4zP3dgCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZXZlbnQtY291bnQiPiR7TGV9PC9kaXY+CiAgICAgICAgICAgICAgICAgIGA6d2AKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJldmVudC1pbmRpY2F0b3IiPgogICAgICAgICAgICAgICAgICAgICAgJHtjZS5zbGljZSgwLDMpLm1hcChLZT0+d2AKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZXZlbnQtZG90ICR7S2UudHlwZXx8ImluZm8ifSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICBgKX0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgYH0KICAgICAgICAgICAgICAgICAgJHtjZVswXS50aXRsZT93YAogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImV2ZW50LXRvb2x0aXAiPgogICAgICAgICAgICAgICAgICAgICAgJHtjZVswXS50aXRsZX0KICAgICAgICAgICAgICAgICAgICAgICR7TGU+MT93YCAoKyR7TGUtMX0gbW9yZSlgOiIifQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICBgOiIifQogICAgICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYH0pfQogICAgICAgIDwvZGl2PgoKICAgICAgICAke3RoaXMuZW5hYmxlVGltZT93YAogICAgICAgICAgPGRpdiBjbGFzcz0idGltZS1zZWxlY3RvciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpbWUtc2VsZWN0b3ItdGl0bGUiPlRpbWU8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGltZS1pbnB1dHMiPgogICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIGNsYXNzPSJ0aW1lLWlucHV0IgogICAgICAgICAgICAgICAgLnZhbHVlPSR7dGhpcy50aW1lRm9ybWF0PT09IjEyaCI/KHRoaXMuc2VsZWN0ZWRIb3VyPT09MD8xMjp0aGlzLnNlbGVjdGVkSG91cj4xMj90aGlzLnNlbGVjdGVkSG91ci0xMjp0aGlzLnNlbGVjdGVkSG91cikudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIik6dGhpcy5zZWxlY3RlZEhvdXIudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9CiAgICAgICAgICAgICAgICBAaW5wdXQ9JHt0aGlzLmhhbmRsZUhvdXJJbnB1dH0KICAgICAgICAgICAgICAgIG1pbj0iJHt0aGlzLnRpbWVGb3JtYXQ9PT0iMTJoIj8xOjB9IgogICAgICAgICAgICAgICAgbWF4PSIke3RoaXMudGltZUZvcm1hdD09PSIxMmgiPzEyOjIzfSIKICAgICAgICAgICAgICAvPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0aW1lLXNlcGFyYXRvciI+Ojwvc3Bhbj4KICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBjbGFzcz0idGltZS1pbnB1dCIKICAgICAgICAgICAgICAgIC52YWx1ZT0ke3RoaXMuc2VsZWN0ZWRNaW51dGUudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9CiAgICAgICAgICAgICAgICBAaW5wdXQ9JHt0aGlzLmhhbmRsZU1pbnV0ZUlucHV0fQogICAgICAgICAgICAgICAgbWluPSIwIiBtYXg9IjU5IiBzdGVwPSIke3RoaXMubWludXRlSW5jcmVtZW50fHwxfSIKICAgICAgICAgICAgICAvPgogICAgICAgICAgICAgICR7dGhpcy50aW1lRm9ybWF0PT09IjEyaCI/d2AKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFtLXBtLXNlbGVjdG9yIj4KICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYW0tcG0tYnV0dG9uICR7amU/InNlbGVjdGVkIjoiIn0iIEBjbGljaz0keygpPT50aGlzLnNldEFNUE0oImFtIil9PkFNPC9idXR0b24+CiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImFtLXBtLWJ1dHRvbiAke2plPyIiOiJzZWxlY3RlZCJ9IiBAY2xpY2s9JHsoKT0+dGhpcy5zZXRBTVBNKCJwbSIpfT5QTTwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgOiIifQoKICAgICAgICAke3RoaXMuZW5hYmxlVGltZXpvbmU/d2AKICAgICAgICAgIDxkaXYgY2xhc3M9InRpbWV6b25lLXNlbGVjdG9yIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGltZXpvbmUtc2VsZWN0b3ItdGl0bGUiPlRpbWV6b25lPC9kaXY+CiAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9InRpbWV6b25lLXNlbGVjdCIgLnZhbHVlPSR7dGhpcy50aW1lem9uZX0gQGNoYW5nZT0ke3RoaXMuaGFuZGxlVGltZXpvbmVDaGFuZ2V9PgogICAgICAgICAgICAgICR7Q2UuVElNRVpPTkVTLm1hcChXZT0+d2AKICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IiR7V2UudmFsdWV9IiA/c2VsZWN0ZWQ9JHtXZS52YWx1ZT09PXRoaXMudGltZXpvbmV9PiR7V2UubGFiZWx9PC9vcHRpb24+CiAgICAgICAgICAgICAgYCl9CiAgICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgYDoiIn0KCiAgICAgICAgPGRpdiBjbGFzcz0iY2FsZW5kYXItYWN0aW9ucyI+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJhY3Rpb24tYnV0dG9uIHRvZGF5LWJ1dHRvbiIgQGNsaWNrPSR7dGhpcy5oYW5kbGVTZWxlY3RUb2RheX0+VG9kYXk8L2J1dHRvbj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9ImFjdGlvbi1idXR0b24gY2xlYXItYWN0aW9uLWJ1dHRvbiIgQGNsaWNrPSR7dGhpcy5oYW5kbGVDbGVhcn0+Q2xlYXI8L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfWNvbXB1dGVQb3NpdGlvblN0eWxlKCl7bGV0IHZlPXRoaXMudHJpZ2dlclJlY3QsYmU9dmUubGVmdDtpZih0aGlzLm9wZW5zVG9Ub3Ape2xldCBFZT13aW5kb3cuaW5uZXJIZWlnaHQtdmUudG9wKzQ7cmV0dXJuYGxlZnQ6ICR7YmV9cHg7IGJvdHRvbTogJHtFZX1weDsgdG9wOiBhdXRvYH1lbHNle2xldCBFZT12ZS5ib3R0b20rNDtyZXR1cm5gbGVmdDogJHtiZX1weDsgdG9wOiAke0VlfXB4YH19Z2V0RGF5c0luTW9udGgoKXtsZXQgdmU9dGhpcy52aWV3RGF0ZS5nZXRGdWxsWWVhcigpLGJlPXRoaXMudmlld0RhdGUuZ2V0TW9udGgoKSxFZT1uZXcgRGF0ZSh2ZSxiZSwxKSxqZT1uZXcgRGF0ZSh2ZSxiZSsxLDApLFdlPVtdLHN0PXRoaXMud2Vla1N0YXJ0c09uPT09MT9FZS5nZXREYXkoKT09PTA/NjpFZS5nZXREYXkoKS0xOkVlLmdldERheSgpO2ZvcihsZXQgZ2U9c3Q7Z2U+MDtnZS0tKVdlLnB1c2gobmV3IERhdGUodmUsYmUsMS1nZSkpO2ZvcihsZXQgZ2U9MTtnZTw9amUuZ2V0RGF0ZSgpO2dlKyspV2UucHVzaChuZXcgRGF0ZSh2ZSxiZSxnZSkpO2xldCBNZT00Mi1XZS5sZW5ndGg7Zm9yKGxldCBnZT0xO2dlPD1NZTtnZSsrKVdlLnB1c2gobmV3IERhdGUodmUsYmUrMSxnZSkpO3JldHVybiBXZX1pc1RvZGF5KHZlKXtsZXQgYmU9bmV3IERhdGU7cmV0dXJuIHZlLmdldERhdGUoKT09PWJlLmdldERhdGUoKSYmdmUuZ2V0TW9udGgoKT09PWJlLmdldE1vbnRoKCkmJnZlLmdldEZ1bGxZZWFyKCk9PT1iZS5nZXRGdWxsWWVhcigpfWlzU2VsZWN0ZWQodmUpe3JldHVybiB0aGlzLnNlbGVjdGVkRGF0ZT92ZS5nZXREYXRlKCk9PT10aGlzLnNlbGVjdGVkRGF0ZS5nZXREYXRlKCkmJnZlLmdldE1vbnRoKCk9PT10aGlzLnNlbGVjdGVkRGF0ZS5nZXRNb250aCgpJiZ2ZS5nZXRGdWxsWWVhcigpPT09dGhpcy5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKTohMX1pc0RheURpc2FibGVkKHZlKXtpZih0aGlzLm1pbkRhdGUpe2xldCBiZT1uZXcgRGF0ZSh0aGlzLm1pbkRhdGUpO2lmKHZlPGJlKXJldHVybiEwfWlmKHRoaXMubWF4RGF0ZSl7bGV0IGJlPW5ldyBEYXRlKHRoaXMubWF4RGF0ZSk7aWYodmU+YmUpcmV0dXJuITB9cmV0dXJuIHRoaXMuZGlzYWJsZWREYXRlcz8ubGVuZ3RoP3RoaXMuZGlzYWJsZWREYXRlcy5zb21lKGJlPT57dHJ5e2xldCBFZT1uZXcgRGF0ZShiZSk7cmV0dXJuIHZlLmdldERhdGUoKT09PUVlLmdldERhdGUoKSYmdmUuZ2V0TW9udGgoKT09PUVlLmdldE1vbnRoKCkmJnZlLmdldEZ1bGxZZWFyKCk9PT1FZS5nZXRGdWxsWWVhcigpfWNhdGNoe3JldHVybiExfX0pOiExfWdldEV2ZW50c0ZvckRhdGUodmUpe2lmKCF0aGlzLmV2ZW50cz8ubGVuZ3RoKXJldHVybltdO2xldCBiZT1gJHt2ZS5nZXRGdWxsWWVhcigpfS0keyh2ZS5nZXRNb250aCgpKzEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfS0ke3ZlLmdldERhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX1gO3JldHVybiB0aGlzLmV2ZW50cy5maWx0ZXIoRWU9PkVlLmRhdGU9PT1iZSl9cHJldmlvdXNNb250aCgpe3RoaXMudmlld0RhdGU9bmV3IERhdGUodGhpcy52aWV3RGF0ZS5nZXRGdWxsWWVhcigpLHRoaXMudmlld0RhdGUuZ2V0TW9udGgoKS0xLDEpfW5leHRNb250aCgpe3RoaXMudmlld0RhdGU9bmV3IERhdGUodGhpcy52aWV3RGF0ZS5nZXRGdWxsWWVhcigpLHRoaXMudmlld0RhdGUuZ2V0TW9udGgoKSsxLDEpfWhhbmRsZVNlbGVjdERhdGUodmUpe3RoaXMuc2VsZWN0ZWREYXRlPW5ldyBEYXRlKHZlLmdldEZ1bGxZZWFyKCksdmUuZ2V0TW9udGgoKSx2ZS5nZXREYXRlKCksdGhpcy5zZWxlY3RlZEhvdXIsdGhpcy5zZWxlY3RlZE1pbnV0ZSksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiZGF0ZS1zZWxlY3RlZCIse2RldGFpbDp0aGlzLnNlbGVjdGVkRGF0ZX0pKSx0aGlzLmVuYWJsZVRpbWV8fHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNsb3NlLXJlcXVlc3QiKSl9aGFuZGxlU2VsZWN0VG9kYXkoKXtsZXQgdmU9bmV3IERhdGU7dGhpcy5zZWxlY3RlZERhdGU9dmUsdGhpcy52aWV3RGF0ZT1uZXcgRGF0ZSh2ZSksdGhpcy5zZWxlY3RlZEhvdXI9dmUuZ2V0SG91cnMoKSx0aGlzLnNlbGVjdGVkTWludXRlPXZlLmdldE1pbnV0ZXMoKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJkYXRlLXNlbGVjdGVkIix7ZGV0YWlsOnRoaXMuc2VsZWN0ZWREYXRlfSkpLHRoaXMuZW5hYmxlVGltZXx8dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY2xvc2UtcmVxdWVzdCIpKX1oYW5kbGVDbGVhcigpe3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImRhdGUtY2xlYXJlZCIpKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjbG9zZS1yZXF1ZXN0IikpfWhhbmRsZUhvdXJJbnB1dD1pKHZlPT57bGV0IGJlPXZlLnRhcmdldCxFZT1wYXJzZUludChiZS52YWx1ZSl8fDA7dGhpcy50aW1lRm9ybWF0PT09IjEyaCI/KEVlPU1hdGgubWF4KDEsTWF0aC5taW4oMTIsRWUpKSx0aGlzLnNlbGVjdGVkSG91cj49MTImJkVlIT09MTI/dGhpcy5zZWxlY3RlZEhvdXI9RWUrMTI6dGhpcy5zZWxlY3RlZEhvdXI8MTImJkVlPT09MTI/dGhpcy5zZWxlY3RlZEhvdXI9MDp0aGlzLnNlbGVjdGVkSG91cj1FZSk6dGhpcy5zZWxlY3RlZEhvdXI9TWF0aC5tYXgoMCxNYXRoLm1pbigyMyxFZSkpLHRoaXMuZW1pdFRpbWVVcGRhdGUoKX0sImhhbmRsZUhvdXJJbnB1dCIpO2hhbmRsZU1pbnV0ZUlucHV0PWkodmU9PntsZXQgYmU9dmUudGFyZ2V0LEVlPXBhcnNlSW50KGJlLnZhbHVlKXx8MDtFZT1NYXRoLm1heCgwLE1hdGgubWluKDU5LEVlKSksdGhpcy5taW51dGVJbmNyZW1lbnQ+MSYmKEVlPU1hdGgucm91bmQoRWUvdGhpcy5taW51dGVJbmNyZW1lbnQpKnRoaXMubWludXRlSW5jcmVtZW50KSx0aGlzLnNlbGVjdGVkTWludXRlPUVlLHRoaXMuZW1pdFRpbWVVcGRhdGUoKX0sImhhbmRsZU1pbnV0ZUlucHV0Iik7c2V0QU1QTSh2ZSl7dmU9PT0iYW0iJiZ0aGlzLnNlbGVjdGVkSG91cj49MTI/dGhpcy5zZWxlY3RlZEhvdXItPTEyOnZlPT09InBtIiYmdGhpcy5zZWxlY3RlZEhvdXI8MTImJih0aGlzLnNlbGVjdGVkSG91cis9MTIpLHRoaXMuZW1pdFRpbWVVcGRhdGUoKX1oYW5kbGVUaW1lem9uZUNoYW5nZT1pKHZlPT57dGhpcy50aW1lem9uZT12ZS50YXJnZXQudmFsdWUsdGhpcy5lbWl0VGltZVVwZGF0ZSgpfSwiaGFuZGxlVGltZXpvbmVDaGFuZ2UiKTtlbWl0VGltZVVwZGF0ZSgpe3RoaXMuc2VsZWN0ZWREYXRlJiYodGhpcy5zZWxlY3RlZERhdGU9bmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKSx0aGlzLnNlbGVjdGVkRGF0ZS5nZXRNb250aCgpLHRoaXMuc2VsZWN0ZWREYXRlLmdldERhdGUoKSx0aGlzLnNlbGVjdGVkSG91cix0aGlzLnNlbGVjdGVkTWludXRlKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJkYXRlLXNlbGVjdGVkIix7ZGV0YWlsOnRoaXMuc2VsZWN0ZWREYXRlfSkpKX1hc3luYyBzaG93KCl7dGhpcy53aW5kb3dMYXllcj1hd2FpdCBoby5jcmVhdGVBbmRTaG93KCksdGhpcy53aW5kb3dMYXllci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9Pnt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjbG9zZS1yZXF1ZXN0IikpfSksdGhpcy5tZW51WkluZGV4PXhhLmdldE5leHRaSW5kZXgoKSx4YS5yZWdpc3Rlcih0aGlzLHRoaXMubWVudVpJbmRleCksdGhpcy5zdHlsZS56SW5kZXg9dGhpcy5tZW51WkluZGV4LnRvU3RyaW5nKCksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzKSxhd2FpdCB1dC5zbWFydGRlbGF5LmRlbGF5Rm9yKDApLHRoaXMudmlzaWJsZT0hMCx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLmhhbmRsZVNjcm9sbE9yUmVzaXplLHtjYXB0dXJlOiEwLHBhc3NpdmU6ITB9KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLmhhbmRsZVNjcm9sbE9yUmVzaXplLHtwYXNzaXZlOiEwfSl9YXN5bmMgaGlkZSgpe3RoaXMuaXNEZXN0cm95aW5nfHwodGhpcy5pc0Rlc3Ryb3lpbmc9ITAsd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5oYW5kbGVTY3JvbGxPclJlc2l6ZSx7Y2FwdHVyZTohMH0pLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMuaGFuZGxlU2Nyb2xsT3JSZXNpemUpLHhhLnVucmVnaXN0ZXIodGhpcyksdGhpcy53aW5kb3dMYXllciYmKHRoaXMud2luZG93TGF5ZXIuZGVzdHJveSgpLHRoaXMud2luZG93TGF5ZXI9bnVsbCksdGhpcy52aXNpYmxlPSExLGF3YWl0IHV0LnNtYXJ0ZGVsYXkuZGVsYXlGb3IoMTUwKSx0aGlzLnBhcmVudEVsZW1lbnQmJnRoaXMucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzKSx0aGlzLmlzRGVzdHJveWluZz0hMSl9aGFuZGxlU2Nyb2xsT3JSZXNpemU9aSgoKT0+e3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInJlcG9zaXRpb24tcmVxdWVzdCIpKX0sImhhbmRsZVNjcm9sbE9yUmVzaXplIik7YXN5bmMgZGlzY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMuaGFuZGxlU2Nyb2xsT3JSZXNpemUse2NhcHR1cmU6ITB9KSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLmhhbmRsZVNjcm9sbE9yUmVzaXplKSx4YS51bnJlZ2lzdGVyKHRoaXMpfXN0YXRpY3tUYShhLHQpfX07cmV0dXJuIENlPWF9KSgpfSk7dmFyIFlyLFdhLHBuZSxPZXQ9ZygoKT0+e3BlKCk7emkoKTtqZGEoKTtVZGEoKTtHZGEoKTtGZXQoKTtVYSgpO2x2KCk7WXI9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LFdhPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxwbmU9KCgpPT57bGV0IHM9W25lKCJkZWVzLWlucHV0LWRhdGVwaWNrZXIiKV0sZSx0PVtdLGEscj1PdCxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXSxPLCQ9W10sRT1bXSxILGs9W10sUz1bXSxJLFA9W10sUj1bXSxLLFY9W10sVz1bXSxtZSxCPVtdLFU9W10saGUsRj1bXSxqPVtdLHVlLGxlPVtdLFE9W10saWUsdGU9W10sZWU9W10sa2UsWD1bXSxaPVtdLHllLHE9W10sQT1bXSxzZSxvZT1bXSxhZT1bXSxUZSxSZT1bXSxCZT1bXTt2YXIgR2U9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNJbnB1dERhdGVwaWNrZXIiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgRGU9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpTdHJpbmd9KV0scD1bTCh7dHlwZTpCb29sZWFufSldLGM9W0woe3R5cGU6U3RyaW5nfSldLHg9W0woe3R5cGU6TnVtYmVyfSldLHk9W0woe3R5cGU6U3RyaW5nfSldLE49W0woe3R5cGU6U3RyaW5nfSldLE89W0woe3R5cGU6U3RyaW5nfSldLEg9W0woe3R5cGU6QXJyYXl9KV0sST1bTCh7dHlwZTpOdW1iZXJ9KV0sSz1bTCh7dHlwZTpTdHJpbmd9KV0sbWU9W0woe3R5cGU6Qm9vbGVhbn0pXSxoZT1bTCh7dHlwZTpTdHJpbmd9KV0sdWU9W0woe3R5cGU6QXJyYXl9KV0saWU9W1koKV0sa2U9W1koKV0seWU9W1koKV0sc2U9W1koKV0sVGU9W1koKV0sWXIodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2YWx1ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfZT0+InZhbHVlImluIF9lLCJoYXMiKSxnZXQ6aShfZT0+X2UudmFsdWUsImdldCIpLHNldDppKChfZSxDZSk9PntfZS52YWx1ZT1DZX0sInNldCIpfSxtZXRhZGF0YTpEZX0sbyxsKSxZcih0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImVuYWJsZVRpbWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoX2U9PiJlbmFibGVUaW1lImluIF9lLCJoYXMiKSxnZXQ6aShfZT0+X2UuZW5hYmxlVGltZSwiZ2V0Iiksc2V0OmkoKF9lLENlKT0+e19lLmVuYWJsZVRpbWU9Q2V9LCJzZXQiKX0sbWV0YWRhdGE6RGV9LGQsdSksWXIodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0aW1lRm9ybWF0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF9lPT4idGltZUZvcm1hdCJpbiBfZSwiaGFzIiksZ2V0OmkoX2U9Pl9lLnRpbWVGb3JtYXQsImdldCIpLHNldDppKChfZSxDZSk9PntfZS50aW1lRm9ybWF0PUNlfSwic2V0Iil9LG1ldGFkYXRhOkRlfSxiLHYpLFlyKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWludXRlSW5jcmVtZW50IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF9lPT4ibWludXRlSW5jcmVtZW50ImluIF9lLCJoYXMiKSxnZXQ6aShfZT0+X2UubWludXRlSW5jcmVtZW50LCJnZXQiKSxzZXQ6aSgoX2UsQ2UpPT57X2UubWludXRlSW5jcmVtZW50PUNlfSwic2V0Iil9LG1ldGFkYXRhOkRlfSxtLGYpLFlyKHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZGF0ZUZvcm1hdCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfZT0+ImRhdGVGb3JtYXQiaW4gX2UsImhhcyIpLGdldDppKF9lPT5fZS5kYXRlRm9ybWF0LCJnZXQiKSxzZXQ6aSgoX2UsQ2UpPT57X2UuZGF0ZUZvcm1hdD1DZX0sInNldCIpfSxtZXRhZGF0YTpEZX0sTSx6KSxZcih0aGlzLG51bGwsTix7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1pbkRhdGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoX2U9PiJtaW5EYXRlImluIF9lLCJoYXMiKSxnZXQ6aShfZT0+X2UubWluRGF0ZSwiZ2V0Iiksc2V0OmkoKF9lLENlKT0+e19lLm1pbkRhdGU9Q2V9LCJzZXQiKX0sbWV0YWRhdGE6RGV9LEMsXyksWXIodGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtYXhEYXRlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF9lPT4ibWF4RGF0ZSJpbiBfZSwiaGFzIiksZ2V0OmkoX2U9Pl9lLm1heERhdGUsImdldCIpLHNldDppKChfZSxDZSk9PntfZS5tYXhEYXRlPUNlfSwic2V0Iil9LG1ldGFkYXRhOkRlfSwkLEUpLFlyKHRoaXMsbnVsbCxILHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZGlzYWJsZWREYXRlcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfZT0+ImRpc2FibGVkRGF0ZXMiaW4gX2UsImhhcyIpLGdldDppKF9lPT5fZS5kaXNhYmxlZERhdGVzLCJnZXQiKSxzZXQ6aSgoX2UsQ2UpPT57X2UuZGlzYWJsZWREYXRlcz1DZX0sInNldCIpfSxtZXRhZGF0YTpEZX0sayxTKSxZcih0aGlzLG51bGwsSSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6IndlZWtTdGFydHNPbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfZT0+IndlZWtTdGFydHNPbiJpbiBfZSwiaGFzIiksZ2V0OmkoX2U9Pl9lLndlZWtTdGFydHNPbiwiZ2V0Iiksc2V0OmkoKF9lLENlKT0+e19lLndlZWtTdGFydHNPbj1DZX0sInNldCIpfSxtZXRhZGF0YTpEZX0sUCxSKSxZcih0aGlzLG51bGwsSyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InBsYWNlaG9sZGVyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF9lPT4icGxhY2Vob2xkZXIiaW4gX2UsImhhcyIpLGdldDppKF9lPT5fZS5wbGFjZWhvbGRlciwiZ2V0Iiksc2V0OmkoKF9lLENlKT0+e19lLnBsYWNlaG9sZGVyPUNlfSwic2V0Iil9LG1ldGFkYXRhOkRlfSxWLFcpLFlyKHRoaXMsbnVsbCxtZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImVuYWJsZVRpbWV6b25lIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF9lPT4iZW5hYmxlVGltZXpvbmUiaW4gX2UsImhhcyIpLGdldDppKF9lPT5fZS5lbmFibGVUaW1lem9uZSwiZ2V0Iiksc2V0OmkoKF9lLENlKT0+e19lLmVuYWJsZVRpbWV6b25lPUNlfSwic2V0Iil9LG1ldGFkYXRhOkRlfSxCLFUpLFlyKHRoaXMsbnVsbCxoZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InRpbWV6b25lIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF9lPT4idGltZXpvbmUiaW4gX2UsImhhcyIpLGdldDppKF9lPT5fZS50aW1lem9uZSwiZ2V0Iiksc2V0OmkoKF9lLENlKT0+e19lLnRpbWV6b25lPUNlfSwic2V0Iil9LG1ldGFkYXRhOkRlfSxGLGopLFlyKHRoaXMsbnVsbCx1ZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImV2ZW50cyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfZT0+ImV2ZW50cyJpbiBfZSwiaGFzIiksZ2V0OmkoX2U9Pl9lLmV2ZW50cywiZ2V0Iiksc2V0OmkoKF9lLENlKT0+e19lLmV2ZW50cz1DZX0sInNldCIpfSxtZXRhZGF0YTpEZX0sbGUsUSksWXIodGhpcyxudWxsLGllLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNPcGVuZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoX2U9PiJpc09wZW5lZCJpbiBfZSwiaGFzIiksZ2V0OmkoX2U9Pl9lLmlzT3BlbmVkLCJnZXQiKSxzZXQ6aSgoX2UsQ2UpPT57X2UuaXNPcGVuZWQ9Q2V9LCJzZXQiKX0sbWV0YWRhdGE6RGV9LHRlLGVlKSxZcih0aGlzLG51bGwsa2Use2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWxlY3RlZERhdGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoX2U9PiJzZWxlY3RlZERhdGUiaW4gX2UsImhhcyIpLGdldDppKF9lPT5fZS5zZWxlY3RlZERhdGUsImdldCIpLHNldDppKChfZSxDZSk9PntfZS5zZWxlY3RlZERhdGU9Q2V9LCJzZXQiKX0sbWV0YWRhdGE6RGV9LFgsWiksWXIodGhpcyxudWxsLHllLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidmlld0RhdGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoX2U9PiJ2aWV3RGF0ZSJpbiBfZSwiaGFzIiksZ2V0OmkoX2U9Pl9lLnZpZXdEYXRlLCJnZXQiKSxzZXQ6aSgoX2UsQ2UpPT57X2Uudmlld0RhdGU9Q2V9LCJzZXQiKX0sbWV0YWRhdGE6RGV9LHEsQSksWXIodGhpcyxudWxsLHNlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VsZWN0ZWRIb3VyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF9lPT4ic2VsZWN0ZWRIb3VyImluIF9lLCJoYXMiKSxnZXQ6aShfZT0+X2Uuc2VsZWN0ZWRIb3VyLCJnZXQiKSxzZXQ6aSgoX2UsQ2UpPT57X2Uuc2VsZWN0ZWRIb3VyPUNlfSwic2V0Iil9LG1ldGFkYXRhOkRlfSxvZSxhZSksWXIodGhpcyxudWxsLFRlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VsZWN0ZWRNaW51dGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoX2U9PiJzZWxlY3RlZE1pbnV0ZSJpbiBfZSwiaGFzIiksZ2V0OmkoX2U9Pl9lLnNlbGVjdGVkTWludXRlLCJnZXQiKSxzZXQ6aSgoX2UsQ2UpPT57X2Uuc2VsZWN0ZWRNaW51dGU9Q2V9LCJzZXQiKX0sbWV0YWRhdGE6RGV9LFJlLEJlKSxZcihudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpEZX0sbnVsbCx0KSxHZT1hPWUudmFsdWUsRGUmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6RGV9KX1zdGF0aWMgZGVtbz1xZGE7c3RhdGljIGRlbW9Hcm91cHM9WyJJbnB1dCJdOyNlPVdhKHRoaXMsbywiIik7Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHZhbHVlKERlKXt0aGlzLiNlPURlfSN0PShXYSh0aGlzLGwpLFdhKHRoaXMsZCwhMSkpO2dldCBlbmFibGVUaW1lKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGVuYWJsZVRpbWUoRGUpe3RoaXMuI3Q9RGV9I2E9KFdhKHRoaXMsdSksV2EodGhpcyxiLCIyNGgiKSk7Z2V0IHRpbWVGb3JtYXQoKXtyZXR1cm4gdGhpcy4jYX1zZXQgdGltZUZvcm1hdChEZSl7dGhpcy4jYT1EZX0jcz0oV2EodGhpcyx2KSxXYSh0aGlzLG0sMSkpO2dldCBtaW51dGVJbmNyZW1lbnQoKXtyZXR1cm4gdGhpcy4jc31zZXQgbWludXRlSW5jcmVtZW50KERlKXt0aGlzLiNzPURlfSNpPShXYSh0aGlzLGYpLFdhKHRoaXMsTSwiWVlZWS1NTS1ERCIpKTtnZXQgZGF0ZUZvcm1hdCgpe3JldHVybiB0aGlzLiNpfXNldCBkYXRlRm9ybWF0KERlKXt0aGlzLiNpPURlfSNyPShXYSh0aGlzLHopLFdhKHRoaXMsQywiIikpO2dldCBtaW5EYXRlKCl7cmV0dXJuIHRoaXMuI3J9c2V0IG1pbkRhdGUoRGUpe3RoaXMuI3I9RGV9I289KFdhKHRoaXMsXyksV2EodGhpcywkLCIiKSk7Z2V0IG1heERhdGUoKXtyZXR1cm4gdGhpcy4jb31zZXQgbWF4RGF0ZShEZSl7dGhpcy4jbz1EZX0jbj0oV2EodGhpcyxFKSxXYSh0aGlzLGssW10pKTtnZXQgZGlzYWJsZWREYXRlcygpe3JldHVybiB0aGlzLiNufXNldCBkaXNhYmxlZERhdGVzKERlKXt0aGlzLiNuPURlfSNsPShXYSh0aGlzLFMpLFdhKHRoaXMsUCwxKSk7Z2V0IHdlZWtTdGFydHNPbigpe3JldHVybiB0aGlzLiNsfXNldCB3ZWVrU3RhcnRzT24oRGUpe3RoaXMuI2w9RGV9I2M9KFdhKHRoaXMsUiksV2EodGhpcyxWLCJZWVlZLU1NLUREIikpO2dldCBwbGFjZWhvbGRlcigpe3JldHVybiB0aGlzLiNjfXNldCBwbGFjZWhvbGRlcihEZSl7dGhpcy4jYz1EZX0jZD0oV2EodGhpcyxXKSxXYSh0aGlzLEIsITEpKTtnZXQgZW5hYmxlVGltZXpvbmUoKXtyZXR1cm4gdGhpcy4jZH1zZXQgZW5hYmxlVGltZXpvbmUoRGUpe3RoaXMuI2Q9RGV9I3U9KFdhKHRoaXMsVSksV2EodGhpcyxGLEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZSkpO2dldCB0aW1lem9uZSgpe3JldHVybiB0aGlzLiN1fXNldCB0aW1lem9uZShEZSl7dGhpcy4jdT1EZX0jcD0oV2EodGhpcyxqKSxXYSh0aGlzLGxlLFtdKSk7Z2V0IGV2ZW50cygpe3JldHVybiB0aGlzLiNwfXNldCBldmVudHMoRGUpe3RoaXMuI3A9RGV9I2g9KFdhKHRoaXMsUSksV2EodGhpcyx0ZSwhMSkpO2dldCBpc09wZW5lZCgpe3JldHVybiB0aGlzLiNofXNldCBpc09wZW5lZChEZSl7dGhpcy4jaD1EZX0jZj0oV2EodGhpcyxlZSksV2EodGhpcyxYLG51bGwpKTtnZXQgc2VsZWN0ZWREYXRlKCl7cmV0dXJuIHRoaXMuI2Z9c2V0IHNlbGVjdGVkRGF0ZShEZSl7dGhpcy4jZj1EZX0jbT0oV2EodGhpcyxaKSxXYSh0aGlzLHEsbmV3IERhdGUpKTtnZXQgdmlld0RhdGUoKXtyZXR1cm4gdGhpcy4jbX1zZXQgdmlld0RhdGUoRGUpe3RoaXMuI209RGV9I2c9KFdhKHRoaXMsQSksV2EodGhpcyxvZSwwKSk7Z2V0IHNlbGVjdGVkSG91cigpe3JldHVybiB0aGlzLiNnfXNldCBzZWxlY3RlZEhvdXIoRGUpe3RoaXMuI2c9RGV9I2I9KFdhKHRoaXMsYWUpLFdhKHRoaXMsUmUsMCkpO2dldCBzZWxlY3RlZE1pbnV0ZSgpe3JldHVybiB0aGlzLiNifXNldCBzZWxlY3RlZE1pbnV0ZShEZSl7dGhpcy4jYj1EZX1wb3B1cEluc3RhbmNlPShXYSh0aGlzLEJlKSxudWxsKTtzdGF0aWMgc3R5bGVzPVZkYTtyZW5kZXIoKXtyZXR1cm4gV2RhKHRoaXMpfWFzeW5jIGZpcnN0VXBkYXRlZCgpe2lmKHRoaXMudmFsdWV8fCh0aGlzLnZhbHVlPSIiKSx0aGlzLnZhbHVlKXRyeXtsZXQgRGU9bmV3IERhdGUodGhpcy52YWx1ZSk7aXNOYU4oRGUuZ2V0VGltZSgpKXx8KHRoaXMuc2VsZWN0ZWREYXRlPURlLHRoaXMudmlld0RhdGU9bmV3IERhdGUoRGUpLHRoaXMuc2VsZWN0ZWRIb3VyPURlLmdldEhvdXJzKCksdGhpcy5zZWxlY3RlZE1pbnV0ZT1EZS5nZXRNaW51dGVzKCkpfWNhdGNoe31lbHNle2xldCBEZT1uZXcgRGF0ZTt0aGlzLnZpZXdEYXRlPW5ldyBEYXRlKERlKSx0aGlzLnNlbGVjdGVkSG91cj1EZS5nZXRIb3VycygpLHRoaXMuc2VsZWN0ZWRNaW51dGU9MH19Zm9ybWF0RGF0ZShEZSl7aWYoIURlKXJldHVybiIiO3RyeXtsZXQgX2U9bmV3IERhdGUoRGUpO2lmKGlzTmFOKF9lLmdldFRpbWUoKSkpcmV0dXJuIiI7bGV0IENlPXRoaXMuZGF0ZUZvcm1hdCx2ZT1fZS5nZXREYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksYmU9KF9lLmdldE1vbnRoKCkrMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksRWU9X2UuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpO2lmKENlPUNlLnJlcGxhY2UoIllZWVkiLEVlKSxDZT1DZS5yZXBsYWNlKCJZWSIsRWUuc2xpY2UoLTIpKSxDZT1DZS5yZXBsYWNlKCJNTSIsYmUpLENlPUNlLnJlcGxhY2UoIkREIix2ZSksdGhpcy5lbmFibGVUaW1lKXtsZXQgamU9X2UuZ2V0SG91cnMoKSxXZT1qZT09PTA/MTI6amU+MTI/amUtMTI6amUsc3Q9X2UuZ2V0TWludXRlcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLE1lPWplPj0xMj8iUE0iOiJBTSI7dGhpcy50aW1lRm9ybWF0PT09IjEyaCI/Q2UrPWAgJHtXZX06JHtzdH0gJHtNZX1gOkNlKz1gICR7amUudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9OiR7c3R9YH1pZih0aGlzLmVuYWJsZVRpbWV6b25lKXtsZXQgc3Q9bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoImVuLVVTIix7dGltZVpvbmVOYW1lOiJzaG9ydCIsdGltZVpvbmU6dGhpcy50aW1lem9uZX0pLmZvcm1hdFRvUGFydHMoX2UpLmZpbmQoTWU9Pk1lLnR5cGU9PT0idGltZVpvbmVOYW1lIik7c3QmJihDZSs9YCAke3N0LnZhbHVlfWApfXJldHVybiBDZX1jYXRjaHtyZXR1cm4iIn19YXN5bmMgdG9nZ2xlQ2FsZW5kYXIoKXtpZih0aGlzLmRpc2FibGVkKXJldHVybjtpZih0aGlzLmlzT3BlbmVkKXt0aGlzLmNsb3NlUG9wdXAoKTtyZXR1cm59dGhpcy5pc09wZW5lZD0hMDtsZXQgX2U9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5pbnB1dC1jb250YWluZXIiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxDZT13aW5kb3cuaW5uZXJIZWlnaHQtX2UuYm90dG9tLHZlPV9lLnRvcCxiZT1DZTw0MDAmJnZlPkNlO3RoaXMucG9wdXBJbnN0YW5jZXx8KHRoaXMucG9wdXBJbnN0YW5jZT1uZXcgdW5lKSx0aGlzLnBvcHVwSW5zdGFuY2UudHJpZ2dlclJlY3Q9X2UsdGhpcy5wb3B1cEluc3RhbmNlLm93bmVyQ29tcG9uZW50PXRoaXMsdGhpcy5wb3B1cEluc3RhbmNlLm9wZW5zVG9Ub3A9YmUsdGhpcy5wb3B1cEluc3RhbmNlLmVuYWJsZVRpbWU9dGhpcy5lbmFibGVUaW1lLHRoaXMucG9wdXBJbnN0YW5jZS50aW1lRm9ybWF0PXRoaXMudGltZUZvcm1hdCx0aGlzLnBvcHVwSW5zdGFuY2UubWludXRlSW5jcmVtZW50PXRoaXMubWludXRlSW5jcmVtZW50LHRoaXMucG9wdXBJbnN0YW5jZS53ZWVrU3RhcnRzT249dGhpcy53ZWVrU3RhcnRzT24sdGhpcy5wb3B1cEluc3RhbmNlLm1pbkRhdGU9dGhpcy5taW5EYXRlLHRoaXMucG9wdXBJbnN0YW5jZS5tYXhEYXRlPXRoaXMubWF4RGF0ZSx0aGlzLnBvcHVwSW5zdGFuY2UuZGlzYWJsZWREYXRlcz10aGlzLmRpc2FibGVkRGF0ZXMsdGhpcy5wb3B1cEluc3RhbmNlLmVuYWJsZVRpbWV6b25lPXRoaXMuZW5hYmxlVGltZXpvbmUsdGhpcy5wb3B1cEluc3RhbmNlLnRpbWV6b25lPXRoaXMudGltZXpvbmUsdGhpcy5wb3B1cEluc3RhbmNlLmV2ZW50cz10aGlzLmV2ZW50cyx0aGlzLnBvcHVwSW5zdGFuY2Uuc2VsZWN0ZWREYXRlPXRoaXMuc2VsZWN0ZWREYXRlLHRoaXMucG9wdXBJbnN0YW5jZS52aWV3RGF0ZT1uZXcgRGF0ZSh0aGlzLnZpZXdEYXRlKSx0aGlzLnBvcHVwSW5zdGFuY2Uuc2VsZWN0ZWRIb3VyPXRoaXMuc2VsZWN0ZWRIb3VyLHRoaXMucG9wdXBJbnN0YW5jZS5zZWxlY3RlZE1pbnV0ZT10aGlzLnNlbGVjdGVkTWludXRlLHRoaXMucG9wdXBJbnN0YW5jZS5hZGRFdmVudExpc3RlbmVyKCJkYXRlLXNlbGVjdGVkIix0aGlzLmhhbmRsZURhdGVTZWxlY3RlZCksdGhpcy5wb3B1cEluc3RhbmNlLmFkZEV2ZW50TGlzdGVuZXIoImRhdGUtY2xlYXJlZCIsdGhpcy5oYW5kbGVEYXRlQ2xlYXJlZCksdGhpcy5wb3B1cEluc3RhbmNlLmFkZEV2ZW50TGlzdGVuZXIoImNsb3NlLXJlcXVlc3QiLHRoaXMuaGFuZGxlQ2xvc2VSZXF1ZXN0KSx0aGlzLnBvcHVwSW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcigicmVwb3NpdGlvbi1yZXF1ZXN0Iix0aGlzLmhhbmRsZVJlcG9zaXRpb25SZXF1ZXN0KSxhd2FpdCB0aGlzLnBvcHVwSW5zdGFuY2Uuc2hvdygpfWNsb3NlUG9wdXAoKXt0aGlzLmlzT3BlbmVkPSExLHRoaXMucG9wdXBJbnN0YW5jZSYmKHRoaXMucG9wdXBJbnN0YW5jZS5yZW1vdmVFdmVudExpc3RlbmVyKCJkYXRlLXNlbGVjdGVkIix0aGlzLmhhbmRsZURhdGVTZWxlY3RlZCksdGhpcy5wb3B1cEluc3RhbmNlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRhdGUtY2xlYXJlZCIsdGhpcy5oYW5kbGVEYXRlQ2xlYXJlZCksdGhpcy5wb3B1cEluc3RhbmNlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsb3NlLXJlcXVlc3QiLHRoaXMuaGFuZGxlQ2xvc2VSZXF1ZXN0KSx0aGlzLnBvcHVwSW5zdGFuY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVwb3NpdGlvbi1yZXF1ZXN0Iix0aGlzLmhhbmRsZVJlcG9zaXRpb25SZXF1ZXN0KSx0aGlzLnBvcHVwSW5zdGFuY2UuaGlkZSgpKX1oYW5kbGVEYXRlU2VsZWN0ZWQ9aShEZT0+e2xldCBfZT1EZS5kZXRhaWw7dGhpcy5zZWxlY3RlZERhdGU9X2UsdGhpcy5zZWxlY3RlZEhvdXI9X2UuZ2V0SG91cnMoKSx0aGlzLnNlbGVjdGVkTWludXRlPV9lLmdldE1pbnV0ZXMoKSx0aGlzLnZpZXdEYXRlPW5ldyBEYXRlKF9lKSx0aGlzLnZhbHVlPXRoaXMuZm9ybWF0VmFsdWVXaXRoVGltZXpvbmUoX2UpLHRoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMpfSwiaGFuZGxlRGF0ZVNlbGVjdGVkIik7aGFuZGxlRGF0ZUNsZWFyZWQ9aSgoKT0+e3RoaXMudmFsdWU9IiIsdGhpcy5zZWxlY3RlZERhdGU9bnVsbCx0aGlzLmNoYW5nZVN1YmplY3QubmV4dCh0aGlzKX0sImhhbmRsZURhdGVDbGVhcmVkIik7aGFuZGxlQ2xvc2VSZXF1ZXN0PWkoKCk9Pnt0aGlzLmNsb3NlUG9wdXAoKX0sImhhbmRsZUNsb3NlUmVxdWVzdCIpO2hhbmRsZVJlcG9zaXRpb25SZXF1ZXN0PWkoKCk9PntpZighdGhpcy5wb3B1cEluc3RhbmNlfHwhdGhpcy5pc09wZW5lZClyZXR1cm47bGV0IERlPXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIuaW5wdXQtY29udGFpbmVyIik7aWYoIURlKXJldHVybjtsZXQgX2U9RGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoX2UuYm90dG9tPDB8fF9lLnRvcD53aW5kb3cuaW5uZXJIZWlnaHQpe3RoaXMuY2xvc2VQb3B1cCgpO3JldHVybn1sZXQgQ2U9d2luZG93LmlubmVySGVpZ2h0LV9lLmJvdHRvbSx2ZT1fZS50b3A7dGhpcy5wb3B1cEluc3RhbmNlLm9wZW5zVG9Ub3A9Q2U8NDAwJiZ2ZT5DZSx0aGlzLnBvcHVwSW5zdGFuY2UudHJpZ2dlclJlY3Q9X2V9LCJoYW5kbGVSZXBvc2l0aW9uUmVxdWVzdCIpO2hhbmRsZUtleWRvd24oRGUpe0RlLmtleT09PSJFbnRlciJ8fERlLmtleT09PSIgIj8oRGUucHJldmVudERlZmF1bHQoKSx0aGlzLnRvZ2dsZUNhbGVuZGFyKCkpOkRlLmtleT09PSJFc2NhcGUiJiZ0aGlzLmlzT3BlbmVkJiYoRGUucHJldmVudERlZmF1bHQoKSx0aGlzLmNsb3NlUG9wdXAoKSl9Y2xlYXJWYWx1ZShEZSl7RGUuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy52YWx1ZT0iIix0aGlzLnNlbGVjdGVkRGF0ZT1udWxsLHRoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMpfWhhbmRsZU1hbnVhbElucHV0KERlKXtsZXQgQ2U9RGUudGFyZ2V0LnZhbHVlLnRyaW0oKTtpZighQ2Upe3RoaXMudmFsdWU9IiIsdGhpcy5zZWxlY3RlZERhdGU9bnVsbDtyZXR1cm59bGV0IHZlPXRoaXMucGFyc2VNYW51YWxEYXRlKENlKTt2ZSYmIWlzTmFOKHZlLmdldFRpbWUoKSkmJih0aGlzLnZhbHVlPXZlLnRvSVNPU3RyaW5nKCksdGhpcy5zZWxlY3RlZERhdGU9dmUsdGhpcy52aWV3RGF0ZT1uZXcgRGF0ZSh2ZSksdGhpcy5zZWxlY3RlZEhvdXI9dmUuZ2V0SG91cnMoKSx0aGlzLnNlbGVjdGVkTWludXRlPXZlLmdldE1pbnV0ZXMoKSx0aGlzLmNoYW5nZVN1YmplY3QubmV4dCh0aGlzKSl9aGFuZGxlSW5wdXRCbHVyKERlKXtsZXQgX2U9RGUudGFyZ2V0LENlPV9lLnZhbHVlLnRyaW0oKTtpZighQ2Upe3RoaXMudmFsdWU9IiIsdGhpcy5zZWxlY3RlZERhdGU9bnVsbCx0aGlzLmNoYW5nZVN1YmplY3QubmV4dCh0aGlzKTtyZXR1cm59bGV0IHZlPXRoaXMucGFyc2VNYW51YWxEYXRlKENlKTt2ZSYmIWlzTmFOKHZlLmdldFRpbWUoKSk/KHRoaXMudmFsdWU9dmUudG9JU09TdHJpbmcoKSx0aGlzLnNlbGVjdGVkRGF0ZT12ZSx0aGlzLnZpZXdEYXRlPW5ldyBEYXRlKHZlKSx0aGlzLnNlbGVjdGVkSG91cj12ZS5nZXRIb3VycygpLHRoaXMuc2VsZWN0ZWRNaW51dGU9dmUuZ2V0TWludXRlcygpLHRoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMpLF9lLnZhbHVlPXRoaXMuZm9ybWF0RGF0ZSh0aGlzLnZhbHVlKSk6X2UudmFsdWU9dGhpcy5mb3JtYXREYXRlKHRoaXMudmFsdWUpfXBhcnNlTWFudWFsRGF0ZShEZSl7aWYoIURlKXJldHVybiBudWxsO2xldCBfZT1EZS5zcGxpdCgiICIpLENlPV9lWzBdLHZlPV9lWzFdfHwiIixiZT1udWxsLEVlPUNlLm1hdGNoKC9eKFxkezR9KS0oXGR7MSwyfSktKFxkezEsMn0pJC8pO2lmKEVlKXtsZXRbamUsV2Usc3QsTWVdPUVlO2JlPW5ldyBEYXRlKHBhcnNlSW50KFdlKSxwYXJzZUludChzdCktMSxwYXJzZUludChNZSkpfWlmKCFiZSl7bGV0IGplPUNlLm1hdGNoKC9eKFxkezEsMn0pXC4oXGR7MSwyfSlcLihcZHs0fSkkLyk7aWYoamUpe2xldFtXZSxzdCxNZSxnZV09amU7YmU9bmV3IERhdGUocGFyc2VJbnQoZ2UpLHBhcnNlSW50KE1lKS0xLHBhcnNlSW50KHN0KSl9fWlmKCFiZSl7bGV0IGplPUNlLm1hdGNoKC9eKFxkezEsMn0pXC8oXGR7MSwyfSlcLyhcZHs0fSkkLyk7aWYoamUpe2xldFtXZSxzdCxNZSxnZV09amU7YmU9bmV3IERhdGUocGFyc2VJbnQoZ2UpLHBhcnNlSW50KHN0KS0xLHBhcnNlSW50KE1lKSl9fWlmKCFiZXx8aXNOYU4oYmUuZ2V0VGltZSgpKSlyZXR1cm4gbnVsbDtpZih2ZSl7bGV0IGplPXZlLm1hdGNoKC9eKFxkezEsMn0pOihcZHsyfSkkLyk7aWYoamUpe2xldFtXZSxzdCxNZV09amU7YmUuc2V0SG91cnMocGFyc2VJbnQoc3QpKSxiZS5zZXRNaW51dGVzKHBhcnNlSW50KE1lKSl9fWVsc2UgaWYoIXRoaXMuZW5hYmxlVGltZSl7bGV0IGplPW5ldyBEYXRlO2JlLnNldEhvdXJzKGplLmdldEhvdXJzKCkpLGJlLnNldE1pbnV0ZXMoamUuZ2V0TWludXRlcygpKSxiZS5zZXRTZWNvbmRzKDApLGJlLnNldE1pbGxpc2Vjb25kcygwKX1yZXR1cm4gYmV9Zm9ybWF0VmFsdWVXaXRoVGltZXpvbmUoRGUpe2lmKCF0aGlzLmVuYWJsZVRpbWV6b25lKXJldHVybiBEZS50b0lTT1N0cmluZygpO2xldCBDZT1uZXcgSW50bC5EYXRlVGltZUZvcm1hdCgiZW4tVVMiLHt5ZWFyOiJudW1lcmljIixtb250aDoiMi1kaWdpdCIsZGF5OiIyLWRpZ2l0Iixob3VyOiIyLWRpZ2l0IixtaW51dGU6IjItZGlnaXQiLHNlY29uZDoiMi1kaWdpdCIsaG91cjEyOiExLHRpbWVab25lOnRoaXMudGltZXpvbmUsdGltZVpvbmVOYW1lOiJzaG9ydCJ9KS5mb3JtYXRUb1BhcnRzKERlKSx2ZT17fTtDZS5mb3JFYWNoKGplPT57dmVbamUudHlwZV09amUudmFsdWV9KTtsZXQgYmU9YCR7dmUueWVhcn0tJHt2ZS5tb250aH0tJHt2ZS5kYXl9VCR7dmUuaG91cn06JHt2ZS5taW51dGV9OiR7dmUuc2Vjb25kfWAsRWU9dGhpcy5nZXRUaW1lem9uZU9mZnNldChEZSx0aGlzLnRpbWV6b25lKTtyZXR1cm5gJHtiZX0ke0VlfWB9Z2V0VGltZXpvbmVPZmZzZXQoRGUsX2Upe2xldCBDZT1uZXcgRGF0ZShEZS50b0xvY2FsZVN0cmluZygiZW4tVVMiLHt0aW1lWm9uZTpfZX0pKSx2ZT1uZXcgRGF0ZShEZS50b0xvY2FsZVN0cmluZygiZW4tVVMiLHt0aW1lWm9uZToiVVRDIn0pKSxiZT0oQ2UuZ2V0VGltZSgpLXZlLmdldFRpbWUoKSkvKDFlMyo2MCksRWU9TWF0aC5mbG9vcihNYXRoLmFicyhiZSkvNjApLGplPU1hdGguYWJzKGJlKSU2MDtyZXR1cm5gJHtiZT49MD8iKyI6Ii0ifSR7RWUudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9OiR7amUudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9YH1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLnZhbHVlfXNldFZhbHVlKERlKXtpZih0aGlzLnZhbHVlPURlLERlKXRyeXtsZXQgX2U9bmV3IERhdGUoRGUpO2lzTmFOKF9lLmdldFRpbWUoKSl8fCh0aGlzLnNlbGVjdGVkRGF0ZT1fZSx0aGlzLnZpZXdEYXRlPW5ldyBEYXRlKF9lKSx0aGlzLnNlbGVjdGVkSG91cj1fZS5nZXRIb3VycygpLHRoaXMuc2VsZWN0ZWRNaW51dGU9X2UuZ2V0TWludXRlcygpKX1jYXRjaHt9fWFzeW5jIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLnBvcHVwSW5zdGFuY2UmJih0aGlzLnBvcHVwSW5zdGFuY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGF0ZS1zZWxlY3RlZCIsdGhpcy5oYW5kbGVEYXRlU2VsZWN0ZWQpLHRoaXMucG9wdXBJbnN0YW5jZS5yZW1vdmVFdmVudExpc3RlbmVyKCJkYXRlLWNsZWFyZWQiLHRoaXMuaGFuZGxlRGF0ZUNsZWFyZWQpLHRoaXMucG9wdXBJbnN0YW5jZS5yZW1vdmVFdmVudExpc3RlbmVyKCJjbG9zZS1yZXF1ZXN0Iix0aGlzLmhhbmRsZUNsb3NlUmVxdWVzdCksdGhpcy5wb3B1cEluc3RhbmNlLnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlcG9zaXRpb24tcmVxdWVzdCIsdGhpcy5oYW5kbGVSZXBvc2l0aW9uUmVxdWVzdCksdGhpcy5wb3B1cEluc3RhbmNlLmhpZGUoKSx0aGlzLnBvcHVwSW5zdGFuY2U9bnVsbCl9c3RhdGlje1dhKGEsdCl9fTtyZXR1cm4gR2U9YX0pKCl9KTt2YXIgaG5lPWcoKCk9PntPZXQoKTtGZXQoKX0pO3ZhciBLZGEsWWRhPWcoKCk9PntwZSgpO0l0KCk7Zm8oKTtLZGE9aSgoKT0+d2AKICA8c3R5bGU+CiAgICAke0pgCiAgICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMjRweDsKICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgIG1heC13aWR0aDogMTIwMHB4OwogICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICB9CiAgICAgIAogICAgICBkZWVzLXBhbmVsIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgICB9CiAgICAgIAogICAgICBkZWVzLXBhbmVsOmxhc3QtY2hpbGQgewogICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgIH0KICAgICAgCiAgICAgIC5ob3Jpem9udGFsLWdyb3VwIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgfQogICAgICAKICAgICAgLmdyaWQtbGF5b3V0IHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjsKICAgICAgICBnYXA6IDE2cHg7CiAgICAgIH0KICAgICAgCiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgewogICAgICAgIC5ncmlkLWxheW91dCB7CiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKICAgICAgICB9CiAgICAgIH0KICAgICAgCiAgICAgIC5pbnRlcmFjdGl2ZS1zZWN0aW9uIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxMCA0MCUgOTYuMSUpIiwiaHNsKDIxNSAyMC4yJSAxNi44JSkiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgbWFyZ2luLXRvcDogMTZweDsKICAgICAgfQogICAgICAKICAgICAgLm91dHB1dC10ZXh0IHsKICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuMyAyNSUgMjYuNyUpIiwiaHNsKDIxMCA0MCUgODAlKSIpfTsKICAgICAgICBwYWRkaW5nOiA4cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgNDAlIDk4JSkiLCJoc2woMjE1IDIwLjIlIDExLjglKSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgbWluLWhlaWdodDogMjRweDsKICAgICAgfQogICAgYH0KICA8L3N0eWxlPgogIAogIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntzLnF1ZXJ5U2VsZWN0b3JBbGwoImRlZXMtaW5wdXQtdGV4dCIpLmZvckVhY2goYT0+e2EuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlU3ViamVjdCIsKHI9Pntjb25zb2xlLmxvZyhgSW5wdXQgIiR7YS5sYWJlbH0iIGNoYW5nZWQgdG86YCxhLmdldFZhbHVlKCkpfSkpLGEuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsKCk9Pntjb25zb2xlLmxvZyhgSW5wdXQgIiR7YS5sYWJlbH0iIGxvc3QgZm9jdXNgKX0pfSkscy5xdWVyeVNlbGVjdG9yKCdkZWVzLWlucHV0LXRleHRba2V5PSJwYXNzd29yZCJdJykmJmNvbnNvbGUubG9nKCJQYXNzd29yZCBpbnB1dCBpbmNsdWRlcyB2aXNpYmlsaXR5IHRvZ2dsZSIpfX0+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJCYXNpYyBUZXh0IElucHV0cyJ9IC5zdWJ0aXRsZT0keyJTdGFuZGFyZCB0ZXh0IGlucHV0cyB3aXRoIGxhYmVscyBhbmQgZGVzY3JpcHRpb25zIn0+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQKICAgICAgICAgICAgLmxhYmVsPSR7IlVzZXJuYW1lIn0KICAgICAgICAgICAgLnZhbHVlPSR7ImpvaG5kb2UifQogICAgICAgICAgICAua2V5PSR7InVzZXJuYW1lIn0KICAgICAgICAgICAgLmRlc2NyaXB0aW9uPSR7IllvdXIgdXNlcm5hbWUgd2lsbCBiZSB2aXNpYmxlIHRvIG90aGVyIHVzZXJzIn0KICAgICAgICAgID48L2RlZXMtaW5wdXQtdGV4dD4KCiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0CiAgICAgICAgICAgIC5sYWJlbD0keyJFbWFpbCBBZGRyZXNzIn0KICAgICAgICAgICAgLnZhbHVlPSR7ImpvaG5AZXhhbXBsZS5jb20ifQogICAgICAgICAgICAuaW5mb1RleHQ9JHsiV2Ugd2lsbCBuZXZlciBzaGFyZSB5b3VyIGVtYWlsIHdpdGggYW55b25lIn0KICAgICAgICAgICAgLmtleT0keyJlbWFpbCJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+CgogICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dAogICAgICAgICAgICAubGFiZWw9JHsiUGFzc3dvcmQifQogICAgICAgICAgICAuaXNQYXNzd29yZEJvb2w9JHshMH0KICAgICAgICAgICAgLnZhbHVlPSR7InNlY3JldDEyMyJ9CiAgICAgICAgICAgIC5rZXk9JHsicGFzc3dvcmQifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CiAgICAKICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntzLnF1ZXJ5U2VsZWN0b3JBbGwoImRlZXMtaW5wdXQtdGV4dCIpLmZvckVhY2gocj0+e2xldCBuPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHIpO2NvbnNvbGUubG9nKGBIb3Jpem9udGFsIGlucHV0ICIke3IubGFiZWx9IiBkaXNwbGF5OmAsbi5kaXNwbGF5KX0pO2xldCB0PXMucXVlcnlTZWxlY3RvcignZGVlcy1pbnB1dC10ZXh0W2tleT0iZmlyc3ROYW1lIl0nKSxhPXMucXVlcnlTZWxlY3RvcignZGVlcy1pbnB1dC10ZXh0W2tleT0ibGFzdE5hbWUiXScpO2lmKHQmJmEpe2xldCByPWkoKCk9PntsZXQgbj10LmdldFZhbHVlKCksbz1hLmdldFZhbHVlKCk7Y29uc29sZS5sb2coYEZ1bGwgbmFtZTogJHtufSAke299YCl9LCJ1cGRhdGVGdWxsTmFtZSIpO3QuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlU3ViamVjdCIsciksYS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2VTdWJqZWN0IixyKX19fT4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7Ikhvcml6b250YWwgTGF5b3V0In0gLnN1YnRpdGxlPSR7Ik11bHRpcGxlIGlucHV0cyBhcnJhbmdlZCBob3Jpem9udGFsbHkgZm9yIGNvbXBhY3QgZm9ybXMifT4KICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRpdiBjbGFzcz0iaG9yaXpvbnRhbC1ncm91cCI+CiAgICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQKICAgICAgICAgICAgICAubGFiZWw9JHsiRmlyc3QgTmFtZSJ9CiAgICAgICAgICAgICAgLnZhbHVlPSR7IkpvaG4ifQogICAgICAgICAgICAgIC5sYXlvdXRNb2RlPSR7Imhvcml6b250YWwifQogICAgICAgICAgICAgIC5rZXk9JHsiZmlyc3ROYW1lIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgoKICAgICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dAogICAgICAgICAgICAgIC5sYWJlbD0keyJMYXN0IE5hbWUifQogICAgICAgICAgICAgIC52YWx1ZT0keyJEb2UifQogICAgICAgICAgICAgIC5sYXlvdXRNb2RlPSR7Imhvcml6b250YWwifQogICAgICAgICAgICAgIC5rZXk9JHsibGFzdE5hbWUifQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+CgogICAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0CiAgICAgICAgICAgICAgLmxhYmVsPSR7IkFnZSJ9CiAgICAgICAgICAgICAgLnZhbHVlPSR7IjI4In0KICAgICAgICAgICAgICAubGF5b3V0TW9kZT0keyJob3Jpem9udGFsIn0KICAgICAgICAgICAgICAua2V5PSR7ImFnZSJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtdGV4dD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CiAgICAKICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntzLnF1ZXJ5U2VsZWN0b3JBbGwoImRlZXMtaW5wdXQtdGV4dCIpLmZvckVhY2goYT0+e2xldCByPWEubGFiZWxQb3NpdGlvbjtjb25zb2xlLmxvZyhgSW5wdXQgIiR7YS5sYWJlbH0iIGhhcyBsYWJlbCBwb3NpdGlvbjogJHtyfWApfSk7bGV0IHQ9cy5xdWVyeVNlbGVjdG9yQWxsKCdkZWVzLWlucHV0LXRleHRbbGFiZWxQb3NpdGlvbj0ibGVmdCJdJyk7dC5sZW5ndGg+MCYmY29uc29sZS5sb2coYCR7dC5sZW5ndGh9IGlucHV0cyBoYXZlIGxlZnQtYWxpZ25lZCBsYWJlbHMgZm9yIGlubGluZSBsYXlvdXRgKX19PgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiTGFiZWwgUG9zaXRpb25zIn0gLnN1YnRpdGxlPSR7IkRpZmZlcmVudCBsYWJlbCBwb3NpdGlvbmluZyBvcHRpb25zIGZvciB2YXJpb3VzIGxheW91dHMifT4KICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dAogICAgICAgICAgICAubGFiZWw9JHsiTGFiZWwgb24gVG9wIChEZWZhdWx0KSJ9CiAgICAgICAgICAgIC52YWx1ZT0keyJTdGFuZGFyZCBsYXlvdXQifQogICAgICAgICAgICAubGFiZWxQb3NpdGlvbj0keyJ0b3AifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgoKICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQKICAgICAgICAgICAgLmxhYmVsPSR7IkxhYmVsIG9uIExlZnQifQogICAgICAgICAgICAudmFsdWU9JHsiSW5saW5lIGxhYmVsIn0KICAgICAgICAgICAgLmxhYmVsUG9zaXRpb249JHsibGVmdCJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+CgogICAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZC1sYXlvdXQiPgogICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dAogICAgICAgICAgICAubGFiZWw9JHsiQ2l0eSJ9CiAgICAgICAgICAgIC52YWx1ZT0keyJOZXcgWW9yayJ9CiAgICAgICAgICAgIC5sYWJlbFBvc2l0aW9uPSR7ImxlZnQifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgoKICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQKICAgICAgICAgICAgLmxhYmVsPSR7IlpJUCBDb2RlIn0KICAgICAgICAgICAgLnZhbHVlPSR7IjEwMDAxIn0KICAgICAgICAgICAgLmxhYmVsUG9zaXRpb249JHsibGVmdCJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KICAgIAogICAgPGRlZXMtZGVtb3dyYXBwZXI+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJWYWxpZGF0aW9uICYgU3RhdGVzIn0gLnN1YnRpdGxlPSR7IkRpZmZlcmVudCB2YWxpZGF0aW9uIHN0YXRlcyBhbmQgaW5wdXQgY29uZmlndXJhdGlvbnMifT4KICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dAogICAgICAgICAgICAubGFiZWw9JHsiUmVxdWlyZWQgRmllbGQifQogICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0KICAgICAgICAgICAgLmtleT0keyJyZXF1aXJlZEZpZWxkIn0KICAgICAgICAgID48L2RlZXMtaW5wdXQtdGV4dD4KCiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0CiAgICAgICAgICAgIC5sYWJlbD0keyJEaXNhYmxlZCBGaWVsZCJ9CiAgICAgICAgICAgIC52YWx1ZT0keyJDYW5ub3QgZWRpdCB0aGlzIn0KICAgICAgICAgICAgLmRpc2FibGVkPSR7ITB9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+CgogICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dAogICAgICAgICAgICAubGFiZWw9JHsiRW1haWwgd2l0aCBWYWxpZGF0aW9uIn0KICAgICAgICAgICAgLnZhbHVlPSR7ImludmFsaWRAIn0KICAgICAgICAgICAgLnZhbGlkYXRpb25GdW5jdGlvbj0ke3M9Pi9eW15cc0BdK0BbXlxzQF0rXC5bXlxzQF0rJC8udGVzdChzKT97dmFsaWQ6ITAsbWVzc2FnZToiRW1haWwgYWRkcmVzcyBpcyB2YWxpZCJ9Ont2YWxpZDohMSxtZXNzYWdlOiJQbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIn19CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KICAgIAogICAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e3MucXVlcnlTZWxlY3RvckFsbCgiZGVlcy1pbnB1dC10ZXh0W2lzUGFzc3dvcmRCb29sXSIpLmZvckVhY2godD0+e2xldCBhPXQscj1pKCgpPT57bGV0IG49YS5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCJpbnB1dCIpO24mJmNvbnNvbGUubG9nKGBQYXNzd29yZCBmaWVsZCAiJHthLmxhYmVsfSIgdHlwZTpgLG4udHlwZSl9LCJjaGVja1RvZ2dsZSIpO2lmKGEuc2hhZG93Um9vdCl7bGV0IG49bmV3IE11dGF0aW9uT2JzZXJ2ZXIociksbz1hLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiaW5wdXQiKTtvJiZuLm9ic2VydmUobyx7YXR0cmlidXRlczohMCxhdHRyaWJ1dGVGaWx0ZXI6WyJ0eXBlIl19KX19KX19PgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiQWR2YW5jZWQgRmVhdHVyZXMifSAuc3VidGl0bGU9JHsiUGFzc3dvcmQgdmlzaWJpbGl0eSB0b2dnbGUgYW5kIG90aGVyIGFkdmFuY2VkIGZlYXR1cmVzIn0+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQKICAgICAgICAgICAgLmxhYmVsPSR7IlBhc3N3b3JkIHdpdGggVG9nZ2xlIn0KICAgICAgICAgICAgLmlzUGFzc3dvcmRCb29sPSR7ITB9CiAgICAgICAgICAgIC52YWx1ZT0keyJteVNlY3VyZVBhc3N3b3JkMTIzIn0KICAgICAgICAgICAgLmluZm9UZXh0PSR7IkNsaWNrIHRoZSBleWUgaWNvbiB0byBzaG93L2hpZGUgcGFzc3dvcmQifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgoKICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQKICAgICAgICAgICAgLmxhYmVsPSR7IkFQSSBLZXkifQogICAgICAgICAgICAuaXNQYXNzd29yZEJvb2w9JHshMH0KICAgICAgICAgICAgLnZhbHVlPSR7InNrLTEyMzQ1Njc4OTBhYmNkZWYifQogICAgICAgICAgICAuaW5mb1RleHQ9JHsiS2VlcCB0aGlzIGtleSBzZWN1cmUgYW5kIG5ldmVyIHNoYXJlIGl0In0KICAgICAgICAgID48L2RlZXMtaW5wdXQtdGV4dD4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgogICAgCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57bGV0IGU9cy5xdWVyeVNlbGVjdG9yKCJkZWVzLWlucHV0LXRleHQiKSx0PXMucXVlcnlTZWxlY3RvcigiI3RleHQtaW5wdXQtb3V0cHV0Iik7ZSYmdCYmZS5jaGFuZ2VTdWJqZWN0LnN1YnNjcmliZSgoKT0+e3QudGV4dENvbnRlbnQ9YEN1cnJlbnQgdmFsdWU6ICIke2UuZ2V0VmFsdWUoKX0iYH0pfX0+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJJbnRlcmFjdGl2ZSBFeGFtcGxlIn0gLnN1YnRpdGxlPSR7IlRyeSB0eXBpbmcgaW4gdGhlIGlucHV0IHRvIHNlZSByZWFsLXRpbWUgdmFsdWUgY2hhbmdlcyJ9PgogICAgICAgIDxkZWVzLWlucHV0LXRleHQKICAgICAgICAgIC5sYWJlbD0keyJEeW5hbWljIElucHV0In0KICAgICAgICAgIC5wbGFjZWhvbGRlcj0keyJUeXBlIHNvbWV0aGluZyBoZXJlLi4uIn0KICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+CgogICAgICAgIDxkaXYgY2xhc3M9ImludGVyYWN0aXZlLXNlY3Rpb24iPgogICAgICAgICAgPGRpdiBpZD0idGV4dC1pbnB1dC1vdXRwdXQiIGNsYXNzPSJvdXRwdXQtdGV4dCI+Q3VycmVudCB2YWx1ZTogIiI8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgogIDwvZGl2PgpgLCJkZW1vRnVuYyIpfSk7dmFyIGV1LE1vLGZuZSx4aD1nKCgpPT57RzEoKTt6aSgpO1lkYSgpO0NyKCk7cGUoKTtwdCgpO29yKCk7ZXU9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LE1vPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxmbmU9KCgpPT57bGV0IHM9W25lKCJkZWVzLWlucHV0LXRleHQiKV0sZSx0PVtdLGEscj1PdCxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXSxPLCQ9W10sRT1bXSxILGs9W10sUz1bXTt2YXIgST1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0lucHV0VGV4dCIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBQPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6U3RyaW5nLHJlZmxlY3Q6ITB9KV0scD1bTCh7dHlwZTpCb29sZWFuLHJlZmxlY3Q6ITB9KV0sYz1bTCh7dHlwZTpCb29sZWFuLHJlZmxlY3Q6ITB9KV0seD1bTCh7dHlwZTpTdHJpbmcscmVmbGVjdDohMH0pXSx5PVtMKHtyZWZsZWN0OiEwfSldLE49W0woe2F0dHJpYnV0ZTohMX0pXSxPPVtMKHt0eXBlOkJvb2xlYW4scmVmbGVjdDohMH0pXSxIPVtMKHthdHRyaWJ1dGU6ITF9KV0sZXUodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2YWx1ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShSPT4idmFsdWUiaW4gUiwiaGFzIiksZ2V0OmkoUj0+Ui52YWx1ZSwiZ2V0Iiksc2V0OmkoKFIsSyk9PntSLnZhbHVlPUt9LCJzZXQiKX0sbWV0YWRhdGE6UH0sbyxsKSxldSh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImlzUGFzc3dvcmRCb29sIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFI9PiJpc1Bhc3N3b3JkQm9vbCJpbiBSLCJoYXMiKSxnZXQ6aShSPT5SLmlzUGFzc3dvcmRCb29sLCJnZXQiKSxzZXQ6aSgoUixLKT0+e1IuaXNQYXNzd29yZEJvb2w9S30sInNldCIpfSxtZXRhZGF0YTpQfSxkLHUpLGV1KHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2hvd1Bhc3N3b3JkQm9vbCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShSPT4ic2hvd1Bhc3N3b3JkQm9vbCJpbiBSLCJoYXMiKSxnZXQ6aShSPT5SLnNob3dQYXNzd29yZEJvb2wsImdldCIpLHNldDppKChSLEspPT57Ui5zaG93UGFzc3dvcmRCb29sPUt9LCJzZXQiKX0sbWV0YWRhdGE6UH0sYix2KSxldSh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InZhbGlkYXRpb25TdGF0ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShSPT4idmFsaWRhdGlvblN0YXRlImluIFIsImhhcyIpLGdldDppKFI9PlIudmFsaWRhdGlvblN0YXRlLCJnZXQiKSxzZXQ6aSgoUixLKT0+e1IudmFsaWRhdGlvblN0YXRlPUt9LCJzZXQiKX0sbWV0YWRhdGE6UH0sbSxmKSxldSh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InZhbGlkYXRpb25UZXh0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFI9PiJ2YWxpZGF0aW9uVGV4dCJpbiBSLCJoYXMiKSxnZXQ6aShSPT5SLnZhbGlkYXRpb25UZXh0LCJnZXQiKSxzZXQ6aSgoUixLKT0+e1IudmFsaWRhdGlvblRleHQ9S30sInNldCIpfSxtZXRhZGF0YTpQfSxNLHopLGV1KHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidmFsaWRhdGlvbkZ1bmN0aW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFI9PiJ2YWxpZGF0aW9uRnVuY3Rpb24iaW4gUiwiaGFzIiksZ2V0OmkoUj0+Ui52YWxpZGF0aW9uRnVuY3Rpb24sImdldCIpLHNldDppKChSLEspPT57Ui52YWxpZGF0aW9uRnVuY3Rpb249S30sInNldCIpfSxtZXRhZGF0YTpQfSxDLF8pLGV1KHRoaXMsbnVsbCxPLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidmludGVncmF0ZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUj0+InZpbnRlZ3JhdGVkImluIFIsImhhcyIpLGdldDppKFI9PlIudmludGVncmF0ZWQsImdldCIpLHNldDppKChSLEspPT57Ui52aW50ZWdyYXRlZD1LfSwic2V0Iil9LG1ldGFkYXRhOlB9LCQsRSksZXUodGhpcyxudWxsLEgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2YWxpZENvbmZpcm1lZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShSPT4idmFsaWRDb25maXJtZWQiaW4gUiwiaGFzIiksZ2V0OmkoUj0+Ui52YWxpZENvbmZpcm1lZCwiZ2V0Iiksc2V0OmkoKFIsSyk9PntSLnZhbGlkQ29uZmlybWVkPUt9LCJzZXQiKX0sbWV0YWRhdGE6UH0sayxTKSxldShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpQfSxudWxsLHQpLEk9YT1lLnZhbHVlLFAmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6UH0pfXN0YXRpYyBkZW1vPUtkYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIklucHV0Il07I2U9TW8odGhpcyxvLCIiKTtnZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy4jZX1zZXQgdmFsdWUoUCl7dGhpcy4jZT1QfSN0PShNbyh0aGlzLGwpLE1vKHRoaXMsZCwhMSkpO2dldCBpc1Bhc3N3b3JkQm9vbCgpe3JldHVybiB0aGlzLiN0fXNldCBpc1Bhc3N3b3JkQm9vbChQKXt0aGlzLiN0PVB9I2E9KE1vKHRoaXMsdSksTW8odGhpcyxiLCExKSk7Z2V0IHNob3dQYXNzd29yZEJvb2woKXtyZXR1cm4gdGhpcy4jYX1zZXQgc2hvd1Bhc3N3b3JkQm9vbChQKXt0aGlzLiNhPVB9I3M9KE1vKHRoaXMsdiksTW8odGhpcyxtLHZvaWQgMCkpO2dldCB2YWxpZGF0aW9uU3RhdGUoKXtyZXR1cm4gdGhpcy4jc31zZXQgdmFsaWRhdGlvblN0YXRlKFApe3RoaXMuI3M9UH0jaT0oTW8odGhpcyxmKSxNbyh0aGlzLE0sIiIpKTtnZXQgdmFsaWRhdGlvblRleHQoKXtyZXR1cm4gdGhpcy4jaX1zZXQgdmFsaWRhdGlvblRleHQoUCl7dGhpcy4jaT1QfSNyPShNbyh0aGlzLHopLE1vKHRoaXMsQyx2b2lkIDApKTtnZXQgdmFsaWRhdGlvbkZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuI3J9c2V0IHZhbGlkYXRpb25GdW5jdGlvbihQKXt0aGlzLiNyPVB9I289KE1vKHRoaXMsXyksTW8odGhpcywkLCExKSk7Z2V0IHZpbnRlZ3JhdGVkKCl7cmV0dXJuIHRoaXMuI299c2V0IHZpbnRlZ3JhdGVkKFApe3RoaXMuI289UH0jbj0oTW8odGhpcyxFKSxNbyh0aGlzLGssITEpKTtnZXQgdmFsaWRDb25maXJtZWQoKXtyZXR1cm4gdGhpcy4jbn1zZXQgdmFsaWRDb25maXJtZWQoUCl7dGhpcy4jbj1QfXZhbGlkVGltZW91dD1Nbyh0aGlzLFMpO3N0YXRpYyBzdHlsZXM9W0hlLC4uLk90LmJhc2VTdHlsZXMsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICAgICogewogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgIDpob3N0IHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgei1pbmRleDogYXV0bzsKICAgICAgICBmb250LWZhbWlseTogJHtOYX07CiAgICAgIH0KCiAgICAgIC5tYWluY29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxNSUpIiwiaHNsKDAgMCUgOTAlKSIpfTsKICAgICAgfQoKICAgICAgaW5wdXQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgaGVpZ2h0OiA0MHB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHBhZGRpbmc6IDAgMTJweDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDQwcHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDEwMCUpIiwiaHNsKDAgMCUgOSUpIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4OS44JSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBjdXJzb3I6IHRleHQ7CiAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAzLjklKSIsImhzbCgwIDAlIDk4JSkiKX07CiAgICAgIH0KCiAgICAgIGlucHV0OjpwbGFjZWhvbGRlciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA0NS4xJSkiLCJoc2woMCAwJSA2My45JSkiKX07CiAgICAgIH0KCiAgICAgIGlucHV0OmhvdmVyOm5vdCg6ZGlzYWJsZWQpOm5vdCg6Zm9jdXMpIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA3OS44JSkiLCJoc2woMCAwJSAyMC45JSkiKX07CiAgICAgIH0KCiAgICAgIGlucHV0OmZvY3VzIHsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDklKSIsImhzbCgwIDAlIDk4JSkiKX07CiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5JSAvIDAuMDUpIiwiaHNsKDAgMCUgOTglIC8gMC4wNSkiKX07CiAgICAgIH0KCiAgICAgIGlucHV0OmRpc2FibGVkIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTUuMSUpIiwiaHNsKDAgMCUgMTQuOSUpIil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDg5LjglKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDQ1LjElKSIsImhzbCgwIDAlIDYzLjklKSIpfTsKICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgfQoKICAgICAgLyogUGFzc3dvcmQgdG9nZ2xlIGJ1dHRvbiAqLwogICAgICAuc2hvd1Bhc3N3b3JkIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgcmlnaHQ6IDFweDsKICAgICAgICB0b3A6IDIwcHg7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICB3aWR0aDogMzhweDsKICAgICAgICBoZWlnaHQ6IDM4cHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNDUuMSUpIiwiaHNsKDAgMCUgNjMuOSUpIil9OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDAgNXB4IDVweCAwOwogICAgICB9CgogICAgICAuc2hvd1Bhc3N3b3JkOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTUuMSUpIiwiaHNsKDAgMCUgMTQuOSUpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTUlKSIsImhzbCgwIDAlIDkzLjklKSIpfTsKICAgICAgfQoKICAgICAgLyogVmFsaWQgY2hlY2ttYXJrIGljb24gKi8KICAgICAgLnZhbGlkSWNvbiB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHJpZ2h0OiAxMHB4OwogICAgICAgIHRvcDogMjBweDsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2U7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMTQyLjEgNzYuMiUgMzYuMyUpIiwiaHNsKDE0Mi4xIDcwLjYlIDQ1LjMlKSIpfTsKICAgICAgfQoKICAgICAgLnZhbGlkSWNvbi5zaG93IHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CgogICAgICAudmFsaWRJY29uIGRlZXMtaWNvbiB7CiAgICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICB9CgogICAgICAvKiBWYWxpZGF0aW9uIHN0eWxlcyAqLwogICAgICAudmFsaWRhdGlvbkNvbnRhaW5lciB7CiAgICAgICAgbWFyZ2luLXRvcDogNHB4OwogICAgICAgIHBhZGRpbmc6IDRweCA4cHg7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLnZhbGlkYXRpb25Db250YWluZXIuaW52YWxpZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDg0LjIlIDYwLjIlIC8gMC4xKSIsImhzbCgwIDcyLjIlIDUwLjYlIC8gMC4xKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDg0LjIlIDYwLjIlKSIsImhzbCgwIDcyLjIlIDUwLjYlKSIpfTsKICAgICAgfQoKICAgICAgLnZhbGlkYXRpb25Db250YWluZXIud2FybiB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyNSA5NSUgNTMlIC8gMC4xKSIsImhzbCgyNSA5NSUgNjMlIC8gMC4xKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyNSA5NSUgNTMlKSIsImhzbCgyNSA5NSUgNjMlKSIpfTsKICAgICAgfQoKICAgICAgLnZhbGlkYXRpb25Db250YWluZXIudmFsaWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMTQyLjEgNzYuMiUgMzYuMyUgLyAwLjEpIiwiaHNsKDE0Mi4xIDcwLjYlIDQ1LjMlIC8gMC4xKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgxNDIuMSA3Ni4yJSAzNi4zJSkiLCJoc2woMTQyLjEgNzAuNiUgNDUuMyUpIil9OwogICAgICB9CgogICAgICAvKiBFcnJvciBzdGF0ZSBmb3IgaW5wdXQgKi8KICAgICAgOmhvc3QoW3ZhbGlkYXRpb25zdGF0ZT0iaW52YWxpZCJdKSBpbnB1dCB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgODQuMiUgNjAuMiUpIiwiaHNsKDAgNzIuMiUgNTAuNiUpIil9OwogICAgICB9CgogICAgICA6aG9zdChbdmFsaWRhdGlvbnN0YXRlPSJpbnZhbGlkIl0pIGlucHV0OmZvY3VzIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCA4NC4yJSA2MC4yJSkiLCJoc2woMCA3Mi4yJSA1MC42JSkiKX07CiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4ICR7aC5iZFRoZW1lKCJoc2woMCA4NC4yJSA2MC4yJSAvIDAuMDUpIiwiaHNsKDAgNzIuMiUgNTAuNiUgLyAwLjA1KSIpfTsKICAgICAgfQoKICAgICAgLyogV2FybmluZyBzdGF0ZSBmb3IgaW5wdXQgKi8KICAgICAgOmhvc3QoW3ZhbGlkYXRpb25zdGF0ZT0id2FybiJdKSBpbnB1dCB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDI1IDk1JSA1MyUpIiwiaHNsKDI1IDk1JSA2MyUpIil9OwogICAgICB9CgogICAgICA6aG9zdChbdmFsaWRhdGlvbnN0YXRlPSJ3YXJuIl0pIGlucHV0OmZvY3VzIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjUgOTUlIDUzJSkiLCJoc2woMjUgOTUlIDYzJSkiKX07CiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4ICR7aC5iZFRoZW1lKCJoc2woMjUgOTUlIDUzJSAvIDAuMDUpIiwiaHNsKDI1IDk1JSA2MyUgLyAwLjA1KSIpfTsKICAgICAgfQoKICAgICAgLyogVmFsaWQgc3RhdGUgZm9yIGlucHV0ICovCiAgICAgIDpob3N0KFt2YWxpZGF0aW9uc3RhdGU9InZhbGlkIl0pIGlucHV0IHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMTQyLjEgNzYuMiUgMzYuMyUpIiwiaHNsKDE0Mi4xIDcwLjYlIDQ1LjMlKSIpfTsKICAgICAgfQoKICAgICAgOmhvc3QoW3ZhbGlkYXRpb25zdGF0ZT0idmFsaWQiXSkgaW5wdXQ6Zm9jdXMgewogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgxNDIuMSA3Ni4yJSAzNi4zJSkiLCJoc2woMTQyLjEgNzAuNiUgNDUuMyUpIil9OwogICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCAke2guYmRUaGVtZSgiaHNsKDE0Mi4xIDc2LjIlIDM2LjMlIC8gMC4wNSkiLCJoc2woMTQyLjEgNzAuNiUgNDUuMyUgLyAwLjA1KSIpfTsKICAgICAgfQoKICAgICAgLyogVmlzdWFsbHkgaW50ZWdyYXRlZCBtb2RlOiBzaGVkIGNocm9tZSB0byBibGVuZCBpbnRvIGEgaG9zdCBjb21wb25lbnQKICAgICAgICAgKGUuZy4gYSBkZWVzLXRhYmxlIGNlbGwgaW4gZWRpdCBtb2RlKS4gKi8KICAgICAgOmhvc3QoW3ZpbnRlZ3JhdGVkXSkgZGVlcy1sYWJlbCwKICAgICAgOmhvc3QoW3ZpbnRlZ3JhdGVkXSkgLnZhbGlkYXRpb25Db250YWluZXIgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KICAgICAgOmhvc3QoW3ZpbnRlZ3JhdGVkXSkgLm1haW5jb250YWluZXIgewogICAgICAgIGhlaWdodDogNDBweDsKICAgICAgfQogICAgICA6aG9zdChbdmludGVncmF0ZWRdKSBpbnB1dCB7CiAgICAgICAgaGVpZ2h0OiA0MHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4OwogICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm94LXNoYWRvdzogbm9uZTsKICAgICAgICB0cmFuc2l0aW9uOiBub25lOwogICAgICB9CiAgICAgIDpob3N0KFt2aW50ZWdyYXRlZF0pIGlucHV0OmhvdmVyOm5vdCg6ZGlzYWJsZWQpOm5vdCg6Zm9jdXMpLAogICAgICA6aG9zdChbdmludGVncmF0ZWRdKSBpbnB1dDpmb2N1cyB7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgIH0KICAgICAgOmhvc3QoW3ZpbnRlZ3JhdGVkXSkgLnNob3dQYXNzd29yZCB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxzdHlsZT4KICAgICAgICBpbnB1dCB7CiAgICAgICAgICBmb250LWZhbWlseTogJHt0aGlzLmlzUGFzc3dvcmRCb29sPyQ4OiJpbmhlcml0In07CiAgICAgICAgICBsZXR0ZXItc3BhY2luZzogJHt0aGlzLmlzUGFzc3dvcmRCb29sPyIwLjVweCI6Im5vcm1hbCJ9OwogICAgICAgICAgcGFkZGluZy1yaWdodDogJHt0aGlzLmlzUGFzc3dvcmRCb29sPyI0OHB4Ijp0aGlzLnZhbGlkQ29uZmlybWVkPyI0MHB4IjoiMTJweCJ9OwogICAgICAgIH0KICAgICAgICAke3RoaXMudmFsaWRhdGlvblRleHQmJiF0aGlzLnZhbGlkQ29uZmlybWVkP0pgCiAgICAgICAgICAgICAgLnZhbGlkYXRpb25Db250YWluZXIgewogICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICAgICAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGA6SmAKICAgICAgICAgICAgICAudmFsaWRhdGlvbkNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDA7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgYH0KICAgICAgPC9zdHlsZT4KICAgICAgPGRpdiBjbGFzcz0iaW5wdXQtd3JhcHBlciI+CiAgICAgICAgPGRlZXMtbGFiZWwgLmxhYmVsPSR7dGhpcy5sYWJlbH0gLmluZm9UZXh0PSR7dGhpcy5pbmZvVGV4dH0gLnJlcXVpcmVkPSR7dGhpcy5yZXF1aXJlZH0+PC9kZWVzLWxhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9Im1haW5jb250YWluZXIiPgogICAgICAgICAgPGlucHV0CiAgICAgICAgICAgIHR5cGU9IiR7dGhpcy5pc1Bhc3N3b3JkQm9vbCYmIXRoaXMuc2hvd1Bhc3N3b3JkQm9vbD8icGFzc3dvcmQiOiJ0ZXh0In0iCiAgICAgICAgICAgIC52YWx1ZT0ke3RoaXMudmFsdWV9CiAgICAgICAgICAgIEBpbnB1dD0iJHt0aGlzLnVwZGF0ZVZhbHVlfSIKICAgICAgICAgICAgLmRpc2FibGVkPSR7dGhpcy5kaXNhYmxlZH0KICAgICAgICAgICAgcGxhY2Vob2xkZXI9IiR7dGhpcy5sYWJlbD8iIjoiRW50ZXIgdGV4dC4uLiJ9IgogICAgICAgICAgLz4KICAgICAgICAgICR7dGhpcy5pc1Bhc3N3b3JkQm9vbD93YAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2hvd1Bhc3N3b3JkIiBAY2xpY2s9JHt0aGlzLnRvZ2dsZVBhc3N3b3JkVmlld30+CiAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHt0aGlzLnNob3dQYXNzd29yZEJvb2w/Imx1Y2lkZTpFeWUiOiJsdWNpZGU6RXllT2ZmIn0+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICBgOndgYH0KICAgICAgICAgIDxkaXYgY2xhc3M9InZhbGlkSWNvbiAke3RoaXMudmFsaWRDb25maXJtZWQ/InNob3ciOiIifSI+CiAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHsibHVjaWRlOkNoZWNrIn0+PC9kZWVzLWljb24+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICR7dGhpcy52YWxpZGF0aW9uVGV4dD93YAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idmFsaWRhdGlvbkNvbnRhaW5lciAke3RoaXMudmFsaWRhdGlvblN0YXRlfHwiaW52YWxpZCJ9Ij4KICAgICAgICAgICAgICAgICAgJHt0aGlzLnZhbGlkYXRpb25UZXh0fQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgYDp3YDxkaXYgY2xhc3M9InZhbGlkYXRpb25Db250YWluZXIiPjwvZGl2PmB9CiAgICAgICAgICAke3RoaXMucmVuZGVyRGVzY3JpcHRpb24oKX0KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfWZpcnN0VXBkYXRlZCgpe2lmKHRoaXMudmFsaWRhdGlvbkZ1bmN0aW9uJiZ0aGlzLnZhbHVlKXtsZXQgUD10aGlzLnZhbGlkYXRpb25GdW5jdGlvbih0aGlzLnZhbHVlKTt0aGlzLnZhbGlkYXRpb25TdGF0ZT1QLnZhbGlkPyJ2YWxpZCI6ImludmFsaWQiLHRoaXMudmFsaWRhdGlvblRleHQ9UC5tZXNzYWdlfHwiIixQLnZhbGlkJiYodGhpcy52YWxpZENvbmZpcm1lZD0hMSx0aGlzLnZhbGlkVGltZW91dD1zZXRUaW1lb3V0KCgpPT57dGhpcy52YWxpZENvbmZpcm1lZD0hMCx0aGlzLnZhbGlkYXRpb25TdGF0ZT12b2lkIDB9LDUwMCkpfX1hc3luYyB1cGRhdGVWYWx1ZShQKXtsZXQgUj1QLnRhcmdldDtpZih0aGlzLnZhbHVlPVIudmFsdWUsdGhpcy52YWxpZGF0aW9uRnVuY3Rpb24pe2xldCBLPXRoaXMudmFsaWRhdGlvbkZ1bmN0aW9uKHRoaXMudmFsdWUpO3RoaXMudmFsaWRhdGlvblN0YXRlPUsudmFsaWQ/InZhbGlkIjoiaW52YWxpZCIsdGhpcy52YWxpZGF0aW9uVGV4dD1LLm1lc3NhZ2V8fCIiLEsudmFsaWQ/KHRoaXMudmFsaWRDb25maXJtZWQ9ITEsY2xlYXJUaW1lb3V0KHRoaXMudmFsaWRUaW1lb3V0KSx0aGlzLnZhbGlkVGltZW91dD1zZXRUaW1lb3V0KCgpPT57dGhpcy52YWxpZENvbmZpcm1lZD0hMCx0aGlzLnZhbGlkYXRpb25TdGF0ZT12b2lkIDB9LDUwMCkpOihjbGVhclRpbWVvdXQodGhpcy52YWxpZFRpbWVvdXQpLHRoaXMudmFsaWRDb25maXJtZWQ9ITEpfXRoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMpfWdldENvbnRleHRNZW51SXRlbXMoKXtsZXQgUD10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiaW5wdXQiKSxSPVAuc2VsZWN0aW9uU3RhcnQhPT1QLnNlbGVjdGlvbkVuZDtyZXR1cm5be25hbWU6IkN1dCIsaWNvbk5hbWU6Imx1Y2lkZTpTY2lzc29ycyIsc2hvcnRjdXQ6IkNtZCtYIixkaXNhYmxlZDohUixhY3Rpb246aShhc3luYygpPT57bGV0IEs9dGhpcy52YWx1ZS5zdWJzdHJpbmcoUC5zZWxlY3Rpb25TdGFydCxQLnNlbGVjdGlvbkVuZCk7YXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoSyk7bGV0IFY9UC5zZWxlY3Rpb25TdGFydDt0aGlzLnZhbHVlPXRoaXMudmFsdWUuc3Vic3RyaW5nKDAsVikrdGhpcy52YWx1ZS5zdWJzdHJpbmcoUC5zZWxlY3Rpb25FbmQpLFAudmFsdWU9dGhpcy52YWx1ZSxQLnNldFNlbGVjdGlvblJhbmdlKFYsViksdGhpcy5jaGFuZ2VTdWJqZWN0Lm5leHQodGhpcyl9LCJhY3Rpb24iKX0se25hbWU6IkNvcHkiLGljb25OYW1lOiJsdWNpZGU6Q29weSIsc2hvcnRjdXQ6IkNtZCtDIixkaXNhYmxlZDohUixhY3Rpb246aShhc3luYygpPT57bGV0IEs9dGhpcy52YWx1ZS5zdWJzdHJpbmcoUC5zZWxlY3Rpb25TdGFydCxQLnNlbGVjdGlvbkVuZCk7YXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoSyl9LCJhY3Rpb24iKX0se25hbWU6IlBhc3RlIixpY29uTmFtZToibHVjaWRlOkNsaXBib2FyZFBhc3RlIixzaG9ydGN1dDoiQ21kK1YiLGFjdGlvbjppKGFzeW5jKCk9PntsZXQgSz1hd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLnJlYWRUZXh0KCksVj1QLnNlbGVjdGlvblN0YXJ0LFc9UC5zZWxlY3Rpb25FbmQ7dGhpcy52YWx1ZT10aGlzLnZhbHVlLnN1YnN0cmluZygwLFYpK0srdGhpcy52YWx1ZS5zdWJzdHJpbmcoVyksUC52YWx1ZT10aGlzLnZhbHVlLFAuc2V0U2VsZWN0aW9uUmFuZ2UoVitLLmxlbmd0aCxWK0subGVuZ3RoKSx0aGlzLmNoYW5nZVN1YmplY3QubmV4dCh0aGlzKX0sImFjdGlvbiIpfSx7ZGl2aWRlcjohMH0se25hbWU6IlNlbGVjdCBBbGwiLGljb25OYW1lOiJsdWNpZGU6VGV4dEN1cnNvcklucHV0IixzaG9ydGN1dDoiQ21kK0EiLGFjdGlvbjppKGFzeW5jKCk9PntQLnNlbGVjdCgpfSwiYWN0aW9uIil9XX1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLnZhbHVlfXNldFZhbHVlKFApe3RoaXMudmFsdWU9UH1hc3luYyB0b2dnbGVQYXNzd29yZFZpZXcoKXt0aGlzLnNob3dQYXNzd29yZEJvb2w9IXRoaXMuc2hvd1Bhc3N3b3JkQm9vbH1hc3luYyBmb2N1cygpe3RoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCJpbnB1dCIpLmZvY3VzKCl9YXN5bmMgYmx1cigpe3RoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCJpbnB1dCIpLmJsdXIoKX1zdGF0aWN7TW8oYSx0KX19O3JldHVybiBJPWF9KSgpfSk7dmFyIFpkYSxYZGE9ZygoKT0+e3BlKCk7SXQoKTtmbygpO1pkYT1pKCgpPT53YAogIDxkZWVzLWRlbW93cmFwcGVyPgogICAgPHN0eWxlPgogICAgICAke0pgCiAgICAgICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICAgIG1heC13aWR0aDogMTIwMHB4OwogICAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5wcm9kdWN0LWdyaWQgewogICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDI4MHB4LCAxZnIpKTsKICAgICAgICAgIGdhcDogMjBweDsKICAgICAgICB9CgogICAgICAgIC5jYXJ0LXN1bW1hcnkgewogICAgICAgICAgbWFyZ2luLXRvcDogMjRweDsKICAgICAgICAgIHBhZGRpbmc6IDIwcHg7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxMCA0MCUgOTYuMSUpIiwiaHNsKDIxNSAyMC4yJSAxNi44JSkiKX07CiAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDIxNC4zIDMxLjglIDkxLjQlKSIsImhzbCgyMTUgMjAuMiUgMjEuOCUpIil9OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIH0KCiAgICAgICAgLmNhcnQtc3VtbWFyeS10aXRsZSB7CiAgICAgICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOSUpIiwiaHNsKDAgMCUgOTUlKSIpfTsKICAgICAgICB9CgogICAgICAgIC5jYXJ0LWl0ZW0gewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBwYWRkaW5nOiA4cHggMDsKICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS4zIDI1JSAyNi43JSkiLCJoc2woMjE3LjkgMTAuNiUgNzQuOSUpIil9OwogICAgICAgIH0KCiAgICAgICAgLmNhcnQtdG90YWwgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBwYWRkaW5nLXRvcDogMTZweDsKICAgICAgICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICAgICAgICBib3JkZXItdG9wOiAycHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgwIDAlIDg5LjglKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDklKSIsImhzbCgwIDAlIDk1JSkiKX07CiAgICAgICAgfQoKICAgICAgICAuc2VsZWN0ZWQtcHJvZHVjdHMgewogICAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDQwJSA5Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDE2LjglKSIpfTsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS4zIDI1JSAyNi43JSkiLCJoc2woMjE3LjkgMTAuNiUgNzQuOSUpIil9OwogICAgICAgIH0KICAgICAgYH0KICAgIDwvc3R5bGU+CiAgICAKICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IkJhc2ljIFByb2R1Y3QgQ2FyZHMifSAuc3VidGl0bGU9JHsiU2ltcGxlIHByb2R1Y3QgZGlzcGxheSB3aXRoIHZhcmlvdXMgY29uZmlndXJhdGlvbnMifT4KICAgICAgICA8ZGl2IGNsYXNzPSJwcm9kdWN0LWdyaWQiPgogICAgICAgICAgPGRlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmQKICAgICAgICAgICAgLnByb2R1Y3REYXRhPSR7e25hbWU6IldpcmVsZXNzIEJsdWV0b290aCBIZWFkcGhvbmVzIixjYXRlZ29yeToiQXVkaW8iLGRlc2NyaXB0aW9uOiJQcmVtaXVtIHNvdW5kIHF1YWxpdHkgd2l0aCBhY3RpdmUgbm9pc2UgY2FuY2VsbGF0aW9uIixwcmljZToxNDkuOTksb3JpZ2luYWxQcmljZToxOTkuOTksaWNvbk5hbWU6Imx1Y2lkZTpoZWFkcGhvbmVzIn19CiAgICAgICAgICAgIC5xdWFudGl0eT0kezF9CiAgICAgICAgICA+PC9kZWVzLXNob3BwaW5nLXByb2R1Y3RjYXJkPgoKICAgICAgICAgIDxkZWVzLXNob3BwaW5nLXByb2R1Y3RjYXJkCiAgICAgICAgICAgIC5wcm9kdWN0RGF0YT0ke3tuYW1lOiJTbWFydCBXYXRjaCBTZXJpZXMgNyIsY2F0ZWdvcnk6IldlYXJhYmxlcyIsZGVzY3JpcHRpb246IlRyYWNrIHlvdXIgZml0bmVzcyBhbmQgc3RheSBjb25uZWN0ZWQgb24gdGhlIGdvIixwcmljZTozOTksaWNvbk5hbWU6Imx1Y2lkZTp3YXRjaCJ9fQogICAgICAgICAgICAucXVhbnRpdHk9JHsxfQogICAgICAgICAgPjwvZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZD4KCiAgICAgICAgICA8ZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZAogICAgICAgICAgICAucHJvZHVjdERhdGE9JHt7bmFtZToiVVNCLUMgSHViIixjYXRlZ29yeToiQWNjZXNzb3JpZXMiLHByaWNlOjQ5Ljk5LGljb25OYW1lOiJsdWNpZGU6dXNiIixpblN0b2NrOiExfX0KICAgICAgICAgICAgLnF1YW50aXR5PSR7MH0KICAgICAgICAgID48L2RlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmQ+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJJbnRlcmFjdGl2ZSBTaG9wcGluZyBDYXJ0In0gLnN1YnRpdGxlPSR7IlByb2R1Y3QgY2FyZHMgd2l0aCBkeW5hbWljIGNhcnQgY2FsY3VsYXRpb24ifSAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57bGV0IGU9W3tpZDoibGFwdG9wIixlbGVtZW50Om51bGwsZGF0YTp7bmFtZTonTWFjQm9vayBQcm8gMTQiJyxjYXRlZ29yeToiQ29tcHV0ZXJzIixkZXNjcmlwdGlvbjoiTTMgUHJvIGNoaXAgd2l0aCAxOEdCIFJBTSIscHJpY2U6MTk5OSxvcmlnaW5hbFByaWNlOjIxOTksaWNvbk5hbWU6Imx1Y2lkZTpsYXB0b3AifX0se2lkOiJpcGFkIixlbGVtZW50Om51bGwsZGF0YTp7bmFtZToiaVBhZCBBaXIiLGNhdGVnb3J5OiJUYWJsZXRzIixkZXNjcmlwdGlvbjonMTAuOSIgTGlxdWlkIFJldGluYSBkaXNwbGF5JyxwcmljZTo1OTksaWNvbk5hbWU6Imx1Y2lkZTp0YWJsZXQifX0se2lkOiJrZXlib2FyZCIsZWxlbWVudDpudWxsLGRhdGE6e25hbWU6Ik1hZ2ljIEtleWJvYXJkIixjYXRlZ29yeToiQWNjZXNzb3JpZXMiLGRlc2NyaXB0aW9uOiJXaXJlbGVzcyBrZXlib2FyZCB3aXRoIFRvdWNoIElEIixwcmljZToxNDksaWNvbk5hbWU6Imx1Y2lkZTprZXlib2FyZCJ9fV0sdD1pKCgpPT57bGV0IGE9MCxyPVtdO2UuZm9yRWFjaChvPT57bGV0IGw9cy5xdWVyeVNlbGVjdG9yKGAjJHtvLmlkfWApO2lmKGwmJmwucXVhbnRpdHk+MCl7bGV0IHA9by5kYXRhLnByaWNlKmwucXVhbnRpdHk7YSs9cCxyLnB1c2goYAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FydC1pdGVtIj4KICAgICAgICAgICAgICAgICAgPHNwYW4+JHtvLmRhdGEubmFtZX0gKCR7bC5xdWFudGl0eX0pPC9zcGFuPgogICAgICAgICAgICAgICAgICA8c3Bhbj4kJHtwLnRvRml4ZWQoMil9PC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgYCl9fSk7bGV0IG49cy5xdWVyeVNlbGVjdG9yKCIjaW50ZXJhY3RpdmUtY2FydC1zdW1tYXJ5Iik7biYmKG4uaW5uZXJIVE1MPWAKICAgICAgICAgICAgICAke3Iuam9pbigiIil9CiAgICAgICAgICAgICAgJHtyLmxlbmd0aD09PTA/JzxkaXYgY2xhc3M9ImNhcnQtaXRlbSIgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgY29sb3I6ICM5OTk7Ij5Zb3VyIGNhcnQgaXMgZW1wdHk8L2Rpdj4nOiIifQogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcnQtdG90YWwiPgogICAgICAgICAgICAgICAgPHNwYW4+VG90YWw8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3Bhbj4kJHthLnRvRml4ZWQoMil9PC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICBgKX0sInVwZGF0ZUNhcnRTdW1tYXJ5Iik7c2V0VGltZW91dCh0LDEwMCkscy5xdWVyeVNlbGVjdG9yQWxsKCJkZWVzLXNob3BwaW5nLXByb2R1Y3RjYXJkIikuZm9yRWFjaChhPT57YS5hZGRFdmVudExpc3RlbmVyKCJxdWFudGl0eUNoYW5nZSIsdCl9KX19PgogICAgICAgIDxkaXYgY2xhc3M9InByb2R1Y3QtZ3JpZCI+CiAgICAgICAgICA8ZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZAogICAgICAgICAgICBpZD0ibGFwdG9wIgogICAgICAgICAgICAucHJvZHVjdERhdGE9JHt7bmFtZTonTWFjQm9vayBQcm8gMTQiJyxjYXRlZ29yeToiQ29tcHV0ZXJzIixkZXNjcmlwdGlvbjoiTTMgUHJvIGNoaXAgd2l0aCAxOEdCIFJBTSIscHJpY2U6MTk5OSxvcmlnaW5hbFByaWNlOjIxOTksaWNvbk5hbWU6Imx1Y2lkZTpsYXB0b3AifX0KICAgICAgICAgICAgLnF1YW50aXR5PSR7MX0KICAgICAgICAgID48L2RlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmQ+CgogICAgICAgICAgPGRlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmQKICAgICAgICAgICAgaWQ9ImlwYWQiCiAgICAgICAgICAgIC5wcm9kdWN0RGF0YT0ke3tuYW1lOiJpUGFkIEFpciIsY2F0ZWdvcnk6IlRhYmxldHMiLGRlc2NyaXB0aW9uOicxMC45IiBMaXF1aWQgUmV0aW5hIGRpc3BsYXknLHByaWNlOjU5OSxpY29uTmFtZToibHVjaWRlOnRhYmxldCJ9fQogICAgICAgICAgICAucXVhbnRpdHk9JHswfQogICAgICAgICAgPjwvZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZD4KCiAgICAgICAgICA8ZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZAogICAgICAgICAgICBpZD0ia2V5Ym9hcmQiCiAgICAgICAgICAgIC5wcm9kdWN0RGF0YT0ke3tuYW1lOiJNYWdpYyBLZXlib2FyZCIsY2F0ZWdvcnk6IkFjY2Vzc29yaWVzIixkZXNjcmlwdGlvbjoiV2lyZWxlc3Mga2V5Ym9hcmQgd2l0aCBUb3VjaCBJRCIscHJpY2U6MTQ5LGljb25OYW1lOiJsdWNpZGU6a2V5Ym9hcmQifX0KICAgICAgICAgICAgLnF1YW50aXR5PSR7Mn0KICAgICAgICAgID48L2RlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmQ+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9ImNhcnQtc3VtbWFyeSI+CiAgICAgICAgICA8aDMgY2xhc3M9ImNhcnQtc3VtbWFyeS10aXRsZSI+U2hvcHBpbmcgQ2FydDwvaDM+CiAgICAgICAgICA8ZGl2IGlkPSJpbnRlcmFjdGl2ZS1jYXJ0LXN1bW1hcnkiPgogICAgICAgICAgICA8IS0tIER5bmFtaWNhbGx5IHVwZGF0ZWQgLS0+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgoKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IlNlbGVjdGFibGUgUHJvZHVjdCBDYXJkcyJ9IC5zdWJ0aXRsZT0keyJDbGljayBjYXJkcyBvciBjaGVja2JveGVzIHRvIHNlbGVjdCBwcm9kdWN0cyJ9PgogICAgICAgIDxkaXYgY2xhc3M9InByb2R1Y3QtZ3JpZCI+CiAgICAgICAgICA8ZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZAogICAgICAgICAgICAucHJvZHVjdERhdGE9JHt7bmFtZToiU29ueSBBbHBoYSA3IElWIixjYXRlZ29yeToiQ2FtZXJhcyIsZGVzY3JpcHRpb246IkZ1bGwtZnJhbWUgbWlycm9ybGVzcyBjYW1lcmEiLHByaWNlOjI0OTgsaWNvbk5hbWU6Imx1Y2lkZTpjYW1lcmEifX0KICAgICAgICAgICAgLnNlbGVjdGFibGU9JHshMH0KICAgICAgICAgICAgLnNob3dRdWFudGl0eVNlbGVjdG9yPSR7ITF9CiAgICAgICAgICAgIEBzZWxlY3Rpb25DaGFuZ2U9JHtzPT57bGV0IGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3NlbGVjdGlvbi1vdXRwdXQiKTtpZihlKXtsZXQgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJkZWVzLXNob3BwaW5nLXByb2R1Y3RjYXJkW3NlbGVjdGFibGVdIiksYT1bXTt0LmZvckVhY2gocj0+e3Iuc2VsZWN0ZWQmJmEucHVzaChyLnByb2R1Y3REYXRhLm5hbWUpfSksZS50ZXh0Q29udGVudD1hLmxlbmd0aD4wP2BTZWxlY3RlZDogJHthLmpvaW4oIiwgIil9YDoiTm8gcHJvZHVjdHMgc2VsZWN0ZWQifX19CiAgICAgICAgICA+PC9kZWVzLXNob3BwaW5nLXByb2R1Y3RjYXJkPgoKICAgICAgICAgIDxkZWVzLXNob3BwaW5nLXByb2R1Y3RjYXJkCiAgICAgICAgICAgIC5wcm9kdWN0RGF0YT0ke3tuYW1lOiJESkkgTWluaSAzIFBybyIsY2F0ZWdvcnk6IkRyb25lcyIsZGVzY3JpcHRpb246IkxpZ2h0d2VpZ2h0IGRyb25lIHdpdGggNEsgY2FtZXJhIixwcmljZTo3NTksaWNvbk5hbWU6Imx1Y2lkZTpwbGFuZSJ9fQogICAgICAgICAgICAuc2VsZWN0YWJsZT0keyEwfQogICAgICAgICAgICAuc2hvd1F1YW50aXR5U2VsZWN0b3I9JHshMX0KICAgICAgICAgICAgQHNlbGVjdGlvbkNoYW5nZT0ke3M9PntsZXQgZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjc2VsZWN0aW9uLW91dHB1dCIpO2lmKGUpe2xldCB0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImRlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmRbc2VsZWN0YWJsZV0iKSxhPVtdO3QuZm9yRWFjaChyPT57ci5zZWxlY3RlZCYmYS5wdXNoKHIucHJvZHVjdERhdGEubmFtZSl9KSxlLnRleHRDb250ZW50PWEubGVuZ3RoPjA/YFNlbGVjdGVkOiAke2Euam9pbigiLCAiKX1gOiJObyBwcm9kdWN0cyBzZWxlY3RlZCJ9fX0KICAgICAgICAgID48L2RlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmQ+CgogICAgICAgICAgPGRlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmQKICAgICAgICAgICAgLnByb2R1Y3REYXRhPSR7e25hbWU6IkdvUHJvIEhFUk8xMiIsY2F0ZWdvcnk6IkFjdGlvbiBDYW1lcmFzIixkZXNjcmlwdGlvbjoiNS4zSyB2aWRlbyB3aXRoIEh5cGVyU21vb3RoIDYuMCIscHJpY2U6Mzk5LG9yaWdpbmFsUHJpY2U6NDQ5LGljb25OYW1lOiJsdWNpZGU6dmlkZW8ifX0KICAgICAgICAgICAgLnNlbGVjdGFibGU9JHshMH0KICAgICAgICAgICAgLnNob3dRdWFudGl0eVNlbGVjdG9yPSR7ITF9CiAgICAgICAgICAgIEBzZWxlY3Rpb25DaGFuZ2U9JHtzPT57bGV0IGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3NlbGVjdGlvbi1vdXRwdXQiKTtpZihlKXtsZXQgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJkZWVzLXNob3BwaW5nLXByb2R1Y3RjYXJkW3NlbGVjdGFibGVdIiksYT1bXTt0LmZvckVhY2gocj0+e3Iuc2VsZWN0ZWQmJmEucHVzaChyLnByb2R1Y3REYXRhLm5hbWUpfSksZS50ZXh0Q29udGVudD1hLmxlbmd0aD4wP2BTZWxlY3RlZDogJHthLmpvaW4oIiwgIil9YDoiTm8gcHJvZHVjdHMgc2VsZWN0ZWQifX19CiAgICAgICAgICA+PC9kZWVzLXNob3BwaW5nLXByb2R1Y3RjYXJkPgogICAgICAgIDwvZGl2PgogICAgICAgIAogICAgICAgIDxkaXYgY2xhc3M9InNlbGVjdGVkLXByb2R1Y3RzIiBpZD0ic2VsZWN0aW9uLW91dHB1dCIgc3R5bGU9Im1hcmdpbi10b3A6IDE2cHg7Ij4KICAgICAgICAgIE5vIHByb2R1Y3RzIHNlbGVjdGVkCiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJQcm9kdWN0IFZhcmlhdGlvbnMifSAuc3VidGl0bGU9JHsiRGlmZmVyZW50IHN0YXRlcyBhbmQgY29uZmlndXJhdGlvbnMifT4KICAgICAgICA8ZGl2IGNsYXNzPSJwcm9kdWN0LWdyaWQiPgogICAgICAgICAgPGRlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmQKICAgICAgICAgICAgLnByb2R1Y3REYXRhPSR7e25hbWU6IkxpbWl0ZWQgRWRpdGlvbiBTbmVha2VycyIsY2F0ZWdvcnk6IkZvb3R3ZWFyIixkZXNjcmlwdGlvbjoiRXhjbHVzaXZlIGNvbG9yd2F5IC0gT25seSA1MDAgcGFpcnMiLHByaWNlOjI5OSxpY29uTmFtZToibHVjaWRlOmZvb3RwcmludHMiLGluU3RvY2s6ITEsc3RvY2tUZXh0OiJTb2xkIE91dCJ9fQogICAgICAgICAgICAucXVhbnRpdHk9JHswfQogICAgICAgICAgPjwvZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZD4KCiAgICAgICAgICA8ZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZAogICAgICAgICAgICAucHJvZHVjdERhdGE9JHt7bmFtZToiTWluaW1hbGlzdCBXYWxsZXQiLHByaWNlOjM5Ljk5LGljb25OYW1lOiJsdWNpZGU6d2FsbGV0In19CiAgICAgICAgICAgIC5xdWFudGl0eT0kezF9CiAgICAgICAgICA+PC9kZWVzLXNob3BwaW5nLXByb2R1Y3RjYXJkPgoKICAgICAgICAgIDxkZWVzLXNob3BwaW5nLXByb2R1Y3RjYXJkCiAgICAgICAgICAgIC5wcm9kdWN0RGF0YT0ke3tuYW1lOiJQcmVtaXVtIENvZmZlZSBCZWFucyIsY2F0ZWdvcnk6IkZvb2QgJiBCZXZlcmFnZSIsZGVzY3JpcHRpb246IlNpbmdsZSBvcmlnaW4sIG1lZGl1bSByb2FzdCIscHJpY2U6MTguNSxpY29uTmFtZToibHVjaWRlOmNvZmZlZSIsY3VycmVuY3k6Ilx1MjBBQyJ9fQogICAgICAgICAgICAucXVhbnRpdHk9JHsyfQogICAgICAgICAgPjwvZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kaXY+CiAgPC9kZWVzLWRlbW93cmFwcGVyPgpgLCJkZW1vRnVuYyIpfSk7dmFyIGR2LFkxLFFkYSxCZXQ9ZygoKT0+e3BlKCk7WGRhKCk7cHQoKTtucigpO2R2PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxZMT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sUWRhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZCIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdO3ZhciBOPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzU2hvcHBpbmdQcm9kdWN0Y2FyZCIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBDPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6T2JqZWN0fSldLHA9W0woe3R5cGU6TnVtYmVyfSldLGM9W0woe3R5cGU6Qm9vbGVhbn0pXSx4PVtMKHt0eXBlOkJvb2xlYW59KV0seT1bTCh7dHlwZTpCb29sZWFufSldLGR2KHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicHJvZHVjdERhdGEiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+InByb2R1Y3REYXRhImluIF8sImhhcyIpLGdldDppKF89Pl8ucHJvZHVjdERhdGEsImdldCIpLHNldDppKChfLE8pPT57Xy5wcm9kdWN0RGF0YT1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LG8sbCksZHYodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJxdWFudGl0eSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4icXVhbnRpdHkiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5xdWFudGl0eSwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLnF1YW50aXR5PU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sZCx1KSxkdih0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dRdWFudGl0eVNlbGVjdG9yIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJzaG93UXVhbnRpdHlTZWxlY3RvciJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLnNob3dRdWFudGl0eVNlbGVjdG9yLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uc2hvd1F1YW50aXR5U2VsZWN0b3I9T30sInNldCIpfSxtZXRhZGF0YTpDfSxiLHYpLGR2KHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VsZWN0YWJsZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4ic2VsZWN0YWJsZSJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLnNlbGVjdGFibGUsImdldCIpLHNldDppKChfLE8pPT57Xy5zZWxlY3RhYmxlPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sbSxmKSxkdih0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlbGVjdGVkIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJzZWxlY3RlZCJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLnNlbGVjdGVkLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uc2VsZWN0ZWQ9T30sInNldCIpfSxtZXRhZGF0YTpDfSxNLHopLGR2KG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOkN9LG51bGwsdCksTj1hPWUudmFsdWUsQyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpDfSl9c3RhdGljIGRlbW89WmRhO3N0YXRpYyBkZW1vR3JvdXBzPVsiU2ltcGxlIl07I2U9WTEodGhpcyxvLHtuYW1lOiJQcm9kdWN0IE5hbWUiLHByaWNlOjB9KTtnZXQgcHJvZHVjdERhdGEoKXtyZXR1cm4gdGhpcy4jZX1zZXQgcHJvZHVjdERhdGEoQyl7dGhpcy4jZT1DfSN0PShZMSh0aGlzLGwpLFkxKHRoaXMsZCwwKSk7Z2V0IHF1YW50aXR5KCl7cmV0dXJuIHRoaXMuI3R9c2V0IHF1YW50aXR5KEMpe3RoaXMuI3Q9Q30jYT0oWTEodGhpcyx1KSxZMSh0aGlzLGIsITApKTtnZXQgc2hvd1F1YW50aXR5U2VsZWN0b3IoKXtyZXR1cm4gdGhpcy4jYX1zZXQgc2hvd1F1YW50aXR5U2VsZWN0b3IoQyl7dGhpcy4jYT1DfSNzPShZMSh0aGlzLHYpLFkxKHRoaXMsbSwhMSkpO2dldCBzZWxlY3RhYmxlKCl7cmV0dXJuIHRoaXMuI3N9c2V0IHNlbGVjdGFibGUoQyl7dGhpcy4jcz1DfSNpPShZMSh0aGlzLGYpLFkxKHRoaXMsTSwhMSkpO2dldCBzZWxlY3RlZCgpe3JldHVybiB0aGlzLiNpfXNldCBzZWxlY3RlZChDKXt0aGlzLiNpPUN9c3RhdGljIHN0eWxlcz1bSGUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgZGVlcy10aWxlIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgIGRlZXMtdGlsZTpob3Zlcjo6cGFydChvdXRlcikgewogICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItc3Ryb25nKTsKICAgICAgICBib3gtc2hhZG93OiAwIDRweCA2cHggLTFweCBoc2woMCAwJSAwJSAvIDAuMSksIDAgMnB4IDRweCAtMnB4IGhzbCgwIDAlIDAlIC8gMC4xKTsKICAgICAgfQoKICAgICAgZGVlcy10aWxlLnNlbGVjdGFibGUgewogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQoKICAgICAgZGVlcy10aWxlLnNlbGVjdGVkOjpwYXJ0KG91dGVyKSB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNy4yIDkxLjIlIDU5LjglKSIsImhzbCgyMTMuMSA5My45JSA2Ny44JSkiKX07CiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4ICR7aC5iZFRoZW1lKCJoc2woMjE3LjIgOTEuMiUgNTkuOCUgLyAwLjEpIiwiaHNsKDIxMy4xIDkzLjklIDY3LjglIC8gMC4xKSIpfTsKICAgICAgfQoKICAgICAgLnByb2R1Y3QtaW1hZ2UgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTgwcHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgNDAlIDk2LjElKSIsImhzbCgyMTUgMjAuMiUgMTYuOCUpIil9OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLnByb2R1Y3QtaW1hZ2UgaW1nIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7CiAgICAgIH0KCiAgICAgIC5wcm9kdWN0LWltYWdlIGRlZXMtaWNvbiB7CiAgICAgICAgZm9udC1zaXplOiA0OHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNSAyMC4yJSA2NS4xJSkiLCJoc2woMjE1IDIwLjIlIDM1LjElKSIpfTsKICAgICAgfQoKICAgICAgLnNlbGVjdGlvbi1jaGVja2JveCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMTJweDsKICAgICAgICByaWdodDogMTJweDsKICAgICAgICB3aWR0aDogMjBweDsKICAgICAgICBoZWlnaHQ6IDIwcHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDEwMCUpIiwiaHNsKDIxNSAzMCUgNi44JSkiKX07CiAgICAgICAgYm9yZGVyOiAycHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgyMTUgMjAuMiUgNjUuMSUpIiwiaHNsKDIxNSAyMC4yJSAzNS4xJSkiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQoKICAgICAgLnNlbGVjdGlvbi1jaGVja2JveC5jaGVja2VkIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxNy4yIDkxLjIlIDU5LjglKSIsImhzbCgyMTMuMSA5My45JSA2Ny44JSkiKX07CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNy4yIDkxLjIlIDU5LjglKSIsImhzbCgyMTMuMSA5My45JSA2Ny44JSkiKX07CiAgICAgIH0KCiAgICAgIC5zZWxlY3Rpb24tY2hlY2tib3ggZGVlcy1pY29uIHsKICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlOwogICAgICB9CgogICAgICAuc2VsZWN0aW9uLWNoZWNrYm94LmNoZWNrZWQgZGVlcy1pY29uIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAgIH0KCiAgICAgIC5wcm9kdWN0LWhlYWRlci1iYXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgICBnYXA6IDhweDsKICAgICAgfQoKICAgICAgLnByb2R1Y3QtbmFtZSB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgfQoKICAgICAgLnByb2R1Y3QtY2F0ZWdvcnkgewogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDU2LjklKSIsImhzbCgyMTUgMjAuMiUgNTUuMSUpIil9OwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAucHJvZHVjdC1ib2R5IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CgogICAgICAucHJvZHVjdC1jb250ZW50IHsKICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIGZsZXg6IDE7CiAgICAgIH0KICAgICAgCiAgICAgIC5wcm9kdWN0LWRlc2NyaXB0aW9uIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNDYuOSUpIiwiaHNsKDIxNSAyMC4yJSA2NS4xJSkiKX07CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTsKICAgICAgICBmbGV4OiAxOwogICAgICB9CiAgICAgIAogICAgICAucHJvZHVjdC1mb290ZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgIHBhZGRpbmc6IDEycHggMTZweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAucHJvZHVjdC1wcmljZSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMnB4OwogICAgICB9CgogICAgICAucHJpY2UtY3VycmVudCB7CiAgICAgICAgZm9udC1zaXplOiAyMHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgfQoKICAgICAgLnByaWNlLW9yaWdpbmFsIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNTYuOSUpIiwiaHNsKDIxNSAyMC4yJSA1NS4xJSkiKX07CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7CiAgICAgIH0KCiAgICAgIC5zdG9jay1zdGF0dXMgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA0cHg7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIG1hcmdpbi10b3A6IDhweDsKICAgICAgfQoKICAgICAgLnN0b2NrLXN0YXR1cy5pbi1zdG9jayB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMTQyLjEgNzAuNiUgNDUuMyUpIiwiaHNsKDE0Mi4xIDc2LjIlIDM2LjMlKSIpfTsKICAgICAgfQoKICAgICAgLnN0b2NrLXN0YXR1cy5vdXQtb2Ytc3RvY2sgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgNzIuMiUgNTAuNiUpIiwiaHNsKDAgNjIuOCUgMzAuNiUpIil9OwogICAgICB9CgogICAgICAuc3RvY2stc3RhdHVzIGRlZXMtaWNvbiB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtsZXR7bmFtZTpDLGNhdGVnb3J5Ol8sZGVzY3JpcHRpb246TyxwcmljZTokLG9yaWdpbmFsUHJpY2U6RSxjdXJyZW5jeTpIPSIkIixpblN0b2NrOms9ITAsc3RvY2tUZXh0OlM9az8iSW4gU3RvY2siOiJPdXQgb2YgU3RvY2siLGltYWdlVXJsOkksaWNvbk5hbWU6UD0ibHVjaWRlOnBhY2thZ2UifT10aGlzLnByb2R1Y3REYXRhLFI9aShLPT5gJHtIfSR7Sy50b0ZpeGVkKDIpfWAsImZvcm1hdFByaWNlIik7cmV0dXJuIHdgCiAgICAgIDxkZWVzLXRpbGUKICAgICAgICBjbGFzcz0iJHt0aGlzLnNlbGVjdGFibGU/InNlbGVjdGFibGUiOiIifSAke3RoaXMuc2VsZWN0ZWQ/InNlbGVjdGVkIjoiIn0iCiAgICAgICAgQGNsaWNrPSR7dGhpcy5oYW5kbGVDYXJkQ2xpY2t9CiAgICAgID4KICAgICAgICA8ZGl2IHNsb3Q9ImhlYWRlciIgY2xhc3M9InByb2R1Y3QtaGVhZGVyLWJhciI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0icHJvZHVjdC1uYW1lIj4ke0N9PC9zcGFuPgogICAgICAgICAgJHtfP3dgPHNwYW4gY2xhc3M9InByb2R1Y3QtY2F0ZWdvcnkiPiR7X308L3NwYW4+YDoiIn0KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJwcm9kdWN0LWJvZHkiPgogICAgICAgICAgPGRpdiBjbGFzcz0icHJvZHVjdC1pbWFnZSI+CiAgICAgICAgICAgICR7ST93YAogICAgICAgICAgICAgIDxpbWcgc3JjPSIke0l9IiBhbHQ9IiR7Q30iPgogICAgICAgICAgICBgOndgCiAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0ke1B9PjwvZGVlcy1pY29uPgogICAgICAgICAgICBgfQogICAgICAgICAgICAke3RoaXMuc2VsZWN0YWJsZT93YAogICAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSJzZWxlY3Rpb24tY2hlY2tib3ggJHt0aGlzLnNlbGVjdGVkPyJjaGVja2VkIjoiIn0iCiAgICAgICAgICAgICAgICBAY2xpY2s9JHtLPT57Sy5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmhhbmRsZVNlbGVjdGlvblRvZ2dsZSgpfX0KICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7Imx1Y2lkZTpjaGVjayJ9PjwvZGVlcy1pY29uPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICBgOiIifQogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9kdWN0LWNvbnRlbnQiPgogICAgICAgICAgICAke08/d2AKICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9kdWN0LWRlc2NyaXB0aW9uIj4ke099PC9kaXY+CiAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0b2NrLXN0YXR1cyAke2s/ImluLXN0b2NrIjoib3V0LW9mLXN0b2NrIn0iPgogICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHtrPyJsdWNpZGU6Y2hlY2stY2lyY2xlIjoibHVjaWRlOngtY2lyY2xlIn0+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgJHtTfQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgc2xvdD0iZm9vdGVyIiBjbGFzcz0icHJvZHVjdC1mb290ZXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0icHJvZHVjdC1wcmljZSI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1jdXJyZW50Ij4ke1IoJCl9PC9zcGFuPgogICAgICAgICAgICAke0UmJkU+JD93YAogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1vcmlnaW5hbCI+JHtSKEUpfTwvc3Bhbj4KICAgICAgICAgICAgYDoiIn0KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgJHt0aGlzLnNob3dRdWFudGl0eVNlbGVjdG9yP3dgCiAgICAgICAgICAgIDxkZWVzLWlucHV0LXF1YW50aXR5c2VsZWN0b3IKICAgICAgICAgICAgICAudmFsdWU9JHt0aGlzLnF1YW50aXR5fQogICAgICAgICAgICAgIEBjaGFuZ2VTdWJqZWN0PSR7Sz0+e3RoaXMucXVhbnRpdHk9Sy5kZXRhaWwuZ2V0VmFsdWUoKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJxdWFudGl0eUNoYW5nZSIse2RldGFpbDp7cXVhbnRpdHk6dGhpcy5xdWFudGl0eSxwcm9kdWN0RGF0YTp0aGlzLnByb2R1Y3REYXRhfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfX0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1xdWFudGl0eXNlbGVjdG9yPgogICAgICAgICAgYDoiIn0KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXRpbGU+CiAgICBgfWhhbmRsZUNhcmRDbGljaygpe3RoaXMuc2VsZWN0YWJsZSYmKHRoaXMuc2VsZWN0ZWQ9IXRoaXMuc2VsZWN0ZWQsdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgic2VsZWN0aW9uQ2hhbmdlIix7ZGV0YWlsOntzZWxlY3RlZDp0aGlzLnNlbGVjdGVkLHByb2R1Y3REYXRhOnRoaXMucHJvZHVjdERhdGF9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSkpfWhhbmRsZVNlbGVjdGlvblRvZ2dsZSgpe3RoaXMuc2VsZWN0ZWQ9IXRoaXMuc2VsZWN0ZWQsdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgic2VsZWN0aW9uQ2hhbmdlIix7ZGV0YWlsOntzZWxlY3RlZDp0aGlzLnNlbGVjdGVkLHByb2R1Y3REYXRhOnRoaXMucHJvZHVjdERhdGF9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLFkxKHRoaXMseil9c3RhdGlje1kxKGEsdCl9fTtyZXR1cm4gTj1hfSkoKX0pO3ZhciBKZGEsZTBhPWcoKCk9PntwZSgpO0JldCgpO0pkYT1pKCgpPT53YAogIDxkZWVzLWRlbW93cmFwcGVyPgogICAgPHN0eWxlPgogICAgICAke0pgCiAgICAgICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICAgIG1heC13aWR0aDogMTIwMHB4OwogICAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5zaG9wcGluZy1ncmlkIHsKICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgyODBweCwgMWZyKSk7CiAgICAgICAgICBnYXA6IDIwcHg7CiAgICAgICAgfQoKICAgICAgICAuY2FydC1zdW1tYXJ5IHsKICAgICAgICAgIG1hcmdpbi10b3A6IDI0cHg7CiAgICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgNDAlIDk2LjElKSIsImhzbCgyMTUgMjAuMiUgMTYuOCUpIil9OwogICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgyMTQuMyAzMS44JSA5MS40JSkiLCJoc2woMjE1IDIwLjIlIDIxLjglKSIpfTsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICB9CgogICAgICAgIC5jYXJ0LXN1bW1hcnktdGl0bGUgewogICAgICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDklKSIsImhzbCgwIDAlIDk1JSkiKX07CiAgICAgICAgfQoKICAgICAgICAuY2FydC1pdGVtIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgcGFkZGluZzogOHB4IDA7CiAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuMyAyNSUgMjYuNyUpIiwiaHNsKDIxNy45IDEwLjYlIDc0LjklKSIpfTsKICAgICAgICB9CgogICAgICAgIC5jYXJ0LXRvdGFsIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgcGFkZGluZy10b3A6IDE2cHg7CiAgICAgICAgICBtYXJnaW4tdG9wOiAxNnB4OwogICAgICAgICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4OS44JSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5JSkiLCJoc2woMCAwJSA5NSUpIil9OwogICAgICAgIH0KICAgICAgYH0KICAgIDwvc3R5bGU+CiAgICAKICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IkJhc2ljIFF1YW50aXR5IFNlbGVjdG9yIn0gLnN1YnRpdGxlPSR7IlNpbXBsZSBxdWFudGl0eSBpbnB1dCB3aXRoIGluY3JlbWVudC9kZWNyZW1lbnQgYnV0dG9ucyJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1xdWFudGl0eXNlbGVjdG9yCiAgICAgICAgICAgIC5sYWJlbD0keyJRdWFudGl0eSJ9CiAgICAgICAgICAgIC5pbmZvVGV4dD0keyJTZWxlY3QgdGhlIGRlc2lyZWQgcXVhbnRpdHkifQogICAgICAgICAgICAuZGVzY3JpcHRpb249JHsiTWluaW11bSBvcmRlciBxdWFudGl0eSBpcyAxIGl0ZW0ifQogICAgICAgICAgICAudmFsdWU9JHsxfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1xdWFudGl0eXNlbGVjdG9yPgoKICAgICAgICAgIDxkZWVzLWlucHV0LXF1YW50aXR5c2VsZWN0b3IKICAgICAgICAgICAgLmxhYmVsPSR7Ikl0ZW1zIGluIENhcnQifQogICAgICAgICAgICAuaW5mb1RleHQ9JHsiQWRqdXN0IHRoZSBxdWFudGl0eSBvZiBpdGVtcyJ9CiAgICAgICAgICAgIC52YWx1ZT0kezN9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXF1YW50aXR5c2VsZWN0b3I+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJTaG9wcGluZyBDYXJ0In0gLnN1YnRpdGxlPSR7Ik1vZGVybiBlLWNvbW1lcmNlIHByb2R1Y3QgY2FyZHMgd2l0aCBpbnRlcmFjdGl2ZSBxdWFudGl0eSBzZWxlY3RvcnMifSAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57bGV0IGU9aSgoKT0+e2xldCB0PXMucXVlcnlTZWxlY3RvcigiI2hlYWRwaG9uZXMtcXR5IiksYT1zLnF1ZXJ5U2VsZWN0b3IoIiNtb3VzZS1xdHkiKSxyPXMucXVlcnlTZWxlY3RvcigiI2tleWJvYXJkLXF0eSIpLG49dD8ucXVhbnRpdHl8fDAsbz1hPy5xdWFudGl0eXx8MCxsPXI/LnF1YW50aXR5fHwwLHA9MzQ5Ljk5Km4sZD05OS45OSpvLHU9NzkuOTkqbCxjPXArZCt1LGI9cy5xdWVyeVNlbGVjdG9yKCIjY2FydC1zdW1tYXJ5LWNvbnRlbnQiKTtiJiYoYi5pbm5lckhUTUw9YAogICAgICAgICAgICAgICR7bj4wP2A8ZGl2IGNsYXNzPSJjYXJ0LWl0ZW0iPgogICAgICAgICAgICAgICAgPHNwYW4+U29ueSBXSC0xMDAwWE01ICgke259KTwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuPiQke3AudG9GaXhlZCgyKX08L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+YDoiIn0KICAgICAgICAgICAgICAke28+MD9gPGRpdiBjbGFzcz0iY2FydC1pdGVtIj4KICAgICAgICAgICAgICAgIDxzcGFuPkxvZ2l0ZWNoIE1YIE1hc3RlciAzUyAoJHtvfSk8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3Bhbj4kJHtkLnRvRml4ZWQoMil9PC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PmA6IiJ9CiAgICAgICAgICAgICAgJHtsPjA/YDxkaXYgY2xhc3M9ImNhcnQtaXRlbSI+CiAgICAgICAgICAgICAgICA8c3Bhbj5LZXljaHJvbiBLMiAoJHtsfSk8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3Bhbj4kJHt1LnRvRml4ZWQoMil9PC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PmA6IiJ9CiAgICAgICAgICAgICAgJHtjPT09MD8nPGRpdiBjbGFzcz0iY2FydC1pdGVtIiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyBjb2xvcjogIzk5OTsiPllvdXIgY2FydCBpcyBlbXB0eTwvZGl2Pic6IiJ9CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FydC10b3RhbCI+CiAgICAgICAgICAgICAgICA8c3Bhbj5Ub3RhbDwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuPiQke2MudG9GaXhlZCgyKX08L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGApfSwidXBkYXRlQ2FydFN1bW1hcnkiKTtzZXRUaW1lb3V0KGUsMTAwKSxzLnF1ZXJ5U2VsZWN0b3JBbGwoImRlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmQiKS5mb3JFYWNoKHQ9Pnt0LmFkZEV2ZW50TGlzdGVuZXIoInF1YW50aXR5Q2hhbmdlIixlKX0pfX0+CiAgICAgICAgPGRpdiBjbGFzcz0ic2hvcHBpbmctZ3JpZCI+CiAgICAgICAgICA8ZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZAogICAgICAgICAgICBpZD0iaGVhZHBob25lcy1xdHkiCiAgICAgICAgICAgIC5wcm9kdWN0RGF0YT0ke3tuYW1lOiJTb255IFdILTEwMDBYTTUgV2lyZWxlc3MgSGVhZHBob25lcyIsY2F0ZWdvcnk6IkF1ZGlvIixkZXNjcmlwdGlvbjoiSW5kdXN0cnktbGVhZGluZyBub2lzZSBjYW5jZWxpbmcgd2l0aCBBdXRvIE5DIE9wdGltaXplciIscHJpY2U6MzQ5Ljk5LG9yaWdpbmFsUHJpY2U6Mzk5Ljk5LGljb25OYW1lOiJsdWNpZGU6aGVhZHBob25lcyJ9fQogICAgICAgICAgICAucXVhbnRpdHk9JHsxfQogICAgICAgICAgPjwvZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZD4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmQKICAgICAgICAgICAgaWQ9Im1vdXNlLXF0eSIKICAgICAgICAgICAgLnByb2R1Y3REYXRhPSR7e25hbWU6IkxvZ2l0ZWNoIE1YIE1hc3RlciAzUyIsY2F0ZWdvcnk6IkFjY2Vzc29yaWVzIixkZXNjcmlwdGlvbjoiUGVyZm9ybWFuY2Ugd2lyZWxlc3MgbW91c2Ugd2l0aCB1bHRyYS1mYXN0IHNjcm9sbGluZyIscHJpY2U6OTkuOTksaWNvbk5hbWU6Imx1Y2lkZTptb3VzZS1wb2ludGVyIn19CiAgICAgICAgICAgIC5xdWFudGl0eT0kezJ9CiAgICAgICAgICA+PC9kZWVzLXNob3BwaW5nLXByb2R1Y3RjYXJkPgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZAogICAgICAgICAgICBpZD0ia2V5Ym9hcmQtcXR5IgogICAgICAgICAgICAucHJvZHVjdERhdGE9JHt7bmFtZToiS2V5Y2hyb24gSzIgV2lyZWxlc3MgTWVjaGFuaWNhbCBLZXlib2FyZCIsY2F0ZWdvcnk6IktleWJvYXJkcyIsZGVzY3JpcHRpb246IkNvbXBhY3QgNzUlIGxheW91dCB3aXRoIGhvdC1zd2FwcGFibGUgc3dpdGNoZXMiLHByaWNlOjc5Ljk5LG9yaWdpbmFsUHJpY2U6OTQuOTksaWNvbk5hbWU6Imx1Y2lkZTprZXlib2FyZCJ9fQogICAgICAgICAgICAucXVhbnRpdHk9JHsxfQogICAgICAgICAgPjwvZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZD4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iY2FydC1zdW1tYXJ5Ij4KICAgICAgICAgIDxoMyBjbGFzcz0iY2FydC1zdW1tYXJ5LXRpdGxlIj5PcmRlciBTdW1tYXJ5PC9oMz4KICAgICAgICAgIDxkaXYgaWQ9ImNhcnQtc3VtbWFyeS1jb250ZW50Ij4KICAgICAgICAgICAgPCEtLSBDb250ZW50IHdpbGwgYmUgZHluYW1pY2FsbHkgdXBkYXRlZCAtLT4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICAgIAogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiUmVxdWlyZWQgJiBEaXNhYmxlZCBTdGF0ZXMifSAuc3VidGl0bGU9JHsiRGlmZmVyZW50IHN0YXRlcyBmb3IgdmFsaWRhdGlvbiBhbmQgcmVzdHJpY3Rpb25zIn0+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkZWVzLWlucHV0LXF1YW50aXR5c2VsZWN0b3IKICAgICAgICAgICAgLmxhYmVsPSR7Ik51bWJlciBvZiBMaWNlbnNlcyJ9CiAgICAgICAgICAgIC5pbmZvVGV4dD0keyJTZWxlY3QgaG93IG1hbnkgbGljZW5zZXMgeW91IG5lZWQifQogICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0KICAgICAgICAgICAgLnZhbHVlPSR7MX0KICAgICAgICAgID48L2RlZXMtaW5wdXQtcXVhbnRpdHlzZWxlY3Rvcj4KCiAgICAgICAgICA8ZGVlcy1pbnB1dC1xdWFudGl0eXNlbGVjdG9yCiAgICAgICAgICAgIC5sYWJlbD0keyJGaXhlZCBRdWFudGl0eSJ9CiAgICAgICAgICAgIC5pbmZvVGV4dD0keyJUaGlzIHF1YW50aXR5IGNhbm5vdCBiZSBjaGFuZ2VkIn0KICAgICAgICAgICAgLmRpc2FibGVkPSR7ITB9CiAgICAgICAgICAgIC52YWx1ZT0kezV9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXF1YW50aXR5c2VsZWN0b3I+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJPcmRlciBGb3JtIn0gLnN1YnRpdGxlPSR7IkNvbXBsZXRlIG9yZGVyIGZvcm0gd2l0aCBxdWFudGl0eSBzZWxlY3Rpb24ifT4KICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dCAubGFiZWw9JHsiQ3VzdG9tZXIgTmFtZSJ9IC5yZXF1aXJlZD0keyEwfT48L2RlZXMtaW5wdXQtdGV4dD4KICAgICAgICAgIDxkZWVzLWlucHV0LWRyb3Bkb3duCiAgICAgICAgICAgIC5sYWJlbD0keyJQcm9kdWN0In0KICAgICAgICAgICAgLm9wdGlvbnM9JHtbIkJhc2ljIFBsYW4iLCJQcm8gUGxhbiIsIkVudGVycHJpc2UgUGxhbiJdfQogICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0KICAgICAgICAgID48L2RlZXMtaW5wdXQtZHJvcGRvd24+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1xdWFudGl0eXNlbGVjdG9yCiAgICAgICAgICAgIC5sYWJlbD0keyJRdWFudGl0eSJ9CiAgICAgICAgICAgIC5pbmZvVGV4dD0keyJOdW1iZXIgb2YgbGljZW5zZXMifQogICAgICAgICAgICAudmFsdWU9JHsxfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1xdWFudGl0eXNlbGVjdG9yPgogICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dAogICAgICAgICAgICAubGFiZWw9JHsiU3BlY2lhbCBJbnN0cnVjdGlvbnMifQogICAgICAgICAgICAuaW5wdXRUeXBlPSR7InRleHRhcmVhIn0KICAgICAgICAgID48L2RlZXMtaW5wdXQtdGV4dD4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kaXY+CiAgPC9kZWVzLWRlbW93cmFwcGVyPgpgLCJkZW1vRnVuYyIpfSk7dmFyIHQwYSxIZXQsbW5lLHFldD1nKCgpPT57cGUoKTtrdCgpO3ppKCk7ZTBhKCk7cHQoKTt0MGE9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LEhldD1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sbW5lPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1pbnB1dC1xdWFudGl0eXNlbGVjdG9yIildLGUsdD1bXSxhLHI9T3QsbixvPVtdLGw9W107dmFyIHA9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNJbnB1dFF1YW50aXR5U2VsZWN0b3IiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgZD10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOk51bWJlcn0pXSx0MGEodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2YWx1ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh1PT4idmFsdWUiaW4gdSwiaGFzIiksZ2V0OmkodT0+dS52YWx1ZSwiZ2V0Iiksc2V0OmkoKHUsYyk9Pnt1LnZhbHVlPWN9LCJzZXQiKX0sbWV0YWRhdGE6ZH0sbyxsKSx0MGEobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6ZH0sbnVsbCx0KSxwPWE9ZS52YWx1ZSxkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmR9KX1zdGF0aWMgZGVtbz1KZGE7c3RhdGljIGRlbW9Hcm91cHM9WyJJbnB1dCJdOyNlPUhldCh0aGlzLG8sMSk7Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHZhbHVlKGQpe3RoaXMuI2U9ZH1zdGF0aWMgc3R5bGVzPVtIZSwuLi5PdC5iYXNlU3R5bGVzLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICAgICAgOmhvc3QgewogICAgICAgICAgd2lkdGg6IGF1dG87CiAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICB9CgogICAgICAgIC5xdWFudGl0eS1jb250YWluZXIgewogICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICAgIGhlaWdodDogNDBweDsKICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgICBtaW4td2lkdGg6IDEyMHB4OwogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5JSkiLCJoc2woMCAwJSA5NSUpIil9OwogICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgwIDAlIDg5LjglKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5xdWFudGl0eS1jb250YWluZXIuZGlzYWJsZWQgewogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk1LjElKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDg5LjglKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIH0KCiAgICAgICAgLnF1YW50aXR5LWNvbnRhaW5lcjpob3Zlcjpub3QoLmRpc2FibGVkKSB7CiAgICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA3OS44JSkiLCJoc2woMCAwJSAyMC45JSkiKX07CiAgICAgICAgfQoKICAgICAgICAucXVhbnRpdHktY29udGFpbmVyOmZvY3VzLXdpdGhpbiB7CiAgICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUpIiwiaHNsKDIxNy4yIDkxLjIlIDU5LjglKSIpfTsKICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDUxLjIlIC8gMC4xKSIsImhzbCgyMTcuMiA5MS4yJSA1OS44JSAvIDAuMSkiKX07CiAgICAgICAgfQoKICAgICAgICAuc2VsZWN0b3IgewogICAgICAgICAgZmxleDogMCAwIDQwcHg7CiAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNTYuOSUpIiwiaHNsKDIxNSAyMC4yJSA1NS4xJSkiKX07CiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgfQoKICAgICAgICAuc2VsZWN0b3I6aG92ZXIgewogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk1LjElKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOSUpIiwiaHNsKDAgMCUgOTUlKSIpfTsKICAgICAgICB9CgogICAgICAgIC5zZWxlY3RvcjphY3RpdmUgewogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDkxJSkiLCJoc2woMCAwJSAxMSUpIil9OwogICAgICAgIH0KCiAgICAgICAgLnNlbGVjdG9yLm1pbnVzIHsKICAgICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4OS44JSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgfQoKICAgICAgICAuc2VsZWN0b3IucGx1cyB7CiAgICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4OS44JSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgfQoKICAgICAgICAucXVhbnRpdHkgewogICAgICAgICAgZmxleDogMTsKICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zOwogICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAwNmVtOwogICAgICAgIH0KCiAgICAgICAgLyogS2V5Ym9hcmQgbmF2aWdhdGlvbiBmb2N1cyBzdHlsZXMgKi8KICAgICAgICAuc2VsZWN0b3I6Zm9jdXMgewogICAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDQwJSA5Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDE2LjglKSIpfTsKICAgICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgfQoKICAgICAgICAvKiBNaW4gdmFsdWUgc3RhdGUgKi8KICAgICAgICAucXVhbnRpdHktY29udGFpbmVyW2RhdGEtbWluPSJ0cnVlIl0gLnNlbGVjdG9yLm1pbnVzIHsKICAgICAgICAgIG9wYWNpdHk6IDAuMzsKICAgICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAgICAgfQoKICAgICAgICAucXVhbnRpdHktY29udGFpbmVyW2RhdGEtbWluPSJ0cnVlIl0gLnNlbGVjdG9yLm1pbnVzOmhvdmVyIHsKICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNTYuOSUpIiwiaHNsKDIxNSAyMC4yJSA1NS4xJSkiKX07CiAgICAgICAgfQoKICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJpbnB1dC13cmFwcGVyIj4KICAgICAgICAke3RoaXMubGFiZWw/d2A8ZGVlcy1sYWJlbCAubGFiZWw9JHt0aGlzLmxhYmVsfSAuaW5mb1RleHQ9JHt0aGlzLmluZm9UZXh0fSAucmVxdWlyZWQ9JHt0aGlzLnJlcXVpcmVkfT48L2RlZXMtbGFiZWw+YDoiIn0KICAgICAgICA8ZGl2IAogICAgICAgICAgY2xhc3M9InF1YW50aXR5LWNvbnRhaW5lciAke3RoaXMuZGlzYWJsZWQ/ImRpc2FibGVkIjoiIn0iCiAgICAgICAgICBkYXRhLW1pbj0iJHt0aGlzLnZhbHVlPD0wfSIKICAgICAgICA+CiAgICAgICAgICA8ZGl2IAogICAgICAgICAgICBjbGFzcz0ic2VsZWN0b3IgbWludXMiIAogICAgICAgICAgICBAY2xpY2s9IiR7KCk9Pnt0aGlzLmRlY3JlYXNlKCl9fSIKICAgICAgICAgICAgdGFiaW5kZXg9IiR7dGhpcy5kaXNhYmxlZD8iLTEiOiIwIn0iCiAgICAgICAgICAgIEBrZXlkb3duPSIke2Q9PnsoZC5rZXk9PT0iRW50ZXIifHxkLmtleT09PSIgIikmJihkLnByZXZlbnREZWZhdWx0KCksdGhpcy5kZWNyZWFzZSgpKX19IgogICAgICAgICAgICByb2xlPSJidXR0b24iCiAgICAgICAgICAgIGFyaWEtbGFiZWw9IkRlY3JlYXNlIHF1YW50aXR5IgogICAgICAgICAgPuKIkjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icXVhbnRpdHkiIGFyaWEtbGl2ZT0icG9saXRlIiBhcmlhLWF0b21pYz0idHJ1ZSI+JHt0aGlzLnZhbHVlfTwvZGl2PgogICAgICAgICAgPGRpdiAKICAgICAgICAgICAgY2xhc3M9InNlbGVjdG9yIHBsdXMiIAogICAgICAgICAgICBAY2xpY2s9IiR7KCk9Pnt0aGlzLmluY3JlYXNlKCl9fSIKICAgICAgICAgICAgdGFiaW5kZXg9IiR7dGhpcy5kaXNhYmxlZD8iLTEiOiIwIn0iCiAgICAgICAgICAgIEBrZXlkb3duPSIke2Q9PnsoZC5rZXk9PT0iRW50ZXIifHxkLmtleT09PSIgIikmJihkLnByZXZlbnREZWZhdWx0KCksdGhpcy5pbmNyZWFzZSgpKX19IgogICAgICAgICAgICByb2xlPSJidXR0b24iCiAgICAgICAgICAgIGFyaWEtbGFiZWw9IkluY3JlYXNlIHF1YW50aXR5IgogICAgICAgICAgPis8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICAke3RoaXMucmVuZGVyRGVzY3JpcHRpb24oKX0KICAgICAgPC9kaXY+CiAgICBgfWluY3JlYXNlKCl7dGhpcy5kaXNhYmxlZHx8KHRoaXMudmFsdWUrKyx0aGlzLmNoYW5nZVN1YmplY3QubmV4dCh0aGlzKSl9ZGVjcmVhc2UoKXshdGhpcy5kaXNhYmxlZCYmdGhpcy52YWx1ZT4wJiYodGhpcy52YWx1ZS0tLHRoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMpKX1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLnZhbHVlfXNldFZhbHVlKGQpe3RoaXMudmFsdWU9ZH1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksSGV0KHRoaXMsbCl9c3RhdGlje0hldChhLHQpfX07cmV0dXJuIHA9YX0pKCl9KTt2YXIgYTBhLHMwYT1nKCgpPT57cGUoKTtJdCgpO2ZvKCk7YTBhPWkoKCk9PndgCiAgPGRlZXMtZGVtb3dyYXBwZXI+CiAgICA8c3R5bGU+CiAgICAgICR7SmAKICAgICAgICAuZGVtby1jb250YWluZXIgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICBnYXA6IDI0cHg7CiAgICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHg7CiAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZGVlcy1wYW5lbCB7CiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICBkZWVzLXBhbmVsOmxhc3QtY2hpbGQgewogICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmRlbW8tZ3JpZCB7CiAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgzMDBweCwgMWZyKSk7CiAgICAgICAgICBnYXA6IDI0cHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5yZXN1bHQtZGlzcGxheSB7CiAgICAgICAgICBtYXJnaW4tdG9wOiAxNnB4OwogICAgICAgICAgcGFkZGluZzogMTJweDsKICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMTA1LCAyNDIsIDAuMSk7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogICAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIH0KICAgICAgYH0KICAgIDwvc3R5bGU+CiAgICAKICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjEuIEJhc2ljIFJhZGlvIEdyb3VwcyJ9IC5zdWJ0aXRsZT0keyJTaW1wbGUgc3RyaW5nIG9wdGlvbnMgZm9yIGNvbW1vbiB1c2UgY2FzZXMifT4KICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRpdiBjbGFzcz0iZGVtby1ncmlkIj4KICAgICAgICAgICAgPGRlZXMtaW5wdXQtcmFkaW9ncm91cAogICAgICAgICAgICAgIC5sYWJlbD0keyJTdWJzY3JpcHRpb24gUGxhbiJ9CiAgICAgICAgICAgICAgLm9wdGlvbnM9JHtbIkJhc2ljIC0gJDkvbW9udGgiLCJQcm8gLSAkMjkvbW9udGgiLCJFbnRlcnByaXNlIC0gJDk5L21vbnRoIl19CiAgICAgICAgICAgICAgLnNlbGVjdGVkT3B0aW9uPSR7IlBybyAtICQyOS9tb250aCJ9CiAgICAgICAgICAgICAgLmRlc2NyaXB0aW9uPSR7IkNob29zZSB5b3VyIHN1YnNjcmlwdGlvbiB0aWVyIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1yYWRpb2dyb3VwPgoKICAgICAgICAgICAgPGRlZXMtaW5wdXQtcmFkaW9ncm91cAogICAgICAgICAgICAgIC5sYWJlbD0keyJQcmlvcml0eSBMZXZlbCJ9CiAgICAgICAgICAgICAgLm9wdGlvbnM9JHtbIkhpZ2giLCJNZWRpdW0iLCJMb3ciXX0KICAgICAgICAgICAgICAuc2VsZWN0ZWRPcHRpb249JHsiTWVkaXVtIn0KICAgICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1yYWRpb2dyb3VwPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyIyLiBIb3Jpem9udGFsIExheW91dCJ9IC5zdWJ0aXRsZT0keyJSYWRpbyBncm91cHMgd2l0aCBob3Jpem9udGFsIGFycmFuZ2VtZW50In0+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkZWVzLWlucHV0LXJhZGlvZ3JvdXAKICAgICAgICAgICAgLmxhYmVsPSR7IkRvIHlvdSBhZ3JlZSB3aXRoIHRoZSB0ZXJtcz8ifQogICAgICAgICAgICAub3B0aW9ucz0ke1siWWVzIiwiTm8iLCJNYXliZSJdfQogICAgICAgICAgICAuZGlyZWN0aW9uPSR7Imhvcml6b250YWwifQogICAgICAgICAgICAuc2VsZWN0ZWRPcHRpb249JHsiWWVzIn0KICAgICAgICAgID48L2RlZXMtaW5wdXQtcmFkaW9ncm91cD4KCiAgICAgICAgICA8ZGVlcy1pbnB1dC1yYWRpb2dyb3VwCiAgICAgICAgICAgIC5sYWJlbD0keyJFeHBlcmllbmNlIExldmVsIn0KICAgICAgICAgICAgLm9wdGlvbnM9JHtbIkJlZ2lubmVyIiwiSW50ZXJtZWRpYXRlIiwiRXhwZXJ0Il19CiAgICAgICAgICAgIC5kaXJlY3Rpb249JHsiaG9yaXpvbnRhbCJ9CiAgICAgICAgICAgIC5zZWxlY3RlZE9wdGlvbj0keyJJbnRlcm1lZGlhdGUifQogICAgICAgICAgICAuZGVzY3JpcHRpb249JHsiU2VsZWN0IHlvdXIgZXhwZXJpZW5jZSBsZXZlbCB3aXRoIHdlYiBkZXZlbG9wbWVudCJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXJhZGlvZ3JvdXA+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyIzLiBBZHZhbmNlZCBPcHRpb25zIn0gLnN1YnRpdGxlPSR7IlVzaW5nIG9iamVjdCBmb3JtYXQgd2l0aCBrZXlzIGFuZCBwYXlsb2FkcyJ9PgogICAgICAgIDxkZWVzLWlucHV0LXJhZGlvZ3JvdXAKICAgICAgICAgIGlkPSJhZHZhbmNlZC1yYWRpbyIKICAgICAgICAgIC5sYWJlbD0keyJTZWxlY3QgUmVnaW9uIn0KICAgICAgICAgIC5vcHRpb25zPSR7W3tvcHRpb246IlVuaXRlZCBTdGF0ZXMgKFVTIEVhc3QpIixrZXk6InVzLWVhc3QiLHBheWxvYWQ6e3JlZ2lvbjoidXMtZWFzdC0xIixsYXRlbmN5OjIwfX0se29wdGlvbjoiRXVyb3BlIChGcmFua2Z1cnQpIixrZXk6ImV1LWNlbnRyYWwiLHBheWxvYWQ6e3JlZ2lvbjoiZXUtY2VudHJhbC0xIixsYXRlbmN5OjUwfX0se29wdGlvbjoiQXNpYSBQYWNpZmljIChTaW5nYXBvcmUpIixrZXk6ImFwLXNvdXRoZWFzdCIscGF5bG9hZDp7cmVnaW9uOiJhcC1zb3V0aGVhc3QtMSIsbGF0ZW5jeToxMjB9fV19CiAgICAgICAgICAuc2VsZWN0ZWRPcHRpb249JHsiZXUtY2VudHJhbCJ9CiAgICAgICAgICAuZGVzY3JpcHRpb249JHsiQ2hvb3NlIHRoZSBjbG9zZXN0IHJlZ2lvbiBmb3Igb3B0aW1hbCBwZXJmb3JtYW5jZSJ9CiAgICAgICAgICBAY2hhbmdlPSR7cz0+e2xldCBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNyZWdpb24tcmVzdWx0Iik7ZSYmKGUudGV4dENvbnRlbnQ9IlNlbGVjdGVkOiAiK0pTT04uc3RyaW5naWZ5KHMuZGV0YWlsLnZhbHVlLG51bGwsMikpfX0KICAgICAgICA+PC9kZWVzLWlucHV0LXJhZGlvZ3JvdXA+CiAgICAgICAgPGRpdiBpZD0icmVnaW9uLXJlc3VsdCIgY2xhc3M9InJlc3VsdC1kaXNwbGF5Ij5TZWxlY3RlZDogeyAicmVnaW9uIjogImV1LWNlbnRyYWwtMSIsICJsYXRlbmN5IjogNTAgfTwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICAgIAogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiNC4gU3VydmV5IEV4YW1wbGUifSAuc3VidGl0bGU9JHsiTXVsdGlwbGUgcmFkaW8gZ3JvdXBzIGZvciBzdXJ2ZXlzIGFuZCBmb3JtcyJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkZW1vLWdyaWQiPgogICAgICAgICAgICA8ZGVlcy1pbnB1dC1yYWRpb2dyb3VwCiAgICAgICAgICAgICAgLmxhYmVsPSR7IkhvdyBzYXRpc2ZpZWQgYXJlIHlvdT8ifQogICAgICAgICAgICAgIC5vcHRpb25zPSR7WyJWZXJ5IFNhdGlzZmllZCIsIlNhdGlzZmllZCIsIk5ldXRyYWwiLCJEaXNzYXRpc2ZpZWQiLCJWZXJ5IERpc3NhdGlzZmllZCJdfQogICAgICAgICAgICAgIC5zZWxlY3RlZE9wdGlvbj0keyJTYXRpc2ZpZWQifQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LXJhZGlvZ3JvdXA+CgogICAgICAgICAgICA8ZGVlcy1pbnB1dC1yYWRpb2dyb3VwCiAgICAgICAgICAgICAgLmxhYmVsPSR7IldvdWxkIHlvdSByZWNvbW1lbmQgdXM/In0KICAgICAgICAgICAgICAub3B0aW9ucz0ke1siRGVmaW5pdGVseSIsIlByb2JhYmx5IiwiTm90IFN1cmUiLCJQcm9iYWJseSBOb3QiLCJEZWZpbml0ZWx5IE5vdCJdfQogICAgICAgICAgICAgIC5zZWxlY3RlZE9wdGlvbj0keyJQcm9iYWJseSJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtcmFkaW9ncm91cD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICAgIAogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiNS4gU3RhdGVzICYgVmFsaWRhdGlvbiJ9IC5zdWJ0aXRsZT0keyJEaWZmZXJlbnQgc3RhdGVzIGFuZCB2YWxpZGF0aW9uIGV4YW1wbGVzIn0+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkaXYgY2xhc3M9ImRlbW8tZ3JpZCI+CiAgICAgICAgICAgIDxkZWVzLWlucHV0LXJhZGlvZ3JvdXAKICAgICAgICAgICAgICAubGFiZWw9JHsiUmVxdWlyZWQgU2VsZWN0aW9uIn0KICAgICAgICAgICAgICAub3B0aW9ucz0ke1siT3B0aW9uIEEiLCJPcHRpb24gQiIsIk9wdGlvbiBDIl19CiAgICAgICAgICAgICAgLnJlcXVpcmVkPSR7ITB9CiAgICAgICAgICAgICAgLmRlc2NyaXB0aW9uPSR7IlRoaXMgZmllbGQgaXMgcmVxdWlyZWQifQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LXJhZGlvZ3JvdXA+CgogICAgICAgICAgICA8ZGVlcy1pbnB1dC1yYWRpb2dyb3VwCiAgICAgICAgICAgICAgLmxhYmVsPSR7IkRpc2FibGVkIFN0YXRlIn0KICAgICAgICAgICAgICAub3B0aW9ucz0ke1siRGlzYWJsZWQgT3B0aW9uIDEiLCJEaXNhYmxlZCBPcHRpb24gMiIsIkRpc2FibGVkIE9wdGlvbiAzIl19CiAgICAgICAgICAgICAgLnNlbGVjdGVkT3B0aW9uPSR7IkRpc2FibGVkIE9wdGlvbiAyIn0KICAgICAgICAgICAgICAuZGlzYWJsZWQ9JHshMH0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1yYWRpb2dyb3VwPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyI2LiBTZXR0aW5ncyBFeGFtcGxlIn0gLnN1YnRpdGxlPSR7IkNvbW1vbiBwYXR0ZXJucyBpbiBhcHBsaWNhdGlvbiBzZXR0aW5ncyJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1yYWRpb2dyb3VwCiAgICAgICAgICAgIC5sYWJlbD0keyJUaGVtZSBQcmVmZXJlbmNlIn0KICAgICAgICAgICAgLm9wdGlvbnM9JHtbe29wdGlvbjoiTGlnaHQgVGhlbWUiLGtleToibGlnaHQiLHBheWxvYWQ6ImxpZ2h0In0se29wdGlvbjoiRGFyayBUaGVtZSIsa2V5OiJkYXJrIixwYXlsb2FkOiJkYXJrIn0se29wdGlvbjoiU3lzdGVtIERlZmF1bHQiLGtleToic3lzdGVtIixwYXlsb2FkOiJhdXRvIn1dfQogICAgICAgICAgICAuc2VsZWN0ZWRPcHRpb249JHsiZGFyayJ9CiAgICAgICAgICAgIC5kZXNjcmlwdGlvbj0keyJDaG9vc2UgaG93IHRoZSBhcHBsaWNhdGlvbiBzaG91bGQgYXBwZWFyIn0KICAgICAgICAgID48L2RlZXMtaW5wdXQtcmFkaW9ncm91cD4KCiAgICAgICAgICA8ZGVlcy1pbnB1dC1yYWRpb2dyb3VwCiAgICAgICAgICAgIC5sYWJlbD0keyJOb3RpZmljYXRpb24gRnJlcXVlbmN5In0KICAgICAgICAgICAgLm9wdGlvbnM9JHtbIkFsbCBOb3RpZmljYXRpb25zIiwiSW1wb3J0YW50IE9ubHkiLCJOb25lIl19CiAgICAgICAgICAgIC5zZWxlY3RlZE9wdGlvbj0keyJJbXBvcnRhbnQgT25seSJ9CiAgICAgICAgICAgIC5kZXNjcmlwdGlvbj0keyJDb250cm9sIGhvdyBvZnRlbiB5b3UgcmVjZWl2ZSBub3RpZmljYXRpb25zIn0KICAgICAgICAgID48L2RlZXMtaW5wdXQtcmFkaW9ncm91cD4KCiAgICAgICAgICA8ZGVlcy1pbnB1dC1yYWRpb2dyb3VwCiAgICAgICAgICAgIC5sYWJlbD0keyJMYW5ndWFnZSJ9CiAgICAgICAgICAgIC5vcHRpb25zPSR7WyJFbmdsaXNoIiwiR2VybWFuIiwiRnJlbmNoIiwiU3BhbmlzaCIsIkphcGFuZXNlIl19CiAgICAgICAgICAgIC5zZWxlY3RlZE9wdGlvbj0keyJFbmdsaXNoIn0KICAgICAgICAgICAgLmRpcmVjdGlvbj0keyJob3Jpem9udGFsIn0KICAgICAgICAgID48L2RlZXMtaW5wdXQtcmFkaW9ncm91cD4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjcuIEZvcm0gSW50ZWdyYXRpb24ifSAuc3VidGl0bGU9JHsiV29ya3Mgc2VhbWxlc3NseSB3aXRoIGRlZXMtZm9ybSJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0CiAgICAgICAgICAgIC5sYWJlbD0keyJQcm9kdWN0IE5hbWUifQogICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0KICAgICAgICAgICAgLmtleT0keyJwcm9kdWN0TmFtZSJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWlucHV0LXJhZGlvZ3JvdXAKICAgICAgICAgICAgLmxhYmVsPSR7IlByb2R1Y3QgQ2F0ZWdvcnkifQogICAgICAgICAgICAub3B0aW9ucz0ke1siRWxlY3Ryb25pY3MiLCJDbG90aGluZyIsIkJvb2tzIiwiSG9tZSAmIEdhcmRlbiIsIlNwb3J0cyJdfQogICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0KICAgICAgICAgICAgLmtleT0keyJjYXRlZ29yeSJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXJhZGlvZ3JvdXA+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWlucHV0LXJhZGlvZ3JvdXAKICAgICAgICAgICAgLmxhYmVsPSR7IkNvbmRpdGlvbiJ9CiAgICAgICAgICAgIC5vcHRpb25zPSR7WyJOZXciLCJMaWtlIE5ldyIsIkdvb2QiLCJGYWlyIiwiUG9vciJdfQogICAgICAgICAgICAuZGlyZWN0aW9uPSR7Imhvcml6b250YWwifQogICAgICAgICAgICAua2V5PSR7ImNvbmRpdGlvbiJ9CiAgICAgICAgICAgIC5zZWxlY3RlZE9wdGlvbj0keyJOZXcifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1yYWRpb2dyb3VwPgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1pbnB1dC1yYWRpb2dyb3VwCiAgICAgICAgICAgIC5sYWJlbD0keyJTaGlwcGluZyBTcGVlZCJ9CiAgICAgICAgICAgIC5vcHRpb25zPSR7W3tvcHRpb246IlN0YW5kYXJkICg1LTcgZGF5cykiLGtleToic3RhbmRhcmQiLHBheWxvYWQ6e2RheXM6NyxwcmljZTowfX0se29wdGlvbjoiRXhwcmVzcyAoMi0zIGRheXMpIixrZXk6ImV4cHJlc3MiLHBheWxvYWQ6e2RheXM6MyxwcmljZToxMH19LHtvcHRpb246Ik92ZXJuaWdodCIsa2V5OiJvdmVybmlnaHQiLHBheWxvYWQ6e2RheXM6MSxwcmljZToyNX19XX0KICAgICAgICAgICAgLnNlbGVjdGVkT3B0aW9uPSR7InN0YW5kYXJkIn0KICAgICAgICAgICAgLmtleT0keyJzaGlwcGluZyJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXJhZGlvZ3JvdXA+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWZvcm0tc3VibWl0IC50ZXh0PSR7IlN1Ym1pdCBQcm9kdWN0In0+PC9kZWVzLWZvcm0tc3VibWl0PgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2Rpdj4KICA8L2RlZXMtZGVtb3dyYXBwZXI+CmAsImRlbW9GdW5jIil9KTt2YXIgVFosdHUsZ25lLGJuZT1nKCgpPT57cGUoKTt6aSgpO3MwYSgpO3B0KCk7VFo9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LHR1PWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxnbmU9KCgpPT57bGV0IHM9W25lKCJkZWVzLWlucHV0LXJhZGlvZ3JvdXAiKV0sZSx0PVtdLGEscj1PdCxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXTt2YXIgeT1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0lucHV0UmFkaW9ncm91cCIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBNPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6QXJyYXl9KV0scD1bTCgpXSxjPVtMKHt0eXBlOlN0cmluZ30pXSx4PVtMKHt0eXBlOlN0cmluZyxyZWZsZWN0OiEwfSldLFRaKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToib3B0aW9ucyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4ib3B0aW9ucyJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56Lm9wdGlvbnMsImdldCIpLHNldDppKCh6LE4pPT57ei5vcHRpb25zPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sbyxsKSxUWih0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlbGVjdGVkT3B0aW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJzZWxlY3RlZE9wdGlvbiJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LnNlbGVjdGVkT3B0aW9uLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3ouc2VsZWN0ZWRPcHRpb249Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxkLHUpLFRaKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZGlyZWN0aW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJkaXJlY3Rpb24iaW4geiwiaGFzIiksZ2V0Omkoej0+ei5kaXJlY3Rpb24sImdldCIpLHNldDppKCh6LE4pPT57ei5kaXJlY3Rpb249Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxiLHYpLFRaKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToidmFsaWRhdGlvblN0YXRlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJ2YWxpZGF0aW9uU3RhdGUiaW4geiwiaGFzIiksZ2V0Omkoej0+ei52YWxpZGF0aW9uU3RhdGUsImdldCIpLHNldDppKCh6LE4pPT57ei52YWxpZGF0aW9uU3RhdGU9Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxtLGYpLFRaKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOk19LG51bGwsdCkseT1hPWUudmFsdWUsTSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpNfSl9c3RhdGljIGRlbW89YTBhO3N0YXRpYyBkZW1vR3JvdXBzPVsiSW5wdXQiXTsjZT10dSh0aGlzLG8sW10pO2dldCBvcHRpb25zKCl7cmV0dXJuIHRoaXMuI2V9c2V0IG9wdGlvbnMoTSl7dGhpcy4jZT1NfSN0PSh0dSh0aGlzLGwpLHR1KHRoaXMsZCwiIikpO2dldCBzZWxlY3RlZE9wdGlvbigpe3JldHVybiB0aGlzLiN0fXNldCBzZWxlY3RlZE9wdGlvbihNKXt0aGlzLiN0PU19I2E9KHR1KHRoaXMsdSksdHUodGhpcyxiLCJ2ZXJ0aWNhbCIpKTtnZXQgZGlyZWN0aW9uKCl7cmV0dXJuIHRoaXMuI2F9c2V0IGRpcmVjdGlvbihNKXt0aGlzLiNhPU19I3M9KHR1KHRoaXMsdiksdHUodGhpcyxtLG51bGwpKTtnZXQgdmFsaWRhdGlvblN0YXRlKCl7cmV0dXJuIHRoaXMuI3N9c2V0IHZhbGlkYXRpb25TdGF0ZShNKXt0aGlzLiNzPU19Z2V0IHZhbHVlKCl7bGV0IE09dGhpcy5nZXRPcHRpb25CeUtleSh0aGlzLnNlbGVjdGVkT3B0aW9uKTtyZXR1cm4gdHlwZW9mIE09PSJvYmplY3QiJiZNLnBheWxvYWQhPT12b2lkIDA/TS5wYXlsb2FkOnRoaXMuc2VsZWN0ZWRPcHRpb259c2V0IHZhbHVlKE0pe2lmKHR5cGVvZiBNPT0ic3RyaW5nIil0aGlzLnNlbGVjdGVkT3B0aW9uPU07ZWxzZXtsZXQgej10aGlzLm9wdGlvbnMuZmluZChOPT50eXBlb2YgTj09Im9iamVjdCImJk4ucGF5bG9hZD09PU0pO3omJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHRoaXMuc2VsZWN0ZWRPcHRpb249ei5rZXkpfX1zdGF0aWMgc3R5bGVzPVtIZSwuLi5PdC5iYXNlU3R5bGVzLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICAvKiBUT0RPOiBNaWdyYXRlIGhhcmRjb2RlZCB2YWx1ZXMgdG8gLS1kZWVzLSogQ1NTIHZhcmlhYmxlcyAqLwogICAgICAqIHsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsICdSb2JvdG8nLCBzYW5zLXNlcmlmOwogICAgICB9CgogICAgICAubWFpbmNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMTBweDsKICAgICAgfQoKICAgICAgLm1haW5jb250YWluZXIuaG9yaXpvbnRhbCB7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgZ2FwOiAyMHB4OwogICAgICB9CgogICAgICAucmFkaW8tb3B0aW9uIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAxMHB4OwogICAgICAgIHBhZGRpbmc6IDZweCAwOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgIH0KCiAgICAgIC5tYWluY29udGFpbmVyLmhvcml6b250YWwgLnJhZGlvLW9wdGlvbiB7CiAgICAgICAgcGFkZGluZzogNnB4IDIwcHggNnB4IDA7CiAgICAgIH0KCiAgICAgIC5yYWRpby1vcHRpb246aG92ZXIgLnJhZGlvLWNpcmNsZSB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNSAyMC4yJSA2NS4xJSkiLCJoc2woMjE1IDIwLjIlIDM1LjElKSIpfTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxMCA0MCUgOTYuMSUpIiwiaHNsKDIxNSAyMC4yJSAxMS44JSkiKX07CiAgICAgIH0KCiAgICAgIC5yYWRpby1vcHRpb246aG92ZXIgLnJhZGlvLWxhYmVsIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuMyAyNSUgOC44JSkiLCJoc2woMjEwIDQwJSA5OCUpIil9OwogICAgICB9CgogICAgICAucmFkaW8tY2lyY2xlIHsKICAgICAgICB3aWR0aDogMjBweDsKICAgICAgICBoZWlnaHQ6IDIwcHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMjE1IDIwLjIlIDY1LjElKSIsImhzbCgyMTUgMjAuMiUgMzUuMSUpIil9OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxMDAlKSIsImhzbCgyMTUgMzAlIDYuOCUpIil9OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgfQoKICAgICAgLnJhZGlvLW9wdGlvbi5zZWxlY3RlZCAucmFkaW8tY2lyY2xlIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE3LjIgOTEuMiUgNTkuOCUpIiwiaHNsKDIxMy4xIDkzLjklIDY3LjglKSIpfTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxNy4yIDkxLjIlIDU5LjglKSIsImhzbCgyMTMuMSA5My45JSA2Ny44JSkiKX07CiAgICAgIH0KCiAgICAgIC5yYWRpby1vcHRpb24uc2VsZWN0ZWQgLnJhZGlvLWNpcmNsZTo6YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB3aWR0aDogOHB4OwogICAgICAgIGhlaWdodDogOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTAwJSkiLCJoc2woMjE1IDMwJSA2LjglKSIpfTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDApOwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CiAgICAgIH0KCiAgICAgIC5yYWRpby1vcHRpb24uc2VsZWN0ZWQgLnJhZGlvLWNpcmNsZTo6YWZ0ZXIgewogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAgIH0KCiAgICAgIC5yYWRpby1jaXJjbGU6Zm9jdXMtdmlzaWJsZSB7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggJHtoLmJkVGhlbWUoImhzbCgwIDAlIDEwMCUpIiwiaHNsKDIxNSAzMCUgMy45JSkiKX0sCiAgICAgICAgICAgICAgICAgICAgMCAwIDAgNHB4ICR7aC5iZFRoZW1lKCJoc2woMjE3LjIgOTEuMiUgNTkuOCUpIiwiaHNsKDIxMy4xIDkzLjklIDY3LjglKSIpfTsKICAgICAgfQoKICAgICAgLnJhZGlvLWxhYmVsIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuMyAyNSUgMjYuNyUpIiwiaHNsKDIxNy45IDEwLjYlIDc0LjklKSIpfTsKICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAwNmVtOwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICB9CgogICAgICAucmFkaW8tb3B0aW9uLnNlbGVjdGVkIC5yYWRpby1sYWJlbCB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjMgMjUlIDguOCUpIiwiaHNsKDIxMCA0MCUgOTglKSIpfTsKICAgICAgfQoKICAgICAgOmhvc3QoW2Rpc2FibGVkXSkgLnJhZGlvLW9wdGlvbiB7CiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIC5yYWRpby1vcHRpb246aG92ZXIgLnJhZGlvLWNpcmNsZSB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNSAyMC4yJSA2NS4xJSkiLCJoc2woMjE1IDIwLjIlIDM1LjElKSIpfTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTAwJSkiLCJoc2woMjE1IDMwJSA2LjglKSIpfTsKICAgICAgfQoKICAgICAgOmhvc3QoW2Rpc2FibGVkXSkgLnJhZGlvLW9wdGlvbjpob3ZlciAucmFkaW8tbGFiZWwgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS4zIDI1JSAyNi43JSkiLCJoc2woMjE3LjkgMTAuNiUgNzQuOSUpIil9OwogICAgICB9CgogICAgICAubGFiZWwtdGV4dCB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjMgMjUlIDguOCUpIiwiaHNsKDIxMCA0MCUgOTglKSIpfTsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMDZlbTsKICAgICAgICBsaW5lLWhlaWdodDogMjBweDsKICAgICAgfQoKICAgICAgLyogVmFsaWRhdGlvbiBzdHlsZXMgKi8KICAgICAgOmhvc3QoW3ZhbGlkYXRpb25TdGF0ZT0iaW52YWxpZCJdKSAucmFkaW8tY2lyY2xlIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCA3Mi4yJSA1MC42JSkiLCJoc2woMCA2Mi44JSAzMC42JSkiKX07CiAgICAgIH0KCiAgICAgIDpob3N0KFt2YWxpZGF0aW9uU3RhdGU9ImludmFsaWQiXSkgLnJhZGlvLW9wdGlvbi5zZWxlY3RlZCAucmFkaW8tY2lyY2xlIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCA3Mi4yJSA1MC42JSkiLCJoc2woMCA2Mi44JSAzMC42JSkiKX07CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDcyLjIlIDUwLjYlKSIsImhzbCgwIDYyLjglIDMwLjYlKSIpfTsKICAgICAgfQoKICAgICAgOmhvc3QoW3ZhbGlkYXRpb25TdGF0ZT0idmFsaWQiXSkgLnJhZGlvLW9wdGlvbi5zZWxlY3RlZCAucmFkaW8tY2lyY2xlIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMTQyLjEgNzAuNiUgNDUuMyUpIiwiaHNsKDE0Mi4xIDc2LjIlIDM2LjMlKSIpfTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDE0Mi4xIDcwLjYlIDQ1LjMlKSIsImhzbCgxNDIuMSA3Ni4yJSAzNi4zJSkiKX07CiAgICAgIH0KCiAgICAgIDpob3N0KFt2YWxpZGF0aW9uU3RhdGU9Indhcm4iXSkgLnJhZGlvLW9wdGlvbi5zZWxlY3RlZCAucmFkaW8tY2lyY2xlIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woNDUuNCA5My40JSA0Ny41JSkiLCJoc2woNDUuNCA5My40JSA0Ny41JSkiKX07CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCg0NS40IDkzLjQlIDQ3LjUlKSIsImhzbCg0NS40IDkzLjQlIDQ3LjUlKSIpfTsKICAgICAgfQoKICAgICAgLyogT3ZlcnJpZGUgYmFzZSBncmlkIGxheW91dCBmb3IgcmFkaW9ncm91cCB0byBwcmV2ZW50IGxhcmdlIGdhcHMgKi8KICAgICAgOmhvc3QoW2xhYmVsLXBvc2l0aW9uPSJsZWZ0Il0pIC5pbnB1dC13cmFwcGVyIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gYXV0bzsKICAgICAgfQoKICAgICAgOmhvc3QoW2xhYmVsLXBvc2l0aW9uPSJyaWdodCJdKSAuaW5wdXQtd3JhcHBlciB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIGF1dG87CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJpbnB1dC13cmFwcGVyIj4KICAgICAgICAke3RoaXMubGFiZWw/d2A8ZGl2IGNsYXNzPSJsYWJlbC10ZXh0Ij4ke3RoaXMubGFiZWx9PC9kaXY+YDoiIn0KICAgICAgICA8ZGl2IGNsYXNzPSJtYWluY29udGFpbmVyICR7dGhpcy5kaXJlY3Rpb259Ij4KICAgICAgICAgICR7dGhpcy5vcHRpb25zLm1hcChNPT57bGV0IHo9dGhpcy5nZXRPcHRpb25LZXkoTSksTj10aGlzLmdldE9wdGlvbkxhYmVsKE0pLEM9dGhpcy5zZWxlY3RlZE9wdGlvbj09PXo7cmV0dXJuIHdgCiAgICAgICAgICAgICAgPGRpdiAKICAgICAgICAgICAgICAgIGNsYXNzPSJyYWRpby1vcHRpb24gJHtDPyJzZWxlY3RlZCI6IiJ9IgogICAgICAgICAgICAgICAgQGNsaWNrPSIkeygpPT50aGlzLnNlbGVjdE9wdGlvbih6KX0iCiAgICAgICAgICAgICAgICBAa2V5ZG93bj0iJHtfPT50aGlzLmhhbmRsZUtleWRvd24oXyx6KX0iCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPGRpdiAKICAgICAgICAgICAgICAgICAgY2xhc3M9InJhZGlvLWNpcmNsZSIgCiAgICAgICAgICAgICAgICAgIHRhYmluZGV4PSIke3RoaXMuZGlzYWJsZWQ/Ii0xIjoiMCJ9IgogICAgICAgICAgICAgICAgICByb2xlPSJyYWRpbyIKICAgICAgICAgICAgICAgICAgYXJpYS1jaGVja2VkPSIke0N9IgogICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPSIke059IgogICAgICAgICAgICAgICAgPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmFkaW8tbGFiZWwiPiR7Tn08L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYH0pfQogICAgICAgIDwvZGl2PgogICAgICAgICR7dGhpcy5yZW5kZXJEZXNjcmlwdGlvbigpfQogICAgICA8L2Rpdj4KICAgIGB9Z2V0T3B0aW9uS2V5KE0pe3JldHVybiB0eXBlb2YgTT09InN0cmluZyI/TTpNLmtleX1nZXRPcHRpb25MYWJlbChNKXtyZXR1cm4gdHlwZW9mIE09PSJzdHJpbmciP006TS5vcHRpb259Z2V0T3B0aW9uQnlLZXkoTSl7cmV0dXJuIHRoaXMub3B0aW9ucy5maW5kKHo9PnRoaXMuZ2V0T3B0aW9uS2V5KHopPT09TSl9c2VsZWN0T3B0aW9uKE0pe2lmKHRoaXMuZGlzYWJsZWQpcmV0dXJuO2xldCB6PXRoaXMuc2VsZWN0ZWRPcHRpb247dGhpcy5zZWxlY3RlZE9wdGlvbj1NLHohPT1NJiYodGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY2hhbmdlIix7ZGV0YWlsOnt2YWx1ZTp0aGlzLnZhbHVlfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImlucHV0Iix7ZGV0YWlsOnt2YWx1ZTp0aGlzLnZhbHVlfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpLHRoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMpKX1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLnZhbHVlfXNldFZhbHVlKE0pe3RoaXMudmFsdWU9TX1hc3luYyB2YWxpZGF0ZSgpe3JldHVybiB0aGlzLnJlcXVpcmVkJiYhdGhpcy5zZWxlY3RlZE9wdGlvbj8odGhpcy52YWxpZGF0aW9uU3RhdGU9ImludmFsaWQiLCExKToodGhpcy52YWxpZGF0aW9uU3RhdGU9InZhbGlkIiwhMCl9YXN5bmMgZmlyc3RVcGRhdGVkKCl7aWYoIXRoaXMuc2VsZWN0ZWRPcHRpb24mJnRoaXMub3B0aW9ucy5sZW5ndGg+MCYmIXRoaXMucmVxdWlyZWQpe2xldCBNPXRoaXMub3B0aW9uc1swXTt0aGlzLnNlbGVjdGVkT3B0aW9uPXRoaXMuZ2V0T3B0aW9uS2V5KE0pfX1oYW5kbGVLZXlkb3duKE0seil7dGhpcy5kaXNhYmxlZHx8KE0ua2V5PT09IiAifHxNLmtleT09PSJFbnRlciI/KE0ucHJldmVudERlZmF1bHQoKSx0aGlzLnNlbGVjdE9wdGlvbih6KSk6TS5rZXk9PT0iQXJyb3dEb3duInx8TS5rZXk9PT0iQXJyb3dSaWdodCI/KE0ucHJldmVudERlZmF1bHQoKSx0aGlzLmZvY3VzTmV4dE9wdGlvbigpKTooTS5rZXk9PT0iQXJyb3dVcCJ8fE0ua2V5PT09IkFycm93TGVmdCIpJiYoTS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuZm9jdXNQcmV2aW91c09wdGlvbigpKSl9Zm9jdXNOZXh0T3B0aW9uKCl7bGV0IE09QXJyYXkuZnJvbSh0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgiLnJhZGlvLWNpcmNsZSIpKSxOPShNLmZpbmRJbmRleChDPT5DPT09dGhpcy5zaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQpKzEpJU0ubGVuZ3RoO01bTl0uZm9jdXMoKX1mb2N1c1ByZXZpb3VzT3B0aW9uKCl7bGV0IE09QXJyYXkuZnJvbSh0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgiLnJhZGlvLWNpcmNsZSIpKSx6PU0uZmluZEluZGV4KEM9PkM9PT10aGlzLnNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudCksTj16PD0wP00ubGVuZ3RoLTE6ei0xO01bTl0uZm9jdXMoKX1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdHUodGhpcyxmKX1zdGF0aWN7dHUoYSx0KX19O3JldHVybiB5PWF9KSgpfSk7dmFyIGkwYSxyMGE9ZygoKT0+e3BlKCk7aTBhPWkoKCk9PndgCiAgPHN0eWxlPgogICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgZ2FwOiAyNHB4OwogICAgICBwYWRkaW5nOiAyNHB4OwogICAgfQogICAgLmRlbW8tc2VjdGlvbiB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgIGdhcDogMTJweDsKICAgIH0KICAgIC5kZW1vLXNlY3Rpb24gaDMgewogICAgICBtYXJnaW46IDAgMCA4cHggMDsKICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICBmb250LXdlaWdodDogNTAwOwogICAgICBjb2xvcjogIzg4ODsKICAgIH0KICAgIC5kZW1vLXJvdyB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGdhcDogMTJweDsKICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgfQogIDwvc3R5bGU+CiAgPGRpdiBjbGFzcz0iZGVtby1jb250YWluZXIiPgogICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgPGgzPkJhc2ljIFVzYWdlPC9oMz4KICAgICAgPGRpdiBjbGFzcz0iZGVtby1yb3ciPgogICAgICAgIDxkZWVzLWZvcm0tc3VibWl0PlN1Ym1pdCBGb3JtPC9kZWVzLWZvcm0tc3VibWl0PgogICAgICAgIDxkZWVzLWZvcm0tc3VibWl0IHRleHQ9IldpdGggVGV4dCBQcm9wZXJ0eSI+PC9kZWVzLWZvcm0tc3VibWl0PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgIDxoMz5XaXRoIEljb25zIChpbmhlcml0ZWQgZnJvbSBEZWVzQnV0dG9uKTwvaDM+CiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tcm93Ij4KICAgICAgICA8ZGVlcy1mb3JtLXN1Ym1pdCBpY29uPSJsdWNpZGU6c2VuZCI+U3VibWl0PC9kZWVzLWZvcm0tc3VibWl0PgogICAgICAgIDxkZWVzLWZvcm0tc3VibWl0IGljb249Imx1Y2lkZTpzYXZlIiBpY29uUG9zaXRpb249ImxlZnQiPlNhdmUgRm9ybTwvZGVlcy1mb3JtLXN1Ym1pdD4KICAgICAgICA8ZGVlcy1mb3JtLXN1Ym1pdCBpY29uPSJsdWNpZGU6YXJyb3ctcmlnaHQiIGljb25Qb3NpdGlvbj0icmlnaHQiPkNvbnRpbnVlPC9kZWVzLWZvcm0tc3VibWl0PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgIDxoMz5CdXR0b24gVHlwZXM8L2gzPgogICAgICA8ZGl2IGNsYXNzPSJkZW1vLXJvdyI+CiAgICAgICAgPGRlZXMtZm9ybS1zdWJtaXQgdHlwZT0iaGlnaGxpZ2h0ZWQiIGljb249Imx1Y2lkZTpzZW5kIj5IaWdobGlnaHRlZDwvZGVlcy1mb3JtLXN1Ym1pdD4KICAgICAgICA8ZGVlcy1mb3JtLXN1Ym1pdCB0eXBlPSJub3JtYWwiIGljb249Imx1Y2lkZTpzZW5kIj5Ob3JtYWw8L2RlZXMtZm9ybS1zdWJtaXQ+CiAgICAgICAgPGRlZXMtZm9ybS1zdWJtaXQgdHlwZT0iZGlzY3JlZXQiIGljb249Imx1Y2lkZTpzZW5kIj5EaXNjcmVldDwvZGVlcy1mb3JtLXN1Ym1pdD4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICA8aDM+U2l6ZXM8L2gzPgogICAgICA8ZGl2IGNsYXNzPSJkZW1vLXJvdyI+CiAgICAgICAgPGRlZXMtZm9ybS1zdWJtaXQgc2l6ZT0ic21hbGwiIGljb249Imx1Y2lkZTpzZW5kIj5TbWFsbDwvZGVlcy1mb3JtLXN1Ym1pdD4KICAgICAgICA8ZGVlcy1mb3JtLXN1Ym1pdCBzaXplPSJub3JtYWwiIGljb249Imx1Y2lkZTpzZW5kIj5Ob3JtYWw8L2RlZXMtZm9ybS1zdWJtaXQ+CiAgICAgICAgPGRlZXMtZm9ybS1zdWJtaXQgc2l6ZT0ibGFyZ2UiIGljb249Imx1Y2lkZTpzZW5kIj5MYXJnZTwvZGVlcy1mb3JtLXN1Ym1pdD4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICA8aDM+U3RhdGVzPC9oMz4KICAgICAgPGRpdiBjbGFzcz0iZGVtby1yb3ciPgogICAgICAgIDxkZWVzLWZvcm0tc3VibWl0IHN0YXR1cz0ibm9ybWFsIiBpY29uPSJsdWNpZGU6c2VuZCI+Tm9ybWFsPC9kZWVzLWZvcm0tc3VibWl0PgogICAgICAgIDxkZWVzLWZvcm0tc3VibWl0IHN0YXR1cz0icGVuZGluZyIgaWNvbj0ibHVjaWRlOnNlbmQiPlBlbmRpbmc8L2RlZXMtZm9ybS1zdWJtaXQ+CiAgICAgICAgPGRlZXMtZm9ybS1zdWJtaXQgc3RhdHVzPSJzdWNjZXNzIiBpY29uPSJsdWNpZGU6Y2hlY2siPlN1Y2Nlc3M8L2RlZXMtZm9ybS1zdWJtaXQ+CiAgICAgICAgPGRlZXMtZm9ybS1zdWJtaXQgc3RhdHVzPSJlcnJvciIgaWNvbj0ibHVjaWRlOngiPkVycm9yPC9kZWVzLWZvcm0tc3VibWl0PgogICAgICAgIDxkZWVzLWZvcm0tc3VibWl0IGRpc2FibGVkIGljb249Imx1Y2lkZTpzZW5kIj5EaXNhYmxlZDwvZGVlcy1mb3JtLXN1Ym1pdD4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICA8aDM+SW4gYSBGb3JtIENvbnRleHQ8L2gzPgogICAgICA8ZGVlcy1mb3JtPgogICAgICAgIDxkZWVzLWlucHV0LXRleHQgbGFiZWw9Ik5hbWUiIGtleT0ibmFtZSI+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgPGRlZXMtaW5wdXQtdGV4dCBsYWJlbD0iRW1haWwiIGtleT0iZW1haWwiPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgIDxkZWVzLWZvcm0tc3VibWl0IGljb249Imx1Y2lkZTpzZW5kIiB0eXBlPSJoaWdobGlnaHRlZCI+U3VibWl0IEZvcm08L2RlZXMtZm9ybS1zdWJtaXQ+CiAgICAgIDwvZGVlcy1mb3JtPgogICAgPC9kaXY+CiAgPC9kaXY+CmAsImRlbW9GdW5jIil9KTt2YXIgeWgsQ24sdm5lLEE4PWcoKCk9PntyMGEoKTtwZSgpO3B0KCk7eWg9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LENuPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSx2bmU9KCgpPT57bGV0IHM9W25lKCJkZWVzLWZvcm0tc3VibWl0IildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W107dmFyIEg9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNGb3JtU3VibWl0Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGs9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpCb29sZWFuLHJlZmxlY3Q6ITB9KV0scD1bTCh7dHlwZTpTdHJpbmd9KV0sYz1bTCh7dHlwZTpTdHJpbmd9KV0seD1bTCh7dHlwZTpTdHJpbmcscmVmbGVjdDohMH0pXSx5PVtMKHt0eXBlOlN0cmluZyxyZWZsZWN0OiEwfSldLE49W0woe3R5cGU6U3RyaW5nfSldLE89W0woe3R5cGU6U3RyaW5nfSldLHloKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZGlzYWJsZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+ImRpc2FibGVkImluIFMsImhhcyIpLGdldDppKFM9PlMuZGlzYWJsZWQsImdldCIpLHNldDppKChTLEkpPT57Uy5kaXNhYmxlZD1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LG8sbCkseWgodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0ZXh0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJ0ZXh0ImluIFMsImhhcyIpLGdldDppKFM9PlMudGV4dCwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLnRleHQ9SX0sInNldCIpfSxtZXRhZGF0YTprfSxkLHUpLHloKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic3RhdHVzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJzdGF0dXMiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5zdGF0dXMsImdldCIpLHNldDppKChTLEkpPT57Uy5zdGF0dXM9SX0sInNldCIpfSxtZXRhZGF0YTprfSxiLHYpLHloKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToidHlwZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4idHlwZSJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLnR5cGUsImdldCIpLHNldDppKChTLEkpPT57Uy50eXBlPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sbSxmKSx5aCh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNpemUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+InNpemUiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5zaXplLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1Muc2l6ZT1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LE0seikseWgodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpY29uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJpY29uImluIFMsImhhcyIpLGdldDppKFM9PlMuaWNvbiwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLmljb249SX0sInNldCIpfSxtZXRhZGF0YTprfSxDLF8pLHloKHRoaXMsbnVsbCxPLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaWNvblBvc2l0aW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJpY29uUG9zaXRpb24iaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5pY29uUG9zaXRpb24sImdldCIpLHNldDppKChTLEkpPT57Uy5pY29uUG9zaXRpb249SX0sInNldCIpfSxtZXRhZGF0YTprfSwkLEUpLHloKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOmt9LG51bGwsdCksSD1hPWUudmFsdWUsayYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTprfSl9c3RhdGljIGRlbW89aTBhO3N0YXRpYyBkZW1vR3JvdXBzPVsiRm9ybSIsIkJ1dHRvbiJdOyNlPUNuKHRoaXMsbywhMSk7Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuI2V9c2V0IGRpc2FibGVkKGspe3RoaXMuI2U9a30jdD0oQ24odGhpcyxsKSxDbih0aGlzLGQsdm9pZCAwKSk7Z2V0IHRleHQoKXtyZXR1cm4gdGhpcy4jdH1zZXQgdGV4dChrKXt0aGlzLiN0PWt9I2E9KENuKHRoaXMsdSksQ24odGhpcyxiLCJub3JtYWwiKSk7Z2V0IHN0YXR1cygpe3JldHVybiB0aGlzLiNhfXNldCBzdGF0dXMoayl7dGhpcy4jYT1rfSNzPShDbih0aGlzLHYpLENuKHRoaXMsbSwiZGVmYXVsdCIpKTtnZXQgdHlwZSgpe3JldHVybiB0aGlzLiNzfXNldCB0eXBlKGspe3RoaXMuI3M9a30jaT0oQ24odGhpcyxmKSxDbih0aGlzLE0sImRlZmF1bHQiKSk7Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy4jaX1zZXQgc2l6ZShrKXt0aGlzLiNpPWt9I3I9KENuKHRoaXMseiksQ24odGhpcyxDLHZvaWQgMCkpO2dldCBpY29uKCl7cmV0dXJuIHRoaXMuI3J9c2V0IGljb24oayl7dGhpcy4jcj1rfSNvPShDbih0aGlzLF8pLENuKHRoaXMsJCwibGVmdCIpKTtnZXQgaWNvblBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuI299c2V0IGljb25Qb3NpdGlvbihrKXt0aGlzLiNvPWt9Y29uc3RydWN0b3IoKXtzdXBlcigpLENuKHRoaXMsRSl9c3RhdGljIHN0eWxlcz1bSGUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIH0KICAgICAgZGVlcy1idXR0b24gewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRlZXMtYnV0dG9uCiAgICAgICAgLnN0YXR1cz0ke3RoaXMuc3RhdHVzfQogICAgICAgIC50eXBlPSR7dGhpcy50eXBlfQogICAgICAgIC5zaXplPSR7dGhpcy5zaXplfQogICAgICAgIC5pY29uPSR7dGhpcy5pY29ufQogICAgICAgIC5pY29uUG9zaXRpb249JHt0aGlzLmljb25Qb3NpdGlvbn0KICAgICAgICAudGV4dD0ke3RoaXMudGV4dH0KICAgICAgICA/ZGlzYWJsZWQ9JHt0aGlzLmRpc2FibGVkfQogICAgICAgIEBjbGlja2VkPSR7dGhpcy5zdWJtaXR9CiAgICAgID48L2RlZXMtYnV0dG9uPgogICAgYH1hc3luYyBmaXJzdFVwZGF0ZWQoKXtpZighdGhpcy50ZXh0KXtsZXQgaz10aGlzLnRleHRDb250ZW50Py50cmltKCk7ayYmKHRoaXMudGV4dD1rKX19YXN5bmMgc3VibWl0KCl7aWYodGhpcy5kaXNhYmxlZClyZXR1cm47bGV0IGs9dGhpcy5jbG9zZXN0KCJkZWVzLWZvcm0iKTtrJiZrLmdhdGhlckFuZERpc3BhdGNoJiZrLmdhdGhlckFuZERpc3BhdGNoKCl9YXN5bmMgZm9jdXMoKXtsZXQgaz1hd2FpdCB0aGlzLmRvbXRvb2xzUHJvbWlzZTt0aGlzLmRpc2FibGVkfHwoYXdhaXQgay5jb252ZW5pZW5jZS5zbWFydGRlbGF5LmRlbGF5Rm9yKDApLHRoaXMuc3VibWl0KCkpfXN0YXRpY3tDbihhLHQpfX07cmV0dXJuIEg9YX0pKCl9KTt2YXIgbzBhLG4wYT1nKCgpPT57cGUoKTtJdCgpO2ZvKCk7dXYoKTtBOCgpO28wYT1pKCgpPT53YAogIDxzdHlsZT4KICAgICR7SmAKICAgICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHg7CiAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgIH0KICAgICAgCiAgICAgIGRlZXMtcGFuZWwgewogICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgIH0KICAgICAgCiAgICAgIGRlZXMtcGFuZWw6bGFzdC1jaGlsZCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgfQogICAgICAKICAgICAgLmhvcml6b250YWwtZ3JvdXAgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDE2cHg7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICB9CiAgICAgIAogICAgICAuc3BhY2VyIHsKICAgICAgICBoZWlnaHQ6IDIwMHB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBjb2xvcjogIzk5OTsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIH0KICAgIGB9CiAgPC9zdHlsZT4KICAKICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57bGV0IGU9cy5xdWVyeVNlbGVjdG9yKCdkZWVzLWlucHV0LWRyb3Bkb3duW2xhYmVsPSJTZWxlY3QgQ291bnRyeSJdJyksdD1zLnF1ZXJ5U2VsZWN0b3IoJ2RlZXMtaW5wdXQtZHJvcGRvd25bbGFiZWw9IlNlbGVjdCBSb2xlIl0nKTtlJiZlLmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdGVkT3B0aW9uIiwoYT0+e2NvbnNvbGUubG9nKCJDb3VudHJ5IHNlbGVjdGVkOiIsYS5kZXRhaWwpfSkpLHQmJnQuYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0ZWRPcHRpb24iLChhPT57Y29uc29sZS5sb2coIlJvbGUgc2VsZWN0ZWQ6IixhLmRldGFpbCl9KSl9fT4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjEuIEJhc2ljIERyb3Bkb3ducyJ9IC5zdWJ0aXRsZT0keyJTdGFuZGFyZCBkcm9wZG93biB3aXRoIHNlYXJjaCBmdW5jdGlvbmFsaXR5IGFuZCB2YXJpb3VzIG9wdGlvbnMifT4KICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRlZXMtaW5wdXQtZHJvcGRvd24KICAgICAgICAgICAgLmxhYmVsPSR7IlNlbGVjdCBDb3VudHJ5In0KICAgICAgICAgICAgLmRlc2NyaXB0aW9uPSR7IkNob29zZSB0aGUgY291bnRyeSB3aGVyZSB5b3VyIGJ1c2luZXNzIGlzIHJlZ2lzdGVyZWQifQogICAgICAgICAgICAub3B0aW9ucz0ke1t7b3B0aW9uOiJVbml0ZWQgU3RhdGVzIixrZXk6InVzIn0se29wdGlvbjoiQ2FuYWRhIixrZXk6ImNhIn0se29wdGlvbjoiR2VybWFueSIsa2V5OiJkZSJ9LHtvcHRpb246IkZyYW5jZSIsa2V5OiJmciJ9LHtvcHRpb246IlVuaXRlZCBLaW5nZG9tIixrZXk6InVrIn0se29wdGlvbjoiQXVzdHJhbGlhIixrZXk6ImF1In0se29wdGlvbjoiSmFwYW4iLGtleToianAifSx7b3B0aW9uOiJCcmF6aWwiLGtleToiYnIifV19CiAgICAgICAgICAgIC5zZWxlY3RlZE9wdGlvbj0ke3tvcHRpb246IlVuaXRlZCBTdGF0ZXMiLGtleToidXMifX0KICAgICAgICAgID48L2RlZXMtaW5wdXQtZHJvcGRvd24+CgogICAgICAgICAgPGRlZXMtaW5wdXQtZHJvcGRvd24KICAgICAgICAgICAgLmxhYmVsPSR7IlNlbGVjdCBSb2xlIn0KICAgICAgICAgICAgLm9wdGlvbnM9JHtbe29wdGlvbjoiQWRtaW5pc3RyYXRvciIsa2V5OiJhZG1pbiJ9LHtvcHRpb246IkVkaXRvciIsa2V5OiJlZGl0b3IifSx7b3B0aW9uOiJWaWV3ZXIiLGtleToidmlld2VyIn0se29wdGlvbjoiR3Vlc3QiLGtleToiZ3Vlc3QifV19CiAgICAgICAgICA+PC9kZWVzLWlucHV0LWRyb3Bkb3duPgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CiAgICAKICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntsZXQgZT1zLnF1ZXJ5U2VsZWN0b3IoImRlZXMtaW5wdXQtZHJvcGRvd24iKTtlJiZlLmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdGVkT3B0aW9uIiwodD0+e2NvbnNvbGUubG9nKGBQcmlvcml0eSBjaGFuZ2VkIHRvOiAke3QuZGV0YWlsLm9wdGlvbn1gKX0pKX19PgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiMi4gV2l0aG91dCBTZWFyY2gifSAuc3VidGl0bGU9JHsiRHJvcGRvd24gd2l0aCBzZWFyY2ggZnVuY3Rpb25hbGl0eSBkaXNhYmxlZCBmb3Igc2ltcGxlciBzZWxlY3Rpb24ifT4KICAgICAgICA8ZGVlcy1pbnB1dC1kcm9wZG93bgogICAgICAgICAgLmxhYmVsPSR7IlByaW9yaXR5IExldmVsIn0KICAgICAgICAgIC5lbmFibGVTZWFyY2g9JHshMX0KICAgICAgICAgIC5vcHRpb25zPSR7W3tvcHRpb246IkhpZ2giLGtleToiaGlnaCJ9LHtvcHRpb246Ik1lZGl1bSIsa2V5OiJtZWRpdW0ifSx7b3B0aW9uOiJMb3ciLGtleToibG93In1dfQogICAgICAgICAgLnNlbGVjdGVkT3B0aW9uPSR7e29wdGlvbjoiTWVkaXVtIixrZXk6Im1lZGl1bSJ9fQogICAgICAgID48L2RlZXMtaW5wdXQtZHJvcGRvd24+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KICAgIAogICAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e3MucXVlcnlTZWxlY3RvckFsbCgiZGVlcy1pbnB1dC1kcm9wZG93biIpLmZvckVhY2godD0+e3QuYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0ZWRPcHRpb24iLChhPT57bGV0IHI9dC5nZXRBdHRyaWJ1dGUoImxhYmVsIik7Y29uc29sZS5sb2coYCR7cn06ICR7YS5kZXRhaWwub3B0aW9ufWApfSkpfSl9fT4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjMuIEhvcml6b250YWwgTGF5b3V0In0gLnN1YnRpdGxlPSR7Ik11bHRpcGxlIGRyb3Bkb3ducyBpbiBhIGhvcml6b250YWwgbGF5b3V0IGZvciBjb21wYWN0IGZvcm1zIn0+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkaXYgY2xhc3M9Imhvcml6b250YWwtZ3JvdXAiPgogICAgICAgICAgICA8ZGVlcy1pbnB1dC1kcm9wZG93bgogICAgICAgICAgICAgIC5sYWJlbD0keyJEZXBhcnRtZW50In0KICAgICAgICAgICAgICAubGF5b3V0TW9kZT0keyJob3Jpem9udGFsIn0KICAgICAgICAgICAgICAub3B0aW9ucz0ke1t7b3B0aW9uOiJFbmdpbmVlcmluZyIsa2V5OiJlbmcifSx7b3B0aW9uOiJEZXNpZ24iLGtleToiZGVzaWduIn0se29wdGlvbjoiTWFya2V0aW5nIixrZXk6Im1hcmtldGluZyJ9LHtvcHRpb246IlNhbGVzIixrZXk6InNhbGVzIn1dfQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LWRyb3Bkb3duPgoKICAgICAgICAgICAgPGRlZXMtaW5wdXQtZHJvcGRvd24KICAgICAgICAgICAgICAubGFiZWw9JHsiVGVhbSBTaXplIn0KICAgICAgICAgICAgICAubGF5b3V0TW9kZT0keyJob3Jpem9udGFsIn0KICAgICAgICAgICAgICAuZW5hYmxlU2VhcmNoPSR7ITF9CiAgICAgICAgICAgICAgLm9wdGlvbnM9JHtbe29wdGlvbjoiMS01IixrZXk6InNtYWxsIn0se29wdGlvbjoiNi0yMCIsa2V5OiJtZWRpdW0ifSx7b3B0aW9uOiIyMS01MCIsa2V5OiJsYXJnZSJ9LHtvcHRpb246IjUwKyIsa2V5OiJ4bGFyZ2UifV19CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtZHJvcGRvd24+CgogICAgICAgICAgICA8ZGVlcy1pbnB1dC1kcm9wZG93bgogICAgICAgICAgICAgIC5sYWJlbD0keyJMb2NhdGlvbiJ9CiAgICAgICAgICAgICAgLmxheW91dE1vZGU9JHsiaG9yaXpvbnRhbCJ9CiAgICAgICAgICAgICAgLm9wdGlvbnM9JHtbe29wdGlvbjoiUmVtb3RlIixrZXk6InJlbW90ZSJ9LHtvcHRpb246Ik9uLXNpdGUiLGtleToib25zaXRlIn0se29wdGlvbjoiSHlicmlkIixrZXk6Imh5YnJpZCJ9XX0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1kcm9wZG93bj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CiAgICAKICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntsZXQgZT1zLnF1ZXJ5U2VsZWN0b3IoImRlZXMtaW5wdXQtZHJvcGRvd25bcmVxdWlyZWRdIik7ZSYmZS5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwoKT0+e2NvbnNvbGUubG9nKCJSZXF1aXJlZCBkcm9wZG93biBsb3N0IGZvY3VzIil9KX19PgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiNC4gU3RhdGVzIn0gLnN1YnRpdGxlPSR7IkRpZmZlcmVudCBzdGF0ZXMgYW5kIGNvbmZpZ3VyYXRpb25zIn0+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkZWVzLWlucHV0LWRyb3Bkb3duCiAgICAgICAgICAgIC5sYWJlbD0keyJSZXF1aXJlZCBGaWVsZCJ9CiAgICAgICAgICAgIC5yZXF1aXJlZD0keyEwfQogICAgICAgICAgICAub3B0aW9ucz0ke1t7b3B0aW9uOiJPcHRpb24gQSIsa2V5OiJhIn0se29wdGlvbjoiT3B0aW9uIEIiLGtleToiYiJ9LHtvcHRpb246Ik9wdGlvbiBDIixrZXk6ImMifV19CiAgICAgICAgICA+PC9kZWVzLWlucHV0LWRyb3Bkb3duPgoKICAgICAgICAgIDxkZWVzLWlucHV0LWRyb3Bkb3duCiAgICAgICAgICAgIC5sYWJlbD0keyJEaXNhYmxlZCBEcm9wZG93biJ9CiAgICAgICAgICAgIC5kaXNhYmxlZD0keyEwfQogICAgICAgICAgICAub3B0aW9ucz0ke1t7b3B0aW9uOiJDYW5ub3QgU2VsZWN0IixrZXk6ImRpc2FibGVkIn1dfQogICAgICAgICAgICAuc2VsZWN0ZWRPcHRpb249JHt7b3B0aW9uOiJDYW5ub3QgU2VsZWN0IixrZXk6ImRpc2FibGVkIn19CiAgICAgICAgICA+PC9kZWVzLWlucHV0LWRyb3Bkb3duPgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CiAgICAKICAgIDxkaXYgY2xhc3M9InNwYWNlciI+CiAgICAgIChTcGFjZXIgdG8gdGVzdCBkcm9wZG93biBwb3NpdGlvbmluZykKICAgIDwvZGl2PgogICAgCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57bGV0IGU9cy5xdWVyeVNlbGVjdG9yKCJkZWVzLWlucHV0LWRyb3Bkb3duIik7ZSYmZS5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3RlZE9wdGlvbiIsKHQ9Pntjb25zb2xlLmxvZygiQm90dG9tIGRyb3Bkb3duIHNlbGVjdGVkOiIsdC5kZXRhaWwpfSkpfX0+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyI1LiBCb3R0b20gUG9zaXRpb25pbmcifSAuc3VidGl0bGU9JHsiRHJvcGRvd24gdGhhdCBvcGVucyB1cHdhcmQgd2hlbiBuZWFyIGJvdHRvbSBvZiB2aWV3cG9ydCJ9PgogICAgICAgIDxkZWVzLWlucHV0LWRyb3Bkb3duCiAgICAgICAgICAubGFiZWw9JHsiT3BlbnMgVXB3YXJkIn0KICAgICAgICAgIC5vcHRpb25zPSR7W3tvcHRpb246IkZpcnN0IE9wdGlvbiIsa2V5OiJmaXJzdCJ9LHtvcHRpb246IlNlY29uZCBPcHRpb24iLGtleToic2Vjb25kIn0se29wdGlvbjoiVGhpcmQgT3B0aW9uIixrZXk6InRoaXJkIn0se29wdGlvbjoiRm91cnRoIE9wdGlvbiIsa2V5OiJmb3VydGgifSx7b3B0aW9uOiJGaWZ0aCBPcHRpb24iLGtleToiZmlmdGgifV19CiAgICAgICAgPjwvZGVlcy1pbnB1dC1kcm9wZG93bj4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgoKICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntsZXQgZT1zLnF1ZXJ5U2VsZWN0b3IoImRlZXMtaW5wdXQtZHJvcGRvd24iKSx0PXMucXVlcnlTZWxlY3RvcigiI3NlbGVjdGlvbi1vdXRwdXQiKTtlJiZ0JiYodC5pbm5lckhUTUw9IjxlbT5TZWxlY3QgYSBwcm9kdWN0IHRvIHNlZSBkZXRhaWxzLi4uPC9lbT4iLGUuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwoYT0+e2EuZGV0YWlsLnZhbHVlJiYodC5pbm5lckhUTUw9YAogICAgICAgICAgICAgIDxzdHJvbmc+U2VsZWN0ZWQ6PC9zdHJvbmc+ICR7YS5kZXRhaWwudmFsdWUub3B0aW9ufTxicj4KICAgICAgICAgICAgICA8c3Ryb25nPktleTo8L3N0cm9uZz4gJHthLmRldGFpbC52YWx1ZS5rZXl9PGJyPgogICAgICAgICAgICAgIDxzdHJvbmc+UHJpY2U6PC9zdHJvbmc+ICQke2EuZGV0YWlsLnZhbHVlLnBheWxvYWQ/LnByaWNlfHwiTi9BIn08YnI+CiAgICAgICAgICAgICAgPHN0cm9uZz5GZWF0dXJlczo8L3N0cm9uZz4gJHthLmRldGFpbC52YWx1ZS5wYXlsb2FkPy5mZWF0dXJlcz8uam9pbigiLCAiKXx8Ik4vQSJ9CiAgICAgICAgICAgIGApfSkpKX19PgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiNi4gRXZlbnQgSGFuZGxpbmcgJiBQYXlsb2FkIn0gLnN1YnRpdGxlPSR7IkRyb3Bkb3duIHdpdGggcGF5bG9hZCBkYXRhIGFuZCBjaGFuZ2UgZXZlbnQgaGFuZGxpbmcifT4KICAgICAgICA8ZGVlcy1pbnB1dC1kcm9wZG93bgogICAgICAgICAgLmxhYmVsPSR7IlNlbGVjdCBQcm9kdWN0In0KICAgICAgICAgIC5vcHRpb25zPSR7W3tvcHRpb246IkJhc2ljIFBsYW4iLGtleToiYmFzaWMiLHBheWxvYWQ6e3ByaWNlOjkuOTksZmVhdHVyZXM6WyJGZWF0dXJlIEEiXX19LHtvcHRpb246IlBybyBQbGFuIixrZXk6InBybyIscGF5bG9hZDp7cHJpY2U6MTkuOTksZmVhdHVyZXM6WyJGZWF0dXJlIEEiLCJGZWF0dXJlIEIiXX19LHtvcHRpb246IkVudGVycHJpc2UgUGxhbiIsa2V5OiJlbnRlcnByaXNlIixwYXlsb2FkOntwcmljZTo0OS45OSxmZWF0dXJlczpbIkZlYXR1cmUgQSIsIkZlYXR1cmUgQiIsIkZlYXR1cmUgQyJdfX1dfQogICAgICAgID48L2RlZXMtaW5wdXQtZHJvcGRvd24+CiAgICAgICAgCiAgICAgICAgPGRpdiBpZD0ic2VsZWN0aW9uLW91dHB1dCIgc3R5bGU9Im1hcmdpbi10b3A6IDE2cHg7IHBhZGRpbmc6IDEycHg7IGJhY2tncm91bmQ6IHJnYmEoMCwgMTA1LCAyNDIsIDAuMSk7IGJvcmRlci1yYWRpdXM6IDRweDsgZm9udC1zaXplOiAxNHB4OyI+PC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57bGV0IGU9cy5xdWVyeVNlbGVjdG9yKCJkZWVzLWZvcm0iKSx0PXMucXVlcnlTZWxlY3RvcignZGVlcy1pbnB1dC1kcm9wZG93bltrZXk9InByb2plY3RUeXBlIl0nKSxhPXMucXVlcnlTZWxlY3RvcignZGVlcy1pbnB1dC1kcm9wZG93bltrZXk9ImZyYW1ld29yayJdJyk7ZSYmZS5hZGRFdmVudExpc3RlbmVyKCJmb3JtRGF0YSIsKHI9Pntjb25zb2xlLmxvZygiRm9ybSBzdWJtaXR0ZWQgd2l0aCBkYXRhOiIsci5kZXRhaWwuZGF0YSl9KSksdCYmYSYmdC5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3RlZE9wdGlvbiIsKHI9PntsZXQgbj1yLmRldGFpbC5rZXk7Y29uc29sZS5sb2coYFByb2plY3QgdHlwZSBjaGFuZ2VkIHRvOiAke259YCl9KSl9fT4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjcuIEZvcm0gSW50ZWdyYXRpb24ifSAuc3VidGl0bGU9JHsiRHJvcGRvd24gd29ya2luZyB3aXRoaW4gYSBmb3JtIHdpdGggdmFsaWRhdGlvbiJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1kcm9wZG93bgogICAgICAgICAgICAubGFiZWw9JHsiUHJvamVjdCBUeXBlIn0KICAgICAgICAgICAgLmtleT0keyJwcm9qZWN0VHlwZSJ9CiAgICAgICAgICAgIC5yZXF1aXJlZD0keyEwfQogICAgICAgICAgICAub3B0aW9ucz0ke1t7b3B0aW9uOiJXZWIgQXBwbGljYXRpb24iLGtleToid2ViIn0se29wdGlvbjoiTW9iaWxlIEFwcGxpY2F0aW9uIixrZXk6Im1vYmlsZSJ9LHtvcHRpb246IkRlc2t0b3AgQXBwbGljYXRpb24iLGtleToiZGVza3RvcCJ9LHtvcHRpb246IkFQSSBTZXJ2aWNlIixrZXk6ImFwaSJ9XX0KICAgICAgICAgID48L2RlZXMtaW5wdXQtZHJvcGRvd24+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWlucHV0LWRyb3Bkb3duCiAgICAgICAgICAgIC5sYWJlbD0keyJEZXZlbG9wbWVudCBGcmFtZXdvcmsifQogICAgICAgICAgICAua2V5PSR7ImZyYW1ld29yayJ9CiAgICAgICAgICAgIC5yZXF1aXJlZD0keyEwfQogICAgICAgICAgICAub3B0aW9ucz0ke1t7b3B0aW9uOiJSZWFjdCIsa2V5OiJyZWFjdCIscGF5bG9hZDp7dHlwZToid2ViIn19LHtvcHRpb246IlZ1ZS5qcyIsa2V5OiJ2dWUiLHBheWxvYWQ6e3R5cGU6IndlYiJ9fSx7b3B0aW9uOiJBbmd1bGFyIixrZXk6ImFuZ3VsYXIiLHBheWxvYWQ6e3R5cGU6IndlYiJ9fSx7b3B0aW9uOiJSZWFjdCBOYXRpdmUiLGtleToicmVhY3QtbmF0aXZlIixwYXlsb2FkOnt0eXBlOiJtb2JpbGUifX0se29wdGlvbjoiRmx1dHRlciIsa2V5OiJmbHV0dGVyIixwYXlsb2FkOnt0eXBlOiJtb2JpbGUifX0se29wdGlvbjoiRWxlY3Ryb24iLGtleToiZWxlY3Ryb24iLHBheWxvYWQ6e3R5cGU6ImRlc2t0b3AifX1dfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1kcm9wZG93bj4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtZm9ybS1zdWJtaXQgLnRleHQ9JHsiQ3JlYXRlIFByb2plY3QifT48L2RlZXMtZm9ybS1zdWJtaXQ+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KICA8L2Rpdj4KYCwiZGVtb0Z1bmMiKX0pO3ZhciBaMSxscix4bmUsamV0PWcoKCk9PntwZSgpO2t0KCk7em4oKTtDcigpO3B0KCk7RjEoKTtaMT1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sbHI9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LHhuZT0oKCk9PntsZXQgcz1bbmUoImRlZXMtaW5wdXQtZHJvcGRvd24tcG9wdXAiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXSxPLCQ9W10sRT1bXSxILGs9W10sUz1bXSxJLFA9W10sUj1bXSxLLFY9W10sVz1bXTt2YXIgbWU9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNJbnB1dERyb3Bkb3duUG9wdXAiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgQj10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOkFycmF5fSldLHA9W0woe3R5cGU6Qm9vbGVhbn0pXSxjPVtMKHt0eXBlOkJvb2xlYW59KV0seD1bTCh7YXR0cmlidXRlOiExfSldLHk9W0woe2F0dHJpYnV0ZTohMX0pXSxOPVtZKCldLE89W1koKV0sSD1bWSgpXSxJPVtZKCldLEs9W1koKV0sWjEodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJvcHRpb25zIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFU9PiJvcHRpb25zImluIFUsImhhcyIpLGdldDppKFU9PlUub3B0aW9ucywiZ2V0Iiksc2V0OmkoKFUsaGUpPT57VS5vcHRpb25zPWhlfSwic2V0Iil9LG1ldGFkYXRhOkJ9LG8sbCksWjEodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJlbmFibGVTZWFyY2giLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVT0+ImVuYWJsZVNlYXJjaCJpbiBVLCJoYXMiKSxnZXQ6aShVPT5VLmVuYWJsZVNlYXJjaCwiZ2V0Iiksc2V0OmkoKFUsaGUpPT57VS5lbmFibGVTZWFyY2g9aGV9LCJzZXQiKX0sbWV0YWRhdGE6Qn0sZCx1KSxaMSh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im9wZW5zVG9Ub3AiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVT0+Im9wZW5zVG9Ub3AiaW4gVSwiaGFzIiksZ2V0OmkoVT0+VS5vcGVuc1RvVG9wLCJnZXQiKSxzZXQ6aSgoVSxoZSk9PntVLm9wZW5zVG9Ub3A9aGV9LCJzZXQiKX0sbWV0YWRhdGE6Qn0sYix2KSxaMSh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InRyaWdnZXJSZWN0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFU9PiJ0cmlnZ2VyUmVjdCJpbiBVLCJoYXMiKSxnZXQ6aShVPT5VLnRyaWdnZXJSZWN0LCJnZXQiKSxzZXQ6aSgoVSxoZSk9PntVLnRyaWdnZXJSZWN0PWhlfSwic2V0Iil9LG1ldGFkYXRhOkJ9LG0sZiksWjEodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJvd25lckNvbXBvbmVudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4ib3duZXJDb21wb25lbnQiaW4gVSwiaGFzIiksZ2V0OmkoVT0+VS5vd25lckNvbXBvbmVudCwiZ2V0Iiksc2V0OmkoKFUsaGUpPT57VS5vd25lckNvbXBvbmVudD1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxNLHopLFoxKHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZmlsdGVyZWRPcHRpb25zIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFU9PiJmaWx0ZXJlZE9wdGlvbnMiaW4gVSwiaGFzIiksZ2V0OmkoVT0+VS5maWx0ZXJlZE9wdGlvbnMsImdldCIpLHNldDppKChVLGhlKT0+e1UuZmlsdGVyZWRPcHRpb25zPWhlfSwic2V0Iil9LG1ldGFkYXRhOkJ9LEMsXyksWjEodGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJoaWdobGlnaHRlZEluZGV4IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFU9PiJoaWdobGlnaHRlZEluZGV4ImluIFUsImhhcyIpLGdldDppKFU9PlUuaGlnaGxpZ2h0ZWRJbmRleCwiZ2V0Iiksc2V0OmkoKFUsaGUpPT57VS5oaWdobGlnaHRlZEluZGV4PWhlfSwic2V0Iil9LG1ldGFkYXRhOkJ9LCQsRSksWjEodGhpcyxudWxsLEgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWFyY2hWYWx1ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4ic2VhcmNoVmFsdWUiaW4gVSwiaGFzIiksZ2V0OmkoVT0+VS5zZWFyY2hWYWx1ZSwiZ2V0Iiksc2V0OmkoKFUsaGUpPT57VS5zZWFyY2hWYWx1ZT1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxrLFMpLFoxKHRoaXMsbnVsbCxJLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWVudVpJbmRleCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4ibWVudVpJbmRleCJpbiBVLCJoYXMiKSxnZXQ6aShVPT5VLm1lbnVaSW5kZXgsImdldCIpLHNldDppKChVLGhlKT0+e1UubWVudVpJbmRleD1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxQLFIpLFoxKHRoaXMsbnVsbCxLLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidmlzaWJsZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4idmlzaWJsZSJpbiBVLCJoYXMiKSxnZXQ6aShVPT5VLnZpc2libGUsImdldCIpLHNldDppKChVLGhlKT0+e1UudmlzaWJsZT1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxWLFcpLFoxKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOkJ9LG51bGwsdCksbWU9YT1lLnZhbHVlLEImJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Qn0pfSNlPWxyKHRoaXMsbyxbXSk7Z2V0IG9wdGlvbnMoKXtyZXR1cm4gdGhpcy4jZX1zZXQgb3B0aW9ucyhCKXt0aGlzLiNlPUJ9I3Q9KGxyKHRoaXMsbCksbHIodGhpcyxkLCEwKSk7Z2V0IGVuYWJsZVNlYXJjaCgpe3JldHVybiB0aGlzLiN0fXNldCBlbmFibGVTZWFyY2goQil7dGhpcy4jdD1CfSNhPShscih0aGlzLHUpLGxyKHRoaXMsYiwhMSkpO2dldCBvcGVuc1RvVG9wKCl7cmV0dXJuIHRoaXMuI2F9c2V0IG9wZW5zVG9Ub3AoQil7dGhpcy4jYT1CfSNzPShscih0aGlzLHYpLGxyKHRoaXMsbSxudWxsKSk7Z2V0IHRyaWdnZXJSZWN0KCl7cmV0dXJuIHRoaXMuI3N9c2V0IHRyaWdnZXJSZWN0KEIpe3RoaXMuI3M9Qn0jaT0obHIodGhpcyxmKSxscih0aGlzLE0sbnVsbCkpO2dldCBvd25lckNvbXBvbmVudCgpe3JldHVybiB0aGlzLiNpfXNldCBvd25lckNvbXBvbmVudChCKXt0aGlzLiNpPUJ9I3I9KGxyKHRoaXMseiksbHIodGhpcyxDLFtdKSk7Z2V0IGZpbHRlcmVkT3B0aW9ucygpe3JldHVybiB0aGlzLiNyfXNldCBmaWx0ZXJlZE9wdGlvbnMoQil7dGhpcy4jcj1CfSNvPShscih0aGlzLF8pLGxyKHRoaXMsJCwwKSk7Z2V0IGhpZ2hsaWdodGVkSW5kZXgoKXtyZXR1cm4gdGhpcy4jb31zZXQgaGlnaGxpZ2h0ZWRJbmRleChCKXt0aGlzLiNvPUJ9I249KGxyKHRoaXMsRSksbHIodGhpcyxrLCIiKSk7Z2V0IHNlYXJjaFZhbHVlKCl7cmV0dXJuIHRoaXMuI259c2V0IHNlYXJjaFZhbHVlKEIpe3RoaXMuI249Qn0jbD0obHIodGhpcyxTKSxscih0aGlzLFAsMWUzKSk7Z2V0IG1lbnVaSW5kZXgoKXtyZXR1cm4gdGhpcy4jbH1zZXQgbWVudVpJbmRleChCKXt0aGlzLiNsPUJ9I2M9KGxyKHRoaXMsUiksbHIodGhpcyxWLCExKSk7Z2V0IHZpc2libGUoKXtyZXR1cm4gdGhpcy4jY31zZXQgdmlzaWJsZShCKXt0aGlzLiNjPUJ9d2luZG93TGF5ZXI9KGxyKHRoaXMsVyksbnVsbCk7aXNEZXN0cm95aW5nPSExO3N0YXRpYyBzdHlsZXM9W0hlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHdpZHRoOiAwOwogICAgICAgIGhlaWdodDogMDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICBmb250LWZhbWlseTogJHtOYX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxNSUpIiwiaHNsKDAgMCUgOTAlKSIpfTsKICAgICAgfQoKICAgICAgKiB7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLnNlbGVjdGlvbkJveCB7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOwogICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm0sIG9wYWNpdHk7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLThweCkgc2NhbGUoMC45OCk7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDEwMCUpIiwiaHNsKDAgMCUgMy45JSkiKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgwIDAlIDg5LjglKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgICBib3gtc2hhZG93OiAwIDRweCA2cHggLTFweCBoc2woMCAwJSAwJSAvIDAuMSksIDAgMnB4IDRweCAtMnB4IGhzbCgwIDAlIDAlIC8gMC4xKTsKICAgICAgICBtaW4taGVpZ2h0OiA0MHB4OwogICAgICAgIG1heC1oZWlnaHQ6IDMwMHB4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICB9CgogICAgICAuc2VsZWN0aW9uQm94LnRvcCB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDhweCkgc2NhbGUoMC45OCk7CiAgICAgIH0KCiAgICAgIC5zZWxlY3Rpb25Cb3guc2hvdyB7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC5vcHRpb25zLWNvbnRhaW5lciB7CiAgICAgICAgbWF4LWhlaWdodDogMjUwcHg7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBwYWRkaW5nOiA0cHg7CiAgICAgIH0KCiAgICAgIC5vcHRpb24gewogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIGxpbmUtaGVpZ2h0OiAzMnB4OwogICAgICAgIHBhZGRpbmc6IDAgOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBtYXJnaW46IDJweCAwOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxNSUpIiwiaHNsKDAgMCUgOTAlKSIpfTsKICAgICAgfQoKICAgICAgLm9wdGlvbi5oaWdobGlnaHRlZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk1LjElKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgfQoKICAgICAgLm9wdGlvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk1LjElKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDklKSIsImhzbCgwIDAlIDk1JSkiKX07CiAgICAgIH0KCiAgICAgIC5uby1vcHRpb25zIHsKICAgICAgICBwYWRkaW5nOiA4cHg7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDQ1LjElKSIsImhzbCgwIDAlIDYzLjklKSIpfTsKICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgIH0KCiAgICAgIC5zZWFyY2ggewogICAgICAgIHBhZGRpbmc6IDRweDsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgwIDAlIDg5LjglKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7CiAgICAgIH0KCiAgICAgIC5zZWFyY2ggaW5wdXQgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMzJweDsKICAgICAgICBwYWRkaW5nOiAwIDhweDsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDAgMCUgODkuOCUpIiwiaHNsKDAgMCUgMTQuOSUpIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBjb2xvcjogaW5oZXJpdDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXMgZWFzZTsKICAgICAgfQoKICAgICAgLnNlYXJjaCBpbnB1dDo6cGxhY2Vob2xkZXIgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNjMuOSUpIiwiaHNsKDAgMCUgNDUuMSUpIil9OwogICAgICB9CgogICAgICAuc2VhcmNoIGlucHV0OmZvY3VzIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUpIiwiaHNsKDIxNy4yIDkxLjIlIDU5LjglKSIpfTsKICAgICAgfQoKICAgICAgLm9wdGlvbnMtY29udGFpbmVyOjotd2Via2l0LXNjcm9sbGJhciB7CiAgICAgICAgd2lkdGg6IDhweDsKICAgICAgfQoKICAgICAgLm9wdGlvbnMtY29udGFpbmVyOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgIH0KCiAgICAgIC5vcHRpb25zLWNvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4OS44JSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICB9CgogICAgICAub3B0aW9ucy1jb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNzkuOCUpIiwiaHNsKDAgMCUgMjAuOSUpIil9OwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtpZighdGhpcy50cmlnZ2VyUmVjdClyZXR1cm4gd2BgO2xldCBCPXRoaXMuY29tcHV0ZVBvc2l0aW9uU3R5bGUoKTtyZXR1cm4gd2AKICAgICAgPGRpdgogICAgICAgIGNsYXNzPSJzZWxlY3Rpb25Cb3ggJHt0aGlzLnZpc2libGU/InNob3ciOiIifSAke3RoaXMub3BlbnNUb1RvcD8idG9wIjoiYm90dG9tIn0iCiAgICAgICAgc3R5bGU9IiR7Qn07IHotaW5kZXg6ICR7dGhpcy5tZW51WkluZGV4fTsiCiAgICAgID4KICAgICAgICAke3RoaXMuZW5hYmxlU2VhcmNoP3dgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VhcmNoIj4KICAgICAgICAgICAgICAgIDxpbnB1dAogICAgICAgICAgICAgICAgICB0eXBlPSJ0ZXh0IgogICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj0iU2VhcmNoIG9wdGlvbnMuLi4iCiAgICAgICAgICAgICAgICAgIC52YWx1ZT0iJHt0aGlzLnNlYXJjaFZhbHVlfSIKICAgICAgICAgICAgICAgICAgQGlucHV0PSIke3RoaXMuaGFuZGxlU2VhcmNofSIKICAgICAgICAgICAgICAgICAgQGNsaWNrPSIke1U9PlUuc3RvcFByb3BhZ2F0aW9uKCl9IgogICAgICAgICAgICAgICAgICBAa2V5ZG93bj0iJHt0aGlzLmhhbmRsZVNlYXJjaEtleWRvd259IgogICAgICAgICAgICAgICAgLz4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYDpudWxsfQogICAgICAgIDxkaXYgY2xhc3M9Im9wdGlvbnMtY29udGFpbmVyIj4KICAgICAgICAgICR7dGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoPT09MD93YDxkaXYgY2xhc3M9Im5vLW9wdGlvbnMiPk5vIG9wdGlvbnMgZm91bmQ8L2Rpdj5gOnRoaXMuZmlsdGVyZWRPcHRpb25zLm1hcCgoVSxoZSk9PntsZXQgRj10aGlzLmhpZ2hsaWdodGVkSW5kZXg9PT1oZTtyZXR1cm4gd2AKICAgICAgICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJvcHRpb24gJHtGPyJoaWdobGlnaHRlZCI6IiJ9IgogICAgICAgICAgICAgICAgICAgIEBjbGljaz0iJHsoKT0+dGhpcy5zZWxlY3RPcHRpb24oVSl9IgogICAgICAgICAgICAgICAgICAgIEBtb3VzZWVudGVyPSIkeygpPT50aGlzLmhpZ2hsaWdodGVkSW5kZXg9aGV9IgogICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgJHtVLm9wdGlvbn0KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICBgfSl9CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1jb21wdXRlUG9zaXRpb25TdHlsZSgpe2xldCBCPXRoaXMudHJpZ2dlclJlY3QsVT1CLmxlZnQsaGU9Qi53aWR0aDtpZih0aGlzLm9wZW5zVG9Ub3Ape2xldCBGPXdpbmRvdy5pbm5lckhlaWdodC1CLnRvcCs0O3JldHVybmBsZWZ0OiAke1V9cHg7IHdpZHRoOiAke2hlfXB4OyBib3R0b206ICR7Rn1weDsgdG9wOiBhdXRvYH1lbHNle2xldCBGPUIuYm90dG9tKzQ7cmV0dXJuYGxlZnQ6ICR7VX1weDsgd2lkdGg6ICR7aGV9cHg7IHRvcDogJHtGfXB4YH19YXN5bmMgc2hvdygpe3RoaXMuZmlsdGVyZWRPcHRpb25zPXRoaXMub3B0aW9ucyx0aGlzLmhpZ2hsaWdodGVkSW5kZXg9MCx0aGlzLnNlYXJjaFZhbHVlPSIiLHRoaXMud2luZG93TGF5ZXI9YXdhaXQgaG8uY3JlYXRlQW5kU2hvdygpLHRoaXMud2luZG93TGF5ZXIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY2xvc2UtcmVxdWVzdCIpKX0pLHRoaXMubWVudVpJbmRleD14YS5nZXROZXh0WkluZGV4KCkseGEucmVnaXN0ZXIodGhpcyx0aGlzLm1lbnVaSW5kZXgpLHRoaXMuc3R5bGUuekluZGV4PXRoaXMubWVudVpJbmRleC50b1N0cmluZygpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcyksYXdhaXQgdXQuc21hcnRkZWxheS5kZWxheUZvcigwKSx0aGlzLnZpc2libGU9ITAsd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5oYW5kbGVTY3JvbGxPclJlc2l6ZSx7Y2FwdHVyZTohMCxwYXNzaXZlOiEwfSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5oYW5kbGVTY3JvbGxPclJlc2l6ZSx7cGFzc2l2ZTohMH0pfWFzeW5jIGhpZGUoKXt0aGlzLmlzRGVzdHJveWluZ3x8KHRoaXMuaXNEZXN0cm95aW5nPSEwLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMuaGFuZGxlU2Nyb2xsT3JSZXNpemUse2NhcHR1cmU6ITB9KSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLmhhbmRsZVNjcm9sbE9yUmVzaXplKSx4YS51bnJlZ2lzdGVyKHRoaXMpLHRoaXMuc2VhcmNoVmFsdWU9IiIsdGhpcy5maWx0ZXJlZE9wdGlvbnM9dGhpcy5vcHRpb25zLHRoaXMuaGlnaGxpZ2h0ZWRJbmRleD0wLHRoaXMud2luZG93TGF5ZXImJih0aGlzLndpbmRvd0xheWVyLmRlc3Ryb3koKSx0aGlzLndpbmRvd0xheWVyPW51bGwpLHRoaXMudmlzaWJsZT0hMSxhd2FpdCB1dC5zbWFydGRlbGF5LmRlbGF5Rm9yKDE1MCksdGhpcy5wYXJlbnRFbGVtZW50JiZ0aGlzLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcyksdGhpcy5pc0Rlc3Ryb3lpbmc9ITEpfWFzeW5jIGZvY3VzU2VhcmNoSW5wdXQoKXthd2FpdCB0aGlzLnVwZGF0ZUNvbXBsZXRlO2xldCBCPXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIuc2VhcmNoIGlucHV0Iik7QiYmQi5mb2N1cygpfXVwZGF0ZU9wdGlvbnMoQil7aWYodGhpcy5vcHRpb25zPUIsdGhpcy5zZWFyY2hWYWx1ZSl7bGV0IFU9dGhpcy5zZWFyY2hWYWx1ZS50b0xvd2VyQ2FzZSgpO3RoaXMuZmlsdGVyZWRPcHRpb25zPXRoaXMub3B0aW9ucy5maWx0ZXIoaGU9PmhlLm9wdGlvbi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFUpKX1lbHNlIHRoaXMuZmlsdGVyZWRPcHRpb25zPXRoaXMub3B0aW9uczt0aGlzLmhpZ2hsaWdodGVkSW5kZXg9MH1zZWxlY3RPcHRpb24oQil7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgib3B0aW9uLXNlbGVjdGVkIix7ZGV0YWlsOkJ9KSl9aGFuZGxlU2VhcmNoPWkoQj0+e2xldCBVPUIudGFyZ2V0LnZhbHVlO3RoaXMuc2VhcmNoVmFsdWU9VTtsZXQgaGU9VS50b0xvd2VyQ2FzZSgpO3RoaXMuZmlsdGVyZWRPcHRpb25zPXRoaXMub3B0aW9ucy5maWx0ZXIoRj0+Ri5vcHRpb24udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhoZSkpLHRoaXMuaGlnaGxpZ2h0ZWRJbmRleD0wfSwiaGFuZGxlU2VhcmNoIik7aGFuZGxlU2VhcmNoS2V5ZG93bj1pKEI9PntsZXQgVT1CLmtleSxoZT10aGlzLmZpbHRlcmVkT3B0aW9ucy5sZW5ndGgtMTtVPT09IkFycm93RG93biI/KEIucHJldmVudERlZmF1bHQoKSx0aGlzLmhpZ2hsaWdodGVkSW5kZXg9dGhpcy5oaWdobGlnaHRlZEluZGV4KzE+aGU/MDp0aGlzLmhpZ2hsaWdodGVkSW5kZXgrMSk6VT09PSJBcnJvd1VwIj8oQi5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuaGlnaGxpZ2h0ZWRJbmRleD10aGlzLmhpZ2hsaWdodGVkSW5kZXgtMTwwP2hlOnRoaXMuaGlnaGxpZ2h0ZWRJbmRleC0xKTpVPT09IkVudGVyIj8oQi5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuZmlsdGVyZWRPcHRpb25zW3RoaXMuaGlnaGxpZ2h0ZWRJbmRleF0mJnRoaXMuc2VsZWN0T3B0aW9uKHRoaXMuZmlsdGVyZWRPcHRpb25zW3RoaXMuaGlnaGxpZ2h0ZWRJbmRleF0pKTpVPT09IkVzY2FwZSImJihCLnByZXZlbnREZWZhdWx0KCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY2xvc2UtcmVxdWVzdCIpKSl9LCJoYW5kbGVTZWFyY2hLZXlkb3duIik7aGFuZGxlU2Nyb2xsT3JSZXNpemU9aSgoKT0+e3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInJlcG9zaXRpb24tcmVxdWVzdCIpKX0sImhhbmRsZVNjcm9sbE9yUmVzaXplIik7YXN5bmMgZGlzY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMuaGFuZGxlU2Nyb2xsT3JSZXNpemUse2NhcHR1cmU6ITB9KSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLmhhbmRsZVNjcm9sbE9yUmVzaXplKSx4YS51bnJlZ2lzdGVyKHRoaXMpfXN0YXRpY3tscihhLHQpfX07cmV0dXJuIG1lPWF9KSgpfSk7dmFyIHB2LFgxLHluZSx3bmU9ZygoKT0+e3BlKCk7bjBhKCk7emkoKTtDcigpO3B0KCk7amV0KCk7cHY9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LFgxPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSx5bmU9KCgpPT57bGV0IHM9W25lKCJkZWVzLWlucHV0LWRyb3Bkb3duIildLGUsdD1bXSxhLHI9T3QsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W107dmFyIE49Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNJbnB1dERyb3Bkb3duIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IEM9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCgpXSxwPVtMKCldLGM9W0woe3R5cGU6Qm9vbGVhbn0pXSx4PVtMKHt0eXBlOkJvb2xlYW4scmVmbGVjdDohMH0pXSx5PVtZKCldLHB2KHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToib3B0aW9ucyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4ib3B0aW9ucyJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLm9wdGlvbnMsImdldCIpLHNldDppKChfLE8pPT57Xy5vcHRpb25zPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sbyxsKSxwdih0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlbGVjdGVkT3B0aW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJzZWxlY3RlZE9wdGlvbiJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLnNlbGVjdGVkT3B0aW9uLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uc2VsZWN0ZWRPcHRpb249T30sInNldCIpfSxtZXRhZGF0YTpDfSxkLHUpLHB2KHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZW5hYmxlU2VhcmNoIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJlbmFibGVTZWFyY2giaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5lbmFibGVTZWFyY2gsImdldCIpLHNldDppKChfLE8pPT57Xy5lbmFibGVTZWFyY2g9T30sInNldCIpfSxtZXRhZGF0YTpDfSxiLHYpLHB2KHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToidmludGVncmF0ZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+InZpbnRlZ3JhdGVkImluIF8sImhhcyIpLGdldDppKF89Pl8udmludGVncmF0ZWQsImdldCIpLHNldDppKChfLE8pPT57Xy52aW50ZWdyYXRlZD1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LG0sZikscHYodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpc09wZW5lZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4iaXNPcGVuZWQiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5pc09wZW5lZCwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLmlzT3BlbmVkPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sTSx6KSxwdihudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpDfSxudWxsLHQpLE49YT1lLnZhbHVlLEMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Q30pfXN0YXRpYyBkZW1vPW8wYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIklucHV0Il07I2U9WDEodGhpcyxvLFtdKTtnZXQgb3B0aW9ucygpe3JldHVybiB0aGlzLiNlfXNldCBvcHRpb25zKEMpe3RoaXMuI2U9Q30jdD0oWDEodGhpcyxsKSxYMSh0aGlzLGQsbnVsbCkpO2dldCBzZWxlY3RlZE9wdGlvbigpe3JldHVybiB0aGlzLiN0fXNldCBzZWxlY3RlZE9wdGlvbihDKXt0aGlzLiN0PUN9Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuc2VsZWN0ZWRPcHRpb259c2V0IHZhbHVlKEMpe3RoaXMuc2VsZWN0ZWRPcHRpb249Q30jYT0oWDEodGhpcyx1KSxYMSh0aGlzLGIsITApKTtnZXQgZW5hYmxlU2VhcmNoKCl7cmV0dXJuIHRoaXMuI2F9c2V0IGVuYWJsZVNlYXJjaChDKXt0aGlzLiNhPUN9I3M9KFgxKHRoaXMsdiksWDEodGhpcyxtLCExKSk7Z2V0IHZpbnRlZ3JhdGVkKCl7cmV0dXJuIHRoaXMuI3N9c2V0IHZpbnRlZ3JhdGVkKEMpe3RoaXMuI3M9Q30jaT0oWDEodGhpcyxmKSxYMSh0aGlzLE0sITEpKTtnZXQgaXNPcGVuZWQoKXtyZXR1cm4gdGhpcy4jaX1zZXQgaXNPcGVuZWQoQyl7dGhpcy4jaT1DfXBvcHVwSW5zdGFuY2U9KFgxKHRoaXMseiksbnVsbCk7c3RhdGljIHN0eWxlcz1bSGUsLi4uT3QuYmFzZVN0eWxlcyxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgKiB7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgOmhvc3QgewogICAgICAgIGZvbnQtZmFtaWx5OiAke05hfTsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxNSUpIiwiaHNsKDAgMCUgOTAlKSIpfTsKICAgICAgfQoKICAgICAgLm1haW5jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgLnNlbGVjdGVkQm94IHsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiA0MHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAzOHB4OwogICAgICAgIHBhZGRpbmc6IDAgNDBweCAwIDEycHg7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgwIDAlIDg5LjglKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOSUpIiwiaHNsKDAgMCUgOTUlKSIpfTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CgogICAgICAuc2VsZWN0ZWRCb3g6aG92ZXI6bm90KC5kaXNhYmxlZCkgewogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDc5LjglKSIsImhzbCgwIDAlIDIwLjklKSIpfTsKICAgICAgfQoKICAgICAgLnNlbGVjdGVkQm94OmZvY3VzLXZpc2libGUgewogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDUxLjIlKSIsImhzbCgyMTcuMiA5MS4yJSA1OS44JSkiKX07CiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUgLyAwLjEpIiwiaHNsKDIxNy4yIDkxLjIlIDU5LjglIC8gMC4xKSIpfTsKICAgICAgfQoKICAgICAgLnNlbGVjdGVkQm94LmRpc2FibGVkIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTUuMSUpIiwiaHNsKDAgMCUgMTQuOSUpIil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDg5LjglKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDYzLjklKSIsImhzbCgwIDAlIDQ1LjElKSIpfTsKICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgfQoKICAgICAgLyogRHJvcGRvd24gYXJyb3cgKi8KICAgICAgLnNlbGVjdGVkQm94OjphZnRlciB7CiAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHJpZ2h0OiAxMnB4OwogICAgICAgIHRvcDogNTAlOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgICAgICB3aWR0aDogMDsKICAgICAgICBoZWlnaHQ6IDA7CiAgICAgICAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXItcmlnaHQ6IDRweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXItdG9wOiA0cHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgwIDAlIDQ1LjElKSIsImhzbCgwIDAlIDYzLjklKSIpfTsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xNXMgZWFzZTsKICAgICAgfQoKICAgICAgLnNlbGVjdGVkQm94Lm9wZW46OmFmdGVyIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKDE4MGRlZyk7CiAgICAgIH0KCiAgICAgIC8qIFZpc3VhbGx5IGludGVncmF0ZWQgbW9kZTogc2hlZCBjaHJvbWUgdG8gYmxlbmQgaW50byBhIGhvc3QgY29tcG9uZW50CiAgICAgICAgIChlLmcuIGEgZGVlcy10YWJsZSBjZWxsIGluIGVkaXQgbW9kZSkuICovCiAgICAgIDpob3N0KFt2aW50ZWdyYXRlZF0pIGRlZXMtbGFiZWwgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KICAgICAgOmhvc3QoW3ZpbnRlZ3JhdGVkXSkgLm1haW5jb250YWluZXIgewogICAgICAgIGhlaWdodDogNDBweDsKICAgICAgfQogICAgICA6aG9zdChbdmludGVncmF0ZWRdKSAuc2VsZWN0ZWRCb3ggewogICAgICAgIGhlaWdodDogNDBweDsKICAgICAgICBsaW5lLWhlaWdodDogNDBweDsKICAgICAgICBwYWRkaW5nOiAwIDMycHggMCAxNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMDsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3gtc2hhZG93OiBub25lOwogICAgICAgIHRyYW5zaXRpb246IG5vbmU7CiAgICAgIH0KICAgICAgOmhvc3QoW3ZpbnRlZ3JhdGVkXSkgLnNlbGVjdGVkQm94OmhvdmVyOm5vdCguZGlzYWJsZWQpLAogICAgICA6aG9zdChbdmludGVncmF0ZWRdKSAuc2VsZWN0ZWRCb3g6Zm9jdXMtdmlzaWJsZSB7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgIH0KICAgICAgOmhvc3QoW3ZpbnRlZ3JhdGVkXSkgLnNlbGVjdGVkQm94OjphZnRlciB7CiAgICAgICAgcmlnaHQ6IDEycHg7CiAgICAgICAgb3BhY2l0eTogMC42OwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iaW5wdXQtd3JhcHBlciI+CiAgICAgICAgPGRlZXMtbGFiZWwgLmxhYmVsPSR7dGhpcy5sYWJlbH0gLmluZm9UZXh0PSR7dGhpcy5pbmZvVGV4dH0gLnJlcXVpcmVkPSR7dGhpcy5yZXF1aXJlZH0+PC9kZWVzLWxhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9Im1haW5jb250YWluZXIiPgogICAgICAgICAgPGRpdgogICAgICAgICAgICBjbGFzcz0ic2VsZWN0ZWRCb3ggJHt0aGlzLmlzT3BlbmVkPyJvcGVuIjoiIn0gJHt0aGlzLmRpc2FibGVkPyJkaXNhYmxlZCI6IiJ9IgogICAgICAgICAgICBAY2xpY2s9IiR7KCk9PiF0aGlzLmRpc2FibGVkJiZ0aGlzLnRvZ2dsZVNlbGVjdGlvbkJveCgpfSIKICAgICAgICAgICAgdGFiaW5kZXg9IiR7dGhpcy5kaXNhYmxlZD8iLTEiOiIwIn0iCiAgICAgICAgICAgIEBrZXlkb3duPSIke3RoaXMuaGFuZGxlU2VsZWN0ZWRCb3hLZXlkb3dufSIKICAgICAgICAgID4KICAgICAgICAgICAgJHt0aGlzLnNlbGVjdGVkT3B0aW9uPy5vcHRpb258fCJTZWxlY3QgYW4gb3B0aW9uIn0KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgICR7dGhpcy5yZW5kZXJEZXNjcmlwdGlvbigpfQogICAgICA8L2Rpdj4KICAgIGB9Zmlyc3RVcGRhdGVkKCl7dGhpcy5zZWxlY3RlZE9wdGlvbj10aGlzLnNlbGVjdGVkT3B0aW9ufHxudWxsfXVwZGF0ZWQoQyl7c3VwZXIudXBkYXRlZChDKSxDLmhhcygib3B0aW9ucyIpJiZ0aGlzLnBvcHVwSW5zdGFuY2UmJnRoaXMuaXNPcGVuZWQmJnRoaXMucG9wdXBJbnN0YW5jZS51cGRhdGVPcHRpb25zKHRoaXMub3B0aW9ucyl9YXN5bmMgdXBkYXRlU2VsZWN0aW9uKEMpe3RoaXMuc2VsZWN0ZWRPcHRpb249Qyx0aGlzLmNsb3NlUG9wdXAoKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJzZWxlY3RlZE9wdGlvbiIse2RldGFpbDpDLGJ1YmJsZXM6ITB9KSksdGhpcy5jaGFuZ2VTdWJqZWN0Lm5leHQodGhpcyl9YXN5bmMgdG9nZ2xlU2VsZWN0aW9uQm94KCl7aWYodGhpcy5pc09wZW5lZCl7dGhpcy5jbG9zZVBvcHVwKCk7cmV0dXJufXRoaXMuaXNPcGVuZWQ9ITA7bGV0IF89dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5zZWxlY3RlZEJveCIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLE89d2luZG93LmlubmVySGVpZ2h0LV8uYm90dG9tLCQ9Xy50b3AsRT1PPDMwMCYmJD5PO3RoaXMucG9wdXBJbnN0YW5jZXx8KHRoaXMucG9wdXBJbnN0YW5jZT1uZXcgeG5lKSx0aGlzLnBvcHVwSW5zdGFuY2Uub3B0aW9ucz10aGlzLm9wdGlvbnMsdGhpcy5wb3B1cEluc3RhbmNlLmVuYWJsZVNlYXJjaD10aGlzLmVuYWJsZVNlYXJjaCx0aGlzLnBvcHVwSW5zdGFuY2Uub3BlbnNUb1RvcD1FLHRoaXMucG9wdXBJbnN0YW5jZS50cmlnZ2VyUmVjdD1fLHRoaXMucG9wdXBJbnN0YW5jZS5vd25lckNvbXBvbmVudD10aGlzLHRoaXMucG9wdXBJbnN0YW5jZS5hZGRFdmVudExpc3RlbmVyKCJvcHRpb24tc2VsZWN0ZWQiLHRoaXMuaGFuZGxlT3B0aW9uU2VsZWN0ZWQpLHRoaXMucG9wdXBJbnN0YW5jZS5hZGRFdmVudExpc3RlbmVyKCJjbG9zZS1yZXF1ZXN0Iix0aGlzLmhhbmRsZUNsb3NlUmVxdWVzdCksdGhpcy5wb3B1cEluc3RhbmNlLmFkZEV2ZW50TGlzdGVuZXIoInJlcG9zaXRpb24tcmVxdWVzdCIsdGhpcy5oYW5kbGVSZXBvc2l0aW9uUmVxdWVzdCksYXdhaXQgdGhpcy5wb3B1cEluc3RhbmNlLnNob3coKSx0aGlzLmVuYWJsZVNlYXJjaCYmYXdhaXQgdGhpcy5wb3B1cEluc3RhbmNlLmZvY3VzU2VhcmNoSW5wdXQoKX1jbG9zZVBvcHVwKCl7dGhpcy5pc09wZW5lZD0hMSx0aGlzLnBvcHVwSW5zdGFuY2UmJih0aGlzLnBvcHVwSW5zdGFuY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigib3B0aW9uLXNlbGVjdGVkIix0aGlzLmhhbmRsZU9wdGlvblNlbGVjdGVkKSx0aGlzLnBvcHVwSW5zdGFuY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xvc2UtcmVxdWVzdCIsdGhpcy5oYW5kbGVDbG9zZVJlcXVlc3QpLHRoaXMucG9wdXBJbnN0YW5jZS5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXBvc2l0aW9uLXJlcXVlc3QiLHRoaXMuaGFuZGxlUmVwb3NpdGlvblJlcXVlc3QpLHRoaXMucG9wdXBJbnN0YW5jZS5oaWRlKCkpfWhhbmRsZU9wdGlvblNlbGVjdGVkPWkoQz0+e2xldCBfPUMuZGV0YWlsO3RoaXMudXBkYXRlU2VsZWN0aW9uKF8pfSwiaGFuZGxlT3B0aW9uU2VsZWN0ZWQiKTtoYW5kbGVDbG9zZVJlcXVlc3Q9aSgoKT0+e3RoaXMuY2xvc2VQb3B1cCgpfSwiaGFuZGxlQ2xvc2VSZXF1ZXN0Iik7aGFuZGxlUmVwb3NpdGlvblJlcXVlc3Q9aSgoKT0+e2lmKCF0aGlzLnBvcHVwSW5zdGFuY2V8fCF0aGlzLmlzT3BlbmVkKXJldHVybjtsZXQgQz10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLnNlbGVjdGVkQm94Iik7aWYoIUMpcmV0dXJuO2xldCBfPUMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoXy5ib3R0b208MHx8Xy50b3A+d2luZG93LmlubmVySGVpZ2h0KXt0aGlzLmNsb3NlUG9wdXAoKTtyZXR1cm59bGV0IE89d2luZG93LmlubmVySGVpZ2h0LV8uYm90dG9tLCQ9Xy50b3A7dGhpcy5wb3B1cEluc3RhbmNlLm9wZW5zVG9Ub3A9TzwzMDAmJiQ+Tyx0aGlzLnBvcHVwSW5zdGFuY2UudHJpZ2dlclJlY3Q9X30sImhhbmRsZVJlcG9zaXRpb25SZXF1ZXN0Iik7aGFuZGxlU2VsZWN0ZWRCb3hLZXlkb3duKEMpe3RoaXMuZGlzYWJsZWR8fChDLmtleT09PSJFbnRlciJ8fEMua2V5PT09IiAiPyhDLnByZXZlbnREZWZhdWx0KCksdGhpcy50b2dnbGVTZWxlY3Rpb25Cb3goKSk6Qy5rZXk9PT0iQXJyb3dEb3duInx8Qy5rZXk9PT0iQXJyb3dVcCI/KEMucHJldmVudERlZmF1bHQoKSx0aGlzLmlzT3BlbmVkfHx0aGlzLnRvZ2dsZVNlbGVjdGlvbkJveCgpKTpDLmtleT09PSJFc2NhcGUiJiYoQy5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuaXNPcGVuZWQmJnRoaXMuY2xvc2VQb3B1cCgpKSl9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy5zZWxlY3RlZE9wdGlvbn1zZXRWYWx1ZShDKXt0aGlzLnNlbGVjdGVkT3B0aW9uPUN9YXN5bmMgZGlzY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMucG9wdXBJbnN0YW5jZSYmKHRoaXMucG9wdXBJbnN0YW5jZS5yZW1vdmVFdmVudExpc3RlbmVyKCJvcHRpb24tc2VsZWN0ZWQiLHRoaXMuaGFuZGxlT3B0aW9uU2VsZWN0ZWQpLHRoaXMucG9wdXBJbnN0YW5jZS5yZW1vdmVFdmVudExpc3RlbmVyKCJjbG9zZS1yZXF1ZXN0Iix0aGlzLmhhbmRsZUNsb3NlUmVxdWVzdCksdGhpcy5wb3B1cEluc3RhbmNlLnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlcG9zaXRpb24tcmVxdWVzdCIsdGhpcy5oYW5kbGVSZXBvc2l0aW9uUmVxdWVzdCksdGhpcy5wb3B1cEluc3RhbmNlLmhpZGUoKSx0aGlzLnBvcHVwSW5zdGFuY2U9bnVsbCl9c3RhdGlje1gxKGEsdCl9fTtyZXR1cm4gTj1hfSkoKX0pO3ZhciBsMGEsYzBhPWcoKCk9PntwZSgpO1ZldCgpO2ZvKCk7bDBhPWkoKCk9PndgCiAgPGRlZXMtZGVtb3dyYXBwZXI+CiAgICA8c3R5bGU+CiAgICAgICR7SmAKICAgICAgICAuZGVtby1zaGVsbCB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgIGdhcDogMzJweDsKICAgICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgICBtYXgtd2lkdGg6IDExNjBweDsKICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgIH0KCiAgICAgICAgLmRlbW8tZ3JpZCB7CiAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgIH0KCiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDk2MHB4KSB7CiAgICAgICAgICAuZGVtby1ncmlkLS10d28gewogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAuZGVtby1zdGFjayB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgIGdhcDogMThweDsKICAgICAgICB9CgogICAgICAgIC5kZW1vLW5vdGUgewogICAgICAgICAgbWFyZ2luLXRvcDogMTZweDsKICAgICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgyMTcgOTElIDkwJSkiLCJoc2woMjE1IDIwJSAyNiUpIil9OwogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTMgMTAwJSA5NyUpIiwiaHNsKDIxNSAyMCUgMTIlKSIpfTsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNSAyNSUgMzIlKSIsImhzbCgyMTUgMjAlIDgyJSkiKX07CiAgICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgICBsaW5lLWhlaWdodDogMS41NTsKICAgICAgICB9CgogICAgICAgIC5kZW1vLW5vdGUgc3Ryb25nIHsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNyA5MSUgNDUlKSIsImhzbCgyMTMgOTMlIDY4JSkiKX07CiAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIH0KICAgICAgYH0KICAgIDwvc3R5bGU+CgogICAgPGRpdiBjbGFzcz0iZGVtby1zaGVsbCI+CiAgICAgIDxkZWVzLXBhbmVsCiAgICAgICAgLnRpdGxlPSR7Ik1vZGVybiBmaWxlIHVwbG9hZGVyIn0KICAgICAgICAuc3VidGl0bGU9JHsiU2hhZGNuLWluc3BpcmVkIGxheW91dCB3aXRoIGRyYWcgJiBkcm9wLCBwcmV2aWV3cyBhbmQgdmFsaWRhdGlvbiJ9CiAgICAgID4KICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRpdiBjbGFzcz0iZGVtby1ncmlkIGRlbW8tZ3JpZC0tdHdvIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVtby1zdGFjayI+CiAgICAgICAgICAgICAgPGRlZXMtaW5wdXQtZmlsZXVwbG9hZAogICAgICAgICAgICAgICAgLmxhYmVsPSR7IkF0dGFjaG1lbnRzIn0KICAgICAgICAgICAgICAgIC5pbmZvVGV4dD0keyJVcGxvYWQgc3VwcG9ydGluZyBkb2N1bWVudHMgZm9yIHlvdXIgcmVxdWVzdCJ9CiAgICAgICAgICAgICAgICAuZGVzY3JpcHRpb249JHsiQWNjZXB0ZWQgZm9ybWF0czogaW1hZ2VzLCBQREYsIGFuZCBaSVAgYXJjaGl2ZXMgdXAgdG8gMTBNQiJ9CiAgICAgICAgICAgICAgICAuYWNjZXB0PSR7ImltYWdlLyosLnBkZiwuemlwIn0KICAgICAgICAgICAgICAgIC5tYXhTaXplPSR7MTAqMTAyNCoxMDI0fQogICAgICAgICAgICAgID48L2RlZXMtaW5wdXQtZmlsZXVwbG9hZD4KCiAgICAgICAgICAgICAgPGRlZXMtaW5wdXQtZmlsZXVwbG9hZAogICAgICAgICAgICAgICAgLmxhYmVsPSR7IkJyYW5kIGFzc2V0cyJ9CiAgICAgICAgICAgICAgICAuaW5mb1RleHQ9JHsiVXBsb2FkIGhpZ2gtcmVzb2x1dGlvbiBpbWFnZXJ5IChKUEcvUE5HKSJ9CiAgICAgICAgICAgICAgICAuYWNjZXB0PSR7ImltYWdlL2pwZWcsaW1hZ2UvcG5nIn0KICAgICAgICAgICAgICAgIC5tdWx0aXBsZT0keyExfQogICAgICAgICAgICAgICAgLm1heFNpemU9JHs1KjEwMjQqMTAyNH0KICAgICAgICAgICAgICAgIC5idXR0b25UZXh0PSR7IlNlbGVjdCBjb3ZlciBpbWFnZSJ9CiAgICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1maWxldXBsb2FkPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc3RhY2siPgogICAgICAgICAgICAgIDxkZWVzLWlucHV0LWZpbGV1cGxvYWQKICAgICAgICAgICAgICAgIC5sYWJlbD0keyJBdWRpbyB1cGxvYWRzIn0KICAgICAgICAgICAgICAgIC5pbmZvVGV4dD0keyJTaGFyZSBwb2RjYXN0IGRyYWZ0cyAoTVAzL1dBViwgbWF4IDI1TUIgZWFjaCkifQogICAgICAgICAgICAgICAgLmFjY2VwdD0keyJhdWRpby8qIn0KICAgICAgICAgICAgICAgIC5tYXhTaXplPSR7MjUqMTAyNCoxMDI0fQogICAgICAgICAgICAgID48L2RlZXMtaW5wdXQtZmlsZXVwbG9hZD4KCiAgICAgICAgICAgICAgPGRlZXMtaW5wdXQtZmlsZXVwbG9hZAogICAgICAgICAgICAgICAgLmxhYmVsPSR7IkRpc2FibGVkIGV4YW1wbGUifQogICAgICAgICAgICAgICAgLmluZm9UZXh0PSR7IlVwbG9hZGVyIGlzIGRpc2FibGVkIHdoaWxlIG1vZGVyYXRpb24gaXMgcGVuZGluZyJ9CiAgICAgICAgICAgICAgICAuZGlzYWJsZWQ9JHshMH0KICAgICAgICAgICAgICA+PC9kZWVzLWlucHV0LWZpbGV1cGxvYWQ+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDxkZWVzLXBhbmVsCiAgICAgICAgLnRpdGxlPSR7IkZvcm0gaW50ZWdyYXRpb24ifQogICAgICAgIC5zdWJ0aXRsZT0keyJDb21iaW5lIGZpbGUgdXBsb2FkcyB3aXRoIHRoZSByZXN0IG9mIHRoZSBERUVTIGZvcm0gZWNvc3lzdGVtIn0KICAgICAgPgogICAgICAgIDxkaXYgY2xhc3M9ImRlbW8tZ3JpZCI+CiAgICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQKICAgICAgICAgICAgICAgIC5sYWJlbD0keyJQcm9qZWN0IG5hbWUifQogICAgICAgICAgICAgICAgLmluZm9UZXh0PSR7IkhvdyBzaG91bGQgd2UgcmVmZXIgdG8gdGhpcyBwcm9qZWN0IGludGVybmFsbHk/In0KICAgICAgICAgICAgICAgIC5yZXF1aXJlZD0keyEwfQogICAgICAgICAgICAgICAgLmtleT0keyJwcm9qZWN0TmFtZSJ9CiAgICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgoKICAgICAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0CiAgICAgICAgICAgICAgICAubGFiZWw9JHsiQ29udGFjdCBlbWFpbCJ9CiAgICAgICAgICAgICAgICAuaW5wdXRUeXBlPSR7ImVtYWlsIn0KICAgICAgICAgICAgICAgIC5yZXF1aXJlZD0keyEwfQogICAgICAgICAgICAgICAgLmtleT0keyJjb250YWN0RW1haWwifQogICAgICAgICAgICAgID48L2RlZXMtaW5wdXQtdGV4dD4KCiAgICAgICAgICAgICAgPGRlZXMtaW5wdXQtZmlsZXVwbG9hZAogICAgICAgICAgICAgICAgLmxhYmVsPSR7IlN0YXRlbWVudCBvZiB3b3JrIn0KICAgICAgICAgICAgICAgIC5pbmZvVGV4dD0keyJVcGxvYWQgYSBzaWduZWQgc3RhdGVtZW50IG9mIHdvcmsgKFBERiwgbWF4IDE1TUIpIn0KICAgICAgICAgICAgICAgIC5yZXF1aXJlZD0keyEwfQogICAgICAgICAgICAgICAgLmFjY2VwdD0keyJhcHBsaWNhdGlvbi9wZGYifQogICAgICAgICAgICAgICAgLm1heFNpemU9JHsxNSoxMDI0KjEwMjR9CiAgICAgICAgICAgICAgICAubXVsdGlwbGU9JHshMX0KICAgICAgICAgICAgICAgIC5rZXk9JHsic293In0KICAgICAgICAgICAgICA+PC9kZWVzLWlucHV0LWZpbGV1cGxvYWQ+CgogICAgICAgICAgICAgIDxkZWVzLWlucHV0LWZpbGV1cGxvYWQKICAgICAgICAgICAgICAgIC5sYWJlbD0keyJDcmVhdGl2ZSByZWZlcmVuY2VzIn0KICAgICAgICAgICAgICAgIC5pbmZvVGV4dD0keyJPcHRpb25hbC4gVXBsb2FkIHVwIHRvIGZpdmUgdmlzdWFsIHJlZmVyZW5jZXMifQogICAgICAgICAgICAgICAgLmFjY2VwdD0keyJpbWFnZS8qIn0KICAgICAgICAgICAgICAgIC5tYXhGaWxlcz0kezV9CiAgICAgICAgICAgICAgICAubWF4U2l6ZT0kezgqMTAyNCoxMDI0fQogICAgICAgICAgICAgICAgLmtleT0keyJyZWZlcmVuY2VzIn0KICAgICAgICAgICAgICA+PC9kZWVzLWlucHV0LWZpbGV1cGxvYWQ+CgogICAgICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQKICAgICAgICAgICAgICAgIC5sYWJlbD0keyJOb3RlcyJ9CiAgICAgICAgICAgICAgICAuaW5mb1RleHQ9JHsiQWRkIG9wdGlvbmFsIGNvbnRleHQgZm9yIHJldmlld2VycyJ9CiAgICAgICAgICAgICAgICAuaW5wdXRUeXBlPSR7InRleHRhcmVhIn0KICAgICAgICAgICAgICAgIC5rZXk9JHsibm90ZXMifQogICAgICAgICAgICAgID48L2RlZXMtaW5wdXQtdGV4dD4KCiAgICAgICAgICAgICAgPGRlZXMtZm9ybS1zdWJtaXQgLnRleHQ9JHsiU3VibWl0IGJyaWVmaW5nIn0+PC9kZWVzLWZvcm0tc3VibWl0PgogICAgICAgICAgPC9kZWVzLWZvcm0+CgogICAgICAgICAgPGRpdiBjbGFzcz0iZGVtby1ub3RlIj4KICAgICAgICAgICAgPHN0cm9uZz5Hb29kIHRvIGtub3c6PC9zdHJvbmc+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICA8bGk+RHJhZyAmIGRyb3AgaGlnaGxpZ2h0cyB0aGUgZHJvcHpvbmUgYW5kIHN1cHBvcnRzIGtleWJvYXJkIGFjdGl2YXRpb24uPC9saT4KICAgICAgICAgICAgICA8bGk+QWNjZXB0ZWQgZmlsZSB0eXBlcyBhcmUgc3VtbWFyaXNlZCBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIDxjb2RlPmFjY2VwdDwvY29kZT4gYXR0cmlidXRlLjwvbGk+CiAgICAgICAgICAgICAgPGxpPkltYWdlIHVwbG9hZHMgc2hvdyBsaXZlIHByZXZpZXdzIGdlbmVyYXRlZCB2aWEgPGNvZGU+VVJMLmNyZWF0ZU9iamVjdFVSTDwvY29kZT4uPC9saT4KICAgICAgICAgICAgICA8bGk+RmlsZSBzaXplIGFuZCBmaWxlLWNvdW50IGxpbWl0cyBzdXJmYWNlIGlubGluZSB2YWxpZGF0aW9uIG1lc3NhZ2VzLjwvbGk+CiAgICAgICAgICAgICAgPGxpPlRoZSBjb21wb25lbnQgc3RheXMgY29tcGF0aWJsZSB3aXRoIDxjb2RlPmRlZXMtZm9ybTwvY29kZT4gdmFsdWUgYWNjZXNzb3JzLjwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kaXY+CiAgPC9kZWVzLWRlbW93cmFwcGVyPgpgLCJkZW1vRnVuYyIpfSk7dmFyIGQwYSx1MGE9ZygoKT0+e3BlKCk7emkoKTtwdCgpO2QwYT1bSGUsLi4uT3QuYmFzZVN0eWxlcyxoLmRlZmF1bHRTdHlsZXMsSmAKICAgIDpob3N0IHsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICBkaXNwbGF5OiBibG9jazsKICAgIH0KCiAgICAuaW5wdXQtd3JhcHBlciB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgIGdhcDogMTJweDsKICAgIH0KCiAgICAvKiDilIDilIAgVGlsZSBpbnRlZ3JhdGlvbiDilIDilIAgKi8KICAgIGRlZXMtdGlsZSB7CiAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgIH0KCiAgICBkZWVzLXRpbGU6aG92ZXI6OnBhcnQob3V0ZXIpIHsKICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1zdHJvbmcpOwogICAgfQoKICAgIGRlZXMtdGlsZS5kcmFnb3Zlcjo6cGFydChvdXRlcikgewogICAgICBib3JkZXItY29sb3I6IHZhcigtLWRlZXMtY29sb3ItYWNjZW50LXByaW1hcnkpOwogICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggJHtoLmJkVGhlbWUoImhzbCgyMTcgOTElIDYwJSAvIDAuMTUpIiwiaHNsKDIxMyA5MyUgNjglIC8gMC4xNSkiKX07CiAgICB9CgogICAgOmhvc3QoW2Rpc2FibGVkXSkgZGVlcy10aWxlIHsKICAgICAgb3BhY2l0eTogMC42OwogICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIH0KCiAgICAvKiDilIDilIAgSGVhZGVyIHNsb3Q6IHNsZWVrIHRvb2xiYXIg4pSA4pSAICovCiAgICAuZHJvcHpvbmUtaGVhZGVyIHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgZ2FwOiA4cHg7CiAgICAgIGhlaWdodDogMzJweDsKICAgICAgcGFkZGluZzogMCAxMnB4OwogICAgfQoKICAgIC5kcm9wem9uZS1oZWFkZXIgZGVlcy1pY29uIHsKICAgICAgd2lkdGg6IDE0cHg7CiAgICAgIGhlaWdodDogMTRweDsKICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICB9CgogICAgLmRyb3B6b25lLWxvYWRlciB7CiAgICAgIHdpZHRoOiAxNHB4OwogICAgICBoZWlnaHQ6IDE0cHg7CiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWRlZXMtcmFkaXVzLWZ1bGwpOwogICAgICBib3JkZXI6IDJweCBzb2xpZCAke2guYmRUaGVtZSgicmdiYSgxNSwgMjMsIDQyLCAwLjE1KSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkiKX07CiAgICAgIGJvcmRlci10b3AtY29sb3I6IHZhcigtLWRlZXMtY29sb3ItYWNjZW50LXByaW1hcnkpOwogICAgICBhbmltYXRpb246IGxvYWRlci1zcGluIDAuNnMgbGluZWFyIGluZmluaXRlOwogICAgfQoKICAgIC5kcm9wem9uZS10aXRsZSB7CiAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICB9CgogICAgLmRyb3B6b25lLWJyb3dzZSB7CiAgICAgIGFwcGVhcmFuY2U6IG5vbmU7CiAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgcGFkZGluZzogMDsKICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItYWNjZW50LXByaW1hcnkpOwogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB9CgogICAgLmRyb3B6b25lLWJyb3dzZTpob3ZlciB7CiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogICAgfQoKICAgIC5kcm9wem9uZS1icm93c2U6ZGlzYWJsZWQgewogICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICBvcGFjaXR5OiAwLjU7CiAgICB9CgogICAgLyog4pSA4pSAIENvbnRlbnQgc2xvdDogZmlsZSBsaXN0IGluIHJvdW5kZWQgaW5zZXQg4pSA4pSAICovCiAgICAuZmlsZS1saXN0LWVtcHR5IHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIGdhcDogOHB4OwogICAgICBwYWRkaW5nOiAyNHB4IDE2cHg7CiAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICBmb250LXNpemU6IDEzcHg7CiAgICB9CgogICAgLmZpbGUtbGlzdC1lbXB0eSBkZWVzLWljb24gewogICAgICBmb250LXNpemU6IDI0cHg7CiAgICAgIG9wYWNpdHk6IDAuNDsKICAgIH0KCiAgICAuZmlsZS1saXN0IHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIH0KCiAgICAuZmlsZS1saXN0LWhlYWRlciB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICB9CgogICAgLmZpbGUtbGlzdC1jbGVhciB7CiAgICAgIGFwcGVhcmFuY2U6IG5vbmU7CiAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItYWNjZW50LXByaW1hcnkpOwogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgcGFkZGluZzogMDsKICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgICB9CgogICAgLmZpbGUtbGlzdC1jbGVhcjpob3ZlciB7CiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogICAgfQoKICAgIC5maWxlLXJvdyB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGdhcDogMTJweDsKICAgICAgcGFkZGluZzogNnB4IDEycHg7CiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tZGVlcy10cmFuc2l0aW9uLWZhc3QpIGVhc2U7CiAgICB9CgogICAgLmZpbGUtcm93OmhvdmVyIHsKICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1yb3ctaG92ZXIpOwogICAgfQoKICAgIC5maWxlLXRodW1iIHsKICAgICAgd2lkdGg6IDMycHg7CiAgICAgIGhlaWdodDogMzJweDsKICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tZGVlcy1yYWRpdXMtc20pOwogICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXRlcnRpYXJ5KTsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgfQoKICAgIC5maWxlLXRodW1iIGRlZXMtaWNvbiB7CiAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB3aWR0aDogMTZweDsKICAgICAgaGVpZ2h0OiAxNnB4OwogICAgICBsaW5lLWhlaWdodDogMTsKICAgICAgZmxleC1zaHJpbms6IDA7CiAgICB9CgogICAgLnRodW1iLWltYWdlIHsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGhlaWdodDogMTAwJTsKICAgICAgb2JqZWN0LWZpdDogY292ZXI7CiAgICB9CgogICAgLmZpbGUtbWV0YSB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgIGdhcDogMnB4OwogICAgICBtaW4td2lkdGg6IDA7CiAgICB9CgogICAgLmZpbGUtbmFtZSB7CiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICB9CgogICAgLmZpbGUtZGV0YWlscyB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGdhcDogOHB4OwogICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICB9CgogICAgLmZpbGUtc2l6ZSB7CiAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7CiAgICB9CgogICAgLmZpbGUtdHlwZSB7CiAgICAgIHBhZGRpbmc6IDFweCA2cHg7CiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWRlZXMtcmFkaXVzLWZ1bGwpOwogICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07CiAgICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgICBmb250LXNpemU6IDEwcHg7CiAgICB9CgogICAgLmZpbGUtYWN0aW9ucyB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgfQoKICAgIC5yZW1vdmUtYnV0dG9uIHsKICAgICAgd2lkdGg6IDI0cHg7CiAgICAgIGhlaWdodDogMjRweDsKICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tZGVlcy1yYWRpdXMteHMpOwogICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgYm9yZGVyOiBub25lOwogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLWRlZXMtdHJhbnNpdGlvbi1mYXN0KSBlYXNlLAogICAgICAgICAgICAgICAgICBjb2xvciB2YXIoLS1kZWVzLXRyYW5zaXRpb24tZmFzdCkgZWFzZTsKICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICB9CgogICAgLnJlbW92ZS1idXR0b246aG92ZXIgewogICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgNzIlIDUwJSAvIDAuMDgpIiwiaHNsKDAgNjIlIDMyJSAvIDAuMTUpIil9OwogICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci1hY2NlbnQtZXJyb3IpOwogICAgfQoKICAgIC5yZW1vdmUtYnV0dG9uOmFjdGl2ZSB7CiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45Nik7CiAgICB9CgogICAgLnJlbW92ZS1idXR0b24gZGVlcy1pY29uIHsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIHdpZHRoOiAxNHB4OwogICAgICBoZWlnaHQ6IDE0cHg7CiAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgbGluZS1oZWlnaHQ6IDE7CiAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgfQoKICAgIC8qIOKUgOKUgCBGb290ZXIgc2xvdDogbWV0YSBjaGlwcyDilIDilIAgKi8KICAgIC5kcm9wem9uZS1mb290ZXIgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgIGdhcDogNnB4OwogICAgICBwYWRkaW5nOiA2cHggMTJweDsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIH0KCiAgICAubWV0YS1jaGlwIHsKICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICBwYWRkaW5nOiAycHggOHB4OwogICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1kZWVzLXJhZGl1cy1mdWxsKTsKICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYmctdGVydGlhcnkpOwogICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1zdWJ0bGUpOwogICAgfQoKICAgIC8qIOKUgOKUgCBWYWxpZGF0aW9uIOKUgOKUgCAqLwogICAgLnZhbGlkYXRpb24tbWVzc2FnZSB7CiAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItYWNjZW50LWVycm9yKTsKICAgICAgbGluZS1oZWlnaHQ6IDEuNTsKICAgIH0KCiAgICBAa2V5ZnJhbWVzIGxvYWRlci1zcGluIHsKICAgICAgdG8gewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICAgIH0KICAgIH0KICBgXX0pO3ZhciAkZCxacixrbmUsVmV0PWcoKCk9Pnt6aSgpO2MwYSgpO3UwYSgpO1VhKCk7bHYoKTtucigpO3BlKCk7JGQ9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LFpyPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxrbmU9KCgpPT57bGV0IHM9W25lKCJkZWVzLWlucHV0LWZpbGV1cGxvYWQiKV0sZSx0PVtdLGEscj1PdCxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXSxPLCQ9W10sRT1bXSxILGs9W10sUz1bXSxJLFA9W10sUj1bXTt2YXIgSz1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0lucHV0RmlsZXVwbG9hZCIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBWPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe2F0dHJpYnV0ZTohMX0pXSxwPVtZKCldLGM9W1koKV0seD1bTCh7dHlwZTpTdHJpbmd9KV0seT1bTCh7dHlwZTpTdHJpbmd9KV0sTj1bTCh7dHlwZTpCb29sZWFufSldLE89W0woe3R5cGU6TnVtYmVyfSldLEg9W0woe3R5cGU6TnVtYmVyfSldLEk9W0woe3R5cGU6U3RyaW5nLHJlZmxlY3Q6ITB9KV0sJGQodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2YWx1ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShXPT4idmFsdWUiaW4gVywiaGFzIiksZ2V0OmkoVz0+Vy52YWx1ZSwiZ2V0Iiksc2V0OmkoKFcsbWUpPT57Vy52YWx1ZT1tZX0sInNldCIpfSxtZXRhZGF0YTpWfSxvLGwpLCRkKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic3RhdGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVz0+InN0YXRlImluIFcsImhhcyIpLGdldDppKFc9Plcuc3RhdGUsImdldCIpLHNldDppKChXLG1lKT0+e1cuc3RhdGU9bWV9LCJzZXQiKX0sbWV0YWRhdGE6Vn0sZCx1KSwkZCh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImlzTG9hZGluZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShXPT4iaXNMb2FkaW5nImluIFcsImhhcyIpLGdldDppKFc9PlcuaXNMb2FkaW5nLCJnZXQiKSxzZXQ6aSgoVyxtZSk9PntXLmlzTG9hZGluZz1tZX0sInNldCIpfSxtZXRhZGF0YTpWfSxiLHYpLCRkKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYnV0dG9uVGV4dCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShXPT4iYnV0dG9uVGV4dCJpbiBXLCJoYXMiKSxnZXQ6aShXPT5XLmJ1dHRvblRleHQsImdldCIpLHNldDppKChXLG1lKT0+e1cuYnV0dG9uVGV4dD1tZX0sInNldCIpfSxtZXRhZGF0YTpWfSxtLGYpLCRkKHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYWNjZXB0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFc9PiJhY2NlcHQiaW4gVywiaGFzIiksZ2V0OmkoVz0+Vy5hY2NlcHQsImdldCIpLHNldDppKChXLG1lKT0+e1cuYWNjZXB0PW1lfSwic2V0Iil9LG1ldGFkYXRhOlZ9LE0seiksJGQodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtdWx0aXBsZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShXPT4ibXVsdGlwbGUiaW4gVywiaGFzIiksZ2V0OmkoVz0+Vy5tdWx0aXBsZSwiZ2V0Iiksc2V0OmkoKFcsbWUpPT57Vy5tdWx0aXBsZT1tZX0sInNldCIpfSxtZXRhZGF0YTpWfSxDLF8pLCRkKHRoaXMsbnVsbCxPLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWF4U2l6ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShXPT4ibWF4U2l6ZSJpbiBXLCJoYXMiKSxnZXQ6aShXPT5XLm1heFNpemUsImdldCIpLHNldDppKChXLG1lKT0+e1cubWF4U2l6ZT1tZX0sInNldCIpfSxtZXRhZGF0YTpWfSwkLEUpLCRkKHRoaXMsbnVsbCxILHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWF4RmlsZXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVz0+Im1heEZpbGVzImluIFcsImhhcyIpLGdldDppKFc9PlcubWF4RmlsZXMsImdldCIpLHNldDppKChXLG1lKT0+e1cubWF4RmlsZXM9bWV9LCJzZXQiKX0sbWV0YWRhdGE6Vn0sayxTKSwkZCh0aGlzLG51bGwsSSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InZhbGlkYXRpb25TdGF0ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShXPT4idmFsaWRhdGlvblN0YXRlImluIFcsImhhcyIpLGdldDppKFc9PlcudmFsaWRhdGlvblN0YXRlLCJnZXQiKSxzZXQ6aSgoVyxtZSk9PntXLnZhbGlkYXRpb25TdGF0ZT1tZX0sInNldCIpfSxtZXRhZGF0YTpWfSxQLFIpLCRkKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOlZ9LG51bGwsdCksSz1hPWUudmFsdWUsViYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpWfSl9c3RhdGljIGRlbW89bDBhO3N0YXRpYyBkZW1vR3JvdXBzPVsiSW5wdXQiXTsjZT1acih0aGlzLG8sW10pO2dldCB2YWx1ZSgpe3JldHVybiB0aGlzLiNlfXNldCB2YWx1ZShWKXt0aGlzLiNlPVZ9I3Q9KFpyKHRoaXMsbCksWnIodGhpcyxkLCJpZGxlIikpO2dldCBzdGF0ZSgpe3JldHVybiB0aGlzLiN0fXNldCBzdGF0ZShWKXt0aGlzLiN0PVZ9I2E9KFpyKHRoaXMsdSksWnIodGhpcyxiLCExKSk7Z2V0IGlzTG9hZGluZygpe3JldHVybiB0aGlzLiNhfXNldCBpc0xvYWRpbmcoVil7dGhpcy4jYT1WfSNzPShacih0aGlzLHYpLFpyKHRoaXMsbSwiU2VsZWN0IGZpbGVzIikpO2dldCBidXR0b25UZXh0KCl7cmV0dXJuIHRoaXMuI3N9c2V0IGJ1dHRvblRleHQoVil7dGhpcy4jcz1WfSNpPShacih0aGlzLGYpLFpyKHRoaXMsTSwiIikpO2dldCBhY2NlcHQoKXtyZXR1cm4gdGhpcy4jaX1zZXQgYWNjZXB0KFYpe3RoaXMuI2k9Vn0jcj0oWnIodGhpcyx6KSxacih0aGlzLEMsITApKTtnZXQgbXVsdGlwbGUoKXtyZXR1cm4gdGhpcy4jcn1zZXQgbXVsdGlwbGUoVil7dGhpcy4jcj1WfSNvPShacih0aGlzLF8pLFpyKHRoaXMsJCwwKSk7Z2V0IG1heFNpemUoKXtyZXR1cm4gdGhpcy4jb31zZXQgbWF4U2l6ZShWKXt0aGlzLiNvPVZ9I249KFpyKHRoaXMsRSksWnIodGhpcyxrLDApKTtnZXQgbWF4RmlsZXMoKXtyZXR1cm4gdGhpcy4jbn1zZXQgbWF4RmlsZXMoVil7dGhpcy4jbj1WfSNsPShacih0aGlzLFMpLFpyKHRoaXMsUCxudWxsKSk7Z2V0IHZhbGlkYXRpb25TdGF0ZSgpe3JldHVybiB0aGlzLiNsfXNldCB2YWxpZGF0aW9uU3RhdGUoVil7dGhpcy4jbD1WfSNjPShacih0aGlzLFIpLCIiKTtnZXQgdmFsaWRhdGlvbk1lc3NhZ2UoKXtyZXR1cm4gdGhpcy4jY31zZXQgdmFsaWRhdGlvbk1lc3NhZ2UoVil7dGhpcy4jYz1WfXByZXZpZXdVcmxNYXA9bmV3IFdlYWtNYXA7ZHJvcEFyZWE9bnVsbDtzdGF0aWMgc3R5bGVzPWQwYTtyZW5kZXIoKXtsZXQgVj10aGlzLmdldEFjY2VwdGVkU3VtbWFyeSgpLFc9W3RoaXMubXVsdGlwbGU/Ik11bHRpcGxlIGZpbGVzIHN1cHBvcnRlZCI6IlNpbmdsZSBmaWxlIG9ubHkiLHRoaXMubWF4U2l6ZT4wP2BNYXggJHt0aGlzLmZvcm1hdEZpbGVTaXplKHRoaXMubWF4U2l6ZSl9YDoiTm8gc2l6ZSBsaW1pdCJdO3JldHVybiBWJiZXLnB1c2goYEFjY2VwdHMgJHtWfWApLHdgCiAgICAgIDxkaXYgY2xhc3M9ImlucHV0LXdyYXBwZXIiPgogICAgICAgIDxkZWVzLWxhYmVsCiAgICAgICAgICAubGFiZWw9JHt0aGlzLmxhYmVsfQogICAgICAgICAgLmluZm9UZXh0PSR7dGhpcy5pbmZvVGV4dH0KICAgICAgICAgIC5yZXF1aXJlZD0ke3RoaXMucmVxdWlyZWR9CiAgICAgICAgPjwvZGVlcy1sYWJlbD4KICAgICAgICA8ZGVlcy10aWxlCiAgICAgICAgICBjbGFzcz0iJHt0aGlzLnN0YXRlPT09ImRyYWdPdmVyIj8iZHJhZ292ZXIiOiIifSIKICAgICAgICAgIEBjbGljaz0ke3RoaXMuaGFuZGxlRHJvcHpvbmVDbGlja30KICAgICAgICAgIEBrZXlkb3duPSR7dGhpcy5oYW5kbGVEcm9wem9uZUtleWRvd259CiAgICAgICAgICB0YWJpbmRleD0ke3RoaXMuZGlzYWJsZWQ/LTE6MH0KICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9JHt0aGlzLmRpc2FibGVkfQogICAgICAgICAgYXJpYS1sYWJlbD0ke2BTZWxlY3QgZmlsZXMke1Y/YCAoJHtWfSlgOiIifWB9CiAgICAgICAgPgogICAgICAgICAgPGlucHV0CiAgICAgICAgICAgIGNsYXNzPSJmaWxlLWlucHV0IgogICAgICAgICAgICBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyBvcGFjaXR5OiAwOyBwb2ludGVyLWV2ZW50czogbm9uZTsgd2lkdGg6IDFweDsgaGVpZ2h0OiAxcHg7IHRvcDogMDsgbGVmdDogMDsgb3ZlcmZsb3c6IGhpZGRlbjsiCiAgICAgICAgICAgIHR5cGU9ImZpbGUiCiAgICAgICAgICAgID9tdWx0aXBsZT0ke3RoaXMubXVsdGlwbGV9CiAgICAgICAgICAgIGFjY2VwdD0ke3RoaXMuYWNjZXB0fHwiIn0KICAgICAgICAgICAgP2Rpc2FibGVkPSR7dGhpcy5kaXNhYmxlZH0KICAgICAgICAgICAgQGNoYW5nZT0ke3RoaXMuaGFuZGxlRmlsZUlucHV0Q2hhbmdlfQogICAgICAgICAgICB0YWJpbmRleD0iLTEiCiAgICAgICAgICAvPgogICAgICAgICAgPGRpdiBzbG90PSJoZWFkZXIiIGNsYXNzPSJkcm9wem9uZS1oZWFkZXIiPgogICAgICAgICAgICAke3RoaXMuaXNMb2FkaW5nP3dgPHNwYW4gY2xhc3M9ImRyb3B6b25lLWxvYWRlciIgYXJpYS1oaWRkZW49InRydWUiPjwvc3Bhbj5gOndgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6VXBsb2FkIj48L2RlZXMtaWNvbj5gfQogICAgICAgICAgICA8c3BhbiBjbGFzcz0iZHJvcHpvbmUtdGl0bGUiPkRyb3AgZmlsZXMgaGVyZSBvcjwvc3Bhbj4KICAgICAgICAgICAgPGJ1dHRvbgogICAgICAgICAgICAgIHR5cGU9ImJ1dHRvbiIKICAgICAgICAgICAgICBjbGFzcz0iZHJvcHpvbmUtYnJvd3NlIgogICAgICAgICAgICAgIEBjbGljaz0ke21lPT57bWUuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5vcGVuRmlsZVNlbGVjdG9yKCl9fQogICAgICAgICAgICAgID9kaXNhYmxlZD0ke3RoaXMuZGlzYWJsZWR9CiAgICAgICAgICAgID5icm93c2U8L2J1dHRvbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgJHt0aGlzLnJlbmRlckZpbGVMaXN0KCl9CiAgICAgICAgICA8ZGl2IHNsb3Q9ImZvb3RlciIgY2xhc3M9ImRyb3B6b25lLWZvb3RlciI+CiAgICAgICAgICAgICR7Vy5tYXAobWU9PndgPHNwYW4gY2xhc3M9Im1ldGEtY2hpcCI+JHttZX08L3NwYW4+YCl9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2RlZXMtdGlsZT4KICAgICAgICAke3RoaXMudmFsaWRhdGlvbk1lc3NhZ2U/d2A8ZGl2IGNsYXNzPSJ2YWxpZGF0aW9uLW1lc3NhZ2UiIGFyaWEtbGl2ZT0icG9saXRlIj4ke3RoaXMudmFsaWRhdGlvbk1lc3NhZ2V9PC9kaXY+YDp3YGB9CiAgICAgICAgJHt0aGlzLnJlbmRlckRlc2NyaXB0aW9uKCl9CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJGaWxlTGlzdCgpe3JldHVybiB0aGlzLnZhbHVlLmxlbmd0aD09PTA/d2AKICAgICAgICA8ZGl2IGNsYXNzPSJmaWxlLWxpc3QtZW1wdHkiPgogICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6RmlsZVN0YWNrIj48L2RlZXMtaWNvbj4KICAgICAgICAgIDxzcGFuPk5vIGZpbGVzIHNlbGVjdGVkPC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICBgOndgCiAgICAgIDxkaXYgY2xhc3M9ImZpbGUtbGlzdCI+CiAgICAgICAgPGRpdiBjbGFzcz0iZmlsZS1saXN0LWhlYWRlciI+CiAgICAgICAgICA8c3Bhbj4ke3RoaXMudmFsdWUubGVuZ3RofSBmaWxlJHt0aGlzLnZhbHVlLmxlbmd0aD09PTE/IiI6InMifSBzZWxlY3RlZDwvc3Bhbj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iZmlsZS1saXN0LWNsZWFyIiBAY2xpY2s9JHt0aGlzLmhhbmRsZUNsZWFyQWxsfT5DbGVhciAke3RoaXMudmFsdWUubGVuZ3RoPjE/ImFsbCI6IiJ9PC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgICAgJHt0aGlzLnZhbHVlLm1hcChWPT50aGlzLnJlbmRlckZpbGVSb3coVikpfQogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyRmlsZVJvdyhWKXtsZXQgVz10aGlzLmdldEZpbGVUeXBlKFYpLG1lPXRoaXMuY2FuU2hvd1ByZXZpZXcoVik/dGhpcy5nZXRQcmV2aWV3VXJsKFYpOm51bGw7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImZpbGUtcm93ICR7V30tZmlsZSI+CiAgICAgICAgPGRpdiBjbGFzcz0iZmlsZS10aHVtYiIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgICAgJHttZT93YDxpbWcgY2xhc3M9InRodW1iLWltYWdlIiBzcmM9JHttZX0gYWx0PSR7YFByZXZpZXcgb2YgJHtWLm5hbWV9YH0+YDp3YDxkZWVzLWljb24gaWNvbj0ke3RoaXMuZ2V0RmlsZUljb24oVil9PjwvZGVlcy1pY29uPmB9CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZmlsZS1tZXRhIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImZpbGUtbmFtZSIgdGl0bGU9JHtWLm5hbWV9PiR7Vi5uYW1lfTwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZmlsZS1kZXRhaWxzIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZpbGUtc2l6ZSI+JHt0aGlzLmZvcm1hdEZpbGVTaXplKFYuc2l6ZSl9PC9zcGFuPgogICAgICAgICAgICAke1chPT0iZmlsZSI/d2A8c3BhbiBjbGFzcz0iZmlsZS10eXBlIj4ke1d9PC9zcGFuPmA6d2BgfQogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZmlsZS1hY3Rpb25zIj4KICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgdHlwZT0iYnV0dG9uIgogICAgICAgICAgICBjbGFzcz0icmVtb3ZlLWJ1dHRvbiIKICAgICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMucmVtb3ZlRmlsZShWKX0KICAgICAgICAgICAgYXJpYS1sYWJlbD0ke2BSZW1vdmUgJHtWLm5hbWV9YH0KICAgICAgICAgID4KICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6WCI+PC9kZWVzLWljb24+CiAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfWhhbmRsZUZpbGVJbnB1dENoYW5nZT1pKGFzeW5jIFY9Pnt0aGlzLmlzTG9hZGluZz0hMTtsZXQgVz1WLnRhcmdldCxtZT1BcnJheS5mcm9tKFcuZmlsZXM/P1tdKTttZS5sZW5ndGg+MCYmYXdhaXQgdGhpcy5hZGRGaWxlcyhtZSksVy52YWx1ZT0iIn0sImhhbmRsZUZpbGVJbnB1dENoYW5nZSIpO2hhbmRsZURyb3B6b25lQ2xpY2s9aShWPT57dGhpcy5kaXNhYmxlZHx8Vi50YXJnZXQuY2xvc2VzdCgiLmZpbGUtbGlzdCwgLmRyb3B6b25lLWhlYWRlciwgLmRyb3B6b25lLWZvb3RlciIpfHx0aGlzLm9wZW5GaWxlU2VsZWN0b3IoKX0sImhhbmRsZURyb3B6b25lQ2xpY2siKTtoYW5kbGVEcm9wem9uZUtleWRvd249aShWPT57dGhpcy5kaXNhYmxlZHx8KFYua2V5PT09IkVudGVyInx8Vi5rZXk9PT0iICIpJiYoVi5wcmV2ZW50RGVmYXVsdCgpLHRoaXMub3BlbkZpbGVTZWxlY3RvcigpKX0sImhhbmRsZURyb3B6b25lS2V5ZG93biIpO2hhbmRsZUNsZWFyQWxsPWkoVj0+e1YucHJldmVudERlZmF1bHQoKSx0aGlzLmNsZWFyQWxsKCl9LCJoYW5kbGVDbGVhckFsbCIpO2hhbmRsZURyYWdFdmVudD1pKGFzeW5jIFY9PntpZihWLnByZXZlbnREZWZhdWx0KCksVi5zdG9wUHJvcGFnYXRpb24oKSwhdGhpcy5kaXNhYmxlZCl7aWYoVi50eXBlPT09ImRyYWdlbnRlciJ8fFYudHlwZT09PSJkcmFnb3ZlciIpe1YuZGF0YVRyYW5zZmVyJiYoVi5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdD0iY29weSIpLHRoaXMuc3RhdGU9ImRyYWdPdmVyIjtyZXR1cm59aWYoVi50eXBlPT09ImRyYWdsZWF2ZSIpe2lmKCF0aGlzLmRyb3BBcmVhKXt0aGlzLnN0YXRlPSJpZGxlIjtyZXR1cm59bGV0IFc9dGhpcy5kcm9wQXJlYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx7Y2xpZW50WDptZT0wLGNsaWVudFk6Qj0wfT1WOyhtZTw9Vy5sZWZ0fHxtZT49Vy5yaWdodHx8Qjw9Vy50b3B8fEI+PVcuYm90dG9tKSYmKHRoaXMuc3RhdGU9ImlkbGUiKTtyZXR1cm59aWYoVi50eXBlPT09ImRyb3AiKXt0aGlzLnN0YXRlPSJpZGxlIjtsZXQgVz1BcnJheS5mcm9tKFYuZGF0YVRyYW5zZmVyPy5maWxlcz8/W10pO1cubGVuZ3RoPjAmJmF3YWl0IHRoaXMuYWRkRmlsZXMoVyl9fX0sImhhbmRsZURyYWdFdmVudCIpO2F0dGFjaERyb3BMaXN0ZW5lcnMoKXt0aGlzLmRyb3BBcmVhJiZbImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJvcCJdLmZvckVhY2goVj0+e3RoaXMuZHJvcEFyZWEuYWRkRXZlbnRMaXN0ZW5lcihWLHRoaXMuaGFuZGxlRHJhZ0V2ZW50KX0pfWRldGFjaERyb3BMaXN0ZW5lcnMoKXt0aGlzLmRyb3BBcmVhJiZbImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJvcCJdLmZvckVhY2goVj0+e3RoaXMuZHJvcEFyZWEucmVtb3ZlRXZlbnRMaXN0ZW5lcihWLHRoaXMuaGFuZGxlRHJhZ0V2ZW50KX0pfXJlYmluZEludGVyYWN0aXZlRWxlbWVudHMoKXtsZXQgVj10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoImRlZXMtdGlsZSIpO1YhPT10aGlzLmRyb3BBcmVhJiYodGhpcy5kZXRhY2hEcm9wTGlzdGVuZXJzKCksdGhpcy5kcm9wQXJlYT1WLHRoaXMuYXR0YWNoRHJvcExpc3RlbmVycygpKX1mb3JtYXRGaWxlU2l6ZShWKXtsZXQgVz1bIkJ5dGVzIiwiS0IiLCJNQiIsIkdCIl07aWYoVj09PTApcmV0dXJuIjAgQnl0ZXMiO2xldCBtZT1NYXRoLm1pbihNYXRoLmZsb29yKE1hdGgubG9nKFYpL01hdGgubG9nKDEwMjQpKSxXLmxlbmd0aC0xKSxCPVYvTWF0aC5wb3coMTAyNCxtZSk7cmV0dXJuYCR7TWF0aC5yb3VuZChCKjEwMCkvMTAwfSAke1dbbWVdfWB9Z2V0RmlsZVR5cGUoVil7bGV0IFc9Vi50eXBlLnRvTG93ZXJDYXNlKCk7cmV0dXJuIFcuc3RhcnRzV2l0aCgiaW1hZ2UvIik/ImltYWdlIjpXPT09ImFwcGxpY2F0aW9uL3BkZiI/InBkZiI6Vy5pbmNsdWRlcygid29yZCIpfHxXLmluY2x1ZGVzKCJkb2N1bWVudCIpPyJkb2MiOlcuaW5jbHVkZXMoInNoZWV0Iil8fFcuaW5jbHVkZXMoImV4Y2VsIik/InNwcmVhZHNoZWV0IjpXLmluY2x1ZGVzKCJwcmVzZW50YXRpb24iKXx8Vy5pbmNsdWRlcygicG93ZXJwb2ludCIpPyJwcmVzZW50YXRpb24iOlcuc3RhcnRzV2l0aCgidmlkZW8vIik/InZpZGVvIjpXLnN0YXJ0c1dpdGgoImF1ZGlvLyIpPyJhdWRpbyI6Vy5pbmNsdWRlcygiemlwIil8fFcuaW5jbHVkZXMoImNvbXByZXNzZWQiKT8iYXJjaGl2ZSI6ImZpbGUifWdldEZpbGVJY29uKFYpe2xldCBXPXRoaXMuZ2V0RmlsZVR5cGUoVik7cmV0dXJue2ltYWdlOiJsdWNpZGU6RmlsZUltYWdlIixwZGY6Imx1Y2lkZTpGaWxlVGV4dCIsZG9jOiJsdWNpZGU6RmlsZVRleHQiLHNwcmVhZHNoZWV0OiJsdWNpZGU6RmlsZVNwcmVhZHNoZWV0IixwcmVzZW50YXRpb246Imx1Y2lkZTpGaWxlQmFyQ2hhcnQiLHZpZGVvOiJsdWNpZGU6RmlsZVZpZGVvIixhdWRpbzoibHVjaWRlOkZpbGVBdWRpbyIsYXJjaGl2ZToibHVjaWRlOkZpbGVBcmNoaXZlIixmaWxlOiJsdWNpZGU6RmlsZSJ9W1ddPz8ibHVjaWRlOkZpbGUifWNhblNob3dQcmV2aWV3KFYpe3JldHVybiBWLnR5cGUuc3RhcnRzV2l0aCgiaW1hZ2UvIikmJlYuc2l6ZTw1KjEwMjQqMTAyNH12YWxpZGF0ZUZpbGUoVil7aWYodGhpcy5tYXhTaXplPjAmJlYuc2l6ZT50aGlzLm1heFNpemUpcmV0dXJuIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2U9YEZpbGUgIiR7Vi5uYW1lfSIgZXhjZWVkcyB0aGUgbWF4aW11bSBzaXplIG9mICR7dGhpcy5mb3JtYXRGaWxlU2l6ZSh0aGlzLm1heFNpemUpfWAsdGhpcy52YWxpZGF0aW9uU3RhdGU9ImludmFsaWQiLCExO2lmKHRoaXMuYWNjZXB0KXtsZXQgVz10aGlzLmFjY2VwdC5zcGxpdCgiLCIpLm1hcChtZT0+bWUudHJpbSgpKS5maWx0ZXIobWU9Pm1lLmxlbmd0aD4wKTtpZihXLmxlbmd0aD4wKXtsZXQgbWU9ITE7Zm9yKGxldCBCIG9mIFcpaWYoQi5zdGFydHNXaXRoKCIuIikpe2lmKFYubmFtZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKEIudG9Mb3dlckNhc2UoKSkpe21lPSEwO2JyZWFrfX1lbHNlIGlmKEIuZW5kc1dpdGgoIi8qIikpe2xldCBVPUIuc2xpY2UoMCwtMik7aWYoVi50eXBlLnN0YXJ0c1dpdGgoVSkpe21lPSEwO2JyZWFrfX1lbHNlIGlmKFYudHlwZT09PUIpe21lPSEwO2JyZWFrfWlmKCFtZSlyZXR1cm4gdGhpcy52YWxpZGF0aW9uTWVzc2FnZT1gRmlsZSB0eXBlIG5vdCBhY2NlcHRlZC4gQWxsb3dlZDogJHtXLmpvaW4oIiwgIil9YCx0aGlzLnZhbGlkYXRpb25TdGF0ZT0iaW52YWxpZCIsITF9fXJldHVybiEwfWdldFByZXZpZXdVcmwoVil7bGV0IFc9dGhpcy5wcmV2aWV3VXJsTWFwLmdldChWKTtyZXR1cm4gV3x8KFc9VVJMLmNyZWF0ZU9iamVjdFVSTChWKSx0aGlzLnByZXZpZXdVcmxNYXAuc2V0KFYsVykpLFd9cmVsZWFzZVByZXZpZXcoVil7bGV0IFc9dGhpcy5wcmV2aWV3VXJsTWFwLmdldChWKTtXJiYoVVJMLnJldm9rZU9iamVjdFVSTChXKSx0aGlzLnByZXZpZXdVcmxNYXAuZGVsZXRlKFYpKX1nZXRBY2NlcHRlZFN1bW1hcnkoKXtpZighdGhpcy5hY2NlcHQpcmV0dXJuIG51bGw7bGV0IFY9QXJyYXkuZnJvbShuZXcgU2V0KHRoaXMuYWNjZXB0LnNwbGl0KCIsIikubWFwKFc9PlcudHJpbSgpKS5maWx0ZXIoVz0+Vy5sZW5ndGg+MCkubWFwKFc9PnRoaXMuZm9ybWF0QWNjZXB0VG9rZW4oVykpKSkuZmlsdGVyKEJvb2xlYW4pO3JldHVybiBWLmxlbmd0aD09PTA/bnVsbDpWLmxlbmd0aD09PTE/VlswXTpWLmxlbmd0aD09PTI/YCR7VlswXX0sICR7VlsxXX1gOmAke1Yuc2xpY2UoMCwyKS5qb2luKCIsICIpfVx1MjAyNmB9Zm9ybWF0QWNjZXB0VG9rZW4oVil7aWYoVj09PSIqLyoiKXJldHVybiJBbGwgZmlsZXMiO2lmKFYuZW5kc1dpdGgoIi8qIikpe2xldCBCPVYuc3BsaXQoIi8iKVswXTtyZXR1cm4gQj9gJHtCLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7Qi5zbGljZSgxKX0gZmlsZXNgOiJBbGwgZmlsZXMifXJldHVybiBWLnN0YXJ0c1dpdGgoIi4iKT9WLnNsaWNlKDEpLnRvVXBwZXJDYXNlKCk6Vi5pbmNsdWRlcygicGRmIik/IlBERiI6Vi5pbmNsdWRlcygiemlwIik/IlpJUCI6Vi5pbmNsdWRlcygianNvbiIpPyJKU09OIjpWLmluY2x1ZGVzKCJtc3dvcmQiKT8iRE9DIjpWLmluY2x1ZGVzKCJ3b3JkcHJvY2Vzc2luZ21sIik/IkRPQ1giOlYuaW5jbHVkZXMoImV4Y2VsIik/IlhMUyI6Vi5pbmNsdWRlcygicHJlc2VudGF0aW9uIik/IlBQVCI6KFYuc3BsaXQoIi8iKS5wb3AoKT8/VikudG9VcHBlckNhc2UoKX1hdHRhY2hMaWZlY3ljbGVMaXN0ZW5lcnMoKXt0aGlzLnJlYmluZEludGVyYWN0aXZlRWxlbWVudHMoKX1maXJzdFVwZGF0ZWQoVil7c3VwZXIuZmlyc3RVcGRhdGVkKFYpLHRoaXMuYXR0YWNoTGlmZWN5Y2xlTGlzdGVuZXJzKCl9dXBkYXRlZChWKXtzdXBlci51cGRhdGVkKFYpLFYuaGFzKCJ2YWx1ZSIpJiZ0aGlzLnZhbGlkYXRlKCksdGhpcy5yZWJpbmRJbnRlcmFjdGl2ZUVsZW1lbnRzKCl9YXN5bmMgZGlzY29ubmVjdGVkQ2FsbGJhY2soKXt0aGlzLmRldGFjaERyb3BMaXN0ZW5lcnMoKSx0aGlzLnZhbHVlLmZvckVhY2goVj0+dGhpcy5yZWxlYXNlUHJldmlldyhWKSksdGhpcy5wcmV2aWV3VXJsTWFwPW5ldyBXZWFrTWFwLGF3YWl0IHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCl9YXN5bmMgb3BlbkZpbGVTZWxlY3Rvcigpe2lmKHRoaXMuZGlzYWJsZWR8fHRoaXMuaXNMb2FkaW5nKXJldHVybjt0aGlzLmlzTG9hZGluZz0hMDtsZXQgVj10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5maWxlLWlucHV0Iik7aWYoIVYpe3RoaXMuaXNMb2FkaW5nPSExO3JldHVybn1sZXQgVz1pKCgpPT57c2V0VGltZW91dCgoKT0+eyghVi5maWxlc3x8Vi5maWxlcy5sZW5ndGg9PT0wKSYmKHRoaXMuaXNMb2FkaW5nPSExKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLFcpfSwzMDApfSwiaGFuZGxlRm9jdXMiKTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLFcpLFYuY2xpY2soKX1yZW1vdmVGaWxlKFYpe2xldCBXPXRoaXMudmFsdWUuaW5kZXhPZihWKTtXPi0xJiYodGhpcy5yZWxlYXNlUHJldmlldyhWKSx0aGlzLnZhbHVlLnNwbGljZShXLDEpLHRoaXMucmVxdWVzdFVwZGF0ZSgidmFsdWUiKSx0aGlzLnZhbGlkYXRlKCksdGhpcy5jaGFuZ2VTdWJqZWN0Lm5leHQodGhpcykpfWNsZWFyQWxsKCl7bGV0IFY9Wy4uLnRoaXMudmFsdWVdO3RoaXMudmFsdWU9W10sVi5mb3JFYWNoKFc9PnRoaXMucmVsZWFzZVByZXZpZXcoVykpLHRoaXMucmVxdWVzdFVwZGF0ZSgidmFsdWUiKSx0aGlzLnZhbGlkYXRlKCksdGhpcy5jaGFuZ2VTdWJqZWN0Lm5leHQodGhpcyksdGhpcy5idXR0b25UZXh0PSJTZWxlY3QgZmlsZXMifWFzeW5jIHVwZGF0ZVZhbHVlKFYpe2xldCBXPVYudGFyZ2V0O3RoaXMudmFsdWU9QXJyYXkuZnJvbShXLmZpbGVzPz9bXSksdGhpcy5jaGFuZ2VTdWJqZWN0Lm5leHQodGhpcyl9c2V0VmFsdWUoVil7dGhpcy52YWx1ZS5mb3JFYWNoKFc9PnRoaXMucmVsZWFzZVByZXZpZXcoVykpLHRoaXMudmFsdWU9VixWLmxlbmd0aD4wP3RoaXMuYnV0dG9uVGV4dD10aGlzLm11bHRpcGxlPyJBZGQgbW9yZSBmaWxlcyI6IlJlcGxhY2UgZmlsZSI6dGhpcy5idXR0b25UZXh0PSJTZWxlY3QgZmlsZXMiLHRoaXMucmVxdWVzdFVwZGF0ZSgidmFsdWUiKSx0aGlzLnZhbGlkYXRlKCl9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy52YWx1ZX1hc3luYyBhZGRGaWxlcyhWKXtsZXQgVz1bXTtmb3IobGV0IG1lIG9mIFYpdGhpcy52YWxpZGF0ZUZpbGUobWUpJiZXLnB1c2gobWUpO2lmKFcubGVuZ3RoPT09MCl7dGhpcy5pc0xvYWRpbmc9ITE7cmV0dXJufWlmKHRoaXMubWF4RmlsZXM+MCYmdGhpcy52YWx1ZS5sZW5ndGgrVy5sZW5ndGg+dGhpcy5tYXhGaWxlcyl7bGV0IEI9dGhpcy5tYXhGaWxlcy10aGlzLnZhbHVlLmxlbmd0aDtpZihCPD0wKXt0aGlzLnZhbGlkYXRpb25NZXNzYWdlPWBNYXhpbXVtICR7dGhpcy5tYXhGaWxlc30gZmlsZXMgYWxsb3dlZGAsdGhpcy52YWxpZGF0aW9uU3RhdGU9ImludmFsaWQiLHRoaXMuaXNMb2FkaW5nPSExO3JldHVybn1XLnNwbGljZShCKSx0aGlzLnZhbGlkYXRpb25NZXNzYWdlPWBPbmx5ICR7Qn0gbW9yZSBmaWxlKHMpIGNhbiBiZSBhZGRlZGAsdGhpcy52YWxpZGF0aW9uU3RhdGU9Indhcm4ifSF0aGlzLm11bHRpcGxlJiZXLmxlbmd0aD4wPyh0aGlzLnZhbHVlLmZvckVhY2gobWU9PnRoaXMucmVsZWFzZVByZXZpZXcobWUpKSx0aGlzLnZhbHVlPVtXWzBdXSk6dGhpcy52YWx1ZS5wdXNoKC4uLlcpLHRoaXMudmFsaWRhdGlvbk1lc3NhZ2U9IiIsdGhpcy52YWxpZGF0aW9uU3RhdGU9bnVsbCx0aGlzLnJlcXVlc3RVcGRhdGUoInZhbHVlIiksYXdhaXQgdGhpcy52YWxpZGF0ZSgpLHRoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMpLHRoaXMuaXNMb2FkaW5nPSExLHRoaXMudmFsdWUubGVuZ3RoPjA/dGhpcy5idXR0b25UZXh0PXRoaXMubXVsdGlwbGU/IkFkZCBtb3JlIGZpbGVzIjoiUmVwbGFjZSBmaWxlIjp0aGlzLmJ1dHRvblRleHQ9IlNlbGVjdCBmaWxlcyJ9YXN5bmMgdmFsaWRhdGUoKXtpZih0aGlzLnZhbGlkYXRpb25NZXNzYWdlPSIiLHRoaXMucmVxdWlyZWQmJnRoaXMudmFsdWUubGVuZ3RoPT09MClyZXR1cm4gdGhpcy52YWxpZGF0aW9uU3RhdGU9ImludmFsaWQiLHRoaXMudmFsaWRhdGlvbk1lc3NhZ2U9IlBsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIGZpbGUiLCExO2ZvcihsZXQgViBvZiB0aGlzLnZhbHVlKWlmKCF0aGlzLnZhbGlkYXRlRmlsZShWKSlyZXR1cm4hMTtyZXR1cm4gdGhpcy52YWxpZGF0aW9uU3RhdGU9dGhpcy52YWx1ZS5sZW5ndGg+MD8idmFsaWQiOm51bGwsITB9c3RhdGlje1pyKGEsdCl9fTtyZXR1cm4gSz1hfSkoKX0pO3ZhciBVZXQ9ZygoKT0+e1ZldCgpfSk7ZnVuY3Rpb24gTjgocyxlPXthbGxvd1FSSUJBTjohMH0pe2lmKHM9PW51bGwpcmV0dXJuITE7bGV0IHQ9bmV3IFJlZ0V4cCgiXlswLTldezJ9JCIsIiIpLGE9cy5zbGljZSgwLDIpLHI9TmNbYV07cmV0dXJuIHI9PT12b2lkIDB8fHIuYmJhbl9yZWdleHA9PT12b2lkIDB8fHIuYmJhbl9yZWdleHA9PT1udWxsfHxyLmNoYXJzPT09dm9pZCAwPyExOnIuY2hhcnM9PT1zLmxlbmd0aCYmdC50ZXN0KHMuc2xpY2UoMiw0KSkmJnpXYShzLnNsaWNlKDQpLGEpJiZoMGEocykmJihlLmFsbG93UVJJQkFOfHwhcDBhKHMpKX1mdW5jdGlvbiB5YW8ocyxlPXthbGxvd1FSSUJBTjohMH0pe2xldCB0PXtlcnJvckNvZGVzOltdLHZhbGlkOiEwfTtpZihzIT1udWxsJiZzIT09IiIpe2xldCBhPU5jW3Muc2xpY2UoMCwyKV07aWYoIWF8fCEoYS5iYmFuX3JlZ2V4cHx8YS5jaGFycykpcmV0dXJuIHQudmFsaWQ9ITEsdC5lcnJvckNvZGVzLnB1c2goUTEuTm9JQkFOQ291bnRyeSksdDthJiZhLmNoYXJzJiZhLmNoYXJzIT09cy5sZW5ndGgmJih0LnZhbGlkPSExLHQuZXJyb3JDb2Rlcy5wdXNoKFExLldyb25nQkJBTkxlbmd0aCkpLGEmJmEuYmJhbl9yZWdleHAmJiFXZXQocy5zbGljZSg0KSxhLmJiYW5fcmVnZXhwKSYmKHQudmFsaWQ9ITEsdC5lcnJvckNvZGVzLnB1c2goUTEuV3JvbmdCQkFORm9ybWF0KSksYSYmYS5iYmFuX3ZhbGlkYXRpb25fZnVuYyYmIWEuYmJhbl92YWxpZGF0aW9uX2Z1bmMocy5zbGljZSg0KSkmJih0LnZhbGlkPSExLHQuZXJyb3JDb2Rlcy5wdXNoKFExLldyb25nQWNjb3VudEJhbmtCcmFuY2hDaGVja3N1bSkpLG5ldyBSZWdFeHAoIl5bMC05XXsyfSQiLCIiKS50ZXN0KHMuc2xpY2UoMiw0KSl8fCh0LnZhbGlkPSExLHQuZXJyb3JDb2Rlcy5wdXNoKFExLkNoZWNrc3VtTm90TnVtYmVyKSksKHQuZXJyb3JDb2Rlcy5pbmRleE9mKFExLldyb25nQkJBTkZvcm1hdCkhPT0tMXx8IWgwYShzKSkmJih0LnZhbGlkPSExLHQuZXJyb3JDb2Rlcy5wdXNoKFExLldyb25nSUJBTkNoZWNrc3VtKSksIWUuYWxsb3dRUklCQU4mJnAwYShzKSYmKHQudmFsaWQ9ITEsdC5lcnJvckNvZGVzLnB1c2goUTEuUVJJQkFOTm90QWxsb3dlZCkpfWVsc2UgdC52YWxpZD0hMSx0LmVycm9yQ29kZXMucHVzaChRMS5Ob0lCQU5Qcm92aWRlZCk7cmV0dXJuIHR9ZnVuY3Rpb24geldhKHMsZSl7aWYocz09bnVsbHx8ZT09PXZvaWQgMHx8ZT09PW51bGwpcmV0dXJuITE7bGV0IHQ9TmNbZV07cmV0dXJuIHQ9PW51bGx8fHQuYmJhbl9yZWdleHA9PT12b2lkIDB8fHQuYmJhbl9yZWdleHA9PT1udWxsfHx0LmNoYXJzPT09dm9pZCAwfHx0LmNoYXJzPT09bnVsbD8hMTp0LmNoYXJzLTQ9PT1zLmxlbmd0aCYmV2V0KHMsdC5iYmFuX3JlZ2V4cCk/dC5iYmFuX3ZhbGlkYXRpb25fZnVuYz90LmJiYW5fdmFsaWRhdGlvbl9mdW5jKHMucmVwbGFjZSgvW1xzLl0rL2csIiIpKTohMDohMX1mdW5jdGlvbiB3YW8ocyl7aWYocyE9bnVsbCl7bGV0IGU9TmNbc107aWYoZSE9PXZvaWQgMClyZXR1cm4gZS5TRVBBP2UuU0VQQTohMX1yZXR1cm4hMX1mdW5jdGlvbiBwMGEocyl7aWYocz09bnVsbClyZXR1cm4hMTtsZXQgZT1zLnNsaWNlKDAsMik7cmV0dXJuWyJMSSIsIkNIIl0uaW5jbHVkZXMoZSk/bmV3IFJlZ0V4cCgiXjNbMC0xXXsxfVswLTldezN9JCIsIiIpLnRlc3Qocy5zbGljZSg0LDkpKTohMX1mdW5jdGlvbiBrYW8ocyl7bGV0IGU9R2V0KHMuYmJhbil8fCIiO2lmKHMuY291bnRyeUNvZGU9PT1udWxsfHxzLmNvdW50cnlDb2RlPT09dm9pZCAwKXJldHVybiBudWxsO2xldCB0PU5jW3MuY291bnRyeUNvZGVdO2lmKGUhPT0iIiYmdCE9PXZvaWQgMCYmdC5jaGFycyYmdC5jaGFycyE9PW51bGwmJnQuY2hhcnM9PT1lLmxlbmd0aCs0JiZ0LmJiYW5fcmVnZXhwJiZ0LmJiYW5fcmVnZXhwIT09bnVsbCYmV2V0KGUsdC5iYmFuX3JlZ2V4cCkpe2xldCBhPUNXYShzLmNvdW50cnlDb2RlKyIwMCIrZSk7cmV0dXJuIHMuY291bnRyeUNvZGUrKCIwIisoOTgtYSkpLnNsaWNlKC0yKStlfXJldHVybiBudWxsfWZ1bmN0aW9uIFNhbyhzKXtsZXQgZT17fSx0PUdldChzKTtpZihlLmliYW49dHx8cyx0JiZOOCh0KSl7ZS5iYmFuPXQuc2xpY2UoNCksZS5jb3VudHJ5Q29kZT10LnNsaWNlKDAsMiksZS52YWxpZD0hMDtsZXQgYT1OY1tlLmNvdW50cnlDb2RlXTtpZihhLmFjY291bnRfaW5kZW50aWZpZXIpe2xldCByPWEuYWNjb3VudF9pbmRlbnRpZmllci5zcGxpdCgiLSIpLG49cGFyc2VJbnQoclswXSksbz1wYXJzZUludChyWzFdKTtlLmFjY291bnROdW1iZXI9ZS5pYmFuLnNsaWNlKG4sbysxKX1pZihhLmJhbmtfaWRlbnRpZmllcil7bGV0IHI9YS5iYW5rX2lkZW50aWZpZXIuc3BsaXQoIi0iKSxuPXBhcnNlSW50KHJbMF0pLG89cGFyc2VJbnQoclsxXSk7ZS5iYW5rSWRlbnRpZmllcj1lLmJiYW4uc2xpY2UobixvKzEpfWlmKGEuYnJhbmNoX2luZGVudGlmaWVyKXtsZXQgcj1hLmJyYW5jaF9pbmRlbnRpZmllci5zcGxpdCgiLSIpLG49cGFyc2VJbnQoclswXSksbz1wYXJzZUludChyWzFdKTtlLmJyYW5jaElkZW50aWZpZXI9ZS5iYmFuLnNsaWNlKG4sbysxKX19ZWxzZSBlLnZhbGlkPSExO3JldHVybiBlfWZ1bmN0aW9uIFdldChzLGUpe3JldHVybiBuZXcgUmVnRXhwKGUsIiIpLnRlc3Qocyl9ZnVuY3Rpb24gR2V0KHMpe3JldHVybiB0eXBlb2YgcyE9InN0cmluZyI/bnVsbDpzLnJlcGxhY2UoL1stXCBdL2csIiIpLnRvVXBwZXJDYXNlKCl9ZnVuY3Rpb24gZnYocyxlKXtpZih0eXBlb2YgcyE9InN0cmluZyIpcmV0dXJuIG51bGw7ZT09bnVsbCYmKGU9IiAiKTtsZXQgdD1HZXQocyk7cmV0dXJuIHQ9PT1udWxsP251bGw6dC5yZXBsYWNlKC8oLns0fSkoPyEkKS9nLCIkMSIrZSl9ZnVuY3Rpb24gaDBhKHMpe2xldCBlPXMuc2xpY2UoMCwyKSx0PXBhcnNlSW50KHMuc2xpY2UoMiw0KSwxMCksYT1zLnNsaWNlKDQpLHI9ZjBhKGAke2F9JHtlfTAwYCk7cmV0dXJuIDk4LVNuZShyKT09PXR9ZnVuY3Rpb24gZjBhKHMpe3JldHVybiBzLnNwbGl0KCIiKS5tYXAoZT0+e2xldCB0PWUuY2hhckNvZGVBdCgwKTtyZXR1cm4gdD49NjU/KHQtNTUpLnRvU3RyaW5nKCk6ZX0pLmpvaW4oIiIpfWZ1bmN0aW9uIENXYShzKXtyZXR1cm4gU25lKGYwYShzLnNsaWNlKDQpK3Muc2xpY2UoMCw0KSkpfWZ1bmN0aW9uIF9hbygpe2xldCBzPXt9O2ZvcihsZXQgZSBpbiBOYyl7bGV0IHQ9TmNbZV07c1tlXT17Y2hhcnM6dC5jaGFyc3x8bnVsbCxiYmFuX3JlZ2V4cDp0LmJiYW5fcmVnZXhwfHxudWxsLElCQU5SZWdpc3RyeTp0LklCQU5SZWdpc3RyeXx8ITEsU0VQQTp0LlNFUEF8fCExfX1yZXR1cm4gc31mdW5jdGlvbiBUV2Eocyl7aWYoIXMpcmV0dXJuITE7bGV0IGU9bmV3IFJlZ0V4cCgiXlthLXpBLVpdezZ9W2EtekEtWjAtOV17Mn0oW2EtekEtWjAtOV17M30pPyQiLCIiKSx0PU5jW3MudG9VcHBlckNhc2UoKS5zbGljZSg0LDYpXTtyZXR1cm4gZS50ZXN0KHMpJiZ0IT09dm9pZCAwfWZ1bmN0aW9uIE1hbyhzKXtsZXQgZT17ZXJyb3JDb2RlczpbXSx2YWxpZDohMH07cmV0dXJuIHMhPW51bGwmJnMhPT0iIj9OY1tzLnRvVXBwZXJDYXNlKCkuc2xpY2UoNCw2KV09PT12b2lkIDA/KGUudmFsaWQ9ITEsZS5lcnJvckNvZGVzLnB1c2goJFouTm9CSUNDb3VudHJ5KSk6bmV3IFJlZ0V4cCgiXlthLXpBLVpdezZ9W2EtekEtWjAtOV17Mn0oW2EtekEtWjAtOV17M30pPyQiLCIiKS50ZXN0KHMpfHwoZS52YWxpZD0hMSxlLmVycm9yQ29kZXMucHVzaCgkWi5Xcm9uZ0JJQ0Zvcm1hdCkpOihlLnZhbGlkPSExLGUuZXJyb3JDb2Rlcy5wdXNoKCRaLk5vQklDUHJvdmlkZWQpKSxlfWZ1bmN0aW9uIHphbyhzKXtsZXQgZT17fSx0PXMudG9VcHBlckNhc2UoKTtyZXR1cm4gVFdhKHQpPyhlLmJhbmtDb2RlPXQuc2xpY2UoMCw0KSxlLmNvdW50cnlDb2RlPXQuc2xpY2UoNCw2KSxlLmxvY2F0aW9uQ29kZT10LnNsaWNlKDYsOCksZS50ZXN0QklDPWUubG9jYXRpb25Db2RlWzFdPT09IjAiLGUuYnJhbmNoQ29kZT10Lmxlbmd0aD44P3Quc2xpY2UoOCk6bnVsbCxlLnZhbGlkPSEwKTplLnZhbGlkPSExLGV9dmFyIFExLCRaLCRXYSxEV2EsU25lLGh2LExXYSxFV2EsbTBhLFBXYSxnMGEsSVdhLGIwYSxBV2EsQ2FvLE5jLEtldD1nKCgpPT57InVzZSBzdHJpY3QiO2koTjgsImlzVmFsaWRJQkFOIik7KGZ1bmN0aW9uKHMpe3Nbcy5Ob0lCQU5Qcm92aWRlZD0wXT0iTm9JQkFOUHJvdmlkZWQiLHNbcy5Ob0lCQU5Db3VudHJ5PTFdPSJOb0lCQU5Db3VudHJ5IixzW3MuV3JvbmdCQkFOTGVuZ3RoPTJdPSJXcm9uZ0JCQU5MZW5ndGgiLHNbcy5Xcm9uZ0JCQU5Gb3JtYXQ9M109Ildyb25nQkJBTkZvcm1hdCIsc1tzLkNoZWNrc3VtTm90TnVtYmVyPTRdPSJDaGVja3N1bU5vdE51bWJlciIsc1tzLldyb25nSUJBTkNoZWNrc3VtPTVdPSJXcm9uZ0lCQU5DaGVja3N1bSIsc1tzLldyb25nQWNjb3VudEJhbmtCcmFuY2hDaGVja3N1bT02XT0iV3JvbmdBY2NvdW50QmFua0JyYW5jaENoZWNrc3VtIixzW3MuUVJJQkFOTm90QWxsb3dlZD03XT0iUVJJQkFOTm90QWxsb3dlZCJ9KShRMXx8KFExPXt9KSk7aSh5YW8sInZhbGlkYXRlSUJBTiIpO2koeldhLCJpc1ZhbGlkQkJBTiIpO2kod2FvLCJpc1NFUEFDb3VudHJ5Iik7aShwMGEsImlzUVJJQkFOIik7aShrYW8sImNvbXBvc2VJQkFOIik7aShTYW8sImV4dHJhY3RJQkFOIik7aShXZXQsImNoZWNrRm9ybWF0QkJBTiIpO2koR2V0LCJlbGVjdHJvbmljRm9ybWF0SUJBTiIpO2koZnYsImZyaWVuZGx5Rm9ybWF0SUJBTiIpO2koaDBhLCJpc1ZhbGlkSUJBTkNoZWNrc3VtIik7aShmMGEsInJlcGxhY2VDaGFyYXRlcldpdGhDb2RlIik7aShDV2EsIm1vZDk3MTBJYmFuIik7aShfYW8sImdldENvdW50cnlTcGVjaWZpY2F0aW9ucyIpO2koVFdhLCJpc1ZhbGlkQklDIik7KGZ1bmN0aW9uKHMpe3Nbcy5Ob0JJQ1Byb3ZpZGVkPTBdPSJOb0JJQ1Byb3ZpZGVkIixzW3MuTm9CSUNDb3VudHJ5PTFdPSJOb0JJQ0NvdW50cnkiLHNbcy5Xcm9uZ0JJQ0Zvcm1hdD0yXT0iV3JvbmdCSUNGb3JtYXQifSkoJFp8fCgkWj17fSkpO2koTWFvLCJ2YWxpZGF0ZUJJQyIpO2koemFvLCJleHRyYWN0QklDIik7JFdhPWkocz0+e2xldCBlPVs1LDQsMywyLDcsNiw1LDQsMywyXSx0PXMucmVwbGFjZSgvW1xzLl0rL2csIiIpLGE9cGFyc2VJbnQodC5jaGFyQXQoMTApLDEwKSxyPXQuc3Vic3RyaW5nKDAsMTApLG49MDtmb3IobGV0IGw9MDtsPDEwO2wrKyluKz1wYXJzZUludChyLmNoYXJBdChsKSwxMCkqZVtsXTtsZXQgbz1uJTExO3JldHVybiBhPT09KG89PT0wPzA6MTEtbyl9LCJjaGVja05vcndheUJCQU4iKSxEV2E9aShzPT57bGV0IGU9cy5yZXBsYWNlKC9bXHMuXSsvZywiIiksdD1wYXJzZUludChlLnN1YnN0cmluZygwLGUubGVuZ3RoLTIpLDEwKSxhPXBhcnNlSW50KGUuc3Vic3RyaW5nKGUubGVuZ3RoLTIsZS5sZW5ndGgpLDEwKTtyZXR1cm4odCU5Nz09PTA/OTc6dCU5Nyk9PT1hfSwiY2hlY2tCZWxnaWFuQkJBTiIpLFNuZT1pKHM9Pntmb3IoO3MubGVuZ3RoPjI7KXtsZXQgZT1zLnNsaWNlKDAsNiksdD1wYXJzZUludChlLDEwKTtpZihpc05hTih0KSlyZXR1cm4gTmFOO3M9dCU5NytzLnNsaWNlKGUubGVuZ3RoKX1yZXR1cm4gcGFyc2VJbnQocywxMCklOTd9LCJtb2Q5NzEwIiksaHY9aShzPT57bGV0IGU9cy5yZXBsYWNlKC9bXHMuXSsvZywiIik7cmV0dXJuIFNuZShlKT09PTF9LCJjaGVja01vZDk3MTBCQkFOIiksTFdhPWkocz0+e2xldCBlPVszLDksNywxLDMsOSw3XSx0PXBhcnNlSW50KHMuY2hhckF0KDcpLDEwKSxhPXMuc3Vic3RyaW5nKDAsNykscj0wO2ZvcihsZXQgbz0wO288NztvKyspcis9cGFyc2VJbnQoYS5jaGFyQXQobyksMTApKmVbb107bGV0IG49ciUxMDtyZXR1cm4gdD09PShuPT09MD8wOjEwLW4pfSwiY2hlY2tQb2xhbmRCQkFOIiksRVdhPWkocz0+e2xldCBlPVs0LDgsNSwxMCw5LDcsMyw2XSx0PVsxLDIsNCw4LDUsMTAsOSw3LDMsNl0sYT1wYXJzZUludChzLmNoYXJBdCg4KSwxMCkscj1wYXJzZUludChzLmNoYXJBdCg5KSwxMCksbj1zLnN1YnN0cmluZygwLDgpLG89cy5zdWJzdHJpbmcoMTAsMjApLGw9MDtmb3IobGV0IGQ9MDtkPDg7ZCsrKWwrPXBhcnNlSW50KG4uY2hhckF0KGQpLDEwKSplW2RdO2xldCBwPWwlMTE7aWYoYSE9PShwPT09MD8wOnA9PT0xPzE6MTEtcCkpcmV0dXJuITE7bD0wO2ZvcihsZXQgZD0wO2Q8MTA7ZCsrKWwrPXBhcnNlSW50KG8uY2hhckF0KGQpLDEwKSp0W2RdO3JldHVybiBwPWwlMTEscj09PShwPT09MD8wOnA9PT0xPzE6MTEtcCl9LCJjaGVja1NwYWluQkJBTiIpLG0wYT1pKChzLGUpPT57bGV0IHQ9MTA7Zm9yKGxldCBhPTA7YTxzLmxlbmd0aDthKyspdCs9cGFyc2VJbnQocy5jaGFyQXQoYSksMTApLHQlMTAhPT0wJiYodD10JTEwKSx0PXQqMix0PXQlMTE7cmV0dXJuIGU9PT0oMTEtdD09PTEwPzA6MTEtdCl9LCJjaGVja01vZDExMTAiKSxQV2E9aShzPT57bGV0IGU9cGFyc2VJbnQocy5jaGFyQXQoNiksMTApLHQ9cGFyc2VJbnQocy5jaGFyQXQoMTYpLDEwKSxhPXMuc3Vic3RyaW5nKDAsNikscj1zLnN1YnN0cmluZyg3LDE2KTtyZXR1cm4gbTBhKGEsZSkmJm0wYShyLHQpfSwiY2hlY2tDcm9hdGlhbkJCQU4iKSxnMGE9aShzPT57bGV0IGU9WzEwLDUsOCw0LDIsMV0sdD1bNiwzLDcsOSwxMCw1LDgsNCwyLDFdLGE9cGFyc2VJbnQocy5jaGFyQXQoOSksMTApLHI9cGFyc2VJbnQocy5jaGFyQXQoMTkpLDEwKSxuPXMuc3Vic3RyaW5nKDQsOSksbz1zLnN1YnN0cmluZygxMCwxOSksbD0wO2ZvcihsZXQgZD0wO2Q8bi5sZW5ndGg7ZCsrKWwrPXBhcnNlSW50KG4uY2hhckF0KGQpLDEwKSplW2RdO2xldCBwPWwlMTE7aWYoYSE9PShwPT09MD8wOnA9PT0xPzE6MTEtcCkpcmV0dXJuITE7bD0wO2ZvcihsZXQgZD0wO2Q8by5sZW5ndGg7ZCsrKWwrPXBhcnNlSW50KG8uY2hhckF0KGQpLDEwKSp0W2RdO3JldHVybiBwPWwlMTEscj09PShwPT09MD8wOnA9PT0xPzE6MTEtcCl9LCJjaGVja0N6ZWNoQW5kU2xvdmFrQkJBTiIpLElXYT1pKHM9PntsZXQgZT1bNywxLDMsNywxLDMsNywxLDMsNywxLDMsN10sdD1wYXJzZUludChzLmNoYXJBdCgxNSksMTApLGE9cy5zdWJzdHJpbmcoMiwxNSkscj0wO2ZvcihsZXQgbz0wO288YS5sZW5ndGg7bysrKXIrPXBhcnNlSW50KGEuY2hhckF0KG8pLDEwKSplW29dO2xldCBuPXIlMTA7cmV0dXJuIHQ9PT0obj09PTA/MDoxMC1uKX0sImNoZWNrRXN0b25pYW5CQkFOIiksYjBhPWkocz0+e2xldCBlPXMucmVwbGFjZSgvW1xzLl0rL2csIiIpLHQ9QXJyYXkuZnJvbShlKTtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyl7bGV0IG49dFtyXS5jaGFyQ29kZUF0KDApO2lmKG4+PTY1KXN3aXRjaChuKXtjYXNlIDY1OmNhc2UgNzQ6dFtyXT0iMSI7YnJlYWs7Y2FzZSA2NjpjYXNlIDc1OmNhc2UgODM6dFtyXT0iMiI7YnJlYWs7Y2FzZSA2NzpjYXNlIDc2OmNhc2UgODQ6dFtyXT0iMyI7YnJlYWs7Y2FzZSA2ODpjYXNlIDc3OmNhc2UgODU6dFtyXT0iNCI7YnJlYWs7Y2FzZSA2OTpjYXNlIDc4OmNhc2UgODY6dFtyXT0iNSI7YnJlYWs7Y2FzZSA3MDpjYXNlIDc5OmNhc2UgODc6dFtyXT0iNiI7YnJlYWs7Y2FzZSA3MTpjYXNlIDgwOmNhc2UgODg6dFtyXT0iNyI7YnJlYWs7Y2FzZSA3MjpjYXNlIDgxOmNhc2UgODk6dFtyXT0iOCI7YnJlYWs7Y2FzZSA3MzpjYXNlIDgyOmNhc2UgOTA6dFtyXT0iOSI7YnJlYWt9fXJldHVybiBTbmUodC5qb2luKCIiKSk9PT0wfSwiY2hlY2tGcmVuY2hCQkFOIiksQVdhPWkocz0+e2xldCBlPVs5LDcsMywxLDksNywzLDEsOSw3LDMsMSw5LDcsM10sdD1wYXJzZUludChzLmNoYXJBdCg3KSwxMCksYT1zLnN1YnN0cmluZygwLDcpLHI9MDtmb3IobGV0IG89MDtvPGEubGVuZ3RoO28rKylyKz1wYXJzZUludChhLmNoYXJBdChvKSwxMCkqZVtvXTtsZXQgbj1yJTEwO2lmKHQhPT0obj09PTA/MDoxMC1uKSlyZXR1cm4hMTtpZihyPTAscy5lbmRzV2l0aCgiMDAwMDAwMDAiKSl7bGV0IG89cy5zdWJzdHJpbmcoOCwxNSksbD1wYXJzZUludChzLmNoYXJBdCgxNSksMTApO2ZvcihsZXQgZD0wO2Q8by5sZW5ndGg7ZCsrKXIrPXBhcnNlSW50KG8uY2hhckF0KGQpLDEwKSplW2RdO2xldCBwPXIlMTA7cmV0dXJuIGw9PT0ocD09PTA/MDoxMC1wKX1lbHNle2xldCBvPXMuc3Vic3RyaW5nKDgsMjMpLGw9cGFyc2VJbnQocy5jaGFyQXQoMjMpLDEwKTtmb3IobGV0IGQ9MDtkPG8ubGVuZ3RoO2QrKylyKz1wYXJzZUludChvLmNoYXJBdChkKSwxMCkqZVtkXTtsZXQgcD1yJTEwO3JldHVybiBsPT09KHA9PT0wPzA6MTAtcCl9fSwiY2hlY2tIdW5nYXJpYW5CQkFOIiksQ2FvPWkoKHMsZSk9PnR5cGVvZiBOY1tzXT4idSI/ITE6KE5jW3NdLmJiYW5fdmFsaWRhdGlvbl9mdW5jPWUsITApLCJzZXRDb3VudHJ5QkJBTlZhbGlkYXRpb24iKSxOYz17QUQ6e2NoYXJzOjI0LGJiYW5fcmVnZXhwOiJeWzAtOV17OH1bQS1aMC05XXsxMn0kIixJQkFOUmVnaXN0cnk6ITAsU0VQQTohMCxicmFuY2hfaW5kZW50aWZpZXI6IjQtNyIsYmFua19pZGVudGlmaWVyOiIwLTMiLGFjY291bnRfaW5kZW50aWZpZXI6IjEyLTIzIn0sQUU6e2NoYXJzOjIzLGJiYW5fcmVnZXhwOiJeWzAtOV17M31bMC05XXsxNn0kIixJQkFOUmVnaXN0cnk6ITAsYmFua19pZGVudGlmaWVyOiIwLTIiLGFjY291bnRfaW5kZW50aWZpZXI6IjctMjMifSxBRjp7fSxBRzp7fSxBSTp7fSxBTDp7Y2hhcnM6MjgsYmJhbl9yZWdleHA6Il5bMC05XXs4fVtBLVowLTldezE2fSQiLElCQU5SZWdpc3RyeTohMCxicmFuY2hfaW5kZW50aWZpZXI6IjMtNyIsYmFua19pZGVudGlmaWVyOiIwLTIiLGFjY291bnRfaW5kZW50aWZpZXI6IjEyLTI4In0sQU06e30sQU86e2NoYXJzOjI1LGJiYW5fcmVnZXhwOiJeWzAtOV17MjF9JCJ9LEFROnt9LEFSOnt9LEFTOnt9LEFUOntjaGFyczoyMCxiYmFuX3JlZ2V4cDoiXlswLTldezE2fSQiLElCQU5SZWdpc3RyeTohMCxTRVBBOiEwLGJhbmtfaWRlbnRpZmllcjoiMC00In0sQVU6e30sQVc6e30sQVg6e2NoYXJzOjE4LGJiYW5fcmVnZXhwOiJeWzAtOV17MTR9JCIsSUJBTlJlZ2lzdHJ5OiEwfSxBWjp7Y2hhcnM6MjgsYmJhbl9yZWdleHA6Il5bQS1aXXs0fVtBLVowLTldezIwfSQiLElCQU5SZWdpc3RyeTohMCxiYW5rX2lkZW50aWZpZXI6IjAtMyIsYWNjb3VudF9pbmRlbnRpZmllcjoiNC0yOCJ9LEJBOntjaGFyczoyMCxiYmFuX3JlZ2V4cDoiXlswLTldezE2fSQiLGJiYW5fdmFsaWRhdGlvbl9mdW5jOmh2LElCQU5SZWdpc3RyeTohMCxicmFuY2hfaW5kZW50aWZpZXI6IjMtNSIsYmFua19pZGVudGlmaWVyOiIwLTIifSxCQjp7fSxCRDp7fSxCRTp7Y2hhcnM6MTYsYmJhbl9yZWdleHA6Il5bMC05XXsxMn0kIixiYmFuX3ZhbGlkYXRpb25fZnVuYzpEV2EsSUJBTlJlZ2lzdHJ5OiEwLFNFUEE6ITAsYmFua19pZGVudGlmaWVyOiIwLTIiLGFjY291bnRfaW5kZW50aWZpZXI6IjAtMTYifSxCRjp7Y2hhcnM6MjgsYmJhbl9yZWdleHA6Il5bQS1aMC05XXsyfVswLTldezIyfSQifSxCRzp7Y2hhcnM6MjIsYmJhbl9yZWdleHA6Il5bQS1aXXs0fVswLTldezZ9W0EtWjAtOV17OH0kIixJQkFOUmVnaXN0cnk6ITAsU0VQQTohMCxicmFuY2hfaW5kZW50aWZpZXI6IjQtNyIsYmFua19pZGVudGlmaWVyOiIwLTMifSxCSDp7Y2hhcnM6MjIsYmJhbl9yZWdleHA6Il5bQS1aXXs0fVtBLVowLTldezE0fSQiLElCQU5SZWdpc3RyeTohMCxiYW5rX2lkZW50aWZpZXI6IjAtMyIsYWNjb3VudF9pbmRlbnRpZmllcjoiOC0yMiJ9LEJJOntjaGFyczoyNyxiYmFuX3JlZ2V4cDoiXlswLTldezIzfSQiLGJyYW5jaF9pbmRlbnRpZmllcjoiNS05IixiYW5rX2lkZW50aWZpZXI6IjAtNCIsYWNjb3VudF9pbmRlbnRpZmllcjoiMTQtMjcifSxCSjp7Y2hhcnM6MjgsYmJhbl9yZWdleHA6Il5bQS1aMC05XXsyfVswLTldezIyfSQifSxCTDp7Y2hhcnM6MjcsYmJhbl9yZWdleHA6Il5bMC05XXsxMH1bQS1aMC05XXsxMX1bMC05XXsyfSQifSxCTTp7fSxCTjp7fSxCTzp7fSxCUTp7fSxCUjp7Y2hhcnM6MjksYmJhbl9yZWdleHA6Il5bMC05XXsyM31bQS1aXXsxfVtBLVowLTldezF9JCIsSUJBTlJlZ2lzdHJ5OiEwLGJyYW5jaF9pbmRlbnRpZmllcjoiOC0xMiIsYmFua19pZGVudGlmaWVyOiIwLTciLGFjY291bnRfaW5kZW50aWZpZXI6IjE3LTI5In0sQlM6e30sQlQ6e30sQlY6e30sQlc6e30sQlk6e2NoYXJzOjI4LGJiYW5fcmVnZXhwOiJeW0EtWl17NH1bMC05XXs0fVtBLVowLTldezE2fSQiLElCQU5SZWdpc3RyeTohMCxiYW5rX2lkZW50aWZpZXI6IjAtMyJ9LEJaOnt9LENBOnt9LENDOnt9LENEOnt9LENGOntjaGFyczoyNyxiYmFuX3JlZ2V4cDoiXlswLTldezIzfSQifSxDRzp7Y2hhcnM6MjcsYmJhbl9yZWdleHA6Il5bMC05XXsyM30kIn0sQ0g6e2NoYXJzOjIxLGJiYW5fcmVnZXhwOiJeWzAtOV17NX1bQS1aMC05XXsxMn0kIixJQkFOUmVnaXN0cnk6ITAsU0VQQTohMCxiYW5rX2lkZW50aWZpZXI6IjAtNCJ9LENJOntjaGFyczoyOCxiYmFuX3JlZ2V4cDoiXltBLVpdezF9WzAtOV17MjN9JCJ9LENLOnt9LENMOnt9LENNOntjaGFyczoyNyxiYmFuX3JlZ2V4cDoiXlswLTldezIzfSQifSxDTjp7fSxDTzp7fSxDUjp7Y2hhcnM6MjIsYmJhbl9yZWdleHA6Il5bMC05XXsxOH0kIixJQkFOUmVnaXN0cnk6ITAsYmFua19pZGVudGlmaWVyOiIwLTMiLGFjY291bnRfaW5kZW50aWZpZXI6IjgtMjIifSxDVTp7fSxDVjp7Y2hhcnM6MjUsYmJhbl9yZWdleHA6Il5bMC05XXsyMX0kIn0sQ1c6e30sQ1g6e30sQ1k6e2NoYXJzOjI4LGJiYW5fcmVnZXhwOiJeWzAtOV17OH1bQS1aMC05XXsxNn0kIixJQkFOUmVnaXN0cnk6ITAsU0VQQTohMCxicmFuY2hfaW5kZW50aWZpZXI6IjMtNyIsYmFua19pZGVudGlmaWVyOiIwLTIiLGFjY291bnRfaW5kZW50aWZpZXI6IjEyLTI4In0sQ1o6e2NoYXJzOjI0LGJiYW5fcmVnZXhwOiJeWzAtOV17MjB9JCIsYmJhbl92YWxpZGF0aW9uX2Z1bmM6ZzBhLElCQU5SZWdpc3RyeTohMCxTRVBBOiEwLGJhbmtfaWRlbnRpZmllcjoiMC0zIn0sREU6e2NoYXJzOjIyLGJiYW5fcmVnZXhwOiJeWzAtOV17MTh9JCIsSUJBTlJlZ2lzdHJ5OiEwLFNFUEE6ITAsYmFua19pZGVudGlmaWVyOiIwLTciLGFjY291bnRfaW5kZW50aWZpZXI6IjEyLTIyIn0sREo6e2NoYXJzOjI3LGJiYW5fcmVnZXhwOiJeWzAtOV17MjN9JCIsYnJhbmNoX2luZGVudGlmaWVyOiI1LTkiLGJhbmtfaWRlbnRpZmllcjoiMC00IixhY2NvdW50X2luZGVudGlmaWVyOiIxNC0yNyJ9LERLOntjaGFyczoxOCxiYmFuX3JlZ2V4cDoiXlswLTldezE0fSQiLElCQU5SZWdpc3RyeTohMCxTRVBBOiEwLGJhbmtfaWRlbnRpZmllcjoiMC0zIixhY2NvdW50X2luZGVudGlmaWVyOiI0LTE4In0sRE06e30sRE86e2NoYXJzOjI4LGJiYW5fcmVnZXhwOiJeW0EtWl17NH1bMC05XXsyMH0kIixJQkFOUmVnaXN0cnk6ITAsYmFua19pZGVudGlmaWVyOiIwLTMiLGFjY291bnRfaW5kZW50aWZpZXI6IjgtMjgifSxEWjp7Y2hhcnM6MjYsYmJhbl9yZWdleHA6Il5bMC05XXsyMn0kIn0sRUM6e30sRUU6e2NoYXJzOjIwLGJiYW5fcmVnZXhwOiJeWzAtOV17MTZ9JCIsYmJhbl92YWxpZGF0aW9uX2Z1bmM6SVdhLElCQU5SZWdpc3RyeTohMCxTRVBBOiEwLGJhbmtfaWRlbnRpZmllcjoiMC0xIixhY2NvdW50X2luZGVudGlmaWVyOiI4LTIwIn0sRUc6e2NoYXJzOjI5LGJiYW5fcmVnZXhwOiJeWzAtOV17MjV9IixJQkFOUmVnaXN0cnk6ITAsYnJhbmNoX2luZGVudGlmaWVyOiI0LTciLGJhbmtfaWRlbnRpZmllcjoiMC0zIixhY2NvdW50X2luZGVudGlmaWVyOiIxNy0yOSJ9LEVIOnt9LEVSOnt9LEVTOntjaGFyczoyNCxiYmFuX3ZhbGlkYXRpb25fZnVuYzpFV2EsYmJhbl9yZWdleHA6Il5bMC05XXsyMH0kIixJQkFOUmVnaXN0cnk6ITAsU0VQQTohMCxicmFuY2hfaW5kZW50aWZpZXI6IjQtNyIsYmFua19pZGVudGlmaWVyOiIwLTMiLGFjY291bnRfaW5kZW50aWZpZXI6IjE0LTI0In0sRVQ6e30sRkk6e2NoYXJzOjE4LGJiYW5fcmVnZXhwOiJeWzAtOV17MTR9JCIsSUJBTlJlZ2lzdHJ5OiEwLFNFUEE6ITAsYmFua19pZGVudGlmaWVyOiIwLTIiLGFjY291bnRfaW5kZW50aWZpZXI6IjAtMCJ9LEZKOnt9LEZLOntjaGFyczoxOCxiYmFuX3JlZ2V4cDoiXltBLVpdezJ9WzAtOV17MTJ9JCIsYmFua19pZGVudGlmaWVyOiIwLTEiLGFjY291bnRfaW5kZW50aWZpZXI6IjYtMTgifSxGTTp7fSxGTzp7Y2hhcnM6MTgsYmJhbl9yZWdleHA6Il5bMC05XXsxNH0kIixJQkFOUmVnaXN0cnk6ITAsYmFua19pZGVudGlmaWVyOiIwLTMiLGFjY291bnRfaW5kZW50aWZpZXI6IjQtMTgifSxGUjp7Y2hhcnM6MjcsYmJhbl9yZWdleHA6Il5bMC05XXsxMH1bQS1aMC05XXsxMX1bMC05XXsyfSQiLGJiYW5fdmFsaWRhdGlvbl9mdW5jOmIwYSxJQkFOUmVnaXN0cnk6ITAsU0VQQTohMCxiYW5rX2lkZW50aWZpZXI6IjAtNCIsYnJhbmNoX2luZGVudGlmaWVyOiI1LTkiLGFjY291bnRfaW5kZW50aWZpZXI6IjE0LTI0In0sR0E6e2NoYXJzOjI3LGJiYW5fcmVnZXhwOiJeWzAtOV17MjN9JCJ9LEdCOntjaGFyczoyMixiYmFuX3JlZ2V4cDoiXltBLVpdezR9WzAtOV17MTR9JCIsSUJBTlJlZ2lzdHJ5OiEwLFNFUEE6ITAsYnJhbmNoX2luZGVudGlmaWVyOiI0LTkiLGJhbmtfaWRlbnRpZmllcjoiMC0zIn0sR0Q6e30sR0U6e2NoYXJzOjIyLGJiYW5fcmVnZXhwOiJeW0EtWjAtOV17Mn1bMC05XXsxNn0kIixJQkFOUmVnaXN0cnk6ITAsYmFua19pZGVudGlmaWVyOiIwLTEiLGFjY291bnRfaW5kZW50aWZpZXI6IjYtMjIifSxHRjp7Y2hhcnM6MjcsYmJhbl9yZWdleHA6Il5bMC05XXsxMH1bQS1aMC05XXsxMX1bMC05XXsyfSQiLElCQU5SZWdpc3RyeTohMH0sR0c6e30sR0g6e30sR0k6e2NoYXJzOjIzLGJiYW5fcmVnZXhwOiJeW0EtWl17NH1bQS1aMC05XXsxNX0kIixJQkFOUmVnaXN0cnk6ITAsU0VQQTohMCxiYW5rX2lkZW50aWZpZXI6IjAtMyIsYWNjb3VudF9pbmRlbnRpZmllcjoiOC0yMyJ9LEdMOntjaGFyczoxOCxiYmFuX3JlZ2V4cDoiXlswLTldezE0fSQiLElCQU5SZWdpc3RyeTohMCxiYW5rX2lkZW50aWZpZXI6IjAtMyIsYWNjb3VudF9pbmRlbnRpZmllcjoiNC0xOCJ9LEdNOnt9LEdOOnt9LEdQOntjaGFyczoyNyxiYmFuX3JlZ2V4cDoiXlswLTldezEwfVtBLVowLTldezExfVswLTldezJ9JCIsSUJBTlJlZ2lzdHJ5OiEwfSxHUTp7Y2hhcnM6MjcsYmJhbl9yZWdleHA6Il5bMC05XXsyM30kIn0sR1I6e2NoYXJzOjI3LGJiYW5fcmVnZXhwOiJeWzAtOV17N31bQS1aMC05XXsxNn0kIixJQkFOUmVnaXN0cnk6ITAsU0VQQTohMCxicmFuY2hfaW5kZW50aWZpZXI6IjMtNiIsYmFua19pZGVudGlmaWVyOiIwLTIiLGFjY291bnRfaW5kZW50aWZpZXI6IjctMjcifSxHUzp7fSxHVDp7Y2hhcnM6MjgsYmJhbl9yZWdleHA6Il5bQS1aMC05XXsyNH0kIixJQkFOUmVnaXN0cnk6ITAsYmFua19pZGVudGlmaWVyOiIwLTMiLGFjY291bnRfaW5kZW50aWZpZXI6IjgtMjgifSxHVTp7fSxHVzp7Y2hhcnM6MjUsYmJhbl9yZWdleHA6Il5bQS1aXXsyfVswLTldezE5fSQifSxHWTp7fSxISzp7fSxITTp7fSxITjp7Y2hhcnM6MjgsYmJhbl9yZWdleHA6Il5bQS1aXXs0fVswLTldezIwfSQifSxIUjp7Y2hhcnM6MjEsYmJhbl9yZWdleHA6Il5bMC05XXsxN30kIixiYmFuX3ZhbGlkYXRpb25fZnVuYzpQV2EsSUJBTlJlZ2lzdHJ5OiEwLFNFUEE6ITAsYmFua19pZGVudGlmaWVyOiIwLTYifSxIVDp7fSxIVTp7Y2hhcnM6MjgsYmJhbl9yZWdleHA6Il5bMC05XXsyNH0kIixiYmFuX3ZhbGlkYXRpb25fZnVuYzpBV2EsSUJBTlJlZ2lzdHJ5OiEwLFNFUEE6ITAsYnJhbmNoX2luZGVudGlmaWVyOiIzLTYiLGJhbmtfaWRlbnRpZmllcjoiMC0yIn0sSUQ6e30sSUU6e2NoYXJzOjIyLGJiYW5fcmVnZXhwOiJeW0EtWjAtOV17NH1bMC05XXsxNH0kIixJQkFOUmVnaXN0cnk6ITAsU0VQQTohMCxicmFuY2hfaW5kZW50aWZpZXI6IjQtOSIsYmFua19pZGVudGlmaWVyOiIwLTMifSxJTDp7Y2hhcnM6MjMsYmJhbl9yZWdleHA6Il5bMC05XXsxOX0kIixJQkFOUmVnaXN0cnk6ITAsYnJhbmNoX2luZGVudGlmaWVyOiIzLTUiLGJhbmtfaWRlbnRpZmllcjoiMC0yIn0sSU06e30sSU46e30sSU86e30sSVE6e2NoYXJzOjIzLGJiYW5fcmVnZXhwOiJeW0EtWl17NH1bMC05XXsxNX0kIixJQkFOUmVnaXN0cnk6ITAsYnJhbmNoX2luZGVudGlmaWVyOiI0LTYiLGJhbmtfaWRlbnRpZmllcjoiMC0zIixhY2NvdW50X2luZGVudGlmaWVyOiIxMS0yMyJ9LElSOntjaGFyczoyNixiYmFuX3JlZ2V4cDoiXlswLTldezIyfSQifSxJUzp7Y2hhcnM6MjYsYmJhbl9yZWdleHA6Il5bMC05XXsyMn0kIixJQkFOUmVnaXN0cnk6ITAsU0VQQTohMCxicmFuY2hfaW5kZW50aWZpZXI6IjItMyIsYmFua19pZGVudGlmaWVyOiIwLTEiLGFjY291bnRfaW5kZW50aWZpZXI6IjgtMjUifSxJVDp7Y2hhcnM6MjcsYmJhbl9yZWdleHA6Il5bQS1aXXsxfVswLTldezEwfVtBLVowLTldezEyfSQiLElCQU5SZWdpc3RyeTohMCxTRVBBOiEwLGJyYW5jaF9pbmRlbnRpZmllcjoiNi0xMCIsYmFua19pZGVudGlmaWVyOiIxLTUiLGFjY291bnRfaW5kZW50aWZpZXI6IjQtMjcifSxKRTp7fSxKTTp7fSxKTzp7Y2hhcnM6MzAsYmJhbl9yZWdleHA6Il5bQS1aXXs0fVswLTldezR9W0EtWjAtOV17MTh9JCIsSUJBTlJlZ2lzdHJ5OiEwLGJyYW5jaF9pbmRlbnRpZmllcjoiNC03IixiYW5rX2lkZW50aWZpZXI6IjQtNyJ9LEpQOnt9LEtFOnt9LEtHOnt9LEtIOnt9LEtJOnt9LEtNOntjaGFyczoyNyxiYmFuX3JlZ2V4cDoiXlswLTldezIzfSQifSxLTjp7fSxLUDp7fSxLUjp7fSxLVzp7Y2hhcnM6MzAsYmJhbl9yZWdleHA6Il5bQS1aXXs0fVtBLVowLTldezIyfSQiLElCQU5SZWdpc3RyeTohMCxiYW5rX2lkZW50aWZpZXI6IjAtMyIsYWNjb3VudF9pbmRlbnRpZmllcjoiMjAtMzAifSxLWTp7fSxLWjp7Y2hhcnM6MjAsYmJhbl9yZWdleHA6Il5bMC05XXszfVtBLVowLTldezEzfSQiLElCQU5SZWdpc3RyeTohMCxiYW5rX2lkZW50aWZpZXI6IjAtMiIsYWNjb3VudF9pbmRlbnRpZmllcjoiMC0yMCJ9LExBOnt9LExCOntjaGFyczoyOCxiYmFuX3JlZ2V4cDoiXlswLTldezR9W0EtWjAtOV17MjB9JCIsSUJBTlJlZ2lzdHJ5OiEwLGJhbmtfaWRlbnRpZmllcjoiMC0zIixhY2NvdW50X2luZGVudGlmaWVyOiIxNC0yOCJ9LExDOntjaGFyczozMixiYmFuX3JlZ2V4cDoiXltBLVpdezR9W0EtWjAtOV17MjR9JCIsSUJBTlJlZ2lzdHJ5OiEwLGJhbmtfaWRlbnRpZmllcjoiMC0zIixhY2NvdW50X2luZGVudGlmaWVyOiI4LTMyIn0sTEk6e2NoYXJzOjIxLGJiYW5fcmVnZXhwOiJeWzAtOV17NX1bQS1aMC05XXsxMn0kIixJQkFOUmVnaXN0cnk6ITAsU0VQQTohMCxiYW5rX2lkZW50aWZpZXI6IjAtNCJ9LExLOnt9LExSOnt9LExTOnt9LExUOntjaGFyczoyMCxiYmFuX3JlZ2V4cDoiXlswLTldezE2fSQiLElCQU5SZWdpc3RyeTohMCxTRVBBOiEwLGJhbmtfaWRlbnRpZmllcjoiMC00In0sTFU6e2NoYXJzOjIwLGJiYW5fcmVnZXhwOiJeWzAtOV17M31bQS1aMC05XXsxM30kIixJQkFOUmVnaXN0cnk6ITAsU0VQQTohMCxiYW5rX2lkZW50aWZpZXI6IjAtMiJ9LExWOntjaGFyczoyMSxiYmFuX3JlZ2V4cDoiXltBLVpdezR9W0EtWjAtOV17MTN9JCIsSUJBTlJlZ2lzdHJ5OiEwLFNFUEE6ITAsYmFua19pZGVudGlmaWVyOiIwLTMiLGFjY291bnRfaW5kZW50aWZpZXI6IjAtMjEifSxMWTp7Y2hhcnM6MjUsYmJhbl9yZWdleHA6Il5bMC05XXsyMX0kIixJQkFOUmVnaXN0cnk6ITAsYnJhbmNoX2luZGVudGlmaWVyOiIzLTUiLGJhbmtfaWRlbnRpZmllcjoiMC0yIixhY2NvdW50X2luZGVudGlmaWVyOiIxMC0yNSJ9LE1BOntjaGFyczoyOCxiYmFuX3JlZ2V4cDoiXlswLTldezI0fSQifSxNQzp7Y2hhcnM6MjcsYmJhbl9yZWdleHA6Il5bMC05XXsxMH1bQS1aMC05XXsxMX1bMC05XXsyfSQiLGJiYW5fdmFsaWRhdGlvbl9mdW5jOmIwYSxJQkFOUmVnaXN0cnk6ITAsU0VQQTohMCxicmFuY2hfaW5kZW50aWZpZXI6IjUtOSIsYmFua19pZGVudGlmaWVyOiIwLTQifSxNRDp7Y2hhcnM6MjQsYmJhbl9yZWdleHA6Il5bQS1aMC05XXsyfVtBLVowLTldezE4fSQiLElCQU5SZWdpc3RyeTohMCxiYW5rX2lkZW50aWZpZXI6IjAtMSIsYWNjb3VudF9pbmRlbnRpZmllcjoiNi0yNCJ9LE1FOntjaGFyczoyMixiYmFuX3JlZ2V4cDoiXlswLTldezE4fSQiLGJiYW5fdmFsaWRhdGlvbl9mdW5jOmh2LElCQU5SZWdpc3RyeTohMCxiYW5rX2lkZW50aWZpZXI6IjAtMiIsYWNjb3VudF9pbmRlbnRpZmllcjoiNC0yMiJ9LE1GOntjaGFyczoyNyxiYmFuX3JlZ2V4cDoiXlswLTldezEwfVtBLVowLTldezExfVswLTldezJ9JCIsSUJBTlJlZ2lzdHJ5OiEwfSxNRzp7Y2hhcnM6MjcsYmJhbl9yZWdleHA6Il5bMC05XXsyM30kIn0sTUg6e30sTUs6e2NoYXJzOjE5LGJiYW5fcmVnZXhwOiJeWzAtOV17M31bQS1aMC05XXsxMH1bMC05XXsyfSQiLGJiYW5fdmFsaWRhdGlvbl9mdW5jOmh2LElCQU5SZWdpc3RyeTohMCxiYW5rX2lkZW50aWZpZXI6IjAtMiJ9LE1MOntjaGFyczoyOCxiYmFuX3JlZ2V4cDoiXltBLVowLTldezJ9WzAtOV17MjJ9JCJ9LE1NOnt9LE1OOntjaGFyczoyMCxiYmFuX3JlZ2V4cDoiXlswLTldezE2fSQiLElCQU5SZWdpc3RyeTohMCxiYW5rX2lkZW50aWZpZXI6IjAtMyIsYWNjb3VudF9pbmRlbnRpZmllcjoiOC0yMCJ9LE1POnt9LE1QOnt9LE1ROntjaGFyczoyNyxiYmFuX3JlZ2V4cDoiXlswLTldezEwfVtBLVowLTldezExfVswLTldezJ9JCIsSUJBTlJlZ2lzdHJ5OiEwfSxNUjp7Y2hhcnM6MjcsYmJhbl9yZWdleHA6Il5bMC05XXsyM30kIixJQkFOUmVnaXN0cnk6ITAsYnJhbmNoX2luZGVudGlmaWVyOiI1LTkiLGJhbmtfaWRlbnRpZmllcjoiMC00IixhY2NvdW50X2luZGVudGlmaWVyOiI4LTI2In0sTVM6e30sTVQ6e2NoYXJzOjMxLGJiYW5fcmVnZXhwOiJeW0EtWl17NH1bMC05XXs1fVtBLVowLTldezE4fSQiLElCQU5SZWdpc3RyeTohMCxTRVBBOiEwLGJyYW5jaF9pbmRlbnRpZmllcjoiNC04IixiYW5rX2lkZW50aWZpZXI6IjAtMyIsYWNjb3VudF9pbmRlbnRpZmllcjoiMTUtMzEifSxNVTp7Y2hhcnM6MzAsYmJhbl9yZWdleHA6Il5bQS1aXXs0fVswLTldezE5fVtBLVpdezN9JCIsSUJBTlJlZ2lzdHJ5OiEwLGJyYW5jaF9pbmRlbnRpZmllcjoiNi03IixiYW5rX2lkZW50aWZpZXI6IjAtNSIsYWNjb3VudF9pbmRlbnRpZmllcjoiMC0zMCJ9LE1WOnt9LE1XOnt9LE1YOnt9LE1ZOnt9LE1aOntjaGFyczoyNSxiYmFuX3JlZ2V4cDoiXlswLTldezIxfSQifSxOQTp7fSxOQzp7Y2hhcnM6MjcsYmJhbl9yZWdleHA6Il5bMC05XXsxMH1bQS1aMC05XXsxMX1bMC05XXsyfSQiLElCQU5SZWdpc3RyeTohMH0sTkU6e2NoYXJzOjI4LGJiYW5fcmVnZXhwOiJeW0EtWl17Mn1bMC05XXsyMn0kIn0sTkY6e30sTkc6e30sTkk6e2NoYXJzOjI4LGJiYW5fcmVnZXhwOiJeW0EtWl17NH1bMC05XXsyMH0kIixiYW5rX2lkZW50aWZpZXI6IjAtMyIsSUJBTlJlZ2lzdHJ5OiEwLGFjY291bnRfaW5kZW50aWZpZXI6IjgtMjgifSxOTDp7Y2hhcnM6MTgsYmJhbl9yZWdleHA6Il5bQS1aXXs0fVswLTldezEwfSQiLElCQU5SZWdpc3RyeTohMCxTRVBBOiEwLGJhbmtfaWRlbnRpZmllcjoiMC0zIixhY2NvdW50X2luZGVudGlmaWVyOiI4LTE4In0sTk86e2NoYXJzOjE1LGJiYW5fcmVnZXhwOiJeWzAtOV17MTF9JCIsYmJhbl92YWxpZGF0aW9uX2Z1bmM6JFdhLElCQU5SZWdpc3RyeTohMCxTRVBBOiEwLGJhbmtfaWRlbnRpZmllcjoiMC0zIixhY2NvdW50X2luZGVudGlmaWVyOiI0LTE1In0sTlA6e30sTlI6e30sTlU6e30sTlo6e30sT006e2NoYXJzOjIzLGJiYW5fcmVnZXhwOiJeWzAtOV17M31bQS1aMC05XXsxNn0kIixJQkFOUmVnaXN0cnk6ITAsU0VQQTohMSxiYW5rX2lkZW50aWZpZXI6IjAtMiJ9LFBBOnt9LFBFOnt9LFBGOntjaGFyczoyNyxiYmFuX3JlZ2V4cDoiXlswLTldezEwfVtBLVowLTldezExfVswLTldezJ9JCIsSUJBTlJlZ2lzdHJ5OiEwfSxQRzp7fSxQSDp7fSxQSzp7Y2hhcnM6MjQsYmJhbl9yZWdleHA6Il5bQS1aMC05XXs0fVswLTldezE2fSQiLElCQU5SZWdpc3RyeTohMCxiYW5rX2lkZW50aWZpZXI6IjAtMyJ9LFBMOntjaGFyczoyOCxiYmFuX3ZhbGlkYXRpb25fZnVuYzpMV2EsYmJhbl9yZWdleHA6Il5bMC05XXsyNH0kIixJQkFOUmVnaXN0cnk6ITAsU0VQQTohMCxicmFuY2hfaW5kZW50aWZpZXI6IjAtNyIsYWNjb3VudF9pbmRlbnRpZmllcjoiMi0yOCJ9LFBNOntjaGFyczoyNyxiYmFuX3JlZ2V4cDoiXlswLTldezEwfVtBLVowLTldezExfVswLTldezJ9JCIsSUJBTlJlZ2lzdHJ5OiEwfSxQTjp7fSxQUjp7fSxQUzp7Y2hhcnM6MjksYmJhbl9yZWdleHA6Il5bQS1aMC05XXs0fVswLTldezIxfSQiLElCQU5SZWdpc3RyeTohMCxiYW5rX2lkZW50aWZpZXI6IjAtMyIsYWNjb3VudF9pbmRlbnRpZmllcjoiMTctMjkifSxQVDp7Y2hhcnM6MjUsYmJhbl9yZWdleHA6Il5bMC05XXsyMX0kIixiYmFuX3ZhbGlkYXRpb25fZnVuYzpodixJQkFOUmVnaXN0cnk6ITAsU0VQQTohMCxiYW5rX2lkZW50aWZpZXI6IjAtMyJ9LFBXOnt9LFBZOnt9LFFBOntjaGFyczoyOSxiYmFuX3JlZ2V4cDoiXltBLVpdezR9W0EtWjAtOV17MjF9JCIsSUJBTlJlZ2lzdHJ5OiEwLGJhbmtfaWRlbnRpZmllcjoiMC0zIixhY2NvdW50X2luZGVudGlmaWVyOiI4LTI5In0sUkU6e2NoYXJzOjI3LGJiYW5fcmVnZXhwOiJeWzAtOV17MTB9W0EtWjAtOV17MTF9WzAtOV17Mn0kIixJQkFOUmVnaXN0cnk6ITB9LFJPOntjaGFyczoyNCxiYmFuX3JlZ2V4cDoiXltBLVpdezR9W0EtWjAtOV17MTZ9JCIsSUJBTlJlZ2lzdHJ5OiEwLFNFUEE6ITAsYmFua19pZGVudGlmaWVyOiIwLTMiLGFjY291bnRfaW5kZW50aWZpZXI6IjAtMjQifSxSUzp7Y2hhcnM6MjIsYmJhbl9yZWdleHA6Il5bMC05XXsxOH0kIixiYmFuX3ZhbGlkYXRpb25fZnVuYzpodixJQkFOUmVnaXN0cnk6ITAsYmFua19pZGVudGlmaWVyOiIwLTIifSxSVTp7Y2hhcnM6MzMsYmJhbl9yZWdleHA6Il5bMC05XXsxNH1bQS1aMC05XXsxNX0kIixJQkFOUmVnaXN0cnk6ITAsYnJhbmNoX2luZGVudGlmaWVyOiI5LTEzIixiYW5rX2lkZW50aWZpZXI6IjAtOCIsYWNjb3VudF9pbmRlbnRpZmllcjoiMTMtMzMifSxSVzp7fSxTQTp7Y2hhcnM6MjQsYmJhbl9yZWdleHA6Il5bMC05XXsyfVtBLVowLTldezE4fSQiLElCQU5SZWdpc3RyeTohMCxiYW5rX2lkZW50aWZpZXI6IjAtMSIsYWNjb3VudF9pbmRlbnRpZmllcjoiMTItMjQifSxTQjp7fSxTQzp7Y2hhcnM6MzEsYmJhbl9yZWdleHA6Il5bQS1aXXs0fVswLTldezIwfVtBLVpdezN9JCIsSUJBTlJlZ2lzdHJ5OiEwLGJyYW5jaF9pbmRlbnRpZmllcjoiNi03IixiYW5rX2lkZW50aWZpZXI6IjAtNSIsYWNjb3VudF9pbmRlbnRpZmllcjoiMTItMjgifSxTRDp7Y2hhcnM6MTgsYmJhbl9yZWdleHA6Il5bMC05XXsxNH0kIixJQkFOUmVnaXN0cnk6ITAsYmFua19pZGVudGlmaWVyOiIwLTEiLGFjY291bnRfaW5kZW50aWZpZXI6IjYtMTgifSxTRTp7Y2hhcnM6MjQsYmJhbl9yZWdleHA6Il5bMC05XXsyMH0kIixJQkFOUmVnaXN0cnk6ITAsU0VQQTohMCxiYW5rX2lkZW50aWZpZXI6IjAtMiJ9LFNHOnt9LFNIOnt9LFNJOntjaGFyczoxOSxiYmFuX3JlZ2V4cDoiXlswLTldezE1fSQiLGJiYW5fdmFsaWRhdGlvbl9mdW5jOmh2LElCQU5SZWdpc3RyeTohMCxTRVBBOiEwLGJyYW5jaF9pbmRlbnRpZmllcjoiMi00IixiYW5rX2lkZW50aWZpZXI6IjAtMSIsYWNjb3VudF9pbmRlbnRpZmllcjoiOS0xNiJ9LFNKOnt9LFNLOntjaGFyczoyNCxiYmFuX3JlZ2V4cDoiXlswLTldezIwfSQiLGJiYW5fdmFsaWRhdGlvbl9mdW5jOmcwYSxJQkFOUmVnaXN0cnk6ITAsU0VQQTohMH0sU0w6e30sU006e2NoYXJzOjI3LGJiYW5fcmVnZXhwOiJeW0EtWl17MX1bMC05XXsxMH1bQS1aMC05XXsxMn0kIixJQkFOUmVnaXN0cnk6ITAsU0VQQTohMCxicmFuY2hfaW5kZW50aWZpZXI6IjYtMTAifSxTTjp7Y2hhcnM6MjgsYmJhbl9yZWdleHA6Il5bQS1aXXsyfVswLTldezIyfSQifSxTTzp7Y2hhcnM6MjMsYmJhbl9yZWdleHA6Il5bMC05XXsxOX0kIixJQkFOUmVnaXN0cnk6ITAsYnJhbmNoX2luZGVudGlmaWVyOiI0LTYiLGFjY291bnRfaW5kZW50aWZpZXI6IjExLTIzIn0sU1I6e30sU1M6e30sU1Q6e2NoYXJzOjI1LGJiYW5fcmVnZXhwOiJeWzAtOV17MjF9JCIsSUJBTlJlZ2lzdHJ5OiEwLGJyYW5jaF9pbmRlbnRpZmllcjoiNC03In0sU1Y6e2NoYXJzOjI4LGJiYW5fcmVnZXhwOiJeW0EtWl17NH1bMC05XXsyMH0kIixJQkFOUmVnaXN0cnk6ITAsYWNjb3VudF9pbmRlbnRpZmllcjoiOC0yOCJ9LFNYOnt9LFNZOnt9LFNaOnt9LFRDOnt9LFREOntjaGFyczoyNyxiYmFuX3JlZ2V4cDoiXlswLTldezIzfSQifSxURjp7Y2hhcnM6MjcsYmJhbl9yZWdleHA6Il5bMC05XXsxMH1bQS1aMC05XXsxMX1bMC05XXsyfSQiLElCQU5SZWdpc3RyeTohMH0sVEc6e2NoYXJzOjI4LGJiYW5fcmVnZXhwOiJeW0EtWl17Mn1bMC05XXsyMn0kIn0sVEg6e30sVEo6e30sVEs6e30sVEw6e2NoYXJzOjIzLGJiYW5fcmVnZXhwOiJeWzAtOV17MTl9JCIsSUJBTlJlZ2lzdHJ5OiEwLGFjY291bnRfaW5kZW50aWZpZXI6IjQtMjMifSxUTTp7fSxUTjp7Y2hhcnM6MjQsYmJhbl9yZWdleHA6Il5bMC05XXsyMH0kIixJQkFOUmVnaXN0cnk6ITAsYnJhbmNoX2luZGVudGlmaWVyOiIyLTQiLGFjY291bnRfaW5kZW50aWZpZXI6IjQtMjQifSxUTzp7fSxUUjp7Y2hhcnM6MjYsYmJhbl9yZWdleHA6Il5bMC05XXs1fVtBLVowLTldezE3fSQiLElCQU5SZWdpc3RyeTohMH0sVFQ6e30sVFY6e30sVFc6e30sVFo6e30sVUE6e2NoYXJzOjI5LGJiYW5fcmVnZXhwOiJeWzAtOV17Nn1bQS1aMC05XXsxOX0kIixJQkFOUmVnaXN0cnk6ITAsYWNjb3VudF9pbmRlbnRpZmllcjoiMTUtMjkifSxVRzp7fSxVTTp7fSxVUzp7fSxVWTp7fSxVWjp7fSxWQTp7Y2hhcnM6MjIsYmJhbl9yZWdleHA6Il5bMC05XXsxOH0iLElCQU5SZWdpc3RyeTohMCxTRVBBOiEwLGFjY291bnRfaW5kZW50aWZpZXI6IjctMjIifSxWQzp7fSxWRTp7fSxWRzp7Y2hhcnM6MjQsYmJhbl9yZWdleHA6Il5bQS1aMC05XXs0fVswLTldezE2fSQiLElCQU5SZWdpc3RyeTohMCxhY2NvdW50X2luZGVudGlmaWVyOiI4LTI0In0sVkk6e30sVk46e30sVlU6e30sV0Y6e2NoYXJzOjI3LGJiYW5fcmVnZXhwOiJeWzAtOV17MTB9W0EtWjAtOV17MTF9WzAtOV17Mn0kIixJQkFOUmVnaXN0cnk6ITB9LFdTOnt9LFhLOntjaGFyczoyMCxiYmFuX3JlZ2V4cDoiXlswLTldezE2fSQiLElCQU5SZWdpc3RyeTohMCxicmFuY2hfaW5kZW50aWZpZXI6IjItMyIsYWNjb3VudF9pbmRlbnRpZmllcjoiNC0yMCJ9LFlFOntjaGFyczozMCxiYmFuX3JlZ2V4cDoiW0EtWl17NH1bMC05XXs0fVswLTlBLVpdezE4fSIsSUJBTlJlZ2lzdHJ5OiEwLGJhbmtfaWRlbnRpZmllcjoiMC0zIixicmFuY2hfaW5kZW50aWZpZXI6IjQtNyJ9LFlUOntjaGFyczoyNyxiYmFuX3JlZ2V4cDoiXlswLTldezEwfVtBLVowLTldezExfVswLTldezJ9JCIsSUJBTlJlZ2lzdHJ5OiEwfSxaQTp7fSxaTTp7fSxaVzp7fX19KTt2YXIgeDBhLHkwYT1nKCgpPT57cGUoKTt4MGE9aSgoKT0+d2AKICA8ZGVlcy1kZW1vd3JhcHBlcj4KICAgIDxzdHlsZT4KICAgICAgJHtKYAogICAgICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgIGdhcDogMjRweDsKICAgICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgICBtYXgtd2lkdGg6IDEyMDBweDsKICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAucGF5bWVudC1ncm91cCB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgIGdhcDogMTZweDsKICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICB9CiAgICAgIGB9CiAgICA8L3N0eWxlPgogICAgCiAgICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJCYXNpYyBJQkFOIElucHV0In0gLnN1YnRpdGxlPSR7IkludGVybmF0aW9uYWwgQmFuayBBY2NvdW50IE51bWJlciB3aXRoIGF1dG9tYXRpYyBmb3JtYXR0aW5nIn0+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkZWVzLWlucHV0LWliYW4KICAgICAgICAgICAgLmxhYmVsPSR7IkJhbmsgQWNjb3VudCBJQkFOIn0KICAgICAgICAgICAgLmluZm9UZXh0PSR7IkVudGVyIHlvdXIgSW50ZXJuYXRpb25hbCBCYW5rIEFjY291bnQgTnVtYmVyIn0KICAgICAgICAgICAgLmRlc2NyaXB0aW9uPSR7IllvdXIgSUJBTiBjYW4gYmUgZm91bmQgb24geW91ciBiYW5rIHN0YXRlbWVudCJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LWliYW4+CgogICAgICAgICAgPGRlZXMtaW5wdXQtaWJhbgogICAgICAgICAgICAubGFiZWw9JHsiVmVyaWZpZWQgSUJBTiJ9CiAgICAgICAgICAgIC5pbmZvVGV4dD0keyJUaGlzIElCQU4gaGFzIGJlZW4gdmVyaWZpZWQifQogICAgICAgICAgICAudmFsdWU9JHsiREU4OTM3MDQwMDQ0MDUzMjAxMzAwMCJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LWliYW4+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJQYXltZW50IEluZm9ybWF0aW9uIn0gLnN1YnRpdGxlPSR7IklCQU4gaW5wdXQgd2l0aCBob3Jpem9udGFsIGxheW91dCBmb3IgcGF5bWVudCBmb3JtcyJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwYXltZW50LWdyb3VwIj4KICAgICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dAogICAgICAgICAgICAgIC5sYWJlbD0keyJBY2NvdW50IEhvbGRlciJ9CiAgICAgICAgICAgICAgLmxheW91dE1vZGU9JHsiaG9yaXpvbnRhbCJ9CiAgICAgICAgICAgICAgLnZhbHVlPSR7IkpvaG4gRG9lIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgoKICAgICAgICAgICAgPGRlZXMtaW5wdXQtaWJhbgogICAgICAgICAgICAgIC5sYWJlbD0keyJJQkFOIn0KICAgICAgICAgICAgICAubGF5b3V0TW9kZT0keyJob3Jpem9udGFsIn0KICAgICAgICAgICAgICAudmFsdWU9JHsiR0I4MldFU1QxMjM0NTY5ODc2NTQzMiJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtaWJhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICAgIAogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiVmFsaWRhdGlvbiAmIFN0YXRlcyJ9IC5zdWJ0aXRsZT0keyJSZXF1aXJlZCBmaWVsZHMgYW5kIGRpc2FibGVkIHN0YXRlcyJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1pYmFuCiAgICAgICAgICAgIC5sYWJlbD0keyJQYXltZW50IEFjY291bnQifQogICAgICAgICAgICAuaW5mb1RleHQ9JHsiUmVxdWlyZWQgZm9yIHByb2Nlc3NpbmcgcGF5bWVudHMifQogICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0KICAgICAgICAgID48L2RlZXMtaW5wdXQtaWJhbj4KCiAgICAgICAgICA8ZGVlcy1pbnB1dC1pYmFuCiAgICAgICAgICAgIC5sYWJlbD0keyJMb2NrZWQgSUJBTiJ9CiAgICAgICAgICAgIC5pbmZvVGV4dD0keyJUaGlzIElCQU4gY2Fubm90IGJlIGNoYW5nZWQifQogICAgICAgICAgICAudmFsdWU9JHsiRlIxNDIwMDQxMDEwMDUwNTAwMDEzTTAyNjA2In0KICAgICAgICAgICAgLmRpc2FibGVkPSR7ITB9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LWliYW4+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJCYW5rIFRyYW5zZmVyIEZvcm0ifSAuc3VidGl0bGU9JHsiQ29tcGxldGUgZm9ybSBleGFtcGxlIHdpdGggSUJBTiB2YWxpZGF0aW9uIn0+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQgLmxhYmVsPSR7IlJlY2lwaWVudCBOYW1lIn0gLnJlcXVpcmVkPSR7ITB9PjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgPGRlZXMtaW5wdXQtaWJhbiAubGFiZWw9JHsiUmVjaXBpZW50IElCQU4ifSAucmVxdWlyZWQ9JHshMH0+PC9kZWVzLWlucHV0LWliYW4+CiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0IC5sYWJlbD0keyJUcmFuc2ZlciBSZWZlcmVuY2UifSAuaW5mb1RleHQ9JHsiT3B0aW9uYWwgcmVmZXJlbmNlIGZvciB0aGUgdHJhbnNmZXIifT48L2RlZXMtaW5wdXQtdGV4dD4KICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQgLmxhYmVsPSR7IkFtb3VudCJ9IC5pbnB1dFR5cGU9JHsibnVtYmVyIn0gLnJlcXVpcmVkPSR7ITB9PjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2Rpdj4KICA8L2RlZXMtZGVtb3dyYXBwZXI+CmAsImRlbW9GdW5jIil9KTt2YXIgX25lLFI4LE1uZSxZZXQ9ZygoKT0+e3BlKCk7a3QoKTt6aSgpO0tldCgpO3kwYSgpO3B0KCk7X25lPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxSOD1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sTW5lPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1pbnB1dC1pYmFuIildLGUsdD1bXSxhLHI9T3QsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W107dmFyIHg9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNJbnB1dEliYW4iKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgbT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtZKCldLHA9W1koKV0sYz1bTCh7dHlwZTpTdHJpbmd9KV0sX25lKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZW50ZXJlZFN0cmluZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShmPT4iZW50ZXJlZFN0cmluZyJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLmVudGVyZWRTdHJpbmcsImdldCIpLHNldDppKChmLHkpPT57Zi5lbnRlcmVkU3RyaW5nPXl9LCJzZXQiKX0sbWV0YWRhdGE6bX0sbyxsKSxfbmUodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJlbnRlcmVkSWJhbklzVmFsaWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+ImVudGVyZWRJYmFuSXNWYWxpZCJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLmVudGVyZWRJYmFuSXNWYWxpZCwiZ2V0Iiksc2V0OmkoKGYseSk9PntmLmVudGVyZWRJYmFuSXNWYWxpZD15fSwic2V0Iil9LG1ldGFkYXRhOm19LGQsdSksX25lKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidmFsdWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+InZhbHVlImluIGYsImhhcyIpLGdldDppKGY9PmYudmFsdWUsImdldCIpLHNldDppKChmLHkpPT57Zi52YWx1ZT15fSwic2V0Iil9LG1ldGFkYXRhOm19LGIsdiksX25lKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOm19LG51bGwsdCkseD1hPWUudmFsdWUsbSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTptfSl9c3RhdGljIGRlbW89eDBhO3N0YXRpYyBkZW1vR3JvdXBzPVsiSW5wdXQiXTsjZT1SOCh0aGlzLG8sIiIpO2dldCBlbnRlcmVkU3RyaW5nKCl7cmV0dXJuIHRoaXMuI2V9c2V0IGVudGVyZWRTdHJpbmcobSl7dGhpcy4jZT1tfSN0PShSOCh0aGlzLGwpLFI4KHRoaXMsZCwhMSkpO2dldCBlbnRlcmVkSWJhbklzVmFsaWQoKXtyZXR1cm4gdGhpcy4jdH1zZXQgZW50ZXJlZEliYW5Jc1ZhbGlkKG0pe3RoaXMuI3Q9bX0jYT0oUjgodGhpcyx1KSxSOCh0aGlzLGIsIiIpKTtnZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy4jYX1zZXQgdmFsdWUobSl7dGhpcy4jYT1tfXN0YXRpYyBzdHlsZXM9W0hlLC4uLk90LmJhc2VTdHlsZXMsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICAgIC8qIElCQU4gaW5wdXQgc3BlY2lmaWMgc3R5bGVzIGNhbiBnbyBoZXJlICovCiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iaW5wdXQtd3JhcHBlciI+CiAgICAgICAgPGRlZXMtbGFiZWwgLmxhYmVsPSR7dGhpcy5sYWJlbHx8IklCQU4ifSAuaW5mb1RleHQ9JHt0aGlzLmluZm9UZXh0fT48L2RlZXMtbGFiZWw+CiAgICAgICAgPGRlZXMtaW5wdXQtdGV4dAogICAgICAgICAgLnZhbHVlPSR7dGhpcy52YWx1ZX0KICAgICAgICAgIC5kaXNhYmxlZD0ke3RoaXMuZGlzYWJsZWR9CiAgICAgICAgICAucmVxdWlyZWQ9JHt0aGlzLnJlcXVpcmVkfQogICAgICAgICAgLnBsYWNlaG9sZGVyPSR7IkRFODkgMzcwNCAwMDQ0IDA1MzIgMDEzMCAwMCJ9CiAgICAgICAgICAudmFsaWRhdGlvbkZ1bmN0aW9uPSR7bT0+e2xldCBmPW0ucmVwbGFjZSgvIC9nLCIiKTtyZXR1cm4gZi5sZW5ndGg9PT0wP3t2YWxpZDohMCxtZXNzYWdlOiIifTpOOChmKT97dmFsaWQ6ITAsbWVzc2FnZToiSUJBTiBpcyB2YWxpZCJ9Ont2YWxpZDohMSxtZXNzYWdlOiJQbGVhc2UgZW50ZXIgYSB2YWxpZCBJQkFOIn19fQogICAgICAgICAgQGlucHV0PSR7bT0+e3RoaXMudmFsaWRhdGVJYmFuKG0pfX0KICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgJHt0aGlzLnJlbmRlckRlc2NyaXB0aW9uKCl9CiAgICAgIDwvZGl2PgogICAgYH1maXJzdFVwZGF0ZWQobSl7c3VwZXIuZmlyc3RVcGRhdGVkKG0pO2xldCBmPXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCJkZWVzLWlucHV0LXRleHQiKTtmJiZmLmNoYW5nZVN1YmplY3QmJmYuY2hhbmdlU3ViamVjdC5zdWJzY3JpYmUoKCk9Pnt0aGlzLmNoYW5nZVN1YmplY3QubmV4dCh0aGlzKX0pfWFzeW5jIHZhbGlkYXRlSWJhbihtKXtsZXQgZj1tLnRhcmdldCx5PWY/LnZhbHVlO3k9eXx8IiIsdGhpcy5lbnRlcmVkU3RyaW5nIT09eSYmKHRoaXMuZW50ZXJlZFN0cmluZz1mdih5KXx8IiIsZiYmKGYudmFsdWU9dGhpcy5lbnRlcmVkU3RyaW5nLHRoaXMudmFsdWU9dGhpcy5lbnRlcmVkU3RyaW5nLHRoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMpKSksdGhpcy5lbnRlcmVkSWJhbklzVmFsaWQ9TjgodGhpcy5lbnRlcmVkU3RyaW5nLnJlcGxhY2UoLyAvZywiIikpfWdldFZhbHVlKCl7cmV0dXJuIHRoaXMudmFsdWV9c2V0VmFsdWUobSl7dGhpcy52YWx1ZT1tLHRoaXMuZW50ZXJlZFN0cmluZz1mdihtKXx8IiJ9Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLFI4KHRoaXMsdil9c3RhdGlje1I4KGEsdCl9fTtyZXR1cm4geD1hfSkoKX0pO3ZhciB3MGEsazBhPWcoKCk9PntwZSgpO3cwYT1pKCgpPT53YAogIDxkZWVzLWRlbW93cmFwcGVyPgogICAgPHN0eWxlPgogICAgICAke0pgCiAgICAgICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgZ2FwOiAzMnB4OwogICAgICAgICAgcGFkZGluZzogNDhweDsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjhmOWZhIiwiIzBhMGEwYSIpfTsKICAgICAgICAgIG1pbi1oZWlnaHQ6IDEwMHZoOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuc2VjdGlvbiB7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMxODE4MWIiKX07CiAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMyNzI3MmEiKX07CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgICAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnNlY3Rpb24tdGl0bGUgewogICAgICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5zZWN0aW9uLWRlc2NyaXB0aW9uIHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuc2V0dGluZ3MtZ3JpZCB7CiAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOwogICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsKICAgICAgICAgIC5zZXR0aW5ncy1ncmlkIHsKICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBgfQogICAgPC9zdHlsZT4KICAgIAogICAgPGRpdiBjbGFzcz0iZGVtby1jb250YWluZXIiPgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5NdWx0aS1PcHRpb24gVG9nZ2xlPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1kZXNjcmlwdGlvbiI+U2VsZWN0IGZyb20gbXVsdGlwbGUgb3B0aW9ucyB3aXRoIGEgc21vb3RoIHNsaWRpbmcgaW5kaWNhdG9yIGFuaW1hdGlvbi48L2Rpdj4KCiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkZWVzLWlucHV0LW11bHRpdG9nZ2xlCiAgICAgICAgICAgIC5sYWJlbD0keyJEaXNwbGF5IE1vZGUifQogICAgICAgICAgICAuaW5mb1RleHQ9JHsiQ2hvb3NlIGhvdyBjb250ZW50IGlzIGRpc3BsYXllZCJ9CiAgICAgICAgICAgIC5kZXNjcmlwdGlvbj0keyJUaGlzIHNldHRpbmcgYWZmZWN0cyBob3cgaXRlbXMgYXBwZWFyIG9uIHlvdXIgZGFzaGJvYXJkIn0KICAgICAgICAgICAgLm9wdGlvbnM9JHtbIkxpc3QgVmlldyIsIkdyaWQgVmlldyIsIkNvbXBhY3QiXX0KICAgICAgICAgICAgLnNlbGVjdGVkT3B0aW9uPSR7IkdyaWQgVmlldyJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LW11bHRpdG9nZ2xlPgoKICAgICAgICAgIDxkZWVzLWlucHV0LW11bHRpdG9nZ2xlCiAgICAgICAgICAgIC5sYWJlbD0keyJULVNoaXJ0IFNpemUifQogICAgICAgICAgICAuaW5mb1RleHQ9JHsiU2VsZWN0IHlvdXIgcHJlZmVycmVkIHNpemUifQogICAgICAgICAgICAub3B0aW9ucz0ke1siWFMiLCJTIiwiTSIsIkwiLCJYTCIsIlhYTCJdfQogICAgICAgICAgICAuc2VsZWN0ZWRPcHRpb249JHsiTSJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LW11bHRpdG9nZ2xlPgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2Rpdj4KICAgICAgCiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPkJvb2xlYW4gVG9nZ2xlPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1kZXNjcmlwdGlvbiI+U2ltcGxlIG9uL29mZiBzd2l0Y2hlcyB3aXRoIGN1c3RvbWl6YWJsZSBsYWJlbHMgZm9yIGNsZWFyZXIgY29udGV4dC48L2Rpdj4KCiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkZWVzLWlucHV0LW11bHRpdG9nZ2xlCiAgICAgICAgICAgIC5sYWJlbD0keyJOb3RpZmljYXRpb25zIn0KICAgICAgICAgICAgLmluZm9UZXh0PSR7IkVuYWJsZSBvciBkaXNhYmxlIHB1c2ggbm90aWZpY2F0aW9ucyJ9CiAgICAgICAgICAgIC50eXBlPSR7ImJvb2xlYW4ifQogICAgICAgICAgICAuc2VsZWN0ZWRPcHRpb249JHsidHJ1ZSJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LW11bHRpdG9nZ2xlPgoKICAgICAgICAgIDxkZWVzLWlucHV0LW11bHRpdG9nZ2xlCiAgICAgICAgICAgIC5sYWJlbD0keyJUaGVtZSBNb2RlIn0KICAgICAgICAgICAgLmluZm9UZXh0PSR7IlN3aXRjaCBiZXR3ZWVuIGxpZ2h0IGFuZCBkYXJrIHRoZW1lIn0KICAgICAgICAgICAgLnR5cGU9JHsiYm9vbGVhbiJ9CiAgICAgICAgICAgIC5ib29sZWFuVHJ1ZU5hbWU9JHsiRGFyayJ9CiAgICAgICAgICAgIC5ib29sZWFuRmFsc2VOYW1lPSR7IkxpZ2h0In0KICAgICAgICAgICAgLnNlbGVjdGVkT3B0aW9uPSR7IkRhcmsifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1tdWx0aXRvZ2dsZT4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kaXY+CiAgICAgIAogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5TZXR0aW5ncyBHcmlkPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1kZXNjcmlwdGlvbiI+Q29uZmlndXJhdGlvbiBvcHRpb25zIGFycmFuZ2VkIGluIGEgcmVzcG9uc2l2ZSBncmlkIGxheW91dC48L2Rpdj4KCiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkaXYgY2xhc3M9InNldHRpbmdzLWdyaWQiPgogICAgICAgICAgICA8ZGVlcy1pbnB1dC1tdWx0aXRvZ2dsZQogICAgICAgICAgICAgIC5sYWJlbD0keyJBdXRvLVNhdmUifQogICAgICAgICAgICAgIC50eXBlPSR7ImJvb2xlYW4ifQogICAgICAgICAgICAgIC5ib29sZWFuVHJ1ZU5hbWU9JHsiRW5hYmxlZCJ9CiAgICAgICAgICAgICAgLmJvb2xlYW5GYWxzZU5hbWU9JHsiRGlzYWJsZWQifQogICAgICAgICAgICAgIC5zZWxlY3RlZE9wdGlvbj0keyJFbmFibGVkIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1tdWx0aXRvZ2dsZT4KCiAgICAgICAgICAgIDxkZWVzLWlucHV0LW11bHRpdG9nZ2xlCiAgICAgICAgICAgICAgLmxhYmVsPSR7Ikxhbmd1YWdlIn0KICAgICAgICAgICAgICAub3B0aW9ucz0ke1siRW5nbGlzaCIsIkdlcm1hbiIsIkZyZW5jaCIsIlNwYW5pc2giXX0KICAgICAgICAgICAgICAuc2VsZWN0ZWRPcHRpb249JHsiRW5nbGlzaCJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtbXVsdGl0b2dnbGU+CgogICAgICAgICAgICA8ZGVlcy1pbnB1dC1tdWx0aXRvZ2dsZQogICAgICAgICAgICAgIC5sYWJlbD0keyJRdWFsaXR5In0KICAgICAgICAgICAgICAub3B0aW9ucz0ke1siTG93IiwiTWVkaXVtIiwiSGlnaCIsIlVsdHJhIl19CiAgICAgICAgICAgICAgLnNlbGVjdGVkT3B0aW9uPSR7IkhpZ2gifQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LW11bHRpdG9nZ2xlPgoKICAgICAgICAgICAgPGRlZXMtaW5wdXQtbXVsdGl0b2dnbGUKICAgICAgICAgICAgICAubGFiZWw9JHsiUHJpdmFjeSJ9CiAgICAgICAgICAgICAgLnR5cGU9JHsiYm9vbGVhbiJ9CiAgICAgICAgICAgICAgLmJvb2xlYW5UcnVlTmFtZT0keyJQcml2YXRlIn0KICAgICAgICAgICAgICAuYm9vbGVhbkZhbHNlTmFtZT0keyJQdWJsaWMifQogICAgICAgICAgICAgIC5zZWxlY3RlZE9wdGlvbj0keyJQcml2YXRlIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1tdWx0aXRvZ2dsZT4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2Rpdj4KICAgICAgCiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPlN0YXRlcyAmIEZvcm0gSW50ZWdyYXRpb248L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj5FeGFtcGxlcyBvZiBkaXNhYmxlZCBzdGF0ZXMgYW5kIGludGVncmF0aW9uIHdpdGhpbiBmb3Jtcy48L2Rpdj4KICAgICAgICAKICAgICAgICA8ZGVlcy1pbnB1dC1tdWx0aXRvZ2dsZQogICAgICAgICAgLmxhYmVsPSR7IkFjY291bnQgVHlwZSJ9CiAgICAgICAgICAuaW5mb1RleHQ9JHsiVGhpcyBzZXR0aW5nIGlzIGxvY2tlZCJ9CiAgICAgICAgICAub3B0aW9ucz0ke1siRnJlZSIsIlBybyIsIkVudGVycHJpc2UiXX0KICAgICAgICAgIC5zZWxlY3RlZE9wdGlvbj0keyJFbnRlcnByaXNlIn0KICAgICAgICAgIC5kaXNhYmxlZD0keyEwfQogICAgICAgID48L2RlZXMtaW5wdXQtbXVsdGl0b2dnbGU+CiAgICAgICAgCiAgICAgICAgPGJyPjxicj4KICAgICAgICAKICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dCAubGFiZWw9JHsiUHJvamVjdCBOYW1lIn0gLnJlcXVpcmVkPSR7ITB9PjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgPGRlZXMtaW5wdXQtbXVsdGl0b2dnbGUKICAgICAgICAgICAgLmxhYmVsPSR7IlZpc2liaWxpdHkifQogICAgICAgICAgICAudHlwZT0keyJib29sZWFuIn0KICAgICAgICAgICAgLmJvb2xlYW5UcnVlTmFtZT0keyJQdWJsaWMifQogICAgICAgICAgICAuYm9vbGVhbkZhbHNlTmFtZT0keyJQcml2YXRlIn0KICAgICAgICAgICAgLnNlbGVjdGVkT3B0aW9uPSR7IlByaXZhdGUifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1tdWx0aXRvZ2dsZT4KICAgICAgICAgIDxkZWVzLWlucHV0LW11bHRpdG9nZ2xlCiAgICAgICAgICAgIC5sYWJlbD0keyJMaWNlbnNlIn0KICAgICAgICAgICAgLm9wdGlvbnM9JHtbIk1JVCIsIkFwYWNoZSAyLjAiLCJHUEwgdjMiLCJQcm9wcmlldGFyeSJdfQogICAgICAgICAgICAuc2VsZWN0ZWRPcHRpb249JHsiTUlUIn0KICAgICAgICAgID48L2RlZXMtaW5wdXQtbXVsdGl0b2dnbGU+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kZWVzLWRlbW93cmFwcGVyPgpgLCJkZW1vRnVuYyIpfSk7dmFyIE84LEtsLHpuZSxaZXQ9ZygoKT0+e3BlKCk7emkoKTtHMSgpO2swYSgpO3B0KCk7Tzg9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LEtsPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSx6bmU9KCgpPT57bGV0IHM9W25lKCJkZWVzLWlucHV0LW11bHRpdG9nZ2xlIildLGUsdD1bXSxhLHI9T3QsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W107dmFyIE89Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNJbnB1dE11bHRpdG9nZ2xlIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0ICQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCgpXSxwPVtMKCldLGM9W0woKV0seD1bTCh7dHlwZTpBcnJheX0pXSx5PVtMKCldLE49W0woe3R5cGU6Qm9vbGVhbn0pXSxPOCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InR5cGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+InR5cGUiaW4gRSwiaGFzIiksZ2V0OmkoRT0+RS50eXBlLCJnZXQiKSxzZXQ6aSgoRSxIKT0+e0UudHlwZT1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LG8sbCksTzgodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJib29sZWFuVHJ1ZU5hbWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+ImJvb2xlYW5UcnVlTmFtZSJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLmJvb2xlYW5UcnVlTmFtZSwiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLmJvb2xlYW5UcnVlTmFtZT1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LGQsdSksTzgodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJib29sZWFuRmFsc2VOYW1lIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEU9PiJib29sZWFuRmFsc2VOYW1lImluIEUsImhhcyIpLGdldDppKEU9PkUuYm9vbGVhbkZhbHNlTmFtZSwiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLmJvb2xlYW5GYWxzZU5hbWU9SH0sInNldCIpfSxtZXRhZGF0YTokfSxiLHYpLE84KHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToib3B0aW9ucyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShFPT4ib3B0aW9ucyJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLm9wdGlvbnMsImdldCIpLHNldDppKChFLEgpPT57RS5vcHRpb25zPUh9LCJzZXQiKX0sbWV0YWRhdGE6JH0sbSxmKSxPOCh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlbGVjdGVkT3B0aW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEU9PiJzZWxlY3RlZE9wdGlvbiJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLnNlbGVjdGVkT3B0aW9uLCJnZXQiKSxzZXQ6aSgoRSxIKT0+e0Uuc2VsZWN0ZWRPcHRpb249SH0sInNldCIpfSxtZXRhZGF0YTokfSxNLHopLE84KHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYm9vbFZhbHVlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEU9PiJib29sVmFsdWUiaW4gRSwiaGFzIiksZ2V0OmkoRT0+RS5ib29sVmFsdWUsImdldCIpLHNldDppKChFLEgpPT57RS5ib29sVmFsdWU9SH0sInNldCIpfSxtZXRhZGF0YTokfSxDLF8pLE84KG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOiR9LG51bGwsdCksTz1hPWUudmFsdWUsJCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTokfSl9c3RhdGljIGRlbW89dzBhO3N0YXRpYyBkZW1vR3JvdXBzPVsiSW5wdXQiXTsjZT1LbCh0aGlzLG8sIm11bHRpIik7Z2V0IHR5cGUoKXtyZXR1cm4gdGhpcy4jZX1zZXQgdHlwZSgkKXt0aGlzLiNlPSR9I3Q9KEtsKHRoaXMsbCksS2wodGhpcyxkLCJ0cnVlIikpO2dldCBib29sZWFuVHJ1ZU5hbWUoKXtyZXR1cm4gdGhpcy4jdH1zZXQgYm9vbGVhblRydWVOYW1lKCQpe3RoaXMuI3Q9JH0jYT0oS2wodGhpcyx1KSxLbCh0aGlzLGIsImZhbHNlIikpO2dldCBib29sZWFuRmFsc2VOYW1lKCl7cmV0dXJuIHRoaXMuI2F9c2V0IGJvb2xlYW5GYWxzZU5hbWUoJCl7dGhpcy4jYT0kfSNzPShLbCh0aGlzLHYpLEtsKHRoaXMsbSxbXSkpO2dldCBvcHRpb25zKCl7cmV0dXJuIHRoaXMuI3N9c2V0IG9wdGlvbnMoJCl7dGhpcy4jcz0kfSNpPShLbCh0aGlzLGYpLEtsKHRoaXMsTSwiIikpO2dldCBzZWxlY3RlZE9wdGlvbigpe3JldHVybiB0aGlzLiNpfXNldCBzZWxlY3RlZE9wdGlvbigkKXt0aGlzLiNpPSR9I3I9KEtsKHRoaXMseiksS2wodGhpcyxDLCExKSk7Z2V0IGJvb2xWYWx1ZSgpe3JldHVybiB0aGlzLiNyfXNldCBib29sVmFsdWUoJCl7dGhpcy4jcj0kfWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLnR5cGU9PT0iYm9vbGVhbiI/dGhpcy5zZWxlY3RlZE9wdGlvbj09PXRoaXMuYm9vbGVhblRydWVOYW1lOnRoaXMuc2VsZWN0ZWRPcHRpb259c2V0IHZhbHVlKCQpe3RoaXMudHlwZT09PSJib29sZWFuIiYmdHlwZW9mICQ9PSJib29sZWFuIj90aGlzLnNlbGVjdGVkT3B0aW9uPSQ/dGhpcy5ib29sZWFuVHJ1ZU5hbWU6dGhpcy5ib29sZWFuRmFsc2VOYW1lOnRoaXMuc2VsZWN0ZWRPcHRpb249JCx0aGlzLnJlcXVlc3RVcGRhdGUoKSx0aGlzLmhhc1VwZGF0ZWQmJnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3RoaXMuc2V0SW5kaWNhdG9yKCl9KX1zdGF0aWMgc3R5bGVzPVtIZSwuLi5PdC5iYXNlU3R5bGVzLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICAvKiBUT0RPOiBNaWdyYXRlIGhhcmRjb2RlZCB2YWx1ZXMgdG8gLS1kZWVzLSogQ1NTIHZhcmlhYmxlcyAqLwogICAgICA6aG9zdCB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgfQoKICAgICAgLnNlbGVjdGlvbnMgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzE4MTgxYiIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMyNzI3MmEiKX07CiAgICAgICAgcGFkZGluZzogNHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBib3gtc2hhZG93OiAwIDFweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMDUpOwogICAgICB9CgogICAgICAub3B0aW9uIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgcGFkZGluZzogOHB4IDIwcHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMnMgZWFzZTsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjNzE3MTdhIil9OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgICAgIHotaW5kZXg6IDI7CiAgICAgIH0KCiAgICAgIC5vcHRpb246aG92ZXIgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNlNGU0ZTciKX07CiAgICAgIH0KCiAgICAgIC5vcHRpb24uc2VsZWN0ZWQgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzNiODJmNiIsIiM2MGE1ZmEiKX07CiAgICAgIH0KCiAgICAgIC5pbmRpY2F0b3IgewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGhlaWdodDogY2FsYygxMDAlIC0gOHB4KTsKICAgICAgICB0b3A6IDRweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoNTksIDEzMCwgMjQ2LCAwLjE1KSIsInJnYmEoNTksIDEzMCwgMjQ2LCAwLjE1KSIpfTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwogICAgICAgIHotaW5kZXg6IDE7CiAgICAgIH0KICAgICAgCiAgICAgIC5pbmRpY2F0b3Iubm8tdHJhbnNpdGlvbiB7CiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTsKICAgICAgfQogICAgICAKICAgICAgOmhvc3QoW2Rpc2FibGVkXSkgLnNlbGVjdGlvbnMgewogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSAub3B0aW9uIHsKICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSAuaW5kaWNhdG9yIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgxMTMsIDExMywgMTIyLCAwLjE1KSIsInJnYmEoMTEzLCAxMTMsIDEyMiwgMC4xNSkiKX07CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJpbnB1dC13cmFwcGVyIj4KICAgICAgICA8ZGVlcy1sYWJlbCAubGFiZWw9JHt0aGlzLmxhYmVsfSAuaW5mb1RleHQ9JHt0aGlzLmluZm9UZXh0fT48L2RlZXMtbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0ibWFpbmJveCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3Rpb25zIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImluZGljYXRvciI+PC9kaXY+CiAgICAgICAgICAke3RoaXMub3B0aW9ucy5tYXAoJD0+d2A8ZGl2IGNsYXNzPSJvcHRpb24gJHskPT09dGhpcy5zZWxlY3RlZE9wdGlvbj8ic2VsZWN0ZWQiOiIifSIgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlU2VsZWN0aW9uKCQpfT4KICAgICAgICAgICAgICAgICR7JH0KICAgICAgICAgICAgICA8L2Rpdj4gYCl9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICAke3RoaXMucmVuZGVyRGVzY3JpcHRpb24oKX0KICAgICAgPC9kaXY+CiAgICBgfWFzeW5jIGNvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLnR5cGU9PT0iYm9vbGVhbiImJnRoaXMub3B0aW9ucy5sZW5ndGg9PT0wJiYodGhpcy5vcHRpb25zPVt0aGlzLmJvb2xlYW5UcnVlTmFtZXx8InRydWUiLHRoaXMuYm9vbGVhbkZhbHNlTmFtZXx8ImZhbHNlIl0sdGhpcy5zZWxlY3RlZE9wdGlvbnx8KHRoaXMuc2VsZWN0ZWRPcHRpb249dGhpcy5ib29sZWFuRmFsc2VOYW1lfHwiZmFsc2UiKSksIXRoaXMuc2VsZWN0ZWRPcHRpb24mJnRoaXMub3B0aW9ucy5sZW5ndGg+MCYmKHRoaXMuc2VsZWN0ZWRPcHRpb249dGhpcy5vcHRpb25zWzBdKX1hc3luYyBmaXJzdFVwZGF0ZWQoJCl7c3VwZXIuZmlyc3RVcGRhdGVkKCQpLHRoaXMudHlwZT09PSJib29sZWFuIiYmKHRoaXMub3B0aW9ucz1bdGhpcy5ib29sZWFuVHJ1ZU5hbWV8fCJ0cnVlIix0aGlzLmJvb2xlYW5GYWxzZU5hbWV8fCJmYWxzZSJdKSxhd2FpdCB0aGlzLnVwZGF0ZUNvbXBsZXRlLGRvY3VtZW50LmZvbnRzJiZhd2FpdCBkb2N1bWVudC5mb250cy5yZWFkeSxhd2FpdCBuZXcgUHJvbWlzZShFPT5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoRSkpLHRoaXMuc2V0SW5kaWNhdG9yKCl9YXN5bmMgaGFuZGxlU2VsZWN0aW9uKCQpe3RoaXMuZGlzYWJsZWR8fCh0aGlzLnNlbGVjdGVkT3B0aW9uPSQsdGhpcy5yZXF1ZXN0VXBkYXRlKCksdGhpcy5jaGFuZ2VTdWJqZWN0Lm5leHQodGhpcyksYXdhaXQgdGhpcy51cGRhdGVDb21wbGV0ZSx0aGlzLnNldEluZGljYXRvcigpKX1pbmRpY2F0b3JJbml0aWFsaXplZD0oS2wodGhpcyxfKSwhMSk7YXN5bmMgc2V0SW5kaWNhdG9yKCl7bGV0ICQ9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5pbmRpY2F0b3IiKSxFPXRoaXMub3B0aW9ucy5pbmRleE9mKHRoaXMuc2VsZWN0ZWRPcHRpb24pO2lmKEU9PT0tMXx8ISQpeyQmJigkLnN0eWxlLm9wYWNpdHk9IjAiKTtyZXR1cm59bGV0IEg9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoYC5vcHRpb246bnRoLWNoaWxkKCR7RSsyfSlgKTskJiZIJiYodGhpcy5pbmRpY2F0b3JJbml0aWFsaXplZHx8KCQuY2xhc3NMaXN0LmFkZCgibm8tdHJhbnNpdGlvbiIpLHRoaXMuaW5kaWNhdG9ySW5pdGlhbGl6ZWQ9ITAsc2V0VGltZW91dCgoKT0+eyQuY2xhc3NMaXN0LnJlbW92ZSgibm8tdHJhbnNpdGlvbiIpfSw1MCkpLCQuc3R5bGUud2lkdGg9YCR7SC5jbGllbnRXaWR0aH1weGAsJC5zdHlsZS5sZWZ0PWAke0gub2Zmc2V0TGVmdH1weGAsJC5zdHlsZS5vcGFjaXR5PSIxIil9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy50eXBlPT09ImJvb2xlYW4iP3RoaXMuc2VsZWN0ZWRPcHRpb249PT10aGlzLmJvb2xlYW5UcnVlTmFtZTp0aGlzLnNlbGVjdGVkT3B0aW9ufXNldFZhbHVlKCQpe3RoaXMudHlwZT09PSJib29sZWFuIiYmdHlwZW9mICQ9PSJib29sZWFuIj90aGlzLnNlbGVjdGVkT3B0aW9uPSQ/dGhpcy5ib29sZWFuVHJ1ZU5hbWV8fCJ0cnVlIjp0aGlzLmJvb2xlYW5GYWxzZU5hbWV8fCJmYWxzZSI6dGhpcy5zZWxlY3RlZE9wdGlvbj0kLHRoaXMucmVxdWVzdFVwZGF0ZSgpLHRoaXMuaGFzVXBkYXRlZCYmcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dGhpcy5zZXRJbmRpY2F0b3IoKX0pfXN0YXRpY3tLbChhLHQpfX07cmV0dXJuIE89YX0pKCl9KTt2YXIgUzBhLF8wYT1nKCgpPT57cGUoKTtTMGE9aSgoKT0+d2AKICA8ZGVlcy1kZW1vd3JhcHBlcj4KICAgIDxzdHlsZT4KICAgICAgJHtKYAogICAgICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgIGdhcDogMjRweDsKICAgICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgICBtYXgtd2lkdGg6IDEyMDBweDsKICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuaG9yaXpvbnRhbC1ncm91cCB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgIGdhcDogMTZweDsKICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICB9CiAgICAgIGB9CiAgICA8L3N0eWxlPgogICAgCiAgICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJCYXNpYyBQaG9uZSBJbnB1dCJ9IC5zdWJ0aXRsZT0keyJBdXRvbWF0aWMgZm9ybWF0dGluZyBmb3IgcGhvbmUgbnVtYmVycyJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1waG9uZQogICAgICAgICAgICAubGFiZWw9JHsiUGhvbmUgTnVtYmVyIn0KICAgICAgICAgICAgLmluZm9UZXh0PSR7IkVudGVyIHlvdXIgcGhvbmUgbnVtYmVyIHdpdGggY291bnRyeSBjb2RlIn0KICAgICAgICAgICAgLmRlc2NyaXB0aW9uPSR7IkluY2x1ZGUgY291bnRyeSBjb2RlIGZvciBpbnRlcm5hdGlvbmFsIG51bWJlcnMifQogICAgICAgICAgICAudmFsdWU9JHsiNTU1MTIzNDU2NyJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXBob25lPgoKICAgICAgICAgIDxkZWVzLWlucHV0LXBob25lCiAgICAgICAgICAgIC5sYWJlbD0keyJDb250YWN0IFBob25lIn0KICAgICAgICAgICAgLmluZm9UZXh0PSR7IlJlcXVpcmVkIGZvciBhY2NvdW50IHZlcmlmaWNhdGlvbiJ9CiAgICAgICAgICAgIC5yZXF1aXJlZD0keyEwfQogICAgICAgICAgICAucGxhY2Vob2xkZXI9JHsiKzEgKDU1NSkgMDAwLTAwMDAifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1waG9uZT4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7Ikhvcml6b250YWwgTGF5b3V0In0gLnN1YnRpdGxlPSR7IlBob25lIGlucHV0cyBhcnJhbmdlZCBob3Jpem9udGFsbHkifT4KICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRpdiBjbGFzcz0iaG9yaXpvbnRhbC1ncm91cCI+CiAgICAgICAgICAgIDxkZWVzLWlucHV0LXBob25lCiAgICAgICAgICAgICAgLmxhYmVsPSR7Ik1vYmlsZSJ9CiAgICAgICAgICAgICAgLmxheW91dE1vZGU9JHsiaG9yaXpvbnRhbCJ9CiAgICAgICAgICAgICAgLnZhbHVlPSR7IjQxNTU1NTEyMzQifQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LXBob25lPgoKICAgICAgICAgICAgPGRlZXMtaW5wdXQtcGhvbmUKICAgICAgICAgICAgICAubGFiZWw9JHsiT2ZmaWNlIn0KICAgICAgICAgICAgICAubGF5b3V0TW9kZT0keyJob3Jpem9udGFsIn0KICAgICAgICAgICAgICAucGxhY2Vob2xkZXI9JHsiKzEgKDgwMCkgNTU1LTAwMDAifQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LXBob25lPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJJbnRlcm5hdGlvbmFsIE51bWJlcnMifSAuc3VidGl0bGU9JHsiU3VwcG9ydHMgZm9ybWF0dGluZyBmb3IgbnVtYmVycyB3aXRoIGNvdW50cnkgY29kZXMifT4KICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRlZXMtaW5wdXQtcGhvbmUKICAgICAgICAgICAgLmxhYmVsPSR7IkludGVybmF0aW9uYWwgQ29udGFjdCJ9CiAgICAgICAgICAgIC5pbmZvVGV4dD0keyJBdXRvbWF0aWNhbGx5IGZvcm1hdHMgaW50ZXJuYXRpb25hbCBudW1iZXJzIn0KICAgICAgICAgICAgLnZhbHVlPSR7IjQ0MTIzNDU2Nzg5MCJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXBob25lPgoKICAgICAgICAgIDxkZWVzLWlucHV0LXBob25lCiAgICAgICAgICAgIC5sYWJlbD0keyJFbWVyZ2VuY3kgQ29udGFjdCJ9CiAgICAgICAgICAgIC52YWx1ZT0keyI5MTEifQogICAgICAgICAgICAuZGlzYWJsZWQ9JHshMH0KICAgICAgICAgID48L2RlZXMtaW5wdXQtcGhvbmU+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJGb3JtIEludGVncmF0aW9uIn0gLnN1YnRpdGxlPSR7IlBob25lIGlucHV0IGFzIHBhcnQgb2YgYSBjb250YWN0IGZvcm0ifT4KICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dCAubGFiZWw9JHsiRnVsbCBOYW1lIn0gLnJlcXVpcmVkPSR7ITB9PjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgPGRlZXMtaW5wdXQtcGhvbmUgLmxhYmVsPSR7IlBob25lIE51bWJlciJ9IC5yZXF1aXJlZD0keyEwfT48L2RlZXMtaW5wdXQtcGhvbmU+CiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0IC5sYWJlbD0keyJFbWFpbCJ9IC5pbnB1dFR5cGU9JHsiZW1haWwifT48L2RlZXMtaW5wdXQtdGV4dD4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kaXY+CiAgPC9kZWVzLWRlbW93cmFwcGVyPgpgLCJkZW1vRnVuYyIpfSk7dmFyIENuZSxGOCxUbmUsWGV0PWcoKCk9PntwZSgpO2t0KCk7emkoKTtfMGEoKTtwdCgpO0NuZT1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sRjg9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LFRuZT0oKCk9PntsZXQgcz1bbmUoImRlZXMtaW5wdXQtcGhvbmUiKV0sZSx0PVtdLGEscj1PdCxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXTt2YXIgeD1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0lucHV0UGhvbmUiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgbT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtZKCldLHA9W0woe3R5cGU6U3RyaW5nfSldLGM9W0woe3R5cGU6U3RyaW5nfSldLENuZSh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImZvcm1hdHRlZFBob25lIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGY9PiJmb3JtYXR0ZWRQaG9uZSJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLmZvcm1hdHRlZFBob25lLCJnZXQiKSxzZXQ6aSgoZix5KT0+e2YuZm9ybWF0dGVkUGhvbmU9eX0sInNldCIpfSxtZXRhZGF0YTptfSxvLGwpLENuZSh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InZhbHVlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGY9PiJ2YWx1ZSJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLnZhbHVlLCJnZXQiKSxzZXQ6aSgoZix5KT0+e2YudmFsdWU9eX0sInNldCIpfSxtZXRhZGF0YTptfSxkLHUpLENuZSh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InBsYWNlaG9sZGVyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGY9PiJwbGFjZWhvbGRlciJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLnBsYWNlaG9sZGVyLCJnZXQiKSxzZXQ6aSgoZix5KT0+e2YucGxhY2Vob2xkZXI9eX0sInNldCIpfSxtZXRhZGF0YTptfSxiLHYpLENuZShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTptfSxudWxsLHQpLHg9YT1lLnZhbHVlLG0mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6bX0pfXN0YXRpYyBkZW1vPVMwYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIklucHV0Il07I2U9RjgodGhpcyxvLCIiKTtnZXQgZm9ybWF0dGVkUGhvbmUoKXtyZXR1cm4gdGhpcy4jZX1zZXQgZm9ybWF0dGVkUGhvbmUobSl7dGhpcy4jZT1tfSN0PShGOCh0aGlzLGwpLEY4KHRoaXMsZCwiIikpO2dldCB2YWx1ZSgpe3JldHVybiB0aGlzLiN0fXNldCB2YWx1ZShtKXt0aGlzLiN0PW19I2E9KEY4KHRoaXMsdSksRjgodGhpcyxiLCIrMSAoNTU1KSAxMjMtNDU2NyIpKTtnZXQgcGxhY2Vob2xkZXIoKXtyZXR1cm4gdGhpcy4jYX1zZXQgcGxhY2Vob2xkZXIobSl7dGhpcy4jYT1tfXN0YXRpYyBzdHlsZXM9W0hlLC4uLk90LmJhc2VTdHlsZXMsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICAgIC8qIFBob25lIGlucHV0IHNwZWNpZmljIHN0eWxlcyBjYW4gZ28gaGVyZSAqLwogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImlucHV0LXdyYXBwZXIiPgogICAgICAgIDxkZWVzLWxhYmVsIC5sYWJlbD0ke3RoaXMubGFiZWx9IC5pbmZvVGV4dD0ke3RoaXMuaW5mb1RleHR9PjwvZGVlcy1sYWJlbD4KICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0CiAgICAgICAgICAudmFsdWU9JHt0aGlzLmZvcm1hdHRlZFBob25lfQogICAgICAgICAgLmRpc2FibGVkPSR7dGhpcy5kaXNhYmxlZH0KICAgICAgICAgIC5yZXF1aXJlZD0ke3RoaXMucmVxdWlyZWR9CiAgICAgICAgICAucGxhY2Vob2xkZXI9JHt0aGlzLnBsYWNlaG9sZGVyfQogICAgICAgICAgQGlucHV0PSR7bT0+dGhpcy5oYW5kbGVQaG9uZUlucHV0KG0pfQogICAgICAgID48L2RlZXMtaW5wdXQtdGV4dD4KICAgICAgICAke3RoaXMucmVuZGVyRGVzY3JpcHRpb24oKX0KICAgICAgPC9kaXY+CiAgICBgfWZpcnN0VXBkYXRlZChtKXtzdXBlci5maXJzdFVwZGF0ZWQobSksdGhpcy52YWx1ZSYmKHRoaXMuZm9ybWF0dGVkUGhvbmU9dGhpcy5mb3JtYXRQaG9uZU51bWJlcih0aGlzLnZhbHVlKSk7bGV0IGY9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoImRlZXMtaW5wdXQtdGV4dCIpO2YmJmYuY2hhbmdlU3ViamVjdCYmZi5jaGFuZ2VTdWJqZWN0LnN1YnNjcmliZSgoKT0+e3RoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMpfSl9aGFuZGxlUGhvbmVJbnB1dChtKXtsZXQgZj1tLnRhcmdldCx5PXRoaXMuY2xlYW5QaG9uZU51bWJlcihmLnZhbHVlKSxNPXRoaXMuZm9ybWF0UGhvbmVOdW1iZXIoeSk7aWYoZi52YWx1ZSE9PU0pe2xldCB6PWYuc2VsZWN0aW9uU3RhcnR8fDA7Zi52YWx1ZT1NO2xldCBOPXRoaXMuY2FsY3VsYXRlQ3Vyc29yUG9zaXRpb24oeSxNLHopO2Yuc2V0U2VsZWN0aW9uUmFuZ2UoTixOKX10aGlzLmZvcm1hdHRlZFBob25lPU0sdGhpcy52YWx1ZT15LHRoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMpfWNsZWFuUGhvbmVOdW1iZXIobSl7cmV0dXJuIG0ucmVwbGFjZSgvXEQvZywiIil9Zm9ybWF0UGhvbmVOdW1iZXIobSl7bGV0IGY9dGhpcy5jbGVhblBob25lTnVtYmVyKG0pO3JldHVybiBmLmxlbmd0aD09PTA/IiI6Zi5sZW5ndGg8PTM/ZjpmLmxlbmd0aDw9Nj9gKCR7Zi5zbGljZSgwLDMpfSkgJHtmLnNsaWNlKDMpfWA6Zi5sZW5ndGg8PTEwP2AoJHtmLnNsaWNlKDAsMyl9KSAke2Yuc2xpY2UoMyw2KX0tJHtmLnNsaWNlKDYpfWA6YCske2Yuc2xpY2UoMCxmLmxlbmd0aC0xMCl9ICgke2Yuc2xpY2UoLTEwLC03KX0pICR7Zi5zbGljZSgtNywtNCl9LSR7Zi5zbGljZSgtNCl9YH1jYWxjdWxhdGVDdXJzb3JQb3NpdGlvbihtLGYseSl7bGV0IE09MDtmb3IobGV0IHo9MDt6PHkmJno8Zi5sZW5ndGg7eisrKS9cZC8udGVzdChmW3pdKXx8TSsrO3JldHVybiBNYXRoLm1pbih5K00sZi5sZW5ndGgpfWdldFZhbHVlKCl7cmV0dXJuIHRoaXMudmFsdWV9c2V0VmFsdWUobSl7dGhpcy52YWx1ZT1tLHRoaXMuZm9ybWF0dGVkUGhvbmU9dGhpcy5mb3JtYXRQaG9uZU51bWJlcihtKX1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksRjgodGhpcyx2KX1zdGF0aWN7RjgoYSx0KX19O3JldHVybiB4PWF9KSgpfSk7dmFyIE0wYSx6MGE9ZygoKT0+e3BlKCk7SXQoKTtmbygpO00wYT1pKCgpPT53YAogIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntsZXQgZT1zLnF1ZXJ5U2VsZWN0b3IoIiN0b2dnbGUtYWxsLW9uIiksdD1zLnF1ZXJ5U2VsZWN0b3IoIiN0b2dnbGUtYWxsLW9mZiIpLGE9cy5xdWVyeVNlbGVjdG9yQWxsKCIuZmVhdHVyZS10b2dnbGVzIGRlZXMtaW5wdXQtdG9nZ2xlIik7ZSYmdCYmKGUuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57YS5mb3JFYWNoKHI9PntsZXQgbj1yOyFuLmRpc2FibGVkJiYhbi5yZXF1aXJlZCYmKG4udmFsdWU9ITApfSl9KSx0LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e2EuZm9yRWFjaChyPT57bGV0IG49cjshbi5kaXNhYmxlZCYmIW4ucmVxdWlyZWQmJihuLnZhbHVlPSExKX0pfSkpfX0+CiAgICA8c3R5bGU+CiAgICAgICR7SmAKICAgICAgICAuZGVtby1jb250YWluZXIgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICBnYXA6IDI0cHg7CiAgICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHg7CiAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICB9CgogICAgICAgIGRlZXMtcGFuZWwgewogICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgICAgICB9CgogICAgICAgIGRlZXMtcGFuZWw6bGFzdC1jaGlsZCB7CiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICAgIH0KCiAgICAgICAgLnRvZ2dsZS1ncm91cCB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgIGdhcDogMTZweDsKICAgICAgICB9CgogICAgICAgIC5ob3Jpem9udGFsLXRvZ2dsZXMgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGdhcDogMzJweDsKICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICB9CgogICAgICAgIC5pbnRlcmFjdGl2ZS1zZWN0aW9uIHsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDQwJSA5Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDE2LjglKSIpfTsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgICBtYXJnaW4tdG9wOiAxNnB4OwogICAgICAgIH0KCiAgICAgICAgLm91dHB1dC10ZXh0IHsKICAgICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuMyAyNSUgMjYuNyUpIiwiaHNsKDIxMCA0MCUgODAlKSIpfTsKICAgICAgICAgIHBhZGRpbmc6IDhweDsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDQwJSA5OCUpIiwiaHNsKDIxNSAyMC4yJSAxMS44JSkiKX07CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgICBtaW4taGVpZ2h0OiAyNHB4OwogICAgICAgIH0KCiAgICAgICAgLnNldHRpbmdzLXNlY3Rpb24gewogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk3JSkiLCJoc2woMCAwJSA3JSkiKX07CiAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDAgMCUgODkuOCUpIiwiaHNsKDAgMCUgMTQuOSUpIil9OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgICAgcGFkZGluZzogMjBweDsKICAgICAgICB9CgogICAgICAgIC5idXR0b24tZ3JvdXAgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGdhcDogOHB4OwogICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgICB9CgogICAgICAgIC5mZWF0dXJlLXRvZ2dsZXMgewogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgNDAlIDk2LjElKSIsImhzbCgyMTUgMjAuMiUgMTEuOCUpIil9OwogICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgyMTQuMyAzMS44JSA5MS40JSkiLCJoc2woMjE1IDIwLjIlIDE2LjglKSIpfTsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgfQoKICAgICAgICAuc2VjdGlvbi10aXRsZSB7CiAgICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS4zIDI1JSA4LjglKSIsImhzbCgyMTAgNDAlIDk4JSkiKX07CiAgICAgICAgfQoKICAgICAgICAuZHJhZy1oaW50IHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNDUuMSUpIiwiaHNsKDAgMCUgNjMuOSUpIil9OwogICAgICAgICAgbWFyZ2luLXRvcDogOHB4OwogICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgICAgIH0KICAgICAgYH0KICAgIDwvc3R5bGU+CgogICAgPGRpdiBjbGFzcz0iZGVtby1jb250YWluZXIiPgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiQmFzaWMgVG9nZ2xlIn0gLnN1YnRpdGxlPSR7IlNpbXBsZSBvbi9vZmYgdG9nZ2xlIHN3aXRjaCB3aXRoIGRyYWcgc3VwcG9ydCJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC10b2dnbGUKICAgICAgICAgICAgLmxhYmVsPSR7IkVuYWJsZSBmZWF0dXJlIn0KICAgICAgICAgICAgLnZhbHVlPSR7ITF9CiAgICAgICAgICAgIC5rZXk9JHsiYmFzaWMifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10b2dnbGU+CgogICAgICAgICAgPGRlZXMtaW5wdXQtdG9nZ2xlCiAgICAgICAgICAgIC5sYWJlbD0keyJBY3RpdmUgdG9nZ2xlIn0KICAgICAgICAgICAgLnZhbHVlPSR7ITB9CiAgICAgICAgICAgIC5rZXk9JHsiYWN0aXZlIn0KICAgICAgICAgID48L2RlZXMtaW5wdXQtdG9nZ2xlPgoKICAgICAgICAgIDxkZWVzLWlucHV0LXRvZ2dsZQogICAgICAgICAgICAubGFiZWw9JHsiV2l0aCBkZXNjcmlwdGlvbiJ9CiAgICAgICAgICAgIC52YWx1ZT0keyExfQogICAgICAgICAgICAuZGVzY3JpcHRpb249JHsiVGhpcyB0b2dnbGUgaGFzIGFkZGl0aW9uYWwgaGVscGVyIHRleHQgZXhwbGFpbmluZyBpdHMgcHVycG9zZSJ9CiAgICAgICAgICAgIC5rZXk9JHsid2l0aERlc2MifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10b2dnbGU+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgICAgPHAgY2xhc3M9ImRyYWctaGludCI+VGlwOiBZb3UgY2FuIGRyYWcgdGhlIHRvZ2dsZSBrbm9iIHRvIHN3aXRjaCBzdGF0ZXM8L3A+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJUb2dnbGUgU3RhdGVzIn0gLnN1YnRpdGxlPSR7IkRpZmZlcmVudCB0b2dnbGUgc3RhdGVzIGFuZCBjb25maWd1cmF0aW9ucyJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC10b2dnbGUKICAgICAgICAgICAgLmxhYmVsPSR7IkRlZmF1bHQgKG9mZikifQogICAgICAgICAgICAudmFsdWU9JHshMX0KICAgICAgICAgID48L2RlZXMtaW5wdXQtdG9nZ2xlPgoKICAgICAgICAgIDxkZWVzLWlucHV0LXRvZ2dsZQogICAgICAgICAgICAubGFiZWw9JHsiRW5hYmxlZCAob24pIn0KICAgICAgICAgICAgLnZhbHVlPSR7ITB9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXRvZ2dsZT4KCiAgICAgICAgICA8ZGVlcy1pbnB1dC10b2dnbGUKICAgICAgICAgICAgLmxhYmVsPSR7IkRpc2FibGVkIChvZmYpIn0KICAgICAgICAgICAgLnZhbHVlPSR7ITF9CiAgICAgICAgICAgIC5kaXNhYmxlZD0keyEwfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10b2dnbGU+CgogICAgICAgICAgPGRlZXMtaW5wdXQtdG9nZ2xlCiAgICAgICAgICAgIC5sYWJlbD0keyJEaXNhYmxlZCAob24pIn0KICAgICAgICAgICAgLnZhbHVlPSR7ITB9CiAgICAgICAgICAgIC5kaXNhYmxlZD0keyEwfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10b2dnbGU+CgogICAgICAgICAgPGRlZXMtaW5wdXQtdG9nZ2xlCiAgICAgICAgICAgIC5sYWJlbD0keyJSZXF1aXJlZCAoYWx3YXlzIG9uKSJ9CiAgICAgICAgICAgIC52YWx1ZT0keyEwfQogICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0KICAgICAgICAgICAgLmRlc2NyaXB0aW9uPSR7IlRoaXMgdG9nZ2xlIGNhbm5vdCBiZSB0dXJuZWQgb2ZmIn0KICAgICAgICAgID48L2RlZXMtaW5wdXQtdG9nZ2xlPgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2RlZXMtcGFuZWw+CgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiSG9yaXpvbnRhbCBMYXlvdXQifSAuc3VidGl0bGU9JHsiVG9nZ2xlcyBhcnJhbmdlZCBob3Jpem9udGFsbHkgZm9yIGNvbXBhY3QgaW50ZXJmYWNlcyJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJob3Jpem9udGFsLXRvZ2dsZXMiPgogICAgICAgICAgICA8ZGVlcy1pbnB1dC10b2dnbGUKICAgICAgICAgICAgICAubGFiZWw9JHsiV2lGaSJ9CiAgICAgICAgICAgICAgLnZhbHVlPSR7ITB9CiAgICAgICAgICAgICAgLmxheW91dE1vZGU9JHsiaG9yaXpvbnRhbCJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtdG9nZ2xlPgoKICAgICAgICAgICAgPGRlZXMtaW5wdXQtdG9nZ2xlCiAgICAgICAgICAgICAgLmxhYmVsPSR7IkJsdWV0b290aCJ9CiAgICAgICAgICAgICAgLnZhbHVlPSR7ITF9CiAgICAgICAgICAgICAgLmxheW91dE1vZGU9JHsiaG9yaXpvbnRhbCJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtdG9nZ2xlPgoKICAgICAgICAgICAgPGRlZXMtaW5wdXQtdG9nZ2xlCiAgICAgICAgICAgICAgLmxhYmVsPSR7IkdQUyJ9CiAgICAgICAgICAgICAgLnZhbHVlPSR7ITB9CiAgICAgICAgICAgICAgLmxheW91dE1vZGU9JHsiaG9yaXpvbnRhbCJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtdG9nZ2xlPgoKICAgICAgICAgICAgPGRlZXMtaW5wdXQtdG9nZ2xlCiAgICAgICAgICAgICAgLmxhYmVsPSR7Ik5GQyJ9CiAgICAgICAgICAgICAgLnZhbHVlPSR7ITF9CiAgICAgICAgICAgICAgLmxheW91dE1vZGU9JHsiaG9yaXpvbnRhbCJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtdG9nZ2xlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJTZXR0aW5ncyBFeGFtcGxlIn0gLnN1YnRpdGxlPSR7IlRvZ2dsZXMgaW4gYSB0eXBpY2FsIHNldHRpbmdzIGNvbnRleHQifT4KICAgICAgICA8ZGl2IGNsYXNzPSJzZXR0aW5ncy1zZWN0aW9uIj4KICAgICAgICAgIDxoNCBjbGFzcz0ic2VjdGlvbi10aXRsZSI+Tm90aWZpY2F0aW9uIFNldHRpbmdzPC9oND4KCiAgICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgICA8ZGVlcy1pbnB1dC10b2dnbGUKICAgICAgICAgICAgICAubGFiZWw9JHsiUHVzaCBub3RpZmljYXRpb25zIn0KICAgICAgICAgICAgICAudmFsdWU9JHshMH0KICAgICAgICAgICAgICAuZGVzY3JpcHRpb249JHsiUmVjZWl2ZSBwdXNoIG5vdGlmaWNhdGlvbnMgb24geW91ciBkZXZpY2UifQogICAgICAgICAgICAgIC5rZXk9JHsicHVzaCJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtdG9nZ2xlPgoKICAgICAgICAgICAgPGRlZXMtaW5wdXQtdG9nZ2xlCiAgICAgICAgICAgICAgLmxhYmVsPSR7IkVtYWlsIG5vdGlmaWNhdGlvbnMifQogICAgICAgICAgICAgIC52YWx1ZT0keyEwfQogICAgICAgICAgICAgIC5kZXNjcmlwdGlvbj0keyJHZXQgaW1wb3J0YW50IHVwZGF0ZXMgdmlhIGVtYWlsIn0KICAgICAgICAgICAgICAua2V5PSR7ImVtYWlsIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC10b2dnbGU+CgogICAgICAgICAgICA8ZGVlcy1pbnB1dC10b2dnbGUKICAgICAgICAgICAgICAubGFiZWw9JHsiU291bmQifQogICAgICAgICAgICAgIC52YWx1ZT0keyExfQogICAgICAgICAgICAgIC5kZXNjcmlwdGlvbj0keyJQbGF5IGEgc291bmQgZm9yIG5vdGlmaWNhdGlvbnMifQogICAgICAgICAgICAgIC5rZXk9JHsic291bmQifQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LXRvZ2dsZT4KCiAgICAgICAgICAgIDxkZWVzLWlucHV0LXRvZ2dsZQogICAgICAgICAgICAgIC5sYWJlbD0keyJWaWJyYXRpb24ifQogICAgICAgICAgICAgIC52YWx1ZT0keyEwfQogICAgICAgICAgICAgIC5kZXNjcmlwdGlvbj0keyJWaWJyYXRlIGZvciBub3RpZmljYXRpb25zIn0KICAgICAgICAgICAgICAua2V5PSR7InZpYnJhdGlvbiJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtdG9nZ2xlPgogICAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJGZWF0dXJlIFRvZ2dsZXMifSAuc3VidGl0bGU9JHsiQmF0Y2ggb3BlcmF0aW9ucyBvbiBtdWx0aXBsZSB0b2dnbGVzIn0+CiAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWdyb3VwIj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiBpZD0idG9nZ2xlLWFsbC1vbiIgdHlwZT0ic2Vjb25kYXJ5Ij5FbmFibGUgQWxsPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiBpZD0idG9nZ2xlLWFsbC1vZmYiIHR5cGU9InNlY29uZGFyeSI+RGlzYWJsZSBBbGw8L2RlZXMtYnV0dG9uPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlLXRvZ2dsZXMiPgogICAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgICAgPGRlZXMtaW5wdXQtdG9nZ2xlCiAgICAgICAgICAgICAgLmxhYmVsPSR7IkRhcmsgTW9kZSJ9CiAgICAgICAgICAgICAgLnZhbHVlPSR7ITB9CiAgICAgICAgICAgICAgLmtleT0keyJkYXJrTW9kZSJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtdG9nZ2xlPgoKICAgICAgICAgICAgPGRlZXMtaW5wdXQtdG9nZ2xlCiAgICAgICAgICAgICAgLmxhYmVsPSR7IkF1dG8tc2F2ZSJ9CiAgICAgICAgICAgICAgLnZhbHVlPSR7ITB9CiAgICAgICAgICAgICAgLmtleT0keyJhdXRvU2F2ZSJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtdG9nZ2xlPgoKICAgICAgICAgICAgPGRlZXMtaW5wdXQtdG9nZ2xlCiAgICAgICAgICAgICAgLmxhYmVsPSR7IlNwZWxsIGNoZWNrIn0KICAgICAgICAgICAgICAudmFsdWU9JHshMX0KICAgICAgICAgICAgICAua2V5PSR7InNwZWxsQ2hlY2sifQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LXRvZ2dsZT4KCiAgICAgICAgICAgIDxkZWVzLWlucHV0LXRvZ2dsZQogICAgICAgICAgICAgIC5sYWJlbD0keyJEZXZlbG9wZXIgbW9kZSJ9CiAgICAgICAgICAgICAgLnZhbHVlPSR7ITF9CiAgICAgICAgICAgICAgLmtleT0keyJkZXZNb2RlIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC10b2dnbGU+CgogICAgICAgICAgICA8ZGVlcy1pbnB1dC10b2dnbGUKICAgICAgICAgICAgICAubGFiZWw9JHsiQmV0YSBmZWF0dXJlcyJ9CiAgICAgICAgICAgICAgLnZhbHVlPSR7ITF9CiAgICAgICAgICAgICAgLmtleT0keyJiZXRhIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC10b2dnbGU+CiAgICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgoKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IkludGVyYWN0aXZlIEV4YW1wbGUifSAuc3VidGl0bGU9JHsiVG9nZ2xlIHRvIHNlZSB2YWx1ZSBjaGFuZ2VzIGluIHJlYWwtdGltZSJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC10b2dnbGUKICAgICAgICAgICAgLmxhYmVsPSR7IkFpcnBsYW5lIG1vZGUifQogICAgICAgICAgICAudmFsdWU9JHshMX0KICAgICAgICAgICAgQG5ld1ZhbHVlPSR7cz0+e2xldCBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNhaXJwbGFuZS1vdXRwdXQiKTtlJiYoZS50ZXh0Q29udGVudD1gQWlycGxhbmUgbW9kZTogJHtzLmRldGFpbD8iT04iOiJPRkYifWApfX0KICAgICAgICAgID48L2RlZXMtaW5wdXQtdG9nZ2xlPgoKICAgICAgICAgIDxkZWVzLWlucHV0LXRvZ2dsZQogICAgICAgICAgICAubGFiZWw9JHsiRG8gbm90IGRpc3R1cmIifQogICAgICAgICAgICAudmFsdWU9JHshMX0KICAgICAgICAgICAgQG5ld1ZhbHVlPSR7cz0+e2xldCBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNkbmQtb3V0cHV0Iik7ZSYmKGUudGV4dENvbnRlbnQ9YERvIG5vdCBkaXN0dXJiOiAke3MuZGV0YWlsPyJFTkFCTEVEIjoiRElTQUJMRUQifWApfX0KICAgICAgICAgID48L2RlZXMtaW5wdXQtdG9nZ2xlPgogICAgICAgIDwvZGVlcy1mb3JtPgoKICAgICAgICA8ZGl2IGNsYXNzPSJpbnRlcmFjdGl2ZS1zZWN0aW9uIj4KICAgICAgICAgIDxkaXYgaWQ9ImFpcnBsYW5lLW91dHB1dCIgY2xhc3M9Im91dHB1dC10ZXh0Ij5BaXJwbGFuZSBtb2RlOiBPRkY8L2Rpdj4KICAgICAgICAgIDxkaXYgaWQ9ImRuZC1vdXRwdXQiIGNsYXNzPSJvdXRwdXQtdGV4dCIgc3R5bGU9Im1hcmdpbi10b3A6IDhweDsiPkRvIG5vdCBkaXN0dXJiOiBESVNBQkxFRDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2Rpdj4KICA8L2RlZXMtZGVtb3dyYXBwZXI+CmAsImRlbW9GdW5jIil9KTt2YXIgQzBhLFFldCwkbmUsSmV0PWcoKCk9PntwZSgpO2t0KCk7emkoKTt6MGEoKTtDcigpO3B0KCk7QzBhPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxRZXQ9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LCRuZT0oKCk9PntsZXQgcz1bbmUoImRlZXMtaW5wdXQtdG9nZ2xlIildLGUsdD1bXSxhLHI9T3QsbixvPVtdLGw9W107dmFyIHA9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNJbnB1dFRvZ2dsZSIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBkPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6Qm9vbGVhbixyZWZsZWN0OiEwfSldLEMwYSh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InZhbHVlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHU9PiJ2YWx1ZSJpbiB1LCJoYXMiKSxnZXQ6aSh1PT51LnZhbHVlLCJnZXQiKSxzZXQ6aSgodSxjKT0+e3UudmFsdWU9Y30sInNldCIpfSxtZXRhZGF0YTpkfSxvLGwpLEMwYShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpkfSxudWxsLHQpLHA9YT1lLnZhbHVlLGQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZH0pfXN0YXRpYyBkZW1vPU0wYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIklucHV0Il07I2U9UWV0KHRoaXMsbywhMSk7Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHZhbHVlKGQpe3RoaXMuI2U9ZH1jdXJyZW50WD0oUWV0KHRoaXMsbCksMCk7aXNEcmFnZ2luZz0hMTtoYXNEcmFnZ2VkPSExO3N0YXJ0WD0wO3RyYWNrV2lkdGg9MzY7dHJhY2tIZWlnaHQ9MjA7a25vYlNpemU9MTQ7cGFkZGluZz0yO21heFRyYXZlbD0xNjtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5sYWJlbFBvc2l0aW9uPSJyaWdodCJ9c3RhdGljIHN0eWxlcz1bSGUsLi4uT3QuYmFzZVN0eWxlcyxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgKiB7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgOmhvc3QgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgICAgZm9udC1mYW1pbHk6ICR7TmF9OwogICAgICB9CgogICAgICAubWFpbmNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICB9CgogICAgICAudG9nZ2xlLXRyYWNrIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICAgIHdpZHRoOiAzNnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDEwMCUpIiwiaHNsKDAgMCUgMy45JSkiKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgwIDAlIDg5LjglKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIG1hcmdpbi10b3A6IDFweDsKICAgICAgfQoKICAgICAgLm1haW5jb250YWluZXI6aG92ZXIgLnRvZ2dsZS10cmFjayB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNzkuOCUpIiwiaHNsKDAgMCUgMjAuOSUpIil9OwogICAgICB9CgogICAgICA6aG9zdChbdmFsdWVdKSAudG9nZ2xlLXRyYWNrIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDUxLjIlKSIsImhzbCgyMTcuMiA5MS4yJSA1OS44JSkiKX07CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDUxLjIlKSIsImhzbCgyMTcuMiA5MS4yJSA1OS44JSkiKX07CiAgICAgIH0KCiAgICAgIC50b2dnbGUtdHJhY2s6Zm9jdXMtdmlzaWJsZSB7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggJHtoLmJkVGhlbWUoImhzbCgyMjIuMiA0Ny40JSA1MS4yJSAvIDAuMSkiLCJoc2woMjE3LjIgOTEuMiUgNTkuOCUgLyAwLjEpIil9OwogICAgICB9CgogICAgICAudG9nZ2xlLWtub2IgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDJweDsKICAgICAgICB3aWR0aDogMTRweDsKICAgICAgICBoZWlnaHQ6IDE0cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogN3B4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA2My45JSkiLCJoc2woMCAwJSA0NS4xJSkiKX07CiAgICAgICAgdHJhbnNpdGlvbjogbGVmdCAwLjE1cyBlYXNlLCBiYWNrZ3JvdW5kIDAuMTVzIGVhc2U7CiAgICAgICAgdG91Y2gtYWN0aW9uOiBub25lOwogICAgICB9CgogICAgICAudG9nZ2xlLWtub2IuZHJhZ2dpbmcgewogICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xNXMgZWFzZTsKICAgICAgfQoKICAgICAgOmhvc3QoW3ZhbHVlXSkgLnRvZ2dsZS1rbm9iIHsKICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgICAgfQoKICAgICAgLyogRGlzYWJsZWQgc3RhdGUgKi8KICAgICAgLm1haW5jb250YWluZXIuZGlzYWJsZWQgewogICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICB9CgogICAgICAudG9nZ2xlLXRyYWNrLmRpc2FibGVkIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTUuMSUpIiwiaHNsKDAgMCUgMTQuOSUpIil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDg5LjglKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgfQoKICAgICAgLyogUmVxdWlyZWQgc3RhdGUgKGxvY2tlZCBvbikgKi8KICAgICAgOmhvc3QoW3JlcXVpcmVkXVt2YWx1ZV0pIC50b2dnbGUtdHJhY2sgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNjEuMiUpIiwiaHNsKDIxNy4yIDkxLjIlIDQ5LjglKSIpfTsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNjEuMiUpIiwiaHNsKDIxNy4yIDkxLjIlIDQ5LjglKSIpfTsKICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICB9CgogICAgICA6aG9zdChbcmVxdWlyZWRdW3ZhbHVlXSkgLnRvZ2dsZS1rbm9iIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgODUlKSIsImhzbCgwIDAlIDcwJSkiKX07CiAgICAgIH0KCiAgICAgIC8qIExhYmVsICovCiAgICAgIC5sYWJlbC1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDJweDsKICAgICAgICBmbGV4OiAxOwogICAgICB9CgogICAgICAudG9nZ2xlLWxhYmVsIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBsaW5lLWhlaWdodDogMjBweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDE1JSkiLCJoc2woMCAwJSA5MCUpIil9OwogICAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMTVzIGVhc2U7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICAgIH0KCiAgICAgIC5tYWluY29udGFpbmVyOmhvdmVyIC50b2dnbGUtbGFiZWwgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOSUpIiwiaHNsKDAgMCUgOTUlKSIpfTsKICAgICAgfQoKICAgICAgLm1haW5jb250YWluZXIuZGlzYWJsZWQ6aG92ZXIgLnRvZ2dsZS1sYWJlbCB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxNSUpIiwiaHNsKDAgMCUgOTAlKSIpfTsKICAgICAgfQoKICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJpbnB1dC13cmFwcGVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtYWluY29udGFpbmVyICR7dGhpcy5kaXNhYmxlZD8iZGlzYWJsZWQiOiIifSIgQGNsaWNrPSIke3RoaXMuaGFuZGxlQ2xpY2t9Ij4KICAgICAgICAgIDxkaXYKICAgICAgICAgICAgY2xhc3M9InRvZ2dsZS10cmFjayAke3RoaXMuZGlzYWJsZWQ/ImRpc2FibGVkIjoiIn0iCiAgICAgICAgICAgIHRhYmluZGV4PSIke3RoaXMuZGlzYWJsZWQ/Ii0xIjoiMCJ9IgogICAgICAgICAgICBAa2V5ZG93bj0iJHt0aGlzLmhhbmRsZUtleWRvd259IgogICAgICAgICAgPgogICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgY2xhc3M9InRvZ2dsZS1rbm9iIgogICAgICAgICAgICAgIHN0eWxlPSJsZWZ0OiAke3RoaXMucGFkZGluZyt0aGlzLmN1cnJlbnRYfXB4OyIKICAgICAgICAgICAgICBAcG9pbnRlcmRvd249IiR7dGhpcy5vblBvaW50ZXJEb3dufSIKICAgICAgICAgICAgICBAcG9pbnRlcm1vdmU9IiR7dGhpcy5vblBvaW50ZXJNb3ZlfSIKICAgICAgICAgICAgICBAcG9pbnRlcnVwPSIke3RoaXMub25Qb2ludGVyVXB9IgogICAgICAgICAgICAgIEBwb2ludGVyY2FuY2VsPSIke3RoaXMub25Qb2ludGVyVXB9IgogICAgICAgICAgICA+PC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImxhYmVsLWNvbnRhaW5lciI+CiAgICAgICAgICAgICR7dGhpcy5sYWJlbD93YDxkaXYgY2xhc3M9InRvZ2dsZS1sYWJlbCI+JHt0aGlzLmxhYmVsfTwvZGl2PmA6IiJ9CiAgICAgICAgICAgICR7dGhpcy5yZW5kZXJEZXNjcmlwdGlvbigpfQogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1hc3luYyBmaXJzdFVwZGF0ZWQoZCl7YXdhaXQgc3VwZXIuZmlyc3RVcGRhdGVkKGQpLHRoaXMucmVxdWlyZWQmJiF0aGlzLnZhbHVlJiYodGhpcy52YWx1ZT0hMCksdGhpcy5jdXJyZW50WD10aGlzLnZhbHVlP3RoaXMubWF4VHJhdmVsOjAsdGhpcy5yZXF1ZXN0VXBkYXRlKCl9YXN5bmMgaGFuZGxlQ2xpY2soZCl7aWYodGhpcy5pc0RyYWdnaW5nfHx0aGlzLmhhc0RyYWdnZWQpe2Quc3RvcFByb3BhZ2F0aW9uKCksZC5wcmV2ZW50RGVmYXVsdCgpO3JldHVybn1pZighdGhpcy5kaXNhYmxlZCl7aWYodGhpcy5yZXF1aXJlZCl7dGhpcy5jdXJyZW50WD10aGlzLm1heFRyYXZlbCx0aGlzLnJlcXVlc3RVcGRhdGUoKSxhd2FpdCBuZXcgUHJvbWlzZSh1PT5zZXRUaW1lb3V0KHUsMTApKSx0aGlzLmN1cnJlbnRYPXRoaXMubWF4VHJhdmVsLTMsdGhpcy5yZXF1ZXN0VXBkYXRlKCksYXdhaXQgdXQuc21hcnRkZWxheS5kZWxheUZvcigxNTApLHRoaXMuY3VycmVudFg9dGhpcy5tYXhUcmF2ZWwsdGhpcy5yZXF1ZXN0VXBkYXRlKCk7cmV0dXJufWQuc3RvcFByb3BhZ2F0aW9uKCksZC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMudmFsdWU9IXRoaXMudmFsdWUsdGhpcy5jdXJyZW50WD10aGlzLnZhbHVlP3RoaXMubWF4VHJhdmVsOjAsdGhpcy5yZXF1ZXN0VXBkYXRlKCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgibmV3VmFsdWUiLHtkZXRhaWw6dGhpcy52YWx1ZSxidWJibGVzOiEwfSkpLHRoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMpLHV0LnNtYXJ0ZGVsYXkuZGVsYXlGb3IoMCkudGhlbigoKT0+e3RoaXMuaGFzRHJhZ2dlZD0hMX0pfX1vblBvaW50ZXJEb3duKGQpe3RoaXMucmVxdWlyZWR8fHRoaXMuZGlzYWJsZWR8fCh0aGlzLmlzRHJhZ2dpbmc9ITAsdGhpcy5zdGFydFg9ZC5jbGllbnRYLXRoaXMuY3VycmVudFgsZC50YXJnZXQuc2V0UG9pbnRlckNhcHR1cmUoZC5wb2ludGVySWQpKX1vblBvaW50ZXJNb3ZlKGQpe2lmKCF0aGlzLmlzRHJhZ2dpbmcpcmV0dXJuO2xldCB1PWQuY2xpZW50WC10aGlzLnN0YXJ0WDt0aGlzLmhhc0RyYWdnZWQ9ITA7bGV0IGM9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIudG9nZ2xlLWtub2IiKTtjJiZjLmNsYXNzTGlzdC5hZGQoImRyYWdnaW5nIiksdGhpcy5jdXJyZW50WD1NYXRoLm1heCgwLE1hdGgubWluKHUsdGhpcy5tYXhUcmF2ZWwpKSx0aGlzLnJlcXVlc3RVcGRhdGUoKX1vblBvaW50ZXJVcChkKXtpZighdGhpcy5pc0RyYWdnaW5nfHwoZC50YXJnZXQucmVsZWFzZVBvaW50ZXJDYXB0dXJlKGQucG9pbnRlcklkKSx0aGlzLmlzRHJhZ2dpbmc9ITEsIXRoaXMuaGFzRHJhZ2dlZCkpcmV0dXJuO2xldCB1PXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLnRvZ2dsZS1rbm9iIik7dSYmdS5jbGFzc0xpc3QucmVtb3ZlKCJkcmFnZ2luZyIpO2xldCBjPXRoaXMubWF4VHJhdmVsLzI7dGhpcy52YWx1ZT10aGlzLmN1cnJlbnRYPmMsdGhpcy5jdXJyZW50WD10aGlzLnZhbHVlP3RoaXMubWF4VHJhdmVsOjAsdGhpcy5yZXF1ZXN0VXBkYXRlKCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgibmV3VmFsdWUiLHtkZXRhaWw6dGhpcy52YWx1ZSxidWJibGVzOiEwfSkpLHRoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMpLHV0LnNtYXJ0ZGVsYXkuZGVsYXlGb3IoMCkudGhlbigoKT0+e3RoaXMuaGFzRHJhZ2dlZD0hMX0pfXVwZGF0ZWQoZCl7c3VwZXIudXBkYXRlZChkKSxkLmhhcygidmFsdWUiKSYmIXRoaXMuaXNEcmFnZ2luZyYmIXRoaXMuaGFzRHJhZ2dlZCYmKHRoaXMuY3VycmVudFg9dGhpcy52YWx1ZT90aGlzLm1heFRyYXZlbDowLHRoaXMucmVxdWVzdFVwZGF0ZSgpKX1oYW5kbGVLZXlkb3duKGQpeyhkLmtleT09PSIgInx8ZC5rZXk9PT0iRW50ZXIiKSYmKGQucHJldmVudERlZmF1bHQoKSx0aGlzLmhhbmRsZUNsaWNrKGQpKX1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLnZhbHVlfXNldFZhbHVlKGQpe3RoaXMudmFsdWU9ZH1mb2N1cygpe2xldCBkPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLnRvZ2dsZS10cmFjayIpO2QmJmQuZm9jdXMoKX1zdGF0aWN7UWV0KGEsdCl9fTtyZXR1cm4gcD1hfSkoKX0pO3ZhciBUMGEsJDBhPWcoKCk9PntwZSgpO1QwYT1pKCgpPT53YAogIDxkZWVzLWRlbW93cmFwcGVyPgogICAgPHN0eWxlPgogICAgICAke0pgCiAgICAgICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICAgIG1heC13aWR0aDogMTIwMHB4OwogICAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5ob3Jpem9udGFsLWdyb3VwIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBnYXA6IDI0cHg7CiAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmluZm8tYm94IHsKICAgICAgICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICAgICAgICBwYWRkaW5nOiAxMnB4OwogICAgICAgICAgYmFja2dyb3VuZDogI2UzZjJmZDsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICAgIGNvbG9yOiAjMTk3NmQyOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7CiAgICAgICAgICAuaW5mby1ib3ggewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMWUzYTVmOwogICAgICAgICAgICBjb2xvcjogIzkwY2FmOTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIGB9CiAgICA8L3N0eWxlPgogICAgCiAgICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJCYXNpYyBUeXBlIExpc3QifSAuc3VidGl0bGU9JHsiQWRkIGFuZCByZW1vdmUgaXRlbXMgZnJvbSBhIGxpc3QifT4KICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRlZXMtaW5wdXQtdHlwZWxpc3QKICAgICAgICAgICAgLmxhYmVsPSR7IlRhZ3MifQogICAgICAgICAgICAuaW5mb1RleHQ9JHsiQWRkIHRhZ3MgYnkgdHlwaW5nIGFuZCBwcmVzc2luZyBFbnRlciJ9CiAgICAgICAgICAgIC5kZXNjcmlwdGlvbj0keyJUYWdzIGhlbHAgY2F0ZWdvcml6ZSBhbmQgZmlsdGVyIHlvdXIgY29udGVudCJ9CiAgICAgICAgICAgIC52YWx1ZT0ke1siamF2YXNjcmlwdCIsInR5cGVzY3JpcHQiLCJ3ZWItY29tcG9uZW50cyJdfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10eXBlbGlzdD4KCiAgICAgICAgICA8ZGVlcy1pbnB1dC10eXBlbGlzdAogICAgICAgICAgICAubGFiZWw9JHsiVGVhbSBNZW1iZXJzIn0KICAgICAgICAgICAgLmluZm9UZXh0PSR7IkFkZCBlbWFpbCBhZGRyZXNzZXMgb2YgdGVhbSBtZW1iZXJzIn0KICAgICAgICAgICAgLnZhbHVlPSR7WyJhbGljZUBleGFtcGxlLmNvbSIsImJvYkBleGFtcGxlLmNvbSJdfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10eXBlbGlzdD4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IlNraWxscyAmIEtleXdvcmRzIn0gLnN1YnRpdGxlPSR7Ik1hbmFnZSBsaXN0cyBvZiBza2lsbHMgYW5kIGtleXdvcmRzIn0+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkZWVzLWlucHV0LXR5cGVsaXN0CiAgICAgICAgICAgIC5sYWJlbD0keyJZb3VyIFNraWxscyJ9CiAgICAgICAgICAgIC5pbmZvVGV4dD0keyJMaXN0IHlvdXIgcHJvZmVzc2lvbmFsIHNraWxscyJ9CiAgICAgICAgICAgIC52YWx1ZT0ke1siSFRNTCIsIkNTUyIsIkphdmFTY3JpcHQiLCJOb2RlLmpzIiwiUmVhY3QiXX0KICAgICAgICAgID48L2RlZXMtaW5wdXQtdHlwZWxpc3Q+CgogICAgICAgICAgPGRpdiBjbGFzcz0iaG9yaXpvbnRhbC1ncm91cCI+CiAgICAgICAgICAgIDxkZWVzLWlucHV0LXR5cGVsaXN0CiAgICAgICAgICAgICAgLmxhYmVsPSR7IkNhdGVnb3JpZXMifQogICAgICAgICAgICAgIC5sYXlvdXRNb2RlPSR7Imhvcml6b250YWwifQogICAgICAgICAgICAgIC52YWx1ZT0ke1siVGVjaG5vbG9neSIsIkRlc2lnbiIsIkJ1c2luZXNzIl19CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtdHlwZWxpc3Q+CgogICAgICAgICAgICA8ZGVlcy1pbnB1dC10eXBlbGlzdAogICAgICAgICAgICAgIC5sYWJlbD0keyJLZXl3b3JkcyJ9CiAgICAgICAgICAgICAgLmxheW91dE1vZGU9JHsiaG9yaXpvbnRhbCJ9CiAgICAgICAgICAgICAgLnZhbHVlPSR7WyJpbm5vdmF0aW9uIiwic3RhcnR1cCIsImdyb3d0aCJdfQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LXR5cGVsaXN0PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJSZXF1aXJlZCAmIERpc2FibGVkIFN0YXRlcyJ9IC5zdWJ0aXRsZT0keyJEaWZmZXJlbnQgaW5wdXQgc3RhdGVzIGZvciB2YWxpZGF0aW9uIn0+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkZWVzLWlucHV0LXR5cGVsaXN0CiAgICAgICAgICAgIC5sYWJlbD0keyJQcm9qZWN0IERlcGVuZGVuY2llcyJ9CiAgICAgICAgICAgIC5pbmZvVGV4dD0keyJMaXN0IGFsbCByZXF1aXJlZCBucG0gcGFja2FnZXMifQogICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0KICAgICAgICAgICAgLnZhbHVlPSR7WyJAZGVzaWduLmVzdGF0ZS9kZWVzLWVsZW1lbnQiLCJAZGVzaWduLmVzdGF0ZS9kZWVzLWRvbXRvb2xzIl19CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXR5cGVsaXN0PgoKICAgICAgICAgIDxkZWVzLWlucHV0LXR5cGVsaXN0CiAgICAgICAgICAgIC5sYWJlbD0keyJTeXN0ZW0gVGFncyJ9CiAgICAgICAgICAgIC5pbmZvVGV4dD0keyJUaGVzZSB0YWdzIGFyZSBtYW5hZ2VkIGJ5IHRoZSBzeXN0ZW0ifQogICAgICAgICAgICAuZGlzYWJsZWQ9JHshMH0KICAgICAgICAgICAgLnZhbHVlPSR7WyJzeXN0ZW0iLCJwcm90ZWN0ZWQiLCJyZWFkb25seSJdfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10eXBlbGlzdD4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IkFydGljbGUgUHVibGlzaGluZyBGb3JtIn0gLnN1YnRpdGxlPSR7IkNvbXBsZXRlIGZvcm0gd2l0aCB0YWcgbWFuYWdlbWVudCJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0IC5sYWJlbD0keyJBcnRpY2xlIFRpdGxlIn0gLnJlcXVpcmVkPSR7ITB9PjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dCAKICAgICAgICAgICAgLmxhYmVsPSR7IlN1bW1hcnkifSAKICAgICAgICAgICAgLmlucHV0VHlwZT0keyJ0ZXh0YXJlYSJ9CiAgICAgICAgICAgIC5pbmZvVGV4dD0keyJCcmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgYXJ0aWNsZSJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgICA8ZGVlcy1pbnB1dC10eXBlbGlzdAogICAgICAgICAgICAubGFiZWw9JHsiVGFncyJ9CiAgICAgICAgICAgIC5pbmZvVGV4dD0keyJBZGQgcmVsZXZhbnQgdGFncyBmb3IgYmV0dGVyIGRpc2NvdmVyYWJpbGl0eSJ9CiAgICAgICAgICAgIC52YWx1ZT0ke1sidHV0b3JpYWwiLCJ3ZWItZGV2ZWxvcG1lbnQiXX0KICAgICAgICAgID48L2RlZXMtaW5wdXQtdHlwZWxpc3Q+CiAgICAgICAgICA8ZGVlcy1pbnB1dC10eXBlbGlzdAogICAgICAgICAgICAubGFiZWw9JHsiQ28tQXV0aG9ycyJ9CiAgICAgICAgICAgIC5pbmZvVGV4dD0keyJBZGQgZW1haWwgYWRkcmVzc2VzIG9mIGNvLWF1dGhvcnMifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10eXBlbGlzdD4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvLWJveCI+CiAgICAgICAgICA8c3Ryb25nPlRpcDo8L3N0cm9uZz4gVHlwZSBhIHZhbHVlIGFuZCBwcmVzcyBFbnRlciB0byBhZGQgaXQgdG8gdGhlIGxpc3QuIENsaWNrIG9uIGFueSBpdGVtIHRvIHJlbW92ZSBpdC4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kaXY+CiAgPC9kZWVzLWRlbW93cmFwcGVyPgpgLCJkZW1vRnVuYyIpfSk7dmFyIGV0dCxEWixEbmUsdHR0PWcoKCk9PntwZSgpO2t0KCk7emkoKTskMGEoKTtwdCgpO2V0dD1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sRFo9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LERuZT0oKCk9PntsZXQgcz1bbmUoImRlZXMtaW5wdXQtdHlwZWxpc3QiKV0sZSx0PVtdLGEscj1PdCxuLG89W10sbD1bXSxwLGQ9W10sdT1bXTt2YXIgYz1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0lucHV0VHlwZWxpc3QiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgYj10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOkFycmF5fSldLHA9W1koKV0sZXR0KHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidmFsdWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkodj0+InZhbHVlImluIHYsImhhcyIpLGdldDppKHY9PnYudmFsdWUsImdldCIpLHNldDppKCh2LHgpPT57di52YWx1ZT14fSwic2V0Iil9LG1ldGFkYXRhOmJ9LG8sbCksZXR0KHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaW5wdXRWYWx1ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh2PT4iaW5wdXRWYWx1ZSJpbiB2LCJoYXMiKSxnZXQ6aSh2PT52LmlucHV0VmFsdWUsImdldCIpLHNldDppKCh2LHgpPT57di5pbnB1dFZhbHVlPXh9LCJzZXQiKX0sbWV0YWRhdGE6Yn0sZCx1KSxldHQobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6Yn0sbnVsbCx0KSxjPWE9ZS52YWx1ZSxiJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KX1zdGF0aWMgZGVtbz1UMGE7c3RhdGljIGRlbW9Hcm91cHM9WyJJbnB1dCJdOyNlPURaKHRoaXMsbyxbXSk7Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHZhbHVlKGIpe3RoaXMuI2U9Yn0jdD0oRFoodGhpcyxsKSxEWih0aGlzLGQsIiIpKTtnZXQgaW5wdXRWYWx1ZSgpe3JldHVybiB0aGlzLiN0fXNldCBpbnB1dFZhbHVlKGIpe3RoaXMuI3Q9Yn1zdGF0aWMgc3R5bGVzPVtIZSwuLi5PdC5iYXNlU3R5bGVzLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICAvKiBUT0RPOiBNaWdyYXRlIGhhcmRjb2RlZCB2YWx1ZXMgdG8gLS1kZWVzLSogQ1NTIHZhcmlhYmxlcyAqLwogICAgICA6aG9zdCB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMzMzIiwiI2ZmZiIpfTsKICAgICAgfQogICAgICAubWFpbmJveCB7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmFmYWZhIiwiIzIyMjIyMiIpfTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIGJvcmRlci10b3A6ICR7aC5iZFRoZW1lKCIxcHggc29saWQgI0NDQyIsIjFweCBzb2xpZCAjZmZmZmZmMTAiKX07CiAgICAgICAgYm9yZGVyLWJvdHRvbTogJHtoLmJkVGhlbWUoIjFweCBzb2xpZCAjQ0NDIiwiMXB4IHNvbGlkICMyMjIiKX07CiAgICAgICAgYm9yZGVyLXJpZ2h0OiAke2guYmRUaGVtZSgiMXB4IHNvbGlkICNDQ0MiLCIxcHggc29saWQgI2ZmZmZmZjEwIil9OwogICAgICAgIGJvcmRlci1sZWZ0OiAke2guYmRUaGVtZSgiMXB4IHNvbGlkICNDQ0MiLCIxcHggc29saWQgI2ZmZmZmZjEwIil9OwogICAgICAgIGJveC1zaGFkb3c6ICR7aC5iZFRoZW1lKCIwcHggMXB4IDRweCByZ2JhKDAsMCwwLDAuMykiLCJub25lIil9OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQogICAgICAKICAgICAgLm1haW5ib3g6aG92ZXIgewogICAgICAgIGZpbHRlcjogJHtoLmJkVGhlbWUoImJyaWdodG5lc3MoMC45OCkiLCJicmlnaHRuZXNzKDEuMDUpIil9OwogICAgICB9CiAgICAgIAogICAgICAubWFpbmJveDpmb2N1cy13aXRoaW4gewogICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCAke2guYmRUaGVtZSgiIzAwNjlmMiIsIiMwMDg0ZmYiKX07CiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7CiAgICAgIH0KCiAgICAgIC50YWdzIHsKICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgfQoKICAgICAgLm5vdGFncyB7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzk5OSIsIiM2NjYiKX07CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgICAgfQoKICAgICAgaW5wdXQgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNWY1ZjUiLCIjMTgxODE4Iil9OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGNvbG9yOiBpbmhlcml0OwogICAgICAgIHBhZGRpbmc6IDBweCAxNnB4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgbGluZS1oZWlnaHQ6IDMycHg7CiAgICAgICAgaGVpZ2h0OiAwcHg7CiAgICAgICAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuMnM7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTBlMGUwIiwiIzMzMyIpfTsKICAgICAgfQoKICAgICAgaW5wdXQ6Zm9jdXMgewogICAgICAgIGhlaWdodDogMzJweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZhZmFmYSIsIiMxYTFhMWEiKX07CiAgICAgIH0KICAgICAgCiAgICAgIGlucHV0OjpwbGFjZWhvbGRlciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjOTk5IiwiIzY2NiIpfTsKICAgICAgfQoKICAgICAgLnRhZyB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZThmNWU5IiwiIzJkM2EyZCIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMyZTdkMzIiLCIjODFjNzg0Iil9OwogICAgICAgIHBhZGRpbmc6IDRweCAxMHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBtYXJnaW46IDNweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4yczsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2M4ZTZjOSIsIiMxYjVlMjAiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC50YWc6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjYzhlNmM5IiwiIzNkNGYzZCIpfTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7CiAgICAgIH0KCiAgICAgIC50YWcgLnJlbW92ZSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDhweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgb3BhY2l0eTogMC43OwogICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4yczsKICAgICAgfQoKICAgICAgLnRhZyAucmVtb3ZlOmhvdmVyIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2M2MjgyOCIsIiNlZjUzNTAiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC8qIERpc2FibGVkIHN0YXRlICovCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIC5tYWluYm94IHsKICAgICAgICBvcGFjaXR5OiAwLjY7CiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgICAgfQogICAgICAKICAgICAgOmhvc3QoW2Rpc2FibGVkXSkgLnRhZ3MgewogICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAgIH0KICAgICAgCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIC50YWcgewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CiAgICAgIAogICAgICA6aG9zdChbZGlzYWJsZWRdKSBpbnB1dCB7CiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2YwZjBmMCIsIiMxYTFhMWEiKX07CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJpbnB1dC13cmFwcGVyIj4KICAgICAgICA8ZGVlcy1sYWJlbCAubGFiZWw9JHt0aGlzLmxhYmVsfSAuaW5mb1RleHQ9JHt0aGlzLmluZm9UZXh0fT48L2RlZXMtbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0ibWFpbmJveCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWdzIiBAY2xpY2s9JHsoKT0+e3RoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCJpbnB1dCIpLmZvY3VzKCl9fT4KICAgICAgICAgICAgJHt0aGlzLnZhbHVlLmxlbmd0aD09PTA/d2A8ZGl2IGNsYXNzPSJub3RhZ3MiPk5vIHRhZ3MgeWV0PC9kaXY+YDp0aGlzLnZhbHVlLm1hcChiPT53YAogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0YWciPgogICAgICAgICAgICAgICAgICAgICAgJHtifQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJlbW92ZSIgQGNsaWNrPSR7dj0+e3Yuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5yZW1vdmVUYWcoYil9fT7Dlzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIGApfQogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgdHlwZT0idGV4dCIKICAgICAgICAgICAgcGxhY2Vob2xkZXI9IlR5cGUsIHByZXNzIEVudGVyIHRvIGFkZCBpdC4uLiIKICAgICAgICAgICAgLnZhbHVlPSR7dGhpcy5pbnB1dFZhbHVlfQogICAgICAgICAgICBAaW5wdXQ9JHtiPT57dGhpcy5pbnB1dFZhbHVlPWIudGFyZ2V0LnZhbHVlfX0KICAgICAgICAgICAgQGtleWRvd249JHtiPT57Yi5rZXk9PT0iRW50ZXIiJiZ0aGlzLmlucHV0VmFsdWUudHJpbSgpJiYoYi5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuYWRkVGFnKHRoaXMuaW5wdXRWYWx1ZS50cmltKCkpKX19CiAgICAgICAgICAgIC5kaXNhYmxlZD0ke3RoaXMuZGlzYWJsZWR9CiAgICAgICAgICAvPgogICAgICAgIDwvZGl2PgogICAgICAgICR7dGhpcy5yZW5kZXJEZXNjcmlwdGlvbigpfQogICAgICA8L2Rpdj4KICAgIGB9YWRkVGFnKGIpe3RoaXMudmFsdWUuaW5jbHVkZXMoYil8fCh0aGlzLnZhbHVlPVsuLi50aGlzLnZhbHVlLGJdLHRoaXMuaW5wdXRWYWx1ZT0iIix0aGlzLmNoYW5nZVN1YmplY3QubmV4dCh0aGlzKSl9cmVtb3ZlVGFnKGIpe3RoaXMudmFsdWU9dGhpcy52YWx1ZS5maWx0ZXIodj0+diE9PWIpLHRoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMpfWdldFZhbHVlKCl7cmV0dXJuIHRoaXMudmFsdWV9c2V0VmFsdWUoYil7dGhpcy52YWx1ZT1ifWNvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSxEWih0aGlzLHUpfXN0YXRpY3tEWihhLHQpfX07cmV0dXJuIGM9YX0pKCl9KTt2YXIgRDBhLEwwYSxFMGE9ZygoKT0+e3BlKCk7SXQoKTtmbygpO0wwYT1pKCgpPT53KEQwYXx8KEQwYT1iYyhbYAogIDxkZWVzLWRlbW93cmFwcGVyPgogICAgPHN0eWxlPgogICAgICBgLGAKICAgIDwvc3R5bGU+CiAgICAKICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPWAsIiAuc3VidGl0bGU9IixgPgogICAgICAgIDxkZWVzLWlucHV0LXRhZ3MKICAgICAgICAgIC5sYWJlbD1gLGAKICAgICAgICAgIC5wbGFjZWhvbGRlcj1gLGAKICAgICAgICAgIC52YWx1ZT1gLGAKICAgICAgICAgIC5kZXNjcmlwdGlvbj1gLGAKICAgICAgICA+PC9kZWVzLWlucHV0LXRhZ3M+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT1gLCIgLnN1YnRpdGxlPSIsYD4KICAgICAgICA8ZGVlcy1pbnB1dC10YWdzCiAgICAgICAgICAubGFiZWw9YCxgCiAgICAgICAgICAucGxhY2Vob2xkZXI9YCxgCiAgICAgICAgICAuc3VnZ2VzdGlvbnM9YCxgCiAgICAgICAgICAudmFsdWU9YCxgCiAgICAgICAgICAuZGVzY3JpcHRpb249YCxgCiAgICAgICAgPjwvZGVlcy1pbnB1dC10YWdzPgogICAgICA8L2RlZXMtcGFuZWw+CgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9YCwiIC5zdWJ0aXRsZT0iLGA+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkaXYgY2xhc3M9ImdyaWQtbGF5b3V0Ij4KICAgICAgICAgICAgPGRlZXMtaW5wdXQtdGFncwogICAgICAgICAgICAgIC5sYWJlbD1gLGAKICAgICAgICAgICAgICAucGxhY2Vob2xkZXI9YCxgCiAgICAgICAgICAgICAgLm1heFRhZ3M9YCxgCiAgICAgICAgICAgICAgLnZhbHVlPWAsYAogICAgICAgICAgICAgIC5kZXNjcmlwdGlvbj1gLGAKICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC10YWdzPgoKICAgICAgICAgICAgPGRlZXMtaW5wdXQtdGFncwogICAgICAgICAgICAgIC5sYWJlbD1gLGAKICAgICAgICAgICAgICAucGxhY2Vob2xkZXI9YCxgCiAgICAgICAgICAgICAgLm1heFRhZ3M9YCxgCiAgICAgICAgICAgICAgLnN1Z2dlc3Rpb25zPWAsYAogICAgICAgICAgICAgIC52YWx1ZT1gLGAKICAgICAgICAgICAgICAuZGVzY3JpcHRpb249YCxgCiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtdGFncz4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2RlZXMtcGFuZWw+CgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9YCwiIC5zdWJ0aXRsZT0iLGA+CiAgICAgICAgPGRlZXMtaW5wdXQtdGFncwogICAgICAgICAgLmxhYmVsPWAsYAogICAgICAgICAgLnBsYWNlaG9sZGVyPWAsYAogICAgICAgICAgLnJlcXVpcmVkPWAsYAogICAgICAgICAgLmRlc2NyaXB0aW9uPWAsYAogICAgICAgID48L2RlZXMtaW5wdXQtdGFncz4KICAgICAgPC9kZWVzLXBhbmVsPgoKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPWAsIiAuc3VidGl0bGU9IixgPgogICAgICAgIDxkZWVzLWlucHV0LXRhZ3MKICAgICAgICAgIC5sYWJlbD1gLGAKICAgICAgICAgIC52YWx1ZT1gLGAKICAgICAgICAgIC5kaXNhYmxlZD1gLGAKICAgICAgICAgIC5kZXNjcmlwdGlvbj1gLGAKICAgICAgICA+PC9kZWVzLWlucHV0LXRhZ3M+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT1gLCIgLnN1YnRpdGxlPSIsYD4KICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dAogICAgICAgICAgICAubGFiZWw9YCxgCiAgICAgICAgICAgIC5wbGFjZWhvbGRlcj1gLGAKICAgICAgICAgICAgLnJlcXVpcmVkPWAsYAogICAgICAgICAgICAua2V5PWAsYAogICAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgCiAgICAgICAgICA8ZGl2IGNsYXNzPSJncmlkLWxheW91dCI+CiAgICAgICAgICAgIDxkZWVzLWlucHV0LXRhZ3MKICAgICAgICAgICAgICAubGFiZWw9YCxgCiAgICAgICAgICAgICAgLnBsYWNlaG9sZGVyPWAsYAogICAgICAgICAgICAgIC5yZXF1aXJlZD1gLGAKICAgICAgICAgICAgICAua2V5PWAsYAogICAgICAgICAgICAgIC5zdWdnZXN0aW9ucz1gLGAKICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC10YWdzPgogICAgICAgICAgICAKICAgICAgICAgICAgPGRlZXMtaW5wdXQtdGFncwogICAgICAgICAgICAgIC5sYWJlbD1gLGAKICAgICAgICAgICAgICAucGxhY2Vob2xkZXI9YCxgCiAgICAgICAgICAgICAgLmtleT1gLGAKICAgICAgICAgICAgICAubWF4VGFncz1gLGAKICAgICAgICAgICAgICAuc3VnZ2VzdGlvbnM9YCxgCiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtdGFncz4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0CiAgICAgICAgICAgIC5sYWJlbD1gLGAKICAgICAgICAgICAgLmlucHV0VHlwZT1gLGAKICAgICAgICAgICAgLnBsYWNlaG9sZGVyPWAsYAogICAgICAgICAgICAua2V5PWAsYAogICAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1mb3JtLXN1Ym1pdCAudGV4dD1gLGA+PC9kZWVzLWZvcm0tc3VibWl0PgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2RlZXMtcGFuZWw+CgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9YCwiIC5zdWJ0aXRsZT0iLGA+CiAgICAgICAgPGRlZXMtaW5wdXQtdGFncwogICAgICAgICAgaWQ9ImludGVyYWN0aXZlLXRhZ3MiCiAgICAgICAgICAubGFiZWw9YCxgCiAgICAgICAgICAucGxhY2Vob2xkZXI9YCxgCiAgICAgICAgICAuc3VnZ2VzdGlvbnM9YCxgCiAgICAgICAgICBAY2hhbmdlPWAsYAogICAgICAgID48L2RlZXMtaW5wdXQtdGFncz4KICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJ0YWctcHJldmlldyIgaWQ9InRhZ3MtcHJldmlldyI+CiAgICAgICAgICA8ZW0gc3R5bGU9ImNvbG9yOiAjOTk5OyI+Tm8gdGFncyBhZGRlZCB5ZXQuLi48L2VtPgogICAgICAgIDwvZGl2PgogICAgICAgIAogICAgICAgIDxkaXYgY2xhc3M9Im91dHB1dC1wcmV2aWV3IiBpZD0idGFncy1qc29uIj4KICAgICAgICAgIDxlbT5KU09OIG91dHB1dCB3aWxsIGFwcGVhciBoZXJlLi4uPC9lbT4KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICA8c2NyaXB0PgogICAgICAgICAgLy8gVXBkYXRlIEpTT04gcHJldmlldwogICAgICAgICAgY29uc3QgdGFnc0lucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2ludGVyYWN0aXZlLXRhZ3MnKTsKICAgICAgICAgIHRhZ3NJbnB1dD8uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKGUpID0+IHsKICAgICAgICAgICAgY29uc3QganNvblByZXZpZXcgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjdGFncy1qc29uJyk7CiAgICAgICAgICAgIGlmIChqc29uUHJldmlldykgewogICAgICAgICAgICAgIGpzb25QcmV2aWV3LnRleHRDb250ZW50ID0gSlNPTi5zdHJpbmdpZnkoZS5kZXRhaWwudmFsdWUsIG51bGwsIDIpOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICA8XC9zY3JpcHQ+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGl2PgogIDwvZGVlcy1kZW1vd3JhcHBlcj4KYF0pKSxKYAogICAgICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgIGdhcDogMjRweDsKICAgICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgICBtYXgtd2lkdGg6IDEyMDBweDsKICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBkZWVzLXBhbmVsIHsKICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGRlZXMtcGFuZWw6bGFzdC1jaGlsZCB7CiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuZ3JpZC1sYXlvdXQgewogICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjsKICAgICAgICAgIGdhcDogMTZweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgICAgICAgICAuZ3JpZC1sYXlvdXQgewogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLm91dHB1dC1wcmV2aWV3IHsKICAgICAgICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICAgICAgYmFja2dyb3VuZDogI2YzZjRmNjsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICAgIGNvbG9yOiAjMzc0MTUxOwogICAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsOwogICAgICAgICAgbWF4LWhlaWdodDogMjAwcHg7CiAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7CiAgICAgICAgICAub3V0cHV0LXByZXZpZXcgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMmMyYzJjOwogICAgICAgICAgICBjb2xvcjogI2U0ZTRlNzsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnRhZy1wcmV2aWV3IHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgICBnYXA6IDhweDsKICAgICAgICAgIHBhZGRpbmc6IDEycHg7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAjZjlmYWZiOwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgICAgbWluLWhlaWdodDogNDBweDsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKICAgICAgICAgIC50YWctcHJldmlldyB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMxZjI5Mzc7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC50YWctcHJldmlldy1pdGVtIHsKICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICAgIHBhZGRpbmc6IDRweCAxMnB4OwogICAgICAgICAgYmFja2dyb3VuZDogI2UwZTdmZjsKICAgICAgICAgIGNvbG9yOiAjNDMzOGNhOwogICAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewogICAgICAgICAgLnRhZy1wcmV2aWV3LWl0ZW0gewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMzEyZTgxOwogICAgICAgICAgICBjb2xvcjogI2M3ZDJmZTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIGAsIjEuIEJhc2ljIFRhZ3MgSW5wdXQiLCJTaW1wbGUgdGFnIGlucHV0IHdpdGggY29tbW9uIHByb2dyYW1taW5nIGxhbmd1YWdlcyIsIlByb2dyYW1taW5nIExhbmd1YWdlcyIsIkFkZCBhIGxhbmd1YWdlLi4uIixbIkphdmFTY3JpcHQiLCJUeXBlU2NyaXB0IiwiUHl0aG9uIiwiR28iXSwiUHJlc3MgRW50ZXIgb3IgY29tbWEgdG8gYWRkIHRhZ3MiLCIyLiBUYWdzIHdpdGggU3VnZ2VzdGlvbnMiLCJBdXRvLWNvbXBsZXRlIHN1Z2dlc3Rpb25zIGZvciBmYXN0ZXIgaW5wdXQiLCJUZWNoIFN0YWNrIiwiVHlwZSB0byBzZWUgc3VnZ2VzdGlvbnMuLi4iLFsiUmVhY3QiLCJWdWUiLCJBbmd1bGFyIiwiU3ZlbHRlIiwiTGl0IiwiTmV4dC5qcyIsIk51eHQiLCJTdmVsdGVLaXQiLCJOb2RlLmpzIiwiRGVubyIsIkJ1biIsIkV4cHJlc3MiLCJGYXN0aWZ5IiwiTmVzdC5qcyIsIktvYSIsIk1vbmdvREIiLCJQb3N0Z3JlU1FMIiwiUmVkaXMiLCJNeVNRTCIsIlNRTGl0ZSIsIkNhc3NhbmRyYSIsIkRvY2tlciIsIkt1YmVybmV0ZXMiLCJBV1MiLCJBenVyZSIsIkdDUCIsIlZlcmNlbCIsIk5ldGxpZnkiXSxbIlJlYWN0IiwiTm9kZS5qcyIsIlBvc3RncmVTUUwiLCJEb2NrZXIiXSwiU3RhcnQgdHlwaW5nIHRvIHNlZSBzdWdnZXN0aW9ucyBmcm9tIHBvcHVsYXIgdGVjaG5vbG9naWVzIiwiMy4gTGltaXRlZCBUYWdzIiwiUmVzdHJpY3QgdGhlIG51bWJlciBvZiB0YWdzIHVzZXJzIGNhbiBhZGQiLCJUb3AgMyBTa2lsbHMiLCJBZGQgdXAgdG8gMyBza2lsbHMuLi4iLDMsWyJEZXNpZ24iLCJEZXZlbG9wbWVudCJdLCJNYXhpbXVtIDMgdGFncyBhbGxvd2VkIiwiQ2F0ZWdvcmllcyAoTWF4IDUpIiwiU2VsZWN0IGNhdGVnb3JpZXMuLi4iLDUsWyJCbG9nIiwiVHV0b3JpYWwiLCJOZXdzIiwiUmV2aWV3IiwiR3VpZGUiLCJDYXNlIFN0dWR5IiwiSW50ZXJ2aWV3Il0sWyJUdXRvcmlhbCIsIkd1aWRlIl0sIkNob29zZSB1cCB0byA1IGNhdGVnb3JpZXMiLCI0LiBSZXF1aXJlZCAmIFZhbGlkYXRpb24iLCJUYWdzIGlucHV0IHdpdGggdmFsaWRhdGlvbiByZXF1aXJlbWVudHMiLCJQcm9qZWN0IFRhZ3MiLCJBZGQgYXQgbGVhc3Qgb25lIHRhZy4uLiIsITAsIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQgLSBhZGQgYXQgbGVhc3Qgb25lIHRhZyIsIjUuIERpc2FibGVkIFN0YXRlIiwiUmVhZC1vbmx5IHRhZ3MgZGlzcGxheSIsIlN5c3RlbSBUYWdzIixbIlN5c3RlbSIsIlByb3RlY3RlZCIsIlJlYWQtT25seSIsIkFyY2hpdmUiXSwhMCwiVGhlc2UgdGFncyBjYW5ub3QgYmUgbW9kaWZpZWQiLCI2LiBGb3JtIEludGVncmF0aW9uIiwiVGFncyBpbnB1dCB3b3JraW5nIHdpdGhpbiBhIGZvcm0gY29udGV4dCIsIlByb2plY3QgTmFtZSIsIk15IEF3ZXNvbWUgUHJvamVjdCIsITAsIm5hbWUiLCJUZWNobm9sb2dpZXMgVXNlZCIsIkFkZCB0ZWNobm9sb2dpZXMuLi4iLCEwLCJ0ZWNobm9sb2dpZXMiLFsiVHlwZVNjcmlwdCIsIkphdmFTY3JpcHQiLCJQeXRob24iLCJHbyIsIlJ1c3QiLCJSZWFjdCIsIlZ1ZSIsIkFuZ3VsYXIiLCJTdmVsdGUiLCJOb2RlLmpzIiwiRGVubyIsIkV4cHJlc3MiLCJGYXN0QVBJIl0sIlByb2plY3QgVGFncyIsIkFkZCBkZXNjcmlwdGl2ZSB0YWdzLi4uIiwidGFncyIsMTAsWyJmcm9udGVuZCIsImJhY2tlbmQiLCJmdWxsc3RhY2siLCJtb2JpbGUiLCJkZXNrdG9wIiwid2ViIiwiYXBpIiwiZGF0YWJhc2UiLCJkZXZvcHMiLCJ1aS91eCIsIm9wZW5zb3VyY2UiLCJzYWFzIiwiZW50ZXJwcmlzZSIsInN0YXJ0dXAiXSwiRGVzY3JpcHRpb24iLCJ0ZXh0YXJlYSIsIkRlc2NyaWJlIHlvdXIgcHJvamVjdC4uLiIsImRlc2NyaXB0aW9uIiwiQ3JlYXRlIFByb2plY3QiLCI3LiBJbnRlcmFjdGl2ZSBEZW1vIiwiQWRkIHRhZ3MgYW5kIHNlZSB0aGVtIGNvbGxlY3RlZCBpbiByZWFsLXRpbWUiLCJZb3VyIEludGVyZXN0cyIsIlR5cGUgeW91ciBpbnRlcmVzdHMuLi4iLFsiTXVzaWMiLCJNb3ZpZXMiLCJCb29rcyIsIlRyYXZlbCIsIlBob3RvZ3JhcGh5IiwiQ29va2luZyIsIkdhbWluZyIsIlNwb3J0cyIsIkFydCIsIlRlY2hub2xvZ3kiLCJGYXNoaW9uIiwiRml0bmVzcyIsIk5hdHVyZSIsIlNjaWVuY2UiLCJIaXN0b3J5Il0scz0+e2xldCBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiN0YWdzLXByZXZpZXciKSx0PXMuZGV0YWlsLnZhbHVlO2UmJih0Lmxlbmd0aD09PTA/ZS5pbm5lckhUTUw9JzxlbSBzdHlsZT0iY29sb3I6ICM5OTk7Ij5ObyB0YWdzIGFkZGVkIHlldC4uLjwvZW0+JzplLmlubmVySFRNTD10Lm1hcChhPT5gPHNwYW4gY2xhc3M9InRhZy1wcmV2aWV3LWl0ZW0iPiR7YX08L3NwYW4+YCkuam9pbigiIikpfSksImRlbW9GdW5jIil9KTt2YXIgYXUsem8sTG5lLGF0dD1nKCgpPT57cGUoKTt6aSgpO1VhKCk7RTBhKCk7cHQoKTthdT1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sem89ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LExuZT0oKCk9PntsZXQgcz1bbmUoImRlZXMtaW5wdXQtdGFncyIpXSxlLHQ9W10sYSxyPU90LG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdLEgsaz1bXSxTPVtdO3ZhciBJPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzSW5wdXRUYWdzIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IFA9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpBcnJheX0pXSxwPVtMKHt0eXBlOlN0cmluZ30pXSxjPVtMKHt0eXBlOk51bWJlcn0pXSx4PVtMKHt0eXBlOkFycmF5fSldLHk9W1koKV0sTj1bWSgpXSxPPVtZKCldLEg9W0woe3R5cGU6U3RyaW5nfSldLGF1KHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidmFsdWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUj0+InZhbHVlImluIFIsImhhcyIpLGdldDppKFI9PlIudmFsdWUsImdldCIpLHNldDppKChSLEspPT57Ui52YWx1ZT1LfSwic2V0Iil9LG1ldGFkYXRhOlB9LG8sbCksYXUodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJwbGFjZWhvbGRlciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShSPT4icGxhY2Vob2xkZXIiaW4gUiwiaGFzIiksZ2V0OmkoUj0+Ui5wbGFjZWhvbGRlciwiZ2V0Iiksc2V0OmkoKFIsSyk9PntSLnBsYWNlaG9sZGVyPUt9LCJzZXQiKX0sbWV0YWRhdGE6UH0sZCx1KSxhdSh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1heFRhZ3MiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUj0+Im1heFRhZ3MiaW4gUiwiaGFzIiksZ2V0OmkoUj0+Ui5tYXhUYWdzLCJnZXQiKSxzZXQ6aSgoUixLKT0+e1IubWF4VGFncz1LfSwic2V0Iil9LG1ldGFkYXRhOlB9LGIsdiksYXUodGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzdWdnZXN0aW9ucyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShSPT4ic3VnZ2VzdGlvbnMiaW4gUiwiaGFzIiksZ2V0OmkoUj0+Ui5zdWdnZXN0aW9ucywiZ2V0Iiksc2V0OmkoKFIsSyk9PntSLnN1Z2dlc3Rpb25zPUt9LCJzZXQiKX0sbWV0YWRhdGE6UH0sbSxmKSxhdSh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImlucHV0VmFsdWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUj0+ImlucHV0VmFsdWUiaW4gUiwiaGFzIiksZ2V0OmkoUj0+Ui5pbnB1dFZhbHVlLCJnZXQiKSxzZXQ6aSgoUixLKT0+e1IuaW5wdXRWYWx1ZT1LfSwic2V0Iil9LG1ldGFkYXRhOlB9LE0seiksYXUodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93U3VnZ2VzdGlvbnMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUj0+InNob3dTdWdnZXN0aW9ucyJpbiBSLCJoYXMiKSxnZXQ6aShSPT5SLnNob3dTdWdnZXN0aW9ucywiZ2V0Iiksc2V0OmkoKFIsSyk9PntSLnNob3dTdWdnZXN0aW9ucz1LfSwic2V0Iil9LG1ldGFkYXRhOlB9LEMsXyksYXUodGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJoaWdobGlnaHRlZFN1Z2dlc3Rpb25JbmRleCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShSPT4iaGlnaGxpZ2h0ZWRTdWdnZXN0aW9uSW5kZXgiaW4gUiwiaGFzIiksZ2V0OmkoUj0+Ui5oaWdobGlnaHRlZFN1Z2dlc3Rpb25JbmRleCwiZ2V0Iiksc2V0OmkoKFIsSyk9PntSLmhpZ2hsaWdodGVkU3VnZ2VzdGlvbkluZGV4PUt9LCJzZXQiKX0sbWV0YWRhdGE6UH0sJCxFKSxhdSh0aGlzLG51bGwsSCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InZhbGlkYXRpb25UZXh0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFI9PiJ2YWxpZGF0aW9uVGV4dCJpbiBSLCJoYXMiKSxnZXQ6aShSPT5SLnZhbGlkYXRpb25UZXh0LCJnZXQiKSxzZXQ6aSgoUixLKT0+e1IudmFsaWRhdGlvblRleHQ9S30sInNldCIpfSxtZXRhZGF0YTpQfSxrLFMpLGF1KG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOlB9LG51bGwsdCksST1hPWUudmFsdWUsUCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpQfSl9c3RhdGljIGRlbW89TDBhO3N0YXRpYyBkZW1vR3JvdXBzPVsiSW5wdXQiXTsjZT16byh0aGlzLG8sW10pO2dldCB2YWx1ZSgpe3JldHVybiB0aGlzLiNlfXNldCB2YWx1ZShQKXt0aGlzLiNlPVB9I3Q9KHpvKHRoaXMsbCksem8odGhpcyxkLCJBZGQgdGFncy4uLiIpKTtnZXQgcGxhY2Vob2xkZXIoKXtyZXR1cm4gdGhpcy4jdH1zZXQgcGxhY2Vob2xkZXIoUCl7dGhpcy4jdD1QfSNhPSh6byh0aGlzLHUpLHpvKHRoaXMsYiwwKSk7Z2V0IG1heFRhZ3MoKXtyZXR1cm4gdGhpcy4jYX1zZXQgbWF4VGFncyhQKXt0aGlzLiNhPVB9I3M9KHpvKHRoaXMsdiksem8odGhpcyxtLFtdKSk7Z2V0IHN1Z2dlc3Rpb25zKCl7cmV0dXJuIHRoaXMuI3N9c2V0IHN1Z2dlc3Rpb25zKFApe3RoaXMuI3M9UH0jaT0oem8odGhpcyxmKSx6byh0aGlzLE0sIiIpKTtnZXQgaW5wdXRWYWx1ZSgpe3JldHVybiB0aGlzLiNpfXNldCBpbnB1dFZhbHVlKFApe3RoaXMuI2k9UH0jcj0oem8odGhpcyx6KSx6byh0aGlzLEMsITEpKTtnZXQgc2hvd1N1Z2dlc3Rpb25zKCl7cmV0dXJuIHRoaXMuI3J9c2V0IHNob3dTdWdnZXN0aW9ucyhQKXt0aGlzLiNyPVB9I289KHpvKHRoaXMsXyksem8odGhpcywkLC0xKSk7Z2V0IGhpZ2hsaWdodGVkU3VnZ2VzdGlvbkluZGV4KCl7cmV0dXJuIHRoaXMuI299c2V0IGhpZ2hsaWdodGVkU3VnZ2VzdGlvbkluZGV4KFApe3RoaXMuI289UH0jbj0oem8odGhpcyxFKSx6byh0aGlzLGssIiIpKTtnZXQgdmFsaWRhdGlvblRleHQoKXtyZXR1cm4gdGhpcy4jbn1zZXQgdmFsaWRhdGlvblRleHQoUCl7dGhpcy4jbj1QfXN0YXRpYyBzdHlsZXM9W0hlLC4uLk90LmJhc2VTdHlsZXMsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCAnUm9ib3RvJywgc2Fucy1zZXJpZjsKICAgICAgfQoKICAgICAgLmlucHV0LXdyYXBwZXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAudGFncy1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgcGFkZGluZzogNnB4IDEwcHg7CiAgICAgICAgbWluLWhlaWdodDogNDBweDsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDAgMCUgODkuOCUpIiwiaHNsKDAgMCUgMTQuOSUpIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBjdXJzb3I6IHRleHQ7CiAgICAgIH0KCiAgICAgIC50YWdzLWNvbnRhaW5lcjpob3Zlcjpub3QoLmRpc2FibGVkKSB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNzkuOCUpIiwiaHNsKDAgMCUgMjAuOSUpIil9OwogICAgICB9CgogICAgICAudGFncy1jb250YWluZXI6Zm9jdXMtd2l0aGluIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUpIiwiaHNsKDIxNy4yIDkxLjIlIDU5LjglKSIpfTsKICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggJHtoLmJkVGhlbWUoImhzbCgyMjIuMiA0Ny40JSA1MS4yJSAvIDAuMSkiLCJoc2woMjE3LjIgOTEuMiUgNTkuOCUgLyAwLjEpIil9OwogICAgICB9CgogICAgICAudGFncy1jb250YWluZXIuZGlzYWJsZWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5NS4xJSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgODkuOCUpIiwiaHNsKDAgMCUgMTQuOSUpIil9OwogICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICB9CgogICAgICAudGFnIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNHB4OwogICAgICAgIHBhZGRpbmc6IDJweCA4cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTUgMjAuMiUgNjUuMSUgLyAwLjIpIiwiaHNsKDIxNSAyMC4yJSAzNS4xJSAvIDAuMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjMgMjUlIDI2LjclKSIsImhzbCgyMTcuOSAxMC42JSA3NC45JSkiKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgyMTUgMjAuMiUgNjUuMSUgLyAwLjMpIiwiaHNsKDIxNSAyMC4yJSAzNS4xJSAvIDAuMykiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOHB4OwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICAgIGFuaW1hdGlvbjogdGFnQXBwZWFyIDAuMTVzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMgdGFnQXBwZWFyIHsKICAgICAgICBmcm9tIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45NSk7CiAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIH0KICAgICAgICB0byB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC50YWctcmVtb3ZlIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgd2lkdGg6IDE0cHg7CiAgICAgICAgaGVpZ2h0OiAxNHB4OwogICAgICAgIG1hcmdpbi1sZWZ0OiAycHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuMyAyNSUgNDYuNyUpIiwiaHNsKDIxNy45IDEwLjYlIDU0LjklKSIpfTsKICAgICAgfQoKICAgICAgLnRhZy1yZW1vdmU6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAwJSAvIDAuMDgpIiwiaHNsKDAgMCUgMTAwJSAvIDAuMDgpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS4zIDI1JSAyNi43JSkiLCJoc2woMjE3LjkgMTAuNiUgNzQuOSUpIil9OwogICAgICB9CgogICAgICAudGFnLXJlbW92ZSBkZWVzLWljb24gewogICAgICAgIHdpZHRoOiAxMHB4OwogICAgICAgIGhlaWdodDogMTBweDsKICAgICAgfQoKICAgICAgLnRhZy1pbnB1dCB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBtaW4td2lkdGg6IDEyMHB4OwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDklKSIsImhzbCgwIDAlIDk1JSkiKX07CiAgICAgICAgcGFkZGluZzogMnB4IDRweDsKICAgICAgICBsaW5lLWhlaWdodDogMjBweDsKICAgICAgfQoKICAgICAgLnRhZy1pbnB1dDo6cGxhY2Vob2xkZXIgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNjMuOSUpIiwiaHNsKDAgMCUgNDUuMSUpIil9OwogICAgICB9CgogICAgICAudGFnLWlucHV0OmRpc2FibGVkIHsKICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICB9CgogICAgICAvKiBTdWdnZXN0aW9ucyBkcm9wZG93biAqLwogICAgICAuc3VnZ2VzdGlvbnMtY29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIC5zdWdnZXN0aW9ucy1kcm9wZG93biB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMTAwJTsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIG1hcmdpbi10b3A6IDRweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTAwJSkiLCJoc2woMCAwJSAzLjklKSIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDAgMCUgODkuOCUpIiwiaHNsKDAgMCUgMTQuOSUpIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBib3gtc2hhZG93OiAwIDRweCA2cHggLTFweCBoc2woMCAwJSAwJSAvIDAuMSksIDAgMnB4IDRweCAtMnB4IGhzbCgwIDAlIDAlIC8gMC4xKTsKICAgICAgICBtYXgtaGVpZ2h0OiAyMDBweDsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIHotaW5kZXg6IDEwMDA7CiAgICAgIH0KCiAgICAgIC5zdWdnZXN0aW9uIHsKICAgICAgICBwYWRkaW5nOiA2cHggMTBweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTUlKSIsImhzbCgwIDAlIDkwJSkiKX07CiAgICAgIH0KCiAgICAgIC5zdWdnZXN0aW9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTUuMSUpIiwiaHNsKDAgMCUgMTQuOSUpIil9OwogICAgICB9CgogICAgICAuc3VnZ2VzdGlvbi5oaWdobGlnaHRlZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgNDAlIDk2LjElKSIsImhzbCgyMTUgMjAuMiUgMTYuOCUpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOSUpIiwiaHNsKDAgMCUgOTUlKSIpfTsKICAgICAgfQoKICAgICAgLyogVmFsaWRhdGlvbiBzdHlsZXMgKi8KICAgICAgLnZhbGlkYXRpb24tbWVzc2FnZSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCA3Mi4yJSA1MC42JSkiLCJoc2woMCA2Mi44JSAzMC42JSkiKX07CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIG1hcmdpbi10b3A6IDZweDsKICAgICAgICBsaW5lLWhlaWdodDogMS41OwogICAgICB9CgogICAgICAvKiBTY3JvbGxiYXIgc3R5bGluZyAqLwogICAgICAuc3VnZ2VzdGlvbnMtZHJvcGRvd246Oi13ZWJraXQtc2Nyb2xsYmFyIHsKICAgICAgICB3aWR0aDogOHB4OwogICAgICB9CgogICAgICAuc3VnZ2VzdGlvbnMtZHJvcGRvd246Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgfQoKICAgICAgLnN1Z2dlc3Rpb25zLWRyb3Bkb3duOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDg5LjglKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgIH0KCiAgICAgIC5zdWdnZXN0aW9ucy1kcm9wZG93bjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA3OS44JSkiLCJoc2woMCAwJSAyMC45JSkiKX07CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe2xldCBQPXRoaXMuc3VnZ2VzdGlvbnMuZmlsdGVyKFI9PiF0aGlzLnZhbHVlLmluY2x1ZGVzKFIpJiZSLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5pbnB1dFZhbHVlLnRvTG93ZXJDYXNlKCkpKTtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iaW5wdXQtd3JhcHBlciI+CiAgICAgICAgJHt0aGlzLmxhYmVsP3dgPGRlZXMtbGFiZWwgLmxhYmVsPSR7dGhpcy5sYWJlbH0gLnJlcXVpcmVkPSR7dGhpcy5yZXF1aXJlZH0+PC9kZWVzLWxhYmVsPmA6IiJ9CiAgICAgICAgCiAgICAgICAgPGRpdiBjbGFzcz0ic3VnZ2VzdGlvbnMtY29udGFpbmVyIj4KICAgICAgICAgIDxkaXYKICAgICAgICAgICAgY2xhc3M9InRhZ3MtY29udGFpbmVyICR7dGhpcy5kaXNhYmxlZD8iZGlzYWJsZWQiOiIifSIKICAgICAgICAgICAgQGNsaWNrPSR7dGhpcy5oYW5kbGVDb250YWluZXJDbGlja30KICAgICAgICAgID4KICAgICAgICAgICAgJHt0aGlzLnZhbHVlLm1hcChSPT53YAogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhZyI+CiAgICAgICAgICAgICAgICA8c3Bhbj4ke1J9PC9zcGFuPgogICAgICAgICAgICAgICAgJHt0aGlzLmRpc2FibGVkPyIiOndgCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhZy1yZW1vdmUiIEBjbGljaz0ke0s9PnRoaXMucmVtb3ZlVGFnKEssUil9PgogICAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHsibHVjaWRlOngifT48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICBgfQogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICBgKX0KICAgICAgICAgICAgCiAgICAgICAgICAgICR7IXRoaXMuZGlzYWJsZWQmJighdGhpcy5tYXhUYWdzfHx0aGlzLnZhbHVlLmxlbmd0aDx0aGlzLm1heFRhZ3MpP3dgCiAgICAgICAgICAgICAgPGlucHV0CiAgICAgICAgICAgICAgICB0eXBlPSJ0ZXh0IgogICAgICAgICAgICAgICAgY2xhc3M9InRhZy1pbnB1dCIKICAgICAgICAgICAgICAgIC5wbGFjZWhvbGRlcj0ke3RoaXMucGxhY2Vob2xkZXJ9CiAgICAgICAgICAgICAgICAudmFsdWU9JHt0aGlzLmlucHV0VmFsdWV9CiAgICAgICAgICAgICAgICBAaW5wdXQ9JHt0aGlzLmhhbmRsZUlucHV0fQogICAgICAgICAgICAgICAgQGtleWRvd249JHt0aGlzLmhhbmRsZUtleURvd259CiAgICAgICAgICAgICAgICBAZm9jdXM9JHt0aGlzLmhhbmRsZUZvY3VzfQogICAgICAgICAgICAgICAgQGJsdXI9JHt0aGlzLmhhbmRsZUJsdXJ9CiAgICAgICAgICAgICAgICA/ZGlzYWJsZWQ9JHt0aGlzLmRpc2FibGVkfQogICAgICAgICAgICAgIC8+CiAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAke3RoaXMuc2hvd1N1Z2dlc3Rpb25zJiZQLmxlbmd0aD4wP3dgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Z2dlc3Rpb25zLWRyb3Bkb3duIj4KICAgICAgICAgICAgICAke1AubWFwKChSLEspPT53YAogICAgICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICBjbGFzcz0ic3VnZ2VzdGlvbiAke0s9PT10aGlzLmhpZ2hsaWdodGVkU3VnZ2VzdGlvbkluZGV4PyJoaWdobGlnaHRlZCI6IiJ9IgogICAgICAgICAgICAgICAgICBAbW91c2Vkb3duPSR7Vj0+e1YucHJldmVudERlZmF1bHQoKSx0aGlzLmFkZFRhZyhSKX19CiAgICAgICAgICAgICAgICAgIEBtb3VzZWVudGVyPSR7KCk9PnRoaXMuaGlnaGxpZ2h0ZWRTdWdnZXN0aW9uSW5kZXg9S30KICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgJHtSfQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgYCl9CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYDoiIn0KICAgICAgICA8L2Rpdj4KCiAgICAgICAgJHt0aGlzLnZhbGlkYXRpb25UZXh0P3dgCiAgICAgICAgICA8ZGl2IGNsYXNzPSJ2YWxpZGF0aW9uLW1lc3NhZ2UiPiR7dGhpcy52YWxpZGF0aW9uVGV4dH08L2Rpdj4KICAgICAgICBgOiIifQogICAgICAgIAogICAgICAgICR7dGhpcy5yZW5kZXJEZXNjcmlwdGlvbigpfQogICAgICA8L2Rpdj4KICAgIGB9aGFuZGxlQ29udGFpbmVyQ2xpY2soUCl7aWYodGhpcy5kaXNhYmxlZClyZXR1cm47bGV0IFI9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIudGFnLWlucHV0Iik7UiYmUC50YXJnZXQhPT1SJiZSLmZvY3VzKCl9aGFuZGxlSW5wdXQoUCl7bGV0IFI9UC50YXJnZXQ7aWYodGhpcy5pbnB1dFZhbHVlPVIudmFsdWUsdGhpcy5pbnB1dFZhbHVlLmluY2x1ZGVzKCIsIil8fHRoaXMuaW5wdXRWYWx1ZS5pbmNsdWRlcygiOyIpKXtsZXQgSz10aGlzLmlucHV0VmFsdWUucmVwbGFjZSgvWyw7XS9nLCIiKS50cmltKCk7SyYmdGhpcy5hZGRUYWcoSyl9fWhhbmRsZUtleURvd24oUCl7bGV0IFI9UC50YXJnZXQ7aWYoUC5rZXk9PT0iRW50ZXIiKWlmKFAucHJldmVudERlZmF1bHQoKSx0aGlzLmhpZ2hsaWdodGVkU3VnZ2VzdGlvbkluZGV4Pj0wJiZ0aGlzLnNob3dTdWdnZXN0aW9ucyl7bGV0IEs9dGhpcy5zdWdnZXN0aW9ucy5maWx0ZXIoVj0+IXRoaXMudmFsdWUuaW5jbHVkZXMoVikmJlYudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLmlucHV0VmFsdWUudG9Mb3dlckNhc2UoKSkpO0tbdGhpcy5oaWdobGlnaHRlZFN1Z2dlc3Rpb25JbmRleF0mJnRoaXMuYWRkVGFnKEtbdGhpcy5oaWdobGlnaHRlZFN1Z2dlc3Rpb25JbmRleF0pfWVsc2UgdGhpcy5pbnB1dFZhbHVlLnRyaW0oKSYmdGhpcy5hZGRUYWcodGhpcy5pbnB1dFZhbHVlLnRyaW0oKSk7ZWxzZSBpZihQLmtleT09PSJCYWNrc3BhY2UiJiYhdGhpcy5pbnB1dFZhbHVlJiZ0aGlzLnZhbHVlLmxlbmd0aD4wKXRoaXMucmVtb3ZlVGFnKFAsdGhpcy52YWx1ZVt0aGlzLnZhbHVlLmxlbmd0aC0xXSk7ZWxzZSBpZihQLmtleT09PSJBcnJvd0Rvd24iJiZ0aGlzLnNob3dTdWdnZXN0aW9ucyl7UC5wcmV2ZW50RGVmYXVsdCgpO2xldCBLPXRoaXMuc3VnZ2VzdGlvbnMuZmlsdGVyKFY9PiF0aGlzLnZhbHVlLmluY2x1ZGVzKFYpJiZWLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5pbnB1dFZhbHVlLnRvTG93ZXJDYXNlKCkpKS5sZW5ndGg7dGhpcy5oaWdobGlnaHRlZFN1Z2dlc3Rpb25JbmRleD1NYXRoLm1pbih0aGlzLmhpZ2hsaWdodGVkU3VnZ2VzdGlvbkluZGV4KzEsSy0xKX1lbHNlIFAua2V5PT09IkFycm93VXAiJiZ0aGlzLnNob3dTdWdnZXN0aW9ucz8oUC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuaGlnaGxpZ2h0ZWRTdWdnZXN0aW9uSW5kZXg9TWF0aC5tYXgodGhpcy5oaWdobGlnaHRlZFN1Z2dlc3Rpb25JbmRleC0xLDApKTpQLmtleT09PSJFc2NhcGUiJiYodGhpcy5zaG93U3VnZ2VzdGlvbnM9ITEsdGhpcy5oaWdobGlnaHRlZFN1Z2dlc3Rpb25JbmRleD0tMSl9aGFuZGxlRm9jdXMoKXt0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aD4wJiYodGhpcy5zaG93U3VnZ2VzdGlvbnM9ITApfWhhbmRsZUJsdXIoKXtzZXRUaW1lb3V0KCgpPT57dGhpcy5zaG93U3VnZ2VzdGlvbnM9ITEsdGhpcy5oaWdobGlnaHRlZFN1Z2dlc3Rpb25JbmRleD0tMX0sMjAwKX1hZGRUYWcoUCl7aWYoIVB8fHRoaXMudmFsdWUuaW5jbHVkZXMoUCl8fHRoaXMubWF4VGFncyYmdGhpcy52YWx1ZS5sZW5ndGg+PXRoaXMubWF4VGFncylyZXR1cm47dGhpcy52YWx1ZT1bLi4udGhpcy52YWx1ZSxQXSx0aGlzLmlucHV0VmFsdWU9IiIsdGhpcy5zaG93U3VnZ2VzdGlvbnM9ITEsdGhpcy5oaWdobGlnaHRlZFN1Z2dlc3Rpb25JbmRleD0tMTtsZXQgUj10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi50YWctaW5wdXQiKTtSJiYoUi52YWx1ZT0iIiksdGhpcy5lbWl0Q2hhbmdlKCl9cmVtb3ZlVGFnKFAsUil7UC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLnZhbHVlPXRoaXMudmFsdWUuZmlsdGVyKEs9PkshPT1SKSx0aGlzLmVtaXRDaGFuZ2UoKX1lbWl0Q2hhbmdlKCl7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY2hhbmdlIix7ZGV0YWlsOnt2YWx1ZTp0aGlzLnZhbHVlfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpLHRoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMpfWdldFZhbHVlKCl7cmV0dXJuIHRoaXMudmFsdWV9c2V0VmFsdWUoUCl7dGhpcy52YWx1ZT1QfHxbXX1hc3luYyB2YWxpZGF0ZSgpe3JldHVybiB0aGlzLnJlcXVpcmVkJiYoIXRoaXMudmFsdWV8fHRoaXMudmFsdWUubGVuZ3RoPT09MCk/KHRoaXMudmFsaWRhdGlvblRleHQ9IkF0IGxlYXN0IG9uZSB0YWcgaXMgcmVxdWlyZWQiLCExKToodGhpcy52YWxpZGF0aW9uVGV4dD0iIiwhMCl9Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHpvKHRoaXMsUyl9c3RhdGlje3pvKGEsdCl9fTtyZXR1cm4gST1hfSkoKX0pO3ZhciBQMGEsSTBhPWcoKCk9PntwZSgpO0l0KCk7Zm8oKTt1digpO3hoKCk7QTgoKTtQMGE9aSgoKT0+d2AKICA8ZGVlcy1kZW1vd3JhcHBlcj4KICAgIDxzdHlsZT4KICAgICAgJHtKYAogICAgICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgIGdhcDogMjRweDsKICAgICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgICBtYXgtd2lkdGg6IDEyMDBweDsKICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBkZWVzLXBhbmVsIHsKICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGRlZXMtcGFuZWw6bGFzdC1jaGlsZCB7CiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuZ3JpZC1sYXlvdXQgewogICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjsKICAgICAgICAgIGdhcDogMTZweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgICAgICAgICAuZ3JpZC1sYXlvdXQgewogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLm91dHB1dC1wcmV2aWV3IHsKICAgICAgICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICAgICAgYmFja2dyb3VuZDogI2YzZjRmNjsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICAgIGNvbG9yOiAjMzc0MTUxOwogICAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsOwogICAgICAgICAgbWF4LWhlaWdodDogMjAwcHg7CiAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7CiAgICAgICAgICAub3V0cHV0LXByZXZpZXcgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMmMyYzJjOwogICAgICAgICAgICBjb2xvcjogI2U0ZTRlNzsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmZlYXR1cmUtbm90ZSB7CiAgICAgICAgICBtYXJnaW4tdG9wOiAxMnB4OwogICAgICAgICAgcGFkZGluZzogMTJweDsKICAgICAgICAgIGJhY2tncm91bmQ6ICNlZmY2ZmY7CiAgICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkICMzYjgyZjY7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgICBjb2xvcjogIzFlNDBhZjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewogICAgICAgICAgLmZlYXR1cmUtbm90ZSB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMxZTNhNWY7CiAgICAgICAgICAgIGNvbG9yOiAjOTNjNWZkOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgYH0KICAgIDwvc3R5bGU+CiAgICAKICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjEuIEJhc2ljIExpc3QgSW5wdXQifSAuc3VidGl0bGU9JHsiU2ltcGxlIGxpc3QgbWFuYWdlbWVudCB3aXRoIGFkZCwgZWRpdCwgYW5kIGRlbGV0ZSJ9PgogICAgICAgIDxkZWVzLWlucHV0LWxpc3QKICAgICAgICAgIC5sYWJlbD0keyJTaG9wcGluZyBMaXN0In0KICAgICAgICAgIC5wbGFjZWhvbGRlcj0keyJBZGQgaXRlbSB0byB5b3VyIGxpc3QuLi4ifQogICAgICAgICAgLnZhbHVlPSR7WyJNaWxrIiwiQnJlYWQiLCJFZ2dzIiwiQ2hlZXNlIl19CiAgICAgICAgICAuZGVzY3JpcHRpb249JHsiRG91YmxlLWNsaWNrIHRvIGVkaXQgaXRlbXMsIG9yIHVzZSB0aGUgZWRpdCBidXR0b24ifQogICAgICAgID48L2RlZXMtaW5wdXQtbGlzdD4KICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlLW5vdGUiPgogICAgICAgICAg8J+SoSBEb3VibGUtY2xpY2sgYW55IGl0ZW0gdG8gcXVpY2tseSBlZGl0IGl0IGlubGluZQogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiMi4gU29ydGFibGUgTGlzdCJ9IC5zdWJ0aXRsZT0keyJEcmFnIGFuZCBkcm9wIHRvIHJlb3JkZXIgaXRlbXMifT4KICAgICAgICA8ZGVlcy1pbnB1dC1saXN0CiAgICAgICAgICAubGFiZWw9JHsiVGFzayBQcmlvcml0eSJ9CiAgICAgICAgICAucGxhY2Vob2xkZXI9JHsiQWRkIGEgdGFzay4uLiJ9CiAgICAgICAgICAuc29ydGFibGU9JHshMH0KICAgICAgICAgIC52YWx1ZT0ke1siUmV2aWV3IHB1bGwgcmVxdWVzdHMiLCJGaXggY3JpdGljYWwgYnVnIiwiVXBkYXRlIGRvY3VtZW50YXRpb24iLCJEZXBsb3kgdG8gcHJvZHVjdGlvbiIsIlRlYW0gc3RhbmR1cCBtZWV0aW5nIl19CiAgICAgICAgICAuZGVzY3JpcHRpb249JHsiRHJhZyBpdGVtcyB1c2luZyB0aGUgaGFuZGxlIHRvIHJlb3JkZXIgdGhlbSJ9CiAgICAgICAgPjwvZGVlcy1pbnB1dC1saXN0PgogICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmUtbm90ZSI+CiAgICAgICAgICDwn5SEIERyYWcgdGhlIGdyaXAgaGFuZGxlIHRvIHJlb3JkZXIgdGFza3MgYnkgcHJpb3JpdHkKICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgoKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjMuIFZhbGlkYXRpb24gJiBDb25zdHJhaW50cyJ9IC5zdWJ0aXRsZT0keyJMaXN0cyB3aXRoIG1pbmltdW0vbWF4aW11bSBpdGVtcyBhbmQgZHVwbGljYXRlIHByZXZlbnRpb24ifT4KICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZC1sYXlvdXQiPgogICAgICAgICAgICA8ZGVlcy1pbnB1dC1saXN0CiAgICAgICAgICAgICAgLmxhYmVsPSR7IlRlYW0gTWVtYmVycyAoTWluIDIsIE1heCA1KSJ9CiAgICAgICAgICAgICAgLnBsYWNlaG9sZGVyPSR7IkFkZCB0ZWFtIG1lbWJlci4uLiJ9CiAgICAgICAgICAgICAgLm1pbkl0ZW1zPSR7Mn0KICAgICAgICAgICAgICAubWF4SXRlbXM9JHs1fQogICAgICAgICAgICAgIC52YWx1ZT0ke1siQWxpY2UiLCJCb2IiXX0KICAgICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0KICAgICAgICAgICAgICAuZGVzY3JpcHRpb249JHsiQWRkIDItNSB0ZWFtIG1lbWJlcnMifQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LWxpc3Q+CgogICAgICAgICAgICA8ZGVlcy1pbnB1dC1saXN0CiAgICAgICAgICAgICAgLmxhYmVsPSR7IlVuaXF1ZSBUYWdzIChObyBEdXBsaWNhdGVzKSJ9CiAgICAgICAgICAgICAgLnBsYWNlaG9sZGVyPSR7IkFkZCB1bmlxdWUgdGFnLi4uIn0KICAgICAgICAgICAgICAuYWxsb3dEdXBsaWNhdGVzPSR7ITF9CiAgICAgICAgICAgICAgLnZhbHVlPSR7WyJmcm9udGVuZCIsImJhY2tlbmQiLCJkYXRhYmFzZSJdfQogICAgICAgICAgICAgIC5kZXNjcmlwdGlvbj0keyJEdXBsaWNhdGUgaXRlbXMgYXJlIG5vdCBhbGxvd2VkIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1saXN0PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyI0LiBEZWxldGUgQ29uZmlybWF0aW9uIn0gLnN1YnRpdGxlPSR7IlJlcXVpcmUgY29uZmlybWF0aW9uIGJlZm9yZSBkZWxldGluZyBpdGVtcyJ9PgogICAgICAgIDxkZWVzLWlucHV0LWxpc3QKICAgICAgICAgIC5sYWJlbD0keyJJbXBvcnRhbnQgRG9jdW1lbnRzIn0KICAgICAgICAgIC5wbGFjZWhvbGRlcj0keyJBZGQgZG9jdW1lbnQgbmFtZS4uLiJ9CiAgICAgICAgICAuY29uZmlybURlbGV0ZT0keyEwfQogICAgICAgICAgLnZhbHVlPSR7WyJDb250cmFjdF8yMDI0LnBkZiIsIkZpbmFuY2lhbF9SZXBvcnRfUTMueGxzeCIsIlByb2plY3RfUHJvcG9zYWwuZG9jeCIsIk1lZXRpbmdfTm90ZXMudHh0Il19CiAgICAgICAgICAuZGVzY3JpcHRpb249JHsiRGVsZXRpb24gcmVxdWlyZXMgY29uZmlybWF0aW9uIGZvciBzYWZldHkifQogICAgICAgID48L2RlZXMtaW5wdXQtbGlzdD4KICAgICAgPC9kZWVzLXBhbmVsPgoKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjUuIERpc2FibGVkIFN0YXRlIn0gLnN1YnRpdGxlPSR7IlJlYWQtb25seSBsaXN0IGRpc3BsYXkifT4KICAgICAgICA8ZGVlcy1pbnB1dC1saXN0CiAgICAgICAgICAubGFiZWw9JHsiU3lzdGVtIERlZmF1bHRzIn0KICAgICAgICAgIC52YWx1ZT0ke1siRGVmYXVsdCBTZXR0aW5nIDEiLCJEZWZhdWx0IFNldHRpbmcgMiIsIkRlZmF1bHQgU2V0dGluZyAzIl19CiAgICAgICAgICAuZGlzYWJsZWQ9JHshMH0KICAgICAgICAgIC5kZXNjcmlwdGlvbj0keyJUaGVzZSBpdGVtcyBjYW5ub3QgYmUgbW9kaWZpZWQifQogICAgICAgID48L2RlZXMtaW5wdXQtbGlzdD4KICAgICAgPC9kZWVzLXBhbmVsPgoKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjYuIEZvcm0gSW50ZWdyYXRpb24ifSAuc3VidGl0bGU9JHsiTGlzdCBpbnB1dCB3b3JraW5nIHdpdGhpbiBhIGZvcm0gY29udGV4dCJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0CiAgICAgICAgICAgIC5sYWJlbD0keyJSZWNpcGUgTmFtZSJ9CiAgICAgICAgICAgIC5wbGFjZWhvbGRlcj0keyJNeSBBbWF6aW5nIFJlY2lwZSJ9CiAgICAgICAgICAgIC5yZXF1aXJlZD0keyEwfQogICAgICAgICAgICAua2V5PSR7Im5hbWUifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgCiAgICAgICAgICA8ZGl2IGNsYXNzPSJncmlkLWxheW91dCI+CiAgICAgICAgICAgIDxkZWVzLWlucHV0LWxpc3QKICAgICAgICAgICAgICAubGFiZWw9JHsiSW5ncmVkaWVudHMifQogICAgICAgICAgICAgIC5wbGFjZWhvbGRlcj0keyJBZGQgaW5ncmVkaWVudC4uLiJ9CiAgICAgICAgICAgICAgLnJlcXVpcmVkPSR7ITB9CiAgICAgICAgICAgICAgLm1pbkl0ZW1zPSR7M30KICAgICAgICAgICAgICAua2V5PSR7ImluZ3JlZGllbnRzIn0KICAgICAgICAgICAgICAuc29ydGFibGU9JHshMH0KICAgICAgICAgICAgICAudmFsdWU9JHtbIjIgY3VwcyBmbG91ciIsIjEgY3VwIHN1Z2FyIiwiMyBlZ2dzIl19CiAgICAgICAgICAgICAgLmRlc2NyaXB0aW9uPSR7IkFkZCBhdCBsZWFzdCAzIGluZ3JlZGllbnRzIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1saXN0PgogICAgICAgICAgICAKICAgICAgICAgICAgPGRlZXMtaW5wdXQtbGlzdAogICAgICAgICAgICAgIC5sYWJlbD0keyJJbnN0cnVjdGlvbnMifQogICAgICAgICAgICAgIC5wbGFjZWhvbGRlcj0keyJBZGQgaW5zdHJ1Y3Rpb24gc3RlcC4uLiJ9CiAgICAgICAgICAgICAgLnJlcXVpcmVkPSR7ITB9CiAgICAgICAgICAgICAgLm1pbkl0ZW1zPSR7Mn0KICAgICAgICAgICAgICAua2V5PSR7Imluc3RydWN0aW9ucyJ9CiAgICAgICAgICAgICAgLnNvcnRhYmxlPSR7ITB9CiAgICAgICAgICAgICAgLnZhbHVlPSR7WyJQcmVoZWF0IG92ZW4gdG8gMzUwXHhCMEYiLCJNaXggZHJ5IGluZ3JlZGllbnRzIl19CiAgICAgICAgICAgICAgLmRlc2NyaXB0aW9uPSR7IkFkZCBjb29raW5nIGluc3RydWN0aW9ucyBpbiBvcmRlciJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtbGlzdD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0CiAgICAgICAgICAgIC5sYWJlbD0keyJOb3RlcyJ9CiAgICAgICAgICAgIC5pbnB1dFR5cGU9JHsidGV4dGFyZWEifQogICAgICAgICAgICAucGxhY2Vob2xkZXI9JHsiQW55IHNwZWNpYWwgbm90ZXMgb3IgdGlwcy4uLiJ9CiAgICAgICAgICAgIC5rZXk9JHsibm90ZXMifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1mb3JtLXN1Ym1pdCAudGV4dD0keyJTYXZlIFJlY2lwZSJ9PjwvZGVlcy1mb3JtLXN1Ym1pdD4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kZWVzLXBhbmVsPgoKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjcuIEludGVyYWN0aXZlIERlbW8ifSAuc3VidGl0bGU9JHsiQnVpbGQgeW91ciBvd24gZmVhdHVyZSBsaXN0IGFuZCBzZWUgdGhlIGRhdGEifT4KICAgICAgICA8ZGVlcy1pbnB1dC1saXN0CiAgICAgICAgICBpZD0iaW50ZXJhY3RpdmUtbGlzdCIKICAgICAgICAgIC5sYWJlbD0keyJQcm9kdWN0IEZlYXR1cmVzIn0KICAgICAgICAgIC5wbGFjZWhvbGRlcj0keyJBZGQgYSBmZWF0dXJlLi4uIn0KICAgICAgICAgIC5zb3J0YWJsZT0keyEwfQogICAgICAgICAgLmNvbmZpcm1EZWxldGU9JHshMX0KICAgICAgICAgIC5hbGxvd0R1cGxpY2F0ZXM9JHshMX0KICAgICAgICAgIC5tYXhJdGVtcz0kezEwfQogICAgICAgICAgQGNoYW5nZT0ke3M9PntsZXQgZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjbGlzdC1qc29uIik7aWYoZSl7bGV0IHQ9e2l0ZW1zOnMuZGV0YWlsLnZhbHVlLGNvdW50OnMuZGV0YWlsLnZhbHVlLmxlbmd0aCx0aW1lc3RhbXA6bmV3IERhdGUoKS50b0lTT1N0cmluZygpfTtlLnRleHRDb250ZW50PUpTT04uc3RyaW5naWZ5KHQsbnVsbCwyKX19fQogICAgICAgID48L2RlZXMtaW5wdXQtbGlzdD4KICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJvdXRwdXQtcHJldmlldyIgaWQ9Imxpc3QtanNvbiI+CiAgICAgICAgICB7CiAgICAgICAgICAgICJpdGVtcyI6IFtdLAogICAgICAgICAgICAiY291bnQiOiAwLAogICAgICAgICAgICAidGltZXN0YW1wIjogIiR7bmV3IERhdGUoKS50b0lTT1N0cmluZygpfSIKICAgICAgICAgIH0KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlLW5vdGUiPgogICAgICAgICAg4pyoIEFkZCwgZWRpdCwgcmVtb3ZlLCBhbmQgcmVvcmRlciBpdGVtcyB0byBzZWUgdGhlIEpTT04gb3V0cHV0IHVwZGF0ZSBpbiByZWFsLXRpbWUKICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgoKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjguIEFkdmFuY2VkIENvbmZpZ3VyYXRpb24ifSAuc3VidGl0bGU9JHsiQ29tYmluZSBhbGwgZmVhdHVyZXMgZm9yIGNvbXBsZXggdXNlIGNhc2VzIn0+CiAgICAgICAgPGRlZXMtaW5wdXQtbGlzdAogICAgICAgICAgLmxhYmVsPSR7IlByb2plY3QgTWlsZXN0b25lcyJ9CiAgICAgICAgICAucGxhY2Vob2xkZXI9JHsiQWRkIG1pbGVzdG9uZS4uLiJ9CiAgICAgICAgICAudmFsdWU9JHtbIlByb2plY3QgS2lja29mZiAtIFdlZWsgMSIsIlJlcXVpcmVtZW50cyBHYXRoZXJpbmcgLSBXZWVrIDItMyIsIkRlc2lnbiBQaGFzZSAtIFdlZWsgNC02IiwiRGV2ZWxvcG1lbnQgU3ByaW50IDEgLSBXZWVrIDctOSIsIlRlc3RpbmcgJiBRQSAtIFdlZWsgMTAtMTEiLCJEZXBsb3ltZW50IC0gV2VlayAxMiJdfQogICAgICAgICAgLnNvcnRhYmxlPSR7ITB9CiAgICAgICAgICAuY29uZmlybURlbGV0ZT0keyEwfQogICAgICAgICAgLmFsbG93RHVwbGljYXRlcz0keyExfQogICAgICAgICAgLm1pbkl0ZW1zPSR7M30KICAgICAgICAgIC5tYXhJdGVtcz0kezEyfQogICAgICAgICAgLnJlcXVpcmVkPSR7ITB9CiAgICAgICAgICAuZGVzY3JpcHRpb249JHsiTWFuYWdlIHByb2plY3QgbWlsZXN0b25lcyAoMy0xMiBpdGVtcywgc29ydGFibGUsIG5vIGR1cGxpY2F0ZXMpIn0KICAgICAgICA+PC9kZWVzLWlucHV0LWxpc3Q+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyI5LiBDYW5kaWRhdGVzIHdpdGggVGFiIENvbXBsZXRpb24ifSAuc3VidGl0bGU9JHsiVGVybWluYWwtc3R5bGUgYXV0b2NvbXBsZXRlIFx1MjAxNCBUYWIgYWNjZXB0cywgU2hpZnQrVGFiIGN5Y2xlcyJ9PgogICAgICAgIDxkaXYgY2xhc3M9ImdyaWQtbGF5b3V0Ij4KICAgICAgICAgIDxkZWVzLWlucHV0LWxpc3QKICAgICAgICAgICAgaWQ9ImNhbmRpZGF0ZS1saXN0IgogICAgICAgICAgICAubGFiZWw9JHsiQXNzaWduIFRlYW0gTWVtYmVycyJ9CiAgICAgICAgICAgIC5wbGFjZWhvbGRlcj0keyJUeXBlIGEgbmFtZS4uLiAoVGFiIHRvIGNvbXBsZXRlKSJ9CiAgICAgICAgICAgIC5jYW5kaWRhdGVzPSR7W3t2aWV3S2V5OiJBbGljZSBTbWl0aCIscGF5bG9hZDp7aWQ6MSxyb2xlOiJFbmdpbmVlciIsZGVwYXJ0bWVudDoiRnJvbnRlbmQifX0se3ZpZXdLZXk6IkJvYiBKb2huc29uIixwYXlsb2FkOntpZDoyLHJvbGU6IkRlc2lnbmVyIixkZXBhcnRtZW50OiJVWCJ9fSx7dmlld0tleToiQ2Fyb2wgV2lsbGlhbXMiLHBheWxvYWQ6e2lkOjMscm9sZToiUHJvZHVjdCBNYW5hZ2VyIixkZXBhcnRtZW50OiJQcm9kdWN0In19LHt2aWV3S2V5OiJEYXZpZCBCcm93biIscGF5bG9hZDp7aWQ6NCxyb2xlOiJFbmdpbmVlciIsZGVwYXJ0bWVudDoiQmFja2VuZCJ9fSx7dmlld0tleToiRXZlIERhdmlzIixwYXlsb2FkOntpZDo1LHJvbGU6IlFBIEVuZ2luZWVyIixkZXBhcnRtZW50OiJRdWFsaXR5In19LHt2aWV3S2V5OiJGcmFuayBNaWxsZXIiLHBheWxvYWQ6e2lkOjYscm9sZToiRGV2T3BzIixkZXBhcnRtZW50OiJJbmZyYXN0cnVjdHVyZSJ9fSx7dmlld0tleToiR3JhY2UgV2lsc29uIixwYXlsb2FkOntpZDo3LHJvbGU6IkRlc2lnbmVyIixkZXBhcnRtZW50OiJVWCJ9fSx7dmlld0tleToiSGVucnkgTW9vcmUiLHBheWxvYWQ6e2lkOjgscm9sZToiRW5naW5lZXIiLGRlcGFydG1lbnQ6IkZyb250ZW5kIn19XX0KICAgICAgICAgICAgLnZhbHVlPSR7WyJBbGljZSBTbWl0aCIsIkNhcm9sIFdpbGxpYW1zIl19CiAgICAgICAgICAgIC5tYXhJdGVtcz0kezV9CiAgICAgICAgICAgIC5kZXNjcmlwdGlvbj0keyJUeXBlIHRvIHNlZSBnaG9zdCBjb21wbGV0aW9uLiBUYWIgdG8gYWNjZXB0LCBTaGlmdCtUYWIgdG8gY3ljbGUsIEVudGVyIHRvIGFkZC4ifQogICAgICAgICAgICBAY2hhbmdlPSR7cz0+e2xldCBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNjYW5kaWRhdGUtanNvbiIpO2lmKGUpe2xldCBhPXMudGFyZ2V0LmdldEFkZGVkQ2FuZGlkYXRlcygpO2UudGV4dENvbnRlbnQ9SlNPTi5zdHJpbmdpZnkoYSxudWxsLDIpfX19CiAgICAgICAgICA+PC9kZWVzLWlucHV0LWxpc3Q+CgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBzdHlsZT0iZm9udC1zaXplOiAxM3B4OyBmb250LXdlaWdodDogNTAwOyBtYXJnaW4tYm90dG9tOiA4cHg7IGNvbG9yOiBpbmhlcml0OyI+U2VsZWN0ZWQgQ2FuZGlkYXRlcyAod2l0aCBwYXlsb2Fkcyk8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ib3V0cHV0LXByZXZpZXciIGlkPSJjYW5kaWRhdGUtanNvbiI+W108L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZS1ub3RlIj4KICAgICAgICAgICAgICBUcnkgdHlwaW5nICJEIiDigJQgZ2hvc3QgdGV4dCBzaG93cyAiYXZpZCBCcm93biIuIFByZXNzIFNoaWZ0K1RhYiB0byBjeWNsZSB0byBvdGhlciBELW1hdGNoZXMuIFRhYiBhY2NlcHRzLCBFbnRlciBhZGRzLgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiMTAuIFRlY2hub2xvZ3kgU3RhY2sifSAuc3VidGl0bGU9JHsiTGFyZ2VyIGNhbmRpZGF0ZSBwb29sIHdpdGggU2hpZnQrVGFiIGN5Y2xpbmcifT4KICAgICAgICA8ZGVlcy1pbnB1dC1saXN0CiAgICAgICAgICAubGFiZWw9JHsiU2VsZWN0IFRlY2hub2xvZ2llcyJ9CiAgICAgICAgICAucGxhY2Vob2xkZXI9JHsiVHlwZSB0byBhdXRvY29tcGxldGUuLi4ifQogICAgICAgICAgLmNhbmRpZGF0ZXM9JHtbe3ZpZXdLZXk6IlR5cGVTY3JpcHQiLHBheWxvYWQ6e2NhdGVnb3J5OiJsYW5ndWFnZSJ9fSx7dmlld0tleToiUmVhY3QiLHBheWxvYWQ6e2NhdGVnb3J5OiJmcmFtZXdvcmsifX0se3ZpZXdLZXk6IlZ1ZS5qcyIscGF5bG9hZDp7Y2F0ZWdvcnk6ImZyYW1ld29yayJ9fSx7dmlld0tleToiQW5ndWxhciIscGF5bG9hZDp7Y2F0ZWdvcnk6ImZyYW1ld29yayJ9fSx7dmlld0tleToiTm9kZS5qcyIscGF5bG9hZDp7Y2F0ZWdvcnk6InJ1bnRpbWUifX0se3ZpZXdLZXk6IkRlbm8iLHBheWxvYWQ6e2NhdGVnb3J5OiJydW50aW1lIn19LHt2aWV3S2V5OiJEb2NrZXIiLHBheWxvYWQ6e2NhdGVnb3J5OiJkZXZvcHMifX0se3ZpZXdLZXk6IlBvc3RncmVTUUwiLHBheWxvYWQ6e2NhdGVnb3J5OiJkYXRhYmFzZSJ9fSx7dmlld0tleToiTW9uZ29EQiIscGF5bG9hZDp7Y2F0ZWdvcnk6ImRhdGFiYXNlIn19LHt2aWV3S2V5OiJSZWRpcyIscGF5bG9hZDp7Y2F0ZWdvcnk6ImRhdGFiYXNlIn19LHt2aWV3S2V5OiJLdWJlcm5ldGVzIixwYXlsb2FkOntjYXRlZ29yeToiZGV2b3BzIn19XX0KICAgICAgICAgIC5kZXNjcmlwdGlvbj0keydUcnkgIkQiIFx1MjAxNCBjeWNsZXMgdGhyb3VnaCBEZW5vL0RvY2tlci4gIlIiIFx1MjAxNCBjeWNsZXMgdGhyb3VnaCBSZWFjdC9SZWRpcy4nfQogICAgICAgID48L2RlZXMtaW5wdXQtbGlzdD4KICAgICAgPC9kZWVzLXBhbmVsPgoKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjExLiBGcmVlZm9ybSArIENhbmRpZGF0ZXMifSAuc3VidGl0bGU9JHsiQWxsb3cgYWRkaW5nIGl0ZW1zIG5vdCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QgKHNob3duIHdpdGggYSBxdWVzdGlvbiBtYXJrKSJ9PgogICAgICAgIDxkZWVzLWlucHV0LWxpc3QKICAgICAgICAgIC5sYWJlbD0keyJUYWdzIn0KICAgICAgICAgIC5wbGFjZWhvbGRlcj0keyJUeXBlIGEgdGFnLi4uIChmcmVlZm9ybSBhbGxvd2VkKSJ9CiAgICAgICAgICAuYWxsb3dGcmVlZm9ybT0keyEwfQogICAgICAgICAgLmNhbmRpZGF0ZXM9JHtbe3ZpZXdLZXk6ImJ1ZyIscGF5bG9hZDp7Y29sb3I6InJlZCJ9fSx7dmlld0tleToiZmVhdHVyZSIscGF5bG9hZDp7Y29sb3I6ImJsdWUifX0se3ZpZXdLZXk6ImRvY3MiLHBheWxvYWQ6e2NvbG9yOiJncmVlbiJ9fSx7dmlld0tleToicmVmYWN0b3IiLHBheWxvYWQ6e2NvbG9yOiJwdXJwbGUifX0se3ZpZXdLZXk6InBlcmZvcm1hbmNlIixwYXlsb2FkOntjb2xvcjoib3JhbmdlIn19LHt2aWV3S2V5OiJzZWN1cml0eSIscGF5bG9hZDp7Y29sb3I6InJlZCJ9fV19CiAgICAgICAgICAudmFsdWU9JHtbImJ1ZyIsIm15LWN1c3RvbS10YWciLCJmZWF0dXJlIl19CiAgICAgICAgICAuZGVzY3JpcHRpb249JHsiS25vd24gdGFncyBnZXQgYSBjaGVja21hcmssIGN1c3RvbSB0YWdzIGdldCBhIHF1ZXN0aW9uIG1hcmsuIFRhYiB0byBjb21wbGV0ZSwgRW50ZXIgdG8gYWRkIGZyZWVmb3JtLiJ9CiAgICAgICAgPjwvZGVlcy1pbnB1dC1saXN0PgogICAgICA8L2RlZXMtcGFuZWw+CgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiMTIuIEVtcHR5IFN0YXRlIn0gLnN1YnRpdGxlPSR7IkhvdyB0aGUgY29tcG9uZW50IGxvb2tzIHdpdGggbm8gaXRlbXMifT4KICAgICAgICA8ZGVlcy1pbnB1dC1saXN0CiAgICAgICAgICAubGFiZWw9JHsiWW91ciBJZGVhcyJ9CiAgICAgICAgICAucGxhY2Vob2xkZXI9JHsiU2hhcmUgeW91ciBpZGVhcy4uLiJ9CiAgICAgICAgICAudmFsdWU9JHtbXX0KICAgICAgICAgIC5kZXNjcmlwdGlvbj0keyJTdGFydCBhZGRpbmcgaXRlbXMgdG8gYnVpbGQgeW91ciBsaXN0In0KICAgICAgICA+PC9kZWVzLWlucHV0LWxpc3Q+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGl2PgogIDwvZGVlcy1kZW1vd3JhcHBlcj4KYCwiZGVtb0Z1bmMiKX0pO3ZhciBHaSxmYSxFbmUsc3R0PWcoKCk9PntwZSgpO3ppKCk7VWEoKTtucigpO0kwYSgpO3B0KCk7R2k9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LGZhPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxFbmU9KCgpPT57bGV0IHM9W25lKCJkZWVzLWlucHV0LWxpc3QiKV0sZSx0PVtdLGEscj1PdCxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXSxPLCQ9W10sRT1bXSxILGs9W10sUz1bXSxJLFA9W10sUj1bXSxLLFY9W10sVz1bXSxtZSxCPVtdLFU9W10saGUsRj1bXSxqPVtdLHVlLGxlPVtdLFE9W10saWUsdGU9W10sZWU9W10sa2UsWD1bXSxaPVtdLHllLHE9W10sQT1bXSxzZSxvZT1bXSxhZT1bXSxUZSxSZT1bXSxCZT1bXSxHZSxEZT1bXSxfZT1bXSxDZSx2ZT1bXSxiZT1bXSxFZSxqZT1bXSxXZT1bXTt2YXIgc3Q9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNJbnB1dExpc3QiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgTWU9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpBcnJheX0pXSxwPVtMKHt0eXBlOlN0cmluZ30pXSxjPVtMKHt0eXBlOk51bWJlcn0pXSx4PVtMKHt0eXBlOk51bWJlcn0pXSx5PVtMKHt0eXBlOkJvb2xlYW59KV0sTj1bTCh7dHlwZTpCb29sZWFufSldLE89W0woe3R5cGU6Qm9vbGVhbn0pXSxIPVtMKHt0eXBlOkFycmF5fSldLEk9W0woe3R5cGU6Qm9vbGVhbn0pXSxLPVtMKHt0eXBlOlN0cmluZ30pXSxtZT1bWSgpXSxoZT1bWSgpXSx1ZT1bWSgpXSxpZT1bWSgpXSxrZT1bWSgpXSx5ZT1bWSgpXSxzZT1bWSgpXSxUZT1bWSgpXSxHZT1bWSgpXSxDZT1bWSgpXSxFZT1bWSgpXSxHaSh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InZhbHVlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGdlPT4idmFsdWUiaW4gZ2UsImhhcyIpLGdldDppKGdlPT5nZS52YWx1ZSwiZ2V0Iiksc2V0OmkoKGdlLEllKT0+e2dlLnZhbHVlPUllfSwic2V0Iil9LG1ldGFkYXRhOk1lfSxvLGwpLEdpKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicGxhY2Vob2xkZXIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZ2U9PiJwbGFjZWhvbGRlciJpbiBnZSwiaGFzIiksZ2V0OmkoZ2U9PmdlLnBsYWNlaG9sZGVyLCJnZXQiKSxzZXQ6aSgoZ2UsSWUpPT57Z2UucGxhY2Vob2xkZXI9SWV9LCJzZXQiKX0sbWV0YWRhdGE6TWV9LGQsdSksR2kodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtYXhJdGVtcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShnZT0+Im1heEl0ZW1zImluIGdlLCJoYXMiKSxnZXQ6aShnZT0+Z2UubWF4SXRlbXMsImdldCIpLHNldDppKChnZSxJZSk9PntnZS5tYXhJdGVtcz1JZX0sInNldCIpfSxtZXRhZGF0YTpNZX0sYix2KSxHaSh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1pbkl0ZW1zIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGdlPT4ibWluSXRlbXMiaW4gZ2UsImhhcyIpLGdldDppKGdlPT5nZS5taW5JdGVtcywiZ2V0Iiksc2V0OmkoKGdlLEllKT0+e2dlLm1pbkl0ZW1zPUllfSwic2V0Iil9LG1ldGFkYXRhOk1lfSxtLGYpLEdpKHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYWxsb3dEdXBsaWNhdGVzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGdlPT4iYWxsb3dEdXBsaWNhdGVzImluIGdlLCJoYXMiKSxnZXQ6aShnZT0+Z2UuYWxsb3dEdXBsaWNhdGVzLCJnZXQiKSxzZXQ6aSgoZ2UsSWUpPT57Z2UuYWxsb3dEdXBsaWNhdGVzPUllfSwic2V0Iil9LG1ldGFkYXRhOk1lfSxNLHopLEdpKHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic29ydGFibGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZ2U9PiJzb3J0YWJsZSJpbiBnZSwiaGFzIiksZ2V0OmkoZ2U9PmdlLnNvcnRhYmxlLCJnZXQiKSxzZXQ6aSgoZ2UsSWUpPT57Z2Uuc29ydGFibGU9SWV9LCJzZXQiKX0sbWV0YWRhdGE6TWV9LEMsXyksR2kodGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjb25maXJtRGVsZXRlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGdlPT4iY29uZmlybURlbGV0ZSJpbiBnZSwiaGFzIiksZ2V0OmkoZ2U9PmdlLmNvbmZpcm1EZWxldGUsImdldCIpLHNldDppKChnZSxJZSk9PntnZS5jb25maXJtRGVsZXRlPUllfSwic2V0Iil9LG1ldGFkYXRhOk1lfSwkLEUpLEdpKHRoaXMsbnVsbCxILHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY2FuZGlkYXRlcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShnZT0+ImNhbmRpZGF0ZXMiaW4gZ2UsImhhcyIpLGdldDppKGdlPT5nZS5jYW5kaWRhdGVzLCJnZXQiKSxzZXQ6aSgoZ2UsSWUpPT57Z2UuY2FuZGlkYXRlcz1JZX0sInNldCIpfSxtZXRhZGF0YTpNZX0sayxTKSxHaSh0aGlzLG51bGwsSSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImFsbG93RnJlZWZvcm0iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZ2U9PiJhbGxvd0ZyZWVmb3JtImluIGdlLCJoYXMiKSxnZXQ6aShnZT0+Z2UuYWxsb3dGcmVlZm9ybSwiZ2V0Iiksc2V0OmkoKGdlLEllKT0+e2dlLmFsbG93RnJlZWZvcm09SWV9LCJzZXQiKX0sbWV0YWRhdGE6TWV9LFAsUiksR2kodGhpcyxudWxsLEsse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2YWxpZGF0aW9uVGV4dCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShnZT0+InZhbGlkYXRpb25UZXh0ImluIGdlLCJoYXMiKSxnZXQ6aShnZT0+Z2UudmFsaWRhdGlvblRleHQsImdldCIpLHNldDppKChnZSxJZSk9PntnZS52YWxpZGF0aW9uVGV4dD1JZX0sInNldCIpfSxtZXRhZGF0YTpNZX0sVixXKSxHaSh0aGlzLG51bGwsbWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpbnB1dFZhbHVlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGdlPT4iaW5wdXRWYWx1ZSJpbiBnZSwiaGFzIiksZ2V0OmkoZ2U9PmdlLmlucHV0VmFsdWUsImdldCIpLHNldDppKChnZSxJZSk9PntnZS5pbnB1dFZhbHVlPUllfSwic2V0Iil9LG1ldGFkYXRhOk1lfSxCLFUpLEdpKHRoaXMsbnVsbCxoZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Imdob3N0VGV4dCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShnZT0+Imdob3N0VGV4dCJpbiBnZSwiaGFzIiksZ2V0OmkoZ2U9PmdlLmdob3N0VGV4dCwiZ2V0Iiksc2V0OmkoKGdlLEllKT0+e2dlLmdob3N0VGV4dD1JZX0sInNldCIpfSxtZXRhZGF0YTpNZX0sRixqKSxHaSh0aGlzLG51bGwsdWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjdXJyZW50Q2FuZGlkYXRlSW5kZXgiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZ2U9PiJjdXJyZW50Q2FuZGlkYXRlSW5kZXgiaW4gZ2UsImhhcyIpLGdldDppKGdlPT5nZS5jdXJyZW50Q2FuZGlkYXRlSW5kZXgsImdldCIpLHNldDppKChnZSxJZSk9PntnZS5jdXJyZW50Q2FuZGlkYXRlSW5kZXg9SWV9LCJzZXQiKX0sbWV0YWRhdGE6TWV9LGxlLFEpLEdpKHRoaXMsbnVsbCxpZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImVkaXRpbmdJbmRleCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShnZT0+ImVkaXRpbmdJbmRleCJpbiBnZSwiaGFzIiksZ2V0OmkoZ2U9PmdlLmVkaXRpbmdJbmRleCwiZ2V0Iiksc2V0OmkoKGdlLEllKT0+e2dlLmVkaXRpbmdJbmRleD1JZX0sInNldCIpfSxtZXRhZGF0YTpNZX0sdGUsZWUpLEdpKHRoaXMsbnVsbCxrZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImVkaXRpbmdWYWx1ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShnZT0+ImVkaXRpbmdWYWx1ZSJpbiBnZSwiaGFzIiksZ2V0OmkoZ2U9PmdlLmVkaXRpbmdWYWx1ZSwiZ2V0Iiksc2V0OmkoKGdlLEllKT0+e2dlLmVkaXRpbmdWYWx1ZT1JZX0sInNldCIpfSxtZXRhZGF0YTpNZX0sWCxaKSxHaSh0aGlzLG51bGwseWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJkcmFnZ2VkSW5kZXgiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZ2U9PiJkcmFnZ2VkSW5kZXgiaW4gZ2UsImhhcyIpLGdldDppKGdlPT5nZS5kcmFnZ2VkSW5kZXgsImdldCIpLHNldDppKChnZSxJZSk9PntnZS5kcmFnZ2VkSW5kZXg9SWV9LCJzZXQiKX0sbWV0YWRhdGE6TWV9LHEsQSksR2kodGhpcyxudWxsLHNlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZHJhZ092ZXJJbmRleCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShnZT0+ImRyYWdPdmVySW5kZXgiaW4gZ2UsImhhcyIpLGdldDppKGdlPT5nZS5kcmFnT3ZlckluZGV4LCJnZXQiKSxzZXQ6aSgoZ2UsSWUpPT57Z2UuZHJhZ092ZXJJbmRleD1JZX0sInNldCIpfSxtZXRhZGF0YTpNZX0sb2UsYWUpLEdpKHRoaXMsbnVsbCxUZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImRyYWdTdGFydFkiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZ2U9PiJkcmFnU3RhcnRZImluIGdlLCJoYXMiKSxnZXQ6aShnZT0+Z2UuZHJhZ1N0YXJ0WSwiZ2V0Iiksc2V0OmkoKGdlLEllKT0+e2dlLmRyYWdTdGFydFk9SWV9LCJzZXQiKX0sbWV0YWRhdGE6TWV9LFJlLEJlKSxHaSh0aGlzLG51bGwsR2Use2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJkcmFnQ3VycmVudFkiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZ2U9PiJkcmFnQ3VycmVudFkiaW4gZ2UsImhhcyIpLGdldDppKGdlPT5nZS5kcmFnQ3VycmVudFksImdldCIpLHNldDppKChnZSxJZSk9PntnZS5kcmFnQ3VycmVudFk9SWV9LCJzZXQiKX0sbWV0YWRhdGE6TWV9LERlLF9lKSxHaSh0aGlzLG51bGwsQ2Use2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0YXJnZXRJbmRleCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShnZT0+InRhcmdldEluZGV4ImluIGdlLCJoYXMiKSxnZXQ6aShnZT0+Z2UudGFyZ2V0SW5kZXgsImdldCIpLHNldDppKChnZSxJZSk9PntnZS50YXJnZXRJbmRleD1JZX0sInNldCIpfSxtZXRhZGF0YTpNZX0sdmUsYmUpLEdpKHRoaXMsbnVsbCxFZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Iml0ZW1IZWlnaHQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZ2U9PiJpdGVtSGVpZ2h0ImluIGdlLCJoYXMiKSxnZXQ6aShnZT0+Z2UuaXRlbUhlaWdodCwiZ2V0Iiksc2V0OmkoKGdlLEllKT0+e2dlLml0ZW1IZWlnaHQ9SWV9LCJzZXQiKX0sbWV0YWRhdGE6TWV9LGplLFdlKSxHaShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpNZX0sbnVsbCx0KSxzdD1hPWUudmFsdWUsTWUmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6TWV9KX1zdGF0aWMgZGVtbz1QMGE7c3RhdGljIGRlbW9Hcm91cHM9WyJJbnB1dCJdOyNlPWZhKHRoaXMsbyxbXSk7Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHZhbHVlKE1lKXt0aGlzLiNlPU1lfSN0PShmYSh0aGlzLGwpLGZhKHRoaXMsZCwiQWRkIG5ldyBpdGVtLi4uIikpO2dldCBwbGFjZWhvbGRlcigpe3JldHVybiB0aGlzLiN0fXNldCBwbGFjZWhvbGRlcihNZSl7dGhpcy4jdD1NZX0jYT0oZmEodGhpcyx1KSxmYSh0aGlzLGIsMCkpO2dldCBtYXhJdGVtcygpe3JldHVybiB0aGlzLiNhfXNldCBtYXhJdGVtcyhNZSl7dGhpcy4jYT1NZX0jcz0oZmEodGhpcyx2KSxmYSh0aGlzLG0sMCkpO2dldCBtaW5JdGVtcygpe3JldHVybiB0aGlzLiNzfXNldCBtaW5JdGVtcyhNZSl7dGhpcy4jcz1NZX0jaT0oZmEodGhpcyxmKSxmYSh0aGlzLE0sITEpKTtnZXQgYWxsb3dEdXBsaWNhdGVzKCl7cmV0dXJuIHRoaXMuI2l9c2V0IGFsbG93RHVwbGljYXRlcyhNZSl7dGhpcy4jaT1NZX0jcj0oZmEodGhpcyx6KSxmYSh0aGlzLEMsITEpKTtnZXQgc29ydGFibGUoKXtyZXR1cm4gdGhpcy4jcn1zZXQgc29ydGFibGUoTWUpe3RoaXMuI3I9TWV9I289KGZhKHRoaXMsXyksZmEodGhpcywkLCExKSk7Z2V0IGNvbmZpcm1EZWxldGUoKXtyZXR1cm4gdGhpcy4jb31zZXQgY29uZmlybURlbGV0ZShNZSl7dGhpcy4jbz1NZX0jbj0oZmEodGhpcyxFKSxmYSh0aGlzLGssW10pKTtnZXQgY2FuZGlkYXRlcygpe3JldHVybiB0aGlzLiNufXNldCBjYW5kaWRhdGVzKE1lKXt0aGlzLiNuPU1lfSNsPShmYSh0aGlzLFMpLGZhKHRoaXMsUCwhMSkpO2dldCBhbGxvd0ZyZWVmb3JtKCl7cmV0dXJuIHRoaXMuI2x9c2V0IGFsbG93RnJlZWZvcm0oTWUpe3RoaXMuI2w9TWV9I2M9KGZhKHRoaXMsUiksZmEodGhpcyxWLCIiKSk7Z2V0IHZhbGlkYXRpb25UZXh0KCl7cmV0dXJuIHRoaXMuI2N9c2V0IHZhbGlkYXRpb25UZXh0KE1lKXt0aGlzLiNjPU1lfWFkZGVkQ2FuZGlkYXRlc01hcD0oZmEodGhpcyxXKSxuZXcgTWFwKTttYXRjaGluZ0NhbmRpZGF0ZXM9W107I2Q9ZmEodGhpcyxCLCIiKTtnZXQgaW5wdXRWYWx1ZSgpe3JldHVybiB0aGlzLiNkfXNldCBpbnB1dFZhbHVlKE1lKXt0aGlzLiNkPU1lfSN1PShmYSh0aGlzLFUpLGZhKHRoaXMsRiwiIikpO2dldCBnaG9zdFRleHQoKXtyZXR1cm4gdGhpcy4jdX1zZXQgZ2hvc3RUZXh0KE1lKXt0aGlzLiN1PU1lfSNwPShmYSh0aGlzLGopLGZhKHRoaXMsbGUsLTEpKTtnZXQgY3VycmVudENhbmRpZGF0ZUluZGV4KCl7cmV0dXJuIHRoaXMuI3B9c2V0IGN1cnJlbnRDYW5kaWRhdGVJbmRleChNZSl7dGhpcy4jcD1NZX0jaD0oZmEodGhpcyxRKSxmYSh0aGlzLHRlLC0xKSk7Z2V0IGVkaXRpbmdJbmRleCgpe3JldHVybiB0aGlzLiNofXNldCBlZGl0aW5nSW5kZXgoTWUpe3RoaXMuI2g9TWV9I2Y9KGZhKHRoaXMsZWUpLGZhKHRoaXMsWCwiIikpO2dldCBlZGl0aW5nVmFsdWUoKXtyZXR1cm4gdGhpcy4jZn1zZXQgZWRpdGluZ1ZhbHVlKE1lKXt0aGlzLiNmPU1lfSNtPShmYSh0aGlzLFopLGZhKHRoaXMscSwtMSkpO2dldCBkcmFnZ2VkSW5kZXgoKXtyZXR1cm4gdGhpcy4jbX1zZXQgZHJhZ2dlZEluZGV4KE1lKXt0aGlzLiNtPU1lfSNnPShmYSh0aGlzLEEpLGZhKHRoaXMsb2UsLTEpKTtnZXQgZHJhZ092ZXJJbmRleCgpe3JldHVybiB0aGlzLiNnfXNldCBkcmFnT3ZlckluZGV4KE1lKXt0aGlzLiNnPU1lfSNiPShmYSh0aGlzLGFlKSxmYSh0aGlzLFJlLDApKTtnZXQgZHJhZ1N0YXJ0WSgpe3JldHVybiB0aGlzLiNifXNldCBkcmFnU3RhcnRZKE1lKXt0aGlzLiNiPU1lfSN2PShmYSh0aGlzLEJlKSxmYSh0aGlzLERlLDApKTtnZXQgZHJhZ0N1cnJlbnRZKCl7cmV0dXJuIHRoaXMuI3Z9c2V0IGRyYWdDdXJyZW50WShNZSl7dGhpcy4jdj1NZX0jeD0oZmEodGhpcyxfZSksZmEodGhpcyx2ZSwtMSkpO2dldCB0YXJnZXRJbmRleCgpe3JldHVybiB0aGlzLiN4fXNldCB0YXJnZXRJbmRleChNZSl7dGhpcy4jeD1NZX0jeT0oZmEodGhpcyxiZSksZmEodGhpcyxqZSwwKSk7Z2V0IGl0ZW1IZWlnaHQoKXtyZXR1cm4gdGhpcy4jeX1zZXQgaXRlbUhlaWdodChNZSl7dGhpcy4jeT1NZX1ib3VuZEhhbmRsZUdsb2JhbERyYWdPdmVyPShmYSh0aGlzLFdlKSxudWxsKTtib3VuZEhhbmRsZUdsb2JhbERyYWdFbmQ9bnVsbDtvcmlnaW5hbEl0ZW1SZWN0cz1bXTtzdGF0aWMgc3R5bGVzPVtIZSwuLi5PdC5iYXNlU3R5bGVzLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICAvKiBUT0RPOiBNaWdyYXRlIGhhcmRjb2RlZCB2YWx1ZXMgdG8gLS1kZWVzLSogQ1NTIHZhcmlhYmxlcyAqLwogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgJ1JvYm90bycsIHNhbnMtc2VyaWY7CiAgICAgIH0KCiAgICAgIC5pbnB1dC13cmFwcGVyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgZGVlcy10aWxlOmhvdmVyOjpwYXJ0KG91dGVyKSB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1zdHJvbmcpOwogICAgICB9CgogICAgICBkZWVzLXRpbGU6Zm9jdXMtd2l0aGluOjpwYXJ0KG91dGVyKSB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDUxLjIlKSIsImhzbCgyMTcuMiA5MS4yJSA1OS44JSkiKX07CiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUgLyAwLjEpIiwiaHNsKDIxNy4yIDkxLjIlIDU5LjglIC8gMC4xKSIpfTsKICAgICAgfQoKICAgICAgOmhvc3QoW2Rpc2FibGVkXSkgZGVlcy10aWxlIHsKICAgICAgICBvcGFjaXR5OiAwLjY7CiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgLmxpc3QtaXRlbXMgewogICAgICAgIG1heC1oZWlnaHQ6IDQwMHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgIH0KCiAgICAgIC5saXN0LWl0ZW0gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDZweDsKICAgICAgICBwYWRkaW5nOiA2cHggMTBweDsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItc3VidGxlKTsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlLCBiYWNrZ3JvdW5kIDAuMTVzIGVhc2UsIGJveC1zaGFkb3cgMC4xNXMgZWFzZTsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLmxpc3QtaXRlbTpsYXN0LW9mLXR5cGUgewogICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7CiAgICAgIH0KCiAgICAgIC5saXN0LWl0ZW1zOm5vdCguaXMtZHJhZ2dpbmcpIC5saXN0LWl0ZW06aG92ZXI6bm90KC5kaXNhYmxlZCkgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3Itcm93LWhvdmVyKTsKICAgICAgfQoKICAgICAgLyogRHJhZ2dpbmcgaXRlbSAtIGZvbGxvd3MgY3Vyc29yICovCiAgICAgIC5saXN0LWl0ZW0uZHJhZ2dpbmcgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB6LWluZGV4OiAxMDA7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgNDAlIDk4JSkiLCJoc2woMjE1IDIwLjIlIDEyJSkiKX07CiAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjE1KSIsInJnYmEoMCwgMCwgMCwgMC40KSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjE1cyBlYXNlLCBiYWNrZ3JvdW5kIDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC8qIEl0ZW1zIHRoYXQgbmVlZCB0byBtb3ZlIHVwIHRvIG1ha2Ugc3BhY2UgKi8KICAgICAgLmxpc3QtaXRlbS5tb3ZlLXVwIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoY2FsYygtMSAqIHZhcigtLWl0ZW0taGVpZ2h0LCA0OHB4KSkpOwogICAgICB9CgogICAgICAvKiBJdGVtcyB0aGF0IG5lZWQgdG8gbW92ZSBkb3duIHRvIG1ha2Ugc3BhY2UgKi8KICAgICAgLmxpc3QtaXRlbS5tb3ZlLWRvd24gewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSh2YXIoLS1pdGVtLWhlaWdodCwgNDhweCkpOwogICAgICB9CgoKICAgICAgLmNhbmRpZGF0ZS1jaGVjayB7CiAgICAgICAgd2lkdGg6IDE0cHg7CiAgICAgICAgaGVpZ2h0OiAxNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDE0Mi4xIDc2LjIlIDM2LjMlKSIsImhzbCgxNDIuMSA3MC42JSA0NS4zJSkiKX07CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC5jYW5kaWRhdGUtdW5rbm93biB7CiAgICAgICAgd2lkdGg6IDE0cHg7CiAgICAgICAgaGVpZ2h0OiAxNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDQ1IDkzJSA0NyUpIiwiaHNsKDQ1IDkzJSA1OCUpIil9OwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAuaXRlbS1idWxsZXQgewogICAgICAgIHdpZHRoOiAxNHB4OwogICAgICAgIGhlaWdodDogMTRweDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgIH0KCiAgICAgIC5kcmFnLWhhbmRsZSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGN1cnNvcjogbW92ZTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDYzLjklKSIsImhzbCgwIDAlIDQ1LjElKSIpfTsKICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjE1cyBlYXNlOwogICAgICB9CgogICAgICAuZHJhZy1oYW5kbGU6aG92ZXIgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNDUuMSUpIiwiaHNsKDAgMCUgNjMuOSUpIil9OwogICAgICB9CgogICAgICAuZHJhZy1oYW5kbGUgZGVlcy1pY29uIHsKICAgICAgICB3aWR0aDogMTRweDsKICAgICAgICBoZWlnaHQ6IDE0cHg7CiAgICAgIH0KCiAgICAgIC5pdGVtLWNvbnRlbnQgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIG1pbi13aWR0aDogMDsKICAgICAgfQoKICAgICAgLml0ZW0tdGV4dCB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDklKSIsImhzbCgwIDAlIDk1JSkiKX07CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOHB4OwogICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7CiAgICAgIH0KCiAgICAgIC5pdGVtLWVkaXQtaW5wdXQgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgcGFkZGluZzogM3B4IDZweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDEwMCUpIiwiaHNsKDAgMCUgOSUpIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUpIiwiaHNsKDIxNy4yIDkxLjIlIDU5LjglKSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDklKSIsImhzbCgwIDAlIDk1JSkiKX07CiAgICAgIH0KCiAgICAgIC5pdGVtLWFjdGlvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiA0cHg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICB3aWR0aDogMjRweDsKICAgICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA0NS4xJSkiLCJoc2woMCAwJSA2My45JSkiKX07CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTUuMSUpIiwiaHNsKDAgMCUgMTQuOSUpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOSUpIiwiaHNsKDAgMCUgOTUlKSIpfTsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idXR0b24uc2F2ZSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMTQyLjEgNzYuMiUgMzYuMyUpIiwiaHNsKDE0Mi4xIDcwLjYlIDQ1LjMlKSIpfTsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idXR0b24uc2F2ZTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgxNDIuMSA3Ni4yJSAzNi4zJSAvIDAuMSkiLCJoc2woMTQyLjEgNzAuNiUgNDUuMyUgLyAwLjEpIil9OwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbi5jYW5jZWwgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgNzIuMiUgNTAuNiUpIiwiaHNsKDAgNjIuOCUgNTAuNiUpIil9OwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbi5jYW5jZWw6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCA3Mi4yJSA1MC42JSAvIDAuMSkiLCJoc2woMCA2Mi44JSA1MC42JSAvIDAuMSkiKX07CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uLmRlbGV0ZSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCA3Mi4yJSA1MC42JSkiLCJoc2woMCA2Mi44JSA1MC42JSkiKX07CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uLmRlbGV0ZTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDcyLjIlIDUwLjYlIC8gMC4xKSIsImhzbCgwIDYyLjglIDUwLjYlIC8gMC4xKSIpfTsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idXR0b24gZGVlcy1pY29uIHsKICAgICAgICB3aWR0aDogMTNweDsKICAgICAgICBoZWlnaHQ6IDEzcHg7CiAgICAgIH0KCiAgICAgIC5hZGQtaXRlbS1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgcGFkZGluZzogNnB4IDEwcHg7CiAgICAgIH0KCiAgICAgIC5hZGQtaW5wdXQgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHBhZGRpbmc6IDRweCA4cHg7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOHB4OwogICAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOSUpIiwiaHNsKDAgMCUgOTUlKSIpfTsKICAgICAgICBtaW4td2lkdGg6IDA7CiAgICAgIH0KCiAgICAgIC5hZGQtaW5wdXQ6OnBsYWNlaG9sZGVyIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDYzLjklKSIsImhzbCgwIDAlIDQ1LjElKSIpfTsKICAgICAgfQoKICAgICAgLmFkZC1pbnB1dDpkaXNhYmxlZCB7CiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgIH0KCiAgICAgIC5hZGQtYnV0dG9uIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgd2lkdGg6IDI0cHg7CiAgICAgICAgaGVpZ2h0OiAyNHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNDUuMSUpIiwiaHNsKDAgMCUgNjMuOSUpIil9OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAuYWRkLWJ1dHRvbjpob3Zlcjpub3QoOmRpc2FibGVkKSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk1LjElKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDklKSIsImhzbCgwIDAlIDk1JSkiKX07CiAgICAgIH0KCiAgICAgIC5hZGQtYnV0dG9uOmRpc2FibGVkIHsKICAgICAgICBvcGFjaXR5OiAwLjM7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICB9CgogICAgICAuYWRkLWJ1dHRvbiBkZWVzLWljb24gewogICAgICAgIHdpZHRoOiAxNHB4OwogICAgICAgIGhlaWdodDogMTRweDsKICAgICAgfQoKICAgICAgLmVtcHR5LXN0YXRlIHsKICAgICAgICBwYWRkaW5nOiAxNnB4IDEwcHg7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNjMuOSUpIiwiaHNsKDAgMCUgNDUuMSUpIil9OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgfQoKICAgICAgLnZhbGlkYXRpb24tbWVzc2FnZSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCA3Mi4yJSA1MC42JSkiLCJoc2woMCA2Mi44JSAzMC42JSkiKX07CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIG1hcmdpbi10b3A6IDRweDsKICAgICAgICBsaW5lLWhlaWdodDogMS40OwogICAgICB9CgogICAgICAvKiBTY3JvbGxiYXIgc3R5bGluZyAqLwogICAgICAubGlzdC1pdGVtczo6LXdlYmtpdC1zY3JvbGxiYXIgewogICAgICAgIHdpZHRoOiA4cHg7CiAgICAgIH0KCiAgICAgIC5saXN0LWl0ZW1zOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgIH0KCiAgICAgIC5saXN0LWl0ZW1zOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDg5LjglKSIsImhzbCgwIDAlIDI0LjklKSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgIH0KCiAgICAgIC5saXN0LWl0ZW1zOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDc5LjglKSIsImhzbCgwIDAlIDM0LjklKSIpfTsKICAgICAgfQoKICAgICAgLyogRGlzYWJsZSB0cmFuc2l0aW9ucyBkdXJpbmcgZHJvcCB0byBwcmV2ZW50IGZsYXNoICovCiAgICAgIC5saXN0LWl0ZW1zLmRyb3BwaW5nIC5saXN0LWl0ZW0gewogICAgICAgIHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgLyog4pSA4pSAIFRlcm1pbmFsLXN0eWxlIGlubGluZSBhdXRvY29tcGxldGUg4pSA4pSAICovCiAgICAgIC5hdXRvY29tcGxldGUtd3JhcHBlciB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGZsZXg6IDE7CiAgICAgICAgbWluLXdpZHRoOiAwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC5naG9zdC10ZXh0IHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIHBhZGRpbmc6IDRweCA4cHg7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOHB4OwogICAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLmdob3N0LXR5cGVkIHsKICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC5naG9zdC1jb21wbGV0aW9uIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDYzLjklKSIsImhzbCgwIDAlIDQ1LjElKSIpfTsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJpbnB1dC13cmFwcGVyIj4KICAgICAgICAke3RoaXMubGFiZWw/d2A8ZGVlcy1sYWJlbCAubGFiZWw9JHt0aGlzLmxhYmVsfSAucmVxdWlyZWQ9JHt0aGlzLnJlcXVpcmVkfT48L2RlZXMtbGFiZWw+YDoiIn0KICAgICAgICAKICAgICAgICA8ZGVlcy10aWxlIC5oZWFkaW5nPSIke3RoaXMudmFsdWUubGVuZ3RofSBpdGVtJHt0aGlzLnZhbHVlLmxlbmd0aCE9PTE/InMiOiIifSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJsaXN0LWl0ZW1zIj4KICAgICAgICAgICAgJHt0aGlzLnZhbHVlLmxlbmd0aD4wP3RoaXMudmFsdWUubWFwKChNZSxnZSk9PndgCiAgICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgY2xhc3M9Imxpc3QtaXRlbSAke3RoaXMuZHJhZ2dlZEluZGV4PT09Z2U/ImRyYWdnaW5nIjoiIn0iCiAgICAgICAgICAgICAgICBkcmFnZ2FibGU9IiR7dGhpcy5zb3J0YWJsZSYmIXRoaXMuZGlzYWJsZWR9IgogICAgICAgICAgICAgICAgQGRyYWdzdGFydD0ke0llPT50aGlzLmhhbmRsZURyYWdTdGFydChJZSxnZSl9CiAgICAgICAgICAgICAgICBAZHJhZ2VuZD0ke3RoaXMuaGFuZGxlRHJhZ0VuZH0KICAgICAgICAgICAgICAgIEBkcmFnb3Zlcj0ke0llPT50aGlzLmhhbmRsZURyYWdPdmVyKEllLGdlKX0KICAgICAgICAgICAgICAgIEBkcm9wPSR7SWU9PnRoaXMuaGFuZGxlRHJvcChJZSxnZSl9CiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgJHt0aGlzLnNvcnRhYmxlJiYhdGhpcy5kaXNhYmxlZD93YAogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkcmFnLWhhbmRsZSI+CiAgICAgICAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6Z3JpcFZlcnRpY2FsIn0+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgYDoiIn0KCiAgICAgICAgICAgICAgICAke3RoaXMuY2FuZGlkYXRlcy5sZW5ndGg+MD93YAogICAgICAgICAgICAgICAgICAke3RoaXMuY2FuZGlkYXRlcy5zb21lKEllPT5JZS52aWV3S2V5PT09TWUpP3dgCiAgICAgICAgICAgICAgICAgICAgPGRlZXMtaWNvbiBjbGFzcz0iY2FuZGlkYXRlLWNoZWNrIiAuaWNvbj0keyJsdWNpZGU6Y2hlY2sifT48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgICAgYDp3YAogICAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gY2xhc3M9ImNhbmRpZGF0ZS11bmtub3duIiAuaWNvbj0keyJsdWNpZGU6aGVscENpcmNsZSJ9PjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgICBgfQogICAgICAgICAgICAgICAgYDohdGhpcy5zb3J0YWJsZXx8dGhpcy5kaXNhYmxlZD93YAogICAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIGNsYXNzPSJpdGVtLWJ1bGxldCIgLmljb249JHsibHVjaWRlOmRvdCJ9PjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgYDoiIn0KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtLWNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAke3RoaXMuZWRpdGluZ0luZGV4PT09Z2U/d2AKICAgICAgICAgICAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InRleHQiCiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXRlbS1lZGl0LWlucHV0IgogICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPSR7dGhpcy5lZGl0aW5nVmFsdWV9CiAgICAgICAgICAgICAgICAgICAgICBAaW5wdXQ9JHtJZT0+dGhpcy5lZGl0aW5nVmFsdWU9SWUudGFyZ2V0LnZhbHVlfQogICAgICAgICAgICAgICAgICAgICAgQGtleWRvd249JHtJZT0+dGhpcy5oYW5kbGVFZGl0S2V5RG93bihJZSxnZSl9CiAgICAgICAgICAgICAgICAgICAgICBAYmx1cj0keygpPT50aGlzLnNhdmVFZGl0KGdlKX0KICAgICAgICAgICAgICAgICAgICAvPgogICAgICAgICAgICAgICAgICBgOndgCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbS10ZXh0IiBAZGJsY2xpY2s9JHsoKT0+IXRoaXMuZGlzYWJsZWQmJnRoaXMuc3RhcnRFZGl0KGdlKX0+CiAgICAgICAgICAgICAgICAgICAgICAke01lfQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICBgfQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0tYWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICR7dGhpcy5lZGl0aW5nSW5kZXg9PT1nZT93YAogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImFjdGlvbi1idXR0b24gc2F2ZSIgQGNsaWNrPSR7KCk9PnRoaXMuc2F2ZUVkaXQoZ2UpfT4KICAgICAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHsibHVjaWRlOmNoZWNrIn0+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiBjYW5jZWwiIEBjbGljaz0keygpPT50aGlzLmNhbmNlbEVkaXQoKX0+CiAgICAgICAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7Imx1Y2lkZTp4In0+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgIGA6d2AKICAgICAgICAgICAgICAgICAgICAke3RoaXMuZGlzYWJsZWQ/IiI6d2AKICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImFjdGlvbi1idXR0b24iIEBjbGljaz0keygpPT50aGlzLnN0YXJ0RWRpdChnZSl9PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7Imx1Y2lkZTpwZW5jaWwifT48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiBkZWxldGUiIEBjbGljaz0keygpPT50aGlzLnJlbW92ZUl0ZW0oZ2UpfT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6dHJhc2gyIn0+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICBgfQogICAgICAgICAgICAgICAgICBgfQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGApOndgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZW1wdHktc3RhdGUiPgogICAgICAgICAgICAgICAgTm8gaXRlbXMgYWRkZWQgeWV0CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGB9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIAogICAgICAgICAgJHshdGhpcy5kaXNhYmxlZCYmKCF0aGlzLm1heEl0ZW1zfHx0aGlzLnZhbHVlLmxlbmd0aDx0aGlzLm1heEl0ZW1zKT93YAogICAgICAgICAgICA8ZGl2IHNsb3Q9ImZvb3RlciIgY2xhc3M9ImFkZC1pdGVtLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXV0b2NvbXBsZXRlLXdyYXBwZXIiPgogICAgICAgICAgICAgICAgJHt0aGlzLmdob3N0VGV4dD93YAogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2hvc3QtdGV4dCI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Imdob3N0LXR5cGVkIj4ke3RoaXMuaW5wdXRWYWx1ZX08L3NwYW4+PHNwYW4gY2xhc3M9Imdob3N0LWNvbXBsZXRpb24iPiR7dGhpcy5naG9zdFRleHR9PC9zcGFuPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICBgOiIifQogICAgICAgICAgICAgICAgPGlucHV0CiAgICAgICAgICAgICAgICAgIHR5cGU9InRleHQiCiAgICAgICAgICAgICAgICAgIGNsYXNzPSJhZGQtaW5wdXQiCiAgICAgICAgICAgICAgICAgIC5wbGFjZWhvbGRlcj0ke3RoaXMucGxhY2Vob2xkZXJ9CiAgICAgICAgICAgICAgICAgIC52YWx1ZT0ke3RoaXMuaW5wdXRWYWx1ZX0KICAgICAgICAgICAgICAgICAgQGlucHV0PSR7dGhpcy5oYW5kbGVJbnB1dH0KICAgICAgICAgICAgICAgICAgQGtleWRvd249JHt0aGlzLmhhbmRsZUFkZEtleURvd259CiAgICAgICAgICAgICAgICAgID9kaXNhYmxlZD0ke3RoaXMuZGlzYWJsZWR9CiAgICAgICAgICAgICAgICAvPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgICAgIGNsYXNzPSJhZGQtYnV0dG9uIgogICAgICAgICAgICAgICAgQGNsaWNrPSR7dGhpcy5hZGRJdGVtfQogICAgICAgICAgICAgICAgP2Rpc2FibGVkPSR7IXRoaXMuaW5wdXRWYWx1ZS50cmltKCl9CiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6cGx1cyJ9PjwvZGVlcy1pY29uPgogICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIGA6IiJ9CiAgICAgICAgPC9kZWVzLXRpbGU+CgogICAgICAgICR7dGhpcy52YWxpZGF0aW9uVGV4dD93YAogICAgICAgICAgPGRpdiBjbGFzcz0idmFsaWRhdGlvbi1tZXNzYWdlIj4ke3RoaXMudmFsaWRhdGlvblRleHR9PC9kaXY+CiAgICAgICAgYDoiIn0KICAgICAgICAKICAgICAgICAke3RoaXMucmVuZGVyRGVzY3JpcHRpb24oKX0KICAgICAgPC9kaXY+CiAgICBgfWhhbmRsZUlucHV0KE1lKXt0aGlzLmlucHV0VmFsdWU9TWUudGFyZ2V0LnZhbHVlLHRoaXMudXBkYXRlR2hvc3RUZXh0KCl9dXBkYXRlR2hvc3RUZXh0KCl7aWYodGhpcy5jYW5kaWRhdGVzLmxlbmd0aD09PTB8fCF0aGlzLmlucHV0VmFsdWUpe3RoaXMuZ2hvc3RUZXh0PSIiLHRoaXMuY3VycmVudENhbmRpZGF0ZUluZGV4PS0xLHRoaXMubWF0Y2hpbmdDYW5kaWRhdGVzPVtdO3JldHVybn1sZXQgTWU9dGhpcy5pbnB1dFZhbHVlLnRvTG93ZXJDYXNlKCk7dGhpcy5tYXRjaGluZ0NhbmRpZGF0ZXM9dGhpcy5jYW5kaWRhdGVzLmZpbHRlcihnZT0+dGhpcy52YWx1ZS5pbmNsdWRlcyhnZS52aWV3S2V5KT8hMTpnZS52aWV3S2V5LnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChNZSkpLnNvcnQoKGdlLEllKT0+Z2Uudmlld0tleS5sZW5ndGgtSWUudmlld0tleS5sZW5ndGgpLHRoaXMubWF0Y2hpbmdDYW5kaWRhdGVzLmxlbmd0aD4wPyh0aGlzLmN1cnJlbnRDYW5kaWRhdGVJbmRleD0wLHRoaXMuZ2hvc3RUZXh0PXRoaXMubWF0Y2hpbmdDYW5kaWRhdGVzWzBdLnZpZXdLZXkuc2xpY2UodGhpcy5pbnB1dFZhbHVlLmxlbmd0aCkpOih0aGlzLmN1cnJlbnRDYW5kaWRhdGVJbmRleD0tMSx0aGlzLmdob3N0VGV4dD0iIil9aGFuZGxlQWRkS2V5RG93bihNZSl7aWYoTWUua2V5PT09IlRhYiImJnRoaXMuY2FuZGlkYXRlcy5sZW5ndGg+MCYmdGhpcy5pbnB1dFZhbHVlKXtpZihNZS5wcmV2ZW50RGVmYXVsdCgpLE1lLnNoaWZ0S2V5JiZ0aGlzLm1hdGNoaW5nQ2FuZGlkYXRlcy5sZW5ndGg+MCl7dGhpcy5jdXJyZW50Q2FuZGlkYXRlSW5kZXg9KHRoaXMuY3VycmVudENhbmRpZGF0ZUluZGV4KzEpJXRoaXMubWF0Y2hpbmdDYW5kaWRhdGVzLmxlbmd0aDtsZXQgZ2U9dGhpcy5tYXRjaGluZ0NhbmRpZGF0ZXNbdGhpcy5jdXJyZW50Q2FuZGlkYXRlSW5kZXhdO3RoaXMuZ2hvc3RUZXh0PWdlLnZpZXdLZXkuc2xpY2UodGhpcy5pbnB1dFZhbHVlLmxlbmd0aCl9ZWxzZSBpZighTWUuc2hpZnRLZXkmJnRoaXMuZ2hvc3RUZXh0JiZ0aGlzLm1hdGNoaW5nQ2FuZGlkYXRlcy5sZW5ndGg+MCl7bGV0IGdlPXRoaXMubWF0Y2hpbmdDYW5kaWRhdGVzW3RoaXMuY3VycmVudENhbmRpZGF0ZUluZGV4XTt0aGlzLmlucHV0VmFsdWU9Z2Uudmlld0tleSx0aGlzLmdob3N0VGV4dD0iIjtsZXQgSWU9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIuYWRkLWlucHV0Iik7SWUmJihJZS52YWx1ZT1nZS52aWV3S2V5KX1yZXR1cm59aWYoTWUua2V5PT09IkVzY2FwZSImJnRoaXMuZ2hvc3RUZXh0KXtNZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuZ2hvc3RUZXh0PSIiLHRoaXMuY3VycmVudENhbmRpZGF0ZUluZGV4PS0xLHRoaXMubWF0Y2hpbmdDYW5kaWRhdGVzPVtdO3JldHVybn1pZihNZS5rZXk9PT0iRW50ZXIiJiZ0aGlzLmlucHV0VmFsdWUudHJpbSgpKXtpZihNZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuY2FuZGlkYXRlcy5sZW5ndGg+MCl7bGV0IGdlPXRoaXMuY2FuZGlkYXRlcy5maW5kKEllPT5JZS52aWV3S2V5LnRvTG93ZXJDYXNlKCk9PT10aGlzLmlucHV0VmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCkpO2dlP3RoaXMuc2VsZWN0Q2FuZGlkYXRlKGdlKTp0aGlzLmFsbG93RnJlZWZvcm0mJih0aGlzLmdob3N0VGV4dD0iIix0aGlzLmN1cnJlbnRDYW5kaWRhdGVJbmRleD0tMSx0aGlzLm1hdGNoaW5nQ2FuZGlkYXRlcz1bXSx0aGlzLmFkZEl0ZW0oKSk7cmV0dXJufXRoaXMuYWRkSXRlbSgpfX1oYW5kbGVFZGl0S2V5RG93bihNZSxnZSl7TWUua2V5PT09IkVudGVyIj8oTWUucHJldmVudERlZmF1bHQoKSx0aGlzLnNhdmVFZGl0KGdlKSk6TWUua2V5PT09IkVzY2FwZSImJihNZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuY2FuY2VsRWRpdCgpKX1zZWxlY3RDYW5kaWRhdGUoTWUpe2lmKHRoaXMubWF4SXRlbXMmJnRoaXMudmFsdWUubGVuZ3RoPj10aGlzLm1heEl0ZW1zKXt0aGlzLnZhbGlkYXRpb25UZXh0PWBNYXhpbXVtICR7dGhpcy5tYXhJdGVtc30gaXRlbXMgYWxsb3dlZGAsc2V0VGltZW91dCgoKT0+dGhpcy52YWxpZGF0aW9uVGV4dD0iIiwzZTMpO3JldHVybn1pZighdGhpcy5hbGxvd0R1cGxpY2F0ZXMmJnRoaXMudmFsdWUuaW5jbHVkZXMoTWUudmlld0tleSkpe3RoaXMudmFsaWRhdGlvblRleHQ9IlRoaXMgaXRlbSBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgbGlzdCIsc2V0VGltZW91dCgoKT0+dGhpcy52YWxpZGF0aW9uVGV4dD0iIiwzZTMpO3JldHVybn10aGlzLmFkZGVkQ2FuZGlkYXRlc01hcC5zZXQoTWUudmlld0tleSxNZSksdGhpcy52YWx1ZT1bLi4udGhpcy52YWx1ZSxNZS52aWV3S2V5XSx0aGlzLmlucHV0VmFsdWU9IiIsdGhpcy5naG9zdFRleHQ9IiIsdGhpcy5jdXJyZW50Q2FuZGlkYXRlSW5kZXg9LTEsdGhpcy5tYXRjaGluZ0NhbmRpZGF0ZXM9W10sdGhpcy52YWxpZGF0aW9uVGV4dD0iIix0aGlzLmVtaXRDaGFuZ2UoKSx0aGlzLnVwZGF0ZUNvbXBsZXRlLnRoZW4oKCk9PntsZXQgZ2U9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIuYWRkLWlucHV0Iik7Z2UmJihnZS52YWx1ZT0iIixnZS5mb2N1cygpKX0pfWdldENhbmRpZGF0ZUZvckl0ZW0oTWUpe3JldHVybiB0aGlzLmFkZGVkQ2FuZGlkYXRlc01hcC5nZXQoTWUpfWdldEFkZGVkQ2FuZGlkYXRlcygpe3JldHVybiB0aGlzLnZhbHVlLm1hcChNZT0+dGhpcy5hZGRlZENhbmRpZGF0ZXNNYXAuZ2V0KE1lKSkuZmlsdGVyKE1lPT5NZSE9PXZvaWQgMCl9YWRkSXRlbSgpe2xldCBNZT10aGlzLmlucHV0VmFsdWUudHJpbSgpO2lmKE1lKXtpZighdGhpcy5hbGxvd0R1cGxpY2F0ZXMmJnRoaXMudmFsdWUuaW5jbHVkZXMoTWUpKXt0aGlzLnZhbGlkYXRpb25UZXh0PSJUaGlzIGl0ZW0gYWxyZWFkeSBleGlzdHMgaW4gdGhlIGxpc3QiLHNldFRpbWVvdXQoKCk9PnRoaXMudmFsaWRhdGlvblRleHQ9IiIsM2UzKTtyZXR1cm59aWYodGhpcy5tYXhJdGVtcyYmdGhpcy52YWx1ZS5sZW5ndGg+PXRoaXMubWF4SXRlbXMpe3RoaXMudmFsaWRhdGlvblRleHQ9YE1heGltdW0gJHt0aGlzLm1heEl0ZW1zfSBpdGVtcyBhbGxvd2VkYCxzZXRUaW1lb3V0KCgpPT50aGlzLnZhbGlkYXRpb25UZXh0PSIiLDNlMyk7cmV0dXJufXRoaXMudmFsdWU9Wy4uLnRoaXMudmFsdWUsTWVdLHRoaXMuaW5wdXRWYWx1ZT0iIix0aGlzLnZhbGlkYXRpb25UZXh0PSIiLHRoaXMuZW1pdENoYW5nZSgpLHRoaXMudXBkYXRlQ29tcGxldGUudGhlbigoKT0+e2xldCBnZT10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5hZGQtaW5wdXQiKTtnZSYmKGdlLnZhbHVlPSIiLGdlLmZvY3VzKCkpfSl9fXN0YXJ0RWRpdChNZSl7dGhpcy5lZGl0aW5nSW5kZXg9TWUsdGhpcy5lZGl0aW5nVmFsdWU9dGhpcy52YWx1ZVtNZV0sdGhpcy51cGRhdGVDb21wbGV0ZS50aGVuKCgpPT57bGV0IGdlPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLml0ZW0tZWRpdC1pbnB1dCIpO2dlJiYoZ2UuZm9jdXMoKSxnZS5zZWxlY3QoKSl9KX1zYXZlRWRpdChNZSl7bGV0IGdlPXRoaXMuZWRpdGluZ1ZhbHVlLnRyaW0oKTtpZighZ2Upe3RoaXMuY2FuY2VsRWRpdCgpO3JldHVybn1pZighdGhpcy5hbGxvd0R1cGxpY2F0ZXMmJmdlIT09dGhpcy52YWx1ZVtNZV0mJnRoaXMudmFsdWUuaW5jbHVkZXMoZ2UpKXt0aGlzLnZhbGlkYXRpb25UZXh0PSJUaGlzIGl0ZW0gYWxyZWFkeSBleGlzdHMgaW4gdGhlIGxpc3QiLHNldFRpbWVvdXQoKCk9PnRoaXMudmFsaWRhdGlvblRleHQ9IiIsM2UzKTtyZXR1cm59bGV0IEllPVsuLi50aGlzLnZhbHVlXTtJZVtNZV09Z2UsdGhpcy52YWx1ZT1JZSx0aGlzLmVkaXRpbmdJbmRleD0tMSx0aGlzLmVkaXRpbmdWYWx1ZT0iIix0aGlzLnZhbGlkYXRpb25UZXh0PSIiLHRoaXMuZW1pdENoYW5nZSgpfWNhbmNlbEVkaXQoKXt0aGlzLmVkaXRpbmdJbmRleD0tMSx0aGlzLmVkaXRpbmdWYWx1ZT0iIn1hc3luYyByZW1vdmVJdGVtKE1lKXtpZih0aGlzLmNvbmZpcm1EZWxldGUmJiFhd2FpdCB0aGlzLnNob3dDb25maXJtRGlhbG9nKGBEZWxldGUgIiR7dGhpcy52YWx1ZVtNZV19Ij9gKSlyZXR1cm47bGV0IGdlPXRoaXMudmFsdWVbTWVdO3RoaXMuYWRkZWRDYW5kaWRhdGVzTWFwLmRlbGV0ZShnZSksdGhpcy52YWx1ZT10aGlzLnZhbHVlLmZpbHRlcigoSWUsY2UpPT5jZSE9PU1lKSx0aGlzLmVtaXRDaGFuZ2UoKX1hc3luYyBzaG93Q29uZmlybURpYWxvZyhNZSl7cmV0dXJuIGNvbmZpcm0oTWUpfWhhbmRsZURyYWdTdGFydChNZSxnZSl7aWYoIXRoaXMuc29ydGFibGV8fHRoaXMuZGlzYWJsZWQpcmV0dXJuO3RoaXMuZHJhZ2dlZEluZGV4PWdlLHRoaXMudGFyZ2V0SW5kZXg9Z2UsTWUuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQ9Im1vdmUiLE1lLmRhdGFUcmFuc2Zlci5zZXREYXRhKCJ0ZXh0L3BsYWluIixnZS50b1N0cmluZygpKTtsZXQgSWU9bmV3IEltYWdlO0llLnNyYz0iZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoQVFBQkFJQUFBQVVFQkFBQUFDd0FBQUFBQVFBQkFBQUNBa1FCQURzPSIsTWUuZGF0YVRyYW5zZmVyLnNldERyYWdJbWFnZShJZSwwLDApLHRoaXMuZHJhZ1N0YXJ0WT1NZS5jbGllbnRZLHRoaXMuZHJhZ0N1cnJlbnRZPU1lLmNsaWVudFk7bGV0IGNlPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLmxpc3QtaXRlbXMiKSxkZT1BcnJheS5mcm9tKGNlPy5xdWVyeVNlbGVjdG9yQWxsKCIubGlzdC1pdGVtIil8fFtdKTtkZVtnZV0mJih0aGlzLml0ZW1IZWlnaHQ9ZGVbZ2VdLm9mZnNldEhlaWdodCksdGhpcy5vcmlnaW5hbEl0ZW1SZWN0cz1kZS5tYXAoTGU9PkxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSxjZT8uY2xhc3NMaXN0LmFkZCgiaXMtZHJhZ2dpbmciKSx0aGlzLmJvdW5kSGFuZGxlR2xvYmFsRHJhZ092ZXI9dGhpcy5oYW5kbGVHbG9iYWxEcmFnT3Zlci5iaW5kKHRoaXMpLHRoaXMuYm91bmRIYW5kbGVHbG9iYWxEcmFnRW5kPXRoaXMuaGFuZGxlR2xvYmFsRHJhZ0VuZC5iaW5kKHRoaXMpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdvdmVyIix0aGlzLmJvdW5kSGFuZGxlR2xvYmFsRHJhZ092ZXIpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdlbmQiLHRoaXMuYm91bmRIYW5kbGVHbG9iYWxEcmFnRW5kKX1oYW5kbGVHbG9iYWxEcmFnT3ZlcihNZSl7aWYoTWUucHJldmVudERlZmF1bHQoKSx0aGlzLmRyYWdnZWRJbmRleD09PS0xKXJldHVybjt0aGlzLmRyYWdDdXJyZW50WT1NZS5jbGllbnRZO2xldCBnZT10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5saXN0LWl0ZW1zIik7aWYoIWdlKXJldHVybjtsZXQgSWU9QXJyYXkuZnJvbShnZS5xdWVyeVNlbGVjdG9yQWxsKCIubGlzdC1pdGVtIikpLGNlPUllW3RoaXMuZHJhZ2dlZEluZGV4XTtpZighY2UpcmV0dXJuO2xldCBkZT10aGlzLmRyYWdDdXJyZW50WS10aGlzLmRyYWdTdGFydFk7Y2Uuc3R5bGUudHJhbnNmb3JtPWB0cmFuc2xhdGVZKCR7ZGV9cHgpYDtsZXQgTGU9dGhpcy5vcmlnaW5hbEl0ZW1SZWN0c1t0aGlzLmRyYWdnZWRJbmRleF07aWYoIUxlKXJldHVybjtsZXQgS2U9TGUudG9wK0xlLmhlaWdodC8yK2RlLFllPXRoaXMuZHJhZ2dlZEluZGV4O2ZvcihsZXQgb3Q9MDtvdDxJZS5sZW5ndGg7b3QrKyl7aWYob3Q9PT10aGlzLmRyYWdnZWRJbmRleCljb250aW51ZTtsZXQgVXQ9dGhpcy5vcmlnaW5hbEl0ZW1SZWN0c1tvdF07aWYoIVV0KWNvbnRpbnVlO2xldCBadD1VdC50b3ArVXQuaGVpZ2h0LzI7aWYoSWVbb3RdLmNsYXNzTGlzdC5jb250YWlucygibW92ZS11cCIpP1p0LT10aGlzLml0ZW1IZWlnaHQ6SWVbb3RdLmNsYXNzTGlzdC5jb250YWlucygibW92ZS1kb3duIikmJihadCs9dGhpcy5pdGVtSGVpZ2h0KSxLZTxadCYmb3Q8dGhpcy5kcmFnZ2VkSW5kZXgpe1llPW90O2JyZWFrfWVsc2UgS2U+WnQmJm90PnRoaXMuZHJhZ2dlZEluZGV4JiYoWWU9b3QpfVllIT09dGhpcy50YXJnZXRJbmRleCYmKHRoaXMudGFyZ2V0SW5kZXg9WWUsdGhpcy51cGRhdGVJdGVtUG9zaXRpb25zKEllKSl9dXBkYXRlSXRlbVBvc2l0aW9ucyhNZSl7bGV0IGdlPXRoaXMuZHJhZ2dlZEluZGV4LEllPXRoaXMudGFyZ2V0SW5kZXgsY2U9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIubGlzdC1pdGVtcyIpO2NlJiZjZS5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1pdGVtLWhlaWdodCIsYCR7dGhpcy5pdGVtSGVpZ2h0fXB4YCksTWUuZm9yRWFjaCgoZGUsTGUpPT57TGUhPT1nZSYmKGRlLmNsYXNzTGlzdC5yZW1vdmUoIm1vdmUtdXAiLCJtb3ZlLWRvd24iKSxkZS5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1pdGVtLWhlaWdodCIsYCR7dGhpcy5pdGVtSGVpZ2h0fXB4YCksZ2U8SWU/TGU+Z2UmJkxlPD1JZSYmZGUuY2xhc3NMaXN0LmFkZCgibW92ZS11cCIpOmdlPkllJiZMZT49SWUmJkxlPGdlJiZkZS5jbGFzc0xpc3QuYWRkKCJtb3ZlLWRvd24iKSl9KX1oYW5kbGVHbG9iYWxEcmFnRW5kKCl7dGhpcy5ib3VuZEhhbmRsZUdsb2JhbERyYWdPdmVyJiYoZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZHJhZ292ZXIiLHRoaXMuYm91bmRIYW5kbGVHbG9iYWxEcmFnT3ZlciksdGhpcy5ib3VuZEhhbmRsZUdsb2JhbERyYWdPdmVyPW51bGwpLHRoaXMuYm91bmRIYW5kbGVHbG9iYWxEcmFnRW5kJiYoZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZHJhZ2VuZCIsdGhpcy5ib3VuZEhhbmRsZUdsb2JhbERyYWdFbmQpLHRoaXMuYm91bmRIYW5kbGVHbG9iYWxEcmFnRW5kPW51bGwpO2xldCBNZT10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5saXN0LWl0ZW1zIiksZ2U9TWU/LnF1ZXJ5U2VsZWN0b3JBbGwoIi5saXN0LWl0ZW0iKSxJZT1nZT8uW3RoaXMuZHJhZ2dlZEluZGV4XTtpZih0aGlzLmRyYWdnZWRJbmRleD09PS0xfHx0aGlzLnRhcmdldEluZGV4PT09LTF8fHRoaXMuZHJhZ2dlZEluZGV4PT09dGhpcy50YXJnZXRJbmRleCl7aWYoSWUmJnRoaXMuZHJhZ2dlZEluZGV4IT09LTEpe0llLnN0eWxlLnRyYW5zaXRpb249InRyYW5zZm9ybSAwLjE1cyBlYXNlIixJZS5zdHlsZS50cmFuc2Zvcm09InRyYW5zbGF0ZVkoMCkiO2xldCBvdD0hMSxVdD1pKCgpPT57b3R8fChvdD0hMCxJZS5yZW1vdmVFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIixVdCksdGhpcy5jbGVhbnVwRHJhZ1N0YXRlKE1lLGdlKSl9LCJvblJldHVybiIpO0llLmFkZEV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLFV0LHtvbmNlOiEwfSksc2V0VGltZW91dChVdCwyMDApfWVsc2UgdGhpcy5jbGVhbnVwRHJhZ1N0YXRlKE1lLGdlKTtyZXR1cm59bGV0IGNlPXRoaXMub3JpZ2luYWxJdGVtUmVjdHNbdGhpcy5kcmFnZ2VkSW5kZXhdLGRlPXRoaXMub3JpZ2luYWxJdGVtUmVjdHNbdGhpcy50YXJnZXRJbmRleF07aWYoIWNlfHwhZGV8fCFJZSl7dGhpcy5jbGVhbnVwRHJhZ1N0YXRlKE1lLGdlKTtyZXR1cm59bGV0IExlO3RoaXMudGFyZ2V0SW5kZXg+dGhpcy5kcmFnZ2VkSW5kZXg/TGU9ZGUuYm90dG9tLWNlLmJvdHRvbTpMZT1kZS50b3AtY2UudG9wLEllLnN0eWxlLnRyYW5zaXRpb249InRyYW5zZm9ybSAwLjE1cyBlYXNlIixJZS5zdHlsZS50cmFuc2Zvcm09YHRyYW5zbGF0ZVkoJHtMZX1weClgO2xldCBLZT0hMSxZZT1pKCgpPT57aWYoS2UpcmV0dXJuO0tlPSEwLEllLnJlbW92ZUV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLFllKSxNZT8uY2xhc3NMaXN0LmFkZCgiZHJvcHBpbmciKSxNZT8ub2Zmc2V0SGVpZ2h0LGdlPy5mb3JFYWNoKFp0PT57WnQuY2xhc3NMaXN0LnJlbW92ZSgibW92ZS11cCIsIm1vdmUtZG93biIsImRyYWdnaW5nIiksWnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoInRyYW5zZm9ybSIpLFp0LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJ0cmFuc2l0aW9uIil9KTtsZXQgb3Q9Wy4uLnRoaXMudmFsdWVdLFtVdF09b3Quc3BsaWNlKHRoaXMuZHJhZ2dlZEluZGV4LDEpO290LnNwbGljZSh0aGlzLnRhcmdldEluZGV4LDAsVXQpLHRoaXMudmFsdWU9b3QsdGhpcy5lbWl0Q2hhbmdlKCksdGhpcy5kcmFnZ2VkSW5kZXg9LTEsdGhpcy5kcmFnT3ZlckluZGV4PS0xLHRoaXMudGFyZ2V0SW5kZXg9LTEsdGhpcy5kcmFnU3RhcnRZPTAsdGhpcy5kcmFnQ3VycmVudFk9MCx0aGlzLm9yaWdpbmFsSXRlbVJlY3RzPVtdLHRoaXMudXBkYXRlQ29tcGxldGUudGhlbigoKT0+e2xldCBadD10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3JBbGwoIi5saXN0LWl0ZW0iKTtadD8uZm9yRWFjaChqYT0+e2phLnN0eWxlLnRyYW5zaXRpb249Im5vbmUifSksdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIubGlzdC1pdGVtcyIpPy5vZmZzZXRIZWlnaHQscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57WnQ/LmZvckVhY2goamE9PntqYS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgidHJhbnNpdGlvbiIpfSksTWU/LmNsYXNzTGlzdC5yZW1vdmUoImRyb3BwaW5nIiwiaXMtZHJhZ2dpbmciKX0pfSl9LCJvblRyYW5zaXRpb25FbmQiKTtJZS5hZGRFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIixZZSx7b25jZTohMH0pLHNldFRpbWVvdXQoWWUsMjAwKX1jbGVhbnVwRHJhZ1N0YXRlKE1lLGdlKXtNZT8uY2xhc3NMaXN0LmFkZCgiZHJvcHBpbmciKSxNZT8ub2Zmc2V0SGVpZ2h0LGdlPy5mb3JFYWNoKEllPT57SWUuY2xhc3NMaXN0LnJlbW92ZSgibW92ZS11cCIsIm1vdmUtZG93biIsImRyYWdnaW5nIiksSWUuc3R5bGUucmVtb3ZlUHJvcGVydHkoInRyYW5zZm9ybSIpLEllLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJ0cmFuc2l0aW9uIil9KSx0aGlzLmRyYWdnZWRJbmRleD0tMSx0aGlzLmRyYWdPdmVySW5kZXg9LTEsdGhpcy50YXJnZXRJbmRleD0tMSx0aGlzLmRyYWdTdGFydFk9MCx0aGlzLmRyYWdDdXJyZW50WT0wLHRoaXMub3JpZ2luYWxJdGVtUmVjdHM9W10sdGhpcy51cGRhdGVDb21wbGV0ZS50aGVuKCgpPT57bGV0IEllPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvckFsbCgiLmxpc3QtaXRlbSIpO0llPy5mb3JFYWNoKGNlPT57Y2Uuc3R5bGUudHJhbnNpdGlvbj0ibm9uZSJ9KSx0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5saXN0LWl0ZW1zIik/Lm9mZnNldEhlaWdodCxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntJZT8uZm9yRWFjaChjZT0+e2NlLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJ0cmFuc2l0aW9uIil9KSxNZT8uY2xhc3NMaXN0LnJlbW92ZSgiZHJvcHBpbmciLCJpcy1kcmFnZ2luZyIpfSl9KX1oYW5kbGVEcmFnRW5kKCl7dGhpcy5oYW5kbGVHbG9iYWxEcmFnRW5kKCl9aGFuZGxlRHJhZ092ZXIoTWUsZ2UpeyF0aGlzLnNvcnRhYmxlfHx0aGlzLmRpc2FibGVkfHwoTWUucHJldmVudERlZmF1bHQoKSxNZS5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdD0ibW92ZSIpfWhhbmRsZURyYWdMZWF2ZSgpe31oYW5kbGVEcm9wKE1lLGdlKXshdGhpcy5zb3J0YWJsZXx8dGhpcy5kaXNhYmxlZHx8TWUucHJldmVudERlZmF1bHQoKX1lbWl0Q2hhbmdlKCl7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY2hhbmdlIix7ZGV0YWlsOnt2YWx1ZTp0aGlzLnZhbHVlfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpLHRoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMpfWdldFZhbHVlKCl7cmV0dXJuIHRoaXMudmFsdWV9c2V0VmFsdWUoTWUpe3RoaXMudmFsdWU9TWV8fFtdfWFzeW5jIHZhbGlkYXRlKCl7cmV0dXJuIHRoaXMucmVxdWlyZWQmJighdGhpcy52YWx1ZXx8dGhpcy52YWx1ZS5sZW5ndGg9PT0wKT8odGhpcy52YWxpZGF0aW9uVGV4dD0iQXQgbGVhc3Qgb25lIGl0ZW0gaXMgcmVxdWlyZWQiLCExKTp0aGlzLm1pbkl0ZW1zJiZ0aGlzLnZhbHVlLmxlbmd0aDx0aGlzLm1pbkl0ZW1zPyh0aGlzLnZhbGlkYXRpb25UZXh0PWBBdCBsZWFzdCAke3RoaXMubWluSXRlbXN9IGl0ZW1zIHJlcXVpcmVkYCwhMSk6KHRoaXMudmFsaWRhdGlvblRleHQ9IiIsITApfXN0YXRpY3tmYShhLHQpfX07cmV0dXJuIHN0PWF9KSgpfSk7dmFyIE5XYSxSV2EsT1dhLEZXYSxCV2EsSFdhLHFXYSxBMGEsTjBhPWcoKCk9PntwZSgpO0l0KCk7Zm8oKTtOV2E9aSgoKT0+e2xldCBzPURhdGUubm93KCk7cmV0dXJuW3tpZDpgdGl0bGUtJHtzfWAsdHlwZToiaGVhZGluZy0xIixjb250ZW50OiJTeXN0ZW0gUGVyZm9ybWFuY2UgUmVwb3J0In0se2lkOmBkYXRlLSR7cysxfWAsdHlwZToicGFyYWdyYXBoIixjb250ZW50OmBHZW5lcmF0ZWQgb246ICR7bmV3IERhdGUoKS50b0xvY2FsZVN0cmluZygpfWB9LHtpZDpgc3VtbWFyeS1oZWFkaW5nLSR7cysyfWAsdHlwZToiaGVhZGluZy0yIixjb250ZW50OiJFeGVjdXRpdmUgU3VtbWFyeSJ9LHtpZDpgc3VtbWFyeS0ke3MrM31gLHR5cGU6InBhcmFncmFwaCIsY29udGVudDoiVGhpcyByZXBvcnQgcHJvdmlkZXMgYW4gYW5hbHlzaXMgb2Ygc3lzdGVtIHBlcmZvcm1hbmNlIG1ldHJpY3Mgb3ZlciB0aGUgbGFzdCAzMCBkYXlzLiJ9LHtpZDpgbWV0cmljcy1oZWFkaW5nLSR7cys0fWAsdHlwZToiaGVhZGluZy0yIixjb250ZW50OiJLZXkgTWV0cmljcyJ9LHtpZDpgbWV0cmljcy1saXN0LSR7cys1fWAsdHlwZToibGlzdCIsY29udGVudDpgQXZlcmFnZSByZXNwb25zZSB0aW1lOiAxMjRtcwpVcHRpbWU6IDk5Ljk3JQpDUFUgdXRpbGl6YXRpb246IDQ1JQpNZW1vcnkgdXNhZ2U6IDIuM0dCIC8gOEdCYCxtZXRhZGF0YTp7bGlzdFR5cGU6ImJ1bGxldCJ9fSx7aWQ6YGFuYWx5c2lzLWhlYWRpbmctJHtzKzZ9YCx0eXBlOiJoZWFkaW5nLTIiLGNvbnRlbnQ6IlBlcmZvcm1hbmNlIEFuYWx5c2lzIn0se2lkOmBhbmFseXNpcy1xdW90ZS0ke3MrN31gLHR5cGU6InF1b3RlIixjb250ZW50OiJTeXN0ZW0gcGVyZm9ybWFuY2UgcmVtYWlucyB3aXRoaW4gYWNjZXB0YWJsZSBwYXJhbWV0ZXJzIHdpdGggcm9vbSBmb3Igb3B0aW1pemF0aW9uIGluIG1lbW9yeSBtYW5hZ2VtZW50LiJ9LHtpZDpgY29kZS1oZWFkaW5nLSR7cys4fWAsdHlwZToiaGVhZGluZy0zIixjb250ZW50OiJTYW1wbGUgUXVlcnkgUGVyZm9ybWFuY2UifSx7aWQ6YGNvZGUtYmxvY2stJHtzKzl9YCx0eXBlOiJjb2RlIixjb250ZW50OmBTRUxFQ1QgQVZHKHJlc3BvbnNlX3RpbWUpIGFzIGF2Z190aW1lLAogICAgICAgQ09VTlQoKikgYXMgdG90YWxfcmVxdWVzdHMsCiAgICAgICBEQVRFKGNyZWF0ZWRfYXQpIGFzIGRhdGUKRlJPTSBwZXJmb3JtYW5jZV9sb2dzCldIRVJFIGNyZWF0ZWRfYXQgPj0gTk9XKCkgLSBJTlRFUlZBTCAzMCBEQVkKR1JPVVAgQlkgREFURShjcmVhdGVkX2F0KQpPUkRFUiBCWSBkYXRlIERFU0M7YCxtZXRhZGF0YTp7bGFuZ3VhZ2U6InNxbCJ9fSx7aWQ6YGRpdmlkZXItJHtzKzEwfWAsdHlwZToiZGl2aWRlciIsY29udGVudDoiIn0se2lkOmBmb290ZXItJHtzKzExfWAsdHlwZToicGFyYWdyYXBoIixjb250ZW50OiJSZXBvcnQgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgU3lzdGVtIE1vbml0b3IgdjIuNS4wIn1dfSwiZ2VuZXJhdGVSZXBvcnRCbG9ja3MiKSxSV2E9aSgoKT0+e2xldCBzPURhdGUubm93KCk7cmV0dXJuW3tpZDpgcmVjaXBlLXRpdGxlLSR7c31gLHR5cGU6ImhlYWRpbmctMSIsY29udGVudDoiQ2xhc3NpYyBNYXJnaGVyaXRhIFBpenphIn0se2lkOmByZWNpcGUtaW50cm8tJHtzKzF9YCx0eXBlOiJwYXJhZ3JhcGgiLGNvbnRlbnQ6IkEgdHJhZGl0aW9uYWwgSXRhbGlhbiBwaXp6YSB3aXRoIGZyZXNoIGJhc2lsLCBtb3p6YXJlbGxhLCBhbmQgdG9tYXRvIHNhdWNlLiJ9LHtpZDpgaW5ncmVkaWVudHMtaGVhZGluZy0ke3MrMn1gLHR5cGU6ImhlYWRpbmctMiIsY29udGVudDoiXHV7MUYzNTV9IEluZ3JlZGllbnRzIn0se2lkOmBkb3VnaC1oZWFkaW5nLSR7cyszfWAsdHlwZToiaGVhZGluZy0zIixjb250ZW50OiJGb3IgdGhlIERvdWdoOiJ9LHtpZDpgZG91Z2gtbGlzdC0ke3MrNH1gLHR5cGU6Imxpc3QiLGNvbnRlbnQ6YDUwMGcgdGlwbyAiMDAiIGZsb3VyCjMyNW1sIHdhcm0gd2F0ZXIKMTBnIHNhbHQKN2cgYWN0aXZlIGRyeSB5ZWFzdAoyIHRic3Agb2xpdmUgb2lsYCxtZXRhZGF0YTp7bGlzdFR5cGU6ImJ1bGxldCJ9fSx7aWQ6YHRvcHBpbmdzLWhlYWRpbmctJHtzKzV9YCx0eXBlOiJoZWFkaW5nLTMiLGNvbnRlbnQ6IkZvciB0aGUgVG9wcGluZ3M6In0se2lkOmB0b3BwaW5ncy1saXN0LSR7cys2fWAsdHlwZToibGlzdCIsY29udGVudDpgNDAwZyBjYW5uZWQgU2FuIE1hcnphbm8gdG9tYXRvZXMKMjUwZyBmcmVzaCBtb3p6YXJlbGxhCkZyZXNoIGJhc2lsIGxlYXZlcwpFeHRyYSB2aXJnaW4gb2xpdmUgb2lsClNhbHQgYW5kIHBlcHBlciB0byB0YXN0ZWAsbWV0YWRhdGE6e2xpc3RUeXBlOiJidWxsZXQifX0se2lkOmBpbnN0cnVjdGlvbnMtaGVhZGluZy0ke3MrN31gLHR5cGU6ImhlYWRpbmctMiIsY29udGVudDoiXHV7MUY0Njh9XHUyMDBEXHV7MUYzNzN9IEluc3RydWN0aW9ucyJ9LHtpZDpgc3RlcHMtbGlzdC0ke3MrOH1gLHR5cGU6Imxpc3QiLGNvbnRlbnQ6YERpc3NvbHZlIHllYXN0IGluIHdhcm0gd2F0ZXIgYW5kIGxldCBzdGFuZCBmb3IgNSBtaW51dGVzCk1peCBmbG91ciBhbmQgc2FsdCwgY3JlYXRlIGEgd2VsbCBpbiBjZW50ZXIKQWRkIHllYXN0IG1peHR1cmUgYW5kIG9saXZlIG9pbApLbmVhZCBmb3IgMTAgbWludXRlcyB1bnRpbCBzbW9vdGgKTGV0IHJpc2UgZm9yIDEtMiBob3VycyB1bnRpbCBkb3VibGVkClB1bmNoIGRvd24gYW5kIGRpdmlkZSBpbnRvIHBvcnRpb25zClJvbGwgb3V0IGVhY2ggcG9ydGlvbiB0byAxMi1pbmNoIGNpcmNsZXMKVG9wIHdpdGggY3J1c2hlZCB0b21hdG9lcywgbW96emFyZWxsYSwgYW5kIGJhc2lsCkJha2UgYXQgNDc1XHhCMEYgKDI0NVx4QjBDKSBmb3IgMTAtMTIgbWludXRlc2AsbWV0YWRhdGE6e2xpc3RUeXBlOiJvcmRlcmVkIn19LHtpZDpgdGlwLSR7cys5fWAsdHlwZToicXVvdGUiLGNvbnRlbnQ6IlBybyB0aXA6IEZvciBhbiBhdXRoZW50aWMgdGFzdGUsIHVzZSBhIHBpenphIHN0b25lIGFuZCBwcmVoZWF0IGl0IGluIHRoZSBvdmVuIGZvciBhdCBsZWFzdCAzMCBtaW51dGVzIGJlZm9yZSBiYWtpbmcuIn0se2lkOmBkaXZpZGVyLSR7cysxMH1gLHR5cGU6ImRpdmlkZXIiLGNvbnRlbnQ6IiJ9LHtpZDpgc2VydmluZ3MtJHtzKzExfWAsdHlwZToicGFyYWdyYXBoIixjb250ZW50OiJTZXJ2aW5nczogNCBwaXp6YXMgfCBQcmVwIHRpbWU6IDIgaG91cnMgfCBDb29rIHRpbWU6IDEyIG1pbnV0ZXMifV19LCJnZW5lcmF0ZVJlY2lwZUJsb2NrcyIpLE9XYT1pKHM9PntsZXQgZT17fTtyZXR1cm4gZS5iYXNpYz1zLnF1ZXJ5U2VsZWN0b3IoIiNlZGl0b3ItYmFzaWMiKSxlLmFydGljbGU9cy5xdWVyeVNlbGVjdG9yKCIjZWRpdG9yLWFydGljbGUiKSxlLmRyYWdEcm9wPXMucXVlcnlTZWxlY3RvcigiI2VkaXRvci1kcmFnZHJvcCIpLGUudHV0b3JpYWw9cy5xdWVyeVNlbGVjdG9yKCIjZWRpdG9yLXR1dG9yaWFsIiksZS5tZWV0aW5nPXMucXVlcnlTZWxlY3RvcigiI2VkaXRvci1tZWV0aW5nIiksZS5yZWNpcGU9cy5xdWVyeVNlbGVjdG9yKCIjZWRpdG9yLXJlY2lwZSIpLGUudGVjaG5pY2FsPXMucXVlcnlTZWxlY3RvcigiI2VkaXRvci10ZWNobmljYWwiKSxlLmZvcm1JbnRlZ3JhdGlvbj1zLnF1ZXJ5U2VsZWN0b3IoIiNlZGl0b3ItZm9ybS1pbnRlZ3JhdGlvbiIpLGUucHJvZ3JhbW1hdGljPXMucXVlcnlTZWxlY3RvcigiI2VkaXRvci1wcm9ncmFtbWF0aWMiKSxlLmV4cG9ydERlbW89cy5xdWVyeVNlbGVjdG9yKCIjZWRpdG9yLWV4cG9ydCIpLGV9LCJpbml0aWFsaXplRWRpdG9ycyIpLEZXYT1pKChzLGUpPT57bGV0IHQ9cy5xdWVyeVNlbGVjdG9yKCIjYnRuLWdlbmVyYXRlLXJlcG9ydCIpLGE9cy5xdWVyeVNlbGVjdG9yKCIjYnRuLWdlbmVyYXRlLXJlY2lwZSIpLHI9cy5xdWVyeVNlbGVjdG9yKCIjYnRuLWNsZWFyLWVkaXRvciIpO3QmJnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57ZS5pbXBvcnRCbG9ja3MoTldhKCkpfSksYSYmYS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PntlLmltcG9ydEJsb2NrcyhSV2EoKSl9KSxyJiZyLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e2UuaW1wb3J0QmxvY2tzKFtdKX0pfSwic2V0dXBQcm9ncmFtbWF0aWNEZW1vIiksQldhPWkoKHMsZSk9PntsZXQgdD1zLnF1ZXJ5U2VsZWN0b3IoIiNidG4tZXhwb3J0LWJsb2NrcyIpLGE9cy5xdWVyeVNlbGVjdG9yKCIjYnRuLWV4cG9ydC1odG1sIikscj1zLnF1ZXJ5U2VsZWN0b3IoIiNidG4tZXhwb3J0LW1hcmtkb3duIiksbj1zLnF1ZXJ5U2VsZWN0b3IoIiNidG4tc2F2ZS1zdGF0ZSIpLG89cy5xdWVyeVNlbGVjdG9yKCIjYnRuLXJlc3RvcmUtc3RhdGUiKSxsPW51bGw7dCYmdC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PntsZXQgcD1lLmV4cG9ydEJsb2NrcygpO2NvbnNvbGUubG9nKCJFeHBvcnRlZCBibG9ja3M6IixwKSxhbGVydChgRXhwb3J0ZWQgJHtwLmxlbmd0aH0gYmxvY2tzIHRvIGNvbnNvbGUuIENoZWNrIGRldmVsb3BlciB0b29scy5gKX0pLGEmJmEuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57bGV0IHA9ZS5leHBvcnRBc0h0bWwoKTtjb25zb2xlLmxvZygiSFRNTCBFeHBvcnQ6IixwKSxhbGVydCgiSFRNTCBleHBvcnRlZCB0byBjb25zb2xlLiBDaGVjayBkZXZlbG9wZXIgdG9vbHMuIil9KSxyJiZyLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e2xldCBwPWUuZXhwb3J0QXNNYXJrZG93bigpO2NvbnNvbGUubG9nKCJNYXJrZG93biBFeHBvcnQ6IixwKSxhbGVydCgiTWFya2Rvd24gZXhwb3J0ZWQgdG8gY29uc29sZS4gQ2hlY2sgZGV2ZWxvcGVyIHRvb2xzLiIpfSksbiYmbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PntsPWUuZXhwb3J0U3RhdGUoKSxjb25zb2xlLmxvZygiU2F2ZWQgc3RhdGU6IixsKSxhbGVydCgiRWRpdG9yIHN0YXRlIHNhdmVkISIpfSksbyYmby5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PntsPyhlLmltcG9ydFN0YXRlKGwpLGFsZXJ0KCJFZGl0b3Igc3RhdGUgcmVzdG9yZWQhIikpOmFsZXJ0KCJObyBzYXZlZCBzdGF0ZSBmb3VuZC4gU2F2ZSBzdGF0ZSBmaXJzdCEiKX0pfSwic2V0dXBFeHBvcnREZW1vIiksSFdhPWkoKHMsZSx0KT0+e2xldCBhPXMucXVlcnlTZWxlY3RvcigiI2J0bi1zaG93LWh0bWwtb3V0cHV0Iikscj1zLnF1ZXJ5U2VsZWN0b3IoIiNvdXRwdXQtcHJldmlldy1odG1sIik7YSYmciYmZSYmYS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PntyLnRleHRDb250ZW50PWUuZ2V0VmFsdWUoKSxyLmNsYXNzTGlzdC5hZGQoInZpc2libGUiKX0pO2xldCBuPXMucXVlcnlTZWxlY3RvcigiI2J0bi1zaG93LW1hcmtkb3duLW91dHB1dCIpLG89cy5xdWVyeVNlbGVjdG9yKCIjb3V0cHV0LXByZXZpZXctbWFya2Rvd24iKTtuJiZvJiZ0JiZuLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e28udGV4dENvbnRlbnQ9dC5nZXRWYWx1ZSgpLG8uY2xhc3NMaXN0LmFkZCgidmlzaWJsZSIpfSl9LCJzZXR1cE91dHB1dEZvcm1hdERlbW8iKSxxV2E9aShzPT57cy5hcnRpY2xlJiZzZXRUaW1lb3V0KCgpPT57bGV0IGU9W3tpZDoiaW50cm8taGVhZGluZy0iK0RhdGUubm93KCksdHlwZToiaGVhZGluZy0yIixjb250ZW50OiJJbnRyb2R1Y3Rpb24gdG8gTW9kZXJuIFdlYiBEZXZlbG9wbWVudCJ9LHtpZDoiaW50cm8tcGFyYS0iK0RhdGUubm93KCksdHlwZToicGFyYWdyYXBoIixjb250ZW50OiJNb2Rlcm4gd2ViIGRldmVsb3BtZW50IGhhcyBldm9sdmVkIHNpZ25pZmljYW50bHkgb3ZlciB0aGUgcGFzdCBkZWNhZGUuIEluIHRoaXMgYXJ0aWNsZSwgd2UnbGwgZXhwbG9yZSB0aGUga2V5IHRlY2hub2xvZ2llcyBhbmQgYmVzdCBwcmFjdGljZXMgdGhhdCBkZWZpbmUgd2ViIGRldmVsb3BtZW50IGluIDIwMjQuIn0se2lkOiJ0ZWNoLWhlYWRpbmctIitEYXRlLm5vdygpLHR5cGU6ImhlYWRpbmctMyIsY29udGVudDoiS2V5IFRlY2hub2xvZ2llcyJ9LHtpZDoidGVjaC1saXN0LSIrRGF0ZS5ub3coKSx0eXBlOiJsaXN0Iixjb250ZW50OmBUeXBlU2NyaXB0IC0gVHlwZS1zYWZlIEphdmFTY3JpcHQgZGV2ZWxvcG1lbnQKV2ViIENvbXBvbmVudHMgLSBOYXRpdmUgY29tcG9uZW50IG1vZGVsCkVTIE1vZHVsZXMgLSBNb2Rlcm4gbW9kdWxlIHN5c3RlbQpXZWJBc3NlbWJseSAtIEhpZ2gtcGVyZm9ybWFuY2UgY29tcHV0aW5nYCxtZXRhZGF0YTp7bGlzdFR5cGU6Im9yZGVyZWQifX0se2lkOiJxdW90ZS0iK0RhdGUubm93KCksdHlwZToicXVvdGUiLGNvbnRlbnQ6IlRoZSBiZXN0IHdheSB0byBwcmVkaWN0IHRoZSBmdXR1cmUgaXMgdG8gaW52ZW50IGl0LiAtIEFsYW4gS2F5In0se2lkOiJleGFtcGxlLWhlYWRpbmctIitEYXRlLm5vdygpLHR5cGU6ImhlYWRpbmctMyIsY29udGVudDoiQ29kZSBFeGFtcGxlIn0se2lkOiJjb2RlLWV4YW1wbGUtIitEYXRlLm5vdygpLHR5cGU6ImNvZGUiLGNvbnRlbnQ6YGNsYXNzIE1vZGVybldlYkFwcCBleHRlbmRzIEhUTUxFbGVtZW50IHsKICBjb25zdHJ1Y3RvcigpIHsKICAgIHN1cGVyKCk7CiAgICB0aGlzLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTsKICB9CiAgCiAgY29ubmVjdGVkQ2FsbGJhY2soKSB7CiAgICB0aGlzLnJlbmRlcigpOwogIH0KfWAsbWV0YWRhdGE6e2xhbmd1YWdlOiJqYXZhc2NyaXB0In19XTtzLmFydGljbGUuaW1wb3J0QmxvY2tzKGUpfSw1MDApLHMuZHJhZ0Ryb3AmJnNldFRpbWVvdXQoKCk9PntsZXQgZT1be2lkOiJkcmFnLXRpdGxlLSIrRGF0ZS5ub3coKSx0eXBlOiJoZWFkaW5nLTEiLGNvbnRlbnQ6IkRyYWcgJiBEcm9wIERlbW8ifSx7aWQ6ImRyYWctaW50cm8tIitEYXRlLm5vdygpLHR5cGU6InBhcmFncmFwaCIsY29udGVudDoiVGhpcyBlZGl0b3IgZGVtb25zdHJhdGVzIGRyYWcgYW5kIGRyb3AgZnVuY3Rpb25hbGl0eS4gVHJ5IGRyYWdnaW5nIHRoZXNlIGJsb2NrcyBhcm91bmQhIn0se2lkOiJkcmFnLWhlYWRpbmctIitEYXRlLm5vdygpLHR5cGU6ImhlYWRpbmctMiIsY29udGVudDoiSG93IEl0IFdvcmtzIn0se2lkOiJkcmFnLWxpc3QtIitEYXRlLm5vdygpLHR5cGU6Imxpc3QiLGNvbnRlbnQ6YEhvdmVyIG92ZXIgYW55IGJsb2NrIHRvIHNlZSB0aGUgZHJhZyBoYW5kbGUKQ2xpY2sgYW5kIGhvbGQgdGhlIGhhbmRsZSB0byBzdGFydCBkcmFnZ2luZwpEcmFnIHRvIHJlb3JkZXIgYmxvY2tzClJlbGVhc2UgdG8gZHJvcCBpbiB0aGUgbmV3IHBvc2l0aW9uYCxtZXRhZGF0YTp7bGlzdFR5cGU6Im9yZGVyZWQifX0se2lkOiJkcmFnLXF1b3RlLSIrRGF0ZS5ub3coKSx0eXBlOiJxdW90ZSIsY29udGVudDoiVGhlIGRyYWcgYW5kIGRyb3AgZmVhdHVyZSBtYWtlcyBpdCBlYXN5IHRvIHJlb3JnYW5pemUgeW91ciBjb250ZW50IHdpdGhvdXQgY3V0dGluZyBhbmQgcGFzdGluZy4ifSx7aWQ6ImRyYWctZGl2aWRlci0iK0RhdGUubm93KCksdHlwZToiZGl2aWRlciIsY29udGVudDoiIn0se2lkOiJkcmFnLWZvb3Rlci0iK0RhdGUubm93KCksdHlwZToicGFyYWdyYXBoIixjb250ZW50OiJOb3RlOiBEaXZpZGVyIGJsb2NrcyBjYW5ub3QgYmUgZHJhZ2dlZCwgYnV0IG90aGVyIGJsb2NrcyBjYW4gYmUgbW92ZWQgYXJvdW5kIHRoZW0uIn1dO3MuZHJhZ0Ryb3AuaW1wb3J0QmxvY2tzKGUpfSw2MDApfSwicG9wdWxhdGVJbml0aWFsQ29udGVudCIpLEEwYT1pKCgpPT53YAogIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9Pnthd2FpdCBuZXcgUHJvbWlzZSh0PT5zZXRUaW1lb3V0KHQsNTAwKSk7bGV0IGU9T1dhKHMpO2UucHJvZ3JhbW1hdGljJiZGV2EocyxlLnByb2dyYW1tYXRpYyksZS5leHBvcnREZW1vJiZCV2EocyxlLmV4cG9ydERlbW8pLEhXYShzLGUubWVldGluZyxlLnJlY2lwZSkscVdhKGUpLGNvbnNvbGUubG9nKCJXWVNJV1lHIERlbW8gaW5pdGlhbGl6ZWQgd2l0aCBlZGl0b3JzOiIsT2JqZWN0LmtleXMoZSkpfX0+CiAgPHN0eWxlPgogICAgJHtKYAogICAgICAuZGVtby1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDMycHg7CiAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICBtYXgtd2lkdGg6IDEyMDBweDsKICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgfQogICAgICAKICAgICAgZGVlcy1wYW5lbCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMzJweDsKICAgICAgfQogICAgICAKICAgICAgLnBhbmVsLWRlc2NyaXB0aW9uIHsKICAgICAgICBtYXJnaW4tdG9wOiAwOwogICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgICAgY29sb3I6ICM2NjY7CiAgICAgICAgZm9udC1zaXplOiAxNXB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgIH0KICAgICAgCiAgICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKICAgICAgICAucGFuZWwtZGVzY3JpcHRpb24gewogICAgICAgICAgY29sb3I6ICM5OTk7CiAgICAgICAgfQogICAgICB9CgogICAgICAuZmVhdHVyZS1ncmlkIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjAwcHgsIDFmcikpOwogICAgICAgIGdhcDogMTZweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgICB9CgogICAgICAuZmVhdHVyZS1pdGVtIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgY29sb3I6ICM1NTU7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICB9CgogICAgICAuZmVhdHVyZS1pY29uIHsKICAgICAgICBjb2xvcjogIzAwNjZjYzsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICB9CgogICAgICBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7CiAgICAgICAgLmZlYXR1cmUtaXRlbSB7CiAgICAgICAgICBjb2xvcjogI2FhYTsKICAgICAgICB9CiAgICAgICAgLmZlYXR1cmUtaWNvbiB7CiAgICAgICAgICBjb2xvcjogIzRkOTRmZjsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC5zaG9ydGN1dHMtYm94IHsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDEwMiwgMjA0LCAwLjA1KTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDEwMiwgMjA0LCAwLjIpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICAgIH0KCiAgICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKICAgICAgICAuc2hvcnRjdXRzLWJveCB7CiAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDc3LCAxNDgsIDI1NSwgMC4xKTsKICAgICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSg3NywgMTQ4LCAyNTUsIDAuMyk7CiAgICAgICAgfQogICAgICB9CgogICAgICAuc2hvcnRjdXRzLXRpdGxlIHsKICAgICAgICBtYXJnaW46IDAgMCAxMnB4IDA7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6ICMwMDY2Y2M7CiAgICAgIH0KCiAgICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKICAgICAgICAuc2hvcnRjdXRzLXRpdGxlIHsKICAgICAgICAgIGNvbG9yOiAjNGQ5NGZmOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLnNob3J0Y3V0cy1ncmlkIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDE4MHB4LCAxZnIpKTsKICAgICAgICBnYXA6IDhweDsKICAgICAgfQoKICAgICAgLnNob3J0Y3V0LWl0ZW0gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6ICM1NTU7CiAgICAgIH0KCiAgICAgIC5zaG9ydGN1dC1rZXkgewogICAgICAgIGJhY2tncm91bmQ6ICNmMGYwZjA7CiAgICAgICAgcGFkZGluZzogMnB4IDZweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY29sb3I6ICMzMzM7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewogICAgICAgIC5zaG9ydGN1dC1pdGVtIHsKICAgICAgICAgIGNvbG9yOiAjYmJiOwogICAgICAgIH0KICAgICAgICAuc2hvcnRjdXQta2V5IHsKICAgICAgICAgIGJhY2tncm91bmQ6ICMzMzM7CiAgICAgICAgICBjb2xvcjogI2RkZDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC5vdXRwdXQtZ3JpZCB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDMyMHB4LCAxZnIpKTsKICAgICAgICBnYXA6IDI0cHg7CiAgICAgICAgbWFyZ2luLXRvcDogMjRweDsKICAgICAgfQoKICAgICAgLm91dHB1dC1jYXJkIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICB9CgogICAgICAub3V0cHV0LWFjdGlvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgfQoKICAgICAgLm91dHB1dC1wcmV2aWV3IHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTUsIDIzLCA0MiwgMC4wNCk7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dCwgIzBmMTcyYSk7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxNSwgMjMsIDQyLCAwLjEpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKICAgICAgICBmb250LWZhbWlseTogJ0dlaXN0IE1vbm8nLCAnRmlyYSBDb2RlJywgbW9ub3NwYWNlOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBtYXgtaGVpZ2h0OiAyODBweDsKICAgICAgICBvdmVyZmxvdzogYXV0bzsKICAgICAgfQoKICAgICAgOmhvc3QoW3RoZW1lPSdkYXJrJ10pIC5vdXRwdXQtcHJldmlldyB7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTAsIDI1MCwgMjUwLCAwLjA2KTsKICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoMjUwLCAyNTAsIDI1MCwgMC4xNSk7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dCwgI2Y0ZjRmNSk7CiAgICAgIH0KCiAgICAgIC5vdXRwdXQtcHJldmlldy52aXNpYmxlIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgICAgICAgLm91dHB1dC1ncmlkIHsKICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOwogICAgICAgIH0KICAgICAgfQogICAgICAKICAgICAgLnRpcHMtYm94IHsKICAgICAgICBtYXJnaW4tdG9wOiAxNnB4OwogICAgICAgIHBhZGRpbmc6IDEycHg7CiAgICAgICAgYmFja2dyb3VuZDogI2YwZjhmZjsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgIH0KICAgICAgCiAgICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKICAgICAgICAudGlwcy1ib3ggewogICAgICAgICAgYmFja2dyb3VuZDogcmdiYSg3NywgMTQ4LCAyNTUsIDAuMSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIAogICAgICAudGlwcy1ib3ggc3Ryb25nIHsKICAgICAgICBjb2xvcjogIzAwNjZjYzsKICAgICAgfQogICAgICAKICAgICAgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewogICAgICAgIC50aXBzLWJveCBzdHJvbmcgewogICAgICAgICAgY29sb3I6ICM0ZDk0ZmY7CiAgICAgICAgfQogICAgICB9CiAgICAgIAogICAgICAudGlwcy1saXN0IHsKICAgICAgICBtYXJnaW46IDhweCAwIDAgMDsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7CiAgICAgIH0KICAgICAgCiAgICAgIC50aXBzLWxpc3QgbGkgewogICAgICAgIG1hcmdpbjogNHB4IDA7CiAgICAgIH0KICAgICAgCiAgICAgIC5idXR0b24tZ3JvdXAgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICAgIH0KICAgICAgCiAgICAgIC5kZW1vLWJ1dHRvbiB7CiAgICAgICAgcGFkZGluZzogOHB4IDE2cHg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgYmFja2dyb3VuZDogI2Y4ZjhmODsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7CiAgICAgIH0KICAgICAgCiAgICAgIC5kZW1vLWJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogI2U4ZThlODsKICAgICAgICBib3JkZXItY29sb3I6ICNjY2M7CiAgICAgIH0KICAgICAgCiAgICAgIC5kZW1vLWJ1dHRvbjphY3RpdmUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxcHgpOwogICAgICB9CiAgICAgIAogICAgICBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7CiAgICAgICAgLmRlbW8tYnV0dG9uIHsKICAgICAgICAgIGJhY2tncm91bmQ6ICMzMzM7CiAgICAgICAgICBib3JkZXItY29sb3I6ICM1NTU7CiAgICAgICAgICBjb2xvcjogI2RkZDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmRlbW8tYnV0dG9uOmhvdmVyIHsKICAgICAgICAgIGJhY2tncm91bmQ6ICM0NDQ7CiAgICAgICAgICBib3JkZXItY29sb3I6ICM2NjY7CiAgICAgICAgfQogICAgICB9CiAgICAgIAogICAgICAuZXhwb3J0LWluZm8tZ3JpZCB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDI1MHB4LCAxZnIpKTsKICAgICAgICBnYXA6IDE2cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgICAgfQogICAgICAKICAgICAgLmV4cG9ydC1pbmZvLWNhcmQgewogICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICB9CiAgICAgIAogICAgICAuZXhwb3J0LWluZm8tY2FyZC5ibG9ja3MgewogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMTAyLCAyMDQsIDAuMSk7CiAgICAgIH0KICAgICAgCiAgICAgIC5leHBvcnQtaW5mby1jYXJkLmh0bWwgewogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoNzYsIDE3NSwgODAsIDAuMSk7CiAgICAgIH0KICAgICAgCiAgICAgIC5leHBvcnQtaW5mby1jYXJkLm1hcmtkb3duIHsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMTUyLCAwLCAwLjEpOwogICAgICB9CiAgICAgIAogICAgICAuZXhwb3J0LWluZm8tY2FyZC5zdGF0ZSB7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgxNTYsIDM5LCAxNzYsIDAuMSk7CiAgICAgIH0KICAgICAgCiAgICAgIC5leHBvcnQtaW5mby1jYXJkIHN0cm9uZyB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICB9CiAgICAgIAogICAgICAuZXhwb3J0LWluZm8tY2FyZC5ibG9ja3Mgc3Ryb25nIHsKICAgICAgICBjb2xvcjogIzAwNjZjYzsKICAgICAgfQogICAgICAKICAgICAgLmV4cG9ydC1pbmZvLWNhcmQuaHRtbCBzdHJvbmcgewogICAgICAgIGNvbG9yOiAjNENBRjUwOwogICAgICB9CiAgICAgIAogICAgICAuZXhwb3J0LWluZm8tY2FyZC5tYXJrZG93biBzdHJvbmcgewogICAgICAgIGNvbG9yOiAjRkY5ODAwOwogICAgICB9CiAgICAgIAogICAgICAuZXhwb3J0LWluZm8tY2FyZC5zdGF0ZSBzdHJvbmcgewogICAgICAgIGNvbG9yOiAjOUMyN0IwOwogICAgICB9CiAgICAgIAogICAgICAuZXhwb3J0LWluZm8tY2FyZCBwIHsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICAgIH0KICAgIGB9CiAgPC9zdHlsZT4KICAKICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjEuIFx1ezFGNjgwfSBNb2Rlcm4gV1lTSVdZRyBFZGl0b3IifT4KICAgICAgICA8cCBjbGFzcz0icGFuZWwtZGVzY3JpcHRpb24iPgogICAgICAgICAgQSBwb3dlcmZ1bCBibG9jay1iYXNlZCBlZGl0b3Igd2l0aCBzbGFzaCBjb21tYW5kcywga2V5Ym9hcmQgc2hvcnRjdXRzLCBhbmQgbXVsdGlwbGUgb3V0cHV0IGZvcm1hdHMuIAogICAgICAgICAgUGVyZmVjdCBmb3IgY29udGVudCBjcmVhdGlvbiwgYmxvZyBwb3N0cywgZG9jdW1lbnRhdGlvbiwgYW5kIG1vcmUuCiAgICAgICAgPC9wPgogICAgICAgIAogICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmUtZ3JpZCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlLWl0ZW0iPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmVhdHVyZS1pY29uIj7inJM8L3NwYW4+CiAgICAgICAgICAgIDxzcGFuPlNsYXNoIGNvbW1hbmRzICgvKTwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZS1pdGVtIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZlYXR1cmUtaWNvbiI+4pyTPC9zcGFuPgogICAgICAgICAgICA8c3Bhbj5LZXlib2FyZCBzaG9ydGN1dHM8L3NwYW4+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmUtaXRlbSI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmZWF0dXJlLWljb24iPuKckzwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4+QmxvY2stYmFzZWQgZWRpdGluZzwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZS1pdGVtIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZlYXR1cmUtaWNvbiI+4pyTPC9zcGFuPgogICAgICAgICAgICA8c3Bhbj5EcmFnICYgZHJvcCByZW9yZGVyaW5nPC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlLWl0ZW0iPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmVhdHVyZS1pY29uIj7inJM8L3NwYW4+CiAgICAgICAgICAgIDxzcGFuPkhUTUwgJiBNYXJrZG93biBvdXRwdXQ8L3NwYW4+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmUtaXRlbSI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmZWF0dXJlLWljb24iPuKckzwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4+RGFyayBtb2RlIHN1cHBvcnQ8L3NwYW4+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmUtaXRlbSI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmZWF0dXJlLWljb24iPuKckzwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4+TW9iaWxlIHJlc3BvbnNpdmU8L3NwYW4+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICA8ZGVlcy1pbnB1dC13eXNpd3lnIAogICAgICAgICAgaWQ9ImVkaXRvci1iYXNpYyIKICAgICAgICAgIGxhYmVsPSJSaWNoIFRleHQgRWRpdG9yIiAKICAgICAgICAgIGRlc2NyaXB0aW9uPSJTdGFydCB0eXBpbmcgb3IgdXNlICcvJyB0byBpbnNlcnQgZGlmZmVyZW50IGJsb2NrIHR5cGVzIgogICAgICAgICAgb3V0cHV0Rm9ybWF0PSJodG1sIgogICAgICAgID48L2RlZXMtaW5wdXQtd3lzaXd5Zz4KCiAgICAgICAgPGRpdiBjbGFzcz0ic2hvcnRjdXRzLWJveCI+CiAgICAgICAgICA8aDQgY2xhc3M9InNob3J0Y3V0cy10aXRsZSI+4oyo77iPIEtleWJvYXJkIFNob3J0Y3V0czwvaDQ+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaG9ydGN1dHMtZ3JpZCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNob3J0Y3V0LWl0ZW0iPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzaG9ydGN1dC1rZXkiPi88L3NwYW4+IFNsYXNoIGNvbW1hbmRzCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaG9ydGN1dC1pdGVtIj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2hvcnRjdXQta2V5Ij4jPC9zcGFuPiBIZWFkaW5nIDEKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNob3J0Y3V0LWl0ZW0iPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzaG9ydGN1dC1rZXkiPiMjPC9zcGFuPiBIZWFkaW5nIDIKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNob3J0Y3V0LWl0ZW0iPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzaG9ydGN1dC1rZXkiPiMjIzwvc3Bhbj4gSGVhZGluZyAzCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaG9ydGN1dC1pdGVtIj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2hvcnRjdXQta2V5Ij4+PC9zcGFuPiBRdW90ZQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2hvcnRjdXQtaXRlbSI+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNob3J0Y3V0LWtleSI+XGBcYFxgPC9zcGFuPiBDb2RlIGJsb2NrCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaG9ydGN1dC1pdGVtIj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2hvcnRjdXQta2V5Ij4qPC9zcGFuPiBvciA8c3BhbiBjbGFzcz0ic2hvcnRjdXQta2V5Ij4tPC9zcGFuPiBCdWxsZXQgbGlzdAogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2hvcnRjdXQtaXRlbSI+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNob3J0Y3V0LWtleSI+MS48L3NwYW4+IE51bWJlcmVkIGxpc3QKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNob3J0Y3V0LWl0ZW0iPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzaG9ydGN1dC1rZXkiPi0tLTwvc3Bhbj4gRGl2aWRlcgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICAgIAogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiMi4gXHV7MUY0RER9IEJsb2cgUG9zdCBFeGFtcGxlIn0+CiAgICAgICAgPHAgY2xhc3M9InBhbmVsLWRlc2NyaXB0aW9uIj4KICAgICAgICAgIFBlcmZlY3QgZm9yIGNyZWF0aW5nIHJpY2ggY29udGVudCB3aXRoIG11bHRpcGxlIGJsb2NrIHR5cGVzLiAKICAgICAgICAgIFRoZSBlZGl0b3IgcHJlc2VydmVzIGZvcm1hdHRpbmcgYW5kIHByb3ZpZGVzIGEgY2xlYW4gZWRpdGluZyBleHBlcmllbmNlLgogICAgICAgIDwvcD4KICAgICAgICAKICAgICAgICA8ZGVlcy1pbnB1dC13eXNpd3lnIAogICAgICAgICAgaWQ9ImVkaXRvci1hcnRpY2xlIgogICAgICAgICAgbGFiZWw9IkJsb2cgUG9zdCBDb250ZW50IiAKICAgICAgICAgIGRlc2NyaXB0aW9uPSJXcml0ZSB5b3VyIGFydGljbGUgdXNpbmcgdmFyaW91cyBmb3JtYXR0aW5nIG9wdGlvbnMiCiAgICAgICAgICBvdXRwdXRGb3JtYXQ9Imh0bWwiCiAgICAgICAgPjwvZGVlcy1pbnB1dC13eXNpd3lnPgogICAgICA8L2RlZXMtcGFuZWw+CgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiMy4gXHV7MUY1MDB9IERyYWcgJiBEcm9wIFJlb3JkZXJpbmcifT4KICAgICAgICA8cCBjbGFzcz0icGFuZWwtZGVzY3JpcHRpb24iPgogICAgICAgICAgRWFzaWx5IHJlYXJyYW5nZSB5b3VyIGNvbnRlbnQgYmxvY2tzIGJ5IGRyYWdnaW5nIHRoZW0uIAogICAgICAgICAgSG92ZXIgb3ZlciBhbnkgYmxvY2sgdG8gcmV2ZWFsIHRoZSBkcmFnIGhhbmRsZSBvbiB0aGUgbGVmdCBzaWRlLgogICAgICAgIDwvcD4KICAgICAgICAKICAgICAgICA8ZGVlcy1pbnB1dC13eXNpd3lnIAogICAgICAgICAgaWQ9ImVkaXRvci1kcmFnZHJvcCIKICAgICAgICAgIGxhYmVsPSJEcmFnICYgRHJvcCBEZW1vIiAKICAgICAgICAgIGRlc2NyaXB0aW9uPSJUcnkgZHJhZ2dpbmcgYmxvY2tzIHRvIHJlb3JkZXIgdGhlbSAtIGhvdmVyIHRvIHNlZSBkcmFnIGhhbmRsZXMiCiAgICAgICAgPjwvZGVlcy1pbnB1dC13eXNpd3lnPgogICAgICAgIAogICAgICAgIDxkaXYgY2xhc3M9InRpcHMtYm94Ij4KICAgICAgICAgIDxzdHJvbmc+8J+SoSBUaXBzOjwvc3Ryb25nPgogICAgICAgICAgPHVsIGNsYXNzPSJ0aXBzLWxpc3QiPgogICAgICAgICAgICA8bGk+SG92ZXIgb3ZlciBhbnkgYmxvY2sgdG8gc2VlIHRoZSBkcmFnIGhhbmRsZSAo4ouu4ouuKSBvbiB0aGUgbGVmdDwvbGk+CiAgICAgICAgICAgIDxsaT5DbGljayBhbmQgaG9sZCB0aGUgZHJhZyBoYW5kbGUgdG8gc3RhcnQgZHJhZ2dpbmc8L2xpPgogICAgICAgICAgICA8bGk+Qmx1ZSBpbmRpY2F0b3JzIHNob3cgd2hlcmUgdGhlIGJsb2NrIHdpbGwgYmUgZHJvcHBlZDwvbGk+CiAgICAgICAgICAgIDxsaT5EaXZpZGVyIGJsb2NrcyBjYW5ub3QgYmUgZHJhZ2dlZDwvbGk+CiAgICAgICAgICAgIDxsaT5UaGUgZWRpdG9yIG1haW50YWlucyBmb2N1cyBvbiB0aGUgbW92ZWQgYmxvY2sgYWZ0ZXIgZHJvcHBpbmc8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgoKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjQuIFx1ezFGNERBfSBUdXRvcmlhbCAmIERvY3VtZW50YXRpb24ifT4KICAgICAgICA8cCBjbGFzcz0icGFuZWwtZGVzY3JpcHRpb24iPgogICAgICAgICAgQ3JlYXRlIGNvbXByZWhlbnNpdmUgdHV0b3JpYWxzIGFuZCBkb2N1bWVudGF0aW9uIHdpdGggY29kZSBleGFtcGxlcywgbGlzdHMsIGFuZCBzdHJ1Y3R1cmVkIGNvbnRlbnQuCiAgICAgICAgPC9wPgogICAgICAgIAogICAgICAgIDxkZWVzLWlucHV0LXd5c2l3eWcgCiAgICAgICAgICBpZD0iZWRpdG9yLXR1dG9yaWFsIgogICAgICAgICAgbGFiZWw9IkdpdCBUdXRvcmlhbCIgCiAgICAgICAgICBkZXNjcmlwdGlvbj0iU3RlcC1ieS1zdGVwIGd1aWRlIHdpdGggY29tbWFuZHMgYW5kIGV4cGxhbmF0aW9ucyIKICAgICAgICAgIG91dHB1dEZvcm1hdD0ibWFya2Rvd24iCiAgICAgICAgICB2YWx1ZT0iIyBHaXQgVHV0b3JpYWwgZm9yIEJlZ2lubmVycwoKR2l0IGlzIGEgZGlzdHJpYnV0ZWQgdmVyc2lvbiBjb250cm9sIHN5c3RlbSB0aGF0IGhlbHBzIHlvdSB0cmFjayBjaGFuZ2VzIGluIHlvdXIgY29kZSBvdmVyIHRpbWUuIFRoaXMgdHV0b3JpYWwgd2lsbCBndWlkZSB5b3UgdGhyb3VnaCB0aGUgYmFzaWNzLgoKIyMgUHJlcmVxdWlzaXRlcwoKQmVmb3JlIHN0YXJ0aW5nLCBlbnN1cmUgeW91IGhhdmU6CgotIEdpdCBpbnN0YWxsZWQgb24geW91ciBzeXN0ZW0KLSBBIHRleHQgZWRpdG9yIG9yIElERQotIEJhc2ljIGNvbW1hbmQgbGluZSBrbm93bGVkZ2UKCiMjIEdldHRpbmcgU3RhcnRlZAoKIyMjIDEuIENvbmZpZ3VyZSBHaXQKCkZpcnN0LCBzZXQgdXAgeW91ciBpZGVudGl0eToKClxgXGBcYGJhc2gKZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLm5hbWUgJnF1b3Q7WW91ciBOYW1lJnF1b3Q7CmdpdCBjb25maWcgLS1nbG9iYWwgdXNlci5lbWFpbCAmcXVvdDt5b3VyLmVtYWlsQGV4YW1wbGUuY29tJnF1b3Q7ClxgXGBcYAoKIyMjIDIuIEluaXRpYWxpemUgYSBSZXBvc2l0b3J5CgpDcmVhdGUgYSBuZXcgR2l0IHJlcG9zaXRvcnk6CgpcYFxgXGBiYXNoCm1rZGlyIG15LXByb2plY3QKY2QgbXktcHJvamVjdApnaXQgaW5pdApcYFxgXGAKCiMjIyAzLiBCYXNpYyBHaXQgV29ya2Zsb3cKCiMjIyMgQWRkaW5nIEZpbGVzCgpDcmVhdGUgYSBmaWxlIGFuZCBhZGQgaXQgdG8gc3RhZ2luZzoKClxgXGBcYGJhc2gKZWNobyAmcXVvdDsjIE15IFByb2plY3QmcXVvdDsgPiBSRUFETUUubWQKZ2l0IGFkZCBSRUFETUUubWQKXGBcYFxgCgojIyMjIENvbW1pdHRpbmcgQ2hhbmdlcwoKXGBcYFxgYmFzaApnaXQgY29tbWl0IC1tICZxdW90O0luaXRpYWwgY29tbWl0JnF1b3Q7ClxgXGBcYAoKPiAqKkJlc3QgUHJhY3RpY2U6KiogV3JpdGUgY2xlYXIsIGRlc2NyaXB0aXZlIGNvbW1pdCBtZXNzYWdlcyB0aGF0IGV4cGxhaW4gd2hhdCBjaGFuZ2VzIHdlcmUgbWFkZSBhbmQgd2h5LgoKIyMjIDQuIFdvcmtpbmcgd2l0aCBCcmFuY2hlcwoKQnJhbmNoZXMgYWxsb3cgeW91IHRvIHdvcmsgb24gZmVhdHVyZXMgaW5kZXBlbmRlbnRseToKClxgXGBcYGJhc2gKIyBDcmVhdGUgYW5kIHN3aXRjaCB0byBhIG5ldyBicmFuY2gKZ2l0IGNoZWNrb3V0IC1iIGZlYXR1cmUtYnJhbmNoCgojIE1ha2UgY2hhbmdlcyBhbmQgY29tbWl0CmdpdCBhZGQgLgpnaXQgY29tbWl0IC1tICZxdW90O0FkZCBuZXcgZmVhdHVyZSZxdW90OwoKIyBTd2l0Y2ggYmFjayB0byBtYWluCmdpdCBjaGVja291dCBtYWluCgojIE1lcmdlIHRoZSBmZWF0dXJlCmdpdCBtZXJnZSBmZWF0dXJlLWJyYW5jaApcYFxgXGAKCi0tLQoKIyMgQ29tbW9uIENvbW1hbmRzIFJlZmVyZW5jZQoKfCBDb21tYW5kIHwgRGVzY3JpcHRpb24gfAp8LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS18CnwgXGBnaXQgc3RhdHVzXGAgfCBDaGVjayByZXBvc2l0b3J5IHN0YXR1cyB8CnwgXGBnaXQgbG9nXGAgfCBWaWV3IGNvbW1pdCBoaXN0b3J5IHwKfCBcYGdpdCBkaWZmXGAgfCBTaG93IGNoYW5nZXMgfAp8IFxgZ2l0IHB1bGxcYCB8IEZldGNoIGFuZCBtZXJnZSBjaGFuZ2VzIHwKfCBcYGdpdCBwdXNoXGAgfCBVcGxvYWQgY2hhbmdlcyB0byByZW1vdGUgfAoKIyMgTmV4dCBTdGVwcwoKMS4gTGVhcm4gYWJvdXQgcmVtb3RlIHJlcG9zaXRvcmllcwoyLiBFeHBsb3JlIGFkdmFuY2VkIEdpdCBmZWF0dXJlcwozLiBQcmFjdGljZSB3aXRoIHJlYWwgcHJvamVjdHMKNC4gQ29udHJpYnV0ZSB0byBvcGVuIHNvdXJjZQoKKipIYXBweSBjb2RpbmchKiog8J+agCIKICAgICAgICA+PC9kZWVzLWlucHV0LXd5c2l3eWc+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyI1LiBcdXsxRjUwNH0gT3V0cHV0IEZvcm1hdHMifT4KICAgICAgICA8cCBjbGFzcz0icGFuZWwtZGVzY3JpcHRpb24iPgogICAgICAgICAgQ2hvb3NlIGJldHdlZW4gSFRNTCBhbmQgTWFya2Rvd24gb3V0cHV0IGZvcm1hdHMgZGVwZW5kaW5nIG9uIHlvdXIgbmVlZHMuIAogICAgICAgICAgUGVyZmVjdCBmb3Igc3RhdGljIHNpdGUgZ2VuZXJhdG9ycywgZG9jdW1lbnRhdGlvbiBzeXN0ZW1zLCBvciBhbnkgY29udGVudCBtYW5hZ2VtZW50IHdvcmtmbG93LgogICAgICAgIDwvcD4KICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJvdXRwdXQtZ3JpZCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJvdXRwdXQtY2FyZCI+CiAgICAgICAgICAgIDxkZWVzLWlucHV0LXd5c2l3eWcgCiAgICAgICAgICAgICAgaWQ9ImVkaXRvci1tZWV0aW5nIgogICAgICAgICAgICAgIGxhYmVsPSJNZWV0aW5nIE5vdGVzIiAKICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0iU3RydWN0dXJlZCBtZWV0aW5nIGRvY3VtZW50YXRpb24iCiAgICAgICAgICAgICAgb3V0cHV0Rm9ybWF0PSJodG1sIgogICAgICAgICAgICAgIHZhbHVlPSI8aDI+UTQgUGxhbm5pbmcgTWVldGluZzwvaDI+PHA+PHN0cm9uZz5EYXRlOjwvc3Ryb25nPiBEZWNlbWJlciAxNSwgMjAyNDxicj48c3Ryb25nPkF0dGVuZGVlczo8L3N0cm9uZz4gUHJvZHVjdCBUZWFtLCBFbmdpbmVlcmluZywgRGVzaWduPC9wPjxoMz5BZ2VuZGEgSXRlbXM8L2gzPjxvbD48bGk+UmV2aWV3IFEzIGFjaGlldmVtZW50czwvbGk+PGxpPlNldCBRNCBvYmplY3RpdmVzPC9saT48bGk+UmVzb3VyY2UgYWxsb2NhdGlvbjwvbGk+PGxpPlRpbWVsaW5lIGRpc2N1c3Npb248L2xpPjwvb2w+PGgzPktleSBEZWNpc2lvbnM8L2gzPjx1bD48bGk+TGF1bmNoIG5ldyBkYXNoYm9hcmQgZmVhdHVyZSBieSBlbmQgb2YgSmFudWFyeTwvbGk+PGxpPkluY3JlYXNlIGVuZ2luZWVyaW5nIHRlYW0gYnkgMiBkZXZlbG9wZXJzPC9saT48bGk+SW1wbGVtZW50IHdlZWtseSBkZXNpZ24gcmV2aWV3czwvbGk+PC91bD48YmxvY2txdW90ZT4mcXVvdDtGb2N1cyBvbiB1c2VyIGV4cGVyaWVuY2UgaW1wcm92ZW1lbnRzIGJhc2VkIG9uIFEzIGZlZWRiYWNrJnF1b3Q7IC0gUHJvZHVjdCBNYW5hZ2VyPC9ibG9ja3F1b3RlPjxoMz5BY3Rpb24gSXRlbXM8L2gzPjx1bD48bGk+U2FyYWg6IENyZWF0ZSBkZXRhaWxlZCBwcm9qZWN0IHRpbWVsaW5lPC9saT48bGk+TWlrZTogRHJhZnQgdGVjaG5pY2FsIHJlcXVpcmVtZW50czwvbGk+PGxpPkxpc2E6IFNjaGVkdWxlIHVzZXIgcmVzZWFyY2ggc2Vzc2lvbnM8L2xpPjwvdWw+PGhyPjxwPk5leHQgbWVldGluZzogSmFudWFyeSA1LCAyMDI1PC9wPiIKICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC13eXNpd3lnPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJvdXRwdXQtYWN0aW9ucyI+CiAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLXNob3ctaHRtbC1vdXRwdXQiIGNsYXNzPSJkZW1vLWJ1dHRvbiI+U2hvdyBIVE1MIE91dHB1dDwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHByZSBpZD0ib3V0cHV0LXByZXZpZXctaHRtbCIgY2xhc3M9Im91dHB1dC1wcmV2aWV3IiBhcmlhLWxpdmU9InBvbGl0ZSI+PC9wcmU+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIAogICAgICAgICAgPGRpdiBjbGFzcz0ib3V0cHV0LWNhcmQiPgogICAgICAgICAgICA8ZGVlcy1pbnB1dC13eXNpd3lnIAogICAgICAgICAgICAgIGlkPSJlZGl0b3ItcmVjaXBlIgogICAgICAgICAgICAgIGxhYmVsPSJSZWNpcGUgQmxvZyBQb3N0IiAKICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0iRm9vZCBibG9nIHdpdGggbWl4ZWQgY29udGVudCIKICAgICAgICAgICAgICBvdXRwdXRGb3JtYXQ9Im1hcmtkb3duIgogICAgICAgICAgICAgIHZhbHVlPSIjIFVsdGltYXRlIENob2NvbGF0ZSBDaGlwIENvb2tpZXMKClRoZXJlJ3Mgbm90aGluZyBxdWl0ZSBsaWtlIHRoZSBzbWVsbCBvZiBmcmVzaGx5IGJha2VkIGNob2NvbGF0ZSBjaGlwIGNvb2tpZXMuIFRoaXMgcmVjaXBlIGhhcyBiZWVuIHBlcmZlY3RlZCBvdmVyIHllYXJzIG9mIHRlc3RpbmchCgojIyBJbmdyZWRpZW50cwoKLSAywrwgY3VwcyBhbGwtcHVycG9zZSBmbG91cgotIDEgdHNwIGJha2luZyBzb2RhCi0gMSB0c3Agc2FsdAotIDEgY3VwIGJ1dHRlciwgc29mdGVuZWQKLSDCviBjdXAgZ3JhbnVsYXRlZCBzdWdhcgotIMK+IGN1cCBwYWNrZWQgYnJvd24gc3VnYXIKLSAyIGxhcmdlIGVnZ3MKLSAyIHRzcCB2YW5pbGxhIGV4dHJhY3QKLSAyIGN1cHMgY2hvY29sYXRlIGNoaXBzCgojIyBJbnN0cnVjdGlvbnMKCiMjIyBTdGVwIDE6IFByZXBhcmF0aW9uCgpQcmVoZWF0IHlvdXIgb3ZlbiB0byAqKjM3NcKwRiAoMTkwwrBDKSoqLiBUaGlzIHRlbXBlcmF0dXJlIGlzIGNydWNpYWwgZm9yIGFjaGlldmluZyB0aGUgcGVyZmVjdCB0ZXh0dXJlLgoKIyMjIFN0ZXAgMjogTWl4IERyeSBJbmdyZWRpZW50cwoKSW4gYSBtZWRpdW0gYm93bCwgd2hpc2sgdG9nZXRoZXI6CgoxLiBGbG91cgoyLiBCYWtpbmcgc29kYQozLiBTYWx0CgojIyMgU3RlcCAzOiBDcmVhbSBCdXR0ZXIgYW5kIFN1Z2FycwoKXGBcYFxgCkNyZWFtIGJ1dHRlciBhbmQgc3VnYXJzIGZvciAzLTQgbWludXRlcwp1bnRpbCBsaWdodCBhbmQgZmx1ZmZ5ClxgXGBcYAoKPiAqKlBybyB0aXA6KiogUm9vbSB0ZW1wZXJhdHVyZSBpbmdyZWRpZW50cyBtaXggYmV0dGVyIGFuZCBjcmVhdGUgYSBtb3JlIHVuaWZvcm0gZG91Z2guCgojIyMgU3RlcCA0OiBBZGQgV2V0IEluZ3JlZGllbnRzCgpCZWF0IGluIGVnZ3Mgb25lIGF0IGEgdGltZSwgdGhlbiBhZGQgdmFuaWxsYSBleHRyYWN0LgoKIyMjIFN0ZXAgNTogQ29tYmluZSBhbmQgQmFrZQoKR3JhZHVhbGx5IGJsZW5kIGluIGZsb3VyIG1peHR1cmUsIHRoZW4gc3RpciBpbiBjaG9jb2xhdGUgY2hpcHMuIERyb3Agcm91bmRlZCB0YWJsZXNwb29ucyBvbnRvIHVuZ3JlYXNlZCBjb29raWUgc2hlZXRzLgoKLS0tCgoqKkJha2luZyB0aW1lOioqIDktMTEgbWludXRlcyBvciB1bnRpbCBnb2xkZW4gYnJvd24KCioqWWllbGQ6KiogQWJvdXQgNSBkb3plbiBjb29raWVzIgogICAgICAgICAgICA+PC9kZWVzLWlucHV0LXd5c2l3eWc+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im91dHB1dC1hY3Rpb25zIj4KICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJidG4tc2hvdy1tYXJrZG93bi1vdXRwdXQiIGNsYXNzPSJkZW1vLWJ1dHRvbiI+U2hvdyBNYXJrZG93biBPdXRwdXQ8L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwcmUgaWQ9Im91dHB1dC1wcmV2aWV3LW1hcmtkb3duIiBjbGFzcz0ib3V0cHV0LXByZXZpZXciIGFyaWEtbGl2ZT0icG9saXRlIj48L3ByZT4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiNi4gXHV7MUYzQTh9IEFkdmFuY2VkIEVkaXRpbmcifT4KICAgICAgICA8cCBjbGFzcz0icGFuZWwtZGVzY3JpcHRpb24iPgogICAgICAgICAgQ3JlYXRlIGNvbXBsZXggZG9jdW1lbnRzIHdpdGggbWl4ZWQgY29udGVudCB0eXBlcy4gVGhlIGVkaXRvciBoYW5kbGVzIGFsbCBmb3JtYXR0aW5nIHNlYW1sZXNzbHkuCiAgICAgICAgPC9wPgogICAgICAgIAogICAgICAgIDxkZWVzLWlucHV0LXd5c2l3eWcgCiAgICAgICAgICBpZD0iZWRpdG9yLXRlY2huaWNhbCIKICAgICAgICAgIGxhYmVsPSJUZWNobmljYWwgRG9jdW1lbnRhdGlvbiIgCiAgICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIHRlY2huaWNhbCBkb2NzIHdpdGggY29kZSBleGFtcGxlcyBhbmQgc3RydWN0dXJlZCBjb250ZW50IgogICAgICAgICAgdmFsdWU9IjxoMT5BUEkgRG9jdW1lbnRhdGlvbjwvaDE+PHA+V2VsY29tZSB0byBvdXIgQVBJIGRvY3VtZW50YXRpb24uIEJlbG93IHlvdSdsbCBmaW5kIGV4YW1wbGVzIG9mIGhvdyB0byB1c2Ugb3VyIGVuZHBvaW50cy48L3A+PGgyPkF1dGhlbnRpY2F0aW9uPC9oMj48cD5BbGwgQVBJIHJlcXVlc3RzIHJlcXVpcmUgYXV0aGVudGljYXRpb24gdXNpbmcgYW4gQVBJIGtleTo8L3A+PHByZT48Y29kZT5BdXRob3JpemF0aW9uOiBCZWFyZXIgWU9VUl9BUElfS0VZPC9jb2RlPjwvcHJlPjxoMj5FbmRwb2ludHM8L2gyPjxoMz5HRVQgL3VzZXJzPC9oMz48cD5SZXRyaWV2ZSBhIGxpc3Qgb2YgdXNlcnMgZnJvbSB0aGUgc3lzdGVtLjwvcD48cHJlPjxjb2RlPmN1cmwgLVggR0VUIGh0dHBzOi8vYXBpLmV4YW1wbGUuY29tL3VzZXJzIFxcCiAgLUggJnF1b3Q7QXV0aG9yaXphdGlvbjogQmVhcmVyIFlPVVJfQVBJX0tFWSZxdW90OzwvY29kZT48L3ByZT48YmxvY2txdW90ZT5Ob3RlOiBSYXRlIGxpbWl0aW5nIGFwcGxpZXMgdG8gYWxsIGVuZHBvaW50cy4gWW91IGNhbiBtYWtlIHVwIHRvIDEwMCByZXF1ZXN0cyBwZXIgbWludXRlLjwvYmxvY2txdW90ZT48aDM+UE9TVCAvdXNlcnM8L2gzPjxwPkNyZWF0ZSBhIG5ldyB1c2VyIGluIHRoZSBzeXN0ZW0uPC9wPjxwcmU+PGNvZGU+ewogICZxdW90O25hbWUmcXVvdDs6ICZxdW90O0pvaG4gRG9lJnF1b3Q7LAogICZxdW90O2VtYWlsJnF1b3Q7OiAmcXVvdDtqb2huQGV4YW1wbGUuY29tJnF1b3Q7LAogICZxdW90O3JvbGUmcXVvdDs6ICZxdW90O3VzZXImcXVvdDsKfTwvY29kZT48L3ByZT48aHI+PHA+Rm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSByZWZlciB0byBvdXIgY29tcGxldGUgZG9jdW1lbnRhdGlvbi48L3A+IgogICAgICAgICAgb3V0cHV0Rm9ybWF0PSJodG1sIgogICAgICAgID48L2RlZXMtaW5wdXQtd3lzaXd5Zz4KICAgICAgPC9kZWVzLXBhbmVsPgoKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjcuIFx1MjY5OVx1RkUwRiBGb3JtIEludGVncmF0aW9uIn0+CiAgICAgICAgPHAgY2xhc3M9InBhbmVsLWRlc2NyaXB0aW9uIj4KICAgICAgICAgIFNlYW1sZXNzbHkgaW50ZWdyYXRlcyB3aXRoIGRlZXMtZm9ybSBmb3IgY29tcGxldGUgZm9ybSBzb2x1dGlvbnMuIAogICAgICAgICAgQWxsIHN0YW5kYXJkIGZvcm0gZmVhdHVyZXMgbGlrZSB2YWxpZGF0aW9uLCByZXF1aXJlZCBmaWVsZHMsIGFuZCBkYXRhIGJpbmRpbmcgd29yayBvdXQgb2YgdGhlIGJveC4KICAgICAgICA8L3A+CiAgICAgICAgCiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQgCiAgICAgICAgICAgIGxhYmVsPSJBcnRpY2xlIFRpdGxlIiAKICAgICAgICAgICAgcmVxdWlyZWQ9InRydWUiCiAgICAgICAgICAgIHZhbHVlPSJIb3cgdG8gQnVpbGQgTW9kZXJuIFdlYiBBcHBsaWNhdGlvbnMiCiAgICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWlucHV0LXd5c2l3eWcgCiAgICAgICAgICAgIGlkPSJlZGl0b3ItZm9ybS1pbnRlZ3JhdGlvbiIKICAgICAgICAgICAgbGFiZWw9IkFydGljbGUgQ29udGVudCIgCiAgICAgICAgICAgIGRlc2NyaXB0aW9uPSJXcml0ZSB5b3VyIGFydGljbGUgY29udGVudCBoZXJlIgogICAgICAgICAgICByZXF1aXJlZD0idHJ1ZSIKICAgICAgICAgICAgb3V0cHV0Rm9ybWF0PSJtYXJrZG93biIKICAgICAgICAgID48L2RlZXMtaW5wdXQtd3lzaXd5Zz4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtaW5wdXQtdGFncwogICAgICAgICAgICBsYWJlbD0iVGFncyIKICAgICAgICAgICAgZGVzY3JpcHRpb249IkFkZCByZWxldmFudCB0YWdzIGZvciB5b3VyIGFydGljbGUiCiAgICAgICAgICA+PC9kZWVzLWlucHV0LXRhZ3M+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyI4LiBcdXsxRjlFOX0gUHJvZ3JhbW1hdGljIEJsb2NrIENyZWF0aW9uIn0+CiAgICAgICAgPHAgY2xhc3M9InBhbmVsLWRlc2NyaXB0aW9uIj4KICAgICAgICAgIENyZWF0ZSBjb250ZW50IHByb2dyYW1tYXRpY2FsbHkgdXNpbmcgdGhlIGJsb2NrIEFQSSBmb3IgZHluYW1pYyBkb2N1bWVudCBnZW5lcmF0aW9uLgogICAgICAgIDwvcD4KICAgICAgICAKICAgICAgICA8ZGVlcy1pbnB1dC13eXNpd3lnCiAgICAgICAgICBpZD0iZWRpdG9yLXByb2dyYW1tYXRpYyIKICAgICAgICAgIGxhYmVsPSJQcm9ncmFtbWF0aWNhbGx5IEdlbmVyYXRlZCBDb250ZW50IgogICAgICAgICAgZGVzY3JpcHRpb249IlRoaXMgY29udGVudCB3YXMgY3JlYXRlZCB1c2luZyB0aGUgaW1wb3J0QmxvY2tzIEFQSSIKICAgICAgICA+PC9kZWVzLWlucHV0LXd5c2l3eWc+CiAgICAgICAgCiAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWdyb3VwIj4KICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1nZW5lcmF0ZS1yZXBvcnQiIGNsYXNzPSJkZW1vLWJ1dHRvbiI+CiAgICAgICAgICAgIEdlbmVyYXRlIFJlcG9ydAogICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAKICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1nZW5lcmF0ZS1yZWNpcGUiIGNsYXNzPSJkZW1vLWJ1dHRvbiI+CiAgICAgICAgICAgIEdlbmVyYXRlIFJlY2lwZQogICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAKICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1jbGVhci1lZGl0b3IiIGNsYXNzPSJkZW1vLWJ1dHRvbiI+CiAgICAgICAgICAgIENsZWFyIEVkaXRvcgogICAgICAgICAgPC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyI5LiBcdXsxRjRFNH0gRXhwb3J0L0ltcG9ydCBGZWF0dXJlcyJ9PgogICAgICAgIDxwIGNsYXNzPSJwYW5lbC1kZXNjcmlwdGlvbiI+CiAgICAgICAgICBUaGUgV1lTSVdZRyBlZGl0b3IgcHJvdmlkZXMgbXVsdGlwbGUgZXhwb3J0IGZvcm1hdHMgYW5kIGxvc3NsZXNzIHNhdmUvcmVzdG9yZSBjYXBhYmlsaXRpZXMgZm9yIG1heGltdW0gZmxleGliaWxpdHkuCiAgICAgICAgPC9wPgogICAgICAgIAogICAgICAgIDxkaXYgY2xhc3M9ImV4cG9ydC1pbmZvLWdyaWQiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZXhwb3J0LWluZm8tY2FyZCBibG9ja3MiPgogICAgICAgICAgICA8c3Ryb25nPkxvc3NsZXNzIEJsb2Nrczwvc3Ryb25nPgogICAgICAgICAgICA8cD5FeHBvcnQgYW5kIGltcG9ydCByYXcgYmxvY2sgc3RydWN0dXJlIGZvciBwZXJmZWN0IHJvdW5kLXRyaXAgZWRpdGluZzwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZXhwb3J0LWluZm8tY2FyZCBodG1sIj4KICAgICAgICAgICAgPHN0cm9uZz5IVE1MIEV4cG9ydDwvc3Ryb25nPgogICAgICAgICAgICA8cD5HZXQgY2xlYW4sIHNlbWFudGljIEhUTUwgcmVnYXJkbGVzcyBvZiBvdXRwdXQgZm9ybWF0IHNldHRpbmc8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImV4cG9ydC1pbmZvLWNhcmQgbWFya2Rvd24iPgogICAgICAgICAgICA8c3Ryb25nPk1hcmtkb3duIEV4cG9ydDwvc3Ryb25nPgogICAgICAgICAgICA8cD5FeHBvcnQgYXMgTWFya2Rvd24gZm9yIGRvY3MsIFJFQURNRXMsIGFuZCBzdGF0aWMgc2l0ZXM8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImV4cG9ydC1pbmZvLWNhcmQgc3RhdGUiPgogICAgICAgICAgICA8c3Ryb25nPlN0YXRlIE1hbmFnZW1lbnQ8L3N0cm9uZz4KICAgICAgICAgICAgPHA+U2F2ZSBhbmQgcmVzdG9yZSBjb21wbGV0ZSBlZGl0b3Igc3RhdGUgaW5jbHVkaW5nIHNldHRpbmdzPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgCiAgICAgICAgPGRlZXMtaW5wdXQtd3lzaXd5ZwogICAgICAgICAgaWQ9ImVkaXRvci1leHBvcnQiCiAgICAgICAgICBsYWJlbD0iRXhwb3J0IERlbW8gRWRpdG9yIgogICAgICAgICAgZGVzY3JpcHRpb249IlRyeSB0aGUgZXhwb3J0IGJ1dHRvbnMgYmVsb3cgdG8gc2VlIGRpZmZlcmVudCBvdXRwdXQgZm9ybWF0cyIKICAgICAgICAgIHZhbHVlPSI8aDE+U29mdHdhcmUgUmVsZWFzZSBOb3RlczwvaDE+PHA+PHN0cm9uZz5WZXJzaW9uIDIuNS4wPC9zdHJvbmc+IC0gUmVsZWFzZWQgRGVjZW1iZXIgMTUsIDIwMjQ8L3A+PGgyPvCfjokgTmV3IEZlYXR1cmVzPC9oMj48dWw+PGxpPkFkZGVkIGRhcmsgbW9kZSBzdXBwb3J0IGFjcm9zcyBhbGwgY29tcG9uZW50czwvbGk+PGxpPkltcGxlbWVudGVkIHJlYWwtdGltZSBjb2xsYWJvcmF0aW9uIGZlYXR1cmVzPC9saT48bGk+TmV3IGRhc2hib2FyZCBhbmFseXRpY3Mgd2lkZ2V0czwvbGk+PGxpPkV4cG9ydCBmdW5jdGlvbmFsaXR5IGZvciBhbGwgcmVwb3J0IHR5cGVzPC9saT48L3VsPjxoMj7wn5CbIEJ1ZyBGaXhlczwvaDI+PHVsPjxsaT5GaXhlZCBtZW1vcnkgbGVhayBpbiBkYXRhIHByb2Nlc3NpbmcgbW9kdWxlPC9saT48bGk+UmVzb2x2ZWQgYXV0aGVudGljYXRpb24gdGltZW91dCBpc3N1ZXM8L2xpPjxsaT5Db3JyZWN0ZWQgdGltZXpvbmUgaGFuZGxpbmcgaW4gc2NoZWR1bGVkIHRhc2tzPC9saT48L3VsPjxoMj7imqEgUGVyZm9ybWFuY2UgSW1wcm92ZW1lbnRzPC9oMj48YmxvY2txdW90ZT5QYWdlIGxvYWQgdGltZXMgcmVkdWNlZCBieSA0MCUgdGhyb3VnaCBsYXp5IGxvYWRpbmcgYW5kIGNvZGUgc3BsaXR0aW5nPC9ibG9ja3F1b3RlPjxoMj7wn5SnIFRlY2huaWNhbCBEZXRhaWxzPC9oMj48cHJlPjxjb2RlPi8vIE5ldyBBUEkgZW5kcG9pbnQgZm9yIGJhdGNoIG9wZXJhdGlvbnMKUE9TVCAvYXBpL3YyL2JhdGNoCnsKICAmcXVvdDtvcGVyYXRpb25zJnF1b3Q7OiBbCiAgICB7ICZxdW90O21ldGhvZCZxdW90OzogJnF1b3Q7R0VUJnF1b3Q7LCAmcXVvdDtwYXRoJnF1b3Q7OiAmcXVvdDsvdXNlcnMvMTIzJnF1b3Q7IH0sCiAgICB7ICZxdW90O21ldGhvZCZxdW90OzogJnF1b3Q7UFVUJnF1b3Q7LCAmcXVvdDtwYXRoJnF1b3Q7OiAmcXVvdDsvc2V0dGluZ3MmcXVvdDssICZxdW90O2JvZHkmcXVvdDs6IHsuLi59IH0KICBdCn08L2NvZGU+PC9wcmU+PGgyPvCfkqEgTWlncmF0aW9uIEd1aWRlPC9oMj48b2w+PGxpPlVwZGF0ZSB5b3VyIGRlcGVuZGVuY2llcyB0byB0aGUgbGF0ZXN0IHZlcnNpb25zPC9saT48bGk+UnVuIGRhdGFiYXNlIG1pZ3JhdGlvbnM6IDxjb2RlPm5wbSBydW4gbWlncmF0ZTwvY29kZT48L2xpPjxsaT5DbGVhciBjYWNoZTogPGNvZGU+bnBtIHJ1biBjYWNoZTpjbGVhcjwvY29kZT48L2xpPjxsaT5SZXN0YXJ0IGFsbCBzZXJ2aWNlczwvbGk+PC9vbD48aHI+PHA+Rm9yIHF1ZXN0aW9ucyBvciBpc3N1ZXMsIHBsZWFzZSBjb250YWN0IHRoZSBkZXZlbG9wbWVudCB0ZWFtIG9yIGZpbGUgYSB0aWNrZXQgaW4gb3VyIGlzc3VlIHRyYWNrZXIuPC9wPiIKICAgICAgICA+PC9kZWVzLWlucHV0LXd5c2l3eWc+CiAgICAgICAgCiAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWdyb3VwIj4KICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1leHBvcnQtYmxvY2tzIiBjbGFzcz0iZGVtby1idXR0b24iPgogICAgICAgICAgICBFeHBvcnQgQmxvY2tzCiAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgIAogICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLWV4cG9ydC1odG1sIiBjbGFzcz0iZGVtby1idXR0b24iPgogICAgICAgICAgICBFeHBvcnQgYXMgSFRNTAogICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAKICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1leHBvcnQtbWFya2Rvd24iIGNsYXNzPSJkZW1vLWJ1dHRvbiI+CiAgICAgICAgICAgIEV4cG9ydCBhcyBNYXJrZG93bgogICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAKICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1zYXZlLXN0YXRlIiBjbGFzcz0iZGVtby1idXR0b24iPgogICAgICAgICAgICBTYXZlIFN0YXRlCiAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgIAogICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLXJlc3RvcmUtc3RhdGUiIGNsYXNzPSJkZW1vLWJ1dHRvbiI+CiAgICAgICAgICAgIFJlc3RvcmUgU3RhdGUKICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2Rpdj4KICA8L2RlZXMtZGVtb3dyYXBwZXI+CmAsImRlbW9GdW5jIil9KTt2YXIgTWw9ZygoKT0+e30pO3ZhciBjcixCOD1nKCgpPT57TWwoKTtjcj1jbGFzc3tzdGF0aWN7aSh0aGlzLCJXeXNpd3lnU2hvcnRjdXRzIil9c3RhdGljIEhFQURJTkdfUEFUVEVSTlM9W3twYXR0ZXJuOi9eI1tcc1x1MDBBMF0kLyx0eXBlOiJoZWFkaW5nLTEifSx7cGF0dGVybjovXiMjW1xzXHUwMEEwXSQvLHR5cGU6ImhlYWRpbmctMiJ9LHtwYXR0ZXJuOi9eIyMjW1xzXHUwMEEwXSQvLHR5cGU6ImhlYWRpbmctMyJ9XTtzdGF0aWMgTElTVF9QQVRURVJOUz1be3BhdHRlcm46L15bKi1dW1xzXHUwMEEwXSQvLHR5cGU6ImJ1bGxldCJ9LHtwYXR0ZXJuOi9eKFxkKylcLltcc1x1MDBBMF0kLyx0eXBlOiJvcmRlcmVkIn0se3BhdHRlcm46L14oXGQrKVwpW1xzXHUwMEEwXSQvLHR5cGU6Im9yZGVyZWQifV07c3RhdGljIFFVT1RFX1BBVFRFUk49L14+W1xzXHUwMEEwXSQvO3N0YXRpYyBDT0RFX1BBVFRFUk49L15gYGAkLztzdGF0aWMgRElWSURFUl9QQVRURVJOUz1bIi0tLSIsIioqKiIsIl9fXyJdO3N0YXRpYyBjaGVja0hlYWRpbmdTaG9ydGN1dChlKXtmb3IobGV0e3BhdHRlcm46dCx0eXBlOmF9b2YgdGhpcy5IRUFESU5HX1BBVFRFUk5TKWlmKHQudGVzdChlKSlyZXR1cm57dHlwZTphfTtyZXR1cm4gbnVsbH1zdGF0aWMgY2hlY2tMaXN0U2hvcnRjdXQoZSl7Zm9yKGxldHtwYXR0ZXJuOnQsdHlwZTphfW9mIHRoaXMuTElTVF9QQVRURVJOUylpZih0LnRlc3QoZSkpcmV0dXJue3R5cGU6Imxpc3QiLGxpc3RUeXBlOmF9O3JldHVybiBudWxsfXN0YXRpYyBjaGVja1F1b3RlU2hvcnRjdXQoZSl7cmV0dXJuIHRoaXMuUVVPVEVfUEFUVEVSTi50ZXN0KGUpfXN0YXRpYyBjaGVja0NvZGVTaG9ydGN1dChlKXtyZXR1cm4gdGhpcy5DT0RFX1BBVFRFUk4udGVzdChlKX1zdGF0aWMgY2hlY2tEaXZpZGVyU2hvcnRjdXQoZSl7cmV0dXJuIHRoaXMuRElWSURFUl9QQVRURVJOUy5pbmNsdWRlcyhlKX1zdGF0aWMgZ2V0U2xhc2hNZW51SXRlbXMoKXtyZXR1cm5be3R5cGU6InBhcmFncmFwaCIsbGFiZWw6IlBhcmFncmFwaCIsaWNvbjoibHVjaWRlOnBpbGNyb3cifSx7dHlwZToiaGVhZGluZy0xIixsYWJlbDoiSGVhZGluZyAxIixpY29uOiJsdWNpZGU6aGVhZGluZzEifSx7dHlwZToiaGVhZGluZy0yIixsYWJlbDoiSGVhZGluZyAyIixpY29uOiJsdWNpZGU6aGVhZGluZzIifSx7dHlwZToiaGVhZGluZy0zIixsYWJlbDoiSGVhZGluZyAzIixpY29uOiJsdWNpZGU6aGVhZGluZzMifSx7dHlwZToicXVvdGUiLGxhYmVsOiJRdW90ZSIsaWNvbjoibHVjaWRlOnF1b3RlIn0se3R5cGU6ImNvZGUiLGxhYmVsOiJDb2RlIEJsb2NrIixpY29uOiJsdWNpZGU6ZmlsZUNvZGUifSx7dHlwZToibGlzdCIsbGFiZWw6IkJ1bGxldCBMaXN0IixpY29uOiJsdWNpZGU6bGlzdCJ9LHt0eXBlOiJpbWFnZSIsbGFiZWw6IkltYWdlIixpY29uOiJsdWNpZGU6aW1hZ2UifSx7dHlwZToiZGl2aWRlciIsbGFiZWw6IkRpdmlkZXIiLGljb246Imx1Y2lkZTptaW51cyJ9LHt0eXBlOiJ5b3V0dWJlIixsYWJlbDoiWW91VHViZSIsaWNvbjoibHVjaWRlOnlvdXR1YmUifSx7dHlwZToibWFya2Rvd24iLGxhYmVsOiJNYXJrZG93biIsaWNvbjoibHVjaWRlOmZpbGVUZXh0In0se3R5cGU6Imh0bWwiLGxhYmVsOiJIVE1MIixpY29uOiJsdWNpZGU6Y29kZSJ9LHt0eXBlOiJhdHRhY2htZW50IixsYWJlbDoiRmlsZSBBdHRhY2htZW50IixpY29uOiJsdWNpZGU6cGFwZXJjbGlwIn1dfXN0YXRpYyBnZW5lcmF0ZUJsb2NrSWQoKXtyZXR1cm5gYmxvY2stJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLDkpfWB9fX0pO3ZhciBtdixKMSxQbmUsaXR0PWcoKCk9PntwZSgpO3puKCk7VWEoKTtNbCgpO0I4KCk7cHQoKTttdj1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sSjE9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LFBuZT0oKCk9PntsZXQgcz1bbmUoImRlZXMtc2xhc2gtbWVudSIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdO3ZhciBOPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzU2xhc2hNZW51Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IEM9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bWSgpXSxwPVtZKCldLGM9W1koKV0seD1bWSgpXSx5PVtZKCldLG12KHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidmlzaWJsZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4idmlzaWJsZSJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLnZpc2libGUsImdldCIpLHNldDppKChfLE8pPT57Xy52aXNpYmxlPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sbyxsKSxtdih0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InBvc2l0aW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJwb3NpdGlvbiJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLnBvc2l0aW9uLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18ucG9zaXRpb249T30sInNldCIpfSxtZXRhZGF0YTpDfSxkLHUpLG12KHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZmlsdGVyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJmaWx0ZXIiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5maWx0ZXIsImdldCIpLHNldDppKChfLE8pPT57Xy5maWx0ZXI9T30sInNldCIpfSxtZXRhZGF0YTpDfSxiLHYpLG12KHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VsZWN0ZWRJbmRleCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4ic2VsZWN0ZWRJbmRleCJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLnNlbGVjdGVkSW5kZXgsImdldCIpLHNldDppKChfLE8pPT57Xy5zZWxlY3RlZEluZGV4PU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sbSxmKSxtdih0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1lbnVaSW5kZXgiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+Im1lbnVaSW5kZXgiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5tZW51WkluZGV4LCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18ubWVudVpJbmRleD1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LE0seiksbXYobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6Q30sbnVsbCx0KSxOPWE9ZS52YWx1ZSxDJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOkN9KX1zdGF0aWMgaW5zdGFuY2U7c3RhdGljIGdldEluc3RhbmNlKCl7cmV0dXJuIE4uaW5zdGFuY2V8fChOLmluc3RhbmNlPW5ldyBOLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoTi5pbnN0YW5jZSkpLE4uaW5zdGFuY2V9I2U9SjEodGhpcyxvLCExKTtnZXQgdmlzaWJsZSgpe3JldHVybiB0aGlzLiNlfXNldCB2aXNpYmxlKEMpe3RoaXMuI2U9Q30jdD0oSjEodGhpcyxsKSxKMSh0aGlzLGQse3g6MCx5OjB9KSk7Z2V0IHBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuI3R9c2V0IHBvc2l0aW9uKEMpe3RoaXMuI3Q9Q30jYT0oSjEodGhpcyx1KSxKMSh0aGlzLGIsIiIpKTtnZXQgZmlsdGVyKCl7cmV0dXJuIHRoaXMuI2F9c2V0IGZpbHRlcihDKXt0aGlzLiNhPUN9I3M9KEoxKHRoaXMsdiksSjEodGhpcyxtLDApKTtnZXQgc2VsZWN0ZWRJbmRleCgpe3JldHVybiB0aGlzLiNzfXNldCBzZWxlY3RlZEluZGV4KEMpe3RoaXMuI3M9Q30jaT0oSjEodGhpcyxmKSxKMSh0aGlzLE0sMWUzKSk7Z2V0IG1lbnVaSW5kZXgoKXtyZXR1cm4gdGhpcy4jaX1zZXQgbWVudVpJbmRleChDKXt0aGlzLiNpPUN9Y2FsbGJhY2s9KEoxKHRoaXMseiksbnVsbCk7c3RhdGljIHN0eWxlcz1bSGUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICAgIDpob3N0IHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgd2lkdGg6IDA7CiAgICAgICAgaGVpZ2h0OiAwOwogICAgICB9CgogICAgICAuc2xhc2gtbWVudSB7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzA5MDkwYiIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMyNzI3MmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMSksIDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDYpOwogICAgICAgIHBhZGRpbmc6IDRweDsKICAgICAgICBtaW4td2lkdGg6IDIyMHB4OwogICAgICAgIG1heC1oZWlnaHQ6IDMwMHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgYW5pbWF0aW9uOiBmYWRlSW5TY2FsZSAwLjE1cyBlYXNlLW91dDsKICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBmYWRlSW5TY2FsZSB7CiAgICAgICAgZnJvbSB7CiAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk4KSB0cmFuc2xhdGVZKC0ycHgpOwogICAgICAgIH0KICAgICAgICB0byB7CiAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKSB0cmFuc2xhdGVZKDApOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLnNsYXNoLW1lbnUtaXRlbSB7CiAgICAgICAgcGFkZGluZzogOHB4IDEwcHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICB9CgogICAgICAuc2xhc2gtbWVudS1pdGVtOmhvdmVyLAogICAgICAuc2xhc2gtbWVudS1pdGVtLnNlbGVjdGVkIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMyNzI3MmEiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLnNsYXNoLW1lbnUtaXRlbSAuaWNvbiB7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICB9CgogICAgICAuc2xhc2gtbWVudS1pdGVtOmhvdmVyIC5pY29uLAogICAgICAuc2xhc2gtbWVudS1pdGVtLnNlbGVjdGVkIC5pY29uIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzYjgyZjYiLCIjM2I4MmY2Iil9OwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtpZighdGhpcy52aXNpYmxlKXJldHVybiB3YGA7dGhpcy5zdHlsZS56SW5kZXg9dGhpcy5tZW51WkluZGV4LnRvU3RyaW5nKCk7bGV0IEM9dGhpcy5nZXRGaWx0ZXJlZE1lbnVJdGVtcygpO3JldHVybiB3YAogICAgICA8ZGl2IAogICAgICAgIGNsYXNzPSJzbGFzaC1tZW51IiAKICAgICAgICBzdHlsZT0ibGVmdDogJHt0aGlzLnBvc2l0aW9uLnh9cHg7IHRvcDogJHt0aGlzLnBvc2l0aW9uLnl9cHg7IgogICAgICAgIHRhYmluZGV4PSItMSIKICAgICAgICBkYXRhLW1lbnUtdHlwZT0ic2xhc2giCiAgICAgID4KICAgICAgICAke0MubWFwKChfLE8pPT53YAogICAgICAgICAgPGRpdiAKICAgICAgICAgICAgY2xhc3M9InNsYXNoLW1lbnUtaXRlbSAke089PT10aGlzLnNlbGVjdGVkSW5kZXg/InNlbGVjdGVkIjoiIn0iCiAgICAgICAgICAgIGRhdGEtaXRlbS10eXBlPSIke18udHlwZX0iCiAgICAgICAgICAgIGRhdGEtaXRlbS1pbmRleD0iJHtPfSIKICAgICAgICAgID4KICAgICAgICAgICAgPGRlZXMtaWNvbiBjbGFzcz0iaWNvbiIgLmljb249IiR7Xy5pY29ufSIgaWNvblNpemU9IjE2Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgPHNwYW4+JHtfLmxhYmVsfTwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIGApfQogICAgICA8L2Rpdj4KICAgIGB9Z2V0RmlsdGVyZWRNZW51SXRlbXMoKXtyZXR1cm4gY3IuZ2V0U2xhc2hNZW51SXRlbXMoKS5maWx0ZXIoXz0+dGhpcy5maWx0ZXI9PT0iInx8Xy5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuZmlsdGVyLnRvTG93ZXJDYXNlKCkpKX1zZWxlY3RJdGVtKEMpe3RoaXMuY2FsbGJhY2smJnRoaXMuY2FsbGJhY2soQyksdGhpcy5oaWRlKCl9c2hvdyhDLF8pe3RoaXMucG9zaXRpb249Qyx0aGlzLmNhbGxiYWNrPV8sdGhpcy5maWx0ZXI9IiIsdGhpcy5zZWxlY3RlZEluZGV4PTAsdGhpcy5tZW51WkluZGV4PXhhLmdldE5leHRaSW5kZXgoKSx4YS5yZWdpc3Rlcih0aGlzLHRoaXMubWVudVpJbmRleCksdGhpcy5zdHlsZS56SW5kZXg9dGhpcy5tZW51WkluZGV4LnRvU3RyaW5nKCksdGhpcy52aXNpYmxlPSEwfWhpZGUoKXt0aGlzLnZpc2libGU9ITEsdGhpcy5jYWxsYmFjaz1udWxsLHRoaXMuZmlsdGVyPSIiLHRoaXMuc2VsZWN0ZWRJbmRleD0wLHhhLnVucmVnaXN0ZXIodGhpcyl9dXBkYXRlRmlsdGVyKEMpe3RoaXMuZmlsdGVyPUMsdGhpcy5zZWxlY3RlZEluZGV4PTB9bmF2aWdhdGUoQyl7bGV0IF89dGhpcy5nZXRGaWx0ZXJlZE1lbnVJdGVtcygpO0M9PT0iZG93biI/dGhpcy5zZWxlY3RlZEluZGV4PSh0aGlzLnNlbGVjdGVkSW5kZXgrMSklXy5sZW5ndGg6dGhpcy5zZWxlY3RlZEluZGV4PXRoaXMuc2VsZWN0ZWRJbmRleD09PTA/Xy5sZW5ndGgtMTp0aGlzLnNlbGVjdGVkSW5kZXgtMX1zZWxlY3RDdXJyZW50KCl7bGV0IEM9dGhpcy5nZXRGaWx0ZXJlZE1lbnVJdGVtcygpO0NbdGhpcy5zZWxlY3RlZEluZGV4XSYmdGhpcy5zZWxlY3RJdGVtKENbdGhpcy5zZWxlY3RlZEluZGV4XS50eXBlKX1maXJzdFVwZGF0ZWQoKXt0aGlzLnNoYWRvd1Jvb3QuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIixDPT57bGV0IF89QyxPPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLnNsYXNoLW1lbnUiKTtPJiZPLmNvbnRhaW5zKF8udGFyZ2V0KSYmKF8ucHJldmVudERlZmF1bHQoKSxfLnN0b3BQcm9wYWdhdGlvbigpKX0pLHRoaXMuc2hhZG93Um9vdC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsQz0+e2xldCBfPUMsJD1fLnRhcmdldC5jbG9zZXN0KCIuc2xhc2gtbWVudS1pdGVtIik7aWYoJCl7Xy5wcmV2ZW50RGVmYXVsdCgpLF8uc3RvcFByb3BhZ2F0aW9uKCk7bGV0IEU9JC5nZXRBdHRyaWJ1dGUoImRhdGEtaXRlbS10eXBlIik7RSYmdGhpcy5zZWxlY3RJdGVtKEUpfX0pLHRoaXMuc2hhZG93Um9vdC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWVudGVyIixDPT57bGV0ICQ9Qy50YXJnZXQuY2xvc2VzdCgiLnNsYXNoLW1lbnUtaXRlbSIpO2lmKCQpe2xldCBFPXBhcnNlSW50KCQuZ2V0QXR0cmlidXRlKCJkYXRhLWl0ZW0taW5kZXgiKXx8IjAiLDEwKTt0aGlzLnNlbGVjdGVkSW5kZXg9RX19LCEwKSx0aGlzLnNoYWRvd1Jvb3QuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLEM9PntsZXQgXz1DLE89dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIuc2xhc2gtbWVudSIpO08mJk8uY29udGFpbnMoXy50YXJnZXQpJiYoXy5wcmV2ZW50RGVmYXVsdCgpLF8uc3RvcFByb3BhZ2F0aW9uKCkpfSwhMCl9c3RhdGlje0oxKGEsdCl9fTtyZXR1cm4gTj1hfSkoKX0pO3ZhciBTdCxEZD1nKCgpPT57U3Q9Y2xhc3N7c3RhdGlje2kodGhpcywiV3lzaXd5Z1NlbGVjdGlvbiIpfXN0YXRpYyBnZXRTZWxlY3Rpb25JbmZvKC4uLmUpe2xldCB0PXdpbmRvdy5nZXRTZWxlY3Rpb24oKTtpZihjb25zb2xlLmxvZygiV3lzaXd5Z1NlbGVjdGlvbi5nZXRTZWxlY3Rpb25JbmZvIC0gc2VsZWN0aW9uOiIsdCwicmFuZ2VDb3VudDoiLHQ/LnJhbmdlQ291bnQpLCF0KXJldHVybiBudWxsO2lmKCJnZXRDb21wb3NlZFJhbmdlcyJpbiB0JiZ0eXBlb2YgdC5nZXRDb21wb3NlZFJhbmdlcz09ImZ1bmN0aW9uIil7Y29uc29sZS5sb2coIlVzaW5nIGdldENvbXBvc2VkUmFuZ2VzIHdpdGgiLGUubGVuZ3RoLCJzaGFkb3cgcm9vdHMiKTt0cnl7bGV0IGE9dC5nZXRDb21wb3NlZFJhbmdlcyh7c2hhZG93Um9vdHM6ZX0pO2lmKGNvbnNvbGUubG9nKCJnZXRDb21wb3NlZFJhbmdlcyByZXR1cm5lZCIsYS5sZW5ndGgsInJhbmdlcyIpLGEubGVuZ3RoPjApe2xldCByPWFbMF07cmV0dXJue3N0YXJ0Q29udGFpbmVyOnIuc3RhcnRDb250YWluZXIsc3RhcnRPZmZzZXQ6ci5zdGFydE9mZnNldCxlbmRDb250YWluZXI6ci5lbmRDb250YWluZXIsZW5kT2Zmc2V0OnIuZW5kT2Zmc2V0LGNvbGxhcHNlZDpyLmNvbGxhcHNlZH19fWNhdGNoKGEpe2NvbnNvbGUud2FybigiZ2V0Q29tcG9zZWRSYW5nZXMgZmFpbGVkLCBmYWxsaW5nIGJhY2sgdG8gZ2V0UmFuZ2VBdDoiLGEpfX1lbHNlIGNvbnNvbGUubG9nKCJnZXRDb21wb3NlZFJhbmdlcyBub3QgYXZhaWxhYmxlLCB1c2luZyBmYWxsYmFjayIpO2lmKHQucmFuZ2VDb3VudD4wKXtsZXQgYT10LmdldFJhbmdlQXQoMCk7cmV0dXJue3N0YXJ0Q29udGFpbmVyOmEuc3RhcnRDb250YWluZXIsc3RhcnRPZmZzZXQ6YS5zdGFydE9mZnNldCxlbmRDb250YWluZXI6YS5lbmRDb250YWluZXIsZW5kT2Zmc2V0OmEuZW5kT2Zmc2V0LGNvbGxhcHNlZDphLmNvbGxhcHNlZH19cmV0dXJuIG51bGx9c3RhdGljIGlzU2VsZWN0aW9uSW5FbGVtZW50KGUsdCl7bGV0IGE9dD90aGlzLmdldFNlbGVjdGlvbkluZm8odCk6dGhpcy5nZXRTZWxlY3Rpb25JbmZvKCk7cmV0dXJuIGE/ZS5jb250YWlucyhhLnN0YXJ0Q29udGFpbmVyKXx8ZS5jb250YWlucyhhLmVuZENvbnRhaW5lcik6ITF9c3RhdGljIGdldFNlbGVjdGVkVGV4dCgpe2xldCBlPXdpbmRvdy5nZXRTZWxlY3Rpb24oKTtyZXR1cm4gZT9lLnRvU3RyaW5nKCk6IiJ9c3RhdGljIGNyZWF0ZVJhbmdlRnJvbUluZm8oZSl7bGV0IHQ9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtyZXR1cm4gdC5zZXRTdGFydChlLnN0YXJ0Q29udGFpbmVyLGUuc3RhcnRPZmZzZXQpLHQuc2V0RW5kKGUuZW5kQ29udGFpbmVyLGUuZW5kT2Zmc2V0KSx0fXN0YXRpYyBzZXRTZWxlY3Rpb25Gcm9tUmFuZ2UoZSl7bGV0IHQ9d2luZG93LmdldFNlbGVjdGlvbigpO3QmJih0LnJlbW92ZUFsbFJhbmdlcygpLHQuYWRkUmFuZ2UoZSkpfXN0YXRpYyBnZXRDdXJzb3JQb3NpdGlvbkluRWxlbWVudChlLC4uLnQpe2xldCBhPXQubGVuZ3RoPjA/dGhpcy5nZXRTZWxlY3Rpb25JbmZvKC4uLnQpOnRoaXMuZ2V0U2VsZWN0aW9uSW5mbygpO2lmKCFhfHwhYS5jb2xsYXBzZWQpcmV0dXJuIG51bGw7dHJ5e2xldCByPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7aWYoci5zZWxlY3ROb2RlQ29udGVudHMoZSksdGhpcy5jb250YWluc0Fjcm9zc1NoYWRvd0RPTShlLGEuc3RhcnRDb250YWluZXIpKXJldHVybiByLnNldEVuZChhLnN0YXJ0Q29udGFpbmVyLGEuc3RhcnRPZmZzZXQpLHIudG9TdHJpbmcoKS5sZW5ndGg7e2xldCBvPWUudGV4dENvbnRlbnR8fCIiLGw9YS5zdGFydENvbnRhaW5lci50ZXh0Q29udGVudHx8IiI7cmV0dXJuIGEuc3RhcnRPZmZzZXQ9PT0wPzA6YS5zdGFydE9mZnNldD09PWwubGVuZ3RoP28ubGVuZ3RoOihjb25zb2xlLndhcm4oIlNlbGVjdGlvbiBjb250YWluZXIgbm90IHdpdGhpbiBlbGVtZW50LCB1c2luZyB0ZXh0IG1hdGNoaW5nIGZhbGxiYWNrIiksYS5zdGFydE9mZnNldCl9fWNhdGNoKHIpe3JldHVybiBjb25zb2xlLndhcm4oIkZhaWxlZCB0byBnZXQgY3Vyc29yIHBvc2l0aW9uOiIsciksbnVsbH19c3RhdGljIGdldEN1cnNvclBvc2l0aW9uRnJvbVBvaW50KGUsdCxhLC4uLnIpe2lmKCJjYXJldFBvc2l0aW9uRnJvbVBvaW50ImluIGRvY3VtZW50JiZkb2N1bWVudC5jYXJldFBvc2l0aW9uRnJvbVBvaW50KXtsZXQgbj1udWxsO3RyeXtuPWRvY3VtZW50LmNhcmV0UG9zaXRpb25Gcm9tUG9pbnQoZSx0LC4uLnIpfWNhdGNoe249ZG9jdW1lbnQuY2FyZXRQb3NpdGlvbkZyb21Qb2ludChlLHQpfWlmKG4mJmEuY29udGFpbnMobi5vZmZzZXROb2RlKSlyZXR1cm4gdGhpcy5nZXRPZmZzZXRJbkVsZW1lbnQobi5vZmZzZXROb2RlLG4ub2Zmc2V0LGEpfWlmKCJjYXJldFJhbmdlRnJvbVBvaW50ImluIGRvY3VtZW50KXtsZXQgbj1kb2N1bWVudC5jYXJldFJhbmdlRnJvbVBvaW50KGUsdCk7aWYobiYmYS5jb250YWlucyhuLnN0YXJ0Q29udGFpbmVyKSlyZXR1cm4gdGhpcy5nZXRPZmZzZXRJbkVsZW1lbnQobi5zdGFydENvbnRhaW5lcixuLnN0YXJ0T2Zmc2V0LGEpfXJldHVybiBudWxsfXN0YXRpYyBnZXRPZmZzZXRJbkVsZW1lbnQoZSx0LGEpe2xldCByPTAsbj0hMSxvPWRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoYSxOb2RlRmlsdGVyLlNIT1dfVEVYVCxudWxsKSxsO2Zvcig7bD1vLm5leHROb2RlKCk7KWlmKGw9PT1lKXtyKz10LG49ITA7YnJlYWt9ZWxzZSByKz1sLnRleHRDb250ZW50Py5sZW5ndGh8fDA7cmV0dXJuIG4/cjowfXN0YXRpYyBzZXRDdXJzb3JQb3NpdGlvbihlLHQpe2xldCBhPWRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoZSxOb2RlRmlsdGVyLlNIT1dfVEVYVCxudWxsKSxyPTAsbj1udWxsLG89MDtmb3IoO2EubmV4dE5vZGUoKTspe2xldCBsPWEuY3VycmVudE5vZGUscD1sLnRleHRDb250ZW50Py5sZW5ndGh8fDA7aWYocitwPj10KXtuPWwsbz10LXI7YnJlYWt9cis9cH1pZihuKXtsZXQgbD1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO2wuc2V0U3RhcnQobixvKSxsLmNvbGxhcHNlKCEwKSx0aGlzLnNldFNlbGVjdGlvbkZyb21SYW5nZShsKX19c3RhdGljIGNvbnRhaW5zQWNyb3NzU2hhZG93RE9NKGUsdCl7aWYoIWV8fCF0KXJldHVybiExO2xldCBhPXQ7Zm9yKDthOyl7aWYoYT09PWUpcmV0dXJuITA7aWYoYS5ub2RlVHlwZT09PU5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSYmYS5ob3N0KXtsZXQgcj1hO2lmKHIuY29udGFpbnMoZSkpcmV0dXJuITE7YT1yLmhvc3R9ZWxzZSBhPWEucGFyZW50Tm9kZX1yZXR1cm4hMX19fSk7dmFyIHN1LHJ0dD1nKCgpPT57cGUoKTtEZCgpO3N1PWNsYXNze3N0YXRpY3tpKHRoaXMsIld5c2l3eWdGb3JtYXR0aW5nIil9c3RhdGljIGZvcm1hdEJ1dHRvbnM9W3tjb21tYW5kOiJib2xkIixpY29uOiJCIixsYWJlbDoiQm9sZCIsc2hvcnRjdXQ6Ilx1MjMxOEIifSx7Y29tbWFuZDoiaXRhbGljIixpY29uOiJJIixsYWJlbDoiSXRhbGljIixzaG9ydGN1dDoiXHUyMzE4SSJ9LHtjb21tYW5kOiJ1bmRlcmxpbmUiLGljb246IlUiLGxhYmVsOiJVbmRlcmxpbmUiLHNob3J0Y3V0OiJcdTIzMThVIn0se2NvbW1hbmQ6InN0cmlrZVRocm91Z2giLGljb246IlNcdTAzMzYiLGxhYmVsOiJTdHJpa2V0aHJvdWdoIn0se2NvbW1hbmQ6ImNvZGUiLGljb246InsgfSIsbGFiZWw6IklubGluZSBDb2RlIn0se2NvbW1hbmQ6ImxpbmsiLGljb246Ilx1ezFGNTE3fSIsbGFiZWw6IkxpbmsiLHNob3J0Y3V0OiJcdTIzMThLIn1dO3N0YXRpYyByZW5kZXJGb3JtYXR0aW5nTWVudShlLHQpe3JldHVybiB3YAogICAgICA8ZGl2IAogICAgICAgIGNsYXNzPSJmb3JtYXR0aW5nLW1lbnUiIAogICAgICAgIHN0eWxlPSJ0b3A6ICR7ZS55fXB4OyBsZWZ0OiAke2UueH1weDsiCiAgICAgICAgQG1vdXNlZG93bj0iJHthPT57YS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCl9fSIKICAgICAgICBAY2xpY2s9IiR7YT0+YS5zdG9wUHJvcGFnYXRpb24oKX0iCiAgICAgID4KICAgICAgICAke3RoaXMuZm9ybWF0QnV0dG9ucy5tYXAoYT0+d2AKICAgICAgICAgIDxidXR0b24gCiAgICAgICAgICAgIGNsYXNzPSJmb3JtYXQtYnV0dG9uICR7YS5jb21tYW5kfSIKICAgICAgICAgICAgQGNsaWNrPSIkeygpPT50KGEuY29tbWFuZCl9IgogICAgICAgICAgICB0aXRsZT0iJHthLmxhYmVsfSR7YS5zaG9ydGN1dD9gICgke2Euc2hvcnRjdXR9KWA6IiJ9IgogICAgICAgICAgPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iJHthLmNvbW1hbmQ9PT0iY29kZSI/ImNvZGUtaWNvbiI6IiJ9Ij4ke2EuaWNvbn08L3NwYW4+CiAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICBgKX0KICAgICAgPC9kaXY+CiAgICBgfXN0YXRpYyBhcHBseUZvcm1hdChlLHQsYSxyKXtsZXQgbjtpZihhKW49YTtlbHNle2xldCBvPXdpbmRvdy5nZXRTZWxlY3Rpb24oKTtpZighb3x8by5yYW5nZUNvdW50PT09MClyZXR1cm4hMTtuPW8uZ2V0UmFuZ2VBdCgwKX1zd2l0Y2goZSl7Y2FzZSJib2xkIjp0aGlzLndyYXBTZWxlY3Rpb24obiwic3Ryb25nIik7YnJlYWs7Y2FzZSJpdGFsaWMiOnRoaXMud3JhcFNlbGVjdGlvbihuLCJlbSIpO2JyZWFrO2Nhc2UidW5kZXJsaW5lIjp0aGlzLndyYXBTZWxlY3Rpb24obiwidSIpO2JyZWFrO2Nhc2Uic3RyaWtlVGhyb3VnaCI6dGhpcy53cmFwU2VsZWN0aW9uKG4sInMiKTticmVhaztjYXNlImNvZGUiOnRoaXMud3JhcFNlbGVjdGlvbihuLCJjb2RlIik7YnJlYWs7Y2FzZSJsaW5rIjppZighdClyZXR1cm4hMTt0aGlzLndyYXBTZWxlY3Rpb25XaXRoTGluayhuLHQpO2JyZWFrfWlmKHImJnIubGVuZ3RoPjApU3Quc2V0U2VsZWN0aW9uRnJvbVJhbmdlKG4pO2Vsc2V7bGV0IG89d2luZG93LmdldFNlbGVjdGlvbigpO28mJihvLnJlbW92ZUFsbFJhbmdlcygpLG8uYWRkUmFuZ2UobikpfXJldHVybiEwfXN0YXRpYyB3cmFwU2VsZWN0aW9uKGUsdCl7bGV0IGE9d2luZG93LmdldFNlbGVjdGlvbigpO2lmKCFhKXJldHVybjtpZih0aGlzLnNlbGVjdGlvbkNvbnRhaW5zVGFnKGUsdCkpdGhpcy5yZW1vdmVUYWdGcm9tU2VsZWN0aW9uKGUsdCk7ZWxzZXtsZXQgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KHQpO3RyeXtsZXQgbz1lLmV4dHJhY3RDb250ZW50cygpO24uYXBwZW5kQ2hpbGQobyksZS5pbnNlcnROb2RlKG4pLGUuc2VsZWN0Tm9kZUNvbnRlbnRzKG4pLGEucmVtb3ZlQWxsUmFuZ2VzKCksYS5hZGRSYW5nZShlKX1jYXRjaChvKXtjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gd3JhcCBzZWxlY3Rpb246IixvKX19fXN0YXRpYyBzZWxlY3Rpb25Db250YWluc1RhZyhlLHQpe2xldCBhPWUuc3RhcnRDb250YWluZXI7Zm9yKDthJiZhIT09ZS5jb21tb25BbmNlc3RvckNvbnRhaW5lci5vd25lckRvY3VtZW50Oyl7aWYoYS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiZhLnRhZ05hbWUudG9Mb3dlckNhc2UoKT09PXQpcmV0dXJuITA7YT1hLnBhcmVudE5vZGV9Zm9yKGE9ZS5lbmRDb250YWluZXI7YSYmYSE9PWUuY29tbW9uQW5jZXN0b3JDb250YWluZXIub3duZXJEb2N1bWVudDspe2lmKGEubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmYS50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PT10KXJldHVybiEwO2E9YS5wYXJlbnROb2RlfWxldCByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLG49ZS5jbG9uZUNvbnRlbnRzKCk7cmV0dXJuIHIuYXBwZW5kQ2hpbGQobiksci5nZXRFbGVtZW50c0J5VGFnTmFtZSh0KS5sZW5ndGg+MH1zdGF0aWMgcmVtb3ZlVGFnRnJvbVNlbGVjdGlvbihlLHQpe2xldCBhPXdpbmRvdy5nZXRTZWxlY3Rpb24oKTtpZighYSlyZXR1cm47bGV0IHI9ZS5jbG9uZVJhbmdlKCksbj1lLnN0YXJ0Q29udGFpbmVyLG89bnVsbDtmb3IoO24mJm4hPT1lLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyLm93bmVyRG9jdW1lbnQ7KXtpZihuLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJm4udGFnTmFtZS50b0xvd2VyQ2FzZSgpPT09dCl7bz1uO2JyZWFrfW49bi5wYXJlbnROb2RlfWxldCBsPWUuZW5kQ29udGFpbmVyLHA9bnVsbDtmb3IoO2wmJmwhPT1lLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyLm93bmVyRG9jdW1lbnQ7KXtpZihsLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJmwudGFnTmFtZS50b0xvd2VyQ2FzZSgpPT09dCl7cD1sO2JyZWFrfWw9bC5wYXJlbnROb2RlfW8mJnIuc2V0U3RhcnRCZWZvcmUobykscCYmci5zZXRFbmRBZnRlcihwKTtsZXQgZD1yLmV4dHJhY3RDb250ZW50cygpLHU9dGhpcy5yZW1vdmVUYWdzRnJvbUZyYWdtZW50KGQsdCk7ci5pbnNlcnROb2RlKHUpO2xldCBjPVtdLGI9ZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcih1LE5vZGVGaWx0ZXIuU0hPV19URVhULG51bGwpLHY7Zm9yKDt2PWIubmV4dE5vZGUoKTspYy5wdXNoKHYpO2lmKGMubGVuZ3RoPjApe2xldCB4PWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7eC5zZXRTdGFydChjWzBdLDApLHguc2V0RW5kKGNbYy5sZW5ndGgtMV0sY1tjLmxlbmd0aC0xXS50ZXh0Q29udGVudD8ubGVuZ3RofHwwKSxhLnJlbW92ZUFsbFJhbmdlcygpLGEuYWRkUmFuZ2UoeCl9fXN0YXRpYyByZW1vdmVUYWdzRnJvbUZyYWdtZW50KGUsdCl7bGV0IGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7YS5hcHBlbmRDaGlsZChlKTtsZXQgcj1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKHQpO0FycmF5LmZyb20ocikuZm9yRWFjaChsPT57bGV0IHA9bC5wYXJlbnROb2RlO2lmKHApe2Zvcig7bC5maXJzdENoaWxkOylwLmluc2VydEJlZm9yZShsLmZpcnN0Q2hpbGQsbCk7cC5yZW1vdmVDaGlsZChsKX19KTtsZXQgbz1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Zm9yKDthLmZpcnN0Q2hpbGQ7KW8uYXBwZW5kQ2hpbGQoYS5maXJzdENoaWxkKTtyZXR1cm4gb31zdGF0aWMgd3JhcFNlbGVjdGlvbldpdGhMaW5rKGUsdCl7bGV0IGE9d2luZG93LmdldFNlbGVjdGlvbigpO2lmKCFhKXJldHVybjt0aGlzLnNlbGVjdGlvbkNvbnRhaW5zVGFnKGUsImEiKSYmKHRoaXMucmVtb3ZlVGFnRnJvbVNlbGVjdGlvbihlLCJhIiksYS5yYW5nZUNvdW50PjAmJihlPWEuZ2V0UmFuZ2VBdCgwKSkpO2xldCByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtyLmhyZWY9dCxyLnRhcmdldD0iX2JsYW5rIixyLnJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciI7dHJ5e2xldCBuPWUuZXh0cmFjdENvbnRlbnRzKCk7ci5hcHBlbmRDaGlsZChuKSxlLmluc2VydE5vZGUociksZS5zZWxlY3ROb2RlQ29udGVudHMociksYS5yZW1vdmVBbGxSYW5nZXMoKSxhLmFkZFJhbmdlKGUpfWNhdGNoKG4pe2NvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBjcmVhdGUgbGluazoiLG4pfX1zdGF0aWMgZ2V0U2VsZWN0aW9uQ29vcmRpbmF0ZXMoLi4uZSl7bGV0IHQ9U3QuZ2V0U2VsZWN0aW9uSW5mbyguLi5lKTtpZihjb25zb2xlLmxvZygiZ2V0U2VsZWN0aW9uQ29vcmRpbmF0ZXMgLSBzZWxlY3Rpb25JbmZvOiIsdCksIXQpcmV0dXJuIGNvbnNvbGUubG9nKCJObyBzZWxlY3Rpb24gaW5mbyBhdmFpbGFibGUiKSxudWxsO2xldCByPVN0LmNyZWF0ZVJhbmdlRnJvbUluZm8odCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoY29uc29sZS5sb2coIlJhbmdlIHJlY3Q6IixyKSxyLndpZHRoPT09MCYmci5oZWlnaHQ9PT0wKXtpZihjb25zb2xlLmxvZygiUmVjdCB3aWR0aCBhbmQgaGVpZ2h0IGFyZSAwLCB0cnlpbmcgZGlmZmVyZW50IGFwcHJvYWNoIiksImNhcmV0UG9zaXRpb25Gcm9tUG9pbnQiaW4gZG9jdW1lbnQpe2xldCBvPXdpbmRvdy5nZXRTZWxlY3Rpb24oKTtpZihvJiZvLnJhbmdlQ291bnQ+MCl7bGV0IGw9by5nZXRSYW5nZUF0KDApLHA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO3AudGV4dENvbnRlbnQ9Ilx1MjAwQiIsbC5pbnNlcnROb2RlKHApO2xldCBkPXAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYocC5yZW1vdmUoKSxkLndpZHRoPjB8fGQuaGVpZ2h0PjApe2xldCB1PXt4OmQubGVmdCx5Ok1hdGgubWF4KDQ1LGQudG9wLTQ1KX07cmV0dXJuIGNvbnNvbGUubG9nKCJVc2VkIHNwYW4gdHJpY2sgZm9yIGNvb3JkczoiLHUpLHV9fX1yZXR1cm4gbnVsbH1sZXQgbj17eDpyLmxlZnQrci53aWR0aC8yLHk6TWF0aC5tYXgoNDUsci50b3AtNDUpfTtyZXR1cm4gY29uc29sZS5sb2coIlJldHVybmluZyBjb29yZHM6IixuKSxufX19KTt2YXIgSW5lLEg4LEFuZSxvdHQ9ZygoKT0+e3BlKCk7em4oKTtydHQoKTtwdCgpO0luZT1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sSDg9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LEFuZT0oKCk9PntsZXQgcz1bbmUoImRlZXMtZm9ybWF0dGluZy1tZW51IildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W107dmFyIHg9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNGb3JtYXR0aW5nTWVudSIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBtPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W1koKV0scD1bWSgpXSxjPVtZKCldLEluZSh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InZpc2libGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+InZpc2libGUiaW4gZiwiaGFzIiksZ2V0OmkoZj0+Zi52aXNpYmxlLCJnZXQiKSxzZXQ6aSgoZix5KT0+e2YudmlzaWJsZT15fSwic2V0Iil9LG1ldGFkYXRhOm19LG8sbCksSW5lKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicG9zaXRpb24iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+InBvc2l0aW9uImluIGYsImhhcyIpLGdldDppKGY9PmYucG9zaXRpb24sImdldCIpLHNldDppKChmLHkpPT57Zi5wb3NpdGlvbj15fSwic2V0Iil9LG1ldGFkYXRhOm19LGQsdSksSW5lKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWVudVpJbmRleCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShmPT4ibWVudVpJbmRleCJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLm1lbnVaSW5kZXgsImdldCIpLHNldDppKChmLHkpPT57Zi5tZW51WkluZGV4PXl9LCJzZXQiKX0sbWV0YWRhdGE6bX0sYix2KSxJbmUobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6bX0sbnVsbCx0KSx4PWE9ZS52YWx1ZSxtJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm19KX1zdGF0aWMgaW5zdGFuY2U7c3RhdGljIGdldEluc3RhbmNlKCl7cmV0dXJuIHguaW5zdGFuY2V8fCh4Lmluc3RhbmNlPW5ldyB4LGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoeC5pbnN0YW5jZSkpLHguaW5zdGFuY2V9I2U9SDgodGhpcyxvLCExKTtnZXQgdmlzaWJsZSgpe3JldHVybiB0aGlzLiNlfXNldCB2aXNpYmxlKG0pe3RoaXMuI2U9bX0jdD0oSDgodGhpcyxsKSxIOCh0aGlzLGQse3g6MCx5OjB9KSk7Z2V0IHBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuI3R9c2V0IHBvc2l0aW9uKG0pe3RoaXMuI3Q9bX0jYT0oSDgodGhpcyx1KSxIOCh0aGlzLGIsMWUzKSk7Z2V0IG1lbnVaSW5kZXgoKXtyZXR1cm4gdGhpcy4jYX1zZXQgbWVudVpJbmRleChtKXt0aGlzLiNhPW19Y2FsbGJhY2s9KEg4KHRoaXMsdiksbnVsbCk7c3RhdGljIHN0eWxlcz1bSGUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICAgIDpob3N0IHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgd2lkdGg6IDA7CiAgICAgICAgaGVpZ2h0OiAwOwogICAgICB9CgogICAgICAuZm9ybWF0dGluZy1tZW51IHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMjYyNjI2Iil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTBlMGUwIiwiIzQwNDA0MCIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgYm94LXNoYWRvdzogMCAycHggMTZweCByZ2JhKDAsIDAsIDAsIDAuMTUpOwogICAgICAgIHBhZGRpbmc6IDRweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGdhcDogMnB4OwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICAgIGFuaW1hdGlvbjogZmFkZUluU2NhbGUgMC4xNXMgZWFzZS1vdXQ7CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMgZmFkZUluU2NhbGUgewogICAgICAgIGZyb20gewogICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45NSkgdHJhbnNsYXRlWSg1cHgpOwogICAgICAgIH0KICAgICAgICB0byB7CiAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKSB0cmFuc2xhdGVZKDApOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLmZvcm1hdC1idXR0b24gewogICAgICAgIHdpZHRoOiAzMnB4OwogICAgICAgIGhlaWdodDogMzJweDsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDAwMDAwIiwiI2UwZTBlMCIpfTsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIC5mb3JtYXQtYnV0dG9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2YwZjBmMCIsIiMzMzMzMzMiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDA2NmNjIiwiIzRkOTRmZiIpfTsKICAgICAgfQoKICAgICAgLmZvcm1hdC1idXR0b246YWN0aXZlIHsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTUpOwogICAgICB9CgogICAgICAuZm9ybWF0LWJ1dHRvbi5ib2xkIHsKICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICB9CgogICAgICAuZm9ybWF0LWJ1dHRvbi5pdGFsaWMgewogICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgICAgfQoKICAgICAgLmZvcm1hdC1idXR0b24udW5kZXJsaW5lIHsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgICAgfQoKICAgICAgLmZvcm1hdC1idXR0b24gLmNvZGUtaWNvbiB7CiAgICAgICAgZm9udC1mYW1pbHk6ICdTRiBNb25vJywgJ01vbmFjbycsICdJbmNvbnNvbGF0YScsICdGaXJhIENvZGUnLCBtb25vc3BhY2U7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gdGhpcy52aXNpYmxlPyh0aGlzLnN0eWxlLnpJbmRleD10aGlzLm1lbnVaSW5kZXgudG9TdHJpbmcoKSx3YAogICAgICA8ZGl2IAogICAgICAgIGNsYXNzPSJmb3JtYXR0aW5nLW1lbnUiIAogICAgICAgIHN0eWxlPSJsZWZ0OiAke3RoaXMucG9zaXRpb24ueH1weDsgdG9wOiAke3RoaXMucG9zaXRpb24ueX1weDsiCiAgICAgICAgdGFiaW5kZXg9Ii0xIgogICAgICAgIGRhdGEtbWVudS10eXBlPSJmb3JtYXR0aW5nIgogICAgICA+CiAgICAgICAgJHtzdS5mb3JtYXRCdXR0b25zLm1hcChtPT53YAogICAgICAgICAgPGJ1dHRvbiAKICAgICAgICAgICAgY2xhc3M9ImZvcm1hdC1idXR0b24gJHttLmNvbW1hbmR9IgogICAgICAgICAgICBkYXRhLWNvbW1hbmQ9IiR7bS5jb21tYW5kfSIKICAgICAgICAgICAgdGl0bGU9IiR7bS5sYWJlbH0ke20uc2hvcnRjdXQ/YCAoJHttLnNob3J0Y3V0fSlgOiIifSIKICAgICAgICAgID4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9IiR7bS5jb21tYW5kPT09ImNvZGUiPyJjb2RlLWljb24iOiIifSI+JHttLmljb259PC9zcGFuPgogICAgICAgICAgPC9idXR0b24+CiAgICAgICAgYCl9CiAgICAgIDwvZGl2PgogICAgYCk6d2BgfWFwcGx5Rm9ybWF0KG0pe3RoaXMuY2FsbGJhY2smJnRoaXMuY2FsbGJhY2sobSksbT09PSJsaW5rIiYmdGhpcy5oaWRlKCl9c2hvdyhtLGYpe2NvbnNvbGUubG9nKCJGb3JtYXR0aW5nTWVudS5zaG93IGNhbGxlZDoiLHtwb3NpdGlvbjptLHZpc2libGU6dGhpcy52aXNpYmxlfSksdGhpcy5wb3NpdGlvbj1tLHRoaXMuY2FsbGJhY2s9Zix0aGlzLm1lbnVaSW5kZXg9eGEuZ2V0TmV4dFpJbmRleCgpLHhhLnJlZ2lzdGVyKHRoaXMsdGhpcy5tZW51WkluZGV4KSx0aGlzLnN0eWxlLnpJbmRleD10aGlzLm1lbnVaSW5kZXgudG9TdHJpbmcoKSx0aGlzLnZpc2libGU9ITB9aGlkZSgpe3RoaXMudmlzaWJsZT0hMSx0aGlzLmNhbGxiYWNrPW51bGwseGEudW5yZWdpc3Rlcih0aGlzKX11cGRhdGVQb3NpdGlvbihtKXt0aGlzLnBvc2l0aW9uPW19Zmlyc3RVcGRhdGVkKCl7dGhpcy5zaGFkb3dSb290LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsbT0+e2xldCBmPW0seT10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5mb3JtYXR0aW5nLW1lbnUiKTt5JiZ5LmNvbnRhaW5zKGYudGFyZ2V0KSYmKGYucHJldmVudERlZmF1bHQoKSxmLnN0b3BQcm9wYWdhdGlvbigpKX0pLHRoaXMuc2hhZG93Um9vdC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsbT0+e2xldCBmPW0sTT1mLnRhcmdldC5jbG9zZXN0KCIuZm9ybWF0LWJ1dHRvbiIpO2lmKE0pe2YucHJldmVudERlZmF1bHQoKSxmLnN0b3BQcm9wYWdhdGlvbigpO2xldCB6PU0uZ2V0QXR0cmlidXRlKCJkYXRhLWNvbW1hbmQiKTt6JiZ0aGlzLmFwcGx5Rm9ybWF0KHopfX0pLHRoaXMuc2hhZG93Um9vdC5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsbT0+e2xldCBmPW0seT10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5mb3JtYXR0aW5nLW1lbnUiKTt5JiZ5LmNvbnRhaW5zKGYudGFyZ2V0KSYmKGYucHJldmVudERlZmF1bHQoKSxmLnN0b3BQcm9wYWdhdGlvbigpKX0sITApfXN0YXRpY3tIOChhLHQpfX07cmV0dXJuIHg9YX0pKCl9KTt2YXIgZ3Y9ZygoKT0+e3BlKCk7TWwoKTtpdHQoKTtvdHQoKX0pO3ZhciBMWixObmU9ZygoKT0+e0xaPVsiSmF2YVNjcmlwdCIsIlR5cGVTY3JpcHQiLCJQeXRob24iLCJKYXZhIiwiQysrIiwiQyMiLCJHbyIsIlJ1c3QiLCJIVE1MIiwiQ1NTIiwiU1FMIiwiU2hlbGwiLCJKU09OIiwiWUFNTCIsIk1hcmtkb3duIiwiUGxhaW4gVGV4dCJdfSk7dmFyIG50dCxSMGE9ZygoKT0+e3BlKCk7bnR0PUpgCiAgOmhvc3QgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgfQoKICAud3lzaXd5Zy1jb250YWluZXIgewogICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDkwOTBiIil9OwogICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMjcyNzJhIil9OwogICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgbWluLWhlaWdodDogMjAwcHg7CiAgICBwYWRkaW5nOiAyNHB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTsKICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07CiAgfQoKICAud3lzaXd5Zy1jb250YWluZXI6aG92ZXIgewogICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiI2QxZDVkYiIsIiMzZjNmNDYiKX07CiAgfQoKICAud3lzaXd5Zy1jb250YWluZXI6Zm9jdXMtd2l0aGluIHsKICAgIG91dGxpbmU6IDJweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7CiAgICBib3gtc2hhZG93OiAwIDAgMCAycHggJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMTgxODFiIil9LCAwIDAgMCA0cHggJHtoLmJkVGhlbWUoInJnYmEoNTksIDEzMCwgMjQ2LCAwLjUpIiwicmdiYSg1OSwgMTMwLCAyNDYsIDAuNSkiKX07CiAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzNiODJmNiIpfTsKICB9CgogIC8qIFZpc3VhbCBoaW50IGZvciB0ZXh0IHNlbGVjdGlvbiAqLwogIC5lZGl0b3ItY29udGVudDpob3ZlciB7CiAgICBjdXJzb3I6IHRleHQ7CiAgfQoKICAuZWRpdG9yLWNvbnRlbnQgewogICAgb3V0bGluZTogbm9uZTsKICAgIG1pbi1oZWlnaHQ6IDE2MHB4OwogICAgbWFyZ2luOiAwIC04cHg7CiAgICBwYWRkaW5nOiAwIDhweDsKICB9CgogIC5ibG9jayB7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiA0cHggMDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgbWluLWhlaWdodDogMS42ZW07CiAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTA5MGIiLCIjZmFmYWZhIil9OwogIH0KCiAgLyogRmlyc3QgYW5kIGxhc3QgYmxvY2tzIGRvbid0IG5lZWQgZXh0cmEgc3BhY2luZyAqLwogIC5ibG9jay13cmFwcGVyOmZpcnN0LWNoaWxkIC5ibG9jayB7CiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgfQoKICAuYmxvY2std3JhcHBlcjpsYXN0LWNoaWxkIC5ibG9jayB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogIH0KCiAgLmJsb2NrLnNlbGVjdGVkIHsKICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC4wNSkiLCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC4wNSkiKX07CiAgICBvdXRsaW5lOiAycHggc29saWQgJHtoLmJkVGhlbWUoInJnYmEoNTksIDEzMCwgMjQ2LCAwLjIpIiwicmdiYSg1OSwgMTMwLCAyNDYsIDAuMikiKX07CiAgICBvdXRsaW5lLW9mZnNldDogLTJweDsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIG1hcmdpbi1sZWZ0OiAtOHB4OwogICAgbWFyZ2luLXJpZ2h0OiAtOHB4OwogICAgcGFkZGluZy1sZWZ0OiA4cHg7CiAgICBwYWRkaW5nLXJpZ2h0OiA4cHg7CiAgfQoKICAuYmxvY2tbY29udGVudGVkaXRhYmxlXSB7CiAgICBvdXRsaW5lOiBub25lOwogIH0KCiAgLmJsb2NrLnBhcmFncmFwaCB7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBsaW5lLWhlaWdodDogMS42OwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICB9CgogIC5ibG9jay5wYXJhZ3JhcGg6ZW1wdHk6OmJlZm9yZSB7CiAgICBjb250ZW50OiAiVHlwZSAnLycgZm9yIGNvbW1hbmRzLi4uIjsKICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiM3MTcxN2EiKX07CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICBmb250LXdlaWdodDogNDAwOwogIH0KCiAgLmJsb2NrLmhlYWRpbmctMSB7CiAgICBmb250LXNpemU6IDMycHg7CiAgICBmb250LXdlaWdodDogNzAwOwogICAgbGluZS1oZWlnaHQ6IDEuMjsKICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07CiAgfQoKICAuYmxvY2suaGVhZGluZy0xOmVtcHR5OjpiZWZvcmUgewogICAgY29udGVudDogIkhlYWRpbmcgMSI7CiAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjNzE3MTdhIil9OwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICBmb250LXNpemU6IDMycHg7CiAgICBsaW5lLWhlaWdodDogMS4yOwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICB9CgogIC5ibG9jay5oZWFkaW5nLTIgewogICAgZm9udC1zaXplOiAyNHB4OwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGxpbmUtaGVpZ2h0OiAxLjM7CiAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTA5MGIiLCIjZmFmYWZhIil9OwogIH0KCiAgLmJsb2NrLmhlYWRpbmctMjplbXB0eTo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJIZWFkaW5nIDIiOwogICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiIzcxNzE3YSIpfTsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgZm9udC1zaXplOiAyNHB4OwogICAgbGluZS1oZWlnaHQ6IDEuMzsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgfQoKICAuYmxvY2suaGVhZGluZy0zIHsKICAgIGZvbnQtc2l6ZTogMjBweDsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBsaW5lLWhlaWdodDogMS40OwogICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICB9CgogIC5ibG9jay5oZWFkaW5nLTM6ZW1wdHk6OmJlZm9yZSB7CiAgICBjb250ZW50OiAiSGVhZGluZyAzIjsKICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiM3MTcxN2EiKX07CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIGZvbnQtc2l6ZTogMjBweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjQ7CiAgICBmb250LXdlaWdodDogNjAwOwogIH0KCiAgLmJsb2NrLnF1b3RlIHsKICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMjcyNzJhIil9OwogICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgbGluZS1oZWlnaHQ6IDEuNjsKICB9CgogIC5ibG9jay5xdW90ZTplbXB0eTo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJRdW90ZSI7CiAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjNzE3MTdhIil9OwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBsaW5lLWhlaWdodDogMS42OwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICB9CgogIC5jb2RlLWJsb2NrLWNvbnRhaW5lciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBtYXJnaW46IDIwcHggMDsKICB9CgogIC5jb2RlLWxhbmd1YWdlIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIHJpZ2h0OiAwOwogICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMjcyNzJhIil9OwogICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgIHBhZGRpbmc6IDRweCAxMnB4OwogICAgZm9udC1zaXplOiAxMnB4OwogICAgYm9yZGVyLXJhZGl1czogMCA0cHggMCA0cHg7CiAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIHNhbnMtc2VyaWY7CiAgICB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlOwogICAgei1pbmRleDogMTsKICB9CgogIC5ibG9jay5jb2RlIHsKICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzE4MTgxYiIpfTsKICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzI3MjcyYSIpfTsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIHBhZGRpbmc6IDE2cHg7CiAgICBwYWRkaW5nLXRvcDogMzJweDsgLyogTWFrZSByb29tIGZvciBsYW5ndWFnZSBpbmRpY2F0b3IgKi8KICAgIGZvbnQtZmFtaWx5OiAnU0YgTW9ubycsICdNb25hY28nLCAnSW5jb25zb2xhdGEnLCAnRmlyYSBDb2RlJywgbW9ub3NwYWNlOwogICAgZm9udC1zaXplOiAxNHB4OwogICAgbGluZS1oZWlnaHQ6IDEuNTsKICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07CiAgICBvdmVyZmxvdy14OiBhdXRvOwogIH0KCiAgLmJsb2NrLmNvZGU6ZW1wdHk6OmJlZm9yZSB7CiAgICBjb250ZW50OiAiLy8gQ29kZSBibG9jayI7CiAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjNzE3MTdhIil9OwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICBmb250LWZhbWlseTogJ1NGIE1vbm8nLCAnTW9uYWNvJywgJ0luY29uc29sYXRhJywgJ0ZpcmEgQ29kZScsIG1vbm9zcGFjZTsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICBmb250LXdlaWdodDogNDAwOwogIH0KCiAgLmJsb2NrLmxpc3QgewogICAgcGFkZGluZy1sZWZ0OiAwOwogIH0KCiAgLmJsb2NrLmxpc3QgdWwsCiAgLmJsb2NrLmxpc3Qgb2wgewogICAgbWFyZ2luOiAwOwogICAgcGFkZGluZzogMCAwIDAgMjRweDsKICAgIGxpc3Qtc3R5bGUtcG9zaXRpb246IG91dHNpZGU7CiAgfQoKICAuYmxvY2subGlzdCB1bCB7CiAgICBsaXN0LXN0eWxlOiBkaXNjOwogIH0KCiAgLmJsb2NrLmxpc3Qgb2wgewogICAgbGlzdC1zdHlsZTogZGVjaW1hbDsKICB9CgogIC5ibG9jay5saXN0IGxpIHsKICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgfQoKICAuYmxvY2subGlzdCBsaTpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgfQoKICAuYmxvY2suZGl2aWRlciB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBwYWRkaW5nOiAyMHB4IDA7CiAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICB9CgogIC5ibG9jay5kaXZpZGVyIGhyIHsKICAgIGJvcmRlcjogbm9uZTsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMyNzI3MmEiKX07CiAgICBtYXJnaW46IDA7CiAgfQoKICAuc2xhc2gtbWVudSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMwOTA5MGIiKX07CiAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMyNzI3MmEiKX07CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA2KTsKICAgIHBhZGRpbmc6IDRweDsKICAgIHotaW5kZXg6IDEwMDA7CiAgICBtaW4td2lkdGg6IDIyMHB4OwogICAgbWF4LWhlaWdodDogMzAwcHg7CiAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgcG9pbnRlci1ldmVudHM6IGF1dG87CiAgICB1c2VyLXNlbGVjdDogbm9uZTsKICB9CgogIC5zbGFzaC1tZW51LWl0ZW0gewogICAgcGFkZGluZzogOHB4IDEwcHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiAxMnB4OwogICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICAgIGZvbnQtc2l6ZTogMTRweDsKICB9CgogIC5zbGFzaC1tZW51LWl0ZW06aG92ZXIsCiAgLnNsYXNoLW1lbnUtaXRlbS5zZWxlY3RlZCB7CiAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMyNzI3MmEiKX07CiAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTA5MGIiLCIjZmFmYWZhIil9OwogIH0KCiAgLnNsYXNoLW1lbnUtaXRlbSAuaWNvbiB7CiAgICB3aWR0aDogMjRweDsKICAgIGhlaWdodDogMjRweDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICB9CgogIC5zbGFzaC1tZW51LWl0ZW06aG92ZXIgLmljb24sCiAgLnNsYXNoLW1lbnUtaXRlbS5zZWxlY3RlZCAuaWNvbiB7CiAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzYjgyZjYiLCIjM2I4MmY2Iil9OwogIH0KCiAgLnRvb2xiYXIgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAtNDBweDsKICAgIGxlZnQ6IDA7CiAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMwOTA5MGIiKX07CiAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMyNzI3MmEiKX07CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA2KTsKICAgIHBhZGRpbmc6IDRweDsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICBnYXA6IDRweDsKICAgIHotaW5kZXg6IDEwMDA7CiAgfQoKICAudG9vbGJhci52aXNpYmxlIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgfQoKICAudG9vbGJhci1idXR0b24gewogICAgd2lkdGg6IDMycHg7CiAgICBoZWlnaHQ6IDMycHg7CiAgICBib3JkZXI6IG5vbmU7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07CiAgfQoKICAudG9vbGJhci1idXR0b246aG92ZXIgewogICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMjcyNzJhIil9OwogICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzNiODJmNiIpfTsKICB9CgogIC8qIERyYWcgYW5kIERyb3AgU3R5bGVzICovCiAgLmJsb2NrLXdyYXBwZXIgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZSwgb3BhY2l0eSAwLjJzIGVhc2U7CiAgfQoKICAvKiBFbnN1cmUgcHJvcGVyIHNwYWNpbmcgY29udGV4dCBmb3IgYmxvY2tzICovCiAgLmJsb2NrLXdyYXBwZXIgKyAuYmxvY2std3JhcHBlciAuYmxvY2sgewogICAgbWFyZ2luLXRvcDogMTZweDsKICB9CgogIC8qIE92ZXJyaWRlIGZvciBoZWFkaW5ncyBmb2xsb3dpbmcgb3RoZXIgYmxvY2tzICovCiAgLmJsb2NrLXdyYXBwZXIgKyAuYmxvY2std3JhcHBlciAuYmxvY2suaGVhZGluZy0xLAogIC5ibG9jay13cmFwcGVyICsgLmJsb2NrLXdyYXBwZXIgLmJsb2NrLmhlYWRpbmctMiwKICAuYmxvY2std3JhcHBlciArIC5ibG9jay13cmFwcGVyIC5ibG9jay5oZWFkaW5nLTMgewogICAgbWFyZ2luLXRvcDogMjRweDsKICB9CgogIC8qIENvZGUgYW5kIHF1b3RlIGJsb2NrcyBuZWVkIGNvbnNpc3RlbnQgc3BhY2luZyAqLwogIC5ibG9jay13cmFwcGVyICsgLmJsb2NrLXdyYXBwZXIgLmJsb2NrLmNvZGUsCiAgLmJsb2NrLXdyYXBwZXIgKyAuYmxvY2std3JhcHBlciAuYmxvY2sucXVvdGUgewogICAgbWFyZ2luLXRvcDogMjBweDsKICB9CgogIC5kcmFnLWhhbmRsZSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBsZWZ0OiAtMjhweDsKICAgIHRvcDogNTAlOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgd2lkdGg6IDI0cHg7CiAgICBoZWlnaHQ6IDI0cHg7CiAgICBjdXJzb3I6IGdyYWI7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2U7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiIzcxNzE3YSIpfTsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICB9CgogIC5kcmFnLWhhbmRsZTo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICLii67ii64iOwogICAgZm9udC1zaXplOiAxMnB4OwogICAgbGV0dGVyLXNwYWNpbmc6IC0ycHg7CiAgfQoKICAuYmxvY2std3JhcHBlcjpob3ZlciAuZHJhZy1oYW5kbGUgewogICAgb3BhY2l0eTogMTsKICB9CgogIC5kcmFnLWhhbmRsZTpob3ZlciB7CiAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMjcyNzJhIil9OwogIH0KCiAgLmRyYWctaGFuZGxlOmFjdGl2ZSB7CiAgICBjdXJzb3I6IGdyYWJiaW5nOwogICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjM2YzZjQ2Iil9OwogIH0KCiAgLmJsb2NrLXdyYXBwZXIuZHJhZ2dpbmcgewogICAgb3BhY2l0eTogMC44OwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB6LWluZGV4OiAyMDAxOwogICAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50OwogIH0KCgogIC8qIEJsb2NrcyB0aGF0IHNob3VsZCBtb3ZlIG91dCBvZiB0aGUgd2F5ICovCiAgLmJsb2NrLXdyYXBwZXIubW92ZS1kb3duIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSh2YXIoLS1kcmFnLW9mZnNldCwgMHB4KSk7CiAgfQoKICAuYmxvY2std3JhcHBlci5tb3ZlLXVwIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWShjYWxjKC0xICogdmFyKC0tZHJhZy1vZmZzZXQsIDBweCkpKTsKICB9CgogIC8qIERyb3AgaW5kaWNhdG9yICovCiAgLmRyb3AtaW5kaWNhdG9yIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGxlZnQ6IDA7CiAgICByaWdodDogMDsKICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC4wNSkiLCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC4wNSkiKX07CiAgICBib3JkZXI6IDJweCBkYXNoZWQgJHtoLmJkVGhlbWUoIiMzYjgyZjYiLCIjM2I4MmY2Iil9OwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgdHJhbnNpdGlvbjogdG9wIDAuMnMgZWFzZSwgaGVpZ2h0IDAuMnMgZWFzZTsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgei1pbmRleDogMTk5OTsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgfQoKICAvKiBSZW1vdmUgb2xkIGRyYWctb3ZlciBzdHlsZXMgKi8KICAuYmxvY2std3JhcHBlci5kcmFnLW92ZXItYmVmb3JlLAogIC5ibG9jay13cmFwcGVyLmRyYWctb3Zlci1hZnRlciB7CiAgICAvKiBObyBsb25nZXIgbmVlZGVkLCB1c2luZyBkcm9wIGluZGljYXRvciBpbnN0ZWFkICovCiAgfQoKICAuZWRpdG9yLWNvbnRlbnQuZHJhZ2dpbmcgKiB7CiAgICB1c2VyLXNlbGVjdDogbm9uZTsKICB9CgogIC8qIEJsb2NrIFNldHRpbmdzIEJ1dHRvbiAtIFJlbW92ZWQgaW4gZmF2b3Igb2YgY29udGV4dCBtZW51ICovCgogIC8qIFRleHQgU2VsZWN0aW9uIFN0eWxlcyAqLwogIC5ibG9jayA6OnNlbGVjdGlvbiB7CiAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSg1OSwgMTMwLCAyNDYsIDAuMikiLCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC4yKSIpfTsKICAgIGNvbG9yOiBpbmhlcml0OwogIH0KCiAgLyogRm9ybWF0dGluZyBNZW51ICovCiAgLmZvcm1hdHRpbmctbWVudSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMwOTA5MGIiKX07CiAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMyNzI3MmEiKX07CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA2KTsKICAgIHBhZGRpbmc6IDRweDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBnYXA6IDJweDsKICAgIHotaW5kZXg6IDEwMDE7CiAgICBhbmltYXRpb246IGZhZGVJblNjYWxlIDAuMTVzIGVhc2Utb3V0OwogIH0KCiAgQGtleWZyYW1lcyBmYWRlSW5TY2FsZSB7CiAgICBmcm9tIHsKICAgICAgb3BhY2l0eTogMDsKICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk4KSB0cmFuc2xhdGVZKDJweCk7CiAgICB9CiAgICB0byB7CiAgICAgIG9wYWNpdHk6IDE7CiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSkgdHJhbnNsYXRlWSgwKTsKICAgIH0KICB9CgogIC5mb3JtYXQtYnV0dG9uIHsKICAgIHdpZHRoOiAzMnB4OwogICAgaGVpZ2h0OiAzMnB4OwogICAgYm9yZGVyOiBub25lOwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTA5MGIiLCIjZmFmYWZhIil9OwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB9CgogIC5mb3JtYXQtYnV0dG9uOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzI3MjcyYSIpfTsKICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzNiODJmNiIsIiMzYjgyZjYiKX07CiAgfQoKICAuZm9ybWF0LWJ1dHRvbjphY3RpdmUgewogICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk1KTsKICB9CgogIC5mb3JtYXQtYnV0dG9uLmJvbGQgewogICAgZm9udC13ZWlnaHQ6IDcwMDsKICB9CgogIC5mb3JtYXQtYnV0dG9uLml0YWxpYyB7CiAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgfQoKICAuZm9ybWF0LWJ1dHRvbi51bmRlcmxpbmUgewogICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgfQoKICAuZm9ybWF0LWJ1dHRvbiAuY29kZS1pY29uIHsKICAgIGZvbnQtZmFtaWx5OiAnU0YgTW9ubycsICdNb25hY28nLCAnSW5jb25zb2xhdGEnLCAnRmlyYSBDb2RlJywgbW9ub3NwYWNlOwogICAgZm9udC1zaXplOiAxMnB4OwogIH0KCiAgLyogQXBwbGllZCBmb3JtYXQgc3R5bGVzIGluIGNvbnRlbnQgKi8KICAuYmxvY2sgc3Ryb25nLAogIC5ibG9jayBiIHsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTA5MGIiLCIjZmFmYWZhIil9OwogIH0KCiAgLmJsb2NrIGVtLAogIC5ibG9jayBpIHsKICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICB9CgogIC5ibG9jayB1IHsKICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogIH0KCiAgLmJsb2NrIHN0cmlrZSwKICAuYmxvY2sgcyB7CiAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsKICAgIG9wYWNpdHk6IDAuNzsKICB9CgogIC5ibG9jayBjb2RlIHsKICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzI3MjcyYSIpfTsKICAgIHBhZGRpbmc6IDJweCA2cHg7CiAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICBmb250LWZhbWlseTogJ1NGIE1vbm8nLCAnTW9uYWNvJywgJ0luY29uc29sYXRhJywgJ0ZpcmEgQ29kZScsIG1vbm9zcGFjZTsKICAgIGZvbnQtc2l6ZTogMC45ZW07CiAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTA5MGIiLCIjZmFmYWZhIil9OwogIH0KCiAgLmJsb2NrIGEgewogICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzNiODJmNiIpfTsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cyBlYXNlOwogIH0KCiAgLmJsb2NrIGE6aG92ZXIgewogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJHtoLmJkVGhlbWUoIiMzYjgyZjYiLCIjM2I4MmY2Iil9OwogIH0KYH0pO3ZhciBSYyxsdHQ9ZygoKT0+e01sKCk7UmM9Y2xhc3N7c3RhdGlje2kodGhpcywiV3lzaXd5Z0NvbnZlcnRlcnMiKX1zdGF0aWMgZXNjYXBlSHRtbChlKXtsZXQgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdC50ZXh0Q29udGVudD1lLHQuaW5uZXJIVE1MfXN0YXRpYyBmb3JtYXRGaWxlU2l6ZShlKXtpZihlPT09MClyZXR1cm4iMCBCeXRlcyI7bGV0IHQ9MTAyNCxhPVsiQnl0ZXMiLCJLQiIsIk1CIiwiR0IiXSxyPU1hdGguZmxvb3IoTWF0aC5sb2coZSkvTWF0aC5sb2codCkpO3JldHVybiBwYXJzZUZsb2F0KChlL01hdGgucG93KHQscikpLnRvRml4ZWQoMikpKyIgIithW3JdfXN0YXRpYyBnZXRIdG1sT3V0cHV0KGUpe3JldHVybiBlLm1hcCh0PT57bGV0IGE9dC5jb250ZW50LmluY2x1ZGVzKCI8IikmJnQuY29udGVudC5pbmNsdWRlcygiPiIpP3QuY29udGVudDp0aGlzLmVzY2FwZUh0bWwodC5jb250ZW50KTtzd2l0Y2godC50eXBlKXtjYXNlInBhcmFncmFwaCI6cmV0dXJuIHQuY29udGVudD9gPHA+JHthfTwvcD5gOiIiO2Nhc2UiaGVhZGluZy0xIjpyZXR1cm5gPGgxPiR7YX08L2gxPmA7Y2FzZSJoZWFkaW5nLTIiOnJldHVybmA8aDI+JHthfTwvaDI+YDtjYXNlImhlYWRpbmctMyI6cmV0dXJuYDxoMz4ke2F9PC9oMz5gO2Nhc2UicXVvdGUiOnJldHVybmA8YmxvY2txdW90ZT4ke2F9PC9ibG9ja3F1b3RlPmA7Y2FzZSJjb2RlIjpyZXR1cm5gPHByZT48Y29kZT4ke3RoaXMuZXNjYXBlSHRtbCh0LmNvbnRlbnQpfTwvY29kZT48L3ByZT5gO2Nhc2UibGlzdCI6bGV0IHI9dC5jb250ZW50LnNwbGl0KGAKYCkuZmlsdGVyKHA9PnAudHJpbSgpKTtpZihyLmxlbmd0aD4wKXtsZXQgcD10Lm1ldGFkYXRhPy5saXN0VHlwZT09PSJvcmRlcmVkIj8ib2wiOiJ1bCI7cmV0dXJuYDwke3B9PiR7ci5tYXAoZD0+YDxsaT4ke2R9PC9saT5gKS5qb2luKCIiKX08LyR7cH0+YH1yZXR1cm4iIjtjYXNlImRpdmlkZXIiOnJldHVybiI8aHI+IjtjYXNlImltYWdlIjpsZXQgbj10Lm1ldGFkYXRhPy51cmw7aWYobil7bGV0IHA9dGhpcy5lc2NhcGVIdG1sKHQuY29udGVudHx8IkltYWdlIik7cmV0dXJuYDxpbWcgc3JjPSIke259IiBhbHQ9IiR7cH0iIC8+YH1yZXR1cm4iIjtjYXNlInlvdXR1YmUiOmxldCBvPXQubWV0YWRhdGE/LnZpZGVvSWQ7cmV0dXJuIG8/YDxpZnJhbWUgd2lkdGg9IjU2MCIgaGVpZ2h0PSIzMTUiIHNyYz0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvJHtvfSIgZnJhbWVib3JkZXI9IjAiIGFsbG93PSJhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgY2xpcGJvYXJkLXdyaXRlOyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+YDoiIjtjYXNlIm1hcmtkb3duIjpyZXR1cm5gPGRpdiBjbGFzcz0ibWFya2Rvd24tY29udGVudCI+JHt0aGlzLmVzY2FwZUh0bWwodC5jb250ZW50KX08L2Rpdj5gO2Nhc2UiaHRtbCI6cmV0dXJuIHQuY29udGVudDtjYXNlImF0dGFjaG1lbnQiOmxldCBsPXQubWV0YWRhdGE/LmZpbGVzfHxbXTtyZXR1cm4gbC5sZW5ndGg+MD9gPGRpdiBjbGFzcz0iYXR0YWNobWVudHMiPiR7bC5tYXAocD0+YDxkaXYgY2xhc3M9ImF0dGFjaG1lbnQtaXRlbSIgZGF0YS1maWxlLWlkPSIke3AuaWR9Ij4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiR7cC5kYXRhfSIgZG93bmxvYWQ9IiR7cC5uYW1lfSI+JHt0aGlzLmVzY2FwZUh0bWwocC5uYW1lKX08L2E+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmlsZS1zaXplIj4oJHt0aGlzLmZvcm1hdEZpbGVTaXplKHAuc2l6ZSl9KTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj5gKS5qb2luKCIiKX08L2Rpdj5gOiIiO2RlZmF1bHQ6cmV0dXJuYDxwPiR7YX08L3A+YH19KS5maWx0ZXIodD0+dCE9PSIiKS5qb2luKGAKYCl9c3RhdGljIGdldE1hcmtkb3duT3V0cHV0KGUpe3JldHVybiBlLm1hcCh0PT57c3dpdGNoKHQudHlwZSl7Y2FzZSJwYXJhZ3JhcGgiOnJldHVybiB0LmNvbnRlbnQ7Y2FzZSJoZWFkaW5nLTEiOnJldHVybmAjICR7dC5jb250ZW50fWA7Y2FzZSJoZWFkaW5nLTIiOnJldHVybmAjIyAke3QuY29udGVudH1gO2Nhc2UiaGVhZGluZy0zIjpyZXR1cm5gIyMjICR7dC5jb250ZW50fWA7Y2FzZSJxdW90ZSI6cmV0dXJuYD4gJHt0LmNvbnRlbnR9YDtjYXNlImNvZGUiOnJldHVybmBcYFxgXGAKJHt0LmNvbnRlbnR9ClxgXGBcYGA7Y2FzZSJsaXN0IjpsZXQgYT10LmNvbnRlbnQuc3BsaXQoYApgKS5maWx0ZXIoZD0+ZC50cmltKCkpO3JldHVybiB0Lm1ldGFkYXRhPy5saXN0VHlwZT09PSJvcmRlcmVkIj9hLm1hcCgoZCx1KT0+YCR7dSsxfS4gJHtkfWApLmpvaW4oYApgKTphLm1hcChkPT5gLSAke2R9YCkuam9pbihgCmApO2Nhc2UiZGl2aWRlciI6cmV0dXJuIi0tLSI7Y2FzZSJpbWFnZSI6bGV0IHI9dC5tZXRhZGF0YT8udXJsLG49dC5jb250ZW50fHwiSW1hZ2UiO3JldHVybiByP2AhWyR7bn1dKCR7cn0pYDoiIjtjYXNlInlvdXR1YmUiOmxldCBvPXQubWV0YWRhdGE/LnZpZGVvSWQsbD10Lm1ldGFkYXRhPy51cmx8fChvP2BodHRwczovL3lvdXR1YmUuY29tL3dhdGNoP3Y9JHtvfWA6IiIpO3JldHVybiBsP2BbWW91VHViZSBWaWRlb10oJHtsfSlgOiIiO2Nhc2UibWFya2Rvd24iOnJldHVybiB0LmNvbnRlbnQ7Y2FzZSJodG1sIjpyZXR1cm5gPCEtLSBIVE1MIEJsb2NrCiR7dC5jb250ZW50fQotLT5gO2Nhc2UiYXR0YWNobWVudCI6bGV0IHA9dC5tZXRhZGF0YT8uZmlsZXN8fFtdO3JldHVybiBwLmxlbmd0aD4wP3AubWFwKGQ9PmAtIFske2QubmFtZX1dKCR7ZC5kYXRhfSlgKS5qb2luKGAKYCk6IiI7ZGVmYXVsdDpyZXR1cm4gdC5jb250ZW50fX0pLmZpbHRlcih0PT50IT09IiIpLmpvaW4oYAoKYCl9c3RhdGljIHBhcnNlSHRtbFRvQmxvY2tzKGUpe2xldCBhPW5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoZSwidGV4dC9odG1sIikscj1bXSxuPWkobz0+e2lmKG8ubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERSYmby50ZXh0Q29udGVudD8udHJpbSgpKXIucHVzaCh7aWQ6YGJsb2NrLSR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiw5KX1gLHR5cGU6InBhcmFncmFwaCIsY29udGVudDpvLnRleHRDb250ZW50LnRyaW0oKX0pO2Vsc2UgaWYoby5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFKXtsZXQgbD1vLHA9bC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7c3dpdGNoKHApe2Nhc2UicCI6ci5wdXNoKHtpZDpgYmxvY2stJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLDkpfWAsdHlwZToicGFyYWdyYXBoIixjb250ZW50OmwuaW5uZXJIVE1MfHwiIn0pO2JyZWFrO2Nhc2UiaDEiOnIucHVzaCh7aWQ6YGJsb2NrLSR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiw5KX1gLHR5cGU6ImhlYWRpbmctMSIsY29udGVudDpsLmlubmVySFRNTHx8IiJ9KTticmVhaztjYXNlImgyIjpyLnB1c2goe2lkOmBibG9jay0ke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsOSl9YCx0eXBlOiJoZWFkaW5nLTIiLGNvbnRlbnQ6bC5pbm5lckhUTUx8fCIifSk7YnJlYWs7Y2FzZSJoMyI6ci5wdXNoKHtpZDpgYmxvY2stJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLDkpfWAsdHlwZToiaGVhZGluZy0zIixjb250ZW50OmwuaW5uZXJIVE1MfHwiIn0pO2JyZWFrO2Nhc2UiYmxvY2txdW90ZSI6ci5wdXNoKHtpZDpgYmxvY2stJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLDkpfWAsdHlwZToicXVvdGUiLGNvbnRlbnQ6bC5pbm5lckhUTUx8fCIifSk7YnJlYWs7Y2FzZSJwcmUiOmNhc2UiY29kZSI6ci5wdXNoKHtpZDpgYmxvY2stJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLDkpfWAsdHlwZToiY29kZSIsY29udGVudDpsLnRleHRDb250ZW50fHwiIn0pO2JyZWFrO2Nhc2UidWwiOmNhc2Uib2wiOmxldCB1PUFycmF5LmZyb20obC5xdWVyeVNlbGVjdG9yQWxsKCJsaSIpKS5tYXAoYj0+Yi5pbm5lckhUTUx8fCIiKS5qb2luKGAKYCk7ci5wdXNoKHtpZDpgYmxvY2stJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLDkpfWAsdHlwZToibGlzdCIsY29udGVudDp1LG1ldGFkYXRhOntsaXN0VHlwZTpwPT09Im9sIj8ib3JkZXJlZCI6ImJ1bGxldCJ9fSk7YnJlYWs7Y2FzZSJociI6ci5wdXNoKHtpZDpgYmxvY2stJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLDkpfWAsdHlwZToiZGl2aWRlciIsY29udGVudDoiICJ9KTticmVhaztjYXNlImltZyI6bGV0IGM9bDtyLnB1c2goe2lkOmBibG9jay0ke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsOSl9YCx0eXBlOiJpbWFnZSIsY29udGVudDpjLmFsdHx8IiIsbWV0YWRhdGE6e3VybDpjLnNyY319KTticmVhaztkZWZhdWx0OmwuY2hpbGROb2Rlcy5mb3JFYWNoKGI9Pm4oYikpfX19LCJwcm9jZXNzTm9kZSIpO3JldHVybiBhLmJvZHkuY2hpbGROb2Rlcy5mb3JFYWNoKG89Pm4obykpLHJ9c3RhdGljIHBhcnNlTWFya2Rvd25Ub0Jsb2NrcyhlKXtsZXQgdD1lLnNwbGl0KGAKYCksYT1bXSxyPVtdO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtsZXQgbz10W25dO2lmKG8uc3RhcnRzV2l0aCgiIyAiKSlhLnB1c2goe2lkOmBibG9jay0ke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsOSl9YCx0eXBlOiJoZWFkaW5nLTEiLGNvbnRlbnQ6by5zdWJzdHJpbmcoMil9KTtlbHNlIGlmKG8uc3RhcnRzV2l0aCgiIyMgIikpYS5wdXNoKHtpZDpgYmxvY2stJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLDkpfWAsdHlwZToiaGVhZGluZy0yIixjb250ZW50Om8uc3Vic3RyaW5nKDMpfSk7ZWxzZSBpZihvLnN0YXJ0c1dpdGgoIiMjIyAiKSlhLnB1c2goe2lkOmBibG9jay0ke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsOSl9YCx0eXBlOiJoZWFkaW5nLTMiLGNvbnRlbnQ6by5zdWJzdHJpbmcoNCl9KTtlbHNlIGlmKG8uc3RhcnRzV2l0aCgiPiAiKSlhLnB1c2goe2lkOmBibG9jay0ke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsOSl9YCx0eXBlOiJxdW90ZSIsY29udGVudDpvLnN1YnN0cmluZygyKX0pO2Vsc2UgaWYoby5zdGFydHNXaXRoKCJgYGAiKSl7bGV0IGw9W107Zm9yKG4rKztuPHQubGVuZ3RoJiYhdFtuXS5zdGFydHNXaXRoKCJgYGAiKTspbC5wdXNoKHRbbl0pLG4rKzthLnB1c2goe2lkOmBibG9jay0ke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsOSl9YCx0eXBlOiJjb2RlIixjb250ZW50Omwuam9pbihgCmApfSl9ZWxzZSBpZihvLm1hdGNoKC9eKFwqfC0pIC8pKXIucHVzaChvLnN1YnN0cmluZygyKSksKG49PT10Lmxlbmd0aC0xfHwhdFtuKzFdLm1hdGNoKC9eKFwqfC0pIC8pKSYmKGEucHVzaCh7aWQ6YGJsb2NrLSR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiw5KX1gLHR5cGU6Imxpc3QiLGNvbnRlbnQ6ci5qb2luKGAKYCksbWV0YWRhdGE6e2xpc3RUeXBlOiJidWxsZXQifX0pLHI9W10pO2Vsc2UgaWYoby5tYXRjaCgvXlxkK1wuIC8pKXIucHVzaChvLnJlcGxhY2UoL15cZCtcLiAvLCIiKSksKG49PT10Lmxlbmd0aC0xfHwhdFtuKzFdLm1hdGNoKC9eXGQrXC4gLykpJiYoYS5wdXNoKHtpZDpgYmxvY2stJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLDkpfWAsdHlwZToibGlzdCIsY29udGVudDpyLmpvaW4oYApgKSxtZXRhZGF0YTp7bGlzdFR5cGU6Im9yZGVyZWQifX0pLHI9W10pO2Vsc2UgaWYobz09PSItLS0ifHxvPT09IioqKiJ8fG89PT0iX19fIilhLnB1c2goe2lkOmBibG9jay0ke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsOSl9YCx0eXBlOiJkaXZpZGVyIixjb250ZW50OiIgIn0pO2Vsc2UgaWYoby5tYXRjaCgvXiFcWyhbXlxdXSopXF1cKChbXlwpXSspXCkkLykpe2xldCBsPW8ubWF0Y2goL14hXFsoW15cXV0qKVxdXCgoW15cKV0rKVwpJC8pO2wmJmEucHVzaCh7aWQ6YGJsb2NrLSR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiw5KX1gLHR5cGU6ImltYWdlIixjb250ZW50OmxbMV18fCIiLG1ldGFkYXRhOnt1cmw6bFsyXX19KX1lbHNlIG8udHJpbSgpJiZhLnB1c2goe2lkOmBibG9jay0ke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsOSl9YCx0eXBlOiJwYXJhZ3JhcGgiLGNvbnRlbnQ6b30pfXJldHVybiBhfX19KTt2YXIgQ28saXU9ZygoKT0+e3BlKCk7TWwoKTtsdHQoKTtDbz1jbGFzc3tzdGF0aWN7aSh0aGlzLCJXeXNpd3lnQmxvY2tzIil9c3RhdGljIHJlbmRlckxpc3RDb250ZW50KGUsdCl7bGV0IGE9ZS5zcGxpdChgCmApLmZpbHRlcihuPT5uLnRyaW0oKSk7aWYoYS5sZW5ndGg9PT0wKXJldHVybiIiO2xldCByPXQ/Lmxpc3RUeXBlPT09Im9yZGVyZWQiPyJvbCI6InVsIjtyZXR1cm5gPCR7cn0+JHthLm1hcChuPT5gPGxpPiR7bn08L2xpPmApLmpvaW4oIiIpfTwvJHtyfT5gfXN0YXRpYyByZW5kZXJCbG9jayhlLHQsYSl7aWYoZS50eXBlPT09ImRpdmlkZXIiKXJldHVybiB3YAogICAgICAgIDxkaXYKICAgICAgICAgIGNsYXNzPSJibG9jayBkaXZpZGVyIgogICAgICAgICAgZGF0YS1ibG9jay1pZD0iJHtlLmlkfSIKICAgICAgICA+CiAgICAgICAgICA8aHI+CiAgICAgICAgPC9kaXY+CiAgICAgIGA7aWYoZS50eXBlPT09Imxpc3QiKXJldHVybiB3YAogICAgICAgIDxkaXYKICAgICAgICAgIGNsYXNzPSJibG9jayBsaXN0ICR7dD8ic2VsZWN0ZWQiOiIifSIKICAgICAgICAgIGRhdGEtYmxvY2staWQ9IiR7ZS5pZH0iCiAgICAgICAgICBjb250ZW50ZWRpdGFibGU9InRydWUiCiAgICAgICAgICBAaW5wdXQ9IiR7YS5vbklucHV0fSIKICAgICAgICAgIEBrZXlkb3duPSIke2Eub25LZXlEb3dufSIKICAgICAgICAgIEBmb2N1cz0iJHthLm9uRm9jdXN9IgogICAgICAgICAgQGJsdXI9IiR7YS5vbkJsdXJ9IgogICAgICAgICAgQGNvbXBvc2l0aW9uc3RhcnQ9IiR7YS5vbkNvbXBvc2l0aW9uU3RhcnR9IgogICAgICAgICAgQGNvbXBvc2l0aW9uZW5kPSIke2Eub25Db21wb3NpdGlvbkVuZH0iCiAgICAgICAgICBAbW91c2V1cD0iJHtuPT57Y29uc29sZS5sb2coIkJsb2NrIG1vdXNldXAgZXZlbnQgZmlyZWQiKSxhLm9uTW91c2VVcCYmYS5vbk1vdXNlVXAobil9fSIKICAgICAgICAgIC5pbm5lckhUTUw9IiR7dGhpcy5yZW5kZXJMaXN0Q29udGVudChlLmNvbnRlbnQsZS5tZXRhZGF0YSl9IgogICAgICAgID48L2Rpdj4KICAgICAgYDtpZihlLnR5cGU9PT0iY29kZSIpe2xldCBuPWUubWV0YWRhdGE/Lmxhbmd1YWdlfHwicGxhaW4gdGV4dCI7cmV0dXJuIHdgCiAgICAgICAgPGRpdiBjbGFzcz0iY29kZS1ibG9jay1jb250YWluZXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0iY29kZS1sYW5ndWFnZSI+JHtufTwvZGl2PgogICAgICAgICAgPGRpdgogICAgICAgICAgICBjbGFzcz0iYmxvY2sgJHtlLnR5cGV9ICR7dD8ic2VsZWN0ZWQiOiIifSIKICAgICAgICAgICAgY29udGVudGVkaXRhYmxlPSJ0cnVlIgogICAgICAgICAgICBAaW5wdXQ9IiR7YS5vbklucHV0fSIKICAgICAgICAgICAgQGtleWRvd249IiR7YS5vbktleURvd259IgogICAgICAgICAgICBAZm9jdXM9IiR7YS5vbkZvY3VzfSIKICAgICAgICAgICAgQGJsdXI9IiR7YS5vbkJsdXJ9IgogICAgICAgICAgICBAY29tcG9zaXRpb25zdGFydD0iJHthLm9uQ29tcG9zaXRpb25TdGFydH0iCiAgICAgICAgICAgIEBjb21wb3NpdGlvbmVuZD0iJHthLm9uQ29tcG9zaXRpb25FbmR9IgogICAgICAgICAgICBAbW91c2V1cD0iJHtvPT57Y29uc29sZS5sb2coIkJsb2NrIG1vdXNldXAgZXZlbnQgZmlyZWQiKSxhLm9uTW91c2VVcCYmYS5vbk1vdXNlVXAobyl9fSIKICAgICAgICAgICAgLnRleHRDb250ZW50PSIke2UuY29udGVudHx8IiJ9IgogICAgICAgICAgPjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICBgfXJldHVybiB3YAogICAgICA8ZGl2CiAgICAgICAgY2xhc3M9ImJsb2NrICR7ZS50eXBlfSAke3Q/InNlbGVjdGVkIjoiIn0iCiAgICAgICAgY29udGVudGVkaXRhYmxlPSJ0cnVlIgogICAgICAgIEBpbnB1dD0iJHthLm9uSW5wdXR9IgogICAgICAgIEBrZXlkb3duPSIke2Eub25LZXlEb3dufSIKICAgICAgICBAZm9jdXM9IiR7YS5vbkZvY3VzfSIKICAgICAgICBAYmx1cj0iJHthLm9uQmx1cn0iCiAgICAgICAgQGNvbXBvc2l0aW9uc3RhcnQ9IiR7YS5vbkNvbXBvc2l0aW9uU3RhcnR9IgogICAgICAgIEBjb21wb3NpdGlvbmVuZD0iJHthLm9uQ29tcG9zaXRpb25FbmR9IgogICAgICAgIEBtb3VzZXVwPSIke249Pntjb25zb2xlLmxvZygiQmxvY2sgbW91c2V1cCBldmVudCBmaXJlZCIpLGEub25Nb3VzZVVwJiZhLm9uTW91c2VVcChuKX19IgogICAgICAgIC5pbm5lckhUTUw9IiR7ZS5jb250ZW50fHwiIn0iCiAgICAgID48L2Rpdj4KICAgIGB9c3RhdGljIHNldEN1cnNvclRvRW5kKGUpe2xldCB0PXdpbmRvdy5nZXRTZWxlY3Rpb24oKTtpZighdClyZXR1cm47bGV0IGE9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtpZihlLmNoaWxkTm9kZXMubGVuZ3RoPT09MCl7bGV0IHI9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlx1MjAwQiIpO2UuYXBwZW5kQ2hpbGQociksYS5zZXRTdGFydChyLDEpLGEuY29sbGFwc2UoITApfWVsc2V7bGV0IHI9dGhpcy5nZXRMYXN0Tm9kZShlKTtyLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREU/YS5zZXRTdGFydChyLHIudGV4dENvbnRlbnQ/Lmxlbmd0aHx8MCk6YS5zZXRTdGFydEFmdGVyKHIpLGEuY29sbGFwc2UoITApfXQucmVtb3ZlQWxsUmFuZ2VzKCksdC5hZGRSYW5nZShhKSxlLnRleHRDb250ZW50PT09Ilx1MjAwQiImJihlLnRleHRDb250ZW50PSIiKX1zdGF0aWMgc2V0Q3Vyc29yVG9TdGFydChlKXtsZXQgdD13aW5kb3cuZ2V0U2VsZWN0aW9uKCk7aWYoIXQpcmV0dXJuO2xldCBhPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7aWYoZS5jaGlsZE5vZGVzLmxlbmd0aD09PTApYS5zZXRTdGFydChlLDApLGEuY29sbGFwc2UoITApO2Vsc2V7bGV0IHI9dGhpcy5nZXRGaXJzdE5vZGUoZSk7ci5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFP2Euc2V0U3RhcnQociwwKTphLnNldFN0YXJ0QmVmb3JlKHIpLGEuY29sbGFwc2UoITApfXQucmVtb3ZlQWxsUmFuZ2VzKCksdC5hZGRSYW5nZShhKX1zdGF0aWMgZ2V0TGFzdE5vZGUoZSl7aWYoZS5jaGlsZE5vZGVzLmxlbmd0aD09PTApcmV0dXJuIGU7bGV0IHQ9ZS5jaGlsZE5vZGVzW2UuY2hpbGROb2Rlcy5sZW5ndGgtMV07cmV0dXJuIHQubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERXx8dC5jaGlsZE5vZGVzLmxlbmd0aD09PTA/dDp0aGlzLmdldExhc3ROb2RlKHQpfXN0YXRpYyBnZXRGaXJzdE5vZGUoZSl7aWYoZS5jaGlsZE5vZGVzLmxlbmd0aD09PTApcmV0dXJuIGU7bGV0IHQ9ZS5jaGlsZE5vZGVzWzBdO3JldHVybiB0Lm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREV8fHQuY2hpbGROb2Rlcy5sZW5ndGg9PT0wP3Q6dGhpcy5nZXRGaXJzdE5vZGUodCl9c3RhdGljIGZvY3VzTGlzdEl0ZW0oZSl7bGV0IHQ9ZS5xdWVyeVNlbGVjdG9yKCJsaSIpO2lmKHQpe3QuZm9jdXMoKTtsZXQgYT1kb2N1bWVudC5jcmVhdGVSYW5nZSgpLHI9d2luZG93LmdldFNlbGVjdGlvbigpO2Euc2VsZWN0Tm9kZUNvbnRlbnRzKHQpLGEuY29sbGFwc2UoITApLHIucmVtb3ZlQWxsUmFuZ2VzKCksci5hZGRSYW5nZShhKX19fX0pO3ZhciBFWixjdHQ9ZygoKT0+e01sKCk7Z3YoKTtCOCgpO2l1KCk7RVo9Y2xhc3N7c3RhdGlje2kodGhpcywiV3lzaXd5Z0Jsb2NrT3BlcmF0aW9ucyIpfWNvbXBvbmVudDtjb25zdHJ1Y3RvcihlKXt0aGlzLmNvbXBvbmVudD1lfWNyZWF0ZUJsb2NrKGU9InBhcmFncmFwaCIsdD0iIixhKXtyZXR1cm57aWQ6Y3IuZ2VuZXJhdGVCbG9ja0lkKCksdHlwZTplLGNvbnRlbnQ6dCwuLi5hJiZ7bWV0YWRhdGE6YX19fWFzeW5jIGluc2VydEJsb2NrQWZ0ZXIoZSx0LGE9ITApe2xldCByPXRoaXMuY29tcG9uZW50LmJsb2NrcyxuPXIuZmluZEluZGV4KG89Pm8uaWQ9PT1lLmlkKTtpZih0aGlzLmNvbXBvbmVudC5ibG9ja3M9Wy4uLnIuc2xpY2UoMCxuKzEpLHQsLi4uci5zbGljZShuKzEpXSx0aGlzLmNvbXBvbmVudC5lZGl0b3JDb250ZW50UmVmKXtsZXQgbz10aGlzLmNvbXBvbmVudC5lZGl0b3JDb250ZW50UmVmLnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWJsb2NrLWlkPSIke2UuaWR9Il1gKTtpZihvKXtsZXQgbD10aGlzLmNvbXBvbmVudC5jcmVhdGVCbG9ja0VsZW1lbnQodCk7by5pbnNlcnRBZGphY2VudEVsZW1lbnQoImFmdGVyZW5kIixsKX19dGhpcy5jb21wb25lbnQudXBkYXRlVmFsdWUoKSxhJiZ0LnR5cGUhPT0iZGl2aWRlciImJihhd2FpdCBuZXcgUHJvbWlzZShvPT5zZXRUaW1lb3V0KG8sMCkpLGF3YWl0IHRoaXMuZm9jdXNCbG9jayh0LmlkLCJzdGFydCIpKX1yZW1vdmVCbG9jayhlKXtpZih0aGlzLmNvbXBvbmVudC5zYXZlVG9IaXN0b3J5KCExKSx0aGlzLmNvbXBvbmVudC5ibG9ja3M9dGhpcy5jb21wb25lbnQuYmxvY2tzLmZpbHRlcih0PT50LmlkIT09ZSksdGhpcy5jb21wb25lbnQuZWRpdG9yQ29udGVudFJlZil7bGV0IHQ9dGhpcy5jb21wb25lbnQuZWRpdG9yQ29udGVudFJlZi5xdWVyeVNlbGVjdG9yKGBbZGF0YS1ibG9jay1pZD0iJHtlfSJdYCk7dCYmdC5yZW1vdmUoKX10aGlzLmNvbXBvbmVudC51cGRhdGVWYWx1ZSgpfWZpbmRCbG9jayhlKXtyZXR1cm4gdGhpcy5jb21wb25lbnQuYmxvY2tzLmZpbmQodD0+dC5pZD09PWUpfWdldEJsb2NrSW5kZXgoZSl7cmV0dXJuIHRoaXMuY29tcG9uZW50LmJsb2Nrcy5maW5kSW5kZXgodD0+dC5pZD09PWUpfWFzeW5jIGZvY3VzQmxvY2soZSx0PSJzdGFydCIpe2xldCBhPXRoaXMuY29tcG9uZW50LnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgW2RhdGEtYmxvY2staWQ9IiR7ZX0iXWApO2lmKGEpe2xldCByPWEucXVlcnlTZWxlY3RvcigiZGVlcy13eXNpd3lnLWJsb2NrIik7ciYmKGF3YWl0IG5ldyBQcm9taXNlKG49PnJlcXVlc3RBbmltYXRpb25GcmFtZShuKSksci5mb2N1c1dpdGhDdXJzb3IodCkpfX11cGRhdGVCbG9ja0NvbnRlbnQoZSx0KXtsZXQgYT10aGlzLmZpbmRCbG9jayhlKTthJiYoYS5jb250ZW50PXQsdGhpcy5jb21wb25lbnQudXBkYXRlVmFsdWUoKSl9dHJhbnNmb3JtQmxvY2soZSx0LGEpe2xldCByPXRoaXMuZmluZEJsb2NrKGUpO3ImJih0aGlzLmNvbXBvbmVudC5zYXZlVG9IaXN0b3J5KCExKSxyLnR5cGU9dCxyLmNvbnRlbnQ9IiIsYSYmKHIubWV0YWRhdGE9YSksdGhpcy5jb21wb25lbnQuZWRpdG9yQ29udGVudFJlZiYmdGhpcy5jb21wb25lbnQudXBkYXRlQmxvY2tFbGVtZW50KGUpLHRoaXMuY29tcG9uZW50LnVwZGF0ZVZhbHVlKCkpfW1vdmVCbG9jayhlLHQpe2xldCBhPVsuLi50aGlzLmNvbXBvbmVudC5ibG9ja3NdLHI9dGhpcy5nZXRCbG9ja0luZGV4KGUpO2lmKHI9PT0tMXx8dDwwfHx0Pj1hLmxlbmd0aClyZXR1cm47bGV0W25dPWEuc3BsaWNlKHIsMSk7YS5zcGxpY2UodCwwLG4pLHRoaXMuY29tcG9uZW50LmJsb2Nrcz1hLHRoaXMuY29tcG9uZW50LnVwZGF0ZVZhbHVlKCl9Z2V0UHJldmlvdXNCbG9jayhlKXtsZXQgdD10aGlzLmdldEJsb2NrSW5kZXgoZSk7cmV0dXJuIHQ+MD90aGlzLmNvbXBvbmVudC5ibG9ja3NbdC0xXTpudWxsfWdldE5leHRCbG9jayhlKXtsZXQgdD10aGlzLmdldEJsb2NrSW5kZXgoZSk7cmV0dXJuIHQ8dGhpcy5jb21wb25lbnQuYmxvY2tzLmxlbmd0aC0xP3RoaXMuY29tcG9uZW50LmJsb2Nrc1t0KzFdOm51bGx9fX0pO3ZhciBwaSxZbD1nKCgpPT57cGk9Y2xhc3N7c3RhdGlje2kodGhpcywiQmFzZUJsb2NrSGFuZGxlciIpfXNldHVwKGUsdCxhKXt9Z2V0U3R5bGVzKCl7cmV0dXJuIiJ9fX0pO3ZhciBJcyxPMGE9ZygoKT0+e0lzPWNsYXNze3N0YXRpY3tpKHRoaXMsIkJsb2NrUmVnaXN0cnkiKX1zdGF0aWMgaGFuZGxlcnM9bmV3IE1hcDtzdGF0aWMgcmVnaXN0ZXIoZSx0KXt0aGlzLmhhbmRsZXJzLnNldChlLHQpfXN0YXRpYyBnZXRIYW5kbGVyKGUpe3JldHVybiB0aGlzLmhhbmRsZXJzLmdldChlKX1zdGF0aWMgZ2V0QWxsVHlwZXMoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmhhbmRsZXJzLmtleXMoKSl9fX0pO3ZhciBGMGE9ZygoKT0+e30pO3ZhciBQWixCMGE9ZygoKT0+e1lsKCk7cGUoKTtpdSgpO0RkKCk7UFo9Y2xhc3MgZXh0ZW5kcyBwaXtzdGF0aWN7aSh0aGlzLCJQYXJhZ3JhcGhCbG9ja0hhbmRsZXIiKX10eXBlPSJwYXJhZ3JhcGgiO2xhc3RLbm93bkN1cnNvclBvc2l0aW9uPTA7bGFzdFNlbGVjdGVkVGV4dD0iIjtzZWxlY3Rpb25IYW5kbGVyPW51bGw7cmVuZGVyKGUsdCl7bGV0IGE9dD8iIHNlbGVjdGVkIjoiIixyPXRoaXMuZ2V0UGxhY2Vob2xkZXIoKTtyZXR1cm5gCiAgICAgIDxkaXYKICAgICAgICBjbGFzcz0iYmxvY2sgcGFyYWdyYXBoJHthfSIKICAgICAgICBjb250ZW50ZWRpdGFibGU9InRydWUiCiAgICAgICAgZGF0YS1wbGFjZWhvbGRlcj0iJHtyfSIKICAgICAgICBkYXRhLWJsb2NrLWlkPSIke2UuaWR9IgogICAgICAgIGRhdGEtYmxvY2stdHlwZT0iJHtlLnR5cGV9IgogICAgICA+PC9kaXY+CiAgICBgfXNldHVwKGUsdCxhKXtsZXQgcj1lLnF1ZXJ5U2VsZWN0b3IoIi5ibG9jay5wYXJhZ3JhcGgiKTtpZighcil7Y29uc29sZS5lcnJvcigiUGFyYWdyYXBoQmxvY2tIYW5kbGVyLnNldHVwOiBObyBwYXJhZ3JhcGggYmxvY2sgZWxlbWVudCBmb3VuZCIpO3JldHVybn10LmNvbnRlbnQmJiFyLmlubmVySFRNTCYmKHIuaW5uZXJIVE1MPXQuY29udGVudCksci5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsbj0+e2Eub25JbnB1dChuKTtsZXQgbz10aGlzLmdldEN1cnNvclBvc2l0aW9uKGUpO28hPT1udWxsJiYodGhpcy5sYXN0S25vd25DdXJzb3JQb3NpdGlvbj1vKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsbj0+e2xldCBvPXRoaXMuZ2V0Q3Vyc29yUG9zaXRpb24oZSk7byE9PW51bGwmJih0aGlzLmxhc3RLbm93bkN1cnNvclBvc2l0aW9uPW8pLGEub25LZXlEb3duKG4pfSksci5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsKCk9PnthLm9uRm9jdXMoKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsKCk9PnthLm9uQmx1cigpfSksci5hZGRFdmVudExpc3RlbmVyKCJjb21wb3NpdGlvbnN0YXJ0IiwoKT0+e2Eub25Db21wb3NpdGlvblN0YXJ0KCl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoImNvbXBvc2l0aW9uZW5kIiwoKT0+e2Eub25Db21wb3NpdGlvbkVuZCgpfSksci5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIixuPT57bGV0IG89dGhpcy5nZXRDdXJzb3JQb3NpdGlvbihlKTtvIT09bnVsbCYmKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb249byksYS5vbk1vdXNlVXA/LihuKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLG49PntzZXRUaW1lb3V0KCgpPT57bGV0IG89dGhpcy5nZXRDdXJzb3JQb3NpdGlvbihlKTtvIT09bnVsbCYmKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb249byl9LDApfSksci5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsbj0+e2xldCBvPXRoaXMuZ2V0Q3Vyc29yUG9zaXRpb24oZSk7byE9PW51bGwmJih0aGlzLmxhc3RLbm93bkN1cnNvclBvc2l0aW9uPW8pfSksdGhpcy5zZXR1cFNlbGVjdGlvbkhhbmRsZXIoZSxyLHQpfXNldHVwU2VsZWN0aW9uSGFuZGxlcihlLHQsYSl7bGV0IHI9aSgoKT0+e2xldCBvPXdpbmRvdy5nZXRTZWxlY3Rpb24oKTtpZighb3x8by5yYW5nZUNvdW50PT09MClyZXR1cm47bGV0IGw9by50b1N0cmluZygpO2lmKGwubGVuZ3RoPT09MCl7dGhpcy5sYXN0U2VsZWN0ZWRUZXh0JiYodGhpcy5sYXN0U2VsZWN0ZWRUZXh0PSIiLHRoaXMuZGlzcGF0Y2hTZWxlY3Rpb25FdmVudChlLHt0ZXh0OiIiLGJsb2NrSWQ6YS5pZCxoYXNTZWxlY3Rpb246ITF9KSk7cmV0dXJufWxldCBwPXQuZ2V0Um9vdE5vZGUoKS5ob3N0LHU9cD8uY2xvc2VzdCgiZGVlcy1pbnB1dC13eXNpd3lnIik/LnNoYWRvd1Jvb3QsYz1wPy5zaGFkb3dSb290LGI9W107dSYmYi5wdXNoKHUpLGMmJmIucHVzaChjKTtsZXQgdj1TdC5nZXRTZWxlY3Rpb25JbmZvKC4uLmIpO2lmKCF2KXJldHVybjtsZXQgeD1TdC5jb250YWluc0Fjcm9zc1NoYWRvd0RPTSh0LHYuc3RhcnRDb250YWluZXIpLG09U3QuY29udGFpbnNBY3Jvc3NTaGFkb3dET00odCx2LmVuZENvbnRhaW5lcik7aWYoeHx8bSl7aWYobCE9PXRoaXMubGFzdFNlbGVjdGVkVGV4dCl7dGhpcy5sYXN0U2VsZWN0ZWRUZXh0PWw7bGV0IGY9U3QuY3JlYXRlUmFuZ2VGcm9tSW5mbyh2KSx5PWYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dGhpcy5kaXNwYXRjaFNlbGVjdGlvbkV2ZW50KGUse3RleHQ6bC50cmltKCksYmxvY2tJZDphLmlkLHJhbmdlOmYscmVjdDp5LGhhc1NlbGVjdGlvbjohMH0pfX1lbHNlIHRoaXMubGFzdFNlbGVjdGVkVGV4dCYmKHRoaXMubGFzdFNlbGVjdGVkVGV4dD0iIix0aGlzLmRpc3BhdGNoU2VsZWN0aW9uRXZlbnQoZSx7dGV4dDoiIixibG9ja0lkOmEuaWQsaGFzU2VsZWN0aW9uOiExfSkpfSwiY2hlY2tTZWxlY3Rpb24iKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3Rpb25jaGFuZ2UiLHIpLHRoaXMuc2VsZWN0aW9uSGFuZGxlcj1yO2xldCBuPWUuY2xvc2VzdCgiZGVlcy13eXNpd3lnLWJsb2NrIik7aWYobil7bGV0IG89bi5kaXNjb25uZWN0ZWRDYWxsYmFjayxsPXRoaXM7bi5kaXNjb25uZWN0ZWRDYWxsYmFjaz1hc3luYyBmdW5jdGlvbigpe2wuc2VsZWN0aW9uSGFuZGxlciYmKGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlbGVjdGlvbmNoYW5nZSIsbC5zZWxlY3Rpb25IYW5kbGVyKSxsLnNlbGVjdGlvbkhhbmRsZXI9bnVsbCksbyYmYXdhaXQgby5jYWxsKG4pfX19ZGlzcGF0Y2hTZWxlY3Rpb25FdmVudChlLHQpe2xldCBhPW5ldyBDdXN0b21FdmVudCgiYmxvY2stdGV4dC1zZWxlY3RlZCIse2RldGFpbDp0LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KTtlLmRpc3BhdGNoRXZlbnQoYSl9Z2V0U3R5bGVzKCl7cmV0dXJuYAogICAgICAvKiBQYXJhZ3JhcGggc3BlY2lmaWMgc3R5bGVzICovCiAgICAgIC5ibG9jay5wYXJhZ3JhcGggewogICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgIH0KICAgIGB9Z2V0UGxhY2Vob2xkZXIoKXtyZXR1cm4iVHlwZSAnLycgZm9yIGNvbW1hbmRzLi4uIn1nZXRMYXN0VGV4dE5vZGUoZSl7aWYoZS5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFKXJldHVybiBlO2ZvcihsZXQgdD1lLmNoaWxkTm9kZXMubGVuZ3RoLTE7dD49MDt0LS0pe2xldCBhPXRoaXMuZ2V0TGFzdFRleHROb2RlKGUuY2hpbGROb2Rlc1t0XSk7aWYoYSlyZXR1cm4gYX1yZXR1cm4gbnVsbH1nZXRDdXJzb3JQb3NpdGlvbihlLHQpe2xldCBhPWUucXVlcnlTZWxlY3RvcigiLmJsb2NrLnBhcmFncmFwaCIpO2lmKCFhKXJldHVybiBudWxsO2xldCBvPXQ/LmNvbXBvbmVudD8uY2xvc2VzdCgiZGVlcy1pbnB1dC13eXNpd3lnIik/LnNoYWRvd1Jvb3QsbD10Py5zaGFkb3dSb290LHA9W107byYmcC5wdXNoKG8pLGwmJnAucHVzaChsKTtsZXQgZD1TdC5nZXRTZWxlY3Rpb25JbmZvKC4uLnApO2lmKCFkfHwhU3QuY29udGFpbnNBY3Jvc3NTaGFkb3dET00oYSxkLnN0YXJ0Q29udGFpbmVyKSlyZXR1cm4gbnVsbDtsZXQgdT1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO3JldHVybiB1LnNlbGVjdE5vZGVDb250ZW50cyhhKSx1LnNldEVuZChkLnN0YXJ0Q29udGFpbmVyLGQuc3RhcnRPZmZzZXQpLHUudG9TdHJpbmcoKS5sZW5ndGh9Z2V0Q29udGVudChlLHQpe2xldCBhPWUucXVlcnlTZWxlY3RvcigiLmJsb2NrLnBhcmFncmFwaCIpO3JldHVybiBhJiZhLmlubmVySFRNTHx8IiJ9c2V0Q29udGVudChlLHQsYSl7bGV0IHI9ZS5xdWVyeVNlbGVjdG9yKCIuYmxvY2sucGFyYWdyYXBoIik7aWYoIXIpcmV0dXJuO2xldCBuPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT1yfHxlLnNoYWRvd1Jvb3Q/LmFjdGl2ZUVsZW1lbnQ9PT1yO3IuaW5uZXJIVE1MPXQsbiYmci5mb2N1cygpfXNldEN1cnNvclRvU3RhcnQoZSx0KXtsZXQgYT1lLnF1ZXJ5U2VsZWN0b3IoIi5ibG9jay5wYXJhZ3JhcGgiKTthJiZDby5zZXRDdXJzb3JUb1N0YXJ0KGEpfXNldEN1cnNvclRvRW5kKGUsdCl7bGV0IGE9ZS5xdWVyeVNlbGVjdG9yKCIuYmxvY2sucGFyYWdyYXBoIik7YSYmQ28uc2V0Q3Vyc29yVG9FbmQoYSl9Zm9jdXMoZSx0KXtsZXQgYT1lLnF1ZXJ5U2VsZWN0b3IoIi5ibG9jay5wYXJhZ3JhcGgiKTthJiYoYS5oYXNBdHRyaWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIpfHxhLnNldEF0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIiwidHJ1ZSIpLGEuZm9jdXMoKSxkb2N1bWVudC5hY3RpdmVFbGVtZW50IT09YSYmZS5zaGFkb3dSb290Py5hY3RpdmVFbGVtZW50IT09YSYmUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e2EuZm9jdXMoKX0pKX1mb2N1c1dpdGhDdXJzb3IoZSx0PSJlbmQiLGEpe2xldCByPWUucXVlcnlTZWxlY3RvcigiLmJsb2NrLnBhcmFncmFwaCIpO2lmKCFyKXJldHVybjtpZihyLmhhc0F0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIil8fHIuc2V0QXR0cmlidXRlKCJjb250ZW50ZWRpdGFibGUiLCJ0cnVlIiksdD09PSJlbmQiJiZyLnRleHRDb250ZW50JiZyLnRleHRDb250ZW50Lmxlbmd0aD4wKXtsZXQgbz13aW5kb3cuZ2V0U2VsZWN0aW9uKCk7aWYobyl7bGV0IGw9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKSxwPXRoaXMuZ2V0TGFzdFRleHROb2RlKHIpfHxyO3Aubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERT8obC5zZXRTdGFydChwLHAudGV4dENvbnRlbnQ/Lmxlbmd0aHx8MCksbC5zZXRFbmQocCxwLnRleHRDb250ZW50Py5sZW5ndGh8fDApKToobC5zZWxlY3ROb2RlQ29udGVudHMocCksbC5jb2xsYXBzZSghMSkpLG8ucmVtb3ZlQWxsUmFuZ2VzKCksby5hZGRSYW5nZShsKX19ci5mb2N1cygpO2xldCBuPWkoKCk9Pnt0PT09InN0YXJ0Ij90aGlzLnNldEN1cnNvclRvU3RhcnQoZSxhKTp0PT09ImVuZCImJighci50ZXh0Q29udGVudHx8ci50ZXh0Q29udGVudC5sZW5ndGg9PT0wKT90aGlzLnNldEN1cnNvclRvRW5kKGUsYSk6dHlwZW9mIHQ9PSJudW1iZXIiJiZTdC5zZXRDdXJzb3JQb3NpdGlvbihyLHQpfSwic2V0Q3Vyc29yIik7ZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PXJ8fGUuc2hhZG93Um9vdD8uYWN0aXZlRWxlbWVudD09PXI/bigpOlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pntkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09cnx8ZS5zaGFkb3dSb290Py5hY3RpdmVFbGVtZW50PT09cj9uKCk6c2V0VGltZW91dCgoKT0+eyhkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09cnx8ZS5zaGFkb3dSb290Py5hY3RpdmVFbGVtZW50PT09cikmJm4oKX0sMTApfSl9Z2V0U3BsaXRDb250ZW50KGUsdCl7bGV0IGE9ZS5xdWVyeVNlbGVjdG9yKCIuYmxvY2sucGFyYWdyYXBoIik7aWYoIWEpcmV0dXJuIG51bGw7bGV0IG89dD8uY29tcG9uZW50Py5jbG9zZXN0KCJkZWVzLWlucHV0LXd5c2l3eWciKT8uc2hhZG93Um9vdCxsPXQ/LnNoYWRvd1Jvb3QscD1bXTtvJiZwLnB1c2gobyksbCYmcC5wdXNoKGwpO2xldCBkPVN0LmdldFNlbGVjdGlvbkluZm8oLi4ucCk7aWYoIWQpe2lmKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb24hPT1udWxsKXtsZXQgTT1hLnRleHRDb250ZW50fHwiIix6PU1hdGgubWluKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb24sTS5sZW5ndGgpO3JldHVybntiZWZvcmU6TS5zdWJzdHJpbmcoMCx6KSxhZnRlcjpNLnN1YnN0cmluZyh6KX19cmV0dXJuIG51bGx9aWYoIVN0LmNvbnRhaW5zQWNyb3NzU2hhZG93RE9NKGEsZC5zdGFydENvbnRhaW5lcikpe2lmKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb24hPT1udWxsKXtsZXQgTT1hLnRleHRDb250ZW50fHwiIix6PU1hdGgubWluKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb24sTS5sZW5ndGgpO3JldHVybntiZWZvcmU6TS5zdWJzdHJpbmcoMCx6KSxhZnRlcjpNLnN1YnN0cmluZyh6KX19cmV0dXJuIG51bGx9bGV0IHU9dGhpcy5nZXRDdXJzb3JQb3NpdGlvbihlLHQpO2lmKHU9PT1udWxsfHx1PT09MClyZXR1cm57YmVmb3JlOiIiLGFmdGVyOmEuaW5uZXJIVE1MfTtsZXQgYz1kb2N1bWVudC5jcmVhdGVSYW5nZSgpLGI9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtjLnNldFN0YXJ0KGEsMCksYy5zZXRFbmQoZC5zdGFydENvbnRhaW5lcixkLnN0YXJ0T2Zmc2V0KSxiLnNldFN0YXJ0KGQuc3RhcnRDb250YWluZXIsZC5zdGFydE9mZnNldCksYi5zZXRFbmQoYSxhLmNoaWxkTm9kZXMubGVuZ3RoKTtsZXQgdj1jLmNsb25lQ29udGVudHMoKSx4PWIuY2xvbmVDb250ZW50cygpLG09ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7bS5hcHBlbmRDaGlsZCh2KTtsZXQgZj1tLmlubmVySFRNTDttLmlubmVySFRNTD0iIixtLmFwcGVuZENoaWxkKHgpO2xldCB5PW0uaW5uZXJIVE1MO3JldHVybntiZWZvcmU6ZixhZnRlcjp5fX19fSk7dmFyIHE4LEgwYT1nKCgpPT57WWwoKTtwZSgpO2l1KCk7RGQoKTtxOD1jbGFzcyBleHRlbmRzIHBpe3N0YXRpY3tpKHRoaXMsIkhlYWRpbmdCbG9ja0hhbmRsZXIiKX10eXBlO2xldmVsO2xhc3RLbm93bkN1cnNvclBvc2l0aW9uPTA7bGFzdFNlbGVjdGVkVGV4dD0iIjtzZWxlY3Rpb25IYW5kbGVyPW51bGw7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLnR5cGU9ZSx0aGlzLmxldmVsPXBhcnNlSW50KGUuc3BsaXQoIi0iKVsxXSl9cmVuZGVyKGUsdCl7bGV0IGE9dD8iIHNlbGVjdGVkIjoiIixyPXRoaXMuZ2V0UGxhY2Vob2xkZXIoKTtyZXR1cm5gCiAgICAgIDxkaXYKICAgICAgICBjbGFzcz0iYmxvY2sgaGVhZGluZy0ke3RoaXMubGV2ZWx9JHthfSIKICAgICAgICBjb250ZW50ZWRpdGFibGU9InRydWUiCiAgICAgICAgZGF0YS1wbGFjZWhvbGRlcj0iJHtyfSIKICAgICAgICBkYXRhLWJsb2NrLWlkPSIke2UuaWR9IgogICAgICAgIGRhdGEtYmxvY2stdHlwZT0iJHtlLnR5cGV9IgogICAgICA+PC9kaXY+CiAgICBgfXNldHVwKGUsdCxhKXtsZXQgcj1lLnF1ZXJ5U2VsZWN0b3IoYC5ibG9jay5oZWFkaW5nLSR7dGhpcy5sZXZlbH1gKTtpZighcil7Y29uc29sZS5lcnJvcigiSGVhZGluZ0Jsb2NrSGFuZGxlci5zZXR1cDogTm8gaGVhZGluZyBibG9jayBlbGVtZW50IGZvdW5kIik7cmV0dXJufXQuY29udGVudCYmIXIuaW5uZXJIVE1MJiYoci5pbm5lckhUTUw9dC5jb250ZW50KSxyLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IixuPT57YS5vbklucHV0KG4pO2xldCBvPXRoaXMuZ2V0Q3Vyc29yUG9zaXRpb24oZSk7byE9PW51bGwmJih0aGlzLmxhc3RLbm93bkN1cnNvclBvc2l0aW9uPW8pfSksci5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixuPT57bGV0IG89dGhpcy5nZXRDdXJzb3JQb3NpdGlvbihlKTtvIT09bnVsbCYmKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb249byksYS5vbktleURvd24obil9KSxyLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwoKT0+e2Eub25Gb2N1cygpfSksci5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwoKT0+e2Eub25CbHVyKCl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoImNvbXBvc2l0aW9uc3RhcnQiLCgpPT57YS5vbkNvbXBvc2l0aW9uU3RhcnQoKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigiY29tcG9zaXRpb25lbmQiLCgpPT57YS5vbkNvbXBvc2l0aW9uRW5kKCl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLG49PntsZXQgbz10aGlzLmdldEN1cnNvclBvc2l0aW9uKGUpO28hPT1udWxsJiYodGhpcy5sYXN0S25vd25DdXJzb3JQb3NpdGlvbj1vKSxhLm9uTW91c2VVcD8uKG4pfSksci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsbj0+e3NldFRpbWVvdXQoKCk9PntsZXQgbz10aGlzLmdldEN1cnNvclBvc2l0aW9uKGUpO28hPT1udWxsJiYodGhpcy5sYXN0S25vd25DdXJzb3JQb3NpdGlvbj1vKX0sMCl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIixuPT57bGV0IG89dGhpcy5nZXRDdXJzb3JQb3NpdGlvbihlKTtvIT09bnVsbCYmKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb249byl9KSx0aGlzLnNldHVwU2VsZWN0aW9uSGFuZGxlcihlLHIsdCl9c2V0dXBTZWxlY3Rpb25IYW5kbGVyKGUsdCxhKXtsZXQgcj1pKCgpPT57bGV0IG89d2luZG93LmdldFNlbGVjdGlvbigpO2lmKCFvfHxvLnJhbmdlQ291bnQ9PT0wKXJldHVybjtsZXQgbD1vLnRvU3RyaW5nKCk7aWYobC5sZW5ndGg9PT0wKXt0aGlzLmxhc3RTZWxlY3RlZFRleHQmJih0aGlzLmxhc3RTZWxlY3RlZFRleHQ9IiIsdGhpcy5kaXNwYXRjaFNlbGVjdGlvbkV2ZW50KGUse3RleHQ6IiIsYmxvY2tJZDphLmlkLGhhc1NlbGVjdGlvbjohMX0pKTtyZXR1cm59bGV0IHA9dC5nZXRSb290Tm9kZSgpLmhvc3QsdT1wPy5jbG9zZXN0KCJkZWVzLWlucHV0LXd5c2l3eWciKT8uc2hhZG93Um9vdCxjPXA/LnNoYWRvd1Jvb3QsYj1bXTt1JiZiLnB1c2godSksYyYmYi5wdXNoKGMpO2xldCB2PVN0LmdldFNlbGVjdGlvbkluZm8oLi4uYik7aWYoIXYpcmV0dXJuO2xldCB4PVN0LmNvbnRhaW5zQWNyb3NzU2hhZG93RE9NKHQsdi5zdGFydENvbnRhaW5lciksbT1TdC5jb250YWluc0Fjcm9zc1NoYWRvd0RPTSh0LHYuZW5kQ29udGFpbmVyKTtpZih4fHxtKXtpZihsIT09dGhpcy5sYXN0U2VsZWN0ZWRUZXh0KXt0aGlzLmxhc3RTZWxlY3RlZFRleHQ9bDtsZXQgZj1TdC5jcmVhdGVSYW5nZUZyb21JbmZvKHYpLHk9Zi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0aGlzLmRpc3BhdGNoU2VsZWN0aW9uRXZlbnQoZSx7dGV4dDpsLnRyaW0oKSxibG9ja0lkOmEuaWQscmFuZ2U6ZixyZWN0OnksaGFzU2VsZWN0aW9uOiEwfSl9fWVsc2UgdGhpcy5sYXN0U2VsZWN0ZWRUZXh0JiYodGhpcy5sYXN0U2VsZWN0ZWRUZXh0PSIiLHRoaXMuZGlzcGF0Y2hTZWxlY3Rpb25FdmVudChlLHt0ZXh0OiIiLGJsb2NrSWQ6YS5pZCxoYXNTZWxlY3Rpb246ITF9KSl9LCJjaGVja1NlbGVjdGlvbiIpO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdGlvbmNoYW5nZSIsciksdGhpcy5zZWxlY3Rpb25IYW5kbGVyPXI7bGV0IG49dC5nZXRSb290Tm9kZSgpLmhvc3Q7aWYobil7bGV0IG89bi5kaXNjb25uZWN0ZWRDYWxsYmFjayxsPXRoaXM7bi5kaXNjb25uZWN0ZWRDYWxsYmFjaz1hc3luYyBmdW5jdGlvbigpe2wuc2VsZWN0aW9uSGFuZGxlciYmKGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlbGVjdGlvbmNoYW5nZSIsbC5zZWxlY3Rpb25IYW5kbGVyKSxsLnNlbGVjdGlvbkhhbmRsZXI9bnVsbCksbyYmYXdhaXQgby5jYWxsKG4pfX19ZGlzcGF0Y2hTZWxlY3Rpb25FdmVudChlLHQpe2xldCBhPW5ldyBDdXN0b21FdmVudCgiYmxvY2stdGV4dC1zZWxlY3RlZCIse2RldGFpbDp0LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KTtlLmRpc3BhdGNoRXZlbnQoYSl9Z2V0U3R5bGVzKCl7cmV0dXJuYAogICAgICAuYmxvY2suaGVhZGluZy0xIHsKICAgICAgICBmb250LXNpemU6IDMycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICBsaW5lLWhlaWdodDogMS4yOwogICAgICAgIG1hcmdpbjogMjRweCAwIDhweCAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzAwMDAwMCIsIiNmZmZmZmYiKX07CiAgICAgIH0KCiAgICAgIC5ibG9jay5oZWFkaW5nLTIgewogICAgICAgIGZvbnQtc2l6ZTogMjRweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM7CiAgICAgICAgbWFyZ2luOiAyMHB4IDAgNnB4IDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDAwMDAwIiwiI2ZmZmZmZiIpfTsKICAgICAgfQoKICAgICAgLmJsb2NrLmhlYWRpbmctMyB7CiAgICAgICAgZm9udC1zaXplOiAyMHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDsKICAgICAgICBtYXJnaW46IDE2cHggMCA0cHggMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwMDAwMDAiLCIjZmZmZmZmIil9OwogICAgICB9CiAgICBgfWdldFBsYWNlaG9sZGVyKCl7c3dpdGNoKHRoaXMubGV2ZWwpe2Nhc2UgMTpyZXR1cm4iSGVhZGluZyAxIjtjYXNlIDI6cmV0dXJuIkhlYWRpbmcgMiI7Y2FzZSAzOnJldHVybiJIZWFkaW5nIDMiO2RlZmF1bHQ6cmV0dXJuIkhlYWRpbmcifX1nZXRMYXN0VGV4dE5vZGUoZSl7aWYoZS5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFKXJldHVybiBlO2ZvcihsZXQgdD1lLmNoaWxkTm9kZXMubGVuZ3RoLTE7dD49MDt0LS0pe2xldCBhPXRoaXMuZ2V0TGFzdFRleHROb2RlKGUuY2hpbGROb2Rlc1t0XSk7aWYoYSlyZXR1cm4gYX1yZXR1cm4gbnVsbH1nZXRDdXJzb3JQb3NpdGlvbihlLHQpe2xldCBhPWUucXVlcnlTZWxlY3RvcihgLmJsb2NrLmhlYWRpbmctJHt0aGlzLmxldmVsfWApO2lmKCFhKXJldHVybiBudWxsO2xldCBvPXQ/LmNvbXBvbmVudD8uY2xvc2VzdCgiZGVlcy1pbnB1dC13eXNpd3lnIik/LnNoYWRvd1Jvb3QsbD10Py5zaGFkb3dSb290LHA9W107byYmcC5wdXNoKG8pLGwmJnAucHVzaChsKTtsZXQgZD1TdC5nZXRTZWxlY3Rpb25JbmZvKC4uLnApO2lmKCFkfHwhU3QuY29udGFpbnNBY3Jvc3NTaGFkb3dET00oYSxkLnN0YXJ0Q29udGFpbmVyKSlyZXR1cm4gbnVsbDtsZXQgdT1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO3JldHVybiB1LnNlbGVjdE5vZGVDb250ZW50cyhhKSx1LnNldEVuZChkLnN0YXJ0Q29udGFpbmVyLGQuc3RhcnRPZmZzZXQpLHUudG9TdHJpbmcoKS5sZW5ndGh9Z2V0Q29udGVudChlLHQpe2xldCBhPWUucXVlcnlTZWxlY3RvcihgLmJsb2NrLmhlYWRpbmctJHt0aGlzLmxldmVsfWApO3JldHVybiBhJiZhLmlubmVySFRNTHx8IiJ9c2V0Q29udGVudChlLHQsYSl7bGV0IHI9ZS5xdWVyeVNlbGVjdG9yKGAuYmxvY2suaGVhZGluZy0ke3RoaXMubGV2ZWx9YCk7aWYoIXIpcmV0dXJuO2xldCBuPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT1yfHxlLnNoYWRvd1Jvb3Q/LmFjdGl2ZUVsZW1lbnQ9PT1yO3IuaW5uZXJIVE1MPXQsbiYmci5mb2N1cygpfXNldEN1cnNvclRvU3RhcnQoZSx0KXtsZXQgYT1lLnF1ZXJ5U2VsZWN0b3IoYC5ibG9jay5oZWFkaW5nLSR7dGhpcy5sZXZlbH1gKTthJiZDby5zZXRDdXJzb3JUb1N0YXJ0KGEpfXNldEN1cnNvclRvRW5kKGUsdCl7bGV0IGE9ZS5xdWVyeVNlbGVjdG9yKGAuYmxvY2suaGVhZGluZy0ke3RoaXMubGV2ZWx9YCk7YSYmQ28uc2V0Q3Vyc29yVG9FbmQoYSl9Zm9jdXMoZSx0KXtsZXQgYT1lLnF1ZXJ5U2VsZWN0b3IoYC5ibG9jay5oZWFkaW5nLSR7dGhpcy5sZXZlbH1gKTthJiYoYS5oYXNBdHRyaWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIpfHxhLnNldEF0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIiwidHJ1ZSIpLGEuZm9jdXMoKSxkb2N1bWVudC5hY3RpdmVFbGVtZW50IT09YSYmZS5zaGFkb3dSb290Py5hY3RpdmVFbGVtZW50IT09YSYmUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e2EuZm9jdXMoKX0pKX1mb2N1c1dpdGhDdXJzb3IoZSx0PSJlbmQiLGEpe2xldCByPWUucXVlcnlTZWxlY3RvcihgLmJsb2NrLmhlYWRpbmctJHt0aGlzLmxldmVsfWApO2lmKCFyKXJldHVybjtpZihyLmhhc0F0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIil8fHIuc2V0QXR0cmlidXRlKCJjb250ZW50ZWRpdGFibGUiLCJ0cnVlIiksdD09PSJlbmQiJiZyLnRleHRDb250ZW50JiZyLnRleHRDb250ZW50Lmxlbmd0aD4wKXtsZXQgbz13aW5kb3cuZ2V0U2VsZWN0aW9uKCk7aWYobyl7bGV0IGw9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKSxwPXRoaXMuZ2V0TGFzdFRleHROb2RlKHIpfHxyO3Aubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERT8obC5zZXRTdGFydChwLHAudGV4dENvbnRlbnQ/Lmxlbmd0aHx8MCksbC5zZXRFbmQocCxwLnRleHRDb250ZW50Py5sZW5ndGh8fDApKToobC5zZWxlY3ROb2RlQ29udGVudHMocCksbC5jb2xsYXBzZSghMSkpLG8ucmVtb3ZlQWxsUmFuZ2VzKCksby5hZGRSYW5nZShsKX19ci5mb2N1cygpO2xldCBuPWkoKCk9Pnt0PT09InN0YXJ0Ij90aGlzLnNldEN1cnNvclRvU3RhcnQoZSxhKTp0PT09ImVuZCImJighci50ZXh0Q29udGVudHx8ci50ZXh0Q29udGVudC5sZW5ndGg9PT0wKT90aGlzLnNldEN1cnNvclRvRW5kKGUsYSk6dHlwZW9mIHQ9PSJudW1iZXIiJiZTdC5zZXRDdXJzb3JQb3NpdGlvbihyLHQpfSwic2V0Q3Vyc29yIik7ZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PXJ8fGUuc2hhZG93Um9vdD8uYWN0aXZlRWxlbWVudD09PXI/bigpOlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pntkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09cnx8ZS5zaGFkb3dSb290Py5hY3RpdmVFbGVtZW50PT09cj9uKCk6c2V0VGltZW91dCgoKT0+eyhkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09cnx8ZS5zaGFkb3dSb290Py5hY3RpdmVFbGVtZW50PT09cikmJm4oKX0sMTApfSl9Z2V0U3BsaXRDb250ZW50KGUsdCl7bGV0IGE9ZS5xdWVyeVNlbGVjdG9yKGAuYmxvY2suaGVhZGluZy0ke3RoaXMubGV2ZWx9YCk7aWYoIWEpcmV0dXJuIG51bGw7bGV0IG89dD8uY29tcG9uZW50Py5jbG9zZXN0KCJkZWVzLWlucHV0LXd5c2l3eWciKT8uc2hhZG93Um9vdCxsPXQ/LnNoYWRvd1Jvb3QscD1bXTtvJiZwLnB1c2gobyksbCYmcC5wdXNoKGwpO2xldCBkPVN0LmdldFNlbGVjdGlvbkluZm8oLi4ucCk7aWYoIWQpe2lmKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb24hPT1udWxsKXtsZXQgTT1hLnRleHRDb250ZW50fHwiIix6PU1hdGgubWluKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb24sTS5sZW5ndGgpO3JldHVybntiZWZvcmU6TS5zdWJzdHJpbmcoMCx6KSxhZnRlcjpNLnN1YnN0cmluZyh6KX19cmV0dXJuIG51bGx9aWYoIVN0LmNvbnRhaW5zQWNyb3NzU2hhZG93RE9NKGEsZC5zdGFydENvbnRhaW5lcikpe2lmKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb24hPT1udWxsKXtsZXQgTT1hLnRleHRDb250ZW50fHwiIix6PU1hdGgubWluKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb24sTS5sZW5ndGgpO3JldHVybntiZWZvcmU6TS5zdWJzdHJpbmcoMCx6KSxhZnRlcjpNLnN1YnN0cmluZyh6KX19cmV0dXJuIG51bGx9bGV0IHU9dGhpcy5nZXRDdXJzb3JQb3NpdGlvbihlLHQpO2lmKHU9PT1udWxsfHx1PT09MClyZXR1cm57YmVmb3JlOiIiLGFmdGVyOmEuaW5uZXJIVE1MfTtsZXQgYz1kb2N1bWVudC5jcmVhdGVSYW5nZSgpLGI9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtjLnNldFN0YXJ0KGEsMCksYy5zZXRFbmQoZC5zdGFydENvbnRhaW5lcixkLnN0YXJ0T2Zmc2V0KSxiLnNldFN0YXJ0KGQuc3RhcnRDb250YWluZXIsZC5zdGFydE9mZnNldCksYi5zZXRFbmQoYSxhLmNoaWxkTm9kZXMubGVuZ3RoKTtsZXQgdj1jLmNsb25lQ29udGVudHMoKSx4PWIuY2xvbmVDb250ZW50cygpLG09ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7bS5hcHBlbmRDaGlsZCh2KTtsZXQgZj1tLmlubmVySFRNTDttLmlubmVySFRNTD0iIixtLmFwcGVuZENoaWxkKHgpO2xldCB5PW0uaW5uZXJIVE1MO3JldHVybntiZWZvcmU6ZixhZnRlcjp5fX19fSk7dmFyIElaLHEwYT1nKCgpPT57WWwoKTtwZSgpO2l1KCk7RGQoKTtJWj1jbGFzcyBleHRlbmRzIHBpe3N0YXRpY3tpKHRoaXMsIlF1b3RlQmxvY2tIYW5kbGVyIil9dHlwZT0icXVvdGUiO2xhc3RLbm93bkN1cnNvclBvc2l0aW9uPTA7bGFzdFNlbGVjdGVkVGV4dD0iIjtzZWxlY3Rpb25IYW5kbGVyPW51bGw7cmVuZGVyKGUsdCl7bGV0IGE9dD8iIHNlbGVjdGVkIjoiIixyPXRoaXMuZ2V0UGxhY2Vob2xkZXIoKTtyZXR1cm5gCiAgICAgIDxkaXYKICAgICAgICBjbGFzcz0iYmxvY2sgcXVvdGUke2F9IgogICAgICAgIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIKICAgICAgICBkYXRhLXBsYWNlaG9sZGVyPSIke3J9IgogICAgICAgIGRhdGEtYmxvY2staWQ9IiR7ZS5pZH0iCiAgICAgICAgZGF0YS1ibG9jay10eXBlPSIke2UudHlwZX0iCiAgICAgID48L2Rpdj4KICAgIGB9c2V0dXAoZSx0LGEpe2xldCByPWUucXVlcnlTZWxlY3RvcigiLmJsb2NrLnF1b3RlIik7aWYoIXIpe2NvbnNvbGUuZXJyb3IoIlF1b3RlQmxvY2tIYW5kbGVyLnNldHVwOiBObyBxdW90ZSBibG9jayBlbGVtZW50IGZvdW5kIik7cmV0dXJufXQuY29udGVudCYmIXIuaW5uZXJIVE1MJiYoci5pbm5lckhUTUw9dC5jb250ZW50KSxyLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IixuPT57YS5vbklucHV0KG4pO2xldCBvPXRoaXMuZ2V0Q3Vyc29yUG9zaXRpb24oZSk7byE9PW51bGwmJih0aGlzLmxhc3RLbm93bkN1cnNvclBvc2l0aW9uPW8pfSksci5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixuPT57bGV0IG89dGhpcy5nZXRDdXJzb3JQb3NpdGlvbihlKTtvIT09bnVsbCYmKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb249byksYS5vbktleURvd24obil9KSxyLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwoKT0+e2Eub25Gb2N1cygpfSksci5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwoKT0+e2Eub25CbHVyKCl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoImNvbXBvc2l0aW9uc3RhcnQiLCgpPT57YS5vbkNvbXBvc2l0aW9uU3RhcnQoKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigiY29tcG9zaXRpb25lbmQiLCgpPT57YS5vbkNvbXBvc2l0aW9uRW5kKCl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLG49PntsZXQgbz10aGlzLmdldEN1cnNvclBvc2l0aW9uKGUpO28hPT1udWxsJiYodGhpcy5sYXN0S25vd25DdXJzb3JQb3NpdGlvbj1vKSxhLm9uTW91c2VVcD8uKG4pfSksci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsbj0+e3NldFRpbWVvdXQoKCk9PntsZXQgbz10aGlzLmdldEN1cnNvclBvc2l0aW9uKGUpO28hPT1udWxsJiYodGhpcy5sYXN0S25vd25DdXJzb3JQb3NpdGlvbj1vKX0sMCl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIixuPT57bGV0IG89dGhpcy5nZXRDdXJzb3JQb3NpdGlvbihlKTtvIT09bnVsbCYmKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb249byl9KSx0aGlzLnNldHVwU2VsZWN0aW9uSGFuZGxlcihlLHIsdCl9c2V0dXBTZWxlY3Rpb25IYW5kbGVyKGUsdCxhKXtsZXQgcj1pKCgpPT57bGV0IG89d2luZG93LmdldFNlbGVjdGlvbigpO2lmKCFvfHxvLnJhbmdlQ291bnQ9PT0wKXJldHVybjtsZXQgbD1vLnRvU3RyaW5nKCk7aWYobC5sZW5ndGg9PT0wKXt0aGlzLmxhc3RTZWxlY3RlZFRleHQmJih0aGlzLmxhc3RTZWxlY3RlZFRleHQ9IiIsdGhpcy5kaXNwYXRjaFNlbGVjdGlvbkV2ZW50KGUse3RleHQ6IiIsYmxvY2tJZDphLmlkLGhhc1NlbGVjdGlvbjohMX0pKTtyZXR1cm59bGV0IHA9dC5nZXRSb290Tm9kZSgpLmhvc3QsdT1wPy5jbG9zZXN0KCJkZWVzLWlucHV0LXd5c2l3eWciKT8uc2hhZG93Um9vdCxjPXA/LnNoYWRvd1Jvb3QsYj1bXTt1JiZiLnB1c2godSksYyYmYi5wdXNoKGMpO2xldCB2PVN0LmdldFNlbGVjdGlvbkluZm8oLi4uYik7aWYoIXYpcmV0dXJuO2xldCB4PVN0LmNvbnRhaW5zQWNyb3NzU2hhZG93RE9NKHQsdi5zdGFydENvbnRhaW5lciksbT1TdC5jb250YWluc0Fjcm9zc1NoYWRvd0RPTSh0LHYuZW5kQ29udGFpbmVyKTtpZih4fHxtKXtpZihsIT09dGhpcy5sYXN0U2VsZWN0ZWRUZXh0KXt0aGlzLmxhc3RTZWxlY3RlZFRleHQ9bDtsZXQgZj1TdC5jcmVhdGVSYW5nZUZyb21JbmZvKHYpLHk9Zi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0aGlzLmRpc3BhdGNoU2VsZWN0aW9uRXZlbnQoZSx7dGV4dDpsLnRyaW0oKSxibG9ja0lkOmEuaWQscmFuZ2U6ZixyZWN0OnksaGFzU2VsZWN0aW9uOiEwfSl9fWVsc2UgdGhpcy5sYXN0U2VsZWN0ZWRUZXh0JiYodGhpcy5sYXN0U2VsZWN0ZWRUZXh0PSIiLHRoaXMuZGlzcGF0Y2hTZWxlY3Rpb25FdmVudChlLHt0ZXh0OiIiLGJsb2NrSWQ6YS5pZCxoYXNTZWxlY3Rpb246ITF9KSl9LCJjaGVja1NlbGVjdGlvbiIpO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdGlvbmNoYW5nZSIsciksdGhpcy5zZWxlY3Rpb25IYW5kbGVyPXI7bGV0IG49dC5nZXRSb290Tm9kZSgpLmhvc3Q7aWYobil7bGV0IG89bi5kaXNjb25uZWN0ZWRDYWxsYmFjayxsPXRoaXM7bi5kaXNjb25uZWN0ZWRDYWxsYmFjaz1hc3luYyBmdW5jdGlvbigpe2wuc2VsZWN0aW9uSGFuZGxlciYmKGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlbGVjdGlvbmNoYW5nZSIsbC5zZWxlY3Rpb25IYW5kbGVyKSxsLnNlbGVjdGlvbkhhbmRsZXI9bnVsbCksbyYmYXdhaXQgby5jYWxsKG4pfX19ZGlzcGF0Y2hTZWxlY3Rpb25FdmVudChlLHQpe2xldCBhPW5ldyBDdXN0b21FdmVudCgiYmxvY2stdGV4dC1zZWxlY3RlZCIse2RldGFpbDp0LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KTtlLmRpc3BhdGNoRXZlbnQoYSl9Z2V0U3R5bGVzKCl7cmV0dXJuYAogICAgICAvKiBRdW90ZSBzcGVjaWZpYyBzdHlsZXMgKi8KICAgICAgLmJsb2NrLnF1b3RlIHsKICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkICR7aC5iZFRoZW1lKCIjMDA2NmNjIiwiIzRkOTRmZiIpfTsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNTU1IiwiI2IwYjBiMCIpfTsKICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICBtYXJnaW46IDE2cHggMDsKICAgICAgfQogICAgYH1nZXRQbGFjZWhvbGRlcigpe3JldHVybiJBZGQgYSBxdW90ZS4uLiJ9Z2V0Q3Vyc29yUG9zaXRpb24oZSx0KXtsZXQgYT1lLnF1ZXJ5U2VsZWN0b3IoIi5ibG9jay5xdW90ZSIpO2lmKCFhKXJldHVybiBudWxsO2xldCBvPXQ/LmNvbXBvbmVudD8uY2xvc2VzdCgiZGVlcy1pbnB1dC13eXNpd3lnIik/LnNoYWRvd1Jvb3QsbD10Py5zaGFkb3dSb290LHA9W107byYmcC5wdXNoKG8pLGwmJnAucHVzaChsKTtsZXQgZD1TdC5nZXRTZWxlY3Rpb25JbmZvKC4uLnApO2lmKCFkfHwhU3QuY29udGFpbnNBY3Jvc3NTaGFkb3dET00oYSxkLnN0YXJ0Q29udGFpbmVyKSlyZXR1cm4gbnVsbDtsZXQgdT1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO3JldHVybiB1LnNlbGVjdE5vZGVDb250ZW50cyhhKSx1LnNldEVuZChkLnN0YXJ0Q29udGFpbmVyLGQuc3RhcnRPZmZzZXQpLHUudG9TdHJpbmcoKS5sZW5ndGh9Z2V0Q29udGVudChlLHQpe2xldCBhPWUucXVlcnlTZWxlY3RvcigiLmJsb2NrLnF1b3RlIik7cmV0dXJuIGEmJmEuaW5uZXJIVE1MfHwiIn1zZXRDb250ZW50KGUsdCxhKXtsZXQgcj1lLnF1ZXJ5U2VsZWN0b3IoIi5ibG9jay5xdW90ZSIpO2lmKCFyKXJldHVybjtsZXQgbj1kb2N1bWVudC5hY3RpdmVFbGVtZW50PT09cnx8ZS5zaGFkb3dSb290Py5hY3RpdmVFbGVtZW50PT09cjtyLmlubmVySFRNTD10LG4mJnIuZm9jdXMoKX1zZXRDdXJzb3JUb1N0YXJ0KGUsdCl7bGV0IGE9ZS5xdWVyeVNlbGVjdG9yKCIuYmxvY2sucXVvdGUiKTthJiZDby5zZXRDdXJzb3JUb1N0YXJ0KGEpfXNldEN1cnNvclRvRW5kKGUsdCl7bGV0IGE9ZS5xdWVyeVNlbGVjdG9yKCIuYmxvY2sucXVvdGUiKTthJiZDby5zZXRDdXJzb3JUb0VuZChhKX1mb2N1cyhlLHQpe2xldCBhPWUucXVlcnlTZWxlY3RvcigiLmJsb2NrLnF1b3RlIik7YSYmKGEuaGFzQXR0cmlidXRlKCJjb250ZW50ZWRpdGFibGUiKXx8YS5zZXRBdHRyaWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIsInRydWUiKSxhLmZvY3VzKCksZG9jdW1lbnQuYWN0aXZlRWxlbWVudCE9PWEmJmUuc2hhZG93Um9vdD8uYWN0aXZlRWxlbWVudCE9PWEmJlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnthLmZvY3VzKCl9KSl9Zm9jdXNXaXRoQ3Vyc29yKGUsdD0iZW5kIixhKXtsZXQgcj1lLnF1ZXJ5U2VsZWN0b3IoIi5ibG9jay5xdW90ZSIpO2lmKCFyKXJldHVybjtyLmhhc0F0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIil8fHIuc2V0QXR0cmlidXRlKCJjb250ZW50ZWRpdGFibGUiLCJ0cnVlIiksci5mb2N1cygpO2xldCBuPWkoKCk9Pnt0PT09InN0YXJ0Ij90aGlzLnNldEN1cnNvclRvU3RhcnQoZSxhKTp0PT09ImVuZCI/dGhpcy5zZXRDdXJzb3JUb0VuZChlLGEpOnR5cGVvZiB0PT0ibnVtYmVyIiYmU3Quc2V0Q3Vyc29yUG9zaXRpb24ocix0KX0sInNldEN1cnNvciIpO2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT1yfHxlLnNoYWRvd1Jvb3Q/LmFjdGl2ZUVsZW1lbnQ9PT1yP24oKTpQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT57KGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT1yfHxlLnNoYWRvd1Jvb3Q/LmFjdGl2ZUVsZW1lbnQ9PT1yKSYmbigpfSl9Z2V0U3BsaXRDb250ZW50KGUsdCl7bGV0IGE9ZS5xdWVyeVNlbGVjdG9yKCIuYmxvY2sucXVvdGUiKTtpZighYSlyZXR1cm4gbnVsbDtsZXQgbz10Py5jb21wb25lbnQ/LmNsb3Nlc3QoImRlZXMtaW5wdXQtd3lzaXd5ZyIpPy5zaGFkb3dSb290LGw9dD8uc2hhZG93Um9vdCxwPVtdO28mJnAucHVzaChvKSxsJiZwLnB1c2gobCk7bGV0IGQ9U3QuZ2V0U2VsZWN0aW9uSW5mbyguLi5wKTtpZighZCl7aWYodGhpcy5sYXN0S25vd25DdXJzb3JQb3NpdGlvbiE9PW51bGwpe2xldCBNPWEudGV4dENvbnRlbnR8fCIiLHo9TWF0aC5taW4odGhpcy5sYXN0S25vd25DdXJzb3JQb3NpdGlvbixNLmxlbmd0aCk7cmV0dXJue2JlZm9yZTpNLnN1YnN0cmluZygwLHopLGFmdGVyOk0uc3Vic3RyaW5nKHopfX1yZXR1cm4gbnVsbH1pZighU3QuY29udGFpbnNBY3Jvc3NTaGFkb3dET00oYSxkLnN0YXJ0Q29udGFpbmVyKSl7aWYodGhpcy5sYXN0S25vd25DdXJzb3JQb3NpdGlvbiE9PW51bGwpe2xldCBNPWEudGV4dENvbnRlbnR8fCIiLHo9TWF0aC5taW4odGhpcy5sYXN0S25vd25DdXJzb3JQb3NpdGlvbixNLmxlbmd0aCk7cmV0dXJue2JlZm9yZTpNLnN1YnN0cmluZygwLHopLGFmdGVyOk0uc3Vic3RyaW5nKHopfX1yZXR1cm4gbnVsbH1sZXQgdT10aGlzLmdldEN1cnNvclBvc2l0aW9uKGUsdCk7aWYodT09PW51bGx8fHU9PT0wKXJldHVybntiZWZvcmU6IiIsYWZ0ZXI6YS5pbm5lckhUTUx9O2xldCBjPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCksYj1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO2Muc2V0U3RhcnQoYSwwKSxjLnNldEVuZChkLnN0YXJ0Q29udGFpbmVyLGQuc3RhcnRPZmZzZXQpLGIuc2V0U3RhcnQoZC5zdGFydENvbnRhaW5lcixkLnN0YXJ0T2Zmc2V0KSxiLnNldEVuZChhLGEuY2hpbGROb2Rlcy5sZW5ndGgpO2xldCB2PWMuY2xvbmVDb250ZW50cygpLHg9Yi5jbG9uZUNvbnRlbnRzKCksbT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTttLmFwcGVuZENoaWxkKHYpO2xldCBmPW0uaW5uZXJIVE1MO20uaW5uZXJIVE1MPSIiLG0uYXBwZW5kQ2hpbGQoeCk7bGV0IHk9bS5pbm5lckhUTUw7cmV0dXJue2JlZm9yZTpmLGFmdGVyOnl9fX19KTtmdW5jdGlvbiBvbihzKXt0aGlzLmNvbnRlbnQ9c312YXIgZHR0LGowYT1nKCgpPT57aShvbiwiT3JkZXJlZE1hcCIpLG9uLnByb3RvdHlwZT17Y29uc3RydWN0b3I6b24sZmluZDppKGZ1bmN0aW9uKHMpe2Zvcih2YXIgZT0wO2U8dGhpcy5jb250ZW50Lmxlbmd0aDtlKz0yKWlmKHRoaXMuY29udGVudFtlXT09PXMpcmV0dXJuIGU7cmV0dXJuLTF9LCJmaW5kIiksZ2V0OmkoZnVuY3Rpb24ocyl7dmFyIGU9dGhpcy5maW5kKHMpO3JldHVybiBlPT0tMT92b2lkIDA6dGhpcy5jb250ZW50W2UrMV19LCJnZXQiKSx1cGRhdGU6aShmdW5jdGlvbihzLGUsdCl7dmFyIGE9dCYmdCE9cz90aGlzLnJlbW92ZSh0KTp0aGlzLHI9YS5maW5kKHMpLG49YS5jb250ZW50LnNsaWNlKCk7cmV0dXJuIHI9PS0xP24ucHVzaCh0fHxzLGUpOihuW3IrMV09ZSx0JiYobltyXT10KSksbmV3IG9uKG4pfSwidXBkYXRlIikscmVtb3ZlOmkoZnVuY3Rpb24ocyl7dmFyIGU9dGhpcy5maW5kKHMpO2lmKGU9PS0xKXJldHVybiB0aGlzO3ZhciB0PXRoaXMuY29udGVudC5zbGljZSgpO3JldHVybiB0LnNwbGljZShlLDIpLG5ldyBvbih0KX0sInJlbW92ZSIpLGFkZFRvU3RhcnQ6aShmdW5jdGlvbihzLGUpe3JldHVybiBuZXcgb24oW3MsZV0uY29uY2F0KHRoaXMucmVtb3ZlKHMpLmNvbnRlbnQpKX0sImFkZFRvU3RhcnQiKSxhZGRUb0VuZDppKGZ1bmN0aW9uKHMsZSl7dmFyIHQ9dGhpcy5yZW1vdmUocykuY29udGVudC5zbGljZSgpO3JldHVybiB0LnB1c2gocyxlKSxuZXcgb24odCl9LCJhZGRUb0VuZCIpLGFkZEJlZm9yZTppKGZ1bmN0aW9uKHMsZSx0KXt2YXIgYT10aGlzLnJlbW92ZShlKSxyPWEuY29udGVudC5zbGljZSgpLG49YS5maW5kKHMpO3JldHVybiByLnNwbGljZShuPT0tMT9yLmxlbmd0aDpuLDAsZSx0KSxuZXcgb24ocil9LCJhZGRCZWZvcmUiKSxmb3JFYWNoOmkoZnVuY3Rpb24ocyl7Zm9yKHZhciBlPTA7ZTx0aGlzLmNvbnRlbnQubGVuZ3RoO2UrPTIpcyh0aGlzLmNvbnRlbnRbZV0sdGhpcy5jb250ZW50W2UrMV0pfSwiZm9yRWFjaCIpLHByZXBlbmQ6aShmdW5jdGlvbihzKXtyZXR1cm4gcz1vbi5mcm9tKHMpLHMuc2l6ZT9uZXcgb24ocy5jb250ZW50LmNvbmNhdCh0aGlzLnN1YnRyYWN0KHMpLmNvbnRlbnQpKTp0aGlzfSwicHJlcGVuZCIpLGFwcGVuZDppKGZ1bmN0aW9uKHMpe3JldHVybiBzPW9uLmZyb20ocykscy5zaXplP25ldyBvbih0aGlzLnN1YnRyYWN0KHMpLmNvbnRlbnQuY29uY2F0KHMuY29udGVudCkpOnRoaXN9LCJhcHBlbmQiKSxzdWJ0cmFjdDppKGZ1bmN0aW9uKHMpe3ZhciBlPXRoaXM7cz1vbi5mcm9tKHMpO2Zvcih2YXIgdD0wO3Q8cy5jb250ZW50Lmxlbmd0aDt0Kz0yKWU9ZS5yZW1vdmUocy5jb250ZW50W3RdKTtyZXR1cm4gZX0sInN1YnRyYWN0IiksdG9PYmplY3Q6aShmdW5jdGlvbigpe3ZhciBzPXt9O3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rpb24oZSx0KXtzW2VdPXR9KSxzfSwidG9PYmplY3QiKSxnZXQgc2l6ZSgpe3JldHVybiB0aGlzLmNvbnRlbnQubGVuZ3RoPj4xfX0sb24uZnJvbT1mdW5jdGlvbihzKXtpZihzIGluc3RhbmNlb2Ygb24pcmV0dXJuIHM7dmFyIGU9W107aWYocylmb3IodmFyIHQgaW4gcyllLnB1c2godCxzW3RdKTtyZXR1cm4gbmV3IG9uKGUpfTtkdHQ9b259KTtmdW5jdGlvbiBWMGEocyxlLHQpe2ZvcihsZXQgYT0wOzthKyspe2lmKGE9PXMuY2hpbGRDb3VudHx8YT09ZS5jaGlsZENvdW50KXJldHVybiBzLmNoaWxkQ291bnQ9PWUuY2hpbGRDb3VudD9udWxsOnQ7bGV0IHI9cy5jaGlsZChhKSxuPWUuY2hpbGQoYSk7aWYocj09bil7dCs9ci5ub2RlU2l6ZTtjb250aW51ZX1pZighci5zYW1lTWFya3VwKG4pKXJldHVybiB0O2lmKHIuaXNUZXh0JiZyLnRleHQhPW4udGV4dCl7Zm9yKGxldCBvPTA7ci50ZXh0W29dPT1uLnRleHRbb107bysrKXQrKztyZXR1cm4gdH1pZihyLmNvbnRlbnQuc2l6ZXx8bi5jb250ZW50LnNpemUpe2xldCBvPVYwYShyLmNvbnRlbnQsbi5jb250ZW50LHQrMSk7aWYobyE9bnVsbClyZXR1cm4gb310Kz1yLm5vZGVTaXplfX1mdW5jdGlvbiBVMGEocyxlLHQsYSl7Zm9yKGxldCByPXMuY2hpbGRDb3VudCxuPWUuY2hpbGRDb3VudDs7KXtpZihyPT0wfHxuPT0wKXJldHVybiByPT1uP251bGw6e2E6dCxiOmF9O2xldCBvPXMuY2hpbGQoLS1yKSxsPWUuY2hpbGQoLS1uKSxwPW8ubm9kZVNpemU7aWYobz09bCl7dC09cCxhLT1wO2NvbnRpbnVlfWlmKCFvLnNhbWVNYXJrdXAobCkpcmV0dXJue2E6dCxiOmF9O2lmKG8uaXNUZXh0JiZvLnRleHQhPWwudGV4dCl7bGV0IGQ9MCx1PU1hdGgubWluKG8udGV4dC5sZW5ndGgsbC50ZXh0Lmxlbmd0aCk7Zm9yKDtkPHUmJm8udGV4dFtvLnRleHQubGVuZ3RoLWQtMV09PWwudGV4dFtsLnRleHQubGVuZ3RoLWQtMV07KWQrKyx0LS0sYS0tO3JldHVybnthOnQsYjphfX1pZihvLmNvbnRlbnQuc2l6ZXx8bC5jb250ZW50LnNpemUpe2xldCBkPVUwYShvLmNvbnRlbnQsbC5jb250ZW50LHQtMSxhLTEpO2lmKGQpcmV0dXJuIGR9dC09cCxhLT1wfX1mdW5jdGlvbiBSbmUocyxlKXtyZXR1cm4gdXR0LmluZGV4PXMsdXR0Lm9mZnNldD1lLHV0dH1mdW5jdGlvbiBPbmUocyxlKXtpZihzPT09ZSlyZXR1cm4hMDtpZighKHMmJnR5cGVvZiBzPT0ib2JqZWN0Iil8fCEoZSYmdHlwZW9mIGU9PSJvYmplY3QiKSlyZXR1cm4hMTtsZXQgdD1BcnJheS5pc0FycmF5KHMpO2lmKEFycmF5LmlzQXJyYXkoZSkhPXQpcmV0dXJuITE7aWYodCl7aWYocy5sZW5ndGghPWUubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgYT0wO2E8cy5sZW5ndGg7YSsrKWlmKCFPbmUoc1thXSxlW2FdKSlyZXR1cm4hMX1lbHNle2ZvcihsZXQgYSBpbiBzKWlmKCEoYSBpbiBlKXx8IU9uZShzW2FdLGVbYV0pKXJldHVybiExO2ZvcihsZXQgYSBpbiBlKWlmKCEoYSBpbiBzKSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBXMGEocyxlLHQpe2xldHtpbmRleDphLG9mZnNldDpyfT1zLmZpbmRJbmRleChlKSxuPXMubWF5YmVDaGlsZChhKSx7aW5kZXg6byxvZmZzZXQ6bH09cy5maW5kSW5kZXgodCk7aWYocj09ZXx8bi5pc1RleHQpe2lmKGwhPXQmJiFzLmNoaWxkKG8pLmlzVGV4dCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiUmVtb3Zpbmcgbm9uLWZsYXQgcmFuZ2UiKTtyZXR1cm4gcy5jdXQoMCxlKS5hcHBlbmQocy5jdXQodCkpfWlmKGEhPW8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlJlbW92aW5nIG5vbi1mbGF0IHJhbmdlIik7cmV0dXJuIHMucmVwbGFjZUNoaWxkKGEsbi5jb3B5KFcwYShuLmNvbnRlbnQsZS1yLTEsdC1yLTEpKSl9ZnVuY3Rpb24gRzBhKHMsZSx0LGEpe2xldHtpbmRleDpyLG9mZnNldDpufT1zLmZpbmRJbmRleChlKSxvPXMubWF5YmVDaGlsZChyKTtpZihuPT1lfHxvLmlzVGV4dClyZXR1cm4gYSYmIWEuY2FuUmVwbGFjZShyLHIsdCk/bnVsbDpzLmN1dCgwLGUpLmFwcGVuZCh0KS5hcHBlbmQocy5jdXQoZSkpO2xldCBsPUcwYShvLmNvbnRlbnQsZS1uLTEsdCxvKTtyZXR1cm4gbCYmcy5yZXBsYWNlQ2hpbGQocixvLmNvcHkobCkpfWZ1bmN0aW9uIGpXYShzLGUsdCl7aWYodC5vcGVuU3RhcnQ+cy5kZXB0aCl0aHJvdyBuZXcga2goIkluc2VydGVkIGNvbnRlbnQgZGVlcGVyIHRoYW4gaW5zZXJ0aW9uIHBvc2l0aW9uIik7aWYocy5kZXB0aC10Lm9wZW5TdGFydCE9ZS5kZXB0aC10Lm9wZW5FbmQpdGhyb3cgbmV3IGtoKCJJbmNvbnNpc3RlbnQgb3BlbiBkZXB0aHMiKTtyZXR1cm4gSzBhKHMsZSx0LDApfWZ1bmN0aW9uIEswYShzLGUsdCxhKXtsZXQgcj1zLmluZGV4KGEpLG49cy5ub2RlKGEpO2lmKHI9PWUuaW5kZXgoYSkmJmE8cy5kZXB0aC10Lm9wZW5TdGFydCl7bGV0IG89SzBhKHMsZSx0LGErMSk7cmV0dXJuIG4uY29weShuLmNvbnRlbnQucmVwbGFjZUNoaWxkKHIsbykpfWVsc2UgaWYodC5jb250ZW50LnNpemUpaWYoIXQub3BlblN0YXJ0JiYhdC5vcGVuRW5kJiZzLmRlcHRoPT1hJiZlLmRlcHRoPT1hKXtsZXQgbz1zLnBhcmVudCxsPW8uY29udGVudDtyZXR1cm4gVjgobyxsLmN1dCgwLHMucGFyZW50T2Zmc2V0KS5hcHBlbmQodC5jb250ZW50KS5hcHBlbmQobC5jdXQoZS5wYXJlbnRPZmZzZXQpKSl9ZWxzZXtsZXR7c3RhcnQ6byxlbmQ6bH09VldhKHQscyk7cmV0dXJuIFY4KG4sWjBhKHMsbyxsLGUsYSkpfWVsc2UgcmV0dXJuIFY4KG4sRm5lKHMsZSxhKSl9ZnVuY3Rpb24gWTBhKHMsZSl7aWYoIWUudHlwZS5jb21wYXRpYmxlQ29udGVudChzLnR5cGUpKXRocm93IG5ldyBraCgiQ2Fubm90IGpvaW4gIitlLnR5cGUubmFtZSsiIG9udG8gIitzLnR5cGUubmFtZSl9ZnVuY3Rpb24gcHR0KHMsZSx0KXtsZXQgYT1zLm5vZGUodCk7cmV0dXJuIFkwYShhLGUubm9kZSh0KSksYX1mdW5jdGlvbiBqOChzLGUpe2xldCB0PWUubGVuZ3RoLTE7dD49MCYmcy5pc1RleHQmJnMuc2FtZU1hcmt1cChlW3RdKT9lW3RdPXMud2l0aFRleHQoZVt0XS50ZXh0K3MudGV4dCk6ZS5wdXNoKHMpfWZ1bmN0aW9uIEFaKHMsZSx0LGEpe2xldCByPShlfHxzKS5ub2RlKHQpLG49MCxvPWU/ZS5pbmRleCh0KTpyLmNoaWxkQ291bnQ7cyYmKG49cy5pbmRleCh0KSxzLmRlcHRoPnQ/bisrOnMudGV4dE9mZnNldCYmKGo4KHMubm9kZUFmdGVyLGEpLG4rKykpO2ZvcihsZXQgbD1uO2w8bztsKyspajgoci5jaGlsZChsKSxhKTtlJiZlLmRlcHRoPT10JiZlLnRleHRPZmZzZXQmJmo4KGUubm9kZUJlZm9yZSxhKX1mdW5jdGlvbiBWOChzLGUpe3JldHVybiBzLnR5cGUuY2hlY2tDb250ZW50KGUpLHMuY29weShlKX1mdW5jdGlvbiBaMGEocyxlLHQsYSxyKXtsZXQgbj1zLmRlcHRoPnImJnB0dChzLGUscisxKSxvPWEuZGVwdGg+ciYmcHR0KHQsYSxyKzEpLGw9W107cmV0dXJuIEFaKG51bGwscyxyLGwpLG4mJm8mJmUuaW5kZXgocik9PXQuaW5kZXgocik/KFkwYShuLG8pLGo4KFY4KG4sWjBhKHMsZSx0LGEscisxKSksbCkpOihuJiZqOChWOChuLEZuZShzLGUscisxKSksbCksQVooZSx0LHIsbCksbyYmajgoVjgobyxGbmUodCxhLHIrMSkpLGwpKSxBWihhLG51bGwscixsKSxuZXcgcnQobCl9ZnVuY3Rpb24gRm5lKHMsZSx0KXtsZXQgYT1bXTtpZihBWihudWxsLHMsdCxhKSxzLmRlcHRoPnQpe2xldCByPXB0dChzLGUsdCsxKTtqOChWOChyLEZuZShzLGUsdCsxKSksYSl9cmV0dXJuIEFaKGUsbnVsbCx0LGEpLG5ldyBydChhKX1mdW5jdGlvbiBWV2EocyxlKXtsZXQgdD1lLmRlcHRoLXMub3BlblN0YXJ0LHI9ZS5ub2RlKHQpLmNvcHkocy5jb250ZW50KTtmb3IobGV0IG49dC0xO24+PTA7bi0tKXI9ZS5ub2RlKG4pLmNvcHkocnQuZnJvbShyKSk7cmV0dXJue3N0YXJ0OnIucmVzb2x2ZU5vQ2FjaGUocy5vcGVuU3RhcnQrdCksZW5kOnIucmVzb2x2ZU5vQ2FjaGUoci5jb250ZW50LnNpemUtcy5vcGVuRW5kLXQpfX1mdW5jdGlvbiBRMGEocyxlKXtmb3IobGV0IHQ9cy5sZW5ndGgtMTt0Pj0wO3QtLSllPXNbdF0udHlwZS5uYW1lKyIoIitlKyIpIjtyZXR1cm4gZX1mdW5jdGlvbiBKMGEocyl7bGV0IGU9W107ZG8gZS5wdXNoKEdXYShzKSk7d2hpbGUocy5lYXQoInwiKSk7cmV0dXJuIGUubGVuZ3RoPT0xP2VbMF06e3R5cGU6ImNob2ljZSIsZXhwcnM6ZX19ZnVuY3Rpb24gR1dhKHMpe2xldCBlPVtdO2RvIGUucHVzaChLV2EocykpO3doaWxlKHMubmV4dCYmcy5uZXh0IT0iKSImJnMubmV4dCE9InwiKTtyZXR1cm4gZS5sZW5ndGg9PTE/ZVswXTp7dHlwZToic2VxIixleHByczplfX1mdW5jdGlvbiBLV2Eocyl7bGV0IGU9WFdhKHMpO2Zvcig7OylpZihzLmVhdCgiKyIpKWU9e3R5cGU6InBsdXMiLGV4cHI6ZX07ZWxzZSBpZihzLmVhdCgiKiIpKWU9e3R5cGU6InN0YXIiLGV4cHI6ZX07ZWxzZSBpZihzLmVhdCgiPyIpKWU9e3R5cGU6Im9wdCIsZXhwcjplfTtlbHNlIGlmKHMuZWF0KCJ7IikpZT1ZV2EocyxlKTtlbHNlIGJyZWFrO3JldHVybiBlfWZ1bmN0aW9uIGV1YShzKXsvXEQvLnRlc3Qocy5uZXh0KSYmcy5lcnIoIkV4cGVjdGVkIG51bWJlciwgZ290ICciK3MubmV4dCsiJyIpO2xldCBlPU51bWJlcihzLm5leHQpO3JldHVybiBzLnBvcysrLGV9ZnVuY3Rpb24gWVdhKHMsZSl7bGV0IHQ9ZXVhKHMpLGE9dDtyZXR1cm4gcy5lYXQoIiwiKSYmKHMubmV4dCE9In0iP2E9ZXVhKHMpOmE9LTEpLHMuZWF0KCJ9Iil8fHMuZXJyKCJVbmNsb3NlZCBicmFjZWQgcmFuZ2UiKSx7dHlwZToicmFuZ2UiLG1pbjp0LG1heDphLGV4cHI6ZX19ZnVuY3Rpb24gWldhKHMsZSl7bGV0IHQ9cy5ub2RlVHlwZXMsYT10W2VdO2lmKGEpcmV0dXJuW2FdO2xldCByPVtdO2ZvcihsZXQgbiBpbiB0KXtsZXQgbz10W25dO28uaXNJbkdyb3VwKGUpJiZyLnB1c2gobyl9cmV0dXJuIHIubGVuZ3RoPT0wJiZzLmVycigiTm8gbm9kZSB0eXBlIG9yIGdyb3VwICciK2UrIicgZm91bmQiKSxyfWZ1bmN0aW9uIFhXYShzKXtpZihzLmVhdCgiKCIpKXtsZXQgZT1KMGEocyk7cmV0dXJuIHMuZWF0KCIpIil8fHMuZXJyKCJNaXNzaW5nIGNsb3NpbmcgcGFyZW4iKSxlfWVsc2UgaWYoL1xXLy50ZXN0KHMubmV4dCkpcy5lcnIoIlVuZXhwZWN0ZWQgdG9rZW4gJyIrcy5uZXh0KyInIik7ZWxzZXtsZXQgZT1aV2EocyxzLm5leHQpLm1hcCh0PT4ocy5pbmxpbmU9PW51bGw/cy5pbmxpbmU9dC5pc0lubGluZTpzLmlubGluZSE9dC5pc0lubGluZSYmcy5lcnIoIk1peGluZyBpbmxpbmUgYW5kIGJsb2NrIGNvbnRlbnQiKSx7dHlwZToibmFtZSIsdmFsdWU6dH0pKTtyZXR1cm4gcy5wb3MrKyxlLmxlbmd0aD09MT9lWzBdOnt0eXBlOiJjaG9pY2UiLGV4cHJzOmV9fX1mdW5jdGlvbiBRV2Eocyl7bGV0IGU9W1tdXTtyZXR1cm4gcihuKHMsMCksdCgpKSxlO2Z1bmN0aW9uIHQoKXtyZXR1cm4gZS5wdXNoKFtdKS0xfWkodCwibm9kZSIpO2Z1bmN0aW9uIGEobyxsLHApe2xldCBkPXt0ZXJtOnAsdG86bH07cmV0dXJuIGVbb10ucHVzaChkKSxkfWkoYSwiZWRnZSIpO2Z1bmN0aW9uIHIobyxsKXtvLmZvckVhY2gocD0+cC50bz1sKX1pKHIsImNvbm5lY3QiKTtmdW5jdGlvbiBuKG8sbCl7aWYoby50eXBlPT0iY2hvaWNlIilyZXR1cm4gby5leHBycy5yZWR1Y2UoKHAsZCk9PnAuY29uY2F0KG4oZCxsKSksW10pO2lmKG8udHlwZT09InNlcSIpZm9yKGxldCBwPTA7O3ArKyl7bGV0IGQ9bihvLmV4cHJzW3BdLGwpO2lmKHA9PW8uZXhwcnMubGVuZ3RoLTEpcmV0dXJuIGQ7cihkLGw9dCgpKX1lbHNlIGlmKG8udHlwZT09InN0YXIiKXtsZXQgcD10KCk7cmV0dXJuIGEobCxwKSxyKG4oby5leHByLHApLHApLFthKHApXX1lbHNlIGlmKG8udHlwZT09InBsdXMiKXtsZXQgcD10KCk7cmV0dXJuIHIobihvLmV4cHIsbCkscCkscihuKG8uZXhwcixwKSxwKSxbYShwKV19ZWxzZXtpZihvLnR5cGU9PSJvcHQiKXJldHVyblthKGwpXS5jb25jYXQobihvLmV4cHIsbCkpO2lmKG8udHlwZT09InJhbmdlIil7bGV0IHA9bDtmb3IobGV0IGQ9MDtkPG8ubWluO2QrKyl7bGV0IHU9dCgpO3IobihvLmV4cHIscCksdSkscD11fWlmKG8ubWF4PT0tMSlyKG4oby5leHByLHApLHApO2Vsc2UgZm9yKGxldCBkPW8ubWluO2Q8by5tYXg7ZCsrKXtsZXQgdT10KCk7YShwLHUpLHIobihvLmV4cHIscCksdSkscD11fXJldHVyblthKHApXX1lbHNle2lmKG8udHlwZT09Im5hbWUiKXJldHVyblthKGwsdm9pZCAwLG8udmFsdWUpXTt0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gZXhwciB0eXBlIil9fX1pKG4sImNvbXBpbGUiKX1mdW5jdGlvbiB0dWEocyxlKXtyZXR1cm4gZS1zfWZ1bmN0aW9uIGF1YShzLGUpe2xldCB0PVtdO3JldHVybiBhKGUpLHQuc29ydCh0dWEpO2Z1bmN0aW9uIGEocil7bGV0IG49c1tyXTtpZihuLmxlbmd0aD09MSYmIW5bMF0udGVybSlyZXR1cm4gYShuWzBdLnRvKTt0LnB1c2gocik7Zm9yKGxldCBvPTA7bzxuLmxlbmd0aDtvKyspe2xldHt0ZXJtOmwsdG86cH09bltvXTshbCYmdC5pbmRleE9mKHApPT0tMSYmYShwKX19aShhLCJzY2FuIil9ZnVuY3Rpb24gSldhKHMpe2xldCBlPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIHQoYXVhKHMsMCkpO2Z1bmN0aW9uIHQoYSl7bGV0IHI9W107YS5mb3JFYWNoKG89PntzW29dLmZvckVhY2goKHt0ZXJtOmwsdG86cH0pPT57aWYoIWwpcmV0dXJuO2xldCBkO2ZvcihsZXQgdT0wO3U8ci5sZW5ndGg7dSsrKXJbdV1bMF09PWwmJihkPXJbdV1bMV0pO2F1YShzLHApLmZvckVhY2godT0+e2R8fHIucHVzaChbbCxkPVtdXSksZC5pbmRleE9mKHUpPT0tMSYmZC5wdXNoKHUpfSl9KX0pO2xldCBuPWVbYS5qb2luKCIsIildPW5ldyB3aChhLmluZGV4T2Yocy5sZW5ndGgtMSk+LTEpO2ZvcihsZXQgbz0wO288ci5sZW5ndGg7bysrKXtsZXQgbD1yW29dWzFdLnNvcnQodHVhKTtuLm5leHQucHVzaCh7dHlwZTpyW29dWzBdLG5leHQ6ZVtsLmpvaW4oIiwiKV18fHQobCl9KX1yZXR1cm4gbn19ZnVuY3Rpb24gZUdhKHMsZSl7Zm9yKGxldCB0PTAsYT1bc107dDxhLmxlbmd0aDt0Kyspe2xldCByPWFbdF0sbj0hci52YWxpZEVuZCxvPVtdO2ZvcihsZXQgbD0wO2w8ci5uZXh0Lmxlbmd0aDtsKyspe2xldHt0eXBlOnAsbmV4dDpkfT1yLm5leHRbbF07by5wdXNoKHAubmFtZSksbiYmIShwLmlzVGV4dHx8cC5oYXNSZXF1aXJlZEF0dHJzKCkpJiYobj0hMSksYS5pbmRleE9mKGQpPT0tMSYmYS5wdXNoKGQpfW4mJmUuZXJyKCJPbmx5IG5vbi1nZW5lcmF0YWJsZSBub2RlcyAoIitvLmpvaW4oIiwgIikrIikgaW4gYSByZXF1aXJlZCBwb3NpdGlvbiAoc2VlIGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvZ3VpZGUvI2dlbmVyYXRhYmxlKSIpfX1mdW5jdGlvbiBzdWEocyl7bGV0IGU9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHQgaW4gcyl7bGV0IGE9c1t0XTtpZighYS5oYXNEZWZhdWx0KXJldHVybiBudWxsO2VbdF09YS5kZWZhdWx0fXJldHVybiBlfWZ1bmN0aW9uIGl1YShzLGUpe2xldCB0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBhIGluIHMpe2xldCByPWUmJmVbYV07aWYocj09PXZvaWQgMCl7bGV0IG49c1thXTtpZihuLmhhc0RlZmF1bHQpcj1uLmRlZmF1bHQ7ZWxzZSB0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTm8gdmFsdWUgc3VwcGxpZWQgZm9yIGF0dHJpYnV0ZSAiK2EpfXRbYV09cn1yZXR1cm4gdH1mdW5jdGlvbiBydWEocyxlLHQsYSl7Zm9yKGxldCByIGluIGUpaWYoIShyIGluIHMpKXRocm93IG5ldyBSYW5nZUVycm9yKGBVbnN1cHBvcnRlZCBhdHRyaWJ1dGUgJHtyfSBmb3IgJHt0fSBvZiB0eXBlICR7cn1gKTtmb3IobGV0IHIgaW4gcyl7bGV0IG49c1tyXTtuLnZhbGlkYXRlJiZuLnZhbGlkYXRlKGVbcl0pfX1mdW5jdGlvbiBvdWEocyxlKXtsZXQgdD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGUpZm9yKGxldCBhIGluIGUpdFthXT1uZXcgZ3R0KHMsYSxlW2FdKTtyZXR1cm4gdH1mdW5jdGlvbiB0R2EocyxlLHQpe2xldCBhPXQuc3BsaXQoInwiKTtyZXR1cm4gcj0+e2xldCBuPXI9PT1udWxsPyJudWxsIjp0eXBlb2YgcjtpZihhLmluZGV4T2Yobik8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgRXhwZWN0ZWQgdmFsdWUgb2YgdHlwZSAke2F9IGZvciBhdHRyaWJ1dGUgJHtlfSBvbiB0eXBlICR7c30sIGdvdCAke259YCl9fWZ1bmN0aW9uIG51YShzLGUpe2xldCB0PVtdO2ZvcihsZXQgYT0wO2E8ZS5sZW5ndGg7YSsrKXtsZXQgcj1lW2FdLG49cy5tYXJrc1tyXSxvPW47aWYobil0LnB1c2gobik7ZWxzZSBmb3IobGV0IGwgaW4gcy5tYXJrcyl7bGV0IHA9cy5tYXJrc1tsXTsocj09Il8ifHxwLnNwZWMuZ3JvdXAmJnAuc3BlYy5ncm91cC5zcGxpdCgiICIpLmluZGV4T2Yocik+LTEpJiZ0LnB1c2gobz1wKX1pZighbyl0aHJvdyBuZXcgU3ludGF4RXJyb3IoIlVua25vd24gbWFyayB0eXBlOiAnIitlW2FdKyInIil9cmV0dXJuIHR9ZnVuY3Rpb24gYUdhKHMpe3JldHVybiBzLnRhZyE9bnVsbH1mdW5jdGlvbiBzR2Eocyl7cmV0dXJuIHMuc3R5bGUhPW51bGx9ZnVuY3Rpb24gZHVhKHMsZSx0KXtyZXR1cm4gZSE9bnVsbD8oZT9PWjowKXwoZT09PSJmdWxsIj9idHQ6MCk6cyYmcy53aGl0ZXNwYWNlPT0icHJlIj9PWnxidHQ6dCZ+Rlp9ZnVuY3Rpb24gckdhKHMpe2ZvcihsZXQgZT1zLmZpcnN0Q2hpbGQsdD1udWxsO2U7ZT1lLm5leHRTaWJsaW5nKXtsZXQgYT1lLm5vZGVUeXBlPT0xP2Uubm9kZU5hbWUudG9Mb3dlckNhc2UoKTpudWxsO2EmJmN1YS5oYXNPd25Qcm9wZXJ0eShhKSYmdD8odC5hcHBlbmRDaGlsZChlKSxlPXQpOmE9PSJsaSI/dD1lOmEmJih0PW51bGwpfX1mdW5jdGlvbiBvR2EocyxlKXtyZXR1cm4ocy5tYXRjaGVzfHxzLm1zTWF0Y2hlc1NlbGVjdG9yfHxzLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8cy5tb3pNYXRjaGVzU2VsZWN0b3IpLmNhbGwocyxlKX1mdW5jdGlvbiB1dWEocyl7bGV0IGU9e307Zm9yKGxldCB0IGluIHMpZVt0XT1zW3RdO3JldHVybiBlfWZ1bmN0aW9uIHB1YShzLGUpe2xldCB0PWUuc2NoZW1hLm5vZGVzO2ZvcihsZXQgYSBpbiB0KXtsZXQgcj10W2FdO2lmKCFyLmFsbG93c01hcmtUeXBlKHMpKWNvbnRpbnVlO2xldCBuPVtdLG89aShsPT57bi5wdXNoKGwpO2ZvcihsZXQgcD0wO3A8bC5lZGdlQ291bnQ7cCsrKXtsZXR7dHlwZTpkLG5leHQ6dX09bC5lZGdlKHApO2lmKGQ9PWV8fG4uaW5kZXhPZih1KTwwJiZvKHUpKXJldHVybiEwfX0sInNjYW4iKTtpZihvKHIuY29udGVudE1hdGNoKSlyZXR1cm4hMH19ZnVuY3Rpb24gaHVhKHMpe2xldCBlPXt9O2ZvcihsZXQgdCBpbiBzKXtsZXQgYT1zW3RdLnNwZWMudG9ET007YSYmKGVbdF09YSl9cmV0dXJuIGV9ZnVuY3Rpb24gdnR0KHMpe3JldHVybiBzLmRvY3VtZW50fHx3aW5kb3cuZG9jdW1lbnR9ZnVuY3Rpb24gbkdhKHMpe2xldCBlPWZ1YS5nZXQocyk7cmV0dXJuIGU9PT12b2lkIDAmJmZ1YS5zZXQocyxlPWxHYShzKSksZX1mdW5jdGlvbiBsR2Eocyl7bGV0IGU9bnVsbDtmdW5jdGlvbiB0KGEpe2lmKGEmJnR5cGVvZiBhPT0ib2JqZWN0IilpZihBcnJheS5pc0FycmF5KGEpKWlmKHR5cGVvZiBhWzBdPT0ic3RyaW5nIillfHwoZT1bXSksZS5wdXNoKGEpO2Vsc2UgZm9yKGxldCByPTA7cjxhLmxlbmd0aDtyKyspdChhW3JdKTtlbHNlIGZvcihsZXQgciBpbiBhKXQoYVtyXSl9cmV0dXJuIGkodCwic2NhbiIpLHQocyksZX1mdW5jdGlvbiBIbmUocyxlLHQsYSl7aWYodHlwZW9mIGU9PSJzdHJpbmciKXJldHVybntkb206cy5jcmVhdGVUZXh0Tm9kZShlKX07aWYoZS5ub2RlVHlwZSE9bnVsbClyZXR1cm57ZG9tOmV9O2lmKGUuZG9tJiZlLmRvbS5ub2RlVHlwZSE9bnVsbClyZXR1cm4gZTtsZXQgcj1lWzBdLG47aWYodHlwZW9mIHIhPSJzdHJpbmciKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGFycmF5IHBhc3NlZCB0byByZW5kZXJTcGVjIik7aWYoYSYmKG49bkdhKGEpKSYmbi5pbmRleE9mKGUpPi0xKXRocm93IG5ldyBSYW5nZUVycm9yKCJVc2luZyBhbiBhcnJheSBmcm9tIGFuIGF0dHJpYnV0ZSBvYmplY3QgYXMgYSBET00gc3BlYy4gVGhpcyBtYXkgYmUgYW4gYXR0ZW1wdGVkIGNyb3NzIHNpdGUgc2NyaXB0aW5nIGF0dGFjay4iKTtsZXQgbz1yLmluZGV4T2YoIiAiKTtvPjAmJih0PXIuc2xpY2UoMCxvKSxyPXIuc2xpY2UobysxKSk7bGV0IGwscD10P3MuY3JlYXRlRWxlbWVudE5TKHQscik6cy5jcmVhdGVFbGVtZW50KHIpLGQ9ZVsxXSx1PTE7aWYoZCYmdHlwZW9mIGQ9PSJvYmplY3QiJiZkLm5vZGVUeXBlPT1udWxsJiYhQXJyYXkuaXNBcnJheShkKSl7dT0yO2ZvcihsZXQgYyBpbiBkKWlmKGRbY10hPW51bGwpe2xldCBiPWMuaW5kZXhPZigiICIpO2I+MD9wLnNldEF0dHJpYnV0ZU5TKGMuc2xpY2UoMCxiKSxjLnNsaWNlKGIrMSksZFtjXSk6Yz09InN0eWxlIiYmcC5zdHlsZT9wLnN0eWxlLmNzc1RleHQ9ZFtjXTpwLnNldEF0dHJpYnV0ZShjLGRbY10pfX1mb3IobGV0IGM9dTtjPGUubGVuZ3RoO2MrKyl7bGV0IGI9ZVtjXTtpZihiPT09MCl7aWYoYzxlLmxlbmd0aC0xfHxjPnUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkNvbnRlbnQgaG9sZSBtdXN0IGJlIHRoZSBvbmx5IGNoaWxkIG9mIGl0cyBwYXJlbnQgbm9kZSIpO3JldHVybntkb206cCxjb250ZW50RE9NOnB9fWVsc2V7bGV0e2RvbTp2LGNvbnRlbnRET006eH09SG5lKHMsYix0LGEpO2lmKHAuYXBwZW5kQ2hpbGQodikseCl7aWYobCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTXVsdGlwbGUgY29udGVudCBob2xlcyIpO2w9eH19fXJldHVybntkb206cCxjb250ZW50RE9NOmx9fXZhciBydCx1dHQsZnMsa2gsX3QsTlosaHR0LFVXYSxYMGEsU2gsV1dhLFRuLGZ0dCx3aCxtdHQsUlosZ3R0LHZ2LHh2LGUyLGx1YSxpR2EsY3VhLE9aLGJ0dCxGWixidixCbmUsTGQsZnVhLF9oPWcoKCk9PntqMGEoKTtpKFYwYSwiZmluZERpZmZTdGFydCIpO2koVTBhLCJmaW5kRGlmZkVuZCIpO3J0PWNsYXNzIHN7c3RhdGlje2kodGhpcywiRnJhZ21lbnQiKX1jb25zdHJ1Y3RvcihlLHQpe2lmKHRoaXMuY29udGVudD1lLHRoaXMuc2l6ZT10fHwwLHQ9PW51bGwpZm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspdGhpcy5zaXplKz1lW2FdLm5vZGVTaXplfW5vZGVzQmV0d2VlbihlLHQsYSxyPTAsbil7Zm9yKGxldCBvPTAsbD0wO2w8dDtvKyspe2xldCBwPXRoaXMuY29udGVudFtvXSxkPWwrcC5ub2RlU2l6ZTtpZihkPmUmJmEocCxyK2wsbnx8bnVsbCxvKSE9PSExJiZwLmNvbnRlbnQuc2l6ZSl7bGV0IHU9bCsxO3Aubm9kZXNCZXR3ZWVuKE1hdGgubWF4KDAsZS11KSxNYXRoLm1pbihwLmNvbnRlbnQuc2l6ZSx0LXUpLGEscit1KX1sPWR9fWRlc2NlbmRhbnRzKGUpe3RoaXMubm9kZXNCZXR3ZWVuKDAsdGhpcy5zaXplLGUpfXRleHRCZXR3ZWVuKGUsdCxhLHIpe2xldCBuPSIiLG89ITA7cmV0dXJuIHRoaXMubm9kZXNCZXR3ZWVuKGUsdCwobCxwKT0+e2xldCBkPWwuaXNUZXh0P2wudGV4dC5zbGljZShNYXRoLm1heChlLHApLXAsdC1wKTpsLmlzTGVhZj9yP3R5cGVvZiByPT0iZnVuY3Rpb24iP3IobCk6cjpsLnR5cGUuc3BlYy5sZWFmVGV4dD9sLnR5cGUuc3BlYy5sZWFmVGV4dChsKToiIjoiIjtsLmlzQmxvY2smJihsLmlzTGVhZiYmZHx8bC5pc1RleHRibG9jaykmJmEmJihvP289ITE6bis9YSksbis9ZH0sMCksbn1hcHBlbmQoZSl7aWYoIWUuc2l6ZSlyZXR1cm4gdGhpcztpZighdGhpcy5zaXplKXJldHVybiBlO2xldCB0PXRoaXMubGFzdENoaWxkLGE9ZS5maXJzdENoaWxkLHI9dGhpcy5jb250ZW50LnNsaWNlKCksbj0wO2Zvcih0LmlzVGV4dCYmdC5zYW1lTWFya3VwKGEpJiYocltyLmxlbmd0aC0xXT10LndpdGhUZXh0KHQudGV4dCthLnRleHQpLG49MSk7bjxlLmNvbnRlbnQubGVuZ3RoO24rKylyLnB1c2goZS5jb250ZW50W25dKTtyZXR1cm4gbmV3IHMocix0aGlzLnNpemUrZS5zaXplKX1jdXQoZSx0PXRoaXMuc2l6ZSl7aWYoZT09MCYmdD09dGhpcy5zaXplKXJldHVybiB0aGlzO2xldCBhPVtdLHI9MDtpZih0PmUpZm9yKGxldCBuPTAsbz0wO288dDtuKyspe2xldCBsPXRoaXMuY29udGVudFtuXSxwPW8rbC5ub2RlU2l6ZTtwPmUmJigobzxlfHxwPnQpJiYobC5pc1RleHQ/bD1sLmN1dChNYXRoLm1heCgwLGUtbyksTWF0aC5taW4obC50ZXh0Lmxlbmd0aCx0LW8pKTpsPWwuY3V0KE1hdGgubWF4KDAsZS1vLTEpLE1hdGgubWluKGwuY29udGVudC5zaXplLHQtby0xKSkpLGEucHVzaChsKSxyKz1sLm5vZGVTaXplKSxvPXB9cmV0dXJuIG5ldyBzKGEscil9Y3V0QnlJbmRleChlLHQpe3JldHVybiBlPT10P3MuZW1wdHk6ZT09MCYmdD09dGhpcy5jb250ZW50Lmxlbmd0aD90aGlzOm5ldyBzKHRoaXMuY29udGVudC5zbGljZShlLHQpKX1yZXBsYWNlQ2hpbGQoZSx0KXtsZXQgYT10aGlzLmNvbnRlbnRbZV07aWYoYT09dClyZXR1cm4gdGhpcztsZXQgcj10aGlzLmNvbnRlbnQuc2xpY2UoKSxuPXRoaXMuc2l6ZSt0Lm5vZGVTaXplLWEubm9kZVNpemU7cmV0dXJuIHJbZV09dCxuZXcgcyhyLG4pfWFkZFRvU3RhcnQoZSl7cmV0dXJuIG5ldyBzKFtlXS5jb25jYXQodGhpcy5jb250ZW50KSx0aGlzLnNpemUrZS5ub2RlU2l6ZSl9YWRkVG9FbmQoZSl7cmV0dXJuIG5ldyBzKHRoaXMuY29udGVudC5jb25jYXQoZSksdGhpcy5zaXplK2Uubm9kZVNpemUpfWVxKGUpe2lmKHRoaXMuY29udGVudC5sZW5ndGghPWUuY29udGVudC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCB0PTA7dDx0aGlzLmNvbnRlbnQubGVuZ3RoO3QrKylpZighdGhpcy5jb250ZW50W3RdLmVxKGUuY29udGVudFt0XSkpcmV0dXJuITE7cmV0dXJuITB9Z2V0IGZpcnN0Q2hpbGQoKXtyZXR1cm4gdGhpcy5jb250ZW50Lmxlbmd0aD90aGlzLmNvbnRlbnRbMF06bnVsbH1nZXQgbGFzdENoaWxkKCl7cmV0dXJuIHRoaXMuY29udGVudC5sZW5ndGg/dGhpcy5jb250ZW50W3RoaXMuY29udGVudC5sZW5ndGgtMV06bnVsbH1nZXQgY2hpbGRDb3VudCgpe3JldHVybiB0aGlzLmNvbnRlbnQubGVuZ3RofWNoaWxkKGUpe2xldCB0PXRoaXMuY29udGVudFtlXTtpZighdCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggIitlKyIgb3V0IG9mIHJhbmdlIGZvciAiK3RoaXMpO3JldHVybiB0fW1heWJlQ2hpbGQoZSl7cmV0dXJuIHRoaXMuY29udGVudFtlXXx8bnVsbH1mb3JFYWNoKGUpe2ZvcihsZXQgdD0wLGE9MDt0PHRoaXMuY29udGVudC5sZW5ndGg7dCsrKXtsZXQgcj10aGlzLmNvbnRlbnRbdF07ZShyLGEsdCksYSs9ci5ub2RlU2l6ZX19ZmluZERpZmZTdGFydChlLHQ9MCl7cmV0dXJuIFYwYSh0aGlzLGUsdCl9ZmluZERpZmZFbmQoZSx0PXRoaXMuc2l6ZSxhPWUuc2l6ZSl7cmV0dXJuIFUwYSh0aGlzLGUsdCxhKX1maW5kSW5kZXgoZSl7aWYoZT09MClyZXR1cm4gUm5lKDAsZSk7aWYoZT09dGhpcy5zaXplKXJldHVybiBSbmUodGhpcy5jb250ZW50Lmxlbmd0aCxlKTtpZihlPnRoaXMuc2l6ZXx8ZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKGBQb3NpdGlvbiAke2V9IG91dHNpZGUgb2YgZnJhZ21lbnQgKCR7dGhpc30pYCk7Zm9yKGxldCB0PTAsYT0wOzt0Kyspe2xldCByPXRoaXMuY2hpbGQodCksbj1hK3Iubm9kZVNpemU7aWYobj49ZSlyZXR1cm4gbj09ZT9SbmUodCsxLG4pOlJuZSh0LGEpO2E9bn19dG9TdHJpbmcoKXtyZXR1cm4iPCIrdGhpcy50b1N0cmluZ0lubmVyKCkrIj4ifXRvU3RyaW5nSW5uZXIoKXtyZXR1cm4gdGhpcy5jb250ZW50LmpvaW4oIiwgIil9dG9KU09OKCl7cmV0dXJuIHRoaXMuY29udGVudC5sZW5ndGg/dGhpcy5jb250ZW50Lm1hcChlPT5lLnRvSlNPTigpKTpudWxsfXN0YXRpYyBmcm9tSlNPTihlLHQpe2lmKCF0KXJldHVybiBzLmVtcHR5O2lmKCFBcnJheS5pc0FycmF5KHQpKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBGcmFnbWVudC5mcm9tSlNPTiIpO3JldHVybiBuZXcgcyh0Lm1hcChlLm5vZGVGcm9tSlNPTikpfXN0YXRpYyBmcm9tQXJyYXkoZSl7aWYoIWUubGVuZ3RoKXJldHVybiBzLmVtcHR5O2xldCB0LGE9MDtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyl7bGV0IG49ZVtyXTthKz1uLm5vZGVTaXplLHImJm4uaXNUZXh0JiZlW3ItMV0uc2FtZU1hcmt1cChuKT8odHx8KHQ9ZS5zbGljZSgwLHIpKSx0W3QubGVuZ3RoLTFdPW4ud2l0aFRleHQodFt0Lmxlbmd0aC0xXS50ZXh0K24udGV4dCkpOnQmJnQucHVzaChuKX1yZXR1cm4gbmV3IHModHx8ZSxhKX1zdGF0aWMgZnJvbShlKXtpZighZSlyZXR1cm4gcy5lbXB0eTtpZihlIGluc3RhbmNlb2YgcylyZXR1cm4gZTtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiB0aGlzLmZyb21BcnJheShlKTtpZihlLmF0dHJzKXJldHVybiBuZXcgcyhbZV0sZS5ub2RlU2l6ZSk7dGhyb3cgbmV3IFJhbmdlRXJyb3IoIkNhbiBub3QgY29udmVydCAiK2UrIiB0byBhIEZyYWdtZW50IisoZS5ub2Rlc0JldHdlZW4/IiAobG9va3MgbGlrZSBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBwcm9zZW1pcnJvci1tb2RlbCB3ZXJlIGxvYWRlZCkiOiIiKSl9fTtydC5lbXB0eT1uZXcgcnQoW10sMCk7dXR0PXtpbmRleDowLG9mZnNldDowfTtpKFJuZSwicmV0SW5kZXgiKTtpKE9uZSwiY29tcGFyZURlZXAiKTtmcz1jbGFzcyBze3N0YXRpY3tpKHRoaXMsIk1hcmsiKX1jb25zdHJ1Y3RvcihlLHQpe3RoaXMudHlwZT1lLHRoaXMuYXR0cnM9dH1hZGRUb1NldChlKXtsZXQgdCxhPSExO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXtsZXQgbj1lW3JdO2lmKHRoaXMuZXEobikpcmV0dXJuIGU7aWYodGhpcy50eXBlLmV4Y2x1ZGVzKG4udHlwZSkpdHx8KHQ9ZS5zbGljZSgwLHIpKTtlbHNle2lmKG4udHlwZS5leGNsdWRlcyh0aGlzLnR5cGUpKXJldHVybiBlOyFhJiZuLnR5cGUucmFuaz50aGlzLnR5cGUucmFuayYmKHR8fCh0PWUuc2xpY2UoMCxyKSksdC5wdXNoKHRoaXMpLGE9ITApLHQmJnQucHVzaChuKX19cmV0dXJuIHR8fCh0PWUuc2xpY2UoKSksYXx8dC5wdXNoKHRoaXMpLHR9cmVtb3ZlRnJvbVNldChlKXtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKylpZih0aGlzLmVxKGVbdF0pKXJldHVybiBlLnNsaWNlKDAsdCkuY29uY2F0KGUuc2xpY2UodCsxKSk7cmV0dXJuIGV9aXNJblNldChlKXtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKylpZih0aGlzLmVxKGVbdF0pKXJldHVybiEwO3JldHVybiExfWVxKGUpe3JldHVybiB0aGlzPT1lfHx0aGlzLnR5cGU9PWUudHlwZSYmT25lKHRoaXMuYXR0cnMsZS5hdHRycyl9dG9KU09OKCl7bGV0IGU9e3R5cGU6dGhpcy50eXBlLm5hbWV9O2ZvcihsZXQgdCBpbiB0aGlzLmF0dHJzKXtlLmF0dHJzPXRoaXMuYXR0cnM7YnJlYWt9cmV0dXJuIGV9c3RhdGljIGZyb21KU09OKGUsdCl7aWYoIXQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIE1hcmsuZnJvbUpTT04iKTtsZXQgYT1lLm1hcmtzW3QudHlwZV07aWYoIWEpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFRoZXJlIGlzIG5vIG1hcmsgdHlwZSAke3QudHlwZX0gaW4gdGhpcyBzY2hlbWFgKTtsZXQgcj1hLmNyZWF0ZSh0LmF0dHJzKTtyZXR1cm4gYS5jaGVja0F0dHJzKHIuYXR0cnMpLHJ9c3RhdGljIHNhbWVTZXQoZSx0KXtpZihlPT10KXJldHVybiEwO2lmKGUubGVuZ3RoIT10Lmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGE9MDthPGUubGVuZ3RoO2ErKylpZighZVthXS5lcSh0W2FdKSlyZXR1cm4hMTtyZXR1cm4hMH1zdGF0aWMgc2V0RnJvbShlKXtpZighZXx8QXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg9PTApcmV0dXJuIHMubm9uZTtpZihlIGluc3RhbmNlb2YgcylyZXR1cm5bZV07bGV0IHQ9ZS5zbGljZSgpO3JldHVybiB0LnNvcnQoKGEscik9PmEudHlwZS5yYW5rLXIudHlwZS5yYW5rKSx0fX07ZnMubm9uZT1bXTtraD1jbGFzcyBleHRlbmRzIEVycm9ye3N0YXRpY3tpKHRoaXMsIlJlcGxhY2VFcnJvciIpfX0sX3Q9Y2xhc3Mgc3tzdGF0aWN7aSh0aGlzLCJTbGljZSIpfWNvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmNvbnRlbnQ9ZSx0aGlzLm9wZW5TdGFydD10LHRoaXMub3BlbkVuZD1hfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuY29udGVudC5zaXplLXRoaXMub3BlblN0YXJ0LXRoaXMub3BlbkVuZH1pbnNlcnRBdChlLHQpe2xldCBhPUcwYSh0aGlzLmNvbnRlbnQsZSt0aGlzLm9wZW5TdGFydCx0KTtyZXR1cm4gYSYmbmV3IHMoYSx0aGlzLm9wZW5TdGFydCx0aGlzLm9wZW5FbmQpfXJlbW92ZUJldHdlZW4oZSx0KXtyZXR1cm4gbmV3IHMoVzBhKHRoaXMuY29udGVudCxlK3RoaXMub3BlblN0YXJ0LHQrdGhpcy5vcGVuU3RhcnQpLHRoaXMub3BlblN0YXJ0LHRoaXMub3BlbkVuZCl9ZXEoZSl7cmV0dXJuIHRoaXMuY29udGVudC5lcShlLmNvbnRlbnQpJiZ0aGlzLm9wZW5TdGFydD09ZS5vcGVuU3RhcnQmJnRoaXMub3BlbkVuZD09ZS5vcGVuRW5kfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuY29udGVudCsiKCIrdGhpcy5vcGVuU3RhcnQrIiwiK3RoaXMub3BlbkVuZCsiKSJ9dG9KU09OKCl7aWYoIXRoaXMuY29udGVudC5zaXplKXJldHVybiBudWxsO2xldCBlPXtjb250ZW50OnRoaXMuY29udGVudC50b0pTT04oKX07cmV0dXJuIHRoaXMub3BlblN0YXJ0PjAmJihlLm9wZW5TdGFydD10aGlzLm9wZW5TdGFydCksdGhpcy5vcGVuRW5kPjAmJihlLm9wZW5FbmQ9dGhpcy5vcGVuRW5kKSxlfXN0YXRpYyBmcm9tSlNPTihlLHQpe2lmKCF0KXJldHVybiBzLmVtcHR5O2xldCBhPXQub3BlblN0YXJ0fHwwLHI9dC5vcGVuRW5kfHwwO2lmKHR5cGVvZiBhIT0ibnVtYmVyInx8dHlwZW9mIHIhPSJudW1iZXIiKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBTbGljZS5mcm9tSlNPTiIpO3JldHVybiBuZXcgcyhydC5mcm9tSlNPTihlLHQuY29udGVudCksYSxyKX1zdGF0aWMgbWF4T3BlbihlLHQ9ITApe2xldCBhPTAscj0wO2ZvcihsZXQgbj1lLmZpcnN0Q2hpbGQ7biYmIW4uaXNMZWFmJiYodHx8IW4udHlwZS5zcGVjLmlzb2xhdGluZyk7bj1uLmZpcnN0Q2hpbGQpYSsrO2ZvcihsZXQgbj1lLmxhc3RDaGlsZDtuJiYhbi5pc0xlYWYmJih0fHwhbi50eXBlLnNwZWMuaXNvbGF0aW5nKTtuPW4ubGFzdENoaWxkKXIrKztyZXR1cm4gbmV3IHMoZSxhLHIpfX07X3QuZW1wdHk9bmV3IF90KHJ0LmVtcHR5LDAsMCk7aShXMGEsInJlbW92ZVJhbmdlIik7aShHMGEsImluc2VydEludG8iKTtpKGpXYSwicmVwbGFjZSIpO2koSzBhLCJyZXBsYWNlT3V0ZXIiKTtpKFkwYSwiY2hlY2tKb2luIik7aShwdHQsImpvaW5hYmxlIik7aShqOCwiYWRkTm9kZSIpO2koQVosImFkZFJhbmdlIik7aShWOCwiY2xvc2UiKTtpKFowYSwicmVwbGFjZVRocmVlV2F5Iik7aShGbmUsInJlcGxhY2VUd29XYXkiKTtpKFZXYSwicHJlcGFyZVNsaWNlRm9yUmVwbGFjZSIpO05aPWNsYXNzIHN7c3RhdGlje2kodGhpcywiUmVzb2x2ZWRQb3MiKX1jb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5wb3M9ZSx0aGlzLnBhdGg9dCx0aGlzLnBhcmVudE9mZnNldD1hLHRoaXMuZGVwdGg9dC5sZW5ndGgvMy0xfXJlc29sdmVEZXB0aChlKXtyZXR1cm4gZT09bnVsbD90aGlzLmRlcHRoOmU8MD90aGlzLmRlcHRoK2U6ZX1nZXQgcGFyZW50KCl7cmV0dXJuIHRoaXMubm9kZSh0aGlzLmRlcHRoKX1nZXQgZG9jKCl7cmV0dXJuIHRoaXMubm9kZSgwKX1ub2RlKGUpe3JldHVybiB0aGlzLnBhdGhbdGhpcy5yZXNvbHZlRGVwdGgoZSkqM119aW5kZXgoZSl7cmV0dXJuIHRoaXMucGF0aFt0aGlzLnJlc29sdmVEZXB0aChlKSozKzFdfWluZGV4QWZ0ZXIoZSl7cmV0dXJuIGU9dGhpcy5yZXNvbHZlRGVwdGgoZSksdGhpcy5pbmRleChlKSsoZT09dGhpcy5kZXB0aCYmIXRoaXMudGV4dE9mZnNldD8wOjEpfXN0YXJ0KGUpe3JldHVybiBlPXRoaXMucmVzb2x2ZURlcHRoKGUpLGU9PTA/MDp0aGlzLnBhdGhbZSozLTFdKzF9ZW5kKGUpe3JldHVybiBlPXRoaXMucmVzb2x2ZURlcHRoKGUpLHRoaXMuc3RhcnQoZSkrdGhpcy5ub2RlKGUpLmNvbnRlbnQuc2l6ZX1iZWZvcmUoZSl7aWYoZT10aGlzLnJlc29sdmVEZXB0aChlKSwhZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVGhlcmUgaXMgbm8gcG9zaXRpb24gYmVmb3JlIHRoZSB0b3AtbGV2ZWwgbm9kZSIpO3JldHVybiBlPT10aGlzLmRlcHRoKzE/dGhpcy5wb3M6dGhpcy5wYXRoW2UqMy0xXX1hZnRlcihlKXtpZihlPXRoaXMucmVzb2x2ZURlcHRoKGUpLCFlKXRocm93IG5ldyBSYW5nZUVycm9yKCJUaGVyZSBpcyBubyBwb3NpdGlvbiBhZnRlciB0aGUgdG9wLWxldmVsIG5vZGUiKTtyZXR1cm4gZT09dGhpcy5kZXB0aCsxP3RoaXMucG9zOnRoaXMucGF0aFtlKjMtMV0rdGhpcy5wYXRoW2UqM10ubm9kZVNpemV9Z2V0IHRleHRPZmZzZXQoKXtyZXR1cm4gdGhpcy5wb3MtdGhpcy5wYXRoW3RoaXMucGF0aC5sZW5ndGgtMV19Z2V0IG5vZGVBZnRlcigpe2xldCBlPXRoaXMucGFyZW50LHQ9dGhpcy5pbmRleCh0aGlzLmRlcHRoKTtpZih0PT1lLmNoaWxkQ291bnQpcmV0dXJuIG51bGw7bGV0IGE9dGhpcy5wb3MtdGhpcy5wYXRoW3RoaXMucGF0aC5sZW5ndGgtMV0scj1lLmNoaWxkKHQpO3JldHVybiBhP2UuY2hpbGQodCkuY3V0KGEpOnJ9Z2V0IG5vZGVCZWZvcmUoKXtsZXQgZT10aGlzLmluZGV4KHRoaXMuZGVwdGgpLHQ9dGhpcy5wb3MtdGhpcy5wYXRoW3RoaXMucGF0aC5sZW5ndGgtMV07cmV0dXJuIHQ/dGhpcy5wYXJlbnQuY2hpbGQoZSkuY3V0KDAsdCk6ZT09MD9udWxsOnRoaXMucGFyZW50LmNoaWxkKGUtMSl9cG9zQXRJbmRleChlLHQpe3Q9dGhpcy5yZXNvbHZlRGVwdGgodCk7bGV0IGE9dGhpcy5wYXRoW3QqM10scj10PT0wPzA6dGhpcy5wYXRoW3QqMy0xXSsxO2ZvcihsZXQgbj0wO248ZTtuKyspcis9YS5jaGlsZChuKS5ub2RlU2l6ZTtyZXR1cm4gcn1tYXJrcygpe2xldCBlPXRoaXMucGFyZW50LHQ9dGhpcy5pbmRleCgpO2lmKGUuY29udGVudC5zaXplPT0wKXJldHVybiBmcy5ub25lO2lmKHRoaXMudGV4dE9mZnNldClyZXR1cm4gZS5jaGlsZCh0KS5tYXJrcztsZXQgYT1lLm1heWJlQ2hpbGQodC0xKSxyPWUubWF5YmVDaGlsZCh0KTtpZighYSl7bGV0IGw9YTthPXIscj1sfWxldCBuPWEubWFya3M7Zm9yKHZhciBvPTA7bzxuLmxlbmd0aDtvKyspbltvXS50eXBlLnNwZWMuaW5jbHVzaXZlPT09ITEmJighcnx8IW5bb10uaXNJblNldChyLm1hcmtzKSkmJihuPW5bby0tXS5yZW1vdmVGcm9tU2V0KG4pKTtyZXR1cm4gbn1tYXJrc0Fjcm9zcyhlKXtsZXQgdD10aGlzLnBhcmVudC5tYXliZUNoaWxkKHRoaXMuaW5kZXgoKSk7aWYoIXR8fCF0LmlzSW5saW5lKXJldHVybiBudWxsO2xldCBhPXQubWFya3Mscj1lLnBhcmVudC5tYXliZUNoaWxkKGUuaW5kZXgoKSk7Zm9yKHZhciBuPTA7bjxhLmxlbmd0aDtuKyspYVtuXS50eXBlLnNwZWMuaW5jbHVzaXZlPT09ITEmJighcnx8IWFbbl0uaXNJblNldChyLm1hcmtzKSkmJihhPWFbbi0tXS5yZW1vdmVGcm9tU2V0KGEpKTtyZXR1cm4gYX1zaGFyZWREZXB0aChlKXtmb3IobGV0IHQ9dGhpcy5kZXB0aDt0PjA7dC0tKWlmKHRoaXMuc3RhcnQodCk8PWUmJnRoaXMuZW5kKHQpPj1lKXJldHVybiB0O3JldHVybiAwfWJsb2NrUmFuZ2UoZT10aGlzLHQpe2lmKGUucG9zPHRoaXMucG9zKXJldHVybiBlLmJsb2NrUmFuZ2UodGhpcyk7Zm9yKGxldCBhPXRoaXMuZGVwdGgtKHRoaXMucGFyZW50LmlubGluZUNvbnRlbnR8fHRoaXMucG9zPT1lLnBvcz8xOjApO2E+PTA7YS0tKWlmKGUucG9zPD10aGlzLmVuZChhKSYmKCF0fHx0KHRoaXMubm9kZShhKSkpKXJldHVybiBuZXcgU2godGhpcyxlLGEpO3JldHVybiBudWxsfXNhbWVQYXJlbnQoZSl7cmV0dXJuIHRoaXMucG9zLXRoaXMucGFyZW50T2Zmc2V0PT1lLnBvcy1lLnBhcmVudE9mZnNldH1tYXgoZSl7cmV0dXJuIGUucG9zPnRoaXMucG9zP2U6dGhpc31taW4oZSl7cmV0dXJuIGUucG9zPHRoaXMucG9zP2U6dGhpc310b1N0cmluZygpe2xldCBlPSIiO2ZvcihsZXQgdD0xO3Q8PXRoaXMuZGVwdGg7dCsrKWUrPShlPyIvIjoiIikrdGhpcy5ub2RlKHQpLnR5cGUubmFtZSsiXyIrdGhpcy5pbmRleCh0LTEpO3JldHVybiBlKyI6Iit0aGlzLnBhcmVudE9mZnNldH1zdGF0aWMgcmVzb2x2ZShlLHQpe2lmKCEodD49MCYmdDw9ZS5jb250ZW50LnNpemUpKXRocm93IG5ldyBSYW5nZUVycm9yKCJQb3NpdGlvbiAiK3QrIiBvdXQgb2YgcmFuZ2UiKTtsZXQgYT1bXSxyPTAsbj10O2ZvcihsZXQgbz1lOzspe2xldHtpbmRleDpsLG9mZnNldDpwfT1vLmNvbnRlbnQuZmluZEluZGV4KG4pLGQ9bi1wO2lmKGEucHVzaChvLGwscitwKSwhZHx8KG89by5jaGlsZChsKSxvLmlzVGV4dCkpYnJlYWs7bj1kLTEscis9cCsxfXJldHVybiBuZXcgcyh0LGEsbil9c3RhdGljIHJlc29sdmVDYWNoZWQoZSx0KXtsZXQgYT1YMGEuZ2V0KGUpO2lmKGEpZm9yKGxldCBuPTA7bjxhLmVsdHMubGVuZ3RoO24rKyl7bGV0IG89YS5lbHRzW25dO2lmKG8ucG9zPT10KXJldHVybiBvfWVsc2UgWDBhLnNldChlLGE9bmV3IGh0dCk7bGV0IHI9YS5lbHRzW2EuaV09cy5yZXNvbHZlKGUsdCk7cmV0dXJuIGEuaT0oYS5pKzEpJVVXYSxyfX0saHR0PWNsYXNze3N0YXRpY3tpKHRoaXMsIlJlc29sdmVDYWNoZSIpfWNvbnN0cnVjdG9yKCl7dGhpcy5lbHRzPVtdLHRoaXMuaT0wfX0sVVdhPTEyLFgwYT1uZXcgV2Vha01hcCxTaD1jbGFzc3tzdGF0aWN7aSh0aGlzLCJOb2RlUmFuZ2UiKX1jb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy4kZnJvbT1lLHRoaXMuJHRvPXQsdGhpcy5kZXB0aD1hfWdldCBzdGFydCgpe3JldHVybiB0aGlzLiRmcm9tLmJlZm9yZSh0aGlzLmRlcHRoKzEpfWdldCBlbmQoKXtyZXR1cm4gdGhpcy4kdG8uYWZ0ZXIodGhpcy5kZXB0aCsxKX1nZXQgcGFyZW50KCl7cmV0dXJuIHRoaXMuJGZyb20ubm9kZSh0aGlzLmRlcHRoKX1nZXQgc3RhcnRJbmRleCgpe3JldHVybiB0aGlzLiRmcm9tLmluZGV4KHRoaXMuZGVwdGgpfWdldCBlbmRJbmRleCgpe3JldHVybiB0aGlzLiR0by5pbmRleEFmdGVyKHRoaXMuZGVwdGgpfX0sV1dhPU9iamVjdC5jcmVhdGUobnVsbCksVG49Y2xhc3Mgc3tzdGF0aWN7aSh0aGlzLCJOb2RlIil9Y29uc3RydWN0b3IoZSx0LGEscj1mcy5ub25lKXt0aGlzLnR5cGU9ZSx0aGlzLmF0dHJzPXQsdGhpcy5tYXJrcz1yLHRoaXMuY29udGVudD1hfHxydC5lbXB0eX1nZXQgY2hpbGRyZW4oKXtyZXR1cm4gdGhpcy5jb250ZW50LmNvbnRlbnR9Z2V0IG5vZGVTaXplKCl7cmV0dXJuIHRoaXMuaXNMZWFmPzE6Mit0aGlzLmNvbnRlbnQuc2l6ZX1nZXQgY2hpbGRDb3VudCgpe3JldHVybiB0aGlzLmNvbnRlbnQuY2hpbGRDb3VudH1jaGlsZChlKXtyZXR1cm4gdGhpcy5jb250ZW50LmNoaWxkKGUpfW1heWJlQ2hpbGQoZSl7cmV0dXJuIHRoaXMuY29udGVudC5tYXliZUNoaWxkKGUpfWZvckVhY2goZSl7dGhpcy5jb250ZW50LmZvckVhY2goZSl9bm9kZXNCZXR3ZWVuKGUsdCxhLHI9MCl7dGhpcy5jb250ZW50Lm5vZGVzQmV0d2VlbihlLHQsYSxyLHRoaXMpfWRlc2NlbmRhbnRzKGUpe3RoaXMubm9kZXNCZXR3ZWVuKDAsdGhpcy5jb250ZW50LnNpemUsZSl9Z2V0IHRleHRDb250ZW50KCl7cmV0dXJuIHRoaXMuaXNMZWFmJiZ0aGlzLnR5cGUuc3BlYy5sZWFmVGV4dD90aGlzLnR5cGUuc3BlYy5sZWFmVGV4dCh0aGlzKTp0aGlzLnRleHRCZXR3ZWVuKDAsdGhpcy5jb250ZW50LnNpemUsIiIpfXRleHRCZXR3ZWVuKGUsdCxhLHIpe3JldHVybiB0aGlzLmNvbnRlbnQudGV4dEJldHdlZW4oZSx0LGEscil9Z2V0IGZpcnN0Q2hpbGQoKXtyZXR1cm4gdGhpcy5jb250ZW50LmZpcnN0Q2hpbGR9Z2V0IGxhc3RDaGlsZCgpe3JldHVybiB0aGlzLmNvbnRlbnQubGFzdENoaWxkfWVxKGUpe3JldHVybiB0aGlzPT1lfHx0aGlzLnNhbWVNYXJrdXAoZSkmJnRoaXMuY29udGVudC5lcShlLmNvbnRlbnQpfXNhbWVNYXJrdXAoZSl7cmV0dXJuIHRoaXMuaGFzTWFya3VwKGUudHlwZSxlLmF0dHJzLGUubWFya3MpfWhhc01hcmt1cChlLHQsYSl7cmV0dXJuIHRoaXMudHlwZT09ZSYmT25lKHRoaXMuYXR0cnMsdHx8ZS5kZWZhdWx0QXR0cnN8fFdXYSkmJmZzLnNhbWVTZXQodGhpcy5tYXJrcyxhfHxmcy5ub25lKX1jb3B5KGU9bnVsbCl7cmV0dXJuIGU9PXRoaXMuY29udGVudD90aGlzOm5ldyBzKHRoaXMudHlwZSx0aGlzLmF0dHJzLGUsdGhpcy5tYXJrcyl9bWFyayhlKXtyZXR1cm4gZT09dGhpcy5tYXJrcz90aGlzOm5ldyBzKHRoaXMudHlwZSx0aGlzLmF0dHJzLHRoaXMuY29udGVudCxlKX1jdXQoZSx0PXRoaXMuY29udGVudC5zaXplKXtyZXR1cm4gZT09MCYmdD09dGhpcy5jb250ZW50LnNpemU/dGhpczp0aGlzLmNvcHkodGhpcy5jb250ZW50LmN1dChlLHQpKX1zbGljZShlLHQ9dGhpcy5jb250ZW50LnNpemUsYT0hMSl7aWYoZT09dClyZXR1cm4gX3QuZW1wdHk7bGV0IHI9dGhpcy5yZXNvbHZlKGUpLG49dGhpcy5yZXNvbHZlKHQpLG89YT8wOnIuc2hhcmVkRGVwdGgodCksbD1yLnN0YXJ0KG8pLGQ9ci5ub2RlKG8pLmNvbnRlbnQuY3V0KHIucG9zLWwsbi5wb3MtbCk7cmV0dXJuIG5ldyBfdChkLHIuZGVwdGgtbyxuLmRlcHRoLW8pfXJlcGxhY2UoZSx0LGEpe3JldHVybiBqV2EodGhpcy5yZXNvbHZlKGUpLHRoaXMucmVzb2x2ZSh0KSxhKX1ub2RlQXQoZSl7Zm9yKGxldCB0PXRoaXM7Oyl7bGV0e2luZGV4OmEsb2Zmc2V0OnJ9PXQuY29udGVudC5maW5kSW5kZXgoZSk7aWYodD10Lm1heWJlQ2hpbGQoYSksIXQpcmV0dXJuIG51bGw7aWYocj09ZXx8dC5pc1RleHQpcmV0dXJuIHQ7ZS09cisxfX1jaGlsZEFmdGVyKGUpe2xldHtpbmRleDp0LG9mZnNldDphfT10aGlzLmNvbnRlbnQuZmluZEluZGV4KGUpO3JldHVybntub2RlOnRoaXMuY29udGVudC5tYXliZUNoaWxkKHQpLGluZGV4OnQsb2Zmc2V0OmF9fWNoaWxkQmVmb3JlKGUpe2lmKGU9PTApcmV0dXJue25vZGU6bnVsbCxpbmRleDowLG9mZnNldDowfTtsZXR7aW5kZXg6dCxvZmZzZXQ6YX09dGhpcy5jb250ZW50LmZpbmRJbmRleChlKTtpZihhPGUpcmV0dXJue25vZGU6dGhpcy5jb250ZW50LmNoaWxkKHQpLGluZGV4OnQsb2Zmc2V0OmF9O2xldCByPXRoaXMuY29udGVudC5jaGlsZCh0LTEpO3JldHVybntub2RlOnIsaW5kZXg6dC0xLG9mZnNldDphLXIubm9kZVNpemV9fXJlc29sdmUoZSl7cmV0dXJuIE5aLnJlc29sdmVDYWNoZWQodGhpcyxlKX1yZXNvbHZlTm9DYWNoZShlKXtyZXR1cm4gTloucmVzb2x2ZSh0aGlzLGUpfXJhbmdlSGFzTWFyayhlLHQsYSl7bGV0IHI9ITE7cmV0dXJuIHQ+ZSYmdGhpcy5ub2Rlc0JldHdlZW4oZSx0LG49PihhLmlzSW5TZXQobi5tYXJrcykmJihyPSEwKSwhcikpLHJ9Z2V0IGlzQmxvY2soKXtyZXR1cm4gdGhpcy50eXBlLmlzQmxvY2t9Z2V0IGlzVGV4dGJsb2NrKCl7cmV0dXJuIHRoaXMudHlwZS5pc1RleHRibG9ja31nZXQgaW5saW5lQ29udGVudCgpe3JldHVybiB0aGlzLnR5cGUuaW5saW5lQ29udGVudH1nZXQgaXNJbmxpbmUoKXtyZXR1cm4gdGhpcy50eXBlLmlzSW5saW5lfWdldCBpc1RleHQoKXtyZXR1cm4gdGhpcy50eXBlLmlzVGV4dH1nZXQgaXNMZWFmKCl7cmV0dXJuIHRoaXMudHlwZS5pc0xlYWZ9Z2V0IGlzQXRvbSgpe3JldHVybiB0aGlzLnR5cGUuaXNBdG9tfXRvU3RyaW5nKCl7aWYodGhpcy50eXBlLnNwZWMudG9EZWJ1Z1N0cmluZylyZXR1cm4gdGhpcy50eXBlLnNwZWMudG9EZWJ1Z1N0cmluZyh0aGlzKTtsZXQgZT10aGlzLnR5cGUubmFtZTtyZXR1cm4gdGhpcy5jb250ZW50LnNpemUmJihlKz0iKCIrdGhpcy5jb250ZW50LnRvU3RyaW5nSW5uZXIoKSsiKSIpLFEwYSh0aGlzLm1hcmtzLGUpfWNvbnRlbnRNYXRjaEF0KGUpe2xldCB0PXRoaXMudHlwZS5jb250ZW50TWF0Y2gubWF0Y2hGcmFnbWVudCh0aGlzLmNvbnRlbnQsMCxlKTtpZighdCl0aHJvdyBuZXcgRXJyb3IoIkNhbGxlZCBjb250ZW50TWF0Y2hBdCBvbiBhIG5vZGUgd2l0aCBpbnZhbGlkIGNvbnRlbnQiKTtyZXR1cm4gdH1jYW5SZXBsYWNlKGUsdCxhPXJ0LmVtcHR5LHI9MCxuPWEuY2hpbGRDb3VudCl7bGV0IG89dGhpcy5jb250ZW50TWF0Y2hBdChlKS5tYXRjaEZyYWdtZW50KGEscixuKSxsPW8mJm8ubWF0Y2hGcmFnbWVudCh0aGlzLmNvbnRlbnQsdCk7aWYoIWx8fCFsLnZhbGlkRW5kKXJldHVybiExO2ZvcihsZXQgcD1yO3A8bjtwKyspaWYoIXRoaXMudHlwZS5hbGxvd3NNYXJrcyhhLmNoaWxkKHApLm1hcmtzKSlyZXR1cm4hMTtyZXR1cm4hMH1jYW5SZXBsYWNlV2l0aChlLHQsYSxyKXtpZihyJiYhdGhpcy50eXBlLmFsbG93c01hcmtzKHIpKXJldHVybiExO2xldCBuPXRoaXMuY29udGVudE1hdGNoQXQoZSkubWF0Y2hUeXBlKGEpLG89biYmbi5tYXRjaEZyYWdtZW50KHRoaXMuY29udGVudCx0KTtyZXR1cm4gbz9vLnZhbGlkRW5kOiExfWNhbkFwcGVuZChlKXtyZXR1cm4gZS5jb250ZW50LnNpemU/dGhpcy5jYW5SZXBsYWNlKHRoaXMuY2hpbGRDb3VudCx0aGlzLmNoaWxkQ291bnQsZS5jb250ZW50KTp0aGlzLnR5cGUuY29tcGF0aWJsZUNvbnRlbnQoZS50eXBlKX1jaGVjaygpe3RoaXMudHlwZS5jaGVja0NvbnRlbnQodGhpcy5jb250ZW50KSx0aGlzLnR5cGUuY2hlY2tBdHRycyh0aGlzLmF0dHJzKTtsZXQgZT1mcy5ub25lO2ZvcihsZXQgdD0wO3Q8dGhpcy5tYXJrcy5sZW5ndGg7dCsrKXtsZXQgYT10aGlzLm1hcmtzW3RdO2EudHlwZS5jaGVja0F0dHJzKGEuYXR0cnMpLGU9YS5hZGRUb1NldChlKX1pZighZnMuc2FtZVNldChlLHRoaXMubWFya3MpKXRocm93IG5ldyBSYW5nZUVycm9yKGBJbnZhbGlkIGNvbGxlY3Rpb24gb2YgbWFya3MgZm9yIG5vZGUgJHt0aGlzLnR5cGUubmFtZX06ICR7dGhpcy5tYXJrcy5tYXAodD0+dC50eXBlLm5hbWUpfWApO3RoaXMuY29udGVudC5mb3JFYWNoKHQ9PnQuY2hlY2soKSl9dG9KU09OKCl7bGV0IGU9e3R5cGU6dGhpcy50eXBlLm5hbWV9O2ZvcihsZXQgdCBpbiB0aGlzLmF0dHJzKXtlLmF0dHJzPXRoaXMuYXR0cnM7YnJlYWt9cmV0dXJuIHRoaXMuY29udGVudC5zaXplJiYoZS5jb250ZW50PXRoaXMuY29udGVudC50b0pTT04oKSksdGhpcy5tYXJrcy5sZW5ndGgmJihlLm1hcmtzPXRoaXMubWFya3MubWFwKHQ9PnQudG9KU09OKCkpKSxlfXN0YXRpYyBmcm9tSlNPTihlLHQpe2lmKCF0KXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBOb2RlLmZyb21KU09OIik7bGV0IGE7aWYodC5tYXJrcyl7aWYoIUFycmF5LmlzQXJyYXkodC5tYXJrcykpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgbWFyayBkYXRhIGZvciBOb2RlLmZyb21KU09OIik7YT10Lm1hcmtzLm1hcChlLm1hcmtGcm9tSlNPTil9aWYodC50eXBlPT0idGV4dCIpe2lmKHR5cGVvZiB0LnRleHQhPSJzdHJpbmciKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIHRleHQgbm9kZSBpbiBKU09OIik7cmV0dXJuIGUudGV4dCh0LnRleHQsYSl9bGV0IHI9cnQuZnJvbUpTT04oZSx0LmNvbnRlbnQpLG49ZS5ub2RlVHlwZSh0LnR5cGUpLmNyZWF0ZSh0LmF0dHJzLHIsYSk7cmV0dXJuIG4udHlwZS5jaGVja0F0dHJzKG4uYXR0cnMpLG59fTtUbi5wcm90b3R5cGUudGV4dD12b2lkIDA7ZnR0PWNsYXNzIHMgZXh0ZW5kcyBUbntzdGF0aWN7aSh0aGlzLCJUZXh0Tm9kZSIpfWNvbnN0cnVjdG9yKGUsdCxhLHIpe2lmKHN1cGVyKGUsdCxudWxsLHIpLCFhKXRocm93IG5ldyBSYW5nZUVycm9yKCJFbXB0eSB0ZXh0IG5vZGVzIGFyZSBub3QgYWxsb3dlZCIpO3RoaXMudGV4dD1hfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMudHlwZS5zcGVjLnRvRGVidWdTdHJpbmc/dGhpcy50eXBlLnNwZWMudG9EZWJ1Z1N0cmluZyh0aGlzKTpRMGEodGhpcy5tYXJrcyxKU09OLnN0cmluZ2lmeSh0aGlzLnRleHQpKX1nZXQgdGV4dENvbnRlbnQoKXtyZXR1cm4gdGhpcy50ZXh0fXRleHRCZXR3ZWVuKGUsdCl7cmV0dXJuIHRoaXMudGV4dC5zbGljZShlLHQpfWdldCBub2RlU2l6ZSgpe3JldHVybiB0aGlzLnRleHQubGVuZ3RofW1hcmsoZSl7cmV0dXJuIGU9PXRoaXMubWFya3M/dGhpczpuZXcgcyh0aGlzLnR5cGUsdGhpcy5hdHRycyx0aGlzLnRleHQsZSl9d2l0aFRleHQoZSl7cmV0dXJuIGU9PXRoaXMudGV4dD90aGlzOm5ldyBzKHRoaXMudHlwZSx0aGlzLmF0dHJzLGUsdGhpcy5tYXJrcyl9Y3V0KGU9MCx0PXRoaXMudGV4dC5sZW5ndGgpe3JldHVybiBlPT0wJiZ0PT10aGlzLnRleHQubGVuZ3RoP3RoaXM6dGhpcy53aXRoVGV4dCh0aGlzLnRleHQuc2xpY2UoZSx0KSl9ZXEoZSl7cmV0dXJuIHRoaXMuc2FtZU1hcmt1cChlKSYmdGhpcy50ZXh0PT1lLnRleHR9dG9KU09OKCl7bGV0IGU9c3VwZXIudG9KU09OKCk7cmV0dXJuIGUudGV4dD10aGlzLnRleHQsZX19O2koUTBhLCJ3cmFwTWFya3MiKTt3aD1jbGFzcyBze3N0YXRpY3tpKHRoaXMsIkNvbnRlbnRNYXRjaCIpfWNvbnN0cnVjdG9yKGUpe3RoaXMudmFsaWRFbmQ9ZSx0aGlzLm5leHQ9W10sdGhpcy53cmFwQ2FjaGU9W119c3RhdGljIHBhcnNlKGUsdCl7bGV0IGE9bmV3IG10dChlLHQpO2lmKGEubmV4dD09bnVsbClyZXR1cm4gcy5lbXB0eTtsZXQgcj1KMGEoYSk7YS5uZXh0JiZhLmVycigiVW5leHBlY3RlZCB0cmFpbGluZyB0ZXh0Iik7bGV0IG49SldhKFFXYShyKSk7cmV0dXJuIGVHYShuLGEpLG59bWF0Y2hUeXBlKGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy5uZXh0Lmxlbmd0aDt0KyspaWYodGhpcy5uZXh0W3RdLnR5cGU9PWUpcmV0dXJuIHRoaXMubmV4dFt0XS5uZXh0O3JldHVybiBudWxsfW1hdGNoRnJhZ21lbnQoZSx0PTAsYT1lLmNoaWxkQ291bnQpe2xldCByPXRoaXM7Zm9yKGxldCBuPXQ7ciYmbjxhO24rKylyPXIubWF0Y2hUeXBlKGUuY2hpbGQobikudHlwZSk7cmV0dXJuIHJ9Z2V0IGlubGluZUNvbnRlbnQoKXtyZXR1cm4gdGhpcy5uZXh0Lmxlbmd0aCE9MCYmdGhpcy5uZXh0WzBdLnR5cGUuaXNJbmxpbmV9Z2V0IGRlZmF1bHRUeXBlKCl7Zm9yKGxldCBlPTA7ZTx0aGlzLm5leHQubGVuZ3RoO2UrKyl7bGV0e3R5cGU6dH09dGhpcy5uZXh0W2VdO2lmKCEodC5pc1RleHR8fHQuaGFzUmVxdWlyZWRBdHRycygpKSlyZXR1cm4gdH1yZXR1cm4gbnVsbH1jb21wYXRpYmxlKGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy5uZXh0Lmxlbmd0aDt0KyspZm9yKGxldCBhPTA7YTxlLm5leHQubGVuZ3RoO2ErKylpZih0aGlzLm5leHRbdF0udHlwZT09ZS5uZXh0W2FdLnR5cGUpcmV0dXJuITA7cmV0dXJuITF9ZmlsbEJlZm9yZShlLHQ9ITEsYT0wKXtsZXQgcj1bdGhpc107ZnVuY3Rpb24gbihvLGwpe2xldCBwPW8ubWF0Y2hGcmFnbWVudChlLGEpO2lmKHAmJighdHx8cC52YWxpZEVuZCkpcmV0dXJuIHJ0LmZyb20obC5tYXAoZD0+ZC5jcmVhdGVBbmRGaWxsKCkpKTtmb3IobGV0IGQ9MDtkPG8ubmV4dC5sZW5ndGg7ZCsrKXtsZXR7dHlwZTp1LG5leHQ6Y309by5uZXh0W2RdO2lmKCEodS5pc1RleHR8fHUuaGFzUmVxdWlyZWRBdHRycygpKSYmci5pbmRleE9mKGMpPT0tMSl7ci5wdXNoKGMpO2xldCBiPW4oYyxsLmNvbmNhdCh1KSk7aWYoYilyZXR1cm4gYn19cmV0dXJuIG51bGx9cmV0dXJuIGkobiwic2VhcmNoIiksbih0aGlzLFtdKX1maW5kV3JhcHBpbmcoZSl7Zm9yKGxldCBhPTA7YTx0aGlzLndyYXBDYWNoZS5sZW5ndGg7YSs9MilpZih0aGlzLndyYXBDYWNoZVthXT09ZSlyZXR1cm4gdGhpcy53cmFwQ2FjaGVbYSsxXTtsZXQgdD10aGlzLmNvbXB1dGVXcmFwcGluZyhlKTtyZXR1cm4gdGhpcy53cmFwQ2FjaGUucHVzaChlLHQpLHR9Y29tcHV0ZVdyYXBwaW5nKGUpe2xldCB0PU9iamVjdC5jcmVhdGUobnVsbCksYT1be21hdGNoOnRoaXMsdHlwZTpudWxsLHZpYTpudWxsfV07Zm9yKDthLmxlbmd0aDspe2xldCByPWEuc2hpZnQoKSxuPXIubWF0Y2g7aWYobi5tYXRjaFR5cGUoZSkpe2xldCBvPVtdO2ZvcihsZXQgbD1yO2wudHlwZTtsPWwudmlhKW8ucHVzaChsLnR5cGUpO3JldHVybiBvLnJldmVyc2UoKX1mb3IobGV0IG89MDtvPG4ubmV4dC5sZW5ndGg7bysrKXtsZXR7dHlwZTpsLG5leHQ6cH09bi5uZXh0W29dOyFsLmlzTGVhZiYmIWwuaGFzUmVxdWlyZWRBdHRycygpJiYhKGwubmFtZSBpbiB0KSYmKCFyLnR5cGV8fHAudmFsaWRFbmQpJiYoYS5wdXNoKHttYXRjaDpsLmNvbnRlbnRNYXRjaCx0eXBlOmwsdmlhOnJ9KSx0W2wubmFtZV09ITApfX1yZXR1cm4gbnVsbH1nZXQgZWRnZUNvdW50KCl7cmV0dXJuIHRoaXMubmV4dC5sZW5ndGh9ZWRnZShlKXtpZihlPj10aGlzLm5leHQubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKGBUaGVyZSdzIG5vICR7ZX10aCBlZGdlIGluIHRoaXMgY29udGVudCBtYXRjaGApO3JldHVybiB0aGlzLm5leHRbZV19dG9TdHJpbmcoKXtsZXQgZT1bXTtmdW5jdGlvbiB0KGEpe2UucHVzaChhKTtmb3IobGV0IHI9MDtyPGEubmV4dC5sZW5ndGg7cisrKWUuaW5kZXhPZihhLm5leHRbcl0ubmV4dCk9PS0xJiZ0KGEubmV4dFtyXS5uZXh0KX1yZXR1cm4gaSh0LCJzY2FuIiksdCh0aGlzKSxlLm1hcCgoYSxyKT0+e2xldCBuPXIrKGEudmFsaWRFbmQ/IioiOiIgIikrIiAiO2ZvcihsZXQgbz0wO288YS5uZXh0Lmxlbmd0aDtvKyspbis9KG8/IiwgIjoiIikrYS5uZXh0W29dLnR5cGUubmFtZSsiLT4iK2UuaW5kZXhPZihhLm5leHRbb10ubmV4dCk7cmV0dXJuIG59KS5qb2luKGAKYCl9fTt3aC5lbXB0eT1uZXcgd2goITApO210dD1jbGFzc3tzdGF0aWN7aSh0aGlzLCJUb2tlblN0cmVhbSIpfWNvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdHJpbmc9ZSx0aGlzLm5vZGVUeXBlcz10LHRoaXMuaW5saW5lPW51bGwsdGhpcy5wb3M9MCx0aGlzLnRva2Vucz1lLnNwbGl0KC9ccyooPz1cYnxcV3wkKS8pLHRoaXMudG9rZW5zW3RoaXMudG9rZW5zLmxlbmd0aC0xXT09IiImJnRoaXMudG9rZW5zLnBvcCgpLHRoaXMudG9rZW5zWzBdPT0iIiYmdGhpcy50b2tlbnMuc2hpZnQoKX1nZXQgbmV4dCgpe3JldHVybiB0aGlzLnRva2Vuc1t0aGlzLnBvc119ZWF0KGUpe3JldHVybiB0aGlzLm5leHQ9PWUmJih0aGlzLnBvcysrfHwhMCl9ZXJyKGUpe3Rocm93IG5ldyBTeW50YXhFcnJvcihlKyIgKGluIGNvbnRlbnQgZXhwcmVzc2lvbiAnIit0aGlzLnN0cmluZysiJykiKX19O2koSjBhLCJwYXJzZUV4cHIiKTtpKEdXYSwicGFyc2VFeHByU2VxIik7aShLV2EsInBhcnNlRXhwclN1YnNjcmlwdCIpO2koZXVhLCJwYXJzZU51bSIpO2koWVdhLCJwYXJzZUV4cHJSYW5nZSIpO2koWldhLCJyZXNvbHZlTmFtZSIpO2koWFdhLCJwYXJzZUV4cHJBdG9tIik7aShRV2EsIm5mYSIpO2kodHVhLCJjbXAiKTtpKGF1YSwibnVsbEZyb20iKTtpKEpXYSwiZGZhIik7aShlR2EsImNoZWNrRm9yRGVhZEVuZHMiKTtpKHN1YSwiZGVmYXVsdEF0dHJzIik7aShpdWEsImNvbXB1dGVBdHRycyIpO2kocnVhLCJjaGVja0F0dHJzIik7aShvdWEsImluaXRBdHRycyIpO1JaPWNsYXNzIHN7c3RhdGlje2kodGhpcywiTm9kZVR5cGUiKX1jb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5uYW1lPWUsdGhpcy5zY2hlbWE9dCx0aGlzLnNwZWM9YSx0aGlzLm1hcmtTZXQ9bnVsbCx0aGlzLmdyb3Vwcz1hLmdyb3VwP2EuZ3JvdXAuc3BsaXQoIiAiKTpbXSx0aGlzLmF0dHJzPW91YShlLGEuYXR0cnMpLHRoaXMuZGVmYXVsdEF0dHJzPXN1YSh0aGlzLmF0dHJzKSx0aGlzLmNvbnRlbnRNYXRjaD1udWxsLHRoaXMuaW5saW5lQ29udGVudD1udWxsLHRoaXMuaXNCbG9jaz0hKGEuaW5saW5lfHxlPT0idGV4dCIpLHRoaXMuaXNUZXh0PWU9PSJ0ZXh0In1nZXQgaXNJbmxpbmUoKXtyZXR1cm4hdGhpcy5pc0Jsb2NrfWdldCBpc1RleHRibG9jaygpe3JldHVybiB0aGlzLmlzQmxvY2smJnRoaXMuaW5saW5lQ29udGVudH1nZXQgaXNMZWFmKCl7cmV0dXJuIHRoaXMuY29udGVudE1hdGNoPT13aC5lbXB0eX1nZXQgaXNBdG9tKCl7cmV0dXJuIHRoaXMuaXNMZWFmfHwhIXRoaXMuc3BlYy5hdG9tfWlzSW5Hcm91cChlKXtyZXR1cm4gdGhpcy5ncm91cHMuaW5kZXhPZihlKT4tMX1nZXQgd2hpdGVzcGFjZSgpe3JldHVybiB0aGlzLnNwZWMud2hpdGVzcGFjZXx8KHRoaXMuc3BlYy5jb2RlPyJwcmUiOiJub3JtYWwiKX1oYXNSZXF1aXJlZEF0dHJzKCl7Zm9yKGxldCBlIGluIHRoaXMuYXR0cnMpaWYodGhpcy5hdHRyc1tlXS5pc1JlcXVpcmVkKXJldHVybiEwO3JldHVybiExfWNvbXBhdGlibGVDb250ZW50KGUpe3JldHVybiB0aGlzPT1lfHx0aGlzLmNvbnRlbnRNYXRjaC5jb21wYXRpYmxlKGUuY29udGVudE1hdGNoKX1jb21wdXRlQXR0cnMoZSl7cmV0dXJuIWUmJnRoaXMuZGVmYXVsdEF0dHJzP3RoaXMuZGVmYXVsdEF0dHJzOml1YSh0aGlzLmF0dHJzLGUpfWNyZWF0ZShlPW51bGwsdCxhKXtpZih0aGlzLmlzVGV4dCl0aHJvdyBuZXcgRXJyb3IoIk5vZGVUeXBlLmNyZWF0ZSBjYW4ndCBjb25zdHJ1Y3QgdGV4dCBub2RlcyIpO3JldHVybiBuZXcgVG4odGhpcyx0aGlzLmNvbXB1dGVBdHRycyhlKSxydC5mcm9tKHQpLGZzLnNldEZyb20oYSkpfWNyZWF0ZUNoZWNrZWQoZT1udWxsLHQsYSl7cmV0dXJuIHQ9cnQuZnJvbSh0KSx0aGlzLmNoZWNrQ29udGVudCh0KSxuZXcgVG4odGhpcyx0aGlzLmNvbXB1dGVBdHRycyhlKSx0LGZzLnNldEZyb20oYSkpfWNyZWF0ZUFuZEZpbGwoZT1udWxsLHQsYSl7aWYoZT10aGlzLmNvbXB1dGVBdHRycyhlKSx0PXJ0LmZyb20odCksdC5zaXplKXtsZXQgbz10aGlzLmNvbnRlbnRNYXRjaC5maWxsQmVmb3JlKHQpO2lmKCFvKXJldHVybiBudWxsO3Q9by5hcHBlbmQodCl9bGV0IHI9dGhpcy5jb250ZW50TWF0Y2gubWF0Y2hGcmFnbWVudCh0KSxuPXImJnIuZmlsbEJlZm9yZShydC5lbXB0eSwhMCk7cmV0dXJuIG4/bmV3IFRuKHRoaXMsZSx0LmFwcGVuZChuKSxmcy5zZXRGcm9tKGEpKTpudWxsfXZhbGlkQ29udGVudChlKXtsZXQgdD10aGlzLmNvbnRlbnRNYXRjaC5tYXRjaEZyYWdtZW50KGUpO2lmKCF0fHwhdC52YWxpZEVuZClyZXR1cm4hMTtmb3IobGV0IGE9MDthPGUuY2hpbGRDb3VudDthKyspaWYoIXRoaXMuYWxsb3dzTWFya3MoZS5jaGlsZChhKS5tYXJrcykpcmV0dXJuITE7cmV0dXJuITB9Y2hlY2tDb250ZW50KGUpe2lmKCF0aGlzLnZhbGlkQ29udGVudChlKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgSW52YWxpZCBjb250ZW50IGZvciBub2RlICR7dGhpcy5uYW1lfTogJHtlLnRvU3RyaW5nKCkuc2xpY2UoMCw1MCl9YCl9Y2hlY2tBdHRycyhlKXtydWEodGhpcy5hdHRycyxlLCJub2RlIix0aGlzLm5hbWUpfWFsbG93c01hcmtUeXBlKGUpe3JldHVybiB0aGlzLm1hcmtTZXQ9PW51bGx8fHRoaXMubWFya1NldC5pbmRleE9mKGUpPi0xfWFsbG93c01hcmtzKGUpe2lmKHRoaXMubWFya1NldD09bnVsbClyZXR1cm4hMDtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKylpZighdGhpcy5hbGxvd3NNYXJrVHlwZShlW3RdLnR5cGUpKXJldHVybiExO3JldHVybiEwfWFsbG93ZWRNYXJrcyhlKXtpZih0aGlzLm1hcmtTZXQ9PW51bGwpcmV0dXJuIGU7bGV0IHQ7Zm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspdGhpcy5hbGxvd3NNYXJrVHlwZShlW2FdLnR5cGUpP3QmJnQucHVzaChlW2FdKTp0fHwodD1lLnNsaWNlKDAsYSkpO3JldHVybiB0P3QubGVuZ3RoP3Q6ZnMubm9uZTplfXN0YXRpYyBjb21waWxlKGUsdCl7bGV0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTtlLmZvckVhY2goKG4sbyk9PmFbbl09bmV3IHMobix0LG8pKTtsZXQgcj10LnNwZWMudG9wTm9kZXx8ImRvYyI7aWYoIWFbcl0pdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlNjaGVtYSBpcyBtaXNzaW5nIGl0cyB0b3Agbm9kZSB0eXBlICgnIityKyInKSIpO2lmKCFhLnRleHQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkV2ZXJ5IHNjaGVtYSBuZWVkcyBhICd0ZXh0JyB0eXBlIik7Zm9yKGxldCBuIGluIGEudGV4dC5hdHRycyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVGhlIHRleHQgbm9kZSB0eXBlIHNob3VsZCBub3QgaGF2ZSBhdHRyaWJ1dGVzIik7cmV0dXJuIGF9fTtpKHRHYSwidmFsaWRhdGVUeXBlIik7Z3R0PWNsYXNze3N0YXRpY3tpKHRoaXMsIkF0dHJpYnV0ZSIpfWNvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmhhc0RlZmF1bHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsImRlZmF1bHQiKSx0aGlzLmRlZmF1bHQ9YS5kZWZhdWx0LHRoaXMudmFsaWRhdGU9dHlwZW9mIGEudmFsaWRhdGU9PSJzdHJpbmciP3RHYShlLHQsYS52YWxpZGF0ZSk6YS52YWxpZGF0ZX1nZXQgaXNSZXF1aXJlZCgpe3JldHVybiF0aGlzLmhhc0RlZmF1bHR9fSx2dj1jbGFzcyBze3N0YXRpY3tpKHRoaXMsIk1hcmtUeXBlIil9Y29uc3RydWN0b3IoZSx0LGEscil7dGhpcy5uYW1lPWUsdGhpcy5yYW5rPXQsdGhpcy5zY2hlbWE9YSx0aGlzLnNwZWM9cix0aGlzLmF0dHJzPW91YShlLHIuYXR0cnMpLHRoaXMuZXhjbHVkZWQ9bnVsbDtsZXQgbj1zdWEodGhpcy5hdHRycyk7dGhpcy5pbnN0YW5jZT1uP25ldyBmcyh0aGlzLG4pOm51bGx9Y3JlYXRlKGU9bnVsbCl7cmV0dXJuIWUmJnRoaXMuaW5zdGFuY2U/dGhpcy5pbnN0YW5jZTpuZXcgZnModGhpcyxpdWEodGhpcy5hdHRycyxlKSl9c3RhdGljIGNvbXBpbGUoZSx0KXtsZXQgYT1PYmplY3QuY3JlYXRlKG51bGwpLHI9MDtyZXR1cm4gZS5mb3JFYWNoKChuLG8pPT5hW25dPW5ldyBzKG4scisrLHQsbykpLGF9cmVtb3ZlRnJvbVNldChlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdLnR5cGU9PXRoaXMmJihlPWUuc2xpY2UoMCx0KS5jb25jYXQoZS5zbGljZSh0KzEpKSx0LS0pO3JldHVybiBlfWlzSW5TZXQoZSl7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspaWYoZVt0XS50eXBlPT10aGlzKXJldHVybiBlW3RdfWNoZWNrQXR0cnMoZSl7cnVhKHRoaXMuYXR0cnMsZSwibWFyayIsdGhpcy5uYW1lKX1leGNsdWRlcyhlKXtyZXR1cm4gdGhpcy5leGNsdWRlZC5pbmRleE9mKGUpPi0xfX0seHY9Y2xhc3N7c3RhdGlje2kodGhpcywiU2NoZW1hIil9Y29uc3RydWN0b3IoZSl7dGhpcy5saW5lYnJlYWtSZXBsYWNlbWVudD1udWxsLHRoaXMuY2FjaGVkPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHQ9dGhpcy5zcGVjPXt9O2ZvcihsZXQgciBpbiBlKXRbcl09ZVtyXTt0Lm5vZGVzPWR0dC5mcm9tKGUubm9kZXMpLHQubWFya3M9ZHR0LmZyb20oZS5tYXJrc3x8e30pLHRoaXMubm9kZXM9UlouY29tcGlsZSh0aGlzLnNwZWMubm9kZXMsdGhpcyksdGhpcy5tYXJrcz12di5jb21waWxlKHRoaXMuc3BlYy5tYXJrcyx0aGlzKTtsZXQgYT1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgciBpbiB0aGlzLm5vZGVzKXtpZihyIGluIHRoaXMubWFya3MpdGhyb3cgbmV3IFJhbmdlRXJyb3IocisiIGNhbiBub3QgYmUgYm90aCBhIG5vZGUgYW5kIGEgbWFyayIpO2xldCBuPXRoaXMubm9kZXNbcl0sbz1uLnNwZWMuY29udGVudHx8IiIsbD1uLnNwZWMubWFya3M7aWYobi5jb250ZW50TWF0Y2g9YVtvXXx8KGFbb109d2gucGFyc2Uobyx0aGlzLm5vZGVzKSksbi5pbmxpbmVDb250ZW50PW4uY29udGVudE1hdGNoLmlubGluZUNvbnRlbnQsbi5zcGVjLmxpbmVicmVha1JlcGxhY2VtZW50KXtpZih0aGlzLmxpbmVicmVha1JlcGxhY2VtZW50KXRocm93IG5ldyBSYW5nZUVycm9yKCJNdWx0aXBsZSBsaW5lYnJlYWsgbm9kZXMgZGVmaW5lZCIpO2lmKCFuLmlzSW5saW5lfHwhbi5pc0xlYWYpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkxpbmVicmVhayByZXBsYWNlbWVudCBub2RlcyBtdXN0IGJlIGlubGluZSBsZWFmIG5vZGVzIik7dGhpcy5saW5lYnJlYWtSZXBsYWNlbWVudD1ufW4ubWFya1NldD1sPT0iXyI/bnVsbDpsP251YSh0aGlzLGwuc3BsaXQoIiAiKSk6bD09IiJ8fCFuLmlubGluZUNvbnRlbnQ/W106bnVsbH1mb3IobGV0IHIgaW4gdGhpcy5tYXJrcyl7bGV0IG49dGhpcy5tYXJrc1tyXSxvPW4uc3BlYy5leGNsdWRlcztuLmV4Y2x1ZGVkPW89PW51bGw/W25dOm89PSIiP1tdOm51YSh0aGlzLG8uc3BsaXQoIiAiKSl9dGhpcy5ub2RlRnJvbUpTT049cj0+VG4uZnJvbUpTT04odGhpcyxyKSx0aGlzLm1hcmtGcm9tSlNPTj1yPT5mcy5mcm9tSlNPTih0aGlzLHIpLHRoaXMudG9wTm9kZVR5cGU9dGhpcy5ub2Rlc1t0aGlzLnNwZWMudG9wTm9kZXx8ImRvYyJdLHRoaXMuY2FjaGVkLndyYXBwaW5ncz1PYmplY3QuY3JlYXRlKG51bGwpfW5vZGUoZSx0PW51bGwsYSxyKXtpZih0eXBlb2YgZT09InN0cmluZyIpZT10aGlzLm5vZGVUeXBlKGUpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIFJaKXtpZihlLnNjaGVtYSE9dGhpcyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTm9kZSB0eXBlIGZyb20gZGlmZmVyZW50IHNjaGVtYSB1c2VkICgiK2UubmFtZSsiKSIpfWVsc2UgdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgbm9kZSB0eXBlOiAiK2UpO3JldHVybiBlLmNyZWF0ZUNoZWNrZWQodCxhLHIpfXRleHQoZSx0KXtsZXQgYT10aGlzLm5vZGVzLnRleHQ7cmV0dXJuIG5ldyBmdHQoYSxhLmRlZmF1bHRBdHRycyxlLGZzLnNldEZyb20odCkpfW1hcmsoZSx0KXtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmciJiYoZT10aGlzLm1hcmtzW2VdKSxlLmNyZWF0ZSh0KX1ub2RlVHlwZShlKXtsZXQgdD10aGlzLm5vZGVzW2VdO2lmKCF0KXRocm93IG5ldyBSYW5nZUVycm9yKCJVbmtub3duIG5vZGUgdHlwZTogIitlKTtyZXR1cm4gdH19O2kobnVhLCJnYXRoZXJNYXJrcyIpO2koYUdhLCJpc1RhZ1J1bGUiKTtpKHNHYSwiaXNTdHlsZVJ1bGUiKTtlMj1jbGFzcyBze3N0YXRpY3tpKHRoaXMsIkRPTVBhcnNlciIpfWNvbnN0cnVjdG9yKGUsdCl7dGhpcy5zY2hlbWE9ZSx0aGlzLnJ1bGVzPXQsdGhpcy50YWdzPVtdLHRoaXMuc3R5bGVzPVtdO2xldCBhPXRoaXMubWF0Y2hlZFN0eWxlcz1bXTt0LmZvckVhY2gocj0+e2lmKGFHYShyKSl0aGlzLnRhZ3MucHVzaChyKTtlbHNlIGlmKHNHYShyKSl7bGV0IG49L1tePV0qLy5leGVjKHIuc3R5bGUpWzBdO2EuaW5kZXhPZihuKTwwJiZhLnB1c2gobiksdGhpcy5zdHlsZXMucHVzaChyKX19KSx0aGlzLm5vcm1hbGl6ZUxpc3RzPSF0aGlzLnRhZ3Muc29tZShyPT57aWYoIS9eKHVsfG9sKVxiLy50ZXN0KHIudGFnKXx8IXIubm9kZSlyZXR1cm4hMTtsZXQgbj1lLm5vZGVzW3Iubm9kZV07cmV0dXJuIG4uY29udGVudE1hdGNoLm1hdGNoVHlwZShuKX0pfXBhcnNlKGUsdD17fSl7bGV0IGE9bmV3IEJuZSh0aGlzLHQsITEpO3JldHVybiBhLmFkZEFsbChlLGZzLm5vbmUsdC5mcm9tLHQudG8pLGEuZmluaXNoKCl9cGFyc2VTbGljZShlLHQ9e30pe2xldCBhPW5ldyBCbmUodGhpcyx0LCEwKTtyZXR1cm4gYS5hZGRBbGwoZSxmcy5ub25lLHQuZnJvbSx0LnRvKSxfdC5tYXhPcGVuKGEuZmluaXNoKCkpfW1hdGNoVGFnKGUsdCxhKXtmb3IobGV0IHI9YT90aGlzLnRhZ3MuaW5kZXhPZihhKSsxOjA7cjx0aGlzLnRhZ3MubGVuZ3RoO3IrKyl7bGV0IG49dGhpcy50YWdzW3JdO2lmKG9HYShlLG4udGFnKSYmKG4ubmFtZXNwYWNlPT09dm9pZCAwfHxlLm5hbWVzcGFjZVVSST09bi5uYW1lc3BhY2UpJiYoIW4uY29udGV4dHx8dC5tYXRjaGVzQ29udGV4dChuLmNvbnRleHQpKSl7aWYobi5nZXRBdHRycyl7bGV0IG89bi5nZXRBdHRycyhlKTtpZihvPT09ITEpY29udGludWU7bi5hdHRycz1vfHx2b2lkIDB9cmV0dXJuIG59fX1tYXRjaFN0eWxlKGUsdCxhLHIpe2ZvcihsZXQgbj1yP3RoaXMuc3R5bGVzLmluZGV4T2YocikrMTowO248dGhpcy5zdHlsZXMubGVuZ3RoO24rKyl7bGV0IG89dGhpcy5zdHlsZXNbbl0sbD1vLnN0eWxlO2lmKCEobC5pbmRleE9mKGUpIT0wfHxvLmNvbnRleHQmJiFhLm1hdGNoZXNDb250ZXh0KG8uY29udGV4dCl8fGwubGVuZ3RoPmUubGVuZ3RoJiYobC5jaGFyQ29kZUF0KGUubGVuZ3RoKSE9NjF8fGwuc2xpY2UoZS5sZW5ndGgrMSkhPXQpKSl7aWYoby5nZXRBdHRycyl7bGV0IHA9by5nZXRBdHRycyh0KTtpZihwPT09ITEpY29udGludWU7by5hdHRycz1wfHx2b2lkIDB9cmV0dXJuIG99fX1zdGF0aWMgc2NoZW1hUnVsZXMoZSl7bGV0IHQ9W107ZnVuY3Rpb24gYShyKXtsZXQgbj1yLnByaW9yaXR5PT1udWxsPzUwOnIucHJpb3JpdHksbz0wO2Zvcig7bzx0Lmxlbmd0aDtvKyspe2xldCBsPXRbb107aWYoKGwucHJpb3JpdHk9PW51bGw/NTA6bC5wcmlvcml0eSk8bilicmVha310LnNwbGljZShvLDAscil9aShhLCJpbnNlcnQiKTtmb3IobGV0IHIgaW4gZS5tYXJrcyl7bGV0IG49ZS5tYXJrc1tyXS5zcGVjLnBhcnNlRE9NO24mJm4uZm9yRWFjaChvPT57YShvPXV1YShvKSksby5tYXJrfHxvLmlnbm9yZXx8by5jbGVhck1hcmt8fChvLm1hcms9cil9KX1mb3IobGV0IHIgaW4gZS5ub2Rlcyl7bGV0IG49ZS5ub2Rlc1tyXS5zcGVjLnBhcnNlRE9NO24mJm4uZm9yRWFjaChvPT57YShvPXV1YShvKSksby5ub2RlfHxvLmlnbm9yZXx8by5tYXJrfHwoby5ub2RlPXIpfSl9cmV0dXJuIHR9c3RhdGljIGZyb21TY2hlbWEoZSl7cmV0dXJuIGUuY2FjaGVkLmRvbVBhcnNlcnx8KGUuY2FjaGVkLmRvbVBhcnNlcj1uZXcgcyhlLHMuc2NoZW1hUnVsZXMoZSkpKX19LGx1YT17YWRkcmVzczohMCxhcnRpY2xlOiEwLGFzaWRlOiEwLGJsb2NrcXVvdGU6ITAsY2FudmFzOiEwLGRkOiEwLGRpdjohMCxkbDohMCxmaWVsZHNldDohMCxmaWdjYXB0aW9uOiEwLGZpZ3VyZTohMCxmb290ZXI6ITAsZm9ybTohMCxoMTohMCxoMjohMCxoMzohMCxoNDohMCxoNTohMCxoNjohMCxoZWFkZXI6ITAsaGdyb3VwOiEwLGhyOiEwLGxpOiEwLG5vc2NyaXB0OiEwLG9sOiEwLG91dHB1dDohMCxwOiEwLHByZTohMCxzZWN0aW9uOiEwLHRhYmxlOiEwLHRmb290OiEwLHVsOiEwfSxpR2E9e2hlYWQ6ITAsbm9zY3JpcHQ6ITAsb2JqZWN0OiEwLHNjcmlwdDohMCxzdHlsZTohMCx0aXRsZTohMH0sY3VhPXtvbDohMCx1bDohMH0sT1o9MSxidHQ9MixGWj00O2koZHVhLCJ3c09wdGlvbnNGb3IiKTtidj1jbGFzc3tzdGF0aWN7aSh0aGlzLCJOb2RlQ29udGV4dCIpfWNvbnN0cnVjdG9yKGUsdCxhLHIsbixvKXt0aGlzLnR5cGU9ZSx0aGlzLmF0dHJzPXQsdGhpcy5tYXJrcz1hLHRoaXMuc29saWQ9cix0aGlzLm9wdGlvbnM9byx0aGlzLmNvbnRlbnQ9W10sdGhpcy5hY3RpdmVNYXJrcz1mcy5ub25lLHRoaXMubWF0Y2g9bnx8KG8mRlo/bnVsbDplLmNvbnRlbnRNYXRjaCl9ZmluZFdyYXBwaW5nKGUpe2lmKCF0aGlzLm1hdGNoKXtpZighdGhpcy50eXBlKXJldHVybltdO2xldCB0PXRoaXMudHlwZS5jb250ZW50TWF0Y2guZmlsbEJlZm9yZShydC5mcm9tKGUpKTtpZih0KXRoaXMubWF0Y2g9dGhpcy50eXBlLmNvbnRlbnRNYXRjaC5tYXRjaEZyYWdtZW50KHQpO2Vsc2V7bGV0IGE9dGhpcy50eXBlLmNvbnRlbnRNYXRjaCxyO3JldHVybihyPWEuZmluZFdyYXBwaW5nKGUudHlwZSkpPyh0aGlzLm1hdGNoPWEscik6bnVsbH19cmV0dXJuIHRoaXMubWF0Y2guZmluZFdyYXBwaW5nKGUudHlwZSl9ZmluaXNoKGUpe2lmKCEodGhpcy5vcHRpb25zJk9aKSl7bGV0IGE9dGhpcy5jb250ZW50W3RoaXMuY29udGVudC5sZW5ndGgtMV0scjtpZihhJiZhLmlzVGV4dCYmKHI9L1sgXHRcclxuXHUwMDBjXSskLy5leGVjKGEudGV4dCkpKXtsZXQgbj1hO2EudGV4dC5sZW5ndGg9PXJbMF0ubGVuZ3RoP3RoaXMuY29udGVudC5wb3AoKTp0aGlzLmNvbnRlbnRbdGhpcy5jb250ZW50Lmxlbmd0aC0xXT1uLndpdGhUZXh0KG4udGV4dC5zbGljZSgwLG4udGV4dC5sZW5ndGgtclswXS5sZW5ndGgpKX19bGV0IHQ9cnQuZnJvbSh0aGlzLmNvbnRlbnQpO3JldHVybiFlJiZ0aGlzLm1hdGNoJiYodD10LmFwcGVuZCh0aGlzLm1hdGNoLmZpbGxCZWZvcmUocnQuZW1wdHksITApKSksdGhpcy50eXBlP3RoaXMudHlwZS5jcmVhdGUodGhpcy5hdHRycyx0LHRoaXMubWFya3MpOnR9aW5saW5lQ29udGV4dChlKXtyZXR1cm4gdGhpcy50eXBlP3RoaXMudHlwZS5pbmxpbmVDb250ZW50OnRoaXMuY29udGVudC5sZW5ndGg/dGhpcy5jb250ZW50WzBdLmlzSW5saW5lOmUucGFyZW50Tm9kZSYmIWx1YS5oYXNPd25Qcm9wZXJ0eShlLnBhcmVudE5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl9fSxCbmU9Y2xhc3N7c3RhdGlje2kodGhpcywiUGFyc2VDb250ZXh0Iil9Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMucGFyc2VyPWUsdGhpcy5vcHRpb25zPXQsdGhpcy5pc09wZW49YSx0aGlzLm9wZW49MCx0aGlzLmxvY2FsUHJlc2VydmVXUz0hMTtsZXQgcj10LnRvcE5vZGUsbixvPWR1YShudWxsLHQucHJlc2VydmVXaGl0ZXNwYWNlLDApfChhP0ZaOjApO3I/bj1uZXcgYnYoci50eXBlLHIuYXR0cnMsZnMubm9uZSwhMCx0LnRvcE1hdGNofHxyLnR5cGUuY29udGVudE1hdGNoLG8pOmE/bj1uZXcgYnYobnVsbCxudWxsLGZzLm5vbmUsITAsbnVsbCxvKTpuPW5ldyBidihlLnNjaGVtYS50b3BOb2RlVHlwZSxudWxsLGZzLm5vbmUsITAsbnVsbCxvKSx0aGlzLm5vZGVzPVtuXSx0aGlzLmZpbmQ9dC5maW5kUG9zaXRpb25zLHRoaXMubmVlZHNCbG9jaz0hMX1nZXQgdG9wKCl7cmV0dXJuIHRoaXMubm9kZXNbdGhpcy5vcGVuXX1hZGRET00oZSx0KXtlLm5vZGVUeXBlPT0zP3RoaXMuYWRkVGV4dE5vZGUoZSx0KTplLm5vZGVUeXBlPT0xJiZ0aGlzLmFkZEVsZW1lbnQoZSx0KX1hZGRUZXh0Tm9kZShlLHQpe2xldCBhPWUubm9kZVZhbHVlLHI9dGhpcy50b3Asbj1yLm9wdGlvbnMmYnR0PyJmdWxsIjp0aGlzLmxvY2FsUHJlc2VydmVXU3x8KHIub3B0aW9ucyZPWik+MCx7c2NoZW1hOm99PXRoaXMucGFyc2VyO2lmKG49PT0iZnVsbCJ8fHIuaW5saW5lQ29udGV4dChlKXx8L1teIFx0XHJcblx1MDAwY10vLnRlc3QoYSkpe2lmKG4paWYobj09PSJmdWxsIilhPWEucmVwbGFjZSgvXHJcbj8vZyxgCmApO2Vsc2UgaWYoby5saW5lYnJlYWtSZXBsYWNlbWVudCYmL1tcclxuXS8udGVzdChhKSYmdGhpcy50b3AuZmluZFdyYXBwaW5nKG8ubGluZWJyZWFrUmVwbGFjZW1lbnQuY3JlYXRlKCkpKXtsZXQgbD1hLnNwbGl0KC9ccj9cbnxcci8pO2ZvcihsZXQgcD0wO3A8bC5sZW5ndGg7cCsrKXAmJnRoaXMuaW5zZXJ0Tm9kZShvLmxpbmVicmVha1JlcGxhY2VtZW50LmNyZWF0ZSgpLHQsITApLGxbcF0mJnRoaXMuaW5zZXJ0Tm9kZShvLnRleHQobFtwXSksdCwhL1xTLy50ZXN0KGxbcF0pKTthPSIifWVsc2UgYT1hLnJlcGxhY2UoL1xyP1xufFxyL2csIiAiKTtlbHNlIGlmKGE9YS5yZXBsYWNlKC9bIFx0XHJcblx1MDAwY10rL2csIiAiKSwvXlsgXHRcclxuXHUwMDBjXS8udGVzdChhKSYmdGhpcy5vcGVuPT10aGlzLm5vZGVzLmxlbmd0aC0xKXtsZXQgbD1yLmNvbnRlbnRbci5jb250ZW50Lmxlbmd0aC0xXSxwPWUucHJldmlvdXNTaWJsaW5nOyghbHx8cCYmcC5ub2RlTmFtZT09IkJSInx8bC5pc1RleHQmJi9bIFx0XHJcblx1MDAwY10kLy50ZXN0KGwudGV4dCkpJiYoYT1hLnNsaWNlKDEpKX1hJiZ0aGlzLmluc2VydE5vZGUoby50ZXh0KGEpLHQsIS9cUy8udGVzdChhKSksdGhpcy5maW5kSW5UZXh0KGUpfWVsc2UgdGhpcy5maW5kSW5zaWRlKGUpfWFkZEVsZW1lbnQoZSx0LGEpe2xldCByPXRoaXMubG9jYWxQcmVzZXJ2ZVdTLG49dGhpcy50b3A7KGUudGFnTmFtZT09IlBSRSJ8fC9wcmUvLnRlc3QoZS5zdHlsZSYmZS5zdHlsZS53aGl0ZVNwYWNlKSkmJih0aGlzLmxvY2FsUHJlc2VydmVXUz0hMCk7bGV0IG89ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLGw7Y3VhLmhhc093blByb3BlcnR5KG8pJiZ0aGlzLnBhcnNlci5ub3JtYWxpemVMaXN0cyYmckdhKGUpO2xldCBwPXRoaXMub3B0aW9ucy5ydWxlRnJvbU5vZGUmJnRoaXMub3B0aW9ucy5ydWxlRnJvbU5vZGUoZSl8fChsPXRoaXMucGFyc2VyLm1hdGNoVGFnKGUsdGhpcyxhKSk7ZTppZihwP3AuaWdub3JlOmlHYS5oYXNPd25Qcm9wZXJ0eShvKSl0aGlzLmZpbmRJbnNpZGUoZSksdGhpcy5pZ25vcmVGYWxsYmFjayhlLHQpO2Vsc2UgaWYoIXB8fHAuc2tpcHx8cC5jbG9zZVBhcmVudCl7cCYmcC5jbG9zZVBhcmVudD90aGlzLm9wZW49TWF0aC5tYXgoMCx0aGlzLm9wZW4tMSk6cCYmcC5za2lwLm5vZGVUeXBlJiYoZT1wLnNraXApO2xldCBkLHU9dGhpcy5uZWVkc0Jsb2NrO2lmKGx1YS5oYXNPd25Qcm9wZXJ0eShvKSluLmNvbnRlbnQubGVuZ3RoJiZuLmNvbnRlbnRbMF0uaXNJbmxpbmUmJnRoaXMub3BlbiYmKHRoaXMub3Blbi0tLG49dGhpcy50b3ApLGQ9ITAsbi50eXBlfHwodGhpcy5uZWVkc0Jsb2NrPSEwKTtlbHNlIGlmKCFlLmZpcnN0Q2hpbGQpe3RoaXMubGVhZkZhbGxiYWNrKGUsdCk7YnJlYWsgZX1sZXQgYz1wJiZwLnNraXA/dDp0aGlzLnJlYWRTdHlsZXMoZSx0KTtjJiZ0aGlzLmFkZEFsbChlLGMpLGQmJnRoaXMuc3luYyhuKSx0aGlzLm5lZWRzQmxvY2s9dX1lbHNle2xldCBkPXRoaXMucmVhZFN0eWxlcyhlLHQpO2QmJnRoaXMuYWRkRWxlbWVudEJ5UnVsZShlLHAsZCxwLmNvbnN1bWluZz09PSExP2w6dm9pZCAwKX10aGlzLmxvY2FsUHJlc2VydmVXUz1yfWxlYWZGYWxsYmFjayhlLHQpe2Uubm9kZU5hbWU9PSJCUiImJnRoaXMudG9wLnR5cGUmJnRoaXMudG9wLnR5cGUuaW5saW5lQ29udGVudCYmdGhpcy5hZGRUZXh0Tm9kZShlLm93bmVyRG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYApgKSx0KX1pZ25vcmVGYWxsYmFjayhlLHQpe2Uubm9kZU5hbWU9PSJCUiImJighdGhpcy50b3AudHlwZXx8IXRoaXMudG9wLnR5cGUuaW5saW5lQ29udGVudCkmJnRoaXMuZmluZFBsYWNlKHRoaXMucGFyc2VyLnNjaGVtYS50ZXh0KCItIiksdCwhMCl9cmVhZFN0eWxlcyhlLHQpe2xldCBhPWUuc3R5bGU7aWYoYSYmYS5sZW5ndGgpZm9yKGxldCByPTA7cjx0aGlzLnBhcnNlci5tYXRjaGVkU3R5bGVzLmxlbmd0aDtyKyspe2xldCBuPXRoaXMucGFyc2VyLm1hdGNoZWRTdHlsZXNbcl0sbz1hLmdldFByb3BlcnR5VmFsdWUobik7aWYobylmb3IobGV0IGw9dm9pZCAwOzspe2xldCBwPXRoaXMucGFyc2VyLm1hdGNoU3R5bGUobixvLHRoaXMsbCk7aWYoIXApYnJlYWs7aWYocC5pZ25vcmUpcmV0dXJuIG51bGw7aWYocC5jbGVhck1hcms/dD10LmZpbHRlcihkPT4hcC5jbGVhck1hcmsoZCkpOnQ9dC5jb25jYXQodGhpcy5wYXJzZXIuc2NoZW1hLm1hcmtzW3AubWFya10uY3JlYXRlKHAuYXR0cnMpKSxwLmNvbnN1bWluZz09PSExKWw9cDtlbHNlIGJyZWFrfX1yZXR1cm4gdH1hZGRFbGVtZW50QnlSdWxlKGUsdCxhLHIpe2xldCBuLG87aWYodC5ub2RlKWlmKG89dGhpcy5wYXJzZXIuc2NoZW1hLm5vZGVzW3Qubm9kZV0sby5pc0xlYWYpdGhpcy5pbnNlcnROb2RlKG8uY3JlYXRlKHQuYXR0cnMpLGEsZS5ub2RlTmFtZT09IkJSIil8fHRoaXMubGVhZkZhbGxiYWNrKGUsYSk7ZWxzZXtsZXQgcD10aGlzLmVudGVyKG8sdC5hdHRyc3x8bnVsbCxhLHQucHJlc2VydmVXaGl0ZXNwYWNlKTtwJiYobj0hMCxhPXApfWVsc2V7bGV0IHA9dGhpcy5wYXJzZXIuc2NoZW1hLm1hcmtzW3QubWFya107YT1hLmNvbmNhdChwLmNyZWF0ZSh0LmF0dHJzKSl9bGV0IGw9dGhpcy50b3A7aWYobyYmby5pc0xlYWYpdGhpcy5maW5kSW5zaWRlKGUpO2Vsc2UgaWYocil0aGlzLmFkZEVsZW1lbnQoZSxhLHIpO2Vsc2UgaWYodC5nZXRDb250ZW50KXRoaXMuZmluZEluc2lkZShlKSx0LmdldENvbnRlbnQoZSx0aGlzLnBhcnNlci5zY2hlbWEpLmZvckVhY2gocD0+dGhpcy5pbnNlcnROb2RlKHAsYSwhMSkpO2Vsc2V7bGV0IHA9ZTt0eXBlb2YgdC5jb250ZW50RWxlbWVudD09InN0cmluZyI/cD1lLnF1ZXJ5U2VsZWN0b3IodC5jb250ZW50RWxlbWVudCk6dHlwZW9mIHQuY29udGVudEVsZW1lbnQ9PSJmdW5jdGlvbiI/cD10LmNvbnRlbnRFbGVtZW50KGUpOnQuY29udGVudEVsZW1lbnQmJihwPXQuY29udGVudEVsZW1lbnQpLHRoaXMuZmluZEFyb3VuZChlLHAsITApLHRoaXMuYWRkQWxsKHAsYSksdGhpcy5maW5kQXJvdW5kKGUscCwhMSl9biYmdGhpcy5zeW5jKGwpJiZ0aGlzLm9wZW4tLX1hZGRBbGwoZSx0LGEscil7bGV0IG49YXx8MDtmb3IobGV0IG89YT9lLmNoaWxkTm9kZXNbYV06ZS5maXJzdENoaWxkLGw9cj09bnVsbD9udWxsOmUuY2hpbGROb2Rlc1tyXTtvIT1sO289by5uZXh0U2libGluZywrK24pdGhpcy5maW5kQXRQb2ludChlLG4pLHRoaXMuYWRkRE9NKG8sdCk7dGhpcy5maW5kQXRQb2ludChlLG4pfWZpbmRQbGFjZShlLHQsYSl7bGV0IHIsbjtmb3IobGV0IG89dGhpcy5vcGVuLGw9MDtvPj0wO28tLSl7bGV0IHA9dGhpcy5ub2Rlc1tvXSxkPXAuZmluZFdyYXBwaW5nKGUpO2lmKGQmJighcnx8ci5sZW5ndGg+ZC5sZW5ndGgrbCkmJihyPWQsbj1wLCFkLmxlbmd0aCkpYnJlYWs7aWYocC5zb2xpZCl7aWYoYSlicmVhaztsKz0yfX1pZighcilyZXR1cm4gbnVsbDt0aGlzLnN5bmMobik7Zm9yKGxldCBvPTA7bzxyLmxlbmd0aDtvKyspdD10aGlzLmVudGVySW5uZXIocltvXSxudWxsLHQsITEpO3JldHVybiB0fWluc2VydE5vZGUoZSx0LGEpe2lmKGUuaXNJbmxpbmUmJnRoaXMubmVlZHNCbG9jayYmIXRoaXMudG9wLnR5cGUpe2xldCBuPXRoaXMudGV4dGJsb2NrRnJvbUNvbnRleHQoKTtuJiYodD10aGlzLmVudGVySW5uZXIobixudWxsLHQpKX1sZXQgcj10aGlzLmZpbmRQbGFjZShlLHQsYSk7aWYocil7dGhpcy5jbG9zZUV4dHJhKCk7bGV0IG49dGhpcy50b3A7bi5tYXRjaCYmKG4ubWF0Y2g9bi5tYXRjaC5tYXRjaFR5cGUoZS50eXBlKSk7bGV0IG89ZnMubm9uZTtmb3IobGV0IGwgb2Ygci5jb25jYXQoZS5tYXJrcykpKG4udHlwZT9uLnR5cGUuYWxsb3dzTWFya1R5cGUobC50eXBlKTpwdWEobC50eXBlLGUudHlwZSkpJiYobz1sLmFkZFRvU2V0KG8pKTtyZXR1cm4gbi5jb250ZW50LnB1c2goZS5tYXJrKG8pKSwhMH1yZXR1cm4hMX1lbnRlcihlLHQsYSxyKXtsZXQgbj10aGlzLmZpbmRQbGFjZShlLmNyZWF0ZSh0KSxhLCExKTtyZXR1cm4gbiYmKG49dGhpcy5lbnRlcklubmVyKGUsdCxhLCEwLHIpKSxufWVudGVySW5uZXIoZSx0LGEscj0hMSxuKXt0aGlzLmNsb3NlRXh0cmEoKTtsZXQgbz10aGlzLnRvcDtvLm1hdGNoPW8ubWF0Y2gmJm8ubWF0Y2gubWF0Y2hUeXBlKGUpO2xldCBsPWR1YShlLG4sby5vcHRpb25zKTtvLm9wdGlvbnMmRlomJm8uY29udGVudC5sZW5ndGg9PTAmJihsfD1GWik7bGV0IHA9ZnMubm9uZTtyZXR1cm4gYT1hLmZpbHRlcihkPT4oby50eXBlP28udHlwZS5hbGxvd3NNYXJrVHlwZShkLnR5cGUpOnB1YShkLnR5cGUsZSkpPyhwPWQuYWRkVG9TZXQocCksITEpOiEwKSx0aGlzLm5vZGVzLnB1c2gobmV3IGJ2KGUsdCxwLHIsbnVsbCxsKSksdGhpcy5vcGVuKyssYX1jbG9zZUV4dHJhKGU9ITEpe2xldCB0PXRoaXMubm9kZXMubGVuZ3RoLTE7aWYodD50aGlzLm9wZW4pe2Zvcig7dD50aGlzLm9wZW47dC0tKXRoaXMubm9kZXNbdC0xXS5jb250ZW50LnB1c2godGhpcy5ub2Rlc1t0XS5maW5pc2goZSkpO3RoaXMubm9kZXMubGVuZ3RoPXRoaXMub3BlbisxfX1maW5pc2goKXtyZXR1cm4gdGhpcy5vcGVuPTAsdGhpcy5jbG9zZUV4dHJhKHRoaXMuaXNPcGVuKSx0aGlzLm5vZGVzWzBdLmZpbmlzaCghISh0aGlzLmlzT3Blbnx8dGhpcy5vcHRpb25zLnRvcE9wZW4pKX1zeW5jKGUpe2ZvcihsZXQgdD10aGlzLm9wZW47dD49MDt0LS0pe2lmKHRoaXMubm9kZXNbdF09PWUpcmV0dXJuIHRoaXMub3Blbj10LCEwO3RoaXMubG9jYWxQcmVzZXJ2ZVdTJiYodGhpcy5ub2Rlc1t0XS5vcHRpb25zfD1PWil9cmV0dXJuITF9Z2V0IGN1cnJlbnRQb3MoKXt0aGlzLmNsb3NlRXh0cmEoKTtsZXQgZT0wO2ZvcihsZXQgdD10aGlzLm9wZW47dD49MDt0LS0pe2xldCBhPXRoaXMubm9kZXNbdF0uY29udGVudDtmb3IobGV0IHI9YS5sZW5ndGgtMTtyPj0wO3ItLSllKz1hW3JdLm5vZGVTaXplO3QmJmUrK31yZXR1cm4gZX1maW5kQXRQb2ludChlLHQpe2lmKHRoaXMuZmluZClmb3IobGV0IGE9MDthPHRoaXMuZmluZC5sZW5ndGg7YSsrKXRoaXMuZmluZFthXS5ub2RlPT1lJiZ0aGlzLmZpbmRbYV0ub2Zmc2V0PT10JiYodGhpcy5maW5kW2FdLnBvcz10aGlzLmN1cnJlbnRQb3MpfWZpbmRJbnNpZGUoZSl7aWYodGhpcy5maW5kKWZvcihsZXQgdD0wO3Q8dGhpcy5maW5kLmxlbmd0aDt0KyspdGhpcy5maW5kW3RdLnBvcz09bnVsbCYmZS5ub2RlVHlwZT09MSYmZS5jb250YWlucyh0aGlzLmZpbmRbdF0ubm9kZSkmJih0aGlzLmZpbmRbdF0ucG9zPXRoaXMuY3VycmVudFBvcyl9ZmluZEFyb3VuZChlLHQsYSl7aWYoZSE9dCYmdGhpcy5maW5kKWZvcihsZXQgcj0wO3I8dGhpcy5maW5kLmxlbmd0aDtyKyspdGhpcy5maW5kW3JdLnBvcz09bnVsbCYmZS5ub2RlVHlwZT09MSYmZS5jb250YWlucyh0aGlzLmZpbmRbcl0ubm9kZSkmJnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24odGhpcy5maW5kW3JdLm5vZGUpJihhPzI6NCkmJih0aGlzLmZpbmRbcl0ucG9zPXRoaXMuY3VycmVudFBvcyl9ZmluZEluVGV4dChlKXtpZih0aGlzLmZpbmQpZm9yKGxldCB0PTA7dDx0aGlzLmZpbmQubGVuZ3RoO3QrKyl0aGlzLmZpbmRbdF0ubm9kZT09ZSYmKHRoaXMuZmluZFt0XS5wb3M9dGhpcy5jdXJyZW50UG9zLShlLm5vZGVWYWx1ZS5sZW5ndGgtdGhpcy5maW5kW3RdLm9mZnNldCkpfW1hdGNoZXNDb250ZXh0KGUpe2lmKGUuaW5kZXhPZigifCIpPi0xKXJldHVybiBlLnNwbGl0KC9ccypcfFxzKi8pLnNvbWUodGhpcy5tYXRjaGVzQ29udGV4dCx0aGlzKTtsZXQgdD1lLnNwbGl0KCIvIiksYT10aGlzLm9wdGlvbnMuY29udGV4dCxyPSF0aGlzLmlzT3BlbiYmKCFhfHxhLnBhcmVudC50eXBlPT10aGlzLm5vZGVzWzBdLnR5cGUpLG49LShhP2EuZGVwdGgrMTowKSsocj8wOjEpLG89aSgobCxwKT0+e2Zvcig7bD49MDtsLS0pe2xldCBkPXRbbF07aWYoZD09IiIpe2lmKGw9PXQubGVuZ3RoLTF8fGw9PTApY29udGludWU7Zm9yKDtwPj1uO3AtLSlpZihvKGwtMSxwKSlyZXR1cm4hMDtyZXR1cm4hMX1lbHNle2xldCB1PXA+MHx8cD09MCYmcj90aGlzLm5vZGVzW3BdLnR5cGU6YSYmcD49bj9hLm5vZGUocC1uKS50eXBlOm51bGw7aWYoIXV8fHUubmFtZSE9ZCYmIXUuaXNJbkdyb3VwKGQpKXJldHVybiExO3AtLX19cmV0dXJuITB9LCJtYXRjaCIpO3JldHVybiBvKHQubGVuZ3RoLTEsdGhpcy5vcGVuKX10ZXh0YmxvY2tGcm9tQ29udGV4dCgpe2xldCBlPXRoaXMub3B0aW9ucy5jb250ZXh0O2lmKGUpZm9yKGxldCB0PWUuZGVwdGg7dD49MDt0LS0pe2xldCBhPWUubm9kZSh0KS5jb250ZW50TWF0Y2hBdChlLmluZGV4QWZ0ZXIodCkpLmRlZmF1bHRUeXBlO2lmKGEmJmEuaXNUZXh0YmxvY2smJmEuZGVmYXVsdEF0dHJzKXJldHVybiBhfWZvcihsZXQgdCBpbiB0aGlzLnBhcnNlci5zY2hlbWEubm9kZXMpe2xldCBhPXRoaXMucGFyc2VyLnNjaGVtYS5ub2Rlc1t0XTtpZihhLmlzVGV4dGJsb2NrJiZhLmRlZmF1bHRBdHRycylyZXR1cm4gYX19fTtpKHJHYSwibm9ybWFsaXplTGlzdCIpO2kob0dhLCJtYXRjaGVzIik7aSh1dWEsImNvcHkiKTtpKHB1YSwibWFya01heUFwcGx5Iik7TGQ9Y2xhc3Mgc3tzdGF0aWN7aSh0aGlzLCJET01TZXJpYWxpemVyIil9Y29uc3RydWN0b3IoZSx0KXt0aGlzLm5vZGVzPWUsdGhpcy5tYXJrcz10fXNlcmlhbGl6ZUZyYWdtZW50KGUsdD17fSxhKXthfHwoYT12dHQodCkuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpKTtsZXQgcj1hLG49W107cmV0dXJuIGUuZm9yRWFjaChvPT57aWYobi5sZW5ndGh8fG8ubWFya3MubGVuZ3RoKXtsZXQgbD0wLHA9MDtmb3IoO2w8bi5sZW5ndGgmJnA8by5tYXJrcy5sZW5ndGg7KXtsZXQgZD1vLm1hcmtzW3BdO2lmKCF0aGlzLm1hcmtzW2QudHlwZS5uYW1lXSl7cCsrO2NvbnRpbnVlfWlmKCFkLmVxKG5bbF1bMF0pfHxkLnR5cGUuc3BlYy5zcGFubmluZz09PSExKWJyZWFrO2wrKyxwKyt9Zm9yKDtsPG4ubGVuZ3RoOylyPW4ucG9wKClbMV07Zm9yKDtwPG8ubWFya3MubGVuZ3RoOyl7bGV0IGQ9by5tYXJrc1twKytdLHU9dGhpcy5zZXJpYWxpemVNYXJrKGQsby5pc0lubGluZSx0KTt1JiYobi5wdXNoKFtkLHJdKSxyLmFwcGVuZENoaWxkKHUuZG9tKSxyPXUuY29udGVudERPTXx8dS5kb20pfX1yLmFwcGVuZENoaWxkKHRoaXMuc2VyaWFsaXplTm9kZUlubmVyKG8sdCkpfSksYX1zZXJpYWxpemVOb2RlSW5uZXIoZSx0KXtsZXR7ZG9tOmEsY29udGVudERPTTpyfT1IbmUodnR0KHQpLHRoaXMubm9kZXNbZS50eXBlLm5hbWVdKGUpLG51bGwsZS5hdHRycyk7aWYocil7aWYoZS5pc0xlYWYpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkNvbnRlbnQgaG9sZSBub3QgYWxsb3dlZCBpbiBhIGxlYWYgbm9kZSBzcGVjIik7dGhpcy5zZXJpYWxpemVGcmFnbWVudChlLmNvbnRlbnQsdCxyKX1yZXR1cm4gYX1zZXJpYWxpemVOb2RlKGUsdD17fSl7bGV0IGE9dGhpcy5zZXJpYWxpemVOb2RlSW5uZXIoZSx0KTtmb3IobGV0IHI9ZS5tYXJrcy5sZW5ndGgtMTtyPj0wO3ItLSl7bGV0IG49dGhpcy5zZXJpYWxpemVNYXJrKGUubWFya3Nbcl0sZS5pc0lubGluZSx0KTtuJiYoKG4uY29udGVudERPTXx8bi5kb20pLmFwcGVuZENoaWxkKGEpLGE9bi5kb20pfXJldHVybiBhfXNlcmlhbGl6ZU1hcmsoZSx0LGE9e30pe2xldCByPXRoaXMubWFya3NbZS50eXBlLm5hbWVdO3JldHVybiByJiZIbmUodnR0KGEpLHIoZSx0KSxudWxsLGUuYXR0cnMpfXN0YXRpYyByZW5kZXJTcGVjKGUsdCxhPW51bGwscil7cmV0dXJuIEhuZShlLHQsYSxyKX1zdGF0aWMgZnJvbVNjaGVtYShlKXtyZXR1cm4gZS5jYWNoZWQuZG9tU2VyaWFsaXplcnx8KGUuY2FjaGVkLmRvbVNlcmlhbGl6ZXI9bmV3IHModGhpcy5ub2Rlc0Zyb21TY2hlbWEoZSksdGhpcy5tYXJrc0Zyb21TY2hlbWEoZSkpKX1zdGF0aWMgbm9kZXNGcm9tU2NoZW1hKGUpe2xldCB0PWh1YShlLm5vZGVzKTtyZXR1cm4gdC50ZXh0fHwodC50ZXh0PWE9PmEudGV4dCksdH1zdGF0aWMgbWFya3NGcm9tU2NoZW1hKGUpe3JldHVybiBodWEoZS5tYXJrcyl9fTtpKGh1YSwiZ2F0aGVyVG9ET00iKTtpKHZ0dCwiZG9jIik7ZnVhPW5ldyBXZWFrTWFwO2kobkdhLCJzdXNwaWNpb3VzQXR0cmlidXRlcyIpO2kobEdhLCJzdXNwaWNpb3VzQXR0cmlidXRlc0lubmVyIik7aShIbmUsInJlbmRlclNwZWMiKX0pO2Z1bmN0aW9uIGNHYShzLGUpe3JldHVybiBzK2UqZ3VhfWZ1bmN0aW9uIGJ1YShzKXtyZXR1cm4gcyZtdWF9ZnVuY3Rpb24gZEdhKHMpe3JldHVybihzLShzJm11YSkpL2d1YX1mdW5jdGlvbiB5dHQocyxlLHQpe2xldCBhPVtdO2ZvcihsZXQgcj0wO3I8cy5jaGlsZENvdW50O3IrKyl7bGV0IG49cy5jaGlsZChyKTtuLmNvbnRlbnQuc2l6ZSYmKG49bi5jb3B5KHl0dChuLmNvbnRlbnQsZSxuKSkpLG4uaXNJbmxpbmUmJihuPWUobix0LHIpKSxhLnB1c2gobil9cmV0dXJuIHJ0LmZyb21BcnJheShhKX1mdW5jdGlvbiB3dHQocyxlLHQpe2xldCBhPXMucmVzb2x2ZShlKSxyPXQtZSxuPWEuZGVwdGg7Zm9yKDtyPjAmJm4+MCYmYS5pbmRleEFmdGVyKG4pPT1hLm5vZGUobikuY2hpbGRDb3VudDspbi0tLHItLTtpZihyPjApe2xldCBvPWEubm9kZShuKS5tYXliZUNoaWxkKGEuaW5kZXhBZnRlcihuKSk7Zm9yKDtyPjA7KXtpZighb3x8by5pc0xlYWYpcmV0dXJuITA7bz1vLmZpcnN0Q2hpbGQsci0tfX1yZXR1cm4hMX1mdW5jdGlvbiB1R2EocyxlLHQsYSl7bGV0IHI9W10sbj1bXSxvLGw7cy5kb2Mubm9kZXNCZXR3ZWVuKGUsdCwocCxkLHUpPT57aWYoIXAuaXNJbmxpbmUpcmV0dXJuO2xldCBjPXAubWFya3M7aWYoIWEuaXNJblNldChjKSYmdS50eXBlLmFsbG93c01hcmtUeXBlKGEudHlwZSkpe2xldCBiPU1hdGgubWF4KGQsZSksdj1NYXRoLm1pbihkK3Aubm9kZVNpemUsdCkseD1hLmFkZFRvU2V0KGMpO2ZvcihsZXQgbT0wO208Yy5sZW5ndGg7bSsrKWNbbV0uaXNJblNldCh4KXx8KG8mJm8udG89PWImJm8ubWFyay5lcShjW21dKT9vLnRvPXY6ci5wdXNoKG89bmV3IE1oKGIsdixjW21dKSkpO2wmJmwudG89PWI/bC50bz12Om4ucHVzaChsPW5ldyB3dihiLHYsYSkpfX0pLHIuZm9yRWFjaChwPT5zLnN0ZXAocCkpLG4uZm9yRWFjaChwPT5zLnN0ZXAocCkpfWZ1bmN0aW9uIHBHYShzLGUsdCxhKXtsZXQgcj1bXSxuPTA7cy5kb2Mubm9kZXNCZXR3ZWVuKGUsdCwobyxsKT0+e2lmKCFvLmlzSW5saW5lKXJldHVybjtuKys7bGV0IHA9bnVsbDtpZihhIGluc3RhbmNlb2YgdnYpe2xldCBkPW8ubWFya3MsdTtmb3IoO3U9YS5pc0luU2V0KGQpOykocHx8KHA9W10pKS5wdXNoKHUpLGQ9dS5yZW1vdmVGcm9tU2V0KGQpfWVsc2UgYT9hLmlzSW5TZXQoby5tYXJrcykmJihwPVthXSk6cD1vLm1hcmtzO2lmKHAmJnAubGVuZ3RoKXtsZXQgZD1NYXRoLm1pbihsK28ubm9kZVNpemUsdCk7Zm9yKGxldCB1PTA7dTxwLmxlbmd0aDt1Kyspe2xldCBjPXBbdV0sYjtmb3IobGV0IHY9MDt2PHIubGVuZ3RoO3YrKyl7bGV0IHg9clt2XTt4LnN0ZXA9PW4tMSYmYy5lcShyW3ZdLnN0eWxlKSYmKGI9eCl9Yj8oYi50bz1kLGIuc3RlcD1uKTpyLnB1c2goe3N0eWxlOmMsZnJvbTpNYXRoLm1heChsLGUpLHRvOmQsc3RlcDpufSl9fX0pLHIuZm9yRWFjaChvPT5zLnN0ZXAobmV3IE1oKG8uZnJvbSxvLnRvLG8uc3R5bGUpKSl9ZnVuY3Rpb24ga3R0KHMsZSx0LGE9dC5jb250ZW50TWF0Y2gscj0hMCl7bGV0IG49cy5kb2Mubm9kZUF0KGUpLG89W10sbD1lKzE7Zm9yKGxldCBwPTA7cDxuLmNoaWxkQ291bnQ7cCsrKXtsZXQgZD1uLmNoaWxkKHApLHU9bCtkLm5vZGVTaXplLGM9YS5tYXRjaFR5cGUoZC50eXBlKTtpZighYylvLnB1c2gobmV3IGdvKGwsdSxfdC5lbXB0eSkpO2Vsc2V7YT1jO2ZvcihsZXQgYj0wO2I8ZC5tYXJrcy5sZW5ndGg7YisrKXQuYWxsb3dzTWFya1R5cGUoZC5tYXJrc1tiXS50eXBlKXx8cy5zdGVwKG5ldyBNaChsLHUsZC5tYXJrc1tiXSkpO2lmKHImJmQuaXNUZXh0JiZ0LndoaXRlc3BhY2UhPSJwcmUiKXtsZXQgYix2PS9ccj9cbnxcci9nLHg7Zm9yKDtiPXYuZXhlYyhkLnRleHQpOyl4fHwoeD1uZXcgX3QocnQuZnJvbSh0LnNjaGVtYS50ZXh0KCIgIix0LmFsbG93ZWRNYXJrcyhkLm1hcmtzKSkpLDAsMCkpLG8ucHVzaChuZXcgZ28obCtiLmluZGV4LGwrYi5pbmRleCtiWzBdLmxlbmd0aCx4KSl9fWw9dX1pZighYS52YWxpZEVuZCl7bGV0IHA9YS5maWxsQmVmb3JlKHJ0LmVtcHR5LCEwKTtzLnJlcGxhY2UobCxsLG5ldyBfdChwLDAsMCkpfWZvcihsZXQgcD1vLmxlbmd0aC0xO3A+PTA7cC0tKXMuc3RlcChvW3BdKX1mdW5jdGlvbiBoR2EocyxlLHQpe3JldHVybihlPT0wfHxzLmNhblJlcGxhY2UoZSxzLmNoaWxkQ291bnQpKSYmKHQ9PXMuY2hpbGRDb3VudHx8cy5jYW5SZXBsYWNlKDAsdCkpfWZ1bmN0aW9uIFBkKHMpe2xldCB0PXMucGFyZW50LmNvbnRlbnQuY3V0QnlJbmRleChzLnN0YXJ0SW5kZXgscy5lbmRJbmRleCk7Zm9yKGxldCBhPXMuZGVwdGgscj0wLG49MDs7LS1hKXtsZXQgbz1zLiRmcm9tLm5vZGUoYSksbD1zLiRmcm9tLmluZGV4KGEpK3IscD1zLiR0by5pbmRleEFmdGVyKGEpLW47aWYoYTxzLmRlcHRoJiZvLmNhblJlcGxhY2UobCxwLHQpKXJldHVybiBhO2lmKGE9PTB8fG8udHlwZS5zcGVjLmlzb2xhdGluZ3x8IWhHYShvLGwscCkpYnJlYWs7bCYmKHI9MSkscDxvLmNoaWxkQ291bnQmJihuPTEpfXJldHVybiBudWxsfWZ1bmN0aW9uIGZHYShzLGUsdCl7bGV0eyRmcm9tOmEsJHRvOnIsZGVwdGg6bn09ZSxvPWEuYmVmb3JlKG4rMSksbD1yLmFmdGVyKG4rMSkscD1vLGQ9bCx1PXJ0LmVtcHR5LGM9MDtmb3IobGV0IHg9bixtPSExO3g+dDt4LS0pbXx8YS5pbmRleCh4KT4wPyhtPSEwLHU9cnQuZnJvbShhLm5vZGUoeCkuY29weSh1KSksYysrKTpwLS07bGV0IGI9cnQuZW1wdHksdj0wO2ZvcihsZXQgeD1uLG09ITE7eD50O3gtLSltfHxyLmFmdGVyKHgrMSk8ci5lbmQoeCk/KG09ITAsYj1ydC5mcm9tKHIubm9kZSh4KS5jb3B5KGIpKSx2KyspOmQrKztzLnN0ZXAobmV3IGRyKHAsZCxvLGwsbmV3IF90KHUuYXBwZW5kKGIpLGMsdiksdS5zaXplLWMsITApKX1mdW5jdGlvbiBLOChzLGUsdD1udWxsLGE9cyl7bGV0IHI9bUdhKHMsZSksbj1yJiZnR2EoYSxlKTtyZXR1cm4gbj9yLm1hcCh3dWEpLmNvbmNhdCh7dHlwZTplLGF0dHJzOnR9KS5jb25jYXQobi5tYXAod3VhKSk6bnVsbH1mdW5jdGlvbiB3dWEocyl7cmV0dXJue3R5cGU6cyxhdHRyczpudWxsfX1mdW5jdGlvbiBtR2EocyxlKXtsZXR7cGFyZW50OnQsc3RhcnRJbmRleDphLGVuZEluZGV4OnJ9PXMsbj10LmNvbnRlbnRNYXRjaEF0KGEpLmZpbmRXcmFwcGluZyhlKTtpZighbilyZXR1cm4gbnVsbDtsZXQgbz1uLmxlbmd0aD9uWzBdOmU7cmV0dXJuIHQuY2FuUmVwbGFjZVdpdGgoYSxyLG8pP246bnVsbH1mdW5jdGlvbiBnR2EocyxlKXtsZXR7cGFyZW50OnQsc3RhcnRJbmRleDphLGVuZEluZGV4OnJ9PXMsbj10LmNoaWxkKGEpLG89ZS5jb250ZW50TWF0Y2guZmluZFdyYXBwaW5nKG4udHlwZSk7aWYoIW8pcmV0dXJuIG51bGw7bGV0IHA9KG8ubGVuZ3RoP29bby5sZW5ndGgtMV06ZSkuY29udGVudE1hdGNoO2ZvcihsZXQgZD1hO3AmJmQ8cjtkKyspcD1wLm1hdGNoVHlwZSh0LmNoaWxkKGQpLnR5cGUpO3JldHVybiFwfHwhcC52YWxpZEVuZD9udWxsOm99ZnVuY3Rpb24gYkdhKHMsZSx0KXtsZXQgYT1ydC5lbXB0eTtmb3IobGV0IG89dC5sZW5ndGgtMTtvPj0wO28tLSl7aWYoYS5zaXplKXtsZXQgbD10W29dLnR5cGUuY29udGVudE1hdGNoLm1hdGNoRnJhZ21lbnQoYSk7aWYoIWx8fCFsLnZhbGlkRW5kKXRocm93IG5ldyBSYW5nZUVycm9yKCJXcmFwcGVyIHR5cGUgZ2l2ZW4gdG8gVHJhbnNmb3JtLndyYXAgZG9lcyBub3QgZm9ybSB2YWxpZCBjb250ZW50IG9mIGl0cyBwYXJlbnQgd3JhcHBlciIpfWE9cnQuZnJvbSh0W29dLnR5cGUuY3JlYXRlKHRbb10uYXR0cnMsYSkpfWxldCByPWUuc3RhcnQsbj1lLmVuZDtzLnN0ZXAobmV3IGRyKHIsbixyLG4sbmV3IF90KGEsMCwwKSx0Lmxlbmd0aCwhMCkpfWZ1bmN0aW9uIHZHYShzLGUsdCxhLHIpe2lmKCFhLmlzVGV4dGJsb2NrKXRocm93IG5ldyBSYW5nZUVycm9yKCJUeXBlIGdpdmVuIHRvIHNldEJsb2NrVHlwZSBzaG91bGQgYmUgYSB0ZXh0YmxvY2siKTtsZXQgbj1zLnN0ZXBzLmxlbmd0aDtzLmRvYy5ub2Rlc0JldHdlZW4oZSx0LChvLGwpPT57bGV0IHA9dHlwZW9mIHI9PSJmdW5jdGlvbiI/cihvKTpyO2lmKG8uaXNUZXh0YmxvY2smJiFvLmhhc01hcmt1cChhLHApJiZ4R2Eocy5kb2Mscy5tYXBwaW5nLnNsaWNlKG4pLm1hcChsKSxhKSl7bGV0IGQ9bnVsbDtpZihhLnNjaGVtYS5saW5lYnJlYWtSZXBsYWNlbWVudCl7bGV0IHY9YS53aGl0ZXNwYWNlPT0icHJlIix4PSEhYS5jb250ZW50TWF0Y2gubWF0Y2hUeXBlKGEuc2NoZW1hLmxpbmVicmVha1JlcGxhY2VtZW50KTt2JiYheD9kPSExOiF2JiZ4JiYoZD0hMCl9ZD09PSExJiZTdWEocyxvLGwsbiksa3R0KHMscy5tYXBwaW5nLnNsaWNlKG4pLm1hcChsLDEpLGEsdm9pZCAwLGQ9PT1udWxsKTtsZXQgdT1zLm1hcHBpbmcuc2xpY2UobiksYz11Lm1hcChsLDEpLGI9dS5tYXAobCtvLm5vZGVTaXplLDEpO3JldHVybiBzLnN0ZXAobmV3IGRyKGMsYixjKzEsYi0xLG5ldyBfdChydC5mcm9tKGEuY3JlYXRlKHAsbnVsbCxvLm1hcmtzKSksMCwwKSwxLCEwKSksZD09PSEwJiZrdWEocyxvLGwsbiksITF9fSl9ZnVuY3Rpb24ga3VhKHMsZSx0LGEpe2UuZm9yRWFjaCgocixuKT0+e2lmKHIuaXNUZXh0KXtsZXQgbyxsPS9ccj9cbnxcci9nO2Zvcig7bz1sLmV4ZWMoci50ZXh0KTspe2xldCBwPXMubWFwcGluZy5zbGljZShhKS5tYXAodCsxK24rby5pbmRleCk7cy5yZXBsYWNlV2l0aChwLHArMSxlLnR5cGUuc2NoZW1hLmxpbmVicmVha1JlcGxhY2VtZW50LmNyZWF0ZSgpKX19fSl9ZnVuY3Rpb24gU3VhKHMsZSx0LGEpe2UuZm9yRWFjaCgocixuKT0+e2lmKHIudHlwZT09ci50eXBlLnNjaGVtYS5saW5lYnJlYWtSZXBsYWNlbWVudCl7bGV0IG89cy5tYXBwaW5nLnNsaWNlKGEpLm1hcCh0KzErbik7cy5yZXBsYWNlV2l0aChvLG8rMSxlLnR5cGUuc2NoZW1hLnRleHQoYApgKSl9fSl9ZnVuY3Rpb24geEdhKHMsZSx0KXtsZXQgYT1zLnJlc29sdmUoZSkscj1hLmluZGV4KCk7cmV0dXJuIGEucGFyZW50LmNhblJlcGxhY2VXaXRoKHIscisxLHQpfWZ1bmN0aW9uIHlHYShzLGUsdCxhLHIpe2xldCBuPXMuZG9jLm5vZGVBdChlKTtpZighbil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTm8gbm9kZSBhdCBnaXZlbiBwb3NpdGlvbiIpO3R8fCh0PW4udHlwZSk7bGV0IG89dC5jcmVhdGUoYSxudWxsLHJ8fG4ubWFya3MpO2lmKG4uaXNMZWFmKXJldHVybiBzLnJlcGxhY2VXaXRoKGUsZStuLm5vZGVTaXplLG8pO2lmKCF0LnZhbGlkQ29udGVudChuLmNvbnRlbnQpKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGNvbnRlbnQgZm9yIG5vZGUgdHlwZSAiK3QubmFtZSk7cy5zdGVwKG5ldyBkcihlLGUrbi5ub2RlU2l6ZSxlKzEsZStuLm5vZGVTaXplLTEsbmV3IF90KHJ0LmZyb20obyksMCwwKSwxLCEwKSl9ZnVuY3Rpb24gemwocyxlLHQ9MSxhKXtsZXQgcj1zLnJlc29sdmUoZSksbj1yLmRlcHRoLXQsbz1hJiZhW2EubGVuZ3RoLTFdfHxyLnBhcmVudDtpZihuPDB8fHIucGFyZW50LnR5cGUuc3BlYy5pc29sYXRpbmd8fCFyLnBhcmVudC5jYW5SZXBsYWNlKHIuaW5kZXgoKSxyLnBhcmVudC5jaGlsZENvdW50KXx8IW8udHlwZS52YWxpZENvbnRlbnQoci5wYXJlbnQuY29udGVudC5jdXRCeUluZGV4KHIuaW5kZXgoKSxyLnBhcmVudC5jaGlsZENvdW50KSkpcmV0dXJuITE7Zm9yKGxldCBkPXIuZGVwdGgtMSx1PXQtMjtkPm47ZC0tLHUtLSl7bGV0IGM9ci5ub2RlKGQpLGI9ci5pbmRleChkKTtpZihjLnR5cGUuc3BlYy5pc29sYXRpbmcpcmV0dXJuITE7bGV0IHY9Yy5jb250ZW50LmN1dEJ5SW5kZXgoYixjLmNoaWxkQ291bnQpLHg9YSYmYVt1KzFdO3gmJih2PXYucmVwbGFjZUNoaWxkKDAseC50eXBlLmNyZWF0ZSh4LmF0dHJzKSkpO2xldCBtPWEmJmFbdV18fGM7aWYoIWMuY2FuUmVwbGFjZShiKzEsYy5jaGlsZENvdW50KXx8IW0udHlwZS52YWxpZENvbnRlbnQodikpcmV0dXJuITF9bGV0IGw9ci5pbmRleEFmdGVyKG4pLHA9YSYmYVswXTtyZXR1cm4gci5ub2RlKG4pLmNhblJlcGxhY2VXaXRoKGwsbCxwP3AudHlwZTpyLm5vZGUobisxKS50eXBlKX1mdW5jdGlvbiB3R2EocyxlLHQ9MSxhKXtsZXQgcj1zLmRvYy5yZXNvbHZlKGUpLG49cnQuZW1wdHksbz1ydC5lbXB0eTtmb3IobGV0IGw9ci5kZXB0aCxwPXIuZGVwdGgtdCxkPXQtMTtsPnA7bC0tLGQtLSl7bj1ydC5mcm9tKHIubm9kZShsKS5jb3B5KG4pKTtsZXQgdT1hJiZhW2RdO289cnQuZnJvbSh1P3UudHlwZS5jcmVhdGUodS5hdHRycyxvKTpyLm5vZGUobCkuY29weShvKSl9cy5zdGVwKG5ldyBnbyhlLGUsbmV3IF90KG4uYXBwZW5kKG8pLHQsdCksITApKX1mdW5jdGlvbiBabChzLGUpe2xldCB0PXMucmVzb2x2ZShlKSxhPXQuaW5kZXgoKTtyZXR1cm4gX3VhKHQubm9kZUJlZm9yZSx0Lm5vZGVBZnRlcikmJnQucGFyZW50LmNhblJlcGxhY2UoYSxhKzEpfWZ1bmN0aW9uIGtHYShzLGUpe2UuY29udGVudC5zaXplfHxzLnR5cGUuY29tcGF0aWJsZUNvbnRlbnQoZS50eXBlKTtsZXQgdD1zLmNvbnRlbnRNYXRjaEF0KHMuY2hpbGRDb3VudCkse2xpbmVicmVha1JlcGxhY2VtZW50OmF9PXMudHlwZS5zY2hlbWE7Zm9yKGxldCByPTA7cjxlLmNoaWxkQ291bnQ7cisrKXtsZXQgbj1lLmNoaWxkKHIpLG89bi50eXBlPT1hP3MudHlwZS5zY2hlbWEubm9kZXMudGV4dDpuLnR5cGU7aWYodD10Lm1hdGNoVHlwZShvKSwhdHx8IXMudHlwZS5hbGxvd3NNYXJrcyhuLm1hcmtzKSlyZXR1cm4hMX1yZXR1cm4gdC52YWxpZEVuZH1mdW5jdGlvbiBfdWEocyxlKXtyZXR1cm4hIShzJiZlJiYhcy5pc0xlYWYmJmtHYShzLGUpKX1mdW5jdGlvbiBZOChzLGUsdD0tMSl7bGV0IGE9cy5yZXNvbHZlKGUpO2ZvcihsZXQgcj1hLmRlcHRoOztyLS0pe2xldCBuLG8sbD1hLmluZGV4KHIpO2lmKHI9PWEuZGVwdGg/KG49YS5ub2RlQmVmb3JlLG89YS5ub2RlQWZ0ZXIpOnQ+MD8obj1hLm5vZGUocisxKSxsKyssbz1hLm5vZGUocikubWF5YmVDaGlsZChsKSk6KG49YS5ub2RlKHIpLm1heWJlQ2hpbGQobC0xKSxvPWEubm9kZShyKzEpKSxuJiYhbi5pc1RleHRibG9jayYmX3VhKG4sbykmJmEubm9kZShyKS5jYW5SZXBsYWNlKGwsbCsxKSlyZXR1cm4gZTtpZihyPT0wKWJyZWFrO2U9dDwwP2EuYmVmb3JlKHIpOmEuYWZ0ZXIocil9fWZ1bmN0aW9uIFNHYShzLGUsdCl7bGV0IGE9bnVsbCx7bGluZWJyZWFrUmVwbGFjZW1lbnQ6cn09cy5kb2MudHlwZS5zY2hlbWEsbj1zLmRvYy5yZXNvbHZlKGUtdCksbz1uLm5vZGUoKS50eXBlO2lmKHImJm8uaW5saW5lQ29udGVudCl7bGV0IHU9by53aGl0ZXNwYWNlPT0icHJlIixjPSEhby5jb250ZW50TWF0Y2gubWF0Y2hUeXBlKHIpO3UmJiFjP2E9ITE6IXUmJmMmJihhPSEwKX1sZXQgbD1zLnN0ZXBzLmxlbmd0aDtpZihhPT09ITEpe2xldCB1PXMuZG9jLnJlc29sdmUoZSt0KTtTdWEocyx1Lm5vZGUoKSx1LmJlZm9yZSgpLGwpfW8uaW5saW5lQ29udGVudCYma3R0KHMsZSt0LTEsbyxuLm5vZGUoKS5jb250ZW50TWF0Y2hBdChuLmluZGV4KCkpLGE9PW51bGwpO2xldCBwPXMubWFwcGluZy5zbGljZShsKSxkPXAubWFwKGUtdCk7aWYocy5zdGVwKG5ldyBnbyhkLHAubWFwKGUrdCwtMSksX3QuZW1wdHksITApKSxhPT09ITApe2xldCB1PXMuZG9jLnJlc29sdmUoZCk7a3VhKHMsdS5ub2RlKCksdS5iZWZvcmUoKSxzLnN0ZXBzLmxlbmd0aCl9cmV0dXJuIHN9ZnVuY3Rpb24gTXVhKHMsZSx0KXtsZXQgYT1zLnJlc29sdmUoZSk7aWYoYS5wYXJlbnQuY2FuUmVwbGFjZVdpdGgoYS5pbmRleCgpLGEuaW5kZXgoKSx0KSlyZXR1cm4gZTtpZihhLnBhcmVudE9mZnNldD09MClmb3IobGV0IHI9YS5kZXB0aC0xO3I+PTA7ci0tKXtsZXQgbj1hLmluZGV4KHIpO2lmKGEubm9kZShyKS5jYW5SZXBsYWNlV2l0aChuLG4sdCkpcmV0dXJuIGEuYmVmb3JlKHIrMSk7aWYobj4wKXJldHVybiBudWxsfWlmKGEucGFyZW50T2Zmc2V0PT1hLnBhcmVudC5jb250ZW50LnNpemUpZm9yKGxldCByPWEuZGVwdGgtMTtyPj0wO3ItLSl7bGV0IG49YS5pbmRleEFmdGVyKHIpO2lmKGEubm9kZShyKS5jYW5SZXBsYWNlV2l0aChuLG4sdCkpcmV0dXJuIGEuYWZ0ZXIocisxKTtpZihuPGEubm9kZShyKS5jaGlsZENvdW50KXJldHVybiBudWxsfXJldHVybiBudWxsfWZ1bmN0aW9uIFZaKHMsZSx0KXtsZXQgYT1zLnJlc29sdmUoZSk7aWYoIXQuY29udGVudC5zaXplKXJldHVybiBlO2xldCByPXQuY29udGVudDtmb3IobGV0IG49MDtuPHQub3BlblN0YXJ0O24rKylyPXIuZmlyc3RDaGlsZC5jb250ZW50O2ZvcihsZXQgbj0xO248PSh0Lm9wZW5TdGFydD09MCYmdC5zaXplPzI6MSk7bisrKWZvcihsZXQgbz1hLmRlcHRoO28+PTA7by0tKXtsZXQgbD1vPT1hLmRlcHRoPzA6YS5wb3M8PShhLnN0YXJ0KG8rMSkrYS5lbmQobysxKSkvMj8tMToxLHA9YS5pbmRleChvKSsobD4wPzE6MCksZD1hLm5vZGUobyksdT0hMTtpZihuPT0xKXU9ZC5jYW5SZXBsYWNlKHAscCxyKTtlbHNle2xldCBjPWQuY29udGVudE1hdGNoQXQocCkuZmluZFdyYXBwaW5nKHIuZmlyc3RDaGlsZC50eXBlKTt1PWMmJmQuY2FuUmVwbGFjZVdpdGgocCxwLGNbMF0pfWlmKHUpcmV0dXJuIGw9PTA/YS5wb3M6bDwwP2EuYmVmb3JlKG8rMSk6YS5hZnRlcihvKzEpfXJldHVybiBudWxsfWZ1bmN0aW9uIF92KHMsZSx0PWUsYT1fdC5lbXB0eSl7aWYoZT09dCYmIWEuc2l6ZSlyZXR1cm4gbnVsbDtsZXQgcj1zLnJlc29sdmUoZSksbj1zLnJlc29sdmUodCk7cmV0dXJuIHp1YShyLG4sYSk/bmV3IGdvKGUsdCxhKTpuZXcgU3R0KHIsbixhKS5maXQoKX1mdW5jdGlvbiB6dWEocyxlLHQpe3JldHVybiF0Lm9wZW5TdGFydCYmIXQub3BlbkVuZCYmcy5zdGFydCgpPT1lLnN0YXJ0KCkmJnMucGFyZW50LmNhblJlcGxhY2Uocy5pbmRleCgpLGUuaW5kZXgoKSx0LmNvbnRlbnQpfWZ1bmN0aW9uIEJaKHMsZSx0KXtyZXR1cm4gZT09MD9zLmN1dEJ5SW5kZXgodCxzLmNoaWxkQ291bnQpOnMucmVwbGFjZUNoaWxkKDAscy5maXJzdENoaWxkLmNvcHkoQloocy5maXJzdENoaWxkLmNvbnRlbnQsZS0xLHQpKSl9ZnVuY3Rpb24gSFoocyxlLHQpe3JldHVybiBlPT0wP3MuYXBwZW5kKHQpOnMucmVwbGFjZUNoaWxkKHMuY2hpbGRDb3VudC0xLHMubGFzdENoaWxkLmNvcHkoSFoocy5sYXN0Q2hpbGQuY29udGVudCxlLTEsdCkpKX1mdW5jdGlvbiBfdHQocyxlKXtmb3IobGV0IHQ9MDt0PGU7dCsrKXM9cy5maXJzdENoaWxkLmNvbnRlbnQ7cmV0dXJuIHN9ZnVuY3Rpb24gQ3VhKHMsZSx0KXtpZihlPD0wKXJldHVybiBzO2xldCBhPXMuY29udGVudDtyZXR1cm4gZT4xJiYoYT1hLnJlcGxhY2VDaGlsZCgwLEN1YShhLmZpcnN0Q2hpbGQsZS0xLGEuY2hpbGRDb3VudD09MT90LTE6MCkpKSxlPjAmJihhPXMudHlwZS5jb250ZW50TWF0Y2guZmlsbEJlZm9yZShhKS5hcHBlbmQoYSksdDw9MCYmKGE9YS5hcHBlbmQocy50eXBlLmNvbnRlbnRNYXRjaC5tYXRjaEZyYWdtZW50KGEpLmZpbGxCZWZvcmUocnQuZW1wdHksITApKSkpLHMuY29weShhKX1mdW5jdGlvbiBNdHQocyxlLHQsYSxyKXtsZXQgbj1zLm5vZGUoZSksbz1yP3MuaW5kZXhBZnRlcihlKTpzLmluZGV4KGUpO2lmKG89PW4uY2hpbGRDb3VudCYmIXQuY29tcGF0aWJsZUNvbnRlbnQobi50eXBlKSlyZXR1cm4gbnVsbDtsZXQgbD1hLmZpbGxCZWZvcmUobi5jb250ZW50LCEwLG8pO3JldHVybiBsJiYhX0dhKHQsbi5jb250ZW50LG8pP2w6bnVsbH1mdW5jdGlvbiBfR2EocyxlLHQpe2ZvcihsZXQgYT10O2E8ZS5jaGlsZENvdW50O2ErKylpZighcy5hbGxvd3NNYXJrcyhlLmNoaWxkKGEpLm1hcmtzKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBNR2Eocyl7cmV0dXJuIHMuc3BlYy5kZWZpbmluZ3x8cy5zcGVjLmRlZmluaW5nRm9yQ29udGVudH1mdW5jdGlvbiB6R2EocyxlLHQsYSl7aWYoIWEuc2l6ZSlyZXR1cm4gcy5kZWxldGVSYW5nZShlLHQpO2xldCByPXMuZG9jLnJlc29sdmUoZSksbj1zLmRvYy5yZXNvbHZlKHQpO2lmKHp1YShyLG4sYSkpcmV0dXJuIHMuc3RlcChuZXcgZ28oZSx0LGEpKTtsZXQgbz0kdWEocixuKTtvW28ubGVuZ3RoLTFdPT0wJiZvLnBvcCgpO2xldCBsPS0oci5kZXB0aCsxKTtvLnVuc2hpZnQobCk7Zm9yKGxldCBiPXIuZGVwdGgsdj1yLnBvcy0xO2I+MDtiLS0sdi0tKXtsZXQgeD1yLm5vZGUoYikudHlwZS5zcGVjO2lmKHguZGVmaW5pbmd8fHguZGVmaW5pbmdBc0NvbnRleHR8fHguaXNvbGF0aW5nKWJyZWFrO28uaW5kZXhPZihiKT4tMT9sPWI6ci5iZWZvcmUoYik9PXYmJm8uc3BsaWNlKDEsMCwtYil9bGV0IHA9by5pbmRleE9mKGwpLGQ9W10sdT1hLm9wZW5TdGFydDtmb3IobGV0IGI9YS5jb250ZW50LHY9MDs7disrKXtsZXQgeD1iLmZpcnN0Q2hpbGQ7aWYoZC5wdXNoKHgpLHY9PWEub3BlblN0YXJ0KWJyZWFrO2I9eC5jb250ZW50fWZvcihsZXQgYj11LTE7Yj49MDtiLS0pe2xldCB2PWRbYl0seD1NR2Eodi50eXBlKTtpZih4JiYhdi5zYW1lTWFya3VwKHIubm9kZShNYXRoLmFicyhsKS0xKSkpdT1iO2Vsc2UgaWYoeHx8IXYudHlwZS5pc1RleHRibG9jaylicmVha31mb3IobGV0IGI9YS5vcGVuU3RhcnQ7Yj49MDtiLS0pe2xldCB2PShiK3UrMSklKGEub3BlblN0YXJ0KzEpLHg9ZFt2XTtpZih4KWZvcihsZXQgbT0wO208by5sZW5ndGg7bSsrKXtsZXQgZj1vWyhtK3ApJW8ubGVuZ3RoXSx5PSEwO2Y8MCYmKHk9ITEsZj0tZik7bGV0IE09ci5ub2RlKGYtMSksej1yLmluZGV4KGYtMSk7aWYoTS5jYW5SZXBsYWNlV2l0aCh6LHoseC50eXBlLHgubWFya3MpKXJldHVybiBzLnJlcGxhY2Uoci5iZWZvcmUoZikseT9uLmFmdGVyKGYpOnQsbmV3IF90KFR1YShhLmNvbnRlbnQsMCxhLm9wZW5TdGFydCx2KSx2LGEub3BlbkVuZCkpfX1sZXQgYz1zLnN0ZXBzLmxlbmd0aDtmb3IobGV0IGI9by5sZW5ndGgtMTtiPj0wJiYocy5yZXBsYWNlKGUsdCxhKSwhKHMuc3RlcHMubGVuZ3RoPmMpKTtiLS0pe2xldCB2PW9bYl07djwwfHwoZT1yLmJlZm9yZSh2KSx0PW4uYWZ0ZXIodikpfX1mdW5jdGlvbiBUdWEocyxlLHQsYSxyKXtpZihlPHQpe2xldCBuPXMuZmlyc3RDaGlsZDtzPXMucmVwbGFjZUNoaWxkKDAsbi5jb3B5KFR1YShuLmNvbnRlbnQsZSsxLHQsYSxuKSkpfWlmKGU+YSl7bGV0IG49ci5jb250ZW50TWF0Y2hBdCgwKSxvPW4uZmlsbEJlZm9yZShzKS5hcHBlbmQocyk7cz1vLmFwcGVuZChuLm1hdGNoRnJhZ21lbnQobykuZmlsbEJlZm9yZShydC5lbXB0eSwhMCkpfXJldHVybiBzfWZ1bmN0aW9uIENHYShzLGUsdCxhKXtpZighYS5pc0lubGluZSYmZT09dCYmcy5kb2MucmVzb2x2ZShlKS5wYXJlbnQuY29udGVudC5zaXplKXtsZXQgcj1NdWEocy5kb2MsZSxhLnR5cGUpO3IhPW51bGwmJihlPXQ9cil9cy5yZXBsYWNlUmFuZ2UoZSx0LG5ldyBfdChydC5mcm9tKGEpLDAsMCkpfWZ1bmN0aW9uIFRHYShzLGUsdCl7bGV0IGE9cy5kb2MucmVzb2x2ZShlKSxyPXMuZG9jLnJlc29sdmUodCk7aWYoYS5wYXJlbnQuaXNUZXh0YmxvY2smJnIucGFyZW50LmlzVGV4dGJsb2NrJiZhLnN0YXJ0KCkhPXIuc3RhcnQoKSYmYS5wYXJlbnRPZmZzZXQ9PTAmJnIucGFyZW50T2Zmc2V0PT0wKXtsZXQgbz1hLnNoYXJlZERlcHRoKHQpLGw9ITE7Zm9yKGxldCBwPWEuZGVwdGg7cD5vO3AtLSlhLm5vZGUocCkudHlwZS5zcGVjLmlzb2xhdGluZyYmKGw9ITApO2ZvcihsZXQgcD1yLmRlcHRoO3A+bztwLS0pci5ub2RlKHApLnR5cGUuc3BlYy5pc29sYXRpbmcmJihsPSEwKTtpZighbCl7Zm9yKGxldCBwPWEuZGVwdGg7cD4wJiZlPT1hLnN0YXJ0KHApO3AtLSllPWEuYmVmb3JlKHApO2ZvcihsZXQgcD1yLmRlcHRoO3A+MCYmdD09ci5zdGFydChwKTtwLS0pdD1yLmJlZm9yZShwKTthPXMuZG9jLnJlc29sdmUoZSkscj1zLmRvYy5yZXNvbHZlKHQpfX1sZXQgbj0kdWEoYSxyKTtmb3IobGV0IG89MDtvPG4ubGVuZ3RoO28rKyl7bGV0IGw9bltvXSxwPW89PW4ubGVuZ3RoLTE7aWYocCYmbD09MHx8YS5ub2RlKGwpLnR5cGUuY29udGVudE1hdGNoLnZhbGlkRW5kKXJldHVybiBzLmRlbGV0ZShhLnN0YXJ0KGwpLHIuZW5kKGwpKTtpZihsPjAmJihwfHxhLm5vZGUobC0xKS5jYW5SZXBsYWNlKGEuaW5kZXgobC0xKSxyLmluZGV4QWZ0ZXIobC0xKSkpKXJldHVybiBzLmRlbGV0ZShhLmJlZm9yZShsKSxyLmFmdGVyKGwpKX1mb3IobGV0IG89MTtvPD1hLmRlcHRoJiZvPD1yLmRlcHRoO28rKylpZihlLWEuc3RhcnQobyk9PWEuZGVwdGgtbyYmdD5hLmVuZChvKSYmci5lbmQobyktdCE9ci5kZXB0aC1vJiZhLnN0YXJ0KG8tMSk9PXIuc3RhcnQoby0xKSYmYS5ub2RlKG8tMSkuY2FuUmVwbGFjZShhLmluZGV4KG8tMSksci5pbmRleChvLTEpKSlyZXR1cm4gcy5kZWxldGUoYS5iZWZvcmUobyksdCk7cy5kZWxldGUoZSx0KX1mdW5jdGlvbiAkdWEocyxlKXtsZXQgdD1bXSxhPU1hdGgubWluKHMuZGVwdGgsZS5kZXB0aCk7Zm9yKGxldCByPWE7cj49MDtyLS0pe2xldCBuPXMuc3RhcnQocik7aWYobjxzLnBvcy0ocy5kZXB0aC1yKXx8ZS5lbmQocik+ZS5wb3MrKGUuZGVwdGgtcil8fHMubm9kZShyKS50eXBlLnNwZWMuaXNvbGF0aW5nfHxlLm5vZGUocikudHlwZS5zcGVjLmlzb2xhdGluZylicmVhazsobj09ZS5zdGFydChyKXx8cj09cy5kZXB0aCYmcj09ZS5kZXB0aCYmcy5wYXJlbnQuaW5saW5lQ29udGVudCYmZS5wYXJlbnQuaW5saW5lQ29udGVudCYmciYmZS5zdGFydChyLTEpPT1uLTEpJiZ0LnB1c2gocil9cmV0dXJuIHR9dmFyIG11YSxndWEsdnVhLHh1YSxxbmUseXVhLHl2LEVkLFN2LHh0dCxYcixtbyx3dixNaCxrdixVOCxnbyxkcixTdHQscVosalosVzgsRzgsemg9ZygoKT0+e19oKCk7bXVhPTY1NTM1LGd1YT1NYXRoLnBvdygyLDE2KTtpKGNHYSwibWFrZVJlY292ZXIiKTtpKGJ1YSwicmVjb3ZlckluZGV4Iik7aShkR2EsInJlY292ZXJPZmZzZXQiKTt2dWE9MSx4dWE9MixxbmU9NCx5dWE9OCx5dj1jbGFzc3tzdGF0aWN7aSh0aGlzLCJNYXBSZXN1bHQiKX1jb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5wb3M9ZSx0aGlzLmRlbEluZm89dCx0aGlzLnJlY292ZXI9YX1nZXQgZGVsZXRlZCgpe3JldHVybih0aGlzLmRlbEluZm8meXVhKT4wfWdldCBkZWxldGVkQmVmb3JlKCl7cmV0dXJuKHRoaXMuZGVsSW5mbyYodnVhfHFuZSkpPjB9Z2V0IGRlbGV0ZWRBZnRlcigpe3JldHVybih0aGlzLmRlbEluZm8mKHh1YXxxbmUpKT4wfWdldCBkZWxldGVkQWNyb3NzKCl7cmV0dXJuKHRoaXMuZGVsSW5mbyZxbmUpPjB9fSxFZD1jbGFzcyBze3N0YXRpY3tpKHRoaXMsIlN0ZXBNYXAiKX1jb25zdHJ1Y3RvcihlLHQ9ITEpe2lmKHRoaXMucmFuZ2VzPWUsdGhpcy5pbnZlcnRlZD10LCFlLmxlbmd0aCYmcy5lbXB0eSlyZXR1cm4gcy5lbXB0eX1yZWNvdmVyKGUpe2xldCB0PTAsYT1idWEoZSk7aWYoIXRoaXMuaW52ZXJ0ZWQpZm9yKGxldCByPTA7cjxhO3IrKyl0Kz10aGlzLnJhbmdlc1tyKjMrMl0tdGhpcy5yYW5nZXNbciozKzFdO3JldHVybiB0aGlzLnJhbmdlc1thKjNdK3QrZEdhKGUpfW1hcFJlc3VsdChlLHQ9MSl7cmV0dXJuIHRoaXMuX21hcChlLHQsITEpfW1hcChlLHQ9MSl7cmV0dXJuIHRoaXMuX21hcChlLHQsITApfV9tYXAoZSx0LGEpe2xldCByPTAsbj10aGlzLmludmVydGVkPzI6MSxvPXRoaXMuaW52ZXJ0ZWQ/MToyO2ZvcihsZXQgbD0wO2w8dGhpcy5yYW5nZXMubGVuZ3RoO2wrPTMpe2xldCBwPXRoaXMucmFuZ2VzW2xdLSh0aGlzLmludmVydGVkP3I6MCk7aWYocD5lKWJyZWFrO2xldCBkPXRoaXMucmFuZ2VzW2wrbl0sdT10aGlzLnJhbmdlc1tsK29dLGM9cCtkO2lmKGU8PWMpe2xldCBiPWQ/ZT09cD8tMTplPT1jPzE6dDp0LHY9cCtyKyhiPDA/MDp1KTtpZihhKXJldHVybiB2O2xldCB4PWU9PSh0PDA/cDpjKT9udWxsOmNHYShsLzMsZS1wKSxtPWU9PXA/eHVhOmU9PWM/dnVhOnFuZTtyZXR1cm4odDwwP2UhPXA6ZSE9YykmJihtfD15dWEpLG5ldyB5dih2LG0seCl9cis9dS1kfXJldHVybiBhP2UrcjpuZXcgeXYoZStyLDAsbnVsbCl9dG91Y2hlcyhlLHQpe2xldCBhPTAscj1idWEodCksbj10aGlzLmludmVydGVkPzI6MSxvPXRoaXMuaW52ZXJ0ZWQ/MToyO2ZvcihsZXQgbD0wO2w8dGhpcy5yYW5nZXMubGVuZ3RoO2wrPTMpe2xldCBwPXRoaXMucmFuZ2VzW2xdLSh0aGlzLmludmVydGVkP2E6MCk7aWYocD5lKWJyZWFrO2xldCBkPXRoaXMucmFuZ2VzW2wrbl0sdT1wK2Q7aWYoZTw9dSYmbD09ciozKXJldHVybiEwO2ErPXRoaXMucmFuZ2VzW2wrb10tZH1yZXR1cm4hMX1mb3JFYWNoKGUpe2xldCB0PXRoaXMuaW52ZXJ0ZWQ/MjoxLGE9dGhpcy5pbnZlcnRlZD8xOjI7Zm9yKGxldCByPTAsbj0wO3I8dGhpcy5yYW5nZXMubGVuZ3RoO3IrPTMpe2xldCBvPXRoaXMucmFuZ2VzW3JdLGw9by0odGhpcy5pbnZlcnRlZD9uOjApLHA9bysodGhpcy5pbnZlcnRlZD8wOm4pLGQ9dGhpcy5yYW5nZXNbcit0XSx1PXRoaXMucmFuZ2VzW3IrYV07ZShsLGwrZCxwLHArdSksbis9dS1kfX1pbnZlcnQoKXtyZXR1cm4gbmV3IHModGhpcy5yYW5nZXMsIXRoaXMuaW52ZXJ0ZWQpfXRvU3RyaW5nKCl7cmV0dXJuKHRoaXMuaW52ZXJ0ZWQ/Ii0iOiIiKStKU09OLnN0cmluZ2lmeSh0aGlzLnJhbmdlcyl9c3RhdGljIG9mZnNldChlKXtyZXR1cm4gZT09MD9zLmVtcHR5Om5ldyBzKGU8MD9bMCwtZSwwXTpbMCwwLGVdKX19O0VkLmVtcHR5PW5ldyBFZChbXSk7U3Y9Y2xhc3Mgc3tzdGF0aWN7aSh0aGlzLCJNYXBwaW5nIil9Y29uc3RydWN0b3IoZSx0LGE9MCxyPWU/ZS5sZW5ndGg6MCl7dGhpcy5taXJyb3I9dCx0aGlzLmZyb209YSx0aGlzLnRvPXIsdGhpcy5fbWFwcz1lfHxbXSx0aGlzLm93bkRhdGE9IShlfHx0KX1nZXQgbWFwcygpe3JldHVybiB0aGlzLl9tYXBzfXNsaWNlKGU9MCx0PXRoaXMubWFwcy5sZW5ndGgpe3JldHVybiBuZXcgcyh0aGlzLl9tYXBzLHRoaXMubWlycm9yLGUsdCl9YXBwZW5kTWFwKGUsdCl7dGhpcy5vd25EYXRhfHwodGhpcy5fbWFwcz10aGlzLl9tYXBzLnNsaWNlKCksdGhpcy5taXJyb3I9dGhpcy5taXJyb3ImJnRoaXMubWlycm9yLnNsaWNlKCksdGhpcy5vd25EYXRhPSEwKSx0aGlzLnRvPXRoaXMuX21hcHMucHVzaChlKSx0IT1udWxsJiZ0aGlzLnNldE1pcnJvcih0aGlzLl9tYXBzLmxlbmd0aC0xLHQpfWFwcGVuZE1hcHBpbmcoZSl7Zm9yKGxldCB0PTAsYT10aGlzLl9tYXBzLmxlbmd0aDt0PGUuX21hcHMubGVuZ3RoO3QrKyl7bGV0IHI9ZS5nZXRNaXJyb3IodCk7dGhpcy5hcHBlbmRNYXAoZS5fbWFwc1t0XSxyIT1udWxsJiZyPHQ/YStyOnZvaWQgMCl9fWdldE1pcnJvcihlKXtpZih0aGlzLm1pcnJvcil7Zm9yKGxldCB0PTA7dDx0aGlzLm1pcnJvci5sZW5ndGg7dCsrKWlmKHRoaXMubWlycm9yW3RdPT1lKXJldHVybiB0aGlzLm1pcnJvclt0Kyh0JTI/LTE6MSldfX1zZXRNaXJyb3IoZSx0KXt0aGlzLm1pcnJvcnx8KHRoaXMubWlycm9yPVtdKSx0aGlzLm1pcnJvci5wdXNoKGUsdCl9YXBwZW5kTWFwcGluZ0ludmVydGVkKGUpe2ZvcihsZXQgdD1lLm1hcHMubGVuZ3RoLTEsYT10aGlzLl9tYXBzLmxlbmd0aCtlLl9tYXBzLmxlbmd0aDt0Pj0wO3QtLSl7bGV0IHI9ZS5nZXRNaXJyb3IodCk7dGhpcy5hcHBlbmRNYXAoZS5fbWFwc1t0XS5pbnZlcnQoKSxyIT1udWxsJiZyPnQ/YS1yLTE6dm9pZCAwKX19aW52ZXJ0KCl7bGV0IGU9bmV3IHM7cmV0dXJuIGUuYXBwZW5kTWFwcGluZ0ludmVydGVkKHRoaXMpLGV9bWFwKGUsdD0xKXtpZih0aGlzLm1pcnJvcilyZXR1cm4gdGhpcy5fbWFwKGUsdCwhMCk7Zm9yKGxldCBhPXRoaXMuZnJvbTthPHRoaXMudG87YSsrKWU9dGhpcy5fbWFwc1thXS5tYXAoZSx0KTtyZXR1cm4gZX1tYXBSZXN1bHQoZSx0PTEpe3JldHVybiB0aGlzLl9tYXAoZSx0LCExKX1fbWFwKGUsdCxhKXtsZXQgcj0wO2ZvcihsZXQgbj10aGlzLmZyb207bjx0aGlzLnRvO24rKyl7bGV0IG89dGhpcy5fbWFwc1tuXSxsPW8ubWFwUmVzdWx0KGUsdCk7aWYobC5yZWNvdmVyIT1udWxsKXtsZXQgcD10aGlzLmdldE1pcnJvcihuKTtpZihwIT1udWxsJiZwPm4mJnA8dGhpcy50byl7bj1wLGU9dGhpcy5fbWFwc1twXS5yZWNvdmVyKGwucmVjb3Zlcik7Y29udGludWV9fXJ8PWwuZGVsSW5mbyxlPWwucG9zfXJldHVybiBhP2U6bmV3IHl2KGUscixudWxsKX19LHh0dD1PYmplY3QuY3JlYXRlKG51bGwpLFhyPWNsYXNze3N0YXRpY3tpKHRoaXMsIlN0ZXAiKX1nZXRNYXAoKXtyZXR1cm4gRWQuZW1wdHl9bWVyZ2UoZSl7cmV0dXJuIG51bGx9c3RhdGljIGZyb21KU09OKGUsdCl7aWYoIXR8fCF0LnN0ZXBUeXBlKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBTdGVwLmZyb21KU09OIik7bGV0IGE9eHR0W3Quc3RlcFR5cGVdO2lmKCFhKXRocm93IG5ldyBSYW5nZUVycm9yKGBObyBzdGVwIHR5cGUgJHt0LnN0ZXBUeXBlfSBkZWZpbmVkYCk7cmV0dXJuIGEuZnJvbUpTT04oZSx0KX1zdGF0aWMganNvbklEKGUsdCl7aWYoZSBpbiB4dHQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkR1cGxpY2F0ZSB1c2Ugb2Ygc3RlcCBKU09OIElEICIrZSk7cmV0dXJuIHh0dFtlXT10LHQucHJvdG90eXBlLmpzb25JRD1lLHR9fSxtbz1jbGFzcyBze3N0YXRpY3tpKHRoaXMsIlN0ZXBSZXN1bHQiKX1jb25zdHJ1Y3RvcihlLHQpe3RoaXMuZG9jPWUsdGhpcy5mYWlsZWQ9dH1zdGF0aWMgb2soZSl7cmV0dXJuIG5ldyBzKGUsbnVsbCl9c3RhdGljIGZhaWwoZSl7cmV0dXJuIG5ldyBzKG51bGwsZSl9c3RhdGljIGZyb21SZXBsYWNlKGUsdCxhLHIpe3RyeXtyZXR1cm4gcy5vayhlLnJlcGxhY2UodCxhLHIpKX1jYXRjaChuKXtpZihuIGluc3RhbmNlb2Yga2gpcmV0dXJuIHMuZmFpbChuLm1lc3NhZ2UpO3Rocm93IG59fX07aSh5dHQsIm1hcEZyYWdtZW50Iik7d3Y9Y2xhc3MgcyBleHRlbmRzIFhye3N0YXRpY3tpKHRoaXMsIkFkZE1hcmtTdGVwIil9Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKCksdGhpcy5mcm9tPWUsdGhpcy50bz10LHRoaXMubWFyaz1hfWFwcGx5KGUpe2xldCB0PWUuc2xpY2UodGhpcy5mcm9tLHRoaXMudG8pLGE9ZS5yZXNvbHZlKHRoaXMuZnJvbSkscj1hLm5vZGUoYS5zaGFyZWREZXB0aCh0aGlzLnRvKSksbj1uZXcgX3QoeXR0KHQuY29udGVudCwobyxsKT0+IW8uaXNBdG9tfHwhbC50eXBlLmFsbG93c01hcmtUeXBlKHRoaXMubWFyay50eXBlKT9vOm8ubWFyayh0aGlzLm1hcmsuYWRkVG9TZXQoby5tYXJrcykpLHIpLHQub3BlblN0YXJ0LHQub3BlbkVuZCk7cmV0dXJuIG1vLmZyb21SZXBsYWNlKGUsdGhpcy5mcm9tLHRoaXMudG8sbil9aW52ZXJ0KCl7cmV0dXJuIG5ldyBNaCh0aGlzLmZyb20sdGhpcy50byx0aGlzLm1hcmspfW1hcChlKXtsZXQgdD1lLm1hcFJlc3VsdCh0aGlzLmZyb20sMSksYT1lLm1hcFJlc3VsdCh0aGlzLnRvLC0xKTtyZXR1cm4gdC5kZWxldGVkJiZhLmRlbGV0ZWR8fHQucG9zPj1hLnBvcz9udWxsOm5ldyBzKHQucG9zLGEucG9zLHRoaXMubWFyayl9bWVyZ2UoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBzJiZlLm1hcmsuZXEodGhpcy5tYXJrKSYmdGhpcy5mcm9tPD1lLnRvJiZ0aGlzLnRvPj1lLmZyb20/bmV3IHMoTWF0aC5taW4odGhpcy5mcm9tLGUuZnJvbSksTWF0aC5tYXgodGhpcy50byxlLnRvKSx0aGlzLm1hcmspOm51bGx9dG9KU09OKCl7cmV0dXJue3N0ZXBUeXBlOiJhZGRNYXJrIixtYXJrOnRoaXMubWFyay50b0pTT04oKSxmcm9tOnRoaXMuZnJvbSx0bzp0aGlzLnRvfX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZih0eXBlb2YgdC5mcm9tIT0ibnVtYmVyInx8dHlwZW9mIHQudG8hPSJudW1iZXIiKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBBZGRNYXJrU3RlcC5mcm9tSlNPTiIpO3JldHVybiBuZXcgcyh0LmZyb20sdC50byxlLm1hcmtGcm9tSlNPTih0Lm1hcmspKX19O1hyLmpzb25JRCgiYWRkTWFyayIsd3YpO01oPWNsYXNzIHMgZXh0ZW5kcyBYcntzdGF0aWN7aSh0aGlzLCJSZW1vdmVNYXJrU3RlcCIpfWNvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigpLHRoaXMuZnJvbT1lLHRoaXMudG89dCx0aGlzLm1hcms9YX1hcHBseShlKXtsZXQgdD1lLnNsaWNlKHRoaXMuZnJvbSx0aGlzLnRvKSxhPW5ldyBfdCh5dHQodC5jb250ZW50LHI9PnIubWFyayh0aGlzLm1hcmsucmVtb3ZlRnJvbVNldChyLm1hcmtzKSksZSksdC5vcGVuU3RhcnQsdC5vcGVuRW5kKTtyZXR1cm4gbW8uZnJvbVJlcGxhY2UoZSx0aGlzLmZyb20sdGhpcy50byxhKX1pbnZlcnQoKXtyZXR1cm4gbmV3IHd2KHRoaXMuZnJvbSx0aGlzLnRvLHRoaXMubWFyayl9bWFwKGUpe2xldCB0PWUubWFwUmVzdWx0KHRoaXMuZnJvbSwxKSxhPWUubWFwUmVzdWx0KHRoaXMudG8sLTEpO3JldHVybiB0LmRlbGV0ZWQmJmEuZGVsZXRlZHx8dC5wb3M+PWEucG9zP251bGw6bmV3IHModC5wb3MsYS5wb3MsdGhpcy5tYXJrKX1tZXJnZShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIHMmJmUubWFyay5lcSh0aGlzLm1hcmspJiZ0aGlzLmZyb208PWUudG8mJnRoaXMudG8+PWUuZnJvbT9uZXcgcyhNYXRoLm1pbih0aGlzLmZyb20sZS5mcm9tKSxNYXRoLm1heCh0aGlzLnRvLGUudG8pLHRoaXMubWFyayk6bnVsbH10b0pTT04oKXtyZXR1cm57c3RlcFR5cGU6InJlbW92ZU1hcmsiLG1hcms6dGhpcy5tYXJrLnRvSlNPTigpLGZyb206dGhpcy5mcm9tLHRvOnRoaXMudG99fXN0YXRpYyBmcm9tSlNPTihlLHQpe2lmKHR5cGVvZiB0LmZyb20hPSJudW1iZXIifHx0eXBlb2YgdC50byE9Im51bWJlciIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIFJlbW92ZU1hcmtTdGVwLmZyb21KU09OIik7cmV0dXJuIG5ldyBzKHQuZnJvbSx0LnRvLGUubWFya0Zyb21KU09OKHQubWFyaykpfX07WHIuanNvbklEKCJyZW1vdmVNYXJrIixNaCk7a3Y9Y2xhc3MgcyBleHRlbmRzIFhye3N0YXRpY3tpKHRoaXMsIkFkZE5vZGVNYXJrU3RlcCIpfWNvbnN0cnVjdG9yKGUsdCl7c3VwZXIoKSx0aGlzLnBvcz1lLHRoaXMubWFyaz10fWFwcGx5KGUpe2xldCB0PWUubm9kZUF0KHRoaXMucG9zKTtpZighdClyZXR1cm4gbW8uZmFpbCgiTm8gbm9kZSBhdCBtYXJrIHN0ZXAncyBwb3NpdGlvbiIpO2xldCBhPXQudHlwZS5jcmVhdGUodC5hdHRycyxudWxsLHRoaXMubWFyay5hZGRUb1NldCh0Lm1hcmtzKSk7cmV0dXJuIG1vLmZyb21SZXBsYWNlKGUsdGhpcy5wb3MsdGhpcy5wb3MrMSxuZXcgX3QocnQuZnJvbShhKSwwLHQuaXNMZWFmPzA6MSkpfWludmVydChlKXtsZXQgdD1lLm5vZGVBdCh0aGlzLnBvcyk7aWYodCl7bGV0IGE9dGhpcy5tYXJrLmFkZFRvU2V0KHQubWFya3MpO2lmKGEubGVuZ3RoPT10Lm1hcmtzLmxlbmd0aCl7Zm9yKGxldCByPTA7cjx0Lm1hcmtzLmxlbmd0aDtyKyspaWYoIXQubWFya3Nbcl0uaXNJblNldChhKSlyZXR1cm4gbmV3IHModGhpcy5wb3MsdC5tYXJrc1tyXSk7cmV0dXJuIG5ldyBzKHRoaXMucG9zLHRoaXMubWFyayl9fXJldHVybiBuZXcgVTgodGhpcy5wb3MsdGhpcy5tYXJrKX1tYXAoZSl7bGV0IHQ9ZS5tYXBSZXN1bHQodGhpcy5wb3MsMSk7cmV0dXJuIHQuZGVsZXRlZEFmdGVyP251bGw6bmV3IHModC5wb3MsdGhpcy5tYXJrKX10b0pTT04oKXtyZXR1cm57c3RlcFR5cGU6ImFkZE5vZGVNYXJrIixwb3M6dGhpcy5wb3MsbWFyazp0aGlzLm1hcmsudG9KU09OKCl9fXN0YXRpYyBmcm9tSlNPTihlLHQpe2lmKHR5cGVvZiB0LnBvcyE9Im51bWJlciIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIEFkZE5vZGVNYXJrU3RlcC5mcm9tSlNPTiIpO3JldHVybiBuZXcgcyh0LnBvcyxlLm1hcmtGcm9tSlNPTih0Lm1hcmspKX19O1hyLmpzb25JRCgiYWRkTm9kZU1hcmsiLGt2KTtVOD1jbGFzcyBzIGV4dGVuZHMgWHJ7c3RhdGlje2kodGhpcywiUmVtb3ZlTm9kZU1hcmtTdGVwIil9Y29uc3RydWN0b3IoZSx0KXtzdXBlcigpLHRoaXMucG9zPWUsdGhpcy5tYXJrPXR9YXBwbHkoZSl7bGV0IHQ9ZS5ub2RlQXQodGhpcy5wb3MpO2lmKCF0KXJldHVybiBtby5mYWlsKCJObyBub2RlIGF0IG1hcmsgc3RlcCdzIHBvc2l0aW9uIik7bGV0IGE9dC50eXBlLmNyZWF0ZSh0LmF0dHJzLG51bGwsdGhpcy5tYXJrLnJlbW92ZUZyb21TZXQodC5tYXJrcykpO3JldHVybiBtby5mcm9tUmVwbGFjZShlLHRoaXMucG9zLHRoaXMucG9zKzEsbmV3IF90KHJ0LmZyb20oYSksMCx0LmlzTGVhZj8wOjEpKX1pbnZlcnQoZSl7bGV0IHQ9ZS5ub2RlQXQodGhpcy5wb3MpO3JldHVybiF0fHwhdGhpcy5tYXJrLmlzSW5TZXQodC5tYXJrcyk/dGhpczpuZXcga3YodGhpcy5wb3MsdGhpcy5tYXJrKX1tYXAoZSl7bGV0IHQ9ZS5tYXBSZXN1bHQodGhpcy5wb3MsMSk7cmV0dXJuIHQuZGVsZXRlZEFmdGVyP251bGw6bmV3IHModC5wb3MsdGhpcy5tYXJrKX10b0pTT04oKXtyZXR1cm57c3RlcFR5cGU6InJlbW92ZU5vZGVNYXJrIixwb3M6dGhpcy5wb3MsbWFyazp0aGlzLm1hcmsudG9KU09OKCl9fXN0YXRpYyBmcm9tSlNPTihlLHQpe2lmKHR5cGVvZiB0LnBvcyE9Im51bWJlciIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIFJlbW92ZU5vZGVNYXJrU3RlcC5mcm9tSlNPTiIpO3JldHVybiBuZXcgcyh0LnBvcyxlLm1hcmtGcm9tSlNPTih0Lm1hcmspKX19O1hyLmpzb25JRCgicmVtb3ZlTm9kZU1hcmsiLFU4KTtnbz1jbGFzcyBzIGV4dGVuZHMgWHJ7c3RhdGlje2kodGhpcywiUmVwbGFjZVN0ZXAiKX1jb25zdHJ1Y3RvcihlLHQsYSxyPSExKXtzdXBlcigpLHRoaXMuZnJvbT1lLHRoaXMudG89dCx0aGlzLnNsaWNlPWEsdGhpcy5zdHJ1Y3R1cmU9cn1hcHBseShlKXtyZXR1cm4gdGhpcy5zdHJ1Y3R1cmUmJnd0dChlLHRoaXMuZnJvbSx0aGlzLnRvKT9tby5mYWlsKCJTdHJ1Y3R1cmUgcmVwbGFjZSB3b3VsZCBvdmVyd3JpdGUgY29udGVudCIpOm1vLmZyb21SZXBsYWNlKGUsdGhpcy5mcm9tLHRoaXMudG8sdGhpcy5zbGljZSl9Z2V0TWFwKCl7cmV0dXJuIG5ldyBFZChbdGhpcy5mcm9tLHRoaXMudG8tdGhpcy5mcm9tLHRoaXMuc2xpY2Uuc2l6ZV0pfWludmVydChlKXtyZXR1cm4gbmV3IHModGhpcy5mcm9tLHRoaXMuZnJvbSt0aGlzLnNsaWNlLnNpemUsZS5zbGljZSh0aGlzLmZyb20sdGhpcy50bykpfW1hcChlKXtsZXQgdD1lLm1hcFJlc3VsdCh0aGlzLnRvLC0xKSxhPXRoaXMuZnJvbT09dGhpcy50byYmcy5NQVBfQklBUzwwP3Q6ZS5tYXBSZXN1bHQodGhpcy5mcm9tLDEpO3JldHVybiBhLmRlbGV0ZWRBY3Jvc3MmJnQuZGVsZXRlZEFjcm9zcz9udWxsOm5ldyBzKGEucG9zLE1hdGgubWF4KGEucG9zLHQucG9zKSx0aGlzLnNsaWNlLHRoaXMuc3RydWN0dXJlKX1tZXJnZShlKXtpZighKGUgaW5zdGFuY2VvZiBzKXx8ZS5zdHJ1Y3R1cmV8fHRoaXMuc3RydWN0dXJlKXJldHVybiBudWxsO2lmKHRoaXMuZnJvbSt0aGlzLnNsaWNlLnNpemU9PWUuZnJvbSYmIXRoaXMuc2xpY2Uub3BlbkVuZCYmIWUuc2xpY2Uub3BlblN0YXJ0KXtsZXQgdD10aGlzLnNsaWNlLnNpemUrZS5zbGljZS5zaXplPT0wP190LmVtcHR5Om5ldyBfdCh0aGlzLnNsaWNlLmNvbnRlbnQuYXBwZW5kKGUuc2xpY2UuY29udGVudCksdGhpcy5zbGljZS5vcGVuU3RhcnQsZS5zbGljZS5vcGVuRW5kKTtyZXR1cm4gbmV3IHModGhpcy5mcm9tLHRoaXMudG8rKGUudG8tZS5mcm9tKSx0LHRoaXMuc3RydWN0dXJlKX1lbHNlIGlmKGUudG89PXRoaXMuZnJvbSYmIXRoaXMuc2xpY2Uub3BlblN0YXJ0JiYhZS5zbGljZS5vcGVuRW5kKXtsZXQgdD10aGlzLnNsaWNlLnNpemUrZS5zbGljZS5zaXplPT0wP190LmVtcHR5Om5ldyBfdChlLnNsaWNlLmNvbnRlbnQuYXBwZW5kKHRoaXMuc2xpY2UuY29udGVudCksZS5zbGljZS5vcGVuU3RhcnQsdGhpcy5zbGljZS5vcGVuRW5kKTtyZXR1cm4gbmV3IHMoZS5mcm9tLHRoaXMudG8sdCx0aGlzLnN0cnVjdHVyZSl9ZWxzZSByZXR1cm4gbnVsbH10b0pTT04oKXtsZXQgZT17c3RlcFR5cGU6InJlcGxhY2UiLGZyb206dGhpcy5mcm9tLHRvOnRoaXMudG99O3JldHVybiB0aGlzLnNsaWNlLnNpemUmJihlLnNsaWNlPXRoaXMuc2xpY2UudG9KU09OKCkpLHRoaXMuc3RydWN0dXJlJiYoZS5zdHJ1Y3R1cmU9ITApLGV9c3RhdGljIGZyb21KU09OKGUsdCl7aWYodHlwZW9mIHQuZnJvbSE9Im51bWJlciJ8fHR5cGVvZiB0LnRvIT0ibnVtYmVyIil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBpbnB1dCBmb3IgUmVwbGFjZVN0ZXAuZnJvbUpTT04iKTtyZXR1cm4gbmV3IHModC5mcm9tLHQudG8sX3QuZnJvbUpTT04oZSx0LnNsaWNlKSwhIXQuc3RydWN0dXJlKX19O2dvLk1BUF9CSUFTPTEsWHIuanNvbklEKCJyZXBsYWNlIixnbyk7ZHI9Y2xhc3MgcyBleHRlbmRzIFhye3N0YXRpY3tpKHRoaXMsIlJlcGxhY2VBcm91bmRTdGVwIil9Y29uc3RydWN0b3IoZSx0LGEscixuLG8sbD0hMSl7c3VwZXIoKSx0aGlzLmZyb209ZSx0aGlzLnRvPXQsdGhpcy5nYXBGcm9tPWEsdGhpcy5nYXBUbz1yLHRoaXMuc2xpY2U9bix0aGlzLmluc2VydD1vLHRoaXMuc3RydWN0dXJlPWx9YXBwbHkoZSl7aWYodGhpcy5zdHJ1Y3R1cmUmJih3dHQoZSx0aGlzLmZyb20sdGhpcy5nYXBGcm9tKXx8d3R0KGUsdGhpcy5nYXBUbyx0aGlzLnRvKSkpcmV0dXJuIG1vLmZhaWwoIlN0cnVjdHVyZSBnYXAtcmVwbGFjZSB3b3VsZCBvdmVyd3JpdGUgY29udGVudCIpO2xldCB0PWUuc2xpY2UodGhpcy5nYXBGcm9tLHRoaXMuZ2FwVG8pO2lmKHQub3BlblN0YXJ0fHx0Lm9wZW5FbmQpcmV0dXJuIG1vLmZhaWwoIkdhcCBpcyBub3QgYSBmbGF0IHJhbmdlIik7bGV0IGE9dGhpcy5zbGljZS5pbnNlcnRBdCh0aGlzLmluc2VydCx0LmNvbnRlbnQpO3JldHVybiBhP21vLmZyb21SZXBsYWNlKGUsdGhpcy5mcm9tLHRoaXMudG8sYSk6bW8uZmFpbCgiQ29udGVudCBkb2VzIG5vdCBmaXQgaW4gZ2FwIil9Z2V0TWFwKCl7cmV0dXJuIG5ldyBFZChbdGhpcy5mcm9tLHRoaXMuZ2FwRnJvbS10aGlzLmZyb20sdGhpcy5pbnNlcnQsdGhpcy5nYXBUbyx0aGlzLnRvLXRoaXMuZ2FwVG8sdGhpcy5zbGljZS5zaXplLXRoaXMuaW5zZXJ0XSl9aW52ZXJ0KGUpe2xldCB0PXRoaXMuZ2FwVG8tdGhpcy5nYXBGcm9tO3JldHVybiBuZXcgcyh0aGlzLmZyb20sdGhpcy5mcm9tK3RoaXMuc2xpY2Uuc2l6ZSt0LHRoaXMuZnJvbSt0aGlzLmluc2VydCx0aGlzLmZyb20rdGhpcy5pbnNlcnQrdCxlLnNsaWNlKHRoaXMuZnJvbSx0aGlzLnRvKS5yZW1vdmVCZXR3ZWVuKHRoaXMuZ2FwRnJvbS10aGlzLmZyb20sdGhpcy5nYXBUby10aGlzLmZyb20pLHRoaXMuZ2FwRnJvbS10aGlzLmZyb20sdGhpcy5zdHJ1Y3R1cmUpfW1hcChlKXtsZXQgdD1lLm1hcFJlc3VsdCh0aGlzLmZyb20sMSksYT1lLm1hcFJlc3VsdCh0aGlzLnRvLC0xKSxyPXRoaXMuZnJvbT09dGhpcy5nYXBGcm9tP3QucG9zOmUubWFwKHRoaXMuZ2FwRnJvbSwtMSksbj10aGlzLnRvPT10aGlzLmdhcFRvP2EucG9zOmUubWFwKHRoaXMuZ2FwVG8sMSk7cmV0dXJuIHQuZGVsZXRlZEFjcm9zcyYmYS5kZWxldGVkQWNyb3NzfHxyPHQucG9zfHxuPmEucG9zP251bGw6bmV3IHModC5wb3MsYS5wb3MscixuLHRoaXMuc2xpY2UsdGhpcy5pbnNlcnQsdGhpcy5zdHJ1Y3R1cmUpfXRvSlNPTigpe2xldCBlPXtzdGVwVHlwZToicmVwbGFjZUFyb3VuZCIsZnJvbTp0aGlzLmZyb20sdG86dGhpcy50byxnYXBGcm9tOnRoaXMuZ2FwRnJvbSxnYXBUbzp0aGlzLmdhcFRvLGluc2VydDp0aGlzLmluc2VydH07cmV0dXJuIHRoaXMuc2xpY2Uuc2l6ZSYmKGUuc2xpY2U9dGhpcy5zbGljZS50b0pTT04oKSksdGhpcy5zdHJ1Y3R1cmUmJihlLnN0cnVjdHVyZT0hMCksZX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZih0eXBlb2YgdC5mcm9tIT0ibnVtYmVyInx8dHlwZW9mIHQudG8hPSJudW1iZXIifHx0eXBlb2YgdC5nYXBGcm9tIT0ibnVtYmVyInx8dHlwZW9mIHQuZ2FwVG8hPSJudW1iZXIifHx0eXBlb2YgdC5pbnNlcnQhPSJudW1iZXIiKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBSZXBsYWNlQXJvdW5kU3RlcC5mcm9tSlNPTiIpO3JldHVybiBuZXcgcyh0LmZyb20sdC50byx0LmdhcEZyb20sdC5nYXBUbyxfdC5mcm9tSlNPTihlLHQuc2xpY2UpLHQuaW5zZXJ0LCEhdC5zdHJ1Y3R1cmUpfX07WHIuanNvbklEKCJyZXBsYWNlQXJvdW5kIixkcik7aSh3dHQsImNvbnRlbnRCZXR3ZWVuIik7aSh1R2EsImFkZE1hcmsiKTtpKHBHYSwicmVtb3ZlTWFyayIpO2koa3R0LCJjbGVhckluY29tcGF0aWJsZSIpO2koaEdhLCJjYW5DdXQiKTtpKFBkLCJsaWZ0VGFyZ2V0Iik7aShmR2EsImxpZnQiKTtpKEs4LCJmaW5kV3JhcHBpbmciKTtpKHd1YSwid2l0aEF0dHJzIik7aShtR2EsImZpbmRXcmFwcGluZ091dHNpZGUiKTtpKGdHYSwiZmluZFdyYXBwaW5nSW5zaWRlIik7aShiR2EsIndyYXAiKTtpKHZHYSwic2V0QmxvY2tUeXBlIik7aShrdWEsInJlcGxhY2VOZXdsaW5lcyIpO2koU3VhLCJyZXBsYWNlTGluZWJyZWFrcyIpO2koeEdhLCJjYW5DaGFuZ2VUeXBlIik7aSh5R2EsInNldE5vZGVNYXJrdXAiKTtpKHpsLCJjYW5TcGxpdCIpO2kod0dhLCJzcGxpdCIpO2koWmwsImNhbkpvaW4iKTtpKGtHYSwiY2FuQXBwZW5kV2l0aFN1YnN0aXR1dGVkTGluZWJyZWFrcyIpO2koX3VhLCJqb2luYWJsZSIpO2koWTgsImpvaW5Qb2ludCIpO2koU0dhLCJqb2luIik7aShNdWEsImluc2VydFBvaW50Iik7aShWWiwiZHJvcFBvaW50Iik7aShfdiwicmVwbGFjZVN0ZXAiKTtpKHp1YSwiZml0c1RyaXZpYWxseSIpO1N0dD1jbGFzc3tzdGF0aWN7aSh0aGlzLCJGaXR0ZXIiKX1jb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy4kZnJvbT1lLHRoaXMuJHRvPXQsdGhpcy51bnBsYWNlZD1hLHRoaXMuZnJvbnRpZXI9W10sdGhpcy5wbGFjZWQ9cnQuZW1wdHk7Zm9yKGxldCByPTA7cjw9ZS5kZXB0aDtyKyspe2xldCBuPWUubm9kZShyKTt0aGlzLmZyb250aWVyLnB1c2goe3R5cGU6bi50eXBlLG1hdGNoOm4uY29udGVudE1hdGNoQXQoZS5pbmRleEFmdGVyKHIpKX0pfWZvcihsZXQgcj1lLmRlcHRoO3I+MDtyLS0pdGhpcy5wbGFjZWQ9cnQuZnJvbShlLm5vZGUocikuY29weSh0aGlzLnBsYWNlZCkpfWdldCBkZXB0aCgpe3JldHVybiB0aGlzLmZyb250aWVyLmxlbmd0aC0xfWZpdCgpe2Zvcig7dGhpcy51bnBsYWNlZC5zaXplOyl7bGV0IGQ9dGhpcy5maW5kRml0dGFibGUoKTtkP3RoaXMucGxhY2VOb2RlcyhkKTp0aGlzLm9wZW5Nb3JlKCl8fHRoaXMuZHJvcE5vZGUoKX1sZXQgZT10aGlzLm11c3RNb3ZlSW5saW5lKCksdD10aGlzLnBsYWNlZC5zaXplLXRoaXMuZGVwdGgtdGhpcy4kZnJvbS5kZXB0aCxhPXRoaXMuJGZyb20scj10aGlzLmNsb3NlKGU8MD90aGlzLiR0bzphLmRvYy5yZXNvbHZlKGUpKTtpZighcilyZXR1cm4gbnVsbDtsZXQgbj10aGlzLnBsYWNlZCxvPWEuZGVwdGgsbD1yLmRlcHRoO2Zvcig7byYmbCYmbi5jaGlsZENvdW50PT0xOyluPW4uZmlyc3RDaGlsZC5jb250ZW50LG8tLSxsLS07bGV0IHA9bmV3IF90KG4sbyxsKTtyZXR1cm4gZT4tMT9uZXcgZHIoYS5wb3MsZSx0aGlzLiR0by5wb3MsdGhpcy4kdG8uZW5kKCkscCx0KTpwLnNpemV8fGEucG9zIT10aGlzLiR0by5wb3M/bmV3IGdvKGEucG9zLHIucG9zLHApOm51bGx9ZmluZEZpdHRhYmxlKCl7bGV0IGU9dGhpcy51bnBsYWNlZC5vcGVuU3RhcnQ7Zm9yKGxldCB0PXRoaXMudW5wbGFjZWQuY29udGVudCxhPTAscj10aGlzLnVucGxhY2VkLm9wZW5FbmQ7YTxlO2ErKyl7bGV0IG49dC5maXJzdENoaWxkO2lmKHQuY2hpbGRDb3VudD4xJiYocj0wKSxuLnR5cGUuc3BlYy5pc29sYXRpbmcmJnI8PWEpe2U9YTticmVha310PW4uY29udGVudH1mb3IobGV0IHQ9MTt0PD0yO3QrKylmb3IobGV0IGE9dD09MT9lOnRoaXMudW5wbGFjZWQub3BlblN0YXJ0O2E+PTA7YS0tKXtsZXQgcixuPW51bGw7YT8obj1fdHQodGhpcy51bnBsYWNlZC5jb250ZW50LGEtMSkuZmlyc3RDaGlsZCxyPW4uY29udGVudCk6cj10aGlzLnVucGxhY2VkLmNvbnRlbnQ7bGV0IG89ci5maXJzdENoaWxkO2ZvcihsZXQgbD10aGlzLmRlcHRoO2w+PTA7bC0tKXtsZXR7dHlwZTpwLG1hdGNoOmR9PXRoaXMuZnJvbnRpZXJbbF0sdSxjPW51bGw7aWYodD09MSYmKG8/ZC5tYXRjaFR5cGUoby50eXBlKXx8KGM9ZC5maWxsQmVmb3JlKHJ0LmZyb20obyksITEpKTpuJiZwLmNvbXBhdGlibGVDb250ZW50KG4udHlwZSkpKXJldHVybntzbGljZURlcHRoOmEsZnJvbnRpZXJEZXB0aDpsLHBhcmVudDpuLGluamVjdDpjfTtpZih0PT0yJiZvJiYodT1kLmZpbmRXcmFwcGluZyhvLnR5cGUpKSlyZXR1cm57c2xpY2VEZXB0aDphLGZyb250aWVyRGVwdGg6bCxwYXJlbnQ6bix3cmFwOnV9O2lmKG4mJmQubWF0Y2hUeXBlKG4udHlwZSkpYnJlYWt9fX1vcGVuTW9yZSgpe2xldHtjb250ZW50OmUsb3BlblN0YXJ0OnQsb3BlbkVuZDphfT10aGlzLnVucGxhY2VkLHI9X3R0KGUsdCk7cmV0dXJuIXIuY2hpbGRDb3VudHx8ci5maXJzdENoaWxkLmlzTGVhZj8hMToodGhpcy51bnBsYWNlZD1uZXcgX3QoZSx0KzEsTWF0aC5tYXgoYSxyLnNpemUrdD49ZS5zaXplLWE/dCsxOjApKSwhMCl9ZHJvcE5vZGUoKXtsZXR7Y29udGVudDplLG9wZW5TdGFydDp0LG9wZW5FbmQ6YX09dGhpcy51bnBsYWNlZCxyPV90dChlLHQpO2lmKHIuY2hpbGRDb3VudDw9MSYmdD4wKXtsZXQgbj1lLnNpemUtdDw9dCtyLnNpemU7dGhpcy51bnBsYWNlZD1uZXcgX3QoQlooZSx0LTEsMSksdC0xLG4/dC0xOmEpfWVsc2UgdGhpcy51bnBsYWNlZD1uZXcgX3QoQlooZSx0LDEpLHQsYSl9cGxhY2VOb2Rlcyh7c2xpY2VEZXB0aDplLGZyb250aWVyRGVwdGg6dCxwYXJlbnQ6YSxpbmplY3Q6cix3cmFwOm59KXtmb3IoO3RoaXMuZGVwdGg+dDspdGhpcy5jbG9zZUZyb250aWVyTm9kZSgpO2lmKG4pZm9yKGxldCBtPTA7bTxuLmxlbmd0aDttKyspdGhpcy5vcGVuRnJvbnRpZXJOb2RlKG5bbV0pO2xldCBvPXRoaXMudW5wbGFjZWQsbD1hP2EuY29udGVudDpvLmNvbnRlbnQscD1vLm9wZW5TdGFydC1lLGQ9MCx1PVtdLHttYXRjaDpjLHR5cGU6Yn09dGhpcy5mcm9udGllclt0XTtpZihyKXtmb3IobGV0IG09MDttPHIuY2hpbGRDb3VudDttKyspdS5wdXNoKHIuY2hpbGQobSkpO2M9Yy5tYXRjaEZyYWdtZW50KHIpfWxldCB2PWwuc2l6ZStlLShvLmNvbnRlbnQuc2l6ZS1vLm9wZW5FbmQpO2Zvcig7ZDxsLmNoaWxkQ291bnQ7KXtsZXQgbT1sLmNoaWxkKGQpLGY9Yy5tYXRjaFR5cGUobS50eXBlKTtpZighZilicmVhaztkKyssKGQ+MXx8cD09MHx8bS5jb250ZW50LnNpemUpJiYoYz1mLHUucHVzaChDdWEobS5tYXJrKGIuYWxsb3dlZE1hcmtzKG0ubWFya3MpKSxkPT0xP3A6MCxkPT1sLmNoaWxkQ291bnQ/djotMSkpKX1sZXQgeD1kPT1sLmNoaWxkQ291bnQ7eHx8KHY9LTEpLHRoaXMucGxhY2VkPUhaKHRoaXMucGxhY2VkLHQscnQuZnJvbSh1KSksdGhpcy5mcm9udGllclt0XS5tYXRjaD1jLHgmJnY8MCYmYSYmYS50eXBlPT10aGlzLmZyb250aWVyW3RoaXMuZGVwdGhdLnR5cGUmJnRoaXMuZnJvbnRpZXIubGVuZ3RoPjEmJnRoaXMuY2xvc2VGcm9udGllck5vZGUoKTtmb3IobGV0IG09MCxmPWw7bTx2O20rKyl7bGV0IHk9Zi5sYXN0Q2hpbGQ7dGhpcy5mcm9udGllci5wdXNoKHt0eXBlOnkudHlwZSxtYXRjaDp5LmNvbnRlbnRNYXRjaEF0KHkuY2hpbGRDb3VudCl9KSxmPXkuY29udGVudH10aGlzLnVucGxhY2VkPXg/ZT09MD9fdC5lbXB0eTpuZXcgX3QoQlooby5jb250ZW50LGUtMSwxKSxlLTEsdjwwP28ub3BlbkVuZDplLTEpOm5ldyBfdChCWihvLmNvbnRlbnQsZSxkKSxvLm9wZW5TdGFydCxvLm9wZW5FbmQpfW11c3RNb3ZlSW5saW5lKCl7aWYoIXRoaXMuJHRvLnBhcmVudC5pc1RleHRibG9jaylyZXR1cm4tMTtsZXQgZT10aGlzLmZyb250aWVyW3RoaXMuZGVwdGhdLHQ7aWYoIWUudHlwZS5pc1RleHRibG9ja3x8IU10dCh0aGlzLiR0byx0aGlzLiR0by5kZXB0aCxlLnR5cGUsZS5tYXRjaCwhMSl8fHRoaXMuJHRvLmRlcHRoPT10aGlzLmRlcHRoJiYodD10aGlzLmZpbmRDbG9zZUxldmVsKHRoaXMuJHRvKSkmJnQuZGVwdGg9PXRoaXMuZGVwdGgpcmV0dXJuLTE7bGV0e2RlcHRoOmF9PXRoaXMuJHRvLHI9dGhpcy4kdG8uYWZ0ZXIoYSk7Zm9yKDthPjEmJnI9PXRoaXMuJHRvLmVuZCgtLWEpOykrK3I7cmV0dXJuIHJ9ZmluZENsb3NlTGV2ZWwoZSl7ZTpmb3IobGV0IHQ9TWF0aC5taW4odGhpcy5kZXB0aCxlLmRlcHRoKTt0Pj0wO3QtLSl7bGV0e21hdGNoOmEsdHlwZTpyfT10aGlzLmZyb250aWVyW3RdLG49dDxlLmRlcHRoJiZlLmVuZCh0KzEpPT1lLnBvcysoZS5kZXB0aC0odCsxKSksbz1NdHQoZSx0LHIsYSxuKTtpZihvKXtmb3IobGV0IGw9dC0xO2w+PTA7bC0tKXtsZXR7bWF0Y2g6cCx0eXBlOmR9PXRoaXMuZnJvbnRpZXJbbF0sdT1NdHQoZSxsLGQscCwhMCk7aWYoIXV8fHUuY2hpbGRDb3VudCljb250aW51ZSBlfXJldHVybntkZXB0aDp0LGZpdDpvLG1vdmU6bj9lLmRvYy5yZXNvbHZlKGUuYWZ0ZXIodCsxKSk6ZX19fX1jbG9zZShlKXtsZXQgdD10aGlzLmZpbmRDbG9zZUxldmVsKGUpO2lmKCF0KXJldHVybiBudWxsO2Zvcig7dGhpcy5kZXB0aD50LmRlcHRoOyl0aGlzLmNsb3NlRnJvbnRpZXJOb2RlKCk7dC5maXQuY2hpbGRDb3VudCYmKHRoaXMucGxhY2VkPUhaKHRoaXMucGxhY2VkLHQuZGVwdGgsdC5maXQpKSxlPXQubW92ZTtmb3IobGV0IGE9dC5kZXB0aCsxO2E8PWUuZGVwdGg7YSsrKXtsZXQgcj1lLm5vZGUoYSksbj1yLnR5cGUuY29udGVudE1hdGNoLmZpbGxCZWZvcmUoci5jb250ZW50LCEwLGUuaW5kZXgoYSkpO3RoaXMub3BlbkZyb250aWVyTm9kZShyLnR5cGUsci5hdHRycyxuKX1yZXR1cm4gZX1vcGVuRnJvbnRpZXJOb2RlKGUsdD1udWxsLGEpe2xldCByPXRoaXMuZnJvbnRpZXJbdGhpcy5kZXB0aF07ci5tYXRjaD1yLm1hdGNoLm1hdGNoVHlwZShlKSx0aGlzLnBsYWNlZD1IWih0aGlzLnBsYWNlZCx0aGlzLmRlcHRoLHJ0LmZyb20oZS5jcmVhdGUodCxhKSkpLHRoaXMuZnJvbnRpZXIucHVzaCh7dHlwZTplLG1hdGNoOmUuY29udGVudE1hdGNofSl9Y2xvc2VGcm9udGllck5vZGUoKXtsZXQgdD10aGlzLmZyb250aWVyLnBvcCgpLm1hdGNoLmZpbGxCZWZvcmUocnQuZW1wdHksITApO3QuY2hpbGRDb3VudCYmKHRoaXMucGxhY2VkPUhaKHRoaXMucGxhY2VkLHRoaXMuZnJvbnRpZXIubGVuZ3RoLHQpKX19O2koQlosImRyb3BGcm9tRnJhZ21lbnQiKTtpKEhaLCJhZGRUb0ZyYWdtZW50Iik7aShfdHQsImNvbnRlbnRBdCIpO2koQ3VhLCJjbG9zZU5vZGVTdGFydCIpO2koTXR0LCJjb250ZW50QWZ0ZXJGaXRzIik7aShfR2EsImludmFsaWRNYXJrcyIpO2koTUdhLCJkZWZpbmVzQ29udGVudCIpO2koekdhLCJyZXBsYWNlUmFuZ2UiKTtpKFR1YSwiY2xvc2VGcmFnbWVudCIpO2koQ0dhLCJyZXBsYWNlUmFuZ2VXaXRoIik7aShUR2EsImRlbGV0ZVJhbmdlIik7aSgkdWEsImNvdmVyZWREZXB0aHMiKTtxWj1jbGFzcyBzIGV4dGVuZHMgWHJ7c3RhdGlje2kodGhpcywiQXR0clN0ZXAiKX1jb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoKSx0aGlzLnBvcz1lLHRoaXMuYXR0cj10LHRoaXMudmFsdWU9YX1hcHBseShlKXtsZXQgdD1lLm5vZGVBdCh0aGlzLnBvcyk7aWYoIXQpcmV0dXJuIG1vLmZhaWwoIk5vIG5vZGUgYXQgYXR0cmlidXRlIHN0ZXAncyBwb3NpdGlvbiIpO2xldCBhPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBuIGluIHQuYXR0cnMpYVtuXT10LmF0dHJzW25dO2FbdGhpcy5hdHRyXT10aGlzLnZhbHVlO2xldCByPXQudHlwZS5jcmVhdGUoYSxudWxsLHQubWFya3MpO3JldHVybiBtby5mcm9tUmVwbGFjZShlLHRoaXMucG9zLHRoaXMucG9zKzEsbmV3IF90KHJ0LmZyb20ociksMCx0LmlzTGVhZj8wOjEpKX1nZXRNYXAoKXtyZXR1cm4gRWQuZW1wdHl9aW52ZXJ0KGUpe3JldHVybiBuZXcgcyh0aGlzLnBvcyx0aGlzLmF0dHIsZS5ub2RlQXQodGhpcy5wb3MpLmF0dHJzW3RoaXMuYXR0cl0pfW1hcChlKXtsZXQgdD1lLm1hcFJlc3VsdCh0aGlzLnBvcywxKTtyZXR1cm4gdC5kZWxldGVkQWZ0ZXI/bnVsbDpuZXcgcyh0LnBvcyx0aGlzLmF0dHIsdGhpcy52YWx1ZSl9dG9KU09OKCl7cmV0dXJue3N0ZXBUeXBlOiJhdHRyIixwb3M6dGhpcy5wb3MsYXR0cjp0aGlzLmF0dHIsdmFsdWU6dGhpcy52YWx1ZX19c3RhdGljIGZyb21KU09OKGUsdCl7aWYodHlwZW9mIHQucG9zIT0ibnVtYmVyInx8dHlwZW9mIHQuYXR0ciE9InN0cmluZyIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIEF0dHJTdGVwLmZyb21KU09OIik7cmV0dXJuIG5ldyBzKHQucG9zLHQuYXR0cix0LnZhbHVlKX19O1hyLmpzb25JRCgiYXR0ciIscVopO2paPWNsYXNzIHMgZXh0ZW5kcyBYcntzdGF0aWN7aSh0aGlzLCJEb2NBdHRyU3RlcCIpfWNvbnN0cnVjdG9yKGUsdCl7c3VwZXIoKSx0aGlzLmF0dHI9ZSx0aGlzLnZhbHVlPXR9YXBwbHkoZSl7bGV0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHIgaW4gZS5hdHRycyl0W3JdPWUuYXR0cnNbcl07dFt0aGlzLmF0dHJdPXRoaXMudmFsdWU7bGV0IGE9ZS50eXBlLmNyZWF0ZSh0LGUuY29udGVudCxlLm1hcmtzKTtyZXR1cm4gbW8ub2soYSl9Z2V0TWFwKCl7cmV0dXJuIEVkLmVtcHR5fWludmVydChlKXtyZXR1cm4gbmV3IHModGhpcy5hdHRyLGUuYXR0cnNbdGhpcy5hdHRyXSl9bWFwKGUpe3JldHVybiB0aGlzfXRvSlNPTigpe3JldHVybntzdGVwVHlwZToiZG9jQXR0ciIsYXR0cjp0aGlzLmF0dHIsdmFsdWU6dGhpcy52YWx1ZX19c3RhdGljIGZyb21KU09OKGUsdCl7aWYodHlwZW9mIHQuYXR0ciE9InN0cmluZyIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIERvY0F0dHJTdGVwLmZyb21KU09OIik7cmV0dXJuIG5ldyBzKHQuYXR0cix0LnZhbHVlKX19O1hyLmpzb25JRCgiZG9jQXR0ciIsalopO1c4PWNsYXNzIGV4dGVuZHMgRXJyb3J7c3RhdGlje2kodGhpcywiVHJhbnNmb3JtRXJyb3IiKX19O1c4PWkoZnVuY3Rpb24gcyhlKXtsZXQgdD1FcnJvci5jYWxsKHRoaXMsZSk7cmV0dXJuIHQuX19wcm90b19fPXMucHJvdG90eXBlLHR9LCJUcmFuc2Zvcm1FcnJvciIpLFc4LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSksVzgucHJvdG90eXBlLmNvbnN0cnVjdG9yPVc4LFc4LnByb3RvdHlwZS5uYW1lPSJUcmFuc2Zvcm1FcnJvciI7Rzg9Y2xhc3N7c3RhdGlje2kodGhpcywiVHJhbnNmb3JtIil9Y29uc3RydWN0b3IoZSl7dGhpcy5kb2M9ZSx0aGlzLnN0ZXBzPVtdLHRoaXMuZG9jcz1bXSx0aGlzLm1hcHBpbmc9bmV3IFN2fWdldCBiZWZvcmUoKXtyZXR1cm4gdGhpcy5kb2NzLmxlbmd0aD90aGlzLmRvY3NbMF06dGhpcy5kb2N9c3RlcChlKXtsZXQgdD10aGlzLm1heWJlU3RlcChlKTtpZih0LmZhaWxlZCl0aHJvdyBuZXcgVzgodC5mYWlsZWQpO3JldHVybiB0aGlzfW1heWJlU3RlcChlKXtsZXQgdD1lLmFwcGx5KHRoaXMuZG9jKTtyZXR1cm4gdC5mYWlsZWR8fHRoaXMuYWRkU3RlcChlLHQuZG9jKSx0fWdldCBkb2NDaGFuZ2VkKCl7cmV0dXJuIHRoaXMuc3RlcHMubGVuZ3RoPjB9Y2hhbmdlZFJhbmdlKCl7bGV0IGU9MWU5LHQ9LTFlOTtmb3IobGV0IGE9MDthPHRoaXMubWFwcGluZy5tYXBzLmxlbmd0aDthKyspe2xldCByPXRoaXMubWFwcGluZy5tYXBzW2FdO2EmJihlPXIubWFwKGUsMSksdD1yLm1hcCh0LC0xKSksci5mb3JFYWNoKChuLG8sbCxwKT0+e2U9TWF0aC5taW4oZSxsKSx0PU1hdGgubWF4KHQscCl9KX1yZXR1cm4gZT09MWU5P251bGw6e2Zyb206ZSx0bzp0fX1hZGRTdGVwKGUsdCl7dGhpcy5kb2NzLnB1c2godGhpcy5kb2MpLHRoaXMuc3RlcHMucHVzaChlKSx0aGlzLm1hcHBpbmcuYXBwZW5kTWFwKGUuZ2V0TWFwKCkpLHRoaXMuZG9jPXR9cmVwbGFjZShlLHQ9ZSxhPV90LmVtcHR5KXtsZXQgcj1fdih0aGlzLmRvYyxlLHQsYSk7cmV0dXJuIHImJnRoaXMuc3RlcChyKSx0aGlzfXJlcGxhY2VXaXRoKGUsdCxhKXtyZXR1cm4gdGhpcy5yZXBsYWNlKGUsdCxuZXcgX3QocnQuZnJvbShhKSwwLDApKX1kZWxldGUoZSx0KXtyZXR1cm4gdGhpcy5yZXBsYWNlKGUsdCxfdC5lbXB0eSl9aW5zZXJ0KGUsdCl7cmV0dXJuIHRoaXMucmVwbGFjZVdpdGgoZSxlLHQpfXJlcGxhY2VSYW5nZShlLHQsYSl7cmV0dXJuIHpHYSh0aGlzLGUsdCxhKSx0aGlzfXJlcGxhY2VSYW5nZVdpdGgoZSx0LGEpe3JldHVybiBDR2EodGhpcyxlLHQsYSksdGhpc31kZWxldGVSYW5nZShlLHQpe3JldHVybiBUR2EodGhpcyxlLHQpLHRoaXN9bGlmdChlLHQpe3JldHVybiBmR2EodGhpcyxlLHQpLHRoaXN9am9pbihlLHQ9MSl7cmV0dXJuIFNHYSh0aGlzLGUsdCksdGhpc313cmFwKGUsdCl7cmV0dXJuIGJHYSh0aGlzLGUsdCksdGhpc31zZXRCbG9ja1R5cGUoZSx0PWUsYSxyPW51bGwpe3JldHVybiB2R2EodGhpcyxlLHQsYSxyKSx0aGlzfXNldE5vZGVNYXJrdXAoZSx0LGE9bnVsbCxyKXtyZXR1cm4geUdhKHRoaXMsZSx0LGEsciksdGhpc31zZXROb2RlQXR0cmlidXRlKGUsdCxhKXtyZXR1cm4gdGhpcy5zdGVwKG5ldyBxWihlLHQsYSkpLHRoaXN9c2V0RG9jQXR0cmlidXRlKGUsdCl7cmV0dXJuIHRoaXMuc3RlcChuZXcgalooZSx0KSksdGhpc31hZGROb2RlTWFyayhlLHQpe3JldHVybiB0aGlzLnN0ZXAobmV3IGt2KGUsdCkpLHRoaXN9cmVtb3ZlTm9kZU1hcmsoZSx0KXtsZXQgYT10aGlzLmRvYy5ub2RlQXQoZSk7aWYoIWEpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk5vIG5vZGUgYXQgcG9zaXRpb24gIitlKTtpZih0IGluc3RhbmNlb2YgZnMpdC5pc0luU2V0KGEubWFya3MpJiZ0aGlzLnN0ZXAobmV3IFU4KGUsdCkpO2Vsc2V7bGV0IHI9YS5tYXJrcyxuLG89W107Zm9yKDtuPXQuaXNJblNldChyKTspby5wdXNoKG5ldyBVOChlLG4pKSxyPW4ucmVtb3ZlRnJvbVNldChyKTtmb3IobGV0IGw9by5sZW5ndGgtMTtsPj0wO2wtLSl0aGlzLnN0ZXAob1tsXSl9cmV0dXJuIHRoaXN9c3BsaXQoZSx0PTEsYSl7cmV0dXJuIHdHYSh0aGlzLGUsdCxhKSx0aGlzfWFkZE1hcmsoZSx0LGEpe3JldHVybiB1R2EodGhpcyxlLHQsYSksdGhpc31yZW1vdmVNYXJrKGUsdCxhKXtyZXR1cm4gcEdhKHRoaXMsZSx0LGEpLHRoaXN9Y2xlYXJJbmNvbXBhdGlibGUoZSx0LGEpe3JldHVybiBrdHQodGhpcyxlLHQsYSksdGhpc319fSk7ZnVuY3Rpb24gTHVhKHMpeyFEdWEmJiFzLnBhcmVudC5pbmxpbmVDb250ZW50JiYoRHVhPSEwLGNvbnNvbGUud2FybigiVGV4dFNlbGVjdGlvbiBlbmRwb2ludCBub3QgcG9pbnRpbmcgaW50byBhIG5vZGUgd2l0aCBpbmxpbmUgY29udGVudCAoIitzLnBhcmVudC50eXBlLm5hbWUrIikiKSl9ZnVuY3Rpb24gTXYocyxlLHQsYSxyLG49ITEpe2lmKGUuaW5saW5lQ29udGVudClyZXR1cm4gSnQuY3JlYXRlKHMsdCk7Zm9yKGxldCBvPWEtKHI+MD8wOjEpO3I+MD9vPGUuY2hpbGRDb3VudDpvPj0wO28rPXIpe2xldCBsPWUuY2hpbGQobyk7aWYobC5pc0F0b20pe2lmKCFuJiZGdC5pc1NlbGVjdGFibGUobCkpcmV0dXJuIEZ0LmNyZWF0ZShzLHQtKHI8MD9sLm5vZGVTaXplOjApKX1lbHNle2xldCBwPU12KHMsbCx0K3IscjwwP2wuY2hpbGRDb3VudDowLHIsbik7aWYocClyZXR1cm4gcH10Kz1sLm5vZGVTaXplKnJ9cmV0dXJuIG51bGx9ZnVuY3Rpb24gRXVhKHMsZSx0KXtsZXQgYT1zLnN0ZXBzLmxlbmd0aC0xO2lmKGE8ZSlyZXR1cm47bGV0IHI9cy5zdGVwc1thXTtpZighKHIgaW5zdGFuY2VvZiBnb3x8ciBpbnN0YW5jZW9mIGRyKSlyZXR1cm47bGV0IG49cy5tYXBwaW5nLm1hcHNbYV0sbztuLmZvckVhY2goKGwscCxkLHUpPT57bz09bnVsbCYmKG89dSl9KSxzLnNldFNlbGVjdGlvbihRdC5uZWFyKHMuZG9jLnJlc29sdmUobyksdCkpfWZ1bmN0aW9uIEF1YShzLGUpe3JldHVybiFlfHwhcz9zOnMuYmluZChlKX1mdW5jdGlvbiBOdWEocyxlLHQpe2ZvcihsZXQgYSBpbiBzKXtsZXQgcj1zW2FdO3IgaW5zdGFuY2VvZiBGdW5jdGlvbj9yPXIuYmluZChlKTphPT0iaGFuZGxlRE9NRXZlbnRzIiYmKHI9TnVhKHIsZSx7fSkpLHRbYV09cn1yZXR1cm4gdH1mdW5jdGlvbiBSdWEocyl7cmV0dXJuIHMgaW4gVHR0P3MrIiQiKyArK1R0dFtzXTooVHR0W3NdPTAscysiJCIpfXZhciB6dHQsUXQsWDgsRHVhLEp0LGpuZSxGdCxDdHQsbm4sJEdhLFB1YSxWbmUsSXVhLFVuZSxaOCxER2EsVVosV1osWXMsVHR0LCRyLHJ1PWcoKCk9PntfaCgpO3poKCk7enR0PU9iamVjdC5jcmVhdGUobnVsbCksUXQ9Y2xhc3N7c3RhdGlje2kodGhpcywiU2VsZWN0aW9uIil9Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuJGFuY2hvcj1lLHRoaXMuJGhlYWQ9dCx0aGlzLnJhbmdlcz1hfHxbbmV3IFg4KGUubWluKHQpLGUubWF4KHQpKV19Z2V0IGFuY2hvcigpe3JldHVybiB0aGlzLiRhbmNob3IucG9zfWdldCBoZWFkKCl7cmV0dXJuIHRoaXMuJGhlYWQucG9zfWdldCBmcm9tKCl7cmV0dXJuIHRoaXMuJGZyb20ucG9zfWdldCB0bygpe3JldHVybiB0aGlzLiR0by5wb3N9Z2V0ICRmcm9tKCl7cmV0dXJuIHRoaXMucmFuZ2VzWzBdLiRmcm9tfWdldCAkdG8oKXtyZXR1cm4gdGhpcy5yYW5nZXNbMF0uJHRvfWdldCBlbXB0eSgpe2xldCBlPXRoaXMucmFuZ2VzO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKGVbdF0uJGZyb20ucG9zIT1lW3RdLiR0by5wb3MpcmV0dXJuITE7cmV0dXJuITB9Y29udGVudCgpe3JldHVybiB0aGlzLiRmcm9tLmRvYy5zbGljZSh0aGlzLmZyb20sdGhpcy50bywhMCl9cmVwbGFjZShlLHQ9X3QuZW1wdHkpe2xldCBhPXQuY29udGVudC5sYXN0Q2hpbGQscj1udWxsO2ZvcihsZXQgbD0wO2w8dC5vcGVuRW5kO2wrKylyPWEsYT1hLmxhc3RDaGlsZDtsZXQgbj1lLnN0ZXBzLmxlbmd0aCxvPXRoaXMucmFuZ2VzO2ZvcihsZXQgbD0wO2w8by5sZW5ndGg7bCsrKXtsZXR7JGZyb206cCwkdG86ZH09b1tsXSx1PWUubWFwcGluZy5zbGljZShuKTtlLnJlcGxhY2VSYW5nZSh1Lm1hcChwLnBvcyksdS5tYXAoZC5wb3MpLGw/X3QuZW1wdHk6dCksbD09MCYmRXVhKGUsbiwoYT9hLmlzSW5saW5lOnImJnIuaXNUZXh0YmxvY2spPy0xOjEpfX1yZXBsYWNlV2l0aChlLHQpe2xldCBhPWUuc3RlcHMubGVuZ3RoLHI9dGhpcy5yYW5nZXM7Zm9yKGxldCBuPTA7bjxyLmxlbmd0aDtuKyspe2xldHskZnJvbTpvLCR0bzpsfT1yW25dLHA9ZS5tYXBwaW5nLnNsaWNlKGEpLGQ9cC5tYXAoby5wb3MpLHU9cC5tYXAobC5wb3MpO24/ZS5kZWxldGVSYW5nZShkLHUpOihlLnJlcGxhY2VSYW5nZVdpdGgoZCx1LHQpLEV1YShlLGEsdC5pc0lubGluZT8tMToxKSl9fXN0YXRpYyBmaW5kRnJvbShlLHQsYT0hMSl7bGV0IHI9ZS5wYXJlbnQuaW5saW5lQ29udGVudD9uZXcgSnQoZSk6TXYoZS5ub2RlKDApLGUucGFyZW50LGUucG9zLGUuaW5kZXgoKSx0LGEpO2lmKHIpcmV0dXJuIHI7Zm9yKGxldCBuPWUuZGVwdGgtMTtuPj0wO24tLSl7bGV0IG89dDwwP012KGUubm9kZSgwKSxlLm5vZGUobiksZS5iZWZvcmUobisxKSxlLmluZGV4KG4pLHQsYSk6TXYoZS5ub2RlKDApLGUubm9kZShuKSxlLmFmdGVyKG4rMSksZS5pbmRleChuKSsxLHQsYSk7aWYobylyZXR1cm4gb31yZXR1cm4gbnVsbH1zdGF0aWMgbmVhcihlLHQ9MSl7cmV0dXJuIHRoaXMuZmluZEZyb20oZSx0KXx8dGhpcy5maW5kRnJvbShlLC10KXx8bmV3IG5uKGUubm9kZSgwKSl9c3RhdGljIGF0U3RhcnQoZSl7cmV0dXJuIE12KGUsZSwwLDAsMSl8fG5ldyBubihlKX1zdGF0aWMgYXRFbmQoZSl7cmV0dXJuIE12KGUsZSxlLmNvbnRlbnQuc2l6ZSxlLmNoaWxkQ291bnQsLTEpfHxuZXcgbm4oZSl9c3RhdGljIGZyb21KU09OKGUsdCl7aWYoIXR8fCF0LnR5cGUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIFNlbGVjdGlvbi5mcm9tSlNPTiIpO2xldCBhPXp0dFt0LnR5cGVdO2lmKCFhKXRocm93IG5ldyBSYW5nZUVycm9yKGBObyBzZWxlY3Rpb24gdHlwZSAke3QudHlwZX0gZGVmaW5lZGApO3JldHVybiBhLmZyb21KU09OKGUsdCl9c3RhdGljIGpzb25JRChlLHQpe2lmKGUgaW4genR0KXRocm93IG5ldyBSYW5nZUVycm9yKCJEdXBsaWNhdGUgdXNlIG9mIHNlbGVjdGlvbiBKU09OIElEICIrZSk7cmV0dXJuIHp0dFtlXT10LHQucHJvdG90eXBlLmpzb25JRD1lLHR9Z2V0Qm9va21hcmsoKXtyZXR1cm4gSnQuYmV0d2Vlbih0aGlzLiRhbmNob3IsdGhpcy4kaGVhZCkuZ2V0Qm9va21hcmsoKX19O1F0LnByb3RvdHlwZS52aXNpYmxlPSEwO1g4PWNsYXNze3N0YXRpY3tpKHRoaXMsIlNlbGVjdGlvblJhbmdlIil9Y29uc3RydWN0b3IoZSx0KXt0aGlzLiRmcm9tPWUsdGhpcy4kdG89dH19LER1YT0hMTtpKEx1YSwiY2hlY2tUZXh0U2VsZWN0aW9uIik7SnQ9Y2xhc3MgcyBleHRlbmRzIFF0e3N0YXRpY3tpKHRoaXMsIlRleHRTZWxlY3Rpb24iKX1jb25zdHJ1Y3RvcihlLHQ9ZSl7THVhKGUpLEx1YSh0KSxzdXBlcihlLHQpfWdldCAkY3Vyc29yKCl7cmV0dXJuIHRoaXMuJGFuY2hvci5wb3M9PXRoaXMuJGhlYWQucG9zP3RoaXMuJGhlYWQ6bnVsbH1tYXAoZSx0KXtsZXQgYT1lLnJlc29sdmUodC5tYXAodGhpcy5oZWFkKSk7aWYoIWEucGFyZW50LmlubGluZUNvbnRlbnQpcmV0dXJuIFF0Lm5lYXIoYSk7bGV0IHI9ZS5yZXNvbHZlKHQubWFwKHRoaXMuYW5jaG9yKSk7cmV0dXJuIG5ldyBzKHIucGFyZW50LmlubGluZUNvbnRlbnQ/cjphLGEpfXJlcGxhY2UoZSx0PV90LmVtcHR5KXtpZihzdXBlci5yZXBsYWNlKGUsdCksdD09X3QuZW1wdHkpe2xldCBhPXRoaXMuJGZyb20ubWFya3NBY3Jvc3ModGhpcy4kdG8pO2EmJmUuZW5zdXJlTWFya3MoYSl9fWVxKGUpe3JldHVybiBlIGluc3RhbmNlb2YgcyYmZS5hbmNob3I9PXRoaXMuYW5jaG9yJiZlLmhlYWQ9PXRoaXMuaGVhZH1nZXRCb29rbWFyaygpe3JldHVybiBuZXcgam5lKHRoaXMuYW5jaG9yLHRoaXMuaGVhZCl9dG9KU09OKCl7cmV0dXJue3R5cGU6InRleHQiLGFuY2hvcjp0aGlzLmFuY2hvcixoZWFkOnRoaXMuaGVhZH19c3RhdGljIGZyb21KU09OKGUsdCl7aWYodHlwZW9mIHQuYW5jaG9yIT0ibnVtYmVyInx8dHlwZW9mIHQuaGVhZCE9Im51bWJlciIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIFRleHRTZWxlY3Rpb24uZnJvbUpTT04iKTtyZXR1cm4gbmV3IHMoZS5yZXNvbHZlKHQuYW5jaG9yKSxlLnJlc29sdmUodC5oZWFkKSl9c3RhdGljIGNyZWF0ZShlLHQsYT10KXtsZXQgcj1lLnJlc29sdmUodCk7cmV0dXJuIG5ldyB0aGlzKHIsYT09dD9yOmUucmVzb2x2ZShhKSl9c3RhdGljIGJldHdlZW4oZSx0LGEpe2xldCByPWUucG9zLXQucG9zO2lmKCghYXx8cikmJihhPXI+PTA/MTotMSksIXQucGFyZW50LmlubGluZUNvbnRlbnQpe2xldCBuPVF0LmZpbmRGcm9tKHQsYSwhMCl8fFF0LmZpbmRGcm9tKHQsLWEsITApO2lmKG4pdD1uLiRoZWFkO2Vsc2UgcmV0dXJuIFF0Lm5lYXIodCxhKX1yZXR1cm4gZS5wYXJlbnQuaW5saW5lQ29udGVudHx8KHI9PTA/ZT10OihlPShRdC5maW5kRnJvbShlLC1hLCEwKXx8UXQuZmluZEZyb20oZSxhLCEwKSkuJGFuY2hvcixlLnBvczx0LnBvcyE9cjwwJiYoZT10KSkpLG5ldyBzKGUsdCl9fTtRdC5qc29uSUQoInRleHQiLEp0KTtqbmU9Y2xhc3Mgc3tzdGF0aWN7aSh0aGlzLCJUZXh0Qm9va21hcmsiKX1jb25zdHJ1Y3RvcihlLHQpe3RoaXMuYW5jaG9yPWUsdGhpcy5oZWFkPXR9bWFwKGUpe3JldHVybiBuZXcgcyhlLm1hcCh0aGlzLmFuY2hvciksZS5tYXAodGhpcy5oZWFkKSl9cmVzb2x2ZShlKXtyZXR1cm4gSnQuYmV0d2VlbihlLnJlc29sdmUodGhpcy5hbmNob3IpLGUucmVzb2x2ZSh0aGlzLmhlYWQpKX19LEZ0PWNsYXNzIHMgZXh0ZW5kcyBRdHtzdGF0aWN7aSh0aGlzLCJOb2RlU2VsZWN0aW9uIil9Y29uc3RydWN0b3IoZSl7bGV0IHQ9ZS5ub2RlQWZ0ZXIsYT1lLm5vZGUoMCkucmVzb2x2ZShlLnBvcyt0Lm5vZGVTaXplKTtzdXBlcihlLGEpLHRoaXMubm9kZT10fW1hcChlLHQpe2xldHtkZWxldGVkOmEscG9zOnJ9PXQubWFwUmVzdWx0KHRoaXMuYW5jaG9yKSxuPWUucmVzb2x2ZShyKTtyZXR1cm4gYT9RdC5uZWFyKG4pOm5ldyBzKG4pfWNvbnRlbnQoKXtyZXR1cm4gbmV3IF90KHJ0LmZyb20odGhpcy5ub2RlKSwwLDApfWVxKGUpe3JldHVybiBlIGluc3RhbmNlb2YgcyYmZS5hbmNob3I9PXRoaXMuYW5jaG9yfXRvSlNPTigpe3JldHVybnt0eXBlOiJub2RlIixhbmNob3I6dGhpcy5hbmNob3J9fWdldEJvb2ttYXJrKCl7cmV0dXJuIG5ldyBDdHQodGhpcy5hbmNob3IpfXN0YXRpYyBmcm9tSlNPTihlLHQpe2lmKHR5cGVvZiB0LmFuY2hvciE9Im51bWJlciIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIE5vZGVTZWxlY3Rpb24uZnJvbUpTT04iKTtyZXR1cm4gbmV3IHMoZS5yZXNvbHZlKHQuYW5jaG9yKSl9c3RhdGljIGNyZWF0ZShlLHQpe3JldHVybiBuZXcgcyhlLnJlc29sdmUodCkpfXN0YXRpYyBpc1NlbGVjdGFibGUoZSl7cmV0dXJuIWUuaXNUZXh0JiZlLnR5cGUuc3BlYy5zZWxlY3RhYmxlIT09ITF9fTtGdC5wcm90b3R5cGUudmlzaWJsZT0hMSxRdC5qc29uSUQoIm5vZGUiLEZ0KTtDdHQ9Y2xhc3Mgc3tzdGF0aWN7aSh0aGlzLCJOb2RlQm9va21hcmsiKX1jb25zdHJ1Y3RvcihlKXt0aGlzLmFuY2hvcj1lfW1hcChlKXtsZXR7ZGVsZXRlZDp0LHBvczphfT1lLm1hcFJlc3VsdCh0aGlzLmFuY2hvcik7cmV0dXJuIHQ/bmV3IGpuZShhLGEpOm5ldyBzKGEpfXJlc29sdmUoZSl7bGV0IHQ9ZS5yZXNvbHZlKHRoaXMuYW5jaG9yKSxhPXQubm9kZUFmdGVyO3JldHVybiBhJiZGdC5pc1NlbGVjdGFibGUoYSk/bmV3IEZ0KHQpOlF0Lm5lYXIodCl9fSxubj1jbGFzcyBzIGV4dGVuZHMgUXR7c3RhdGlje2kodGhpcywiQWxsU2VsZWN0aW9uIil9Y29uc3RydWN0b3IoZSl7c3VwZXIoZS5yZXNvbHZlKDApLGUucmVzb2x2ZShlLmNvbnRlbnQuc2l6ZSkpfXJlcGxhY2UoZSx0PV90LmVtcHR5KXtpZih0PT1fdC5lbXB0eSl7ZS5kZWxldGUoMCxlLmRvYy5jb250ZW50LnNpemUpO2xldCBhPVF0LmF0U3RhcnQoZS5kb2MpO2EuZXEoZS5zZWxlY3Rpb24pfHxlLnNldFNlbGVjdGlvbihhKX1lbHNlIHN1cGVyLnJlcGxhY2UoZSx0KX10b0pTT04oKXtyZXR1cm57dHlwZToiYWxsIn19c3RhdGljIGZyb21KU09OKGUpe3JldHVybiBuZXcgcyhlKX1tYXAoZSl7cmV0dXJuIG5ldyBzKGUpfWVxKGUpe3JldHVybiBlIGluc3RhbmNlb2Ygc31nZXRCb29rbWFyaygpe3JldHVybiAkR2F9fTtRdC5qc29uSUQoImFsbCIsbm4pOyRHYT17bWFwKCl7cmV0dXJuIHRoaXN9LHJlc29sdmUocyl7cmV0dXJuIG5ldyBubihzKX19O2koTXYsImZpbmRTZWxlY3Rpb25JbiIpO2koRXVhLCJzZWxlY3Rpb25Ub0luc2VydGlvbkVuZCIpO1B1YT0xLFZuZT0yLEl1YT00LFVuZT1jbGFzcyBleHRlbmRzIEc4e3N0YXRpY3tpKHRoaXMsIlRyYW5zYWN0aW9uIil9Y29uc3RydWN0b3IoZSl7c3VwZXIoZS5kb2MpLHRoaXMuY3VyU2VsZWN0aW9uRm9yPTAsdGhpcy51cGRhdGVkPTAsdGhpcy5tZXRhPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy50aW1lPURhdGUubm93KCksdGhpcy5jdXJTZWxlY3Rpb249ZS5zZWxlY3Rpb24sdGhpcy5zdG9yZWRNYXJrcz1lLnN0b3JlZE1hcmtzfWdldCBzZWxlY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJTZWxlY3Rpb25Gb3I8dGhpcy5zdGVwcy5sZW5ndGgmJih0aGlzLmN1clNlbGVjdGlvbj10aGlzLmN1clNlbGVjdGlvbi5tYXAodGhpcy5kb2MsdGhpcy5tYXBwaW5nLnNsaWNlKHRoaXMuY3VyU2VsZWN0aW9uRm9yKSksdGhpcy5jdXJTZWxlY3Rpb25Gb3I9dGhpcy5zdGVwcy5sZW5ndGgpLHRoaXMuY3VyU2VsZWN0aW9ufXNldFNlbGVjdGlvbihlKXtpZihlLiRmcm9tLmRvYyE9dGhpcy5kb2MpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlNlbGVjdGlvbiBwYXNzZWQgdG8gc2V0U2VsZWN0aW9uIG11c3QgcG9pbnQgYXQgdGhlIGN1cnJlbnQgZG9jdW1lbnQiKTtyZXR1cm4gdGhpcy5jdXJTZWxlY3Rpb249ZSx0aGlzLmN1clNlbGVjdGlvbkZvcj10aGlzLnN0ZXBzLmxlbmd0aCx0aGlzLnVwZGF0ZWQ9KHRoaXMudXBkYXRlZHxQdWEpJn5WbmUsdGhpcy5zdG9yZWRNYXJrcz1udWxsLHRoaXN9Z2V0IHNlbGVjdGlvblNldCgpe3JldHVybih0aGlzLnVwZGF0ZWQmUHVhKT4wfXNldFN0b3JlZE1hcmtzKGUpe3JldHVybiB0aGlzLnN0b3JlZE1hcmtzPWUsdGhpcy51cGRhdGVkfD1WbmUsdGhpc31lbnN1cmVNYXJrcyhlKXtyZXR1cm4gZnMuc2FtZVNldCh0aGlzLnN0b3JlZE1hcmtzfHx0aGlzLnNlbGVjdGlvbi4kZnJvbS5tYXJrcygpLGUpfHx0aGlzLnNldFN0b3JlZE1hcmtzKGUpLHRoaXN9YWRkU3RvcmVkTWFyayhlKXtyZXR1cm4gdGhpcy5lbnN1cmVNYXJrcyhlLmFkZFRvU2V0KHRoaXMuc3RvcmVkTWFya3N8fHRoaXMuc2VsZWN0aW9uLiRoZWFkLm1hcmtzKCkpKX1yZW1vdmVTdG9yZWRNYXJrKGUpe3JldHVybiB0aGlzLmVuc3VyZU1hcmtzKGUucmVtb3ZlRnJvbVNldCh0aGlzLnN0b3JlZE1hcmtzfHx0aGlzLnNlbGVjdGlvbi4kaGVhZC5tYXJrcygpKSl9Z2V0IHN0b3JlZE1hcmtzU2V0KCl7cmV0dXJuKHRoaXMudXBkYXRlZCZWbmUpPjB9YWRkU3RlcChlLHQpe3N1cGVyLmFkZFN0ZXAoZSx0KSx0aGlzLnVwZGF0ZWQ9dGhpcy51cGRhdGVkJn5WbmUsdGhpcy5zdG9yZWRNYXJrcz1udWxsfXNldFRpbWUoZSl7cmV0dXJuIHRoaXMudGltZT1lLHRoaXN9cmVwbGFjZVNlbGVjdGlvbihlKXtyZXR1cm4gdGhpcy5zZWxlY3Rpb24ucmVwbGFjZSh0aGlzLGUpLHRoaXN9cmVwbGFjZVNlbGVjdGlvbldpdGgoZSx0PSEwKXtsZXQgYT10aGlzLnNlbGVjdGlvbjtyZXR1cm4gdCYmKGU9ZS5tYXJrKHRoaXMuc3RvcmVkTWFya3N8fChhLmVtcHR5P2EuJGZyb20ubWFya3MoKTphLiRmcm9tLm1hcmtzQWNyb3NzKGEuJHRvKXx8ZnMubm9uZSkpKSxhLnJlcGxhY2VXaXRoKHRoaXMsZSksdGhpc31kZWxldGVTZWxlY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3Rpb24ucmVwbGFjZSh0aGlzKSx0aGlzfWluc2VydFRleHQoZSx0LGEpe2xldCByPXRoaXMuZG9jLnR5cGUuc2NoZW1hO2lmKHQ9PW51bGwpcmV0dXJuIGU/dGhpcy5yZXBsYWNlU2VsZWN0aW9uV2l0aChyLnRleHQoZSksITApOnRoaXMuZGVsZXRlU2VsZWN0aW9uKCk7e2lmKGE9PW51bGwmJihhPXQpLCFlKXJldHVybiB0aGlzLmRlbGV0ZVJhbmdlKHQsYSk7bGV0IG49dGhpcy5zdG9yZWRNYXJrcztpZighbil7bGV0IG89dGhpcy5kb2MucmVzb2x2ZSh0KTtuPWE9PXQ/by5tYXJrcygpOm8ubWFya3NBY3Jvc3ModGhpcy5kb2MucmVzb2x2ZShhKSl9cmV0dXJuIHRoaXMucmVwbGFjZVJhbmdlV2l0aCh0LGEsci50ZXh0KGUsbikpLCF0aGlzLnNlbGVjdGlvbi5lbXB0eSYmdGhpcy5zZWxlY3Rpb24udG89PXQrZS5sZW5ndGgmJnRoaXMuc2V0U2VsZWN0aW9uKFF0Lm5lYXIodGhpcy5zZWxlY3Rpb24uJHRvKSksdGhpc319c2V0TWV0YShlLHQpe3JldHVybiB0aGlzLm1ldGFbdHlwZW9mIGU9PSJzdHJpbmciP2U6ZS5rZXldPXQsdGhpc31nZXRNZXRhKGUpe3JldHVybiB0aGlzLm1ldGFbdHlwZW9mIGU9PSJzdHJpbmciP2U6ZS5rZXldfWdldCBpc0dlbmVyaWMoKXtmb3IobGV0IGUgaW4gdGhpcy5tZXRhKXJldHVybiExO3JldHVybiEwfXNjcm9sbEludG9WaWV3KCl7cmV0dXJuIHRoaXMudXBkYXRlZHw9SXVhLHRoaXN9Z2V0IHNjcm9sbGVkSW50b1ZpZXcoKXtyZXR1cm4odGhpcy51cGRhdGVkJkl1YSk+MH19O2koQXVhLCJiaW5kIik7Wjg9Y2xhc3N7c3RhdGlje2kodGhpcywiRmllbGREZXNjIil9Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMubmFtZT1lLHRoaXMuaW5pdD1BdWEodC5pbml0LGEpLHRoaXMuYXBwbHk9QXVhKHQuYXBwbHksYSl9fSxER2E9W25ldyBaOCgiZG9jIix7aW5pdChzKXtyZXR1cm4gcy5kb2N8fHMuc2NoZW1hLnRvcE5vZGVUeXBlLmNyZWF0ZUFuZEZpbGwoKX0sYXBwbHkocyl7cmV0dXJuIHMuZG9jfX0pLG5ldyBaOCgic2VsZWN0aW9uIix7aW5pdChzLGUpe3JldHVybiBzLnNlbGVjdGlvbnx8UXQuYXRTdGFydChlLmRvYyl9LGFwcGx5KHMpe3JldHVybiBzLnNlbGVjdGlvbn19KSxuZXcgWjgoInN0b3JlZE1hcmtzIix7aW5pdChzKXtyZXR1cm4gcy5zdG9yZWRNYXJrc3x8bnVsbH0sYXBwbHkocyxlLHQsYSl7cmV0dXJuIGEuc2VsZWN0aW9uLiRjdXJzb3I/cy5zdG9yZWRNYXJrczpudWxsfX0pLG5ldyBaOCgic2Nyb2xsVG9TZWxlY3Rpb24iLHtpbml0KCl7cmV0dXJuIDB9LGFwcGx5KHMsZSl7cmV0dXJuIHMuc2Nyb2xsZWRJbnRvVmlldz9lKzE6ZX19KV0sVVo9Y2xhc3N7c3RhdGlje2kodGhpcywiQ29uZmlndXJhdGlvbiIpfWNvbnN0cnVjdG9yKGUsdCl7dGhpcy5zY2hlbWE9ZSx0aGlzLnBsdWdpbnM9W10sdGhpcy5wbHVnaW5zQnlLZXk9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLmZpZWxkcz1ER2Euc2xpY2UoKSx0JiZ0LmZvckVhY2goYT0+e2lmKHRoaXMucGx1Z2luc0J5S2V5W2Eua2V5XSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQWRkaW5nIGRpZmZlcmVudCBpbnN0YW5jZXMgb2YgYSBrZXllZCBwbHVnaW4gKCIrYS5rZXkrIikiKTt0aGlzLnBsdWdpbnMucHVzaChhKSx0aGlzLnBsdWdpbnNCeUtleVthLmtleV09YSxhLnNwZWMuc3RhdGUmJnRoaXMuZmllbGRzLnB1c2gobmV3IFo4KGEua2V5LGEuc3BlYy5zdGF0ZSxhKSl9KX19LFdaPWNsYXNzIHN7c3RhdGlje2kodGhpcywiRWRpdG9yU3RhdGUiKX1jb25zdHJ1Y3RvcihlKXt0aGlzLmNvbmZpZz1lfWdldCBzY2hlbWEoKXtyZXR1cm4gdGhpcy5jb25maWcuc2NoZW1hfWdldCBwbHVnaW5zKCl7cmV0dXJuIHRoaXMuY29uZmlnLnBsdWdpbnN9YXBwbHkoZSl7cmV0dXJuIHRoaXMuYXBwbHlUcmFuc2FjdGlvbihlKS5zdGF0ZX1maWx0ZXJUcmFuc2FjdGlvbihlLHQ9LTEpe2ZvcihsZXQgYT0wO2E8dGhpcy5jb25maWcucGx1Z2lucy5sZW5ndGg7YSsrKWlmKGEhPXQpe2xldCByPXRoaXMuY29uZmlnLnBsdWdpbnNbYV07aWYoci5zcGVjLmZpbHRlclRyYW5zYWN0aW9uJiYhci5zcGVjLmZpbHRlclRyYW5zYWN0aW9uLmNhbGwocixlLHRoaXMpKXJldHVybiExfXJldHVybiEwfWFwcGx5VHJhbnNhY3Rpb24oZSl7aWYoIXRoaXMuZmlsdGVyVHJhbnNhY3Rpb24oZSkpcmV0dXJue3N0YXRlOnRoaXMsdHJhbnNhY3Rpb25zOltdfTtsZXQgdD1bZV0sYT10aGlzLmFwcGx5SW5uZXIoZSkscj1udWxsO2Zvcig7Oyl7bGV0IG49ITE7Zm9yKGxldCBvPTA7bzx0aGlzLmNvbmZpZy5wbHVnaW5zLmxlbmd0aDtvKyspe2xldCBsPXRoaXMuY29uZmlnLnBsdWdpbnNbb107aWYobC5zcGVjLmFwcGVuZFRyYW5zYWN0aW9uKXtsZXQgcD1yP3Jbb10ubjowLGQ9cj9yW29dLnN0YXRlOnRoaXMsdT1wPHQubGVuZ3RoJiZsLnNwZWMuYXBwZW5kVHJhbnNhY3Rpb24uY2FsbChsLHA/dC5zbGljZShwKTp0LGQsYSk7aWYodSYmYS5maWx0ZXJUcmFuc2FjdGlvbih1LG8pKXtpZih1LnNldE1ldGEoImFwcGVuZGVkVHJhbnNhY3Rpb24iLGUpLCFyKXtyPVtdO2ZvcihsZXQgYz0wO2M8dGhpcy5jb25maWcucGx1Z2lucy5sZW5ndGg7YysrKXIucHVzaChjPG8/e3N0YXRlOmEsbjp0Lmxlbmd0aH06e3N0YXRlOnRoaXMsbjowfSl9dC5wdXNoKHUpLGE9YS5hcHBseUlubmVyKHUpLG49ITB9ciYmKHJbb109e3N0YXRlOmEsbjp0Lmxlbmd0aH0pfX1pZighbilyZXR1cm57c3RhdGU6YSx0cmFuc2FjdGlvbnM6dH19fWFwcGx5SW5uZXIoZSl7aWYoIWUuYmVmb3JlLmVxKHRoaXMuZG9jKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQXBwbHlpbmcgYSBtaXNtYXRjaGVkIHRyYW5zYWN0aW9uIik7bGV0IHQ9bmV3IHModGhpcy5jb25maWcpLGE9dGhpcy5jb25maWcuZmllbGRzO2ZvcihsZXQgcj0wO3I8YS5sZW5ndGg7cisrKXtsZXQgbj1hW3JdO3Rbbi5uYW1lXT1uLmFwcGx5KGUsdGhpc1tuLm5hbWVdLHRoaXMsdCl9cmV0dXJuIHR9Z2V0IHRyKCl7cmV0dXJuIG5ldyBVbmUodGhpcyl9c3RhdGljIGNyZWF0ZShlKXtsZXQgdD1uZXcgVVooZS5kb2M/ZS5kb2MudHlwZS5zY2hlbWE6ZS5zY2hlbWEsZS5wbHVnaW5zKSxhPW5ldyBzKHQpO2ZvcihsZXQgcj0wO3I8dC5maWVsZHMubGVuZ3RoO3IrKylhW3QuZmllbGRzW3JdLm5hbWVdPXQuZmllbGRzW3JdLmluaXQoZSxhKTtyZXR1cm4gYX1yZWNvbmZpZ3VyZShlKXtsZXQgdD1uZXcgVVoodGhpcy5zY2hlbWEsZS5wbHVnaW5zKSxhPXQuZmllbGRzLHI9bmV3IHModCk7Zm9yKGxldCBuPTA7bjxhLmxlbmd0aDtuKyspe2xldCBvPWFbbl0ubmFtZTtyW29dPXRoaXMuaGFzT3duUHJvcGVydHkobyk/dGhpc1tvXTphW25dLmluaXQoZSxyKX1yZXR1cm4gcn10b0pTT04oZSl7bGV0IHQ9e2RvYzp0aGlzLmRvYy50b0pTT04oKSxzZWxlY3Rpb246dGhpcy5zZWxlY3Rpb24udG9KU09OKCl9O2lmKHRoaXMuc3RvcmVkTWFya3MmJih0LnN0b3JlZE1hcmtzPXRoaXMuc3RvcmVkTWFya3MubWFwKGE9PmEudG9KU09OKCkpKSxlJiZ0eXBlb2YgZT09Im9iamVjdCIpZm9yKGxldCBhIGluIGUpe2lmKGE9PSJkb2MifHxhPT0ic2VsZWN0aW9uIil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVGhlIEpTT04gZmllbGRzIGBkb2NgIGFuZCBgc2VsZWN0aW9uYCBhcmUgcmVzZXJ2ZWQiKTtsZXQgcj1lW2FdLG49ci5zcGVjLnN0YXRlO24mJm4udG9KU09OJiYodFthXT1uLnRvSlNPTi5jYWxsKHIsdGhpc1tyLmtleV0pKX1yZXR1cm4gdH1zdGF0aWMgZnJvbUpTT04oZSx0LGEpe2lmKCF0KXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBFZGl0b3JTdGF0ZS5mcm9tSlNPTiIpO2lmKCFlLnNjaGVtYSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiUmVxdWlyZWQgY29uZmlnIGZpZWxkICdzY2hlbWEnIG1pc3NpbmciKTtsZXQgcj1uZXcgVVooZS5zY2hlbWEsZS5wbHVnaW5zKSxuPW5ldyBzKHIpO3JldHVybiByLmZpZWxkcy5mb3JFYWNoKG89PntpZihvLm5hbWU9PSJkb2MiKW4uZG9jPVRuLmZyb21KU09OKGUuc2NoZW1hLHQuZG9jKTtlbHNlIGlmKG8ubmFtZT09InNlbGVjdGlvbiIpbi5zZWxlY3Rpb249UXQuZnJvbUpTT04obi5kb2MsdC5zZWxlY3Rpb24pO2Vsc2UgaWYoby5uYW1lPT0ic3RvcmVkTWFya3MiKXQuc3RvcmVkTWFya3MmJihuLnN0b3JlZE1hcmtzPXQuc3RvcmVkTWFya3MubWFwKGUuc2NoZW1hLm1hcmtGcm9tSlNPTikpO2Vsc2V7aWYoYSlmb3IobGV0IGwgaW4gYSl7bGV0IHA9YVtsXSxkPXAuc3BlYy5zdGF0ZTtpZihwLmtleT09by5uYW1lJiZkJiZkLmZyb21KU09OJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxsKSl7bltvLm5hbWVdPWQuZnJvbUpTT04uY2FsbChwLGUsdFtsXSxuKTtyZXR1cm59fW5bby5uYW1lXT1vLmluaXQoZSxuKX19KSxufX07aShOdWEsImJpbmRQcm9wcyIpO1lzPWNsYXNze3N0YXRpY3tpKHRoaXMsIlBsdWdpbiIpfWNvbnN0cnVjdG9yKGUpe3RoaXMuc3BlYz1lLHRoaXMucHJvcHM9e30sZS5wcm9wcyYmTnVhKGUucHJvcHMsdGhpcyx0aGlzLnByb3BzKSx0aGlzLmtleT1lLmtleT9lLmtleS5rZXk6UnVhKCJwbHVnaW4iKX1nZXRTdGF0ZShlKXtyZXR1cm4gZVt0aGlzLmtleV19fSxUdHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpKFJ1YSwiY3JlYXRlS2V5Iik7JHI9Y2xhc3N7c3RhdGlje2kodGhpcywiUGx1Z2luS2V5Iil9Y29uc3RydWN0b3IoZT0ia2V5Iil7dGhpcy5rZXk9UnVhKGUpfWdldChlKXtyZXR1cm4gZS5jb25maWcucGx1Z2luc0J5S2V5W3RoaXMua2V5XX1nZXRTdGF0ZShlKXtyZXR1cm4gZVt0aGlzLmtleV19fX0pO3ZhciBHWj1nKCgpPT57cnUoKX0pO2Z1bmN0aW9uIE91YShzLGUsdCxhLHIpe2Zvcih2YXIgbjs7KXtpZihzPT10JiZlPT1hKXJldHVybiEwO2lmKGU9PShyPDA/MDpPYyhzKSkpe2xldCBvPXMucGFyZW50Tm9kZTtpZighb3x8by5ub2RlVHlwZSE9MXx8S1oocyl8fEVHYS50ZXN0KHMubm9kZU5hbWUpfHxzLmNvbnRlbnRFZGl0YWJsZT09ImZhbHNlIilyZXR1cm4hMTtlPVRvKHMpKyhyPDA/MDoxKSxzPW99ZWxzZSBpZihzLm5vZGVUeXBlPT0xKXtsZXQgbz1zLmNoaWxkTm9kZXNbZSsocjwwPy0xOjApXTtpZihvLm5vZGVUeXBlPT0xJiZvLmNvbnRlbnRFZGl0YWJsZT09ImZhbHNlIilpZighKChuPW8ucG1WaWV3RGVzYyk9PT1udWxsfHxuPT09dm9pZCAwKSYmbi5pZ25vcmVGb3JTZWxlY3Rpb24pZSs9cjtlbHNlIHJldHVybiExO2Vsc2Ugcz1vLGU9cjwwP09jKHMpOjB9ZWxzZSByZXR1cm4hMX19ZnVuY3Rpb24gT2Mocyl7cmV0dXJuIHMubm9kZVR5cGU9PTM/cy5ub2RlVmFsdWUubGVuZ3RoOnMuY2hpbGROb2Rlcy5sZW5ndGh9ZnVuY3Rpb24gUEdhKHMsZSl7Zm9yKDs7KXtpZihzLm5vZGVUeXBlPT0zJiZlKXJldHVybiBzO2lmKHMubm9kZVR5cGU9PTEmJmU+MCl7aWYocy5jb250ZW50RWRpdGFibGU9PSJmYWxzZSIpcmV0dXJuIG51bGw7cz1zLmNoaWxkTm9kZXNbZS0xXSxlPU9jKHMpfWVsc2UgaWYocy5wYXJlbnROb2RlJiYhS1oocykpZT1UbyhzKSxzPXMucGFyZW50Tm9kZTtlbHNlIHJldHVybiBudWxsfX1mdW5jdGlvbiBJR2EocyxlKXtmb3IoOzspe2lmKHMubm9kZVR5cGU9PTMmJmU8cy5ub2RlVmFsdWUubGVuZ3RoKXJldHVybiBzO2lmKHMubm9kZVR5cGU9PTEmJmU8cy5jaGlsZE5vZGVzLmxlbmd0aCl7aWYocy5jb250ZW50RWRpdGFibGU9PSJmYWxzZSIpcmV0dXJuIG51bGw7cz1zLmNoaWxkTm9kZXNbZV0sZT0wfWVsc2UgaWYocy5wYXJlbnROb2RlJiYhS1oocykpZT1UbyhzKSsxLHM9cy5wYXJlbnROb2RlO2Vsc2UgcmV0dXJuIG51bGx9fWZ1bmN0aW9uIEFHYShzLGUsdCl7Zm9yKGxldCBhPWU9PTAscj1lPT1PYyhzKTthfHxyOyl7aWYocz09dClyZXR1cm4hMDtsZXQgbj1UbyhzKTtpZihzPXMucGFyZW50Tm9kZSwhcylyZXR1cm4hMTthPWEmJm49PTAscj1yJiZuPT1PYyhzKX19ZnVuY3Rpb24gS1oocyl7bGV0IGU7Zm9yKGxldCB0PXM7dCYmIShlPXQucG1WaWV3RGVzYyk7dD10LnBhcmVudE5vZGUpO3JldHVybiBlJiZlLm5vZGUmJmUubm9kZS5pc0Jsb2NrJiYoZS5kb209PXN8fGUuY29udGVudERPTT09cyl9ZnVuY3Rpb24gSjgocyxlKXtsZXQgdD1kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKTtyZXR1cm4gdC5pbml0RXZlbnQoImtleWRvd24iLCEwLCEwKSx0LmtleUNvZGU9cyx0LmtleT10LmNvZGU9ZSx0fWZ1bmN0aW9uIE5HYShzKXtsZXQgZT1zLmFjdGl2ZUVsZW1lbnQ7Zm9yKDtlJiZlLnNoYWRvd1Jvb3Q7KWU9ZS5zaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQ7cmV0dXJuIGV9ZnVuY3Rpb24gUkdhKHMsZSx0KXtpZihzLmNhcmV0UG9zaXRpb25Gcm9tUG9pbnQpdHJ5e2xldCBhPXMuY2FyZXRQb3NpdGlvbkZyb21Qb2ludChlLHQpO2lmKGEpcmV0dXJue25vZGU6YS5vZmZzZXROb2RlLG9mZnNldDpNYXRoLm1pbihPYyhhLm9mZnNldE5vZGUpLGEub2Zmc2V0KX19Y2F0Y2h7fWlmKHMuY2FyZXRSYW5nZUZyb21Qb2ludCl7bGV0IGE9cy5jYXJldFJhbmdlRnJvbVBvaW50KGUsdCk7aWYoYSlyZXR1cm57bm9kZTphLnN0YXJ0Q29udGFpbmVyLG9mZnNldDpNYXRoLm1pbihPYyhhLnN0YXJ0Q29udGFpbmVyKSxhLnN0YXJ0T2Zmc2V0KX19fWZ1bmN0aW9uIEZHYShzKXtsZXQgZT1zLmRlZmF1bHRWaWV3JiZzLmRlZmF1bHRWaWV3LnZpc3VhbFZpZXdwb3J0O3JldHVybiBlP3tsZWZ0OjAscmlnaHQ6ZS53aWR0aCx0b3A6MCxib3R0b206ZS5oZWlnaHR9OntsZWZ0OjAscmlnaHQ6cy5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgsdG9wOjAsYm90dG9tOnMuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodH19ZnVuY3Rpb24gbHUocyxlKXtyZXR1cm4gdHlwZW9mIHM9PSJudW1iZXIiP3M6c1tlXX1mdW5jdGlvbiBCR2Eocyl7bGV0IGU9cy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0PWUud2lkdGgvcy5vZmZzZXRXaWR0aHx8MSxhPWUuaGVpZ2h0L3Mub2Zmc2V0SGVpZ2h0fHwxO3JldHVybntsZWZ0OmUubGVmdCxyaWdodDplLmxlZnQrcy5jbGllbnRXaWR0aCp0LHRvcDplLnRvcCxib3R0b206ZS50b3Arcy5jbGllbnRIZWlnaHQqYX19ZnVuY3Rpb24ganVhKHMsZSx0KXtsZXQgYT1zLnNvbWVQcm9wKCJzY3JvbGxUaHJlc2hvbGQiKXx8MCxyPXMuc29tZVByb3AoInNjcm9sbE1hcmdpbiIpfHw1LG49cy5kb20ub3duZXJEb2N1bWVudDtmb3IobGV0IG89dHx8cy5kb207bzspe2lmKG8ubm9kZVR5cGUhPTEpe289enYobyk7Y29udGludWV9bGV0IGw9byxwPWw9PW4uYm9keSxkPXA/RkdhKG4pOkJHYShsKSx1PTAsYz0wO2lmKGUudG9wPGQudG9wK2x1KGEsInRvcCIpP2M9LShkLnRvcC1lLnRvcCtsdShyLCJ0b3AiKSk6ZS5ib3R0b20+ZC5ib3R0b20tbHUoYSwiYm90dG9tIikmJihjPWUuYm90dG9tLWUudG9wPmQuYm90dG9tLWQudG9wP2UudG9wK2x1KHIsInRvcCIpLWQudG9wOmUuYm90dG9tLWQuYm90dG9tK2x1KHIsImJvdHRvbSIpKSxlLmxlZnQ8ZC5sZWZ0K2x1KGEsImxlZnQiKT91PS0oZC5sZWZ0LWUubGVmdCtsdShyLCJsZWZ0IikpOmUucmlnaHQ+ZC5yaWdodC1sdShhLCJyaWdodCIpJiYodT1lLnJpZ2h0LWQucmlnaHQrbHUociwicmlnaHQiKSksdXx8YylpZihwKW4uZGVmYXVsdFZpZXcuc2Nyb2xsQnkodSxjKTtlbHNle2xldCB2PWwuc2Nyb2xsTGVmdCx4PWwuc2Nyb2xsVG9wO2MmJihsLnNjcm9sbFRvcCs9YyksdSYmKGwuc2Nyb2xsTGVmdCs9dSk7bGV0IG09bC5zY3JvbGxMZWZ0LXYsZj1sLnNjcm9sbFRvcC14O2U9e2xlZnQ6ZS5sZWZ0LW0sdG9wOmUudG9wLWYscmlnaHQ6ZS5yaWdodC1tLGJvdHRvbTplLmJvdHRvbS1mfX1sZXQgYj1wPyJmaXhlZCI6Z2V0Q29tcHV0ZWRTdHlsZShvKS5wb3NpdGlvbjtpZigvXihmaXhlZHxzdGlja3kpJC8udGVzdChiKSlicmVhaztvPWI9PSJhYnNvbHV0ZSI/by5vZmZzZXRQYXJlbnQ6enYobyl9fWZ1bmN0aW9uIEhHYShzKXtsZXQgZT1zLmRvbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0PU1hdGgubWF4KDAsZS50b3ApLGEscjtmb3IobGV0IG49KGUubGVmdCtlLnJpZ2h0KS8yLG89dCsxO288TWF0aC5taW4oaW5uZXJIZWlnaHQsZS5ib3R0b20pO28rPTUpe2xldCBsPXMucm9vdC5lbGVtZW50RnJvbVBvaW50KG4sbyk7aWYoIWx8fGw9PXMuZG9tfHwhcy5kb20uY29udGFpbnMobCkpY29udGludWU7bGV0IHA9bC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZihwLnRvcD49dC0yMCl7YT1sLHI9cC50b3A7YnJlYWt9fXJldHVybntyZWZET006YSxyZWZUb3A6cixzdGFjazpWdWEocy5kb20pfX1mdW5jdGlvbiBWdWEocyl7bGV0IGU9W10sdD1zLm93bmVyRG9jdW1lbnQ7Zm9yKGxldCBhPXM7YSYmKGUucHVzaCh7ZG9tOmEsdG9wOmEuc2Nyb2xsVG9wLGxlZnQ6YS5zY3JvbGxMZWZ0fSkscyE9dCk7YT16dihhKSk7cmV0dXJuIGV9ZnVuY3Rpb24gcUdhKHtyZWZET006cyxyZWZUb3A6ZSxzdGFjazp0fSl7bGV0IGE9cz9zLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDowO1V1YSh0LGE9PTA/MDphLWUpfWZ1bmN0aW9uIFV1YShzLGUpe2ZvcihsZXQgdD0wO3Q8cy5sZW5ndGg7dCsrKXtsZXR7ZG9tOmEsdG9wOnIsbGVmdDpufT1zW3RdO2Euc2Nyb2xsVG9wIT1yK2UmJihhLnNjcm9sbFRvcD1yK2UpLGEuc2Nyb2xsTGVmdCE9biYmKGEuc2Nyb2xsTGVmdD1uKX19ZnVuY3Rpb24gakdhKHMpe2lmKHMuc2V0QWN0aXZlKXJldHVybiBzLnNldEFjdGl2ZSgpO2lmKFR2KXJldHVybiBzLmZvY3VzKFR2KTtsZXQgZT1WdWEocyk7cy5mb2N1cyhUdj09bnVsbD97Z2V0IHByZXZlbnRTY3JvbGwoKXtyZXR1cm4gVHY9e3ByZXZlbnRTY3JvbGw6ITB9LCEwfX06dm9pZCAwKSxUdnx8KFR2PSExLFV1YShlLDApKX1mdW5jdGlvbiBXdWEocyxlKXtsZXQgdCxhPTJlOCxyLG49MCxvPWUudG9wLGw9ZS50b3AscCxkO2ZvcihsZXQgdT1zLmZpcnN0Q2hpbGQsYz0wO3U7dT11Lm5leHRTaWJsaW5nLGMrKyl7bGV0IGI7aWYodS5ub2RlVHlwZT09MSliPXUuZ2V0Q2xpZW50UmVjdHMoKTtlbHNlIGlmKHUubm9kZVR5cGU9PTMpYj1vdSh1KS5nZXRDbGllbnRSZWN0cygpO2Vsc2UgY29udGludWU7Zm9yKGxldCB2PTA7djxiLmxlbmd0aDt2Kyspe2xldCB4PWJbdl07aWYoeC50b3A8PW8mJnguYm90dG9tPj1sKXtvPU1hdGgubWF4KHguYm90dG9tLG8pLGw9TWF0aC5taW4oeC50b3AsbCk7bGV0IG09eC5sZWZ0PmUubGVmdD94LmxlZnQtZS5sZWZ0OngucmlnaHQ8ZS5sZWZ0P2UubGVmdC14LnJpZ2h0OjA7aWYobTxhKXt0PXUsYT1tLHI9bSYmdC5ub2RlVHlwZT09Mz97bGVmdDp4LnJpZ2h0PGUubGVmdD94LnJpZ2h0OngubGVmdCx0b3A6ZS50b3B9OmUsdS5ub2RlVHlwZT09MSYmbSYmKG49YysoZS5sZWZ0Pj0oeC5sZWZ0K3gucmlnaHQpLzI/MTowKSk7Y29udGludWV9fWVsc2UgeC50b3A+ZS50b3AmJiFwJiZ4LmxlZnQ8PWUubGVmdCYmeC5yaWdodD49ZS5sZWZ0JiYocD11LGQ9e2xlZnQ6TWF0aC5tYXgoeC5sZWZ0LE1hdGgubWluKHgucmlnaHQsZS5sZWZ0KSksdG9wOngudG9wfSk7IXQmJihlLmxlZnQ+PXgucmlnaHQmJmUudG9wPj14LnRvcHx8ZS5sZWZ0Pj14LmxlZnQmJmUudG9wPj14LmJvdHRvbSkmJihuPWMrMSl9fXJldHVybiF0JiZwJiYodD1wLHI9ZCxhPTApLHQmJnQubm9kZVR5cGU9PTM/VkdhKHQscik6IXR8fGEmJnQubm9kZVR5cGU9PTE/e25vZGU6cyxvZmZzZXQ6bn06V3VhKHQscil9ZnVuY3Rpb24gVkdhKHMsZSl7bGV0IHQ9cy5ub2RlVmFsdWUubGVuZ3RoLGE9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKSxyO2ZvcihsZXQgbj0wO248dDtuKyspe2Euc2V0RW5kKHMsbisxKSxhLnNldFN0YXJ0KHMsbik7bGV0IG89JGgoYSwxKTtpZihvLnRvcCE9by5ib3R0b20mJlB0dChlLG8pKXtyPXtub2RlOnMsb2Zmc2V0Om4rKGUubGVmdD49KG8ubGVmdCtvLnJpZ2h0KS8yPzE6MCl9O2JyZWFrfX1yZXR1cm4gYS5kZXRhY2goKSxyfHx7bm9kZTpzLG9mZnNldDowfX1mdW5jdGlvbiBQdHQocyxlKXtyZXR1cm4gcy5sZWZ0Pj1lLmxlZnQtMSYmcy5sZWZ0PD1lLnJpZ2h0KzEmJnMudG9wPj1lLnRvcC0xJiZzLnRvcDw9ZS5ib3R0b20rMX1mdW5jdGlvbiBVR2EocyxlKXtsZXQgdD1zLnBhcmVudE5vZGU7cmV0dXJuIHQmJi9ebGkkL2kudGVzdCh0Lm5vZGVOYW1lKSYmZS5sZWZ0PHMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdD90OnN9ZnVuY3Rpb24gV0dhKHMsZSx0KXtsZXR7bm9kZTphLG9mZnNldDpyfT1XdWEoZSx0KSxuPS0xO2lmKGEubm9kZVR5cGU9PTEmJiFhLmZpcnN0Q2hpbGQpe2xldCBvPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7bj1vLmxlZnQhPW8ucmlnaHQmJnQubGVmdD4oby5sZWZ0K28ucmlnaHQpLzI/MTotMX1yZXR1cm4gcy5kb2NWaWV3LnBvc0Zyb21ET00oYSxyLG4pfWZ1bmN0aW9uIEdHYShzLGUsdCxhKXtsZXQgcj0tMTtmb3IobGV0IG49ZSxvPSExO24hPXMuZG9tOyl7bGV0IGw9cy5kb2NWaWV3Lm5lYXJlc3REZXNjKG4sITApLHA7aWYoIWwpcmV0dXJuIG51bGw7aWYobC5kb20ubm9kZVR5cGU9PTEmJihsLm5vZGUuaXNCbG9jayYmbC5wYXJlbnR8fCFsLmNvbnRlbnRET00pJiYoKHA9bC5kb20uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLndpZHRofHxwLmhlaWdodCkmJihsLm5vZGUuaXNCbG9jayYmbC5wYXJlbnQmJiEvXlQoUnxCT0RZfEhFQUR8Rk9PVCkkLy50ZXN0KGwuZG9tLm5vZGVOYW1lKSYmKCFvJiZwLmxlZnQ+YS5sZWZ0fHxwLnRvcD5hLnRvcD9yPWwucG9zQmVmb3JlOighbyYmcC5yaWdodDxhLmxlZnR8fHAuYm90dG9tPGEudG9wKSYmKHI9bC5wb3NBZnRlciksbz0hMCksIWwuY29udGVudERPTSYmcjwwJiYhbC5ub2RlLmlzVGV4dCkpcmV0dXJuKGwubm9kZS5pc0Jsb2NrP2EudG9wPChwLnRvcCtwLmJvdHRvbSkvMjphLmxlZnQ8KHAubGVmdCtwLnJpZ2h0KS8yKT9sLnBvc0JlZm9yZTpsLnBvc0FmdGVyO249bC5kb20ucGFyZW50Tm9kZX1yZXR1cm4gcj4tMT9yOnMuZG9jVmlldy5wb3NGcm9tRE9NKGUsdCwtMSl9ZnVuY3Rpb24gR3VhKHMsZSx0KXtsZXQgYT1zLmNoaWxkTm9kZXMubGVuZ3RoO2lmKGEmJnQudG9wPHQuYm90dG9tKWZvcihsZXQgcj1NYXRoLm1heCgwLE1hdGgubWluKGEtMSxNYXRoLmZsb29yKGEqKGUudG9wLXQudG9wKS8odC5ib3R0b20tdC50b3ApKS0yKSksbj1yOzspe2xldCBvPXMuY2hpbGROb2Rlc1tuXTtpZihvLm5vZGVUeXBlPT0xKXtsZXQgbD1vLmdldENsaWVudFJlY3RzKCk7Zm9yKGxldCBwPTA7cDxsLmxlbmd0aDtwKyspe2xldCBkPWxbcF07aWYoUHR0KGUsZCkpcmV0dXJuIEd1YShvLGUsZCl9fWlmKChuPShuKzEpJWEpPT1yKWJyZWFrfXJldHVybiBzfWZ1bmN0aW9uIEtHYShzLGUpe2xldCB0PXMuZG9tLm93bmVyRG9jdW1lbnQsYSxyPTAsbj1SR2EodCxlLmxlZnQsZS50b3ApO24mJih7bm9kZTphLG9mZnNldDpyfT1uKTtsZXQgbz0ocy5yb290LmVsZW1lbnRGcm9tUG9pbnQ/cy5yb290OnQpLmVsZW1lbnRGcm9tUG9pbnQoZS5sZWZ0LGUudG9wKSxsO2lmKCFvfHwhcy5kb20uY29udGFpbnMoby5ub2RlVHlwZSE9MT9vLnBhcmVudE5vZGU6bykpe2xldCBkPXMuZG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKCFQdHQoZSxkKXx8KG89R3VhKHMuZG9tLGUsZCksIW8pKXJldHVybiBudWxsfWlmKGxuKWZvcihsZXQgZD1vO2EmJmQ7ZD16dihkKSlkLmRyYWdnYWJsZSYmKGE9dm9pZCAwKTtpZihvPVVHYShvLGUpLGEpe2lmKEZjJiZhLm5vZGVUeXBlPT0xJiYocj1NYXRoLm1pbihyLGEuY2hpbGROb2Rlcy5sZW5ndGgpLHI8YS5jaGlsZE5vZGVzLmxlbmd0aCkpe2xldCB1PWEuY2hpbGROb2Rlc1tyXSxjO3Uubm9kZU5hbWU9PSJJTUciJiYoYz11LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKS5yaWdodDw9ZS5sZWZ0JiZjLmJvdHRvbT5lLnRvcCYmcisrfWxldCBkO1laJiZyJiZhLm5vZGVUeXBlPT0xJiYoZD1hLmNoaWxkTm9kZXNbci0xXSkubm9kZVR5cGU9PTEmJmQuY29udGVudEVkaXRhYmxlPT0iZmFsc2UiJiZkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcD49ZS50b3AmJnItLSxhPT1zLmRvbSYmcj09YS5jaGlsZE5vZGVzLmxlbmd0aC0xJiZhLmxhc3RDaGlsZC5ub2RlVHlwZT09MSYmZS50b3A+YS5sYXN0Q2hpbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tP2w9cy5zdGF0ZS5kb2MuY29udGVudC5zaXplOihyPT0wfHxhLm5vZGVUeXBlIT0xfHxhLmNoaWxkTm9kZXNbci0xXS5ub2RlTmFtZSE9IkJSIikmJihsPUdHYShzLGEscixlKSl9bD09bnVsbCYmKGw9V0dhKHMsbyxlKSk7bGV0IHA9cy5kb2NWaWV3Lm5lYXJlc3REZXNjKG8sITApO3JldHVybntwb3M6bCxpbnNpZGU6cD9wLnBvc0F0U3RhcnQtcC5ib3JkZXI6LTF9fWZ1bmN0aW9uIEt1YShzKXtyZXR1cm4gcy50b3A8cy5ib3R0b218fHMubGVmdDxzLnJpZ2h0fWZ1bmN0aW9uICRoKHMsZSl7bGV0IHQ9cy5nZXRDbGllbnRSZWN0cygpO2lmKHQubGVuZ3RoKXtsZXQgYT10W2U8MD8wOnQubGVuZ3RoLTFdO2lmKEt1YShhKSlyZXR1cm4gYX1yZXR1cm4gQXJyYXkucHJvdG90eXBlLmZpbmQuY2FsbCh0LEt1YSl8fHMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9ZnVuY3Rpb24gWXVhKHMsZSx0KXtsZXR7bm9kZTphLG9mZnNldDpyLGF0b206bn09cy5kb2NWaWV3LmRvbUZyb21Qb3MoZSx0PDA/LTE6MSksbz1ZWnx8RmM7aWYoYS5ub2RlVHlwZT09MylpZihvJiYoWUdhLnRlc3QoYS5ub2RlVmFsdWUpfHwodDwwPyFyOnI9PWEubm9kZVZhbHVlLmxlbmd0aCkpKXtsZXQgcD0kaChvdShhLHIsciksdCk7aWYoRmMmJnImJi9ccy8udGVzdChhLm5vZGVWYWx1ZVtyLTFdKSYmcjxhLm5vZGVWYWx1ZS5sZW5ndGgpe2xldCBkPSRoKG91KGEsci0xLHItMSksLTEpO2lmKGQudG9wPT1wLnRvcCl7bGV0IHU9JGgob3UoYSxyLHIrMSksLTEpO2lmKHUudG9wIT1wLnRvcClyZXR1cm4gWloodSx1LmxlZnQ8ZC5sZWZ0KX19cmV0dXJuIHB9ZWxzZXtsZXQgcD1yLGQ9cix1PXQ8MD8xOi0xO3JldHVybiB0PDAmJiFyPyhkKyssdT0tMSk6dD49MCYmcj09YS5ub2RlVmFsdWUubGVuZ3RoPyhwLS0sdT0xKTp0PDA/cC0tOmQrKyxaWigkaChvdShhLHAsZCksdSksdTwwKX1pZighcy5zdGF0ZS5kb2MucmVzb2x2ZShlLShufHwwKSkucGFyZW50LmlubGluZUNvbnRlbnQpe2lmKG49PW51bGwmJnImJih0PDB8fHI9PU9jKGEpKSl7bGV0IHA9YS5jaGlsZE5vZGVzW3ItMV07aWYocC5ub2RlVHlwZT09MSlyZXR1cm4gSXR0KHAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksITEpfWlmKG49PW51bGwmJnI8T2MoYSkpe2xldCBwPWEuY2hpbGROb2Rlc1tyXTtpZihwLm5vZGVUeXBlPT0xKXJldHVybiBJdHQocC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwhMCl9cmV0dXJuIEl0dChhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHQ+PTApfWlmKG49PW51bGwmJnImJih0PDB8fHI9PU9jKGEpKSl7bGV0IHA9YS5jaGlsZE5vZGVzW3ItMV0sZD1wLm5vZGVUeXBlPT0zP291KHAsT2MocCktKG8/MDoxKSk6cC5ub2RlVHlwZT09MSYmKHAubm9kZU5hbWUhPSJCUiJ8fCFwLm5leHRTaWJsaW5nKT9wOm51bGw7aWYoZClyZXR1cm4gWlooJGgoZCwxKSwhMSl9aWYobj09bnVsbCYmcjxPYyhhKSl7bGV0IHA9YS5jaGlsZE5vZGVzW3JdO2Zvcig7cC5wbVZpZXdEZXNjJiZwLnBtVmlld0Rlc2MuaWdub3JlRm9yQ29vcmRzOylwPXAubmV4dFNpYmxpbmc7bGV0IGQ9cD9wLm5vZGVUeXBlPT0zP291KHAsMCxvPzA6MSk6cC5ub2RlVHlwZT09MT9wOm51bGw6bnVsbDtpZihkKXJldHVybiBaWigkaChkLC0xKSwhMCl9cmV0dXJuIFpaKCRoKGEubm9kZVR5cGU9PTM/b3UoYSk6YSwtdCksdD49MCl9ZnVuY3Rpb24gWloocyxlKXtpZihzLndpZHRoPT0wKXJldHVybiBzO2xldCB0PWU/cy5sZWZ0OnMucmlnaHQ7cmV0dXJue3RvcDpzLnRvcCxib3R0b206cy5ib3R0b20sbGVmdDp0LHJpZ2h0OnR9fWZ1bmN0aW9uIEl0dChzLGUpe2lmKHMuaGVpZ2h0PT0wKXJldHVybiBzO2xldCB0PWU/cy50b3A6cy5ib3R0b207cmV0dXJue3RvcDp0LGJvdHRvbTp0LGxlZnQ6cy5sZWZ0LHJpZ2h0OnMucmlnaHR9fWZ1bmN0aW9uIFp1YShzLGUsdCl7bGV0IGE9cy5zdGF0ZSxyPXMucm9vdC5hY3RpdmVFbGVtZW50O2EhPWUmJnMudXBkYXRlU3RhdGUoZSksciE9cy5kb20mJnMuZm9jdXMoKTt0cnl7cmV0dXJuIHQoKX1maW5hbGx5e2EhPWUmJnMudXBkYXRlU3RhdGUoYSksciE9cy5kb20mJnImJnIuZm9jdXMoKX19ZnVuY3Rpb24gWkdhKHMsZSx0KXtsZXQgYT1lLnNlbGVjdGlvbixyPXQ9PSJ1cCI/YS4kZnJvbTphLiR0bztyZXR1cm4gWnVhKHMsZSwoKT0+e2xldHtub2RlOm59PXMuZG9jVmlldy5kb21Gcm9tUG9zKHIucG9zLHQ9PSJ1cCI/LTE6MSk7Zm9yKDs7KXtsZXQgbD1zLmRvY1ZpZXcubmVhcmVzdERlc2MobiwhMCk7aWYoIWwpYnJlYWs7aWYobC5ub2RlLmlzQmxvY2spe249bC5jb250ZW50RE9NfHxsLmRvbTticmVha31uPWwuZG9tLnBhcmVudE5vZGV9bGV0IG89WXVhKHMsci5wb3MsMSk7Zm9yKGxldCBsPW4uZmlyc3RDaGlsZDtsO2w9bC5uZXh0U2libGluZyl7bGV0IHA7aWYobC5ub2RlVHlwZT09MSlwPWwuZ2V0Q2xpZW50UmVjdHMoKTtlbHNlIGlmKGwubm9kZVR5cGU9PTMpcD1vdShsLDAsbC5ub2RlVmFsdWUubGVuZ3RoKS5nZXRDbGllbnRSZWN0cygpO2Vsc2UgY29udGludWU7Zm9yKGxldCBkPTA7ZDxwLmxlbmd0aDtkKyspe2xldCB1PXBbZF07aWYodS5ib3R0b20+dS50b3ArMSYmKHQ9PSJ1cCI/by50b3AtdS50b3A+KHUuYm90dG9tLW8udG9wKSoyOnUuYm90dG9tLW8uYm90dG9tPihvLmJvdHRvbS11LnRvcCkqMikpcmV0dXJuITF9fXJldHVybiEwfSl9ZnVuY3Rpb24gUUdhKHMsZSx0KXtsZXR7JGhlYWQ6YX09ZS5zZWxlY3Rpb247aWYoIWEucGFyZW50LmlzVGV4dGJsb2NrKXJldHVybiExO2xldCByPWEucGFyZW50T2Zmc2V0LG49IXIsbz1yPT1hLnBhcmVudC5jb250ZW50LnNpemUsbD1zLmRvbVNlbGVjdGlvbigpO3JldHVybiBsPyFYR2EudGVzdChhLnBhcmVudC50ZXh0Q29udGVudCl8fCFsLm1vZGlmeT90PT0ibGVmdCJ8fHQ9PSJiYWNrd2FyZCI/bjpvOlp1YShzLGUsKCk9PntsZXR7Zm9jdXNOb2RlOnAsZm9jdXNPZmZzZXQ6ZCxhbmNob3JOb2RlOnUsYW5jaG9yT2Zmc2V0OmN9PXMuZG9tU2VsZWN0aW9uUmFuZ2UoKSxiPWwuY2FyZXRCaWRpTGV2ZWw7bC5tb2RpZnkoIm1vdmUiLHQsImNoYXJhY3RlciIpO2xldCB2PWEuZGVwdGg/cy5kb2NWaWV3LmRvbUFmdGVyUG9zKGEuYmVmb3JlKCkpOnMuZG9tLHtmb2N1c05vZGU6eCxmb2N1c09mZnNldDptfT1zLmRvbVNlbGVjdGlvblJhbmdlKCksZj14JiYhdi5jb250YWlucyh4Lm5vZGVUeXBlPT0xP3g6eC5wYXJlbnROb2RlKXx8cD09eCYmZD09bTt0cnl7bC5jb2xsYXBzZSh1LGMpLHAmJihwIT11fHxkIT1jKSYmbC5leHRlbmQmJmwuZXh0ZW5kKHAsZCl9Y2F0Y2h7fXJldHVybiBiIT1udWxsJiYobC5jYXJldEJpZGlMZXZlbD1iKSxmfSk6YS5wb3M9PWEuc3RhcnQoKXx8YS5wb3M9PWEuZW5kKCl9ZnVuY3Rpb24gSkdhKHMsZSx0KXtyZXR1cm4gWHVhPT1lJiZRdWE9PXQ/SnVhOihYdWE9ZSxRdWE9dCxKdWE9dD09InVwInx8dD09ImRvd24iP1pHYShzLGUsdCk6UUdhKHMsZSx0KSl9ZnVuY3Rpb24gdHBhKHMsZSx0LGEscil7aXBhKGEsZSxzKTtsZXQgbj1uZXcgRGgodm9pZCAwLHMsZSx0LGEsYSxhLHIsMCk7cmV0dXJuIG4uY29udGVudERPTSYmbi51cGRhdGVDaGlsZHJlbihyLDApLG59ZnVuY3Rpb24gYXBhKHMsZSx0KXtsZXQgYT1zLmZpcnN0Q2hpbGQscj0hMTtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7bGV0IG89ZVtuXSxsPW8uZG9tO2lmKGwucGFyZW50Tm9kZT09cyl7Zm9yKDtsIT1hOylhPXJwYShhKSxyPSEwO2E9YS5uZXh0U2libGluZ31lbHNlIHI9ITAscy5pbnNlcnRCZWZvcmUobCxhKTtpZihvIGluc3RhbmNlb2YgJHYpe2xldCBwPWE/YS5wcmV2aW91c1NpYmxpbmc6cy5sYXN0Q2hpbGQ7YXBhKG8uY29udGVudERPTSxvLmNoaWxkcmVuLHQpLGE9cD9wLm5leHRTaWJsaW5nOnMuZmlyc3RDaGlsZH19Zm9yKDthOylhPXJwYShhKSxyPSEwO3ImJnQudHJhY2tXcml0ZXM9PXMmJih0LnRyYWNrV3JpdGVzPW51bGwpfWZ1bmN0aW9uIFJ0dChzLGUsdCl7aWYocy5sZW5ndGg9PTApcmV0dXJuIGFnO2xldCBhPXQ/YWdbMF06bmV3IFhaLHI9W2FdO2ZvcihsZXQgbj0wO248cy5sZW5ndGg7bisrKXtsZXQgbz1zW25dLnR5cGUuYXR0cnM7aWYobyl7by5ub2RlTmFtZSYmci5wdXNoKGE9bmV3IFhaKG8ubm9kZU5hbWUpKTtmb3IobGV0IGwgaW4gbyl7bGV0IHA9b1tsXTtwIT1udWxsJiYodCYmci5sZW5ndGg9PTEmJnIucHVzaChhPW5ldyBYWihlLmlzSW5saW5lPyJzcGFuIjoiZGl2IikpLGw9PSJjbGFzcyI/YS5jbGFzcz0oYS5jbGFzcz9hLmNsYXNzKyIgIjoiIikrcDpsPT0ic3R5bGUiP2Euc3R5bGU9KGEuc3R5bGU/YS5zdHlsZSsiOyI6IiIpK3A6bCE9Im5vZGVOYW1lIiYmKGFbbF09cCkpfX19cmV0dXJuIHJ9ZnVuY3Rpb24gc3BhKHMsZSx0LGEpe2lmKHQ9PWFnJiZhPT1hZylyZXR1cm4gZTtsZXQgcj1lO2ZvcihsZXQgbj0wO248YS5sZW5ndGg7bisrKXtsZXQgbz1hW25dLGw9dFtuXTtpZihuKXtsZXQgcDtsJiZsLm5vZGVOYW1lPT1vLm5vZGVOYW1lJiZyIT1zJiYocD1yLnBhcmVudE5vZGUpJiZwLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PW8ubm9kZU5hbWV8fChwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoby5ub2RlTmFtZSkscC5wbUlzRGVjbz0hMCxwLmFwcGVuZENoaWxkKHIpLGw9YWdbMF0pLHI9cH1lS2EocixsfHxhZ1swXSxvKX1yZXR1cm4gcn1mdW5jdGlvbiBlS2EocyxlLHQpe2ZvcihsZXQgYSBpbiBlKWEhPSJjbGFzcyImJmEhPSJzdHlsZSImJmEhPSJub2RlTmFtZSImJiEoYSBpbiB0KSYmcy5yZW1vdmVBdHRyaWJ1dGUoYSk7Zm9yKGxldCBhIGluIHQpYSE9ImNsYXNzIiYmYSE9InN0eWxlIiYmYSE9Im5vZGVOYW1lIiYmdFthXSE9ZVthXSYmcy5zZXRBdHRyaWJ1dGUoYSx0W2FdKTtpZihlLmNsYXNzIT10LmNsYXNzKXtsZXQgYT1lLmNsYXNzP2UuY2xhc3Muc3BsaXQoIiAiKS5maWx0ZXIoQm9vbGVhbik6W10scj10LmNsYXNzP3QuY2xhc3Muc3BsaXQoIiAiKS5maWx0ZXIoQm9vbGVhbik6W107Zm9yKGxldCBuPTA7bjxhLmxlbmd0aDtuKyspci5pbmRleE9mKGFbbl0pPT0tMSYmcy5jbGFzc0xpc3QucmVtb3ZlKGFbbl0pO2ZvcihsZXQgbj0wO248ci5sZW5ndGg7bisrKWEuaW5kZXhPZihyW25dKT09LTEmJnMuY2xhc3NMaXN0LmFkZChyW25dKTtzLmNsYXNzTGlzdC5sZW5ndGg9PTAmJnMucmVtb3ZlQXR0cmlidXRlKCJjbGFzcyIpfWlmKGUuc3R5bGUhPXQuc3R5bGUpe2lmKGUuc3R5bGUpe2xldCBhPS9ccyooW1x3XC1ceGExLVx1ZmZmZl0rKVxzKjooPzoiKD86XFwufFteIl0pKiJ8Jyg/OlxcLnxbXiddKSonfFwoLio/XCl8W147XSkqL2cscjtmb3IoO3I9YS5leGVjKGUuc3R5bGUpOylzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHJbMV0pfXQuc3R5bGUmJihzLnN0eWxlLmNzc1RleHQrPXQuc3R5bGUpfX1mdW5jdGlvbiBpcGEocyxlLHQpe3JldHVybiBzcGEocyxzLGFnLFJ0dChlLHQscy5ub2RlVHlwZSE9MSkpfWZ1bmN0aW9uIFpuZShzLGUpe2lmKHMubGVuZ3RoIT1lLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IHQ9MDt0PHMubGVuZ3RoO3QrKylpZighc1t0XS50eXBlLmVxKGVbdF0udHlwZSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gcnBhKHMpe2xldCBlPXMubmV4dFNpYmxpbmc7cmV0dXJuIHMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzKSxlfWZ1bmN0aW9uIHRLYShzLGUpe2xldCB0PWUsYT10LmNoaWxkcmVuLmxlbmd0aCxyPXMuY2hpbGRDb3VudCxuPW5ldyBNYXAsbz1bXTtlOmZvcig7cj4wOyl7bGV0IGw7Zm9yKDs7KWlmKGEpe2xldCBkPXQuY2hpbGRyZW5bYS0xXTtpZihkIGluc3RhbmNlb2YgJHYpdD1kLGE9ZC5jaGlsZHJlbi5sZW5ndGg7ZWxzZXtsPWQsYS0tO2JyZWFrfX1lbHNle2lmKHQ9PWUpYnJlYWsgZTthPXQucGFyZW50LmNoaWxkcmVuLmluZGV4T2YodCksdD10LnBhcmVudH1sZXQgcD1sLm5vZGU7aWYocCl7aWYocCE9cy5jaGlsZChyLTEpKWJyZWFrOy0tcixuLnNldChsLHIpLG8ucHVzaChsKX19cmV0dXJue2luZGV4OnIsbWF0Y2hlZDpuLG1hdGNoZXM6by5yZXZlcnNlKCl9fWZ1bmN0aW9uIGFLYShzLGUpe3JldHVybiBzLnR5cGUuc2lkZS1lLnR5cGUuc2lkZX1mdW5jdGlvbiBzS2EocyxlLHQsYSl7bGV0IHI9ZS5sb2NhbHMocyksbj0wO2lmKHIubGVuZ3RoPT0wKXtmb3IobGV0IGQ9MDtkPHMuY2hpbGRDb3VudDtkKyspe2xldCB1PXMuY2hpbGQoZCk7YSh1LHIsZS5mb3JDaGlsZChuLHUpLGQpLG4rPXUubm9kZVNpemV9cmV0dXJufWxldCBvPTAsbD1bXSxwPW51bGw7Zm9yKGxldCBkPTA7Oyl7bGV0IHUsYztmb3IoO288ci5sZW5ndGgmJnJbb10udG89PW47KXtsZXQgZj1yW28rK107Zi53aWRnZXQmJih1PyhjfHwoYz1bdV0pKS5wdXNoKGYpOnU9Zil9aWYodSlpZihjKXtjLnNvcnQoYUthKTtmb3IobGV0IGY9MDtmPGMubGVuZ3RoO2YrKyl0KGNbZl0sZCwhIXApfWVsc2UgdCh1LGQsISFwKTtsZXQgYix2O2lmKHApdj0tMSxiPXAscD1udWxsO2Vsc2UgaWYoZDxzLmNoaWxkQ291bnQpdj1kLGI9cy5jaGlsZChkKyspO2Vsc2UgYnJlYWs7Zm9yKGxldCBmPTA7ZjxsLmxlbmd0aDtmKyspbFtmXS50bzw9biYmbC5zcGxpY2UoZi0tLDEpO2Zvcig7bzxyLmxlbmd0aCYmcltvXS5mcm9tPD1uJiZyW29dLnRvPm47KWwucHVzaChyW28rK10pO2xldCB4PW4rYi5ub2RlU2l6ZTtpZihiLmlzVGV4dCl7bGV0IGY9eDtvPHIubGVuZ3RoJiZyW29dLmZyb208ZiYmKGY9cltvXS5mcm9tKTtmb3IobGV0IHk9MDt5PGwubGVuZ3RoO3krKylsW3ldLnRvPGYmJihmPWxbeV0udG8pO2Y8eCYmKHA9Yi5jdXQoZi1uKSxiPWIuY3V0KDAsZi1uKSx4PWYsdj0tMSl9ZWxzZSBmb3IoO288ci5sZW5ndGgmJnJbb10udG88eDspbysrO2xldCBtPWIuaXNJbmxpbmUmJiFiLmlzTGVhZj9sLmZpbHRlcihmPT4hZi5pbmxpbmUpOmwuc2xpY2UoKTthKGIsbSxlLmZvckNoaWxkKG4sYiksdiksbj14fX1mdW5jdGlvbiBpS2Eocyl7aWYocy5ub2RlTmFtZT09IlVMInx8cy5ub2RlTmFtZT09Ik9MIil7bGV0IGU9cy5zdHlsZS5jc3NUZXh0O3Muc3R5bGUuY3NzVGV4dD1lKyI7IGxpc3Qtc3R5bGU6IHNxdWFyZSAhaW1wb3J0YW50Iix3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShzKS5saXN0U3R5bGUscy5zdHlsZS5jc3NUZXh0PWV9fWZ1bmN0aW9uIHJLYShzLGUsdCxhKXtmb3IobGV0IHI9MCxuPTA7cjxzLmNoaWxkQ291bnQmJm48PWE7KXtsZXQgbz1zLmNoaWxkKHIrKyksbD1uO2lmKG4rPW8ubm9kZVNpemUsIW8uaXNUZXh0KWNvbnRpbnVlO2xldCBwPW8udGV4dDtmb3IoO3I8cy5jaGlsZENvdW50Oyl7bGV0IGQ9cy5jaGlsZChyKyspO2lmKG4rPWQubm9kZVNpemUsIWQuaXNUZXh0KWJyZWFrO3ArPWQudGV4dH1pZihuPj10KXtpZihuPj1hJiZwLnNsaWNlKGEtZS5sZW5ndGgtbCxhLWwpPT1lKXJldHVybiBhLWUubGVuZ3RoO2xldCBkPWw8YT9wLmxhc3RJbmRleE9mKGUsYS1sLTEpOi0xO2lmKGQ+PTAmJmQrZS5sZW5ndGgrbD49dClyZXR1cm4gbCtkO2lmKHQ9PWEmJnAubGVuZ3RoPj1hK2UubGVuZ3RoLWwmJnAuc2xpY2UoYS1sLGEtbCtlLmxlbmd0aCk9PWUpcmV0dXJuIGF9fXJldHVybi0xfWZ1bmN0aW9uIEZ0dChzLGUsdCxhLHIpe2xldCBuPVtdO2ZvcihsZXQgbz0wLGw9MDtvPHMubGVuZ3RoO28rKyl7bGV0IHA9c1tvXSxkPWwsdT1sKz1wLnNpemU7ZD49dHx8dTw9ZT9uLnB1c2gocCk6KGQ8ZSYmbi5wdXNoKHAuc2xpY2UoMCxlLWQsYSkpLHImJihuLnB1c2gocikscj12b2lkIDApLHU+dCYmbi5wdXNoKHAuc2xpY2UodC1kLHAuc2l6ZSxhKSkpfXJldHVybiBufWZ1bmN0aW9uIEJ0dChzLGU9bnVsbCl7bGV0IHQ9cy5kb21TZWxlY3Rpb25SYW5nZSgpLGE9cy5zdGF0ZS5kb2M7aWYoIXQuZm9jdXNOb2RlKXJldHVybiBudWxsO2xldCByPXMuZG9jVmlldy5uZWFyZXN0RGVzYyh0LmZvY3VzTm9kZSksbj1yJiZyLnNpemU9PTAsbz1zLmRvY1ZpZXcucG9zRnJvbURPTSh0LmZvY3VzTm9kZSx0LmZvY3VzT2Zmc2V0LDEpO2lmKG88MClyZXR1cm4gbnVsbDtsZXQgbD1hLnJlc29sdmUobykscCxkO2lmKFduZSh0KSl7Zm9yKHA9bztyJiYhci5ub2RlOylyPXIucGFyZW50O2xldCBjPXIubm9kZTtpZihyJiZjLmlzQXRvbSYmRnQuaXNTZWxlY3RhYmxlKGMpJiZyLnBhcmVudCYmIShjLmlzSW5saW5lJiZBR2EodC5mb2N1c05vZGUsdC5mb2N1c09mZnNldCxyLmRvbSkpKXtsZXQgYj1yLnBvc0JlZm9yZTtkPW5ldyBGdChvPT1iP2w6YS5yZXNvbHZlKGIpKX19ZWxzZXtpZih0IGluc3RhbmNlb2Ygcy5kb20ub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5TZWxlY3Rpb24mJnQucmFuZ2VDb3VudD4xKXtsZXQgYz1vLGI9bztmb3IobGV0IHY9MDt2PHQucmFuZ2VDb3VudDt2Kyspe2xldCB4PXQuZ2V0UmFuZ2VBdCh2KTtjPU1hdGgubWluKGMscy5kb2NWaWV3LnBvc0Zyb21ET00oeC5zdGFydENvbnRhaW5lcix4LnN0YXJ0T2Zmc2V0LDEpKSxiPU1hdGgubWF4KGIscy5kb2NWaWV3LnBvc0Zyb21ET00oeC5lbmRDb250YWluZXIseC5lbmRPZmZzZXQsLTEpKX1pZihjPDApcmV0dXJuIG51bGw7W3Asb109Yj09cy5zdGF0ZS5zZWxlY3Rpb24uYW5jaG9yP1tiLGNdOltjLGJdLGw9YS5yZXNvbHZlKG8pfWVsc2UgcD1zLmRvY1ZpZXcucG9zRnJvbURPTSh0LmFuY2hvck5vZGUsdC5hbmNob3JPZmZzZXQsMSk7aWYocDwwKXJldHVybiBudWxsfWxldCB1PWEucmVzb2x2ZShwKTtpZighZCl7bGV0IGM9ZT09InBvaW50ZXIifHxzLnN0YXRlLnNlbGVjdGlvbi5oZWFkPGwucG9zJiYhbj8xOi0xO2Q9cXR0KHMsdSxsLGMpfXJldHVybiBkfWZ1bmN0aW9uIG9wYShzKXtyZXR1cm4gcy5lZGl0YWJsZT9zLmhhc0ZvY3VzKCk6aHBhKHMpJiZkb2N1bWVudC5hY3RpdmVFbGVtZW50JiZkb2N1bWVudC5hY3RpdmVFbGVtZW50LmNvbnRhaW5zKHMuZG9tKX1mdW5jdGlvbiBjdShzLGU9ITEpe2xldCB0PXMuc3RhdGUuc2VsZWN0aW9uO2lmKGRwYShzLHQpLCEhb3BhKHMpKXtpZighZSYmcy5pbnB1dC5tb3VzZURvd24mJnMuaW5wdXQubW91c2VEb3duLmFsbG93RGVmYXVsdCYmJG8pe2xldCBhPXMuZG9tU2VsZWN0aW9uUmFuZ2UoKSxyPXMuZG9tT2JzZXJ2ZXIuY3VycmVudFNlbGVjdGlvbjtpZihhLmFuY2hvck5vZGUmJnIuYW5jaG9yTm9kZSYmUTgoYS5hbmNob3JOb2RlLGEuYW5jaG9yT2Zmc2V0LHIuYW5jaG9yTm9kZSxyLmFuY2hvck9mZnNldCkpe3MuaW5wdXQubW91c2VEb3duLmRlbGF5ZWRTZWxlY3Rpb25TeW5jPSEwLHMuZG9tT2JzZXJ2ZXIuc2V0Q3VyU2VsZWN0aW9uKCk7cmV0dXJufX1pZihzLmRvbU9ic2VydmVyLmRpc2Nvbm5lY3RTZWxlY3Rpb24oKSxzLmN1cnNvcldyYXBwZXIpbkthKHMpO2Vsc2V7bGV0e2FuY2hvcjphLGhlYWQ6cn09dCxuLG87bnBhJiYhKHQgaW5zdGFuY2VvZiBKdCkmJih0LiRmcm9tLnBhcmVudC5pbmxpbmVDb250ZW50fHwobj1scGEocyx0LmZyb20pKSwhdC5lbXB0eSYmIXQuJGZyb20ucGFyZW50LmlubGluZUNvbnRlbnQmJihvPWxwYShzLHQudG8pKSkscy5kb2NWaWV3LnNldFNlbGVjdGlvbihhLHIscyxlKSxucGEmJihuJiZjcGEobiksbyYmY3BhKG8pKSx0LnZpc2libGU/cy5kb20uY2xhc3NMaXN0LnJlbW92ZSgiUHJvc2VNaXJyb3ItaGlkZXNlbGVjdGlvbiIpOihzLmRvbS5jbGFzc0xpc3QuYWRkKCJQcm9zZU1pcnJvci1oaWRlc2VsZWN0aW9uIiksIm9uc2VsZWN0aW9uY2hhbmdlImluIGRvY3VtZW50JiZvS2EocykpfXMuZG9tT2JzZXJ2ZXIuc2V0Q3VyU2VsZWN0aW9uKCkscy5kb21PYnNlcnZlci5jb25uZWN0U2VsZWN0aW9uKCl9fWZ1bmN0aW9uIGxwYShzLGUpe2xldHtub2RlOnQsb2Zmc2V0OmF9PXMuZG9jVmlldy5kb21Gcm9tUG9zKGUsMCkscj1hPHQuY2hpbGROb2Rlcy5sZW5ndGg/dC5jaGlsZE5vZGVzW2FdOm51bGwsbj1hP3QuY2hpbGROb2Rlc1thLTFdOm51bGw7aWYobG4mJnImJnIuY29udGVudEVkaXRhYmxlPT0iZmFsc2UiKXJldHVybiBIdHQocik7aWYoKCFyfHxyLmNvbnRlbnRFZGl0YWJsZT09ImZhbHNlIikmJighbnx8bi5jb250ZW50RWRpdGFibGU9PSJmYWxzZSIpKXtpZihyKXJldHVybiBIdHQocik7aWYobilyZXR1cm4gSHR0KG4pfX1mdW5jdGlvbiBIdHQocyl7cmV0dXJuIHMuY29udGVudEVkaXRhYmxlPSJ0cnVlIixsbiYmcy5kcmFnZ2FibGUmJihzLmRyYWdnYWJsZT0hMSxzLndhc0RyYWdnYWJsZT0hMCksc31mdW5jdGlvbiBjcGEocyl7cy5jb250ZW50RWRpdGFibGU9ImZhbHNlIixzLndhc0RyYWdnYWJsZSYmKHMuZHJhZ2dhYmxlPSEwLHMud2FzRHJhZ2dhYmxlPW51bGwpfWZ1bmN0aW9uIG9LYShzKXtsZXQgZT1zLmRvbS5vd25lckRvY3VtZW50O2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2VsZWN0aW9uY2hhbmdlIixzLmlucHV0LmhpZGVTZWxlY3Rpb25HdWFyZCk7bGV0IHQ9cy5kb21TZWxlY3Rpb25SYW5nZSgpLGE9dC5hbmNob3JOb2RlLHI9dC5hbmNob3JPZmZzZXQ7ZS5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3Rpb25jaGFuZ2UiLHMuaW5wdXQuaGlkZVNlbGVjdGlvbkd1YXJkPSgpPT57KHQuYW5jaG9yTm9kZSE9YXx8dC5hbmNob3JPZmZzZXQhPXIpJiYoZS5yZW1vdmVFdmVudExpc3RlbmVyKCJzZWxlY3Rpb25jaGFuZ2UiLHMuaW5wdXQuaGlkZVNlbGVjdGlvbkd1YXJkKSxzZXRUaW1lb3V0KCgpPT57KCFvcGEocyl8fHMuc3RhdGUuc2VsZWN0aW9uLnZpc2libGUpJiZzLmRvbS5jbGFzc0xpc3QucmVtb3ZlKCJQcm9zZU1pcnJvci1oaWRlc2VsZWN0aW9uIil9LDIwKSl9KX1mdW5jdGlvbiBuS2Eocyl7bGV0IGU9cy5kb21TZWxlY3Rpb24oKTtpZighZSlyZXR1cm47bGV0IHQ9cy5jdXJzb3JXcmFwcGVyLmRvbSxhPXQubm9kZU5hbWU9PSJJTUciO2E/ZS5jb2xsYXBzZSh0LnBhcmVudE5vZGUsVG8odCkrMSk6ZS5jb2xsYXBzZSh0LDApLCFhJiYhcy5zdGF0ZS5zZWxlY3Rpb24udmlzaWJsZSYmQ2wmJlRoPD0xMSYmKHQuZGlzYWJsZWQ9ITAsdC5kaXNhYmxlZD0hMSl9ZnVuY3Rpb24gZHBhKHMsZSl7aWYoZSBpbnN0YW5jZW9mIEZ0KXtsZXQgdD1zLmRvY1ZpZXcuZGVzY0F0KGUuZnJvbSk7dCE9cy5sYXN0U2VsZWN0ZWRWaWV3RGVzYyYmKHVwYShzKSx0JiZ0LnNlbGVjdE5vZGUoKSxzLmxhc3RTZWxlY3RlZFZpZXdEZXNjPXQpfWVsc2UgdXBhKHMpfWZ1bmN0aW9uIHVwYShzKXtzLmxhc3RTZWxlY3RlZFZpZXdEZXNjJiYocy5sYXN0U2VsZWN0ZWRWaWV3RGVzYy5wYXJlbnQmJnMubGFzdFNlbGVjdGVkVmlld0Rlc2MuZGVzZWxlY3ROb2RlKCkscy5sYXN0U2VsZWN0ZWRWaWV3RGVzYz12b2lkIDApfWZ1bmN0aW9uIHF0dChzLGUsdCxhKXtyZXR1cm4gcy5zb21lUHJvcCgiY3JlYXRlU2VsZWN0aW9uQmV0d2VlbiIscj0+cihzLGUsdCkpfHxKdC5iZXR3ZWVuKGUsdCxhKX1mdW5jdGlvbiBwcGEocyl7cmV0dXJuIHMuZWRpdGFibGUmJiFzLmhhc0ZvY3VzKCk/ITE6aHBhKHMpfWZ1bmN0aW9uIGhwYShzKXtsZXQgZT1zLmRvbVNlbGVjdGlvblJhbmdlKCk7aWYoIWUuYW5jaG9yTm9kZSlyZXR1cm4hMTt0cnl7cmV0dXJuIHMuZG9tLmNvbnRhaW5zKGUuYW5jaG9yTm9kZS5ub2RlVHlwZT09Mz9lLmFuY2hvck5vZGUucGFyZW50Tm9kZTplLmFuY2hvck5vZGUpJiYocy5lZGl0YWJsZXx8cy5kb20uY29udGFpbnMoZS5mb2N1c05vZGUubm9kZVR5cGU9PTM/ZS5mb2N1c05vZGUucGFyZW50Tm9kZTplLmZvY3VzTm9kZSkpfWNhdGNoe3JldHVybiExfX1mdW5jdGlvbiBsS2Eocyl7bGV0IGU9cy5kb2NWaWV3LmRvbUZyb21Qb3Mocy5zdGF0ZS5zZWxlY3Rpb24uYW5jaG9yLDApLHQ9cy5kb21TZWxlY3Rpb25SYW5nZSgpO3JldHVybiBROChlLm5vZGUsZS5vZmZzZXQsdC5hbmNob3JOb2RlLHQuYW5jaG9yT2Zmc2V0KX1mdW5jdGlvbiBqdHQocyxlKXtsZXR7JGFuY2hvcjp0LCRoZWFkOmF9PXMuc2VsZWN0aW9uLHI9ZT4wP3QubWF4KGEpOnQubWluKGEpLG49ci5wYXJlbnQuaW5saW5lQ29udGVudD9yLmRlcHRoP3MuZG9jLnJlc29sdmUoZT4wP3IuYWZ0ZXIoKTpyLmJlZm9yZSgpKTpudWxsOnI7cmV0dXJuIG4mJlF0LmZpbmRGcm9tKG4sZSl9ZnVuY3Rpb24gTGgocyxlKXtyZXR1cm4gcy5kaXNwYXRjaChzLnN0YXRlLnRyLnNldFNlbGVjdGlvbihlKS5zY3JvbGxJbnRvVmlldygpKSwhMH1mdW5jdGlvbiBmcGEocyxlLHQpe2xldCBhPXMuc3RhdGUuc2VsZWN0aW9uO2lmKGEgaW5zdGFuY2VvZiBKdClpZih0LmluZGV4T2YoInMiKT4tMSl7bGV0eyRoZWFkOnJ9PWEsbj1yLnRleHRPZmZzZXQ/bnVsbDplPDA/ci5ub2RlQmVmb3JlOnIubm9kZUFmdGVyO2lmKCFufHxuLmlzVGV4dHx8IW4uaXNMZWFmKXJldHVybiExO2xldCBvPXMuc3RhdGUuZG9jLnJlc29sdmUoci5wb3Mrbi5ub2RlU2l6ZSooZTwwPy0xOjEpKTtyZXR1cm4gTGgocyxuZXcgSnQoYS4kYW5jaG9yLG8pKX1lbHNlIGlmKGEuZW1wdHkpe2lmKHMuZW5kT2ZUZXh0YmxvY2soZT4wPyJmb3J3YXJkIjoiYmFja3dhcmQiKSl7bGV0IHI9anR0KHMuc3RhdGUsZSk7cmV0dXJuIHImJnIgaW5zdGFuY2VvZiBGdD9MaChzLHIpOiExfWVsc2UgaWYoIShCYyYmdC5pbmRleE9mKCJtIik+LTEpKXtsZXQgcj1hLiRoZWFkLG49ci50ZXh0T2Zmc2V0P251bGw6ZTwwP3Iubm9kZUJlZm9yZTpyLm5vZGVBZnRlcixvO2lmKCFufHxuLmlzVGV4dClyZXR1cm4hMTtsZXQgbD1lPDA/ci5wb3Mtbi5ub2RlU2l6ZTpyLnBvcztyZXR1cm4gbi5pc0F0b218fChvPXMuZG9jVmlldy5kZXNjQXQobCkpJiYhby5jb250ZW50RE9NP0Z0LmlzU2VsZWN0YWJsZShuKT9MaChzLG5ldyBGdChlPDA/cy5zdGF0ZS5kb2MucmVzb2x2ZShyLnBvcy1uLm5vZGVTaXplKTpyKSk6WVo/TGgocyxuZXcgSnQocy5zdGF0ZS5kb2MucmVzb2x2ZShlPDA/bDpsK24ubm9kZVNpemUpKSk6ITE6ITF9fWVsc2UgcmV0dXJuITE7ZWxzZXtpZihhIGluc3RhbmNlb2YgRnQmJmEubm9kZS5pc0lubGluZSlyZXR1cm4gTGgocyxuZXcgSnQoZT4wP2EuJHRvOmEuJGZyb20pKTt7bGV0IHI9anR0KHMuc3RhdGUsZSk7cmV0dXJuIHI/TGgocyxyKTohMX19fWZ1bmN0aW9uIFhuZShzKXtyZXR1cm4gcy5ub2RlVHlwZT09Mz9zLm5vZGVWYWx1ZS5sZW5ndGg6cy5jaGlsZE5vZGVzLmxlbmd0aH1mdW5jdGlvbiBRWihzLGUpe2xldCB0PXMucG1WaWV3RGVzYztyZXR1cm4gdCYmdC5zaXplPT0wJiYoZTwwfHxzLm5leHRTaWJsaW5nfHxzLm5vZGVOYW1lIT0iQlIiKX1mdW5jdGlvbiBEdihzLGUpe3JldHVybiBlPDA/Y0thKHMpOmRLYShzKX1mdW5jdGlvbiBjS2Eocyl7bGV0IGU9cy5kb21TZWxlY3Rpb25SYW5nZSgpLHQ9ZS5mb2N1c05vZGUsYT1lLmZvY3VzT2Zmc2V0O2lmKCF0KXJldHVybjtsZXQgcixuLG89ITE7Zm9yKEZjJiZ0Lm5vZGVUeXBlPT0xJiZhPFhuZSh0KSYmUVoodC5jaGlsZE5vZGVzW2FdLC0xKSYmKG89ITApOzspaWYoYT4wKXtpZih0Lm5vZGVUeXBlIT0xKWJyZWFrO3tsZXQgbD10LmNoaWxkTm9kZXNbYS0xXTtpZihRWihsLC0xKSlyPXQsbj0tLWE7ZWxzZSBpZihsLm5vZGVUeXBlPT0zKXQ9bCxhPXQubm9kZVZhbHVlLmxlbmd0aDtlbHNlIGJyZWFrfX1lbHNle2lmKG1wYSh0KSlicmVhazt7bGV0IGw9dC5wcmV2aW91c1NpYmxpbmc7Zm9yKDtsJiZRWihsLC0xKTspcj10LnBhcmVudE5vZGUsbj1UbyhsKSxsPWwucHJldmlvdXNTaWJsaW5nO2lmKGwpdD1sLGE9WG5lKHQpO2Vsc2V7aWYodD10LnBhcmVudE5vZGUsdD09cy5kb20pYnJlYWs7YT0wfX19bz9WdHQocyx0LGEpOnImJlZ0dChzLHIsbil9ZnVuY3Rpb24gZEthKHMpe2xldCBlPXMuZG9tU2VsZWN0aW9uUmFuZ2UoKSx0PWUuZm9jdXNOb2RlLGE9ZS5mb2N1c09mZnNldDtpZighdClyZXR1cm47bGV0IHI9WG5lKHQpLG4sbztmb3IoOzspaWYoYTxyKXtpZih0Lm5vZGVUeXBlIT0xKWJyZWFrO2xldCBsPXQuY2hpbGROb2Rlc1thXTtpZihRWihsLDEpKW49dCxvPSsrYTtlbHNlIGJyZWFrfWVsc2V7aWYobXBhKHQpKWJyZWFrO3tsZXQgbD10Lm5leHRTaWJsaW5nO2Zvcig7bCYmUVoobCwxKTspbj1sLnBhcmVudE5vZGUsbz1UbyhsKSsxLGw9bC5uZXh0U2libGluZztpZihsKXQ9bCxhPTAscj1YbmUodCk7ZWxzZXtpZih0PXQucGFyZW50Tm9kZSx0PT1zLmRvbSlicmVhazthPXI9MH19fW4mJlZ0dChzLG4sbyl9ZnVuY3Rpb24gbXBhKHMpe2xldCBlPXMucG1WaWV3RGVzYztyZXR1cm4gZSYmZS5ub2RlJiZlLm5vZGUuaXNCbG9ja31mdW5jdGlvbiB1S2EocyxlKXtmb3IoO3MmJmU9PXMuY2hpbGROb2Rlcy5sZW5ndGgmJiFLWihzKTspZT1UbyhzKSsxLHM9cy5wYXJlbnROb2RlO2Zvcig7cyYmZTxzLmNoaWxkTm9kZXMubGVuZ3RoOyl7bGV0IHQ9cy5jaGlsZE5vZGVzW2VdO2lmKHQubm9kZVR5cGU9PTMpcmV0dXJuIHQ7aWYodC5ub2RlVHlwZT09MSYmdC5jb250ZW50RWRpdGFibGU9PSJmYWxzZSIpYnJlYWs7cz10LGU9MH19ZnVuY3Rpb24gcEthKHMsZSl7Zm9yKDtzJiYhZSYmIUtaKHMpOyllPVRvKHMpLHM9cy5wYXJlbnROb2RlO2Zvcig7cyYmZTspe2xldCB0PXMuY2hpbGROb2Rlc1tlLTFdO2lmKHQubm9kZVR5cGU9PTMpcmV0dXJuIHQ7aWYodC5ub2RlVHlwZT09MSYmdC5jb250ZW50RWRpdGFibGU9PSJmYWxzZSIpYnJlYWs7cz10LGU9cy5jaGlsZE5vZGVzLmxlbmd0aH19ZnVuY3Rpb24gVnR0KHMsZSx0KXtpZihlLm5vZGVUeXBlIT0zKXtsZXQgbixvOyhvPXVLYShlLHQpKT8oZT1vLHQ9MCk6KG49cEthKGUsdCkpJiYoZT1uLHQ9bi5ub2RlVmFsdWUubGVuZ3RoKX1sZXQgYT1zLmRvbVNlbGVjdGlvbigpO2lmKCFhKXJldHVybjtpZihXbmUoYSkpe2xldCBuPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7bi5zZXRFbmQoZSx0KSxuLnNldFN0YXJ0KGUsdCksYS5yZW1vdmVBbGxSYW5nZXMoKSxhLmFkZFJhbmdlKG4pfWVsc2UgYS5leHRlbmQmJmEuZXh0ZW5kKGUsdCk7cy5kb21PYnNlcnZlci5zZXRDdXJTZWxlY3Rpb24oKTtsZXR7c3RhdGU6cn09cztzZXRUaW1lb3V0KCgpPT57cy5zdGF0ZT09ciYmY3Uocyl9LDUwKX1mdW5jdGlvbiBncGEocyxlKXtsZXQgdD1zLnN0YXRlLmRvYy5yZXNvbHZlKGUpO2lmKCEoJG98fHF1YSkmJnQucGFyZW50LmlubGluZUNvbnRlbnQpe2xldCByPXMuY29vcmRzQXRQb3MoZSk7aWYoZT50LnN0YXJ0KCkpe2xldCBuPXMuY29vcmRzQXRQb3MoZS0xKSxvPShuLnRvcCtuLmJvdHRvbSkvMjtpZihvPnIudG9wJiZvPHIuYm90dG9tJiZNYXRoLmFicyhuLmxlZnQtci5sZWZ0KT4xKXJldHVybiBuLmxlZnQ8ci5sZWZ0PyJsdHIiOiJydGwifWlmKGU8dC5lbmQoKSl7bGV0IG49cy5jb29yZHNBdFBvcyhlKzEpLG89KG4udG9wK24uYm90dG9tKS8yO2lmKG8+ci50b3AmJm88ci5ib3R0b20mJk1hdGguYWJzKG4ubGVmdC1yLmxlZnQpPjEpcmV0dXJuIG4ubGVmdD5yLmxlZnQ/Imx0ciI6InJ0bCJ9fXJldHVybiBnZXRDb21wdXRlZFN0eWxlKHMuZG9tKS5kaXJlY3Rpb249PSJydGwiPyJydGwiOiJsdHIifWZ1bmN0aW9uIGJwYShzLGUsdCl7bGV0IGE9cy5zdGF0ZS5zZWxlY3Rpb247aWYoYSBpbnN0YW5jZW9mIEp0JiYhYS5lbXB0eXx8dC5pbmRleE9mKCJzIik+LTF8fEJjJiZ0LmluZGV4T2YoIm0iKT4tMSlyZXR1cm4hMTtsZXR7JGZyb206ciwkdG86bn09YTtpZighci5wYXJlbnQuaW5saW5lQ29udGVudHx8cy5lbmRPZlRleHRibG9jayhlPDA/InVwIjoiZG93biIpKXtsZXQgbz1qdHQocy5zdGF0ZSxlKTtpZihvJiZvIGluc3RhbmNlb2YgRnQpcmV0dXJuIExoKHMsbyl9aWYoIXIucGFyZW50LmlubGluZUNvbnRlbnQpe2xldCBvPWU8MD9yOm4sbD1hIGluc3RhbmNlb2Ygbm4/UXQubmVhcihvLGUpOlF0LmZpbmRGcm9tKG8sZSk7cmV0dXJuIGw/TGgocyxsKTohMX1yZXR1cm4hMX1mdW5jdGlvbiB2cGEocyxlKXtpZighKHMuc3RhdGUuc2VsZWN0aW9uIGluc3RhbmNlb2YgSnQpKXJldHVybiEwO2xldHskaGVhZDp0LCRhbmNob3I6YSxlbXB0eTpyfT1zLnN0YXRlLnNlbGVjdGlvbjtpZighdC5zYW1lUGFyZW50KGEpKXJldHVybiEwO2lmKCFyKXJldHVybiExO2lmKHMuZW5kT2ZUZXh0YmxvY2soZT4wPyJmb3J3YXJkIjoiYmFja3dhcmQiKSlyZXR1cm4hMDtsZXQgbj0hdC50ZXh0T2Zmc2V0JiYoZTwwP3Qubm9kZUJlZm9yZTp0Lm5vZGVBZnRlcik7aWYobiYmIW4uaXNUZXh0KXtsZXQgbz1zLnN0YXRlLnRyO3JldHVybiBlPDA/by5kZWxldGUodC5wb3Mtbi5ub2RlU2l6ZSx0LnBvcyk6by5kZWxldGUodC5wb3MsdC5wb3Mrbi5ub2RlU2l6ZSkscy5kaXNwYXRjaChvKSwhMH1yZXR1cm4hMX1mdW5jdGlvbiB4cGEocyxlLHQpe3MuZG9tT2JzZXJ2ZXIuc3RvcCgpLGUuY29udGVudEVkaXRhYmxlPXQscy5kb21PYnNlcnZlci5zdGFydCgpfWZ1bmN0aW9uIGhLYShzKXtpZighbG58fHMuc3RhdGUuc2VsZWN0aW9uLiRoZWFkLnBhcmVudE9mZnNldD4wKXJldHVybiExO2xldHtmb2N1c05vZGU6ZSxmb2N1c09mZnNldDp0fT1zLmRvbVNlbGVjdGlvblJhbmdlKCk7aWYoZSYmZS5ub2RlVHlwZT09MSYmdD09MCYmZS5maXJzdENoaWxkJiZlLmZpcnN0Q2hpbGQuY29udGVudEVkaXRhYmxlPT0iZmFsc2UiKXtsZXQgYT1lLmZpcnN0Q2hpbGQ7eHBhKHMsYSwidHJ1ZSIpLHNldFRpbWVvdXQoKCk9PnhwYShzLGEsImZhbHNlIiksMjApfXJldHVybiExfWZ1bmN0aW9uIGZLYShzKXtsZXQgZT0iIjtyZXR1cm4gcy5jdHJsS2V5JiYoZSs9ImMiKSxzLm1ldGFLZXkmJihlKz0ibSIpLHMuYWx0S2V5JiYoZSs9ImEiKSxzLnNoaWZ0S2V5JiYoZSs9InMiKSxlfWZ1bmN0aW9uIG1LYShzLGUpe2xldCB0PWUua2V5Q29kZSxhPWZLYShlKTtpZih0PT04fHxCYyYmdD09NzImJmE9PSJjIilyZXR1cm4gdnBhKHMsLTEpfHxEdihzLC0xKTtpZih0PT00NiYmIWUuc2hpZnRLZXl8fEJjJiZ0PT02OCYmYT09ImMiKXJldHVybiB2cGEocywxKXx8RHYocywxKTtpZih0PT0xM3x8dD09MjcpcmV0dXJuITA7aWYodD09Mzd8fEJjJiZ0PT02NiYmYT09ImMiKXtsZXQgcj10PT0zNz9ncGEocyxzLnN0YXRlLnNlbGVjdGlvbi5mcm9tKT09Imx0ciI/LTE6MTotMTtyZXR1cm4gZnBhKHMscixhKXx8RHYocyxyKX1lbHNlIGlmKHQ9PTM5fHxCYyYmdD09NzAmJmE9PSJjIil7bGV0IHI9dD09Mzk/Z3BhKHMscy5zdGF0ZS5zZWxlY3Rpb24uZnJvbSk9PSJsdHIiPzE6LTE6MTtyZXR1cm4gZnBhKHMscixhKXx8RHYocyxyKX1lbHNle2lmKHQ9PTM4fHxCYyYmdD09ODAmJmE9PSJjIilyZXR1cm4gYnBhKHMsLTEsYSl8fER2KHMsLTEpO2lmKHQ9PTQwfHxCYyYmdD09NzgmJmE9PSJjIilyZXR1cm4gaEthKHMpfHxicGEocywxLGEpfHxEdihzLDEpO2lmKGE9PShCYz8ibSI6ImMiKSYmKHQ9PTY2fHx0PT03M3x8dD09ODl8fHQ9PTkwKSlyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBVdHQocyxlKXtzLnNvbWVQcm9wKCJ0cmFuc2Zvcm1Db3BpZWQiLHY9PntlPXYoZSxzKX0pO2xldCB0PVtdLHtjb250ZW50OmEsb3BlblN0YXJ0OnIsb3BlbkVuZDpufT1lO2Zvcig7cj4xJiZuPjEmJmEuY2hpbGRDb3VudD09MSYmYS5maXJzdENoaWxkLmNoaWxkQ291bnQ9PTE7KXtyLS0sbi0tO2xldCB2PWEuZmlyc3RDaGlsZDt0LnB1c2godi50eXBlLm5hbWUsdi5hdHRycyE9di50eXBlLmRlZmF1bHRBdHRycz92LmF0dHJzOm51bGwpLGE9di5jb250ZW50fWxldCBvPXMuc29tZVByb3AoImNsaXBib2FyZFNlcmlhbGl6ZXIiKXx8TGQuZnJvbVNjaGVtYShzLnN0YXRlLnNjaGVtYSksbD16cGEoKSxwPWwuY3JlYXRlRWxlbWVudCgiZGl2Iik7cC5hcHBlbmRDaGlsZChvLnNlcmlhbGl6ZUZyYWdtZW50KGEse2RvY3VtZW50Omx9KSk7bGV0IGQ9cC5maXJzdENoaWxkLHUsYz0wO2Zvcig7ZCYmZC5ub2RlVHlwZT09MSYmKHU9X3BhW2Qubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pOyl7Zm9yKGxldCB2PXUubGVuZ3RoLTE7dj49MDt2LS0pe2xldCB4PWwuY3JlYXRlRWxlbWVudCh1W3ZdKTtmb3IoO3AuZmlyc3RDaGlsZDspeC5hcHBlbmRDaGlsZChwLmZpcnN0Q2hpbGQpO3AuYXBwZW5kQ2hpbGQoeCksYysrfWQ9cC5maXJzdENoaWxkfWQmJmQubm9kZVR5cGU9PTEmJmQuc2V0QXR0cmlidXRlKCJkYXRhLXBtLXNsaWNlIixgJHtyfSAke259JHtjP2AgLSR7Y31gOiIifSAke0pTT04uc3RyaW5naWZ5KHQpfWApO2xldCBiPXMuc29tZVByb3AoImNsaXBib2FyZFRleHRTZXJpYWxpemVyIix2PT52KGUscykpfHxlLmNvbnRlbnQudGV4dEJldHdlZW4oMCxlLmNvbnRlbnQuc2l6ZSxgCgpgKTtyZXR1cm57ZG9tOnAsdGV4dDpiLHNsaWNlOmV9fWZ1bmN0aW9uIFd0dChzLGUsdCxhLHIpe2xldCBuPXIucGFyZW50LnR5cGUuc3BlYy5jb2RlLG8sbDtpZighdCYmIWUpcmV0dXJuIG51bGw7bGV0IHA9ISFlJiYoYXx8bnx8IXQpO2lmKHApe2lmKHMuc29tZVByb3AoInRyYW5zZm9ybVBhc3RlZFRleHQiLGI9PntlPWIoZSxufHxhLHMpfSksbilyZXR1cm4gbD1uZXcgX3QocnQuZnJvbShzLnN0YXRlLnNjaGVtYS50ZXh0KGUucmVwbGFjZSgvXHJcbj8vZyxgCmApKSksMCwwKSxzLnNvbWVQcm9wKCJ0cmFuc2Zvcm1QYXN0ZWQiLGI9PntsPWIobCxzLCEwKX0pLGw7bGV0IGM9cy5zb21lUHJvcCgiY2xpcGJvYXJkVGV4dFBhcnNlciIsYj0+YihlLHIsYSxzKSk7aWYoYylsPWM7ZWxzZXtsZXQgYj1yLm1hcmtzKCkse3NjaGVtYTp2fT1zLnN0YXRlLHg9TGQuZnJvbVNjaGVtYSh2KTtvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGUuc3BsaXQoLyg/OlxyXG4/fFxuKSsvKS5mb3JFYWNoKG09PntsZXQgZj1vLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKSk7bSYmZi5hcHBlbmRDaGlsZCh4LnNlcmlhbGl6ZU5vZGUodi50ZXh0KG0sYikpKX0pfX1lbHNlIHMuc29tZVByb3AoInRyYW5zZm9ybVBhc3RlZEhUTUwiLGM9Pnt0PWModCxzKX0pLG89eEthKHQpLFlaJiZ5S2Eobyk7bGV0IGQ9byYmby5xdWVyeVNlbGVjdG9yKCJbZGF0YS1wbS1zbGljZV0iKSx1PWQmJi9eKFxkKykgKFxkKykoPzogLShcZCspKT8gKC4qKS8uZXhlYyhkLmdldEF0dHJpYnV0ZSgiZGF0YS1wbS1zbGljZSIpfHwiIik7aWYodSYmdVszXSlmb3IobGV0IGM9K3VbM107Yz4wO2MtLSl7bGV0IGI9by5maXJzdENoaWxkO2Zvcig7YiYmYi5ub2RlVHlwZSE9MTspYj1iLm5leHRTaWJsaW5nO2lmKCFiKWJyZWFrO289Yn1pZihsfHwobD0ocy5zb21lUHJvcCgiY2xpcGJvYXJkUGFyc2VyIil8fHMuc29tZVByb3AoImRvbVBhcnNlciIpfHxlMi5mcm9tU2NoZW1hKHMuc3RhdGUuc2NoZW1hKSkucGFyc2VTbGljZShvLHtwcmVzZXJ2ZVdoaXRlc3BhY2U6ISEocHx8dSksY29udGV4dDpyLHJ1bGVGcm9tTm9kZShiKXtyZXR1cm4gYi5ub2RlTmFtZT09IkJSIiYmIWIubmV4dFNpYmxpbmcmJmIucGFyZW50Tm9kZSYmIWdLYS50ZXN0KGIucGFyZW50Tm9kZS5ub2RlTmFtZSk/e2lnbm9yZTohMH06bnVsbH19KSksdSlsPXdLYShTcGEobCwrdVsxXSwrdVsyXSksdVs0XSk7ZWxzZSBpZihsPV90Lm1heE9wZW4oYkthKGwuY29udGVudCxyKSwhMCksbC5vcGVuU3RhcnR8fGwub3BlbkVuZCl7bGV0IGM9MCxiPTA7Zm9yKGxldCB2PWwuY29udGVudC5maXJzdENoaWxkO2M8bC5vcGVuU3RhcnQmJiF2LnR5cGUuc3BlYy5pc29sYXRpbmc7YysrLHY9di5maXJzdENoaWxkKTtmb3IobGV0IHY9bC5jb250ZW50Lmxhc3RDaGlsZDtiPGwub3BlbkVuZCYmIXYudHlwZS5zcGVjLmlzb2xhdGluZztiKyssdj12Lmxhc3RDaGlsZCk7bD1TcGEobCxjLGIpfXJldHVybiBzLnNvbWVQcm9wKCJ0cmFuc2Zvcm1QYXN0ZWQiLGM9PntsPWMobCxzLHApfSksbH1mdW5jdGlvbiBiS2EocyxlKXtpZihzLmNoaWxkQ291bnQ8MilyZXR1cm4gcztmb3IobGV0IHQ9ZS5kZXB0aDt0Pj0wO3QtLSl7bGV0IHI9ZS5ub2RlKHQpLmNvbnRlbnRNYXRjaEF0KGUuaW5kZXgodCkpLG4sbz1bXTtpZihzLmZvckVhY2gobD0+e2lmKCFvKXJldHVybjtsZXQgcD1yLmZpbmRXcmFwcGluZyhsLnR5cGUpLGQ7aWYoIXApcmV0dXJuIG89bnVsbDtpZihkPW8ubGVuZ3RoJiZuLmxlbmd0aCYmd3BhKHAsbixsLG9bby5sZW5ndGgtMV0sMCkpb1tvLmxlbmd0aC0xXT1kO2Vsc2V7by5sZW5ndGgmJihvW28ubGVuZ3RoLTFdPWtwYShvW28ubGVuZ3RoLTFdLG4ubGVuZ3RoKSk7bGV0IHU9eXBhKGwscCk7by5wdXNoKHUpLHI9ci5tYXRjaFR5cGUodS50eXBlKSxuPXB9fSksbylyZXR1cm4gcnQuZnJvbShvKX1yZXR1cm4gc31mdW5jdGlvbiB5cGEocyxlLHQ9MCl7Zm9yKGxldCBhPWUubGVuZ3RoLTE7YT49dDthLS0pcz1lW2FdLmNyZWF0ZShudWxsLHJ0LmZyb20ocykpO3JldHVybiBzfWZ1bmN0aW9uIHdwYShzLGUsdCxhLHIpe2lmKHI8cy5sZW5ndGgmJnI8ZS5sZW5ndGgmJnNbcl09PWVbcl0pe2xldCBuPXdwYShzLGUsdCxhLmxhc3RDaGlsZCxyKzEpO2lmKG4pcmV0dXJuIGEuY29weShhLmNvbnRlbnQucmVwbGFjZUNoaWxkKGEuY2hpbGRDb3VudC0xLG4pKTtpZihhLmNvbnRlbnRNYXRjaEF0KGEuY2hpbGRDb3VudCkubWF0Y2hUeXBlKHI9PXMubGVuZ3RoLTE/dC50eXBlOnNbcisxXSkpcmV0dXJuIGEuY29weShhLmNvbnRlbnQuYXBwZW5kKHJ0LmZyb20oeXBhKHQscyxyKzEpKSkpfX1mdW5jdGlvbiBrcGEocyxlKXtpZihlPT0wKXJldHVybiBzO2xldCB0PXMuY29udGVudC5yZXBsYWNlQ2hpbGQocy5jaGlsZENvdW50LTEsa3BhKHMubGFzdENoaWxkLGUtMSkpLGE9cy5jb250ZW50TWF0Y2hBdChzLmNoaWxkQ291bnQpLmZpbGxCZWZvcmUocnQuZW1wdHksITApO3JldHVybiBzLmNvcHkodC5hcHBlbmQoYSkpfWZ1bmN0aW9uIEd0dChzLGUsdCxhLHIsbil7bGV0IG89ZTwwP3MuZmlyc3RDaGlsZDpzLmxhc3RDaGlsZCxsPW8uY29udGVudDtyZXR1cm4gcy5jaGlsZENvdW50PjEmJihuPTApLHI8YS0xJiYobD1HdHQobCxlLHQsYSxyKzEsbikpLHI+PXQmJihsPWU8MD9vLmNvbnRlbnRNYXRjaEF0KDApLmZpbGxCZWZvcmUobCxuPD1yKS5hcHBlbmQobCk6bC5hcHBlbmQoby5jb250ZW50TWF0Y2hBdChvLmNoaWxkQ291bnQpLmZpbGxCZWZvcmUocnQuZW1wdHksITApKSkscy5yZXBsYWNlQ2hpbGQoZTwwPzA6cy5jaGlsZENvdW50LTEsby5jb3B5KGwpKX1mdW5jdGlvbiBTcGEocyxlLHQpe3JldHVybiBlPHMub3BlblN0YXJ0JiYocz1uZXcgX3QoR3R0KHMuY29udGVudCwtMSxlLHMub3BlblN0YXJ0LDAscy5vcGVuRW5kKSxlLHMub3BlbkVuZCkpLHQ8cy5vcGVuRW5kJiYocz1uZXcgX3QoR3R0KHMuY29udGVudCwxLHQscy5vcGVuRW5kLDAsMCkscy5vcGVuU3RhcnQsdCkpLHN9ZnVuY3Rpb24genBhKCl7cmV0dXJuIE1wYXx8KE1wYT1kb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoInRpdGxlIikpfWZ1bmN0aW9uIHZLYShzKXtsZXQgZT13aW5kb3cudHJ1c3RlZFR5cGVzO3JldHVybiBlPyhLdHR8fChLdHQ9ZS5kZWZhdWx0UG9saWN5fHxlLmNyZWF0ZVBvbGljeSgiUHJvc2VNaXJyb3JDbGlwYm9hcmQiLHtjcmVhdGVIVE1MOmkodD0+dCwiY3JlYXRlSFRNTCIpfSkpLEt0dC5jcmVhdGVIVE1MKHMpKTpzfWZ1bmN0aW9uIHhLYShzKXtsZXQgZT0vXihccyo8bWV0YSBbXj5dKj4pKi8uZXhlYyhzKTtlJiYocz1zLnNsaWNlKGVbMF0ubGVuZ3RoKSk7bGV0IHQ9enBhKCkuY3JlYXRlRWxlbWVudCgiZGl2IiksYT0vPChbYS16XVtePlxzXSspL2kuZXhlYyhzKSxyO2lmKChyPWEmJl9wYVthWzFdLnRvTG93ZXJDYXNlKCldKSYmKHM9ci5tYXAobj0+IjwiK24rIj4iKS5qb2luKCIiKStzK3IubWFwKG49PiI8LyIrbisiPiIpLnJldmVyc2UoKS5qb2luKCIiKSksdC5pbm5lckhUTUw9dkthKHMpLHIpZm9yKGxldCBuPTA7bjxyLmxlbmd0aDtuKyspdD10LnF1ZXJ5U2VsZWN0b3IocltuXSl8fHQ7cmV0dXJuIHR9ZnVuY3Rpb24geUthKHMpe2xldCBlPXMucXVlcnlTZWxlY3RvckFsbCgkbz8ic3Bhbjpub3QoW2NsYXNzXSk6bm90KFtzdHlsZV0pIjoic3Bhbi5BcHBsZS1jb252ZXJ0ZWQtc3BhY2UiKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7bGV0IGE9ZVt0XTthLmNoaWxkTm9kZXMubGVuZ3RoPT0xJiZhLnRleHRDb250ZW50PT0iXHhBMCImJmEucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChzLm93bmVyRG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiAiKSxhKX19ZnVuY3Rpb24gd0thKHMsZSl7aWYoIXMuc2l6ZSlyZXR1cm4gcztsZXQgdD1zLmNvbnRlbnQuZmlyc3RDaGlsZC50eXBlLnNjaGVtYSxhO3RyeXthPUpTT04ucGFyc2UoZSl9Y2F0Y2h7cmV0dXJuIHN9bGV0e2NvbnRlbnQ6cixvcGVuU3RhcnQ6bixvcGVuRW5kOm99PXM7Zm9yKGxldCBsPWEubGVuZ3RoLTI7bD49MDtsLT0yKXtsZXQgcD10Lm5vZGVzW2FbbF1dO2lmKCFwfHxwLmhhc1JlcXVpcmVkQXR0cnMoKSlicmVhaztyPXJ0LmZyb20ocC5jcmVhdGUoYVtsKzFdLHIpKSxuKyssbysrfXJldHVybiBuZXcgX3QocixuLG8pfWZ1bmN0aW9uIFNLYShzKXtmb3IobGV0IGUgaW4gJG4pe2xldCB0PSRuW2VdO3MuZG9tLmFkZEV2ZW50TGlzdGVuZXIoZSxzLmlucHV0LmV2ZW50SGFuZGxlcnNbZV09YT0+e01LYShzLGEpJiYhWHR0KHMsYSkmJihzLmVkaXRhYmxlfHwhKGEudHlwZSBpbiBEbikpJiZ0KHMsYSl9LGtLYVtlXT97cGFzc2l2ZTohMH06dm9pZCAwKX1sbiYmcy5kb20uYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCgpPT5udWxsKSxadHQocyl9ZnVuY3Rpb24gRWgocyxlKXtzLmlucHV0Lmxhc3RTZWxlY3Rpb25PcmlnaW49ZSxzLmlucHV0Lmxhc3RTZWxlY3Rpb25UaW1lPURhdGUubm93KCl9ZnVuY3Rpb24gX0thKHMpe3MuZG9tT2JzZXJ2ZXIuc3RvcCgpO2ZvcihsZXQgZSBpbiBzLmlucHV0LmV2ZW50SGFuZGxlcnMpcy5kb20ucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLHMuaW5wdXQuZXZlbnRIYW5kbGVyc1tlXSk7Y2xlYXJUaW1lb3V0KHMuaW5wdXQuY29tcG9zaW5nVGltZW91dCksY2xlYXJUaW1lb3V0KHMuaW5wdXQubGFzdElPU0VudGVyRmFsbGJhY2tUaW1lb3V0KX1mdW5jdGlvbiBadHQocyl7cy5zb21lUHJvcCgiaGFuZGxlRE9NRXZlbnRzIixlPT57Zm9yKGxldCB0IGluIGUpcy5pbnB1dC5ldmVudEhhbmRsZXJzW3RdfHxzLmRvbS5hZGRFdmVudExpc3RlbmVyKHQscy5pbnB1dC5ldmVudEhhbmRsZXJzW3RdPWE9Plh0dChzLGEpKX0pfWZ1bmN0aW9uIFh0dChzLGUpe3JldHVybiBzLnNvbWVQcm9wKCJoYW5kbGVET01FdmVudHMiLHQ9PntsZXQgYT10W2UudHlwZV07cmV0dXJuIGE/YShzLGUpfHxlLmRlZmF1bHRQcmV2ZW50ZWQ6ITF9KX1mdW5jdGlvbiBNS2EocyxlKXtpZighZS5idWJibGVzKXJldHVybiEwO2lmKGUuZGVmYXVsdFByZXZlbnRlZClyZXR1cm4hMTtmb3IobGV0IHQ9ZS50YXJnZXQ7dCE9cy5kb207dD10LnBhcmVudE5vZGUpaWYoIXR8fHQubm9kZVR5cGU9PTExfHx0LnBtVmlld0Rlc2MmJnQucG1WaWV3RGVzYy5zdG9wRXZlbnQoZSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gekthKHMsZSl7IVh0dChzLGUpJiYkbltlLnR5cGVdJiYocy5lZGl0YWJsZXx8IShlLnR5cGUgaW4gRG4pKSYmJG5bZS50eXBlXShzLGUpfWZ1bmN0aW9uIFFuZShzKXtyZXR1cm57bGVmdDpzLmNsaWVudFgsdG9wOnMuY2xpZW50WX19ZnVuY3Rpb24gQ0thKHMsZSl7bGV0IHQ9ZS54LXMuY2xpZW50WCxhPWUueS1zLmNsaWVudFk7cmV0dXJuIHQqdCthKmE8MTAwfWZ1bmN0aW9uIFF0dChzLGUsdCxhLHIpe2lmKGE9PS0xKXJldHVybiExO2xldCBuPXMuc3RhdGUuZG9jLnJlc29sdmUoYSk7Zm9yKGxldCBvPW4uZGVwdGgrMTtvPjA7by0tKWlmKHMuc29tZVByb3AoZSxsPT5vPm4uZGVwdGg/bChzLHQsbi5ub2RlQWZ0ZXIsbi5iZWZvcmUobyksciwhMCk6bChzLHQsbi5ub2RlKG8pLG4uYmVmb3JlKG8pLHIsITEpKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBMdihzLGUsdCl7aWYocy5mb2N1c2VkfHxzLmZvY3VzKCkscy5zdGF0ZS5zZWxlY3Rpb24uZXEoZSkpcmV0dXJuO2xldCBhPXMuc3RhdGUudHIuc2V0U2VsZWN0aW9uKGUpO3Q9PSJwb2ludGVyIiYmYS5zZXRNZXRhKCJwb2ludGVyIiwhMCkscy5kaXNwYXRjaChhKX1mdW5jdGlvbiBUS2EocyxlKXtpZihlPT0tMSlyZXR1cm4hMTtsZXQgdD1zLnN0YXRlLmRvYy5yZXNvbHZlKGUpLGE9dC5ub2RlQWZ0ZXI7cmV0dXJuIGEmJmEuaXNBdG9tJiZGdC5pc1NlbGVjdGFibGUoYSk/KEx2KHMsbmV3IEZ0KHQpLCJwb2ludGVyIiksITApOiExfWZ1bmN0aW9uICRLYShzLGUpe2lmKGU9PS0xKXJldHVybiExO2xldCB0PXMuc3RhdGUuc2VsZWN0aW9uLGEscjt0IGluc3RhbmNlb2YgRnQmJihhPXQubm9kZSk7bGV0IG49cy5zdGF0ZS5kb2MucmVzb2x2ZShlKTtmb3IobGV0IG89bi5kZXB0aCsxO28+MDtvLS0pe2xldCBsPW8+bi5kZXB0aD9uLm5vZGVBZnRlcjpuLm5vZGUobyk7aWYoRnQuaXNTZWxlY3RhYmxlKGwpKXthJiZ0LiRmcm9tLmRlcHRoPjAmJm8+PXQuJGZyb20uZGVwdGgmJm4uYmVmb3JlKHQuJGZyb20uZGVwdGgrMSk9PXQuJGZyb20ucG9zP3I9bi5iZWZvcmUodC4kZnJvbS5kZXB0aCk6cj1uLmJlZm9yZShvKTticmVha319cmV0dXJuIHIhPW51bGw/KEx2KHMsRnQuY3JlYXRlKHMuc3RhdGUuZG9jLHIpLCJwb2ludGVyIiksITApOiExfWZ1bmN0aW9uIERLYShzLGUsdCxhLHIpe3JldHVybiBRdHQocywiaGFuZGxlQ2xpY2tPbiIsZSx0LGEpfHxzLnNvbWVQcm9wKCJoYW5kbGVDbGljayIsbj0+bihzLGUsYSkpfHwocj8kS2Eocyx0KTpUS2Eocyx0KSl9ZnVuY3Rpb24gTEthKHMsZSx0LGEpe3JldHVybiBRdHQocywiaGFuZGxlRG91YmxlQ2xpY2tPbiIsZSx0LGEpfHxzLnNvbWVQcm9wKCJoYW5kbGVEb3VibGVDbGljayIscj0+cihzLGUsYSkpfWZ1bmN0aW9uIEVLYShzLGUsdCxhKXtyZXR1cm4gUXR0KHMsImhhbmRsZVRyaXBsZUNsaWNrT24iLGUsdCxhKXx8cy5zb21lUHJvcCgiaGFuZGxlVHJpcGxlQ2xpY2siLHI9PnIocyxlLGEpKXx8UEthKHMsdCxhKX1mdW5jdGlvbiBQS2EocyxlLHQpe2lmKHQuYnV0dG9uIT0wKXJldHVybiExO2xldCBhPXMuc3RhdGUuZG9jO2lmKGU9PS0xKXJldHVybiBhLmlubGluZUNvbnRlbnQ/KEx2KHMsSnQuY3JlYXRlKGEsMCxhLmNvbnRlbnQuc2l6ZSksInBvaW50ZXIiKSwhMCk6ITE7bGV0IHI9YS5yZXNvbHZlKGUpO2ZvcihsZXQgbj1yLmRlcHRoKzE7bj4wO24tLSl7bGV0IG89bj5yLmRlcHRoP3Iubm9kZUFmdGVyOnIubm9kZShuKSxsPXIuYmVmb3JlKG4pO2lmKG8uaW5saW5lQ29udGVudClMdihzLEp0LmNyZWF0ZShhLGwrMSxsKzErby5jb250ZW50LnNpemUpLCJwb2ludGVyIik7ZWxzZSBpZihGdC5pc1NlbGVjdGFibGUobykpTHYocyxGdC5jcmVhdGUoYSxsKSwicG9pbnRlciIpO2Vsc2UgY29udGludWU7cmV0dXJuITB9fWZ1bmN0aW9uIEp0dChzKXtyZXR1cm4gSloocyl9ZnVuY3Rpb24gVHBhKHMsZSl7cmV0dXJuIHMuY29tcG9zaW5nPyEwOmxuJiZNYXRoLmFicyhlLnRpbWVTdGFtcC1zLmlucHV0LmNvbXBvc2l0aW9uRW5kZWRBdCk8NTAwPyhzLmlucHV0LmNvbXBvc2l0aW9uRW5kZWRBdD0tMmU4LCEwKTohMX1mdW5jdGlvbiBBS2Eocyl7bGV0e2ZvY3VzTm9kZTplLGZvY3VzT2Zmc2V0OnR9PXMuZG9tU2VsZWN0aW9uUmFuZ2UoKTtpZighZXx8ZS5ub2RlVHlwZSE9MXx8dD49ZS5jaGlsZE5vZGVzLmxlbmd0aClyZXR1cm4hMTtsZXQgYT1lLmNoaWxkTm9kZXNbdF07cmV0dXJuIGEubm9kZVR5cGU9PTEmJmEuY29udGVudEVkaXRhYmxlPT0iZmFsc2UifWZ1bmN0aW9uICRwYShzLGUpe2NsZWFyVGltZW91dChzLmlucHV0LmNvbXBvc2luZ1RpbWVvdXQpLGU+LTEmJihzLmlucHV0LmNvbXBvc2luZ1RpbWVvdXQ9c2V0VGltZW91dCgoKT0+SloocyksZSkpfWZ1bmN0aW9uIERwYShzKXtmb3Iocy5jb21wb3NpbmcmJihzLmlucHV0LmNvbXBvc2luZz0hMSxzLmlucHV0LmNvbXBvc2l0aW9uRW5kZWRBdD1SS2EoKSk7cy5pbnB1dC5jb21wb3NpdGlvbk5vZGVzLmxlbmd0aD4wOylzLmlucHV0LmNvbXBvc2l0aW9uTm9kZXMucG9wKCkubWFya1BhcmVudHNEaXJ0eSgpfWZ1bmN0aW9uIE5LYShzKXtsZXQgZT1zLmRvbVNlbGVjdGlvblJhbmdlKCk7aWYoIWUuZm9jdXNOb2RlKXJldHVybiBudWxsO2xldCB0PVBHYShlLmZvY3VzTm9kZSxlLmZvY3VzT2Zmc2V0KSxhPUlHYShlLmZvY3VzTm9kZSxlLmZvY3VzT2Zmc2V0KTtpZih0JiZhJiZ0IT1hKXtsZXQgcj1hLnBtVmlld0Rlc2Msbj1zLmRvbU9ic2VydmVyLmxhc3RDaGFuZ2VkVGV4dE5vZGU7aWYodD09bnx8YT09bilyZXR1cm4gbjtpZighcnx8IXIuaXNUZXh0KGEubm9kZVZhbHVlKSlyZXR1cm4gYTtpZihzLmlucHV0LmNvbXBvc2l0aW9uTm9kZT09YSl7bGV0IG89dC5wbVZpZXdEZXNjO2lmKCEoIW98fCFvLmlzVGV4dCh0Lm5vZGVWYWx1ZSkpKXJldHVybiBhfX1yZXR1cm4gdHx8YX1mdW5jdGlvbiBSS2EoKXtsZXQgcz1kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKTtyZXR1cm4gcy5pbml0RXZlbnQoImV2ZW50IiwhMCwhMCkscy50aW1lU3RhbXB9ZnVuY3Rpb24gSloocyxlPSExKXtpZighKG51JiZzLmRvbU9ic2VydmVyLmZsdXNoaW5nU29vbj49MCkpe2lmKHMuZG9tT2JzZXJ2ZXIuZm9yY2VGbHVzaCgpLERwYShzKSxlfHxzLmRvY1ZpZXcmJnMuZG9jVmlldy5kaXJ0eSl7bGV0IHQ9QnR0KHMpLGE9cy5zdGF0ZS5zZWxlY3Rpb247cmV0dXJuIHQmJiF0LmVxKGEpP3MuZGlzcGF0Y2gocy5zdGF0ZS50ci5zZXRTZWxlY3Rpb24odCkpOihzLm1hcmtDdXJzb3J8fGUpJiYhYS4kZnJvbS5ub2RlKGEuJGZyb20uc2hhcmVkRGVwdGgoYS50bykpLmlubGluZUNvbnRlbnQ/cy5kaXNwYXRjaChzLnN0YXRlLnRyLmRlbGV0ZVNlbGVjdGlvbigpKTpzLnVwZGF0ZVN0YXRlKHMuc3RhdGUpLCEwfXJldHVybiExfX1mdW5jdGlvbiBPS2EocyxlKXtpZighcy5kb20ucGFyZW50Tm9kZSlyZXR1cm47bGV0IHQ9cy5kb20ucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7dC5hcHBlbmRDaGlsZChlKSx0LnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOiBmaXhlZDsgbGVmdDogLTEwMDAwcHg7IHRvcDogMTBweCI7bGV0IGE9Z2V0U2VsZWN0aW9uKCkscj1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO3Iuc2VsZWN0Tm9kZUNvbnRlbnRzKGUpLHMuZG9tLmJsdXIoKSxhLnJlbW92ZUFsbFJhbmdlcygpLGEuYWRkUmFuZ2Uociksc2V0VGltZW91dCgoKT0+e3QucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpLHMuZm9jdXMoKX0sNTApfWZ1bmN0aW9uIEZLYShzKXtyZXR1cm4gcy5vcGVuU3RhcnQ9PTAmJnMub3BlbkVuZD09MCYmcy5jb250ZW50LmNoaWxkQ291bnQ9PTE/cy5jb250ZW50LmZpcnN0Q2hpbGQ6bnVsbH1mdW5jdGlvbiBCS2EocyxlKXtpZighcy5kb20ucGFyZW50Tm9kZSlyZXR1cm47bGV0IHQ9cy5pbnB1dC5zaGlmdEtleXx8cy5zdGF0ZS5zZWxlY3Rpb24uJGZyb20ucGFyZW50LnR5cGUuc3BlYy5jb2RlLGE9cy5kb20ucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KHQ/InRleHRhcmVhIjoiZGl2IikpO3R8fChhLmNvbnRlbnRFZGl0YWJsZT0idHJ1ZSIpLGEuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246IGZpeGVkOyBsZWZ0OiAtMTAwMDBweDsgdG9wOiAxMHB4IixhLmZvY3VzKCk7bGV0IHI9cy5pbnB1dC5zaGlmdEtleSYmcy5pbnB1dC5sYXN0S2V5Q29kZSE9NDU7c2V0VGltZW91dCgoKT0+e3MuZm9jdXMoKSxhLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhKSx0P3RYKHMsYS52YWx1ZSxudWxsLHIsZSk6dFgocyxhLnRleHRDb250ZW50LGEuaW5uZXJIVE1MLHIsZSl9LDUwKX1mdW5jdGlvbiB0WChzLGUsdCxhLHIpe2xldCBuPVd0dChzLGUsdCxhLHMuc3RhdGUuc2VsZWN0aW9uLiRmcm9tKTtpZihzLnNvbWVQcm9wKCJoYW5kbGVQYXN0ZSIscD0+cChzLHIsbnx8X3QuZW1wdHkpKSlyZXR1cm4hMDtpZighbilyZXR1cm4hMTtsZXQgbz1GS2EobiksbD1vP3Muc3RhdGUudHIucmVwbGFjZVNlbGVjdGlvbldpdGgobyxhKTpzLnN0YXRlLnRyLnJlcGxhY2VTZWxlY3Rpb24obik7cmV0dXJuIHMuZGlzcGF0Y2gobC5zY3JvbGxJbnRvVmlldygpLnNldE1ldGEoInBhc3RlIiwhMCkuc2V0TWV0YSgidWlFdmVudCIsInBhc3RlIikpLCEwfWZ1bmN0aW9uIExwYShzKXtsZXQgZT1zLmdldERhdGEoInRleHQvcGxhaW4iKXx8cy5nZXREYXRhKCJUZXh0Iik7aWYoZSlyZXR1cm4gZTtsZXQgdD1zLmdldERhdGEoInRleHQvdXJpLWxpc3QiKTtyZXR1cm4gdD90LnJlcGxhY2UoL1xyP1xuL2csIiAiKToiIn1mdW5jdGlvbiBFcGEocyxlKXtsZXQgdDtyZXR1cm4gcy5zb21lUHJvcCgiZHJhZ0NvcGllcyIsYT0+e3Q9dHx8YShlKX0pLHQhPW51bGw/IXQ6IWVbSEthXX1mdW5jdGlvbiBxS2EocyxlLHQpe2lmKCFlLmRhdGFUcmFuc2ZlcilyZXR1cm47bGV0IGE9cy5wb3NBdENvb3JkcyhRbmUoZSkpO2lmKCFhKXJldHVybjtsZXQgcj1zLnN0YXRlLmRvYy5yZXNvbHZlKGEucG9zKSxuPXQmJnQuc2xpY2U7bj9zLnNvbWVQcm9wKCJ0cmFuc2Zvcm1QYXN0ZWQiLHY9PntuPXYobixzLCExKX0pOm49V3R0KHMsTHBhKGUuZGF0YVRyYW5zZmVyKSxlWD9udWxsOmUuZGF0YVRyYW5zZmVyLmdldERhdGEoInRleHQvaHRtbCIpLCExLHIpO2xldCBvPSEhKHQmJkVwYShzLGUpKTtpZihzLnNvbWVQcm9wKCJoYW5kbGVEcm9wIix2PT52KHMsZSxufHxfdC5lbXB0eSxvKSkpe2UucHJldmVudERlZmF1bHQoKTtyZXR1cm59aWYoIW4pcmV0dXJuO2UucHJldmVudERlZmF1bHQoKTtsZXQgbD1uP1ZaKHMuc3RhdGUuZG9jLHIucG9zLG4pOnIucG9zO2w9PW51bGwmJihsPXIucG9zKTtsZXQgcD1zLnN0YXRlLnRyO2lmKG8pe2xldHtub2RlOnZ9PXQ7dj92LnJlcGxhY2UocCk6cC5kZWxldGVTZWxlY3Rpb24oKX1sZXQgZD1wLm1hcHBpbmcubWFwKGwpLHU9bi5vcGVuU3RhcnQ9PTAmJm4ub3BlbkVuZD09MCYmbi5jb250ZW50LmNoaWxkQ291bnQ9PTEsYz1wLmRvYztpZih1P3AucmVwbGFjZVJhbmdlV2l0aChkLGQsbi5jb250ZW50LmZpcnN0Q2hpbGQpOnAucmVwbGFjZVJhbmdlKGQsZCxuKSxwLmRvYy5lcShjKSlyZXR1cm47bGV0IGI9cC5kb2MucmVzb2x2ZShkKTtpZih1JiZGdC5pc1NlbGVjdGFibGUobi5jb250ZW50LmZpcnN0Q2hpbGQpJiZiLm5vZGVBZnRlciYmYi5ub2RlQWZ0ZXIuc2FtZU1hcmt1cChuLmNvbnRlbnQuZmlyc3RDaGlsZCkpcC5zZXRTZWxlY3Rpb24obmV3IEZ0KGIpKTtlbHNle2xldCB2PXAubWFwcGluZy5tYXAobCk7cC5tYXBwaW5nLm1hcHNbcC5tYXBwaW5nLm1hcHMubGVuZ3RoLTFdLmZvckVhY2goKHgsbSxmLHkpPT52PXkpLHAuc2V0U2VsZWN0aW9uKHF0dChzLGIscC5kb2MucmVzb2x2ZSh2KSkpfXMuZm9jdXMoKSxzLmRpc3BhdGNoKHAuc2V0TWV0YSgidWlFdmVudCIsImRyb3AiKSl9ZnVuY3Rpb24gYVgocyxlKXtpZihzPT1lKXJldHVybiEwO2ZvcihsZXQgdCBpbiBzKWlmKHNbdF0hPT1lW3RdKXJldHVybiExO2ZvcihsZXQgdCBpbiBlKWlmKCEodCBpbiBzKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBqS2EocyxlLHQsYSxyLG4sbyl7bGV0IGw9cy5zbGljZSgpO2ZvcihsZXQgZD0wLHU9bjtkPHQubWFwcy5sZW5ndGg7ZCsrKXtsZXQgYz0wO3QubWFwc1tkXS5mb3JFYWNoKChiLHYseCxtKT0+e2xldCBmPW0teC0odi1iKTtmb3IobGV0IHk9MDt5PGwubGVuZ3RoO3krPTMpe2xldCBNPWxbeSsxXTtpZihNPDB8fGI+TSt1LWMpY29udGludWU7bGV0IHo9bFt5XSt1LWM7dj49ej9sW3krMV09Yjw9ej8tMjotMTpiPj11JiZmJiYobFt5XSs9ZixsW3krMV0rPWYpfWMrPWZ9KSx1PXQubWFwc1tkXS5tYXAodSwtMSl9bGV0IHA9ITE7Zm9yKGxldCBkPTA7ZDxsLmxlbmd0aDtkKz0zKWlmKGxbZCsxXTwwKXtpZihsW2QrMV09PS0yKXtwPSEwLGxbZCsxXT0tMTtjb250aW51ZX1sZXQgdT10Lm1hcChzW2RdK24pLGM9dS1yO2lmKGM8MHx8Yz49YS5jb250ZW50LnNpemUpe3A9ITA7Y29udGludWV9bGV0IGI9dC5tYXAoc1tkKzFdK24sLTEpLHY9Yi1yLHtpbmRleDp4LG9mZnNldDptfT1hLmNvbnRlbnQuZmluZEluZGV4KGMpLGY9YS5tYXliZUNoaWxkKHgpO2lmKGYmJm09PWMmJm0rZi5ub2RlU2l6ZT09dil7bGV0IHk9bFtkKzJdLm1hcElubmVyKHQsZix1KzEsc1tkXStuKzEsbyk7eSE9Y24/KGxbZF09YyxsW2QrMV09dixsW2QrMl09eSk6KGxbZCsxXT0tMixwPSEwKX1lbHNlIHA9ITB9aWYocCl7bGV0IGQ9VkthKGwscyxlLHQscixuLG8pLHU9YWxlKGQsYSwwLG8pO2U9dS5sb2NhbDtmb3IobGV0IGM9MDtjPGwubGVuZ3RoO2MrPTMpbFtjKzFdPDAmJihsLnNwbGljZShjLDMpLGMtPTMpO2ZvcihsZXQgYz0wLGI9MDtjPHUuY2hpbGRyZW4ubGVuZ3RoO2MrPTMpe2xldCB2PXUuY2hpbGRyZW5bY107Zm9yKDtiPGwubGVuZ3RoJiZsW2JdPHY7KWIrPTM7bC5zcGxpY2UoYiwwLHUuY2hpbGRyZW5bY10sdS5jaGlsZHJlbltjKzFdLHUuY2hpbGRyZW5bYysyXSl9fXJldHVybiBuZXcgTG4oZS5zb3J0KHJnKSxsKX1mdW5jdGlvbiBQcGEocyxlKXtpZighZXx8IXMubGVuZ3RoKXJldHVybiBzO2xldCB0PVtdO2ZvcihsZXQgYT0wO2E8cy5sZW5ndGg7YSsrKXtsZXQgcj1zW2FdO3QucHVzaChuZXcgdDIoci5mcm9tK2Usci50bytlLHIudHlwZSkpfXJldHVybiB0fWZ1bmN0aW9uIFZLYShzLGUsdCxhLHIsbixvKXtmdW5jdGlvbiBsKHAsZCl7Zm9yKGxldCB1PTA7dTxwLmxvY2FsLmxlbmd0aDt1Kyspe2xldCBjPXAubG9jYWxbdV0ubWFwKGEscixkKTtjP3QucHVzaChjKTpvLm9uUmVtb3ZlJiZvLm9uUmVtb3ZlKHAubG9jYWxbdV0uc3BlYyl9Zm9yKGxldCB1PTA7dTxwLmNoaWxkcmVuLmxlbmd0aDt1Kz0zKWwocC5jaGlsZHJlblt1KzJdLHAuY2hpbGRyZW5bdV0rZCsxKX1pKGwsImdhdGhlciIpO2ZvcihsZXQgcD0wO3A8cy5sZW5ndGg7cCs9MylzW3ArMV09PS0xJiZsKHNbcCsyXSxlW3BdK24rMSk7cmV0dXJuIHR9ZnVuY3Rpb24gSXBhKHMsZSx0KXtpZihlLmlzTGVhZilyZXR1cm4gbnVsbDtsZXQgYT10K2Uubm9kZVNpemUscj1udWxsO2ZvcihsZXQgbj0wLG87bjxzLmxlbmd0aDtuKyspKG89c1tuXSkmJm8uZnJvbT50JiZvLnRvPGEmJigocnx8KHI9W10pKS5wdXNoKG8pLHNbbl09bnVsbCk7cmV0dXJuIHJ9ZnVuY3Rpb24gQXBhKHMpe2xldCBlPVtdO2ZvcihsZXQgdD0wO3Q8cy5sZW5ndGg7dCsrKXNbdF0hPW51bGwmJmUucHVzaChzW3RdKTtyZXR1cm4gZX1mdW5jdGlvbiBhbGUocyxlLHQsYSl7bGV0IHI9W10sbj0hMTtlLmZvckVhY2goKGwscCk9PntsZXQgZD1JcGEocyxsLHArdCk7aWYoZCl7bj0hMDtsZXQgdT1hbGUoZCxsLHQrcCsxLGEpO3UhPWNuJiZyLnB1c2gocCxwK2wubm9kZVNpemUsdSl9fSk7bGV0IG89UHBhKG4/QXBhKHMpOnMsLXQpLnNvcnQocmcpO2ZvcihsZXQgbD0wO2w8by5sZW5ndGg7bCsrKW9bbF0udHlwZS52YWxpZChlLG9bbF0pfHwoYS5vblJlbW92ZSYmYS5vblJlbW92ZShvW2xdLnNwZWMpLG8uc3BsaWNlKGwtLSwxKSk7cmV0dXJuIG8ubGVuZ3RofHxyLmxlbmd0aD9uZXcgTG4obyxyKTpjbn1mdW5jdGlvbiByZyhzLGUpe3JldHVybiBzLmZyb20tZS5mcm9tfHxzLnRvLWUudG99ZnVuY3Rpb24gYWF0KHMpe2xldCBlPXM7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aC0xO3QrKyl7bGV0IGE9ZVt0XTtpZihhLmZyb20hPWEudG8pZm9yKGxldCByPXQrMTtyPGUubGVuZ3RoO3IrKyl7bGV0IG49ZVtyXTtpZihuLmZyb209PWEuZnJvbSl7bi50byE9YS50byYmKGU9PXMmJihlPXMuc2xpY2UoKSksZVtyXT1uLmNvcHkobi5mcm9tLGEudG8pLE5wYShlLHIrMSxuLmNvcHkoYS50byxuLnRvKSkpO2NvbnRpbnVlfWVsc2V7bi5mcm9tPGEudG8mJihlPT1zJiYoZT1zLnNsaWNlKCkpLGVbdF09YS5jb3B5KGEuZnJvbSxuLmZyb20pLE5wYShlLHIsYS5jb3B5KG4uZnJvbSxhLnRvKSkpO2JyZWFrfX19cmV0dXJuIGV9ZnVuY3Rpb24gTnBhKHMsZSx0KXtmb3IoO2U8cy5sZW5ndGgmJnJnKHQsc1tlXSk+MDspZSsrO3Muc3BsaWNlKGUsMCx0KX1mdW5jdGlvbiBzYXQocyl7bGV0IGU9W107cmV0dXJuIHMuc29tZVByb3AoImRlY29yYXRpb25zIix0PT57bGV0IGE9dChzLnN0YXRlKTthJiZhIT1jbiYmZS5wdXNoKGEpfSkscy5jdXJzb3JXcmFwcGVyJiZlLnB1c2goTG4uY3JlYXRlKHMuc3RhdGUuZG9jLFtzLmN1cnNvcldyYXBwZXIuZGVjb10pKSx0bGUuZnJvbShlKX1mdW5jdGlvbiBHS2Eocyl7aWYoIVJwYS5oYXMocykmJihScGEuc2V0KHMsbnVsbCksWyJub3JtYWwiLCJub3dyYXAiLCJwcmUtbGluZSJdLmluZGV4T2YoZ2V0Q29tcHV0ZWRTdHlsZShzLmRvbSkud2hpdGVTcGFjZSkhPT0tMSkpe2lmKHMucmVxdWlyZXNHZWNrb0hhY2tOb2RlPUZjLE9wYSlyZXR1cm47Y29uc29sZS53YXJuKCJQcm9zZU1pcnJvciBleHBlY3RzIHRoZSBDU1Mgd2hpdGUtc3BhY2UgcHJvcGVydHkgdG8gYmUgc2V0LCBwcmVmZXJhYmx5IHRvICdwcmUtd3JhcCcuIEl0IGlzIHJlY29tbWVuZGVkIHRvIGxvYWQgc3R5bGUvcHJvc2VtaXJyb3IuY3NzIGZyb20gdGhlIHByb3NlbWlycm9yLXZpZXcgcGFja2FnZS4iKSxPcGE9ITB9fWZ1bmN0aW9uIEZwYShzLGUpe2xldCB0PWUuc3RhcnRDb250YWluZXIsYT1lLnN0YXJ0T2Zmc2V0LHI9ZS5lbmRDb250YWluZXIsbj1lLmVuZE9mZnNldCxvPXMuZG9tQXRQb3Mocy5zdGF0ZS5zZWxlY3Rpb24uYW5jaG9yKTtyZXR1cm4gUTgoby5ub2RlLG8ub2Zmc2V0LHIsbikmJihbdCxhLHIsbl09W3Isbix0LGFdKSx7YW5jaG9yTm9kZTp0LGFuY2hvck9mZnNldDphLGZvY3VzTm9kZTpyLGZvY3VzT2Zmc2V0Om59fWZ1bmN0aW9uIEtLYShzLGUpe2lmKGUuZ2V0Q29tcG9zZWRSYW5nZXMpe2xldCByPWUuZ2V0Q29tcG9zZWRSYW5nZXMocy5yb290KVswXTtpZihyKXJldHVybiBGcGEocyxyKX1sZXQgdDtmdW5jdGlvbiBhKHIpe3IucHJldmVudERlZmF1bHQoKSxyLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHQ9ci5nZXRUYXJnZXRSYW5nZXMoKVswXX1yZXR1cm4gaShhLCJyZWFkIikscy5kb20uYWRkRXZlbnRMaXN0ZW5lcigiYmVmb3JlaW5wdXQiLGEsITApLGRvY3VtZW50LmV4ZWNDb21tYW5kKCJpbmRlbnQiKSxzLmRvbS5yZW1vdmVFdmVudExpc3RlbmVyKCJiZWZvcmVpbnB1dCIsYSwhMCksdD9GcGEocyx0KTpudWxsfWZ1bmN0aW9uIFlLYShzLGUpe2ZvcihsZXQgdD1lLnBhcmVudE5vZGU7dCYmdCE9cy5kb207dD10LnBhcmVudE5vZGUpe2xldCBhPXMuZG9jVmlldy5uZWFyZXN0RGVzYyh0LCEwKTtpZihhJiZhLm5vZGUuaXNCbG9jaylyZXR1cm4gdH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBaS2EocyxlKXt2YXIgdDtsZXR7Zm9jdXNOb2RlOmEsZm9jdXNPZmZzZXQ6cn09cy5kb21TZWxlY3Rpb25SYW5nZSgpO2ZvcihsZXQgbiBvZiBlKWlmKCgodD1uLnBhcmVudE5vZGUpPT09bnVsbHx8dD09PXZvaWQgMD92b2lkIDA6dC5ub2RlTmFtZSk9PSJUUiIpe2xldCBvPW4ubmV4dFNpYmxpbmc7Zm9yKDtvJiZvLm5vZGVOYW1lIT0iVEQiJiZvLm5vZGVOYW1lIT0iVEgiOylvPW8ubmV4dFNpYmxpbmc7aWYobyl7bGV0IGw9bztmb3IoOzspe2xldCBwPWwuZmlyc3RDaGlsZDtpZighcHx8cC5ub2RlVHlwZSE9MXx8cC5jb250ZW50RWRpdGFibGU9PSJmYWxzZSJ8fC9eKEJSfElNRykkLy50ZXN0KHAubm9kZU5hbWUpKWJyZWFrO2w9cH1sLmluc2VydEJlZm9yZShuLGwuZmlyc3RDaGlsZCksYT09biYmcy5kb21TZWxlY3Rpb24oKS5jb2xsYXBzZShuLHIpfWVsc2Ugbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG4pfX1mdW5jdGlvbiBYS2EocyxlLHQpe2xldHtub2RlOmEsZnJvbU9mZnNldDpyLHRvT2Zmc2V0Om4sZnJvbTpvLHRvOmx9PXMuZG9jVmlldy5wYXJzZVJhbmdlKGUsdCkscD1zLmRvbVNlbGVjdGlvblJhbmdlKCksZCx1PXAuYW5jaG9yTm9kZTtpZih1JiZzLmRvbS5jb250YWlucyh1Lm5vZGVUeXBlPT0xP3U6dS5wYXJlbnROb2RlKSYmKGQ9W3tub2RlOnUsb2Zmc2V0OnAuYW5jaG9yT2Zmc2V0fV0sV25lKHApfHxkLnB1c2goe25vZGU6cC5mb2N1c05vZGUsb2Zmc2V0OnAuZm9jdXNPZmZzZXR9KSksJG8mJnMuaW5wdXQubGFzdEtleUNvZGU9PT04KWZvcihsZXQgZj1uO2Y+cjtmLS0pe2xldCB5PWEuY2hpbGROb2Rlc1tmLTFdLE09eS5wbVZpZXdEZXNjO2lmKHkubm9kZU5hbWU9PSJCUiImJiFNKXtuPWY7YnJlYWt9aWYoIU18fE0uc2l6ZSlicmVha31sZXQgYz1zLnN0YXRlLmRvYyxiPXMuc29tZVByb3AoImRvbVBhcnNlciIpfHxlMi5mcm9tU2NoZW1hKHMuc3RhdGUuc2NoZW1hKSx2PWMucmVzb2x2ZShvKSx4PW51bGwsbT1iLnBhcnNlKGEse3RvcE5vZGU6di5wYXJlbnQsdG9wTWF0Y2g6di5wYXJlbnQuY29udGVudE1hdGNoQXQodi5pbmRleCgpKSx0b3BPcGVuOiEwLGZyb206cix0bzpuLHByZXNlcnZlV2hpdGVzcGFjZTp2LnBhcmVudC50eXBlLndoaXRlc3BhY2U9PSJwcmUiPyJmdWxsIjohMCxmaW5kUG9zaXRpb25zOmQscnVsZUZyb21Ob2RlOlFLYSxjb250ZXh0OnZ9KTtpZihkJiZkWzBdLnBvcyE9bnVsbCl7bGV0IGY9ZFswXS5wb3MseT1kWzFdJiZkWzFdLnBvczt5PT1udWxsJiYoeT1mKSx4PXthbmNob3I6ZitvLGhlYWQ6eStvfX1yZXR1cm57ZG9jOm0sc2VsOngsZnJvbTpvLHRvOmx9fWZ1bmN0aW9uIFFLYShzKXtsZXQgZT1zLnBtVmlld0Rlc2M7aWYoZSlyZXR1cm4gZS5wYXJzZVJ1bGUoKTtpZihzLm5vZGVOYW1lPT0iQlIiJiZzLnBhcmVudE5vZGUpe2lmKGxuJiYvXih1bHxvbCkkL2kudGVzdChzLnBhcmVudE5vZGUubm9kZU5hbWUpKXtsZXQgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpKSx7c2tpcDp0fX1lbHNlIGlmKHMucGFyZW50Tm9kZS5sYXN0Q2hpbGQ9PXN8fGxuJiYvXih0cnx0YWJsZSkkL2kudGVzdChzLnBhcmVudE5vZGUubm9kZU5hbWUpKXJldHVybntpZ25vcmU6ITB9fWVsc2UgaWYocy5ub2RlTmFtZT09IklNRyImJnMuZ2V0QXR0cmlidXRlKCJtYXJrLXBsYWNlaG9sZGVyIikpcmV0dXJue2lnbm9yZTohMH07cmV0dXJuIG51bGx9ZnVuY3Rpb24gZVlhKHMsZSx0LGEscil7bGV0IG49cy5pbnB1dC5jb21wb3NpdGlvblBlbmRpbmdDaGFuZ2VzfHwocy5jb21wb3Npbmc/cy5pbnB1dC5jb21wb3NpdGlvbklEOjApO2lmKHMuaW5wdXQuY29tcG9zaXRpb25QZW5kaW5nQ2hhbmdlcz0wLGU8MCl7bGV0IE89cy5pbnB1dC5sYXN0U2VsZWN0aW9uVGltZT5EYXRlLm5vdygpLTUwP3MuaW5wdXQubGFzdFNlbGVjdGlvbk9yaWdpbjpudWxsLCQ9QnR0KHMsTyk7aWYoJCYmIXMuc3RhdGUuc2VsZWN0aW9uLmVxKCQpKXtpZigkbyYmbnUmJnMuaW5wdXQubGFzdEtleUNvZGU9PT0xMyYmRGF0ZS5ub3coKS0xMDA8cy5pbnB1dC5sYXN0S2V5Q29kZVRpbWUmJnMuc29tZVByb3AoImhhbmRsZUtleURvd24iLEg9PkgocyxKOCgxMywiRW50ZXIiKSkpKXJldHVybjtsZXQgRT1zLnN0YXRlLnRyLnNldFNlbGVjdGlvbigkKTtPPT0icG9pbnRlciI/RS5zZXRNZXRhKCJwb2ludGVyIiwhMCk6Tz09ImtleSImJkUuc2Nyb2xsSW50b1ZpZXcoKSxuJiZFLnNldE1ldGEoImNvbXBvc2l0aW9uIixuKSxzLmRpc3BhdGNoKEUpfXJldHVybn1sZXQgbz1zLnN0YXRlLmRvYy5yZXNvbHZlKGUpLGw9by5zaGFyZWREZXB0aCh0KTtlPW8uYmVmb3JlKGwrMSksdD1zLnN0YXRlLmRvYy5yZXNvbHZlKHQpLmFmdGVyKGwrMSk7bGV0IHA9cy5zdGF0ZS5zZWxlY3Rpb24sZD1YS2EocyxlLHQpLHU9cy5zdGF0ZS5kb2MsYz11LnNsaWNlKGQuZnJvbSxkLnRvKSxiLHY7cy5pbnB1dC5sYXN0S2V5Q29kZT09PTgmJkRhdGUubm93KCktMTAwPHMuaW5wdXQubGFzdEtleUNvZGVUaW1lPyhiPXMuc3RhdGUuc2VsZWN0aW9uLnRvLHY9ImVuZCIpOihiPXMuc3RhdGUuc2VsZWN0aW9uLmZyb20sdj0ic3RhcnQiKSxzLmlucHV0Lmxhc3RLZXlDb2RlPW51bGw7bGV0IHg9c1lhKGMuY29udGVudCxkLmRvYy5jb250ZW50LGQuZnJvbSxiLHYpO2lmKHgmJnMuaW5wdXQuZG9tQ2hhbmdlQ291bnQrKywoQ3YmJnMuaW5wdXQubGFzdElPU0VudGVyPkRhdGUubm93KCktMjI1fHxudSkmJnIuc29tZShPPT5PLm5vZGVUeXBlPT0xJiYhSkthLnRlc3QoTy5ub2RlTmFtZSkpJiYoIXh8fHguZW5kQT49eC5lbmRCKSYmcy5zb21lUHJvcCgiaGFuZGxlS2V5RG93biIsTz0+TyhzLEo4KDEzLCJFbnRlciIpKSkpe3MuaW5wdXQubGFzdElPU0VudGVyPTA7cmV0dXJufWlmKCF4KWlmKGEmJnAgaW5zdGFuY2VvZiBKdCYmIXAuZW1wdHkmJnAuJGhlYWQuc2FtZVBhcmVudChwLiRhbmNob3IpJiYhcy5jb21wb3NpbmcmJiEoZC5zZWwmJmQuc2VsLmFuY2hvciE9ZC5zZWwuaGVhZCkpeD17c3RhcnQ6cC5mcm9tLGVuZEE6cC50byxlbmRCOnAudG99O2Vsc2V7aWYoZC5zZWwpe2xldCBPPUJwYShzLHMuc3RhdGUuZG9jLGQuc2VsKTtpZihPJiYhTy5lcShzLnN0YXRlLnNlbGVjdGlvbikpe2xldCAkPXMuc3RhdGUudHIuc2V0U2VsZWN0aW9uKE8pO24mJiQuc2V0TWV0YSgiY29tcG9zaXRpb24iLG4pLHMuZGlzcGF0Y2goJCl9fXJldHVybn1zLnN0YXRlLnNlbGVjdGlvbi5mcm9tPHMuc3RhdGUuc2VsZWN0aW9uLnRvJiZ4LnN0YXJ0PT14LmVuZEImJnMuc3RhdGUuc2VsZWN0aW9uIGluc3RhbmNlb2YgSnQmJih4LnN0YXJ0PnMuc3RhdGUuc2VsZWN0aW9uLmZyb20mJnguc3RhcnQ8PXMuc3RhdGUuc2VsZWN0aW9uLmZyb20rMiYmcy5zdGF0ZS5zZWxlY3Rpb24uZnJvbT49ZC5mcm9tP3guc3RhcnQ9cy5zdGF0ZS5zZWxlY3Rpb24uZnJvbTp4LmVuZEE8cy5zdGF0ZS5zZWxlY3Rpb24udG8mJnguZW5kQT49cy5zdGF0ZS5zZWxlY3Rpb24udG8tMiYmcy5zdGF0ZS5zZWxlY3Rpb24udG88PWQudG8mJih4LmVuZEIrPXMuc3RhdGUuc2VsZWN0aW9uLnRvLXguZW5kQSx4LmVuZEE9cy5zdGF0ZS5zZWxlY3Rpb24udG8pKSxDbCYmVGg8PTExJiZ4LmVuZEI9PXguc3RhcnQrMSYmeC5lbmRBPT14LnN0YXJ0JiZ4LnN0YXJ0PmQuZnJvbSYmZC5kb2MudGV4dEJldHdlZW4oeC5zdGFydC1kLmZyb20tMSx4LnN0YXJ0LWQuZnJvbSsxKT09IiBceEEwIiYmKHguc3RhcnQtLSx4LmVuZEEtLSx4LmVuZEItLSk7bGV0IG09ZC5kb2MucmVzb2x2ZU5vQ2FjaGUoeC5zdGFydC1kLmZyb20pLGY9ZC5kb2MucmVzb2x2ZU5vQ2FjaGUoeC5lbmRCLWQuZnJvbSkseT11LnJlc29sdmUoeC5zdGFydCksTT1tLnNhbWVQYXJlbnQoZikmJm0ucGFyZW50LmlubGluZUNvbnRlbnQmJnkuZW5kKCk+PXguZW5kQTtpZigoQ3YmJnMuaW5wdXQubGFzdElPU0VudGVyPkRhdGUubm93KCktMjI1JiYoIU18fHIuc29tZShPPT5PLm5vZGVOYW1lPT0iRElWInx8Ty5ub2RlTmFtZT09IlAiKSl8fCFNJiZtLnBvczxkLmRvYy5jb250ZW50LnNpemUmJighbS5zYW1lUGFyZW50KGYpfHwhbS5wYXJlbnQuaW5saW5lQ29udGVudCkmJm0ucG9zPGYucG9zJiYhL1xTLy50ZXN0KGQuZG9jLnRleHRCZXR3ZWVuKG0ucG9zLGYucG9zLCIiLCIiKSkpJiZzLnNvbWVQcm9wKCJoYW5kbGVLZXlEb3duIixPPT5PKHMsSjgoMTMsIkVudGVyIikpKSl7cy5pbnB1dC5sYXN0SU9TRW50ZXI9MDtyZXR1cm59aWYocy5zdGF0ZS5zZWxlY3Rpb24uYW5jaG9yPnguc3RhcnQmJmFZYSh1LHguc3RhcnQseC5lbmRBLG0sZikmJnMuc29tZVByb3AoImhhbmRsZUtleURvd24iLE89Pk8ocyxKOCg4LCJCYWNrc3BhY2UiKSkpKXtudSYmJG8mJnMuZG9tT2JzZXJ2ZXIuc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGVzKCk7cmV0dXJufSRvJiZ4LmVuZEI9PXguc3RhcnQmJihzLmlucHV0Lmxhc3RDaHJvbWVEZWxldGU9RGF0ZS5ub3coKSksbnUmJiFNJiZtLnN0YXJ0KCkhPWYuc3RhcnQoKSYmZi5wYXJlbnRPZmZzZXQ9PTAmJm0uZGVwdGg9PWYuZGVwdGgmJmQuc2VsJiZkLnNlbC5hbmNob3I9PWQuc2VsLmhlYWQmJmQuc2VsLmhlYWQ9PXguZW5kQSYmKHguZW5kQi09MixmPWQuZG9jLnJlc29sdmVOb0NhY2hlKHguZW5kQi1kLmZyb20pLHNldFRpbWVvdXQoKCk9PntzLnNvbWVQcm9wKCJoYW5kbGVLZXlEb3duIixmdW5jdGlvbihPKXtyZXR1cm4gTyhzLEo4KDEzLCJFbnRlciIpKX0pfSwyMCkpO2xldCB6PXguc3RhcnQsTj14LmVuZEEsQz1pKE89PntsZXQgJD1PfHxzLnN0YXRlLnRyLnJlcGxhY2UoeixOLGQuZG9jLnNsaWNlKHguc3RhcnQtZC5mcm9tLHguZW5kQi1kLmZyb20pKTtpZihkLnNlbCl7bGV0IEU9QnBhKHMsJC5kb2MsZC5zZWwpO0UmJiEoJG8mJnMuY29tcG9zaW5nJiZFLmVtcHR5JiYoeC5zdGFydCE9eC5lbmRCfHxzLmlucHV0Lmxhc3RDaHJvbWVEZWxldGU8RGF0ZS5ub3coKS0xMDApJiYoRS5oZWFkPT16fHxFLmhlYWQ9PSQubWFwcGluZy5tYXAoTiktMSl8fENsJiZFLmVtcHR5JiZFLmhlYWQ9PXopJiYkLnNldFNlbGVjdGlvbihFKX1yZXR1cm4gbiYmJC5zZXRNZXRhKCJjb21wb3NpdGlvbiIsbiksJC5zY3JvbGxJbnRvVmlldygpfSwibWtUciIpLF87aWYoTSlpZihtLnBvcz09Zi5wb3Mpe0NsJiZUaDw9MTEmJm0ucGFyZW50T2Zmc2V0PT0wJiYocy5kb21PYnNlcnZlci5zdXBwcmVzc1NlbGVjdGlvblVwZGF0ZXMoKSxzZXRUaW1lb3V0KCgpPT5jdShzKSwyMCkpO2xldCBPPUMocy5zdGF0ZS50ci5kZWxldGUoeixOKSksJD11LnJlc29sdmUoeC5zdGFydCkubWFya3NBY3Jvc3ModS5yZXNvbHZlKHguZW5kQSkpOyQmJk8uZW5zdXJlTWFya3MoJCkscy5kaXNwYXRjaChPKX1lbHNlIGlmKHguZW5kQT09eC5lbmRCJiYoXz10WWEobS5wYXJlbnQuY29udGVudC5jdXQobS5wYXJlbnRPZmZzZXQsZi5wYXJlbnRPZmZzZXQpLHkucGFyZW50LmNvbnRlbnQuY3V0KHkucGFyZW50T2Zmc2V0LHguZW5kQS15LnN0YXJ0KCkpKSkpe2xldCBPPUMocy5zdGF0ZS50cik7Xy50eXBlPT0iYWRkIj9PLmFkZE1hcmsoeixOLF8ubWFyayk6Ty5yZW1vdmVNYXJrKHosTixfLm1hcmspLHMuZGlzcGF0Y2goTyl9ZWxzZSBpZihtLnBhcmVudC5jaGlsZChtLmluZGV4KCkpLmlzVGV4dCYmbS5pbmRleCgpPT1mLmluZGV4KCktKGYudGV4dE9mZnNldD8wOjEpKXtsZXQgTz1tLnBhcmVudC50ZXh0QmV0d2VlbihtLnBhcmVudE9mZnNldCxmLnBhcmVudE9mZnNldCksJD1pKCgpPT5DKHMuc3RhdGUudHIuaW5zZXJ0VGV4dChPLHosTikpLCJkZWZsdCIpO3Muc29tZVByb3AoImhhbmRsZVRleHRJbnB1dCIsRT0+RShzLHosTixPLCQpKXx8cy5kaXNwYXRjaCgkKCkpfWVsc2Ugcy5kaXNwYXRjaChDKCkpO2Vsc2Ugcy5kaXNwYXRjaChDKCkpfWZ1bmN0aW9uIEJwYShzLGUsdCl7cmV0dXJuIE1hdGgubWF4KHQuYW5jaG9yLHQuaGVhZCk+ZS5jb250ZW50LnNpemU/bnVsbDpxdHQocyxlLnJlc29sdmUodC5hbmNob3IpLGUucmVzb2x2ZSh0LmhlYWQpKX1mdW5jdGlvbiB0WWEocyxlKXtsZXQgdD1zLmZpcnN0Q2hpbGQubWFya3MsYT1lLmZpcnN0Q2hpbGQubWFya3Mscj10LG49YSxvLGwscDtmb3IobGV0IHU9MDt1PGEubGVuZ3RoO3UrKylyPWFbdV0ucmVtb3ZlRnJvbVNldChyKTtmb3IobGV0IHU9MDt1PHQubGVuZ3RoO3UrKyluPXRbdV0ucmVtb3ZlRnJvbVNldChuKTtpZihyLmxlbmd0aD09MSYmbi5sZW5ndGg9PTApbD1yWzBdLG89ImFkZCIscD1pKHU9PnUubWFyayhsLmFkZFRvU2V0KHUubWFya3MpKSwidXBkYXRlIik7ZWxzZSBpZihyLmxlbmd0aD09MCYmbi5sZW5ndGg9PTEpbD1uWzBdLG89InJlbW92ZSIscD1pKHU9PnUubWFyayhsLnJlbW92ZUZyb21TZXQodS5tYXJrcykpLCJ1cGRhdGUiKTtlbHNlIHJldHVybiBudWxsO2xldCBkPVtdO2ZvcihsZXQgdT0wO3U8ZS5jaGlsZENvdW50O3UrKylkLnB1c2gocChlLmNoaWxkKHUpKSk7aWYocnQuZnJvbShkKS5lcShzKSlyZXR1cm57bWFyazpsLHR5cGU6b319ZnVuY3Rpb24gYVlhKHMsZSx0LGEscil7aWYodC1lPD1yLnBvcy1hLnBvc3x8b2F0KGEsITAsITEpPHIucG9zKXJldHVybiExO2xldCBuPXMucmVzb2x2ZShlKTtpZighYS5wYXJlbnQuaXNUZXh0YmxvY2spe2xldCBsPW4ubm9kZUFmdGVyO3JldHVybiBsIT1udWxsJiZ0PT1lK2wubm9kZVNpemV9aWYobi5wYXJlbnRPZmZzZXQ8bi5wYXJlbnQuY29udGVudC5zaXplfHwhbi5wYXJlbnQuaXNUZXh0YmxvY2spcmV0dXJuITE7bGV0IG89cy5yZXNvbHZlKG9hdChuLCEwLCEwKSk7cmV0dXJuIW8ucGFyZW50LmlzVGV4dGJsb2NrfHxvLnBvcz50fHxvYXQobywhMCwhMSk8dD8hMTphLnBhcmVudC5jb250ZW50LmN1dChhLnBhcmVudE9mZnNldCkuZXEoby5wYXJlbnQuY29udGVudCl9ZnVuY3Rpb24gb2F0KHMsZSx0KXtsZXQgYT1zLmRlcHRoLHI9ZT9zLmVuZCgpOnMucG9zO2Zvcig7YT4wJiYoZXx8cy5pbmRleEFmdGVyKGEpPT1zLm5vZGUoYSkuY2hpbGRDb3VudCk7KWEtLSxyKyssZT0hMTtpZih0KXtsZXQgbj1zLm5vZGUoYSkubWF5YmVDaGlsZChzLmluZGV4QWZ0ZXIoYSkpO2Zvcig7biYmIW4uaXNMZWFmOyluPW4uZmlyc3RDaGlsZCxyKyt9cmV0dXJuIHJ9ZnVuY3Rpb24gc1lhKHMsZSx0LGEscil7bGV0IG49cy5maW5kRGlmZlN0YXJ0KGUsdCk7aWYobj09bnVsbClyZXR1cm4gbnVsbDtsZXR7YTpvLGI6bH09cy5maW5kRGlmZkVuZChlLHQrcy5zaXplLHQrZS5zaXplKTtpZihyPT0iZW5kIil7bGV0IHA9TWF0aC5tYXgoMCxuLU1hdGgubWluKG8sbCkpO2EtPW8rcC1ufWlmKG88biYmcy5zaXplPGUuc2l6ZSl7bGV0IHA9YTw9biYmYT49bz9uLWE6MDtuLT1wLG4mJm48ZS5zaXplJiZIcGEoZS50ZXh0QmV0d2VlbihuLTEsbisxKSkmJihuKz1wPzE6LTEpLGw9bisobC1vKSxvPW59ZWxzZSBpZihsPG4pe2xldCBwPWE8PW4mJmE+PWw/bi1hOjA7bi09cCxuJiZuPHMuc2l6ZSYmSHBhKHMudGV4dEJldHdlZW4obi0xLG4rMSkpJiYobis9cD8xOi0xKSxvPW4rKG8tbCksbD1ufXJldHVybntzdGFydDpuLGVuZEE6byxlbmRCOmx9fWZ1bmN0aW9uIEhwYShzKXtpZihzLmxlbmd0aCE9MilyZXR1cm4hMTtsZXQgZT1zLmNoYXJDb2RlQXQoMCksdD1zLmNoYXJDb2RlQXQoMSk7cmV0dXJuIGU+PTU2MzIwJiZlPD01NzM0MyYmdD49NTUyOTYmJnQ8PTU2MzE5fWZ1bmN0aW9uIHFwYShzKXtsZXQgZT1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBlLmNsYXNzPSJQcm9zZU1pcnJvciIsZS5jb250ZW50ZWRpdGFibGU9U3RyaW5nKHMuZWRpdGFibGUpLHMuc29tZVByb3AoImF0dHJpYnV0ZXMiLHQ9PntpZih0eXBlb2YgdD09ImZ1bmN0aW9uIiYmKHQ9dChzLnN0YXRlKSksdClmb3IobGV0IGEgaW4gdClhPT0iY2xhc3MiP2UuY2xhc3MrPSIgIit0W2FdOmE9PSJzdHlsZSI/ZS5zdHlsZT0oZS5zdHlsZT9lLnN0eWxlKyI7IjoiIikrdFthXTohZVthXSYmYSE9ImNvbnRlbnRlZGl0YWJsZSImJmEhPSJub2RlTmFtZSImJihlW2FdPVN0cmluZyh0W2FdKSl9KSxlLnRyYW5zbGF0ZXx8KGUudHJhbnNsYXRlPSJubyIpLFt0Mi5ub2RlKDAscy5zdGF0ZS5kb2MuY29udGVudC5zaXplLGUpXX1mdW5jdGlvbiBqcGEocyl7aWYocy5tYXJrQ3Vyc29yKXtsZXQgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTtlLmNsYXNzTmFtZT0iUHJvc2VNaXJyb3Itc2VwYXJhdG9yIixlLnNldEF0dHJpYnV0ZSgibWFyay1wbGFjZWhvbGRlciIsInRydWUiKSxlLnNldEF0dHJpYnV0ZSgiYWx0IiwiIikscy5jdXJzb3JXcmFwcGVyPXtkb206ZSxkZWNvOnQyLndpZGdldChzLnN0YXRlLnNlbGVjdGlvbi5mcm9tLGUse3JhdzohMCxtYXJrczpzLm1hcmtDdXJzb3J9KX19ZWxzZSBzLmN1cnNvcldyYXBwZXI9bnVsbH1mdW5jdGlvbiBWcGEocyl7cmV0dXJuIXMuc29tZVByb3AoImVkaXRhYmxlIixlPT5lKHMuc3RhdGUpPT09ITEpfWZ1bmN0aW9uIG9ZYShzLGUpe2xldCB0PU1hdGgubWluKHMuJGFuY2hvci5zaGFyZWREZXB0aChzLmhlYWQpLGUuJGFuY2hvci5zaGFyZWREZXB0aChlLmhlYWQpKTtyZXR1cm4gcy4kYW5jaG9yLnN0YXJ0KHQpIT1lLiRhbmNob3Iuc3RhcnQodCl9ZnVuY3Rpb24gVXBhKHMpe2xldCBlPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gdChhKXtmb3IobGV0IHIgaW4gYSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKXx8KGVbcl09YVtyXSl9cmV0dXJuIGkodCwiYWRkIikscy5zb21lUHJvcCgibm9kZVZpZXdzIix0KSxzLnNvbWVQcm9wKCJtYXJrVmlld3MiLHQpLGV9ZnVuY3Rpb24gbllhKHMsZSl7bGV0IHQ9MCxhPTA7Zm9yKGxldCByIGluIHMpe2lmKHNbcl0hPWVbcl0pcmV0dXJuITA7dCsrfWZvcihsZXQgciBpbiBlKWErKztyZXR1cm4gdCE9YX1mdW5jdGlvbiBXcGEocyl7aWYocy5zcGVjLnN0YXRlfHxzLnNwZWMuZmlsdGVyVHJhbnNhY3Rpb258fHMuc3BlYy5hcHBlbmRUcmFuc2FjdGlvbil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiUGx1Z2lucyBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIHZpZXcgbXVzdCBub3QgaGF2ZSBhIHN0YXRlIGNvbXBvbmVudCIpfXZhciBUbyx6diwkdHQsb3UsTEdhLFE4LEVHYSxXbmUsSWQsRnVhLENoLER0dCxCdWEsTHR0LENsLFRoLEZjLEV0dCwkbyxIdWEsbG4sQ3YsQmMscXVhLG51LFlaLE9HYSxUdixZR2EsWEdhLFh1YSxRdWEsSnVhLEhjLGVwYSxlZyxBZCx0ZyxHbmUsQXR0LCR2LERoLEtuZSxZbmUsTnR0LFhaLGFnLE90dCxucGEsZ0thLF9wYSxNcGEsS3R0LCRuLERuLGtLYSxZdHQsQ3BhLGVhdCxJS2EsZVgsSm5lLEhLYSxlbGUsc2csdGF0LHQyLEV2LGlnLExuLGNuLHRsZSxVS2EsV0thLGlhdCxyYXQsUnBhLE9wYSxKS2EsaVlhLHJZYSxQdixuYXQ9ZygoKT0+e3J1KCk7X2goKTt6aCgpO1RvPWkoZnVuY3Rpb24ocyl7Zm9yKHZhciBlPTA7O2UrKylpZihzPXMucHJldmlvdXNTaWJsaW5nLCFzKXJldHVybiBlfSwiZG9tSW5kZXgiKSx6dj1pKGZ1bmN0aW9uKHMpe2xldCBlPXMuYXNzaWduZWRTbG90fHxzLnBhcmVudE5vZGU7cmV0dXJuIGUmJmUubm9kZVR5cGU9PTExP2UuaG9zdDplfSwicGFyZW50Tm9kZSIpLCR0dD1udWxsLG91PWkoZnVuY3Rpb24ocyxlLHQpe2xldCBhPSR0dHx8KCR0dD1kb2N1bWVudC5jcmVhdGVSYW5nZSgpKTtyZXR1cm4gYS5zZXRFbmQocyx0Pz9zLm5vZGVWYWx1ZS5sZW5ndGgpLGEuc2V0U3RhcnQocyxlfHwwKSxhfSwidGV4dFJhbmdlIiksTEdhPWkoZnVuY3Rpb24oKXskdHQ9bnVsbH0sImNsZWFyUmV1c2VkUmFuZ2UiKSxROD1pKGZ1bmN0aW9uKHMsZSx0LGEpe3JldHVybiB0JiYoT3VhKHMsZSx0LGEsLTEpfHxPdWEocyxlLHQsYSwxKSl9LCJpc0VxdWl2YWxlbnRQb3NpdGlvbiIpLEVHYT0vXihpbWd8YnJ8aW5wdXR8dGV4dGFyZWF8aHIpJC9pO2koT3VhLCJzY2FuRm9yIik7aShPYywibm9kZVNpemUiKTtpKFBHYSwidGV4dE5vZGVCZWZvcmUkMSIpO2koSUdhLCJ0ZXh0Tm9kZUFmdGVyJDEiKTtpKEFHYSwiaXNPbkVkZ2UiKTtpKEtaLCJoYXNCbG9ja0Rlc2MiKTtXbmU9aShmdW5jdGlvbihzKXtyZXR1cm4gcy5mb2N1c05vZGUmJlE4KHMuZm9jdXNOb2RlLHMuZm9jdXNPZmZzZXQscy5hbmNob3JOb2RlLHMuYW5jaG9yT2Zmc2V0KX0sInNlbGVjdGlvbkNvbGxhcHNlZCIpO2koSjgsImtleUV2ZW50Iik7aShOR2EsImRlZXBBY3RpdmVFbGVtZW50Iik7aShSR2EsImNhcmV0RnJvbVBvaW50Iik7SWQ9dHlwZW9mIG5hdmlnYXRvcjwidSI/bmF2aWdhdG9yOm51bGwsRnVhPXR5cGVvZiBkb2N1bWVudDwidSI/ZG9jdW1lbnQ6bnVsbCxDaD1JZCYmSWQudXNlckFnZW50fHwiIixEdHQ9L0VkZ2VcLyhcZCspLy5leGVjKENoKSxCdWE9L01TSUUgXGQvLmV4ZWMoQ2gpLEx0dD0vVHJpZGVudFwvKD86WzctOV18XGR7Mix9KVwuLipydjooXGQrKS8uZXhlYyhDaCksQ2w9ISEoQnVhfHxMdHR8fER0dCksVGg9QnVhP2RvY3VtZW50LmRvY3VtZW50TW9kZTpMdHQ/K0x0dFsxXTpEdHQ/K0R0dFsxXTowLEZjPSFDbCYmL2dlY2tvXC8oXGQrKS9pLnRlc3QoQ2gpO0ZjJiYrKC9GaXJlZm94XC8oXGQrKS8uZXhlYyhDaCl8fFswLDBdKVsxXTtFdHQ9IUNsJiYvQ2hyb21lXC8oXGQrKS8uZXhlYyhDaCksJG89ISFFdHQsSHVhPUV0dD8rRXR0WzFdOjAsbG49IUNsJiYhIUlkJiYvQXBwbGUgQ29tcHV0ZXIvLnRlc3QoSWQudmVuZG9yKSxDdj1sbiYmKC9Nb2JpbGVcL1x3Ky8udGVzdChDaCl8fCEhSWQmJklkLm1heFRvdWNoUG9pbnRzPjIpLEJjPUN2fHwoSWQ/L01hYy8udGVzdChJZC5wbGF0Zm9ybSk6ITEpLHF1YT1JZD8vV2luLy50ZXN0KElkLnBsYXRmb3JtKTohMSxudT0vQW5kcm9pZCBcZC8udGVzdChDaCksWVo9ISFGdWEmJiJ3ZWJraXRGb250U21vb3RoaW5nImluIEZ1YS5kb2N1bWVudEVsZW1lbnQuc3R5bGUsT0dhPVlaPysoL1xiQXBwbGVXZWJLaXRcLyhcZCspLy5leGVjKG5hdmlnYXRvci51c2VyQWdlbnQpfHxbMCwwXSlbMV06MDtpKEZHYSwid2luZG93UmVjdCIpO2kobHUsImdldFNpZGUiKTtpKEJHYSwiY2xpZW50UmVjdCIpO2koanVhLCJzY3JvbGxSZWN0SW50b1ZpZXciKTtpKEhHYSwic3RvcmVTY3JvbGxQb3MiKTtpKFZ1YSwic2Nyb2xsU3RhY2siKTtpKHFHYSwicmVzZXRTY3JvbGxQb3MiKTtpKFV1YSwicmVzdG9yZVNjcm9sbFN0YWNrIik7VHY9bnVsbDtpKGpHYSwiZm9jdXNQcmV2ZW50U2Nyb2xsIik7aShXdWEsImZpbmRPZmZzZXRJbk5vZGUiKTtpKFZHYSwiZmluZE9mZnNldEluVGV4dCIpO2koUHR0LCJpblJlY3QiKTtpKFVHYSwidGFyZ2V0S2x1ZGdlIik7aShXR2EsInBvc0Zyb21FbGVtZW50Iik7aShHR2EsInBvc0Zyb21DYXJldCIpO2koR3VhLCJlbGVtZW50RnJvbVBvaW50Iik7aShLR2EsInBvc0F0Q29vcmRzIik7aShLdWEsIm5vblplcm8iKTtpKCRoLCJzaW5nbGVSZWN0Iik7WUdhPS9bXHUwNTkwLVx1MDVmNFx1MDYwMC1cdTA2ZmZcdTA3MDAtXHUwOGFjXS87aShZdWEsImNvb3Jkc0F0UG9zIik7aShaWiwiZmxhdHRlblYiKTtpKEl0dCwiZmxhdHRlbkgiKTtpKFp1YSwid2l0aEZsdXNoZWRTdGF0ZSIpO2koWkdhLCJlbmRPZlRleHRibG9ja1ZlcnRpY2FsIik7WEdhPS9bXHUwNTkwLVx1MDhhY10vO2koUUdhLCJlbmRPZlRleHRibG9ja0hvcml6b250YWwiKTtYdWE9bnVsbCxRdWE9bnVsbCxKdWE9ITE7aShKR2EsImVuZE9mVGV4dGJsb2NrIik7SGM9MCxlcGE9MSxlZz0yLEFkPTMsdGc9Y2xhc3N7c3RhdGlje2kodGhpcywiVmlld0Rlc2MiKX1jb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLnBhcmVudD1lLHRoaXMuY2hpbGRyZW49dCx0aGlzLmRvbT1hLHRoaXMuY29udGVudERPTT1yLHRoaXMuZGlydHk9SGMsYS5wbVZpZXdEZXNjPXRoaXN9bWF0Y2hlc1dpZGdldChlKXtyZXR1cm4hMX1tYXRjaGVzTWFyayhlKXtyZXR1cm4hMX1tYXRjaGVzTm9kZShlLHQsYSl7cmV0dXJuITF9bWF0Y2hlc0hhY2soZSl7cmV0dXJuITF9cGFyc2VSdWxlKCl7cmV0dXJuIG51bGx9c3RvcEV2ZW50KGUpe3JldHVybiExfWdldCBzaXplKCl7bGV0IGU9MDtmb3IobGV0IHQ9MDt0PHRoaXMuY2hpbGRyZW4ubGVuZ3RoO3QrKyllKz10aGlzLmNoaWxkcmVuW3RdLnNpemU7cmV0dXJuIGV9Z2V0IGJvcmRlcigpe3JldHVybiAwfWRlc3Ryb3koKXt0aGlzLnBhcmVudD12b2lkIDAsdGhpcy5kb20ucG1WaWV3RGVzYz09dGhpcyYmKHRoaXMuZG9tLnBtVmlld0Rlc2M9dm9pZCAwKTtmb3IobGV0IGU9MDtlPHRoaXMuY2hpbGRyZW4ubGVuZ3RoO2UrKyl0aGlzLmNoaWxkcmVuW2VdLmRlc3Ryb3koKX1wb3NCZWZvcmVDaGlsZChlKXtmb3IobGV0IHQ9MCxhPXRoaXMucG9zQXRTdGFydDs7dCsrKXtsZXQgcj10aGlzLmNoaWxkcmVuW3RdO2lmKHI9PWUpcmV0dXJuIGE7YSs9ci5zaXplfX1nZXQgcG9zQmVmb3JlKCl7cmV0dXJuIHRoaXMucGFyZW50LnBvc0JlZm9yZUNoaWxkKHRoaXMpfWdldCBwb3NBdFN0YXJ0KCl7cmV0dXJuIHRoaXMucGFyZW50P3RoaXMucGFyZW50LnBvc0JlZm9yZUNoaWxkKHRoaXMpK3RoaXMuYm9yZGVyOjB9Z2V0IHBvc0FmdGVyKCl7cmV0dXJuIHRoaXMucG9zQmVmb3JlK3RoaXMuc2l6ZX1nZXQgcG9zQXRFbmQoKXtyZXR1cm4gdGhpcy5wb3NBdFN0YXJ0K3RoaXMuc2l6ZS0yKnRoaXMuYm9yZGVyfWxvY2FsUG9zRnJvbURPTShlLHQsYSl7aWYodGhpcy5jb250ZW50RE9NJiZ0aGlzLmNvbnRlbnRET00uY29udGFpbnMoZS5ub2RlVHlwZT09MT9lOmUucGFyZW50Tm9kZSkpaWYoYTwwKXtsZXQgbixvO2lmKGU9PXRoaXMuY29udGVudERPTSluPWUuY2hpbGROb2Rlc1t0LTFdO2Vsc2V7Zm9yKDtlLnBhcmVudE5vZGUhPXRoaXMuY29udGVudERPTTspZT1lLnBhcmVudE5vZGU7bj1lLnByZXZpb3VzU2libGluZ31mb3IoO24mJiEoKG89bi5wbVZpZXdEZXNjKSYmby5wYXJlbnQ9PXRoaXMpOyluPW4ucHJldmlvdXNTaWJsaW5nO3JldHVybiBuP3RoaXMucG9zQmVmb3JlQ2hpbGQobykrby5zaXplOnRoaXMucG9zQXRTdGFydH1lbHNle2xldCBuLG87aWYoZT09dGhpcy5jb250ZW50RE9NKW49ZS5jaGlsZE5vZGVzW3RdO2Vsc2V7Zm9yKDtlLnBhcmVudE5vZGUhPXRoaXMuY29udGVudERPTTspZT1lLnBhcmVudE5vZGU7bj1lLm5leHRTaWJsaW5nfWZvcig7biYmISgobz1uLnBtVmlld0Rlc2MpJiZvLnBhcmVudD09dGhpcyk7KW49bi5uZXh0U2libGluZztyZXR1cm4gbj90aGlzLnBvc0JlZm9yZUNoaWxkKG8pOnRoaXMucG9zQXRFbmR9bGV0IHI7aWYoZT09dGhpcy5kb20mJnRoaXMuY29udGVudERPTSlyPXQ+VG8odGhpcy5jb250ZW50RE9NKTtlbHNlIGlmKHRoaXMuY29udGVudERPTSYmdGhpcy5jb250ZW50RE9NIT10aGlzLmRvbSYmdGhpcy5kb20uY29udGFpbnModGhpcy5jb250ZW50RE9NKSlyPWUuY29tcGFyZURvY3VtZW50UG9zaXRpb24odGhpcy5jb250ZW50RE9NKSYyO2Vsc2UgaWYodGhpcy5kb20uZmlyc3RDaGlsZCl7aWYodD09MClmb3IobGV0IG49ZTs7bj1uLnBhcmVudE5vZGUpe2lmKG49PXRoaXMuZG9tKXtyPSExO2JyZWFrfWlmKG4ucHJldmlvdXNTaWJsaW5nKWJyZWFrfWlmKHI9PW51bGwmJnQ9PWUuY2hpbGROb2Rlcy5sZW5ndGgpZm9yKGxldCBuPWU7O249bi5wYXJlbnROb2RlKXtpZihuPT10aGlzLmRvbSl7cj0hMDticmVha31pZihuLm5leHRTaWJsaW5nKWJyZWFrfX1yZXR1cm4gcj8/YT4wP3RoaXMucG9zQXRFbmQ6dGhpcy5wb3NBdFN0YXJ0fW5lYXJlc3REZXNjKGUsdD0hMSl7Zm9yKGxldCBhPSEwLHI9ZTtyO3I9ci5wYXJlbnROb2RlKXtsZXQgbj10aGlzLmdldERlc2MociksbztpZihuJiYoIXR8fG4ubm9kZSkpaWYoYSYmKG89bi5ub2RlRE9NKSYmIShvLm5vZGVUeXBlPT0xP28uY29udGFpbnMoZS5ub2RlVHlwZT09MT9lOmUucGFyZW50Tm9kZSk6bz09ZSkpYT0hMTtlbHNlIHJldHVybiBufX1nZXREZXNjKGUpe2xldCB0PWUucG1WaWV3RGVzYztmb3IobGV0IGE9dDthO2E9YS5wYXJlbnQpaWYoYT09dGhpcylyZXR1cm4gdH1wb3NGcm9tRE9NKGUsdCxhKXtmb3IobGV0IHI9ZTtyO3I9ci5wYXJlbnROb2RlKXtsZXQgbj10aGlzLmdldERlc2Mocik7aWYobilyZXR1cm4gbi5sb2NhbFBvc0Zyb21ET00oZSx0LGEpfXJldHVybi0xfWRlc2NBdChlKXtmb3IobGV0IHQ9MCxhPTA7dDx0aGlzLmNoaWxkcmVuLmxlbmd0aDt0Kyspe2xldCByPXRoaXMuY2hpbGRyZW5bdF0sbj1hK3Iuc2l6ZTtpZihhPT1lJiZuIT1hKXtmb3IoOyFyLmJvcmRlciYmci5jaGlsZHJlbi5sZW5ndGg7KWZvcihsZXQgbz0wO288ci5jaGlsZHJlbi5sZW5ndGg7bysrKXtsZXQgbD1yLmNoaWxkcmVuW29dO2lmKGwuc2l6ZSl7cj1sO2JyZWFrfX1yZXR1cm4gcn1pZihlPG4pcmV0dXJuIHIuZGVzY0F0KGUtYS1yLmJvcmRlcik7YT1ufX1kb21Gcm9tUG9zKGUsdCl7aWYoIXRoaXMuY29udGVudERPTSlyZXR1cm57bm9kZTp0aGlzLmRvbSxvZmZzZXQ6MCxhdG9tOmUrMX07bGV0IGE9MCxyPTA7Zm9yKGxldCBuPTA7YTx0aGlzLmNoaWxkcmVuLmxlbmd0aDthKyspe2xldCBvPXRoaXMuY2hpbGRyZW5bYV0sbD1uK28uc2l6ZTtpZihsPmV8fG8gaW5zdGFuY2VvZiBZbmUpe3I9ZS1uO2JyZWFrfW49bH1pZihyKXJldHVybiB0aGlzLmNoaWxkcmVuW2FdLmRvbUZyb21Qb3Moci10aGlzLmNoaWxkcmVuW2FdLmJvcmRlcix0KTtmb3IobGV0IG47YSYmIShuPXRoaXMuY2hpbGRyZW5bYS0xXSkuc2l6ZSYmbiBpbnN0YW5jZW9mIEduZSYmbi5zaWRlPj0wO2EtLSk7aWYodDw9MCl7bGV0IG4sbz0hMDtmb3IoO249YT90aGlzLmNoaWxkcmVuW2EtMV06bnVsbCwhKCFufHxuLmRvbS5wYXJlbnROb2RlPT10aGlzLmNvbnRlbnRET00pO2EtLSxvPSExKTtyZXR1cm4gbiYmdCYmbyYmIW4uYm9yZGVyJiYhbi5kb21BdG9tP24uZG9tRnJvbVBvcyhuLnNpemUsdCk6e25vZGU6dGhpcy5jb250ZW50RE9NLG9mZnNldDpuP1RvKG4uZG9tKSsxOjB9fWVsc2V7bGV0IG4sbz0hMDtmb3IoO249YTx0aGlzLmNoaWxkcmVuLmxlbmd0aD90aGlzLmNoaWxkcmVuW2FdOm51bGwsISghbnx8bi5kb20ucGFyZW50Tm9kZT09dGhpcy5jb250ZW50RE9NKTthKyssbz0hMSk7cmV0dXJuIG4mJm8mJiFuLmJvcmRlciYmIW4uZG9tQXRvbT9uLmRvbUZyb21Qb3MoMCx0KTp7bm9kZTp0aGlzLmNvbnRlbnRET00sb2Zmc2V0Om4/VG8obi5kb20pOnRoaXMuY29udGVudERPTS5jaGlsZE5vZGVzLmxlbmd0aH19fXBhcnNlUmFuZ2UoZSx0LGE9MCl7aWYodGhpcy5jaGlsZHJlbi5sZW5ndGg9PTApcmV0dXJue25vZGU6dGhpcy5jb250ZW50RE9NLGZyb206ZSx0bzp0LGZyb21PZmZzZXQ6MCx0b09mZnNldDp0aGlzLmNvbnRlbnRET00uY2hpbGROb2Rlcy5sZW5ndGh9O2xldCByPS0xLG49LTE7Zm9yKGxldCBvPWEsbD0wOztsKyspe2xldCBwPXRoaXMuY2hpbGRyZW5bbF0sZD1vK3Auc2l6ZTtpZihyPT0tMSYmZTw9ZCl7bGV0IHU9bytwLmJvcmRlcjtpZihlPj11JiZ0PD1kLXAuYm9yZGVyJiZwLm5vZGUmJnAuY29udGVudERPTSYmdGhpcy5jb250ZW50RE9NLmNvbnRhaW5zKHAuY29udGVudERPTSkpcmV0dXJuIHAucGFyc2VSYW5nZShlLHQsdSk7ZT1vO2ZvcihsZXQgYz1sO2M+MDtjLS0pe2xldCBiPXRoaXMuY2hpbGRyZW5bYy0xXTtpZihiLnNpemUmJmIuZG9tLnBhcmVudE5vZGU9PXRoaXMuY29udGVudERPTSYmIWIuZW1wdHlDaGlsZEF0KDEpKXtyPVRvKGIuZG9tKSsxO2JyZWFrfWUtPWIuc2l6ZX1yPT0tMSYmKHI9MCl9aWYocj4tMSYmKGQ+dHx8bD09dGhpcy5jaGlsZHJlbi5sZW5ndGgtMSkpe3Q9ZDtmb3IobGV0IHU9bCsxO3U8dGhpcy5jaGlsZHJlbi5sZW5ndGg7dSsrKXtsZXQgYz10aGlzLmNoaWxkcmVuW3VdO2lmKGMuc2l6ZSYmYy5kb20ucGFyZW50Tm9kZT09dGhpcy5jb250ZW50RE9NJiYhYy5lbXB0eUNoaWxkQXQoLTEpKXtuPVRvKGMuZG9tKTticmVha310Kz1jLnNpemV9bj09LTEmJihuPXRoaXMuY29udGVudERPTS5jaGlsZE5vZGVzLmxlbmd0aCk7YnJlYWt9bz1kfXJldHVybntub2RlOnRoaXMuY29udGVudERPTSxmcm9tOmUsdG86dCxmcm9tT2Zmc2V0OnIsdG9PZmZzZXQ6bn19ZW1wdHlDaGlsZEF0KGUpe2lmKHRoaXMuYm9yZGVyfHwhdGhpcy5jb250ZW50RE9NfHwhdGhpcy5jaGlsZHJlbi5sZW5ndGgpcmV0dXJuITE7bGV0IHQ9dGhpcy5jaGlsZHJlbltlPDA/MDp0aGlzLmNoaWxkcmVuLmxlbmd0aC0xXTtyZXR1cm4gdC5zaXplPT0wfHx0LmVtcHR5Q2hpbGRBdChlKX1kb21BZnRlclBvcyhlKXtsZXR7bm9kZTp0LG9mZnNldDphfT10aGlzLmRvbUZyb21Qb3MoZSwwKTtpZih0Lm5vZGVUeXBlIT0xfHxhPT10LmNoaWxkTm9kZXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJObyBub2RlIGFmdGVyIHBvcyAiK2UpO3JldHVybiB0LmNoaWxkTm9kZXNbYV19c2V0U2VsZWN0aW9uKGUsdCxhLHI9ITEpe2xldCBuPU1hdGgubWluKGUsdCksbz1NYXRoLm1heChlLHQpO2ZvcihsZXQgdj0wLHg9MDt2PHRoaXMuY2hpbGRyZW4ubGVuZ3RoO3YrKyl7bGV0IG09dGhpcy5jaGlsZHJlblt2XSxmPXgrbS5zaXplO2lmKG4+eCYmbzxmKXJldHVybiBtLnNldFNlbGVjdGlvbihlLXgtbS5ib3JkZXIsdC14LW0uYm9yZGVyLGEscik7eD1mfWxldCBsPXRoaXMuZG9tRnJvbVBvcyhlLGU/LTE6MSkscD10PT1lP2w6dGhpcy5kb21Gcm9tUG9zKHQsdD8tMToxKSxkPWEucm9vdC5nZXRTZWxlY3Rpb24oKSx1PWEuZG9tU2VsZWN0aW9uUmFuZ2UoKSxjPSExO2lmKChGY3x8bG4pJiZlPT10KXtsZXR7bm9kZTp2LG9mZnNldDp4fT1sO2lmKHYubm9kZVR5cGU9PTMpe2lmKGM9ISEoeCYmdi5ub2RlVmFsdWVbeC0xXT09YApgKSxjJiZ4PT12Lm5vZGVWYWx1ZS5sZW5ndGgpZm9yKGxldCBtPXYsZjttO209bS5wYXJlbnROb2RlKXtpZihmPW0ubmV4dFNpYmxpbmcpe2Yubm9kZU5hbWU9PSJCUiImJihsPXA9e25vZGU6Zi5wYXJlbnROb2RlLG9mZnNldDpUbyhmKSsxfSk7YnJlYWt9bGV0IHk9bS5wbVZpZXdEZXNjO2lmKHkmJnkubm9kZSYmeS5ub2RlLmlzQmxvY2spYnJlYWt9fWVsc2V7bGV0IG09di5jaGlsZE5vZGVzW3gtMV07Yz1tJiYobS5ub2RlTmFtZT09IkJSInx8bS5jb250ZW50RWRpdGFibGU9PSJmYWxzZSIpfX1pZihGYyYmdS5mb2N1c05vZGUmJnUuZm9jdXNOb2RlIT1wLm5vZGUmJnUuZm9jdXNOb2RlLm5vZGVUeXBlPT0xKXtsZXQgdj11LmZvY3VzTm9kZS5jaGlsZE5vZGVzW3UuZm9jdXNPZmZzZXRdO3YmJnYuY29udGVudEVkaXRhYmxlPT0iZmFsc2UiJiYocj0hMCl9aWYoIShyfHxjJiZsbikmJlE4KGwubm9kZSxsLm9mZnNldCx1LmFuY2hvck5vZGUsdS5hbmNob3JPZmZzZXQpJiZROChwLm5vZGUscC5vZmZzZXQsdS5mb2N1c05vZGUsdS5mb2N1c09mZnNldCkpcmV0dXJuO2xldCBiPSExO2lmKChkLmV4dGVuZHx8ZT09dCkmJiEoYyYmRmMpKXtkLmNvbGxhcHNlKGwubm9kZSxsLm9mZnNldCk7dHJ5e2UhPXQmJmQuZXh0ZW5kKHAubm9kZSxwLm9mZnNldCksYj0hMH1jYXRjaHt9fWlmKCFiKXtpZihlPnQpe2xldCB4PWw7bD1wLHA9eH1sZXQgdj1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO3Yuc2V0RW5kKHAubm9kZSxwLm9mZnNldCksdi5zZXRTdGFydChsLm5vZGUsbC5vZmZzZXQpLGQucmVtb3ZlQWxsUmFuZ2VzKCksZC5hZGRSYW5nZSh2KX19aWdub3JlTXV0YXRpb24oZSl7cmV0dXJuIXRoaXMuY29udGVudERPTSYmZS50eXBlIT0ic2VsZWN0aW9uIn1nZXQgY29udGVudExvc3QoKXtyZXR1cm4gdGhpcy5jb250ZW50RE9NJiZ0aGlzLmNvbnRlbnRET00hPXRoaXMuZG9tJiYhdGhpcy5kb20uY29udGFpbnModGhpcy5jb250ZW50RE9NKX1tYXJrRGlydHkoZSx0KXtmb3IobGV0IGE9MCxyPTA7cjx0aGlzLmNoaWxkcmVuLmxlbmd0aDtyKyspe2xldCBuPXRoaXMuY2hpbGRyZW5bcl0sbz1hK24uc2l6ZTtpZihhPT1vP2U8PW8mJnQ+PWE6ZTxvJiZ0PmEpe2xldCBsPWErbi5ib3JkZXIscD1vLW4uYm9yZGVyO2lmKGU+PWwmJnQ8PXApe3RoaXMuZGlydHk9ZT09YXx8dD09bz9lZzplcGEsZT09bCYmdD09cCYmKG4uY29udGVudExvc3R8fG4uZG9tLnBhcmVudE5vZGUhPXRoaXMuY29udGVudERPTSk/bi5kaXJ0eT1BZDpuLm1hcmtEaXJ0eShlLWwsdC1sKTtyZXR1cm59ZWxzZSBuLmRpcnR5PW4uZG9tPT1uLmNvbnRlbnRET00mJm4uZG9tLnBhcmVudE5vZGU9PXRoaXMuY29udGVudERPTSYmIW4uY2hpbGRyZW4ubGVuZ3RoP2VnOkFkfWE9b310aGlzLmRpcnR5PWVnfW1hcmtQYXJlbnRzRGlydHkoKXtsZXQgZT0xO2ZvcihsZXQgdD10aGlzLnBhcmVudDt0O3Q9dC5wYXJlbnQsZSsrKXtsZXQgYT1lPT0xP2VnOmVwYTt0LmRpcnR5PGEmJih0LmRpcnR5PWEpfX1nZXQgZG9tQXRvbSgpe3JldHVybiExfWdldCBpZ25vcmVGb3JDb29yZHMoKXtyZXR1cm4hMX1nZXQgaWdub3JlRm9yU2VsZWN0aW9uKCl7cmV0dXJuITF9aXNUZXh0KGUpe3JldHVybiExfX0sR25lPWNsYXNzIGV4dGVuZHMgdGd7c3RhdGlje2kodGhpcywiV2lkZ2V0Vmlld0Rlc2MiKX1jb25zdHJ1Y3RvcihlLHQsYSxyKXtsZXQgbixvPXQudHlwZS50b0RPTTtpZih0eXBlb2Ygbz09ImZ1bmN0aW9uIiYmKG89byhhLCgpPT57aWYoIW4pcmV0dXJuIHI7aWYobi5wYXJlbnQpcmV0dXJuIG4ucGFyZW50LnBvc0JlZm9yZUNoaWxkKG4pfSkpLCF0LnR5cGUuc3BlYy5yYXcpe2lmKG8ubm9kZVR5cGUhPTEpe2xldCBsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtsLmFwcGVuZENoaWxkKG8pLG89bH1vLmNvbnRlbnRFZGl0YWJsZT0iZmFsc2UiLG8uY2xhc3NMaXN0LmFkZCgiUHJvc2VNaXJyb3Itd2lkZ2V0Iil9c3VwZXIoZSxbXSxvLG51bGwpLHRoaXMud2lkZ2V0PXQsdGhpcy53aWRnZXQ9dCxuPXRoaXN9bWF0Y2hlc1dpZGdldChlKXtyZXR1cm4gdGhpcy5kaXJ0eT09SGMmJmUudHlwZS5lcSh0aGlzLndpZGdldC50eXBlKX1wYXJzZVJ1bGUoKXtyZXR1cm57aWdub3JlOiEwfX1zdG9wRXZlbnQoZSl7bGV0IHQ9dGhpcy53aWRnZXQuc3BlYy5zdG9wRXZlbnQ7cmV0dXJuIHQ/dChlKTohMX1pZ25vcmVNdXRhdGlvbihlKXtyZXR1cm4gZS50eXBlIT0ic2VsZWN0aW9uInx8dGhpcy53aWRnZXQuc3BlYy5pZ25vcmVTZWxlY3Rpb259ZGVzdHJveSgpe3RoaXMud2lkZ2V0LnR5cGUuZGVzdHJveSh0aGlzLmRvbSksc3VwZXIuZGVzdHJveSgpfWdldCBkb21BdG9tKCl7cmV0dXJuITB9Z2V0IGlnbm9yZUZvclNlbGVjdGlvbigpe3JldHVybiEhdGhpcy53aWRnZXQudHlwZS5zcGVjLnJlbGF4ZWRTaWRlfWdldCBzaWRlKCl7cmV0dXJuIHRoaXMud2lkZ2V0LnR5cGUuc2lkZX19LEF0dD1jbGFzcyBleHRlbmRzIHRne3N0YXRpY3tpKHRoaXMsIkNvbXBvc2l0aW9uVmlld0Rlc2MiKX1jb25zdHJ1Y3RvcihlLHQsYSxyKXtzdXBlcihlLFtdLHQsbnVsbCksdGhpcy50ZXh0RE9NPWEsdGhpcy50ZXh0PXJ9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy50ZXh0Lmxlbmd0aH1sb2NhbFBvc0Zyb21ET00oZSx0KXtyZXR1cm4gZSE9dGhpcy50ZXh0RE9NP3RoaXMucG9zQXRTdGFydCsodD90aGlzLnNpemU6MCk6dGhpcy5wb3NBdFN0YXJ0K3R9ZG9tRnJvbVBvcyhlKXtyZXR1cm57bm9kZTp0aGlzLnRleHRET00sb2Zmc2V0OmV9fWlnbm9yZU11dGF0aW9uKGUpe3JldHVybiBlLnR5cGU9PT0iY2hhcmFjdGVyRGF0YSImJmUudGFyZ2V0Lm5vZGVWYWx1ZT09ZS5vbGRWYWx1ZX19LCR2PWNsYXNzIHMgZXh0ZW5kcyB0Z3tzdGF0aWN7aSh0aGlzLCJNYXJrVmlld0Rlc2MiKX1jb25zdHJ1Y3RvcihlLHQsYSxyLG4pe3N1cGVyKGUsW10sYSxyKSx0aGlzLm1hcms9dCx0aGlzLnNwZWM9bn1zdGF0aWMgY3JlYXRlKGUsdCxhLHIpe2xldCBuPXIubm9kZVZpZXdzW3QudHlwZS5uYW1lXSxvPW4mJm4odCxyLGEpO3JldHVybighb3x8IW8uZG9tKSYmKG89TGQucmVuZGVyU3BlYyhkb2N1bWVudCx0LnR5cGUuc3BlYy50b0RPTSh0LGEpLG51bGwsdC5hdHRycykpLG5ldyBzKGUsdCxvLmRvbSxvLmNvbnRlbnRET018fG8uZG9tLG8pfXBhcnNlUnVsZSgpe3JldHVybiB0aGlzLmRpcnR5JkFkfHx0aGlzLm1hcmsudHlwZS5zcGVjLnJlcGFyc2VJblZpZXc/bnVsbDp7bWFyazp0aGlzLm1hcmsudHlwZS5uYW1lLGF0dHJzOnRoaXMubWFyay5hdHRycyxjb250ZW50RWxlbWVudDp0aGlzLmNvbnRlbnRET019fW1hdGNoZXNNYXJrKGUpe3JldHVybiB0aGlzLmRpcnR5IT1BZCYmdGhpcy5tYXJrLmVxKGUpfW1hcmtEaXJ0eShlLHQpe2lmKHN1cGVyLm1hcmtEaXJ0eShlLHQpLHRoaXMuZGlydHkhPUhjKXtsZXQgYT10aGlzLnBhcmVudDtmb3IoOyFhLm5vZGU7KWE9YS5wYXJlbnQ7YS5kaXJ0eTx0aGlzLmRpcnR5JiYoYS5kaXJ0eT10aGlzLmRpcnR5KSx0aGlzLmRpcnR5PUhjfX1zbGljZShlLHQsYSl7bGV0IHI9cy5jcmVhdGUodGhpcy5wYXJlbnQsdGhpcy5tYXJrLCEwLGEpLG49dGhpcy5jaGlsZHJlbixvPXRoaXMuc2l6ZTt0PG8mJihuPUZ0dChuLHQsbyxhKSksZT4wJiYobj1GdHQobiwwLGUsYSkpO2ZvcihsZXQgbD0wO2w8bi5sZW5ndGg7bCsrKW5bbF0ucGFyZW50PXI7cmV0dXJuIHIuY2hpbGRyZW49bixyfWlnbm9yZU11dGF0aW9uKGUpe3JldHVybiB0aGlzLnNwZWMuaWdub3JlTXV0YXRpb24/dGhpcy5zcGVjLmlnbm9yZU11dGF0aW9uKGUpOnN1cGVyLmlnbm9yZU11dGF0aW9uKGUpfWRlc3Ryb3koKXt0aGlzLnNwZWMuZGVzdHJveSYmdGhpcy5zcGVjLmRlc3Ryb3koKSxzdXBlci5kZXN0cm95KCl9fSxEaD1jbGFzcyBzIGV4dGVuZHMgdGd7c3RhdGlje2kodGhpcywiTm9kZVZpZXdEZXNjIil9Y29uc3RydWN0b3IoZSx0LGEscixuLG8sbCxwLGQpe3N1cGVyKGUsW10sbixvKSx0aGlzLm5vZGU9dCx0aGlzLm91dGVyRGVjbz1hLHRoaXMuaW5uZXJEZWNvPXIsdGhpcy5ub2RlRE9NPWx9c3RhdGljIGNyZWF0ZShlLHQsYSxyLG4sbyl7bGV0IGw9bi5ub2RlVmlld3NbdC50eXBlLm5hbWVdLHAsZD1sJiZsKHQsbiwoKT0+e2lmKCFwKXJldHVybiBvO2lmKHAucGFyZW50KXJldHVybiBwLnBhcmVudC5wb3NCZWZvcmVDaGlsZChwKX0sYSxyKSx1PWQmJmQuZG9tLGM9ZCYmZC5jb250ZW50RE9NO2lmKHQuaXNUZXh0KXtpZighdSl1PWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHQudGV4dCk7ZWxzZSBpZih1Lm5vZGVUeXBlIT0zKXRocm93IG5ldyBSYW5nZUVycm9yKCJUZXh0IG11c3QgYmUgcmVuZGVyZWQgYXMgYSBET00gdGV4dCBub2RlIil9ZWxzZSB1fHwoe2RvbTp1LGNvbnRlbnRET006Y309TGQucmVuZGVyU3BlYyhkb2N1bWVudCx0LnR5cGUuc3BlYy50b0RPTSh0KSxudWxsLHQuYXR0cnMpKTshYyYmIXQuaXNUZXh0JiZ1Lm5vZGVOYW1lIT0iQlIiJiYodS5oYXNBdHRyaWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIpfHwodS5jb250ZW50RWRpdGFibGU9ImZhbHNlIiksdC50eXBlLnNwZWMuZHJhZ2dhYmxlJiYodS5kcmFnZ2FibGU9ITApKTtsZXQgYj11O3JldHVybiB1PWlwYSh1LGEsdCksZD9wPW5ldyBOdHQoZSx0LGEscix1LGN8fG51bGwsYixkLG4sbysxKTp0LmlzVGV4dD9uZXcgS25lKGUsdCxhLHIsdSxiLG4pOm5ldyBzKGUsdCxhLHIsdSxjfHxudWxsLGIsbixvKzEpfXBhcnNlUnVsZSgpe2lmKHRoaXMubm9kZS50eXBlLnNwZWMucmVwYXJzZUluVmlldylyZXR1cm4gbnVsbDtsZXQgZT17bm9kZTp0aGlzLm5vZGUudHlwZS5uYW1lLGF0dHJzOnRoaXMubm9kZS5hdHRyc307aWYodGhpcy5ub2RlLnR5cGUud2hpdGVzcGFjZT09InByZSImJihlLnByZXNlcnZlV2hpdGVzcGFjZT0iZnVsbCIpLCF0aGlzLmNvbnRlbnRET00pZS5nZXRDb250ZW50PSgpPT50aGlzLm5vZGUuY29udGVudDtlbHNlIGlmKCF0aGlzLmNvbnRlbnRMb3N0KWUuY29udGVudEVsZW1lbnQ9dGhpcy5jb250ZW50RE9NO2Vsc2V7Zm9yKGxldCB0PXRoaXMuY2hpbGRyZW4ubGVuZ3RoLTE7dD49MDt0LS0pe2xldCBhPXRoaXMuY2hpbGRyZW5bdF07aWYodGhpcy5kb20uY29udGFpbnMoYS5kb20ucGFyZW50Tm9kZSkpe2UuY29udGVudEVsZW1lbnQ9YS5kb20ucGFyZW50Tm9kZTticmVha319ZS5jb250ZW50RWxlbWVudHx8KGUuZ2V0Q29udGVudD0oKT0+cnQuZW1wdHkpfXJldHVybiBlfW1hdGNoZXNOb2RlKGUsdCxhKXtyZXR1cm4gdGhpcy5kaXJ0eT09SGMmJmUuZXEodGhpcy5ub2RlKSYmWm5lKHQsdGhpcy5vdXRlckRlY28pJiZhLmVxKHRoaXMuaW5uZXJEZWNvKX1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLm5vZGUubm9kZVNpemV9Z2V0IGJvcmRlcigpe3JldHVybiB0aGlzLm5vZGUuaXNMZWFmPzA6MX11cGRhdGVDaGlsZHJlbihlLHQpe2xldCBhPXRoaXMubm9kZS5pbmxpbmVDb250ZW50LHI9dCxuPWUuY29tcG9zaW5nP3RoaXMubG9jYWxDb21wb3NpdGlvbkluZm8oZSx0KTpudWxsLG89biYmbi5wb3M+LTE/bjpudWxsLGw9biYmbi5wb3M8MCxwPW5ldyBPdHQodGhpcyxvJiZvLm5vZGUsZSk7c0thKHRoaXMubm9kZSx0aGlzLmlubmVyRGVjbywoZCx1LGMpPT57ZC5zcGVjLm1hcmtzP3Auc3luY1RvTWFya3MoZC5zcGVjLm1hcmtzLGEsZSx1KTpkLnR5cGUuc2lkZT49MCYmIWMmJnAuc3luY1RvTWFya3ModT09dGhpcy5ub2RlLmNoaWxkQ291bnQ/ZnMubm9uZTp0aGlzLm5vZGUuY2hpbGQodSkubWFya3MsYSxlLHUpLHAucGxhY2VXaWRnZXQoZCxlLHIpfSwoZCx1LGMsYik9PntwLnN5bmNUb01hcmtzKGQubWFya3MsYSxlLGIpO2xldCB2O3AuZmluZE5vZGVNYXRjaChkLHUsYyxiKXx8bCYmZS5zdGF0ZS5zZWxlY3Rpb24uZnJvbT5yJiZlLnN0YXRlLnNlbGVjdGlvbi50bzxyK2Qubm9kZVNpemUmJih2PXAuZmluZEluZGV4V2l0aENoaWxkKG4ubm9kZSkpPi0xJiZwLnVwZGF0ZU5vZGVBdChkLHUsYyx2LGUpfHxwLnVwZGF0ZU5leHROb2RlKGQsdSxjLGUsYixyKXx8cC5hZGROb2RlKGQsdSxjLGUscikscis9ZC5ub2RlU2l6ZX0pLHAuc3luY1RvTWFya3MoW10sYSxlLDApLHRoaXMubm9kZS5pc1RleHRibG9jayYmcC5hZGRUZXh0YmxvY2tIYWNrcygpLHAuZGVzdHJveVJlc3QoKSwocC5jaGFuZ2VkfHx0aGlzLmRpcnR5PT1lZykmJihvJiZ0aGlzLnByb3RlY3RMb2NhbENvbXBvc2l0aW9uKGUsbyksYXBhKHRoaXMuY29udGVudERPTSx0aGlzLmNoaWxkcmVuLGUpLEN2JiZpS2EodGhpcy5kb20pKX1sb2NhbENvbXBvc2l0aW9uSW5mbyhlLHQpe2xldHtmcm9tOmEsdG86cn09ZS5zdGF0ZS5zZWxlY3Rpb247aWYoIShlLnN0YXRlLnNlbGVjdGlvbiBpbnN0YW5jZW9mIEp0KXx8YTx0fHxyPnQrdGhpcy5ub2RlLmNvbnRlbnQuc2l6ZSlyZXR1cm4gbnVsbDtsZXQgbj1lLmlucHV0LmNvbXBvc2l0aW9uTm9kZTtpZighbnx8IXRoaXMuZG9tLmNvbnRhaW5zKG4ucGFyZW50Tm9kZSkpcmV0dXJuIG51bGw7aWYodGhpcy5ub2RlLmlubGluZUNvbnRlbnQpe2xldCBvPW4ubm9kZVZhbHVlLGw9ckthKHRoaXMubm9kZS5jb250ZW50LG8sYS10LHItdCk7cmV0dXJuIGw8MD9udWxsOntub2RlOm4scG9zOmwsdGV4dDpvfX1lbHNlIHJldHVybntub2RlOm4scG9zOi0xLHRleHQ6IiJ9fXByb3RlY3RMb2NhbENvbXBvc2l0aW9uKGUse25vZGU6dCxwb3M6YSx0ZXh0OnJ9KXtpZih0aGlzLmdldERlc2ModCkpcmV0dXJuO2xldCBuPXQ7Zm9yKDtuLnBhcmVudE5vZGUhPXRoaXMuY29udGVudERPTTtuPW4ucGFyZW50Tm9kZSl7Zm9yKDtuLnByZXZpb3VzU2libGluZzspbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG4ucHJldmlvdXNTaWJsaW5nKTtmb3IoO24ubmV4dFNpYmxpbmc7KW4ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuLm5leHRTaWJsaW5nKTtuLnBtVmlld0Rlc2MmJihuLnBtVmlld0Rlc2M9dm9pZCAwKX1sZXQgbz1uZXcgQXR0KHRoaXMsbix0LHIpO2UuaW5wdXQuY29tcG9zaXRpb25Ob2Rlcy5wdXNoKG8pLHRoaXMuY2hpbGRyZW49RnR0KHRoaXMuY2hpbGRyZW4sYSxhK3IubGVuZ3RoLGUsbyl9dXBkYXRlKGUsdCxhLHIpe3JldHVybiB0aGlzLmRpcnR5PT1BZHx8IWUuc2FtZU1hcmt1cCh0aGlzLm5vZGUpPyExOih0aGlzLnVwZGF0ZUlubmVyKGUsdCxhLHIpLCEwKX11cGRhdGVJbm5lcihlLHQsYSxyKXt0aGlzLnVwZGF0ZU91dGVyRGVjbyh0KSx0aGlzLm5vZGU9ZSx0aGlzLmlubmVyRGVjbz1hLHRoaXMuY29udGVudERPTSYmdGhpcy51cGRhdGVDaGlsZHJlbihyLHRoaXMucG9zQXRTdGFydCksdGhpcy5kaXJ0eT1IY311cGRhdGVPdXRlckRlY28oZSl7aWYoWm5lKGUsdGhpcy5vdXRlckRlY28pKXJldHVybjtsZXQgdD10aGlzLm5vZGVET00ubm9kZVR5cGUhPTEsYT10aGlzLmRvbTt0aGlzLmRvbT1zcGEodGhpcy5kb20sdGhpcy5ub2RlRE9NLFJ0dCh0aGlzLm91dGVyRGVjbyx0aGlzLm5vZGUsdCksUnR0KGUsdGhpcy5ub2RlLHQpKSx0aGlzLmRvbSE9YSYmKGEucG1WaWV3RGVzYz12b2lkIDAsdGhpcy5kb20ucG1WaWV3RGVzYz10aGlzKSx0aGlzLm91dGVyRGVjbz1lfXNlbGVjdE5vZGUoKXt0aGlzLm5vZGVET00ubm9kZVR5cGU9PTEmJih0aGlzLm5vZGVET00uY2xhc3NMaXN0LmFkZCgiUHJvc2VNaXJyb3Itc2VsZWN0ZWRub2RlIiksKHRoaXMuY29udGVudERPTXx8IXRoaXMubm9kZS50eXBlLnNwZWMuZHJhZ2dhYmxlKSYmKHRoaXMubm9kZURPTS5kcmFnZ2FibGU9ITApKX1kZXNlbGVjdE5vZGUoKXt0aGlzLm5vZGVET00ubm9kZVR5cGU9PTEmJih0aGlzLm5vZGVET00uY2xhc3NMaXN0LnJlbW92ZSgiUHJvc2VNaXJyb3Itc2VsZWN0ZWRub2RlIiksKHRoaXMuY29udGVudERPTXx8IXRoaXMubm9kZS50eXBlLnNwZWMuZHJhZ2dhYmxlKSYmdGhpcy5ub2RlRE9NLnJlbW92ZUF0dHJpYnV0ZSgiZHJhZ2dhYmxlIikpfWdldCBkb21BdG9tKCl7cmV0dXJuIHRoaXMubm9kZS5pc0F0b219fTtpKHRwYSwiZG9jVmlld0Rlc2MiKTtLbmU9Y2xhc3MgcyBleHRlbmRzIERoe3N0YXRpY3tpKHRoaXMsIlRleHRWaWV3RGVzYyIpfWNvbnN0cnVjdG9yKGUsdCxhLHIsbixvLGwpe3N1cGVyKGUsdCxhLHIsbixudWxsLG8sbCwwKX1wYXJzZVJ1bGUoKXtsZXQgZT10aGlzLm5vZGVET00ucGFyZW50Tm9kZTtmb3IoO2UmJmUhPXRoaXMuZG9tJiYhZS5wbUlzRGVjbzspZT1lLnBhcmVudE5vZGU7cmV0dXJue3NraXA6ZXx8ITB9fXVwZGF0ZShlLHQsYSxyKXtyZXR1cm4gdGhpcy5kaXJ0eT09QWR8fHRoaXMuZGlydHkhPUhjJiYhdGhpcy5pblBhcmVudCgpfHwhZS5zYW1lTWFya3VwKHRoaXMubm9kZSk/ITE6KHRoaXMudXBkYXRlT3V0ZXJEZWNvKHQpLCh0aGlzLmRpcnR5IT1IY3x8ZS50ZXh0IT10aGlzLm5vZGUudGV4dCkmJmUudGV4dCE9dGhpcy5ub2RlRE9NLm5vZGVWYWx1ZSYmKHRoaXMubm9kZURPTS5ub2RlVmFsdWU9ZS50ZXh0LHIudHJhY2tXcml0ZXM9PXRoaXMubm9kZURPTSYmKHIudHJhY2tXcml0ZXM9bnVsbCkpLHRoaXMubm9kZT1lLHRoaXMuZGlydHk9SGMsITApfWluUGFyZW50KCl7bGV0IGU9dGhpcy5wYXJlbnQuY29udGVudERPTTtmb3IobGV0IHQ9dGhpcy5ub2RlRE9NO3Q7dD10LnBhcmVudE5vZGUpaWYodD09ZSlyZXR1cm4hMDtyZXR1cm4hMX1kb21Gcm9tUG9zKGUpe3JldHVybntub2RlOnRoaXMubm9kZURPTSxvZmZzZXQ6ZX19bG9jYWxQb3NGcm9tRE9NKGUsdCxhKXtyZXR1cm4gZT09dGhpcy5ub2RlRE9NP3RoaXMucG9zQXRTdGFydCtNYXRoLm1pbih0LHRoaXMubm9kZS50ZXh0Lmxlbmd0aCk6c3VwZXIubG9jYWxQb3NGcm9tRE9NKGUsdCxhKX1pZ25vcmVNdXRhdGlvbihlKXtyZXR1cm4gZS50eXBlIT0iY2hhcmFjdGVyRGF0YSImJmUudHlwZSE9InNlbGVjdGlvbiJ9c2xpY2UoZSx0LGEpe2xldCByPXRoaXMubm9kZS5jdXQoZSx0KSxuPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHIudGV4dCk7cmV0dXJuIG5ldyBzKHRoaXMucGFyZW50LHIsdGhpcy5vdXRlckRlY28sdGhpcy5pbm5lckRlY28sbixuLGEpfW1hcmtEaXJ0eShlLHQpe3N1cGVyLm1hcmtEaXJ0eShlLHQpLHRoaXMuZG9tIT10aGlzLm5vZGVET00mJihlPT0wfHx0PT10aGlzLm5vZGVET00ubm9kZVZhbHVlLmxlbmd0aCkmJih0aGlzLmRpcnR5PUFkKX1nZXQgZG9tQXRvbSgpe3JldHVybiExfWlzVGV4dChlKXtyZXR1cm4gdGhpcy5ub2RlLnRleHQ9PWV9fSxZbmU9Y2xhc3MgZXh0ZW5kcyB0Z3tzdGF0aWN7aSh0aGlzLCJUcmFpbGluZ0hhY2tWaWV3RGVzYyIpfXBhcnNlUnVsZSgpe3JldHVybntpZ25vcmU6ITB9fW1hdGNoZXNIYWNrKGUpe3JldHVybiB0aGlzLmRpcnR5PT1IYyYmdGhpcy5kb20ubm9kZU5hbWU9PWV9Z2V0IGRvbUF0b20oKXtyZXR1cm4hMH1nZXQgaWdub3JlRm9yQ29vcmRzKCl7cmV0dXJuIHRoaXMuZG9tLm5vZGVOYW1lPT0iSU1HIn19LE50dD1jbGFzcyBleHRlbmRzIERoe3N0YXRpY3tpKHRoaXMsIkN1c3RvbU5vZGVWaWV3RGVzYyIpfWNvbnN0cnVjdG9yKGUsdCxhLHIsbixvLGwscCxkLHUpe3N1cGVyKGUsdCxhLHIsbixvLGwsZCx1KSx0aGlzLnNwZWM9cH11cGRhdGUoZSx0LGEscil7aWYodGhpcy5kaXJ0eT09QWQpcmV0dXJuITE7aWYodGhpcy5zcGVjLnVwZGF0ZSYmKHRoaXMubm9kZS50eXBlPT1lLnR5cGV8fHRoaXMuc3BlYy5tdWx0aVR5cGUpKXtsZXQgbj10aGlzLnNwZWMudXBkYXRlKGUsdCxhKTtyZXR1cm4gbiYmdGhpcy51cGRhdGVJbm5lcihlLHQsYSxyKSxufWVsc2UgcmV0dXJuIXRoaXMuY29udGVudERPTSYmIWUuaXNMZWFmPyExOnN1cGVyLnVwZGF0ZShlLHQsYSxyKX1zZWxlY3ROb2RlKCl7dGhpcy5zcGVjLnNlbGVjdE5vZGU/dGhpcy5zcGVjLnNlbGVjdE5vZGUoKTpzdXBlci5zZWxlY3ROb2RlKCl9ZGVzZWxlY3ROb2RlKCl7dGhpcy5zcGVjLmRlc2VsZWN0Tm9kZT90aGlzLnNwZWMuZGVzZWxlY3ROb2RlKCk6c3VwZXIuZGVzZWxlY3ROb2RlKCl9c2V0U2VsZWN0aW9uKGUsdCxhLHIpe3RoaXMuc3BlYy5zZXRTZWxlY3Rpb24/dGhpcy5zcGVjLnNldFNlbGVjdGlvbihlLHQsYS5yb290KTpzdXBlci5zZXRTZWxlY3Rpb24oZSx0LGEscil9ZGVzdHJveSgpe3RoaXMuc3BlYy5kZXN0cm95JiZ0aGlzLnNwZWMuZGVzdHJveSgpLHN1cGVyLmRlc3Ryb3koKX1zdG9wRXZlbnQoZSl7cmV0dXJuIHRoaXMuc3BlYy5zdG9wRXZlbnQ/dGhpcy5zcGVjLnN0b3BFdmVudChlKTohMX1pZ25vcmVNdXRhdGlvbihlKXtyZXR1cm4gdGhpcy5zcGVjLmlnbm9yZU11dGF0aW9uP3RoaXMuc3BlYy5pZ25vcmVNdXRhdGlvbihlKTpzdXBlci5pZ25vcmVNdXRhdGlvbihlKX19O2koYXBhLCJyZW5kZXJEZXNjcyIpO1haPWkoZnVuY3Rpb24ocyl7cyYmKHRoaXMubm9kZU5hbWU9cyl9LCJPdXRlckRlY29MZXZlbCIpO1haLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG51bGwpO2FnPVtuZXcgWFpdO2koUnR0LCJjb21wdXRlT3V0ZXJEZWNvIik7aShzcGEsInBhdGNoT3V0ZXJEZWNvIik7aShlS2EsInBhdGNoQXR0cmlidXRlcyIpO2koaXBhLCJhcHBseU91dGVyRGVjbyIpO2koWm5lLCJzYW1lT3V0ZXJEZWNvIik7aShycGEsInJtIik7T3R0PWNsYXNze3N0YXRpY3tpKHRoaXMsIlZpZXdUcmVlVXBkYXRlciIpfWNvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmxvY2s9dCx0aGlzLnZpZXc9YSx0aGlzLmluZGV4PTAsdGhpcy5zdGFjaz1bXSx0aGlzLmNoYW5nZWQ9ITEsdGhpcy50b3A9ZSx0aGlzLnByZU1hdGNoPXRLYShlLm5vZGUuY29udGVudCxlKX1kZXN0cm95QmV0d2VlbihlLHQpe2lmKGUhPXQpe2ZvcihsZXQgYT1lO2E8dDthKyspdGhpcy50b3AuY2hpbGRyZW5bYV0uZGVzdHJveSgpO3RoaXMudG9wLmNoaWxkcmVuLnNwbGljZShlLHQtZSksdGhpcy5jaGFuZ2VkPSEwfX1kZXN0cm95UmVzdCgpe3RoaXMuZGVzdHJveUJldHdlZW4odGhpcy5pbmRleCx0aGlzLnRvcC5jaGlsZHJlbi5sZW5ndGgpfXN5bmNUb01hcmtzKGUsdCxhLHIpe2xldCBuPTAsbz10aGlzLnN0YWNrLmxlbmd0aD4+MSxsPU1hdGgubWluKG8sZS5sZW5ndGgpO2Zvcig7bjxsJiYobj09by0xP3RoaXMudG9wOnRoaXMuc3RhY2tbbisxPDwxXSkubWF0Y2hlc01hcmsoZVtuXSkmJmVbbl0udHlwZS5zcGVjLnNwYW5uaW5nIT09ITE7KW4rKztmb3IoO248bzspdGhpcy5kZXN0cm95UmVzdCgpLHRoaXMudG9wLmRpcnR5PUhjLHRoaXMuaW5kZXg9dGhpcy5zdGFjay5wb3AoKSx0aGlzLnRvcD10aGlzLnN0YWNrLnBvcCgpLG8tLTtmb3IoO288ZS5sZW5ndGg7KXt0aGlzLnN0YWNrLnB1c2godGhpcy50b3AsdGhpcy5pbmRleCsxKTtsZXQgcD0tMSxkPXRoaXMudG9wLmNoaWxkcmVuLmxlbmd0aDtyPHRoaXMucHJlTWF0Y2guaW5kZXgmJihkPU1hdGgubWluKHRoaXMuaW5kZXgrMyxkKSk7Zm9yKGxldCB1PXRoaXMuaW5kZXg7dTxkO3UrKyl7bGV0IGM9dGhpcy50b3AuY2hpbGRyZW5bdV07aWYoYy5tYXRjaGVzTWFyayhlW29dKSYmIXRoaXMuaXNMb2NrZWQoYy5kb20pKXtwPXU7YnJlYWt9fWlmKHA+LTEpcD50aGlzLmluZGV4JiYodGhpcy5jaGFuZ2VkPSEwLHRoaXMuZGVzdHJveUJldHdlZW4odGhpcy5pbmRleCxwKSksdGhpcy50b3A9dGhpcy50b3AuY2hpbGRyZW5bdGhpcy5pbmRleF07ZWxzZXtsZXQgdT0kdi5jcmVhdGUodGhpcy50b3AsZVtvXSx0LGEpO3RoaXMudG9wLmNoaWxkcmVuLnNwbGljZSh0aGlzLmluZGV4LDAsdSksdGhpcy50b3A9dSx0aGlzLmNoYW5nZWQ9ITB9dGhpcy5pbmRleD0wLG8rK319ZmluZE5vZGVNYXRjaChlLHQsYSxyKXtsZXQgbj0tMSxvO2lmKHI+PXRoaXMucHJlTWF0Y2guaW5kZXgmJihvPXRoaXMucHJlTWF0Y2gubWF0Y2hlc1tyLXRoaXMucHJlTWF0Y2guaW5kZXhdKS5wYXJlbnQ9PXRoaXMudG9wJiZvLm1hdGNoZXNOb2RlKGUsdCxhKSluPXRoaXMudG9wLmNoaWxkcmVuLmluZGV4T2Yobyx0aGlzLmluZGV4KTtlbHNlIGZvcihsZXQgbD10aGlzLmluZGV4LHA9TWF0aC5taW4odGhpcy50b3AuY2hpbGRyZW4ubGVuZ3RoLGwrNSk7bDxwO2wrKyl7bGV0IGQ9dGhpcy50b3AuY2hpbGRyZW5bbF07aWYoZC5tYXRjaGVzTm9kZShlLHQsYSkmJiF0aGlzLnByZU1hdGNoLm1hdGNoZWQuaGFzKGQpKXtuPWw7YnJlYWt9fXJldHVybiBuPDA/ITE6KHRoaXMuZGVzdHJveUJldHdlZW4odGhpcy5pbmRleCxuKSx0aGlzLmluZGV4KyssITApfXVwZGF0ZU5vZGVBdChlLHQsYSxyLG4pe2xldCBvPXRoaXMudG9wLmNoaWxkcmVuW3JdO3JldHVybiBvLmRpcnR5PT1BZCYmby5kb209PW8uY29udGVudERPTSYmKG8uZGlydHk9ZWcpLG8udXBkYXRlKGUsdCxhLG4pPyh0aGlzLmRlc3Ryb3lCZXR3ZWVuKHRoaXMuaW5kZXgsciksdGhpcy5pbmRleCsrLCEwKTohMX1maW5kSW5kZXhXaXRoQ2hpbGQoZSl7Zm9yKDs7KXtsZXQgdD1lLnBhcmVudE5vZGU7aWYoIXQpcmV0dXJuLTE7aWYodD09dGhpcy50b3AuY29udGVudERPTSl7bGV0IGE9ZS5wbVZpZXdEZXNjO2lmKGEpe2ZvcihsZXQgcj10aGlzLmluZGV4O3I8dGhpcy50b3AuY2hpbGRyZW4ubGVuZ3RoO3IrKylpZih0aGlzLnRvcC5jaGlsZHJlbltyXT09YSlyZXR1cm4gcn1yZXR1cm4tMX1lPXR9fXVwZGF0ZU5leHROb2RlKGUsdCxhLHIsbixvKXtmb3IobGV0IGw9dGhpcy5pbmRleDtsPHRoaXMudG9wLmNoaWxkcmVuLmxlbmd0aDtsKyspe2xldCBwPXRoaXMudG9wLmNoaWxkcmVuW2xdO2lmKHAgaW5zdGFuY2VvZiBEaCl7bGV0IGQ9dGhpcy5wcmVNYXRjaC5tYXRjaGVkLmdldChwKTtpZihkIT1udWxsJiZkIT1uKXJldHVybiExO2xldCB1PXAuZG9tLGMsYj10aGlzLmlzTG9ja2VkKHUpJiYhKGUuaXNUZXh0JiZwLm5vZGUmJnAubm9kZS5pc1RleHQmJnAubm9kZURPTS5ub2RlVmFsdWU9PWUudGV4dCYmcC5kaXJ0eSE9QWQmJlpuZSh0LHAub3V0ZXJEZWNvKSk7aWYoIWImJnAudXBkYXRlKGUsdCxhLHIpKXJldHVybiB0aGlzLmRlc3Ryb3lCZXR3ZWVuKHRoaXMuaW5kZXgsbCkscC5kb20hPXUmJih0aGlzLmNoYW5nZWQ9ITApLHRoaXMuaW5kZXgrKywhMDtpZighYiYmKGM9dGhpcy5yZWNyZWF0ZVdyYXBwZXIocCxlLHQsYSxyLG8pKSlyZXR1cm4gdGhpcy5kZXN0cm95QmV0d2Vlbih0aGlzLmluZGV4LGwpLHRoaXMudG9wLmNoaWxkcmVuW3RoaXMuaW5kZXhdPWMsYy5jb250ZW50RE9NJiYoYy5kaXJ0eT1lZyxjLnVwZGF0ZUNoaWxkcmVuKHIsbysxKSxjLmRpcnR5PUhjKSx0aGlzLmNoYW5nZWQ9ITAsdGhpcy5pbmRleCsrLCEwO2JyZWFrfX1yZXR1cm4hMX1yZWNyZWF0ZVdyYXBwZXIoZSx0LGEscixuLG8pe2lmKGUuZGlydHl8fHQuaXNBdG9tfHwhZS5jaGlsZHJlbi5sZW5ndGh8fCFlLm5vZGUuY29udGVudC5lcSh0LmNvbnRlbnQpfHwhWm5lKGEsZS5vdXRlckRlY28pfHwhci5lcShlLmlubmVyRGVjbykpcmV0dXJuIG51bGw7bGV0IGw9RGguY3JlYXRlKHRoaXMudG9wLHQsYSxyLG4sbyk7aWYobC5jb250ZW50RE9NKXtsLmNoaWxkcmVuPWUuY2hpbGRyZW4sZS5jaGlsZHJlbj1bXTtmb3IobGV0IHAgb2YgbC5jaGlsZHJlbilwLnBhcmVudD1sfXJldHVybiBlLmRlc3Ryb3koKSxsfWFkZE5vZGUoZSx0LGEscixuKXtsZXQgbz1EaC5jcmVhdGUodGhpcy50b3AsZSx0LGEscixuKTtvLmNvbnRlbnRET00mJm8udXBkYXRlQ2hpbGRyZW4ocixuKzEpLHRoaXMudG9wLmNoaWxkcmVuLnNwbGljZSh0aGlzLmluZGV4KyssMCxvKSx0aGlzLmNoYW5nZWQ9ITB9cGxhY2VXaWRnZXQoZSx0LGEpe2xldCByPXRoaXMuaW5kZXg8dGhpcy50b3AuY2hpbGRyZW4ubGVuZ3RoP3RoaXMudG9wLmNoaWxkcmVuW3RoaXMuaW5kZXhdOm51bGw7aWYociYmci5tYXRjaGVzV2lkZ2V0KGUpJiYoZT09ci53aWRnZXR8fCFyLndpZGdldC50eXBlLnRvRE9NLnBhcmVudE5vZGUpKXRoaXMuaW5kZXgrKztlbHNle2xldCBuPW5ldyBHbmUodGhpcy50b3AsZSx0LGEpO3RoaXMudG9wLmNoaWxkcmVuLnNwbGljZSh0aGlzLmluZGV4KyssMCxuKSx0aGlzLmNoYW5nZWQ9ITB9fWFkZFRleHRibG9ja0hhY2tzKCl7bGV0IGU9dGhpcy50b3AuY2hpbGRyZW5bdGhpcy5pbmRleC0xXSx0PXRoaXMudG9wO2Zvcig7ZSBpbnN0YW5jZW9mICR2Oyl0PWUsZT10LmNoaWxkcmVuW3QuY2hpbGRyZW4ubGVuZ3RoLTFdOyghZXx8IShlIGluc3RhbmNlb2YgS25lKXx8L1xuJC8udGVzdChlLm5vZGUudGV4dCl8fHRoaXMudmlldy5yZXF1aXJlc0dlY2tvSGFja05vZGUmJi9ccyQvLnRlc3QoZS5ub2RlLnRleHQpKSYmKChsbnx8JG8pJiZlJiZlLmRvbS5jb250ZW50RWRpdGFibGU9PSJmYWxzZSImJnRoaXMuYWRkSGFja05vZGUoIklNRyIsdCksdGhpcy5hZGRIYWNrTm9kZSgiQlIiLHRoaXMudG9wKSl9YWRkSGFja05vZGUoZSx0KXtpZih0PT10aGlzLnRvcCYmdGhpcy5pbmRleDx0LmNoaWxkcmVuLmxlbmd0aCYmdC5jaGlsZHJlblt0aGlzLmluZGV4XS5tYXRjaGVzSGFjayhlKSl0aGlzLmluZGV4Kys7ZWxzZXtsZXQgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGUpO2U9PSJJTUciJiYoYS5jbGFzc05hbWU9IlByb3NlTWlycm9yLXNlcGFyYXRvciIsYS5hbHQ9IiIpLGU9PSJCUiImJihhLmNsYXNzTmFtZT0iUHJvc2VNaXJyb3ItdHJhaWxpbmdCcmVhayIpO2xldCByPW5ldyBZbmUodGhpcy50b3AsW10sYSxudWxsKTt0IT10aGlzLnRvcD90LmNoaWxkcmVuLnB1c2gocik6dC5jaGlsZHJlbi5zcGxpY2UodGhpcy5pbmRleCsrLDAsciksdGhpcy5jaGFuZ2VkPSEwfX1pc0xvY2tlZChlKXtyZXR1cm4gdGhpcy5sb2NrJiYoZT09dGhpcy5sb2NrfHxlLm5vZGVUeXBlPT0xJiZlLmNvbnRhaW5zKHRoaXMubG9jay5wYXJlbnROb2RlKSl9fTtpKHRLYSwicHJlTWF0Y2giKTtpKGFLYSwiY29tcGFyZVNpZGUiKTtpKHNLYSwiaXRlckRlY28iKTtpKGlLYSwiaW9zSGFja3MiKTtpKHJLYSwiZmluZFRleHRJbkZyYWdtZW50Iik7aShGdHQsInJlcGxhY2VOb2RlcyIpO2koQnR0LCJzZWxlY3Rpb25Gcm9tRE9NIik7aShvcGEsImVkaXRvck93bnNTZWxlY3Rpb24iKTtpKGN1LCJzZWxlY3Rpb25Ub0RPTSIpO25wYT1sbnx8JG8mJkh1YTw2MztpKGxwYSwidGVtcG9yYXJpbHlFZGl0YWJsZU5lYXIiKTtpKEh0dCwic2V0RWRpdGFibGUiKTtpKGNwYSwicmVzZXRFZGl0YWJsZSIpO2kob0thLCJyZW1vdmVDbGFzc09uU2VsZWN0aW9uQ2hhbmdlIik7aShuS2EsInNlbGVjdEN1cnNvcldyYXBwZXIiKTtpKGRwYSwic3luY05vZGVTZWxlY3Rpb24iKTtpKHVwYSwiY2xlYXJOb2RlU2VsZWN0aW9uIik7aShxdHQsInNlbGVjdGlvbkJldHdlZW4iKTtpKHBwYSwiaGFzRm9jdXNBbmRTZWxlY3Rpb24iKTtpKGhwYSwiaGFzU2VsZWN0aW9uIik7aShsS2EsImFuY2hvckluUmlnaHRQbGFjZSIpO2koanR0LCJtb3ZlU2VsZWN0aW9uQmxvY2siKTtpKExoLCJhcHBseSIpO2koZnBhLCJzZWxlY3RIb3Jpem9udGFsbHkiKTtpKFhuZSwibm9kZUxlbiIpO2koUVosImlzSWdub3JhYmxlIik7aShEdiwic2tpcElnbm9yZWROb2RlcyIpO2koY0thLCJza2lwSWdub3JlZE5vZGVzQmVmb3JlIik7aShkS2EsInNraXBJZ25vcmVkTm9kZXNBZnRlciIpO2kobXBhLCJpc0Jsb2NrTm9kZSIpO2kodUthLCJ0ZXh0Tm9kZUFmdGVyIik7aShwS2EsInRleHROb2RlQmVmb3JlIik7aShWdHQsInNldFNlbEZvY3VzIik7aShncGEsImZpbmREaXJlY3Rpb24iKTtpKGJwYSwic2VsZWN0VmVydGljYWxseSIpO2kodnBhLCJzdG9wTmF0aXZlSG9yaXpvbnRhbERlbGV0ZSIpO2koeHBhLCJzd2l0Y2hFZGl0YWJsZSIpO2koaEthLCJzYWZhcmlEb3duQXJyb3dCdWciKTtpKGZLYSwiZ2V0TW9kcyIpO2kobUthLCJjYXB0dXJlS2V5RG93biIpO2koVXR0LCJzZXJpYWxpemVGb3JDbGlwYm9hcmQiKTtpKFd0dCwicGFyc2VGcm9tQ2xpcGJvYXJkIik7Z0thPS9eKGF8YWJicnxhY3JvbnltfGJ8Y2l0ZXxjb2RlfGRlbHxlbXxpfGluc3xrYmR8bGFiZWx8b3V0cHV0fHF8cnVieXxzfHNhbXB8c3BhbnxzdHJvbmd8c3VifHN1cHx0aW1lfHV8dHR8dmFyKSQvaTtpKGJLYSwibm9ybWFsaXplU2libGluZ3MiKTtpKHlwYSwid2l0aFdyYXBwZXJzIik7aSh3cGEsImFkZFRvU2libGluZyIpO2koa3BhLCJjbG9zZVJpZ2h0Iik7aShHdHQsImNsb3NlUmFuZ2UiKTtpKFNwYSwiY2xvc2VTbGljZSIpO19wYT17dGhlYWQ6WyJ0YWJsZSJdLHRib2R5OlsidGFibGUiXSx0Zm9vdDpbInRhYmxlIl0sY2FwdGlvbjpbInRhYmxlIl0sY29sZ3JvdXA6WyJ0YWJsZSJdLGNvbDpbInRhYmxlIiwiY29sZ3JvdXAiXSx0cjpbInRhYmxlIiwidGJvZHkiXSx0ZDpbInRhYmxlIiwidGJvZHkiLCJ0ciJdLHRoOlsidGFibGUiLCJ0Ym9keSIsInRyIl19LE1wYT1udWxsO2koenBhLCJkZXRhY2hlZERvYyIpO0t0dD1udWxsO2kodkthLCJtYXliZVdyYXBUcnVzdGVkIik7aSh4S2EsInJlYWRIVE1MIik7aSh5S2EsInJlc3RvcmVSZXBsYWNlZFNwYWNlcyIpO2kod0thLCJhZGRDb250ZXh0Iik7JG49e30sRG49e30sa0thPXt0b3VjaHN0YXJ0OiEwLHRvdWNobW92ZTohMH0sWXR0PWNsYXNze3N0YXRpY3tpKHRoaXMsIklucHV0U3RhdGUiKX1jb25zdHJ1Y3Rvcigpe3RoaXMuc2hpZnRLZXk9ITEsdGhpcy5tb3VzZURvd249bnVsbCx0aGlzLmxhc3RLZXlDb2RlPW51bGwsdGhpcy5sYXN0S2V5Q29kZVRpbWU9MCx0aGlzLmxhc3RDbGljaz17dGltZTowLHg6MCx5OjAsdHlwZToiIixidXR0b246MH0sdGhpcy5sYXN0U2VsZWN0aW9uT3JpZ2luPW51bGwsdGhpcy5sYXN0U2VsZWN0aW9uVGltZT0wLHRoaXMubGFzdElPU0VudGVyPTAsdGhpcy5sYXN0SU9TRW50ZXJGYWxsYmFja1RpbWVvdXQ9LTEsdGhpcy5sYXN0Rm9jdXM9MCx0aGlzLmxhc3RUb3VjaD0wLHRoaXMubGFzdENocm9tZURlbGV0ZT0wLHRoaXMuY29tcG9zaW5nPSExLHRoaXMuY29tcG9zaXRpb25Ob2RlPW51bGwsdGhpcy5jb21wb3NpbmdUaW1lb3V0PS0xLHRoaXMuY29tcG9zaXRpb25Ob2Rlcz1bXSx0aGlzLmNvbXBvc2l0aW9uRW5kZWRBdD0tMmU4LHRoaXMuY29tcG9zaXRpb25JRD0xLHRoaXMuYmFkU2FmYXJpQ29tcG9zaXRpb249ITEsdGhpcy5jb21wb3NpdGlvblBlbmRpbmdDaGFuZ2VzPTAsdGhpcy5kb21DaGFuZ2VDb3VudD0wLHRoaXMuZXZlbnRIYW5kbGVycz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuaGlkZVNlbGVjdGlvbkd1YXJkPW51bGx9fTtpKFNLYSwiaW5pdElucHV0Iik7aShFaCwic2V0U2VsZWN0aW9uT3JpZ2luIik7aShfS2EsImRlc3Ryb3lJbnB1dCIpO2koWnR0LCJlbnN1cmVMaXN0ZW5lcnMiKTtpKFh0dCwicnVuQ3VzdG9tSGFuZGxlciIpO2koTUthLCJldmVudEJlbG9uZ3NUb1ZpZXciKTtpKHpLYSwiZGlzcGF0Y2hFdmVudCIpLERuLmtleWRvd249KHMsZSk9PntsZXQgdD1lO2lmKHMuaW5wdXQuc2hpZnRLZXk9dC5rZXlDb2RlPT0xNnx8dC5zaGlmdEtleSwhVHBhKHMsdCkmJihzLmlucHV0Lmxhc3RLZXlDb2RlPXQua2V5Q29kZSxzLmlucHV0Lmxhc3RLZXlDb2RlVGltZT1EYXRlLm5vdygpLCEobnUmJiRvJiZ0LmtleUNvZGU9PTEzKSkpaWYodC5rZXlDb2RlIT0yMjkmJnMuZG9tT2JzZXJ2ZXIuZm9yY2VGbHVzaCgpLEN2JiZ0LmtleUNvZGU9PTEzJiYhdC5jdHJsS2V5JiYhdC5hbHRLZXkmJiF0Lm1ldGFLZXkpe2xldCBhPURhdGUubm93KCk7cy5pbnB1dC5sYXN0SU9TRW50ZXI9YSxzLmlucHV0Lmxhc3RJT1NFbnRlckZhbGxiYWNrVGltZW91dD1zZXRUaW1lb3V0KCgpPT57cy5pbnB1dC5sYXN0SU9TRW50ZXI9PWEmJihzLnNvbWVQcm9wKCJoYW5kbGVLZXlEb3duIixyPT5yKHMsSjgoMTMsIkVudGVyIikpKSxzLmlucHV0Lmxhc3RJT1NFbnRlcj0wKX0sMjAwKX1lbHNlIHMuc29tZVByb3AoImhhbmRsZUtleURvd24iLGE9PmEocyx0KSl8fG1LYShzLHQpP3QucHJldmVudERlZmF1bHQoKTpFaChzLCJrZXkiKX0sRG4ua2V5dXA9KHMsZSk9PntlLmtleUNvZGU9PTE2JiYocy5pbnB1dC5zaGlmdEtleT0hMSl9LERuLmtleXByZXNzPShzLGUpPT57bGV0IHQ9ZTtpZihUcGEocyx0KXx8IXQuY2hhckNvZGV8fHQuY3RybEtleSYmIXQuYWx0S2V5fHxCYyYmdC5tZXRhS2V5KXJldHVybjtpZihzLnNvbWVQcm9wKCJoYW5kbGVLZXlQcmVzcyIscj0+cihzLHQpKSl7dC5wcmV2ZW50RGVmYXVsdCgpO3JldHVybn1sZXQgYT1zLnN0YXRlLnNlbGVjdGlvbjtpZighKGEgaW5zdGFuY2VvZiBKdCl8fCFhLiRmcm9tLnNhbWVQYXJlbnQoYS4kdG8pKXtsZXQgcj1TdHJpbmcuZnJvbUNoYXJDb2RlKHQuY2hhckNvZGUpLG49aSgoKT0+cy5zdGF0ZS50ci5pbnNlcnRUZXh0KHIpLnNjcm9sbEludG9WaWV3KCksImRlZmx0Iik7IS9bXHJcbl0vLnRlc3QocikmJiFzLnNvbWVQcm9wKCJoYW5kbGVUZXh0SW5wdXQiLG89Pm8ocyxhLiRmcm9tLnBvcyxhLiR0by5wb3MscixuKSkmJnMuZGlzcGF0Y2gobigpKSx0LnByZXZlbnREZWZhdWx0KCl9fTtpKFFuZSwiZXZlbnRDb29yZHMiKTtpKENLYSwiaXNOZWFyIik7aShRdHQsInJ1bkhhbmRsZXJPbkNvbnRleHQiKTtpKEx2LCJ1cGRhdGVTZWxlY3Rpb24iKTtpKFRLYSwic2VsZWN0Q2xpY2tlZExlYWYiKTtpKCRLYSwic2VsZWN0Q2xpY2tlZE5vZGUiKTtpKERLYSwiaGFuZGxlU2luZ2xlQ2xpY2siKTtpKExLYSwiaGFuZGxlRG91YmxlQ2xpY2siKTtpKEVLYSwiaGFuZGxlVHJpcGxlQ2xpY2siKTtpKFBLYSwiZGVmYXVsdFRyaXBsZUNsaWNrIik7aShKdHQsImZvcmNlRE9NRmx1c2giKTtDcGE9QmM/Im1ldGFLZXkiOiJjdHJsS2V5Ijskbi5tb3VzZWRvd249KHMsZSk9PntsZXQgdD1lO3MuaW5wdXQuc2hpZnRLZXk9dC5zaGlmdEtleTtsZXQgYT1KdHQocykscj1EYXRlLm5vdygpLG49InNpbmdsZUNsaWNrIjtyLXMuaW5wdXQubGFzdENsaWNrLnRpbWU8NTAwJiZDS2EodCxzLmlucHV0Lmxhc3RDbGljaykmJiF0W0NwYV0mJnMuaW5wdXQubGFzdENsaWNrLmJ1dHRvbj09dC5idXR0b24mJihzLmlucHV0Lmxhc3RDbGljay50eXBlPT0ic2luZ2xlQ2xpY2siP249ImRvdWJsZUNsaWNrIjpzLmlucHV0Lmxhc3RDbGljay50eXBlPT0iZG91YmxlQ2xpY2siJiYobj0idHJpcGxlQ2xpY2siKSkscy5pbnB1dC5sYXN0Q2xpY2s9e3RpbWU6cix4OnQuY2xpZW50WCx5OnQuY2xpZW50WSx0eXBlOm4sYnV0dG9uOnQuYnV0dG9ufTtsZXQgbz1zLnBvc0F0Q29vcmRzKFFuZSh0KSk7byYmKG49PSJzaW5nbGVDbGljayI/KHMuaW5wdXQubW91c2VEb3duJiZzLmlucHV0Lm1vdXNlRG93bi5kb25lKCkscy5pbnB1dC5tb3VzZURvd249bmV3IGVhdChzLG8sdCwhIWEpKToobj09ImRvdWJsZUNsaWNrIj9MS2E6RUthKShzLG8ucG9zLG8uaW5zaWRlLHQpP3QucHJldmVudERlZmF1bHQoKTpFaChzLCJwb2ludGVyIikpfTtlYXQ9Y2xhc3N7c3RhdGlje2kodGhpcywiTW91c2VEb3duIil9Y29uc3RydWN0b3IoZSx0LGEscil7dGhpcy52aWV3PWUsdGhpcy5wb3M9dCx0aGlzLmV2ZW50PWEsdGhpcy5mbHVzaGVkPXIsdGhpcy5kZWxheWVkU2VsZWN0aW9uU3luYz0hMSx0aGlzLm1pZ2h0RHJhZz1udWxsLHRoaXMuc3RhcnREb2M9ZS5zdGF0ZS5kb2MsdGhpcy5zZWxlY3ROb2RlPSEhYVtDcGFdLHRoaXMuYWxsb3dEZWZhdWx0PWEuc2hpZnRLZXk7bGV0IG4sbztpZih0Lmluc2lkZT4tMSluPWUuc3RhdGUuZG9jLm5vZGVBdCh0Lmluc2lkZSksbz10Lmluc2lkZTtlbHNle2xldCB1PWUuc3RhdGUuZG9jLnJlc29sdmUodC5wb3MpO249dS5wYXJlbnQsbz11LmRlcHRoP3UuYmVmb3JlKCk6MH1sZXQgbD1yP251bGw6YS50YXJnZXQscD1sP2UuZG9jVmlldy5uZWFyZXN0RGVzYyhsLCEwKTpudWxsO3RoaXMudGFyZ2V0PXAmJnAubm9kZURPTS5ub2RlVHlwZT09MT9wLm5vZGVET006bnVsbDtsZXR7c2VsZWN0aW9uOmR9PWUuc3RhdGU7YS5idXR0b249PTAmJihuLnR5cGUuc3BlYy5kcmFnZ2FibGUmJm4udHlwZS5zcGVjLnNlbGVjdGFibGUhPT0hMXx8ZCBpbnN0YW5jZW9mIEZ0JiZkLmZyb208PW8mJmQudG8+bykmJih0aGlzLm1pZ2h0RHJhZz17bm9kZTpuLHBvczpvLGFkZEF0dHI6ISEodGhpcy50YXJnZXQmJiF0aGlzLnRhcmdldC5kcmFnZ2FibGUpLHNldFVuZWRpdGFibGU6ISEodGhpcy50YXJnZXQmJkZjJiYhdGhpcy50YXJnZXQuaGFzQXR0cmlidXRlKCJjb250ZW50RWRpdGFibGUiKSl9KSx0aGlzLnRhcmdldCYmdGhpcy5taWdodERyYWcmJih0aGlzLm1pZ2h0RHJhZy5hZGRBdHRyfHx0aGlzLm1pZ2h0RHJhZy5zZXRVbmVkaXRhYmxlKSYmKHRoaXMudmlldy5kb21PYnNlcnZlci5zdG9wKCksdGhpcy5taWdodERyYWcuYWRkQXR0ciYmKHRoaXMudGFyZ2V0LmRyYWdnYWJsZT0hMCksdGhpcy5taWdodERyYWcuc2V0VW5lZGl0YWJsZSYmc2V0VGltZW91dCgoKT0+e3RoaXMudmlldy5pbnB1dC5tb3VzZURvd249PXRoaXMmJnRoaXMudGFyZ2V0LnNldEF0dHJpYnV0ZSgiY29udGVudEVkaXRhYmxlIiwiZmFsc2UiKX0sMjApLHRoaXMudmlldy5kb21PYnNlcnZlci5zdGFydCgpKSxlLnJvb3QuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdGhpcy51cD10aGlzLnVwLmJpbmQodGhpcykpLGUucm9vdC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMubW92ZT10aGlzLm1vdmUuYmluZCh0aGlzKSksRWgoZSwicG9pbnRlciIpfWRvbmUoKXt0aGlzLnZpZXcucm9vdC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLnVwKSx0aGlzLnZpZXcucm9vdC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMubW92ZSksdGhpcy5taWdodERyYWcmJnRoaXMudGFyZ2V0JiYodGhpcy52aWV3LmRvbU9ic2VydmVyLnN0b3AoKSx0aGlzLm1pZ2h0RHJhZy5hZGRBdHRyJiZ0aGlzLnRhcmdldC5yZW1vdmVBdHRyaWJ1dGUoImRyYWdnYWJsZSIpLHRoaXMubWlnaHREcmFnLnNldFVuZWRpdGFibGUmJnRoaXMudGFyZ2V0LnJlbW92ZUF0dHJpYnV0ZSgiY29udGVudEVkaXRhYmxlIiksdGhpcy52aWV3LmRvbU9ic2VydmVyLnN0YXJ0KCkpLHRoaXMuZGVsYXllZFNlbGVjdGlvblN5bmMmJnNldFRpbWVvdXQoKCk9PmN1KHRoaXMudmlldykpLHRoaXMudmlldy5pbnB1dC5tb3VzZURvd249bnVsbH11cChlKXtpZih0aGlzLmRvbmUoKSwhdGhpcy52aWV3LmRvbS5jb250YWlucyhlLnRhcmdldCkpcmV0dXJuO2xldCB0PXRoaXMucG9zO3RoaXMudmlldy5zdGF0ZS5kb2MhPXRoaXMuc3RhcnREb2MmJih0PXRoaXMudmlldy5wb3NBdENvb3JkcyhRbmUoZSkpKSx0aGlzLnVwZGF0ZUFsbG93RGVmYXVsdChlKSx0aGlzLmFsbG93RGVmYXVsdHx8IXQ/RWgodGhpcy52aWV3LCJwb2ludGVyIik6REthKHRoaXMudmlldyx0LnBvcyx0Lmluc2lkZSxlLHRoaXMuc2VsZWN0Tm9kZSk/ZS5wcmV2ZW50RGVmYXVsdCgpOmUuYnV0dG9uPT0wJiYodGhpcy5mbHVzaGVkfHxsbiYmdGhpcy5taWdodERyYWcmJiF0aGlzLm1pZ2h0RHJhZy5ub2RlLmlzQXRvbXx8JG8mJiF0aGlzLnZpZXcuc3RhdGUuc2VsZWN0aW9uLnZpc2libGUmJk1hdGgubWluKE1hdGguYWJzKHQucG9zLXRoaXMudmlldy5zdGF0ZS5zZWxlY3Rpb24uZnJvbSksTWF0aC5hYnModC5wb3MtdGhpcy52aWV3LnN0YXRlLnNlbGVjdGlvbi50bykpPD0yKT8oTHYodGhpcy52aWV3LFF0Lm5lYXIodGhpcy52aWV3LnN0YXRlLmRvYy5yZXNvbHZlKHQucG9zKSksInBvaW50ZXIiKSxlLnByZXZlbnREZWZhdWx0KCkpOkVoKHRoaXMudmlldywicG9pbnRlciIpfW1vdmUoZSl7dGhpcy51cGRhdGVBbGxvd0RlZmF1bHQoZSksRWgodGhpcy52aWV3LCJwb2ludGVyIiksZS5idXR0b25zPT0wJiZ0aGlzLmRvbmUoKX11cGRhdGVBbGxvd0RlZmF1bHQoZSl7IXRoaXMuYWxsb3dEZWZhdWx0JiYoTWF0aC5hYnModGhpcy5ldmVudC54LWUuY2xpZW50WCk+NHx8TWF0aC5hYnModGhpcy5ldmVudC55LWUuY2xpZW50WSk+NCkmJih0aGlzLmFsbG93RGVmYXVsdD0hMCl9fTskbi50b3VjaHN0YXJ0PXM9PntzLmlucHV0Lmxhc3RUb3VjaD1EYXRlLm5vdygpLEp0dChzKSxFaChzLCJwb2ludGVyIil9LCRuLnRvdWNobW92ZT1zPT57cy5pbnB1dC5sYXN0VG91Y2g9RGF0ZS5ub3coKSxFaChzLCJwb2ludGVyIil9LCRuLmNvbnRleHRtZW51PXM9Pkp0dChzKTtpKFRwYSwiaW5Pck5lYXJDb21wb3NpdGlvbiIpO0lLYT1udT81ZTM6LTE7RG4uY29tcG9zaXRpb25zdGFydD1Ebi5jb21wb3NpdGlvbnVwZGF0ZT1zPT57aWYoIXMuY29tcG9zaW5nKXtzLmRvbU9ic2VydmVyLmZsdXNoKCk7bGV0e3N0YXRlOmV9PXMsdD1lLnNlbGVjdGlvbi4kdG87aWYoZS5zZWxlY3Rpb24gaW5zdGFuY2VvZiBKdCYmKGUuc3RvcmVkTWFya3N8fCF0LnRleHRPZmZzZXQmJnQucGFyZW50T2Zmc2V0JiZ0Lm5vZGVCZWZvcmUubWFya3Muc29tZShhPT5hLnR5cGUuc3BlYy5pbmNsdXNpdmU9PT0hMSl8fCRvJiZxdWEmJkFLYShzKSkpcy5tYXJrQ3Vyc29yPXMuc3RhdGUuc3RvcmVkTWFya3N8fHQubWFya3MoKSxKWihzLCEwKSxzLm1hcmtDdXJzb3I9bnVsbDtlbHNlIGlmKEpaKHMsIWUuc2VsZWN0aW9uLmVtcHR5KSxGYyYmZS5zZWxlY3Rpb24uZW1wdHkmJnQucGFyZW50T2Zmc2V0JiYhdC50ZXh0T2Zmc2V0JiZ0Lm5vZGVCZWZvcmUubWFya3MubGVuZ3RoKXtsZXQgYT1zLmRvbVNlbGVjdGlvblJhbmdlKCk7Zm9yKGxldCByPWEuZm9jdXNOb2RlLG49YS5mb2N1c09mZnNldDtyJiZyLm5vZGVUeXBlPT0xJiZuIT0wOyl7bGV0IG89bjwwP3IubGFzdENoaWxkOnIuY2hpbGROb2Rlc1tuLTFdO2lmKCFvKWJyZWFrO2lmKG8ubm9kZVR5cGU9PTMpe2xldCBsPXMuZG9tU2VsZWN0aW9uKCk7bCYmbC5jb2xsYXBzZShvLG8ubm9kZVZhbHVlLmxlbmd0aCk7YnJlYWt9ZWxzZSByPW8sbj0tMX19cy5pbnB1dC5jb21wb3Npbmc9ITB9JHBhKHMsSUthKX07aShBS2EsInNlbGVjdGlvbkJlZm9yZVVuZWRpdGFibGUiKSxEbi5jb21wb3NpdGlvbmVuZD0ocyxlKT0+e3MuY29tcG9zaW5nJiYocy5pbnB1dC5jb21wb3Npbmc9ITEscy5pbnB1dC5jb21wb3NpdGlvbkVuZGVkQXQ9ZS50aW1lU3RhbXAscy5pbnB1dC5jb21wb3NpdGlvblBlbmRpbmdDaGFuZ2VzPXMuZG9tT2JzZXJ2ZXIucGVuZGluZ1JlY29yZHMoKS5sZW5ndGg/cy5pbnB1dC5jb21wb3NpdGlvbklEOjAscy5pbnB1dC5jb21wb3NpdGlvbk5vZGU9bnVsbCxzLmlucHV0LmJhZFNhZmFyaUNvbXBvc2l0aW9uP3MuZG9tT2JzZXJ2ZXIuZm9yY2VGbHVzaCgpOnMuaW5wdXQuY29tcG9zaXRpb25QZW5kaW5nQ2hhbmdlcyYmUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+cy5kb21PYnNlcnZlci5mbHVzaCgpKSxzLmlucHV0LmNvbXBvc2l0aW9uSUQrKywkcGEocywyMCkpfTtpKCRwYSwic2NoZWR1bGVDb21wb3NlRW5kIik7aShEcGEsImNsZWFyQ29tcG9zaXRpb24iKTtpKE5LYSwiZmluZENvbXBvc2l0aW9uTm9kZSIpO2koUkthLCJ0aW1lc3RhbXBGcm9tQ3VzdG9tRXZlbnQiKTtpKEpaLCJlbmRDb21wb3NpdGlvbiIpO2koT0thLCJjYXB0dXJlQ29weSIpO2VYPUNsJiZUaDwxNXx8Q3YmJk9HYTw2MDQ7JG4uY29weT1Ebi5jdXQ9KHMsZSk9PntsZXQgdD1lLGE9cy5zdGF0ZS5zZWxlY3Rpb24scj10LnR5cGU9PSJjdXQiO2lmKGEuZW1wdHkpcmV0dXJuO2xldCBuPWVYP251bGw6dC5jbGlwYm9hcmREYXRhLG89YS5jb250ZW50KCkse2RvbTpsLHRleHQ6cH09VXR0KHMsbyk7bj8odC5wcmV2ZW50RGVmYXVsdCgpLG4uY2xlYXJEYXRhKCksbi5zZXREYXRhKCJ0ZXh0L2h0bWwiLGwuaW5uZXJIVE1MKSxuLnNldERhdGEoInRleHQvcGxhaW4iLHApKTpPS2EocyxsKSxyJiZzLmRpc3BhdGNoKHMuc3RhdGUudHIuZGVsZXRlU2VsZWN0aW9uKCkuc2Nyb2xsSW50b1ZpZXcoKS5zZXRNZXRhKCJ1aUV2ZW50IiwiY3V0IikpfTtpKEZLYSwic2xpY2VTaW5nbGVOb2RlIik7aShCS2EsImNhcHR1cmVQYXN0ZSIpO2kodFgsImRvUGFzdGUiKTtpKExwYSwiZ2V0VGV4dCIpLERuLnBhc3RlPShzLGUpPT57bGV0IHQ9ZTtpZihzLmNvbXBvc2luZyYmIW51KXJldHVybjtsZXQgYT1lWD9udWxsOnQuY2xpcGJvYXJkRGF0YSxyPXMuaW5wdXQuc2hpZnRLZXkmJnMuaW5wdXQubGFzdEtleUNvZGUhPTQ1O2EmJnRYKHMsTHBhKGEpLGEuZ2V0RGF0YSgidGV4dC9odG1sIikscix0KT90LnByZXZlbnREZWZhdWx0KCk6QkthKHMsdCl9O0puZT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJEcmFnZ2luZyIpfWNvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLnNsaWNlPWUsdGhpcy5tb3ZlPXQsdGhpcy5ub2RlPWF9fSxIS2E9QmM/ImFsdEtleSI6ImN0cmxLZXkiO2koRXBhLCJkcmFnTW92ZXMiKSwkbi5kcmFnc3RhcnQ9KHMsZSk9PntsZXQgdD1lLGE9cy5pbnB1dC5tb3VzZURvd247aWYoYSYmYS5kb25lKCksIXQuZGF0YVRyYW5zZmVyKXJldHVybjtsZXQgcj1zLnN0YXRlLnNlbGVjdGlvbixuPXIuZW1wdHk/bnVsbDpzLnBvc0F0Q29vcmRzKFFuZSh0KSksbztpZighKG4mJm4ucG9zPj1yLmZyb20mJm4ucG9zPD0ociBpbnN0YW5jZW9mIEZ0P3IudG8tMTpyLnRvKSkpe2lmKGEmJmEubWlnaHREcmFnKW89RnQuY3JlYXRlKHMuc3RhdGUuZG9jLGEubWlnaHREcmFnLnBvcyk7ZWxzZSBpZih0LnRhcmdldCYmdC50YXJnZXQubm9kZVR5cGU9PTEpe2xldCBjPXMuZG9jVmlldy5uZWFyZXN0RGVzYyh0LnRhcmdldCwhMCk7YyYmYy5ub2RlLnR5cGUuc3BlYy5kcmFnZ2FibGUmJmMhPXMuZG9jVmlldyYmKG89RnQuY3JlYXRlKHMuc3RhdGUuZG9jLGMucG9zQmVmb3JlKSl9fWxldCBsPShvfHxzLnN0YXRlLnNlbGVjdGlvbikuY29udGVudCgpLHtkb206cCx0ZXh0OmQsc2xpY2U6dX09VXR0KHMsbCk7KCF0LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGh8fCEkb3x8SHVhPjEyMCkmJnQuZGF0YVRyYW5zZmVyLmNsZWFyRGF0YSgpLHQuZGF0YVRyYW5zZmVyLnNldERhdGEoZVg/IlRleHQiOiJ0ZXh0L2h0bWwiLHAuaW5uZXJIVE1MKSx0LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkPSJjb3B5TW92ZSIsZVh8fHQuZGF0YVRyYW5zZmVyLnNldERhdGEoInRleHQvcGxhaW4iLGQpLHMuZHJhZ2dpbmc9bmV3IEpuZSh1LEVwYShzLHQpLG8pfSwkbi5kcmFnZW5kPXM9PntsZXQgZT1zLmRyYWdnaW5nO3dpbmRvdy5zZXRUaW1lb3V0KCgpPT57cy5kcmFnZ2luZz09ZSYmKHMuZHJhZ2dpbmc9bnVsbCl9LDUwKX0sRG4uZHJhZ292ZXI9RG4uZHJhZ2VudGVyPShzLGUpPT5lLnByZXZlbnREZWZhdWx0KCksRG4uZHJvcD0ocyxlKT0+e3RyeXtxS2EocyxlLHMuZHJhZ2dpbmcpfWZpbmFsbHl7cy5kcmFnZ2luZz1udWxsfX07aShxS2EsImhhbmRsZURyb3AiKSwkbi5mb2N1cz1zPT57cy5pbnB1dC5sYXN0Rm9jdXM9RGF0ZS5ub3coKSxzLmZvY3VzZWR8fChzLmRvbU9ic2VydmVyLnN0b3AoKSxzLmRvbS5jbGFzc0xpc3QuYWRkKCJQcm9zZU1pcnJvci1mb2N1c2VkIikscy5kb21PYnNlcnZlci5zdGFydCgpLHMuZm9jdXNlZD0hMCxzZXRUaW1lb3V0KCgpPT57cy5kb2NWaWV3JiZzLmhhc0ZvY3VzKCkmJiFzLmRvbU9ic2VydmVyLmN1cnJlbnRTZWxlY3Rpb24uZXEocy5kb21TZWxlY3Rpb25SYW5nZSgpKSYmY3Uocyl9LDIwKSl9LCRuLmJsdXI9KHMsZSk9PntsZXQgdD1lO3MuZm9jdXNlZCYmKHMuZG9tT2JzZXJ2ZXIuc3RvcCgpLHMuZG9tLmNsYXNzTGlzdC5yZW1vdmUoIlByb3NlTWlycm9yLWZvY3VzZWQiKSxzLmRvbU9ic2VydmVyLnN0YXJ0KCksdC5yZWxhdGVkVGFyZ2V0JiZzLmRvbS5jb250YWlucyh0LnJlbGF0ZWRUYXJnZXQpJiZzLmRvbU9ic2VydmVyLmN1cnJlbnRTZWxlY3Rpb24uY2xlYXIoKSxzLmZvY3VzZWQ9ITEpfSwkbi5iZWZvcmVpbnB1dD0ocyxlKT0+e2lmKCRvJiZudSYmZS5pbnB1dFR5cGU9PSJkZWxldGVDb250ZW50QmFja3dhcmQiKXtzLmRvbU9ic2VydmVyLmZsdXNoU29vbigpO2xldHtkb21DaGFuZ2VDb3VudDphfT1zLmlucHV0O3NldFRpbWVvdXQoKCk9PntpZihzLmlucHV0LmRvbUNoYW5nZUNvdW50IT1hfHwocy5kb20uYmx1cigpLHMuZm9jdXMoKSxzLnNvbWVQcm9wKCJoYW5kbGVLZXlEb3duIixuPT5uKHMsSjgoOCwiQmFja3NwYWNlIikpKSkpcmV0dXJuO2xldHskY3Vyc29yOnJ9PXMuc3RhdGUuc2VsZWN0aW9uO3ImJnIucG9zPjAmJnMuZGlzcGF0Y2gocy5zdGF0ZS50ci5kZWxldGUoci5wb3MtMSxyLnBvcykuc2Nyb2xsSW50b1ZpZXcoKSl9LDUwKX19O2ZvcihsZXQgcyBpbiBEbikkbltzXT1EbltzXTtpKGFYLCJjb21wYXJlT2JqcyIpO2VsZT1jbGFzcyBze3N0YXRpY3tpKHRoaXMsIldpZGdldFR5cGUiKX1jb25zdHJ1Y3RvcihlLHQpe3RoaXMudG9ET009ZSx0aGlzLnNwZWM9dHx8aWcsdGhpcy5zaWRlPXRoaXMuc3BlYy5zaWRlfHwwfW1hcChlLHQsYSxyKXtsZXR7cG9zOm4sZGVsZXRlZDpvfT1lLm1hcFJlc3VsdCh0LmZyb20rcix0aGlzLnNpZGU8MD8tMToxKTtyZXR1cm4gbz9udWxsOm5ldyB0MihuLWEsbi1hLHRoaXMpfXZhbGlkKCl7cmV0dXJuITB9ZXEoZSl7cmV0dXJuIHRoaXM9PWV8fGUgaW5zdGFuY2VvZiBzJiYodGhpcy5zcGVjLmtleSYmdGhpcy5zcGVjLmtleT09ZS5zcGVjLmtleXx8dGhpcy50b0RPTT09ZS50b0RPTSYmYVgodGhpcy5zcGVjLGUuc3BlYykpfWRlc3Ryb3koZSl7dGhpcy5zcGVjLmRlc3Ryb3kmJnRoaXMuc3BlYy5kZXN0cm95KGUpfX0sc2c9Y2xhc3Mgc3tzdGF0aWN7aSh0aGlzLCJJbmxpbmVUeXBlIil9Y29uc3RydWN0b3IoZSx0KXt0aGlzLmF0dHJzPWUsdGhpcy5zcGVjPXR8fGlnfW1hcChlLHQsYSxyKXtsZXQgbj1lLm1hcCh0LmZyb20rcix0aGlzLnNwZWMuaW5jbHVzaXZlU3RhcnQ/LTE6MSktYSxvPWUubWFwKHQudG8rcix0aGlzLnNwZWMuaW5jbHVzaXZlRW5kPzE6LTEpLWE7cmV0dXJuIG4+PW8/bnVsbDpuZXcgdDIobixvLHRoaXMpfXZhbGlkKGUsdCl7cmV0dXJuIHQuZnJvbTx0LnRvfWVxKGUpe3JldHVybiB0aGlzPT1lfHxlIGluc3RhbmNlb2YgcyYmYVgodGhpcy5hdHRycyxlLmF0dHJzKSYmYVgodGhpcy5zcGVjLGUuc3BlYyl9c3RhdGljIGlzKGUpe3JldHVybiBlLnR5cGUgaW5zdGFuY2VvZiBzfWRlc3Ryb3koKXt9fSx0YXQ9Y2xhc3Mgc3tzdGF0aWN7aSh0aGlzLCJOb2RlVHlwZSIpfWNvbnN0cnVjdG9yKGUsdCl7dGhpcy5hdHRycz1lLHRoaXMuc3BlYz10fHxpZ31tYXAoZSx0LGEscil7bGV0IG49ZS5tYXBSZXN1bHQodC5mcm9tK3IsMSk7aWYobi5kZWxldGVkKXJldHVybiBudWxsO2xldCBvPWUubWFwUmVzdWx0KHQudG8rciwtMSk7cmV0dXJuIG8uZGVsZXRlZHx8by5wb3M8PW4ucG9zP251bGw6bmV3IHQyKG4ucG9zLWEsby5wb3MtYSx0aGlzKX12YWxpZChlLHQpe2xldHtpbmRleDphLG9mZnNldDpyfT1lLmNvbnRlbnQuZmluZEluZGV4KHQuZnJvbSksbjtyZXR1cm4gcj09dC5mcm9tJiYhKG49ZS5jaGlsZChhKSkuaXNUZXh0JiZyK24ubm9kZVNpemU9PXQudG99ZXEoZSl7cmV0dXJuIHRoaXM9PWV8fGUgaW5zdGFuY2VvZiBzJiZhWCh0aGlzLmF0dHJzLGUuYXR0cnMpJiZhWCh0aGlzLnNwZWMsZS5zcGVjKX1kZXN0cm95KCl7fX0sdDI9Y2xhc3Mgc3tzdGF0aWN7aSh0aGlzLCJEZWNvcmF0aW9uIil9Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuZnJvbT1lLHRoaXMudG89dCx0aGlzLnR5cGU9YX1jb3B5KGUsdCl7cmV0dXJuIG5ldyBzKGUsdCx0aGlzLnR5cGUpfWVxKGUsdD0wKXtyZXR1cm4gdGhpcy50eXBlLmVxKGUudHlwZSkmJnRoaXMuZnJvbSt0PT1lLmZyb20mJnRoaXMudG8rdD09ZS50b31tYXAoZSx0LGEpe3JldHVybiB0aGlzLnR5cGUubWFwKGUsdGhpcyx0LGEpfXN0YXRpYyB3aWRnZXQoZSx0LGEpe3JldHVybiBuZXcgcyhlLGUsbmV3IGVsZSh0LGEpKX1zdGF0aWMgaW5saW5lKGUsdCxhLHIpe3JldHVybiBuZXcgcyhlLHQsbmV3IHNnKGEscikpfXN0YXRpYyBub2RlKGUsdCxhLHIpe3JldHVybiBuZXcgcyhlLHQsbmV3IHRhdChhLHIpKX1nZXQgc3BlYygpe3JldHVybiB0aGlzLnR5cGUuc3BlY31nZXQgaW5saW5lKCl7cmV0dXJuIHRoaXMudHlwZSBpbnN0YW5jZW9mIHNnfWdldCB3aWRnZXQoKXtyZXR1cm4gdGhpcy50eXBlIGluc3RhbmNlb2YgZWxlfX0sRXY9W10saWc9e30sTG49Y2xhc3Mgc3tzdGF0aWN7aSh0aGlzLCJEZWNvcmF0aW9uU2V0Iil9Y29uc3RydWN0b3IoZSx0KXt0aGlzLmxvY2FsPWUubGVuZ3RoP2U6RXYsdGhpcy5jaGlsZHJlbj10Lmxlbmd0aD90OkV2fXN0YXRpYyBjcmVhdGUoZSx0KXtyZXR1cm4gdC5sZW5ndGg/YWxlKHQsZSwwLGlnKTpjbn1maW5kKGUsdCxhKXtsZXQgcj1bXTtyZXR1cm4gdGhpcy5maW5kSW5uZXIoZT8/MCx0Pz8xZTksciwwLGEpLHJ9ZmluZElubmVyKGUsdCxhLHIsbil7Zm9yKGxldCBvPTA7bzx0aGlzLmxvY2FsLmxlbmd0aDtvKyspe2xldCBsPXRoaXMubG9jYWxbb107bC5mcm9tPD10JiZsLnRvPj1lJiYoIW58fG4obC5zcGVjKSkmJmEucHVzaChsLmNvcHkobC5mcm9tK3IsbC50bytyKSl9Zm9yKGxldCBvPTA7bzx0aGlzLmNoaWxkcmVuLmxlbmd0aDtvKz0zKWlmKHRoaXMuY2hpbGRyZW5bb108dCYmdGhpcy5jaGlsZHJlbltvKzFdPmUpe2xldCBsPXRoaXMuY2hpbGRyZW5bb10rMTt0aGlzLmNoaWxkcmVuW28rMl0uZmluZElubmVyKGUtbCx0LWwsYSxyK2wsbil9fW1hcChlLHQsYSl7cmV0dXJuIHRoaXM9PWNufHxlLm1hcHMubGVuZ3RoPT0wP3RoaXM6dGhpcy5tYXBJbm5lcihlLHQsMCwwLGF8fGlnKX1tYXBJbm5lcihlLHQsYSxyLG4pe2xldCBvO2ZvcihsZXQgbD0wO2w8dGhpcy5sb2NhbC5sZW5ndGg7bCsrKXtsZXQgcD10aGlzLmxvY2FsW2xdLm1hcChlLGEscik7cCYmcC50eXBlLnZhbGlkKHQscCk/KG98fChvPVtdKSkucHVzaChwKTpuLm9uUmVtb3ZlJiZuLm9uUmVtb3ZlKHRoaXMubG9jYWxbbF0uc3BlYyl9cmV0dXJuIHRoaXMuY2hpbGRyZW4ubGVuZ3RoP2pLYSh0aGlzLmNoaWxkcmVuLG98fFtdLGUsdCxhLHIsbik6bz9uZXcgcyhvLnNvcnQocmcpLEV2KTpjbn1hZGQoZSx0KXtyZXR1cm4gdC5sZW5ndGg/dGhpcz09Y24/cy5jcmVhdGUoZSx0KTp0aGlzLmFkZElubmVyKGUsdCwwKTp0aGlzfWFkZElubmVyKGUsdCxhKXtsZXQgcixuPTA7ZS5mb3JFYWNoKChsLHApPT57bGV0IGQ9cCthLHU7aWYodT1JcGEodCxsLGQpKXtmb3Iocnx8KHI9dGhpcy5jaGlsZHJlbi5zbGljZSgpKTtuPHIubGVuZ3RoJiZyW25dPHA7KW4rPTM7cltuXT09cD9yW24rMl09cltuKzJdLmFkZElubmVyKGwsdSxkKzEpOnIuc3BsaWNlKG4sMCxwLHArbC5ub2RlU2l6ZSxhbGUodSxsLGQrMSxpZykpLG4rPTN9fSk7bGV0IG89UHBhKG4/QXBhKHQpOnQsLWEpO2ZvcihsZXQgbD0wO2w8by5sZW5ndGg7bCsrKW9bbF0udHlwZS52YWxpZChlLG9bbF0pfHxvLnNwbGljZShsLS0sMSk7cmV0dXJuIG5ldyBzKG8ubGVuZ3RoP3RoaXMubG9jYWwuY29uY2F0KG8pLnNvcnQocmcpOnRoaXMubG9jYWwscnx8dGhpcy5jaGlsZHJlbil9cmVtb3ZlKGUpe3JldHVybiBlLmxlbmd0aD09MHx8dGhpcz09Y24/dGhpczp0aGlzLnJlbW92ZUlubmVyKGUsMCl9cmVtb3ZlSW5uZXIoZSx0KXtsZXQgYT10aGlzLmNoaWxkcmVuLHI9dGhpcy5sb2NhbDtmb3IobGV0IG49MDtuPGEubGVuZ3RoO24rPTMpe2xldCBvLGw9YVtuXSt0LHA9YVtuKzFdK3Q7Zm9yKGxldCB1PTAsYzt1PGUubGVuZ3RoO3UrKykoYz1lW3VdKSYmYy5mcm9tPmwmJmMudG88cCYmKGVbdV09bnVsbCwob3x8KG89W10pKS5wdXNoKGMpKTtpZighbyljb250aW51ZTthPT10aGlzLmNoaWxkcmVuJiYoYT10aGlzLmNoaWxkcmVuLnNsaWNlKCkpO2xldCBkPWFbbisyXS5yZW1vdmVJbm5lcihvLGwrMSk7ZCE9Y24/YVtuKzJdPWQ6KGEuc3BsaWNlKG4sMyksbi09Myl9aWYoci5sZW5ndGgpe2ZvcihsZXQgbj0wLG87bjxlLmxlbmd0aDtuKyspaWYobz1lW25dKWZvcihsZXQgbD0wO2w8ci5sZW5ndGg7bCsrKXJbbF0uZXEobyx0KSYmKHI9PXRoaXMubG9jYWwmJihyPXRoaXMubG9jYWwuc2xpY2UoKSksci5zcGxpY2UobC0tLDEpKX1yZXR1cm4gYT09dGhpcy5jaGlsZHJlbiYmcj09dGhpcy5sb2NhbD90aGlzOnIubGVuZ3RofHxhLmxlbmd0aD9uZXcgcyhyLGEpOmNufWZvckNoaWxkKGUsdCl7aWYodGhpcz09Y24pcmV0dXJuIHRoaXM7aWYodC5pc0xlYWYpcmV0dXJuIHMuZW1wdHk7bGV0IGEscjtmb3IobGV0IGw9MDtsPHRoaXMuY2hpbGRyZW4ubGVuZ3RoO2wrPTMpaWYodGhpcy5jaGlsZHJlbltsXT49ZSl7dGhpcy5jaGlsZHJlbltsXT09ZSYmKGE9dGhpcy5jaGlsZHJlbltsKzJdKTticmVha31sZXQgbj1lKzEsbz1uK3QuY29udGVudC5zaXplO2ZvcihsZXQgbD0wO2w8dGhpcy5sb2NhbC5sZW5ndGg7bCsrKXtsZXQgcD10aGlzLmxvY2FsW2xdO2lmKHAuZnJvbTxvJiZwLnRvPm4mJnAudHlwZSBpbnN0YW5jZW9mIHNnKXtsZXQgZD1NYXRoLm1heChuLHAuZnJvbSktbix1PU1hdGgubWluKG8scC50byktbjtkPHUmJihyfHwocj1bXSkpLnB1c2gocC5jb3B5KGQsdSkpfX1pZihyKXtsZXQgbD1uZXcgcyhyLnNvcnQocmcpLEV2KTtyZXR1cm4gYT9uZXcgdGxlKFtsLGFdKTpsfXJldHVybiBhfHxjbn1lcShlKXtpZih0aGlzPT1lKXJldHVybiEwO2lmKCEoZSBpbnN0YW5jZW9mIHMpfHx0aGlzLmxvY2FsLmxlbmd0aCE9ZS5sb2NhbC5sZW5ndGh8fHRoaXMuY2hpbGRyZW4ubGVuZ3RoIT1lLmNoaWxkcmVuLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IHQ9MDt0PHRoaXMubG9jYWwubGVuZ3RoO3QrKylpZighdGhpcy5sb2NhbFt0XS5lcShlLmxvY2FsW3RdKSlyZXR1cm4hMTtmb3IobGV0IHQ9MDt0PHRoaXMuY2hpbGRyZW4ubGVuZ3RoO3QrPTMpaWYodGhpcy5jaGlsZHJlblt0XSE9ZS5jaGlsZHJlblt0XXx8dGhpcy5jaGlsZHJlblt0KzFdIT1lLmNoaWxkcmVuW3QrMV18fCF0aGlzLmNoaWxkcmVuW3QrMl0uZXEoZS5jaGlsZHJlblt0KzJdKSlyZXR1cm4hMTtyZXR1cm4hMH1sb2NhbHMoZSl7cmV0dXJuIGFhdCh0aGlzLmxvY2Fsc0lubmVyKGUpKX1sb2NhbHNJbm5lcihlKXtpZih0aGlzPT1jbilyZXR1cm4gRXY7aWYoZS5pbmxpbmVDb250ZW50fHwhdGhpcy5sb2NhbC5zb21lKHNnLmlzKSlyZXR1cm4gdGhpcy5sb2NhbDtsZXQgdD1bXTtmb3IobGV0IGE9MDthPHRoaXMubG9jYWwubGVuZ3RoO2ErKyl0aGlzLmxvY2FsW2FdLnR5cGUgaW5zdGFuY2VvZiBzZ3x8dC5wdXNoKHRoaXMubG9jYWxbYV0pO3JldHVybiB0fWZvckVhY2hTZXQoZSl7ZSh0aGlzKX19O0xuLmVtcHR5PW5ldyBMbihbXSxbXSksTG4ucmVtb3ZlT3ZlcmxhcD1hYXQ7Y249TG4uZW1wdHksdGxlPWNsYXNzIHN7c3RhdGlje2kodGhpcywiRGVjb3JhdGlvbkdyb3VwIil9Y29uc3RydWN0b3IoZSl7dGhpcy5tZW1iZXJzPWV9bWFwKGUsdCl7bGV0IGE9dGhpcy5tZW1iZXJzLm1hcChyPT5yLm1hcChlLHQsaWcpKTtyZXR1cm4gcy5mcm9tKGEpfWZvckNoaWxkKGUsdCl7aWYodC5pc0xlYWYpcmV0dXJuIExuLmVtcHR5O2xldCBhPVtdO2ZvcihsZXQgcj0wO3I8dGhpcy5tZW1iZXJzLmxlbmd0aDtyKyspe2xldCBuPXRoaXMubWVtYmVyc1tyXS5mb3JDaGlsZChlLHQpO24hPWNuJiYobiBpbnN0YW5jZW9mIHM/YT1hLmNvbmNhdChuLm1lbWJlcnMpOmEucHVzaChuKSl9cmV0dXJuIHMuZnJvbShhKX1lcShlKXtpZighKGUgaW5zdGFuY2VvZiBzKXx8ZS5tZW1iZXJzLmxlbmd0aCE9dGhpcy5tZW1iZXJzLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IHQ9MDt0PHRoaXMubWVtYmVycy5sZW5ndGg7dCsrKWlmKCF0aGlzLm1lbWJlcnNbdF0uZXEoZS5tZW1iZXJzW3RdKSlyZXR1cm4hMTtyZXR1cm4hMH1sb2NhbHMoZSl7bGV0IHQsYT0hMDtmb3IobGV0IHI9MDtyPHRoaXMubWVtYmVycy5sZW5ndGg7cisrKXtsZXQgbj10aGlzLm1lbWJlcnNbcl0ubG9jYWxzSW5uZXIoZSk7aWYobi5sZW5ndGgpaWYoIXQpdD1uO2Vsc2V7YSYmKHQ9dC5zbGljZSgpLGE9ITEpO2ZvcihsZXQgbz0wO288bi5sZW5ndGg7bysrKXQucHVzaChuW29dKX19cmV0dXJuIHQ/YWF0KGE/dDp0LnNvcnQocmcpKTpFdn1zdGF0aWMgZnJvbShlKXtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gY247Y2FzZSAxOnJldHVybiBlWzBdO2RlZmF1bHQ6cmV0dXJuIG5ldyBzKGUuZXZlcnkodD0+dCBpbnN0YW5jZW9mIExuKT9lOmUucmVkdWNlKCh0LGEpPT50LmNvbmNhdChhIGluc3RhbmNlb2YgTG4/YTphLm1lbWJlcnMpLFtdKSl9fWZvckVhY2hTZXQoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLm1lbWJlcnMubGVuZ3RoO3QrKyl0aGlzLm1lbWJlcnNbdF0uZm9yRWFjaFNldChlKX19O2koakthLCJtYXBDaGlsZHJlbiIpO2koUHBhLCJtb3ZlU3BhbnMiKTtpKFZLYSwibWFwQW5kR2F0aGVyUmVtYWluaW5nRGVjb3JhdGlvbnMiKTtpKElwYSwidGFrZVNwYW5zRm9yTm9kZSIpO2koQXBhLCJ3aXRob3V0TnVsbHMiKTtpKGFsZSwiYnVpbGRUcmVlIik7aShyZywiYnlQb3MiKTtpKGFhdCwicmVtb3ZlT3ZlcmxhcCIpO2koTnBhLCJpbnNlcnRBaGVhZCIpO2koc2F0LCJ2aWV3RGVjb3JhdGlvbnMiKTtVS2E9e2NoaWxkTGlzdDohMCxjaGFyYWN0ZXJEYXRhOiEwLGNoYXJhY3RlckRhdGFPbGRWYWx1ZTohMCxhdHRyaWJ1dGVzOiEwLGF0dHJpYnV0ZU9sZFZhbHVlOiEwLHN1YnRyZWU6ITB9LFdLYT1DbCYmVGg8PTExLGlhdD1jbGFzc3tzdGF0aWN7aSh0aGlzLCJTZWxlY3Rpb25TdGF0ZSIpfWNvbnN0cnVjdG9yKCl7dGhpcy5hbmNob3JOb2RlPW51bGwsdGhpcy5hbmNob3JPZmZzZXQ9MCx0aGlzLmZvY3VzTm9kZT1udWxsLHRoaXMuZm9jdXNPZmZzZXQ9MH1zZXQoZSl7dGhpcy5hbmNob3JOb2RlPWUuYW5jaG9yTm9kZSx0aGlzLmFuY2hvck9mZnNldD1lLmFuY2hvck9mZnNldCx0aGlzLmZvY3VzTm9kZT1lLmZvY3VzTm9kZSx0aGlzLmZvY3VzT2Zmc2V0PWUuZm9jdXNPZmZzZXR9Y2xlYXIoKXt0aGlzLmFuY2hvck5vZGU9dGhpcy5mb2N1c05vZGU9bnVsbH1lcShlKXtyZXR1cm4gZS5hbmNob3JOb2RlPT10aGlzLmFuY2hvck5vZGUmJmUuYW5jaG9yT2Zmc2V0PT10aGlzLmFuY2hvck9mZnNldCYmZS5mb2N1c05vZGU9PXRoaXMuZm9jdXNOb2RlJiZlLmZvY3VzT2Zmc2V0PT10aGlzLmZvY3VzT2Zmc2V0fX0scmF0PWNsYXNze3N0YXRpY3tpKHRoaXMsIkRPTU9ic2VydmVyIil9Y29uc3RydWN0b3IoZSx0KXt0aGlzLnZpZXc9ZSx0aGlzLmhhbmRsZURPTUNoYW5nZT10LHRoaXMucXVldWU9W10sdGhpcy5mbHVzaGluZ1Nvb249LTEsdGhpcy5vYnNlcnZlcj1udWxsLHRoaXMuY3VycmVudFNlbGVjdGlvbj1uZXcgaWF0LHRoaXMub25DaGFyRGF0YT1udWxsLHRoaXMuc3VwcHJlc3NpbmdTZWxlY3Rpb25VcGRhdGVzPSExLHRoaXMubGFzdENoYW5nZWRUZXh0Tm9kZT1udWxsLHRoaXMub2JzZXJ2ZXI9d2luZG93Lk11dGF0aW9uT2JzZXJ2ZXImJm5ldyB3aW5kb3cuTXV0YXRpb25PYnNlcnZlcihhPT57Zm9yKGxldCByPTA7cjxhLmxlbmd0aDtyKyspdGhpcy5xdWV1ZS5wdXNoKGFbcl0pO0NsJiZUaDw9MTEmJmEuc29tZShyPT5yLnR5cGU9PSJjaGlsZExpc3QiJiZyLnJlbW92ZWROb2Rlcy5sZW5ndGh8fHIudHlwZT09ImNoYXJhY3RlckRhdGEiJiZyLm9sZFZhbHVlLmxlbmd0aD5yLnRhcmdldC5ub2RlVmFsdWUubGVuZ3RoKT90aGlzLmZsdXNoU29vbigpOmxuJiZlLmNvbXBvc2luZyYmYS5zb21lKHI9PnIudHlwZT09ImNoaWxkTGlzdCImJnIudGFyZ2V0Lm5vZGVOYW1lPT0iVFIiKT8oZS5pbnB1dC5iYWRTYWZhcmlDb21wb3NpdGlvbj0hMCx0aGlzLmZsdXNoU29vbigpKTp0aGlzLmZsdXNoKCl9KSxXS2EmJih0aGlzLm9uQ2hhckRhdGE9YT0+e3RoaXMucXVldWUucHVzaCh7dGFyZ2V0OmEudGFyZ2V0LHR5cGU6ImNoYXJhY3RlckRhdGEiLG9sZFZhbHVlOmEucHJldlZhbHVlfSksdGhpcy5mbHVzaFNvb24oKX0pLHRoaXMub25TZWxlY3Rpb25DaGFuZ2U9dGhpcy5vblNlbGVjdGlvbkNoYW5nZS5iaW5kKHRoaXMpfWZsdXNoU29vbigpe3RoaXMuZmx1c2hpbmdTb29uPDAmJih0aGlzLmZsdXNoaW5nU29vbj13aW5kb3cuc2V0VGltZW91dCgoKT0+e3RoaXMuZmx1c2hpbmdTb29uPS0xLHRoaXMuZmx1c2goKX0sMjApKX1mb3JjZUZsdXNoKCl7dGhpcy5mbHVzaGluZ1Nvb24+LTEmJih3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuZmx1c2hpbmdTb29uKSx0aGlzLmZsdXNoaW5nU29vbj0tMSx0aGlzLmZsdXNoKCkpfXN0YXJ0KCl7dGhpcy5vYnNlcnZlciYmKHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKSx0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy52aWV3LmRvbSxVS2EpKSx0aGlzLm9uQ2hhckRhdGEmJnRoaXMudmlldy5kb20uYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ2hhcmFjdGVyRGF0YU1vZGlmaWVkIix0aGlzLm9uQ2hhckRhdGEpLHRoaXMuY29ubmVjdFNlbGVjdGlvbigpfXN0b3AoKXtpZih0aGlzLm9ic2VydmVyKXtsZXQgZT10aGlzLm9ic2VydmVyLnRha2VSZWNvcmRzKCk7aWYoZS5sZW5ndGgpe2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXRoaXMucXVldWUucHVzaChlW3RdKTt3aW5kb3cuc2V0VGltZW91dCgoKT0+dGhpcy5mbHVzaCgpLDIwKX10aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKX10aGlzLm9uQ2hhckRhdGEmJnRoaXMudmlldy5kb20ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ2hhcmFjdGVyRGF0YU1vZGlmaWVkIix0aGlzLm9uQ2hhckRhdGEpLHRoaXMuZGlzY29ubmVjdFNlbGVjdGlvbigpfWNvbm5lY3RTZWxlY3Rpb24oKXt0aGlzLnZpZXcuZG9tLm93bmVyRG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0aW9uY2hhbmdlIix0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlKX1kaXNjb25uZWN0U2VsZWN0aW9uKCl7dGhpcy52aWV3LmRvbS5vd25lckRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlbGVjdGlvbmNoYW5nZSIsdGhpcy5vblNlbGVjdGlvbkNoYW5nZSl9c3VwcHJlc3NTZWxlY3Rpb25VcGRhdGVzKCl7dGhpcy5zdXBwcmVzc2luZ1NlbGVjdGlvblVwZGF0ZXM9ITAsc2V0VGltZW91dCgoKT0+dGhpcy5zdXBwcmVzc2luZ1NlbGVjdGlvblVwZGF0ZXM9ITEsNTApfW9uU2VsZWN0aW9uQ2hhbmdlKCl7aWYocHBhKHRoaXMudmlldykpe2lmKHRoaXMuc3VwcHJlc3NpbmdTZWxlY3Rpb25VcGRhdGVzKXJldHVybiBjdSh0aGlzLnZpZXcpO2lmKENsJiZUaDw9MTEmJiF0aGlzLnZpZXcuc3RhdGUuc2VsZWN0aW9uLmVtcHR5KXtsZXQgZT10aGlzLnZpZXcuZG9tU2VsZWN0aW9uUmFuZ2UoKTtpZihlLmZvY3VzTm9kZSYmUTgoZS5mb2N1c05vZGUsZS5mb2N1c09mZnNldCxlLmFuY2hvck5vZGUsZS5hbmNob3JPZmZzZXQpKXJldHVybiB0aGlzLmZsdXNoU29vbigpfXRoaXMuZmx1c2goKX19c2V0Q3VyU2VsZWN0aW9uKCl7dGhpcy5jdXJyZW50U2VsZWN0aW9uLnNldCh0aGlzLnZpZXcuZG9tU2VsZWN0aW9uUmFuZ2UoKSl9aWdub3JlU2VsZWN0aW9uQ2hhbmdlKGUpe2lmKCFlLmZvY3VzTm9kZSlyZXR1cm4hMDtsZXQgdD1uZXcgU2V0LGE7Zm9yKGxldCBuPWUuZm9jdXNOb2RlO247bj16dihuKSl0LmFkZChuKTtmb3IobGV0IG49ZS5hbmNob3JOb2RlO247bj16dihuKSlpZih0LmhhcyhuKSl7YT1uO2JyZWFrfWxldCByPWEmJnRoaXMudmlldy5kb2NWaWV3Lm5lYXJlc3REZXNjKGEpO2lmKHImJnIuaWdub3JlTXV0YXRpb24oe3R5cGU6InNlbGVjdGlvbiIsdGFyZ2V0OmEubm9kZVR5cGU9PTM/YS5wYXJlbnROb2RlOmF9KSlyZXR1cm4gdGhpcy5zZXRDdXJTZWxlY3Rpb24oKSwhMH1wZW5kaW5nUmVjb3Jkcygpe2lmKHRoaXMub2JzZXJ2ZXIpZm9yKGxldCBlIG9mIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKSl0aGlzLnF1ZXVlLnB1c2goZSk7cmV0dXJuIHRoaXMucXVldWV9Zmx1c2goKXtsZXR7dmlldzplfT10aGlzO2lmKCFlLmRvY1ZpZXd8fHRoaXMuZmx1c2hpbmdTb29uPi0xKXJldHVybjtsZXQgdD10aGlzLnBlbmRpbmdSZWNvcmRzKCk7dC5sZW5ndGgmJih0aGlzLnF1ZXVlPVtdKTtsZXQgYT1lLmRvbVNlbGVjdGlvblJhbmdlKCkscj0hdGhpcy5zdXBwcmVzc2luZ1NlbGVjdGlvblVwZGF0ZXMmJiF0aGlzLmN1cnJlbnRTZWxlY3Rpb24uZXEoYSkmJnBwYShlKSYmIXRoaXMuaWdub3JlU2VsZWN0aW9uQ2hhbmdlKGEpLG49LTEsbz0tMSxsPSExLHA9W107aWYoZS5lZGl0YWJsZSlmb3IobGV0IHU9MDt1PHQubGVuZ3RoO3UrKyl7bGV0IGM9dGhpcy5yZWdpc3Rlck11dGF0aW9uKHRbdV0scCk7YyYmKG49bjwwP2MuZnJvbTpNYXRoLm1pbihjLmZyb20sbiksbz1vPDA/Yy50bzpNYXRoLm1heChjLnRvLG8pLGMudHlwZU92ZXImJihsPSEwKSl9aWYocC5zb21lKHU9PnUubm9kZU5hbWU9PSJCUiIpJiYoZS5pbnB1dC5sYXN0S2V5Q29kZT09OHx8ZS5pbnB1dC5sYXN0S2V5Q29kZT09NDYpKXtmb3IobGV0IHUgb2YgcClpZih1Lm5vZGVOYW1lPT0iQlIiJiZ1LnBhcmVudE5vZGUpe2xldCBjPXUubmV4dFNpYmxpbmc7Zm9yKDtjJiZjLm5vZGVUeXBlPT0xOyl7aWYoYy5jb250ZW50RWRpdGFibGU9PSJmYWxzZSIpe3UucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh1KTticmVha31jPWMuZmlyc3RDaGlsZH19fWVsc2UgaWYoRmMmJnAubGVuZ3RoKXtsZXQgdT1wLmZpbHRlcihjPT5jLm5vZGVOYW1lPT0iQlIiKTtpZih1Lmxlbmd0aD09Mil7bGV0W2MsYl09dTtjLnBhcmVudE5vZGUmJmMucGFyZW50Tm9kZS5wYXJlbnROb2RlPT1iLnBhcmVudE5vZGU/Yi5yZW1vdmUoKTpjLnJlbW92ZSgpfWVsc2V7bGV0e2ZvY3VzTm9kZTpjfT10aGlzLmN1cnJlbnRTZWxlY3Rpb247Zm9yKGxldCBiIG9mIHUpe2xldCB2PWIucGFyZW50Tm9kZTt2JiZ2Lm5vZGVOYW1lPT0iTEkiJiYoIWN8fFlLYShlLGMpIT12KSYmYi5yZW1vdmUoKX19fWxldCBkPW51bGw7bjwwJiZyJiZlLmlucHV0Lmxhc3RGb2N1cz5EYXRlLm5vdygpLTIwMCYmTWF0aC5tYXgoZS5pbnB1dC5sYXN0VG91Y2gsZS5pbnB1dC5sYXN0Q2xpY2sudGltZSk8RGF0ZS5ub3coKS0zMDAmJlduZShhKSYmKGQ9QnR0KGUpKSYmZC5lcShRdC5uZWFyKGUuc3RhdGUuZG9jLnJlc29sdmUoMCksMSkpPyhlLmlucHV0Lmxhc3RGb2N1cz0wLGN1KGUpLHRoaXMuY3VycmVudFNlbGVjdGlvbi5zZXQoYSksZS5zY3JvbGxUb1NlbGVjdGlvbigpKToobj4tMXx8cikmJihuPi0xJiYoZS5kb2NWaWV3Lm1hcmtEaXJ0eShuLG8pLEdLYShlKSksZS5pbnB1dC5iYWRTYWZhcmlDb21wb3NpdGlvbiYmKGUuaW5wdXQuYmFkU2FmYXJpQ29tcG9zaXRpb249ITEsWkthKGUscCkpLHRoaXMuaGFuZGxlRE9NQ2hhbmdlKG4sbyxsLHApLGUuZG9jVmlldyYmZS5kb2NWaWV3LmRpcnR5P2UudXBkYXRlU3RhdGUoZS5zdGF0ZSk6dGhpcy5jdXJyZW50U2VsZWN0aW9uLmVxKGEpfHxjdShlKSx0aGlzLmN1cnJlbnRTZWxlY3Rpb24uc2V0KGEpKX1yZWdpc3Rlck11dGF0aW9uKGUsdCl7aWYodC5pbmRleE9mKGUudGFyZ2V0KT4tMSlyZXR1cm4gbnVsbDtsZXQgYT10aGlzLnZpZXcuZG9jVmlldy5uZWFyZXN0RGVzYyhlLnRhcmdldCk7aWYoZS50eXBlPT0iYXR0cmlidXRlcyImJihhPT10aGlzLnZpZXcuZG9jVmlld3x8ZS5hdHRyaWJ1dGVOYW1lPT0iY29udGVudGVkaXRhYmxlInx8ZS5hdHRyaWJ1dGVOYW1lPT0ic3R5bGUiJiYhZS5vbGRWYWx1ZSYmIWUudGFyZ2V0LmdldEF0dHJpYnV0ZSgic3R5bGUiKSl8fCFhfHxhLmlnbm9yZU11dGF0aW9uKGUpKXJldHVybiBudWxsO2lmKGUudHlwZT09ImNoaWxkTGlzdCIpe2ZvcihsZXQgdT0wO3U8ZS5hZGRlZE5vZGVzLmxlbmd0aDt1Kyspe2xldCBjPWUuYWRkZWROb2Rlc1t1XTt0LnB1c2goYyksYy5ub2RlVHlwZT09MyYmKHRoaXMubGFzdENoYW5nZWRUZXh0Tm9kZT1jKX1pZihhLmNvbnRlbnRET00mJmEuY29udGVudERPTSE9YS5kb20mJiFhLmNvbnRlbnRET00uY29udGFpbnMoZS50YXJnZXQpKXJldHVybntmcm9tOmEucG9zQmVmb3JlLHRvOmEucG9zQWZ0ZXJ9O2xldCByPWUucHJldmlvdXNTaWJsaW5nLG49ZS5uZXh0U2libGluZztpZihDbCYmVGg8PTExJiZlLmFkZGVkTm9kZXMubGVuZ3RoKWZvcihsZXQgdT0wO3U8ZS5hZGRlZE5vZGVzLmxlbmd0aDt1Kyspe2xldHtwcmV2aW91c1NpYmxpbmc6YyxuZXh0U2libGluZzpifT1lLmFkZGVkTm9kZXNbdV07KCFjfHxBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGUuYWRkZWROb2RlcyxjKTwwKSYmKHI9YyksKCFifHxBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGUuYWRkZWROb2RlcyxiKTwwKSYmKG49Yil9bGV0IG89ciYmci5wYXJlbnROb2RlPT1lLnRhcmdldD9UbyhyKSsxOjAsbD1hLmxvY2FsUG9zRnJvbURPTShlLnRhcmdldCxvLC0xKSxwPW4mJm4ucGFyZW50Tm9kZT09ZS50YXJnZXQ/VG8obik6ZS50YXJnZXQuY2hpbGROb2Rlcy5sZW5ndGgsZD1hLmxvY2FsUG9zRnJvbURPTShlLnRhcmdldCxwLDEpO3JldHVybntmcm9tOmwsdG86ZH19ZWxzZSByZXR1cm4gZS50eXBlPT0iYXR0cmlidXRlcyI/e2Zyb206YS5wb3NBdFN0YXJ0LWEuYm9yZGVyLHRvOmEucG9zQXRFbmQrYS5ib3JkZXJ9Oih0aGlzLmxhc3RDaGFuZ2VkVGV4dE5vZGU9ZS50YXJnZXQse2Zyb206YS5wb3NBdFN0YXJ0LHRvOmEucG9zQXRFbmQsdHlwZU92ZXI6ZS50YXJnZXQubm9kZVZhbHVlPT1lLm9sZFZhbHVlfSl9fSxScGE9bmV3IFdlYWtNYXAsT3BhPSExO2koR0thLCJjaGVja0NTUyIpO2koRnBhLCJyYW5nZVRvU2VsZWN0aW9uUmFuZ2UiKTtpKEtLYSwic2FmYXJpU2hhZG93U2VsZWN0aW9uUmFuZ2UiKTtpKFlLYSwiYmxvY2tQYXJlbnQiKTtpKFpLYSwiZml4VXBCYWRTYWZhcmlDb21wb3NpdGlvbiIpO2koWEthLCJwYXJzZUJldHdlZW4iKTtpKFFLYSwicnVsZUZyb21Ob2RlIik7SkthPS9eKGF8YWJicnxhY3JvbnltfGJ8YmRbaW9dfGJpZ3xicnxidXR0b258Y2l0ZXxjb2RlfGRhdGEobGlzdCk/fGRlbHxkZm58ZW18aXxpbWd8aW5zfGtiZHxsYWJlbHxtYXB8bWFya3xtZXRlcnxvdXRwdXR8cXxydWJ5fHN8c2FtcHxzbWFsbHxzcGFufHN0cm9uZ3xzdVticF18dGltZXx1fHR0fHZhcikkL2k7aShlWWEsInJlYWRET01DaGFuZ2UiKTtpKEJwYSwicmVzb2x2ZVNlbGVjdGlvbiIpO2kodFlhLCJpc01hcmtDaGFuZ2UiKTtpKGFZYSwibG9va3NMaWtlQmFja3NwYWNlIik7aShvYXQsInNraXBDbG9zaW5nQW5kT3BlbmluZyIpO2koc1lhLCJmaW5kRGlmZiIpO2koSHBhLCJpc1N1cnJvZ2F0ZVBhaXIiKTtpWWE9V3R0LHJZYT1KWixQdj1jbGFzc3tzdGF0aWN7aSh0aGlzLCJFZGl0b3JWaWV3Iil9Y29uc3RydWN0b3IoZSx0KXt0aGlzLl9yb290PW51bGwsdGhpcy5mb2N1c2VkPSExLHRoaXMudHJhY2tXcml0ZXM9bnVsbCx0aGlzLm1vdW50ZWQ9ITEsdGhpcy5tYXJrQ3Vyc29yPW51bGwsdGhpcy5jdXJzb3JXcmFwcGVyPW51bGwsdGhpcy5sYXN0U2VsZWN0ZWRWaWV3RGVzYz12b2lkIDAsdGhpcy5pbnB1dD1uZXcgWXR0LHRoaXMucHJldkRpcmVjdFBsdWdpbnM9W10sdGhpcy5wbHVnaW5WaWV3cz1bXSx0aGlzLnJlcXVpcmVzR2Vja29IYWNrTm9kZT0hMSx0aGlzLmRyYWdnaW5nPW51bGwsdGhpcy5fcHJvcHM9dCx0aGlzLnN0YXRlPXQuc3RhdGUsdGhpcy5kaXJlY3RQbHVnaW5zPXQucGx1Z2luc3x8W10sdGhpcy5kaXJlY3RQbHVnaW5zLmZvckVhY2goV3BhKSx0aGlzLmRpc3BhdGNoPXRoaXMuZGlzcGF0Y2guYmluZCh0aGlzKSx0aGlzLmRvbT1lJiZlLm1vdW50fHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxlJiYoZS5hcHBlbmRDaGlsZD9lLmFwcGVuZENoaWxkKHRoaXMuZG9tKTp0eXBlb2YgZT09ImZ1bmN0aW9uIj9lKHRoaXMuZG9tKTplLm1vdW50JiYodGhpcy5tb3VudGVkPSEwKSksdGhpcy5lZGl0YWJsZT1WcGEodGhpcyksanBhKHRoaXMpLHRoaXMubm9kZVZpZXdzPVVwYSh0aGlzKSx0aGlzLmRvY1ZpZXc9dHBhKHRoaXMuc3RhdGUuZG9jLHFwYSh0aGlzKSxzYXQodGhpcyksdGhpcy5kb20sdGhpcyksdGhpcy5kb21PYnNlcnZlcj1uZXcgcmF0KHRoaXMsKGEscixuLG8pPT5lWWEodGhpcyxhLHIsbixvKSksdGhpcy5kb21PYnNlcnZlci5zdGFydCgpLFNLYSh0aGlzKSx0aGlzLnVwZGF0ZVBsdWdpblZpZXdzKCl9Z2V0IGNvbXBvc2luZygpe3JldHVybiB0aGlzLmlucHV0LmNvbXBvc2luZ31nZXQgcHJvcHMoKXtpZih0aGlzLl9wcm9wcy5zdGF0ZSE9dGhpcy5zdGF0ZSl7bGV0IGU9dGhpcy5fcHJvcHM7dGhpcy5fcHJvcHM9e307Zm9yKGxldCB0IGluIGUpdGhpcy5fcHJvcHNbdF09ZVt0XTt0aGlzLl9wcm9wcy5zdGF0ZT10aGlzLnN0YXRlfXJldHVybiB0aGlzLl9wcm9wc311cGRhdGUoZSl7ZS5oYW5kbGVET01FdmVudHMhPXRoaXMuX3Byb3BzLmhhbmRsZURPTUV2ZW50cyYmWnR0KHRoaXMpO2xldCB0PXRoaXMuX3Byb3BzO3RoaXMuX3Byb3BzPWUsZS5wbHVnaW5zJiYoZS5wbHVnaW5zLmZvckVhY2goV3BhKSx0aGlzLmRpcmVjdFBsdWdpbnM9ZS5wbHVnaW5zKSx0aGlzLnVwZGF0ZVN0YXRlSW5uZXIoZS5zdGF0ZSx0KX1zZXRQcm9wcyhlKXtsZXQgdD17fTtmb3IobGV0IGEgaW4gdGhpcy5fcHJvcHMpdFthXT10aGlzLl9wcm9wc1thXTt0LnN0YXRlPXRoaXMuc3RhdGU7Zm9yKGxldCBhIGluIGUpdFthXT1lW2FdO3RoaXMudXBkYXRlKHQpfXVwZGF0ZVN0YXRlKGUpe3RoaXMudXBkYXRlU3RhdGVJbm5lcihlLHRoaXMuX3Byb3BzKX11cGRhdGVTdGF0ZUlubmVyKGUsdCl7dmFyIGE7bGV0IHI9dGhpcy5zdGF0ZSxuPSExLG89ITE7ZS5zdG9yZWRNYXJrcyYmdGhpcy5jb21wb3NpbmcmJihEcGEodGhpcyksbz0hMCksdGhpcy5zdGF0ZT1lO2xldCBsPXIucGx1Z2lucyE9ZS5wbHVnaW5zfHx0aGlzLl9wcm9wcy5wbHVnaW5zIT10LnBsdWdpbnM7aWYobHx8dGhpcy5fcHJvcHMucGx1Z2lucyE9dC5wbHVnaW5zfHx0aGlzLl9wcm9wcy5ub2RlVmlld3MhPXQubm9kZVZpZXdzKXtsZXQgdj1VcGEodGhpcyk7bllhKHYsdGhpcy5ub2RlVmlld3MpJiYodGhpcy5ub2RlVmlld3M9dixuPSEwKX0obHx8dC5oYW5kbGVET01FdmVudHMhPXRoaXMuX3Byb3BzLmhhbmRsZURPTUV2ZW50cykmJlp0dCh0aGlzKSx0aGlzLmVkaXRhYmxlPVZwYSh0aGlzKSxqcGEodGhpcyk7bGV0IHA9c2F0KHRoaXMpLGQ9cXBhKHRoaXMpLHU9ci5wbHVnaW5zIT1lLnBsdWdpbnMmJiFyLmRvYy5lcShlLmRvYyk/InJlc2V0IjplLnNjcm9sbFRvU2VsZWN0aW9uPnIuc2Nyb2xsVG9TZWxlY3Rpb24/InRvIHNlbGVjdGlvbiI6InByZXNlcnZlIixjPW58fCF0aGlzLmRvY1ZpZXcubWF0Y2hlc05vZGUoZS5kb2MsZCxwKTsoY3x8IWUuc2VsZWN0aW9uLmVxKHIuc2VsZWN0aW9uKSkmJihvPSEwKTtsZXQgYj11PT0icHJlc2VydmUiJiZvJiZ0aGlzLmRvbS5zdHlsZS5vdmVyZmxvd0FuY2hvcj09bnVsbCYmSEdhKHRoaXMpO2lmKG8pe3RoaXMuZG9tT2JzZXJ2ZXIuc3RvcCgpO2xldCB2PWMmJihDbHx8JG8pJiYhdGhpcy5jb21wb3NpbmcmJiFyLnNlbGVjdGlvbi5lbXB0eSYmIWUuc2VsZWN0aW9uLmVtcHR5JiZvWWEoci5zZWxlY3Rpb24sZS5zZWxlY3Rpb24pO2lmKGMpe2xldCB4PSRvP3RoaXMudHJhY2tXcml0ZXM9dGhpcy5kb21TZWxlY3Rpb25SYW5nZSgpLmZvY3VzTm9kZTpudWxsO3RoaXMuY29tcG9zaW5nJiYodGhpcy5pbnB1dC5jb21wb3NpdGlvbk5vZGU9TkthKHRoaXMpKSwobnx8IXRoaXMuZG9jVmlldy51cGRhdGUoZS5kb2MsZCxwLHRoaXMpKSYmKHRoaXMuZG9jVmlldy51cGRhdGVPdXRlckRlY28oZCksdGhpcy5kb2NWaWV3LmRlc3Ryb3koKSx0aGlzLmRvY1ZpZXc9dHBhKGUuZG9jLGQscCx0aGlzLmRvbSx0aGlzKSkseCYmKCF0aGlzLnRyYWNrV3JpdGVzfHwhdGhpcy5kb20uY29udGFpbnModGhpcy50cmFja1dyaXRlcykpJiYodj0hMCl9dnx8ISh0aGlzLmlucHV0Lm1vdXNlRG93biYmdGhpcy5kb21PYnNlcnZlci5jdXJyZW50U2VsZWN0aW9uLmVxKHRoaXMuZG9tU2VsZWN0aW9uUmFuZ2UoKSkmJmxLYSh0aGlzKSk/Y3UodGhpcyx2KTooZHBhKHRoaXMsZS5zZWxlY3Rpb24pLHRoaXMuZG9tT2JzZXJ2ZXIuc2V0Q3VyU2VsZWN0aW9uKCkpLHRoaXMuZG9tT2JzZXJ2ZXIuc3RhcnQoKX10aGlzLnVwZGF0ZVBsdWdpblZpZXdzKHIpLCEoKGE9dGhpcy5kcmFnZ2luZyk9PT1udWxsfHxhPT09dm9pZCAwKSYmYS5ub2RlJiYhci5kb2MuZXEoZS5kb2MpJiZ0aGlzLnVwZGF0ZURyYWdnZWROb2RlKHRoaXMuZHJhZ2dpbmcsciksdT09InJlc2V0Ij90aGlzLmRvbS5zY3JvbGxUb3A9MDp1PT0idG8gc2VsZWN0aW9uIj90aGlzLnNjcm9sbFRvU2VsZWN0aW9uKCk6YiYmcUdhKGIpfXNjcm9sbFRvU2VsZWN0aW9uKCl7bGV0IGU9dGhpcy5kb21TZWxlY3Rpb25SYW5nZSgpLmZvY3VzTm9kZTtpZighKCFlfHwhdGhpcy5kb20uY29udGFpbnMoZS5ub2RlVHlwZT09MT9lOmUucGFyZW50Tm9kZSkpKXtpZighdGhpcy5zb21lUHJvcCgiaGFuZGxlU2Nyb2xsVG9TZWxlY3Rpb24iLHQ9PnQodGhpcykpKWlmKHRoaXMuc3RhdGUuc2VsZWN0aW9uIGluc3RhbmNlb2YgRnQpe2xldCB0PXRoaXMuZG9jVmlldy5kb21BZnRlclBvcyh0aGlzLnN0YXRlLnNlbGVjdGlvbi5mcm9tKTt0Lm5vZGVUeXBlPT0xJiZqdWEodGhpcyx0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGUpfWVsc2UganVhKHRoaXMsdGhpcy5jb29yZHNBdFBvcyh0aGlzLnN0YXRlLnNlbGVjdGlvbi5oZWFkLDEpLGUpfX1kZXN0cm95UGx1Z2luVmlld3MoKXtsZXQgZTtmb3IoO2U9dGhpcy5wbHVnaW5WaWV3cy5wb3AoKTspZS5kZXN0cm95JiZlLmRlc3Ryb3koKX11cGRhdGVQbHVnaW5WaWV3cyhlKXtpZighZXx8ZS5wbHVnaW5zIT10aGlzLnN0YXRlLnBsdWdpbnN8fHRoaXMuZGlyZWN0UGx1Z2lucyE9dGhpcy5wcmV2RGlyZWN0UGx1Z2lucyl7dGhpcy5wcmV2RGlyZWN0UGx1Z2lucz10aGlzLmRpcmVjdFBsdWdpbnMsdGhpcy5kZXN0cm95UGx1Z2luVmlld3MoKTtmb3IobGV0IHQ9MDt0PHRoaXMuZGlyZWN0UGx1Z2lucy5sZW5ndGg7dCsrKXtsZXQgYT10aGlzLmRpcmVjdFBsdWdpbnNbdF07YS5zcGVjLnZpZXcmJnRoaXMucGx1Z2luVmlld3MucHVzaChhLnNwZWMudmlldyh0aGlzKSl9Zm9yKGxldCB0PTA7dDx0aGlzLnN0YXRlLnBsdWdpbnMubGVuZ3RoO3QrKyl7bGV0IGE9dGhpcy5zdGF0ZS5wbHVnaW5zW3RdO2Euc3BlYy52aWV3JiZ0aGlzLnBsdWdpblZpZXdzLnB1c2goYS5zcGVjLnZpZXcodGhpcykpfX1lbHNlIGZvcihsZXQgdD0wO3Q8dGhpcy5wbHVnaW5WaWV3cy5sZW5ndGg7dCsrKXtsZXQgYT10aGlzLnBsdWdpblZpZXdzW3RdO2EudXBkYXRlJiZhLnVwZGF0ZSh0aGlzLGUpfX11cGRhdGVEcmFnZ2VkTm9kZShlLHQpe2xldCBhPWUubm9kZSxyPS0xO2lmKGEuZnJvbTx0aGlzLnN0YXRlLmRvYy5jb250ZW50LnNpemUmJnRoaXMuc3RhdGUuZG9jLm5vZGVBdChhLmZyb20pPT1hLm5vZGUpcj1hLmZyb207ZWxzZXtsZXQgbj1hLmZyb20rKHRoaXMuc3RhdGUuZG9jLmNvbnRlbnQuc2l6ZS10LmRvYy5jb250ZW50LnNpemUpOyhuPjAmJm48dGhpcy5zdGF0ZS5kb2MuY29udGVudC5zaXplJiZ0aGlzLnN0YXRlLmRvYy5ub2RlQXQobikpPT1hLm5vZGUmJihyPW4pfXRoaXMuZHJhZ2dpbmc9bmV3IEpuZShlLnNsaWNlLGUubW92ZSxyPDA/dm9pZCAwOkZ0LmNyZWF0ZSh0aGlzLnN0YXRlLmRvYyxyKSl9c29tZVByb3AoZSx0KXtsZXQgYT10aGlzLl9wcm9wcyYmdGhpcy5fcHJvcHNbZV0scjtpZihhIT1udWxsJiYocj10P3QoYSk6YSkpcmV0dXJuIHI7Zm9yKGxldCBvPTA7bzx0aGlzLmRpcmVjdFBsdWdpbnMubGVuZ3RoO28rKyl7bGV0IGw9dGhpcy5kaXJlY3RQbHVnaW5zW29dLnByb3BzW2VdO2lmKGwhPW51bGwmJihyPXQ/dChsKTpsKSlyZXR1cm4gcn1sZXQgbj10aGlzLnN0YXRlLnBsdWdpbnM7aWYobilmb3IobGV0IG89MDtvPG4ubGVuZ3RoO28rKyl7bGV0IGw9bltvXS5wcm9wc1tlXTtpZihsIT1udWxsJiYocj10P3QobCk6bCkpcmV0dXJuIHJ9fWhhc0ZvY3VzKCl7aWYoQ2wpe2xldCBlPXRoaXMucm9vdC5hY3RpdmVFbGVtZW50O2lmKGU9PXRoaXMuZG9tKXJldHVybiEwO2lmKCFlfHwhdGhpcy5kb20uY29udGFpbnMoZSkpcmV0dXJuITE7Zm9yKDtlJiZ0aGlzLmRvbSE9ZSYmdGhpcy5kb20uY29udGFpbnMoZSk7KXtpZihlLmNvbnRlbnRFZGl0YWJsZT09ImZhbHNlIilyZXR1cm4hMTtlPWUucGFyZW50RWxlbWVudH1yZXR1cm4hMH1yZXR1cm4gdGhpcy5yb290LmFjdGl2ZUVsZW1lbnQ9PXRoaXMuZG9tfWZvY3VzKCl7dGhpcy5kb21PYnNlcnZlci5zdG9wKCksdGhpcy5lZGl0YWJsZSYmakdhKHRoaXMuZG9tKSxjdSh0aGlzKSx0aGlzLmRvbU9ic2VydmVyLnN0YXJ0KCl9Z2V0IHJvb3QoKXtsZXQgZT10aGlzLl9yb290O2lmKGU9PW51bGwpe2ZvcihsZXQgdD10aGlzLmRvbS5wYXJlbnROb2RlO3Q7dD10LnBhcmVudE5vZGUpaWYodC5ub2RlVHlwZT09OXx8dC5ub2RlVHlwZT09MTEmJnQuaG9zdClyZXR1cm4gdC5nZXRTZWxlY3Rpb258fChPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkuZ2V0U2VsZWN0aW9uPSgpPT50Lm93bmVyRG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCkpLHRoaXMuX3Jvb3Q9dH1yZXR1cm4gZXx8ZG9jdW1lbnR9dXBkYXRlUm9vdCgpe3RoaXMuX3Jvb3Q9bnVsbH1wb3NBdENvb3JkcyhlKXtyZXR1cm4gS0dhKHRoaXMsZSl9Y29vcmRzQXRQb3MoZSx0PTEpe3JldHVybiBZdWEodGhpcyxlLHQpfWRvbUF0UG9zKGUsdD0wKXtyZXR1cm4gdGhpcy5kb2NWaWV3LmRvbUZyb21Qb3MoZSx0KX1ub2RlRE9NKGUpe2xldCB0PXRoaXMuZG9jVmlldy5kZXNjQXQoZSk7cmV0dXJuIHQ/dC5ub2RlRE9NOm51bGx9cG9zQXRET00oZSx0LGE9LTEpe2xldCByPXRoaXMuZG9jVmlldy5wb3NGcm9tRE9NKGUsdCxhKTtpZihyPT1udWxsKXRocm93IG5ldyBSYW5nZUVycm9yKCJET00gcG9zaXRpb24gbm90IGluc2lkZSB0aGUgZWRpdG9yIik7cmV0dXJuIHJ9ZW5kT2ZUZXh0YmxvY2soZSx0KXtyZXR1cm4gSkdhKHRoaXMsdHx8dGhpcy5zdGF0ZSxlKX1wYXN0ZUhUTUwoZSx0KXtyZXR1cm4gdFgodGhpcywiIixlLCExLHR8fG5ldyBDbGlwYm9hcmRFdmVudCgicGFzdGUiKSl9cGFzdGVUZXh0KGUsdCl7cmV0dXJuIHRYKHRoaXMsZSxudWxsLCEwLHR8fG5ldyBDbGlwYm9hcmRFdmVudCgicGFzdGUiKSl9c2VyaWFsaXplRm9yQ2xpcGJvYXJkKGUpe3JldHVybiBVdHQodGhpcyxlKX1kZXN0cm95KCl7dGhpcy5kb2NWaWV3JiYoX0thKHRoaXMpLHRoaXMuZGVzdHJveVBsdWdpblZpZXdzKCksdGhpcy5tb3VudGVkPyh0aGlzLmRvY1ZpZXcudXBkYXRlKHRoaXMuc3RhdGUuZG9jLFtdLHNhdCh0aGlzKSx0aGlzKSx0aGlzLmRvbS50ZXh0Q29udGVudD0iIik6dGhpcy5kb20ucGFyZW50Tm9kZSYmdGhpcy5kb20ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmRvbSksdGhpcy5kb2NWaWV3LmRlc3Ryb3koKSx0aGlzLmRvY1ZpZXc9bnVsbCxMR2EoKSl9Z2V0IGlzRGVzdHJveWVkKCl7cmV0dXJuIHRoaXMuZG9jVmlldz09bnVsbH1kaXNwYXRjaEV2ZW50KGUpe3JldHVybiB6S2EodGhpcyxlKX1kb21TZWxlY3Rpb25SYW5nZSgpe2xldCBlPXRoaXMuZG9tU2VsZWN0aW9uKCk7cmV0dXJuIGU/bG4mJnRoaXMucm9vdC5ub2RlVHlwZT09PTExJiZOR2EodGhpcy5kb20ub3duZXJEb2N1bWVudCk9PXRoaXMuZG9tJiZLS2EodGhpcyxlKXx8ZTp7Zm9jdXNOb2RlOm51bGwsZm9jdXNPZmZzZXQ6MCxhbmNob3JOb2RlOm51bGwsYW5jaG9yT2Zmc2V0OjB9fWRvbVNlbGVjdGlvbigpe3JldHVybiB0aGlzLnJvb3QuZ2V0U2VsZWN0aW9uKCl9fTtQdi5wcm90b3R5cGUuZGlzcGF0Y2g9ZnVuY3Rpb24ocyl7bGV0IGU9dGhpcy5fcHJvcHMuZGlzcGF0Y2hUcmFuc2FjdGlvbjtlP2UuY2FsbCh0aGlzLHMpOnRoaXMudXBkYXRlU3RhdGUodGhpcy5zdGF0ZS5hcHBseShzKSl9O2kocXBhLCJjb21wdXRlRG9jRGVjbyIpO2koanBhLCJ1cGRhdGVDdXJzb3JXcmFwcGVyIik7aShWcGEsImdldEVkaXRhYmxlIik7aShvWWEsInNlbGVjdGlvbkNvbnRleHRDaGFuZ2VkIik7aShVcGEsImJ1aWxkTm9kZVZpZXdzIik7aShuWWEsImNoYW5nZWROb2RlVmlld3MiKTtpKFdwYSwiY2hlY2tTdGF0ZUNvbXBvbmVudCIpfSk7dmFyIEdwYT1nKCgpPT57bmF0KCl9KTtmdW5jdGlvbiBLcGEocyl7dmFyIGU9bFlhJiZzLm1ldGFLZXkmJnMuc2hpZnRLZXkmJiFzLmN0cmxLZXkmJiFzLmFsdEtleXx8Y1lhJiZzLnNoaWZ0S2V5JiZzLmtleSYmcy5rZXkubGVuZ3RoPT0xfHxzLmtleT09IlVuaWRlbnRpZmllZCIsdD0hZSYmcy5rZXl8fChzLnNoaWZ0S2V5P3NsZTpkdSlbcy5rZXlDb2RlXXx8cy5rZXl8fCJVbmlkZW50aWZpZWQiO3JldHVybiB0PT0iRXNjIiYmKHQ9IkVzY2FwZSIpLHQ9PSJEZWwiJiYodD0iRGVsZXRlIiksdD09IkxlZnQiJiYodD0iQXJyb3dMZWZ0IiksdD09IlVwIiYmKHQ9IkFycm93VXAiKSx0PT0iUmlnaHQiJiYodD0iQXJyb3dSaWdodCIpLHQ9PSJEb3duIiYmKHQ9IkFycm93RG93biIpLHR9dmFyIGR1LHNsZSxsWWEsY1lhLERyLGlsZSxZcGE9ZygoKT0+e2R1PXs4OiJCYWNrc3BhY2UiLDk6IlRhYiIsMTA6IkVudGVyIiwxMjoiTnVtTG9jayIsMTM6IkVudGVyIiwxNjoiU2hpZnQiLDE3OiJDb250cm9sIiwxODoiQWx0IiwyMDoiQ2Fwc0xvY2siLDI3OiJFc2NhcGUiLDMyOiIgIiwzMzoiUGFnZVVwIiwzNDoiUGFnZURvd24iLDM1OiJFbmQiLDM2OiJIb21lIiwzNzoiQXJyb3dMZWZ0IiwzODoiQXJyb3dVcCIsMzk6IkFycm93UmlnaHQiLDQwOiJBcnJvd0Rvd24iLDQ0OiJQcmludFNjcmVlbiIsNDU6Ikluc2VydCIsNDY6IkRlbGV0ZSIsNTk6IjsiLDYxOiI9Iiw5MToiTWV0YSIsOTI6Ik1ldGEiLDEwNjoiKiIsMTA3OiIrIiwxMDg6IiwiLDEwOToiLSIsMTEwOiIuIiwxMTE6Ii8iLDE0NDoiTnVtTG9jayIsMTQ1OiJTY3JvbGxMb2NrIiwxNjA6IlNoaWZ0IiwxNjE6IlNoaWZ0IiwxNjI6IkNvbnRyb2wiLDE2MzoiQ29udHJvbCIsMTY0OiJBbHQiLDE2NToiQWx0IiwxNzM6Ii0iLDE4NjoiOyIsMTg3OiI9IiwxODg6IiwiLDE4OToiLSIsMTkwOiIuIiwxOTE6Ii8iLDE5MjoiYCIsMjE5OiJbIiwyMjA6IlxcIiwyMjE6Il0iLDIyMjoiJyJ9LHNsZT17NDg6IikiLDQ5OiIhIiw1MDoiQCIsNTE6IiMiLDUyOiIkIiw1MzoiJSIsNTQ6Il4iLDU1OiImIiw1NjoiKiIsNTc6IigiLDU5OiI6Iiw2MToiKyIsMTczOiJfIiwxODY6IjoiLDE4NzoiKyIsMTg4OiI8IiwxODk6Il8iLDE5MDoiPiIsMTkxOiI/IiwxOTI6In4iLDIxOToieyIsMjIwOiJ8IiwyMjE6In0iLDIyMjonIid9LGxZYT10eXBlb2YgbmF2aWdhdG9yPCJ1IiYmL01hYy8udGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pLGNZYT10eXBlb2YgbmF2aWdhdG9yPCJ1IiYmL01TSUUgXGR8VHJpZGVudFwvKD86WzctOV18XGR7Mix9KVwuLipydjooXGQrKS8uZXhlYyhuYXZpZ2F0b3IudXNlckFnZW50KTtmb3IoRHI9MDtEcjwxMDtEcisrKWR1WzQ4K0RyXT1kdVs5NitEcl09U3RyaW5nKERyKTtmb3IoRHI9MTtEcjw9MjQ7RHIrKylkdVtEcisxMTFdPSJGIitEcjtmb3IoRHI9NjU7RHI8PTkwO0RyKyspZHVbRHJdPVN0cmluZy5mcm9tQ2hhckNvZGUoRHIrMzIpLHNsZVtEcl09U3RyaW5nLmZyb21DaGFyQ29kZShEcik7Zm9yKGlsZSBpbiBkdSlzbGUuaGFzT3duUHJvcGVydHkoaWxlKXx8KHNsZVtpbGVdPWR1W2lsZV0pO2koS3BhLCJrZXlOYW1lIil9KTtmdW5jdGlvbiBwWWEocyl7bGV0IGU9cy5zcGxpdCgvLSg/ISQpLyksdD1lW2UubGVuZ3RoLTFdO3Q9PSJTcGFjZSImJih0PSIgIik7bGV0IGEscixuLG87Zm9yKGxldCBsPTA7bDxlLmxlbmd0aC0xO2wrKyl7bGV0IHA9ZVtsXTtpZigvXihjbWR8bWV0YXxtKSQvaS50ZXN0KHApKW89ITA7ZWxzZSBpZigvXmEobHQpPyQvaS50ZXN0KHApKWE9ITA7ZWxzZSBpZigvXihjfGN0cmx8Y29udHJvbCkkL2kudGVzdChwKSlyPSEwO2Vsc2UgaWYoL15zKGhpZnQpPyQvaS50ZXN0KHApKW49ITA7ZWxzZSBpZigvXm1vZCQvaS50ZXN0KHApKWRZYT9vPSEwOnI9ITA7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCBtb2RpZmllciBuYW1lOiAiK3ApfXJldHVybiBhJiYodD0iQWx0LSIrdCksciYmKHQ9IkN0cmwtIit0KSxvJiYodD0iTWV0YS0iK3QpLG4mJih0PSJTaGlmdC0iK3QpLHR9ZnVuY3Rpb24gaFlhKHMpe2xldCBlPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCB0IGluIHMpZVtwWWEodCldPXNbdF07cmV0dXJuIGV9ZnVuY3Rpb24gbGF0KHMsZSx0PSEwKXtyZXR1cm4gZS5hbHRLZXkmJihzPSJBbHQtIitzKSxlLmN0cmxLZXkmJihzPSJDdHJsLSIrcyksZS5tZXRhS2V5JiYocz0iTWV0YS0iK3MpLHQmJmUuc2hpZnRLZXkmJihzPSJTaGlmdC0iK3MpLHN9ZnVuY3Rpb24gY2F0KHMpe3JldHVybiBuZXcgWXMoe3Byb3BzOntoYW5kbGVLZXlEb3duOnJsZShzKX19KX1mdW5jdGlvbiBybGUocyl7bGV0IGU9aFlhKHMpO3JldHVybiBmdW5jdGlvbih0LGEpe2xldCByPUtwYShhKSxuLG89ZVtsYXQocixhKV07aWYobyYmbyh0LnN0YXRlLHQuZGlzcGF0Y2gsdCkpcmV0dXJuITA7aWYoci5sZW5ndGg9PTEmJnIhPSIgIil7aWYoYS5zaGlmdEtleSl7bGV0IGw9ZVtsYXQocixhLCExKV07aWYobCYmbCh0LnN0YXRlLHQuZGlzcGF0Y2gsdCkpcmV0dXJuITB9aWYoKGEuYWx0S2V5fHxhLm1ldGFLZXl8fGEuY3RybEtleSkmJiEodVlhJiZhLmN0cmxLZXkmJmEuYWx0S2V5KSYmKG49ZHVbYS5rZXlDb2RlXSkmJm4hPXIpe2xldCBsPWVbbGF0KG4sYSldO2lmKGwmJmwodC5zdGF0ZSx0LmRpc3BhdGNoLHQpKXJldHVybiEwfX1yZXR1cm4hMX19dmFyIGRZYSx1WWEsZGF0PWcoKCk9PntZcGEoKTtydSgpO2RZYT10eXBlb2YgbmF2aWdhdG9yPCJ1IiYmL01hY3xpUChob25lfFtvYV1kKS8udGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pLHVZYT10eXBlb2YgbmF2aWdhdG9yPCJ1IiYmL1dpbi8udGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pO2kocFlhLCJub3JtYWxpemVLZXlOYW1lIik7aShoWWEsIm5vcm1hbGl6ZSIpO2kobGF0LCJtb2RpZmllcnMiKTtpKGNhdCwia2V5bWFwIik7aShybGUsImtleWRvd25IYW5kbGVyIil9KTt2YXIgWnBhPWcoKCk9PntkYXQoKX0pO3ZhciBYcGE9ZygoKT0+e19oKCl9KTt2YXIgUXBhPWcoKCk9Pnt6aCgpfSk7ZnVuY3Rpb24gSnBhKHMsZSl7bGV0eyRjdXJzb3I6dH09cy5zZWxlY3Rpb247cmV0dXJuIXR8fChlPyFlLmVuZE9mVGV4dGJsb2NrKCJiYWNrd2FyZCIscyk6dC5wYXJlbnRPZmZzZXQ+MCk/bnVsbDp0fWZ1bmN0aW9uIGVoYShzLGUsdCl7bGV0IGE9ZS5ub2RlQmVmb3JlLHI9YSxuPWUucG9zLTE7Zm9yKDshci5pc1RleHRibG9jaztuLS0pe2lmKHIudHlwZS5zcGVjLmlzb2xhdGluZylyZXR1cm4hMTtsZXQgdT1yLmxhc3RDaGlsZDtpZighdSlyZXR1cm4hMTtyPXV9bGV0IG89ZS5ub2RlQWZ0ZXIsbD1vLHA9ZS5wb3MrMTtmb3IoOyFsLmlzVGV4dGJsb2NrO3ArKyl7aWYobC50eXBlLnNwZWMuaXNvbGF0aW5nKXJldHVybiExO2xldCB1PWwuZmlyc3RDaGlsZDtpZighdSlyZXR1cm4hMTtsPXV9bGV0IGQ9X3Yocy5kb2MsbixwLF90LmVtcHR5KTtpZighZHx8ZC5mcm9tIT1ufHxkIGluc3RhbmNlb2YgZ28mJmQuc2xpY2Uuc2l6ZT49cC1uKXJldHVybiExO2lmKHQpe2xldCB1PXMudHIuc3RlcChkKTt1LnNldFNlbGVjdGlvbihKdC5jcmVhdGUodS5kb2MsbikpLHQodS5zY3JvbGxJbnRvVmlldygpKX1yZXR1cm4hMH1mdW5jdGlvbiBJdihzLGUsdD0hMSl7Zm9yKGxldCBhPXM7YTthPWU9PSJzdGFydCI/YS5maXJzdENoaWxkOmEubGFzdENoaWxkKXtpZihhLmlzVGV4dGJsb2NrKXJldHVybiEwO2lmKHQmJmEuY2hpbGRDb3VudCE9MSlyZXR1cm4hMX1yZXR1cm4hMX1mdW5jdGlvbiB1YXQocyl7aWYoIXMucGFyZW50LnR5cGUuc3BlYy5pc29sYXRpbmcpZm9yKGxldCBlPXMuZGVwdGgtMTtlPj0wO2UtLSl7aWYocy5pbmRleChlKT4wKXJldHVybiBzLmRvYy5yZXNvbHZlKHMuYmVmb3JlKGUrMSkpO2lmKHMubm9kZShlKS50eXBlLnNwZWMuaXNvbGF0aW5nKWJyZWFrfXJldHVybiBudWxsfWZ1bmN0aW9uIHRoYShzLGUpe2xldHskY3Vyc29yOnR9PXMuc2VsZWN0aW9uO3JldHVybiF0fHwoZT8hZS5lbmRPZlRleHRibG9jaygiZm9yd2FyZCIscyk6dC5wYXJlbnRPZmZzZXQ8dC5wYXJlbnQuY29udGVudC5zaXplKT9udWxsOnR9ZnVuY3Rpb24gcGF0KHMpe2lmKCFzLnBhcmVudC50eXBlLnNwZWMuaXNvbGF0aW5nKWZvcihsZXQgZT1zLmRlcHRoLTE7ZT49MDtlLS0pe2xldCB0PXMubm9kZShlKTtpZihzLmluZGV4KGUpKzE8dC5jaGlsZENvdW50KXJldHVybiBzLmRvYy5yZXNvbHZlKHMuYWZ0ZXIoZSsxKSk7aWYodC50eXBlLnNwZWMuaXNvbGF0aW5nKWJyZWFrfXJldHVybiBudWxsfWZ1bmN0aW9uIGhhdChzKXtmb3IobGV0IGU9MDtlPHMuZWRnZUNvdW50O2UrKyl7bGV0e3R5cGU6dH09cy5lZGdlKGUpO2lmKHQuaXNUZXh0YmxvY2smJiF0Lmhhc1JlcXVpcmVkQXR0cnMoKSlyZXR1cm4gdH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBhaGEocyl7cmV0dXJuKGUsdCk9PntsZXR7JGZyb206YSwkdG86cn09ZS5zZWxlY3Rpb247aWYoZS5zZWxlY3Rpb24gaW5zdGFuY2VvZiBGdCYmZS5zZWxlY3Rpb24ubm9kZS5pc0Jsb2NrKXJldHVybiFhLnBhcmVudE9mZnNldHx8IXpsKGUuZG9jLGEucG9zKT8hMToodCYmdChlLnRyLnNwbGl0KGEucG9zKS5zY3JvbGxJbnRvVmlldygpKSwhMCk7aWYoIWEuZGVwdGgpcmV0dXJuITE7bGV0IG49W10sbyxsLHA9ITEsZD0hMTtmb3IobGV0IHY9YS5kZXB0aDs7di0tKWlmKGEubm9kZSh2KS5pc0Jsb2NrKXtwPWEuZW5kKHYpPT1hLnBvcysoYS5kZXB0aC12KSxkPWEuc3RhcnQodik9PWEucG9zLShhLmRlcHRoLXYpLGw9aGF0KGEubm9kZSh2LTEpLmNvbnRlbnRNYXRjaEF0KGEuaW5kZXhBZnRlcih2LTEpKSk7bGV0IG09cyYmcyhyLnBhcmVudCxwLGEpO24udW5zaGlmdChtfHwocCYmbD97dHlwZTpsfTpudWxsKSksbz12O2JyZWFrfWVsc2V7aWYodj09MSlyZXR1cm4hMTtuLnVuc2hpZnQobnVsbCl9bGV0IHU9ZS50cjsoZS5zZWxlY3Rpb24gaW5zdGFuY2VvZiBKdHx8ZS5zZWxlY3Rpb24gaW5zdGFuY2VvZiBubikmJnUuZGVsZXRlU2VsZWN0aW9uKCk7bGV0IGM9dS5tYXBwaW5nLm1hcChhLnBvcyksYj16bCh1LmRvYyxjLG4ubGVuZ3RoLG4pO2lmKGJ8fChuWzBdPWw/e3R5cGU6bH06bnVsbCxiPXpsKHUuZG9jLGMsbi5sZW5ndGgsbikpLCFiKXJldHVybiExO2lmKHUuc3BsaXQoYyxuLmxlbmd0aCxuKSwhcCYmZCYmYS5ub2RlKG8pLnR5cGUhPWwpe2xldCB2PXUubWFwcGluZy5tYXAoYS5iZWZvcmUobykpLHg9dS5kb2MucmVzb2x2ZSh2KTtsJiZhLm5vZGUoby0xKS5jYW5SZXBsYWNlV2l0aCh4LmluZGV4KCkseC5pbmRleCgpKzEsbCkmJnUuc2V0Tm9kZU1hcmt1cCh1Lm1hcHBpbmcubWFwKGEuYmVmb3JlKG8pKSxsKX1yZXR1cm4gdCYmdCh1LnNjcm9sbEludG9WaWV3KCkpLCEwfX1mdW5jdGlvbiBtWWEocyxlLHQpe2xldCBhPWUubm9kZUJlZm9yZSxyPWUubm9kZUFmdGVyLG49ZS5pbmRleCgpO3JldHVybiFhfHwhcnx8IWEudHlwZS5jb21wYXRpYmxlQ29udGVudChyLnR5cGUpPyExOiFhLmNvbnRlbnQuc2l6ZSYmZS5wYXJlbnQuY2FuUmVwbGFjZShuLTEsbik/KHQmJnQocy50ci5kZWxldGUoZS5wb3MtYS5ub2RlU2l6ZSxlLnBvcykuc2Nyb2xsSW50b1ZpZXcoKSksITApOiFlLnBhcmVudC5jYW5SZXBsYWNlKG4sbisxKXx8IShyLmlzVGV4dGJsb2NrfHxabChzLmRvYyxlLnBvcykpPyExOih0JiZ0KHMudHIuam9pbihlLnBvcykuc2Nyb2xsSW50b1ZpZXcoKSksITApfWZ1bmN0aW9uIGloYShzLGUsdCxhKXtsZXQgcj1lLm5vZGVCZWZvcmUsbj1lLm5vZGVBZnRlcixvLGwscD1yLnR5cGUuc3BlYy5pc29sYXRpbmd8fG4udHlwZS5zcGVjLmlzb2xhdGluZztpZighcCYmbVlhKHMsZSx0KSlyZXR1cm4hMDtsZXQgZD0hcCYmZS5wYXJlbnQuY2FuUmVwbGFjZShlLmluZGV4KCksZS5pbmRleCgpKzEpO2lmKGQmJihvPShsPXIuY29udGVudE1hdGNoQXQoci5jaGlsZENvdW50KSkuZmluZFdyYXBwaW5nKG4udHlwZSkpJiZsLm1hdGNoVHlwZShvWzBdfHxuLnR5cGUpLnZhbGlkRW5kKXtpZih0KXtsZXQgdj1lLnBvcytuLm5vZGVTaXplLHg9cnQuZW1wdHk7Zm9yKGxldCB5PW8ubGVuZ3RoLTE7eT49MDt5LS0peD1ydC5mcm9tKG9beV0uY3JlYXRlKG51bGwseCkpO3g9cnQuZnJvbShyLmNvcHkoeCkpO2xldCBtPXMudHIuc3RlcChuZXcgZHIoZS5wb3MtMSx2LGUucG9zLHYsbmV3IF90KHgsMSwwKSxvLmxlbmd0aCwhMCkpLGY9bS5kb2MucmVzb2x2ZSh2KzIqby5sZW5ndGgpO2Yubm9kZUFmdGVyJiZmLm5vZGVBZnRlci50eXBlPT1yLnR5cGUmJlpsKG0uZG9jLGYucG9zKSYmbS5qb2luKGYucG9zKSx0KG0uc2Nyb2xsSW50b1ZpZXcoKSl9cmV0dXJuITB9bGV0IHU9bi50eXBlLnNwZWMuaXNvbGF0aW5nfHxhPjAmJnA/bnVsbDpRdC5maW5kRnJvbShlLDEpLGM9dSYmdS4kZnJvbS5ibG9ja1JhbmdlKHUuJHRvKSxiPWMmJlBkKGMpO2lmKGIhPW51bGwmJmI+PWUuZGVwdGgpcmV0dXJuIHQmJnQocy50ci5saWZ0KGMsYikuc2Nyb2xsSW50b1ZpZXcoKSksITA7aWYoZCYmSXYobiwic3RhcnQiLCEwKSYmSXYociwiZW5kIikpe2xldCB2PXIseD1bXTtmb3IoO3gucHVzaCh2KSwhdi5pc1RleHRibG9jazspdj12Lmxhc3RDaGlsZDtsZXQgbT1uLGY9MTtmb3IoOyFtLmlzVGV4dGJsb2NrO209bS5maXJzdENoaWxkKWYrKztpZih2LmNhblJlcGxhY2Uodi5jaGlsZENvdW50LHYuY2hpbGRDb3VudCxtLmNvbnRlbnQpKXtpZih0KXtsZXQgeT1ydC5lbXB0eTtmb3IobGV0IHo9eC5sZW5ndGgtMTt6Pj0wO3otLSl5PXJ0LmZyb20oeFt6XS5jb3B5KHkpKTtsZXQgTT1zLnRyLnN0ZXAobmV3IGRyKGUucG9zLXgubGVuZ3RoLGUucG9zK24ubm9kZVNpemUsZS5wb3MrZixlLnBvcytuLm5vZGVTaXplLWYsbmV3IF90KHkseC5sZW5ndGgsMCksMCwhMCkpO3QoTS5zY3JvbGxJbnRvVmlldygpKX1yZXR1cm4hMH19cmV0dXJuITF9ZnVuY3Rpb24gcmhhKHMpe3JldHVybiBmdW5jdGlvbihlLHQpe2xldCBhPWUuc2VsZWN0aW9uLHI9czwwP2EuJGZyb206YS4kdG8sbj1yLmRlcHRoO2Zvcig7ci5ub2RlKG4pLmlzSW5saW5lOyl7aWYoIW4pcmV0dXJuITE7bi0tfXJldHVybiByLm5vZGUobikuaXNUZXh0YmxvY2s/KHQmJnQoZS50ci5zZXRTZWxlY3Rpb24oSnQuY3JlYXRlKGUuZG9jLHM8MD9yLnN0YXJ0KG4pOnIuZW5kKG4pKSkpLCEwKTohMX19ZnVuY3Rpb24gU2F0KHMsZT1udWxsKXtyZXR1cm4gZnVuY3Rpb24odCxhKXtsZXR7JGZyb206ciwkdG86bn09dC5zZWxlY3Rpb24sbz1yLmJsb2NrUmFuZ2UobiksbD1vJiZLOChvLHMsZSk7cmV0dXJuIGw/KGEmJmEodC50ci53cmFwKG8sbCkuc2Nyb2xsSW50b1ZpZXcoKSksITApOiExfX1mdW5jdGlvbiBibGUocyxlPW51bGwpe3JldHVybiBmdW5jdGlvbih0LGEpe2xldCByPSExO2ZvcihsZXQgbj0wO248dC5zZWxlY3Rpb24ucmFuZ2VzLmxlbmd0aCYmIXI7bisrKXtsZXR7JGZyb206e3BvczpvfSwkdG86e3BvczpsfX09dC5zZWxlY3Rpb24ucmFuZ2VzW25dO3QuZG9jLm5vZGVzQmV0d2VlbihvLGwsKHAsZCk9PntpZihyKXJldHVybiExO2lmKCEoIXAuaXNUZXh0YmxvY2t8fHAuaGFzTWFya3VwKHMsZSkpKWlmKHAudHlwZT09cylyPSEwO2Vsc2V7bGV0IHU9dC5kb2MucmVzb2x2ZShkKSxjPXUuaW5kZXgoKTtyPXUucGFyZW50LmNhblJlcGxhY2VXaXRoKGMsYysxLHMpfX0pfWlmKCFyKXJldHVybiExO2lmKGEpe2xldCBuPXQudHI7Zm9yKGxldCBvPTA7bzx0LnNlbGVjdGlvbi5yYW5nZXMubGVuZ3RoO28rKyl7bGV0eyRmcm9tOntwb3M6bH0sJHRvOntwb3M6cH19PXQuc2VsZWN0aW9uLnJhbmdlc1tvXTtuLnNldEJsb2NrVHlwZShsLHAscyxlKX1hKG4uc2Nyb2xsSW50b1ZpZXcoKSl9cmV0dXJuITB9fWZ1bmN0aW9uIGdZYShzLGUsdCxhKXtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyl7bGV0eyRmcm9tOm4sJHRvOm99PWVbcl0sbD1uLmRlcHRoPT0wP3MuaW5saW5lQ29udGVudCYmcy50eXBlLmFsbG93c01hcmtUeXBlKHQpOiExO2lmKHMubm9kZXNCZXR3ZWVuKG4ucG9zLG8ucG9zLChwLGQpPT57aWYobHx8IWEmJnAuaXNBdG9tJiZwLmlzSW5saW5lJiZkPj1uLnBvcyYmZCtwLm5vZGVTaXplPD1vLnBvcylyZXR1cm4hMTtsPXAuaW5saW5lQ29udGVudCYmcC50eXBlLmFsbG93c01hcmtUeXBlKHQpfSksbClyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBiWWEocyl7bGV0IGU9W107Zm9yKGxldCB0PTA7dDxzLmxlbmd0aDt0Kyspe2xldHskZnJvbTphLCR0bzpyfT1zW3RdO2EuZG9jLm5vZGVzQmV0d2VlbihhLnBvcyxyLnBvcywobixvKT0+e2lmKG4uaXNBdG9tJiZuLmNvbnRlbnQuc2l6ZSYmbi5pc0lubGluZSYmbz49YS5wb3MmJm8rbi5ub2RlU2l6ZTw9ci5wb3MpcmV0dXJuIG8rMT5hLnBvcyYmZS5wdXNoKG5ldyBYOChhLGEuZG9jLnJlc29sdmUobysxKSkpLGE9YS5kb2MucmVzb2x2ZShvKzErbi5jb250ZW50LnNpemUpLCExfSksYS5wb3M8ci5wb3MmJmUucHVzaChuZXcgWDgoYSxyKSl9cmV0dXJuIGV9ZnVuY3Rpb24gdllhKHMsZT1udWxsLHQpe2xldCBhPSh0JiZ0LnJlbW92ZVdoZW5QcmVzZW50KSE9PSExLHI9KHQmJnQuZW50ZXJJbmxpbmVBdG9tcykhPT0hMSxuPSEodCYmdC5pbmNsdWRlV2hpdGVzcGFjZSk7cmV0dXJuIGZ1bmN0aW9uKG8sbCl7bGV0e2VtcHR5OnAsJGN1cnNvcjpkLHJhbmdlczp1fT1vLnNlbGVjdGlvbjtpZihwJiYhZHx8IWdZYShvLmRvYyx1LHMscikpcmV0dXJuITE7aWYobClpZihkKXMuaXNJblNldChvLnN0b3JlZE1hcmtzfHxkLm1hcmtzKCkpP2woby50ci5yZW1vdmVTdG9yZWRNYXJrKHMpKTpsKG8udHIuYWRkU3RvcmVkTWFyayhzLmNyZWF0ZShlKSkpO2Vsc2V7bGV0IGMsYj1vLnRyO3J8fCh1PWJZYSh1KSksYT9jPSF1LnNvbWUodj0+by5kb2MucmFuZ2VIYXNNYXJrKHYuJGZyb20ucG9zLHYuJHRvLnBvcyxzKSk6Yz0hdS5ldmVyeSh2PT57bGV0IHg9ITE7cmV0dXJuIGIuZG9jLm5vZGVzQmV0d2Vlbih2LiRmcm9tLnBvcyx2LiR0by5wb3MsKG0sZix5KT0+e2lmKHgpcmV0dXJuITE7eD0hcy5pc0luU2V0KG0ubWFya3MpJiYhIXkmJnkudHlwZS5hbGxvd3NNYXJrVHlwZShzKSYmIShtLmlzVGV4dCYmL15ccyokLy50ZXN0KG0udGV4dEJldHdlZW4oTWF0aC5tYXgoMCx2LiRmcm9tLnBvcy1mKSxNYXRoLm1pbihtLm5vZGVTaXplLHYuJHRvLnBvcy1mKSkpKX0pLCF4fSk7Zm9yKGxldCB2PTA7djx1Lmxlbmd0aDt2Kyspe2xldHskZnJvbTp4LCR0bzptfT11W3ZdO2lmKCFjKWIucmVtb3ZlTWFyayh4LnBvcyxtLnBvcyxzKTtlbHNle2xldCBmPXgucG9zLHk9bS5wb3MsTT14Lm5vZGVBZnRlcix6PW0ubm9kZUJlZm9yZSxOPW4mJk0mJk0uaXNUZXh0Py9eXHMqLy5leGVjKE0udGV4dClbMF0ubGVuZ3RoOjAsQz1uJiZ6JiZ6LmlzVGV4dD8vXHMqJC8uZXhlYyh6LnRleHQpWzBdLmxlbmd0aDowO2YrTjx5JiYoZis9Tix5LT1DKSxiLmFkZE1hcmsoZix5LHMuY3JlYXRlKGUpKX19bChiLnNjcm9sbEludG9WaWV3KCkpfXJldHVybiEwfX1mdW5jdGlvbiB4WWEocyxlKXtyZXR1cm4gdD0+e2lmKCF0LmlzR2VuZXJpYylyZXR1cm4gcyh0KTtsZXQgYT1bXTtmb3IobGV0IG49MDtuPHQubWFwcGluZy5tYXBzLmxlbmd0aDtuKyspe2xldCBvPXQubWFwcGluZy5tYXBzW25dO2ZvcihsZXQgbD0wO2w8YS5sZW5ndGg7bCsrKWFbbF09by5tYXAoYVtsXSk7by5mb3JFYWNoKChsLHAsZCx1KT0+YS5wdXNoKGQsdSkpfWxldCByPVtdO2ZvcihsZXQgbj0wO248YS5sZW5ndGg7bis9Mil7bGV0IG89YVtuXSxsPWFbbisxXSxwPXQuZG9jLnJlc29sdmUobyksZD1wLnNoYXJlZERlcHRoKGwpLHU9cC5ub2RlKGQpO2ZvcihsZXQgYz1wLmluZGV4QWZ0ZXIoZCksYj1wLmFmdGVyKGQrMSk7Yjw9bDsrK2Mpe2xldCB2PXUubWF5YmVDaGlsZChjKTtpZighdilicmVhaztpZihjJiZyLmluZGV4T2YoYik9PS0xKXtsZXQgeD11LmNoaWxkKGMtMSk7eC50eXBlPT12LnR5cGUmJmUoeCx2KSYmci5wdXNoKGIpfWIrPXYubm9kZVNpemV9fXIuc29ydCgobixvKT0+bi1vKTtmb3IobGV0IG49ci5sZW5ndGgtMTtuPj0wO24tLSlabCh0LmRvYyxyW25dKSYmdC5qb2luKHJbbl0pO3ModCl9fWZ1bmN0aW9uIHlZYShzLGUpe2xldCB0PUFycmF5LmlzQXJyYXkoZSk/YT0+ZS5pbmRleE9mKGEudHlwZS5uYW1lKT4tMTplO3JldHVybihhLHIsbik9PnMoYSxyJiZ4WWEocix0KSxuKX1mdW5jdGlvbiBvbGUoLi4ucyl7cmV0dXJuIGZ1bmN0aW9uKGUsdCxhKXtmb3IobGV0IHI9MDtyPHMubGVuZ3RoO3IrKylpZihzW3JdKGUsdCxhKSlyZXR1cm4hMDtyZXR1cm4hMX19dmFyIHNYLG5sZSxiYXQsdmF0LGxsZSxjbGUsZGxlLHhhdCx5YXQsd2F0LHVsZSxwbGUsaGxlLGZsZSxmYXQsZllhLGthdCxzaGEsbWxlLGdsZSxtYXQsb2hhLE5kLGdhdCx3WWEsa1lhLG5oYT1nKCgpPT57emgoKTtfaCgpO3J1KCk7c1g9aSgocyxlKT0+cy5zZWxlY3Rpb24uZW1wdHk/ITE6KGUmJmUocy50ci5kZWxldGVTZWxlY3Rpb24oKS5zY3JvbGxJbnRvVmlldygpKSwhMCksImRlbGV0ZVNlbGVjdGlvbiIpO2koSnBhLCJhdEJsb2NrU3RhcnQiKTtubGU9aSgocyxlLHQpPT57bGV0IGE9SnBhKHMsdCk7aWYoIWEpcmV0dXJuITE7bGV0IHI9dWF0KGEpO2lmKCFyKXtsZXQgbz1hLmJsb2NrUmFuZ2UoKSxsPW8mJlBkKG8pO3JldHVybiBsPT1udWxsPyExOihlJiZlKHMudHIubGlmdChvLGwpLnNjcm9sbEludG9WaWV3KCkpLCEwKX1sZXQgbj1yLm5vZGVCZWZvcmU7aWYoaWhhKHMscixlLC0xKSlyZXR1cm4hMDtpZihhLnBhcmVudC5jb250ZW50LnNpemU9PTAmJihJdihuLCJlbmQiKXx8RnQuaXNTZWxlY3RhYmxlKG4pKSlmb3IobGV0IG89YS5kZXB0aDs7by0tKXtsZXQgbD1fdihzLmRvYyxhLmJlZm9yZShvKSxhLmFmdGVyKG8pLF90LmVtcHR5KTtpZihsJiZsLnNsaWNlLnNpemU8bC50by1sLmZyb20pe2lmKGUpe2xldCBwPXMudHIuc3RlcChsKTtwLnNldFNlbGVjdGlvbihJdihuLCJlbmQiKT9RdC5maW5kRnJvbShwLmRvYy5yZXNvbHZlKHAubWFwcGluZy5tYXAoci5wb3MsLTEpKSwtMSk6RnQuY3JlYXRlKHAuZG9jLHIucG9zLW4ubm9kZVNpemUpKSxlKHAuc2Nyb2xsSW50b1ZpZXcoKSl9cmV0dXJuITB9aWYobz09MXx8YS5ub2RlKG8tMSkuY2hpbGRDb3VudD4xKWJyZWFrfXJldHVybiBuLmlzQXRvbSYmci5kZXB0aD09YS5kZXB0aC0xPyhlJiZlKHMudHIuZGVsZXRlKHIucG9zLW4ubm9kZVNpemUsci5wb3MpLnNjcm9sbEludG9WaWV3KCkpLCEwKTohMX0sImpvaW5CYWNrd2FyZCIpLGJhdD1pKChzLGUsdCk9PntsZXQgYT1KcGEocyx0KTtpZighYSlyZXR1cm4hMTtsZXQgcj11YXQoYSk7cmV0dXJuIHI/ZWhhKHMscixlKTohMX0sImpvaW5UZXh0YmxvY2tCYWNrd2FyZCIpLHZhdD1pKChzLGUsdCk9PntsZXQgYT10aGEocyx0KTtpZighYSlyZXR1cm4hMTtsZXQgcj1wYXQoYSk7cmV0dXJuIHI/ZWhhKHMscixlKTohMX0sImpvaW5UZXh0YmxvY2tGb3J3YXJkIik7aShlaGEsImpvaW5UZXh0YmxvY2tzQXJvdW5kIik7aShJdiwidGV4dGJsb2NrQXQiKTtsbGU9aSgocyxlLHQpPT57bGV0eyRoZWFkOmEsZW1wdHk6cn09cy5zZWxlY3Rpb24sbj1hO2lmKCFyKXJldHVybiExO2lmKGEucGFyZW50LmlzVGV4dGJsb2NrKXtpZih0PyF0LmVuZE9mVGV4dGJsb2NrKCJiYWNrd2FyZCIscyk6YS5wYXJlbnRPZmZzZXQ+MClyZXR1cm4hMTtuPXVhdChhKX1sZXQgbz1uJiZuLm5vZGVCZWZvcmU7cmV0dXJuIW98fCFGdC5pc1NlbGVjdGFibGUobyk/ITE6KGUmJmUocy50ci5zZXRTZWxlY3Rpb24oRnQuY3JlYXRlKHMuZG9jLG4ucG9zLW8ubm9kZVNpemUpKS5zY3JvbGxJbnRvVmlldygpKSwhMCl9LCJzZWxlY3ROb2RlQmFja3dhcmQiKTtpKHVhdCwiZmluZEN1dEJlZm9yZSIpO2kodGhhLCJhdEJsb2NrRW5kIik7Y2xlPWkoKHMsZSx0KT0+e2xldCBhPXRoYShzLHQpO2lmKCFhKXJldHVybiExO2xldCByPXBhdChhKTtpZighcilyZXR1cm4hMTtsZXQgbj1yLm5vZGVBZnRlcjtpZihpaGEocyxyLGUsMSkpcmV0dXJuITA7aWYoYS5wYXJlbnQuY29udGVudC5zaXplPT0wJiYoSXYobiwic3RhcnQiKXx8RnQuaXNTZWxlY3RhYmxlKG4pKSl7bGV0IG89X3Yocy5kb2MsYS5iZWZvcmUoKSxhLmFmdGVyKCksX3QuZW1wdHkpO2lmKG8mJm8uc2xpY2Uuc2l6ZTxvLnRvLW8uZnJvbSl7aWYoZSl7bGV0IGw9cy50ci5zdGVwKG8pO2wuc2V0U2VsZWN0aW9uKEl2KG4sInN0YXJ0Iik/UXQuZmluZEZyb20obC5kb2MucmVzb2x2ZShsLm1hcHBpbmcubWFwKHIucG9zKSksMSk6RnQuY3JlYXRlKGwuZG9jLGwubWFwcGluZy5tYXAoci5wb3MpKSksZShsLnNjcm9sbEludG9WaWV3KCkpfXJldHVybiEwfX1yZXR1cm4gbi5pc0F0b20mJnIuZGVwdGg9PWEuZGVwdGgtMT8oZSYmZShzLnRyLmRlbGV0ZShyLnBvcyxyLnBvcytuLm5vZGVTaXplKS5zY3JvbGxJbnRvVmlldygpKSwhMCk6ITF9LCJqb2luRm9yd2FyZCIpLGRsZT1pKChzLGUsdCk9PntsZXR7JGhlYWQ6YSxlbXB0eTpyfT1zLnNlbGVjdGlvbixuPWE7aWYoIXIpcmV0dXJuITE7aWYoYS5wYXJlbnQuaXNUZXh0YmxvY2spe2lmKHQ/IXQuZW5kT2ZUZXh0YmxvY2soImZvcndhcmQiLHMpOmEucGFyZW50T2Zmc2V0PGEucGFyZW50LmNvbnRlbnQuc2l6ZSlyZXR1cm4hMTtuPXBhdChhKX1sZXQgbz1uJiZuLm5vZGVBZnRlcjtyZXR1cm4hb3x8IUZ0LmlzU2VsZWN0YWJsZShvKT8hMTooZSYmZShzLnRyLnNldFNlbGVjdGlvbihGdC5jcmVhdGUocy5kb2Msbi5wb3MpKS5zY3JvbGxJbnRvVmlldygpKSwhMCl9LCJzZWxlY3ROb2RlRm9yd2FyZCIpO2kocGF0LCJmaW5kQ3V0QWZ0ZXIiKTt4YXQ9aSgocyxlKT0+e2xldCB0PXMuc2VsZWN0aW9uLGE9dCBpbnN0YW5jZW9mIEZ0LHI7aWYoYSl7aWYodC5ub2RlLmlzVGV4dGJsb2NrfHwhWmwocy5kb2MsdC5mcm9tKSlyZXR1cm4hMTtyPXQuZnJvbX1lbHNlIGlmKHI9WTgocy5kb2MsdC5mcm9tLC0xKSxyPT1udWxsKXJldHVybiExO2lmKGUpe2xldCBuPXMudHIuam9pbihyKTthJiZuLnNldFNlbGVjdGlvbihGdC5jcmVhdGUobi5kb2Msci1zLmRvYy5yZXNvbHZlKHIpLm5vZGVCZWZvcmUubm9kZVNpemUpKSxlKG4uc2Nyb2xsSW50b1ZpZXcoKSl9cmV0dXJuITB9LCJqb2luVXAiKSx5YXQ9aSgocyxlKT0+e2xldCB0PXMuc2VsZWN0aW9uLGE7aWYodCBpbnN0YW5jZW9mIEZ0KXtpZih0Lm5vZGUuaXNUZXh0YmxvY2t8fCFabChzLmRvYyx0LnRvKSlyZXR1cm4hMTthPXQudG99ZWxzZSBpZihhPVk4KHMuZG9jLHQudG8sMSksYT09bnVsbClyZXR1cm4hMTtyZXR1cm4gZSYmZShzLnRyLmpvaW4oYSkuc2Nyb2xsSW50b1ZpZXcoKSksITB9LCJqb2luRG93biIpLHdhdD1pKChzLGUpPT57bGV0eyRmcm9tOnQsJHRvOmF9PXMuc2VsZWN0aW9uLHI9dC5ibG9ja1JhbmdlKGEpLG49ciYmUGQocik7cmV0dXJuIG49PW51bGw/ITE6KGUmJmUocy50ci5saWZ0KHIsbikuc2Nyb2xsSW50b1ZpZXcoKSksITApfSwibGlmdCIpLHVsZT1pKChzLGUpPT57bGV0eyRoZWFkOnQsJGFuY2hvcjphfT1zLnNlbGVjdGlvbjtyZXR1cm4hdC5wYXJlbnQudHlwZS5zcGVjLmNvZGV8fCF0LnNhbWVQYXJlbnQoYSk/ITE6KGUmJmUocy50ci5pbnNlcnRUZXh0KGAKYCkuc2Nyb2xsSW50b1ZpZXcoKSksITApfSwibmV3bGluZUluQ29kZSIpO2koaGF0LCJkZWZhdWx0QmxvY2tBdCIpO3BsZT1pKChzLGUpPT57bGV0eyRoZWFkOnQsJGFuY2hvcjphfT1zLnNlbGVjdGlvbjtpZighdC5wYXJlbnQudHlwZS5zcGVjLmNvZGV8fCF0LnNhbWVQYXJlbnQoYSkpcmV0dXJuITE7bGV0IHI9dC5ub2RlKC0xKSxuPXQuaW5kZXhBZnRlcigtMSksbz1oYXQoci5jb250ZW50TWF0Y2hBdChuKSk7aWYoIW98fCFyLmNhblJlcGxhY2VXaXRoKG4sbixvKSlyZXR1cm4hMTtpZihlKXtsZXQgbD10LmFmdGVyKCkscD1zLnRyLnJlcGxhY2VXaXRoKGwsbCxvLmNyZWF0ZUFuZEZpbGwoKSk7cC5zZXRTZWxlY3Rpb24oUXQubmVhcihwLmRvYy5yZXNvbHZlKGwpLDEpKSxlKHAuc2Nyb2xsSW50b1ZpZXcoKSl9cmV0dXJuITB9LCJleGl0Q29kZSIpLGhsZT1pKChzLGUpPT57bGV0IHQ9cy5zZWxlY3Rpb24seyRmcm9tOmEsJHRvOnJ9PXQ7aWYodCBpbnN0YW5jZW9mIG5ufHxhLnBhcmVudC5pbmxpbmVDb250ZW50fHxyLnBhcmVudC5pbmxpbmVDb250ZW50KXJldHVybiExO2xldCBuPWhhdChyLnBhcmVudC5jb250ZW50TWF0Y2hBdChyLmluZGV4QWZ0ZXIoKSkpO2lmKCFufHwhbi5pc1RleHRibG9jaylyZXR1cm4hMTtpZihlKXtsZXQgbz0oIWEucGFyZW50T2Zmc2V0JiZyLmluZGV4KCk8ci5wYXJlbnQuY2hpbGRDb3VudD9hOnIpLnBvcyxsPXMudHIuaW5zZXJ0KG8sbi5jcmVhdGVBbmRGaWxsKCkpO2wuc2V0U2VsZWN0aW9uKEp0LmNyZWF0ZShsLmRvYyxvKzEpKSxlKGwuc2Nyb2xsSW50b1ZpZXcoKSl9cmV0dXJuITB9LCJjcmVhdGVQYXJhZ3JhcGhOZWFyIiksZmxlPWkoKHMsZSk9PntsZXR7JGN1cnNvcjp0fT1zLnNlbGVjdGlvbjtpZighdHx8dC5wYXJlbnQuY29udGVudC5zaXplKXJldHVybiExO2lmKHQuZGVwdGg+MSYmdC5hZnRlcigpIT10LmVuZCgtMSkpe2xldCBuPXQuYmVmb3JlKCk7aWYoemwocy5kb2MsbikpcmV0dXJuIGUmJmUocy50ci5zcGxpdChuKS5zY3JvbGxJbnRvVmlldygpKSwhMH1sZXQgYT10LmJsb2NrUmFuZ2UoKSxyPWEmJlBkKGEpO3JldHVybiByPT1udWxsPyExOihlJiZlKHMudHIubGlmdChhLHIpLnNjcm9sbEludG9WaWV3KCkpLCEwKX0sImxpZnRFbXB0eUJsb2NrIik7aShhaGEsInNwbGl0QmxvY2tBcyIpO2ZhdD1haGEoKSxmWWE9aSgocyxlKT0+ZmF0KHMsZSYmKHQ9PntsZXQgYT1zLnN0b3JlZE1hcmtzfHxzLnNlbGVjdGlvbi4kdG8ucGFyZW50T2Zmc2V0JiZzLnNlbGVjdGlvbi4kZnJvbS5tYXJrcygpO2EmJnQuZW5zdXJlTWFya3MoYSksZSh0KX0pKSwic3BsaXRCbG9ja0tlZXBNYXJrcyIpLGthdD1pKChzLGUpPT57bGV0eyRmcm9tOnQsdG86YX09cy5zZWxlY3Rpb24scixuPXQuc2hhcmVkRGVwdGgoYSk7cmV0dXJuIG49PTA/ITE6KHI9dC5iZWZvcmUobiksZSYmZShzLnRyLnNldFNlbGVjdGlvbihGdC5jcmVhdGUocy5kb2MscikpKSwhMCl9LCJzZWxlY3RQYXJlbnROb2RlIiksc2hhPWkoKHMsZSk9PihlJiZlKHMudHIuc2V0U2VsZWN0aW9uKG5ldyBubihzLmRvYykpKSwhMCksInNlbGVjdEFsbCIpO2kobVlhLCJqb2luTWF5YmVDbGVhciIpO2koaWhhLCJkZWxldGVCYXJyaWVyIik7aShyaGEsInNlbGVjdFRleHRibG9ja1NpZGUiKTttbGU9cmhhKC0xKSxnbGU9cmhhKDEpO2koU2F0LCJ3cmFwSW4iKTtpKGJsZSwic2V0QmxvY2tUeXBlIik7aShnWWEsIm1hcmtBcHBsaWVzIik7aShiWWEsInJlbW92ZUlubGluZUF0b21zIik7aSh2WWEsInRvZ2dsZU1hcmsiKTtpKHhZYSwid3JhcERpc3BhdGNoRm9ySm9pbiIpO2koeVlhLCJhdXRvSm9pbiIpO2kob2xlLCJjaGFpbkNvbW1hbmRzIik7bWF0PW9sZShzWCxubGUsbGxlKSxvaGE9b2xlKHNYLGNsZSxkbGUpLE5kPXtFbnRlcjpvbGUodWxlLGhsZSxmbGUsZmF0KSwiTW9kLUVudGVyIjpwbGUsQmFja3NwYWNlOm1hdCwiTW9kLUJhY2tzcGFjZSI6bWF0LCJTaGlmdC1CYWNrc3BhY2UiOm1hdCxEZWxldGU6b2hhLCJNb2QtRGVsZXRlIjpvaGEsIk1vZC1hIjpzaGF9LGdhdD17IkN0cmwtaCI6TmQuQmFja3NwYWNlLCJBbHQtQmFja3NwYWNlIjpOZFsiTW9kLUJhY2tzcGFjZSJdLCJDdHJsLWQiOk5kLkRlbGV0ZSwiQ3RybC1BbHQtQmFja3NwYWNlIjpOZFsiTW9kLURlbGV0ZSJdLCJBbHQtRGVsZXRlIjpOZFsiTW9kLURlbGV0ZSJdLCJBbHQtZCI6TmRbIk1vZC1EZWxldGUiXSwiQ3RybC1hIjptbGUsIkN0cmwtZSI6Z2xlfTtmb3IobGV0IHMgaW4gTmQpZ2F0W3NdPU5kW3NdO3dZYT10eXBlb2YgbmF2aWdhdG9yPCJ1Ij8vTWFjfGlQKGhvbmV8W29hXWQpLy50ZXN0KG5hdmlnYXRvci5wbGF0Zm9ybSk6dHlwZW9mIG9zPCJ1IiYmb3MucGxhdGZvcm0/b3MucGxhdGZvcm0oKT09ImRhcndpbiI6ITEsa1lhPXdZYT9nYXQ6TmR9KTt2YXIgbGhhPWcoKCk9PntuaGEoKX0pO2Z1bmN0aW9uIF9hdChzLGUpe2xldCB0PXt9O2ZvcihsZXQgYSBpbiBzKXRbYV09c1thXTtmb3IobGV0IGEgaW4gZSl0W2FdPWVbYV07cmV0dXJuIHR9ZnVuY3Rpb24gellhKHMsZSx0KXtyZXR1cm4gcy5hcHBlbmQoe29yZGVyZWRfbGlzdDpfYXQoY2hhLHtjb250ZW50OiJsaXN0X2l0ZW0rIixncm91cDp0fSksYnVsbGV0X2xpc3Q6X2F0KGRoYSx7Y29udGVudDoibGlzdF9pdGVtKyIsZ3JvdXA6dH0pLGxpc3RfaXRlbTpfYXQodWhhLHtjb250ZW50OmV9KX0pfWZ1bmN0aW9uIE1hdChzLGU9bnVsbCl7cmV0dXJuIGZ1bmN0aW9uKHQsYSl7bGV0eyRmcm9tOnIsJHRvOm59PXQuc2VsZWN0aW9uLG89ci5ibG9ja1JhbmdlKG4pO2lmKCFvKXJldHVybiExO2xldCBsPWE/dC50cjpudWxsO3JldHVybiBwaGEobCxvLHMsZSk/KGEmJmEobC5zY3JvbGxJbnRvVmlldygpKSwhMCk6ITF9fWZ1bmN0aW9uIHBoYShzLGUsdCxhPW51bGwpe2xldCByPSExLG49ZSxvPWUuJGZyb20uZG9jO2lmKGUuZGVwdGg+PTImJmUuJGZyb20ubm9kZShlLmRlcHRoLTEpLnR5cGUuY29tcGF0aWJsZUNvbnRlbnQodCkmJmUuc3RhcnRJbmRleD09MCl7aWYoZS4kZnJvbS5pbmRleChlLmRlcHRoLTEpPT0wKXJldHVybiExO2xldCBwPW8ucmVzb2x2ZShlLnN0YXJ0LTIpO249bmV3IFNoKHAscCxlLmRlcHRoKSxlLmVuZEluZGV4PGUucGFyZW50LmNoaWxkQ291bnQmJihlPW5ldyBTaChlLiRmcm9tLG8ucmVzb2x2ZShlLiR0by5lbmQoZS5kZXB0aCkpLGUuZGVwdGgpKSxyPSEwfWxldCBsPUs4KG4sdCxhLGUpO3JldHVybiBsPyhzJiZDWWEocyxlLGwscix0KSwhMCk6ITF9ZnVuY3Rpb24gQ1lhKHMsZSx0LGEscil7bGV0IG49cnQuZW1wdHk7Zm9yKGxldCB1PXQubGVuZ3RoLTE7dT49MDt1LS0pbj1ydC5mcm9tKHRbdV0udHlwZS5jcmVhdGUodFt1XS5hdHRycyxuKSk7cy5zdGVwKG5ldyBkcihlLnN0YXJ0LShhPzI6MCksZS5lbmQsZS5zdGFydCxlLmVuZCxuZXcgX3QobiwwLDApLHQubGVuZ3RoLCEwKSk7bGV0IG89MDtmb3IobGV0IHU9MDt1PHQubGVuZ3RoO3UrKyl0W3VdLnR5cGU9PXImJihvPXUrMSk7bGV0IGw9dC5sZW5ndGgtbyxwPWUuc3RhcnQrdC5sZW5ndGgtKGE/MjowKSxkPWUucGFyZW50O2ZvcihsZXQgdT1lLnN0YXJ0SW5kZXgsYz1lLmVuZEluZGV4LGI9ITA7dTxjO3UrKyxiPSExKSFiJiZ6bChzLmRvYyxwLGwpJiYocy5zcGxpdChwLGwpLHArPTIqbCkscCs9ZC5jaGlsZCh1KS5ub2RlU2l6ZTtyZXR1cm4gc31mdW5jdGlvbiBoaGEocyxlKXtyZXR1cm4gZnVuY3Rpb24odCxhKXtsZXR7JGZyb206ciwkdG86bixub2RlOm99PXQuc2VsZWN0aW9uO2lmKG8mJm8uaXNCbG9ja3x8ci5kZXB0aDwyfHwhci5zYW1lUGFyZW50KG4pKXJldHVybiExO2xldCBsPXIubm9kZSgtMSk7aWYobC50eXBlIT1zKXJldHVybiExO2lmKHIucGFyZW50LmNvbnRlbnQuc2l6ZT09MCYmci5ub2RlKC0xKS5jaGlsZENvdW50PT1yLmluZGV4QWZ0ZXIoLTEpKXtpZihyLmRlcHRoPT0zfHxyLm5vZGUoLTMpLnR5cGUhPXN8fHIuaW5kZXgoLTIpIT1yLm5vZGUoLTIpLmNoaWxkQ291bnQtMSlyZXR1cm4hMTtpZihhKXtsZXQgYz1ydC5lbXB0eSxiPXIuaW5kZXgoLTEpPzE6ci5pbmRleCgtMik/MjozO2ZvcihsZXQgeT1yLmRlcHRoLWI7eT49ci5kZXB0aC0zO3ktLSljPXJ0LmZyb20oci5ub2RlKHkpLmNvcHkoYykpO2xldCB2PXIuaW5kZXhBZnRlcigtMSk8ci5ub2RlKC0yKS5jaGlsZENvdW50PzE6ci5pbmRleEFmdGVyKC0yKTxyLm5vZGUoLTMpLmNoaWxkQ291bnQ/MjozO2M9Yy5hcHBlbmQocnQuZnJvbShzLmNyZWF0ZUFuZEZpbGwoKSkpO2xldCB4PXIuYmVmb3JlKHIuZGVwdGgtKGItMSkpLG09dC50ci5yZXBsYWNlKHgsci5hZnRlcigtdiksbmV3IF90KGMsNC1iLDApKSxmPS0xO20uZG9jLm5vZGVzQmV0d2Vlbih4LG0uZG9jLmNvbnRlbnQuc2l6ZSwoeSxNKT0+e2lmKGY+LTEpcmV0dXJuITE7eS5pc1RleHRibG9jayYmeS5jb250ZW50LnNpemU9PTAmJihmPU0rMSl9KSxmPi0xJiZtLnNldFNlbGVjdGlvbihRdC5uZWFyKG0uZG9jLnJlc29sdmUoZikpKSxhKG0uc2Nyb2xsSW50b1ZpZXcoKSl9cmV0dXJuITB9bGV0IHA9bi5wb3M9PXIuZW5kKCk/bC5jb250ZW50TWF0Y2hBdCgwKS5kZWZhdWx0VHlwZTpudWxsLGQ9dC50ci5kZWxldGUoci5wb3Msbi5wb3MpLHU9cD9bZT97dHlwZTpzLGF0dHJzOmV9Om51bGwse3R5cGU6cH1dOnZvaWQgMDtyZXR1cm4gemwoZC5kb2Msci5wb3MsMix1KT8oYSYmYShkLnNwbGl0KHIucG9zLDIsdSkuc2Nyb2xsSW50b1ZpZXcoKSksITApOiExfX1mdW5jdGlvbiBUWWEocyxlKXtsZXQgdD1oaGEocyxlKTtyZXR1cm4oYSxyKT0+dChhLHImJihuPT57bGV0IG89YS5zdG9yZWRNYXJrc3x8YS5zZWxlY3Rpb24uJHRvLnBhcmVudE9mZnNldCYmYS5zZWxlY3Rpb24uJGZyb20ubWFya3MoKTtvJiZuLmVuc3VyZU1hcmtzKG8pLHIobil9KSl9ZnVuY3Rpb24gemF0KHMpe3JldHVybiBmdW5jdGlvbihlLHQpe2xldHskZnJvbTphLCR0bzpyfT1lLnNlbGVjdGlvbixuPWEuYmxvY2tSYW5nZShyLG89Pm8uY2hpbGRDb3VudD4wJiZvLmZpcnN0Q2hpbGQudHlwZT09cyk7cmV0dXJuIG4/dD9hLm5vZGUobi5kZXB0aC0xKS50eXBlPT1zPyRZYShlLHQscyxuKTpEWWEoZSx0LG4pOiEwOiExfX1mdW5jdGlvbiAkWWEocyxlLHQsYSl7bGV0IHI9cy50cixuPWEuZW5kLG89YS4kdG8uZW5kKGEuZGVwdGgpO248byYmKHIuc3RlcChuZXcgZHIobi0xLG8sbixvLG5ldyBfdChydC5mcm9tKHQuY3JlYXRlKG51bGwsYS5wYXJlbnQuY29weSgpKSksMSwwKSwxLCEwKSksYT1uZXcgU2goci5kb2MucmVzb2x2ZShhLiRmcm9tLnBvcyksci5kb2MucmVzb2x2ZShvKSxhLmRlcHRoKSk7bGV0IGw9UGQoYSk7aWYobD09bnVsbClyZXR1cm4hMTtyLmxpZnQoYSxsKTtsZXQgcD1yLmRvYy5yZXNvbHZlKHIubWFwcGluZy5tYXAobiwtMSktMSk7cmV0dXJuIFpsKHIuZG9jLHAucG9zKSYmcC5ub2RlQmVmb3JlLnR5cGU9PXAubm9kZUFmdGVyLnR5cGUmJnIuam9pbihwLnBvcyksZShyLnNjcm9sbEludG9WaWV3KCkpLCEwfWZ1bmN0aW9uIERZYShzLGUsdCl7bGV0IGE9cy50cixyPXQucGFyZW50O2ZvcihsZXQgdj10LmVuZCx4PXQuZW5kSW5kZXgtMSxtPXQuc3RhcnRJbmRleDt4Pm07eC0tKXYtPXIuY2hpbGQoeCkubm9kZVNpemUsYS5kZWxldGUodi0xLHYrMSk7bGV0IG49YS5kb2MucmVzb2x2ZSh0LnN0YXJ0KSxvPW4ubm9kZUFmdGVyO2lmKGEubWFwcGluZy5tYXAodC5lbmQpIT10LnN0YXJ0K24ubm9kZUFmdGVyLm5vZGVTaXplKXJldHVybiExO2xldCBsPXQuc3RhcnRJbmRleD09MCxwPXQuZW5kSW5kZXg9PXIuY2hpbGRDb3VudCxkPW4ubm9kZSgtMSksdT1uLmluZGV4KC0xKTtpZighZC5jYW5SZXBsYWNlKHUrKGw/MDoxKSx1KzEsby5jb250ZW50LmFwcGVuZChwP3J0LmVtcHR5OnJ0LmZyb20ocikpKSlyZXR1cm4hMTtsZXQgYz1uLnBvcyxiPWMrby5ub2RlU2l6ZTtyZXR1cm4gYS5zdGVwKG5ldyBkcihjLShsPzE6MCksYisocD8xOjApLGMrMSxiLTEsbmV3IF90KChsP3J0LmVtcHR5OnJ0LmZyb20oci5jb3B5KHJ0LmVtcHR5KSkpLmFwcGVuZChwP3J0LmVtcHR5OnJ0LmZyb20oci5jb3B5KHJ0LmVtcHR5KSkpLGw/MDoxLHA/MDoxKSxsPzA6MSkpLGUoYS5zY3JvbGxJbnRvVmlldygpKSwhMH1mdW5jdGlvbiBDYXQocyl7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7bGV0eyRmcm9tOmEsJHRvOnJ9PWUuc2VsZWN0aW9uLG49YS5ibG9ja1JhbmdlKHIsZD0+ZC5jaGlsZENvdW50PjAmJmQuZmlyc3RDaGlsZC50eXBlPT1zKTtpZighbilyZXR1cm4hMTtsZXQgbz1uLnN0YXJ0SW5kZXg7aWYobz09MClyZXR1cm4hMTtsZXQgbD1uLnBhcmVudCxwPWwuY2hpbGQoby0xKTtpZihwLnR5cGUhPXMpcmV0dXJuITE7aWYodCl7bGV0IGQ9cC5sYXN0Q2hpbGQmJnAubGFzdENoaWxkLnR5cGU9PWwudHlwZSx1PXJ0LmZyb20oZD9zLmNyZWF0ZSgpOm51bGwpLGM9bmV3IF90KHJ0LmZyb20ocy5jcmVhdGUobnVsbCxydC5mcm9tKGwudHlwZS5jcmVhdGUobnVsbCx1KSkpKSxkPzM6MSwwKSxiPW4uc3RhcnQsdj1uLmVuZDt0KGUudHIuc3RlcChuZXcgZHIoYi0oZD8zOjEpLHYsYix2LGMsMSwhMCkpLnNjcm9sbEludG9WaWV3KCkpfXJldHVybiEwfX12YXIgU1lhLF9ZYSxNWWEsY2hhLGRoYSx1aGEsZmhhPWcoKCk9Pnt6aCgpO19oKCk7cnUoKTtTWWE9WyJvbCIsMF0sX1lhPVsidWwiLDBdLE1ZYT1bImxpIiwwXSxjaGE9e2F0dHJzOntvcmRlcjp7ZGVmYXVsdDoxLHZhbGlkYXRlOiJudW1iZXIifX0scGFyc2VET006W3t0YWc6Im9sIixnZXRBdHRycyhzKXtyZXR1cm57b3JkZXI6cy5oYXNBdHRyaWJ1dGUoInN0YXJ0Iik/K3MuZ2V0QXR0cmlidXRlKCJzdGFydCIpOjF9fX1dLHRvRE9NKHMpe3JldHVybiBzLmF0dHJzLm9yZGVyPT0xP1NZYTpbIm9sIix7c3RhcnQ6cy5hdHRycy5vcmRlcn0sMF19fSxkaGE9e3BhcnNlRE9NOlt7dGFnOiJ1bCJ9XSx0b0RPTSgpe3JldHVybiBfWWF9fSx1aGE9e3BhcnNlRE9NOlt7dGFnOiJsaSJ9XSx0b0RPTSgpe3JldHVybiBNWWF9LGRlZmluaW5nOiEwfTtpKF9hdCwiYWRkIik7aSh6WWEsImFkZExpc3ROb2RlcyIpO2koTWF0LCJ3cmFwSW5MaXN0Iik7aShwaGEsIndyYXBSYW5nZUluTGlzdCIpO2koQ1lhLCJkb1dyYXBJbkxpc3QiKTtpKGhoYSwic3BsaXRMaXN0SXRlbSIpO2koVFlhLCJzcGxpdExpc3RJdGVtS2VlcE1hcmtzIik7aSh6YXQsImxpZnRMaXN0SXRlbSIpO2koJFlhLCJsaWZ0VG9PdXRlckxpc3QiKTtpKERZYSwibGlmdE91dE9mTGlzdCIpO2koQ2F0LCJzaW5rTGlzdEl0ZW0iKX0pO3ZhciBtaGE9ZygoKT0+e2ZoYSgpfSk7dmFyIEthdD17fTt5dChLYXQse0NvbW1hbmRNYW5hZ2VyOigpPT5QaCxFZGl0b3I6KCk9PklsZSxFeHRlbnNpb246KCk9PndpLElucHV0UnVsZTooKT0+dXUsTWFyazooKT0+RG8sTm9kZTooKT0+c2ksTm9kZVBvczooKT0+aFgsTm9kZVZpZXc6KCk9PkFsZSxQYXN0ZVJ1bGU6KCk9Pm9nLFRyYWNrZXI6KCk9Pk5sZSxjYWxsT3JSZXR1cm46KCk9PmNhLGNhbkluc2VydE5vZGU6KCk9PnFsZSxjb21iaW5lVHJhbnNhY3Rpb25TdGVwczooKT0+UmxlLGNyZWF0ZUNoYWluYWJsZVN0YXRlOigpPT5BdixjcmVhdGVEb2N1bWVudDooKT0+Y1gsY3JlYXRlTm9kZUZyb21Db250ZW50OigpPT5jZyxjcmVhdGVTdHlsZVRhZzooKT0+R2F0LGRlZmF1bHRCbG9ja0F0OigpPT5IYXQsZGVsZXRlUHJvcHM6KCk9PkRsZSxlbGVtZW50RnJvbVN0cmluZzooKT0+bGcsZXNjYXBlRm9yUmVnRXg6KCk9PkhoYSxleHRlbnNpb25zOigpPT5CaGEsZmluZENoaWxkcmVuOigpPT5MaGEsZmluZENoaWxkcmVuSW5SYW5nZTooKT0+T2xlLGZpbmREdXBsaWNhdGVzOigpPT5PYXQsZmluZFBhcmVudE5vZGU6KCk9PnF2LGZpbmRQYXJlbnROb2RlQ2xvc2VzdFRvUG9zOigpPT5xYXQsZnJvbVN0cmluZzooKT0+UGF0LGdlbmVyYXRlSFRNTDooKT0+RWhhLGdlbmVyYXRlSlNPTjooKT0+UGhhLGdlbmVyYXRlVGV4dDooKT0+SWhhLGdldEF0dHJpYnV0ZXM6KCk9PmZYLGdldEF0dHJpYnV0ZXNGcm9tRXh0ZW5zaW9uczooKT0+d2xlLGdldENoYW5nZWRSYW5nZXM6KCk9PkZsZSxnZXREZWJ1Z0pTT046KCk9PlVhdCxnZXRFeHRlbnNpb25GaWVsZDooKT0+RHQsZ2V0SFRNTEZyb21GcmFnbWVudDooKT0+UnYsZ2V0TWFya0F0dHJpYnV0ZXM6KCk9PkxsZSxnZXRNYXJrUmFuZ2U6KCk9PmxYLGdldE1hcmtUeXBlOigpPT5SZCxnZXRNYXJrc0JldHdlZW46KCk9PlZ2LGdldE5vZGVBdFBvc2l0aW9uOigpPT5BaGEsZ2V0Tm9kZUF0dHJpYnV0ZXM6KCk9PmphdCxnZXROb2RlVHlwZTooKT0+THIsZ2V0UmVuZGVyZWRBdHRyaWJ1dGVzOigpPT5pWCxnZXRTY2hlbWE6KCk9PmRYLGdldFNjaGVtYUJ5UmVzb2x2ZWRFeHRlbnNpb25zOigpPT5fbGUsZ2V0U2NoZW1hVHlwZUJ5TmFtZTooKT0+clgsZ2V0U2NoZW1hVHlwZU5hbWVCeU5hbWU6KCk9Pkh2LGdldFNwbGl0dGVkQXR0cmlidXRlczooKT0+anYsZ2V0VGV4dDooKT0+RWxlLGdldFRleHRCZXR3ZWVuOigpPT56bGUsZ2V0VGV4dENvbnRlbnRGcm9tTm9kZXM6KCk9PklhdCxnZXRUZXh0U2VyaWFsaXplcnNGcm9tU2NoZW1hOigpPT5uWCxpbmplY3RFeHRlbnNpb25BdHRyaWJ1dGVzVG9QYXJzZVJ1bGU6KCk9PlNsZSxpbnB1dFJ1bGVzUGx1Z2luOigpPT5BYXQsaXNBY3RpdmU6KCk9PldhdCxpc0F0RW5kT2ZOb2RlOigpPT5OaGEsaXNBdFN0YXJ0T2ZOb2RlOigpPT5SaGEsaXNFbXB0eU9iamVjdDooKT0+RWF0LGlzRXh0ZW5zaW9uUnVsZXNFbmFibGVkOigpPT5NbGUsaXNGdW5jdGlvbjooKT0+a2xlLGlzTGlzdDooKT0+UGxlLGlzTWFjT1M6KCk9PiRsZSxpc01hcmtBY3RpdmU6KCk9PnVYLGlzTm9kZUFjdGl2ZTooKT0+ZGcsaXNOb2RlRW1wdHk6KCk9PnBYLGlzTm9kZVNlbGVjdGlvbjooKT0+QmxlLGlzTnVtYmVyOigpPT5OYXQsaXNQbGFpbk9iamVjdDooKT0+T3YsaXNSZWdFeHA6KCk9Pm9YLGlzU2FmYXJpOigpPT5GYXQsaXNTdHJpbmc6KCk9PnFoYSxpc1RleHRTZWxlY3Rpb246KCk9PkNsZSxpc2lPUzooKT0+bmcsbWFya0lucHV0UnVsZTooKT0+cWMsbWFya1Bhc3RlUnVsZTooKT0+VGwsbWVyZ2VBdHRyaWJ1dGVzOigpPT5hcyxtZXJnZURlZXA6KCk9PkZ2LG1pbk1heDooKT0+YTIsbm9kZUlucHV0UnVsZTooKT0+SGxlLG5vZGVQYXN0ZVJ1bGU6KCk9PmpoYSxvYmplY3RJbmNsdWRlczooKT0+QnYscGFzdGVSdWxlc1BsdWdpbjooKT0+UmF0LHBvc1RvRE9NUmVjdDooKT0+T2hhLHJlbW92ZUR1cGxpY2F0ZXM6KCk9PlZhdCxyZXNvbHZlRm9jdXNQb3NpdGlvbjooKT0+VGxlLHJld3JpdGVVbmtub3duQ29udGVudDooKT0+RmhhLHNlbGVjdGlvblRvSW5zZXJ0aW9uRW5kOigpPT5CYXQsc3BsaXRFeHRlbnNpb25zOigpPT5Odix0ZXh0SW5wdXRSdWxlOigpPT5oaSx0ZXh0UGFzdGVSdWxlOigpPT5WaGEsdGV4dGJsb2NrVHlwZUlucHV0UnVsZTooKT0+dWcsd3JhcHBpbmdJbnB1dFJ1bGU6KCk9Pk9kfSk7ZnVuY3Rpb24gQXYocyl7bGV0e3N0YXRlOmUsdHJhbnNhY3Rpb246dH09cyx7c2VsZWN0aW9uOmF9PXQse2RvYzpyfT10LHtzdG9yZWRNYXJrczpufT10O3JldHVybnsuLi5lLGFwcGx5OmUuYXBwbHkuYmluZChlKSxhcHBseVRyYW5zYWN0aW9uOmUuYXBwbHlUcmFuc2FjdGlvbi5iaW5kKGUpLHBsdWdpbnM6ZS5wbHVnaW5zLHNjaGVtYTplLnNjaGVtYSxyZWNvbmZpZ3VyZTplLnJlY29uZmlndXJlLmJpbmQoZSksdG9KU09OOmUudG9KU09OLmJpbmQoZSksZ2V0IHN0b3JlZE1hcmtzKCl7cmV0dXJuIG59LGdldCBzZWxlY3Rpb24oKXtyZXR1cm4gYX0sZ2V0IGRvYygpe3JldHVybiByfSxnZXQgdHIoKXtyZXR1cm4gYT10LnNlbGVjdGlvbixyPXQuZG9jLG49dC5zdG9yZWRNYXJrcyx0fX19ZnVuY3Rpb24gRHQocyxlLHQpe3JldHVybiBzLmNvbmZpZ1tlXT09PXZvaWQgMCYmcy5wYXJlbnQ/RHQocy5wYXJlbnQsZSx0KTp0eXBlb2Ygcy5jb25maWdbZV09PSJmdW5jdGlvbiI/cy5jb25maWdbZV0uYmluZCh7Li4udCxwYXJlbnQ6cy5wYXJlbnQ/RHQocy5wYXJlbnQsZSx0KTpudWxsfSk6cy5jb25maWdbZV19ZnVuY3Rpb24gTnYocyl7bGV0IGU9cy5maWx0ZXIocj0+ci50eXBlPT09ImV4dGVuc2lvbiIpLHQ9cy5maWx0ZXIocj0+ci50eXBlPT09Im5vZGUiKSxhPXMuZmlsdGVyKHI9PnIudHlwZT09PSJtYXJrIik7cmV0dXJue2Jhc2VFeHRlbnNpb25zOmUsbm9kZUV4dGVuc2lvbnM6dCxtYXJrRXh0ZW5zaW9uczphfX1mdW5jdGlvbiB3bGUocyl7bGV0IGU9W10se25vZGVFeHRlbnNpb25zOnQsbWFya0V4dGVuc2lvbnM6YX09TnYocykscj1bLi4udCwuLi5hXSxuPXtkZWZhdWx0Om51bGwscmVuZGVyZWQ6ITAscmVuZGVySFRNTDpudWxsLHBhcnNlSFRNTDpudWxsLGtlZXBPblNwbGl0OiEwLGlzUmVxdWlyZWQ6ITF9O3JldHVybiBzLmZvckVhY2gobz0+e2xldCBsPXtuYW1lOm8ubmFtZSxvcHRpb25zOm8ub3B0aW9ucyxzdG9yYWdlOm8uc3RvcmFnZSxleHRlbnNpb25zOnJ9LHA9RHQobywiYWRkR2xvYmFsQXR0cmlidXRlcyIsbCk7aWYoIXApcmV0dXJuO3AoKS5mb3JFYWNoKHU9Pnt1LnR5cGVzLmZvckVhY2goYz0+e09iamVjdC5lbnRyaWVzKHUuYXR0cmlidXRlcykuZm9yRWFjaCgoW2Isdl0pPT57ZS5wdXNoKHt0eXBlOmMsbmFtZTpiLGF0dHJpYnV0ZTp7Li4ubiwuLi52fX0pfSl9KX0pfSksci5mb3JFYWNoKG89PntsZXQgbD17bmFtZTpvLm5hbWUsb3B0aW9uczpvLm9wdGlvbnMsc3RvcmFnZTpvLnN0b3JhZ2V9LHA9RHQobywiYWRkQXR0cmlidXRlcyIsbCk7aWYoIXApcmV0dXJuO2xldCBkPXAoKTtPYmplY3QuZW50cmllcyhkKS5mb3JFYWNoKChbdSxjXSk9PntsZXQgYj17Li4ubiwuLi5jfTt0eXBlb2YgYj8uZGVmYXVsdD09ImZ1bmN0aW9uIiYmKGIuZGVmYXVsdD1iLmRlZmF1bHQoKSksYj8uaXNSZXF1aXJlZCYmYj8uZGVmYXVsdD09PXZvaWQgMCYmZGVsZXRlIGIuZGVmYXVsdCxlLnB1c2goe3R5cGU6by5uYW1lLG5hbWU6dSxhdHRyaWJ1dGU6Yn0pfSl9KSxlfWZ1bmN0aW9uIExyKHMsZSl7aWYodHlwZW9mIHM9PSJzdHJpbmciKXtpZighZS5ub2Rlc1tzXSl0aHJvdyBFcnJvcihgVGhlcmUgaXMgbm8gbm9kZSB0eXBlIG5hbWVkICcke3N9Jy4gTWF5YmUgeW91IGZvcmdvdCB0byBhZGQgdGhlIGV4dGVuc2lvbj9gKTtyZXR1cm4gZS5ub2Rlc1tzXX1yZXR1cm4gc31mdW5jdGlvbiBhcyguLi5zKXtyZXR1cm4gcy5maWx0ZXIoZT0+ISFlKS5yZWR1Y2UoKGUsdCk9PntsZXQgYT17Li4uZX07cmV0dXJuIE9iamVjdC5lbnRyaWVzKHQpLmZvckVhY2goKFtyLG5dKT0+e2lmKCFhW3JdKXthW3JdPW47cmV0dXJufWlmKHI9PT0iY2xhc3MiKXtsZXQgbD1uP1N0cmluZyhuKS5zcGxpdCgiICIpOltdLHA9YVtyXT9hW3JdLnNwbGl0KCIgIik6W10sZD1sLmZpbHRlcih1PT4hcC5pbmNsdWRlcyh1KSk7YVtyXT1bLi4ucCwuLi5kXS5qb2luKCIgIil9ZWxzZSBpZihyPT09InN0eWxlIil7bGV0IGw9bj9uLnNwbGl0KCI7IikubWFwKHU9PnUudHJpbSgpKS5maWx0ZXIoQm9vbGVhbik6W10scD1hW3JdP2Fbcl0uc3BsaXQoIjsiKS5tYXAodT0+dS50cmltKCkpLmZpbHRlcihCb29sZWFuKTpbXSxkPW5ldyBNYXA7cC5mb3JFYWNoKHU9PntsZXRbYyxiXT11LnNwbGl0KCI6IikubWFwKHY9PnYudHJpbSgpKTtkLnNldChjLGIpfSksbC5mb3JFYWNoKHU9PntsZXRbYyxiXT11LnNwbGl0KCI6IikubWFwKHY9PnYudHJpbSgpKTtkLnNldChjLGIpfSksYVtyXT1BcnJheS5mcm9tKGQuZW50cmllcygpKS5tYXAoKFt1LGNdKT0+YCR7dX06ICR7Y31gKS5qb2luKCI7ICIpfWVsc2UgYVtyXT1ufSksYX0se30pfWZ1bmN0aW9uIGlYKHMsZSl7cmV0dXJuIGUuZmlsdGVyKHQ9PnQudHlwZT09PXMudHlwZS5uYW1lKS5maWx0ZXIodD0+dC5hdHRyaWJ1dGUucmVuZGVyZWQpLm1hcCh0PT50LmF0dHJpYnV0ZS5yZW5kZXJIVE1MP3QuYXR0cmlidXRlLnJlbmRlckhUTUwocy5hdHRycyl8fHt9OntbdC5uYW1lXTpzLmF0dHJzW3QubmFtZV19KS5yZWR1Y2UoKHQsYSk9PmFzKHQsYSkse30pfWZ1bmN0aW9uIGtsZShzKXtyZXR1cm4gdHlwZW9mIHM9PSJmdW5jdGlvbiJ9ZnVuY3Rpb24gY2EocyxlPXZvaWQgMCwuLi50KXtyZXR1cm4ga2xlKHMpP2U/cy5iaW5kKGUpKC4uLnQpOnMoLi4udCk6c31mdW5jdGlvbiBFYXQocz17fSl7cmV0dXJuIE9iamVjdC5rZXlzKHMpLmxlbmd0aD09PTAmJnMuY29uc3RydWN0b3I9PT1PYmplY3R9ZnVuY3Rpb24gUGF0KHMpe3JldHVybiB0eXBlb2YgcyE9InN0cmluZyI/czpzLm1hdGNoKC9eWystXT8oPzpcZCpcLik/XGQrJC8pP051bWJlcihzKTpzPT09InRydWUiPyEwOnM9PT0iZmFsc2UiPyExOnN9ZnVuY3Rpb24gU2xlKHMsZSl7cmV0dXJuInN0eWxlImluIHM/czp7Li4ucyxnZXRBdHRyczppKHQ9PntsZXQgYT1zLmdldEF0dHJzP3MuZ2V0QXR0cnModCk6cy5hdHRycztpZihhPT09ITEpcmV0dXJuITE7bGV0IHI9ZS5yZWR1Y2UoKG4sbyk9PntsZXQgbD1vLmF0dHJpYnV0ZS5wYXJzZUhUTUw/by5hdHRyaWJ1dGUucGFyc2VIVE1MKHQpOlBhdCh0LmdldEF0dHJpYnV0ZShvLm5hbWUpKTtyZXR1cm4gbD09bnVsbD9uOnsuLi5uLFtvLm5hbWVdOmx9fSx7fSk7cmV0dXJuey4uLmEsLi4ucn19LCJnZXRBdHRycyIpfX1mdW5jdGlvbiBnaGEocyl7cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhzKS5maWx0ZXIoKFtlLHRdKT0+ZT09PSJhdHRycyImJkVhdCh0KT8hMTp0IT1udWxsKSl9ZnVuY3Rpb24gX2xlKHMsZSl7dmFyIHQ7bGV0IGE9d2xlKHMpLHtub2RlRXh0ZW5zaW9uczpyLG1hcmtFeHRlbnNpb25zOm59PU52KHMpLG89KHQ9ci5maW5kKGQ9PkR0KGQsInRvcE5vZGUiKSkpPT09bnVsbHx8dD09PXZvaWQgMD92b2lkIDA6dC5uYW1lLGw9T2JqZWN0LmZyb21FbnRyaWVzKHIubWFwKGQ9PntsZXQgdT1hLmZpbHRlcih5PT55LnR5cGU9PT1kLm5hbWUpLGM9e25hbWU6ZC5uYW1lLG9wdGlvbnM6ZC5vcHRpb25zLHN0b3JhZ2U6ZC5zdG9yYWdlLGVkaXRvcjplfSxiPXMucmVkdWNlKCh5LE0pPT57bGV0IHo9RHQoTSwiZXh0ZW5kTm9kZVNjaGVtYSIsYyk7cmV0dXJuey4uLnksLi4uej96KGQpOnt9fX0se30pLHY9Z2hhKHsuLi5iLGNvbnRlbnQ6Y2EoRHQoZCwiY29udGVudCIsYykpLG1hcmtzOmNhKER0KGQsIm1hcmtzIixjKSksZ3JvdXA6Y2EoRHQoZCwiZ3JvdXAiLGMpKSxpbmxpbmU6Y2EoRHQoZCwiaW5saW5lIixjKSksYXRvbTpjYShEdChkLCJhdG9tIixjKSksc2VsZWN0YWJsZTpjYShEdChkLCJzZWxlY3RhYmxlIixjKSksZHJhZ2dhYmxlOmNhKER0KGQsImRyYWdnYWJsZSIsYykpLGNvZGU6Y2EoRHQoZCwiY29kZSIsYykpLHdoaXRlc3BhY2U6Y2EoRHQoZCwid2hpdGVzcGFjZSIsYykpLGxpbmVicmVha1JlcGxhY2VtZW50OmNhKER0KGQsImxpbmVicmVha1JlcGxhY2VtZW50IixjKSksZGVmaW5pbmc6Y2EoRHQoZCwiZGVmaW5pbmciLGMpKSxpc29sYXRpbmc6Y2EoRHQoZCwiaXNvbGF0aW5nIixjKSksYXR0cnM6T2JqZWN0LmZyb21FbnRyaWVzKHUubWFwKHk9Pnt2YXIgTTtyZXR1cm5beS5uYW1lLHtkZWZhdWx0OihNPXk/LmF0dHJpYnV0ZSk9PT1udWxsfHxNPT09dm9pZCAwP3ZvaWQgMDpNLmRlZmF1bHR9XX0pKX0pLHg9Y2EoRHQoZCwicGFyc2VIVE1MIixjKSk7eCYmKHYucGFyc2VET009eC5tYXAoeT0+U2xlKHksdSkpKTtsZXQgbT1EdChkLCJyZW5kZXJIVE1MIixjKTttJiYodi50b0RPTT15PT5tKHtub2RlOnksSFRNTEF0dHJpYnV0ZXM6aVgoeSx1KX0pKTtsZXQgZj1EdChkLCJyZW5kZXJUZXh0IixjKTtyZXR1cm4gZiYmKHYudG9UZXh0PWYpLFtkLm5hbWUsdl19KSkscD1PYmplY3QuZnJvbUVudHJpZXMobi5tYXAoZD0+e2xldCB1PWEuZmlsdGVyKGY9PmYudHlwZT09PWQubmFtZSksYz17bmFtZTpkLm5hbWUsb3B0aW9uczpkLm9wdGlvbnMsc3RvcmFnZTpkLnN0b3JhZ2UsZWRpdG9yOmV9LGI9cy5yZWR1Y2UoKGYseSk9PntsZXQgTT1EdCh5LCJleHRlbmRNYXJrU2NoZW1hIixjKTtyZXR1cm57Li4uZiwuLi5NP00oZCk6e319fSx7fSksdj1naGEoey4uLmIsaW5jbHVzaXZlOmNhKER0KGQsImluY2x1c2l2ZSIsYykpLGV4Y2x1ZGVzOmNhKER0KGQsImV4Y2x1ZGVzIixjKSksZ3JvdXA6Y2EoRHQoZCwiZ3JvdXAiLGMpKSxzcGFubmluZzpjYShEdChkLCJzcGFubmluZyIsYykpLGNvZGU6Y2EoRHQoZCwiY29kZSIsYykpLGF0dHJzOk9iamVjdC5mcm9tRW50cmllcyh1Lm1hcChmPT57dmFyIHk7cmV0dXJuW2YubmFtZSx7ZGVmYXVsdDooeT1mPy5hdHRyaWJ1dGUpPT09bnVsbHx8eT09PXZvaWQgMD92b2lkIDA6eS5kZWZhdWx0fV19KSl9KSx4PWNhKER0KGQsInBhcnNlSFRNTCIsYykpO3gmJih2LnBhcnNlRE9NPXgubWFwKGY9PlNsZShmLHUpKSk7bGV0IG09RHQoZCwicmVuZGVySFRNTCIsYyk7cmV0dXJuIG0mJih2LnRvRE9NPWY9Pm0oe21hcms6ZixIVE1MQXR0cmlidXRlczppWChmLHUpfSkpLFtkLm5hbWUsdl19KSk7cmV0dXJuIG5ldyB4dih7dG9wTm9kZTpvLG5vZGVzOmwsbWFya3M6cH0pfWZ1bmN0aW9uIHJYKHMsZSl7cmV0dXJuIGUubm9kZXNbc118fGUubWFya3Nbc118fG51bGx9ZnVuY3Rpb24gTWxlKHMsZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5zb21lKHQ9Pih0eXBlb2YgdD09InN0cmluZyI/dDp0Lm5hbWUpPT09cy5uYW1lKTplfWZ1bmN0aW9uIFJ2KHMsZSl7bGV0IHQ9TGQuZnJvbVNjaGVtYShlKS5zZXJpYWxpemVGcmFnbWVudChzKSxyPWRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgpLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiByLmFwcGVuZENoaWxkKHQpLHIuaW5uZXJIVE1MfWZ1bmN0aW9uIG9YKHMpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocyk9PT0iW29iamVjdCBSZWdFeHBdIn1mdW5jdGlvbiB2bGUocyl7dmFyIGU7bGV0e2VkaXRvcjp0LGZyb206YSx0bzpyLHRleHQ6bixydWxlczpvLHBsdWdpbjpsfT1zLHt2aWV3OnB9PXQ7aWYocC5jb21wb3NpbmcpcmV0dXJuITE7bGV0IGQ9cC5zdGF0ZS5kb2MucmVzb2x2ZShhKTtpZihkLnBhcmVudC50eXBlLnNwZWMuY29kZXx8ISgoZT1kLm5vZGVCZWZvcmV8fGQubm9kZUFmdGVyKT09PW51bGx8fGU9PT12b2lkIDApJiZlLm1hcmtzLmZpbmQoYj0+Yi50eXBlLnNwZWMuY29kZSkpcmV0dXJuITE7bGV0IHU9ITEsYz1JYXQoZCkrbjtyZXR1cm4gby5mb3JFYWNoKGI9PntpZih1KXJldHVybjtsZXQgdj1MWWEoYyxiLmZpbmQpO2lmKCF2KXJldHVybjtsZXQgeD1wLnN0YXRlLnRyLG09QXYoe3N0YXRlOnAuc3RhdGUsdHJhbnNhY3Rpb246eH0pLGY9e2Zyb206YS0odlswXS5sZW5ndGgtbi5sZW5ndGgpLHRvOnJ9LHtjb21tYW5kczp5LGNoYWluOk0sY2FuOnp9PW5ldyBQaCh7ZWRpdG9yOnQsc3RhdGU6bX0pO2IuaGFuZGxlcih7c3RhdGU6bSxyYW5nZTpmLG1hdGNoOnYsY29tbWFuZHM6eSxjaGFpbjpNLGNhbjp6fSk9PT1udWxsfHwheC5zdGVwcy5sZW5ndGh8fCh4LnNldE1ldGEobCx7dHJhbnNmb3JtOngsZnJvbTphLHRvOnIsdGV4dDpufSkscC5kaXNwYXRjaCh4KSx1PSEwKX0pLHV9ZnVuY3Rpb24gQWF0KHMpe2xldHtlZGl0b3I6ZSxydWxlczp0fT1zLGE9bmV3IFlzKHtzdGF0ZTp7aW5pdCgpe3JldHVybiBudWxsfSxhcHBseShyLG4sbyl7bGV0IGw9ci5nZXRNZXRhKGEpO2lmKGwpcmV0dXJuIGw7bGV0IHA9ci5nZXRNZXRhKCJhcHBseUlucHV0UnVsZXMiKTtyZXR1cm4gcCYmc2V0VGltZW91dCgoKT0+e2xldHt0ZXh0OnV9PXA7dHlwZW9mIHU9PSJzdHJpbmciP3U9dTp1PVJ2KHJ0LmZyb20odSksby5zY2hlbWEpO2xldHtmcm9tOmN9PXAsYj1jK3UubGVuZ3RoO3ZsZSh7ZWRpdG9yOmUsZnJvbTpjLHRvOmIsdGV4dDp1LHJ1bGVzOnQscGx1Z2luOmF9KX0pLHIuc2VsZWN0aW9uU2V0fHxyLmRvY0NoYW5nZWQ/bnVsbDpufX0scHJvcHM6e2hhbmRsZVRleHRJbnB1dChyLG4sbyxsKXtyZXR1cm4gdmxlKHtlZGl0b3I6ZSxmcm9tOm4sdG86byx0ZXh0OmwscnVsZXM6dCxwbHVnaW46YX0pfSxoYW5kbGVET01FdmVudHM6e2NvbXBvc2l0aW9uZW5kOmkocj0+KHNldFRpbWVvdXQoKCk9PntsZXR7JGN1cnNvcjpufT1yLnN0YXRlLnNlbGVjdGlvbjtuJiZ2bGUoe2VkaXRvcjplLGZyb206bi5wb3MsdG86bi5wb3MsdGV4dDoiIixydWxlczp0LHBsdWdpbjphfSl9KSwhMSksImNvbXBvc2l0aW9uZW5kIil9LGhhbmRsZUtleURvd24ocixuKXtpZihuLmtleSE9PSJFbnRlciIpcmV0dXJuITE7bGV0eyRjdXJzb3I6b309ci5zdGF0ZS5zZWxlY3Rpb247cmV0dXJuIG8/dmxlKHtlZGl0b3I6ZSxmcm9tOm8ucG9zLHRvOm8ucG9zLHRleHQ6YApgLHJ1bGVzOnQscGx1Z2luOmF9KTohMX19LGlzSW5wdXRSdWxlczohMH0pO3JldHVybiBhfWZ1bmN0aW9uIEVZYShzKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHMpLnNsaWNlKDgsLTEpfWZ1bmN0aW9uIE92KHMpe3JldHVybiBFWWEocykhPT0iT2JqZWN0Ij8hMTpzLmNvbnN0cnVjdG9yPT09T2JqZWN0JiZPYmplY3QuZ2V0UHJvdG90eXBlT2Yocyk9PT1PYmplY3QucHJvdG90eXBlfWZ1bmN0aW9uIEZ2KHMsZSl7bGV0IHQ9ey4uLnN9O3JldHVybiBPdihzKSYmT3YoZSkmJk9iamVjdC5rZXlzKGUpLmZvckVhY2goYT0+e092KGVbYV0pJiZPdihzW2FdKT90W2FdPUZ2KHNbYV0sZVthXSk6dFthXT1lW2FdfSksdH1mdW5jdGlvbiBOYXQocyl7cmV0dXJuIHR5cGVvZiBzPT0ibnVtYmVyIn1mdW5jdGlvbiBJWWEocyl7bGV0e2VkaXRvcjplLHN0YXRlOnQsZnJvbTphLHRvOnIscnVsZTpuLHBhc3RlRXZlbnQ6byxkcm9wRXZlbnQ6bH09cyx7Y29tbWFuZHM6cCxjaGFpbjpkLGNhbjp1fT1uZXcgUGgoe2VkaXRvcjplLHN0YXRlOnR9KSxjPVtdO3JldHVybiB0LmRvYy5ub2Rlc0JldHdlZW4oYSxyLCh2LHgpPT57aWYoIXYuaXNUZXh0YmxvY2t8fHYudHlwZS5zcGVjLmNvZGUpcmV0dXJuO2xldCBtPU1hdGgubWF4KGEseCksZj1NYXRoLm1pbihyLHgrdi5jb250ZW50LnNpemUpLHk9di50ZXh0QmV0d2VlbihtLXgsZi14LHZvaWQgMCwiXHVGRkZDIik7UFlhKHksbi5maW5kLG8pLmZvckVhY2goej0+e2lmKHouaW5kZXg9PT12b2lkIDApcmV0dXJuO2xldCBOPW0rei5pbmRleCsxLEM9Tit6WzBdLmxlbmd0aCxfPXtmcm9tOnQudHIubWFwcGluZy5tYXAoTiksdG86dC50ci5tYXBwaW5nLm1hcChDKX0sTz1uLmhhbmRsZXIoe3N0YXRlOnQscmFuZ2U6XyxtYXRjaDp6LGNvbW1hbmRzOnAsY2hhaW46ZCxjYW46dSxwYXN0ZUV2ZW50Om8sZHJvcEV2ZW50Omx9KTtjLnB1c2goTyl9KX0pLGMuZXZlcnkodj0+diE9PW51bGwpfWZ1bmN0aW9uIFJhdChzKXtsZXR7ZWRpdG9yOmUscnVsZXM6dH09cyxhPW51bGwscj0hMSxuPSExLG89dHlwZW9mIENsaXBib2FyZEV2ZW50PCJ1Ij9uZXcgQ2xpcGJvYXJkRXZlbnQoInBhc3RlIik6bnVsbCxsO3RyeXtsPXR5cGVvZiBEcmFnRXZlbnQ8InUiP25ldyBEcmFnRXZlbnQoImRyb3AiKTpudWxsfWNhdGNoe2w9bnVsbH1sZXQgcD1pKCh7c3RhdGU6dSxmcm9tOmMsdG86YixydWxlOnYscGFzdGVFdnQ6eH0pPT57bGV0IG09dS50cixmPUF2KHtzdGF0ZTp1LHRyYW5zYWN0aW9uOm19KTtpZighKCFJWWEoe2VkaXRvcjplLHN0YXRlOmYsZnJvbTpNYXRoLm1heChjLTEsMCksdG86Yi5iLTEscnVsZTp2LHBhc3RlRXZlbnQ6eCxkcm9wRXZlbnQ6bH0pfHwhbS5zdGVwcy5sZW5ndGgpKXt0cnl7bD10eXBlb2YgRHJhZ0V2ZW50PCJ1Ij9uZXcgRHJhZ0V2ZW50KCJkcm9wIik6bnVsbH1jYXRjaHtsPW51bGx9cmV0dXJuIG89dHlwZW9mIENsaXBib2FyZEV2ZW50PCJ1Ij9uZXcgQ2xpcGJvYXJkRXZlbnQoInBhc3RlIik6bnVsbCxtfX0sInByb2Nlc3NFdmVudCIpO3JldHVybiB0Lm1hcCh1PT5uZXcgWXMoe3ZpZXcoYyl7bGV0IGI9aSh4PT57dmFyIG07YT0hKChtPWMuZG9tLnBhcmVudEVsZW1lbnQpPT09bnVsbHx8bT09PXZvaWQgMCkmJm0uY29udGFpbnMoeC50YXJnZXQpP2MuZG9tLnBhcmVudEVsZW1lbnQ6bnVsbCxhJiYoeGxlPWUpfSwiaGFuZGxlRHJhZ3N0YXJ0Iiksdj1pKCgpPT57eGxlJiYoeGxlPW51bGwpfSwiaGFuZGxlRHJhZ2VuZCIpO3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0IixiKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ2VuZCIsdikse2Rlc3Ryb3koKXt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0IixiKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZHJhZ2VuZCIsdil9fX0scHJvcHM6e2hhbmRsZURPTUV2ZW50czp7ZHJvcDppKChjLGIpPT57aWYobj1hPT09Yy5kb20ucGFyZW50RWxlbWVudCxsPWIsIW4pe2xldCB2PXhsZTt2Py5pc0VkaXRhYmxlJiZzZXRUaW1lb3V0KCgpPT57bGV0IHg9di5zdGF0ZS5zZWxlY3Rpb247eCYmdi5jb21tYW5kcy5kZWxldGVSYW5nZSh7ZnJvbTp4LmZyb20sdG86eC50b30pfSwxMCl9cmV0dXJuITF9LCJkcm9wIikscGFzdGU6aSgoYyxiKT0+e3ZhciB2O2xldCB4PSh2PWIuY2xpcGJvYXJkRGF0YSk9PT1udWxsfHx2PT09dm9pZCAwP3ZvaWQgMDp2LmdldERhdGEoInRleHQvaHRtbCIpO3JldHVybiBvPWIscj0hIXg/LmluY2x1ZGVzKCJkYXRhLXBtLXNsaWNlIiksITF9LCJwYXN0ZSIpfX0sYXBwZW5kVHJhbnNhY3Rpb246aSgoYyxiLHYpPT57bGV0IHg9Y1swXSxtPXguZ2V0TWV0YSgidWlFdmVudCIpPT09InBhc3RlIiYmIXIsZj14LmdldE1ldGEoInVpRXZlbnQiKT09PSJkcm9wIiYmIW4seT14LmdldE1ldGEoImFwcGx5UGFzdGVSdWxlcyIpLE09ISF5O2lmKCFtJiYhZiYmIU0pcmV0dXJuO2lmKE0pe2xldHt0ZXh0OkN9PXk7dHlwZW9mIEM9PSJzdHJpbmciP0M9QzpDPVJ2KHJ0LmZyb20oQyksdi5zY2hlbWEpO2xldHtmcm9tOl99PXksTz1fK0MubGVuZ3RoLCQ9QVlhKEMpO3JldHVybiBwKHtydWxlOnUsc3RhdGU6dixmcm9tOl8sdG86e2I6T30scGFzdGVFdnQ6JH0pfWxldCB6PWIuZG9jLmNvbnRlbnQuZmluZERpZmZTdGFydCh2LmRvYy5jb250ZW50KSxOPWIuZG9jLmNvbnRlbnQuZmluZERpZmZFbmQodi5kb2MuY29udGVudCk7aWYoISghTmF0KHopfHwhTnx8ej09PU4uYikpcmV0dXJuIHAoe3J1bGU6dSxzdGF0ZTp2LGZyb206eix0bzpOLHBhc3RlRXZ0Om99KX0sImFwcGVuZFRyYW5zYWN0aW9uIil9KSl9ZnVuY3Rpb24gT2F0KHMpe2xldCBlPXMuZmlsdGVyKCh0LGEpPT5zLmluZGV4T2YodCkhPT1hKTtyZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KGUpKX1mdW5jdGlvbiB6bGUocyxlLHQpe2xldHtmcm9tOmEsdG86cn09ZSx7YmxvY2tTZXBhcmF0b3I6bj1gCgpgLHRleHRTZXJpYWxpemVyczpvPXt9fT10fHx7fSxsPSIiO3JldHVybiBzLm5vZGVzQmV0d2VlbihhLHIsKHAsZCx1LGMpPT57dmFyIGI7cC5pc0Jsb2NrJiZkPmEmJihsKz1uKTtsZXQgdj1vPy5bcC50eXBlLm5hbWVdO2lmKHYpcmV0dXJuIHUmJihsKz12KHtub2RlOnAscG9zOmQscGFyZW50OnUsaW5kZXg6YyxyYW5nZTplfSkpLCExO3AuaXNUZXh0JiYobCs9KGI9cD8udGV4dCk9PT1udWxsfHxiPT09dm9pZCAwP3ZvaWQgMDpiLnNsaWNlKE1hdGgubWF4KGEsZCktZCxyLWQpKX0pLGx9ZnVuY3Rpb24gblgocyl7cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhzLm5vZGVzKS5maWx0ZXIoKFssZV0pPT5lLnNwZWMudG9UZXh0KS5tYXAoKFtlLHRdKT0+W2UsdC5zcGVjLnRvVGV4dF0pKX1mdW5jdGlvbiBCdihzLGUsdD17c3RyaWN0OiEwfSl7bGV0IGE9T2JqZWN0LmtleXMoZSk7cmV0dXJuIGEubGVuZ3RoP2EuZXZlcnkocj0+dC5zdHJpY3Q/ZVtyXT09PXNbcl06b1goZVtyXSk/ZVtyXS50ZXN0KHNbcl0pOmVbcl09PT1zW3JdKTohMH1mdW5jdGlvbiB2aGEocyxlLHQ9e30pe3JldHVybiBzLmZpbmQoYT0+YS50eXBlPT09ZSYmQnYoT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5rZXlzKHQpLm1hcChyPT5bcixhLmF0dHJzW3JdXSkpLHQpKX1mdW5jdGlvbiB4aGEocyxlLHQ9e30pe3JldHVybiEhdmhhKHMsZSx0KX1mdW5jdGlvbiBsWChzLGUsdCl7dmFyIGE7aWYoIXN8fCFlKXJldHVybjtsZXQgcj1zLnBhcmVudC5jaGlsZEFmdGVyKHMucGFyZW50T2Zmc2V0KTtpZigoIXIubm9kZXx8IXIubm9kZS5tYXJrcy5zb21lKHU9PnUudHlwZT09PWUpKSYmKHI9cy5wYXJlbnQuY2hpbGRCZWZvcmUocy5wYXJlbnRPZmZzZXQpKSwhci5ub2RlfHwhci5ub2RlLm1hcmtzLnNvbWUodT0+dS50eXBlPT09ZSl8fCh0PXR8fCgoYT1yLm5vZGUubWFya3NbMF0pPT09bnVsbHx8YT09PXZvaWQgMD92b2lkIDA6YS5hdHRycyksIXZoYShbLi4uci5ub2RlLm1hcmtzXSxlLHQpKSlyZXR1cm47bGV0IG89ci5pbmRleCxsPXMuc3RhcnQoKStyLm9mZnNldCxwPW8rMSxkPWwrci5ub2RlLm5vZGVTaXplO2Zvcig7bz4wJiZ4aGEoWy4uLnMucGFyZW50LmNoaWxkKG8tMSkubWFya3NdLGUsdCk7KW8tPTEsbC09cy5wYXJlbnQuY2hpbGQobykubm9kZVNpemU7Zm9yKDtwPHMucGFyZW50LmNoaWxkQ291bnQmJnhoYShbLi4ucy5wYXJlbnQuY2hpbGQocCkubWFya3NdLGUsdCk7KWQrPXMucGFyZW50LmNoaWxkKHApLm5vZGVTaXplLHArPTE7cmV0dXJue2Zyb206bCx0bzpkfX1mdW5jdGlvbiBSZChzLGUpe2lmKHR5cGVvZiBzPT0ic3RyaW5nIil7aWYoIWUubWFya3Nbc10pdGhyb3cgRXJyb3IoYFRoZXJlIGlzIG5vIG1hcmsgdHlwZSBuYW1lZCAnJHtzfScuIE1heWJlIHlvdSBmb3Jnb3QgdG8gYWRkIHRoZSBleHRlbnNpb24/YCk7cmV0dXJuIGUubWFya3Nbc119cmV0dXJuIHN9ZnVuY3Rpb24gQ2xlKHMpe3JldHVybiBzIGluc3RhbmNlb2YgSnR9ZnVuY3Rpb24gYTIocz0wLGU9MCx0PTApe3JldHVybiBNYXRoLm1pbihNYXRoLm1heChzLGUpLHQpfWZ1bmN0aW9uIFRsZShzLGU9bnVsbCl7aWYoIWUpcmV0dXJuIG51bGw7bGV0IHQ9UXQuYXRTdGFydChzKSxhPVF0LmF0RW5kKHMpO2lmKGU9PT0ic3RhcnQifHxlPT09ITApcmV0dXJuIHQ7aWYoZT09PSJlbmQiKXJldHVybiBhO2xldCByPXQuZnJvbSxuPWEudG87cmV0dXJuIGU9PT0iYWxsIj9KdC5jcmVhdGUocyxhMigwLHIsbiksYTIocy5jb250ZW50LnNpemUscixuKSk6SnQuY3JlYXRlKHMsYTIoZSxyLG4pLGEyKGUscixuKSl9ZnVuY3Rpb24gJGF0KCl7cmV0dXJuIG5hdmlnYXRvci5wbGF0Zm9ybT09PSJBbmRyb2lkInx8L2FuZHJvaWQvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpfWZ1bmN0aW9uIG5nKCl7cmV0dXJuWyJpUGFkIFNpbXVsYXRvciIsImlQaG9uZSBTaW11bGF0b3IiLCJpUG9kIFNpbXVsYXRvciIsImlQYWQiLCJpUGhvbmUiLCJpUG9kIl0uaW5jbHVkZXMobmF2aWdhdG9yLnBsYXRmb3JtKXx8bmF2aWdhdG9yLnVzZXJBZ2VudC5pbmNsdWRlcygiTWFjIikmJiJvbnRvdWNoZW5kImluIGRvY3VtZW50fWZ1bmN0aW9uIEZhdCgpe3JldHVybiB0eXBlb2YgbmF2aWdhdG9yPCJ1Ij8vXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOiExfWZ1bmN0aW9uIGxnKHMpe2xldCBlPWA8Ym9keT4ke3N9PC9ib2R5PmAsdD1uZXcgd2luZG93LkRPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhlLCJ0ZXh0L2h0bWwiKS5ib2R5O3JldHVybiB5aGEodCl9ZnVuY3Rpb24gY2cocyxlLHQpe2lmKHMgaW5zdGFuY2VvZiBUbnx8cyBpbnN0YW5jZW9mIHJ0KXJldHVybiBzO3Q9e3NsaWNlOiEwLHBhcnNlT3B0aW9uczp7fSwuLi50fTtsZXQgYT10eXBlb2Ygcz09Im9iamVjdCImJnMhPT1udWxsLHI9dHlwZW9mIHM9PSJzdHJpbmciO2lmKGEpdHJ5e2lmKEFycmF5LmlzQXJyYXkocykmJnMubGVuZ3RoPjApcmV0dXJuIHJ0LmZyb21BcnJheShzLm1hcChsPT5lLm5vZGVGcm9tSlNPTihsKSkpO2xldCBvPWUubm9kZUZyb21KU09OKHMpO3JldHVybiB0LmVycm9yT25JbnZhbGlkQ29udGVudCYmby5jaGVjaygpLG99Y2F0Y2gobil7aWYodC5lcnJvck9uSW52YWxpZENvbnRlbnQpdGhyb3cgbmV3IEVycm9yKCJbdGlwdGFwIGVycm9yXTogSW52YWxpZCBKU09OIGNvbnRlbnQiLHtjYXVzZTpufSk7cmV0dXJuIGNvbnNvbGUud2FybigiW3RpcHRhcCB3YXJuXTogSW52YWxpZCBjb250ZW50LiIsIlBhc3NlZCB2YWx1ZToiLHMsIkVycm9yOiIsbiksY2coIiIsZSx0KX1pZihyKXtpZih0LmVycm9yT25JbnZhbGlkQ29udGVudCl7bGV0IG89ITEsbD0iIixwPW5ldyB4dih7dG9wTm9kZTplLnNwZWMudG9wTm9kZSxtYXJrczplLnNwZWMubWFya3Msbm9kZXM6ZS5zcGVjLm5vZGVzLmFwcGVuZCh7X190aXB0YXBfX3ByaXZhdGVfX3Vua25vd25fX2NhdGNoX19hbGxfX25vZGU6e2NvbnRlbnQ6ImlubGluZSoiLGdyb3VwOiJibG9jayIscGFyc2VET006W3t0YWc6IioiLGdldEF0dHJzOmkoZD0+KG89ITAsbD10eXBlb2YgZD09InN0cmluZyI/ZDpkLm91dGVySFRNTCxudWxsKSwiZ2V0QXR0cnMiKX1dfX0pfSk7aWYodC5zbGljZT9lMi5mcm9tU2NoZW1hKHApLnBhcnNlU2xpY2UobGcocyksdC5wYXJzZU9wdGlvbnMpOmUyLmZyb21TY2hlbWEocCkucGFyc2UobGcocyksdC5wYXJzZU9wdGlvbnMpLHQuZXJyb3JPbkludmFsaWRDb250ZW50JiZvKXRocm93IG5ldyBFcnJvcigiW3RpcHRhcCBlcnJvcl06IEludmFsaWQgSFRNTCBjb250ZW50Iix7Y2F1c2U6bmV3IEVycm9yKGBJbnZhbGlkIGVsZW1lbnQgZm91bmQ6ICR7bH1gKX0pfWxldCBuPWUyLmZyb21TY2hlbWEoZSk7cmV0dXJuIHQuc2xpY2U/bi5wYXJzZVNsaWNlKGxnKHMpLHQucGFyc2VPcHRpb25zKS5jb250ZW50Om4ucGFyc2UobGcocyksdC5wYXJzZU9wdGlvbnMpfXJldHVybiBjZygiIixlLHQpfWZ1bmN0aW9uIEJhdChzLGUsdCl7bGV0IGE9cy5zdGVwcy5sZW5ndGgtMTtpZihhPGUpcmV0dXJuO2xldCByPXMuc3RlcHNbYV07aWYoIShyIGluc3RhbmNlb2YgZ298fHIgaW5zdGFuY2VvZiBkcikpcmV0dXJuO2xldCBuPXMubWFwcGluZy5tYXBzW2FdLG89MDtuLmZvckVhY2goKGwscCxkLHUpPT57bz09PTAmJihvPXUpfSkscy5zZXRTZWxlY3Rpb24oUXQubmVhcihzLmRvYy5yZXNvbHZlKG8pLHQpKX1mdW5jdGlvbiAkbGUoKXtyZXR1cm4gdHlwZW9mIG5hdmlnYXRvcjwidSI/L01hYy8udGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pOiExfWZ1bmN0aW9uIGNaYShzKXtsZXQgZT1zLnNwbGl0KC8tKD8hJCkvKSx0PWVbZS5sZW5ndGgtMV07dD09PSJTcGFjZSImJih0PSIgIik7bGV0IGEscixuLG87Zm9yKGxldCBsPTA7bDxlLmxlbmd0aC0xO2wrPTEpe2xldCBwPWVbbF07aWYoL14oY21kfG1ldGF8bSkkL2kudGVzdChwKSlvPSEwO2Vsc2UgaWYoL15hKGx0KT8kL2kudGVzdChwKSlhPSEwO2Vsc2UgaWYoL14oY3xjdHJsfGNvbnRyb2wpJC9pLnRlc3QocCkpcj0hMDtlbHNlIGlmKC9ecyhoaWZ0KT8kL2kudGVzdChwKSluPSEwO2Vsc2UgaWYoL15tb2QkL2kudGVzdChwKSluZygpfHwkbGUoKT9vPSEwOnI9ITA7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBtb2RpZmllciBuYW1lOiAke3B9YCl9cmV0dXJuIGEmJih0PWBBbHQtJHt0fWApLHImJih0PWBDdHJsLSR7dH1gKSxvJiYodD1gTWV0YS0ke3R9YCksbiYmKHQ9YFNoaWZ0LSR7dH1gKSx0fWZ1bmN0aW9uIGRnKHMsZSx0PXt9KXtsZXR7ZnJvbTphLHRvOnIsZW1wdHk6bn09cy5zZWxlY3Rpb24sbz1lP0xyKGUscy5zY2hlbWEpOm51bGwsbD1bXTtzLmRvYy5ub2Rlc0JldHdlZW4oYSxyLChjLGIpPT57aWYoYy5pc1RleHQpcmV0dXJuO2xldCB2PU1hdGgubWF4KGEsYikseD1NYXRoLm1pbihyLGIrYy5ub2RlU2l6ZSk7bC5wdXNoKHtub2RlOmMsZnJvbTp2LHRvOnh9KX0pO2xldCBwPXItYSxkPWwuZmlsdGVyKGM9Pm8/by5uYW1lPT09Yy5ub2RlLnR5cGUubmFtZTohMCkuZmlsdGVyKGM9PkJ2KGMubm9kZS5hdHRycyx0LHtzdHJpY3Q6ITF9KSk7cmV0dXJuIG4/ISFkLmxlbmd0aDpkLnJlZHVjZSgoYyxiKT0+YytiLnRvLWIuZnJvbSwwKT49cH1mdW5jdGlvbiBIdihzLGUpe3JldHVybiBlLm5vZGVzW3NdPyJub2RlIjplLm1hcmtzW3NdPyJtYXJrIjpudWxsfWZ1bmN0aW9uIERsZShzLGUpe2xldCB0PXR5cGVvZiBlPT0ic3RyaW5nIj9bZV06ZTtyZXR1cm4gT2JqZWN0LmtleXMocykucmVkdWNlKChhLHIpPT4odC5pbmNsdWRlcyhyKXx8KGFbcl09c1tyXSksYSkse30pfWZ1bmN0aW9uIGNYKHMsZSx0PXt9LGE9e30pe3JldHVybiBjZyhzLGUse3NsaWNlOiExLHBhcnNlT3B0aW9uczp0LGVycm9yT25JbnZhbGlkQ29udGVudDphLmVycm9yT25JbnZhbGlkQ29udGVudH0pfWZ1bmN0aW9uIExsZShzLGUpe2xldCB0PVJkKGUscy5zY2hlbWEpLHtmcm9tOmEsdG86cixlbXB0eTpufT1zLnNlbGVjdGlvbixvPVtdO24/KHMuc3RvcmVkTWFya3MmJm8ucHVzaCguLi5zLnN0b3JlZE1hcmtzKSxvLnB1c2goLi4ucy5zZWxlY3Rpb24uJGhlYWQubWFya3MoKSkpOnMuZG9jLm5vZGVzQmV0d2VlbihhLHIscD0+e28ucHVzaCguLi5wLm1hcmtzKX0pO2xldCBsPW8uZmluZChwPT5wLnR5cGUubmFtZT09PXQubmFtZSk7cmV0dXJuIGw/ey4uLmwuYXR0cnN9Ont9fWZ1bmN0aW9uIFJsZShzLGUpe2xldCB0PW5ldyBHOChzKTtyZXR1cm4gZS5mb3JFYWNoKGE9PnthLnN0ZXBzLmZvckVhY2gocj0+e3Quc3RlcChyKX0pfSksdH1mdW5jdGlvbiBIYXQocyl7Zm9yKGxldCBlPTA7ZTxzLmVkZ2VDb3VudDtlKz0xKXtsZXR7dHlwZTp0fT1zLmVkZ2UoZSk7aWYodC5pc1RleHRibG9jayYmIXQuaGFzUmVxdWlyZWRBdHRycygpKXJldHVybiB0fXJldHVybiBudWxsfWZ1bmN0aW9uIExoYShzLGUpe2xldCB0PVtdO3JldHVybiBzLmRlc2NlbmRhbnRzKChhLHIpPT57ZShhKSYmdC5wdXNoKHtub2RlOmEscG9zOnJ9KX0pLHR9ZnVuY3Rpb24gT2xlKHMsZSx0KXtsZXQgYT1bXTtyZXR1cm4gcy5ub2Rlc0JldHdlZW4oZS5mcm9tLGUudG8sKHIsbik9Pnt0KHIpJiZhLnB1c2goe25vZGU6cixwb3M6bn0pfSksYX1mdW5jdGlvbiBxYXQocyxlKXtmb3IobGV0IHQ9cy5kZXB0aDt0PjA7dC09MSl7bGV0IGE9cy5ub2RlKHQpO2lmKGUoYSkpcmV0dXJue3Bvczp0PjA/cy5iZWZvcmUodCk6MCxzdGFydDpzLnN0YXJ0KHQpLGRlcHRoOnQsbm9kZTphfX19ZnVuY3Rpb24gcXYocyl7cmV0dXJuIGU9PnFhdChlLiRmcm9tLHMpfWZ1bmN0aW9uIGRYKHMsZSl7bGV0IHQ9eWxlLnJlc29sdmUocyk7cmV0dXJuIF9sZSh0LGUpfWZ1bmN0aW9uIEVoYShzLGUpe2xldCB0PWRYKGUpLGE9VG4uZnJvbUpTT04odCxzKTtyZXR1cm4gUnYoYS5jb250ZW50LHQpfWZ1bmN0aW9uIFBoYShzLGUpe2xldCB0PWRYKGUpLGE9bGcocyk7cmV0dXJuIGUyLmZyb21TY2hlbWEodCkucGFyc2UoYSkudG9KU09OKCl9ZnVuY3Rpb24gRWxlKHMsZSl7bGV0IHQ9e2Zyb206MCx0bzpzLmNvbnRlbnQuc2l6ZX07cmV0dXJuIHpsZShzLHQsZSl9ZnVuY3Rpb24gSWhhKHMsZSx0KXtsZXR7YmxvY2tTZXBhcmF0b3I6YT1gCgpgLHRleHRTZXJpYWxpemVyczpyPXt9fT10fHx7fSxuPWRYKGUpLG89VG4uZnJvbUpTT04obixzKTtyZXR1cm4gRWxlKG8se2Jsb2NrU2VwYXJhdG9yOmEsdGV4dFNlcmlhbGl6ZXJzOnsuLi5uWChuKSwuLi5yfX0pfWZ1bmN0aW9uIGphdChzLGUpe2xldCB0PUxyKGUscy5zY2hlbWEpLHtmcm9tOmEsdG86cn09cy5zZWxlY3Rpb24sbj1bXTtzLmRvYy5ub2Rlc0JldHdlZW4oYSxyLGw9PntuLnB1c2gobCl9KTtsZXQgbz1uLnJldmVyc2UoKS5maW5kKGw9PmwudHlwZS5uYW1lPT09dC5uYW1lKTtyZXR1cm4gbz97Li4uby5hdHRyc306e319ZnVuY3Rpb24gZlgocyxlKXtsZXQgdD1Idih0eXBlb2YgZT09InN0cmluZyI/ZTplLm5hbWUscy5zY2hlbWEpO3JldHVybiB0PT09Im5vZGUiP2phdChzLGUpOnQ9PT0ibWFyayI/TGxlKHMsZSk6e319ZnVuY3Rpb24gVmF0KHMsZT1KU09OLnN0cmluZ2lmeSl7bGV0IHQ9e307cmV0dXJuIHMuZmlsdGVyKGE9PntsZXQgcj1lKGEpO3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxyKT8hMTp0W3JdPSEwfSl9ZnVuY3Rpb24gX1phKHMpe2xldCBlPVZhdChzKTtyZXR1cm4gZS5sZW5ndGg9PT0xP2U6ZS5maWx0ZXIoKHQsYSk9PiFlLmZpbHRlcigobixvKT0+byE9PWEpLnNvbWUobj0+dC5vbGRSYW5nZS5mcm9tPj1uLm9sZFJhbmdlLmZyb20mJnQub2xkUmFuZ2UudG88PW4ub2xkUmFuZ2UudG8mJnQubmV3UmFuZ2UuZnJvbT49bi5uZXdSYW5nZS5mcm9tJiZ0Lm5ld1JhbmdlLnRvPD1uLm5ld1JhbmdlLnRvKSl9ZnVuY3Rpb24gRmxlKHMpe2xldHttYXBwaW5nOmUsc3RlcHM6dH09cyxhPVtdO3JldHVybiBlLm1hcHMuZm9yRWFjaCgocixuKT0+e2xldCBvPVtdO2lmKHIucmFuZ2VzLmxlbmd0aClyLmZvckVhY2goKGwscCk9PntvLnB1c2goe2Zyb206bCx0bzpwfSl9KTtlbHNle2xldHtmcm9tOmwsdG86cH09dFtuXTtpZihsPT09dm9pZCAwfHxwPT09dm9pZCAwKXJldHVybjtvLnB1c2goe2Zyb206bCx0bzpwfSl9by5mb3JFYWNoKCh7ZnJvbTpsLHRvOnB9KT0+e2xldCBkPWUuc2xpY2UobikubWFwKGwsLTEpLHU9ZS5zbGljZShuKS5tYXAocCksYz1lLmludmVydCgpLm1hcChkLC0xKSxiPWUuaW52ZXJ0KCkubWFwKHUpO2EucHVzaCh7b2xkUmFuZ2U6e2Zyb206Yyx0bzpifSxuZXdSYW5nZTp7ZnJvbTpkLHRvOnV9fSl9KX0pLF9aYShhKX1mdW5jdGlvbiBVYXQocyxlPTApe2xldCBhPXMudHlwZT09PXMudHlwZS5zY2hlbWEudG9wTm9kZVR5cGU/MDoxLHI9ZSxuPXIrcy5ub2RlU2l6ZSxvPXMubWFya3MubWFwKGQ9PntsZXQgdT17dHlwZTpkLnR5cGUubmFtZX07cmV0dXJuIE9iamVjdC5rZXlzKGQuYXR0cnMpLmxlbmd0aCYmKHUuYXR0cnM9ey4uLmQuYXR0cnN9KSx1fSksbD17Li4ucy5hdHRyc30scD17dHlwZTpzLnR5cGUubmFtZSxmcm9tOnIsdG86bn07cmV0dXJuIE9iamVjdC5rZXlzKGwpLmxlbmd0aCYmKHAuYXR0cnM9bCksby5sZW5ndGgmJihwLm1hcmtzPW8pLHMuY29udGVudC5jaGlsZENvdW50JiYocC5jb250ZW50PVtdLHMuZm9yRWFjaCgoZCx1KT0+e3ZhciBjOyhjPXAuY29udGVudCk9PT1udWxsfHxjPT09dm9pZCAwfHxjLnB1c2goVWF0KGQsZSt1K2EpKX0pKSxzLnRleHQmJihwLnRleHQ9cy50ZXh0KSxwfWZ1bmN0aW9uIFZ2KHMsZSx0KXtsZXQgYT1bXTtyZXR1cm4gcz09PWU/dC5yZXNvbHZlKHMpLm1hcmtzKCkuZm9yRWFjaChyPT57bGV0IG49dC5yZXNvbHZlKHMpLG89bFgobixyLnR5cGUpO28mJmEucHVzaCh7bWFyazpyLC4uLm99KX0pOnQubm9kZXNCZXR3ZWVuKHMsZSwocixuKT0+eyFyfHxyPy5ub2RlU2l6ZT09PXZvaWQgMHx8YS5wdXNoKC4uLnIubWFya3MubWFwKG89Pih7ZnJvbTpuLHRvOm4rci5ub2RlU2l6ZSxtYXJrOm99KSkpfSksYX1mdW5jdGlvbiBqdihzLGUsdCl7cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh0KS5maWx0ZXIoKFthXSk9PntsZXQgcj1zLmZpbmQobj0+bi50eXBlPT09ZSYmbi5uYW1lPT09YSk7cmV0dXJuIHI/ci5hdHRyaWJ1dGUua2VlcE9uU3BsaXQ6ITF9KSl9ZnVuY3Rpb24gdVgocyxlLHQ9e30pe2xldHtlbXB0eTphLHJhbmdlczpyfT1zLnNlbGVjdGlvbixuPWU/UmQoZSxzLnNjaGVtYSk6bnVsbDtpZihhKXJldHVybiEhKHMuc3RvcmVkTWFya3N8fHMuc2VsZWN0aW9uLiRmcm9tLm1hcmtzKCkpLmZpbHRlcihjPT5uP24ubmFtZT09PWMudHlwZS5uYW1lOiEwKS5maW5kKGM9PkJ2KGMuYXR0cnMsdCx7c3RyaWN0OiExfSkpO2xldCBvPTAsbD1bXTtpZihyLmZvckVhY2goKHskZnJvbTpjLCR0bzpifSk9PntsZXQgdj1jLnBvcyx4PWIucG9zO3MuZG9jLm5vZGVzQmV0d2Vlbih2LHgsKG0sZik9PntpZighbS5pc1RleHQmJiFtLm1hcmtzLmxlbmd0aClyZXR1cm47bGV0IHk9TWF0aC5tYXgodixmKSxNPU1hdGgubWluKHgsZittLm5vZGVTaXplKSx6PU0teTtvKz16LGwucHVzaCguLi5tLm1hcmtzLm1hcChOPT4oe21hcms6Tixmcm9tOnksdG86TX0pKSl9KX0pLG89PT0wKXJldHVybiExO2xldCBwPWwuZmlsdGVyKGM9Pm4/bi5uYW1lPT09Yy5tYXJrLnR5cGUubmFtZTohMCkuZmlsdGVyKGM9PkJ2KGMubWFyay5hdHRycyx0LHtzdHJpY3Q6ITF9KSkucmVkdWNlKChjLGIpPT5jK2IudG8tYi5mcm9tLDApLGQ9bC5maWx0ZXIoYz0+bj9jLm1hcmsudHlwZSE9PW4mJmMubWFyay50eXBlLmV4Y2x1ZGVzKG4pOiEwKS5yZWR1Y2UoKGMsYik9PmMrYi50by1iLmZyb20sMCk7cmV0dXJuKHA+MD9wK2Q6cCk+PW99ZnVuY3Rpb24gV2F0KHMsZSx0PXt9KXtpZighZSlyZXR1cm4gZGcocyxudWxsLHQpfHx1WChzLG51bGwsdCk7bGV0IGE9SHYoZSxzLnNjaGVtYSk7cmV0dXJuIGE9PT0ibm9kZSI/ZGcocyxlLHQpOmE9PT0ibWFyayI/dVgocyxlLHQpOiExfWZ1bmN0aW9uIFBsZShzLGUpe2xldHtub2RlRXh0ZW5zaW9uczp0fT1OdihlKSxhPXQuZmluZChvPT5vLm5hbWU9PT1zKTtpZighYSlyZXR1cm4hMTtsZXQgcj17bmFtZTphLm5hbWUsb3B0aW9uczphLm9wdGlvbnMsc3RvcmFnZTphLnN0b3JhZ2V9LG49Y2EoRHQoYSwiZ3JvdXAiLHIpKTtyZXR1cm4gdHlwZW9mIG4hPSJzdHJpbmciPyExOm4uc3BsaXQoIiAiKS5pbmNsdWRlcygibGlzdCIpfWZ1bmN0aW9uIHBYKHMse2NoZWNrQ2hpbGRyZW46ZT0hMCxpZ25vcmVXaGl0ZXNwYWNlOnQ9ITF9PXt9KXt2YXIgYTtpZih0KXtpZihzLnR5cGUubmFtZT09PSJoYXJkQnJlYWsiKXJldHVybiEwO2lmKHMuaXNUZXh0KXJldHVybi9eXHMqJC9tLnRlc3QoKGE9cy50ZXh0KSE9PW51bGwmJmEhPT12b2lkIDA/YToiIil9aWYocy5pc1RleHQpcmV0dXJuIXMudGV4dDtpZihzLmlzQXRvbXx8cy5pc0xlYWYpcmV0dXJuITE7aWYocy5jb250ZW50LmNoaWxkQ291bnQ9PT0wKXJldHVybiEwO2lmKGUpe2xldCByPSEwO3JldHVybiBzLmNvbnRlbnQuZm9yRWFjaChuPT57ciE9PSExJiYocFgobix7aWdub3JlV2hpdGVzcGFjZTp0LGNoZWNrQ2hpbGRyZW46ZX0pfHwocj0hMSkpfSkscn1yZXR1cm4hMX1mdW5jdGlvbiBCbGUocyl7cmV0dXJuIHMgaW5zdGFuY2VvZiBGdH1mdW5jdGlvbiBPaGEocyxlLHQpe2xldCByPXMuc3RhdGUuZG9jLmNvbnRlbnQuc2l6ZSxuPWEyKGUsMCxyKSxvPWEyKHQsMCxyKSxsPXMuY29vcmRzQXRQb3MobikscD1zLmNvb3Jkc0F0UG9zKG8sLTEpLGQ9TWF0aC5taW4obC50b3AscC50b3ApLHU9TWF0aC5tYXgobC5ib3R0b20scC5ib3R0b20pLGM9TWF0aC5taW4obC5sZWZ0LHAubGVmdCksYj1NYXRoLm1heChsLnJpZ2h0LHAucmlnaHQpLHY9Yi1jLHg9dS1kLHk9e3RvcDpkLGJvdHRvbTp1LGxlZnQ6YyxyaWdodDpiLHdpZHRoOnYsaGVpZ2h0OngseDpjLHk6ZH07cmV0dXJuey4uLnksdG9KU09OOmkoKCk9PnksInRvSlNPTiIpfX1mdW5jdGlvbiB3aGEoe2pzb246cyx2YWxpZE1hcmtzOmUsdmFsaWROb2Rlczp0LG9wdGlvbnM6YSxyZXdyaXR0ZW5Db250ZW50OnI9W119KXtyZXR1cm4gcy5tYXJrcyYmQXJyYXkuaXNBcnJheShzLm1hcmtzKSYmKHMubWFya3M9cy5tYXJrcy5maWx0ZXIobj0+e2xldCBvPXR5cGVvZiBuPT0ic3RyaW5nIj9uOm4udHlwZTtyZXR1cm4gZS5oYXMobyk/ITA6KHIucHVzaCh7b3JpZ2luYWw6SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShuKSksdW5zdXBwb3J0ZWQ6b30pLCExKX0pKSxzLmNvbnRlbnQmJkFycmF5LmlzQXJyYXkocy5jb250ZW50KSYmKHMuY29udGVudD1zLmNvbnRlbnQubWFwKG49PndoYSh7anNvbjpuLHZhbGlkTWFya3M6ZSx2YWxpZE5vZGVzOnQsb3B0aW9uczphLHJld3JpdHRlbkNvbnRlbnQ6cn0pLmpzb24pLmZpbHRlcihuPT5uIT1udWxsKSkscy50eXBlJiYhdC5oYXMocy50eXBlKT8oci5wdXNoKHtvcmlnaW5hbDpKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHMpKSx1bnN1cHBvcnRlZDpzLnR5cGV9KSxzLmNvbnRlbnQmJkFycmF5LmlzQXJyYXkocy5jb250ZW50KSYmYT8uZmFsbGJhY2tUb1BhcmFncmFwaCE9PSExPyhzLnR5cGU9InBhcmFncmFwaCIse2pzb246cyxyZXdyaXR0ZW5Db250ZW50OnJ9KTp7anNvbjpudWxsLHJld3JpdHRlbkNvbnRlbnQ6cn0pOntqc29uOnMscmV3cml0dGVuQ29udGVudDpyfX1mdW5jdGlvbiBGaGEocyxlLHQpe3JldHVybiB3aGEoe2pzb246cyx2YWxpZE5vZGVzOm5ldyBTZXQoT2JqZWN0LmtleXMoZS5ub2RlcykpLHZhbGlkTWFya3M6bmV3IFNldChPYmplY3Qua2V5cyhlLm1hcmtzKSksb3B0aW9uczp0fSl9ZnVuY3Rpb24gTVphKHMsZSx0KXt2YXIgYTtsZXR7c2VsZWN0aW9uOnJ9PWUsbj1udWxsO2lmKENsZShyKSYmKG49ci4kY3Vyc29yKSxuKXtsZXQgbD0oYT1zLnN0b3JlZE1hcmtzKSE9PW51bGwmJmEhPT12b2lkIDA/YTpuLm1hcmtzKCk7cmV0dXJuISF0LmlzSW5TZXQobCl8fCFsLnNvbWUocD0+cC50eXBlLmV4Y2x1ZGVzKHQpKX1sZXR7cmFuZ2VzOm99PXI7cmV0dXJuIG8uc29tZSgoeyRmcm9tOmwsJHRvOnB9KT0+e2xldCBkPWwuZGVwdGg9PT0wP3MuZG9jLmlubGluZUNvbnRlbnQmJnMuZG9jLnR5cGUuYWxsb3dzTWFya1R5cGUodCk6ITE7cmV0dXJuIHMuZG9jLm5vZGVzQmV0d2VlbihsLnBvcyxwLnBvcywodSxjLGIpPT57aWYoZClyZXR1cm4hMTtpZih1LmlzSW5saW5lKXtsZXQgdj0hYnx8Yi50eXBlLmFsbG93c01hcmtUeXBlKHQpLHg9ISF0LmlzSW5TZXQodS5tYXJrcyl8fCF1Lm1hcmtzLnNvbWUobT0+bS50eXBlLmV4Y2x1ZGVzKHQpKTtkPXYmJnh9cmV0dXJuIWR9KSxkfSl9ZnVuY3Rpb24ga2hhKHMsZSl7bGV0IHQ9cy5zdG9yZWRNYXJrc3x8cy5zZWxlY3Rpb24uJHRvLnBhcmVudE9mZnNldCYmcy5zZWxlY3Rpb24uJGZyb20ubWFya3MoKTtpZih0KXtsZXQgYT10LmZpbHRlcihyPT5lPy5pbmNsdWRlcyhyLnR5cGUubmFtZSkpO3MudHIuZW5zdXJlTWFya3MoYSl9fWZ1bmN0aW9uIEdhdChzLGUsdCl7bGV0IGE9ZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihgc3R5bGVbZGF0YS10aXB0YXAtc3R5bGUke3Q/YC0ke3R9YDoiIn1dYCk7aWYoYSE9PW51bGwpcmV0dXJuIGE7bGV0IHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtyZXR1cm4gZSYmci5zZXRBdHRyaWJ1dGUoIm5vbmNlIixlKSxyLnNldEF0dHJpYnV0ZShgZGF0YS10aXB0YXAtc3R5bGUke3Q/YC0ke3R9YDoiIn1gLCIiKSxyLmlubmVySFRNTD1zLGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0uYXBwZW5kQ2hpbGQocikscn1mdW5jdGlvbiBxYyhzKXtyZXR1cm4gbmV3IHV1KHtmaW5kOnMuZmluZCxoYW5kbGVyOmkoKHtzdGF0ZTplLHJhbmdlOnQsbWF0Y2g6YX0pPT57bGV0IHI9Y2Eocy5nZXRBdHRyaWJ1dGVzLHZvaWQgMCxhKTtpZihyPT09ITF8fHI9PT1udWxsKXJldHVybiBudWxsO2xldHt0cjpufT1lLG89YVthLmxlbmd0aC0xXSxsPWFbMF07aWYobyl7bGV0IHA9bC5zZWFyY2goL1xTLyksZD10LmZyb20rbC5pbmRleE9mKG8pLHU9ZCtvLmxlbmd0aDtpZihWdih0LmZyb20sdC50byxlLmRvYykuZmlsdGVyKHY9PnYubWFyay50eXBlLmV4Y2x1ZGVkLmZpbmQobT0+bT09PXMudHlwZSYmbSE9PXYubWFyay50eXBlKSkuZmlsdGVyKHY9PnYudG8+ZCkubGVuZ3RoKXJldHVybiBudWxsO3U8dC50byYmbi5kZWxldGUodSx0LnRvKSxkPnQuZnJvbSYmbi5kZWxldGUodC5mcm9tK3AsZCk7bGV0IGI9dC5mcm9tK3Arby5sZW5ndGg7bi5hZGRNYXJrKHQuZnJvbStwLGIscy50eXBlLmNyZWF0ZShyfHx7fSkpLG4ucmVtb3ZlU3RvcmVkTWFyayhzLnR5cGUpfX0sImhhbmRsZXIiKX0pfWZ1bmN0aW9uIEhsZShzKXtyZXR1cm4gbmV3IHV1KHtmaW5kOnMuZmluZCxoYW5kbGVyOmkoKHtzdGF0ZTplLHJhbmdlOnQsbWF0Y2g6YX0pPT57bGV0IHI9Y2Eocy5nZXRBdHRyaWJ1dGVzLHZvaWQgMCxhKXx8e30se3RyOm59PWUsbz10LmZyb20sbD10LnRvLHA9cy50eXBlLmNyZWF0ZShyKTtpZihhWzFdKXtsZXQgZD1hWzBdLmxhc3RJbmRleE9mKGFbMV0pLHU9bytkO3U+bD91PWw6bD11K2FbMV0ubGVuZ3RoO2xldCBjPWFbMF1bYVswXS5sZW5ndGgtMV07bi5pbnNlcnRUZXh0KGMsbythWzBdLmxlbmd0aC0xKSxuLnJlcGxhY2VXaXRoKHUsbCxwKX1lbHNlIGlmKGFbMF0pe2xldCBkPXMudHlwZS5pc0lubGluZT9vOm8tMTtuLmluc2VydChkLHMudHlwZS5jcmVhdGUocikpLmRlbGV0ZShuLm1hcHBpbmcubWFwKG8pLG4ubWFwcGluZy5tYXAobCkpfW4uc2Nyb2xsSW50b1ZpZXcoKX0sImhhbmRsZXIiKX0pfWZ1bmN0aW9uIHVnKHMpe3JldHVybiBuZXcgdXUoe2ZpbmQ6cy5maW5kLGhhbmRsZXI6aSgoe3N0YXRlOmUscmFuZ2U6dCxtYXRjaDphfSk9PntsZXQgcj1lLmRvYy5yZXNvbHZlKHQuZnJvbSksbj1jYShzLmdldEF0dHJpYnV0ZXMsdm9pZCAwLGEpfHx7fTtpZighci5ub2RlKC0xKS5jYW5SZXBsYWNlV2l0aChyLmluZGV4KC0xKSxyLmluZGV4QWZ0ZXIoLTEpLHMudHlwZSkpcmV0dXJuIG51bGw7ZS50ci5kZWxldGUodC5mcm9tLHQudG8pLnNldEJsb2NrVHlwZSh0LmZyb20sdC5mcm9tLHMudHlwZSxuKX0sImhhbmRsZXIiKX0pfWZ1bmN0aW9uIGhpKHMpe3JldHVybiBuZXcgdXUoe2ZpbmQ6cy5maW5kLGhhbmRsZXI6aSgoe3N0YXRlOmUscmFuZ2U6dCxtYXRjaDphfSk9PntsZXQgcj1zLnJlcGxhY2Usbj10LmZyb20sbz10LnRvO2lmKGFbMV0pe2xldCBsPWFbMF0ubGFzdEluZGV4T2YoYVsxXSk7cis9YVswXS5zbGljZShsK2FbMV0ubGVuZ3RoKSxuKz1sO2xldCBwPW4tbztwPjAmJihyPWFbMF0uc2xpY2UobC1wLGwpK3Isbj1vKX1lLnRyLmluc2VydFRleHQocixuLG8pfSwiaGFuZGxlciIpfSl9ZnVuY3Rpb24gT2Qocyl7cmV0dXJuIG5ldyB1dSh7ZmluZDpzLmZpbmQsaGFuZGxlcjppKCh7c3RhdGU6ZSxyYW5nZTp0LG1hdGNoOmEsY2hhaW46cn0pPT57bGV0IG49Y2Eocy5nZXRBdHRyaWJ1dGVzLHZvaWQgMCxhKXx8e30sbz1lLnRyLmRlbGV0ZSh0LmZyb20sdC50bykscD1vLmRvYy5yZXNvbHZlKHQuZnJvbSkuYmxvY2tSYW5nZSgpLGQ9cCYmSzgocCxzLnR5cGUsbik7aWYoIWQpcmV0dXJuIG51bGw7aWYoby53cmFwKHAsZCkscy5rZWVwTWFya3MmJnMuZWRpdG9yKXtsZXR7c2VsZWN0aW9uOmMsc3RvcmVkTWFya3M6Yn09ZSx7c3BsaXR0YWJsZU1hcmtzOnZ9PXMuZWRpdG9yLmV4dGVuc2lvbk1hbmFnZXIseD1ifHxjLiR0by5wYXJlbnRPZmZzZXQmJmMuJGZyb20ubWFya3MoKTtpZih4KXtsZXQgbT14LmZpbHRlcihmPT52LmluY2x1ZGVzKGYudHlwZS5uYW1lKSk7by5lbnN1cmVNYXJrcyhtKX19aWYocy5rZWVwQXR0cmlidXRlcyl7bGV0IGM9cy50eXBlLm5hbWU9PT0iYnVsbGV0TGlzdCJ8fHMudHlwZS5uYW1lPT09Im9yZGVyZWRMaXN0Ij8ibGlzdEl0ZW0iOiJ0YXNrTGlzdCI7cigpLnVwZGF0ZUF0dHJpYnV0ZXMoYyxuKS5ydW4oKX1sZXQgdT1vLmRvYy5yZXNvbHZlKHQuZnJvbS0xKS5ub2RlQmVmb3JlO3UmJnUudHlwZT09PXMudHlwZSYmWmwoby5kb2MsdC5mcm9tLTEpJiYoIXMuam9pblByZWRpY2F0ZXx8cy5qb2luUHJlZGljYXRlKGEsdSkpJiZvLmpvaW4odC5mcm9tLTEpfSwiaGFuZGxlciIpfSl9ZnVuY3Rpb24gVGwocyl7cmV0dXJuIG5ldyBvZyh7ZmluZDpzLmZpbmQsaGFuZGxlcjppKCh7c3RhdGU6ZSxyYW5nZTp0LG1hdGNoOmEscGFzdGVFdmVudDpyfSk9PntsZXQgbj1jYShzLmdldEF0dHJpYnV0ZXMsdm9pZCAwLGEscik7aWYobj09PSExfHxuPT09bnVsbClyZXR1cm4gbnVsbDtsZXR7dHI6b309ZSxsPWFbYS5sZW5ndGgtMV0scD1hWzBdLGQ9dC50bztpZihsKXtsZXQgdT1wLnNlYXJjaCgvXFMvKSxjPXQuZnJvbStwLmluZGV4T2YobCksYj1jK2wubGVuZ3RoO2lmKFZ2KHQuZnJvbSx0LnRvLGUuZG9jKS5maWx0ZXIoeD0+eC5tYXJrLnR5cGUuZXhjbHVkZWQuZmluZChmPT5mPT09cy50eXBlJiZmIT09eC5tYXJrLnR5cGUpKS5maWx0ZXIoeD0+eC50bz5jKS5sZW5ndGgpcmV0dXJuIG51bGw7Yjx0LnRvJiZvLmRlbGV0ZShiLHQudG8pLGM+dC5mcm9tJiZvLmRlbGV0ZSh0LmZyb20rdSxjKSxkPXQuZnJvbSt1K2wubGVuZ3RoLG8uYWRkTWFyayh0LmZyb20rdSxkLHMudHlwZS5jcmVhdGUobnx8e30pKSxvLnJlbW92ZVN0b3JlZE1hcmsocy50eXBlKX19LCJoYW5kbGVyIil9KX1mdW5jdGlvbiBxbGUocyxlKXtsZXR7c2VsZWN0aW9uOnR9PXMseyRmcm9tOmF9PXQ7aWYodCBpbnN0YW5jZW9mIEZ0KXtsZXQgbj1hLmluZGV4KCk7cmV0dXJuIGEucGFyZW50LmNhblJlcGxhY2VXaXRoKG4sbisxLGUpfWxldCByPWEuZGVwdGg7Zm9yKDtyPj0wOyl7bGV0IG49YS5pbmRleChyKTtpZihhLm5vZGUocikuY29udGVudE1hdGNoQXQobikubWF0Y2hUeXBlKGUpKXJldHVybiEwO3ItPTF9cmV0dXJuITF9ZnVuY3Rpb24gSGhhKHMpe3JldHVybiBzLnJlcGxhY2UoL1stL1xcXiQqKz8uKCl8W1xde31dL2csIlxcJCYiKX1mdW5jdGlvbiBxaGEocyl7cmV0dXJuIHR5cGVvZiBzPT0ic3RyaW5nIn1mdW5jdGlvbiBqaGEocyl7cmV0dXJuIG5ldyBvZyh7ZmluZDpzLmZpbmQsaGFuZGxlcih7bWF0Y2g6ZSxjaGFpbjp0LHJhbmdlOmEscGFzdGVFdmVudDpyfSl7bGV0IG49Y2Eocy5nZXRBdHRyaWJ1dGVzLHZvaWQgMCxlLHIpLG89Y2Eocy5nZXRDb250ZW50LHZvaWQgMCxuKTtpZihuPT09ITF8fG49PT1udWxsKXJldHVybiBudWxsO2xldCBsPXt0eXBlOnMudHlwZS5uYW1lLGF0dHJzOm59O28mJihsLmNvbnRlbnQ9byksZS5pbnB1dCYmdCgpLmRlbGV0ZVJhbmdlKGEpLmluc2VydENvbnRlbnRBdChhLmZyb20sbCl9fSl9ZnVuY3Rpb24gVmhhKHMpe3JldHVybiBuZXcgb2coe2ZpbmQ6cy5maW5kLGhhbmRsZXI6aSgoe3N0YXRlOmUscmFuZ2U6dCxtYXRjaDphfSk9PntsZXQgcj1zLnJlcGxhY2Usbj10LmZyb20sbz10LnRvO2lmKGFbMV0pe2xldCBsPWFbMF0ubGFzdEluZGV4T2YoYVsxXSk7cis9YVswXS5zbGljZShsK2FbMV0ubGVuZ3RoKSxuKz1sO2xldCBwPW4tbztwPjAmJihyPWFbMF0uc2xpY2UobC1wLGwpK3Isbj1vKX1lLnRyLmluc2VydFRleHQocixuLG8pfSwiaGFuZGxlciIpfSl9dmFyIFBoLFRhdCxJYXQsdXUsTFlhLERvLG9nLFBZYSx4bGUsQVlhLHlsZSx3aSxiaGEsTllhLFJZYSxPWWEsRllhLEJZYSxIWWEscVlhLGpZYSxWWWEsVVlhLFdZYSxHWWEsS1lhLFlZYSxaWWEsWFlhLFFZYSx5aGEsSllhLGVaYSx0WmEsYVphLHNaYSxpWmEsclphLG9aYSxuWmEsbFphLGRaYSx1WmEscFphLGhaYSxmWmEsbVphLGdaYSxiWmEsdlphLHhaYSx5WmEsd1phLGtaYSxTWmEsQWhhLE5oYSxSaGEselphLENaYSxUWmEsJFphLERaYSxMWmEsRVphLFBaYSxEYXQsTGF0LElaYSxBWmEsTlphLFJaYSxPWmEsRlphLEJaYSxIWmEscVphLGpaYSxWWmEsU2hhLF9oYSxNaGEsemhhLENoYSxUaGEsJGhhLERoYSxCaGEsaFgsVVphLElsZSxzaSxBbGUsTmxlLGlpPWcoKCk9PntHWigpO0dwYSgpO1pwYSgpO1hwYSgpO1FwYSgpO2xoYSgpO21oYSgpO2koQXYsImNyZWF0ZUNoYWluYWJsZVN0YXRlIik7UGg9Y2xhc3N7c3RhdGlje2kodGhpcywiQ29tbWFuZE1hbmFnZXIiKX1jb25zdHJ1Y3RvcihlKXt0aGlzLmVkaXRvcj1lLmVkaXRvcix0aGlzLnJhd0NvbW1hbmRzPXRoaXMuZWRpdG9yLmV4dGVuc2lvbk1hbmFnZXIuY29tbWFuZHMsdGhpcy5jdXN0b21TdGF0ZT1lLnN0YXRlfWdldCBoYXNDdXN0b21TdGF0ZSgpe3JldHVybiEhdGhpcy5jdXN0b21TdGF0ZX1nZXQgc3RhdGUoKXtyZXR1cm4gdGhpcy5jdXN0b21TdGF0ZXx8dGhpcy5lZGl0b3Iuc3RhdGV9Z2V0IGNvbW1hbmRzKCl7bGV0e3Jhd0NvbW1hbmRzOmUsZWRpdG9yOnQsc3RhdGU6YX09dGhpcyx7dmlldzpyfT10LHt0cjpufT1hLG89dGhpcy5idWlsZFByb3BzKG4pO3JldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoZSkubWFwKChbbCxwXSk9PltsLGkoKC4uLnUpPT57bGV0IGM9cCguLi51KShvKTtyZXR1cm4hbi5nZXRNZXRhKCJwcmV2ZW50RGlzcGF0Y2giKSYmIXRoaXMuaGFzQ3VzdG9tU3RhdGUmJnIuZGlzcGF0Y2gobiksY30sIm1ldGhvZCIpXSkpfWdldCBjaGFpbigpe3JldHVybigpPT50aGlzLmNyZWF0ZUNoYWluKCl9Z2V0IGNhbigpe3JldHVybigpPT50aGlzLmNyZWF0ZUNhbigpfWNyZWF0ZUNoYWluKGUsdD0hMCl7bGV0e3Jhd0NvbW1hbmRzOmEsZWRpdG9yOnIsc3RhdGU6bn09dGhpcyx7dmlldzpvfT1yLGw9W10scD0hIWUsZD1lfHxuLnRyLHU9aSgoKT0+KCFwJiZ0JiYhZC5nZXRNZXRhKCJwcmV2ZW50RGlzcGF0Y2giKSYmIXRoaXMuaGFzQ3VzdG9tU3RhdGUmJm8uZGlzcGF0Y2goZCksbC5ldmVyeShiPT5iPT09ITApKSwicnVuIiksYz17Li4uT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGEpLm1hcCgoW2Isdl0pPT5bYixpKCguLi5tKT0+e2xldCBmPXRoaXMuYnVpbGRQcm9wcyhkLHQpLHk9diguLi5tKShmKTtyZXR1cm4gbC5wdXNoKHkpLGN9LCJjaGFpbmVkQ29tbWFuZCIpXSkpLHJ1bjp1fTtyZXR1cm4gY31jcmVhdGVDYW4oZSl7bGV0e3Jhd0NvbW1hbmRzOnQsc3RhdGU6YX09dGhpcyxyPSExLG49ZXx8YS50cixvPXRoaXMuYnVpbGRQcm9wcyhuLHIpO3JldHVybnsuLi5PYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModCkubWFwKChbcCxkXSk9PltwLCguLi51KT0+ZCguLi51KSh7Li4ubyxkaXNwYXRjaDp2b2lkIDB9KV0pKSxjaGFpbjppKCgpPT50aGlzLmNyZWF0ZUNoYWluKG4sciksImNoYWluIil9fWJ1aWxkUHJvcHMoZSx0PSEwKXtsZXR7cmF3Q29tbWFuZHM6YSxlZGl0b3I6cixzdGF0ZTpufT10aGlzLHt2aWV3Om99PXIsbD17dHI6ZSxlZGl0b3I6cix2aWV3Om8sc3RhdGU6QXYoe3N0YXRlOm4sdHJhbnNhY3Rpb246ZX0pLGRpc3BhdGNoOnQ/KCk9Pnt9OnZvaWQgMCxjaGFpbjppKCgpPT50aGlzLmNyZWF0ZUNoYWluKGUsdCksImNoYWluIiksY2FuOmkoKCk9PnRoaXMuY3JlYXRlQ2FuKGUpLCJjYW4iKSxnZXQgY29tbWFuZHMoKXtyZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGEpLm1hcCgoW3AsZF0pPT5bcCwoLi4udSk9PmQoLi4udSkobCldKSl9fTtyZXR1cm4gbH19LFRhdD1jbGFzc3tzdGF0aWN7aSh0aGlzLCJFdmVudEVtaXR0ZXIiKX1jb25zdHJ1Y3Rvcigpe3RoaXMuY2FsbGJhY2tzPXt9fW9uKGUsdCl7cmV0dXJuIHRoaXMuY2FsbGJhY2tzW2VdfHwodGhpcy5jYWxsYmFja3NbZV09W10pLHRoaXMuY2FsbGJhY2tzW2VdLnB1c2godCksdGhpc31lbWl0KGUsLi4udCl7bGV0IGE9dGhpcy5jYWxsYmFja3NbZV07cmV0dXJuIGEmJmEuZm9yRWFjaChyPT5yLmFwcGx5KHRoaXMsdCkpLHRoaXN9b2ZmKGUsdCl7bGV0IGE9dGhpcy5jYWxsYmFja3NbZV07cmV0dXJuIGEmJih0P3RoaXMuY2FsbGJhY2tzW2VdPWEuZmlsdGVyKHI9PnIhPT10KTpkZWxldGUgdGhpcy5jYWxsYmFja3NbZV0pLHRoaXN9b25jZShlLHQpe2xldCBhPWkoKC4uLnIpPT57dGhpcy5vZmYoZSxhKSx0LmFwcGx5KHRoaXMscil9LCJvbmNlRm4iKTtyZXR1cm4gdGhpcy5vbihlLGEpfXJlbW92ZUFsbExpc3RlbmVycygpe3RoaXMuY2FsbGJhY2tzPXt9fX07aShEdCwiZ2V0RXh0ZW5zaW9uRmllbGQiKTtpKE52LCJzcGxpdEV4dGVuc2lvbnMiKTtpKHdsZSwiZ2V0QXR0cmlidXRlc0Zyb21FeHRlbnNpb25zIik7aShMciwiZ2V0Tm9kZVR5cGUiKTtpKGFzLCJtZXJnZUF0dHJpYnV0ZXMiKTtpKGlYLCJnZXRSZW5kZXJlZEF0dHJpYnV0ZXMiKTtpKGtsZSwiaXNGdW5jdGlvbiIpO2koY2EsImNhbGxPclJldHVybiIpO2koRWF0LCJpc0VtcHR5T2JqZWN0Iik7aShQYXQsImZyb21TdHJpbmciKTtpKFNsZSwiaW5qZWN0RXh0ZW5zaW9uQXR0cmlidXRlc1RvUGFyc2VSdWxlIik7aShnaGEsImNsZWFuVXBTY2hlbWFJdGVtIik7aShfbGUsImdldFNjaGVtYUJ5UmVzb2x2ZWRFeHRlbnNpb25zIik7aShyWCwiZ2V0U2NoZW1hVHlwZUJ5TmFtZSIpO2koTWxlLCJpc0V4dGVuc2lvblJ1bGVzRW5hYmxlZCIpO2koUnYsImdldEhUTUxGcm9tRnJhZ21lbnQiKTtJYXQ9aSgocyxlPTUwMCk9PntsZXQgdD0iIixhPXMucGFyZW50T2Zmc2V0O3JldHVybiBzLnBhcmVudC5ub2Rlc0JldHdlZW4oTWF0aC5tYXgoMCxhLWUpLGEsKHIsbixvLGwpPT57dmFyIHAsZDtsZXQgdT0oKGQ9KHA9ci50eXBlLnNwZWMpLnRvVGV4dCk9PT1udWxsfHxkPT09dm9pZCAwP3ZvaWQgMDpkLmNhbGwocCx7bm9kZTpyLHBvczpuLHBhcmVudDpvLGluZGV4Omx9KSl8fHIudGV4dENvbnRlbnR8fCIlbGVhZiUiO3QrPXIuaXNBdG9tJiYhci5pc1RleHQ/dTp1LnNsaWNlKDAsTWF0aC5tYXgoMCxhLW4pKX0pLHR9LCJnZXRUZXh0Q29udGVudEZyb21Ob2RlcyIpO2kob1gsImlzUmVnRXhwIik7dXU9Y2xhc3N7c3RhdGlje2kodGhpcywiSW5wdXRSdWxlIil9Y29uc3RydWN0b3IoZSl7dGhpcy5maW5kPWUuZmluZCx0aGlzLmhhbmRsZXI9ZS5oYW5kbGVyfX0sTFlhPWkoKHMsZSk9PntpZihvWChlKSlyZXR1cm4gZS5leGVjKHMpO2xldCB0PWUocyk7aWYoIXQpcmV0dXJuIG51bGw7bGV0IGE9W3QudGV4dF07cmV0dXJuIGEuaW5kZXg9dC5pbmRleCxhLmlucHV0PXMsYS5kYXRhPXQuZGF0YSx0LnJlcGxhY2VXaXRoJiYodC50ZXh0LmluY2x1ZGVzKHQucmVwbGFjZVdpdGgpfHxjb25zb2xlLndhcm4oJ1t0aXB0YXAgd2Fybl06ICJpbnB1dFJ1bGVNYXRjaC5yZXBsYWNlV2l0aCIgbXVzdCBiZSBwYXJ0IG9mICJpbnB1dFJ1bGVNYXRjaC50ZXh0Ii4nKSxhLnB1c2godC5yZXBsYWNlV2l0aCkpLGF9LCJpbnB1dFJ1bGVNYXRjaGVySGFuZGxlciIpO2kodmxlLCJydW4kMSIpO2koQWF0LCJpbnB1dFJ1bGVzUGx1Z2luIik7aShFWWEsImdldFR5cGUiKTtpKE92LCJpc1BsYWluT2JqZWN0Iik7aShGdiwibWVyZ2VEZWVwIik7RG89Y2xhc3Mgc3tzdGF0aWN7aSh0aGlzLCJNYXJrIil9Y29uc3RydWN0b3IoZT17fSl7dGhpcy50eXBlPSJtYXJrIix0aGlzLm5hbWU9Im1hcmsiLHRoaXMucGFyZW50PW51bGwsdGhpcy5jaGlsZD1udWxsLHRoaXMuY29uZmlnPXtuYW1lOnRoaXMubmFtZSxkZWZhdWx0T3B0aW9uczp7fX0sdGhpcy5jb25maWc9ey4uLnRoaXMuY29uZmlnLC4uLmV9LHRoaXMubmFtZT10aGlzLmNvbmZpZy5uYW1lLGUuZGVmYXVsdE9wdGlvbnMmJk9iamVjdC5rZXlzKGUuZGVmYXVsdE9wdGlvbnMpLmxlbmd0aD4wJiZjb25zb2xlLndhcm4oYFt0aXB0YXAgd2Fybl06IEJSRUFLSU5HIENIQU5HRTogImRlZmF1bHRPcHRpb25zIiBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlICJhZGRPcHRpb25zIiBpbnN0ZWFkLiBGb3VuZCBpbiBleHRlbnNpb246ICIke3RoaXMubmFtZX0iLmApLHRoaXMub3B0aW9ucz10aGlzLmNvbmZpZy5kZWZhdWx0T3B0aW9ucyx0aGlzLmNvbmZpZy5hZGRPcHRpb25zJiYodGhpcy5vcHRpb25zPWNhKER0KHRoaXMsImFkZE9wdGlvbnMiLHtuYW1lOnRoaXMubmFtZX0pKSksdGhpcy5zdG9yYWdlPWNhKER0KHRoaXMsImFkZFN0b3JhZ2UiLHtuYW1lOnRoaXMubmFtZSxvcHRpb25zOnRoaXMub3B0aW9uc30pKXx8e319c3RhdGljIGNyZWF0ZShlPXt9KXtyZXR1cm4gbmV3IHMoZSl9Y29uZmlndXJlKGU9e30pe2xldCB0PXRoaXMuZXh0ZW5kKHsuLi50aGlzLmNvbmZpZyxhZGRPcHRpb25zOmkoKCk9PkZ2KHRoaXMub3B0aW9ucyxlKSwiYWRkT3B0aW9ucyIpfSk7cmV0dXJuIHQubmFtZT10aGlzLm5hbWUsdC5wYXJlbnQ9dGhpcy5wYXJlbnQsdH1leHRlbmQoZT17fSl7bGV0IHQ9bmV3IHMoZSk7cmV0dXJuIHQucGFyZW50PXRoaXMsdGhpcy5jaGlsZD10LHQubmFtZT1lLm5hbWU/ZS5uYW1lOnQucGFyZW50Lm5hbWUsZS5kZWZhdWx0T3B0aW9ucyYmT2JqZWN0LmtleXMoZS5kZWZhdWx0T3B0aW9ucykubGVuZ3RoPjAmJmNvbnNvbGUud2FybihgW3RpcHRhcCB3YXJuXTogQlJFQUtJTkcgQ0hBTkdFOiAiZGVmYXVsdE9wdGlvbnMiIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgImFkZE9wdGlvbnMiIGluc3RlYWQuIEZvdW5kIGluIGV4dGVuc2lvbjogIiR7dC5uYW1lfSIuYCksdC5vcHRpb25zPWNhKER0KHQsImFkZE9wdGlvbnMiLHtuYW1lOnQubmFtZX0pKSx0LnN0b3JhZ2U9Y2EoRHQodCwiYWRkU3RvcmFnZSIse25hbWU6dC5uYW1lLG9wdGlvbnM6dC5vcHRpb25zfSkpLHR9c3RhdGljIGhhbmRsZUV4aXQoe2VkaXRvcjplLG1hcms6dH0pe2xldHt0cjphfT1lLnN0YXRlLHI9ZS5zdGF0ZS5zZWxlY3Rpb24uJGZyb207aWYoci5wb3M9PT1yLmVuZCgpKXtsZXQgbz1yLm1hcmtzKCk7aWYoISEhby5maW5kKGQ9PmQ/LnR5cGUubmFtZT09PXQubmFtZSkpcmV0dXJuITE7bGV0IHA9by5maW5kKGQ9PmQ/LnR5cGUubmFtZT09PXQubmFtZSk7cmV0dXJuIHAmJmEucmVtb3ZlU3RvcmVkTWFyayhwKSxhLmluc2VydFRleHQoIiAiLHIucG9zKSxlLnZpZXcuZGlzcGF0Y2goYSksITB9cmV0dXJuITF9fTtpKE5hdCwiaXNOdW1iZXIiKTtvZz1jbGFzc3tzdGF0aWN7aSh0aGlzLCJQYXN0ZVJ1bGUiKX1jb25zdHJ1Y3RvcihlKXt0aGlzLmZpbmQ9ZS5maW5kLHRoaXMuaGFuZGxlcj1lLmhhbmRsZXJ9fSxQWWE9aSgocyxlLHQpPT57aWYob1goZSkpcmV0dXJuWy4uLnMubWF0Y2hBbGwoZSldO2xldCBhPWUocyx0KTtyZXR1cm4gYT9hLm1hcChyPT57bGV0IG49W3IudGV4dF07cmV0dXJuIG4uaW5kZXg9ci5pbmRleCxuLmlucHV0PXMsbi5kYXRhPXIuZGF0YSxyLnJlcGxhY2VXaXRoJiYoci50ZXh0LmluY2x1ZGVzKHIucmVwbGFjZVdpdGgpfHxjb25zb2xlLndhcm4oJ1t0aXB0YXAgd2Fybl06ICJwYXN0ZVJ1bGVNYXRjaC5yZXBsYWNlV2l0aCIgbXVzdCBiZSBwYXJ0IG9mICJwYXN0ZVJ1bGVNYXRjaC50ZXh0Ii4nKSxuLnB1c2goci5yZXBsYWNlV2l0aCkpLG59KTpbXX0sInBhc3RlUnVsZU1hdGNoZXJIYW5kbGVyIik7aShJWWEsInJ1biIpO3hsZT1udWxsLEFZYT1pKHM9Pnt2YXIgZTtsZXQgdD1uZXcgQ2xpcGJvYXJkRXZlbnQoInBhc3RlIix7Y2xpcGJvYXJkRGF0YTpuZXcgRGF0YVRyYW5zZmVyfSk7cmV0dXJuKGU9dC5jbGlwYm9hcmREYXRhKT09PW51bGx8fGU9PT12b2lkIDB8fGUuc2V0RGF0YSgidGV4dC9odG1sIixzKSx0fSwiY3JlYXRlQ2xpcGJvYXJkUGFzdGVFdmVudCIpO2koUmF0LCJwYXN0ZVJ1bGVzUGx1Z2luIik7aShPYXQsImZpbmREdXBsaWNhdGVzIik7eWxlPWNsYXNzIHN7c3RhdGlje2kodGhpcywiRXh0ZW5zaW9uTWFuYWdlciIpfWNvbnN0cnVjdG9yKGUsdCl7dGhpcy5zcGxpdHRhYmxlTWFya3M9W10sdGhpcy5lZGl0b3I9dCx0aGlzLmV4dGVuc2lvbnM9cy5yZXNvbHZlKGUpLHRoaXMuc2NoZW1hPV9sZSh0aGlzLmV4dGVuc2lvbnMsdCksdGhpcy5zZXR1cEV4dGVuc2lvbnMoKX1zdGF0aWMgcmVzb2x2ZShlKXtsZXQgdD1zLnNvcnQocy5mbGF0dGVuKGUpKSxhPU9hdCh0Lm1hcChyPT5yLm5hbWUpKTtyZXR1cm4gYS5sZW5ndGgmJmNvbnNvbGUud2FybihgW3RpcHRhcCB3YXJuXTogRHVwbGljYXRlIGV4dGVuc2lvbiBuYW1lcyBmb3VuZDogWyR7YS5tYXAocj0+YCcke3J9J2ApLmpvaW4oIiwgIil9XS4gVGhpcyBjYW4gbGVhZCB0byBpc3N1ZXMuYCksdH1zdGF0aWMgZmxhdHRlbihlKXtyZXR1cm4gZS5tYXAodD0+e2xldCBhPXtuYW1lOnQubmFtZSxvcHRpb25zOnQub3B0aW9ucyxzdG9yYWdlOnQuc3RvcmFnZX0scj1EdCh0LCJhZGRFeHRlbnNpb25zIixhKTtyZXR1cm4gcj9bdCwuLi50aGlzLmZsYXR0ZW4ocigpKV06dH0pLmZsYXQoMTApfXN0YXRpYyBzb3J0KGUpe3JldHVybiBlLnNvcnQoKGEscik9PntsZXQgbj1EdChhLCJwcmlvcml0eSIpfHwxMDAsbz1EdChyLCJwcmlvcml0eSIpfHwxMDA7cmV0dXJuIG4+bz8tMTpuPG8/MTowfSl9Z2V0IGNvbW1hbmRzKCl7cmV0dXJuIHRoaXMuZXh0ZW5zaW9ucy5yZWR1Y2UoKGUsdCk9PntsZXQgYT17bmFtZTp0Lm5hbWUsb3B0aW9uczp0Lm9wdGlvbnMsc3RvcmFnZTp0LnN0b3JhZ2UsZWRpdG9yOnRoaXMuZWRpdG9yLHR5cGU6clgodC5uYW1lLHRoaXMuc2NoZW1hKX0scj1EdCh0LCJhZGRDb21tYW5kcyIsYSk7cmV0dXJuIHI/ey4uLmUsLi4ucigpfTplfSx7fSl9Z2V0IHBsdWdpbnMoKXtsZXR7ZWRpdG9yOmV9PXRoaXMsdD1zLnNvcnQoWy4uLnRoaXMuZXh0ZW5zaW9uc10ucmV2ZXJzZSgpKSxhPVtdLHI9W10sbj10Lm1hcChvPT57bGV0IGw9e25hbWU6by5uYW1lLG9wdGlvbnM6by5vcHRpb25zLHN0b3JhZ2U6by5zdG9yYWdlLGVkaXRvcjplLHR5cGU6clgoby5uYW1lLHRoaXMuc2NoZW1hKX0scD1bXSxkPUR0KG8sImFkZEtleWJvYXJkU2hvcnRjdXRzIixsKSx1PXt9O2lmKG8udHlwZT09PSJtYXJrIiYmRHQobywiZXhpdGFibGUiLGwpJiYodS5BcnJvd1JpZ2h0PSgpPT5Eby5oYW5kbGVFeGl0KHtlZGl0b3I6ZSxtYXJrOm99KSksZCl7bGV0IG09T2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGQoKSkubWFwKChbZix5XSk9PltmLCgpPT55KHtlZGl0b3I6ZX0pXSkpO3U9ey4uLnUsLi4ubX19bGV0IGM9Y2F0KHUpO3AucHVzaChjKTtsZXQgYj1EdChvLCJhZGRJbnB1dFJ1bGVzIixsKTtNbGUobyxlLm9wdGlvbnMuZW5hYmxlSW5wdXRSdWxlcykmJmImJmEucHVzaCguLi5iKCkpO2xldCB2PUR0KG8sImFkZFBhc3RlUnVsZXMiLGwpO01sZShvLGUub3B0aW9ucy5lbmFibGVQYXN0ZVJ1bGVzKSYmdiYmci5wdXNoKC4uLnYoKSk7bGV0IHg9RHQobywiYWRkUHJvc2VNaXJyb3JQbHVnaW5zIixsKTtpZih4KXtsZXQgbT14KCk7cC5wdXNoKC4uLm0pfXJldHVybiBwfSkuZmxhdCgpO3JldHVybltBYXQoe2VkaXRvcjplLHJ1bGVzOmF9KSwuLi5SYXQoe2VkaXRvcjplLHJ1bGVzOnJ9KSwuLi5uXX1nZXQgYXR0cmlidXRlcygpe3JldHVybiB3bGUodGhpcy5leHRlbnNpb25zKX1nZXQgbm9kZVZpZXdzKCl7bGV0e2VkaXRvcjplfT10aGlzLHtub2RlRXh0ZW5zaW9uczp0fT1Odih0aGlzLmV4dGVuc2lvbnMpO3JldHVybiBPYmplY3QuZnJvbUVudHJpZXModC5maWx0ZXIoYT0+ISFEdChhLCJhZGROb2RlVmlldyIpKS5tYXAoYT0+e2xldCByPXRoaXMuYXR0cmlidXRlcy5maWx0ZXIocD0+cC50eXBlPT09YS5uYW1lKSxuPXtuYW1lOmEubmFtZSxvcHRpb25zOmEub3B0aW9ucyxzdG9yYWdlOmEuc3RvcmFnZSxlZGl0b3I6ZSx0eXBlOkxyKGEubmFtZSx0aGlzLnNjaGVtYSl9LG89RHQoYSwiYWRkTm9kZVZpZXciLG4pO2lmKCFvKXJldHVybltdO2xldCBsPWkoKHAsZCx1LGMsYik9PntsZXQgdj1pWChwLHIpO3JldHVybiBvKCkoe25vZGU6cCx2aWV3OmQsZ2V0UG9zOnUsZGVjb3JhdGlvbnM6Yyxpbm5lckRlY29yYXRpb25zOmIsZWRpdG9yOmUsZXh0ZW5zaW9uOmEsSFRNTEF0dHJpYnV0ZXM6dn0pfSwibm9kZXZpZXciKTtyZXR1cm5bYS5uYW1lLGxdfSkpfXNldHVwRXh0ZW5zaW9ucygpe3RoaXMuZXh0ZW5zaW9ucy5mb3JFYWNoKGU9Pnt2YXIgdDt0aGlzLmVkaXRvci5leHRlbnNpb25TdG9yYWdlW2UubmFtZV09ZS5zdG9yYWdlO2xldCBhPXtuYW1lOmUubmFtZSxvcHRpb25zOmUub3B0aW9ucyxzdG9yYWdlOmUuc3RvcmFnZSxlZGl0b3I6dGhpcy5lZGl0b3IsdHlwZTpyWChlLm5hbWUsdGhpcy5zY2hlbWEpfTtlLnR5cGU9PT0ibWFyayImJighKCh0PWNhKER0KGUsImtlZXBPblNwbGl0IixhKSkpIT09bnVsbCYmdCE9PXZvaWQgMCl8fHQpJiZ0aGlzLnNwbGl0dGFibGVNYXJrcy5wdXNoKGUubmFtZSk7bGV0IHI9RHQoZSwib25CZWZvcmVDcmVhdGUiLGEpLG49RHQoZSwib25DcmVhdGUiLGEpLG89RHQoZSwib25VcGRhdGUiLGEpLGw9RHQoZSwib25TZWxlY3Rpb25VcGRhdGUiLGEpLHA9RHQoZSwib25UcmFuc2FjdGlvbiIsYSksZD1EdChlLCJvbkZvY3VzIixhKSx1PUR0KGUsIm9uQmx1ciIsYSksYz1EdChlLCJvbkRlc3Ryb3kiLGEpO3ImJnRoaXMuZWRpdG9yLm9uKCJiZWZvcmVDcmVhdGUiLHIpLG4mJnRoaXMuZWRpdG9yLm9uKCJjcmVhdGUiLG4pLG8mJnRoaXMuZWRpdG9yLm9uKCJ1cGRhdGUiLG8pLGwmJnRoaXMuZWRpdG9yLm9uKCJzZWxlY3Rpb25VcGRhdGUiLGwpLHAmJnRoaXMuZWRpdG9yLm9uKCJ0cmFuc2FjdGlvbiIscCksZCYmdGhpcy5lZGl0b3Iub24oImZvY3VzIixkKSx1JiZ0aGlzLmVkaXRvci5vbigiYmx1ciIsdSksYyYmdGhpcy5lZGl0b3Iub24oImRlc3Ryb3kiLGMpfSl9fSx3aT1jbGFzcyBze3N0YXRpY3tpKHRoaXMsIkV4dGVuc2lvbiIpfWNvbnN0cnVjdG9yKGU9e30pe3RoaXMudHlwZT0iZXh0ZW5zaW9uIix0aGlzLm5hbWU9ImV4dGVuc2lvbiIsdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkPW51bGwsdGhpcy5jb25maWc9e25hbWU6dGhpcy5uYW1lLGRlZmF1bHRPcHRpb25zOnt9fSx0aGlzLmNvbmZpZz17Li4udGhpcy5jb25maWcsLi4uZX0sdGhpcy5uYW1lPXRoaXMuY29uZmlnLm5hbWUsZS5kZWZhdWx0T3B0aW9ucyYmT2JqZWN0LmtleXMoZS5kZWZhdWx0T3B0aW9ucykubGVuZ3RoPjAmJmNvbnNvbGUud2FybihgW3RpcHRhcCB3YXJuXTogQlJFQUtJTkcgQ0hBTkdFOiAiZGVmYXVsdE9wdGlvbnMiIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgImFkZE9wdGlvbnMiIGluc3RlYWQuIEZvdW5kIGluIGV4dGVuc2lvbjogIiR7dGhpcy5uYW1lfSIuYCksdGhpcy5vcHRpb25zPXRoaXMuY29uZmlnLmRlZmF1bHRPcHRpb25zLHRoaXMuY29uZmlnLmFkZE9wdGlvbnMmJih0aGlzLm9wdGlvbnM9Y2EoRHQodGhpcywiYWRkT3B0aW9ucyIse25hbWU6dGhpcy5uYW1lfSkpKSx0aGlzLnN0b3JhZ2U9Y2EoRHQodGhpcywiYWRkU3RvcmFnZSIse25hbWU6dGhpcy5uYW1lLG9wdGlvbnM6dGhpcy5vcHRpb25zfSkpfHx7fX1zdGF0aWMgY3JlYXRlKGU9e30pe3JldHVybiBuZXcgcyhlKX1jb25maWd1cmUoZT17fSl7bGV0IHQ9dGhpcy5leHRlbmQoey4uLnRoaXMuY29uZmlnLGFkZE9wdGlvbnM6aSgoKT0+RnYodGhpcy5vcHRpb25zLGUpLCJhZGRPcHRpb25zIil9KTtyZXR1cm4gdC5uYW1lPXRoaXMubmFtZSx0LnBhcmVudD10aGlzLnBhcmVudCx0fWV4dGVuZChlPXt9KXtsZXQgdD1uZXcgcyh7Li4udGhpcy5jb25maWcsLi4uZX0pO3JldHVybiB0LnBhcmVudD10aGlzLHRoaXMuY2hpbGQ9dCx0Lm5hbWU9ZS5uYW1lP2UubmFtZTp0LnBhcmVudC5uYW1lLGUuZGVmYXVsdE9wdGlvbnMmJk9iamVjdC5rZXlzKGUuZGVmYXVsdE9wdGlvbnMpLmxlbmd0aD4wJiZjb25zb2xlLndhcm4oYFt0aXB0YXAgd2Fybl06IEJSRUFLSU5HIENIQU5HRTogImRlZmF1bHRPcHRpb25zIiBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlICJhZGRPcHRpb25zIiBpbnN0ZWFkLiBGb3VuZCBpbiBleHRlbnNpb246ICIke3QubmFtZX0iLmApLHQub3B0aW9ucz1jYShEdCh0LCJhZGRPcHRpb25zIix7bmFtZTp0Lm5hbWV9KSksdC5zdG9yYWdlPWNhKER0KHQsImFkZFN0b3JhZ2UiLHtuYW1lOnQubmFtZSxvcHRpb25zOnQub3B0aW9uc30pKSx0fX07aSh6bGUsImdldFRleHRCZXR3ZWVuIik7aShuWCwiZ2V0VGV4dFNlcmlhbGl6ZXJzRnJvbVNjaGVtYSIpO2JoYT13aS5jcmVhdGUoe25hbWU6ImNsaXBib2FyZFRleHRTZXJpYWxpemVyIixhZGRPcHRpb25zKCl7cmV0dXJue2Jsb2NrU2VwYXJhdG9yOnZvaWQgMH19LGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3JldHVybltuZXcgWXMoe2tleTpuZXcgJHIoImNsaXBib2FyZFRleHRTZXJpYWxpemVyIikscHJvcHM6e2NsaXBib2FyZFRleHRTZXJpYWxpemVyOmkoKCk9PntsZXR7ZWRpdG9yOnN9PXRoaXMse3N0YXRlOmUsc2NoZW1hOnR9PXMse2RvYzphLHNlbGVjdGlvbjpyfT1lLHtyYW5nZXM6bn09cixvPU1hdGgubWluKC4uLm4ubWFwKHU9PnUuJGZyb20ucG9zKSksbD1NYXRoLm1heCguLi5uLm1hcCh1PT51LiR0by5wb3MpKSxwPW5YKHQpO3JldHVybiB6bGUoYSx7ZnJvbTpvLHRvOmx9LHsuLi50aGlzLm9wdGlvbnMuYmxvY2tTZXBhcmF0b3IhPT12b2lkIDA/e2Jsb2NrU2VwYXJhdG9yOnRoaXMub3B0aW9ucy5ibG9ja1NlcGFyYXRvcn06e30sdGV4dFNlcmlhbGl6ZXJzOnB9KX0sImNsaXBib2FyZFRleHRTZXJpYWxpemVyIil9fSldfX0pLE5ZYT1pKCgpPT4oe2VkaXRvcjpzLHZpZXc6ZX0pPT4ocmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dmFyIHQ7cy5pc0Rlc3Ryb3llZHx8KGUuZG9tLmJsdXIoKSwodD13aW5kb3c/LmdldFNlbGVjdGlvbigpKT09PW51bGx8fHQ9PT12b2lkIDB8fHQucmVtb3ZlQWxsUmFuZ2VzKCkpfSksITApLCJibHVyIiksUllhPWkoKHM9ITEpPT4oe2NvbW1hbmRzOmV9KT0+ZS5zZXRDb250ZW50KCIiLHMpLCJjbGVhckNvbnRlbnQiKSxPWWE9aSgoKT0+KHtzdGF0ZTpzLHRyOmUsZGlzcGF0Y2g6dH0pPT57bGV0e3NlbGVjdGlvbjphfT1lLHtyYW5nZXM6cn09YTtyZXR1cm4gdCYmci5mb3JFYWNoKCh7JGZyb206biwkdG86b30pPT57cy5kb2Mubm9kZXNCZXR3ZWVuKG4ucG9zLG8ucG9zLChsLHApPT57aWYobC50eXBlLmlzVGV4dClyZXR1cm47bGV0e2RvYzpkLG1hcHBpbmc6dX09ZSxjPWQucmVzb2x2ZSh1Lm1hcChwKSksYj1kLnJlc29sdmUodS5tYXAocCtsLm5vZGVTaXplKSksdj1jLmJsb2NrUmFuZ2UoYik7aWYoIXYpcmV0dXJuO2xldCB4PVBkKHYpO2lmKGwudHlwZS5pc1RleHRibG9jayl7bGV0e2RlZmF1bHRUeXBlOm19PWMucGFyZW50LmNvbnRlbnRNYXRjaEF0KGMuaW5kZXgoKSk7ZS5zZXROb2RlTWFya3VwKHYuc3RhcnQsbSl9KHh8fHg9PT0wKSYmZS5saWZ0KHYseCl9KX0pLCEwfSwiY2xlYXJOb2RlcyIpLEZZYT1pKHM9PmU9PnMoZSksImNvbW1hbmQiKSxCWWE9aSgoKT0+KHtzdGF0ZTpzLGRpc3BhdGNoOmV9KT0+aGxlKHMsZSksImNyZWF0ZVBhcmFncmFwaE5lYXIiKSxIWWE9aSgocyxlKT0+KHtlZGl0b3I6dCx0cjphfSk9PntsZXR7c3RhdGU6cn09dCxuPXIuZG9jLnNsaWNlKHMuZnJvbSxzLnRvKTthLmRlbGV0ZVJhbmdlKHMuZnJvbSxzLnRvKTtsZXQgbz1hLm1hcHBpbmcubWFwKGUpO3JldHVybiBhLmluc2VydChvLG4uY29udGVudCksYS5zZXRTZWxlY3Rpb24obmV3IEp0KGEuZG9jLnJlc29sdmUoTWF0aC5tYXgoby0xLDApKSkpLCEwfSwiY3V0IikscVlhPWkoKCk9Pih7dHI6cyxkaXNwYXRjaDplfSk9PntsZXR7c2VsZWN0aW9uOnR9PXMsYT10LiRhbmNob3Iubm9kZSgpO2lmKGEuY29udGVudC5zaXplPjApcmV0dXJuITE7bGV0IHI9cy5zZWxlY3Rpb24uJGFuY2hvcjtmb3IobGV0IG49ci5kZXB0aDtuPjA7bi09MSlpZihyLm5vZGUobikudHlwZT09PWEudHlwZSl7aWYoZSl7bGV0IGw9ci5iZWZvcmUobikscD1yLmFmdGVyKG4pO3MuZGVsZXRlKGwscCkuc2Nyb2xsSW50b1ZpZXcoKX1yZXR1cm4hMH1yZXR1cm4hMX0sImRlbGV0ZUN1cnJlbnROb2RlIiksallhPWkocz0+KHt0cjplLHN0YXRlOnQsZGlzcGF0Y2g6YX0pPT57bGV0IHI9THIocyx0LnNjaGVtYSksbj1lLnNlbGVjdGlvbi4kYW5jaG9yO2ZvcihsZXQgbz1uLmRlcHRoO28+MDtvLT0xKWlmKG4ubm9kZShvKS50eXBlPT09cil7aWYoYSl7bGV0IHA9bi5iZWZvcmUobyksZD1uLmFmdGVyKG8pO2UuZGVsZXRlKHAsZCkuc2Nyb2xsSW50b1ZpZXcoKX1yZXR1cm4hMH1yZXR1cm4hMX0sImRlbGV0ZU5vZGUiKSxWWWE9aShzPT4oe3RyOmUsZGlzcGF0Y2g6dH0pPT57bGV0e2Zyb206YSx0bzpyfT1zO3JldHVybiB0JiZlLmRlbGV0ZShhLHIpLCEwfSwiZGVsZXRlUmFuZ2UiKSxVWWE9aSgoKT0+KHtzdGF0ZTpzLGRpc3BhdGNoOmV9KT0+c1gocyxlKSwiZGVsZXRlU2VsZWN0aW9uIiksV1lhPWkoKCk9Pih7Y29tbWFuZHM6c30pPT5zLmtleWJvYXJkU2hvcnRjdXQoIkVudGVyIiksImVudGVyIiksR1lhPWkoKCk9Pih7c3RhdGU6cyxkaXNwYXRjaDplfSk9PnBsZShzLGUpLCJleGl0Q29kZSIpO2koQnYsIm9iamVjdEluY2x1ZGVzIik7aSh2aGEsImZpbmRNYXJrSW5TZXQiKTtpKHhoYSwiaXNNYXJrSW5TZXQiKTtpKGxYLCJnZXRNYXJrUmFuZ2UiKTtpKFJkLCJnZXRNYXJrVHlwZSIpO0tZYT1pKChzLGU9e30pPT4oe3RyOnQsc3RhdGU6YSxkaXNwYXRjaDpyfSk9PntsZXQgbj1SZChzLGEuc2NoZW1hKSx7ZG9jOm8sc2VsZWN0aW9uOmx9PXQseyRmcm9tOnAsZnJvbTpkLHRvOnV9PWw7aWYocil7bGV0IGM9bFgocCxuLGUpO2lmKGMmJmMuZnJvbTw9ZCYmYy50bz49dSl7bGV0IGI9SnQuY3JlYXRlKG8sYy5mcm9tLGMudG8pO3Quc2V0U2VsZWN0aW9uKGIpfX1yZXR1cm4hMH0sImV4dGVuZE1hcmtSYW5nZSIpLFlZYT1pKHM9PmU9PntsZXQgdD10eXBlb2Ygcz09ImZ1bmN0aW9uIj9zKGUpOnM7Zm9yKGxldCBhPTA7YTx0Lmxlbmd0aDthKz0xKWlmKHRbYV0oZSkpcmV0dXJuITA7cmV0dXJuITF9LCJmaXJzdCIpO2koQ2xlLCJpc1RleHRTZWxlY3Rpb24iKTtpKGEyLCJtaW5NYXgiKTtpKFRsZSwicmVzb2x2ZUZvY3VzUG9zaXRpb24iKTtpKCRhdCwiaXNBbmRyb2lkIik7aShuZywiaXNpT1MiKTtpKEZhdCwiaXNTYWZhcmkiKTtaWWE9aSgocz1udWxsLGU9e30pPT4oe2VkaXRvcjp0LHZpZXc6YSx0cjpyLGRpc3BhdGNoOm59KT0+e2U9e3Njcm9sbEludG9WaWV3OiEwLC4uLmV9O2xldCBvPWkoKCk9PnsobmcoKXx8JGF0KCkpJiZhLmRvbS5mb2N1cygpLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3QuaXNEZXN0cm95ZWR8fChhLmZvY3VzKCksRmF0KCkmJiFuZygpJiYhJGF0KCkmJmEuZG9tLmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSkpfSl9LCJkZWxheWVkRm9jdXMiKTtpZihhLmhhc0ZvY3VzKCkmJnM9PT1udWxsfHxzPT09ITEpcmV0dXJuITA7aWYobiYmcz09PW51bGwmJiFDbGUodC5zdGF0ZS5zZWxlY3Rpb24pKXJldHVybiBvKCksITA7bGV0IGw9VGxlKHIuZG9jLHMpfHx0LnN0YXRlLnNlbGVjdGlvbixwPXQuc3RhdGUuc2VsZWN0aW9uLmVxKGwpO3JldHVybiBuJiYocHx8ci5zZXRTZWxlY3Rpb24obCkscCYmci5zdG9yZWRNYXJrcyYmci5zZXRTdG9yZWRNYXJrcyhyLnN0b3JlZE1hcmtzKSxvKCkpLCEwfSwiZm9jdXMiKSxYWWE9aSgocyxlKT0+dD0+cy5ldmVyeSgoYSxyKT0+ZShhLHsuLi50LGluZGV4OnJ9KSksImZvckVhY2giKSxRWWE9aSgocyxlKT0+KHt0cjp0LGNvbW1hbmRzOmF9KT0+YS5pbnNlcnRDb250ZW50QXQoe2Zyb206dC5zZWxlY3Rpb24uZnJvbSx0bzp0LnNlbGVjdGlvbi50b30scyxlKSwiaW5zZXJ0Q29udGVudCIpLHloYT1pKHM9PntsZXQgZT1zLmNoaWxkTm9kZXM7Zm9yKGxldCB0PWUubGVuZ3RoLTE7dD49MDt0LT0xKXtsZXQgYT1lW3RdO2Eubm9kZVR5cGU9PT0zJiZhLm5vZGVWYWx1ZSYmL14oXG5cc1xzfFxuKSQvLnRlc3QoYS5ub2RlVmFsdWUpP3MucmVtb3ZlQ2hpbGQoYSk6YS5ub2RlVHlwZT09PTEmJnloYShhKX1yZXR1cm4gc30sInJlbW92ZVdoaXRlc3BhY2VzIik7aShsZywiZWxlbWVudEZyb21TdHJpbmciKTtpKGNnLCJjcmVhdGVOb2RlRnJvbUNvbnRlbnQiKTtpKEJhdCwic2VsZWN0aW9uVG9JbnNlcnRpb25FbmQiKTtKWWE9aShzPT4hKCJ0eXBlImluIHMpLCJpc0ZyYWdtZW50IiksZVphPWkoKHMsZSx0KT0+KHt0cjphLGRpc3BhdGNoOnIsZWRpdG9yOm59KT0+e3ZhciBvO2lmKHIpe3Q9e3BhcnNlT3B0aW9uczpuLm9wdGlvbnMucGFyc2VPcHRpb25zLHVwZGF0ZVNlbGVjdGlvbjohMCxhcHBseUlucHV0UnVsZXM6ITEsYXBwbHlQYXN0ZVJ1bGVzOiExLC4uLnR9O2xldCBsLHA9aShmPT57bi5lbWl0KCJjb250ZW50RXJyb3IiLHtlZGl0b3I6bixlcnJvcjpmLGRpc2FibGVDb2xsYWJvcmF0aW9uOmkoKCk9PntuLnN0b3JhZ2UuY29sbGFib3JhdGlvbiYmKG4uc3RvcmFnZS5jb2xsYWJvcmF0aW9uLmlzRGlzYWJsZWQ9ITApfSwiZGlzYWJsZUNvbGxhYm9yYXRpb24iKX0pfSwiZW1pdENvbnRlbnRFcnJvciIpLGQ9e3ByZXNlcnZlV2hpdGVzcGFjZToiZnVsbCIsLi4udC5wYXJzZU9wdGlvbnN9O2lmKCF0LmVycm9yT25JbnZhbGlkQ29udGVudCYmIW4ub3B0aW9ucy5lbmFibGVDb250ZW50Q2hlY2smJm4ub3B0aW9ucy5lbWl0Q29udGVudEVycm9yKXRyeXtjZyhlLG4uc2NoZW1hLHtwYXJzZU9wdGlvbnM6ZCxlcnJvck9uSW52YWxpZENvbnRlbnQ6ITB9KX1jYXRjaChmKXtwKGYpfXRyeXtsPWNnKGUsbi5zY2hlbWEse3BhcnNlT3B0aW9uczpkLGVycm9yT25JbnZhbGlkQ29udGVudDoobz10LmVycm9yT25JbnZhbGlkQ29udGVudCkhPT1udWxsJiZvIT09dm9pZCAwP286bi5vcHRpb25zLmVuYWJsZUNvbnRlbnRDaGVja30pfWNhdGNoKGYpe3JldHVybiBwKGYpLCExfWxldHtmcm9tOnUsdG86Y309dHlwZW9mIHM9PSJudW1iZXIiP3tmcm9tOnMsdG86c306e2Zyb206cy5mcm9tLHRvOnMudG99LGI9ITAsdj0hMDtpZigoSllhKGwpP2w6W2xdKS5mb3JFYWNoKGY9PntmLmNoZWNrKCksYj1iP2YuaXNUZXh0JiZmLm1hcmtzLmxlbmd0aD09PTA6ITEsdj12P2YuaXNCbG9jazohMX0pLHU9PT1jJiZ2KXtsZXR7cGFyZW50OmZ9PWEuZG9jLnJlc29sdmUodSk7Zi5pc1RleHRibG9jayYmIWYudHlwZS5zcGVjLmNvZGUmJiFmLmNoaWxkQ291bnQmJih1LT0xLGMrPTEpfWxldCBtO2lmKGIpe2lmKEFycmF5LmlzQXJyYXkoZSkpbT1lLm1hcChmPT5mLnRleHR8fCIiKS5qb2luKCIiKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBydCl7bGV0IGY9IiI7ZS5mb3JFYWNoKHk9Pnt5LnRleHQmJihmKz15LnRleHQpfSksbT1mfWVsc2UgdHlwZW9mIGU9PSJvYmplY3QiJiZlJiZlLnRleHQ/bT1lLnRleHQ6bT1lO2EuaW5zZXJ0VGV4dChtLHUsYyl9ZWxzZSBtPWwsYS5yZXBsYWNlV2l0aCh1LGMsbSk7dC51cGRhdGVTZWxlY3Rpb24mJkJhdChhLGEuc3RlcHMubGVuZ3RoLTEsLTEpLHQuYXBwbHlJbnB1dFJ1bGVzJiZhLnNldE1ldGEoImFwcGx5SW5wdXRSdWxlcyIse2Zyb206dSx0ZXh0Om19KSx0LmFwcGx5UGFzdGVSdWxlcyYmYS5zZXRNZXRhKCJhcHBseVBhc3RlUnVsZXMiLHtmcm9tOnUsdGV4dDptfSl9cmV0dXJuITB9LCJpbnNlcnRDb250ZW50QXQiKSx0WmE9aSgoKT0+KHtzdGF0ZTpzLGRpc3BhdGNoOmV9KT0+eGF0KHMsZSksImpvaW5VcCIpLGFaYT1pKCgpPT4oe3N0YXRlOnMsZGlzcGF0Y2g6ZX0pPT55YXQocyxlKSwiam9pbkRvd24iKSxzWmE9aSgoKT0+KHtzdGF0ZTpzLGRpc3BhdGNoOmV9KT0+bmxlKHMsZSksImpvaW5CYWNrd2FyZCIpLGlaYT1pKCgpPT4oe3N0YXRlOnMsZGlzcGF0Y2g6ZX0pPT5jbGUocyxlKSwiam9pbkZvcndhcmQiKSxyWmE9aSgoKT0+KHtzdGF0ZTpzLGRpc3BhdGNoOmUsdHI6dH0pPT57dHJ5e2xldCBhPVk4KHMuZG9jLHMuc2VsZWN0aW9uLiRmcm9tLnBvcywtMSk7cmV0dXJuIGE9PW51bGw/ITE6KHQuam9pbihhLDIpLGUmJmUodCksITApfWNhdGNoe3JldHVybiExfX0sImpvaW5JdGVtQmFja3dhcmQiKSxvWmE9aSgoKT0+KHtzdGF0ZTpzLGRpc3BhdGNoOmUsdHI6dH0pPT57dHJ5e2xldCBhPVk4KHMuZG9jLHMuc2VsZWN0aW9uLiRmcm9tLnBvcywxKTtyZXR1cm4gYT09bnVsbD8hMToodC5qb2luKGEsMiksZSYmZSh0KSwhMCl9Y2F0Y2h7cmV0dXJuITF9fSwiam9pbkl0ZW1Gb3J3YXJkIiksblphPWkoKCk9Pih7c3RhdGU6cyxkaXNwYXRjaDplfSk9PmJhdChzLGUpLCJqb2luVGV4dGJsb2NrQmFja3dhcmQiKSxsWmE9aSgoKT0+KHtzdGF0ZTpzLGRpc3BhdGNoOmV9KT0+dmF0KHMsZSksImpvaW5UZXh0YmxvY2tGb3J3YXJkIik7aSgkbGUsImlzTWFjT1MiKTtpKGNaYSwibm9ybWFsaXplS2V5TmFtZSIpO2RaYT1pKHM9Pih7ZWRpdG9yOmUsdmlldzp0LHRyOmEsZGlzcGF0Y2g6cn0pPT57bGV0IG49Y1phKHMpLnNwbGl0KC8tKD8hJCkvKSxvPW4uZmluZChkPT4hWyJBbHQiLCJDdHJsIiwiTWV0YSIsIlNoaWZ0Il0uaW5jbHVkZXMoZCkpLGw9bmV3IEtleWJvYXJkRXZlbnQoImtleWRvd24iLHtrZXk6bz09PSJTcGFjZSI/IiAiOm8sYWx0S2V5Om4uaW5jbHVkZXMoIkFsdCIpLGN0cmxLZXk6bi5pbmNsdWRlcygiQ3RybCIpLG1ldGFLZXk6bi5pbmNsdWRlcygiTWV0YSIpLHNoaWZ0S2V5Om4uaW5jbHVkZXMoIlNoaWZ0IiksYnViYmxlczohMCxjYW5jZWxhYmxlOiEwfSkscD1lLmNhcHR1cmVUcmFuc2FjdGlvbigoKT0+e3Quc29tZVByb3AoImhhbmRsZUtleURvd24iLGQ9PmQodCxsKSl9KTtyZXR1cm4gcD8uc3RlcHMuZm9yRWFjaChkPT57bGV0IHU9ZC5tYXAoYS5tYXBwaW5nKTt1JiZyJiZhLm1heWJlU3RlcCh1KX0pLCEwfSwia2V5Ym9hcmRTaG9ydGN1dCIpO2koZGcsImlzTm9kZUFjdGl2ZSIpO3VaYT1pKChzLGU9e30pPT4oe3N0YXRlOnQsZGlzcGF0Y2g6YX0pPT57bGV0IHI9THIocyx0LnNjaGVtYSk7cmV0dXJuIGRnKHQscixlKT93YXQodCxhKTohMX0sImxpZnQiKSxwWmE9aSgoKT0+KHtzdGF0ZTpzLGRpc3BhdGNoOmV9KT0+ZmxlKHMsZSksImxpZnRFbXB0eUJsb2NrIiksaFphPWkocz0+KHtzdGF0ZTplLGRpc3BhdGNoOnR9KT0+e2xldCBhPUxyKHMsZS5zY2hlbWEpO3JldHVybiB6YXQoYSkoZSx0KX0sImxpZnRMaXN0SXRlbSIpLGZaYT1pKCgpPT4oe3N0YXRlOnMsZGlzcGF0Y2g6ZX0pPT51bGUocyxlKSwibmV3bGluZUluQ29kZSIpO2koSHYsImdldFNjaGVtYVR5cGVOYW1lQnlOYW1lIik7aShEbGUsImRlbGV0ZVByb3BzIik7bVphPWkoKHMsZSk9Pih7dHI6dCxzdGF0ZTphLGRpc3BhdGNoOnJ9KT0+e2xldCBuPW51bGwsbz1udWxsLGw9SHYodHlwZW9mIHM9PSJzdHJpbmciP3M6cy5uYW1lLGEuc2NoZW1hKTtyZXR1cm4gbD8obD09PSJub2RlIiYmKG49THIocyxhLnNjaGVtYSkpLGw9PT0ibWFyayImJihvPVJkKHMsYS5zY2hlbWEpKSxyJiZ0LnNlbGVjdGlvbi5yYW5nZXMuZm9yRWFjaChwPT57YS5kb2Mubm9kZXNCZXR3ZWVuKHAuJGZyb20ucG9zLHAuJHRvLnBvcywoZCx1KT0+e24mJm49PT1kLnR5cGUmJnQuc2V0Tm9kZU1hcmt1cCh1LHZvaWQgMCxEbGUoZC5hdHRycyxlKSksbyYmZC5tYXJrcy5sZW5ndGgmJmQubWFya3MuZm9yRWFjaChjPT57bz09PWMudHlwZSYmdC5hZGRNYXJrKHUsdStkLm5vZGVTaXplLG8uY3JlYXRlKERsZShjLmF0dHJzLGUpKSl9KX0pfSksITApOiExfSwicmVzZXRBdHRyaWJ1dGVzIiksZ1phPWkoKCk9Pih7dHI6cyxkaXNwYXRjaDplfSk9PihlJiZzLnNjcm9sbEludG9WaWV3KCksITApLCJzY3JvbGxJbnRvVmlldyIpLGJaYT1pKCgpPT4oe3RyOnMsZGlzcGF0Y2g6ZX0pPT57aWYoZSl7bGV0IHQ9bmV3IG5uKHMuZG9jKTtzLnNldFNlbGVjdGlvbih0KX1yZXR1cm4hMH0sInNlbGVjdEFsbCIpLHZaYT1pKCgpPT4oe3N0YXRlOnMsZGlzcGF0Y2g6ZX0pPT5sbGUocyxlKSwic2VsZWN0Tm9kZUJhY2t3YXJkIikseFphPWkoKCk9Pih7c3RhdGU6cyxkaXNwYXRjaDplfSk9PmRsZShzLGUpLCJzZWxlY3ROb2RlRm9yd2FyZCIpLHlaYT1pKCgpPT4oe3N0YXRlOnMsZGlzcGF0Y2g6ZX0pPT5rYXQocyxlKSwic2VsZWN0UGFyZW50Tm9kZSIpLHdaYT1pKCgpPT4oe3N0YXRlOnMsZGlzcGF0Y2g6ZX0pPT5nbGUocyxlKSwic2VsZWN0VGV4dGJsb2NrRW5kIiksa1phPWkoKCk9Pih7c3RhdGU6cyxkaXNwYXRjaDplfSk9Pm1sZShzLGUpLCJzZWxlY3RUZXh0YmxvY2tTdGFydCIpO2koY1gsImNyZWF0ZURvY3VtZW50Iik7U1phPWkoKHMsZT0hMSx0PXt9LGE9e30pPT4oe2VkaXRvcjpyLHRyOm4sZGlzcGF0Y2g6byxjb21tYW5kczpsfSk9Pnt2YXIgcCxkO2xldHtkb2M6dX09bjtpZih0LnByZXNlcnZlV2hpdGVzcGFjZSE9PSJmdWxsIil7bGV0IGM9Y1gocyxyLnNjaGVtYSx0LHtlcnJvck9uSW52YWxpZENvbnRlbnQ6KHA9YS5lcnJvck9uSW52YWxpZENvbnRlbnQpIT09bnVsbCYmcCE9PXZvaWQgMD9wOnIub3B0aW9ucy5lbmFibGVDb250ZW50Q2hlY2t9KTtyZXR1cm4gbyYmbi5yZXBsYWNlV2l0aCgwLHUuY29udGVudC5zaXplLGMpLnNldE1ldGEoInByZXZlbnRVcGRhdGUiLCFlKSwhMH1yZXR1cm4gbyYmbi5zZXRNZXRhKCJwcmV2ZW50VXBkYXRlIiwhZSksbC5pbnNlcnRDb250ZW50QXQoe2Zyb206MCx0bzp1LmNvbnRlbnQuc2l6ZX0scyx7cGFyc2VPcHRpb25zOnQsZXJyb3JPbkludmFsaWRDb250ZW50OihkPWEuZXJyb3JPbkludmFsaWRDb250ZW50KSE9PW51bGwmJmQhPT12b2lkIDA/ZDpyLm9wdGlvbnMuZW5hYmxlQ29udGVudENoZWNrfSl9LCJzZXRDb250ZW50Iik7aShMbGUsImdldE1hcmtBdHRyaWJ1dGVzIik7aShSbGUsImNvbWJpbmVUcmFuc2FjdGlvblN0ZXBzIik7aShIYXQsImRlZmF1bHRCbG9ja0F0Iik7aShMaGEsImZpbmRDaGlsZHJlbiIpO2koT2xlLCJmaW5kQ2hpbGRyZW5JblJhbmdlIik7aShxYXQsImZpbmRQYXJlbnROb2RlQ2xvc2VzdFRvUG9zIik7aShxdiwiZmluZFBhcmVudE5vZGUiKTtpKGRYLCJnZXRTY2hlbWEiKTtpKEVoYSwiZ2VuZXJhdGVIVE1MIik7aShQaGEsImdlbmVyYXRlSlNPTiIpO2koRWxlLCJnZXRUZXh0Iik7aShJaGEsImdlbmVyYXRlVGV4dCIpO2koamF0LCJnZXROb2RlQXR0cmlidXRlcyIpO2koZlgsImdldEF0dHJpYnV0ZXMiKTtpKFZhdCwicmVtb3ZlRHVwbGljYXRlcyIpO2koX1phLCJzaW1wbGlmeUNoYW5nZWRSYW5nZXMiKTtpKEZsZSwiZ2V0Q2hhbmdlZFJhbmdlcyIpO2koVWF0LCJnZXREZWJ1Z0pTT04iKTtpKFZ2LCJnZXRNYXJrc0JldHdlZW4iKTtBaGE9aSgocyxlLHQsYT0yMCk9PntsZXQgcj1zLmRvYy5yZXNvbHZlKHQpLG49YSxvPW51bGw7Zm9yKDtuPjAmJm89PT1udWxsOyl7bGV0IGw9ci5ub2RlKG4pO2w/LnR5cGUubmFtZT09PWU/bz1sOm4tPTF9cmV0dXJuW28sbl19LCJnZXROb2RlQXRQb3NpdGlvbiIpO2koanYsImdldFNwbGl0dGVkQXR0cmlidXRlcyIpO2kodVgsImlzTWFya0FjdGl2ZSIpO2koV2F0LCJpc0FjdGl2ZSIpO05oYT1pKChzLGUpPT57bGV0eyRmcm9tOnQsJHRvOmEsJGFuY2hvcjpyfT1zLnNlbGVjdGlvbjtpZihlKXtsZXQgbj1xdihsPT5sLnR5cGUubmFtZT09PWUpKHMuc2VsZWN0aW9uKTtpZighbilyZXR1cm4hMTtsZXQgbz1zLmRvYy5yZXNvbHZlKG4ucG9zKzEpO3JldHVybiByLnBvcysxPT09by5lbmQoKX1yZXR1cm4hKGEucGFyZW50T2Zmc2V0PGEucGFyZW50Lm5vZGVTaXplLTJ8fHQucG9zIT09YS5wb3MpfSwiaXNBdEVuZE9mTm9kZSIpLFJoYT1pKHM9PntsZXR7JGZyb206ZSwkdG86dH09cy5zZWxlY3Rpb247cmV0dXJuIShlLnBhcmVudE9mZnNldD4wfHxlLnBvcyE9PXQucG9zKX0sImlzQXRTdGFydE9mTm9kZSIpO2koUGxlLCJpc0xpc3QiKTtpKHBYLCJpc05vZGVFbXB0eSIpO2koQmxlLCJpc05vZGVTZWxlY3Rpb24iKTtpKE9oYSwicG9zVG9ET01SZWN0Iik7aSh3aGEsInJld3JpdGVVbmtub3duQ29udGVudElubmVyIik7aShGaGEsInJld3JpdGVVbmtub3duQ29udGVudCIpO2koTVphLCJjYW5TZXRNYXJrIik7elphPWkoKHMsZT17fSk9Pih7dHI6dCxzdGF0ZTphLGRpc3BhdGNoOnJ9KT0+e2xldHtzZWxlY3Rpb246bn09dCx7ZW1wdHk6byxyYW5nZXM6bH09bixwPVJkKHMsYS5zY2hlbWEpO2lmKHIpaWYobyl7bGV0IGQ9TGxlKGEscCk7dC5hZGRTdG9yZWRNYXJrKHAuY3JlYXRlKHsuLi5kLC4uLmV9KSl9ZWxzZSBsLmZvckVhY2goZD0+e2xldCB1PWQuJGZyb20ucG9zLGM9ZC4kdG8ucG9zO2EuZG9jLm5vZGVzQmV0d2Vlbih1LGMsKGIsdik9PntsZXQgeD1NYXRoLm1heCh2LHUpLG09TWF0aC5taW4oditiLm5vZGVTaXplLGMpO2IubWFya3MuZmluZCh5PT55LnR5cGU9PT1wKT9iLm1hcmtzLmZvckVhY2goeT0+e3A9PT15LnR5cGUmJnQuYWRkTWFyayh4LG0scC5jcmVhdGUoey4uLnkuYXR0cnMsLi4uZX0pKX0pOnQuYWRkTWFyayh4LG0scC5jcmVhdGUoZSkpfSl9KTtyZXR1cm4gTVphKGEsdCxwKX0sInNldE1hcmsiKSxDWmE9aSgocyxlKT0+KHt0cjp0fSk9Pih0LnNldE1ldGEocyxlKSwhMCksInNldE1ldGEiKSxUWmE9aSgocyxlPXt9KT0+KHtzdGF0ZTp0LGRpc3BhdGNoOmEsY2hhaW46cn0pPT57bGV0IG49THIocyx0LnNjaGVtYSksbztyZXR1cm4gdC5zZWxlY3Rpb24uJGFuY2hvci5zYW1lUGFyZW50KHQuc2VsZWN0aW9uLiRoZWFkKSYmKG89dC5zZWxlY3Rpb24uJGFuY2hvci5wYXJlbnQuYXR0cnMpLG4uaXNUZXh0YmxvY2s/cigpLmNvbW1hbmQoKHtjb21tYW5kczpsfSk9PmJsZShuLHsuLi5vLC4uLmV9KSh0KT8hMDpsLmNsZWFyTm9kZXMoKSkuY29tbWFuZCgoe3N0YXRlOmx9KT0+YmxlKG4sey4uLm8sLi4uZX0pKGwsYSkpLnJ1bigpOihjb25zb2xlLndhcm4oJ1t0aXB0YXAgd2Fybl06IEN1cnJlbnRseSAic2V0Tm9kZSgpIiBvbmx5IHN1cHBvcnRzIHRleHQgYmxvY2sgbm9kZXMuJyksITEpfSwic2V0Tm9kZSIpLCRaYT1pKHM9Pih7dHI6ZSxkaXNwYXRjaDp0fSk9PntpZih0KXtsZXR7ZG9jOmF9PWUscj1hMihzLDAsYS5jb250ZW50LnNpemUpLG49RnQuY3JlYXRlKGEscik7ZS5zZXRTZWxlY3Rpb24obil9cmV0dXJuITB9LCJzZXROb2RlU2VsZWN0aW9uIiksRFphPWkocz0+KHt0cjplLGRpc3BhdGNoOnR9KT0+e2lmKHQpe2xldHtkb2M6YX09ZSx7ZnJvbTpyLHRvOm59PXR5cGVvZiBzPT0ibnVtYmVyIj97ZnJvbTpzLHRvOnN9OnMsbz1KdC5hdFN0YXJ0KGEpLmZyb20sbD1KdC5hdEVuZChhKS50byxwPWEyKHIsbyxsKSxkPWEyKG4sbyxsKSx1PUp0LmNyZWF0ZShhLHAsZCk7ZS5zZXRTZWxlY3Rpb24odSl9cmV0dXJuITB9LCJzZXRUZXh0U2VsZWN0aW9uIiksTFphPWkocz0+KHtzdGF0ZTplLGRpc3BhdGNoOnR9KT0+e2xldCBhPUxyKHMsZS5zY2hlbWEpO3JldHVybiBDYXQoYSkoZSx0KX0sInNpbmtMaXN0SXRlbSIpO2koa2hhLCJlbnN1cmVNYXJrcyIpO0VaYT1pKCh7a2VlcE1hcmtzOnM9ITB9PXt9KT0+KHt0cjplLHN0YXRlOnQsZGlzcGF0Y2g6YSxlZGl0b3I6cn0pPT57bGV0e3NlbGVjdGlvbjpuLGRvYzpvfT1lLHskZnJvbTpsLCR0bzpwfT1uLGQ9ci5leHRlbnNpb25NYW5hZ2VyLmF0dHJpYnV0ZXMsdT1qdihkLGwubm9kZSgpLnR5cGUubmFtZSxsLm5vZGUoKS5hdHRycyk7aWYobiBpbnN0YW5jZW9mIEZ0JiZuLm5vZGUuaXNCbG9jaylyZXR1cm4hbC5wYXJlbnRPZmZzZXR8fCF6bChvLGwucG9zKT8hMTooYSYmKHMmJmtoYSh0LHIuZXh0ZW5zaW9uTWFuYWdlci5zcGxpdHRhYmxlTWFya3MpLGUuc3BsaXQobC5wb3MpLnNjcm9sbEludG9WaWV3KCkpLCEwKTtpZighbC5wYXJlbnQuaXNCbG9jaylyZXR1cm4hMTtsZXQgYz1wLnBhcmVudE9mZnNldD09PXAucGFyZW50LmNvbnRlbnQuc2l6ZSxiPWwuZGVwdGg9PT0wP3ZvaWQgMDpIYXQobC5ub2RlKC0xKS5jb250ZW50TWF0Y2hBdChsLmluZGV4QWZ0ZXIoLTEpKSksdj1jJiZiP1t7dHlwZTpiLGF0dHJzOnV9XTp2b2lkIDAseD16bChlLmRvYyxlLm1hcHBpbmcubWFwKGwucG9zKSwxLHYpO2lmKCF2JiYheCYmemwoZS5kb2MsZS5tYXBwaW5nLm1hcChsLnBvcyksMSxiP1t7dHlwZTpifV06dm9pZCAwKSYmKHg9ITAsdj1iP1t7dHlwZTpiLGF0dHJzOnV9XTp2b2lkIDApLGEpe2lmKHgmJihuIGluc3RhbmNlb2YgSnQmJmUuZGVsZXRlU2VsZWN0aW9uKCksZS5zcGxpdChlLm1hcHBpbmcubWFwKGwucG9zKSwxLHYpLGImJiFjJiYhbC5wYXJlbnRPZmZzZXQmJmwucGFyZW50LnR5cGUhPT1iKSl7bGV0IG09ZS5tYXBwaW5nLm1hcChsLmJlZm9yZSgpKSxmPWUuZG9jLnJlc29sdmUobSk7bC5ub2RlKC0xKS5jYW5SZXBsYWNlV2l0aChmLmluZGV4KCksZi5pbmRleCgpKzEsYikmJmUuc2V0Tm9kZU1hcmt1cChlLm1hcHBpbmcubWFwKGwuYmVmb3JlKCkpLGIpfXMmJmtoYSh0LHIuZXh0ZW5zaW9uTWFuYWdlci5zcGxpdHRhYmxlTWFya3MpLGUuc2Nyb2xsSW50b1ZpZXcoKX1yZXR1cm4geH0sInNwbGl0QmxvY2siKSxQWmE9aSgocyxlPXt9KT0+KHt0cjp0LHN0YXRlOmEsZGlzcGF0Y2g6cixlZGl0b3I6bn0pPT57dmFyIG87bGV0IGw9THIocyxhLnNjaGVtYSkseyRmcm9tOnAsJHRvOmR9PWEuc2VsZWN0aW9uLHU9YS5zZWxlY3Rpb24ubm9kZTtpZih1JiZ1LmlzQmxvY2t8fHAuZGVwdGg8Mnx8IXAuc2FtZVBhcmVudChkKSlyZXR1cm4hMTtsZXQgYz1wLm5vZGUoLTEpO2lmKGMudHlwZSE9PWwpcmV0dXJuITE7bGV0IGI9bi5leHRlbnNpb25NYW5hZ2VyLmF0dHJpYnV0ZXM7aWYocC5wYXJlbnQuY29udGVudC5zaXplPT09MCYmcC5ub2RlKC0xKS5jaGlsZENvdW50PT09cC5pbmRleEFmdGVyKC0xKSl7aWYocC5kZXB0aD09PTJ8fHAubm9kZSgtMykudHlwZSE9PWx8fHAuaW5kZXgoLTIpIT09cC5ub2RlKC0yKS5jaGlsZENvdW50LTEpcmV0dXJuITE7aWYocil7bGV0IHk9cnQuZW1wdHksTT1wLmluZGV4KC0xKT8xOnAuaW5kZXgoLTIpPzI6Mztmb3IobGV0ICQ9cC5kZXB0aC1NOyQ+PXAuZGVwdGgtMzskLT0xKXk9cnQuZnJvbShwLm5vZGUoJCkuY29weSh5KSk7bGV0IHo9cC5pbmRleEFmdGVyKC0xKTxwLm5vZGUoLTIpLmNoaWxkQ291bnQ/MTpwLmluZGV4QWZ0ZXIoLTIpPHAubm9kZSgtMykuY2hpbGRDb3VudD8yOjMsTj17Li4uanYoYixwLm5vZGUoKS50eXBlLm5hbWUscC5ub2RlKCkuYXR0cnMpLC4uLmV9LEM9KChvPWwuY29udGVudE1hdGNoLmRlZmF1bHRUeXBlKT09PW51bGx8fG89PT12b2lkIDA/dm9pZCAwOm8uY3JlYXRlQW5kRmlsbChOKSl8fHZvaWQgMDt5PXkuYXBwZW5kKHJ0LmZyb20obC5jcmVhdGVBbmRGaWxsKG51bGwsQyl8fHZvaWQgMCkpO2xldCBfPXAuYmVmb3JlKHAuZGVwdGgtKE0tMSkpO3QucmVwbGFjZShfLHAuYWZ0ZXIoLXopLG5ldyBfdCh5LDQtTSwwKSk7bGV0IE89LTE7dC5kb2Mubm9kZXNCZXR3ZWVuKF8sdC5kb2MuY29udGVudC5zaXplLCgkLEUpPT57aWYoTz4tMSlyZXR1cm4hMTskLmlzVGV4dGJsb2NrJiYkLmNvbnRlbnQuc2l6ZT09PTAmJihPPUUrMSl9KSxPPi0xJiZ0LnNldFNlbGVjdGlvbihKdC5uZWFyKHQuZG9jLnJlc29sdmUoTykpKSx0LnNjcm9sbEludG9WaWV3KCl9cmV0dXJuITB9bGV0IHY9ZC5wb3M9PT1wLmVuZCgpP2MuY29udGVudE1hdGNoQXQoMCkuZGVmYXVsdFR5cGU6bnVsbCx4PXsuLi5qdihiLGMudHlwZS5uYW1lLGMuYXR0cnMpLC4uLmV9LG09ey4uLmp2KGIscC5ub2RlKCkudHlwZS5uYW1lLHAubm9kZSgpLmF0dHJzKSwuLi5lfTt0LmRlbGV0ZShwLnBvcyxkLnBvcyk7bGV0IGY9dj9be3R5cGU6bCxhdHRyczp4fSx7dHlwZTp2LGF0dHJzOm19XTpbe3R5cGU6bCxhdHRyczp4fV07aWYoIXpsKHQuZG9jLHAucG9zLDIpKXJldHVybiExO2lmKHIpe2xldHtzZWxlY3Rpb246eSxzdG9yZWRNYXJrczpNfT1hLHtzcGxpdHRhYmxlTWFya3M6en09bi5leHRlbnNpb25NYW5hZ2VyLE49TXx8eS4kdG8ucGFyZW50T2Zmc2V0JiZ5LiRmcm9tLm1hcmtzKCk7aWYodC5zcGxpdChwLnBvcywyLGYpLnNjcm9sbEludG9WaWV3KCksIU58fCFyKXJldHVybiEwO2xldCBDPU4uZmlsdGVyKF89PnouaW5jbHVkZXMoXy50eXBlLm5hbWUpKTt0LmVuc3VyZU1hcmtzKEMpfXJldHVybiEwfSwic3BsaXRMaXN0SXRlbSIpLERhdD1pKChzLGUpPT57bGV0IHQ9cXYobz0+by50eXBlPT09ZSkocy5zZWxlY3Rpb24pO2lmKCF0KXJldHVybiEwO2xldCBhPXMuZG9jLnJlc29sdmUoTWF0aC5tYXgoMCx0LnBvcy0xKSkuYmVmb3JlKHQuZGVwdGgpO2lmKGE9PT12b2lkIDApcmV0dXJuITA7bGV0IHI9cy5kb2Mubm9kZUF0KGEpO3JldHVybiB0Lm5vZGUudHlwZT09PXI/LnR5cGUmJlpsKHMuZG9jLHQucG9zKSYmcy5qb2luKHQucG9zKSwhMH0sImpvaW5MaXN0QmFja3dhcmRzIiksTGF0PWkoKHMsZSk9PntsZXQgdD1xdihvPT5vLnR5cGU9PT1lKShzLnNlbGVjdGlvbik7aWYoIXQpcmV0dXJuITA7bGV0IGE9cy5kb2MucmVzb2x2ZSh0LnN0YXJ0KS5hZnRlcih0LmRlcHRoKTtpZihhPT09dm9pZCAwKXJldHVybiEwO2xldCByPXMuZG9jLm5vZGVBdChhKTtyZXR1cm4gdC5ub2RlLnR5cGU9PT1yPy50eXBlJiZabChzLmRvYyxhKSYmcy5qb2luKGEpLCEwfSwiam9pbkxpc3RGb3J3YXJkcyIpLElaYT1pKChzLGUsdCxhPXt9KT0+KHtlZGl0b3I6cix0cjpuLHN0YXRlOm8sZGlzcGF0Y2g6bCxjaGFpbjpwLGNvbW1hbmRzOmQsY2FuOnV9KT0+e2xldHtleHRlbnNpb25zOmMsc3BsaXR0YWJsZU1hcmtzOmJ9PXIuZXh0ZW5zaW9uTWFuYWdlcix2PUxyKHMsby5zY2hlbWEpLHg9THIoZSxvLnNjaGVtYSkse3NlbGVjdGlvbjptLHN0b3JlZE1hcmtzOmZ9PW8seyRmcm9tOnksJHRvOk19PW0sej15LmJsb2NrUmFuZ2UoTSksTj1mfHxtLiR0by5wYXJlbnRPZmZzZXQmJm0uJGZyb20ubWFya3MoKTtpZigheilyZXR1cm4hMTtsZXQgQz1xdihfPT5QbGUoXy50eXBlLm5hbWUsYykpKG0pO2lmKHouZGVwdGg+PTEmJkMmJnouZGVwdGgtQy5kZXB0aDw9MSl7aWYoQy5ub2RlLnR5cGU9PT12KXJldHVybiBkLmxpZnRMaXN0SXRlbSh4KTtpZihQbGUoQy5ub2RlLnR5cGUubmFtZSxjKSYmdi52YWxpZENvbnRlbnQoQy5ub2RlLmNvbnRlbnQpJiZsKXJldHVybiBwKCkuY29tbWFuZCgoKT0+KG4uc2V0Tm9kZU1hcmt1cChDLnBvcyx2KSwhMCkpLmNvbW1hbmQoKCk9PkRhdChuLHYpKS5jb21tYW5kKCgpPT5MYXQobix2KSkucnVuKCl9cmV0dXJuIXR8fCFOfHwhbD9wKCkuY29tbWFuZCgoKT0+dSgpLndyYXBJbkxpc3QodixhKT8hMDpkLmNsZWFyTm9kZXMoKSkud3JhcEluTGlzdCh2LGEpLmNvbW1hbmQoKCk9PkRhdChuLHYpKS5jb21tYW5kKCgpPT5MYXQobix2KSkucnVuKCk6cCgpLmNvbW1hbmQoKCk9PntsZXQgXz11KCkud3JhcEluTGlzdCh2LGEpLE89Ti5maWx0ZXIoJD0+Yi5pbmNsdWRlcygkLnR5cGUubmFtZSkpO3JldHVybiBuLmVuc3VyZU1hcmtzKE8pLF8/ITA6ZC5jbGVhck5vZGVzKCl9KS53cmFwSW5MaXN0KHYsYSkuY29tbWFuZCgoKT0+RGF0KG4sdikpLmNvbW1hbmQoKCk9PkxhdChuLHYpKS5ydW4oKX0sInRvZ2dsZUxpc3QiKSxBWmE9aSgocyxlPXt9LHQ9e30pPT4oe3N0YXRlOmEsY29tbWFuZHM6cn0pPT57bGV0e2V4dGVuZEVtcHR5TWFya1JhbmdlOm49ITF9PXQsbz1SZChzLGEuc2NoZW1hKTtyZXR1cm4gdVgoYSxvLGUpP3IudW5zZXRNYXJrKG8se2V4dGVuZEVtcHR5TWFya1JhbmdlOm59KTpyLnNldE1hcmsobyxlKX0sInRvZ2dsZU1hcmsiKSxOWmE9aSgocyxlLHQ9e30pPT4oe3N0YXRlOmEsY29tbWFuZHM6cn0pPT57bGV0IG49THIocyxhLnNjaGVtYSksbz1McihlLGEuc2NoZW1hKSxsPWRnKGEsbix0KSxwO3JldHVybiBhLnNlbGVjdGlvbi4kYW5jaG9yLnNhbWVQYXJlbnQoYS5zZWxlY3Rpb24uJGhlYWQpJiYocD1hLnNlbGVjdGlvbi4kYW5jaG9yLnBhcmVudC5hdHRycyksbD9yLnNldE5vZGUobyxwKTpyLnNldE5vZGUobix7Li4ucCwuLi50fSl9LCJ0b2dnbGVOb2RlIiksUlphPWkoKHMsZT17fSk9Pih7c3RhdGU6dCxjb21tYW5kczphfSk9PntsZXQgcj1McihzLHQuc2NoZW1hKTtyZXR1cm4gZGcodCxyLGUpP2EubGlmdChyKTphLndyYXBJbihyLGUpfSwidG9nZ2xlV3JhcCIpLE9aYT1pKCgpPT4oe3N0YXRlOnMsZGlzcGF0Y2g6ZX0pPT57bGV0IHQ9cy5wbHVnaW5zO2ZvcihsZXQgYT0wO2E8dC5sZW5ndGg7YSs9MSl7bGV0IHI9dFthXSxuO2lmKHIuc3BlYy5pc0lucHV0UnVsZXMmJihuPXIuZ2V0U3RhdGUocykpKXtpZihlKXtsZXQgbz1zLnRyLGw9bi50cmFuc2Zvcm07Zm9yKGxldCBwPWwuc3RlcHMubGVuZ3RoLTE7cD49MDtwLT0xKW8uc3RlcChsLnN0ZXBzW3BdLmludmVydChsLmRvY3NbcF0pKTtpZihuLnRleHQpe2xldCBwPW8uZG9jLnJlc29sdmUobi5mcm9tKS5tYXJrcygpO28ucmVwbGFjZVdpdGgobi5mcm9tLG4udG8scy5zY2hlbWEudGV4dChuLnRleHQscCkpfWVsc2Ugby5kZWxldGUobi5mcm9tLG4udG8pfXJldHVybiEwfX1yZXR1cm4hMX0sInVuZG9JbnB1dFJ1bGUiKSxGWmE9aSgoKT0+KHt0cjpzLGRpc3BhdGNoOmV9KT0+e2xldHtzZWxlY3Rpb246dH09cyx7ZW1wdHk6YSxyYW5nZXM6cn09dDtyZXR1cm4gYXx8ZSYmci5mb3JFYWNoKG49PntzLnJlbW92ZU1hcmsobi4kZnJvbS5wb3Msbi4kdG8ucG9zKX0pLCEwfSwidW5zZXRBbGxNYXJrcyIpLEJaYT1pKChzLGU9e30pPT4oe3RyOnQsc3RhdGU6YSxkaXNwYXRjaDpyfSk9Pnt2YXIgbjtsZXR7ZXh0ZW5kRW1wdHlNYXJrUmFuZ2U6bz0hMX09ZSx7c2VsZWN0aW9uOmx9PXQscD1SZChzLGEuc2NoZW1hKSx7JGZyb206ZCxlbXB0eTp1LHJhbmdlczpjfT1sO2lmKCFyKXJldHVybiEwO2lmKHUmJm8pe2xldHtmcm9tOmIsdG86dn09bCx4PShuPWQubWFya3MoKS5maW5kKGY9PmYudHlwZT09PXApKT09PW51bGx8fG49PT12b2lkIDA/dm9pZCAwOm4uYXR0cnMsbT1sWChkLHAseCk7bSYmKGI9bS5mcm9tLHY9bS50byksdC5yZW1vdmVNYXJrKGIsdixwKX1lbHNlIGMuZm9yRWFjaChiPT57dC5yZW1vdmVNYXJrKGIuJGZyb20ucG9zLGIuJHRvLnBvcyxwKX0pO3JldHVybiB0LnJlbW92ZVN0b3JlZE1hcmsocCksITB9LCJ1bnNldE1hcmsiKSxIWmE9aSgocyxlPXt9KT0+KHt0cjp0LHN0YXRlOmEsZGlzcGF0Y2g6cn0pPT57bGV0IG49bnVsbCxvPW51bGwsbD1Idih0eXBlb2Ygcz09InN0cmluZyI/czpzLm5hbWUsYS5zY2hlbWEpO3JldHVybiBsPyhsPT09Im5vZGUiJiYobj1McihzLGEuc2NoZW1hKSksbD09PSJtYXJrIiYmKG89UmQocyxhLnNjaGVtYSkpLHImJnQuc2VsZWN0aW9uLnJhbmdlcy5mb3JFYWNoKHA9PntsZXQgZD1wLiRmcm9tLnBvcyx1PXAuJHRvLnBvcyxjLGIsdix4O3Quc2VsZWN0aW9uLmVtcHR5P2EuZG9jLm5vZGVzQmV0d2VlbihkLHUsKG0sZik9PntuJiZuPT09bS50eXBlJiYodj1NYXRoLm1heChmLGQpLHg9TWF0aC5taW4oZittLm5vZGVTaXplLHUpLGM9ZixiPW0pfSk6YS5kb2Mubm9kZXNCZXR3ZWVuKGQsdSwobSxmKT0+e2Y8ZCYmbiYmbj09PW0udHlwZSYmKHY9TWF0aC5tYXgoZixkKSx4PU1hdGgubWluKGYrbS5ub2RlU2l6ZSx1KSxjPWYsYj1tKSxmPj1kJiZmPD11JiYobiYmbj09PW0udHlwZSYmdC5zZXROb2RlTWFya3VwKGYsdm9pZCAwLHsuLi5tLmF0dHJzLC4uLmV9KSxvJiZtLm1hcmtzLmxlbmd0aCYmbS5tYXJrcy5mb3JFYWNoKHk9PntpZihvPT09eS50eXBlKXtsZXQgTT1NYXRoLm1heChmLGQpLHo9TWF0aC5taW4oZittLm5vZGVTaXplLHUpO3QuYWRkTWFyayhNLHosby5jcmVhdGUoey4uLnkuYXR0cnMsLi4uZX0pKX19KSl9KSxiJiYoYyE9PXZvaWQgMCYmdC5zZXROb2RlTWFya3VwKGMsdm9pZCAwLHsuLi5iLmF0dHJzLC4uLmV9KSxvJiZiLm1hcmtzLmxlbmd0aCYmYi5tYXJrcy5mb3JFYWNoKG09PntvPT09bS50eXBlJiZ0LmFkZE1hcmsodix4LG8uY3JlYXRlKHsuLi5tLmF0dHJzLC4uLmV9KSl9KSl9KSwhMCk6ITF9LCJ1cGRhdGVBdHRyaWJ1dGVzIikscVphPWkoKHMsZT17fSk9Pih7c3RhdGU6dCxkaXNwYXRjaDphfSk9PntsZXQgcj1McihzLHQuc2NoZW1hKTtyZXR1cm4gU2F0KHIsZSkodCxhKX0sIndyYXBJbiIpLGpaYT1pKChzLGU9e30pPT4oe3N0YXRlOnQsZGlzcGF0Y2g6YX0pPT57bGV0IHI9THIocyx0LnNjaGVtYSk7cmV0dXJuIE1hdChyLGUpKHQsYSl9LCJ3cmFwSW5MaXN0IiksVlphPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGJsdXI6TllhLGNsZWFyQ29udGVudDpSWWEsY2xlYXJOb2RlczpPWWEsY29tbWFuZDpGWWEsY3JlYXRlUGFyYWdyYXBoTmVhcjpCWWEsY3V0OkhZYSxkZWxldGVDdXJyZW50Tm9kZTpxWWEsZGVsZXRlTm9kZTpqWWEsZGVsZXRlUmFuZ2U6VllhLGRlbGV0ZVNlbGVjdGlvbjpVWWEsZW50ZXI6V1lhLGV4aXRDb2RlOkdZYSxleHRlbmRNYXJrUmFuZ2U6S1lhLGZpcnN0OllZYSxmb2N1czpaWWEsZm9yRWFjaDpYWWEsaW5zZXJ0Q29udGVudDpRWWEsaW5zZXJ0Q29udGVudEF0OmVaYSxqb2luQmFja3dhcmQ6c1phLGpvaW5Eb3duOmFaYSxqb2luRm9yd2FyZDppWmEsam9pbkl0ZW1CYWNrd2FyZDpyWmEsam9pbkl0ZW1Gb3J3YXJkOm9aYSxqb2luVGV4dGJsb2NrQmFja3dhcmQ6blphLGpvaW5UZXh0YmxvY2tGb3J3YXJkOmxaYSxqb2luVXA6dFphLGtleWJvYXJkU2hvcnRjdXQ6ZFphLGxpZnQ6dVphLGxpZnRFbXB0eUJsb2NrOnBaYSxsaWZ0TGlzdEl0ZW06aFphLG5ld2xpbmVJbkNvZGU6ZlphLHJlc2V0QXR0cmlidXRlczptWmEsc2Nyb2xsSW50b1ZpZXc6Z1phLHNlbGVjdEFsbDpiWmEsc2VsZWN0Tm9kZUJhY2t3YXJkOnZaYSxzZWxlY3ROb2RlRm9yd2FyZDp4WmEsc2VsZWN0UGFyZW50Tm9kZTp5WmEsc2VsZWN0VGV4dGJsb2NrRW5kOndaYSxzZWxlY3RUZXh0YmxvY2tTdGFydDprWmEsc2V0Q29udGVudDpTWmEsc2V0TWFyazp6WmEsc2V0TWV0YTpDWmEsc2V0Tm9kZTpUWmEsc2V0Tm9kZVNlbGVjdGlvbjokWmEsc2V0VGV4dFNlbGVjdGlvbjpEWmEsc2lua0xpc3RJdGVtOkxaYSxzcGxpdEJsb2NrOkVaYSxzcGxpdExpc3RJdGVtOlBaYSx0b2dnbGVMaXN0OklaYSx0b2dnbGVNYXJrOkFaYSx0b2dnbGVOb2RlOk5aYSx0b2dnbGVXcmFwOlJaYSx1bmRvSW5wdXRSdWxlOk9aYSx1bnNldEFsbE1hcmtzOkZaYSx1bnNldE1hcms6QlphLHVwZGF0ZUF0dHJpYnV0ZXM6SFphLHdyYXBJbjpxWmEsd3JhcEluTGlzdDpqWmF9KSxTaGE9d2kuY3JlYXRlKHtuYW1lOiJjb21tYW5kcyIsYWRkQ29tbWFuZHMoKXtyZXR1cm57Li4uVlphfX19KSxfaGE9d2kuY3JlYXRlKHtuYW1lOiJkcm9wIixhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtyZXR1cm5bbmV3IFlzKHtrZXk6bmV3ICRyKCJ0aXB0YXBEcm9wIikscHJvcHM6e2hhbmRsZURyb3A6aSgocyxlLHQsYSk9Pnt0aGlzLmVkaXRvci5lbWl0KCJkcm9wIix7ZWRpdG9yOnRoaXMuZWRpdG9yLGV2ZW50OmUsc2xpY2U6dCxtb3ZlZDphfSl9LCJoYW5kbGVEcm9wIil9fSldfX0pLE1oYT13aS5jcmVhdGUoe25hbWU6ImVkaXRhYmxlIixhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtyZXR1cm5bbmV3IFlzKHtrZXk6bmV3ICRyKCJlZGl0YWJsZSIpLHByb3BzOntlZGl0YWJsZTppKCgpPT50aGlzLmVkaXRvci5vcHRpb25zLmVkaXRhYmxlLCJlZGl0YWJsZSIpfX0pXX19KSx6aGE9bmV3ICRyKCJmb2N1c0V2ZW50cyIpLENoYT13aS5jcmVhdGUoe25hbWU6ImZvY3VzRXZlbnRzIixhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtsZXR7ZWRpdG9yOnN9PXRoaXM7cmV0dXJuW25ldyBZcyh7a2V5OnpoYSxwcm9wczp7aGFuZGxlRE9NRXZlbnRzOntmb2N1czppKChlLHQpPT57cy5pc0ZvY3VzZWQ9ITA7bGV0IGE9cy5zdGF0ZS50ci5zZXRNZXRhKCJmb2N1cyIse2V2ZW50OnR9KS5zZXRNZXRhKCJhZGRUb0hpc3RvcnkiLCExKTtyZXR1cm4gZS5kaXNwYXRjaChhKSwhMX0sImZvY3VzIiksYmx1cjppKChlLHQpPT57cy5pc0ZvY3VzZWQ9ITE7bGV0IGE9cy5zdGF0ZS50ci5zZXRNZXRhKCJibHVyIix7ZXZlbnQ6dH0pLnNldE1ldGEoImFkZFRvSGlzdG9yeSIsITEpO3JldHVybiBlLmRpc3BhdGNoKGEpLCExfSwiYmx1ciIpfX19KV19fSksVGhhPXdpLmNyZWF0ZSh7bmFtZToia2V5bWFwIixhZGRLZXlib2FyZFNob3J0Y3V0cygpe2xldCBzPWkoKCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLmZpcnN0KCh7Y29tbWFuZHM6b30pPT5bKCk9Pm8udW5kb0lucHV0UnVsZSgpLCgpPT5vLmNvbW1hbmQoKHt0cjpsfSk9PntsZXR7c2VsZWN0aW9uOnAsZG9jOmR9PWwse2VtcHR5OnUsJGFuY2hvcjpjfT1wLHtwb3M6YixwYXJlbnQ6dn09Yyx4PWMucGFyZW50LmlzVGV4dGJsb2NrJiZiPjA/bC5kb2MucmVzb2x2ZShiLTEpOmMsbT14LnBhcmVudC50eXBlLnNwZWMuaXNvbGF0aW5nLGY9Yy5wb3MtYy5wYXJlbnRPZmZzZXQseT1tJiZ4LnBhcmVudC5jaGlsZENvdW50PT09MT9mPT09Yy5wb3M6UXQuYXRTdGFydChkKS5mcm9tPT09YjtyZXR1cm4hdXx8IXYudHlwZS5pc1RleHRibG9ja3x8di50ZXh0Q29udGVudC5sZW5ndGh8fCF5fHx5JiZjLnBhcmVudC50eXBlLm5hbWU9PT0icGFyYWdyYXBoIj8hMTpvLmNsZWFyTm9kZXMoKX0pLCgpPT5vLmRlbGV0ZVNlbGVjdGlvbigpLCgpPT5vLmpvaW5CYWNrd2FyZCgpLCgpPT5vLnNlbGVjdE5vZGVCYWNrd2FyZCgpXSksImhhbmRsZUJhY2tzcGFjZSIpLGU9aSgoKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMuZmlyc3QoKHtjb21tYW5kczpvfSk9PlsoKT0+by5kZWxldGVTZWxlY3Rpb24oKSwoKT0+by5kZWxldGVDdXJyZW50Tm9kZSgpLCgpPT5vLmpvaW5Gb3J3YXJkKCksKCk9Pm8uc2VsZWN0Tm9kZUZvcndhcmQoKV0pLCJoYW5kbGVEZWxldGUiKSxhPXtFbnRlcjppKCgpPT50aGlzLmVkaXRvci5jb21tYW5kcy5maXJzdCgoe2NvbW1hbmRzOm99KT0+WygpPT5vLm5ld2xpbmVJbkNvZGUoKSwoKT0+by5jcmVhdGVQYXJhZ3JhcGhOZWFyKCksKCk9Pm8ubGlmdEVtcHR5QmxvY2soKSwoKT0+by5zcGxpdEJsb2NrKCldKSwiaGFuZGxlRW50ZXIiKSwiTW9kLUVudGVyIjppKCgpPT50aGlzLmVkaXRvci5jb21tYW5kcy5leGl0Q29kZSgpLCJNb2QtRW50ZXIiKSxCYWNrc3BhY2U6cywiTW9kLUJhY2tzcGFjZSI6cywiU2hpZnQtQmFja3NwYWNlIjpzLERlbGV0ZTplLCJNb2QtRGVsZXRlIjplLCJNb2QtYSI6aSgoKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMuc2VsZWN0QWxsKCksIk1vZC1hIil9LHI9ey4uLmF9LG49ey4uLmEsIkN0cmwtaCI6cywiQWx0LUJhY2tzcGFjZSI6cywiQ3RybC1kIjplLCJDdHJsLUFsdC1CYWNrc3BhY2UiOmUsIkFsdC1EZWxldGUiOmUsIkFsdC1kIjplLCJDdHJsLWEiOmkoKCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnNlbGVjdFRleHRibG9ja1N0YXJ0KCksIkN0cmwtYSIpLCJDdHJsLWUiOmkoKCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnNlbGVjdFRleHRibG9ja0VuZCgpLCJDdHJsLWUiKX07cmV0dXJuIG5nKCl8fCRsZSgpP246cn0sYWRkUHJvc2VNaXJyb3JQbHVnaW5zKCl7cmV0dXJuW25ldyBZcyh7a2V5Om5ldyAkcigiY2xlYXJEb2N1bWVudCIpLGFwcGVuZFRyYW5zYWN0aW9uOmkoKHMsZSx0KT0+e2lmKHMuc29tZShtPT5tLmdldE1ldGEoImNvbXBvc2l0aW9uIikpKXJldHVybjtsZXQgYT1zLnNvbWUobT0+bS5kb2NDaGFuZ2VkKSYmIWUuZG9jLmVxKHQuZG9jKSxyPXMuc29tZShtPT5tLmdldE1ldGEoInByZXZlbnRDbGVhckRvY3VtZW50IikpO2lmKCFhfHxyKXJldHVybjtsZXR7ZW1wdHk6bixmcm9tOm8sdG86bH09ZS5zZWxlY3Rpb24scD1RdC5hdFN0YXJ0KGUuZG9jKS5mcm9tLGQ9UXQuYXRFbmQoZS5kb2MpLnRvO2lmKG58fCEobz09PXAmJmw9PT1kKXx8IXBYKHQuZG9jKSlyZXR1cm47bGV0IGI9dC50cix2PUF2KHtzdGF0ZTp0LHRyYW5zYWN0aW9uOmJ9KSx7Y29tbWFuZHM6eH09bmV3IFBoKHtlZGl0b3I6dGhpcy5lZGl0b3Isc3RhdGU6dn0pO2lmKHguY2xlYXJOb2RlcygpLCEhYi5zdGVwcy5sZW5ndGgpcmV0dXJuIGJ9LCJhcHBlbmRUcmFuc2FjdGlvbiIpfSldfX0pLCRoYT13aS5jcmVhdGUoe25hbWU6InBhc3RlIixhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtyZXR1cm5bbmV3IFlzKHtrZXk6bmV3ICRyKCJ0aXB0YXBQYXN0ZSIpLHByb3BzOntoYW5kbGVQYXN0ZTppKChzLGUsdCk9Pnt0aGlzLmVkaXRvci5lbWl0KCJwYXN0ZSIse2VkaXRvcjp0aGlzLmVkaXRvcixldmVudDplLHNsaWNlOnR9KX0sImhhbmRsZVBhc3RlIil9fSldfX0pLERoYT13aS5jcmVhdGUoe25hbWU6InRhYmluZGV4IixhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtyZXR1cm5bbmV3IFlzKHtrZXk6bmV3ICRyKCJ0YWJpbmRleCIpLHByb3BzOnthdHRyaWJ1dGVzOmkoKCk9PnRoaXMuZWRpdG9yLmlzRWRpdGFibGU/e3RhYmluZGV4OiIwIn06e30sImF0dHJpYnV0ZXMiKX19KV19fSksQmhhPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLENsaXBib2FyZFRleHRTZXJpYWxpemVyOmJoYSxDb21tYW5kczpTaGEsRHJvcDpfaGEsRWRpdGFibGU6TWhhLEZvY3VzRXZlbnRzOkNoYSxLZXltYXA6VGhhLFBhc3RlOiRoYSxUYWJpbmRleDpEaGEsZm9jdXNFdmVudHNQbHVnaW5LZXk6emhhfSksaFg9Y2xhc3Mgc3tzdGF0aWN7aSh0aGlzLCJOb2RlUG9zIil9Z2V0IG5hbWUoKXtyZXR1cm4gdGhpcy5ub2RlLnR5cGUubmFtZX1jb25zdHJ1Y3RvcihlLHQsYT0hMSxyPW51bGwpe3RoaXMuY3VycmVudE5vZGU9bnVsbCx0aGlzLmFjdHVhbERlcHRoPW51bGwsdGhpcy5pc0Jsb2NrPWEsdGhpcy5yZXNvbHZlZFBvcz1lLHRoaXMuZWRpdG9yPXQsdGhpcy5jdXJyZW50Tm9kZT1yfWdldCBub2RlKCl7cmV0dXJuIHRoaXMuY3VycmVudE5vZGV8fHRoaXMucmVzb2x2ZWRQb3Mubm9kZSgpfWdldCBlbGVtZW50KCl7cmV0dXJuIHRoaXMuZWRpdG9yLnZpZXcuZG9tQXRQb3ModGhpcy5wb3MpLm5vZGV9Z2V0IGRlcHRoKCl7dmFyIGU7cmV0dXJuKGU9dGhpcy5hY3R1YWxEZXB0aCkhPT1udWxsJiZlIT09dm9pZCAwP2U6dGhpcy5yZXNvbHZlZFBvcy5kZXB0aH1nZXQgcG9zKCl7cmV0dXJuIHRoaXMucmVzb2x2ZWRQb3MucG9zfWdldCBjb250ZW50KCl7cmV0dXJuIHRoaXMubm9kZS5jb250ZW50fXNldCBjb250ZW50KGUpe2xldCB0PXRoaXMuZnJvbSxhPXRoaXMudG87aWYodGhpcy5pc0Jsb2NrKXtpZih0aGlzLmNvbnRlbnQuc2l6ZT09PTApe2NvbnNvbGUuZXJyb3IoYFlvdSBjYW5cdTIwMTl0IHNldCBjb250ZW50IG9uIGEgYmxvY2sgbm9kZS4gVHJpZWQgdG8gc2V0IGNvbnRlbnQgb24gJHt0aGlzLm5hbWV9IGF0ICR7dGhpcy5wb3N9YCk7cmV0dXJufXQ9dGhpcy5mcm9tKzEsYT10aGlzLnRvLTF9dGhpcy5lZGl0b3IuY29tbWFuZHMuaW5zZXJ0Q29udGVudEF0KHtmcm9tOnQsdG86YX0sZSl9Z2V0IGF0dHJpYnV0ZXMoKXtyZXR1cm4gdGhpcy5ub2RlLmF0dHJzfWdldCB0ZXh0Q29udGVudCgpe3JldHVybiB0aGlzLm5vZGUudGV4dENvbnRlbnR9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5ub2RlLm5vZGVTaXplfWdldCBmcm9tKCl7cmV0dXJuIHRoaXMuaXNCbG9jaz90aGlzLnBvczp0aGlzLnJlc29sdmVkUG9zLnN0YXJ0KHRoaXMucmVzb2x2ZWRQb3MuZGVwdGgpfWdldCByYW5nZSgpe3JldHVybntmcm9tOnRoaXMuZnJvbSx0bzp0aGlzLnRvfX1nZXQgdG8oKXtyZXR1cm4gdGhpcy5pc0Jsb2NrP3RoaXMucG9zK3RoaXMuc2l6ZTp0aGlzLnJlc29sdmVkUG9zLmVuZCh0aGlzLnJlc29sdmVkUG9zLmRlcHRoKSsodGhpcy5ub2RlLmlzVGV4dD8wOjEpfWdldCBwYXJlbnQoKXtpZih0aGlzLmRlcHRoPT09MClyZXR1cm4gbnVsbDtsZXQgZT10aGlzLnJlc29sdmVkUG9zLnN0YXJ0KHRoaXMucmVzb2x2ZWRQb3MuZGVwdGgtMSksdD10aGlzLnJlc29sdmVkUG9zLmRvYy5yZXNvbHZlKGUpO3JldHVybiBuZXcgcyh0LHRoaXMuZWRpdG9yKX1nZXQgYmVmb3JlKCl7bGV0IGU9dGhpcy5yZXNvbHZlZFBvcy5kb2MucmVzb2x2ZSh0aGlzLmZyb20tKHRoaXMuaXNCbG9jaz8xOjIpKTtyZXR1cm4gZS5kZXB0aCE9PXRoaXMuZGVwdGgmJihlPXRoaXMucmVzb2x2ZWRQb3MuZG9jLnJlc29sdmUodGhpcy5mcm9tLTMpKSxuZXcgcyhlLHRoaXMuZWRpdG9yKX1nZXQgYWZ0ZXIoKXtsZXQgZT10aGlzLnJlc29sdmVkUG9zLmRvYy5yZXNvbHZlKHRoaXMudG8rKHRoaXMuaXNCbG9jaz8yOjEpKTtyZXR1cm4gZS5kZXB0aCE9PXRoaXMuZGVwdGgmJihlPXRoaXMucmVzb2x2ZWRQb3MuZG9jLnJlc29sdmUodGhpcy50byszKSksbmV3IHMoZSx0aGlzLmVkaXRvcil9Z2V0IGNoaWxkcmVuKCl7bGV0IGU9W107cmV0dXJuIHRoaXMubm9kZS5jb250ZW50LmZvckVhY2goKHQsYSk9PntsZXQgcj10LmlzQmxvY2smJiF0LmlzVGV4dGJsb2NrLG49dC5pc0F0b20mJiF0LmlzVGV4dCxvPXRoaXMucG9zK2ErKG4/MDoxKTtpZihvPDB8fG8+dGhpcy5yZXNvbHZlZFBvcy5kb2Mubm9kZVNpemUtMilyZXR1cm47bGV0IGw9dGhpcy5yZXNvbHZlZFBvcy5kb2MucmVzb2x2ZShvKTtpZighciYmbC5kZXB0aDw9dGhpcy5kZXB0aClyZXR1cm47bGV0IHA9bmV3IHMobCx0aGlzLmVkaXRvcixyLHI/dDpudWxsKTtyJiYocC5hY3R1YWxEZXB0aD10aGlzLmRlcHRoKzEpLGUucHVzaChuZXcgcyhsLHRoaXMuZWRpdG9yLHIscj90Om51bGwpKX0pLGV9Z2V0IGZpcnN0Q2hpbGQoKXtyZXR1cm4gdGhpcy5jaGlsZHJlblswXXx8bnVsbH1nZXQgbGFzdENoaWxkKCl7bGV0IGU9dGhpcy5jaGlsZHJlbjtyZXR1cm4gZVtlLmxlbmd0aC0xXXx8bnVsbH1jbG9zZXN0KGUsdD17fSl7bGV0IGE9bnVsbCxyPXRoaXMucGFyZW50O2Zvcig7ciYmIWE7KXtpZihyLm5vZGUudHlwZS5uYW1lPT09ZSlpZihPYmplY3Qua2V5cyh0KS5sZW5ndGg+MCl7bGV0IG49ci5ub2RlLmF0dHJzLG89T2JqZWN0LmtleXModCk7Zm9yKGxldCBsPTA7bDxvLmxlbmd0aDtsKz0xKXtsZXQgcD1vW2xdO2lmKG5bcF0hPT10W3BdKWJyZWFrfX1lbHNlIGE9cjtyPXIucGFyZW50fXJldHVybiBhfXF1ZXJ5U2VsZWN0b3IoZSx0PXt9KXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKGUsdCwhMClbMF18fG51bGx9cXVlcnlTZWxlY3RvckFsbChlLHQ9e30sYT0hMSl7bGV0IHI9W107aWYoIXRoaXMuY2hpbGRyZW58fHRoaXMuY2hpbGRyZW4ubGVuZ3RoPT09MClyZXR1cm4gcjtsZXQgbj1PYmplY3Qua2V5cyh0KTtyZXR1cm4gdGhpcy5jaGlsZHJlbi5mb3JFYWNoKG89PnthJiZyLmxlbmd0aD4wfHwoby5ub2RlLnR5cGUubmFtZT09PWUmJm4uZXZlcnkocD0+dFtwXT09PW8ubm9kZS5hdHRyc1twXSkmJnIucHVzaChvKSwhKGEmJnIubGVuZ3RoPjApJiYocj1yLmNvbmNhdChvLnF1ZXJ5U2VsZWN0b3JBbGwoZSx0LGEpKSkpfSkscn1zZXRBdHRyaWJ1dGUoZSl7bGV0e3RyOnR9PXRoaXMuZWRpdG9yLnN0YXRlO3Quc2V0Tm9kZU1hcmt1cCh0aGlzLmZyb20sdm9pZCAwLHsuLi50aGlzLm5vZGUuYXR0cnMsLi4uZX0pLHRoaXMuZWRpdG9yLnZpZXcuZGlzcGF0Y2godCl9fSxVWmE9YC5Qcm9zZU1pcnJvciB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouUHJvc2VNaXJyb3IgewogIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CiAgd2hpdGUtc3BhY2U6IGJyZWFrLXNwYWNlczsKICAtd2Via2l0LWZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vbmU7CiAgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9uZTsKICBmb250LWZlYXR1cmUtc2V0dGluZ3M6ICJsaWdhIiAwOyAvKiB0aGUgYWJvdmUgZG9lc24ndCBzZWVtIHRvIHdvcmsgaW4gRWRnZSAqLwp9CgouUHJvc2VNaXJyb3IgW2NvbnRlbnRlZGl0YWJsZT0iZmFsc2UiXSB7CiAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKfQoKLlByb3NlTWlycm9yIFtjb250ZW50ZWRpdGFibGU9ImZhbHNlIl0gW2NvbnRlbnRlZGl0YWJsZT0idHJ1ZSJdIHsKICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7Cn0KCi5Qcm9zZU1pcnJvciBwcmUgewogIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKfQoKaW1nLlByb3NlTWlycm9yLXNlcGFyYXRvciB7CiAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7CiAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgd2lkdGg6IDAgIWltcG9ydGFudDsKICBoZWlnaHQ6IDAgIWltcG9ydGFudDsKfQoKLlByb3NlTWlycm9yLWdhcGN1cnNvciB7CiAgZGlzcGxheTogbm9uZTsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbWFyZ2luOiAwOwp9CgouUHJvc2VNaXJyb3ItZ2FwY3Vyc29yOmFmdGVyIHsKICBjb250ZW50OiAiIjsKICBkaXNwbGF5OiBibG9jazsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAtMnB4OwogIHdpZHRoOiAyMHB4OwogIGJvcmRlci10b3A6IDFweCBzb2xpZCBibGFjazsKICBhbmltYXRpb246IFByb3NlTWlycm9yLWN1cnNvci1ibGluayAxLjFzIHN0ZXBzKDIsIHN0YXJ0KSBpbmZpbml0ZTsKfQoKQGtleWZyYW1lcyBQcm9zZU1pcnJvci1jdXJzb3ItYmxpbmsgewogIHRvIHsKICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICB9Cn0KCi5Qcm9zZU1pcnJvci1oaWRlc2VsZWN0aW9uICo6OnNlbGVjdGlvbiB7CiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7Cn0KCi5Qcm9zZU1pcnJvci1oaWRlc2VsZWN0aW9uICo6Oi1tb3otc2VsZWN0aW9uIHsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKfQoKLlByb3NlTWlycm9yLWhpZGVzZWxlY3Rpb24gKiB7CiAgY2FyZXQtY29sb3I6IHRyYW5zcGFyZW50Owp9CgouUHJvc2VNaXJyb3ItZm9jdXNlZCAuUHJvc2VNaXJyb3ItZ2FwY3Vyc29yIHsKICBkaXNwbGF5OiBibG9jazsKfQoKLnRpcHB5LWJveFtkYXRhLWFuaW1hdGlvbj1mYWRlXVtkYXRhLXN0YXRlPWhpZGRlbl0gewogIG9wYWNpdHk6IDAKfWA7aShHYXQsImNyZWF0ZVN0eWxlVGFnIik7SWxlPWNsYXNzIGV4dGVuZHMgVGF0e3N0YXRpY3tpKHRoaXMsIkVkaXRvciIpfWNvbnN0cnVjdG9yKGU9e30pe3N1cGVyKCksdGhpcy5pc0ZvY3VzZWQ9ITEsdGhpcy5pc0luaXRpYWxpemVkPSExLHRoaXMuZXh0ZW5zaW9uU3RvcmFnZT17fSx0aGlzLm9wdGlvbnM9e2VsZW1lbnQ6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksY29udGVudDoiIixpbmplY3RDU1M6ITAsaW5qZWN0Tm9uY2U6dm9pZCAwLGV4dGVuc2lvbnM6W10sYXV0b2ZvY3VzOiExLGVkaXRhYmxlOiEwLGVkaXRvclByb3BzOnt9LHBhcnNlT3B0aW9uczp7fSxjb3JlRXh0ZW5zaW9uT3B0aW9uczp7fSxlbmFibGVJbnB1dFJ1bGVzOiEwLGVuYWJsZVBhc3RlUnVsZXM6ITAsZW5hYmxlQ29yZUV4dGVuc2lvbnM6ITAsZW5hYmxlQ29udGVudENoZWNrOiExLGVtaXRDb250ZW50RXJyb3I6ITEsb25CZWZvcmVDcmVhdGU6aSgoKT0+bnVsbCwib25CZWZvcmVDcmVhdGUiKSxvbkNyZWF0ZTppKCgpPT5udWxsLCJvbkNyZWF0ZSIpLG9uVXBkYXRlOmkoKCk9Pm51bGwsIm9uVXBkYXRlIiksb25TZWxlY3Rpb25VcGRhdGU6aSgoKT0+bnVsbCwib25TZWxlY3Rpb25VcGRhdGUiKSxvblRyYW5zYWN0aW9uOmkoKCk9Pm51bGwsIm9uVHJhbnNhY3Rpb24iKSxvbkZvY3VzOmkoKCk9Pm51bGwsIm9uRm9jdXMiKSxvbkJsdXI6aSgoKT0+bnVsbCwib25CbHVyIiksb25EZXN0cm95OmkoKCk9Pm51bGwsIm9uRGVzdHJveSIpLG9uQ29udGVudEVycm9yOmkoKHtlcnJvcjp0fSk9Pnt0aHJvdyB0fSwib25Db250ZW50RXJyb3IiKSxvblBhc3RlOmkoKCk9Pm51bGwsIm9uUGFzdGUiKSxvbkRyb3A6aSgoKT0+bnVsbCwib25Ecm9wIil9LHRoaXMuaXNDYXB0dXJpbmdUcmFuc2FjdGlvbj0hMSx0aGlzLmNhcHR1cmVkVHJhbnNhY3Rpb249bnVsbCx0aGlzLnNldE9wdGlvbnMoZSksdGhpcy5jcmVhdGVFeHRlbnNpb25NYW5hZ2VyKCksdGhpcy5jcmVhdGVDb21tYW5kTWFuYWdlcigpLHRoaXMuY3JlYXRlU2NoZW1hKCksdGhpcy5vbigiYmVmb3JlQ3JlYXRlIix0aGlzLm9wdGlvbnMub25CZWZvcmVDcmVhdGUpLHRoaXMuZW1pdCgiYmVmb3JlQ3JlYXRlIix7ZWRpdG9yOnRoaXN9KSx0aGlzLm9uKCJjb250ZW50RXJyb3IiLHRoaXMub3B0aW9ucy5vbkNvbnRlbnRFcnJvciksdGhpcy5jcmVhdGVWaWV3KCksdGhpcy5pbmplY3RDU1MoKSx0aGlzLm9uKCJjcmVhdGUiLHRoaXMub3B0aW9ucy5vbkNyZWF0ZSksdGhpcy5vbigidXBkYXRlIix0aGlzLm9wdGlvbnMub25VcGRhdGUpLHRoaXMub24oInNlbGVjdGlvblVwZGF0ZSIsdGhpcy5vcHRpb25zLm9uU2VsZWN0aW9uVXBkYXRlKSx0aGlzLm9uKCJ0cmFuc2FjdGlvbiIsdGhpcy5vcHRpb25zLm9uVHJhbnNhY3Rpb24pLHRoaXMub24oImZvY3VzIix0aGlzLm9wdGlvbnMub25Gb2N1cyksdGhpcy5vbigiYmx1ciIsdGhpcy5vcHRpb25zLm9uQmx1ciksdGhpcy5vbigiZGVzdHJveSIsdGhpcy5vcHRpb25zLm9uRGVzdHJveSksdGhpcy5vbigiZHJvcCIsKHtldmVudDp0LHNsaWNlOmEsbW92ZWQ6cn0pPT50aGlzLm9wdGlvbnMub25Ecm9wKHQsYSxyKSksdGhpcy5vbigicGFzdGUiLCh7ZXZlbnQ6dCxzbGljZTphfSk9PnRoaXMub3B0aW9ucy5vblBhc3RlKHQsYSkpLHdpbmRvdy5zZXRUaW1lb3V0KCgpPT57dGhpcy5pc0Rlc3Ryb3llZHx8KHRoaXMuY29tbWFuZHMuZm9jdXModGhpcy5vcHRpb25zLmF1dG9mb2N1cyksdGhpcy5lbWl0KCJjcmVhdGUiLHtlZGl0b3I6dGhpc30pLHRoaXMuaXNJbml0aWFsaXplZD0hMCl9LDApfWdldCBzdG9yYWdlKCl7cmV0dXJuIHRoaXMuZXh0ZW5zaW9uU3RvcmFnZX1nZXQgY29tbWFuZHMoKXtyZXR1cm4gdGhpcy5jb21tYW5kTWFuYWdlci5jb21tYW5kc31jaGFpbigpe3JldHVybiB0aGlzLmNvbW1hbmRNYW5hZ2VyLmNoYWluKCl9Y2FuKCl7cmV0dXJuIHRoaXMuY29tbWFuZE1hbmFnZXIuY2FuKCl9aW5qZWN0Q1NTKCl7dGhpcy5vcHRpb25zLmluamVjdENTUyYmZG9jdW1lbnQmJih0aGlzLmNzcz1HYXQoVVphLHRoaXMub3B0aW9ucy5pbmplY3ROb25jZSkpfXNldE9wdGlvbnMoZT17fSl7dGhpcy5vcHRpb25zPXsuLi50aGlzLm9wdGlvbnMsLi4uZX0sISghdGhpcy52aWV3fHwhdGhpcy5zdGF0ZXx8dGhpcy5pc0Rlc3Ryb3llZCkmJih0aGlzLm9wdGlvbnMuZWRpdG9yUHJvcHMmJnRoaXMudmlldy5zZXRQcm9wcyh0aGlzLm9wdGlvbnMuZWRpdG9yUHJvcHMpLHRoaXMudmlldy51cGRhdGVTdGF0ZSh0aGlzLnN0YXRlKSl9c2V0RWRpdGFibGUoZSx0PSEwKXt0aGlzLnNldE9wdGlvbnMoe2VkaXRhYmxlOmV9KSx0JiZ0aGlzLmVtaXQoInVwZGF0ZSIse2VkaXRvcjp0aGlzLHRyYW5zYWN0aW9uOnRoaXMuc3RhdGUudHJ9KX1nZXQgaXNFZGl0YWJsZSgpe3JldHVybiB0aGlzLm9wdGlvbnMuZWRpdGFibGUmJnRoaXMudmlldyYmdGhpcy52aWV3LmVkaXRhYmxlfWdldCBzdGF0ZSgpe3JldHVybiB0aGlzLnZpZXcuc3RhdGV9cmVnaXN0ZXJQbHVnaW4oZSx0KXtsZXQgYT1rbGUodCk/dChlLFsuLi50aGlzLnN0YXRlLnBsdWdpbnNdKTpbLi4udGhpcy5zdGF0ZS5wbHVnaW5zLGVdLHI9dGhpcy5zdGF0ZS5yZWNvbmZpZ3VyZSh7cGx1Z2luczphfSk7cmV0dXJuIHRoaXMudmlldy51cGRhdGVTdGF0ZShyKSxyfXVucmVnaXN0ZXJQbHVnaW4oZSl7aWYodGhpcy5pc0Rlc3Ryb3llZClyZXR1cm47bGV0IHQ9dGhpcy5zdGF0ZS5wbHVnaW5zLGE9dDtpZihbXS5jb25jYXQoZSkuZm9yRWFjaChuPT57bGV0IG89dHlwZW9mIG49PSJzdHJpbmciP2Ake259JGA6bi5rZXk7YT1hLmZpbHRlcihsPT4hbC5rZXkuc3RhcnRzV2l0aChvKSl9KSx0Lmxlbmd0aD09PWEubGVuZ3RoKXJldHVybjtsZXQgcj10aGlzLnN0YXRlLnJlY29uZmlndXJlKHtwbHVnaW5zOmF9KTtyZXR1cm4gdGhpcy52aWV3LnVwZGF0ZVN0YXRlKHIpLHJ9Y3JlYXRlRXh0ZW5zaW9uTWFuYWdlcigpe3ZhciBlLHQ7bGV0IHI9Wy4uLnRoaXMub3B0aW9ucy5lbmFibGVDb3JlRXh0ZW5zaW9ucz9bTWhhLGJoYS5jb25maWd1cmUoe2Jsb2NrU2VwYXJhdG9yOih0PShlPXRoaXMub3B0aW9ucy5jb3JlRXh0ZW5zaW9uT3B0aW9ucyk9PT1udWxsfHxlPT09dm9pZCAwP3ZvaWQgMDplLmNsaXBib2FyZFRleHRTZXJpYWxpemVyKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQuYmxvY2tTZXBhcmF0b3J9KSxTaGEsQ2hhLFRoYSxEaGEsX2hhLCRoYV0uZmlsdGVyKG49PnR5cGVvZiB0aGlzLm9wdGlvbnMuZW5hYmxlQ29yZUV4dGVuc2lvbnM9PSJvYmplY3QiP3RoaXMub3B0aW9ucy5lbmFibGVDb3JlRXh0ZW5zaW9uc1tuLm5hbWVdIT09ITE6ITApOltdLC4uLnRoaXMub3B0aW9ucy5leHRlbnNpb25zXS5maWx0ZXIobj0+WyJleHRlbnNpb24iLCJub2RlIiwibWFyayJdLmluY2x1ZGVzKG4/LnR5cGUpKTt0aGlzLmV4dGVuc2lvbk1hbmFnZXI9bmV3IHlsZShyLHRoaXMpfWNyZWF0ZUNvbW1hbmRNYW5hZ2VyKCl7dGhpcy5jb21tYW5kTWFuYWdlcj1uZXcgUGgoe2VkaXRvcjp0aGlzfSl9Y3JlYXRlU2NoZW1hKCl7dGhpcy5zY2hlbWE9dGhpcy5leHRlbnNpb25NYW5hZ2VyLnNjaGVtYX1jcmVhdGVWaWV3KCl7dmFyIGU7bGV0IHQ7dHJ5e3Q9Y1godGhpcy5vcHRpb25zLmNvbnRlbnQsdGhpcy5zY2hlbWEsdGhpcy5vcHRpb25zLnBhcnNlT3B0aW9ucyx7ZXJyb3JPbkludmFsaWRDb250ZW50OnRoaXMub3B0aW9ucy5lbmFibGVDb250ZW50Q2hlY2t9KX1jYXRjaChvKXtpZighKG8gaW5zdGFuY2VvZiBFcnJvcil8fCFbIlt0aXB0YXAgZXJyb3JdOiBJbnZhbGlkIEpTT04gY29udGVudCIsIlt0aXB0YXAgZXJyb3JdOiBJbnZhbGlkIEhUTUwgY29udGVudCJdLmluY2x1ZGVzKG8ubWVzc2FnZSkpdGhyb3cgbzt0aGlzLmVtaXQoImNvbnRlbnRFcnJvciIse2VkaXRvcjp0aGlzLGVycm9yOm8sZGlzYWJsZUNvbGxhYm9yYXRpb246aSgoKT0+e3RoaXMuc3RvcmFnZS5jb2xsYWJvcmF0aW9uJiYodGhpcy5zdG9yYWdlLmNvbGxhYm9yYXRpb24uaXNEaXNhYmxlZD0hMCksdGhpcy5vcHRpb25zLmV4dGVuc2lvbnM9dGhpcy5vcHRpb25zLmV4dGVuc2lvbnMuZmlsdGVyKGw9PmwubmFtZSE9PSJjb2xsYWJvcmF0aW9uIiksdGhpcy5jcmVhdGVFeHRlbnNpb25NYW5hZ2VyKCl9LCJkaXNhYmxlQ29sbGFib3JhdGlvbiIpfSksdD1jWCh0aGlzLm9wdGlvbnMuY29udGVudCx0aGlzLnNjaGVtYSx0aGlzLm9wdGlvbnMucGFyc2VPcHRpb25zLHtlcnJvck9uSW52YWxpZENvbnRlbnQ6ITF9KX1sZXQgYT1UbGUodCx0aGlzLm9wdGlvbnMuYXV0b2ZvY3VzKTt0aGlzLnZpZXc9bmV3IFB2KHRoaXMub3B0aW9ucy5lbGVtZW50LHsuLi50aGlzLm9wdGlvbnMuZWRpdG9yUHJvcHMsYXR0cmlidXRlczp7cm9sZToidGV4dGJveCIsLi4uKGU9dGhpcy5vcHRpb25zLmVkaXRvclByb3BzKT09PW51bGx8fGU9PT12b2lkIDA/dm9pZCAwOmUuYXR0cmlidXRlc30sZGlzcGF0Y2hUcmFuc2FjdGlvbjp0aGlzLmRpc3BhdGNoVHJhbnNhY3Rpb24uYmluZCh0aGlzKSxzdGF0ZTpXWi5jcmVhdGUoe2RvYzp0LHNlbGVjdGlvbjphfHx2b2lkIDB9KX0pO2xldCByPXRoaXMuc3RhdGUucmVjb25maWd1cmUoe3BsdWdpbnM6dGhpcy5leHRlbnNpb25NYW5hZ2VyLnBsdWdpbnN9KTt0aGlzLnZpZXcudXBkYXRlU3RhdGUociksdGhpcy5jcmVhdGVOb2RlVmlld3MoKSx0aGlzLnByZXBlbmRDbGFzcygpO2xldCBuPXRoaXMudmlldy5kb207bi5lZGl0b3I9dGhpc31jcmVhdGVOb2RlVmlld3MoKXt0aGlzLnZpZXcuaXNEZXN0cm95ZWR8fHRoaXMudmlldy5zZXRQcm9wcyh7bm9kZVZpZXdzOnRoaXMuZXh0ZW5zaW9uTWFuYWdlci5ub2RlVmlld3N9KX1wcmVwZW5kQ2xhc3MoKXt0aGlzLnZpZXcuZG9tLmNsYXNzTmFtZT1gdGlwdGFwICR7dGhpcy52aWV3LmRvbS5jbGFzc05hbWV9YH1jYXB0dXJlVHJhbnNhY3Rpb24oZSl7dGhpcy5pc0NhcHR1cmluZ1RyYW5zYWN0aW9uPSEwLGUoKSx0aGlzLmlzQ2FwdHVyaW5nVHJhbnNhY3Rpb249ITE7bGV0IHQ9dGhpcy5jYXB0dXJlZFRyYW5zYWN0aW9uO3JldHVybiB0aGlzLmNhcHR1cmVkVHJhbnNhY3Rpb249bnVsbCx0fWRpc3BhdGNoVHJhbnNhY3Rpb24oZSl7aWYodGhpcy52aWV3LmlzRGVzdHJveWVkKXJldHVybjtpZih0aGlzLmlzQ2FwdHVyaW5nVHJhbnNhY3Rpb24pe2lmKCF0aGlzLmNhcHR1cmVkVHJhbnNhY3Rpb24pe3RoaXMuY2FwdHVyZWRUcmFuc2FjdGlvbj1lO3JldHVybn1lLnN0ZXBzLmZvckVhY2gobz0+e3ZhciBsO3JldHVybihsPXRoaXMuY2FwdHVyZWRUcmFuc2FjdGlvbik9PT1udWxsfHxsPT09dm9pZCAwP3ZvaWQgMDpsLnN0ZXAobyl9KTtyZXR1cm59bGV0IHQ9dGhpcy5zdGF0ZS5hcHBseShlKSxhPSF0aGlzLnN0YXRlLnNlbGVjdGlvbi5lcSh0LnNlbGVjdGlvbik7dGhpcy5lbWl0KCJiZWZvcmVUcmFuc2FjdGlvbiIse2VkaXRvcjp0aGlzLHRyYW5zYWN0aW9uOmUsbmV4dFN0YXRlOnR9KSx0aGlzLnZpZXcudXBkYXRlU3RhdGUodCksdGhpcy5lbWl0KCJ0cmFuc2FjdGlvbiIse2VkaXRvcjp0aGlzLHRyYW5zYWN0aW9uOmV9KSxhJiZ0aGlzLmVtaXQoInNlbGVjdGlvblVwZGF0ZSIse2VkaXRvcjp0aGlzLHRyYW5zYWN0aW9uOmV9KTtsZXQgcj1lLmdldE1ldGEoImZvY3VzIiksbj1lLmdldE1ldGEoImJsdXIiKTtyJiZ0aGlzLmVtaXQoImZvY3VzIix7ZWRpdG9yOnRoaXMsZXZlbnQ6ci5ldmVudCx0cmFuc2FjdGlvbjplfSksbiYmdGhpcy5lbWl0KCJibHVyIix7ZWRpdG9yOnRoaXMsZXZlbnQ6bi5ldmVudCx0cmFuc2FjdGlvbjplfSksISghZS5kb2NDaGFuZ2VkfHxlLmdldE1ldGEoInByZXZlbnRVcGRhdGUiKSkmJnRoaXMuZW1pdCgidXBkYXRlIix7ZWRpdG9yOnRoaXMsdHJhbnNhY3Rpb246ZX0pfWdldEF0dHJpYnV0ZXMoZSl7cmV0dXJuIGZYKHRoaXMuc3RhdGUsZSl9aXNBY3RpdmUoZSx0KXtsZXQgYT10eXBlb2YgZT09InN0cmluZyI/ZTpudWxsLHI9dHlwZW9mIGU9PSJzdHJpbmciP3Q6ZTtyZXR1cm4gV2F0KHRoaXMuc3RhdGUsYSxyKX1nZXRKU09OKCl7cmV0dXJuIHRoaXMuc3RhdGUuZG9jLnRvSlNPTigpfWdldEhUTUwoKXtyZXR1cm4gUnYodGhpcy5zdGF0ZS5kb2MuY29udGVudCx0aGlzLnNjaGVtYSl9Z2V0VGV4dChlKXtsZXR7YmxvY2tTZXBhcmF0b3I6dD1gCgpgLHRleHRTZXJpYWxpemVyczphPXt9fT1lfHx7fTtyZXR1cm4gRWxlKHRoaXMuc3RhdGUuZG9jLHtibG9ja1NlcGFyYXRvcjp0LHRleHRTZXJpYWxpemVyczp7Li4ublgodGhpcy5zY2hlbWEpLC4uLmF9fSl9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gcFgodGhpcy5zdGF0ZS5kb2MpfWdldENoYXJhY3RlckNvdW50KCl7cmV0dXJuIGNvbnNvbGUud2FybignW3RpcHRhcCB3YXJuXTogImVkaXRvci5nZXRDaGFyYWN0ZXJDb3VudCgpIiBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlICJlZGl0b3Iuc3RvcmFnZS5jaGFyYWN0ZXJDb3VudC5jaGFyYWN0ZXJzKCkiIGluc3RlYWQuJyksdGhpcy5zdGF0ZS5kb2MuY29udGVudC5zaXplLTJ9ZGVzdHJveSgpe2lmKHRoaXMuZW1pdCgiZGVzdHJveSIpLHRoaXMudmlldyl7bGV0IGU9dGhpcy52aWV3LmRvbTtlJiZlLmVkaXRvciYmZGVsZXRlIGUuZWRpdG9yLHRoaXMudmlldy5kZXN0cm95KCl9dGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoKX1nZXQgaXNEZXN0cm95ZWQoKXt2YXIgZTtyZXR1cm4hKCEoKGU9dGhpcy52aWV3KT09PW51bGx8fGU9PT12b2lkIDApJiZlLmRvY1ZpZXcpfSRub2RlKGUsdCl7dmFyIGE7cmV0dXJuKChhPXRoaXMuJGRvYyk9PT1udWxsfHxhPT09dm9pZCAwP3ZvaWQgMDphLnF1ZXJ5U2VsZWN0b3IoZSx0KSl8fG51bGx9JG5vZGVzKGUsdCl7dmFyIGE7cmV0dXJuKChhPXRoaXMuJGRvYyk9PT1udWxsfHxhPT09dm9pZCAwP3ZvaWQgMDphLnF1ZXJ5U2VsZWN0b3JBbGwoZSx0KSl8fG51bGx9JHBvcyhlKXtsZXQgdD10aGlzLnN0YXRlLmRvYy5yZXNvbHZlKGUpO3JldHVybiBuZXcgaFgodCx0aGlzKX1nZXQgJGRvYygpe3JldHVybiB0aGlzLiRwb3MoMCl9fTtpKHFjLCJtYXJrSW5wdXRSdWxlIik7aShIbGUsIm5vZGVJbnB1dFJ1bGUiKTtpKHVnLCJ0ZXh0YmxvY2tUeXBlSW5wdXRSdWxlIik7aShoaSwidGV4dElucHV0UnVsZSIpO2koT2QsIndyYXBwaW5nSW5wdXRSdWxlIik7c2k9Y2xhc3Mgc3tzdGF0aWN7aSh0aGlzLCJOb2RlIil9Y29uc3RydWN0b3IoZT17fSl7dGhpcy50eXBlPSJub2RlIix0aGlzLm5hbWU9Im5vZGUiLHRoaXMucGFyZW50PW51bGwsdGhpcy5jaGlsZD1udWxsLHRoaXMuY29uZmlnPXtuYW1lOnRoaXMubmFtZSxkZWZhdWx0T3B0aW9uczp7fX0sdGhpcy5jb25maWc9ey4uLnRoaXMuY29uZmlnLC4uLmV9LHRoaXMubmFtZT10aGlzLmNvbmZpZy5uYW1lLGUuZGVmYXVsdE9wdGlvbnMmJk9iamVjdC5rZXlzKGUuZGVmYXVsdE9wdGlvbnMpLmxlbmd0aD4wJiZjb25zb2xlLndhcm4oYFt0aXB0YXAgd2Fybl06IEJSRUFLSU5HIENIQU5HRTogImRlZmF1bHRPcHRpb25zIiBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlICJhZGRPcHRpb25zIiBpbnN0ZWFkLiBGb3VuZCBpbiBleHRlbnNpb246ICIke3RoaXMubmFtZX0iLmApLHRoaXMub3B0aW9ucz10aGlzLmNvbmZpZy5kZWZhdWx0T3B0aW9ucyx0aGlzLmNvbmZpZy5hZGRPcHRpb25zJiYodGhpcy5vcHRpb25zPWNhKER0KHRoaXMsImFkZE9wdGlvbnMiLHtuYW1lOnRoaXMubmFtZX0pKSksdGhpcy5zdG9yYWdlPWNhKER0KHRoaXMsImFkZFN0b3JhZ2UiLHtuYW1lOnRoaXMubmFtZSxvcHRpb25zOnRoaXMub3B0aW9uc30pKXx8e319c3RhdGljIGNyZWF0ZShlPXt9KXtyZXR1cm4gbmV3IHMoZSl9Y29uZmlndXJlKGU9e30pe2xldCB0PXRoaXMuZXh0ZW5kKHsuLi50aGlzLmNvbmZpZyxhZGRPcHRpb25zOmkoKCk9PkZ2KHRoaXMub3B0aW9ucyxlKSwiYWRkT3B0aW9ucyIpfSk7cmV0dXJuIHQubmFtZT10aGlzLm5hbWUsdC5wYXJlbnQ9dGhpcy5wYXJlbnQsdH1leHRlbmQoZT17fSl7bGV0IHQ9bmV3IHMoZSk7cmV0dXJuIHQucGFyZW50PXRoaXMsdGhpcy5jaGlsZD10LHQubmFtZT1lLm5hbWU/ZS5uYW1lOnQucGFyZW50Lm5hbWUsZS5kZWZhdWx0T3B0aW9ucyYmT2JqZWN0LmtleXMoZS5kZWZhdWx0T3B0aW9ucykubGVuZ3RoPjAmJmNvbnNvbGUud2FybihgW3RpcHRhcCB3YXJuXTogQlJFQUtJTkcgQ0hBTkdFOiAiZGVmYXVsdE9wdGlvbnMiIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgImFkZE9wdGlvbnMiIGluc3RlYWQuIEZvdW5kIGluIGV4dGVuc2lvbjogIiR7dC5uYW1lfSIuYCksdC5vcHRpb25zPWNhKER0KHQsImFkZE9wdGlvbnMiLHtuYW1lOnQubmFtZX0pKSx0LnN0b3JhZ2U9Y2EoRHQodCwiYWRkU3RvcmFnZSIse25hbWU6dC5uYW1lLG9wdGlvbnM6dC5vcHRpb25zfSkpLHR9fSxBbGU9Y2xhc3N7c3RhdGlje2kodGhpcywiTm9kZVZpZXciKX1jb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5pc0RyYWdnaW5nPSExLHRoaXMuY29tcG9uZW50PWUsdGhpcy5lZGl0b3I9dC5lZGl0b3IsdGhpcy5vcHRpb25zPXtzdG9wRXZlbnQ6bnVsbCxpZ25vcmVNdXRhdGlvbjpudWxsLC4uLmF9LHRoaXMuZXh0ZW5zaW9uPXQuZXh0ZW5zaW9uLHRoaXMubm9kZT10Lm5vZGUsdGhpcy5kZWNvcmF0aW9ucz10LmRlY29yYXRpb25zLHRoaXMuaW5uZXJEZWNvcmF0aW9ucz10LmlubmVyRGVjb3JhdGlvbnMsdGhpcy52aWV3PXQudmlldyx0aGlzLkhUTUxBdHRyaWJ1dGVzPXQuSFRNTEF0dHJpYnV0ZXMsdGhpcy5nZXRQb3M9dC5nZXRQb3MsdGhpcy5tb3VudCgpfW1vdW50KCl7fWdldCBkb20oKXtyZXR1cm4gdGhpcy5lZGl0b3Iudmlldy5kb219Z2V0IGNvbnRlbnRET00oKXtyZXR1cm4gbnVsbH1vbkRyYWdTdGFydChlKXt2YXIgdCxhLHIsbixvLGwscDtsZXR7dmlldzpkfT10aGlzLmVkaXRvcix1PWUudGFyZ2V0LGM9dS5ub2RlVHlwZT09PTM/KHQ9dS5wYXJlbnRFbGVtZW50KT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQuY2xvc2VzdCgiW2RhdGEtZHJhZy1oYW5kbGVdIik6dS5jbG9zZXN0KCJbZGF0YS1kcmFnLWhhbmRsZV0iKTtpZighdGhpcy5kb218fCEoKGE9dGhpcy5jb250ZW50RE9NKT09PW51bGx8fGE9PT12b2lkIDApJiZhLmNvbnRhaW5zKHUpfHwhYylyZXR1cm47bGV0IGI9MCx2PTA7aWYodGhpcy5kb20hPT1jKXtsZXQgTT10aGlzLmRvbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx6PWMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksTj0ocj1lLm9mZnNldFgpIT09bnVsbCYmciE9PXZvaWQgMD9yOihuPWUubmF0aXZlRXZlbnQpPT09bnVsbHx8bj09PXZvaWQgMD92b2lkIDA6bi5vZmZzZXRYLEM9KG89ZS5vZmZzZXRZKSE9PW51bGwmJm8hPT12b2lkIDA/bzoobD1lLm5hdGl2ZUV2ZW50KT09PW51bGx8fGw9PT12b2lkIDA/dm9pZCAwOmwub2Zmc2V0WTtiPXoueC1NLngrTix2PXoueS1NLnkrQ31sZXQgeD10aGlzLmRvbS5jbG9uZU5vZGUoITApOyhwPWUuZGF0YVRyYW5zZmVyKT09PW51bGx8fHA9PT12b2lkIDB8fHAuc2V0RHJhZ0ltYWdlKHgsYix2KTtsZXQgbT10aGlzLmdldFBvcygpO2lmKHR5cGVvZiBtIT0ibnVtYmVyIilyZXR1cm47bGV0IGY9RnQuY3JlYXRlKGQuc3RhdGUuZG9jLG0pLHk9ZC5zdGF0ZS50ci5zZXRTZWxlY3Rpb24oZik7ZC5kaXNwYXRjaCh5KX1zdG9wRXZlbnQoZSl7dmFyIHQ7aWYoIXRoaXMuZG9tKXJldHVybiExO2lmKHR5cGVvZiB0aGlzLm9wdGlvbnMuc3RvcEV2ZW50PT0iZnVuY3Rpb24iKXJldHVybiB0aGlzLm9wdGlvbnMuc3RvcEV2ZW50KHtldmVudDplfSk7bGV0IGE9ZS50YXJnZXQ7aWYoISh0aGlzLmRvbS5jb250YWlucyhhKSYmISghKCh0PXRoaXMuY29udGVudERPTSk9PT1udWxsfHx0PT09dm9pZCAwKSYmdC5jb250YWlucyhhKSkpKXJldHVybiExO2xldCBuPWUudHlwZS5zdGFydHNXaXRoKCJkcmFnIiksbz1lLnR5cGU9PT0iZHJvcCI7aWYoKFsiSU5QVVQiLCJCVVRUT04iLCJTRUxFQ1QiLCJURVhUQVJFQSJdLmluY2x1ZGVzKGEudGFnTmFtZSl8fGEuaXNDb250ZW50RWRpdGFibGUpJiYhbyYmIW4pcmV0dXJuITA7bGV0e2lzRWRpdGFibGU6cH09dGhpcy5lZGl0b3Ise2lzRHJhZ2dpbmc6ZH09dGhpcyx1PSEhdGhpcy5ub2RlLnR5cGUuc3BlYy5kcmFnZ2FibGUsYz1GdC5pc1NlbGVjdGFibGUodGhpcy5ub2RlKSxiPWUudHlwZT09PSJjb3B5Iix2PWUudHlwZT09PSJwYXN0ZSIseD1lLnR5cGU9PT0iY3V0IixtPWUudHlwZT09PSJtb3VzZWRvd24iO2lmKCF1JiZjJiZuJiZlLnRhcmdldD09PXRoaXMuZG9tJiZlLnByZXZlbnREZWZhdWx0KCksdSYmbiYmIWQmJmUudGFyZ2V0PT09dGhpcy5kb20pcmV0dXJuIGUucHJldmVudERlZmF1bHQoKSwhMTtpZih1JiZwJiYhZCYmbSl7bGV0IGY9YS5jbG9zZXN0KCJbZGF0YS1kcmFnLWhhbmRsZV0iKTtmJiYodGhpcy5kb209PT1mfHx0aGlzLmRvbS5jb250YWlucyhmKSkmJih0aGlzLmlzRHJhZ2dpbmc9ITAsZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ2VuZCIsKCk9Pnt0aGlzLmlzRHJhZ2dpbmc9ITF9LHtvbmNlOiEwfSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZHJvcCIsKCk9Pnt0aGlzLmlzRHJhZ2dpbmc9ITF9LHtvbmNlOiEwfSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsKCk9Pnt0aGlzLmlzRHJhZ2dpbmc9ITF9LHtvbmNlOiEwfSkpfXJldHVybiEoZHx8b3x8Ynx8dnx8eHx8bSYmYyl9aWdub3JlTXV0YXRpb24oZSl7cmV0dXJuIXRoaXMuZG9tfHwhdGhpcy5jb250ZW50RE9NPyEwOnR5cGVvZiB0aGlzLm9wdGlvbnMuaWdub3JlTXV0YXRpb249PSJmdW5jdGlvbiI/dGhpcy5vcHRpb25zLmlnbm9yZU11dGF0aW9uKHttdXRhdGlvbjplfSk6dGhpcy5ub2RlLmlzTGVhZnx8dGhpcy5ub2RlLmlzQXRvbT8hMDplLnR5cGU9PT0ic2VsZWN0aW9uInx8dGhpcy5kb20uY29udGFpbnMoZS50YXJnZXQpJiZlLnR5cGU9PT0iY2hpbGRMaXN0IiYmKG5nKCl8fCRhdCgpKSYmdGhpcy5lZGl0b3IuaXNGb2N1c2VkJiZbLi4uQXJyYXkuZnJvbShlLmFkZGVkTm9kZXMpLC4uLkFycmF5LmZyb20oZS5yZW1vdmVkTm9kZXMpXS5ldmVyeShhPT5hLmlzQ29udGVudEVkaXRhYmxlKT8hMTp0aGlzLmNvbnRlbnRET009PT1lLnRhcmdldCYmZS50eXBlPT09ImF0dHJpYnV0ZXMiPyEwOiF0aGlzLmNvbnRlbnRET00uY29udGFpbnMoZS50YXJnZXQpfXVwZGF0ZUF0dHJpYnV0ZXMoZSl7dGhpcy5lZGl0b3IuY29tbWFuZHMuY29tbWFuZCgoe3RyOnR9KT0+e2xldCBhPXRoaXMuZ2V0UG9zKCk7cmV0dXJuIHR5cGVvZiBhIT0ibnVtYmVyIj8hMToodC5zZXROb2RlTWFya3VwKGEsdm9pZCAwLHsuLi50aGlzLm5vZGUuYXR0cnMsLi4uZX0pLCEwKX0pfWRlbGV0ZU5vZGUoKXtsZXQgZT10aGlzLmdldFBvcygpO2lmKHR5cGVvZiBlIT0ibnVtYmVyIilyZXR1cm47bGV0IHQ9ZSt0aGlzLm5vZGUubm9kZVNpemU7dGhpcy5lZGl0b3IuY29tbWFuZHMuZGVsZXRlUmFuZ2Uoe2Zyb206ZSx0bzp0fSl9fTtpKFRsLCJtYXJrUGFzdGVSdWxlIik7aShxbGUsImNhbkluc2VydE5vZGUiKTtpKEhoYSwiZXNjYXBlRm9yUmVnRXgiKTtpKHFoYSwiaXNTdHJpbmciKTtpKGpoYSwibm9kZVBhc3RlUnVsZSIpO2koVmhhLCJ0ZXh0UGFzdGVSdWxlIik7TmxlPWNsYXNze3N0YXRpY3tpKHRoaXMsIlRyYWNrZXIiKX1jb25zdHJ1Y3RvcihlKXt0aGlzLnRyYW5zYWN0aW9uPWUsdGhpcy5jdXJyZW50U3RlcD10aGlzLnRyYW5zYWN0aW9uLnN0ZXBzLmxlbmd0aH1tYXAoZSl7bGV0IHQ9ITE7cmV0dXJue3Bvc2l0aW9uOnRoaXMudHJhbnNhY3Rpb24uc3RlcHMuc2xpY2UodGhpcy5jdXJyZW50U3RlcCkucmVkdWNlKChyLG4pPT57bGV0IG89bi5nZXRNYXAoKS5tYXBSZXN1bHQocik7cmV0dXJuIG8uZGVsZXRlZCYmKHQ9ITApLG8ucG9zfSxlKSxkZWxldGVkOnR9fX19KTt2YXIgVWhhLGpsZSxXaGE9ZygoKT0+e2lpKCk7VWhhPS9eXHMqPlxzJC8samxlPXNpLmNyZWF0ZSh7bmFtZToiYmxvY2txdW90ZSIsYWRkT3B0aW9ucygpe3JldHVybntIVE1MQXR0cmlidXRlczp7fX19LGNvbnRlbnQ6ImJsb2NrKyIsZ3JvdXA6ImJsb2NrIixkZWZpbmluZzohMCxwYXJzZUhUTUwoKXtyZXR1cm5be3RhZzoiYmxvY2txdW90ZSJ9XX0scmVuZGVySFRNTCh7SFRNTEF0dHJpYnV0ZXM6c30pe3JldHVyblsiYmxvY2txdW90ZSIsYXModGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLHMpLDBdfSxhZGRDb21tYW5kcygpe3JldHVybntzZXRCbG9ja3F1b3RlOmkoKCk9Pih7Y29tbWFuZHM6c30pPT5zLndyYXBJbih0aGlzLm5hbWUpLCJzZXRCbG9ja3F1b3RlIiksdG9nZ2xlQmxvY2txdW90ZTppKCgpPT4oe2NvbW1hbmRzOnN9KT0+cy50b2dnbGVXcmFwKHRoaXMubmFtZSksInRvZ2dsZUJsb2NrcXVvdGUiKSx1bnNldEJsb2NrcXVvdGU6aSgoKT0+KHtjb21tYW5kczpzfSk9PnMubGlmdCh0aGlzLm5hbWUpLCJ1bnNldEJsb2NrcXVvdGUiKX19LGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7cmV0dXJueyJNb2QtU2hpZnQtYiI6aSgoKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlQmxvY2txdW90ZSgpLCJNb2QtU2hpZnQtYiIpfX0sYWRkSW5wdXRSdWxlcygpe3JldHVybltPZCh7ZmluZDpVaGEsdHlwZTp0aGlzLnR5cGV9KV19fSl9KTt2YXIgR2hhLEtoYSxZaGEsWmhhLFZsZSxYaGE9ZygoKT0+e2lpKCk7R2hhPS8oPzpefFxzKShcKlwqKD8hXHMrXCpcKikoKD86W14qXSspKVwqXCooPyFccytcKlwqKSkkLyxLaGE9Lyg/Ol58XHMpKFwqXCooPyFccytcKlwqKSgoPzpbXipdKykpXCpcKig/IVxzK1wqXCopKS9nLFloYT0vKD86XnxccykoX18oPyFccytfXykoKD86W15fXSspKV9fKD8hXHMrX18pKSQvLFpoYT0vKD86XnxccykoX18oPyFccytfXykoKD86W15fXSspKV9fKD8hXHMrX18pKS9nLFZsZT1Eby5jcmVhdGUoe25hbWU6ImJvbGQiLGFkZE9wdGlvbnMoKXtyZXR1cm57SFRNTEF0dHJpYnV0ZXM6e319fSxwYXJzZUhUTUwoKXtyZXR1cm5be3RhZzoic3Ryb25nIn0se3RhZzoiYiIsZ2V0QXR0cnM6aShzPT5zLnN0eWxlLmZvbnRXZWlnaHQhPT0ibm9ybWFsIiYmbnVsbCwiZ2V0QXR0cnMiKX0se3N0eWxlOiJmb250LXdlaWdodD00MDAiLGNsZWFyTWFyazppKHM9PnMudHlwZS5uYW1lPT09dGhpcy5uYW1lLCJjbGVhck1hcmsiKX0se3N0eWxlOiJmb250LXdlaWdodCIsZ2V0QXR0cnM6aShzPT4vXihib2xkKGVyKT98WzUtOV1cZHsyLH0pJC8udGVzdChzKSYmbnVsbCwiZ2V0QXR0cnMiKX1dfSxyZW5kZXJIVE1MKHtIVE1MQXR0cmlidXRlczpzfSl7cmV0dXJuWyJzdHJvbmciLGFzKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxzKSwwXX0sYWRkQ29tbWFuZHMoKXtyZXR1cm57c2V0Qm9sZDppKCgpPT4oe2NvbW1hbmRzOnN9KT0+cy5zZXRNYXJrKHRoaXMubmFtZSksInNldEJvbGQiKSx0b2dnbGVCb2xkOmkoKCk9Pih7Y29tbWFuZHM6c30pPT5zLnRvZ2dsZU1hcmsodGhpcy5uYW1lKSwidG9nZ2xlQm9sZCIpLHVuc2V0Qm9sZDppKCgpPT4oe2NvbW1hbmRzOnN9KT0+cy51bnNldE1hcmsodGhpcy5uYW1lKSwidW5zZXRCb2xkIil9fSxhZGRLZXlib2FyZFNob3J0Y3V0cygpe3JldHVybnsiTW9kLWIiOmkoKCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnRvZ2dsZUJvbGQoKSwiTW9kLWIiKSwiTW9kLUIiOmkoKCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnRvZ2dsZUJvbGQoKSwiTW9kLUIiKX19LGFkZElucHV0UnVsZXMoKXtyZXR1cm5bcWMoe2ZpbmQ6R2hhLHR5cGU6dGhpcy50eXBlfSkscWMoe2ZpbmQ6WWhhLHR5cGU6dGhpcy50eXBlfSldfSxhZGRQYXN0ZVJ1bGVzKCl7cmV0dXJuW1RsKHtmaW5kOktoYSx0eXBlOnRoaXMudHlwZX0pLFRsKHtmaW5kOlpoYSx0eXBlOnRoaXMudHlwZX0pXX19KX0pO3ZhciBXWmEsUWhhLFlhdCxVbGUsSmhhPWcoKCk9PntpaSgpO1daYT0ibGlzdEl0ZW0iLFFoYT0idGV4dFN0eWxlIixZYXQ9L15ccyooWy0rKl0pXHMkLyxVbGU9c2kuY3JlYXRlKHtuYW1lOiJidWxsZXRMaXN0IixhZGRPcHRpb25zKCl7cmV0dXJue2l0ZW1UeXBlTmFtZToibGlzdEl0ZW0iLEhUTUxBdHRyaWJ1dGVzOnt9LGtlZXBNYXJrczohMSxrZWVwQXR0cmlidXRlczohMX19LGdyb3VwOiJibG9jayBsaXN0Iixjb250ZW50KCl7cmV0dXJuYCR7dGhpcy5vcHRpb25zLml0ZW1UeXBlTmFtZX0rYH0scGFyc2VIVE1MKCl7cmV0dXJuW3t0YWc6InVsIn1dfSxyZW5kZXJIVE1MKHtIVE1MQXR0cmlidXRlczpzfSl7cmV0dXJuWyJ1bCIsYXModGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLHMpLDBdfSxhZGRDb21tYW5kcygpe3JldHVybnt0b2dnbGVCdWxsZXRMaXN0OmkoKCk9Pih7Y29tbWFuZHM6cyxjaGFpbjplfSk9PnRoaXMub3B0aW9ucy5rZWVwQXR0cmlidXRlcz9lKCkudG9nZ2xlTGlzdCh0aGlzLm5hbWUsdGhpcy5vcHRpb25zLml0ZW1UeXBlTmFtZSx0aGlzLm9wdGlvbnMua2VlcE1hcmtzKS51cGRhdGVBdHRyaWJ1dGVzKFdaYSx0aGlzLmVkaXRvci5nZXRBdHRyaWJ1dGVzKFFoYSkpLnJ1bigpOnMudG9nZ2xlTGlzdCh0aGlzLm5hbWUsdGhpcy5vcHRpb25zLml0ZW1UeXBlTmFtZSx0aGlzLm9wdGlvbnMua2VlcE1hcmtzKSwidG9nZ2xlQnVsbGV0TGlzdCIpfX0sYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtyZXR1cm57Ik1vZC1TaGlmdC04IjppKCgpPT50aGlzLmVkaXRvci5jb21tYW5kcy50b2dnbGVCdWxsZXRMaXN0KCksIk1vZC1TaGlmdC04Iil9fSxhZGRJbnB1dFJ1bGVzKCl7bGV0IHM9T2Qoe2ZpbmQ6WWF0LHR5cGU6dGhpcy50eXBlfSk7cmV0dXJuKHRoaXMub3B0aW9ucy5rZWVwTWFya3N8fHRoaXMub3B0aW9ucy5rZWVwQXR0cmlidXRlcykmJihzPU9kKHtmaW5kOllhdCx0eXBlOnRoaXMudHlwZSxrZWVwTWFya3M6dGhpcy5vcHRpb25zLmtlZXBNYXJrcyxrZWVwQXR0cmlidXRlczp0aGlzLm9wdGlvbnMua2VlcEF0dHJpYnV0ZXMsZ2V0QXR0cmlidXRlczppKCgpPT50aGlzLmVkaXRvci5nZXRBdHRyaWJ1dGVzKFFoYSksImdldEF0dHJpYnV0ZXMiKSxlZGl0b3I6dGhpcy5lZGl0b3J9KSksW3NdfX0pfSk7dmFyIGU0YSx0NGEsV2xlLGE0YT1nKCgpPT57aWkoKTtlNGE9LyhefFteYF0pYChbXmBdKylgKD8hYCkvLHQ0YT0vKF58W15gXSlgKFteYF0rKWAoPyFgKS9nLFdsZT1Eby5jcmVhdGUoe25hbWU6ImNvZGUiLGFkZE9wdGlvbnMoKXtyZXR1cm57SFRNTEF0dHJpYnV0ZXM6e319fSxleGNsdWRlczoiXyIsY29kZTohMCxleGl0YWJsZTohMCxwYXJzZUhUTUwoKXtyZXR1cm5be3RhZzoiY29kZSJ9XX0scmVuZGVySFRNTCh7SFRNTEF0dHJpYnV0ZXM6c30pe3JldHVyblsiY29kZSIsYXModGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLHMpLDBdfSxhZGRDb21tYW5kcygpe3JldHVybntzZXRDb2RlOmkoKCk9Pih7Y29tbWFuZHM6c30pPT5zLnNldE1hcmsodGhpcy5uYW1lKSwic2V0Q29kZSIpLHRvZ2dsZUNvZGU6aSgoKT0+KHtjb21tYW5kczpzfSk9PnMudG9nZ2xlTWFyayh0aGlzLm5hbWUpLCJ0b2dnbGVDb2RlIiksdW5zZXRDb2RlOmkoKCk9Pih7Y29tbWFuZHM6c30pPT5zLnVuc2V0TWFyayh0aGlzLm5hbWUpLCJ1bnNldENvZGUiKX19LGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7cmV0dXJueyJNb2QtZSI6aSgoKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlQ29kZSgpLCJNb2QtZSIpfX0sYWRkSW5wdXRSdWxlcygpe3JldHVybltxYyh7ZmluZDplNGEsdHlwZTp0aGlzLnR5cGV9KV19LGFkZFBhc3RlUnVsZXMoKXtyZXR1cm5bVGwoe2ZpbmQ6dDRhLHR5cGU6dGhpcy50eXBlfSldfX0pfSk7dmFyIHM0YSxpNGEsR2xlLHI0YT1nKCgpPT57aWkoKTtHWigpO3M0YT0vXmBgYChbYS16XSspP1tcc1xuXSQvLGk0YT0vXn5+fihbYS16XSspP1tcc1xuXSQvLEdsZT1zaS5jcmVhdGUoe25hbWU6ImNvZGVCbG9jayIsYWRkT3B0aW9ucygpe3JldHVybntsYW5ndWFnZUNsYXNzUHJlZml4OiJsYW5ndWFnZS0iLGV4aXRPblRyaXBsZUVudGVyOiEwLGV4aXRPbkFycm93RG93bjohMCxkZWZhdWx0TGFuZ3VhZ2U6bnVsbCxIVE1MQXR0cmlidXRlczp7fX19LGNvbnRlbnQ6InRleHQqIixtYXJrczoiIixncm91cDoiYmxvY2siLGNvZGU6ITAsZGVmaW5pbmc6ITAsYWRkQXR0cmlidXRlcygpe3JldHVybntsYW5ndWFnZTp7ZGVmYXVsdDp0aGlzLm9wdGlvbnMuZGVmYXVsdExhbmd1YWdlLHBhcnNlSFRNTDppKHM9Pnt2YXIgZTtsZXR7bGFuZ3VhZ2VDbGFzc1ByZWZpeDp0fT10aGlzLm9wdGlvbnMsbj1bLi4uKChlPXMuZmlyc3RFbGVtZW50Q2hpbGQpPT09bnVsbHx8ZT09PXZvaWQgMD92b2lkIDA6ZS5jbGFzc0xpc3QpfHxbXV0uZmlsdGVyKG89Pm8uc3RhcnRzV2l0aCh0KSkubWFwKG89Pm8ucmVwbGFjZSh0LCIiKSlbMF07cmV0dXJuIG58fG51bGx9LCJwYXJzZUhUTUwiKSxyZW5kZXJlZDohMX19fSxwYXJzZUhUTUwoKXtyZXR1cm5be3RhZzoicHJlIixwcmVzZXJ2ZVdoaXRlc3BhY2U6ImZ1bGwifV19LHJlbmRlckhUTUwoe25vZGU6cyxIVE1MQXR0cmlidXRlczplfSl7cmV0dXJuWyJwcmUiLGFzKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxlKSxbImNvZGUiLHtjbGFzczpzLmF0dHJzLmxhbmd1YWdlP3RoaXMub3B0aW9ucy5sYW5ndWFnZUNsYXNzUHJlZml4K3MuYXR0cnMubGFuZ3VhZ2U6bnVsbH0sMF1dfSxhZGRDb21tYW5kcygpe3JldHVybntzZXRDb2RlQmxvY2s6aShzPT4oe2NvbW1hbmRzOmV9KT0+ZS5zZXROb2RlKHRoaXMubmFtZSxzKSwic2V0Q29kZUJsb2NrIiksdG9nZ2xlQ29kZUJsb2NrOmkocz0+KHtjb21tYW5kczplfSk9PmUudG9nZ2xlTm9kZSh0aGlzLm5hbWUsInBhcmFncmFwaCIscyksInRvZ2dsZUNvZGVCbG9jayIpfX0sYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtyZXR1cm57Ik1vZC1BbHQtYyI6aSgoKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlQ29kZUJsb2NrKCksIk1vZC1BbHQtYyIpLEJhY2tzcGFjZTppKCgpPT57bGV0e2VtcHR5OnMsJGFuY2hvcjplfT10aGlzLmVkaXRvci5zdGF0ZS5zZWxlY3Rpb24sdD1lLnBvcz09PTE7cmV0dXJuIXN8fGUucGFyZW50LnR5cGUubmFtZSE9PXRoaXMubmFtZT8hMTp0fHwhZS5wYXJlbnQudGV4dENvbnRlbnQubGVuZ3RoP3RoaXMuZWRpdG9yLmNvbW1hbmRzLmNsZWFyTm9kZXMoKTohMX0sIkJhY2tzcGFjZSIpLEVudGVyOmkoKHtlZGl0b3I6c30pPT57aWYoIXRoaXMub3B0aW9ucy5leGl0T25UcmlwbGVFbnRlcilyZXR1cm4hMTtsZXR7c3RhdGU6ZX09cyx7c2VsZWN0aW9uOnR9PWUseyRmcm9tOmEsZW1wdHk6cn09dDtpZighcnx8YS5wYXJlbnQudHlwZSE9PXRoaXMudHlwZSlyZXR1cm4hMTtsZXQgbj1hLnBhcmVudE9mZnNldD09PWEucGFyZW50Lm5vZGVTaXplLTIsbz1hLnBhcmVudC50ZXh0Q29udGVudC5lbmRzV2l0aChgCgpgKTtyZXR1cm4hbnx8IW8/ITE6cy5jaGFpbigpLmNvbW1hbmQoKHt0cjpsfSk9PihsLmRlbGV0ZShhLnBvcy0yLGEucG9zKSwhMCkpLmV4aXRDb2RlKCkucnVuKCl9LCJFbnRlciIpLEFycm93RG93bjppKCh7ZWRpdG9yOnN9KT0+e2lmKCF0aGlzLm9wdGlvbnMuZXhpdE9uQXJyb3dEb3duKXJldHVybiExO2xldHtzdGF0ZTplfT1zLHtzZWxlY3Rpb246dCxkb2M6YX09ZSx7JGZyb206cixlbXB0eTpufT10O2lmKCFufHxyLnBhcmVudC50eXBlIT09dGhpcy50eXBlfHwhKHIucGFyZW50T2Zmc2V0PT09ci5wYXJlbnQubm9kZVNpemUtMikpcmV0dXJuITE7bGV0IGw9ci5hZnRlcigpO3JldHVybiBsPT09dm9pZCAwPyExOmEubm9kZUF0KGwpP3MuY29tbWFuZHMuY29tbWFuZCgoe3RyOmR9KT0+KGQuc2V0U2VsZWN0aW9uKFF0Lm5lYXIoYS5yZXNvbHZlKGwpKSksITApKTpzLmNvbW1hbmRzLmV4aXRDb2RlKCl9LCJBcnJvd0Rvd24iKX19LGFkZElucHV0UnVsZXMoKXtyZXR1cm5bdWcoe2ZpbmQ6czRhLHR5cGU6dGhpcy50eXBlLGdldEF0dHJpYnV0ZXM6aShzPT4oe2xhbmd1YWdlOnNbMV19KSwiZ2V0QXR0cmlidXRlcyIpfSksdWcoe2ZpbmQ6aTRhLHR5cGU6dGhpcy50eXBlLGdldEF0dHJpYnV0ZXM6aShzPT4oe2xhbmd1YWdlOnNbMV19KSwiZ2V0QXR0cmlidXRlcyIpfSldfSxhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtyZXR1cm5bbmV3IFlzKHtrZXk6bmV3ICRyKCJjb2RlQmxvY2tWU0NvZGVIYW5kbGVyIikscHJvcHM6e2hhbmRsZVBhc3RlOmkoKHMsZSk9PntpZighZS5jbGlwYm9hcmREYXRhfHx0aGlzLmVkaXRvci5pc0FjdGl2ZSh0aGlzLnR5cGUubmFtZSkpcmV0dXJuITE7bGV0IHQ9ZS5jbGlwYm9hcmREYXRhLmdldERhdGEoInRleHQvcGxhaW4iKSxhPWUuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCJ2c2NvZGUtZWRpdG9yLWRhdGEiKSxyPWE/SlNPTi5wYXJzZShhKTp2b2lkIDAsbj1yPy5tb2RlO2lmKCF0fHwhbilyZXR1cm4hMTtsZXR7dHI6byxzY2hlbWE6bH09cy5zdGF0ZSxwPWwudGV4dCh0LnJlcGxhY2UoL1xyXG4/L2csYApgKSk7cmV0dXJuIG8ucmVwbGFjZVNlbGVjdGlvbldpdGgodGhpcy50eXBlLmNyZWF0ZSh7bGFuZ3VhZ2U6bn0scCkpLG8uc2VsZWN0aW9uLiRmcm9tLnBhcmVudC50eXBlIT09dGhpcy50eXBlJiZvLnNldFNlbGVjdGlvbihKdC5uZWFyKG8uZG9jLnJlc29sdmUoTWF0aC5tYXgoMCxvLnNlbGVjdGlvbi5mcm9tLTIpKSkpLG8uc2V0TWV0YSgicGFzdGUiLCEwKSxzLmRpc3BhdGNoKG8pLCEwfSwiaGFuZGxlUGFzdGUiKX19KV19fSl9KTt2YXIgS2xlLG80YT1nKCgpPT57aWkoKTtLbGU9c2kuY3JlYXRlKHtuYW1lOiJkb2MiLHRvcE5vZGU6ITAsY29udGVudDoiYmxvY2srIn0pfSk7ZnVuY3Rpb24gWGF0KHM9e30pe3JldHVybiBuZXcgWXMoe3ZpZXcoZSl7cmV0dXJuIG5ldyBaYXQoZSxzKX19KX12YXIgWmF0LG40YT1nKCgpPT57cnUoKTt6aCgpO2koWGF0LCJkcm9wQ3Vyc29yIik7WmF0PWNsYXNze3N0YXRpY3tpKHRoaXMsIkRyb3BDdXJzb3JWaWV3Iil9Y29uc3RydWN0b3IoZSx0KXt2YXIgYTt0aGlzLmVkaXRvclZpZXc9ZSx0aGlzLmN1cnNvclBvcz1udWxsLHRoaXMuZWxlbWVudD1udWxsLHRoaXMudGltZW91dD0tMSx0aGlzLndpZHRoPShhPXQud2lkdGgpIT09bnVsbCYmYSE9PXZvaWQgMD9hOjEsdGhpcy5jb2xvcj10LmNvbG9yPT09ITE/dm9pZCAwOnQuY29sb3J8fCJibGFjayIsdGhpcy5jbGFzcz10LmNsYXNzLHRoaXMuaGFuZGxlcnM9WyJkcmFnb3ZlciIsImRyYWdlbmQiLCJkcm9wIiwiZHJhZ2xlYXZlIl0ubWFwKHI9PntsZXQgbj1pKG89Pnt0aGlzW3JdKG8pfSwiaGFuZGxlciIpO3JldHVybiBlLmRvbS5hZGRFdmVudExpc3RlbmVyKHIsbikse25hbWU6cixoYW5kbGVyOm59fSl9ZGVzdHJveSgpe3RoaXMuaGFuZGxlcnMuZm9yRWFjaCgoe25hbWU6ZSxoYW5kbGVyOnR9KT0+dGhpcy5lZGl0b3JWaWV3LmRvbS5yZW1vdmVFdmVudExpc3RlbmVyKGUsdCkpfXVwZGF0ZShlLHQpe3RoaXMuY3Vyc29yUG9zIT1udWxsJiZ0LmRvYyE9ZS5zdGF0ZS5kb2MmJih0aGlzLmN1cnNvclBvcz5lLnN0YXRlLmRvYy5jb250ZW50LnNpemU/dGhpcy5zZXRDdXJzb3IobnVsbCk6dGhpcy51cGRhdGVPdmVybGF5KCkpfXNldEN1cnNvcihlKXtlIT10aGlzLmN1cnNvclBvcyYmKHRoaXMuY3Vyc29yUG9zPWUsZT09bnVsbD8odGhpcy5lbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KSx0aGlzLmVsZW1lbnQ9bnVsbCk6dGhpcy51cGRhdGVPdmVybGF5KCkpfXVwZGF0ZU92ZXJsYXkoKXtsZXQgZT10aGlzLmVkaXRvclZpZXcuc3RhdGUuZG9jLnJlc29sdmUodGhpcy5jdXJzb3JQb3MpLHQ9IWUucGFyZW50LmlubGluZUNvbnRlbnQsYSxyPXRoaXMuZWRpdG9yVmlldy5kb20sbj1yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89bi53aWR0aC9yLm9mZnNldFdpZHRoLGw9bi5oZWlnaHQvci5vZmZzZXRIZWlnaHQ7aWYodCl7bGV0IGM9ZS5ub2RlQmVmb3JlLGI9ZS5ub2RlQWZ0ZXI7aWYoY3x8Yil7bGV0IHY9dGhpcy5lZGl0b3JWaWV3Lm5vZGVET00odGhpcy5jdXJzb3JQb3MtKGM/Yy5ub2RlU2l6ZTowKSk7aWYodil7bGV0IHg9di5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxtPWM/eC5ib3R0b206eC50b3A7YyYmYiYmKG09KG0rdGhpcy5lZGl0b3JWaWV3Lm5vZGVET00odGhpcy5jdXJzb3JQb3MpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCkvMik7bGV0IGY9dGhpcy53aWR0aC8yKmw7YT17bGVmdDp4LmxlZnQscmlnaHQ6eC5yaWdodCx0b3A6bS1mLGJvdHRvbTptK2Z9fX19aWYoIWEpe2xldCBjPXRoaXMuZWRpdG9yVmlldy5jb29yZHNBdFBvcyh0aGlzLmN1cnNvclBvcyksYj10aGlzLndpZHRoLzIqbzthPXtsZWZ0OmMubGVmdC1iLHJpZ2h0OmMubGVmdCtiLHRvcDpjLnRvcCxib3R0b206Yy5ib3R0b219fWxldCBwPXRoaXMuZWRpdG9yVmlldy5kb20ub2Zmc2V0UGFyZW50O3RoaXMuZWxlbWVudHx8KHRoaXMuZWxlbWVudD1wLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKSx0aGlzLmNsYXNzJiYodGhpcy5lbGVtZW50LmNsYXNzTmFtZT10aGlzLmNsYXNzKSx0aGlzLmVsZW1lbnQuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiA1MDsgcG9pbnRlci1ldmVudHM6IG5vbmU7Iix0aGlzLmNvbG9yJiYodGhpcy5lbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvcj10aGlzLmNvbG9yKSksdGhpcy5lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInByb3NlbWlycm9yLWRyb3BjdXJzb3ItYmxvY2siLHQpLHRoaXMuZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJwcm9zZW1pcnJvci1kcm9wY3Vyc29yLWlubGluZSIsIXQpO2xldCBkLHU7aWYoIXB8fHA9PWRvY3VtZW50LmJvZHkmJmdldENvbXB1dGVkU3R5bGUocCkucG9zaXRpb249PSJzdGF0aWMiKWQ9LXBhZ2VYT2Zmc2V0LHU9LXBhZ2VZT2Zmc2V0O2Vsc2V7bGV0IGM9cC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxiPWMud2lkdGgvcC5vZmZzZXRXaWR0aCx2PWMuaGVpZ2h0L3Aub2Zmc2V0SGVpZ2h0O2Q9Yy5sZWZ0LXAuc2Nyb2xsTGVmdCpiLHU9Yy50b3AtcC5zY3JvbGxUb3Aqdn10aGlzLmVsZW1lbnQuc3R5bGUubGVmdD0oYS5sZWZ0LWQpL28rInB4Iix0aGlzLmVsZW1lbnQuc3R5bGUudG9wPShhLnRvcC11KS9sKyJweCIsdGhpcy5lbGVtZW50LnN0eWxlLndpZHRoPShhLnJpZ2h0LWEubGVmdCkvbysicHgiLHRoaXMuZWxlbWVudC5zdHlsZS5oZWlnaHQ9KGEuYm90dG9tLWEudG9wKS9sKyJweCJ9c2NoZWR1bGVSZW1vdmFsKGUpe2NsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpLHRoaXMudGltZW91dD1zZXRUaW1lb3V0KCgpPT50aGlzLnNldEN1cnNvcihudWxsKSxlKX1kcmFnb3ZlcihlKXtpZighdGhpcy5lZGl0b3JWaWV3LmVkaXRhYmxlKXJldHVybjtsZXQgdD10aGlzLmVkaXRvclZpZXcucG9zQXRDb29yZHMoe2xlZnQ6ZS5jbGllbnRYLHRvcDplLmNsaWVudFl9KSxhPXQmJnQuaW5zaWRlPj0wJiZ0aGlzLmVkaXRvclZpZXcuc3RhdGUuZG9jLm5vZGVBdCh0Lmluc2lkZSkscj1hJiZhLnR5cGUuc3BlYy5kaXNhYmxlRHJvcEN1cnNvcixuPXR5cGVvZiByPT0iZnVuY3Rpb24iP3IodGhpcy5lZGl0b3JWaWV3LHQsZSk6cjtpZih0JiYhbil7bGV0IG89dC5wb3M7aWYodGhpcy5lZGl0b3JWaWV3LmRyYWdnaW5nJiZ0aGlzLmVkaXRvclZpZXcuZHJhZ2dpbmcuc2xpY2Upe2xldCBsPVZaKHRoaXMuZWRpdG9yVmlldy5zdGF0ZS5kb2Msbyx0aGlzLmVkaXRvclZpZXcuZHJhZ2dpbmcuc2xpY2UpO2whPW51bGwmJihvPWwpfXRoaXMuc2V0Q3Vyc29yKG8pLHRoaXMuc2NoZWR1bGVSZW1vdmFsKDVlMyl9fWRyYWdlbmQoKXt0aGlzLnNjaGVkdWxlUmVtb3ZhbCgyMCl9ZHJvcCgpe3RoaXMuc2NoZWR1bGVSZW1vdmFsKDIwKX1kcmFnbGVhdmUoZSl7dGhpcy5lZGl0b3JWaWV3LmRvbS5jb250YWlucyhlLnJlbGF0ZWRUYXJnZXQpfHx0aGlzLnNldEN1cnNvcihudWxsKX19fSk7dmFyIGw0YT1nKCgpPT57bjRhKCl9KTt2YXIgWWxlLGM0YT1nKCgpPT57aWkoKTtsNGEoKTtZbGU9d2kuY3JlYXRlKHtuYW1lOiJkcm9wQ3Vyc29yIixhZGRPcHRpb25zKCl7cmV0dXJue2NvbG9yOiJjdXJyZW50Q29sb3IiLHdpZHRoOjEsY2xhc3M6dm9pZCAwfX0sYWRkUHJvc2VNaXJyb3JQbHVnaW5zKCl7cmV0dXJuW1hhdCh0aGlzLm9wdGlvbnMpXX19KX0pO2Z1bmN0aW9uIGQ0YShzKXtyZXR1cm4gcy5pc0F0b218fHMuc3BlYy5pc29sYXRpbmd8fHMuc3BlYy5jcmVhdGVHYXBDdXJzb3J9ZnVuY3Rpb24gR1phKHMpe2ZvcihsZXQgZT1zLmRlcHRoO2U+PTA7ZS0tKXtsZXQgdD1zLmluZGV4KGUpLGE9cy5ub2RlKGUpO2lmKHQ9PTApe2lmKGEudHlwZS5zcGVjLmlzb2xhdGluZylyZXR1cm4hMDtjb250aW51ZX1mb3IobGV0IHI9YS5jaGlsZCh0LTEpOztyPXIubGFzdENoaWxkKXtpZihyLmNoaWxkQ291bnQ9PTAmJiFyLmlubGluZUNvbnRlbnR8fGQ0YShyLnR5cGUpKXJldHVybiEwO2lmKHIuaW5saW5lQ29udGVudClyZXR1cm4hMX19cmV0dXJuITB9ZnVuY3Rpb24gS1phKHMpe2ZvcihsZXQgZT1zLmRlcHRoO2U+PTA7ZS0tKXtsZXQgdD1zLmluZGV4QWZ0ZXIoZSksYT1zLm5vZGUoZSk7aWYodD09YS5jaGlsZENvdW50KXtpZihhLnR5cGUuc3BlYy5pc29sYXRpbmcpcmV0dXJuITA7Y29udGludWV9Zm9yKGxldCByPWEuY2hpbGQodCk7O3I9ci5maXJzdENoaWxkKXtpZihyLmNoaWxkQ291bnQ9PTAmJiFyLmlubGluZUNvbnRlbnR8fGQ0YShyLnR5cGUpKXJldHVybiEwO2lmKHIuaW5saW5lQ29udGVudClyZXR1cm4hMX19cmV0dXJuITB9ZnVuY3Rpb24gSmF0KCl7cmV0dXJuIG5ldyBZcyh7cHJvcHM6e2RlY29yYXRpb25zOlFaYSxjcmVhdGVTZWxlY3Rpb25CZXR3ZWVuKHMsZSx0KXtyZXR1cm4gZS5wb3M9PXQucG9zJiZMby52YWxpZCh0KT9uZXcgTG8odCk6bnVsbH0saGFuZGxlQ2xpY2s6WlphLGhhbmRsZUtleURvd246WVphLGhhbmRsZURPTUV2ZW50czp7YmVmb3JlaW5wdXQ6WFphfX19KX1mdW5jdGlvbiBabGUocyxlKXtsZXQgdD1zPT0idmVydCI/ZT4wPyJkb3duIjoidXAiOmU+MD8icmlnaHQiOiJsZWZ0IjtyZXR1cm4gZnVuY3Rpb24oYSxyLG4pe2xldCBvPWEuc2VsZWN0aW9uLGw9ZT4wP28uJHRvOm8uJGZyb20scD1vLmVtcHR5O2lmKG8gaW5zdGFuY2VvZiBKdCl7aWYoIW4uZW5kT2ZUZXh0YmxvY2sodCl8fGwuZGVwdGg9PTApcmV0dXJuITE7cD0hMSxsPWEuZG9jLnJlc29sdmUoZT4wP2wuYWZ0ZXIoKTpsLmJlZm9yZSgpKX1sZXQgZD1Mby5maW5kR2FwQ3Vyc29yRnJvbShsLGUscCk7cmV0dXJuIGQ/KHImJnIoYS50ci5zZXRTZWxlY3Rpb24obmV3IExvKGQpKSksITApOiExfX1mdW5jdGlvbiBaWmEocyxlLHQpe2lmKCFzfHwhcy5lZGl0YWJsZSlyZXR1cm4hMTtsZXQgYT1zLnN0YXRlLmRvYy5yZXNvbHZlKGUpO2lmKCFMby52YWxpZChhKSlyZXR1cm4hMTtsZXQgcj1zLnBvc0F0Q29vcmRzKHtsZWZ0OnQuY2xpZW50WCx0b3A6dC5jbGllbnRZfSk7cmV0dXJuIHImJnIuaW5zaWRlPi0xJiZGdC5pc1NlbGVjdGFibGUocy5zdGF0ZS5kb2Mubm9kZUF0KHIuaW5zaWRlKSk/ITE6KHMuZGlzcGF0Y2gocy5zdGF0ZS50ci5zZXRTZWxlY3Rpb24obmV3IExvKGEpKSksITApfWZ1bmN0aW9uIFhaYShzLGUpe2lmKGUuaW5wdXRUeXBlIT0iaW5zZXJ0Q29tcG9zaXRpb25UZXh0Inx8IShzLnN0YXRlLnNlbGVjdGlvbiBpbnN0YW5jZW9mIExvKSlyZXR1cm4hMTtsZXR7JGZyb206dH09cy5zdGF0ZS5zZWxlY3Rpb24sYT10LnBhcmVudC5jb250ZW50TWF0Y2hBdCh0LmluZGV4KCkpLmZpbmRXcmFwcGluZyhzLnN0YXRlLnNjaGVtYS5ub2Rlcy50ZXh0KTtpZighYSlyZXR1cm4hMTtsZXQgcj1ydC5lbXB0eTtmb3IobGV0IG89YS5sZW5ndGgtMTtvPj0wO28tLSlyPXJ0LmZyb20oYVtvXS5jcmVhdGVBbmRGaWxsKG51bGwscikpO2xldCBuPXMuc3RhdGUudHIucmVwbGFjZSh0LnBvcyx0LnBvcyxuZXcgX3QociwwLDApKTtyZXR1cm4gbi5zZXRTZWxlY3Rpb24oSnQubmVhcihuLmRvYy5yZXNvbHZlKHQucG9zKzEpKSkscy5kaXNwYXRjaChuKSwhMX1mdW5jdGlvbiBRWmEocyl7aWYoIShzLnNlbGVjdGlvbiBpbnN0YW5jZW9mIExvKSlyZXR1cm4gbnVsbDtsZXQgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gZS5jbGFzc05hbWU9IlByb3NlTWlycm9yLWdhcGN1cnNvciIsTG4uY3JlYXRlKHMuZG9jLFt0Mi53aWRnZXQocy5zZWxlY3Rpb24uaGVhZCxlLHtrZXk6ImdhcGN1cnNvciJ9KV0pfXZhciBMbyxRYXQsWVphLHU0YT1nKCgpPT57ZGF0KCk7cnUoKTtfaCgpO25hdCgpO0xvPWNsYXNzIHMgZXh0ZW5kcyBRdHtzdGF0aWN7aSh0aGlzLCJHYXBDdXJzb3IiKX1jb25zdHJ1Y3RvcihlKXtzdXBlcihlLGUpfW1hcChlLHQpe2xldCBhPWUucmVzb2x2ZSh0Lm1hcCh0aGlzLmhlYWQpKTtyZXR1cm4gcy52YWxpZChhKT9uZXcgcyhhKTpRdC5uZWFyKGEpfWNvbnRlbnQoKXtyZXR1cm4gX3QuZW1wdHl9ZXEoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBzJiZlLmhlYWQ9PXRoaXMuaGVhZH10b0pTT04oKXtyZXR1cm57dHlwZToiZ2FwY3Vyc29yIixwb3M6dGhpcy5oZWFkfX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZih0eXBlb2YgdC5wb3MhPSJudW1iZXIiKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBHYXBDdXJzb3IuZnJvbUpTT04iKTtyZXR1cm4gbmV3IHMoZS5yZXNvbHZlKHQucG9zKSl9Z2V0Qm9va21hcmsoKXtyZXR1cm4gbmV3IFFhdCh0aGlzLmFuY2hvcil9c3RhdGljIHZhbGlkKGUpe2xldCB0PWUucGFyZW50O2lmKHQuaW5saW5lQ29udGVudHx8IUdaYShlKXx8IUtaYShlKSlyZXR1cm4hMTtsZXQgYT10LnR5cGUuc3BlYy5hbGxvd0dhcEN1cnNvcjtpZihhIT1udWxsKXJldHVybiBhO2xldCByPXQuY29udGVudE1hdGNoQXQoZS5pbmRleCgpKS5kZWZhdWx0VHlwZTtyZXR1cm4gciYmci5pc1RleHRibG9ja31zdGF0aWMgZmluZEdhcEN1cnNvckZyb20oZSx0LGE9ITEpe2U6Zm9yKDs7KXtpZighYSYmcy52YWxpZChlKSlyZXR1cm4gZTtsZXQgcj1lLnBvcyxuPW51bGw7Zm9yKGxldCBvPWUuZGVwdGg7O28tLSl7bGV0IGw9ZS5ub2RlKG8pO2lmKHQ+MD9lLmluZGV4QWZ0ZXIobyk8bC5jaGlsZENvdW50OmUuaW5kZXgobyk+MCl7bj1sLmNoaWxkKHQ+MD9lLmluZGV4QWZ0ZXIobyk6ZS5pbmRleChvKS0xKTticmVha31lbHNlIGlmKG89PTApcmV0dXJuIG51bGw7cis9dDtsZXQgcD1lLmRvYy5yZXNvbHZlKHIpO2lmKHMudmFsaWQocCkpcmV0dXJuIHB9Zm9yKDs7KXtsZXQgbz10PjA/bi5maXJzdENoaWxkOm4ubGFzdENoaWxkO2lmKCFvKXtpZihuLmlzQXRvbSYmIW4uaXNUZXh0JiYhRnQuaXNTZWxlY3RhYmxlKG4pKXtlPWUuZG9jLnJlc29sdmUocituLm5vZGVTaXplKnQpLGE9ITE7Y29udGludWUgZX1icmVha31uPW8scis9dDtsZXQgbD1lLmRvYy5yZXNvbHZlKHIpO2lmKHMudmFsaWQobCkpcmV0dXJuIGx9cmV0dXJuIG51bGx9fX07TG8ucHJvdG90eXBlLnZpc2libGU9ITEsTG8uZmluZEZyb209TG8uZmluZEdhcEN1cnNvckZyb20sUXQuanNvbklEKCJnYXBjdXJzb3IiLExvKTtRYXQ9Y2xhc3Mgc3tzdGF0aWN7aSh0aGlzLCJHYXBCb29rbWFyayIpfWNvbnN0cnVjdG9yKGUpe3RoaXMucG9zPWV9bWFwKGUpe3JldHVybiBuZXcgcyhlLm1hcCh0aGlzLnBvcykpfXJlc29sdmUoZSl7bGV0IHQ9ZS5yZXNvbHZlKHRoaXMucG9zKTtyZXR1cm4gTG8udmFsaWQodCk/bmV3IExvKHQpOlF0Lm5lYXIodCl9fTtpKGQ0YSwibmVlZHNHYXAiKTtpKEdaYSwiY2xvc2VkQmVmb3JlIik7aShLWmEsImNsb3NlZEFmdGVyIik7aShKYXQsImdhcEN1cnNvciIpO1laYT1ybGUoe0Fycm93TGVmdDpabGUoImhvcml6IiwtMSksQXJyb3dSaWdodDpabGUoImhvcml6IiwxKSxBcnJvd1VwOlpsZSgidmVydCIsLTEpLEFycm93RG93bjpabGUoInZlcnQiLDEpfSk7aShabGUsImFycm93Iik7aShaWmEsImhhbmRsZUNsaWNrIik7aShYWmEsImJlZm9yZWlucHV0Iik7aShRWmEsImRyYXdHYXBDdXJzb3IiKX0pO3ZhciBwNGE9ZygoKT0+e3U0YSgpfSk7dmFyIFhsZSxoNGE9ZygoKT0+e2lpKCk7cDRhKCk7WGxlPXdpLmNyZWF0ZSh7bmFtZToiZ2FwQ3Vyc29yIixhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtyZXR1cm5bSmF0KCldfSxleHRlbmROb2RlU2NoZW1hKHMpe3ZhciBlO2xldCB0PXtuYW1lOnMubmFtZSxvcHRpb25zOnMub3B0aW9ucyxzdG9yYWdlOnMuc3RvcmFnZX07cmV0dXJue2FsbG93R2FwQ3Vyc29yOihlPWNhKER0KHMsImFsbG93R2FwQ3Vyc29yIix0KSkpIT09bnVsbCYmZSE9PXZvaWQgMD9lOm51bGx9fX0pfSk7dmFyIFFsZSxmNGE9ZygoKT0+e2lpKCk7UWxlPXNpLmNyZWF0ZSh7bmFtZToiaGFyZEJyZWFrIixhZGRPcHRpb25zKCl7cmV0dXJue2tlZXBNYXJrczohMCxIVE1MQXR0cmlidXRlczp7fX19LGlubGluZTohMCxncm91cDoiaW5saW5lIixzZWxlY3RhYmxlOiExLGxpbmVicmVha1JlcGxhY2VtZW50OiEwLHBhcnNlSFRNTCgpe3JldHVyblt7dGFnOiJiciJ9XX0scmVuZGVySFRNTCh7SFRNTEF0dHJpYnV0ZXM6c30pe3JldHVyblsiYnIiLGFzKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxzKV19LHJlbmRlclRleHQoKXtyZXR1cm5gCmB9LGFkZENvbW1hbmRzKCl7cmV0dXJue3NldEhhcmRCcmVhazppKCgpPT4oe2NvbW1hbmRzOnMsY2hhaW46ZSxzdGF0ZTp0LGVkaXRvcjphfSk9PnMuZmlyc3QoWygpPT5zLmV4aXRDb2RlKCksKCk9PnMuY29tbWFuZCgoKT0+e2xldHtzZWxlY3Rpb246cixzdG9yZWRNYXJrczpufT10O2lmKHIuJGZyb20ucGFyZW50LnR5cGUuc3BlYy5pc29sYXRpbmcpcmV0dXJuITE7bGV0e2tlZXBNYXJrczpvfT10aGlzLm9wdGlvbnMse3NwbGl0dGFibGVNYXJrczpsfT1hLmV4dGVuc2lvbk1hbmFnZXIscD1ufHxyLiR0by5wYXJlbnRPZmZzZXQmJnIuJGZyb20ubWFya3MoKTtyZXR1cm4gZSgpLmluc2VydENvbnRlbnQoe3R5cGU6dGhpcy5uYW1lfSkuY29tbWFuZCgoe3RyOmQsZGlzcGF0Y2g6dX0pPT57aWYodSYmcCYmbyl7bGV0IGM9cC5maWx0ZXIoYj0+bC5pbmNsdWRlcyhiLnR5cGUubmFtZSkpO2QuZW5zdXJlTWFya3MoYyl9cmV0dXJuITB9KS5ydW4oKX0pXSksInNldEhhcmRCcmVhayIpfX0sYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtyZXR1cm57Ik1vZC1FbnRlciI6aSgoKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMuc2V0SGFyZEJyZWFrKCksIk1vZC1FbnRlciIpLCJTaGlmdC1FbnRlciI6aSgoKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMuc2V0SGFyZEJyZWFrKCksIlNoaWZ0LUVudGVyIil9fX0pfSk7dmFyIEpsZSxtNGE9ZygoKT0+e2lpKCk7SmxlPXNpLmNyZWF0ZSh7bmFtZToiaGVhZGluZyIsYWRkT3B0aW9ucygpe3JldHVybntsZXZlbHM6WzEsMiwzLDQsNSw2XSxIVE1MQXR0cmlidXRlczp7fX19LGNvbnRlbnQ6ImlubGluZSoiLGdyb3VwOiJibG9jayIsZGVmaW5pbmc6ITAsYWRkQXR0cmlidXRlcygpe3JldHVybntsZXZlbDp7ZGVmYXVsdDoxLHJlbmRlcmVkOiExfX19LHBhcnNlSFRNTCgpe3JldHVybiB0aGlzLm9wdGlvbnMubGV2ZWxzLm1hcChzPT4oe3RhZzpgaCR7c31gLGF0dHJzOntsZXZlbDpzfX0pKX0scmVuZGVySFRNTCh7bm9kZTpzLEhUTUxBdHRyaWJ1dGVzOmV9KXtyZXR1cm5bYGgke3RoaXMub3B0aW9ucy5sZXZlbHMuaW5jbHVkZXMocy5hdHRycy5sZXZlbCk/cy5hdHRycy5sZXZlbDp0aGlzLm9wdGlvbnMubGV2ZWxzWzBdfWAsYXModGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLGUpLDBdfSxhZGRDb21tYW5kcygpe3JldHVybntzZXRIZWFkaW5nOmkocz0+KHtjb21tYW5kczplfSk9PnRoaXMub3B0aW9ucy5sZXZlbHMuaW5jbHVkZXMocy5sZXZlbCk/ZS5zZXROb2RlKHRoaXMubmFtZSxzKTohMSwic2V0SGVhZGluZyIpLHRvZ2dsZUhlYWRpbmc6aShzPT4oe2NvbW1hbmRzOmV9KT0+dGhpcy5vcHRpb25zLmxldmVscy5pbmNsdWRlcyhzLmxldmVsKT9lLnRvZ2dsZU5vZGUodGhpcy5uYW1lLCJwYXJhZ3JhcGgiLHMpOiExLCJ0b2dnbGVIZWFkaW5nIil9fSxhZGRLZXlib2FyZFNob3J0Y3V0cygpe3JldHVybiB0aGlzLm9wdGlvbnMubGV2ZWxzLnJlZHVjZSgocyxlKT0+KHsuLi5zLFtgTW9kLUFsdC0ke2V9YF06KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnRvZ2dsZUhlYWRpbmcoe2xldmVsOmV9KX0pLHt9KX0sYWRkSW5wdXRSdWxlcygpe3JldHVybiB0aGlzLm9wdGlvbnMubGV2ZWxzLm1hcChzPT51Zyh7ZmluZDpuZXcgUmVnRXhwKGBeKCN7JHtNYXRoLm1pbiguLi50aGlzLm9wdGlvbnMubGV2ZWxzKX0sJHtzfX0pXFxzJGApLHR5cGU6dGhpcy50eXBlLGdldEF0dHJpYnV0ZXM6e2xldmVsOnN9fSkpfX0pfSk7dmFyIGVjZSxFbyxnNGEsSlphLGVzdCxiNGE9ZygoKT0+e2VjZT0yMDAsRW89aShmdW5jdGlvbigpe30sIlJvcGVTZXF1ZW5jZSIpO0VvLnByb3RvdHlwZS5hcHBlbmQ9aShmdW5jdGlvbihlKXtyZXR1cm4gZS5sZW5ndGg/KGU9RW8uZnJvbShlKSwhdGhpcy5sZW5ndGgmJmV8fGUubGVuZ3RoPGVjZSYmdGhpcy5sZWFmQXBwZW5kKGUpfHx0aGlzLmxlbmd0aDxlY2UmJmUubGVhZlByZXBlbmQodGhpcyl8fHRoaXMuYXBwZW5kSW5uZXIoZSkpOnRoaXN9LCJhcHBlbmQiKSxFby5wcm90b3R5cGUucHJlcGVuZD1pKGZ1bmN0aW9uKGUpe3JldHVybiBlLmxlbmd0aD9Fby5mcm9tKGUpLmFwcGVuZCh0aGlzKTp0aGlzfSwicHJlcGVuZCIpLEVvLnByb3RvdHlwZS5hcHBlbmRJbm5lcj1pKGZ1bmN0aW9uKGUpe3JldHVybiBuZXcgSlphKHRoaXMsZSl9LCJhcHBlbmRJbm5lciIpLEVvLnByb3RvdHlwZS5zbGljZT1pKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT12b2lkIDAmJihlPTApLHQ9PT12b2lkIDAmJih0PXRoaXMubGVuZ3RoKSxlPj10P0VvLmVtcHR5OnRoaXMuc2xpY2VJbm5lcihNYXRoLm1heCgwLGUpLE1hdGgubWluKHRoaXMubGVuZ3RoLHQpKX0sInNsaWNlIiksRW8ucHJvdG90eXBlLmdldD1pKGZ1bmN0aW9uKGUpe2lmKCEoZTwwfHxlPj10aGlzLmxlbmd0aCkpcmV0dXJuIHRoaXMuZ2V0SW5uZXIoZSl9LCJnZXQiKSxFby5wcm90b3R5cGUuZm9yRWFjaD1pKGZ1bmN0aW9uKGUsdCxhKXt0PT09dm9pZCAwJiYodD0wKSxhPT09dm9pZCAwJiYoYT10aGlzLmxlbmd0aCksdDw9YT90aGlzLmZvckVhY2hJbm5lcihlLHQsYSwwKTp0aGlzLmZvckVhY2hJbnZlcnRlZElubmVyKGUsdCxhLDApfSwiZm9yRWFjaCIpLEVvLnByb3RvdHlwZS5tYXA9aShmdW5jdGlvbihlLHQsYSl7dD09PXZvaWQgMCYmKHQ9MCksYT09PXZvaWQgMCYmKGE9dGhpcy5sZW5ndGgpO3ZhciByPVtdO3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rpb24obixvKXtyZXR1cm4gci5wdXNoKGUobixvKSl9LHQsYSkscn0sIm1hcCIpLEVvLmZyb209aShmdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEVvP2U6ZSYmZS5sZW5ndGg/bmV3IGc0YShlKTpFby5lbXB0eX0sImZyb20iKTtnNGE9KGZ1bmN0aW9uKHMpe2Z1bmN0aW9uIGUoYSl7cy5jYWxsKHRoaXMpLHRoaXMudmFsdWVzPWF9aShlLCJMZWFmIikscyYmKGUuX19wcm90b19fPXMpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUocyYmcy5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWU7dmFyIHQ9e2xlbmd0aDp7Y29uZmlndXJhYmxlOiEwfSxkZXB0aDp7Y29uZmlndXJhYmxlOiEwfX07cmV0dXJuIGUucHJvdG90eXBlLmZsYXR0ZW49aShmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlc30sImZsYXR0ZW4iKSxlLnByb3RvdHlwZS5zbGljZUlubmVyPWkoZnVuY3Rpb24ocixuKXtyZXR1cm4gcj09MCYmbj09dGhpcy5sZW5ndGg/dGhpczpuZXcgZSh0aGlzLnZhbHVlcy5zbGljZShyLG4pKX0sInNsaWNlSW5uZXIiKSxlLnByb3RvdHlwZS5nZXRJbm5lcj1pKGZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLnZhbHVlc1tyXX0sImdldElubmVyIiksZS5wcm90b3R5cGUuZm9yRWFjaElubmVyPWkoZnVuY3Rpb24ocixuLG8sbCl7Zm9yKHZhciBwPW47cDxvO3ArKylpZihyKHRoaXMudmFsdWVzW3BdLGwrcCk9PT0hMSlyZXR1cm4hMX0sImZvckVhY2hJbm5lciIpLGUucHJvdG90eXBlLmZvckVhY2hJbnZlcnRlZElubmVyPWkoZnVuY3Rpb24ocixuLG8sbCl7Zm9yKHZhciBwPW4tMTtwPj1vO3AtLSlpZihyKHRoaXMudmFsdWVzW3BdLGwrcCk9PT0hMSlyZXR1cm4hMX0sImZvckVhY2hJbnZlcnRlZElubmVyIiksZS5wcm90b3R5cGUubGVhZkFwcGVuZD1pKGZ1bmN0aW9uKHIpe2lmKHRoaXMubGVuZ3RoK3IubGVuZ3RoPD1lY2UpcmV0dXJuIG5ldyBlKHRoaXMudmFsdWVzLmNvbmNhdChyLmZsYXR0ZW4oKSkpfSwibGVhZkFwcGVuZCIpLGUucHJvdG90eXBlLmxlYWZQcmVwZW5kPWkoZnVuY3Rpb24ocil7aWYodGhpcy5sZW5ndGgrci5sZW5ndGg8PWVjZSlyZXR1cm4gbmV3IGUoci5mbGF0dGVuKCkuY29uY2F0KHRoaXMudmFsdWVzKSl9LCJsZWFmUHJlcGVuZCIpLHQubGVuZ3RoLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlcy5sZW5ndGh9LHQuZGVwdGguZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIDB9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUucHJvdG90eXBlLHQpLGV9KShFbyk7RW8uZW1wdHk9bmV3IGc0YShbXSk7SlphPShmdW5jdGlvbihzKXtmdW5jdGlvbiBlKHQsYSl7cy5jYWxsKHRoaXMpLHRoaXMubGVmdD10LHRoaXMucmlnaHQ9YSx0aGlzLmxlbmd0aD10Lmxlbmd0aCthLmxlbmd0aCx0aGlzLmRlcHRoPU1hdGgubWF4KHQuZGVwdGgsYS5kZXB0aCkrMX1yZXR1cm4gaShlLCJBcHBlbmQiKSxzJiYoZS5fX3Byb3RvX189cyksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShzJiZzLnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5mbGF0dGVuPWkoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZWZ0LmZsYXR0ZW4oKS5jb25jYXQodGhpcy5yaWdodC5mbGF0dGVuKCkpfSwiZmxhdHRlbiIpLGUucHJvdG90eXBlLmdldElubmVyPWkoZnVuY3Rpb24oYSl7cmV0dXJuIGE8dGhpcy5sZWZ0Lmxlbmd0aD90aGlzLmxlZnQuZ2V0KGEpOnRoaXMucmlnaHQuZ2V0KGEtdGhpcy5sZWZ0Lmxlbmd0aCl9LCJnZXRJbm5lciIpLGUucHJvdG90eXBlLmZvckVhY2hJbm5lcj1pKGZ1bmN0aW9uKGEscixuLG8pe3ZhciBsPXRoaXMubGVmdC5sZW5ndGg7aWYocjxsJiZ0aGlzLmxlZnQuZm9yRWFjaElubmVyKGEscixNYXRoLm1pbihuLGwpLG8pPT09ITF8fG4+bCYmdGhpcy5yaWdodC5mb3JFYWNoSW5uZXIoYSxNYXRoLm1heChyLWwsMCksTWF0aC5taW4odGhpcy5sZW5ndGgsbiktbCxvK2wpPT09ITEpcmV0dXJuITF9LCJmb3JFYWNoSW5uZXIiKSxlLnByb3RvdHlwZS5mb3JFYWNoSW52ZXJ0ZWRJbm5lcj1pKGZ1bmN0aW9uKGEscixuLG8pe3ZhciBsPXRoaXMubGVmdC5sZW5ndGg7aWYocj5sJiZ0aGlzLnJpZ2h0LmZvckVhY2hJbnZlcnRlZElubmVyKGEsci1sLE1hdGgubWF4KG4sbCktbCxvK2wpPT09ITF8fG48bCYmdGhpcy5sZWZ0LmZvckVhY2hJbnZlcnRlZElubmVyKGEsTWF0aC5taW4ocixsKSxuLG8pPT09ITEpcmV0dXJuITF9LCJmb3JFYWNoSW52ZXJ0ZWRJbm5lciIpLGUucHJvdG90eXBlLnNsaWNlSW5uZXI9aShmdW5jdGlvbihhLHIpe2lmKGE9PTAmJnI9PXRoaXMubGVuZ3RoKXJldHVybiB0aGlzO3ZhciBuPXRoaXMubGVmdC5sZW5ndGg7cmV0dXJuIHI8PW4/dGhpcy5sZWZ0LnNsaWNlKGEscik6YT49bj90aGlzLnJpZ2h0LnNsaWNlKGEtbixyLW4pOnRoaXMubGVmdC5zbGljZShhLG4pLmFwcGVuZCh0aGlzLnJpZ2h0LnNsaWNlKDAsci1uKSl9LCJzbGljZUlubmVyIiksZS5wcm90b3R5cGUubGVhZkFwcGVuZD1pKGZ1bmN0aW9uKGEpe3ZhciByPXRoaXMucmlnaHQubGVhZkFwcGVuZChhKTtpZihyKXJldHVybiBuZXcgZSh0aGlzLmxlZnQscil9LCJsZWFmQXBwZW5kIiksZS5wcm90b3R5cGUubGVhZlByZXBlbmQ9aShmdW5jdGlvbihhKXt2YXIgcj10aGlzLmxlZnQubGVhZlByZXBlbmQoYSk7aWYocilyZXR1cm4gbmV3IGUocix0aGlzLnJpZ2h0KX0sImxlYWZQcmVwZW5kIiksZS5wcm90b3R5cGUuYXBwZW5kSW5uZXI9aShmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5sZWZ0LmRlcHRoPj1NYXRoLm1heCh0aGlzLnJpZ2h0LmRlcHRoLGEuZGVwdGgpKzE/bmV3IGUodGhpcy5sZWZ0LG5ldyBlKHRoaXMucmlnaHQsYSkpOm5ldyBlKHRoaXMsYSl9LCJhcHBlbmRJbm5lciIpLGV9KShFbyksZXN0PUVvfSk7ZnVuY3Rpb24gdFhhKHMsZSl7bGV0IHQ7cmV0dXJuIHMuZm9yRWFjaCgoYSxyKT0+e2lmKGEuc2VsZWN0aW9uJiZlLS09PTApcmV0dXJuIHQ9ciwhMX0pLHMuc2xpY2UodCl9ZnVuY3Rpb24gc1hhKHMsZSx0LGEpe2xldCByPXQuZ2V0TWV0YShIZCksbjtpZihyKXJldHVybiByLmhpc3RvcnlTdGF0ZTt0LmdldE1ldGEoeTRhKSYmKHM9bmV3IEJkKHMuZG9uZSxzLnVuZG9uZSxudWxsLDAsLTEpKTtsZXQgbz10LmdldE1ldGEoImFwcGVuZGVkVHJhbnNhY3Rpb24iKTtpZih0LnN0ZXBzLmxlbmd0aD09MClyZXR1cm4gcztpZihvJiZvLmdldE1ldGEoSGQpKXJldHVybiBvLmdldE1ldGEoSGQpLnJlZG8/bmV3IEJkKHMuZG9uZS5hZGRUcmFuc2Zvcm0odCx2b2lkIDAsYSx0Y2UoZSkpLHMudW5kb25lLHY0YSh0Lm1hcHBpbmcubWFwcykscy5wcmV2VGltZSxzLnByZXZDb21wb3NpdGlvbik6bmV3IEJkKHMuZG9uZSxzLnVuZG9uZS5hZGRUcmFuc2Zvcm0odCx2b2lkIDAsYSx0Y2UoZSkpLG51bGwscy5wcmV2VGltZSxzLnByZXZDb21wb3NpdGlvbik7aWYodC5nZXRNZXRhKCJhZGRUb0hpc3RvcnkiKSE9PSExJiYhKG8mJm8uZ2V0TWV0YSgiYWRkVG9IaXN0b3J5Iik9PT0hMSkpe2xldCBsPXQuZ2V0TWV0YSgiY29tcG9zaXRpb24iKSxwPXMucHJldlRpbWU9PTB8fCFvJiZzLnByZXZDb21wb3NpdGlvbiE9bCYmKHMucHJldlRpbWU8KHQudGltZXx8MCktYS5uZXdHcm91cERlbGF5fHwhaVhhKHQscy5wcmV2UmFuZ2VzKSksZD1vP3RzdChzLnByZXZSYW5nZXMsdC5tYXBwaW5nKTp2NGEodC5tYXBwaW5nLm1hcHMpO3JldHVybiBuZXcgQmQocy5kb25lLmFkZFRyYW5zZm9ybSh0LHA/ZS5zZWxlY3Rpb24uZ2V0Qm9va21hcmsoKTp2b2lkIDAsYSx0Y2UoZSkpLHBnLmVtcHR5LGQsdC50aW1lLGw/P3MucHJldkNvbXBvc2l0aW9uKX1lbHNlIHJldHVybihuPXQuZ2V0TWV0YSgicmViYXNlZCIpKT9uZXcgQmQocy5kb25lLnJlYmFzZWQodCxuKSxzLnVuZG9uZS5yZWJhc2VkKHQsbiksdHN0KHMucHJldlJhbmdlcyx0Lm1hcHBpbmcpLHMucHJldlRpbWUscy5wcmV2Q29tcG9zaXRpb24pOm5ldyBCZChzLmRvbmUuYWRkTWFwcyh0Lm1hcHBpbmcubWFwcykscy51bmRvbmUuYWRkTWFwcyh0Lm1hcHBpbmcubWFwcyksdHN0KHMucHJldlJhbmdlcyx0Lm1hcHBpbmcpLHMucHJldlRpbWUscy5wcmV2Q29tcG9zaXRpb24pfWZ1bmN0aW9uIGlYYShzLGUpe2lmKCFlKXJldHVybiExO2lmKCFzLmRvY0NoYW5nZWQpcmV0dXJuITA7bGV0IHQ9ITE7cmV0dXJuIHMubWFwcGluZy5tYXBzWzBdLmZvckVhY2goKGEscik9Pntmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rPTIpYTw9ZVtuKzFdJiZyPj1lW25dJiYodD0hMCl9KSx0fWZ1bmN0aW9uIHY0YShzKXtsZXQgZT1bXTtmb3IobGV0IHQ9cy5sZW5ndGgtMTt0Pj0wJiZlLmxlbmd0aD09MDt0LS0pc1t0XS5mb3JFYWNoKChhLHIsbixvKT0+ZS5wdXNoKG4sbykpO3JldHVybiBlfWZ1bmN0aW9uIHRzdChzLGUpe2lmKCFzKXJldHVybiBudWxsO2xldCB0PVtdO2ZvcihsZXQgYT0wO2E8cy5sZW5ndGg7YSs9Mil7bGV0IHI9ZS5tYXAoc1thXSwxKSxuPWUubWFwKHNbYSsxXSwtMSk7cjw9biYmdC5wdXNoKHIsbil9cmV0dXJuIHR9ZnVuY3Rpb24gclhhKHMsZSx0KXtsZXQgYT10Y2UoZSkscj1IZC5nZXQoZSkuc3BlYy5jb25maWcsbj0odD9zLnVuZG9uZTpzLmRvbmUpLnBvcEV2ZW50KGUsYSk7aWYoIW4pcmV0dXJuIG51bGw7bGV0IG89bi5zZWxlY3Rpb24ucmVzb2x2ZShuLnRyYW5zZm9ybS5kb2MpLGw9KHQ/cy5kb25lOnMudW5kb25lKS5hZGRUcmFuc2Zvcm0obi50cmFuc2Zvcm0sZS5zZWxlY3Rpb24uZ2V0Qm9va21hcmsoKSxyLGEpLHA9bmV3IEJkKHQ/bDpuLnJlbWFpbmluZyx0P24ucmVtYWluaW5nOmwsbnVsbCwwLC0xKTtyZXR1cm4gbi50cmFuc2Zvcm0uc2V0U2VsZWN0aW9uKG8pLnNldE1ldGEoSGQse3JlZG86dCxoaXN0b3J5U3RhdGU6cH0pfWZ1bmN0aW9uIHRjZShzKXtsZXQgZT1zLnBsdWdpbnM7aWYoeDRhIT1lKXthc3Q9ITEseDRhPWU7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspaWYoZVt0XS5zcGVjLmhpc3RvcnlQcmVzZXJ2ZUl0ZW1zKXthc3Q9ITA7YnJlYWt9fXJldHVybiBhc3R9ZnVuY3Rpb24gb1hhKHMpe3JldHVybiBzLnNldE1ldGEoeTRhLCEwKX1mdW5jdGlvbiBzc3Qocz17fSl7cmV0dXJuIHM9e2RlcHRoOnMuZGVwdGh8fDEwMCxuZXdHcm91cERlbGF5OnMubmV3R3JvdXBEZWxheXx8NTAwfSxuZXcgWXMoe2tleTpIZCxzdGF0ZTp7aW5pdCgpe3JldHVybiBuZXcgQmQocGcuZW1wdHkscGcuZW1wdHksbnVsbCwwLC0xKX0sYXBwbHkoZSx0LGEpe3JldHVybiBzWGEodCxhLGUscyl9fSxjb25maWc6cyxwcm9wczp7aGFuZGxlRE9NRXZlbnRzOntiZWZvcmVpbnB1dChlLHQpe2xldCBhPXQuaW5wdXRUeXBlLHI9YT09Imhpc3RvcnlVbmRvIj9zY2U6YT09Imhpc3RvcnlSZWRvIj9pY2U6bnVsbDtyZXR1cm4hcnx8IWUuZWRpdGFibGU/ITE6KHQucHJldmVudERlZmF1bHQoKSxyKGUuc3RhdGUsZS5kaXNwYXRjaCkpfX19fSl9ZnVuY3Rpb24gYWNlKHMsZSl7cmV0dXJuKHQsYSk9PntsZXQgcj1IZC5nZXRTdGF0ZSh0KTtpZighcnx8KHM/ci51bmRvbmU6ci5kb25lKS5ldmVudENvdW50PT0wKXJldHVybiExO2lmKGEpe2xldCBuPXJYYShyLHQscyk7biYmYShlP24uc2Nyb2xsSW50b1ZpZXcoKTpuKX1yZXR1cm4hMH19ZnVuY3Rpb24gY1hhKHMpe2xldCBlPUhkLmdldFN0YXRlKHMpO3JldHVybiBlP2UuZG9uZS5ldmVudENvdW50OjB9ZnVuY3Rpb24gZFhhKHMpe2xldCBlPUhkLmdldFN0YXRlKHMpO3JldHVybiBlP2UudW5kb25lLmV2ZW50Q291bnQ6MH1mdW5jdGlvbiB1WGEocyl7cmV0dXJuIHMuZ2V0TWV0YShIZCkhPW51bGx9dmFyIGVYYSxwZyxGZCxCZCxhWGEsYXN0LHg0YSxIZCx5NGEsc2NlLGljZSxuWGEsbFhhLHc0YT1nKCgpPT57YjRhKCk7emgoKTtydSgpO2VYYT01MDAscGc9Y2xhc3Mgc3tzdGF0aWN7aSh0aGlzLCJCcmFuY2giKX1jb25zdHJ1Y3RvcihlLHQpe3RoaXMuaXRlbXM9ZSx0aGlzLmV2ZW50Q291bnQ9dH1wb3BFdmVudChlLHQpe2lmKHRoaXMuZXZlbnRDb3VudD09MClyZXR1cm4gbnVsbDtsZXQgYT10aGlzLml0ZW1zLmxlbmd0aDtmb3IoOzthLS0paWYodGhpcy5pdGVtcy5nZXQoYS0xKS5zZWxlY3Rpb24pey0tYTticmVha31sZXQgcixuO3QmJihyPXRoaXMucmVtYXBwaW5nKGEsdGhpcy5pdGVtcy5sZW5ndGgpLG49ci5tYXBzLmxlbmd0aCk7bGV0IG89ZS50cixsLHAsZD1bXSx1PVtdO3JldHVybiB0aGlzLml0ZW1zLmZvckVhY2goKGMsYik9PntpZighYy5zdGVwKXtyfHwocj10aGlzLnJlbWFwcGluZyhhLGIrMSksbj1yLm1hcHMubGVuZ3RoKSxuLS0sdS5wdXNoKGMpO3JldHVybn1pZihyKXt1LnB1c2gobmV3IEZkKGMubWFwKSk7bGV0IHY9Yy5zdGVwLm1hcChyLnNsaWNlKG4pKSx4O3YmJm8ubWF5YmVTdGVwKHYpLmRvYyYmKHg9by5tYXBwaW5nLm1hcHNbby5tYXBwaW5nLm1hcHMubGVuZ3RoLTFdLGQucHVzaChuZXcgRmQoeCx2b2lkIDAsdm9pZCAwLGQubGVuZ3RoK3UubGVuZ3RoKSkpLG4tLSx4JiZyLmFwcGVuZE1hcCh4LG4pfWVsc2Ugby5tYXliZVN0ZXAoYy5zdGVwKTtpZihjLnNlbGVjdGlvbilyZXR1cm4gbD1yP2Muc2VsZWN0aW9uLm1hcChyLnNsaWNlKG4pKTpjLnNlbGVjdGlvbixwPW5ldyBzKHRoaXMuaXRlbXMuc2xpY2UoMCxhKS5hcHBlbmQodS5yZXZlcnNlKCkuY29uY2F0KGQpKSx0aGlzLmV2ZW50Q291bnQtMSksITF9LHRoaXMuaXRlbXMubGVuZ3RoLDApLHtyZW1haW5pbmc6cCx0cmFuc2Zvcm06byxzZWxlY3Rpb246bH19YWRkVHJhbnNmb3JtKGUsdCxhLHIpe2xldCBuPVtdLG89dGhpcy5ldmVudENvdW50LGw9dGhpcy5pdGVtcyxwPSFyJiZsLmxlbmd0aD9sLmdldChsLmxlbmd0aC0xKTpudWxsO2ZvcihsZXQgdT0wO3U8ZS5zdGVwcy5sZW5ndGg7dSsrKXtsZXQgYz1lLnN0ZXBzW3VdLmludmVydChlLmRvY3NbdV0pLGI9bmV3IEZkKGUubWFwcGluZy5tYXBzW3VdLGMsdCksdjsodj1wJiZwLm1lcmdlKGIpKSYmKGI9dix1P24ucG9wKCk6bD1sLnNsaWNlKDAsbC5sZW5ndGgtMSkpLG4ucHVzaChiKSx0JiYobysrLHQ9dm9pZCAwKSxyfHwocD1iKX1sZXQgZD1vLWEuZGVwdGg7cmV0dXJuIGQ+YVhhJiYobD10WGEobCxkKSxvLT1kKSxuZXcgcyhsLmFwcGVuZChuKSxvKX1yZW1hcHBpbmcoZSx0KXtsZXQgYT1uZXcgU3Y7cmV0dXJuIHRoaXMuaXRlbXMuZm9yRWFjaCgocixuKT0+e2xldCBvPXIubWlycm9yT2Zmc2V0IT1udWxsJiZuLXIubWlycm9yT2Zmc2V0Pj1lP2EubWFwcy5sZW5ndGgtci5taXJyb3JPZmZzZXQ6dm9pZCAwO2EuYXBwZW5kTWFwKHIubWFwLG8pfSxlLHQpLGF9YWRkTWFwcyhlKXtyZXR1cm4gdGhpcy5ldmVudENvdW50PT0wP3RoaXM6bmV3IHModGhpcy5pdGVtcy5hcHBlbmQoZS5tYXAodD0+bmV3IEZkKHQpKSksdGhpcy5ldmVudENvdW50KX1yZWJhc2VkKGUsdCl7aWYoIXRoaXMuZXZlbnRDb3VudClyZXR1cm4gdGhpcztsZXQgYT1bXSxyPU1hdGgubWF4KDAsdGhpcy5pdGVtcy5sZW5ndGgtdCksbj1lLm1hcHBpbmcsbz1lLnN0ZXBzLmxlbmd0aCxsPXRoaXMuZXZlbnRDb3VudDt0aGlzLml0ZW1zLmZvckVhY2goYj0+e2Iuc2VsZWN0aW9uJiZsLS19LHIpO2xldCBwPXQ7dGhpcy5pdGVtcy5mb3JFYWNoKGI9PntsZXQgdj1uLmdldE1pcnJvcigtLXApO2lmKHY9PW51bGwpcmV0dXJuO289TWF0aC5taW4obyx2KTtsZXQgeD1uLm1hcHNbdl07aWYoYi5zdGVwKXtsZXQgbT1lLnN0ZXBzW3ZdLmludmVydChlLmRvY3Nbdl0pLGY9Yi5zZWxlY3Rpb24mJmIuc2VsZWN0aW9uLm1hcChuLnNsaWNlKHArMSx2KSk7ZiYmbCsrLGEucHVzaChuZXcgRmQoeCxtLGYpKX1lbHNlIGEucHVzaChuZXcgRmQoeCkpfSxyKTtsZXQgZD1bXTtmb3IobGV0IGI9dDtiPG87YisrKWQucHVzaChuZXcgRmQobi5tYXBzW2JdKSk7bGV0IHU9dGhpcy5pdGVtcy5zbGljZSgwLHIpLmFwcGVuZChkKS5hcHBlbmQoYSksYz1uZXcgcyh1LGwpO3JldHVybiBjLmVtcHR5SXRlbUNvdW50KCk+ZVhhJiYoYz1jLmNvbXByZXNzKHRoaXMuaXRlbXMubGVuZ3RoLWEubGVuZ3RoKSksY31lbXB0eUl0ZW1Db3VudCgpe2xldCBlPTA7cmV0dXJuIHRoaXMuaXRlbXMuZm9yRWFjaCh0PT57dC5zdGVwfHxlKyt9KSxlfWNvbXByZXNzKGU9dGhpcy5pdGVtcy5sZW5ndGgpe2xldCB0PXRoaXMucmVtYXBwaW5nKDAsZSksYT10Lm1hcHMubGVuZ3RoLHI9W10sbj0wO3JldHVybiB0aGlzLml0ZW1zLmZvckVhY2goKG8sbCk9PntpZihsPj1lKXIucHVzaChvKSxvLnNlbGVjdGlvbiYmbisrO2Vsc2UgaWYoby5zdGVwKXtsZXQgcD1vLnN0ZXAubWFwKHQuc2xpY2UoYSkpLGQ9cCYmcC5nZXRNYXAoKTtpZihhLS0sZCYmdC5hcHBlbmRNYXAoZCxhKSxwKXtsZXQgdT1vLnNlbGVjdGlvbiYmby5zZWxlY3Rpb24ubWFwKHQuc2xpY2UoYSkpO3UmJm4rKztsZXQgYz1uZXcgRmQoZC5pbnZlcnQoKSxwLHUpLGIsdj1yLmxlbmd0aC0xOyhiPXIubGVuZ3RoJiZyW3ZdLm1lcmdlKGMpKT9yW3ZdPWI6ci5wdXNoKGMpfX1lbHNlIG8ubWFwJiZhLS19LHRoaXMuaXRlbXMubGVuZ3RoLDApLG5ldyBzKGVzdC5mcm9tKHIucmV2ZXJzZSgpKSxuKX19O3BnLmVtcHR5PW5ldyBwZyhlc3QuZW1wdHksMCk7aSh0WGEsImN1dE9mZkV2ZW50cyIpO0ZkPWNsYXNzIHN7c3RhdGlje2kodGhpcywiSXRlbSIpfWNvbnN0cnVjdG9yKGUsdCxhLHIpe3RoaXMubWFwPWUsdGhpcy5zdGVwPXQsdGhpcy5zZWxlY3Rpb249YSx0aGlzLm1pcnJvck9mZnNldD1yfW1lcmdlKGUpe2lmKHRoaXMuc3RlcCYmZS5zdGVwJiYhZS5zZWxlY3Rpb24pe2xldCB0PWUuc3RlcC5tZXJnZSh0aGlzLnN0ZXApO2lmKHQpcmV0dXJuIG5ldyBzKHQuZ2V0TWFwKCkuaW52ZXJ0KCksdCx0aGlzLnNlbGVjdGlvbil9fX0sQmQ9Y2xhc3N7c3RhdGlje2kodGhpcywiSGlzdG9yeVN0YXRlIil9Y29uc3RydWN0b3IoZSx0LGEscixuKXt0aGlzLmRvbmU9ZSx0aGlzLnVuZG9uZT10LHRoaXMucHJldlJhbmdlcz1hLHRoaXMucHJldlRpbWU9cix0aGlzLnByZXZDb21wb3NpdGlvbj1ufX0sYVhhPTIwO2koc1hhLCJhcHBseVRyYW5zYWN0aW9uIik7aShpWGEsImlzQWRqYWNlbnRUbyIpO2kodjRhLCJyYW5nZXNGb3IiKTtpKHRzdCwibWFwUmFuZ2VzIik7aShyWGEsImhpc3RUcmFuc2FjdGlvbiIpO2FzdD0hMSx4NGE9bnVsbDtpKHRjZSwibXVzdFByZXNlcnZlSXRlbXMiKTtpKG9YYSwiY2xvc2VIaXN0b3J5Iik7SGQ9bmV3ICRyKCJoaXN0b3J5IikseTRhPW5ldyAkcigiY2xvc2VIaXN0b3J5Iik7aShzc3QsImhpc3RvcnkiKTtpKGFjZSwiYnVpbGRDb21tYW5kIik7c2NlPWFjZSghMSwhMCksaWNlPWFjZSghMCwhMCksblhhPWFjZSghMSwhMSksbFhhPWFjZSghMCwhMSk7aShjWGEsInVuZG9EZXB0aCIpO2koZFhhLCJyZWRvRGVwdGgiKTtpKHVYYSwiaXNIaXN0b3J5VHJhbnNhY3Rpb24iKX0pO3ZhciBrNGE9ZygoKT0+e3c0YSgpfSk7dmFyIHJjZSxTNGE9ZygoKT0+e2lpKCk7azRhKCk7cmNlPXdpLmNyZWF0ZSh7bmFtZToiaGlzdG9yeSIsYWRkT3B0aW9ucygpe3JldHVybntkZXB0aDoxMDAsbmV3R3JvdXBEZWxheTo1MDB9fSxhZGRDb21tYW5kcygpe3JldHVybnt1bmRvOmkoKCk9Pih7c3RhdGU6cyxkaXNwYXRjaDplfSk9PnNjZShzLGUpLCJ1bmRvIikscmVkbzppKCgpPT4oe3N0YXRlOnMsZGlzcGF0Y2g6ZX0pPT5pY2UocyxlKSwicmVkbyIpfX0sYWRkUHJvc2VNaXJyb3JQbHVnaW5zKCl7cmV0dXJuW3NzdCh0aGlzLm9wdGlvbnMpXX0sYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtyZXR1cm57Ik1vZC16IjppKCgpPT50aGlzLmVkaXRvci5jb21tYW5kcy51bmRvKCksIk1vZC16IiksIlNoaWZ0LU1vZC16IjppKCgpPT50aGlzLmVkaXRvci5jb21tYW5kcy5yZWRvKCksIlNoaWZ0LU1vZC16IiksIk1vZC15IjppKCgpPT50aGlzLmVkaXRvci5jb21tYW5kcy5yZWRvKCksIk1vZC15IiksIk1vZC1cdTA0NEYiOmkoKCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnVuZG8oKSwiTW9kLVx1MDQ0RiIpLCJTaGlmdC1Nb2QtXHUwNDRGIjppKCgpPT50aGlzLmVkaXRvci5jb21tYW5kcy5yZWRvKCksIlNoaWZ0LU1vZC1cdTA0NEYiKX19fSl9KTt2YXIgb2NlLF80YT1nKCgpPT57aWkoKTtHWigpO29jZT1zaS5jcmVhdGUoe25hbWU6Imhvcml6b250YWxSdWxlIixhZGRPcHRpb25zKCl7cmV0dXJue0hUTUxBdHRyaWJ1dGVzOnt9fX0sZ3JvdXA6ImJsb2NrIixwYXJzZUhUTUwoKXtyZXR1cm5be3RhZzoiaHIifV19LHJlbmRlckhUTUwoe0hUTUxBdHRyaWJ1dGVzOnN9KXtyZXR1cm5bImhyIixhcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMscyldfSxhZGRDb21tYW5kcygpe3JldHVybntzZXRIb3Jpem9udGFsUnVsZTppKCgpPT4oe2NoYWluOnMsc3RhdGU6ZX0pPT57aWYoIXFsZShlLGUuc2NoZW1hLm5vZGVzW3RoaXMubmFtZV0pKXJldHVybiExO2xldHtzZWxlY3Rpb246dH09ZSx7JGZyb206YSwkdG86cn09dCxuPXMoKTtyZXR1cm4gYS5wYXJlbnRPZmZzZXQ9PT0wP24uaW5zZXJ0Q29udGVudEF0KHtmcm9tOk1hdGgubWF4KGEucG9zLTEsMCksdG86ci5wb3N9LHt0eXBlOnRoaXMubmFtZX0pOkJsZSh0KT9uLmluc2VydENvbnRlbnRBdChyLnBvcyx7dHlwZTp0aGlzLm5hbWV9KTpuLmluc2VydENvbnRlbnQoe3R5cGU6dGhpcy5uYW1lfSksbi5jb21tYW5kKCh7dHI6byxkaXNwYXRjaDpsfSk9Pnt2YXIgcDtpZihsKXtsZXR7JHRvOmR9PW8uc2VsZWN0aW9uLHU9ZC5lbmQoKTtpZihkLm5vZGVBZnRlcilkLm5vZGVBZnRlci5pc1RleHRibG9jaz9vLnNldFNlbGVjdGlvbihKdC5jcmVhdGUoby5kb2MsZC5wb3MrMSkpOmQubm9kZUFmdGVyLmlzQmxvY2s/by5zZXRTZWxlY3Rpb24oRnQuY3JlYXRlKG8uZG9jLGQucG9zKSk6by5zZXRTZWxlY3Rpb24oSnQuY3JlYXRlKG8uZG9jLGQucG9zKSk7ZWxzZXtsZXQgYz0ocD1kLnBhcmVudC50eXBlLmNvbnRlbnRNYXRjaC5kZWZhdWx0VHlwZSk9PT1udWxsfHxwPT09dm9pZCAwP3ZvaWQgMDpwLmNyZWF0ZSgpO2MmJihvLmluc2VydCh1LGMpLG8uc2V0U2VsZWN0aW9uKEp0LmNyZWF0ZShvLmRvYyx1KzEpKSl9by5zY3JvbGxJbnRvVmlldygpfXJldHVybiEwfSkucnVuKCl9LCJzZXRIb3Jpem9udGFsUnVsZSIpfX0sYWRkSW5wdXRSdWxlcygpe3JldHVybltIbGUoe2ZpbmQ6L14oPzotLS184oCULXxfX19cc3xcKlwqXCpccykkLyx0eXBlOnRoaXMudHlwZX0pXX19KX0pO3ZhciBNNGEsejRhLEM0YSxUNGEsbmNlLCQ0YT1nKCgpPT57aWkoKTtNNGE9Lyg/Ol58XHMpKFwqKD8hXHMrXCopKCg/OlteKl0rKSlcKig/IVxzK1wqKSkkLyx6NGE9Lyg/Ol58XHMpKFwqKD8hXHMrXCopKCg/OlteKl0rKSlcKig/IVxzK1wqKSkvZyxDNGE9Lyg/Ol58XHMpKF8oPyFccytfKSgoPzpbXl9dKykpXyg/IVxzK18pKSQvLFQ0YT0vKD86XnxccykoXyg/IVxzK18pKCg/OlteX10rKSlfKD8hXHMrXykpL2csbmNlPURvLmNyZWF0ZSh7bmFtZToiaXRhbGljIixhZGRPcHRpb25zKCl7cmV0dXJue0hUTUxBdHRyaWJ1dGVzOnt9fX0scGFyc2VIVE1MKCl7cmV0dXJuW3t0YWc6ImVtIn0se3RhZzoiaSIsZ2V0QXR0cnM6aShzPT5zLnN0eWxlLmZvbnRTdHlsZSE9PSJub3JtYWwiJiZudWxsLCJnZXRBdHRycyIpfSx7c3R5bGU6ImZvbnQtc3R5bGU9bm9ybWFsIixjbGVhck1hcms6aShzPT5zLnR5cGUubmFtZT09PXRoaXMubmFtZSwiY2xlYXJNYXJrIil9LHtzdHlsZToiZm9udC1zdHlsZT1pdGFsaWMifV19LHJlbmRlckhUTUwoe0hUTUxBdHRyaWJ1dGVzOnN9KXtyZXR1cm5bImVtIixhcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMscyksMF19LGFkZENvbW1hbmRzKCl7cmV0dXJue3NldEl0YWxpYzppKCgpPT4oe2NvbW1hbmRzOnN9KT0+cy5zZXRNYXJrKHRoaXMubmFtZSksInNldEl0YWxpYyIpLHRvZ2dsZUl0YWxpYzppKCgpPT4oe2NvbW1hbmRzOnN9KT0+cy50b2dnbGVNYXJrKHRoaXMubmFtZSksInRvZ2dsZUl0YWxpYyIpLHVuc2V0SXRhbGljOmkoKCk9Pih7Y29tbWFuZHM6c30pPT5zLnVuc2V0TWFyayh0aGlzLm5hbWUpLCJ1bnNldEl0YWxpYyIpfX0sYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtyZXR1cm57Ik1vZC1pIjppKCgpPT50aGlzLmVkaXRvci5jb21tYW5kcy50b2dnbGVJdGFsaWMoKSwiTW9kLWkiKSwiTW9kLUkiOmkoKCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnRvZ2dsZUl0YWxpYygpLCJNb2QtSSIpfX0sYWRkSW5wdXRSdWxlcygpe3JldHVybltxYyh7ZmluZDpNNGEsdHlwZTp0aGlzLnR5cGV9KSxxYyh7ZmluZDpDNGEsdHlwZTp0aGlzLnR5cGV9KV19LGFkZFBhc3RlUnVsZXMoKXtyZXR1cm5bVGwoe2ZpbmQ6ejRhLHR5cGU6dGhpcy50eXBlfSksVGwoe2ZpbmQ6VDRhLHR5cGU6dGhpcy50eXBlfSldfX0pfSk7dmFyIGxjZSxENGE9ZygoKT0+e2lpKCk7bGNlPXNpLmNyZWF0ZSh7bmFtZToibGlzdEl0ZW0iLGFkZE9wdGlvbnMoKXtyZXR1cm57SFRNTEF0dHJpYnV0ZXM6e30sYnVsbGV0TGlzdFR5cGVOYW1lOiJidWxsZXRMaXN0IixvcmRlcmVkTGlzdFR5cGVOYW1lOiJvcmRlcmVkTGlzdCJ9fSxjb250ZW50OiJwYXJhZ3JhcGggYmxvY2sqIixkZWZpbmluZzohMCxwYXJzZUhUTUwoKXtyZXR1cm5be3RhZzoibGkifV19LHJlbmRlckhUTUwoe0hUTUxBdHRyaWJ1dGVzOnN9KXtyZXR1cm5bImxpIixhcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMscyksMF19LGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7cmV0dXJue0VudGVyOmkoKCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnNwbGl0TGlzdEl0ZW0odGhpcy5uYW1lKSwiRW50ZXIiKSxUYWI6aSgoKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMuc2lua0xpc3RJdGVtKHRoaXMubmFtZSksIlRhYiIpLCJTaGlmdC1UYWIiOmkoKCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLmxpZnRMaXN0SXRlbSh0aGlzLm5hbWUpLCJTaGlmdC1UYWIiKX19fSl9KTt2YXIgcFhhLEw0YSxpc3QsY2NlLEU0YT1nKCgpPT57aWkoKTtwWGE9Imxpc3RJdGVtIixMNGE9InRleHRTdHlsZSIsaXN0PS9eKFxkKylcLlxzJC8sY2NlPXNpLmNyZWF0ZSh7bmFtZToib3JkZXJlZExpc3QiLGFkZE9wdGlvbnMoKXtyZXR1cm57aXRlbVR5cGVOYW1lOiJsaXN0SXRlbSIsSFRNTEF0dHJpYnV0ZXM6e30sa2VlcE1hcmtzOiExLGtlZXBBdHRyaWJ1dGVzOiExfX0sZ3JvdXA6ImJsb2NrIGxpc3QiLGNvbnRlbnQoKXtyZXR1cm5gJHt0aGlzLm9wdGlvbnMuaXRlbVR5cGVOYW1lfStgfSxhZGRBdHRyaWJ1dGVzKCl7cmV0dXJue3N0YXJ0OntkZWZhdWx0OjEscGFyc2VIVE1MOmkocz0+cy5oYXNBdHRyaWJ1dGUoInN0YXJ0Iik/cGFyc2VJbnQocy5nZXRBdHRyaWJ1dGUoInN0YXJ0Iil8fCIiLDEwKToxLCJwYXJzZUhUTUwiKX0sdHlwZTp7ZGVmYXVsdDpudWxsLHBhcnNlSFRNTDppKHM9PnMuZ2V0QXR0cmlidXRlKCJ0eXBlIiksInBhcnNlSFRNTCIpfX19LHBhcnNlSFRNTCgpe3JldHVyblt7dGFnOiJvbCJ9XX0scmVuZGVySFRNTCh7SFRNTEF0dHJpYnV0ZXM6c30pe2xldHtzdGFydDplLC4uLnR9PXM7cmV0dXJuIGU9PT0xP1sib2wiLGFzKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyx0KSwwXTpbIm9sIixhcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMscyksMF19LGFkZENvbW1hbmRzKCl7cmV0dXJue3RvZ2dsZU9yZGVyZWRMaXN0OmkoKCk9Pih7Y29tbWFuZHM6cyxjaGFpbjplfSk9PnRoaXMub3B0aW9ucy5rZWVwQXR0cmlidXRlcz9lKCkudG9nZ2xlTGlzdCh0aGlzLm5hbWUsdGhpcy5vcHRpb25zLml0ZW1UeXBlTmFtZSx0aGlzLm9wdGlvbnMua2VlcE1hcmtzKS51cGRhdGVBdHRyaWJ1dGVzKHBYYSx0aGlzLmVkaXRvci5nZXRBdHRyaWJ1dGVzKEw0YSkpLnJ1bigpOnMudG9nZ2xlTGlzdCh0aGlzLm5hbWUsdGhpcy5vcHRpb25zLml0ZW1UeXBlTmFtZSx0aGlzLm9wdGlvbnMua2VlcE1hcmtzKSwidG9nZ2xlT3JkZXJlZExpc3QiKX19LGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7cmV0dXJueyJNb2QtU2hpZnQtNyI6aSgoKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlT3JkZXJlZExpc3QoKSwiTW9kLVNoaWZ0LTciKX19LGFkZElucHV0UnVsZXMoKXtsZXQgcz1PZCh7ZmluZDppc3QsdHlwZTp0aGlzLnR5cGUsZ2V0QXR0cmlidXRlczppKGU9Pih7c3RhcnQ6K2VbMV19KSwiZ2V0QXR0cmlidXRlcyIpLGpvaW5QcmVkaWNhdGU6aSgoZSx0KT0+dC5jaGlsZENvdW50K3QuYXR0cnMuc3RhcnQ9PT0rZVsxXSwiam9pblByZWRpY2F0ZSIpfSk7cmV0dXJuKHRoaXMub3B0aW9ucy5rZWVwTWFya3N8fHRoaXMub3B0aW9ucy5rZWVwQXR0cmlidXRlcykmJihzPU9kKHtmaW5kOmlzdCx0eXBlOnRoaXMudHlwZSxrZWVwTWFya3M6dGhpcy5vcHRpb25zLmtlZXBNYXJrcyxrZWVwQXR0cmlidXRlczp0aGlzLm9wdGlvbnMua2VlcEF0dHJpYnV0ZXMsZ2V0QXR0cmlidXRlczppKGU9Pih7c3RhcnQ6K2VbMV0sLi4udGhpcy5lZGl0b3IuZ2V0QXR0cmlidXRlcyhMNGEpfSksImdldEF0dHJpYnV0ZXMiKSxqb2luUHJlZGljYXRlOmkoKGUsdCk9PnQuY2hpbGRDb3VudCt0LmF0dHJzLnN0YXJ0PT09K2VbMV0sImpvaW5QcmVkaWNhdGUiKSxlZGl0b3I6dGhpcy5lZGl0b3J9KSksW3NdfX0pfSk7dmFyIGRjZSxQNGE9ZygoKT0+e2lpKCk7ZGNlPXNpLmNyZWF0ZSh7bmFtZToicGFyYWdyYXBoIixwcmlvcml0eToxZTMsYWRkT3B0aW9ucygpe3JldHVybntIVE1MQXR0cmlidXRlczp7fX19LGdyb3VwOiJibG9jayIsY29udGVudDoiaW5saW5lKiIscGFyc2VIVE1MKCl7cmV0dXJuW3t0YWc6InAifV19LHJlbmRlckhUTUwoe0hUTUxBdHRyaWJ1dGVzOnN9KXtyZXR1cm5bInAiLGFzKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxzKSwwXX0sYWRkQ29tbWFuZHMoKXtyZXR1cm57c2V0UGFyYWdyYXBoOmkoKCk9Pih7Y29tbWFuZHM6c30pPT5zLnNldE5vZGUodGhpcy5uYW1lKSwic2V0UGFyYWdyYXBoIil9fSxhZGRLZXlib2FyZFNob3J0Y3V0cygpe3JldHVybnsiTW9kLUFsdC0wIjppKCgpPT50aGlzLmVkaXRvci5jb21tYW5kcy5zZXRQYXJhZ3JhcGgoKSwiTW9kLUFsdC0wIil9fX0pfSk7dmFyIEk0YSxBNGEsdWNlLE40YT1nKCgpPT57aWkoKTtJNGE9Lyg/Ol58XHMpKH5+KD8hXHMrfn4pKCg/Oltefl0rKSl+fig/IVxzK35+KSkkLyxBNGE9Lyg/Ol58XHMpKH5+KD8hXHMrfn4pKCg/Oltefl0rKSl+fig/IVxzK35+KSkvZyx1Y2U9RG8uY3JlYXRlKHtuYW1lOiJzdHJpa2UiLGFkZE9wdGlvbnMoKXtyZXR1cm57SFRNTEF0dHJpYnV0ZXM6e319fSxwYXJzZUhUTUwoKXtyZXR1cm5be3RhZzoicyJ9LHt0YWc6ImRlbCJ9LHt0YWc6InN0cmlrZSJ9LHtzdHlsZToidGV4dC1kZWNvcmF0aW9uIixjb25zdW1pbmc6ITEsZ2V0QXR0cnM6aShzPT5zLmluY2x1ZGVzKCJsaW5lLXRocm91Z2giKT97fTohMSwiZ2V0QXR0cnMiKX1dfSxyZW5kZXJIVE1MKHtIVE1MQXR0cmlidXRlczpzfSl7cmV0dXJuWyJzIixhcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMscyksMF19LGFkZENvbW1hbmRzKCl7cmV0dXJue3NldFN0cmlrZTppKCgpPT4oe2NvbW1hbmRzOnN9KT0+cy5zZXRNYXJrKHRoaXMubmFtZSksInNldFN0cmlrZSIpLHRvZ2dsZVN0cmlrZTppKCgpPT4oe2NvbW1hbmRzOnN9KT0+cy50b2dnbGVNYXJrKHRoaXMubmFtZSksInRvZ2dsZVN0cmlrZSIpLHVuc2V0U3RyaWtlOmkoKCk9Pih7Y29tbWFuZHM6c30pPT5zLnVuc2V0TWFyayh0aGlzLm5hbWUpLCJ1bnNldFN0cmlrZSIpfX0sYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtyZXR1cm57Ik1vZC1TaGlmdC1zIjppKCgpPT50aGlzLmVkaXRvci5jb21tYW5kcy50b2dnbGVTdHJpa2UoKSwiTW9kLVNoaWZ0LXMiKX19LGFkZElucHV0UnVsZXMoKXtyZXR1cm5bcWMoe2ZpbmQ6STRhLHR5cGU6dGhpcy50eXBlfSldfSxhZGRQYXN0ZVJ1bGVzKCl7cmV0dXJuW1RsKHtmaW5kOkE0YSx0eXBlOnRoaXMudHlwZX0pXX19KX0pO3ZhciBwY2UsUjRhPWcoKCk9PntpaSgpO3BjZT1zaS5jcmVhdGUoe25hbWU6InRleHQiLGdyb3VwOiJpbmxpbmUifSl9KTt2YXIgb3N0PXt9O3l0KG9zdCx7U3RhcnRlcktpdDooKT0+cnN0LGRlZmF1bHQ6KCk9PnJzdH0pO3ZhciByc3QsbnN0PWcoKCk9PntpaSgpO1doYSgpO1hoYSgpO0poYSgpO2E0YSgpO3I0YSgpO280YSgpO2M0YSgpO2g0YSgpO2Y0YSgpO200YSgpO1M0YSgpO180YSgpOyQ0YSgpO0Q0YSgpO0U0YSgpO1A0YSgpO040YSgpO1I0YSgpO3JzdD13aS5jcmVhdGUoe25hbWU6InN0YXJ0ZXJLaXQiLGFkZEV4dGVuc2lvbnMoKXtsZXQgcz1bXTtyZXR1cm4gdGhpcy5vcHRpb25zLmJvbGQhPT0hMSYmcy5wdXNoKFZsZS5jb25maWd1cmUodGhpcy5vcHRpb25zLmJvbGQpKSx0aGlzLm9wdGlvbnMuYmxvY2txdW90ZSE9PSExJiZzLnB1c2goamxlLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuYmxvY2txdW90ZSkpLHRoaXMub3B0aW9ucy5idWxsZXRMaXN0IT09ITEmJnMucHVzaChVbGUuY29uZmlndXJlKHRoaXMub3B0aW9ucy5idWxsZXRMaXN0KSksdGhpcy5vcHRpb25zLmNvZGUhPT0hMSYmcy5wdXNoKFdsZS5jb25maWd1cmUodGhpcy5vcHRpb25zLmNvZGUpKSx0aGlzLm9wdGlvbnMuY29kZUJsb2NrIT09ITEmJnMucHVzaChHbGUuY29uZmlndXJlKHRoaXMub3B0aW9ucy5jb2RlQmxvY2spKSx0aGlzLm9wdGlvbnMuZG9jdW1lbnQhPT0hMSYmcy5wdXNoKEtsZS5jb25maWd1cmUodGhpcy5vcHRpb25zLmRvY3VtZW50KSksdGhpcy5vcHRpb25zLmRyb3BjdXJzb3IhPT0hMSYmcy5wdXNoKFlsZS5jb25maWd1cmUodGhpcy5vcHRpb25zLmRyb3BjdXJzb3IpKSx0aGlzLm9wdGlvbnMuZ2FwY3Vyc29yIT09ITEmJnMucHVzaChYbGUuY29uZmlndXJlKHRoaXMub3B0aW9ucy5nYXBjdXJzb3IpKSx0aGlzLm9wdGlvbnMuaGFyZEJyZWFrIT09ITEmJnMucHVzaChRbGUuY29uZmlndXJlKHRoaXMub3B0aW9ucy5oYXJkQnJlYWspKSx0aGlzLm9wdGlvbnMuaGVhZGluZyE9PSExJiZzLnB1c2goSmxlLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuaGVhZGluZykpLHRoaXMub3B0aW9ucy5oaXN0b3J5IT09ITEmJnMucHVzaChyY2UuY29uZmlndXJlKHRoaXMub3B0aW9ucy5oaXN0b3J5KSksdGhpcy5vcHRpb25zLmhvcml6b250YWxSdWxlIT09ITEmJnMucHVzaChvY2UuY29uZmlndXJlKHRoaXMub3B0aW9ucy5ob3Jpem9udGFsUnVsZSkpLHRoaXMub3B0aW9ucy5pdGFsaWMhPT0hMSYmcy5wdXNoKG5jZS5jb25maWd1cmUodGhpcy5vcHRpb25zLml0YWxpYykpLHRoaXMub3B0aW9ucy5saXN0SXRlbSE9PSExJiZzLnB1c2gobGNlLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMubGlzdEl0ZW0pKSx0aGlzLm9wdGlvbnMub3JkZXJlZExpc3QhPT0hMSYmcy5wdXNoKGNjZS5jb25maWd1cmUodGhpcy5vcHRpb25zLm9yZGVyZWRMaXN0KSksdGhpcy5vcHRpb25zLnBhcmFncmFwaCE9PSExJiZzLnB1c2goZGNlLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMucGFyYWdyYXBoKSksdGhpcy5vcHRpb25zLnN0cmlrZSE9PSExJiZzLnB1c2godWNlLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuc3RyaWtlKSksdGhpcy5vcHRpb25zLnRleHQhPT0hMSYmcy5wdXNoKHBjZS5jb25maWd1cmUodGhpcy5vcHRpb25zLnRleHQpKSxzfX0pfSk7dmFyIGNzdD17fTt5dChjc3Qse1VuZGVybGluZTooKT0+bHN0LGRlZmF1bHQ6KCk9PmxzdH0pO3ZhciBsc3QsZHN0PWcoKCk9PntpaSgpO2xzdD1Eby5jcmVhdGUoe25hbWU6InVuZGVybGluZSIsYWRkT3B0aW9ucygpe3JldHVybntIVE1MQXR0cmlidXRlczp7fX19LHBhcnNlSFRNTCgpe3JldHVyblt7dGFnOiJ1In0se3N0eWxlOiJ0ZXh0LWRlY29yYXRpb24iLGNvbnN1bWluZzohMSxnZXRBdHRyczppKHM9PnMuaW5jbHVkZXMoInVuZGVybGluZSIpP3t9OiExLCJnZXRBdHRycyIpfV19LHJlbmRlckhUTUwoe0hUTUxBdHRyaWJ1dGVzOnN9KXtyZXR1cm5bInUiLGFzKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxzKSwwXX0sYWRkQ29tbWFuZHMoKXtyZXR1cm57c2V0VW5kZXJsaW5lOmkoKCk9Pih7Y29tbWFuZHM6c30pPT5zLnNldE1hcmsodGhpcy5uYW1lKSwic2V0VW5kZXJsaW5lIiksdG9nZ2xlVW5kZXJsaW5lOmkoKCk9Pih7Y29tbWFuZHM6c30pPT5zLnRvZ2dsZU1hcmsodGhpcy5uYW1lKSwidG9nZ2xlVW5kZXJsaW5lIiksdW5zZXRVbmRlcmxpbmU6aSgoKT0+KHtjb21tYW5kczpzfSk9PnMudW5zZXRNYXJrKHRoaXMubmFtZSksInVuc2V0VW5kZXJsaW5lIil9fSxhZGRLZXlib2FyZFNob3J0Y3V0cygpe3JldHVybnsiTW9kLXUiOmkoKCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnRvZ2dsZVVuZGVybGluZSgpLCJNb2QtdSIpLCJNb2QtVSI6aSgoKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlVW5kZXJsaW5lKCksIk1vZC1VIil9fX0pfSk7dmFyIHBzdD17fTt5dChwc3Qse1RleHRBbGlnbjooKT0+dXN0LGRlZmF1bHQ6KCk9PnVzdH0pO3ZhciB1c3QsaHN0PWcoKCk9PntpaSgpO3VzdD13aS5jcmVhdGUoe25hbWU6InRleHRBbGlnbiIsYWRkT3B0aW9ucygpe3JldHVybnt0eXBlczpbXSxhbGlnbm1lbnRzOlsibGVmdCIsImNlbnRlciIsInJpZ2h0IiwianVzdGlmeSJdLGRlZmF1bHRBbGlnbm1lbnQ6bnVsbH19LGFkZEdsb2JhbEF0dHJpYnV0ZXMoKXtyZXR1cm5be3R5cGVzOnRoaXMub3B0aW9ucy50eXBlcyxhdHRyaWJ1dGVzOnt0ZXh0QWxpZ246e2RlZmF1bHQ6dGhpcy5vcHRpb25zLmRlZmF1bHRBbGlnbm1lbnQscGFyc2VIVE1MOmkocz0+e2xldCBlPXMuc3R5bGUudGV4dEFsaWduO3JldHVybiB0aGlzLm9wdGlvbnMuYWxpZ25tZW50cy5pbmNsdWRlcyhlKT9lOnRoaXMub3B0aW9ucy5kZWZhdWx0QWxpZ25tZW50fSwicGFyc2VIVE1MIikscmVuZGVySFRNTDppKHM9PnMudGV4dEFsaWduP3tzdHlsZTpgdGV4dC1hbGlnbjogJHtzLnRleHRBbGlnbn1gfTp7fSwicmVuZGVySFRNTCIpfX19XX0sYWRkQ29tbWFuZHMoKXtyZXR1cm57c2V0VGV4dEFsaWduOmkocz0+KHtjb21tYW5kczplfSk9PnRoaXMub3B0aW9ucy5hbGlnbm1lbnRzLmluY2x1ZGVzKHMpP3RoaXMub3B0aW9ucy50eXBlcy5tYXAodD0+ZS51cGRhdGVBdHRyaWJ1dGVzKHQse3RleHRBbGlnbjpzfSkpLmV2ZXJ5KHQ9PnQpOiExLCJzZXRUZXh0QWxpZ24iKSx1bnNldFRleHRBbGlnbjppKCgpPT4oe2NvbW1hbmRzOnN9KT0+dGhpcy5vcHRpb25zLnR5cGVzLm1hcChlPT5zLnJlc2V0QXR0cmlidXRlcyhlLCJ0ZXh0QWxpZ24iKSkuZXZlcnkoZT0+ZSksInVuc2V0VGV4dEFsaWduIiksdG9nZ2xlVGV4dEFsaWduOmkocz0+KHtlZGl0b3I6ZSxjb21tYW5kczp0fSk9PnRoaXMub3B0aW9ucy5hbGlnbm1lbnRzLmluY2x1ZGVzKHMpP2UuaXNBY3RpdmUoe3RleHRBbGlnbjpzfSk/dC51bnNldFRleHRBbGlnbigpOnQuc2V0VGV4dEFsaWduKHMpOiExLCJ0b2dnbGVUZXh0QWxpZ24iKX19LGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7cmV0dXJueyJNb2QtU2hpZnQtbCI6aSgoKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMuc2V0VGV4dEFsaWduKCJsZWZ0IiksIk1vZC1TaGlmdC1sIiksIk1vZC1TaGlmdC1lIjppKCgpPT50aGlzLmVkaXRvci5jb21tYW5kcy5zZXRUZXh0QWxpZ24oImNlbnRlciIpLCJNb2QtU2hpZnQtZSIpLCJNb2QtU2hpZnQtciI6aSgoKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMuc2V0VGV4dEFsaWduKCJyaWdodCIpLCJNb2QtU2hpZnQtciIpLCJNb2QtU2hpZnQtaiI6aSgoKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMuc2V0VGV4dEFsaWduKCJqdXN0aWZ5IiksIk1vZC1TaGlmdC1qIil9fX0pfSk7ZnVuY3Rpb24gYlhhKHMsZSl7cmV0dXJuIHMgaW4gZXx8KGVbc109W10pLGVbc119ZnVuY3Rpb24gaGcocyxlLHQpe2VbZnN0XSYmKGVbbVhdPSEwLGVbZ1hdPSEwKSxlW21zdF0mJihlW21YXT0hMCxlW2dzdF09ITApLGVbbVhdJiYoZVtnWF09ITApLGVbZ3N0XSYmKGVbZ1hdPSEwKSxlW2dYXSYmKGVbYnN0XT0hMCksZVtPNGFdJiYoZVtic3RdPSEwKTtmb3IobGV0IGEgaW4gZSl7bGV0IHI9YlhhKGEsdCk7ci5pbmRleE9mKHMpPDAmJnIucHVzaChzKX19ZnVuY3Rpb24gdlhhKHMsZSl7bGV0IHQ9e307Zm9yKGxldCBhIGluIGUpZVthXS5pbmRleE9mKHMpPj0wJiYodFthXT0hMCk7cmV0dXJuIHR9ZnVuY3Rpb24gRW4ocz1udWxsKXt0aGlzLmo9e30sdGhpcy5qcj1bXSx0aGlzLmpkPW51bGwsdGhpcy50PXN9ZnVuY3Rpb24gU1hhKHM9W10pe2xldCBlPXt9O0VuLmdyb3Vwcz1lO2xldCB0PW5ldyBFbjtqY2U9PW51bGwmJihqY2U9SzRhKGhYYSkpLFZjZT09bnVsbCYmKFZjZT1LNGEoZlhhKSksY3QodCwiJyIsJGNlKSxjdCh0LCJ7Iix2WCksY3QodCwifSIseFgpLGN0KHQsIlsiLGZjZSksY3QodCwiXSIsbWNlKSxjdCh0LCIoIixnY2UpLGN0KHQsIikiLGJjZSksY3QodCwiPCIsdmNlKSxjdCh0LCI+Iix4Y2UpLGN0KHQsIlx1RkYwOCIseWNlKSxjdCh0LCJcdUZGMDkiLHdjZSksY3QodCwiXHUzMDBDIixrY2UpLGN0KHQsIlx1MzAwRCIsU2NlKSxjdCh0LCJcdTMwMEUiLF9jZSksY3QodCwiXHUzMDBGIixNY2UpLGN0KHQsIlx1RkYxQyIsemNlKSxjdCh0LCJcdUZGMUUiLENjZSksY3QodCwiJiIsVGNlKSxjdCh0LCIqIixEY2UpLGN0KHQsIkAiLEloKSxjdCh0LCJgIixFY2UpLGN0KHQsIl4iLFBjZSksY3QodCwiOiIsQWgpLGN0KHQsIiwiLE1zdCksY3QodCwiJCIsSWNlKSxjdCh0LCIuIixxZCksY3QodCwiPSIsQWNlKSxjdCh0LCIhIix6c3QpLGN0KHQsIi0iLGpjKSxjdCh0LCIlIix5WCksY3QodCwifCIsTmNlKSxjdCh0LCIrIixSY2UpLGN0KHQsIiMiLE9jZSksY3QodCwiPyIsd1gpLGN0KHQsJyInLENzdCksY3QodCwiLyIsamQpLGN0KHQsIjsiLFRzdCksY3QodCwifiIsa1gpLGN0KHQsIl8iLEZjZSksY3QodCwiXFwiLExjZSksY3QodCwiXHUzMEZCIixxNGEpO2xldCBhPUtpKHQsVWQsa3N0LHtbZnN0XTohMH0pO0tpKGEsVWQsYSk7bGV0IHI9S2koYSxWZCxCNGEse1ttWF06ITB9KSxuPUtpKGEsV3YsSDRhLHtbZ1hdOiEwfSksbz1LaSh0LFZkLHB1LHtbbXN0XTohMH0pO0tpKG8sVWQsciksS2kobyxWZCxvKSxLaShyLFVkLHIpLEtpKHIsVmQscik7bGV0IGw9S2kodCxXdix4c3Qse1tnc3RdOiEwfSk7S2kobCxWZCksS2kobCxVZCxuKSxLaShsLFd2LGwpLEtpKG4sVWQsbiksS2kobixWZCksS2kobixXdixuKTtsZXQgcD1jdCh0LCRzdCxfc3Qse1t2c3RdOiEwfSksZD1jdCh0LFU0YSxTc3Qse1t2c3RdOiEwfSksdT1LaSh0LHFjZSxTc3Qse1t2c3RdOiEwfSk7Y3QodCxEc3QsdSksY3QoZCwkc3QscCksY3QoZCxEc3QsdSksS2koZCxxY2UsdSksY3QodSxVNGEpLGN0KHUsJHN0KSxLaSh1LHFjZSx1KSxjdCh1LERzdCx1KTtsZXQgYz1LaSh0LEhjZSxqNGEse1tPNGFdOiEwfSk7Y3QoYywiIyIpLEtpKGMsSGNlLGMpLGN0KGMsd1hhLGMpO2xldCBiPWN0KGMsa1hhKTtjdChiLCIjIiksS2koYixIY2UsYyk7bGV0IHY9W1tWZCxvXSxbVWQscl1dLHg9W1tWZCxudWxsXSxbV3YsbF0sW1VkLG5dXTtmb3IobGV0IG09MDttPGpjZS5sZW5ndGg7bSsrKU5oKHQsamNlW21dLHlzdCxwdSx2KTtmb3IobGV0IG09MDttPFZjZS5sZW5ndGg7bSsrKU5oKHQsVmNlW21dLHdzdCx4c3QseCk7aGcoeXN0LHt0bGQ6ITAsYXNjaWk6ITB9LGUpLGhnKHdzdCx7dXRsZDohMCxhbHBoYTohMH0sZSksTmgodCwiZmlsZSIsaGNlLHB1LHYpLE5oKHQsIm1haWx0byIsaGNlLHB1LHYpLE5oKHQsImh0dHAiLFV2LHB1LHYpLE5oKHQsImh0dHBzIixVdixwdSx2KSxOaCh0LCJmdHAiLFV2LHB1LHYpLE5oKHQsImZ0cHMiLFV2LHB1LHYpLGhnKGhjZSx7c2NoZW1lOiEwLGFzY2lpOiEwfSxlKSxoZyhVdix7c2xhc2hzY2hlbWU6ITAsYXNjaWk6ITB9LGUpLHM9cy5zb3J0KChtLGYpPT5tWzBdPmZbMF0/MTotMSk7Zm9yKGxldCBtPTA7bTxzLmxlbmd0aDttKyspe2xldCBmPXNbbV1bMF0sTT1zW21dWzFdP3tbbVhhXTohMH06e1tnWGFdOiEwfTtmLmluZGV4T2YoIi0iKT49MD9NW2JzdF09ITA6VmQudGVzdChmKT9VZC50ZXN0KGYpP01bbVhdPSEwOk1bbXN0XT0hMDpNW2ZzdF09ITAsRjRhKHQsZixmLE0pfXJldHVybiBGNGEodCwibG9jYWxob3N0IixiWCx7YXNjaWk6ITB9KSx0LmpkPW5ldyBFbihCY2UpLHtzdGFydDp0LHRva2VuczpPYmplY3QuYXNzaWduKHtncm91cHM6ZX0sVjRhKX19ZnVuY3Rpb24gVzRhKHMsZSl7bGV0IHQ9RzRhKGUucmVwbGFjZSgvW0EtWl0vZyxsPT5sLnRvTG93ZXJDYXNlKCkpKSxhPXQubGVuZ3RoLHI9W10sbj0wLG89MDtmb3IoO288YTspe2xldCBsPXMscD1udWxsLGQ9MCx1PW51bGwsYz0tMSxiPS0xO2Zvcig7bzxhJiYocD1sLmdvKHRbb10pKTspbD1wLGwuYWNjZXB0cygpPyhjPTAsYj0wLHU9bCk6Yz49MCYmKGMrPXRbb10ubGVuZ3RoLGIrKyksZCs9dFtvXS5sZW5ndGgsbis9dFtvXS5sZW5ndGgsbysrO24tPWMsby09YixkLT1jLHIucHVzaCh7dDp1LnQsdjplLnNsaWNlKG4tZCxuKSxzOm4tZCxlOm59KX1yZXR1cm4gcn1mdW5jdGlvbiBHNGEocyl7bGV0IGU9W10sdD1zLmxlbmd0aCxhPTA7Zm9yKDthPHQ7KXtsZXQgcj1zLmNoYXJDb2RlQXQoYSksbixvPXI8NTUyOTZ8fHI+NTYzMTl8fGErMT09PXR8fChuPXMuY2hhckNvZGVBdChhKzEpKTw1NjMyMHx8bj41NzM0Mz9zW2FdOnMuc2xpY2UoYSxhKzIpO2UucHVzaChvKSxhKz1vLmxlbmd0aH1yZXR1cm4gZX1mdW5jdGlvbiBOaChzLGUsdCxhLHIpe2xldCBuLG89ZS5sZW5ndGg7Zm9yKGxldCBsPTA7bDxvLTE7bCsrKXtsZXQgcD1lW2xdO3MualtwXT9uPXMualtwXToobj1uZXcgRW4oYSksbi5qcj1yLnNsaWNlKCkscy5qW3BdPW4pLHM9bn1yZXR1cm4gbj1uZXcgRW4odCksbi5qcj1yLnNsaWNlKCkscy5qW2Vbby0xXV09bixufWZ1bmN0aW9uIEs0YShzKXtsZXQgZT1bXSx0PVtdLGE9MCxyPSIwMTIzNDU2Nzg5Ijtmb3IoO2E8cy5sZW5ndGg7KXtsZXQgbj0wO2Zvcig7ci5pbmRleE9mKHNbYStuXSk+PTA7KW4rKztpZihuPjApe2UucHVzaCh0LmpvaW4oIiIpKTtmb3IobGV0IG89cGFyc2VJbnQocy5zdWJzdHJpbmcoYSxhK24pLDEwKTtvPjA7by0tKXQucG9wKCk7YSs9bn1lbHNlIHQucHVzaChzW2FdKSxhKyt9cmV0dXJuIGV9ZnVuY3Rpb24gU1gocyxlPW51bGwpe2xldCB0PU9iamVjdC5hc3NpZ24oe30sR3YpO3MmJih0PU9iamVjdC5hc3NpZ24odCxzIGluc3RhbmNlb2YgU1g/cy5vOnMpKTtsZXQgYT10Lmlnbm9yZVRhZ3Mscj1bXTtmb3IobGV0IG49MDtuPGEubGVuZ3RoO24rKylyLnB1c2goYVtuXS50b1VwcGVyQ2FzZSgpKTt0aGlzLm89dCxlJiYodGhpcy5kZWZhdWx0UmVuZGVyPWUpLHRoaXMuaWdub3JlVGFncz1yfWZ1bmN0aW9uIFk0YShzKXtyZXR1cm4gc31mdW5jdGlvbiBfWChzLGUpe3RoaXMudD0idG9rZW4iLHRoaXMudj1zLHRoaXMudGs9ZX1mdW5jdGlvbiBLdihzLGUpe2NsYXNzIHQgZXh0ZW5kcyBfWHtzdGF0aWN7aSh0aGlzLCJUb2tlbiIpfWNvbnN0cnVjdG9yKHIsbil7c3VwZXIocixuKSx0aGlzLnQ9c319Zm9yKGxldCBhIGluIGUpdC5wcm90b3R5cGVbYV09ZVthXTtyZXR1cm4gdC50PXMsdH1mdW5jdGlvbiBNWGEoe2dyb3VwczpzfSl7bGV0IGU9cy5kb21haW4uY29uY2F0KFtUY2UsRGNlLEloLExjZSxFY2UsUGNlLEljZSxBY2UsamMsa3N0LHlYLE5jZSxSY2UsT2NlLGpkLEJjZSxrWCxGY2VdKSx0PVskY2UsQWgsTXN0LHFkLHpzdCx5WCx3WCxDc3QsVHN0LHZjZSx4Y2UsdlgseFgsbWNlLGZjZSxnY2UsYmNlLHljZSx3Y2Usa2NlLFNjZSxfY2UsTWNlLHpjZSxDY2VdLGE9W1RjZSwkY2UsRGNlLExjZSxFY2UsUGNlLEljZSxBY2UsamMsdlgseFgseVgsTmNlLFJjZSxPY2Usd1gsamQsQmNlLGtYLEZjZV0scj1WYygpLG49Y3QocixrWCk7U2EobixhLG4pLFNhKG4scy5kb21haW4sbik7bGV0IG89VmMoKSxsPVZjKCkscD1WYygpO1NhKHIscy5kb21haW4sbyksU2EocixzLnNjaGVtZSxsKSxTYShyLHMuc2xhc2hzY2hlbWUscCksU2EobyxhLG4pLFNhKG8scy5kb21haW4sbyk7bGV0IGQ9Y3QobyxJaCk7Y3QobixJaCxkKSxjdChsLEloLGQpLGN0KHAsSWgsZCk7bGV0IHU9Y3QobixxZCk7U2EodSxhLG4pLFNhKHUscy5kb21haW4sbik7bGV0IGM9VmMoKTtTYShkLHMuZG9tYWluLGMpLFNhKGMscy5kb21haW4sYyk7bGV0IGI9Y3QoYyxxZCk7U2EoYixzLmRvbWFpbixjKTtsZXQgdj1WYyhMc3QpO1NhKGIscy50bGQsdiksU2EoYixzLnV0bGQsdiksY3QoZCxiWCx2KTtsZXQgeD1jdChjLGpjKTtjdCh4LGpjLHgpLFNhKHgscy5kb21haW4sYyksU2EodixzLmRvbWFpbixjKSxjdCh2LHFkLGIpLGN0KHYsamMseCk7bGV0IG09Y3QodixBaCk7U2EobSxzLm51bWVyaWMsTHN0KTtsZXQgZj1jdChvLGpjKSx5PWN0KG8scWQpO2N0KGYsamMsZiksU2EoZixzLmRvbWFpbixvKSxTYSh5LGEsbiksU2EoeSxzLmRvbWFpbixvKTtsZXQgTT1WYyhNWCk7U2EoeSxzLnRsZCxNKSxTYSh5LHMudXRsZCxNKSxTYShNLHMuZG9tYWluLG8pLFNhKE0sYSxuKSxjdChNLHFkLHkpLGN0KE0samMsZiksY3QoTSxJaCxkKTtsZXQgej1jdChNLEFoKSxOPVZjKE1YKTtTYSh6LHMubnVtZXJpYyxOKTtsZXQgQz1WYyhNWCksXz1WYygpO1NhKEMsZSxDKSxTYShDLHQsXyksU2EoXyxlLEMpLFNhKF8sdCxfKSxjdChNLGpkLEMpLGN0KE4samQsQyk7bGV0IE89Y3QobCxBaCksJD1jdChwLEFoKSxFPWN0KCQsamQpLEg9Y3QoRSxqZCk7U2EobCxzLmRvbWFpbixvKSxjdChsLHFkLHkpLGN0KGwsamMsZiksU2EocCxzLmRvbWFpbixvKSxjdChwLHFkLHkpLGN0KHAsamMsZiksU2EoTyxzLmRvbWFpbixDKSxjdChPLGpkLEMpLGN0KE8sd1gsQyksU2EoSCxzLmRvbWFpbixDKSxTYShILGUsQyksY3QoSCxqZCxDKTtsZXQgaz1bW3ZYLHhYXSxbZmNlLG1jZV0sW2djZSxiY2VdLFt2Y2UseGNlXSxbeWNlLHdjZV0sW2tjZSxTY2VdLFtfY2UsTWNlXSxbemNlLENjZV1dO2ZvcihsZXQgUz0wO1M8ay5sZW5ndGg7UysrKXtsZXRbSSxQXT1rW1NdLFI9Y3QoQyxJKTtjdChfLEksUiksY3QoUixQLEMpO2xldCBLPVZjKE1YKTtTYShSLGUsSyk7bGV0IFY9VmMoKTtTYShSLHQpLFNhKEssZSxLKSxTYShLLHQsViksU2EoVixlLEspLFNhKFYsdCxWKSxjdChLLFAsQyksY3QoVixQLEMpfXJldHVybiBjdChyLGJYLE0pLGN0KHIsX3N0LFo0YSkse3N0YXJ0OnIsdG9rZW5zOlY0YX19ZnVuY3Rpb24gelhhKHMsZSx0KXtsZXQgYT10Lmxlbmd0aCxyPTAsbj1bXSxvPVtdO2Zvcig7cjxhOyl7bGV0IGw9cyxwPW51bGwsZD1udWxsLHU9MCxjPW51bGwsYj0tMTtmb3IoO3I8YSYmIShwPWwuZ28odFtyXS50KSk7KW8ucHVzaCh0W3IrK10pO2Zvcig7cjxhJiYoZD1wfHxsLmdvKHRbcl0udCkpOylwPW51bGwsbD1kLGwuYWNjZXB0cygpPyhiPTAsYz1sKTpiPj0wJiZiKysscisrLHUrKztpZihiPDApci09dSxyPGEmJihvLnB1c2godFtyXSkscisrKTtlbHNle28ubGVuZ3RoPjAmJihuLnB1c2goUHN0KEVzdCxlLG8pKSxvPVtdKSxyLT1iLHUtPWI7bGV0IHY9Yy50LHg9dC5zbGljZShyLXUscik7bi5wdXNoKFBzdCh2LGUseCkpfX1yZXR1cm4gby5sZW5ndGg+MCYmbi5wdXNoKFBzdChFc3QsZSxvKSksbn1mdW5jdGlvbiBQc3QocyxlLHQpe2xldCBhPXRbMF0ucyxyPXRbdC5sZW5ndGgtMV0uZSxuPWUuc2xpY2UoYSxyKTtyZXR1cm4gbmV3IHMobix0KX1mdW5jdGlvbiBBc3QoKXtyZXR1cm4gRW4uZ3JvdXBzPXt9LHNzLnNjYW5uZXI9bnVsbCxzcy5wYXJzZXI9bnVsbCxzcy50b2tlblF1ZXVlPVtdLHNzLnBsdWdpblF1ZXVlPVtdLHNzLmN1c3RvbVNjaGVtZXM9W10sc3MuaW5pdGlhbGl6ZWQ9ITEsc3N9ZnVuY3Rpb24gQ1hhKHMsZSl7aWYodHlwZW9mIGUhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKGBsaW5raWZ5anM6IEludmFsaWQgdG9rZW4gcGx1Z2luICR7ZX0gKGV4cGVjdHMgZnVuY3Rpb24pYCk7Zm9yKGxldCB0PTA7dDxzcy50b2tlblF1ZXVlLmxlbmd0aDt0KyspaWYocz09PXNzLnRva2VuUXVldWVbdF1bMF0pe3pYKGBsaW5raWZ5anM6IHRva2VuIHBsdWdpbiAiJHtzfSIgYWxyZWFkeSByZWdpc3RlcmVkIC0gd2lsbCBiZSBvdmVyd3JpdHRlbmApLHNzLnRva2VuUXVldWVbdF09W3MsZV07cmV0dXJufXNzLnRva2VuUXVldWUucHVzaChbcyxlXSksc3MuaW5pdGlhbGl6ZWQmJnpYKGBsaW5raWZ5anM6IGFscmVhZHkgaW5pdGlhbGl6ZWQgLSB3aWxsIG5vdCByZWdpc3RlciB0b2tlbiBwbHVnaW4gIiR7c30iICR7SXN0fWApfWZ1bmN0aW9uIFRYYShzLGUpe2lmKHR5cGVvZiBlIT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcihgbGlua2lmeWpzOiBJbnZhbGlkIHBsdWdpbiAke2V9IChleHBlY3RzIGZ1bmN0aW9uKWApO2ZvcihsZXQgdD0wO3Q8c3MucGx1Z2luUXVldWUubGVuZ3RoO3QrKylpZihzPT09c3MucGx1Z2luUXVldWVbdF1bMF0pe3pYKGBsaW5raWZ5anM6IHBsdWdpbiAiJHtzfSIgYWxyZWFkeSByZWdpc3RlcmVkIC0gd2lsbCBiZSBvdmVyd3JpdHRlbmApLHNzLnBsdWdpblF1ZXVlW3RdPVtzLGVdO3JldHVybn1zcy5wbHVnaW5RdWV1ZS5wdXNoKFtzLGVdKSxzcy5pbml0aWFsaXplZCYmelgoYGxpbmtpZnlqczogYWxyZWFkeSBpbml0aWFsaXplZCAtIHdpbGwgbm90IHJlZ2lzdGVyIHBsdWdpbiAiJHtzfSIgJHtJc3R9YCl9ZnVuY3Rpb24gVWNlKHMsZT0hMSl7aWYoc3MuaW5pdGlhbGl6ZWQmJnpYKGBsaW5raWZ5anM6IGFscmVhZHkgaW5pdGlhbGl6ZWQgLSB3aWxsIG5vdCByZWdpc3RlciBjdXN0b20gc2NoZW1lICIke3N9IiAke0lzdH1gKSwhL15bMC05YS16XSsoLVswLTlhLXpdKykqJC8udGVzdChzKSl0aHJvdyBuZXcgRXJyb3IoYGxpbmtpZnlqczogaW5jb3JyZWN0IHNjaGVtZSBmb3JtYXQuCjEuIE11c3Qgb25seSBjb250YWluIGRpZ2l0cywgbG93ZXJjYXNlIEFTQ0lJIGxldHRlcnMgb3IgIi0iCjIuIENhbm5vdCBzdGFydCBvciBlbmQgd2l0aCAiLSIKMy4gIi0iIGNhbm5vdCByZXBlYXRgKTtzcy5jdXN0b21TY2hlbWVzLnB1c2goW3MsZV0pfWZ1bmN0aW9uIFE0YSgpe3NzLnNjYW5uZXI9U1hhKHNzLmN1c3RvbVNjaGVtZXMpO2ZvcihsZXQgcz0wO3M8c3MudG9rZW5RdWV1ZS5sZW5ndGg7cysrKXNzLnRva2VuUXVldWVbc11bMV0oe3NjYW5uZXI6c3Muc2Nhbm5lcn0pO3NzLnBhcnNlcj1NWGEoc3Muc2Nhbm5lci50b2tlbnMpO2ZvcihsZXQgcz0wO3M8c3MucGx1Z2luUXVldWUubGVuZ3RoO3MrKylzcy5wbHVnaW5RdWV1ZVtzXVsxXSh7c2Nhbm5lcjpzcy5zY2FubmVyLHBhcnNlcjpzcy5wYXJzZXJ9KTtyZXR1cm4gc3MuaW5pdGlhbGl6ZWQ9ITAsc3N9ZnVuY3Rpb24gWXYocyl7cmV0dXJuIHNzLmluaXRpYWxpemVkfHxRNGEoKSx6WGEoc3MucGFyc2VyLnN0YXJ0LHMsVzRhKHNzLnNjYW5uZXIuc3RhcnQscykpfWZ1bmN0aW9uIFdjZShzLGU9bnVsbCx0PW51bGwpe2lmKGUmJnR5cGVvZiBlPT0ib2JqZWN0Iil7aWYodCl0aHJvdyBFcnJvcihgbGlua2lmeWpzOiBJbnZhbGlkIGxpbmsgdHlwZSAke2V9OyBtdXN0IGJlIGEgc3RyaW5nYCk7dD1lLGU9bnVsbH1sZXQgYT1uZXcgU1godCkscj1ZdihzKSxuPVtdO2ZvcihsZXQgbz0wO288ci5sZW5ndGg7bysrKXtsZXQgbD1yW29dO2wuaXNMaW5rJiYoIWV8fGwudD09PWUpJiZhLmNoZWNrKGwpJiZuLnB1c2gobC50b0Zvcm1hdHRlZE9iamVjdChhKSl9cmV0dXJuIG59ZnVuY3Rpb24gJFhhKHMsZT1udWxsKXtsZXQgdD1ZdihzKTtyZXR1cm4gdC5sZW5ndGg9PT0xJiZ0WzBdLmlzTGluayYmKCFlfHx0WzBdLnQ9PT1lKX12YXIgaFhhLGZYYSxmc3QsbXN0LGdzdCxtWCxnWCxic3QsTzRhLG1YYSxnWGEsdnN0LFNhLEtpLEY0YSxjdCxwdSx4c3QsQjRhLEg0YSxiWCx5c3Qsd3N0LGhjZSxVdixrc3QsU3N0LF9zdCx2WCx4WCxmY2UsbWNlLGdjZSxiY2UsdmNlLHhjZSx5Y2Usd2NlLGtjZSxTY2UsX2NlLE1jZSx6Y2UsQ2NlLFRjZSwkY2UsRGNlLEloLExjZSxFY2UsUGNlLEFoLE1zdCxJY2UscWQsQWNlLHpzdCxqYyx5WCxOY2UsUmNlLE9jZSx3WCxDc3QscTRhLFRzdCxqZCxrWCxGY2UsajRhLEJjZSxWNGEsVmQsV3YsSGNlLHhYYSxVZCxxY2UseVhhLFU0YSwkc3Qsd1hhLGtYYSxEc3QsamNlLFZjZSxHdixfWGEsTHN0LEVzdCxaNGEsTVgsWDRhLFZjLHpYLElzdCxzcyxKNGE9ZygoKT0+e2hYYT0iYWFhMXJwM2JiMG90dDN2aWU0YzFsZTJvZ2FkbzV1ZGhhYmk3YzBhZGVteTVjZW50dXJlNm91bnRhbnQwczlvMXRvcjRkMHMxdWx0NGUwZzFybzJ0bmE0ZjBsMXJpY2E1ZzBha2hhbjVlbmN5NWkwZzFyYnVzM2ZvcmNlNXRlbDVrZG4zbDBpYmFiYTRwYXk0bGZpbmFuejZzdGF0ZTV5MnNhY2UzdG9tNW0wYXpvbjRlcmljYW5leHByZXNzN2ZhbWlseTExeDJmYW0zaWNhM3N0ZXJkYW04bmFseXRpY3M3ZHJvaWQ1cXVhbjR6Mm8wbDJwYXJ0bWVudHM4cDBsZTRxMHVhcmVsbGU4cjBhYjFtY280Y2hpM215MnBhMnQwZTNzMGRhMmlhMnNvY2lhdGVzOXQwaGxldGE1dG9ybmV5N3UwY3Rpb241ZGkwYmxlM28zc3Bvc3Q1dGhvcjNvMHM0dzBzMngwYTJ6MHVyZTViYTBieTJpZHUzbmFtZXg0ZDFrMnIwY2Vsb25hNWxheWNhcmQ0czVlZm9vdDVnYWluczZzZWJhbGw1a2V0YmFsbDh1aGF1czV5ZXJuNWIwYzF0MXZhM2NnMW4yZDFlMGF0czJ1dHk0ZXIycmxpbjRzdDBidXk1dDJmMWcxaDBhcnRpNWkwYmxlM2Qxa2UybmcwbzNvMXoyajFsYWNrMGZyaWRheTlvY2tidXN0ZXI4ZzFvbWJlcmc3dWUzbTBzMXcybjBwcGFyaWJhczlvMGF0czNlaHJpbmdlcjhmYTJtMW5kMm8wazBpbmc1c2NoMnRpazJvbjR0MXV0aXF1ZTZ4MnIwYWRlc2NvNmlkZ2VzdG9uZTlvYWR3YXk1a2VyM3RoZXI1dXNzZWxzN3MxdDF1aWxkMGVyczZzaW5lc3M2eTF6ejN2MXcxeTF6MGgzY2EwYjFmZTJsMGwxdmlua2xlaW45bTBlcmEzcDJub24zcGV0b3duNWl0YWwwb25lOHIwYXZhbjRkczJlMGVyMHM0czJzYTFlMWgxaW5vNHQwZXJpbmc1aG9saWM3YmExbjFyZTNjMWQxZW50ZXI0bzFybjNmMGExZDJnMWgwYW5lbDJuZWw0cml0eTRzZTJ0MmVhcDNpbnRhaTVyaXN0bWFzNm9tZTR1cmNoNWkwcHJpYW5pNnJjbGU0c2NvM3RhZGVsNGkwYzJ5M2sxbDBhaW1zNGVhbmluZzZpY2sybmljMXF1ZTZvdGhpbmc1dWQzdWIwbWVkNm0xbjFvMGFjaDNkZXMzZmZlZTRsbGVnZTRvZ25lNW0wbWJhbms0dW5pdHk2cGFueTJyZTN1dGVyNXNlYzRuZG9zM3N0cnVjdGlvbjh1bHRpbmc3dGFjdDNyYWN0b3JzOW9raW5nNGwxcDJyc2ljYTV1bnRyeTRwb24wczRyc2VzNnBhMnIwZWRpdDBjYXJkNHVuaW9uOWlja2V0NW93bjNzMXVpc2UwczZ1MGlzaW5lbGxhOXYxdzF4MXkwbXJ1M291M3oyZGFkMW5jZTN0YTFlMWluZzNzdW40eTJjbGszZHMyZTBhbDBlcjJzM2dyZWU0bGl2ZXJ5NWwxb2l0dGU1dGEzbW9jcmF0Nm50YWwyaXN0NXNpMGduNHYyaGwyaWFtb25kczZldDJnaXRhbDVyZWN0MG9yeTdzY291bnQzdmVyNWgyeTJqMWsxbTFucDJvMGNzMXRvcjRnMW1haW5zNXQxd25sb2FkN3JpdmU0dHYydWJhaTNubG9wNHBvbnQ0cmJhbjV2YWcycjJ6MmVhcnRoM3QyYzBvMmRla2EzdTBjYXRpb244ZTFnMW1haWwzZXJjazVuZXJneTRnaW5lZXIwaW5nOXRlcnByaXNlczEwcHNvbjRxdWlwbWVudDhyMGljc3NvbjZuaTNzMHExdGF0ZTV0MXUwcm92aXNpb244czJ2ZW50czV4Y2hhbmdlNnBlcnQzb3NlZDRyZXNzNXRyYXNwYWNlMTBmYWdlMmlsMXJ3aW5kczZ0aDNtaWx5NG4wczJybTBlcnM1c2hpb240dDNlZGV4M2VkYmFjazZycmFyaTNlcm82aTBkZWxpdHk1bzJsbTJuYWwxbmNlMWlhbDdyZTBzdG9uZTZtZGFsZTZzaDBpbmc1dDBuZXNzNmoxazFsaWNrcjNnaHRzNHIyb3Jpc3Q0d2VyczV5Mm0xbzBvMGQxdGJhbGw2cmQxZXgyc2FsZTR1bTN1bmRhdGlvbjh4MnIwZWUxc2VuaXVzN2wxb2dhbnM0bnRpZXI3dHIydWppdHN1NW4wZDJybml0dXJlN3Rib2w1eWkzZ2EwbDBsZXJ5M28xdXA0bWUwczNwMXJkZW40eTJiMGl6M2QwbjJlMGExbnQwaW5nNW9yZ2U1ZjFnMGVlM2gxaTBmdDBzM3ZlczJpbmc1bDBhc3MzZTFvYmFsMm80bTBhaWwzYmgybzF4Mm4xb2RhZGR5NWxkMHBvaW50NmYybzBkeWVhcjVnMGxlNHAxdDF2MnAxcTFyMGFpbmdlcjVwaGljczV0aXM0ZWVuM2lwZTNvY2VyeTR1cDRzMXQxdTBjY2kzZ2UyaWRlMnRhcnM1cnUzdzF5MmhhaXIybWJ1cmc1bmdvdXQ1dXMzYm8yZGZjMGJhbms3ZWFsdGgwY2FyZThscDFzaW5raTZyZTFtZXM1aXBob3A0c2FtaXRzdTd0YWNoaTV2MmswdDJtMW4xb2NrZXk0bGRpbmdzNWlkYXk1bWVkZXBvdDVnb29kczVzMGVuc2U3bmRhM3JzZTNzcGl0YWw1dDBpbmc1dDBlbHMzbWFpbDV1c2UzdzJyMXNiYzN0MXUwZ2hlczV5YXR0M3VuZGFpN2libTJjYmMyZTF1MmQxZTBlZTNmbTJrYW5vNGwxbTBhbWF0NGRiMm1vMGJpbGllbjluMGMxZHVzdHJpZXM4ZmluaXRpNW8yZzFrMXN0aXR1dGU2dXJhbmNlNGU0dDBlcm5hdGlvbmFsMTB1aXQ0dmVzdG1lbnRzMTBvMXBpcmFuZ2E3cTFyMGlzaDRzMG1haWxpNXQwYW5idWw3dDBhdTJ2M2phZ3VhcjR2YTNjYjJlMGVwMnR6dDN3ZWxyeTZpbzJsbDJtMHAybmoybzBiczF1cmc0dDF5MnAwbW9yZ2FuNnJzM3VlZ29zNG5pcGVyN2thdWZlbjVkZGkzZTBycnlob3RlbHM2cHJvcGVydGllczE0ZmgyZzFoMWkwYTFkczJtMW5kbGU0dGNoZW41d2kzbTFuMW9lbG4zbWF0c3U1c2hlcjVwMG1nMm4ycjBkMWVkM3Vva2dyb3VwOHcxeTBvdG80ejJsYTBjYWl4YTVtYm9yZ2hpbmk4ZXIzbmQwcm92ZXI2eGVzczVzYWxsZTV0MGlubzNyb2JlNXcweWVyNWIxYzFkczJlYXNlM2NsZXJjNWZyYWs0Z2FsMm8yeHVzNGdidDNpMGRsMmZlMGluc3VyYW5jZTlzdHlsZTdnaHRpbmc2a2UybGx5M21pdGVkNG8ybmNvbG40azJ2ZTFpbmc1azFsYzFwMm9hbjBzM2NrZXIzdXMzbDFuZG9uNHR0ZTFvM3ZlM3BsMGZpbmFuY2lhbDExcjFzMXQwZDBhM3UwbmRiZWNrNnhlMXVyeTV2MXkybWEwZHJpZDRpZjFzb240a2V1cDRuMGFnZW1lbnQ3Z28zcDFya2V0MGluZzNzNHJpb3R0NXNoYWxsczd0dGVsNWJhMmMwa2luc2V5N2QxZTBkMGlhM2V0Mmxib3VybmU3bWUxb3JpYWw2bjB1MnJja21zZDdnMWgxaWFtaTNjcm9zb2Z0N2wxbmkxdDJ0MHN1YmlzaGk5azFsMGIxczJtMGEybjFvMGJpMGxlNGRhMmUxaTFtMW5hc2gzZXkyc3RlcjVybW9uM3RnYWdlNnNjb3c0dG8wcmN5Y2xlczl2MGllNHAxcTFyMXMwZDJ0MG4xcjJ1MHNldW0zaWM0djF3MXgxeTF6Mm5hMGIxZ295YTRtZTJ2eTNiYTJjMWUwYzF0MGJhbms0ZmxpeDR3b3JrNXVzdGFyNXcwczJ4dDBkaXJlY3Q3dXM0ZjBsMmcwbzJoazJpMGNvMmtlMW9uM25qYTNzc2FuMXk1bDFvMGtpYTNydG9uNHcwcnV6M3R2NHAxcjBhMXcydHQydTF5YzJ6Mm9iaTFzZXJ2ZXI3ZmZpY2U1a2luYXdhNmxheWFuMGdyb3VwOWxvM20wZWdhNG5lMWcxbDBpbmU1b28ycGVuM3JhY2xlM25nZTRnMGFuaWM1aWdpbnM2c2FrYTR0c3VrYTR0MnZoM3BhMGdlMm5hc29uaWM3cmlzMnMxdG5lcnM0czF5M3kyY2N3M2UwdDJmMGl6ZXI1ZzFoMGFybWFjeTZkMWlsaXBzNW9uZTJ0bzBncmFwaHk2czR5c2lvNWljczF0ZXQydXJlczZkMW4wZzFrMm9uZWVyNXp6YTRrMWwwYWNlMnkwc3RhdGlvbjl1bWJpbmc1czNtMW4wYzJvaGwya2VyM2xpdGllNXJuMnN0M3IwYXhpM2VzczNpbWUzbzBkMHVjdGlvbnM4ZjFncmVzc2l2ZThtbzJwZXJ0aWVzM3k1dGVjdGlvbjh1MGRlbnRpYWw5czF0MXViMncwYzJ5MnFhMXBvbjN1ZWJlYzNzdDVyYWNpbmc0ZGlvNGUwYWQxbGVzdGF0ZTZ0b3IyeTRjaXBlczVkMHN0b25lNXVtYnJlbGxhOWhhYjNpc2UwbjN0MmxpYW5jZTZuMHQwYWxzNXBhaXIzb3J0M3VibGljYW44c3QwYXVyYW50OHZpZXcwczV4cm90aDZpY2gwYXJkbGk2b2gzbDFvMXAybzBja3MzZGVvM2dlcnM0b20zczB2cDN1MGdieTNocjJuMncwZTJ5dWt5dTZzYTBhcmxhbmQ2ZmUwdHk0a3VyYTRsZTFvbjNtc2NsdWI0dW5nNW5kdmlrMGNvcm9tYW50MTJvZmk0cDFybDJzMXZlMnhvM2IwaTFzMmMwYjFoYWVmZmxlcjdtaWR0NG9sYXJzaGlwczhvbDN1bGUzd2FyejVpZW5jZTVvdDNkMWUwYXJjaDN0MmN1cmUxaXR5NmVrMmxlY3Q0bmVyM3J2aWNlczZ2ZW4zdzF4MHkzZnIyZzFoMGFuZ3JpbGE2cnAzZWxsM2lhMWtzaGE1b2VzMnAwcGluZzV1amkzdzNpMGxrMm5hMWdsZXM1dGUzajFrMGkwbjJ5MHBlNGwwaW5nNG0wYXJ0M2lsZTRuMGNmM28wY2NlcjNpYWw0ZnRiYW5rNHdhcmU2aHUybGFyMnV0aW9uczduZzF5MnkycGEwY2Uzb3J0MnQzcjBsMnMxdDBhZGEycGxlczRyMXRlYmFuazRmYXJtN2MwZ3JvdXA2b2NraG9sbTZyYWdlM2UzcmVhbTR1ZGlvMnkzeWxlNHUwY2tzM3BwbGllczN5Mm9ydDVyZjFnZXJ5NXp1a2k1djF3YXRjaDRpc3M0eDF5MGRuZXk0c3RlbXM2ejJ0YWIxaXBlaTRsazJvYmFvNHJnZXQ0dGFtb3RvcnM2cjJ0b280eDBpM2MwaTJkMGsyZWFtMmNoMG5vbG9neThsMW1hc2VrNW5uaXM0dmEzZjFnMWgwZDFlYXRlcjJyZTZpYWEyY2tldHM1ZW5kYTRwczJyZXMyb2w0ajBtYXh4NHgyazBtYXh4NWwxbTBhbGw0bjFvMGRheTNreW8zb2xzM3AxcmF5M3NoaWJhNXRhbDN1cnMzd24yeW90YTNzM3IwYWRlMWluZzRpbmluZzV2ZWwwZXJzMGluc3VyYW5jZTE2dXN0M3YydDF1YmUyaTFuZXMzc2h1NHYwczJ3MXoydWExYmFuazNzMmcxazFuaWNvbTN2ZXJzaXR5OG8yb2wycHMyczF5MXoydmEwY2F0aW9uczduYTFndWFyZDdjMWUwZ2FzM250dXJlczZyaXNpZ241bVx4RjZnZW5zYmVyYXRlcjJ1bmcxNHNpY2hlcnVuZzEwdDJnMWkwYWplczRkZW8zZzFraW5nNGxsYXM0bjFwMXJnaW40c2ExaW9uNHZhMW8zbGFhbmRlcmVuOW4xb2RrYTNsdm8zdGUxaW5nM28yeWFnZTV1MndhbGVzMm1hcnQ0dGVyNG5nMGdvdTV0Y2gwZXM2ZWF0aGVyMGNoYW5uZWwxMmJjYW0zZXIyc2l0ZTVkMGRpbmc1aWJvMnIzZjFob3N3aG82aWVuMmtpMmxsaWFtaGlsbDluMGRvd3M0ZTFuZXJzNm1lMm9sdGVyc2tsdXdlcjExb2RzaWRlNnJrMHMybGQzdzJzMXRjMWYzeGJveDNlcm94NGlodWFuNG4yeHgyeXozeWFjaHRzNGhvbzNtYXh1bjVuZGV4NWUxb2RvYmFzaGk3Z2Eya29oYW1hNnUwdHViZTZ0MXVuM3phMHBwb3M0cmEzZXJvM2lwMm0xb25lM3VlcmljaDZ3MiIsZlhhPSJcdTAzQjVcdTAzQkIxXHUwM0M1Mlx1MDQzMVx1MDQzMzFcdTA0MzVcdTA0M0IzXHUwNDM0XHUwNDM1XHUwNDQyXHUwNDM4NFx1MDQzNVx1MDQ0RTJcdTA0M0FcdTA0MzBcdTA0NDJcdTA0M0VcdTA0M0JcdTA0MzhcdTA0M0E2XHUwNDNFXHUwNDNDM1x1MDQzQ1x1MDQzQVx1MDQzNDJcdTA0M0VcdTA0M0QxXHUwNDQxXHUwNDNBXHUwNDMyXHUwNDMwNlx1MDQzRVx1MDQzRFx1MDQzQlx1MDQzMFx1MDQzOVx1MDQzRDVcdTA0NDBcdTA0MzMzXHUwNDQwXHUwNDQzXHUwNDQxMlx1MDQ0NDJcdTA0NDFcdTA0MzBcdTA0MzlcdTA0NDIzXHUwNDQwXHUwNDMxM1x1MDQ0M1x1MDQzQVx1MDQ0MDNcdTA0OUJcdTA0MzBcdTA0MzczXHUwNTcwXHUwNTYxXHUwNTc1M1x1MDVEOVx1MDVFOVx1MDVFOFx1MDVEMFx1MDVEQzVcdTA1RTdcdTA1RDVcdTA1REQzXHUwNjI3XHUwNjI4XHUwNjQ4XHUwNjM4XHUwNjI4XHUwNjRBNVx1MDYzMVx1MDYyN1x1MDY0NVx1MDY0M1x1MDY0ODVcdTA2NDRcdTA2MjdcdTA2MzFcdTA2MkZcdTA2NDY0XHUwNjI4XHUwNjJEXHUwNjMxXHUwNjRBXHUwNjQ2NVx1MDYyQ1x1MDYzMlx1MDYyN1x1MDYyNlx1MDYzMTVcdTA2MzNcdTA2MzlcdTA2NDhcdTA2MkZcdTA2NEFcdTA2Mjk2XHUwNjM5XHUwNjQ0XHUwNjRBXHUwNjI3XHUwNjQ2NVx1MDY0NVx1MDYzQVx1MDYzMVx1MDYyODVcdTA2NDVcdTA2MjdcdTA2MzFcdTA2MjdcdTA2MkE1XHUwNkNDXHUwNjMxXHUwNjI3XHUwNjQ2NVx1MDYyOFx1MDYyN1x1MDYzMVx1MDYyQTJcdTA2MzJcdTA2MjdcdTA2MzE0XHUwNjRBXHUwNjJBXHUwNjQzM1x1MDZCRVx1MDYyN1x1MDYzMVx1MDYyQTVcdTA2MkFcdTA2NDhcdTA2NDZcdTA2MzM0XHUwNjMzXHUwNjQ4XHUwNjJGXHUwNjI3XHUwNjQ2M1x1MDYzMVx1MDY0QVx1MDYyOTVcdTA2MzRcdTA2MjhcdTA2NDNcdTA2Mjk0XHUwNjM5XHUwNjMxXHUwNjI3XHUwNjQyMlx1MDYyODJcdTA2NDVcdTA2MjdcdTA2NDY0XHUwNjQxXHUwNjQ0XHUwNjMzXHUwNjM3XHUwNjRBXHUwNjQ2Nlx1MDY0Mlx1MDYzN1x1MDYzMTNcdTA2NDNcdTA2MjdcdTA2MkJcdTA2NDhcdTA2NDRcdTA2NEFcdTA2NDM2XHUwNjQ4XHUwNjQ1M1x1MDY0NVx1MDYzNVx1MDYzMTJcdTA2NDRcdTA2NEFcdTA2MzNcdTA2NEFcdTA2Mjc1XHUwNjQ4XHUwNjMxXHUwNjRBXHUwNjJBXHUwNjI3XHUwNjQ2XHUwNjRBXHUwNjI3N1x1MDY0Mlx1MDYzOTRcdTA2NDdcdTA2NDVcdTA2MzFcdTA2MjdcdTA2NDc1XHUwNjdFXHUwNjI3XHUwNkE5XHUwNjMzXHUwNjJBXHUwNjI3XHUwNjQ2N1x1MDY4MFx1MDYyN1x1MDYzMVx1MDYyQTRcdTA5MTVcdTA5NDlcdTA5MkUzXHUwOTI4XHUwOTQ3XHUwOTFGM1x1MDkyRFx1MDkzRVx1MDkzMFx1MDkyNDBcdTA5MkVcdTA5NEQzXHUwOTRCXHUwOTI0NVx1MDkzOFx1MDkwMlx1MDkxN1x1MDkyMFx1MDkyODVcdTA5QUNcdTA5QkVcdTA5ODJcdTA5QjJcdTA5QkU1XHUwOUFEXHUwOUJFXHUwOUIwXHUwOUE0Mlx1MDlGMFx1MDlBNDRcdTBBMkRcdTBBM0VcdTBBMzBcdTBBMjQ0XHUwQUFEXHUwQUJFXHUwQUIwXHUwQUE0NFx1MEIyRFx1MEIzRVx1MEIzMFx1MEIyNDRcdTBCODdcdTBCQThcdTBCQ0RcdTBCQTRcdTBCQkZcdTBCQUZcdTBCQkU2XHUwQkIyXHUwQjk5XHUwQkNEXHUwQjk1XHUwQkM4Nlx1MEI5QVx1MEJCRlx1MEI5OVx1MEJDRFx1MEI5NVx1MEJBQVx1MEJDRFx1MEJBQVx1MEJDMlx1MEJCMFx1MEJDRDExXHUwQzJEXHUwQzNFXHUwQzMwXHUwQzI0XHUwQzRENVx1MENBRFx1MENCRVx1MENCMFx1MENBNDRcdTBEMkRcdTBEM0VcdTBEMzBcdTBEMjRcdTBEMDI1XHUwREJEXHUwRDgyXHUwRDlBXHUwRENGNFx1MEUwNFx1MEUyRFx1MEUyMTNcdTBFNDRcdTBFMTdcdTBFMjIzXHUwRUE1XHUwRUIyXHUwRUE3M1x1MTBEMlx1MTBENDJcdTMwN0ZcdTMwOTNcdTMwNkEzXHUzMEEyXHUzMERFXHUzMEJFXHUzMEYzNFx1MzBBRlx1MzBFOVx1MzBBNlx1MzBDOTRcdTMwQjBcdTMwRkNcdTMwQjBcdTMwRUI0XHUzMEIzXHUzMEUwMlx1MzBCOVx1MzBDOFx1MzBBMjNcdTMwQkJcdTMwRkNcdTMwRUIzXHUzMEQ1XHUzMEExXHUzMEMzXHUzMEI3XHUzMEU3XHUzMEYzNlx1MzBERFx1MzBBNFx1MzBGM1x1MzBDODRcdTRFMTZcdTc1NEMyXHU0RTJEXHU0RkUxMVx1NTZGRDFcdTU3MEIxXHU2NTg3XHU3RjUxM1x1NEU5QVx1OUE2Q1x1OTAwQTNcdTRGMDFcdTRFMUEyXHU0RjVCXHU1QzcxMlx1NEZFMVx1NjA2RjJcdTUwNjVcdTVFQjcyXHU1MTZCXHU1MzY2Mlx1NTE2Q1x1NTNGODFcdTc2Q0EyXHU1M0YwXHU2RTdFMVx1NzA2MzJcdTU1NDZcdTU3Q0UxXHU1RTk3MVx1NjgwNzJcdTU2MDlcdTkxQ0MwXHU1OTI3XHU5MTUyXHU1RTk3NVx1NTcyOFx1N0VCRjJcdTU5MjdcdTYyRkYyXHU1OTI5XHU0RTNCXHU2NTU5M1x1NUEzMVx1NEU1MDJcdTVCQjZcdTk2RkIyXHU1RTdGXHU0RTFDMlx1NUZBRVx1NTM1QTJcdTYxNDhcdTU1ODQyXHU2MjExXHU3MjMxXHU0RjYwM1x1NjI0Qlx1NjczQTJcdTYyREJcdTgwNTgyXHU2NTNGXHU1MkExMVx1NUU5QzJcdTY1QjBcdTUyQTBcdTU3NjEyXHU5NUZCMlx1NjVGNlx1NUMxQTJcdTY2RjhcdTdDNEQyXHU2NzNBXHU2Nzg0Mlx1NkRFMVx1OUE2Q1x1OTUyMTNcdTZFMzhcdTYyMEYyXHU2RkIzXHU5NTgwMlx1NzBCOVx1NzcwQjJcdTc5RkJcdTUyQTgyXHU3RUM0XHU3RUM3XHU2NzNBXHU2Nzg0NFx1N0Y1MVx1NTc0MDFcdTVFOTcxXHU3QUQ5MVx1N0VEQzJcdTgwNTRcdTkwMUEyXHU4QzM3XHU2QjRDMlx1OEQyRFx1NzI2OTJcdTkwMUFcdThDQTkyXHU5NkM2XHU1NkUyMlx1OTZGQlx1OEEwQVx1NzZDOFx1NzlEMTRcdTk4REVcdTUyMjlcdTZENjYzXHU5OERGXHU1NEMxMlx1OTkxMFx1NTM4NTJcdTk5OTlcdTY4M0NcdTkxQ0NcdTYyQzkzXHU2RTJGMlx1QjJGN1x1QjEzNzFcdUNFRjQyXHVDMEJDXHVDMTMxMlx1RDU1Q1x1QUQ2RDIiLGZzdD0ibnVtZXJpYyIsbXN0PSJhc2NpaSIsZ3N0PSJhbHBoYSIsbVg9ImFzY2lpbnVtZXJpYyIsZ1g9ImFscGhhbnVtZXJpYyIsYnN0PSJkb21haW4iLE80YT0iZW1vamkiLG1YYT0ic2NoZW1lIixnWGE9InNsYXNoc2NoZW1lIix2c3Q9IndoaXRlc3BhY2UiO2koYlhhLCJyZWdpc3Rlckdyb3VwIik7aShoZywiYWRkVG9Hcm91cHMiKTtpKHZYYSwiZmxhZ3NGb3JUb2tlbiIpO2koRW4sIlN0YXRlIiksRW4uZ3JvdXBzPXt9LEVuLnByb3RvdHlwZT17YWNjZXB0cygpe3JldHVybiEhdGhpcy50fSxnbyhzKXtsZXQgZT10aGlzLHQ9ZS5qW3NdO2lmKHQpcmV0dXJuIHQ7Zm9yKGxldCBhPTA7YTxlLmpyLmxlbmd0aDthKyspe2xldCByPWUuanJbYV1bMF0sbj1lLmpyW2FdWzFdO2lmKG4mJnIudGVzdChzKSlyZXR1cm4gbn1yZXR1cm4gZS5qZH0saGFzKHMsZT0hMSl7cmV0dXJuIGU/cyBpbiB0aGlzLmo6ISF0aGlzLmdvKHMpfSx0YShzLGUsdCxhKXtmb3IobGV0IHI9MDtyPHMubGVuZ3RoO3IrKyl0aGlzLnR0KHNbcl0sZSx0LGEpfSx0cihzLGUsdCxhKXthPWF8fEVuLmdyb3VwcztsZXQgcjtyZXR1cm4gZSYmZS5qP3I9ZToocj1uZXcgRW4oZSksdCYmYSYmaGcoZSx0LGEpKSx0aGlzLmpyLnB1c2goW3Mscl0pLHJ9LHRzKHMsZSx0LGEpe2xldCByPXRoaXMsbj1zLmxlbmd0aDtpZighbilyZXR1cm4gcjtmb3IobGV0IG89MDtvPG4tMTtvKyspcj1yLnR0KHNbb10pO3JldHVybiByLnR0KHNbbi0xXSxlLHQsYSl9LHR0KHMsZSx0LGEpe2E9YXx8RW4uZ3JvdXBzO2xldCByPXRoaXM7aWYoZSYmZS5qKXJldHVybiByLmpbc109ZSxlO2xldCBuPWUsbyxsPXIuZ28ocyk7aWYobD8obz1uZXcgRW4sT2JqZWN0LmFzc2lnbihvLmosbC5qKSxvLmpyLnB1c2guYXBwbHkoby5qcixsLmpyKSxvLmpkPWwuamQsby50PWwudCk6bz1uZXcgRW4sbil7aWYoYSlpZihvLnQmJnR5cGVvZiBvLnQ9PSJzdHJpbmciKXtsZXQgcD1PYmplY3QuYXNzaWduKHZYYShvLnQsYSksdCk7aGcobixwLGEpfWVsc2UgdCYmaGcobix0LGEpO28udD1ufXJldHVybiByLmpbc109byxvfX07U2E9aSgocyxlLHQsYSxyKT0+cy50YShlLHQsYSxyKSwidGEiKSxLaT1pKChzLGUsdCxhLHIpPT5zLnRyKGUsdCxhLHIpLCJ0ciIpLEY0YT1pKChzLGUsdCxhLHIpPT5zLnRzKGUsdCxhLHIpLCJ0cyIpLGN0PWkoKHMsZSx0LGEscik9PnMudHQoZSx0LGEsciksInR0IikscHU9IldPUkQiLHhzdD0iVVdPUkQiLEI0YT0iQVNDSUlOVU1FUklDQUwiLEg0YT0iQUxQSEFOVU1FUklDQUwiLGJYPSJMT0NBTEhPU1QiLHlzdD0iVExEIix3c3Q9IlVUTEQiLGhjZT0iU0NIRU1FIixVdj0iU0xBU0hfU0NIRU1FIixrc3Q9Ik5VTSIsU3N0PSJXUyIsX3N0PSJOTCIsdlg9Ik9QRU5CUkFDRSIseFg9IkNMT1NFQlJBQ0UiLGZjZT0iT1BFTkJSQUNLRVQiLG1jZT0iQ0xPU0VCUkFDS0VUIixnY2U9Ik9QRU5QQVJFTiIsYmNlPSJDTE9TRVBBUkVOIix2Y2U9Ik9QRU5BTkdMRUJSQUNLRVQiLHhjZT0iQ0xPU0VBTkdMRUJSQUNLRVQiLHljZT0iRlVMTFdJRFRITEVGVFBBUkVOIix3Y2U9IkZVTExXSURUSFJJR0hUUEFSRU4iLGtjZT0iTEVGVENPUk5FUkJSQUNLRVQiLFNjZT0iUklHSFRDT1JORVJCUkFDS0VUIixfY2U9IkxFRlRXSElURUNPUk5FUkJSQUNLRVQiLE1jZT0iUklHSFRXSElURUNPUk5FUkJSQUNLRVQiLHpjZT0iRlVMTFdJRFRITEVTU1RIQU4iLENjZT0iRlVMTFdJRFRIR1JFQVRFUlRIQU4iLFRjZT0iQU1QRVJTQU5EIiwkY2U9IkFQT1NUUk9QSEUiLERjZT0iQVNURVJJU0siLEloPSJBVCIsTGNlPSJCQUNLU0xBU0giLEVjZT0iQkFDS1RJQ0siLFBjZT0iQ0FSRVQiLEFoPSJDT0xPTiIsTXN0PSJDT01NQSIsSWNlPSJET0xMQVIiLHFkPSJET1QiLEFjZT0iRVFVQUxTIix6c3Q9IkVYQ0xBTUFUSU9OIixqYz0iSFlQSEVOIix5WD0iUEVSQ0VOVCIsTmNlPSJQSVBFIixSY2U9IlBMVVMiLE9jZT0iUE9VTkQiLHdYPSJRVUVSWSIsQ3N0PSJRVU9URSIscTRhPSJGVUxMV0lEVEhNSURETEVET1QiLFRzdD0iU0VNSSIsamQ9IlNMQVNIIixrWD0iVElMREUiLEZjZT0iVU5ERVJTQ09SRSIsajRhPSJFTU9KSSIsQmNlPSJTWU0iLFY0YT1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxBTFBIQU5VTUVSSUNBTDpINGEsQU1QRVJTQU5EOlRjZSxBUE9TVFJPUEhFOiRjZSxBU0NJSU5VTUVSSUNBTDpCNGEsQVNURVJJU0s6RGNlLEFUOkloLEJBQ0tTTEFTSDpMY2UsQkFDS1RJQ0s6RWNlLENBUkVUOlBjZSxDTE9TRUFOR0xFQlJBQ0tFVDp4Y2UsQ0xPU0VCUkFDRTp4WCxDTE9TRUJSQUNLRVQ6bWNlLENMT1NFUEFSRU46YmNlLENPTE9OOkFoLENPTU1BOk1zdCxET0xMQVI6SWNlLERPVDpxZCxFTU9KSTpqNGEsRVFVQUxTOkFjZSxFWENMQU1BVElPTjp6c3QsRlVMTFdJRFRIR1JFQVRFUlRIQU46Q2NlLEZVTExXSURUSExFRlRQQVJFTjp5Y2UsRlVMTFdJRFRITEVTU1RIQU46emNlLEZVTExXSURUSE1JRERMRURPVDpxNGEsRlVMTFdJRFRIUklHSFRQQVJFTjp3Y2UsSFlQSEVOOmpjLExFRlRDT1JORVJCUkFDS0VUOmtjZSxMRUZUV0hJVEVDT1JORVJCUkFDS0VUOl9jZSxMT0NBTEhPU1Q6YlgsTkw6X3N0LE5VTTprc3QsT1BFTkFOR0xFQlJBQ0tFVDp2Y2UsT1BFTkJSQUNFOnZYLE9QRU5CUkFDS0VUOmZjZSxPUEVOUEFSRU46Z2NlLFBFUkNFTlQ6eVgsUElQRTpOY2UsUExVUzpSY2UsUE9VTkQ6T2NlLFFVRVJZOndYLFFVT1RFOkNzdCxSSUdIVENPUk5FUkJSQUNLRVQ6U2NlLFJJR0hUV0hJVEVDT1JORVJCUkFDS0VUOk1jZSxTQ0hFTUU6aGNlLFNFTUk6VHN0LFNMQVNIOmpkLFNMQVNIX1NDSEVNRTpVdixTWU06QmNlLFRJTERFOmtYLFRMRDp5c3QsVU5ERVJTQ09SRTpGY2UsVVRMRDp3c3QsVVdPUkQ6eHN0LFdPUkQ6cHUsV1M6U3N0fSksVmQ9L1thLXpdLyxXdj0vXHB7TH0vdSxIY2U9L1xwe0Vtb2ppfS91LHhYYT0vXHVmZTBmLyxVZD0vXGQvLHFjZT0vXHMvLHlYYT1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxBU0NJSV9MRVRURVI6VmQsRElHSVQ6VWQsRU1PSkk6SGNlLEVNT0pJX1ZBUklBVElPTjp4WGEsTEVUVEVSOld2LFNQQUNFOnFjZX0pLFU0YT0iXHIiLCRzdD1gCmAsd1hhPSJcdUZFMEYiLGtYYT0iXHUyMDBEIixEc3Q9Ilx1RkZGQyIsamNlPW51bGwsVmNlPW51bGw7aShTWGEsImluaXQkMiIpO2koVzRhLCJydW4kMSIpO2koRzRhLCJzdHJpbmdUb0FycmF5Iik7aShOaCwiZmFzdHRzIik7aShLNGEsImRlY29kZVRsZHMiKTtHdj17ZGVmYXVsdFByb3RvY29sOiJodHRwIixldmVudHM6bnVsbCxmb3JtYXQ6WTRhLGZvcm1hdEhyZWY6WTRhLG5sMmJyOiExLHRhZ05hbWU6ImEiLHRhcmdldDpudWxsLHJlbDpudWxsLHZhbGlkYXRlOiEwLHRydW5jYXRlOjEvMCxjbGFzc05hbWU6bnVsbCxhdHRyaWJ1dGVzOm51bGwsaWdub3JlVGFnczpbXSxyZW5kZXI6bnVsbH07aShTWCwiT3B0aW9ucyIpLFNYLnByb3RvdHlwZT17bzpHdixpZ25vcmVUYWdzOltdLGRlZmF1bHRSZW5kZXIocyl7cmV0dXJuIHN9LGNoZWNrKHMpe3JldHVybiB0aGlzLmdldCgidmFsaWRhdGUiLHMudG9TdHJpbmcoKSxzKX0sZ2V0KHMsZSx0KXtsZXQgYT1lIT1udWxsLHI9dGhpcy5vW3NdO3JldHVybiByJiYodHlwZW9mIHI9PSJvYmplY3QiPyhyPXQudCBpbiByP3JbdC50XTpHdltzXSx0eXBlb2Ygcj09ImZ1bmN0aW9uIiYmYSYmKHI9cihlLHQpKSk6dHlwZW9mIHI9PSJmdW5jdGlvbiImJmEmJihyPXIoZSx0LnQsdCkpLHIpfSxnZXRPYmoocyxlLHQpe2xldCBhPXRoaXMub1tzXTtyZXR1cm4gdHlwZW9mIGE9PSJmdW5jdGlvbiImJmUhPW51bGwmJihhPWEoZSx0LnQsdCkpLGF9LHJlbmRlcihzKXtsZXQgZT1zLnJlbmRlcih0aGlzKTtyZXR1cm4odGhpcy5nZXQoInJlbmRlciIsbnVsbCxzKXx8dGhpcy5kZWZhdWx0UmVuZGVyKShlLHMudCxzKX19O2koWTRhLCJub29wIik7X1hhPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLE9wdGlvbnM6U1gsZGVmYXVsdHM6R3Z9KTtpKF9YLCJNdWx0aVRva2VuIiksX1gucHJvdG90eXBlPXtpc0xpbms6ITEsdG9TdHJpbmcoKXtyZXR1cm4gdGhpcy52fSx0b0hyZWYocyl7cmV0dXJuIHRoaXMudG9TdHJpbmcoKX0sdG9Gb3JtYXR0ZWRTdHJpbmcocyl7bGV0IGU9dGhpcy50b1N0cmluZygpLHQ9cy5nZXQoInRydW5jYXRlIixlLHRoaXMpLGE9cy5nZXQoImZvcm1hdCIsZSx0aGlzKTtyZXR1cm4gdCYmYS5sZW5ndGg+dD9hLnN1YnN0cmluZygwLHQpKyJcdTIwMjYiOmF9LHRvRm9ybWF0dGVkSHJlZihzKXtyZXR1cm4gcy5nZXQoImZvcm1hdEhyZWYiLHRoaXMudG9IcmVmKHMuZ2V0KCJkZWZhdWx0UHJvdG9jb2wiKSksdGhpcyl9LHN0YXJ0SW5kZXgoKXtyZXR1cm4gdGhpcy50a1swXS5zfSxlbmRJbmRleCgpe3JldHVybiB0aGlzLnRrW3RoaXMudGsubGVuZ3RoLTFdLmV9LHRvT2JqZWN0KHM9R3YuZGVmYXVsdFByb3RvY29sKXtyZXR1cm57dHlwZTp0aGlzLnQsdmFsdWU6dGhpcy50b1N0cmluZygpLGlzTGluazp0aGlzLmlzTGluayxocmVmOnRoaXMudG9IcmVmKHMpLHN0YXJ0OnRoaXMuc3RhcnRJbmRleCgpLGVuZDp0aGlzLmVuZEluZGV4KCl9fSx0b0Zvcm1hdHRlZE9iamVjdChzKXtyZXR1cm57dHlwZTp0aGlzLnQsdmFsdWU6dGhpcy50b0Zvcm1hdHRlZFN0cmluZyhzKSxpc0xpbms6dGhpcy5pc0xpbmssaHJlZjp0aGlzLnRvRm9ybWF0dGVkSHJlZihzKSxzdGFydDp0aGlzLnN0YXJ0SW5kZXgoKSxlbmQ6dGhpcy5lbmRJbmRleCgpfX0sdmFsaWRhdGUocyl7cmV0dXJuIHMuZ2V0KCJ2YWxpZGF0ZSIsdGhpcy50b1N0cmluZygpLHRoaXMpfSxyZW5kZXIocyl7bGV0IGU9dGhpcyx0PXRoaXMudG9IcmVmKHMuZ2V0KCJkZWZhdWx0UHJvdG9jb2wiKSksYT1zLmdldCgiZm9ybWF0SHJlZiIsdCx0aGlzKSxyPXMuZ2V0KCJ0YWdOYW1lIix0LGUpLG49dGhpcy50b0Zvcm1hdHRlZFN0cmluZyhzKSxvPXt9LGw9cy5nZXQoImNsYXNzTmFtZSIsdCxlKSxwPXMuZ2V0KCJ0YXJnZXQiLHQsZSksZD1zLmdldCgicmVsIix0LGUpLHU9cy5nZXRPYmooImF0dHJpYnV0ZXMiLHQsZSksYz1zLmdldE9iaigiZXZlbnRzIix0LGUpO3JldHVybiBvLmhyZWY9YSxsJiYoby5jbGFzcz1sKSxwJiYoby50YXJnZXQ9cCksZCYmKG8ucmVsPWQpLHUmJk9iamVjdC5hc3NpZ24obyx1KSx7dGFnTmFtZTpyLGF0dHJpYnV0ZXM6byxjb250ZW50Om4sZXZlbnRMaXN0ZW5lcnM6Y319fTtpKEt2LCJjcmVhdGVUb2tlbkNsYXNzIik7THN0PUt2KCJlbWFpbCIse2lzTGluazohMCx0b0hyZWYoKXtyZXR1cm4ibWFpbHRvOiIrdGhpcy50b1N0cmluZygpfX0pLEVzdD1LdigidGV4dCIpLFo0YT1LdigibmwiKSxNWD1LdigidXJsIix7aXNMaW5rOiEwLHRvSHJlZihzPUd2LmRlZmF1bHRQcm90b2NvbCl7cmV0dXJuIHRoaXMuaGFzUHJvdG9jb2woKT90aGlzLnY6YCR7c306Ly8ke3RoaXMudn1gfSxoYXNQcm90b2NvbCgpe2xldCBzPXRoaXMudGs7cmV0dXJuIHMubGVuZ3RoPj0yJiZzWzBdLnQhPT1iWCYmc1sxXS50PT09QWh9fSksWDRhPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLEJhc2U6X1gsRW1haWw6THN0LE11bHRpVG9rZW46X1gsTmw6WjRhLFRleHQ6RXN0LFVybDpNWCxjcmVhdGVUb2tlbkNsYXNzOkt2fSksVmM9aShzPT5uZXcgRW4ocyksIm1ha2VTdGF0ZSIpO2koTVhhLCJpbml0JDEiKTtpKHpYYSwicnVuIik7aShQc3QsImluaXRNdWx0aVRva2VuIik7elg9dHlwZW9mIGNvbnNvbGU8InUiJiZjb25zb2xlJiZjb25zb2xlLndhcm58fCgoKT0+e30pLElzdD0idW50aWwgbWFudWFsIGNhbGwgb2YgbGlua2lmeS5pbml0KCkuIFJlZ2lzdGVyIGFsbCBzY2hlbWVzIGFuZCBwbHVnaW5zIGJlZm9yZSBpbnZva2luZyBsaW5raWZ5IHRoZSBmaXJzdCB0aW1lLiIsc3M9e3NjYW5uZXI6bnVsbCxwYXJzZXI6bnVsbCx0b2tlblF1ZXVlOltdLHBsdWdpblF1ZXVlOltdLGN1c3RvbVNjaGVtZXM6W10saW5pdGlhbGl6ZWQ6ITF9O2koQXN0LCJyZXNldCIpO2koQ1hhLCJyZWdpc3RlclRva2VuUGx1Z2luIik7aShUWGEsInJlZ2lzdGVyUGx1Z2luIik7aShVY2UsInJlZ2lzdGVyQ3VzdG9tUHJvdG9jb2wiKTtpKFE0YSwiaW5pdCIpO2koWXYsInRva2VuaXplIiksWXYuc2Nhbj1XNGE7aShXY2UsImZpbmQiKTtpKCRYYSwidGVzdCIpfSk7dmFyIE9zdD17fTt5dChPc3Qse0xpbms6KCk9PlJzdCxkZWZhdWx0OigpPT5Sc3QsaXNBbGxvd2VkVXJpOigpPT5odSxwYXN0ZVJlZ2V4OigpPT5lM2F9KTtmdW5jdGlvbiBQWGEocyl7cmV0dXJuIHMubGVuZ3RoPT09MT9zWzBdLmlzTGluazpzLmxlbmd0aD09PTMmJnNbMV0uaXNMaW5rP1siKCkiLCJbXSJdLmluY2x1ZGVzKHNbMF0udmFsdWUrc1syXS52YWx1ZSk6ITF9ZnVuY3Rpb24gSVhhKHMpe3JldHVybiBuZXcgWXMoe2tleTpuZXcgJHIoImF1dG9saW5rIiksYXBwZW5kVHJhbnNhY3Rpb246aSgoZSx0LGEpPT57bGV0IHI9ZS5zb21lKGQ9PmQuZG9jQ2hhbmdlZCkmJiF0LmRvYy5lcShhLmRvYyksbj1lLnNvbWUoZD0+ZC5nZXRNZXRhKCJwcmV2ZW50QXV0b2xpbmsiKSk7aWYoIXJ8fG4pcmV0dXJuO2xldHt0cjpvfT1hLGw9UmxlKHQuZG9jLFsuLi5lXSk7aWYoRmxlKGwpLmZvckVhY2goKHtuZXdSYW5nZTpkfSk9PntsZXQgdT1PbGUoYS5kb2MsZCx2PT52LmlzVGV4dGJsb2NrKSxjLGI7aWYodS5sZW5ndGg+MSljPXVbMF0sYj1hLmRvYy50ZXh0QmV0d2VlbihjLnBvcyxjLnBvcytjLm5vZGUubm9kZVNpemUsdm9pZCAwLCIgIik7ZWxzZSBpZih1Lmxlbmd0aCl7bGV0IHY9YS5kb2MudGV4dEJldHdlZW4oZC5mcm9tLGQudG8sIiAiLCIgIik7aWYoIUxYYS50ZXN0KHYpKXJldHVybjtjPXVbMF0sYj1hLmRvYy50ZXh0QmV0d2VlbihjLnBvcyxkLnRvLHZvaWQgMCwiICIpfWlmKGMmJmIpe2xldCB2PWIuc3BsaXQoRFhhKS5maWx0ZXIoQm9vbGVhbik7aWYodi5sZW5ndGg8PTApcmV0dXJuITE7bGV0IHg9dlt2Lmxlbmd0aC0xXSxtPWMucG9zK2IubGFzdEluZGV4T2YoeCk7aWYoIXgpcmV0dXJuITE7bGV0IGY9WXYoeCkubWFwKHk9PnkudG9PYmplY3Qocy5kZWZhdWx0UHJvdG9jb2wpKTtpZighUFhhKGYpKXJldHVybiExO2YuZmlsdGVyKHk9PnkuaXNMaW5rKS5tYXAoeT0+KHsuLi55LGZyb206bSt5LnN0YXJ0KzEsdG86bSt5LmVuZCsxfSkpLmZpbHRlcih5PT5hLnNjaGVtYS5tYXJrcy5jb2RlPyFhLmRvYy5yYW5nZUhhc01hcmsoeS5mcm9tLHkudG8sYS5zY2hlbWEubWFya3MuY29kZSk6ITApLmZpbHRlcih5PT5zLnZhbGlkYXRlKHkudmFsdWUpKS5maWx0ZXIoeT0+cy5zaG91bGRBdXRvTGluayh5LnZhbHVlKSkuZm9yRWFjaCh5PT57VnYoeS5mcm9tLHkudG8sYS5kb2MpLnNvbWUoTT0+TS5tYXJrLnR5cGU9PT1zLnR5cGUpfHxvLmFkZE1hcmsoeS5mcm9tLHkudG8scy50eXBlLmNyZWF0ZSh7aHJlZjp5LmhyZWZ9KSl9KX19KSwhIW8uc3RlcHMubGVuZ3RoKXJldHVybiBvfSwiYXBwZW5kVHJhbnNhY3Rpb24iKX0pfWZ1bmN0aW9uIEFYYShzKXtyZXR1cm4gbmV3IFlzKHtrZXk6bmV3ICRyKCJoYW5kbGVDbGlja0xpbmsiKSxwcm9wczp7aGFuZGxlQ2xpY2s6aSgoZSx0LGEpPT57dmFyIHIsbjtpZihhLmJ1dHRvbiE9PTB8fCFlLmVkaXRhYmxlKXJldHVybiExO2xldCBvPWEudGFyZ2V0LGw9W107Zm9yKDtvLm5vZGVOYW1lIT09IkRJViI7KWwucHVzaChvKSxvPW8ucGFyZW50Tm9kZTtpZighbC5maW5kKGI9PmIubm9kZU5hbWU9PT0iQSIpKXJldHVybiExO2xldCBwPWZYKGUuc3RhdGUscy50eXBlLm5hbWUpLGQ9YS50YXJnZXQsdT0ocj1kPy5ocmVmKSE9PW51bGwmJnIhPT12b2lkIDA/cjpwLmhyZWYsYz0obj1kPy50YXJnZXQpIT09bnVsbCYmbiE9PXZvaWQgMD9uOnAudGFyZ2V0O3JldHVybiBkJiZ1Pyh3aW5kb3cub3Blbih1LGMpLCEwKTohMX0sImhhbmRsZUNsaWNrIil9fSl9ZnVuY3Rpb24gTlhhKHMpe3JldHVybiBuZXcgWXMoe2tleTpuZXcgJHIoImhhbmRsZVBhc3RlTGluayIpLHByb3BzOntoYW5kbGVQYXN0ZTppKChlLHQsYSk9PntsZXR7c3RhdGU6cn09ZSx7c2VsZWN0aW9uOm59PXIse2VtcHR5Om99PW47aWYobylyZXR1cm4hMTtsZXQgbD0iIjthLmNvbnRlbnQuZm9yRWFjaChkPT57bCs9ZC50ZXh0Q29udGVudH0pO2xldCBwPVdjZShsLHtkZWZhdWx0UHJvdG9jb2w6cy5kZWZhdWx0UHJvdG9jb2x9KS5maW5kKGQ9PmQuaXNMaW5rJiZkLnZhbHVlPT09bCk7cmV0dXJuIWx8fCFwPyExOnMuZWRpdG9yLmNvbW1hbmRzLnNldE1hcmsocy50eXBlLHtocmVmOnAuaHJlZn0pfSwiaGFuZGxlUGFzdGUiKX19KX1mdW5jdGlvbiBodShzLGUpe2xldCB0PVsiaHR0cCIsImh0dHBzIiwiZnRwIiwiZnRwcyIsIm1haWx0byIsInRlbCIsImNhbGx0byIsInNtcyIsImNpZCIsInhtcHAiXTtyZXR1cm4gZSYmZS5mb3JFYWNoKGE9PntsZXQgcj10eXBlb2YgYT09InN0cmluZyI/YTphLnNjaGVtZTtyJiZ0LnB1c2gocil9KSwhc3x8cy5yZXBsYWNlKEVYYSwiIikubWF0Y2gobmV3IFJlZ0V4cChgXig/Oig/OiR7dC5qb2luKCJ8Iil9KTp8W15hLXpdfFthLXowLTkrLi1dKyg/OlteYS16Ky4tOl18JCkpYCwiaSIpKX12YXIgTnN0LERYYSxMWGEsRVhhLGUzYSxSc3QsRnN0PWcoKCk9PntpaSgpO0o0YSgpO0daKCk7TnN0PSJbXDAtIFx4QTBcdTE2ODBcdTE4MEVcdTIwMDAtXHUyMDI5XHUyMDVGXHUzMDAwXSIsRFhhPW5ldyBSZWdFeHAoTnN0KSxMWGE9bmV3IFJlZ0V4cChgJHtOc3R9JGApLEVYYT1uZXcgUmVnRXhwKE5zdCwiZyIpO2koUFhhLCJpc1ZhbGlkTGlua1N0cnVjdHVyZSIpO2koSVhhLCJhdXRvbGluayIpO2koQVhhLCJjbGlja0hhbmRsZXIiKTtpKE5YYSwicGFzdGVIYW5kbGVyIik7ZTNhPS9odHRwcz86XC9cLyg/Ond3d1wuKT9bLWEtekEtWjAtOUA6JS5fK34jPV17MSwyNTZ9XC5bYS16QS1aXXsyLH1cYig/OlstYS16QS1aMC05QDolLl8rfiM9PyEmL10qKSg/OlstYS16QS1aMC05QDolLl8rfiM9PyEmL10qKS9naTtpKGh1LCJpc0FsbG93ZWRVcmkiKTtSc3Q9RG8uY3JlYXRlKHtuYW1lOiJsaW5rIixwcmlvcml0eToxZTMsa2VlcE9uU3BsaXQ6ITEsZXhpdGFibGU6ITAsb25DcmVhdGUoKXt0aGlzLm9wdGlvbnMudmFsaWRhdGUmJiF0aGlzLm9wdGlvbnMuc2hvdWxkQXV0b0xpbmsmJih0aGlzLm9wdGlvbnMuc2hvdWxkQXV0b0xpbms9dGhpcy5vcHRpb25zLnZhbGlkYXRlLGNvbnNvbGUud2FybigiVGhlIGB2YWxpZGF0ZWAgb3B0aW9uIGlzIGRlcHJlY2F0ZWQuIFJlbmFtZSB0byB0aGUgYHNob3VsZEF1dG9MaW5rYCBvcHRpb24gaW5zdGVhZC4iKSksdGhpcy5vcHRpb25zLnByb3RvY29scy5mb3JFYWNoKHM9PntpZih0eXBlb2Ygcz09InN0cmluZyIpe1VjZShzKTtyZXR1cm59VWNlKHMuc2NoZW1lLHMub3B0aW9uYWxTbGFzaGVzKX0pfSxvbkRlc3Ryb3koKXtBc3QoKX0saW5jbHVzaXZlKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5hdXRvbGlua30sYWRkT3B0aW9ucygpe3JldHVybntvcGVuT25DbGljazohMCxsaW5rT25QYXN0ZTohMCxhdXRvbGluazohMCxwcm90b2NvbHM6W10sZGVmYXVsdFByb3RvY29sOiJodHRwIixIVE1MQXR0cmlidXRlczp7dGFyZ2V0OiJfYmxhbmsiLHJlbDoibm9vcGVuZXIgbm9yZWZlcnJlciBub2ZvbGxvdyIsY2xhc3M6bnVsbH0saXNBbGxvd2VkVXJpOmkoKHMsZSk9PiEhaHUocyxlLnByb3RvY29scyksImlzQWxsb3dlZFVyaSIpLHZhbGlkYXRlOmkocz0+ISFzLCJ2YWxpZGF0ZSIpLHNob3VsZEF1dG9MaW5rOmkocz0+ISFzLCJzaG91bGRBdXRvTGluayIpfX0sYWRkQXR0cmlidXRlcygpe3JldHVybntocmVmOntkZWZhdWx0Om51bGwscGFyc2VIVE1MKHMpe3JldHVybiBzLmdldEF0dHJpYnV0ZSgiaHJlZiIpfX0sdGFyZ2V0OntkZWZhdWx0OnRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcy50YXJnZXR9LHJlbDp7ZGVmYXVsdDp0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMucmVsfSxjbGFzczp7ZGVmYXVsdDp0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMuY2xhc3N9fX0scGFyc2VIVE1MKCl7cmV0dXJuW3t0YWc6ImFbaHJlZl0iLGdldEF0dHJzOmkocz0+e2xldCBlPXMuZ2V0QXR0cmlidXRlKCJocmVmIik7cmV0dXJuIWV8fCF0aGlzLm9wdGlvbnMuaXNBbGxvd2VkVXJpKGUse2RlZmF1bHRWYWxpZGF0ZTppKHQ9PiEhaHUodCx0aGlzLm9wdGlvbnMucHJvdG9jb2xzKSwiZGVmYXVsdFZhbGlkYXRlIikscHJvdG9jb2xzOnRoaXMub3B0aW9ucy5wcm90b2NvbHMsZGVmYXVsdFByb3RvY29sOnRoaXMub3B0aW9ucy5kZWZhdWx0UHJvdG9jb2x9KT8hMTpudWxsfSwiZ2V0QXR0cnMiKX1dfSxyZW5kZXJIVE1MKHtIVE1MQXR0cmlidXRlczpzfSl7cmV0dXJuIHRoaXMub3B0aW9ucy5pc0FsbG93ZWRVcmkocy5ocmVmLHtkZWZhdWx0VmFsaWRhdGU6aShlPT4hIWh1KGUsdGhpcy5vcHRpb25zLnByb3RvY29scyksImRlZmF1bHRWYWxpZGF0ZSIpLHByb3RvY29sczp0aGlzLm9wdGlvbnMucHJvdG9jb2xzLGRlZmF1bHRQcm90b2NvbDp0aGlzLm9wdGlvbnMuZGVmYXVsdFByb3RvY29sfSk/WyJhIixhcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMscyksMF06WyJhIixhcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsey4uLnMsaHJlZjoiIn0pLDBdfSxhZGRDb21tYW5kcygpe3JldHVybntzZXRMaW5rOmkocz0+KHtjaGFpbjplfSk9PntsZXR7aHJlZjp0fT1zO3JldHVybiB0aGlzLm9wdGlvbnMuaXNBbGxvd2VkVXJpKHQse2RlZmF1bHRWYWxpZGF0ZTppKGE9PiEhaHUoYSx0aGlzLm9wdGlvbnMucHJvdG9jb2xzKSwiZGVmYXVsdFZhbGlkYXRlIikscHJvdG9jb2xzOnRoaXMub3B0aW9ucy5wcm90b2NvbHMsZGVmYXVsdFByb3RvY29sOnRoaXMub3B0aW9ucy5kZWZhdWx0UHJvdG9jb2x9KT9lKCkuc2V0TWFyayh0aGlzLm5hbWUscykuc2V0TWV0YSgicHJldmVudEF1dG9saW5rIiwhMCkucnVuKCk6ITF9LCJzZXRMaW5rIiksdG9nZ2xlTGluazppKHM9Pih7Y2hhaW46ZX0pPT57bGV0e2hyZWY6dH09cztyZXR1cm4gdGhpcy5vcHRpb25zLmlzQWxsb3dlZFVyaSh0LHtkZWZhdWx0VmFsaWRhdGU6aShhPT4hIWh1KGEsdGhpcy5vcHRpb25zLnByb3RvY29scyksImRlZmF1bHRWYWxpZGF0ZSIpLHByb3RvY29sczp0aGlzLm9wdGlvbnMucHJvdG9jb2xzLGRlZmF1bHRQcm90b2NvbDp0aGlzLm9wdGlvbnMuZGVmYXVsdFByb3RvY29sfSk/ZSgpLnRvZ2dsZU1hcmsodGhpcy5uYW1lLHMse2V4dGVuZEVtcHR5TWFya1JhbmdlOiEwfSkuc2V0TWV0YSgicHJldmVudEF1dG9saW5rIiwhMCkucnVuKCk6ITF9LCJ0b2dnbGVMaW5rIiksdW5zZXRMaW5rOmkoKCk9Pih7Y2hhaW46c30pPT5zKCkudW5zZXRNYXJrKHRoaXMubmFtZSx7ZXh0ZW5kRW1wdHlNYXJrUmFuZ2U6ITB9KS5zZXRNZXRhKCJwcmV2ZW50QXV0b2xpbmsiLCEwKS5ydW4oKSwidW5zZXRMaW5rIil9fSxhZGRQYXN0ZVJ1bGVzKCl7cmV0dXJuW1RsKHtmaW5kOmkocz0+e2xldCBlPVtdO2lmKHMpe2xldHtwcm90b2NvbHM6dCxkZWZhdWx0UHJvdG9jb2w6YX09dGhpcy5vcHRpb25zLHI9V2NlKHMpLmZpbHRlcihuPT5uLmlzTGluayYmdGhpcy5vcHRpb25zLmlzQWxsb3dlZFVyaShuLnZhbHVlLHtkZWZhdWx0VmFsaWRhdGU6aShvPT4hIWh1KG8sdCksImRlZmF1bHRWYWxpZGF0ZSIpLHByb3RvY29sczp0LGRlZmF1bHRQcm90b2NvbDphfSkpO3IubGVuZ3RoJiZyLmZvckVhY2gobj0+ZS5wdXNoKHt0ZXh0Om4udmFsdWUsZGF0YTp7aHJlZjpuLmhyZWZ9LGluZGV4Om4uc3RhcnR9KSl9cmV0dXJuIGV9LCJmaW5kIiksdHlwZTp0aGlzLnR5cGUsZ2V0QXR0cmlidXRlczppKHM9Pnt2YXIgZTtyZXR1cm57aHJlZjooZT1zLmRhdGEpPT09bnVsbHx8ZT09PXZvaWQgMD92b2lkIDA6ZS5ocmVmfX0sImdldEF0dHJpYnV0ZXMiKX0pXX0sYWRkUHJvc2VNaXJyb3JQbHVnaW5zKCl7bGV0IHM9W10se3Byb3RvY29sczplLGRlZmF1bHRQcm90b2NvbDp0fT10aGlzLm9wdGlvbnM7cmV0dXJuIHRoaXMub3B0aW9ucy5hdXRvbGluayYmcy5wdXNoKElYYSh7dHlwZTp0aGlzLnR5cGUsZGVmYXVsdFByb3RvY29sOnRoaXMub3B0aW9ucy5kZWZhdWx0UHJvdG9jb2wsdmFsaWRhdGU6aShhPT50aGlzLm9wdGlvbnMuaXNBbGxvd2VkVXJpKGEse2RlZmF1bHRWYWxpZGF0ZTppKHI9PiEhaHUocixlKSwiZGVmYXVsdFZhbGlkYXRlIikscHJvdG9jb2xzOmUsZGVmYXVsdFByb3RvY29sOnR9KSwidmFsaWRhdGUiKSxzaG91bGRBdXRvTGluazp0aGlzLm9wdGlvbnMuc2hvdWxkQXV0b0xpbmt9KSksdGhpcy5vcHRpb25zLm9wZW5PbkNsaWNrPT09ITAmJnMucHVzaChBWGEoe3R5cGU6dGhpcy50eXBlfSkpLHRoaXMub3B0aW9ucy5saW5rT25QYXN0ZSYmcy5wdXNoKE5YYSh7ZWRpdG9yOnRoaXMuZWRpdG9yLGRlZmF1bHRQcm90b2NvbDp0aGlzLm9wdGlvbnMuZGVmYXVsdFByb3RvY29sLHR5cGU6dGhpcy50eXBlfSkpLHN9fSl9KTt2YXIgY2l0PXt9O3l0KGNpdCx7VHlwb2dyYXBoeTooKT0+bGl0LGNsb3NlRG91YmxlUXVvdGU6KCk9PmpzdCxjbG9zZVNpbmdsZVF1b3RlOigpPT5Vc3QsY29weXJpZ2h0OigpPT5Lc3QsZGVmYXVsdDooKT0+bGl0LGVsbGlwc2lzOigpPT5Ic3QsZW1EYXNoOigpPT5Cc3QsbGFxdW86KCk9PnRpdCxsZWZ0QXJyb3c6KCk9PldzdCxtdWx0aXBsaWNhdGlvbjooKT0+c2l0LG5vdEVxdWFsOigpPT5laXQsb25lSGFsZjooKT0+UXN0LG9uZVF1YXJ0ZXI6KCk9Pm9pdCxvcGVuRG91YmxlUXVvdGU6KCk9PnFzdCxvcGVuU2luZ2xlUXVvdGU6KCk9PlZzdCxwbHVzTWludXM6KCk9PkpzdCxyYXF1bzooKT0+YWl0LHJlZ2lzdGVyZWRUcmFkZW1hcms6KCk9PlhzdCxyaWdodEFycm93OigpPT5Hc3Qsc2VydmljZW1hcms6KCk9PlpzdCxzdXBlcnNjcmlwdFRocmVlOigpPT5yaXQsc3VwZXJzY3JpcHRUd286KCk9PmlpdCx0aHJlZVF1YXJ0ZXJzOigpPT5uaXQsdHJhZGVtYXJrOigpPT5Zc3R9KTt2YXIgQnN0LEhzdCxxc3QsanN0LFZzdCxVc3QsV3N0LEdzdCxLc3QsWXN0LFpzdCxYc3QsUXN0LEpzdCxlaXQsdGl0LGFpdCxzaXQsaWl0LHJpdCxvaXQsbml0LGxpdCxkaXQ9ZygoKT0+e2lpKCk7QnN0PWkocz0+aGkoe2ZpbmQ6Ly0tJC8scmVwbGFjZTpzPz8iXHUyMDE0In0pLCJlbURhc2giKSxIc3Q9aShzPT5oaSh7ZmluZDovXC5cLlwuJC8scmVwbGFjZTpzPz8iXHUyMDI2In0pLCJlbGxpcHNpcyIpLHFzdD1pKHM9PmhpKHtmaW5kOi8oPzpefFtcc3tbKDwnIlx1MjAxOFx1MjAxQ10pKCIpJC8scmVwbGFjZTpzPz8iXHUyMDFDIn0pLCJvcGVuRG91YmxlUXVvdGUiKSxqc3Q9aShzPT5oaSh7ZmluZDovIiQvLHJlcGxhY2U6cz8/Ilx1MjAxRCJ9KSwiY2xvc2VEb3VibGVRdW90ZSIpLFZzdD1pKHM9PmhpKHtmaW5kOi8oPzpefFtcc3tbKDwnIlx1MjAxOFx1MjAxQ10pKCcpJC8scmVwbGFjZTpzPz8iXHUyMDE4In0pLCJvcGVuU2luZ2xlUXVvdGUiKSxVc3Q9aShzPT5oaSh7ZmluZDovJyQvLHJlcGxhY2U6cz8/Ilx1MjAxOSJ9KSwiY2xvc2VTaW5nbGVRdW90ZSIpLFdzdD1pKHM9PmhpKHtmaW5kOi88LSQvLHJlcGxhY2U6cz8/Ilx1MjE5MCJ9KSwibGVmdEFycm93IiksR3N0PWkocz0+aGkoe2ZpbmQ6Ly0+JC8scmVwbGFjZTpzPz8iXHUyMTkyIn0pLCJyaWdodEFycm93IiksS3N0PWkocz0+aGkoe2ZpbmQ6L1woY1wpJC8scmVwbGFjZTpzPz8iXHhBOSJ9KSwiY29weXJpZ2h0IiksWXN0PWkocz0+aGkoe2ZpbmQ6L1wodG1cKSQvLHJlcGxhY2U6cz8/Ilx1MjEyMiJ9KSwidHJhZGVtYXJrIiksWnN0PWkocz0+aGkoe2ZpbmQ6L1woc21cKSQvLHJlcGxhY2U6cz8/Ilx1MjEyMCJ9KSwic2VydmljZW1hcmsiKSxYc3Q9aShzPT5oaSh7ZmluZDovXChyXCkkLyxyZXBsYWNlOnM/PyJceEFFIn0pLCJyZWdpc3RlcmVkVHJhZGVtYXJrIiksUXN0PWkocz0+aGkoe2ZpbmQ6Lyg/Ol58XHMpKDFcLzIpXHMkLyxyZXBsYWNlOnM/PyJceEJEIn0pLCJvbmVIYWxmIiksSnN0PWkocz0+aGkoe2ZpbmQ6L1wrXC8tJC8scmVwbGFjZTpzPz8iXHhCMSJ9KSwicGx1c01pbnVzIiksZWl0PWkocz0+aGkoe2ZpbmQ6LyE9JC8scmVwbGFjZTpzPz8iXHUyMjYwIn0pLCJub3RFcXVhbCIpLHRpdD1pKHM9PmhpKHtmaW5kOi88PCQvLHJlcGxhY2U6cz8/Ilx4QUIifSksImxhcXVvIiksYWl0PWkocz0+aGkoe2ZpbmQ6Lz4+JC8scmVwbGFjZTpzPz8iXHhCQiJ9KSwicmFxdW8iKSxzaXQ9aShzPT5oaSh7ZmluZDovXGQrXHM/KFsqeF0pXHM/XGQrJC8scmVwbGFjZTpzPz8iXHhENyJ9KSwibXVsdGlwbGljYXRpb24iKSxpaXQ9aShzPT5oaSh7ZmluZDovXF4yJC8scmVwbGFjZTpzPz8iXHhCMiJ9KSwic3VwZXJzY3JpcHRUd28iKSxyaXQ9aShzPT5oaSh7ZmluZDovXF4zJC8scmVwbGFjZTpzPz8iXHhCMyJ9KSwic3VwZXJzY3JpcHRUaHJlZSIpLG9pdD1pKHM9PmhpKHtmaW5kOi8oPzpefFxzKSgxXC80KVxzJC8scmVwbGFjZTpzPz8iXHhCQyJ9KSwib25lUXVhcnRlciIpLG5pdD1pKHM9PmhpKHtmaW5kOi8oPzpefFxzKSgzXC80KVxzJC8scmVwbGFjZTpzPz8iXHhCRSJ9KSwidGhyZWVRdWFydGVycyIpLGxpdD13aS5jcmVhdGUoe25hbWU6InR5cG9ncmFwaHkiLGFkZE9wdGlvbnMoKXtyZXR1cm57Y2xvc2VEb3VibGVRdW90ZToiXHUyMDFEIixjbG9zZVNpbmdsZVF1b3RlOiJcdTIwMTkiLGNvcHlyaWdodDoiXHhBOSIsZWxsaXBzaXM6Ilx1MjAyNiIsZW1EYXNoOiJcdTIwMTQiLGxhcXVvOiJceEFCIixsZWZ0QXJyb3c6Ilx1MjE5MCIsbXVsdGlwbGljYXRpb246Ilx4RDciLG5vdEVxdWFsOiJcdTIyNjAiLG9uZUhhbGY6Ilx4QkQiLG9uZVF1YXJ0ZXI6Ilx4QkMiLG9wZW5Eb3VibGVRdW90ZToiXHUyMDFDIixvcGVuU2luZ2xlUXVvdGU6Ilx1MjAxOCIscGx1c01pbnVzOiJceEIxIixyYXF1bzoiXHhCQiIscmVnaXN0ZXJlZFRyYWRlbWFyazoiXHhBRSIscmlnaHRBcnJvdzoiXHUyMTkyIixzZXJ2aWNlbWFyazoiXHUyMTIwIixzdXBlcnNjcmlwdFRocmVlOiJceEIzIixzdXBlcnNjcmlwdFR3bzoiXHhCMiIsdGhyZWVRdWFydGVyczoiXHhCRSIsdHJhZGVtYXJrOiJcdTIxMjIifX0sYWRkSW5wdXRSdWxlcygpe2xldCBzPVtdO3JldHVybiB0aGlzLm9wdGlvbnMuZW1EYXNoIT09ITEmJnMucHVzaChCc3QodGhpcy5vcHRpb25zLmVtRGFzaCkpLHRoaXMub3B0aW9ucy5lbGxpcHNpcyE9PSExJiZzLnB1c2goSHN0KHRoaXMub3B0aW9ucy5lbGxpcHNpcykpLHRoaXMub3B0aW9ucy5vcGVuRG91YmxlUXVvdGUhPT0hMSYmcy5wdXNoKHFzdCh0aGlzLm9wdGlvbnMub3BlbkRvdWJsZVF1b3RlKSksdGhpcy5vcHRpb25zLmNsb3NlRG91YmxlUXVvdGUhPT0hMSYmcy5wdXNoKGpzdCh0aGlzLm9wdGlvbnMuY2xvc2VEb3VibGVRdW90ZSkpLHRoaXMub3B0aW9ucy5vcGVuU2luZ2xlUXVvdGUhPT0hMSYmcy5wdXNoKFZzdCh0aGlzLm9wdGlvbnMub3BlblNpbmdsZVF1b3RlKSksdGhpcy5vcHRpb25zLmNsb3NlU2luZ2xlUXVvdGUhPT0hMSYmcy5wdXNoKFVzdCh0aGlzLm9wdGlvbnMuY2xvc2VTaW5nbGVRdW90ZSkpLHRoaXMub3B0aW9ucy5sZWZ0QXJyb3chPT0hMSYmcy5wdXNoKFdzdCh0aGlzLm9wdGlvbnMubGVmdEFycm93KSksdGhpcy5vcHRpb25zLnJpZ2h0QXJyb3chPT0hMSYmcy5wdXNoKEdzdCh0aGlzLm9wdGlvbnMucmlnaHRBcnJvdykpLHRoaXMub3B0aW9ucy5jb3B5cmlnaHQhPT0hMSYmcy5wdXNoKEtzdCh0aGlzLm9wdGlvbnMuY29weXJpZ2h0KSksdGhpcy5vcHRpb25zLnRyYWRlbWFyayE9PSExJiZzLnB1c2goWXN0KHRoaXMub3B0aW9ucy50cmFkZW1hcmspKSx0aGlzLm9wdGlvbnMuc2VydmljZW1hcmshPT0hMSYmcy5wdXNoKFpzdCh0aGlzLm9wdGlvbnMuc2VydmljZW1hcmspKSx0aGlzLm9wdGlvbnMucmVnaXN0ZXJlZFRyYWRlbWFyayE9PSExJiZzLnB1c2goWHN0KHRoaXMub3B0aW9ucy5yZWdpc3RlcmVkVHJhZGVtYXJrKSksdGhpcy5vcHRpb25zLm9uZUhhbGYhPT0hMSYmcy5wdXNoKFFzdCh0aGlzLm9wdGlvbnMub25lSGFsZikpLHRoaXMub3B0aW9ucy5wbHVzTWludXMhPT0hMSYmcy5wdXNoKEpzdCh0aGlzLm9wdGlvbnMucGx1c01pbnVzKSksdGhpcy5vcHRpb25zLm5vdEVxdWFsIT09ITEmJnMucHVzaChlaXQodGhpcy5vcHRpb25zLm5vdEVxdWFsKSksdGhpcy5vcHRpb25zLmxhcXVvIT09ITEmJnMucHVzaCh0aXQodGhpcy5vcHRpb25zLmxhcXVvKSksdGhpcy5vcHRpb25zLnJhcXVvIT09ITEmJnMucHVzaChhaXQodGhpcy5vcHRpb25zLnJhcXVvKSksdGhpcy5vcHRpb25zLm11bHRpcGxpY2F0aW9uIT09ITEmJnMucHVzaChzaXQodGhpcy5vcHRpb25zLm11bHRpcGxpY2F0aW9uKSksdGhpcy5vcHRpb25zLnN1cGVyc2NyaXB0VHdvIT09ITEmJnMucHVzaChpaXQodGhpcy5vcHRpb25zLnN1cGVyc2NyaXB0VHdvKSksdGhpcy5vcHRpb25zLnN1cGVyc2NyaXB0VGhyZWUhPT0hMSYmcy5wdXNoKHJpdCh0aGlzLm9wdGlvbnMuc3VwZXJzY3JpcHRUaHJlZSkpLHRoaXMub3B0aW9ucy5vbmVRdWFydGVyIT09ITEmJnMucHVzaChvaXQodGhpcy5vcHRpb25zLm9uZVF1YXJ0ZXIpKSx0aGlzLm9wdGlvbnMudGhyZWVRdWFydGVycyE9PSExJiZzLnB1c2gobml0KHRoaXMub3B0aW9ucy50aHJlZVF1YXJ0ZXJzKSksc319KX0pO3ZhciBzMixpMix1aXQ9ZygoKT0+e3MyPXt4dGVybToiNS4zLjAiLHh0ZXJtQWRkb25GaXQ6IjAuOC4wIix4dGVybUFkZG9uU2VhcmNoOiIwLjEzLjAiLGhpZ2hsaWdodEpzOiIxMS4xMS4xIixlY2hhcnRzOiI1LjYuMCIsbGlnaHR3ZWlnaHRDaGFydHM6IjUuMS4wIix0aXB0YXA6IjIuMjcuMiIsZm9udGF3ZXNvbWU6IjcuMi4wIn0saTI9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0ifSk7dmFyIFFyLHQzYT1nKCgpPT57dWl0KCk7UXI9Y2xhc3Mgc3tzdGF0aWN7aSh0aGlzLCJEZWVzU2VydmljZUxpYkxvYWRlciIpfXN0YXRpYyBpbnN0YW5jZTt4dGVybUxpYj1udWxsO3h0ZXJtRml0QWRkb25MaWI9bnVsbDt4dGVybVNlYXJjaEFkZG9uTGliPW51bGw7aGlnaGxpZ2h0SnNMaWI9bnVsbDtsaWdodHdlaWdodENoYXJ0c0xpYj1udWxsO2VjaGFydHNMaWI9bnVsbDt0aXB0YXBMaWI9bnVsbDt4dGVybUxvYWRpbmdQcm9taXNlPW51bGw7eHRlcm1GaXRBZGRvbkxvYWRpbmdQcm9taXNlPW51bGw7eHRlcm1TZWFyY2hBZGRvbkxvYWRpbmdQcm9taXNlPW51bGw7aGlnaGxpZ2h0SnNMb2FkaW5nUHJvbWlzZT1udWxsO2xpZ2h0d2VpZ2h0Q2hhcnRzTG9hZGluZ1Byb21pc2U9bnVsbDtlY2hhcnRzTG9hZGluZ1Byb21pc2U9bnVsbDt0aXB0YXBMb2FkaW5nUHJvbWlzZT1udWxsO2NvbnN0cnVjdG9yKCl7fXN0YXRpYyBnZXRJbnN0YW5jZSgpe3JldHVybiBzLmluc3RhbmNlfHwocy5pbnN0YW5jZT1uZXcgcykscy5pbnN0YW5jZX1hc3luYyBsb2FkWHRlcm0oKXtyZXR1cm4gdGhpcy54dGVybUxpYj90aGlzLnh0ZXJtTGliOnRoaXMueHRlcm1Mb2FkaW5nUHJvbWlzZT90aGlzLnh0ZXJtTG9hZGluZ1Byb21pc2U6KHRoaXMueHRlcm1Mb2FkaW5nUHJvbWlzZT0oYXN5bmMoKT0+e2xldCB0PWF3YWl0IGltcG9ydChgJHtpMn0veHRlcm1AJHtzMi54dGVybX0vK2VzbWApO3JldHVybiBhd2FpdCB0aGlzLmluamVjdFh0ZXJtU3R5bGVzKCksdGhpcy54dGVybUxpYj17VGVybWluYWw6dC5UZXJtaW5hbH0sdGhpcy54dGVybUxpYn0pKCksdGhpcy54dGVybUxvYWRpbmdQcm9taXNlKX1hc3luYyBsb2FkWHRlcm1GaXRBZGRvbigpe3JldHVybiB0aGlzLnh0ZXJtRml0QWRkb25MaWI/dGhpcy54dGVybUZpdEFkZG9uTGliOnRoaXMueHRlcm1GaXRBZGRvbkxvYWRpbmdQcm9taXNlP3RoaXMueHRlcm1GaXRBZGRvbkxvYWRpbmdQcm9taXNlOih0aGlzLnh0ZXJtRml0QWRkb25Mb2FkaW5nUHJvbWlzZT0oYXN5bmMoKT0+e2xldCB0PWF3YWl0IGltcG9ydChgJHtpMn0veHRlcm0tYWRkb24tZml0QCR7czIueHRlcm1BZGRvbkZpdH0vK2VzbWApO3JldHVybiB0aGlzLnh0ZXJtRml0QWRkb25MaWI9e0ZpdEFkZG9uOnQuRml0QWRkb259LHRoaXMueHRlcm1GaXRBZGRvbkxpYn0pKCksdGhpcy54dGVybUZpdEFkZG9uTG9hZGluZ1Byb21pc2UpfWFzeW5jIGxvYWRYdGVybVNlYXJjaEFkZG9uKCl7cmV0dXJuIHRoaXMueHRlcm1TZWFyY2hBZGRvbkxpYj90aGlzLnh0ZXJtU2VhcmNoQWRkb25MaWI6dGhpcy54dGVybVNlYXJjaEFkZG9uTG9hZGluZ1Byb21pc2U/dGhpcy54dGVybVNlYXJjaEFkZG9uTG9hZGluZ1Byb21pc2U6KHRoaXMueHRlcm1TZWFyY2hBZGRvbkxvYWRpbmdQcm9taXNlPShhc3luYygpPT57bGV0IHQ9YXdhaXQgaW1wb3J0KGAke2kyfS94dGVybS1hZGRvbi1zZWFyY2hAJHtzMi54dGVybUFkZG9uU2VhcmNofS8rZXNtYCk7cmV0dXJuIHRoaXMueHRlcm1TZWFyY2hBZGRvbkxpYj17U2VhcmNoQWRkb246dC5TZWFyY2hBZGRvbn0sdGhpcy54dGVybVNlYXJjaEFkZG9uTGlifSkoKSx0aGlzLnh0ZXJtU2VhcmNoQWRkb25Mb2FkaW5nUHJvbWlzZSl9YXN5bmMgaW5qZWN0WHRlcm1TdHlsZXMoKXtsZXQgZT0ieHRlcm0tY2RuLXN0eWxlcyI7aWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZSkpcmV0dXJuO2xldCB0PWAke2kyfS94dGVybUAke3MyLnh0ZXJtfS9jc3MveHRlcm0uY3NzYCxyPWF3YWl0KGF3YWl0IGZldGNoKHQpKS50ZXh0KCksbj1gCi8qIEZpeCB4dGVybS5qcyBXaWR0aENhY2hlIG1lYXN1cmVtZW50IGNvbnRhaW5lciBjYXVzaW5nIGhvcml6b250YWwgc2Nyb2xsYmFyICovCi8qIHh0ZXJtIGNyZWF0ZXMgdGhpcyBvbiBkb2N1bWVudC5ib2R5IC0gbW92ZSBpdCBvZmYtc2NyZWVuIGhvcml6b250YWxseSB0b28gKi8KYm9keSA+IGRpdltzdHlsZSo9InRvcDogLTUwMDAwcHgiXVtzdHlsZSo9IndpZHRoOiA1MDAwMHB4Il0gewogIGxlZnQ6IC01MDAwMHB4ICFpbXBvcnRhbnQ7Cn0KYCxvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7by5pZD1lLG8udGV4dENvbnRlbnQ9cituLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobyl9YXN5bmMgbG9hZEhpZ2hsaWdodEpzKCl7cmV0dXJuIHRoaXMuaGlnaGxpZ2h0SnNMaWI/dGhpcy5oaWdobGlnaHRKc0xpYjp0aGlzLmhpZ2hsaWdodEpzTG9hZGluZ1Byb21pc2U/dGhpcy5oaWdobGlnaHRKc0xvYWRpbmdQcm9taXNlOih0aGlzLmhpZ2hsaWdodEpzTG9hZGluZ1Byb21pc2U9KGFzeW5jKCk9PntsZXQgdD1hd2FpdCBpbXBvcnQoYCR7aTJ9L2hpZ2hsaWdodC5qc0Ake3MyLmhpZ2hsaWdodEpzfS8rZXNtYCk7cmV0dXJuIHRoaXMuaGlnaGxpZ2h0SnNMaWI9dC5kZWZhdWx0LHRoaXMuaGlnaGxpZ2h0SnNMaWJ9KSgpLHRoaXMuaGlnaGxpZ2h0SnNMb2FkaW5nUHJvbWlzZSl9YXN5bmMgbG9hZExpZ2h0d2VpZ2h0Q2hhcnRzKCl7cmV0dXJuIHRoaXMubGlnaHR3ZWlnaHRDaGFydHNMaWI/dGhpcy5saWdodHdlaWdodENoYXJ0c0xpYjp0aGlzLmxpZ2h0d2VpZ2h0Q2hhcnRzTG9hZGluZ1Byb21pc2U/dGhpcy5saWdodHdlaWdodENoYXJ0c0xvYWRpbmdQcm9taXNlOih0aGlzLmxpZ2h0d2VpZ2h0Q2hhcnRzTG9hZGluZ1Byb21pc2U9KGFzeW5jKCk9PntsZXQgdD1hd2FpdCBpbXBvcnQoYCR7aTJ9L2xpZ2h0d2VpZ2h0LWNoYXJ0c0Ake3MyLmxpZ2h0d2VpZ2h0Q2hhcnRzfS8rZXNtYCk7cmV0dXJuIHRoaXMubGlnaHR3ZWlnaHRDaGFydHNMaWI9e2NyZWF0ZUNoYXJ0OnQuY3JlYXRlQ2hhcnQsQXJlYVNlcmllczp0LkFyZWFTZXJpZXMsTGluZVNlcmllczp0LkxpbmVTZXJpZXMsQ29sb3JUeXBlOnQuQ29sb3JUeXBlLExpbmVUeXBlOnQuTGluZVR5cGUsQ3Jvc3NoYWlyTW9kZTp0LkNyb3NzaGFpck1vZGV9LHRoaXMubGlnaHR3ZWlnaHRDaGFydHNMaWJ9KSgpLHRoaXMubGlnaHR3ZWlnaHRDaGFydHNMb2FkaW5nUHJvbWlzZSl9YXN5bmMgbG9hZEVjaGFydHMoKXtyZXR1cm4gdGhpcy5lY2hhcnRzTGliP3RoaXMuZWNoYXJ0c0xpYjp0aGlzLmVjaGFydHNMb2FkaW5nUHJvbWlzZT90aGlzLmVjaGFydHNMb2FkaW5nUHJvbWlzZToodGhpcy5lY2hhcnRzTG9hZGluZ1Byb21pc2U9KGFzeW5jKCk9PntsZXQgdD1hd2FpdCBpbXBvcnQoYCR7aTJ9L2VjaGFydHNAJHtzMi5lY2hhcnRzfS9kaXN0L2VjaGFydHMuZXNtLm1pbi5qc2ApO3JldHVybiB0aGlzLmVjaGFydHNMaWI9e2luaXQ6dC5pbml0LGRpc3Bvc2U6dC5kaXNwb3NlLGdldEluc3RhbmNlQnlEb206dC5nZXRJbnN0YW5jZUJ5RG9tfSx0aGlzLmVjaGFydHNMaWJ9KSgpLHRoaXMuZWNoYXJ0c0xvYWRpbmdQcm9taXNlKX1hc3luYyBsb2FkVGlwdGFwKCl7cmV0dXJuIHRoaXMudGlwdGFwTGliP3RoaXMudGlwdGFwTGliOnRoaXMudGlwdGFwTG9hZGluZ1Byb21pc2U/dGhpcy50aXB0YXBMb2FkaW5nUHJvbWlzZToodGhpcy50aXB0YXBMb2FkaW5nUHJvbWlzZT0oYXN5bmMoKT0+e2xldFtlLHQsYSxyLG4sb109YXdhaXQgUHJvbWlzZS5hbGwoW1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihpaSgpLEthdCkpLFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pihuc3QoKSxvc3QpKSxQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oZHN0KCksY3N0KSksUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KGhzdCgpLHBzdCkpLFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihGc3QoKSxPc3QpKSxQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oZGl0KCksY2l0KSldKTtyZXR1cm4gdGhpcy50aXB0YXBMaWI9e0VkaXRvcjplLkVkaXRvcixTdGFydGVyS2l0OnQuZGVmYXVsdHx8dC5TdGFydGVyS2l0LFVuZGVybGluZTphLmRlZmF1bHR8fGEuVW5kZXJsaW5lLFRleHRBbGlnbjpyLmRlZmF1bHR8fHIuVGV4dEFsaWduLExpbms6bi5kZWZhdWx0fHxuLkxpbmssVHlwb2dyYXBoeTpvLmRlZmF1bHR8fG8uVHlwb2dyYXBoeX0sdGhpcy50aXB0YXBMaWJ9KSgpLHRoaXMudGlwdGFwTG9hZGluZ1Byb21pc2UpfWFzeW5jIHByZWxvYWRBbGwoKXthd2FpdCBQcm9taXNlLmFsbChbdGhpcy5sb2FkWHRlcm0oKSx0aGlzLmxvYWRYdGVybUZpdEFkZG9uKCksdGhpcy5sb2FkWHRlcm1TZWFyY2hBZGRvbigpLHRoaXMubG9hZEhpZ2hsaWdodEpzKCksdGhpcy5sb2FkTGlnaHR3ZWlnaHRDaGFydHMoKSx0aGlzLmxvYWRFY2hhcnRzKCksdGhpcy5sb2FkVGlwdGFwKCldKX1pc0xvYWRlZChlKXtzd2l0Y2goZSl7Y2FzZSJ4dGVybSI6cmV0dXJuIHRoaXMueHRlcm1MaWIhPT1udWxsO2Nhc2UieHRlcm1GaXRBZGRvbiI6cmV0dXJuIHRoaXMueHRlcm1GaXRBZGRvbkxpYiE9PW51bGw7Y2FzZSJ4dGVybVNlYXJjaEFkZG9uIjpyZXR1cm4gdGhpcy54dGVybVNlYXJjaEFkZG9uTGliIT09bnVsbDtjYXNlImhpZ2hsaWdodEpzIjpyZXR1cm4gdGhpcy5oaWdobGlnaHRKc0xpYiE9PW51bGw7Y2FzZSJsaWdodHdlaWdodENoYXJ0cyI6cmV0dXJuIHRoaXMubGlnaHR3ZWlnaHRDaGFydHNMaWIhPT1udWxsO2Nhc2UiZWNoYXJ0cyI6cmV0dXJuIHRoaXMuZWNoYXJ0c0xpYiE9PW51bGw7Y2FzZSJ0aXB0YXAiOnJldHVybiB0aGlzLnRpcHRhcExpYiE9PW51bGw7ZGVmYXVsdDpyZXR1cm4hMX19fX0pO3ZhciBmdT1nKCgpPT57dDNhKCk7dWl0KCl9KTt2YXIgQ1gsYTNhPWcoKCk9PntZbCgpO3BlKCk7RGQoKTtDcigpO05uZSgpO2Z1KCk7Q1g9Y2xhc3MgZXh0ZW5kcyBwaXtzdGF0aWN7aSh0aGlzLCJDb2RlQmxvY2tIYW5kbGVyIil9dHlwZT0iY29kZSI7aGlnaGxpZ2h0VGltZXI9bnVsbDtoaWdobGlnaHRKcz1udWxsO3JlbmRlcihlLHQpe2xldCBhPWUubWV0YWRhdGE/Lmxhbmd1YWdlfHwidHlwZXNjcmlwdCIscj1lLmNvbnRlbnR8fCIiLG49ci5zcGxpdChgCmApLmxlbmd0aCxvPSIiO2ZvcihsZXQgcD0xO3A8PW47cCsrKW8rPWA8ZGl2IGNsYXNzPSJsaW5lLW51bWJlciI+JHtwfTwvZGl2PmA7bGV0IGw9TFoubWFwKHA9PntsZXQgZD1wLnRvTG93ZXJDYXNlKCk7cmV0dXJuYDxvcHRpb24gdmFsdWU9IiR7ZH0iICR7ZD09PWE/InNlbGVjdGVkIjoiIn0+JHtwfTwvb3B0aW9uPmB9KS5qb2luKCIiKTtyZXR1cm5gCiAgICAgIDxkaXYgY2xhc3M9ImNvZGUtYmxvY2stY29udGFpbmVyJHt0PyIgc2VsZWN0ZWQiOiIifSIgZGF0YS1sYW5ndWFnZT0iJHthfSI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29kZS1oZWFkZXIiPgogICAgICAgICAgPHNlbGVjdCBjbGFzcz0ibGFuZ3VhZ2Utc2VsZWN0b3IiIGRhdGEtYmxvY2staWQ9IiR7ZS5pZH0iPgogICAgICAgICAgICAke2x9CiAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgIDxidXR0b24gY2xhc3M9ImNvcHktYnV0dG9uIiB0aXRsZT0iQ29weSBjb2RlIj4KICAgICAgICAgICAgPHN2ZyBjbGFzcz0iY29weS1pY29uIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0iY3VycmVudENvbG9yIj4KICAgICAgICAgICAgICA8cGF0aCBkPSJNMCA2Ljc1QzAgNS43ODQuNzg0IDUgMS43NSA1aDEuNWEuNzUuNzUgMCAwMTAgMS41aC0xLjVhLjI1LjI1IDAgMDAtLjI1LjI1djcuNWMwIC4xMzguMTEyLjI1LjI1LjI1aDcuNWEuMjUuMjUgMCAwMC4yNS0uMjV2LTEuNWEuNzUuNzUgMCAwMTEuNSAwdjEuNUExLjc1IDEuNzUgMCAwMTkuMjUgMTZoLTcuNUExLjc1IDEuNzUgMCAwMTAgMTQuMjV2LTcuNXoiPjwvcGF0aD4KICAgICAgICAgICAgICA8cGF0aCBkPSJNNSAxLjc1QzUgLjc4NCA1Ljc4NCAwIDYuNzUgMGg3LjVDMTUuMjE2IDAgMTYgLjc4NCAxNiAxLjc1djcuNUExLjc1IDEuNzUgMCAwMTE0LjI1IDExaC03LjVBMS43NSAxLjc1IDAgMDE1IDkuMjV2LTcuNXptMS43NS0uMjVhLjI1LjI1IDAgMDAtLjI1LjI1djcuNWMwIC4xMzguMTEyLjI1LjI1LjI1aDcuNWEuMjUuMjUgMCAwMC4yNS0uMjV2LTcuNWEuMjUuMjUgMCAwMC0uMjUtLjI1aC03LjV6Ij48L3BhdGg+CiAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29weS10ZXh0Ij5Db3B5PC9zcGFuPgogICAgICAgICAgPC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY29kZS1ib2R5Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUtbnVtYmVycyI+JHtvfTwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iY29kZS1jb250ZW50Ij4KICAgICAgICAgICAgPHByZSBjbGFzcz0iY29kZS1wcmUiPjxjb2RlIGNsYXNzPSJjb2RlLWVkaXRvciIgCiAgICAgICAgICAgICAgICAgY29udGVudGVkaXRhYmxlPSJ0cnVlIgogICAgICAgICAgICAgICAgIGRhdGEtYmxvY2staWQ9IiR7ZS5pZH0iCiAgICAgICAgICAgICAgICAgZGF0YS1ibG9jay10eXBlPSIke2UudHlwZX0iCiAgICAgICAgICAgICAgICAgc3BlbGxjaGVjaz0iZmFsc2UiPiR7dGhpcy5lc2NhcGVIdG1sKHIpfTwvY29kZT48L3ByZT4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9c2V0dXAoZSx0LGEpe2xldCByPWUucXVlcnlTZWxlY3RvcigiLmNvZGUtZWRpdG9yIiksbj1lLnF1ZXJ5U2VsZWN0b3IoIi5jb2RlLWJsb2NrLWNvbnRhaW5lciIpLG89ZS5xdWVyeVNlbGVjdG9yKCIuY29weS1idXR0b24iKSxsPWUucXVlcnlTZWxlY3RvcigiLmxhbmd1YWdlLXNlbGVjdG9yIik7aWYoIXJ8fCFuKXJldHVybjtsJiZsLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsZD0+e2xldCB1PWQudGFyZ2V0LnZhbHVlO3QubWV0YWRhdGE9ey4uLnQubWV0YWRhdGEsbGFuZ3VhZ2U6dX0sbi5zZXRBdHRyaWJ1dGUoImRhdGEtbGFuZ3VhZ2UiLHUpLHQuY29udGVudCYmZG9jdW1lbnQuYWN0aXZlRWxlbWVudCE9PXImJnRoaXMuYXBwbHlIaWdobGlnaHRpbmcoZSx0KSxhLm9uSW5wdXQmJmEub25JbnB1dChuZXcgSW5wdXRFdmVudCgiaW5wdXQiKSl9KSxvJiZvLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixhc3luYygpPT57bGV0IGQ9ci50ZXh0Q29udGVudHx8IiI7dHJ5e2F3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGQpO2xldCB1PW8ucXVlcnlTZWxlY3RvcigiLmNvcHktdGV4dCIpLGM9dS50ZXh0Q29udGVudDt1LnRleHRDb250ZW50PSJDb3BpZWQhIixvLmNsYXNzTGlzdC5hZGQoImNvcGllZCIpLHNldFRpbWVvdXQoKCk9Pnt1LnRleHRDb250ZW50PWMsby5jbGFzc0xpc3QucmVtb3ZlKCJjb3BpZWQiKX0sMmUzKX1jYXRjaCh1KXtjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gY29weToiLHUpO2xldCBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRleHRhcmVhIik7Yy52YWx1ZT1kLGMuc3R5bGUucG9zaXRpb249ImZpeGVkIixjLnN0eWxlLm9wYWNpdHk9IjAiLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYyksYy5zZWxlY3QoKTt0cnl7ZG9jdW1lbnQuZXhlY0NvbW1hbmQoImNvcHkiKTtsZXQgYj1vLnF1ZXJ5U2VsZWN0b3IoIi5jb3B5LXRleHQiKSx2PWIudGV4dENvbnRlbnQ7Yi50ZXh0Q29udGVudD0iQ29waWVkISIsby5jbGFzc0xpc3QuYWRkKCJjb3BpZWQiKSxzZXRUaW1lb3V0KCgpPT57Yi50ZXh0Q29udGVudD12LG8uY2xhc3NMaXN0LnJlbW92ZSgiY29waWVkIil9LDJlMyl9Y2F0Y2goYil7Y29uc29sZS5lcnJvcigiRmFsbGJhY2sgY29weSBmYWlsZWQ6IixiKX1kb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGMpfX0pO2xldCBwPSExO3IuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCgpPT57cD0hMCxuLmNsYXNzTGlzdC5hZGQoImVkaXRpbmciKTtsZXQgZD1yLnRleHRDb250ZW50fHwiIjtyLnRleHRDb250ZW50PWQscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57bGV0IHU9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKSxjPXdpbmRvdy5nZXRTZWxlY3Rpb24oKTtyLmZpcnN0Q2hpbGQmJih1LnNldFN0YXJ0KHIuZmlyc3RDaGlsZCwwKSx1LmNvbGxhcHNlKCEwKSxjPy5yZW1vdmVBbGxSYW5nZXMoKSxjPy5hZGRSYW5nZSh1KSl9KSxhLm9uRm9jdXMoKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsKCk9PntwPSExLG4uY2xhc3NMaXN0LnJlbW92ZSgiZWRpdGluZyIpLHRoaXMuYXBwbHlIaWdobGlnaHRpbmcoZSx0KSxhLm9uQmx1cigpfSksci5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsZD0+e2Eub25JbnB1dChkKSx0aGlzLnVwZGF0ZUxpbmVOdW1iZXJzKGUpLGNsZWFyVGltZW91dCh0aGlzLmhpZ2hsaWdodFRpbWVyKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsZD0+e2lmKGQua2V5PT09IlRhYiIpe2QucHJldmVudERlZmF1bHQoKTtsZXQgdT13aW5kb3cuZ2V0U2VsZWN0aW9uKCk7aWYodSYmdS5yYW5nZUNvdW50PjApe2xldCBjPXUuZ2V0UmFuZ2VBdCgwKSxiPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIgICIpO2MuaW5zZXJ0Tm9kZShiKSxjLnNldFN0YXJ0QWZ0ZXIoYiksYy5zZXRFbmRBZnRlcihiKSx1LnJlbW92ZUFsbFJhbmdlcygpLHUuYWRkUmFuZ2UoYyksYS5vbklucHV0KG5ldyBJbnB1dEV2ZW50KCJpbnB1dCIpKSx0aGlzLnVwZGF0ZUxpbmVOdW1iZXJzKGUpfXJldHVybn1pZihbIkFycm93TGVmdCIsIkFycm93UmlnaHQiLCJBcnJvd1VwIiwiQXJyb3dEb3duIl0uaW5jbHVkZXMoZC5rZXkpKXtsZXQgdT10aGlzLmdldEN1cnNvclBvc2l0aW9uKGUpLGM9ci50ZXh0Q29udGVudD8ubGVuZ3RofHwwO2lmKGQua2V5PT09IkFycm93TGVmdCImJnU9PT0wfHxkLmtleT09PSJBcnJvd1JpZ2h0IiYmdT09PWMpe2Eub25LZXlEb3duKGQpO3JldHVybn1pZihkLmtleT09PSJBcnJvd1VwInx8ZC5rZXk9PT0iQXJyb3dEb3duIil7bGV0IGI9KHIudGV4dENvbnRlbnR8fCIiKS5zcGxpdChgCmApLHY9dGhpcy5nZXRDdXJyZW50TGluZUluZGV4KHIpO2lmKGQua2V5PT09IkFycm93VXAiJiZ2PT09MHx8ZC5rZXk9PT0iQXJyb3dEb3duIiYmdj09PWIubGVuZ3RoLTEpe2Eub25LZXlEb3duKGQpO3JldHVybn19fWEub25LZXlEb3duKGQpfSksci5hZGRFdmVudExpc3RlbmVyKCJwYXN0ZSIsZD0+e2QucHJldmVudERlZmF1bHQoKTtsZXQgdT1kLmNsaXBib2FyZERhdGE/LmdldERhdGEoInRleHQvcGxhaW4iKTtpZih1KXtsZXQgYz13aW5kb3cuZ2V0U2VsZWN0aW9uKCk7aWYoYyYmYy5yYW5nZUNvdW50PjApe2xldCBiPWMuZ2V0UmFuZ2VBdCgwKTtiLmRlbGV0ZUNvbnRlbnRzKCk7bGV0IHY9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodSk7Yi5pbnNlcnROb2RlKHYpLGIuc2V0U3RhcnRBZnRlcih2KSxiLnNldEVuZEFmdGVyKHYpLGMucmVtb3ZlQWxsUmFuZ2VzKCksYy5hZGRSYW5nZShiKSxhLm9uSW5wdXQobmV3IElucHV0RXZlbnQoImlucHV0IikpLHRoaXMudXBkYXRlTGluZU51bWJlcnMoZSl9fX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigiY29tcG9zaXRpb25zdGFydCIsKCk9PmEub25Db21wb3NpdGlvblN0YXJ0KCkpLHIuYWRkRXZlbnRMaXN0ZW5lcigiY29tcG9zaXRpb25lbmQiLCgpPT5hLm9uQ29tcG9zaXRpb25FbmQoKSksdC5jb250ZW50JiZkb2N1bWVudC5hY3RpdmVFbGVtZW50IT09ciYmcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dGhpcy5hcHBseUhpZ2hsaWdodGluZyhlLHQpfSl9dXBkYXRlTGluZU51bWJlcnMoZSl7bGV0IHQ9ZS5xdWVyeVNlbGVjdG9yKCIuY29kZS1lZGl0b3IiKSxhPWUucXVlcnlTZWxlY3RvcigiLmxpbmUtbnVtYmVycyIpO2lmKCF0fHwhYSlyZXR1cm47bGV0IG89KHQudGV4dENvbnRlbnR8fCIiKS5zcGxpdChgCmApLmxlbmd0aHx8MSxsPSIiO2ZvcihsZXQgcD0xO3A8PW87cCsrKWwrPWA8ZGl2IGNsYXNzPSJsaW5lLW51bWJlciI+JHtwfTwvZGl2PmA7YS5pbm5lckhUTUw9bH1nZXRDdXJyZW50TGluZUluZGV4KGUpe2xldCB0PXdpbmRvdy5nZXRTZWxlY3Rpb24oKTtpZighdHx8dC5yYW5nZUNvdW50PT09MClyZXR1cm4gMDtsZXQgYT10LmdldFJhbmdlQXQoMCkscj1hLmNsb25lUmFuZ2UoKTtyZXR1cm4gci5zZWxlY3ROb2RlQ29udGVudHMoZSksci5zZXRFbmQoYS5zdGFydENvbnRhaW5lcixhLnN0YXJ0T2Zmc2V0KSxyLnRvU3RyaW5nKCkuc3BsaXQoYApgKS5sZW5ndGgtMX1hc3luYyBhcHBseUhpZ2hsaWdodGluZyhlLHQpe2xldCBhPWUucXVlcnlTZWxlY3RvcigiLmNvZGUtZWRpdG9yIik7aWYoIWEpcmV0dXJuO3RoaXMuaGlnaGxpZ2h0SnN8fCh0aGlzLmhpZ2hsaWdodEpzPWF3YWl0IFFyLmdldEluc3RhbmNlKCkubG9hZEhpZ2hsaWdodEpzKCkpO2xldCByPXRoaXMuZ2V0Q3Vyc29yUG9zaXRpb24oZSksbj1hLnRleHRDb250ZW50fHwiIixvPXQubWV0YWRhdGE/Lmxhbmd1YWdlfHwidHlwZXNjcmlwdCI7dHJ5e2xldCBsPXRoaXMuaGlnaGxpZ2h0SnMuaGlnaGxpZ2h0KG4se2xhbmd1YWdlOm8saWdub3JlSWxsZWdhbHM6ITB9KTtsLnZhbHVlJiYoYS5pbm5lckhUTUw9bC52YWx1ZSxkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09YSYmciE9PW51bGwmJnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e1N0LnNldEN1cnNvclBvc2l0aW9uKGEscil9KSl9Y2F0Y2gobCl7Y29uc29sZS53YXJuKCJTeW50YXggaGlnaGxpZ2h0aW5nIGZhaWxlZDoiLGwpfX1lc2NhcGVIdG1sKGUpe2xldCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0LnRleHRDb250ZW50PWUsdC5pbm5lckhUTUx9Z2V0Q29udGVudChlKXtyZXR1cm4gZS5xdWVyeVNlbGVjdG9yKCIuY29kZS1lZGl0b3IiKT8udGV4dENvbnRlbnR8fCIifXNldENvbnRlbnQoZSx0KXtsZXQgYT1lLnF1ZXJ5U2VsZWN0b3IoIi5jb2RlLWVkaXRvciIpO2lmKGEmJihhLnRleHRDb250ZW50PXQsdGhpcy51cGRhdGVMaW5lTnVtYmVycyhlKSxkb2N1bWVudC5hY3RpdmVFbGVtZW50IT09YSkpe2xldCByPXtpZDphLmRhdGFzZXQuYmxvY2tJZHx8IiIsdHlwZToiY29kZSIsY29udGVudDp0LG1ldGFkYXRhOntsYW5ndWFnZTplLnF1ZXJ5U2VsZWN0b3IoIi5jb2RlLWJsb2NrLWNvbnRhaW5lciIpPy5nZXRBdHRyaWJ1dGUoImRhdGEtbGFuZ3VhZ2UiKXx8InR5cGVzY3JpcHQifX07dGhpcy5hcHBseUhpZ2hsaWdodGluZyhlLHIpfX1nZXRDdXJzb3JQb3NpdGlvbihlKXtsZXQgdD1lLnF1ZXJ5U2VsZWN0b3IoIi5jb2RlLWVkaXRvciIpO2lmKCF0KXJldHVybiBudWxsO2xldCBhPXdpbmRvdy5nZXRTZWxlY3Rpb24oKTtpZighYXx8YS5yYW5nZUNvdW50PT09MClyZXR1cm4gbnVsbDtsZXQgcj1hLmdldFJhbmdlQXQoMCk7aWYoIXQuY29udGFpbnMoci5zdGFydENvbnRhaW5lcikpcmV0dXJuIG51bGw7bGV0IG49ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtyZXR1cm4gbi5zZWxlY3ROb2RlQ29udGVudHModCksbi5zZXRFbmQoci5zdGFydENvbnRhaW5lcixyLnN0YXJ0T2Zmc2V0KSxuLnRvU3RyaW5nKCkubGVuZ3RofXNldEN1cnNvclRvU3RhcnQoZSl7bGV0IHQ9ZS5xdWVyeVNlbGVjdG9yKCIuY29kZS1lZGl0b3IiKTt0JiZTdC5zZXRDdXJzb3JQb3NpdGlvbih0LDApfXNldEN1cnNvclRvRW5kKGUpe2xldCB0PWUucXVlcnlTZWxlY3RvcigiLmNvZGUtZWRpdG9yIik7aWYodCl7bGV0IGE9dC50ZXh0Q29udGVudD8ubGVuZ3RofHwwO1N0LnNldEN1cnNvclBvc2l0aW9uKHQsYSl9fWZvY3VzKGUpe2UucXVlcnlTZWxlY3RvcigiLmNvZGUtZWRpdG9yIik/LmZvY3VzKCl9Zm9jdXNXaXRoQ3Vyc29yKGUsdD0iZW5kIil7bGV0IGE9ZS5xdWVyeVNlbGVjdG9yKCIuY29kZS1lZGl0b3IiKTthJiYoYS5mb2N1cygpLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3Q9PT0ic3RhcnQiP3RoaXMuc2V0Q3Vyc29yVG9TdGFydChlKTp0PT09ImVuZCI/dGhpcy5zZXRDdXJzb3JUb0VuZChlKTp0eXBlb2YgdD09Im51bWJlciImJlN0LnNldEN1cnNvclBvc2l0aW9uKGEsdCl9KSl9Z2V0U3BsaXRDb250ZW50KGUpe2xldCB0PXRoaXMuZ2V0Q3Vyc29yUG9zaXRpb24oZSk7aWYodD09PW51bGwpcmV0dXJuIG51bGw7bGV0IGE9dGhpcy5nZXRDb250ZW50KGUpO3JldHVybntiZWZvcmU6YS5zdWJzdHJpbmcoMCx0KSxhZnRlcjphLnN1YnN0cmluZyh0KX19Z2V0U3R5bGVzKCl7cmV0dXJuYAogICAgICAvKiBDb2RlIEJsb2NrIENvbnRhaW5lciAtIE1pbmltYWxpc3Qgc2hhZGNuIHN0eWxlICovCiAgICAgIC5jb2RlLWJsb2NrLWNvbnRhaW5lciB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG1hcmdpbjogMTJweCAwOwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzM3NDE1MSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgfQogICAgICAKICAgICAgLmNvZGUtYmxvY2stY29udGFpbmVyLnNlbGVjdGVkIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjOWNhM2FmIiwiIzZiNzI4MCIpfTsKICAgICAgfQogICAgICAKICAgICAgLmNvZGUtYmxvY2stY29udGFpbmVyLmVkaXRpbmcgewogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiM2YjcyODAiLCIjOWNhM2FmIil9OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmFmYWZhIiwiIzBhMGEwYSIpfTsKICAgICAgfQogICAgICAKICAgICAgLyogSGVhZGVyIC0gU2ltcGxpZmllZCAqLwogICAgICAuY29kZS1oZWFkZXIgewogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMzNzQxNTEiKX07CiAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgfQogICAgICAKICAgICAgLmxhbmd1YWdlLXNlbGVjdG9yIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNmI3MjgwIiwiIzljYTNhZiIpfTsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTsKICAgICAgICBmb250LWZhbWlseTogJHtOYX07CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIHBhZGRpbmc6IDRweCA4cHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgIH0KICAgICAgCiAgICAgIC5sYW5ndWFnZS1zZWxlY3Rvcjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmOWZhZmIiLCIjMWYyOTM3Iil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMzc0MTUxIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzM3NDE1MSIsIiNlNWU3ZWIiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5sYW5ndWFnZS1zZWxlY3Rvcjpmb2N1cyB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiIzljYTNhZiIsIiM2YjcyODAiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC8qIENvcHkgQnV0dG9uIC0gTWluaW1hbCAqLwogICAgICAuY29weS1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDRweDsKICAgICAgICBwYWRkaW5nOiA0cHggOHB4OwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM2YjcyODAiLCIjOWNhM2FmIil9OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LWZhbWlseTogJHtOYX07CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgIH0KICAgICAgCiAgICAgIC5jb3B5LWJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmOWZhZmIiLCIjMWYyOTM3Iil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMzc0MTUxIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzM3NDE1MSIsIiNlNWU3ZWIiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5jb3B5LWJ1dHRvbjphY3RpdmUgewogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45OCk7CiAgICAgIH0KICAgICAgCiAgICAgIC5jb3B5LWJ1dHRvbi5jb3BpZWQgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA1OTY2OSIsIiMxMGI5ODEiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5jb3B5LWljb24gewogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIG9wYWNpdHk6IDAuNzsKICAgICAgfQogICAgICAKICAgICAgLmNvcHktYnV0dG9uOmhvdmVyIC5jb3B5LWljb24gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KICAgICAgCiAgICAgIC5jb3B5LXRleHQgewogICAgICAgIG1pbi13aWR0aDogNDBweDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIH0KICAgICAgCiAgICAgIC8qIENvZGUgQm9keSAqLwogICAgICAuY29kZS1ib2R5IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZhZmFmYSIsIiMwYTBhMGEiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC8qIExpbmUgTnVtYmVycyAtIFN1YnRsZSAqLwogICAgICAubGluZS1udW1iZXJzIHsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICBwYWRkaW5nOiAxMnB4IDA7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgbWluLXdpZHRoOiA0MHB4OwogICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzM3NDE1MSIpfTsKICAgICAgfQogICAgICAKICAgICAgLmxpbmUtbnVtYmVyIHsKICAgICAgICBwYWRkaW5nOiAwIDEycHggMCA4cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjOWNhM2FmIiwiIzRiNTU2MyIpfTsKICAgICAgICBmb250LWZhbWlseTogJHskOH07CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICAgIGhlaWdodDogMjBweDsKICAgICAgfQogICAgICAKICAgICAgLyogQ29kZSBDb250ZW50ICovCiAgICAgIC5jb2RlLWNvbnRlbnQgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KICAgICAgCiAgICAgIC5jb2RlLXByZSB7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgIH0KICAgICAgCiAgICAgIC5jb2RlLWVkaXRvciB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4OwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBmb250LWZhbWlseTogJHskOH07CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzExMTgyNyIsIiNmOWZhZmIiKX07CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAgICAgICBtaW4taGVpZ2h0OiA2MHB4OwogICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgICB9CiAgICAgIAogICAgICAvKiBQbGFjZWhvbGRlciAqLwogICAgICAuY29kZS1lZGl0b3I6ZW1wdHk6OmJlZm9yZSB7CiAgICAgICAgY29udGVudDogIi8vIFR5cGUgb3IgcGFzdGUgY29kZSBoZXJlLi4uIjsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM5Y2EzYWYiLCIjNGI1NTYzIil9OwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CiAgICAgIAogICAgICAvKiBXaGVuIGVkaXRpbmcgKGZvY3VzZWQpLCBzaG93IGdyZXkgdGV4dCB3aXRob3V0IGhpZ2hsaWdodGluZyAqLwogICAgICAuY29kZS1ibG9jay1jb250YWluZXIuZWRpdGluZyAuY29kZS1lZGl0b3IgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzZiNzI4MCIsIiM5Y2EzYWYiKX0gIWltcG9ydGFudDsKICAgICAgfQogICAgICAKICAgICAgLmNvZGUtYmxvY2stY29udGFpbmVyLmVkaXRpbmcgLmNvZGUtZWRpdG9yICogewogICAgICAgIGNvbG9yOiBpbmhlcml0ICFpbXBvcnRhbnQ7CiAgICAgIH0KICAgICAgCiAgICAgIC8qIFN5bnRheCBIaWdobGlnaHRpbmcgLSBNdXRlZCBjb2xvcnMgKi8KICAgICAgLmNvZGUtZWRpdG9yIC5obGpzLWtleXdvcmQgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2RjMjYyNiIsIiNmODcxNzEiKX07CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgfQogICAgICAKICAgICAgLmNvZGUtZWRpdG9yIC5obGpzLXN0cmluZyB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDU5NjY5IiwiIzEwYjk4MSIpfTsKICAgICAgfQogICAgICAKICAgICAgLmNvZGUtZWRpdG9yIC5obGpzLW51bWJlciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjN2MzYWVkIiwiI2E3OGJmYSIpfTsKICAgICAgfQogICAgICAKICAgICAgLmNvZGUtZWRpdG9yIC5obGpzLWZ1bmN0aW9uIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMyNTYzZWIiLCIjNjBhNWZhIil9OwogICAgICB9CiAgICAgIAogICAgICAuY29kZS1lZGl0b3IgLmhsanMtY29tbWVudCB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNmI3MjgwIiwiIzZiNzI4MCIpfTsKICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgIH0KICAgICAgCiAgICAgIC5jb2RlLWVkaXRvciAuaGxqcy12YXJpYWJsZSwKICAgICAgLmNvZGUtZWRpdG9yIC5obGpzLWF0dHIgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2VhNTgwYyIsIiNmYjkyM2MiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5jb2RlLWVkaXRvciAuaGxqcy1jbGFzcywKICAgICAgLmNvZGUtZWRpdG9yIC5obGpzLXRpdGxlIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMyNTYzZWIiLCIjNjBhNWZhIil9OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIH0KICAgICAgCiAgICAgIC5jb2RlLWVkaXRvciAuaGxqcy1wYXJhbXMgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzM3NDE1MSIsIiNlNWU3ZWIiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5jb2RlLWVkaXRvciAuaGxqcy1idWlsdF9pbiB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjN2MzYWVkIiwiI2E3OGJmYSIpfTsKICAgICAgfQogICAgICAKICAgICAgLmNvZGUtZWRpdG9yIC5obGpzLWxpdGVyYWwgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzdjM2FlZCIsIiNhNzhiZmEiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5jb2RlLWVkaXRvciAuaGxqcy1tZXRhIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM2YjcyODAiLCIjOWNhM2FmIil9OwogICAgICB9CiAgICAgIAogICAgICAuY29kZS1lZGl0b3IgLmhsanMtcHVuY3R1YXRpb24gewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzM3NDE1MSIsIiNkMWQ1ZGIiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5jb2RlLWVkaXRvciAuaGxqcy10YWcgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2RjMjYyNiIsIiNmODcxNzEiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5jb2RlLWVkaXRvciAuaGxqcy1hdHRyaWJ1dGUgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzI1NjNlYiIsIiM2MGE1ZmEiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5jb2RlLWVkaXRvciAuaGxqcy1zZWxlY3Rvci10YWcgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2RjMjYyNiIsIiNmODcxNzEiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5jb2RlLWVkaXRvciAuaGxqcy1zZWxlY3Rvci1jbGFzcyB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMjU2M2ViIiwiIzYwYTVmYSIpfTsKICAgICAgfQogICAgICAKICAgICAgLmNvZGUtZWRpdG9yIC5obGpzLXNlbGVjdG9yLWlkIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3YzNhZWQiLCIjYTc4YmZhIil9OwogICAgICB9CiAgICAgIAogICAgICAvKiBTZWxlY3Rpb24gKi8KICAgICAgLmNvZGUtZWRpdG9yOjpzZWxlY3Rpb24sCiAgICAgIC5jb2RlLWVkaXRvciAqOjpzZWxlY3Rpb24gewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDk5LCAxMDIsIDI0MSwgMC4yKSIsInJnYmEoOTksIDEwMiwgMjQxLCAwLjMpIil9OwogICAgICB9CiAgICAgIAogICAgICAvKiBTY3JvbGxiYXIgc3R5bGluZyAtIE1pbmltYWwgKi8KICAgICAgLmNvZGUtY29udGVudDo6LXdlYmtpdC1zY3JvbGxiYXIgewogICAgICAgIGhlaWdodDogNnB4OwogICAgICB9CiAgICAgIAogICAgICAuY29kZS1jb250ZW50Ojotd2Via2l0LXNjcm9sbGJhci10cmFjayB7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgIH0KICAgICAgCiAgICAgIC5jb2RlLWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2QxZDVkYiIsIiM0YjU1NjMiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICB9CiAgICAgIAogICAgICAuY29kZS1jb250ZW50Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiM5Y2EzYWYiLCIjNmI3MjgwIil9OwogICAgICB9CiAgICBgfX19KTt2YXIgVFgsczNhPWcoKCk9PntZbCgpO3BlKCk7aXUoKTtEZCgpO1RYPWNsYXNzIGV4dGVuZHMgcGl7c3RhdGlje2kodGhpcywiTGlzdEJsb2NrSGFuZGxlciIpfXR5cGU9Imxpc3QiO2xhc3RLbm93bkN1cnNvclBvc2l0aW9uPTA7bGFzdFNlbGVjdGVkVGV4dD0iIjtzZWxlY3Rpb25IYW5kbGVyPW51bGw7cmVuZGVyKGUsdCl7bGV0IGE9dD8iIHNlbGVjdGVkIjoiIixuPShlLm1ldGFkYXRhPy5saXN0VHlwZXx8InVub3JkZXJlZCIpPT09Im9yZGVyZWQiPyJvbCI6InVsIixvPXRoaXMucmVuZGVyTGlzdENvbnRlbnQoZS5jb250ZW50LGUubWV0YWRhdGEpO3JldHVybmAKICAgICAgPGRpdgogICAgICAgIGNsYXNzPSJibG9jayBsaXN0JHthfSIKICAgICAgICBjb250ZW50ZWRpdGFibGU9InRydWUiCiAgICAgICAgZGF0YS1ibG9jay1pZD0iJHtlLmlkfSIKICAgICAgICBkYXRhLWJsb2NrLXR5cGU9IiR7ZS50eXBlfSIKICAgICAgPiR7b308L2Rpdj4KICAgIGB9cmVuZGVyTGlzdENvbnRlbnQoZSx0KXtpZighZSlyZXR1cm4iPHVsPjxsaT48L2xpPjwvdWw+IjtsZXQgcj0odD8ubGlzdFR5cGV8fCJ1bm9yZGVyZWQiKT09PSJvcmRlcmVkIj8ib2wiOiJ1bCIsbj1lLnNwbGl0KGAKYCkuZmlsdGVyKGw9PmwudHJpbSgpKTtpZihuLmxlbmd0aD09PTApcmV0dXJuYDwke3J9PjxsaT48L2xpPjwvJHtyfT5gO2xldCBvPW4ubWFwKGw9PmA8bGk+JHtsfTwvbGk+YCkuam9pbigiIik7cmV0dXJuYDwke3J9PiR7b308LyR7cn0+YH1zZXR1cChlLHQsYSl7bGV0IHI9ZS5xdWVyeVNlbGVjdG9yKCIuYmxvY2subGlzdCIpO2lmKCFyKXtjb25zb2xlLmVycm9yKCJMaXN0QmxvY2tIYW5kbGVyLnNldHVwOiBObyBsaXN0IGJsb2NrIGVsZW1lbnQgZm91bmQiKTtyZXR1cm59dC5jb250ZW50JiYhci5pbm5lckhUTUwmJihyLmlubmVySFRNTD10aGlzLnJlbmRlckxpc3RDb250ZW50KHQuY29udGVudCx0Lm1ldGFkYXRhKSksci5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsbj0+e2Eub25JbnB1dChuKTtsZXQgbz10aGlzLmdldEN1cnNvclBvc2l0aW9uKGUpO28hPT1udWxsJiYodGhpcy5sYXN0S25vd25DdXJzb3JQb3NpdGlvbj1vKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsbj0+e2xldCBvPXRoaXMuZ2V0Q3Vyc29yUG9zaXRpb24oZSk7aWYobyE9PW51bGwmJih0aGlzLmxhc3RLbm93bkN1cnNvclBvc2l0aW9uPW8pLG4ua2V5PT09IkVudGVyIiYmIW4uc2hpZnRLZXkpe2xldCBsPXdpbmRvdy5nZXRTZWxlY3Rpb24oKTtpZihsJiZsLnJhbmdlQ291bnQ+MCl7bGV0IGQ9bC5nZXRSYW5nZUF0KDApLnN0YXJ0Q29udGFpbmVyLnBhcmVudEVsZW1lbnQ/LmNsb3Nlc3QoImxpIik7aWYoZCYmZC50ZXh0Q29udGVudD09PSIiKXtuLnByZXZlbnREZWZhdWx0KCksYS5vbktleURvd24obik7cmV0dXJufX19YS5vbktleURvd24obil9KSxyLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwoKT0+e2Eub25Gb2N1cygpfSksci5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwoKT0+e2Eub25CbHVyKCl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoImNvbXBvc2l0aW9uc3RhcnQiLCgpPT57YS5vbkNvbXBvc2l0aW9uU3RhcnQoKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigiY29tcG9zaXRpb25lbmQiLCgpPT57YS5vbkNvbXBvc2l0aW9uRW5kKCl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLG49PntsZXQgbz10aGlzLmdldEN1cnNvclBvc2l0aW9uKGUpO28hPT1udWxsJiYodGhpcy5sYXN0S25vd25DdXJzb3JQb3NpdGlvbj1vKSxhLm9uTW91c2VVcD8uKG4pfSksci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsbj0+e3NldFRpbWVvdXQoKCk9PntsZXQgbz10aGlzLmdldEN1cnNvclBvc2l0aW9uKGUpO28hPT1udWxsJiYodGhpcy5sYXN0S25vd25DdXJzb3JQb3NpdGlvbj1vKX0sMCl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIixuPT57bGV0IG89dGhpcy5nZXRDdXJzb3JQb3NpdGlvbihlKTtvIT09bnVsbCYmKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb249byl9KSx0aGlzLnNldHVwU2VsZWN0aW9uSGFuZGxlcihlLHIsdCl9c2V0dXBTZWxlY3Rpb25IYW5kbGVyKGUsdCxhKXtsZXQgcj1pKCgpPT57bGV0IG89d2luZG93LmdldFNlbGVjdGlvbigpO2lmKCFvfHxvLnJhbmdlQ291bnQ9PT0wKXJldHVybjtsZXQgbD1vLnRvU3RyaW5nKCk7aWYobC5sZW5ndGg9PT0wKXt0aGlzLmxhc3RTZWxlY3RlZFRleHQmJih0aGlzLmxhc3RTZWxlY3RlZFRleHQ9IiIsdGhpcy5kaXNwYXRjaFNlbGVjdGlvbkV2ZW50KGUse3RleHQ6IiIsYmxvY2tJZDphLmlkLGhhc1NlbGVjdGlvbjohMX0pKTtyZXR1cm59bGV0IHA9dC5nZXRSb290Tm9kZSgpLmhvc3QsdT1wPy5jbG9zZXN0KCJkZWVzLWlucHV0LXd5c2l3eWciKT8uc2hhZG93Um9vdCxjPXA/LnNoYWRvd1Jvb3QsYj1bXTt1JiZiLnB1c2godSksYyYmYi5wdXNoKGMpO2xldCB2PVN0LmdldFNlbGVjdGlvbkluZm8oLi4uYik7aWYoIXYpcmV0dXJuO2xldCB4PVN0LmNvbnRhaW5zQWNyb3NzU2hhZG93RE9NKHQsdi5zdGFydENvbnRhaW5lciksbT1TdC5jb250YWluc0Fjcm9zc1NoYWRvd0RPTSh0LHYuZW5kQ29udGFpbmVyKTtpZih4fHxtKXtpZihsIT09dGhpcy5sYXN0U2VsZWN0ZWRUZXh0KXt0aGlzLmxhc3RTZWxlY3RlZFRleHQ9bDtsZXQgZj1TdC5jcmVhdGVSYW5nZUZyb21JbmZvKHYpLHk9Zi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0aGlzLmRpc3BhdGNoU2VsZWN0aW9uRXZlbnQoZSx7dGV4dDpsLnRyaW0oKSxibG9ja0lkOmEuaWQscmFuZ2U6ZixyZWN0OnksaGFzU2VsZWN0aW9uOiEwfSl9fWVsc2UgdGhpcy5sYXN0U2VsZWN0ZWRUZXh0JiYodGhpcy5sYXN0U2VsZWN0ZWRUZXh0PSIiLHRoaXMuZGlzcGF0Y2hTZWxlY3Rpb25FdmVudChlLHt0ZXh0OiIiLGJsb2NrSWQ6YS5pZCxoYXNTZWxlY3Rpb246ITF9KSl9LCJjaGVja1NlbGVjdGlvbiIpO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdGlvbmNoYW5nZSIsciksdGhpcy5zZWxlY3Rpb25IYW5kbGVyPXI7bGV0IG49dC5nZXRSb290Tm9kZSgpLmhvc3Q7aWYobil7bGV0IG89bi5kaXNjb25uZWN0ZWRDYWxsYmFjayxsPXRoaXM7bi5kaXNjb25uZWN0ZWRDYWxsYmFjaz1hc3luYyBmdW5jdGlvbigpe2wuc2VsZWN0aW9uSGFuZGxlciYmKGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlbGVjdGlvbmNoYW5nZSIsbC5zZWxlY3Rpb25IYW5kbGVyKSxsLnNlbGVjdGlvbkhhbmRsZXI9bnVsbCksbyYmYXdhaXQgby5jYWxsKG4pfX19ZGlzcGF0Y2hTZWxlY3Rpb25FdmVudChlLHQpe2xldCBhPW5ldyBDdXN0b21FdmVudCgiYmxvY2stdGV4dC1zZWxlY3RlZCIse2RldGFpbDp0LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KTtlLmRpc3BhdGNoRXZlbnQoYSl9Z2V0U3R5bGVzKCl7cmV0dXJuYAogICAgICAvKiBMaXN0IHNwZWNpZmljIHN0eWxlcyAqLwogICAgICAuYmxvY2subGlzdCB7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgfQogICAgICAKICAgICAgLmJsb2NrLmxpc3QgdWwsCiAgICAgIC5ibG9jay5saXN0IG9sIHsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAyNHB4OwogICAgICB9CiAgICAgIAogICAgICAuYmxvY2subGlzdCBsaSB7CiAgICAgICAgbWFyZ2luOiA0cHggMDsKICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICB9CiAgICAgIAogICAgICAuYmxvY2subGlzdCBsaTpsYXN0LWNoaWxkIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICB9CiAgICBgfWdldFBsYWNlaG9sZGVyKCl7cmV0dXJuIiJ9Z2V0Q3Vyc29yUG9zaXRpb24oZSx0KXtsZXQgYT1lLnF1ZXJ5U2VsZWN0b3IoIi5ibG9jay5saXN0Iik7aWYoIWEpcmV0dXJuIG51bGw7bGV0IG89dD8uY29tcG9uZW50Py5jbG9zZXN0KCJkZWVzLWlucHV0LXd5c2l3eWciKT8uc2hhZG93Um9vdCxsPXQ/LnNoYWRvd1Jvb3QscD1bXTtvJiZwLnB1c2gobyksbCYmcC5wdXNoKGwpO2xldCBkPVN0LmdldFNlbGVjdGlvbkluZm8oLi4ucCk7aWYoIWR8fCFTdC5jb250YWluc0Fjcm9zc1NoYWRvd0RPTShhLGQuc3RhcnRDb250YWluZXIpKXJldHVybiBudWxsO2xldCB1PWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7cmV0dXJuIHUuc2VsZWN0Tm9kZUNvbnRlbnRzKGEpLHUuc2V0RW5kKGQuc3RhcnRDb250YWluZXIsZC5zdGFydE9mZnNldCksdS50b1N0cmluZygpLmxlbmd0aH1nZXRDb250ZW50KGUsdCl7bGV0IGE9ZS5xdWVyeVNlbGVjdG9yKCIuYmxvY2subGlzdCIpO2lmKCFhKXJldHVybiIiO2xldCByPWEucXVlcnlTZWxlY3RvckFsbCgibGkiKTtyZXR1cm4gQXJyYXkuZnJvbShyKS5tYXAobz0+by50ZXh0Q29udGVudHx8IiIpLmpvaW4oYApgKX1zZXRDb250ZW50KGUsdCxhKXtsZXQgcj1lLnF1ZXJ5U2VsZWN0b3IoIi5ibG9jay5saXN0Iik7aWYoIXIpcmV0dXJuO2xldCBuPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT1yfHxlLnNoYWRvd1Jvb3Q/LmFjdGl2ZUVsZW1lbnQ9PT1yLGw9ci5xdWVyeVNlbGVjdG9yKCJ1bCwgb2wiKT8udGFnTmFtZT09PSJPTCI7ci5pbm5lckhUTUw9dGhpcy5yZW5kZXJMaXN0Q29udGVudCh0LHtsaXN0VHlwZTpsPyJvcmRlcmVkIjoidW5vcmRlcmVkIn0pLG4mJnIuZm9jdXMoKX1zZXRDdXJzb3JUb1N0YXJ0KGUsdCl7bGV0IGE9ZS5xdWVyeVNlbGVjdG9yKCIuYmxvY2subGlzdCIpO2lmKCFhKXJldHVybjtsZXQgcj1hLnF1ZXJ5U2VsZWN0b3IoImxpIik7aWYocil7bGV0IG49dGhpcy5nZXRGaXJzdFRleHROb2RlKHIpO2lmKG4pe2xldCBvPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCksbD13aW5kb3cuZ2V0U2VsZWN0aW9uKCk7by5zZXRTdGFydChuLDApLG8uc2V0RW5kKG4sMCksbD8ucmVtb3ZlQWxsUmFuZ2VzKCksbD8uYWRkUmFuZ2Uobyl9fX1zZXRDdXJzb3JUb0VuZChlLHQpe2xldCBhPWUucXVlcnlTZWxlY3RvcigiLmJsb2NrLmxpc3QiKTtpZighYSlyZXR1cm47bGV0IHI9YS5xdWVyeVNlbGVjdG9yKCJsaTpsYXN0LWNoaWxkIik7aWYocil7bGV0IG49dGhpcy5nZXRMYXN0VGV4dE5vZGUocik7aWYobil7bGV0IG89ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKSxsPXdpbmRvdy5nZXRTZWxlY3Rpb24oKSxwPW4udGV4dENvbnRlbnQ/Lmxlbmd0aHx8MDtvLnNldFN0YXJ0KG4scCksby5zZXRFbmQobixwKSxsPy5yZW1vdmVBbGxSYW5nZXMoKSxsPy5hZGRSYW5nZShvKX19fWdldEZpcnN0VGV4dE5vZGUoZSl7aWYoZS5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFKXJldHVybiBlO2ZvcihsZXQgdD0wO3Q8ZS5jaGlsZE5vZGVzLmxlbmd0aDt0Kyspe2xldCBhPXRoaXMuZ2V0Rmlyc3RUZXh0Tm9kZShlLmNoaWxkTm9kZXNbdF0pO2lmKGEpcmV0dXJuIGF9cmV0dXJuIG51bGx9Z2V0TGFzdFRleHROb2RlKGUpe2lmKGUubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERSlyZXR1cm4gZTtmb3IobGV0IHQ9ZS5jaGlsZE5vZGVzLmxlbmd0aC0xO3Q+PTA7dC0tKXtsZXQgYT10aGlzLmdldExhc3RUZXh0Tm9kZShlLmNoaWxkTm9kZXNbdF0pO2lmKGEpcmV0dXJuIGF9cmV0dXJuIG51bGx9Zm9jdXMoZSx0KXtsZXQgYT1lLnF1ZXJ5U2VsZWN0b3IoIi5ibG9jay5saXN0Iik7YSYmKGEuaGFzQXR0cmlidXRlKCJjb250ZW50ZWRpdGFibGUiKXx8YS5zZXRBdHRyaWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIsInRydWUiKSxhLmZvY3VzKCksZG9jdW1lbnQuYWN0aXZlRWxlbWVudCE9PWEmJmUuc2hhZG93Um9vdD8uYWN0aXZlRWxlbWVudCE9PWEmJlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnthLmZvY3VzKCl9KSl9Zm9jdXNXaXRoQ3Vyc29yKGUsdD0iZW5kIixhKXtsZXQgcj1lLnF1ZXJ5U2VsZWN0b3IoIi5ibG9jay5saXN0Iik7aWYoIXIpcmV0dXJuO3IuaGFzQXR0cmlidXRlKCJjb250ZW50ZWRpdGFibGUiKXx8ci5zZXRBdHRyaWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIsInRydWUiKSxyLmZvY3VzKCk7bGV0IG49aSgoKT0+e3Q9PT0ic3RhcnQiP3RoaXMuc2V0Q3Vyc29yVG9TdGFydChlLGEpOnQ9PT0iZW5kIj90aGlzLnNldEN1cnNvclRvRW5kKGUsYSk6dHlwZW9mIHQ9PSJudW1iZXIiJiZ0aGlzLnNldEN1cnNvclRvRW5kKGUsYSl9LCJzZXRDdXJzb3IiKTtkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09cnx8ZS5zaGFkb3dSb290Py5hY3RpdmVFbGVtZW50PT09cj9uKCk6UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+eyhkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09cnx8ZS5zaGFkb3dSb290Py5hY3RpdmVFbGVtZW50PT09cikmJm4oKX0pfWdldFNwbGl0Q29udGVudChlLHQpe3JldHVybiBlLnF1ZXJ5U2VsZWN0b3IoIi5ibG9jay5saXN0IiksbnVsbH19fSk7dmFyICRYLGkzYT1nKCgpPT57WWwoKTtwZSgpOyRYPWNsYXNzIGV4dGVuZHMgcGl7c3RhdGlje2kodGhpcywiSW1hZ2VCbG9ja0hhbmRsZXIiKX10eXBlPSJpbWFnZSI7cmVuZGVyKGUsdCl7bGV0IGE9ZS5tZXRhZGF0YT8udXJsLHI9ZS5jb250ZW50fHwiSW1hZ2UiLG49ZS5tZXRhZGF0YT8ubG9hZGluZztyZXR1cm5gCiAgICAgIDxkaXYgY2xhc3M9ImltYWdlLWJsb2NrLWNvbnRhaW5lciR7dD8iIHNlbGVjdGVkIjoiIn0iIAogICAgICAgICAgIGRhdGEtYmxvY2staWQ9IiR7ZS5pZH0iCiAgICAgICAgICAgZGF0YS1oYXMtaW1hZ2U9IiR7ISFhfSIKICAgICAgICAgICB0YWJpbmRleD0iMCI+CiAgICAgICAgJHtuP3RoaXMucmVuZGVyTG9hZGluZygpOmE/dGhpcy5yZW5kZXJJbWFnZShhLHIpOnRoaXMucmVuZGVyUGxhY2Vob2xkZXIoKX0KICAgICAgICA8aW5wdXQgdHlwZT0iZmlsZSIgCiAgICAgICAgICAgICAgIGNsYXNzPSJpbWFnZS1maWxlLWlucHV0IiAKICAgICAgICAgICAgICAgYWNjZXB0PSJpbWFnZS8qIiAKICAgICAgICAgICAgICAgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiAvPgogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyUGxhY2Vob2xkZXIoKXtyZXR1cm5gCiAgICAgIDxkaXYgY2xhc3M9ImltYWdlLXVwbG9hZC1wbGFjZWhvbGRlciIgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiPgogICAgICAgIDxkaXYgY2xhc3M9InVwbG9hZC1pY29uIiBzdHlsZT0icG9pbnRlci1ldmVudHM6IG5vbmU7Ij4KICAgICAgICAgIDxzdmcgd2lkdGg9IjQ4IiBoZWlnaHQ9IjQ4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuNSI+CiAgICAgICAgICAgIDxyZWN0IHg9IjMiIHk9IjMiIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgcng9IjIiIHJ5PSIyIi8+CiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjguNSIgY3k9IjguNSIgcj0iMS41Ii8+CiAgICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9IjIxIDE1IDE2IDEwIDUgMjEiLz4KICAgICAgICAgIDwvc3ZnPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InVwbG9hZC10ZXh0IiBzdHlsZT0icG9pbnRlci1ldmVudHM6IG5vbmU7Ij5DbGljayB0byB1cGxvYWQgYW4gaW1hZ2U8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJ1cGxvYWQtaGludCIgc3R5bGU9InBvaW50ZXItZXZlbnRzOiBub25lOyI+b3IgZHJhZyBhbmQgZHJvcDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVySW1hZ2UoZSx0KXtyZXR1cm5gCiAgICAgIDxkaXYgY2xhc3M9ImltYWdlLWNvbnRhaW5lciI+CiAgICAgICAgPGltZyBzcmM9IiR7ZX0iIGFsdD0iJHt0aGlzLmVzY2FwZUh0bWwodCl9IiAvPgogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyTG9hZGluZygpe3JldHVybmAKICAgICAgPGRpdiBjbGFzcz0iaW1hZ2UtbG9hZGluZyI+CiAgICAgICAgPGRpdiBjbGFzcz0ibG9hZGluZy1zcGlubmVyIj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJsb2FkaW5nLXRleHQiPlVwbG9hZGluZyBpbWFnZS4uLjwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9c2V0dXAoZSx0LGEpe2xldCByPWUucXVlcnlTZWxlY3RvcigiLmltYWdlLWJsb2NrLWNvbnRhaW5lciIpLG49ZS5xdWVyeVNlbGVjdG9yKCIuaW1hZ2UtZmlsZS1pbnB1dCIpO2lmKCFyKXtjb25zb2xlLmVycm9yKCJJbWFnZUJsb2NrSGFuZGxlcjogQ291bGQgbm90IGZpbmQgY29udGFpbmVyIik7cmV0dXJufWlmKCFuKXtjb25zb2xlLmVycm9yKCJJbWFnZUJsb2NrSGFuZGxlcjogQ291bGQgbm90IGZpbmQgZmlsZSBpbnB1dCIpO3JldHVybn1sZXQgbz1yLnF1ZXJ5U2VsZWN0b3IoIi5pbWFnZS11cGxvYWQtcGxhY2Vob2xkZXIiKTtvJiZvLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixsPT57bC5wcmV2ZW50RGVmYXVsdCgpLGwuc3RvcFByb3BhZ2F0aW9uKCksY29uc29sZS5sb2coIkltYWdlQmxvY2tIYW5kbGVyOiBQbGFjZWhvbGRlciBjbGlja2VkLCBvcGVuaW5nIGZpbGUgc2VsZWN0b3IiKSxuLmNsaWNrKCl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e2Eub25Gb2N1cygpfSksbi5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLGFzeW5jIGw9PntsZXQgZD1sLnRhcmdldC5maWxlcz8uWzBdO2QmJihjb25zb2xlLmxvZygiSW1hZ2VCbG9ja0hhbmRsZXI6IEZpbGUgc2VsZWN0ZWQ6IixkLm5hbWUpLGF3YWl0IHRoaXMuaGFuZGxlRmlsZVVwbG9hZChkLHQsYSkpfSksci5hZGRFdmVudExpc3RlbmVyKCJkcmFnb3ZlciIsbD0+e2wucHJldmVudERlZmF1bHQoKSxsLnN0b3BQcm9wYWdhdGlvbigpLHQubWV0YWRhdGE/LnVybHx8ci5jbGFzc0xpc3QuYWRkKCJkcmFnLW92ZXIiKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ2xlYXZlIixsPT57bC5wcmV2ZW50RGVmYXVsdCgpLGwuc3RvcFByb3BhZ2F0aW9uKCksci5jbGFzc0xpc3QucmVtb3ZlKCJkcmFnLW92ZXIiKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigiZHJvcCIsYXN5bmMgbD0+e2wucHJldmVudERlZmF1bHQoKSxsLnN0b3BQcm9wYWdhdGlvbigpLHIuY2xhc3NMaXN0LnJlbW92ZSgiZHJhZy1vdmVyIik7bGV0IHA9bC5kYXRhVHJhbnNmZXI/LmZpbGVzWzBdO3AmJnAudHlwZS5zdGFydHNXaXRoKCJpbWFnZS8iKSYmIXQubWV0YWRhdGE/LnVybCYmYXdhaXQgdGhpcy5oYW5kbGVGaWxlVXBsb2FkKHAsdCxhKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCgpPT5hLm9uRm9jdXMoKSksci5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwoKT0+YS5vbkJsdXIoKSksci5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixsPT57aWYoKGwua2V5PT09IkRlbGV0ZSJ8fGwua2V5PT09IkJhY2tzcGFjZSIpJiZ0Lm1ldGFkYXRhPy51cmwpe3QubWV0YWRhdGEudXJsPXZvaWQgMCx0Lm1ldGFkYXRhLmxvYWRpbmc9ITEsdC5jb250ZW50PSIiLGEub25JbnB1dChuZXcgSW5wdXRFdmVudCgiaW5wdXQiKSk7cmV0dXJufWEub25LZXlEb3duKGwpfSl9YXN5bmMgaGFuZGxlRmlsZVVwbG9hZChlLHQsYSl7aWYoY29uc29sZS5sb2coIkltYWdlQmxvY2tIYW5kbGVyOiBTdGFydGluZyBmaWxlIHVwbG9hZCIse2ZpbGVOYW1lOmUubmFtZSxmaWxlU2l6ZTplLnNpemUsYmxvY2tJZDp0LmlkfSksIWUudHlwZS5zdGFydHNXaXRoKCJpbWFnZS8iKSl7Y29uc29sZS5lcnJvcigiSW52YWxpZCBmaWxlIHR5cGU6IixlLnR5cGUpO3JldHVybn1sZXQgcj0xMCoxMDI0KjEwMjQ7aWYoZS5zaXplPnIpe2NvbnNvbGUuZXJyb3IoIkZpbGUgdG9vIGxhcmdlLiBNYXhpbXVtIHNpemUgaXMgMTBNQiIpO3JldHVybn10Lm1ldGFkYXRhfHwodC5tZXRhZGF0YT17fSksdC5tZXRhZGF0YS5sb2FkaW5nPSEwLHQubWV0YWRhdGEuZmlsZU5hbWU9ZS5uYW1lLHQubWV0YWRhdGEuZmlsZVNpemU9ZS5zaXplLHQubWV0YWRhdGEubWltZVR5cGU9ZS50eXBlLGNvbnNvbGUubG9nKCJJbWFnZUJsb2NrSGFuZGxlcjogU2V0IGxvYWRpbmcgc3RhdGUsIHJlcXVlc3RpbmcgdXBkYXRlIiksYS5vblJlcXVlc3RVcGRhdGU/LigpO3RyeXtsZXQgbj1hd2FpdCB0aGlzLmZpbGVUb0RhdGFVcmwoZSk7dC5tZXRhZGF0YS51cmw9bix0Lm1ldGFkYXRhLmxvYWRpbmc9ITE7bGV0IG89ZS5uYW1lLnJlcGxhY2UoL1wuW14vLl0rJC8sIiIpO3QuY29udGVudD1vLGNvbnNvbGUubG9nKCJJbWFnZUJsb2NrSGFuZGxlcjogVXBsb2FkIGNvbXBsZXRlLCByZXF1ZXN0aW5nIHVwZGF0ZSIse2hhc1VybDohIXQubWV0YWRhdGEudXJsLHVybExlbmd0aDpuLmxlbmd0aCxhbHRUZXh0OnQuY29udGVudH0pLGEub25SZXF1ZXN0VXBkYXRlPy4oKX1jYXRjaChuKXtjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gdXBsb2FkIGltYWdlOiIsbiksdC5tZXRhZGF0YS5sb2FkaW5nPSExLGEub25SZXF1ZXN0VXBkYXRlPy4oKX19ZmlsZVRvRGF0YVVybChlKXtyZXR1cm4gbmV3IFByb21pc2UoKHQsYSk9PntsZXQgcj1uZXcgRmlsZVJlYWRlcjtyLm9ubG9hZD1uPT57bGV0IG89bi50YXJnZXQ/LnJlc3VsdDt0eXBlb2Ygbz09InN0cmluZyI/dChvKTphKG5ldyBFcnJvcigiRmFpbGVkIHRvIHJlYWQgZmlsZSIpKX0sci5vbmVycm9yPWEsci5yZWFkQXNEYXRhVVJMKGUpfSl9ZXNjYXBlSHRtbChlKXtsZXQgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdC50ZXh0Q29udGVudD1lLHQuaW5uZXJIVE1MfWdldENvbnRlbnQoZSl7cmV0dXJuIHRoaXMuZ2V0QmxvY2tGcm9tRWxlbWVudChlKT8uY29udGVudHx8IiJ9c2V0Q29udGVudChlLHQpe2xldCBhPXRoaXMuZ2V0QmxvY2tGcm9tRWxlbWVudChlKTthJiYoYS5jb250ZW50PXQpfWdldEJsb2NrRnJvbUVsZW1lbnQoZSl7bGV0IGE9ZS5xdWVyeVNlbGVjdG9yKCIuaW1hZ2UtYmxvY2stY29udGFpbmVyIik/LmdldEF0dHJpYnV0ZSgiZGF0YS1ibG9jay1pZCIpO3JldHVybiBhP3tpZDphLHR5cGU6ImltYWdlIixjb250ZW50OiIiLG1ldGFkYXRhOnt9fTpudWxsfWdldEN1cnNvclBvc2l0aW9uKGUpe3JldHVybiBudWxsfXNldEN1cnNvclRvU3RhcnQoZSl7dGhpcy5mb2N1cyhlKX1zZXRDdXJzb3JUb0VuZChlKXt0aGlzLmZvY3VzKGUpfWZvY3VzKGUpe2UucXVlcnlTZWxlY3RvcigiLmltYWdlLWJsb2NrLWNvbnRhaW5lciIpPy5mb2N1cygpfWZvY3VzV2l0aEN1cnNvcihlLHQ9ImVuZCIpe3RoaXMuZm9jdXMoZSl9Z2V0U3BsaXRDb250ZW50KGUpe3JldHVybiBudWxsfWdldFN0eWxlcygpe3JldHVybmAKICAgICAgLyogSW1hZ2UgQmxvY2sgQ29udGFpbmVyICovCiAgICAgIC5pbWFnZS1ibG9jay1jb250YWluZXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBtYXJnaW46IDEycHggMDsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQogICAgICAKICAgICAgLmltYWdlLWJsb2NrLWNvbnRhaW5lci5zZWxlY3RlZCB7CiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4ICR7aC5iZFRoZW1lKCIjNjM2NmYxIiwiIzgxOGNmOCIpfTsKICAgICAgfQogICAgICAKICAgICAgLyogVXBsb2FkIFBsYWNlaG9sZGVyICovCiAgICAgIC5pbWFnZS11cGxvYWQtcGxhY2Vob2xkZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDQ4cHggMjRweDsKICAgICAgICBib3JkZXI6IDJweCBkYXNoZWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMzc0MTUxIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZhZmFmYSIsIiMwYTBhMGEiKX07CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgIH0KICAgICAgCiAgICAgIC5pbWFnZS1ibG9jay1jb250YWluZXI6aG92ZXIgLmltYWdlLXVwbG9hZC1wbGFjZWhvbGRlciB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiIzljYTNhZiIsIiM2YjcyODAiKX07CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmOWZhZmIiLCIjMTExODI3Iil9OwogICAgICB9CiAgICAgIAogICAgICAuaW1hZ2UtYmxvY2stY29udGFpbmVyLmRyYWctb3ZlciAuaW1hZ2UtdXBsb2FkLXBsYWNlaG9sZGVyIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjNjM2NmYxIiwiIzgxOGNmOCIpfTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2VmZjZmZiIsIiMxZTFiNGIiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC51cGxvYWQtaWNvbiB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM5Y2EzYWYiLCIjNGI1NTYzIil9OwogICAgICB9CiAgICAgIAogICAgICAudXBsb2FkLXRleHQgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzM3NDE1MSIsIiNlNWU3ZWIiKX07CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4OwogICAgICB9CiAgICAgIAogICAgICAudXBsb2FkLWhpbnQgewogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM5Y2EzYWYiLCIjNmI3MjgwIil9OwogICAgICB9CiAgICAgIAogICAgICAvKiBJbWFnZSBDb250YWluZXIgKi8KICAgICAgLmltYWdlLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIG1pbi1oZWlnaHQ6IDIwMHB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjlmYWZiIiwiIzExMTgyNyIpfTsKICAgICAgfQogICAgICAKICAgICAgLmltYWdlLWNvbnRhaW5lciBpbWcgewogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IGF1dG87CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICB9CiAgICAgIAogICAgICAvKiBMb2FkaW5nIFN0YXRlICovCiAgICAgIC5pbWFnZS1sb2FkaW5nIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiA0OHB4IDI0cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmYWZhZmEiLCIjMGEwYTBhIil9OwogICAgICB9CiAgICAgIAogICAgICAubG9hZGluZy1zcGlubmVyIHsKICAgICAgICB3aWR0aDogMzJweDsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgYm9yZGVyOiAzcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMzc0MTUxIil9OwogICAgICAgIGJvcmRlci10b3AtY29sb3I6ICR7aC5iZFRoZW1lKCIjNjM2NmYxIiwiIzgxOGNmOCIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYW5pbWF0aW9uOiBzcGluIDAuOHMgbGluZWFyIGluZmluaXRlOwogICAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7CiAgICAgIH0KICAgICAgCiAgICAgIEBrZXlmcmFtZXMgc3BpbiB7CiAgICAgICAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9CiAgICAgIH0KICAgICAgCiAgICAgIC5sb2FkaW5nLXRleHQgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM2YjcyODAiLCIjOWNhM2FmIil9OwogICAgICB9CiAgICAgIAogICAgICAvKiBGaWxlIGlucHV0IGhpZGRlbiAqLwogICAgICAuaW1hZ2UtZmlsZS1pbnB1dCB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICB9CiAgICBgfX19KTt2YXIgRFgscjNhPWcoKCk9PntZbCgpO3BlKCk7RFg9Y2xhc3MgZXh0ZW5kcyBwaXtzdGF0aWN7aSh0aGlzLCJZb3VUdWJlQmxvY2tIYW5kbGVyIil9dHlwZT0ieW91dHViZSI7cmVuZGVyKGUsdCl7bGV0IGE9ZS5tZXRhZGF0YT8udmlkZW9JZCxyPWUubWV0YWRhdGE/LnVybHx8IiI7cmV0dXJuYAogICAgICA8ZGl2IGNsYXNzPSJ5b3V0dWJlLWJsb2NrLWNvbnRhaW5lciR7dD8iIHNlbGVjdGVkIjoiIn0iIAogICAgICAgICAgIGRhdGEtYmxvY2staWQ9IiR7ZS5pZH0iCiAgICAgICAgICAgZGF0YS1oYXMtdmlkZW89IiR7ISFhfSI+CiAgICAgICAgJHthP3RoaXMucmVuZGVyVmlkZW8oYSk6dGhpcy5yZW5kZXJQbGFjZWhvbGRlcihyKX0KICAgICAgPC9kaXY+CiAgICBgfXJlbmRlclBsYWNlaG9sZGVyKGUpe3JldHVybmAKICAgICAgPGRpdiBjbGFzcz0ieW91dHViZS1wbGFjZWhvbGRlciI+CiAgICAgICAgPGRpdiBjbGFzcz0icGxhY2Vob2xkZXItaWNvbiI+CiAgICAgICAgICA8c3ZnIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiPgogICAgICAgICAgICA8cGF0aCBkPSJNMTkuNjE1IDMuMTg0Yy0zLjYwNC0uMjQ2LTExLjYzMS0uMjQ1LTE1LjIzIDAtMy44OTcuMjY2LTQuMzU2IDIuNjItNC4zODUgOC44MTYuMDI5IDYuMTg1LjQ4NCA4LjU0OSA0LjM4NSA4LjgxNiAzLjYuMjQ1IDExLjYyNi4yNDYgMTUuMjMgMCAzLjg5Ny0uMjY2IDQuMzU2LTIuNjIgNC4zODUtOC44MTYtLjAyOS02LjE4NS0uNDg0LTguNTQ5LTQuMzg1LTguODE2em0tMTAuNjE1IDEyLjgxNnYtOGw4IDMuOTkzLTggNC4wMDd6Ii8+CiAgICAgICAgICA8L3N2Zz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJwbGFjZWhvbGRlci10ZXh0Ij5FbnRlciBZb3VUdWJlIFVSTDwvZGl2PgogICAgICAgIDxpbnB1dCB0eXBlPSJ1cmwiIAogICAgICAgICAgICAgICBjbGFzcz0ieW91dHViZS11cmwtaW5wdXQiIAogICAgICAgICAgICAgICBwbGFjZWhvbGRlcj0iaHR0cHM6Ly95b3V0dWJlLmNvbS93YXRjaD92PS4uLiIgCiAgICAgICAgICAgICAgIHZhbHVlPSIke3RoaXMuZXNjYXBlSHRtbChlKX0iIC8+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0ieW91dHViZS1lbWJlZC1idG4iPkVtYmVkIFZpZGVvPC9idXR0b24+CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJWaWRlbyhlKXtyZXR1cm5gCiAgICAgIDxkaXYgY2xhc3M9InlvdXR1YmUtY29udGFpbmVyIj4KICAgICAgICA8aWZyYW1lIAogICAgICAgICAgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC8ke2V9IgogICAgICAgICAgZnJhbWVib3JkZXI9IjAiCiAgICAgICAgICBhbGxvdz0iYWNjZWxlcm9tZXRlcjsgYXV0b3BsYXk7IGNsaXBib2FyZC13cml0ZTsgZW5jcnlwdGVkLW1lZGlhOyBneXJvc2NvcGU7IHBpY3R1cmUtaW4tcGljdHVyZSIKICAgICAgICAgIGFsbG93ZnVsbHNjcmVlbgogICAgICAgID48L2lmcmFtZT4KICAgICAgPC9kaXY+CiAgICBgfXNldHVwKGUsdCxhKXtsZXQgcj1lLnF1ZXJ5U2VsZWN0b3IoIi55b3V0dWJlLWJsb2NrLWNvbnRhaW5lciIpO2lmKCFyKXJldHVybjtpZih0Lm1ldGFkYXRhPy52aWRlb0lkKXtyLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCIwIiksci5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsKCk9PmEub25Gb2N1cygpKSxyLmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCgpPT5hLm9uQmx1cigpKSxyLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLGw9PnsobC5rZXk9PT0iRGVsZXRlInx8bC5rZXk9PT0iQmFja3NwYWNlIikmJmwucHJldmVudERlZmF1bHQoKSxhLm9uS2V5RG93bihsKX0pO3JldHVybn1sZXQgbj1lLnF1ZXJ5U2VsZWN0b3IoIi55b3V0dWJlLXVybC1pbnB1dCIpLG89ZS5xdWVyeVNlbGVjdG9yKCIueW91dHViZS1lbWJlZC1idG4iKTshbnx8IW98fChuLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwoKT0+YS5vbkZvY3VzKCkpLG4uYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsKCk9PmEub25CbHVyKCkpLG8uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57dGhpcy5lbWJlZFZpZGVvKG4udmFsdWUsdCxhKX0pLG4uYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsbD0+e2wua2V5PT09IkVudGVyIj8obC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuZW1iZWRWaWRlbyhuLnZhbHVlLHQsYSkpOmwua2V5PT09IkVzY2FwZSImJihsLnByZXZlbnREZWZhdWx0KCksbi5ibHVyKCkpfSksbi5hZGRFdmVudExpc3RlbmVyKCJwYXN0ZSIsbD0+e3NldFRpbWVvdXQoKCk9PntsZXQgcD1uLnZhbHVlO3RoaXMuZXh0cmFjdFlvdVR1YmVWaWRlb0lkKHApJiZ0aGlzLmVtYmVkVmlkZW8ocCx0LGEpfSwwKX0pLG4uYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCgpPT57dC5tZXRhZGF0YXx8KHQubWV0YWRhdGE9e30pLHQubWV0YWRhdGEudXJsPW4udmFsdWV9KSl9ZW1iZWRWaWRlbyhlLHQsYSl7bGV0IHI9dGhpcy5leHRyYWN0WW91VHViZVZpZGVvSWQoZSk7aWYoIXIpe2NvbnNvbGUuZXJyb3IoIkludmFsaWQgWW91VHViZSBVUkwiKTtyZXR1cm59dC5tZXRhZGF0YXx8KHQubWV0YWRhdGE9e30pLHQubWV0YWRhdGEudmlkZW9JZD1yLHQubWV0YWRhdGEudXJsPWUsdC5jb250ZW50PWBZb3VUdWJlIFZpZGVvOiAke3J9YCxhLm9uUmVxdWVzdFVwZGF0ZT8uKCl9ZXh0cmFjdFlvdVR1YmVWaWRlb0lkKGUpe2xldCB0PVsvKD86eW91dHViZVwuY29tXC8oPzpbXlwvXStcLy4rXC98KD86dnxlKD86bWJlZCk/KVwvfC4qWz8mXXY9KXx5b3V0dVwuYmVcLykoW14iJj9cLyBdezExfSkvLC95b3V0dWJlXC5jb21cL2VtYmVkXC8oW14iJj9cLyBdezExfSkvLC95b3V0dWJlXC5jb21cL3dhdGNoXD92PShbXiImP1wvIF17MTF9KS8sL3lvdXR1XC5iZVwvKFteIiY/XC8gXXsxMX0pL107Zm9yKGxldCBhIG9mIHQpe2xldCByPWUubWF0Y2goYSk7aWYocilyZXR1cm4gclsxXX1yZXR1cm4gbnVsbH1lc2NhcGVIdG1sKGUpe2xldCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0LnRleHRDb250ZW50PWUsdC5pbm5lckhUTUx9Z2V0Q29udGVudChlKXtyZXR1cm4gdGhpcy5nZXRCbG9ja0Zyb21FbGVtZW50KGUpPy5jb250ZW50fHwiIn1zZXRDb250ZW50KGUsdCl7bGV0IGE9dGhpcy5nZXRCbG9ja0Zyb21FbGVtZW50KGUpO2EmJihhLmNvbnRlbnQ9dCl9Z2V0QmxvY2tGcm9tRWxlbWVudChlKXtsZXQgYT1lLnF1ZXJ5U2VsZWN0b3IoIi55b3V0dWJlLWJsb2NrLWNvbnRhaW5lciIpPy5nZXRBdHRyaWJ1dGUoImRhdGEtYmxvY2staWQiKTtyZXR1cm4gYT97aWQ6YSx0eXBlOiJ5b3V0dWJlIixjb250ZW50OiIiLG1ldGFkYXRhOnt9fTpudWxsfWdldEN1cnNvclBvc2l0aW9uKGUpe3JldHVybiBudWxsfXNldEN1cnNvclRvU3RhcnQoZSl7dGhpcy5mb2N1cyhlKX1zZXRDdXJzb3JUb0VuZChlKXt0aGlzLmZvY3VzKGUpfWZvY3VzKGUpe2xldCB0PWUucXVlcnlTZWxlY3RvcigiLnlvdXR1YmUtYmxvY2stY29udGFpbmVyIiksYT1lLnF1ZXJ5U2VsZWN0b3IoIi55b3V0dWJlLXVybC1pbnB1dCIpO2E/YS5mb2N1cygpOnQmJnQuZm9jdXMoKX1mb2N1c1dpdGhDdXJzb3IoZSx0PSJlbmQiKXt0aGlzLmZvY3VzKGUpfWdldFNwbGl0Q29udGVudChlKXtyZXR1cm4gbnVsbH1nZXRTdHlsZXMoKXtyZXR1cm5gCiAgICAgIC8qIFlvdVR1YmUgQmxvY2sgQ29udGFpbmVyICovCiAgICAgIC55b3V0dWJlLWJsb2NrLWNvbnRhaW5lciB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG1hcmdpbjogMTJweCAwOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgIH0KICAgICAgCiAgICAgIC55b3V0dWJlLWJsb2NrLWNvbnRhaW5lci5zZWxlY3RlZCB7CiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4ICR7aC5iZFRoZW1lKCIjNjM2NmYxIiwiIzgxOGNmOCIpfTsKICAgICAgfQogICAgICAKICAgICAgLyogWW91VHViZSBQbGFjZWhvbGRlciAqLwogICAgICAueW91dHViZS1wbGFjZWhvbGRlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgcGFkZGluZzogMzJweCAyNHB4OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzM3NDE1MSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmYWZhZmEiLCIjMGEwYTBhIil9OwogICAgICAgIGdhcDogMTJweDsKICAgICAgfQogICAgICAKICAgICAgLnBsYWNlaG9sZGVyLWljb24gewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2RjMjYyNiIsIiNlZjQ0NDQiKX07CiAgICAgICAgb3BhY2l0eTogMC44OwogICAgICB9CiAgICAgIAogICAgICAucGxhY2Vob2xkZXItdGV4dCB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMzc0MTUxIiwiI2U1ZTdlYiIpfTsKICAgICAgfQogICAgICAKICAgICAgLnlvdXR1YmUtdXJsLWlucHV0IHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IDQwMHB4OwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzM3NDE1MSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMTExODI3Iil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzExMTgyNyIsIiNmOWZhZmIiKX07CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIHNhbnMtc2VyaWY7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgfQogICAgICAKICAgICAgLnlvdXR1YmUtdXJsLWlucHV0OmZvY3VzIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjNmI3MjgwIiwiIzljYTNhZiIpfTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMxZjI5MzciKX07CiAgICAgIH0KICAgICAgCiAgICAgIC55b3V0dWJlLXVybC1pbnB1dDo6cGxhY2Vob2xkZXIgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzljYTNhZiIsIiM0YjU1NjMiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC55b3V0dWJlLWVtYmVkLWJ0biB7CiAgICAgICAgcGFkZGluZzogNnB4IDE2cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiMxMTE4MjciLCIjZjlmYWZiIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2Y5ZmFmYiIsIiMxMTE4MjciKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIHNhbnMtc2VyaWY7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgIH0KICAgICAgCiAgICAgIC55b3V0dWJlLWVtYmVkLWJ0bjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiMzNzQxNTEiLCIjZTVlN2ViIil9OwogICAgICB9CiAgICAgIAogICAgICAueW91dHViZS1lbWJlZC1idG46YWN0aXZlIHsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTgpOwogICAgICB9CiAgICAgIAogICAgICAvKiBZb3VUdWJlIENvbnRhaW5lciAqLwogICAgICAueW91dHViZS1jb250YWluZXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogNTYuMjUlOyAvKiAxNjo5IGFzcGVjdCByYXRpbyAqLwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjMDAwMDAwIiwiIzAwMDAwMCIpfTsKICAgICAgfQogICAgICAKICAgICAgLnlvdXR1YmUtY29udGFpbmVyIGlmcmFtZSB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBib3JkZXI6IDA7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICB9CiAgICBgfX19KTt2YXIgTFgsbzNhPWcoKCk9PntZbCgpO3BlKCk7TFg9Y2xhc3MgZXh0ZW5kcyBwaXtzdGF0aWN7aSh0aGlzLCJBdHRhY2htZW50QmxvY2tIYW5kbGVyIil9dHlwZT0iYXR0YWNobWVudCI7cmVuZGVyKGUsdCl7bGV0IGE9ZS5tZXRhZGF0YT8uZmlsZXN8fFtdO3JldHVybmAKICAgICAgPGRpdiBjbGFzcz0iYXR0YWNobWVudC1ibG9jay1jb250YWluZXIke3Q/IiBzZWxlY3RlZCI6IiJ9IiAKICAgICAgICAgICBkYXRhLWJsb2NrLWlkPSIke2UuaWR9IgogICAgICAgICAgIHRhYmluZGV4PSIwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhdHRhY2htZW50LWhlYWRlciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJhdHRhY2htZW50LWljb24iPlx1ezFGNENFfTwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iYXR0YWNobWVudC10aXRsZSI+RmlsZSBBdHRhY2htZW50czwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImF0dGFjaG1lbnQtbGlzdCI+CiAgICAgICAgICAke2EubGVuZ3RoPjA/dGhpcy5yZW5kZXJGaWxlcyhhKTp0aGlzLnJlbmRlclBsYWNlaG9sZGVyKCl9CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGlucHV0IHR5cGU9ImZpbGUiIAogICAgICAgICAgICAgICBjbGFzcz0iYXR0YWNobWVudC1maWxlLWlucHV0IiAKICAgICAgICAgICAgICAgbXVsdGlwbGUgCiAgICAgICAgICAgICAgIHN0eWxlPSJkaXNwbGF5OiBub25lOyIgLz4KICAgICAgICAke2EubGVuZ3RoPjA/JzxidXR0b24gY2xhc3M9ImFkZC1tb3JlLWZpbGVzIj5BZGQgTW9yZSBGaWxlczwvYnV0dG9uPic6IiJ9CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJQbGFjZWhvbGRlcigpe3JldHVybmAKICAgICAgPGRpdiBjbGFzcz0iYXR0YWNobWVudC1wbGFjZWhvbGRlciI+CiAgICAgICAgPGRpdiBjbGFzcz0icGxhY2Vob2xkZXItdGV4dCI+Q2xpY2sgdG8gYWRkIGZpbGVzPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icGxhY2Vob2xkZXItaGludCI+b3IgZHJhZyBhbmQgZHJvcDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyRmlsZXMoZSl7cmV0dXJuIGUubWFwKHQ9PmAKICAgICAgPGRpdiBjbGFzcz0iYXR0YWNobWVudC1pdGVtIiBkYXRhLWZpbGUtaWQ9IiR7dC5pZH0iPgogICAgICAgIDxkaXYgY2xhc3M9ImZpbGUtaWNvbiI+JHt0aGlzLmdldEZpbGVJY29uKHQudHlwZSl9PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZmlsZS1pbmZvIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImZpbGUtbmFtZSI+JHt0aGlzLmVzY2FwZUh0bWwodC5uYW1lKX08L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImZpbGUtc2l6ZSI+JHt0aGlzLmZvcm1hdEZpbGVTaXplKHQuc2l6ZSl9PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0icmVtb3ZlLWZpbGUiIGRhdGEtZmlsZS1pZD0iJHt0LmlkfSI+XHhENzwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIGApLmpvaW4oIiIpfXNldHVwKGUsdCxhKXtsZXQgcj1lLnF1ZXJ5U2VsZWN0b3IoIi5hdHRhY2htZW50LWJsb2NrLWNvbnRhaW5lciIpLG49ZS5xdWVyeVNlbGVjdG9yKCIuYXR0YWNobWVudC1maWxlLWlucHV0Iik7aWYoIXJ8fCFuKXtjb25zb2xlLmVycm9yKCJBdHRhY2htZW50QmxvY2tIYW5kbGVyOiBDb3VsZCBub3QgZmluZCByZXF1aXJlZCBlbGVtZW50cyIpO3JldHVybn10Lm1ldGFkYXRhfHwodC5tZXRhZGF0YT17fSksdC5tZXRhZGF0YS5maWxlc3x8KHQubWV0YWRhdGEuZmlsZXM9W10pO2xldCBvPXIucXVlcnlTZWxlY3RvcigiLmF0dGFjaG1lbnQtcGxhY2Vob2xkZXIiKTtvJiZvLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixwPT57cC5wcmV2ZW50RGVmYXVsdCgpLHAuc3RvcFByb3BhZ2F0aW9uKCksbi5jbGljaygpfSk7bGV0IGw9ci5xdWVyeVNlbGVjdG9yKCIuYWRkLW1vcmUtZmlsZXMiKTtsJiZsLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixwPT57cC5wcmV2ZW50RGVmYXVsdCgpLHAuc3RvcFByb3BhZ2F0aW9uKCksbi5jbGljaygpfSksbi5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLGFzeW5jIHA9PntsZXQgZD1wLnRhcmdldCx1PWQuZmlsZXM7dSYmdS5sZW5ndGg+MCYmKGF3YWl0IHRoaXMuaGFuZGxlRmlsZUF0dGFjaG1lbnRzKHUsdCxhKSxkLnZhbHVlPSIiKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLHA9PntsZXQgZD1wLnRhcmdldDtpZihkLmNsYXNzTGlzdC5jb250YWlucygicmVtb3ZlLWZpbGUiKSl7cC5wcmV2ZW50RGVmYXVsdCgpLHAuc3RvcFByb3BhZ2F0aW9uKCk7bGV0IHU9ZC5nZXRBdHRyaWJ1dGUoImRhdGEtZmlsZS1pZCIpO3UmJnRoaXMucmVtb3ZlRmlsZSh1LHQsYSl9fSksci5hZGRFdmVudExpc3RlbmVyKCJkcmFnb3ZlciIscD0+e3AucHJldmVudERlZmF1bHQoKSxwLnN0b3BQcm9wYWdhdGlvbigpLHIuY2xhc3NMaXN0LmFkZCgiZHJhZy1vdmVyIil9KSxyLmFkZEV2ZW50TGlzdGVuZXIoImRyYWdsZWF2ZSIscD0+e3AucHJldmVudERlZmF1bHQoKSxwLnN0b3BQcm9wYWdhdGlvbigpLHIuY2xhc3NMaXN0LnJlbW92ZSgiZHJhZy1vdmVyIil9KSxyLmFkZEV2ZW50TGlzdGVuZXIoImRyb3AiLGFzeW5jIHA9PntwLnByZXZlbnREZWZhdWx0KCkscC5zdG9wUHJvcGFnYXRpb24oKSxyLmNsYXNzTGlzdC5yZW1vdmUoImRyYWctb3ZlciIpO2xldCBkPXAuZGF0YVRyYW5zZmVyPy5maWxlcztkJiZkLmxlbmd0aD4wJiZhd2FpdCB0aGlzLmhhbmRsZUZpbGVBdHRhY2htZW50cyhkLHQsYSl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwoKT0+YS5vbkZvY3VzKCkpLHIuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsKCk9PmEub25CbHVyKCkpLHIuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIscD0+e2lmKChwLmtleT09PSJEZWxldGUifHxwLmtleT09PSJCYWNrc3BhY2UiKSYmZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PXImJnQubWV0YWRhdGE/LmZpbGVzPy5sZW5ndGg+MCl7cC5wcmV2ZW50RGVmYXVsdCgpLHQubWV0YWRhdGEuZmlsZXM9W10sYS5vblJlcXVlc3RVcGRhdGU/LigpO3JldHVybn1hLm9uS2V5RG93bihwKX0pfWFzeW5jIGhhbmRsZUZpbGVBdHRhY2htZW50cyhlLHQsYSl7dC5tZXRhZGF0YXx8KHQubWV0YWRhdGE9e30pLHQubWV0YWRhdGEuZmlsZXN8fCh0Lm1ldGFkYXRhLmZpbGVzPVtdKTtmb3IobGV0IHIgb2YgQXJyYXkuZnJvbShlKSl0cnl7bGV0IG49YXdhaXQgdGhpcy5maWxlVG9EYXRhVXJsKHIpLG89e2lkOnRoaXMuZ2VuZXJhdGVJZCgpLG5hbWU6ci5uYW1lLHNpemU6ci5zaXplLHR5cGU6ci50eXBlLGRhdGE6bn07dC5tZXRhZGF0YS5maWxlcy5wdXNoKG8pfWNhdGNoKG4pe2NvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBhdHRhY2ggZmlsZToiLHIubmFtZSxuKX10LmNvbnRlbnQ9YCR7dC5tZXRhZGF0YS5maWxlcy5sZW5ndGh9IGZpbGUke3QubWV0YWRhdGEuZmlsZXMubGVuZ3RoIT09MT8icyI6IiJ9IGF0dGFjaGVkYCxhLm9uUmVxdWVzdFVwZGF0ZT8uKCl9cmVtb3ZlRmlsZShlLHQsYSl7dC5tZXRhZGF0YT8uZmlsZXMmJih0Lm1ldGFkYXRhLmZpbGVzPXQubWV0YWRhdGEuZmlsZXMuZmlsdGVyKHI9PnIuaWQhPT1lKSx0LmNvbnRlbnQ9dC5tZXRhZGF0YS5maWxlcy5sZW5ndGg+MD9gJHt0Lm1ldGFkYXRhLmZpbGVzLmxlbmd0aH0gZmlsZSR7dC5tZXRhZGF0YS5maWxlcy5sZW5ndGghPT0xPyJzIjoiIn0gYXR0YWNoZWRgOiIiLGEub25SZXF1ZXN0VXBkYXRlPy4oKSl9ZmlsZVRvRGF0YVVybChlKXtyZXR1cm4gbmV3IFByb21pc2UoKHQsYSk9PntsZXQgcj1uZXcgRmlsZVJlYWRlcjtyLm9ubG9hZD1uPT57bGV0IG89bi50YXJnZXQ/LnJlc3VsdDt0eXBlb2Ygbz09InN0cmluZyI/dChvKTphKG5ldyBFcnJvcigiRmFpbGVkIHRvIHJlYWQgZmlsZSIpKX0sci5vbmVycm9yPWEsci5yZWFkQXNEYXRhVVJMKGUpfSl9Z2V0RmlsZUljb24oZSl7cmV0dXJuIGUuc3RhcnRzV2l0aCgiaW1hZ2UvIik/Ilx1ezFGNUJDfVx1RkUwRiI6ZS5zdGFydHNXaXRoKCJ2aWRlby8iKT8iXHV7MUYzQTV9IjplLnN0YXJ0c1dpdGgoImF1ZGlvLyIpPyJcdXsxRjNCNX0iOmUuaW5jbHVkZXMoInBkZiIpPyJcdXsxRjRDNH0iOmUuaW5jbHVkZXMoInppcCIpfHxlLmluY2x1ZGVzKCJyYXIiKXx8ZS5pbmNsdWRlcygidGFyIik/Ilx1ezFGNUM0fVx1RkUwRiI6ZS5pbmNsdWRlcygic2hlZXQiKT8iXHV7MUY0Q0F9IjplLmluY2x1ZGVzKCJkb2N1bWVudCIpfHxlLmluY2x1ZGVzKCJtc3dvcmQiKT8iXHV7MUY0RER9IjplLmluY2x1ZGVzKCJwcmVzZW50YXRpb24iKT8iXHV7MUY0Q0J9IjplLmluY2x1ZGVzKCJ0ZXh0Iik/Ilx1ezFGNEMzfSI6Ilx1ezFGNEMxfSJ9Zm9ybWF0RmlsZVNpemUoZSl7aWYoZT09PTApcmV0dXJuIjAgQnl0ZXMiO2xldCB0PTEwMjQsYT1bIkJ5dGVzIiwiS0IiLCJNQiIsIkdCIl0scj1NYXRoLmZsb29yKE1hdGgubG9nKGUpL01hdGgubG9nKHQpKTtyZXR1cm4gcGFyc2VGbG9hdCgoZS9NYXRoLnBvdyh0LHIpKS50b0ZpeGVkKDIpKSsiICIrYVtyXX1nZW5lcmF0ZUlkKCl7cmV0dXJuYGZpbGUtJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLDkpfWB9ZXNjYXBlSHRtbChlKXtsZXQgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdC50ZXh0Q29udGVudD1lLHQuaW5uZXJIVE1MfWdldENvbnRlbnQoZSl7cmV0dXJuIHRoaXMuZ2V0QmxvY2tGcm9tRWxlbWVudChlKT8uY29udGVudHx8IiJ9c2V0Q29udGVudChlLHQpe2xldCBhPXRoaXMuZ2V0QmxvY2tGcm9tRWxlbWVudChlKTthJiYoYS5jb250ZW50PXQpfWdldEJsb2NrRnJvbUVsZW1lbnQoZSl7bGV0IGE9ZS5xdWVyeVNlbGVjdG9yKCIuYXR0YWNobWVudC1ibG9jay1jb250YWluZXIiKT8uZ2V0QXR0cmlidXRlKCJkYXRhLWJsb2NrLWlkIik7cmV0dXJuIGE/e2lkOmEsdHlwZToiYXR0YWNobWVudCIsY29udGVudDoiIixtZXRhZGF0YTp7fX06bnVsbH1nZXRDdXJzb3JQb3NpdGlvbihlKXtyZXR1cm4gbnVsbH1zZXRDdXJzb3JUb1N0YXJ0KGUpe3RoaXMuZm9jdXMoZSl9c2V0Q3Vyc29yVG9FbmQoZSl7dGhpcy5mb2N1cyhlKX1mb2N1cyhlKXtlLnF1ZXJ5U2VsZWN0b3IoIi5hdHRhY2htZW50LWJsb2NrLWNvbnRhaW5lciIpPy5mb2N1cygpfWZvY3VzV2l0aEN1cnNvcihlLHQ9ImVuZCIpe3RoaXMuZm9jdXMoZSl9Z2V0U3BsaXRDb250ZW50KGUpe3JldHVybiBudWxsfWdldFN0eWxlcygpe3JldHVybmAKICAgICAgLyogQXR0YWNobWVudCBCbG9jayBDb250YWluZXIgKi8KICAgICAgLmF0dGFjaG1lbnQtYmxvY2stY29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgbWFyZ2luOiAxMnB4IDA7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMzc0MTUxIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMTExODI3Iil9OwogICAgICB9CiAgICAgIAogICAgICAuYXR0YWNobWVudC1ibG9jay1jb250YWluZXIuc2VsZWN0ZWQgewogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiM5Y2EzYWYiLCIjNmI3MjgwIil9OwogICAgICB9CiAgICAgIAogICAgICAuYXR0YWNobWVudC1ibG9jay1jb250YWluZXIuZHJhZy1vdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y5ZmFmYiIsIiMxZjI5MzciKX07CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiIzYzNjZmMSIsIiM4MThjZjgiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC8qIEhlYWRlciAqLwogICAgICAuYXR0YWNobWVudC1oZWFkZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzM3NDE1MSIpfTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y5ZmFmYiIsIiMwYTBhMGEiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5hdHRhY2htZW50LWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgICBvcGFjaXR5OiAwLjg7CiAgICAgIH0KICAgICAgCiAgICAgIC5hdHRhY2htZW50LXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzNzQxNTEiLCIjZTVlN2ViIil9OwogICAgICB9CiAgICAgIAogICAgICAvKiBGaWxlIExpc3QgKi8KICAgICAgLmF0dGFjaG1lbnQtbGlzdCB7CiAgICAgICAgcGFkZGluZzogOHB4OwogICAgICAgIG1pbi1oZWlnaHQ6IDgwcHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogNHB4OwogICAgICB9CiAgICAgIAogICAgICAvKiBQbGFjZWhvbGRlciAqLwogICAgICAuYXR0YWNobWVudC1wbGFjZWhvbGRlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgIH0KICAgICAgCiAgICAgIC5hdHRhY2htZW50LXBsYWNlaG9sZGVyOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y5ZmFmYiIsIiMxZjI5MzciKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5wbGFjZWhvbGRlci10ZXh0IHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNmI3MjgwIiwiIzljYTNhZiIpfTsKICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7CiAgICAgIH0KICAgICAgCiAgICAgIC5wbGFjZWhvbGRlci1oaW50IHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjOWNhM2FmIiwiIzZiNzI4MCIpfTsKICAgICAgfQogICAgICAKICAgICAgLyogRmlsZSBJdGVtcyAqLwogICAgICAuYXR0YWNobWVudC1pdGVtIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjlmYWZiIiwiIzFmMjkzNyIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMzNzQxNTEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICB9CiAgICAgIAogICAgICAuYXR0YWNobWVudC1pdGVtOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2YzZjRmNiIsIiMzNzQxNTEiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5maWxlLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMjBweDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQogICAgICAKICAgICAgLmZpbGUtaW5mbyB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBtaW4td2lkdGg6IDA7CiAgICAgIH0KICAgICAgCiAgICAgIC5maWxlLW5hbWUgewogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzExMTgyNyIsIiNmOWZhZmIiKX07CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CiAgICAgIAogICAgICAuZmlsZS1zaXplIHsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNmI3MjgwIiwiIzljYTNhZiIpfTsKICAgICAgICBtYXJnaW4tdG9wOiAycHg7CiAgICAgIH0KICAgICAgCiAgICAgIC5yZW1vdmUtZmlsZSB7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgd2lkdGg6IDI0cHg7CiAgICAgICAgaGVpZ2h0OiAyNHB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNmI3MjgwIiwiIzljYTNhZiIpfTsKICAgICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KICAgICAgCiAgICAgIC5yZW1vdmUtZmlsZTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZWUyZTIiLCIjOTkxYjFiIil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiNmY2E1YTUiLCIjZGMyNjI2Iil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2RjMjYyNiIsIiNmY2E1YTUiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC8qIEFkZCBNb3JlIEZpbGVzIEJ1dHRvbiAqLwogICAgICAuYWRkLW1vcmUtZmlsZXMgewogICAgICAgIG1hcmdpbjogOHB4OwogICAgICAgIHBhZGRpbmc6IDZweCAxMnB4OwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzM3NDE1MSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzM3NDE1MSIsIiNlNWU3ZWIiKX07CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIHNhbnMtc2VyaWY7CiAgICAgIH0KICAgICAgCiAgICAgIC5hZGQtbW9yZS1maWxlczpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmOWZhZmIiLCIjMWYyOTM3Iil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiNkMWQ1ZGIiLCIjNGI1NTYzIil9OwogICAgICB9CiAgICAgIAogICAgICAvKiBIaWRkZW4gZmlsZSBpbnB1dCAqLwogICAgICAuYXR0YWNobWVudC1maWxlLWlucHV0IHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgIH0KICAgIGB9fX0pO3ZhciBFWCxuM2E9ZygoKT0+e1lsKCk7cGUoKTtFWD1jbGFzcyBleHRlbmRzIHBpe3N0YXRpY3tpKHRoaXMsIkRpdmlkZXJCbG9ja0hhbmRsZXIiKX10eXBlPSJkaXZpZGVyIjtyZW5kZXIoZSx0KXtyZXR1cm5gCiAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIGRpdmlkZXIke3Q/IiBzZWxlY3RlZCI6IiJ9IiBkYXRhLWJsb2NrLWlkPSIke2UuaWR9IiBkYXRhLWJsb2NrLXR5cGU9IiR7ZS50eXBlfSIgdGFiaW5kZXg9IjAiPgogICAgICAgIDxocj4KICAgICAgPC9kaXY+CiAgICBgfXNldHVwKGUsdCxhKXtsZXQgcj1lLnF1ZXJ5U2VsZWN0b3IoIi5ibG9jay5kaXZpZGVyIik7ciYmKHIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLG49PntuLnN0b3BQcm9wYWdhdGlvbigpLHIuZm9jdXMoKSxhLm9uRm9jdXM/LigpfSksci5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsKCk9PnthLm9uRm9jdXM/LigpfSksci5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwoKT0+e2Eub25CbHVyPy4oKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsbj0+eyhuLmtleT09PSJCYWNrc3BhY2UifHxuLmtleT09PSJEZWxldGUiKSYmbi5wcmV2ZW50RGVmYXVsdCgpLGEub25LZXlEb3duPy4obil9KSl9Z2V0U3R5bGVzKCl7cmV0dXJuYAogICAgICAuYmxvY2suZGl2aWRlciB7CiAgICAgICAgcGFkZGluZzogOHB4IDA7CiAgICAgICAgbWFyZ2luOiAxNnB4IDA7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5ibG9jay5kaXZpZGVyOmZvY3VzIHsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICB9CgogICAgICAuYmxvY2suZGl2aWRlci5zZWxlY3RlZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMTAyLCAyMDQsIDAuMDUpIiwicmdiYSg3NywgMTQ4LCAyNTUsIDAuMDgpIil9OwogICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDJweCAke2guYmRUaGVtZSgicmdiYSgwLCAxMDIsIDIwNCwgMC4yKSIsInJnYmEoNzcsIDE0OCwgMjU1LCAwLjIpIil9OwogICAgICB9CgogICAgICAuYmxvY2suZGl2aWRlciBociB7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2UwZTBlMCIsIiMzMzMiKX07CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CiAgICBgfX19KTt2YXIgUFgsbDNhPWcoKCk9PntZbCgpO3BlKCk7UFg9Y2xhc3MgZXh0ZW5kcyBwaXtzdGF0aWN7aSh0aGlzLCJNYXJrZG93bkJsb2NrSGFuZGxlciIpfXR5cGU9Im1hcmtkb3duIjtyZW5kZXIoZSx0KXtsZXQgYT1lLm1ldGFkYXRhPy5pc0VkaXRNb2RlPz8hMCxyPWUuY29udGVudHx8IiI7cmV0dXJuYAogICAgICA8ZGl2IGNsYXNzPSJtYXJrZG93bi1ibG9jay1jb250YWluZXIke3Q/IiBzZWxlY3RlZCI6IiJ9IiAKICAgICAgICAgICBkYXRhLWJsb2NrLWlkPSIke2UuaWR9IgogICAgICAgICAgIGRhdGEtZWRpdC1tb2RlPSIke2F9Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJtYXJrZG93bi1oZWFkZXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0ibWFya2Rvd24taWNvbiI+TVx1MjE5MzwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ibWFya2Rvd24tdGl0bGUiPk1hcmtkb3duPC9kaXY+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJtYXJrZG93bi10b2dnbGUtbW9kZSIgdGl0bGU9IiR7YT8iUHJldmlldyI6IkVkaXQifSI+CiAgICAgICAgICAgICR7YT8iXHV7MUY0NDF9XHVGRTBGIjoiXHUyNzBGXHVGRTBGIn0KICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWNvbnRlbnQiPgogICAgICAgICAgJHthP3RoaXMucmVuZGVyRWRpdG9yKHIpOnRoaXMucmVuZGVyUHJldmlldyhyKX0KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfXJlbmRlckVkaXRvcihlKXtyZXR1cm5gCiAgICAgIDx0ZXh0YXJlYSBjbGFzcz0ibWFya2Rvd24tZWRpdG9yIiAKICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSJFbnRlciBtYXJrZG93biBjb250ZW50Li4uIgogICAgICAgICAgICAgICAgc3BlbGxjaGVjaz0iZmFsc2UiPiR7dGhpcy5lc2NhcGVIdG1sKGUpfTwvdGV4dGFyZWE+CiAgICBgfXJlbmRlclByZXZpZXcoZSl7cmV0dXJuYAogICAgICA8ZGl2IGNsYXNzPSJtYXJrZG93bi1wcmV2aWV3Ij4KICAgICAgICAke3RoaXMucGFyc2VNYXJrZG93bihlKXx8JzxkaXYgY2xhc3M9InByZXZpZXctZW1wdHkiPk5vIGNvbnRlbnQgdG8gcHJldmlldzwvZGl2Pid9CiAgICAgIDwvZGl2PgogICAgYH1zZXR1cChlLHQsYSl7bGV0IHI9ZS5xdWVyeVNlbGVjdG9yKCIubWFya2Rvd24tYmxvY2stY29udGFpbmVyIiksbj1lLnF1ZXJ5U2VsZWN0b3IoIi5tYXJrZG93bi10b2dnbGUtbW9kZSIpO2lmKCFyfHwhbil7Y29uc29sZS5lcnJvcigiTWFya2Rvd25CbG9ja0hhbmRsZXI6IENvdWxkIG5vdCBmaW5kIHJlcXVpcmVkIGVsZW1lbnRzIik7cmV0dXJufXQubWV0YWRhdGF8fCh0Lm1ldGFkYXRhPXt9KSx0Lm1ldGFkYXRhLmlzRWRpdE1vZGU9PT12b2lkIDAmJih0Lm1ldGFkYXRhLmlzRWRpdE1vZGU9ITApLG4uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLG89PntpZihvLnByZXZlbnREZWZhdWx0KCksby5zdG9wUHJvcGFnYXRpb24oKSx0Lm1ldGFkYXRhLmlzRWRpdE1vZGUpe2xldCBsPXIucXVlcnlTZWxlY3RvcigiLm1hcmtkb3duLWVkaXRvciIpO2wmJih0LmNvbnRlbnQ9bC52YWx1ZSl9dC5tZXRhZGF0YS5pc0VkaXRNb2RlPSF0Lm1ldGFkYXRhLmlzRWRpdE1vZGUsYS5vblJlcXVlc3RVcGRhdGU/LigpfSksdC5tZXRhZGF0YS5pc0VkaXRNb2RlP3RoaXMuc2V0dXBFZGl0b3IoZSx0LGEpOnRoaXMuc2V0dXBQcmV2aWV3KGUsdCxhKX1zZXR1cEVkaXRvcihlLHQsYSl7bGV0IHI9ZS5xdWVyeVNlbGVjdG9yKCIubWFya2Rvd24tZWRpdG9yIik7ciYmKHIuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCgpPT5hLm9uRm9jdXMoKSksci5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwoKT0+YS5vbkJsdXIoKSksci5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsKCk9Pnt0LmNvbnRlbnQ9ci52YWx1ZX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsbj0+e2lmKG4ua2V5PT09IlRhYiIpe24ucHJldmVudERlZmF1bHQoKTtsZXQgbz1yLnNlbGVjdGlvblN0YXJ0LGw9ci5zZWxlY3Rpb25FbmQscD1yLnZhbHVlO2lmKG4uc2hpZnRLZXkpe2xldCBjPXAuc3Vic3RyaW5nKDAsbykubGFzdEluZGV4T2YoYApgKSsxLGI9cC5zdWJzdHJpbmcoYyxvKTtiLnN0YXJ0c1dpdGgoIiAgIikmJihyLnZhbHVlPXAuc3Vic3RyaW5nKDAsYykrYi5zdWJzdHJpbmcoMikrcC5zdWJzdHJpbmcobyksci5zZWxlY3Rpb25TdGFydD1yLnNlbGVjdGlvbkVuZD1vLTIpfWVsc2Ugci52YWx1ZT1wLnN1YnN0cmluZygwLG8pKyIgICIrcC5zdWJzdHJpbmcobCksci5zZWxlY3Rpb25TdGFydD1yLnNlbGVjdGlvbkVuZD1vKzI7dC5jb250ZW50PXIudmFsdWU7cmV0dXJufWlmKChuLmN0cmxLZXl8fG4ubWV0YUtleSkmJm4ua2V5PT09ImIiKXtuLnByZXZlbnREZWZhdWx0KCksdGhpcy53cmFwU2VsZWN0aW9uKHIsIioqIiwiKioiKSx0LmNvbnRlbnQ9ci52YWx1ZTtyZXR1cm59aWYoKG4uY3RybEtleXx8bi5tZXRhS2V5KSYmbi5rZXk9PT0iaSIpe24ucHJldmVudERlZmF1bHQoKSx0aGlzLndyYXBTZWxlY3Rpb24ociwiXyIsIl8iKSx0LmNvbnRlbnQ9ci52YWx1ZTtyZXR1cm59aWYoKG4uY3RybEtleXx8bi5tZXRhS2V5KSYmbi5rZXk9PT0iayIpe24ucHJldmVudERlZmF1bHQoKSx0aGlzLmluc2VydExpbmsociksdC5jb250ZW50PXIudmFsdWU7cmV0dXJufWEub25LZXlEb3duKG4pfSksdGhpcy5hdXRvUmVzaXplKHIpLHIuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCgpPT50aGlzLmF1dG9SZXNpemUocikpKX1zZXR1cFByZXZpZXcoZSx0LGEpe2xldCByPWUucXVlcnlTZWxlY3RvcigiLm1hcmtkb3duLWJsb2NrLWNvbnRhaW5lciIpLG49ZS5xdWVyeVNlbGVjdG9yKCIubWFya2Rvd24tcHJldmlldyIpOyFyfHwhbnx8KG4uc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIjAiKSxuLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwoKT0+YS5vbkZvY3VzKCkpLG4uYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsKCk9PmEub25CbHVyKCkpLG4uYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsbz0+e2lmKG8ua2V5PT09IkVudGVyIiYmIW8uc2hpZnRLZXkpe28ucHJldmVudERlZmF1bHQoKSx0Lm1ldGFkYXRhLmlzRWRpdE1vZGU9ITAsYS5vblJlcXVlc3RVcGRhdGU/LigpO3JldHVybn1hLm9uS2V5RG93bihvKX0pKX13cmFwU2VsZWN0aW9uKGUsdCxhKXtsZXQgcj1lLnNlbGVjdGlvblN0YXJ0LG49ZS5zZWxlY3Rpb25FbmQsbz1lLnZhbHVlLnN1YnN0cmluZyhyLG4pLGw9dCsob3x8InRleHQiKSthO2UudmFsdWU9ZS52YWx1ZS5zdWJzdHJpbmcoMCxyKStsK2UudmFsdWUuc3Vic3RyaW5nKG4pLG8/KGUuc2VsZWN0aW9uU3RhcnQ9cixlLnNlbGVjdGlvbkVuZD1yK2wubGVuZ3RoKTooZS5zZWxlY3Rpb25TdGFydD1yK3QubGVuZ3RoLGUuc2VsZWN0aW9uRW5kPXIrdC5sZW5ndGgrNCksZS5mb2N1cygpfWluc2VydExpbmsoZSl7bGV0IHQ9ZS5zZWxlY3Rpb25TdGFydCxhPWUuc2VsZWN0aW9uRW5kLG49ZS52YWx1ZS5zdWJzdHJpbmcodCxhKXx8ImxpbmsgdGV4dCIsbz1gWyR7bn1dKHVybClgO2UudmFsdWU9ZS52YWx1ZS5zdWJzdHJpbmcoMCx0KStvK2UudmFsdWUuc3Vic3RyaW5nKGEpLGUuc2VsZWN0aW9uU3RhcnQ9dCtuLmxlbmd0aCszLGUuc2VsZWN0aW9uRW5kPXQrbi5sZW5ndGgrNixlLmZvY3VzKCl9YXV0b1Jlc2l6ZShlKXtlLnN0eWxlLmhlaWdodD0iYXV0byIsZS5zdHlsZS5oZWlnaHQ9ZS5zY3JvbGxIZWlnaHQrInB4In1wYXJzZU1hcmtkb3duKGUpe2xldCB0PXRoaXMuZXNjYXBlSHRtbChlKTtyZXR1cm4gdD10LnJlcGxhY2UoL14jIyMgKC4rKSQvZ20sIjxoMz4kMTwvaDM+IiksdD10LnJlcGxhY2UoL14jIyAoLispJC9nbSwiPGgyPiQxPC9oMj4iKSx0PXQucmVwbGFjZSgvXiMgKC4rKSQvZ20sIjxoMT4kMTwvaDE+IiksdD10LnJlcGxhY2UoL1wqXCooLis/KVwqXCovZywiPHN0cm9uZz4kMTwvc3Ryb25nPiIpLHQ9dC5yZXBsYWNlKC9fXyguKz8pX18vZywiPHN0cm9uZz4kMTwvc3Ryb25nPiIpLHQ9dC5yZXBsYWNlKC9cKiguKz8pXCovZywiPGVtPiQxPC9lbT4iKSx0PXQucmVwbGFjZSgvXyguKz8pXy9nLCI8ZW0+JDE8L2VtPiIpLHQ9dC5yZXBsYWNlKC9gYGAoW1xzXFNdKj8pYGBgL2csIjxwcmU+PGNvZGU+JDE8L2NvZGU+PC9wcmU+IiksdD10LnJlcGxhY2UoL2AoLis/KWAvZywiPGNvZGU+JDE8L2NvZGU+IiksdD10LnJlcGxhY2UoL1xbKFteXF1dKylcXVwoKFteKV0rKVwpL2csJzxhIGhyZWY9IiQyIj4kMTwvYT4nKSx0PXQucmVwbGFjZSgvXlwqICguKykkL2dtLCI8bGk+JDE8L2xpPiIpLHQ9dC5yZXBsYWNlKC9eLSAoLispJC9nbSwiPGxpPiQxPC9saT4iKSx0PXQucmVwbGFjZSgvXlxkK1wuICguKykkL2dtLCI8bGk+JDE8L2xpPiIpLHQ9dC5yZXBsYWNlKC8oPGxpPi4qPFwvbGk+XG4/KSsvZyxhPT4iPHVsPiIrYSsiPC91bD4iKSx0PXQucmVwbGFjZSgvXG5cbi9nLCI8L3A+PHA+IiksdD0iPHA+Iit0KyI8L3A+Iix0PXQucmVwbGFjZSgvPHA+PFwvcD4vZywiIiksdD10LnJlcGxhY2UoLzxwPig8aFsxLTNdPikvZywiJDEiKSx0PXQucmVwbGFjZSgvKDxcL2hbMS0zXT4pPFwvcD4vZywiJDEiKSx0PXQucmVwbGFjZSgvPHA+KDx1bD4pL2csIiQxIiksdD10LnJlcGxhY2UoLyg8XC91bD4pPFwvcD4vZywiJDEiKSx0PXQucmVwbGFjZSgvPHA+KDxwcmU+KS9nLCIkMSIpLHQ9dC5yZXBsYWNlKC8oPFwvcHJlPik8XC9wPi9nLCIkMSIpLHR9ZXNjYXBlSHRtbChlKXtsZXQgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdC50ZXh0Q29udGVudD1lLHQuaW5uZXJIVE1MfWdldENvbnRlbnQoZSl7bGV0IHQ9ZS5xdWVyeVNlbGVjdG9yKCIubWFya2Rvd24tZWRpdG9yIik7aWYodClyZXR1cm4gdC52YWx1ZTtsZXQgcj1lLnF1ZXJ5U2VsZWN0b3IoIi5tYXJrZG93bi1ibG9jay1jb250YWluZXIiKT8uZ2V0QXR0cmlidXRlKCJkYXRhLWJsb2NrLWlkIik7cmV0dXJuIiJ9c2V0Q29udGVudChlLHQpe2xldCBhPWUucXVlcnlTZWxlY3RvcigiLm1hcmtkb3duLWVkaXRvciIpO2EmJihhLnZhbHVlPXQsdGhpcy5hdXRvUmVzaXplKGEpKX1nZXRDdXJzb3JQb3NpdGlvbihlKXtsZXQgdD1lLnF1ZXJ5U2VsZWN0b3IoIi5tYXJrZG93bi1lZGl0b3IiKTtyZXR1cm4gdD90LnNlbGVjdGlvblN0YXJ0Om51bGx9c2V0Q3Vyc29yVG9TdGFydChlKXtsZXQgdD1lLnF1ZXJ5U2VsZWN0b3IoIi5tYXJrZG93bi1lZGl0b3IiKTt0Pyh0LnNlbGVjdGlvblN0YXJ0PXQuc2VsZWN0aW9uRW5kPTAsdC5mb2N1cygpKTp0aGlzLmZvY3VzKGUpfXNldEN1cnNvclRvRW5kKGUpe2xldCB0PWUucXVlcnlTZWxlY3RvcigiLm1hcmtkb3duLWVkaXRvciIpO2lmKHQpe2xldCBhPXQudmFsdWUubGVuZ3RoO3Quc2VsZWN0aW9uU3RhcnQ9dC5zZWxlY3Rpb25FbmQ9YSx0LmZvY3VzKCl9ZWxzZSB0aGlzLmZvY3VzKGUpfWZvY3VzKGUpe2xldCB0PWUucXVlcnlTZWxlY3RvcigiLm1hcmtkb3duLWVkaXRvciIpO3Q/dC5mb2N1cygpOmUucXVlcnlTZWxlY3RvcigiLm1hcmtkb3duLXByZXZpZXciKT8uZm9jdXMoKX1mb2N1c1dpdGhDdXJzb3IoZSx0PSJlbmQiKXtsZXQgYT1lLnF1ZXJ5U2VsZWN0b3IoIi5tYXJrZG93bi1lZGl0b3IiKTthP3Q9PT0ic3RhcnQiP3RoaXMuc2V0Q3Vyc29yVG9TdGFydChlKTp0PT09ImVuZCI/dGhpcy5zZXRDdXJzb3JUb0VuZChlKTp0eXBlb2YgdD09Im51bWJlciImJihhLnNlbGVjdGlvblN0YXJ0PWEuc2VsZWN0aW9uRW5kPXQsYS5mb2N1cygpKTp0aGlzLmZvY3VzKGUpfWdldFNwbGl0Q29udGVudChlKXtsZXQgdD1lLnF1ZXJ5U2VsZWN0b3IoIi5tYXJrZG93bi1lZGl0b3IiKTtpZighdClyZXR1cm4gbnVsbDtsZXQgYT10LnNlbGVjdGlvblN0YXJ0O3JldHVybntiZWZvcmU6dC52YWx1ZS5zdWJzdHJpbmcoMCxhKSxhZnRlcjp0LnZhbHVlLnN1YnN0cmluZyhhKX19Z2V0U3R5bGVzKCl7cmV0dXJuYAogICAgICAvKiBNYXJrZG93biBCbG9jayBDb250YWluZXIgKi8KICAgICAgLm1hcmtkb3duLWJsb2NrLWNvbnRhaW5lciB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG1hcmdpbjogMTJweCAwOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzM3NDE1MSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMxMTE4MjciKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5tYXJrZG93bi1ibG9jay1jb250YWluZXIuc2VsZWN0ZWQgewogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiM5Y2EzYWYiLCIjNmI3MjgwIil9OwogICAgICB9CiAgICAgIAogICAgICAvKiBIZWFkZXIgKi8KICAgICAgLm1hcmtkb3duLWhlYWRlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMzNzQxNTEiKX07CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmOWZhZmIiLCIjMGEwYTBhIil9OwogICAgICB9CiAgICAgIAogICAgICAubWFya2Rvd24taWNvbiB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgb3BhY2l0eTogMC44OwogICAgICB9CiAgICAgIAogICAgICAubWFya2Rvd24tdGl0bGUgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMzc0MTUxIiwiI2U1ZTdlYiIpfTsKICAgICAgfQogICAgICAKICAgICAgLm1hcmtkb3duLXRvZ2dsZS1tb2RlIHsKICAgICAgICBwYWRkaW5nOiA0cHggOHB4OwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzM3NDE1MSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgfQogICAgICAKICAgICAgLm1hcmtkb3duLXRvZ2dsZS1tb2RlOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2YzZjRmNiIsIiMxZjI5MzciKX07CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiI2QxZDVkYiIsIiM0YjU1NjMiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC8qIENvbnRlbnQgKi8KICAgICAgLm1hcmtkb3duLWNvbnRlbnQgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBtaW4taGVpZ2h0OiAxMjBweDsKICAgICAgfQogICAgICAKICAgICAgLyogRWRpdG9yICovCiAgICAgIC5tYXJrZG93bi1lZGl0b3IgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1pbi1oZWlnaHQ6IDEyMHB4OwogICAgICAgIHBhZGRpbmc6IDEycHg7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgcmVzaXplOiBub25lOwogICAgICAgIGZvbnQtZmFtaWx5OiAnTW9uYWNvJywgJ0NvbnNvbGFzJywgJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzFmMjkzNyIsIiNmM2Y0ZjYiKX07CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQogICAgICAKICAgICAgLm1hcmtkb3duLWVkaXRvcjo6cGxhY2Vob2xkZXIgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzljYTNhZiIsIiM2YjcyODAiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC8qIFByZXZpZXcgKi8KICAgICAgLm1hcmtkb3duLXByZXZpZXcgewogICAgICAgIHBhZGRpbmc6IDEycHg7CiAgICAgICAgbWluLWhlaWdodDogOTZweDsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzFmMjkzNyIsIiNmM2Y0ZjYiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5wcmV2aWV3LWVtcHR5IHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM5Y2EzYWYiLCIjNmI3MjgwIil9OwogICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgICAgfQogICAgICAKICAgICAgLyogTWFya2Rvd24gcHJldmlldyBzdHlsZXMgKi8KICAgICAgLm1hcmtkb3duLXByZXZpZXcgaDEgewogICAgICAgIGZvbnQtc2l6ZTogMjRweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIG1hcmdpbjogMTZweCAwIDhweCAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzExMTgyNyIsIiNmOWZhZmIiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5tYXJrZG93bi1wcmV2aWV3IGgyIHsKICAgICAgICBmb250LXNpemU6IDIwcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBtYXJnaW46IDE0cHggMCA2cHggMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxMTE4MjciLCIjZjlmYWZiIil9OwogICAgICB9CiAgICAgIAogICAgICAubWFya2Rvd24tcHJldmlldyBoMyB7CiAgICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgbWFyZ2luOiAxMnB4IDAgNHB4IDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTExODI3IiwiI2Y5ZmFmYiIpfTsKICAgICAgfQogICAgICAKICAgICAgLm1hcmtkb3duLXByZXZpZXcgcCB7CiAgICAgICAgbWFyZ2luOiA4cHggMDsKICAgICAgfQogICAgICAKICAgICAgLm1hcmtkb3duLXByZXZpZXcgdWwsCiAgICAgIC5tYXJrZG93bi1wcmV2aWV3IG9sIHsKICAgICAgICBtYXJnaW46IDhweCAwOwogICAgICAgIHBhZGRpbmctbGVmdDogMjRweDsKICAgICAgfQogICAgICAKICAgICAgLm1hcmtkb3duLXByZXZpZXcgbGkgewogICAgICAgIG1hcmdpbjogNHB4IDA7CiAgICAgIH0KICAgICAgCiAgICAgIC5tYXJrZG93bi1wcmV2aWV3IGNvZGUgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjNmNGY2IiwiIzFmMjkzNyIpfTsKICAgICAgICBwYWRkaW5nOiAycHggNHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICBmb250LWZhbWlseTogJ01vbmFjbycsICdDb25zb2xhcycsICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTsKICAgICAgICBmb250LXNpemU6IDAuOWVtOwogICAgICB9CiAgICAgIAogICAgICAubWFya2Rvd24tcHJldmlldyBwcmUgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjNmNGY2IiwiIzFmMjkzNyIpfTsKICAgICAgICBwYWRkaW5nOiAxMnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwogICAgICAgIG1hcmdpbjogOHB4IDA7CiAgICAgIH0KICAgICAgCiAgICAgIC5tYXJrZG93bi1wcmV2aWV3IHByZSBjb2RlIHsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICB9CiAgICAgIAogICAgICAubWFya2Rvd24tcHJldmlldyBzdHJvbmcgewogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTExODI3IiwiI2Y5ZmFmYiIpfTsKICAgICAgfQogICAgICAKICAgICAgLm1hcmtkb3duLXByZXZpZXcgZW0gewogICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgICAgfQogICAgICAKICAgICAgLm1hcmtkb3duLXByZXZpZXcgYSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzYwYTVmYSIpfTsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgIH0KICAgICAgCiAgICAgIC5tYXJrZG93bi1wcmV2aWV3IGE6aG92ZXIgewogICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogICAgICB9CiAgICAgIAogICAgICAubWFya2Rvd24tcHJldmlldyBibG9ja3F1b3RlIHsKICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzM3NDE1MSIpfTsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDEycHg7CiAgICAgICAgbWFyZ2luOiA4cHggMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM2YjcyODAiLCIjOWNhM2FmIil9OwogICAgICB9CiAgICBgfX19KTt2YXIgSVgsYzNhPWcoKCk9PntZbCgpO3BlKCk7SVg9Y2xhc3MgZXh0ZW5kcyBwaXtzdGF0aWN7aSh0aGlzLCJIdG1sQmxvY2tIYW5kbGVyIil9dHlwZT0iaHRtbCI7cmVuZGVyKGUsdCl7bGV0IGE9ZS5tZXRhZGF0YT8uaXNFZGl0TW9kZT8/ITAscj1lLmNvbnRlbnR8fCIiO3JldHVybmAKICAgICAgPGRpdiBjbGFzcz0iaHRtbC1ibG9jay1jb250YWluZXIke3Q/IiBzZWxlY3RlZCI6IiJ9IiAKICAgICAgICAgICBkYXRhLWJsb2NrLWlkPSIke2UuaWR9IgogICAgICAgICAgIGRhdGEtZWRpdC1tb2RlPSIke2F9Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJodG1sLWhlYWRlciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJodG1sLWljb24iPiZsdDsvJmd0OzwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iaHRtbC10aXRsZSI+SFRNTDwvZGl2PgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iaHRtbC10b2dnbGUtbW9kZSIgdGl0bGU9IiR7YT8iUHJldmlldyI6IkVkaXQifSI+CiAgICAgICAgICAgICR7YT8iXHV7MUY0NDF9XHVGRTBGIjoiXHUyNzBGXHVGRTBGIn0KICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Imh0bWwtY29udGVudCI+CiAgICAgICAgICAke2E/dGhpcy5yZW5kZXJFZGl0b3Iocik6dGhpcy5yZW5kZXJQcmV2aWV3KHIpfQogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyRWRpdG9yKGUpe3JldHVybmAKICAgICAgPHRleHRhcmVhIGNsYXNzPSJodG1sLWVkaXRvciIgCiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj0iRW50ZXIgSFRNTCBjb250ZW50Li4uIgogICAgICAgICAgICAgICAgc3BlbGxjaGVjaz0iZmFsc2UiPiR7dGhpcy5lc2NhcGVIdG1sKGUpfTwvdGV4dGFyZWE+CiAgICBgfXJlbmRlclByZXZpZXcoZSl7cmV0dXJuYAogICAgICA8ZGl2IGNsYXNzPSJodG1sLXByZXZpZXciPgogICAgICAgICR7ZXx8JzxkaXYgY2xhc3M9InByZXZpZXctZW1wdHkiPk5vIGNvbnRlbnQgdG8gcHJldmlldzwvZGl2Pid9CiAgICAgIDwvZGl2PgogICAgYH1zZXR1cChlLHQsYSl7bGV0IHI9ZS5xdWVyeVNlbGVjdG9yKCIuaHRtbC1ibG9jay1jb250YWluZXIiKSxuPWUucXVlcnlTZWxlY3RvcigiLmh0bWwtdG9nZ2xlLW1vZGUiKTtpZighcnx8IW4pe2NvbnNvbGUuZXJyb3IoIkh0bWxCbG9ja0hhbmRsZXI6IENvdWxkIG5vdCBmaW5kIHJlcXVpcmVkIGVsZW1lbnRzIik7cmV0dXJufXQubWV0YWRhdGF8fCh0Lm1ldGFkYXRhPXt9KSx0Lm1ldGFkYXRhLmlzRWRpdE1vZGU9PT12b2lkIDAmJih0Lm1ldGFkYXRhLmlzRWRpdE1vZGU9ITApLG4uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLG89PntpZihvLnByZXZlbnREZWZhdWx0KCksby5zdG9wUHJvcGFnYXRpb24oKSx0Lm1ldGFkYXRhLmlzRWRpdE1vZGUpe2xldCBsPXIucXVlcnlTZWxlY3RvcigiLmh0bWwtZWRpdG9yIik7bCYmKHQuY29udGVudD1sLnZhbHVlKX10Lm1ldGFkYXRhLmlzRWRpdE1vZGU9IXQubWV0YWRhdGEuaXNFZGl0TW9kZSxhLm9uUmVxdWVzdFVwZGF0ZT8uKCl9KSx0Lm1ldGFkYXRhLmlzRWRpdE1vZGU/dGhpcy5zZXR1cEVkaXRvcihlLHQsYSk6dGhpcy5zZXR1cFByZXZpZXcoZSx0LGEpfXNldHVwRWRpdG9yKGUsdCxhKXtsZXQgcj1lLnF1ZXJ5U2VsZWN0b3IoIi5odG1sLWVkaXRvciIpO3ImJihyLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwoKT0+YS5vbkZvY3VzKCkpLHIuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsKCk9PmEub25CbHVyKCkpLHIuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCgpPT57dC5jb250ZW50PXIudmFsdWUsdGhpcy52YWxpZGF0ZUh0bWwoci52YWx1ZSl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLG49PntpZihuLmtleT09PSJUYWIiKXtuLnByZXZlbnREZWZhdWx0KCk7bGV0IG89ci5zZWxlY3Rpb25TdGFydCxsPXIuc2VsZWN0aW9uRW5kLHA9ci52YWx1ZTtpZihuLnNoaWZ0S2V5KXtsZXQgYz1wLnN1YnN0cmluZygwLG8pLmxhc3RJbmRleE9mKGAKYCkrMSxiPXAuc3Vic3RyaW5nKGMsbyk7Yi5zdGFydHNXaXRoKCIgICIpJiYoci52YWx1ZT1wLnN1YnN0cmluZygwLGMpK2Iuc3Vic3RyaW5nKDIpK3Auc3Vic3RyaW5nKG8pLHIuc2VsZWN0aW9uU3RhcnQ9ci5zZWxlY3Rpb25FbmQ9by0yKX1lbHNlIHIudmFsdWU9cC5zdWJzdHJpbmcoMCxvKSsiICAiK3Auc3Vic3RyaW5nKGwpLHIuc2VsZWN0aW9uU3RhcnQ9ci5zZWxlY3Rpb25FbmQ9bysyO3QuY29udGVudD1yLnZhbHVlO3JldHVybn1pZigobi5jdHJsS2V5fHxuLm1ldGFLZXkpJiZuLmtleT09PSIvIil7bi5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuYXV0b0Nsb3NlVGFnKHIpLHQuY29udGVudD1yLnZhbHVlO3JldHVybn1hLm9uS2V5RG93bihuKX0pLHRoaXMuYXV0b1Jlc2l6ZShyKSxyLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwoKT0+dGhpcy5hdXRvUmVzaXplKHIpKSl9c2V0dXBQcmV2aWV3KGUsdCxhKXtsZXQgcj1lLnF1ZXJ5U2VsZWN0b3IoIi5odG1sLWJsb2NrLWNvbnRhaW5lciIpLG49ZS5xdWVyeVNlbGVjdG9yKCIuaHRtbC1wcmV2aWV3Iik7IXJ8fCFufHwobi5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiMCIpLG4uYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCgpPT5hLm9uRm9jdXMoKSksbi5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwoKT0+YS5vbkJsdXIoKSksbi5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixvPT57aWYoby5rZXk9PT0iRW50ZXIiJiYhby5zaGlmdEtleSl7by5wcmV2ZW50RGVmYXVsdCgpLHQubWV0YWRhdGEuaXNFZGl0TW9kZT0hMCxhLm9uUmVxdWVzdFVwZGF0ZT8uKCk7cmV0dXJufWEub25LZXlEb3duKG8pfSksdGhpcy5zYW5kYm94Q29udGVudChuKSl9YXV0b0Nsb3NlVGFnKGUpe2xldCB0PWUuc2VsZWN0aW9uU3RhcnQsYT1lLnZhbHVlLHI9dDtmb3IoO3I+MCYmYVtyLTFdIT09IjwiOylyLS07aWYocj4wKXtsZXQgbz1hLnN1YnN0cmluZyhyLHQpLm1hdGNoKC9eKFx3KykvKTtpZihvKXtsZXQgcD1gPC8ke29bMV19PmA7ZS52YWx1ZT1hLnN1YnN0cmluZygwLHQpKyI+IitwK2Euc3Vic3RyaW5nKHQpLGUuc2VsZWN0aW9uU3RhcnQ9ZS5zZWxlY3Rpb25FbmQ9dCsxfX19YXV0b1Jlc2l6ZShlKXtlLnN0eWxlLmhlaWdodD0iYXV0byIsZS5zdHlsZS5oZWlnaHQ9ZS5zY3JvbGxIZWlnaHQrInB4In12YWxpZGF0ZUh0bWwoZSl7bGV0IHQ9W10sYT0vPFwvPyhbYS16QS1aXVthLXpBLVowLTldKilcYltePl0qPi9nLHI7Zm9yKDsocj1hLmV4ZWMoZSkpIT09bnVsbDspe2xldCBuPXJbMF0uc3RhcnRzV2l0aCgiPC8iKSxvPXJbMV0udG9Mb3dlckNhc2UoKTtpZihuKXtpZih0Lmxlbmd0aD09PTB8fHRbdC5sZW5ndGgtMV0hPT1vKXJldHVybiBjb25zb2xlLndhcm4oYE1pc21hdGNoZWQgY2xvc2luZyB0YWc6ICR7b31gKSwhMTt0LnBvcCgpfWVsc2UgclswXS5lbmRzV2l0aCgiLz4iKXx8dC5wdXNoKG8pfXJldHVybiB0Lmxlbmd0aD4wPyhjb25zb2xlLndhcm4oYFVuY2xvc2VkIHRhZ3M6ICR7dC5qb2luKCIsICIpfWApLCExKTohMH1zYW5kYm94Q29udGVudChlKXtlLnF1ZXJ5U2VsZWN0b3JBbGwoInNjcmlwdCIpLmZvckVhY2gobj0+bi5yZW1vdmUoKSksZS5xdWVyeVNlbGVjdG9yQWxsKCIqIikuZm9yRWFjaChuPT57QXJyYXkuZnJvbShuLmF0dHJpYnV0ZXMpLmZvckVhY2gobz0+e28ubmFtZS5zdGFydHNXaXRoKCJvbiIpJiZuLnJlbW92ZUF0dHJpYnV0ZShvLm5hbWUpfSl9KSxlLnF1ZXJ5U2VsZWN0b3JBbGwoImZvcm0iKS5mb3JFYWNoKG49PntuLmFkZEV2ZW50TGlzdGVuZXIoInN1Ym1pdCIsbz0+e28ucHJldmVudERlZmF1bHQoKSxvLnN0b3BQcm9wYWdhdGlvbigpfSl9KX1lc2NhcGVIdG1sKGUpe2xldCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0LnRleHRDb250ZW50PWUsdC5pbm5lckhUTUx9Z2V0Q29udGVudChlKXtsZXQgdD1lLnF1ZXJ5U2VsZWN0b3IoIi5odG1sLWVkaXRvciIpO2lmKHQpcmV0dXJuIHQudmFsdWU7bGV0IHI9ZS5xdWVyeVNlbGVjdG9yKCIuaHRtbC1ibG9jay1jb250YWluZXIiKT8uZ2V0QXR0cmlidXRlKCJkYXRhLWJsb2NrLWlkIik7cmV0dXJuIiJ9c2V0Q29udGVudChlLHQpe2xldCBhPWUucXVlcnlTZWxlY3RvcigiLmh0bWwtZWRpdG9yIik7YSYmKGEudmFsdWU9dCx0aGlzLmF1dG9SZXNpemUoYSkpfWdldEN1cnNvclBvc2l0aW9uKGUpe2xldCB0PWUucXVlcnlTZWxlY3RvcigiLmh0bWwtZWRpdG9yIik7cmV0dXJuIHQ/dC5zZWxlY3Rpb25TdGFydDpudWxsfXNldEN1cnNvclRvU3RhcnQoZSl7bGV0IHQ9ZS5xdWVyeVNlbGVjdG9yKCIuaHRtbC1lZGl0b3IiKTt0Pyh0LnNlbGVjdGlvblN0YXJ0PXQuc2VsZWN0aW9uRW5kPTAsdC5mb2N1cygpKTp0aGlzLmZvY3VzKGUpfXNldEN1cnNvclRvRW5kKGUpe2xldCB0PWUucXVlcnlTZWxlY3RvcigiLmh0bWwtZWRpdG9yIik7aWYodCl7bGV0IGE9dC52YWx1ZS5sZW5ndGg7dC5zZWxlY3Rpb25TdGFydD10LnNlbGVjdGlvbkVuZD1hLHQuZm9jdXMoKX1lbHNlIHRoaXMuZm9jdXMoZSl9Zm9jdXMoZSl7bGV0IHQ9ZS5xdWVyeVNlbGVjdG9yKCIuaHRtbC1lZGl0b3IiKTt0P3QuZm9jdXMoKTplLnF1ZXJ5U2VsZWN0b3IoIi5odG1sLXByZXZpZXciKT8uZm9jdXMoKX1mb2N1c1dpdGhDdXJzb3IoZSx0PSJlbmQiKXtsZXQgYT1lLnF1ZXJ5U2VsZWN0b3IoIi5odG1sLWVkaXRvciIpO2E/dD09PSJzdGFydCI/dGhpcy5zZXRDdXJzb3JUb1N0YXJ0KGUpOnQ9PT0iZW5kIj90aGlzLnNldEN1cnNvclRvRW5kKGUpOnR5cGVvZiB0PT0ibnVtYmVyIiYmKGEuc2VsZWN0aW9uU3RhcnQ9YS5zZWxlY3Rpb25FbmQ9dCxhLmZvY3VzKCkpOnRoaXMuZm9jdXMoZSl9Z2V0U3BsaXRDb250ZW50KGUpe2xldCB0PWUucXVlcnlTZWxlY3RvcigiLmh0bWwtZWRpdG9yIik7aWYoIXQpcmV0dXJuIG51bGw7bGV0IGE9dC5zZWxlY3Rpb25TdGFydDtyZXR1cm57YmVmb3JlOnQudmFsdWUuc3Vic3RyaW5nKDAsYSksYWZ0ZXI6dC52YWx1ZS5zdWJzdHJpbmcoYSl9fWdldFN0eWxlcygpe3JldHVybmAKICAgICAgLyogSFRNTCBCbG9jayBDb250YWluZXIgKi8KICAgICAgLmh0bWwtYmxvY2stY29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgbWFyZ2luOiAxMnB4IDA7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMzc0MTUxIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzExMTgyNyIpfTsKICAgICAgfQogICAgICAKICAgICAgLmh0bWwtYmxvY2stY29udGFpbmVyLnNlbGVjdGVkIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjOWNhM2FmIiwiIzZiNzI4MCIpfTsKICAgICAgfQogICAgICAKICAgICAgLyogSGVhZGVyICovCiAgICAgIC5odG1sLWhlYWRlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMzNzQxNTEiKX07CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmOWZhZmIiLCIjMGEwYTBhIil9OwogICAgICB9CiAgICAgIAogICAgICAuaHRtbC1pY29uIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBvcGFjaXR5OiAwLjg7CiAgICAgICAgZm9udC1mYW1pbHk6ICdNb25hY28nLCAnQ29uc29sYXMnLCAnQ291cmllciBOZXcnLCBtb25vc3BhY2U7CiAgICAgIH0KICAgICAgCiAgICAgIC5odG1sLXRpdGxlIHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzM3NDE1MSIsIiNlNWU3ZWIiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5odG1sLXRvZ2dsZS1tb2RlIHsKICAgICAgICBwYWRkaW5nOiA0cHggOHB4OwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzM3NDE1MSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgfQogICAgICAKICAgICAgLmh0bWwtdG9nZ2xlLW1vZGU6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjNmNGY2IiwiIzFmMjkzNyIpfTsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjZDFkNWRiIiwiIzRiNTU2MyIpfTsKICAgICAgfQogICAgICAKICAgICAgLyogQ29udGVudCAqLwogICAgICAuaHRtbC1jb250ZW50IHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgbWluLWhlaWdodDogMTIwcHg7CiAgICAgIH0KICAgICAgCiAgICAgIC8qIEVkaXRvciAqLwogICAgICAuaHRtbC1lZGl0b3IgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1pbi1oZWlnaHQ6IDEyMHB4OwogICAgICAgIHBhZGRpbmc6IDEycHg7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgcmVzaXplOiBub25lOwogICAgICAgIGZvbnQtZmFtaWx5OiAnTW9uYWNvJywgJ0NvbnNvbGFzJywgJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzFmMjkzNyIsIiNmM2Y0ZjYiKX07CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQogICAgICAKICAgICAgLmh0bWwtZWRpdG9yOjpwbGFjZWhvbGRlciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjOWNhM2FmIiwiIzZiNzI4MCIpfTsKICAgICAgfQogICAgICAKICAgICAgLyogUHJldmlldyAqLwogICAgICAuaHRtbC1wcmV2aWV3IHsKICAgICAgICBwYWRkaW5nOiAxMnB4OwogICAgICAgIG1pbi1oZWlnaHQ6IDk2cHg7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxZjI5MzciLCIjZjNmNGY2Iil9OwogICAgICB9CiAgICAgIAogICAgICAucHJldmlldy1lbXB0eSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjOWNhM2FmIiwiIzZiNzI4MCIpfTsKICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgIH0KICAgICAgCiAgICAgIC8qIFNhbmRib3hlZCBIVE1MIHByZXZpZXcgc3R5bGVzICovCiAgICAgIC5odG1sLXByZXZpZXcgKiB7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICB9CiAgICAgIAogICAgICAuaHRtbC1wcmV2aWV3IGltZyB7CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICB9CiAgICAgIAogICAgICAuaHRtbC1wcmV2aWV3IGEgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzNiODJmNiIsIiM2MGE1ZmEiKX07CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICB9CiAgICAgIAogICAgICAuaHRtbC1wcmV2aWV3IGE6aG92ZXIgewogICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogICAgICB9CiAgICAgIAogICAgICAuaHRtbC1wcmV2aWV3IHRhYmxlIHsKICAgICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1hcmdpbjogOHB4IDA7CiAgICAgIH0KICAgICAgCiAgICAgIC5odG1sLXByZXZpZXcgdGgsCiAgICAgIC5odG1sLXByZXZpZXcgdGQgewogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzM3NDE1MSIpfTsKICAgICAgICBwYWRkaW5nOiA4cHg7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgfQogICAgICAKICAgICAgLmh0bWwtcHJldmlldyB0aCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmOWZhZmIiLCIjMWYyOTM3Iil9OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIH0KICAgICAgCiAgICAgIC5odG1sLXByZXZpZXcgcHJlIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2YzZjRmNiIsIiMxZjI5MzciKX07CiAgICAgICAgcGFkZGluZzogMTJweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKICAgICAgICBtYXJnaW46IDhweCAwOwogICAgICB9CiAgICAgIAogICAgICAuaHRtbC1wcmV2aWV3IGNvZGUgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjNmNGY2IiwiIzFmMjkzNyIpfTsKICAgICAgICBwYWRkaW5nOiAycHggNHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICBmb250LWZhbWlseTogJ01vbmFjbycsICdDb25zb2xhcycsICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTsKICAgICAgICBmb250LXNpemU6IDAuOWVtOwogICAgICB9CiAgICAgIAogICAgICAuaHRtbC1wcmV2aWV3IHByZSBjb2RlIHsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICB9CiAgICBgfX19KTt2YXIgcGl0PWcoKCk9PntZbCgpO08wYSgpO0YwYSgpO0IwYSgpO0gwYSgpO3EwYSgpO2EzYSgpO3MzYSgpO2kzYSgpO3IzYSgpO28zYSgpO24zYSgpO2wzYSgpO2MzYSgpfSk7ZnVuY3Rpb24gZDNhKCl7SXMucmVnaXN0ZXIoImRpdmlkZXIiLG5ldyBFWCksSXMucmVnaXN0ZXIoInBhcmFncmFwaCIsbmV3IFBaKSxJcy5yZWdpc3RlcigiaGVhZGluZy0xIixuZXcgcTgoImhlYWRpbmctMSIpKSxJcy5yZWdpc3RlcigiaGVhZGluZy0yIixuZXcgcTgoImhlYWRpbmctMiIpKSxJcy5yZWdpc3RlcigiaGVhZGluZy0zIixuZXcgcTgoImhlYWRpbmctMyIpKSxJcy5yZWdpc3RlcigicXVvdGUiLG5ldyBJWiksSXMucmVnaXN0ZXIoImNvZGUiLG5ldyBDWCksSXMucmVnaXN0ZXIoImxpc3QiLG5ldyBUWCksSXMucmVnaXN0ZXIoImltYWdlIixuZXcgJFgpLElzLnJlZ2lzdGVyKCJ5b3V0dWJlIixuZXcgRFgpLElzLnJlZ2lzdGVyKCJhdHRhY2htZW50IixuZXcgTFgpLElzLnJlZ2lzdGVyKCJtYXJrZG93biIsbmV3IFBYKSxJcy5yZWdpc3RlcigiaHRtbCIsbmV3IElYKX12YXIgaGl0PWcoKCk9PntwaXQoKTtpKGQzYSwicmVnaXN0ZXJBbGxCbG9ja0hhbmRsZXJzIiksZDNhKCl9KTt2YXIgQVgsZml0PWcoKCk9PntwZSgpO0owKCk7TWwoKTtCOCgpO05uZSgpO0FYPWNsYXNze3N0YXRpY3tpKHRoaXMsIld5c2l3eWdNb2RhbE1hbmFnZXIiKX1zdGF0aWMgYXN5bmMgc2hvd0xhbmd1YWdlU2VsZWN0aW9uTW9kYWwoKXtyZXR1cm4gbmV3IFByb21pc2UoZT0+e2xldCB0PW51bGw7UWEuY3JlYXRlQW5kU2hvdyh7aGVhZGluZzoiU2VsZWN0IFByb2dyYW1taW5nIExhbmd1YWdlIixjb250ZW50OndgCiAgICAgICAgICA8c3R5bGU+CiAgICAgICAgICAgIC5sYW5ndWFnZS1jb250YWluZXIgewogICAgICAgICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgICAgICAgbWF4LWhlaWdodDogNDAwcHg7CiAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICAgICAgfQogICAgICAgICAgICAubGFuZ3VhZ2UtZ3JpZCB7CiAgICAgICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgxMjBweCwgMWZyKSk7CiAgICAgICAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLmxhbmd1YWdlLWJ1dHRvbiB7CiAgICAgICAgICAgICAgcGFkZGluZzogMTJweCA4cHg7CiAgICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMzc0MTUxIil9OwogICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzM3NDE1MSIsIiNlNWU3ZWIiKX07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLmxhbmd1YWdlLWJ1dHRvbjpob3ZlciB7CiAgICAgICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmOWZhZmIiLCIjMWYyOTM3Iil9OwogICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiNkMWQ1ZGIiLCIjNGI1NTYzIil9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIC5sYW5ndWFnZS1idXR0b24uc2VsZWN0ZWQgewogICAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjNmNGY2IiwiIzM3NDE1MSIpfTsKICAgICAgICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjOWNhM2FmIiwiIzZiNzI4MCIpfTsKICAgICAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxMTE4MjciLCIjZjlmYWZiIil9OwogICAgICAgICAgICB9CiAgICAgICAgICA8L3N0eWxlPgogICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ3VhZ2UtY29udGFpbmVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ3VhZ2UtZ3JpZCI+CiAgICAgICAgICAgICAgJHt0aGlzLmdldExhbmd1YWdlcygpLm1hcChhPT53YAogICAgICAgICAgICAgICAgPGRpdiAKICAgICAgICAgICAgICAgICAgY2xhc3M9Imxhbmd1YWdlLWJ1dHRvbiAke3Q9PT1hLnRvTG93ZXJDYXNlKCk/InNlbGVjdGVkIjoiIn0iIAogICAgICAgICAgICAgICAgICBAY2xpY2s9IiR7KCk9Pnt0PWEudG9Mb3dlckNhc2UoKTtsZXQgcj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkZWVzLW1vZGFsIik7ciYmdHlwZW9mIHIuZGVzdHJveT09ImZ1bmN0aW9uIiYmci5kZXN0cm95KCksZSh0KX19Ij4KICAgICAgICAgICAgICAgICAgJHthfQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgYCl9CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgYCxtZW51T3B0aW9uczpbe25hbWU6IkNhbmNlbCIsYWN0aW9uOmkoYXN5bmMgYT0+e2EuZGVzdHJveSgpLGUobnVsbCl9LCJhY3Rpb24iKX1dfSl9KX1zdGF0aWMgYXN5bmMgc2hvd0Jsb2NrU2V0dGluZ3NNb2RhbChlLHQpe2xldCBhPXdgCiAgICAgIDxzdHlsZT4KICAgICAgICAuc2V0dGluZ3MtY29udGFpbmVyIHsKICAgICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgfQogICAgICAgIC5zZXR0aW5ncy1zZWN0aW9uIHsKICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgICAgfQogICAgICAgIC5zZXR0aW5ncy1zZWN0aW9uOmxhc3QtY2hpbGQgewogICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgICB9CiAgICAgICAgLnNldHRpbmdzLWxhYmVsIHsKICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM2YjcyODAiLCIjOWNhM2FmIil9OwogICAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07CiAgICAgICAgfQogICAgICAgIC5ibG9jay10eXBlLWdyaWQgewogICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDE2MHB4LCAxZnIpKTsKICAgICAgICAgIGdhcDogOHB4OwogICAgICAgIH0KICAgICAgICAuYmxvY2stdHlwZS1idXR0b24gewogICAgICAgICAgcGFkZGluZzogMTJweDsKICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMzc0MTUxIil9OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBnYXA6IDhweDsKICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzM3NDE1MSIsIiNlNWU3ZWIiKX07CiAgICAgICAgfQogICAgICAgIC5ibG9jay10eXBlLWJ1dHRvbjpob3ZlciB7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y5ZmFmYiIsIiMxZjI5MzciKX07CiAgICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjZDFkNWRiIiwiIzRiNTU2MyIpfTsKICAgICAgICB9CiAgICAgICAgLmJsb2NrLXR5cGUtYnV0dG9uLnNlbGVjdGVkIHsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjNmNGY2IiwiIzM3NDE1MSIpfTsKICAgICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiM5Y2EzYWYiLCIjNmI3MjgwIil9OwogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTExODI3IiwiI2Y5ZmFmYiIpfTsKICAgICAgICB9CiAgICAgICAgLmJsb2NrLXR5cGUtaWNvbiB7CiAgICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICAgIG9wYWNpdHk6IDAuNzsKICAgICAgICB9CiAgICAgIDwvc3R5bGU+CiAgICAgIDxkaXYgY2xhc3M9InNldHRpbmdzLWNvbnRhaW5lciI+CiAgICAgICAgJHt0aGlzLmdldEJsb2NrVHlwZVNlbGVjdG9yKGUsdCl9CiAgICAgICAgJHtlLnR5cGU9PT0iY29kZSI/dGhpcy5nZXRDb2RlQmxvY2tTZXR0aW5ncyhlLHQpOiIifQogICAgICA8L2Rpdj4KICAgIGA7UWEuY3JlYXRlQW5kU2hvdyh7aGVhZGluZzoiQmxvY2sgU2V0dGluZ3MiLGNvbnRlbnQ6YSxtZW51T3B0aW9uczpbe25hbWU6IkRvbmUiLGFjdGlvbjppKGFzeW5jIHI9PntyLmRlc3Ryb3koKX0sImFjdGlvbiIpfV19KX1zdGF0aWMgZ2V0Q29kZUJsb2NrU2V0dGluZ3MoZSx0KXtsZXQgYT1lLm1ldGFkYXRhPy5sYW5ndWFnZXx8ImphdmFzY3JpcHQiO3JldHVybiB3YAogICAgICA8c3R5bGU+CiAgICAgICAgLmxhbmd1YWdlLWdyaWQgewogICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDEwMHB4LCAxZnIpKTsKICAgICAgICAgIGdhcDogNnB4OwogICAgICAgIH0KICAgICAgICAubGFuZ3VhZ2UtYnV0dG9uIHsKICAgICAgICAgIHBhZGRpbmc6IDhweCA0cHg7CiAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzM3NDE1MSIpfTsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMzc0MTUxIiwiI2U1ZTdlYiIpfTsKICAgICAgICB9CiAgICAgICAgLmxhbmd1YWdlLWJ1dHRvbjpob3ZlciB7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y5ZmFmYiIsIiMxZjI5MzciKX07CiAgICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjZDFkNWRiIiwiIzRiNTU2MyIpfTsKICAgICAgICB9CiAgICAgICAgLmxhbmd1YWdlLWJ1dHRvbi5zZWxlY3RlZCB7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2YzZjRmNiIsIiMzNzQxNTEiKX07CiAgICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjOWNhM2FmIiwiIzZiNzI4MCIpfTsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzExMTgyNyIsIiNmOWZhZmIiKX07CiAgICAgICAgfQogICAgICA8L3N0eWxlPgogICAgICA8ZGl2IGNsYXNzPSJzZXR0aW5ncy1zZWN0aW9uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZXR0aW5ncy1sYWJlbCI+UHJvZ3JhbW1pbmcgTGFuZ3VhZ2U8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJsYW5ndWFnZS1ncmlkIj4KICAgICAgICAgICR7dGhpcy5nZXRMYW5ndWFnZXMoKS5tYXAocj0+d2AKICAgICAgICAgICAgPGRpdiAKICAgICAgICAgICAgICBjbGFzcz0ibGFuZ3VhZ2UtYnV0dG9uICR7YT09PXIudG9Mb3dlckNhc2UoKT8ic2VsZWN0ZWQiOiIifSIgCiAgICAgICAgICAgICAgQGNsaWNrPSIkeygpPT57ZS5tZXRhZGF0YXx8KGUubWV0YWRhdGE9e30pLGUubWV0YWRhdGEubGFuZ3VhZ2U9ci50b0xvd2VyQ2FzZSgpLHQoZSk7bGV0IG49ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGVlcy1tb2RhbCIpO24mJnR5cGVvZiBuLmRlc3Ryb3k9PSJmdW5jdGlvbiImJm4uZGVzdHJveSgpfX0iCiAgICAgICAgICAgICAgZGF0YS1sYW5nPSIke3J9IgogICAgICAgICAgICA+JHtyfTwvZGl2PgogICAgICAgICAgYCl9CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1zdGF0aWMgZ2V0TGFuZ3VhZ2VzKCl7cmV0dXJuWy4uLkxaXX1zdGF0aWMgZ2V0QmxvY2tUeXBlU2VsZWN0b3IoZSx0KXtsZXQgYT1jci5nZXRTbGFzaE1lbnVJdGVtcygpLmZpbHRlcihyPT5yLnR5cGUhPT0iZGl2aWRlciIpO3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJzZXR0aW5ncy1zZWN0aW9uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZXR0aW5ncy1sYWJlbCI+QmxvY2sgVHlwZTwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrLXR5cGUtZ3JpZCI+CiAgICAgICAgICAke2EubWFwKHI9PndgCiAgICAgICAgICAgIDxkaXYgCiAgICAgICAgICAgICAgY2xhc3M9ImJsb2NrLXR5cGUtYnV0dG9uICR7ZS50eXBlPT09ci50eXBlPyJzZWxlY3RlZCI6IiJ9IgogICAgICAgICAgICAgIEBjbGljaz0iJHthc3luYyBuPT57bGV0IG89bi5jdXJyZW50VGFyZ2V0LGw9ZS50eXBlO2lmKGUudHlwZT1yLnR5cGUsbD09PSJjb2RlIiYmZS50eXBlIT09ImNvZGUiKWRlbGV0ZSBlLm1ldGFkYXRhPy5sYW5ndWFnZTtlbHNlIGlmKGw9PT0ibGlzdCImJmUudHlwZSE9PSJsaXN0IilkZWxldGUgZS5tZXRhZGF0YT8ubGlzdFR5cGU7ZWxzZSBpZihlLnR5cGU9PT0ibGlzdCImJiFlLm1ldGFkYXRhPy5saXN0VHlwZSllLm1ldGFkYXRhPXtsaXN0VHlwZToiYnVsbGV0In07ZWxzZSBpZihlLnR5cGU9PT0iY29kZSImJiFlLm1ldGFkYXRhPy5sYW5ndWFnZSl7bGV0IGQ9YXdhaXQgdGhpcy5zaG93TGFuZ3VhZ2VTZWxlY3Rpb25Nb2RhbCgpO2lmKGQpZS5tZXRhZGF0YT17bGFuZ3VhZ2U6ZH07ZWxzZXtlLnR5cGU9bDtyZXR1cm59fXQoZSk7bGV0IHA9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGVlcy1tb2RhbCIpO3AmJnR5cGVvZiBwLmRlc3Ryb3k9PSJmdW5jdGlvbiImJnAuZGVzdHJveSgpfX0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYmxvY2stdHlwZS1pY29uIj4ke3IuaWNvbn08L3NwYW4+CiAgICAgICAgICAgICAgPHNwYW4+JHtyLmxhYmVsfTwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgKX0KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfX19KTt2YXIgTlgsdTNhPWcoKCk9PntNbCgpO2d2KCk7QjgoKTtpdSgpO2N0dCgpO2ZpdCgpO05YPWNsYXNze3N0YXRpY3tpKHRoaXMsIld5c2l3eWdJbnB1dEhhbmRsZXIiKX1jb21wb25lbnQ7c2F2ZVRpbWVvdXQ9bnVsbDtjb25zdHJ1Y3RvcihlKXt0aGlzLmNvbXBvbmVudD1lfWhhbmRsZUJsb2NrSW5wdXQoZSx0KXtpZih0aGlzLmNvbXBvbmVudC5pc0NvbXBvc2luZylyZXR1cm47bGV0IGE9ZS50YXJnZXQscj1hLnRleHRDb250ZW50fHwiIixuPXRoaXMuZGV0ZWN0QmxvY2tUeXBlSW50ZW50KHIpO2lmKG4mJm4udHlwZSE9PXQudHlwZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuaGFuZGxlQmxvY2tUcmFuc2Zvcm1hdGlvbih0LG4sYSk7cmV0dXJufXRoaXMuaGFuZGxlU2xhc2hDb21tYW5kKHIsYSksdGhpcy5zY2hlZHVsZUF1dG9TYXZlKCl9dXBkYXRlQmxvY2tDb250ZW50KGUsdCl7bGV0IHI9dC5jbG9zZXN0KCIuYmxvY2std3JhcHBlciIpPy5xdWVyeVNlbGVjdG9yKCJkZWVzLXd5c2l3eWctYmxvY2siKTtpZihyKXtsZXQgbj1yLmdldENvbnRlbnQoKTtpZihlLmNvbnRlbnQhPT1uJiYoZS5jb250ZW50PW4pLGUudHlwZT09PSJsaXN0Iil7bGV0IG89dC5xdWVyeVNlbGVjdG9yKCJvbCwgdWwiKTtvJiYoZS5tZXRhZGF0YT17bGlzdFR5cGU6by50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PT0ib2wiPyJvcmRlcmVkIjoiYnVsbGV0In0pfX1lbHNlIGlmKGUudHlwZT09PSJsaXN0Iil7bGV0IG49dC5xdWVyeVNlbGVjdG9yQWxsKCJsaSIpO2UuY29udGVudD1BcnJheS5mcm9tKG4pLm1hcChsPT5sLmlubmVySFRNTHx8IiIpLmpvaW4oYApgKTtsZXQgbz10LnF1ZXJ5U2VsZWN0b3IoIm9sLCB1bCIpO28mJihlLm1ldGFkYXRhPXtsaXN0VHlwZTpvLnRhZ05hbWUudG9Mb3dlckNhc2UoKT09PSJvbCI/Im9yZGVyZWQiOiJidWxsZXQifSl9ZWxzZSBlLnR5cGU9PT0iY29kZSI/ZS5jb250ZW50PXQudGV4dENvbnRlbnR8fCIiOmUuY29udGVudD10LmlubmVySFRNTHx8IiJ9ZGV0ZWN0QmxvY2tUeXBlSW50ZW50KGUpe2xldCB0PWNyLmNoZWNrSGVhZGluZ1Nob3J0Y3V0KGUpO2lmKHQpcmV0dXJuIHQ7bGV0IGE9Y3IuY2hlY2tMaXN0U2hvcnRjdXQoZSk7cmV0dXJuIGF8fChjci5jaGVja1F1b3RlU2hvcnRjdXQoZSk/e3R5cGU6InF1b3RlIn06Y3IuY2hlY2tDb2RlU2hvcnRjdXQoZSk/e3R5cGU6ImNvZGUifTpjci5jaGVja0RpdmlkZXJTaG9ydGN1dChlKT97dHlwZToiZGl2aWRlciJ9Om51bGwpfWFzeW5jIGhhbmRsZUJsb2NrVHJhbnNmb3JtYXRpb24oZSx0LGEpe2xldCByPXRoaXMuY29tcG9uZW50LmJsb2NrT3BlcmF0aW9ucztpZih0LnR5cGU9PT0ibGlzdCIpe2UudHlwZT0ibGlzdCIsZS5jb250ZW50PSIiLGUubWV0YWRhdGE9e2xpc3RUeXBlOnQubGlzdFR5cGV9O2xldCBuPXQubGlzdFR5cGU9PT0ib3JkZXJlZCI/Im9sIjoidWwiO2EuaW5uZXJIVE1MPWA8JHtufT48bGk+PC9saT48LyR7bn0+YCx0aGlzLmNvbXBvbmVudC51cGRhdGVWYWx1ZSgpLHRoaXMuY29tcG9uZW50LmVkaXRvckNvbnRlbnRSZWYmJnRoaXMuY29tcG9uZW50LnVwZGF0ZUJsb2NrRWxlbWVudChlLmlkKSxzZXRUaW1lb3V0KCgpPT57Q28uZm9jdXNMaXN0SXRlbShhKX0sMCl9ZWxzZSBpZih0LnR5cGU9PT0iZGl2aWRlciIpe2UudHlwZT0iZGl2aWRlciIsZS5jb250ZW50PSIgIix0aGlzLmNvbXBvbmVudC5lZGl0b3JDb250ZW50UmVmJiZ0aGlzLmNvbXBvbmVudC51cGRhdGVCbG9ja0VsZW1lbnQoZS5pZCk7bGV0IG49ci5jcmVhdGVCbG9jaygpO3IuaW5zZXJ0QmxvY2tBZnRlcihlLG4pLHRoaXMuY29tcG9uZW50LnVwZGF0ZVZhbHVlKCl9ZWxzZSBpZih0LnR5cGU9PT0iY29kZSIpe2xldCBuPWF3YWl0IEFYLnNob3dMYW5ndWFnZVNlbGVjdGlvbk1vZGFsKCk7biYmKGUudHlwZT0iY29kZSIsZS5jb250ZW50PSIiLGUubWV0YWRhdGE9e2xhbmd1YWdlOm59LGEudGV4dENvbnRlbnQ9IiIsdGhpcy5jb21wb25lbnQudXBkYXRlVmFsdWUoKSx0aGlzLmNvbXBvbmVudC5lZGl0b3JDb250ZW50UmVmJiZ0aGlzLmNvbXBvbmVudC51cGRhdGVCbG9ja0VsZW1lbnQoZS5pZCksc2V0VGltZW91dChhc3luYygpPT57YXdhaXQgci5mb2N1c0Jsb2NrKGUuaWQsInN0YXJ0Iil9LDUwKSl9ZWxzZSBlLnR5cGU9dC50eXBlLGUuY29udGVudD0iIixhLnRleHRDb250ZW50PSIiLHRoaXMuY29tcG9uZW50LnVwZGF0ZVZhbHVlKCksdGhpcy5jb21wb25lbnQuZWRpdG9yQ29udGVudFJlZiYmdGhpcy5jb21wb25lbnQudXBkYXRlQmxvY2tFbGVtZW50KGUuaWQpLHNldFRpbWVvdXQoYXN5bmMoKT0+e2F3YWl0IHIuZm9jdXNCbG9jayhlLmlkLCJzdGFydCIpfSw1MCl9aGFuZGxlU2xhc2hDb21tYW5kKGUsdCl7bGV0IGE9dGhpcy5jb21wb25lbnQuc2xhc2hNZW51LHI9YSYmYS52aXNpYmxlO2lmKGU9PT0iLyJ8fGUuc3RhcnRzV2l0aCgiLyIpJiZyKXtpZighciYmZT09PSIvIil7bGV0IG49dGhpcy5nZXRDYXJldENvb3JkaW5hdGVzKHQpO2Euc2hvdyh7eDpuLmxlZnQseTpuLmJvdHRvbSs0fSxvPT57dGhpcy5jb21wb25lbnQuaW5zZXJ0QmxvY2sobyl9KSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pntkb2N1bWVudC5hY3RpdmVFbGVtZW50IT09dCYmdC5mb2N1cygpfSl9YSYmYS51cGRhdGVGaWx0ZXIoZS5zbGljZSgxKSl9ZWxzZSBlLnN0YXJ0c1dpdGgoIi8iKXx8dGhpcy5jb21wb25lbnQuY2xvc2VTbGFzaE1lbnUoKX1nZXRDYXJldENvb3JkaW5hdGVzKGUpe2xldCB0PXdpbmRvdy5nZXRTZWxlY3Rpb24oKTtpZih0JiZ0LnJhbmdlQ291bnQ+MCl7bGV0IHI9dC5nZXRSYW5nZUF0KDApLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKHIud2lkdGg+MHx8ci5oZWlnaHQ+MClyZXR1cm4gcn1yZXR1cm4gZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1zY2hlZHVsZUF1dG9TYXZlKCl7dGhpcy5zYXZlVGltZW91dCYmY2xlYXJUaW1lb3V0KHRoaXMuc2F2ZVRpbWVvdXQpLCEodGhpcy5jb21wb25lbnQuc2xhc2hNZW51JiZ0aGlzLmNvbXBvbmVudC5zbGFzaE1lbnUudmlzaWJsZSkmJih0aGlzLnNhdmVUaW1lb3V0PXNldFRpbWVvdXQoKCk9Pnt0aGlzLnN5bmNBbGxCbG9ja0NvbnRlbnQoKSx0aGlzLmNvbXBvbmVudC51cGRhdGVWYWx1ZSgpfSwyZTMpKX1zeW5jQWxsQmxvY2tDb250ZW50KCl7dGhpcy5jb21wb25lbnQuYmxvY2tzLmZvckVhY2goZT0+e2xldCBhPXRoaXMuY29tcG9uZW50LnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWJsb2NrLWlkPSIke2UuaWR9Il1gKT8ucXVlcnlTZWxlY3RvcigiZGVlcy13eXNpd3lnLWJsb2NrIik7aWYoYSYmYS5nZXRDb250ZW50KXtsZXQgcj1hLmdldENvbnRlbnQoKTtlLmNvbnRlbnQhPT1yJiYoZS5jb250ZW50PXIpfX0pfWRlc3Ryb3koKXt0aGlzLnNhdmVUaW1lb3V0JiZjbGVhclRpbWVvdXQodGhpcy5zYXZlVGltZW91dCl9fX0pO3ZhciBSWCxwM2E9ZygoKT0+e01sKCk7Z3YoKTtEZCgpO1JYPWNsYXNze3N0YXRpY3tpKHRoaXMsIld5c2l3eWdLZXlib2FyZEhhbmRsZXIiKX1jb21wb25lbnQ7Y29uc3RydWN0b3IoZSl7dGhpcy5jb21wb25lbnQ9ZX1hc3luYyBoYW5kbGVCbG9ja0tleURvd24oZSx0KXtpZih0aGlzLmNvbXBvbmVudC5zbGFzaE1lbnUudmlzaWJsZSYmdGhpcy5pc1NsYXNoTWVudUtleShlLmtleSkpe3RoaXMuY29tcG9uZW50LmhhbmRsZVNsYXNoTWVudUtleWJvYXJkKGUpO3JldHVybn1pZighdGhpcy5oYW5kbGVGb3JtYXR0aW5nU2hvcnRjdXRzKGUpKXN3aXRjaChlLmtleSl7Y2FzZSJUYWIiOnRoaXMuaGFuZGxlVGFiKGUsdCk7YnJlYWs7Y2FzZSJFbnRlciI6YXdhaXQgdGhpcy5oYW5kbGVFbnRlcihlLHQpO2JyZWFrO2Nhc2UiQmFja3NwYWNlIjphd2FpdCB0aGlzLmhhbmRsZUJhY2tzcGFjZShlLHQpO2JyZWFrO2Nhc2UiRGVsZXRlIjphd2FpdCB0aGlzLmhhbmRsZURlbGV0ZShlLHQpO2JyZWFrO2Nhc2UiQXJyb3dVcCI6YXdhaXQgdGhpcy5oYW5kbGVBcnJvd1VwKGUsdCk7YnJlYWs7Y2FzZSJBcnJvd0Rvd24iOmF3YWl0IHRoaXMuaGFuZGxlQXJyb3dEb3duKGUsdCk7YnJlYWs7Y2FzZSJBcnJvd0xlZnQiOmF3YWl0IHRoaXMuaGFuZGxlQXJyb3dMZWZ0KGUsdCk7YnJlYWs7Y2FzZSJBcnJvd1JpZ2h0Ijphd2FpdCB0aGlzLmhhbmRsZUFycm93UmlnaHQoZSx0KTticmVha319aXNTbGFzaE1lbnVLZXkoZSl7cmV0dXJuWyJBcnJvd0Rvd24iLCJBcnJvd1VwIiwiRW50ZXIiLCJFc2NhcGUiXS5pbmNsdWRlcyhlKX1oYW5kbGVGb3JtYXR0aW5nU2hvcnRjdXRzKGUpe2lmKCEoZS5tZXRhS2V5fHxlLmN0cmxLZXkpKXJldHVybiExO3N3aXRjaChlLmtleS50b0xvd2VyQ2FzZSgpKXtjYXNlImIiOnJldHVybiBlLnByZXZlbnREZWZhdWx0KCksUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+dGhpcy5jb21wb25lbnQuYXBwbHlGb3JtYXQoImJvbGQiKSksITA7Y2FzZSJpIjpyZXR1cm4gZS5wcmV2ZW50RGVmYXVsdCgpLFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnRoaXMuY29tcG9uZW50LmFwcGx5Rm9ybWF0KCJpdGFsaWMiKSksITA7Y2FzZSJ1IjpyZXR1cm4gZS5wcmV2ZW50RGVmYXVsdCgpLFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnRoaXMuY29tcG9uZW50LmFwcGx5Rm9ybWF0KCJ1bmRlcmxpbmUiKSksITA7Y2FzZSJrIjpyZXR1cm4gZS5wcmV2ZW50RGVmYXVsdCgpLFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnRoaXMuY29tcG9uZW50LmFwcGx5Rm9ybWF0KCJsaW5rIikpLCEwfXJldHVybiExfWhhbmRsZVRhYihlLHQpe3QudHlwZSE9PSJjb2RlIiYmdC50eXBlPT09Imxpc3QiJiZlLnByZXZlbnREZWZhdWx0KCl9YXN5bmMgaGFuZGxlRW50ZXIoZSx0KXtsZXQgYT10aGlzLmNvbXBvbmVudC5ibG9ja09wZXJhdGlvbnM7aWYoWyJkaXZpZGVyIiwiaW1hZ2UiLCJ5b3V0dWJlIiwiYXR0YWNobWVudCJdLmluY2x1ZGVzKHQudHlwZSkpe2UucHJldmVudERlZmF1bHQoKTtsZXQgbj1hLmNyZWF0ZUJsb2NrKCk7YXdhaXQgYS5pbnNlcnRCbG9ja0FmdGVyKHQsbik7cmV0dXJufWlmKHQudHlwZT09PSJjb2RlIil7aWYoZS5zaGlmdEtleSl7ZS5wcmV2ZW50RGVmYXVsdCgpO2xldCBuPWEuY3JlYXRlQmxvY2soKTthd2FpdCBhLmluc2VydEJsb2NrQWZ0ZXIodCxuKX1yZXR1cm59aWYoIWUuc2hpZnRLZXkpaWYodC50eXBlPT09Imxpc3QiKWF3YWl0IHRoaXMuaGFuZGxlRW50ZXJJbkxpc3QoZSx0KTtlbHNle2UucHJldmVudERlZmF1bHQoKTtsZXQgbz10aGlzLmNvbXBvbmVudC5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKGBbZGF0YS1ibG9jay1pZD0iJHt0LmlkfSJdYCk/LnF1ZXJ5U2VsZWN0b3IoImRlZXMtd3lzaXd5Zy1ibG9jayIpO2lmKG8mJm8uZ2V0U3BsaXRDb250ZW50KXtsZXQgbD1vLmdldFNwbGl0Q29udGVudCgpO2lmKGwpe28uc2V0Q29udGVudChsLmJlZm9yZSksdC5jb250ZW50PWwuYmVmb3JlO2xldCBwPWEuY3JlYXRlQmxvY2soInBhcmFncmFwaCIsbC5hZnRlcik7YXdhaXQgYS5pbnNlcnRCbG9ja0FmdGVyKHQscCksdGhpcy5jb21wb25lbnQudXBkYXRlVmFsdWUoKX1lbHNle2xldCBwPWEuY3JlYXRlQmxvY2soKTthd2FpdCBhLmluc2VydEJsb2NrQWZ0ZXIodCxwKX19ZWxzZXtsZXQgbD1hLmNyZWF0ZUJsb2NrKCk7YXdhaXQgYS5pbnNlcnRCbG9ja0FmdGVyKHQsbCl9fX1hc3luYyBoYW5kbGVFbnRlckluTGlzdChlLHQpe2xldCBhPXdpbmRvdy5nZXRTZWxlY3Rpb24oKTtpZihhJiZhLnJhbmdlQ291bnQ+MCl7bGV0IG49YS5nZXRSYW5nZUF0KDApLnN0YXJ0Q29udGFpbmVyLnBhcmVudEVsZW1lbnQ/LmNsb3Nlc3QoImxpIik7aWYobiYmbi50ZXh0Q29udGVudD09PSIiKXtlLnByZXZlbnREZWZhdWx0KCk7bGV0IG89dGhpcy5jb21wb25lbnQuYmxvY2tPcGVyYXRpb25zLGw9by5jcmVhdGVCbG9jaygpO2F3YWl0IG8uaW5zZXJ0QmxvY2tBZnRlcih0LGwpfX19YXN5bmMgaGFuZGxlQmFja3NwYWNlKGUsdCl7bGV0IGE9dGhpcy5jb21wb25lbnQuYmxvY2tPcGVyYXRpb25zO2lmKFsiZGl2aWRlciIsImltYWdlIiwieW91dHViZSIsImF0dGFjaG1lbnQiXS5pbmNsdWRlcyh0LnR5cGUpKXtpZihlLnByZXZlbnREZWZhdWx0KCksdGhpcy5jb21wb25lbnQuYmxvY2tzLmxlbmd0aD09PTEpe3RoaXMuY29tcG9uZW50LnNhdmVUb0hpc3RvcnkoITEpLGEucmVtb3ZlQmxvY2sodC5pZCk7bGV0IHg9YS5jcmVhdGVCbG9jaygicGFyYWdyYXBoIiwiIik7dGhpcy5jb21wb25lbnQuYmxvY2tzPVt4XSx0aGlzLmNvbXBvbmVudC5yZW5kZXJCbG9ja3NQcm9ncmFtbWF0aWNhbGx5KCksYXdhaXQgYS5mb2N1c0Jsb2NrKHguaWQsInN0YXJ0IiksdGhpcy5jb21wb25lbnQudXBkYXRlVmFsdWUoKTtyZXR1cm59dGhpcy5jb21wb25lbnQuc2F2ZVRvSGlzdG9yeSghMSk7bGV0IGI9YS5nZXRQcmV2aW91c0Jsb2NrKHQuaWQpLHY9YS5nZXROZXh0QmxvY2sodC5pZCk7YS5yZW1vdmVCbG9jayh0LmlkKSxiJiZiLnR5cGUhPT0iZGl2aWRlciImJmIudHlwZSE9PSJpbWFnZSI/YXdhaXQgYS5mb2N1c0Jsb2NrKGIuaWQsImVuZCIpOnYmJnYudHlwZSE9PSJkaXZpZGVyIiYmdi50eXBlIT09ImltYWdlIj9hd2FpdCBhLmZvY3VzQmxvY2sodi5pZCwic3RhcnQiKTpiP2F3YWl0IGEuZm9jdXNCbG9jayhiLmlkKTp2JiZhd2FpdCBhLmZvY3VzQmxvY2sodi5pZCk7cmV0dXJufWxldCBvPXRoaXMuY29tcG9uZW50LnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWJsb2NrLWlkPSIke3QuaWR9Il1gKT8ucXVlcnlTZWxlY3RvcigiZGVlcy13eXNpd3lnLWJsb2NrIik7aWYoIW98fCFvLnNoYWRvd1Jvb3QpcmV0dXJuO2xldCBsPXQudHlwZT09PSJjb2RlIj9vLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLmNvZGUtZWRpdG9yIik6by5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5ibG9jayIpO2lmKCFsKXJldHVybjtsZXQgcD1vLmNsb3Nlc3QoImRlZXMtaW5wdXQtd3lzaXd5ZyIpLGQ9W107cD8uc2hhZG93Um9vdCYmZC5wdXNoKHAuc2hhZG93Um9vdCksZC5wdXNoKG8uc2hhZG93Um9vdCk7bGV0IHU9U3QuZ2V0Q3Vyc29yUG9zaXRpb25JbkVsZW1lbnQobCwuLi5kKSxjPW8uZ2V0Q29udGVudD9vLmdldENvbnRlbnQoKTpsLnRleHRDb250ZW50O2lmKHU9PT0wKXtlLnByZXZlbnREZWZhdWx0KCk7bGV0IGI9YS5nZXRQcmV2aW91c0Jsb2NrKHQuaWQpO2lmKGIpe2lmKFsiZGl2aWRlciIsImltYWdlIiwieW91dHViZSIsImF0dGFjaG1lbnQiXS5pbmNsdWRlcyhiLnR5cGUpKXthd2FpdCBhLmZvY3VzQmxvY2soYi5pZCk7cmV0dXJufWlmKHRoaXMuY29tcG9uZW50LnNhdmVUb0hpc3RvcnkoITEpLGIudHlwZT09PSJjb2RlIiYmdC50eXBlIT09ImNvZGUiKXt0LmNvbnRlbnQ9PT0iIiYmKGEucmVtb3ZlQmxvY2sodC5pZCksYXdhaXQgYS5mb2N1c0Jsb2NrKGIuaWQsImVuZCIpKTtyZXR1cm59aWYodC50eXBlPT09ImNvZGUiJiZiLnR5cGUhPT0iY29kZSIpe2xldCBOPW8uZ2V0Q29udGVudD9vLmdldENvbnRlbnQoKTp0LmNvbnRlbnQ7KE49PT0iInx8Ti50cmltKCk9PT0iIikmJihhLnJlbW92ZUJsb2NrKHQuaWQpLGF3YWl0IGEuZm9jdXNCbG9jayhiLmlkLCJlbmQiKSk7cmV0dXJufWxldCBtPXRoaXMuY29tcG9uZW50LnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWJsb2NrLWlkPSIke2IuaWR9Il1gKT8ucXVlcnlTZWxlY3RvcigiZGVlcy13eXNpd3lnLWJsb2NrIiksZj1tPy5nZXRDb250ZW50KCl8fGIuY29udGVudHx8IiIseT1vLmdldENvbnRlbnQoKXx8dC5jb250ZW50fHwiIixNPSIiO2IudHlwZT09PSJjb2RlIiYmdC50eXBlPT09ImNvZGUifHxiLnR5cGU9PT0ibGlzdCImJnQudHlwZT09PSJsaXN0Ij9NPWYrKGYmJnk/YApgOiIiKSt5Ok09ZisoZiYmeT8iICI6IiIpK3k7bGV0IHo9Zi5sZW5ndGg7YS51cGRhdGVCbG9ja0NvbnRlbnQoYi5pZCxNKSxtJiZtLnNldENvbnRlbnQoTSksYS5yZW1vdmVCbG9jayh0LmlkKSxhd2FpdCBhLmZvY3VzQmxvY2soYi5pZCx6KX19ZWxzZSBpZih0aGlzLmNvbXBvbmVudC5ibG9ja3MubGVuZ3RoPjEpe2xldCBiPW8uZ2V0Q29udGVudD9vLmdldENvbnRlbnQoKTp0LmNvbnRlbnQ7aWYoYj09PSIifHxiLnRyaW0oKT09PSIiKXtlLnByZXZlbnREZWZhdWx0KCk7bGV0IHY9YS5nZXRQcmV2aW91c0Jsb2NrKHQuaWQpO3YmJihhLnJlbW92ZUJsb2NrKHQuaWQpLHYudHlwZSE9PSJkaXZpZGVyIiYmYXdhaXQgYS5mb2N1c0Jsb2NrKHYuaWQsImVuZCIpKX19fWFzeW5jIGhhbmRsZURlbGV0ZShlLHQpe2xldCBhPXRoaXMuY29tcG9uZW50LmJsb2NrT3BlcmF0aW9ucztpZihbImRpdmlkZXIiLCJpbWFnZSIsInlvdXR1YmUiLCJhdHRhY2htZW50Il0uaW5jbHVkZXModC50eXBlKSl7aWYoZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuY29tcG9uZW50LmJsb2Nrcy5sZW5ndGg9PT0xKXt0aGlzLmNvbXBvbmVudC5zYXZlVG9IaXN0b3J5KCExKSxhLnJlbW92ZUJsb2NrKHQuaWQpO2xldCBtPWEuY3JlYXRlQmxvY2soInBhcmFncmFwaCIsIiIpO3RoaXMuY29tcG9uZW50LmJsb2Nrcz1bbV0sdGhpcy5jb21wb25lbnQucmVuZGVyQmxvY2tzUHJvZ3JhbW1hdGljYWxseSgpLGF3YWl0IGEuZm9jdXNCbG9jayhtLmlkLCJzdGFydCIpLHRoaXMuY29tcG9uZW50LnVwZGF0ZVZhbHVlKCk7cmV0dXJufXRoaXMuY29tcG9uZW50LnNhdmVUb0hpc3RvcnkoITEpO2xldCBiPWEuZ2V0UHJldmlvdXNCbG9jayh0LmlkKSx2PWEuZ2V0TmV4dEJsb2NrKHQuaWQpO2EucmVtb3ZlQmxvY2sodC5pZCk7bGV0IHg9WyJkaXZpZGVyIiwiaW1hZ2UiLCJ5b3V0dWJlIiwiYXR0YWNobWVudCJdO3YmJiF4LmluY2x1ZGVzKHYudHlwZSk/YXdhaXQgYS5mb2N1c0Jsb2NrKHYuaWQsInN0YXJ0Iik6YiYmIXguaW5jbHVkZXMoYi50eXBlKT9hd2FpdCBhLmZvY3VzQmxvY2soYi5pZCwiZW5kIik6dj9hd2FpdCBhLmZvY3VzQmxvY2sodi5pZCk6YiYmYXdhaXQgYS5mb2N1c0Jsb2NrKGIuaWQpO3JldHVybn1sZXQgbz10aGlzLmNvbXBvbmVudC5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKGBbZGF0YS1ibG9jay1pZD0iJHt0LmlkfSJdYCk/LnF1ZXJ5U2VsZWN0b3IoImRlZXMtd3lzaXd5Zy1ibG9jayIpO2lmKCFvfHwhby5zaGFkb3dSb290KXJldHVybjtsZXQgbD10LnR5cGU9PT0iY29kZSI/by5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5jb2RlLWVkaXRvciIpOm8uc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIuYmxvY2siKTtpZighbClyZXR1cm47bGV0IHA9by5jbG9zZXN0KCJkZWVzLWlucHV0LXd5c2l3eWciKSxkPVtdO3A/LnNoYWRvd1Jvb3QmJmQucHVzaChwLnNoYWRvd1Jvb3QpLGQucHVzaChvLnNoYWRvd1Jvb3QpO2xldCB1PVN0LmdldEN1cnNvclBvc2l0aW9uSW5FbGVtZW50KGwsLi4uZCksYz1sLnRleHRDb250ZW50Py5sZW5ndGh8fDA7aWYodT09PWMpe2xldCBiPWEuZ2V0TmV4dEJsb2NrKHQuaWQpO2lmKGImJlsiZGl2aWRlciIsImltYWdlIiwieW91dHViZSIsImF0dGFjaG1lbnQiXS5pbmNsdWRlcyhiLnR5cGUpKXtlLnByZXZlbnREZWZhdWx0KCksYXdhaXQgYS5mb2N1c0Jsb2NrKGIuaWQpO3JldHVybn19fWFzeW5jIGhhbmRsZUFycm93VXAoZSx0KXtsZXQgYT1bImRpdmlkZXIiLCJpbWFnZSIsInlvdXR1YmUiLCJhdHRhY2htZW50Il07aWYoYS5pbmNsdWRlcyh0LnR5cGUpKXtlLnByZXZlbnREZWZhdWx0KCk7bGV0IHU9dGhpcy5jb21wb25lbnQuYmxvY2tPcGVyYXRpb25zLGM9dS5nZXRQcmV2aW91c0Jsb2NrKHQuaWQpO2MmJmF3YWl0IHUuZm9jdXNCbG9jayhjLmlkLGEuaW5jbHVkZXMoYy50eXBlKT92b2lkIDA6ImVuZCIpO3JldHVybn1sZXQgbj10aGlzLmNvbXBvbmVudC5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKGBbZGF0YS1ibG9jay1pZD0iJHt0LmlkfSJdYCk/LnF1ZXJ5U2VsZWN0b3IoImRlZXMtd3lzaXd5Zy1ibG9jayIpO2lmKCFufHwhbi5zaGFkb3dSb290KXJldHVybjtsZXQgbz10LnR5cGU9PT0iY29kZSI/bi5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5jb2RlLWVkaXRvciIpOm4uc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIuYmxvY2siKTtpZighbylyZXR1cm47bGV0IGw9bi5jbG9zZXN0KCJkZWVzLWlucHV0LXd5c2l3eWciKSxwPVtdO2w/LnNoYWRvd1Jvb3QmJnAucHVzaChsLnNoYWRvd1Jvb3QpLHAucHVzaChuLnNoYWRvd1Jvb3QpO2xldCBkPVN0LmdldFNlbGVjdGlvbkluZm8oLi4ucCk7aWYoISghZHx8IWQuY29sbGFwc2VkKSYmdGhpcy5pc09uRmlyc3RMaW5lKGQsbywuLi5wKSl7ZS5wcmV2ZW50RGVmYXVsdCgpO2xldCB1PXRoaXMuY29tcG9uZW50LmJsb2NrT3BlcmF0aW9ucyxjPXUuZ2V0UHJldmlvdXNCbG9jayh0LmlkKTtpZihjKXtsZXQgYj1bImRpdmlkZXIiLCJpbWFnZSIsInlvdXR1YmUiLCJhdHRhY2htZW50Il07YXdhaXQgdS5mb2N1c0Jsb2NrKGMuaWQsYi5pbmNsdWRlcyhjLnR5cGUpP3ZvaWQgMDoiZW5kIil9fX1hc3luYyBoYW5kbGVBcnJvd0Rvd24oZSx0KXtpZihbImRpdmlkZXIiLCJpbWFnZSIsInlvdXR1YmUiLCJhdHRhY2htZW50Il0uaW5jbHVkZXModC50eXBlKSl7ZS5wcmV2ZW50RGVmYXVsdCgpO2xldCB1PXRoaXMuY29tcG9uZW50LmJsb2NrT3BlcmF0aW9ucyxjPXUuZ2V0TmV4dEJsb2NrKHQuaWQpO2lmKGMpe2xldCBiPVsiZGl2aWRlciIsImltYWdlIiwieW91dHViZSIsImF0dGFjaG1lbnQiXTthd2FpdCB1LmZvY3VzQmxvY2soYy5pZCxiLmluY2x1ZGVzKGMudHlwZSk/dm9pZCAwOiJzdGFydCIpfXJldHVybn1sZXQgbj10aGlzLmNvbXBvbmVudC5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKGBbZGF0YS1ibG9jay1pZD0iJHt0LmlkfSJdYCk/LnF1ZXJ5U2VsZWN0b3IoImRlZXMtd3lzaXd5Zy1ibG9jayIpO2lmKCFufHwhbi5zaGFkb3dSb290KXJldHVybjtsZXQgbz10LnR5cGU9PT0iY29kZSI/bi5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5jb2RlLWVkaXRvciIpOm4uc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIuYmxvY2siKTtpZighbylyZXR1cm47bGV0IGw9bi5jbG9zZXN0KCJkZWVzLWlucHV0LXd5c2l3eWciKSxwPVtdO2w/LnNoYWRvd1Jvb3QmJnAucHVzaChsLnNoYWRvd1Jvb3QpLHAucHVzaChuLnNoYWRvd1Jvb3QpO2xldCBkPVN0LmdldFNlbGVjdGlvbkluZm8oLi4ucCk7aWYoISghZHx8IWQuY29sbGFwc2VkKSYmdGhpcy5pc09uTGFzdExpbmUoZCxvLC4uLnApKXtlLnByZXZlbnREZWZhdWx0KCk7bGV0IHU9dGhpcy5jb21wb25lbnQuYmxvY2tPcGVyYXRpb25zLGM9dS5nZXROZXh0QmxvY2sodC5pZCk7aWYoYyl7bGV0IGI9WyJkaXZpZGVyIiwiaW1hZ2UiLCJ5b3V0dWJlIiwiYXR0YWNobWVudCJdO2F3YWl0IHUuZm9jdXNCbG9jayhjLmlkLGIuaW5jbHVkZXMoYy50eXBlKT92b2lkIDA6InN0YXJ0Iil9fX1nZXRMYXN0VGV4dE5vZGUoZSl7aWYoZS5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFKXJldHVybiBlO2ZvcihsZXQgdD1lLmNoaWxkTm9kZXMubGVuZ3RoLTE7dD49MDt0LS0pe2xldCBhPXRoaXMuZ2V0TGFzdFRleHROb2RlKGUuY2hpbGROb2Rlc1t0XSk7aWYoYSlyZXR1cm4gYX1yZXR1cm4gbnVsbH1hc3luYyBoYW5kbGVBcnJvd0xlZnQoZSx0KXtpZihbImRpdmlkZXIiLCJpbWFnZSIsInlvdXR1YmUiLCJhdHRhY2htZW50Il0uaW5jbHVkZXModC50eXBlKSl7ZS5wcmV2ZW50RGVmYXVsdCgpO2xldCBjPXRoaXMuY29tcG9uZW50LmJsb2NrT3BlcmF0aW9ucyxiPWMuZ2V0UHJldmlvdXNCbG9jayh0LmlkKTtpZihiKXtsZXQgdj1bImRpdmlkZXIiLCJpbWFnZSIsInlvdXR1YmUiLCJhdHRhY2htZW50Il07YXdhaXQgYy5mb2N1c0Jsb2NrKGIuaWQsdi5pbmNsdWRlcyhiLnR5cGUpP3ZvaWQgMDoiZW5kIil9cmV0dXJufWxldCBuPXRoaXMuY29tcG9uZW50LnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWJsb2NrLWlkPSIke3QuaWR9Il1gKT8ucXVlcnlTZWxlY3RvcigiZGVlcy13eXNpd3lnLWJsb2NrIik7aWYoIW58fCFuLnNoYWRvd1Jvb3QpcmV0dXJuO2xldCBvPXQudHlwZT09PSJjb2RlIj9uLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLmNvZGUtZWRpdG9yIik6bi5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5ibG9jayIpO2lmKCFvKXJldHVybjtsZXQgbD1uLmNsb3Nlc3QoImRlZXMtaW5wdXQtd3lzaXd5ZyIpLHA9W107bD8uc2hhZG93Um9vdCYmcC5wdXNoKGwuc2hhZG93Um9vdCkscC5wdXNoKG4uc2hhZG93Um9vdCk7bGV0IGQ9U3QuZ2V0U2VsZWN0aW9uSW5mbyguLi5wKTtpZighZHx8IWQuY29sbGFwc2VkKXJldHVybjtpZihTdC5nZXRDdXJzb3JQb3NpdGlvbkluRWxlbWVudChvLC4uLnApPT09MCl7bGV0IGM9dGhpcy5jb21wb25lbnQuYmxvY2tPcGVyYXRpb25zLGI9Yy5nZXRQcmV2aW91c0Jsb2NrKHQuaWQpO2lmKGIpe2UucHJldmVudERlZmF1bHQoKTtsZXQgeD1bImRpdmlkZXIiLCJpbWFnZSIsInlvdXR1YmUiLCJhdHRhY2htZW50Il0uaW5jbHVkZXMoYi50eXBlKT92b2lkIDA6ImVuZCI7YXdhaXQgYy5mb2N1c0Jsb2NrKGIuaWQseCl9fX1hc3luYyBoYW5kbGVBcnJvd1JpZ2h0KGUsdCl7aWYoWyJkaXZpZGVyIiwiaW1hZ2UiLCJ5b3V0dWJlIiwiYXR0YWNobWVudCJdLmluY2x1ZGVzKHQudHlwZSkpe2UucHJldmVudERlZmF1bHQoKTtsZXQgYj10aGlzLmNvbXBvbmVudC5ibG9ja09wZXJhdGlvbnMsdj1iLmdldE5leHRCbG9jayh0LmlkKTtpZih2KXtsZXQgeD1bImRpdmlkZXIiLCJpbWFnZSIsInlvdXR1YmUiLCJhdHRhY2htZW50Il07YXdhaXQgYi5mb2N1c0Jsb2NrKHYuaWQseC5pbmNsdWRlcyh2LnR5cGUpP3ZvaWQgMDoic3RhcnQiKX1yZXR1cm59bGV0IG49dGhpcy5jb21wb25lbnQuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihgW2RhdGEtYmxvY2staWQ9IiR7dC5pZH0iXWApPy5xdWVyeVNlbGVjdG9yKCJkZWVzLXd5c2l3eWctYmxvY2siKTtpZighbnx8IW4uc2hhZG93Um9vdClyZXR1cm47bGV0IG89dC50eXBlPT09ImNvZGUiP24uc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIuY29kZS1lZGl0b3IiKTpuLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLmJsb2NrIik7aWYoIW8pcmV0dXJuO2xldCBsPW4uY2xvc2VzdCgiZGVlcy1pbnB1dC13eXNpd3lnIikscD1bXTtsPy5zaGFkb3dSb290JiZwLnB1c2gobC5zaGFkb3dSb290KSxwLnB1c2gobi5zaGFkb3dSb290KTtsZXQgZD1TdC5nZXRTZWxlY3Rpb25JbmZvKC4uLnApO2lmKCFkfHwhZC5jb2xsYXBzZWQpcmV0dXJuO2xldCB1PVN0LmdldEN1cnNvclBvc2l0aW9uSW5FbGVtZW50KG8sLi4ucCksYz1vLnRleHRDb250ZW50Py5sZW5ndGh8fDA7aWYodT09PWMpe2xldCBiPXRoaXMuY29tcG9uZW50LmJsb2NrT3BlcmF0aW9ucyx2PWIuZ2V0TmV4dEJsb2NrKHQuaWQpO2lmKHYpe2UucHJldmVudERlZmF1bHQoKTtsZXQgeD1bImRpdmlkZXIiLCJpbWFnZSIsInlvdXR1YmUiLCJhdHRhY2htZW50Il07YXdhaXQgYi5mb2N1c0Jsb2NrKHYuaWQseC5pbmNsdWRlcyh2LnR5cGUpP3ZvaWQgMDoic3RhcnQiKX19fWlzT25GaXJzdExpbmUoZSx0LC4uLmEpe3RyeXtsZXQgcj1TdC5jcmVhdGVSYW5nZUZyb21JbmZvKGUpLG49ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPXIuY29tbW9uQW5jZXN0b3JDb250YWluZXI7by5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFJiYobz1vLnBhcmVudEVsZW1lbnQpO2xldCBsPW8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscD1uLnRvcC1sLnRvcDw1O3JldHVybiBvLnRleHRDb250ZW50JiYhby50ZXh0Q29udGVudC5pbmNsdWRlcyhgCmApP1N0LmdldEN1cnNvclBvc2l0aW9uSW5FbGVtZW50KG8sLi4uYSk9PT0wOnB9Y2F0Y2gocil7cmV0dXJuIGNvbnNvbGUud2FybigiRXJyb3IgY2hlY2tpbmcgZmlyc3QgbGluZToiLHIpLGUuc3RhcnRPZmZzZXQ9PT0wfX1pc09uTGFzdExpbmUoZSx0LC4uLmEpe3RyeXtsZXQgcj1TdC5jcmVhdGVSYW5nZUZyb21JbmZvKGUpLG49ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPXIuY29tbW9uQW5jZXN0b3JDb250YWluZXI7by5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFJiYobz1vLnBhcmVudEVsZW1lbnQpO2xldCBwPW8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tLW4uYm90dG9tPDU7aWYoby50ZXh0Q29udGVudCYmIW8udGV4dENvbnRlbnQuaW5jbHVkZXMoYApgKSl7bGV0IGQ9dC50ZXh0Q29udGVudD8ubGVuZ3RofHwwO3JldHVybiBTdC5nZXRDdXJzb3JQb3NpdGlvbkluRWxlbWVudCh0LC4uLmEpPT09ZH1yZXR1cm4gcH1jYXRjaChyKXtjb25zb2xlLndhcm4oIkVycm9yIGNoZWNraW5nIGxhc3QgbGluZToiLHIpO2xldCBuPXQudGV4dENvbnRlbnQ/Lmxlbmd0aHx8MDtyZXR1cm4gU3QuZ2V0Q3Vyc29yUG9zaXRpb25JbkVsZW1lbnQodCwuLi5hKT09PW59fX19KTt2YXIgT1gsaDNhPWcoKCk9PntNbCgpO2d2KCk7T1g9Y2xhc3N7c3RhdGlje2kodGhpcywiV3lzaXd5Z0RyYWdEcm9wSGFuZGxlciIpfWNvbXBvbmVudDtkcmFnZ2VkQmxvY2tJZD1udWxsO2RyYWdPdmVyQmxvY2tJZD1udWxsO2RyYWdPdmVyUG9zaXRpb249bnVsbDtkcm9wSW5kaWNhdG9yPW51bGw7aW5pdGlhbE1vdXNlWT0wO2luaXRpYWxCbG9ja1k9MDtkcmFnZ2VkQmxvY2tFbGVtZW50PW51bGw7ZHJhZ2dlZEJsb2NrSGVpZ2h0PTA7ZHJhZ2dlZEJsb2NrQ29udGVudEhlaWdodD0wO2RyYWdnZWRCbG9ja01hcmdpblRvcD0wO2xhc3RVcGRhdGVUaW1lPTA7dXBkYXRlVGhyb3R0bGU9ODA7Y29uc3RydWN0b3IoZSl7dGhpcy5jb21wb25lbnQ9ZX1nZXQgZHJhZ1N0YXRlKCl7cmV0dXJue2RyYWdnZWRCbG9ja0lkOnRoaXMuZHJhZ2dlZEJsb2NrSWQsZHJhZ092ZXJCbG9ja0lkOnRoaXMuZHJhZ092ZXJCbG9ja0lkLGRyYWdPdmVyUG9zaXRpb246dGhpcy5kcmFnT3ZlclBvc2l0aW9ufX1oYW5kbGVEcmFnU3RhcnQoZSx0KXtpZighZS5kYXRhVHJhbnNmZXIpcmV0dXJuO3RoaXMuZHJhZ2dlZEJsb2NrSWQ9dC5pZCxlLmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkPSJtb3ZlIixlLmRhdGFUcmFuc2Zlci5zZXREYXRhKCJ0ZXh0L3BsYWluIix0LmlkKTtsZXQgYT1uZXcgSW1hZ2U7aWYoYS5zcmM9ImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEFRQUJBSUFBQUFVRUJBQUFBQ3dBQUFBQUFRQUJBQUFDQWtRQkFEcz0iLGUuZGF0YVRyYW5zZmVyLnNldERyYWdJbWFnZShhLDAsMCksdGhpcy5pbml0aWFsTW91c2VZPWUuY2xpZW50WSx0aGlzLmRyYWdnZWRCbG9ja0VsZW1lbnQ9dGhpcy5jb21wb25lbnQuZWRpdG9yQ29udGVudFJlZi5xdWVyeVNlbGVjdG9yKGBbZGF0YS1ibG9jay1pZD0iJHt0LmlkfSJdYCksdGhpcy5kcmFnZ2VkQmxvY2tFbGVtZW50KXtsZXQgcj10aGlzLmRyYWdnZWRCbG9ja0VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dGhpcy5pbml0aWFsQmxvY2tZPXIudG9wO2xldCBuPXRoaXMuZHJhZ2dlZEJsb2NrRWxlbWVudC5xdWVyeVNlbGVjdG9yKCIuYmxvY2siKTtpZihuKXtsZXQgbz1uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGw9d2luZG93LmdldENvbXB1dGVkU3R5bGUobik7dGhpcy5kcmFnZ2VkQmxvY2tNYXJnaW5Ub3A9cGFyc2VJbnQobC5tYXJnaW5Ub3ApfHwwLHRoaXMuZHJhZ2dlZEJsb2NrQ29udGVudEhlaWdodD1vLmhlaWdodH10aGlzLmRyYWdnZWRCbG9ja0hlaWdodD1yLmhlaWdodCxjb25zb2xlLmxvZygiRHJhZyBtZWFzdXJlbWVudHM6Iix7d3JhcHBlckhlaWdodDpyLmhlaWdodCxtYXJnaW5Ub3A6dGhpcy5kcmFnZ2VkQmxvY2tNYXJnaW5Ub3AsZHJvcEluZGljYXRvckhlaWdodDp0aGlzLmRyYWdnZWRCbG9ja0hlaWdodCxjb250ZW50SGVpZ2h0OnRoaXMuZHJhZ2dlZEJsb2NrQ29udGVudEhlaWdodCxibG9ja0lkOnQuaWR9KSx0aGlzLmNyZWF0ZURyb3BJbmRpY2F0b3IoKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJkcmFnb3ZlciIsdGhpcy5oYW5kbGVHbG9iYWxEcmFnT3ZlciksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ2VuZCIsdGhpcy5oYW5kbGVHbG9iYWxEcmFnRW5kKX10aGlzLmNvbXBvbmVudC5kcmFnZ2VkQmxvY2tJZD10aGlzLmRyYWdnZWRCbG9ja0lkLHNldFRpbWVvdXQoKCk9Pnt0aGlzLmRyYWdnZWRCbG9ja0VsZW1lbnQmJnRoaXMuZHJhZ2dlZEJsb2NrRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJkcmFnZ2luZyIpLHRoaXMuY29tcG9uZW50LmVkaXRvckNvbnRlbnRSZWYmJnRoaXMuY29tcG9uZW50LmVkaXRvckNvbnRlbnRSZWYuY2xhc3NMaXN0LmFkZCgiZHJhZ2dpbmciKX0sMTApfWhhbmRsZURyYWdFbmQoKXt0aGlzLmNvbXBvbmVudC5lZGl0b3JDb250ZW50UmVmLnF1ZXJ5U2VsZWN0b3JBbGwoIi5ibG9jay13cmFwcGVyIikuZm9yRWFjaCh0PT57dC5jbGFzc0xpc3QucmVtb3ZlKCJkcmFnZ2luZyIsIm1vdmUtdXAiLCJtb3ZlLWRvd24iKSx0LnN0eWxlLnJlbW92ZVByb3BlcnR5KCItLWRyYWctb2Zmc2V0IiksdC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgidHJhbnNmb3JtIil9KSx0aGlzLmNvbXBvbmVudC5lZGl0b3JDb250ZW50UmVmJiZ0aGlzLmNvbXBvbmVudC5lZGl0b3JDb250ZW50UmVmLmNsYXNzTGlzdC5yZW1vdmUoImRyYWdnaW5nIiksdGhpcy5kcmFnZ2VkQmxvY2tJZD1udWxsLHRoaXMuZHJhZ092ZXJCbG9ja0lkPW51bGwsdGhpcy5kcmFnT3ZlclBvc2l0aW9uPW51bGwsdGhpcy5kcmFnZ2VkQmxvY2tFbGVtZW50PW51bGwsdGhpcy5kcmFnZ2VkQmxvY2tIZWlnaHQ9MCx0aGlzLmRyYWdnZWRCbG9ja0NvbnRlbnRIZWlnaHQ9MCx0aGlzLmRyYWdnZWRCbG9ja01hcmdpblRvcD0wLHRoaXMuaW5pdGlhbEJsb2NrWT0wLHRoaXMuY29tcG9uZW50LmRyYWdnZWRCbG9ja0lkPW51bGwsdGhpcy5jb21wb25lbnQuZHJhZ092ZXJCbG9ja0lkPW51bGwsdGhpcy5jb21wb25lbnQuZHJhZ092ZXJQb3NpdGlvbj1udWxsfWhhbmRsZURyYWdPdmVyKGUsdCl7aWYoZS5wcmV2ZW50RGVmYXVsdCgpLCFlLmRhdGFUcmFuc2Zlcnx8IXRoaXMuZHJhZ2dlZEJsb2NrSWR8fHRoaXMuZHJhZ2dlZEJsb2NrSWQ9PT10LmlkKXJldHVybjtlLmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0PSJtb3ZlIjtsZXQgYT1lLmN1cnJlbnRUYXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscj1hLnRvcCthLmhlaWdodC8yO3RoaXMuZHJhZ092ZXJCbG9ja0lkPXQuaWQsdGhpcy5kcmFnT3ZlclBvc2l0aW9uPWUuY2xpZW50WTxyPyJiZWZvcmUiOiJhZnRlciIsdGhpcy5jb21wb25lbnQuZHJhZ092ZXJCbG9ja0lkPXRoaXMuZHJhZ092ZXJCbG9ja0lkLHRoaXMuY29tcG9uZW50LmRyYWdPdmVyUG9zaXRpb249dGhpcy5kcmFnT3ZlclBvc2l0aW9ufWhhbmRsZURyYWdMZWF2ZShlKXt0aGlzLmRyYWdPdmVyQmxvY2tJZD09PWUuaWQmJih0aGlzLmRyYWdPdmVyQmxvY2tJZD1udWxsLHRoaXMuZHJhZ092ZXJQb3NpdGlvbj1udWxsLHRoaXMuY29tcG9uZW50LmRyYWdPdmVyQmxvY2tJZD1udWxsLHRoaXMuY29tcG9uZW50LmRyYWdPdmVyUG9zaXRpb249bnVsbCl9aGFuZGxlRHJvcChlLHQpe2UucHJldmVudERlZmF1bHQoKSwhKCF0aGlzLmRyYWdnZWRCbG9ja0lkfHx0aGlzLmRyYWdnZWRCbG9ja0lkPT09dC5pZCkmJnRoaXMuY29tcG9uZW50LmhhbmRsZURyb3AoZSx0KX1pc0RyYWdnaW5nKGUpe3JldHVybiB0aGlzLmRyYWdnZWRCbG9ja0lkPT09ZX1pc0RyYWdPdmVyKGUpe3JldHVybiB0aGlzLmRyYWdPdmVyQmxvY2tJZD09PWV9Z2V0RHJhZ092ZXJDbGFzc2VzKGUpe3JldHVybiB0aGlzLmlzRHJhZ092ZXIoZSk/dGhpcy5kcmFnT3ZlclBvc2l0aW9uPT09ImJlZm9yZSI/ImRyYWctb3Zlci1iZWZvcmUiOiJkcmFnLW92ZXItYWZ0ZXIiOiIifWNyZWF0ZURyb3BJbmRpY2F0b3IoKXt0aGlzLmRyb3BJbmRpY2F0b3I9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5kcm9wSW5kaWNhdG9yLmNsYXNzTmFtZT0iZHJvcC1pbmRpY2F0b3IiLHRoaXMuZHJvcEluZGljYXRvci5zdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLmNvbXBvbmVudC5lZGl0b3JDb250ZW50UmVmLmFwcGVuZENoaWxkKHRoaXMuZHJvcEluZGljYXRvcil9aGFuZGxlR2xvYmFsRHJhZ092ZXI9aShlPT57aWYoZS5wcmV2ZW50RGVmYXVsdCgpLCF0aGlzLmRyYWdnZWRCbG9ja0VsZW1lbnQpcmV0dXJuO2xldCB0PWUuY2xpZW50WS10aGlzLmluaXRpYWxNb3VzZVk7dGhpcy5kcmFnZ2VkQmxvY2tFbGVtZW50LnN0eWxlLnRyYW5zZm9ybT1gdHJhbnNsYXRlWSgke3R9cHgpYDtsZXQgYT1EYXRlLm5vdygpO2EtdGhpcy5sYXN0VXBkYXRlVGltZTx0aGlzLnVwZGF0ZVRocm90dGxlfHwodGhpcy5sYXN0VXBkYXRlVGltZT1hLHRoaXMudXBkYXRlQmxvY2tQb3NpdGlvbnMoZS5jbGllbnRZKSl9LCJoYW5kbGVHbG9iYWxEcmFnT3ZlciIpO3VwZGF0ZUJsb2NrUG9zaXRpb25zKGUpe2xldCB0PUFycmF5LmZyb20odGhpcy5jb21wb25lbnQuZWRpdG9yQ29udGVudFJlZi5xdWVyeVNlbGVjdG9yQWxsKCIuYmxvY2std3JhcHBlciIpKSxhPXQuZmluZEluZGV4KG49Pm4uZ2V0QXR0cmlidXRlKCJkYXRhLWJsb2NrLWlkIik9PT10aGlzLmRyYWdnZWRCbG9ja0lkKTtpZihhPT09LTEpcmV0dXJuO3QuZm9yRWFjaChuPT57bi5nZXRBdHRyaWJ1dGUoImRhdGEtYmxvY2staWQiKSE9PXRoaXMuZHJhZ2dlZEJsb2NrSWQmJihuLmNsYXNzTGlzdC5yZW1vdmUoIm1vdmUtdXAiLCJtb3ZlLWRvd24iKSxuLnN0eWxlLnJlbW92ZVByb3BlcnR5KCItLWRyYWctb2Zmc2V0IikpfSk7bGV0IHI9dC5sZW5ndGg7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2lmKG49PT1hKWNvbnRpbnVlO2xldCBsPXRbbl0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscD1sLnRvcDtpZihlPHArbC5oZWlnaHQqLjUpe3I9bjticmVha319Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2lmKG49PT1hKWNvbnRpbnVlO2xldCBvPXRbbl07YTxyP24+YSYmbjxyJiYoby5jbGFzc0xpc3QuYWRkKCJtb3ZlLXVwIiksby5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1kcmFnLW9mZnNldCIsYCR7dGhpcy5kcmFnZ2VkQmxvY2tIZWlnaHR9cHhgKSk6YT5yJiZuPj1yJiZuPGEmJihvLmNsYXNzTGlzdC5hZGQoIm1vdmUtZG93biIpLG8uc3R5bGUuc2V0UHJvcGVydHkoIi0tZHJhZy1vZmZzZXQiLGAke3RoaXMuZHJhZ2dlZEJsb2NrSGVpZ2h0fXB4YCkpfXRoaXMudXBkYXRlRHJvcEluZGljYXRvcih0LHIsYSl9dXBkYXRlRHJvcEluZGljYXRvcihlLHQsYSl7aWYoIXRoaXMuZHJvcEluZGljYXRvcnx8IXRoaXMuZHJhZ2dlZEJsb2NrRWxlbWVudClyZXR1cm47dGhpcy5kcm9wSW5kaWNhdG9yLnN0eWxlLmRpc3BsYXk9ImJsb2NrIjtsZXQgcj10aGlzLmNvbXBvbmVudC5lZGl0b3JDb250ZW50UmVmLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49MCxvPVtdO2ZvcihsZXQgZD0wO2Q8ZS5sZW5ndGg7ZCsrKXtpZihkPT09YSljb250aW51ZTtsZXQgdT1lW2RdLGM9dS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxiPWMudG9wLXIudG9wLHY9Yy5ib3R0b20tci50b3AseD13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh1KS50cmFuc2Zvcm07aWYoeCYmeCE9PSJub25lIil7bGV0IGY9bmV3IERPTU1hdHJpeCh4KS5tNDI7Yis9Zix2Kz1mfW8ucHVzaCh7aW5kZXg6ZCx0b3A6Yixib3R0b206dn0pfW8uc29ydCgoZCx1KT0+ZC50b3AtdS50b3ApO2xldCBsPXQ7dD5hJiZsLS07bGV0IHA9MTY7aWYodGhpcy5kcmFnZ2VkQmxvY2tFbGVtZW50KXtsZXQgZD10aGlzLmNvbXBvbmVudC5ibG9ja3MuZmluZCh1PT51LmlkPT09dGhpcy5kcmFnZ2VkQmxvY2tJZCk7aWYoZCl7bGV0IHU9ZC50eXBlO3U9PT0iaGVhZGluZy0xInx8dT09PSJoZWFkaW5nLTIifHx1PT09ImhlYWRpbmctMyI/cD0yNDoodT09PSJjb2RlInx8dT09PSJxdW90ZSIpJiYocD0yMCl9fWlmKGw9PT0wKW49MDtlbHNlIGlmKGw+PW8ubGVuZ3RoKXtsZXQgZD1vW28ubGVuZ3RoLTFdO2QmJihuPWQuYm90dG9tLG4rPXApfWVsc2V7bGV0IGQ9b1tsLTFdO2QmJihuPWQuYm90dG9tLG4rPXApfXRoaXMuZHJvcEluZGljYXRvci5zdHlsZS5oZWlnaHQ9YCR7dGhpcy5kcmFnZ2VkQmxvY2tIZWlnaHR9cHhgLHRoaXMuZHJvcEluZGljYXRvci5zdHlsZS50b3A9YCR7TWF0aC5tYXgoMCxuKX1weGAsY29uc29sZS5sb2coIkRyb3AgaW5kaWNhdG9yIHVwZGF0ZToiLHt0YXJnZXRJbmRleDp0LGFkanVzdGVkVGFyZ2V0SW5kZXg6bCxkcmFnZ2VkSW5kZXg6YSx0b3BQb3NpdGlvbjpuLGhlaWdodDp0aGlzLmRyYWdnZWRCbG9ja0hlaWdodCxibG9ja01hcmdpbjpwLHZpc3VhbEJsb2NrczpvLm1hcChkPT4oe2luZGV4OmQuaW5kZXgsdG9wOmQudG9wLGJvdHRvbTpkLmJvdHRvbX0pKX0pfWhhbmRsZUdsb2JhbERyYWdFbmQ9aSgoKT0+e2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImRyYWdvdmVyIix0aGlzLmhhbmRsZUdsb2JhbERyYWdPdmVyKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJkcmFnZW5kIix0aGlzLmhhbmRsZUdsb2JhbERyYWdFbmQpLHRoaXMuZHJvcEluZGljYXRvciYmKHRoaXMuZHJvcEluZGljYXRvci5yZW1vdmUoKSx0aGlzLmRyb3BJbmRpY2F0b3I9bnVsbCksdGhpcy5kcmFnZ2VkQmxvY2tJZD9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pnt0aGlzLnBlcmZvcm1Ecm9wKCksdGhpcy5oYW5kbGVEcmFnRW5kKCl9KTp0aGlzLmhhbmRsZURyYWdFbmQoKX0sImhhbmRsZUdsb2JhbERyYWdFbmQiKTtwZXJmb3JtRHJvcCgpe2lmKCF0aGlzLmRyYWdnZWRCbG9ja0lkKXJldHVybjtsZXQgZT1BcnJheS5mcm9tKHRoaXMuY29tcG9uZW50LmVkaXRvckNvbnRlbnRSZWYucXVlcnlTZWxlY3RvckFsbCgiLmJsb2NrLXdyYXBwZXIiKSk7aWYoIWUuZmluZCh1PT51LmdldEF0dHJpYnV0ZSgiZGF0YS1ibG9jay1pZCIpPT09dGhpcy5kcmFnZ2VkQmxvY2tJZCkpcmV0dXJuO2xldCBhPWUubWFwKHU9PntsZXQgYz11LmdldEF0dHJpYnV0ZSgiZGF0YS1ibG9jay1pZCIpLGI9dS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx2PWIudG9wK2IuaGVpZ2h0LzI7cmV0dXJue2lkOmMsY2VudGVyWTp2LGVsZW1lbnQ6dX19KTthLnNvcnQoKHUsYyk9PnUuY2VudGVyWS1jLmNlbnRlclkpO2xldCByPWEubWFwKHU9PnUuaWQpLmZpbHRlcih1PT51IT09bnVsbCksbj1bLi4udGhpcy5jb21wb25lbnQuYmxvY2tzXSxvPW4uZmluZCh1PT51LmlkPT09dGhpcy5kcmFnZ2VkQmxvY2tJZCk7aWYoIW8pcmV0dXJuO2xldCBsPW4ubWFwKHU9PnUuaWQpO2lmKCEhci5ldmVyeSgodSxjKT0+dT09PWxbY10pKXJldHVybjtsZXQgZD1yLm1hcCh1PT5uLmZpbmQoYz0+Yy5pZD09PXUpKS5maWx0ZXIoQm9vbGVhbik7dGhpcy5jb21wb25lbnQuYmxvY2tzPWQsdGhpcy5jb21wb25lbnQucmVuZGVyQmxvY2tzUHJvZ3JhbW1hdGljYWxseSgpLHRoaXMuY29tcG9uZW50LnVwZGF0ZVZhbHVlKCksc2V0VGltZW91dCgoKT0+e28udHlwZSE9PSJkaXZpZGVyIiYmdGhpcy5jb21wb25lbnQuYmxvY2tPcGVyYXRpb25zLmZvY3VzQmxvY2soby5pZCl9LDEwMCl9fX0pO3ZhciBGWCxmM2E9ZygoKT0+e01sKCk7Rlg9Y2xhc3N7c3RhdGlje2kodGhpcywiV3lzaXd5Z0hpc3RvcnkiKX1oaXN0b3J5PVtdO2N1cnJlbnRJbmRleD0tMTttYXhIaXN0b3J5U2l6ZT01MDtsYXN0U2F2ZVRpbWU9MDtzYXZlRGVib3VuY2VNcz01MDA7Y29uc3RydWN0b3IoKXt0aGlzLmhpc3Rvcnk9W10sdGhpcy5jdXJyZW50SW5kZXg9LTF9c2F2ZVN0YXRlKGUsdCxhKXtsZXQgcj1EYXRlLm5vdygpO2lmKHItdGhpcy5sYXN0U2F2ZVRpbWU8dGhpcy5zYXZlRGVib3VuY2VNcyYmdGhpcy5jdXJyZW50SW5kZXg+PTApe3RoaXMuaGlzdG9yeVt0aGlzLmN1cnJlbnRJbmRleF09e2Jsb2Nrczp0aGlzLmNsb25lQmxvY2tzKGUpLHNlbGVjdGVkQmxvY2tJZDp0LGN1cnNvclBvc2l0aW9uOmE/ey4uLmF9OnZvaWQgMCx0aW1lc3RhbXA6cn07cmV0dXJufXRoaXMuY3VycmVudEluZGV4PHRoaXMuaGlzdG9yeS5sZW5ndGgtMSYmKHRoaXMuaGlzdG9yeT10aGlzLmhpc3Rvcnkuc2xpY2UoMCx0aGlzLmN1cnJlbnRJbmRleCsxKSk7bGV0IG49e2Jsb2Nrczp0aGlzLmNsb25lQmxvY2tzKGUpLHNlbGVjdGVkQmxvY2tJZDp0LGN1cnNvclBvc2l0aW9uOmE/ey4uLmF9OnZvaWQgMCx0aW1lc3RhbXA6cn07dGhpcy5oaXN0b3J5LnB1c2gobiksdGhpcy5jdXJyZW50SW5kZXgrKyx0aGlzLmhpc3RvcnkubGVuZ3RoPnRoaXMubWF4SGlzdG9yeVNpemUmJih0aGlzLmhpc3Rvcnkuc2hpZnQoKSx0aGlzLmN1cnJlbnRJbmRleC0tKSx0aGlzLmxhc3RTYXZlVGltZT1yfXNhdmVDaGVja3BvaW50KGUsdCxhKXt0aGlzLmxhc3RTYXZlVGltZT0wLHRoaXMuc2F2ZVN0YXRlKGUsdCxhKX11bmRvKCl7cmV0dXJuIHRoaXMuY2FuVW5kbygpPyh0aGlzLmN1cnJlbnRJbmRleC0tLHRoaXMuY2xvbmVTdGF0ZSh0aGlzLmhpc3RvcnlbdGhpcy5jdXJyZW50SW5kZXhdKSk6bnVsbH1yZWRvKCl7cmV0dXJuIHRoaXMuY2FuUmVkbygpPyh0aGlzLmN1cnJlbnRJbmRleCsrLHRoaXMuY2xvbmVTdGF0ZSh0aGlzLmhpc3RvcnlbdGhpcy5jdXJyZW50SW5kZXhdKSk6bnVsbH1jYW5VbmRvKCl7cmV0dXJuIHRoaXMuY3VycmVudEluZGV4PjB9Y2FuUmVkbygpe3JldHVybiB0aGlzLmN1cnJlbnRJbmRleDx0aGlzLmhpc3RvcnkubGVuZ3RoLTF9Z2V0Q3VycmVudFN0YXRlKCl7cmV0dXJuIHRoaXMuY3VycmVudEluZGV4Pj0wJiZ0aGlzLmN1cnJlbnRJbmRleDx0aGlzLmhpc3RvcnkubGVuZ3RoP3RoaXMuY2xvbmVTdGF0ZSh0aGlzLmhpc3RvcnlbdGhpcy5jdXJyZW50SW5kZXhdKTpudWxsfWNsZWFyKCl7dGhpcy5oaXN0b3J5PVtdLHRoaXMuY3VycmVudEluZGV4PS0xLHRoaXMubGFzdFNhdmVUaW1lPTB9Y2xvbmVCbG9ja3MoZSl7cmV0dXJuIGUubWFwKHQ9Pih7Li4udCxtZXRhZGF0YTp0Lm1ldGFkYXRhP3suLi50Lm1ldGFkYXRhfTp2b2lkIDB9KSl9Y2xvbmVTdGF0ZShlKXtyZXR1cm57YmxvY2tzOnRoaXMuY2xvbmVCbG9ja3MoZS5ibG9ja3MpLHNlbGVjdGVkQmxvY2tJZDplLnNlbGVjdGVkQmxvY2tJZCxjdXJzb3JQb3NpdGlvbjplLmN1cnNvclBvc2l0aW9uP3suLi5lLmN1cnNvclBvc2l0aW9ufTp2b2lkIDAsdGltZXN0YW1wOmUudGltZXN0YW1wfX1nZXRIaXN0b3J5SW5mbygpe3JldHVybntzaXplOnRoaXMuaGlzdG9yeS5sZW5ndGgsY3VycmVudEluZGV4OnRoaXMuY3VycmVudEluZGV4LGNhblVuZG86dGhpcy5jYW5VbmRvKCksY2FuUmVkbzp0aGlzLmNhblJlZG8oKX19fX0pO3ZhciBCWCxtdSxtM2EsZzNhPWcoKCk9PntwZSgpO01sKCk7aXUoKTtEZCgpO3BpdCgpO2hpdCgpO0I4KCk7b3IoKTtwdCgpO0JYPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxtdT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sbTNhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy13eXNpd3lnLWJsb2NrIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W107dmFyIHk9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNXeXNpd3lnQmxvY2siKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgTT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOk9iamVjdH0pXSxwPVtMKHt0eXBlOkJvb2xlYW59KV0sYz1bTCh7dHlwZTpPYmplY3R9KV0seD1bTCh7dHlwZTpPYmplY3R9KV0sQlgodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJibG9jayIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4iYmxvY2siaW4geiwiaGFzIiksZ2V0Omkoej0+ei5ibG9jaywiZ2V0Iiksc2V0OmkoKHosTik9Pnt6LmJsb2NrPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sbyxsKSxCWCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImlzU2VsZWN0ZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoej0+ImlzU2VsZWN0ZWQiaW4geiwiaGFzIiksZ2V0Omkoej0+ei5pc1NlbGVjdGVkLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3ouaXNTZWxlY3RlZD1OfSwic2V0Iil9LG1ldGFkYXRhOk19LGQsdSksQlgodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJoYW5kbGVycyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4iaGFuZGxlcnMiaW4geiwiaGFzIiksZ2V0Omkoej0+ei5oYW5kbGVycywiZ2V0Iiksc2V0OmkoKHosTik9Pnt6LmhhbmRsZXJzPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sYix2KSxCWCh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Ind5c2l3eWdDb21wb25lbnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoej0+Ind5c2l3eWdDb21wb25lbnQiaW4geiwiaGFzIiksZ2V0Omkoej0+ei53eXNpd3lnQ29tcG9uZW50LCJnZXQiKSxzZXQ6aSgoeixOKT0+e3oud3lzaXd5Z0NvbXBvbmVudD1OfSwic2V0Iil9LG1ldGFkYXRhOk19LG0sZiksQlgobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6TX0sbnVsbCx0KSx5PWE9ZS52YWx1ZSxNJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOk19KX1hc3luYyBkaXNjb25uZWN0ZWRDYWxsYmFjaygpe2F3YWl0IHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5fc2VsZWN0aW9uSGFuZGxlciYmZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2VsZWN0aW9uY2hhbmdlIix0aGlzLl9zZWxlY3Rpb25IYW5kbGVyKX0jZT1tdSh0aGlzLG8sdm9pZCAwKTtnZXQgYmxvY2soKXtyZXR1cm4gdGhpcy4jZX1zZXQgYmxvY2soTSl7dGhpcy4jZT1NfSN0PShtdSh0aGlzLGwpLG11KHRoaXMsZCwhMSkpO2dldCBpc1NlbGVjdGVkKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGlzU2VsZWN0ZWQoTSl7dGhpcy4jdD1NfSNhPShtdSh0aGlzLHUpLG11KHRoaXMsYix2b2lkIDApKTtnZXQgaGFuZGxlcnMoKXtyZXR1cm4gdGhpcy4jYX1zZXQgaGFuZGxlcnMoTSl7dGhpcy4jYT1NfSNzPShtdSh0aGlzLHYpLG11KHRoaXMsbSx2b2lkIDApKTtnZXQgd3lzaXd5Z0NvbXBvbmVudCgpe3JldHVybiB0aGlzLiNzfXNldCB3eXNpd3lnQ29tcG9uZW50KE0pe3RoaXMuI3M9TX1ibG9ja0VsZW1lbnQ9KG11KHRoaXMsZiksbnVsbCk7Y29udGVudEluaXRpYWxpemVkPSExO2xhc3RLbm93bkN1cnNvclBvc2l0aW9uPTA7bGFzdFNlbGVjdGVkVGV4dD0iIjtoYW5kbGVyU3R5bGVzSW5qZWN0ZWQ9ITE7c3RhdGljIE5PTl9FRElUQUJMRV9UWVBFUz1bImltYWdlIiwiZGl2aWRlciIsInlvdXR1YmUiXTtpbmplY3RIYW5kbGVyU3R5bGVzKCl7aWYodGhpcy5oYW5kbGVyU3R5bGVzSW5qZWN0ZWQpcmV0dXJuO3RoaXMuaGFuZGxlclN0eWxlc0luamVjdGVkPSEwO2xldCBNPSIiLHo9SXMuZ2V0QWxsVHlwZXMoKTtmb3IobGV0IE4gb2Ygeil7bGV0IEM9SXMuZ2V0SGFuZGxlcihOKTtDJiYoTSs9Qy5nZXRTdHlsZXMoKSl9aWYoTSl7bGV0IE49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtOLnRleHRDb250ZW50PU0sdGhpcy5zaGFkb3dSb290Py5hcHBlbmRDaGlsZChOKX19c3RhdGljIHN0eWxlcz1bSGUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgLmJsb2NrIHsKICAgICAgICBwYWRkaW5nOiA0cHggMDsKICAgICAgICBtaW4taGVpZ2h0OiAxLjZlbTsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDAwMDAwIiwiI2UwZTBlMCIpfTsKICAgICAgfQoKICAgICAgLmJsb2NrOmVtcHR5Om5vdCg6Zm9jdXMpOjpiZWZvcmUgewogICAgICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1wbGFjZWhvbGRlcik7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjOTk5IiwiIzY2NiIpfTsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICAgIC8qIEJsb2NrLXNwZWNpZmljIHN0eWxlcyBtb3ZlZCB0byBoYW5kbGVycyAqLwoKCiAgICAgIC8qIEZvcm1hdHRpbmcgc3R5bGVzICovCiAgICAgIC5ibG9jayA6aXMoYiwgc3Ryb25nKSB7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwMDAwMDAiLCIjZmZmZmZmIil9OwogICAgICB9CgogICAgICAuYmxvY2sgOmlzKGksIGVtKSB7CiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgICB9CgogICAgICAuYmxvY2sgdSB7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICAgIH0KCiAgICAgIC5ibG9jayBzIHsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsKICAgICAgfQoKICAgICAgLmJsb2NrIGNvZGUgewogICAgICAgIGZvbnQtZmFtaWx5OiAnU0YgTW9ubycsICdNb25hY28nLCAnSW5jb25zb2xhdGEnLCAnRmlyYSBDb2RlJywgbW9ub3NwYWNlOwogICAgICAgIGZvbnQtc2l6ZTogMC45ZW07CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wNikiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSkiKX07CiAgICAgICAgcGFkZGluZzogMnB4IDZweDsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZDE0IiwiI2ZmNmI2YiIpfTsKICAgICAgfQoKICAgICAgLmJsb2NrIGEgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzAwNjZjYyIsIiM0ZDk0ZmYiKX07CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXMgZWFzZTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KCiAgICAgIC5ibG9jayBhOmhvdmVyIHsKICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAke2guYmRUaGVtZSgiIzAwNjZjYyIsIiM0ZDk0ZmYiKX07CiAgICAgIH0KCiAgICAgIC8qIENvZGUgYmxvY2sgY29udGFpbmVyIGFuZCBsYW5ndWFnZSBzdHlsZXMgbW92ZWQgdG8gaGFuZGxlciAqLwoKICAgICAgLyogU2VsZWN0aW9uIHN0eWxlcyAqLwogICAgICAuYmxvY2sgOjpzZWxlY3Rpb24gewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDEwMiwgMjA0LCAwLjMpIiwicmdiYSg3NywgMTQ4LCAyNTUsIDAuMykiKX07CiAgICAgICAgY29sb3I6IGluaGVyaXQ7CiAgICAgIH0KCgogICAgICAvKiBTdHJpa2UgdGhyb3VnaCAqLwogICAgICAuYmxvY2sgOmlzKHMsIHN0cmlrZSkgewogICAgICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoOwogICAgICAgIG9wYWNpdHk6IDAuNzsKICAgICAgfQoKCiAgICAgIC8qIEJsb2NrIG1hcmdpbiBhZGp1c3RtZW50cyBiYXNlZCBvbiB0eXBlICovCiAgICAgIDpob3N0LWNvbnRleHQoLmJsb2NrLXdyYXBwZXI6Zmlyc3QtY2hpbGQpIC5ibG9jayB7CiAgICAgICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwogICAgICB9CgogICAgICA6aG9zdC1jb250ZXh0KC5ibG9jay13cmFwcGVyOmxhc3QtY2hpbGQpIC5ibG9jayB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgfQoKICAgICAgLyogU2VsZWN0ZWQgc3RhdGUgKi8KICAgICAgLmJsb2NrLnNlbGVjdGVkIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLCAxMDIsIDIwNCwgMC4wNSkiLCJyZ2JhKDc3LCAxNDgsIDI1NSwgMC4wOCkiKX07CiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMnB4ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDEwMiwgMjA0LCAwLjIpIiwicmdiYSg3NywgMTQ4LCAyNTUsIDAuMikiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIG1hcmdpbi1sZWZ0OiAtOHB4OwogICAgICAgIG1hcmdpbi1yaWdodDogLThweDsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDhweDsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiA4cHg7CiAgICAgIH0KCgoKCiAgICBgXTtzaG91bGRVcGRhdGUoTSl7aWYoTS5oYXMoImlzU2VsZWN0ZWQiKSYmdGhpcy5ibG9jayl7bGV0IHo9bnVsbCxDPWAuYmxvY2suJHt0aGlzLmJsb2NrLnR5cGV9YDtyZXR1cm4gej10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoQykseiYmKHRoaXMuaXNTZWxlY3RlZD96LmNsYXNzTGlzdC5hZGQoInNlbGVjdGVkIik6ei5jbGFzc0xpc3QucmVtb3ZlKCJzZWxlY3RlZCIpKSwhMX1pZihNLmhhcygiYmxvY2siKSYmdGhpcy5ibG9jayl7bGV0IHo9TS5nZXQoImJsb2NrIik7aWYoeiYmei5pZCYmei50eXBlJiZ6LmlkPT09dGhpcy5ibG9jay5pZCYmei50eXBlPT09dGhpcy5ibG9jay50eXBlKXJldHVybiExfXJldHVybiF0aGlzLmJsb2NrRWxlbWVudHx8dGhpcy5ibG9jaz8udHlwZSE9PXRoaXMuYmxvY2tFbGVtZW50LmRhdGFzZXQuYmxvY2tUeXBlfWZpcnN0VXBkYXRlZCgpe3RoaXMuY29udGVudEluaXRpYWxpemVkPSEwLHRoaXMuaW5qZWN0SGFuZGxlclN0eWxlcygpO2xldCBNPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLnd5c2l3eWctYmxvY2stY29udGFpbmVyIik7aWYoTSYmdGhpcy5ibG9jayYmKE0uaW5uZXJIVE1MPXRoaXMucmVuZGVyQmxvY2tDb250ZW50KCkpLHRoaXMuYmxvY2spe2xldCBOPUlzLmdldEhhbmRsZXIodGhpcy5ibG9jay50eXBlKTtpZihOKXtsZXQgQz10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi53eXNpd3lnLWJsb2NrLWNvbnRhaW5lciIpO0MmJk4uc2V0dXAoQyx0aGlzLmJsb2NrLHRoaXMuaGFuZGxlcnMpO3JldHVybn19bGV0IHo9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIuYmxvY2siKTtpZih6KXt6LnNldEF0dHJpYnV0ZSgiZGF0YS1ibG9jay1pZCIsdGhpcy5ibG9jay5pZCksei5zZXRBdHRyaWJ1dGUoImRhdGEtYmxvY2stdHlwZSIsdGhpcy5ibG9jay50eXBlKSx6LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IixDPT57dGhpcy5oYW5kbGVycz8ub25JbnB1dD8uKEMpO2xldCBfPXRoaXMuZ2V0Q3Vyc29yUG9zaXRpb24oeik7XyE9PW51bGwmJih0aGlzLmxhc3RLbm93bkN1cnNvclBvc2l0aW9uPV8pfSksei5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixDPT57bGV0IF89dGhpcy5nZXRDdXJzb3JQb3NpdGlvbih6KTtfIT09bnVsbCYmKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb249XyksdGhpcy5oYW5kbGVycz8ub25LZXlEb3duPy4oQyl9KSx6LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwoKT0+e3RoaXMuaGFuZGxlcnM/Lm9uRm9jdXM/LigpfSksei5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwoKT0+e3RoaXMuaGFuZGxlcnM/Lm9uQmx1cj8uKCl9KSx6LmFkZEV2ZW50TGlzdGVuZXIoImNvbXBvc2l0aW9uc3RhcnQiLCgpPT57dGhpcy5oYW5kbGVycz8ub25Db21wb3NpdGlvblN0YXJ0Py4oKX0pLHouYWRkRXZlbnRMaXN0ZW5lcigiY29tcG9zaXRpb25lbmQiLCgpPT57dGhpcy5oYW5kbGVycz8ub25Db21wb3NpdGlvbkVuZD8uKCl9KSx6LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLEM9PntsZXQgXz10aGlzLmdldEN1cnNvclBvc2l0aW9uKHopO18hPT1udWxsJiYodGhpcy5sYXN0S25vd25DdXJzb3JQb3NpdGlvbj1fKSx0aGlzLmhhbmRsZXJzPy5vbk1vdXNlVXA/LihDKX0pLHouYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57c2V0VGltZW91dCgoKT0+e2xldCBDPXRoaXMuZ2V0Q3Vyc29yUG9zaXRpb24oeik7QyE9PW51bGwmJih0aGlzLmxhc3RLbm93bkN1cnNvclBvc2l0aW9uPUMpfSwwKX0pO2xldCBOPWkoKCk9PntsZXQgQz13aW5kb3cuZ2V0U2VsZWN0aW9uKCk7aWYoIUN8fEMucmFuZ2VDb3VudD09PTApcmV0dXJuO2xldCBfPUMudG9TdHJpbmcoKTtpZihfLmxlbmd0aD09PTApe3RoaXMubGFzdFNlbGVjdGVkVGV4dCYmKHRoaXMubGFzdFNlbGVjdGVkVGV4dD0iIix0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJibG9jay10ZXh0LXNlbGVjdGVkIix7ZGV0YWlsOnt0ZXh0OiIiLGJsb2NrSWQ6dGhpcy5ibG9jay5pZCxoYXNTZWxlY3Rpb246ITF9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSkpO3JldHVybn1sZXQgTz10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5ibG9jayIpO2lmKCFPKXJldHVybjtsZXQgRT10aGlzLmNsb3Nlc3QoImRlZXMtaW5wdXQtd3lzaXd5ZyIpPy5zaGFkb3dSb290LEg9W107RSYmSC5wdXNoKEUpLHRoaXMuc2hhZG93Um9vdCYmSC5wdXNoKHRoaXMuc2hhZG93Um9vdCk7bGV0IGs9U3QuZ2V0U2VsZWN0aW9uSW5mbyguLi5IKTtpZighaylyZXR1cm47bGV0IFM9U3QuY29udGFpbnNBY3Jvc3NTaGFkb3dET00oTyxrLnN0YXJ0Q29udGFpbmVyKSxJPVN0LmNvbnRhaW5zQWNyb3NzU2hhZG93RE9NKE8say5lbmRDb250YWluZXIpO2lmKFN8fEkpe2lmKF8hPT10aGlzLmxhc3RTZWxlY3RlZFRleHQpe3RoaXMubGFzdFNlbGVjdGVkVGV4dD1fO2xldCBQPVN0LmNyZWF0ZVJhbmdlRnJvbUluZm8oayksUj1QLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImJsb2NrLXRleHQtc2VsZWN0ZWQiLHtkZXRhaWw6e3RleHQ6Xy50cmltKCksYmxvY2tJZDp0aGlzLmJsb2NrLmlkLHJhbmdlOlAscmVjdDpSLGhhc1NlbGVjdGlvbjohMH0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKX19ZWxzZSB0aGlzLmxhc3RTZWxlY3RlZFRleHQmJih0aGlzLmxhc3RTZWxlY3RlZFRleHQ9IiIsdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiYmxvY2stdGV4dC1zZWxlY3RlZCIse2RldGFpbDp7dGV4dDoiIixibG9ja0lkOnRoaXMuYmxvY2suaWQsaGFzU2VsZWN0aW9uOiExfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpKX0sImNoZWNrU2VsZWN0aW9uIik7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0aW9uY2hhbmdlIixOKSx0aGlzLl9zZWxlY3Rpb25IYW5kbGVyPU4sei5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsKCk9PntsZXQgQz10aGlzLmdldEN1cnNvclBvc2l0aW9uKHopO0MhPT1udWxsJiYodGhpcy5sYXN0S25vd25DdXJzb3JQb3NpdGlvbj1DKX0pLHRoaXMuYmxvY2suY29udGVudCYmKHouaW5uZXJIVE1MPXRoaXMuYmxvY2suY29udGVudCl9dGhpcy5ibG9ja0VsZW1lbnQ9en1yZW5kZXIoKXtyZXR1cm4gdGhpcy5ibG9jaz9NbmA8ZGl2IGNsYXNzPSJ3eXNpd3lnLWJsb2NrLWNvbnRhaW5lciI+PC9kaXY+YDpNbmBgfXJlbmRlckJsb2NrQ29udGVudCgpe2lmKCF0aGlzLmJsb2NrKXJldHVybiIiO2xldCBNPUlzLmdldEhhbmRsZXIodGhpcy5ibG9jay50eXBlKTtpZihNKXJldHVybiBNLnJlbmRlcih0aGlzLmJsb2NrLHRoaXMuaXNTZWxlY3RlZCk7bGV0IHo9dGhpcy5pc1NlbGVjdGVkPyIgc2VsZWN0ZWQiOiIiO3JldHVybmAKICAgICAgPGRpdgogICAgICAgIGNsYXNzPSJibG9jayAke3RoaXMuYmxvY2sudHlwZX0ke3p9IgogICAgICAgIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIKICAgICAgPjwvZGl2PgogICAgYH1mb2N1cygpe2xldCBNPUlzLmdldEhhbmRsZXIodGhpcy5ibG9jay50eXBlKTtpZihNJiZNLmZvY3VzKXtsZXQgTj10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi53eXNpd3lnLWJsb2NrLWNvbnRhaW5lciIpLEM9e3NoYWRvd1Jvb3Q6dGhpcy5zaGFkb3dSb290LGNvbXBvbmVudDp0aGlzfTtyZXR1cm4gTS5mb2N1cyhOLEMpfWlmKHRoaXMuYmxvY2smJnkuTk9OX0VESVRBQkxFX1RZUEVTLmluY2x1ZGVzKHRoaXMuYmxvY2sudHlwZSkpe2xldCBOPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihgLmJsb2NrLiR7dGhpcy5ibG9jay50eXBlfWApO04mJk4uZm9jdXMoKTtyZXR1cm59bGV0IHo9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIuYmxvY2siKTt6JiYoei5oYXNBdHRyaWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIpfHx6LnNldEF0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIiwidHJ1ZSIpLHouZm9jdXMoKSxkb2N1bWVudC5hY3RpdmVFbGVtZW50IT09eiYmdGhpcy5zaGFkb3dSb290Py5hY3RpdmVFbGVtZW50IT09eiYmUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e3ouZm9jdXMoKX0pKX1mb2N1c1dpdGhDdXJzb3IoTT0iZW5kIil7bGV0IHo9SXMuZ2V0SGFuZGxlcih0aGlzLmJsb2NrLnR5cGUpO2lmKHomJnouZm9jdXNXaXRoQ3Vyc29yKXtsZXQgXz10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi53eXNpd3lnLWJsb2NrLWNvbnRhaW5lciIpLE89e3NoYWRvd1Jvb3Q6dGhpcy5zaGFkb3dSb290LGNvbXBvbmVudDp0aGlzfTtyZXR1cm4gei5mb2N1c1dpdGhDdXJzb3IoXyxNLE8pfWlmKHRoaXMuYmxvY2smJnkuTk9OX0VESVRBQkxFX1RZUEVTLmluY2x1ZGVzKHRoaXMuYmxvY2sudHlwZSkpe3RoaXMuZm9jdXMoKTtyZXR1cm59bGV0IE49dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIuYmxvY2siKTtpZighTilyZXR1cm47Ti5oYXNBdHRyaWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIpfHxOLnNldEF0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIiwidHJ1ZSIpLE4uZm9jdXMoKTtsZXQgQz1pKCgpPT57TT09PSJzdGFydCI/dGhpcy5zZXRDdXJzb3JUb1N0YXJ0KCk6TT09PSJlbmQiP3RoaXMuc2V0Q3Vyc29yVG9FbmQoKTp0eXBlb2YgTT09Im51bWJlciImJlN0LnNldEN1cnNvclBvc2l0aW9uKE4sTSl9LCJzZXRDdXJzb3IiKTtkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09Tnx8dGhpcy5zaGFkb3dSb290Py5hY3RpdmVFbGVtZW50PT09Tj9DKCk6UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+eyhkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09Tnx8dGhpcy5zaGFkb3dSb290Py5hY3RpdmVFbGVtZW50PT09TikmJkMoKX0pfWdldEN1cnNvclBvc2l0aW9uKE0pe2xldCB6PUlzLmdldEhhbmRsZXIodGhpcy5ibG9jay50eXBlKTtpZih6JiZ6LmdldEN1cnNvclBvc2l0aW9uKXtsZXQgSD17c2hhZG93Um9vdDp0aGlzLnNoYWRvd1Jvb3QsY29tcG9uZW50OnRoaXN9O3JldHVybiB6LmdldEN1cnNvclBvc2l0aW9uKE0sSCl9bGV0IEM9dGhpcy5jbG9zZXN0KCJkZWVzLWlucHV0LXd5c2l3eWciKT8uc2hhZG93Um9vdCxfPVtdO0MmJl8ucHVzaChDKSx0aGlzLnNoYWRvd1Jvb3QmJl8ucHVzaCh0aGlzLnNoYWRvd1Jvb3QpO2xldCBPPVN0LmdldFNlbGVjdGlvbkluZm8oLi4uXyk7aWYoY29uc29sZS5sb2coImdldEN1cnNvclBvc2l0aW9uOiBTZWxlY3Rpb24gaW5mbyBmcm9tIHNoYWRvdyBET01zOiIse3NlbGVjdGlvbkluZm86TyxzaGFkb3dSb290c0NvdW50Ol8ubGVuZ3RofSksIU8pcmV0dXJuIGNvbnNvbGUubG9nKCJnZXRDdXJzb3JQb3NpdGlvbjogTm8gc2VsZWN0aW9uIGZvdW5kIiksbnVsbDtpZihjb25zb2xlLmxvZygiZ2V0Q3Vyc29yUG9zaXRpb246IFJhbmdlIGluZm86Iix7c3RhcnRDb250YWluZXI6Ty5zdGFydENvbnRhaW5lcixzdGFydE9mZnNldDpPLnN0YXJ0T2Zmc2V0LGNvbGxhcHNlZDpPLmNvbGxhcHNlZCxzdGFydENvbnRhaW5lclRleHQ6Ty5zdGFydENvbnRhaW5lci50ZXh0Q29udGVudH0pLCFNLmNvbnRhaW5zKE8uc3RhcnRDb250YWluZXIpKXJldHVybiBjb25zb2xlLmxvZygiZ2V0Q3Vyc29yUG9zaXRpb246IFJhbmdlIG5vdCBpbiBlbGVtZW50IiksbnVsbDtsZXQgJD1kb2N1bWVudC5jcmVhdGVSYW5nZSgpOyQuc2VsZWN0Tm9kZUNvbnRlbnRzKE0pLCQuc2V0RW5kKE8uc3RhcnRDb250YWluZXIsTy5zdGFydE9mZnNldCk7bGV0IEU9JC50b1N0cmluZygpLmxlbmd0aDtyZXR1cm4gY29uc29sZS5sb2coImdldEN1cnNvclBvc2l0aW9uOiBDYWxjdWxhdGVkIHBvc2l0aW9uOiIse3Bvc2l0aW9uOkUscHJlQ2FyZXRUZXh0OiQudG9TdHJpbmcoKSxlbGVtZW50VGV4dDpNLnRleHRDb250ZW50LGVsZW1lbnRUZXh0TGVuZ3RoOk0udGV4dENvbnRlbnQ/Lmxlbmd0aH0pLEV9Z2V0Q29udGVudCgpe2xldCBNPUlzLmdldEhhbmRsZXIodGhpcy5ibG9jay50eXBlKTtpZihNJiZNLmdldENvbnRlbnQpe2xldCBDPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLnd5c2l3eWctYmxvY2stY29udGFpbmVyIiksXz17c2hhZG93Um9vdDp0aGlzLnNoYWRvd1Jvb3QsY29tcG9uZW50OnRoaXN9O3JldHVybiBNLmdldENvbnRlbnQoQyxfKX1sZXQgej10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5ibG9jayIpO2lmKCF6KXJldHVybiIiO2xldCBOPXouaW5uZXJIVE1MfHwiIjtyZXR1cm4gY29uc29sZS5sb2coIkdldHRpbmcgY29udGVudCBmcm9tIGJsb2NrOiIsTiksTn1zZXRDb250ZW50KE0pe2xldCB6PUlzLmdldEhhbmRsZXIodGhpcy5ibG9jay50eXBlKTtpZih6JiZ6LnNldENvbnRlbnQpe2xldCBfPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLnd5c2l3eWctYmxvY2stY29udGFpbmVyIiksTz17c2hhZG93Um9vdDp0aGlzLnNoYWRvd1Jvb3QsY29tcG9uZW50OnRoaXN9O3JldHVybiB6LnNldENvbnRlbnQoXyxNLE8pfWxldCBOPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLmJsb2NrIik7aWYoIU4pcmV0dXJuO2xldCBDPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT1OfHx0aGlzLnNoYWRvd1Jvb3Q/LmFjdGl2ZUVsZW1lbnQ9PT1OO04uaW5uZXJIVE1MPU0sQyYmTi5mb2N1cygpfXNldEN1cnNvclRvU3RhcnQoKXtsZXQgTT1Jcy5nZXRIYW5kbGVyKHRoaXMuYmxvY2sudHlwZSk7aWYoTSYmTS5zZXRDdXJzb3JUb1N0YXJ0KXtsZXQgTj10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi53eXNpd3lnLWJsb2NrLWNvbnRhaW5lciIpLEM9e3NoYWRvd1Jvb3Q6dGhpcy5zaGFkb3dSb290LGNvbXBvbmVudDp0aGlzfTtyZXR1cm4gTS5zZXRDdXJzb3JUb1N0YXJ0KE4sQyl9bGV0IHo9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIuYmxvY2siKTt6JiZDby5zZXRDdXJzb3JUb1N0YXJ0KHopfXNldEN1cnNvclRvRW5kKCl7bGV0IE09SXMuZ2V0SGFuZGxlcih0aGlzLmJsb2NrLnR5cGUpO2lmKE0mJk0uc2V0Q3Vyc29yVG9FbmQpe2xldCBOPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLnd5c2l3eWctYmxvY2stY29udGFpbmVyIiksQz17c2hhZG93Um9vdDp0aGlzLnNoYWRvd1Jvb3QsY29tcG9uZW50OnRoaXN9O3JldHVybiBNLnNldEN1cnNvclRvRW5kKE4sQyl9bGV0IHo9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIuYmxvY2siKTt6JiZDby5zZXRDdXJzb3JUb0VuZCh6KX1nZXRDb250ZXh0TWVudUl0ZW1zKCl7aWYoIXRoaXMuYmxvY2t8fHRoaXMuYmxvY2sudHlwZT09PSJkaXZpZGVyIilyZXR1cm5bXTtsZXQgTT1jci5nZXRTbGFzaE1lbnVJdGVtcygpLHo9dGhpcy5ibG9jay50eXBlLE49dGhpcy53eXNpd3lnQ29tcG9uZW50LEM9dGhpcy5ibG9jay5pZCxPPVt7bmFtZToiQ2hhbmdlIFR5cGUiLGljb25OYW1lOiJ0eXBlIixzdWJtZW51Ok0uZmlsdGVyKCQ9PiQudHlwZSE9PXomJiQudHlwZSE9PSJkaXZpZGVyIikubWFwKCQ9Pih7bmFtZTokLmxhYmVsLGljb25OYW1lOiQuaWNvbi5yZXBsYWNlKCJsdWNpZGU6IiwiIiksYWN0aW9uOmkoYXN5bmMoKT0+e2lmKE4mJk4uYmxvY2tPcGVyYXRpb25zKXtsZXQgRT1OLmJsb2Nrcy5maW5kKEg9PkguaWQ9PT1DKTtFJiYoRS50eXBlPSQudHlwZSxFLmNvbnRlbnQ9RS5jb250ZW50fHwiIiwkLnR5cGU9PT0iY29kZSI/RS5tZXRhZGF0YT17bGFuZ3VhZ2U6InR5cGVzY3JpcHQifTokLnR5cGU9PT0ibGlzdCI/RS5tZXRhZGF0YT17bGlzdFR5cGU6ImJ1bGxldCJ9OiQudHlwZT09PSJpbWFnZSI/KEUuY29udGVudD0iIixFLm1ldGFkYXRhPXt1cmw6IiIsbG9hZGluZzohMX0pOiQudHlwZT09PSJ5b3V0dWJlIj8oRS5jb250ZW50PSIiLEUubWV0YWRhdGE9e3ZpZGVvSWQ6IiIsdXJsOiIifSk6JC50eXBlPT09Im1hcmtkb3duIj9FLm1ldGFkYXRhPXtzaG93UHJldmlldzohMX06JC50eXBlPT09Imh0bWwiP0UubWV0YWRhdGE9e3Nob3dQcmV2aWV3OiExfTokLnR5cGU9PT0iYXR0YWNobWVudCImJihFLmNvbnRlbnQ9IiIsRS5tZXRhZGF0YT17ZmlsZXM6W119KSxOLnVwZGF0ZUJsb2NrRWxlbWVudChDKSxOLnVwZGF0ZVZhbHVlKCkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57Ti5ibG9ja09wZXJhdGlvbnMuZm9jdXNCbG9jayhDKX0pKX19LCJhY3Rpb24iKX0pKX1dO3JldHVyblsiaW1hZ2UiLCJkaXZpZGVyIiwieW91dHViZSIsImF0dGFjaG1lbnQiXS5pbmNsdWRlcyh0aGlzLmJsb2NrLnR5cGUpfHxPLnB1c2goe2RpdmlkZXI6ITB9LHtuYW1lOiJDdXQiLGljb25OYW1lOiJzY2lzc29ycyIsc2hvcnRjdXQ6IkNtZCtYIixhY3Rpb246aShhc3luYygpPT57ZG9jdW1lbnQuZXhlY0NvbW1hbmQoImN1dCIpfSwiYWN0aW9uIil9LHtuYW1lOiJDb3B5IixpY29uTmFtZToiY29weSIsc2hvcnRjdXQ6IkNtZCtDIixhY3Rpb246aShhc3luYygpPT57ZG9jdW1lbnQuZXhlY0NvbW1hbmQoImNvcHkiKX0sImFjdGlvbiIpfSx7bmFtZToiUGFzdGUiLGljb25OYW1lOiJjbGlwYm9hcmQiLHNob3J0Y3V0OiJDbWQrViIsYWN0aW9uOmkoYXN5bmMoKT0+e2RvY3VtZW50LmV4ZWNDb21tYW5kKCJwYXN0ZSIpfSwiYWN0aW9uIil9KSxPLnB1c2goe2RpdmlkZXI6ITB9LHtuYW1lOiJEZWxldGUgQmxvY2siLGljb25OYW1lOiJ0cmFzaDIiLGFjdGlvbjppKGFzeW5jKCk9PntOJiZOLmJsb2NrT3BlcmF0aW9ucyYmTi5ibG9ja09wZXJhdGlvbnMuZGVsZXRlQmxvY2soQyl9LCJhY3Rpb24iKX0pLE99Z2V0U3BsaXRDb250ZW50KCl7Y29uc29sZS5sb2coImdldFNwbGl0Q29udGVudDogU3RhcnRpbmcuLi4iKTtsZXQgTT1Jcy5nZXRIYW5kbGVyKHRoaXMuYmxvY2sudHlwZSk7aWYoY29uc29sZS5sb2coImdldFNwbGl0Q29udGVudDogQ2hlY2tpbmcgZm9yIGhhbmRsZXIiLHtibG9ja1R5cGU6dGhpcy5ibG9jay50eXBlLGhhc0hhbmRsZXI6ISFNLGhhc1NwbGl0TWV0aG9kOiEhKE0mJk0uZ2V0U3BsaXRDb250ZW50KX0pLE0mJk0uZ2V0U3BsaXRDb250ZW50KXtsZXQgSz10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi53eXNpd3lnLWJsb2NrLWNvbnRhaW5lciIpO2NvbnNvbGUubG9nKCJnZXRTcGxpdENvbnRlbnQ6IEZvdW5kIGNvbnRhaW5lciIse2NvbnRhaW5lcjohIUssY29udGFpbmVySFRNTDpLPy5pbm5lckhUTUw/LnN1YnN0cmluZygwLDEwMCl9KTtsZXQgVj17c2hhZG93Um9vdDp0aGlzLnNoYWRvd1Jvb3QsY29tcG9uZW50OnRoaXN9O3JldHVybiBNLmdldFNwbGl0Q29udGVudChLLFYpfWxldCB6PXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLmJsb2NrIik7aWYoIXopcmV0dXJuIGNvbnNvbGUubG9nKCJnZXRTcGxpdENvbnRlbnQ6IE5vIGVkaXRhYmxlIGVsZW1lbnQgZm91bmQiKSxudWxsO2NvbnNvbGUubG9nKCJnZXRTcGxpdENvbnRlbnQ6IEVsZW1lbnQgaW5mbzoiLHtibG9ja1R5cGU6dGhpcy5ibG9jay50eXBlLGlubmVySFRNTDp6LmlubmVySFRNTCx0ZXh0Q29udGVudDp6LnRleHRDb250ZW50LHRleHRMZW5ndGg6ei50ZXh0Q29udGVudD8ubGVuZ3RofSk7bGV0IEM9dGhpcy5jbG9zZXN0KCJkZWVzLWlucHV0LXd5c2l3eWciKT8uc2hhZG93Um9vdCxfPVtdO0MmJl8ucHVzaChDKSx0aGlzLnNoYWRvd1Jvb3QmJl8ucHVzaCh0aGlzLnNoYWRvd1Jvb3QpO2xldCBPPVN0LmdldFNlbGVjdGlvbkluZm8oLi4uXyk7aWYoY29uc29sZS5sb2coImdldFNwbGl0Q29udGVudDogU2VsZWN0aW9uIGluZm8gZnJvbSBzaGFkb3cgRE9NczoiLHtzZWxlY3Rpb25JbmZvOk8sc2hhZG93Um9vdHNDb3VudDpfLmxlbmd0aH0pLCFPKXtpZihjb25zb2xlLmxvZygiZ2V0U3BsaXRDb250ZW50OiBObyBzZWxlY3Rpb24sIHVzaW5nIGxhc3Qga25vd24gcG9zaXRpb246Iix0aGlzLmxhc3RLbm93bkN1cnNvclBvc2l0aW9uKSx0aGlzLmxhc3RLbm93bkN1cnNvclBvc2l0aW9uIT09bnVsbCl7bGV0IEs9ei50ZXh0Q29udGVudHx8IiIsVj1NYXRoLm1pbih0aGlzLmxhc3RLbm93bkN1cnNvclBvc2l0aW9uLEsubGVuZ3RoKTtyZXR1cm4gY29uc29sZS5sb2coImdldFNwbGl0Q29udGVudDogU3BsaXR0aW5nIHdpdGggbGFzdCBrbm93biBwb3NpdGlvbjoiLHtwb3M6VixmdWxsVGV4dExlbmd0aDpLLmxlbmd0aCxiZWZvcmU6Sy5zdWJzdHJpbmcoMCxWKSxhZnRlcjpLLnN1YnN0cmluZyhWKX0pLHtiZWZvcmU6Sy5zdWJzdHJpbmcoMCxWKSxhZnRlcjpLLnN1YnN0cmluZyhWKX19cmV0dXJuIG51bGx9aWYoY29uc29sZS5sb2coImdldFNwbGl0Q29udGVudDogU2VsZWN0aW9uIHJhbmdlOiIse3N0YXJ0Q29udGFpbmVyOk8uc3RhcnRDb250YWluZXIsc3RhcnRPZmZzZXQ6Ty5zdGFydE9mZnNldCxzdGFydENvbnRhaW5lckluRWxlbWVudDp6LmNvbnRhaW5zKE8uc3RhcnRDb250YWluZXIpfSksIVN0LmNvbnRhaW5zQWNyb3NzU2hhZG93RE9NKHosTy5zdGFydENvbnRhaW5lcikpe2lmKGNvbnNvbGUubG9nKCJnZXRTcGxpdENvbnRlbnQ6IFNlbGVjdGlvbiBub3QgaW4gdGhpcyBibG9jaywgdXNpbmcgbGFzdCBrbm93biBwb3NpdGlvbjoiLHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb24pLHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb24hPT1udWxsKXtsZXQgSz16LnRleHRDb250ZW50fHwiIixWPU1hdGgubWluKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb24sSy5sZW5ndGgpO3JldHVybntiZWZvcmU6Sy5zdWJzdHJpbmcoMCxWKSxhZnRlcjpLLnN1YnN0cmluZyhWKX19cmV0dXJuIG51bGx9bGV0ICQ9dGhpcy5nZXRDdXJzb3JQb3NpdGlvbih6KTtpZihjb25zb2xlLmxvZygiZ2V0U3BsaXRDb250ZW50OiBDdXJzb3IgcG9zaXRpb24gZm9yIEhUTUwgc3BsaXQ6IiwkKSwkPT09bnVsbHx8JD09PTApcmV0dXJuIGNvbnNvbGUubG9nKCJnZXRTcGxpdENvbnRlbnQ6IEN1cnNvciBhdCBzdGFydCBvciBudWxsLCBtb3ZpbmcgYWxsIGNvbnRlbnQiKSx7YmVmb3JlOiIiLGFmdGVyOnouaW5uZXJIVE1MfTtsZXQgRT1kb2N1bWVudC5jcmVhdGVSYW5nZSgpLEg9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtFLnNldFN0YXJ0KHosMCksRS5zZXRFbmQoTy5zdGFydENvbnRhaW5lcixPLnN0YXJ0T2Zmc2V0KSxILnNldFN0YXJ0KE8uc3RhcnRDb250YWluZXIsTy5zdGFydE9mZnNldCksSC5zZXRFbmQoeix6LmNoaWxkTm9kZXMubGVuZ3RoKTtsZXQgaz1FLmNsb25lQ29udGVudHMoKSxTPUguY2xvbmVDb250ZW50cygpLEk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7SS5hcHBlbmRDaGlsZChrKTtsZXQgUD1JLmlubmVySFRNTDtJLmlubmVySFRNTD0iIixJLmFwcGVuZENoaWxkKFMpO2xldCBSPUkuaW5uZXJIVE1MO3JldHVybiBjb25zb2xlLmxvZygiZ2V0U3BsaXRDb250ZW50OiBGaW5hbCBzcGxpdCByZXN1bHQ6Iix7Y3Vyc29yUG9zOiQsYmVmb3JlSHRtbDpQLGJlZm9yZUxlbmd0aDpQLmxlbmd0aCxiZWZvcmVIdG1sUHJldmlldzpQLnN1YnN0cmluZygwLDEwMCkrKFAubGVuZ3RoPjEwMD8iLi4uIjoiIiksYWZ0ZXJIdG1sOlIsYWZ0ZXJMZW5ndGg6Ui5sZW5ndGgsYWZ0ZXJIdG1sUHJldmlldzpSLnN1YnN0cmluZygwLDEwMCkrKFIubGVuZ3RoPjEwMD8iLi4uIjoiIil9KSx7YmVmb3JlOlAsYWZ0ZXI6Un19c3RhdGlje211KGEsdCl9fTtyZXR1cm4geT1hfSkoKX0pO3ZhciBtaXQ9ZygoKT0+e0djZSgpO01sKCk7Z3YoKTtObmUoKTtSMGEoKTtsdHQoKTtCOCgpO3J0dCgpO0RkKCk7aXUoKTtjdHQoKTtoaXQoKTt1M2EoKTtwM2EoKTtoM2EoKTtmaXQoKTtmM2EoKTtpdHQoKTtvdHQoKTtnM2EoKX0pO3ZhciBSaCxQbixIWCxHY2U9ZygoKT0+e3ppKCk7TjBhKCk7SjAoKTtwZSgpO21pdCgpO3B0KCk7Umg9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LFBuPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxIWD0oKCk9PntsZXQgcz1bbmUoImRlZXMtaW5wdXQtd3lzaXd5ZyIpXSxlLHQ9W10sYSxyPU90LG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdO3ZhciBIPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzSW5wdXRXeXNpd3lnIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGs9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpTdHJpbmd9KV0scD1bTCh7dHlwZTpTdHJpbmd9KV0sYz1bWSgpXSx4PVtZKCldLHk9W1koKV0sTj1bWSgpXSxPPVtZKCldLFJoKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidmFsdWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+InZhbHVlImluIFMsImhhcyIpLGdldDppKFM9PlMudmFsdWUsImdldCIpLHNldDppKChTLEkpPT57Uy52YWx1ZT1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LG8sbCksUmgodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJvdXRwdXRGb3JtYXQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+Im91dHB1dEZvcm1hdCJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLm91dHB1dEZvcm1hdCwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLm91dHB1dEZvcm1hdD1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LGQsdSksUmgodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJibG9ja3MiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+ImJsb2NrcyJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLmJsb2NrcywiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLmJsb2Nrcz1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LGIsdiksUmgodGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJkcmFnZ2VkQmxvY2tJZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4iZHJhZ2dlZEJsb2NrSWQiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5kcmFnZ2VkQmxvY2tJZCwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLmRyYWdnZWRCbG9ja0lkPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sbSxmKSxSaCh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImRyYWdPdmVyQmxvY2tJZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4iZHJhZ092ZXJCbG9ja0lkImluIFMsImhhcyIpLGdldDppKFM9PlMuZHJhZ092ZXJCbG9ja0lkLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MuZHJhZ092ZXJCbG9ja0lkPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sTSx6KSxSaCh0aGlzLG51bGwsTix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImRyYWdPdmVyUG9zaXRpb24iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+ImRyYWdPdmVyUG9zaXRpb24iaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5kcmFnT3ZlclBvc2l0aW9uLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MuZHJhZ092ZXJQb3NpdGlvbj1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LEMsXyksUmgodGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWxlY3RlZFRleHQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+InNlbGVjdGVkVGV4dCJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLnNlbGVjdGVkVGV4dCwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLnNlbGVjdGVkVGV4dD1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LCQsRSksUmgobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6a30sbnVsbCx0KSxIPWE9ZS52YWx1ZSxrJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmt9KX1zdGF0aWMgZGVtbz1BMGE7c3RhdGljIGRlbW9Hcm91cHM9WyJJbnB1dCIsIldvcmtzcGFjZSJdOyNlPVBuKHRoaXMsbywiIik7Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHZhbHVlKGspe3RoaXMuI2U9a30jdD0oUG4odGhpcyxsKSxQbih0aGlzLGQsImh0bWwiKSk7Z2V0IG91dHB1dEZvcm1hdCgpe3JldHVybiB0aGlzLiN0fXNldCBvdXRwdXRGb3JtYXQoayl7dGhpcy4jdD1rfSNhPShQbih0aGlzLHUpLFBuKHRoaXMsYixbe2lkOmNyLmdlbmVyYXRlQmxvY2tJZCgpLHR5cGU6InBhcmFncmFwaCIsY29udGVudDoiIn1dKSk7Z2V0IGJsb2Nrcygpe3JldHVybiB0aGlzLiNhfXNldCBibG9ja3Moayl7dGhpcy4jYT1rfXNlbGVjdGVkQmxvY2tJZD0oUG4odGhpcyx2KSxudWxsKTtzbGFzaE1lbnU9UG5lLmdldEluc3RhbmNlKCk7I3M9UG4odGhpcyxtLG51bGwpO2dldCBkcmFnZ2VkQmxvY2tJZCgpe3JldHVybiB0aGlzLiNzfXNldCBkcmFnZ2VkQmxvY2tJZChrKXt0aGlzLiNzPWt9I2k9KFBuKHRoaXMsZiksUG4odGhpcyxNLG51bGwpKTtnZXQgZHJhZ092ZXJCbG9ja0lkKCl7cmV0dXJuIHRoaXMuI2l9c2V0IGRyYWdPdmVyQmxvY2tJZChrKXt0aGlzLiNpPWt9I3I9KFBuKHRoaXMseiksUG4odGhpcyxDLG51bGwpKTtnZXQgZHJhZ092ZXJQb3NpdGlvbigpe3JldHVybiB0aGlzLiNyfXNldCBkcmFnT3ZlclBvc2l0aW9uKGspe3RoaXMuI3I9a31mb3JtYXR0aW5nTWVudT0oUG4odGhpcyxfKSxBbmUuZ2V0SW5zdGFuY2UoKSk7I289UG4odGhpcywkLCIiKTtnZXQgc2VsZWN0ZWRUZXh0KCl7cmV0dXJuIHRoaXMuI299c2V0IHNlbGVjdGVkVGV4dChrKXt0aGlzLiNvPWt9ZWRpdG9yQ29udGVudFJlZj1Qbih0aGlzLEUpO2lzQ29tcG9zaW5nPSExO2Jsb2NrT3BlcmF0aW9ucztpbnB1dEhhbmRsZXI7a2V5Ym9hcmRIYW5kbGVyO2RyYWdEcm9wSGFuZGxlcjtoaXN0b3J5O3N0YXRpYyBzdHlsZXM9W0hlLC4uLk90LmJhc2VTdHlsZXMsaC5kZWZhdWx0U3R5bGVzLG50dF07Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuYmxvY2tPcGVyYXRpb25zPW5ldyBFWih0aGlzKSx0aGlzLmlucHV0SGFuZGxlcj1uZXcgTlgodGhpcyksdGhpcy5rZXlib2FyZEhhbmRsZXI9bmV3IFJYKHRoaXMpLHRoaXMuZHJhZ0Ryb3BIYW5kbGVyPW5ldyBPWCh0aGlzKSx0aGlzLmhpc3Rvcnk9bmV3IEZYfWFzeW5jIGNvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKX1hc3luYyBkaXNjb25uZWN0ZWRDYWxsYmFjaygpe2F3YWl0IHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5pbnB1dEhhbmRsZXI/LmRlc3Ryb3koKSx0aGlzLmJsdXJUaW1lb3V0JiYoY2xlYXJUaW1lb3V0KHRoaXMuYmx1clRpbWVvdXQpLHRoaXMuYmx1clRpbWVvdXQ9bnVsbCl9YXN5bmMgZmlyc3RVcGRhdGVkKCl7aWYodGhpcy52YWx1ZSYmdGhpcy52YWx1ZS50cmltKCkubGVuZ3RoPjApe2xldCBrPXRoaXMub3V0cHV0Rm9ybWF0PT09Imh0bWwiP1JjLnBhcnNlSHRtbFRvQmxvY2tzKHRoaXMudmFsdWUpOlJjLnBhcnNlTWFya2Rvd25Ub0Jsb2Nrcyh0aGlzLnZhbHVlKTtrLmxlbmd0aD4wJiYodGhpcy5ibG9ja3M9ayl9dGhpcy51cGRhdGVWYWx1ZSgpLHRoaXMuZWRpdG9yQ29udGVudFJlZj10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLmVkaXRvci1jb250ZW50IiksdGhpcy5lZGl0b3JDb250ZW50UmVmJiZ0aGlzLmVkaXRvckNvbnRlbnRSZWYuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGs9PnRoaXMuaGFuZGxlRWRpdG9yQ2xpY2soaykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiYmxvY2stdGV4dC1zZWxlY3RlZCIsKGs9PntpZighdGhpcy5zbGFzaE1lbnUudmlzaWJsZSYmay5kZXRhaWwuaGFzU2VsZWN0aW9uJiZrLmRldGFpbC50ZXh0Lmxlbmd0aD4wJiYodGhpcy5zZWxlY3RlZFRleHQ9ay5kZXRhaWwudGV4dCxrLmRldGFpbC5yZWN0KSl7bGV0IFM9e3g6ay5kZXRhaWwucmVjdC5sZWZ0K2suZGV0YWlsLnJlY3Qud2lkdGgvMix5Ok1hdGgubWF4KDQ1LGsuZGV0YWlsLnJlY3QudG9wLTQ1KX07dGhpcy5mb3JtYXR0aW5nTWVudS5zaG93KFMsYXN5bmMgST0+YXdhaXQgdGhpcy5hcHBseUZvcm1hdChJKSl9fSkpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsaz0+e2xldCBTPXRoaXMuZm9ybWF0dGluZ01lbnUuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLmZvcm1hdHRpbmctbWVudSIpO2lmKFMmJlMuY29udGFpbnMoay50YXJnZXQpKXJldHVybjtsZXQgST13aW5kb3cuZ2V0U2VsZWN0aW9uKCk7SSYmSS50b1N0cmluZygpLnRyaW0oKS5sZW5ndGg+MHx8dGhpcy5mb3JtYXR0aW5nTWVudS52aXNpYmxlJiZ0aGlzLmhpZGVGb3JtYXR0aW5nTWVudSgpfSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixrPT57bGV0IFM9ay50YXJnZXQ7IXRoaXMuY29udGFpbnMoUykmJiF0aGlzLnNoYWRvd1Jvb3Q/LmNvbnRhaW5zKFMpfHwoKGsubWV0YUtleXx8ay5jdHJsS2V5KSYmIWsuc2hpZnRLZXkmJmsua2V5PT09InoiPyhrLnByZXZlbnREZWZhdWx0KCksdGhpcy51bmRvKCkpOihrLm1ldGFLZXl8fGsuY3RybEtleSkmJmsuc2hpZnRLZXkmJmsua2V5PT09InoiJiYoay5wcmV2ZW50RGVmYXVsdCgpLHRoaXMucmVkbygpKSl9KSx0aGlzLmhpc3Rvcnkuc2F2ZVN0YXRlKHRoaXMuYmxvY2tzLHRoaXMuc2VsZWN0ZWRCbG9ja0lkKSx0aGlzLnJlbmRlckJsb2Nrc1Byb2dyYW1tYXRpY2FsbHkoKX1yZW5kZXJCbG9ja3NQcm9ncmFtbWF0aWNhbGx5KCl7dGhpcy5lZGl0b3JDb250ZW50UmVmJiYodGhpcy5lZGl0b3JDb250ZW50UmVmLmlubmVySFRNTD0iIix0aGlzLmJsb2Nrcy5mb3JFYWNoKGs9PntsZXQgUz10aGlzLmNyZWF0ZUJsb2NrRWxlbWVudChrKTt0aGlzLmVkaXRvckNvbnRlbnRSZWYuYXBwZW5kQ2hpbGQoUyl9KSl9Y3JlYXRlQmxvY2tFbGVtZW50KGspe2xldCBTPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2lmKFMuY2xhc3NOYW1lPSJibG9jay13cmFwcGVyIixTLnNldEF0dHJpYnV0ZSgiZGF0YS1ibG9jay1pZCIsay5pZCksay50eXBlIT09ImRpdmlkZXIiKXtsZXQgUD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtQLmNsYXNzTmFtZT0iZHJhZy1oYW5kbGUiLFAuZHJhZ2dhYmxlPSEwLFAuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0IixSPT50aGlzLmRyYWdEcm9wSGFuZGxlci5oYW5kbGVEcmFnU3RhcnQoUixrKSksUy5hcHBlbmRDaGlsZChQKX1sZXQgST1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkZWVzLXd5c2l3eWctYmxvY2siKTtyZXR1cm4gSS5ibG9jaz1rLEkuaXNTZWxlY3RlZD10aGlzLnNlbGVjdGVkQmxvY2tJZD09PWsuaWQsSS53eXNpd3lnQ29tcG9uZW50PXRoaXMsSS5oYW5kbGVycz17b25JbnB1dDppKFA9PnRoaXMuaW5wdXRIYW5kbGVyLmhhbmRsZUJsb2NrSW5wdXQoUCxrKSwib25JbnB1dCIpLG9uS2V5RG93bjppKFA9PnRoaXMua2V5Ym9hcmRIYW5kbGVyLmhhbmRsZUJsb2NrS2V5RG93bihQLGspLCJvbktleURvd24iKSxvbkZvY3VzOmkoKCk9PnRoaXMuaGFuZGxlQmxvY2tGb2N1cyhrKSwib25Gb2N1cyIpLG9uQmx1cjppKCgpPT50aGlzLmhhbmRsZUJsb2NrQmx1cihrKSwib25CbHVyIiksb25Db21wb3NpdGlvblN0YXJ0OmkoKCk9PnRoaXMuaXNDb21wb3Npbmc9ITAsIm9uQ29tcG9zaXRpb25TdGFydCIpLG9uQ29tcG9zaXRpb25FbmQ6aSgoKT0+dGhpcy5pc0NvbXBvc2luZz0hMSwib25Db21wb3NpdGlvbkVuZCIpLG9uTW91c2VVcDppKFA9PnRoaXMuaGFuZGxlVGV4dFNlbGVjdGlvbihQKSwib25Nb3VzZVVwIiksb25SZXF1ZXN0VXBkYXRlOmkoKCk9PnRoaXMudXBkYXRlQmxvY2tFbGVtZW50KGsuaWQpLCJvblJlcXVlc3RVcGRhdGUiKX0sUy5hcHBlbmRDaGlsZChJKSxTLmFkZEV2ZW50TGlzdGVuZXIoImRyYWdvdmVyIixQPT50aGlzLmRyYWdEcm9wSGFuZGxlci5oYW5kbGVEcmFnT3ZlcihQLGspKSxTLmFkZEV2ZW50TGlzdGVuZXIoImRyb3AiLFA9PnRoaXMuZHJhZ0Ryb3BIYW5kbGVyLmhhbmRsZURyb3AoUCxrKSksUy5hZGRFdmVudExpc3RlbmVyKCJkcmFnbGVhdmUiLCgpPT50aGlzLmRyYWdEcm9wSGFuZGxlci5oYW5kbGVEcmFnTGVhdmUoaykpLFN9dXBkYXRlQmxvY2tFbGVtZW50KGspe2xldCBTPXRoaXMuYmxvY2tzLmZpbmQoUj0+Ui5pZD09PWspO2lmKCFTKXJldHVybjtsZXQgST10aGlzLmVkaXRvckNvbnRlbnRSZWYucXVlcnlTZWxlY3RvcihgW2RhdGEtYmxvY2staWQ9IiR7a30iXWApO2lmKCFJKXJldHVybjtsZXQgUD10aGlzLmNyZWF0ZUJsb2NrRWxlbWVudChTKTtJLnJlcGxhY2VXaXRoKFApfXJlbmRlcigpe3JldHVybiBNbmAKICAgICAgPGRlZXMtbGFiZWwKICAgICAgICAubGFiZWw9IiR7dGhpcy5sYWJlbH0iCiAgICAgICAgLmluZm9UZXh0PSIke3RoaXMuaW5mb1RleHR9IgogICAgICAgIC5yZXF1aXJlZD0iJHt0aGlzLnJlcXVpcmVkfSIKICAgICAgPjwvZGVlcy1sYWJlbD4KICAgICAgPGRpdiBjbGFzcz0id3lzaXd5Zy1jb250YWluZXIiPgogICAgICAgIDxkaXYKICAgICAgICAgIGNsYXNzPSJlZGl0b3ItY29udGVudCAke3RoaXMuZHJhZ2dlZEJsb2NrSWQ/ImRyYWdnaW5nIjoiIn0iCiAgICAgICAgICBpZD0iZWRpdG9yLWNvbnRlbnQiCiAgICAgICAgPgogICAgICAgICAgPCEtLSBCbG9ja3Mgd2lsbCBiZSByZW5kZXJlZCBwcm9ncmFtbWF0aWNhbGx5IC0tPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgJHt0aGlzLnJlbmRlckRlc2NyaXB0aW9uKCl9CiAgICBgfWhhbmRsZVNsYXNoTWVudUtleWJvYXJkKGspe3N3aXRjaChrLmtleSl7Y2FzZSJBcnJvd0Rvd24iOmsucHJldmVudERlZmF1bHQoKSx0aGlzLnNsYXNoTWVudS5uYXZpZ2F0ZSgiZG93biIpO2JyZWFrO2Nhc2UiQXJyb3dVcCI6ay5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuc2xhc2hNZW51Lm5hdmlnYXRlKCJ1cCIpO2JyZWFrO2Nhc2UiRW50ZXIiOmsucHJldmVudERlZmF1bHQoKSx0aGlzLnNsYXNoTWVudS5zZWxlY3RDdXJyZW50KCk7YnJlYWs7Y2FzZSJFc2NhcGUiOmsucHJldmVudERlZmF1bHQoKSx0aGlzLmNsb3NlU2xhc2hNZW51KCEwKTticmVha319Y2xvc2VTbGFzaE1lbnUoaz0hMSl7aWYoayYmdGhpcy5zZWxlY3RlZEJsb2NrSWQpe2xldCBTPXRoaXMuYmxvY2tzLmZpbmQoST0+SS5pZD09PXRoaXMuc2VsZWN0ZWRCbG9ja0lkKTtpZihTKXtsZXQgUD10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgW2RhdGEtYmxvY2staWQ9IiR7Uy5pZH0iXWApPy5xdWVyeVNlbGVjdG9yKCJkZWVzLXd5c2l3eWctYmxvY2siKTtpZihQKXtsZXQgUj1QLmdldENvbnRlbnQoKTtpZihSLnN0YXJ0c1dpdGgoIi8iKSl7bGV0IEs9Ui5yZXBsYWNlKC9eXC9bXlxzXSpccyovLCIiKS50cmltKCk7UC5zZXRDb250ZW50KEspLFMuY29udGVudD1LLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e1AuZm9jdXNXaXRoQ3Vyc29yKDApfSl9fX19dGhpcy5zbGFzaE1lbnUuaGlkZSgpfWhhbmRsZUJsb2NrRm9jdXMoayl7dGhpcy5ibHVyVGltZW91dCYmKGNsZWFyVGltZW91dCh0aGlzLmJsdXJUaW1lb3V0KSx0aGlzLmJsdXJUaW1lb3V0PW51bGwpO2xldCBTPXRoaXMuc2VsZWN0ZWRCbG9ja0lkO2lmKHRoaXMuc2VsZWN0ZWRCbG9ja0lkPWsuaWQsUyE9PWsuaWQpe2lmKFMpe2xldCBLPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihgW2RhdGEtYmxvY2staWQ9IiR7U30iXWApPy5xdWVyeVNlbGVjdG9yKCJkZWVzLXd5c2l3eWctYmxvY2siKTtLJiYoSy5pc1NlbGVjdGVkPSExKX1sZXQgUD10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWJsb2NrLWlkPSIke2suaWR9Il1gKT8ucXVlcnlTZWxlY3RvcigiZGVlcy13eXNpd3lnLWJsb2NrIik7UCYmKFAuaXNTZWxlY3RlZD0hMCl9fWJsdXJUaW1lb3V0PW51bGw7aGFuZGxlQmxvY2tCbHVyKGspe2lmKHRoaXMuYmx1clRpbWVvdXQmJmNsZWFyVGltZW91dCh0aGlzLmJsdXJUaW1lb3V0KSx0aGlzLnNsYXNoTWVudS52aXNpYmxlKXJldHVybjtsZXQgST10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWJsb2NrLWlkPSIke2suaWR9Il1gKT8ucXVlcnlTZWxlY3RvcigiZGVlcy13eXNpd3lnLWJsb2NrIik7aWYoSSYmSS5nZXRDb250ZW50KXtsZXQgUD1JLmdldENvbnRlbnQoKTtrLmNvbnRlbnQhPT1QJiYoay5jb250ZW50PVApfXRoaXMuYmx1clRpbWVvdXQ9c2V0VGltZW91dCgoKT0+e3RoaXMuc2hhZG93Um9vdD8uYWN0aXZlRWxlbWVudD8uY2xhc3NMaXN0LmNvbnRhaW5zKCJibG9jayIpfHx0aGlzLnVwZGF0ZVZhbHVlKCl9LDEwMCl9aGFuZGxlRWRpdG9yQ2xpY2soayl7bGV0IFM9ay50YXJnZXQ7aWYodGhpcy5zbGFzaE1lbnUudmlzaWJsZSYmdGhpcy5jbG9zZVNsYXNoTWVudSghMCksUy5jbGFzc0xpc3QuY29udGFpbnMoImVkaXRvci1jb250ZW50Iikpe2xldCBJPXRoaXMuYmxvY2tzW3RoaXMuYmxvY2tzLmxlbmd0aC0xXTt0aGlzLmJsb2NrT3BlcmF0aW9ucy5mb2N1c0Jsb2NrKEkuaWQsSS50eXBlPT09ImRpdmlkZXIifHxJLnR5cGU9PT0iaW1hZ2UiP3ZvaWQgMDoiZW5kIil9fWNyZWF0ZU5ld0Jsb2NrKGs9InBhcmFncmFwaCIsUz0iIixJKXtyZXR1cm57aWQ6Y3IuZ2VuZXJhdGVCbG9ja0lkKCksdHlwZTprLGNvbnRlbnQ6UywuLi5JJiZ7bWV0YWRhdGE6SX19fWFzeW5jIGluc2VydEJsb2NrQWZ0ZXIoayxTLEk9ITApe2xldCBQPXRoaXMuYmxvY2tzLmZpbmRJbmRleChLPT5LLmlkPT09ay5pZCk7dGhpcy5ibG9ja3M9Wy4uLnRoaXMuYmxvY2tzLnNsaWNlKDAsUCsxKSxTLC4uLnRoaXMuYmxvY2tzLnNsaWNlKFArMSldO2xldCBSPXRoaXMuZWRpdG9yQ29udGVudFJlZi5xdWVyeVNlbGVjdG9yKGBbZGF0YS1ibG9jay1pZD0iJHtrLmlkfSJdYCk7aWYoUil7bGV0IEs9dGhpcy5jcmVhdGVCbG9ja0VsZW1lbnQoUyk7Ui5pbnNlcnRBZGphY2VudEVsZW1lbnQoImFmdGVyZW5kIixLKX10aGlzLnVwZGF0ZVZhbHVlKCksSSYmUy50eXBlIT09ImRpdmlkZXIiJiYoYXdhaXQgbmV3IFByb21pc2UoSz0+c2V0VGltZW91dChLLDApKSxhd2FpdCB0aGlzLmJsb2NrT3BlcmF0aW9ucy5mb2N1c0Jsb2NrKFMuaWQsInN0YXJ0IikpfWFzeW5jIGluc2VydEJsb2NrKGspe2xldCBTPXRoaXMuYmxvY2tzLmZpbmQoUj0+Ui5pZD09PXRoaXMuc2VsZWN0ZWRCbG9ja0lkKTtpZighUyl7dGhpcy5jbG9zZVNsYXNoTWVudSgpO3JldHVybn1sZXQgUD10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgW2RhdGEtYmxvY2staWQ9IiR7Uy5pZH0iXWApPy5xdWVyeVNlbGVjdG9yKCJkZWVzLXd5c2l3eWctYmxvY2siKTtpZihQKXtsZXQgUj1QLmdldENvbnRlbnQoKTtpZihSLnN0YXJ0c1dpdGgoIi8iKSl7bGV0IEs9Ui5yZXBsYWNlKC9eXC9bXlxzXSpccyovLCIiKS50cmltKCk7UC5zZXRDb250ZW50KEspLFMuY29udGVudD1LfX1pZih0aGlzLmNsb3NlU2xhc2hNZW51KCExKSxrPT09ImNvZGUiJiYoUy5tZXRhZGF0YT17bGFuZ3VhZ2U6InR5cGVzY3JpcHQifSksUy50eXBlPWssUy5jb250ZW50PVMuY29udGVudHx8IiIsaz09PSJkaXZpZGVyIil7Uy5jb250ZW50PSIgIjtsZXQgUj10aGlzLmNyZWF0ZU5ld0Jsb2NrKCk7dGhpcy5pbnNlcnRCbG9ja0FmdGVyKFMsUil9ZWxzZSBrPT09Imxpc3QiPyhTLm1ldGFkYXRhPXtsaXN0VHlwZToiYnVsbGV0In0sUy5jb250ZW50PSIiKTprPT09ImltYWdlIj8oUy5jb250ZW50PSIiLFMubWV0YWRhdGE9e3VybDoiIixsb2FkaW5nOiExfSk6az09PSJ5b3V0dWJlIj8oUy5jb250ZW50PSIiLFMubWV0YWRhdGE9e3ZpZGVvSWQ6IiIsdXJsOiIifSk6az09PSJtYXJrZG93biI/Uy5tZXRhZGF0YT17c2hvd1ByZXZpZXc6ITF9Oms9PT0iaHRtbCI/Uy5tZXRhZGF0YT17c2hvd1ByZXZpZXc6ITF9Oms9PT0iYXR0YWNobWVudCI/KFMuY29udGVudD0iIixTLm1ldGFkYXRhPXtmaWxlczpbXX0pOlMuY29udGVudD1TLmNvbnRlbnR8fCIiO3RoaXMudXBkYXRlQmxvY2tFbGVtZW50KFMuaWQpLHRoaXMudXBkYXRlVmFsdWUoKSxhd2FpdCBuZXcgUHJvbWlzZShSPT5zZXRUaW1lb3V0KFIsMCkpLGs9PT0ibGlzdCI/KHRoaXMuYmxvY2tPcGVyYXRpb25zLmZvY3VzQmxvY2soUy5pZCwic3RhcnQiKSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntsZXQgSz10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWJsb2NrLWlkPSIke1MuaWR9Il1gKT8ucXVlcnlTZWxlY3RvcigiZGVlcy13eXNpd3lnLWJsb2NrIik7SyYmSy5mb2N1c0xpc3RJdGVtKCl9KSk6ayE9PSJkaXZpZGVyIiYmayE9PSJpbWFnZSImJmshPT0ieW91dHViZSImJmshPT0ibWFya2Rvd24iJiZrIT09Imh0bWwiJiZrIT09ImF0dGFjaG1lbnQiP3RoaXMuYmxvY2tPcGVyYXRpb25zLmZvY3VzQmxvY2soUy5pZCwic3RhcnQiKTooaz09PSJpbWFnZSJ8fGs9PT0ieW91dHViZSJ8fGs9PT0ibWFya2Rvd24ifHxrPT09Imh0bWwifHxrPT09ImF0dGFjaG1lbnQiKSYmdGhpcy5ibG9ja09wZXJhdGlvbnMuZm9jdXNCbG9jayhTLmlkKX11cGRhdGVWYWx1ZSgpe3RoaXMub3V0cHV0Rm9ybWF0PT09Imh0bWwiP3RoaXMudmFsdWU9UmMuZ2V0SHRtbE91dHB1dCh0aGlzLmJsb2Nrcyk6dGhpcy52YWx1ZT1SYy5nZXRNYXJrZG93bk91dHB1dCh0aGlzLmJsb2NrcyksdGhpcy5jaGFuZ2VTdWJqZWN0Lm5leHQodGhpcy52YWx1ZSksdGhpcy5zYXZlVG9IaXN0b3J5KCEwKX1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLnZhbHVlfXNldFZhbHVlKGspe3RoaXMudmFsdWU9ayx0aGlzLm91dHB1dEZvcm1hdD09PSJodG1sIj90aGlzLmJsb2Nrcz1SYy5wYXJzZUh0bWxUb0Jsb2NrcyhrKTp0aGlzLmJsb2Nrcz1SYy5wYXJzZU1hcmtkb3duVG9CbG9ja3MoayksdGhpcy5ibG9ja3MubGVuZ3RoPT09MCYmKHRoaXMuYmxvY2tzPVt7aWQ6Y3IuZ2VuZXJhdGVCbG9ja0lkKCksdHlwZToicGFyYWdyYXBoIixjb250ZW50OiIifV0pLHRoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMudmFsdWUpLHRoaXMuZWRpdG9yQ29udGVudFJlZiYmdGhpcy5yZW5kZXJCbG9ja3NQcm9ncmFtbWF0aWNhbGx5KCl9ZXhwb3J0QmxvY2tzKCl7cmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5ibG9ja3MpKX1pbXBvcnRCbG9ja3Moayl7dGhpcy5ibG9ja3M9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShrKSksdGhpcy51cGRhdGVWYWx1ZSgpLHRoaXMuZWRpdG9yQ29udGVudFJlZiYmdGhpcy5yZW5kZXJCbG9ja3NQcm9ncmFtbWF0aWNhbGx5KCl9ZXhwb3J0QXNIdG1sKCl7cmV0dXJuIFJjLmdldEh0bWxPdXRwdXQodGhpcy5ibG9ja3MpfWV4cG9ydEFzTWFya2Rvd24oKXtyZXR1cm4gUmMuZ2V0TWFya2Rvd25PdXRwdXQodGhpcy5ibG9ja3MpfWV4cG9ydFN0YXRlKCl7cmV0dXJue2Jsb2Nrczp0aGlzLmV4cG9ydEJsb2NrcygpLG91dHB1dEZvcm1hdDp0aGlzLm91dHB1dEZvcm1hdH19aW1wb3J0U3RhdGUoayl7ay5vdXRwdXRGb3JtYXQmJih0aGlzLm91dHB1dEZvcm1hdD1rLm91dHB1dEZvcm1hdCksdGhpcy5pbXBvcnRCbG9ja3Moay5ibG9ja3MpfWhhbmRsZURyYWdFbmQoKXtpZih0aGlzLmRyYWdnZWRCbG9ja0lkKXtsZXQgUz10aGlzLmVkaXRvckNvbnRlbnRSZWYucXVlcnlTZWxlY3RvcihgW2RhdGEtYmxvY2staWQ9IiR7dGhpcy5kcmFnZ2VkQmxvY2tJZH0iXWApO1MmJlMuY2xhc3NMaXN0LnJlbW92ZSgiZHJhZ2dpbmciKX10aGlzLmVkaXRvckNvbnRlbnRSZWYucXVlcnlTZWxlY3RvckFsbCgiLmJsb2NrLXdyYXBwZXIiKS5mb3JFYWNoKFM9PntTLmNsYXNzTGlzdC5yZW1vdmUoImRyYWctb3Zlci1iZWZvcmUiLCJkcmFnLW92ZXItYWZ0ZXIiKX0pLHRoaXMuZWRpdG9yQ29udGVudFJlZi5jbGFzc0xpc3QucmVtb3ZlKCJkcmFnZ2luZyIpLHRoaXMuZHJhZ2dlZEJsb2NrSWQ9bnVsbCx0aGlzLmRyYWdPdmVyQmxvY2tJZD1udWxsLHRoaXMuZHJhZ092ZXJQb3NpdGlvbj1udWxsfWhhbmRsZURyb3AoayxTKXtpZihrLnByZXZlbnREZWZhdWx0KCksIXRoaXMuZHJhZ2dlZEJsb2NrSWR8fHRoaXMuZHJhZ2dlZEJsb2NrSWQ9PT1TLmlkKXJldHVybjtsZXQgST10aGlzLmJsb2Nrcy5maW5kSW5kZXgoVj0+Vi5pZD09PXRoaXMuZHJhZ2dlZEJsb2NrSWQpLFA9dGhpcy5ibG9ja3MuZmluZEluZGV4KFY9PlYuaWQ9PT1TLmlkKTtpZihJPT09LTF8fFA9PT0tMSlyZXR1cm47bGV0W1JdPXRoaXMuYmxvY2tzLnNwbGljZShJLDEpLEs9UDt0aGlzLmRyYWdPdmVyUG9zaXRpb249PT0iYWZ0ZXIiP0s9STxQP1A6UCsxOks9STxQP1AtMTpQLHRoaXMuYmxvY2tzLnNwbGljZShLLDAsUiksdGhpcy5yZW5kZXJCbG9ja3NQcm9ncmFtbWF0aWNhbGx5KCksdGhpcy51cGRhdGVWYWx1ZSgpLHRoaXMuaGFuZGxlRHJhZ0VuZCgpLHNldFRpbWVvdXQoKCk9PntsZXQgVj10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgW2RhdGEtYmxvY2staWQ9IiR7Ui5pZH0iXSAuYmxvY2tgKTtWJiZSLnR5cGUhPT0iZGl2aWRlciImJlYuZm9jdXMoKX0sMTAwKX1oYW5kbGVUZXh0U2VsZWN0aW9uKGspe3RoaXMuc2xhc2hNZW51LnZpc2libGV9dXBkYXRlRm9ybWF0dGluZ01lbnVQb3NpdGlvbigpe2xldCBrPVtdO3RoaXMuc2hhZG93Um9vdCYmay5wdXNoKHRoaXMuc2hhZG93Um9vdCksdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yQWxsKCIuYmxvY2std3JhcHBlciIpPy5mb3JFYWNoKFA9PntsZXQgUj1QLnF1ZXJ5U2VsZWN0b3IoImRlZXMtd3lzaXd5Zy1ibG9jayIpO1I/LnNoYWRvd1Jvb3QmJmsucHVzaChSLnNoYWRvd1Jvb3QpfSk7bGV0IEk9c3UuZ2V0U2VsZWN0aW9uQ29vcmRpbmF0ZXMoLi4uayk7SSYmdGhpcy5mb3JtYXR0aW5nTWVudS5zaG93KHt4OkkueCx5OkkueX0sYXN5bmMgUD0+YXdhaXQgdGhpcy5hcHBseUZvcm1hdChQKSl9aGlkZUZvcm1hdHRpbmdNZW51KCl7dGhpcy5mb3JtYXR0aW5nTWVudS5oaWRlKCksdGhpcy5zZWxlY3RlZFRleHQ9IiJ9YXN5bmMgYXBwbHlGb3JtYXQoayl7bGV0IFM9W107dGhpcy5zaGFkb3dSb290JiZTLnB1c2godGhpcy5zaGFkb3dSb290KSx0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3JBbGwoIi5ibG9jay13cmFwcGVyIik/LmZvckVhY2gobWU9PntsZXQgQj1tZS5xdWVyeVNlbGVjdG9yKCJkZWVzLXd5c2l3eWctYmxvY2siKTtCPy5zaGFkb3dSb290JiZTLnB1c2goQi5zaGFkb3dSb290KX0pO2xldCBQPVN0LmdldFNlbGVjdGlvbkluZm8oLi4uUyk7aWYoIVApcmV0dXJuO2xldCBSLEssVj10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgiLmJsb2NrLXdyYXBwZXIiKTtmb3IobGV0IG1lPTA7bWU8Vi5sZW5ndGg7bWUrKyl7bGV0IEI9VlttZV0sVT1CLnF1ZXJ5U2VsZWN0b3IoImRlZXMtd3lzaXd5Zy1ibG9jayIpO2lmKFU/LnNoYWRvd1Jvb3Qpe2xldCBoZT1VLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLmJsb2NrIik7aWYoaGUmJihoZS5jb250YWlucyhQLnN0YXJ0Q29udGFpbmVyKXx8aGUuY29udGFpbnMoUC5lbmRDb250YWluZXIpKSl7bGV0IEY9Qi5nZXRBdHRyaWJ1dGUoImRhdGEtYmxvY2staWQiKTtSPXRoaXMuYmxvY2tzLmZpbmQoaj0+ai5pZD09PUYpLEs9VTticmVha319fWlmKCFSfHwhSylyZXR1cm47bGV0IFc9U3QuY3JlYXRlUmFuZ2VGcm9tSW5mbyhQKTtpZihrPT09ImxpbmsiKXtsZXQgbWU9YXdhaXQgdGhpcy5zaG93TGlua0RpYWxvZygpO2lmKCFtZSl7Sy5mb2N1cygpO3JldHVybn1zdS5hcHBseUZvcm1hdChrLG1lLFcsUyl9ZWxzZSBzdS5hcHBseUZvcm1hdChrLHZvaWQgMCxXLFMpO2F3YWl0IG5ldyBQcm9taXNlKG1lPT5zZXRUaW1lb3V0KG1lLDEwKSksUi5jb250ZW50PUsuZ2V0Q29udGVudCgpLHRoaXMudXBkYXRlVmFsdWUoKSxLLmZvY3VzKCksaz09PSJsaW5rIj90aGlzLmhpZGVGb3JtYXR0aW5nTWVudSgpOnRoaXMuc2VsZWN0ZWRUZXh0PSIifWFzeW5jIHNob3dMaW5rRGlhbG9nKCl7cmV0dXJuIG5ldyBQcm9taXNlKGs9PntsZXQgUz1udWxsO1FhLmNyZWF0ZUFuZFNob3coe2hlYWRpbmc6IkFkZCBMaW5rIixjb250ZW50Ok1uYAogICAgICAgICAgPHN0eWxlPgogICAgICAgICAgICAubGluay1pbnB1dCB7CiAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgICAgcGFkZGluZzogMTJweDsKICAgICAgICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1saW5lLWJyaWdodCk7CiAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItaW5wdXQpOwogICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQpOwogICAgICAgICAgICAgIG1hcmdpbjogMTZweCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC5saW5rLWlucHV0OmZvY3VzIHsKICAgICAgICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZGVlcy1jb2xvci1wcmltYXJ5KTsKICAgICAgICAgICAgfQogICAgICAgICAgPC9zdHlsZT4KICAgICAgICAgIDxpbnB1dCAKICAgICAgICAgICAgY2xhc3M9ImxpbmstaW5wdXQiIAogICAgICAgICAgICB0eXBlPSJ1cmwiIAogICAgICAgICAgICBwbGFjZWhvbGRlcj0iaHR0cHM6Ly9leGFtcGxlLmNvbSIgCiAgICAgICAgICAgIEBrZXlkb3duPSIke0k9PntpZihJLmtleT09PSJFbnRlciIpe2xldCBQPUkudGFyZ2V0O1M9UC52YWx1ZTtsZXQgUj1QLmNsb3Nlc3QoImRlZXMtbW9kYWwiKTtpZihSKXtsZXQgSz1SLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5ib3R0b21CdXR0b246bGFzdC1jaGlsZCIpO0smJksuY2xpY2soKX19fX0iCiAgICAgICAgICAgIEBpbnB1dD0iJHtJPT57Uz1JLnRhcmdldC52YWx1ZX19IgogICAgICAgICAgLz4KICAgICAgICBgLG1lbnVPcHRpb25zOlt7bmFtZToiQ2FuY2VsIixhY3Rpb246aShhc3luYyBJPT57SS5kZXN0cm95KCksayhudWxsKX0sImFjdGlvbiIpfSx7bmFtZToiQWRkIExpbmsiLGFjdGlvbjppKGFzeW5jIEk9PntJLmRlc3Ryb3koKSxrKFMpfSwiYWN0aW9uIil9XX0pLHNldFRpbWVvdXQoKCk9PntsZXQgST1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkZWVzLW1vZGFsIC5saW5rLWlucHV0Iik7SSYmSS5mb2N1cygpfSwxMDApfSl9dW5kbygpe2xldCBrPXRoaXMuaGlzdG9yeS51bmRvKCk7ayYmdGhpcy5yZXN0b3JlU3RhdGUoayl9cmVkbygpe2xldCBrPXRoaXMuaGlzdG9yeS5yZWRvKCk7ayYmdGhpcy5yZXN0b3JlU3RhdGUoayl9cmVzdG9yZVN0YXRlKGspe3RoaXMuYmxvY2tzPWsuYmxvY2tzLHRoaXMuc2VsZWN0ZWRCbG9ja0lkPWsuc2VsZWN0ZWRCbG9ja0lkLHRoaXMucmVuZGVyQmxvY2tzUHJvZ3JhbW1hdGljYWxseSgpLGsuY3Vyc29yUG9zaXRpb24/c2V0VGltZW91dCgoKT0+e2xldCBJPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihgW2RhdGEtYmxvY2staWQ9IiR7ay5jdXJzb3JQb3NpdGlvbi5ibG9ja0lkfSJdYCk/LnF1ZXJ5U2VsZWN0b3IoImRlZXMtd3lzaXd5Zy1ibG9jayIpO0kmJkkuZm9jdXNXaXRoQ3Vyc29yKGsuY3Vyc29yUG9zaXRpb24ub2Zmc2V0KX0sNTApOmsuc2VsZWN0ZWRCbG9ja0lkJiZzZXRUaW1lb3V0KCgpPT57dGhpcy5ibG9ja09wZXJhdGlvbnMuZm9jdXNCbG9jayhrLnNlbGVjdGVkQmxvY2tJZCl9LDUwKSx0aGlzLnVwZGF0ZVZhbHVlKCl9c2F2ZVRvSGlzdG9yeShrPSEwKXtsZXQgUztpZih0aGlzLnNlbGVjdGVkQmxvY2tJZCl7bGV0IFA9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKGBbZGF0YS1ibG9jay1pZD0iJHt0aGlzLnNlbGVjdGVkQmxvY2tJZH0iXWApPy5xdWVyeVNlbGVjdG9yKCJkZWVzLXd5c2l3eWctYmxvY2siKTtpZihQJiZ0eXBlb2YgUC5nZXRDdXJzb3JQb3NpdGlvbj09ImZ1bmN0aW9uIil7bGV0IFI9UC5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIuYmxvY2siKTtpZihSKXtsZXQgSz1QLmdldEN1cnNvclBvc2l0aW9uKFIpO0shPT1udWxsJiYoUz17YmxvY2tJZDp0aGlzLnNlbGVjdGVkQmxvY2tJZCxvZmZzZXQ6S30pfX19az90aGlzLmhpc3Rvcnkuc2F2ZVN0YXRlKHRoaXMuYmxvY2tzLHRoaXMuc2VsZWN0ZWRCbG9ja0lkLFMpOnRoaXMuaGlzdG9yeS5zYXZlQ2hlY2twb2ludCh0aGlzLmJsb2Nrcyx0aGlzLnNlbGVjdGVkQmxvY2tJZCxTKX1zdGF0aWN7UG4oYSx0KX19O3JldHVybiBIPWF9KSgpfSk7dmFyIGIzYSx2M2E9ZygoKT0+e3BlKCk7SXQoKTtLY2UoKTtmbygpO2IzYT1pKCgpPT53YAogIDxkZWVzLWRlbW93cmFwcGVyPgogICAgPHN0eWxlPgogICAgICAke0pgCiAgICAgICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICAgIG1heC13aWR0aDogMTIwMHB4OwogICAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGRlZXMtcGFuZWwgewogICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZGVlcy1wYW5lbDpsYXN0LWNoaWxkIHsKICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5ncmlkLWxheW91dCB7CiAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOwogICAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsKICAgICAgICAgIC5ncmlkLWxheW91dCB7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAub3V0cHV0LXByZXZpZXcgewogICAgICAgICAgbWFyZ2luLXRvcDogMTZweDsKICAgICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAjZjNmNGY2OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgICAgY29sb3I6ICMzNzQxNTE7CiAgICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7CiAgICAgICAgICBtYXgtaGVpZ2h0OiAyMDBweDsKICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgfQogICAgICAgIAogICAgICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKICAgICAgICAgIC5vdXRwdXQtcHJldmlldyB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMyYzJjMmM7CiAgICAgICAgICAgIGNvbG9yOiAjZTRlNGU3OwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgYH0KICAgIDwvc3R5bGU+CiAgICAKICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjEuIEJhc2ljIFJpY2ggVGV4dCBFZGl0b3IifSAuc3VidGl0bGU9JHsiQSBmdWxsLWZlYXR1cmVkIHJpY2ggdGV4dCBlZGl0b3Igd2l0aCBmb3JtYXR0aW5nIHRvb2xiYXIifT4KICAgICAgICA8ZGVlcy1pbnB1dC1yaWNodGV4dCAKICAgICAgICAgIC5sYWJlbD0keyJBcnRpY2xlIENvbnRlbnQifSAKICAgICAgICAgIC52YWx1ZT0keyc8aDE+V2VsY29tZSB0byB0aGUgUmljaCBUZXh0IEVkaXRvciE8L2gxPjxwPlRoaXMgaXMgYSBmZWF0dXJlLXJpY2ggZWRpdG9yIGJ1aWx0IHdpdGggVGlwVGFwLiBZb3UgY2FuOjwvcD48dWw+PGxpPjxzdHJvbmc+Rm9ybWF0IHRleHQ8L3N0cm9uZz4gd2l0aCA8ZW0+dmFyaW91czwvZW0+IDx1PnN0eWxlczwvdT48L2xpPjxsaT5DcmVhdGUgZGlmZmVyZW50IGhlYWRpbmcgbGV2ZWxzPC9saT48bGk+QWRkIDxhIGhyZWY9Imh0dHBzOi8vZXhhbXBsZS5jb20iPmxpbmtzPC9hPiB0byBleHRlcm5hbCByZXNvdXJjZXM8L2xpPjxsaT5Xcml0ZSA8Y29kZT5pbmxpbmUgY29kZTwvY29kZT4gb3IgY29kZSBibG9ja3M8L2xpPjwvdWw+PGJsb2NrcXVvdGU+PHA+VXNlIHRoZSB0b29sYmFyIGFib3ZlIHRvIGV4cGxvcmUgYWxsIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnMgYXZhaWxhYmxlITwvcD48L2Jsb2NrcXVvdGU+PHA+U3RhcnQgdHlwaW5nIHRvIHNlZSB0aGUgbWFnaWMgaGFwcGVuLi4uPC9wPid9CiAgICAgICAgICAuZGVzY3JpcHRpb249JHsiVXNlIHRoZSB0b29sYmFyIHRvIGZvcm1hdCB5b3VyIGNvbnRlbnQgd2l0aCBoZWFkaW5ncywgbGlzdHMsIGxpbmtzLCBhbmQgbW9yZSJ9CiAgICAgICAgICAuc2hvd1dvcmRDb3VudD0keyEwfQogICAgICAgID48L2RlZXMtaW5wdXQtcmljaHRleHQ+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyIyLiBXaXRoIFBsYWNlaG9sZGVyIn0gLnN1YnRpdGxlPSR7IkVtcHR5IGVkaXRvciB3aXRoIHBsYWNlaG9sZGVyIHRleHQifT4KICAgICAgICA8ZGVlcy1pbnB1dC1yaWNodGV4dCAKICAgICAgICAgIC5sYWJlbD0keyJCbG9nIFBvc3QifSAKICAgICAgICAgIC5wbGFjZWhvbGRlcj0keyJTdGFydCB3cml0aW5nIHlvdXIgYmxvZyBwb3N0IGhlcmUuLi4ifQogICAgICAgICAgLnNob3dXb3JkQ291bnQ9JHshMH0KICAgICAgICA+PC9kZWVzLWlucHV0LXJpY2h0ZXh0PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICAgIAogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiMy4gRGlmZmVyZW50IEhlaWdodHMifSAuc3VidGl0bGU9JHsiRWRpdG9ycyB3aXRoIGRpZmZlcmVudCBtaW5pbXVtIGhlaWdodHMgZm9yIHZhcmlvdXMgdXNlIGNhc2VzIn0+CiAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZC1sYXlvdXQiPgogICAgICAgICAgPGRlZXMtaW5wdXQtcmljaHRleHQgCiAgICAgICAgICAgIC5sYWJlbD0keyJTaG9ydCBOb3RlIn0gCiAgICAgICAgICAgIC5taW5IZWlnaHQ9JHsxNTB9CiAgICAgICAgICAgIC5wbGFjZWhvbGRlcj0keyJRdWljayBub3RlLi4uIn0KICAgICAgICAgICAgLnNob3dXb3JkQ291bnQ9JHshMX0KICAgICAgICAgID48L2RlZXMtaW5wdXQtcmljaHRleHQ+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWlucHV0LXJpY2h0ZXh0IAogICAgICAgICAgICAubGFiZWw9JHsiRXh0ZW5kZWQgQ29udGVudCJ9IAogICAgICAgICAgICAubWluSGVpZ2h0PSR7MzAwfQogICAgICAgICAgICAucGxhY2Vob2xkZXI9JHsiV3JpdGUgeW91ciBleHRlbmRlZCBjb250ZW50IGhlcmUuLi4ifQogICAgICAgICAgICAuc2hvd1dvcmRDb3VudD0keyEwfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1yaWNodGV4dD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjQuIENvZGUgRXhhbXBsZXMifSAuc3VidGl0bGU9JHsiRWRpdG9yIHByZS1maWxsZWQgd2l0aCBjb2RlIGV4YW1wbGVzIn0+CiAgICAgICAgPGRlZXMtaW5wdXQtcmljaHRleHQgCiAgICAgICAgICAubGFiZWw9JHsiVGVjaG5pY2FsIERvY3VtZW50YXRpb24ifSAKICAgICAgICAgIC52YWx1ZT0keyc8aDI+SW5zdGFsbGF0aW9uIEd1aWRlPC9oMj48cD5UbyBpbnN0YWxsIHRoZSBwYWNrYWdlLCBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOjwvcD48cHJlPjxjb2RlPm5wbSBpbnN0YWxsIEBkZXNpZ24uZXN0YXRlL2RlZXMtY2F0YWxvZzwvY29kZT48L3ByZT48cD5UaGVuIGltcG9ydCB0aGUgY29tcG9uZW50IGluIHlvdXIgVHlwZVNjcmlwdCBmaWxlOjwvcD48cHJlPjxjb2RlPmltcG9ydCB7IERlZXNJbnB1dFJpY2h0ZXh0IH0gZnJvbSAiQGRlc2lnbi5lc3RhdGUvZGVlcy1jYXRhbG9nIjs8L2NvZGU+PC9wcmU+PHA+WW91IGNhbiBub3cgdXNlIHRoZSA8Y29kZT4mbHQ7ZGVlcy1pbnB1dC1yaWNodGV4dCZndDs8L2NvZGU+IGVsZW1lbnQgaW4geW91ciB0ZW1wbGF0ZXMuPC9wPid9CiAgICAgICAgICAubWluSGVpZ2h0PSR7MjUwfQogICAgICAgICAgLnNob3dXb3JkQ291bnQ9JHshMH0KICAgICAgICA+PC9kZWVzLWlucHV0LXJpY2h0ZXh0PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICAgIAogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiNS4gRGlzYWJsZWQgU3RhdGUifSAuc3VidGl0bGU9JHsiUmVhZC1vbmx5IHJpY2ggdGV4dCBjb250ZW50In0+CiAgICAgICAgPGRlZXMtaW5wdXQtcmljaHRleHQgCiAgICAgICAgICAubGFiZWw9JHsiUHVibGlzaGVkIEFydGljbGUgKFJlYWQgT25seSkifSAKICAgICAgICAgIC52YWx1ZT0keyc8aDI+VGhlIEZ1dHVyZSBvZiBXZWIgQ29tcG9uZW50czwvaDI+PHA+V2ViIENvbXBvbmVudHMgaGF2ZSByZXZvbHV0aW9uaXplZCBob3cgd2UgYnVpbGQgbW9kZXJuIHdlYiBhcHBsaWNhdGlvbnMuLi48L3A+PGJsb2NrcXVvdGU+PHA+IlRoZSBmdXR1cmUgb2Ygd2ViIGRldmVsb3BtZW50IGxpZXMgaW4gcmV1c2FibGUsIGVuY2Fwc3VsYXRlZCBjb21wb25lbnRzLiI8L3A+PC9ibG9ja3F1b3RlPid9CiAgICAgICAgICAuZGlzYWJsZWQ9JHshMH0KICAgICAgICAgIC5zaG93V29yZENvdW50PSR7ITB9CiAgICAgICAgPjwvZGVlcy1pbnB1dC1yaWNodGV4dD4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjYuIEludGVyYWN0aXZlIERlbW8ifSAuc3VidGl0bGU9JHsiVHlwZSBpbiB0aGUgZWRpdG9yIGJlbG93IGFuZCBzZWUgdGhlIEhUTUwgb3V0cHV0In0+CiAgICAgICAgPGRlZXMtaW5wdXQtcmljaHRleHQgCiAgICAgICAgICBpZD0iaW50ZXJhY3RpdmUtZWRpdG9yIgogICAgICAgICAgLmxhYmVsPSR7IlRyeSBpdCB5b3Vyc2VsZiJ9IAogICAgICAgICAgLnBsYWNlaG9sZGVyPSR7IlR5cGUgc29tZXRoaW5nIGhlcmUuLi4ifQogICAgICAgICAgLnNob3dXb3JkQ291bnQ9JHshMH0KICAgICAgICAgIEBjaGFuZ2U9JHtzPT57bGV0IGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI291dHB1dC1wcmV2aWV3Iik7ZSYmKGUudGV4dENvbnRlbnQ9cy5kZXRhaWwudmFsdWUpfX0KICAgICAgICA+PC9kZWVzLWlucHV0LXJpY2h0ZXh0PgogICAgICAgIAogICAgICAgIDxkaXYgY2xhc3M9Im91dHB1dC1wcmV2aWV3IiBpZD0ib3V0cHV0LXByZXZpZXciPgogICAgICAgICAgPGVtPkhUTUwgb3V0cHV0IHdpbGwgYXBwZWFyIGhlcmUuLi48L2VtPgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2Rpdj4KICA8L2RlZXMtZGVtb3dyYXBwZXI+CmAsImRlbW9GdW5jIil9KTt2YXIgeDNhLHkzYT1nKCgpPT57cGUoKTt6aSgpO3B0KCk7eDNhPVtIZSwuLi5PdC5iYXNlU3R5bGVzLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGZvbnQtZmFtaWx5OiBJbnRlciwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIHNhbnMtc2VyaWY7CiAgICAgIH0KCiAgICAgIC5pbnB1dC13cmFwcGVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIC5sYWJlbCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIH0KCiAgICAgIGRlZXMtdGlsZSB7CiAgICAgICAgbWluLWhlaWdodDogMjAwcHg7CiAgICAgIH0KCiAgICAgIGRlZXMtdGlsZTpob3Zlcjo6cGFydChvdXRlcikgewogICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItc3Ryb25nKTsKICAgICAgfQoKICAgICAgZGVlcy10aWxlLmZvY3VzZWQ6OnBhcnQob3V0ZXIpIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5JSkiLCJoc2woMCAwJSA5OCUpIil9OwogICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCAke2guYmRUaGVtZSgiaHNsKDAgMCUgOSUgLyAwLjA1KSIsImhzbCgwIDAlIDk4JSAvIDAuMDUpIil9OwogICAgICB9CgogICAgICAuZWRpdG9yLXRvb2xiYXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgIGdhcDogNHB4OwogICAgICAgIHBhZGRpbmc6IDRweCAxMnB4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAudG9vbGJhci1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICB3aWR0aDogMzJweDsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNDYuOSUpIiwiaHNsKDIxNSAyMC4yJSA2NS4xJSkiKX07CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIH0KCiAgICAgIC50b29sYmFyLWJ1dHRvbiBkZWVzLWljb24gewogICAgICAgIHdpZHRoOiAxNnB4OwogICAgICAgIGhlaWdodDogMTZweDsKICAgICAgfQoKICAgICAgLnRvb2xiYXItYnV0dG9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWhvdmVyKTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICB9CgogICAgICAudG9vbGJhci1idXR0b24uYWN0aXZlIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOSUpIiwiaHNsKDAgMCUgOTglKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDEwMCUpIiwiaHNsKDAgMCUgMy45JSkiKX07CiAgICAgIH0KCiAgICAgIC50b29sYmFyLWJ1dHRvbjpkaXNhYmxlZCB7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAgIH0KCiAgICAgIC50b29sYmFyLWRpdmlkZXIgewogICAgICAgIHdpZHRoOiAxcHg7CiAgICAgICAgaGVpZ2h0OiAyNHB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIG1hcmdpbjogMCA0cHg7CiAgICAgIH0KCiAgICAgIC5lZGl0b3ItY29udGVudCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGluc2V0OiAwOwogICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgfQoKICAgICAgLmVkaXRvci1jb250ZW50IC5Qcm9zZU1pcnJvciB7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgICAgbWluLWhlaWdodDogMTAwJTsKICAgICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CiAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgICB9CgogICAgICAuZWRpdG9yLWNvbnRlbnQgLlByb3NlTWlycm9yIHAgewogICAgICAgIG1hcmdpbjogMC41ZW0gMDsKICAgICAgfQoKICAgICAgLmVkaXRvci1jb250ZW50IC5Qcm9zZU1pcnJvciBwOmZpcnN0LWNoaWxkIHsKICAgICAgICBtYXJnaW4tdG9wOiAwOwogICAgICB9CgogICAgICAuZWRpdG9yLWNvbnRlbnQgLlByb3NlTWlycm9yIHA6bGFzdC1jaGlsZCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgfQoKICAgICAgLmVkaXRvci1jb250ZW50IC5Qcm9zZU1pcnJvciBoMSB7CiAgICAgICAgZm9udC1zaXplOiAyZW07CiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgICAgbWFyZ2luOiAxZW0gMCAwLjVlbSAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7CiAgICAgIH0KCiAgICAgIC5lZGl0b3ItY29udGVudCAuUHJvc2VNaXJyb3IgaDIgewogICAgICAgIGZvbnQtc2l6ZTogMS41ZW07CiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgICAgbWFyZ2luOiAxZW0gMCAwLjVlbSAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM7CiAgICAgIH0KCiAgICAgIC5lZGl0b3ItY29udGVudCAuUHJvc2VNaXJyb3IgaDMgewogICAgICAgIGZvbnQtc2l6ZTogMS4yNWVtOwogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgIG1hcmdpbjogMWVtIDAgMC41ZW0gMDsKICAgICAgICBsaW5lLWhlaWdodDogMS40OwogICAgICB9CgogICAgICAuZWRpdG9yLWNvbnRlbnQgLlByb3NlTWlycm9yIHVsLAogICAgICAuZWRpdG9yLWNvbnRlbnQgLlByb3NlTWlycm9yIG9sIHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDEuNWVtOwogICAgICAgIG1hcmdpbjogMC41ZW0gMDsKICAgICAgfQoKICAgICAgLmVkaXRvci1jb250ZW50IC5Qcm9zZU1pcnJvciBsaSB7CiAgICAgICAgbWFyZ2luOiAwLjI1ZW0gMDsKICAgICAgfQoKICAgICAgLmVkaXRvci1jb250ZW50IC5Qcm9zZU1pcnJvciBibG9ja3F1b3RlIHsKICAgICAgICBib3JkZXItbGVmdDogNHB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIG1hcmdpbjogMWVtIDA7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAxZW07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNDYuOSUpIiwiaHNsKDIxNSAyMC4yJSA2NS4xJSkiKX07CiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgICB9CgogICAgICAuZWRpdG9yLWNvbnRlbnQgLlByb3NlTWlycm9yIGNvZGUgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYmctdGVydGlhcnkpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICBwYWRkaW5nOiAwLjJlbSAwLjRlbTsKICAgICAgICBmb250LWZhbWlseTogJ0ludGVsIE9uZSBNb25vJywgJ0ZpcmEgQ29kZScsICdTRiBNb25vJywgTW9uYWNvLCAnQ2FzY2FkaWEgQ29kZScsICdSb2JvdG8gTW9ubycsIENvbnNvbGFzLCAnQ291cmllciBOZXcnLCBtb25vc3BhY2U7CiAgICAgICAgZm9udC1zaXplOiAwLjllbTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICB9CgogICAgICAuZWRpdG9yLWNvbnRlbnQgLlByb3NlTWlycm9yIHByZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDMuOSUpIiwiaHNsKDAgMCUgOTglKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk4JSkiLCJoc2woMCAwJSAzLjklKSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgcGFkZGluZzogMWVtOwogICAgICAgIG1hcmdpbjogMWVtIDA7CiAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKICAgICAgfQoKICAgICAgLmVkaXRvci1jb250ZW50IC5Qcm9zZU1pcnJvciBwcmUgY29kZSB7CiAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgICBjb2xvcjogaW5oZXJpdDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgICAgIH0KCiAgICAgIC5lZGl0b3ItY29udGVudCAuUHJvc2VNaXJyb3IgYSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUpIiwiaHNsKDIxNy4yIDkxLjIlIDU5LjglKSIpfTsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KCiAgICAgIC5lZGl0b3ItY29udGVudCAuUHJvc2VNaXJyb3IgYTpob3ZlciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNDEuMiUpIiwiaHNsKDIxNy4yIDkxLjIlIDY5LjglKSIpfTsKICAgICAgfQoKICAgICAgLmVkaXRvci1mb290ZXIgewogICAgICAgIHBhZGRpbmc6IDAgMTJweDsKICAgICAgICBoZWlnaHQ6IDI4cHg7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLndvcmQtY291bnQgewogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIH0KCiAgICAgIC5saW5rLWlucHV0IHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDEwMCU7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXByaW1hcnkpOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBib3gtc2hhZG93OiAwIDRweCA2cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgICAgICAgcGFkZGluZzogMTJweDsKICAgICAgICB6LWluZGV4OiAxMDAwOwogICAgICB9CgogICAgICAubGluay1pbnB1dC5zaG93IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgLmxpbmstaW5wdXQgaW5wdXQgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXByaW1hcnkpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTsKICAgICAgfQoKICAgICAgLmxpbmstaW5wdXQgaW5wdXQ6Zm9jdXMgewogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDklKSIsImhzbCgwIDAlIDk4JSkiKX07CiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5JSAvIDAuMDUpIiwiaHNsKDAgMCUgOTglIC8gMC4wNSkiKX07CiAgICAgIH0KCiAgICAgIC5saW5rLWlucHV0LWJ1dHRvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgbWFyZ2luLXRvcDogOHB4OwogICAgICB9CgogICAgICAubGluay1pbnB1dC1idXR0b25zIGJ1dHRvbiB7CiAgICAgICAgcGFkZGluZzogNnB4IDEycHg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYmctcHJpbWFyeSk7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICB9CgogICAgICAubGluay1pbnB1dC1idXR0b25zIGJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1ob3Zlcik7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgfQoKICAgICAgLmxpbmstaW5wdXQtYnV0dG9ucyBidXR0b24ucHJpbWFyeSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDklKSIsImhzbCgwIDAlIDk4JSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxMDAlKSIsImhzbCgwIDAlIDMuOSUpIil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDklKSIsImhzbCgwIDAlIDk4JSkiKX07CiAgICAgIH0KCiAgICAgIC5saW5rLWlucHV0LWJ1dHRvbnMgYnV0dG9uLnByaW1hcnk6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxNSUpIiwiaHNsKDAgMCUgOTMuOSUpIil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDE1JSkiLCJoc2woMCAwJSA5My45JSkiKX07CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIGRlZXMtdGlsZSB7CiAgICAgICAgb3BhY2l0eTogMC42OwogICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIC50b29sYmFyLWJ1dHRvbiwKICAgICAgOmhvc3QoW2Rpc2FibGVkXSkgLmVkaXRvci1jb250ZW50IHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQogICAgYF19KTt2YXIgdzNhLGszYT1nKCgpPT57cGUoKTt3M2E9aShzPT53YAogICAgICAgIDxkaXYgY2xhc3M9ImlucHV0LXdyYXBwZXIiPgogICAgICAgICAgJHtzLmxhYmVsP3dgPGxhYmVsIGNsYXNzPSJsYWJlbCI+JHtzLmxhYmVsfTwvbGFiZWw+YDoiIn0KICAgICAgICAgIDxkZWVzLXRpbGUgY2xhc3M9IiR7cy5lZGl0b3I/LmlzRm9jdXNlZD8iZm9jdXNlZCI6IiJ9IiBzdHlsZT0iLS1taW4taGVpZ2h0OiAke3MubWluSGVpZ2h0fXB4Ij4KICAgICAgICAgICAgPGRpdiBzbG90PSJoZWFkZXIiIGNsYXNzPSJlZGl0b3ItdG9vbGJhciI+CiAgICAgICAgICAgICAgJHtzLnJlbmRlclRvb2xiYXIoKX0KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5rLWlucHV0ICR7cy5zaG93TGlua0lucHV0PyJzaG93IjoiIn0iPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InVybCIgcGxhY2Vob2xkZXI9IkVudGVyIFVSTC4uLiIgQGtleWRvd249JHtzLmhhbmRsZUxpbmtJbnB1dEtleWRvd259IC8+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5rLWlucHV0LWJ1dHRvbnMiPgogICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJwcmltYXJ5IiBAY2xpY2s9JHtzLnNhdmVMaW5rfT5TYXZlPC9idXR0b24+CiAgICAgICAgICAgICAgICAgIDxidXR0b24gQGNsaWNrPSR7cy5yZW1vdmVMaW5rfT5SZW1vdmU8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9JHtzLmhpZGVMaW5rSW5wdXR9PkNhbmNlbDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJlZGl0b3ItY29udGVudCI+PC9kaXY+CiAgICAgICAgICAgICR7cy5zaG93V29yZENvdW50P3dgCiAgICAgICAgICAgICAgICAgIDxkaXYgc2xvdD0iZm9vdGVyIiBjbGFzcz0iZWRpdG9yLWZvb3RlciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IndvcmQtY291bnQiPiR7cy53b3JkQ291bnR9IHdvcmQke3Mud29yZENvdW50IT09MT8icyI6IiJ9PC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICA8L2RlZXMtdGlsZT4KICAgICAgICAgICR7cy5yZW5kZXJEZXNjcmlwdGlvbigpfQogICAgICAgIDwvZGl2PgogICAgICBgLCJyZW5kZXJSaWNodGV4dCIpfSk7dmFyIGZnLFhsLFljZSxLY2U9ZygoKT0+e3ppKCk7djNhKCk7eTNhKCk7azNhKCk7VWEoKTtwZSgpO2Z1KCk7bnIoKTtmZz1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sWGw9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LFljZT0oKCk9PntsZXQgcz1bbmUoImRlZXMtaW5wdXQtcmljaHRleHQiKV0sZSx0PVtdLGEscj1PdCxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXTt2YXIgTz1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0lucHV0UmljaHRleHQiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgJD10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZyxyZWZsZWN0OiEwfSldLHA9W0woe3R5cGU6U3RyaW5nfSldLGM9W0woe3R5cGU6Qm9vbGVhbn0pXSx4PVtMKHt0eXBlOk51bWJlcn0pXSx5PVtZKCldLE49W1koKV0sZmcodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2YWx1ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShFPT4idmFsdWUiaW4gRSwiaGFzIiksZ2V0OmkoRT0+RS52YWx1ZSwiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLnZhbHVlPUh9LCJzZXQiKX0sbWV0YWRhdGE6JH0sbyxsKSxmZyh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InBsYWNlaG9sZGVyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEU9PiJwbGFjZWhvbGRlciJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLnBsYWNlaG9sZGVyLCJnZXQiKSxzZXQ6aSgoRSxIKT0+e0UucGxhY2Vob2xkZXI9SH0sInNldCIpfSxtZXRhZGF0YTokfSxkLHUpLGZnKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2hvd1dvcmRDb3VudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShFPT4ic2hvd1dvcmRDb3VudCJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLnNob3dXb3JkQ291bnQsImdldCIpLHNldDppKChFLEgpPT57RS5zaG93V29yZENvdW50PUh9LCJzZXQiKX0sbWV0YWRhdGE6JH0sYix2KSxmZyh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1pbkhlaWdodCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShFPT4ibWluSGVpZ2h0ImluIEUsImhhcyIpLGdldDppKEU9PkUubWluSGVpZ2h0LCJnZXQiKSxzZXQ6aSgoRSxIKT0+e0UubWluSGVpZ2h0PUh9LCJzZXQiKX0sbWV0YWRhdGE6JH0sbSxmKSxmZyh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dMaW5rSW5wdXQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+InNob3dMaW5rSW5wdXQiaW4gRSwiaGFzIiksZ2V0OmkoRT0+RS5zaG93TGlua0lucHV0LCJnZXQiKSxzZXQ6aSgoRSxIKT0+e0Uuc2hvd0xpbmtJbnB1dD1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LE0seiksZmcodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ3b3JkQ291bnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+IndvcmRDb3VudCJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLndvcmRDb3VudCwiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLndvcmRDb3VudD1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LEMsXyksZmcobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6JH0sbnVsbCx0KSxPPWE9ZS52YWx1ZSwkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOiR9KX1zdGF0aWMgZGVtbz1iM2E7c3RhdGljIGRlbW9Hcm91cHM9WyJJbnB1dCJdOyNlPVhsKHRoaXMsbywiIik7Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHZhbHVlKCQpe3RoaXMuI2U9JH0jdD0oWGwodGhpcyxsKSxYbCh0aGlzLGQsIiIpKTtnZXQgcGxhY2Vob2xkZXIoKXtyZXR1cm4gdGhpcy4jdH1zZXQgcGxhY2Vob2xkZXIoJCl7dGhpcy4jdD0kfSNhPShYbCh0aGlzLHUpLFhsKHRoaXMsYiwhMCkpO2dldCBzaG93V29yZENvdW50KCl7cmV0dXJuIHRoaXMuI2F9c2V0IHNob3dXb3JkQ291bnQoJCl7dGhpcy4jYT0kfSNzPShYbCh0aGlzLHYpLFhsKHRoaXMsbSwyMDApKTtnZXQgbWluSGVpZ2h0KCl7cmV0dXJuIHRoaXMuI3N9c2V0IG1pbkhlaWdodCgkKXt0aGlzLiNzPSR9I2k9KFhsKHRoaXMsZiksWGwodGhpcyxNLCExKSk7Z2V0IHNob3dMaW5rSW5wdXQoKXtyZXR1cm4gdGhpcy4jaX1zZXQgc2hvd0xpbmtJbnB1dCgkKXt0aGlzLiNpPSR9I3I9KFhsKHRoaXMseiksWGwodGhpcyxDLDApKTtnZXQgd29yZENvdW50KCl7cmV0dXJuIHRoaXMuI3J9c2V0IHdvcmRDb3VudCgkKXt0aGlzLiNyPSR9ZWRpdG9yRWxlbWVudD1YbCh0aGlzLF8pO2xpbmtJbnB1dEVsZW1lbnQ7dGlwdGFwQnVuZGxlPW51bGw7ZWRpdG9yO3N0YXRpYyBzdHlsZXM9eDNhO3JlbmRlcigpe3JldHVybiB3M2EodGhpcyl9cmVuZGVyVG9vbGJhcigpe2xldCAkPXRoaXMuZ2V0VG9vbGJhckJ1dHRvbnMoKTtyZXR1cm4gd2AKICAgICAgJHskLm1hcChFPT5FLmlzRGl2aWRlcj93YDxkaXYgY2xhc3M9InRvb2xiYXItZGl2aWRlciI+PC9kaXY+YDp3YAogICAgICAgICAgPGJ1dHRvbgogICAgICAgICAgICBjbGFzcz0idG9vbGJhci1idXR0b24gJHtFLmlzQWN0aXZlPy4oKT8iYWN0aXZlIjoiIn0iCiAgICAgICAgICAgIEBjbGljaz0ke0UuYWN0aW9ufQogICAgICAgICAgICB0aXRsZT0ke0UudGl0bGV9CiAgICAgICAgICAgID9kaXNhYmxlZD0ke3RoaXMuZGlzYWJsZWR8fCF0aGlzLmVkaXRvcn0KICAgICAgICAgID4KICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0ke0UuaWNvbn0+PC9kZWVzLWljb24+CiAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICBgKX0KICAgIGB9Z2V0VG9vbGJhckJ1dHRvbnMoKXtyZXR1cm4gdGhpcy5lZGl0b3I/W3tuYW1lOiJib2xkIixpY29uOiJsdWNpZGU6Ym9sZCIsdGl0bGU6IkJvbGQgKEN0cmwrQikiLGFjdGlvbjppKCgpPT50aGlzLmVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlQm9sZCgpLnJ1bigpLCJhY3Rpb24iKSxpc0FjdGl2ZTppKCgpPT50aGlzLmVkaXRvci5pc0FjdGl2ZSgiYm9sZCIpLCJpc0FjdGl2ZSIpfSx7bmFtZToiaXRhbGljIixpY29uOiJsdWNpZGU6aXRhbGljIix0aXRsZToiSXRhbGljIChDdHJsK0kpIixhY3Rpb246aSgoKT0+dGhpcy5lZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZUl0YWxpYygpLnJ1bigpLCJhY3Rpb24iKSxpc0FjdGl2ZTppKCgpPT50aGlzLmVkaXRvci5pc0FjdGl2ZSgiaXRhbGljIiksImlzQWN0aXZlIil9LHtuYW1lOiJ1bmRlcmxpbmUiLGljb246Imx1Y2lkZTp1bmRlcmxpbmUiLHRpdGxlOiJVbmRlcmxpbmUgKEN0cmwrVSkiLGFjdGlvbjppKCgpPT50aGlzLmVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlVW5kZXJsaW5lKCkucnVuKCksImFjdGlvbiIpLGlzQWN0aXZlOmkoKCk9PnRoaXMuZWRpdG9yLmlzQWN0aXZlKCJ1bmRlcmxpbmUiKSwiaXNBY3RpdmUiKX0se25hbWU6InN0cmlrZSIsaWNvbjoibHVjaWRlOnN0cmlrZXRocm91Z2giLHRpdGxlOiJTdHJpa2V0aHJvdWdoIixhY3Rpb246aSgoKT0+dGhpcy5lZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZVN0cmlrZSgpLnJ1bigpLCJhY3Rpb24iKSxpc0FjdGl2ZTppKCgpPT50aGlzLmVkaXRvci5pc0FjdGl2ZSgic3RyaWtlIiksImlzQWN0aXZlIil9LHtuYW1lOiJkaXZpZGVyMSIsdGl0bGU6IiIsaXNEaXZpZGVyOiEwfSx7bmFtZToiaDEiLGljb246Imx1Y2lkZTpoZWFkaW5nMSIsdGl0bGU6IkhlYWRpbmcgMSIsYWN0aW9uOmkoKCk9PnRoaXMuZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVIZWFkaW5nKHtsZXZlbDoxfSkucnVuKCksImFjdGlvbiIpLGlzQWN0aXZlOmkoKCk9PnRoaXMuZWRpdG9yLmlzQWN0aXZlKCJoZWFkaW5nIix7bGV2ZWw6MX0pLCJpc0FjdGl2ZSIpfSx7bmFtZToiaDIiLGljb246Imx1Y2lkZTpoZWFkaW5nMiIsdGl0bGU6IkhlYWRpbmcgMiIsYWN0aW9uOmkoKCk9PnRoaXMuZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVIZWFkaW5nKHtsZXZlbDoyfSkucnVuKCksImFjdGlvbiIpLGlzQWN0aXZlOmkoKCk9PnRoaXMuZWRpdG9yLmlzQWN0aXZlKCJoZWFkaW5nIix7bGV2ZWw6Mn0pLCJpc0FjdGl2ZSIpfSx7bmFtZToiaDMiLGljb246Imx1Y2lkZTpoZWFkaW5nMyIsdGl0bGU6IkhlYWRpbmcgMyIsYWN0aW9uOmkoKCk9PnRoaXMuZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVIZWFkaW5nKHtsZXZlbDozfSkucnVuKCksImFjdGlvbiIpLGlzQWN0aXZlOmkoKCk9PnRoaXMuZWRpdG9yLmlzQWN0aXZlKCJoZWFkaW5nIix7bGV2ZWw6M30pLCJpc0FjdGl2ZSIpfSx7bmFtZToiZGl2aWRlcjIiLHRpdGxlOiIiLGlzRGl2aWRlcjohMH0se25hbWU6ImJ1bGxldExpc3QiLGljb246Imx1Y2lkZTpsaXN0Iix0aXRsZToiQnVsbGV0IExpc3QiLGFjdGlvbjppKCgpPT50aGlzLmVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlQnVsbGV0TGlzdCgpLnJ1bigpLCJhY3Rpb24iKSxpc0FjdGl2ZTppKCgpPT50aGlzLmVkaXRvci5pc0FjdGl2ZSgiYnVsbGV0TGlzdCIpLCJpc0FjdGl2ZSIpfSx7bmFtZToib3JkZXJlZExpc3QiLGljb246Imx1Y2lkZTpsaXN0T3JkZXJlZCIsdGl0bGU6Ik51bWJlcmVkIExpc3QiLGFjdGlvbjppKCgpPT50aGlzLmVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlT3JkZXJlZExpc3QoKS5ydW4oKSwiYWN0aW9uIiksaXNBY3RpdmU6aSgoKT0+dGhpcy5lZGl0b3IuaXNBY3RpdmUoIm9yZGVyZWRMaXN0IiksImlzQWN0aXZlIil9LHtuYW1lOiJibG9ja3F1b3RlIixpY29uOiJsdWNpZGU6cXVvdGUiLHRpdGxlOiJRdW90ZSIsYWN0aW9uOmkoKCk9PnRoaXMuZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVCbG9ja3F1b3RlKCkucnVuKCksImFjdGlvbiIpLGlzQWN0aXZlOmkoKCk9PnRoaXMuZWRpdG9yLmlzQWN0aXZlKCJibG9ja3F1b3RlIiksImlzQWN0aXZlIil9LHtuYW1lOiJjb2RlIixpY29uOiJsdWNpZGU6Y29kZSIsdGl0bGU6IkNvZGUiLGFjdGlvbjppKCgpPT50aGlzLmVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlQ29kZSgpLnJ1bigpLCJhY3Rpb24iKSxpc0FjdGl2ZTppKCgpPT50aGlzLmVkaXRvci5pc0FjdGl2ZSgiY29kZSIpLCJpc0FjdGl2ZSIpfSx7bmFtZToiY29kZUJsb2NrIixpY29uOiJsdWNpZGU6ZmlsZUNvZGUiLHRpdGxlOiJDb2RlIEJsb2NrIixhY3Rpb246aSgoKT0+dGhpcy5lZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZUNvZGVCbG9jaygpLnJ1bigpLCJhY3Rpb24iKSxpc0FjdGl2ZTppKCgpPT50aGlzLmVkaXRvci5pc0FjdGl2ZSgiY29kZUJsb2NrIiksImlzQWN0aXZlIil9LHtuYW1lOiJkaXZpZGVyMyIsdGl0bGU6IiIsaXNEaXZpZGVyOiEwfSx7bmFtZToibGluayIsaWNvbjoibHVjaWRlOmxpbmsiLHRpdGxlOiJBZGQgTGluayIsYWN0aW9uOmkoKCk9PnRoaXMudG9nZ2xlTGluaygpLCJhY3Rpb24iKSxpc0FjdGl2ZTppKCgpPT50aGlzLmVkaXRvci5pc0FjdGl2ZSgibGluayIpLCJpc0FjdGl2ZSIpfSx7bmFtZToiYWxpZ25MZWZ0IixpY29uOiJsdWNpZGU6YWxpZ25MZWZ0Iix0aXRsZToiQWxpZ24gTGVmdCIsYWN0aW9uOmkoKCk9PnRoaXMuZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5zZXRUZXh0QWxpZ24oImxlZnQiKS5ydW4oKSwiYWN0aW9uIiksaXNBY3RpdmU6aSgoKT0+dGhpcy5lZGl0b3IuaXNBY3RpdmUoe3RleHRBbGlnbjoibGVmdCJ9KSwiaXNBY3RpdmUiKX0se25hbWU6ImFsaWduQ2VudGVyIixpY29uOiJsdWNpZGU6YWxpZ25DZW50ZXIiLHRpdGxlOiJBbGlnbiBDZW50ZXIiLGFjdGlvbjppKCgpPT50aGlzLmVkaXRvci5jaGFpbigpLmZvY3VzKCkuc2V0VGV4dEFsaWduKCJjZW50ZXIiKS5ydW4oKSwiYWN0aW9uIiksaXNBY3RpdmU6aSgoKT0+dGhpcy5lZGl0b3IuaXNBY3RpdmUoe3RleHRBbGlnbjoiY2VudGVyIn0pLCJpc0FjdGl2ZSIpfSx7bmFtZToiYWxpZ25SaWdodCIsaWNvbjoibHVjaWRlOmFsaWduUmlnaHQiLHRpdGxlOiJBbGlnbiBSaWdodCIsYWN0aW9uOmkoKCk9PnRoaXMuZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5zZXRUZXh0QWxpZ24oInJpZ2h0IikucnVuKCksImFjdGlvbiIpLGlzQWN0aXZlOmkoKCk9PnRoaXMuZWRpdG9yLmlzQWN0aXZlKHt0ZXh0QWxpZ246InJpZ2h0In0pLCJpc0FjdGl2ZSIpfSx7bmFtZToiZGl2aWRlcjQiLHRpdGxlOiIiLGlzRGl2aWRlcjohMH0se25hbWU6InVuZG8iLGljb246Imx1Y2lkZTp1bmRvIix0aXRsZToiVW5kbyAoQ3RybCtaKSIsYWN0aW9uOmkoKCk9PnRoaXMuZWRpdG9yLmNoYWluKCkuZm9jdXMoKS51bmRvKCkucnVuKCksImFjdGlvbiIpfSx7bmFtZToicmVkbyIsaWNvbjoibHVjaWRlOnJlZG8iLHRpdGxlOiJSZWRvIChDdHJsK1kpIixhY3Rpb246aSgoKT0+dGhpcy5lZGl0b3IuY2hhaW4oKS5mb2N1cygpLnJlZG8oKS5ydW4oKSwiYWN0aW9uIil9XTpbXX1hc3luYyBmaXJzdFVwZGF0ZWQoKXthd2FpdCB0aGlzLnVwZGF0ZUNvbXBsZXRlLHRoaXMudGlwdGFwQnVuZGxlPWF3YWl0IFFyLmdldEluc3RhbmNlKCkubG9hZFRpcHRhcCgpLHRoaXMuZWRpdG9yRWxlbWVudD10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLmVkaXRvci1jb250ZW50IiksdGhpcy5saW5rSW5wdXRFbGVtZW50PXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIubGluay1pbnB1dCBpbnB1dCIpLHRoaXMuaW5pdGlhbGl6ZUVkaXRvcigpLHRoaXMucmVxdWVzdFVwZGF0ZSgpfWluaXRpYWxpemVFZGl0b3IoKXtpZih0aGlzLmRpc2FibGVkfHwhdGhpcy50aXB0YXBCdW5kbGUpcmV0dXJuO2xldHtFZGl0b3I6JCxTdGFydGVyS2l0OkUsVW5kZXJsaW5lOkgsVGV4dEFsaWduOmssTGluazpTLFR5cG9ncmFwaHk6SX09dGhpcy50aXB0YXBCdW5kbGU7dGhpcy5lZGl0b3I9bmV3ICQoe2VsZW1lbnQ6dGhpcy5lZGl0b3JFbGVtZW50LGV4dGVuc2lvbnM6W0UuY29uZmlndXJlKHtoZWFkaW5nOntsZXZlbHM6WzEsMiwzXX19KSxILmNvbmZpZ3VyZSh7fSksay5jb25maWd1cmUoe3R5cGVzOlsiaGVhZGluZyIsInBhcmFncmFwaCJdfSksUy5jb25maWd1cmUoe29wZW5PbkNsaWNrOiExLEhUTUxBdHRyaWJ1dGVzOntjbGFzczoiZWRpdG9yLWxpbmsifX0pLEkuY29uZmlndXJlKHt9KV0sY29udGVudDp0aGlzLnZhbHVlfHwodGhpcy5wbGFjZWhvbGRlcj9gPHA+JHt0aGlzLnBsYWNlaG9sZGVyfTwvcD5gOiIiKSxvblVwZGF0ZTppKCh7ZWRpdG9yOlB9KT0+e3RoaXMudmFsdWU9UC5nZXRIVE1MKCksdGhpcy51cGRhdGVXb3JkQ291bnQoKSx0aGlzLmNoYW5nZVN1YmplY3QubmV4dCh0aGlzLnZhbHVlKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJpbnB1dCIse2RldGFpbDp7dmFsdWU6dGhpcy52YWx1ZX0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjaGFuZ2UiLHtkZXRhaWw6e3ZhbHVlOnRoaXMudmFsdWV9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9LCJvblVwZGF0ZSIpLG9uU2VsZWN0aW9uVXBkYXRlOmkoKCk9Pnt0aGlzLnJlcXVlc3RVcGRhdGUoKX0sIm9uU2VsZWN0aW9uVXBkYXRlIiksb25Gb2N1czppKCgpPT57dGhpcy5yZXF1ZXN0VXBkYXRlKCl9LCJvbkZvY3VzIiksb25CbHVyOmkoKCk9Pnt0aGlzLnJlcXVlc3RVcGRhdGUoKX0sIm9uQmx1ciIpfSksdGhpcy51cGRhdGVXb3JkQ291bnQoKX11cGRhdGVXb3JkQ291bnQoKXtpZighdGhpcy5lZGl0b3IpcmV0dXJuO2xldCAkPXRoaXMuZWRpdG9yLmdldFRleHQoKTt0aGlzLndvcmRDb3VudD0kLnRyaW0oKT8kLnRyaW0oKS5zcGxpdCgvXHMrLykubGVuZ3RoOjB9dG9nZ2xlTGluaygpe2lmKHRoaXMuZWRpdG9yKWlmKHRoaXMuZWRpdG9yLmlzQWN0aXZlKCJsaW5rIikpe2xldCAkPXRoaXMuZWRpdG9yLmdldEF0dHJpYnV0ZXMoImxpbmsiKS5ocmVmO3RoaXMuc2hvd0xpbmtJbnB1dD0hMCxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pnt0aGlzLmxpbmtJbnB1dEVsZW1lbnQmJih0aGlzLmxpbmtJbnB1dEVsZW1lbnQudmFsdWU9JHx8IiIsdGhpcy5saW5rSW5wdXRFbGVtZW50LmZvY3VzKCksdGhpcy5saW5rSW5wdXRFbGVtZW50LnNlbGVjdCgpKX0pfWVsc2UgdGhpcy5zaG93TGlua0lucHV0PSEwLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3RoaXMubGlua0lucHV0RWxlbWVudCYmKHRoaXMubGlua0lucHV0RWxlbWVudC52YWx1ZT0iIix0aGlzLmxpbmtJbnB1dEVsZW1lbnQuZm9jdXMoKSl9KX1zYXZlTGluaygpe2lmKCF0aGlzLmVkaXRvcnx8IXRoaXMubGlua0lucHV0RWxlbWVudClyZXR1cm47bGV0ICQ9dGhpcy5saW5rSW5wdXRFbGVtZW50LnZhbHVlOyQmJnRoaXMuZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5zZXRMaW5rKHtocmVmOiR9KS5ydW4oKSx0aGlzLmhpZGVMaW5rSW5wdXQoKX1yZW1vdmVMaW5rKCl7dGhpcy5lZGl0b3ImJih0aGlzLmVkaXRvci5jaGFpbigpLmZvY3VzKCkudW5zZXRMaW5rKCkucnVuKCksdGhpcy5oaWRlTGlua0lucHV0KCkpfWhpZGVMaW5rSW5wdXQoKXt0aGlzLnNob3dMaW5rSW5wdXQ9ITEsdGhpcy5lZGl0b3I/LmNvbW1hbmRzLmZvY3VzKCl9aGFuZGxlTGlua0lucHV0S2V5ZG93bigkKXskLmtleT09PSJFbnRlciI/KCQucHJldmVudERlZmF1bHQoKSx0aGlzLnNhdmVMaW5rKCkpOiQua2V5PT09IkVzY2FwZSImJigkLnByZXZlbnREZWZhdWx0KCksdGhpcy5oaWRlTGlua0lucHV0KCkpfXNldFZhbHVlKCQpe3RoaXMudmFsdWU9JCx0aGlzLmVkaXRvciYmJCE9PXRoaXMuZWRpdG9yLmdldEhUTUwoKSYmdGhpcy5lZGl0b3IuY29tbWFuZHMuc2V0Q29udGVudCgkKX1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLnZhbHVlfWNsZWFyKCl7dGhpcy5zZXRWYWx1ZSgiIil9Zm9jdXMoKXt0aGlzLmVkaXRvcj8uY29tbWFuZHMuZm9jdXMoKX1hc3luYyBkaXNjb25uZWN0ZWRDYWxsYmFjaygpe2F3YWl0IHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5lZGl0b3ImJnRoaXMuZWRpdG9yLmRlc3Ryb3koKX1zdGF0aWN7WGwoYSx0KX19O3JldHVybiBPPWF9KSgpfSk7dmFyIFMzYSxfM2E9ZygoKT0+e2dpdCgpO3BvKCk7cGUoKTtJdCgpO1MzYT1pKCgpPT53YAogIDxzdHlsZT4KICAgICR7SmAKICAgICAgLmRlbW9XcmFwcGVyIHsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgcGFkZGluZzogMzJweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTUlKSIsImhzbCgwIDAlIDUlKSIpfTsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICB9CiAgICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHg7CiAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgIH0KICAgICAgLmRlbW8tc2VjdGlvbiB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNDhweDsKICAgICAgfQogICAgICAuZGVtby10aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAyNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOSUpIiwiaHNsKDAgMCUgOTUlKSIpfTsKICAgICAgfQogICAgICAuZGVtby1kZXNjcmlwdGlvbiB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDQ2LjklKSIsImhzbCgyMTUgMjAuMiUgNjUuMSUpIil9OwogICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgIH0KICAgICAgLnRoZW1lLXRvZ2dsZSB7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIHRvcDogMTZweDsKICAgICAgICByaWdodDogMTZweDsKICAgICAgICB6LWluZGV4OiAxMDAwOwogICAgICB9CiAgICBgfQogIDwvc3R5bGU+CiAgPGRpdiBjbGFzcz0iZGVtb1dyYXBwZXIiPgogICAgPGRlZXMtYnV0dG9uIGNsYXNzPSJ0aGVtZS10b2dnbGUiIEBjbGljaz0keygpPT57ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCJicmlnaHQiKSxkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoImRhcmsiKX19PlRvZ2dsZSBUaGVtZTwvZGVlcy1idXR0b24+CiAgICAKICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgICA8aDIgY2xhc3M9ImRlbW8tdGl0bGUiPkJhc2ljIFRhYmxlIHdpdGggQWN0aW9uczwvaDI+CiAgICAgICAgPHAgY2xhc3M9ImRlbW8tZGVzY3JpcHRpb24iPkEgc3RhbmRhcmQgdGFibGUgd2l0aCByb3cgYWN0aW9ucywgZWRpdGFibGUgY2VsbHMsIGFuZCBjb250ZXh0IG1lbnUgc3VwcG9ydC4gRG91YmxlLWNsaWNrIGFueSBjZWxsIHRvIGVkaXQuIFRhYiBtb3ZlcyB0byB0aGUgbmV4dCBlZGl0YWJsZSBjZWxsLCBFbnRlciB0byB0aGUgcm93IGJlbG93LCBFc2MgY2FuY2Vscy48L3A+CiAgICAgICAgPGRlZXMtdGFibGUKICAgICAgICAgIGhlYWRpbmcxPSJDdXJyZW50IEFjY291bnQgU3RhdGVtZW50IgogICAgICAgICAgaGVhZGluZzI9IkJ1bnEgLSBQYXltZW50IEFjY291bnQgMiAtIEFwcmlsIDIwMjEiCiAgICAgICAgICAuY29sdW1ucz0ke1t7a2V5OiJkYXRlIixoZWFkZXI6IkRhdGUiLHNvcnRhYmxlOiEwLGVkaXRhYmxlOiEwLGVkaXRvcjoiZGF0ZSJ9LHtrZXk6ImFtb3VudCIsaGVhZGVyOiJBbW91bnQiLGVkaXRhYmxlOiEwLGVkaXRvcjoidGV4dCJ9LHtrZXk6ImNhdGVnb3J5IixoZWFkZXI6IkNhdGVnb3J5IixlZGl0YWJsZTohMCxlZGl0b3I6ImRyb3Bkb3duIixlZGl0b3JPcHRpb25zOntvcHRpb25zOlt7b3B0aW9uOiJPZmZpY2UgU3VwcGxpZXMiLGtleToib2ZmaWNlIn0se29wdGlvbjoiSGFyZHdhcmUiLGtleToiaGFyZHdhcmUifSx7b3B0aW9uOiJTb2Z0d2FyZSIsa2V5OiJzb2Z0d2FyZSJ9LHtvcHRpb246IlRyYXZlbCIsa2V5OiJ0cmF2ZWwifV19fSx7a2V5OiJkZXNjcmlwdGlvbiIsaGVhZGVyOiJEZXNjcmlwdGlvbiIsZWRpdGFibGU6ITB9LHtrZXk6InJlY29uY2lsZWQiLGhlYWRlcjoiT0siLGVkaXRhYmxlOiEwLGVkaXRvcjoiY2hlY2tib3gifV19CiAgICAgICAgICBAY2VsbEVkaXQ9JHtzPT5jb25zb2xlLmxvZygiY2VsbEVkaXQiLHMuZGV0YWlsKX0KICAgICAgICAgIC5kYXRhPSR7W3tkYXRlOiIyMDIxLTA0LTAxIixhbW91bnQ6IjI0NjQuNjUgXHUyMEFDIixjYXRlZ29yeToib2ZmaWNlIixkZXNjcmlwdGlvbjoiUHJpbnRpbmcgUGFwZXIgLSBTVEFQTEVTIEJSRU1FTiIscmVjb25jaWxlZDohMH0se2RhdGU6IjIwMjEtMDQtMDIiLGFtb3VudDoiMTY1LjY1IFx1MjBBQyIsY2F0ZWdvcnk6ImhhcmR3YXJlIixkZXNjcmlwdGlvbjoiTG9naXRlY2ggTW91c2UgLSBsb2dpLmNvbSBPbmxpbmVTaG9wIixyZWNvbmNpbGVkOiExfSx7ZGF0ZToiMjAyMS0wNC0wMyIsYW1vdW50OiIyOTk5LDAwIFx1MjBBQyIsY2F0ZWdvcnk6ImhhcmR3YXJlIixkZXNjcmlwdGlvbjoiTWFjYm9vayBQcm8gMTZpbmNoIC0gQXBwbGUuZGUgT25saW5lU2hvcCIscmVjb25jaWxlZDohMX0se2RhdGU6IjIwMjEtMDQtMDEiLGFtb3VudDoiMjQ2NC42NSBcdTIwQUMiLGNhdGVnb3J5OiJvZmZpY2UiLGRlc2NyaXB0aW9uOiJPZmZpY2UtU3VwcGxpZXMgLSBTVEFQTEVTIEJSRU1FTiIscmVjb25jaWxlZDohMH0se2RhdGU6IjIwMjEtMDQtMDEiLGFtb3VudDoiMjQ2NC42NSBcdTIwQUMiLGNhdGVnb3J5OiJvZmZpY2UiLGRlc2NyaXB0aW9uOiJPZmZpY2UtU3VwcGxpZXMgLSBTVEFQTEVTIEJSRU1FTiIscmVjb25jaWxlZDohMH1dfQogICAgICAgICAgZGF0YU5hbWU9InRyYW5zYWN0aW9ucyIKICAgICAgICAgIC5kYXRhQWN0aW9ucz0iJHtbe25hbWU6InVwbG9hZCIsaWNvbk5hbWU6ImJlbGwiLHVzZVRhYmxlQmVoYXZpb3VyOiJ1cGxvYWQiLHR5cGU6WyJpblJvdyJdLGFjdGlvbkZ1bmM6aShhc3luYyBzPT57YWxlcnQocy5pdGVtLmFtb3VudCl9LCJhY3Rpb25GdW5jIil9LHtuYW1lOiJ2aXNpYmlsaXR5IixpY29uTmFtZToiY29weSIsdHlwZTpbImluUm93Il0sdXNlVGFibGVCZWhhdmlvdXI6InByZXZpZXciLGFjdGlvbkZ1bmM6aShhc3luYyBzPT57fSwiYWN0aW9uRnVuYyIpfSx7bmFtZToiY3JlYXRlIG5ldyIsaWNvbk5hbWU6Imluc3RhZ3JhbSIsdHlwZTpbImhlYWRlciJdLHVzZVRhYmxlQmVoYXZpb3VyOiJwcmV2aWV3IixhY3Rpb25GdW5jOmkoYXN5bmMgcz0+e30sImFjdGlvbkZ1bmMiKX0se25hbWU6InRvIGdhbGxlcnkiLGljb25OYW1lOiJtZXNzYWdlIix0eXBlOlsiZm9vdGVyIl0sdXNlVGFibGVCZWhhdmlvdXI6InByZXZpZXciLGFjdGlvbkZ1bmM6aShhc3luYyBzPT57fSwiYWN0aW9uRnVuYyIpfSx7bmFtZToiY29weSIsaWNvbk5hbWU6ImNvcHlTb2xpZCIsdHlwZTpbImNvbnRleHRtZW51IiwiaW5Sb3ciXSxhY3Rpb246aShhc3luYygpPT5udWxsLCJhY3Rpb24iKX0se25hbWU6ImVkaXQgKGZyb20gZGVtbykiLGljb25OYW1lOiJwZW5Ub1NxdWFyZSIsdHlwZTpbImNvbnRleHRtZW51Il0sYWN0aW9uOmkoYXN5bmMoKT0+bnVsbCwiYWN0aW9uIil9LHtuYW1lOiJwYXN0ZSIsaWNvbk5hbWU6InBhc3RlU29saWQiLHR5cGU6WyJjb250ZXh0bWVudSJdLGFjdGlvbjppKGFzeW5jKCk9Pm51bGwsImFjdGlvbiIpfSx7bmFtZToicHJldmlldyIsdHlwZTpbImRvdWJsZUNsaWNrIiwiY29udGV4dG1lbnUiXSxpY29uTmFtZToiZXllIixhY3Rpb25GdW5jOmkoYXN5bmMgcz0+KGFsZXJ0KHMuaXRlbS5hbW91bnQpLG51bGwpLCJhY3Rpb25GdW5jIil9XX0iCiAgICAgICAgPjwvZGVlcy10YWJsZT4KICAgICAgPC9kaXY+CiAgICAgIAogICAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICAgIDxoMiBjbGFzcz0iZGVtby10aXRsZSI+VGFibGUgd2l0aCBWZXJ0aWNhbCBMaW5lczwvaDI+CiAgICAgICAgPHAgY2xhc3M9ImRlbW8tZGVzY3JpcHRpb24iPkVuaGFuY2VkIGNvbHVtbiBzZXBhcmF0aW9uIGZvciBiZXR0ZXIgZGF0YSB0cmFja2luZy48L3A+CiAgICAgICAgPGRlZXMtdGFibGUKICAgICAgICAgIGhlYWRpbmcxPSJQcm9kdWN0IEludmVudG9yeSIKICAgICAgICAgIGhlYWRpbmcyPSJDdXJyZW50IHN0b2NrIGxldmVscyBhY3Jvc3Mgd2FyZWhvdXNlcyIKICAgICAgICAgIC5zaG93VmVydGljYWxMaW5lcz0keyEwfQogICAgICAgICAgLmRhdGE9JHtbe3Byb2R1Y3Q6J01hY0Jvb2sgUHJvIDE2Iicsd2FyZWhvdXNlX2E6IjQ1Iix3YXJlaG91c2VfYjoiMzIiLHdhcmVob3VzZV9jOiIyOCIsdG90YWw6IjEwNSIsc3RhdHVzOiJcdTI3MTMgSW4gU3RvY2sifSx7cHJvZHVjdDoiaVBob25lIDE1IFBybyIsd2FyZWhvdXNlX2E6IjEyMCIsd2FyZWhvdXNlX2I6Ijg5Iix3YXJlaG91c2VfYzoiMTU2Iix0b3RhbDoiMzY1IixzdGF0dXM6Ilx1MjcxMyBJbiBTdG9jayJ9LHtwcm9kdWN0OiJBaXJQb2RzIFBybyIsd2FyZWhvdXNlX2E6IjAiLHdhcmVob3VzZV9iOiIxMiIsd2FyZWhvdXNlX2M6IjUiLHRvdGFsOiIxNyIsc3RhdHVzOiJcdTI2QTAgTG93IFN0b2NrIn0se3Byb2R1Y3Q6ImlQYWQgQWlyIix3YXJlaG91c2VfYToiMjMiLHdhcmVob3VzZV9iOiI0NSIsd2FyZWhvdXNlX2M6IjY3Iix0b3RhbDoiMTM1IixzdGF0dXM6Ilx1MjcxMyBJbiBTdG9jayJ9XX0KICAgICAgICAgIGRhdGFOYW1lPSJwcm9kdWN0cyIKICAgICAgICA+PC9kZWVzLXRhYmxlPgogICAgICA8L2Rpdj4KICAgICAgCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgyIGNsYXNzPSJkZW1vLXRpdGxlIj5UYWJsZSB3aXRoIEZ1bGwgR3JpZDwvaDI+CiAgICAgICAgPHAgY2xhc3M9ImRlbW8tZGVzY3JpcHRpb24iPkNvbXBsZXRlIGdyaWQgbGluZXMgZm9yIG1heGltdW0gcmVhZGFiaWxpdHkgYW5kIHN0cnVjdHVyZS48L3A+CiAgICAgICAgPGRlZXMtdGFibGUKICAgICAgICAgIGhlYWRpbmcxPSJTZXJ2ZXIgTW9uaXRvcmluZyBEYXNoYm9hcmQiCiAgICAgICAgICBoZWFkaW5nMj0iUmVhbC10aW1lIG1ldHJpY3MgYWNyb3NzIHJlZ2lvbnMiCiAgICAgICAgICAuc2hvd0dyaWQ9JHshMH0KICAgICAgICAgIC5kYXRhPSR7W3tzZXJ2ZXI6IkFQSS0xIixyZWdpb246IlVTLUVhc3QiLGNwdToiNDUlIixtZW1vcnk6IjYyJSIsZGlzazoiNzglIixsYXRlbmN5OiIxMm1zIix1cHRpbWU6Ijk5LjklIixzdGF0dXM6Ilx1ezFGN0UyfSBIZWFsdGh5In0se3NlcnZlcjoiQVBJLTIiLHJlZ2lvbjoiRVUtV2VzdCIsY3B1OiIzOCUiLG1lbW9yeToiNTUlIixkaXNrOiI0NSUiLGxhdGVuY3k6IjI1bXMiLHVwdGltZToiOTkuOCUiLHN0YXR1czoiXHV7MUY3RTJ9IEhlYWx0aHkifSx7c2VydmVyOiJEQi1NYXN0ZXIiLHJlZ2lvbjoiVVMtRWFzdCIsY3B1OiI3MiUiLG1lbW9yeToiODElIixkaXNrOiI5MiUiLGxhdGVuY3k6IjhtcyIsdXB0aW1lOiIxMDAlIixzdGF0dXM6Ilx1ezFGN0UxfSBXYXJuaW5nIn0se3NlcnZlcjoiREItUmVwbGljYSIscmVnaW9uOiJFVS1XZXN0IixjcHU6IjIzJSIsbWVtb3J5OiIzNCUiLGRpc2s6IjQ1JSIsbGF0ZW5jeToiMTVtcyIsdXB0aW1lOiI5OS43JSIsc3RhdHVzOiJcdXsxRjdFMn0gSGVhbHRoeSJ9LHtzZXJ2ZXI6IkNhY2hlLTEiLHJlZ2lvbjoiQVAtU291dGgiLGNwdToiODklIixtZW1vcnk6IjkyJSIsZGlzazoiMTIlIixsYXRlbmN5OiIxMjBtcyIsdXB0aW1lOiI5OC41JSIsc3RhdHVzOiJcdXsxRjUzNH0gQ3JpdGljYWwifV19CiAgICAgICAgICBkYXRhTmFtZT0ic2VydmVycyIKICAgICAgICAgIC5kYXRhQWN0aW9ucz0iJHtbe25hbWU6IlNTSCBDb25uZWN0IixpY29uTmFtZToibHVjaWRlOnRlcm1pbmFsIix0eXBlOlsiaW5Sb3ciXSxhY3Rpb25GdW5jOmkoYXN5bmMgcz0+e2NvbnNvbGUubG9nKCJDb25uZWN0aW5nIHRvOiIscy5pdGVtLnNlcnZlcil9LCJhY3Rpb25GdW5jIil9LHtuYW1lOiJWaWV3IExvZ3MiLGljb25OYW1lOiJsdWNpZGU6ZmlsZS10ZXh0Iix0eXBlOlsiaW5Sb3ciLCJjb250ZXh0bWVudSJdLGFjdGlvbkZ1bmM6aShhc3luYyBzPT57Y29uc29sZS5sb2coIlZpZXdpbmcgbG9ncyBmb3I6IixzLml0ZW0uc2VydmVyKX0sImFjdGlvbkZ1bmMiKX0se25hbWU6IlJlc3RhcnQgU2VydmVyIixpY29uTmFtZToibHVjaWRlOnJlZnJlc2gtY3ciLHR5cGU6WyJjb250ZXh0bWVudSJdLGFjdGlvbkZ1bmM6aShhc3luYyBzPT57Y29uc29sZS5sb2coIlJlc3RhcnRpbmc6IixzLml0ZW0uc2VydmVyKX0sImFjdGlvbkZ1bmMiKX1dfSIKICAgICAgICA+PC9kZWVzLXRhYmxlPgogICAgICA8L2Rpdj4KICAgICAgCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgyIGNsYXNzPSJkZW1vLXRpdGxlIj5UYWJsZSB3aXRoIEhvcml6b250YWwgTGluZXMgT25seTwvaDI+CiAgICAgICAgPHAgY2xhc3M9ImRlbW8tZGVzY3JpcHRpb24iPkVtcGhhc2lzIG9uIHJvdyBzZXBhcmF0aW9uIHdpdGhvdXQgY29sdW1uIGRpdmlkZXJzLjwvcD4KICAgICAgICA8ZGVlcy10YWJsZQogICAgICAgICAgaGVhZGluZzE9IlNhbGVzIFBlcmZvcm1hbmNlIgogICAgICAgICAgaGVhZGluZzI9IlRvcCBwZXJmb3JtZXJzIHRoaXMgcXVhcnRlciIKICAgICAgICAgIC5zaG93SG9yaXpvbnRhbExpbmVzPSR7ITB9CiAgICAgICAgICAuc2hvd1ZlcnRpY2FsTGluZXM9JHshMX0KICAgICAgICAgIC5kYXRhPSR7W3tzYWxlc3BlcnNvbjoiRW1pbHkgSm9obnNvbiIscmVnaW9uOiJOb3J0aCBBbWVyaWNhIixkZWFsc19jbG9zZWQ6IjQyIixyZXZlbnVlOiIkMS4yTSIscXVvdGFfYWNoaWV2ZW1lbnQ6IjEyOCUiLHJhdGluZzoiXHUyQjUwXHUyQjUwXHUyQjUwXHUyQjUwXHUyQjUwIn0se3NhbGVzcGVyc29uOiJNaWNoYWVsIENoZW4iLHJlZ2lvbjoiQXNpYSBQYWNpZmljIixkZWFsc19jbG9zZWQ6IjM4IixyZXZlbnVlOiIkOTgwSyIscXVvdGFfYWNoaWV2ZW1lbnQ6IjExNSUiLHJhdGluZzoiXHUyQjUwXHUyQjUwXHUyQjUwXHUyQjUwXHUyQjUwIn0se3NhbGVzcGVyc29uOiJTYXJhaCBXaWxsaWFtcyIscmVnaW9uOiJFdXJvcGUiLGRlYWxzX2Nsb3NlZDoiMzUiLHJldmVudWU6IiQ4NzVLIixxdW90YV9hY2hpZXZlbWVudDoiMTA4JSIscmF0aW5nOiJcdTJCNTBcdTJCNTBcdTJCNTBcdTJCNTAifSx7c2FsZXNwZXJzb246IkRhdmlkIEdhcmNpYSIscmVnaW9uOiJMYXRpbiBBbWVyaWNhIixkZWFsc19jbG9zZWQ6IjMxIixyZXZlbnVlOiIkNzUwSyIscXVvdGFfYWNoaWV2ZW1lbnQ6Ijk1JSIscmF0aW5nOiJcdTJCNTBcdTJCNTBcdTJCNTBcdTJCNTAifV19CiAgICAgICAgICBkYXRhTmFtZT0ic2FsZXMgcmVwcyIKICAgICAgICA+PC9kZWVzLXRhYmxlPgogICAgICA8L2Rpdj4KICAgICAgCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgyIGNsYXNzPSJkZW1vLXRpdGxlIj5TaW1wbGUgVGFibGUgKE5vIEdyaWQpPC9oMj4KICAgICAgICA8cCBjbGFzcz0iZGVtby1kZXNjcmlwdGlvbiI+Q2xlYW4sIG1pbmltYWwgZGVzaWduIHdpdGhvdXQgZ3JpZCBsaW5lcy4gU2V0IHNob3dHcmlkIHRvIGZhbHNlIHRvIGRpc2FibGUgdGhlIGRlZmF1bHQgZ3JpZC48L3A+CiAgICAgICAgPGRlZXMtdGFibGUKICAgICAgICAgIGhlYWRpbmcxPSJUZWFtIE1lbWJlcnMiCiAgICAgICAgICBoZWFkaW5nMj0iRW5naW5lZXJpbmcgRGVwYXJ0bWVudCIKICAgICAgICAgIC5zaG93R3JpZD0keyExfQogICAgICAgICAgLmRhdGE9JHtbe25hbWU6IkFsaWNlIEpvaG5zb24iLHJvbGU6IkxlYWQgRW5naW5lZXIiLGVtYWlsOiJhbGljZUBjb21wYW55LmNvbSIsbG9jYXRpb246IlNhbiBGcmFuY2lzY28iLGpvaW5lZDoiMjAyMC0wMy0xNSJ9LHtuYW1lOiJCb2IgU21pdGgiLHJvbGU6IlNlbmlvciBEZXZlbG9wZXIiLGVtYWlsOiJib2JAY29tcGFueS5jb20iLGxvY2F0aW9uOiJOZXcgWW9yayIsam9pbmVkOiIyMDE5LTA3LTIyIn0se25hbWU6IkNoYXJsaWUgRGF2aXMiLHJvbGU6IkRldk9wcyBFbmdpbmVlciIsZW1haWw6ImNoYXJsaWVAY29tcGFueS5jb20iLGxvY2F0aW9uOiJMb25kb24iLGpvaW5lZDoiMjAyMS0wMS0xMCJ9LHtuYW1lOiJEaWFuYSBNYXJ0aW5leiIscm9sZToiRnJvbnRlbmQgRGV2ZWxvcGVyIixlbWFpbDoiZGlhbmFAY29tcGFueS5jb20iLGxvY2F0aW9uOiJCYXJjZWxvbmEiLGpvaW5lZDoiMjAyMi0wNS0xOCJ9XX0KICAgICAgICAgIGRhdGFOYW1lPSJ0ZWFtIG1lbWJlcnMiCiAgICAgICAgPjwvZGVlcy10YWJsZT4KICAgICAgPC9kaXY+CiAgICAgIAogICAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICAgIDxoMiBjbGFzcz0iZGVtby10aXRsZSI+VGFibGUgd2l0aCBDdXN0b20gRGlzcGxheSBGdW5jdGlvbjwvaDI+CiAgICAgICAgPHAgY2xhc3M9ImRlbW8tZGVzY3JpcHRpb24iPlRyYW5zZm9ybSBkYXRhIGZvciBkaXNwbGF5IHVzaW5nIGN1c3RvbSBmb3JtYXR0aW5nLjwvcD4KICAgICAgICA8ZGVlcy10YWJsZQogICAgICAgICAgaGVhZGluZzE9IlNhbGVzIFJlcG9ydCIKICAgICAgICAgIGhlYWRpbmcyPSJRNCAyMDIzIFBlcmZvcm1hbmNlIgogICAgICAgICAgLmRhdGE9JHtbe3Byb2R1Y3Q6IkVudGVycHJpc2UgTGljZW5zZSIsdW5pdHM6NDUscmV2ZW51ZToyMjVlMyxncm93dGg6LjIzLGZvcmVjYXN0OjI4ZTR9LHtwcm9kdWN0OiJQcm9mZXNzaW9uYWwgTGljZW5zZSIsdW5pdHM6MTI4LHJldmVudWU6MTI4ZTMsZ3Jvd3RoOi4xNSxmb3JlY2FzdDoxNDdlM30se3Byb2R1Y3Q6IlN0YXJ0ZXIgTGljZW5zZSIsdW5pdHM6MzQyLHJldmVudWU6Njg0MDAsZ3Jvd3RoOi40Mixmb3JlY2FzdDo5N2UzfV19CiAgICAgICAgICAuZGlzcGxheUZ1bmN0aW9uPSR7cz0+KHtQcm9kdWN0OnMucHJvZHVjdCwiVW5pdHMgU29sZCI6cy51bml0cy50b0xvY2FsZVN0cmluZygpLFJldmVudWU6IiQiK3MucmV2ZW51ZS50b0xvY2FsZVN0cmluZygpLEdyb3d0aDoocy5ncm93dGgqMTAwKS50b0ZpeGVkKDEpKyIlIiwiUTEgMjAyNCBGb3JlY2FzdCI6IiQiK3MuZm9yZWNhc3QudG9Mb2NhbGVTdHJpbmcoKX0pfQogICAgICAgICAgZGF0YU5hbWU9InByb2R1Y3RzIgogICAgICAgID48L2RlZXMtdGFibGU+CiAgICAgIDwvZGl2PgogICAgICAKICAgICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgICA8aDIgY2xhc3M9ImRlbW8tdGl0bGUiPkVtcHR5IFRhYmxlIFN0YXRlPC9oMj4KICAgICAgICA8cCBjbGFzcz0iZGVtby1kZXNjcmlwdGlvbiI+SG93IHRoZSB0YWJsZSBsb29rcyB3aGVuIG5vIGRhdGEgaXMgYXZhaWxhYmxlLjwvcD4KICAgICAgICA8ZGVlcy10YWJsZQogICAgICAgICAgaGVhZGluZzE9Ik5vIERhdGEgQXZhaWxhYmxlIgogICAgICAgICAgaGVhZGluZzI9IlRoaXMgdGFibGUgaXMgY3VycmVudGx5IGVtcHR5IgogICAgICAgICAgLmRhdGE9JHtbXX0KICAgICAgICAgIGRhdGFOYW1lPSJpdGVtcyIKICAgICAgICA+PC9kZWVzLXRhYmxlPgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgyIGNsYXNzPSJkZW1vLXRpdGxlIj5TY2hlbWEtRmlyc3QgQ29sdW1ucyAoTmV3KTwvaDI+CiAgICAgICAgPHAgY2xhc3M9ImRlbW8tZGVzY3JpcHRpb24iPkRlZmluZXMgY29sdW1ucyBleHBsaWNpdGx5IGFuZCByZW5kZXJzIHZpYSBzY2hlbWEuIE5vIGRpc3BsYXlGdW5jdGlvbiBuZWVkZWQuPC9wPgogICAgICAgIDxkZWVzLXRhYmxlCiAgICAgICAgICBoZWFkaW5nMT0iVXNlcnMgKFNjaGVtYS1GaXJzdCkiCiAgICAgICAgICBoZWFkaW5nMj0iQ29sdW1ucyBkZWZpbmUgcmVuZGVyaW5nIGFuZCBvcmRlciIKICAgICAgICAgIC5jb2x1bW5zPSR7W3trZXk6Im5hbWUiLGhlYWRlcjoiTmFtZSIsc29ydGFibGU6ITB9LHtrZXk6ImVtYWlsIixoZWFkZXI6IkVtYWlsIixyZW5kZXJlcjppKHM9PndgPGRlZXMtYmFkZ2U+JHtzfTwvZGVlcy1iYWRnZT5gLCJyZW5kZXJlciIpfSx7a2V5OiJqb2luZWRBdCIsaGVhZGVyOiJKb2luZWQiLHJlbmRlcmVyOmkocz0+bmV3IERhdGUocykudG9Mb2NhbGVEYXRlU3RyaW5nKCksInJlbmRlcmVyIil9XX0KICAgICAgICAgIC5kYXRhPSR7W3tuYW1lOiJBbGljZSIsZW1haWw6ImFsaWNlQGV4YW1wbGUuY29tIixqb2luZWRBdDoiMjAyMi0wOC0wMSJ9LHtuYW1lOiJCb2IiLGVtYWlsOiJib2JAZXhhbXBsZS5jb20iLGpvaW5lZEF0OiIyMDIxLTEyLTExIn0se25hbWU6IkNhcm9sIixlbWFpbDoiY2Fyb2xAZXhhbXBsZS5jb20iLGpvaW5lZEF0OiIyMDIzLTAzLTIyIn1dfQogICAgICAgICAgZGF0YU5hbWU9InVzZXJzIgogICAgICAgID48L2RlZXMtdGFibGU+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgICA8aDIgY2xhc3M9ImRlbW8tdGl0bGUiPlBhcnRpYWwgU2NoZW1hICsgQXVnbWVudCAoTmV3KTwvaDI+CiAgICAgICAgPHAgY2xhc3M9ImRlbW8tZGVzY3JpcHRpb24iPlByb3ZpZGVzIG9ubHkgdGhlIGltcG9ydGFudCBjb2x1bW5zOyB0aGUgcmVzdCBhcmUgbWVyZ2VkIGluIGZyb20gZGlzcGxheUZ1bmN0aW9uLjwvcD4KICAgICAgICA8ZGVlcy10YWJsZQogICAgICAgICAgaGVhZGluZzE9IlVzZXJzIChQYXJ0aWFsICsgQXVnbWVudCkiCiAgICAgICAgICBoZWFkaW5nMj0iTWlzc2luZyBjb2x1bW5zIGFyZSBkZXJpdmVkIgogICAgICAgICAgLmNvbHVtbnM9JHtbe2tleToibmFtZSIsaGVhZGVyOiJOYW1lIixzb3J0YWJsZTohMH1dfQogICAgICAgICAgLmRpc3BsYXlGdW5jdGlvbj0ke3M9Pih7bmFtZTpzLm5hbWUsZW1haWw6cy5lbWFpbCxyb2xlOnMucm9sZX0pfQogICAgICAgICAgLmF1Z21lbnRGcm9tRGlzcGxheUZ1bmN0aW9uPSR7ITB9CiAgICAgICAgICAuZGF0YT0ke1t7bmFtZToiRXJpbiIsZW1haWw6ImVyaW5AZXhhbXBsZS5jb20iLHJvbGU6IkFkbWluIn0se25hbWU6IkZpbm4iLGVtYWlsOiJmaW5uQGV4YW1wbGUuY29tIixyb2xlOiJVc2VyIn0se25hbWU6IkdpbmEiLGVtYWlsOiJnaW5hQGV4YW1wbGUuY29tIixyb2xlOiJVc2VyIn1dfQogICAgICAgICAgZGF0YU5hbWU9InVzZXJzIgogICAgICAgID48L2RlZXMtdGFibGU+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIiAKICAgICAgICAgICBAc2VsZWN0aW9uQ2hhbmdlPSR7cz0+e2NvbnNvbGUubG9nKCJTZWxlY3Rpb24gY2hhbmdlZCIscy5kZXRhaWwpfX0KICAgICAgICAgICBAc2VhcmNoLWNoYW5nZWQ9JHtzPT57bGV0IGU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhYmxlRmlsdGVyU2VsZWN0RGVtbyIpO2UmJmUuc2V0RmlsdGVyVGV4dChzLmRldGFpbC52YWx1ZSl9fQogICAgICAgICAgIEBzZWFyY2gtc3VibWl0PSR7cz0+e2xldCBlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YWJsZUZpbHRlclNlbGVjdERlbW8iKTtlJiZlLnNldEZpbHRlclRleHQocy5kZXRhaWwudmFsdWUpfX0KICAgICAgPgogICAgICAgIDxoMiBjbGFzcz0iZGVtby10aXRsZSI+RmlsdGVyaW5nICsgTXVsdGktU2VsZWN0aW9uIChOZXcpPC9oMj4KICAgICAgICA8cCBjbGFzcz0iZGVtby1kZXNjcmlwdGlvbiI+VXNlIHRoZSBzZWFyY2ggYmFyIHRvIGZpbHRlciByb3dzOyB0b2dnbGUgc2VsZWN0aW9uIHZpYSBjaGVja2JveGVzLiBDbGljayBoZWFkZXJzIHRvIHNvcnQuPC9wPgogICAgICAgIDxkZWVzLXNlYXJjaGJhcj48L2RlZXMtc2VhcmNoYmFyPgogICAgICAgIDxkaXYgc3R5bGU9ImhlaWdodDogMTJweCI+PC9kaXY+CiAgICAgICAgPGRlZXMtdGFibGUKICAgICAgICAgIGlkPSJ0YWJsZUZpbHRlclNlbGVjdERlbW8iCiAgICAgICAgICBoZWFkaW5nMT0iSW52ZW50b3J5IChGaWx0ZXIgKyBTZWxlY3QpIgogICAgICAgICAgaGVhZGluZzI9IlRyeSB0eXBpbmcgdG8gZmlsdGVyIGFuZCBzZWxlY3RpbmcgbXVsdGlwbGUgcm93cyIKICAgICAgICAgIC5zZWxlY3Rpb25Nb2RlPSR7Im11bHRpIn0KICAgICAgICAgIC5yb3dLZXk9JHsic2t1In0KICAgICAgICAgIC5jb2x1bW5zPSR7W3trZXk6InNrdSIsaGVhZGVyOiJTS1UiLHNvcnRhYmxlOiEwfSx7a2V5OiJuYW1lIixoZWFkZXI6Ik5hbWUiLHNvcnRhYmxlOiEwfSx7a2V5OiJzdG9jayIsaGVhZGVyOiJTdG9jayIsc29ydGFibGU6ITB9XX0KICAgICAgICAgIC5kYXRhPSR7W3tza3U6IkEtMTAwIixuYW1lOiJVU0ItQyBDYWJsZSIsc3RvY2s6MTIwfSx7c2t1OiJBLTEwMSIsbmFtZToiV2lyZWxlc3MgTW91c2UiLHN0b2NrOjU1fSx7c2t1OiJBLTEwMiIsbmFtZToiTGFwdG9wIFN0YW5kIixzdG9jazoxOH0se3NrdToiQi0yMDAiLG5hbWU6IktleWJvYXJkIChJU08pIixzdG9jazo4OX0se3NrdToiQi0yMDEiLG5hbWU6IkhETUkgQWRhcHRlciIsc3RvY2s6MH0se3NrdToiQy0zMDAiLG5hbWU6IldlYmNhbSAxMDgwcCIsc3RvY2s6NDJ9XX0KICAgICAgICAgIGRhdGFOYW1lPSJpdGVtcyIKICAgICAgICA+PC9kZWVzLXRhYmxlPgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgyIGNsYXNzPSJkZW1vLXRpdGxlIj5Db2x1bW4gRmlsdGVycyArIFN0aWNreSBIZWFkZXIgKE5ldyk8L2gyPgogICAgICAgIDxwIGNsYXNzPSJkZW1vLWRlc2NyaXB0aW9uIj5QZXItY29sdW1uIHF1aWNrIGZpbHRlcnMgYW5kIHN0aWNreSBoZWFkZXIgd2l0aCBpbnRlcm5hbCBzY3JvbGwuIFRyeSBmaWx0ZXJpbmcgdGhlIE5hbWUgY29sdW1uLiBVc2VzIC0tdGFibGUtbWF4LWhlaWdodCB2YXIuPC9wPgogICAgICAgIDxzdHlsZT4KICAgICAgICAgIGRlZXMtdGFibGVbZml4ZWQtaGVpZ2h0XSB7IC0tdGFibGUtbWF4LWhlaWdodDogMjIwcHg7IH0KICAgICAgICA8L3N0eWxlPgogICAgICAgIDxkZWVzLXRhYmxlCiAgICAgICAgICBoZWFkaW5nMT0iRW1wbG95ZWVzIgogICAgICAgICAgaGVhZGluZzI9IlF1aWNrIGZpbHRlciBwZXIgY29sdW1uICsgc3RpY2t5IGhlYWRlciIKICAgICAgICAgIC5zaG93Q29sdW1uRmlsdGVycz0keyEwfQogICAgICAgICAgLmZpeGVkSGVpZ2h0PSR7ITB9CiAgICAgICAgICAuY29sdW1ucz0ke1t7a2V5OiJuYW1lIixoZWFkZXI6Ik5hbWUiLHNvcnRhYmxlOiEwfSx7a2V5OiJlbWFpbCIsaGVhZGVyOiJFbWFpbCIsc29ydGFibGU6ITB9LHtrZXk6ImRlcGFydG1lbnQiLGhlYWRlcjoiRGVwYXJ0bWVudCIsc29ydGFibGU6ITB9XX0KICAgICAgICAgIC5kYXRhPSR7W3tuYW1lOiJBbGljZSBKb2huc29uIixlbWFpbDoiYWxpY2VAY29ycC5jb20iLGRlcGFydG1lbnQ6IkVuZ2luZWVyaW5nIn0se25hbWU6IkJvYiBTbWl0aCIsZW1haWw6ImJvYkBjb3JwLmNvbSIsZGVwYXJ0bWVudDoiU2FsZXMifSx7bmFtZToiQ2hhcmxpZSBEYXZpcyIsZW1haWw6ImNoYXJsaWVAY29ycC5jb20iLGRlcGFydG1lbnQ6IkhSIn0se25hbWU6IkRpYW5hIE1hcnRpbmV6IixlbWFpbDoiZGlhbmFAY29ycC5jb20iLGRlcGFydG1lbnQ6IkVuZ2luZWVyaW5nIn0se25hbWU6IkV0aGFuIEJyb3duIixlbWFpbDoiZXRoYW5AY29ycC5jb20iLGRlcGFydG1lbnQ6IkZpbmFuY2UifSx7bmFtZToiRmlvbmEgQ2xhcmsiLGVtYWlsOiJmaW9uYUBjb3JwLmNvbSIsZGVwYXJ0bWVudDoiU2FsZXMifSx7bmFtZToiR3JhY2UgTGVlIixlbWFpbDoiZ3JhY2VAY29ycC5jb20iLGRlcGFydG1lbnQ6IkVuZ2luZWVyaW5nIn0se25hbWU6IkhlbnJ5IFdpbHNvbiIsZW1haWw6ImhlbnJ5QGNvcnAuY29tIixkZXBhcnRtZW50OiJNYXJrZXRpbmcifSx7bmFtZToiSXJlbmUgV2Fsa2VyIixlbWFpbDoiaXJlbmVAY29ycC5jb20iLGRlcGFydG1lbnQ6IkZpbmFuY2UifSx7bmFtZToiSmFjayBUdXJuZXIiLGVtYWlsOiJqYWNrQGNvcnAuY29tIixkZXBhcnRtZW50OiJTdXBwb3J0In1dfQogICAgICAgICAgZGF0YU5hbWU9ImVtcGxveWVlcyIKICAgICAgICA+PC9kZWVzLXRhYmxlPgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiIKICAgICAgICBAc2VhcmNoUmVxdWVzdD0ke2FzeW5jIHM9PntsZXR7cXVlcnk6ZX09cy5kZXRhaWx8fHtxdWVyeToiIn0sdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VydmVyU2VhcmNoRGVtbyIpLGE9W3tpZDoxLG5hbWU6IkFsaWNlIixjaXR5OiJCZXJsaW4iLHRpdGxlOiJFbmdpbmVlciJ9LHtpZDoyLG5hbWU6IkJvYiIsY2l0eToiUGFyaXMiLHRpdGxlOiJEZXNpZ25lciJ9LHtpZDozLG5hbWU6IkNoYXJsaWUiLGNpdHk6IkxvbmRvbiIsdGl0bGU6Ik1hbmFnZXIifSx7aWQ6NCxuYW1lOiJEaWFuYSIsY2l0eToiTWFkcmlkIix0aXRsZToiRW5naW5lZXIifSx7aWQ6NSxuYW1lOiJFdGhhbiIsY2l0eToiUm9tZSIsdGl0bGU6IlN1cHBvcnQifV07YXdhaXQgbmV3IFByb21pc2Uobz0+c2V0VGltZW91dChvLDMwMCkpO2xldCByPVN0cmluZyhlfHwiIikudG9Mb3dlckNhc2UoKSxuPXI/YS5maWx0ZXIobz0+T2JqZWN0LnZhbHVlcyhvKS5zb21lKGw9PlN0cmluZyhsKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHIpKSk6YTt0LmRhdGE9bn19CiAgICAgID4KICAgICAgICA8aDIgY2xhc3M9ImRlbW8tdGl0bGUiPlNlcnZlciBTZWFyY2ggKE5ldyk8L2gyPgogICAgICAgIDxwIGNsYXNzPSJkZW1vLWRlc2NyaXB0aW9uIj5TZWxlY3QgU2VydmVyIG1vZGUsIHR5cGUgYSBxdWVyeSwgYW5kIHdhdGNoIHRoZSB0YWJsZSBmZXRjaCBzaW11bGF0ZWQgcmVzdWx0cy48L3A+CiAgICAgICAgPGRlZXMtdGFibGUKICAgICAgICAgIGlkPSJzZXJ2ZXJTZWFyY2hEZW1vIgogICAgICAgICAgaGVhZGluZzE9IlBlb3BsZSAoU2VydmVyIFNlYXJjaCkiCiAgICAgICAgICBoZWFkaW5nMj0iQ2xpY2sgU2VhcmNoLCBjaG9vc2UgU2VydmVyIG1vZGUsIGFuZCB0eXBlIgogICAgICAgICAgLmNvbHVtbnM9JHtbe2tleToibmFtZSIsaGVhZGVyOiJOYW1lIn0se2tleToiY2l0eSIsaGVhZGVyOiJDaXR5In0se2tleToidGl0bGUiLGhlYWRlcjoiVGl0bGUifV19CiAgICAgICAgICAuZGF0YT0ke1t7aWQ6MSxuYW1lOiJBbGljZSIsY2l0eToiQmVybGluIix0aXRsZToiRW5naW5lZXIifSx7aWQ6MixuYW1lOiJCb2IiLGNpdHk6IlBhcmlzIix0aXRsZToiRGVzaWduZXIifSx7aWQ6MyxuYW1lOiJDaGFybGllIixjaXR5OiJMb25kb24iLHRpdGxlOiJNYW5hZ2VyIn0se2lkOjQsbmFtZToiRGlhbmEiLGNpdHk6Ik1hZHJpZCIsdGl0bGU6IkVuZ2luZWVyIn0se2lkOjUsbmFtZToiRXRoYW4iLGNpdHk6IlJvbWUiLHRpdGxlOiJTdXBwb3J0In1dfQogICAgICAgICAgZGF0YU5hbWU9InBlb3BsZSIKICAgICAgICA+PC9kZWVzLXRhYmxlPgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgyIGNsYXNzPSJkZW1vLXRpdGxlIj5NdWx0aS1Db2x1bW4gU29ydDwvaDI+CiAgICAgICAgPHAgY2xhc3M9ImRlbW8tZGVzY3JpcHRpb24iPgogICAgICAgICAgQ2xpY2sgYW55IGNvbHVtbiBoZWFkZXIgZm9yIGEgc2luZ2xlLWNvbHVtbiBzb3J0LiBIb2xkIFNoaWZ0IHdoaWxlIGNsaWNraW5nIHRvIGFkZCB0aGUKICAgICAgICAgIGNvbHVtbiB0byBhIG11bHRpLXNvcnQgY2FzY2FkZSAob3IgY3ljbGUgaXRzIGRpcmVjdGlvbikuIFJpZ2h0LWNsaWNrIGFueSBzb3J0YWJsZSBoZWFkZXIKICAgICAgICAgIHRvIG9wZW4gYSBtZW51IHdoZXJlIHlvdSBjYW4gcGluIGEgY29sdW1uIHRvIGEgc3BlY2lmaWMgcHJpb3JpdHkgc2xvdCwgcmVtb3ZlIGl0LCBvcgogICAgICAgICAgY2xlYXIgdGhlIGNhc2NhZGUuCiAgICAgICAgPC9wPgogICAgICAgIDxkZWVzLXRhYmxlCiAgICAgICAgICBoZWFkaW5nMT0iUGVvcGxlIERpcmVjdG9yeSIKICAgICAgICAgIGhlYWRpbmcyPSJQcmUtc2VlZGVkIHdpdGggZGVwYXJ0bWVudCDilrIgMSwgbmFtZSDilrIgMiIKICAgICAgICAgIC5zb3J0Qnk9JHtbe2tleToiZGVwYXJ0bWVudCIsZGlyOiJhc2MifSx7a2V5OiJuYW1lIixkaXI6ImFzYyJ9XX0KICAgICAgICAgIC5jb2x1bW5zPSR7W3trZXk6ImRlcGFydG1lbnQiLGhlYWRlcjoiRGVwYXJ0bWVudCIsc29ydGFibGU6ITB9LHtrZXk6Im5hbWUiLGhlYWRlcjoiTmFtZSIsc29ydGFibGU6ITB9LHtrZXk6InJvbGUiLGhlYWRlcjoiUm9sZSIsc29ydGFibGU6ITB9LHtrZXk6ImNyZWF0ZWRBdCIsaGVhZGVyOiJDcmVhdGVkIixzb3J0YWJsZTohMH0se2tleToibG9jYXRpb24iLGhlYWRlcjoiTG9jYXRpb24iLHNvcnRhYmxlOiEwfSx7a2V5OiJzdGF0dXMiLGhlYWRlcjoiU3RhdHVzIixzb3J0YWJsZTohMH1dfQogICAgICAgICAgLmRhdGE9JHtbe2RlcGFydG1lbnQ6IlImRCIsbmFtZToiQWxpY2UgSm9obnNvbiIscm9sZToiRW5naW5lZXIiLGNyZWF0ZWRBdDoiMjAyMy0wMS0xMiIsbG9jYXRpb246IkJlcmxpbiIsc3RhdHVzOiJBY3RpdmUifSx7ZGVwYXJ0bWVudDoiUiZEIixuYW1lOiJEaWFuYSBNYXJ0aW5leiIscm9sZToiRW5naW5lZXIiLGNyZWF0ZWRBdDoiMjAyMC0wNi0zMCIsbG9jYXRpb246Ik1hZHJpZCIsc3RhdHVzOiJBY3RpdmUifSx7ZGVwYXJ0bWVudDoiUiZEIixuYW1lOiJNYXJrIExlZSIscm9sZToiRW5naW5lZXIiLGNyZWF0ZWRBdDoiMjAyNC0wMy0wNCIsbG9jYXRpb246IkJlcmxpbiIsc3RhdHVzOiJBY3RpdmUifSx7ZGVwYXJ0bWVudDoiRGVzaWduIixuYW1lOiJCb2IgU21pdGgiLHJvbGU6IkRlc2lnbmVyIixjcmVhdGVkQXQ6IjIwMjItMTEtMDUiLGxvY2F0aW9uOiJQYXJpcyIsc3RhdHVzOiJBY3RpdmUifSx7ZGVwYXJ0bWVudDoiRGVzaWduIixuYW1lOiJTYXJhIEtpbSIscm9sZToiRGVzaWduZXIiLGNyZWF0ZWRBdDoiMjAyMS0wOC0xOSIsbG9jYXRpb246IlBhcmlzIixzdGF0dXM6Ik9uIExlYXZlIn0se2RlcGFydG1lbnQ6Ik9wcyIsbmFtZToiQ2hhcmxpZSBEYXZpcyIscm9sZToiTWFuYWdlciIsY3JlYXRlZEF0OiIyMDIxLTA0LTIxIixsb2NhdGlvbjoiTG9uZG9uIixzdGF0dXM6Ik9uIExlYXZlIn0se2RlcGFydG1lbnQ6Ik9wcyIsbmFtZToiSGVsZW5hIFZvc3MiLHJvbGU6IlNSRSIsY3JlYXRlZEF0OiIyMDIzLTA3LTIyIixsb2NhdGlvbjoiTG9uZG9uIixzdGF0dXM6IkFjdGl2ZSJ9LHtkZXBhcnRtZW50OiJRQSIsbmFtZToiRmlvbmEgQ2xhcmsiLHJvbGU6IlFBIixjcmVhdGVkQXQ6IjIwMjItMDMtMTQiLGxvY2F0aW9uOiJWaWVubmEiLHN0YXR1czoiQWN0aXZlIn0se2RlcGFydG1lbnQ6IlFBIixuYW1lOiJUb21ceEUxcyBSaXZlcmEiLHJvbGU6IlFBIixjcmVhdGVkQXQ6IjIwMjQtMDEtMDkiLGxvY2F0aW9uOiJNYWRyaWQiLHN0YXR1czoiQWN0aXZlIn0se2RlcGFydG1lbnQ6IkNTIixuYW1lOiJFdGhhbiBCcm93biIscm9sZToiU3VwcG9ydCIsY3JlYXRlZEF0OiIyMDE5LTA5LTE4Iixsb2NhdGlvbjoiUm9tZSIsc3RhdHVzOiJJbmFjdGl2ZSJ9XX0KICAgICAgICA+PC9kZWVzLXRhYmxlPgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgyIGNsYXNzPSJkZW1vLXRpdGxlIj5XaWRlIFByb3BlcnRpZXMgKyBNYW55IEFjdGlvbnM8L2gyPgogICAgICAgIDxwIGNsYXNzPSJkZW1vLWRlc2NyaXB0aW9uIj5BIHRhYmxlIHdpdGggbWFueSBjb2x1bW5zIGFuZCByaWNoIGFjdGlvbnMgdG8gc3RyZXNzIHRlc3QgbGF5b3V0IGFuZCBzdGlja3kgQWN0aW9ucy48L3A+CiAgICAgICAgPGRlZXMtdGFibGUKICAgICAgICAgIGhlYWRpbmcxPSJQZW9wbGUgRGlyZWN0b3J5IgogICAgICAgICAgaGVhZGluZzI9Ik1hbnkgcHJvcGVydGllcyBhbmQgYWN0aW9ucyIKICAgICAgICAgIC5jb2x1bW5zPSR7W3trZXk6ImlkIixoZWFkZXI6IklEIixzb3J0YWJsZTohMH0se2tleToibmFtZSIsaGVhZGVyOiJOYW1lIixzb3J0YWJsZTohMH0se2tleToicm9sZSIsaGVhZGVyOiJSb2xlIixzb3J0YWJsZTohMH0se2tleToiZGVwYXJ0bWVudCIsaGVhZGVyOiJEZXBhcnRtZW50Iixzb3J0YWJsZTohMH0se2tleToiZW1haWwiLGhlYWRlcjoiRW1haWwifSx7a2V5OiJwaG9uZSIsaGVhZGVyOiJQaG9uZSJ9LHtrZXk6ImxvY2F0aW9uIixoZWFkZXI6IkxvY2F0aW9uIixzb3J0YWJsZTohMH0se2tleToic3RhdHVzIixoZWFkZXI6IlN0YXR1cyIsc29ydGFibGU6ITB9LHtrZXk6ImNyZWF0ZWRBdCIsaGVhZGVyOiJDcmVhdGVkIixzb3J0YWJsZTohMH0se2tleToidXBkYXRlZEF0IixoZWFkZXI6IlVwZGF0ZWQiLHNvcnRhYmxlOiEwfSx7a2V5OiJsYXN0TG9naW4iLGhlYWRlcjoiTGFzdCBMb2dpbiIsc29ydGFibGU6ITB9LHtrZXk6InByb2plY3RzIixoZWFkZXI6IlByb2plY3RzIn0se2tleToidGFncyIsaGVhZGVyOiJUYWdzIn0se2tleToibm90ZXMiLGhlYWRlcjoiTm90ZXMifV19CiAgICAgICAgICAuZGF0YT0ke1t7aWQ6MSxuYW1lOiJBbGljZSBKb2huc29uIixyb2xlOiJFbmdpbmVlciIsZGVwYXJ0bWVudDoiUiZEIixlbWFpbDoiYWxpY2VAY29ycC5jb20iLHBob25lOiIrMSAyMDIgNTU1IDAxMTEiLGxvY2F0aW9uOiJCZXJsaW4iLHN0YXR1czoiQWN0aXZlIixjcmVhdGVkQXQ6IjIwMjMtMDEtMTIiLHVwZGF0ZWRBdDoiMjAyNC0wNS0wMyIsbGFzdExvZ2luOiIyMDI0LTEwLTAxIixwcm9qZWN0czo1LHRhZ3M6InR5cGVzY3JpcHQsIHVpIixub3RlczoiTWVudG9yIn0se2lkOjIsbmFtZToiQm9iIFNtaXRoIixyb2xlOiJEZXNpZ25lciIsZGVwYXJ0bWVudDoiRGVzaWduIixlbWFpbDoiYm9iQGNvcnAuY29tIixwaG9uZToiKzEgMjAyIDU1NSAwMTEyIixsb2NhdGlvbjoiUGFyaXMiLHN0YXR1czoiQWN0aXZlIixjcmVhdGVkQXQ6IjIwMjItMTEtMDUiLHVwZGF0ZWRBdDoiMjAyNC0wNC0xMCIsbGFzdExvZ2luOiIyMDI0LTA5LTI4Iixwcm9qZWN0czo4LHRhZ3M6ImZpZ21hLCBicmFuZCIsbm90ZXM6IlBhcnQtdGltZSJ9LHtpZDozLG5hbWU6IkNoYXJsaWUgRGF2aXMiLHJvbGU6Ik1hbmFnZXIiLGRlcGFydG1lbnQ6Ik9wcyIsZW1haWw6ImNoYXJsaWVAY29ycC5jb20iLHBob25lOiIrMSAyMDIgNTU1IDAxMTMiLGxvY2F0aW9uOiJMb25kb24iLHN0YXR1czoiT24gTGVhdmUiLGNyZWF0ZWRBdDoiMjAyMS0wNC0yMSIsdXBkYXRlZEF0OiIyMDI0LTAyLTE1IixsYXN0TG9naW46IjIwMjQtMDgtMTIiLHByb2plY3RzOjMsdGFnczoic3JlLCBsZWFkZXJzaGlwIixub3RlczoiIn0se2lkOjQsbmFtZToiRGlhbmEgTWFydGluZXoiLHJvbGU6IkVuZ2luZWVyIixkZXBhcnRtZW50OiJQbGF0Zm9ybSIsZW1haWw6ImRpYW5hQGNvcnAuY29tIixwaG9uZToiKzEgMjAyIDU1NSAwMTE0Iixsb2NhdGlvbjoiTWFkcmlkIixzdGF0dXM6IkFjdGl2ZSIsY3JlYXRlZEF0OiIyMDIwLTA2LTMwIix1cGRhdGVkQXQ6IjIwMjQtMDYtMjUiLGxhc3RMb2dpbjoiMjAyNC0xMC0wMiIscHJvamVjdHM6Nix0YWdzOiJub2RlLCBhcGkiLG5vdGVzOiJPbi1jYWxsIn0se2lkOjUsbmFtZToiRXRoYW4gQnJvd24iLHJvbGU6IlN1cHBvcnQiLGRlcGFydG1lbnQ6IkNTIixlbWFpbDoiZXRoYW5AY29ycC5jb20iLHBob25lOiIrMSAyMDIgNTU1IDAxMTUiLGxvY2F0aW9uOiJSb21lIixzdGF0dXM6IkluYWN0aXZlIixjcmVhdGVkQXQ6IjIwMTktMDktMTgiLHVwZGF0ZWRBdDoiMjAyNC0wMy0wOSIsbGFzdExvZ2luOiIyMDI0LTA2LTE5Iixwcm9qZWN0czoyLHRhZ3M6InplbmRlc2siLG5vdGVzOiJSZWhpcmUifSx7aWQ6NixuYW1lOiJGaW9uYSBDbGFyayIscm9sZToiUUEiLGRlcGFydG1lbnQ6IlFBIixlbWFpbDoiZmlvbmFAY29ycC5jb20iLHBob25lOiIrMSAyMDIgNTU1IDAxMTYiLGxvY2F0aW9uOiJWaWVubmEiLHN0YXR1czoiQWN0aXZlIixjcmVhdGVkQXQ6IjIwMjItMDMtMTQiLHVwZGF0ZWRBdDoiMjAyNC0wMy0wMSIsbGFzdExvZ2luOiIyMDI0LTA5LTA3Iixwcm9qZWN0czo3LHRhZ3M6InBsYXl3cmlnaHQiLG5vdGVzOiIifV19CiAgICAgICAgICAuZGF0YUFjdGlvbnM9JHtbe25hbWU6IlZpZXciLGljb25OYW1lOiJsdWNpZGU6ZXllIix0eXBlOlsiaW5Sb3ciLCJjb250ZXh0bWVudSJdLGFjdGlvbkZ1bmM6aShhc3luYyh7aXRlbTpzfSk9Pntjb25zb2xlLmxvZygidmlldyIscyl9LCJhY3Rpb25GdW5jIil9LHtuYW1lOiJFZGl0IixpY29uTmFtZToibHVjaWRlOmVkaXQiLHR5cGU6WyJpblJvdyIsImNvbnRleHRtZW51Il0sYWN0aW9uRnVuYzppKGFzeW5jKHtpdGVtOnN9KT0+e2NvbnNvbGUubG9nKCJlZGl0IixzKX0sImFjdGlvbkZ1bmMiKX0se25hbWU6IkRlbGV0ZSIsaWNvbk5hbWU6Imx1Y2lkZTp0cmFzaCIsdHlwZTpbImluUm93IiwiY29udGV4dG1lbnUiXSxhY3Rpb25GdW5jOmkoYXN5bmMoe2l0ZW06c30pPT57Y29uc29sZS5sb2coImRlbGV0ZSIscyl9LCJhY3Rpb25GdW5jIil9LHtuYW1lOiJNZXNzYWdlIixpY29uTmFtZToibHVjaWRlOm1lc3NhZ2Utc3F1YXJlIix0eXBlOlsiaW5Sb3ciXSxhY3Rpb25GdW5jOmkoYXN5bmMoe2l0ZW06c30pPT57Y29uc29sZS5sb2coIm1lc3NhZ2UiLHMpfSwiYWN0aW9uRnVuYyIpfSx7bmFtZToiSGlzdG9yeSIsaWNvbk5hbWU6Imx1Y2lkZTpjbG9jayIsdHlwZTpbImluUm93Il0sYWN0aW9uRnVuYzppKGFzeW5jKHtpdGVtOnN9KT0+e2NvbnNvbGUubG9nKCJoaXN0b3J5IixzKX0sImFjdGlvbkZ1bmMiKX0se25hbWU6IkFkZCBOZXciLGljb25OYW1lOiJsdWNpZGU6cGx1cyIsdHlwZTpbImhlYWRlciJdLGFjdGlvbkZ1bmM6aShhc3luYyh7dGFibGU6c30pPT57Y29uc29sZS5sb2coImFkZCIpfSwiYWN0aW9uRnVuYyIpfSx7bmFtZToiRXhwb3J0IENTViIsaWNvbk5hbWU6Imx1Y2lkZTpkb3dubG9hZCIsdHlwZTpbImhlYWRlciJdLGFjdGlvbkZ1bmM6aShhc3luYyh7dGFibGU6c30pPT57Y29uc29sZS5sb2coImV4cG9ydCIpfSwiYWN0aW9uRnVuYyIpfSx7bmFtZToiQnVsayBEZWxldGUiLGljb25OYW1lOiJsdWNpZGU6dHJhc2gtMiIsdHlwZTpbImZvb3RlciJdLGFjdGlvbkZ1bmM6aShhc3luYyh7dGFibGU6c30pPT57Y29uc29sZS5sb2coImJ1bGsgZGVsZXRlIil9LCJhY3Rpb25GdW5jIil9XX0KICAgICAgICA+PC9kZWVzLXRhYmxlPgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgyIGNsYXNzPSJkZW1vLXRpdGxlIj5TY3JvbGxhYmxlIFNtYWxsIEhlaWdodDwvaDI+CiAgICAgICAgPHAgY2xhc3M9ImRlbW8tZGVzY3JpcHRpb24iPlNhbWUgYXMgYWJvdmUsIGJ1dCB3aXRoIG1hbnkgaXRlbXMgYW5kIGEgc21hbGwgZml4ZWQgaGVpZ2h0IHRvIGZvcmNlIHZlcnRpY2FsIHNjcm9sbGluZyBpbnNpZGUgdGhlIHRhYmxlLiBBY3Rpb25zIHJlbWFpbiB2aXNpYmxlIG9uIHRoZSByaWdodDsgaG9yaXpvbnRhbCBzY3JvbGwgYXBwZWFycyBpZiBuZWVkZWQuPC9wPgogICAgICAgIDxzdHlsZT4KICAgICAgICAgICNzY3JvbGxTbWFsbEhlaWdodCB7IC0tdGFibGUtbWF4LWhlaWdodDogMjQwcHg7IH0KICAgICAgICA8L3N0eWxlPgogICAgICAgIDxkZWVzLXRhYmxlCiAgICAgICAgICBpZD0ic2Nyb2xsU21hbGxIZWlnaHQiCiAgICAgICAgICAuZml4ZWRIZWlnaHQ9JHshMH0KICAgICAgICAgIC52aXJ0dWFsaXplZD0keyEwfQogICAgICAgICAgaGVhZGluZzE9IlBlb3BsZSBEaXJlY3RvcnkgKFNjcm9sbGFibGUsIFZpcnR1YWxpemVkKSIKICAgICAgICAgIGhlYWRpbmcyPSJGb3JjZWQgc2Nyb2xsaW5nIHdpdGggbWFueSBpdGVtcyIKICAgICAgICAgIC5jb2x1bW5zPSR7W3trZXk6ImlkIixoZWFkZXI6IklEIixzb3J0YWJsZTohMH0se2tleToibmFtZSIsaGVhZGVyOiJOYW1lIixzb3J0YWJsZTohMH0se2tleToicm9sZSIsaGVhZGVyOiJSb2xlIixzb3J0YWJsZTohMH0se2tleToiZGVwYXJ0bWVudCIsaGVhZGVyOiJEZXBhcnRtZW50Iixzb3J0YWJsZTohMH0se2tleToiZW1haWwiLGhlYWRlcjoiRW1haWwifSx7a2V5OiJwaG9uZSIsaGVhZGVyOiJQaG9uZSJ9LHtrZXk6ImxvY2F0aW9uIixoZWFkZXI6IkxvY2F0aW9uIixzb3J0YWJsZTohMH0se2tleToic3RhdHVzIixoZWFkZXI6IlN0YXR1cyIsc29ydGFibGU6ITB9LHtrZXk6ImNyZWF0ZWRBdCIsaGVhZGVyOiJDcmVhdGVkIixzb3J0YWJsZTohMH0se2tleToidXBkYXRlZEF0IixoZWFkZXI6IlVwZGF0ZWQiLHNvcnRhYmxlOiEwfSx7a2V5OiJsYXN0TG9naW4iLGhlYWRlcjoiTGFzdCBMb2dpbiIsc29ydGFibGU6ITB9LHtrZXk6InByb2plY3RzIixoZWFkZXI6IlByb2plY3RzIn0se2tleToidGFncyIsaGVhZGVyOiJUYWdzIn0se2tleToibm90ZXMiLGhlYWRlcjoiTm90ZXMifV19CiAgICAgICAgICAuZGF0YT0ke0FycmF5LmZyb20oe2xlbmd0aDoxMDB9LChzLGUpPT4oe2lkOmUrMSxuYW1lOmBVc2VyICR7ZSsxfWAscm9sZTpbIkVuZ2luZWVyIiwiRGVzaWduZXIiLCJNYW5hZ2VyIiwiUUEiLCJTdXBwb3J0Il1bZSU1XSxkZXBhcnRtZW50OlsiUiZEIiwiRGVzaWduIiwiT3BzIiwiUUEiLCJDUyJdW2UlNV0sZW1haWw6YHVzZXIke2UrMX1AY29ycC5jb21gLHBob25lOmArMSAyMDIgNTU1ICR7U3RyaW5nKDFlMytlKS5zbGljZSgtNCl9YCxsb2NhdGlvbjpbIkJlcmxpbiIsIlBhcmlzIiwiTG9uZG9uIiwiTWFkcmlkIiwiUm9tZSJdW2UlNV0sc3RhdHVzOlsiQWN0aXZlIiwiSW5hY3RpdmUiLCJPbiBMZWF2ZSJdW2UlM10sY3JlYXRlZEF0OmAyMDIzLSR7U3RyaW5nKGUlMTIrMSkucGFkU3RhcnQoMiwiMCIpfS0ke1N0cmluZyhlJTI4KzEpLnBhZFN0YXJ0KDIsIjAiKX1gLHVwZGF0ZWRBdDpgMjAyNC0ke1N0cmluZygoZSszKSUxMisxKS5wYWRTdGFydCgyLCIwIil9LSR7U3RyaW5nKChlKzcpJTI4KzEpLnBhZFN0YXJ0KDIsIjAiKX1gLGxhc3RMb2dpbjpgMjAyNC0ke1N0cmluZygoZSs2KSUxMisxKS5wYWRTdGFydCgyLCIwIil9LSR7U3RyaW5nKChlKzEwKSUyOCsxKS5wYWRTdGFydCgyLCIwIil9YCxwcm9qZWN0czplJTEyLHRhZ3M6ZSUyPyJ0eXBlc2NyaXB0IjoiZGVzaWduIixub3RlczplJTM/IiI6Ik5vdGUifSkpfQogICAgICAgICAgLmRhdGFBY3Rpb25zPSR7W3tuYW1lOiJWaWV3IixpY29uTmFtZToibHVjaWRlOmV5ZSIsdHlwZTpbImluUm93Il0sYWN0aW9uRnVuYzppKGFzeW5jKHtpdGVtOnN9KT0+e30sImFjdGlvbkZ1bmMiKX0se25hbWU6IkVkaXQiLGljb25OYW1lOiJsdWNpZGU6ZWRpdCIsdHlwZTpbImluUm93Il0sYWN0aW9uRnVuYzppKGFzeW5jKHtpdGVtOnN9KT0+e30sImFjdGlvbkZ1bmMiKX0se25hbWU6IkRlbGV0ZSIsaWNvbk5hbWU6Imx1Y2lkZTp0cmFzaCIsdHlwZTpbImluUm93Il0sYWN0aW9uRnVuYzppKGFzeW5jKHtpdGVtOnN9KT0+e30sImFjdGlvbkZ1bmMiKX1dfQogICAgICAgID48L2RlZXMtdGFibGU+CiAgICAgIDwvZGl2PgoKICAgICAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e2xldCBlPXMucXVlcnlTZWxlY3RvcigiI2RlbW9MaXZlRmxhc2giKTtpZighZSlyZXR1cm47ZS5fX2xpdmVGbGFzaFRpbWVySWQmJndpbmRvdy5jbGVhckludGVydmFsKGUuX19saXZlRmxhc2hUaW1lcklkKTtsZXQgdD1pKCgpPT57aWYoIUFycmF5LmlzQXJyYXkoZS5kYXRhKXx8ZS5kYXRhLmxlbmd0aD09PTApcmV0dXJuO2xldCBhPWUuZGF0YS5tYXAobj0+KHsuLi5ufSkpLHI9MStNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMyk7Zm9yKGxldCBuPTA7bjxyO24rKyl7bGV0IG89TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmEubGVuZ3RoKSxsPSsoKE1hdGgucmFuZG9tKCkqMi0xKSozKS50b0ZpeGVkKDIpLHA9TWF0aC5tYXgoMSwrKGFbb10ucHJpY2UrbCkudG9GaXhlZCgyKSk7YVtvXT17Li4uYVtvXSxwcmljZTpwLGNoYW5nZTpsLHVwZGF0ZWRBdDpuZXcgRGF0ZSgpLnRvTG9jYWxlVGltZVN0cmluZygpfX1lLmRhdGE9YX0sInRpY2siKTtlLl9fbGl2ZUZsYXNoVGltZXJJZD13aW5kb3cuc2V0SW50ZXJ2YWwodCwxNTAwKX19PgogICAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgICA8aDIgY2xhc3M9ImRlbW8tdGl0bGUiPkxpdmUgVXBkYXRlcyB3aXRoIEZsYXNoIEhpZ2hsaWdodGluZzwvaDI+CiAgICAgICAgICA8cCBjbGFzcz0iZGVtby1kZXNjcmlwdGlvbiI+CiAgICAgICAgICAgIE9wdC1pbiBjZWxsLWZsYXNoIHZpYSA8Y29kZT5oaWdobGlnaHQtdXBkYXRlcz0iZmxhc2giPC9jb2RlPi4gVGhlIHRpY2tlciBiZWxvdyBtdXRhdGVzCiAgICAgICAgICAgIHJhbmRvbSByb3dzIGV2ZXJ5IDEuNXMgYW5kIHJlYXNzaWducyA8Y29kZT4uZGF0YTwvY29kZT4uIFVwZGF0ZWQgY2VsbHMgYnJpZWZseSBmbGFzaAogICAgICAgICAgICBhbWJlciBhbmQgZmFkZSBvdXQuIFJlcXVpcmVzIDxjb2RlPnJvd0tleTwvY29kZT4gKGhlcmUgPGNvZGU+InN5bWJvbCI8L2NvZGU+KS4gSG9ub3JzCiAgICAgICAgICAgIDxjb2RlPnByZWZlcnMtcmVkdWNlZC1tb3Rpb248L2NvZGU+LiBSb3cgc2VsZWN0aW9uIHBlcnNpc3RzIGFjcm9zcyB1cGRhdGVzIOKAlCBjbGljayBhCiAgICAgICAgICAgIHJvdywgdGhlbiB3YXRjaCBpdCBzdGF5IHNlbGVjdGVkIGFzIHRoZSBkYXRhIGNodXJucy4KICAgICAgICAgIDwvcD4KICAgICAgICAgIDxkZWVzLXRhYmxlCiAgICAgICAgICAgIGlkPSJkZW1vTGl2ZUZsYXNoIgogICAgICAgICAgICAucm93S2V5PSR7InN5bWJvbCJ9CiAgICAgICAgICAgIGhpZ2hsaWdodC11cGRhdGVzPSJmbGFzaCIKICAgICAgICAgICAgLnNlbGVjdGlvbk1vZGU9JHsibXVsdGkifQogICAgICAgICAgICBoZWFkaW5nMT0iTGl2ZSBNYXJrZXQgRmVlZCIKICAgICAgICAgICAgaGVhZGluZzI9IkZsYXNoaW5nIGNlbGxzIGluZGljYXRlIHVwZGF0ZWQgdmFsdWVzIgogICAgICAgICAgICAuY29sdW1ucz0ke1t7a2V5OiJzeW1ib2wiLGhlYWRlcjoiU3ltYm9sIixzb3J0YWJsZTohMH0se2tleToicHJpY2UiLGhlYWRlcjoiUHJpY2UiLHNvcnRhYmxlOiEwfSx7a2V5OiJjaGFuZ2UiLGhlYWRlcjoiXHUwMzk0Iixzb3J0YWJsZTohMH0se2tleToidXBkYXRlZEF0IixoZWFkZXI6IlVwZGF0ZWQifV19CiAgICAgICAgICAgIC5kYXRhPSR7W3tzeW1ib2w6IkFBUEwiLHByaWNlOjE4Mi41MixjaGFuZ2U6MCx1cGRhdGVkQXQ6Ilx1MjAxNCJ9LHtzeW1ib2w6Ik1TRlQiLHByaWNlOjQxNC4xOCxjaGFuZ2U6MCx1cGRhdGVkQXQ6Ilx1MjAxNCJ9LHtzeW1ib2w6IkdPT0ciLHByaWNlOjE2OC43NCxjaGFuZ2U6MCx1cGRhdGVkQXQ6Ilx1MjAxNCJ9LHtzeW1ib2w6IkFNWk4iLHByaWNlOjE4Ni4xMyxjaGFuZ2U6MCx1cGRhdGVkQXQ6Ilx1MjAxNCJ9LHtzeW1ib2w6IlRTTEEiLHByaWNlOjI0OC41LGNoYW5nZTowLHVwZGF0ZWRBdDoiXHUyMDE0In0se3N5bWJvbDoiTlZEQSIscHJpY2U6ODc3LjM1LGNoYW5nZTowLHVwZGF0ZWRBdDoiXHUyMDE0In0se3N5bWJvbDoiTUVUQSIscHJpY2U6NDkyLjk2LGNoYW5nZTowLHVwZGF0ZWRBdDoiXHUyMDE0In0se3N5bWJvbDoiTkZMWCIscHJpY2U6NjA1Ljg4LGNoYW5nZTowLHVwZGF0ZWRBdDoiXHUyMDE0In0se3N5bWJvbDoiQU1EIixwcmljZToxNjUuMjQsY2hhbmdlOjAsdXBkYXRlZEF0OiJcdTIwMTQifSx7c3ltYm9sOiJJTlRDIixwcmljZTo0Mi4xNSxjaGFuZ2U6MCx1cGRhdGVkQXQ6Ilx1MjAxNCJ9XX0KICAgICAgICAgID48L2RlZXMtdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KICAgIDwvZGl2PgogIDwvZGl2PgpgLCJkZW1vRnVuYyIpfSk7dmFyIE0zYSx6M2E9ZygoKT0+e3BlKCk7Q3IoKTtwdCgpO00zYT1bSGUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgZGVlcy10aWxlIHsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICAgIGZvbnQtZmFtaWx5OiAke05hfTsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgIH0KCiAgICAgIC5oZWFkZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgIGhlaWdodDogNDBweDsKICAgICAgfQoKICAgICAgLmhlYWRpbmdDb250YWluZXIgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgIH0KCiAgICAgIC5oZWFkaW5nIHsKICAgICAgICBsaW5lLWhlaWdodDogMTsKICAgICAgfQoKICAgICAgLmhlYWRpbmcxIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXNlY29uZGFyeSk7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICAgIH0KCiAgICAgIC5oZWFkaW5nMiB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDU2LjklKSIsImhzbCgyMTUgMjAuMiUgNTUuMSUpIil9OwogICAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7CiAgICAgIH0KCiAgICAgIC5oZWFkaW5nU2VwYXJhdGlvbiB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgLmhlYWRlckFjdGlvbnMgewogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBnYXA6IDhweDsKICAgICAgfQogICAgICAKICAgICAgLmhlYWRlckFjdGlvbiB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNHB4OwogICAgICAgIHBhZGRpbmc6IDRweCAxMHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5oZWFkZXJBY3Rpb246aG92ZXIgewogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1ob3Zlcik7CiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1zdHJvbmcpOwogICAgICB9CgogICAgICAuaGVhZGVyQWN0aW9uIGRlZXMtaWNvbiB7CiAgICAgICAgd2lkdGg6IDE0cHg7CiAgICAgICAgaGVpZ2h0OiAxNHB4OwogICAgICB9CgogICAgICAuc2VhcmNoR3JpZCB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLWdhcDogMTZweDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciBtYXgtY29udGVudDsKICAgICAgICBwYWRkaW5nOiAxNnB4IDI0cHg7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1iZy1zZWNvbmRhcnkpOwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlOwogICAgICB9CgogICAgICBAbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHsKICAgICAgICAuc2VhcmNoR3JpZCB7CiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8qIGxldCBzZWFyY2ggbW9kZSBzaXplIHRvIGNvbnRlbnQgKG5vIGZvcmNlZCB3aWR0aCkgKi8KCiAgICAgIC5zZWFyY2hHcmlkLmhpZGRlbiB7CiAgICAgICAgaGVpZ2h0OiAwcHg7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHBhZGRpbmc6IDBweCAyNHB4OwogICAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDBweDsKICAgICAgfQoKICAgICAgLyogRGVmYXVsdCBtb2RlIChNb2RlIEIsIHBhZ2Ugc3RpY2t5KTogaG9yaXpvbnRhbCBzY3JvbGwgbGl2ZXMgb24KICAgICAgICAgLnRhYmxlU2Nyb2xsIChzbyB3aWRlIHRhYmxlcyBkb24ndCBnZXQgY2xpcHBlZCBieSBhbiBhbmNlc3RvcgogICAgICAgICBvdmVyZmxvdzpoaWRkZW4gc3VjaCBhcyBkZWVzLXRpbGUpLiBWZXJ0aWNhbCBzdGlja3kgaXMgaGFuZGxlZCBieQogICAgICAgICBhIEpTLW1hbmFnZWQgZmxvYXRpbmcgaGVhZGVyICguZmxvYXRpbmdIZWFkZXIsIHBvc2l0aW9uOmZpeGVkKSwKICAgICAgICAgd2hpY2ggaXMgdW5hZmZlY3RlZCBieSBhbmNlc3RvciBvdmVyZmxvdy4gKi8KICAgICAgLnRhYmxlU2Nyb2xsIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKICAgICAgICBvdmVyZmxvdy15OiB2aXNpYmxlOwogICAgICAgIHNjcm9sbGJhci1ndXR0ZXI6IHN0YWJsZTsKICAgICAgfQogICAgICAvKiBNb2RlIEEsIGludGVybmFsIHNjcm9sbDogb3B0LWluIHZpYSBmaXhlZC1oZWlnaHQgYXR0cmlidXRlLgogICAgICAgICBUaGUgdGFibGUgc2Nyb2xscyBpbnNpZGUgaXRzIG93biBib3ggYW5kIHRoZSBoZWFkZXIgc3RpY2tzIHZpYSBwbGFpbiBDU1Mgc3RpY2t5LiAqLwogICAgICA6aG9zdChbZml4ZWQtaGVpZ2h0XSkgLnRhYmxlU2Nyb2xsIHsKICAgICAgICBtYXgtaGVpZ2h0OiB2YXIoLS10YWJsZS1tYXgtaGVpZ2h0LCAzNjBweCk7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgICAgc2Nyb2xsYmFyLWd1dHRlcjogc3RhYmxlIGJvdGgtZWRnZXM7CiAgICAgIH0KICAgICAgOmhvc3QoW2ZpeGVkLWhlaWdodF0pIC50YWJsZVNjcm9sbDo6LXdlYmtpdC1zY3JvbGxiYXI6aG9yaXpvbnRhbCB7CiAgICAgICAgaGVpZ2h0OiAwcHg7CiAgICAgIH0KCiAgICAgIC8qIEZsb2F0aW5nIGhlYWRlciBvdmVybGF5IChNb2RlIEIpLiBQb3NpdGlvbiBpcyBtYW5hZ2VkIGJ5IEpTIHNvIGl0CiAgICAgICAgIGVzY2FwZXMgYW55IGFuY2VzdG9yIG92ZXJmbG93OmhpZGRlbiAocG9zaXRpb246Zml4ZWQgaXMgbm90IGNsaXBwZWQKICAgICAgICAgYnkgb3ZlcmZsb3cgYW5jZXN0b3JzKS4gKi8KICAgICAgLmZsb2F0aW5nSGVhZGVyIHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgei1pbmRleDogMTAwOwogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CiAgICAgIC5mbG9hdGluZ0hlYWRlci5hY3RpdmUgewogICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgICAgIH0KICAgICAgLmZsb2F0aW5nSGVhZGVyIHRhYmxlIHsKICAgICAgICBtYXJnaW46IDA7CiAgICAgIH0KICAgICAgLmZsb2F0aW5nSGVhZGVyIHRoIHsKICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0bzsKICAgICAgfQoKICAgICAgdGFibGUgewogICAgICAgIC8qIGFsbG93IHRhYmxlIHRvIGdyb3cgd2lkZXIgdGhhbiBjb250YWluZXIgc28gYWN0aW9ucyBjb2x1bW4gY2FuIHN0aWNrICovCiAgICAgICAgd2lkdGg6IG1heC1jb250ZW50OwogICAgICAgIG1pbi13aWR0aDogMTAwJTsKICAgICAgICBjYXB0aW9uLXNpZGU6IGJvdHRvbTsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTsKICAgICAgICBib3JkZXItc3BhY2luZzogMDsKICAgICAgfQogICAgICAKICAgICAgLm5vRGF0YVNldCB7CiAgICAgICAgcGFkZGluZzogNDhweCAyNHB4OwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuNCAxNi4zJSA1Ni45JSkiLCJoc2woMjE1IDIwLjIlIDU1LjElKSIpfTsKICAgICAgfQogICAgICAKICAgICAgdGhlYWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDQwJSA5Ni4xJSkiLCJoc2woMCAwJSA5JSkiKX07CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLXN0cm9uZyk7CiAgICAgIH0KICAgICAgLyogdGggbmVlZHMgaXRzIG93biBiYWNrZ3JvdW5kIHNvIHN0aWNreSBjZWxscyBwYWludCBvdmVyIHNjcm9sbGVkIHJvd3MKICAgICAgICAgKGJyb3dzZXJzIGRvbid0IHBhaW50IHRoZSA8dGhlYWQ+IGJveCBiZWhpbmQgYSBzdGlja3kgPHRoPikuICovCiAgICAgIHRoIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxMCA0MCUgOTYuMSUpIiwiaHNsKDAgMCUgOSUpIil9OwogICAgICB9CiAgICAgIC8qIE1vZGUgQSDigJQgaW50ZXJuYWwgc2Nyb2xsIHN0aWNreSAqLwogICAgICA6aG9zdChbZml4ZWQtaGVpZ2h0XSkgdGhlYWQgdGggewogICAgICAgIHBvc2l0aW9uOiBzdGlja3k7CiAgICAgICAgdG9wOiAwOwogICAgICAgIHotaW5kZXg6IDI7CiAgICAgIH0KICAgICAgOmhvc3QoW2ZpeGVkLWhlaWdodF0pIHRoZWFkIHRyLmZpbHRlcnNSb3cgdGggewogICAgICAgIHRvcDogMzZweDsgLyogbWF0Y2hlcyB0aCB7IGhlaWdodDogMzZweCB9IGJlbG93ICovCiAgICAgIH0KICAgICAgCiAgICAgIHRib2R5IHRyIHsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2U7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICB9CiAgICAgIAogICAgICAvKiBEZWZhdWx0IGhvcml6b250YWwgbGluZXMgKGJvdHRvbSBib3JkZXIgb25seSkgKi8KICAgICAgdGJvZHkgdHIgewogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgfQogICAgICAKICAgICAgdGJvZHkgdHI6bGFzdC1jaGlsZCB7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgICAgfQogICAgICAKICAgICAgLyogRnVsbCBob3Jpem9udGFsIGxpbmVzIHdoZW4gZW5hYmxlZCAqLwogICAgICA6aG9zdChbc2hvdy1ob3Jpem9udGFsLWxpbmVzXSkgdGJvZHkgdHIgewogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICAgIH0KICAgICAgCiAgICAgIDpob3N0KFtzaG93LWhvcml6b250YWwtbGluZXNdKSB0Ym9keSB0cjpmaXJzdC1jaGlsZCB7CiAgICAgICAgYm9yZGVyLXRvcDogbm9uZTsKICAgICAgfQogICAgICAKICAgICAgOmhvc3QoW3Nob3ctaG9yaXpvbnRhbC1saW5lc10pIHRib2R5IHRyOmxhc3QtY2hpbGQgewogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgfQogICAgICAKICAgICAgdGJvZHkgdHI6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUgLyAwLjA2KSIsImhzbCgyMTcuMiA5MS4yJSA1OS44JSAvIDAuMDgpIil9OwogICAgICB9CiAgICAgIAogICAgICAvKiBDb2x1bW4gaG92ZXIgZWZmZWN0IGZvciBiZXR0ZXIgdHJhY2VhYmlsaXR5ICovCiAgICAgIHRkIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KICAgICAgCiAgICAgIHRkOjphZnRlciB7CiAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDUxLjIlIC8gMC4wNCkiLCJoc2woMjE3LjIgOTEuMiUgNTkuOCUgLyAwLjA1KSIpfTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgZWFzZTsKICAgICAgICB6LWluZGV4OiAtMTsKICAgICAgfQogICAgICAKICAgICAgdGQ6aG92ZXI6OmFmdGVyIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CiAgICAgIAogICAgICAvKiBHcmlkIG1vZGUgLSBzaG93cyBib3RoIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIGxpbmVzICovCiAgICAgIDpob3N0KFtzaG93LWdyaWRdKSB0aCB7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7CiAgICAgICAgYm9yZGVyLXRvcDogbm9uZTsKICAgICAgfQogICAgICAKICAgICAgOmhvc3QoW3Nob3ctZ3JpZF0pIHRkIHsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgICBib3JkZXItbGVmdDogbm9uZTsKICAgICAgICBib3JkZXItdG9wOiBub25lOwogICAgICB9CiAgICAgIAogICAgICA6aG9zdChbc2hvdy1ncmlkXSkgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGQgewogICAgICAgIGJvcmRlci10b3A6IG5vbmU7CiAgICAgIH0KCiAgICAgIC8qIFJlbW92ZSBlZGdlIGJvcmRlcnMgdGhhdCB3b3VsZCBkb3VibGUgd2l0aCB0aWxlIGZyYW1lICovCiAgICAgIDpob3N0KFtzaG93LWdyaWRdKSB0aDpsYXN0LWNoaWxkLAogICAgICA6aG9zdChbc2hvdy1ncmlkXSkgdGQ6bGFzdC1jaGlsZCB7CiAgICAgICAgYm9yZGVyLXJpZ2h0OiBub25lOwogICAgICB9CiAgICAgIDpob3N0KFtzaG93LWdyaWRdKSB0Ym9keSB0cjpsYXN0LWNoaWxkIHRkIHsKICAgICAgICBib3JkZXItYm90dG9tOiBub25lOwogICAgICB9CgogICAgICAvKiBTdGlja3kgQWN0aW9ucyBjb2x1bW4gKHJpZ2h0IHBpbm5lZCkgKi8KICAgICAgdGhlYWQgdGguYWN0aW9uc0NvbCwKICAgICAgdGJvZHkgdGQuYWN0aW9uc0NvbCB7CiAgICAgICAgcG9zaXRpb246IHN0aWNreTsKICAgICAgICByaWdodDogMDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXByaW1hcnkpOwogICAgICB9CiAgICAgIHRoZWFkIHRoLmFjdGlvbnNDb2wgeyB6LWluZGV4OiAzOyB9CiAgICAgIHRib2R5IHRkLmFjdGlvbnNDb2wgewogICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgYm94LXNoYWRvdzogLTFweCAwIDAgMCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgfQogICAgICAKICAgICAgdGJvZHkgdHIuc2VsZWN0ZWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUgLyAwLjEpIiwiaHNsKDIxNy4yIDkxLjIlIDU5LjglIC8gMC4xMikiKX07CiAgICAgIH0KCiAgICAgIHRib2R5IHRyLmhhc0F0dGFjaG1lbnQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMTQyLjEgNzYuMiUgMzYuMyUgLyAwLjEpIiwiaHNsKDE0Mi4xIDc2LjIlIDM2LjMlIC8gMC4xKSIpfTsKICAgICAgfQoKICAgICAgdGggewogICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICBwYWRkaW5nOiA4cHggMTZweDsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDQ2LjklKSIsImhzbCgyMTUgMjAuMiUgNjUuMSUpIil9OwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICB9CgogICAgICB0aFtyb2xlPSdjb2x1bW5oZWFkZXInXTpob3ZlciB7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgfQoKICAgICAgdGggLnNvcnRBcnJvdyB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIG1hcmdpbi1sZWZ0OiA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgICAgIG9wYWNpdHk6IDAuNzsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgICB9CgogICAgICB0aCAuc29ydEJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDNweDsKICAgICAgICBwYWRkaW5nOiAxcHggNXB4OwogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDMwJSkiLCJoc2woMjE3LjIgOTEuMiUgNzUlKSIpfTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDUxLjIlIC8gMC4xMikiLCJoc2woMjE3LjIgOTEuMiUgNTkuOCUgLyAwLjE4KSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgICB9CiAgICAgIAogICAgICA6aG9zdChbc2hvdy12ZXJ0aWNhbC1saW5lc10pIHRoIHsKICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgfQogICAgICAKICAgICAgdGQgewogICAgICAgIHBhZGRpbmc6IDhweCAxNnB4OwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIH0KICAgICAgCiAgICAgIDpob3N0KFtzaG93LXZlcnRpY2FsLWxpbmVzXSkgdGQgewogICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICB9CiAgICAgIAogICAgICB0aDpmaXJzdC1jaGlsZCwKICAgICAgdGQ6Zmlyc3QtY2hpbGQgewogICAgICAgIHBhZGRpbmctbGVmdDogMTZweDsKICAgICAgfQogICAgICAKICAgICAgdGg6bGFzdC1jaGlsZCwKICAgICAgdGQ6bGFzdC1jaGlsZCB7CiAgICAgICAgcGFkZGluZy1yaWdodDogMTZweDsKICAgICAgfQogICAgICAKICAgICAgOmhvc3QoW3Nob3ctdmVydGljYWwtbGluZXNdKSB0aDpsYXN0LWNoaWxkLAogICAgICA6aG9zdChbc2hvdy12ZXJ0aWNhbC1saW5lc10pIHRkOmxhc3QtY2hpbGQgewogICAgICAgIGJvcmRlci1yaWdodDogbm9uZTsKICAgICAgfQoKICAgICAgLyogRGVmYXVsdCBib3R0b20gYm9yZGVyIG9uIGxhc3Qgcm93IHJlbW92ZWQg4oCUIHRpbGUgZnJhbWUgaGFuZGxlcyBpdCAqLwogICAgICA6aG9zdCg6bm90KFtzaG93LWhvcml6b250YWwtbGluZXNdKSkgdGJvZHkgdHI6bGFzdC1jaGlsZCB7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgICAgfQogICAgICAKICAgICAgLmlubmVyQ2VsbENvbnRhaW5lciB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG1pbi1oZWlnaHQ6IDI0cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICAgIH0KCiAgICAgIC8qIC0tLS0gQ2VsbCBmbGFzaCBoaWdobGlnaHRpbmcgKG9wdC1pbiB2aWEgaGlnaGxpZ2h0LXVwZGF0ZXM9ImZsYXNoIikgLS0tLQogICAgICAgICBCbG9vbWJlcmcvVHJhZGluZ1ZpZXctc3R5bGU6IHRoZSB0ZXh0IGl0c2VsZiBicmllZmx5IHRha2VzIGFuIGFjY2VudAogICAgICAgICBjb2xvciB0aGVuIGZhZGVzIGJhY2sgdG8gdGhlIGRlZmF1bHQuIE5vIGJhY2tncm91bmQgdGludCwgbm8gbGF5b3V0CiAgICAgICAgIHNoaWZ0LCBubyB3ZWlnaHQgY2hhbmdlLiBSZWFkYWJsZSwgbW9kZXJuLCBzdWJ0bGUuCiAgICAgICAgIENvbnN1bWVycyBjYW4gb3ZlcnJpZGUgcGVyIGluc3RhbmNlOgogICAgICAgICAgIGRlZXMtdGFibGUjbXlUYWJsZSB7IC0tZGVlcy10YWJsZS1mbGFzaC1jb2xvcjogaHNsKDE0MiA3NiUgNDAlKTsgfQogICAgICAqLwogICAgICA6aG9zdCB7CiAgICAgICAgLS1kZWVzLXRhYmxlLWZsYXNoLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDMyIDk1JSA0NCUpIiwiaHNsKDQ1IDkzJSA2MiUpIil9OwogICAgICAgIC0tZGVlcy10YWJsZS1mbGFzaC1lYXNpbmc6IGN1YmljLWJlemllcigwLjIyLCAwLjYxLCAwLjM2LCAxKTsKICAgICAgfQoKICAgICAgLmlubmVyQ2VsbENvbnRhaW5lci5mbGFzaGluZyB7CiAgICAgICAgYW5pbWF0aW9uOiBkZWVzLXRhYmxlLWNlbGwtZmxhc2gKICAgICAgICAgICAgICAgICAgIHZhcigtLWRlZXMtdGFibGUtZmxhc2gtZHVyYXRpb24sIDkwMG1zKQogICAgICAgICAgICAgICAgICAgdmFyKC0tZGVlcy10YWJsZS1mbGFzaC1lYXNpbmcpOwogICAgICB9CgogICAgICAvKiBIb2xkIHRoZSBhY2NlbnQgY29sb3IgYnJpZWZseSwgdGhlbiBmYWRlIGJhY2sgdG8gdGhlIHRoZW1lJ3MgZGVmYXVsdAogICAgICAgICB0ZXh0IGNvbG9yLiBJbmhlcml0cyB0byBjaGlsZCB0ZXh0IGFuZCB0byBTVkcgaWNvbnMgdGhhdCB1c2UKICAgICAgICAgY3VycmVudENvbG9yLiBDZWxscyB3aXRoIGV4cGxpY2l0IGNvbG9yIG92ZXJyaWRlcyBpbiByZW5kZXJlcnMgYXJlCiAgICAgICAgIGludGVudGlvbmFsbHkgdW5hZmZlY3RlZC4gKi8KICAgICAgQGtleWZyYW1lcyBkZWVzLXRhYmxlLWNlbGwtZmxhc2ggewogICAgICAgIDAlLAogICAgICAgIDM1JSB7IGNvbG9yOiB2YXIoLS1kZWVzLXRhYmxlLWZsYXNoLWNvbG9yKTsgfQogICAgICAgIDEwMCUgeyBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOyB9CiAgICAgIH0KCiAgICAgIC8qIEJvcmRlci9iYWNrZ3JvdW5kIGZsYXNoIHZhcmlhbnQgZm9yIGNlbGxzIHdpdGggc3R5bGVkIGNvbnRlbnQKICAgICAgICAgKGJhZGdlcywgaWNvbnMsIGN1c3RvbSBjb21wb25lbnRzKSB3aGVyZSBhIHRleHQtY29sb3IgYW5pbWF0aW9uCiAgICAgICAgIHdvdWxkIGJlIGludmlzaWJsZS4gQWN0aXZhdGVkIHZpYSBmbGFzaEJvcmRlciBvbiBDb2x1bW4uICovCiAgICAgIC5pbm5lckNlbGxDb250YWluZXIuZmxhc2hpbmctYm9yZGVyIHsKICAgICAgICBhbmltYXRpb246IGRlZXMtdGFibGUtY2VsbC1mbGFzaC1ib3JkZXIKICAgICAgICAgICAgICAgICAgIHZhcigtLWRlZXMtdGFibGUtZmxhc2gtZHVyYXRpb24sIDkwMG1zKQogICAgICAgICAgICAgICAgICAgdmFyKC0tZGVlcy10YWJsZS1mbGFzaC1lYXNpbmcpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBkZWVzLXRhYmxlLWNlbGwtZmxhc2gtYm9yZGVyIHsKICAgICAgICAwJSwKICAgICAgICAzNSUgewogICAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMS41cHggdmFyKC0tZGVlcy10YWJsZS1mbGFzaC1jb2xvcik7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDQ1IDkzJSA2MiUgLyAwLjEwKSIsImhzbCg0NSA5MyUgNjIlIC8gMC4wOCkiKX07CiAgICAgICAgfQogICAgICAgIDEwMCUgewogICAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMS41cHggdHJhbnNwYXJlbnQ7CiAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CiAgICAgICAgLmlubmVyQ2VsbENvbnRhaW5lci5mbGFzaGluZyB7CiAgICAgICAgICBhbmltYXRpb246IG5vbmU7CiAgICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy10YWJsZS1mbGFzaC1jb2xvcik7CiAgICAgICAgfQogICAgICAgIC5pbm5lckNlbGxDb250YWluZXIuZmxhc2hpbmctYm9yZGVyIHsKICAgICAgICAgIGFuaW1hdGlvbjogbm9uZTsKICAgICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDEuNXB4IHZhcigtLWRlZXMtdGFibGUtZmxhc2gtY29sb3IpOwogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCg0NSA5MyUgNjIlIC8gMC4xMCkiLCJoc2woNDUgOTMlIDYyJSAvIDAuMDgpIil9OwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyogRGV2LXRpbWUgd2FybmluZyBiYW5uZXIgc2hvd24gd2hlbiBoaWdobGlnaHQtdXBkYXRlcz0iZmxhc2giIGJ1dAogICAgICAgICByb3dLZXkgaXMgbWlzc2luZy4gQ29uc3VtZXJzIHNob3VsZCBuZXZlciBzaGlwIHRoaXMgdG8gcHJvZHVjdGlvbi4gKi8KICAgICAgLmZsYXNoQ29uZmlnV2FybmluZyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIG1hcmdpbjogOHB4IDE2cHggMDsKICAgICAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMzggOTIlIDUwJSkiLCJoc2woNDggOTYlIDYzJSkiKX07CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCg0OCA5NiUgODklIC8gMC42KSIsImhzbCg0OCA5NiUgMzAlIC8gMC4xNSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMzIgODElIDI5JSkiLCJoc2woNDggOTYlIDgwJSkiKX07CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICB9CiAgICAgIC5mbGFzaENvbmZpZ1dhcm5pbmcgZGVlcy1pY29uIHsKICAgICAgICB3aWR0aDogMTRweDsKICAgICAgICBoZWlnaHQ6IDE0cHg7CiAgICAgICAgZmxleDogMCAwIGF1dG87CiAgICAgIH0KICAgICAgLmZsYXNoQ29uZmlnV2FybmluZyBjb2RlIHsKICAgICAgICBwYWRkaW5nOiAxcHggNHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTAwJSAvIDAuNikiLCJoc2woMCAwJSAwJSAvIDAuMykiKX07CiAgICAgICAgZm9udC1mYW1pbHk6ICR7TmF9OwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgfQoKICAgICAgLyogRWRpdGFibGUgY2VsbCBhZmZvcmRhbmNlcyAqLwogICAgICB0ZC5lZGl0YWJsZSB7CiAgICAgICAgY3Vyc29yOiB0ZXh0OwogICAgICB9CiAgICAgIHRkLmZvY3VzZWQgewogICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDUxLjIlIC8gMC42KSIsImhzbCgyMTcuMiA5MS4yJSA1OS44JSAvIDAuNikiKX07CiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7CiAgICAgIH0KICAgICAgdGQuZWRpdGluZ0NlbGwgewogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUgLyAwLjYpIiwiaHNsKDIxNy4yIDkxLjIlIDU5LjglIC8gMC42KSIpfTsKICAgICAgICBvdXRsaW5lLW9mZnNldDogLTJweDsKICAgICAgfQogICAgICB0ZC5lZGl0aW5nQ2VsbCAuaW5uZXJDZWxsQ29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7CiAgICAgIH0KICAgICAgdGQuZWRpdGluZ0NlbGwgZGVlcy1pbnB1dC10ZXh0LAogICAgICB0ZC5lZGl0aW5nQ2VsbCBkZWVzLWlucHV0LWNoZWNrYm94LAogICAgICB0ZC5lZGl0aW5nQ2VsbCBkZWVzLWlucHV0LWRyb3Bkb3duLAogICAgICB0ZC5lZGl0aW5nQ2VsbCBkZWVzLWlucHV0LWRhdGVwaWNrZXIsCiAgICAgIHRkLmVkaXRpbmdDZWxsIGRlZXMtaW5wdXQtdGFncyB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIC8qIGZpbHRlciByb3cgKi8KICAgICAgdGhlYWQgdHIuZmlsdGVyc1JvdyB0aCB7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHggMTJweCAxMnB4OwogICAgICB9CiAgICAgIHRoZWFkIHRyLmZpbHRlcnNSb3cgdGggaW5wdXRbdHlwZT0ndGV4dCddIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIHBhZGRpbmc6IDZweCA4cHg7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTAwJSkiLCJoc2woMCAwJSA5JSkiKX07CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgfQogICAgICAuYWN0aW9uc0NvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGdhcDogNHB4OwogICAgICB9CiAgICAgIAogICAgICAuYWN0aW9uIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuNCAxNi4zJSA0Ni45JSkiLCJoc2woMjE1IDIwLjIlIDY1LjElKSIpfTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5hY3Rpb246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDQwJSA5Ni4xJSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5JSkiLCJoc2woMCAwJSA5NSUpIil9OwogICAgICB9CgogICAgICAuYWN0aW9uOmFjdGl2ZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgNDAlIDk2LjElKSIsImhzbCgwIDAlIDExLjglKSIpfTsKICAgICAgfQogICAgICAKICAgICAgLmFjdGlvbiBkZWVzLWljb24gewogICAgICAgIHdpZHRoOiAxNnB4OwogICAgICAgIGhlaWdodDogMTZweDsKICAgICAgfQoKICAgICAgLmZvb3RlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAudGFibGVTdGF0aXN0aWNzIHsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICB9CgogICAgICAuZm9vdGVyQWN0aW9ucyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBnYXA6IDhweDsKICAgICAgfQoKICAgICAgLmZvb3RlckFjdGlvbnMgLmZvb3RlckFjdGlvbiB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNHB4OwogICAgICAgIHBhZGRpbmc6IDJweCA4cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNDYuOSUpIiwiaHNsKDIxNSAyMC4yJSA2NS4xJSkiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgfQoKICAgICAgLmZvb3RlckFjdGlvbnMgLmZvb3RlckFjdGlvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk1LjElKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDklKSIsImhzbCgwIDAlIDk1JSkiKX07CiAgICAgIH0KCiAgICAgIC5mb290ZXJBY3Rpb25zIC5mb290ZXJBY3Rpb24gZGVlcy1pY29uIHsKICAgICAgICB3aWR0aDogMTRweDsKICAgICAgICBoZWlnaHQ6IDE0cHg7CiAgICAgIH0KICBgXX0pO3ZhciBiaXQ9ZygoKT0+e3hoKCl9KTt2YXIgdml0PWcoKCk9PntvbmUoKX0pO3ZhciB4aXQ9ZygoKT0+e3duZSgpO2pldCgpfSk7dmFyIHlpdD1nKCgpPT57YXR0KCl9KTtmdW5jdGlvbiB3aXQocyxlKXtpZighZXx8ZS5sZW5ndGg9PT0wKXJldHVybltdO2xldCB0PXMoZVswXSk7cmV0dXJuIE9iamVjdC5rZXlzKHQpLm1hcChyPT4oe2tleTpyLGhlYWRlcjpyLHZhbHVlOmkobj0+cyhuKVtyXSwidmFsdWUiKX0pKX1mdW5jdGlvbiBDM2EocyxlLHQsYSl7bGV0IHI9KHN8fFtdKS5zbGljZSgpO2lmKCFlKXJldHVybiByO2xldCBuPXdpdCh0LGEpLG89bmV3IFNldChyLm1hcChsPT5TdHJpbmcobC5rZXkpKSk7Zm9yKGxldCBsIG9mIG4pby5oYXMoU3RyaW5nKGwua2V5KSl8fHIucHVzaChsKTtyZXR1cm4gcn1mdW5jdGlvbiBPaChzLGUsdCl7cmV0dXJuIGUudmFsdWU/ZS52YWx1ZShzKTpzW2Uua2V5XX1mdW5jdGlvbiBSWGEocyxlKXtpZihzPT1udWxsJiZlPT1udWxsKXJldHVybiAwO2lmKHM9PW51bGwpcmV0dXJuLTE7aWYoZT09bnVsbClyZXR1cm4gMTtpZih0eXBlb2Ygcz09Im51bWJlciImJnR5cGVvZiBlPT0ibnVtYmVyIilyZXR1cm4gczxlPy0xOnM+ZT8xOjA7bGV0IHQ9U3RyaW5nKHMpLnRvTG93ZXJDYXNlKCksYT1TdHJpbmcoZSkudG9Mb3dlckNhc2UoKTtyZXR1cm4gdDxhPy0xOnQ+YT8xOjB9ZnVuY3Rpb24gVDNhKHMsZSx0LGEscixuPSJ0YWJsZSIsbyl7bGV0IGw9cy5zbGljZSgpLHA9KGF8fCIiKS50cmltKCkudG9Mb3dlckNhc2UoKSxkPXJ8fHt9LHU9T2JqZWN0LmtleXMoZCkuZmlsdGVyKGI9PihkW2JdPz8iIikudHJpbSgpLmxlbmd0aD4wKTtpZigocHx8dS5sZW5ndGg+MCkmJihsPWwuZmlsdGVyKGI9Pntmb3IobGV0IHYgb2YgdSlpZihuPT09ImRhdGEiKXtsZXQgeD1iW3ZdLG09U3RyaW5nKHg/PyIiKS50b0xvd2VyQ2FzZSgpLGY9U3RyaW5nKGRbdl0pLnRvTG93ZXJDYXNlKCk7aWYoIW0uaW5jbHVkZXMoZikpcmV0dXJuITF9ZWxzZXtsZXQgeD1lLmZpbmQoTT0+U3RyaW5nKE0ua2V5KT09PXYpO2lmKCF4fHx4LmhpZGRlbnx8eC5maWx0ZXJhYmxlPT09ITEpY29udGludWU7bGV0IG09T2goYix4KSxmPVN0cmluZyhtPz8iIikudG9Mb3dlckNhc2UoKSx5PVN0cmluZyhkW3ZdKS50b0xvd2VyQ2FzZSgpO2lmKCFmLmluY2x1ZGVzKHkpKXJldHVybiExfWlmKHApe2lmKG8pcmV0dXJuISFvKGIpO2xldCB2PSExO2lmKG49PT0iZGF0YSIpe2ZvcihsZXQgeCBvZiBPYmplY3QudmFsdWVzKGIpKWlmKFN0cmluZyh4Pz8iIikudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhwKSl7dj0hMDticmVha319ZWxzZSBmb3IobGV0IHggb2YgZSl7aWYoeC5oaWRkZW4pY29udGludWU7bGV0IG09T2goYix4KTtpZihTdHJpbmcobT8/IiIpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocCkpe3Y9ITA7YnJlYWt9fWlmKCF2KXJldHVybiExfXJldHVybiEwfSkpLCF0fHx0Lmxlbmd0aD09PTApcmV0dXJuIGw7bGV0IGM9dC5tYXAoYj0+KHtkZXNjOmIsY29sOmUuZmluZCh2PT5TdHJpbmcodi5rZXkpPT09Yi5rZXkpfSkpLmZpbHRlcihiPT4hIWIuY29sKTtyZXR1cm4gYy5sZW5ndGg9PT0wfHxsLnNvcnQoKGIsdik9Pntmb3IobGV0e2Rlc2M6eCxjb2w6bX1vZiBjKXtsZXQgZj1SWGEoT2goYixtKSxPaCh2LG0pKTtpZihmIT09MClyZXR1cm4geC5kaXI9PT0iYXNjIj9mOi1mfXJldHVybiAwfSksbH12YXIgJDNhPWcoKCk9PntpKHdpdCwiY29tcHV0ZUNvbHVtbnNGcm9tRGlzcGxheUZ1bmN0aW9uIik7aShDM2EsImNvbXB1dGVFZmZlY3RpdmVDb2x1bW5zIik7aShPaCwiZ2V0Q2VsbFZhbHVlIik7aShSWGEsImNvbXBhcmVDZWxsVmFsdWVzIik7aShUM2EsImdldFZpZXdEYXRhIil9KTtmdW5jdGlvbiBaY2Uocyl7cmV0dXJuIHMuc3RhcnRzV2l0aCgnIicpJiZzLmVuZHNXaXRoKCciJyl8fHMuc3RhcnRzV2l0aCgiJyIpJiZzLmVuZHNXaXRoKCInIik/cy5zbGljZSgxLC0xKTpzfWZ1bmN0aW9uIE9YYShzKXtyZXR1cm4gcy5zcGxpdCgvXHMrT1JccysvaSkubWFwKGU9PmUudHJpbSgpKS5maWx0ZXIoQm9vbGVhbil9ZnVuY3Rpb24gRlhhKHMpe3JldHVybiBzLnNwbGl0KC9ccytBTkRccysvaSkubWFwKGU9PmUudHJpbSgpKS5maWx0ZXIoQm9vbGVhbil9ZnVuY3Rpb24gQlhhKHMpe2lmKCFzKXJldHVybiBudWxsO2xldCBlPSExLHQ9cy5tYXRjaCgvXlxzKihOT1Rccyt8LSlccyooLiopJC9pKTt0JiYoZT0hMCxzPXRbMl0pO2xldCBhPXMubWF0Y2goL14oW146XHNdKylccyo6XHMqXFsoLio/KVxzK1RPXHMrKC4qPylcXSQvaSk7aWYoYSlyZXR1cm57ZmllbGQ6YVsxXSxuZWdhdGU6ZSxyYW5nZTp7bG93ZXI6WmNlKGFbMl0pLnRvTG93ZXJDYXNlKCksdXBwZXI6WmNlKGFbM10pLnRvTG93ZXJDYXNlKCksaW5jbHVzaXZlOiEwfX07bGV0IHI9cy5tYXRjaCgvXihbXjpcc10rKVxzKjpccyooIlteIl0qInwnW14nXSonfFteIidcc10rKSQvKTtyZXR1cm4gcj97ZmllbGQ6clsxXSx2YWx1ZTpaY2UoclsyXSkudG9Mb3dlckNhc2UoKSxuZWdhdGU6ZX06cy5sZW5ndGg+MD97dmFsdWU6WmNlKHMpLnRvTG93ZXJDYXNlKCksbmVnYXRlOmV9Om51bGx9ZnVuY3Rpb24gSFhhKHMpe2lmKCFzKXJldHVybiBudWxsO2xldCBlPU9YYShzKS5tYXAodD0+KHt0ZXJtczpGWGEodCkubWFwKEJYYSkuZmlsdGVyKHI9PiEhciYmISFyLnZhbHVlKX0pKS5maWx0ZXIodD0+dC50ZXJtcy5sZW5ndGg+MCk7cmV0dXJuIGUubGVuZ3RoPT09MD9udWxsOntjbGF1c2VzOmV9fWZ1bmN0aW9uIEQzYShzLGUsdCl7bGV0IGE9SFhhKHMpO2lmKCFhKXJldHVybiBudWxsO2xldCByPW5ldyBNYXAodC5tYXAocD0+W1N0cmluZyhwLmtleSkscF0pKSxuPWkoKHAsZCk9PnA8ZD8tMTpwPmQ/MTowLCJjbXAiKSxvPWkocD0+e2xldCBkPVN0cmluZyhwPz8iIikudG9Mb3dlckNhc2UoKSx1PU51bWJlcihkKSxjPURhdGUucGFyc2UoZCk7cmV0dXJuIU51bWJlci5pc05hTih1KSYmZC50cmltKCkhPT0iIj97dDoibiIsdjp1fTpOdW1iZXIuaXNOYU4oYyk/e3Q6InMiLHY6ZH06e3Q6ImQiLHY6Y319LCJjb2VyY2UiKSxsPWkoKHAsZCx1KT0+e2xldCBjPW8ocCksYj1vKGQpLHY9byh1KTtpZihjLnQ9PT0icyImJmIudD09PSJzIiYmdi50PT09InMiKXtsZXQgbT1jLnY7cmV0dXJuIG4obSxiLnYpPj0wJiZuKG0sdi52KTw9MH1pZihjLnQ9PT0ibiImJmIudD09PSJuIiYmdi50PT09Im4iKXtsZXQgbT1jLnY7cmV0dXJuIG0+PWIudiYmbTw9di52fWlmKGMudD09PSJkIiYmYi50PT09ImQiJiZ2LnQ9PT0iZCIpe2xldCBtPWMudjtyZXR1cm4gbT49Yi52JiZtPD12LnZ9bGV0IHg9U3RyaW5nKHA/PyIiKS50b0xvd2VyQ2FzZSgpO3JldHVybiBuKHgsZCk+PTAmJm4oeCx1KTw9MH0sImluUmFuZ2UiKTtyZXR1cm4gcD0+e2ZvcihsZXQgZCBvZiBhLmNsYXVzZXMpe2xldCB1PSEwO2ZvcihsZXQgYyBvZiBkLnRlcm1zKXtsZXQgYj0hMTtpZihjLnJhbmdlJiZjLmZpZWxkKWlmKGU9PT0iZGF0YSIpYj1sKHBbYy5maWVsZF0sYy5yYW5nZS5sb3dlcixjLnJhbmdlLnVwcGVyKTtlbHNle2xldCB2PXIuZ2V0KGMuZmllbGQpO2lmKCF2fHx2LmhpZGRlbiliPSExO2Vsc2V7bGV0IHg9di52YWx1ZT92LnZhbHVlKHApOnBbdi5rZXldO2I9bCh4LGMucmFuZ2UubG93ZXIsYy5yYW5nZS51cHBlcil9fWVsc2UgaWYoYy5maWVsZCYmYy52YWx1ZSE9bnVsbClpZihlPT09ImRhdGEiKWI9U3RyaW5nKHBbYy5maWVsZF0/PyIiKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGMudmFsdWUpO2Vsc2V7bGV0IHY9ci5nZXQoYy5maWVsZCk7aWYoIXZ8fHYuaGlkZGVuPT09ITApYj0hMTtlbHNle2xldCB4PXYudmFsdWU/di52YWx1ZShwKTpwW3Yua2V5XTtiPVN0cmluZyh4Pz8iIikudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhjLnZhbHVlKX19ZWxzZSBjLnZhbHVlIT1udWxsJiYoZT09PSJkYXRhIj9iPU9iamVjdC52YWx1ZXMocCkuc29tZSh2PT5TdHJpbmcodj8/IiIpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoYy52YWx1ZSkpOmI9dC5zb21lKHY9PntpZih2LmhpZGRlbilyZXR1cm4hMTtsZXQgeD12LnZhbHVlP3YudmFsdWUocCk6cFt2LmtleV07cmV0dXJuIFN0cmluZyh4Pz8iIikudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhjLnZhbHVlKX0pKTtpZihjLm5lZ2F0ZSYmKGI9IWIpLCFiKXt1PSExO2JyZWFrfX1pZih1KXJldHVybiEwfXJldHVybiExfX12YXIgTDNhPWcoKCk9PntpKFpjZSwic3RyaXBRdW90ZXMiKTtpKE9YYSwic3BsaXRCeU9yIik7aShGWGEsInNwbGl0QnlBbmQiKTtpKEJYYSwicGFyc2VUZXJtIik7aShIWGEsInBhcnNlTHVjZW5lIik7aShEM2EsImNvbXBpbGVMdWNlbmVQcmVkaWNhdGUiKX0pO2Z1bmN0aW9uIHFYYShzKXtsZXQgZT1bInRoIiwic3QiLCJuZCIsInJkIl0sdD1zJTEwMDtyZXR1cm4gcysoZVsodC0yMCklMTBdfHxlW3RdfHxlWzBdKX12YXIgUmEsTXQsWGNlLGdpdD1nKCgpPT57cG8oKTtfM2EoKTtwZSgpO29yKCk7SjAoKTtrdCgpO1VhKCk7ejNhKCk7Yml0KCk7dml0KCk7eGl0KCk7aG5lKCk7eWl0KCk7JDNhKCk7TDNhKCk7cHQoKTtucigpO1JhPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxNdD1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH07aShxWGEsIm9yZGluYWxMYWJlbCIpO1hjZT0oKCk9PntsZXQgcz1bbmUoImRlZXMtdGFibGUiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXSxPLCQ9W10sRT1bXSxILGs9W10sUz1bXSxJLFA9W10sUj1bXSxLLFY9W10sVz1bXSxtZSxCPVtdLFU9W10saGUsRj1bXSxqPVtdLHVlLGxlPVtdLFE9W10saWUsdGU9W10sZWU9W10sa2UsWD1bXSxaPVtdLHllLHE9W10sQT1bXSxzZSxvZT1bXSxhZT1bXSxUZSxSZT1bXSxCZT1bXSxHZSxEZT1bXSxfZT1bXSxDZSx2ZT1bXSxiZT1bXSxFZSxqZT1bXSxXZT1bXSxzdCxNZT1bXSxnZT1bXSxJZSxjZT1bXSxkZT1bXSxMZSxLZT1bXSxZZT1bXSxvdCxVdD1bXSxadD1bXSxqYSxldD1bXSxidD1bXSx5YSxlcz1bXSxycz1bXSxwcyxucz1bXSx0aT1bXSxhaSx6ZT1bXSx4ZT1bXSxOZSx4dD1bXSxNYT1bXSxOcixmZT1bXSxyZT1bXSxTZSxPZT1bXSxKZT1bXSx6YSxkYT1bXSx3cz1bXSxraSxKaT1bXSxScj1bXSxTaSx2bj1bXSxyMT1bXSxvMSxuMT1bXSxsMT1bXSxjMSxkMT1bXSx1MT1bXTt2YXIgcDE9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNUYWJsZSIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBEPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6U3RyaW5nfSldLHA9W0woe3R5cGU6U3RyaW5nfSldLGM9W0woe3R5cGU6QXJyYXl9KV0seD1bTCh7dHlwZTpTdHJpbmd9KV0seT1bTCh7dHlwZTpTdHJpbmd9KV0sTj1bTCh7dHlwZTpCb29sZWFufSldLE89W0woe3R5cGU6Qm9vbGVhbn0pXSxIPVtMKHt0eXBlOlN0cmluZyxyZWZsZWN0OiEwfSldLEk9W0woe3R5cGU6Qm9vbGVhbn0pXSxLPVtMKHt0eXBlOkFycmF5fSldLG1lPVtMKHthdHRyaWJ1dGU6ITF9KV0saGU9W0woe2F0dHJpYnV0ZTohMX0pXSx1ZT1bTCh7dHlwZTpCb29sZWFufSldLGllPVtMKHthdHRyaWJ1dGU6ITF9KV0sa2U9W0woe2F0dHJpYnV0ZTohMX0pXSx5ZT1bTCh7dHlwZTpPYmplY3R9KV0sc2U9W0woe3R5cGU6Qm9vbGVhbixyZWZsZWN0OiEwLGF0dHJpYnV0ZToic2hvdy12ZXJ0aWNhbC1saW5lcyJ9KV0sVGU9W0woe3R5cGU6Qm9vbGVhbixyZWZsZWN0OiEwLGF0dHJpYnV0ZToic2hvdy1ob3Jpem9udGFsLWxpbmVzIn0pXSxHZT1bTCh7dHlwZTpCb29sZWFuLHJlZmxlY3Q6ITAsYXR0cmlidXRlOiJzaG93LWdyaWQifSldLENlPVtMKHthdHRyaWJ1dGU6ITF9KV0sRWU9W0woe3R5cGU6U3RyaW5nfSldLHN0PVtMKHthdHRyaWJ1dGU6ITF9KV0sSWU9W0woe3R5cGU6Qm9vbGVhbixhdHRyaWJ1dGU6InNob3ctY29sdW1uLWZpbHRlcnMifSldLExlPVtMKHt0eXBlOkJvb2xlYW4scmVmbGVjdDohMCxhdHRyaWJ1dGU6InNob3ctc2VsZWN0aW9uLWNoZWNrYm94In0pXSxvdD1bTCh7dHlwZTpCb29sZWFuLHJlZmxlY3Q6ITAsYXR0cmlidXRlOiJ2aXJ0dWFsaXplZCJ9KV0samE9W0woe3R5cGU6TnVtYmVyLGF0dHJpYnV0ZToidmlydHVhbC1vdmVyc2NhbiJ9KV0seWE9W0woe3R5cGU6U3RyaW5nLGF0dHJpYnV0ZToiaGlnaGxpZ2h0LXVwZGF0ZXMifSldLHBzPVtMKHt0eXBlOk51bWJlcixhdHRyaWJ1dGU6ImhpZ2hsaWdodC1kdXJhdGlvbiJ9KV0sYWk9W0woe3R5cGU6Qm9vbGVhbixyZWZsZWN0OiEwLGF0dHJpYnV0ZToiZml4ZWQtaGVpZ2h0In0pXSxOZT1bTCh7dHlwZTpTdHJpbmd9KV0sTnI9W0woe3R5cGU6U3RyaW5nfSldLFNlPVtMKHthdHRyaWJ1dGU6ITF9KV0semE9W1koKV0sa2k9W1koKV0sU2k9W1koKV0sbzE9W1koKV0sYzE9W1koKV0sUmEodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJoZWFkaW5nMSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4iaGVhZGluZzEiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5oZWFkaW5nMSwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULmhlYWRpbmcxPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sbyxsKSxSYSh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImhlYWRpbmcyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJoZWFkaW5nMiJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULmhlYWRpbmcyLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QuaGVhZGluZzI9R30sInNldCIpfSxtZXRhZGF0YTpEfSxkLHUpLFJhKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZGF0YSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4iZGF0YSJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULmRhdGEsImdldCIpLHNldDppKChULEcpPT57VC5kYXRhPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sYix2KSxSYSh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImtleSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ia2V5ImluIFQsImhhcyIpLGdldDppKFQ9PlQua2V5LCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1Qua2V5PUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sbSxmKSxSYSh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImxhYmVsIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJsYWJlbCJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULmxhYmVsLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QubGFiZWw9R30sInNldCIpfSxtZXRhZGF0YTpEfSxNLHopLFJhKHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZGlzYWJsZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+ImRpc2FibGVkImluIFQsImhhcyIpLGdldDppKFQ9PlQuZGlzYWJsZWQsImdldCIpLHNldDppKChULEcpPT57VC5kaXNhYmxlZD1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LEMsXyksUmEodGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJyZXF1aXJlZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4icmVxdWlyZWQiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5yZXF1aXJlZCwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULnJlcXVpcmVkPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sJCxFKSxSYSh0aGlzLG51bGwsSCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImRhdGFOYW1lIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJkYXRhTmFtZSJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULmRhdGFOYW1lLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QuZGF0YU5hbWU9R30sInNldCIpfSxtZXRhZGF0YTpEfSxrLFMpLFJhKHRoaXMsbnVsbCxJLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VhcmNoYWJsZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ic2VhcmNoYWJsZSJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULnNlYXJjaGFibGUsImdldCIpLHNldDppKChULEcpPT57VC5zZWFyY2hhYmxlPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sUCxSKSxSYSh0aGlzLG51bGwsSyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImRhdGFBY3Rpb25zIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJkYXRhQWN0aW9ucyJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULmRhdGFBY3Rpb25zLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QuZGF0YUFjdGlvbnM9R30sInNldCIpfSxtZXRhZGF0YTpEfSxWLFcpLFJhKHRoaXMsbnVsbCxtZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNvbHVtbnMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+ImNvbHVtbnMiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5jb2x1bW5zLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QuY29sdW1ucz1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LEIsVSksUmEodGhpcyxudWxsLGhlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicm93S2V5IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJyb3dLZXkiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5yb3dLZXksImdldCIpLHNldDppKChULEcpPT57VC5yb3dLZXk9R30sInNldCIpfSxtZXRhZGF0YTpEfSxGLGopLFJhKHRoaXMsbnVsbCx1ZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImF1Z21lbnRGcm9tRGlzcGxheUZ1bmN0aW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJhdWdtZW50RnJvbURpc3BsYXlGdW5jdGlvbiJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULmF1Z21lbnRGcm9tRGlzcGxheUZ1bmN0aW9uLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QuYXVnbWVudEZyb21EaXNwbGF5RnVuY3Rpb249R30sInNldCIpfSxtZXRhZGF0YTpEfSxsZSxRKSxSYSh0aGlzLG51bGwsaWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJkaXNwbGF5RnVuY3Rpb24iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+ImRpc3BsYXlGdW5jdGlvbiJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULmRpc3BsYXlGdW5jdGlvbiwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULmRpc3BsYXlGdW5jdGlvbj1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LHRlLGVlKSxSYSh0aGlzLG51bGwsa2Use2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJyZXZlcnNlRGlzcGxheUZ1bmN0aW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJyZXZlcnNlRGlzcGxheUZ1bmN0aW9uImluIFQsImhhcyIpLGdldDppKFQ9PlQucmV2ZXJzZURpc3BsYXlGdW5jdGlvbiwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULnJldmVyc2VEaXNwbGF5RnVuY3Rpb249R30sInNldCIpfSxtZXRhZGF0YTpEfSxYLFopLFJhKHRoaXMsbnVsbCx5ZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlbGVjdGVkRGF0YVJvdyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ic2VsZWN0ZWREYXRhUm93ImluIFQsImhhcyIpLGdldDppKFQ9PlQuc2VsZWN0ZWREYXRhUm93LCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1Quc2VsZWN0ZWREYXRhUm93PUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0scSxBKSxSYSh0aGlzLG51bGwsc2Use2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93VmVydGljYWxMaW5lcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ic2hvd1ZlcnRpY2FsTGluZXMiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5zaG93VmVydGljYWxMaW5lcywiZ2V0Iiksc2V0OmkoKFQsRyk9PntULnNob3dWZXJ0aWNhbExpbmVzPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sb2UsYWUpLFJhKHRoaXMsbnVsbCxUZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dIb3Jpem9udGFsTGluZXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+InNob3dIb3Jpem9udGFsTGluZXMiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5zaG93SG9yaXpvbnRhbExpbmVzLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1Quc2hvd0hvcml6b250YWxMaW5lcz1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LFJlLEJlKSxSYSh0aGlzLG51bGwsR2Use2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93R3JpZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ic2hvd0dyaWQiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5zaG93R3JpZCwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULnNob3dHcmlkPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sRGUsX2UpLFJhKHRoaXMsbnVsbCxDZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNvcnRCeSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ic29ydEJ5ImluIFQsImhhcyIpLGdldDppKFQ9PlQuc29ydEJ5LCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1Quc29ydEJ5PUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sdmUsYmUpLFJhKHRoaXMsbnVsbCxFZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImZpbHRlclRleHQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+ImZpbHRlclRleHQiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5maWx0ZXJUZXh0LCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QuZmlsdGVyVGV4dD1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LGplLFdlKSxSYSh0aGlzLG51bGwsc3Qse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjb2x1bW5GaWx0ZXJzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJjb2x1bW5GaWx0ZXJzImluIFQsImhhcyIpLGdldDppKFQ9PlQuY29sdW1uRmlsdGVycywiZ2V0Iiksc2V0OmkoKFQsRyk9PntULmNvbHVtbkZpbHRlcnM9R30sInNldCIpfSxtZXRhZGF0YTpEfSxNZSxnZSksUmEodGhpcyxudWxsLEllLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2hvd0NvbHVtbkZpbHRlcnMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+InNob3dDb2x1bW5GaWx0ZXJzImluIFQsImhhcyIpLGdldDppKFQ9PlQuc2hvd0NvbHVtbkZpbHRlcnMsImdldCIpLHNldDppKChULEcpPT57VC5zaG93Q29sdW1uRmlsdGVycz1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LGNlLGRlKSxSYSh0aGlzLG51bGwsTGUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93U2VsZWN0aW9uQ2hlY2tib3giLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+InNob3dTZWxlY3Rpb25DaGVja2JveCJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULnNob3dTZWxlY3Rpb25DaGVja2JveCwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULnNob3dTZWxlY3Rpb25DaGVja2JveD1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LEtlLFllKSxSYSh0aGlzLG51bGwsb3Qse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2aXJ0dWFsaXplZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4idmlydHVhbGl6ZWQiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC52aXJ0dWFsaXplZCwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULnZpcnR1YWxpemVkPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sVXQsWnQpLFJhKHRoaXMsbnVsbCxqYSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InZpcnR1YWxPdmVyc2NhbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4idmlydHVhbE92ZXJzY2FuImluIFQsImhhcyIpLGdldDppKFQ9PlQudmlydHVhbE92ZXJzY2FuLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QudmlydHVhbE92ZXJzY2FuPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sZXQsYnQpLFJhKHRoaXMsbnVsbCx5YSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImhpZ2hsaWdodFVwZGF0ZXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+ImhpZ2hsaWdodFVwZGF0ZXMiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5oaWdobGlnaHRVcGRhdGVzLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QuaGlnaGxpZ2h0VXBkYXRlcz1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LGVzLHJzKSxSYSh0aGlzLG51bGwscHMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJoaWdobGlnaHREdXJhdGlvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4iaGlnaGxpZ2h0RHVyYXRpb24iaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5oaWdobGlnaHREdXJhdGlvbiwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULmhpZ2hsaWdodER1cmF0aW9uPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sbnMsdGkpLFJhKHRoaXMsbnVsbCxhaSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImZpeGVkSGVpZ2h0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJmaXhlZEhlaWdodCJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULmZpeGVkSGVpZ2h0LCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QuZml4ZWRIZWlnaHQ9R30sInNldCIpfSxtZXRhZGF0YTpEfSx6ZSx4ZSksUmEodGhpcyxudWxsLE5lLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VhcmNoTW9kZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ic2VhcmNoTW9kZSJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULnNlYXJjaE1vZGUsImdldCIpLHNldDppKChULEcpPT57VC5zZWFyY2hNb2RlPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0seHQsTWEpLFJhKHRoaXMsbnVsbCxOcix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlbGVjdGlvbk1vZGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+InNlbGVjdGlvbk1vZGUiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5zZWxlY3Rpb25Nb2RlLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1Quc2VsZWN0aW9uTW9kZT1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LGZlLHJlKSxSYSh0aGlzLG51bGwsU2Use2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWxlY3RlZElkcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ic2VsZWN0ZWRJZHMiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5zZWxlY3RlZElkcywiZ2V0Iiksc2V0OmkoKFQsRyk9PntULnNlbGVjdGVkSWRzPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sT2UsSmUpLFJhKHRoaXMsbnVsbCx6YSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Il9fZm9jdXNlZENlbGwiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+Il9fZm9jdXNlZENlbGwiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5fX2ZvY3VzZWRDZWxsLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QuX19mb2N1c2VkQ2VsbD1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LGRhLHdzKSxSYSh0aGlzLG51bGwsa2kse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJfX2VkaXRpbmdDZWxsIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJfX2VkaXRpbmdDZWxsImluIFQsImhhcyIpLGdldDppKFQ9PlQuX19lZGl0aW5nQ2VsbCwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULl9fZWRpdGluZ0NlbGw9R30sInNldCIpfSxtZXRhZGF0YTpEfSxKaSxSciksUmEodGhpcyxudWxsLFNpLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiX19mbG9hdGluZ0FjdGl2ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4iX19mbG9hdGluZ0FjdGl2ZSJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULl9fZmxvYXRpbmdBY3RpdmUsImdldCIpLHNldDppKChULEcpPT57VC5fX2Zsb2F0aW5nQWN0aXZlPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sdm4scjEpLFJhKHRoaXMsbnVsbCxvMSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Il9fZmxhc2hpbmdDZWxscyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4iX19mbGFzaGluZ0NlbGxzImluIFQsImhhcyIpLGdldDppKFQ9PlQuX19mbGFzaGluZ0NlbGxzLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QuX19mbGFzaGluZ0NlbGxzPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sbjEsbDEpLFJhKHRoaXMsbnVsbCxjMSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Il9fdmlydHVhbFJhbmdlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJfX3ZpcnR1YWxSYW5nZSJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULl9fdmlydHVhbFJhbmdlLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QuX192aXJ0dWFsUmFuZ2U9R30sInNldCIpfSxtZXRhZGF0YTpEfSxkMSx1MSksUmEobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6RH0sbnVsbCx0KSxwMT1hPWUudmFsdWUsRCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpEfSl9c3RhdGljIGRlbW89UzNhO3N0YXRpYyBkZW1vR3JvdXBzPVsiRGF0YSBWaWV3Il07I2U9TXQodGhpcyxvLCJoZWFkaW5nIDEiKTtnZXQgaGVhZGluZzEoKXtyZXR1cm4gdGhpcy4jZX1zZXQgaGVhZGluZzEoRCl7dGhpcy4jZT1EfSN0PShNdCh0aGlzLGwpLE10KHRoaXMsZCwiaGVhZGluZyAyIikpO2dldCBoZWFkaW5nMigpe3JldHVybiB0aGlzLiN0fXNldCBoZWFkaW5nMihEKXt0aGlzLiN0PUR9I2E9KE10KHRoaXMsdSksTXQodGhpcyxiLFtdKSk7Z2V0IGRhdGEoKXtyZXR1cm4gdGhpcy4jYX1zZXQgZGF0YShEKXt0aGlzLiNhPUR9I3M9KE10KHRoaXMsdiksTXQodGhpcyxtLHZvaWQgMCkpO2dldCBrZXkoKXtyZXR1cm4gdGhpcy4jc31zZXQga2V5KEQpe3RoaXMuI3M9RH0jaT0oTXQodGhpcyxmKSxNdCh0aGlzLE0sdm9pZCAwKSk7Z2V0IGxhYmVsKCl7cmV0dXJuIHRoaXMuI2l9c2V0IGxhYmVsKEQpe3RoaXMuI2k9RH0jcj0oTXQodGhpcyx6KSxNdCh0aGlzLEMsITEpKTtnZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy4jcn1zZXQgZGlzYWJsZWQoRCl7dGhpcy4jcj1EfSNvPShNdCh0aGlzLF8pLE10KHRoaXMsJCwhMSkpO2dldCByZXF1aXJlZCgpe3JldHVybiB0aGlzLiNvfXNldCByZXF1aXJlZChEKXt0aGlzLiNvPUR9Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuZGF0YX1zZXQgdmFsdWUoRCl7fWNoYW5nZVN1YmplY3Q9KE10KHRoaXMsRSksbmV3IHV0LnNtYXJ0cngucnhqcy5TdWJqZWN0KTsjbj1NdCh0aGlzLGssdm9pZCAwKTtnZXQgZGF0YU5hbWUoKXtyZXR1cm4gdGhpcy4jbn1zZXQgZGF0YU5hbWUoRCl7dGhpcy4jbj1EfSNsPShNdCh0aGlzLFMpLE10KHRoaXMsUCwhMCkpO2dldCBzZWFyY2hhYmxlKCl7cmV0dXJuIHRoaXMuI2x9c2V0IHNlYXJjaGFibGUoRCl7dGhpcy4jbD1EfSNjPShNdCh0aGlzLFIpLE10KHRoaXMsVixbXSkpO2dldCBkYXRhQWN0aW9ucygpe3JldHVybiB0aGlzLiNjfXNldCBkYXRhQWN0aW9ucyhEKXt0aGlzLiNjPUR9I2Q9KE10KHRoaXMsVyksTXQodGhpcyxCLFtdKSk7Z2V0IGNvbHVtbnMoKXtyZXR1cm4gdGhpcy4jZH1zZXQgY29sdW1ucyhEKXt0aGlzLiNkPUR9I3U9KE10KHRoaXMsVSksTXQodGhpcyxGLHZvaWQgMCkpO2dldCByb3dLZXkoKXtyZXR1cm4gdGhpcy4jdX1zZXQgcm93S2V5KEQpe3RoaXMuI3U9RH0jcD0oTXQodGhpcyxqKSxNdCh0aGlzLGxlLCExKSk7Z2V0IGF1Z21lbnRGcm9tRGlzcGxheUZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuI3B9c2V0IGF1Z21lbnRGcm9tRGlzcGxheUZ1bmN0aW9uKEQpe3RoaXMuI3A9RH0jaD0oTXQodGhpcyxRKSxNdCh0aGlzLHRlLEQ9PkQpKTtnZXQgZGlzcGxheUZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuI2h9c2V0IGRpc3BsYXlGdW5jdGlvbihEKXt0aGlzLiNoPUR9I2Y9KE10KHRoaXMsZWUpLE10KHRoaXMsWCxEPT5EKSk7Z2V0IHJldmVyc2VEaXNwbGF5RnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4jZn1zZXQgcmV2ZXJzZURpc3BsYXlGdW5jdGlvbihEKXt0aGlzLiNmPUR9I209KE10KHRoaXMsWiksTXQodGhpcyxxLHZvaWQgMCkpO2dldCBzZWxlY3RlZERhdGFSb3coKXtyZXR1cm4gdGhpcy4jbX1zZXQgc2VsZWN0ZWREYXRhUm93KEQpe3RoaXMuI209RH0jZz0oTXQodGhpcyxBKSxNdCh0aGlzLG9lLCExKSk7Z2V0IHNob3dWZXJ0aWNhbExpbmVzKCl7cmV0dXJuIHRoaXMuI2d9c2V0IHNob3dWZXJ0aWNhbExpbmVzKEQpe3RoaXMuI2c9RH0jYj0oTXQodGhpcyxhZSksTXQodGhpcyxSZSwhMSkpO2dldCBzaG93SG9yaXpvbnRhbExpbmVzKCl7cmV0dXJuIHRoaXMuI2J9c2V0IHNob3dIb3Jpem9udGFsTGluZXMoRCl7dGhpcy4jYj1EfSN2PShNdCh0aGlzLEJlKSxNdCh0aGlzLERlLCEwKSk7Z2V0IHNob3dHcmlkKCl7cmV0dXJuIHRoaXMuI3Z9c2V0IHNob3dHcmlkKEQpe3RoaXMuI3Y9RH1maWxlcz0oTXQodGhpcyxfZSksW10pO2ZpbGVXZWFrTWFwPW5ldyBXZWFrTWFwO2RhdGFDaGFuZ2VTdWJqZWN0PW5ldyB1dC5zbWFydHJ4LnJ4anMuU3ViamVjdDsjeD1NdCh0aGlzLHZlLFtdKTtnZXQgc29ydEJ5KCl7cmV0dXJuIHRoaXMuI3h9c2V0IHNvcnRCeShEKXt0aGlzLiN4PUR9I3k9KE10KHRoaXMsYmUpLE10KHRoaXMsamUsIiIpKTtnZXQgZmlsdGVyVGV4dCgpe3JldHVybiB0aGlzLiN5fXNldCBmaWx0ZXJUZXh0KEQpe3RoaXMuI3k9RH0jdz0oTXQodGhpcyxXZSksTXQodGhpcyxNZSx7fSkpO2dldCBjb2x1bW5GaWx0ZXJzKCl7cmV0dXJuIHRoaXMuI3d9c2V0IGNvbHVtbkZpbHRlcnMoRCl7dGhpcy4jdz1EfSNrPShNdCh0aGlzLGdlKSxNdCh0aGlzLGNlLCExKSk7Z2V0IHNob3dDb2x1bW5GaWx0ZXJzKCl7cmV0dXJuIHRoaXMuI2t9c2V0IHNob3dDb2x1bW5GaWx0ZXJzKEQpe3RoaXMuI2s9RH0jUz0oTXQodGhpcyxkZSksTXQodGhpcyxLZSwhMSkpO2dldCBzaG93U2VsZWN0aW9uQ2hlY2tib3goKXtyZXR1cm4gdGhpcy4jU31zZXQgc2hvd1NlbGVjdGlvbkNoZWNrYm94KEQpe3RoaXMuI1M9RH0jXz0oTXQodGhpcyxZZSksTXQodGhpcyxVdCwhMSkpO2dldCB2aXJ0dWFsaXplZCgpe3JldHVybiB0aGlzLiNffXNldCB2aXJ0dWFsaXplZChEKXt0aGlzLiNfPUR9I009KE10KHRoaXMsWnQpLE10KHRoaXMsZXQsOCkpO2dldCB2aXJ0dWFsT3ZlcnNjYW4oKXtyZXR1cm4gdGhpcy4jTX1zZXQgdmlydHVhbE92ZXJzY2FuKEQpe3RoaXMuI009RH0jej0oTXQodGhpcyxidCksTXQodGhpcyxlcywibm9uZSIpKTtnZXQgaGlnaGxpZ2h0VXBkYXRlcygpe3JldHVybiB0aGlzLiN6fXNldCBoaWdobGlnaHRVcGRhdGVzKEQpe3RoaXMuI3o9RH0jQz0oTXQodGhpcyxycyksTXQodGhpcyxucyw5MDApKTtnZXQgaGlnaGxpZ2h0RHVyYXRpb24oKXtyZXR1cm4gdGhpcy4jQ31zZXQgaGlnaGxpZ2h0RHVyYXRpb24oRCl7dGhpcy4jQz1EfSNUPShNdCh0aGlzLHRpKSxNdCh0aGlzLHplLCExKSk7Z2V0IGZpeGVkSGVpZ2h0KCl7cmV0dXJuIHRoaXMuI1R9c2V0IGZpeGVkSGVpZ2h0KEQpe3RoaXMuI1Q9RH0jJD0oTXQodGhpcyx4ZSksTXQodGhpcyx4dCwidGFibGUiKSk7Z2V0IHNlYXJjaE1vZGUoKXtyZXR1cm4gdGhpcy4jJH1zZXQgc2VhcmNoTW9kZShEKXt0aGlzLiMkPUR9X19zZWFyY2hUZXh0U3ViPU10KHRoaXMsTWEpO19fc2VhcmNoTW9kZVN1YjsjRD1NdCh0aGlzLGZlLCJub25lIik7Z2V0IHNlbGVjdGlvbk1vZGUoKXtyZXR1cm4gdGhpcy4jRH1zZXQgc2VsZWN0aW9uTW9kZShEKXt0aGlzLiNEPUR9I0w9KE10KHRoaXMscmUpLE10KHRoaXMsT2UsbmV3IFNldCkpO2dldCBzZWxlY3RlZElkcygpe3JldHVybiB0aGlzLiNMfXNldCBzZWxlY3RlZElkcyhEKXt0aGlzLiNMPUR9X3Jvd0lkTWFwPShNdCh0aGlzLEplKSxuZXcgV2Vha01hcCk7X3Jvd0lkQ291bnRlcj0wO19fc2VsZWN0aW9uQW5jaG9ySWQ7I0U9TXQodGhpcyxkYSx2b2lkIDApO2dldCBfX2ZvY3VzZWRDZWxsKCl7cmV0dXJuIHRoaXMuI0V9c2V0IF9fZm9jdXNlZENlbGwoRCl7dGhpcy4jRT1EfSNQPShNdCh0aGlzLHdzKSxNdCh0aGlzLEppLHZvaWQgMCkpO2dldCBfX2VkaXRpbmdDZWxsKCl7cmV0dXJuIHRoaXMuI1B9c2V0IF9fZWRpdGluZ0NlbGwoRCl7dGhpcy4jUD1EfSNJPShNdCh0aGlzLFJyKSxNdCh0aGlzLHZuLCExKSk7Z2V0IF9fZmxvYXRpbmdBY3RpdmUoKXtyZXR1cm4gdGhpcy4jSX1zZXQgX19mbG9hdGluZ0FjdGl2ZShEKXt0aGlzLiNJPUR9I0E9KE10KHRoaXMscjEpLE10KHRoaXMsbjEsbmV3IE1hcCkpO2dldCBfX2ZsYXNoaW5nQ2VsbHMoKXtyZXR1cm4gdGhpcy4jQX1zZXQgX19mbGFzaGluZ0NlbGxzKEQpe3RoaXMuI0E9RH1fX3ByZXZTbmFwc2hvdD1NdCh0aGlzLGwxKTtfX2ZsYXNoQ2xlYXJUaW1lcjtfX2ZsYXNoVGljaz0wO19fZmxhc2hXYXJuZWROb1Jvd0tleT0hMTtfX21lbW9FZmZlY3RpdmVDb2xzO19fbWVtb1ZpZXdEYXRhO19fY29sdW1uc1NpemVkRm9yO19fcm93SGVpZ2h0PTM2O19fcm93SGVpZ2h0TWVhc3VyZWQ9ITE7I049TXQodGhpcyxkMSx7c3RhcnQ6MCxlbmQ6MH0pO2dldCBfX3ZpcnR1YWxSYW5nZSgpe3JldHVybiB0aGlzLiNOfXNldCBfX3ZpcnR1YWxSYW5nZShEKXt0aGlzLiNOPUR9Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuaGFzQXR0cmlidXRlKCJ0YWJpbmRleCIpfHx0aGlzLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCIwIiksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLl9faGFuZGxlSG9zdEtleWRvd24pfV9faGFuZGxlSG9zdEtleWRvd249KE10KHRoaXMsdTEpLEQ9PntsZXQgVD1ELmNvbXBvc2VkUGF0aD8uKCl8fFtdLEc9ITE7Zm9yKGxldCBQZSBvZiBUKXtsZXQgRmU9UGU/LnRhZ05hbWU7aWYoRmU9PT0iSU5QVVQifHxGZT09PSJURVhUQVJFQSJ8fFBlPy5pc0NvbnRlbnRFZGl0YWJsZSl7Rz0hMDticmVha319aWYoKEQubWV0YUtleXx8RC5jdHJsS2V5KSYmKEQua2V5PT09ImMifHxELmtleT09PSJDIikpe2lmKEcpcmV0dXJuO2xldCBQZT1bXTtpZih0aGlzLnNlbGVjdGVkSWRzLnNpemU+MClmb3IobGV0IEZlIG9mIHRoaXMuZGF0YSl0aGlzLnNlbGVjdGVkSWRzLmhhcyh0aGlzLmdldFJvd0lkKEZlKSkmJlBlLnB1c2goRmUpO2Vsc2UgdGhpcy5zZWxlY3RlZERhdGFSb3cmJlBlLnB1c2godGhpcy5zZWxlY3RlZERhdGFSb3cpO2lmKFBlLmxlbmd0aD09PTApcmV0dXJuO0QucHJldmVudERlZmF1bHQoKSx0aGlzLl9fd3JpdGVSb3dzQXNKc29uKFBlKTtyZXR1cm59aWYoIShHfHx0aGlzLl9fZWRpdGluZ0NlbGwpKXN3aXRjaChELmtleSl7Y2FzZSJBcnJvd0xlZnQiOkQucHJldmVudERlZmF1bHQoKSx0aGlzLm1vdmVGb2N1c2VkQ2VsbCgtMSwwLCExKTtyZXR1cm47Y2FzZSJBcnJvd1JpZ2h0IjpELnByZXZlbnREZWZhdWx0KCksdGhpcy5tb3ZlRm9jdXNlZENlbGwoMSwwLCExKTtyZXR1cm47Y2FzZSJBcnJvd1VwIjpELnByZXZlbnREZWZhdWx0KCksdGhpcy5tb3ZlRm9jdXNlZENlbGwoMCwtMSwhMSk7cmV0dXJuO2Nhc2UiQXJyb3dEb3duIjpELnByZXZlbnREZWZhdWx0KCksdGhpcy5tb3ZlRm9jdXNlZENlbGwoMCwxLCExKTtyZXR1cm47Y2FzZSJFbnRlciI6Y2FzZSJGMiI6e2lmKCF0aGlzLl9fZm9jdXNlZENlbGwpcmV0dXJuO2xldCBGZT0odGhpcy5fbGFzdFZpZXdEYXRhPz9bXSkuZmluZChYZT0+dGhpcy5nZXRSb3dJZChYZSk9PT10aGlzLl9fZm9jdXNlZENlbGwucm93SWQpO2lmKCFGZSlyZXR1cm47bGV0IFVlPXRoaXMuX19nZXRFZmZlY3RpdmVDb2x1bW5zKCkuZmluZChYZT0+U3RyaW5nKFhlLmtleSk9PT10aGlzLl9fZm9jdXNlZENlbGwuY29sS2V5KTtpZighVWV8fCF0aGlzLl9faXNDb2x1bW5FZGl0YWJsZShVZSkpcmV0dXJuO0QucHJldmVudERlZmF1bHQoKSx0aGlzLnN0YXJ0RWRpdGluZyhGZSxVZSk7cmV0dXJufWNhc2UiRXNjYXBlIjp0aGlzLl9fZm9jdXNlZENlbGwmJih0aGlzLl9fZm9jdXNlZENlbGw9dm9pZCAwLHRoaXMucmVxdWVzdFVwZGF0ZSgpKTtyZXR1cm47ZGVmYXVsdDpyZXR1cm59fSk7Y29weVNlbGVjdGlvbkFzSnNvbihEKXtsZXQgVD1bXTtpZih0aGlzLnNlbGVjdGVkSWRzLnNpemU+MClmb3IobGV0IEcgb2YgdGhpcy5kYXRhKXRoaXMuc2VsZWN0ZWRJZHMuaGFzKHRoaXMuZ2V0Um93SWQoRykpJiZULnB1c2goRyk7ZWxzZSBEP1QucHVzaChEKTp0aGlzLnNlbGVjdGVkRGF0YVJvdyYmVC5wdXNoKHRoaXMuc2VsZWN0ZWREYXRhUm93KTtULmxlbmd0aCE9PTAmJnRoaXMuX193cml0ZVJvd3NBc0pzb24oVCl9X193cml0ZVJvd3NBc0pzb24oRCl7dHJ5e2xldCBUPUpTT04uc3RyaW5naWZ5KEQsbnVsbCwyKTtuYXZpZ2F0b3IuY2xpcGJvYXJkPy53cml0ZVRleHQoVCl9Y2F0Y2h7fX1zdGF0aWMgc3R5bGVzPU0zYTtfX2dldERpc3BsYXlGdW5jdGlvblNoYXBlS2V5KCl7aWYoIXRoaXMuZGF0YXx8dGhpcy5kYXRhLmxlbmd0aD09PTApcmV0dXJuIiI7bGV0IEQ9dGhpcy5kaXNwbGF5RnVuY3Rpb24odGhpcy5kYXRhWzBdKT8/e307cmV0dXJuIE9iamVjdC5rZXlzKEQpLmpvaW4oIlwwIil9X19nZXRFZmZlY3RpdmVDb2x1bW5zKCl7bGV0IEQ9QXJyYXkuaXNBcnJheSh0aGlzLmNvbHVtbnMpJiZ0aGlzLmNvbHVtbnMubGVuZ3RoPjAsVD0hRHx8dGhpcy5hdWdtZW50RnJvbURpc3BsYXlGdW5jdGlvbj90aGlzLl9fZ2V0RGlzcGxheUZ1bmN0aW9uU2hhcGVLZXkoKToiIixHPXRoaXMuX19tZW1vRWZmZWN0aXZlQ29scztpZihHJiZHLmNvbHVtbnM9PT10aGlzLmNvbHVtbnMmJkcuYXVnbWVudD09PXRoaXMuYXVnbWVudEZyb21EaXNwbGF5RnVuY3Rpb24mJkcuZGlzcGxheUZ1bmN0aW9uPT09dGhpcy5kaXNwbGF5RnVuY3Rpb24mJkcuZGlzcGxheVNoYXBlS2V5PT09VClyZXR1cm4gRy5vdXQ7bGV0ICRlPUQ/QzNhKHRoaXMuY29sdW1ucyx0aGlzLmF1Z21lbnRGcm9tRGlzcGxheUZ1bmN0aW9uLHRoaXMuZGlzcGxheUZ1bmN0aW9uLHRoaXMuZGF0YSk6d2l0KHRoaXMuZGlzcGxheUZ1bmN0aW9uLHRoaXMuZGF0YSk7cmV0dXJuIHRoaXMuX19tZW1vRWZmZWN0aXZlQ29scz17Y29sdW1uczp0aGlzLmNvbHVtbnMsYXVnbWVudDp0aGlzLmF1Z21lbnRGcm9tRGlzcGxheUZ1bmN0aW9uLGRpc3BsYXlGdW5jdGlvbjp0aGlzLmRpc3BsYXlGdW5jdGlvbixkaXNwbGF5U2hhcGVLZXk6VCxvdXQ6JGV9LCRlfV9fZ2V0Vmlld0RhdGEoRCl7bGV0IFQ9dGhpcy5zZWFyY2hNb2RlPT09ImRhdGEiPyJkYXRhIjoidGFibGUiLEc9dGhpcy5fX21lbW9WaWV3RGF0YTtpZihHJiZHLmRhdGE9PT10aGlzLmRhdGEmJkcuc29ydEJ5PT09dGhpcy5zb3J0QnkmJkcuZmlsdGVyVGV4dD09PXRoaXMuZmlsdGVyVGV4dCYmRy5jb2x1bW5GaWx0ZXJzPT09dGhpcy5jb2x1bW5GaWx0ZXJzJiZHLnNlYXJjaE1vZGU9PT1UJiZHLmVmZmVjdGl2ZUNvbHVtbnM9PT1EKXJldHVybiBHLm91dDtsZXQgJGU9RDNhKHRoaXMuZmlsdGVyVGV4dCxULEQpLFBlPVQzYSh0aGlzLmRhdGEsRCx0aGlzLnNvcnRCeSx0aGlzLmZpbHRlclRleHQsdGhpcy5jb2x1bW5GaWx0ZXJzLFQsJGV8fHZvaWQgMCk7cmV0dXJuIHRoaXMuX19tZW1vVmlld0RhdGE9e2RhdGE6dGhpcy5kYXRhLHNvcnRCeTp0aGlzLnNvcnRCeSxmaWx0ZXJUZXh0OnRoaXMuZmlsdGVyVGV4dCxjb2x1bW5GaWx0ZXJzOnRoaXMuY29sdW1uRmlsdGVycyxzZWFyY2hNb2RlOlQsZWZmZWN0aXZlQ29sdW1uczpELG91dDpQZX0sUGV9cmVuZGVyKCl7bGV0IEQ9dGhpcy5fX2dldEVmZmVjdGl2ZUNvbHVtbnMoKSxUPXRoaXMuX19nZXRWaWV3RGF0YShEKSxHPXRoaXMuZ2V0QWN0aW9uc0ZvclR5cGUoImhlYWRlciIpLCRlPXRoaXMuZ2V0QWN0aW9uc0ZvclR5cGUoImZvb3RlciIpLFBlPXRoaXMuZ2V0QWN0aW9uc0ZvclR5cGUoImluUm93Iik7dGhpcy5fbGFzdFZpZXdEYXRhPVQ7bGV0IEZlPXRoaXMudmlydHVhbGl6ZWQmJlQubGVuZ3RoPjAsVmU9VCxVZT0wLFhlPTAsd3Q9MDtpZihGZSl7bGV0IFFlPXRoaXMuX192aXJ0dWFsUmFuZ2UsdmE9TWF0aC5tYXgoMCxRZS5zdGFydCksTnM9TWF0aC5taW4oVC5sZW5ndGgsUWUuZW5kfHwwKSx1YT1Ocz4wP05zOk1hdGgubWluKFQubGVuZ3RoLHRoaXMudmlydHVhbE92ZXJzY2FuKjIrMTYpO1VlPXZhLFZlPVQuc2xpY2UodmEsdWEpLFhlPXZhKnRoaXMuX19yb3dIZWlnaHQsd3Q9TWF0aC5tYXgoMCxULmxlbmd0aC11YSkqdGhpcy5fX3Jvd0hlaWdodH1yZXR1cm4gd2AKICAgICAgPGRlZXMtdGlsZT4KICAgICAgICA8ZGl2IHNsb3Q9ImhlYWRlciIgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nQ29udGFpbmVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZyBoZWFkaW5nMSI+JHt0aGlzLmxhYmVsfHx0aGlzLmhlYWRpbmcxfTwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nIGhlYWRpbmcyIj4ke3RoaXMuaGVhZGluZzJ9PC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlckFjdGlvbnMiPgogICAgICAgICAgICAke0cubWFwKFFlPT53YDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSJoZWFkZXJBY3Rpb24iCiAgICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+e1FlLmFjdGlvbkZ1bmMoe2l0ZW06dGhpcy5zZWxlY3RlZERhdGFSb3csdGFibGU6dGhpc30pfX0KICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAke1FlLmljb25OYW1lP3dgPGRlZXMtaWNvbiAuaWNvblNpemU9JHsxNH0gLmljb249JHtRZS5pY29uTmFtZX0+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICAgICAgICAke1FlLm5hbWV9YDpRZS5uYW1lfQogICAgICAgICAgICAgIDwvZGl2PmApfQogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZ1NlcGFyYXRpb24iPjwvZGl2PgogICAgICAgICR7dGhpcy5oaWdobGlnaHRVcGRhdGVzPT09ImZsYXNoIiYmIXRoaXMucm93S2V5P3dgPGRpdiBjbGFzcz0iZmxhc2hDb25maWdXYXJuaW5nIiByb2xlPSJhbGVydCI+CiAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6dHJpYW5nbGVBbGVydCJ9PjwvZGVlcy1pY29uPgogICAgICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICAgICAgPGNvZGU+aGlnaGxpZ2h0LXVwZGF0ZXM9ImZsYXNoIjwvY29kZT4gcmVxdWlyZXMKICAgICAgICAgICAgICAgIDxjb2RlPnJvd0tleTwvY29kZT4gdG8gYmUgc2V0LiBGbGFzaCBpcyBkaXNhYmxlZC4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PmA6d2BgfQogICAgICAgIDxkaXYgY2xhc3M9InNlYXJjaEdyaWQgaGlkZGVuIj4KICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQKICAgICAgICAgICAgLmxhYmVsPSR7Imx1Y2VuZSBzeW50YXggc2VhcmNoIn0KICAgICAgICAgICAgLmluZm9UZXh0PSR7YAogICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSBsdWNlbmUgc3ludGF4IHRvIHNlYXJjaCBmb3IgZGF0YSwgZS5nLjoKCiAgICAgICAgICAgICAgXGBcYFxgCiAgICAgICAgICAgICAgbmFtZTogImpvaG4iIEFORCBhZ2U6IDE4CiAgICAgICAgICAgICAgXGBcYFxgCgogICAgICAgICAgICBgfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgPGRlZXMtaW5wdXQtbXVsdGl0b2dnbGUKICAgICAgICAgICAgLmxhYmVsPSR7InNlYXJjaCBtb2RlIn0KICAgICAgICAgICAgLm9wdGlvbnM9JHtbInRhYmxlIiwiZGF0YSIsInNlcnZlciJdfQogICAgICAgICAgICAuc2VsZWN0ZWRPcHRpb249JHsidGFibGUifQogICAgICAgICAgICAuaW5mb1RleHQ9JHtgCiAgICAgICAgICAgICAgVGhlcmUgYXJlIHRocmVlIGJhc2ljIG1vZGVzOgoKICAgICAgICAgICAgICAqIHRhYmxlOiBvbmx5IHNlYXJjaGVzIGRhdGEgYWxyZWFkeSBpbiB0aGUgdGFibGUKICAgICAgICAgICAgICAqIGRhdGE6IHNlYXJjaGVzIG9yaWdpbmFsIGRhdGEsIGlnbm9yaW5nIHRhYmxlIHRyYW5zZm9ybXMKICAgICAgICAgICAgICAqIHNlcnZlcjogc2VhcmNoZXMgZGF0YSBvbiB0aGUgc2VydmVyCgogICAgICAgICAgICBgfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1tdWx0aXRvZ2dsZT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPCEtLSB0aGUgYWN0dWFsIHRhYmxlIC0tPgogICAgICAgIDxzdHlsZT48L3N0eWxlPgogICAgICAgICR7dGhpcy5kYXRhLmxlbmd0aD4wP3dgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFibGVTY3JvbGwiPgogICAgICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgJHt0aGlzLnJlbmRlckhlYWRlclJvd3MoRCl9CiAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgPHRib2R5CiAgICAgICAgICAgICAgICAgIEBjbGljaz0ke3RoaXMuX19vblRib2R5Q2xpY2t9CiAgICAgICAgICAgICAgICAgIEBkYmxjbGljaz0ke3RoaXMuX19vblRib2R5RGJsY2xpY2t9CiAgICAgICAgICAgICAgICAgIEBtb3VzZWRvd249JHt0aGlzLl9fb25UYm9keU1vdXNlZG93bn0KICAgICAgICAgICAgICAgICAgQGNvbnRleHRtZW51PSR7dGhpcy5fX29uVGJvZHlDb250ZXh0bWVudX0KICAgICAgICAgICAgICAgICAgQGRyYWdlbnRlcj0ke3RoaXMuX19vblRib2R5RHJhZ2VudGVyfQogICAgICAgICAgICAgICAgICBAZHJhZ2xlYXZlPSR7dGhpcy5fX29uVGJvZHlEcmFnbGVhdmV9CiAgICAgICAgICAgICAgICAgIEBkcmFnb3Zlcj0ke3RoaXMuX19vblRib2R5RHJhZ292ZXJ9CiAgICAgICAgICAgICAgICAgIEBkcm9wPSR7dGhpcy5fX29uVGJvZHlEcm9wfQogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAke0ZlJiZYZT4wP3dgPHRyIGFyaWEtaGlkZGVuPSJ0cnVlIiBzdHlsZT0iaGVpZ2h0OiR7WGV9cHgiPjx0ZD48L3RkPjwvdHI+YDp3YGB9CiAgICAgICAgICAgICAgICAgICR7VmkucmVwZWF0KFZlLFFlPT50aGlzLmdldFJvd0lkKFFlKSwoUWUsdmEpPT57bGV0IE5zPVVlK3ZhLHVhPXRoaXMuZ2V0Um93SWQoUWUpLEdzPXRoaXMuX19mbGFzaGluZ0NlbGxzLmdldCh1YSk7cmV0dXJuIHdgCiAgICAgICAgICAgICAgICAgICAgICA8dHIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1yb3ctaWR4PSR7TnN9CiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSIke1FlPT09dGhpcy5zZWxlY3RlZERhdGFSb3d8fHRoaXMuaXNSb3dTZWxlY3RlZChRZSk/InNlbGVjdGVkIjoiIn0iCiAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICR7dGhpcy5zaG93U2VsZWN0aW9uQ2hlY2tib3g/d2A8dGQgc3R5bGU9IndpZHRoOjQycHg7IHRleHQtYWxpZ246Y2VudGVyOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWVzLWlucHV0LWNoZWNrYm94CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPSR7dGhpcy5pc1Jvd1NlbGVjdGVkKFFlKX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbmV3VmFsdWU9JHtmdD0+e2Z0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuc2V0Um93U2VsZWN0ZWQoUWUsZnQuZGV0YWlsPT09ITApfX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1jaGVja2JveD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+YDp3YGB9CiAgICAgICAgICAgICAgICAgICAgICAgICR7RC5maWx0ZXIoZnQ9PiFmdC5oaWRkZW4pLm1hcCgoZnQsZXIpPT57bGV0IGtzPU9oKFFlLGZ0LHRoaXMuZGlzcGxheUZ1bmN0aW9uKSxocz1mdC5yZW5kZXJlcj9mdC5yZW5kZXJlcihrcyxRZSx7cm93SW5kZXg6TnMsY29sSW5kZXg6ZXIsY29sdW1uOmZ0fSk6a3MsX2k9U3RyaW5nKGZ0LmtleSksQTJlPSEhKGZ0LmVkaXRhYmxlfHxmdC5lZGl0b3IpLE4yZT10aGlzLl9fZm9jdXNlZENlbGw/LnJvd0lkPT09dWEmJnRoaXMuX19mb2N1c2VkQ2VsbD8uY29sS2V5PT09X2ksRDQ9dGhpcy5fX2VkaXRpbmdDZWxsPy5yb3dJZD09PXVhJiZ0aGlzLl9fZWRpdGluZ0NlbGw/LmNvbEtleT09PV9pLFd4PUdzPy5nZXQoX2kpLEw0PVd4IT09dm9pZCAwLFIyZT1MNCYmISFmdC5mbGFzaEJvcmRlcixPMmU9W0EyZT8iZWRpdGFibGUiOiIiLE4yZSYmIUQ0PyJmb2N1c2VkIjoiIixEND8iZWRpdGluZ0NlbGwiOiIiXS5maWx0ZXIoQm9vbGVhbikuam9pbigiICIpLEd4PXdgPGRpdgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ke0w0P1IyZT8iaW5uZXJDZWxsQ29udGFpbmVyIGZsYXNoaW5nLWJvcmRlciI6ImlubmVyQ2VsbENvbnRhaW5lciBmbGFzaGluZyI6ImlubmVyQ2VsbENvbnRhaW5lciJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7RDQ/dGhpcy5yZW5kZXJDZWxsRWRpdG9yKFFlLGZ0KTpoc30KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PmA7cmV0dXJuIHdgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSR7TzJlfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtY29sLWtleT0ke19pfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtMND9WaS5rZXllZChgJHt1YX06JHtfaX06JHtXeH1gLEd4KTpHeH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9KX0KICAgICAgICAgICAgICAgICAgICAgICAgJHsoKCk9PntpZihQZS5sZW5ndGg+MClyZXR1cm4gd2AKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJhY3Rpb25zQ29sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb25zQ29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7UGUubWFwKGZ0PT53YAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJhY3Rpb24iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+ZnQuYWN0aW9uRnVuYyh7aXRlbTpRZSx0YWJsZTp0aGlzfSl9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtmdC5pY29uTmFtZT93YCA8ZGVlcy1pY29uIC5pY29uPSR7ZnQuaWNvbk5hbWV9PjwvZGVlcy1pY29uPiBgOmZ0Lm5hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGApfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYH0pKCl9CiAgICAgICAgICAgICAgICAgICAgICA8L3RyPmB9KX0KICAgICAgICAgICAgICAgICAgJHtGZSYmd3Q+MD93YDx0ciBhcmlhLWhpZGRlbj0idHJ1ZSIgc3R5bGU9ImhlaWdodDoke3d0fXB4Ij48dGQ+PC90ZD48L3RyPmA6d2BgfQogICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsb2F0aW5nSGVhZGVyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgICAgICAgICAke3RoaXMuX19mbG9hdGluZ0FjdGl2ZT93YDx0YWJsZT4KICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgJHt0aGlzLnJlbmRlckhlYWRlclJvd3MoRCl9CiAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+YDp3YGB9CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGA6d2AgPGRpdiBjbGFzcz0ibm9EYXRhU2V0Ij5ObyBkYXRhIHNldCE8L2Rpdj4gYH0KICAgICAgICA8ZGl2IHNsb3Q9ImZvb3RlciIgY2xhc3M9ImZvb3RlciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWJsZVN0YXRpc3RpY3MiPgogICAgICAgICAgICAke3RoaXMuZGF0YS5sZW5ndGh9ICR7dGhpcy5kYXRhTmFtZXx8ImRhdGEgcm93cyJ9ICh0b3RhbCkgfAogICAgICAgICAgICAke3RoaXMuc2VsZWN0ZWREYXRhUm93P2AjICR7dGhpcy5kYXRhLmluZGV4T2YodGhpcy5zZWxlY3RlZERhdGFSb3cpKzF9YDoiTm8ifQogICAgICAgICAgICBzZWxlY3RlZAogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJBY3Rpb25zIj4KICAgICAgICAgICAgJHskZS5tYXAoUWU9PndgPGRpdgogICAgICAgICAgICAgICAgY2xhc3M9ImZvb3RlckFjdGlvbiIKICAgICAgICAgICAgICAgIEBjbGljaz0keygpPT57UWUuYWN0aW9uRnVuYyh7aXRlbTp0aGlzLnNlbGVjdGVkRGF0YVJvdyx0YWJsZTp0aGlzfSl9fQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICR7UWUuaWNvbk5hbWU/d2A8ZGVlcy1pY29uIC5pY29uU2l6ZT0kezE0fSAuaWNvbj0ke1FlLmljb25OYW1lfT48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgICAgICAgICR7UWUubmFtZX1gOlFlLm5hbWV9CiAgICAgICAgICAgICAgPC9kaXY+YCl9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXRpbGU+CiAgICBgfXJlbmRlckhlYWRlclJvd3MoRCl7cmV0dXJuIHdgCiAgICAgIDx0cj4KICAgICAgICAke3RoaXMuc2hvd1NlbGVjdGlvbkNoZWNrYm94P3dgCiAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDo0MnB4OyB0ZXh0LWFsaWduOmNlbnRlcjsiPgogICAgICAgICAgICAgICAgJHt0aGlzLnNlbGVjdGlvbk1vZGU9PT0ibXVsdGkiP3dgCiAgICAgICAgICAgICAgICAgICAgICA8ZGVlcy1pbnB1dC1jaGVja2JveAogICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU9JHt0aGlzLmFyZUFsbFZpc2libGVTZWxlY3RlZCgpfQogICAgICAgICAgICAgICAgICAgICAgICAuaW5kZXRlcm1pbmF0ZT0ke3RoaXMuaXNWaXNpYmxlU2VsZWN0aW9uSW5kZXRlcm1pbmF0ZSgpfQogICAgICAgICAgICAgICAgICAgICAgICBAbmV3VmFsdWU9JHtUPT57VC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLnNldFNlbGVjdFZpc2libGUoVC5kZXRhaWw9PT0hMCl9fQogICAgICAgICAgICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1jaGVja2JveD4KICAgICAgICAgICAgICAgICAgICBgOndgYH0KICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICBgOndgYH0KICAgICAgICAke0QuZmlsdGVyKFQ9PiFULmhpZGRlbikubWFwKFQ9PntsZXQgRz1ULnNvcnRhYmxlIT09ITEsJGU9dGhpcy5nZXRBcmlhU29ydChUKTtyZXR1cm4gd2AKICAgICAgICAgICAgICA8dGgKICAgICAgICAgICAgICAgIHJvbGU9ImNvbHVtbmhlYWRlciIKICAgICAgICAgICAgICAgIGFyaWEtc29ydD0keyRlfQogICAgICAgICAgICAgICAgc3R5bGU9IiR7Rz8iY3Vyc29yOiBwb2ludGVyOyI6IiJ9IgogICAgICAgICAgICAgICAgQGNsaWNrPSR7UGU9Pkc/dGhpcy5oYW5kbGVIZWFkZXJDbGljayhQZSxULEQpOm51bGx9CiAgICAgICAgICAgICAgICBAY29udGV4dG1lbnU9JHtQZT0+Rz90aGlzLm9wZW5IZWFkZXJDb250ZXh0TWVudShQZSxULEQpOm51bGx9CiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgJHtULmhlYWRlcj8/VC5rZXl9CiAgICAgICAgICAgICAgICAke3RoaXMucmVuZGVyU29ydEluZGljYXRvcihUKX0KICAgICAgICAgICAgICA8L3RoPmB9KX0KICAgICAgICAke3RoaXMuZGF0YUFjdGlvbnMmJnRoaXMuZGF0YUFjdGlvbnMubGVuZ3RoPjA/d2A8dGggY2xhc3M9ImFjdGlvbnNDb2wiPkFjdGlvbnM8L3RoPmA6d2BgfQogICAgICA8L3RyPgogICAgICAke3RoaXMuc2hvd0NvbHVtbkZpbHRlcnM/d2A8dHIgY2xhc3M9ImZpbHRlcnNSb3ciPgogICAgICAgICAgICAke3RoaXMuc2hvd1NlbGVjdGlvbkNoZWNrYm94P3dgPHRoIHN0eWxlPSJ3aWR0aDo0MnB4OyI+PC90aD5gOndgYH0KICAgICAgICAgICAgJHtELmZpbHRlcihUPT4hVC5oaWRkZW4pLm1hcChUPT57bGV0IEc9U3RyaW5nKFQua2V5KTtyZXR1cm4gVC5maWx0ZXJhYmxlPT09ITE/d2A8dGg+PC90aD5gOndgPHRoPgogICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IkZpbHRlci4uLiIgZGF0YS1jb2wta2V5PSR7R30gLnZhbHVlPSR7dGhpcy5jb2x1bW5GaWx0ZXJzW0ddfHwiIn0KICAgICAgICAgICAgICAgICAgICBAaW5wdXQ9JHskZT0+dGhpcy5zZXRDb2x1bW5GaWx0ZXIoRywkZS50YXJnZXQudmFsdWUpfSAvPgogICAgICAgICAgICAgICAgPC90aD5gfSl9CiAgICAgICAgICAgICR7dGhpcy5kYXRhQWN0aW9ucyYmdGhpcy5kYXRhQWN0aW9ucy5sZW5ndGg+MD93YDx0aD48L3RoPmA6d2BgfQogICAgICAgICAgPC90cj5gOndgYH0KICAgIGB9X19mbG9hdGluZ1Jlc2l6ZU9ic2VydmVyO19fZmxvYXRpbmdTY3JvbGxIYW5kbGVyO19fc2Nyb2xsQW5jZXN0b3JzPVtdO2dldCBfX2Zsb2F0aW5nSGVhZGVyRWwoKXtyZXR1cm4gdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIuZmxvYXRpbmdIZWFkZXIiKT8/bnVsbH1nZXQgX19yZWFsVGFibGVFbCgpe3JldHVybiB0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi50YWJsZVNjcm9sbCA+IHRhYmxlIik/P251bGx9Z2V0IF9fZmxvYXRpbmdUYWJsZUVsKCl7cmV0dXJuIHRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLmZsb2F0aW5nSGVhZGVyID4gdGFibGUiKT8/bnVsbH1fX2NvbGxlY3RTY3JvbGxBbmNlc3RvcnMoKXtsZXQgRD1bXSxUPXRoaXMsRz1pKCRlPT4kZT09PSJhdXRvInx8JGU9PT0ic2Nyb2xsInx8JGU9PT0ib3ZlcmxheSIsInNjcm9sbGlzaCIpO2Zvcig7VDspe2lmKFQgaW5zdGFuY2VvZiBFbGVtZW50KXtsZXQgUGU9Z2V0Q29tcHV0ZWRTdHlsZShUKSxGZT1HKFBlLm92ZXJmbG93WSksVmU9RyhQZS5vdmVyZmxvd1gpOyhGZXx8VmUpJiZELnB1c2goe3RhcmdldDpULHNjcm9sbHNZOkZlLHNjcm9sbHNYOlZlfSl9bGV0ICRlPVQuYXNzaWduZWRTbG90P1QuYXNzaWduZWRTbG90OlQucGFyZW50Tm9kZTskZT9UPSRlOlQuaG9zdD9UPVQuaG9zdDpUPW51bGx9cmV0dXJuIEQucHVzaCh7dGFyZ2V0OndpbmRvdyxzY3JvbGxzWTohMCxzY3JvbGxzWDohMH0pLER9X19nZXRTdGlja0NvbnRleHQoKXtsZXQgRD0wLFQ9MCxHPXdpbmRvdy5pbm5lcldpZHRoO2ZvcihsZXQgJGUgb2YgdGhpcy5fX3Njcm9sbEFuY2VzdG9ycyl7aWYoJGUudGFyZ2V0PT09d2luZG93KWNvbnRpbnVlO2xldCBQZT0kZS50YXJnZXQsRmU9UGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksVmU9Z2V0Q29tcHV0ZWRTdHlsZShQZSk7aWYoJGUuc2Nyb2xsc1kpe2xldCBVZT1wYXJzZUZsb2F0KFZlLmJvcmRlclRvcFdpZHRoKXx8MDtEPU1hdGgubWF4KEQsRmUudG9wK1VlKX1pZigkZS5zY3JvbGxzWCl7bGV0IFVlPXBhcnNlRmxvYXQoVmUuYm9yZGVyTGVmdFdpZHRoKXx8MCxYZT1wYXJzZUZsb2F0KFZlLmJvcmRlclJpZ2h0V2lkdGgpfHwwO1Q9TWF0aC5tYXgoVCxGZS5sZWZ0K1VlKSxHPU1hdGgubWluKEcsRmUucmlnaHQtWGUpfX1yZXR1cm57dG9wOkQsbGVmdDpULHJpZ2h0Okd9fXNldHVwRmxvYXRpbmdIZWFkZXIoKXtpZih0aGlzLnRlYXJkb3duRmxvYXRpbmdIZWFkZXIoKSx0aGlzLmZpeGVkSGVpZ2h0JiYhdGhpcy52aXJ0dWFsaXplZClyZXR1cm47bGV0IEQ9dGhpcy5fX3JlYWxUYWJsZUVsO2lmKCFEKXJldHVybjt0aGlzLl9fc2Nyb2xsQW5jZXN0b3JzPXRoaXMuX19jb2xsZWN0U2Nyb2xsQW5jZXN0b3JzKCk7bGV0IFQ9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIudGFibGVTY3JvbGwiKTtUJiZ0aGlzLl9fc2Nyb2xsQW5jZXN0b3JzLnVuc2hpZnQoe3RhcmdldDpULHNjcm9sbHNZOnRoaXMuZml4ZWRIZWlnaHQsc2Nyb2xsc1g6ITB9KSx0aGlzLl9fZmxvYXRpbmdSZXNpemVPYnNlcnZlcj1uZXcgUmVzaXplT2JzZXJ2ZXIoKCk9Pnt0aGlzLmZpeGVkSGVpZ2h0fHx0aGlzLl9fc3luY0Zsb2F0aW5nSGVhZGVyKCksdGhpcy52aXJ0dWFsaXplZCYmdGhpcy5fX2NvbXB1dGVWaXJ0dWFsUmFuZ2UoKX0pLHRoaXMuX19mbG9hdGluZ1Jlc2l6ZU9ic2VydmVyLm9ic2VydmUoRCksdGhpcy5fX2Zsb2F0aW5nU2Nyb2xsSGFuZGxlcj0oKT0+e3RoaXMuZml4ZWRIZWlnaHR8fHRoaXMuX19zeW5jRmxvYXRpbmdIZWFkZXIoKSx0aGlzLnZpcnR1YWxpemVkJiZ0aGlzLl9fY29tcHV0ZVZpcnR1YWxSYW5nZSgpfTtmb3IobGV0IEcgb2YgdGhpcy5fX3Njcm9sbEFuY2VzdG9ycylHLnRhcmdldC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMuX19mbG9hdGluZ1Njcm9sbEhhbmRsZXIse3Bhc3NpdmU6ITB9KTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLl9fZmxvYXRpbmdTY3JvbGxIYW5kbGVyLHtwYXNzaXZlOiEwfSksdGhpcy5maXhlZEhlaWdodHx8dGhpcy5fX3N5bmNGbG9hdGluZ0hlYWRlcigpLHRoaXMudmlydHVhbGl6ZWQmJnRoaXMuX19jb21wdXRlVmlydHVhbFJhbmdlKCl9dGVhcmRvd25GbG9hdGluZ0hlYWRlcigpe2lmKHRoaXMuX19mbG9hdGluZ1Jlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCksdGhpcy5fX2Zsb2F0aW5nUmVzaXplT2JzZXJ2ZXI9dm9pZCAwLHRoaXMuX19mbG9hdGluZ1Njcm9sbEhhbmRsZXIpe2ZvcihsZXQgVCBvZiB0aGlzLl9fc2Nyb2xsQW5jZXN0b3JzKVQudGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5fX2Zsb2F0aW5nU2Nyb2xsSGFuZGxlcik7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5fX2Zsb2F0aW5nU2Nyb2xsSGFuZGxlciksdGhpcy5fX2Zsb2F0aW5nU2Nyb2xsSGFuZGxlcj12b2lkIDB9dGhpcy5fX3Njcm9sbEFuY2VzdG9ycz1bXSx0aGlzLl9fZmxvYXRpbmdBY3RpdmU9ITE7bGV0IEQ9dGhpcy5fX2Zsb2F0aW5nSGVhZGVyRWw7RCYmRC5jbGFzc0xpc3QucmVtb3ZlKCJhY3RpdmUiKX1fX3RyYW5zZmVyRm9jdXNUb1JlYWxIZWFkZXIoKXtsZXQgRD10aGlzLl9fZmxvYXRpbmdIZWFkZXJFbDtpZighRClyZXR1cm47bGV0IFQ9dGhpcy5zaGFkb3dSb290Py5hY3RpdmVFbGVtZW50O2lmKCFUfHwhRC5jb250YWlucyhUKSlyZXR1cm47bGV0IEc9VC5nZXRBdHRyaWJ1dGUoImRhdGEtY29sLWtleSIpO2lmKCFHKXJldHVybjtsZXQgJGU9VCxQZT10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoYC50YWJsZVNjcm9sbCA+IHRhYmxlID4gdGhlYWQgaW5wdXRbZGF0YS1jb2wta2V5PSIke0NTUy5lc2NhcGUoRyl9Il1gKTtpZighUGV8fFBlPT09JGUpcmV0dXJuO2xldCBGZT0kZS5zZWxlY3Rpb25TdGFydCxWZT0kZS5zZWxlY3Rpb25FbmQsVWU9JGUuc2VsZWN0aW9uRGlyZWN0aW9uO1BlLmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSk7dHJ5e0ZlIT1udWxsJiZWZSE9bnVsbCYmUGUuc2V0U2VsZWN0aW9uUmFuZ2UoRmUsVmUsVWV8fHZvaWQgMCl9Y2F0Y2h7fX1fX3RyYW5zZmVyRm9jdXNUb0Zsb2F0aW5nSGVhZGVyKCl7bGV0IEQ9dGhpcy5fX2Zsb2F0aW5nSGVhZGVyRWw7aWYoIUR8fCF0aGlzLl9fZmxvYXRpbmdBY3RpdmUpcmV0dXJuO2xldCBUPXRoaXMuc2hhZG93Um9vdD8uYWN0aXZlRWxlbWVudDtpZighVClyZXR1cm47bGV0IEc9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIudGFibGVTY3JvbGwgPiB0YWJsZSA+IHRoZWFkIik7aWYoIUd8fCFHLmNvbnRhaW5zKFQpKXJldHVybjtsZXQgJGU9VC5nZXRBdHRyaWJ1dGUoImRhdGEtY29sLWtleSIpO2lmKCEkZSlyZXR1cm47bGV0IFBlPVQsRmU9RC5xdWVyeVNlbGVjdG9yKGBpbnB1dFtkYXRhLWNvbC1rZXk9IiR7Q1NTLmVzY2FwZSgkZSl9Il1gKTtpZighRmV8fEZlPT09UGUpcmV0dXJuO2xldCBWZT1QZS5zZWxlY3Rpb25TdGFydCxVZT1QZS5zZWxlY3Rpb25FbmQsWGU9UGUuc2VsZWN0aW9uRGlyZWN0aW9uO0ZlLmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSk7dHJ5e1ZlIT1udWxsJiZVZSE9bnVsbCYmRmUuc2V0U2VsZWN0aW9uUmFuZ2UoVmUsVWUsWGV8fHZvaWQgMCl9Y2F0Y2h7fX1fX2NvbXB1dGVWaXJ0dWFsUmFuZ2UoKXtpZighdGhpcy52aXJ0dWFsaXplZClyZXR1cm47bGV0IFQ9KHRoaXMuX2xhc3RWaWV3RGF0YT8/W10pLmxlbmd0aDtpZihUPT09MCl7KHRoaXMuX192aXJ0dWFsUmFuZ2Uuc3RhcnQhPT0wfHx0aGlzLl9fdmlydHVhbFJhbmdlLmVuZCE9PTApJiYodGhpcy5fX3ZpcnR1YWxSYW5nZT17c3RhcnQ6MCxlbmQ6MH0pO3JldHVybn1sZXQgRz10aGlzLl9fcmVhbFRhYmxlRWw7aWYoIUcpcmV0dXJuO2xldCAkZT1HLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFBlPTAsRmU9d2luZG93LmlubmVySGVpZ2h0O2ZvcihsZXQgZnQgb2YgdGhpcy5fX3Njcm9sbEFuY2VzdG9ycyl7aWYoZnQudGFyZ2V0PT09d2luZG93fHwhZnQuc2Nyb2xsc1kpY29udGludWU7bGV0IGVyPWZ0LnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxrcz1nZXRDb21wdXRlZFN0eWxlKGZ0LnRhcmdldCksaHM9cGFyc2VGbG9hdChrcy5ib3JkZXJUb3BXaWR0aCl8fDAsX2k9cGFyc2VGbG9hdChrcy5ib3JkZXJCb3R0b21XaWR0aCl8fDA7UGU9TWF0aC5tYXgoUGUsZXIudG9wK2hzKSxGZT1NYXRoLm1pbihGZSxlci5ib3R0b20tX2kpfWxldCBWZT1NYXRoLm1heCgxLHRoaXMuX19yb3dIZWlnaHQpLFVlPUcudEhlYWQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodD8/MCxYZT0kZS50b3ArVWUsd3Q9TWF0aC5tYXgoMCxQZS1YZSksUWU9TWF0aC5tYXgoMCxGZS1NYXRoLm1heChQZSxYZSkpLHZhPU1hdGguZmxvb3Iod3QvVmUpLE5zPU1hdGguY2VpbChRZS9WZSkrMSx1YT1NYXRoLm1heCgwLHZhLXRoaXMudmlydHVhbE92ZXJzY2FuKSxHcz1NYXRoLm1pbihULHZhK05zK3RoaXMudmlydHVhbE92ZXJzY2FuKTsodWEhPT10aGlzLl9fdmlydHVhbFJhbmdlLnN0YXJ0fHxHcyE9PXRoaXMuX192aXJ0dWFsUmFuZ2UuZW5kKSYmKHRoaXMuX192aXJ0dWFsUmFuZ2U9e3N0YXJ0OnVhLGVuZDpHc30pfV9fbWVhc3VyZVJvd0hlaWdodCgpe2lmKCF0aGlzLnZpcnR1YWxpemVkfHx0aGlzLl9fcm93SGVpZ2h0TWVhc3VyZWQpcmV0dXJuO2xldCBEPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigidGJvZHkiKTtpZighRClyZXR1cm47bGV0IFQ9QXJyYXkuZnJvbShELnJvd3MpLmZpbmQoJGU9PiRlLmhhc0F0dHJpYnV0ZSgiZGF0YS1yb3ctaWR4IikpO2lmKCFUKXJldHVybjtsZXQgRz1ULmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtHPjAmJih0aGlzLl9fcm93SGVpZ2h0PUcsdGhpcy5fX3Jvd0hlaWdodE1lYXN1cmVkPSEwKX1fX3N5bmNGbG9hdGluZ0hlYWRlcigpe2xldCBEPXRoaXMuX19mbG9hdGluZ0hlYWRlckVsLFQ9dGhpcy5fX3JlYWxUYWJsZUVsO2lmKCFEfHwhVClyZXR1cm47bGV0IEc9VC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwkZT10aGlzLl9fZ2V0U3RpY2tDb250ZXh0KCksUGU9VC50SGVhZD8ucm93cyxGZT0wO2lmKFBlKWZvcihsZXQgZnQ9MDtmdDxQZS5sZW5ndGg7ZnQrKylGZSs9UGVbZnRdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtsZXQgVmU9Ry5ib3R0b20tJGUudG9wLFVlPUcudG9wPCRlLnRvcCYmVmU+MDtpZihVZSE9PXRoaXMuX19mbG9hdGluZ0FjdGl2ZSl7aWYoVWV8fHRoaXMuX190cmFuc2ZlckZvY3VzVG9SZWFsSGVhZGVyKCksdGhpcy5fX2Zsb2F0aW5nQWN0aXZlPVVlLEQuY2xhc3NMaXN0LnRvZ2dsZSgiYWN0aXZlIixVZSksIVVlKXtELnN0eWxlLmhlaWdodD0iIjtsZXQgZnQ9dGhpcy5fX2Zsb2F0aW5nVGFibGVFbDtmdCYmKGZ0LnN0eWxlLnRyYW5zZm9ybT0iIil9aWYoVWUpe3RoaXMudXBkYXRlQ29tcGxldGUudGhlbigoKT0+e3RoaXMuX19zeW5jRmxvYXRpbmdIZWFkZXIoKSx0aGlzLl9fdHJhbnNmZXJGb2N1c1RvRmxvYXRpbmdIZWFkZXIoKX0pO3JldHVybn19aWYoIVVlKXJldHVybjtsZXQgWGU9dGhpcy5fX2Zsb2F0aW5nVGFibGVFbDtpZighWGUpcmV0dXJuO1hlLnN0eWxlLnRhYmxlTGF5b3V0PVQuc3R5bGUudGFibGVMYXlvdXR8fCJhdXRvIjtsZXQgd3Q9WGUudEhlYWQ/LnJvd3M7aWYoUGUmJnd0KWZvcihsZXQgZnQ9MDtmdDxQZS5sZW5ndGgmJmZ0PHd0Lmxlbmd0aDtmdCsrKXtsZXQgZXI9UGVbZnRdLmNlbGxzLGtzPXd0W2Z0XS5jZWxscztmb3IobGV0IGhzPTA7aHM8ZXIubGVuZ3RoJiZoczxrcy5sZW5ndGg7aHMrKyl7bGV0IF9pPWVyW2hzXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtrc1toc10uc3R5bGUud2lkdGg9YCR7X2l9cHhgLGtzW2hzXS5zdHlsZS5taW5XaWR0aD1gJHtfaX1weGAsa3NbaHNdLnN0eWxlLm1heFdpZHRoPWAke19pfXB4YH19bGV0IFFlPU1hdGgubWF4KEcubGVmdCwkZS5sZWZ0KSx2YT1NYXRoLm1pbihHLnJpZ2h0LCRlLnJpZ2h0KSxOcz1NYXRoLm1heCgwLHZhLVFlKTtELnN0eWxlLnRvcD1gJHskZS50b3B9cHhgLEQuc3R5bGUubGVmdD1gJHtRZX1weGAsRC5zdHlsZS53aWR0aD1gJHtOc31weGA7bGV0IHVhPU1hdGgubWluKEZlLFZlKSxHcz1GZS11YTtELnN0eWxlLmhlaWdodD1gJHt1YX1weGAsWGUuc3R5bGUud2lkdGg9YCR7Ry53aWR0aH1weGAsWGUuc3R5bGUubWFyZ2luTGVmdD1gJHtHLmxlZnQtUWV9cHhgLFhlLnN0eWxlLnRyYW5zZm9ybT1Hcz4wP2B0cmFuc2xhdGVZKC0ke0dzfXB4KWA6IiJ9YXN5bmMgZGlzY29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMudGVhcmRvd25GbG9hdGluZ0hlYWRlcigpLHRoaXMuX19mbGFzaENsZWFyVGltZXImJihjbGVhclRpbWVvdXQodGhpcy5fX2ZsYXNoQ2xlYXJUaW1lciksdGhpcy5fX2ZsYXNoQ2xlYXJUaW1lcj12b2lkIDApfWFzeW5jIGZpcnN0VXBkYXRlZCgpe313aWxsVXBkYXRlKEQpe2lmKEQuaGFzKCJkYXRhIikmJnRoaXMuc2VsZWN0ZWREYXRhUm93JiZ0aGlzLnJvd0tleSl7bGV0IHd0PXRoaXMuZ2V0Um93SWQodGhpcy5zZWxlY3RlZERhdGFSb3cpLFFlO2ZvcihsZXQgdmEgb2YgdGhpcy5kYXRhKWlmKHRoaXMuZ2V0Um93SWQodmEpPT09d3Qpe1FlPXZhO2JyZWFrfVFlP1FlIT09dGhpcy5zZWxlY3RlZERhdGFSb3cmJih0aGlzLnNlbGVjdGVkRGF0YVJvdz1RZSk6dGhpcy5zZWxlY3RlZERhdGFSb3c9dm9pZCAwfWlmKHRoaXMuaGlnaGxpZ2h0VXBkYXRlcyE9PSJmbGFzaCIpeyh0aGlzLl9fcHJldlNuYXBzaG90fHx0aGlzLl9fZmxhc2hpbmdDZWxscy5zaXplPjApJiYodGhpcy5fX3ByZXZTbmFwc2hvdD12b2lkIDAsdGhpcy5fX2ZsYXNoaW5nQ2VsbHMuc2l6ZT4wJiYodGhpcy5fX2ZsYXNoaW5nQ2VsbHM9bmV3IE1hcCksdGhpcy5fX2ZsYXNoQ2xlYXJUaW1lciYmKGNsZWFyVGltZW91dCh0aGlzLl9fZmxhc2hDbGVhclRpbWVyKSx0aGlzLl9fZmxhc2hDbGVhclRpbWVyPXZvaWQgMCkpO3JldHVybn1pZighdGhpcy5yb3dLZXkpe3RoaXMuX19mbGFzaFdhcm5lZE5vUm93S2V5fHwodGhpcy5fX2ZsYXNoV2FybmVkTm9Sb3dLZXk9ITAsY29uc29sZS53YXJuKCdbZGVlcy10YWJsZV0gaGlnaGxpZ2h0VXBkYXRlcz0iZmxhc2giIHJlcXVpcmVzIGByb3dLZXlgIHRvIGJlIHNldC4gRmxhc2ggaXMgZGlzYWJsZWQuIFNldCB0aGUgcm93S2V5IHByb3BlcnR5L2F0dHJpYnV0ZSB0byBhIHN0YWJsZSBpZGVudGlmaWVyIG9uIHlvdXIgcm93IGRhdGEgKGUuZy4gYHJvd0tleT0iaWQiYCkuJykpO3JldHVybn1pZighRC5oYXMoImRhdGEiKSlyZXR1cm47bGV0IEc9dGhpcy5fX2dldEVmZmVjdGl2ZUNvbHVtbnMoKS5maWx0ZXIod3Q9PiF3dC5oaWRkZW4pLCRlPW5ldyBNYXAoRy5tYXAod3Q9PltTdHJpbmcod3Qua2V5KSx3dF0pKSxQZT1uZXcgTWFwLEZlPW5ldyBNYXA7Zm9yKGxldCB3dCBvZiB0aGlzLmRhdGEpe2xldCBRZT10aGlzLmdldFJvd0lkKHd0KSx2YT1uZXcgTWFwO2ZvcihsZXQgdWEgb2YgRyl2YS5zZXQoU3RyaW5nKHVhLmtleSksT2god3QsdWEsdGhpcy5kaXNwbGF5RnVuY3Rpb24pKTtQZS5zZXQoUWUsdmEpO2xldCBOcz10aGlzLl9fcHJldlNuYXBzaG90Py5nZXQoUWUpO2lmKE5zKWZvcihsZXRbdWEsR3Ndb2YgdmEpe2xldCBmdD1Ocy5nZXQodWEpLGVyPSRlLmdldCh1YSksa3M7aWYoZXI/LmZsYXNoQ29tcGFyZT9rcz1lci5mbGFzaENvbXBhcmUoZnQsR3MpOkdzIT1udWxsJiZ0eXBlb2YgR3M9PSJvYmplY3QiP2tzPSExOmtzPWZ0IT09R3Msa3Mpe2lmKHRoaXMuX19lZGl0aW5nQ2VsbCYmdGhpcy5fX2VkaXRpbmdDZWxsLnJvd0lkPT09UWUmJnRoaXMuX19lZGl0aW5nQ2VsbC5jb2xLZXk9PT11YSljb250aW51ZTtsZXQgaHM9RmUuZ2V0KFFlKTtoc3x8KGhzPW5ldyBTZXQsRmUuc2V0KFFlLGhzKSksaHMuYWRkKHVhKX19fWxldCBWZT0hIXRoaXMuX19wcmV2U25hcHNob3Q7aWYodGhpcy5fX3ByZXZTbmFwc2hvdD1QZSwhVmV8fEZlLnNpemU9PT0wKXJldHVybjtsZXQgVWU9Kyt0aGlzLl9fZmxhc2hUaWNrLFhlPW5ldyBNYXAodGhpcy5fX2ZsYXNoaW5nQ2VsbHMpO2ZvcihsZXRbd3QsUWVdb2YgRmUpe2xldCB2YT1uZXcgTWFwKFhlLmdldCh3dCk/P1tdKTtmb3IobGV0IE5zIG9mIFFlKXZhLnNldChOcyxVZSk7WGUuc2V0KHd0LHZhKX10aGlzLl9fZmxhc2hpbmdDZWxscz1YZSx0aGlzLl9fZmxhc2hDbGVhclRpbWVyJiZjbGVhclRpbWVvdXQodGhpcy5fX2ZsYXNoQ2xlYXJUaW1lciksdGhpcy5fX2ZsYXNoQ2xlYXJUaW1lcj1zZXRUaW1lb3V0KCgpPT57dGhpcy5fX2ZsYXNoaW5nQ2VsbHM9bmV3IE1hcCx0aGlzLl9fZmxhc2hDbGVhclRpbWVyPXZvaWQgMH0sTWF0aC5tYXgoMCx0aGlzLmhpZ2hsaWdodER1cmF0aW9uKSl9YXN5bmMgdXBkYXRlZChEKXtzdXBlci51cGRhdGVkKEQpO2xldCBUPXRoaXMuX19nZXRFZmZlY3RpdmVDb2x1bW5zKCksRz10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoInRhYmxlIik/P251bGwsJGU9dGhpcy5nZXRBY3Rpb25zRm9yVHlwZSgiaW5Sb3ciKS5sZW5ndGg7RC5oYXMoImhpZ2hsaWdodER1cmF0aW9uIikmJnRoaXMuc3R5bGUuc2V0UHJvcGVydHkoIi0tZGVlcy10YWJsZS1mbGFzaC1kdXJhdGlvbiIsYCR7dGhpcy5oaWdobGlnaHREdXJhdGlvbn1tc2ApO2xldCBQZT0hIUcmJighdGhpcy5fX2NvbHVtbnNTaXplZEZvcnx8dGhpcy5fX2NvbHVtbnNTaXplZEZvci5lZmZlY3RpdmVDb2x1bW5zIT09VHx8dGhpcy5fX2NvbHVtbnNTaXplZEZvci5zaG93U2VsZWN0aW9uQ2hlY2tib3ghPT10aGlzLnNob3dTZWxlY3Rpb25DaGVja2JveHx8dGhpcy5fX2NvbHVtbnNTaXplZEZvci5pblJvd0FjdGlvbkNvdW50IT09JGV8fHRoaXMuX19jb2x1bW5zU2l6ZWRGb3IudGFibGUhPT1HKTtHJiZQZSYmKHRoaXMuX19jb2x1bW5zU2l6ZWRGb3I9e2VmZmVjdGl2ZUNvbHVtbnM6VCxzaG93U2VsZWN0aW9uQ2hlY2tib3g6dGhpcy5zaG93U2VsZWN0aW9uQ2hlY2tib3gsaW5Sb3dBY3Rpb25Db3VudDokZSx0YWJsZTpHfSx0aGlzLmRldGVybWluZUNvbHVtbldpZHRocygpLHRoaXMuX19yb3dIZWlnaHRNZWFzdXJlZD0hMSksdGhpcy52aXJ0dWFsaXplZCYmKHRoaXMuX19tZWFzdXJlUm93SGVpZ2h0KCksdGhpcy5fX2NvbXB1dGVWaXJ0dWFsUmFuZ2UoKSksKEQuaGFzKCJmaXhlZEhlaWdodCIpfHxELmhhcygidmlydHVhbGl6ZWQiKXx8RC5oYXMoImRhdGEiKXx8RC5oYXMoImNvbHVtbnMiKXx8IXRoaXMuX19mbG9hdGluZ1Njcm9sbEhhbmRsZXIpJiYoKCF0aGlzLmZpeGVkSGVpZ2h0fHx0aGlzLnZpcnR1YWxpemVkKSYmdGhpcy5kYXRhLmxlbmd0aD4wP3RoaXMuc2V0dXBGbG9hdGluZ0hlYWRlcigpOnRoaXMudGVhcmRvd25GbG9hdGluZ0hlYWRlcigpKSwhdGhpcy5maXhlZEhlaWdodCYmdGhpcy5kYXRhLmxlbmd0aD4wJiYodGhpcy5fX2Zsb2F0aW5nQWN0aXZlfHxQZSkmJnRoaXMuX19zeW5jRmxvYXRpbmdIZWFkZXIoKSx0aGlzLnNlYXJjaGFibGUmJih0aGlzLmRhdGFBY3Rpb25zLmZpbmQoVmU9PlZlLnR5cGU/LmluY2x1ZGVzKCJoZWFkZXIiKSYmVmUubmFtZT09PSJTZWFyY2giKXx8KHRoaXMuZGF0YUFjdGlvbnMudW5zaGlmdCh7bmFtZToiU2VhcmNoIixpY29uTmFtZToibHVjaWRlOlNlYXJjaCIsdHlwZTpbImhlYWRlciJdLGFjdGlvbkZ1bmM6aShhc3luYygpPT57Y29uc29sZS5sb2coIm9wZW4gc2VhcmNoIiksdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5zZWFyY2hHcmlkIikuY2xhc3NMaXN0LnRvZ2dsZSgiaGlkZGVuIil9LCJhY3Rpb25GdW5jIil9KSxjb25zb2xlLmxvZyh0aGlzLmRhdGFBY3Rpb25zKSx0aGlzLnJlcXVlc3RVcGRhdGUoKSksdGhpcy53aXJlU2VhcmNoSW5wdXRzKCkpfV9fZGVib3VuY2VUaW1lcjtkZWJvdW5jZVJ1bihELFQ9MjAwKXt0aGlzLl9fZGVib3VuY2VUaW1lciYmY2xlYXJUaW1lb3V0KHRoaXMuX19kZWJvdW5jZVRpbWVyKSx0aGlzLl9fZGVib3VuY2VUaW1lcj1zZXRUaW1lb3V0KEQsVCl9d2lyZVNlYXJjaElucHV0cygpe2xldCBEPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLnNlYXJjaEdyaWQgZGVlcy1pbnB1dC10ZXh0IiksVD10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5zZWFyY2hHcmlkIGRlZXMtaW5wdXQtbXVsdGl0b2dnbGUiKTtEJiYhdGhpcy5fX3NlYXJjaFRleHRTdWImJih0aGlzLl9fc2VhcmNoVGV4dFN1Yj1ELmNoYW5nZVN1YmplY3Quc3Vic2NyaWJlKEc9PntsZXQgJGU9Rz8udmFsdWU/PyIiO3RoaXMuZGVib3VuY2VSdW4oKCk9Pnt0aGlzLnNlYXJjaE1vZGU9PT0ic2VydmVyIj90aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJzZWFyY2hSZXF1ZXN0Iix7ZGV0YWlsOntxdWVyeTokZSxtb2RlOiJzZXJ2ZXIifSxidWJibGVzOiEwfSkpOnRoaXMuc2V0RmlsdGVyVGV4dCgkZSl9KX0pKSxUJiYhdGhpcy5fX3NlYXJjaE1vZGVTdWImJih0aGlzLl9fc2VhcmNoTW9kZVN1Yj1ULmNoYW5nZVN1YmplY3Quc3Vic2NyaWJlKEc9PntsZXQgJGU9Rz8uc2VsZWN0ZWRPcHRpb258fEc/LnZhbHVlfHwidGFibGUiO2lmKCRlPT09InRhYmxlInx8JGU9PT0iZGF0YSJ8fCRlPT09InNlcnZlciIpe3RoaXMuc2VhcmNoTW9kZT0kZTtsZXQgUGU9RD8udmFsdWU/PyIiO3RoaXMuZGVib3VuY2VSdW4oKCk9Pnt0aGlzLnNlYXJjaE1vZGU9PT0ic2VydmVyIj90aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJzZWFyY2hSZXF1ZXN0Iix7ZGV0YWlsOntxdWVyeTpQZSxtb2RlOiJzZXJ2ZXIifSxidWJibGVzOiEwfSkpOnRoaXMuc2V0RmlsdGVyVGV4dChQZSl9KX19KSl9YXN5bmMgZGV0ZXJtaW5lQ29sdW1uV2lkdGhzKCl7YXdhaXQoYXdhaXQgdGhpcy5kb210b29sc1Byb21pc2UpLmNvbnZlbmllbmNlLnNtYXJ0ZGVsYXkuZGVsYXlGb3IoMCk7bGV0IFQ9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoInRhYmxlIik7aWYoIVQpcmV0dXJuO2xldCBHPVQucm93c1swXS5jZWxscywkZT1pKGFzeW5jKFBlLEZlPSExKT0+e2xldCBWZT1tdC5kZWZlcigpLFVlPUdbUGVdLFhlPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKFVlKS53aWR0aDtpZihVZS50ZXh0Q29udGVudC5pbmNsdWRlcygiQWN0aW9ucyIpKXtsZXQgd3Q9dGhpcy5kYXRhQWN0aW9ucy5maWx0ZXIoUWU9PlFlLnR5cGU/LmluY2x1ZGVzKCJpblJvdyIpKS5sZW5ndGgqMzY7VWUuc3R5bGUud2lkdGg9YCR7TWF0aC5tYXgod3QsNjgpfXB4YH1lbHNlIFVlLnN0eWxlLndpZHRoPVhlO0ZlJiYocmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57VmUucmVzb2x2ZSgpfSksYXdhaXQgVmUucHJvbWlzZSl9LCJoYW5kbGVDb2x1bW5CeUluZGV4Iik7R1tHLmxlbmd0aC0xXS50ZXh0Q29udGVudC5pbmNsdWRlcygiQWN0aW9ucyIpJiZhd2FpdCAkZShHLmxlbmd0aC0xLCEwKTtmb3IobGV0IFBlPTA7UGU8Ry5sZW5ndGg7UGUrKylHW1BlXS50ZXh0Q29udGVudC5pbmNsdWRlcygiQWN0aW9ucyIpfHxhd2FpdCAkZShQZSk7VC5zdHlsZS50YWJsZUxheW91dD0iZml4ZWQifWdldFNvcnREZXNjcmlwdG9yKEQpe3JldHVybiB0aGlzLnNvcnRCeS5maW5kKFQ9PlQua2V5PT09RCl9Z2V0U29ydFByaW9yaXR5KEQpe3JldHVybiB0aGlzLnNvcnRCeS5maW5kSW5kZXgoVD0+VC5rZXk9PT1EKX1zZXRTb3J0KEQsVCl7dGhpcy5zb3J0Qnk9W3trZXk6RCxkaXI6VH1dLHRoaXMuZW1pdFNvcnRDaGFuZ2UoKSx0aGlzLnJlcXVlc3RVcGRhdGUoKX1hZGRTb3J0QXQoRCxULEcpe2xldCAkZT10aGlzLnNvcnRCeS5maWx0ZXIoRmU9PkZlLmtleSE9PUQpLFBlPU1hdGgubWF4KDAsTWF0aC5taW4oVCwkZS5sZW5ndGgpKTskZS5zcGxpY2UoUGUsMCx7a2V5OkQsZGlyOkd9KSx0aGlzLnNvcnRCeT0kZSx0aGlzLmVtaXRTb3J0Q2hhbmdlKCksdGhpcy5yZXF1ZXN0VXBkYXRlKCl9YXBwZW5kU29ydChELFQpe2xldCBHPXRoaXMuc29ydEJ5LmZpbHRlcigkZT0+JGUua2V5IT09RCk7Ry5wdXNoKHtrZXk6RCxkaXI6VH0pLHRoaXMuc29ydEJ5PUcsdGhpcy5lbWl0U29ydENoYW5nZSgpLHRoaXMucmVxdWVzdFVwZGF0ZSgpfXJlbW92ZVNvcnQoRCl7dGhpcy5zb3J0Qnkuc29tZShUPT5ULmtleT09PUQpJiYodGhpcy5zb3J0Qnk9dGhpcy5zb3J0QnkuZmlsdGVyKFQ9PlQua2V5IT09RCksdGhpcy5lbWl0U29ydENoYW5nZSgpLHRoaXMucmVxdWVzdFVwZGF0ZSgpKX1jbGVhclNvcnRzKCl7dGhpcy5zb3J0QnkubGVuZ3RoIT09MCYmKHRoaXMuc29ydEJ5PVtdLHRoaXMuZW1pdFNvcnRDaGFuZ2UoKSx0aGlzLnJlcXVlc3RVcGRhdGUoKSl9ZW1pdFNvcnRDaGFuZ2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJzb3J0Q2hhbmdlIix7ZGV0YWlsOntzb3J0Qnk6dGhpcy5zb3J0QnkubWFwKEQ9Pih7Li4uRH0pKX0sYnViYmxlczohMH0pKX1hc3luYyBoYW5kbGVIZWFkZXJDbGljayhELFQsRyl7aWYoRC5zaGlmdEtleSl7dGhpcy5oYW5kbGVIZWFkZXJTaGlmdENsaWNrKFQpO3JldHVybn1hd2FpdCB0aGlzLmNvbmZpcm1SZXBsYWNlQ2FzY2FkZShUKSYmdGhpcy5jeWNsZVNpbmdsZVNvcnQoVCl9Y3ljbGVTaW5nbGVTb3J0KEQpe2xldCBUPVN0cmluZyhELmtleSksRz10aGlzLnNvcnRCeS5sZW5ndGg9PT0xJiZ0aGlzLnNvcnRCeVswXS5rZXk9PT1UP3RoaXMuc29ydEJ5WzBdLmRpcjpudWxsO0c9PT0iYXNjIj90aGlzLnNldFNvcnQoVCwiZGVzYyIpOkc9PT0iZGVzYyI/dGhpcy5jbGVhclNvcnRzKCk6dGhpcy5zZXRTb3J0KFQsImFzYyIpfWhhbmRsZUhlYWRlclNoaWZ0Q2xpY2soRCl7bGV0IFQ9U3RyaW5nKEQua2V5KSxHPXRoaXMuZ2V0U29ydERlc2NyaXB0b3IoVCk7Rz9HLmRpcj09PSJhc2MiPyh0aGlzLnNvcnRCeT10aGlzLnNvcnRCeS5tYXAoJGU9PiRlLmtleT09PVQ/e2tleTpULGRpcjoiZGVzYyJ9OiRlKSx0aGlzLmVtaXRTb3J0Q2hhbmdlKCksdGhpcy5yZXF1ZXN0VXBkYXRlKCkpOnRoaXMucmVtb3ZlU29ydChUKTp0aGlzLmFwcGVuZFNvcnQoVCwiYXNjIil9Y29uZmlybVJlcGxhY2VDYXNjYWRlKEQpe3JldHVybiB0aGlzLnNvcnRCeS5sZW5ndGg8PTE/UHJvbWlzZS5yZXNvbHZlKCEwKTpuZXcgUHJvbWlzZShUPT57bGV0IEc9ITEsJGU9aShGZT0+e0d8fChHPSEwLFQoRmUpKX0sInNldHRsZSIpLFBlPXRoaXMuc29ydEJ5Lm1hcCgoRmUsVmUpPT57bGV0IFhlPXRoaXMuX2xvb2t1cENvbHVtbkJ5S2V5Py4oRmUua2V5KT8uaGVhZGVyPz9GZS5rZXk7cmV0dXJuIHdgPGxpPiR7VmUrMX0uICR7WGV9ICR7RmUuZGlyPT09ImFzYyI/Ilx1MjVCMiI6Ilx1MjVCQyJ9PC9saT5gfSk7UWEuY3JlYXRlQW5kU2hvdyh7aGVhZGluZzoiUmVwbGFjZSBtdWx0aS1jb2x1bW4gc29ydD8iLHdpZHRoOiJzbWFsbCIsc2hvd0Nsb3NlQnV0dG9uOiEwLGNvbnRlbnQ6d2AKICAgICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxM3B4OyBsaW5lLWhlaWdodDoxLjU1OyI+CiAgICAgICAgICAgIDxwIHN0eWxlPSJtYXJnaW46MCAwIDhweDsiPgogICAgICAgICAgICAgIFlvdSBjdXJyZW50bHkgaGF2ZSBhICR7dGhpcy5zb3J0QnkubGVuZ3RofS1jb2x1bW4gc29ydCBhY3RpdmU6CiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW46MCAwIDEycHg7IHBhZGRpbmctbGVmdDoxOHB4OyI+JHtQZX08L3VsPgogICAgICAgICAgICA8cCBzdHlsZT0ibWFyZ2luOjA7Ij4KICAgICAgICAgICAgICBDb250aW51aW5nIHdpbGwgZGlzY2FyZCB0aGUgY2FzY2FkZSBhbmQgcmVwbGFjZSBpdCB3aXRoIGEgc2luZ2xlIHNvcnQgb24KICAgICAgICAgICAgICA8c3Ryb25nPiR7RC5oZWFkZXI/P1N0cmluZyhELmtleSl9PC9zdHJvbmc+LgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgLG1lbnVPcHRpb25zOlt7bmFtZToiQ2FuY2VsIixpY29uTmFtZToibHVjaWRlOngiLGFjdGlvbjppKGFzeW5jIEZlPT4oJGUoITEpLGF3YWl0IEZlLmRlc3Ryb3koKSxudWxsKSwiYWN0aW9uIil9LHtuYW1lOiJSZXBsYWNlIixpY29uTmFtZToibHVjaWRlOmNoZWNrIixhY3Rpb246aShhc3luYyBGZT0+KCRlKCEwKSxhd2FpdCBGZS5kZXN0cm95KCksbnVsbCksImFjdGlvbiIpfV19KX0pfV9sb29rdXBDb2x1bW5CeUtleShEKXtyZXR1cm4gdGhpcy5fX2dldEVmZmVjdGl2ZUNvbHVtbnMoKS5maW5kKEc9PlN0cmluZyhHLmtleSk9PT1EKX1vcGVuSGVhZGVyQ29udGV4dE1lbnUoRCxULEcpe2xldCAkZT10aGlzLmJ1aWxkSGVhZGVyTWVudUl0ZW1zKFQsRyk7a2Eub3BlbkNvbnRleHRNZW51V2l0aE9wdGlvbnMoRCwkZSl9YnVpbGRIZWFkZXJNZW51SXRlbXMoRCxUKXtsZXQgRz1TdHJpbmcoRC5rZXkpLCRlPXRoaXMuZ2V0U29ydERlc2NyaXB0b3IoRyksUGU9dGhpcy5zb3J0QnkubGVuZ3RoLEZlPVQuZmlsdGVyKFhlPT5YZS5zb3J0YWJsZSE9PSExKS5sZW5ndGgsVmU9TWF0aC5taW4oTWF0aC5tYXgoUGUrKCRlPzA6MSksMSksTWF0aC5tYXgoRmUsMSkpLFVlPVtdO1VlLnB1c2goe25hbWU6IlNvcnQgQXNjZW5kaW5nIixpY29uTmFtZTpQZT09PTEmJiRlPy5kaXI9PT0iYXNjIj8ibHVjaWRlOmNoZWNrIjoibHVjaWRlOmFycm93VXAiLGFjdGlvbjppKGFzeW5jKCk9Pihhd2FpdCB0aGlzLmNvbmZpcm1SZXBsYWNlQ2FzY2FkZShEKSYmdGhpcy5zZXRTb3J0KEcsImFzYyIpLG51bGwpLCJhY3Rpb24iKX0pLFVlLnB1c2goe25hbWU6IlNvcnQgRGVzY2VuZGluZyIsaWNvbk5hbWU6UGU9PT0xJiYkZT8uZGlyPT09ImRlc2MiPyJsdWNpZGU6Y2hlY2siOiJsdWNpZGU6YXJyb3dEb3duIixhY3Rpb246aShhc3luYygpPT4oYXdhaXQgdGhpcy5jb25maXJtUmVwbGFjZUNhc2NhZGUoRCkmJnRoaXMuc2V0U29ydChHLCJkZXNjIiksbnVsbCksImFjdGlvbiIpfSksVWUucHVzaCh7ZGl2aWRlcjohMH0pO2ZvcihsZXQgWGU9MTtYZTw9VmU7WGUrKyl7bGV0IHd0PXFYYShYZSksUWU9JGUmJnRoaXMuZ2V0U29ydFByaW9yaXR5KEcpPT09WGUtMTtVZS5wdXNoKHtuYW1lOmBTZXQgYXMgJHt3dH0gc29ydGAsaWNvbk5hbWU6UWU/Imx1Y2lkZTpjaGVjayI6Imx1Y2lkZTpsaXN0T3JkZXJlZCIsc3VibWVudTpbe25hbWU6IkFzY2VuZGluZyIsaWNvbk5hbWU6Imx1Y2lkZTphcnJvd1VwIixhY3Rpb246aShhc3luYygpPT4odGhpcy5hZGRTb3J0QXQoRyxYZS0xLCJhc2MiKSxudWxsKSwiYWN0aW9uIil9LHtuYW1lOiJEZXNjZW5kaW5nIixpY29uTmFtZToibHVjaWRlOmFycm93RG93biIsYWN0aW9uOmkoYXN5bmMoKT0+KHRoaXMuYWRkU29ydEF0KEcsWGUtMSwiZGVzYyIpLG51bGwpLCJhY3Rpb24iKX1dfSl9cmV0dXJuIFVlLnB1c2goe2RpdmlkZXI6ITB9KSxVZS5wdXNoKHtuYW1lOiJBcHBlbmQgdG8gc29ydCIsaWNvbk5hbWU6Imx1Y2lkZTpwbHVzIixzdWJtZW51Olt7bmFtZToiQXNjZW5kaW5nIixpY29uTmFtZToibHVjaWRlOmFycm93VXAiLGFjdGlvbjppKGFzeW5jKCk9Pih0aGlzLmFwcGVuZFNvcnQoRywiYXNjIiksbnVsbCksImFjdGlvbiIpfSx7bmFtZToiRGVzY2VuZGluZyIsaWNvbk5hbWU6Imx1Y2lkZTphcnJvd0Rvd24iLGFjdGlvbjppKGFzeW5jKCk9Pih0aGlzLmFwcGVuZFNvcnQoRywiZGVzYyIpLG51bGwpLCJhY3Rpb24iKX1dfSksJGUmJihVZS5wdXNoKHtkaXZpZGVyOiEwfSksVWUucHVzaCh7bmFtZToiUmVtb3ZlIGZyb20gc29ydCIsaWNvbk5hbWU6Imx1Y2lkZTptaW51cyIsYWN0aW9uOmkoYXN5bmMoKT0+KHRoaXMucmVtb3ZlU29ydChHKSxudWxsKSwiYWN0aW9uIil9KSksUGU+MCYmKCRlfHxVZS5wdXNoKHtkaXZpZGVyOiEwfSksVWUucHVzaCh7bmFtZToiQ2xlYXIgYWxsIHNvcnRzIixpY29uTmFtZToibHVjaWRlOnRyYXNoIixhY3Rpb246aShhc3luYygpPT4odGhpcy5jbGVhclNvcnRzKCksbnVsbCksImFjdGlvbiIpfSkpLFVlLnB1c2goe2RpdmlkZXI6ITB9KSxVZS5wdXNoKHtuYW1lOnRoaXMuc2hvd0NvbHVtbkZpbHRlcnM/IkhpZGUgY29sdW1uIGZpbHRlcnMiOiJTaG93IGNvbHVtbiBmaWx0ZXJzIixpY29uTmFtZTp0aGlzLnNob3dDb2x1bW5GaWx0ZXJzPyJsdWNpZGU6ZmlsdGVyWCI6Imx1Y2lkZTpmaWx0ZXIiLGFjdGlvbjppKGFzeW5jKCk9Pih0aGlzLnNob3dDb2x1bW5GaWx0ZXJzPSF0aGlzLnNob3dDb2x1bW5GaWx0ZXJzLHRoaXMucmVxdWVzdFVwZGF0ZSgpLG51bGwpLCJhY3Rpb24iKX0pLFVlfWdldEFyaWFTb3J0KEQpe2xldCBUPXRoaXMuc29ydEJ5WzBdO3JldHVybiFUfHxULmtleSE9PVN0cmluZyhELmtleSk/Im5vbmUiOlQuZGlyPT09ImFzYyI/ImFzY2VuZGluZyI6ImRlc2NlbmRpbmcifXJlbmRlclNvcnRJbmRpY2F0b3IoRCl7bGV0IFQ9dGhpcy5nZXRTb3J0UHJpb3JpdHkoU3RyaW5nKEQua2V5KSk7aWYoVDwwKXJldHVybiB3YGA7bGV0ICRlPXRoaXMuc29ydEJ5W1RdLmRpcj09PSJhc2MiPyJcdTI1QjIiOiJcdTI1QkMiO3JldHVybiB0aGlzLnNvcnRCeS5sZW5ndGg9PT0xP3dgPHNwYW4gY2xhc3M9InNvcnRBcnJvdyI+JHskZX08L3NwYW4+YDp3YDxzcGFuIGNsYXNzPSJzb3J0QXJyb3ciPiR7JGV9PC9zcGFuPjxzcGFuIGNsYXNzPSJzb3J0QmFkZ2UiPiR7VCsxfTwvc3Bhbj5gfXNldEZpbHRlclRleHQoRCl7bGV0IFQ9dGhpcy5maWx0ZXJUZXh0O3RoaXMuZmlsdGVyVGV4dD1EPz8iIixUIT09dGhpcy5maWx0ZXJUZXh0JiYodGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiZmlsdGVyQ2hhbmdlIix7ZGV0YWlsOnt0ZXh0OnRoaXMuZmlsdGVyVGV4dCxjb2x1bW5zOnsuLi50aGlzLmNvbHVtbkZpbHRlcnN9fSxidWJibGVzOiEwfSkpLHRoaXMucmVxdWVzdFVwZGF0ZSgpKX1zZXRDb2x1bW5GaWx0ZXIoRCxUKXt0aGlzLmNvbHVtbkZpbHRlcnM9ey4uLnRoaXMuY29sdW1uRmlsdGVycyxbRF06VH0sdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiZmlsdGVyQ2hhbmdlIix7ZGV0YWlsOnt0ZXh0OnRoaXMuZmlsdGVyVGV4dCxjb2x1bW5zOnsuLi50aGlzLmNvbHVtbkZpbHRlcnN9fSxidWJibGVzOiEwfSkpLHRoaXMucmVxdWVzdFVwZGF0ZSgpfWdldFJvd0lkKEQpe2lmKHRoaXMucm93S2V5KXJldHVybiB0eXBlb2YgdGhpcy5yb3dLZXk9PSJmdW5jdGlvbiI/dGhpcy5yb3dLZXkoRCk6U3RyaW5nKERbdGhpcy5yb3dLZXldKTtsZXQgVD1EO3JldHVybiB0aGlzLl9yb3dJZE1hcC5oYXMoVCl8fHRoaXMuX3Jvd0lkTWFwLnNldChULFN0cmluZygrK3RoaXMuX3Jvd0lkQ291bnRlcikpLHRoaXMuX3Jvd0lkTWFwLmdldChUKX1pc1Jvd1NlbGVjdGVkKEQpe3JldHVybiB0aGlzLnNlbGVjdGVkSWRzLmhhcyh0aGlzLmdldFJvd0lkKEQpKX10b2dnbGVSb3dTZWxlY3RlZChEKXtsZXQgVD10aGlzLmdldFJvd0lkKEQpO3RoaXMuc2VsZWN0aW9uTW9kZT09PSJzaW5nbGUiPyh0aGlzLnNlbGVjdGVkSWRzLmNsZWFyKCksdGhpcy5zZWxlY3RlZElkcy5hZGQoVCkpOnRoaXMuc2VsZWN0aW9uTW9kZT09PSJtdWx0aSImJih0aGlzLnNlbGVjdGVkSWRzLmhhcyhUKT90aGlzLnNlbGVjdGVkSWRzLmRlbGV0ZShUKTp0aGlzLnNlbGVjdGVkSWRzLmFkZChUKSksdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlKCksdGhpcy5yZXF1ZXN0VXBkYXRlKCl9X19yZXNvbHZlUm93KEQpe2xldCBUPUQuY29tcG9zZWRQYXRoPy4oKXx8W10sRz1udWxsO2ZvcihsZXQgVmUgb2YgVCl7bGV0IFVlPVZlO2lmKFVlPy50YWdOYW1lPT09IlRSIiYmVWUuaGFzQXR0cmlidXRlKCJkYXRhLXJvdy1pZHgiKSl7Rz1VZTticmVha319aWYoIUcpcmV0dXJuIG51bGw7bGV0ICRlPU51bWJlcihHLmdldEF0dHJpYnV0ZSgiZGF0YS1yb3ctaWR4IikpLEZlPSh0aGlzLl9sYXN0Vmlld0RhdGE/P1tdKVskZV07cmV0dXJuIEZlP3tpdGVtOkZlLHJvd0lkeDokZX06bnVsbH1fX3Jlc29sdmVDZWxsKEQpe2xldCBUPXRoaXMuX19yZXNvbHZlUm93KEQpO2lmKCFUKXJldHVybiBudWxsO2xldCBHPUQuY29tcG9zZWRQYXRoPy4oKXx8W10sJGU9bnVsbDtmb3IobGV0IFVlIG9mIEcpe2xldCBYZT1VZTtpZihYZT8udGFnTmFtZT09PSJURCImJlhlLmhhc0F0dHJpYnV0ZSgiZGF0YS1jb2wta2V5IikpeyRlPVhlO2JyZWFrfX1pZighJGUpcmV0dXJuIG51bGw7bGV0IFBlPSRlLmdldEF0dHJpYnV0ZSgiZGF0YS1jb2wta2V5IiksVmU9dGhpcy5fX2dldEVmZmVjdGl2ZUNvbHVtbnMoKS5maW5kKFVlPT5TdHJpbmcoVWUua2V5KT09PVBlKTtyZXR1cm4gVmU/e2l0ZW06VC5pdGVtLHJvd0lkeDpULnJvd0lkeCxjb2w6VmV9Om51bGx9X19pc0luQWN0aW9uc0NvbChEKXtsZXQgVD1ELmNvbXBvc2VkUGF0aD8uKCl8fFtdO2ZvcihsZXQgRyBvZiBUKWlmKEc/LmNsYXNzTGlzdD8uY29udGFpbnMoImFjdGlvbnNDb2wiKSlyZXR1cm4hMDtyZXR1cm4hMX1fX2lzSW5FZGl0b3IoRCl7bGV0IFQ9RC5jb21wb3NlZFBhdGg/LigpfHxbXTtmb3IobGV0IEcgb2YgVCl7bGV0ICRlPUcsUGU9JGU/LnRhZ05hbWU7aWYoUGU9PT0iSU5QVVQifHxQZT09PSJURVhUQVJFQSJ8fCRlPy5pc0NvbnRlbnRFZGl0YWJsZXx8UGUmJlBlLnN0YXJ0c1dpdGgoIkRFRVMtSU5QVVQtIikpcmV0dXJuITB9cmV0dXJuITF9X19vblRib2R5Q2xpY2s9aShEPT57aWYodGhpcy5fX2lzSW5FZGl0b3IoRCl8fHRoaXMuX19pc0luQWN0aW9uc0NvbChEKSlyZXR1cm47bGV0IFQ9dGhpcy5fX3Jlc29sdmVDZWxsKEQpO2lmKCFUKXJldHVybjtsZXQgRz10aGlzLl9sYXN0Vmlld0RhdGE/P1tdOyhULmNvbC5lZGl0YWJsZXx8VC5jb2wuZWRpdG9yKSYmKHRoaXMuX19mb2N1c2VkQ2VsbD17cm93SWQ6dGhpcy5nZXRSb3dJZChULml0ZW0pLGNvbEtleTpTdHJpbmcoVC5jb2wua2V5KX0pLHRoaXMuaGFuZGxlUm93Q2xpY2soRCxULml0ZW0sVC5yb3dJZHgsRyl9LCJfX29uVGJvZHlDbGljayIpO19fb25UYm9keURibGNsaWNrPWkoRD0+e2lmKHRoaXMuX19pc0luRWRpdG9yKEQpfHx0aGlzLl9faXNJbkFjdGlvbnNDb2woRCkpcmV0dXJuO2xldCBUPXRoaXMuX19yZXNvbHZlQ2VsbChEKTtpZighVClyZXR1cm47aWYoISEoVC5jb2wuZWRpdGFibGV8fFQuY29sLmVkaXRvcikpe0Quc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5zdGFydEVkaXRpbmcoVC5pdGVtLFQuY29sKTtyZXR1cm59bGV0ICRlPXRoaXMuZGF0YUFjdGlvbnMuZmluZChQZT0+UGUudHlwZT8uaW5jbHVkZXMoImRvdWJsZUNsaWNrIikpOyRlJiYkZS5hY3Rpb25GdW5jKHtpdGVtOlQuaXRlbSx0YWJsZTp0aGlzfSl9LCJfX29uVGJvZHlEYmxjbGljayIpO19fb25UYm9keU1vdXNlZG93bj1pKEQ9PntELnNoaWZ0S2V5JiZ0aGlzLnNlbGVjdGlvbk1vZGUhPT0ic2luZ2xlIiYmRC5wcmV2ZW50RGVmYXVsdCgpfSwiX19vblRib2R5TW91c2Vkb3duIik7X19vblRib2R5Q29udGV4dG1lbnU9aShEPT57aWYodGhpcy5fX2lzSW5BY3Rpb25zQ29sKEQpKXJldHVybjtsZXQgVD10aGlzLl9fcmVzb2x2ZVJvdyhEKTtpZighVClyZXR1cm47bGV0IEc9VC5pdGVtO3RoaXMuaXNSb3dTZWxlY3RlZChHKXx8KHRoaXMuc2VsZWN0ZWREYXRhUm93PUcsdGhpcy5zZWxlY3RlZElkcy5jbGVhcigpLHRoaXMuc2VsZWN0ZWRJZHMuYWRkKHRoaXMuZ2V0Um93SWQoRykpLHRoaXMuX19zZWxlY3Rpb25BbmNob3JJZD10aGlzLmdldFJvd0lkKEcpLHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZSgpLHRoaXMucmVxdWVzdFVwZGF0ZSgpKTtsZXQgJGU9dGhpcy5nZXRBY3Rpb25zRm9yVHlwZSgiY29udGV4dG1lbnUiKS5tYXAoRmU9Pih7bmFtZTpGZS5uYW1lLGljb25OYW1lOkZlLmljb25OYW1lLGFjdGlvbjppKGFzeW5jKCk9Pihhd2FpdCBGZS5hY3Rpb25GdW5jKHtpdGVtOkcsdGFibGU6dGhpc30pLG51bGwpLCJhY3Rpb24iKX0pKSxQZT1be25hbWU6dGhpcy5zZWxlY3RlZElkcy5zaXplPjE/YENvcHkgJHt0aGlzLnNlbGVjdGVkSWRzLnNpemV9IHJvd3MgYXMgSlNPTmA6IkNvcHkgcm93IGFzIEpTT04iLGljb25OYW1lOiJsdWNpZGU6Q29weSIsYWN0aW9uOmkoYXN5bmMoKT0+KHRoaXMuY29weVNlbGVjdGlvbkFzSnNvbihHKSxudWxsKSwiYWN0aW9uIil9XTtrYS5vcGVuQ29udGV4dE1lbnVXaXRoT3B0aW9ucyhELFsuLi4kZSwuLi5QZV0pfSwiX19vblRib2R5Q29udGV4dG1lbnUiKTtfX29uVGJvZHlEcmFnZW50ZXI9aShEPT57aWYoRC5wcmV2ZW50RGVmYXVsdCgpLEQuc3RvcFByb3BhZ2F0aW9uKCksIXRoaXMuX19yZXNvbHZlUm93KEQpKXJldHVybjtsZXQgRz0oRC5jb21wb3NlZFBhdGg/LigpfHxbXSkuZmluZCgkZT0+JGU/LnRhZ05hbWU9PT0iVFIiKTtHJiZzZXRUaW1lb3V0KCgpPT5HLmNsYXNzTGlzdC5hZGQoImhhc0F0dGFjaG1lbnQiKSwwKX0sIl9fb25UYm9keURyYWdlbnRlciIpO19fb25UYm9keURyYWdsZWF2ZT1pKEQ9PntELnByZXZlbnREZWZhdWx0KCksRC5zdG9wUHJvcGFnYXRpb24oKTtsZXQgVD0oRC5jb21wb3NlZFBhdGg/LigpfHxbXSkuZmluZChHPT5HPy50YWdOYW1lPT09IlRSIik7VCYmVC5jbGFzc0xpc3QucmVtb3ZlKCJoYXNBdHRhY2htZW50Iil9LCJfX29uVGJvZHlEcmFnbGVhdmUiKTtfX29uVGJvZHlEcmFnb3Zlcj1pKEQ9PntELnByZXZlbnREZWZhdWx0KCl9LCJfX29uVGJvZHlEcmFnb3ZlciIpO19fb25UYm9keURyb3A9aShhc3luYyBEPT57RC5wcmV2ZW50RGVmYXVsdCgpO2xldCBUPXRoaXMuX19yZXNvbHZlUm93KEQpO2lmKCFUKXJldHVybjtsZXQgRz1ULml0ZW0sJGU9W107Zm9yKGxldCBGZSBvZiBBcnJheS5mcm9tKEQuZGF0YVRyYW5zZmVyLmZpbGVzKSl0aGlzLmZpbGVzLnB1c2goRmUpLCRlLnB1c2goRmUpLHRoaXMucmVxdWVzdFVwZGF0ZSgpO2xldCBQZT10aGlzLmZpbGVXZWFrTWFwLmdldChHKTtQZT9QZS5wdXNoKC4uLiRlKTp0aGlzLmZpbGVXZWFrTWFwLnNldChHLCRlKX0sIl9fb25UYm9keURyb3AiKTtoYW5kbGVSb3dDbGljayhELFQsRywkZSl7bGV0IFBlPXRoaXMuZ2V0Um93SWQoVCk7aWYodGhpcy5zZWxlY3Rpb25Nb2RlPT09InNpbmdsZSIpe3RoaXMuc2VsZWN0ZWREYXRhUm93PVQsdGhpcy5zZWxlY3RlZElkcy5jbGVhcigpLHRoaXMuc2VsZWN0ZWRJZHMuYWRkKFBlKSx0aGlzLl9fc2VsZWN0aW9uQW5jaG9ySWQ9UGUsdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlKCksdGhpcy5yZXF1ZXN0VXBkYXRlKCk7cmV0dXJufWxldCBGZT1ELm1ldGFLZXl8fEQuY3RybEtleTtpZihELnNoaWZ0S2V5JiZ0aGlzLl9fc2VsZWN0aW9uQW5jaG9ySWQhPT12b2lkIDApe3dpbmRvdy5nZXRTZWxlY3Rpb24/LigpPy5yZW1vdmVBbGxSYW5nZXMoKTtsZXQgVWU9JGUuZmluZEluZGV4KFhlPT50aGlzLmdldFJvd0lkKFhlKT09PXRoaXMuX19zZWxlY3Rpb25BbmNob3JJZCk7aWYoVWU+PTApe2xldFtYZSx3dF09VWU8PUc/W1VlLEddOltHLFVlXTt0aGlzLnNlbGVjdGVkSWRzLmNsZWFyKCk7Zm9yKGxldCBRZT1YZTtRZTw9d3Q7UWUrKyl0aGlzLnNlbGVjdGVkSWRzLmFkZCh0aGlzLmdldFJvd0lkKCRlW1FlXSkpfWVsc2UgdGhpcy5zZWxlY3RlZElkcy5jbGVhcigpLHRoaXMuc2VsZWN0ZWRJZHMuYWRkKFBlKSx0aGlzLl9fc2VsZWN0aW9uQW5jaG9ySWQ9UGU7dGhpcy5zZWxlY3RlZERhdGFSb3c9VH1lbHNlIGlmKEZlKXtpZih0aGlzLnNlbGVjdGVkSWRzLmhhcyhQZSkpe2lmKHRoaXMuc2VsZWN0ZWRJZHMuZGVsZXRlKFBlKSx0aGlzLnNlbGVjdGVkRGF0YVJvdz09PVQpe2xldCBYZT0kZS5maW5kKHd0PT50aGlzLnNlbGVjdGVkSWRzLmhhcyh0aGlzLmdldFJvd0lkKHd0KSkpO3RoaXMuc2VsZWN0ZWREYXRhUm93PVhlfX1lbHNlIHRoaXMuc2VsZWN0ZWRJZHMuYWRkKFBlKSx0aGlzLnNlbGVjdGVkRGF0YVJvdz1UO3RoaXMuX19zZWxlY3Rpb25BbmNob3JJZD1QZX1lbHNlIHRoaXMuc2VsZWN0ZWREYXRhUm93PVQsdGhpcy5zZWxlY3RlZElkcy5jbGVhcigpLHRoaXMuc2VsZWN0ZWRJZHMuYWRkKFBlKSx0aGlzLl9fc2VsZWN0aW9uQW5jaG9ySWQ9UGU7dGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlKCksdGhpcy5yZXF1ZXN0VXBkYXRlKCl9c2V0Um93U2VsZWN0ZWQoRCxUKXtsZXQgRz10aGlzLmdldFJvd0lkKEQpO3RoaXMuc2VsZWN0aW9uTW9kZT09PSJzaW5nbGUiPyh0aGlzLnNlbGVjdGVkSWRzLmNsZWFyKCksVCYmdGhpcy5zZWxlY3RlZElkcy5hZGQoRykpOnRoaXMuc2VsZWN0aW9uTW9kZT09PSJtdWx0aSImJihUP3RoaXMuc2VsZWN0ZWRJZHMuYWRkKEcpOnRoaXMuc2VsZWN0ZWRJZHMuZGVsZXRlKEcpKSx0aGlzLmVtaXRTZWxlY3Rpb25DaGFuZ2UoKSx0aGlzLnJlcXVlc3RVcGRhdGUoKX1hcmVBbGxWaXNpYmxlU2VsZWN0ZWQoKXtsZXQgRD10aGlzLl9sYXN0Vmlld0RhdGF8fFtdO2lmKEQubGVuZ3RoPT09MClyZXR1cm4hMTtmb3IobGV0IFQgb2YgRClpZighdGhpcy5zZWxlY3RlZElkcy5oYXModGhpcy5nZXRSb3dJZChUKSkpcmV0dXJuITE7cmV0dXJuITB9aXNWaXNpYmxlU2VsZWN0aW9uSW5kZXRlcm1pbmF0ZSgpe2xldCBEPXRoaXMuX2xhc3RWaWV3RGF0YXx8W107aWYoRC5sZW5ndGg9PT0wKXJldHVybiExO2xldCBUPTA7Zm9yKGxldCBHIG9mIEQpdGhpcy5zZWxlY3RlZElkcy5oYXModGhpcy5nZXRSb3dJZChHKSkmJlQrKztyZXR1cm4gVD4wJiZUPEQubGVuZ3RofXNldFNlbGVjdFZpc2libGUoRCl7bGV0IFQ9dGhpcy5fbGFzdFZpZXdEYXRhfHxbXTtpZihEKWZvcihsZXQgRyBvZiBUKXRoaXMuc2VsZWN0ZWRJZHMuYWRkKHRoaXMuZ2V0Um93SWQoRykpO2Vsc2UgZm9yKGxldCBHIG9mIFQpdGhpcy5zZWxlY3RlZElkcy5kZWxldGUodGhpcy5nZXRSb3dJZChHKSk7dGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlKCksdGhpcy5yZXF1ZXN0VXBkYXRlKCl9ZW1pdFNlbGVjdGlvbkNoYW5nZSgpe2xldCBEPUFycmF5LmZyb20odGhpcy5zZWxlY3RlZElkcyksVD10aGlzLmRhdGEuZmlsdGVyKEc9PnRoaXMuc2VsZWN0ZWRJZHMuaGFzKHRoaXMuZ2V0Um93SWQoRykpKTt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJzZWxlY3Rpb25DaGFuZ2UiLHtkZXRhaWw6e3NlbGVjdGVkSWRzOkQsc2VsZWN0ZWRSb3dzOlR9LGJ1YmJsZXM6ITB9KSl9Z2V0QWN0aW9uc0ZvclR5cGUoRCl7bGV0IFQ9W107Zm9yKGxldCBHIG9mIHRoaXMuZGF0YUFjdGlvbnMpRy50eXBlPy5pbmNsdWRlcyhEKSYmVC5wdXNoKEcpO3JldHVybiBUfV9faXNDb2x1bW5FZGl0YWJsZShEKXtyZXR1cm4hIShELmVkaXRhYmxlfHxELmVkaXRvcil9X19lZGl0YWJsZUNvbHVtbnMoRCl7cmV0dXJuIEQuZmlsdGVyKFQ9PiFULmhpZGRlbiYmdGhpcy5fX2lzQ29sdW1uRWRpdGFibGUoVCkpfXN0YXJ0RWRpdGluZyhELFQpe2lmKCF0aGlzLl9faXNDb2x1bW5FZGl0YWJsZShUKSlyZXR1cm47bGV0IEc9dGhpcy5nZXRSb3dJZChEKSwkZT1TdHJpbmcoVC5rZXkpO3RoaXMuX19mb2N1c2VkQ2VsbD17cm93SWQ6Ryxjb2xLZXk6JGV9LHRoaXMuX19lZGl0aW5nQ2VsbD17cm93SWQ6Ryxjb2xLZXk6JGV9LHRoaXMucmVxdWVzdFVwZGF0ZSgpLHRoaXMudXBkYXRlQ29tcGxldGUudGhlbigoKT0+e2xldCBQZT10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5lZGl0aW5nQ2VsbCBkZWVzLWlucHV0LXRleHQsIC5lZGl0aW5nQ2VsbCBkZWVzLWlucHV0LWNoZWNrYm94LCAuZWRpdGluZ0NlbGwgZGVlcy1pbnB1dC1kcm9wZG93biwgLmVkaXRpbmdDZWxsIGRlZXMtaW5wdXQtZGF0ZXBpY2tlciwgLmVkaXRpbmdDZWxsIGRlZXMtaW5wdXQtdGFncyIpO1BlPy5mb2N1cz8uKCksUGU/LnRhZ05hbWU9PT0iREVFUy1JTlBVVC1EUk9QRE9XTiImJlBlLnVwZGF0ZUNvbXBsZXRlPy50aGVuKCgpPT5QZS50b2dnbGVTZWxlY3Rpb25Cb3g/LigpKX0pfWNhbmNlbENlbGxFZGl0KCl7dGhpcy5fX2VkaXRpbmdDZWxsPXZvaWQgMCx0aGlzLnJlcXVlc3RVcGRhdGUoKX1jb21taXRDZWxsRWRpdChELFQsRyl7bGV0ICRlPVN0cmluZyhULmtleSksUGU9RFtULmtleV0sRmU9VC5wYXJzZT9ULnBhcnNlKEcsRCk6RztpZihULnZhbGlkYXRlKXtsZXQgVmU9VC52YWxpZGF0ZShGZSxEKTtpZih0eXBlb2YgVmU9PSJzdHJpbmciKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjZWxsRWRpdEVycm9yIix7ZGV0YWlsOntyb3c6RCxrZXk6JGUsdmFsdWU6RmUsbWVzc2FnZTpWZX0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKTtyZXR1cm59fUZlIT09UGUmJihEW1Qua2V5XT1GZSx0aGlzLl9fcmVjb3JkQ2VsbEluU25hcHNob3QoRCxUKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjZWxsRWRpdCIse2RldGFpbDp7cm93OkQsa2V5OiRlLG9sZFZhbHVlOlBlLG5ld1ZhbHVlOkZlfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpLHRoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMpKSx0aGlzLl9fZWRpdGluZ0NlbGw9dm9pZCAwLHRoaXMucmVxdWVzdFVwZGF0ZSgpfV9fcmVjb3JkQ2VsbEluU25hcHNob3QoRCxUKXtpZih0aGlzLmhpZ2hsaWdodFVwZGF0ZXMhPT0iZmxhc2gifHwhdGhpcy5fX3ByZXZTbmFwc2hvdHx8IXRoaXMucm93S2V5KXJldHVybjtsZXQgRz10aGlzLmdldFJvd0lkKEQpLCRlPXRoaXMuX19wcmV2U25hcHNob3QuZ2V0KEcpOyRlfHwoJGU9bmV3IE1hcCx0aGlzLl9fcHJldlNuYXBzaG90LnNldChHLCRlKSksJGUuc2V0KFN0cmluZyhULmtleSksT2goRCxULHRoaXMuZGlzcGxheUZ1bmN0aW9uKSl9cmVuZGVyQ2VsbEVkaXRvcihELFQpe2xldCBHPURbVC5rZXldLCRlPVQuZm9ybWF0P1QuZm9ybWF0KEcsRCk6RyxQZT1ULmVkaXRvcj8/InRleHQiLEZlPWkoVmU9PnRoaXMuY29tbWl0Q2VsbEVkaXQoRCxULFZlLnZhbHVlKSwib25UZXh0Q29tbWl0Iik7c3dpdGNoKFBlKXtjYXNlImNoZWNrYm94IjpyZXR1cm4gd2A8ZGVlcy1pbnB1dC1jaGVja2JveAogICAgICAgICAgLnZhbHVlPSR7ISEkZX0KICAgICAgICAgIEBuZXdWYWx1ZT0ke1ZlPT57VmUuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5jb21taXRDZWxsRWRpdChELFQsVmUuZGV0YWlsKX19CiAgICAgICAgPjwvZGVlcy1pbnB1dC1jaGVja2JveD5gO2Nhc2UiZHJvcGRvd24iOntsZXQgVmU9VC5lZGl0b3JPcHRpb25zPy5vcHRpb25zPz9bXSxVZT1WZS5maW5kKFhlPT5YZT09bnVsbD8hMTp0eXBlb2YgWGU9PSJzdHJpbmciP1hlPT09RzpYZS5rZXk9PT1HfHxYZS5vcHRpb249PT1HKT8/bnVsbDtyZXR1cm4gd2A8ZGVlcy1pbnB1dC1kcm9wZG93bgogICAgICAgICAgLnZpbnRlZ3JhdGVkPSR7ITB9CiAgICAgICAgICAub3B0aW9ucz0ke1ZlfQogICAgICAgICAgLnNlbGVjdGVkT3B0aW9uPSR7VWV9CiAgICAgICAgICBAc2VsZWN0ZWRPcHRpb249JHtYZT0+e1hlLnN0b3BQcm9wYWdhdGlvbigpO2xldCB3dD1YZS5kZXRhaWwsUWU9d3Q/Lm9wdGlvbj8/d3Q/LmtleT8/d3Q7dGhpcy5jb21taXRDZWxsRWRpdChELFQsUWUpfX0KICAgICAgICA+PC9kZWVzLWlucHV0LWRyb3Bkb3duPmB9Y2FzZSJkYXRlIjpyZXR1cm4gd2A8ZGVlcy1pbnB1dC1kYXRlcGlja2VyCiAgICAgICAgICAudmFsdWU9JHskZX0KICAgICAgICAgIEBmb2N1c291dD0ke1ZlPT5GZShWZS50YXJnZXQpfQogICAgICAgICAgQGtleWRvd249JHtWZT0+dGhpcy5fX2hhbmRsZUVkaXRvcktleShWZSxELFQpfQogICAgICAgID48L2RlZXMtaW5wdXQtZGF0ZXBpY2tlcj5gO2Nhc2UidGFncyI6cmV0dXJuIHdgPGRlZXMtaW5wdXQtdGFncwogICAgICAgICAgLnZhbHVlPSR7JGU/P1tdfQogICAgICAgICAgQGZvY3Vzb3V0PSR7VmU9PkZlKFZlLnRhcmdldCl9CiAgICAgICAgICBAa2V5ZG93bj0ke1ZlPT50aGlzLl9faGFuZGxlRWRpdG9yS2V5KFZlLEQsVCl9CiAgICAgICAgPjwvZGVlcy1pbnB1dC10YWdzPmA7ZGVmYXVsdDpyZXR1cm4gd2A8ZGVlcy1pbnB1dC10ZXh0CiAgICAgICAgICAudmludGVncmF0ZWQ9JHshMH0KICAgICAgICAgIC52YWx1ZT0keyRlPT1udWxsPyIiOlN0cmluZygkZSl9CiAgICAgICAgICBAZm9jdXNvdXQ9JHtWZT0+RmUoVmUudGFyZ2V0KX0KICAgICAgICAgIEBrZXlkb3duPSR7VmU9PnRoaXMuX19oYW5kbGVFZGl0b3JLZXkoVmUsRCxUKX0KICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+YH19X19oYW5kbGVFZGl0b3JLZXkoRCxULEcpe2lmKEQua2V5PT09IkVzY2FwZSIpRC5wcmV2ZW50RGVmYXVsdCgpLEQuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5jYW5jZWxDZWxsRWRpdCgpLHRoaXMuZm9jdXMoKTtlbHNlIGlmKEQua2V5PT09IkVudGVyIil7RC5wcmV2ZW50RGVmYXVsdCgpLEQuc3RvcFByb3BhZ2F0aW9uKCk7bGV0ICRlPUQudGFyZ2V0O3RoaXMuY29tbWl0Q2VsbEVkaXQoVCxHLCRlLnZhbHVlKSx0aGlzLm1vdmVGb2N1c2VkQ2VsbCgwLDEsITApfWVsc2UgaWYoRC5rZXk9PT0iVGFiIil7RC5wcmV2ZW50RGVmYXVsdCgpLEQuc3RvcFByb3BhZ2F0aW9uKCk7bGV0ICRlPUQudGFyZ2V0O3RoaXMuY29tbWl0Q2VsbEVkaXQoVCxHLCRlLnZhbHVlKSx0aGlzLm1vdmVGb2N1c2VkQ2VsbChELnNoaWZ0S2V5Py0xOjEsMCwhMCl9fW1vdmVGb2N1c2VkQ2VsbChELFQsRyl7bGV0ICRlPXRoaXMuX2xhc3RWaWV3RGF0YT8/W107aWYoJGUubGVuZ3RoPT09MClyZXR1cm47bGV0IFBlPXRoaXMuX19nZXRFZmZlY3RpdmVDb2x1bW5zKCksRmU9dGhpcy5fX2VkaXRhYmxlQ29sdW1ucyhQZSk7aWYoRmUubGVuZ3RoPT09MClyZXR1cm47bGV0IFZlPTAsVWU9MDtpZih0aGlzLl9fZm9jdXNlZENlbGwmJihWZT0kZS5maW5kSW5kZXgoUWU9PnRoaXMuZ2V0Um93SWQoUWUpPT09dGhpcy5fX2ZvY3VzZWRDZWxsLnJvd0lkKSxVZT1GZS5maW5kSW5kZXgoUWU9PlN0cmluZyhRZS5rZXkpPT09dGhpcy5fX2ZvY3VzZWRDZWxsLmNvbEtleSksVmU8MCYmKFZlPTApLFVlPDAmJihVZT0wKSksRCE9PTApe2ZvcihVZSs9RDtVZT49RmUubGVuZ3RoOylVZS09RmUubGVuZ3RoLFZlKz0xO2Zvcig7VWU8MDspVWUrPUZlLmxlbmd0aCxWZS09MX1pZihUIT09MCYmKFZlKz1UKSxWZTwwfHxWZT49JGUubGVuZ3RoKXt0aGlzLmNhbmNlbENlbGxFZGl0KCk7cmV0dXJufWxldCBYZT0kZVtWZV0sd3Q9RmVbVWVdO3RoaXMuX19mb2N1c2VkQ2VsbD17cm93SWQ6dGhpcy5nZXRSb3dJZChYZSksY29sS2V5OlN0cmluZyh3dC5rZXkpfSxHP3RoaXMuc3RhcnRFZGl0aW5nKFhlLHd0KTp0aGlzLnJlcXVlc3RVcGRhdGUoKX1zdGF0aWN7TXQoYSx0KX19O3JldHVybiBwMT1hfSkoKX0pO3ZhciBraXQ9ZygoKT0+e2dpdCgpfSk7dmFyIEUzYSxQM2E9ZygoKT0+e3BlKCk7SXQoKTtFM2E9aSgoKT0+d2AKICA8c3R5bGU+CiAgICAke0pgCiAgICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMjRweDsKICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgIG1heC13aWR0aDogMTIwMHB4OwogICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICB9CiAgICAgIAogICAgICBkZWVzLXBhbmVsIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgICB9CiAgICAgIAogICAgICBkZWVzLXBhbmVsOmxhc3QtY2hpbGQgewogICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgIH0KICAgICAgCiAgICAgIC5mb3JtLW91dHB1dCB7CiAgICAgICAgbWFyZ2luLXRvcDogMTZweDsKICAgICAgICBwYWRkaW5nOiAxMnB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDQwJSA5Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDE2LjglKSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogICAgICB9CiAgICAgIAogICAgICAuc3RhdHVzLW1lc3NhZ2UgewogICAgICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICAgICAgcGFkZGluZzogMTJweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICB9CiAgICAgIAogICAgICAuc3RhdHVzLW1lc3NhZ2Uuc3VjY2VzcyB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgxNDIuMSA3MC42JSA0NS4zJSAvIDAuMSkiLCJoc2woMTQyLjEgNzAuNiUgNDUuMyUgLyAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDE0Mi4xIDcwLjYlIDM1LjMlKSIsImhzbCgxNDIuMSA3MC42JSA2NS4zJSkiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5zdGF0dXMtbWVzc2FnZS5lcnJvciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDcyLjIlIDUwLjYlIC8gMC4xKSIsImhzbCgwIDcyLjIlIDUwLjYlIC8gMC4yKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDcyLjIlIDQwLjYlKSIsImhzbCgwIDcyLjIlIDYwLjYlKSIpfTsKICAgICAgfQogICAgYH0KICA8L3N0eWxlPgogIAogIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntsZXQgZT1zLnF1ZXJ5U2VsZWN0b3IoImRlZXMtZm9ybSIpLHQ9cy5xdWVyeVNlbGVjdG9yKCIuZm9ybS1vdXRwdXQiKTtlJiZ0JiYoZS5hZGRFdmVudExpc3RlbmVyKCJmb3JtRGF0YSIsKGFzeW5jIHI9PntsZXQgbj1yLmRldGFpbC5kYXRhO2NvbnNvbGUubG9nKCJGb3JtIHN1Ym1pdHRlZCB3aXRoIGRhdGE6IixuKSxlLnNldFN0YXR1cygicGVuZGluZyIsIlByb2Nlc3NpbmcgeW91ciByZWdpc3RyYXRpb24uLi4iKSx0LmlubmVySFRNTD1gPHN0cm9uZz5TdWJtaXR0ZWQgRGF0YTo8L3N0cm9uZz4KJHtKU09OLnN0cmluZ2lmeShuLG51bGwsMil9YCxhd2FpdCBsdC5wbHVnaW5zLnNtYXJ0ZGVsYXkuZGVsYXlGb3IoMmUzKSxlLnNldFN0YXR1cygic3VjY2VzcyIsIlJlZ2lzdHJhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5ISIpLGF3YWl0IGx0LnBsdWdpbnMuc21hcnRkZWxheS5kZWxheUZvcigyZTMpLGUucmVzZXQoKSx0LmlubmVySFRNTD0iPGVtPkZvcm0gaGFzIGJlZW4gcmVzZXQ8L2VtPiJ9KSksZS5xdWVyeVNlbGVjdG9yQWxsKCJkZWVzLWlucHV0LXRleHQsIGRlZXMtaW5wdXQtZHJvcGRvd24sIGRlZXMtaW5wdXQtY2hlY2tib3giKS5mb3JFYWNoKHI9PntyLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZVN1YmplY3QiLCgpPT57Y29uc29sZS5sb2coIkZpZWxkIGNoYW5nZWQ6IixyLmdldEF0dHJpYnV0ZSgia2V5IikpfSl9KSl9fT4KICAgICAgPGRlZXMtcGFuZWwgLmhlYWRpbmc9IkNvbXBsZXRlIEZvcm0gRXhhbXBsZSIgLmRlc2NyaXB0aW9uPSJBIGNvbXByZWhlbnNpdmUgZm9ybSB3aXRoIHZhcmlvdXMgaW5wdXQgdHlwZXMsIHZhbGlkYXRpb24sIGFuZCBmb3JtIHN1Ym1pc3Npb24gaGFuZGxpbmciPgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0IAogICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0gCiAgICAgICAgICAgIGtleT0iZmlyc3ROYW1lIiAKICAgICAgICAgICAgbGFiZWw9IkZpcnN0IE5hbWUiCiAgICAgICAgICAgIC5pbmZvVGV4dD0keyJZb3VyIGdpdmVuIG5hbWUifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0IAogICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0gCiAgICAgICAgICAgIGtleT0ibGFzdE5hbWUiIAogICAgICAgICAgICBsYWJlbD0iTGFzdCBOYW1lIgogICAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0IAogICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0gCiAgICAgICAgICAgIGtleT0iZW1haWwiIAogICAgICAgICAgICBsYWJlbD0iRW1haWwgQWRkcmVzcyIKICAgICAgICAgICAgLmluZm9UZXh0PSR7IldlIHdpbGwgdXNlIHRoaXMgdG8gY29udGFjdCB5b3UifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1pbnB1dC1kcm9wZG93bgogICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0KICAgICAgICAgICAga2V5PSJjb3VudHJ5IgogICAgICAgICAgICAubGFiZWw9JHsiQ291bnRyeSJ9CiAgICAgICAgICAgIC5vcHRpb25zPSR7W3tvcHRpb246IlVuaXRlZCBTdGF0ZXMiLGtleToidXMifSx7b3B0aW9uOiJDYW5hZGEiLGtleToiY2EifSx7b3B0aW9uOiJHZXJtYW55IixrZXk6ImRlIn0se29wdGlvbjoiRnJhbmNlIixrZXk6ImZyIn0se29wdGlvbjoiVW5pdGVkIEtpbmdkb20iLGtleToidWsifV19CiAgICAgICAgICA+PC9kZWVzLWlucHV0LWRyb3Bkb3duPgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0CiAgICAgICAgICAgIC5yZXF1aXJlZD0keyEwfQogICAgICAgICAgICBrZXk9InBhc3N3b3JkIgogICAgICAgICAgICBsYWJlbD0iUGFzc3dvcmQiCiAgICAgICAgICAgIGlzUGFzc3dvcmRCb29sCiAgICAgICAgICAgIC5pbmZvVGV4dD0keyJNaW5pbXVtIDggY2hhcmFjdGVycyJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWlucHV0LWNoZWNrYm94CiAgICAgICAgICAgIC5yZXF1aXJlZD0keyEwfQogICAgICAgICAgICBrZXk9InRlcm1zIgogICAgICAgICAgICBsYWJlbD0iSSBhZ3JlZSB0byB0aGUgVGVybXMgYW5kIENvbmRpdGlvbnMiCiAgICAgICAgICA+PC9kZWVzLWlucHV0LWNoZWNrYm94PgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1pbnB1dC1jaGVja2JveAogICAgICAgICAgICBrZXk9Im5ld3NsZXR0ZXIiCiAgICAgICAgICAgIGxhYmVsPSJTZW5kIG1lIHByb21vdGlvbmFsIGVtYWlscyIKICAgICAgICAgICAgLnZhbHVlPSR7ITB9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LWNoZWNrYm94PgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1mb3JtLXN1Ym1pdD5DcmVhdGUgQWNjb3VudDwvZGVlcy1mb3JtLXN1Ym1pdD4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLW91dHB1dCI+CiAgICAgICAgICA8ZW0+U3VibWl0IHRoZSBmb3JtIHRvIHNlZSB0aGUgY29sbGVjdGVkIGRhdGEuLi48L2VtPgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CiAgICAKICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntsZXQgZT1zLnF1ZXJ5U2VsZWN0b3IoImRlZXMtZm9ybSIpO2UmJihjb25zb2xlLmxvZygiSG9yaXpvbnRhbCBmb3JtIGxheW91dCBhY3RpdmUiKSxlLmFkZEV2ZW50TGlzdGVuZXIoImZvcm1EYXRhIiwoYT0+e2xldCByPWEuZGV0YWlsLmRhdGE7Y29uc29sZS5sb2coIkZpbHRlciBhcHBsaWVkOiIscik7bGV0IG49TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjEwMCkrMTtjb25zb2xlLmxvZyhgRm91bmQgJHtufSByZXN1bHRzIHdpdGggZmlsdGVyczpgLHIpfSkpLGUucXVlcnlTZWxlY3RvckFsbCgiW2tleV0iKS5mb3JFYWNoKGE9PnthLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZVN1YmplY3QiLGFzeW5jKCk9PntsZXQgcj1hd2FpdCBlLmNvbGxlY3RGb3JtRGF0YSgpO2NvbnNvbGUubG9nKCJMaXZlIGZpbHRlciB1cGRhdGU6IixyKX0pfSkpfX0+CiAgICAgIDxkZWVzLXBhbmVsIC5oZWFkaW5nPSJIb3Jpem9udGFsIEZvcm0gTGF5b3V0IiAuZGVzY3JpcHRpb249IkNvbXBhY3QgZm9ybSB3aXRoIGlucHV0cyBhcnJhbmdlZCBob3Jpem9udGFsbHkgLSBwZXJmZWN0IGZvciBmaWx0ZXJzIGFuZCBxdWljayBmb3JtcyI+CiAgICAgICAgPGRlZXMtZm9ybSBob3Jpem9udGFsLWxheW91dD4KICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQgCiAgICAgICAgICAgIGtleT0ic2VhcmNoIiAKICAgICAgICAgICAgbGFiZWw9IlNlYXJjaCIKICAgICAgICAgICAgcGxhY2Vob2xkZXI9IkVudGVyIGtleXdvcmRzLi4uIgogICAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1pbnB1dC1kcm9wZG93bgogICAgICAgICAgICBrZXk9ImNhdGVnb3J5IgogICAgICAgICAgICAubGFiZWw9JHsiQ2F0ZWdvcnkifQogICAgICAgICAgICAuZW5hYmxlU2VhcmNoPSR7ITF9CiAgICAgICAgICAgIC5vcHRpb25zPSR7W3tvcHRpb246IkFsbCIsa2V5OiJhbGwifSx7b3B0aW9uOiJQcm9kdWN0cyIsa2V5OiJwcm9kdWN0cyJ9LHtvcHRpb246IlNlcnZpY2VzIixrZXk6InNlcnZpY2VzIn0se29wdGlvbjoiU3VwcG9ydCIsa2V5OiJzdXBwb3J0In1dfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1kcm9wZG93bj4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtaW5wdXQtZHJvcGRvd24KICAgICAgICAgICAga2V5PSJzb3J0IgogICAgICAgICAgICAubGFiZWw9JHsiU29ydCBCeSJ9CiAgICAgICAgICAgIC5lbmFibGVTZWFyY2g9JHshMX0KICAgICAgICAgICAgLm9wdGlvbnM9JHtbe29wdGlvbjoiTmV3ZXN0IixrZXk6Im5ld2VzdCJ9LHtvcHRpb246IlBvcHVsYXIiLGtleToicG9wdWxhciJ9LHtvcHRpb246IlByaWNlOiBMb3cgdG8gSGlnaCIsa2V5OiJwcmljZV9hc2MifSx7b3B0aW9uOiJQcmljZTogSGlnaCB0byBMb3ciLGtleToicHJpY2VfZGVzYyJ9XX0KICAgICAgICAgID48L2RlZXMtaW5wdXQtZHJvcGRvd24+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWlucHV0LWNoZWNrYm94CiAgICAgICAgICAgIGtleT0iaW5TdG9jayIKICAgICAgICAgICAgbGFiZWw9IkluIFN0b2NrIE9ubHkiCiAgICAgICAgICAgIC52YWx1ZT0keyEwfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1jaGVja2JveD4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgogICAgCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57bGV0IGU9cy5xdWVyeVNlbGVjdG9yKCJkZWVzLWZvcm0iKSx0PXMucXVlcnlTZWxlY3RvcigiI3N0YXR1cy1kaXNwbGF5Iik7aWYoZSl7ZS5hZGRFdmVudExpc3RlbmVyKCJmb3JtRGF0YSIsKGFzeW5jIHI9PntsZXQgbj1yLmRldGFpbC5kYXRhO2NvbnNvbGUubG9nKCJBZHZhbmNlZCBmb3JtIGRhdGE6IixuKSxlLnNldFN0YXR1cygicGVuZGluZyIsIlZhbGlkYXRpbmcgeW91ciBpbmZvcm1hdGlvbi4uLiIpLGF3YWl0IGx0LnBsdWdpbnMuc21hcnRkZWxheS5kZWxheUZvcigxNTAwKSxuLmliYW4mJm4uaWJhbi5sZW5ndGg+MTU/KGUuc2V0U3RhdHVzKCJzdWNjZXNzIiwiQXBwbGljYXRpb24gc3VibWl0dGVkIHN1Y2Nlc3NmdWxseSEiKSx0JiYodC5jbGFzc05hbWU9InN0YXR1cy1tZXNzYWdlIHN1Y2Nlc3MiLHQudGV4dENvbnRlbnQ9Ilx1MjcxMyBZb3VyIGFwcGxpY2F0aW9uIGhhcyBiZWVuIHN1Ym1pdHRlZC4gV2Ugd2lsbCBjb250YWN0IHlvdSBzb29uLiIpKTooZS5zZXRTdGF0dXMoImVycm9yIiwiUGxlYXNlIGNoZWNrIHlvdXIgSUJBTiIpLHQmJih0LmNsYXNzTmFtZT0ic3RhdHVzLW1lc3NhZ2UgZXJyb3IiLHQudGV4dENvbnRlbnQ9Ilx1MjcxNyBJbnZhbGlkIElCQU4gZm9ybWF0LiBQbGVhc2UgY2hlY2sgYW5kIHRyeSBhZ2Fpbi4iKSksY29uc29sZS5sb2coIkZvcm0gZGF0YSBsb2dnZWQ6IixuKX0pKTtsZXQgYT1lLnF1ZXJ5U2VsZWN0b3IoImRlZXMtaW5wdXQtZmlsZXVwbG9hZCIpO2EmJmEuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixyPT57bGV0IG49ci5kZXRhaWw/LmZpbGVzfHxbXTtjb25zb2xlLmxvZyhgJHtuLmxlbmd0aH0gZmlsZShzKSBzZWxlY3RlZCBmb3IgdXBsb2FkYCl9KX19fT4KICAgICAgPGRlZXMtcGFuZWwgLmhlYWRpbmc9IkFkdmFuY2VkIEZvcm0gRmVhdHVyZXMiIC5kZXNjcmlwdGlvbj0iRm9ybSB3aXRoIHNwZWNpYWxpemVkIGlucHV0IHR5cGVzIGFuZCBjb21wbGV4IHZhbGlkYXRpb24iPgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1pYmFuIAogICAgICAgICAgICBrZXk9ImliYW4iCiAgICAgICAgICAgIGxhYmVsPSJJQkFOIgogICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0KICAgICAgICAgID48L2RlZXMtaW5wdXQtaWJhbj4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtaW5wdXQtcGhvbmUKICAgICAgICAgICAga2V5PSJwaG9uZSIKICAgICAgICAgICAgbGFiZWw9IlBob25lIE51bWJlciIKICAgICAgICAgICAgLnJlcXVpcmVkPSR7ITB9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXBob25lPgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1pbnB1dC1tdWx0aXRvZ2dsZQogICAgICAgICAgICBrZXk9InByZWZlcmVuY2VzIgogICAgICAgICAgICAubGFiZWw9JHsiTm90aWZpY2F0aW9uIFByZWZlcmVuY2VzIn0KICAgICAgICAgICAgLm9wdGlvbnM9JHtbIkVtYWlsIiwiU01TIiwiUHVzaCIsIkluLUFwcCJdfQogICAgICAgICAgICAuc2VsZWN0ZWRPcHRpb249JHsiRW1haWwifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1tdWx0aXRvZ2dsZT4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtaW5wdXQtbXVsdGlzZWxlY3QKICAgICAgICAgICAga2V5PSJpbnRlcmVzdHMiCiAgICAgICAgICAgIC5sYWJlbD0keyJBcmVhcyBvZiBJbnRlcmVzdCJ9CiAgICAgICAgICAgIC5vcHRpb25zPSR7W3tvcHRpb246IlRlY2hub2xvZ3kiLGtleToidGVjaCJ9LHtvcHRpb246IkRlc2lnbiIsa2V5OiJkZXNpZ24ifSx7b3B0aW9uOiJCdXNpbmVzcyIsa2V5OiJidXNpbmVzcyJ9LHtvcHRpb246Ik1hcmtldGluZyIsa2V5OiJtYXJrZXRpbmcifSx7b3B0aW9uOiJTYWxlcyIsa2V5OiJzYWxlcyJ9XX0KICAgICAgICAgID48L2RlZXMtaW5wdXQtbXVsdGlzZWxlY3Q+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWlucHV0LWZpbGV1cGxvYWQKICAgICAgICAgICAga2V5PSJkb2N1bWVudHMiCiAgICAgICAgICAgIC5sYWJlbD0keyJVcGxvYWQgRG9jdW1lbnRzIn0KICAgICAgICAgICAgLmluZm9UZXh0PSR7IlBERiwgRE9DLCBvciBET0NYIGZpbGVzIHVwIHRvIDEwTUIifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1maWxldXBsb2FkPgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1mb3JtLXN1Ym1pdD5TdWJtaXQgQXBwbGljYXRpb248L2RlZXMtZm9ybS1zdWJtaXQ+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgICAgCiAgICAgICAgPGRpdiBpZD0ic3RhdHVzLWRpc3BsYXkiPjwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CiAgPC9kaXY+CmAsImRlbW9GdW5jIil9KTt2YXIgSTNhLFNpdCxBM2EsTjNhLHV2PWcoKCk9PntwZSgpO2t0KCk7b25lKCk7UmV0KCk7aG5lKCk7eGgoKTtxZXQoKTtibmUoKTt3bmUoKTtVZXQoKTtZZXQoKTtaZXQoKTtYZXQoKTtKZXQoKTt0dHQoKTthdHQoKTtzdHQoKTtHY2UoKTtLY2UoKTtBOCgpO2tpdCgpO1AzYSgpO0kzYT1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sU2l0PWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxBM2E9W3JuZSxkbmUscG5lLHluZSxrbmUsTW5lLHpuZSxUbmUsbW5lLGduZSxmbmUsJG5lLERuZSxMbmUsRW5lLEhYLFljZSxYY2VdLE4zYT0oKCk9PntsZXQgcz1bbmUoImRlZXMtZm9ybSIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdO3ZhciBwPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzRm9ybSIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBkPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6Qm9vbGVhbixyZWZsZWN0OiEwLGF0dHJpYnV0ZToiaG9yaXpvbnRhbC1sYXlvdXQifSldLEkzYSh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6Imhvcml6b250YWxMYXlvdXQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkodT0+Imhvcml6b250YWxMYXlvdXQiaW4gdSwiaGFzIiksZ2V0OmkodT0+dS5ob3Jpem9udGFsTGF5b3V0LCJnZXQiKSxzZXQ6aSgodSxjKT0+e3UuaG9yaXpvbnRhbExheW91dD1jfSwic2V0Iil9LG1ldGFkYXRhOmR9LG8sbCksSTNhKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOmR9LG51bGwsdCkscD1hPWUudmFsdWUsZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpkfSl9c3RhdGljIGRlbW89RTNhO3N0YXRpYyBkZW1vR3JvdXBzPVsiRm9ybSJdO25hbWU9Im15Zm9ybSI7Y2hhbmdlU3ViamVjdD1uZXcgdXQuc21hcnRyeC5yeGpzLlN1YmplY3Q7cmVhZHlEZWZlcnJlZD11dC5zbWFydHByb21pc2UuZGVmZXIoKTsjZT1TaXQodGhpcyxvLCExKTtnZXQgaG9yaXpvbnRhbExheW91dCgpe3JldHVybiB0aGlzLiNlfXNldCBob3Jpem9udGFsTGF5b3V0KGQpe3RoaXMuI2U9ZH1zdGF0aWMgc3R5bGVzPVtKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMTZweDsKICAgICAgfQoKICAgICAgOmhvc3QoW2hvcml6b250YWwtbGF5b3V0XSkgewogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICAgIGdhcDogMTZweDsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxzbG90Pjwvc2xvdD4KICAgIGB9YXN5bmMgZmlyc3RVcGRhdGVkKCl7bGV0IGQ9dGhpcy5nZXRGb3JtRWxlbWVudHMoKTt0aGlzLnVwZGF0ZVJlcXVpcmVkU3RhdHVzKCksdGhpcy51cGRhdGVDaGlsZHJlbkxheW91dE1vZGUoKTtmb3IobGV0IHUgb2YgZCl1LmNoYW5nZVN1YmplY3Quc3Vic2NyaWJlKGFzeW5jKCk9PntsZXQgYz1hd2FpdCB0aGlzLmNvbGxlY3RGb3JtRGF0YSgpO3RoaXMuY2hhbmdlU3ViamVjdC5uZXh0KGMpLGNvbnNvbGUubG9nKGMpLHRoaXMudXBkYXRlUmVxdWlyZWRTdGF0dXMoKX0pO2F3YWl0IHRoaXMuYWRkQmVoYXZpb3VycygpLHRoaXMucmVhZHlEZWZlcnJlZC5yZXNvbHZlKCl9Z2V0Rm9ybUVsZW1lbnRzKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5xdWVyeVNlbGVjdG9yQWxsKCIqIikpLmZpbHRlcihkPT5BM2EuaW5jbHVkZXMoZC5jb25zdHJ1Y3RvcikpfWdldFN1Ym1pdEJ1dHRvbigpe3JldHVybiBBcnJheS5mcm9tKHRoaXMucXVlcnlTZWxlY3RvckFsbCgiKiIpKS5maW5kKGQ9PmQgaW5zdGFuY2VvZiB2bmUpfWFzeW5jIHVwZGF0ZVJlcXVpcmVkU3RhdHVzKCl7Y29uc29sZS5sb2coImNoZWNraW5nIHRoZSByZXF1aXJlZCBzdGF0dXMuIik7bGV0IGQ9ITA7Zm9yKGxldCBjIG9mIHRoaXMuZ2V0Rm9ybUVsZW1lbnRzKCkpYy5yZXF1aXJlZCYmIWMudmFsdWUmJihkPSExKTtsZXQgdT10aGlzLmdldFN1Ym1pdEJ1dHRvbigpO3UmJih1LmRpc2FibGVkPSFkKX1hc3luYyBjb2xsZWN0Rm9ybURhdGEoKXtsZXQgZD10aGlzLmdldEZvcm1FbGVtZW50cygpLHU9e307Zm9yKGxldCBjIG9mIGQpe2lmKCFjLmtleSl7Y29uc29sZS5sb2coYGZvcm0gZWxlbWVudCB3aXRoIGxhYmVsICIke2MubGFiZWx9IiBoYXMgbm8ga2V5LiBza2lwcGluZy5gKTtjb250aW51ZX11W2Mua2V5XT1jLnZhbHVlfXJldHVybiB1fWFzeW5jIGdhdGhlckFuZERpc3BhdGNoKCl7bGV0IGQ9YXdhaXQgdGhpcy5jb2xsZWN0Rm9ybURhdGEoKSx1PW5ldyBDdXN0b21FdmVudCgiZm9ybURhdGEiLHtkZXRhaWw6e2RhdGE6ZH0sYnViYmxlczohMH0pO3RoaXMuZGlzcGF0Y2hFdmVudCh1KSxjb25zb2xlLmxvZygiZGlzcGF0Y2hlZCBkYXRhOiIpLGNvbnNvbGUubG9nKGQpfXNldFN0YXR1cyhkLHUpe2xldCBjPXRoaXMuZ2V0Rm9ybUVsZW1lbnRzKCksYj10aGlzLmdldFN1Ym1pdEJ1dHRvbigpO2lmKGIpe3N3aXRjaChkKXtjYXNlIm5vcm1hbCI6Yi5kaXNhYmxlZD0hMSxiLnN0YXR1cz0ibm9ybWFsIjtmb3IobGV0IHYgb2YgYyl2LmRpc2FibGVkPSExO2JyZWFrO2Nhc2UicGVuZGluZyI6Yi5kaXNhYmxlZD0hMCxiLnN0YXR1cz0icGVuZGluZyI7Zm9yKGxldCB2IG9mIGMpdi5kaXNhYmxlZD0hMDticmVhaztjYXNlInN1Y2Nlc3MiOmIuZGlzYWJsZWQ9ITAsYi5zdGF0dXM9InN1Y2Nlc3MiO2ZvcihsZXQgdiBvZiBjKXYuZGlzYWJsZWQ9ITA7YnJlYWs7Y2FzZSJlcnJvciI6Yi5kaXNhYmxlZD0hMCxiLnN0YXR1cz0iZXJyb3IiO2ZvcihsZXQgdiBvZiBjKXYuZGlzYWJsZWQ9ITA7YnJlYWt9Yi50ZXh0PXV9fXJlc2V0KCl7bGV0IGQ9dGhpcy5nZXRGb3JtRWxlbWVudHMoKTtmb3IobGV0IHUgb2YgZCl1LnZhbHVlPW51bGw7dGhpcy5zZXRTdGF0dXMoIm5vcm1hbCIsIlN1Ym1pdCIpfWFzeW5jIGFkZEJlaGF2aW91cnMoKXt0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLGQ9PntsZXQgdT1kLnRhcmdldDtpZihBM2EuaW5jbHVkZXModS5jb25zdHJ1Y3RvcikmJmQua2V5PT09IkVudGVyIil7bGV0IGM9dGhpcy5nZXRGb3JtRWxlbWVudHMoKSxiPWMuaW5kZXhPZih1KTtiPGMubGVuZ3RoLTE/Y1tiKzFdLmZvY3VzKCk6KHUuYmx1cigpLHRoaXMuZ2V0U3VibWl0QnV0dG9uKCk/LmZvY3VzKCkpfX0pfXVwZGF0ZUNoaWxkcmVuTGF5b3V0TW9kZSgpe2xldCBkPXRoaXMuZ2V0Rm9ybUVsZW1lbnRzKCk7Zm9yKGxldCB1IG9mIGQpImxheW91dE1vZGUiaW4gdSYmKHUubGF5b3V0TW9kZT0iYXV0byIpfXVwZGF0ZWQoZCl7c3VwZXIudXBkYXRlZChkKSxkLmhhcygiaG9yaXpvbnRhbExheW91dCIpJiZ0aGlzLnVwZGF0ZUNoaWxkcmVuTGF5b3V0TW9kZSgpfWNvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSxTaXQodGhpcyxsKX1zdGF0aWN7U2l0KGEsdCl9fTtyZXR1cm4gcD1hfSkoKX0pO3ZhciBSM2EsTzNhPWcoKCk9PntwZSgpO0l0KCk7Zm8oKTt1digpO0E4KCk7eGgoKTtVYSgpO1IzYT1pKCgpPT53YAogIDxzdHlsZT4KICAgICR7SmAKICAgICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHg7CiAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgIH0KICAgICAgCiAgICAgIGRlZXMtcGFuZWwgewogICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgIH0KICAgICAgCiAgICAgIGRlZXMtcGFuZWw6bGFzdC1jaGlsZCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgfQogICAgICAKICAgICAgLmJ1dHRvbi1ncm91cCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMTJweDsKICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgIH0KICAgICAgCiAgICAgIC52ZXJ0aWNhbC1ncm91cCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIG1heC13aWR0aDogMzAwcHg7CiAgICAgIH0KICAgICAgCiAgICAgIC5ob3Jpem9udGFsLWdyb3VwIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgfQogICAgICAKICAgICAgLmRlbW8tb3V0cHV0IHsKICAgICAgICBtYXJnaW4tdG9wOiAxNnB4OwogICAgICAgIHBhZGRpbmc6IDEycHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgNDAlIDk2LjElKSIsImhzbCgyMTUgMjAuMiUgMTYuOCUpIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuMyAyNSUgOC44JSkiLCJoc2woMjEwIDQwJSA5OCUpIil9OwogICAgICB9CiAgICAgIAogICAgICAuaWNvbi1yb3cgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgbWFyZ2luOiA4cHggMDsKICAgICAgfQogICAgICAKICAgICAgLmNvZGUtc25pcHBldCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgNDAlIDk2LjElKSIsImhzbCgyMTUgMjAuMiUgMTEuOCUpIil9OwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgbWFyZ2luOiA0cHggMDsKICAgICAgfQogICAgYH0KICA8L3N0eWxlPgogIAogIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntzLnF1ZXJ5U2VsZWN0b3JBbGwoImRlZXMtYnV0dG9uIikuZm9yRWFjaCh0PT57dC5hZGRFdmVudExpc3RlbmVyKCJjbGlja2VkIiwoKT0+e2xldCBhPXQuZ2V0QXR0cmlidXRlKCJ0eXBlIil8fCJkZWZhdWx0Ijtjb25zb2xlLmxvZyhgQnV0dG9uIHZhcmlhbnQgY2xpY2tlZDogJHthfWApfSl9KX19PgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiMS4gQnV0dG9uIFZhcmlhbnRzIn0gLnN1YnRpdGxlPSR7IkRpZmZlcmVudCB2aXN1YWwgc3R5bGVzIGZvciB2YXJpb3VzIHVzZSBjYXNlcyJ9PgogICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ncm91cCI+CiAgICAgICAgICA8ZGVlcy1idXR0b24gdHlwZT0iZGVmYXVsdCI+RGVmYXVsdDwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gdHlwZT0ic2Vjb25kYXJ5Ij5TZWNvbmRhcnk8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9ImRlc3RydWN0aXZlIj5EZXN0cnVjdGl2ZTwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gdHlwZT0ib3V0bGluZSI+T3V0bGluZTwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gdHlwZT0iZ2hvc3QiPkdob3N0PC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiB0eXBlPSJsaW5rIj5MaW5rIEJ1dHRvbjwvZGVlcy1idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KICAgIAogICAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e3MucXVlcnlTZWxlY3RvckFsbCgiZGVlcy1idXR0b24iKS5mb3JFYWNoKHQ9Pnt0LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrZWQiLCgpPT57bGV0IGE9dC5nZXRBdHRyaWJ1dGUoInNpemUiKXx8ImRlZmF1bHQiO2NvbnNvbGUubG9nKGBCdXR0b24gc2l6ZTogJHthfWApfSl9KX19PgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiMi4gQnV0dG9uIFNpemVzIn0gLnN1YnRpdGxlPSR7Ik11bHRpcGxlIHNpemVzIGZvciBkaWZmZXJlbnQgY29udGV4dHMgYW5kIHVzZSBjYXNlcyJ9PgogICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ncm91cCI+CiAgICAgICAgICA8ZGVlcy1idXR0b24gc2l6ZT0ic20iPlNtYWxsIEJ1dHRvbjwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gc2l6ZT0iZGVmYXVsdCI+RGVmYXVsdCBTaXplPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiBzaXplPSJsZyI+TGFyZ2UgQnV0dG9uPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiBzaXplPSJpY29uIiB0eXBlPSJvdXRsaW5lIiAudGV4dD0keyJcdXsxRjY4MH0ifT48L2RlZXMtYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICAgIAogICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ncm91cCIgc3R5bGU9Im1hcmdpbi10b3A6IDE2cHg7Ij4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiBzaXplPSJzbSIgdHlwZT0ic2Vjb25kYXJ5Ij5TbWFsbCBTZWNvbmRhcnk8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHNpemU9ImRlZmF1bHQiIHR5cGU9ImRlc3RydWN0aXZlIj5EZWZhdWx0IERlc3RydWN0aXZlPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiBzaXplPSJsZyIgdHlwZT0ib3V0bGluZSI+TGFyZ2UgT3V0bGluZTwvZGVlcy1idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KICAgIAogICAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e3MucXVlcnlTZWxlY3RvckFsbCgiZGVlcy1idXR0b24iKS5mb3JFYWNoKHQ9Pnt0LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrZWQiLCgpPT57bGV0IGE9dC5xdWVyeVNlbGVjdG9yKCJkZWVzLWljb24iKTtpZihhKXtsZXQgcj1hLmdldEF0dHJpYnV0ZSgiaWNvbkZBIil8fCJ1bmtub3duIjtjb25zb2xlLmxvZyhgSWNvbiBidXR0b24gY2xpY2tlZDogJHtyfWApfX0pfSl9fT4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjMuIEJ1dHRvbnMgd2l0aCBJY29ucyJ9IC5zdWJ0aXRsZT0keyJDb21iaW5pbmcgaWNvbnMgd2l0aCB0ZXh0IGZvciBlbmhhbmNlZCB2aXN1YWwgY29tbXVuaWNhdGlvbiJ9PgogICAgICAgIDxkaXYgY2xhc3M9Imljb24tcm93Ij4KICAgICAgICAgIDxkZWVzLWJ1dHRvbj4KICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJmYTpwbHVzIj48L2RlZXMtaWNvbj4KICAgICAgICAgICAgQWRkIEl0ZW0KICAgICAgICAgIDwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gdHlwZT0iZGVzdHJ1Y3RpdmUiPgogICAgICAgICAgICA8ZGVlcy1pY29uIGljb249ImZhOnRyYXNoIj48L2RlZXMtaWNvbj4KICAgICAgICAgICAgRGVsZXRlCiAgICAgICAgICA8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9Im91dGxpbmUiPgogICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpEb3dubG9hZCI+PC9kZWVzLWljb24+CiAgICAgICAgICAgIERvd25sb2FkCiAgICAgICAgICA8L2RlZXMtYnV0dG9uPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJpY29uLXJvdyI+CiAgICAgICAgICA8ZGVlcy1idXR0b24gdHlwZT0ic2Vjb25kYXJ5IiBzaXplPSJzbSI+CiAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0iZmE6Z2VhciI+PC9kZWVzLWljb24+CiAgICAgICAgICAgIFNldHRpbmdzCiAgICAgICAgICA8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9Imdob3N0Ij4KICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJmYTpjYXJldExlZnQiPjwvZGVlcy1pY29uPgogICAgICAgICAgICBCYWNrCiAgICAgICAgICA8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9Imdob3N0Ij4KICAgICAgICAgICAgTmV4dAogICAgICAgICAgICA8ZGVlcy1pY29uIGljb249ImZhOmNhcmV0UmlnaHQiPjwvZGVlcy1pY29uPgogICAgICAgICAgPC9kZWVzLWJ1dHRvbj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iaWNvbi1yb3ciPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHNpemU9Imljb24iIHR5cGU9ImRlZmF1bHQiPgogICAgICAgICAgICA8ZGVlcy1pY29uIGljb249ImZhOnBsdXMiPjwvZGVlcy1pY29uPgogICAgICAgICAgPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiBzaXplPSJpY29uIiB0eXBlPSJzZWNvbmRhcnkiPgogICAgICAgICAgICA8ZGVlcy1pY29uIGljb249ImZhOmdlYXIiPjwvZGVlcy1pY29uPgogICAgICAgICAgPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiBzaXplPSJpY29uIiB0eXBlPSJvdXRsaW5lIj4KICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6U2VhcmNoIj48L2RlZXMtaWNvbj4KICAgICAgICAgIDwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gc2l6ZT0iaWNvbiIgdHlwZT0iZ2hvc3QiPgogICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpNb3JlVmVydGljYWwiPjwvZGVlcy1pY29uPgogICAgICAgICAgPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiBzaXplPSJpY29uIiB0eXBlPSJkZXN0cnVjdGl2ZSI+CiAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0iZmE6dHJhc2giPjwvZGVlcy1pY29uPgogICAgICAgICAgPC9kZWVzLWJ1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgoKICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntzLnF1ZXJ5U2VsZWN0b3JBbGwoImRlZXMtYnV0dG9uIikuZm9yRWFjaCh0PT57dC5hZGRFdmVudExpc3RlbmVyKCJjbGlja2VkIiwoKT0+e2xldCBhPXQuZ2V0QXR0cmlidXRlKCJpY29uIil8fCJub25lIixyPXQuZ2V0QXR0cmlidXRlKCJpY29uUG9zaXRpb24iKXx8ImxlZnQiO2NvbnNvbGUubG9nKGBJY29uIHByb3BlcnR5IGJ1dHRvbjogaWNvbj0ke2F9LCBwb3NpdGlvbj0ke3J9YCl9KX0pfX0+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyI0LiBJY29ucyB2aWEgUHJvcGVydHkifSAuc3VidGl0bGU9JHsiU2ltcGxpZmllZCBpY29uIHN5bnRheCB1c2luZyB0aGUgaWNvbiBwcm9wZXJ0eSJ9PgogICAgICAgIDxkaXYgY2xhc3M9Imljb24tcm93Ij4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiBpY29uPSJmYTpwbHVzIj5BZGQgSXRlbTwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gdHlwZT0iZGVzdHJ1Y3RpdmUiIGljb249ImZhOnRyYXNoIj5EZWxldGU8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9Im91dGxpbmUiIGljb249Imx1Y2lkZTpEb3dubG9hZCI+RG93bmxvYWQ8L2RlZXMtYnV0dG9uPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJpY29uLXJvdyI+CiAgICAgICAgICA8ZGVlcy1idXR0b24gdHlwZT0ic2Vjb25kYXJ5IiBzaXplPSJzbSIgaWNvbj0iZmE6Z2VhciI+U2V0dGluZ3M8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9Imdob3N0IiBpY29uPSJmYTpjYXJldExlZnQiPkJhY2s8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9Imdob3N0IiBpY29uPSJmYTpjYXJldFJpZ2h0IiBpY29uUG9zaXRpb249InJpZ2h0Ij5OZXh0PC9kZWVzLWJ1dHRvbj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iaWNvbi1yb3ciPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHNpemU9Imljb24iIHR5cGU9ImRlZmF1bHQiIGljb249ImZhOnBsdXMiPjwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gc2l6ZT0iaWNvbiIgdHlwZT0ic2Vjb25kYXJ5IiBpY29uPSJsdWNpZGU6U2V0dGluZ3MiPjwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gc2l6ZT0iaWNvbiIgdHlwZT0ib3V0bGluZSIgaWNvbj0ibHVjaWRlOlNlYXJjaCI+PC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiBzaXplPSJpY29uIiB0eXBlPSJnaG9zdCIgaWNvbj0ibHVjaWRlOk1vcmVWZXJ0aWNhbCI+PC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiBzaXplPSJpY29uIiB0eXBlPSJkZXN0cnVjdGl2ZSIgaWNvbj0iZmE6dHJhc2giPjwvZGVlcy1idXR0b24+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi10b3A6IDE2cHg7Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvZGUtc25pcHBldCI+CiAgICAgICAgICAgICZsdDtkZWVzLWJ1dHRvbiBpY29uPSJmYTpwbHVzIiZndDtBZGQgSXRlbSZsdDsvZGVlcy1idXR0b24mZ3Q7PGJyPgogICAgICAgICAgICAmbHQ7ZGVlcy1idXR0b24gaWNvbj0iZmE6Y2FyZXRSaWdodCIgaWNvblBvc2l0aW9uPSJyaWdodCImZ3Q7TmV4dCZsdDsvZGVlcy1idXR0b24mZ3Q7CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgoKICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntsZXQgZT1zLnF1ZXJ5U2VsZWN0b3IoJ2RlZXMtYnV0dG9uW3N0YXR1cz0icGVuZGluZyJdJyksdD1zLnF1ZXJ5U2VsZWN0b3IoJ2RlZXMtYnV0dG9uW3N0YXR1cz0ic3VjY2VzcyJdJyksYT1zLnF1ZXJ5U2VsZWN0b3IoJ2RlZXMtYnV0dG9uW3N0YXR1cz0iZXJyb3IiXScpO2UmJnNldFRpbWVvdXQoKCk9Pntjb25zb2xlLmxvZygiUGVuZGluZyBidXR0b24gaXMgc2hvd2luZyBsb2FkaW5nIHN0YXRlIil9LDFlMyksdCYmdC5hZGRFdmVudExpc3RlbmVyKCJjbGlja2VkIiwoKT0+e2NvbnNvbGUubG9nKCJTdWNjZXNzIHN0YXRlIGJ1dHRvbiBjbGlja2VkIil9KSxhJiZhLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrZWQiLCgpPT57Y29uc29sZS5sb2coIkVycm9yIHN0YXRlIGJ1dHRvbiBjbGlja2VkIil9KX19PgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiNS4gQnV0dG9uIFN0YXRlcyJ9IC5zdWJ0aXRsZT0keyJEaWZmZXJlbnQgc3RhdGVzIHRvIGluZGljYXRlIGJ1dHRvbiBzdGF0dXMgYW5kIGxvYWRpbmcgY29uZGl0aW9ucyJ9PgogICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ncm91cCI+CiAgICAgICAgICA8ZGVlcy1idXR0b24gc3RhdHVzPSJub3JtYWwiPk5vcm1hbDwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gc3RhdHVzPSJwZW5kaW5nIj5Qcm9jZXNzaW5nLi4uPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiBzdGF0dXM9InN1Y2Nlc3MiPlN1Y2Nlc3MhPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiBzdGF0dXM9ImVycm9yIj5FcnJvciE8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIGRpc2FibGVkPkRpc2FibGVkPC9kZWVzLWJ1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tZ3JvdXAiIHN0eWxlPSJtYXJnaW4tdG9wOiAxNnB4OyI+CiAgICAgICAgICA8ZGVlcy1idXR0b24gdHlwZT0ic2Vjb25kYXJ5IiBzdGF0dXM9InBlbmRpbmciIHNpemU9InNtIj5TbWFsbCBMb2FkaW5nPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiB0eXBlPSJvdXRsaW5lIiBzdGF0dXM9InBlbmRpbmciPkRlZmF1bHQgTG9hZGluZzwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gdHlwZT0iZGVzdHJ1Y3RpdmUiIHN0YXR1cz0icGVuZGluZyIgc2l6ZT0ibGciPkxhcmdlIExvYWRpbmc8L2RlZXMtYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CiAgICAKICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntsZXQgZT1zLnF1ZXJ5U2VsZWN0b3IoIiNjbGljay1vdXRwdXQiKSx0PXMucXVlcnlTZWxlY3RvcigiZGVlcy1idXR0b246Zmlyc3Qtb2YtdHlwZSIpLGE9cy5xdWVyeVNlbGVjdG9yKCdkZWVzLWJ1dHRvblt0eXBlPSJzZWNvbmRhcnkiXScpLHI9cy5xdWVyeVNlbGVjdG9yKCdkZWVzLWJ1dHRvblt0eXBlPSJkZXN0cnVjdGl2ZSJdJyk7dCYmZSYmdC5hZGRFdmVudExpc3RlbmVyKCJjbGlja2VkIiwoKT0+e2UudGV4dENvbnRlbnQ9YENsaWNrZWQ6IERlZmF1bHQgYnV0dG9uIGF0ICR7bmV3IERhdGUoKS50b0xvY2FsZVRpbWVTdHJpbmcoKX1gfSksYSYmZSYmYS5hZGRFdmVudExpc3RlbmVyKCJjbGlja2VkIixuPT57ZS50ZXh0Q29udGVudD1gQ2xpY2tlZDogU2Vjb25kYXJ5IGJ1dHRvbiB3aXRoIGRhdGE6ICR7bi5kZXRhaWwuZGF0YX1gfSksciYmZSYmci5hZGRFdmVudExpc3RlbmVyKCJjbGlja2VkIixhc3luYygpPT57ZS50ZXh0Q29udGVudD0iUHJvY2Vzc2luZy4uLiIsYXdhaXQgbHQucGx1Z2lucy5zbWFydGRlbGF5LmRlbGF5Rm9yKDJlMyksZS50ZXh0Q29udGVudD0iQWN0aW9uIGNvbXBsZXRlZCEifSl9fT4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjYuIEV2ZW50IEhhbmRsaW5nIn0gLnN1YnRpdGxlPSR7IkludGVyYWN0aXZlIGV4YW1wbGVzIHdpdGggY2xpY2sgZXZlbnQgaGFuZGxpbmcifT4KICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tZ3JvdXAiPgogICAgICAgICAgPGRlZXMtYnV0dG9uPkNsaWNrIE1lPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiB0eXBlPSJzZWNvbmRhcnkiIC5ldmVudERldGFpbERhdGE9JHsiY3VzdG9tLWRhdGEtMTIzIn0+CiAgICAgICAgICAgIENsaWNrIHdpdGggRGF0YQogICAgICAgICAgPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiB0eXBlPSJkZXN0cnVjdGl2ZSI+QXN5bmMgQWN0aW9uPC9kZWVzLWJ1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICA8ZGl2IGlkPSJjbGljay1vdXRwdXQiIGNsYXNzPSJkZW1vLW91dHB1dCI+CiAgICAgICAgICA8ZW0+Q2xpY2sgYSBidXR0b24gdG8gc2VlIHRoZSByZXN1bHQuLi48L2VtPgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CiAgICAKICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntsZXQgZT1zLnF1ZXJ5U2VsZWN0b3IoImRlZXMtZm9ybSIpLHQ9cy5xdWVyeVNlbGVjdG9yKCIjZm9ybS1vdXRwdXQiKTtlJiZ0JiZlLmFkZEV2ZW50TGlzdGVuZXIoImZvcm1EYXRhIixuPT57dC5pbm5lckhUTUw9IjxzdHJvbmc+Rm9ybSBzdWJtaXR0ZWQgd2l0aCBkYXRhOjwvc3Ryb25nPjxicj4iK0pTT04uc3RyaW5naWZ5KG4uZGV0YWlsLmRhdGEsbnVsbCwyKX0pO2xldCBhPXMucXVlcnlTZWxlY3RvcignZGVlcy1idXR0b25bdHlwZT0ic2Vjb25kYXJ5Il0nKSxyPXMucXVlcnlTZWxlY3RvcignZGVlcy1idXR0b25bdHlwZT0iZ2hvc3QiXScpO2EmJmEuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2tlZCIsKCk9Pntjb25zb2xlLmxvZygiU2F2ZSBEcmFmdCBjbGlja2VkIil9KSxyJiZyLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrZWQiLCgpPT57Y29uc29sZS5sb2coIkNhbmNlbCBjbGlja2VkIil9KX19PgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiNy4gRm9ybSBJbnRlZ3JhdGlvbiJ9IC5zdWJ0aXRsZT0keyJCdXR0b25zIHdvcmtpbmcgd2l0aGluIGZvcm1zIHdpdGggYXV0b21hdGljIHNwYWNpbmcifT4KICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dCBsYWJlbD0iTmFtZSIga2V5PSJuYW1lIiByZXF1aXJlZD48L2RlZXMtaW5wdXQtdGV4dD4KICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQgbGFiZWw9IkVtYWlsIiBrZXk9ImVtYWlsIiB0eXBlPSJlbWFpbCIgcmVxdWlyZWQ+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0IGxhYmVsPSJNZXNzYWdlIiBrZXk9Im1lc3NhZ2UiIGlzTXVsdGlsaW5lPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1idXR0b24gdHlwZT0ic2Vjb25kYXJ5Ij5TYXZlIERyYWZ0PC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiB0eXBlPSJnaG9zdCI+Q2FuY2VsPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWZvcm0tc3VibWl0PlN1Ym1pdCBGb3JtPC9kZWVzLWZvcm0tc3VibWl0PgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICAgIAogICAgICAgIDxkaXYgaWQ9ImZvcm0tb3V0cHV0IiBjbGFzcz0iZGVtby1vdXRwdXQiIHN0eWxlPSJ3aGl0ZS1zcGFjZTogcHJlLXdyYXA7Ij4KICAgICAgICAgIDxlbT5TdWJtaXQgdGhlIGZvcm0gdG8gc2VlIHRoZSBkYXRhLi4uPC9lbT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgogICAgCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57cy5xdWVyeVNlbGVjdG9yQWxsKCJkZWVzLWJ1dHRvbiIpLmZvckVhY2godD0+e2xldCBhPXQuZ2V0QXR0cmlidXRlKCJ0eXBlIik7YSYmY29uc29sZS5sb2coYExlZ2FjeSB0eXBlICIke2F9IiBpcyBzdXBwb3J0ZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlgKX0pfX0+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyI4LiBCYWNrd2FyZCBDb21wYXRpYmlsaXR5In0gLnN1YnRpdGxlPSR7Ik9sZCBidXR0b24gdHlwZXMgYXJlIGF1dG9tYXRpY2FsbHkgbWFwcGVkIHRvIG5ldyB2YXJpYW50cyJ9PgogICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ncm91cCI+CiAgICAgICAgICA8ZGVlcy1idXR0b24gdHlwZT0ibm9ybWFsIj5Ob3JtYWwg4oaSIERlZmF1bHQ8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9ImhpZ2hsaWdodGVkIj5IaWdobGlnaHRlZCDihpIgRGVzdHJ1Y3RpdmU8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9ImRpc2NyZWV0Ij5EaXNjcmVldCDihpIgT3V0bGluZTwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gdHlwZT0iYmlnIj5CaWcg4oaSIExhcmdlIFNpemU8L2RlZXMtYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICAgIAogICAgICAgIDxwIHN0eWxlPSJtYXJnaW4tdG9wOiAxNnB4OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDU2LjklKSIsImhzbCgyMTUgMjAuMiUgNTUuMSUpIil9OyI+CiAgICAgICAgICBUaGVzZSBsZWdhY3kgdHlwZSB2YWx1ZXMgYXJlIG1haW50YWluZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgYnV0IHdlIHJlY29tbWVuZCB1c2luZyB0aGUgbmV3IHZhcmlhbnQgc3lzdGVtLgogICAgICAgIDwvcD4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgogICAgCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57bGV0IGU9cy5xdWVyeVNlbGVjdG9yQWxsKCIudmVydGljYWwtZ3JvdXAiKVswXSx0PXMucXVlcnlTZWxlY3RvckFsbCgiLnZlcnRpY2FsLWdyb3VwIilbMV07ZSYmZS5xdWVyeVNlbGVjdG9yQWxsKCJkZWVzLWJ1dHRvbiIpLmZvckVhY2goKHIsbik9PntyLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrZWQiLCgpPT57bGV0IG89WyJTYXZlIENoYW5nZXMiLCJEaXNjYXJkIiwiSGVscCJdW25dO2NvbnNvbGUubG9nKGBBY3Rpb24gZ3JvdXA6ICR7b30gY2xpY2tlZGApfSl9KSx0JiZ0LnF1ZXJ5U2VsZWN0b3JBbGwoImRlZXMtYnV0dG9uIikuZm9yRWFjaCgocixuKT0+e3IuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2tlZCIsKCk9PntsZXQgbz1bIkRlbGV0ZSBBY2NvdW50IiwiQXJjaGl2ZSBEYXRhIiwiTm90IEF2YWlsYWJsZSJdW25dO24hPT0yJiZjb25zb2xlLmxvZyhgRGFuZ2VyIHpvbmU6ICR7b30gY2xpY2tlZGApfSl9KX19PgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiOS4gQWR2YW5jZWQgRXhhbXBsZXMifSAuc3VidGl0bGU9JHsiQ29tcGxleCBidXR0b24gY29uZmlndXJhdGlvbnMgYW5kIHJlYWwtd29ybGQgdXNlIGNhc2VzIn0+CiAgICAgICAgPGRpdiBjbGFzcz0iaG9yaXpvbnRhbC1ncm91cCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJ0aWNhbC1ncm91cCI+CiAgICAgICAgICAgIDxoNCBzdHlsZT0ibWFyZ2luOiAwIDAgOHB4IDA7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDUwMDsiPkFjdGlvbiBHcm91cDwvaDQ+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbiB0eXBlPSJkZWZhdWx0IiBzaXplPSJzbSI+CiAgICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6U2F2ZSI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgU2F2ZSBDaGFuZ2VzCiAgICAgICAgICAgIDwvZGVlcy1idXR0b24+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbiB0eXBlPSJzZWNvbmRhcnkiIHNpemU9InNtIj4KICAgICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpVbmRvMiI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgRGlzY2FyZAogICAgICAgICAgICA8L2RlZXMtYnV0dG9uPgogICAgICAgICAgICA8ZGVlcy1idXR0b24gdHlwZT0iZ2hvc3QiIHNpemU9InNtIj4KICAgICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpIZWxwQ2lyY2xlIj48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICBIZWxwCiAgICAgICAgICAgIDwvZGVlcy1idXR0b24+CiAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJ0aWNhbC1ncm91cCI+CiAgICAgICAgICAgIDxoNCBzdHlsZT0ibWFyZ2luOiAwIDAgOHB4IDA7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDUwMDsiPkRhbmdlciBab25lPC9oND4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9ImRlc3RydWN0aXZlIiBzaXplPSJzbSI+CiAgICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJmYTp0cmFzaCI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgRGVsZXRlIEFjY291bnQKICAgICAgICAgICAgPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9Im91dGxpbmUiIHNpemU9InNtIj4KICAgICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpBcmNoaXZlIj48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICBBcmNoaXZlIERhdGEKICAgICAgICAgICAgPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9Imdob3N0IiBzaXplPSJzbSIgZGlzYWJsZWQ+CiAgICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6QmFuIj48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICBOb3QgQXZhaWxhYmxlCiAgICAgICAgICAgIDwvZGVlcy1idXR0b24+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOiAyNHB4OyI+CiAgICAgICAgICA8aDQgc3R5bGU9Im1hcmdpbjogMCAwIDhweCAwOyBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiA1MDA7Ij5Db2RlIEV4YW1wbGU6PC9oND4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvZGUtc25pcHBldCI+CiAgICAgICAgICAgICZsdDtkZWVzLWJ1dHRvbiB0eXBlPSJkZWZhdWx0IiBzaXplPSJzbSIgaWNvbj0ibHVjaWRlOlNhdmUiIEBjbGlja2VkPSJcJHtoYW5kbGVDbGlja30iJmd0Ozxicj4KICAgICAgICAgICAgJm5ic3A7Jm5ic3A7U2F2ZSBDaGFuZ2VzPGJyPgogICAgICAgICAgICAmbHQ7L2RlZXMtYnV0dG9uJmd0OwogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KICA8L2Rpdj4KYCwiZGVtb0Z1bmMiKX0pO3ZhciByMix1cixGM2EsRDg9ZygoKT0+e3BlKCk7a3QoKTtPM2EoKTtwdCgpO3IyPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSx1cj1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sRjNhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1idXR0b24iKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXSxPLCQ9W10sRT1bXSxILGs9W10sUz1bXSxJLFA9W10sUj1bXSxLLFY9W10sVz1bXTt2YXIgbWU9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNCdXR0b24iKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgQj10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHtyZWZsZWN0OiEwLGhhc0NoYW5nZWQoKXtyZXR1cm4hMH19KV0scD1bTCgpXSxjPVtMKHt0eXBlOkJvb2xlYW4scmVmbGVjdDohMH0pXSx4PVtMKHt0eXBlOkJvb2xlYW59KV0seT1bTCh7dHlwZTpTdHJpbmd9KV0sTj1bTCh7dHlwZTpTdHJpbmd9KV0sTz1bTCh7dHlwZTpTdHJpbmd9KV0sSD1bTCh7dHlwZTpCb29sZWFuLHJlZmxlY3Q6ITB9KV0sST1bTCh7dHlwZTpTdHJpbmcscmVmbGVjdDohMH0pXSxLPVtMKHt0eXBlOlN0cmluZyxyZWZsZWN0OiEwfSldLHIyKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidGV4dCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4idGV4dCJpbiBVLCJoYXMiKSxnZXQ6aShVPT5VLnRleHQsImdldCIpLHNldDppKChVLGhlKT0+e1UudGV4dD1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxvLGwpLHIyKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZXZlbnREZXRhaWxEYXRhIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFU9PiJldmVudERldGFpbERhdGEiaW4gVSwiaGFzIiksZ2V0OmkoVT0+VS5ldmVudERldGFpbERhdGEsImdldCIpLHNldDppKChVLGhlKT0+e1UuZXZlbnREZXRhaWxEYXRhPWhlfSwic2V0Iil9LG1ldGFkYXRhOkJ9LGQsdSkscjIodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJkaXNhYmxlZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4iZGlzYWJsZWQiaW4gVSwiaGFzIiksZ2V0OmkoVT0+VS5kaXNhYmxlZCwiZ2V0Iiksc2V0OmkoKFUsaGUpPT57VS5kaXNhYmxlZD1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxiLHYpLHIyKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNIaWRkZW4iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVT0+ImlzSGlkZGVuImluIFUsImhhcyIpLGdldDppKFU9PlUuaXNIaWRkZW4sImdldCIpLHNldDppKChVLGhlKT0+e1UuaXNIaWRkZW49aGV9LCJzZXQiKX0sbWV0YWRhdGE6Qn0sbSxmKSxyMih0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InR5cGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVT0+InR5cGUiaW4gVSwiaGFzIiksZ2V0OmkoVT0+VS50eXBlLCJnZXQiKSxzZXQ6aSgoVSxoZSk9PntVLnR5cGU9aGV9LCJzZXQiKX0sbWV0YWRhdGE6Qn0sTSx6KSxyMih0aGlzLG51bGwsTix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNpemUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVT0+InNpemUiaW4gVSwiaGFzIiksZ2V0OmkoVT0+VS5zaXplLCJnZXQiKSxzZXQ6aSgoVSxoZSk9PntVLnNpemU9aGV9LCJzZXQiKX0sbWV0YWRhdGE6Qn0sQyxfKSxyMih0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InN0YXR1cyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4ic3RhdHVzImluIFUsImhhcyIpLGdldDppKFU9PlUuc3RhdHVzLCJnZXQiKSxzZXQ6aSgoVSxoZSk9PntVLnN0YXR1cz1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSwkLEUpLHIyKHRoaXMsbnVsbCxILHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaW5zaWRlRm9ybSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4iaW5zaWRlRm9ybSJpbiBVLCJoYXMiKSxnZXQ6aShVPT5VLmluc2lkZUZvcm0sImdldCIpLHNldDppKChVLGhlKT0+e1UuaW5zaWRlRm9ybT1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxrLFMpLHIyKHRoaXMsbnVsbCxJLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaWNvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4iaWNvbiJpbiBVLCJoYXMiKSxnZXQ6aShVPT5VLmljb24sImdldCIpLHNldDppKChVLGhlKT0+e1UuaWNvbj1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxQLFIpLHIyKHRoaXMsbnVsbCxLLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaWNvblBvc2l0aW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFU9PiJpY29uUG9zaXRpb24iaW4gVSwiaGFzIiksZ2V0OmkoVT0+VS5pY29uUG9zaXRpb24sImdldCIpLHNldDppKChVLGhlKT0+e1UuaWNvblBvc2l0aW9uPWhlfSwic2V0Iil9LG1ldGFkYXRhOkJ9LFYsVykscjIobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6Qn0sbnVsbCx0KSxtZT1hPWUudmFsdWUsQiYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpCfSl9c3RhdGljIGRlbW89UjNhO3N0YXRpYyBkZW1vR3JvdXBzPVsiQnV0dG9uIl07I2U9dXIodGhpcyxvLHZvaWQgMCk7Z2V0IHRleHQoKXtyZXR1cm4gdGhpcy4jZX1zZXQgdGV4dChCKXt0aGlzLiNlPUJ9I3Q9KHVyKHRoaXMsbCksdXIodGhpcyxkLHZvaWQgMCkpO2dldCBldmVudERldGFpbERhdGEoKXtyZXR1cm4gdGhpcy4jdH1zZXQgZXZlbnREZXRhaWxEYXRhKEIpe3RoaXMuI3Q9Qn0jYT0odXIodGhpcyx1KSx1cih0aGlzLGIsITEpKTtnZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy4jYX1zZXQgZGlzYWJsZWQoQil7dGhpcy4jYT1CfSNzPSh1cih0aGlzLHYpLHVyKHRoaXMsbSwhMSkpO2dldCBpc0hpZGRlbigpe3JldHVybiB0aGlzLiNzfXNldCBpc0hpZGRlbihCKXt0aGlzLiNzPUJ9I2k9KHVyKHRoaXMsZiksdXIodGhpcyxNLCJkZWZhdWx0IikpO2dldCB0eXBlKCl7cmV0dXJuIHRoaXMuI2l9c2V0IHR5cGUoQil7dGhpcy4jaT1CfSNyPSh1cih0aGlzLHopLHVyKHRoaXMsQywiZGVmYXVsdCIpKTtnZXQgc2l6ZSgpe3JldHVybiB0aGlzLiNyfXNldCBzaXplKEIpe3RoaXMuI3I9Qn0jbz0odXIodGhpcyxfKSx1cih0aGlzLCQsIm5vcm1hbCIpKTtnZXQgc3RhdHVzKCl7cmV0dXJuIHRoaXMuI299c2V0IHN0YXR1cyhCKXt0aGlzLiNvPUJ9I249KHVyKHRoaXMsRSksdXIodGhpcyxrLCExKSk7Z2V0IGluc2lkZUZvcm0oKXtyZXR1cm4gdGhpcy4jbn1zZXQgaW5zaWRlRm9ybShCKXt0aGlzLiNuPUJ9I2w9KHVyKHRoaXMsUyksdXIodGhpcyxQLHZvaWQgMCkpO2dldCBpY29uKCl7cmV0dXJuIHRoaXMuI2x9c2V0IGljb24oQil7dGhpcy4jbD1CfSNjPSh1cih0aGlzLFIpLHVyKHRoaXMsViwibGVmdCIpKTtnZXQgaWNvblBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuI2N9c2V0IGljb25Qb3NpdGlvbihCKXt0aGlzLiNjPUJ9Y29uc3RydWN0b3IoKXtzdXBlcigpLHVyKHRoaXMsVyl9YXN5bmMgY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLCF0aGlzLmluc2lkZUZvcm0mJnRoaXMuY2xvc2VzdCgiZGVlcy1mb3JtIikmJih0aGlzLmluc2lkZUZvcm09ITApfXN0YXRpYyBzdHlsZXM9W0hlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICAvKiBUT0RPOiBNaWdyYXRlIGhhcmRjb2RlZCB2YWx1ZXMgdG8gLS1kZWVzLSogQ1NTIHZhcmlhYmxlcyAqLwogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgICAgIH0KICAgICAgOmhvc3QoW2hpZGRlbl0pIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CgogICAgICAvKiBGb3JtIHNwYWNpbmcgc3R5bGVzICovCiAgICAgIDpob3N0KFtpbnNpZGUtZm9ybV0pIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICB9CiAgICAgIAogICAgICA6aG9zdChbaW5zaWRlLWZvcm1dOmxhc3QtY2hpbGQpIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICB9CiAgICAgIAogICAgICBkZWVzLWZvcm1baG9yaXpvbnRhbC1sYXlvdXRdIDpob3N0KFtpbnNpZGUtZm9ybV0pIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNnB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgIH0KICAgICAgCiAgICAgIGRlZXMtZm9ybVtob3Jpem9udGFsLWxheW91dF0gOmhvc3QoW2luc2lkZS1mb3JtXTpsYXN0LWNoaWxkKSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgICB9CgogICAgICAuYnV0dG9uIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICAgIGdhcDogOHB4OwogICAgICB9CgogICAgICAvKiBTaXplIHZhcmlhbnRzICovCiAgICAgIC5idXR0b24uc2l6ZS1kZWZhdWx0IHsKICAgICAgICBoZWlnaHQ6IDM2cHg7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgfQoKICAgICAgLmJ1dHRvbi5zaXplLXNtIHsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgcGFkZGluZzogMCAxMnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgfQoKICAgICAgLmJ1dHRvbi5zaXplLWxnIHsKICAgICAgICBoZWlnaHQ6IDQ0cHg7CiAgICAgICAgcGFkZGluZzogMCAyNHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgfQoKICAgICAgLmJ1dHRvbi5zaXplLWljb24gewogICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICB3aWR0aDogMzZweDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICB9CgogICAgICAvKiBEZWZhdWx0IHZhcmlhbnQgKi8KICAgICAgLmJ1dHRvbi5kZWZhdWx0IHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTAwJSkiLCJoc2woMjE1IDIwLjIlIDExLjglKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuMyAyNSUgOC44JSkiLCJoc2woMjEwIDQwJSA5OCUpIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMjE0LjMgMzEuOCUgOTEuNCUpIiwiaHNsKDIxNSAyMC4yJSAxNi44JSkiKX07CiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggMnB4IDAgcmdiKDAgMCAwIC8gMC4wNSk7CiAgICAgIH0KCiAgICAgIC5idXR0b24uZGVmYXVsdDpob3Zlcjpub3QoLmRpc2FibGVkKSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgNDAlIDk2LjElKSIsImhzbCgyMTUgMjAuMiUgMTAuMiUpIil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTQuMyAzMS44JSA4NSUpIiwiaHNsKDIxNSAyMC4yJSAyMCUpIil9OwogICAgICB9CgogICAgICAuYnV0dG9uLmRlZmF1bHQ6YWN0aXZlOm5vdCguZGlzYWJsZWQpIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxNC4zIDMxLjglIDkxLjQlKSIsImhzbCgyMTUgMjAuMiUgOSUpIil9OwogICAgICB9CgogICAgICAvKiBEZXN0cnVjdGl2ZSB2YXJpYW50ICovCiAgICAgIC5idXR0b24uZGVzdHJ1Y3RpdmUgewogICAgICAgIGJhY2tncm91bmQ6IGhzbCgwIDg0LjIlIDYwLjIlKTsKICAgICAgICBjb2xvcjogaHNsKDAgMCUgOTglKTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgfQoKICAgICAgLmJ1dHRvbi5kZXN0cnVjdGl2ZTpob3Zlcjpub3QoLmRpc2FibGVkKSB7CiAgICAgICAgYmFja2dyb3VuZDogaHNsKDAgODQuMiUgNTYuMiUpOwogICAgICB9CgogICAgICAuYnV0dG9uLmRlc3RydWN0aXZlOmFjdGl2ZTpub3QoLmRpc2FibGVkKSB7CiAgICAgICAgYmFja2dyb3VuZDogaHNsKDAgODQuMiUgNTIuMiUpOwogICAgICB9CgogICAgICAvKiBPdXRsaW5lIHZhcmlhbnQgKi8KICAgICAgLmJ1dHRvbi5vdXRsaW5lIHsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuMyAyNSUgOC44JSkiLCJoc2woMjEwIDQwJSA5OCUpIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMjE0LjMgMzEuOCUgOTEuNCUpIiwiaHNsKDIxNSAyMC4yJSAyMS44JSkiKX07CiAgICAgIH0KCiAgICAgIC5idXR0b24ub3V0bGluZTpob3Zlcjpub3QoLmRpc2FibGVkKSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgNDAlIDk2LjElKSIsImhzbCgyMTUgMjAuMiUgMTYuOCUpIil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTQuMyAzMS44JSA4NSUpIiwiaHNsKDIxNSAyMC4yJSAyNi44JSkiKX07CiAgICAgIH0KCiAgICAgIC5idXR0b24ub3V0bGluZTphY3RpdmU6bm90KC5kaXNhYmxlZCkgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjE0LjMgMzEuOCUgOTEuNCUpIiwiaHNsKDIxNSAyMC4yJSAxMy44JSkiKX07CiAgICAgIH0KCiAgICAgIC8qIFNlY29uZGFyeSB2YXJpYW50ICovCiAgICAgIC5idXR0b24uc2Vjb25kYXJ5IHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxMCA0MCUgOTYuMSUpIiwiaHNsKDIxNSAyMC4yJSAxNi44JSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjMgMjUlIDguOCUpIiwiaHNsKDIxMCA0MCUgOTglKSIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgfQoKICAgICAgLmJ1dHRvbi5zZWNvbmRhcnk6aG92ZXI6bm90KC5kaXNhYmxlZCkgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjE0LjMgMzEuOCUgOTEuNCUpIiwiaHNsKDIxNSAyMC4yJSAxMy44JSkiKX07CiAgICAgIH0KCiAgICAgIC5idXR0b24uc2Vjb25kYXJ5OmFjdGl2ZTpub3QoLmRpc2FibGVkKSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTQuMyAzMS44JSA4NSUpIiwiaHNsKDIxNSAyMC4yJSAxMS44JSkiKX07CiAgICAgIH0KCiAgICAgIC8qIEdob3N0IHZhcmlhbnQgKi8KICAgICAgLmJ1dHRvbi5naG9zdCB7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjMgMjUlIDguOCUpIiwiaHNsKDIxMCA0MCUgOTglKSIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgfQoKICAgICAgLmJ1dHRvbi5naG9zdDpob3Zlcjpub3QoLmRpc2FibGVkKSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgNDAlIDk2LjElKSIsImhzbCgyMTUgMjAuMiUgMTYuOCUpIil9OwogICAgICB9CgogICAgICAuYnV0dG9uLmdob3N0OmFjdGl2ZTpub3QoLmRpc2FibGVkKSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTQuMyAzMS44JSA5MS40JSkiLCJoc2woMjE1IDIwLjIlIDEzLjglKSIpfTsKICAgICAgfQoKICAgICAgLyogTGluayB2YXJpYW50ICovCiAgICAgIC5idXR0b24ubGluayB7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUpIiwiaHNsKDIxMy4xIDkzLjklIDY3LjglKSIpfTsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgICBoZWlnaHQ6IGF1dG87CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgfQoKICAgICAgLmJ1dHRvbi5saW5rOmhvdmVyOm5vdCguZGlzYWJsZWQpIHsKICAgICAgICB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGN1cnJlbnRDb2xvcjsKICAgICAgfQoKICAgICAgLyogU3RhdHVzIHN0YXRlcyAqLwogICAgICAuYnV0dG9uLnBlbmRpbmcsCiAgICAgIC5idXR0b24uc3VjY2VzcywKICAgICAgLmJ1dHRvbi5lcnJvciB7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAzNnB4OyAvKiBTcGFjZSBmb3Igc3Bpbm5lciAqLwogICAgICB9CiAgICAgIAogICAgICAuYnV0dG9uLnNpemUtc20ucGVuZGluZywKICAgICAgLmJ1dHRvbi5zaXplLXNtLnN1Y2Nlc3MsCiAgICAgIC5idXR0b24uc2l6ZS1zbS5lcnJvciB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAzMnB4OwogICAgICB9CiAgICAgIAogICAgICAuYnV0dG9uLnNpemUtbGcucGVuZGluZywKICAgICAgLmJ1dHRvbi5zaXplLWxnLnN1Y2Nlc3MsCiAgICAgIC5idXR0b24uc2l6ZS1sZy5lcnJvciB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiA0NHB4OwogICAgICB9CgogICAgICAuYnV0dG9uLnBlbmRpbmcgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUpIiwiaHNsKDIxMy4xIDkzLjklIDY3LjglIC8gMC4yKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDEwMCUpIiwiaHNsKDIxMy4xIDkzLjklIDY3LjglKSIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgfQoKICAgICAgLmJ1dHRvbi5zdWNjZXNzIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDE0Mi4xIDc2LjIlIDM2LjMlKSIsImhzbCgxNDIuMSA3MC42JSA0NS4zJSAvIDAuMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxMDAlKSIsImhzbCgxNDIuMSA3MC42JSA0NS4zJSkiKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgIH0KCiAgICAgIC5idXR0b24uZXJyb3IgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCA4NC4yJSA2MC4yJSkiLCJoc2woMCA2Mi44JSA3MC42JSAvIDAuMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxMDAlKSIsImhzbCgwIDYyLjglIDcwLjYlKSIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgfQoKICAgICAgLyogRGlzYWJsZWQgc3RhdGUgKi8KICAgICAgLmJ1dHRvbi5kaXNhYmxlZCB7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICAgIC8qIEhpZGRlbiBzdGF0ZSAqLwogICAgICAuYnV0dG9uLmhpZGRlbiB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgLyogRm9jdXMgc3RhdGUgKi8KICAgICAgLmJ1dHRvbjpmb2N1cy12aXNpYmxlIHsKICAgICAgICBvdXRsaW5lOiAycHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgyMjIuMiA0Ny40JSA1MS4yJSkiLCJoc2woMjEzLjEgOTMuOSUgNjcuOCUpIil9OwogICAgICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7CiAgICAgIH0KCiAgICAgIC8qIExvYWRpbmcgc3Bpbm5lciAqLwogICAgICBkZWVzLXNwaW5uZXIgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBsZWZ0OiAxMHB4OwogICAgICAgIHdpZHRoOiAxNnB4OwogICAgICAgIGhlaWdodDogMTZweDsKICAgICAgfQogICAgICAKICAgICAgLmJ1dHRvbi5zaXplLXNtIGRlZXMtc3Bpbm5lciB7CiAgICAgICAgbGVmdDogOHB4OwogICAgICAgIHdpZHRoOiAxNHB4OwogICAgICAgIGhlaWdodDogMTRweDsKICAgICAgfQogICAgICAKICAgICAgLmJ1dHRvbi5zaXplLWxnIGRlZXMtc3Bpbm5lciB7CiAgICAgICAgbGVmdDogMTRweDsKICAgICAgICB3aWR0aDogMThweDsKICAgICAgICBoZWlnaHQ6IDE4cHg7CiAgICAgIH0KICAgICAgCiAgICAgIC8qIEljb24gc2l6aW5nIHdpdGhpbiBidXR0b25zICovCiAgICAgIC5idXR0b24gZGVlcy1pY29uIHsKICAgICAgICB3aWR0aDogMTZweDsKICAgICAgICBoZWlnaHQ6IDE2cHg7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KICAgICAgCiAgICAgIC5idXR0b24uc2l6ZS1zbSBkZWVzLWljb24gewogICAgICAgIHdpZHRoOiAxNHB4OwogICAgICAgIGhlaWdodDogMTRweDsKICAgICAgfQogICAgICAKICAgICAgLmJ1dHRvbi5zaXplLWxnIGRlZXMtaWNvbiB7CiAgICAgICAgd2lkdGg6IDE4cHg7CiAgICAgICAgaGVpZ2h0OiAxOHB4OwogICAgICB9CgogICAgICAvKiBUZXh0IGFsaWdubWVudCAqLwogICAgICAudGV4dGJveCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICB9CgogICAgYF07ZXh0cmFjdExpZ2h0RG9tKCl7bGV0IEI9dGhpcy5xdWVyeVNlbGVjdG9yKCJkZWVzLWljb24iKSxVPUFycmF5LmZyb20odGhpcy5jaGlsZE5vZGVzKS5maWx0ZXIoaGU9PmhlLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREUpLm1hcChoZT0+aGUudGV4dENvbnRlbnQ/LnRyaW0oKSkuZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiAiKTtpZihVJiYhdGhpcy50ZXh0JiYodGhpcy50ZXh0PVUpLEIpe2xldCBoZT1CLmljb258fEIuZ2V0QXR0cmlidXRlKCJpY29uIil8fChCLmljb25GQT9gZmE6JHtCLmljb25GQX1gOm51bGwpO2lmKGhlKXtsZXQgRj1BcnJheS5mcm9tKHRoaXMuY2hpbGROb2Rlcyksaj1GLmluZGV4T2YoQiksdWU9Ri5maWx0ZXIobGU9PmxlLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREUmJmxlLnRleHRDb250ZW50Py50cmltKCkpO2lmKHVlLmxlbmd0aD4wKXtsZXQgbGU9Ri5pbmRleE9mKHVlWzBdKTt0aGlzLmljb25Qb3NpdGlvbj1qPGxlPyJsZWZ0IjoicmlnaHQifXRoaXMuaWNvbj1oZX1CLnJlbW92ZSgpfXRoaXMuaW5uZXJIVE1MPSIifXJlbmRlcigpe2xldCBVPXtub3JtYWw6ImRlZmF1bHQiLGhpZ2hsaWdodGVkOiJkZXN0cnVjdGl2ZSIsZGlzY3JlZXQ6Im91dGxpbmUiLGJpZzoiZGVmYXVsdCJ9W3RoaXMudHlwZV18fHRoaXMudHlwZSxoZT10aGlzLnR5cGU9PT0iYmlnIj8ibGciOnRoaXMuc2l6ZSxGPXRoaXMuaWNvblBvc2l0aW9uPT09ImxlZnQiJiZ0aGlzLmljb24/d2A8ZGVlcy1pY29uIC5pY29uPSR7dGhpcy5pY29ufT48L2RlZXMtaWNvbj5gOiIiLGo9dGhpcy5pY29uUG9zaXRpb249PT0icmlnaHQiJiZ0aGlzLmljb24/d2A8ZGVlcy1pY29uIC5pY29uPSR7dGhpcy5pY29ufT48L2RlZXMtaWNvbj5gOiIiLHVlPWhlPT09Imljb24iJiZ0aGlzLmljb247cmV0dXJuIHdgCiAgICAgIDxkaXYKICAgICAgICBjbGFzcz0iYnV0dG9uICR7dGhpcy5pc0hpZGRlbj8iaGlkZGVuIjoiIn0gJHtVfSBzaXplLSR7aGV9ICR7dGhpcy5zdGF0dXN9ICR7dGhpcy5kaXNhYmxlZD8iZGlzYWJsZWQiOiIifSIKICAgICAgICBAY2xpY2s9IiR7dGhpcy5kaXNwYXRjaENsaWNrfSIKICAgICAgPgogICAgICAgICR7dGhpcy5zdGF0dXM9PT0ibm9ybWFsIj93YGA6d2AKICAgICAgICAgIDxkZWVzLXNwaW5uZXIKICAgICAgICAgICAgLmJudz0keyEwfQogICAgICAgICAgICBzdGF0dXM9IiR7dGhpcy5zdGF0dXN9IgogICAgICAgICAgICBzaXplPSIke2hlPT09InNtIj8xNDpoZT09PSJsZyI/MTg6MTZ9IgogICAgICAgICAgPjwvZGVlcy1zcGlubmVyPgogICAgICAgIGB9CiAgICAgICAgJHtGfQogICAgICAgICR7dWU/IiI6d2A8ZGl2IGNsYXNzPSJ0ZXh0Ym94Ij4ke3RoaXMudGV4dHx8IkJ1dHRvbiJ9PC9kaXY+YH0KICAgICAgICAke2p9CiAgICAgIDwvZGl2PgogICAgYH1hc3luYyBkaXNwYXRjaENsaWNrKCl7dGhpcy5kaXNhYmxlZHx8dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY2xpY2tlZCIse2RldGFpbDp7ZGF0YTp0aGlzLmV2ZW50RGV0YWlsRGF0YX0sYnViYmxlczohMH0pKX1hc3luYyBmaXJzdFVwZGF0ZWQoKXt0aGlzLmV4dHJhY3RMaWdodERvbSgpfXN0YXRpY3t1cihhLHQpfX07cmV0dXJuIG1lPWF9KSgpfSk7dmFyIEZoLEluLEIzYSxRY2U9ZygoKT0+e0RkYSgpO3BvKCk7Q3IoKTtwZSgpO1VhKCk7b3IoKTtEOCgpO3B0KCk7bnIoKTtGaD1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sSW49ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LEIzYT0oKCk9PntsZXQgcz1bdmIoKSxuZSgiZGVlcy1zdGF0c2dyaWQiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXSxPLCQ9W10sRT1bXTt2YXIgSD1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1N0YXRzR3JpZCIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBrPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6QXJyYXl9KV0scD1bTCh7dHlwZTpOdW1iZXJ9KV0sYz1bTCh7dHlwZTpOdW1iZXJ9KV0seD1bTCh7dHlwZTpBcnJheX0pXSx5PVtZKCldLE49W1koKV0sTz1bWSgpXSxGaCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InRpbGVzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJ0aWxlcyJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLnRpbGVzLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MudGlsZXM9SX0sInNldCIpfSxtZXRhZGF0YTprfSxvLGwpLEZoKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWluVGlsZVdpZHRoIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJtaW5UaWxlV2lkdGgiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5taW5UaWxlV2lkdGgsImdldCIpLHNldDppKChTLEkpPT57Uy5taW5UaWxlV2lkdGg9SX0sInNldCIpfSxtZXRhZGF0YTprfSxkLHUpLEZoKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZ2FwIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJnYXAiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5nYXAsImdldCIpLHNldDppKChTLEkpPT57Uy5nYXA9SX0sInNldCIpfSxtZXRhZGF0YTprfSxiLHYpLEZoKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZ3JpZEFjdGlvbnMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+ImdyaWRBY3Rpb25zImluIFMsImhhcyIpLGdldDppKFM9PlMuZ3JpZEFjdGlvbnMsImdldCIpLHNldDppKChTLEkpPT57Uy5ncmlkQWN0aW9ucz1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LG0sZiksRmgodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjb250ZXh0TWVudVZpc2libGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+ImNvbnRleHRNZW51VmlzaWJsZSJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLmNvbnRleHRNZW51VmlzaWJsZSwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLmNvbnRleHRNZW51VmlzaWJsZT1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LE0seiksRmgodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjb250ZXh0TWVudVBvc2l0aW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJjb250ZXh0TWVudVBvc2l0aW9uImluIFMsImhhcyIpLGdldDppKFM9PlMuY29udGV4dE1lbnVQb3NpdGlvbiwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLmNvbnRleHRNZW51UG9zaXRpb249SX0sInNldCIpfSxtZXRhZGF0YTprfSxDLF8pLEZoKHRoaXMsbnVsbCxPLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY29udGV4dE1lbnVBY3Rpb25zIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJjb250ZXh0TWVudUFjdGlvbnMiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5jb250ZXh0TWVudUFjdGlvbnMsImdldCIpLHNldDppKChTLEkpPT57Uy5jb250ZXh0TWVudUFjdGlvbnM9SX0sInNldCIpfSxtZXRhZGF0YTprfSwkLEUpLEZoKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOmt9LG51bGwsdCksSD1hPWUudmFsdWUsayYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTprfSl9c3RhdGljIGRlbW89JGRhO3N0YXRpYyBkZW1vR3JvdXBzPVsiRGF0YSBWaWV3Il07I2U9SW4odGhpcyxvLFtdKTtnZXQgdGlsZXMoKXtyZXR1cm4gdGhpcy4jZX1zZXQgdGlsZXMoayl7dGhpcy4jZT1rfSN0PShJbih0aGlzLGwpLEluKHRoaXMsZCwyNTApKTtnZXQgbWluVGlsZVdpZHRoKCl7cmV0dXJuIHRoaXMuI3R9c2V0IG1pblRpbGVXaWR0aChrKXt0aGlzLiN0PWt9I2E9KEluKHRoaXMsdSksSW4odGhpcyxiLDE2KSk7Z2V0IGdhcCgpe3JldHVybiB0aGlzLiNhfXNldCBnYXAoayl7dGhpcy4jYT1rfSNzPShJbih0aGlzLHYpLEluKHRoaXMsbSxbXSkpO2dldCBncmlkQWN0aW9ucygpe3JldHVybiB0aGlzLiNzfXNldCBncmlkQWN0aW9ucyhrKXt0aGlzLiNzPWt9I2k9KEluKHRoaXMsZiksSW4odGhpcyxNLCExKSk7Z2V0IGNvbnRleHRNZW51VmlzaWJsZSgpe3JldHVybiB0aGlzLiNpfXNldCBjb250ZXh0TWVudVZpc2libGUoayl7dGhpcy4jaT1rfSNyPShJbih0aGlzLHopLEluKHRoaXMsQyx7eDowLHk6MH0pKTtnZXQgY29udGV4dE1lbnVQb3NpdGlvbigpe3JldHVybiB0aGlzLiNyfXNldCBjb250ZXh0TWVudVBvc2l0aW9uKGspe3RoaXMuI3I9a30jbz0oSW4odGhpcyxfKSxJbih0aGlzLCQsW10pKTtnZXQgY29udGV4dE1lbnVBY3Rpb25zKCl7cmV0dXJuIHRoaXMuI299c2V0IGNvbnRleHRNZW51QWN0aW9ucyhrKXt0aGlzLiNvPWt9c3RhdGljIHN0eWxlcz1bSGUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBmb250LWZhbWlseTogJHtOYX07CiAgICAgIH0KCiAgICAgIC8qIENTUyBWYXJpYWJsZXMgZm9yIGNvbnNpc3RlbnQgc3BhY2luZyBhbmQgc2l6aW5nICovCiAgICAgIDpob3N0IHsKICAgICAgICAtLWdyaWQtZ2FwOiAxMnB4OwogICAgICAgIC0tdGlsZS1wYWRkaW5nOiAxNnB4OwogICAgICAgIC0taGVhZGVyLXNwYWNpbmc6IDEycHg7CiAgICAgICAgLS1jb250ZW50LW1pbi1oZWlnaHQ6IDQwcHg7CiAgICAgICAgLS12YWx1ZS1mb250LXNpemU6IDI2cHg7CiAgICAgICAgLS11bml0LWZvbnQtc2l6ZTogMTRweDsKICAgICAgICAtLWxhYmVsLWZvbnQtc2l6ZTogMTJweDsKICAgICAgICAtLXRpdGxlLWZvbnQtc2l6ZTogMTNweDsKICAgICAgICAtLWRlc2NyaXB0aW9uLXNwYWNpbmc6IDhweDsKICAgICAgICAtLWJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICAtLXRyYW5zaXRpb24tZHVyYXRpb246IDAuMTVzOwogICAgICB9CgogICAgICAvKiBHcmlkIExheW91dCAqLwogICAgICAuZ3JpZC1oZWFkZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogY2FsYyh2YXIoLS1ncmlkLWdhcCkgKiAxLjUpOwogICAgICAgIG1pbi1oZWlnaHQ6IDQwcHg7CiAgICAgIH0KCiAgICAgIC5ncmlkLXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICB9CgogICAgICAuZ3JpZC1hY3Rpb25zIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGdhcDogNnB4OwogICAgICB9CgogICAgICAuZ3JpZC1hY3Rpb25zIGRlZXMtYnV0dG9uIHsKICAgICAgICBmb250LXNpemU6IHZhcigtLWxhYmVsLWZvbnQtc2l6ZSk7CiAgICAgIH0KCiAgICAgIC5zdGF0cy1ncmlkIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoJHthYSgyNTApfXB4LCAxZnIpKTsKICAgICAgICBnYXA6ICR7YWEoMTYpfXB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAvKiBUaWxlIEJhc2UgU3R5bGVzIOKAlCBmcmFtZSBwcm92aWRlZCBieSBkZWVzLXRpbGUsIGhvdmVyIHZpYSA6OnBhcnQgKi8KICAgICAgLnN0YXRzLXRpbGU6OnBhcnQob3V0ZXIpIHsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1kdXJhdGlvbikgZWFzZTsKICAgICAgfQoKICAgICAgLnN0YXRzLXRpbGU6aG92ZXI6OnBhcnQob3V0ZXIpIHsKICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLXN0cm9uZyk7CiAgICAgIH0KCiAgICAgIC5zdGF0cy10aWxlLmNsaWNrYWJsZSB7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICB9CgogICAgICAuc3RhdHMtdGlsZS5jbGlja2FibGU6aG92ZXI6OnBhcnQob3V0ZXIpIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7CiAgICAgICAgYm94LXNoYWRvdzogMCAycHggNnB4ICR7aC5iZFRoZW1lKCJyZ2JhKDAsMCwwLDAuMDMpIiwicmdiYSgwLDAsMCwwLjE1KSIpfTsKICAgICAgfQoKICAgICAgLyogVGlsZSBIZWFkZXIg4oCUIHNsb3R0ZWQgaW50byBkZWVzLXRpbGUgaGVhZGVyICovCiAgICAgIC50aWxlLWhlYWRlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiAwIDEycHg7CiAgICAgICAgaGVpZ2h0OiAyOHB4OwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAudGlsZS10aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoLS10aXRsZS1mb250LXNpemUpOwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNDYuOSUpIiwiaHNsKDIxNSAyMC4yJSA2NS4xJSkiKX07CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7CiAgICAgIH0KCiAgICAgIC50aWxlLWljb24gewogICAgICAgIG9wYWNpdHk6IDAuNzsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuNCAxNi4zJSA0Ni45JSkiLCJoc2woMjE1IDIwLjIlIDY1LjElKSIpfTsKICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC8qIFRpbGUgQ29udGVudCDigJQgc2xvdHRlZCBpbnRvIGRlZXMtdGlsZSBjb250ZW50IGFyZWEgKi8KICAgICAgLnRpbGUtY29udGVudCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIHBhZGRpbmc6IDEycHg7CiAgICAgICAgbWluLWhlaWdodDogdmFyKC0tY29udGVudC1taW4taGVpZ2h0KTsKICAgICAgfQoKICAgICAgLnRpbGUtdmFsdWUgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdmFsdWUtZm9udC1zaXplKTsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS4zIDI1JSA4LjglKSIsImhzbCgyMTAgNDAlIDk4JSkiKX07CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTsKICAgICAgICBnYXA6IDRweDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDI1ZW07CiAgICAgIH0KCiAgICAgIC50aWxlLXVuaXQgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdW5pdC1mb250LXNpemUpOwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNDYuOSUpIiwiaHNsKDIxNSAyMC4yJSA2NS4xJSkiKX07CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICAgIH0KCiAgICAgIC50aWxlLWRlc2NyaXB0aW9uIHsKICAgICAgICBmb250LXNpemU6IHZhcigtLWxhYmVsLWZvbnQtc2l6ZSk7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNTYuOSUpIiwiaHNsKDIxNSAyMC4yJSA1NS4xJSkiKX07CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICAgICAgcGFkZGluZzogMCAxMnB4OwogICAgICAgIGhlaWdodDogMjRweDsKICAgICAgICBsaW5lLWhlaWdodDogMjRweDsKICAgICAgfQoKICAgICAgLyogR2F1Z2UgU3R5bGVzICovCiAgICAgIC5nYXVnZS13cmFwcGVyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5nYXVnZS1jb250YWluZXIgewogICAgICAgIHdpZHRoOiAxMjBweDsKICAgICAgICBoZWlnaHQ6IDcwcHg7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG1hcmdpbi10b3A6IC04cHg7CiAgICAgIH0KCiAgICAgIC5nYXVnZS1zdmcgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgLmdhdWdlLWJhY2tncm91bmQgewogICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgc3Ryb2tlOiB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgICBzdHJva2Utd2lkdGg6IDY7CiAgICAgIH0KCiAgICAgIC5nYXVnZS1maWxsIHsKICAgICAgICBmaWxsOiBub25lOwogICAgICAgIHN0cm9rZS13aWR0aDogNjsKICAgICAgICBzdHJva2UtbGluZWNhcDogcm91bmQ7CiAgICAgICAgdHJhbnNpdGlvbjogc3Ryb2tlLWRhc2hvZmZzZXQgMC42cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwogICAgICB9CgogICAgICAuZ2F1Z2UtdGV4dCB7CiAgICAgICAgZmlsbDogJHtoLmJkVGhlbWUoImhzbCgyMTUuMyAyNSUgOC44JSkiLCJoc2woMjEwIDQwJSA5OCUpIil9OwogICAgICAgIGZvbnQtZmFtaWx5OiAke05hfTsKICAgICAgICBmb250LXNpemU6IHZhcigtLXZhbHVlLWZvbnQtc2l6ZSk7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICB0ZXh0LWFuY2hvcjogbWlkZGxlOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMjVlbTsKICAgICAgfQogICAgICAKICAgICAgLmdhdWdlLXVuaXQgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdW5pdC1mb250LXNpemUpOwogICAgICAgIGZpbGw6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNDYuOSUpIiwiaHNsKDIxNSAyMC4yJSA2NS4xJSkiKX07CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBmb250LWZhbWlseTogJHtOYX07CiAgICAgIH0KCiAgICAgIC8qIFBlcmNlbnRhZ2UgU3R5bGVzICovCiAgICAgIC5wZXJjZW50YWdlLXdyYXBwZXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZmxleDogMTsKICAgICAgfQoKICAgICAgLnBlcmNlbnRhZ2UtdmFsdWUgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdmFsdWUtZm9udC1zaXplKTsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS4zIDI1JSA4LjglKSIsImhzbCgyMTAgNDAlIDk4JSkiKX07CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDI1ZW07CiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICB9CgogICAgICAucGVyY2VudGFnZS1iYXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogNnB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIG1hcmdpbi10b3A6IGF1dG87CiAgICAgIH0KCiAgICAgIC5wZXJjZW50YWdlLWZpbGwgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIHRyYW5zaXRpb246IHdpZHRoIDAuNnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgIH0KCiAgICAgIC8qIE11bHRpIFBlcmNlbnRhZ2UgU3R5bGVzICovCiAgICAgIC5tdWx0aS1wZXJjZW50YWdlLXdyYXBwZXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBmbGV4OiAxOwogICAgICB9CgogICAgICAubXVsdGktcGVyY2VudGFnZS1pdGVtcyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMTJweDsKICAgICAgICBtYXJnaW4tdG9wOiBhdXRvOwogICAgICB9CgogICAgICAubXVsdGktcGVyY2VudGFnZS1pdGVtIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiA0cHg7CiAgICAgIH0KCiAgICAgIC5tdWx0aS1wZXJjZW50YWdlLWhlYWRlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lOwogICAgICB9CgogICAgICAubXVsdGktcGVyY2VudGFnZS1sYWJlbCB7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNDYuOSUpIiwiaHNsKDIxNSAyMC4yJSA2NS4xJSkiKX07CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICAgIH0KCiAgICAgIC5tdWx0aS1wZXJjZW50YWdlLXZhbHVlIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuMyAyNSUgOC44JSkiLCJoc2woMjEwIDQwJSA5OCUpIil9OwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICB9CgogICAgICAubXVsdGktcGVyY2VudGFnZS1iYXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogNHB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAubXVsdGktcGVyY2VudGFnZS1maWxsIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjZzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgICB9CgogICAgICAvKiBDUFUgQ29yZXMgU3R5bGVzICovCiAgICAgIC5jcHUtY29yZXMtd3JhcHBlciB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGZsZXg6IDE7CiAgICAgICAgbWluLWhlaWdodDogODBweDsKICAgICAgfQoKICAgICAgLmNwdS1jb3Jlcy1oZWFkZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7CiAgICAgIH0KCiAgICAgIC5jcHUtY29yZXMtdmFsdWUgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdmFsdWUtZm9udC1zaXplKTsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS4zIDI1JSA4LjglKSIsImhzbCgyMTAgNDAlIDk4JSkiKX07CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDI1ZW07CiAgICAgIH0KCiAgICAgIC5jcHUtY29yZXMtdW5pdCB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoLS11bml0LWZvbnQtc2l6ZSk7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuNCAxNi4zJSA0Ni45JSkiLCJoc2woMjE1IDIwLjIlIDY1LjElKSIpfTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTsKICAgICAgfQoKICAgICAgLmNwdS1jb3Jlcy1sYWJlbCB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1sYWJlbC1mb250LXNpemUpOwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNTYuOSUpIiwiaHNsKDIxNSAyMC4yJSA1NS4xJSkiKX07CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgIH0KCiAgICAgIC5jcHUtY29yZXMtYmFycyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7CiAgICAgICAgZ2FwOiAzcHg7CiAgICAgICAgZmxleDogMTsKICAgICAgICBtaW4taGVpZ2h0OiA2MHB4OwogICAgICAgIHBhZGRpbmc6IDRweCAwOwogICAgICB9CgogICAgICAuY3B1LWNvcmVzLWJhcnMuY2VudGVyZWQgewogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICB9CgogICAgICAuY3B1LWNvcmUtYmFyLWNvbnRhaW5lciB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBtaW4td2lkdGg6IDZweDsKICAgICAgICBtYXgtd2lkdGg6IDI0cHg7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNHB4OwogICAgICB9CgogICAgICAuY3B1LWNvcmUtYmFyLXdyYXBwZXIgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIG1pbi1oZWlnaHQ6IDQwcHg7CiAgICAgIH0KCiAgICAgIC5jcHUtY29yZS1iYXItZmlsbCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgICAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuM3MgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSwgYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2U7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4IDJweCAwIDA7CiAgICAgIH0KCiAgICAgIC5jcHUtY29yZS1iYXItZmlsbC5sb3cgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYWNjZW50LXN1Y2Nlc3MpOwogICAgICB9CgogICAgICAuY3B1LWNvcmUtYmFyLWZpbGwubWVkaXVtIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWFjY2VudC13YXJuaW5nKTsKICAgICAgfQoKICAgICAgLmNwdS1jb3JlLWJhci1maWxsLmhpZ2ggewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYWNjZW50LWVycm9yKTsKICAgICAgfQoKICAgICAgLmNwdS1jb3JlLWxhYmVsIHsKICAgICAgICBmb250LXNpemU6IDlweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDU2LjklKSIsImhzbCgyMTUgMjAuMiUgNTUuMSUpIil9OwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAvKiBQYXJ0aXRpb24gU3R5bGVzICovCiAgICAgIC5wYXJ0aXRpb24td3JhcHBlciB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGZsZXg6IDE7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgIH0KCiAgICAgIC5wYXJ0aXRpb24taGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTsKICAgICAgICBnYXA6IDhweDsKICAgICAgfQoKICAgICAgLnBhcnRpdGlvbi1wZXJjZW50YWdlIHsKICAgICAgICBmb250LXNpemU6IHZhcigtLXZhbHVlLWZvbnQtc2l6ZSk7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuMyAyNSUgOC44JSkiLCJoc2woMjEwIDQwJSA5OCUpIil9OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyNWVtOwogICAgICB9CgogICAgICAucGFydGl0aW9uLWJhciB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiA2cHg7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC5wYXJ0aXRpb24tYmFyLWZpbGwgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIHRyYW5zaXRpb246IHdpZHRoIDAuNnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgIH0KCiAgICAgIC5wYXJ0aXRpb24tYmFyLWZpbGwud2FybmluZyB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1hY2NlbnQtd2FybmluZyk7CiAgICAgIH0KCiAgICAgIC5wYXJ0aXRpb24tYmFyLWZpbGwuY3JpdGljYWwgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYWNjZW50LWVycm9yKTsKICAgICAgfQoKICAgICAgLnBhcnRpdGlvbi1zdGF0cyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBtYXJnaW4tdG9wOiBhdXRvOwogICAgICB9CgogICAgICAucGFydGl0aW9uLXN0YXQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDJweDsKICAgICAgfQoKICAgICAgLnBhcnRpdGlvbi1zdGF0LWxhYmVsIHsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuNCAxNi4zJSA1Ni45JSkiLCJoc2woMjE1IDIwLjIlIDU1LjElKSIpfTsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAyZW07CiAgICAgIH0KCiAgICAgIC5wYXJ0aXRpb24tc3RhdC12YWx1ZSB7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjMgMjUlIDguOCUpIiwiaHNsKDIxMCA0MCUgOTglKSIpfTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTsKICAgICAgfQoKICAgICAgLnBhcnRpdGlvbi1tZXRhIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgbWFyZ2luLXRvcDogNHB4OwogICAgICB9CgogICAgICAucGFydGl0aW9uLWZpbGVzeXN0ZW0gewogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDQ2LjklKSIsImhzbCgyMTUgMjAuMiUgNjUuMSUpIil9OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDQwJSA5Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDE2LjglKSIpfTsKICAgICAgICBwYWRkaW5nOiAycHggNnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgfQoKICAgICAgLnBhcnRpdGlvbi1tb3VudHBvaW50IHsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNTYuOSUpIiwiaHNsKDIxNSAyMC4yJSA1NS4xJSkiKX07CiAgICAgIH0KCiAgICAgIC8qIERpc2sgU3R5bGVzICovCiAgICAgIC5kaXNrLXdyYXBwZXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBmbGV4OiAxOwogICAgICAgIGdhcDogOHB4OwogICAgICB9CgogICAgICAuZGlzay1jYXBhY2l0eSB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoLS12YWx1ZS1mb250LXNpemUpOwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjMgMjUlIDguOCUpIiwiaHNsKDIxMCA0MCUgOTglKSIpfTsKICAgICAgICBsaW5lLWhlaWdodDogMS4xOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMjVlbTsKICAgICAgfQoKICAgICAgLmRpc2stbW9kZWwgewogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuNCAxNi4zJSA0Ni45JSkiLCJoc2woMjE1IDIwLjIlIDY1LjElKSIpfTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA2cHg7CiAgICAgIH0KCiAgICAgIC5kaXNrLXR5cGUtYmFkZ2UgewogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNDYuOSUpIiwiaHNsKDIxNSAyMC4yJSA2NS4xJSkiKX07CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgNDAlIDk2LjElKSIsImhzbCgyMTUgMjAuMiUgMTYuOCUpIil9OwogICAgICAgIHBhZGRpbmc6IDJweCA2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICB9CgogICAgICAuZGlzay1tZXRyaWNzIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgbWFyZ2luLXRvcDogYXV0bzsKICAgICAgfQoKICAgICAgLmRpc2staW9wcyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMTJweDsKICAgICAgfQoKICAgICAgLmRpc2staW9wcy1pdGVtIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTsKICAgICAgICBnYXA6IDRweDsKICAgICAgfQoKICAgICAgLmRpc2staW9wcy1sYWJlbCB7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNTYuOSUpIiwiaHNsKDIxNSAyMC4yJSA1NS4xJSkiKX07CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgfQoKICAgICAgLmRpc2staW9wcy12YWx1ZSB7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjMgMjUlIDguOCUpIiwiaHNsKDIxMCA0MCUgOTglKSIpfTsKICAgICAgfQoKICAgICAgLmRpc2staGVhbHRoIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiA0cHg7CiAgICAgIH0KCiAgICAgIC5kaXNrLWhlYWx0aC1oZWFkZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTsKICAgICAgfQoKICAgICAgLmRpc2staGVhbHRoLWxhYmVsIHsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuNCAxNi4zJSA1Ni45JSkiLCJoc2woMjE1IDIwLjIlIDU1LjElKSIpfTsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICB9CgogICAgICAuZGlzay1oZWFsdGgtdmFsdWUgewogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS4zIDI1JSA4LjglKSIsImhzbCgyMTAgNDAlIDk4JSkiKX07CiAgICAgIH0KCiAgICAgIC5kaXNrLWhlYWx0aC1iYXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogNHB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAuZGlzay1oZWFsdGgtZmlsbCB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHRyYW5zaXRpb246IHdpZHRoIDAuNnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTsKICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgIH0KCiAgICAgIC5kaXNrLWhlYWx0aC1maWxsLmdvb2QgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMTQyLjEgNzYuMiUgMzYuMyUpIiwiaHNsKDE0Mi4xIDcwLjYlIDQ1LjMlKSIpfTsKICAgICAgfQoKICAgICAgLmRpc2staGVhbHRoLWZpbGwud2FybmluZyB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCg0NS40IDkzLjQlIDQ3LjUlKSIsImhzbCg0NS40IDkzLjQlIDQ3LjUlKSIpfTsKICAgICAgfQoKICAgICAgLmRpc2staGVhbHRoLWZpbGwuY3JpdGljYWwgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCA4NC4yJSA2MC4yJSkiLCJoc2woMCA4NC4yJSA2MC4yJSkiKX07CiAgICAgIH0KCiAgICAgIC8qIFRyZW5kIFN0eWxlcyAqLwogICAgICAudHJlbmQtY29udGFpbmVyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgZmxleDogMTsKICAgICAgfQoKICAgICAgLnRyZW5kLWhlYWRlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgIH0KCiAgICAgIC50cmVuZC12YWx1ZSB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoLS12YWx1ZS1mb250LXNpemUpOwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjMgMjUlIDguOCUpIiwiaHNsKDIxMCA0MCUgOTglKSIpfTsKICAgICAgICBsaW5lLWhlaWdodDogMS4xOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMjVlbTsKICAgICAgfQoKICAgICAgLnRyZW5kLXVuaXQgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdW5pdC1mb250LXNpemUpOwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNDYuOSUpIiwiaHNsKDIxNSAyMC4yJSA2NS4xJSkiKX07CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICAgIH0KCiAgICAgIC50cmVuZC1sYWJlbCB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1sYWJlbC1mb250LXNpemUpOwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNTYuOSUpIiwiaHNsKDIxNSAyMC4yJSA1NS4xJSkiKX07CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgIH0KCiAgICAgIC50cmVuZC1ncmFwaCB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAyOHB4OwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBtYXJnaW4tdG9wOiBhdXRvOwogICAgICB9CgogICAgICAudHJlbmQtc3ZnIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KCiAgICAgIC50cmVuZC1saW5lIHsKICAgICAgICBmaWxsOiBub25lOwogICAgICAgIHN0cm9rZTogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICBzdHJva2Utd2lkdGg6IDEuNTsKICAgICAgICBzdHJva2UtbGluZWpvaW46IHJvdW5kOwogICAgICAgIHN0cm9rZS1saW5lY2FwOiByb3VuZDsKICAgICAgfQoKICAgICAgLnRyZW5kLWFyZWEgewogICAgICAgIGZpbGw6ICR7aC5iZFRoZW1lKCJyZ2JhKDE1MCwgMTUwLCAxNTAsIDAuMDgpIiwicmdiYSgxMDAsIDEwMCwgMTAwLCAwLjA4KSIpfTsKICAgICAgfQoKICAgICAgLyogVGV4dCBWYWx1ZSBTdHlsZXMgKi8KICAgICAgLnRleHQtdmFsdWUgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdmFsdWUtZm9udC1zaXplKTsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS4zIDI1JSA4LjglKSIsImhzbCgyMTAgNDAlIDk4JSkiKX07CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDI1ZW07CiAgICAgIH0KCiAgICAgIC8qIENvbnRleHQgTWVudSAqLwogICAgICBkZWVzLWNvbnRleHRtZW51IHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgei1pbmRleDogMTAwMDsKICAgICAgfQogICAgYCxoLmNzc0ZvclRhYmxldChKYAogICAgICAuc3RhdHMtZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTsKICAgICAgfQogICAgYCxhKSxoLmNzc0ZvclBoYWJsZXQoSmAKICAgICAgOmhvc3QgewogICAgICAgIC0tdGlsZS1wYWRkaW5nOiAxMnB4OwogICAgICAgIC0tdmFsdWUtZm9udC1zaXplOiAyMnB4OwogICAgICAgIC0tdGl0bGUtZm9udC1zaXplOiAxMnB4OwogICAgICAgIC0tZ3JpZC1nYXA6IDhweDsKICAgICAgfQogICAgICAuc3RhdHMtZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyMDBweCwgMWZyKSk7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgIH0KICAgICAgLnN0YXRzLXRpbGUgewogICAgICAgIGdyaWQtY29sdW1uOiBzcGFuIDEgIWltcG9ydGFudDsKICAgICAgfQogICAgYCxhKSxoLmNzc0ZvclBob25lKEpgCiAgICAgIDpob3N0IHsKICAgICAgICAtLXRpbGUtcGFkZGluZzogMTBweDsKICAgICAgICAtLXZhbHVlLWZvbnQtc2l6ZTogMjBweDsKICAgICAgICAtLWhlYWRlci1zcGFjaW5nOiA4cHg7CiAgICAgIH0KICAgICAgLnN0YXRzLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOwogICAgICAgIGdhcDogNnB4OwogICAgICB9CiAgICBgLGEpXTtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksSW4odGhpcyxFKX1yZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgJHt0aGlzLmdyaWRBY3Rpb25zLmxlbmd0aD4wP3dgCiAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZC1oZWFkZXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZC10aXRsZSI+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJncmlkLWFjdGlvbnMiPgogICAgICAgICAgICAke3RoaXMuZ3JpZEFjdGlvbnMubWFwKGs9PndgCiAgICAgICAgICAgICAgPGRlZXMtYnV0dG9uIAogICAgICAgICAgICAgICAgQGNsaWNrZWQ9JHsoKT0+dGhpcy5oYW5kbGVHcmlkQWN0aW9uKGspfQogICAgICAgICAgICAgICAgdHlwZT0ib3V0bGluZSIKICAgICAgICAgICAgICAgIHNpemU9InNtIgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICR7ay5pY29uTmFtZT93YDxkZWVzLWljb24gLmljb249JHtrLmljb25OYW1lfSBzaXplPSJzbWFsbCI+PC9kZWVzLWljb24+YDoiIn0KICAgICAgICAgICAgICAgICR7ay5uYW1lfQogICAgICAgICAgICAgIDwvZGVlcy1idXR0b24+CiAgICAgICAgICAgIGApfQogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIGA6IiJ9CiAgICAgIAogICAgICA8ZGl2IGNsYXNzPSJzdGF0cy1ncmlkIiBzdHlsZT0iZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgke3RoaXMubWluVGlsZVdpZHRofXB4LCAxZnIpKTsgZ2FwOiAke3RoaXMuZ2FwfXB4OyI+CiAgICAgICAgJHt0aGlzLnRpbGVzLm1hcChrPT50aGlzLnJlbmRlclRpbGUoaykpfQogICAgICA8L2Rpdj4KCiAgICAgICR7dGhpcy5jb250ZXh0TWVudVZpc2libGU/d2AKICAgICAgICA8ZGVlcy1jb250ZXh0bWVudQogICAgICAgICAgLng9JHt0aGlzLmNvbnRleHRNZW51UG9zaXRpb24ueH0KICAgICAgICAgIC55PSR7dGhpcy5jb250ZXh0TWVudVBvc2l0aW9uLnl9CiAgICAgICAgICAubWVudUl0ZW1zPSR7dGhpcy5jb250ZXh0TWVudUFjdGlvbnN9CiAgICAgICAgICBAY2xpY2tlZD0keygpPT50aGlzLmNvbnRleHRNZW51VmlzaWJsZT0hMX0KICAgICAgICA+PC9kZWVzLWNvbnRleHRtZW51PgogICAgICBgOiIifQogICAgYH1yZW5kZXJUaWxlKGspe2xldCBTPWsuYWN0aW9ucyYmay5hY3Rpb25zLmxlbmd0aD4wLEk9UyYmay5hY3Rpb25zLmxlbmd0aD09PTEsUD1rLmNvbHVtblNwYW4mJmsuY29sdW1uU3Bhbj4xP2suY29sdW1uU3Bhbjp2b2lkIDA7cmV0dXJuIHdgCiAgICAgIDxkZWVzLXRpbGUKICAgICAgICBjbGFzcz0ic3RhdHMtdGlsZSAke0k/ImNsaWNrYWJsZSI6IiJ9IgogICAgICAgIHN0eWxlPSIke1A/YGdyaWQtY29sdW1uOiBzcGFuICR7UH1gOiIifSIKICAgICAgICBAY2xpY2s9JHtJPygpPT50aGlzLmhhbmRsZVRpbGVBY3Rpb24oay5hY3Rpb25zWzBdLGspOnZvaWQgMH0KICAgICAgICBAY29udGV4dG1lbnU9JHtTP1I9PnRoaXMuc2hvd0NvbnRleHRNZW51KFIsayk6dm9pZCAwfQogICAgICA+CiAgICAgICAgPGRpdiBzbG90PSJoZWFkZXIiIGNsYXNzPSJ0aWxlLWhlYWRlciI+CiAgICAgICAgICA8aDMgY2xhc3M9InRpbGUtdGl0bGUiPiR7ay50aXRsZX08L2gzPgogICAgICAgICAgJHtrLmljb24/d2AKICAgICAgICAgICAgPGRlZXMtaWNvbiBjbGFzcz0idGlsZS1pY29uIiAuaWNvbj0ke2suaWNvbn0gc2l6ZT0ic21hbGwiPjwvZGVlcy1pY29uPgogICAgICAgICAgYDoiIn0KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0idGlsZS1jb250ZW50Ij4KICAgICAgICAgICR7dGhpcy5yZW5kZXJUaWxlQ29udGVudChrKX0KICAgICAgICA8L2Rpdj4KCiAgICAgICAgJHtrLmRlc2NyaXB0aW9uJiZrLnR5cGUhPT0idHJlbmQiP3dgCiAgICAgICAgICA8ZGl2IHNsb3Q9ImZvb3RlciIgY2xhc3M9InRpbGUtZGVzY3JpcHRpb24iPiR7ay5kZXNjcmlwdGlvbn08L2Rpdj4KICAgICAgICBgOiIifQogICAgICA8L2RlZXMtdGlsZT4KICAgIGB9cmVuZGVyVGlsZUNvbnRlbnQoayl7c3dpdGNoKGsudHlwZSl7Y2FzZSJudW1iZXIiOnJldHVybiB3YAogICAgICAgICAgPGRpdiBjbGFzcz0idGlsZS12YWx1ZSIgc3R5bGU9IiR7ay5jb2xvcj9gY29sb3I6ICR7ay5jb2xvcn1gOiIifSI+CiAgICAgICAgICAgIDxzcGFuPiR7ay52YWx1ZX08L3NwYW4+CiAgICAgICAgICAgICR7ay51bml0P3dgPHNwYW4gY2xhc3M9InRpbGUtdW5pdCI+JHtrLnVuaXR9PC9zcGFuPmA6IiJ9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgO2Nhc2UiZ2F1Z2UiOnJldHVybiB0aGlzLnJlbmRlckdhdWdlKGspO2Nhc2UicGVyY2VudGFnZSI6cmV0dXJuIHRoaXMucmVuZGVyUGVyY2VudGFnZShrKTtjYXNlInRyZW5kIjpyZXR1cm4gdGhpcy5yZW5kZXJUcmVuZChrKTtjYXNlIm11bHRpUGVyY2VudGFnZSI6cmV0dXJuIHRoaXMucmVuZGVyTXVsdGlQZXJjZW50YWdlKGspO2Nhc2UiY3B1Q29yZXMiOnJldHVybiB0aGlzLnJlbmRlckNwdUNvcmVzKGspO2Nhc2UicGFydGl0aW9uIjpyZXR1cm4gdGhpcy5yZW5kZXJQYXJ0aXRpb24oayk7Y2FzZSJkaXNrIjpyZXR1cm4gdGhpcy5yZW5kZXJEaXNrKGspO2Nhc2UidGV4dCI6cmV0dXJuIHdgCiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LXZhbHVlIiBzdHlsZT0iJHtrLmNvbG9yP2Bjb2xvcjogJHtrLmNvbG9yfWA6IiJ9Ij4KICAgICAgICAgICAgJHtrLnZhbHVlfQogICAgICAgICAgPC9kaXY+CiAgICAgICAgYDtkZWZhdWx0OnJldHVybiB3YDxkaXYgY2xhc3M9InRpbGUtdmFsdWUiPiR7ay52YWx1ZX08L2Rpdj5gfX1yZW5kZXJHYXVnZShrKXtsZXQgUz10eXBlb2Ygay52YWx1ZT09Im51bWJlciI/ay52YWx1ZTpwYXJzZUZsb2F0KGsudmFsdWUpLEk9ay5nYXVnZU9wdGlvbnN8fHttaW46MCxtYXg6MTAwfSxQPShTLUkubWluKS8oSS5tYXgtSS5taW4pKjEwMCxSPTEyMCxLPTcwLFc9Ni8yKzIsbWU9NDAsQj1SLzIsVT1LLVcsaGU9Qi1tZSxGPVUsaj1CK21lLGxlPWBNICR7aGV9ICR7Rn0gQSAke21lfSAke21lfSAwIDAgMSAke2p9ICR7VX1gLFE9TWF0aC5QSSptZSxpZT1RLVEqUC8xMDAsdGU9ay5jb2xvcnx8aC5iZFRoZW1lKCJoc2woMjE1LjMgMjUlIDI4LjglKSIsImhzbCgyMTAgNDAlIDc4JSkiKTtpZihJLnRocmVzaG9sZHMpe2xldCBlZT1bLi4uSS50aHJlc2hvbGRzXS5zb3J0KChrZSxYKT0+WC52YWx1ZS1rZS52YWx1ZSk7Zm9yKGxldCBrZSBvZiBlZSlpZihTPj1rZS52YWx1ZSl7dGU9a2UuY29sb3I7YnJlYWt9fXJldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJnYXVnZS13cmFwcGVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJnYXVnZS1jb250YWluZXIiPgogICAgICAgICAgPHN2ZyBjbGFzcz0iZ2F1Z2Utc3ZnIiB2aWV3Qm94PSIwIDAgJHtSfSAke0t9IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0Ij4KICAgICAgICAgICAgPCEtLSBCYWNrZ3JvdW5kIGFyYyAtLT4KICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICBjbGFzcz0iZ2F1Z2UtYmFja2dyb3VuZCIKICAgICAgICAgICAgICBkPSIke2xlfSIKICAgICAgICAgICAgLz4KICAgICAgICAgICAgPCEtLSBGaWxsZWQgYXJjIC0tPgogICAgICAgICAgICA8cGF0aAogICAgICAgICAgICAgIGNsYXNzPSJnYXVnZS1maWxsIgogICAgICAgICAgICAgIGQ9IiR7bGV9IgogICAgICAgICAgICAgIHN0cm9rZT0iJHt0ZX0iCiAgICAgICAgICAgICAgc3Ryb2tlLWRhc2hhcnJheT0iJHtRfSIKICAgICAgICAgICAgICBzdHJva2UtZGFzaG9mZnNldD0iJHtpZX0iCiAgICAgICAgICAgIC8+CiAgICAgICAgICAgIDwhLS0gVmFsdWUgdGV4dCAtLT4KICAgICAgICAgICAgPHRleHQgY2xhc3M9ImdhdWdlLXRleHQiIHg9IiR7Qn0iIHk9IiR7VS04fSIgZG9taW5hbnQtYmFzZWxpbmU9Im1pZGRsZSI+CiAgICAgICAgICAgICAgPHRzcGFuPiR7U308L3RzcGFuPiR7ay51bml0P3dgPHRzcGFuIGNsYXNzPSJnYXVnZS11bml0IiBkeD0iMiIgZHk9IjAiPiR7ay51bml0fTwvdHNwYW4+YDoiIn0KICAgICAgICAgICAgPC90ZXh0PgogICAgICAgICAgPC9zdmc+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJQZXJjZW50YWdlKGspe2xldCBTPXR5cGVvZiBrLnZhbHVlPT0ibnVtYmVyIj9rLnZhbHVlOnBhcnNlRmxvYXQoay52YWx1ZSksST1NYXRoLm1pbigxMDAsTWF0aC5tYXgoMCxTKSk7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9InBlcmNlbnRhZ2Utd3JhcHBlciI+CiAgICAgICAgPGRpdiBjbGFzcz0icGVyY2VudGFnZS12YWx1ZSI+JHtJfSU8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJwZXJjZW50YWdlLWJhciI+CiAgICAgICAgICA8ZGl2IAogICAgICAgICAgICBjbGFzcz0icGVyY2VudGFnZS1maWxsIiAKICAgICAgICAgICAgc3R5bGU9IndpZHRoOiAke0l9JTsgJHtrLmNvbG9yP2BiYWNrZ3JvdW5kOiAke2suY29sb3J9YDoiIn0iCiAgICAgICAgICA+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJUcmVuZChrKXtpZighay50cmVuZERhdGF8fGsudHJlbmREYXRhLmxlbmd0aDwyKXJldHVybiB3YDxkaXYgY2xhc3M9InRpbGUtdmFsdWUiPiR7ay52YWx1ZX08L2Rpdj5gO2xldCBTPWsudHJlbmREYXRhLEk9TWF0aC5tYXgoLi4uUyksUD1NYXRoLm1pbiguLi5TKSxSPUktUHx8MSxLPTMwMCxWPTMyLFc9MixtZT1TLm1hcCgoVSxoZSk9PntsZXQgRj1oZS8oUy5sZW5ndGgtMSkqSyxqPVcrKFYtMipXKS0oVS1QKS9SKihWLTIqVyk7cmV0dXJuYCR7Rn0sJHtqfWB9KS5qb2luKCIgIiksQj1gMCwke1Z9ICR7bWV9ICR7S30sJHtWfWA7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9InRyZW5kLWNvbnRhaW5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0idHJlbmQtaGVhZGVyIj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0cmVuZC12YWx1ZSI+JHtrLnZhbHVlfTwvc3Bhbj4KICAgICAgICAgICR7ay51bml0P3dgPHNwYW4gY2xhc3M9InRyZW5kLXVuaXQiPiR7ay51bml0fTwvc3Bhbj5gOiIifQogICAgICAgICAgJHtrLmRlc2NyaXB0aW9uP3dgPHNwYW4gY2xhc3M9InRyZW5kLWxhYmVsIj4ke2suZGVzY3JpcHRpb259PC9zcGFuPmA6IiJ9CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0idHJlbmQtZ3JhcGgiPgogICAgICAgICAgPHN2ZyBjbGFzcz0idHJlbmQtc3ZnIiB2aWV3Qm94PSIwIDAgJHtLfSAke1Z9IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIj4KICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9InRyZW5kLWFyZWEiIHBvaW50cz0iJHtCfSIgLz4KICAgICAgICAgICAgPHBvbHlsaW5lIGNsYXNzPSJ0cmVuZC1saW5lIiBwb2ludHM9IiR7bWV9IiAvPgogICAgICAgICAgPC9zdmc+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJNdWx0aVBlcmNlbnRhZ2Uoayl7aWYoIWsucGVyY2VudGFnZXN8fGsucGVyY2VudGFnZXMubGVuZ3RoPT09MClyZXR1cm4gd2A8ZGl2IGNsYXNzPSJ0aWxlLXZhbHVlIj4ke2sudmFsdWV9PC9kaXY+YDtsZXQgUz1rLnBlcmNlbnRhZ2VzLnNsaWNlKDAsMyk7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9Im11bHRpLXBlcmNlbnRhZ2Utd3JhcHBlciI+CiAgICAgICAgPGRpdiBjbGFzcz0ibXVsdGktcGVyY2VudGFnZS1pdGVtcyI+CiAgICAgICAgICAke1MubWFwKEk9PntsZXQgUD1NYXRoLm1pbigxMDAsTWF0aC5tYXgoMCxJLnZhbHVlKSk7cmV0dXJuIHdgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibXVsdGktcGVyY2VudGFnZS1pdGVtIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im11bHRpLXBlcmNlbnRhZ2UtaGVhZGVyIj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im11bHRpLXBlcmNlbnRhZ2UtbGFiZWwiPiR7SS5sYWJlbH08L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJtdWx0aS1wZXJjZW50YWdlLXZhbHVlIj4ke1B9JTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibXVsdGktcGVyY2VudGFnZS1iYXIiPgogICAgICAgICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im11bHRpLXBlcmNlbnRhZ2UtZmlsbCIKICAgICAgICAgICAgICAgICAgICBzdHlsZT0id2lkdGg6ICR7UH0lOyAke0kuY29sb3I/YGJhY2tncm91bmQ6ICR7SS5jb2xvcn1gOiIifSIKICAgICAgICAgICAgICAgICAgPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGB9KX0KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfXJlbmRlckNwdUNvcmVzKGspe2lmKCFrLmNvcmVzRGF0YXx8ay5jb3Jlc0RhdGEubGVuZ3RoPT09MClyZXR1cm4gd2A8ZGl2IGNsYXNzPSJ0aWxlLXZhbHVlIj4ke2sudmFsdWV9PC9kaXY+YDtsZXQgUz1rLmNvcmVzRGF0YSxJPU1hdGgucm91bmQoUy5yZWR1Y2UoKG1lLEIpPT5tZStCLnVzYWdlLDApL1MubGVuZ3RoKSxQPWkobWU9Pm1lPDUwPyJsb3ciOm1lPDgwPyJtZWRpdW0iOiJoaWdoIiwiZ2V0Q29sb3JDbGFzcyIpLFI9Uy5sZW5ndGgqMjQrKFMubGVuZ3RoLTEpKjMsSz1rLmNvbHVtblNwYW58fDEsVj10aGlzLm1pblRpbGVXaWR0aCpLKyhLLTEpKnRoaXMuZ2FwLTMyLFc9UjxWKi42NjY7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImNwdS1jb3Jlcy13cmFwcGVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjcHUtY29yZXMtaGVhZGVyIj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJjcHUtY29yZXMtdmFsdWUiPiR7SX08L3NwYW4+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iY3B1LWNvcmVzLXVuaXQiPiU8L3NwYW4+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iY3B1LWNvcmVzLWxhYmVsIj4ke1MubGVuZ3RofSBjb3Jlczwvc3Bhbj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjcHUtY29yZXMtYmFycyAke1c/ImNlbnRlcmVkIjoiIn0iPgogICAgICAgICAgJHtTLm1hcChtZT0+e2xldCBCPU1hdGgubWluKDEwMCxNYXRoLm1heCgwLG1lLnVzYWdlKSksVT1QKEIpO3JldHVybiB3YAogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNwdS1jb3JlLWJhci1jb250YWluZXIiIHRpdGxlPSJDb3JlICR7bWUubGFiZWx8fG1lLmlkfTogJHtCfSUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY3B1LWNvcmUtYmFyLXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImNwdS1jb3JlLWJhci1maWxsICR7VX0iCiAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImhlaWdodDogJHtCfSUiCiAgICAgICAgICAgICAgICAgID48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgJHtTLmxlbmd0aDw9MTY/d2AKICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNwdS1jb3JlLWxhYmVsIj4ke21lLmxhYmVsfHxtZS5pZH08L3NwYW4+CiAgICAgICAgICAgICAgICBgOiIifQogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICBgfSl9CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1mb3JtYXRCeXRlcyhrKXtpZihrPT09MClyZXR1cm4iMCBCIjtsZXQgUz0xMDI0LEk9WyJCIiwiS0IiLCJNQiIsIkdCIiwiVEIiLCJQQiJdLFA9TWF0aC5mbG9vcihNYXRoLmxvZyhrKS9NYXRoLmxvZyhTKSk7cmV0dXJuIHBhcnNlRmxvYXQoKGsvTWF0aC5wb3coUyxQKSkudG9GaXhlZCgxKSkrIiAiK0lbUF19cmVuZGVyUGFydGl0aW9uKGspe2lmKCFrLnBhcnRpdGlvbkRhdGEpcmV0dXJuIHdgPGRpdiBjbGFzcz0idGlsZS12YWx1ZSI+JHtrLnZhbHVlfTwvZGl2PmA7bGV0e3VzZWQ6Uyx0b3RhbDpJLGZpbGVzeXN0ZW06UCxtb3VudFBvaW50OlJ9PWsucGFydGl0aW9uRGF0YSxLPU1hdGgubWluKDEwMCxNYXRoLm1heCgwLFMvSSoxMDApKSxWPUktUyxXPWkoKCk9Pks+PTkwPyJjcml0aWNhbCI6Sz49NzU/Indhcm5pbmciOiIiLCJnZXRDb2xvckNsYXNzIik7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9InBhcnRpdGlvbi13cmFwcGVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJwYXJ0aXRpb24taGVhZGVyIj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJwYXJ0aXRpb24tcGVyY2VudGFnZSI+JHtNYXRoLnJvdW5kKEspfSU8L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icGFydGl0aW9uLWJhciI+CiAgICAgICAgICA8ZGl2CiAgICAgICAgICAgIGNsYXNzPSJwYXJ0aXRpb24tYmFyLWZpbGwgJHtXKCl9IgogICAgICAgICAgICBzdHlsZT0id2lkdGg6ICR7S30lIgogICAgICAgICAgPjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InBhcnRpdGlvbi1zdGF0cyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwYXJ0aXRpb24tc3RhdCI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwYXJ0aXRpb24tc3RhdC1sYWJlbCI+VXNlZDwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBhcnRpdGlvbi1zdGF0LXZhbHVlIj4ke3RoaXMuZm9ybWF0Qnl0ZXMoUyl9PC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwYXJ0aXRpb24tc3RhdCI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwYXJ0aXRpb24tc3RhdC1sYWJlbCI+RnJlZTwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBhcnRpdGlvbi1zdGF0LXZhbHVlIj4ke3RoaXMuZm9ybWF0Qnl0ZXMoVil9PC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icGFydGl0aW9uLW1ldGEiPgogICAgICAgICAgPHNwYW4gY2xhc3M9InBhcnRpdGlvbi1maWxlc3lzdGVtIj4ke1B9PC9zcGFuPgogICAgICAgICAgJHtSP3dgPHNwYW4gY2xhc3M9InBhcnRpdGlvbi1tb3VudHBvaW50Ij4ke1J9PC9zcGFuPmA6IiJ9CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJEaXNrKGspe2lmKCFrLmRpc2tEYXRhKXJldHVybiB3YDxkaXYgY2xhc3M9InRpbGUtdmFsdWUiPiR7ay52YWx1ZX08L2Rpdj5gO2xldHtjYXBhY2l0eTpTLG1vZGVsOkksdHlwZTpQLGlvcHM6UixoZWFsdGg6S309ay5kaXNrRGF0YSxWPWkoVz0+Vz49NzA/Imdvb2QiOlc+PTMwPyJ3YXJuaW5nIjoiY3JpdGljYWwiLCJnZXRIZWFsdGhDbGFzcyIpO3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJkaXNrLXdyYXBwZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImRpc2stY2FwYWNpdHkiPiR7dGhpcy5mb3JtYXRCeXRlcyhTKX08L2Rpdj4KICAgICAgICAke0l8fFA/d2AKICAgICAgICAgIDxkaXYgY2xhc3M9ImRpc2stbW9kZWwiPgogICAgICAgICAgICAke0k/d2A8c3Bhbj4ke0l9PC9zcGFuPmA6IiJ9CiAgICAgICAgICAgICR7UD93YDxzcGFuIGNsYXNzPSJkaXNrLXR5cGUtYmFkZ2UiPiR7UH08L3NwYW4+YDoiIn0KICAgICAgICAgIDwvZGl2PgogICAgICAgIGA6IiJ9CiAgICAgICAgPGRpdiBjbGFzcz0iZGlzay1tZXRyaWNzIj4KICAgICAgICAgICR7Uj93YAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkaXNrLWlvcHMiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRpc2staW9wcy1pdGVtIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkaXNrLWlvcHMtbGFiZWwiPlJlYWQ8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZGlzay1pb3BzLXZhbHVlIj4ke1IucmVhZC50b0xvY2FsZVN0cmluZygpfTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkaXNrLWlvcHMtaXRlbSI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZGlzay1pb3BzLWxhYmVsIj5Xcml0ZTwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkaXNrLWlvcHMtdmFsdWUiPiR7Ui53cml0ZS50b0xvY2FsZVN0cmluZygpfTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgOiIifQogICAgICAgICAgJHtLIT09dm9pZCAwP3dgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRpc2staGVhbHRoIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkaXNrLWhlYWx0aC1oZWFkZXIiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRpc2staGVhbHRoLWxhYmVsIj5IZWFsdGg8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZGlzay1oZWFsdGgtdmFsdWUiPiR7S30lPC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRpc2staGVhbHRoLWJhciI+CiAgICAgICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgIGNsYXNzPSJkaXNrLWhlYWx0aC1maWxsICR7VihLKX0iCiAgICAgICAgICAgICAgICAgIHN0eWxlPSJ3aWR0aDogJHtLfSUiCiAgICAgICAgICAgICAgICA+PC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYDoiIn0KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfWFzeW5jIGhhbmRsZUdyaWRBY3Rpb24oayl7ay5hY3Rpb24mJmF3YWl0IGsuYWN0aW9uKCl9YXN5bmMgaGFuZGxlVGlsZUFjdGlvbihrLFMpe2suYWN0aW9uJiZhd2FpdCBrLmFjdGlvbigpfXNob3dDb250ZXh0TWVudShrLFMpe2lmKCFTLmFjdGlvbnN8fFMuYWN0aW9ucy5sZW5ndGg9PT0wKXJldHVybjtrLnByZXZlbnREZWZhdWx0KCksdGhpcy5jb250ZXh0TWVudVBvc2l0aW9uPXt4OmsuY2xpZW50WCx5OmsuY2xpZW50WX0sdGhpcy5jb250ZXh0TWVudUFjdGlvbnM9Uy5hY3Rpb25zLHRoaXMuY29udGV4dE1lbnVWaXNpYmxlPSEwO2xldCBJPWkoKCk9Pnt0aGlzLmNvbnRleHRNZW51VmlzaWJsZT0hMSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsSSl9LCJjbG9zZUhhbmRsZXIiKTtzZXRUaW1lb3V0KCgpPT57ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLEkpfSwxMDApfXN0YXRpY3tJbihhLHQpfX07cmV0dXJuIEg9YX0pKCl9KTt2YXIgbWcsV2QsTjBvLFIwbyxPMG8sRjBvLEgzYSxxM2E9ZygoKT0+e3BlKCk7SXQoKTtRY2UoKTttZz1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sV2Q9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LE4wbz0oKCk9PntsZXQgcz1bbmUoImRlbW8tZGFzaGJvYXJkLXZpZXciKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXTt2YXIgcD1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVtb0Rhc2hib2FyZFZpZXciKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgZD10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtZKCldLG1nKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYWN0aXZhdGVkIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHU9PiJhY3RpdmF0ZWQiaW4gdSwiaGFzIiksZ2V0OmkodT0+dS5hY3RpdmF0ZWQsImdldCIpLHNldDppKCh1LGMpPT57dS5hY3RpdmF0ZWQ9Y30sInNldCIpfSxtZXRhZGF0YTpkfSxvLGwpLG1nKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOmR9LG51bGwsdCkscD1hPWUudmFsdWUsZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpkfSksV2QoYSx0KX0jZT1XZCh0aGlzLG8sITEpO2dldCBhY3RpdmF0ZWQoKXtyZXR1cm4gdGhpcy4jZX1zZXQgYWN0aXZhdGVkKGQpe3RoaXMuI2U9ZH1jdHg9V2QodGhpcyxsKTtzdGF0c1RpbGVzPVt7aWQ6InVzZXJzIix0aXRsZToiQWN0aXZlIFVzZXJzIix2YWx1ZToxMjM0LHR5cGU6Im51bWJlciIsaWNvbjoibHVjaWRlOnVzZXJzIixkZXNjcmlwdGlvbjoiT25saW5lIG5vdyIsY29sb3I6IiMyMmM1NWUifSx7aWQ6ImFwaS1jYWxscyIsdGl0bGU6IkFQSSBDYWxscyIsdmFsdWU6NDUyMDAsdHlwZToidHJlbmQiLGljb246Imx1Y2lkZTphY3Rpdml0eSIsZGVzY3JpcHRpb246IisxMiUgZnJvbSBsYXN0IGhvdXIiLGNvbG9yOiIjM2I4MmY2Iix0cmVuZERhdGE6WzMyZTMsMzVlMywzOGUzLDQxZTMsMzllMyw0MmUzLDQ1MjAwXX0se2lkOiJoZWFsdGgiLHRpdGxlOiJTeXN0ZW0gSGVhbHRoIix2YWx1ZTo5OS45LHVuaXQ6IiUiLHR5cGU6ImdhdWdlIixpY29uOiJsdWNpZGU6aGVhcnQtcHVsc2UiLGRlc2NyaXB0aW9uOiJBbGwgc3lzdGVtcyBvcGVyYXRpb25hbCIsY29sb3I6IiMxMGI5ODEiLGdhdWdlT3B0aW9uczp7bWluOjAsbWF4OjEwMCx0aHJlc2hvbGRzOlt7dmFsdWU6ODAsY29sb3I6IiNlZjQ0NDQifSx7dmFsdWU6OTUsY29sb3I6IiNmNTllMGIifSx7dmFsdWU6MTAwLGNvbG9yOiIjMTBiOTgxIn1dfX0se2lkOiJyZXNwb25zZSIsdGl0bGU6IkF2ZyBSZXNwb25zZSIsdmFsdWU6MTI3LHVuaXQ6Im1zIix0eXBlOiJudW1iZXIiLGljb246Imx1Y2lkZTp0aW1lciIsZGVzY3JpcHRpb246Ii0xNW1zIGZyb20geWVzdGVyZGF5Iixjb2xvcjoiIzhiNWNmNiJ9LHtpZDoicmVzb3VyY2VzIix0aXRsZToiUmVzb3VyY2UgVXNhZ2UiLHZhbHVlOiIiLHR5cGU6Im11bHRpUGVyY2VudGFnZSIsaWNvbjoibHVjaWRlOnNlcnZlciIscGVyY2VudGFnZXM6W3tsYWJlbDoiQ1BVIix2YWx1ZTo2Nyxjb2xvcjoiIzNiODJmNiJ9LHtsYWJlbDoiTWVtb3J5Iix2YWx1ZTo4NCxjb2xvcjoiIzhiNWNmNiJ9LHtsYWJlbDoiRGlzayIsdmFsdWU6NDUsY29sb3I6IiMxMGI5ODEifV19LHtpZDoicmVxdWVzdHMiLHRpdGxlOiJSZXF1ZXN0cy9zZWMiLHZhbHVlOjE4NTAsdHlwZToidHJlbmQiLGljb246Imx1Y2lkZTp6YXAiLGRlc2NyaXB0aW9uOiJDdXJyZW50IHRocm91Z2hwdXQiLGNvbG9yOiIjMDZiNmQ0Iix0cmVuZERhdGE6WzEyMDAsMTQwMCwxMzUwLDE2MDAsMTc1MCwxNjgwLDE4NTBdfV07b25BY3RpdmF0ZShkKXt0aGlzLmN0eD1kLHRoaXMuYWN0aXZhdGVkPSEwLGNvbnNvbGUubG9nKCJEYXNoYm9hcmQgYWN0aXZhdGVkIHdpdGggY29udGV4dDoiLGQpLGQuYXBwdWkuc2V0U2Vjb25kYXJ5TWVudSh7aGVhZGluZzoiRGFzaGJvYXJkIixncm91cHM6W3tuYW1lOiJRdWljayBBY2Nlc3MiLGljb25OYW1lOiJsdWNpZGU6emFwIixpdGVtczpbe2tleToiT3ZlcnZpZXciLGljb25OYW1lOiJsYXlvdXREYXNoYm9hcmQiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiT3ZlcnZpZXciKSwiYWN0aW9uIil9LHtrZXk6IlJlY2VudCIsaWNvbk5hbWU6ImNsb2NrIixiYWRnZTo1LGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiUmVjZW50IiksImFjdGlvbiIpfSx7dHlwZToiZGl2aWRlciJ9LHt0eXBlOiJhY3Rpb24iLGtleToiUmVmcmVzaCBEYXRhIixpY29uTmFtZToibHVjaWRlOnJlZnJlc2hDdyIsYWN0aW9uOmkoKCk9PmFsZXJ0KCJSZWZyZXNoaW5nIGRhc2hib2FyZCBkYXRhLi4uIiksImFjdGlvbiIpfV19LHtuYW1lOiJGaWx0ZXJzIixpY29uTmFtZToibHVjaWRlOmZpbHRlciIsaXRlbXM6W3t0eXBlOiJoZWFkZXIiLGxhYmVsOiJUaW1lIFJhbmdlIn0se3R5cGU6ImZpbHRlciIsa2V5OiJMaXZlIFVwZGF0ZXMiLGljb25OYW1lOiJsdWNpZGU6cmFkaW8iLGFjdGl2ZTohMCxvblRvZ2dsZTppKHU9PmNvbnNvbGUubG9nKCJMaXZlIHVwZGF0ZXM6Iix1KSwib25Ub2dnbGUiKX0se3R5cGU6ImZpbHRlciIsa2V5OiJTaG93IEFyY2hpdmVkIixpY29uTmFtZToibHVjaWRlOmFyY2hpdmUiLGFjdGl2ZTohMSxvblRvZ2dsZTppKHU9PmNvbnNvbGUubG9nKCJTaG93IGFyY2hpdmVkOiIsdSksIm9uVG9nZ2xlIil9LHt0eXBlOiJkaXZpZGVyIn0se3R5cGU6Im11bHRpRmlsdGVyIixrZXk6IkRhdGEgU291cmNlcyIsaWNvbk5hbWU6Imx1Y2lkZTpkYXRhYmFzZSIsb3B0aW9uczpbe2tleToiYXBpIixsYWJlbDoiQVBJIFNlcnZlciIsY2hlY2tlZDohMCxpY29uTmFtZToibHVjaWRlOnNlcnZlciJ9LHtrZXk6IndlYiIsbGFiZWw6IldlYiBUcmFmZmljIixjaGVja2VkOiEwLGljb25OYW1lOiJsdWNpZGU6Z2xvYmUifSx7a2V5OiJtb2JpbGUiLGxhYmVsOiJNb2JpbGUgQXBwIixjaGVja2VkOiExLGljb25OYW1lOiJsdWNpZGU6c21hcnRwaG9uZSJ9XSxvbkNoYW5nZTppKHU9PmNvbnNvbGUubG9nKCJEYXRhIHNvdXJjZXM6Iix1KSwib25DaGFuZ2UiKX1dfSx7bmFtZToiQW5hbHl0aWNzIixpY29uTmFtZToibHVjaWRlOmJhckNoYXJ0MyIsaXRlbXM6W3trZXk6Ik1ldHJpY3MiLGljb25OYW1lOiJhY3Rpdml0eSIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJNZXRyaWNzIiksImFjdGlvbiIpfSx7a2V5OiJSZXBvcnRzIixpY29uTmFtZToiZmlsZVRleHQiLGJhZGdlOiJuZXciLGJhZGdlVmFyaWFudDoic3VjY2VzcyIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJSZXBvcnRzIiksImFjdGlvbiIpfSx7dHlwZToiZGl2aWRlciJ9LHt0eXBlOiJsaW5rIixrZXk6IkFuYWx5dGljcyBEb2NzIixpY29uTmFtZToibHVjaWRlOmV4dGVybmFsTGluayIsaHJlZjoiaHR0cHM6Ly9kb2NzLmV4YW1wbGUuY29tL2FuYWx5dGljcyJ9XX1dfSksZC5hcHB1aS5zZXRDb250ZW50VGFicyhbe2tleToiT3ZlcnZpZXciLGljb25OYW1lOiJsdWNpZGU6bGF5b3V0RGFzaGJvYXJkIixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIk92ZXJ2aWV3IHRhYiIpLCJhY3Rpb24iKX0se2tleToiQW5hbHl0aWNzIixpY29uTmFtZToibHVjaWRlOmJhckNoYXJ0IixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIkFuYWx5dGljcyB0YWIiKSwiYWN0aW9uIil9LHtrZXk6IlJlcG9ydHMiLGljb25OYW1lOiJsdWNpZGU6ZmlsZVRleHQiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiUmVwb3J0cyB0YWIiKSwiYWN0aW9uIil9XSl9b25EZWFjdGl2YXRlKCl7dGhpcy5hY3RpdmF0ZWQ9ITEsY29uc29sZS5sb2coIkRhc2hib2FyZCBkZWFjdGl2YXRlZCIpfXJlbmRlcigpe3JldHVybiB3YAogICAgICA8c3R5bGU+CiAgICAgICAgOmhvc3QgewogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICBwYWRkaW5nOiA0MHB4OwogICAgICAgICAgY29sb3I6ICNhM2EzYTM7CiAgICAgICAgICBmb250LWZhbWlseTogJ0dlaXN0IFNhbnMnLCAnSW50ZXInLCAtYXBwbGUtc3lzdGVtLCBzYW5zLXNlcmlmOwogICAgICAgIH0KICAgICAgICBoMSB7IGNvbG9yOiAjZmFmYWZhOyBmb250LXdlaWdodDogNjAwOyBmb250LXNpemU6IDI0cHg7IG1hcmdpbi1ib3R0b206IDhweDsgfQogICAgICAgIHAgeyBjb2xvcjogIzczNzM3MzsgbWFyZ2luLWJvdHRvbTogMzJweDsgfQogICAgICAgIGRlZXMtc3RhdHNncmlkIHsKICAgICAgICAgIG1hcmdpbi1ib3R0b206IDMycHg7CiAgICAgICAgfQoKICAgICAgICAuY3R4LWFjdGlvbnMgewogICAgICAgICAgbWFyZ2luLXRvcDogMzJweDsKICAgICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMDIpOwogICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjA4KTsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICB9CiAgICAgICAgLmN0eC1hY3Rpb25zIGgyIHsgY29sb3I6ICNmYWZhZmE7IGZvbnQtc2l6ZTogMTZweDsgZm9udC13ZWlnaHQ6IDYwMDsgbWFyZ2luLWJvdHRvbTogMTZweDsgfQogICAgICAgIC5idXR0b24tZ3JpZCB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgfQogICAgICAgIC5jdHgtYnRuIHsKICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoNTksIDEzMCwgMjQ2LCAwLjEpOwogICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg1OSwgMTMwLCAyNDYsIDAuMyk7CiAgICAgICAgICBjb2xvcjogIzYwYTVmYTsKICAgICAgICAgIHBhZGRpbmc6IDhweCAxNnB4OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgfQogICAgICAgIC5jdHgtYnRuOmhvdmVyIHsKICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoNTksIDEzMCwgMjQ2LCAwLjIpOwogICAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDU5LCAxMzAsIDI0NiwgMC41KTsKICAgICAgICB9CiAgICAgICAgLmN0eC1idG4uZGFuZ2VyIHsKICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjM5LCA2OCwgNjgsIDAuMSk7CiAgICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoMjM5LCA2OCwgNjgsIDAuMyk7CiAgICAgICAgICBjb2xvcjogI2Y4NzE3MTsKICAgICAgICB9CiAgICAgICAgLmN0eC1idG4uZGFuZ2VyOmhvdmVyIHsKICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjM5LCA2OCwgNjgsIDAuMik7CiAgICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoMjM5LCA2OCwgNjgsIDAuNSk7CiAgICAgICAgfQogICAgICAgIC5jdHgtYnRuLnN1Y2Nlc3MgewogICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgzNCwgMTk3LCA5NCwgMC4xKTsKICAgICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgzNCwgMTk3LCA5NCwgMC4zKTsKICAgICAgICAgIGNvbG9yOiAjNGFkZTgwOwogICAgICAgIH0KICAgICAgICAuY3R4LWJ0bi5zdWNjZXNzOmhvdmVyIHsKICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMzQsIDE5NywgOTQsIDAuMik7CiAgICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoMzQsIDE5NywgOTQsIDAuNSk7CiAgICAgICAgfQogICAgICA8L3N0eWxlPgogICAgICA8aDE+RGFzaGJvYXJkPC9oMT4KICAgICAgPHA+V2VsY29tZSBiYWNrISBIZXJlJ3MgYW4gb3ZlcnZpZXcgb2YgeW91ciBzeXN0ZW0uPC9wPgogICAgICA8ZGVlcy1zdGF0c2dyaWQKICAgICAgICAudGlsZXM9JHt0aGlzLnN0YXRzVGlsZXN9CiAgICAgICAgQHRpbGUtYWN0aW9uPSR7ZD0+Y29uc29sZS5sb2coIlRpbGUgYWN0aW9uOiIsZC5kZXRhaWwpfQogICAgICA+PC9kZWVzLXN0YXRzZ3JpZD4KCiAgICAgIDxkaXYgY2xhc3M9ImN0eC1hY3Rpb25zIj4KICAgICAgICA8aDI+Q29udGV4dCBBY3Rpb25zIChjdHguYXBwdWkpPC9oMj4KICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tZ3JpZCI+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjdHgtYnRuIiBAY2xpY2s9JHsoKT0+dGhpcy5jdHg/LmFwcHVpLnNldE1haW5NZW51VmlzaWJsZSghMSl9PkhpZGUgTWFpbiBNZW51PC9idXR0b24+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjdHgtYnRuIHN1Y2Nlc3MiIEBjbGljaz0keygpPT50aGlzLmN0eD8uYXBwdWkuc2V0TWFpbk1lbnVWaXNpYmxlKCEwKX0+U2hvdyBNYWluIE1lbnU8L2J1dHRvbj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9ImN0eC1idG4iIEBjbGljaz0keygpPT50aGlzLmN0eD8uYXBwdWkuc2V0U2Vjb25kYXJ5TWVudVZpc2libGUoITEpfT5IaWRlIFNlY29uZGFyeSBNZW51PC9idXR0b24+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjdHgtYnRuIHN1Y2Nlc3MiIEBjbGljaz0keygpPT50aGlzLmN0eD8uYXBwdWkuc2V0U2Vjb25kYXJ5TWVudVZpc2libGUoITApfT5TaG93IFNlY29uZGFyeSBNZW51PC9idXR0b24+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjdHgtYnRuIiBAY2xpY2s9JHsoKT0+dGhpcy5jdHg/LmFwcHVpLnNldENvbnRlbnRUYWJzVmlzaWJsZSghMSl9PkhpZGUgQ29udGVudCBUYWJzPC9idXR0b24+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjdHgtYnRuIHN1Y2Nlc3MiIEBjbGljaz0keygpPT50aGlzLmN0eD8uYXBwdWkuc2V0Q29udGVudFRhYnNWaXNpYmxlKCEwKX0+U2hvdyBDb250ZW50IFRhYnM8L2J1dHRvbj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9ImN0eC1idG4iIEBjbGljaz0keygpPT50aGlzLmN0eD8uYXBwdWkuc2V0TWFpbk1lbnVDb2xsYXBzZWQoITApfT5Db2xsYXBzZSBNYWluIE1lbnU8L2J1dHRvbj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9ImN0eC1idG4gc3VjY2VzcyIgQGNsaWNrPSR7KCk9PnRoaXMuY3R4Py5hcHB1aS5zZXRNYWluTWVudUNvbGxhcHNlZCghMSl9PkV4cGFuZCBNYWluIE1lbnU8L2J1dHRvbj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9ImN0eC1idG4iIEBjbGljaz0keygpPT50aGlzLmN0eD8uYXBwdWkuc2V0QnJlYWRjcnVtYnMoWyJEYXNoYm9hcmQiLCJPdmVydmlldyIsIlN0YXRzIl0pfT5TZXQgQnJlYWRjcnVtYnM8L2J1dHRvbj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9ImN0eC1idG4iIEBjbGljaz0keygpPT50aGlzLmN0eD8uYXBwdWkubmF2aWdhdGVUb1ZpZXcoInByb2plY3RzIil9PkdvIHRvIFByb2plY3RzPC9idXR0b24+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjdHgtYnRuIiBAY2xpY2s9JHsoKT0+dGhpcy5jdHg/LmFwcHVpLm5hdmlnYXRlVG9WaWV3KCJzZXR0aW5ncyIse3NlY3Rpb246InNlY3VyaXR5In0pfT5HbyB0byBTZXR0aW5ncy9TZWN1cml0eTwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY3R4LWJ0biIgQGNsaWNrPSR7KCk9PnRoaXMuY3R4Py5hcHB1aS5hY3Rpdml0eUxvZy5hZGQoe3R5cGU6ImN1c3RvbSIsdXNlcjoiRGVtbyBVc2VyIixtZXNzYWdlOiJCdXR0b24gY2xpY2tlZCBmcm9tIGN0eCEiLGljb25OYW1lOiJsdWNpZGU6bW91c2UtcG9pbnRlci1jbGljayJ9KX0+QWRkIEFjdGl2aXR5IEVudHJ5PC9idXR0b24+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjdHgtYnRuIiBAY2xpY2s9JHsoKT0+dGhpcy5jdHg/LmFwcHVpLnNldE1haW5NZW51QmFkZ2UoInRhc2tzIiw5OSl9PlNldCBUYXNrcyBCYWRnZSB0byA5OTwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY3R4LWJ0biBkYW5nZXIiIEBjbGljaz0keygpPT50aGlzLmN0eD8uYXBwdWkuY2xlYXJNYWluTWVudUJhZGdlKCJ0YXNrcyIpfT5DbGVhciBUYXNrcyBCYWRnZTwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY3R4LWJ0biIgQGNsaWNrPSR7KCk9PnRoaXMuY3R4Py5hcHB1aS5zZXRDb250ZW50VGFic0F1dG9IaWRlKCEwLDEpfT5BdXRvLWhpZGUgVGFicyAo4omkMSk8L2J1dHRvbj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9ImN0eC1idG4gZGFuZ2VyIiBAY2xpY2s9JHsoKT0+dGhpcy5jdHg/LmFwcHVpLnNldENvbnRlbnRUYWJzQXV0b0hpZGUoITEpfT5EaXNhYmxlIEF1dG8taGlkZTwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY3R4LWJ0biBzdWNjZXNzIiBAY2xpY2s9JHsoKT0+dGhpcy5hZGRDbG9zZWFibGVUYWIoKX0+QWRkIENsb3NlYWJsZSBUYWI8L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfXRhYkNvdW50ZXI9MDthZGRDbG9zZWFibGVUYWIoKXtpZighdGhpcy5jdHgpcmV0dXJuO3RoaXMudGFiQ291bnRlcisrO2xldCBkPWBUYWIgJHt0aGlzLnRhYkNvdW50ZXJ9YDt0aGlzLmN0eC5hcHB1aS5hZGRDb250ZW50VGFiKHtrZXk6ZCxpY29uTmFtZToibHVjaWRlOmZpbGUiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZyhgU2VsZWN0ZWQgJHtkfWApLCJhY3Rpb24iKSxjbG9zZWFibGU6ITAsb25DbG9zZTppKCgpPT57dGhpcy5jdHg/LmFwcHVpLnJlbW92ZUNvbnRlbnRUYWIoZCl9LCJvbkNsb3NlIil9KX19O3JldHVybiBwPWF9KSgpLFIwbz0oKCk9PntsZXQgcz1bbmUoImRlbW8tc2V0dGluZ3MtdmlldyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdO3ZhciBjPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZW1vU2V0dGluZ3NWaWV3Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGI9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bWSgpXSxwPVtZKCldLG1nKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VjdGlvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh2PT4ic2VjdGlvbiJpbiB2LCJoYXMiKSxnZXQ6aSh2PT52LnNlY3Rpb24sImdldCIpLHNldDppKCh2LHgpPT57di5zZWN0aW9uPXh9LCJzZXQiKX0sbWV0YWRhdGE6Yn0sbyxsKSxtZyh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Imhhc0NoYW5nZXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkodj0+Imhhc0NoYW5nZXMiaW4gdiwiaGFzIiksZ2V0Omkodj0+di5oYXNDaGFuZ2VzLCJnZXQiKSxzZXQ6aSgodix4KT0+e3YuaGFzQ2hhbmdlcz14fSwic2V0Iil9LG1ldGFkYXRhOmJ9LGQsdSksbWcobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6Yn0sbnVsbCx0KSxjPWE9ZS52YWx1ZSxiJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KSxXZChhLHQpfSNlPVdkKHRoaXMsbywiZ2VuZXJhbCIpO2dldCBzZWN0aW9uKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHNlY3Rpb24oYil7dGhpcy4jZT1ifSN0PShXZCh0aGlzLGwpLFdkKHRoaXMsZCwhMSkpO2dldCBoYXNDaGFuZ2VzKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGhhc0NoYW5nZXMoYil7dGhpcy4jdD1ifWFwcHVpPVdkKHRoaXMsdSk7b25BY3RpdmF0ZShiKXt0aGlzLmFwcHVpPWIuYXBwdWksY29uc29sZS5sb2coIlNldHRpbmdzIGFjdGl2YXRlZCB3aXRoIHBhcmFtczoiLGIucGFyYW1zKSxiLnBhcmFtcz8uc2VjdGlvbiYmKHRoaXMuc2VjdGlvbj1iLnBhcmFtcy5zZWN0aW9uKSxiLmFwcHVpLnNldFNlY29uZGFyeU1lbnUoe2hlYWRpbmc6IlNldHRpbmdzIixncm91cHM6W3tuYW1lOiJBY2NvdW50IixpY29uTmFtZToibHVjaWRlOnVzZXIiLGl0ZW1zOlt7a2V5OiJnZW5lcmFsIixpY29uTmFtZToic2V0dGluZ3MiLGFjdGlvbjppKCgpPT50aGlzLnNob3dTZWN0aW9uKCJnZW5lcmFsIiksImFjdGlvbiIpfSx7a2V5OiJwcm9maWxlIixpY29uTmFtZToidXNlciIsYWN0aW9uOmkoKCk9PnRoaXMuc2hvd1NlY3Rpb24oInByb2ZpbGUiKSwiYWN0aW9uIil9LHtrZXk6InNlY3VyaXR5IixpY29uTmFtZToic2hpZWxkIixhY3Rpb246aSgoKT0+dGhpcy5zaG93U2VjdGlvbigic2VjdXJpdHkiKSwiYWN0aW9uIil9XX0se25hbWU6IlByZWZlcmVuY2VzIixpY29uTmFtZToibHVjaWRlOnNsaWRlcnMiLGl0ZW1zOlt7a2V5OiJub3RpZmljYXRpb25zIixpY29uTmFtZToiYmVsbCIsYmFkZ2U6MyxhY3Rpb246aSgoKT0+dGhpcy5zaG93U2VjdGlvbigibm90aWZpY2F0aW9ucyIpLCJhY3Rpb24iKX0se2tleToiYXBwZWFyYW5jZSIsaWNvbk5hbWU6InBhbGV0dGUiLGFjdGlvbjppKCgpPT50aGlzLnNob3dTZWN0aW9uKCJhcHBlYXJhbmNlIiksImFjdGlvbiIpfV19XX0pLGIuYXBwdWkuc2V0U2Vjb25kYXJ5TWVudVNlbGVjdGlvbih0aGlzLnNlY3Rpb24pLGIuYXBwdWkuc2V0Q29udGVudFRhYnMoW10pfW9uRGVhY3RpdmF0ZSgpe2NvbnNvbGUubG9nKCJTZXR0aW5ncyBkZWFjdGl2YXRlZCIpLHRoaXMuaGFzQ2hhbmdlcz0hMX1jYW5EZWFjdGl2YXRlKCl7cmV0dXJuIHRoaXMuaGFzQ2hhbmdlcz8iWW91IGhhdmUgdW5zYXZlZCBjaGFuZ2VzLiBMZWF2ZSBhbnl3YXk/IjohMH1zaG93U2VjdGlvbihiKXt0aGlzLnNlY3Rpb249Yix0aGlzLmFwcHVpPy5zZXRTZWNvbmRhcnlNZW51U2VsZWN0aW9uKGIpfXNpbXVsYXRlQ2hhbmdlKCl7dGhpcy5oYXNDaGFuZ2VzPSEwfXJlbmRlcigpe3JldHVybiB3YAogICAgICA8c3R5bGU+CiAgICAgICAgOmhvc3QgewogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICBwYWRkaW5nOiA0MHB4OwogICAgICAgICAgY29sb3I6ICNhM2EzYTM7CiAgICAgICAgICBmb250LWZhbWlseTogJ0dlaXN0IFNhbnMnLCAnSW50ZXInLCAtYXBwbGUtc3lzdGVtLCBzYW5zLXNlcmlmOwogICAgICAgIH0KICAgICAgICBoMSB7IGNvbG9yOiAjZmFmYWZhOyBmb250LXdlaWdodDogNjAwOyBmb250LXNpemU6IDI0cHg7IG1hcmdpbi1ib3R0b206IDhweDsgfQogICAgICAgIHAgeyBjb2xvcjogIzczNzM3MzsgbWFyZ2luLWJvdHRvbTogMjRweDsgfQogICAgICAgIC5zZWN0aW9uLW5hbWUgewogICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjA1KTsKICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xKTsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgICAgICBjb2xvcjogI2ZhZmFmYTsKICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgICAgfQogICAgICAgIC5hY3Rpb25zIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgfQogICAgICAgIGJ1dHRvbiB7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAjM2I4MmY2OwogICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgcGFkZGluZzogOHB4IDE2cHg7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgfQogICAgICAgIGJ1dHRvbjpob3ZlciB7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAjMjU2M2ViOwogICAgICAgIH0KICAgICAgICAud2FybmluZyB7CiAgICAgICAgICBjb2xvcjogI2ZiYmYyNDsKICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICAgICAgfQogICAgICA8L3N0eWxlPgogICAgICA8aDE+U2V0dGluZ3M8L2gxPgogICAgICA8cD5NYW5hZ2UgeW91ciBhY2NvdW50IGFuZCBhcHBsaWNhdGlvbiBwcmVmZXJlbmNlcy48L3A+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tbmFtZSI+CiAgICAgICAgQ3VycmVudCBzZWN0aW9uOiA8c3Ryb25nPiR7dGhpcy5zZWN0aW9ufTwvc3Ryb25nPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iYWN0aW9ucyI+CiAgICAgICAgPGJ1dHRvbiBAY2xpY2s9JHsoKT0+dGhpcy5zaW11bGF0ZUNoYW5nZSgpfT5NYWtlIENoYW5nZXM8L2J1dHRvbj4KICAgICAgPC9kaXY+CiAgICAgICR7dGhpcy5oYXNDaGFuZ2VzP3dgPHAgY2xhc3M9Indhcm5pbmciPllvdSBoYXZlIHVuc2F2ZWQgY2hhbmdlcy4gTmF2aWdhdGlvbiB3aWxsIHByb21wdCBmb3IgY29uZmlybWF0aW9uLjwvcD5gOiIifQogICAgYH19O3JldHVybiBjPWF9KSgpLE8wbz0oKCk9PntsZXQgcz1bbmUoImRlbW8tcHJvamVjdHMtdmlldyIpXSxlLHQ9W10sYSxyPXdlO3ZhciBuPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZW1vUHJvamVjdHNWaWV3Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IG89dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bWcobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6b30sbnVsbCx0KSxuPWE9ZS52YWx1ZSxvJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm99KSxXZChhLHQpfW9uQWN0aXZhdGUobyl7by5hcHB1aS5zZXRTZWNvbmRhcnlNZW51KHtoZWFkaW5nOiJQcm9qZWN0cyIsZ3JvdXBzOlt7bmFtZToiTXkgUHJvamVjdHMiLGljb25OYW1lOiJsdWNpZGU6Zm9sZGVyIixpdGVtczpbe2tleToiQWN0aXZlIixpY29uTmFtZToiZm9sZGVyIixiYWRnZTozLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiQWN0aXZlIiksImFjdGlvbiIpfSx7a2V5OiJBcmNoaXZlZCIsaWNvbk5hbWU6ImFyY2hpdmUiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiQXJjaGl2ZWQiKSwiYWN0aW9uIil9LHtrZXk6IlNoYXJlZCIsaWNvbk5hbWU6InVzZXJzIixiYWRnZToyLGJhZGdlVmFyaWFudDoid2FybmluZyIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJTaGFyZWQiKSwiYWN0aW9uIil9XX0se25hbWU6IlF1aWNrIEFjdGlvbnMiLGljb25OYW1lOiJsdWNpZGU6emFwIixpdGVtczpbe3R5cGU6ImFjdGlvbiIsa2V5OiJOZXcgUHJvamVjdCIsaWNvbk5hbWU6Imx1Y2lkZTpmb2xkZXJQbHVzIixhY3Rpb246aSgoKT0+YWxlcnQoIkNyZWF0ZSBuZXcgcHJvamVjdCIpLCJhY3Rpb24iKX0se3R5cGU6ImFjdGlvbiIsa2V5OiJJbXBvcnQiLGljb25OYW1lOiJsdWNpZGU6ZG93bmxvYWQiLGFjdGlvbjppKCgpPT5hbGVydCgiSW1wb3J0IHByb2plY3QiKSwiYWN0aW9uIil9LHt0eXBlOiJkaXZpZGVyIn0se3R5cGU6ImxpbmsiLGtleToiVGVtcGxhdGVzIixpY29uTmFtZToibHVjaWRlOmxheW91dFRlbXBsYXRlIixocmVmOiJodHRwczovL3RlbXBsYXRlcy5leGFtcGxlLmNvbSJ9XX1dfSksby5hcHB1aS5zZXRDb250ZW50VGFicyhbe2tleToiR3JpZCIsaWNvbk5hbWU6Imx1Y2lkZTpncmlkIixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIkdyaWQgdmlldyIpLCJhY3Rpb24iKX0se2tleToiTGlzdCIsaWNvbk5hbWU6Imx1Y2lkZTpsaXN0IixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIkxpc3QgdmlldyIpLCJhY3Rpb24iKX0se2tleToiQm9hcmQiLGljb25OYW1lOiJsdWNpZGU6a2FuYmFuIixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIkJvYXJkIHZpZXciKSwiYWN0aW9uIil9XSl9cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxzdHlsZT4KICAgICAgICA6aG9zdCB7CiAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgIHBhZGRpbmc6IDQwcHg7CiAgICAgICAgICBjb2xvcjogI2EzYTNhMzsKICAgICAgICAgIGZvbnQtZmFtaWx5OiAnR2Vpc3QgU2FucycsICdJbnRlcicsIC1hcHBsZS1zeXN0ZW0sIHNhbnMtc2VyaWY7CiAgICAgICAgfQogICAgICAgIGgxIHsgY29sb3I6ICNmYWZhZmE7IGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogMjRweDsgbWFyZ2luLWJvdHRvbTogMjRweDsgfQogICAgICAgIC5wcm9qZWN0cyB7CiAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTsKICAgICAgICAgIGdhcDogMTZweDsKICAgICAgICB9CiAgICAgICAgLnByb2plY3QgewogICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjAzKTsKICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4wOCk7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMnM7CiAgICAgICAgfQogICAgICAgIC5wcm9qZWN0OmhvdmVyIHsKICAgICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwwLjIpOwogICAgICAgIH0KICAgICAgICAucHJvamVjdCBoMyB7IGNvbG9yOiAjZmFmYWZhOyBtYXJnaW46IDAgMCA4cHggMDsgZm9udC1zaXplOiAxNnB4OyB9CiAgICAgICAgLnByb2plY3QgcCB7IGNvbG9yOiAjNzM3MzczOyBtYXJnaW46IDA7IGZvbnQtc2l6ZTogMTNweDsgfQogICAgICAgIC5iYWRnZSB7CiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAjMTQ1MzJkOwogICAgICAgICAgY29sb3I6ICM0YWRlODA7CiAgICAgICAgICBwYWRkaW5nOiAycHggOHB4OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogOXB4OwogICAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgICAgbWFyZ2luLWxlZnQ6IDhweDsKICAgICAgICB9CiAgICAgIDwvc3R5bGU+CiAgICAgIDxoMT5Qcm9qZWN0czwvaDE+CiAgICAgIDxkaXYgY2xhc3M9InByb2plY3RzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJwcm9qZWN0Ij4KICAgICAgICAgIDxoMz5Gcm9udGVuZCBBcHAgPHNwYW4gY2xhc3M9ImJhZGdlIj5BY3RpdmU8L3NwYW4+PC9oMz4KICAgICAgICAgIDxwPlJlYWN0LWJhc2VkIGRhc2hib2FyZCBhcHBsaWNhdGlvbjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJwcm9qZWN0Ij4KICAgICAgICAgIDxoMz5BUEkgU2VydmVyIDxzcGFuIGNsYXNzPSJiYWRnZSI+QWN0aXZlPC9zcGFuPjwvaDM+CiAgICAgICAgICA8cD5Ob2RlLmpzIFJFU1QgQVBJIGJhY2tlbmQ8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icHJvamVjdCI+CiAgICAgICAgICA8aDM+TW9iaWxlIEFwcCA8c3BhbiBjbGFzcz0iYmFkZ2UiPkFjdGl2ZTwvc3Bhbj48L2gzPgogICAgICAgICAgPHA+UmVhY3QgTmF0aXZlIGlPUy9BbmRyb2lkIGFwcDwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJwcm9qZWN0Ij4KICAgICAgICAgIDxoMz5Eb2N1bWVudGF0aW9uPC9oMz4KICAgICAgICAgIDxwPlRlY2huaWNhbCBkb2N1bWVudGF0aW9uIHNpdGU8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH19O3JldHVybiBuPWF9KSgpLEYwbz0oKCk9PntsZXQgcz1bbmUoImRlbW8tdGFza3MtdmlldyIpXSxlLHQ9W10sYSxyPXdlO3ZhciBuPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZW1vVGFza3NWaWV3Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IG89dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bWcobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6b30sbnVsbCx0KSxuPWE9ZS52YWx1ZSxvJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm99KSxXZChhLHQpfW9uQWN0aXZhdGUobyl7by5hcHB1aS5zZXRTZWNvbmRhcnlNZW51KHtoZWFkaW5nOiJUYXNrcyIsZ3JvdXBzOlt7bmFtZToiVmlld3MiLGljb25OYW1lOiJsdWNpZGU6ZXllIixpdGVtczpbe2tleToiQWxsIFRhc2tzIixpY29uTmFtZToibGlzdCIsYmFkZ2U6MTIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJBbGwiKSwiYWN0aW9uIil9LHtrZXk6IlRvZGF5IixpY29uTmFtZToiY2FsZW5kYXIiLGJhZGdlOjMsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJUb2RheSIpLCJhY3Rpb24iKX0se2tleToiVXBjb21pbmciLGljb25OYW1lOiJjbG9jayIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJVcGNvbWluZyIpLCJhY3Rpb24iKX0se2tleToiQ29tcGxldGVkIixpY29uTmFtZToiY2hlY2tDaXJjbGUiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiQ29tcGxldGVkIiksImFjdGlvbiIpfV19LHtuYW1lOiJGaWx0ZXJzIixpY29uTmFtZToibHVjaWRlOmZpbHRlciIsaXRlbXM6W3t0eXBlOiJoZWFkZXIiLGxhYmVsOiJQcmlvcml0eSJ9LHt0eXBlOiJtdWx0aUZpbHRlciIsa2V5OiJQcmlvcml0eSIsaWNvbk5hbWU6Imx1Y2lkZTpmbGFnIixvcHRpb25zOlt7a2V5OiJoaWdoIixsYWJlbDoiSGlnaCIsY2hlY2tlZDohMCxpY29uTmFtZToibHVjaWRlOmFsZXJ0Q2lyY2xlIn0se2tleToibWVkaXVtIixsYWJlbDoiTWVkaXVtIixjaGVja2VkOiEwLGljb25OYW1lOiJsdWNpZGU6bWludXNDaXJjbGUifSx7a2V5OiJsb3ciLGxhYmVsOiJMb3ciLGNoZWNrZWQ6ITEsaWNvbk5hbWU6Imx1Y2lkZTpjaXJjbGUifV0sb25DaGFuZ2U6aShsPT5jb25zb2xlLmxvZygiUHJpb3JpdHkgZmlsdGVyOiIsbCksIm9uQ2hhbmdlIil9LHt0eXBlOiJkaXZpZGVyIn0se3R5cGU6ImhlYWRlciIsbGFiZWw6Ik9wdGlvbnMifSx7dHlwZToiZmlsdGVyIixrZXk6IlNob3cgU3VidGFza3MiLGljb25OYW1lOiJsdWNpZGU6bGlzdFRyZWUiLGFjdGl2ZTohMCxvblRvZ2dsZTppKGw9PmNvbnNvbGUubG9nKCJTaG93IHN1YnRhc2tzOiIsbCksIm9uVG9nZ2xlIil9LHt0eXBlOiJmaWx0ZXIiLGtleToiU2hvdyBDb21wbGV0ZWQiLGljb25OYW1lOiJsdWNpZGU6Y2hlY2tTcXVhcmUiLGFjdGl2ZTohMSxvblRvZ2dsZTppKGw9PmNvbnNvbGUubG9nKCJTaG93IGNvbXBsZXRlZDoiLGwpLCJvblRvZ2dsZSIpfV19LHtuYW1lOiJBY3Rpb25zIixpY29uTmFtZToibHVjaWRlOnphcCIsaXRlbXM6W3t0eXBlOiJhY3Rpb24iLGtleToiQWRkIFRhc2siLGljb25OYW1lOiJsdWNpZGU6cGx1cyIsYWN0aW9uOmkoKCk9PmFsZXJ0KCJBZGQgbmV3IHRhc2siKSwiYWN0aW9uIil9LHt0eXBlOiJhY3Rpb24iLGtleToiSW1wb3J0IFRhc2tzIixpY29uTmFtZToibHVjaWRlOnVwbG9hZCIsYWN0aW9uOmkoKCk9PmFsZXJ0KCJJbXBvcnQgdGFza3MiKSwiYWN0aW9uIil9LHt0eXBlOiJkaXZpZGVyIn0se3R5cGU6ImFjdGlvbiIsa2V5OiJDbGVhciBDb21wbGV0ZWQiLGljb25OYW1lOiJsdWNpZGU6dHJhc2gyIix2YXJpYW50OiJkYW5nZXIiLGNvbmZpcm1NZXNzYWdlOiJEZWxldGUgYWxsIGNvbXBsZXRlZCB0YXNrcz8iLGFjdGlvbjppKCgpPT5hbGVydCgiQ2xlYXJlZCBjb21wbGV0ZWQgdGFza3MiKSwiYWN0aW9uIil9XX1dfSksby5hcHB1aS5zZXRDb250ZW50VGFicyhbe2tleToiTGlzdCIsaWNvbk5hbWU6Imx1Y2lkZTpsaXN0IixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIkxpc3QiKSwiYWN0aW9uIil9LHtrZXk6IkNhbGVuZGFyIixpY29uTmFtZToibHVjaWRlOmNhbGVuZGFyIixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIkNhbGVuZGFyIiksImFjdGlvbiIpfV0pfXJlbmRlcigpe3JldHVybiB3YAogICAgICA8c3R5bGU+CiAgICAgICAgOmhvc3QgewogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICBwYWRkaW5nOiA0MHB4OwogICAgICAgICAgY29sb3I6ICNhM2EzYTM7CiAgICAgICAgICBmb250LWZhbWlseTogJ0dlaXN0IFNhbnMnLCAnSW50ZXInLCAtYXBwbGUtc3lzdGVtLCBzYW5zLXNlcmlmOwogICAgICAgIH0KICAgICAgICBoMSB7IGNvbG9yOiAjZmFmYWZhOyBmb250LXdlaWdodDogNjAwOyBmb250LXNpemU6IDI0cHg7IG1hcmdpbi1ib3R0b206IDI0cHg7IH0KICAgICAgICAudGFzay1saXN0IHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgfQogICAgICAgIC50YXNrIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjAzKTsKICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4wOCk7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7CiAgICAgICAgfQogICAgICAgIC5jaGVja2JveCB7CiAgICAgICAgICB3aWR0aDogMThweDsKICAgICAgICAgIGhlaWdodDogMThweDsKICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICM1MjUyNTI7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgfQogICAgICAgIC50YXNrLXRleHQgeyBjb2xvcjogI2ZhZmFmYTsgZmxleDogMTsgfQogICAgICAgIC5kdWUtZGF0ZSB7IGNvbG9yOiAjNzM3MzczOyBmb250LXNpemU6IDEycHg7IH0KICAgICAgICAucHJpb3JpdHkgewogICAgICAgICAgcGFkZGluZzogMnB4IDhweDsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICB9CiAgICAgICAgLnByaW9yaXR5LmhpZ2ggeyBiYWNrZ3JvdW5kOiAjNDUwYTBhOyBjb2xvcjogI2Y4NzE3MTsgfQogICAgICAgIC5wcmlvcml0eS5tZWRpdW0geyBiYWNrZ3JvdW5kOiAjNDUxYTAzOyBjb2xvcjogI2ZiYmYyNDsgfQogICAgICA8L3N0eWxlPgogICAgICA8aDE+VGFza3M8L2gxPgogICAgICA8ZGl2IGNsYXNzPSJ0YXNrLWxpc3QiPgogICAgICAgIDxkaXYgY2xhc3M9InRhc2siPgogICAgICAgICAgPGRpdiBjbGFzcz0iY2hlY2tib3giPjwvZGl2PgogICAgICAgICAgPHNwYW4gY2xhc3M9InRhc2stdGV4dCI+UmV2aWV3IHB1bGwgcmVxdWVzdCAjNDI8L3NwYW4+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iZHVlLWRhdGUiPlRvZGF5PC9zcGFuPgogICAgICAgICAgPHNwYW4gY2xhc3M9InByaW9yaXR5IGhpZ2giPkhpZ2g8L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0idGFzayI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjaGVja2JveCI+PC9kaXY+CiAgICAgICAgICA8c3BhbiBjbGFzcz0idGFzay10ZXh0Ij5VcGRhdGUgZG9jdW1lbnRhdGlvbjwvc3Bhbj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJkdWUtZGF0ZSI+VG9tb3Jyb3c8L3NwYW4+CiAgICAgICAgICA8c3BhbiBjbGFzcz0icHJpb3JpdHkgbWVkaXVtIj5NZWRpdW08L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0idGFzayI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjaGVja2JveCI+PC9kaXY+CiAgICAgICAgICA8c3BhbiBjbGFzcz0idGFzay10ZXh0Ij5Xcml0ZSB1bml0IHRlc3RzPC9zcGFuPgogICAgICAgICAgPHNwYW4gY2xhc3M9ImR1ZS1kYXRlIj5EZWMgMjA8L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH19O3JldHVybiBuPWF9KSgpLEgzYT1pKCgpPT57bGV0IHM9e2JyYW5kaW5nOntsb2dvSWNvbjoibHVjaWRlOmJveCIsbG9nb1RleHQ6IkFjbWUgQXBwIn0sYXBwQmFyOnttZW51SXRlbXM6W3tuYW1lOiJGaWxlIixhY3Rpb246aShhc3luYygpPT57fSwiYWN0aW9uIiksc3VibWVudTpbe25hbWU6Ik5ldyBQcm9qZWN0IixzaG9ydGN1dDoiQ21kK04iLGljb25OYW1lOiJmaWxlUGx1cyIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIk5ldyIpLCJhY3Rpb24iKX0se25hbWU6Ik9wZW4uLi4iLHNob3J0Y3V0OiJDbWQrTyIsaWNvbk5hbWU6ImZvbGRlck9wZW4iLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJPcGVuIiksImFjdGlvbiIpfSx7bmFtZToiUmVjZW50IFByb2plY3RzIixhY3Rpb246aShhc3luYygpPT57fSwiYWN0aW9uIiksc3VibWVudTpbe25hbWU6Im15LWFwcCIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIk9wZW4gbXktYXBwIiksImFjdGlvbiIpfSx7bmFtZToiY29tcG9uZW50LWxpYiIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIk9wZW4gY29tcG9uZW50LWxpYiIpLCJhY3Rpb24iKX1dfSx7ZGl2aWRlcjohMH0se25hbWU6IlNhdmUgQWxsIixzaG9ydGN1dDoiQ21kK1MiLGljb25OYW1lOiJzYXZlIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiU2F2ZSIpLCJhY3Rpb24iKX1dfSx7bmFtZToiRWRpdCIsYWN0aW9uOmkoYXN5bmMoKT0+e30sImFjdGlvbiIpLHN1Ym1lbnU6W3tuYW1lOiJVbmRvIixzaG9ydGN1dDoiQ21kK1oiLGljb25OYW1lOiJ1bmRvIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiVW5kbyIpLCJhY3Rpb24iKX0se25hbWU6IlJlZG8iLHNob3J0Y3V0OiJDbWQrU2hpZnQrWiIsaWNvbk5hbWU6InJlZG8iLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJSZWRvIiksImFjdGlvbiIpfSx7ZGl2aWRlcjohMH0se25hbWU6IkN1dCIsc2hvcnRjdXQ6IkNtZCtYIixpY29uTmFtZToic2Npc3NvcnMiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJDdXQiKSwiYWN0aW9uIil9LHtuYW1lOiJDb3B5IixzaG9ydGN1dDoiQ21kK0MiLGljb25OYW1lOiJjb3B5IixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiQ29weSIpLCJhY3Rpb24iKX0se25hbWU6IlBhc3RlIixzaG9ydGN1dDoiQ21kK1YiLGljb25OYW1lOiJjbGlwYm9hcmQiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJQYXN0ZSIpLCJhY3Rpb24iKX1dfSx7bmFtZToiVmlldyIsYWN0aW9uOmkoYXN5bmMoKT0+e30sImFjdGlvbiIpLHN1Ym1lbnU6W3tuYW1lOiJUb2dnbGUgU2lkZWJhciIsc2hvcnRjdXQ6IkNtZCtCIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiVG9nZ2xlIHNpZGViYXIiKSwiYWN0aW9uIil9LHtuYW1lOiJUb2dnbGUgQWN0aXZpdHkgTG9nIixzaG9ydGN1dDoiQ21kK1NoaWZ0K0EiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJUb2dnbGUgYWN0aXZpdHkiKSwiYWN0aW9uIil9XX0se25hbWU6IkhlbHAiLGFjdGlvbjppKGFzeW5jKCk9Pnt9LCJhY3Rpb24iKSxzdWJtZW51Olt7bmFtZToiRG9jdW1lbnRhdGlvbiIsaWNvbk5hbWU6ImJvb2siLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJEb2NzIiksImFjdGlvbiIpfSx7bmFtZToiS2V5Ym9hcmQgU2hvcnRjdXRzIixpY29uTmFtZToia2V5Ym9hcmQiLHNob3J0Y3V0OiJDbWQrLyIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIlNob3J0Y3V0cyIpLCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJBYm91dCIsaWNvbk5hbWU6ImluZm8iLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJBYm91dCIpLCJhY3Rpb24iKX1dfV0sYnJlYWRjcnVtYnM6IkRhc2hib2FyZCIsc2hvd1dpbmRvd0NvbnRyb2xzOiEwLHNob3dTZWFyY2g6ITAsdXNlcjp7bmFtZToiSmFuZSBTbWl0aCIsZW1haWw6ImphbmUuc21pdGhAZXhhbXBsZS5jb20iLHN0YXR1czoib25saW5lIn0scHJvZmlsZU1lbnVJdGVtczpbe25hbWU6IlByb2ZpbGUiLGljb25OYW1lOiJ1c2VyIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiUHJvZmlsZSIpLCJhY3Rpb24iKX0se25hbWU6IkFjY291bnQgU2V0dGluZ3MiLGljb25OYW1lOiJzZXR0aW5ncyIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIlNldHRpbmdzIiksImFjdGlvbiIpfSx7ZGl2aWRlcjohMH0se25hbWU6IkhlbHAgJiBTdXBwb3J0IixpY29uTmFtZToiaGVscENpcmNsZSIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIkhlbHAiKSwiYWN0aW9uIil9LHtkaXZpZGVyOiEwfSx7bmFtZToiU2lnbiBPdXQiLGljb25OYW1lOiJsb2dPdXQiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJTaWduIG91dCIpLCJhY3Rpb24iKX1dfSx2aWV3czpbe2lkOiJkYXNoYm9hcmQiLG5hbWU6IkRhc2hib2FyZCIsaWNvbk5hbWU6Imx1Y2lkZTpob21lIixjb250ZW50OiJkZW1vLWRhc2hib2FyZC12aWV3Iixyb3V0ZToiZGFzaGJvYXJkIn0se2lkOiJwcm9qZWN0cyIsbmFtZToiUHJvamVjdHMiLGljb25OYW1lOiJsdWNpZGU6Zm9sZGVyIixjb250ZW50OiJkZW1vLXByb2plY3RzLXZpZXciLHJvdXRlOiJwcm9qZWN0cyIsYmFkZ2U6M30se2lkOiJ0YXNrcyIsbmFtZToiVGFza3MiLGljb25OYW1lOiJsdWNpZGU6Y2hlY2tTcXVhcmUiLGNvbnRlbnQ6ImRlbW8tdGFza3MtdmlldyIscm91dGU6InRhc2tzIixiYWRnZToxMn0se2lkOiJzZXR0aW5ncyIsbmFtZToiU2V0dGluZ3MiLGljb25OYW1lOiJsdWNpZGU6c2V0dGluZ3MiLGNvbnRlbnQ6ImRlbW8tc2V0dGluZ3MtdmlldyIscm91dGU6InNldHRpbmdzLzpzZWN0aW9uPyJ9XSxtYWluTWVudTp7c2VjdGlvbnM6W3tuYW1lOiJNYWluIix2aWV3czpbImRhc2hib2FyZCJdfSx7bmFtZToiV29ya3NwYWNlIix2aWV3czpbInByb2plY3RzIiwidGFza3MiXX1dLGJvdHRvbUl0ZW1zOlsic2V0dGluZ3MiXX0sZGVmYXVsdFZpZXc6ImRhc2hib2FyZCIsYm90dG9tQmFyOnt2aXNpYmxlOiEwLHdpZGdldHM6W3tpZDoic3RhdHVzIixpY29uTmFtZToibHVjaWRlOmFjdGl2aXR5IixsYWJlbDoiU3lzdGVtIE9ubGluZSIsc3RhdHVzOiJzdWNjZXNzIix0b29sdGlwOiJBbGwgc3lzdGVtcyBvcGVyYXRpb25hbCIsb25DbGljazppKCgpPT5jb25zb2xlLmxvZygiU3RhdHVzIGNsaWNrZWQiKSwib25DbGljayIpfSx7aWQ6Im5vdGlmaWNhdGlvbnMiLGljb25OYW1lOiJsdWNpZGU6YmVsbCIsbGFiZWw6IjMgbm90aWZpY2F0aW9ucyIsc3RhdHVzOiJ3YXJuaW5nIix0b29sdGlwOiJZb3UgaGF2ZSB1bnJlYWQgbm90aWZpY2F0aW9ucyIsb25DbGljazppKCgpPT5jb25zb2xlLmxvZygiTm90aWZpY2F0aW9ucyBjbGlja2VkIiksIm9uQ2xpY2siKX0se2lkOiJ2ZXJzaW9uIixpY29uTmFtZToibHVjaWRlOmdpdEJyYW5jaCIsbGFiZWw6InYxLjIuMyIscG9zaXRpb246InJpZ2h0Iix0b29sdGlwOiJDdXJyZW50IHZlcnNpb24ifV0sYWN0aW9uczpbe2lkOiJ0ZXJtaW5hbCIsaWNvbk5hbWU6Imx1Y2lkZTp0ZXJtaW5hbCIsdG9vbHRpcDoiT3BlbiBUZXJtaW5hbCIscG9zaXRpb246InJpZ2h0IixvbkNsaWNrOmkoKCk9PmNvbnNvbGUubG9nKCJUZXJtaW5hbCBjbGlja2VkIiksIm9uQ2xpY2siKX1dfSxvblZpZXdDaGFuZ2U6aSgoYSxyKT0+e2NvbnNvbGUubG9nKGBWaWV3IGNoYW5nZWQgdG86ICR7YX0gKCR7ci5uYW1lfSlgKX0sIm9uVmlld0NoYW5nZSIpLG9uU2VhcmNoOmkoYT0+e2NvbnNvbGUubG9nKCJTZWFyY2ggcXVlcnk6IixhKX0sIm9uU2VhcmNoIil9LGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZS5jbGFzc05hbWU9ImRlbW8tY29udGFpbmVyIixlLnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwOyBoZWlnaHQ6IDEwMCU7IHdpZHRoOiAxMDAlOyBvdmVyZmxvdzogaGlkZGVuOyI7bGV0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGVlcy1hcHB1aSIpO3JldHVybiBlLmFwcGVuZENoaWxkKHQpLHNldFRpbWVvdXQoYXN5bmMoKT0+e2F3YWl0IHQudXBkYXRlQ29tcGxldGUsdC5jb25maWd1cmUocyksc2V0VGltZW91dCgoKT0+e3QuYWN0aXZpdHlMb2cuYWRkTWFueShbe3R5cGU6ImxvZ2luIix1c2VyOiJKYW5lIFNtaXRoIixtZXNzYWdlOiJsb2dnZWQgaW4gZnJvbSBDaHJvbWUgb24gbWFjT1MifSx7dHlwZToiY3JlYXRlIix1c2VyOiJKYW5lIFNtaXRoIixtZXNzYWdlOidjcmVhdGVkIHByb2plY3QgIkZyb250ZW5kIEFwcCInfSx7dHlwZToidXBkYXRlIix1c2VyOiJKb2huIERvZSIsbWVzc2FnZToidXBkYXRlZCBBUEkgZG9jdW1lbnRhdGlvbiJ9LHt0eXBlOiJ2aWV3Iix1c2VyOiJKYW5lIFNtaXRoIixtZXNzYWdlOiJ2aWV3ZWQgZGFzaGJvYXJkIGFuYWx5dGljcyJ9LHt0eXBlOiJkZWxldGUiLHVzZXI6IkFkbWluIixtZXNzYWdlOiJyZW1vdmVkIGRlcHJlY2F0ZWQgZW5kcG9pbnQifSx7dHlwZToiY3VzdG9tIix1c2VyOiJTeXN0ZW0iLG1lc3NhZ2U6InNjaGVkdWxlZCBiYWNrdXAgY29tcGxldGVkIixpY29uTmFtZToibHVjaWRlOmRhdGFiYXNlIn1dKX0sNTAwKSx0LnZpZXdDaGFuZ2VkJC5zdWJzY3JpYmUoYT0+e2NvbnNvbGUubG9nKCJWaWV3IGNoYW5nZWQgZXZlbnQ6IixhKSx0LnNldEJyZWFkY3J1bWJzKGEudmlldy5uYW1lKX0pLHQudmlld0xpZmVjeWNsZSQuc3Vic2NyaWJlKGE9Pntjb25zb2xlLmxvZygiTGlmZWN5Y2xlIGV2ZW50OiIsYS50eXBlLGEudmlld0lkKX0pLHNldFRpbWVvdXQoKCk9Pnt0LnNldE1haW5NZW51QmFkZ2UoInRhc2tzIiwxNSksdC5hY3Rpdml0eUxvZy5hZGQoe3R5cGU6InVwZGF0ZSIsdXNlcjoiU3lzdGVtIixtZXNzYWdlOiJuZXcgdGFza3MgYWRkZWQifSl9LDVlMyl9LDApLHdgCiAgICA8ZGVlcy1kZW1vd3JhcHBlcj4KICAgICAgJHtlfQogICAgPC9kZWVzLWRlbW93cmFwcGVyPgogIGB9LCJkZW1vRnVuYyIpfSk7dmFyIHFYLF9pdD1nKCgpPT57cGUoKTtxWD1jbGFzc3tzdGF0aWN7aSh0aGlzLCJWaWV3UmVnaXN0cnkiKX12aWV3cz1uZXcgTWFwO2luc3RhbmNlcz1uZXcgTWFwO2N1cnJlbnRWaWV3SWQ9bnVsbDthcHB1aT1udWxsO3NldEFwcHVpUmVmKGUpe3RoaXMuYXBwdWk9ZX1yZWdpc3RlcihlKXt0aGlzLnZpZXdzLmhhcyhlLmlkKSYmY29uc29sZS53YXJuKGBWaWV3IHdpdGggaWQgIiR7ZS5pZH0iIGFscmVhZHkgcmVnaXN0ZXJlZC4gT3ZlcndyaXRpbmcuYCksdGhpcy52aWV3cy5zZXQoZS5pZCxlKX1yZWdpc3RlckFsbChlKXtlLmZvckVhY2godD0+dGhpcy5yZWdpc3Rlcih0KSl9Z2V0KGUpe3JldHVybiB0aGlzLnZpZXdzLmdldChlKX1nZXRWaWV3SWRzKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy52aWV3cy5rZXlzKCkpfWdldEFsbCgpe3JldHVybiBBcnJheS5mcm9tKHRoaXMudmlld3MudmFsdWVzKCkpfWdldFJvdXRlKGUpe2xldCB0PXRoaXMudmlld3MuZ2V0KGUpO3JldHVybiB0Py5yb3V0ZXx8dD8uaWR8fCIifWZpbmRCeVJvdXRlKGUpe2ZvcihsZXQgdCBvZiB0aGlzLnZpZXdzLnZhbHVlcygpKXtsZXQgYT10LnJvdXRlfHx0LmlkLHI9dGhpcy5tYXRjaFJvdXRlKGEsZSk7aWYociE9PW51bGwpcmV0dXJue3ZpZXc6dCxwYXJhbXM6cn19fW1hdGNoUm91dGUoZSx0KXtsZXQgYT1lLnNwbGl0KCIvIikscj10LnNwbGl0KCIvIik7aWYoYS5sZW5ndGg+MCYmYVthLmxlbmd0aC0xXS5lbmRzV2l0aCgiPyIpKXtpZihyLmxlbmd0aDxhLmxlbmd0aC0xfHxyLmxlbmd0aD5hLmxlbmd0aClyZXR1cm4gbnVsbH1lbHNlIGlmKGEubGVuZ3RoIT09ci5sZW5ndGgpcmV0dXJuIG51bGw7bGV0IG89e307Zm9yKGxldCBsPTA7bDxhLmxlbmd0aDtsKyspe2xldCBwPWFbbF0sZD1wLmVuZHNXaXRoKCI/Iik7aWYoZCYmKHA9cC5zbGljZSgwLC0xKSkscC5zdGFydHNXaXRoKCI6Iikpe2xldCB1PXAuc2xpY2UoMSk7aWYocltsXSE9PXZvaWQgMClvW3VdPXJbbF07ZWxzZSBpZighZClyZXR1cm4gbnVsbH1lbHNlIGlmKHJbbF0hPT1wKXJldHVybiBudWxsfXJldHVybiBvfWFzeW5jIGNhbkxlYXZlQ3VycmVudFZpZXcoKXtpZighdGhpcy5jdXJyZW50Vmlld0lkKXJldHVybiEwO2xldCBlPXRoaXMuaW5zdGFuY2VzLmdldCh0aGlzLmN1cnJlbnRWaWV3SWQpO2lmKCFlKXJldHVybiEwO2xldCB0PWU7cmV0dXJuIHR5cGVvZiB0LmNhbkRlYWN0aXZhdGU9PSJmdW5jdGlvbiI/YXdhaXQgdC5jYW5EZWFjdGl2YXRlKCk6ITB9YXN5bmMgYWN0aXZhdGVWaWV3KGUsdCxhKXtsZXQgcj10aGlzLnZpZXdzLmdldChlKTtpZighcilyZXR1cm4gY29uc29sZS5lcnJvcihgVmlldyAiJHtlfSIgbm90IGZvdW5kIGluIHJlZ2lzdHJ5YCksbnVsbDtsZXQgbj1yLmNhY2hlIT09ITE7dGhpcy5jdXJyZW50Vmlld0lkJiZ0aGlzLmN1cnJlbnRWaWV3SWQhPT1lJiZhd2FpdCB0aGlzLmRlYWN0aXZhdGVWaWV3KHRoaXMuY3VycmVudFZpZXdJZCk7bGV0IG89bj90aGlzLmluc3RhbmNlcy5nZXQoZSk6dm9pZCAwO2lmKG8pby5zdHlsZS5kaXNwbGF5PSIiO2Vsc2V7aWYobz1hd2FpdCB0aGlzLmNyZWF0ZVZpZXdFbGVtZW50KHIpLCFvKXJldHVybiBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gY3JlYXRlIGVsZW1lbnQgZm9yIHZpZXcgIiR7ZX0iYCksbnVsbDt0LmFwcGVuZENoaWxkKG8pLG4mJnRoaXMuaW5zdGFuY2VzLnNldChlLG8pfXJldHVybiB0aGlzLmN1cnJlbnRWaWV3SWQ9ZSxhd2FpdCB0aGlzLmNhbGxPbkFjdGl2YXRlKG8sZSxhKSxvfWFzeW5jIGRlYWN0aXZhdGVWaWV3KGUpe2xldCB0PXRoaXMuaW5zdGFuY2VzLmdldChlKTtpZighdClyZXR1cm47bGV0IGE9dDt0eXBlb2YgYS5vbkRlYWN0aXZhdGU9PSJmdW5jdGlvbiImJmF3YWl0IGEub25EZWFjdGl2YXRlKCksdC5zdHlsZS5kaXNwbGF5PSJub25lIn1hc3luYyBjcmVhdGVWaWV3RWxlbWVudChlKXtsZXQgdD1lLmNvbnRlbnQ7aWYodHlwZW9mIHQ9PSJmdW5jdGlvbiImJiEodC5wcm90b3R5cGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkmJnQuY29uc3RydWN0b3IubmFtZT09PSJBc3luY0Z1bmN0aW9uIil0cnl7dD1hd2FpdCB0KCl9Y2F0Y2gocil7cmV0dXJuIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBsb2FkIGFzeW5jIGNvbnRlbnQgZm9yIHZpZXcgIiR7ZS5pZH0iOmAsciksbnVsbH1sZXQgYTtpZih0eXBlb2YgdD09InN0cmluZyIpYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KHQpO2Vsc2UgaWYodHlwZW9mIHQ9PSJmdW5jdGlvbiIpaWYodC5wcm90b3R5cGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudClhPW5ldyB0O2Vsc2V7bGV0IHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ci5jbGFzc05hbWU9InZpZXctY29udGVudC13cmFwcGVyIixyLnN0eWxlLmNzc1RleHQ9ImRpc3BsYXk6IGNvbnRlbnRzOyI7bGV0IG49dCgpO2gxKG4sciksYT1yfWVsc2UgcmV0dXJuIGNvbnNvbGUuZXJyb3IoYEludmFsaWQgY29udGVudCB0eXBlIGZvciB2aWV3ICIke2UuaWR9ImApLG51bGw7cmV0dXJuIGEuZGF0YXNldC52aWV3SWQ9ZS5pZCxhfWFzeW5jIGNhbGxPbkFjdGl2YXRlKGUsdCxhKXtsZXQgcj1lO2lmKHR5cGVvZiByLm9uQWN0aXZhdGU9PSJmdW5jdGlvbiIpe2xldCBuPXthcHB1aTp0aGlzLmFwcHVpLHZpZXdJZDp0LHBhcmFtczphfTthd2FpdCByLm9uQWN0aXZhdGUobil9fXJlbmRlclZpZXcoZSx0KXtsZXQgYT10aGlzLnZpZXdzLmdldChlKTtpZighYSlyZXR1cm4gY29uc29sZS5lcnJvcihgVmlldyAiJHtlfSIgbm90IGZvdW5kIGluIHJlZ2lzdHJ5YCksbnVsbDt0LmlubmVySFRNTD0iIjtsZXQgcixuPWEuY29udGVudDtpZih0eXBlb2Ygbj09InN0cmluZyIpcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KG4pO2Vsc2UgaWYodHlwZW9mIG49PSJmdW5jdGlvbiIpaWYobi5wcm90b3R5cGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudClyPW5ldyBuO2Vsc2V7bGV0IG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7by5jbGFzc05hbWU9InZpZXctY29udGVudC13cmFwcGVyIixvLnN0eWxlLmNzc1RleHQ9ImRpc3BsYXk6IGNvbnRlbnRzOyI7bGV0IGw9bigpO2gxKGwsbykscj1vfWVsc2UgcmV0dXJuIGNvbnNvbGUuZXJyb3IoYEludmFsaWQgY29udGVudCB0eXBlIGZvciB2aWV3ICIke2V9ImApLG51bGw7cmV0dXJuIHQuYXBwZW5kQ2hpbGQociksdGhpcy5pbnN0YW5jZXMuc2V0KGUsciksdGhpcy5jdXJyZW50Vmlld0lkPWUscn1nZXRDdXJyZW50Vmlld0lkKCl7cmV0dXJuIHRoaXMuY3VycmVudFZpZXdJZH1nZXRJbnN0YW5jZShlKXtyZXR1cm4gdGhpcy5pbnN0YW5jZXMuZ2V0KGUpfWNsZWFySW5zdGFuY2UoZSl7bGV0IHQ9dGhpcy5pbnN0YW5jZXMuZ2V0KGUpO3QmJnQucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpLHRoaXMuaW5zdGFuY2VzLmRlbGV0ZShlKSx0aGlzLmN1cnJlbnRWaWV3SWQ9PT1lJiYodGhpcy5jdXJyZW50Vmlld0lkPW51bGwpfWNsZWFySW5zdGFuY2VzKCl7Zm9yKGxldFtlLHRdb2YgdGhpcy5pbnN0YW5jZXMpdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCk7dGhpcy5pbnN0YW5jZXMuY2xlYXIoKSx0aGlzLmN1cnJlbnRWaWV3SWQ9bnVsbH11bnJlZ2lzdGVyKGUpe3JldHVybiB0aGlzLmNsZWFySW5zdGFuY2UoZSksdGhpcy52aWV3cy5kZWxldGUoZSl9Y2xlYXIoKXt0aGlzLnZpZXdzLmNsZWFyKCksdGhpcy5jbGVhckluc3RhbmNlcygpfWhhcyhlKXtyZXR1cm4gdGhpcy52aWV3cy5oYXMoZSl9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy52aWV3cy5zaXplfX19KTt2YXIgajNhLFYzYT1nKCgpPT57cGUoKTtqM2E9aSgoKT0+d2AKICA8c3R5bGU+CiAgICAuZGVtby1tYWlubWVudS1jb250YWluZXIgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIGJhY2tncm91bmQ6ICMxYTFhMWE7CiAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgIH0KICAgIC5kZW1vLW1haW5tZW51LWNvbnRhaW5lciAuc3BhY2VyIHsKICAgICAgZmxleDogMTsKICAgICAgYmFja2dyb3VuZDogIzBmMGYwZjsKICAgIH0KICA8L3N0eWxlPgogIDxkaXYgY2xhc3M9ImRlbW8tbWFpbm1lbnUtY29udGFpbmVyIj4KICAgIDxkZWVzLWFwcHVpLW1haW5tZW51CiAgICAgIC5sb2dvSWNvbj0keyJsdWNpZGU6Ym94In0KICAgICAgLmxvZ29UZXh0PSR7IkFjbWUgQXBwIn0KICAgICAgLm1lbnVHcm91cHM9JHtbe3RhYnM6W3trZXk6IkRhc2hib2FyZCIsaWNvbk5hbWU6Imx1Y2lkZTpob21lIixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIkRhc2hib2FyZCIpLCJhY3Rpb24iKX0se2tleToiSW5ib3giLGljb25OYW1lOiJsdWNpZGU6aW5ib3giLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiSW5ib3giKSwiYWN0aW9uIil9XX0se25hbWU6IldvcmtzcGFjZSIsdGFiczpbe2tleToiUHJvamVjdHMiLGljb25OYW1lOiJsdWNpZGU6Zm9sZGVyIixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIlByb2plY3RzIiksImFjdGlvbiIpfSx7a2V5OiJUYXNrcyIsaWNvbk5hbWU6Imx1Y2lkZTpjaGVja1NxdWFyZSIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJUYXNrcyIpLCJhY3Rpb24iKX0se2tleToiRG9jdW1lbnRzIixpY29uTmFtZToibHVjaWRlOmZpbGVUZXh0IixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIkRvY3VtZW50cyIpLCJhY3Rpb24iKX1dfSx7bmFtZToiQW5hbHl0aWNzIix0YWJzOlt7a2V5OiJSZXBvcnRzIixpY29uTmFtZToibHVjaWRlOmJhckNoYXJ0MyIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJSZXBvcnRzIiksImFjdGlvbiIpfSx7a2V5OiJJbnNpZ2h0cyIsaWNvbk5hbWU6Imx1Y2lkZTpsaWdodGJ1bGIiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiSW5zaWdodHMiKSwiYWN0aW9uIil9XX1dfQogICAgICAuYm90dG9tVGFicz0ke1t7a2V5OiJTZXR0aW5ncyIsaWNvbk5hbWU6Imx1Y2lkZTpzZXR0aW5ncyIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJTZXR0aW5ncyIpLCJhY3Rpb24iKX0se2tleToiSGVscCIsaWNvbk5hbWU6Imx1Y2lkZTpoZWxwQ2lyY2xlIixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIkhlbHAiKSwiYWN0aW9uIil9XX0KICAgID48L2RlZXMtYXBwdWktbWFpbm1lbnU+CiAgICA8ZGl2IGNsYXNzPSJzcGFjZXIiPjwvZGl2PgogIDwvZGl2PgpgLCJkZW1vRnVuYyIpfSk7dmFyIEJoLEFuLFUzYSxNaXQ9ZygoKT0+e3BvKCk7bWgoKTt6bigpO3BlKCk7b3IoKTtWM2EoKTtwdCgpO0JoPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxBbj1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sVTNhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1hcHB1aS1tYWlubWVudSIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdO3ZhciBIPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzQXBwdWlNYWlubWVudSIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBrPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6U3RyaW5nfSldLHA9W0woe3R5cGU6U3RyaW5nfSldLGM9W0woe3R5cGU6QXJyYXl9KV0seD1bTCh7dHlwZTpBcnJheX0pXSx5PVtMKHt0eXBlOkFycmF5fSldLE49W0woKV0sTz1bTCh7dHlwZTpCb29sZWFuLHJlZmxlY3Q6ITB9KV0sQmgodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJsb2dvSWNvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4ibG9nb0ljb24iaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5sb2dvSWNvbiwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLmxvZ29JY29uPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sbyxsKSxCaCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImxvZ29UZXh0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJsb2dvVGV4dCJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLmxvZ29UZXh0LCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MubG9nb1RleHQ9SX0sInNldCIpfSxtZXRhZGF0YTprfSxkLHUpLEJoKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWVudUdyb3VwcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4ibWVudUdyb3VwcyJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLm1lbnVHcm91cHMsImdldCIpLHNldDppKChTLEkpPT57Uy5tZW51R3JvdXBzPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sYix2KSxCaCh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImJvdHRvbVRhYnMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+ImJvdHRvbVRhYnMiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5ib3R0b21UYWJzLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MuYm90dG9tVGFicz1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LG0sZiksQmgodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0YWJzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJ0YWJzImluIFMsImhhcyIpLGdldDppKFM9PlMudGFicywiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLnRhYnM9SX0sInNldCIpfSxtZXRhZGF0YTprfSxNLHopLEJoKHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VsZWN0ZWRUYWIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+InNlbGVjdGVkVGFiImluIFMsImhhcyIpLGdldDppKFM9PlMuc2VsZWN0ZWRUYWIsImdldCIpLHNldDppKChTLEkpPT57Uy5zZWxlY3RlZFRhYj1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LEMsXyksQmgodGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjb2xsYXBzZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+ImNvbGxhcHNlZCJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLmNvbGxhcHNlZCwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLmNvbGxhcHNlZD1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LCQsRSksQmgobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6a30sbnVsbCx0KSxIPWE9ZS52YWx1ZSxrJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmt9KX1zdGF0aWMgZGVtbz1qM2E7c3RhdGljIGRlbW9Hcm91cHM9WyJBcHAgVUkiXTsjZT1Bbih0aGlzLG8sIiIpO2dldCBsb2dvSWNvbigpe3JldHVybiB0aGlzLiNlfXNldCBsb2dvSWNvbihrKXt0aGlzLiNlPWt9I3Q9KEFuKHRoaXMsbCksQW4odGhpcyxkLCIiKSk7Z2V0IGxvZ29UZXh0KCl7cmV0dXJuIHRoaXMuI3R9c2V0IGxvZ29UZXh0KGspe3RoaXMuI3Q9a30jYT0oQW4odGhpcyx1KSxBbih0aGlzLGIsW10pKTtnZXQgbWVudUdyb3Vwcygpe3JldHVybiB0aGlzLiNhfXNldCBtZW51R3JvdXBzKGspe3RoaXMuI2E9a30jcz0oQW4odGhpcyx2KSxBbih0aGlzLG0sW10pKTtnZXQgYm90dG9tVGFicygpe3JldHVybiB0aGlzLiNzfXNldCBib3R0b21UYWJzKGspe3RoaXMuI3M9a30jaT0oQW4odGhpcyxmKSxBbih0aGlzLE0sW10pKTtnZXQgdGFicygpe3JldHVybiB0aGlzLiNpfXNldCB0YWJzKGspe3RoaXMuI2k9a30jcj0oQW4odGhpcyx6KSxBbih0aGlzLEMsdm9pZCAwKSk7Z2V0IHNlbGVjdGVkVGFiKCl7cmV0dXJuIHRoaXMuI3J9c2V0IHNlbGVjdGVkVGFiKGspe3RoaXMuI3I9a30jbz0oQW4odGhpcyxfKSxBbih0aGlzLCQsITEpKTtnZXQgY29sbGFwc2VkKCl7cmV0dXJuIHRoaXMuI299c2V0IGNvbGxhcHNlZChrKXt0aGlzLiNvPWt9c3RhdGljIHN0eWxlcz1bSGUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICAtLW1lbnUtd2lkdGgtZXhwYW5kZWQ6IDIwMHB4OwogICAgICAgIC0tbWVudS13aWR0aC1jb2xsYXBzZWQ6IDU2cHg7CiAgICAgICAgLS10b29sdGlwLWJnOiB2YXIoLS1kZWVzLWNvbG9yLXRvb2x0aXAtYmcpOwogICAgICAgIC0tdG9vbHRpcC1mZzogdmFyKC0tZGVlcy1jb2xvci10b29sdGlwLWZnKTsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CgogICAgICAubWFpbkNvbnRhaW5lciB7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOwogICAgICAgIHotaW5kZXg6ICR7V3IuZml4ZWQuYXBwQmFyfTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHdpZHRoOiB2YXIoLS1tZW51LXdpZHRoLWV4cGFuZGVkKTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1iZy1zZWNvbmRhcnkpOwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLXN1YnRsZSk7CiAgICAgICAgZm9udC1mYW1pbHk6ICdHZWlzdCBTYW5zJywgJ0ludGVyJywgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBzYW5zLXNlcmlmOwogICAgICAgIHRyYW5zaXRpb246IHdpZHRoIDAuMjVzIGVhc2U7CiAgICAgIH0KCiAgICAgIDpob3N0KFtjb2xsYXBzZWRdKSAubWFpbkNvbnRhaW5lciB7CiAgICAgICAgd2lkdGg6IHZhcigtLW1lbnUtd2lkdGgtY29sbGFwc2VkKTsKICAgICAgfQoKICAgICAgLyogRmxvYXRpbmcgY29sbGFwc2UgdG9nZ2xlIGJ1dHRvbiAqLwogICAgICAuY29sbGFwc2UtdG9nZ2xlIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgcmlnaHQ6IC0xMnB4OwogICAgICAgIHRvcDogMjRweDsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICAgICAgd2lkdGg6IDI0cHg7CiAgICAgICAgaGVpZ2h0OiAyNHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXByaW1hcnkpOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLXN0cm9uZyk7CiAgICAgICAgYm94LXNoYWRvdzogMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgei1pbmRleDogMTA7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2UsIGJhY2tncm91bmQgMC4xNXMgZWFzZTsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICB9CgogICAgICAuY29sbGFwc2UtdG9nZ2xlOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXRlcnRpYXJ5KTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICB9CgogICAgICA6aG9zdCg6aG92ZXIpIC5jb2xsYXBzZS10b2dnbGUgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC5jb2xsYXBzZS10b2dnbGUgZGVlcy1pY29uIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIH0KCiAgICAgIC8qIExvZ28gU2VjdGlvbiAqLwogICAgICAubG9nb1NlY3Rpb24gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDEwcHg7CiAgICAgICAgaGVpZ2h0OiA0OHB4OwogICAgICAgIHBhZGRpbmc6IDAgMTRweDsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItc3VidGxlKTsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAubG9nb1NlY3Rpb24gLmxvZ29JY29uIHsKICAgICAgICBmb250LXNpemU6IDIycHg7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQoKICAgICAgLmxvZ29TZWN0aW9uIC5sb2dvVGV4dCB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBmb250LXNpemU6IDE1cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZSwgd2lkdGggMC4yNXMgZWFzZTsKICAgICAgfQoKICAgICAgOmhvc3QoW2NvbGxhcHNlZF0pIC5sb2dvU2VjdGlvbiB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBnYXA6IDA7CiAgICAgIH0KCiAgICAgIDpob3N0KFtjb2xsYXBzZWRdKSAubG9nb1NlY3Rpb24gLmxvZ29UZXh0IHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CgogICAgICAvKiBNaWRkbGUgU2VjdGlvbiAoc2Nyb2xsYWJsZSkgKi8KICAgICAgLm1lbnVTZWN0aW9uIHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW47CiAgICAgICAgcGFkZGluZzogOHB4IDA7CiAgICAgIH0KCiAgICAgIC5tZW51U2VjdGlvbjo6LXdlYmtpdC1zY3JvbGxiYXIgewogICAgICAgIHdpZHRoOiA2cHg7CiAgICAgIH0KCiAgICAgIC5tZW51U2VjdGlvbjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sgewogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICB9CgogICAgICAubWVudVNlY3Rpb246Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLXNjcm9sbGJhci10aHVtYik7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICB9CgogICAgICAubWVudVNlY3Rpb246Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLXNjcm9sbGJhci10aHVtYi1ob3Zlcik7CiAgICAgIH0KCiAgICAgIC8qIE1lbnUgR3JvdXAgKi8KICAgICAgLm1lbnVHcm91cCB7CiAgICAgICAgcGFkZGluZzogMCA4cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICB9CgogICAgICAubWVudUdyb3VwOmxhc3QtY2hpbGQgewogICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgIH0KCiAgICAgIC5ncm91cEhlYWRlciB7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHggNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4OwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZSwgbWF4LWhlaWdodCAwLjI1cyBlYXNlOwogICAgICAgIG1heC1oZWlnaHQ6IDMwcHg7CiAgICAgIH0KCiAgICAgIDpob3N0KFtjb2xsYXBzZWRdKSAuZ3JvdXBIZWFkZXIgewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgbWF4LWhlaWdodDogMDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgfQoKICAgICAgLmdyb3VwVGFicyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMnB4OwogICAgICB9CgogICAgICA6aG9zdChbY29sbGFwc2VkXSkgLm1lbnVHcm91cCB7CiAgICAgICAgcGFkZGluZzogMCA0cHg7CiAgICAgIH0KCiAgICAgIC8qIFRhYiBJdGVtICovCiAgICAgIC50YWIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgIHBhZGRpbmc6IDEwcHggMTJweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTsKICAgICAgfQoKICAgICAgLnRhYjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1ob3Zlcik7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMjYyNjI2IiwiI2U1ZTVlNSIpfTsKICAgICAgfQoKICAgICAgLnRhYjphY3RpdmUgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYWN0aXZlKTsKICAgICAgfQoKICAgICAgLnRhYi5zZWxlY3RlZFRhYiB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1hY3RpdmUpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIH0KCiAgICAgIC50YWIuc2VsZWN0ZWRUYWI6OmJlZm9yZSB7CiAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgdG9wOiA1MCU7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgICAgIHdpZHRoOiAzcHg7CiAgICAgICAgaGVpZ2h0OiAxNnB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgICBib3JkZXItcmFkaXVzOiAwIDJweCAycHggMDsKICAgICAgfQoKICAgICAgLnRhYiBkZWVzLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgICBvcGFjaXR5OiAwLjg1OwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAudGFiLnNlbGVjdGVkVGFiIGRlZXMtaWNvbiB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgLnRhYiAudGFiTGFiZWwgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlLCB3aWR0aCAwLjI1cyBlYXNlOwogICAgICB9CgogICAgICAvKiBDb2xsYXBzZWQgdGFiIHN0eWxlcyAqLwogICAgICA6aG9zdChbY29sbGFwc2VkXSkgLnRhYiB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgcGFkZGluZzogMTBweDsKICAgICAgICBnYXA6IDA7CiAgICAgIH0KCiAgICAgIDpob3N0KFtjb2xsYXBzZWRdKSAudGFiIC50YWJMYWJlbCB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB3aWR0aDogMDsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIH0KCiAgICAgIDpob3N0KFtjb2xsYXBzZWRdKSAudGFiLnNlbGVjdGVkVGFiOjpiZWZvcmUgewogICAgICAgIGxlZnQ6IC00cHg7CiAgICAgIH0KCiAgICAgIC8qIFRvb2x0aXAgZm9yIGNvbGxhcHNlZCBzdGF0ZSAqLwogICAgICAudGFiLXRvb2x0aXAgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBsZWZ0OiAxMDAlOwogICAgICAgIHRvcDogNTAlOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgICAgICBtYXJnaW4tbGVmdDogMTJweDsKICAgICAgICBwYWRkaW5nOiA2cHggMTJweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10b29sdGlwLWJnKTsKICAgICAgICBjb2xvcjogdmFyKC0tdG9vbHRpcC1mZyk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGVhc2U7CiAgICAgICAgei1pbmRleDogMTAwMDsKICAgICAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjE1KTsKICAgICAgfQoKICAgICAgLnRhYi10b29sdGlwOjpiZWZvcmUgewogICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBsZWZ0OiAtNHB4OwogICAgICAgIHRvcDogNTAlOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgICAgICBib3JkZXI6IDRweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXItcmlnaHQtY29sb3I6IHZhcigtLXRvb2x0aXAtYmcpOwogICAgICB9CgogICAgICA6aG9zdChbY29sbGFwc2VkXSkgLnRhYjpob3ZlciAudGFiLXRvb2x0aXAgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMXM7CiAgICAgIH0KCiAgICAgIC8qIEJhZGdlIHN0eWxlcyAqLwogICAgICAuYmFkZ2UgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgbWluLXdpZHRoOiAxOHB4OwogICAgICAgIGhlaWdodDogMThweDsKICAgICAgICBwYWRkaW5nOiAwIDZweDsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBib3JkZXItcmFkaXVzOiA5cHg7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgIH0KCiAgICAgIC5iYWRnZS5kZWZhdWx0IHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJhZGdlLWRlZmF1bHQtYmcpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLWJhZGdlLWRlZmF1bHQtZmcpOwogICAgICB9CgogICAgICAuYmFkZ2Uuc3VjY2VzcyB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1iYWRnZS1zdWNjZXNzLWJnKTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci1iYWRnZS1zdWNjZXNzLWZnKTsKICAgICAgfQoKICAgICAgLmJhZGdlLndhcm5pbmcgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYmFkZ2Utd2FybmluZy1iZyk7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItYmFkZ2Utd2FybmluZy1mZyk7CiAgICAgIH0KCiAgICAgIC5iYWRnZS5lcnJvciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1iYWRnZS1lcnJvci1iZyk7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItYmFkZ2UtZXJyb3ItZmcpOwogICAgICB9CgogICAgICA6aG9zdChbY29sbGFwc2VkXSkgLmJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CgogICAgICAvKiBCb3R0b20gU2VjdGlvbiAqLwogICAgICAuYm90dG9tU2VjdGlvbiB7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgcGFkZGluZzogOHB4OwogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1zdWJ0bGUpOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDJweDsKICAgICAgfQoKICAgICAgOmhvc3QoW2NvbGxhcHNlZF0pIC5ib3R0b21TZWN0aW9uIHsKICAgICAgICBwYWRkaW5nOiA4cHggNHB4OwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtsZXQgaz10aGlzLmdldEFsbFRhYnMoKTtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0ibWFpbkNvbnRhaW5lciIgQGNvbnRleHRtZW51PSR7Uz0+e2thLm9wZW5Db250ZXh0TWVudVdpdGhPcHRpb25zKFMsW3tuYW1lOiJhcHAgc2V0dGluZ3MiLGFjdGlvbjppKGFzeW5jKCk9Pnt9LCJhY3Rpb24iKSxpY29uTmFtZToiZ2VhciJ9XSl9fT4KICAgICAgICAke3RoaXMubG9nb0ljb258fHRoaXMubG9nb1RleHQ/d2AKICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ29TZWN0aW9uIj4KICAgICAgICAgICAgJHt0aGlzLmxvZ29JY29uP3dgPGRlZXMtaWNvbiBjbGFzcz0ibG9nb0ljb24iIC5pY29uPSIke3RoaXMubG9nb0ljb259Ij48L2RlZXMtaWNvbj5gOiIifQogICAgICAgICAgICAke3RoaXMubG9nb1RleHQ/d2A8c3BhbiBjbGFzcz0ibG9nb1RleHQiPiR7dGhpcy5sb2dvVGV4dH08L3NwYW4+YDoiIn0KICAgICAgICAgIDwvZGl2PgogICAgICAgIGA6IiJ9CgogICAgICAgIDxkaXYgY2xhc3M9Im1lbnVTZWN0aW9uIj4KICAgICAgICAgICR7dGhpcy5tZW51R3JvdXBzLmxlbmd0aD4wP3RoaXMucmVuZGVyTWVudUdyb3VwcygpOnRoaXMucmVuZGVyTGVnYWN5VGFicygpfQogICAgICAgIDwvZGl2PgoKICAgICAgICAke3RoaXMuYm90dG9tVGFicy5sZW5ndGg+MD93YAogICAgICAgICAgPGRpdiBjbGFzcz0iYm90dG9tU2VjdGlvbiI+CiAgICAgICAgICAgICR7dGhpcy5ib3R0b21UYWJzLm1hcChTPT50aGlzLnJlbmRlclRhYihTKSl9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgOiIifQogICAgICA8L2Rpdj4KICAgICAgPGJ1dHRvbiBjbGFzcz0iY29sbGFwc2UtdG9nZ2xlIiBAY2xpY2s9IiR7KCk9PnRoaXMudG9nZ2xlQ29sbGFwc2UoKX0iPgogICAgICAgIDxkZWVzLWljb24gLmljb249IiR7dGhpcy5jb2xsYXBzZWQ/Imx1Y2lkZTpjaGV2cm9uUmlnaHQiOiJsdWNpZGU6Y2hldnJvbkxlZnQifSI+PC9kZWVzLWljb24+CiAgICAgIDwvYnV0dG9uPgogICAgYH1yZW5kZXJNZW51R3JvdXBzKCl7cmV0dXJuIHdgCiAgICAgICR7dGhpcy5tZW51R3JvdXBzLm1hcChrPT53YAogICAgICAgIDxkaXYgY2xhc3M9Im1lbnVHcm91cCI+CiAgICAgICAgICAke2submFtZT93YDxkaXYgY2xhc3M9Imdyb3VwSGVhZGVyIj4ke2submFtZX08L2Rpdj5gOiIifQogICAgICAgICAgPGRpdiBjbGFzcz0iZ3JvdXBUYWJzIj4KICAgICAgICAgICAgJHtrLml0ZW1zLm1hcChTPT50aGlzLnJlbmRlclRhYihTKSl9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgYCl9CiAgICBgfXJlbmRlckxlZ2FjeVRhYnMoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0ibWVudUdyb3VwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJncm91cFRhYnMiPgogICAgICAgICAgJHt0aGlzLnRhYnMubWFwKGs9PnRoaXMucmVuZGVyVGFiKGspKX0KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfXJlbmRlclRhYihrKXtyZXR1cm4gd2AKICAgICAgPGRpdgogICAgICAgIGNsYXNzPSJ0YWIgJHtrPT09dGhpcy5zZWxlY3RlZFRhYj8ic2VsZWN0ZWRUYWIiOiIifSIKICAgICAgICBAY2xpY2s9IiR7KCk9Pnt0aGlzLnVwZGF0ZVRhYihrKX19IgogICAgICA+CiAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0iJHtrLmljb25OYW1lfHwiIn0iPjwvZGVlcy1pY29uPgogICAgICAgIDxzcGFuIGNsYXNzPSJ0YWJMYWJlbCI+JHtrLmtleX08L3NwYW4+CiAgICAgICAgJHtrLmJhZGdlIT09dm9pZCAwP3dgCiAgICAgICAgICA8c3BhbiBjbGFzcz0iYmFkZ2UgJHtrLmJhZGdlVmFyaWFudHx8ImRlZmF1bHQifSI+JHtrLmJhZGdlfTwvc3Bhbj4KICAgICAgICBgOiIifQogICAgICAgIDxzcGFuIGNsYXNzPSJ0YWItdG9vbHRpcCI+JHtrLmtleX08L3NwYW4+CiAgICAgIDwvZGl2PgogICAgYH1nZXRBbGxUYWJzKCl7cmV0dXJuIHRoaXMubWVudUdyb3Vwcy5sZW5ndGg+MD9bLi4udGhpcy5tZW51R3JvdXBzLmZsYXRNYXAoUz0+Uy5pdGVtcyksLi4udGhpcy5ib3R0b21UYWJzXTpbLi4udGhpcy50YWJzLC4uLnRoaXMuYm90dG9tVGFic119dXBkYXRlVGFiKGspe3RoaXMuc2VsZWN0ZWRUYWI9ayx0aGlzLnNlbGVjdGVkVGFiLmFjdGlvbigpLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInRhYi1zZWxlY3QiLHtkZXRhaWw6e3RhYjprfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWZpcnN0VXBkYXRlZCgpe2xldCBrPXRoaXMuZ2V0QWxsVGFicygpO2subGVuZ3RoPjAmJnRoaXMudXBkYXRlVGFiKGtbMF0pfXRvZ2dsZUNvbGxhcHNlKCl7dGhpcy5jb2xsYXBzZWQ9IXRoaXMuY29sbGFwc2VkLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNvbGxhcHNlLWNoYW5nZSIse2RldGFpbDp7Y29sbGFwc2VkOnRoaXMuY29sbGFwc2VkfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWNvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSxBbih0aGlzLEUpfXN0YXRpY3tBbihhLHQpfX07cmV0dXJuIEg9YX0pKCl9KTt2YXIgVzNhLEczYT1nKCgpPT57cGUoKTtXM2E9aSgoKT0+d2AKICA8c3R5bGU+CiAgICAuZGVtby1zZWNvbmRhcnltZW51LWNvbnRhaW5lciB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGhlaWdodDogMTAwJTsKICAgICAgYmFja2dyb3VuZDogIzFhMWExYTsKICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgfQogICAgLmRlbW8tc2Vjb25kYXJ5bWVudS1jb250YWluZXIgLnNwYWNlciB7CiAgICAgIGZsZXg6IDE7CiAgICAgIGJhY2tncm91bmQ6ICMwZjBmMGY7CiAgICAgIHBhZGRpbmc6IDIwcHg7CiAgICAgIGNvbG9yOiAjYTNhM2EzOwogICAgICBmb250LWZhbWlseTogJ0dlaXN0IFNhbnMnLCBzYW5zLXNlcmlmOwogICAgfQogICAgLmRlbW8tc2Vjb25kYXJ5bWVudS1jb250YWluZXIgLnNwYWNlciBoMyB7CiAgICAgIGNvbG9yOiAjZmFmYWZhOwogICAgICBtYXJnaW4tdG9wOiAwOwogICAgfQogICAgLmRlbW8tc2Vjb25kYXJ5bWVudS1jb250YWluZXIgLnNwYWNlciBjb2RlIHsKICAgICAgYmFja2dyb3VuZDogIzI3MjcyYTsKICAgICAgcGFkZGluZzogMnB4IDZweDsKICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICBmb250LXNpemU6IDEycHg7CiAgICB9CiAgICAuZGVtby1zZWNvbmRhcnltZW51LWNvbnRhaW5lciAuc3BhY2VyIHVsIHsKICAgICAgbGluZS1oZWlnaHQ6IDEuODsKICAgIH0KICA8L3N0eWxlPgogIDxkaXYgY2xhc3M9ImRlbW8tc2Vjb25kYXJ5bWVudS1jb250YWluZXIiPgogICAgPGRlZXMtYXBwdWktc2Vjb25kYXJ5bWVudQogICAgICAuaGVhZGluZz0keyJQcm9qZWN0cyJ9CiAgICAgIC5ncm91cHM9JHtbe25hbWU6Ik5hdmlnYXRpb24iLGljb25OYW1lOiJsdWNpZGU6Y29tcGFzcyIsaXRlbXM6W3trZXk6IkRhc2hib2FyZCIsaWNvbk5hbWU6Imx1Y2lkZTpsYXlvdXREYXNoYm9hcmQiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiRGFzaGJvYXJkIGNsaWNrZWQiKSwiYWN0aW9uIiksYmFkZ2U6MyxiYWRnZVZhcmlhbnQ6Indhcm5pbmcifSx7a2V5OiJQcm9qZWN0cyIsaWNvbk5hbWU6Imx1Y2lkZTpmb2xkZXIiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiUHJvamVjdHMgY2xpY2tlZCIpLCJhY3Rpb24iKSxiYWRnZToibmV3IixiYWRnZVZhcmlhbnQ6InN1Y2Nlc3MifSx7a2V5OiJBbmFseXRpY3MiLGljb25OYW1lOiJsdWNpZGU6YmFyQ2hhcnQyIixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIkFuYWx5dGljcyBjbGlja2VkIiksImFjdGlvbiIpfV19LHtuYW1lOiJBY3Rpb25zIixpY29uTmFtZToibHVjaWRlOnphcCIsaXRlbXM6W3t0eXBlOiJhY3Rpb24iLGtleToiQ3JlYXRlIE5ldyIsaWNvbk5hbWU6Imx1Y2lkZTpwbHVzIixhY3Rpb246aSgoKT0+YWxlcnQoIkNyZWF0ZSBOZXcgY2xpY2tlZCEiKSwiYWN0aW9uIil9LHt0eXBlOiJhY3Rpb24iLGtleToiSW1wb3J0IERhdGEiLGljb25OYW1lOiJsdWNpZGU6dXBsb2FkIixhY3Rpb246aSgoKT0+YWxlcnQoIkltcG9ydCBEYXRhIGNsaWNrZWQhIiksImFjdGlvbiIpfSx7dHlwZToiZGl2aWRlciJ9LHt0eXBlOiJhY3Rpb24iLGtleToiRGVsZXRlIEFsbCIsaWNvbk5hbWU6Imx1Y2lkZTp0cmFzaDIiLHZhcmlhbnQ6ImRhbmdlciIsY29uZmlybU1lc3NhZ2U6IkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgYWxsIGl0ZW1zPyIsYWN0aW9uOmkoKCk9PmFsZXJ0KCJEZWxldGVkISIpLCJhY3Rpb24iKX1dfSx7bmFtZToiRmlsdGVycyIsaWNvbk5hbWU6Imx1Y2lkZTpmaWx0ZXIiLGl0ZW1zOlt7dHlwZToiaGVhZGVyIixsYWJlbDoiU3RhdHVzIn0se3R5cGU6ImZpbHRlciIsa2V5OiJTaG93IEFjdGl2ZSIsaWNvbk5hbWU6Imx1Y2lkZTpjaGVja0NpcmNsZSIsYWN0aXZlOiEwLG9uVG9nZ2xlOmkocz0+Y29uc29sZS5sb2coIlNob3cgQWN0aXZlOiIscyksIm9uVG9nZ2xlIil9LHt0eXBlOiJmaWx0ZXIiLGtleToiU2hvdyBBcmNoaXZlZCIsaWNvbk5hbWU6Imx1Y2lkZTphcmNoaXZlIixhY3RpdmU6ITEsb25Ub2dnbGU6aShzPT5jb25zb2xlLmxvZygiU2hvdyBBcmNoaXZlZDoiLHMpLCJvblRvZ2dsZSIpfSx7dHlwZToiZGl2aWRlciJ9LHt0eXBlOiJtdWx0aUZpbHRlciIsa2V5OiJDYXRlZ29yaWVzIixpY29uTmFtZToibHVjaWRlOnRhZyIsY29sbGFwc2VkOiExLG9wdGlvbnM6W3trZXk6ImZyb250ZW5kIixsYWJlbDoiRnJvbnRlbmQiLGNoZWNrZWQ6ITAsaWNvbk5hbWU6Imx1Y2lkZTptb25pdG9yIn0se2tleToiYmFja2VuZCIsbGFiZWw6IkJhY2tlbmQiLGNoZWNrZWQ6ITAsaWNvbk5hbWU6Imx1Y2lkZTpzZXJ2ZXIifSx7a2V5OiJkZXZvcHMiLGxhYmVsOiJEZXZPcHMiLGNoZWNrZWQ6ITEsaWNvbk5hbWU6Imx1Y2lkZTpjbG91ZCJ9LHtrZXk6ImRlc2lnbiIsbGFiZWw6IkRlc2lnbiIsY2hlY2tlZDohMSxpY29uTmFtZToibHVjaWRlOnBhbGV0dGUifV0sb25DaGFuZ2U6aShzPT5jb25zb2xlLmxvZygiU2VsZWN0ZWQgY2F0ZWdvcmllczoiLHMpLCJvbkNoYW5nZSIpfV19LHtuYW1lOiJSZXNvdXJjZXMiLGljb25OYW1lOiJsdWNpZGU6Ym9va09wZW4iLGNvbGxhcHNlZDohMCxpdGVtczpbe3R5cGU6ImhlYWRlciIsbGFiZWw6IkRvY3VtZW50YXRpb24ifSx7dHlwZToibGluayIsa2V5OiJBUEkgUmVmZXJlbmNlIixpY29uTmFtZToibHVjaWRlOmZpbGVUZXh0IixocmVmOiJodHRwczovL2FwaS5leGFtcGxlLmNvbS9kb2NzIn0se3R5cGU6ImxpbmsiLGtleToiVXNlciBHdWlkZSIsaWNvbk5hbWU6Imx1Y2lkZTpib29rIixocmVmOiJodHRwczovL2RvY3MuZXhhbXBsZS5jb20vZ3VpZGUifSx7dHlwZToiZGl2aWRlciJ9LHt0eXBlOiJoZWFkZXIiLGxhYmVsOiJTdXBwb3J0In0se3R5cGU6ImxpbmsiLGtleToiSGVscCBDZW50ZXIiLGljb25OYW1lOiJsdWNpZGU6aGVscENpcmNsZSIsaHJlZjoiL2hlbHAiLGV4dGVybmFsOiExfSx7dHlwZToibGluayIsa2V5OiJHaXRIdWIgSXNzdWVzIixpY29uTmFtZToibHVjaWRlOmdpdGh1YiIsaHJlZjoiaHR0cHM6Ly9naXRodWIuY29tL2V4YW1wbGUvaXNzdWVzIn1dfV19CiAgICAgIEBpdGVtLXNlbGVjdD0ke3M9PmNvbnNvbGUubG9nKCJUYWIgc2VsZWN0ZWQ6IixzLmRldGFpbCl9CiAgICAgIEBhY3Rpb24tY2xpY2s9JHtzPT5jb25zb2xlLmxvZygiQWN0aW9uIGNsaWNrZWQ6IixzLmRldGFpbCl9CiAgICAgIEBmaWx0ZXItdG9nZ2xlPSR7cz0+Y29uc29sZS5sb2coIkZpbHRlciB0b2dnbGVkOiIscy5kZXRhaWwpfQogICAgICBAbXVsdGlmaWx0ZXItY2hhbmdlPSR7cz0+Y29uc29sZS5sb2coIk11bHRpLWZpbHRlciBjaGFuZ2VkOiIscy5kZXRhaWwpfQogICAgICBAbGluay1jbGljaz0ke3M9PmNvbnNvbGUubG9nKCJMaW5rIGNsaWNrZWQ6IixzLmRldGFpbCl9CiAgICA+PC9kZWVzLWFwcHVpLXNlY29uZGFyeW1lbnU+CiAgICA8ZGl2IGNsYXNzPSJzcGFjZXIiPgogICAgICA8aDM+U2Vjb25kYXJ5IE1lbnUgRGVtbzwvaDM+CiAgICAgIDxwPlRoaXMgZGVtbyBzaG93Y2FzZXMgYWxsIDggaXRlbSB0eXBlczo8L3A+CiAgICAgIDx1bD4KICAgICAgICA8bGk+PGNvZGU+dGFiPC9jb2RlPiAtIFNlbGVjdGFibGUgaXRlbXMgKE5hdmlnYXRpb24gZ3JvdXApPC9saT4KICAgICAgICA8bGk+PGNvZGU+YWN0aW9uPC9jb2RlPiAtIEJsdWUgYWN0aW9ucyAoQWN0aW9ucyBncm91cCk8L2xpPgogICAgICAgIDxsaT48Y29kZT5hY3Rpb248L2NvZGU+IHdpdGggPGNvZGU+dmFyaWFudDogJ2Rhbmdlcic8L2NvZGU+IC0gUmVkIGRhbmdlciBhY3Rpb248L2xpPgogICAgICAgIDxsaT48Y29kZT5maWx0ZXI8L2NvZGU+IC0gQ2hlY2tib3ggdG9nZ2xlcyAoRmlsdGVycyBncm91cCk8L2xpPgogICAgICAgIDxsaT48Y29kZT5tdWx0aUZpbHRlcjwvY29kZT4gLSBDb2xsYXBzaWJsZSBtdWx0aS1zZWxlY3QgKENhdGVnb3JpZXMpPC9saT4KICAgICAgICA8bGk+PGNvZGU+ZGl2aWRlcjwvY29kZT4gLSBWaXN1YWwgc2VwYXJhdG9yczwvbGk+CiAgICAgICAgPGxpPjxjb2RlPmhlYWRlcjwvY29kZT4gLSBTZWN0aW9uIGxhYmVsczwvbGk+CiAgICAgICAgPGxpPjxjb2RlPmxpbms8L2NvZGU+IC0gRXh0ZXJuYWwvaW50ZXJuYWwgbGlua3MgKFJlc291cmNlcyBncm91cCk8L2xpPgogICAgICA8L3VsPgogICAgICA8cD5UcnkgdGhlIGNvbGxhcHNlIHRvZ2dsZSBvbiB0aGUgbGVmdCBlZGdlITwvcD4KICAgIDwvZGl2PgogIDwvZGl2PgpgLCJkZW1vRnVuYyIpfSk7dmFyIGd1LFBvLEszYSx6aXQ9ZygoKT0+e3BvKCk7bWgoKTtvcigpO1VhKCk7cGUoKTtHM2EoKTtwdCgpO2d1PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxQbz1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sSzNhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1hcHB1aS1zZWNvbmRhcnltZW51IildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W10sSCxrPVtdLFM9W107dmFyIEk9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNBcHB1aVNlY29uZGFyeW1lbnUiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgUD10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZ30pXSxwPVtMKHt0eXBlOkFycmF5fSldLGM9W0woe3R5cGU6QXJyYXl9KV0seD1bTCh7dHlwZTpPYmplY3R9KV0seT1bWSgpXSxOPVtZKCldLE89W1koKV0sSD1bTCh7dHlwZTpCb29sZWFuLHJlZmxlY3Q6ITB9KV0sZ3UodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJoZWFkaW5nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFI9PiJoZWFkaW5nImluIFIsImhhcyIpLGdldDppKFI9PlIuaGVhZGluZywiZ2V0Iiksc2V0OmkoKFIsSyk9PntSLmhlYWRpbmc9S30sInNldCIpfSxtZXRhZGF0YTpQfSxvLGwpLGd1KHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZ3JvdXBzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFI9PiJncm91cHMiaW4gUiwiaGFzIiksZ2V0OmkoUj0+Ui5ncm91cHMsImdldCIpLHNldDppKChSLEspPT57Ui5ncm91cHM9S30sInNldCIpfSxtZXRhZGF0YTpQfSxkLHUpLGd1KHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VsZWN0aW9uT3B0aW9ucyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShSPT4ic2VsZWN0aW9uT3B0aW9ucyJpbiBSLCJoYXMiKSxnZXQ6aShSPT5SLnNlbGVjdGlvbk9wdGlvbnMsImdldCIpLHNldDppKChSLEspPT57Ui5zZWxlY3Rpb25PcHRpb25zPUt9LCJzZXQiKX0sbWV0YWRhdGE6UH0sYix2KSxndSh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlbGVjdGVkSXRlbSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShSPT4ic2VsZWN0ZWRJdGVtImluIFIsImhhcyIpLGdldDppKFI9PlIuc2VsZWN0ZWRJdGVtLCJnZXQiKSxzZXQ6aSgoUixLKT0+e1Iuc2VsZWN0ZWRJdGVtPUt9LCJzZXQiKX0sbWV0YWRhdGE6UH0sbSxmKSxndSh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNvbGxhcHNlZEdyb3VwcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShSPT4iY29sbGFwc2VkR3JvdXBzImluIFIsImhhcyIpLGdldDppKFI9PlIuY29sbGFwc2VkR3JvdXBzLCJnZXQiKSxzZXQ6aSgoUixLKT0+e1IuY29sbGFwc2VkR3JvdXBzPUt9LCJzZXQiKX0sbWV0YWRhdGE6UH0sTSx6KSxndSh0aGlzLG51bGwsTix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNvbGxhcHNlZE11bHRpRmlsdGVycyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShSPT4iY29sbGFwc2VkTXVsdGlGaWx0ZXJzImluIFIsImhhcyIpLGdldDppKFI9PlIuY29sbGFwc2VkTXVsdGlGaWx0ZXJzLCJnZXQiKSxzZXQ6aSgoUixLKT0+e1IuY29sbGFwc2VkTXVsdGlGaWx0ZXJzPUt9LCJzZXQiKX0sbWV0YWRhdGE6UH0sQyxfKSxndSh0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InJlbmRlckNvdW50ZXIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUj0+InJlbmRlckNvdW50ZXIiaW4gUiwiaGFzIiksZ2V0OmkoUj0+Ui5yZW5kZXJDb3VudGVyLCJnZXQiKSxzZXQ6aSgoUixLKT0+e1IucmVuZGVyQ291bnRlcj1LfSwic2V0Iil9LG1ldGFkYXRhOlB9LCQsRSksZ3UodGhpcyxudWxsLEgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjb2xsYXBzZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUj0+ImNvbGxhcHNlZCJpbiBSLCJoYXMiKSxnZXQ6aShSPT5SLmNvbGxhcHNlZCwiZ2V0Iiksc2V0OmkoKFIsSyk9PntSLmNvbGxhcHNlZD1LfSwic2V0Iil9LG1ldGFkYXRhOlB9LGssUyksZ3UobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6UH0sbnVsbCx0KSxJPWE9ZS52YWx1ZSxQJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOlB9KX1zdGF0aWMgZGVtbz1XM2E7c3RhdGljIGRlbW9Hcm91cHM9WyJBcHAgVUkiXTsjZT1Qbyh0aGlzLG8sIk1lbnUiKTtnZXQgaGVhZGluZygpe3JldHVybiB0aGlzLiNlfXNldCBoZWFkaW5nKFApe3RoaXMuI2U9UH0jdD0oUG8odGhpcyxsKSxQbyh0aGlzLGQsW10pKTtnZXQgZ3JvdXBzKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGdyb3VwcyhQKXt0aGlzLiN0PVB9I2E9KFBvKHRoaXMsdSksUG8odGhpcyxiLFtdKSk7Z2V0IHNlbGVjdGlvbk9wdGlvbnMoKXtyZXR1cm4gdGhpcy4jYX1zZXQgc2VsZWN0aW9uT3B0aW9ucyhQKXt0aGlzLiNhPVB9I3M9KFBvKHRoaXMsdiksUG8odGhpcyxtLG51bGwpKTtnZXQgc2VsZWN0ZWRJdGVtKCl7cmV0dXJuIHRoaXMuI3N9c2V0IHNlbGVjdGVkSXRlbShQKXt0aGlzLiNzPVB9I2k9KFBvKHRoaXMsZiksUG8odGhpcyxNLG5ldyBTZXQpKTtnZXQgY29sbGFwc2VkR3JvdXBzKCl7cmV0dXJuIHRoaXMuI2l9c2V0IGNvbGxhcHNlZEdyb3VwcyhQKXt0aGlzLiNpPVB9I3I9KFBvKHRoaXMseiksUG8odGhpcyxDLG5ldyBTZXQpKTtnZXQgY29sbGFwc2VkTXVsdGlGaWx0ZXJzKCl7cmV0dXJuIHRoaXMuI3J9c2V0IGNvbGxhcHNlZE11bHRpRmlsdGVycyhQKXt0aGlzLiNyPVB9I289KFBvKHRoaXMsXyksUG8odGhpcywkLDApKTtnZXQgcmVuZGVyQ291bnRlcigpe3JldHVybiB0aGlzLiNvfXNldCByZW5kZXJDb3VudGVyKFApe3RoaXMuI289UH0jbj0oUG8odGhpcyxFKSxQbyh0aGlzLGssITEpKTtnZXQgY29sbGFwc2VkKCl7cmV0dXJuIHRoaXMuI259c2V0IGNvbGxhcHNlZChQKXt0aGlzLiNuPVB9c3RhdGljIHN0eWxlcz1bSGUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICAtLXNpZGViYXItd2lkdGgtZXhwYW5kZWQ6IDI0MHB4OwogICAgICAgIC0tc2lkZWJhci13aWR0aC1jb2xsYXBzZWQ6IDU2cHg7CiAgICAgICAgLS1zaWRlYmFyLWJnOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXNlY29uZGFyeSk7CiAgICAgICAgLS1zaWRlYmFyLWZnOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTsKICAgICAgICAtLXNpZGViYXItZmctbXV0ZWQ6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgICAgLS1zaWRlYmFyLWZnLWFjdGl2ZTogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICAgIC0tc2lkZWJhci1ib3JkZXI6IHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLXN1YnRsZSk7CiAgICAgICAgLS1zaWRlYmFyLWhvdmVyOiB2YXIoLS1kZWVzLWNvbG9yLWhvdmVyKTsKICAgICAgICAtLXNpZGViYXItYWN0aXZlOiB2YXIoLS1kZWVzLWNvbG9yLWFjdGl2ZSk7CiAgICAgICAgLS1zaWRlYmFyLWFjY2VudDogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICAgIC0tdG9vbHRpcC1iZzogdmFyKC0tZGVlcy1jb2xvci10b29sdGlwLWJnKTsKICAgICAgICAtLXRvb2x0aXAtZmc6IHZhcigtLWRlZXMtY29sb3ItdG9vbHRpcC1mZyk7CgogICAgICAgIC8qIEJhZGdlIGNvbG9ycyAqLwogICAgICAgIC0tYmFkZ2UtZGVmYXVsdC1iZzogdmFyKC0tZGVlcy1jb2xvci1iYWRnZS1kZWZhdWx0LWJnKTsKICAgICAgICAtLWJhZGdlLWRlZmF1bHQtZmc6IHZhcigtLWRlZXMtY29sb3ItYmFkZ2UtZGVmYXVsdC1mZyk7CiAgICAgICAgLS1iYWRnZS1zdWNjZXNzLWJnOiB2YXIoLS1kZWVzLWNvbG9yLWJhZGdlLXN1Y2Nlc3MtYmcpOwogICAgICAgIC0tYmFkZ2Utc3VjY2Vzcy1mZzogdmFyKC0tZGVlcy1jb2xvci1iYWRnZS1zdWNjZXNzLWZnKTsKICAgICAgICAtLWJhZGdlLXdhcm5pbmctYmc6IHZhcigtLWRlZXMtY29sb3ItYmFkZ2Utd2FybmluZy1iZyk7CiAgICAgICAgLS1iYWRnZS13YXJuaW5nLWZnOiB2YXIoLS1kZWVzLWNvbG9yLWJhZGdlLXdhcm5pbmctZmcpOwogICAgICAgIC0tYmFkZ2UtZXJyb3ItYmc6IHZhcigtLWRlZXMtY29sb3ItYmFkZ2UtZXJyb3ItYmcpOwogICAgICAgIC0tYmFkZ2UtZXJyb3ItZmc6IHZhcigtLWRlZXMtY29sb3ItYmFkZ2UtZXJyb3ItZmcpOwoKICAgICAgICAvKiBBY3Rpb24gY29sb3JzICovCiAgICAgICAgLS1hY3Rpb24tcHJpbWFyeTogJHtoLmJkVGhlbWUoIiMyNTYzZWIiLCIjM2I4MmY2Iil9OwogICAgICAgIC0tYWN0aW9uLXByaW1hcnktaG92ZXI6ICR7aC5iZFRoZW1lKCIjMWQ0ZWQ4IiwiIzYwYTVmYSIpfTsKICAgICAgICAtLWFjdGlvbi1kYW5nZXI6ICR7aC5iZFRoZW1lKCIjZGMyNjI2IiwiI2VmNDQ0NCIpfTsKICAgICAgICAtLWFjdGlvbi1kYW5nZXItaG92ZXI6ICR7aC5iZFRoZW1lKCIjYjkxYzFjIiwiI2Y4NzE3MSIpfTsKCiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB3aWR0aDogdmFyKC0tc2lkZWJhci13aWR0aC1leHBhbmRlZCk7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc2lkZWJhci1iZyk7CiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgdmFyKC0tc2lkZWJhci1ib3JkZXIpOwogICAgICAgIGZvbnQtZmFtaWx5OiAnR2Vpc3QgU2FucycsICdJbnRlcicsIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgc2Fucy1zZXJpZjsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjI1cyBlYXNlOwogICAgICB9CgogICAgICA6aG9zdChbY29sbGFwc2VkXSkgewogICAgICAgIHdpZHRoOiB2YXIoLS1zaWRlYmFyLXdpZHRoLWNvbGxhcHNlZCk7CiAgICAgIH0KCiAgICAgIC5tYWluY29udGFpbmVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAvKiBGbG9hdGluZyBjb2xsYXBzZSB0b2dnbGUgYnV0dG9uICovCiAgICAgIC5jb2xsYXBzZS10b2dnbGUgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICByaWdodDogLTEycHg7CiAgICAgICAgdG9wOiAyNHB4OwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgICAgICB3aWR0aDogMjRweDsKICAgICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYmctcHJpbWFyeSk7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItc3Ryb25nKTsKICAgICAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEpOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB6LWluZGV4OiAxMDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZSwgYmFja2dyb3VuZCAwLjE1cyBlYXNlOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KCiAgICAgIC5jb2xsYXBzZS10b2dnbGU6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYmctdGVydGlhcnkpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIH0KCiAgICAgIDpob3N0KDpob3ZlcikgLmNvbGxhcHNlLXRvZ2dsZSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgLmNvbGxhcHNlLXRvZ2dsZSBkZWVzLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgfQoKICAgICAgLyogSGVhZGVyIFNlY3Rpb24gKi8KICAgICAgLmhlYWRlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBoZWlnaHQ6IDQ4cHg7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zaWRlYmFyLWJvcmRlcik7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLmhlYWRlciAuaGVhZGluZyB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogdmFyKC0tc2lkZWJhci1mZy1hY3RpdmUpOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZSwgd2lkdGggMC4yNXMgZWFzZTsKICAgICAgfQoKICAgICAgOmhvc3QoW2NvbGxhcHNlZF0pIC5oZWFkZXIgewogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDAgOHB4OwogICAgICB9CgogICAgICA6aG9zdChbY29sbGFwc2VkXSkgLmhlYWRlciAuaGVhZGluZyB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB3aWR0aDogMDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAvKiBTY3JvbGxhYmxlIE1lbnUgU2VjdGlvbiAqLwogICAgICAubWVudVNlY3Rpb24gewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbjsKICAgICAgICBwYWRkaW5nOiA4cHggMDsKICAgICAgfQoKICAgICAgLm1lbnVTZWN0aW9uOjotd2Via2l0LXNjcm9sbGJhciB7CiAgICAgICAgd2lkdGg6IDZweDsKICAgICAgfQoKICAgICAgLm1lbnVTZWN0aW9uOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgIH0KCiAgICAgIC5tZW51U2VjdGlvbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3Itc2Nyb2xsYmFyLXRodW1iKTsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgIH0KCiAgICAgIC5tZW51U2VjdGlvbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3Itc2Nyb2xsYmFyLXRodW1iLWhvdmVyKTsKICAgICAgfQoKICAgICAgLyogTWVudSBHcm91cCAqLwogICAgICAubWVudUdyb3VwIHsKICAgICAgICBwYWRkaW5nOiAwIDhweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7CiAgICAgIH0KCiAgICAgIDpob3N0KFtjb2xsYXBzZWRdKSAubWVudUdyb3VwIHsKICAgICAgICBwYWRkaW5nOiAwIDRweDsKICAgICAgfQoKICAgICAgLmdyb3VwSGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cyBlYXNlLCBvcGFjaXR5IDAuMnMgZWFzZSwgbWF4LWhlaWdodCAwLjI1cyBlYXNlOwogICAgICAgIG1heC1oZWlnaHQ6IDQwcHg7CiAgICAgIH0KCiAgICAgIC5ncm91cEhlYWRlcjpob3ZlciB7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoInJnYmEoMTQwLCAxMjAsIDEwMCwgMC4wNikiLCJyZ2JhKDE4MCwgMTYwLCAxNDAsIDAuMDgpIil9OwogICAgICAgIHBhZGRpbmc6IDdweCAxMXB4OwogICAgICB9CgogICAgICAuZ3JvdXBIZWFkZXI6bm90KC5jb2xsYXBzZWQpIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgxNDAsIDEyMCwgMTAwLCAwLjA2KSIsInJnYmEoMTgwLCAxNjAsIDE0MCwgMC4wOCkiKX07CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICB9CgogICAgICAuZ3JvdXBIZWFkZXIgLmdyb3VwVGl0bGUgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXdhcm0pOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4OwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLmdyb3VwSGVhZGVyIC5ncm91cFRpdGxlIGRlZXMtaWNvbiB7CiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtd2FybSk7CiAgICAgIH0KCiAgICAgIC5ncm91cEhlYWRlciAuY2hldnJvbiB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2U7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC13YXJtKTsKICAgICAgfQoKICAgICAgLmdyb3VwSGVhZGVyLmNvbGxhcHNlZCAuY2hldnJvbiB7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTsKICAgICAgfQoKICAgICAgLyogSGlkZSBncm91cCBoZWFkZXJzIHdoZW4gaG9yaXpvbnRhbGx5IGNvbGxhcHNlZCAqLwogICAgICA6aG9zdChbY29sbGFwc2VkXSkgLmdyb3VwSGVhZGVyIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIG1heC1oZWlnaHQ6IDA7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICAgIC8qIEdyb3VwIEl0ZW1zIENvbnRhaW5lciAqLwogICAgICAuZ3JvdXBJdGVtcyB7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDAuMjVzIGVhc2UsIG9wYWNpdHkgMC4ycyBlYXNlLCBtYXJnaW4gMC4yNXMgZWFzZTsKICAgICAgICBtYXgtaGVpZ2h0OiAxMDAwcHg7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4OwogICAgICB9CgogICAgICAuZ3JvdXBJdGVtcy5jb2xsYXBzZWQgewogICAgICAgIG1heC1oZWlnaHQ6IDA7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICB9CgogICAgICAvKiBBbHdheXMgc2hvdyBpdGVtcyB3aGVuIGhvcml6b250YWxseSBjb2xsYXBzZWQgKHJlZ2FyZGxlc3Mgb2YgZ3JvdXAgY29sbGFwc2Ugc3RhdGUpICovCiAgICAgIDpob3N0KFtjb2xsYXBzZWRdKSAuZ3JvdXBJdGVtcyB7CiAgICAgICAgbWF4LWhlaWdodDogbm9uZTsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CgogICAgICAvKiBNZW51IEl0ZW0gQmFzZSAqLwogICAgICAubWVudUl0ZW0gewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAxMHB4OwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgIG1hcmdpbjogMnB4IDA7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0NTA7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBjb2xvcjogdmFyKC0tc2lkZWJhci1mZyk7CiAgICAgIH0KCiAgICAgIC5tZW51SXRlbTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc2lkZWJhci1ob3Zlcik7CiAgICAgICAgY29sb3I6IHZhcigtLXNpZGViYXItZmctYWN0aXZlKTsKICAgICAgfQoKICAgICAgLm1lbnVJdGVtOmFjdGl2ZSB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc2lkZWJhci1hY3RpdmUpOwogICAgICB9CgogICAgICAubWVudUl0ZW0uZGlzYWJsZWQgewogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICAubWVudUl0ZW0uc2VsZWN0ZWQgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXNpZGViYXItYWN0aXZlKTsKICAgICAgICBjb2xvcjogdmFyKC0tc2lkZWJhci1mZy1hY3RpdmUpOwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIH0KCiAgICAgIC5tZW51SXRlbS5zZWxlY3RlZDo6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB0b3A6IDUwJTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICAgICAgd2lkdGg6IDNweDsKICAgICAgICBoZWlnaHQ6IDE2cHg7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc2lkZWJhci1hY2NlbnQpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDAgMnB4IDJweCAwOwogICAgICB9CgogICAgICAubWVudUl0ZW0gZGVlcy1pY29uIHsKICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgb3BhY2l0eTogMC43OwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAubWVudUl0ZW0uc2VsZWN0ZWQgZGVlcy1pY29uIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CgogICAgICAubWVudUl0ZW0gLml0ZW1MYWJlbCB7CiAgICAgICAgZmxleDogMTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2UsIHdpZHRoIDAuMjVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC8qIEFjdGlvbiBJdGVtIFN0eWxlcyAqLwogICAgICAubWVudUl0ZW0uYWN0aW9uLXByaW1hcnkgewogICAgICAgIGNvbG9yOiB2YXIoLS1hY3Rpb24tcHJpbWFyeSk7CiAgICAgIH0KCiAgICAgIC5tZW51SXRlbS5hY3Rpb24tcHJpbWFyeTpob3ZlciB7CiAgICAgICAgY29sb3I6IHZhcigtLWFjdGlvbi1wcmltYXJ5LWhvdmVyKTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgzNywgOTksIDIzNSwgMC4wOCkiLCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC4xMikiKX07CiAgICAgIH0KCiAgICAgIC5tZW51SXRlbS5hY3Rpb24tcHJpbWFyeSBkZWVzLWljb24gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC5tZW51SXRlbS5hY3Rpb24tZGFuZ2VyIHsKICAgICAgICBjb2xvcjogdmFyKC0tYWN0aW9uLWRhbmdlcik7CiAgICAgIH0KCiAgICAgIC5tZW51SXRlbS5hY3Rpb24tZGFuZ2VyOmhvdmVyIHsKICAgICAgICBjb2xvcjogdmFyKC0tYWN0aW9uLWRhbmdlci1ob3Zlcik7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMjIwLCAzOCwgMzgsIDAuMDgpIiwicmdiYSgyMzksIDY4LCA2OCwgMC4xMikiKX07CiAgICAgIH0KCiAgICAgIC5tZW51SXRlbS5hY3Rpb24tZGFuZ2VyIGRlZXMtaWNvbiB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgLyogRmlsdGVyIEl0ZW0gU3R5bGVzICovCiAgICAgIC5tZW51SXRlbS5maWx0ZXIgewogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgfQoKICAgICAgLm1lbnVJdGVtLmZpbHRlciAuZmlsdGVyLWNoZWNrYm94IHsKICAgICAgICB3aWR0aDogMTZweDsKICAgICAgICBoZWlnaHQ6IDE2cHg7CiAgICAgICAgYm9yZGVyOiAycHggc29saWQgJHtoLmJkVGhlbWUoIiNkNGQ0ZDQiLCIjNTI1MjUyIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC5tZW51SXRlbS5maWx0ZXIgLmZpbHRlci1jaGVja2JveC5jaGVja2VkIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaWRlYmFyLWFjY2VudCk7CiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zaWRlYmFyLWFjY2VudCk7CiAgICAgIH0KCiAgICAgIC5tZW51SXRlbS5maWx0ZXIgLmZpbHRlci1jaGVja2JveCBkZWVzLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNmYWZhZmEiLCIjMGEwYTBhIil9OwogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC5tZW51SXRlbS5maWx0ZXIuYWN0aXZlIHsKICAgICAgICBjb2xvcjogdmFyKC0tc2lkZWJhci1mZy1hY3RpdmUpOwogICAgICB9CgogICAgICAvKiBNdWx0aS1GaWx0ZXIgQ29udGFpbmVyICovCiAgICAgIC5tdWx0aUZpbHRlciB7CiAgICAgICAgbWFyZ2luOiA0cHggMDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zaWRlYmFyLWJvcmRlcik7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wMikiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDIpIil9OwogICAgICB9CgogICAgICAubXVsdGlGaWx0ZXItaGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIHBhZGRpbmc6IDEwcHggMTJweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cyBlYXNlOwogICAgICB9CgogICAgICAubXVsdGlGaWx0ZXItaGVhZGVyOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaWRlYmFyLWhvdmVyKTsKICAgICAgfQoKICAgICAgLm11bHRpRmlsdGVyLWhlYWRlciAubXVsdGlGaWx0ZXItdGl0bGUgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjb2xvcjogdmFyKC0tc2lkZWJhci1mZy1hY3RpdmUpOwogICAgICB9CgogICAgICAubXVsdGlGaWx0ZXItaGVhZGVyIC5tdWx0aUZpbHRlci10aXRsZSBkZWVzLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICBvcGFjaXR5OiAwLjc7CiAgICAgIH0KCiAgICAgIC5tdWx0aUZpbHRlci1oZWFkZXIgLm11bHRpRmlsdGVyLWNvdW50IHsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgY29sb3I6IHZhcigtLXNpZGViYXItZmctbXV0ZWQpOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJhZGdlLWRlZmF1bHQtYmcpOwogICAgICAgIHBhZGRpbmc6IDJweCA2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICB9CgogICAgICAubXVsdGlGaWx0ZXItaGVhZGVyIC5jaGV2cm9uIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZTsKICAgICAgICBjb2xvcjogdmFyKC0tc2lkZWJhci1mZy1tdXRlZCk7CiAgICAgIH0KCiAgICAgIC5tdWx0aUZpbHRlci1oZWFkZXIuY29sbGFwc2VkIC5jaGV2cm9uIHsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpOwogICAgICB9CgogICAgICAubXVsdGlGaWx0ZXItb3B0aW9ucyB7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXNpZGViYXItYm9yZGVyKTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRyYW5zaXRpb246IG1heC1oZWlnaHQgMC4yNXMgZWFzZSwgb3BhY2l0eSAwLjJzIGVhc2U7CiAgICAgICAgbWF4LWhlaWdodDogNTAwcHg7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgLm11bHRpRmlsdGVyLW9wdGlvbnMuY29sbGFwc2VkIHsKICAgICAgICBtYXgtaGVpZ2h0OiAwOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgYm9yZGVyLXRvcDogbm9uZTsKICAgICAgfQoKICAgICAgLm11bHRpRmlsdGVyLW9wdGlvbiB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMTBweDsKICAgICAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cyBlYXNlOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBjb2xvcjogdmFyKC0tc2lkZWJhci1mZyk7CiAgICAgIH0KCiAgICAgIC5tdWx0aUZpbHRlci1vcHRpb246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXNpZGViYXItaG92ZXIpOwogICAgICAgIGNvbG9yOiB2YXIoLS1zaWRlYmFyLWZnLWFjdGl2ZSk7CiAgICAgIH0KCiAgICAgIC5tdWx0aUZpbHRlci1vcHRpb24gLm9wdGlvbi1jaGVja2JveCB7CiAgICAgICAgd2lkdGg6IDE2cHg7CiAgICAgICAgaGVpZ2h0OiAxNnB4OwogICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZDRkNGQ0IiwiIzUyNTI1MiIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAubXVsdGlGaWx0ZXItb3B0aW9uIC5vcHRpb24tY2hlY2tib3guY2hlY2tlZCB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc2lkZWJhci1hY2NlbnQpOwogICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc2lkZWJhci1hY2NlbnQpOwogICAgICB9CgogICAgICAubXVsdGlGaWx0ZXItb3B0aW9uIC5vcHRpb24tY2hlY2tib3ggZGVlcy1pY29uIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZmFmYWZhIiwiIzBhMGEwYSIpfTsKICAgICAgfQoKICAgICAgLm11bHRpRmlsdGVyLW9wdGlvbiBkZWVzLWljb24ub3B0aW9uLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBvcGFjaXR5OiAwLjc7CiAgICAgIH0KCiAgICAgIC8qIERpdmlkZXIgKi8KICAgICAgLm1lbnVEaXZpZGVyIHsKICAgICAgICBoZWlnaHQ6IDFweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaWRlYmFyLWJvcmRlcik7CiAgICAgICAgbWFyZ2luOiA4cHggMTJweDsKICAgICAgfQoKICAgICAgOmhvc3QoW2NvbGxhcHNlZF0pIC5tZW51RGl2aWRlciB7CiAgICAgICAgbWFyZ2luOiA4cHggNHB4OwogICAgICB9CgogICAgICAvKiBIZWFkZXIvTGFiZWwgKi8KICAgICAgLm1lbnVIZWFkZXIgewogICAgICAgIHBhZGRpbmc6IDEycHggMTJweCA0cHggMTJweDsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogdmFyKC0tc2lkZWJhci1mZy1tdXRlZCk7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7CiAgICAgIH0KCiAgICAgIDpob3N0KFtjb2xsYXBzZWRdKSAubWVudUhlYWRlciB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgLyogTGluayBJdGVtICovCiAgICAgIC5tZW51SXRlbS5saW5rIC5leHRlcm5hbC1pY29uIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICB9CgogICAgICAvKiBDb2xsYXBzZWQgbWVudSBpdGVtIHN0eWxlcyAqLwogICAgICA6aG9zdChbY29sbGFwc2VkXSkgLm1lbnVJdGVtIHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiA4cHg7CiAgICAgICAgZ2FwOiAwOwogICAgICB9CgogICAgICA6aG9zdChbY29sbGFwc2VkXSkgLm1lbnVJdGVtIC5pdGVtTGFiZWwgewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgd2lkdGg6IDA7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB9CgogICAgICA6aG9zdChbY29sbGFwc2VkXSkgLm1lbnVJdGVtLnNlbGVjdGVkOjpiZWZvcmUgewogICAgICAgIGxlZnQ6IC00cHg7CiAgICAgIH0KCiAgICAgIDpob3N0KFtjb2xsYXBzZWRdKSAubWVudUl0ZW0gLmZpbHRlci1jaGVja2JveCwKICAgICAgOmhvc3QoW2NvbGxhcHNlZF0pIC5tZW51SXRlbSAuZXh0ZXJuYWwtaWNvbiB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgOmhvc3QoW2NvbGxhcHNlZF0pIC5tdWx0aUZpbHRlciB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgLyogVG9vbHRpcCBmb3IgY29sbGFwc2VkIHN0YXRlICovCiAgICAgIC5pdGVtLXRvb2x0aXAgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBsZWZ0OiAxMDAlOwogICAgICAgIHRvcDogNTAlOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgICAgICBtYXJnaW4tbGVmdDogMTJweDsKICAgICAgICBwYWRkaW5nOiA2cHggMTJweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10b29sdGlwLWJnKTsKICAgICAgICBjb2xvcjogdmFyKC0tdG9vbHRpcC1mZyk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGVhc2U7CiAgICAgICAgei1pbmRleDogMTAwMDsKICAgICAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjE1KTsKICAgICAgfQoKICAgICAgLml0ZW0tdG9vbHRpcDo6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgbGVmdDogLTRweDsKICAgICAgICB0b3A6IDUwJTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICAgICAgYm9yZGVyOiA0cHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB2YXIoLS10b29sdGlwLWJnKTsKICAgICAgfQoKICAgICAgOmhvc3QoW2NvbGxhcHNlZF0pIC5tZW51SXRlbTpob3ZlciAuaXRlbS10b29sdGlwIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIHRyYW5zaXRpb24tZGVsYXk6IDFzOwogICAgICB9CgogICAgICAvKiBCYWRnZSBTdHlsZXMgKi8KICAgICAgLmJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIG1pbi13aWR0aDogMThweDsKICAgICAgICBoZWlnaHQ6IDE4cHg7CiAgICAgICAgcGFkZGluZzogMCA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOXB4OwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAuYmFkZ2UuZGVmYXVsdCB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYmFkZ2UtZGVmYXVsdC1iZyk7CiAgICAgICAgY29sb3I6IHZhcigtLWJhZGdlLWRlZmF1bHQtZmcpOwogICAgICB9CgogICAgICAuYmFkZ2Uuc3VjY2VzcyB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYmFkZ2Utc3VjY2Vzcy1iZyk7CiAgICAgICAgY29sb3I6IHZhcigtLWJhZGdlLXN1Y2Nlc3MtZmcpOwogICAgICB9CgogICAgICAuYmFkZ2Uud2FybmluZyB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYmFkZ2Utd2FybmluZy1iZyk7CiAgICAgICAgY29sb3I6IHZhcigtLWJhZGdlLXdhcm5pbmctZmcpOwogICAgICB9CgogICAgICAuYmFkZ2UuZXJyb3IgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJhZGdlLWVycm9yLWJnKTsKICAgICAgICBjb2xvcjogdmFyKC0tYmFkZ2UtZXJyb3ItZmcpOwogICAgICB9CgogICAgICA6aG9zdChbY29sbGFwc2VkXSkgLmJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CgogICAgICAvKiBMZWdhY3kgb3B0aW9ucyBjb250YWluZXIgKi8KICAgICAgLmxlZ2FjeU9wdGlvbnMgewogICAgICAgIHBhZGRpbmc6IDAgOHB4OwogICAgICB9CgogICAgICAvKiBEaXZpZGVyIChsZWdhY3kpICovCiAgICAgIC5kaXZpZGVyIHsKICAgICAgICBoZWlnaHQ6IDFweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaWRlYmFyLWJvcmRlcik7CiAgICAgICAgbWFyZ2luOiA4cHggMTJweDsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9Im1haW5jb250YWluZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iaGVhZGluZyI+JHt0aGlzLmhlYWRpbmd9PC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1lbnVTZWN0aW9uIj4KICAgICAgICAgICR7dGhpcy5ncm91cHMubGVuZ3RoPjA/dGhpcy5yZW5kZXJHcm91cHMoKTp0aGlzLnJlbmRlckxlZ2FjeU9wdGlvbnMoKX0KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxidXR0b24gY2xhc3M9ImNvbGxhcHNlLXRvZ2dsZSIgQGNsaWNrPSIkeygpPT50aGlzLnRvZ2dsZUNvbGxhcHNlKCl9Ij4KICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSIke3RoaXMuY29sbGFwc2VkPyJsdWNpZGU6Y2hldnJvblJpZ2h0IjoibHVjaWRlOmNoZXZyb25MZWZ0In0iPjwvZGVlcy1pY29uPgogICAgICA8L2J1dHRvbj4KICAgIGB9cmVuZGVyR3JvdXBzKCl7cmV0dXJuIHdgCiAgICAgICR7dGhpcy5ncm91cHMubWFwKFA9PndgCiAgICAgICAgPGRpdiBjbGFzcz0ibWVudUdyb3VwIj4KICAgICAgICAgIDxkaXYKICAgICAgICAgICAgY2xhc3M9Imdyb3VwSGVhZGVyICR7dGhpcy5jb2xsYXBzZWRHcm91cHMuaGFzKFAubmFtZSk/ImNvbGxhcHNlZCI6IiJ9IgogICAgICAgICAgICBAY2xpY2s9IiR7KCk9PnRoaXMudG9nZ2xlR3JvdXAoUC5uYW1lKX0iCiAgICAgICAgICA+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJncm91cFRpdGxlIj4KICAgICAgICAgICAgICAke1AuaWNvbk5hbWU/d2A8ZGVlcy1pY29uIC5pY29uPSIke3RoaXMubm9ybWFsaXplSWNvbihQLmljb25OYW1lKX0iPjwvZGVlcy1pY29uPmA6IiJ9CiAgICAgICAgICAgICAgJHtQLm5hbWV9CiAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPGRlZXMtaWNvbiBjbGFzcz0iY2hldnJvbiIgLmljb249IiR7Imx1Y2lkZTpjaGV2cm9uRG93biJ9Ij48L2RlZXMtaWNvbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZ3JvdXBJdGVtcyAke3RoaXMuY29sbGFwc2VkR3JvdXBzLmhhcyhQLm5hbWUpPyJjb2xsYXBzZWQiOiIifSI+CiAgICAgICAgICAgICR7UC5pdGVtcy5tYXAoUj0+dGhpcy5yZW5kZXJJdGVtKFIsUCkpfQogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIGApfQogICAgYH1yZW5kZXJJdGVtKFAsUil7aWYoImhpZGRlbiJpbiBQJiZQLmhpZGRlbilyZXR1cm4gd2BgO3N3aXRjaCgidHlwZSJpbiBQP1AudHlwZToidGFiIil7Y2FzZSJhY3Rpb24iOnJldHVybiB0aGlzLnJlbmRlckFjdGlvbkl0ZW0oUCk7Y2FzZSJmaWx0ZXIiOnJldHVybiB0aGlzLnJlbmRlckZpbHRlckl0ZW0oUCk7Y2FzZSJtdWx0aUZpbHRlciI6cmV0dXJuIHRoaXMucmVuZGVyTXVsdGlGaWx0ZXJJdGVtKFApO2Nhc2UiZGl2aWRlciI6cmV0dXJuIHRoaXMucmVuZGVyRGl2aWRlcigpO2Nhc2UiaGVhZGVyIjpyZXR1cm4gdGhpcy5yZW5kZXJIZWFkZXIoUCk7Y2FzZSJsaW5rIjpyZXR1cm4gdGhpcy5yZW5kZXJMaW5rSXRlbShQKTtkZWZhdWx0OnJldHVybiB0aGlzLnJlbmRlclRhYkl0ZW0oUCxSKX19cmVuZGVyVGFiSXRlbShQLFIpe2xldCBLPXRoaXMuc2VsZWN0ZWRJdGVtPy5rZXk9PT1QLmtleSxWPVAuZGlzYWJsZWQ9PT0hMDtyZXR1cm4gd2AKICAgICAgPGRpdgogICAgICAgIGNsYXNzPSJtZW51SXRlbSAke0s/InNlbGVjdGVkIjoiIn0gJHtWPyJkaXNhYmxlZCI6IiJ9IgogICAgICAgIEBjbGljaz0iJHsoKT0+IVYmJnRoaXMuc2VsZWN0VGFiSXRlbShQLFIpfSIKICAgICAgICBAY29udGV4dG1lbnU9IiR7Vz0+dGhpcy5oYW5kbGVDb250ZXh0TWVudShXLFApfSIKICAgICAgPgogICAgICAgICR7UC5pY29uTmFtZT93YDxkZWVzLWljb24gLmljb249IiR7dGhpcy5ub3JtYWxpemVJY29uKFAuaWNvbk5hbWUpfSI+PC9kZWVzLWljb24+YDoiIn0KICAgICAgICA8c3BhbiBjbGFzcz0iaXRlbUxhYmVsIj4ke1Aua2V5fTwvc3Bhbj4KICAgICAgICAke1AuYmFkZ2UhPT12b2lkIDA/d2AKICAgICAgICAgIDxzcGFuIGNsYXNzPSJiYWRnZSAke1AuYmFkZ2VWYXJpYW50fHwiZGVmYXVsdCJ9Ij4ke1AuYmFkZ2V9PC9zcGFuPgogICAgICAgIGA6IiJ9CiAgICAgICAgPHNwYW4gY2xhc3M9Iml0ZW0tdG9vbHRpcCI+JHtQLmtleX08L3NwYW4+CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJBY3Rpb25JdGVtKFApe2xldCBSPVAudmFyaWFudHx8InByaW1hcnkiLEs9UC5kaXNhYmxlZD09PSEwO3JldHVybiB3YAogICAgICA8ZGl2CiAgICAgICAgY2xhc3M9Im1lbnVJdGVtIGFjdGlvbi0ke1J9ICR7Sz8iZGlzYWJsZWQiOiIifSIKICAgICAgICBAY2xpY2s9IiR7KCk9PiFLJiZ0aGlzLmhhbmRsZUFjdGlvbkNsaWNrKFApfSIKICAgICAgPgogICAgICAgICR7UC5pY29uTmFtZT93YDxkZWVzLWljb24gLmljb249IiR7dGhpcy5ub3JtYWxpemVJY29uKFAuaWNvbk5hbWUpfSI+PC9kZWVzLWljb24+YDoiIn0KICAgICAgICA8c3BhbiBjbGFzcz0iaXRlbUxhYmVsIj4ke1Aua2V5fTwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iaXRlbS10b29sdGlwIj4ke1Aua2V5fTwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICBgfXJlbmRlckZpbHRlckl0ZW0oUCl7bGV0IFI9UC5kaXNhYmxlZD09PSEwO3JldHVybiB3YAogICAgICA8ZGl2CiAgICAgICAgY2xhc3M9Im1lbnVJdGVtIGZpbHRlciAke1AuYWN0aXZlPyJhY3RpdmUiOiIifSAke1I/ImRpc2FibGVkIjoiIn0iCiAgICAgICAgQGNsaWNrPSIkeygpPT4hUiYmdGhpcy5oYW5kbGVGaWx0ZXJUb2dnbGUoUCl9IgogICAgICA+CiAgICAgICAgJHtQLmljb25OYW1lP3dgPGRlZXMtaWNvbiAuaWNvbj0iJHt0aGlzLm5vcm1hbGl6ZUljb24oUC5pY29uTmFtZSl9Ij48L2RlZXMtaWNvbj5gOiIifQogICAgICAgIDxzcGFuIGNsYXNzPSJpdGVtTGFiZWwiPiR7UC5rZXl9PC9zcGFuPgogICAgICAgIDxkaXYgY2xhc3M9ImZpbHRlci1jaGVja2JveCAke1AuYWN0aXZlPyJjaGVja2VkIjoiIn0iPgogICAgICAgICAgJHtQLmFjdGl2ZT93YDxkZWVzLWljb24gLmljb249IiR7Imx1Y2lkZTpjaGVjayJ9Ij48L2RlZXMtaWNvbj5gOiIifQogICAgICAgIDwvZGl2PgogICAgICAgIDxzcGFuIGNsYXNzPSJpdGVtLXRvb2x0aXAiPiR7UC5rZXl9PC9zcGFuPgogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyTXVsdGlGaWx0ZXJJdGVtKFApe2xldCBSPXRoaXMuY29sbGFwc2VkTXVsdGlGaWx0ZXJzLmhhcyhQLmtleSksSz1QLm9wdGlvbnMuZmlsdGVyKFY9PlYuY2hlY2tlZCkubGVuZ3RoO3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJtdWx0aUZpbHRlciI+CiAgICAgICAgPGRpdgogICAgICAgICAgY2xhc3M9Im11bHRpRmlsdGVyLWhlYWRlciAke1I/ImNvbGxhcHNlZCI6IiJ9IgogICAgICAgICAgQGNsaWNrPSIkeygpPT50aGlzLnRvZ2dsZU11bHRpRmlsdGVyKFAua2V5KX0iCiAgICAgICAgPgogICAgICAgICAgPHNwYW4gY2xhc3M9Im11bHRpRmlsdGVyLXRpdGxlIj4KICAgICAgICAgICAgJHtQLmljb25OYW1lP3dgPGRlZXMtaWNvbiAuaWNvbj0iJHt0aGlzLm5vcm1hbGl6ZUljb24oUC5pY29uTmFtZSl9Ij48L2RlZXMtaWNvbj5gOiIifQogICAgICAgICAgICAke1Aua2V5fQogICAgICAgICAgPC9zcGFuPgogICAgICAgICAgJHtLPjA/d2A8c3BhbiBjbGFzcz0ibXVsdGlGaWx0ZXItY291bnQiPiR7S308L3NwYW4+YDoiIn0KICAgICAgICAgIDxkZWVzLWljb24gY2xhc3M9ImNoZXZyb24iIC5pY29uPSIkeyJsdWNpZGU6Y2hldnJvbkRvd24ifSI+PC9kZWVzLWljb24+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibXVsdGlGaWx0ZXItb3B0aW9ucyAke1I/ImNvbGxhcHNlZCI6IiJ9Ij4KICAgICAgICAgICR7UC5vcHRpb25zLm1hcChWPT53YAogICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgY2xhc3M9Im11bHRpRmlsdGVyLW9wdGlvbiIKICAgICAgICAgICAgICBAY2xpY2s9IiR7KCk9PnRoaXMuaGFuZGxlTXVsdGlGaWx0ZXJPcHRpb25Ub2dnbGUoUCxWLmtleSl9IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ib3B0aW9uLWNoZWNrYm94ICR7Vi5jaGVja2VkPyJjaGVja2VkIjoiIn0iPgogICAgICAgICAgICAgICAgJHtWLmNoZWNrZWQ/d2A8ZGVlcy1pY29uIC5pY29uPSIkeyJsdWNpZGU6Y2hlY2sifSI+PC9kZWVzLWljb24+YDoiIn0KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAke1YuaWNvbk5hbWU/d2A8ZGVlcy1pY29uIGNsYXNzPSJvcHRpb24taWNvbiIgLmljb249IiR7dGhpcy5ub3JtYWxpemVJY29uKFYuaWNvbk5hbWUpfSI+PC9kZWVzLWljb24+YDoiIn0KICAgICAgICAgICAgICA8c3Bhbj4ke1YubGFiZWx9PC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIGApfQogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyRGl2aWRlcigpe3JldHVybiB3YDxkaXYgY2xhc3M9Im1lbnVEaXZpZGVyIj48L2Rpdj5gfXJlbmRlckhlYWRlcihQKXtyZXR1cm4gd2A8ZGl2IGNsYXNzPSJtZW51SGVhZGVyIj4ke1AubGFiZWx9PC9kaXY+YH1yZW5kZXJMaW5rSXRlbShQKXtsZXQgUj1QLmV4dGVybmFsPz9QLmhyZWYuc3RhcnRzV2l0aCgiaHR0cCIpLEs9UC5kaXNhYmxlZD09PSEwO3JldHVybiB3YAogICAgICA8ZGl2CiAgICAgICAgY2xhc3M9Im1lbnVJdGVtIGxpbmsgJHtLPyJkaXNhYmxlZCI6IiJ9IgogICAgICAgIEBjbGljaz0iJHsoKT0+IUsmJnRoaXMuaGFuZGxlTGlua0NsaWNrKFApfSIKICAgICAgPgogICAgICAgICR7UC5pY29uTmFtZT93YDxkZWVzLWljb24gLmljb249IiR7dGhpcy5ub3JtYWxpemVJY29uKFAuaWNvbk5hbWUpfSI+PC9kZWVzLWljb24+YDoiIn0KICAgICAgICA8c3BhbiBjbGFzcz0iaXRlbUxhYmVsIj4ke1Aua2V5fTwvc3Bhbj4KICAgICAgICAke1I/d2A8ZGVlcy1pY29uIGNsYXNzPSJleHRlcm5hbC1pY29uIiAuaWNvbj0iJHsibHVjaWRlOmV4dGVybmFsTGluayJ9Ij48L2RlZXMtaWNvbj5gOiIifQogICAgICAgIDxzcGFuIGNsYXNzPSJpdGVtLXRvb2x0aXAiPiR7UC5rZXl9PC9zcGFuPgogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyTGVnYWN5T3B0aW9ucygpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJsZWdhY3lPcHRpb25zIj4KICAgICAgICAke3RoaXMuc2VsZWN0aW9uT3B0aW9ucy5tYXAoUD0+e2lmKCJkaXZpZGVyImluIFAmJlAuZGl2aWRlcilyZXR1cm4gd2A8ZGl2IGNsYXNzPSJkaXZpZGVyIj48L2Rpdj5gO2xldCBSPVAsSz17a2V5OlIua2V5LGljb25OYW1lOlIuaWNvbk5hbWUsYWN0aW9uOlIuYWN0aW9uLGJhZGdlOlIuYmFkZ2UsYmFkZ2VWYXJpYW50OlIuYmFkZ2VWYXJpYW50fTtyZXR1cm4gdGhpcy5yZW5kZXJUYWJJdGVtKEspfSl9CiAgICAgIDwvZGl2PgogICAgYH1ub3JtYWxpemVJY29uKFApe3JldHVybiBQLnN0YXJ0c1dpdGgoImx1Y2lkZToiKT9QOmBsdWNpZGU6JHtQfWB9dG9nZ2xlR3JvdXAoUCl7bGV0IFI9bmV3IFNldCh0aGlzLmNvbGxhcHNlZEdyb3Vwcyk7Ui5oYXMoUCk/Ui5kZWxldGUoUCk6Ui5hZGQoUCksdGhpcy5jb2xsYXBzZWRHcm91cHM9Un10b2dnbGVNdWx0aUZpbHRlcihQKXtsZXQgUj1uZXcgU2V0KHRoaXMuY29sbGFwc2VkTXVsdGlGaWx0ZXJzKTtSLmhhcyhQKT9SLmRlbGV0ZShQKTpSLmFkZChQKSx0aGlzLmNvbGxhcHNlZE11bHRpRmlsdGVycz1SfXRvZ2dsZUNvbGxhcHNlKCl7dGhpcy5jb2xsYXBzZWQ9IXRoaXMuY29sbGFwc2VkLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNvbGxhcHNlLWNoYW5nZSIse2RldGFpbDp7Y29sbGFwc2VkOnRoaXMuY29sbGFwc2VkfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfXNlbGVjdFRhYkl0ZW0oUCxSKXt0aGlzLnNlbGVjdGVkSXRlbT1QLFAuYWN0aW9uKCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiaXRlbS1zZWxlY3QiLHtkZXRhaWw6e2l0ZW06UCxncm91cDpSfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWFzeW5jIGhhbmRsZUFjdGlvbkNsaWNrKFApe1AuY29uZmlybU1lc3NhZ2UmJiF3aW5kb3cuY29uZmlybShQLmNvbmZpcm1NZXNzYWdlKXx8KGF3YWl0IFAuYWN0aW9uKCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiYWN0aW9uLWNsaWNrIix7ZGV0YWlsOntpdGVtOlB9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSkpfWhhbmRsZUZpbHRlclRvZ2dsZShQKXtsZXQgUj0hUC5hY3RpdmU7UC5hY3RpdmU9UixQLm9uVG9nZ2xlKFIpLHRoaXMucmVuZGVyQ291bnRlcisrLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImZpbHRlci10b2dnbGUiLHtkZXRhaWw6e2l0ZW06UCxhY3RpdmU6Un0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1oYW5kbGVNdWx0aUZpbHRlck9wdGlvblRvZ2dsZShQLFIpe2xldCBLPVAub3B0aW9ucy5maW5kKFc9Plcua2V5PT09Uik7SyYmKEsuY2hlY2tlZD0hSy5jaGVja2VkKTtsZXQgVj1QLm9wdGlvbnMuZmlsdGVyKFc9PlcuY2hlY2tlZCkubWFwKFc9Plcua2V5KTtQLm9uQ2hhbmdlKFYpLHRoaXMucmVuZGVyQ291bnRlcisrLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoIm11bHRpZmlsdGVyLWNoYW5nZSIse2RldGFpbDp7aXRlbTpQLHNlbGVjdGVkS2V5czpWfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZUxpbmtDbGljayhQKXtQLmV4dGVybmFsPz9QLmhyZWYuc3RhcnRzV2l0aCgiaHR0cCIpP3dpbmRvdy5vcGVuKFAuaHJlZiwiX2JsYW5rIiwibm9vcGVuZXIsbm9yZWZlcnJlciIpOndpbmRvdy5sb2NhdGlvbi5ocmVmPVAuaHJlZix0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJsaW5rLWNsaWNrIix7ZGV0YWlsOntpdGVtOlB9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9aGFuZGxlQ29udGV4dE1lbnUoUCxSKXtrYS5vcGVuQ29udGV4dE1lbnVXaXRoT3B0aW9ucyhQLFt7bmFtZToiVmlldyBkZXRhaWxzIixhY3Rpb246aShhc3luYygpPT57fSwiYWN0aW9uIiksaWNvbk5hbWU6Imx1Y2lkZTpleWUifSx7bmFtZToiRWRpdCIsYWN0aW9uOmkoYXN5bmMoKT0+e30sImFjdGlvbiIpLGljb25OYW1lOiJsdWNpZGU6cGVuY2lsIn1dKX1hc3luYyBmaXJzdFVwZGF0ZWQoUCl7aWYoYXdhaXQgc3VwZXIuZmlyc3RVcGRhdGVkKFApLHRoaXMuZ3JvdXBzLmxlbmd0aD4wKXtsZXQgUj1uZXcgU2V0LEs9bmV3IFNldDtpZih0aGlzLmdyb3Vwcy5mb3JFYWNoKFY9PntWLmNvbGxhcHNlZCYmUi5hZGQoVi5uYW1lKSxWLml0ZW1zLmZvckVhY2goVz0+e2lmKCJ0eXBlImluIFcmJlcudHlwZT09PSJtdWx0aUZpbHRlciIpe2xldCBtZT1XO21lLmNvbGxhcHNlZCYmSy5hZGQobWUua2V5KX19KX0pLHRoaXMuY29sbGFwc2VkR3JvdXBzPVIsdGhpcy5jb2xsYXBzZWRNdWx0aUZpbHRlcnM9SywhdGhpcy5zZWxlY3RlZEl0ZW0pZm9yKGxldCBWIG9mIHRoaXMuZ3JvdXBzKWZvcihsZXQgVyBvZiBWLml0ZW1zKXtsZXQgbWU9InR5cGUiaW4gVz9XLnR5cGU6InRhYiI7aWYobWU9PT0idGFiInx8bWU9PT12b2lkIDApe2xldCBCPVc7aWYoIUIuZGlzYWJsZWQpe3RoaXMuc2VsZWN0VGFiSXRlbShCLFYpO3JldHVybn19fX1lbHNlIGlmKHRoaXMuc2VsZWN0aW9uT3B0aW9ucy5sZW5ndGg+MCl7bGV0IFI9dGhpcy5zZWxlY3Rpb25PcHRpb25zLmZpbmQoSz0+ISgiZGl2aWRlciJpbiBLKSk7aWYoUiYmIXRoaXMuc2VsZWN0ZWRJdGVtKXtsZXQgSz17a2V5OlIua2V5LGljb25OYW1lOlIuaWNvbk5hbWUsYWN0aW9uOlIuYWN0aW9ufTt0aGlzLnNlbGVjdFRhYkl0ZW0oSyl9fX1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksUG8odGhpcyxTKX1zdGF0aWN7UG8oYSx0KX19O3JldHVybiBJPWF9KSgpfSk7dmFyIGdnLFVjLF91byxNdW8sWTNhLFozYT1nKCgpPT57cGUoKTttaCgpO2dnPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxVYz1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sX3VvPSgoKT0+e2xldCBzPVtuZSgiZGVtby1jbG9zZWFibGUtdGFicyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdO3ZhciBjPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZW1vQ2xvc2VhYmxlVGFicyIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBiPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W1koKV0scD1bWSgpXSxnZyh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InRhYnMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkodj0+InRhYnMiaW4gdiwiaGFzIiksZ2V0Omkodj0+di50YWJzLCJnZXQiKSxzZXQ6aSgodix4KT0+e3YudGFicz14fSwic2V0Iil9LG1ldGFkYXRhOmJ9LG8sbCksZ2codGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0YWJDb3VudGVyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHY9PiJ0YWJDb3VudGVyImluIHYsImhhcyIpLGdldDppKHY9PnYudGFiQ291bnRlciwiZ2V0Iiksc2V0OmkoKHYseCk9Pnt2LnRhYkNvdW50ZXI9eH0sInNldCIpfSxtZXRhZGF0YTpifSxkLHUpLGdnKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOmJ9LG51bGwsdCksYz1hPWUudmFsdWUsYiYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSl9I2U9VWModGhpcyxvLFt7a2V5OiJNYWluIixpY29uTmFtZToibHVjaWRlOmhvbWUiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiTWFpbiBjbGlja2VkIiksImFjdGlvbiIpfV0pO2dldCB0YWJzKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHRhYnMoYil7dGhpcy4jZT1ifSN0PShVYyh0aGlzLGwpLFVjKHRoaXMsZCwwKSk7Z2V0IHRhYkNvdW50ZXIoKXtyZXR1cm4gdGhpcy4jdH1zZXQgdGFiQ291bnRlcihiKXt0aGlzLiN0PWJ9c3RhdGljIHN0eWxlcz1bSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICAgIC5pbmZvIHsKICAgICAgICBtYXJnaW4tdG9wOiAxNnB4OwogICAgICAgIHBhZGRpbmc6IDEycHggMTZweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLDAsMCwwLjAyKSIsInJnYmEoMjU1LDI1NSwyNTUsMC4wMikiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICB9CiAgICBgXTthZGRUYWIoKXt0aGlzLnRhYkNvdW50ZXIrKztsZXQgYj1gRG9jdW1lbnQgJHt0aGlzLnRhYkNvdW50ZXJ9YDt0aGlzLnRhYnM9Wy4uLnRoaXMudGFicyx7a2V5OmIsaWNvbk5hbWU6Imx1Y2lkZTpmaWxlIixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coYCR7Yn0gY2xpY2tlZGApLCJhY3Rpb24iKSxjbG9zZWFibGU6ITAsb25DbG9zZTppKCgpPT50aGlzLnJlbW92ZVRhYihiKSwib25DbG9zZSIpfV19cmVtb3ZlVGFiKGIpe3RoaXMudGFicz10aGlzLnRhYnMuZmlsdGVyKHY9PnYua2V5IT09Yil9Y2xlYXJBbGwoKXt0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiZGVlcy1hcHB1aS10YWJzIik/LmNsZWFyKCksdGhpcy50YWJzPVtdLHRoaXMudGFiQ291bnRlcj0wfXJlbmRlcigpe2xldCBiPVt7aWQ6ImFkZCIsaWNvbk5hbWU6Imx1Y2lkZTpwbHVzIixhY3Rpb246aSgoKT0+dGhpcy5hZGRUYWIoKSwiYWN0aW9uIiksdG9vbHRpcDoiTmV3IFRhYiJ9LHtpZDoiY2xlYXIiLGljb25OYW1lOiJsdWNpZGU6dHJhc2gyIixhY3Rpb246aSgoKT0+dGhpcy5jbGVhckFsbCgpLCJhY3Rpb24iKSx0b29sdGlwOiJDbGVhciBBbGwgVGFicyJ9XTtyZXR1cm4gd2AKICAgICAgPGRlZXMtYXBwdWktdGFicwogICAgICAgIC50YWJzPSR7dGhpcy50YWJzfQogICAgICAgIC5hY3Rpb25zUmlnaHQ9JHtifQogICAgICAgIEB0YWItY2xvc2U9JHt2PT50aGlzLnJlbW92ZVRhYih2LmRldGFpbC50YWIua2V5KX0KICAgICAgPjwvZGVlcy1hcHB1aS10YWJzPgogICAgICA8ZGl2IGNsYXNzPSJpbmZvIj4KICAgICAgICBDbGljayB0aGUgWCBidXR0b24gb24gdGFicyB0byBjbG9zZSB0aGVtLiBVc2UgdGhlICsgYnV0dG9uIHRvIGFkZCB0YWJzIGFuZCB0aGUgdHJhc2ggYnV0dG9uIHRvIGNsZWFyIGFsbC4KICAgICAgICA8YnI+Q3VycmVudCB0YWJzOiAke3RoaXMudGFicy5sZW5ndGh9CiAgICAgIDwvZGl2PgogICAgYH1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksVWModGhpcyx1KX1zdGF0aWN7VWMoYSx0KX19O3JldHVybiBjPWF9KSgpLE11bz0oKCk9PntsZXQgcz1bbmUoImRlbW8tYXV0b2hpZGUtdGFicyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdO3ZhciB4PWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZW1vQXV0b0hpZGVUYWJzIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IG09dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bWSgpXSxwPVtZKCldLGM9W1koKV0sZ2codGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0YWJzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGY9PiJ0YWJzImluIGYsImhhcyIpLGdldDppKGY9PmYudGFicywiZ2V0Iiksc2V0OmkoKGYseSk9PntmLnRhYnM9eX0sInNldCIpfSxtZXRhZGF0YTptfSxvLGwpLGdnKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYXV0b0hpZGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+ImF1dG9IaWRlImluIGYsImhhcyIpLGdldDppKGY9PmYuYXV0b0hpZGUsImdldCIpLHNldDppKChmLHkpPT57Zi5hdXRvSGlkZT15fSwic2V0Iil9LG1ldGFkYXRhOm19LGQsdSksZ2codGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0aHJlc2hvbGQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+InRocmVzaG9sZCJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLnRocmVzaG9sZCwiZ2V0Iiksc2V0OmkoKGYseSk9PntmLnRocmVzaG9sZD15fSwic2V0Iil9LG1ldGFkYXRhOm19LGIsdiksZ2cobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6bX0sbnVsbCx0KSx4PWE9ZS52YWx1ZSxtJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm19KX0jZT1VYyh0aGlzLG8sW3trZXk6IlRhYiAxIixpY29uTmFtZToibHVjaWRlOmZpbGUiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiVGFiIDEiKSwiYWN0aW9uIil9LHtrZXk6IlRhYiAyIixpY29uTmFtZToibHVjaWRlOmZpbGUiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiVGFiIDIiKSwiYWN0aW9uIil9XSk7Z2V0IHRhYnMoKXtyZXR1cm4gdGhpcy4jZX1zZXQgdGFicyhtKXt0aGlzLiNlPW19I3Q9KFVjKHRoaXMsbCksVWModGhpcyxkLCEwKSk7Z2V0IGF1dG9IaWRlKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGF1dG9IaWRlKG0pe3RoaXMuI3Q9bX0jYT0oVWModGhpcyx1KSxVYyh0aGlzLGIsMSkpO2dldCB0aHJlc2hvbGQoKXtyZXR1cm4gdGhpcy4jYX1zZXQgdGhyZXNob2xkKG0pe3RoaXMuI2E9bX1zdGF0aWMgc3R5bGVzPVtKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgICAgLnRhYnMtY29udGFpbmVyIHsKICAgICAgICBtaW4taGVpZ2h0OiA2MHB4OwogICAgICAgIGJvcmRlcjogMXB4IGRhc2hlZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMyNzI3MmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgfQogICAgICAudGFicy1jb250YWluZXIgZGVlcy1hcHB1aS10YWJzIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQogICAgICAucGxhY2Vob2xkZXIgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2ExYTFhYSIsIiM3MTcxN2EiKX07CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgICAgfQogICAgICAuY29udHJvbHMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgbWFyZ2luLXRvcDogMTZweDsKICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgIH0KICAgICAgYnV0dG9uIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSg1OSwgMTMwLCAyNDYsIDAuMSkiLCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC4xKSIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgicmdiYSg1OSwgMTMwLCAyNDYsIDAuMykiLCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC4zKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzYjgyZjYiLCIjNjBhNWZhIil9OwogICAgICAgIHBhZGRpbmc6IDhweCAxNnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICB9CiAgICAgIGJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoNTksIDEzMCwgMjQ2LCAwLjIpIiwicmdiYSg1OSwgMTMwLCAyNDYsIDAuMikiKX07CiAgICAgIH0KICAgICAgYnV0dG9uLmRhbmdlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMjM5LCA2OCwgNjgsIDAuMSkiLCJyZ2JhKDIzOSwgNjgsIDY4LCAwLjEpIil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoInJnYmEoMjM5LCA2OCwgNjgsIDAuMykiLCJyZ2JhKDIzOSwgNjgsIDY4LCAwLjMpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2VmNDQ0NCIsIiNmODcxNzEiKX07CiAgICAgIH0KICAgICAgYnV0dG9uLmRhbmdlcjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMjM5LCA2OCwgNjgsIDAuMikiLCJyZ2JhKDIzOSwgNjgsIDY4LCAwLjIpIil9OwogICAgICB9CiAgICAgIC5pbmZvIHsKICAgICAgICBtYXJnaW4tdG9wOiAxNnB4OwogICAgICAgIHBhZGRpbmc6IDEycHggMTZweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLDAsMCwwLjAyKSIsInJnYmEoMjU1LDI1NSwyNTUsMC4wMikiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICB9CiAgICBgXTt0YWJDb3VudGVyPShVYyh0aGlzLHYpLDIpO2FkZFRhYigpe3RoaXMudGFiQ291bnRlcisrLHRoaXMudGFicz1bLi4udGhpcy50YWJzLHtrZXk6YFRhYiAke3RoaXMudGFiQ291bnRlcn1gLGljb25OYW1lOiJsdWNpZGU6ZmlsZSIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKGBUYWIgJHt0aGlzLnRhYkNvdW50ZXJ9YCksImFjdGlvbiIpfV19cmVtb3ZlTGFzdFRhYigpe3RoaXMudGFicy5sZW5ndGg+MCYmKHRoaXMudGFicz10aGlzLnRhYnMuc2xpY2UoMCwtMSkpfWNsZWFyVGFicygpe3RoaXMudGFicz1bXX1yZW5kZXIoKXtsZXQgbT10aGlzLmF1dG9IaWRlJiZ0aGlzLnRhYnMubGVuZ3RoPD10aGlzLnRocmVzaG9sZDtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0idGFicy1jb250YWluZXIiPgogICAgICAgICR7bT93YDxzcGFuIGNsYXNzPSJwbGFjZWhvbGRlciI+VGFicyBoaWRkZW4gKCR7dGhpcy50YWJzLmxlbmd0aH0gdGFicyDiiaQgdGhyZXNob2xkICR7dGhpcy50aHJlc2hvbGR9KTwvc3Bhbj5gOndgPGRlZXMtYXBwdWktdGFicwogICAgICAgICAgICAgIC50YWJzPSR7dGhpcy50YWJzfQogICAgICAgICAgICAgIC5hdXRvSGlkZT0ke3RoaXMuYXV0b0hpZGV9CiAgICAgICAgICAgICAgLmF1dG9IaWRlVGhyZXNob2xkPSR7dGhpcy50aHJlc2hvbGR9CiAgICAgICAgICAgID48L2RlZXMtYXBwdWktdGFicz5gfQogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY29udHJvbHMiPgogICAgICAgIDxidXR0b24gQGNsaWNrPSR7KCk9PnRoaXMuYWRkVGFiKCl9PisgQWRkIFRhYjwvYnV0dG9uPgogICAgICAgIDxidXR0b24gY2xhc3M9ImRhbmdlciIgQGNsaWNrPSR7KCk9PnRoaXMucmVtb3ZlTGFzdFRhYigpfT4tIFJlbW92ZSBUYWI8L2J1dHRvbj4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJkYW5nZXIiIEBjbGljaz0keygpPT50aGlzLmNsZWFyVGFicygpfT5DbGVhciBBbGw8L2J1dHRvbj4KICAgICAgICA8YnV0dG9uIEBjbGljaz0keygpPT57dGhpcy50aHJlc2hvbGQ9MH19PlRocmVzaG9sZDogMDwvYnV0dG9uPgogICAgICAgIDxidXR0b24gQGNsaWNrPSR7KCk9Pnt0aGlzLnRocmVzaG9sZD0xfX0+VGhyZXNob2xkOiAxPC9idXR0b24+CiAgICAgICAgPGJ1dHRvbiBAY2xpY2s9JHsoKT0+e3RoaXMudGhyZXNob2xkPTJ9fT5UaHJlc2hvbGQ6IDI8L2J1dHRvbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImluZm8iPgogICAgICAgIEF1dG8taGlkZTogJHt0aGlzLmF1dG9IaWRlPyJPTiI6Ik9GRiJ9IHwgVGhyZXNob2xkOiAke3RoaXMudGhyZXNob2xkfSB8IFRhYnM6ICR7dGhpcy50YWJzLmxlbmd0aH0KICAgICAgICA8YnI+VGFicyB3aWxsIGhpZGUgd2hlbiBjb3VudCDiiaQgdGhyZXNob2xkLgogICAgICA8L2Rpdj4KICAgIGB9c3RhdGlje1VjKGEsdCl9fTtyZXR1cm4geD1hfSkoKSxZM2E9aSgoKT0+e2xldCBzPVt7a2V5OiJIb21lIixpY29uTmFtZToibHVjaWRlOmhvbWUiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiSG9tZSBjbGlja2VkIiksImFjdGlvbiIpfSx7a2V5OiJBbmFseXRpY3MgRGFzaGJvYXJkIixpY29uTmFtZToibHVjaWRlOmxpbmVDaGFydCIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJBbmFseXRpY3MgY2xpY2tlZCIpLCJhY3Rpb24iKX0se2tleToiUmVwb3J0cyIsaWNvbk5hbWU6Imx1Y2lkZTpmaWxlVGV4dCIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJSZXBvcnRzIGNsaWNrZWQiKSwiYWN0aW9uIil9LHtrZXk6IlVzZXIgU2V0dGluZ3MiLGljb25OYW1lOiJsdWNpZGU6c2V0dGluZ3MiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiU2V0dGluZ3MgY2xpY2tlZCIpLCJhY3Rpb24iKX0se2tleToiSGVscCIsaWNvbk5hbWU6Imx1Y2lkZTpoZWxwQ2lyY2xlIixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIkhlbHAgY2xpY2tlZCIpLCJhY3Rpb24iKX1dLGU9W3trZXk6IlByb2ZpbGUiLGljb25OYW1lOiJsdWNpZGU6dXNlciIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJQcm9maWxlIGNsaWNrZWQiKSwiYWN0aW9uIil9LHtrZXk6IlNlY3VyaXR5IixpY29uTmFtZToibHVjaWRlOnNoaWVsZCIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJTZWN1cml0eSBjbGlja2VkIiksImFjdGlvbiIpfSx7a2V5OiJOb3RpZmljYXRpb25zIixpY29uTmFtZToibHVjaWRlOmJlbGwiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiTm90aWZpY2F0aW9ucyBjbGlja2VkIiksImFjdGlvbiIpfSx7a2V5OiJJbnRlZ3JhdGlvbnMiLGljb25OYW1lOiJsdWNpZGU6bGluayIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJJbnRlZ3JhdGlvbnMgY2xpY2tlZCIpLCJhY3Rpb24iKX0se2tleToiQWR2YW5jZWQiLGljb25OYW1lOiJsdWNpZGU6Y29kZSIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJBZHZhbmNlZCBjbGlja2VkIiksImFjdGlvbiIpfV0sdD1be2tleToiQWxsIixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIkFsbCBjbGlja2VkIiksImFjdGlvbiIpfSx7a2V5OiJBY3RpdmUiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiQWN0aXZlIGNsaWNrZWQiKSwiYWN0aW9uIil9LHtrZXk6IkNvbXBsZXRlZCIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJDb21wbGV0ZWQgY2xpY2tlZCIpLCJhY3Rpb24iKX0se2tleToiQXJjaGl2ZWQiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiQXJjaGl2ZWQgY2xpY2tlZCIpLCJhY3Rpb24iKX1dLGE9W3tpZDoiYmFjayIsaWNvbk5hbWU6Imx1Y2lkZTphcnJvd0xlZnQiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiQmFjayIpLCJhY3Rpb24iKSx0b29sdGlwOiJHbyBCYWNrIn1dLHI9W3tpZDoiYWRkIixpY29uTmFtZToibHVjaWRlOnBsdXMiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiQWRkIHRhYiIpLCJhY3Rpb24iKSx0b29sdGlwOiJOZXcgVGFiIn0se2lkOiJzZWFyY2giLGljb25OYW1lOiJsdWNpZGU6c2VhcmNoIixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIlNlYXJjaCIpLCJhY3Rpb24iKSx0b29sdGlwOiJTZWFyY2ggVGFicyJ9LHtpZDoiZGlzYWJsZWQiLGljb25OYW1lOiJsdWNpZGU6bG9jayIsYWN0aW9uOmkoKCk9Pnt9LCJhY3Rpb24iKSx0b29sdGlwOiJEaXNhYmxlZCBBY3Rpb24iLGRpc2FibGVkOiEwfV0sbj1pKG89PndgCiAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nOiAyNHB4OyBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OyI+CiAgICAgICR7b30KICAgIDwvZGl2PgogIGAsImRlbW9Db250ZW50Iik7cmV0dXJuIHdgCiAgICA8c3R5bGU+CiAgICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMzJweDsKICAgICAgICBwYWRkaW5nOiA0OHB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjhmOWZhIiwiIzBhMGEwYSIpfTsKICAgICAgICBtaW4taGVpZ2h0OiAxMDB2aDsKICAgICAgfQoKICAgICAgLnNlY3Rpb24gewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzE4MTgxYiIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMyNzI3MmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICAgICAgfQoKICAgICAgLnNlY3Rpb24tdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLnR3by1jb2x1bW4gewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAyMDBweCAxZnI7CiAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgIGFsaWduLWl0ZW1zOiBzdGFydDsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+SG9yaXpvbnRhbCBUYWJzIHdpdGggQW5pbWF0ZWQgSW5kaWNhdG9yPC9kaXY+CiAgICAgICAgPGRlZXMtYXBwdWktdGFicyAudGFicz0ke3N9PjwvZGVlcy1hcHB1aS10YWJzPgogICAgICAgICR7bigiU2VsZWN0IGEgdGFiIHRvIHNlZSB0aGUgc21vb3RoIHNsaWRpbmcgYW5pbWF0aW9uIG9mIHRoZSBpbmRpY2F0b3IuIFRoZSBpbmRpY2F0b3IgYXV0b21hdGljYWxseSBhZGp1c3RzIGl0cyB3aWR0aCB0byBtYXRjaCB0aGUgdGFiIGNvbnRlbnQgd2l0aCBtaW5pbWFsIHBhZGRpbmcuIil9CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+VGFicyB3aXRoIEFjdGlvbiBCdXR0b25zPC9kaXY+CiAgICAgICAgPGRlZXMtYXBwdWktdGFicwogICAgICAgICAgLnRhYnM9JHtzfQogICAgICAgICAgLmFjdGlvbnNMZWZ0PSR7YX0KICAgICAgICAgIC5hY3Rpb25zUmlnaHQ9JHtyfQogICAgICAgID48L2RlZXMtYXBwdWktdGFicz4KICAgICAgICAke24oIkFjdGlvbiBidXR0b25zIGNhbiBiZSBwbGFjZWQgb24gZWl0aGVyIHNpZGUgb2YgdGhlIHRhYiBiYXIuIFRoZXkgcmVtYWluIGZpeGVkIHdoaWxlIHRhYnMgc2Nyb2xsLiBUaGUgbG9jayBpY29uIHNob3dzIGEgZGlzYWJsZWQgYWN0aW9uLiIpfQogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPkNsb3NlYWJsZSBUYWJzIHdpdGggQWN0aW9uczwvZGl2PgogICAgICAgIDxkZW1vLWNsb3NlYWJsZS10YWJzPjwvZGVtby1jbG9zZWFibGUtdGFicz4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5BdXRvLWhpZGUgVGFiczwvZGl2PgogICAgICAgIDxkZW1vLWF1dG9oaWRlLXRhYnM+PC9kZW1vLWF1dG9oaWRlLXRhYnM+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+VmVydGljYWwgVGFicyBMYXlvdXQ8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0d28tY29sdW1uIj4KICAgICAgICAgIDxkZWVzLWFwcHVpLXRhYnMgLnRhYlN0eWxlPSR7InZlcnRpY2FsIn0gLnRhYnM9JHtlfT48L2RlZXMtYXBwdWktdGFicz4KICAgICAgICAgICR7bigiVmVydGljYWwgdGFicyB3b3JrIGdyZWF0IGZvciBzZXR0aW5ncyBwYWdlcyBhbmQgbmF2aWdhdGlvbiBtZW51cy4gVGhlIGFuaW1hdGVkIGluZGljYXRvciBzbW9vdGhseSB0cmFuc2l0aW9ucyBiZXR3ZWVuIHNlbGVjdGlvbnMuIil9CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+V2l0aG91dCBJbmRpY2F0b3I8L2Rpdj4KICAgICAgICA8ZGVlcy1hcHB1aS10YWJzIC5zaG93VGFiSW5kaWNhdG9yPSR7ITF9IC50YWJzPSR7dH0+PC9kZWVzLWFwcHVpLXRhYnM+CiAgICAgICAgJHtuKCJUYWJzIGNhbiBhbHNvIGJlIHVzZWQgd2l0aG91dCB0aGUgYW5pbWF0ZWQgaW5kaWNhdG9yIGJ5IHNldHRpbmcgc2hvd1RhYkluZGljYXRvciB0byBmYWxzZS4iKX0KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICBgfSwiZGVtb0Z1bmMiKX0pO3ZhciBvMixwcixYM2EsQ2l0PWcoKCk9PnttaCgpO3BlKCk7a3QoKTtaM2EoKTtwdCgpO28yPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxwcj1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sWDNhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1hcHB1aS10YWJzIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W10sSCxrPVtdLFM9W10sSSxQPVtdLFI9W10sSyxWPVtdLFc9W107dmFyIG1lPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzQXBwdWlUYWJzIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IEI9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpBcnJheX0pXSxwPVtMKHt0eXBlOk9iamVjdH0pXSxjPVtMKHt0eXBlOkJvb2xlYW59KV0seD1bTCh7dHlwZTpTdHJpbmd9KV0seT1bTCh7dHlwZTpCb29sZWFufSldLE49W0woe3R5cGU6TnVtYmVyfSldLE89W0woe3R5cGU6QXJyYXl9KV0sSD1bTCh7dHlwZTpBcnJheX0pXSxJPVtZKCldLEs9W1koKV0sbzIodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0YWJzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFU9PiJ0YWJzImluIFUsImhhcyIpLGdldDppKFU9PlUudGFicywiZ2V0Iiksc2V0OmkoKFUsaGUpPT57VS50YWJzPWhlfSwic2V0Iil9LG1ldGFkYXRhOkJ9LG8sbCksbzIodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWxlY3RlZFRhYiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4ic2VsZWN0ZWRUYWIiaW4gVSwiaGFzIiksZ2V0OmkoVT0+VS5zZWxlY3RlZFRhYiwiZ2V0Iiksc2V0OmkoKFUsaGUpPT57VS5zZWxlY3RlZFRhYj1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxkLHUpLG8yKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2hvd1RhYkluZGljYXRvciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4ic2hvd1RhYkluZGljYXRvciJpbiBVLCJoYXMiKSxnZXQ6aShVPT5VLnNob3dUYWJJbmRpY2F0b3IsImdldCIpLHNldDppKChVLGhlKT0+e1Uuc2hvd1RhYkluZGljYXRvcj1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxiLHYpLG8yKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToidGFiU3R5bGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVT0+InRhYlN0eWxlImluIFUsImhhcyIpLGdldDppKFU9PlUudGFiU3R5bGUsImdldCIpLHNldDppKChVLGhlKT0+e1UudGFiU3R5bGU9aGV9LCJzZXQiKX0sbWV0YWRhdGE6Qn0sbSxmKSxvMih0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImF1dG9IaWRlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFU9PiJhdXRvSGlkZSJpbiBVLCJoYXMiKSxnZXQ6aShVPT5VLmF1dG9IaWRlLCJnZXQiKSxzZXQ6aSgoVSxoZSk9PntVLmF1dG9IaWRlPWhlfSwic2V0Iil9LG1ldGFkYXRhOkJ9LE0seiksbzIodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJhdXRvSGlkZVRocmVzaG9sZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4iYXV0b0hpZGVUaHJlc2hvbGQiaW4gVSwiaGFzIiksZ2V0OmkoVT0+VS5hdXRvSGlkZVRocmVzaG9sZCwiZ2V0Iiksc2V0OmkoKFUsaGUpPT57VS5hdXRvSGlkZVRocmVzaG9sZD1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxDLF8pLG8yKHRoaXMsbnVsbCxPLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYWN0aW9uc0xlZnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVT0+ImFjdGlvbnNMZWZ0ImluIFUsImhhcyIpLGdldDppKFU9PlUuYWN0aW9uc0xlZnQsImdldCIpLHNldDppKChVLGhlKT0+e1UuYWN0aW9uc0xlZnQ9aGV9LCJzZXQiKX0sbWV0YWRhdGE6Qn0sJCxFKSxvMih0aGlzLG51bGwsSCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImFjdGlvbnNSaWdodCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4iYWN0aW9uc1JpZ2h0ImluIFUsImhhcyIpLGdldDppKFU9PlUuYWN0aW9uc1JpZ2h0LCJnZXQiKSxzZXQ6aSgoVSxoZSk9PntVLmFjdGlvbnNSaWdodD1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxrLFMpLG8yKHRoaXMsbnVsbCxJLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY2FuU2Nyb2xsTGVmdCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4iY2FuU2Nyb2xsTGVmdCJpbiBVLCJoYXMiKSxnZXQ6aShVPT5VLmNhblNjcm9sbExlZnQsImdldCIpLHNldDppKChVLGhlKT0+e1UuY2FuU2Nyb2xsTGVmdD1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxQLFIpLG8yKHRoaXMsbnVsbCxLLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY2FuU2Nyb2xsUmlnaHQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVT0+ImNhblNjcm9sbFJpZ2h0ImluIFUsImhhcyIpLGdldDppKFU9PlUuY2FuU2Nyb2xsUmlnaHQsImdldCIpLHNldDppKChVLGhlKT0+e1UuY2FuU2Nyb2xsUmlnaHQ9aGV9LCJzZXQiKX0sbWV0YWRhdGE6Qn0sVixXKSxvMihudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpCfSxudWxsLHQpLG1lPWE9ZS52YWx1ZSxCJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOkJ9KX1zdGF0aWMgZGVtbz1ZM2E7c3RhdGljIGRlbW9Hcm91cHM9WyJBcHAgVUkiXTsjZT1wcih0aGlzLG8sW10pO2dldCB0YWJzKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHRhYnMoQil7dGhpcy4jZT1CfSN0PShwcih0aGlzLGwpLHByKHRoaXMsZCxudWxsKSk7Z2V0IHNlbGVjdGVkVGFiKCl7cmV0dXJuIHRoaXMuI3R9c2V0IHNlbGVjdGVkVGFiKEIpe3RoaXMuI3Q9Qn0jYT0ocHIodGhpcyx1KSxwcih0aGlzLGIsITApKTtnZXQgc2hvd1RhYkluZGljYXRvcigpe3JldHVybiB0aGlzLiNhfXNldCBzaG93VGFiSW5kaWNhdG9yKEIpe3RoaXMuI2E9Qn0jcz0ocHIodGhpcyx2KSxwcih0aGlzLG0sImhvcml6b250YWwiKSk7Z2V0IHRhYlN0eWxlKCl7cmV0dXJuIHRoaXMuI3N9c2V0IHRhYlN0eWxlKEIpe3RoaXMuI3M9Qn0jaT0ocHIodGhpcyxmKSxwcih0aGlzLE0sITEpKTtnZXQgYXV0b0hpZGUoKXtyZXR1cm4gdGhpcy4jaX1zZXQgYXV0b0hpZGUoQil7dGhpcy4jaT1CfSNyPShwcih0aGlzLHopLHByKHRoaXMsQywwKSk7Z2V0IGF1dG9IaWRlVGhyZXNob2xkKCl7cmV0dXJuIHRoaXMuI3J9c2V0IGF1dG9IaWRlVGhyZXNob2xkKEIpe3RoaXMuI3I9Qn0jbz0ocHIodGhpcyxfKSxwcih0aGlzLCQsW10pKTtnZXQgYWN0aW9uc0xlZnQoKXtyZXR1cm4gdGhpcy4jb31zZXQgYWN0aW9uc0xlZnQoQil7dGhpcy4jbz1CfSNuPShwcih0aGlzLEUpLHByKHRoaXMsayxbXSkpO2dldCBhY3Rpb25zUmlnaHQoKXtyZXR1cm4gdGhpcy4jbn1zZXQgYWN0aW9uc1JpZ2h0KEIpe3RoaXMuI249Qn0jbD0ocHIodGhpcyxTKSxwcih0aGlzLFAsITEpKTtnZXQgY2FuU2Nyb2xsTGVmdCgpe3JldHVybiB0aGlzLiNsfXNldCBjYW5TY3JvbGxMZWZ0KEIpe3RoaXMuI2w9Qn0jYz0ocHIodGhpcyxSKSxwcih0aGlzLFYsITEpKTtnZXQgY2FuU2Nyb2xsUmlnaHQoKXtyZXR1cm4gdGhpcy4jY31zZXQgY2FuU2Nyb2xsUmlnaHQoQil7dGhpcy4jYz1CfXJlc2l6ZU9ic2VydmVyPShwcih0aGlzLFcpLG51bGwpO3N0YXRpYyBzdHlsZXM9W0hlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1pbi13aWR0aDogMDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAudGFicy13cmFwcGVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgbWluLXdpZHRoOiAwOwogICAgICB9CgogICAgICAudGFicy13cmFwcGVyLmhvcml6b250YWwtd3JhcHBlciB7CiAgICAgICAgaGVpZ2h0OiA0OHB4OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDsKICAgICAgfQoKICAgICAgLyogU2Nyb2xsIGZhZGUgaW5kaWNhdG9ycyAqLwogICAgICAuc2Nyb2xsLWZhZGUgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgYm90dG9tOiAxcHg7CiAgICAgICAgd2lkdGg6IDQ4cHg7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZTsKICAgICAgICB6LWluZGV4OiAxMDsKICAgICAgfQoKICAgICAgLnNjcm9sbC1mYWRlLWxlZnQgewogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LAogICAgICAgICAgJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMTYxNjE2Iil9IDAlLAogICAgICAgICAgJHtoLmJkVGhlbWUoInJnYmEoMjU1LDI1NSwyNTUsMCkiLCJyZ2JhKDIyLDIyLDIyLDApIil9IDEwMCUpOwogICAgICB9CgogICAgICAuc2Nyb2xsLWZhZGUtcmlnaHQgewogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBsZWZ0LAogICAgICAgICAgJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMTYxNjE2Iil9IDAlLAogICAgICAgICAgJHtoLmJkVGhlbWUoInJnYmEoMjU1LDI1NSwyNTUsMCkiLCJyZ2JhKDIyLDIyLDIyLDApIil9IDEwMCUpOwogICAgICB9CgogICAgICAuc2Nyb2xsLWZhZGUudmlzaWJsZSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgLnNjcm9sbC1hcmVhIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZmxleDogMTsKICAgICAgICBtaW4td2lkdGg6IDA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB9CgogICAgICAvKiBUYWIgYWN0aW9uIGJ1dHRvbnMgKi8KICAgICAgLnRhYi1hY3Rpb25zIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAycHg7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgcGFkZGluZzogMCA0cHg7CiAgICAgIH0KCiAgICAgIC50YWItYWN0aW9ucy5sZWZ0IHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDEycHg7CiAgICAgICAgcGFkZGluZy1yaWdodDogOHB4OwogICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICB9CgogICAgICAudGFiLWFjdGlvbnMucmlnaHQgewogICAgICAgIHBhZGRpbmctcmlnaHQ6IDEycHg7CiAgICAgICAgcGFkZGluZy1sZWZ0OiA4cHg7CiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgfQoKICAgICAgLnRhYi1hY3Rpb24tYnV0dG9uIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cyBlYXNlLCBjb2xvciAwLjE1cyBlYXNlOwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAudGFiLWFjdGlvbi1idXR0b246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYWN0aXZlKTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICB9CgogICAgICAudGFiLWFjdGlvbi1idXR0b246YWN0aXZlIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLXByZXNzZWQpOwogICAgICB9CgogICAgICAudGFiLWFjdGlvbi1idXR0b24uZGlzYWJsZWQgewogICAgICAgIG9wYWNpdHk6IDAuNDsKICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICB9CgogICAgICAudGFiLWFjdGlvbi1idXR0b24uZGlzYWJsZWQ6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICB9CgogICAgICAudGFiLWFjdGlvbi1idXR0b24gZGVlcy1pY29uIHsKICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgIH0KCiAgICAgIC50YWJzQ29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgbWluLXdpZHRoOiAwOwogICAgICB9CgogICAgICAudGFic0NvbnRhaW5lci5ob3Jpem9udGFsIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOwogICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW47CiAgICAgICAgc2Nyb2xsYmFyLXdpZHRoOiB0aGluOwogICAgICAgIHNjcm9sbGJhci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgICBnYXA6IDRweDsKICAgICAgfQoKICAgICAgLyogU2hvdyBzY3JvbGxiYXIgb24gaG92ZXIgKi8KICAgICAgLnRhYnMtd3JhcHBlcjpob3ZlciAudGFic0NvbnRhaW5lci5ob3Jpem9udGFsLAogICAgICAuc2Nyb2xsLWFyZWE6aG92ZXIgLnRhYnNDb250YWluZXIuaG9yaXpvbnRhbCB7CiAgICAgICAgc2Nyb2xsYmFyLWNvbG9yOiAke2guYmRUaGVtZSgicmdiYSgwLDAsMCwwLjIpIiwicmdiYSgyNTUsMjU1LDI1NSwwLjIpIil9IHRyYW5zcGFyZW50OwogICAgICB9CgogICAgICAudGFic0NvbnRhaW5lci5ob3Jpem9udGFsOjotd2Via2l0LXNjcm9sbGJhciB7CiAgICAgICAgaGVpZ2h0OiA0cHg7CiAgICAgIH0KCiAgICAgIC50YWJzQ29udGFpbmVyLmhvcml6b250YWw6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgfQoKICAgICAgLnRhYnNDb250YWluZXIuaG9yaXpvbnRhbDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIgewogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMnMgZWFzZTsKICAgICAgfQoKICAgICAgLnRhYnMtd3JhcHBlcjpob3ZlciAudGFic0NvbnRhaW5lci5ob3Jpem9udGFsOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiwKICAgICAgLnNjcm9sbC1hcmVhOmhvdmVyIC50YWJzQ29udGFpbmVyLmhvcml6b250YWw6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLDAsMCwwLjIpIiwicmdiYSgyNTUsMjU1LDI1NSwwLjIpIil9OwogICAgICB9CgogICAgICAudGFicy13cmFwcGVyOmhvdmVyIC50YWJzQ29udGFpbmVyLmhvcml6b250YWw6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyLAogICAgICAuc2Nyb2xsLWFyZWE6aG92ZXIgLnRhYnNDb250YWluZXIuaG9yaXpvbnRhbDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsMCwwLDAuMzUpIiwicmdiYSgyNTUsMjU1LDI1NSwwLjM1KSIpfTsKICAgICAgfQoKICAgICAgLnRhYnNDb250YWluZXIudmVydGljYWwgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBwYWRkaW5nOiA4cHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGdhcDogMnB4OwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXRlcnRpYXJ5KTsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgIH0KCiAgICAgIC50YWIgewogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMTVzIGVhc2U7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgei1pbmRleDogMjsKICAgICAgfQoKICAgICAgLmhvcml6b250YWwgLnRhYiB7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHggNnB4IDAgMDsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2U7CiAgICAgIH0KICAgICAgCiAgICAgIC5ob3Jpem9udGFsIC50YWI6bm90KDpsYXN0LWNoaWxkKTo6YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICByaWdodDogLTJweDsKICAgICAgICB0b3A6IDUwJTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICAgIHdpZHRoOiAxcHg7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICB9CiAgICAgIAogICAgICAuaG9yaXpvbnRhbCAudGFiIC50YWItY29udGVudCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDhweDsKICAgICAgfQoKICAgICAgLnZlcnRpY2FsIC50YWIgewogICAgICAgIHBhZGRpbmc6IDEwcHggMTZweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICB9CgogICAgICAudGFiOmhvdmVyIHsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICB9CiAgICAgIAogICAgICAuaG9yaXpvbnRhbCAudGFiOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWhvdmVyKTsKICAgICAgfQogICAgICAKICAgICAgLmhvcml6b250YWwgLnRhYjpob3Zlcjo6YWZ0ZXIsCiAgICAgIC5ob3Jpem9udGFsIC50YWI6aG92ZXIgKyAudGFiOjphZnRlciB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgfQoKICAgICAgLnZlcnRpY2FsIC50YWI6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDI0NCwgMjQ0LCAyNDUsIDAuNSkiLCJyZ2JhKDM5LCAzOSwgNDIsIDAuNSkiKX07CiAgICAgIH0KCiAgICAgIC5ob3Jpem9udGFsIC50YWIuc2VsZWN0ZWRUYWIgewogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIH0KICAgICAgCiAgICAgIC5ob3Jpem9udGFsIC50YWIuc2VsZWN0ZWRUYWI6OmFmdGVyLAogICAgICAuaG9yaXpvbnRhbCAudGFiLnNlbGVjdGVkVGFiICsgLnRhYjo6YWZ0ZXIgewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgIH0KCiAgICAgIC52ZXJ0aWNhbCAudGFiLnNlbGVjdGVkVGFiIHsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICB9CgogICAgICAudGFiIGRlZXMtaWNvbiB7CiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICB9CgogICAgICAudGFiSW5kaWNhdG9yIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICB9CiAgICAgIAogICAgICAudGFiSW5kaWNhdG9yLm5vLXRyYW5zaXRpb24gewogICAgICAgIHRyYW5zaXRpb246IG5vbmU7CiAgICAgIH0KCiAgICAgIC50YWJzLXdyYXBwZXIgLnRhYkluZGljYXRvciB7CiAgICAgICAgaGVpZ2h0OiAzcHg7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYWNjZW50LXByaW1hcnkpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweCAzcHggMCAwOwogICAgICAgIHotaW5kZXg6IDM7CiAgICAgIH0KCiAgICAgIC52ZXJ0aWNhbC13cmFwcGVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIC52ZXJ0aWNhbC13cmFwcGVyIC50YWJJbmRpY2F0b3IgewogICAgICAgIGxlZnQ6IDhweDsKICAgICAgICByaWdodDogOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXByaW1hcnkpOwogICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4wOCk7CiAgICAgIH0KCiAgICAgIC8qIENsb3NlIGJ1dHRvbiAqLwogICAgICAudGFiLWNsb3NlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIHdpZHRoOiAxNnB4OwogICAgICAgIGhlaWdodDogMTZweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDhweDsKICAgICAgICBvcGFjaXR5OiAwLjQ7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cywgYmFja2dyb3VuZCAwLjE1czsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgfQoKICAgICAgLnRhYjpob3ZlciAudGFiLWNsb3NlIHsKICAgICAgICBvcGFjaXR5OiAwLjc7CiAgICAgIH0KCiAgICAgIC50YWItY2xvc2U6aG92ZXIgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1wcmVzc2VkKTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci1hY2NlbnQtZXJyb3IpOwogICAgICB9CgogICAgICAudGFiLnNlbGVjdGVkVGFiIC50YWItY2xvc2UgewogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgfQoKICAgICAgLnRhYi5zZWxlY3RlZFRhYjpob3ZlciAudGFiLWNsb3NlIHsKICAgICAgICBvcGFjaXR5OiAwLjg7CiAgICAgIH0KCiAgICAgIC50YWIuc2VsZWN0ZWRUYWIgLnRhYi1jbG9zZTpob3ZlciB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHRoaXMuYXV0b0hpZGUmJnRoaXMudGFicy5sZW5ndGg8PXRoaXMuYXV0b0hpZGVUaHJlc2hvbGQ/d2BgOndgCiAgICAgICR7dGhpcy5yZW5kZXJUYWJzV3JhcHBlcigpfQogICAgYH1yZW5kZXJUYWJzV3JhcHBlcigpe2xldCBCPXRoaXMudGFiU3R5bGU9PT0iaG9yaXpvbnRhbCIsVT1CPyJ0YWJzLXdyYXBwZXIgaG9yaXpvbnRhbC13cmFwcGVyIjoidmVydGljYWwtd3JhcHBlciIsaGU9YHRhYnNDb250YWluZXIgJHt0aGlzLnRhYlN0eWxlfWA7aWYoQil7bGV0IEY9dGhpcy5hY3Rpb25zTGVmdCYmdGhpcy5hY3Rpb25zTGVmdC5sZW5ndGg+MCxqPXRoaXMuYWN0aW9uc1JpZ2h0JiZ0aGlzLmFjdGlvbnNSaWdodC5sZW5ndGg+MDtyZXR1cm4gd2AKICAgICAgICA8ZGl2IGNsYXNzPSIke1V9Ij4KICAgICAgICAgICR7Rj90aGlzLnJlbmRlckFjdGlvbnModGhpcy5hY3Rpb25zTGVmdCwibGVmdCIpOiIifQogICAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsLWFyZWEiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGwtZmFkZSBzY3JvbGwtZmFkZS1sZWZ0ICR7dGhpcy5jYW5TY3JvbGxMZWZ0PyJ2aXNpYmxlIjoiIn0iPjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSIke2hlfSIgQHNjcm9sbD0ke3RoaXMuaGFuZGxlU2Nyb2xsfT4KICAgICAgICAgICAgICAke3RoaXMudGFicy5tYXAodWU9PnRoaXMucmVuZGVyVGFiKHVlLEIpKX0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbC1mYWRlIHNjcm9sbC1mYWRlLXJpZ2h0ICR7dGhpcy5jYW5TY3JvbGxSaWdodD8idmlzaWJsZSI6IiJ9Ij48L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgJHtqP3RoaXMucmVuZGVyQWN0aW9ucyh0aGlzLmFjdGlvbnNSaWdodCwicmlnaHQiKToiIn0KICAgICAgICAgICR7dGhpcy5zaG93VGFiSW5kaWNhdG9yP3dgPGRpdiBjbGFzcz0idGFiSW5kaWNhdG9yIj48L2Rpdj5gOiIifQogICAgICAgIDwvZGl2PgogICAgICBgfXJldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSIke1V9Ij4KICAgICAgICA8ZGl2IGNsYXNzPSIke2hlfSI+CiAgICAgICAgICAke3RoaXMudGFicy5tYXAoRj0+dGhpcy5yZW5kZXJUYWIoRixCKSl9CiAgICAgICAgPC9kaXY+CiAgICAgICAgJHt0aGlzLnNob3dUYWJJbmRpY2F0b3I/d2A8ZGl2IGNsYXNzPSJ0YWJJbmRpY2F0b3IiPjwvZGl2PmA6IiJ9CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJBY3Rpb25zKEIsVSl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9InRhYi1hY3Rpb25zICR7VX0iPgogICAgICAgICR7Qi5tYXAoaGU9PndgCiAgICAgICAgICA8ZGl2CiAgICAgICAgICAgIGNsYXNzPSJ0YWItYWN0aW9uLWJ1dHRvbiAke2hlLmRpc2FibGVkPyJkaXNhYmxlZCI6IiJ9IgogICAgICAgICAgICB0aXRsZT0iJHtoZS50b29sdGlwfHxoZS5pZH0iCiAgICAgICAgICAgIEBjbGljaz0keygpPT4haGUuZGlzYWJsZWQmJmhlLmFjdGlvbigpfQogICAgICAgICAgPgogICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7aGUuaWNvbk5hbWV9PjwvZGVlcy1pY29uPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgYCl9CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJUYWIoQixVKXtsZXQgRj1gdGFiICR7Qj09PXRoaXMuc2VsZWN0ZWRUYWI/InNlbGVjdGVkVGFiIjoiIn1gLGo9Qi5jbG9zZWFibGU/d2AKICAgICAgPHNwYW4gY2xhc3M9InRhYi1jbG9zZSIgQGNsaWNrPSIke2xlPT50aGlzLmNsb3NlVGFiKGxlLEIpfSI+CiAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6eCJ9IHN0eWxlPSJmb250LXNpemU6IDEycHg7Ij48L2RlZXMtaWNvbj4KICAgICAgPC9zcGFuPgogICAgYDoiIix1ZT1VP3dgCiAgICAgIDxzcGFuIGNsYXNzPSJ0YWItY29udGVudCI+CiAgICAgICAgJHt0aGlzLnJlbmRlclRhYkljb24oQil9CiAgICAgICAgJHtCLmtleX0KICAgICAgPC9zcGFuPgogICAgICAke2p9CiAgICBgOndgCiAgICAgICR7dGhpcy5yZW5kZXJUYWJJY29uKEIpfQogICAgICAke0Iua2V5fQogICAgICAke2p9CiAgICBgO3JldHVybiB3YAogICAgICA8ZGl2CiAgICAgICAgY2xhc3M9IiR7Rn0iCiAgICAgICAgQGNsaWNrPSIkeygpPT50aGlzLnNlbGVjdFRhYihCKX0iCiAgICAgID4KICAgICAgICAke3VlfQogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyVGFiSWNvbihCKXtyZXR1cm4gQi5pY29uTmFtZT93YDxkZWVzLWljb24gLmljb249JHtCLmljb25OYW1lfT48L2RlZXMtaWNvbj5gOiIifXNlbGVjdFRhYihCKXt0aGlzLnNlbGVjdGVkVGFiPUIsQi5hY3Rpb24oKSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pnt0aGlzLnNjcm9sbFRhYkludG9WaWV3KEIpfSksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgidGFiLXNlbGVjdCIse2RldGFpbDp7dGFiOkJ9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9Y2xlYXIoKXt0aGlzLnRhYnM9W10sdGhpcy5zZWxlY3RlZFRhYj1udWxsfWNsb3NlVGFiKEIsVSl7Qi5zdG9wUHJvcGFnYXRpb24oKSxVLm9uQ2xvc2UmJlUub25DbG9zZSgpLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInRhYi1jbG9zZSIse2RldGFpbDp7dGFiOlV9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9Zmlyc3RVcGRhdGVkKCl7dGhpcy5zZXR1cFJlc2l6ZU9ic2VydmVyKCkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dGhpcy51cGRhdGVTY3JvbGxTdGF0ZSgpfSl9YXN5bmMgZGlzY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMucmVzaXplT2JzZXJ2ZXImJih0aGlzLnJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKSx0aGlzLnJlc2l6ZU9ic2VydmVyPW51bGwpfXNldHVwUmVzaXplT2JzZXJ2ZXIoKXtpZih0aGlzLnRhYlN0eWxlIT09Imhvcml6b250YWwiKXJldHVybjt0aGlzLnJlc2l6ZU9ic2VydmVyPW5ldyBSZXNpemVPYnNlcnZlcigoKT0+e3RoaXMudXBkYXRlU2Nyb2xsU3RhdGUoKX0pO2xldCBCPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLnRhYnNDb250YWluZXIuaG9yaXpvbnRhbCIpO0ImJnRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShCKX1oYW5kbGVTY3JvbGw9aSgoKT0+e3RoaXMudXBkYXRlU2Nyb2xsU3RhdGUoKX0sImhhbmRsZVNjcm9sbCIpO3VwZGF0ZVNjcm9sbFN0YXRlKCl7bGV0IEI9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIudGFic0NvbnRhaW5lci5ob3Jpem9udGFsIik7aWYoIUIpcmV0dXJuO2xldCBVPUIuc2Nyb2xsTGVmdCxoZT1CLnNjcm9sbFdpZHRoLEY9Qi5jbGllbnRXaWR0aCxqPTI7dGhpcy5jYW5TY3JvbGxMZWZ0PVU+aix0aGlzLmNhblNjcm9sbFJpZ2h0PVU8aGUtRi1qfXNjcm9sbFRhYkludG9WaWV3KEIpe2lmKHRoaXMudGFiU3R5bGUhPT0iaG9yaXpvbnRhbCIpcmV0dXJuO2xldCBVPXRoaXMudGFicy5pbmRleE9mKEIpO2lmKFU9PT0tMSlyZXR1cm47bGV0IGhlPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLnRhYnNDb250YWluZXIuaG9yaXpvbnRhbCIpLEY9aGU/LnF1ZXJ5U2VsZWN0b3IoYC50YWI6bnRoLWNoaWxkKCR7VSsxfSlgKTtpZihGJiZoZSl7bGV0IGo9aGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdWU9Ri5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt1ZS5sZWZ0Pj1qLmxlZnQmJnVlLnJpZ2h0PD1qLnJpZ2h0fHxGLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjoic21vb3RoIixibG9jazoibmVhcmVzdCIsaW5saW5lOiJuZWFyZXN0In0pfX1hc3luYyB1cGRhdGVkKEIpe3N1cGVyLnVwZGF0ZWQoQiksQi5oYXMoInRhYnMiKSYmKCF0aGlzLnRhYnN8fHRoaXMudGFicy5sZW5ndGg9PT0wP3RoaXMuc2VsZWN0ZWRUYWIhPT1udWxsJiYodGhpcy5zZWxlY3RlZFRhYj1udWxsLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInRhYi1zZWxlY3QiLHtkZXRhaWw6e3RhYjpudWxsfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpKTp0aGlzLnNlbGVjdGVkVGFiJiYhdGhpcy50YWJzLmluY2x1ZGVzKHRoaXMuc2VsZWN0ZWRUYWIpP3RoaXMuc2VsZWN0VGFiKHRoaXMudGFic1swXSk6dGhpcy5zZWxlY3RlZFRhYnx8dGhpcy5zZWxlY3RUYWIodGhpcy50YWJzWzBdKSksKEIuaGFzKCJzZWxlY3RlZFRhYiIpfHxCLmhhcygidGFicyIpKSYmKGF3YWl0IHRoaXMudXBkYXRlQ29tcGxldGUsIXRoaXMuaW5kaWNhdG9ySW5pdGlhbGl6ZWQmJmRvY3VtZW50LmZvbnRzJiZhd2FpdCBkb2N1bWVudC5mb250cy5yZWFkeSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pnt0aGlzLnVwZGF0ZVRhYkluZGljYXRvcigpLHRoaXMudXBkYXRlU2Nyb2xsU3RhdGUoKX0pKX1pbmRpY2F0b3JJbml0aWFsaXplZD0hMTt1cGRhdGVUYWJJbmRpY2F0b3IoKXtpZighdGhpcy5zaG91bGRTaG93SW5kaWNhdG9yKCkpcmV0dXJuO2xldCBCPXRoaXMuZ2V0U2VsZWN0ZWRUYWJFbGVtZW50KCk7aWYoIUIpcmV0dXJuO2xldCBVPXRoaXMuZ2V0SW5kaWNhdG9yRWxlbWVudCgpO1UmJih0aGlzLmhhbmRsZUluaXRpYWxUcmFuc2l0aW9uKFUpLHRoaXMudGFiU3R5bGU9PT0iaG9yaXpvbnRhbCI/dGhpcy51cGRhdGVIb3Jpem9udGFsSW5kaWNhdG9yKFUsQik6dGhpcy51cGRhdGVWZXJ0aWNhbEluZGljYXRvcihVLEIpLFUuc3R5bGUub3BhY2l0eT0iMSIpfXNob3VsZFNob3dJbmRpY2F0b3IoKXtyZXR1cm4hIXRoaXMuc2VsZWN0ZWRUYWImJnRoaXMuc2hvd1RhYkluZGljYXRvciYmdGhpcy50YWJzLmluY2x1ZGVzKHRoaXMuc2VsZWN0ZWRUYWIpfWdldFNlbGVjdGVkVGFiRWxlbWVudCgpe2xldCBCPXRoaXMudGFicy5pbmRleE9mKHRoaXMuc2VsZWN0ZWRUYWIpLGhlPXRoaXMudGFiU3R5bGU9PT0iaG9yaXpvbnRhbCI/YC50YWJzLXdyYXBwZXIgLnRhYnNDb250YWluZXIgLnRhYjpudGgtY2hpbGQoJHtCKzF9KWA6YC52ZXJ0aWNhbC13cmFwcGVyIC50YWJzQ29udGFpbmVyIC50YWI6bnRoLWNoaWxkKCR7QisxfSlgO3JldHVybiB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihoZSl9Z2V0SW5kaWNhdG9yRWxlbWVudCgpe3JldHVybiB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLnRhYkluZGljYXRvciIpfWhhbmRsZUluaXRpYWxUcmFuc2l0aW9uKEIpe3RoaXMuaW5kaWNhdG9ySW5pdGlhbGl6ZWR8fChCLmNsYXNzTGlzdC5hZGQoIm5vLXRyYW5zaXRpb24iKSx0aGlzLmluZGljYXRvckluaXRpYWxpemVkPSEwLHNldFRpbWVvdXQoKCk9PntCLmNsYXNzTGlzdC5yZW1vdmUoIm5vLXRyYW5zaXRpb24iKX0sNTApKX11cGRhdGVIb3Jpem9udGFsSW5kaWNhdG9yKEIsVSl7bGV0IGhlPVUucXVlcnlTZWxlY3RvcigiLnRhYi1jb250ZW50Iik7aWYoIWhlKXJldHVybjtsZXQgRj1CLnBhcmVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaj1oZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx1ZT1qLmxlZnQtRi5sZWZ0LGxlPWoud2lkdGgrOCxRPXVlLTQ7Qi5zdHlsZS53aWR0aD1gJHtsZX1weGAsQi5zdHlsZS5sZWZ0PWAke1F9cHhgfXVwZGF0ZVZlcnRpY2FsSW5kaWNhdG9yKEIsVSl7bGV0IGhlPXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIudmVydGljYWwtd3JhcHBlciAudGFic0NvbnRhaW5lciIpO2hlJiYoQi5zdHlsZS50b3A9YCR7VS5vZmZzZXRUb3AraGUub2Zmc2V0VG9wfXB4YCxCLnN0eWxlLmhlaWdodD1gJHtVLmNsaWVudEhlaWdodH1weGApfXN0YXRpY3twcihhLHQpfX07cmV0dXJuIG1lPWF9KSgpfSk7dmFyIEhoLE5uLFEzYSxUaXQ9ZygoKT0+e21oKCk7cGUoKTtrdCgpO0NpdCgpO3B0KCk7SGg9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LE5uPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxRM2E9KCgpPT57bGV0IHM9W25lKCJkZWVzLWFwcHVpLW1haW5jb250ZW50IildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W107dmFyIEg9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNBcHB1aU1haW5jb250ZW50Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGs9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpBcnJheX0pXSxwPVtMKHt0eXBlOk9iamVjdH0pXSxjPVtMKHt0eXBlOkJvb2xlYW59KV0seD1bTCh7dHlwZTpCb29sZWFufSldLHk9W0woe3R5cGU6TnVtYmVyfSldLE49W0woe3R5cGU6QXJyYXl9KV0sTz1bTCh7dHlwZTpBcnJheX0pXSxIaCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InRhYnMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+InRhYnMiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy50YWJzLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MudGFicz1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LG8sbCksSGgodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWxlY3RlZFRhYiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4ic2VsZWN0ZWRUYWIiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5zZWxlY3RlZFRhYiwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLnNlbGVjdGVkVGFiPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sZCx1KSxIaCh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dUYWJzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJzaG93VGFicyJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLnNob3dUYWJzLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1Muc2hvd1RhYnM9SX0sInNldCIpfSxtZXRhZGF0YTprfSxiLHYpLEhoKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToidGFic0F1dG9IaWRlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJ0YWJzQXV0b0hpZGUiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy50YWJzQXV0b0hpZGUsImdldCIpLHNldDppKChTLEkpPT57Uy50YWJzQXV0b0hpZGU9SX0sInNldCIpfSxtZXRhZGF0YTprfSxtLGYpLEhoKHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToidGFic0F1dG9IaWRlVGhyZXNob2xkIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJ0YWJzQXV0b0hpZGVUaHJlc2hvbGQiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy50YWJzQXV0b0hpZGVUaHJlc2hvbGQsImdldCIpLHNldDppKChTLEkpPT57Uy50YWJzQXV0b0hpZGVUaHJlc2hvbGQ9SX0sInNldCIpfSxtZXRhZGF0YTprfSxNLHopLEhoKHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidGFiQWN0aW9uc0xlZnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+InRhYkFjdGlvbnNMZWZ0ImluIFMsImhhcyIpLGdldDppKFM9PlMudGFiQWN0aW9uc0xlZnQsImdldCIpLHNldDppKChTLEkpPT57Uy50YWJBY3Rpb25zTGVmdD1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LEMsXyksSGgodGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0YWJBY3Rpb25zUmlnaHQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+InRhYkFjdGlvbnNSaWdodCJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLnRhYkFjdGlvbnNSaWdodCwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLnRhYkFjdGlvbnNSaWdodD1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LCQsRSksSGgobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6a30sbnVsbCx0KSxIPWE9ZS52YWx1ZSxrJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmt9KX1zdGF0aWMgZGVtbz1pKCgpPT53YAogICAgPGRlZXMtYXBwdWktbWFpbmNvbnRlbnQKICAgICAgLnRhYnM9JHtbe2tleToiT3ZlcnZpZXciLGljb25OYW1lOiJsdWNpZGU6aG9tZSIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJPdmVydmlldyIpLCJhY3Rpb24iKX0se2tleToiRGV0YWlscyIsaWNvbk5hbWU6Imx1Y2lkZTpmaWxlIixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIkRldGFpbHMiKSwiYWN0aW9uIil9LHtrZXk6IlNldHRpbmdzIixpY29uTmFtZToibHVjaWRlOnNldHRpbmdzIixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIlNldHRpbmdzIiksImFjdGlvbiIpfV19CiAgICA+CiAgICAgIDxkaXYgc2xvdD0iY29udGVudCIgc3R5bGU9InBhZGRpbmc6IDQwcHg7IGNvbG9yOiAjY2NjOyI+CiAgICAgICAgPGgxPk1haW4gQ29udGVudCBBcmVhPC9oMT4KICAgICAgICA8cD5UaGlzIGlzIHdoZXJlIHlvdXIgYXBwbGljYXRpb24gY29udGVudCBnb2VzLjwvcD4KICAgICAgPC9kaXY+CiAgICA8L2RlZXMtYXBwdWktbWFpbmNvbnRlbnQ+CiAgYCwiZGVtbyIpO3N0YXRpYyBkZW1vR3JvdXBzPVsiQXBwIFVJIl07I2U9Tm4odGhpcyxvLFt7a2V5OiJcdTI2QTBcdUZFMEYgUGxlYXNlIHNldCB0YWJzIixhY3Rpb246aSgoKT0+Y29uc29sZS53YXJuKCJObyB0YWJzIGNvbmZpZ3VyZWQgZm9yIG1haW5jb250ZW50IiksImFjdGlvbiIpfV0pO2dldCB0YWJzKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHRhYnMoayl7dGhpcy4jZT1rfSN0PShObih0aGlzLGwpLE5uKHRoaXMsZCxudWxsKSk7Z2V0IHNlbGVjdGVkVGFiKCl7cmV0dXJuIHRoaXMuI3R9c2V0IHNlbGVjdGVkVGFiKGspe3RoaXMuI3Q9a30jYT0oTm4odGhpcyx1KSxObih0aGlzLGIsITApKTtnZXQgc2hvd1RhYnMoKXtyZXR1cm4gdGhpcy4jYX1zZXQgc2hvd1RhYnMoayl7dGhpcy4jYT1rfSNzPShObih0aGlzLHYpLE5uKHRoaXMsbSwhMSkpO2dldCB0YWJzQXV0b0hpZGUoKXtyZXR1cm4gdGhpcy4jc31zZXQgdGFic0F1dG9IaWRlKGspe3RoaXMuI3M9a30jaT0oTm4odGhpcyxmKSxObih0aGlzLE0sMCkpO2dldCB0YWJzQXV0b0hpZGVUaHJlc2hvbGQoKXtyZXR1cm4gdGhpcy4jaX1zZXQgdGFic0F1dG9IaWRlVGhyZXNob2xkKGspe3RoaXMuI2k9a30jcj0oTm4odGhpcyx6KSxObih0aGlzLEMsW10pKTtnZXQgdGFiQWN0aW9uc0xlZnQoKXtyZXR1cm4gdGhpcy4jcn1zZXQgdGFiQWN0aW9uc0xlZnQoayl7dGhpcy4jcj1rfSNvPShObih0aGlzLF8pLE5uKHRoaXMsJCxbXSkpO2dldCB0YWJBY3Rpb25zUmlnaHQoKXtyZXR1cm4gdGhpcy4jb31zZXQgdGFiQWN0aW9uc1JpZ2h0KGspe3RoaXMuI289a31zdGF0aWMgc3R5bGVzPVtIZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byAxZnI7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYmctc2Vjb25kYXJ5KTsKICAgICAgfQoKICAgICAgLm1haW5jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGNvbnRlbnRzOwogICAgICB9CgogICAgICAudG9wYmFyIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogMWZyOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgdHJhbnNpdGlvbjogZ3JpZC10ZW1wbGF0ZS1yb3dzIDAuM3MgZWFzZTsKICAgICAgfQoKICAgICAgLnRvcGJhciA+ICogewogICAgICAgIG1pbi1oZWlnaHQ6IDA7CiAgICAgIH0KCiAgICAgIC5jb250ZW50LWFyZWEgewogICAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICAgIG1pbi1oZWlnaHQ6IDA7CiAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbjsKICAgICAgfQoKICAgICAgOmhvc3QoW25vdGFic10pIC50b3BiYXIgewogICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogMGZyOwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0ibWFpbmNvbnRhaW5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0idG9wYmFyIj4KICAgICAgICAgIDxkZWVzLWFwcHVpLXRhYnMKICAgICAgICAgICAgLnRhYnM9JHt0aGlzLnRhYnN9CiAgICAgICAgICAgIC5zZWxlY3RlZFRhYj0ke3RoaXMuc2VsZWN0ZWRUYWJ9CiAgICAgICAgICAgIC5zaG93VGFiSW5kaWNhdG9yPSR7ITB9CiAgICAgICAgICAgIC50YWJTdHlsZT0keyJob3Jpem9udGFsIn0KICAgICAgICAgICAgLmF1dG9IaWRlPSR7dGhpcy50YWJzQXV0b0hpZGV9CiAgICAgICAgICAgIC5hdXRvSGlkZVRocmVzaG9sZD0ke3RoaXMudGFic0F1dG9IaWRlVGhyZXNob2xkfQogICAgICAgICAgICAuYWN0aW9uc0xlZnQ9JHt0aGlzLnRhYkFjdGlvbnNMZWZ0fQogICAgICAgICAgICAuYWN0aW9uc1JpZ2h0PSR7dGhpcy50YWJBY3Rpb25zUmlnaHR9CiAgICAgICAgICAgIEB0YWItc2VsZWN0PSR7az0+dGhpcy5oYW5kbGVUYWJTZWxlY3Qoayl9CiAgICAgICAgICAgIEB0YWItY2xvc2U9JHtrPT50aGlzLmhhbmRsZVRhYkNsb3NlKGspfQogICAgICAgICAgPjwvZGVlcy1hcHB1aS10YWJzPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQtYXJlYSI+CiAgICAgICAgICA8c2xvdD48L3Nsb3Q+CiAgICAgICAgICA8c2xvdCBuYW1lPSJjb250ZW50Ij48L3Nsb3Q+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1oYW5kbGVUYWJTZWxlY3Qoayl7dGhpcy5zZWxlY3RlZFRhYj1rLmRldGFpbC50YWIsdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgidGFiLXNlbGVjdCIse2RldGFpbDprLmRldGFpbCxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZVRhYkNsb3NlKGspe3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInRhYi1jbG9zZSIse2RldGFpbDprLmRldGFpbCxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfXVwZGF0ZWQoayl7c3VwZXIudXBkYXRlZChrKSxrLmhhcygic2hvd1RhYnMiKSYmKHRoaXMuc2hvd1RhYnM/dGhpcy5yZW1vdmVBdHRyaWJ1dGUoIm5vdGFicyIpOnRoaXMuc2V0QXR0cmlidXRlKCJub3RhYnMiLCIiKSl9YXN5bmMgZmlyc3RVcGRhdGVkKGspe2F3YWl0IHN1cGVyLmZpcnN0VXBkYXRlZChrKSx0aGlzLnNob3dUYWJzfHx0aGlzLnNldEF0dHJpYnV0ZSgibm90YWJzIiwiIik7bGV0IFM9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoImRlZXMtYXBwdWktdGFicyIpO1MmJmF3YWl0IFMudXBkYXRlQ29tcGxldGV9Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLE5uKHRoaXMsRSl9c3RhdGlje05uKGEsdCl9fTtyZXR1cm4gSD1hfSkoKX0pO3ZhciBPYSx6dCxKM2EsZWZhPWcoKCk9PntwZSgpO2t0KCk7bWgoKTtxM2EoKTtwdCgpO19pdCgpO0RldCgpO0VldCgpO01pdCgpO3ppdCgpO1RpdCgpO01ldCgpO09hPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSx6dD1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sSjNhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1hcHB1aSIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdLEgsaz1bXSxTPVtdLEksUD1bXSxSPVtdLEssVj1bXSxXPVtdLG1lLEI9W10sVT1bXSxoZSxGPVtdLGo9W10sdWUsbGU9W10sUT1bXSxpZSx0ZT1bXSxlZT1bXSxrZSxYPVtdLFo9W10seWUscT1bXSxBPVtdLHNlLG9lPVtdLGFlPVtdLFRlLFJlPVtdLEJlPVtdLEdlLERlPVtdLF9lPVtdLENlLHZlPVtdLGJlPVtdLEVlLGplPVtdLFdlPVtdLHN0LE1lPVtdLGdlPVtdLEllLGNlPVtdLGRlPVtdLExlLEtlPVtdLFllPVtdLG90LFV0PVtdLFp0PVtdLGphLGV0PVtdLGJ0PVtdLHlhLGVzPVtdLHJzPVtdLHBzLG5zPVtdLHRpPVtdLGFpLHplPVtdLHhlPVtdLE5lLHh0PVtdLE1hPVtdLE5yLGZlPVtdLHJlPVtdLFNlLE9lPVtdLEplPVtdLHphLGRhPVtdLHdzPVtdLGtpLEppPVtdLFJyPVtdLFNpLHZuPVtdLHIxPVtdLG8xLG4xPVtdLGwxPVtdLGMxLGQxPVtdLHUxPVtdO3ZhciBwMT1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0FwcHVpIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IEQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpBcnJheX0pXSxwPVtMKHt0eXBlOlN0cmluZ30pXSxjPVtMKHt0eXBlOlN0cmluZ30pXSx4PVtMKHt0eXBlOkJvb2xlYW59KV0seT1bTCh7dHlwZTpPYmplY3R9KV0sTj1bTCh7dHlwZTpBcnJheX0pXSxPPVtMKHt0eXBlOkJvb2xlYW59KV0sSD1bTCh7dHlwZTpTdHJpbmd9KV0sST1bTCh7dHlwZTpTdHJpbmd9KV0sSz1bTCh7dHlwZTpBcnJheX0pXSxtZT1bTCh7dHlwZTpBcnJheX0pXSxoZT1bTCh7dHlwZTpBcnJheX0pXSx1ZT1bTCh7dHlwZTpPYmplY3R9KV0saWU9W0woe3R5cGU6U3RyaW5nfSldLGtlPVtMKHt0eXBlOkFycmF5fSldLHllPVtMKHt0eXBlOk9iamVjdH0pXSxzZT1bTCh7dHlwZTpCb29sZWFufSldLFRlPVtMKHt0eXBlOkJvb2xlYW59KV0sR2U9W0woe3R5cGU6Qm9vbGVhbn0pXSxDZT1bTCh7dHlwZTpCb29sZWFufSldLEVlPVtMKHt0eXBlOkJvb2xlYW59KV0sc3Q9W0woe3R5cGU6Qm9vbGVhbn0pXSxJZT1bTCh7dHlwZTpOdW1iZXJ9KV0sTGU9W1koKV0sb3Q9W1koKV0samE9W0woe3R5cGU6QXJyYXl9KV0seWE9W0woe3R5cGU6T2JqZWN0fSldLHBzPVtMKHt0eXBlOkFycmF5fSldLGFpPVtMKHt0eXBlOkFycmF5fSldLE5lPVtZKCldLE5yPVtZKCldLFNlPVtZKCldLHphPVtZKCldLGtpPVtZKCldLFNpPVtZKCldLG8xPVtZKCldLGMxPVtZKCldLE9hKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYXBwYmFyTWVudUl0ZW1zIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJhcHBiYXJNZW51SXRlbXMiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5hcHBiYXJNZW51SXRlbXMsImdldCIpLHNldDppKChULEcpPT57VC5hcHBiYXJNZW51SXRlbXM9R30sInNldCIpfSxtZXRhZGF0YTpEfSxvLGwpLE9hKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYXBwYmFyQnJlYWRjcnVtYnMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+ImFwcGJhckJyZWFkY3J1bWJzImluIFQsImhhcyIpLGdldDppKFQ9PlQuYXBwYmFyQnJlYWRjcnVtYnMsImdldCIpLHNldDppKChULEcpPT57VC5hcHBiYXJCcmVhZGNydW1icz1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LGQsdSksT2EodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJhcHBiYXJCcmVhZGNydW1iU2VwYXJhdG9yIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJhcHBiYXJCcmVhZGNydW1iU2VwYXJhdG9yImluIFQsImhhcyIpLGdldDppKFQ9PlQuYXBwYmFyQnJlYWRjcnVtYlNlcGFyYXRvciwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULmFwcGJhckJyZWFkY3J1bWJTZXBhcmF0b3I9R30sInNldCIpfSxtZXRhZGF0YTpEfSxiLHYpLE9hKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYXBwYmFyU2hvd1dpbmRvd0NvbnRyb2xzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJhcHBiYXJTaG93V2luZG93Q29udHJvbHMiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5hcHBiYXJTaG93V2luZG93Q29udHJvbHMsImdldCIpLHNldDppKChULEcpPT57VC5hcHBiYXJTaG93V2luZG93Q29udHJvbHM9R30sInNldCIpfSxtZXRhZGF0YTpEfSxtLGYpLE9hKHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYXBwYmFyVXNlciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4iYXBwYmFyVXNlciJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULmFwcGJhclVzZXIsImdldCIpLHNldDppKChULEcpPT57VC5hcHBiYXJVc2VyPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sTSx6KSxPYSh0aGlzLG51bGwsTix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImFwcGJhclByb2ZpbGVNZW51SXRlbXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+ImFwcGJhclByb2ZpbGVNZW51SXRlbXMiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5hcHBiYXJQcm9maWxlTWVudUl0ZW1zLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QuYXBwYmFyUHJvZmlsZU1lbnVJdGVtcz1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LEMsXyksT2EodGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJhcHBiYXJTaG93U2VhcmNoIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJhcHBiYXJTaG93U2VhcmNoImluIFQsImhhcyIpLGdldDppKFQ9PlQuYXBwYmFyU2hvd1NlYXJjaCwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULmFwcGJhclNob3dTZWFyY2g9R30sInNldCIpfSxtZXRhZGF0YTpEfSwkLEUpLE9hKHRoaXMsbnVsbCxILHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWFpbm1lbnVMb2dvSWNvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ibWFpbm1lbnVMb2dvSWNvbiJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULm1haW5tZW51TG9nb0ljb24sImdldCIpLHNldDppKChULEcpPT57VC5tYWlubWVudUxvZ29JY29uPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sayxTKSxPYSh0aGlzLG51bGwsSSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1haW5tZW51TG9nb1RleHQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+Im1haW5tZW51TG9nb1RleHQiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5tYWlubWVudUxvZ29UZXh0LCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QubWFpbm1lbnVMb2dvVGV4dD1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LFAsUiksT2EodGhpcyxudWxsLEsse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtYWlubWVudUdyb3VwcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ibWFpbm1lbnVHcm91cHMiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5tYWlubWVudUdyb3VwcywiZ2V0Iiksc2V0OmkoKFQsRyk9PntULm1haW5tZW51R3JvdXBzPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sVixXKSxPYSh0aGlzLG51bGwsbWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtYWlubWVudUJvdHRvbVRhYnMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+Im1haW5tZW51Qm90dG9tVGFicyJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULm1haW5tZW51Qm90dG9tVGFicywiZ2V0Iiksc2V0OmkoKFQsRyk9PntULm1haW5tZW51Qm90dG9tVGFicz1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LEIsVSksT2EodGhpcyxudWxsLGhlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWFpbm1lbnVUYWJzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJtYWlubWVudVRhYnMiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5tYWlubWVudVRhYnMsImdldCIpLHNldDppKChULEcpPT57VC5tYWlubWVudVRhYnM9R30sInNldCIpfSxtZXRhZGF0YTpEfSxGLGopLE9hKHRoaXMsbnVsbCx1ZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1haW5tZW51U2VsZWN0ZWRUYWIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+Im1haW5tZW51U2VsZWN0ZWRUYWIiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5tYWlubWVudVNlbGVjdGVkVGFiLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QubWFpbm1lbnVTZWxlY3RlZFRhYj1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LGxlLFEpLE9hKHRoaXMsbnVsbCxpZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlY29uZGFyeW1lbnVIZWFkaW5nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJzZWNvbmRhcnltZW51SGVhZGluZyJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULnNlY29uZGFyeW1lbnVIZWFkaW5nLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1Quc2Vjb25kYXJ5bWVudUhlYWRpbmc9R30sInNldCIpfSxtZXRhZGF0YTpEfSx0ZSxlZSksT2EodGhpcyxudWxsLGtlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2Vjb25kYXJ5bWVudUdyb3VwcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ic2Vjb25kYXJ5bWVudUdyb3VwcyJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULnNlY29uZGFyeW1lbnVHcm91cHMsImdldCIpLHNldDppKChULEcpPT57VC5zZWNvbmRhcnltZW51R3JvdXBzPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sWCxaKSxPYSh0aGlzLG51bGwseWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWNvbmRhcnltZW51U2VsZWN0ZWRJdGVtIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJzZWNvbmRhcnltZW51U2VsZWN0ZWRJdGVtImluIFQsImhhcyIpLGdldDppKFQ9PlQuc2Vjb25kYXJ5bWVudVNlbGVjdGVkSXRlbSwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULnNlY29uZGFyeW1lbnVTZWxlY3RlZEl0ZW09R30sInNldCIpfSxtZXRhZGF0YTpEfSxxLEEpLE9hKHRoaXMsbnVsbCxzZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1haW5tZW51Q29sbGFwc2VkIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJtYWlubWVudUNvbGxhcHNlZCJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULm1haW5tZW51Q29sbGFwc2VkLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QubWFpbm1lbnVDb2xsYXBzZWQ9R30sInNldCIpfSxtZXRhZGF0YTpEfSxvZSxhZSksT2EodGhpcyxudWxsLFRlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2Vjb25kYXJ5bWVudUNvbGxhcHNlZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ic2Vjb25kYXJ5bWVudUNvbGxhcHNlZCJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULnNlY29uZGFyeW1lbnVDb2xsYXBzZWQsImdldCIpLHNldDppKChULEcpPT57VC5zZWNvbmRhcnltZW51Q29sbGFwc2VkPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sUmUsQmUpLE9hKHRoaXMsbnVsbCxHZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1haW5tZW51VmlzaWJsZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ibWFpbm1lbnVWaXNpYmxlImluIFQsImhhcyIpLGdldDppKFQ9PlQubWFpbm1lbnVWaXNpYmxlLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QubWFpbm1lbnVWaXNpYmxlPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sRGUsX2UpLE9hKHRoaXMsbnVsbCxDZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlY29uZGFyeW1lbnVWaXNpYmxlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJzZWNvbmRhcnltZW51VmlzaWJsZSJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULnNlY29uZGFyeW1lbnVWaXNpYmxlLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1Quc2Vjb25kYXJ5bWVudVZpc2libGU9R30sInNldCIpfSxtZXRhZGF0YTpEfSx2ZSxiZSksT2EodGhpcyxudWxsLEVlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWFpbmNvbnRlbnRUYWJzVmlzaWJsZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ibWFpbmNvbnRlbnRUYWJzVmlzaWJsZSJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULm1haW5jb250ZW50VGFic1Zpc2libGUsImdldCIpLHNldDppKChULEcpPT57VC5tYWluY29udGVudFRhYnNWaXNpYmxlPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0samUsV2UpLE9hKHRoaXMsbnVsbCxzdCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNvbnRlbnRUYWJzQXV0b0hpZGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+ImNvbnRlbnRUYWJzQXV0b0hpZGUiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5jb250ZW50VGFic0F1dG9IaWRlLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QuY29udGVudFRhYnNBdXRvSGlkZT1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LE1lLGdlKSxPYSh0aGlzLG51bGwsSWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjb250ZW50VGFic0F1dG9IaWRlVGhyZXNob2xkIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJjb250ZW50VGFic0F1dG9IaWRlVGhyZXNob2xkImluIFQsImhhcyIpLGdldDppKFQ9PlQuY29udGVudFRhYnNBdXRvSGlkZVRocmVzaG9sZCwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULmNvbnRlbnRUYWJzQXV0b0hpZGVUaHJlc2hvbGQ9R30sInNldCIpfSxtZXRhZGF0YTpEfSxjZSxkZSksT2EodGhpcyxudWxsLExlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYWN0aXZpdHlMb2dWaXNpYmxlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJhY3Rpdml0eUxvZ1Zpc2libGUiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5hY3Rpdml0eUxvZ1Zpc2libGUsImdldCIpLHNldDppKChULEcpPT57VC5hY3Rpdml0eUxvZ1Zpc2libGU9R30sInNldCIpfSxtZXRhZGF0YTpEfSxLZSxZZSksT2EodGhpcyxudWxsLG90LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYWN0aXZpdHlMb2dDb3VudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4iYWN0aXZpdHlMb2dDb3VudCJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULmFjdGl2aXR5TG9nQ291bnQsImdldCIpLHNldDppKChULEcpPT57VC5hY3Rpdml0eUxvZ0NvdW50PUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sVXQsWnQpLE9hKHRoaXMsbnVsbCxqYSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1haW5jb250ZW50VGFicyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ibWFpbmNvbnRlbnRUYWJzImluIFQsImhhcyIpLGdldDppKFQ9PlQubWFpbmNvbnRlbnRUYWJzLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QubWFpbmNvbnRlbnRUYWJzPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sZXQsYnQpLE9hKHRoaXMsbnVsbCx5YSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1haW5jb250ZW50U2VsZWN0ZWRUYWIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+Im1haW5jb250ZW50U2VsZWN0ZWRUYWIiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5tYWluY29udGVudFNlbGVjdGVkVGFiLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QubWFpbmNvbnRlbnRTZWxlY3RlZFRhYj1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LGVzLHJzKSxPYSh0aGlzLG51bGwscHMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjb250ZW50VGFiQWN0aW9uc0xlZnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+ImNvbnRlbnRUYWJBY3Rpb25zTGVmdCJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULmNvbnRlbnRUYWJBY3Rpb25zTGVmdCwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULmNvbnRlbnRUYWJBY3Rpb25zTGVmdD1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LG5zLHRpKSxPYSh0aGlzLG51bGwsYWkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjb250ZW50VGFiQWN0aW9uc1JpZ2h0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJjb250ZW50VGFiQWN0aW9uc1JpZ2h0ImluIFQsImhhcyIpLGdldDppKFQ9PlQuY29udGVudFRhYkFjdGlvbnNSaWdodCwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULmNvbnRlbnRUYWJBY3Rpb25zUmlnaHQ9R30sInNldCIpfSxtZXRhZGF0YTpEfSx6ZSx4ZSksT2EodGhpcyxudWxsLE5lLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYXBwYmFyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJhcHBiYXIiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5hcHBiYXIsImdldCIpLHNldDppKChULEcpPT57VC5hcHBiYXI9R30sInNldCIpfSxtZXRhZGF0YTpEfSx4dCxNYSksT2EodGhpcyxudWxsLE5yLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWFpbm1lbnUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+Im1haW5tZW51ImluIFQsImhhcyIpLGdldDppKFQ9PlQubWFpbm1lbnUsImdldCIpLHNldDppKChULEcpPT57VC5tYWlubWVudT1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LGZlLHJlKSxPYSh0aGlzLG51bGwsU2Use2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWNvbmRhcnltZW51IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJzZWNvbmRhcnltZW51ImluIFQsImhhcyIpLGdldDppKFQ9PlQuc2Vjb25kYXJ5bWVudSwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULnNlY29uZGFyeW1lbnU9R30sInNldCIpfSxtZXRhZGF0YTpEfSxPZSxKZSksT2EodGhpcyxudWxsLHphLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWFpbmNvbnRlbnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+Im1haW5jb250ZW50ImluIFQsImhhcyIpLGdldDppKFQ9PlQubWFpbmNvbnRlbnQsImdldCIpLHNldDppKChULEcpPT57VC5tYWluY29udGVudD1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LGRhLHdzKSxPYSh0aGlzLG51bGwsa2kse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJhY3Rpdml0eWxvZ0VsZW1lbnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+ImFjdGl2aXR5bG9nRWxlbWVudCJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULmFjdGl2aXR5bG9nRWxlbWVudCwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULmFjdGl2aXR5bG9nRWxlbWVudD1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LEppLFJyKSxPYSh0aGlzLG51bGwsU2kse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJib3R0b21iYXJFbGVtZW50IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJib3R0b21iYXJFbGVtZW50ImluIFQsImhhcyIpLGdldDppKFQ9PlQuYm90dG9tYmFyRWxlbWVudCwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULmJvdHRvbWJhckVsZW1lbnQ9R30sInNldCIpfSxtZXRhZGF0YTpEfSx2bixyMSksT2EodGhpcyxudWxsLG8xLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYm90dG9tYmFyVmlzaWJsZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4iYm90dG9tYmFyVmlzaWJsZSJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULmJvdHRvbWJhclZpc2libGUsImdldCIpLHNldDppKChULEcpPT57VC5ib3R0b21iYXJWaXNpYmxlPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sbjEsbDEpLE9hKHRoaXMsbnVsbCxjMSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImN1cnJlbnRWaWV3IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJjdXJyZW50VmlldyJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULmN1cnJlbnRWaWV3LCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QuY3VycmVudFZpZXc9R30sInNldCIpfSxtZXRhZGF0YTpEfSxkMSx1MSksT2EobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6RH0sbnVsbCx0KSxwMT1hPWUudmFsdWUsRCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpEfSl9c3RhdGljIGRlbW89SDNhO3N0YXRpYyBkZW1vR3JvdXBzPVsiQXBwIFVJIl07dmlld0xpZmVjeWNsZSQ9bmV3IHV0LnNtYXJ0cngucnhqcy5TdWJqZWN0O3ZpZXdDaGFuZ2VkJD1uZXcgdXQuc21hcnRyeC5yeGpzLlN1YmplY3Q7I2U9enQodGhpcyxvLFtdKTtnZXQgYXBwYmFyTWVudUl0ZW1zKCl7cmV0dXJuIHRoaXMuI2V9c2V0IGFwcGJhck1lbnVJdGVtcyhEKXt0aGlzLiNlPUR9I3Q9KHp0KHRoaXMsbCksenQodGhpcyxkLCIiKSk7Z2V0IGFwcGJhckJyZWFkY3J1bWJzKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGFwcGJhckJyZWFkY3J1bWJzKEQpe3RoaXMuI3Q9RH0jYT0oenQodGhpcyx1KSx6dCh0aGlzLGIsIiA+ICIpKTtnZXQgYXBwYmFyQnJlYWRjcnVtYlNlcGFyYXRvcigpe3JldHVybiB0aGlzLiNhfXNldCBhcHBiYXJCcmVhZGNydW1iU2VwYXJhdG9yKEQpe3RoaXMuI2E9RH0jcz0oenQodGhpcyx2KSx6dCh0aGlzLG0sITApKTtnZXQgYXBwYmFyU2hvd1dpbmRvd0NvbnRyb2xzKCl7cmV0dXJuIHRoaXMuI3N9c2V0IGFwcGJhclNob3dXaW5kb3dDb250cm9scyhEKXt0aGlzLiNzPUR9I2k9KHp0KHRoaXMsZiksenQodGhpcyxNLHZvaWQgMCkpO2dldCBhcHBiYXJVc2VyKCl7cmV0dXJuIHRoaXMuI2l9c2V0IGFwcGJhclVzZXIoRCl7dGhpcy4jaT1EfSNyPSh6dCh0aGlzLHopLHp0KHRoaXMsQyxbXSkpO2dldCBhcHBiYXJQcm9maWxlTWVudUl0ZW1zKCl7cmV0dXJuIHRoaXMuI3J9c2V0IGFwcGJhclByb2ZpbGVNZW51SXRlbXMoRCl7dGhpcy4jcj1EfSNvPSh6dCh0aGlzLF8pLHp0KHRoaXMsJCwhMSkpO2dldCBhcHBiYXJTaG93U2VhcmNoKCl7cmV0dXJuIHRoaXMuI299c2V0IGFwcGJhclNob3dTZWFyY2goRCl7dGhpcy4jbz1EfSNuPSh6dCh0aGlzLEUpLHp0KHRoaXMsaywiIikpO2dldCBtYWlubWVudUxvZ29JY29uKCl7cmV0dXJuIHRoaXMuI259c2V0IG1haW5tZW51TG9nb0ljb24oRCl7dGhpcy4jbj1EfSNsPSh6dCh0aGlzLFMpLHp0KHRoaXMsUCwiIikpO2dldCBtYWlubWVudUxvZ29UZXh0KCl7cmV0dXJuIHRoaXMuI2x9c2V0IG1haW5tZW51TG9nb1RleHQoRCl7dGhpcy4jbD1EfSNjPSh6dCh0aGlzLFIpLHp0KHRoaXMsVixbXSkpO2dldCBtYWlubWVudUdyb3Vwcygpe3JldHVybiB0aGlzLiNjfXNldCBtYWlubWVudUdyb3VwcyhEKXt0aGlzLiNjPUR9I2Q9KHp0KHRoaXMsVyksenQodGhpcyxCLFtdKSk7Z2V0IG1haW5tZW51Qm90dG9tVGFicygpe3JldHVybiB0aGlzLiNkfXNldCBtYWlubWVudUJvdHRvbVRhYnMoRCl7dGhpcy4jZD1EfSN1PSh6dCh0aGlzLFUpLHp0KHRoaXMsRixbXSkpO2dldCBtYWlubWVudVRhYnMoKXtyZXR1cm4gdGhpcy4jdX1zZXQgbWFpbm1lbnVUYWJzKEQpe3RoaXMuI3U9RH0jcD0oenQodGhpcyxqKSx6dCh0aGlzLGxlLHZvaWQgMCkpO2dldCBtYWlubWVudVNlbGVjdGVkVGFiKCl7cmV0dXJuIHRoaXMuI3B9c2V0IG1haW5tZW51U2VsZWN0ZWRUYWIoRCl7dGhpcy4jcD1EfSNoPSh6dCh0aGlzLFEpLHp0KHRoaXMsdGUsIiIpKTtnZXQgc2Vjb25kYXJ5bWVudUhlYWRpbmcoKXtyZXR1cm4gdGhpcy4jaH1zZXQgc2Vjb25kYXJ5bWVudUhlYWRpbmcoRCl7dGhpcy4jaD1EfSNmPSh6dCh0aGlzLGVlKSx6dCh0aGlzLFgsW10pKTtnZXQgc2Vjb25kYXJ5bWVudUdyb3Vwcygpe3JldHVybiB0aGlzLiNmfXNldCBzZWNvbmRhcnltZW51R3JvdXBzKEQpe3RoaXMuI2Y9RH0jbT0oenQodGhpcyxaKSx6dCh0aGlzLHEsdm9pZCAwKSk7Z2V0IHNlY29uZGFyeW1lbnVTZWxlY3RlZEl0ZW0oKXtyZXR1cm4gdGhpcy4jbX1zZXQgc2Vjb25kYXJ5bWVudVNlbGVjdGVkSXRlbShEKXt0aGlzLiNtPUR9I2c9KHp0KHRoaXMsQSksenQodGhpcyxvZSwhMSkpO2dldCBtYWlubWVudUNvbGxhcHNlZCgpe3JldHVybiB0aGlzLiNnfXNldCBtYWlubWVudUNvbGxhcHNlZChEKXt0aGlzLiNnPUR9I2I9KHp0KHRoaXMsYWUpLHp0KHRoaXMsUmUsITEpKTtnZXQgc2Vjb25kYXJ5bWVudUNvbGxhcHNlZCgpe3JldHVybiB0aGlzLiNifXNldCBzZWNvbmRhcnltZW51Q29sbGFwc2VkKEQpe3RoaXMuI2I9RH0jdj0oenQodGhpcyxCZSksenQodGhpcyxEZSwhMCkpO2dldCBtYWlubWVudVZpc2libGUoKXtyZXR1cm4gdGhpcy4jdn1zZXQgbWFpbm1lbnVWaXNpYmxlKEQpe3RoaXMuI3Y9RH0jeD0oenQodGhpcyxfZSksenQodGhpcyx2ZSwhMCkpO2dldCBzZWNvbmRhcnltZW51VmlzaWJsZSgpe3JldHVybiB0aGlzLiN4fXNldCBzZWNvbmRhcnltZW51VmlzaWJsZShEKXt0aGlzLiN4PUR9I3k9KHp0KHRoaXMsYmUpLHp0KHRoaXMsamUsITApKTtnZXQgbWFpbmNvbnRlbnRUYWJzVmlzaWJsZSgpe3JldHVybiB0aGlzLiN5fXNldCBtYWluY29udGVudFRhYnNWaXNpYmxlKEQpe3RoaXMuI3k9RH0jdz0oenQodGhpcyxXZSksenQodGhpcyxNZSwhMSkpO2dldCBjb250ZW50VGFic0F1dG9IaWRlKCl7cmV0dXJuIHRoaXMuI3d9c2V0IGNvbnRlbnRUYWJzQXV0b0hpZGUoRCl7dGhpcy4jdz1EfSNrPSh6dCh0aGlzLGdlKSx6dCh0aGlzLGNlLDApKTtnZXQgY29udGVudFRhYnNBdXRvSGlkZVRocmVzaG9sZCgpe3JldHVybiB0aGlzLiNrfXNldCBjb250ZW50VGFic0F1dG9IaWRlVGhyZXNob2xkKEQpe3RoaXMuI2s9RH0jUz0oenQodGhpcyxkZSksenQodGhpcyxLZSwhMSkpO2dldCBhY3Rpdml0eUxvZ1Zpc2libGUoKXtyZXR1cm4gdGhpcy4jU31zZXQgYWN0aXZpdHlMb2dWaXNpYmxlKEQpe3RoaXMuI1M9RH0jXz0oenQodGhpcyxZZSksenQodGhpcyxVdCwwKSk7Z2V0IGFjdGl2aXR5TG9nQ291bnQoKXtyZXR1cm4gdGhpcy4jX31zZXQgYWN0aXZpdHlMb2dDb3VudChEKXt0aGlzLiNfPUR9I009KHp0KHRoaXMsWnQpLHp0KHRoaXMsZXQsW10pKTtnZXQgbWFpbmNvbnRlbnRUYWJzKCl7cmV0dXJuIHRoaXMuI019c2V0IG1haW5jb250ZW50VGFicyhEKXt0aGlzLiNNPUR9I3o9KHp0KHRoaXMsYnQpLHp0KHRoaXMsZXMsdm9pZCAwKSk7Z2V0IG1haW5jb250ZW50U2VsZWN0ZWRUYWIoKXtyZXR1cm4gdGhpcy4jen1zZXQgbWFpbmNvbnRlbnRTZWxlY3RlZFRhYihEKXt0aGlzLiN6PUR9I0M9KHp0KHRoaXMscnMpLHp0KHRoaXMsbnMsW10pKTtnZXQgY29udGVudFRhYkFjdGlvbnNMZWZ0KCl7cmV0dXJuIHRoaXMuI0N9c2V0IGNvbnRlbnRUYWJBY3Rpb25zTGVmdChEKXt0aGlzLiNDPUR9I1Q9KHp0KHRoaXMsdGkpLHp0KHRoaXMsemUsW10pKTtnZXQgY29udGVudFRhYkFjdGlvbnNSaWdodCgpe3JldHVybiB0aGlzLiNUfXNldCBjb250ZW50VGFiQWN0aW9uc1JpZ2h0KEQpe3RoaXMuI1Q9RH0jJD0oenQodGhpcyx4ZSksenQodGhpcyx4dCx2b2lkIDApKTtnZXQgYXBwYmFyKCl7cmV0dXJuIHRoaXMuIyR9c2V0IGFwcGJhcihEKXt0aGlzLiMkPUR9I0Q9KHp0KHRoaXMsTWEpLHp0KHRoaXMsZmUsdm9pZCAwKSk7Z2V0IG1haW5tZW51KCl7cmV0dXJuIHRoaXMuI0R9c2V0IG1haW5tZW51KEQpe3RoaXMuI0Q9RH0jTD0oenQodGhpcyxyZSksenQodGhpcyxPZSx2b2lkIDApKTtnZXQgc2Vjb25kYXJ5bWVudSgpe3JldHVybiB0aGlzLiNMfXNldCBzZWNvbmRhcnltZW51KEQpe3RoaXMuI0w9RH0jRT0oenQodGhpcyxKZSksenQodGhpcyxkYSx2b2lkIDApKTtnZXQgbWFpbmNvbnRlbnQoKXtyZXR1cm4gdGhpcy4jRX1zZXQgbWFpbmNvbnRlbnQoRCl7dGhpcy4jRT1EfSNQPSh6dCh0aGlzLHdzKSx6dCh0aGlzLEppLHZvaWQgMCkpO2dldCBhY3Rpdml0eWxvZ0VsZW1lbnQoKXtyZXR1cm4gdGhpcy4jUH1zZXQgYWN0aXZpdHlsb2dFbGVtZW50KEQpe3RoaXMuI1A9RH0jST0oenQodGhpcyxSciksenQodGhpcyx2bix2b2lkIDApKTtnZXQgYm90dG9tYmFyRWxlbWVudCgpe3JldHVybiB0aGlzLiNJfXNldCBib3R0b21iYXJFbGVtZW50KEQpe3RoaXMuI0k9RH0jQT0oenQodGhpcyxyMSksenQodGhpcyxuMSwhMCkpO2dldCBib3R0b21iYXJWaXNpYmxlKCl7cmV0dXJuIHRoaXMuI0F9c2V0IGJvdHRvbWJhclZpc2libGUoRCl7dGhpcy4jQT1EfSNOPSh6dCh0aGlzLGwxKSx6dCh0aGlzLGQxLHZvaWQgMCkpO2dldCBjdXJyZW50Vmlldygpe3JldHVybiB0aGlzLiNOfXNldCBjdXJyZW50VmlldyhEKXt0aGlzLiNOPUR9dmlld1JlZ2lzdHJ5PSh6dCh0aGlzLHUxKSxuZXcgcVgpO3JvdXRlckNsZWFudXA9bnVsbDtzZWFyY2hDYWxsYmFjaz1udWxsO3N0YXRpYyBzdHlsZXM9W0hlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXRlcnRpYXJ5KTsKICAgICAgfQogICAgICAubWFpbmdyaWQgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDQwcHg7CiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA0MHB4IC0gMjRweCk7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAvKiBncmlkLXRlbXBsYXRlLWNvbHVtbnMgc2V0IGR5bmFtaWNhbGx5IGluIHRlbXBsYXRlICovCiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAxZnI7CiAgICAgICAgdHJhbnNpdGlvbjogZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIDAuM3MgZWFzZSwgaGVpZ2h0IDAuM3MgZWFzZTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICA6aG9zdChbYm90dG9tYmFyLWhpZGRlbl0pIC5tYWluZ3JpZCB7CiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA0MHB4KTsKICAgICAgfQoKICAgICAgZGVlcy1hcHB1aS1ib3R0b21iYXIgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICB6LWluZGV4OiA0OwogICAgICB9CgogICAgICAvKiBaLWluZGV4IGxheWVyaW5nIGZvciBwcm9wZXIgc3RhY2tpbmcgKi8KICAgICAgLm1haW5ncmlkID4gZGVlcy1hcHB1aS1tYWlubWVudSB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHotaW5kZXg6IDM7CiAgICAgICAgbWluLWhlaWdodDogMDsKICAgICAgfQoKICAgICAgLm1haW5ncmlkID4gZGVlcy1hcHB1aS1zZWNvbmRhcnltZW51IHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgei1pbmRleDogMjsKICAgICAgICBtaW4taGVpZ2h0OiAwOwogICAgICB9CgogICAgICAubWFpbmdyaWQgPiBkZWVzLWFwcHVpLW1haW5jb250ZW50IHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgei1pbmRleDogMTsKICAgICAgICBtaW4taGVpZ2h0OiAwOwogICAgICB9CgogICAgICAubWFpbmdyaWQgPiBkZWVzLWFwcHVpLWFjdGl2aXR5bG9nIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgei1pbmRleDogMTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlLCB0cmFuc2Zvcm0gMC4zcyBlYXNlOwogICAgICB9CgogICAgICAubWFpbmdyaWQgPiBkZWVzLWFwcHVpLWFjdGl2aXR5bG9nLmhpZGRlbiB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjBweCk7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5tYWluZ3JpZCA+IGRlZXMtYXBwdWktYWN0aXZpdHlsb2cudmlzaWJsZSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAgIH0KCiAgICAgIC8qIFZpZXcgY29udGFpbmVyIGZvciBkeW5hbWljYWxseSBsb2FkZWQgdmlld3MgKi8KICAgICAgLnZpZXctY29udGFpbmVyIHsKICAgICAgICBkaXNwbGF5OiBjb250ZW50czsKICAgICAgfQoKICAgICAgLnZpZXctY29udGFpbmVyOmVtcHR5IHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRlZXMtYXBwdWktYXBwYmFyCiAgICAgICAgLm1lbnVJdGVtcz0ke3RoaXMuYXBwYmFyTWVudUl0ZW1zfQogICAgICAgIC5icmVhZGNydW1icz0ke3RoaXMuYXBwYmFyQnJlYWRjcnVtYnN9CiAgICAgICAgLmJyZWFkY3J1bWJTZXBhcmF0b3I9JHt0aGlzLmFwcGJhckJyZWFkY3J1bWJTZXBhcmF0b3J9CiAgICAgICAgLnNob3dXaW5kb3dDb250cm9scz0ke3RoaXMuYXBwYmFyU2hvd1dpbmRvd0NvbnRyb2xzfQogICAgICAgIC51c2VyPSR7dGhpcy5hcHBiYXJVc2VyfQogICAgICAgIC5wcm9maWxlTWVudUl0ZW1zPSR7dGhpcy5hcHBiYXJQcm9maWxlTWVudUl0ZW1zfQogICAgICAgIC5zaG93U2VhcmNoPSR7dGhpcy5hcHBiYXJTaG93U2VhcmNofQogICAgICAgIC5zaG93QWN0aXZpdHlMb2dUb2dnbGU9JHshMH0KICAgICAgICAuYWN0aXZpdHlMb2dDb3VudD0ke3RoaXMuYWN0aXZpdHlMb2dDb3VudH0KICAgICAgICAuYWN0aXZpdHlMb2dBY3RpdmU9JHt0aGlzLmFjdGl2aXR5TG9nVmlzaWJsZX0KICAgICAgICBAbWVudS1zZWxlY3Q9JHtEPT50aGlzLmhhbmRsZUFwcGJhck1lbnVTZWxlY3QoRCl9CiAgICAgICAgQGJyZWFkY3J1bWItbmF2aWdhdGU9JHtEPT50aGlzLmhhbmRsZUFwcGJhckJyZWFkY3J1bWJOYXZpZ2F0ZShEKX0KICAgICAgICBAc2VhcmNoLWNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlQXBwYmFyU2VhcmNoQ2xpY2soKX0KICAgICAgICBAc2VhcmNoLXF1ZXJ5PSR7RD0+dGhpcy5oYW5kbGVBcHBiYXJTZWFyY2hRdWVyeShEKX0KICAgICAgICBAdXNlci1tZW51LW9wZW49JHsoKT0+dGhpcy5oYW5kbGVBcHBiYXJVc2VyTWVudU9wZW4oKX0KICAgICAgICBAcHJvZmlsZS1tZW51LXNlbGVjdD0ke0Q9PnRoaXMuaGFuZGxlQXBwYmFyUHJvZmlsZU1lbnVTZWxlY3QoRCl9CiAgICAgICAgQGFjdGl2aXR5LXRvZ2dsZT0keygpPT50aGlzLnRvZ2dsZUFjdGl2aXR5TG9nKCl9CiAgICAgID48L2RlZXMtYXBwdWktYXBwYmFyPgogICAgICA8ZGl2IGNsYXNzPSJtYWluZ3JpZCIgc3R5bGU9ImdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBhdXRvIDFmciAke3RoaXMuYWN0aXZpdHlMb2dWaXNpYmxlPyIyODBweCI6IjBweCJ9OyI+CiAgICAgICAgJHt0aGlzLm1haW5tZW51VmlzaWJsZT93YAogICAgICAgICAgPGRlZXMtYXBwdWktbWFpbm1lbnUKICAgICAgICAgICAgLmxvZ29JY29uPSR7dGhpcy5tYWlubWVudUxvZ29JY29ufQogICAgICAgICAgICAubG9nb1RleHQ9JHt0aGlzLm1haW5tZW51TG9nb1RleHR9CiAgICAgICAgICAgIC5tZW51R3JvdXBzPSR7dGhpcy5tYWlubWVudUdyb3Vwc30KICAgICAgICAgICAgLmJvdHRvbVRhYnM9JHt0aGlzLm1haW5tZW51Qm90dG9tVGFic30KICAgICAgICAgICAgLnRhYnM9JHt0aGlzLm1haW5tZW51VGFic30KICAgICAgICAgICAgLnNlbGVjdGVkVGFiPSR7dGhpcy5tYWlubWVudVNlbGVjdGVkVGFifQogICAgICAgICAgICAuY29sbGFwc2VkPSR7dGhpcy5tYWlubWVudUNvbGxhcHNlZH0KICAgICAgICAgICAgQHRhYi1zZWxlY3Q9JHtEPT50aGlzLmhhbmRsZU1haW5tZW51VGFiU2VsZWN0KEQpfQogICAgICAgICAgICBAY29sbGFwc2UtY2hhbmdlPSR7RD0+dGhpcy5oYW5kbGVNYWlubWVudUNvbGxhcHNlQ2hhbmdlKEQpfQogICAgICAgICAgPjwvZGVlcy1hcHB1aS1tYWlubWVudT4KICAgICAgICBgOiIifQogICAgICAgICR7dGhpcy5zZWNvbmRhcnltZW51VmlzaWJsZT93YAogICAgICAgICAgPGRlZXMtYXBwdWktc2Vjb25kYXJ5bWVudQogICAgICAgICAgICAuaGVhZGluZz0ke3RoaXMuc2Vjb25kYXJ5bWVudUhlYWRpbmd9CiAgICAgICAgICAgIC5ncm91cHM9JHt0aGlzLnNlY29uZGFyeW1lbnVHcm91cHN9CiAgICAgICAgICAgIC5zZWxlY3RlZEl0ZW09JHt0aGlzLnNlY29uZGFyeW1lbnVTZWxlY3RlZEl0ZW19CiAgICAgICAgICAgIC5jb2xsYXBzZWQ9JHt0aGlzLnNlY29uZGFyeW1lbnVDb2xsYXBzZWR9CiAgICAgICAgICAgIEBpdGVtLXNlbGVjdD0ke0Q9PnRoaXMuaGFuZGxlU2Vjb25kYXJ5bWVudUl0ZW1TZWxlY3QoRCl9CiAgICAgICAgICAgIEBjb2xsYXBzZS1jaGFuZ2U9JHtEPT50aGlzLmhhbmRsZVNlY29uZGFyeW1lbnVDb2xsYXBzZUNoYW5nZShEKX0KICAgICAgICAgID48L2RlZXMtYXBwdWktc2Vjb25kYXJ5bWVudT4KICAgICAgICBgOiIifQogICAgICAgIDxkZWVzLWFwcHVpLW1haW5jb250ZW50CiAgICAgICAgICAudGFicz0ke3RoaXMubWFpbmNvbnRlbnRUYWJzfQogICAgICAgICAgLnNlbGVjdGVkVGFiPSR7dGhpcy5tYWluY29udGVudFNlbGVjdGVkVGFifQogICAgICAgICAgLnNob3dUYWJzPSR7dGhpcy5tYWluY29udGVudFRhYnNWaXNpYmxlfQogICAgICAgICAgLnRhYnNBdXRvSGlkZT0ke3RoaXMuY29udGVudFRhYnNBdXRvSGlkZX0KICAgICAgICAgIC50YWJzQXV0b0hpZGVUaHJlc2hvbGQ9JHt0aGlzLmNvbnRlbnRUYWJzQXV0b0hpZGVUaHJlc2hvbGR9CiAgICAgICAgICAudGFiQWN0aW9uc0xlZnQ9JHt0aGlzLmNvbnRlbnRUYWJBY3Rpb25zTGVmdH0KICAgICAgICAgIC50YWJBY3Rpb25zUmlnaHQ9JHt0aGlzLmNvbnRlbnRUYWJBY3Rpb25zUmlnaHR9CiAgICAgICAgICBAdGFiLXNlbGVjdD0ke0Q9PnRoaXMuaGFuZGxlQ29udGVudFRhYlNlbGVjdChEKX0KICAgICAgICAgIEB0YWItY2xvc2U9JHtEPT50aGlzLmhhbmRsZUNvbnRlbnRUYWJDbG9zZShEKX0KICAgICAgICA+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ2aWV3LWNvbnRhaW5lciI+PC9kaXY+CiAgICAgICAgICA8c2xvdCBuYW1lPSJtYWluY29udGVudCI+PC9zbG90PgogICAgICAgIDwvZGVlcy1hcHB1aS1tYWluY29udGVudD4KICAgICAgICA8ZGVlcy1hcHB1aS1hY3Rpdml0eWxvZwogICAgICAgICAgY2xhc3M9IiR7dGhpcy5hY3Rpdml0eUxvZ1Zpc2libGU/InZpc2libGUiOiJoaWRkZW4ifSIKICAgICAgICA+PC9kZWVzLWFwcHVpLWFjdGl2aXR5bG9nPgogICAgICA8L2Rpdj4KICAgICAgJHt0aGlzLmJvdHRvbWJhclZpc2libGU/d2AKICAgICAgICA8ZGVlcy1hcHB1aS1ib3R0b21iYXI+PC9kZWVzLWFwcHVpLWJvdHRvbWJhcj4KICAgICAgYDoiIn0KICAgIGB9YXN5bmMgZmlyc3RVcGRhdGVkKCl7dGhpcy5hcHBiYXI9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoImRlZXMtYXBwdWktYXBwYmFyIiksdGhpcy5tYWlubWVudT10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiZGVlcy1hcHB1aS1tYWlubWVudSIpLHRoaXMuc2Vjb25kYXJ5bWVudT10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiZGVlcy1hcHB1aS1zZWNvbmRhcnltZW51IiksdGhpcy5tYWluY29udGVudD10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiZGVlcy1hcHB1aS1tYWluY29udGVudCIpLHRoaXMuYWN0aXZpdHlsb2dFbGVtZW50PXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCJkZWVzLWFwcHVpLWFjdGl2aXR5bG9nIiksdGhpcy5ib3R0b21iYXJFbGVtZW50PXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCJkZWVzLWFwcHVpLWJvdHRvbWJhciIpLHRoaXMuYWN0aXZpdHlsb2dFbGVtZW50JiZ0aGlzLmFjdGl2aXR5bG9nRWxlbWVudC5lbnRyaWVzJC5zdWJzY3JpYmUoRD0+e3RoaXMuYWN0aXZpdHlMb2dDb3VudD1ELmxlbmd0aH0pLHRoaXMudmlld1JlZ2lzdHJ5LnNldEFwcHVpUmVmKHRoaXMpfWFzeW5jIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLnJvdXRlckNsZWFudXAmJih0aGlzLnJvdXRlckNsZWFudXAoKSx0aGlzLnJvdXRlckNsZWFudXA9bnVsbCksdGhpcy52aWV3TGlmZWN5Y2xlJC5jb21wbGV0ZSgpLHRoaXMudmlld0NoYW5nZWQkLmNvbXBsZXRlKCl9c2V0QXBwQmFyTWVudXMoRCl7dGhpcy5hcHBiYXJNZW51SXRlbXM9Wy4uLkRdfXVwZGF0ZUFwcEJhck1lbnUoRCxUKXt0aGlzLmFwcGJhck1lbnVJdGVtcz10aGlzLmFwcGJhck1lbnVJdGVtcy5tYXAoRz0+Im5hbWUiaW4gRyYmRy5uYW1lPT09RD97Li4uRywuLi5UfTpHKX1zZXRCcmVhZGNydW1icyhEKXtBcnJheS5pc0FycmF5KEQpP3RoaXMuYXBwYmFyQnJlYWRjcnVtYnM9RC5qb2luKHRoaXMuYXBwYmFyQnJlYWRjcnVtYlNlcGFyYXRvcik6dGhpcy5hcHBiYXJCcmVhZGNydW1icz1EfXNldFVzZXIoRCl7dGhpcy5hcHBiYXJVc2VyPUR9c2V0UHJvZmlsZU1lbnVJdGVtcyhEKXt0aGlzLmFwcGJhclByb2ZpbGVNZW51SXRlbXM9Wy4uLkRdfXNldFNlYXJjaFZpc2libGUoRCl7dGhpcy5hcHBiYXJTaG93U2VhcmNoPUR9c2V0V2luZG93Q29udHJvbHNWaXNpYmxlKEQpe3RoaXMuYXBwYmFyU2hvd1dpbmRvd0NvbnRyb2xzPUR9b25TZWFyY2goRCl7dGhpcy5zZWFyY2hDYWxsYmFjaz1EfXNldE1haW5NZW51KEQpe0QubG9nb0ljb24hPT12b2lkIDAmJih0aGlzLm1haW5tZW51TG9nb0ljb249RC5sb2dvSWNvbiksRC5sb2dvVGV4dCE9PXZvaWQgMCYmKHRoaXMubWFpbm1lbnVMb2dvVGV4dD1ELmxvZ29UZXh0KSxELmdyb3VwcyE9PXZvaWQgMCYmKHRoaXMubWFpbm1lbnVHcm91cHM9Wy4uLkQuZ3JvdXBzXSksRC5ib3R0b21UYWJzIT09dm9pZCAwJiYodGhpcy5tYWlubWVudUJvdHRvbVRhYnM9Wy4uLkQuYm90dG9tVGFic10pfXVwZGF0ZU1haW5NZW51R3JvdXAoRCxUKXt0aGlzLm1haW5tZW51R3JvdXBzPXRoaXMubWFpbm1lbnVHcm91cHMubWFwKEc9PkcubmFtZT09PUQ/ey4uLkcsLi4uVH06Ryl9YWRkTWFpbk1lbnVJdGVtKEQsVCl7dGhpcy5tYWlubWVudUdyb3Vwcz10aGlzLm1haW5tZW51R3JvdXBzLm1hcChHPT5HLm5hbWU9PT1EP3suLi5HLGl0ZW1zOlsuLi5HLml0ZW1zfHxbXSxUXX06Ryl9cmVtb3ZlTWFpbk1lbnVJdGVtKEQsVCl7dGhpcy5tYWlubWVudUdyb3Vwcz10aGlzLm1haW5tZW51R3JvdXBzLm1hcChHPT5HLm5hbWU9PT1EP3suLi5HLGl0ZW1zOihHLml0ZW1zfHxbXSkuZmlsdGVyKCRlPT4kZS5rZXkhPT1UKX06Ryl9c2V0TWFpbk1lbnVTZWxlY3Rpb24oRCl7Zm9yKGxldCBHIG9mIHRoaXMubWFpbm1lbnVHcm91cHMpe2xldCAkZT1HLml0ZW1zPy5maW5kKFBlPT5QZS5rZXk9PT1EKTtpZigkZSl7dGhpcy5tYWlubWVudVNlbGVjdGVkVGFiPSRlO3JldHVybn19bGV0IFQ9dGhpcy5tYWlubWVudUJvdHRvbVRhYnMuZmluZChHPT5HLmtleT09PUQpO1QmJih0aGlzLm1haW5tZW51U2VsZWN0ZWRUYWI9VCl9c2V0TWFpbk1lbnVDb2xsYXBzZWQoRCl7dGhpcy5tYWlubWVudUNvbGxhcHNlZD1EfXNldE1haW5NZW51VmlzaWJsZShEKXt0aGlzLm1haW5tZW51VmlzaWJsZT1EfXNldFNlY29uZGFyeU1lbnVDb2xsYXBzZWQoRCl7dGhpcy5zZWNvbmRhcnltZW51Q29sbGFwc2VkPUR9c2V0U2Vjb25kYXJ5TWVudVZpc2libGUoRCl7dGhpcy5zZWNvbmRhcnltZW51VmlzaWJsZT1EfXNldENvbnRlbnRUYWJzVmlzaWJsZShEKXt0aGlzLm1haW5jb250ZW50VGFic1Zpc2libGU9RH1zZXRDb250ZW50VGFic0F1dG9IaWRlKEQsVD0wKXt0aGlzLmNvbnRlbnRUYWJzQXV0b0hpZGU9RCx0aGlzLmNvbnRlbnRUYWJzQXV0b0hpZGVUaHJlc2hvbGQ9VH1zZXRNYWluTWVudUJhZGdlKEQsVCl7dGhpcy5tYWlubWVudUdyb3Vwcz10aGlzLm1haW5tZW51R3JvdXBzLm1hcChHPT4oey4uLkcsaXRlbXM6KEcuaXRlbXN8fFtdKS5tYXAoJGU9PiRlLmtleT09PUQ/ey4uLiRlLGJhZGdlOlR9OiRlKX0pKSx0aGlzLm1haW5tZW51Qm90dG9tVGFicz10aGlzLm1haW5tZW51Qm90dG9tVGFicy5tYXAoRz0+Ry5rZXk9PT1EP3suLi5HLGJhZGdlOlR9OkcpfWNsZWFyTWFpbk1lbnVCYWRnZShEKXt0aGlzLm1haW5tZW51R3JvdXBzPXRoaXMubWFpbm1lbnVHcm91cHMubWFwKFQ9Pih7Li4uVCxpdGVtczooVC5pdGVtc3x8W10pLm1hcChHPT57aWYoRy5rZXk9PT1EKXtsZXR7YmFkZ2U6JGUsLi4uUGV9PUc7cmV0dXJuIFBlfXJldHVybiBHfSl9KSksdGhpcy5tYWlubWVudUJvdHRvbVRhYnM9dGhpcy5tYWlubWVudUJvdHRvbVRhYnMubWFwKFQ9PntpZihULmtleT09PUQpe2xldHtiYWRnZTpHLC4uLiRlfT1UO3JldHVybiAkZX1yZXR1cm4gVH0pfXNldFNlY29uZGFyeU1lbnUoRCl7RC5oZWFkaW5nIT09dm9pZCAwJiYodGhpcy5zZWNvbmRhcnltZW51SGVhZGluZz1ELmhlYWRpbmcpLHRoaXMuc2Vjb25kYXJ5bWVudUdyb3Vwcz1bLi4uRC5ncm91cHNdfXVwZGF0ZVNlY29uZGFyeU1lbnVHcm91cChELFQpe3RoaXMuc2Vjb25kYXJ5bWVudUdyb3Vwcz10aGlzLnNlY29uZGFyeW1lbnVHcm91cHMubWFwKEc9PkcubmFtZT09PUQ/ey4uLkcsLi4uVH06Ryl9YWRkU2Vjb25kYXJ5TWVudUl0ZW0oRCxUKXt0aGlzLnNlY29uZGFyeW1lbnVHcm91cHM9dGhpcy5zZWNvbmRhcnltZW51R3JvdXBzLm1hcChHPT5HLm5hbWU9PT1EP3suLi5HLGl0ZW1zOlsuLi5HLml0ZW1zLFRdfTpHKX1zZXRTZWNvbmRhcnlNZW51U2VsZWN0aW9uKEQpe2ZvcihsZXQgVCBvZiB0aGlzLnNlY29uZGFyeW1lbnVHcm91cHMpe2xldCBHPVQuaXRlbXMuZmluZCgkZT0+ImtleSJpbiAkZSYmJGUua2V5PT09RCk7aWYoRyYmKCEoInR5cGUiaW4gRyl8fEcudHlwZT09PSJ0YWIifHxHLnR5cGU9PT12b2lkIDApKXt0aGlzLnNlY29uZGFyeW1lbnVTZWxlY3RlZEl0ZW09RztyZXR1cm59fX1jbGVhclNlY29uZGFyeU1lbnUoKXt0aGlzLnNlY29uZGFyeW1lbnVIZWFkaW5nPSIiLHRoaXMuc2Vjb25kYXJ5bWVudUdyb3Vwcz1bXSx0aGlzLnNlY29uZGFyeW1lbnVTZWxlY3RlZEl0ZW09dm9pZCAwfXNldENvbnRlbnRUYWJzKEQpe3RoaXMubWFpbmNvbnRlbnRUYWJzPVsuLi5EXSxELmxlbmd0aD4wJiYhdGhpcy5tYWluY29udGVudFNlbGVjdGVkVGFiJiYodGhpcy5tYWluY29udGVudFNlbGVjdGVkVGFiPURbMF0pfWFkZENvbnRlbnRUYWIoRCl7dGhpcy5tYWluY29udGVudFRhYnM9Wy4uLnRoaXMubWFpbmNvbnRlbnRUYWJzLERdfXJlbW92ZUNvbnRlbnRUYWIoRCl7dGhpcy5tYWluY29udGVudFRhYnM9dGhpcy5tYWluY29udGVudFRhYnMuZmlsdGVyKFQ9PlQua2V5IT09RCksdGhpcy5tYWluY29udGVudFNlbGVjdGVkVGFiPy5rZXk9PT1EJiYodGhpcy5tYWluY29udGVudFNlbGVjdGVkVGFiPXRoaXMubWFpbmNvbnRlbnRUYWJzWzBdKX1zZWxlY3RDb250ZW50VGFiKEQpe2xldCBUPXRoaXMubWFpbmNvbnRlbnRUYWJzLmZpbmQoRz0+Ry5rZXk9PT1EKTtUJiYodGhpcy5tYWluY29udGVudFNlbGVjdGVkVGFiPVQpfWdldFNlbGVjdGVkQ29udGVudFRhYigpe3JldHVybiB0aGlzLm1haW5jb250ZW50U2VsZWN0ZWRUYWJ9c2V0Q29udGVudFRhYkFjdGlvbnNMZWZ0KEQpe3RoaXMuY29udGVudFRhYkFjdGlvbnNMZWZ0PVsuLi5EXX1zZXRDb250ZW50VGFiQWN0aW9uc1JpZ2h0KEQpe3RoaXMuY29udGVudFRhYkFjdGlvbnNSaWdodD1bLi4uRF19Z2V0IGFjdGl2aXR5TG9nKCl7cmV0dXJuIHRoaXMuYWN0aXZpdHlsb2dFbGVtZW50P3thZGQ6aShEPT50aGlzLmFjdGl2aXR5bG9nRWxlbWVudC5hZGQoRCksImFkZCIpLGFkZE1hbnk6aShEPT50aGlzLmFjdGl2aXR5bG9nRWxlbWVudC5hZGRNYW55KEQpLCJhZGRNYW55IiksY2xlYXI6aSgoKT0+dGhpcy5hY3Rpdml0eWxvZ0VsZW1lbnQuY2xlYXIoKSwiY2xlYXIiKSxnZXRFbnRyaWVzOmkoKCk9PnRoaXMuYWN0aXZpdHlsb2dFbGVtZW50LmdldEVudHJpZXMoKSwiZ2V0RW50cmllcyIpLGZpbHRlcjppKEQ9PnRoaXMuYWN0aXZpdHlsb2dFbGVtZW50LmZpbHRlcihEKSwiZmlsdGVyIiksc2VhcmNoOmkoRD0+dGhpcy5hY3Rpdml0eWxvZ0VsZW1lbnQuc2VhcmNoKEQpLCJzZWFyY2giKX06e2FkZDppKEQ9Pnt0aGlzLnVwZGF0ZUNvbXBsZXRlLnRoZW4oKCk9PnRoaXMuYWN0aXZpdHlsb2dFbGVtZW50Py5hZGQoRCkpfSwiYWRkIiksYWRkTWFueTppKEQ9Pnt0aGlzLnVwZGF0ZUNvbXBsZXRlLnRoZW4oKCk9PnRoaXMuYWN0aXZpdHlsb2dFbGVtZW50Py5hZGRNYW55KEQpKX0sImFkZE1hbnkiKSxjbGVhcjppKCgpPT57dGhpcy51cGRhdGVDb21wbGV0ZS50aGVuKCgpPT50aGlzLmFjdGl2aXR5bG9nRWxlbWVudD8uY2xlYXIoKSl9LCJjbGVhciIpLGdldEVudHJpZXM6aSgoKT0+dGhpcy5hY3Rpdml0eWxvZ0VsZW1lbnQ/LmdldEVudHJpZXMoKXx8W10sImdldEVudHJpZXMiKSxmaWx0ZXI6aShEPT50aGlzLmFjdGl2aXR5bG9nRWxlbWVudD8uZmlsdGVyKEQpfHxbXSwiZmlsdGVyIiksc2VhcmNoOmkoRD0+dGhpcy5hY3Rpdml0eWxvZ0VsZW1lbnQ/LnNlYXJjaChEKXx8W10sInNlYXJjaCIpfX1zZXRBY3Rpdml0eUxvZ1Zpc2libGUoRCl7dGhpcy5hY3Rpdml0eUxvZ1Zpc2libGU9RH10b2dnbGVBY3Rpdml0eUxvZygpe3RoaXMuYWN0aXZpdHlMb2dWaXNpYmxlPSF0aGlzLmFjdGl2aXR5TG9nVmlzaWJsZX1nZXRBY3Rpdml0eUxvZ1Zpc2libGUoKXtyZXR1cm4gdGhpcy5hY3Rpdml0eUxvZ1Zpc2libGV9Z2V0IGJvdHRvbUJhcigpe3JldHVybiB0aGlzLmJvdHRvbWJhckVsZW1lbnQ/e2FkZFdpZGdldDppKEQ9PnRoaXMuYm90dG9tYmFyRWxlbWVudC5hZGRXaWRnZXQoRCksImFkZFdpZGdldCIpLHVwZGF0ZVdpZGdldDppKChELFQpPT50aGlzLmJvdHRvbWJhckVsZW1lbnQudXBkYXRlV2lkZ2V0KEQsVCksInVwZGF0ZVdpZGdldCIpLHJlbW92ZVdpZGdldDppKEQ9PnRoaXMuYm90dG9tYmFyRWxlbWVudC5yZW1vdmVXaWRnZXQoRCksInJlbW92ZVdpZGdldCIpLGdldFdpZGdldDppKEQ9PnRoaXMuYm90dG9tYmFyRWxlbWVudC5nZXRXaWRnZXQoRCksImdldFdpZGdldCIpLGNsZWFyV2lkZ2V0czppKCgpPT50aGlzLmJvdHRvbWJhckVsZW1lbnQuY2xlYXJXaWRnZXRzKCksImNsZWFyV2lkZ2V0cyIpLGFkZEFjdGlvbjppKEQ9PnRoaXMuYm90dG9tYmFyRWxlbWVudC5hZGRBY3Rpb24oRCksImFkZEFjdGlvbiIpLHJlbW92ZUFjdGlvbjppKEQ9PnRoaXMuYm90dG9tYmFyRWxlbWVudC5yZW1vdmVBY3Rpb24oRCksInJlbW92ZUFjdGlvbiIpLGNsZWFyQWN0aW9uczppKCgpPT50aGlzLmJvdHRvbWJhckVsZW1lbnQuY2xlYXJBY3Rpb25zKCksImNsZWFyQWN0aW9ucyIpfTp7YWRkV2lkZ2V0OmkoRD0+e3RoaXMudXBkYXRlQ29tcGxldGUudGhlbigoKT0+dGhpcy5ib3R0b21iYXJFbGVtZW50Py5hZGRXaWRnZXQoRCkpfSwiYWRkV2lkZ2V0IiksdXBkYXRlV2lkZ2V0OmkoKEQsVCk9Pnt0aGlzLnVwZGF0ZUNvbXBsZXRlLnRoZW4oKCk9PnRoaXMuYm90dG9tYmFyRWxlbWVudD8udXBkYXRlV2lkZ2V0KEQsVCkpfSwidXBkYXRlV2lkZ2V0IikscmVtb3ZlV2lkZ2V0OmkoRD0+e3RoaXMudXBkYXRlQ29tcGxldGUudGhlbigoKT0+dGhpcy5ib3R0b21iYXJFbGVtZW50Py5yZW1vdmVXaWRnZXQoRCkpfSwicmVtb3ZlV2lkZ2V0IiksZ2V0V2lkZ2V0OmkoRD0+dGhpcy5ib3R0b21iYXJFbGVtZW50Py5nZXRXaWRnZXQoRCksImdldFdpZGdldCIpLGNsZWFyV2lkZ2V0czppKCgpPT57dGhpcy51cGRhdGVDb21wbGV0ZS50aGVuKCgpPT50aGlzLmJvdHRvbWJhckVsZW1lbnQ/LmNsZWFyV2lkZ2V0cygpKX0sImNsZWFyV2lkZ2V0cyIpLGFkZEFjdGlvbjppKEQ9Pnt0aGlzLnVwZGF0ZUNvbXBsZXRlLnRoZW4oKCk9PnRoaXMuYm90dG9tYmFyRWxlbWVudD8uYWRkQWN0aW9uKEQpKX0sImFkZEFjdGlvbiIpLHJlbW92ZUFjdGlvbjppKEQ9Pnt0aGlzLnVwZGF0ZUNvbXBsZXRlLnRoZW4oKCk9PnRoaXMuYm90dG9tYmFyRWxlbWVudD8ucmVtb3ZlQWN0aW9uKEQpKX0sInJlbW92ZUFjdGlvbiIpLGNsZWFyQWN0aW9uczppKCgpPT57dGhpcy51cGRhdGVDb21wbGV0ZS50aGVuKCgpPT50aGlzLmJvdHRvbWJhckVsZW1lbnQ/LmNsZWFyQWN0aW9ucygpKX0sImNsZWFyQWN0aW9ucyIpfX1zZXRCb3R0b21CYXJWaXNpYmxlKEQpe3RoaXMuYm90dG9tYmFyVmlzaWJsZT1ELEQ/dGhpcy5yZW1vdmVBdHRyaWJ1dGUoImJvdHRvbWJhci1oaWRkZW4iKTp0aGlzLnNldEF0dHJpYnV0ZSgiYm90dG9tYmFyLWhpZGRlbiIsIiIpfWdldEJvdHRvbUJhclZpc2libGUoKXtyZXR1cm4gdGhpcy5ib3R0b21iYXJWaXNpYmxlfWFzeW5jIG5hdmlnYXRlVG9WaWV3KEQsVCl7bGV0IEc9dGhpcy52aWV3UmVnaXN0cnkuZ2V0KEQpO2lmKCFHKXJldHVybiBjb25zb2xlLndhcm4oYENhbm5vdCBuYXZpZ2F0ZSB0byB1bmtub3duIHZpZXc6ICR7RH1gKSwhMTtsZXQgJGU9YXdhaXQgdGhpcy52aWV3UmVnaXN0cnkuY2FuTGVhdmVDdXJyZW50VmlldygpO2lmKCRlIT09ITApaWYodHlwZW9mICRlPT0ic3RyaW5nIil7aWYoIXdpbmRvdy5jb25maXJtKCRlKSlyZXR1cm4hMX1lbHNlIHJldHVybiExO3RoaXMudmlld0xpZmVjeWNsZSQubmV4dCh7dHlwZToibG9hZGluZyIsdmlld0lkOkR9KTt0cnl7YXdhaXQgdGhpcy5sb2FkVmlldyhHLFQpO2xldCBQZT1HLnJvdXRlfHxEO2lmKFQpZm9yKGxldFtWZSxVZV1vZiBPYmplY3QuZW50cmllcyhUKSlQZT1QZS5yZXBsYWNlKGA6JHtWZX1gLFVlKTtsZXQgRmU9YCMke1BlfWA7cmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5oYXNoIT09RmUmJndpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSh7dmlld0lkOkR9LCIiLEZlKSwhMH1jYXRjaChQZSl7cmV0dXJuIHRoaXMudmlld0xpZmVjeWNsZSQubmV4dCh7dHlwZToibG9hZEVycm9yIix2aWV3SWQ6RCxlcnJvcjpQZX0pLCExfX1nZXRDdXJyZW50Vmlldygpe3JldHVybiB0aGlzLmN1cnJlbnRWaWV3fWdldFZpZXdSZWdpc3RyeSgpe3JldHVybiB0aGlzLnZpZXdSZWdpc3RyeX1jb25maWd1cmUoRCl7RC52aWV3cyYmKHRoaXMudmlld1JlZ2lzdHJ5LmNsZWFyKCksdGhpcy52aWV3UmVnaXN0cnkucmVnaXN0ZXJBbGwoRC52aWV3cykpLEQuYnJhbmRpbmcmJih0aGlzLm1haW5tZW51TG9nb0ljb249RC5icmFuZGluZy5sb2dvSWNvbnx8IiIsdGhpcy5tYWlubWVudUxvZ29UZXh0PUQuYnJhbmRpbmcubG9nb1RleHR8fCIiKSxELmFwcEJhciYmKHRoaXMuYXBwYmFyTWVudUl0ZW1zPUQuYXBwQmFyLm1lbnVJdGVtc3x8W10sdGhpcy5hcHBiYXJCcmVhZGNydW1icz1ELmFwcEJhci5icmVhZGNydW1ic3x8IiIsdGhpcy5hcHBiYXJCcmVhZGNydW1iU2VwYXJhdG9yPUQuYXBwQmFyLmJyZWFkY3J1bWJTZXBhcmF0b3J8fCIgPiAiLHRoaXMuYXBwYmFyU2hvd1dpbmRvd0NvbnRyb2xzPUQuYXBwQmFyLnNob3dXaW5kb3dDb250cm9scz8/ITAsdGhpcy5hcHBiYXJTaG93U2VhcmNoPUQuYXBwQmFyLnNob3dTZWFyY2g/PyExLHRoaXMuYXBwYmFyVXNlcj1ELmFwcEJhci51c2VyLHRoaXMuYXBwYmFyUHJvZmlsZU1lbnVJdGVtcz1ELmFwcEJhci5wcm9maWxlTWVudUl0ZW1zfHxbXSksRC5tYWluTWVudSYmKEQubWFpbk1lbnUuc2VjdGlvbnM/dGhpcy5tYWlubWVudUdyb3Vwcz10aGlzLmJ1aWxkTWFpbk1lbnVGcm9tU2VjdGlvbnMoRCk6RC5tYWluTWVudS5ncm91cHMmJih0aGlzLm1haW5tZW51R3JvdXBzPUQubWFpbk1lbnUuZ3JvdXBzKSxELm1haW5NZW51LmxvZ29JY29uJiYodGhpcy5tYWlubWVudUxvZ29JY29uPUQubWFpbk1lbnUubG9nb0ljb24pLEQubWFpbk1lbnUubG9nb1RleHQmJih0aGlzLm1haW5tZW51TG9nb1RleHQ9RC5tYWluTWVudS5sb2dvVGV4dCksRC5tYWluTWVudS5ib3R0b21UYWJzP3RoaXMubWFpbm1lbnVCb3R0b21UYWJzPUQubWFpbk1lbnUuYm90dG9tVGFiczpELm1haW5NZW51LmJvdHRvbUl0ZW1zJiYodGhpcy5tYWlubWVudUJvdHRvbVRhYnM9dGhpcy5idWlsZEJvdHRvbVRhYnNGcm9tSXRlbXMoRC5tYWluTWVudS5ib3R0b21JdGVtcykpKSxELmJvdHRvbUJhciYmKHRoaXMuc2V0Qm90dG9tQmFyVmlzaWJsZShELmJvdHRvbUJhci52aXNpYmxlPz8hMCksRC5ib3R0b21CYXIud2lkZ2V0cyYmRC5ib3R0b21CYXIud2lkZ2V0cy5mb3JFYWNoKFQ9Pnt0aGlzLmJvdHRvbUJhci5hZGRXaWRnZXQoVCl9KSxELmJvdHRvbUJhci5hY3Rpb25zJiZELmJvdHRvbUJhci5hY3Rpb25zLmZvckVhY2goVD0+e3RoaXMuYm90dG9tQmFyLmFkZEFjdGlvbihUKX0pKSx0aGlzLnNldHVwUm91dGVySW50ZWdyYXRpb24oRCksRC5vblZpZXdDaGFuZ2UmJnRoaXMudmlld0NoYW5nZWQkLnN1YnNjcmliZShUPT57RC5vblZpZXdDaGFuZ2UoVC52aWV3SWQsVC52aWV3KX0pLEQub25TZWFyY2gmJih0aGlzLnNlYXJjaENhbGxiYWNrPUQub25TZWFyY2gpLEQuZGVmYXVsdFZpZXcmJnRoaXMubmF2aWdhdGVUb1ZpZXcoRC5kZWZhdWx0Vmlldyl9c2V0dXBSb3V0ZXJJbnRlZ3JhdGlvbihEKXtsZXQgVD1pKCgpPT57bGV0ICRlPXdpbmRvdy5sb2NhdGlvbi5oYXNoLnNsaWNlKDEpO2lmKCEkZSlyZXR1cm47bGV0IFBlPXRoaXMudmlld1JlZ2lzdHJ5LmZpbmRCeVJvdXRlKCRlKTtQZSYmdGhpcy5uYXZpZ2F0ZVRvVmlldyhQZS52aWV3LmlkLFBlLnBhcmFtcyl9LCJoYW5kbGVIYXNoQ2hhbmdlIik7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImhhc2hjaGFuZ2UiLFQpLHRoaXMucm91dGVyQ2xlYW51cD0oKT0+e3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJoYXNoY2hhbmdlIixUKX07bGV0IEc9d2luZG93LmxvY2F0aW9uLmhhc2guc2xpY2UoMSk7aWYoRyl7bGV0ICRlPXRoaXMudmlld1JlZ2lzdHJ5LmZpbmRCeVJvdXRlKEcpOyRlJiZzZXRUaW1lb3V0KCgpPT50aGlzLm5hdmlnYXRlVG9WaWV3KCRlLnZpZXcuaWQsJGUucGFyYW1zKSwwKX19YnVpbGRNYWluTWVudUZyb21TZWN0aW9ucyhEKXtyZXR1cm4gRC5tYWluTWVudT8uc2VjdGlvbnM/RC5tYWluTWVudS5zZWN0aW9ucy5tYXAoVD0+KHtuYW1lOlQubmFtZXx8IiIsaXRlbXM6VC52aWV3cy5tYXAoRz0+e2xldCAkZT10aGlzLnZpZXdSZWdpc3RyeS5nZXQoRyk7cmV0dXJuICRlP3trZXk6JGUuaWQsaWNvbk5hbWU6JGUuaWNvbk5hbWUsYWN0aW9uOmkoKCk9PnRoaXMubmF2aWdhdGVUb1ZpZXcoRyksImFjdGlvbiIpLGJhZGdlOiRlLmJhZGdlfTooY29uc29sZS53YXJuKGBWaWV3ICIke0d9IiBub3QgZm91bmQgaW4gcmVnaXN0cnlgKSxudWxsKX0pLmZpbHRlcihCb29sZWFuKX0pKTpbXX1idWlsZEJvdHRvbVRhYnNGcm9tSXRlbXMoRCl7cmV0dXJuIEQubWFwKFQ9PntsZXQgRz10aGlzLnZpZXdSZWdpc3RyeS5nZXQoVCk7cmV0dXJuIEc/e2tleTpHLmlkLGljb25OYW1lOkcuaWNvbk5hbWUsYWN0aW9uOmkoKCk9PnRoaXMubmF2aWdhdGVUb1ZpZXcoVCksImFjdGlvbiIpfTooY29uc29sZS53YXJuKGBWaWV3ICIke1R9IiBub3QgZm91bmQgaW4gcmVnaXN0cnlgKSxudWxsKX0pLmZpbHRlcihCb29sZWFuKX1hc3luYyBsb2FkVmlldyhELFQpe2xldCBHPXRoaXMuY3VycmVudFZpZXc7dGhpcy5jdXJyZW50Vmlldz1EO2xldCAkZT10aGlzLm1haW5jb250ZW50Py5xdWVyeVNlbGVjdG9yKCIudmlldy1jb250YWluZXIiKXx8dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIudmlldy1jb250YWluZXIiKTtpZigkZSl7bGV0IEZlPWF3YWl0IHRoaXMudmlld1JlZ2lzdHJ5LmFjdGl2YXRlVmlldyhELmlkLCRlLFQpO0ZlJiZ0aGlzLnZpZXdMaWZlY3ljbGUkLm5leHQoe3R5cGU6ImFjdGl2YXRlZCIsdmlld0lkOkQuaWQsZWxlbWVudDpGZSxwYXJhbXM6VH0pfUQuc2Vjb25kYXJ5TWVudSYmKHRoaXMuc2Vjb25kYXJ5bWVudUdyb3Vwcz1ELnNlY29uZGFyeU1lbnUsdGhpcy5zZWNvbmRhcnltZW51SGVhZGluZz1ELm5hbWUpLEQuY29udGVudFRhYnMmJih0aGlzLm1haW5jb250ZW50VGFicz1ELmNvbnRlbnRUYWJzKSx0aGlzLnNldE1haW5NZW51U2VsZWN0aW9uKEQuaWQpO2xldCBQZT17dmlld0lkOkQuaWQsdmlldzpELHByZXZpb3VzVmlldzpHLHBhcmFtczpUfTt0aGlzLnZpZXdDaGFuZ2VkJC5uZXh0KFBlKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJ2aWV3LWNoYW5nZSIse2RldGFpbDpQZSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZUFwcGJhck1lbnVTZWxlY3QoRCl7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiYXBwYmFyLW1lbnUtc2VsZWN0Iix7ZGV0YWlsOkQuZGV0YWlsLGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9aGFuZGxlQXBwYmFyQnJlYWRjcnVtYk5hdmlnYXRlKEQpe3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImFwcGJhci1icmVhZGNydW1iLW5hdmlnYXRlIix7ZGV0YWlsOkQuZGV0YWlsLGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9aGFuZGxlQXBwYmFyU2VhcmNoQ2xpY2soKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJhcHBiYXItc2VhcmNoLWNsaWNrIix7YnViYmxlczohMCxjb21wb3NlZDohMH0pKX1oYW5kbGVBcHBiYXJTZWFyY2hRdWVyeShEKXt0aGlzLnNlYXJjaENhbGxiYWNrJiZ0aGlzLnNlYXJjaENhbGxiYWNrKEQuZGV0YWlsLnF1ZXJ5KSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJzZWFyY2gtcXVlcnkiLHtkZXRhaWw6RC5kZXRhaWwsYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1oYW5kbGVBcHBiYXJVc2VyTWVudU9wZW4oKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJhcHBiYXItdXNlci1tZW51LW9wZW4iLHtidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZUFwcGJhclByb2ZpbGVNZW51U2VsZWN0KEQpe3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImFwcGJhci1wcm9maWxlLW1lbnUtc2VsZWN0Iix7ZGV0YWlsOkQuZGV0YWlsLGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9aGFuZGxlTWFpbm1lbnVUYWJTZWxlY3QoRCl7dGhpcy5tYWlubWVudVNlbGVjdGVkVGFiPUQuZGV0YWlsLnRhYix0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJtYWlubWVudS10YWItc2VsZWN0Iix7ZGV0YWlsOkQuZGV0YWlsLGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9aGFuZGxlU2Vjb25kYXJ5bWVudUl0ZW1TZWxlY3QoRCl7dGhpcy5zZWNvbmRhcnltZW51U2VsZWN0ZWRJdGVtPUQuZGV0YWlsLml0ZW0sdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgic2Vjb25kYXJ5bWVudS1pdGVtLXNlbGVjdCIse2RldGFpbDpELmRldGFpbCxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZU1haW5tZW51Q29sbGFwc2VDaGFuZ2UoRCl7dGhpcy5tYWlubWVudUNvbGxhcHNlZD1ELmRldGFpbC5jb2xsYXBzZWQsdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgibWFpbm1lbnUtY29sbGFwc2UtY2hhbmdlIix7ZGV0YWlsOkQuZGV0YWlsLGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9aGFuZGxlU2Vjb25kYXJ5bWVudUNvbGxhcHNlQ2hhbmdlKEQpe3RoaXMuc2Vjb25kYXJ5bWVudUNvbGxhcHNlZD1ELmRldGFpbC5jb2xsYXBzZWQsdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgic2Vjb25kYXJ5bWVudS1jb2xsYXBzZS1jaGFuZ2UiLHtkZXRhaWw6RC5kZXRhaWwsYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1oYW5kbGVDb250ZW50VGFiU2VsZWN0KEQpe3RoaXMubWFpbmNvbnRlbnRTZWxlY3RlZFRhYj1ELmRldGFpbC50YWIsdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY29udGVudC10YWItc2VsZWN0Iix7ZGV0YWlsOkQuZGV0YWlsLGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9aGFuZGxlQ29udGVudFRhYkNsb3NlKEQpe3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNvbnRlbnQtdGFiLWNsb3NlIix7ZGV0YWlsOkQuZGV0YWlsLGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9c3RhdGlje3p0KGEsdCl9fTtyZXR1cm4gcDE9YX0pKCl9KTt2YXIgdGZhPWcoKCk9PntlZmEoKTtfaXQoKX0pO3ZhciBhZmE9ZygoKT0+e1RpdCgpfSk7dmFyIHNmYT1nKCgpPT57TWl0KCl9KTt2YXIgaWZhPWcoKCk9Pnt6aXQoKX0pO3ZhciByZmE9ZygoKT0+eyRldCgpfSk7dmFyIG9mYT1nKCgpPT57Q2l0KCl9KTt2YXIgSmNlLGJnLG5mYSxsZmE9ZygoKT0+e3BvKCk7em4oKTtDcigpO3BlKCk7RjEoKTtVYSgpO3B0KCk7SmNlPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxiZz1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sbmZhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1tb2JpbGVuYXZpZ2F0aW9uIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W107dmFyIHg9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNNb2JpbGVuYXZpZ2F0aW9uIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IG09dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpTdHJpbmd9KV0scD1bTCh7dHlwZTpBcnJheX0pXSxjPVtZKCldLEpjZSh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImhlYWRpbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+ImhlYWRpbmciaW4gZiwiaGFzIiksZ2V0OmkoZj0+Zi5oZWFkaW5nLCJnZXQiKSxzZXQ6aSgoZix5KT0+e2YuaGVhZGluZz15fSwic2V0Iil9LG1ldGFkYXRhOm19LG8sbCksSmNlKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWVudUl0ZW1zIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGY9PiJtZW51SXRlbXMiaW4gZiwiaGFzIiksZ2V0OmkoZj0+Zi5tZW51SXRlbXMsImdldCIpLHNldDppKChmLHkpPT57Zi5tZW51SXRlbXM9eX0sInNldCIpfSxtZXRhZGF0YTptfSxkLHUpLEpjZSh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1vYmlsZU5hdlpJbmRleCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShmPT4ibW9iaWxlTmF2WkluZGV4ImluIGYsImhhcyIpLGdldDppKGY9PmYubW9iaWxlTmF2WkluZGV4LCJnZXQiKSxzZXQ6aSgoZix5KT0+e2YubW9iaWxlTmF2WkluZGV4PXl9LCJzZXQiKX0sbWV0YWRhdGE6bX0sYix2KSxKY2UobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6bX0sbnVsbCx0KSx4PWE9ZS52YWx1ZSxtJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm19KX1zdGF0aWMgZGVtb0dyb3Vwcz1bIkFwcCBVSSJdO3N0YXRpYyBkZW1vPWkoKCk9PndgCiAgICA8ZGVlcy1idXR0b24gQGNsaWNrPSR7KCk9Pnt4LmNyZWF0ZUFuZFNob3coW3tuYW1lOiJEYXNoYm9hcmQiLGljb25OYW1lOiJsdWNpZGU6bGF5b3V0LWRhc2hib2FyZCIsYWN0aW9uOmkoYXN5bmMgbT0+KGNvbnNvbGUubG9nKCJOYXZpZ2F0ZSB0byBkYXNoYm9hcmQiKSxudWxsKSwiYWN0aW9uIil9LHtuYW1lOiJQcm9maWxlIixpY29uTmFtZToibHVjaWRlOnVzZXIiLGFjdGlvbjppKGFzeW5jIG09Pihjb25zb2xlLmxvZygiTmF2aWdhdGUgdG8gcHJvZmlsZSIpLG51bGwpLCJhY3Rpb24iKX0se25hbWU6IlNldHRpbmdzIixpY29uTmFtZToibHVjaWRlOnNldHRpbmdzIixhY3Rpb246aShhc3luYyBtPT4oY29uc29sZS5sb2coIk5hdmlnYXRlIHRvIHNldHRpbmdzIiksbnVsbCksImFjdGlvbiIpfSx7ZGl2aWRlcjohMH0se25hbWU6IkhlbHAiLGljb25OYW1lOiJsdWNpZGU6aGVscC1jaXJjbGUiLGFjdGlvbjppKGFzeW5jIG09Pihjb25zb2xlLmxvZygiU2hvdyBoZWxwIiksbnVsbCksImFjdGlvbiIpfSx7bmFtZToiU2lnbiBPdXQiLGljb25OYW1lOiJsdWNpZGU6bG9nLW91dCIsYWN0aW9uOmkoYXN5bmMgbT0+KGNvbnNvbGUubG9nKCJTaWduIG91dCIpLG51bGwpLCJhY3Rpb24iKX1dKX19Pk9wZW4gTW9iaWxlIE5hdmlnYXRpb248L2RlZXMtYnV0dG9uPgogIGAsImRlbW8iKTtzdGF0aWMgc2luZ2xldG9uUmVmO3N0YXRpYyBhc3luYyBjcmVhdGVBbmRTaG93KG0pe3JldHVybiB0aGlzLnNpbmdsZXRvblJlZnx8KHRoaXMuc2luZ2xldG9uUmVmPW5ldyB4LGRvY3VtZW50LmJvZHkuYXBwZW5kKHRoaXMuc2luZ2xldG9uUmVmKSxhd2FpdCB0aGlzLnNpbmdsZXRvblJlZi5pbml0KCkpLHRoaXMuc2luZ2xldG9uUmVmLm1lbnVJdGVtcz1tLGF3YWl0IHRoaXMuc2luZ2xldG9uUmVmLnJlYWR5RGVmZXJyZWQucHJvbWlzZSx0aGlzLnNpbmdsZXRvblJlZi5zaG93KCksdGhpcy5zaW5nbGV0b25SZWZ9I2U9YmcodGhpcyxvLCJNZW51Iik7Z2V0IGhlYWRpbmcoKXtyZXR1cm4gdGhpcy4jZX1zZXQgaGVhZGluZyhtKXt0aGlzLiNlPW19I3Q9KGJnKHRoaXMsbCksYmcodGhpcyxkLFtdKSk7Z2V0IG1lbnVJdGVtcygpe3JldHVybiB0aGlzLiN0fXNldCBtZW51SXRlbXMobSl7dGhpcy4jdD1tfSNhPShiZyh0aGlzLHUpLGJnKHRoaXMsYiwxZTMpKTtnZXQgbW9iaWxlTmF2WkluZGV4KCl7cmV0dXJuIHRoaXMuI2F9c2V0IG1vYmlsZU5hdlpJbmRleChtKXt0aGlzLiNhPW19cmVhZHlEZWZlcnJlZD0oYmcodGhpcyx2KSxsdC5wbHVnaW5zLnNtYXJ0cHJvbWlzZS5kZWZlcigpKTtjb25zdHJ1Y3Rvcigpe3N1cGVyKCl9YXN5bmMgaW5pdCgpe2F3YWl0IHRoaXMudXBkYXRlQ29tcGxldGUsdGhpcy5yZWFkeURlZmVycmVkLnJlc29sdmUoKX1zdGF0aWMgc3R5bGVzPVtIZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgLyogVE9ETzogTWlncmF0ZSBoYXJkY29kZWQgdmFsdWVzIHRvIC0tZGVlcy0qIENTUyB2YXJpYWJsZXMgKi8KICAgICAgOmhvc3QgewogICAgICAgIGZvbnQtZmFtaWx5OiAke05hfTsKICAgICAgfQoKICAgICAgLm1haW4gewogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CiAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgaGVpZ2h0OiAxMDB2aDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IDMyMHB4OwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTA5MGIiLCIjZmFmYWZhIil9OwogICAgICAgIHotaW5kZXg6IHZhcigtLXotaW5kZXgpOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgcmlnaHQ6IDBweDsKICAgICAgICB0b3A6IDBweDsKICAgICAgICBib3R0b206IDBweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMwOTA5MGIiKX07CiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMyNzI3MmEiKX07CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgYm94LXNoYWRvdzogJHtoLmJkVGhlbWUoIi0yMHB4IDAgMjVweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4xKSwgLTEwcHggMCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjA0KSIsIi0yMHB4IDAgMjVweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4zKSwgLTEwcHggMCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpIil9OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgfQoKICAgICAgLm1haW4uc2hvdyB7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IGFsbDsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMHB4KTsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CgogICAgICAuaGVhZGVyIHsKICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMyNzI3MmEiKX07CiAgICAgIH0KCiAgICAgIC5oZWFkaW5nIHsKICAgICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTA5MGIiLCIjZmFmYWZhIil9OwogICAgICAgIG1hcmdpbjogMDsKICAgICAgfQoKICAgICAgLm1lbnUtY29udGFpbmVyIHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgcGFkZGluZzogOHB4OwogICAgICB9CgogICAgICAubWVudUl0ZW0gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDJweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICB9CgogICAgICAubWVudUl0ZW06aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzI3MjcyYSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTA5MGIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAubWVudUl0ZW06YWN0aXZlIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMzZjNmNDYiKX07CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk4KTsKICAgICAgfQoKICAgICAgLm1lbnVJdGVtIGRlZXMtaWNvbiB7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiIzcxNzE3YSIpfTsKICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjE1cyBlYXNlOwogICAgICB9CgogICAgICAubWVudUl0ZW06aG92ZXIgZGVlcy1pY29uIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTA5MGIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAubWVudUl0ZW0tdGV4dCB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTsKICAgICAgfQoKICAgICAgLm1lbnVJdGVtLWRpdmlkZXIgewogICAgICAgIGhlaWdodDogMXB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzI3MjcyYSIpfTsKICAgICAgICBtYXJnaW46IDhweCAxNnB4OwogICAgICB9CgogICAgICAvKiBNb2JpbGUgcmVzcG9uc2l2ZW5lc3MgKi8KICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDQwMHB4KSB7CiAgICAgICAgLm1haW4gewogICAgICAgICAgbWF4LXdpZHRoOiAxMDB2dzsKICAgICAgICAgIHdpZHRoOiA4NXZ3OwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyogQW5pbWF0aW9uIGZvciBtZW51IGl0ZW1zICovCiAgICAgIEBrZXlmcmFtZXMgc2xpZGVJblJpZ2h0IHsKICAgICAgICBmcm9tIHsKICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjBweCk7CiAgICAgICAgfQogICAgICAgIHRvIHsKICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAgICAgfQogICAgICB9CgogICAgICAubWFpbi5zaG93IC5tZW51SXRlbSB7CiAgICAgICAgYW5pbWF0aW9uOiBzbGlkZUluUmlnaHQgMC4zcyBlYXNlLW91dCBmb3J3YXJkczsKICAgICAgICBhbmltYXRpb24tZGVsYXk6IGNhbGModmFyKC0taXRlbS1pbmRleCwgMCkgKiAwLjA1cyk7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgfQoKICAgICAgLyogU2Nyb2xsYmFyIHN0eWxpbmcgKi8KICAgICAgLm1lbnUtY29udGFpbmVyOjotd2Via2l0LXNjcm9sbGJhciB7CiAgICAgICAgd2lkdGg6IDZweDsKICAgICAgfQoKICAgICAgLm1lbnUtY29udGFpbmVyOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgIH0KCiAgICAgIC5tZW51LWNvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzNmM2Y0NiIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgIH0KCiAgICAgIC5tZW51LWNvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZDFkNWRiIiwiIzUyNTI1YiIpfTsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxzdHlsZT4KICAgICAgICAubWFpbiB7CiAgICAgICAgICAtLXotaW5kZXg6ICR7dGhpcy5tb2JpbGVOYXZaSW5kZXh9OwogICAgICAgIH0KICAgICAgPC9zdHlsZT4KICAgICAgPGRpdiBjbGFzcz0ibWFpbiI+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIj4KICAgICAgICAgIDxoMiBjbGFzcz0iaGVhZGluZyI+JHt0aGlzLmhlYWRpbmd9PC9oMj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtZW51LWNvbnRhaW5lciI+CiAgICAgICAgICAke3RoaXMubWVudUl0ZW1zLm1hcCgobSxmKT0+ImRpdmlkZXIiaW4gbSYmbS5kaXZpZGVyP3dgPGRpdiBjbGFzcz0ibWVudUl0ZW0tZGl2aWRlciI+PC9kaXY+YDp3YAogICAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSJtZW51SXRlbSIKICAgICAgICAgICAgICAgIHN0eWxlPSItLWl0ZW0taW5kZXg6ICR7Zn0iCiAgICAgICAgICAgICAgICBAY2xpY2s9IiR7KCk9Pnt0aGlzLmhpZGUoKSxtLmFjdGlvbih0aGlzKX19IgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICR7bS5pY29uTmFtZT93YAogICAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7bS5pY29uTmFtZX0gc2l6ZT0iMjAiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJtZW51SXRlbS10ZXh0Ij4ke20ubmFtZX08L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGApfQogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9d2luZG93TGF5ZXI7YXN5bmMgc2hvdygpe2xldCBtPWF3YWl0IHRoaXMuZG9tdG9vbHNQcm9taXNlLGY9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5tYWluIik7dGhpcy53aW5kb3dMYXllcj8oZG9jdW1lbnQuYm9keS5hcHBlbmQodGhpcy53aW5kb3dMYXllciksYXdhaXQgdGhpcy53aW5kb3dMYXllci5zaG93KCkpOih0aGlzLndpbmRvd0xheWVyPWF3YWl0IGhvLmNyZWF0ZUFuZFNob3coe2JsdXI6ITB9KSx0aGlzLndpbmRvd0xheWVyLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e3RoaXMuaGlkZSgpfSkpLHRoaXMubW9iaWxlTmF2WkluZGV4PXhhLmdldE5leHRaSW5kZXgoKSx4YS5yZWdpc3Rlcih0aGlzLHRoaXMubW9iaWxlTmF2WkluZGV4KSxhd2FpdCBtLmNvbnZlbmllbmNlLnNtYXJ0ZGVsYXkuZGVsYXlGb3IoMTApLGYuY2xhc3NMaXN0LmFkZCgic2hvdyIpfWFzeW5jIGhpZGUoKXtsZXQgbT1hd2FpdCB0aGlzLmRvbXRvb2xzUHJvbWlzZTt0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLm1haW4iKS5jbGFzc0xpc3QucmVtb3ZlKCJzaG93IikseGEudW5yZWdpc3Rlcih0aGlzKSx0aGlzLndpbmRvd0xheWVyJiZhd2FpdCB0aGlzLndpbmRvd0xheWVyLmRlc3Ryb3koKX1hc3luYyBkaXNjb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCkseGEudW5yZWdpc3Rlcih0aGlzKSx0aGlzLndpbmRvd0xheWVyJiZhd2FpdCB0aGlzLndpbmRvd0xheWVyLmRlc3Ryb3koKX1zdGF0aWN7YmcoYSx0KX19O3JldHVybiB4PWF9KSgpfSk7dmFyIGNmYT1nKCgpPT57bGZhKCl9KTt2YXIgZGZhPWcoKCk9PntpZGEoKTtEZXQoKTtTZGEoKTt0ZmEoKTthZmEoKTtzZmEoKTtpZmEoKTtyZmEoKTtvZmEoKTtjZmEoKX0pO3ZhciB1ZmE9ZygoKT0+e0Q4KCl9KTt2YXIgcGZhLCRpdCxoZmEsZmZhPWcoKCk9PntwZSgpO3BmYT1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sJGl0PWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxoZmE9KCgpPT57bGV0IHM9W25lKCJkZWVzLWJ1dHRvbi1leGl0IildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W107dmFyIHA9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNCdXR0b25FeGl0Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpOdW1iZXJ9KV0scGZhKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2l6ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh1PT4ic2l6ZSJpbiB1LCJoYXMiKSxnZXQ6aSh1PT51LnNpemUsImdldCIpLHNldDppKCh1LGMpPT57dS5zaXplPWN9LCJzZXQiKX0sbWV0YWRhdGE6ZH0sbyxsKSxwZmEobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6ZH0sbnVsbCx0KSxwPWE9ZS52YWx1ZSxkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmR9KX1zdGF0aWMgZGVtbz1pKCgpPT53YAogICAgPGRlZXMtYnV0dG9uLWV4aXQ+PC9kZWVzLWJ1dHRvbi1leGl0PgogIGAsImRlbW8iKTtzdGF0aWMgZGVtb0dyb3Vwcz1bIkJ1dHRvbiJdOyNlPSRpdCh0aGlzLG8sMjQpO2dldCBzaXplKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHNpemUoZCl7dGhpcy4jZT1kfXN0eWxlcz0oJGl0KHRoaXMsbCksW2guZGVmYXVsdFN0eWxlcyxKYAoKICAgIGBdKTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPHN0eWxlPgogICAgICAgIC5tYWluY29udGFpbmVyIHsKICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgIHdpZHRoOiAke3RoaXMuc2l6ZX1weDsKICAgICAgICAgIGhlaWdodDogJHt0aGlzLnNpemV9cHg7CiAgICAgICAgfQogICAgICA8L3N0eWxlPgogICAgICA8ZGl2IGNsYXNzPSJtYWluY29udGFpbmVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJmaXJzdExpbmUiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY29uZExpbmUiPjwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9c3RhdGljeyRpdChhLHQpfX07cmV0dXJuIHA9YX0pKCl9KTt2YXIgbWZhPWcoKCk9PntmZmEoKX0pO3ZhciBnZmEsYmZhPWcoKCk9PntwZSgpO2dmYT1pKCgpPT53YAogICAgPHN0eWxlPgogICAgICAke0pgCiAgICAgICAgLmRlbW9Cb3ggewogICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMDsKICAgICAgICAgIHBhZGRpbmc6IDQwcHg7CiAgICAgICAgICBtaW4taGVpZ2h0OiAxMDB2aDsKICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgfQoKICAgICAgICAuZGVtby1zZWN0aW9uIHsKICAgICAgICAgIG1hcmdpbi1ib3R0b206IDMycHg7CiAgICAgICAgfQoKICAgICAgICAuZGVtby10aXRsZSB7CiAgICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDsKICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICAgICAgZm9udC1mYW1pbHk6ICdHZWlzdCBTYW5zJywgc2Fucy1zZXJpZjsKICAgICAgICB9CgogICAgICAgIC5kZW1vLWRlc2NyaXB0aW9uIHsKICAgICAgICAgIGNvbG9yOiAjOTk5OwogICAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgICAgICAgIGZvbnQtZmFtaWx5OiAnR2Vpc3QgU2FucycsIHNhbnMtc2VyaWY7CiAgICAgICAgfQogICAgICBgfQogICAgPC9zdHlsZT4KICAgIDxkaXYgY2xhc3M9ImRlbW9Cb3giPgogICAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICAgIDxoMiBjbGFzcz0iZGVtby10aXRsZSI+QmFzaWMgQnV0dG9uIEdyb3VwczwvaDI+CiAgICAgICAgPHAgY2xhc3M9ImRlbW8tZGVzY3JpcHRpb24iPkJ1dHRvbiBncm91cHMgd2l0aG91dCBsYWJlbHMgZm9yIHNpbXBsZSBncm91cGluZzwvcD4KICAgICAgICAKICAgICAgICA8ZGVlcy1idXR0b24tZ3JvdXA+CiAgICAgICAgICA8ZGVlcy1idXR0b24+T3B0aW9uIDE8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uPk9wdGlvbiAyPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbj5PcHRpb24gMzwvZGVlcy1idXR0b24+CiAgICAgICAgPC9kZWVzLWJ1dHRvbi1ncm91cD4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICAgIDxoMiBjbGFzcz0iZGVtby10aXRsZSI+TGFiZWxlZCBCdXR0b24gR3JvdXBzPC9oMj4KICAgICAgICA8cCBjbGFzcz0iZGVtby1kZXNjcmlwdGlvbiI+QnV0dG9uIGdyb3VwcyB3aXRoIGRlc2NyaXB0aXZlIGxhYmVsczwvcD4KICAgICAgICAKICAgICAgICA8ZGVlcy1idXR0b24tZ3JvdXAgbGFiZWw9IlZpZXcgTW9kZToiPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9ImhpZ2hsaWdodGVkIj5HcmlkPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbj5MaXN0PC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbj5DYXJkczwvZGVlcy1idXR0b24+CiAgICAgICAgPC9kZWVzLWJ1dHRvbi1ncm91cD4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICAgIDxoMiBjbGFzcz0iZGVtby10aXRsZSI+TXVsdGlwbGUgR3JvdXBzPC9oMj4KICAgICAgICA8cCBjbGFzcz0iZGVtby1kZXNjcmlwdGlvbiI+TXVsdGlwbGUgYnV0dG9uIGdyb3VwcyB1c2VkIHRvZ2V0aGVyPC9wPgogICAgICAgIAogICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGdhcDogMTZweDsgZmxleC13cmFwOiB3cmFwOyI+CiAgICAgICAgICA8ZGVlcy1idXR0b24tZ3JvdXAgbGFiZWw9IkRhdGFzZXQ6Ij4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9ImhpZ2hsaWdodGVkIj5TeXN0ZW08L2RlZXMtYnV0dG9uPgogICAgICAgICAgICA8ZGVlcy1idXR0b24+TmV0d29yazwvZGVlcy1idXR0b24+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbj5TYWxlczwvZGVlcy1idXR0b24+CiAgICAgICAgICA8L2RlZXMtYnV0dG9uLWdyb3VwPgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1idXR0b24tZ3JvdXAgbGFiZWw9IlRpbWUgUmFuZ2U6Ij4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uPjFIPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9ImhpZ2hsaWdodGVkIj4yNEg8L2RlZXMtYnV0dG9uPgogICAgICAgICAgICA8ZGVlcy1idXR0b24+N0Q8L2RlZXMtYnV0dG9uPgogICAgICAgICAgICA8ZGVlcy1idXR0b24+MzBEPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDwvZGVlcy1idXR0b24tZ3JvdXA+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWJ1dHRvbi1ncm91cCBsYWJlbD0iQWN0aW9uczoiPgogICAgICAgICAgICA8ZGVlcy1idXR0b24+UmVmcmVzaDwvZGVlcy1idXR0b24+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbj5FeHBvcnQ8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPC9kZWVzLWJ1dHRvbi1ncm91cD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICAgIDxoMiBjbGFzcz0iZGVtby10aXRsZSI+VmVydGljYWwgQnV0dG9uIEdyb3VwczwvaDI+CiAgICAgICAgPHAgY2xhc3M9ImRlbW8tZGVzY3JpcHRpb24iPkJ1dHRvbiBncm91cHMgd2l0aCB2ZXJ0aWNhbCBsYXlvdXQ8L3A+CiAgICAgICAgCiAgICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTogZmxleDsgZ2FwOiAyNHB4OyI+CiAgICAgICAgICA8ZGVlcy1idXR0b24tZ3JvdXAgZGlyZWN0aW9uPSJ2ZXJ0aWNhbCIgbGFiZWw9Ik5hdmlnYXRpb246Ij4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uPkRhc2hib2FyZDwvZGVlcy1idXR0b24+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbiB0eXBlPSJoaWdobGlnaHRlZCI+QW5hbHl0aWNzPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uPlJlcG9ydHM8L2RlZXMtYnV0dG9uPgogICAgICAgICAgICA8ZGVlcy1idXR0b24+U2V0dGluZ3M8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPC9kZWVzLWJ1dHRvbi1ncm91cD4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtYnV0dG9uLWdyb3VwIGRpcmVjdGlvbj0idmVydGljYWwiPgogICAgICAgICAgICA8ZGVlcy1idXR0b24+QWRkIEl0ZW08L2RlZXMtYnV0dG9uPgogICAgICAgICAgICA8ZGVlcy1idXR0b24+RWRpdCBJdGVtPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uPkRlbGV0ZSBJdGVtPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDwvZGVlcy1idXR0b24tZ3JvdXA+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgICA8aDIgY2xhc3M9ImRlbW8tdGl0bGUiPk1peGVkIEJ1dHRvbiBUeXBlczwvaDI+CiAgICAgICAgPHAgY2xhc3M9ImRlbW8tZGVzY3JpcHRpb24iPkRpZmZlcmVudCBidXR0b24gdHlwZXMgd2l0aGluIGdyb3VwczwvcD4KICAgICAgICAKICAgICAgICA8ZGVlcy1idXR0b24tZ3JvdXAgbGFiZWw9IlN0YXR1czoiPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9InN1Y2Nlc3MiPkFjdGl2ZTwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24+UGVuZGluZzwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gdHlwZT0iZGFuZ2VyIj5JbmFjdGl2ZTwvZGVlcy1idXR0b24+CiAgICAgICAgPC9kZWVzLWJ1dHRvbi1ncm91cD4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICBgLCJkZW1vRnVuYyIpfSk7dmFyIERpdCxqWCx2ZmEseGZhPWcoKCk9PntwZSgpO2t0KCk7YmZhKCk7cHQoKTtEaXQ9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LGpYPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSx2ZmE9KCgpPT57bGV0IHM9W25lKCJkZWVzLWJ1dHRvbi1ncm91cCIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdO3ZhciBjPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzQnV0dG9uR3JvdXAiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgYj10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKCldLHA9W0woKV0sRGl0KHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibGFiZWwiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkodj0+ImxhYmVsImluIHYsImhhcyIpLGdldDppKHY9PnYubGFiZWwsImdldCIpLHNldDppKCh2LHgpPT57di5sYWJlbD14fSwic2V0Iil9LG1ldGFkYXRhOmJ9LG8sbCksRGl0KHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZGlyZWN0aW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHY9PiJkaXJlY3Rpb24iaW4gdiwiaGFzIiksZ2V0Omkodj0+di5kaXJlY3Rpb24sImdldCIpLHNldDppKCh2LHgpPT57di5kaXJlY3Rpb249eH0sInNldCIpfSxtZXRhZGF0YTpifSxkLHUpLERpdChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpifSxudWxsLHQpLGM9YT1lLnZhbHVlLGImJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pfXN0YXRpYyBkZW1vPWdmYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIkJ1dHRvbiJdOyNlPWpYKHRoaXMsbywiIik7Z2V0IGxhYmVsKCl7cmV0dXJuIHRoaXMuI2V9c2V0IGxhYmVsKGIpe3RoaXMuI2U9Yn0jdD0oalgodGhpcyxsKSxqWCh0aGlzLGQsImhvcml6b250YWwiKSk7Z2V0IGRpcmVjdGlvbigpe3JldHVybiB0aGlzLiN0fXNldCBkaXJlY3Rpb24oYil7dGhpcy4jdD1ifWNvbnN0cnVjdG9yKCl7c3VwZXIoKSxqWCh0aGlzLHUpLHRhLnNldHVwKCl9c3RhdGljIHN0eWxlcz1bSGUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIH0KCiAgICAgIC5idXR0b24tZ3JvdXAgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiA4cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wNSkiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgfQoKICAgICAgLmJ1dHRvbi1ncm91cC52ZXJ0aWNhbCB7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDsKICAgICAgfQoKICAgICAgLmxhYmVsIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM2NjYiLCIjOTk5Iil9OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LWZhbWlseTogJ0dlaXN0IFNhbnMnLCBzYW5zLXNlcmlmOwogICAgICAgIG1hcmdpbi1yaWdodDogOHB4OwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgIH0KCiAgICAgIC5idXR0b24tZ3JvdXAudmVydGljYWwgLmxhYmVsIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICB9CgogICAgICA6OnNsb3R0ZWQoKikgewogICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWdyb3VwICR7dGhpcy5kaXJlY3Rpb259Ij4KICAgICAgICAke3RoaXMubGFiZWw/d2A8c3BhbiBjbGFzcz0ibGFiZWwiPiR7dGhpcy5sYWJlbH08L3NwYW4+YDoiIn0KICAgICAgICA8c2xvdD48L3Nsb3Q+CiAgICAgIDwvZGl2PgogICAgYH1zdGF0aWN7algoYSx0KX19O3JldHVybiBjPWF9KSgpfSk7dmFyIHlmYT1nKCgpPT57eGZhKCl9KTt2YXIgd2ZhPWcoKCk9Pnt1ZmEoKTttZmEoKTt5ZmEoKX0pO3ZhciBrZmEsU2ZhPWcoKCk9PntwZSgpO0l0KCk7TGl0KCk7a2ZhPWkoKCk9PntsZXQgcz17c3lzdGVtOntsYWJlbDoiU3lzdGVtIFVzYWdlICglKSIsc2VyaWVzOlt7bmFtZToiQ1BVIixkYXRhOlt7eDpuZXcgRGF0ZShEYXRlLm5vdygpLTNlNSkudG9JU09TdHJpbmcoKSx5OjI1fSx7eDpuZXcgRGF0ZShEYXRlLm5vdygpLTI0ZTQpLnRvSVNPU3RyaW5nKCkseTozMH0se3g6bmV3IERhdGUoRGF0ZS5ub3coKS0xOGU0KS50b0lTT1N0cmluZygpLHk6Mjh9LHt4Om5ldyBEYXRlKERhdGUubm93KCktMTJlNCkudG9JU09TdHJpbmcoKSx5OjM1fSx7eDpuZXcgRGF0ZShEYXRlLm5vdygpLTZlNCkudG9JU09TdHJpbmcoKSx5OjMyfSx7eDpuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkseTozOH1dfSx7bmFtZToiTWVtb3J5IixkYXRhOlt7eDpuZXcgRGF0ZShEYXRlLm5vdygpLTNlNSkudG9JU09TdHJpbmcoKSx5OjQ1fSx7eDpuZXcgRGF0ZShEYXRlLm5vdygpLTI0ZTQpLnRvSVNPU3RyaW5nKCkseTo0OH0se3g6bmV3IERhdGUoRGF0ZS5ub3coKS0xOGU0KS50b0lTT1N0cmluZygpLHk6NDZ9LHt4Om5ldyBEYXRlKERhdGUubm93KCktMTJlNCkudG9JU09TdHJpbmcoKSx5OjUyfSx7eDpuZXcgRGF0ZShEYXRlLm5vdygpLTZlNCkudG9JU09TdHJpbmcoKSx5OjUwfSx7eDpuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkseTo1NX1dfV19fSxlPXtzeXN0ZW06aSh0PT5gJHt0fSVgLCJzeXN0ZW0iKX07cmV0dXJuIHdgCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyB0PT57bGV0IGE9dC5xdWVyeVNlbGVjdG9yKCIjbWFpbi1jaGFydCIpLHI9dC5xdWVyeVNlbGVjdG9yKCIjY29ubmVjdGlvbnMtY2hhcnQiKSxuLG8sbD0ic3lzdGVtIixwPXtzeXN0ZW06aShIPT5gJHtIfSVgLCJzeXN0ZW0iKSxuZXR3b3JrOmkoSD0+YCR7SH0gTWJwc2AsIm5ldHdvcmsiKSxzYWxlczppKEg9PmAkJHtILnRvTG9jYWxlU3RyaW5nKCl9YCwic2FsZXMiKX0sZD0xMjAqMWUzLHU9MWUzLGM9NWUzLGI9e2NwdTozMCxtZW1vcnk6NTAsZG93bmxvYWQ6MTUwLHVwbG9hZDozMCxjb25uZWN0aW9uczoxNTB9LHY9aSgoSCxrLFM9Yyk9PntsZXQgST1bXSxQPURhdGUubm93KCksUj1NYXRoLmZsb29yKGQvUyk7Zm9yKGxldCBLPVI7Sz49MDtLLS0pe2xldCBWPW5ldyBEYXRlKFAtSypTKS50b0lTT1N0cmluZygpLFc9SCsoTWF0aC5yYW5kb20oKS0uNSkqaztJLnB1c2goe3g6Vix5Ok1hdGgucm91bmQoVyl9KX1yZXR1cm4gSX0sImdlbmVyYXRlSW5pdGlhbERhdGEiKSx4PXtzeXN0ZW06e2xhYmVsOiJTeXN0ZW0gVXNhZ2UgKCUpIixzZXJpZXM6W3tuYW1lOiJDUFUiLGRhdGE6dihiLmNwdSwxMCl9LHtuYW1lOiJNZW1vcnkiLGRhdGE6dihiLm1lbW9yeSw4KX1dfSxuZXR3b3JrOntsYWJlbDoiTmV0d29yayBUcmFmZmljIChNYnBzKSIsc2VyaWVzOlt7bmFtZToiRG93bmxvYWQiLGRhdGE6dihiLmRvd25sb2FkLDMwKX0se25hbWU6IlVwbG9hZCIsZGF0YTp2KGIudXBsb2FkLDEwKX1dfSxzYWxlczp7bGFiZWw6IlNhbGVzIEFuYWx5dGljcyIsc2VyaWVzOlt7bmFtZToiUmV2ZW51ZSIsZGF0YTpbe3g6IjIwMjUtMDEtMDEiLHk6NDVlM30se3g6IjIwMjUtMDEtMDIiLHk6NTJlM30se3g6IjIwMjUtMDEtMDMiLHk6NDhlM30se3g6IjIwMjUtMDEtMDQiLHk6NjFlM30se3g6IjIwMjUtMDEtMDUiLHk6NThlM30se3g6IjIwMjUtMDEtMDYiLHk6NjVlM31dfSx7bmFtZToiUHJvZml0IixkYXRhOlt7eDoiMjAyNS0wMS0wMSIseToxMmUzfSx7eDoiMjAyNS0wMS0wMiIseToxNGUzfSx7eDoiMjAyNS0wMS0wMyIseToxMWUzfSx7eDoiMjAyNS0wMS0wNCIseToxOGUzfSx7eDoiMjAyNS0wMS0wNSIseToxNmUzfSx7eDoiMjAyNS0wMS0wNiIseToyZTR9XX1dfX0sbT1pKChILGssUyxJPTUpPT57bGV0IFA9KE1hdGgucmFuZG9tKCktLjUpKkkqMixSPUgrUCxWPSgoaytTKS8yLVIpKi4xO3JldHVybiBSKz1WLFI9TWF0aC5tYXgoayxNYXRoLm1pbihTLFIpKSxNYXRoLnJvdW5kKFIpfSwiZ2V0TmV4dFZhbHVlIiksZj1EYXRlLm5vdygpLHk9RGF0ZS5ub3coKSxNPWkoKCk9PntpZighYSlyZXR1cm47bGV0IEg9RGF0ZS5ub3coKTtpZihILWY+PWMpe2Y9SDtsZXQgUz1uZXcgRGF0ZShIKS50b0lTT1N0cmluZygpO2lmKGw9PT0ic3lzdGVtIil7Yi5jcHU9bShiLmNwdSwyMCw1MCwzKSxiLm1lbW9yeT1tKGIubWVtb3J5LDQwLDcwLDIpO2xldCBJPWEuY2hhcnRTZXJpZXMubWFwKChQLFIpPT4oe25hbWU6UC5uYW1lLGRhdGE6Wy4uLlAuZGF0YSxSPT09MD97eDpTLHk6Yi5jcHV9Ont4OlMseTpiLm1lbW9yeX1dfSkpO2EudXBkYXRlU2VyaWVzKEksITEpfWVsc2UgaWYobD09PSJuZXR3b3JrIil7Yi5kb3dubG9hZD1tKGIuZG93bmxvYWQsMTAwLDIwMCwxMCksYi51cGxvYWQ9bShiLnVwbG9hZCwyMCw1MCw1KTtsZXQgST1hLmNoYXJ0U2VyaWVzLm1hcCgoUCxSKT0+KHtuYW1lOlAubmFtZSxkYXRhOlsuLi5QLmRhdGEsUj09PTA/e3g6Uyx5OmIuZG93bmxvYWR9Ont4OlMseTpiLnVwbG9hZH1dfSkpO2EudXBkYXRlU2VyaWVzKEksITEpfX19LCJhZGRSZWFsdGltZURhdGEiKSx6PWkoKCk9PntpZighcilyZXR1cm47bGV0IEg9RGF0ZS5ub3coKSxrPW5ldyBEYXRlKEgpLnRvSVNPU3RyaW5nKCksUz1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMjEpLTEwO2IuY29ubmVjdGlvbnM9TWF0aC5tYXgoNTAsTWF0aC5taW4oMzAwLGIuY29ubmVjdGlvbnMrUykpO2xldCBJPXIuY2hhcnRTZXJpZXMsUD1be25hbWU6SVswXT8ubmFtZXx8IkNvbm5lY3Rpb25zIixkYXRhOlsuLi5JWzBdPy5kYXRhfHxbXSx7eDprLHk6Yi5jb25uZWN0aW9uc31dfV07ci51cGRhdGVTZXJpZXMoUCwhMSl9LCJ1cGRhdGVDb25uZWN0aW9ucyIpLE49aShIPT57bD1IO2xldCBrPXhbSF07YS5sYWJlbD1rLmxhYmVsLGEuc2VyaWVzPWsuc2VyaWVzLGEueUF4aXNGb3JtYXR0ZXI9cFtIXSxIPT09InN5c3RlbSI/KGEueUF4aXNTY2FsaW5nPSJwZXJjZW50YWdlIixhLnlBeGlzTWF4PTEwMCk6YS55QXhpc1NjYWxpbmc9ImR5bmFtaWMiLGY9RGF0ZS5ub3coKS1jfSwic3dpdGNoRGF0YXNldCIpLEM9aSgoKT0+eyFuJiYobD09PSJzeXN0ZW0ifHxsPT09Im5ldHdvcmsiKSYmKGEucmVhbHRpbWVNb2RlPSEwLG49d2luZG93LnNldEludGVydmFsKCgpPT5NKCksYykpLG98fChyLnJlYWx0aW1lTW9kZT0hMCxvPXdpbmRvdy5zZXRJbnRlcnZhbCgoKT0+eigpLHUpKX0sInN0YXJ0UmVhbHRpbWUiKSxfPWkoKCk9PntuJiYod2luZG93LmNsZWFySW50ZXJ2YWwobiksbj1udWxsLGEucmVhbHRpbWVNb2RlPSExKSxvJiYod2luZG93LmNsZWFySW50ZXJ2YWwobyksbz1udWxsLHIucmVhbHRpbWVNb2RlPSExKX0sInN0b3BSZWFsdGltZSIpLE89aSgoKT0+e2w9PT0ic3lzdGVtIj8oYi5jcHU9TWF0aC5yYW5kb20oKT4uNT84NToyNSxiLm1lbW9yeT1NYXRoLnJhbmRvbSgpPi41PzgwOjQ1KTpsPT09Im5ldHdvcmsiJiYoYi5kb3dubG9hZD1NYXRoLnJhbmRvbSgpPi41PzI1MDoxMDAsYi51cGxvYWQ9TWF0aC5yYW5kb20oKT4uNT84MDoyMCksYi5jb25uZWN0aW9ucz1NYXRoLnJhbmRvbSgpPi41PzI4MDo4MCxmPTAseT0wfSwicmFuZG9taXplRGF0YSIpLCQ9aSgoKT0+e3QucXVlcnlTZWxlY3RvckFsbCgiZGVlcy1idXR0b24iKS5mb3JFYWNoKGs9PntsZXQgUz1rLnRleHQ/LnRyaW0oKTtTPT09IlN5c3RlbSBVc2FnZSI/ay50eXBlPWw9PT0ic3lzdGVtIj8iaGlnaGxpZ2h0ZWQiOiJub3JtYWwiOlM9PT0iTmV0d29yayBUcmFmZmljIj9rLnR5cGU9bD09PSJuZXR3b3JrIj8iaGlnaGxpZ2h0ZWQiOiJub3JtYWwiOlM9PT0iU2FsZXMgRGF0YSImJihrLnR5cGU9bD09PSJzYWxlcyI/ImhpZ2hsaWdodGVkIjoibm9ybWFsIil9KX0sInVwZGF0ZUJ1dHRvblN0YXRlcyIpO2lmKHQucXVlcnlTZWxlY3RvckFsbCgiZGVlcy1idXR0b24iKS5mb3JFYWNoKEg9PntsZXQgaz1ILnRleHQ/LnRyaW0oKTtrPT09IlN5c3RlbSBVc2FnZSI/SC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PntOKCJzeXN0ZW0iKSwkKCl9KTprPT09Ik5ldHdvcmsgVHJhZmZpYyI/SC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PntOKCJuZXR3b3JrIiksJCgpfSk6az09PSJTYWxlcyBEYXRhIj9ILmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e04oInNhbGVzIiksJCgpfSk6az09PSJTdGFydCBMaXZlIj9ILmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+QygpKTprPT09IlN0b3AgTGl2ZSI/SC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9Pl8oKSk6az09PSJTcGlrZSBWYWx1ZXMiJiZILmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+TygpKX0pLGEucm9sbGluZ1dpbmRvdz1kLGEucmVhbHRpbWVNb2RlPSExLGEueUF4aXNTY2FsaW5nPSJwZXJjZW50YWdlIixhLnlBeGlzTWF4PTEwMCxhLmF1dG9TY3JvbGxJbnRlcnZhbD0xZTMsc2V0VGltZW91dCgoKT0+e2EudXBkYXRlVGltZVdpbmRvdygpfSwxMDApLHIpe2xldCBIPXYoYi5jb25uZWN0aW9ucywzMCx1KTtyLnNlcmllcz1be25hbWU6IkNvbm5lY3Rpb25zIixkYXRhOkh9XSxyLnJvbGxpbmdXaW5kb3c9ZCxyLnJlYWx0aW1lTW9kZT0hMSxyLnlBeGlzU2NhbGluZz0iZml4ZWQiLHIueUF4aXNNYXg9MzUwLHIuYXV0b1Njcm9sbEludGVydmFsPTFlMyxzZXRUaW1lb3V0KCgpPT57ci51cGRhdGVUaW1lV2luZG93KCl9LDEwMCl9fX0+CiAgICAgIDxzdHlsZT4KICAgICAgICAke0pgCiAgICAgICAgLmRlbW9Cb3ggewogICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk1JSkiLCJoc2woMCAwJSA5JSkiKX07CiAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgIHBhZGRpbmc6IDQwcHg7CiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICBnYXA6IDI0cHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5jb250cm9scyB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuY2hhcnQtY29udGFpbmVyIHsKICAgICAgICAgIGZsZXg6IDE7CiAgICAgICAgICBtaW4taGVpZ2h0OiA0MDBweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmluZm8gewogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNTYuOSUpIiwiaHNsKDIxNSAyMC4yJSA1NS4xJSkiKX07CiAgICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCAnR2Vpc3QgU2FucycsIHNhbnMtc2VyaWY7CiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICBtYXJnaW4tdG9wOiA4cHg7CiAgICAgICAgfQogICAgICBgfQogICAgPC9zdHlsZT4KICAgIDxkaXYgY2xhc3M9ImRlbW9Cb3giPgogICAgICA8ZGl2IGNsYXNzPSJjb250cm9scyI+CiAgICAgICAgPGRlZXMtYnV0dG9uLWdyb3VwIGxhYmVsPSJEYXRhc2V0OiI+CiAgICAgICAgICA8ZGVlcy1idXR0b24gdHlwZT0iaGlnaGxpZ2h0ZWQiPlN5c3RlbSBVc2FnZTwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24+TmV0d29yayBUcmFmZmljPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbj5TYWxlcyBEYXRhPC9kZWVzLWJ1dHRvbj4KICAgICAgICA8L2RlZXMtYnV0dG9uLWdyb3VwPgogICAgICAgIAogICAgICAgIDxkZWVzLWJ1dHRvbi1ncm91cCBsYWJlbD0iUmVhbC10aW1lOiI+CiAgICAgICAgICA8ZGVlcy1idXR0b24+U3RhcnQgTGl2ZTwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24+U3RvcCBMaXZlPC9kZWVzLWJ1dHRvbj4KICAgICAgICA8L2RlZXMtYnV0dG9uLWdyb3VwPgogICAgICAgIAogICAgICAgIDxkZWVzLWJ1dHRvbi1ncm91cCBsYWJlbD0iQWN0aW9uczoiPgogICAgICAgICAgPGRlZXMtYnV0dG9uPlNwaWtlIFZhbHVlczwvZGVlcy1idXR0b24+CiAgICAgICAgPC9kZWVzLWJ1dHRvbi1ncm91cD4KICAgICAgPC9kaXY+CiAgICAgIAogICAgICA8ZGl2IGNsYXNzPSJjaGFydC1jb250YWluZXIiPgogICAgICAgIDxkZWVzLWNoYXJ0LWFyZWEKICAgICAgICAgIGlkPSJtYWluLWNoYXJ0IgogICAgICAgICAgLmxhYmVsPSR7cy5zeXN0ZW0ubGFiZWx9CiAgICAgICAgICAuc2VyaWVzPSR7cy5zeXN0ZW0uc2VyaWVzfQogICAgICAgICAgLnlBeGlzRm9ybWF0dGVyPSR7ZS5zeXN0ZW19CiAgICAgICAgPjwvZGVlcy1jaGFydC1hcmVhPgogICAgICA8L2Rpdj4KICAgICAgCiAgICAgIDxkaXYgY2xhc3M9ImNoYXJ0LWNvbnRhaW5lciIgc3R5bGU9Im1hcmdpbi10b3A6IDIwcHg7Ij4KICAgICAgICA8ZGVlcy1jaGFydC1hcmVhCiAgICAgICAgICBpZD0iY29ubmVjdGlvbnMtY2hhcnQiCiAgICAgICAgICAubGFiZWw9JHsiQWN0aXZlIENvbm5lY3Rpb25zIn0KICAgICAgICAgIC5zZXJpZXM9JHtbe25hbWU6IkNvbm5lY3Rpb25zIixkYXRhOltdfV19CiAgICAgICAgICAueUF4aXNGb3JtYXR0ZXI9JHt0PT5gJHt0fWB9CiAgICAgICAgPjwvZGVlcy1jaGFydC1hcmVhPgogICAgICA8L2Rpdj4KICAgICAgCiAgICAgIDxkaXYgY2xhc3M9ImluZm8iPgogICAgICAgIFJlYWwtdGltZSBtb25pdG9yaW5nIHdpdGggMi1taW51dGUgcm9sbGluZyB3aW5kb3cg4oCiIAogICAgICAgIFVwZGF0ZXMgZXZlcnkgc2Vjb25kIHdpdGggc21vb3RoIHZhbHVlIHRyYW5zaXRpb25zIOKAoiAKICAgICAgICBDbGljayAnU3Bpa2UgVmFsdWVzJyB0byBzaW11bGF0ZSBsb2FkIHNwaWtlcwogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgogIGB9LCJkZW1vRnVuYyIpfSk7dmFyIF9mYSxNZmE9ZygoKT0+e3BlKCk7cHQoKTtfZmE9W0hlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgaGVpZ2h0OiA0MDBweDsKICAgICAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCAnUm9ib3RvJywgc2Fucy1zZXJpZjsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgfQogICAgICBkZWVzLXRpbGUgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQogICAgICAuY2hhcnRIZWFkZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgcGFkZGluZzogMCA4cHggMCAxNnB4OwogICAgICB9CiAgICAgIC5jaGFydExhYmVsIHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTsKICAgICAgfQogICAgICAuZXhwYW5kQnRuIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgd2lkdGg6IDI4cHg7CiAgICAgICAgaGVpZ2h0OiAyOHB4OwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KICAgICAgLmV4cGFuZEJ0bjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1ob3Zlcik7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOwogICAgICB9CiAgICAgIC5jaGFydENvbnRhaW5lciB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGluc2V0OiAwIDAgNHB4IDA7CiAgICAgIH0KICAgICAgLnN0YXRzQmFyIHsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDI0cHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQogICAgICAuc3RhdHNTZXJpZXMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDhweDsKICAgICAgfQogICAgICAuc3RhdHNTZXJpZXMgKyAuc3RhdHNTZXJpZXMgewogICAgICAgIHBhZGRpbmctbGVmdDogMjRweDsKICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICB9CiAgICAgIC5zdGF0c0NvbG9yIHsKICAgICAgICB3aWR0aDogOHB4OwogICAgICAgIGhlaWdodDogOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQogICAgICAuc3RhdHNOYW1lIHsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXNlY29uZGFyeSk7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiA0cHg7CiAgICAgIH0KICAgICAgLnN0YXRzSXRlbSB7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICB9CiAgICAgIC5zdGF0c0l0ZW0gc3Ryb25nIHsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICB9CiAgICAgIC5sdy10b29sdGlwIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgei1pbmRleDogMTAwOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIHBhZGRpbmc6IDEycHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkOwogICAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIHNhbnMtc2VyaWY7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCAwIHJnYmEoMCwgMCwgMCwgMC4xNSk7CiAgICAgICAgbWluLXdpZHRoOiAxNDBweDsKICAgICAgfQogICAgYF19KTt2YXIgemZhLENmYT1nKCgpPT57cGUoKTtVYSgpO3pmYT1pKHM9PndgCiAgICAgICAgPGRlZXMtdGlsZT4KICAgICAgICAgIDxkaXYgc2xvdD0iaGVhZGVyIiBjbGFzcz0iY2hhcnRIZWFkZXIiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2hhcnRMYWJlbCI+JHtzLmxhYmVsfTwvc3Bhbj4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZXhwYW5kQnRuIiBAY2xpY2s9JHsoKT0+cy50b2dnbGVGdWxsUGFnZSgpfSB0aXRsZT0iJHtzLmlzRnVsbFBhZ2U/IkV4aXQgZnVsbCBwYWdlIjoiRnVsbCBwYWdlIn0iPgogICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHtzLmlzRnVsbFBhZ2U/Imx1Y2lkZTpNaW5pbWl6ZTIiOiJsdWNpZGU6TWF4aW1pemUyIn0gLmljb25TaXplPSR7MTR9PjwvZGVlcy1pY29uPgogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iY2hhcnRDb250YWluZXIiPjwvZGl2PgogICAgICAgICAgJHtzLnNlcmllc1N0YXRzLmxlbmd0aD4wP3dgCiAgICAgICAgICAgIDxkaXYgc2xvdD0iZm9vdGVyIiBjbGFzcz0ic3RhdHNCYXIiPgogICAgICAgICAgICAgICR7cy5zZXJpZXNTdGF0cy5tYXAoZT0+d2AKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXRzU2VyaWVzIj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN0YXRzQ29sb3IiIHN0eWxlPSJiYWNrZ3JvdW5kOiR7ZS5jb2xvcn0iPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN0YXRzTmFtZSI+JHtlLm5hbWV9PC9zcGFuPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3RhdHNJdGVtIj5sYXRlc3QgPHN0cm9uZz4ke3MueUF4aXNGb3JtYXR0ZXIoZS5sYXRlc3QpfTwvc3Ryb25nPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN0YXRzSXRlbSI+bWluIDxzdHJvbmc+JHtzLnlBeGlzRm9ybWF0dGVyKGUubWluKX08L3N0cm9uZz48L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzdGF0c0l0ZW0iPm1heCA8c3Ryb25nPiR7cy55QXhpc0Zvcm1hdHRlcihlLm1heCl9PC9zdHJvbmc+PC9zcGFuPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3RhdHNJdGVtIj5hdmcgPHN0cm9uZz4ke3MueUF4aXNGb3JtYXR0ZXIoZS5hdmcpfTwvc3Ryb25nPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIGApfQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIGA6IiJ9CiAgICAgICAgPC9kZWVzLXRpbGU+CiAgICAgIGAsInJlbmRlckNoYXJ0QXJlYSIpfSk7dmFyIFdjLENpLFRmYSxMaXQ9ZygoKT0+e3BlKCk7a3QoKTtTZmEoKTtNZmEoKTtDZmEoKTtmdSgpO25yKCk7V2M9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LENpPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxUZmE9KCgpPT57bGV0IHM9W25lKCJkZWVzLWNoYXJ0LWFyZWEiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXSxPLCQ9W10sRT1bXSxILGs9W10sUz1bXSxJLFA9W10sUj1bXSxLLFY9W10sVz1bXSxtZSxCPVtdLFU9W107dmFyIGhlPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzQ2hhcnRBcmVhIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IEY9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bWSgpXSxwPVtZKCldLGM9W1koKV0seD1bTCgpXSx5PVtMKHt0eXBlOkFycmF5fSldLE49W0woe2F0dHJpYnV0ZTohMX0pXSxPPVtMKHt0eXBlOk51bWJlcn0pXSxIPVtMKHt0eXBlOkJvb2xlYW59KV0sST1bTCh7dHlwZTpTdHJpbmd9KV0sSz1bTCh7dHlwZTpOdW1iZXJ9KV0sbWU9W0woe3R5cGU6TnVtYmVyfSldLFdjKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY2hhcnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoaj0+ImNoYXJ0ImluIGosImhhcyIpLGdldDppKGo9PmouY2hhcnQsImdldCIpLHNldDppKChqLHVlKT0+e2ouY2hhcnQ9dWV9LCJzZXQiKX0sbWV0YWRhdGE6Rn0sbyxsKSxXYyh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlcmllc1N0YXRzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGo9PiJzZXJpZXNTdGF0cyJpbiBqLCJoYXMiKSxnZXQ6aShqPT5qLnNlcmllc1N0YXRzLCJnZXQiKSxzZXQ6aSgoaix1ZSk9PntqLnNlcmllc1N0YXRzPXVlfSwic2V0Iil9LG1ldGFkYXRhOkZ9LGQsdSksV2ModGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpc0Z1bGxQYWdlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGo9PiJpc0Z1bGxQYWdlImluIGosImhhcyIpLGdldDppKGo9PmouaXNGdWxsUGFnZSwiZ2V0Iiksc2V0OmkoKGosdWUpPT57ai5pc0Z1bGxQYWdlPXVlfSwic2V0Iil9LG1ldGFkYXRhOkZ9LGIsdiksV2ModGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJsYWJlbCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4ibGFiZWwiaW4gaiwiaGFzIiksZ2V0Omkoaj0+ai5sYWJlbCwiZ2V0Iiksc2V0OmkoKGosdWUpPT57ai5sYWJlbD11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSxtLGYpLFdjKHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VyaWVzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGo9PiJzZXJpZXMiaW4gaiwiaGFzIiksZ2V0Omkoaj0+ai5zZXJpZXMsImdldCIpLHNldDppKChqLHVlKT0+e2ouc2VyaWVzPXVlfSwic2V0Iil9LG1ldGFkYXRhOkZ9LE0seiksV2ModGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ5QXhpc0Zvcm1hdHRlciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4ieUF4aXNGb3JtYXR0ZXIiaW4gaiwiaGFzIiksZ2V0Omkoaj0+ai55QXhpc0Zvcm1hdHRlciwiZ2V0Iiksc2V0OmkoKGosdWUpPT57ai55QXhpc0Zvcm1hdHRlcj11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSxDLF8pLFdjKHRoaXMsbnVsbCxPLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicm9sbGluZ1dpbmRvdyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4icm9sbGluZ1dpbmRvdyJpbiBqLCJoYXMiKSxnZXQ6aShqPT5qLnJvbGxpbmdXaW5kb3csImdldCIpLHNldDppKChqLHVlKT0+e2oucm9sbGluZ1dpbmRvdz11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSwkLEUpLFdjKHRoaXMsbnVsbCxILHtraW5kOiJhY2Nlc3NvciIsbmFtZToicmVhbHRpbWVNb2RlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGo9PiJyZWFsdGltZU1vZGUiaW4gaiwiaGFzIiksZ2V0Omkoaj0+ai5yZWFsdGltZU1vZGUsImdldCIpLHNldDppKChqLHVlKT0+e2oucmVhbHRpbWVNb2RlPXVlfSwic2V0Iil9LG1ldGFkYXRhOkZ9LGssUyksV2ModGhpcyxudWxsLEkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ5QXhpc1NjYWxpbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoaj0+InlBeGlzU2NhbGluZyJpbiBqLCJoYXMiKSxnZXQ6aShqPT5qLnlBeGlzU2NhbGluZywiZ2V0Iiksc2V0OmkoKGosdWUpPT57ai55QXhpc1NjYWxpbmc9dWV9LCJzZXQiKX0sbWV0YWRhdGE6Rn0sUCxSKSxXYyh0aGlzLG51bGwsSyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InlBeGlzTWF4IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGo9PiJ5QXhpc01heCJpbiBqLCJoYXMiKSxnZXQ6aShqPT5qLnlBeGlzTWF4LCJnZXQiKSxzZXQ6aSgoaix1ZSk9PntqLnlBeGlzTWF4PXVlfSwic2V0Iil9LG1ldGFkYXRhOkZ9LFYsVyksV2ModGhpcyxudWxsLG1lLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYXV0b1Njcm9sbEludGVydmFsIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGo9PiJhdXRvU2Nyb2xsSW50ZXJ2YWwiaW4gaiwiaGFzIiksZ2V0Omkoaj0+ai5hdXRvU2Nyb2xsSW50ZXJ2YWwsImdldCIpLHNldDppKChqLHVlKT0+e2ouYXV0b1Njcm9sbEludGVydmFsPXVlfSwic2V0Iil9LG1ldGFkYXRhOkZ9LEIsVSksV2MobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6Rn0sbnVsbCx0KSxoZT1hPWUudmFsdWUsRiYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpGfSl9c3RhdGljIGRlbW89a2ZhO3N0YXRpYyBkZW1vR3JvdXBzPVsiQ2hhcnQiXTsjZT1DaSh0aGlzLG8sbnVsbCk7Z2V0IGNoYXJ0KCl7cmV0dXJuIHRoaXMuI2V9c2V0IGNoYXJ0KEYpe3RoaXMuI2U9Rn0jdD0oQ2kodGhpcyxsKSxDaSh0aGlzLGQsW10pKTtnZXQgc2VyaWVzU3RhdHMoKXtyZXR1cm4gdGhpcy4jdH1zZXQgc2VyaWVzU3RhdHMoRil7dGhpcy4jdD1GfSNhPShDaSh0aGlzLHUpLENpKHRoaXMsYiwhMSkpO2dldCBpc0Z1bGxQYWdlKCl7cmV0dXJuIHRoaXMuI2F9c2V0IGlzRnVsbFBhZ2UoRil7dGhpcy4jYT1GfSNzPShDaSh0aGlzLHYpLENpKHRoaXMsbSwiVW50aXRsZWQgQ2hhcnQiKSk7Z2V0IGxhYmVsKCl7cmV0dXJuIHRoaXMuI3N9c2V0IGxhYmVsKEYpe3RoaXMuI3M9Rn0jaT0oQ2kodGhpcyxmKSxDaSh0aGlzLE0sW10pKTtnZXQgc2VyaWVzKCl7cmV0dXJuIHRoaXMuI2l9c2V0IHNlcmllcyhGKXt0aGlzLiNpPUZ9Z2V0IGNoYXJ0U2VyaWVzKCl7cmV0dXJuIHRoaXMuaW50ZXJuYWxDaGFydERhdGEubGVuZ3RoPjA/dGhpcy5pbnRlcm5hbENoYXJ0RGF0YTp0aGlzLnNlcmllc30jcj0oQ2kodGhpcyx6KSxDaSh0aGlzLEMsRj0+YCR7Rn0gTWJwc2ApKTtnZXQgeUF4aXNGb3JtYXR0ZXIoKXtyZXR1cm4gdGhpcy4jcn1zZXQgeUF4aXNGb3JtYXR0ZXIoRil7dGhpcy4jcj1GfSNvPShDaSh0aGlzLF8pLENpKHRoaXMsJCwwKSk7Z2V0IHJvbGxpbmdXaW5kb3coKXtyZXR1cm4gdGhpcy4jb31zZXQgcm9sbGluZ1dpbmRvdyhGKXt0aGlzLiNvPUZ9I249KENpKHRoaXMsRSksQ2kodGhpcyxrLCExKSk7Z2V0IHJlYWx0aW1lTW9kZSgpe3JldHVybiB0aGlzLiNufXNldCByZWFsdGltZU1vZGUoRil7dGhpcy4jbj1GfSNsPShDaSh0aGlzLFMpLENpKHRoaXMsUCwiZHluYW1pYyIpKTtnZXQgeUF4aXNTY2FsaW5nKCl7cmV0dXJuIHRoaXMuI2x9c2V0IHlBeGlzU2NhbGluZyhGKXt0aGlzLiNsPUZ9I2M9KENpKHRoaXMsUiksQ2kodGhpcyxWLDEwMCkpO2dldCB5QXhpc01heCgpe3JldHVybiB0aGlzLiNjfXNldCB5QXhpc01heChGKXt0aGlzLiNjPUZ9I2Q9KENpKHRoaXMsVyksQ2kodGhpcyxCLDFlMykpO2dldCBhdXRvU2Nyb2xsSW50ZXJ2YWwoKXtyZXR1cm4gdGhpcy4jZH1zZXQgYXV0b1Njcm9sbEludGVydmFsKEYpe3RoaXMuI2Q9Rn1pbnRlcm5hbENoYXJ0RGF0YT0oQ2kodGhpcyxVKSxbXSk7YXV0b1Njcm9sbFRpbWVyPW51bGw7bGNCdW5kbGU9bnVsbDtzZXJpZXNBcGlzPW5ldyBNYXA7cHJpY2VMaW5lcz1uZXcgTWFwO3Rvb2x0aXBFbD1udWxsO0NIQVJUX0NPTE9SUz17ZGFyazpbImhzbCgyMTcuMiA5MS4yJSA1OS44JSkiLCJoc2woMTczLjQgODAuNCUgNDAlKSIsImhzbCgyODAuMyA4Ny40JSA2Ni43JSkiLCJoc2woMjQuNiA5NSUgNTMuMSUpIl0sbGlnaHQ6WyJoc2woMjIyLjIgNDcuNCUgNTEuMiUpIiwiaHNsKDE0Mi4xIDc2LjIlIDM2LjMlKSIsImhzbCgyODAuMyA0Ny43JSA1MC4yJSkiLCJoc2woMjAuNSA5MC4yJSA0OC4yJSkiXX07Y29uc3RydWN0b3IoKXtzdXBlcigpLHRhLnNldHVwKCksdGhpcy5yZWdpc3RlckdhcmJhZ2VGdW5jdGlvbihhc3luYygpPT57aWYodGhpcy5zdG9wQXV0b1Njcm9sbCgpLHRoaXMuY2hhcnQpdHJ5e3RoaXMuY2hhcnQucmVtb3ZlKCksdGhpcy5jaGFydD1udWxsLHRoaXMuc2VyaWVzQXBpcy5jbGVhcigpLHRoaXMucHJpY2VMaW5lcy5jbGVhcigpfWNhdGNoKEYpe2NvbnNvbGUuZXJyb3IoIkVycm9yIGRlc3Ryb3lpbmcgY2hhcnQ6IixGKX19KX1zdGF0aWMgc3R5bGVzPV9mYTtyZW5kZXIoKXtyZXR1cm4gemZhKHRoaXMpfWNvbnZlcnREYXRhVG9MQyhGKXtyZXR1cm4gRi5tYXAoaj0+e2xldCB1ZT10eXBlb2Ygai54PT0ibnVtYmVyIj9qLng6bmV3IERhdGUoai54KS5nZXRUaW1lKCk7cmV0dXJue3RpbWU6TWF0aC5mbG9vcih1ZS8xZTMpLHZhbHVlOmoueX19KS5zb3J0KChqLHVlKT0+ai50aW1lLXVlLnRpbWUpfWhzbFRvUmdiYShGLGope2xldCB1ZT1GLm1hdGNoKC9oc2xcKChbXildKylcKS8pO2lmKCF1ZSlyZXR1cm4gRjtsZXQgbGU9dWVbMV0udHJpbSgpLnNwbGl0KC9ccysvKTtpZihsZS5sZW5ndGg8MylyZXR1cm4gRjtsZXQgUT1wYXJzZUZsb2F0KGxlWzBdKS8zNjAsaWU9cGFyc2VGbG9hdChsZVsxXSkvMTAwLHRlPXBhcnNlRmxvYXQobGVbMl0pLzEwMCxlZSxrZSxYO2lmKGllPT09MCllZT1rZT1YPXRlO2Vsc2V7bGV0IFo9aSgoQSxzZSxvZSk9PihvZTwwJiYob2UrPTEpLG9lPjEmJihvZS09MSksb2U8LjE2NjY2NjY2NjY2NjY2NjY2P0ErKHNlLUEpKjYqb2U6b2U8LjU/c2U6b2U8LjY2NjY2NjY2NjY2NjY2NjY/QSsoc2UtQSkqKC42NjY2NjY2NjY2NjY2NjY2LW9lKSo2OkEpLCJodWUycmdiIikseWU9dGU8LjU/dGUqKDEraWUpOnRlK2llLXRlKmllLHE9Mip0ZS15ZTtlZT1aKHEseWUsUSsxLzMpLGtlPVoocSx5ZSxRKSxYPVoocSx5ZSxRLTEvMyl9cmV0dXJuYHJnYmEoJHtNYXRoLnJvdW5kKGVlKjI1NSl9LCAke01hdGgucm91bmQoa2UqMjU1KX0sICR7TWF0aC5yb3VuZChYKjI1NSl9LCAke2p9KWB9Z2V0U2VyaWVzQ29sb3JzKEYpe3JldHVybiBGP3RoaXMuQ0hBUlRfQ09MT1JTLmRhcms6dGhpcy5DSEFSVF9DT0xPUlMubGlnaHR9YXBwbHlUaGVtZSgpe2lmKCF0aGlzLmNoYXJ0fHwhdGhpcy5sY0J1bmRsZSlyZXR1cm47bGV0IEY9IXRoaXMuZ29CcmlnaHQsaj10aGlzLmdldFNlcmllc0NvbG9ycyhGKTt0aGlzLmNoYXJ0LmFwcGx5T3B0aW9ucyh7bGF5b3V0OntiYWNrZ3JvdW5kOnt0eXBlOnRoaXMubGNCdW5kbGUuQ29sb3JUeXBlLlNvbGlkLGNvbG9yOiJ0cmFuc3BhcmVudCJ9LHRleHRDb2xvcjpGPyJoc2woMCAwJSA2My45JSkiOiJoc2woMCAwJSAyMCUpIixhdHRyaWJ1dGlvbkxvZ286ITF9LGdyaWQ6e3ZlcnRMaW5lczp7Y29sb3I6Rj8iaHNsKDAgMCUgOC41JSkiOiJoc2woMCAwJSA5NS41JSkifSxob3J6TGluZXM6e2NvbG9yOkY/ImhzbCgwIDAlIDguNSUpIjoiaHNsKDAgMCUgOTUuNSUpIn19fSk7bGV0IHVlPTA7Zm9yKGxldFssbGVdb2YgdGhpcy5zZXJpZXNBcGlzKXtsZXQgUT1qW3VlJWoubGVuZ3RoXTtsZS5hcHBseU9wdGlvbnMoe3RvcENvbG9yOnRoaXMuaHNsVG9SZ2JhKFEsRj8uNDouNSksYm90dG9tQ29sb3I6dGhpcy5oc2xUb1JnYmEoUSwwKSxsaW5lQ29sb3I6UX0pLHVlKyt9fXJlY3JlYXRlU2VyaWVzKEYpe2lmKCF0aGlzLmNoYXJ0fHwhdGhpcy5sY0J1bmRsZSlyZXR1cm47bGV0IGo9IXRoaXMuZ29CcmlnaHQsdWU9dGhpcy5nZXRTZXJpZXNDb2xvcnMoaik7Zm9yKGxldFssbGVdb2YgdGhpcy5zZXJpZXNBcGlzKXRoaXMuY2hhcnQucmVtb3ZlU2VyaWVzKGxlKTt0aGlzLnNlcmllc0FwaXMuY2xlYXIoKSx0aGlzLnByaWNlTGluZXMuY2xlYXIoKSxGLmZvckVhY2goKGxlLFEpPT57bGV0IGllPXVlW1EldWUubGVuZ3RoXSx0ZT10aGlzLmNoYXJ0LmFkZFNlcmllcyh0aGlzLmxjQnVuZGxlLkFyZWFTZXJpZXMse3RvcENvbG9yOnRoaXMuaHNsVG9SZ2JhKGllLGo/LjQ6LjUpLGJvdHRvbUNvbG9yOnRoaXMuaHNsVG9SZ2JhKGllLDApLGxpbmVDb2xvcjppZSxsaW5lV2lkdGg6MixsaW5lVHlwZTp0aGlzLmxjQnVuZGxlLkxpbmVUeXBlLkN1cnZlZCxsYXN0VmFsdWVWaXNpYmxlOiExLHByaWNlTGluZVZpc2libGU6ITEsY3Jvc3NoYWlyTWFya2VyVmlzaWJsZTohMCxjcm9zc2hhaXJNYXJrZXJSYWRpdXM6NH0pO3RlLnNldERhdGEodGhpcy5jb252ZXJ0RGF0YVRvTEMobGUuZGF0YSkpLHRoaXMudXBkYXRlUHJpY2VMaW5lcyhsZS5uYW1lfHxgc2VyaWVzLSR7UX1gLHRlLGxlLmRhdGEsaWUpLHRoaXMueUF4aXNTY2FsaW5nIT09ImR5bmFtaWMiJiZ0ZS5hcHBseU9wdGlvbnMoe2F1dG9zY2FsZUluZm9Qcm92aWRlcjppKCgpPT4oe3ByaWNlUmFuZ2U6e21pblZhbHVlOjAsbWF4VmFsdWU6dGhpcy55QXhpc01heH19KSwiYXV0b3NjYWxlSW5mb1Byb3ZpZGVyIil9KSx0aGlzLnNlcmllc0FwaXMuc2V0KGxlLm5hbWV8fGBzZXJpZXMtJHtRfWAsdGUpfSksdGhpcy5jb21wdXRlU3RhdHMoRil9Y29tcHV0ZVN0YXRzKEYpe2xldCBqPSF0aGlzLmdvQnJpZ2h0LHVlPXRoaXMuZ2V0U2VyaWVzQ29sb3JzKGopO3RoaXMuc2VyaWVzU3RhdHM9Ri5tYXAoKGxlLFEpPT57bGV0IGllPWxlLmRhdGEubWFwKFo9PloueSk7aWYoaWUubGVuZ3RoPT09MClyZXR1cm57bmFtZTpsZS5uYW1lfHxgc2VyaWVzLSR7UX1gLGxhdGVzdDowLG1pbjowLG1heDowLGF2ZzowLGNvbG9yOnVlW1EldWUubGVuZ3RoXX07bGV0IHRlPWllW2llLmxlbmd0aC0xXSxlZT1NYXRoLm1pbiguLi5pZSksa2U9TWF0aC5tYXgoLi4uaWUpLFg9TWF0aC5yb3VuZChpZS5yZWR1Y2UoKFoseWUpPT5aK3llLDApL2llLmxlbmd0aCoxMDApLzEwMDtyZXR1cm57bmFtZTpsZS5uYW1lfHxgc2VyaWVzLSR7UX1gLGxhdGVzdDp0ZSxtaW46ZWUsbWF4OmtlLGF2ZzpYLGNvbG9yOnVlW1EldWUubGVuZ3RoXX19KX11cGRhdGVQcmljZUxpbmVzKEYsaix1ZSxsZSl7bGV0IFE9dGhpcy5wcmljZUxpbmVzLmdldChGKTtpZihRKWZvcihsZXQgWCBvZiBRKWoucmVtb3ZlUHJpY2VMaW5lKFgpO2lmKHVlLmxlbmd0aD09PTApe3RoaXMucHJpY2VMaW5lcy5zZXQoRixbXSk7cmV0dXJufWxldCBpZT11ZS5tYXAoWD0+WC55KSx0ZT1pZS5yZWR1Y2UoKFgsWik9PlgrWiwwKS9pZS5sZW5ndGgsZWU9TWF0aC5tYXgoLi4uaWUpLGtlPVtdO2tlLnB1c2goai5jcmVhdGVQcmljZUxpbmUoe3ByaWNlOk1hdGgucm91bmQodGUqMTAwKS8xMDAsY29sb3I6dGhpcy5oc2xUb1JnYmEobGUsLjUpLGxpbmVXaWR0aDoxLGxpbmVTdHlsZToyLGF4aXNMYWJlbFZpc2libGU6ITAsdGl0bGU6ImF2ZyJ9KSksdGU+MCYmKGVlLXRlKS90ZT4uMSYma2UucHVzaChqLmNyZWF0ZVByaWNlTGluZSh7cHJpY2U6ZWUsY29sb3I6dGhpcy5oc2xUb1JnYmEobGUsLjgpLGxpbmVXaWR0aDoxLGxpbmVTdHlsZToxLGF4aXNMYWJlbFZpc2libGU6ITAsdGl0bGU6Im1heCJ9KSksdGhpcy5wcmljZUxpbmVzLnNldChGLGtlKX1zZXR1cFRvb2x0aXAoKXt0aGlzLmNoYXJ0JiYodGhpcy50b29sdGlwRWw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy50b29sdGlwRWwuY2xhc3NOYW1lPSJsdy10b29sdGlwIix0aGlzLnRvb2x0aXBFbC5zdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLmNoYXJ0Q29udGFpbmVyIik/LmFwcGVuZENoaWxkKHRoaXMudG9vbHRpcEVsKSx0aGlzLmNoYXJ0LnN1YnNjcmliZUNyb3NzaGFpck1vdmUoRj0+e2lmKCF0aGlzLnRvb2x0aXBFbClyZXR1cm47aWYoIUYucG9pbnR8fCFGLnRpbWV8fEYucG9pbnQueDwwfHxGLnBvaW50Lnk8MCl7dGhpcy50b29sdGlwRWwuc3R5bGUuZGlzcGxheT0ibm9uZSI7cmV0dXJufWxldCBqPSF0aGlzLmdvQnJpZ2h0LHVlPWo/ImhzbCgwIDAlIDklKSI6ImhzbCgwIDAlIDEwMCUpIixsZT1qPyJoc2woMCAwJSA5NSUpIjoiaHNsKDAgMCUgOSUpIixRPWo/ImhzbCgwIDAlIDE0LjklKSI6ImhzbCgwIDAlIDg5LjglKSIsaWU9dGhpcy5nZXRTZXJpZXNDb2xvcnMoaiksdGU9IiIsZWU9MCxrZT0hMTtmb3IobGV0W3llLHFdb2YgdGhpcy5zZXJpZXNBcGlzKXtsZXQgQT1GLnNlcmllc0RhdGEuZ2V0KHEpO2lmKEEmJiJ2YWx1ZSJpbiBBJiZBLnZhbHVlIT09dm9pZCAwKXtrZT0hMDtsZXQgc2U9aWVbZWUlaWUubGVuZ3RoXSxvZT10aGlzLnlBeGlzRm9ybWF0dGVyKEEudmFsdWUpO3RlKz1gPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4O21hcmdpbjoke2VlPjA/IjZweCI6IjAifSAwOyI+CiAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxMHB4O2hlaWdodDoxMHB4O2JhY2tncm91bmQ6JHtzZX07Ym9yZGVyLXJhZGl1czoycHg7Ij48L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDo1MDA7Ij4ke3llfTo8L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDphdXRvO2ZvbnQtd2VpZ2h0OjYwMDsiPiR7b2V9PC9zcGFuPgogICAgICAgICAgPC9kaXY+YH1lZSsrfWlmKCFrZSl7dGhpcy50b29sdGlwRWwuc3R5bGUuZGlzcGxheT0ibm9uZSI7cmV0dXJufXRoaXMudG9vbHRpcEVsLmlubmVySFRNTD10ZSxPYmplY3QuYXNzaWduKHRoaXMudG9vbHRpcEVsLnN0eWxlLHtkaXNwbGF5OiJibG9jayIsYmFja2dyb3VuZDp1ZSxjb2xvcjpsZSxib3JkZXJDb2xvcjpRfSk7bGV0IFg9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5jaGFydENvbnRhaW5lciIpLmNsaWVudFdpZHRoLFo9Ri5wb2ludC54KzE2O1orMjAwPlgmJihaPUYucG9pbnQueC0yMTYpLHRoaXMudG9vbHRpcEVsLnN0eWxlLmxlZnQ9YCR7Wn1weGAsdGhpcy50b29sdGlwRWwuc3R5bGUudG9wPWAke0YucG9pbnQueS0xNn1weGB9KSl9YXN5bmMgZmlyc3RVcGRhdGVkKCl7YXdhaXQgdGhpcy5kb210b29sc1Byb21pc2UsdGhpcy5sY0J1bmRsZT1hd2FpdCBRci5nZXRJbnN0YW5jZSgpLmxvYWRMaWdodHdlaWdodENoYXJ0cygpLGF3YWl0IG5ldyBQcm9taXNlKHVlPT5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodWUpKTtsZXQgRj10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLmNoYXJ0Q29udGFpbmVyIik7aWYoIUYpcmV0dXJuO2xldCBqPSF0aGlzLmdvQnJpZ2h0O3RyeXt0aGlzLmNoYXJ0PXRoaXMubGNCdW5kbGUuY3JlYXRlQ2hhcnQoRix7YXV0b1NpemU6ITAsbGF5b3V0OntiYWNrZ3JvdW5kOnt0eXBlOnRoaXMubGNCdW5kbGUuQ29sb3JUeXBlLlNvbGlkLGNvbG9yOiJ0cmFuc3BhcmVudCJ9LHRleHRDb2xvcjpqPyJoc2woMCAwJSA2My45JSkiOiJoc2woMCAwJSAyMCUpIixmb250RmFtaWx5OictYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIHNhbnMtc2VyaWYnLGZvbnRTaXplOjEyLGF0dHJpYnV0aW9uTG9nbzohMX0sZ3JpZDp7dmVydExpbmVzOntjb2xvcjpqPyJoc2woMCAwJSA4LjUlKSI6ImhzbCgwIDAlIDk1LjUlKSJ9LGhvcnpMaW5lczp7Y29sb3I6aj8iaHNsKDAgMCUgOC41JSkiOiJoc2woMCAwJSA5NS41JSkifX0scmlnaHRQcmljZVNjYWxlOntib3JkZXJWaXNpYmxlOiExLHNjYWxlTWFyZ2luczp7dG9wOi4xLGJvdHRvbTouMX19LHRpbWVTY2FsZTp7Ym9yZGVyVmlzaWJsZTohMSx0aW1lVmlzaWJsZTohMCxzZWNvbmRzVmlzaWJsZTohMH0sY3Jvc3NoYWlyOnttb2RlOnRoaXMubGNCdW5kbGUuQ3Jvc3NoYWlyTW9kZS5NYWduZXR9LGhhbmRsZVNjcm9sbDohMSxoYW5kbGVTY2FsZTohMX0pO2xldCB1ZT10aGlzLnNlcmllcy5sZW5ndGg+MD90aGlzLnNlcmllczpbe25hbWU6ImNwdSIsZGF0YTpbe3g6IjIwMjUtMDEtMTVUMDM6MDA6MDAiLHk6MjV9LHt4OiIyMDI1LTAxLTE1VDA3OjAwOjAwIix5OjMwfSx7eDoiMjAyNS0wMS0xNVQxMTowMDowMCIseToyMH0se3g6IjIwMjUtMDEtMTVUMTU6MDA6MDAiLHk6MzV9LHt4OiIyMDI1LTAxLTE1VDE5OjAwOjAwIix5OjI1fV19LHtuYW1lOiJtZW1vcnkiLGRhdGE6W3t4OiIyMDI1LTAxLTE1VDAzOjAwOjAwIix5OjEwfSx7eDoiMjAyNS0wMS0xNVQwNzowMDowMCIseToxMn0se3g6IjIwMjUtMDEtMTVUMTE6MDA6MDAiLHk6MTB9LHt4OiIyMDI1LTAxLTE1VDE1OjAwOjAwIix5OjMwfSx7eDoiMjAyNS0wMS0xNVQxOTowMDowMCIseTo0MH1dfV07dGhpcy5pbnRlcm5hbENoYXJ0RGF0YT11ZSx0aGlzLnJlY3JlYXRlU2VyaWVzKHVlKSx0aGlzLnNldHVwVG9vbHRpcCgpfWNhdGNoKHVlKXtjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBjaGFydDoiLHVlKX19YXN5bmMgdXBkYXRlZChGKXtpZihzdXBlci51cGRhdGVkKEYpLEYuaGFzKCJnb0JyaWdodCIpJiZ0aGlzLmNoYXJ0JiZ0aGlzLmFwcGx5VGhlbWUoKSxGLmhhcygic2VyaWVzIikmJnRoaXMuY2hhcnQmJnRoaXMuc2VyaWVzLmxlbmd0aD4wJiZhd2FpdCB0aGlzLnVwZGF0ZVNlcmllcyh0aGlzLnNlcmllcyksRi5oYXMoInlBeGlzRm9ybWF0dGVyIikmJnRoaXMuY2hhcnQsRi5oYXMoInJlYWx0aW1lTW9kZSIpJiZ0aGlzLmNoYXJ0JiYodGhpcy5yZWFsdGltZU1vZGUmJnRoaXMucm9sbGluZ1dpbmRvdz4wJiZ0aGlzLmF1dG9TY3JvbGxJbnRlcnZhbD4wP3RoaXMuc3RhcnRBdXRvU2Nyb2xsKCk6dGhpcy5zdG9wQXV0b1Njcm9sbCgpKSxGLmhhcygiYXV0b1Njcm9sbEludGVydmFsIikmJnRoaXMuY2hhcnQmJih0aGlzLnN0b3BBdXRvU2Nyb2xsKCksdGhpcy5yZWFsdGltZU1vZGUmJnRoaXMucm9sbGluZ1dpbmRvdz4wJiZ0aGlzLmF1dG9TY3JvbGxJbnRlcnZhbD4wJiZ0aGlzLnN0YXJ0QXV0b1Njcm9sbCgpKSwoRi5oYXMoInlBeGlzU2NhbGluZyIpfHxGLmhhcygieUF4aXNNYXgiKSkmJnRoaXMuY2hhcnQpZm9yKGxldFssal1vZiB0aGlzLnNlcmllc0FwaXMpdGhpcy55QXhpc1NjYWxpbmc9PT0iZHluYW1pYyI/ai5hcHBseU9wdGlvbnMoe2F1dG9zY2FsZUluZm9Qcm92aWRlcjp2b2lkIDB9KTpqLmFwcGx5T3B0aW9ucyh7YXV0b3NjYWxlSW5mb1Byb3ZpZGVyOmkoKCk9Pih7cHJpY2VSYW5nZTp7bWluVmFsdWU6MCxtYXhWYWx1ZTp0aGlzLnlBeGlzTWF4fX0pLCJhdXRvc2NhbGVJbmZvUHJvdmlkZXIiKX0pfWFzeW5jIHVwZGF0ZVNlcmllcyhGLGo9ITApe2lmKHRoaXMuY2hhcnQpdHJ5e2lmKHRoaXMuaW50ZXJuYWxDaGFydERhdGE9Rix0aGlzLnJvbGxpbmdXaW5kb3c+MCYmdGhpcy5yZWFsdGltZU1vZGUpe2xldCB1ZT1EYXRlLm5vdygpLGxlPXVlLXRoaXMucm9sbGluZ1dpbmRvdztpZihGLmxlbmd0aCE9PXRoaXMuc2VyaWVzQXBpcy5zaXplKXRoaXMucmVjcmVhdGVTZXJpZXMoRik7ZWxzZXtsZXQgUT10aGlzLmdldFNlcmllc0NvbG9ycyghdGhpcy5nb0JyaWdodCk7Ri5mb3JFYWNoKChpZSx0ZSk9PntsZXQgZWU9aWUubmFtZXx8YHNlcmllcy0ke3RlfWAsa2U9dGhpcy5zZXJpZXNBcGlzLmdldChlZSk7aWYoIWtlKXJldHVybjtsZXQgWD1pZS5kYXRhLmZpbHRlcihaPT4odHlwZW9mIFoueD09Im51bWJlciI/Wi54Om5ldyBEYXRlKFoueCkuZ2V0VGltZSgpKT5sZSk7a2Uuc2V0RGF0YSh0aGlzLmNvbnZlcnREYXRhVG9MQyhYKSksdGhpcy51cGRhdGVQcmljZUxpbmVzKGVlLGtlLFgsUVt0ZSVRLmxlbmd0aF0pfSksdGhpcy5jb21wdXRlU3RhdHMoRil9dHJ5e3RoaXMuY2hhcnQudGltZVNjYWxlKCkuc2V0VmlzaWJsZVJhbmdlKHtmcm9tOk1hdGguZmxvb3IobGUvMWUzKSx0bzpNYXRoLmZsb29yKHVlLzFlMyl9KX1jYXRjaHt9aWYodGhpcy55QXhpc1NjYWxpbmc9PT0iZHluYW1pYyIpe2xldCBRPUYuZmxhdE1hcChpZT0+aWUuZGF0YS5maWx0ZXIodGU9Pih0eXBlb2YgdGUueD09Im51bWJlciI/dGUueDpuZXcgRGF0ZSh0ZS54KS5nZXRUaW1lKCkpPmxlKS5tYXAodGU9PnRlLnkpKTtpZihRLmxlbmd0aD4wKXtsZXQgaWU9TWF0aC5jZWlsKE1hdGgubWF4KC4uLlEpKjEuMSk7Zm9yKGxldFssdGVdb2YgdGhpcy5zZXJpZXNBcGlzKXRlLmFwcGx5T3B0aW9ucyh7YXV0b3NjYWxlSW5mb1Byb3ZpZGVyOmkoKCk9Pih7cHJpY2VSYW5nZTp7bWluVmFsdWU6MCxtYXhWYWx1ZTppZX19KSwiYXV0b3NjYWxlSW5mb1Byb3ZpZGVyIil9KX19fWVsc2UgaWYoRi5sZW5ndGghPT10aGlzLnNlcmllc0FwaXMuc2l6ZSl0aGlzLnJlY3JlYXRlU2VyaWVzKEYpO2Vsc2V7bGV0IHVlPXRoaXMuZ2V0U2VyaWVzQ29sb3JzKCF0aGlzLmdvQnJpZ2h0KTtGLmZvckVhY2goKGxlLFEpPT57bGV0IGllPWxlLm5hbWV8fGBzZXJpZXMtJHtRfWAsdGU9dGhpcy5zZXJpZXNBcGlzLmdldChpZSk7dGUmJih0ZS5zZXREYXRhKHRoaXMuY29udmVydERhdGFUb0xDKGxlLmRhdGEpKSx0aGlzLnVwZGF0ZVByaWNlTGluZXMoaWUsdGUsbGUuZGF0YSx1ZVtRJXVlLmxlbmd0aF0pKX0pLHRoaXMuY29tcHV0ZVN0YXRzKEYpfX1jYXRjaCh1ZSl7Y29uc29sZS5lcnJvcigiRmFpbGVkIHRvIHVwZGF0ZSBjaGFydCBzZXJpZXM6Iix1ZSl9fWFzeW5jIHVwZGF0ZVRpbWVXaW5kb3coKXtpZighdGhpcy5jaGFydHx8dGhpcy5yb2xsaW5nV2luZG93PD0wKXJldHVybjtsZXQgRj1EYXRlLm5vdygpLGo9Ri10aGlzLnJvbGxpbmdXaW5kb3c7dHJ5e3RoaXMuY2hhcnQudGltZVNjYWxlKCkuc2V0VmlzaWJsZVJhbmdlKHtmcm9tOk1hdGguZmxvb3Ioai8xZTMpLHRvOk1hdGguZmxvb3IoRi8xZTMpfSl9Y2F0Y2h7fX1hc3luYyBhcHBlbmREYXRhKEYpe3RoaXMuY2hhcnQmJkYuZm9yRWFjaCgoaix1ZSk9PntsZXQgbGU9ai5uYW1lfHxgc2VyaWVzLSR7dWV9YCxRPXRoaXMuc2VyaWVzQXBpcy5nZXQobGUpO2lmKCEoIVF8fGouZGF0YS5sZW5ndGg9PT0wKSlmb3IobGV0IGllIG9mIGouZGF0YSl7bGV0IHRlPXRoaXMuY29udmVydERhdGFUb0xDKFtpZV0pO3RlLmxlbmd0aD4wJiZRLnVwZGF0ZSh0ZVswXSl9fSl9YXN5bmMgdXBkYXRlT3B0aW9ucyhGKXt0aGlzLmNoYXJ0JiZ0aGlzLmNoYXJ0LmFwcGx5T3B0aW9ucyhGKX1hc3luYyByZXNpemVDaGFydCgpe3RoaXMuY2hhcnQmJnRoaXMuY2hhcnQudGltZVNjYWxlKCkuZml0Q29udGVudCgpfWFzeW5jIGZvcmNlUmVzaXplKCl7YXdhaXQgdGhpcy5yZXNpemVDaGFydCgpfXRvZ2dsZUZ1bGxQYWdlKCl7dGhpcy5pc0Z1bGxQYWdlPSF0aGlzLmlzRnVsbFBhZ2UsdGhpcy5pc0Z1bGxQYWdlPyh0aGlzLnN0eWxlLnBvc2l0aW9uPSJmaXhlZCIsdGhpcy5zdHlsZS5pbnNldD0iMCIsdGhpcy5zdHlsZS56SW5kZXg9IjEwMDAwIix0aGlzLnN0eWxlLmhlaWdodD0iMTAwdmgiLHRoaXMuc3R5bGUucGFkZGluZz0iMCIsZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIik6KHRoaXMuc3R5bGUucG9zaXRpb249IiIsdGhpcy5zdHlsZS5pbnNldD0iIix0aGlzLnN0eWxlLnpJbmRleD0iIix0aGlzLnN0eWxlLmhlaWdodD0iIix0aGlzLnN0eWxlLnBhZGRpbmc9IiIsZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz0iIikscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dGhpcy5jaGFydD8udGltZVNjYWxlKCkuZml0Q29udGVudCgpfSl9c3RhcnRBdXRvU2Nyb2xsKCl7dGhpcy5hdXRvU2Nyb2xsVGltZXJ8fCh0aGlzLmF1dG9TY3JvbGxUaW1lcj13aW5kb3cuc2V0SW50ZXJ2YWwoKCk9Pnt0aGlzLnVwZGF0ZVRpbWVXaW5kb3coKX0sdGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwpKX1zdG9wQXV0b1Njcm9sbCgpe3RoaXMuYXV0b1Njcm9sbFRpbWVyJiYod2luZG93LmNsZWFySW50ZXJ2YWwodGhpcy5hdXRvU2Nyb2xsVGltZXIpLHRoaXMuYXV0b1Njcm9sbFRpbWVyPW51bGwpfXN0YXRpY3tDaShhLHQpfX07cmV0dXJuIGhlPWF9KSgpfSk7dmFyICRmYT1nKCgpPT57TGl0KCl9KTtmdW5jdGlvbiBxaChzKXtyZXR1cm4gcz9FZmEubGlnaHQ6RWZhLmRhcmt9ZnVuY3Rpb24gamgocyxlKXtsZXQgdD1wYXJzZUludChzLnNsaWNlKDEsMyksMTYpLGE9cGFyc2VJbnQocy5zbGljZSgzLDUpLDE2KSxyPXBhcnNlSW50KHMuc2xpY2UoNSw3KSwxNik7cmV0dXJuYHJnYmEoJHt0fSwgJHthfSwgJHtyfSwgJHtlfSlgfWZ1bmN0aW9uIFBmYShzKXtsZXQgZT1zP0RmYTpMZmE7cmV0dXJue2JhY2tncm91bmRDb2xvcjoidHJhbnNwYXJlbnQiLHRleHRTdHlsZTp7Y29sb3I6ZS50ZXh0U2Vjb25kYXJ5LGZvbnRGYW1pbHk6Jy1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgIlNlZ29lIFVJIiwgc2Fucy1zZXJpZicsZm9udFNpemU6MTJ9LHRvb2x0aXA6e2JhY2tncm91bmRDb2xvcjplLmJnUHJpbWFyeSxib3JkZXJDb2xvcjplLmJvcmRlckRlZmF1bHQsdGV4dFN0eWxlOntjb2xvcjplLnRleHRQcmltYXJ5LGZvbnRTaXplOjEyfSxjb25maW5lOiEwfSxsZWdlbmQ6e3RleHRTdHlsZTp7Y29sb3I6ZS50ZXh0U2Vjb25kYXJ5LGZvbnRTaXplOjEyfX19fWZ1bmN0aW9uIFZoKHMpe3JldHVybiBzP0RmYTpMZmF9dmFyIERmYSxMZmEsRWZhLFp2PWcoKCk9PntwdCgpO0RmYT1XbC5jb2xvcnMubGlnaHQsTGZhPVdsLmNvbG9ycy5kYXJrLEVmYT17ZGFyazpbIiM2MGE1ZmEiLCIjMmRkNGJmIiwiI2E3OGJmYSIsIiNmYmJmMjQiLCIjMzRkMzk5IiwiI2ZiNzE4NSJdLGxpZ2h0OlsiIzNiODJmNiIsIiMxNGI4YTYiLCIjOGI1Y2Y2IiwiI2Y1OWUwYiIsIiMxMGI5ODEiLCIjZjQzZjVlIl19O2kocWgsImdldEVjaGFydHNTZXJpZXNDb2xvcnMiKTtpKGpoLCJoZXhUb1JnYmEiKTtpKFBmYSwiZ2V0RWNoYXJ0c1RoZW1lT3B0aW9ucyIpO2koVmgsImdldFRoZW1lQ29sb3JzIil9KTt2YXIgalhhLElmYSxidSxWWD1nKCgpPT57cGUoKTtrdCgpO2Z1KCk7WnYoKTtucigpO2pYYT1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sSWZhPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxidT0oKCk9PntsZXQgcz13ZSxlLHQ9W10sYT1bXTtyZXR1cm4gY2xhc3MgZXh0ZW5kcyBze3N0YXRpY3tpKHRoaXMsIkRlZXNDaGFydEVjaGFydHNCYXNlIil9c3RhdGlje2xldCBuPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHNbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO2U9W0woKV0salhhKHRoaXMsbnVsbCxlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibGFiZWwiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkobz0+ImxhYmVsImluIG8sImhhcyIpLGdldDppKG89Pm8ubGFiZWwsImdldCIpLHNldDppKChvLGwpPT57by5sYWJlbD1sfSwic2V0Iil9LG1ldGFkYXRhOm59LHQsYSksbiYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpufSl9I2U9SWZhKHRoaXMsdCwiVW50aXRsZWQgQ2hhcnQiKTtnZXQgbGFiZWwoKXtyZXR1cm4gdGhpcy4jZX1zZXQgbGFiZWwobil7dGhpcy4jZT1ufWNoYXJ0SW5zdGFuY2U9KElmYSh0aGlzLGEpLG51bGwpO2VjaGFydHNCdW5kbGU9bnVsbDtyZXNpemVPYnNlcnZlcj1udWxsO2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0YS5zZXR1cCgpLHRoaXMucmVnaXN0ZXJHYXJiYWdlRnVuY3Rpb24oYXN5bmMoKT0+e2lmKHRoaXMucmVzaXplT2JzZXJ2ZXImJih0aGlzLnJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKSx0aGlzLnJlc2l6ZU9ic2VydmVyPW51bGwpLHRoaXMuY2hhcnRJbnN0YW5jZSl0cnl7dGhpcy5jaGFydEluc3RhbmNlLmRpc3Bvc2UoKSx0aGlzLmNoYXJ0SW5zdGFuY2U9bnVsbH1jYXRjaChuKXtjb25zb2xlLmVycm9yKCJFcnJvciBkaXNwb3NpbmcgRUNoYXJ0cyBpbnN0YW5jZToiLG4pfX0pfXJlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGVlcy10aWxlPgogICAgICAgIDxkaXYgc2xvdD0iaGVhZGVyIiBjbGFzcz0iY2hhcnRIZWFkZXIiPgogICAgICAgICAgPHNwYW4gY2xhc3M9ImNoYXJ0TGFiZWwiPiR7dGhpcy5sYWJlbH08L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY2hhcnRDb250YWluZXIiPjwvZGl2PgogICAgICA8L2RlZXMtdGlsZT4KICAgIGB9YXN5bmMgZmlyc3RVcGRhdGVkKCl7YXdhaXQgdGhpcy5kb210b29sc1Byb21pc2UsdGhpcy5lY2hhcnRzQnVuZGxlPWF3YWl0IFFyLmdldEluc3RhbmNlKCkubG9hZEVjaGFydHMoKSxhd2FpdCBuZXcgUHJvbWlzZShvPT5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUobykpO2xldCBuPXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIuY2hhcnRDb250YWluZXIiKTtpZihuKXRyeXt0aGlzLmNoYXJ0SW5zdGFuY2U9dGhpcy5lY2hhcnRzQnVuZGxlLmluaXQobixudWxsLHtyZW5kZXJlcjoic3ZnIn0pLHRoaXMudXBkYXRlQ2hhcnQoKSx0aGlzLnJlc2l6ZU9ic2VydmVyPW5ldyBSZXNpemVPYnNlcnZlcigoKT0+e3RoaXMuY2hhcnRJbnN0YW5jZT8ucmVzaXplKCl9KSx0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUobil9Y2F0Y2gobyl7Y29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGluaXRpYWxpemUgRUNoYXJ0czoiLG8pfX1hc3luYyB1cGRhdGVkKG4pe3N1cGVyLnVwZGF0ZWQobiksbi5oYXMoImdvQnJpZ2h0IikmJnRoaXMuY2hhcnRJbnN0YW5jZSYmdGhpcy5hcHBseVRoZW1lKCl9dXBkYXRlQ2hhcnQoKXtpZighdGhpcy5jaGFydEluc3RhbmNlKXJldHVybjtsZXQgbj1QZmEodGhpcy5nb0JyaWdodCksbz10aGlzLmJ1aWxkT3B0aW9uKCksbD17Li4ubiwuLi5vLHRleHRTdHlsZTp7Li4ubi50ZXh0U3R5bGUsLi4uby50ZXh0U3R5bGV8fHt9fSx0b29sdGlwOnsuLi5uLnRvb2x0aXAsLi4uby50b29sdGlwfHx7fX0sbGVnZW5kOnsuLi5uLmxlZ2VuZCwuLi5vLmxlZ2VuZHx8e30sdGV4dFN0eWxlOnsuLi5uLmxlZ2VuZD8udGV4dFN0eWxlfHx7fSwuLi5vLmxlZ2VuZD8udGV4dFN0eWxlfHx7fX19fTt0aGlzLmNoYXJ0SW5zdGFuY2Uuc2V0T3B0aW9uKGwsITApfWFwcGx5VGhlbWUoKXt0aGlzLnVwZGF0ZUNoYXJ0KCl9YXN5bmMgZm9yY2VSZXNpemUoKXt0aGlzLmNoYXJ0SW5zdGFuY2U/LnJlc2l6ZSgpfX19KSgpfSk7dmFyIEFmYSxOZmE9ZygoKT0+e3BlKCk7SXQoKTtFaXQoKTtBZmE9aSgoKT0+e2xldCBzPVsiL2FwaS91c2VycyIsIi9hcGkvb3JkZXJzIiwiL2FwaS9wcm9kdWN0cyIsIi9hcGkvYXV0aCIsIi9hcGkvc2VhcmNoIl0sZT1be25hbWU6IkdFVCIsZGF0YTpbMTI0MCw4OTAsNzIwLDIxMDAsNTYwXX0se25hbWU6IlBPU1QiLGRhdGE6WzMyMCw0NTAsMTgwLDg5MCw0MF19LHtuYW1lOiJQVVQiLGRhdGE6WzkwLDIxMCwxNTAsMzAsMTBdfV0sdD1bIlVTLUVhc3QiLCJVUy1XZXN0IiwiRVUiLCJBc2lhIiwiT3RoZXIiXSxhPVt7bmFtZToiUmVxdWVzdHMiLGRhdGE6WzQ1MDAsMzIwMCwyODAwLDE5MDAsNjAwXX1dO3JldHVybiB3YAogICAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcj0+e2xldCBuPXIucXVlcnlTZWxlY3RvcigiI3ZlcnQtY2hhcnQiKSxvPXIucXVlcnlTZWxlY3RvcigiI2hvcml6LWNoYXJ0IiksbD1yLnF1ZXJ5U2VsZWN0b3IoIiNzdGFjay1jaGFydCIpO3IucXVlcnlTZWxlY3RvckFsbCgiZGVlcy1idXR0b24iKS5mb3JFYWNoKGQ9PntkLnRleHQ/LnRyaW0oKT09PSJSYW5kb21pemUiJiZkLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e24uc2VyaWVzPWUubWFwKGM9Pih7Li4uYyxkYXRhOmMuZGF0YS5tYXAoYj0+TWF0aC5yb3VuZChiKiguNStNYXRoLnJhbmRvbSgpKSkpfSkpLG8uc2VyaWVzPWEubWFwKGM9Pih7Li4uYyxkYXRhOmMuZGF0YS5tYXAoYj0+TWF0aC5yb3VuZChiKiguNStNYXRoLnJhbmRvbSgpKSkpfSkpLGwuc2VyaWVzPWUubWFwKGM9Pih7Li4uYyxkYXRhOmMuZGF0YS5tYXAoYj0+TWF0aC5yb3VuZChiKiguNStNYXRoLnJhbmRvbSgpKSkpfSkpfSl9KX19PgogICAgICA8c3R5bGU+CiAgICAgICAgJHtKYAogICAgICAgICAgLmRlbW9Cb3ggewogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5NSUpIiwiaHNsKDAgMCUgOSUpIil9OwogICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBwYWRkaW5nOiA0MHB4OwogICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICBnYXA6IDI0cHg7CiAgICAgICAgICB9CiAgICAgICAgICAuY2hhcnRSb3cgewogICAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7CiAgICAgICAgICAgIGdhcDogMjRweDsKICAgICAgICAgIH0KICAgICAgICAgIC5jb250cm9scyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGdhcDogMTJweDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICAgICAgfQogICAgICAgICAgLmluZm8gewogICAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuNCAxNi4zJSA1Ni45JSkiLCJoc2woMjE1IDIwLjIlIDU1LjElKSIpfTsKICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgICAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCAnR2Vpc3QgU2FucycsIHNhbnMtc2VyaWY7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLXRvcDogOHB4OwogICAgICAgICAgfQogICAgICAgIGB9CiAgICAgIDwvc3R5bGU+CiAgICAgIDxkaXYgY2xhc3M9ImRlbW9Cb3giPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2xzIj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbi1ncm91cCBsYWJlbD0iQWN0aW9uczoiPgogICAgICAgICAgICA8ZGVlcy1idXR0b24+UmFuZG9taXplPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDwvZGVlcy1idXR0b24tZ3JvdXA+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9ImNoYXJ0Um93Ij4KICAgICAgICAgIDxkZWVzLWNoYXJ0LWJhcgogICAgICAgICAgICBpZD0idmVydC1jaGFydCIKICAgICAgICAgICAgLmxhYmVsPSR7IlJlcXVlc3RzIGJ5IEVuZHBvaW50In0KICAgICAgICAgICAgLmNhdGVnb3JpZXM9JHtzfQogICAgICAgICAgICAuc2VyaWVzPSR7ZX0KICAgICAgICAgICAgLnZhbHVlRm9ybWF0dGVyPSR7cj0+YCR7cn0gcmVxYH0KICAgICAgICAgID48L2RlZXMtY2hhcnQtYmFyPgoKICAgICAgICAgIDxkZWVzLWNoYXJ0LWJhcgogICAgICAgICAgICBpZD0iaG9yaXotY2hhcnQiCiAgICAgICAgICAgIC5sYWJlbD0keyJUcmFmZmljIGJ5IFJlZ2lvbiJ9CiAgICAgICAgICAgIC5jYXRlZ29yaWVzPSR7dH0KICAgICAgICAgICAgLnNlcmllcz0ke2F9CiAgICAgICAgICAgIC5ob3Jpem9udGFsPSR7ITB9CiAgICAgICAgICAgIC52YWx1ZUZvcm1hdHRlcj0ke3I9PmAkeyhyLzFlMykudG9GaXhlZCgxKX1rYH0KICAgICAgICAgID48L2RlZXMtY2hhcnQtYmFyPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGVlcy1jaGFydC1iYXIKICAgICAgICAgIGlkPSJzdGFjay1jaGFydCIKICAgICAgICAgIC5sYWJlbD0keyJTdGFja2VkOiBSZXF1ZXN0cyBieSBFbmRwb2ludCJ9CiAgICAgICAgICAuY2F0ZWdvcmllcz0ke3N9CiAgICAgICAgICAuc2VyaWVzPSR7ZX0KICAgICAgICAgIC5zdGFja2VkPSR7ITB9CiAgICAgICAgICAudmFsdWVGb3JtYXR0ZXI9JHtyPT5gJHtyfSByZXFgfQogICAgICAgID48L2RlZXMtY2hhcnQtYmFyPgoKICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvIj4KICAgICAgICAgIEJhciBjaGFydCB3aXRoIHZlcnRpY2FsLCBob3Jpem9udGFsLCBhbmQgc3RhY2tlZCBtb2RlcyDigKIKICAgICAgICAgIENsaWNrICdSYW5kb21pemUnIHRvIHVwZGF0ZSBkYXRhIHdpdGggYW5pbWF0aW9uCiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgogIGB9LCJkZW1vRnVuYyIpfSk7dmFyIFVoLFVYPWcoKCk9PntwZSgpO3B0KCk7VWg9W0hlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgOmhvc3QgewogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgaGVpZ2h0OiA0MDBweDsKICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgJ1JvYm90bycsIHNhbnMtc2VyaWY7CiAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIH0KICAgIGRlZXMtdGlsZSB7CiAgICAgIGhlaWdodDogMTAwJTsKICAgIH0KICAgIC5jaGFydEhlYWRlciB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGhlaWdodDogMzJweDsKICAgICAgcGFkZGluZzogMCA4cHggMCAxNnB4OwogICAgfQogICAgLmNoYXJ0TGFiZWwgewogICAgICBmbGV4OiAxOwogICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXNlY29uZGFyeSk7CiAgICB9CiAgICAuY2hhcnRDb250YWluZXIgewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIGluc2V0OiAwOwogICAgfQogIGBdfSk7dmFyIFJmYSxPZmE9ZygoKT0+e3BlKCk7VVgoKTtSZmE9Wy4uLlVoLEpgYF19KTt2YXIgRmZhLEJmYT1nKCgpPT57cGUoKTtGZmE9aShzPT53YAogICAgPGRlZXMtdGlsZT4KICAgICAgPGRpdiBzbG90PSJoZWFkZXIiIGNsYXNzPSJjaGFydEhlYWRlciI+CiAgICAgICAgPHNwYW4gY2xhc3M9ImNoYXJ0TGFiZWwiPiR7cy5sYWJlbH08L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjaGFydENvbnRhaW5lciI+PC9kaXY+CiAgICA8L2RlZXMtdGlsZT4KICBgLCJyZW5kZXJDaGFydEJhciIpfSk7dmFyIHZnLFFsLEhmYSxFaXQ9ZygoKT0+e3BlKCk7VlgoKTtOZmEoKTtPZmEoKTtCZmEoKTtadigpO3ZnPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxRbD1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sSGZhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1jaGFydC1iYXIiKV0sZSx0PVtdLGEscj1idSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXTt2YXIgTz1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0NoYXJ0QmFyIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0ICQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpBcnJheX0pXSxwPVtMKHt0eXBlOkFycmF5fSldLGM9W0woe3R5cGU6Qm9vbGVhbn0pXSx4PVtMKHt0eXBlOkJvb2xlYW59KV0seT1bTCh7dHlwZTpCb29sZWFufSldLE49W0woe2F0dHJpYnV0ZTohMX0pXSx2Zyh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNhdGVnb3JpZXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+ImNhdGVnb3JpZXMiaW4gRSwiaGFzIiksZ2V0OmkoRT0+RS5jYXRlZ29yaWVzLCJnZXQiKSxzZXQ6aSgoRSxIKT0+e0UuY2F0ZWdvcmllcz1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LG8sbCksdmcodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZXJpZXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+InNlcmllcyJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLnNlcmllcywiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLnNlcmllcz1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LGQsdSksdmcodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJob3Jpem9udGFsIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEU9PiJob3Jpem9udGFsImluIEUsImhhcyIpLGdldDppKEU9PkUuaG9yaXpvbnRhbCwiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLmhvcml6b250YWw9SH0sInNldCIpfSxtZXRhZGF0YTokfSxiLHYpLHZnKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToic3RhY2tlZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShFPT4ic3RhY2tlZCJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLnN0YWNrZWQsImdldCIpLHNldDppKChFLEgpPT57RS5zdGFja2VkPUh9LCJzZXQiKX0sbWV0YWRhdGE6JH0sbSxmKSx2Zyh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dMZWdlbmQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+InNob3dMZWdlbmQiaW4gRSwiaGFzIiksZ2V0OmkoRT0+RS5zaG93TGVnZW5kLCJnZXQiKSxzZXQ6aSgoRSxIKT0+e0Uuc2hvd0xlZ2VuZD1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LE0seiksdmcodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2YWx1ZUZvcm1hdHRlciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShFPT4idmFsdWVGb3JtYXR0ZXIiaW4gRSwiaGFzIiksZ2V0OmkoRT0+RS52YWx1ZUZvcm1hdHRlciwiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLnZhbHVlRm9ybWF0dGVyPUh9LCJzZXQiKX0sbWV0YWRhdGE6JH0sQyxfKSx2ZyhudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTokfSxudWxsLHQpLE89YT1lLnZhbHVlLCQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6JH0pfXN0YXRpYyBkZW1vPUFmYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIkNoYXJ0Il07I2U9UWwodGhpcyxvLFtdKTtnZXQgY2F0ZWdvcmllcygpe3JldHVybiB0aGlzLiNlfXNldCBjYXRlZ29yaWVzKCQpe3RoaXMuI2U9JH0jdD0oUWwodGhpcyxsKSxRbCh0aGlzLGQsW10pKTtnZXQgc2VyaWVzKCl7cmV0dXJuIHRoaXMuI3R9c2V0IHNlcmllcygkKXt0aGlzLiN0PSR9I2E9KFFsKHRoaXMsdSksUWwodGhpcyxiLCExKSk7Z2V0IGhvcml6b250YWwoKXtyZXR1cm4gdGhpcy4jYX1zZXQgaG9yaXpvbnRhbCgkKXt0aGlzLiNhPSR9I3M9KFFsKHRoaXMsdiksUWwodGhpcyxtLCExKSk7Z2V0IHN0YWNrZWQoKXtyZXR1cm4gdGhpcy4jc31zZXQgc3RhY2tlZCgkKXt0aGlzLiNzPSR9I2k9KFFsKHRoaXMsZiksUWwodGhpcyxNLCEwKSk7Z2V0IHNob3dMZWdlbmQoKXtyZXR1cm4gdGhpcy4jaX1zZXQgc2hvd0xlZ2VuZCgkKXt0aGlzLiNpPSR9I3I9KFFsKHRoaXMseiksUWwodGhpcyxDLCQ9PmAkeyR9YCkpO2dldCB2YWx1ZUZvcm1hdHRlcigpe3JldHVybiB0aGlzLiNyfXNldCB2YWx1ZUZvcm1hdHRlcigkKXt0aGlzLiNyPSR9c3RhdGljIHN0eWxlcz1SZmE7cmVuZGVyKCl7cmV0dXJuIEZmYSh0aGlzKX1hc3luYyB1cGRhdGVkKCQpe3N1cGVyLnVwZGF0ZWQoJCksdGhpcy5jaGFydEluc3RhbmNlJiYoJC5oYXMoImNhdGVnb3JpZXMiKXx8JC5oYXMoInNlcmllcyIpfHwkLmhhcygiaG9yaXpvbnRhbCIpfHwkLmhhcygic3RhY2tlZCIpfHwkLmhhcygic2hvd0xlZ2VuZCIpKSYmdGhpcy51cGRhdGVDaGFydCgpfWJ1aWxkT3B0aW9uKCl7bGV0ICQ9VmgodGhpcy5nb0JyaWdodCksRT1xaCh0aGlzLmdvQnJpZ2h0KSxIPXRoaXMudmFsdWVGb3JtYXR0ZXIsaz17dHlwZToiY2F0ZWdvcnkiLGRhdGE6dGhpcy5jYXRlZ29yaWVzLGF4aXNMaW5lOntsaW5lU3R5bGU6e2NvbG9yOiQuYm9yZGVyU3Ryb25nfX0sYXhpc0xhYmVsOntjb2xvcjokLnRleHRNdXRlZH19LFM9e3R5cGU6InZhbHVlIixheGlzTGluZTp7c2hvdzohMX0sYXhpc0xhYmVsOntjb2xvcjokLnRleHRNdXRlZCxmb3JtYXR0ZXI6aShXPT5IKFcpLCJmb3JtYXR0ZXIiKX0sc3BsaXRMaW5lOntsaW5lU3R5bGU6e2NvbG9yOiQuYm9yZGVyU3VidGxlfX19LEk9dGhpcy5nb0JyaWdodD8uMTU6LjI1LFA9dGhpcy5ob3Jpem9udGFsP1swLDQsNCwwXTpbNCw0LDAsMF0sUj1bMCwwLDAsMF0sSz1bXSxWPXRoaXMuc2VyaWVzLm1hcCgoVyxtZSk9PntsZXQgQj1XLmNvbG9yfHxFW21lJUUubGVuZ3RoXTtyZXR1cm4gSy5wdXNoKHtuYW1lOlcubmFtZSxpdGVtU3R5bGU6e2NvbG9yOkJ9fSkse25hbWU6Vy5uYW1lLHR5cGU6ImJhciIsZGF0YTpXLmRhdGEsc3RhY2s6dGhpcy5zdGFja2VkPyJ0b3RhbCI6dm9pZCAwLGl0ZW1TdHlsZTp7Y29sb3I6amgoQixJKSxib3JkZXJDb2xvcjpCLGJvcmRlcldpZHRoOjEsYm9yZGVyUmFkaXVzOnRoaXMuc3RhY2tlZD9SOlB9LGJhck1heFdpZHRoOjQwLGJhckdhcDoiMjAlIixlbXBoYXNpczp7aXRlbVN0eWxlOntjb2xvcjpqaChCLEkrLjE1KSxib3JkZXJDb2xvcjpCLGJvcmRlcldpZHRoOjEuNX19fX0pO2lmKHRoaXMuc3RhY2tlZCYmVi5sZW5ndGg+MCl7bGV0IFc9VltWLmxlbmd0aC0xXTtXLml0ZW1TdHlsZS5ib3JkZXJSYWRpdXM9UH1yZXR1cm57dG9vbHRpcDp7dHJpZ2dlcjoiYXhpcyIsYXhpc1BvaW50ZXI6e3R5cGU6InNoYWRvdyJ9LGZvcm1hdHRlcjppKFc9PntsZXQgbWU9QXJyYXkuaXNBcnJheShXKT9XOltXXSxCPWA8c3Ryb25nPiR7bWVbMF0uYXhpc1ZhbHVlTGFiZWx9PC9zdHJvbmc+PGJyLz5gO2ZvcihsZXQgVSBvZiBtZSl7bGV0IEY9YDxzcGFuIHN0eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tcmlnaHQ6NHB4O2JvcmRlci1yYWRpdXM6MTBweDt3aWR0aDoxMHB4O2hlaWdodDoxMHB4O2JhY2tncm91bmQtY29sb3I6JHtVLmJvcmRlckNvbG9yfHxVLmNvbG9yfTsiPjwvc3Bhbj5gO0IrPWAke0Z9JHtVLnNlcmllc05hbWV9OiA8c3Ryb25nPiR7SChVLnZhbHVlKX08L3N0cm9uZz48YnIvPmB9cmV0dXJuIEJ9LCJmb3JtYXR0ZXIiKX0sbGVnZW5kOnRoaXMuc2hvd0xlZ2VuZCYmdGhpcy5zZXJpZXMubGVuZ3RoPjE/e2JvdHRvbTo4LGl0ZW1XaWR0aDoxMCxpdGVtSGVpZ2h0OjEwLGRhdGE6S306e3Nob3c6ITF9LGdyaWQ6e2xlZnQ6MTYscmlnaHQ6MTYsdG9wOjE2LGJvdHRvbTp0aGlzLnNob3dMZWdlbmQmJnRoaXMuc2VyaWVzLmxlbmd0aD4xPzQwOjE2LGNvbnRhaW5MYWJlbDohMH0seEF4aXM6dGhpcy5ob3Jpem9udGFsP1M6ayx5QXhpczp0aGlzLmhvcml6b250YWw/azpTLHNlcmllczpWfX1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksUWwodGhpcyxfKX1zdGF0aWN7UWwoYSx0KX19O3JldHVybiBPPWF9KSgpfSk7dmFyIHFmYT1nKCgpPT57RWl0KCl9KTt2YXIgamZhLFZmYT1nKCgpPT57cGUoKTtJdCgpO1BpdCgpO2pmYT1pKCgpPT57bGV0IHM9W3tuYW1lOiJEb2N1bWVudHMiLHZhbHVlOjQyfSx7bmFtZToiTWVkaWEiLHZhbHVlOjI4fSx7bmFtZToiQXBwbGljYXRpb25zIix2YWx1ZToxNX0se25hbWU6IlN5c3RlbSIsdmFsdWU6MTB9LHtuYW1lOiJPdGhlciIsdmFsdWU6NX1dLGU9W3tuYW1lOiJIZWFsdGh5Iix2YWx1ZToxNTZ9LHtuYW1lOiJXYXJuaW5nIix2YWx1ZToyM30se25hbWU6IkNyaXRpY2FsIix2YWx1ZTo4fSx7bmFtZToiVW5rbm93biIsdmFsdWU6M31dLHQ9W3tuYW1lOiJBUEkiLHZhbHVlOjQ1MjAwfSx7bmFtZToiU3RhdGljIEFzc2V0cyIsdmFsdWU6MjMxMDB9LHtuYW1lOiJXZWJTb2NrZXQiLHZhbHVlOjEyODAwfSx7bmFtZToiR3JhcGhRTCIsdmFsdWU6ODkwMH1dO3JldHVybiB3YAogICAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgYT0+e2xldCByPWEucXVlcnlTZWxlY3RvcigiI2Rpc2stY2hhcnQiKSxuPWEucXVlcnlTZWxlY3RvcigiI3N0YXR1cy1jaGFydCIpLG89YS5xdWVyeVNlbGVjdG9yKCIjdHJhZmZpYy1jaGFydCIpO2EucXVlcnlTZWxlY3RvckFsbCgiZGVlcy1idXR0b24iKS5mb3JFYWNoKHA9PntwLnRleHQ/LnRyaW0oKT09PSJSYW5kb21pemUiJiZwLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e3IuZGF0YT1zLm1hcCh1PT4oey4uLnUsdmFsdWU6TWF0aC5yb3VuZCh1LnZhbHVlKiguNStNYXRoLnJhbmRvbSgpKSl9KSksbi5kYXRhPWUubWFwKHU9Pih7Li4udSx2YWx1ZTpNYXRoLnJvdW5kKHUudmFsdWUqKC4zK01hdGgucmFuZG9tKCkqMS40KSl9KSksby5kYXRhPXQubWFwKHU9Pih7Li4udSx2YWx1ZTpNYXRoLnJvdW5kKHUudmFsdWUqKC41K01hdGgucmFuZG9tKCkpKX0pKX0pfSl9fT4KICAgICAgPHN0eWxlPgogICAgICAgICR7SmAKICAgICAgICAgIC5kZW1vQm94IHsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTUlKSIsImhzbCgwIDAlIDklKSIpfTsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgcGFkZGluZzogNDBweDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgICAgfQogICAgICAgICAgLmNoYXJ0Um93IHsKICAgICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOwogICAgICAgICAgICBnYXA6IDI0cHg7CiAgICAgICAgICB9CiAgICAgICAgICAuY29udHJvbHMgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgICAgIH0KICAgICAgICAgIC5pbmZvIHsKICAgICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNTYuOSUpIiwiaHNsKDIxNSAyMC4yJSA1NS4xJSkiKX07CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgJ0dlaXN0IFNhbnMnLCBzYW5zLXNlcmlmOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDhweDsKICAgICAgICAgIH0KICAgICAgICBgfQogICAgICA8L3N0eWxlPgogICAgICA8ZGl2IGNsYXNzPSJkZW1vQm94Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9scyI+CiAgICAgICAgICA8ZGVlcy1idXR0b24tZ3JvdXAgbGFiZWw9IkFjdGlvbnM6Ij4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uPlJhbmRvbWl6ZTwvZGVlcy1idXR0b24+CiAgICAgICAgICA8L2RlZXMtYnV0dG9uLWdyb3VwPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJjaGFydFJvdyI+CiAgICAgICAgICA8ZGVlcy1jaGFydC1kb251dAogICAgICAgICAgICBpZD0iZGlzay1jaGFydCIKICAgICAgICAgICAgLmxhYmVsPSR7IkRpc2sgVXNhZ2UgKEdCKSJ9CiAgICAgICAgICAgIC5kYXRhPSR7c30KICAgICAgICAgICAgLnZhbHVlRm9ybWF0dGVyPSR7YT0+YCR7YX0gR0JgfQogICAgICAgICAgPjwvZGVlcy1jaGFydC1kb251dD4KCiAgICAgICAgICA8ZGVlcy1jaGFydC1kb251dAogICAgICAgICAgICBpZD0ic3RhdHVzLWNoYXJ0IgogICAgICAgICAgICAubGFiZWw9JHsiU2VydmljZSBTdGF0dXMifQogICAgICAgICAgICAuZGF0YT0ke2V9CiAgICAgICAgICAgIC52YWx1ZUZvcm1hdHRlcj0ke2E9PmAke2F9IHNlcnZpY2VzYH0KICAgICAgICAgICAgLmlubmVyUmFkaXVzUGVyY2VudD0keyIwJSJ9CiAgICAgICAgICA+PC9kZWVzLWNoYXJ0LWRvbnV0PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGVlcy1jaGFydC1kb251dAogICAgICAgICAgaWQ9InRyYWZmaWMtY2hhcnQiCiAgICAgICAgICAubGFiZWw9JHsiVHJhZmZpYyBEaXN0cmlidXRpb24ifQogICAgICAgICAgLmRhdGE9JHt0fQogICAgICAgICAgLnZhbHVlRm9ybWF0dGVyPSR7YT0+YCR7KGEvMWUzKS50b0ZpeGVkKDEpfWsgcmVxYH0KICAgICAgICA+PC9kZWVzLWNoYXJ0LWRvbnV0PgoKICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvIj4KICAgICAgICAgIERvbnV0IGNoYXJ0IHdpdGggY29uZmlndXJhYmxlIGlubmVyIHJhZGl1cyAoc2V0IHRvIDAlIGZvciBmdWxsIHBpZSkg4oCiCiAgICAgICAgICBDbGljayAnUmFuZG9taXplJyB0byB1cGRhdGUgZGF0YSB3aXRoIGFuaW1hdGlvbgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KICBgfSwiZGVtb0Z1bmMiKX0pO3ZhciBVZmEsV2ZhPWcoKCk9PntwZSgpO1VYKCk7VWZhPVsuLi5VaCxKYAogICAgOmhvc3QgewogICAgICBoZWlnaHQ6IDM2MHB4OwogICAgfQogICAgLmNoYXJ0Q29udGFpbmVyIHsKICAgICAgaW5zZXQ6IDEycHggMDsKICAgIH0KICBgXX0pO3ZhciBHZmEsS2ZhPWcoKCk9PntwZSgpO0dmYT1pKHM9PndgCiAgICA8ZGVlcy10aWxlPgogICAgICA8ZGl2IHNsb3Q9ImhlYWRlciIgY2xhc3M9ImNoYXJ0SGVhZGVyIj4KICAgICAgICA8c3BhbiBjbGFzcz0iY2hhcnRMYWJlbCI+JHtzLmxhYmVsfTwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNoYXJ0Q29udGFpbmVyIj48L2Rpdj4KICAgIDwvZGVlcy10aWxlPgogIGAsInJlbmRlckNoYXJ0RG9udXQiKX0pO3ZhciBYdixuMixZZmEsUGl0PWcoKCk9PntwZSgpO1ZYKCk7VmZhKCk7V2ZhKCk7S2ZhKCk7WnYoKTtYdj1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sbjI9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LFlmYT0oKCk9PntsZXQgcz1bbmUoImRlZXMtY2hhcnQtZG9udXQiKV0sZSx0PVtdLGEscj1idSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXTt2YXIgTj1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0NoYXJ0RG9udXQiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgQz10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOkFycmF5fSldLHA9W0woe3R5cGU6Qm9vbGVhbn0pXSxjPVtMKHt0eXBlOkJvb2xlYW59KV0seD1bTCh7dHlwZTpTdHJpbmd9KV0seT1bTCh7YXR0cmlidXRlOiExfSldLFh2KHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZGF0YSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4iZGF0YSJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLmRhdGEsImdldCIpLHNldDppKChfLE8pPT57Xy5kYXRhPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sbyxsKSxYdih0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dMZWdlbmQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+InNob3dMZWdlbmQiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5zaG93TGVnZW5kLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uc2hvd0xlZ2VuZD1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LGQsdSksWHYodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93TGFiZWxzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJzaG93TGFiZWxzImluIF8sImhhcyIpLGdldDppKF89Pl8uc2hvd0xhYmVscywiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLnNob3dMYWJlbHM9T30sInNldCIpfSxtZXRhZGF0YTpDfSxiLHYpLFh2KHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaW5uZXJSYWRpdXNQZXJjZW50IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJpbm5lclJhZGl1c1BlcmNlbnQiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5pbm5lclJhZGl1c1BlcmNlbnQsImdldCIpLHNldDppKChfLE8pPT57Xy5pbm5lclJhZGl1c1BlcmNlbnQ9T30sInNldCIpfSxtZXRhZGF0YTpDfSxtLGYpLFh2KHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToidmFsdWVGb3JtYXR0ZXIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+InZhbHVlRm9ybWF0dGVyImluIF8sImhhcyIpLGdldDppKF89Pl8udmFsdWVGb3JtYXR0ZXIsImdldCIpLHNldDppKChfLE8pPT57Xy52YWx1ZUZvcm1hdHRlcj1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LE0seiksWHYobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6Q30sbnVsbCx0KSxOPWE9ZS52YWx1ZSxDJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOkN9KX1zdGF0aWMgZGVtbz1qZmE7c3RhdGljIGRlbW9Hcm91cHM9WyJDaGFydCJdOyNlPW4yKHRoaXMsbyxbXSk7Z2V0IGRhdGEoKXtyZXR1cm4gdGhpcy4jZX1zZXQgZGF0YShDKXt0aGlzLiNlPUN9I3Q9KG4yKHRoaXMsbCksbjIodGhpcyxkLCEwKSk7Z2V0IHNob3dMZWdlbmQoKXtyZXR1cm4gdGhpcy4jdH1zZXQgc2hvd0xlZ2VuZChDKXt0aGlzLiN0PUN9I2E9KG4yKHRoaXMsdSksbjIodGhpcyxiLCEwKSk7Z2V0IHNob3dMYWJlbHMoKXtyZXR1cm4gdGhpcy4jYX1zZXQgc2hvd0xhYmVscyhDKXt0aGlzLiNhPUN9I3M9KG4yKHRoaXMsdiksbjIodGhpcyxtLCI1NSUiKSk7Z2V0IGlubmVyUmFkaXVzUGVyY2VudCgpe3JldHVybiB0aGlzLiNzfXNldCBpbm5lclJhZGl1c1BlcmNlbnQoQyl7dGhpcy4jcz1DfSNpPShuMih0aGlzLGYpLG4yKHRoaXMsTSxDPT5gJHtDfWApKTtnZXQgdmFsdWVGb3JtYXR0ZXIoKXtyZXR1cm4gdGhpcy4jaX1zZXQgdmFsdWVGb3JtYXR0ZXIoQyl7dGhpcy4jaT1DfXN0YXRpYyBzdHlsZXM9VWZhO3JlbmRlcigpe3JldHVybiBHZmEodGhpcyl9YXN5bmMgdXBkYXRlZChDKXtzdXBlci51cGRhdGVkKEMpLHRoaXMuY2hhcnRJbnN0YW5jZSYmKEMuaGFzKCJkYXRhIil8fEMuaGFzKCJzaG93TGVnZW5kIil8fEMuaGFzKCJzaG93TGFiZWxzIil8fEMuaGFzKCJpbm5lclJhZGl1c1BlcmNlbnQiKSkmJnRoaXMudXBkYXRlQ2hhcnQoKX1idWlsZE9wdGlvbigpe2xldCBDPVZoKHRoaXMuZ29CcmlnaHQpLF89cWgodGhpcy5nb0JyaWdodCksTz10aGlzLmdvQnJpZ2h0Py4xNTouMiwkPVtdLEU9dGhpcy5kYXRhLm1hcCgoayxTKT0+e2xldCBJPWsuY29sb3J8fF9bUyVfLmxlbmd0aF07cmV0dXJuICQucHVzaCh7bmFtZTprLm5hbWUsaXRlbVN0eWxlOntjb2xvcjpJfX0pLHtuYW1lOmsubmFtZSx2YWx1ZTprLnZhbHVlLGl0ZW1TdHlsZTp7Y29sb3I6amgoSSxPKSxib3JkZXJDb2xvcjpJLGJvcmRlcldpZHRoOjF9LGVtcGhhc2lzOntpdGVtU3R5bGU6e2NvbG9yOmpoKEksTysuMTUpLGJvcmRlckNvbG9yOkksYm9yZGVyV2lkdGg6MS41fX19fSksSD10aGlzLnZhbHVlRm9ybWF0dGVyO3JldHVybnt0b29sdGlwOnt0cmlnZ2VyOiJpdGVtIixmb3JtYXR0ZXI6aShrPT5gJHtgPHNwYW4gc3R5bGU9ImRpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1yaWdodDo0cHg7Ym9yZGVyLXJhZGl1czoxMHB4O3dpZHRoOjEwcHg7aGVpZ2h0OjEwcHg7YmFja2dyb3VuZC1jb2xvcjoke2suZGF0YT8uaXRlbVN0eWxlPy5ib3JkZXJDb2xvcnx8ay5jb2xvcn07Ij48L3NwYW4+YH0ke2submFtZX06IDxzdHJvbmc+JHtIKGsudmFsdWUpfTwvc3Ryb25nPiAoJHtrLnBlcmNlbnR9JSlgLCJmb3JtYXR0ZXIiKX0sbGVnZW5kOnRoaXMuc2hvd0xlZ2VuZD97b3JpZW50OiJ2ZXJ0aWNhbCIscmlnaHQ6MTYsdG9wOiJjZW50ZXIiLGl0ZW1XaWR0aDoxMCxpdGVtSGVpZ2h0OjEwLGl0ZW1HYXA6MTIsZGF0YTokLGZvcm1hdHRlcjppKGs9PntsZXQgUz10aGlzLmRhdGEuZmluZChJPT5JLm5hbWU9PT1rKTtyZXR1cm4gUz9gJHtrfSAgJHtIKFMudmFsdWUpfWA6a30sImZvcm1hdHRlciIpfTp7c2hvdzohMX0sc2VyaWVzOlt7dHlwZToicGllIixyYWRpdXM6W3RoaXMuaW5uZXJSYWRpdXNQZXJjZW50LCI4NSUiXSxjZW50ZXI6dGhpcy5zaG93TGVnZW5kP1siMzUlIiwiNTAlIl06WyI1MCUiLCI1MCUiXSxhdm9pZExhYmVsT3ZlcmxhcDohMCxwYWRBbmdsZToyLGl0ZW1TdHlsZTp7Ym9yZGVyUmFkaXVzOjR9LGxhYmVsOnRoaXMuc2hvd0xhYmVscz97c2hvdzohMCxmb3JtYXR0ZXI6IntifToge2R9JSIsZm9udFNpemU6MTEsY29sb3I6Qy50ZXh0U2Vjb25kYXJ5LHRleHRCb3JkZXJDb2xvcjoidHJhbnNwYXJlbnQifTp7c2hvdzohMX0sZGF0YTpFfV19fWNvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSxuMih0aGlzLHopfXN0YXRpY3tuMihhLHQpfX07cmV0dXJuIE49YX0pKCl9KTt2YXIgWmZhPWcoKCk9PntQaXQoKX0pO3ZhciBYZmEsUWZhPWcoKCk9PntwZSgpO0l0KCk7SWl0KCk7WGZhPWkoKCk9PntsZXQgcz1be3ZhbHVlOjYwLGNvbG9yOiJoc2woMTQyIDc2JSAzNiUpIn0se3ZhbHVlOjgwLGNvbG9yOiJoc2woMzggOTIlIDUwJSkifSx7dmFsdWU6MTAwLGNvbG9yOiJoc2woMCA3MiUgNTAlKSJ9XTtyZXR1cm4gd2AKICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIGU9PntsZXQgdD1lLnF1ZXJ5U2VsZWN0b3IoIiNjcHUtZ2F1Z2UiKSxhPWUucXVlcnlTZWxlY3RvcigiI21lbS1nYXVnZSIpLHI9ZS5xdWVyeVNlbGVjdG9yKCIjc2xhLWdhdWdlIiksbj1udWxsO2UucXVlcnlTZWxlY3RvckFsbCgiZGVlcy1idXR0b24iKS5mb3JFYWNoKGw9PntsZXQgcD1sLnRleHQ/LnRyaW0oKTtwPT09IkFuaW1hdGUiP2wuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57bnx8KG49d2luZG93LnNldEludGVydmFsKCgpPT57dC52YWx1ZT1NYXRoLnJvdW5kKDMwK01hdGgucmFuZG9tKCkqNjApLGEudmFsdWU9TWF0aC5yb3VuZCg0MCtNYXRoLnJhbmRvbSgpKjUwKSxyLnZhbHVlPU1hdGgucm91bmQoKDk1K01hdGgucmFuZG9tKCkqNSkqMTAwKS8xMDB9LDJlMykpfSk6cD09PSJTdG9wIj9sLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e24mJih3aW5kb3cuY2xlYXJJbnRlcnZhbChuKSxuPW51bGwpfSk6cD09PSJTcGlrZSImJmwuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57dC52YWx1ZT05NSxhLnZhbHVlPTg4LHIudmFsdWU9OTYuNX0pfSl9fT4KICAgICAgPHN0eWxlPgogICAgICAgICR7SmAKICAgICAgICAgIC5kZW1vQm94IHsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTUlKSIsImhzbCgwIDAlIDklKSIpfTsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgcGFkZGluZzogNDBweDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgICAgfQogICAgICAgICAgLmdhdWdlUm93IHsKICAgICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyIDFmcjsKICAgICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgICAgfQogICAgICAgICAgLmNvbnRyb2xzIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgICAgICB9CiAgICAgICAgICAuaW5mbyB7CiAgICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDU2LjklKSIsImhzbCgyMTUgMjAuMiUgNTUuMSUpIil9OwogICAgICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsICdHZWlzdCBTYW5zJywgc2Fucy1zZXJpZjsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBtYXJnaW4tdG9wOiA4cHg7CiAgICAgICAgICB9CiAgICAgICAgYH0KICAgICAgPC9zdHlsZT4KICAgICAgPGRpdiBjbGFzcz0iZGVtb0JveCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbHMiPgogICAgICAgICAgPGRlZXMtYnV0dG9uLWdyb3VwIGxhYmVsPSJBY3Rpb25zOiI+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbj5BbmltYXRlPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uPlN0b3A8L2RlZXMtYnV0dG9uPgogICAgICAgICAgICA8ZGVlcy1idXR0b24+U3Bpa2U8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPC9kZWVzLWJ1dHRvbi1ncm91cD4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iZ2F1Z2VSb3ciPgogICAgICAgICAgPGRlZXMtY2hhcnQtZ2F1Z2UKICAgICAgICAgICAgaWQ9ImNwdS1nYXVnZSIKICAgICAgICAgICAgLmxhYmVsPSR7IkNQVSBVc2FnZSJ9CiAgICAgICAgICAgIC52YWx1ZT0kezQyfQogICAgICAgICAgICAudW5pdD0keyIlIn0KICAgICAgICAgICAgLnRocmVzaG9sZHM9JHtzfQogICAgICAgICAgPjwvZGVlcy1jaGFydC1nYXVnZT4KCiAgICAgICAgICA8ZGVlcy1jaGFydC1nYXVnZQogICAgICAgICAgICBpZD0ibWVtLWdhdWdlIgogICAgICAgICAgICAubGFiZWw9JHsiTWVtb3J5IFVzYWdlIn0KICAgICAgICAgICAgLnZhbHVlPSR7Njd9CiAgICAgICAgICAgIC51bml0PSR7IiUifQogICAgICAgICAgICAudGhyZXNob2xkcz0ke3N9CiAgICAgICAgICA+PC9kZWVzLWNoYXJ0LWdhdWdlPgoKICAgICAgICAgIDxkZWVzLWNoYXJ0LWdhdWdlCiAgICAgICAgICAgIGlkPSJzbGEtZ2F1Z2UiCiAgICAgICAgICAgIC5sYWJlbD0keyJTTEEgVXB0aW1lIn0KICAgICAgICAgICAgLnZhbHVlPSR7OTkuOH0KICAgICAgICAgICAgLm1pbj0kezk1fQogICAgICAgICAgICAubWF4PSR7MTAwfQogICAgICAgICAgICAudW5pdD0keyIlIn0KICAgICAgICAgICAgLnNob3dUaWNrcz0keyEwfQogICAgICAgICAgPjwvZGVlcy1jaGFydC1nYXVnZT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iaW5mbyI+CiAgICAgICAgICBHYXVnZSBjaGFydCB3aXRoIGFuaW1hdGVkIHZhbHVlIHRyYW5zaXRpb25zIGFuZCB0aHJlc2hvbGQgY29sb3Jpbmcg4oCiCiAgICAgICAgICBDbGljayAnQW5pbWF0ZScgZm9yIGxpdmUgdXBkYXRlcywgJ1NwaWtlJyB0byBzaW11bGF0ZSBoaWdoIGxvYWQKICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CiAgYH0sImRlbW9GdW5jIil9KTt2YXIgSmZhLGVtYT1nKCgpPT57cGUoKTtVWCgpO0pmYT1bLi4uVWgsSmAKICAgIDpob3N0IHsKICAgICAgaGVpZ2h0OiAzMjBweDsKICAgIH0KICBgXX0pO3ZhciB0bWEsYW1hPWcoKCk9PntwZSgpO3RtYT1pKHM9PndgCiAgICA8ZGVlcy10aWxlPgogICAgICA8ZGl2IHNsb3Q9ImhlYWRlciIgY2xhc3M9ImNoYXJ0SGVhZGVyIj4KICAgICAgICA8c3BhbiBjbGFzcz0iY2hhcnRMYWJlbCI+JHtzLmxhYmVsfTwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNoYXJ0Q29udGFpbmVyIj48L2Rpdj4KICAgIDwvZGVlcy10aWxlPgogIGAsInJlbmRlckNoYXJ0R2F1Z2UiKX0pO3ZhciB4ZyxKbCxzbWEsSWl0PWcoKCk9PntwZSgpO1ZYKCk7UWZhKCk7ZW1hKCk7YW1hKCk7WnYoKTt4Zz1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sSmw9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LHNtYT0oKCk9PntsZXQgcz1bbmUoImRlZXMtY2hhcnQtZ2F1Z2UiKV0sZSx0PVtdLGEscj1idSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXTt2YXIgTz1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0NoYXJ0R2F1Z2UiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgJD10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOk51bWJlcn0pXSxwPVtMKHt0eXBlOk51bWJlcn0pXSxjPVtMKHt0eXBlOk51bWJlcn0pXSx4PVtMKHt0eXBlOlN0cmluZ30pXSx5PVtMKHt0eXBlOkFycmF5fSldLE49W0woe3R5cGU6Qm9vbGVhbn0pXSx4Zyh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InZhbHVlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEU9PiJ2YWx1ZSJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLnZhbHVlLCJnZXQiKSxzZXQ6aSgoRSxIKT0+e0UudmFsdWU9SH0sInNldCIpfSxtZXRhZGF0YTokfSxvLGwpLHhnKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWluIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEU9PiJtaW4iaW4gRSwiaGFzIiksZ2V0OmkoRT0+RS5taW4sImdldCIpLHNldDppKChFLEgpPT57RS5taW49SH0sInNldCIpfSxtZXRhZGF0YTokfSxkLHUpLHhnKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWF4IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEU9PiJtYXgiaW4gRSwiaGFzIiksZ2V0OmkoRT0+RS5tYXgsImdldCIpLHNldDppKChFLEgpPT57RS5tYXg9SH0sInNldCIpfSxtZXRhZGF0YTokfSxiLHYpLHhnKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToidW5pdCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShFPT4idW5pdCJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLnVuaXQsImdldCIpLHNldDppKChFLEgpPT57RS51bml0PUh9LCJzZXQiKX0sbWV0YWRhdGE6JH0sbSxmKSx4Zyh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InRocmVzaG9sZHMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+InRocmVzaG9sZHMiaW4gRSwiaGFzIiksZ2V0OmkoRT0+RS50aHJlc2hvbGRzLCJnZXQiKSxzZXQ6aSgoRSxIKT0+e0UudGhyZXNob2xkcz1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LE0seikseGcodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93VGlja3MiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+InNob3dUaWNrcyJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLnNob3dUaWNrcywiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLnNob3dUaWNrcz1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LEMsXykseGcobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6JH0sbnVsbCx0KSxPPWE9ZS52YWx1ZSwkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOiR9KX1zdGF0aWMgZGVtbz1YZmE7c3RhdGljIGRlbW9Hcm91cHM9WyJDaGFydCJdOyNlPUpsKHRoaXMsbywwKTtnZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy4jZX1zZXQgdmFsdWUoJCl7dGhpcy4jZT0kfSN0PShKbCh0aGlzLGwpLEpsKHRoaXMsZCwwKSk7Z2V0IG1pbigpe3JldHVybiB0aGlzLiN0fXNldCBtaW4oJCl7dGhpcy4jdD0kfSNhPShKbCh0aGlzLHUpLEpsKHRoaXMsYiwxMDApKTtnZXQgbWF4KCl7cmV0dXJuIHRoaXMuI2F9c2V0IG1heCgkKXt0aGlzLiNhPSR9I3M9KEpsKHRoaXMsdiksSmwodGhpcyxtLCIlIikpO2dldCB1bml0KCl7cmV0dXJuIHRoaXMuI3N9c2V0IHVuaXQoJCl7dGhpcy4jcz0kfSNpPShKbCh0aGlzLGYpLEpsKHRoaXMsTSxbXSkpO2dldCB0aHJlc2hvbGRzKCl7cmV0dXJuIHRoaXMuI2l9c2V0IHRocmVzaG9sZHMoJCl7dGhpcy4jaT0kfSNyPShKbCh0aGlzLHopLEpsKHRoaXMsQywhMCkpO2dldCBzaG93VGlja3MoKXtyZXR1cm4gdGhpcy4jcn1zZXQgc2hvd1RpY2tzKCQpe3RoaXMuI3I9JH1zdGF0aWMgc3R5bGVzPUpmYTtyZW5kZXIoKXtyZXR1cm4gdG1hKHRoaXMpfWFzeW5jIHVwZGF0ZWQoJCl7c3VwZXIudXBkYXRlZCgkKSx0aGlzLmNoYXJ0SW5zdGFuY2UmJigkLmhhcygidmFsdWUiKXx8JC5oYXMoIm1pbiIpfHwkLmhhcygibWF4Iil8fCQuaGFzKCJ1bml0Iil8fCQuaGFzKCJ0aHJlc2hvbGRzIil8fCQuaGFzKCJzaG93VGlja3MiKSkmJnRoaXMudXBkYXRlQ2hhcnQoKX1idWlsZE9wdGlvbigpe2xldCAkPVZoKHRoaXMuZ29CcmlnaHQpLEg9cWgodGhpcy5nb0JyaWdodClbMF0saztpZih0aGlzLnRocmVzaG9sZHMubGVuZ3RoPjApe2xldCBTPVsuLi50aGlzLnRocmVzaG9sZHNdLnNvcnQoKEksUCk9PkkudmFsdWUtUC52YWx1ZSk7az1TLm1hcChJPT5bKEkudmFsdWUtdGhpcy5taW4pLyh0aGlzLm1heC10aGlzLm1pbiksSS5jb2xvcl0pLGtbay5sZW5ndGgtMV1bMF08MSYmay5wdXNoKFsxLFNbUy5sZW5ndGgtMV0uY29sb3JdKX1lbHNlIGs9W1sxLEhdXTtyZXR1cm57c2VyaWVzOlt7dHlwZToiZ2F1Z2UiLG1pbjp0aGlzLm1pbixtYXg6dGhpcy5tYXgsc3RhcnRBbmdsZToyMjAsZW5kQW5nbGU6LTQwLHByb2dyZXNzOntzaG93OiEwLHdpZHRoOjE0LHJvdW5kQ2FwOiEwfSxwb2ludGVyOntzaG93OiEwLGxlbmd0aDoiNjAlIix3aWR0aDo1LGl0ZW1TdHlsZTp7Y29sb3I6ImF1dG8ifX0sYXhpc0xpbmU6e2xpbmVTdHlsZTp7d2lkdGg6MTQsY29sb3I6ayxvcGFjaXR5Oi4zfX0sYXhpc1RpY2s6e3Nob3c6dGhpcy5zaG93VGlja3MsZGlzdGFuY2U6LTIwLGxlbmd0aDo2LGxpbmVTdHlsZTp7Y29sb3I6JC5ib3JkZXJTdHJvbmcsd2lkdGg6MX19LHNwbGl0TGluZTp7c2hvdzp0aGlzLnNob3dUaWNrcyxkaXN0YW5jZTotMjQsbGVuZ3RoOjEwLGxpbmVTdHlsZTp7Y29sb3I6JC50ZXh0TXV0ZWQsd2lkdGg6Mn19LGF4aXNMYWJlbDp7c2hvdzp0aGlzLnNob3dUaWNrcyxkaXN0YW5jZTozMCxjb2xvcjokLnRleHRNdXRlZCxmb250U2l6ZToxMX0sZGV0YWlsOnt2YWx1ZUFuaW1hdGlvbjohMCxmb250U2l6ZToyOCxmb250V2VpZ2h0OjYwMCxvZmZzZXRDZW50ZXI6WzAsIjY1JSJdLGNvbG9yOiQudGV4dFByaW1hcnksZm9ybWF0dGVyOmB7dmFsdWV9JHt0aGlzLnVuaXR9YH0sdGl0bGU6e3Nob3c6ITF9LGRhdGE6W3t2YWx1ZTp0aGlzLnZhbHVlfV19XX19Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLEpsKHRoaXMsXyl9c3RhdGlje0psKGEsdCl9fTtyZXR1cm4gTz1hfSkoKX0pO3ZhciBpbWE9ZygoKT0+e0lpdCgpfSk7dmFyIHJtYSxvbWE9ZygoKT0+e3BlKCk7SXQoKTtybWE9aSgoKT0+d2AKICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntsZXQgZT1zLnF1ZXJ5U2VsZWN0b3IoIiNzdHJ1Y3R1cmVkLWxvZyIpLHQ9cy5xdWVyeVNlbGVjdG9yKCIjcmF3LWxvZyIpLGEscixuPVsiU2VydmVyIiwiRGF0YWJhc2UiLCJBUEkiLCJBdXRoIiwiQ2FjaGUiLCJRdWV1ZSIsIldlYlNvY2tldCIsIlNjaGVkdWxlciJdLG89e2RlYnVnOlsiTG9hZGluZyBtb2R1bGU6IHt7bW9kdWxlfX0iLCJDYWNoZSBoaXQgZm9yIGtleToge3trZXl9fSIsIlNRTCBxdWVyeSBleGVjdXRlZCBpbiB7e3RpbWV9fW1zIiwiUmVxdWVzdCBoZWFkZXJzOiB7e2hlYWRlcnN9fSIsIkVudmlyb25tZW50IHZhcmlhYmxlIGxvYWRlZDoge3t2YXJ9fSJdLGluZm86WyJSZXF1ZXN0IHJlY2VpdmVkOiB7e21ldGhvZH19IHt7cGF0aH19IiwiVXNlciB7e3VzZXJJZH19IGF1dGhlbnRpY2F0ZWQgc3VjY2Vzc2Z1bGx5IiwiUHJvY2Vzc2luZyBqb2Ige3tqb2JJZH19IGZyb20gcXVldWUiLCdTY2hlZHVsZWQgdGFzayAie3t0YXNrfX0iIHN0YXJ0ZWQnLCJXZWJTb2NrZXQgY29ubmVjdGlvbiBlc3RhYmxpc2hlZCBmcm9tIHt7aXB9fSJdLHdhcm46WyJTbG93IHF1ZXJ5IGRldGVjdGVkOiB7e3F1ZXJ5fX0gKHt7dGltZX19bXMpIiwiTWVtb3J5IHVzYWdlIGF0IHt7cGVyY2VudH19JSIsIlJhdGUgbGltaXQgYXBwcm9hY2hpbmcgZm9yIElQIHt7aXB9fSIsIkRlcHJlY2F0ZWQgQVBJIGVuZHBvaW50IGNhbGxlZDoge3tlbmRwb2ludH19IiwiQ2VydGlmaWNhdGUgZXhwaXJlcyBpbiB7e2RheXN9fSBkYXlzIl0sZXJyb3I6WyJEYXRhYmFzZSBjb25uZWN0aW9uIGxvc3Q6IHt7ZXJyb3J9fSIsIkZhaWxlZCB0byBwcm9jZXNzIHJlcXVlc3Q6IHt7ZXJyb3J9fSIsIkF1dGhlbnRpY2F0aW9uIGZhaWxlZCBmb3IgdXNlciB7e3VzZXJ9fSIsIkZpbGUgbm90IGZvdW5kOiB7e3BhdGh9fSIsIlNlcnZpY2UgdW5hdmFpbGFibGU6IHt7c2VydmljZX19Il0sc3VjY2VzczpbIlNlcnZlciBzdGFydGVkIHN1Y2Nlc3NmdWxseSBvbiBwb3J0IHt7cG9ydH19IiwiRGF0YWJhc2UgbWlncmF0aW9uIGNvbXBsZXRlZCIsIkJhY2t1cCBjb21wbGV0ZWQ6IHt7c2l6ZX19IE1CIiwiU1NMIGNlcnRpZmljYXRlIHJlbmV3ZWQiLCJIZWFsdGggY2hlY2sgcGFzc2VkOiBhbGwgc3lzdGVtcyBvcGVyYXRpb25hbCJdfSxsPVsiXHgxQls5MG0yMDI0LTAxLTE1VDEwOjIzOjQ1LjEyM1pceDFCWzBtIFx4MUJbMzZtSU5GT1x4MUJbMG0gIFtuZ2lueF0gR0VUIC9hcGkvaGVhbHRoIDIwMCAtIDJtcyIsIlx4MUJbOTBtMjAyNC0wMS0xNVQxMDoyMzo0NS40NTZaXHgxQlswbSBceDFCWzMzbVdBUk5ceDFCWzBtICBbcmVkaXNdIENvbm5lY3Rpb24gcG9vbCBydW5uaW5nIGxvdzogMy8xMCIsIlx4MUJbOTBtMjAyNC0wMS0xNVQxMDoyMzo0NS43ODlaXHgxQlswbSBceDFCWzMxbUVSUk9SXHgxQlswbSBbbW9uZ29kYl0gUXVlcnkgdGltZW91dCBhZnRlciAzMDAwMG1zIiwiXHgxQls5MG0yMDI0LTAxLTE1VDEwOjIzOjQ2LjAxMlpceDFCWzBtIFx4MUJbMzZtSU5GT1x4MUJbMG0gIFthcHBdIFByb2Nlc3NpbmcgYmF0Y2ggam9iICN7e2pvYklkfX0iLCJceDFCWzkwbTIwMjQtMDEtMTVUMTA6MjM6NDYuMzQ1Wlx4MUJbMG0gXHgxQlszMm1PS1x4MUJbMG0gICAgW2hlYWx0aF0gQWxsIHNlcnZpY2VzIGhlYWx0aHkiLCJceDFCWzkwbTIwMjQtMDEtMTVUMTA6MjM6NDYuNjc4Wlx4MUJbMG0gXHgxQlszNm1JTkZPXHgxQlswbSAgW2thZmthXSBNZXNzYWdlIGNvbnN1bWVkIGZyb20gdG9waWM6IGV2ZW50cyIsIlx4MUJbOTBtMjAyNC0wMS0xNVQxMDoyMzo0Ny4wMDFaXHgxQlswbSBceDFCWzM1bURFQlVHXHgxQlswbSBbZ3JwY10gUmVxdWVzdCByZWNlaXZlZDogR2V0VXNlcihpZD17e3VzZXJJZH19KSIsIlx4MUJbOTBtMjAyNC0wMS0xNVQxMDoyMzo0Ny4yMzRaXHgxQlswbSBceDFCWzMxbUVSUk9SXHgxQlswbSBbYXV0aF0gVG9rZW4gdmFsaWRhdGlvbiBmYWlsZWQ6IGV4cGlyZWQiLCJceDFCWzkwbTIwMjQtMDEtMTVUMTA6MjM6NDcuNTY3Wlx4MUJbMG0gXHgxQlszM21XQVJOXHgxQlswbSAgW3JhdGUtbGltaXRdIElQIHt7aXB9fSBhcHByb2FjaGluZyByYXRlIGxpbWl0IiwiXHgxQls5MG0yMDI0LTAxLTE1VDEwOjIzOjQ3Ljg5MFpceDFCWzBtIFx4MUJbMzZtSU5GT1x4MUJbMG0gIFt3ZWJzb2NrZXRdIENsaWVudCBjb25uZWN0ZWQ6IHNlc3Npb249e3tzZXNzaW9ufX0iLGBceDFCWzMxbUVycm9yOiBDb25uZWN0aW9uIHJlZnVzZWRceDFCWzBtCiAgICBhdCBUY3BDb25uZWN0aW9uLmNvbm5lY3QgKC9hcHAvbm9kZV9tb2R1bGVzL3BnL2xpYi9jb25uZWN0aW9uLmpzOjEyOjE1KQogICAgYXQgUG9vbC5jb25uZWN0ICgvYXBwL25vZGVfbW9kdWxlcy9wZy9saWIvcG9vbC5qczo0NToyMykKICAgIGF0IGFzeW5jIERhdGFiYXNlU2VydmljZS5xdWVyeSAoL2FwcC9zcmMvZGIvc2VydmljZS50czo4OToxMilgXSxwPWkoKCk9PntsZXQgbT1bImRlYnVnIiwiaW5mbyIsIndhcm4iLCJlcnJvciIsInN1Y2Nlc3MiXSxmPVsuMiwuNSwuMTUsLjEsLjA1XSx5PU1hdGgucmFuZG9tKCksTT0wLHo9ImluZm8iO2ZvcihsZXQgJD0wOyQ8Zi5sZW5ndGg7JCsrKWlmKE0rPWZbJF0seTxNKXt6PW1bJF07YnJlYWt9bGV0IE49bltNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbi5sZW5ndGgpXSxDPW9bel0sTz1DW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpDLmxlbmd0aCldLnJlcGxhY2UoInt7bW9kdWxlfX0iLFsiZXhwcmVzcyIsIm1vbmdvb3NlIiwicmVkaXMiLCJzb2NrZXQuaW8iXVtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqNCldKS5yZXBsYWNlKCJ7e2tleX19IiwidXNlcjoiK01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoxZTMpKS5yZXBsYWNlKCJ7e3RpbWV9fSIsU3RyaW5nKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSo1MDApKzUwKSkucmVwbGFjZSgie3toZWFkZXJzfX0iLCJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24sIEF1dGhvcml6YXRpb246IEJlYXJlciAuLi4iKS5yZXBsYWNlKCJ7e3Zhcn19IixbIk5PREVfRU5WIiwiREFUQUJBU0VfVVJMIiwiQVBJX0tFWSIsIlBPUlQiXVtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqNCldKS5yZXBsYWNlKCJ7e21ldGhvZH19IixbIkdFVCIsIlBPU1QiLCJQVVQiLCJERUxFVEUiXVtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqNCldKS5yZXBsYWNlKCJ7e3BhdGh9fSIsWyIvYXBpL3VzZXJzIiwiL2FwaS9hdXRoL2xvZ2luIiwiL2FwaS9wcm9kdWN0cyIsIi9oZWFsdGgiXVtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqNCldKS5yZXBsYWNlKCJ7e3VzZXJJZH19IixTdHJpbmcoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjFlNCkpKS5yZXBsYWNlKCJ7e2pvYklkfX0iLCJqb2JfIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiwxMSkpLnJlcGxhY2UoInt7dGFza319IixbImNsZWFudXAiLCJiYWNrdXAiLCJyZXBvcnQtZ2VuZXJhdGlvbiIsImNhY2hlLXJlZnJlc2giXVtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqNCldKS5yZXBsYWNlKCJ7e2lwfX0iLGAxOTIuMTY4LjEuJHtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMjU1KX1gKS5yZXBsYWNlKCJ7e3F1ZXJ5fX0iLCJTRUxFQ1QgKiBGUk9NIHVzZXJzIFdIRVJFIC4uLiIpLnJlcGxhY2UoInt7cGVyY2VudH19IixTdHJpbmcoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjMwKSs3MCkpLnJlcGxhY2UoInt7ZW5kcG9pbnR9fSIsIi9hcGkvdjEvbGVnYWN5IikucmVwbGFjZSgie3tkYXlzfX0iLFN0cmluZyhNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMzApKzEpKS5yZXBsYWNlKCJ7e2Vycm9yfX0iLFsiRUNPTk5SRUZVU0VEIiwiRVRJTUVET1VUIiwiRU5PVEZPVU5EIl1bTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjMpXSkucmVwbGFjZSgie3t1c2VyfX0iLCJ1c2VyXyIrTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjFlMykpLnJlcGxhY2UoInt7c2VydmljZX19IixbIlJlZGlzIiwiTW9uZ29EQiIsIkVsYXN0aWNTZWFyY2giXVtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMyldKS5yZXBsYWNlKCJ7e3BvcnR9fSIsU3RyaW5nKDNlMytNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMTApKSkucmVwbGFjZSgie3tzaXplfX0iLFN0cmluZyhNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqNTAwKSsxMDApKTtlLmFkZExvZyh6LE8sTil9LCJnZW5lcmF0ZVJhbmRvbUxvZyIpLGQ9aSgoKT0+e2xldCBtPWxbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmwubGVuZ3RoKV0sZj1uZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkseT1tLnJlcGxhY2UoLzIwMjQtMDEtMTVUMTA6MjM6XGR7Mn1cLlxkezN9Wi9nLGYpLnJlcGxhY2UoInt7am9iSWR9fSIsU3RyaW5nKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoxZTQpKSkucmVwbGFjZSgie3t1c2VySWR9fSIsU3RyaW5nKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoxZTQpKSkucmVwbGFjZSgie3tpcH19IixgMTkyLjE2OC4xLiR7TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjI1NSl9YCkucmVwbGFjZSgie3tzZXNzaW9ufX0iLE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLDExKSk7dC53cml0ZWxuUmF3KHkpfSwiZ2VuZXJhdGVEb2NrZXJMb2ciKSx1PWkoKCk9PntpZighYSl7bGV0IG09aSgoKT0+e3AoKTtsZXQgZj1NYXRoLnJhbmRvbSgpKjJlMys1MDA7YT13aW5kb3cuc2V0VGltZW91dCgoKT0+e2EmJm0oKX0sZil9LCJzY2hlZHVsZU5leHQiKTttKCl9fSwic3RhcnRTdHJ1Y3R1cmVkU2ltdWxhdGlvbiIpLGM9aSgoKT0+e2EmJih3aW5kb3cuY2xlYXJUaW1lb3V0KGEpLGE9bnVsbCl9LCJzdG9wU3RydWN0dXJlZFNpbXVsYXRpb24iKSxiPWkoKCk9PntpZighcil7bGV0IG09aSgoKT0+e2QoKTtsZXQgZj1NYXRoLnJhbmRvbSgpKjFlMysyMDA7cj13aW5kb3cuc2V0VGltZW91dCgoKT0+e3ImJm0oKX0sZil9LCJzY2hlZHVsZU5leHQiKTttKCl9fSwic3RhcnRSYXdTaW11bGF0aW9uIiksdj1pKCgpPT57ciYmKHdpbmRvdy5jbGVhclRpbWVvdXQocikscj1udWxsKX0sInN0b3BSYXdTaW11bGF0aW9uIik7cy5xdWVyeVNlbGVjdG9yQWxsKCJkZWVzLWJ1dHRvbiIpLmZvckVhY2gobT0+e3N3aXRjaChtLnRleHQ/LnRyaW0oKSl7Y2FzZSJBZGQgU3RydWN0dXJlZCBMb2ciOm0uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT5wKCkpO2JyZWFrO2Nhc2UiU3RhcnQgU3RydWN0dXJlZCI6bS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PnUoKSk7YnJlYWs7Y2FzZSJTdG9wIFN0cnVjdHVyZWQiOm0uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT5jKCkpO2JyZWFrO2Nhc2UiQWRkIERvY2tlciBMb2ciOm0uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT5kKCkpO2JyZWFrO2Nhc2UiU3RhcnQgRG9ja2VyIjptLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+YigpKTticmVhaztjYXNlIlN0b3AgRG9ja2VyIjptLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+digpKTticmVha319KX19PgogICAgICA8c3R5bGU+CiAgICAgICAgJHtKYAogICAgICAgICAgLmRlbW9Cb3ggewogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5NSUpIiwiaHNsKDAgMCUgNSUpIil9OwogICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBwYWRkaW5nOiA0MHB4OwogICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICBnYXA6IDI0cHg7CiAgICAgICAgICB9CiAgICAgICAgICAuc2VjdGlvbiB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIGdhcDogMTJweDsKICAgICAgICAgIH0KICAgICAgICAgIC5zZWN0aW9uLXRpdGxlIHsKICAgICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5JSkiLCJoc2woMCAwJSA5NSUpIil9OwogICAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnR2Vpc3QgU2FucycsIHNhbnMtc2VyaWY7CiAgICAgICAgICB9CiAgICAgICAgICAuc2VjdGlvbi1kZXNjcmlwdGlvbiB7CiAgICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDQ2LjklKSIsImhzbCgyMTUgMjAuMiUgNjUuMSUpIil9OwogICAgICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnR2Vpc3QgU2FucycsIHNhbnMtc2VyaWY7CiAgICAgICAgICB9CiAgICAgICAgICAuY29udHJvbHMgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBnYXA6IDEwcHg7CiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICAgIH0KICAgICAgICBgfQogICAgICA8L3N0eWxlPgogICAgPGRpdiBjbGFzcz0iZGVtb0JveCI+CiAgICAgIDwhLS0gU3RydWN0dXJlZCBMb2dzIFNlY3Rpb24gLS0+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPlN0cnVjdHVyZWQgTG9ncyAoSUxvZ0VudHJ5KTwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tZGVzY3JpcHRpb24iPgogICAgICAgICAgU3RydWN0dXJlZCBsb2cgZW50cmllcyB3aXRoIGxldmVsLCBtZXNzYWdlLCBhbmQgc291cmNlLiBTdXBwb3J0cyBzZWFyY2ggYW5kIGtleXdvcmQgaGlnaGxpZ2h0aW5nLgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2xzIj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbj5BZGQgU3RydWN0dXJlZCBMb2c8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uPlN0YXJ0IFN0cnVjdHVyZWQ8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uPlN0b3AgU3RydWN0dXJlZDwvZGVlcy1idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRlZXMtY2hhcnQtbG9nCiAgICAgICAgICBpZD0ic3RydWN0dXJlZC1sb2ciCiAgICAgICAgICAubGFiZWw9JHsiUHJvZHVjdGlvbiBTZXJ2ZXIgTG9ncyJ9CiAgICAgICAgICAuaGlnaGxpZ2h0S2V5d29yZHM9JHtbImVycm9yIiwiZmFpbGVkIiwidGltZW91dCJdfQogICAgICAgICAgLnNob3dNZXRyaWNzPSR7ITB9CiAgICAgICAgPjwvZGVlcy1jaGFydC1sb2c+CiAgICAgIDwvZGl2PgoKICAgICAgPCEtLSBSYXcgTG9ncyBTZWN0aW9uIC0tPgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5SYXcgTG9ncyAoRG9ja2VyL0NvbnRhaW5lciBTdHlsZSk8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj4KICAgICAgICAgIFJhdyBsb2cgb3V0cHV0IHdpdGggQU5TSSBlc2NhcGUgc2VxdWVuY2VzIGZvciByZWFsIERvY2tlci9jb250YWluZXIgbG9ncy4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9scyI+CiAgICAgICAgICA8ZGVlcy1idXR0b24+QWRkIERvY2tlciBMb2c8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uPlN0YXJ0IERvY2tlcjwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24+U3RvcCBEb2NrZXI8L2RlZXMtYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkZWVzLWNoYXJ0LWxvZwogICAgICAgICAgaWQ9InJhdy1sb2ciCiAgICAgICAgICAubGFiZWw9JHsiRG9ja2VyIENvbnRhaW5lciBMb2dzIn0KICAgICAgICAgIC5tb2RlPSR7InJhdyJ9CiAgICAgICAgICAuc2hvd01ldHJpY3M9JHshMX0KICAgICAgICA+PC9kZWVzLWNoYXJ0LWxvZz4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KICBgLCJkZW1vRnVuYyIpfSk7dmFyIEdjLFRpLG5tYSxsbWE9ZygoKT0+e3BlKCk7a3QoKTtvbWEoKTtwdCgpO2Z1KCk7bnIoKTtHYz1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sVGk9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LG5tYT0oKCk9PntsZXQgcz1bbmUoImRlZXMtY2hhcnQtbG9nIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W10sSCxrPVtdLFM9W10sSSxQPVtdLFI9W10sSyxWPVtdLFc9W10sbWUsQj1bXSxVPVtdO3ZhciBoZT1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0NoYXJ0TG9nIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IEY9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCgpXSxwPVtMKHt0eXBlOlN0cmluZ30pXSxjPVtMKHt0eXBlOkFycmF5fSldLHg9W0woe3R5cGU6Qm9vbGVhbn0pXSx5PVtMKHt0eXBlOk51bWJlcn0pXSxOPVtMKHt0eXBlOkFycmF5fSldLE89W0woe3R5cGU6Qm9vbGVhbn0pXSxIPVtZKCldLEk9W1koKV0sSz1bWSgpXSxtZT1bWSgpXSxHYyh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImxhYmVsIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGo9PiJsYWJlbCJpbiBqLCJoYXMiKSxnZXQ6aShqPT5qLmxhYmVsLCJnZXQiKSxzZXQ6aSgoaix1ZSk9PntqLmxhYmVsPXVlfSwic2V0Iil9LG1ldGFkYXRhOkZ9LG8sbCksR2ModGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtb2RlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGo9PiJtb2RlImluIGosImhhcyIpLGdldDppKGo9PmoubW9kZSwiZ2V0Iiksc2V0OmkoKGosdWUpPT57ai5tb2RlPXVlfSwic2V0Iil9LG1ldGFkYXRhOkZ9LGQsdSksR2ModGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJsb2dFbnRyaWVzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGo9PiJsb2dFbnRyaWVzImluIGosImhhcyIpLGdldDppKGo9PmoubG9nRW50cmllcywiZ2V0Iiksc2V0OmkoKGosdWUpPT57ai5sb2dFbnRyaWVzPXVlfSwic2V0Iil9LG1ldGFkYXRhOkZ9LGIsdiksR2ModGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJhdXRvU2Nyb2xsIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGo9PiJhdXRvU2Nyb2xsImluIGosImhhcyIpLGdldDppKGo9PmouYXV0b1Njcm9sbCwiZ2V0Iiksc2V0OmkoKGosdWUpPT57ai5hdXRvU2Nyb2xsPXVlfSwic2V0Iil9LG1ldGFkYXRhOkZ9LG0sZiksR2ModGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtYXhFbnRyaWVzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGo9PiJtYXhFbnRyaWVzImluIGosImhhcyIpLGdldDppKGo9PmoubWF4RW50cmllcywiZ2V0Iiksc2V0OmkoKGosdWUpPT57ai5tYXhFbnRyaWVzPXVlfSwic2V0Iil9LG1ldGFkYXRhOkZ9LE0seiksR2ModGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJoaWdobGlnaHRLZXl3b3JkcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4iaGlnaGxpZ2h0S2V5d29yZHMiaW4gaiwiaGFzIiksZ2V0Omkoaj0+ai5oaWdobGlnaHRLZXl3b3JkcywiZ2V0Iiksc2V0OmkoKGosdWUpPT57ai5oaWdobGlnaHRLZXl3b3Jkcz11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSxDLF8pLEdjKHRoaXMsbnVsbCxPLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2hvd01ldHJpY3MiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoaj0+InNob3dNZXRyaWNzImluIGosImhhcyIpLGdldDppKGo9Pmouc2hvd01ldHJpY3MsImdldCIpLHNldDppKChqLHVlKT0+e2ouc2hvd01ldHJpY3M9dWV9LCJzZXQiKX0sbWV0YWRhdGE6Rn0sJCxFKSxHYyh0aGlzLG51bGwsSCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlYXJjaFF1ZXJ5IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGo9PiJzZWFyY2hRdWVyeSJpbiBqLCJoYXMiKSxnZXQ6aShqPT5qLnNlYXJjaFF1ZXJ5LCJnZXQiKSxzZXQ6aSgoaix1ZSk9PntqLnNlYXJjaFF1ZXJ5PXVlfSwic2V0Iil9LG1ldGFkYXRhOkZ9LGssUyksR2ModGhpcyxudWxsLEkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJmaWx0ZXJNb2RlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGo9PiJmaWx0ZXJNb2RlImluIGosImhhcyIpLGdldDppKGo9PmouZmlsdGVyTW9kZSwiZ2V0Iiksc2V0OmkoKGosdWUpPT57ai5maWx0ZXJNb2RlPXVlfSwic2V0Iil9LG1ldGFkYXRhOkZ9LFAsUiksR2ModGhpcyxudWxsLEsse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtZXRyaWNzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGo9PiJtZXRyaWNzImluIGosImhhcyIpLGdldDppKGo9PmoubWV0cmljcywiZ2V0Iiksc2V0OmkoKGosdWUpPT57ai5tZXRyaWNzPXVlfSwic2V0Iil9LG1ldGFkYXRhOkZ9LFYsVyksR2ModGhpcyxudWxsLG1lLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidGVybWluYWxSZWFkeSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4idGVybWluYWxSZWFkeSJpbiBqLCJoYXMiKSxnZXQ6aShqPT5qLnRlcm1pbmFsUmVhZHksImdldCIpLHNldDppKChqLHVlKT0+e2oudGVybWluYWxSZWFkeT11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSxCLFUpLEdjKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOkZ9LG51bGwsdCksaGU9YT1lLnZhbHVlLEYmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Rn0pfXN0YXRpYyBkZW1vPXJtYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIkNoYXJ0IiwiV29ya3NwYWNlIl07I2U9VGkodGhpcyxvLCJTZXJ2ZXIgTG9ncyIpO2dldCBsYWJlbCgpe3JldHVybiB0aGlzLiNlfXNldCBsYWJlbChGKXt0aGlzLiNlPUZ9I3Q9KFRpKHRoaXMsbCksVGkodGhpcyxkLCJzdHJ1Y3R1cmVkIikpO2dldCBtb2RlKCl7cmV0dXJuIHRoaXMuI3R9c2V0IG1vZGUoRil7dGhpcy4jdD1GfSNhPShUaSh0aGlzLHUpLFRpKHRoaXMsYixbXSkpO2dldCBsb2dFbnRyaWVzKCl7cmV0dXJuIHRoaXMuI2F9c2V0IGxvZ0VudHJpZXMoRil7dGhpcy4jYT1GfSNzPShUaSh0aGlzLHYpLFRpKHRoaXMsbSwhMCkpO2dldCBhdXRvU2Nyb2xsKCl7cmV0dXJuIHRoaXMuI3N9c2V0IGF1dG9TY3JvbGwoRil7dGhpcy4jcz1GfSNpPShUaSh0aGlzLGYpLFRpKHRoaXMsTSwxZTQpKTtnZXQgbWF4RW50cmllcygpe3JldHVybiB0aGlzLiNpfXNldCBtYXhFbnRyaWVzKEYpe3RoaXMuI2k9Rn0jcj0oVGkodGhpcyx6KSxUaSh0aGlzLEMsW10pKTtnZXQgaGlnaGxpZ2h0S2V5d29yZHMoKXtyZXR1cm4gdGhpcy4jcn1zZXQgaGlnaGxpZ2h0S2V5d29yZHMoRil7dGhpcy4jcj1GfSNvPShUaSh0aGlzLF8pLFRpKHRoaXMsJCwhMCkpO2dldCBzaG93TWV0cmljcygpe3JldHVybiB0aGlzLiNvfXNldCBzaG93TWV0cmljcyhGKXt0aGlzLiNvPUZ9I249KFRpKHRoaXMsRSksVGkodGhpcyxrLCIiKSk7Z2V0IHNlYXJjaFF1ZXJ5KCl7cmV0dXJuIHRoaXMuI259c2V0IHNlYXJjaFF1ZXJ5KEYpe3RoaXMuI249Rn0jbD0oVGkodGhpcyxTKSxUaSh0aGlzLFAsITEpKTtnZXQgZmlsdGVyTW9kZSgpe3JldHVybiB0aGlzLiNsfXNldCBmaWx0ZXJNb2RlKEYpe3RoaXMuI2w9Rn0jYz0oVGkodGhpcyxSKSxUaSh0aGlzLFYse2RlYnVnOjAsaW5mbzowLHdhcm46MCxlcnJvcjowLHN1Y2Nlc3M6MCx0b3RhbDowLHJhdGU6MH0pKTtnZXQgbWV0cmljcygpe3JldHVybiB0aGlzLiNjfXNldCBtZXRyaWNzKEYpe3RoaXMuI2M9Rn0jZD0oVGkodGhpcyxXKSxUaSh0aGlzLEIsITEpKTtnZXQgdGVybWluYWxSZWFkeSgpe3JldHVybiB0aGlzLiNkfXNldCB0ZXJtaW5hbFJlYWR5KEYpe3RoaXMuI2Q9Rn1sb2dCdWZmZXI9KFRpKHRoaXMsVSksW10pO3RyYWlsaW5nSGlkZGVuQ291bnQ9MDt0ZXJtaW5hbD1udWxsO2ZpdEFkZG9uPW51bGw7c2VhcmNoQWRkb249bnVsbDtyZXNpemVPYnNlcnZlcj1udWxsO3Rlcm1pbmFsVGhlbWVTdWJzY3JpcHRpb249bnVsbDtkb210b29sc0luc3RhbmNlPW51bGw7cmF0ZUJ1ZmZlcj1bXTtyYXRlSW50ZXJ2YWw9bnVsbDtzdGF0aWMgc3R5bGVzPVtIZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGhlaWdodDogNDAwcHg7CiAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgc2Fucy1zZXJpZjsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICB9CgogICAgICBkZWVzLXRpbGUgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgLmhlYWRlciB7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMTJweDsKICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgIH0KCiAgICAgIC50aXRsZSB7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CgogICAgICAuc2VhcmNoLWJveCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNHB4OwogICAgICAgIGZsZXg6IDE7CiAgICAgICAgbWluLXdpZHRoOiAxNTBweDsKICAgICAgICBtYXgtd2lkdGg6IDMwMHB4OwogICAgICB9CgogICAgICAuc2VhcmNoLWJveCBpbnB1dCB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBwYWRkaW5nOiA0cHggOHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1iZy1wcmltYXJ5KTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5zZWFyY2gtYm94IGlucHV0OmZvY3VzIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUpIiwiaHNsKDIxNy4yIDkxLjIlIDU5LjglKSIpfTsKICAgICAgfQoKICAgICAgLnNlYXJjaC1ib3ggaW5wdXQ6OnBsYWNlaG9sZGVyIHsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgfQoKICAgICAgLnNlYXJjaC1uYXYgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiAycHg7CiAgICAgIH0KCiAgICAgIC5zZWFyY2gtbmF2IGJ1dHRvbiB7CiAgICAgICAgcGFkZGluZzogNHB4IDZweDsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1iZy1wcmltYXJ5KTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgICB9CgogICAgICAuc2VhcmNoLW5hdiBidXR0b246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItaG92ZXIpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIH0KCiAgICAgIC5maWx0ZXItdG9nZ2xlIHsKICAgICAgICBwYWRkaW5nOiA0cHggOHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYmctcHJpbWFyeSk7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXM7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgLmZpbHRlci10b2dnbGU6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItaG92ZXIpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIH0KCiAgICAgIC5maWx0ZXItdG9nZ2xlLmFjdGl2ZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCg0NSA5MyUgNDclKSIsImhzbCg0NSA5MyUgNDclKSIpfTsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woNDUgOTMlIDQ3JSkiLCJoc2woNDUgOTMlIDQ3JSkiKX07CiAgICAgICAgY29sb3I6IGhzbCgwIDAlIDklKTsKICAgICAgfQoKICAgICAgLmNvbnRyb2xzIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGdhcDogNnB4OwogICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICB9CgogICAgICAuY29udHJvbC1idXR0b24gewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYmctcHJpbWFyeSk7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIHBhZGRpbmc6IDRweCAxMHB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXM7CiAgICAgIH0KCiAgICAgIC5jb250cm9sLWJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1ob3Zlcik7CiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1zdHJvbmcpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIH0KCiAgICAgIC5jb250cm9sLWJ1dHRvbi5hY3RpdmUgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUpIiwiaHNsKDIxNy4yIDkxLjIlIDU5LjglKSIpfTsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUpIiwiaHNsKDIxNy4yIDkxLjIlIDU5LjglKSIpfTsKICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgIH0KCiAgICAgIC50ZXJtaW5hbC1jb250YWluZXIgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBpbnNldDogMDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHBhZGRpbmc6IDhweDsKICAgICAgfQoKICAgICAgLnRlcm1pbmFsLWNvbnRhaW5lciAueHRlcm0gewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgLmxvYWRpbmctc3RhdGUgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgfQoKICAgICAgLm1ldHJpY3MtYmFyIHsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgcGFkZGluZzogMCAxMnB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDE2cHg7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLm1ldHJpYyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNHB4OwogICAgICB9CgogICAgICAubWV0cmljOjpiZWZvcmUgewogICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgIHdpZHRoOiA4cHg7CiAgICAgICAgaGVpZ2h0OiA4cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICB9CgogICAgICAubWV0cmljLmVycm9yOjpiZWZvcmUgewogICAgICAgIGJhY2tncm91bmQ6IGhzbCgwIDg0LjIlIDYwLjIlKTsKICAgICAgfQoKICAgICAgLm1ldHJpYy53YXJuOjpiZWZvcmUgewogICAgICAgIGJhY2tncm91bmQ6IGhzbCgyNSA5NSUgNTMlKTsKICAgICAgfQoKICAgICAgLm1ldHJpYy5pbmZvOjpiZWZvcmUgewogICAgICAgIGJhY2tncm91bmQ6IGhzbCgyMjIuMiA0Ny40JSA1MS4yJSk7CiAgICAgIH0KCiAgICAgIC5tZXRyaWMuc3VjY2Vzczo6YmVmb3JlIHsKICAgICAgICBiYWNrZ3JvdW5kOiBoc2woMTQyLjEgNzYuMiUgMzYuMyUpOwogICAgICB9CgogICAgICAubWV0cmljLmRlYnVnOjpiZWZvcmUgewogICAgICAgIGJhY2tncm91bmQ6IGhzbCgwIDAlIDYzLjklKTsKICAgICAgfQoKICAgICAgLm1ldHJpYy5yYXRlIHsKICAgICAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgfQoKICAgICAgLm1ldHJpYy5yYXRlOjpiZWZvcmUgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KICAgIGBdO2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0YS5zZXR1cCgpfXJlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGVlcy10aWxlIC5oZWFkaW5nPSR7dGhpcy5sYWJlbH0+CiAgICAgICAgPGRpdiBzbG90PSJoZWFkZXIiIGNsYXNzPSJoZWFkZXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPiR7dGhpcy5sYWJlbH08L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlYXJjaC1ib3giPgogICAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgICB0eXBlPSJ0ZXh0IgogICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSJTZWFyY2ggbG9ncy4uLiIKICAgICAgICAgICAgICAudmFsdWU9JHt0aGlzLnNlYXJjaFF1ZXJ5fQogICAgICAgICAgICAgIEBpbnB1dD0ke0Y9PnRoaXMuaGFuZGxlU2VhcmNoSW5wdXQoRil9CiAgICAgICAgICAgICAgQGtleWRvd249JHtGPT50aGlzLmhhbmRsZVNlYXJjaEtleWRvd24oRil9CiAgICAgICAgICAgIC8+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlYXJjaC1uYXYiPgogICAgICAgICAgICAgIDxidXR0b24gQGNsaWNrPSR7KCk9PnRoaXMuc2VhcmNoUHJldmlvdXMoKX0gdGl0bGU9IlByZXZpb3VzIG1hdGNoIj7ihpE8L2J1dHRvbj4KICAgICAgICAgICAgICA8YnV0dG9uIEBjbGljaz0keygpPT50aGlzLnNlYXJjaE5leHQoKX0gdGl0bGU9Ik5leHQgbWF0Y2giPuKGkzwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGJ1dHRvbgogICAgICAgICAgICAgIGNsYXNzPSJmaWx0ZXItdG9nZ2xlICR7dGhpcy5maWx0ZXJNb2RlPyJhY3RpdmUiOiIifSIKICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy50b2dnbGVGaWx0ZXJNb2RlKCl9CiAgICAgICAgICAgICAgdGl0bGU9IiR7dGhpcy5maWx0ZXJNb2RlPyJTd2l0Y2ggdG8gaGlnaGxpZ2h0IG1vZGUiOiJTd2l0Y2ggdG8gZmlsdGVyIG1vZGUifSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgICR7dGhpcy5maWx0ZXJNb2RlPyJGaWx0ZXIiOiJIaWdobGlnaHQifQogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbHMiPgogICAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgICAgY2xhc3M9ImNvbnRyb2wtYnV0dG9uICR7dGhpcy5hdXRvU2Nyb2xsPyJhY3RpdmUiOiIifSIKICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy50b2dnbGVBdXRvU2Nyb2xsKCl9CiAgICAgICAgICAgID4KICAgICAgICAgICAgICBBdXRvIFNjcm9sbAogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY29udHJvbC1idXR0b24iIEBjbGljaz0keygpPT50aGlzLmNsZWFyTG9ncygpfT4KICAgICAgICAgICAgICBDbGVhcgogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbC1jb250YWluZXIiPgogICAgICAgICAgJHt0aGlzLnRlcm1pbmFsUmVhZHk/IiI6d2A8ZGl2IGNsYXNzPSJsb2FkaW5nLXN0YXRlIj5Mb2FkaW5nIHRlcm1pbmFsLi4uPC9kaXY+YH0KICAgICAgICA8L2Rpdj4KCiAgICAgICAgJHt0aGlzLnNob3dNZXRyaWNzP3dgCiAgICAgICAgICAgICAgPGRpdiBzbG90PSJmb290ZXIiIGNsYXNzPSJtZXRyaWNzLWJhciI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibWV0cmljIGVycm9yIj5lcnJvcnM6ICR7dGhpcy5tZXRyaWNzLmVycm9yfTwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJtZXRyaWMgd2FybiI+d2FybnM6ICR7dGhpcy5tZXRyaWNzLndhcm59PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1ldHJpYyBpbmZvIj5pbmZvOiAke3RoaXMubWV0cmljcy5pbmZvfTwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJtZXRyaWMgc3VjY2VzcyI+c3VjY2VzczogJHt0aGlzLm1ldHJpY3Muc3VjY2Vzc308L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibWV0cmljIGRlYnVnIj5kZWJ1ZzogJHt0aGlzLm1ldHJpY3MuZGVidWd9PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1ldHJpYyByYXRlIj4ke3RoaXMubWV0cmljcy5yYXRlLnRvRml4ZWQoMSl9IGxvZ3Mvc2VjPC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICBgOiIifQogICAgICA8L2RlZXMtdGlsZT4KICAgIGB9YXN5bmMgZmlyc3RVcGRhdGVkKCl7aWYodGhpcy5kb210b29sc0luc3RhbmNlPWF3YWl0IHRoaXMuZG9tdG9vbHNQcm9taXNlLGF3YWl0IHRoaXMuaW5pdGlhbGl6ZVRlcm1pbmFsKCksdGhpcy5sb2dFbnRyaWVzLmxlbmd0aD4wJiZ0aGlzLmxvZ0J1ZmZlci5sZW5ndGg9PT0wKXt0aGlzLmxvZ0J1ZmZlcj1bLi4udGhpcy5sb2dFbnRyaWVzXTtmb3IobGV0IEYgb2YgdGhpcy5sb2dFbnRyaWVzKXRoaXMudXBkYXRlTWV0cmljcyhGLmxldmVsKSx0aGlzLndyaXRlTG9nRW50cnkoRil9ZWxzZSBpZih0aGlzLmxvZ0VudHJpZXMubGVuZ3RoPjAmJnRoaXMubG9nQnVmZmVyLmxlbmd0aD4wKXtsZXQgRj1uZXcgU2V0KHRoaXMubG9nQnVmZmVyLm1hcChqPT5gJHtqLnRpbWVzdGFtcH18JHtqLm1lc3NhZ2V9YCkpO2ZvcihsZXQgaiBvZiB0aGlzLmxvZ0VudHJpZXMpRi5oYXMoYCR7ai50aW1lc3RhbXB9fCR7ai5tZXNzYWdlfWApfHwodGhpcy5sb2dCdWZmZXIucHVzaChqKSx0aGlzLnVwZGF0ZU1ldHJpY3Moai5sZXZlbCksdGhpcy53cml0ZUxvZ0VudHJ5KGopKX19YXN5bmMgaW5pdGlhbGl6ZVRlcm1pbmFsKCl7bGV0IEY9UXIuZ2V0SW5zdGFuY2UoKSxbaix1ZSxsZV09YXdhaXQgUHJvbWlzZS5hbGwoW0YubG9hZFh0ZXJtKCksRi5sb2FkWHRlcm1GaXRBZGRvbigpLEYubG9hZFh0ZXJtU2VhcmNoQWRkb24oKV0pO2F3YWl0IHRoaXMuaW5qZWN0WHRlcm1TdHlsZXNJbnRvU2hhZG93KCksdGhpcy50ZXJtaW5hbD1uZXcgai5UZXJtaW5hbCh7Y3Vyc29yQmxpbms6ITEsZGlzYWJsZVN0ZGluOiEwLGZvbnRTaXplOjEyLGZvbnRGYW1pbHk6IidTRiBNb25vJywgJ01vbmFjbycsICdDb25zb2xhcycsICdMaWJlcmF0aW9uIE1vbm8nLCAnQ291cmllciBOZXcnLCBtb25vc3BhY2UiLHRoZW1lOnRoaXMuZ2V0VGVybWluYWxUaGVtZSgpLHNjcm9sbGJhY2s6dGhpcy5tYXhFbnRyaWVzLGNvbnZlcnRFb2w6ITB9KSx0aGlzLmZpdEFkZG9uPW5ldyB1ZS5GaXRBZGRvbix0aGlzLnNlYXJjaEFkZG9uPW5ldyBsZS5TZWFyY2hBZGRvbix0aGlzLnRlcm1pbmFsLmxvYWRBZGRvbih0aGlzLmZpdEFkZG9uKSx0aGlzLnRlcm1pbmFsLmxvYWRBZGRvbih0aGlzLnNlYXJjaEFkZG9uKTtsZXQgUT10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLnRlcm1pbmFsLWNvbnRhaW5lciIpO3RoaXMudGVybWluYWwub3BlbihRKSxhd2FpdCBuZXcgUHJvbWlzZShpZT0+cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGllKSksdGhpcy5maXRBZGRvbi5maXQoKSx0aGlzLnJlc2l6ZU9ic2VydmVyPW5ldyBSZXNpemVPYnNlcnZlcigoKT0+e3RoaXMuZml0QWRkb24/LmZpdCgpfSksdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKFEpLHRoaXMudGVybWluYWxUaGVtZVN1YnNjcmlwdGlvbj10aGlzLmRvbXRvb2xzSW5zdGFuY2UudGhlbWVNYW5hZ2VyLnRoZW1lT2JzZXJ2YWJsZS5zdWJzY3JpYmUoKCk9Pnt0aGlzLnRlcm1pbmFsJiYodGhpcy50ZXJtaW5hbC5vcHRpb25zLnRoZW1lPXRoaXMuZ2V0VGVybWluYWxUaGVtZSgpKX0pLHRoaXMucmF0ZUludGVydmFsPXNldEludGVydmFsKCgpPT50aGlzLmNhbGN1bGF0ZVJhdGUoKSwxZTMpLHRoaXMudGVybWluYWxSZWFkeT0hMDtmb3IobGV0IGllIG9mIHRoaXMubG9nQnVmZmVyKXRoaXMud3JpdGVMb2dFbnRyeShpZSl9dXBkYXRlZChGKXtpZihzdXBlci51cGRhdGVkKEYpLEYuaGFzKCJnb0JyaWdodCIpJiZ0aGlzLnRlcm1pbmFsJiYodGhpcy50ZXJtaW5hbC5vcHRpb25zLnRoZW1lPXRoaXMuZ2V0VGVybWluYWxUaGVtZSgpKSxGLmhhcygibG9nRW50cmllcyIpJiZ0aGlzLnRlcm1pbmFsUmVhZHkmJnRoaXMubG9nRW50cmllcy5sZW5ndGg+MCl7bGV0IGo9Ri5nZXQoImxvZ0VudHJpZXMiKXx8W10sdWU9dGhpcy5sb2dFbnRyaWVzO2lmKGoubGVuZ3RoPT09dWUubGVuZ3RoJiZqLmxlbmd0aD4wJiZqW2oubGVuZ3RoLTFdLnRpbWVzdGFtcD09PXVlW3VlLmxlbmd0aC0xXS50aW1lc3RhbXAmJmpbai5sZW5ndGgtMV0ubWVzc2FnZT09PXVlW3VlLmxlbmd0aC0xXS5tZXNzYWdlKXJldHVybjtpZih1ZS5sZW5ndGg+ai5sZW5ndGgmJmoubGVuZ3RoPjAmJmpbai5sZW5ndGgtMV0udGltZXN0YW1wPT09dWVbai5sZW5ndGgtMV0udGltZXN0YW1wJiZqW2oubGVuZ3RoLTFdLm1lc3NhZ2U9PT11ZVtqLmxlbmd0aC0xXS5tZXNzYWdlKXtsZXQgbGU9dWUuc2xpY2Uoai5sZW5ndGgpO2ZvcihsZXQgUSBvZiBsZSl0aGlzLmxvZ0J1ZmZlci5wdXNoKFEpLHRoaXMudXBkYXRlTWV0cmljcyhRLmxldmVsKSx0aGlzLmxvZ0J1ZmZlci5sZW5ndGg+dGhpcy5tYXhFbnRyaWVzJiZ0aGlzLmxvZ0J1ZmZlci5zaGlmdCgpLCghdGhpcy5maWx0ZXJNb2RlfHwhdGhpcy5zZWFyY2hRdWVyeXx8dGhpcy5lbnRyeU1hdGNoZXNGaWx0ZXIoUSkpJiZ0aGlzLndyaXRlTG9nRW50cnkoUSk7cmV0dXJufXRoaXMubG9nQnVmZmVyPVsuLi51ZV0sdGhpcy5yZVJlbmRlckZpbHRlcmVkTG9ncygpfX1nZXRUZXJtaW5hbFRoZW1lKCl7cmV0dXJuIXRoaXMuZ29CcmlnaHQ/e2JhY2tncm91bmQ6IiMwYTBhMGEiLGZvcmVncm91bmQ6IiNlMGUwZTAiLGN1cnNvcjoiI2UwZTBlMCIsc2VsZWN0aW9uQmFja2dyb3VuZDoiIzQwNDA0MCIsYmxhY2s6IiMwMDAwMDAiLHJlZDoiI2ZmNTU1NSIsZ3JlZW46IiM1MGZhN2IiLHllbGxvdzoiI2YxZmE4YyIsYmx1ZToiIzYyNzJhNCIsbWFnZW50YToiI2ZmNzljNiIsY3lhbjoiIzhiZTlmZCIsd2hpdGU6IiNmOGY4ZjIiLGJyaWdodEJsYWNrOiIjNjI3MmE0IixicmlnaHRSZWQ6IiNmZjZlNmUiLGJyaWdodEdyZWVuOiIjNjlmZjk0IixicmlnaHRZZWxsb3c6IiNmZmZmYTUiLGJyaWdodEJsdWU6IiNkNmFjZmYiLGJyaWdodE1hZ2VudGE6IiNmZjkyZGYiLGJyaWdodEN5YW46IiNhNGZmZmYiLGJyaWdodFdoaXRlOiIjZmZmZmZmIn06e2JhY2tncm91bmQ6IiNmZmZmZmYiLGZvcmVncm91bmQ6IiMzMzMzMzMiLGN1cnNvcjoiIzMzMzMzMyIsc2VsZWN0aW9uQmFja2dyb3VuZDoiI2FkZDZmZiIsYmxhY2s6IiMwMDAwMDAiLHJlZDoiI2NkMzEzMSIsZ3JlZW46IiMwMGJjMDAiLHllbGxvdzoiIzk0OTgwMCIsYmx1ZToiIzA0NTFhNSIsbWFnZW50YToiI2JjMDViYyIsY3lhbjoiIzA1OThiYyIsd2hpdGU6IiM1NTU1NTUiLGJyaWdodEJsYWNrOiIjNjY2NjY2IixicmlnaHRSZWQ6IiNjZDMxMzEiLGJyaWdodEdyZWVuOiIjMTRjZTE0IixicmlnaHRZZWxsb3c6IiNiNWJhMDAiLGJyaWdodEJsdWU6IiMwNDUxYTUiLGJyaWdodE1hZ2VudGE6IiNiYzA1YmMiLGJyaWdodEN5YW46IiMwNTk4YmMiLGJyaWdodFdoaXRlOiIjYTVhNWE1In19YXN5bmMgaW5qZWN0WHRlcm1TdHlsZXNJbnRvU2hhZG93KCl7bGV0IEY9Inh0ZXJtLXNoYWRvdy1zdHlsZXMiO2lmKHRoaXMuc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZChGKSlyZXR1cm47bGV0IGo9YCR7aTJ9L3h0ZXJtQCR7czIueHRlcm19L2Nzcy94dGVybS5jc3NgLGxlPWF3YWl0KGF3YWl0IGZldGNoKGopKS50ZXh0KCksUT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO1EuaWQ9RixRLnRleHRDb250ZW50PWxlLHRoaXMuc2hhZG93Um9vdC5hcHBlbmRDaGlsZChRKX1hZGRMb2coRixqLHVlKXtsZXQgbGU9e3RpbWVzdGFtcDpuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksbGV2ZWw6RixtZXNzYWdlOmosc291cmNlOnVlfTt0aGlzLmxvZ0J1ZmZlci5wdXNoKGxlKSx0aGlzLmxvZ0J1ZmZlci5sZW5ndGg+dGhpcy5tYXhFbnRyaWVzJiZ0aGlzLmxvZ0J1ZmZlci5zaGlmdCgpLCF0aGlzLmZpbHRlck1vZGV8fCF0aGlzLnNlYXJjaFF1ZXJ5P3RoaXMud3JpdGVMb2dFbnRyeShsZSk6dGhpcy5lbnRyeU1hdGNoZXNGaWx0ZXIobGUpPyh0aGlzLnRyYWlsaW5nSGlkZGVuQ291bnQ9MCx0aGlzLndyaXRlTG9nRW50cnkobGUpKTp0aGlzLnVwZGF0ZVRyYWlsaW5nUGxhY2Vob2xkZXIoKSx0aGlzLnVwZGF0ZU1ldHJpY3MobGUubGV2ZWwpfXVwZGF0ZUxvZyhGKXtpZihGKWZvcihsZXQgaiBvZiBGKXRoaXMubG9nQnVmZmVyLnB1c2goaiksdGhpcy5sb2dCdWZmZXIubGVuZ3RoPnRoaXMubWF4RW50cmllcyYmdGhpcy5sb2dCdWZmZXIuc2hpZnQoKSwhdGhpcy5maWx0ZXJNb2RlfHwhdGhpcy5zZWFyY2hRdWVyeT90aGlzLndyaXRlTG9nRW50cnkoaik6dGhpcy5lbnRyeU1hdGNoZXNGaWx0ZXIoaik/KHRoaXMudHJhaWxpbmdIaWRkZW5Db3VudD0wLHRoaXMud3JpdGVMb2dFbnRyeShqKSk6dGhpcy51cGRhdGVUcmFpbGluZ1BsYWNlaG9sZGVyKCksdGhpcy51cGRhdGVNZXRyaWNzKGoubGV2ZWwpfXVwZGF0ZVRyYWlsaW5nUGxhY2Vob2xkZXIoKXt0aGlzLnRlcm1pbmFsJiYodGhpcy50cmFpbGluZ0hpZGRlbkNvdW50PjAmJnRoaXMudGVybWluYWwud3JpdGUoIlx4MUJbMUFceDFCWzJLXHIiKSx0aGlzLnRyYWlsaW5nSGlkZGVuQ291bnQrKyx0aGlzLndyaXRlSGlkZGVuUGxhY2Vob2xkZXIodGhpcy50cmFpbGluZ0hpZGRlbkNvdW50KSx0aGlzLmF1dG9TY3JvbGwmJnRoaXMudGVybWluYWwuc2Nyb2xsVG9Cb3R0b20oKSl9ZW50cnlNYXRjaGVzRmlsdGVyKEYpe2lmKCF0aGlzLnNlYXJjaFF1ZXJ5KXJldHVybiEwO2xldCBqPXRoaXMuc2VhcmNoUXVlcnkudG9Mb3dlckNhc2UoKTtyZXR1cm4gRi5tZXNzYWdlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoail8fEYubGV2ZWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhqKXx8KEYuc291cmNlPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGopPz8hMSl9d3JpdGVMb2dFbnRyeShGKXtpZighdGhpcy50ZXJtaW5hbClyZXR1cm47bGV0IGo9dGhpcy5mb3JtYXRMb2dFbnRyeShGKTt0aGlzLnRlcm1pbmFsLndyaXRlbG4oaiksdGhpcy5hdXRvU2Nyb2xsJiZ0aGlzLnRlcm1pbmFsLnNjcm9sbFRvQm90dG9tKCl9Zm9ybWF0TG9nRW50cnkoRil7bGV0IGo9dGhpcy5mb3JtYXRUaW1lc3RhbXAoRi50aW1lc3RhbXApLHVlPXtkZWJ1ZzoiXHgxQls5MG0iLGluZm86Ilx4MUJbMzZtIix3YXJuOiJceDFCWzMzbSIsZXJyb3I6Ilx4MUJbMzFtIixzdWNjZXNzOiJceDFCWzMybSJ9LGxlPSJceDFCWzBtIixRPSJceDFCWzJtIixpZT1gJHt1ZVtGLmxldmVsXX1bJHtGLmxldmVsLnRvVXBwZXJDYXNlKCkucGFkRW5kKDcpfV0ke2xlfWAsdGU9Ri5zb3VyY2U/YCR7UX1bJHtGLnNvdXJjZX1dJHtsZX0gYDoiIixlZT10aGlzLmFwcGx5SGlnaGxpZ2h0cyhGLm1lc3NhZ2UpO3JldHVybmAke1F9JHtqfSR7bGV9ICR7aWV9ICR7dGV9JHtlZX1gfWZvcm1hdFRpbWVzdGFtcChGKXtyZXR1cm4gbmV3IERhdGUoRikudG9Mb2NhbGVUaW1lU3RyaW5nKCJlbi1VUyIse2hvdXIxMjohMSxob3VyOiIyLWRpZ2l0IixtaW51dGU6IjItZGlnaXQiLHNlY29uZDoiMi1kaWdpdCIsZnJhY3Rpb25hbFNlY29uZERpZ2l0czozfSl9YXBwbHlIaWdobGlnaHRzKEYpe2xldCBqPVsuLi50aGlzLmhpZ2hsaWdodEtleXdvcmRzXTtpZih0aGlzLmZpbHRlck1vZGUmJnRoaXMuc2VhcmNoUXVlcnkmJmoucHVzaCh0aGlzLnNlYXJjaFF1ZXJ5KSxqLmxlbmd0aD09PTApcmV0dXJuIEY7bGV0IHVlPUY7Zm9yKGxldCBsZSBvZiBqKXtsZXQgUT1sZS5yZXBsYWNlKC9bLiorP14ke30oKXxbXF1cXF0vZywiXFwkJiIpLGllPW5ldyBSZWdFeHAoYCgke1F9KWAsImdpIik7dWU9dWUucmVwbGFjZShpZSwiXHgxQls0M21ceDFCWzMwbSQxXHgxQlswbSIpfXJldHVybiB1ZX13cml0ZVJhdyhGKXt0aGlzLnRlcm1pbmFsJiYodGhpcy50ZXJtaW5hbC53cml0ZShGKSx0aGlzLnJlY29yZExvZ0V2ZW50KCksdGhpcy5hdXRvU2Nyb2xsJiZ0aGlzLnRlcm1pbmFsLnNjcm9sbFRvQm90dG9tKCkpfXdyaXRlbG5SYXcoRil7dGhpcy50ZXJtaW5hbCYmKHRoaXMudGVybWluYWwud3JpdGVsbihGKSx0aGlzLnJlY29yZExvZ0V2ZW50KCksdGhpcy5hdXRvU2Nyb2xsJiZ0aGlzLnRlcm1pbmFsLnNjcm9sbFRvQm90dG9tKCkpfWhhbmRsZVNlYXJjaElucHV0KEYpe2xldCB1ZT1GLnRhcmdldC52YWx1ZSxsZT10aGlzLnNlYXJjaFF1ZXJ5IT09dWU7dGhpcy5zZWFyY2hRdWVyeT11ZSx0aGlzLmZpbHRlck1vZGUmJmxlP3RoaXMucmVSZW5kZXJGaWx0ZXJlZExvZ3MoKTp0aGlzLnNlYXJjaFF1ZXJ5JiZ0aGlzLnNlYXJjaEFkZG9uPy5maW5kTmV4dCh0aGlzLnNlYXJjaFF1ZXJ5KX1oYW5kbGVTZWFyY2hLZXlkb3duKEYpe0Yua2V5PT09IkVudGVyIj9GLnNoaWZ0S2V5P3RoaXMuc2VhcmNoUHJldmlvdXMoKTp0aGlzLnNlYXJjaE5leHQoKTpGLmtleT09PSJFc2NhcGUiJiYodGhpcy5zZWFyY2hRdWVyeT0iIixGLnRhcmdldC52YWx1ZT0iIil9c2VhcmNoKEYpe3RoaXMuc2VhcmNoUXVlcnk9Rix0aGlzLnNlYXJjaEFkZG9uPy5maW5kTmV4dChGKX1zZWFyY2hOZXh0KCl7dGhpcy5zZWFyY2hRdWVyeSYmdGhpcy5zZWFyY2hBZGRvbj8uZmluZE5leHQodGhpcy5zZWFyY2hRdWVyeSl9c2VhcmNoUHJldmlvdXMoKXt0aGlzLnNlYXJjaFF1ZXJ5JiZ0aGlzLnNlYXJjaEFkZG9uPy5maW5kUHJldmlvdXModGhpcy5zZWFyY2hRdWVyeSl9dG9nZ2xlQXV0b1Njcm9sbCgpe3RoaXMuYXV0b1Njcm9sbD0hdGhpcy5hdXRvU2Nyb2xsLHRoaXMuYXV0b1Njcm9sbCYmdGhpcy50ZXJtaW5hbCYmdGhpcy50ZXJtaW5hbC5zY3JvbGxUb0JvdHRvbSgpfXRvZ2dsZUZpbHRlck1vZGUoKXt0aGlzLmZpbHRlck1vZGU9IXRoaXMuZmlsdGVyTW9kZSx0aGlzLnJlUmVuZGVyRmlsdGVyZWRMb2dzKCl9cmVSZW5kZXJGaWx0ZXJlZExvZ3MoKXtpZih0aGlzLnRlcm1pbmFsKXtpZih0aGlzLnRlcm1pbmFsLmNsZWFyKCksdGhpcy50cmFpbGluZ0hpZGRlbkNvdW50PTAsIXRoaXMuZmlsdGVyTW9kZXx8IXRoaXMuc2VhcmNoUXVlcnkpZm9yKGxldCBGIG9mIHRoaXMubG9nQnVmZmVyKXtsZXQgaj10aGlzLmZvcm1hdExvZ0VudHJ5KEYpO3RoaXMudGVybWluYWwud3JpdGVsbihqKX1lbHNle2xldCBGPTA7Zm9yKGxldCBqIG9mIHRoaXMubG9nQnVmZmVyKWlmKHRoaXMuZW50cnlNYXRjaGVzRmlsdGVyKGopKXtGPjAmJih0aGlzLndyaXRlSGlkZGVuUGxhY2Vob2xkZXIoRiksRj0wKTtsZXQgdWU9dGhpcy5mb3JtYXRMb2dFbnRyeShqKTt0aGlzLnRlcm1pbmFsLndyaXRlbG4odWUpfWVsc2UgRisrO0Y+MCYmKHRoaXMud3JpdGVIaWRkZW5QbGFjZWhvbGRlcihGKSx0aGlzLnRyYWlsaW5nSGlkZGVuQ291bnQ9Ril9dGhpcy5hdXRvU2Nyb2xsJiZ0aGlzLnRlcm1pbmFsLnNjcm9sbFRvQm90dG9tKCl9fXdyaXRlSGlkZGVuUGxhY2Vob2xkZXIoRil7bGV0IGo9Ilx4MUJbMm0iLHVlPSJceDFCWzBtIixsZT1GPT09MT8iWzEgbG9nIGxpbmUgaGlkZGVuIGJ5IGZpbHRlciAuLi5dIjpgWyR7Rn0gbG9nIGxpbmVzIGhpZGRlbiBieSBmaWx0ZXIgLi4uXWA7dGhpcy50ZXJtaW5hbD8ud3JpdGVsbihgJHtqfSR7bGV9JHt1ZX1gKX1jbGVhckxvZ3MoKXt0aGlzLnRlcm1pbmFsPy5jbGVhcigpLHRoaXMubG9nQnVmZmVyPVtdLHRoaXMudHJhaWxpbmdIaWRkZW5Db3VudD0wLHRoaXMucmVzZXRNZXRyaWNzKCl9c2Nyb2xsVG9Cb3R0b20oKXt0aGlzLnRlcm1pbmFsPy5zY3JvbGxUb0JvdHRvbSgpfXVwZGF0ZU1ldHJpY3MoRil7dGhpcy5tZXRyaWNzPXsuLi50aGlzLm1ldHJpY3MsW0ZdOnRoaXMubWV0cmljc1tGXSsxLHRvdGFsOnRoaXMubWV0cmljcy50b3RhbCsxfSx0aGlzLnJlY29yZExvZ0V2ZW50KCl9cmVjb3JkTG9nRXZlbnQoKXt0aGlzLnJhdGVCdWZmZXIucHVzaChEYXRlLm5vdygpKX1jYWxjdWxhdGVSYXRlKCl7bGV0IEY9RGF0ZS5ub3coKTt0aGlzLnJhdGVCdWZmZXI9dGhpcy5yYXRlQnVmZmVyLmZpbHRlcih1ZT0+Ri11ZTwxZTQpO2xldCBqPXRoaXMucmF0ZUJ1ZmZlci5sZW5ndGgvMTA7aiE9PXRoaXMubWV0cmljcy5yYXRlJiYodGhpcy5tZXRyaWNzPXsuLi50aGlzLm1ldHJpY3MscmF0ZTpqfSl9cmVzZXRNZXRyaWNzKCl7dGhpcy5tZXRyaWNzPXtkZWJ1ZzowLGluZm86MCx3YXJuOjAsZXJyb3I6MCxzdWNjZXNzOjAsdG90YWw6MCxyYXRlOjB9LHRoaXMucmF0ZUJ1ZmZlcj1bXX1hc3luYyBkaXNjb25uZWN0ZWRDYWxsYmFjaygpe2F3YWl0IHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5yZXNpemVPYnNlcnZlciYmdGhpcy5yZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCksdGhpcy50ZXJtaW5hbFRoZW1lU3Vic2NyaXB0aW9uJiZ0aGlzLnRlcm1pbmFsVGhlbWVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLnJhdGVJbnRlcnZhbCYmY2xlYXJJbnRlcnZhbCh0aGlzLnJhdGVJbnRlcnZhbCksdGhpcy50ZXJtaW5hbCYmdGhpcy50ZXJtaW5hbC5kaXNwb3NlKCl9c3RhdGlje1RpKGEsdCl9fTtyZXR1cm4gaGU9YX0pKCl9KTt2YXIgY21hPWcoKCk9PntsbWEoKX0pO3ZhciBkbWEsdW1hPWcoKCk9PntwZSgpO0l0KCk7QWl0KCk7ZG1hPWkoKCk9PntsZXQgcz1be25hbWU6IkxhdGVuY3kiLG1heDoxMDB9LHtuYW1lOiJUaHJvdWdocHV0IixtYXg6MTAwfSx7bmFtZToiQXZhaWxhYmlsaXR5IixtYXg6MTAwfSx7bmFtZToiRXJyb3IgUmF0ZSIsbWF4OjEwMH0se25hbWU6IlNhdHVyYXRpb24iLG1heDoxMDB9LHtuYW1lOiJTZWN1cml0eSIsbWF4OjEwMH1dLGU9W3tuYW1lOiJTZXJ2aWNlIEEiLHZhbHVlczpbODUsOTAsOTksMTIsNDUsNzhdfSx7bmFtZToiU2VydmljZSBCIix2YWx1ZXM6WzcwLDY1LDk1LDI4LDYwLDkwXX1dLHQ9W3tuYW1lOiJTcGVlZCIsbWF4OjEwfSx7bmFtZToiUmVsaWFiaWxpdHkiLG1heDoxMH0se25hbWU6IkNvbWZvcnQiLG1heDoxMH0se25hbWU6IlNhZmV0eSIsbWF4OjEwfSx7bmFtZToiQ29zdCIsbWF4OjEwfV0sYT1be25hbWU6IlJhdGluZyIsdmFsdWVzOls4LjUsOS4yLDcsOS41LDZdfV07cmV0dXJuIHdgCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyByPT57bGV0IG49ci5xdWVyeVNlbGVjdG9yKCIjY29tcGFyaXNvbi1jaGFydCIpLG89ci5xdWVyeVNlbGVjdG9yKCIjc2luZ2xlLWNoYXJ0Iik7ci5xdWVyeVNlbGVjdG9yQWxsKCJkZWVzLWJ1dHRvbiIpLmZvckVhY2gocD0+e3AudGV4dD8udHJpbSgpPT09IlJhbmRvbWl6ZSImJnAuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57bi5zZXJpZXM9ZS5tYXAodT0+KHsuLi51LHZhbHVlczp1LnZhbHVlcy5tYXAoKCk9Pk1hdGgucm91bmQoMjArTWF0aC5yYW5kb20oKSo4MCkpfSkpLG8uc2VyaWVzPWEubWFwKHU9Pih7Li4udSx2YWx1ZXM6dS52YWx1ZXMubWFwKCgpPT5NYXRoLnJvdW5kKCgyK01hdGgucmFuZG9tKCkqOCkqMTApLzEwKX0pKX0pfSl9fT4KICAgICAgPHN0eWxlPgogICAgICAgICR7SmAKICAgICAgICAgIC5kZW1vQm94IHsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTUlKSIsImhzbCgwIDAlIDklKSIpfTsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgcGFkZGluZzogNDBweDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgICAgfQogICAgICAgICAgLmNoYXJ0Um93IHsKICAgICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOwogICAgICAgICAgICBnYXA6IDI0cHg7CiAgICAgICAgICB9CiAgICAgICAgICAuY29udHJvbHMgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgICAgIH0KICAgICAgICAgIC5pbmZvIHsKICAgICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNTYuOSUpIiwiaHNsKDIxNSAyMC4yJSA1NS4xJSkiKX07CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgJ0dlaXN0IFNhbnMnLCBzYW5zLXNlcmlmOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDhweDsKICAgICAgICAgIH0KICAgICAgICBgfQogICAgICA8L3N0eWxlPgogICAgICA8ZGl2IGNsYXNzPSJkZW1vQm94Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9scyI+CiAgICAgICAgICA8ZGVlcy1idXR0b24tZ3JvdXAgbGFiZWw9IkFjdGlvbnM6Ij4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uPlJhbmRvbWl6ZTwvZGVlcy1idXR0b24+CiAgICAgICAgICA8L2RlZXMtYnV0dG9uLWdyb3VwPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJjaGFydFJvdyI+CiAgICAgICAgICA8ZGVlcy1jaGFydC1yYWRhcgogICAgICAgICAgICBpZD0iY29tcGFyaXNvbi1jaGFydCIKICAgICAgICAgICAgLmxhYmVsPSR7IlNlcnZpY2UgSGVhbHRoIENvbXBhcmlzb24ifQogICAgICAgICAgICAuaW5kaWNhdG9ycz0ke3N9CiAgICAgICAgICAgIC5zZXJpZXM9JHtlfQogICAgICAgICAgPjwvZGVlcy1jaGFydC1yYWRhcj4KCiAgICAgICAgICA8ZGVlcy1jaGFydC1yYWRhcgogICAgICAgICAgICBpZD0ic2luZ2xlLWNoYXJ0IgogICAgICAgICAgICAubGFiZWw9JHsiUHJvZHVjdCBSYXRpbmcifQogICAgICAgICAgICAuaW5kaWNhdG9ycz0ke3R9CiAgICAgICAgICAgIC5zZXJpZXM9JHthfQogICAgICAgICAgICAuZmlsbEFyZWE9JHshMH0KICAgICAgICAgID48L2RlZXMtY2hhcnQtcmFkYXI+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9ImluZm8iPgogICAgICAgICAgUmFkYXIgY2hhcnQgZm9yIG11bHRpLWRpbWVuc2lvbmFsIGNvbXBhcmlzb24g4oCiCiAgICAgICAgICBTdXBwb3J0cyBtdWx0aXBsZSBvdmVybGF5IHNlcmllcyBhbmQgY29uZmlndXJhYmxlIGZpbGwg4oCiCiAgICAgICAgICBDbGljayAnUmFuZG9taXplJyB0byB1cGRhdGUgZGF0YQogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KICBgfSwiZGVtb0Z1bmMiKX0pO3ZhciBwbWEsaG1hPWcoKCk9PntwZSgpO1VYKCk7cG1hPVsuLi5VaCxKYGBdfSk7dmFyIGZtYSxtbWE9ZygoKT0+e3BlKCk7Zm1hPWkocz0+d2AKICAgIDxkZWVzLXRpbGU+CiAgICAgIDxkaXYgc2xvdD0iaGVhZGVyIiBjbGFzcz0iY2hhcnRIZWFkZXIiPgogICAgICAgIDxzcGFuIGNsYXNzPSJjaGFydExhYmVsIj4ke3MubGFiZWx9PC9zcGFuPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2hhcnRDb250YWluZXIiPjwvZGl2PgogICAgPC9kZWVzLXRpbGU+CiAgYCwicmVuZGVyQ2hhcnRSYWRhciIpfSk7dmFyIFdYLHZ1LGdtYSxBaXQ9ZygoKT0+e3BlKCk7VlgoKTt1bWEoKTtobWEoKTttbWEoKTtadigpO1dYPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSx2dT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sZ21hPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1jaGFydC1yYWRhciIpXSxlLHQ9W10sYSxyPWJ1LG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdO3ZhciB5PWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzQ2hhcnRSYWRhciIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBNPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6QXJyYXl9KV0scD1bTCh7dHlwZTpBcnJheX0pXSxjPVtMKHt0eXBlOkJvb2xlYW59KV0seD1bTCh7dHlwZTpCb29sZWFufSldLFdYKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaW5kaWNhdG9ycyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4iaW5kaWNhdG9ycyJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LmluZGljYXRvcnMsImdldCIpLHNldDppKCh6LE4pPT57ei5pbmRpY2F0b3JzPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sbyxsKSxXWCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlcmllcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4ic2VyaWVzImluIHosImhhcyIpLGdldDppKHo9Pnouc2VyaWVzLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3ouc2VyaWVzPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sZCx1KSxXWCh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dMZWdlbmQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoej0+InNob3dMZWdlbmQiaW4geiwiaGFzIiksZ2V0Omkoej0+ei5zaG93TGVnZW5kLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3ouc2hvd0xlZ2VuZD1OfSwic2V0Iil9LG1ldGFkYXRhOk19LGIsdiksV1godGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJmaWxsQXJlYSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4iZmlsbEFyZWEiaW4geiwiaGFzIiksZ2V0Omkoej0+ei5maWxsQXJlYSwiZ2V0Iiksc2V0OmkoKHosTik9Pnt6LmZpbGxBcmVhPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sbSxmKSxXWChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpNfSxudWxsLHQpLHk9YT1lLnZhbHVlLE0mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6TX0pfXN0YXRpYyBkZW1vPWRtYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIkNoYXJ0Il07I2U9dnUodGhpcyxvLFtdKTtnZXQgaW5kaWNhdG9ycygpe3JldHVybiB0aGlzLiNlfXNldCBpbmRpY2F0b3JzKE0pe3RoaXMuI2U9TX0jdD0odnUodGhpcyxsKSx2dSh0aGlzLGQsW10pKTtnZXQgc2VyaWVzKCl7cmV0dXJuIHRoaXMuI3R9c2V0IHNlcmllcyhNKXt0aGlzLiN0PU19I2E9KHZ1KHRoaXMsdSksdnUodGhpcyxiLCEwKSk7Z2V0IHNob3dMZWdlbmQoKXtyZXR1cm4gdGhpcy4jYX1zZXQgc2hvd0xlZ2VuZChNKXt0aGlzLiNhPU19I3M9KHZ1KHRoaXMsdiksdnUodGhpcyxtLCEwKSk7Z2V0IGZpbGxBcmVhKCl7cmV0dXJuIHRoaXMuI3N9c2V0IGZpbGxBcmVhKE0pe3RoaXMuI3M9TX1zdGF0aWMgc3R5bGVzPXBtYTtyZW5kZXIoKXtyZXR1cm4gZm1hKHRoaXMpfWFzeW5jIHVwZGF0ZWQoTSl7c3VwZXIudXBkYXRlZChNKSx0aGlzLmNoYXJ0SW5zdGFuY2UmJihNLmhhcygiaW5kaWNhdG9ycyIpfHxNLmhhcygic2VyaWVzIil8fE0uaGFzKCJzaG93TGVnZW5kIil8fE0uaGFzKCJmaWxsQXJlYSIpKSYmdGhpcy51cGRhdGVDaGFydCgpfWJ1aWxkT3B0aW9uKCl7bGV0IE09VmgodGhpcy5nb0JyaWdodCksej1xaCh0aGlzLmdvQnJpZ2h0KSxOPXRoaXMuZ29CcmlnaHQ/LjE6LjE1LEM9dGhpcy5zZXJpZXMubWFwKChfLE8pPT57bGV0ICQ9Xy5jb2xvcnx8eltPJXoubGVuZ3RoXTtyZXR1cm57bmFtZTpfLm5hbWUsdmFsdWU6Xy52YWx1ZXMsaXRlbVN0eWxlOntjb2xvcjokLGJvcmRlckNvbG9yOiQsYm9yZGVyV2lkdGg6MX0sbGluZVN0eWxlOntjb2xvcjokLHdpZHRoOjEuNX0sYXJlYVN0eWxlOnRoaXMuZmlsbEFyZWE/e2NvbG9yOmpoKCQsTil9OnZvaWQgMCxzeW1ib2w6ImNpcmNsZSIsc3ltYm9sU2l6ZTo1fX0pO3JldHVybnt0b29sdGlwOnt0cmlnZ2VyOiJpdGVtIn0sbGVnZW5kOnRoaXMuc2hvd0xlZ2VuZCYmdGhpcy5zZXJpZXMubGVuZ3RoPjE/e2JvdHRvbTo4LGl0ZW1XaWR0aDoxMCxpdGVtSGVpZ2h0OjEwfTp7c2hvdzohMX0scmFkYXI6e2luZGljYXRvcjp0aGlzLmluZGljYXRvcnMubWFwKF89Pih7bmFtZTpfLm5hbWUsbWF4Ol8ubWF4fSkpLHNoYXBlOiJwb2x5Z29uIixzcGxpdE51bWJlcjo0LGF4aXNOYW1lOntjb2xvcjpNLnRleHRTZWNvbmRhcnksZm9udFNpemU6MTF9LHNwbGl0QXJlYTp7YXJlYVN0eWxlOntjb2xvcjpbTS5iZ1RlcnRpYXJ5LE0uYmdTZWNvbmRhcnldfX0sc3BsaXRMaW5lOntsaW5lU3R5bGU6e2NvbG9yOk0uYm9yZGVyRGVmYXVsdH19LGF4aXNMaW5lOntsaW5lU3R5bGU6e2NvbG9yOk0uYm9yZGVyRGVmYXVsdH19fSxzZXJpZXM6W3t0eXBlOiJyYWRhciIsZGF0YTpDLGVtcGhhc2lzOntsaW5lU3R5bGU6e3dpZHRoOjN9fX1dfX1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdnUodGhpcyxmKX1zdGF0aWN7dnUoYSx0KX19O3JldHVybiB5PWF9KSgpfSk7dmFyIGJtYT1nKCgpPT57QWl0KCl9KTt2YXIgdm1hPWcoKCk9PnskZmEoKTtxZmEoKTtaZmEoKTtpbWEoKTtjbWEoKTtibWEoKX0pO3ZhciB4bWEseW1hPWcoKCk9PntwZSgpO3htYT1pKCgpPT53YAogIDxzdHlsZT4KICAgIC5kZW1vV3JhcHBlciB7CiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIG1pbi1oZWlnaHQ6IDEwMHZoOwogICAgICBwYWRkaW5nOiA0OHB4OwogICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y4ZjlmYSIsIiMwYTBhMGEiKX07CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgIGdhcDogMzJweDsKICAgIH0KICAgIAogICAgLnNlY3Rpb24gewogICAgICBtYXgtd2lkdGg6IDkwMHB4OwogICAgICB3aWR0aDogMTAwJTsKICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICB9CiAgICAKICAgIC5zZWN0aW9uLXRpdGxlIHsKICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICBmb250LXdlaWdodDogNjAwOwogICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTA5MGIiLCIjZmFmYWZhIil9OwogICAgfQogICAgCiAgICAuc2VjdGlvbi1kZXNjcmlwdGlvbiB7CiAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgIH0KICA8L3N0eWxlPgogIDxkaXYgY2xhc3M9ImRlbW9XcmFwcGVyIj4KICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5UeXBlU2NyaXB0IENvZGUgRXhhbXBsZTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj5BIGNvbXByZWhlbnNpdmUgVHlwZVNjcmlwdCBjb2RlIGV4YW1wbGUgd2l0aCB2YXJpb3VzIHN5bnRheCBoaWdobGlnaHRpbmcuPC9kaXY+CiAgICAgIDxkZWVzLWRhdGF2aWV3LWNvZGVib3ggcHJvZ2xhbmc9InR5cGVzY3JpcHQiPgppbnRlcmZhY2UgVXNlciB7CiAgaWQ6IG51bWJlcjsKICBuYW1lOiBzdHJpbmc7CiAgZW1haWw6IHN0cmluZzsKICBpc0FjdGl2ZTogYm9vbGVhbjsKfQoKY2xhc3MgVXNlclNlcnZpY2UgewogIHByaXZhdGUgdXNlcnM6IFVzZXJbXSA9IFtdOwogIAogIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBpVXJsOiBzdHJpbmcpIHsKICAgIGNvbnNvbGUubG9nKCdVc2VyU2VydmljZSBpbml0aWFsaXplZCcpOwogIH0KICAKICBhc3luYyBnZXRVc2VycygpOiBQcm9taXNlPFVzZXJbXT4gewogICAgdHJ5IHsKICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh0aGlzLmFwaVVybCk7CiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7CiAgICAgIHJldHVybiBkYXRhLnVzZXJzOwogICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGZldGNoIHVzZXJzOicsIGVycm9yKTsKICAgICAgcmV0dXJuIFtdOwogICAgfQogIH0KICAKICBhZGRVc2VyKHVzZXI6IFVzZXIpOiB2b2lkIHsKICAgIHRoaXMudXNlcnMucHVzaCh1c2VyKTsKICB9Cn0KCi8vIFVzYWdlIGV4YW1wbGUKY29uc3Qgc2VydmljZSA9IG5ldyBVc2VyU2VydmljZSgnaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vdXNlcnMnKTsKY29uc3QgdXNlcnMgPSBhd2FpdCBzZXJ2aWNlLmdldFVzZXJzKCk7CmNvbnNvbGUubG9nKCdGb3VuZCB1c2VyczonLCB1c2Vycy5sZW5ndGgpOwogICAgICA8L2RlZXMtZGF0YXZpZXctY29kZWJveD4KICAgIDwvZGl2PgogICAgCiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+SmF2YVNjcmlwdCBFeGFtcGxlPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tZGVzY3JpcHRpb24iPk1vZGVybiBKYXZhU2NyaXB0IHdpdGggRVM2KyBmZWF0dXJlcy48L2Rpdj4KICAgICAgPGRlZXMtZGF0YXZpZXctY29kZWJveCBwcm9nbGFuZz0iamF2YXNjcmlwdCI+Ci8vIEFycmF5IG1hbmlwdWxhdGlvbiBleGFtcGxlcwpjb25zdCBudW1iZXJzID0gWzEsIDIsIDMsIDQsIDVdOwpjb25zdCBkb3VibGVkID0gbnVtYmVycy5tYXAobiA9PiBuICogMik7CmNvbnN0IGZpbHRlcmVkID0gbnVtYmVycy5maWx0ZXIobiA9PiBuID4gMyk7CgovLyBPYmplY3QgZGVzdHJ1Y3R1cmluZwpjb25zdCB1c2VyID0geyBuYW1lOiAnSm9obicsIGFnZTogMzAsIGNpdHk6ICdOZXcgWW9yaycgfTsKY29uc3QgeyBuYW1lLCBhZ2UgfSA9IHVzZXI7CgovLyBQcm9taXNlIGhhbmRsaW5nCmNvbnN0IGZldGNoRGF0YSA9IGFzeW5jICh1cmwpID0+IHsKICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCk7CiAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTsKfTsKCi8vIE1vZGVybiBzeW50YXgKY29uc3QgZ3JlZXQgPSAobmFtZSA9ICdXb3JsZCcpID0+IFxgSGVsbG8sIFwke25hbWV9IVxgOwpjb25zb2xlLmxvZyhncmVldCgnU2hhZENOJykpOwogICAgICA8L2RlZXMtZGF0YXZpZXctY29kZWJveD4KICAgIDwvZGl2PgogICAgCiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+UHl0aG9uIEV4YW1wbGU8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1kZXNjcmlwdGlvbiI+UHl0aG9uIGNvZGUgd2l0aCBjbGFzc2VzIGFuZCB0eXBlIGhpbnRzLjwvZGl2PgogICAgICA8ZGVlcy1kYXRhdmlldy1jb2RlYm94IHByb2dsYW5nPSJweXRob24iPgpmcm9tIHR5cGluZyBpbXBvcnQgTGlzdCwgT3B0aW9uYWwKaW1wb3J0IGFzeW5jaW8KCmNsYXNzIERhdGFQcm9jZXNzb3I6CiAgICAiIiJBIHNpbXBsZSBkYXRhIHByb2Nlc3NvciBjbGFzcyIiIgogICAgCiAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZTogc3RyKToKICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgc2VsZi5kYXRhOiBMaXN0W2RpY3RdID0gW10KICAgIAogICAgYXN5bmMgZGVmIHByb2Nlc3NfZGF0YShzZWxmLCBpdGVtczogTGlzdFtkaWN0XSkgLT4gTGlzdFtkaWN0XToKICAgICAgICAiIiJQcm9jZXNzIGRhdGEgaXRlbXMgYXN5bmNocm9ub3VzbHkiIiIKICAgICAgICByZXN1bHRzID0gW10KICAgICAgICBmb3IgaXRlbSBpbiBpdGVtczoKICAgICAgICAgICAgIyBTaW11bGF0ZSBhc3luYyBwcm9jZXNzaW5nCiAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4xKQogICAgICAgICAgICByZXN1bHRzLmFwcGVuZCh7CiAgICAgICAgICAgICAgICAnaWQnOiBpdGVtLmdldCgnaWQnKSwKICAgICAgICAgICAgICAgICdwcm9jZXNzZWQnOiBUcnVlLAogICAgICAgICAgICAgICAgJ3Byb2Nlc3Nvcic6IHNlbGYubmFtZQogICAgICAgICAgICB9KQogICAgICAgIHJldHVybiByZXN1bHRzCiAgICAKICAgIGRlZiBnZXRfc3VtbWFyeShzZWxmKSAtPiBkaWN0OgogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICdwcm9jZXNzb3InOiBzZWxmLm5hbWUsCiAgICAgICAgICAgICdpdGVtc19wcm9jZXNzZWQnOiBsZW4oc2VsZi5kYXRhKQogICAgICAgIH0KCiMgVXNhZ2UKcHJvY2Vzc29yID0gRGF0YVByb2Nlc3NvcigiTWFpbiIpCmRhdGEgPSBhd2FpdCBwcm9jZXNzb3IucHJvY2Vzc19kYXRhKFt7J2lkJzogMX0sIHsnaWQnOiAyfV0pCiAgICAgIDwvZGVlcy1kYXRhdmlldy1jb2RlYm94PgogICAgPC9kaXY+CiAgICAKICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5DU1MgRXhhbXBsZTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj5Nb2Rlcm4gQ1NTIHdpdGggY3VzdG9tIHByb3BlcnRpZXMgYW5kIGFuaW1hdGlvbnMuIE5vdGUgdGhlIHNob3J0ZXIgbGFuZ3VhZ2UgbGFiZWwuPC9kaXY+CiAgICAgIDxkZWVzLWRhdGF2aWV3LWNvZGVib3ggcHJvZ2xhbmc9ImNzcyI+Ci8qIE1vZGVybiBDU1Mgd2l0aCBjdXN0b20gcHJvcGVydGllcyAqLwo6cm9vdCB7CiAgLS1wcmltYXJ5LWNvbG9yOiAjM2I4MmY2OwogIC0tc2Vjb25kYXJ5LWNvbG9yOiAjMTBiOTgxOwogIC0tYmFja2dyb3VuZDogI2ZmZmZmZjsKICAtLXRleHQtY29sb3I6ICMwOTA5MGI7CiAgLS1ib3JkZXItcmFkaXVzOiA2cHg7Cn0KCi5jYXJkIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS1iYWNrZ3JvdW5kKTsKICBib3JkZXI6IDFweCBzb2xpZCAjZTVlN2ViOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpOwogIHBhZGRpbmc6IDI0cHg7CiAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlOwp9CgouY2FyZDpob3ZlciB7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpOwogIGJveC1zaGFkb3c6IDAgNHB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMSk7Cn0KCkBrZXlmcmFtZXMgZmFkZUluIHsKICBmcm9tIHsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwcHgpOyB9CiAgdG8geyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH0KfQogICAgICA8L2RlZXMtZGF0YXZpZXctY29kZWJveD4KICAgIDwvZGl2PgogICAgCiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+SlNPTiBFeGFtcGxlPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tZGVzY3JpcHRpb24iPkpTT04gY29uZmlndXJhdGlvbiB3aXRoIHByb3BlciBmb3JtYXR0aW5nLjwvZGl2PgogICAgICA8ZGVlcy1kYXRhdmlldy1jb2RlYm94IHByb2dsYW5nPSJqc29uIj4KewogICJuYW1lIjogIkBkZXNpZ24uZXN0YXRlL2RlZXMtY2F0YWxvZyIsCiAgInZlcnNpb24iOiAiMS4xMC43IiwKICAiZGVzY3JpcHRpb24iOiAiQSBjb21wcmVoZW5zaXZlIGNhdGFsb2cgb2Ygd2ViIGNvbXBvbmVudHMiLAogICJtYWluIjogImRpc3RfdHNfd2ViL2luZGV4LmpzIiwKICAidHlwZSI6ICJtb2R1bGUiLAogICJzY3JpcHRzIjogewogICAgImJ1aWxkIjogInRzYnVpbGQgdHNmb2xkZXJzIC0tYWxsb3dpbXBsaWNpdGFueSAmJiB0c2J1bmRsZSBlbGVtZW50IC0tcHJvZHVjdGlvbiIsCiAgICAid2F0Y2giOiAidHN3YXRjaCBlbGVtZW50IiwKICAgICJ0ZXN0IjogInRzdGVzdCB0ZXN0LyAtLXdlYiAtLXZlcmJvc2UiCiAgfSwKICAiZGVwZW5kZW5jaWVzIjogewogICAgIkBkZXNpZ24uZXN0YXRlL2RlZXMtZWxlbWVudCI6ICJeMi4wLjQ1IiwKICAgICJoaWdobGlnaHQuanMiOiAiXjExLjkuMCIKICB9Cn0KICAgICAgPC9kZWVzLWRhdGF2aWV3LWNvZGVib3g+CiAgICA8L2Rpdj4KICA8L2Rpdj4KYCwiZGVtb0Z1bmMiKX0pO3ZhciBOaXQsR1gsd21hLFJpdD1nKCgpPT57eW1hKCk7cGUoKTtDcigpO3B0KCk7bzMoKTtrdCgpO29yKCk7ZnUoKTtucigpO05pdD1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sR1g9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LHdtYT0oKCk9PntsZXQgcz1bbmUoImRlZXMtZGF0YXZpZXctY29kZWJveCIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdO3ZhciBjPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzRGF0YXZpZXdDb2RlYm94Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGI9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCgpXSxwPVtMKHt0eXBlOlN0cmluZyxyZWZsZWN0OiEwfSldLE5pdCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InByb2dMYW5nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHY9PiJwcm9nTGFuZyJpbiB2LCJoYXMiKSxnZXQ6aSh2PT52LnByb2dMYW5nLCJnZXQiKSxzZXQ6aSgodix4KT0+e3YucHJvZ0xhbmc9eH0sInNldCIpfSxtZXRhZGF0YTpifSxvLGwpLE5pdCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNvZGVUb0Rpc3BsYXkiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkodj0+ImNvZGVUb0Rpc3BsYXkiaW4gdiwiaGFzIiksZ2V0Omkodj0+di5jb2RlVG9EaXNwbGF5LCJnZXQiKSxzZXQ6aSgodix4KT0+e3YuY29kZVRvRGlzcGxheT14fSwic2V0Iil9LG1ldGFkYXRhOmJ9LGQsdSksTml0KG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOmJ9LG51bGwsdCksYz1hPWUudmFsdWUsYiYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSl9c3RhdGljIGRlbW89eG1hO3N0YXRpYyBkZW1vR3JvdXBzPVsiRGF0YSBWaWV3IiwiV29ya3NwYWNlIl07I2U9R1godGhpcyxvLCJ0eXBlc2NyaXB0Iik7Z2V0IHByb2dMYW5nKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHByb2dMYW5nKGIpe3RoaXMuI2U9Yn0jdD0oR1godGhpcyxsKSxHWCh0aGlzLGQsIiIpKTtnZXQgY29kZVRvRGlzcGxheSgpe3JldHVybiB0aGlzLiN0fXNldCBjb2RlVG9EaXNwbGF5KGIpe3RoaXMuI3Q9Yn1zdGF0aWMgc3R5bGVzPVtIZSxoLmRlZmF1bHRTdHlsZXNdO2NvbnN0cnVjdG9yKCl7c3VwZXIoKX1yZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgJHt0YS5zdHlsZXN9CiAgICAgIDxzdHlsZT4KICAgICAgICA6aG9zdCB7CiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgICBmb250LWZhbWlseTogJHtOYX07CiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIH0KICAgICAgICBkZWVzLXRpbGUgewogICAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgICB9CgogICAgICAgIC5hcHBiYXIgewogICAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgICAgbGluZS1oZWlnaHQ6IDMycHg7CiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBwYWRkaW5nOiAwIDE2cHg7CiAgICAgICAgfQoKICAgICAgICAuYXBwYmFyIC5maWxlTmFtZSB7CiAgICAgICAgICBsaW5lLWhlaWdodDogaW5oZXJpdDsKICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgIGZsZXg6IDE7CiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgfQoKICAgICAgICAuYm90dG9tQmFyIHsKICAgICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgICAgaGVpZ2h0OiAyOHB4OwogICAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgICAgbGluZS1oZWlnaHQ6IDI4cHg7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBwYWRkaW5nOiAwIDE2cHg7CiAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgfQoKICAgICAgICAuc3BhY2VzTGFiZWwgewogICAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgfQoKICAgICAgICAubGFuZ3VhZ2VMYWJlbCB7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzYjgyZjYiLCIjM2I4MmY2Iil9OwogICAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgICAgbGluZS1oZWlnaHQ6IDI4cHg7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSg1OSwgMTMwLCAyNDYsIDAuMSkiLCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC4xKSIpfTsKICAgICAgICAgIHBhZGRpbmc6IDBweCAxNnB4OwogICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIH0KCiAgICAgICAgLmhsanMta2V5d29yZCB7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNkYzI2MjYiLCIjZjg3MTcxIil9OwogICAgICAgIH0KCiAgICAgICAgLmNvZGVncmlkIHsKICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDUwcHggYXV0bzsKICAgICAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICAgIH0KCiAgICAgICAgLmxpbmVOdW1iZXJzIHsKICAgICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgICAgcGFkZGluZzogMjRweCAxNnB4IDBweCAwcHg7CiAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIH0KCiAgICAgICAgLmxpbmVDb3VudGVyOmxhc3QtY2hpbGQgewogICAgICAgICAgb3BhY2l0eTogNTAlOwogICAgICAgIH0KCiAgICAgICAgcHJlIHsKICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICAgICAgICBtYXJnaW46IDBweDsKICAgICAgICAgIHBhZGRpbmc6IDI0cHggMjRweDsKICAgICAgICB9CgogICAgICAgIGNvZGUgewogICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICAgIHBhZGRpbmc6IDBweDsKICAgICAgICAgIG1hcmdpbjogMHB4OwogICAgICAgIH0KCiAgICAgICAgY29kZSwKICAgICAgICBjb2RlICosCiAgICAgICAgLmxpbmVOdW1iZXJzIHsKICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTsKICAgICAgICAgIGZvbnQtd2VpZ2h0OiAyMDA7CiAgICAgICAgICBmb250LWZhbWlseTogJHskOH07CiAgICAgICAgfQoKICAgICAgICAuaGxqcy1zdHJpbmcgewogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDU5NjY5IiwiIzEwYjk4MSIpfTsKICAgICAgICB9CgogICAgICAgIC5obGpzLWJ1aWx0X2luIHsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzhiNWNmNiIsIiNhNzhiZmEiKX07CiAgICAgICAgfQoKICAgICAgICAuaGxqcy1mdW5jdGlvbiB7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzYjgyZjYiLCIjNjBhNWZhIil9OwogICAgICAgIH0KCiAgICAgICAgLmhsanMtcGFyYW1zIHsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA4OTFiMiIsIiMwNmI2ZDQiKX07CiAgICAgICAgfQoKICAgICAgICAuaGxqcy1jb21tZW50IHsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiM3MTcxN2EiKX07CiAgICAgICAgfQoKICAgICAgICAuaGxqcy1udW1iZXIgewogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZWE1ODBjIiwiI2ZiOTIzYyIpfTsKICAgICAgICB9CgogICAgICAgIC5obGpzLWxpdGVyYWwgewogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZGMyNjI2IiwiI2Y4NzE3MSIpfTsKICAgICAgICB9CgogICAgICAgIC5obGpzLWF0dHIgewogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjOGI1Y2Y2IiwiI2E3OGJmYSIpfTsKICAgICAgICB9CgogICAgICAgIC5obGpzLXZhcmlhYmxlIHsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07CiAgICAgICAgfQogICAgICA8L3N0eWxlPgogICAgICA8ZGVlcy10aWxlCiAgICAgICAgQGNvbnRleHRtZW51PSIke2I9PntrYS5vcGVuQ29udGV4dE1lbnVXaXRoT3B0aW9ucyhiLFt7bmFtZToiQWJvdXQiLGljb25OYW1lOiJjaXJjbGVJbmZvIixhY3Rpb246aShhc3luYygpPT5udWxsLCJhY3Rpb24iKX1dKX19IgogICAgICA+CiAgICAgICAgPGRpdiBzbG90PSJoZWFkZXIiIGNsYXNzPSJhcHBiYXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZmlsZU5hbWUiPmluZGV4LnRzPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY29kZWdyaWQiPgogICAgICAgICAgPGRpdiBjbGFzcz0ibGluZU51bWJlcnMiPgogICAgICAgICAgICAkeygoKT0+e2xldCBiPTA7cmV0dXJuIHRoaXMuY29kZVRvRGlzcGxheS5zcGxpdChgCmApLm1hcCh2PT4oYisrLHdgPGRpdiBjbGFzcz0ibGluZUNvdW50ZXIiPiR7Yn08L2Rpdj5gKSl9KSgpfQogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cHJlPjxjb2RlPjwvY29kZT48L3ByZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IHNsb3Q9ImZvb3RlciIgY2xhc3M9ImJvdHRvbUJhciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFjZXNMYWJlbCI+U3BhY2VzOiAyPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5ndWFnZUxhYmVsIj4ke3RoaXMucHJvZ0xhbmd9PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy10aWxlPgogICAgYH1jb2RlVG9EaXNwbGF5U3RvcmU9KEdYKHRoaXMsdSksIiIpO2hpZ2hsaWdodEpzPW51bGw7YXN5bmMgdXBkYXRlZChiKXtzdXBlci51cGRhdGVkKGIpLGNvbnNvbGUubG9nKCJoaWdobGlnaHRpbmcgbm93IiksY29uc29sZS5sb2codGhpcy5jaGlsZE5vZGVzKTtsZXQgdj1bXTt0aGlzLmNoaWxkTm9kZXMuZm9yRWFjaChmPT57Zi5ub2RlTmFtZT09PSIjdGV4dCImJnYucHVzaChmKX0pLHRoaXMuY29kZVRvRGlzcGxheSYmdGhpcy5jb2RlVG9EaXNwbGF5IT09dGhpcy5jb2RlVG9EaXNwbGF5U3RvcmUmJih0aGlzLmNvZGVUb0Rpc3BsYXlTdG9yZT1uZC5ub3JtYWxpemUodGhpcy5jb2RlVG9EaXNwbGF5KS50cmltU3RhcnQoKSksdlswXSYmdlswXS53aG9sZVRleHQmJiF0aGlzLmNvZGVUb0Rpc3BsYXkmJih0aGlzLmNvZGVUb0Rpc3BsYXlTdG9yZT1uZC5ub3JtYWxpemUodlswXS53aG9sZVRleHQpLnRyaW1TdGFydCgpLHRoaXMuY29kZVRvRGlzcGxheT10aGlzLmNvZGVUb0Rpc3BsYXlTdG9yZSksYXdhaXQgdXQuc21hcnRkZWxheS5kZWxheUZvcigwKSx0aGlzLmhpZ2hsaWdodEpzfHwodGhpcy5oaWdobGlnaHRKcz1hd2FpdCBRci5nZXRJbnN0YW5jZSgpLmxvYWRIaWdobGlnaHRKcygpKTtsZXQgeD10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiY29kZSIpLG09dGhpcy5oaWdobGlnaHRKcy5oaWdobGlnaHQodGhpcy5jb2RlVG9EaXNwbGF5U3RvcmUse2xhbmd1YWdlOnRoaXMucHJvZ0xhbmcsaWdub3JlSWxsZWdhbHM6ITB9KTt4LmlubmVySFRNTD1tLnZhbHVlfXN0YXRpY3tHWChhLHQpfX07cmV0dXJuIGM9YX0pKCl9KTt2YXIga21hPWcoKCk9PntSaXQoKX0pO3ZhciBTbWEsX21hPWcoKCk9PntwZSgpO1NuKCk7U21hPWkoKCk9PndgIDxzdHlsZT4KICAgIC5kZW1vIHsKICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNWY1ZjUiLCIjMGEwYTBhIil9OwogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgY29udGVudDogJyc7CiAgICAgIHBhZGRpbmc6IDQwcHg7CiAgICB9CiAgICAKICAgIC5kZW1vLWdyaWQgewogICAgICBkaXNwbGF5OiBncmlkOwogICAgICBnYXA6IDI0cHg7CiAgICAgIG1heC13aWR0aDogODAwcHg7CiAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgfQogICAgCiAgICAuZGVtby1zZWN0aW9uIHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgZ2FwOiAxNnB4OwogICAgfQogICAgCiAgICAuZGVtby10aXRsZSB7CiAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA0NS4xJSkiLCJoc2woMCAwJSA2My45JSkiKX07CiAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgc2Fucy1zZXJpZjsKICAgIH0KICAgIAogICAgLmRlbW8tbm90ZSB7CiAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA0NS4xJSkiLCJoc2woMCAwJSA2My45JSkiKX07CiAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBzYW5zLXNlcmlmOwogICAgfQogIDwvc3R5bGU+CiAgPGRpdiBjbGFzcz0iZGVtbyI+CiAgICA8ZGl2IGNsYXNzPSJkZW1vLW5vdGUiPgogICAgICBSaWdodC1jbGljayBvbiBhbnkgZGV0YWlsIHJvdyB0byBjb3B5IHRoZSB2YWx1ZSwga2V5LCBvciBrZXk6dmFsdWUgY29tYmluYXRpb24KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iZGVtby1ncmlkIj4KICAgICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJkZW1vLXRpdGxlIj5TZXJ2aWNlIEhlYWx0aCBTdGF0dXM8L2Rpdj4KICAgICAgICA8ZGVlcy1kYXRhdmlldy1zdGF0dXNvYmplY3QKICAgICAgICAgIC5zdGF0dXNPYmplY3Q9JHt7aWQ6IjEiLG5hbWU6IkFQSSBHYXRld2F5IFNlcnZpY2UiLGxhc3RVcGRhdGVkOkRhdGUubm93KCksY29tYmluZWRTdGF0dXM6Im9rIixjb21iaW5lZFN0YXR1c1RleHQ6IkFsbCBzeXN0ZW1zIG9wZXJhdGlvbmFsIixkZXRhaWxzOlt7bmFtZToiUmVzcG9uc2UgVGltZSIsdmFsdWU6IjQ1bXMgKGF2ZykiLHN0YXR1czoib2siLHN0YXR1c1RleHQ6IldpdGhpbiBub3JtYWwgcmFuZ2UifSx7bmFtZToiVXB0aW1lIix2YWx1ZToiOTkuOTklICgzMCBkYXlzKSIsc3RhdHVzOiJvayIsc3RhdHVzVGV4dDoiRXhjZWxsZW50IHVwdGltZSJ9LHtuYW1lOiJBY3RpdmUgQ29ubmVjdGlvbnMiLHZhbHVlOiIxLDIzNCAvIDEwLDAwMCIsc3RhdHVzOiJvayIsc3RhdHVzVGV4dDoiTm9ybWFsIGxvYWQifSx7bmFtZToiU1NMIENlcnRpZmljYXRlIix2YWx1ZToiVmFsaWQgdW50aWwgMjAyNC0xMi0zMSIsc3RhdHVzOiJvayIsc3RhdHVzVGV4dDoiQ2VydGlmaWNhdGUgdmFsaWQifV19fQogICAgICAgID4KICAgICAgICA8L2RlZXMtZGF0YXZpZXctc3RhdHVzb2JqZWN0PgogICAgICA8L2Rpdj4KICAgICAgCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0iZGVtby10aXRsZSI+RGF0YWJhc2UgQ2x1c3RlciBTdGF0dXM8L2Rpdj4KICAgICAgICA8ZGVlcy1kYXRhdmlldy1zdGF0dXNvYmplY3QKICAgICAgICAgIC5zdGF0dXNPYmplY3Q9JHt7aWQ6IjIiLG5hbWU6IlBvc3RncmVTUUwgQ2x1c3RlciIsbGFzdFVwZGF0ZWQ6RGF0ZS5ub3coKS0zNmU1LGNvbWJpbmVkU3RhdHVzOiJwYXJ0bHlfb2siLGNvbWJpbmVkU3RhdHVzVGV4dDoiTWlub3IgaXNzdWVzIGRldGVjdGVkIixkZXRhaWxzOlt7bmFtZToiUHJpbWFyeSBOb2RlIix2YWx1ZToiZGItcHJpbWFyeS0wMSAoaGVhbHRoeSkiLHN0YXR1czoib2siLHN0YXR1c1RleHQ6Ik9wZXJhdGluZyBub3JtYWxseSJ9LHtuYW1lOiJSZXBsaWNhIExhZyIsdmFsdWU6IjIuNSBzZWNvbmRzIixzdGF0dXM6InBhcnRseV9vayIsc3RhdHVzVGV4dDoiU2xpZ2h0bHkgZWxldmF0ZWQifSx7bmFtZToiRGlzayBVc2FnZSIsdmFsdWU6Ijc4JSAoMzEyR0IgLyA0MDBHQikiLHN0YXR1czoicGFydGx5X29rIixzdGF0dXNUZXh0OiJBcHByb2FjaGluZyB0aHJlc2hvbGQifSx7bmFtZToiQ29ubmVjdGlvbiBQb29sIix2YWx1ZToiODkgLyAxMDAgY29ubmVjdGlvbnMiLHN0YXR1czoib2siLHN0YXR1c1RleHQ6IldpdGhpbiBsaW1pdHMifV19fQogICAgICAgID4KICAgICAgICA8L2RlZXMtZGF0YXZpZXctc3RhdHVzb2JqZWN0PgogICAgICA8L2Rpdj4KICAgICAgCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0iZGVtby10aXRsZSI+QnVpbGQgUGlwZWxpbmUgU3RhdHVzPC9kaXY+CiAgICAgICAgPGRlZXMtZGF0YXZpZXctc3RhdHVzb2JqZWN0CiAgICAgICAgICAuc3RhdHVzT2JqZWN0PSR7e2lkOiIzIixuYW1lOiJDSS9DRCBQaXBlbGluZSIsbGFzdFVwZGF0ZWQ6RGF0ZS5ub3coKS04NjRlNSxjb21iaW5lZFN0YXR1czoibm90X29rIixjb21iaW5lZFN0YXR1c1RleHQ6IkJ1aWxkIGZhaWx1cmUiLGRldGFpbHM6W3tuYW1lOiJMYXN0IEJ1aWxkIix2YWx1ZToiQnVpbGQgIzEyMzQgLSBGYWlsZWQiLHN0YXR1czoibm90X29rIixzdGF0dXNUZXh0OiJUZXN0IGZhaWx1cmVzIn0se25hbWU6IkZhaWxlZCBUZXN0cyIsdmFsdWU6IjMgdGVzdHMgZmFpbGVkOiBhdXRoLnNwZWMudHMsIHVzZXIuc3BlYy50cywgYXBpLnNwZWMudHMiLHN0YXR1czoibm90X29rIixzdGF0dXNUZXh0OiJVbml0IHRlc3QgZmFpbHVyZXMifSx7bmFtZToiQ29kZSBDb3ZlcmFnZSIsdmFsdWU6IjgyLjUlICh0YXJnZXQ6IDg1JSkiLHN0YXR1czoicGFydGx5X29rIixzdGF0dXNUZXh0OiJCZWxvdyB0YXJnZXQifSx7bmFtZToiQnVpbGQgRHVyYXRpb24iLHZhbHVlOiIxMm0gMzRzIixzdGF0dXM6Im9rIixzdGF0dXNUZXh0OiJOb3JtYWwgZHVyYXRpb24ifV19fQogICAgICAgID4KICAgICAgICA8L2RlZXMtZGF0YXZpZXctc3RhdHVzb2JqZWN0PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2PmAsImRlbW9GdW5jIil9KTt2YXIgTW1hLE9pdCx6bWEsQ21hPWcoKCk9PntHMSgpO3BvKCk7X21hKCk7cGUoKTtTbigpO29yKCk7cHQoKTtucigpO01tYT1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sT2l0PWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSx6bWE9KCgpPT57bGV0IHM9W25lKCJkZWVzLWRhdGF2aWV3LXN0YXR1c29iamVjdCIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdO3ZhciBwPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzRGF0YXZpZXdTdGF0dXNvYmplY3QiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgZD10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOk9iamVjdH0pXSxNbWEodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzdGF0dXNPYmplY3QiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkodT0+InN0YXR1c09iamVjdCJpbiB1LCJoYXMiKSxnZXQ6aSh1PT51LnN0YXR1c09iamVjdCwiZ2V0Iiksc2V0OmkoKHUsYyk9Pnt1LnN0YXR1c09iamVjdD1jfSwic2V0Iil9LG1ldGFkYXRhOmR9LG8sbCksTW1hKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOmR9LG51bGwsdCkscD1hPWUudmFsdWUsZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpkfSl9c3RhdGljIGRlbW89U21hO3N0YXRpYyBkZW1vR3JvdXBzPVsiRGF0YSBWaWV3Il07I2U9T2l0KHRoaXMsbyx2b2lkIDApO2dldCBzdGF0dXNPYmplY3QoKXtyZXR1cm4gdGhpcy4jZX1zZXQgc3RhdHVzT2JqZWN0KGQpe3RoaXMuI2U9ZH1zdGF0aWMgc3R5bGVzPVtIZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgLyogVE9ETzogTWlncmF0ZSBoYXJkY29kZWQgdmFsdWVzIHRvIC0tZGVlcy0qIENTUyB2YXJpYWJsZXMgKi8KICAgICAgOmhvc3QgewogICAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsICdSb2JvdG8nLCBzYW5zLXNlcmlmOwogICAgICB9CgogICAgICBkZWVzLXRpbGUgewogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICB9CgogICAgICAuaGVhZGluZyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIGhlaWdodDogMzJweDsKICAgICAgICBwYWRkaW5nOiAwIDE2cHg7CiAgICAgIH0KCiAgICAgIGgxIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXNlY29uZGFyeSk7CiAgICAgICAgZmxleDogMTsKICAgICAgfQoKICAgICAgLnN0YXR1c2RvdCB7CiAgICAgICAgaGVpZ2h0OiAxMHB4OwogICAgICAgIHdpZHRoOiAxMHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNjMuOSUpIiwiaHNsKDAgMCUgNDUuMSUpIil9OwogICAgICAgIG1hcmdpbjogYXV0bzsKICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggJHtoLmJkVGhlbWUoImhzbCgwIDAlIDYzLjklIC8gMC4yKSIsImhzbCgwIDAlIDQ1LjElIC8gMC4yKSIpfTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlOwogICAgICB9CgogICAgICAuY29weU1haW4gewogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYmctcHJpbWFyeSk7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDRweCAxMHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5jb3B5TWFpbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1ob3Zlcik7CiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1zdHJvbmcpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIH0KCiAgICAgIC5jb3B5TWFpbjphY3RpdmUgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5MSUpIiwiaHNsKDAgMCUgMTQuOSUpIil9OwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45OCk7CiAgICAgIH0KCiAgICAgIC5zdGF0dXNkb3Qub2sgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMTQyLjEgNzYuMiUgMzYuMyUpIiwiaHNsKDE0Mi4xIDcwLjYlIDQ1LjMlKSIpfTsKICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggJHtoLmJkVGhlbWUoImhzbCgxNDIuMSA3Ni4yJSAzNi4zJSAvIDAuMikiLCJoc2woMTQyLjEgNzAuNiUgNDUuMyUgLyAwLjIpIil9OwogICAgICB9CgogICAgICAuc3RhdHVzZG90Lm5vdF9vayB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDg0LjIlIDYwLjIlKSIsImhzbCgwIDcyLjIlIDUwLjYlKSIpfTsKICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggJHtoLmJkVGhlbWUoImhzbCgwIDg0LjIlIDYwLjIlIC8gMC4yKSIsImhzbCgwIDcyLjIlIDUwLjYlIC8gMC4yKSIpfTsKICAgICAgfQoKICAgICAgLnN0YXR1c2RvdC5wYXJ0bHlfb2sgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjUgOTUlIDUzJSkiLCJoc2woMjUgOTUlIDYzJSkiKX07CiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4ICR7aC5iZFRoZW1lKCJoc2woMjUgOTUlIDUzJSAvIDAuMikiLCJoc2woMjUgOTUlIDYzJSAvIDAuMikiKX07CiAgICAgIH0KCiAgICAgIC5kZXRhaWwgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDEwcHg7CiAgICAgICAgaGVpZ2h0OiAzNnB4OwogICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItc3VidGxlKTsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2U7CiAgICAgICAgY3Vyc29yOiBjb250ZXh0LW1lbnU7CiAgICAgIH0KCiAgICAgIC5kZXRhaWw6bGFzdC1jaGlsZCB7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgICAgfQoKICAgICAgLmRldGFpbDpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMjIuMiA0Ny40JSA1MS4yJSAvIDAuMDQpIiwiaHNsKDIxNy4yIDkxLjIlIDU5LjglIC8gMC4wNikiKX07CiAgICAgIH0KCiAgICAgIC5kZXRhaWwgLnN0YXR1c2RvdCB7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAuZGV0YWlsIC5kZXRhaWxzVGV4dCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgICAgZmxleDogMTsKICAgICAgICBtaW4td2lkdGg6IDA7CiAgICAgIH0KCiAgICAgIC5kZXRhaWwgLmRldGFpbHNUZXh0IC5sYWJlbCB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQoKICAgICAgLmRldGFpbCAuZGV0YWlsc1RleHQgLnZhbHVlIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC1mYW1pbHk6ICdJbnRlbCBPbmUgTW9ubycsICdHZWlzdCBNb25vJywgbW9ub3NwYWNlOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTUlKSIsImhzbCgwIDAlIDkwJSkiKX07CiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICB9CgogICAgICAuYm90dG9tQmFyIHsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICBoZWlnaHQ6IDI4cHg7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAyOHB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAuYm90dG9tQmFyIC5zdGF0dXNMYWJlbCB7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkZWVzLXRpbGU+CiAgICAgICAgPGRpdiBzbG90PSJoZWFkZXIiIGNsYXNzPSJoZWFkaW5nIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXR1c2RvdCAke3RoaXMuc3RhdHVzT2JqZWN0Py5jb21iaW5lZFN0YXR1c30iPjwvZGl2PgogICAgICAgICAgPGgxPiR7dGhpcy5zdGF0dXNPYmplY3Q/Lm5hbWV8fCJObyBzdGF0dXMgb2JqZWN0IGFzc2lnbmVkIn08L2gxPgogICAgICAgICAgPGRpdiBjbGFzcz0iY29weU1haW4iIEBjbGljaz0ke3RoaXMuaGFuZGxlQ29weUFzSnNvbn0+Q29weSBKU09OPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgJHt0aGlzLnN0YXR1c09iamVjdD8uZGV0YWlscz8ubWFwKGQ9PndgCiAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICBjbGFzcz0iZGV0YWlsIgogICAgICAgICAgICAgIEBjb250ZXh0bWVudT0ke3U9Pnt1LnByZXZlbnREZWZhdWx0KCksa2Eub3BlbkNvbnRleHRNZW51V2l0aE9wdGlvbnModSxbe25hbWU6IkNvcHkgVmFsdWUiLGljb25OYW1lOiJsdWNpZGU6Y29weSIsYWN0aW9uOmkoYXN5bmMoKT0+e2F3YWl0IHRoaXMuY29weVRvQ2xpcGJvYXJkKGQudmFsdWUsIlZhbHVlIil9LCJhY3Rpb24iKX0se25hbWU6IkNvcHkgS2V5IixpY29uTmFtZToibHVjaWRlOmtleSIsYWN0aW9uOmkoYXN5bmMoKT0+e2F3YWl0IHRoaXMuY29weVRvQ2xpcGJvYXJkKGQubmFtZSwiS2V5Iil9LCJhY3Rpb24iKX0se25hbWU6IkNvcHkgS2V5OlZhbHVlIixpY29uTmFtZToibHVjaWRlOmNvcHktcGx1cyIsYWN0aW9uOmkoYXN5bmMoKT0+e2F3YWl0IHRoaXMuY29weVRvQ2xpcGJvYXJkKGAke2QubmFtZX06ICR7ZC52YWx1ZX1gLCJLZXk6VmFsdWUiKX0sImFjdGlvbiIpfV0pfX0KICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXR1c2RvdCAke2Quc3RhdHVzfSI+PC9kaXY+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRldGFpbHNUZXh0Ij4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYWJlbCI+JHtkLm5hbWV9PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InZhbHVlIj4ke2QudmFsdWV9PC9zcGFuPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgKX0KICAgICAgICA8ZGl2IHNsb3Q9ImZvb3RlciIgY2xhc3M9ImJvdHRvbUJhciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0dXNMYWJlbCI+JHt0aGlzLnN0YXR1c09iamVjdD8ubGFzdFVwZGF0ZWQ/YExhc3QgdXBkYXRlZDogJHtuZXcgRGF0ZSh0aGlzLnN0YXR1c09iamVjdC5sYXN0VXBkYXRlZCkudG9Mb2NhbGVTdHJpbmcoKX1gOiIifTwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtdGlsZT4KICAgIGB9YXN5bmMgZmlyc3RVcGRhdGVkKCl7fWFzeW5jIGNvcHlUb0NsaXBib2FyZChkLHU9IlRleHQiKXt0cnl7YXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoZCksY29uc29sZS5sb2coYCR7dX0gY29waWVkIHRvIGNsaXBib2FyZGApfWNhdGNoKGMpe2NvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBjb3B5ICR7dX06YCxjKX19YXN5bmMgaGFuZGxlQ29weUFzSnNvbigpe2lmKHRoaXMuc3RhdHVzT2JqZWN0KXRyeXthd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChKU09OLnN0cmluZ2lmeSh0aGlzLnN0YXR1c09iamVjdCxudWxsLDIpKTtsZXQgZD10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLmNvcHlNYWluIiksdT1kLnRleHRDb250ZW50O2QudGV4dENvbnRlbnQ9IkNvcGllZCEiO2xldCBjPSF0aGlzLmdvQnJpZ2h0O2Quc3R5bGUuYmFja2dyb3VuZD1jPyJoc2woMTQyLjEgNzAuNiUgNDUuMyUgLyAwLjEpIjoiaHNsKDE0Mi4xIDc2LjIlIDM2LjMlIC8gMC4xKSIsZC5zdHlsZS5ib3JkZXJDb2xvcj1jPyJoc2woMTQyLjEgNzAuNiUgNDUuMyUpIjoiaHNsKDE0Mi4xIDc2LjIlIDM2LjMlKSIsZC5zdHlsZS5jb2xvcj1jPyJoc2woMTQyLjEgNzAuNiUgNDUuMyUpIjoiaHNsKDE0Mi4xIDc2LjIlIDM2LjMlKSIsc2V0VGltZW91dCgoKT0+e2QudGV4dENvbnRlbnQ9dSxkLnN0eWxlLmJhY2tncm91bmQ9IiIsZC5zdHlsZS5ib3JkZXJDb2xvcj0iIixkLnN0eWxlLmNvbG9yPSIifSwxNTAwKX1jYXRjaChkKXtjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gY29weToiLGQpfX1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksT2l0KHRoaXMsbCl9c3RhdGlje09pdChhLHQpfX07cmV0dXJuIHA9YX0pKCl9KTt2YXIgVG1hPWcoKCk9PntDbWEoKX0pO3ZhciAkbWE9ZygoKT0+e1FjZSgpfSk7dmFyIEZpdCxEbWEsTG1hPWcoKCk9PntwZSgpO0JpdCgpO0ZpdD1jbGFzc3tzdGF0aWN7aSh0aGlzLCJNb2NrU3RvcmFnZURhdGFQcm92aWRlciIpfW9iamVjdHM9bmV3IE1hcDtjb25zdHJ1Y3Rvcigpe2xldCBlPW5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTt0aGlzLm9iamVjdHMuc2V0KCJkb2N1bWVudHMvcmVhZG1lLm1kIix7Y29udGVudDpidG9hKGAjIFdlbGNvbWUKClRoaXMgaXMgYSBkZW1vIFN0b3JhZ2UgYnJvd3Nlci4KYCksY29udGVudFR5cGU6InRleHQvbWFya2Rvd24iLHNpemU6NDIsbGFzdE1vZGlmaWVkOmV9KSx0aGlzLm9iamVjdHMuc2V0KCJkb2N1bWVudHMvY29uZmlnLmpzb24iLHtjb250ZW50OmJ0b2EoYHsKICAibmFtZSI6ICJkZW1vIiwKICAidmVyc2lvbiI6ICIxLjAuMCIKfWApLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi9qc29uIixzaXplOjQ4LGxhc3RNb2RpZmllZDplfSksdGhpcy5vYmplY3RzLnNldCgiZG9jdW1lbnRzL25vdGVzL3RvZG8udHh0Iix7Y29udGVudDpidG9hKGBCdXkgbWlsawpGaXggYnVnICM0MgpEZXBsb3kgdG8gcHJvZHVjdGlvbmApLGNvbnRlbnRUeXBlOiJ0ZXh0L3BsYWluIixzaXplOjQ1LGxhc3RNb2RpZmllZDplfSksdGhpcy5vYmplY3RzLnNldCgiaW1hZ2VzL2xvZ28ucG5nIix7Y29udGVudDpidG9hKCJmYWtlLXBuZy1kYXRhIiksY29udGVudFR5cGU6ImltYWdlL3BuZyIsc2l6ZToyNDUwMCxsYXN0TW9kaWZpZWQ6ZX0pLHRoaXMub2JqZWN0cy5zZXQoImltYWdlcy9iYW5uZXIuanBnIix7Y29udGVudDpidG9hKCJmYWtlLWpwZy1kYXRhIiksY29udGVudFR5cGU6ImltYWdlL2pwZWciLHNpemU6MTU2ZTMsbGFzdE1vZGlmaWVkOmV9KSx0aGlzLm9iamVjdHMuc2V0KCJzY3JpcHRzL2RlcGxveS5zaCIse2NvbnRlbnQ6YnRvYShgIyEvYmluL2Jhc2gKZWNobyAiRGVwbG95aW5nLi4uIgpgKSxjb250ZW50VHlwZToidGV4dC9wbGFpbiIsc2l6ZTozNCxsYXN0TW9kaWZpZWQ6ZX0pLHRoaXMub2JqZWN0cy5zZXQoImluZGV4Lmh0bWwiLHtjb250ZW50OmJ0b2EoYDwhRE9DVFlQRSBodG1sPgo8aHRtbD4KPGJvZHk+CiAgPGgxPkhlbGxvIFdvcmxkPC9oMT4KPC9ib2R5Pgo8L2h0bWw+YCksY29udGVudFR5cGU6InRleHQvaHRtbCIsc2l6ZTo3MixsYXN0TW9kaWZpZWQ6ZX0pLHRoaXMub2JqZWN0cy5zZXQoInN0eWxlcy5jc3MiLHtjb250ZW50OmJ0b2EoImJvZHkgeyBtYXJnaW46IDA7IGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyB9IiksY29udGVudFR5cGU6InRleHQvY3NzIixzaXplOjQ0LGxhc3RNb2RpZmllZDplfSl9YXN5bmMgbGlzdE9iamVjdHMoZSx0LGEpe2xldCByPXR8fCIiLG49W10sbz1uZXcgU2V0O2ZvcihsZXRbbCxwXW9mIHRoaXMub2JqZWN0cyl7aWYoIWwuc3RhcnRzV2l0aChyKSljb250aW51ZTtsZXQgZD1sLnNsaWNlKHIubGVuZ3RoKTtpZihhKXtsZXQgdT1kLmluZGV4T2YoYSk7dT49MD9vLmFkZChyK2Quc2xpY2UoMCx1KzEpKTpuLnB1c2goe2tleTpsLHNpemU6cC5zaXplLGxhc3RNb2RpZmllZDpwLmxhc3RNb2RpZmllZH0pfWVsc2Ugbi5wdXNoKHtrZXk6bCxzaXplOnAuc2l6ZSxsYXN0TW9kaWZpZWQ6cC5sYXN0TW9kaWZpZWR9KX1yZXR1cm57b2JqZWN0czpuLHByZWZpeGVzOkFycmF5LmZyb20obykuc29ydCgpfX1hc3luYyBnZXRPYmplY3QoZSx0KXtsZXQgYT10aGlzLm9iamVjdHMuZ2V0KHQpO2lmKCFhKXRocm93IG5ldyBFcnJvcigiTm90IGZvdW5kIik7cmV0dXJuey4uLmF9fWFzeW5jIHB1dE9iamVjdChlLHQsYSxyKXtyZXR1cm4gdGhpcy5vYmplY3RzLnNldCh0LHtjb250ZW50OmEsY29udGVudFR5cGU6cixzaXplOmF0b2IoYSkubGVuZ3RoLGxhc3RNb2RpZmllZDpuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCl9KSwhMH1hc3luYyBkZWxldGVPYmplY3QoZSx0KXtyZXR1cm4gdGhpcy5vYmplY3RzLmRlbGV0ZSh0KX1hc3luYyBkZWxldGVQcmVmaXgoZSx0KXtmb3IobGV0IGEgb2YgdGhpcy5vYmplY3RzLmtleXMoKSlhLnN0YXJ0c1dpdGgodCkmJnRoaXMub2JqZWN0cy5kZWxldGUoYSk7cmV0dXJuITB9YXN5bmMgZ2V0T2JqZWN0VXJsKGUsdCl7bGV0IGE9dGhpcy5vYmplY3RzLmdldCh0KTtpZighYSlyZXR1cm4iIjtsZXQgcj1uZXcgQmxvYihbVWludDhBcnJheS5mcm9tKGF0b2IoYS5jb250ZW50KSxuPT5uLmNoYXJDb2RlQXQoMCkpXSx7dHlwZTphLmNvbnRlbnRUeXBlfSk7cmV0dXJuIFVSTC5jcmVhdGVPYmplY3RVUkwocil9YXN5bmMgbW92ZU9iamVjdChlLHQsYSl7bGV0IHI9dGhpcy5vYmplY3RzLmdldCh0KTtyZXR1cm4gcj8odGhpcy5vYmplY3RzLnNldChhLHsuLi5yLGxhc3RNb2RpZmllZDpuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCl9KSx0aGlzLm9iamVjdHMuZGVsZXRlKHQpLHtzdWNjZXNzOiEwfSk6e3N1Y2Nlc3M6ITEsZXJyb3I6IlNvdXJjZSBub3QgZm91bmQifX1hc3luYyBtb3ZlUHJlZml4KGUsdCxhKXtsZXQgcj0wLG49QXJyYXkuZnJvbSh0aGlzLm9iamVjdHMuZW50cmllcygpKS5maWx0ZXIoKFtvXSk9Pm8uc3RhcnRzV2l0aCh0KSk7Zm9yKGxldFtvLGxdb2Ygbil7bGV0IHA9YStvLnNsaWNlKHQubGVuZ3RoKTt0aGlzLm9iamVjdHMuc2V0KHAsey4uLmwsbGFzdE1vZGlmaWVkOm5ldyBEYXRlKCkudG9JU09TdHJpbmcoKX0pLHRoaXMub2JqZWN0cy5kZWxldGUobykscisrfXJldHVybntzdWNjZXNzOiEwLG1vdmVkQ291bnQ6cn19fSxEbWE9aSgoKT0+d2AKICA8c3R5bGU+CiAgICAuZGVtby1jb250YWluZXIgewogICAgICBoZWlnaHQ6IDYwMHB4OwogICAgICBwYWRkaW5nOiAxNnB4OwogICAgfQogIDwvc3R5bGU+CiAgPGRpdiBjbGFzcz0iZGVtby1jb250YWluZXIiPgogICAgPGRlZXMtc3RvcmFnZS1icm93c2VyCiAgICAgIC5kYXRhUHJvdmlkZXI9JHtuZXcgRml0fQogICAgICAuYnVja2V0TmFtZT0keyJkZW1vLWJ1Y2tldCJ9CiAgICA+PC9kZWVzLXN0b3JhZ2UtYnJvd3Nlcj4KICA8L2Rpdj4KYCwiZGVtb0Z1bmMiKX0pO2Z1bmN0aW9uIFF2KHMpe2lmKHM9PW51bGwpcmV0dXJuIi0iO2lmKHM9PT0wKXJldHVybiIwIEIiO2xldCBlPVsiQiIsIktCIiwiTUIiLCJHQiIsIlRCIl0sdD1zLGE9MDtmb3IoO3Q+PTEwMjQmJmE8ZS5sZW5ndGgtMTspdC89MTAyNCxhKys7cmV0dXJuYCR7dC50b0ZpeGVkKGE+MD8xOjApfSAke2VbYV19YH1mdW5jdGlvbiBFbWEocyl7cmV0dXJuIHM9PW51bGw/IiI6cz49MWU2P2AkeyhzLzFlNikudG9GaXhlZCgxKX1NYDpzPj0xZTM/YCR7KHMvMWUzKS50b0ZpeGVkKDEpfUtgOnMudG9TdHJpbmcoKX1mdW5jdGlvbiBGYShzKXtsZXQgZT1zLnJlcGxhY2UoL1wvJC8sIiIpLnNwbGl0KCIvIik7cmV0dXJuIGVbZS5sZW5ndGgtMV18fHN9ZnVuY3Rpb24gSnYocyxlKXtyZXR1cm4gcy5lbmRzV2l0aCgiLyIpJiZlLnN0YXJ0c1dpdGgocyk/e3ZhbGlkOiExLGVycm9yOiJDYW5ub3QgbW92ZSBhIGZvbGRlciBpbnRvIGl0c2VsZiJ9OmwyKHMpPT09ZT97dmFsaWQ6ITEsZXJyb3I6Ikl0ZW0gaXMgYWxyZWFkeSBpbiB0aGlzIGxvY2F0aW9uIn06e3ZhbGlkOiEwfX1mdW5jdGlvbiBsMihzKXtsZXQgZT1zLmVuZHNXaXRoKCIvIik/cy5zbGljZSgwLC0xKTpzLHQ9ZS5sYXN0SW5kZXhPZigiLyIpO3JldHVybiB0Pj0wP2Uuc3Vic3RyaW5nKDAsdCsxKToiIn1mdW5jdGlvbiBXaChzKXtyZXR1cm57anNvbjoiYXBwbGljYXRpb24vanNvbiIsdHh0OiJ0ZXh0L3BsYWluIixodG1sOiJ0ZXh0L2h0bWwiLGNzczoidGV4dC9jc3MiLGpzOiJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iix0czoidGV4dC90eXBlc2NyaXB0IixtZDoidGV4dC9tYXJrZG93biIseG1sOiJhcHBsaWNhdGlvbi94bWwiLHlhbWw6InRleHQveWFtbCIseW1sOiJ0ZXh0L3lhbWwiLGNzdjoidGV4dC9jc3YifVtzXXx8ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJ9ZnVuY3Rpb24gZXgocyl7cmV0dXJue2pzb246YHsKICAKfWAsaHRtbDpgPCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KICA8dGl0bGU+PC90aXRsZT4KPC9oZWFkPgo8Ym9keT4KICAKPC9ib2R5Pgo8L2h0bWw+YCxtZDpgIyBUaXRsZQoKYCx0eHQ6IiJ9W3NdfHwiIn1mdW5jdGlvbiB5ZyhzKXtpZighcylyZXR1cm5bXTtsZXQgZT1zLnNwbGl0KCIvIikuZmlsdGVyKHI9PnIpLHQ9W10sYT0iIjtmb3IobGV0IHIgb2YgZSlhKz1yKyIvIix0LnB1c2goYSk7cmV0dXJuIHR9dmFyIEtYPWcoKCk9PntpKFF2LCJmb3JtYXRTaXplIik7aShFbWEsImZvcm1hdENvdW50Iik7aShGYSwiZ2V0RmlsZU5hbWUiKTtpKEp2LCJ2YWxpZGF0ZU1vdmUiKTtpKGwyLCJnZXRQYXJlbnRQcmVmaXgiKTtpKFdoLCJnZXRDb250ZW50VHlwZSIpO2koZXgsImdldERlZmF1bHRDb250ZW50Iik7aSh5ZywiZ2V0UGF0aFNlZ21lbnRzIil9KTt2YXIgX3MsQXQsUG1hLEhpdD1nKCgpPT57cGUoKTtvcigpO3B0KCk7S1goKTtfcz1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sQXQ9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LFBtYT0oKCk9PntsZXQgcz1bbmUoImRlZXMtc3RvcmFnZS1jb2x1bW5zIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W10sSCxrPVtdLFM9W10sSSxQPVtdLFI9W10sSyxWPVtdLFc9W10sbWUsQj1bXSxVPVtdLGhlLEY9W10saj1bXSx1ZSxsZT1bXSxRPVtdLGllLHRlPVtdLGVlPVtdLGtlLFg9W10sWj1bXSx5ZSxxPVtdLEE9W10sc2Usb2U9W10sYWU9W10sVGUsUmU9W10sQmU9W10sR2UsRGU9W10sX2U9W10sQ2UsdmU9W10sYmU9W10sRWUsamU9W10sV2U9W10sc3QsTWU9W10sZ2U9W10sSWUsY2U9W10sZGU9W10sTGUsS2U9W10sWWU9W10sb3QsVXQ9W10sWnQ9W10samEsZXQ9W10sYnQ9W10seWEsZXM9W10scnM9W10scHMsbnM9W10sdGk9W10sYWksemU9W10seGU9W10sTmUseHQ9W10sTWE9W107dmFyIE5yPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzU3RvcmFnZUNvbHVtbnMiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgZmU9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpPYmplY3R9KV0scD1bTCh7dHlwZTpTdHJpbmd9KV0sYz1bTCh7dHlwZTpTdHJpbmd9KV0seD1bTCh7dHlwZTpOdW1iZXJ9KV0seT1bWSgpXSxOPVtZKCldLE89W1koKV0sSD1bWSgpXSxJPVtZKCldLEs9W1koKV0sbWU9W1koKV0saGU9W1koKV0sdWU9W1koKV0saWU9W1koKV0sa2U9W1koKV0seWU9W1koKV0sc2U9W1koKV0sVGU9W1koKV0sR2U9W1koKV0sQ2U9W1koKV0sRWU9W1koKV0sc3Q9W1koKV0sSWU9W1koKV0sTGU9W1koKV0sb3Q9W1koKV0samE9W1koKV0seWE9W1koKV0scHM9W1koKV0sYWk9W1koKV0sTmU9W1koKV0sX3ModGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJkYXRhUHJvdmlkZXIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkocmU9PiJkYXRhUHJvdmlkZXIiaW4gcmUsImhhcyIpLGdldDppKHJlPT5yZS5kYXRhUHJvdmlkZXIsImdldCIpLHNldDppKChyZSxTZSk9PntyZS5kYXRhUHJvdmlkZXI9U2V9LCJzZXQiKX0sbWV0YWRhdGE6ZmV9LG8sbCksX3ModGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJidWNrZXROYW1lIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHJlPT4iYnVja2V0TmFtZSJpbiByZSwiaGFzIiksZ2V0OmkocmU9PnJlLmJ1Y2tldE5hbWUsImdldCIpLHNldDppKChyZSxTZSk9PntyZS5idWNrZXROYW1lPVNlfSwic2V0Iil9LG1ldGFkYXRhOmZlfSxkLHUpLF9zKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY3VycmVudFByZWZpeCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShyZT0+ImN1cnJlbnRQcmVmaXgiaW4gcmUsImhhcyIpLGdldDppKHJlPT5yZS5jdXJyZW50UHJlZml4LCJnZXQiKSxzZXQ6aSgocmUsU2UpPT57cmUuY3VycmVudFByZWZpeD1TZX0sInNldCIpfSxtZXRhZGF0YTpmZX0sYix2KSxfcyh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InJlZnJlc2hLZXkiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkocmU9PiJyZWZyZXNoS2V5ImluIHJlLCJoYXMiKSxnZXQ6aShyZT0+cmUucmVmcmVzaEtleSwiZ2V0Iiksc2V0OmkoKHJlLFNlKT0+e3JlLnJlZnJlc2hLZXk9U2V9LCJzZXQiKX0sbWV0YWRhdGE6ZmV9LG0sZiksX3ModGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjb2x1bW5zIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHJlPT4iY29sdW1ucyJpbiByZSwiaGFzIiksZ2V0OmkocmU9PnJlLmNvbHVtbnMsImdldCIpLHNldDppKChyZSxTZSk9PntyZS5jb2x1bW5zPVNlfSwic2V0Iil9LG1ldGFkYXRhOmZlfSxNLHopLF9zKHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibG9hZGluZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShyZT0+ImxvYWRpbmciaW4gcmUsImhhcyIpLGdldDppKHJlPT5yZS5sb2FkaW5nLCJnZXQiKSxzZXQ6aSgocmUsU2UpPT57cmUubG9hZGluZz1TZX0sInNldCIpfSxtZXRhZGF0YTpmZX0sQyxfKSxfcyh0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dDcmVhdGVEaWFsb2ciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkocmU9PiJzaG93Q3JlYXRlRGlhbG9nImluIHJlLCJoYXMiKSxnZXQ6aShyZT0+cmUuc2hvd0NyZWF0ZURpYWxvZywiZ2V0Iiksc2V0OmkoKHJlLFNlKT0+e3JlLnNob3dDcmVhdGVEaWFsb2c9U2V9LCJzZXQiKX0sbWV0YWRhdGE6ZmV9LCQsRSksX3ModGhpcyxudWxsLEgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjcmVhdGVEaWFsb2dUeXBlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHJlPT4iY3JlYXRlRGlhbG9nVHlwZSJpbiByZSwiaGFzIiksZ2V0OmkocmU9PnJlLmNyZWF0ZURpYWxvZ1R5cGUsImdldCIpLHNldDppKChyZSxTZSk9PntyZS5jcmVhdGVEaWFsb2dUeXBlPVNlfSwic2V0Iil9LG1ldGFkYXRhOmZlfSxrLFMpLF9zKHRoaXMsbnVsbCxJLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY3JlYXRlRGlhbG9nUHJlZml4IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHJlPT4iY3JlYXRlRGlhbG9nUHJlZml4ImluIHJlLCJoYXMiKSxnZXQ6aShyZT0+cmUuY3JlYXRlRGlhbG9nUHJlZml4LCJnZXQiKSxzZXQ6aSgocmUsU2UpPT57cmUuY3JlYXRlRGlhbG9nUHJlZml4PVNlfSwic2V0Iil9LG1ldGFkYXRhOmZlfSxQLFIpLF9zKHRoaXMsbnVsbCxLLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY3JlYXRlRGlhbG9nTmFtZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShyZT0+ImNyZWF0ZURpYWxvZ05hbWUiaW4gcmUsImhhcyIpLGdldDppKHJlPT5yZS5jcmVhdGVEaWFsb2dOYW1lLCJnZXQiKSxzZXQ6aSgocmUsU2UpPT57cmUuY3JlYXRlRGlhbG9nTmFtZT1TZX0sInNldCIpfSxtZXRhZGF0YTpmZX0sVixXKSxfcyh0aGlzLG51bGwsbWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJkcmFnT3ZlckNvbHVtbkluZGV4IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHJlPT4iZHJhZ092ZXJDb2x1bW5JbmRleCJpbiByZSwiaGFzIiksZ2V0OmkocmU9PnJlLmRyYWdPdmVyQ29sdW1uSW5kZXgsImdldCIpLHNldDppKChyZSxTZSk9PntyZS5kcmFnT3ZlckNvbHVtbkluZGV4PVNlfSwic2V0Iil9LG1ldGFkYXRhOmZlfSxCLFUpLF9zKHRoaXMsbnVsbCxoZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImRyYWdPdmVyRm9sZGVyUHJlZml4IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHJlPT4iZHJhZ092ZXJGb2xkZXJQcmVmaXgiaW4gcmUsImhhcyIpLGdldDppKHJlPT5yZS5kcmFnT3ZlckZvbGRlclByZWZpeCwiZ2V0Iiksc2V0OmkoKHJlLFNlKT0+e3JlLmRyYWdPdmVyRm9sZGVyUHJlZml4PVNlfSwic2V0Iil9LG1ldGFkYXRhOmZlfSxGLGopLF9zKHRoaXMsbnVsbCx1ZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InVwbG9hZGluZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShyZT0+InVwbG9hZGluZyJpbiByZSwiaGFzIiksZ2V0OmkocmU9PnJlLnVwbG9hZGluZywiZ2V0Iiksc2V0OmkoKHJlLFNlKT0+e3JlLnVwbG9hZGluZz1TZX0sInNldCIpfSxtZXRhZGF0YTpmZX0sbGUsUSksX3ModGhpcyxudWxsLGllLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidXBsb2FkUHJvZ3Jlc3MiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkocmU9PiJ1cGxvYWRQcm9ncmVzcyJpbiByZSwiaGFzIiksZ2V0OmkocmU9PnJlLnVwbG9hZFByb2dyZXNzLCJnZXQiKSxzZXQ6aSgocmUsU2UpPT57cmUudXBsb2FkUHJvZ3Jlc3M9U2V9LCJzZXQiKX0sbWV0YWRhdGE6ZmV9LHRlLGVlKSxfcyh0aGlzLG51bGwsa2Use2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93TW92ZURpYWxvZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShyZT0+InNob3dNb3ZlRGlhbG9nImluIHJlLCJoYXMiKSxnZXQ6aShyZT0+cmUuc2hvd01vdmVEaWFsb2csImdldCIpLHNldDppKChyZSxTZSk9PntyZS5zaG93TW92ZURpYWxvZz1TZX0sInNldCIpfSxtZXRhZGF0YTpmZX0sWCxaKSxfcyh0aGlzLG51bGwseWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtb3ZlU291cmNlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHJlPT4ibW92ZVNvdXJjZSJpbiByZSwiaGFzIiksZ2V0OmkocmU9PnJlLm1vdmVTb3VyY2UsImdldCIpLHNldDppKChyZSxTZSk9PntyZS5tb3ZlU291cmNlPVNlfSwic2V0Iil9LG1ldGFkYXRhOmZlfSxxLEEpLF9zKHRoaXMsbnVsbCxzZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1vdmVEZXN0aW5hdGlvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShyZT0+Im1vdmVEZXN0aW5hdGlvbiJpbiByZSwiaGFzIiksZ2V0OmkocmU9PnJlLm1vdmVEZXN0aW5hdGlvbiwiZ2V0Iiksc2V0OmkoKHJlLFNlKT0+e3JlLm1vdmVEZXN0aW5hdGlvbj1TZX0sInNldCIpfSxtZXRhZGF0YTpmZX0sb2UsYWUpLF9zKHRoaXMsbnVsbCxUZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1vdmVJblByb2dyZXNzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHJlPT4ibW92ZUluUHJvZ3Jlc3MiaW4gcmUsImhhcyIpLGdldDppKHJlPT5yZS5tb3ZlSW5Qcm9ncmVzcywiZ2V0Iiksc2V0OmkoKHJlLFNlKT0+e3JlLm1vdmVJblByb2dyZXNzPVNlfSwic2V0Iil9LG1ldGFkYXRhOmZlfSxSZSxCZSksX3ModGhpcyxudWxsLEdlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibW92ZUVycm9yIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHJlPT4ibW92ZUVycm9yImluIHJlLCJoYXMiKSxnZXQ6aShyZT0+cmUubW92ZUVycm9yLCJnZXQiKSxzZXQ6aSgocmUsU2UpPT57cmUubW92ZUVycm9yPVNlfSwic2V0Iil9LG1ldGFkYXRhOmZlfSxEZSxfZSksX3ModGhpcyxudWxsLENlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2hvd01vdmVQaWNrZXJEaWFsb2ciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkocmU9PiJzaG93TW92ZVBpY2tlckRpYWxvZyJpbiByZSwiaGFzIiksZ2V0OmkocmU9PnJlLnNob3dNb3ZlUGlja2VyRGlhbG9nLCJnZXQiKSxzZXQ6aSgocmUsU2UpPT57cmUuc2hvd01vdmVQaWNrZXJEaWFsb2c9U2V9LCJzZXQiKX0sbWV0YWRhdGE6ZmV9LHZlLGJlKSxfcyh0aGlzLG51bGwsRWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtb3ZlUGlja2VyU291cmNlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHJlPT4ibW92ZVBpY2tlclNvdXJjZSJpbiByZSwiaGFzIiksZ2V0OmkocmU9PnJlLm1vdmVQaWNrZXJTb3VyY2UsImdldCIpLHNldDppKChyZSxTZSk9PntyZS5tb3ZlUGlja2VyU291cmNlPVNlfSwic2V0Iil9LG1ldGFkYXRhOmZlfSxqZSxXZSksX3ModGhpcyxudWxsLHN0LHtraW5kOiJhY2Nlc3NvciIsbmFtZToibW92ZVBpY2tlckN1cnJlbnRQcmVmaXgiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkocmU9PiJtb3ZlUGlja2VyQ3VycmVudFByZWZpeCJpbiByZSwiaGFzIiksZ2V0OmkocmU9PnJlLm1vdmVQaWNrZXJDdXJyZW50UHJlZml4LCJnZXQiKSxzZXQ6aSgocmUsU2UpPT57cmUubW92ZVBpY2tlckN1cnJlbnRQcmVmaXg9U2V9LCJzZXQiKX0sbWV0YWRhdGE6ZmV9LE1lLGdlKSxfcyh0aGlzLG51bGwsSWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtb3ZlUGlja2VyUHJlZml4ZXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkocmU9PiJtb3ZlUGlja2VyUHJlZml4ZXMiaW4gcmUsImhhcyIpLGdldDppKHJlPT5yZS5tb3ZlUGlja2VyUHJlZml4ZXMsImdldCIpLHNldDppKChyZSxTZSk9PntyZS5tb3ZlUGlja2VyUHJlZml4ZXM9U2V9LCJzZXQiKX0sbWV0YWRhdGE6ZmV9LGNlLGRlKSxfcyh0aGlzLG51bGwsTGUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtb3ZlUGlja2VyTG9hZGluZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShyZT0+Im1vdmVQaWNrZXJMb2FkaW5nImluIHJlLCJoYXMiKSxnZXQ6aShyZT0+cmUubW92ZVBpY2tlckxvYWRpbmcsImdldCIpLHNldDppKChyZSxTZSk9PntyZS5tb3ZlUGlja2VyTG9hZGluZz1TZX0sInNldCIpfSxtZXRhZGF0YTpmZX0sS2UsWWUpLF9zKHRoaXMsbnVsbCxvdCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dSZW5hbWVEaWFsb2ciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkocmU9PiJzaG93UmVuYW1lRGlhbG9nImluIHJlLCJoYXMiKSxnZXQ6aShyZT0+cmUuc2hvd1JlbmFtZURpYWxvZywiZ2V0Iiksc2V0OmkoKHJlLFNlKT0+e3JlLnNob3dSZW5hbWVEaWFsb2c9U2V9LCJzZXQiKX0sbWV0YWRhdGE6ZmV9LFV0LFp0KSxfcyh0aGlzLG51bGwsamEse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJyZW5hbWVTb3VyY2UiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkocmU9PiJyZW5hbWVTb3VyY2UiaW4gcmUsImhhcyIpLGdldDppKHJlPT5yZS5yZW5hbWVTb3VyY2UsImdldCIpLHNldDppKChyZSxTZSk9PntyZS5yZW5hbWVTb3VyY2U9U2V9LCJzZXQiKX0sbWV0YWRhdGE6ZmV9LGV0LGJ0KSxfcyh0aGlzLG51bGwseWEse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJyZW5hbWVOYW1lIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHJlPT4icmVuYW1lTmFtZSJpbiByZSwiaGFzIiksZ2V0OmkocmU9PnJlLnJlbmFtZU5hbWUsImdldCIpLHNldDppKChyZSxTZSk9PntyZS5yZW5hbWVOYW1lPVNlfSwic2V0Iil9LG1ldGFkYXRhOmZlfSxlcyxycyksX3ModGhpcyxudWxsLHBzLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicmVuYW1lSW5Qcm9ncmVzcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShyZT0+InJlbmFtZUluUHJvZ3Jlc3MiaW4gcmUsImhhcyIpLGdldDppKHJlPT5yZS5yZW5hbWVJblByb2dyZXNzLCJnZXQiKSxzZXQ6aSgocmUsU2UpPT57cmUucmVuYW1lSW5Qcm9ncmVzcz1TZX0sInNldCIpfSxtZXRhZGF0YTpmZX0sbnMsdGkpLF9zKHRoaXMsbnVsbCxhaSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InJlbmFtZUVycm9yIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHJlPT4icmVuYW1lRXJyb3IiaW4gcmUsImhhcyIpLGdldDppKHJlPT5yZS5yZW5hbWVFcnJvciwiZ2V0Iiksc2V0OmkoKHJlLFNlKT0+e3JlLnJlbmFtZUVycm9yPVNlfSwic2V0Iil9LG1ldGFkYXRhOmZlfSx6ZSx4ZSksX3ModGhpcyxudWxsLE5lLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZHJhZ2dlZEl0ZW0iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkocmU9PiJkcmFnZ2VkSXRlbSJpbiByZSwiaGFzIiksZ2V0OmkocmU9PnJlLmRyYWdnZWRJdGVtLCJnZXQiKSxzZXQ6aSgocmUsU2UpPT57cmUuZHJhZ2dlZEl0ZW09U2V9LCJzZXQiKX0sbWV0YWRhdGE6ZmV9LHh0LE1hKSxfcyhudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpmZX0sbnVsbCx0KSxOcj1hPWUudmFsdWUsZmUmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZmV9KX0jZT1BdCh0aGlzLG8sbnVsbCk7Z2V0IGRhdGFQcm92aWRlcigpe3JldHVybiB0aGlzLiNlfXNldCBkYXRhUHJvdmlkZXIoZmUpe3RoaXMuI2U9ZmV9I3Q9KEF0KHRoaXMsbCksQXQodGhpcyxkLCIiKSk7Z2V0IGJ1Y2tldE5hbWUoKXtyZXR1cm4gdGhpcy4jdH1zZXQgYnVja2V0TmFtZShmZSl7dGhpcy4jdD1mZX0jYT0oQXQodGhpcyx1KSxBdCh0aGlzLGIsIiIpKTtnZXQgY3VycmVudFByZWZpeCgpe3JldHVybiB0aGlzLiNhfXNldCBjdXJyZW50UHJlZml4KGZlKXt0aGlzLiNhPWZlfSNzPShBdCh0aGlzLHYpLEF0KHRoaXMsbSwwKSk7Z2V0IHJlZnJlc2hLZXkoKXtyZXR1cm4gdGhpcy4jc31zZXQgcmVmcmVzaEtleShmZSl7dGhpcy4jcz1mZX0jaT0oQXQodGhpcyxmKSxBdCh0aGlzLE0sW10pKTtnZXQgY29sdW1ucygpe3JldHVybiB0aGlzLiNpfXNldCBjb2x1bW5zKGZlKXt0aGlzLiNpPWZlfSNyPShBdCh0aGlzLHopLEF0KHRoaXMsQywhMSkpO2dldCBsb2FkaW5nKCl7cmV0dXJuIHRoaXMuI3J9c2V0IGxvYWRpbmcoZmUpe3RoaXMuI3I9ZmV9I289KEF0KHRoaXMsXyksQXQodGhpcywkLCExKSk7Z2V0IHNob3dDcmVhdGVEaWFsb2coKXtyZXR1cm4gdGhpcy4jb31zZXQgc2hvd0NyZWF0ZURpYWxvZyhmZSl7dGhpcy4jbz1mZX0jbj0oQXQodGhpcyxFKSxBdCh0aGlzLGssImZvbGRlciIpKTtnZXQgY3JlYXRlRGlhbG9nVHlwZSgpe3JldHVybiB0aGlzLiNufXNldCBjcmVhdGVEaWFsb2dUeXBlKGZlKXt0aGlzLiNuPWZlfSNsPShBdCh0aGlzLFMpLEF0KHRoaXMsUCwiIikpO2dldCBjcmVhdGVEaWFsb2dQcmVmaXgoKXtyZXR1cm4gdGhpcy4jbH1zZXQgY3JlYXRlRGlhbG9nUHJlZml4KGZlKXt0aGlzLiNsPWZlfSNjPShBdCh0aGlzLFIpLEF0KHRoaXMsViwiIikpO2dldCBjcmVhdGVEaWFsb2dOYW1lKCl7cmV0dXJuIHRoaXMuI2N9c2V0IGNyZWF0ZURpYWxvZ05hbWUoZmUpe3RoaXMuI2M9ZmV9I2Q9KEF0KHRoaXMsVyksQXQodGhpcyxCLC0xKSk7Z2V0IGRyYWdPdmVyQ29sdW1uSW5kZXgoKXtyZXR1cm4gdGhpcy4jZH1zZXQgZHJhZ092ZXJDb2x1bW5JbmRleChmZSl7dGhpcy4jZD1mZX0jdT0oQXQodGhpcyxVKSxBdCh0aGlzLEYsbnVsbCkpO2dldCBkcmFnT3ZlckZvbGRlclByZWZpeCgpe3JldHVybiB0aGlzLiN1fXNldCBkcmFnT3ZlckZvbGRlclByZWZpeChmZSl7dGhpcy4jdT1mZX0jcD0oQXQodGhpcyxqKSxBdCh0aGlzLGxlLCExKSk7Z2V0IHVwbG9hZGluZygpe3JldHVybiB0aGlzLiNwfXNldCB1cGxvYWRpbmcoZmUpe3RoaXMuI3A9ZmV9I2g9KEF0KHRoaXMsUSksQXQodGhpcyx0ZSxudWxsKSk7Z2V0IHVwbG9hZFByb2dyZXNzKCl7cmV0dXJuIHRoaXMuI2h9c2V0IHVwbG9hZFByb2dyZXNzKGZlKXt0aGlzLiNoPWZlfSNmPShBdCh0aGlzLGVlKSxBdCh0aGlzLFgsITEpKTtnZXQgc2hvd01vdmVEaWFsb2coKXtyZXR1cm4gdGhpcy4jZn1zZXQgc2hvd01vdmVEaWFsb2coZmUpe3RoaXMuI2Y9ZmV9I209KEF0KHRoaXMsWiksQXQodGhpcyxxLG51bGwpKTtnZXQgbW92ZVNvdXJjZSgpe3JldHVybiB0aGlzLiNtfXNldCBtb3ZlU291cmNlKGZlKXt0aGlzLiNtPWZlfSNnPShBdCh0aGlzLEEpLEF0KHRoaXMsb2UsIiIpKTtnZXQgbW92ZURlc3RpbmF0aW9uKCl7cmV0dXJuIHRoaXMuI2d9c2V0IG1vdmVEZXN0aW5hdGlvbihmZSl7dGhpcy4jZz1mZX0jYj0oQXQodGhpcyxhZSksQXQodGhpcyxSZSwhMSkpO2dldCBtb3ZlSW5Qcm9ncmVzcygpe3JldHVybiB0aGlzLiNifXNldCBtb3ZlSW5Qcm9ncmVzcyhmZSl7dGhpcy4jYj1mZX0jdj0oQXQodGhpcyxCZSksQXQodGhpcyxEZSxudWxsKSk7Z2V0IG1vdmVFcnJvcigpe3JldHVybiB0aGlzLiN2fXNldCBtb3ZlRXJyb3IoZmUpe3RoaXMuI3Y9ZmV9I3g9KEF0KHRoaXMsX2UpLEF0KHRoaXMsdmUsITEpKTtnZXQgc2hvd01vdmVQaWNrZXJEaWFsb2coKXtyZXR1cm4gdGhpcy4jeH1zZXQgc2hvd01vdmVQaWNrZXJEaWFsb2coZmUpe3RoaXMuI3g9ZmV9I3k9KEF0KHRoaXMsYmUpLEF0KHRoaXMsamUsbnVsbCkpO2dldCBtb3ZlUGlja2VyU291cmNlKCl7cmV0dXJuIHRoaXMuI3l9c2V0IG1vdmVQaWNrZXJTb3VyY2UoZmUpe3RoaXMuI3k9ZmV9I3c9KEF0KHRoaXMsV2UpLEF0KHRoaXMsTWUsIiIpKTtnZXQgbW92ZVBpY2tlckN1cnJlbnRQcmVmaXgoKXtyZXR1cm4gdGhpcy4jd31zZXQgbW92ZVBpY2tlckN1cnJlbnRQcmVmaXgoZmUpe3RoaXMuI3c9ZmV9I2s9KEF0KHRoaXMsZ2UpLEF0KHRoaXMsY2UsW10pKTtnZXQgbW92ZVBpY2tlclByZWZpeGVzKCl7cmV0dXJuIHRoaXMuI2t9c2V0IG1vdmVQaWNrZXJQcmVmaXhlcyhmZSl7dGhpcy4jaz1mZX0jUz0oQXQodGhpcyxkZSksQXQodGhpcyxLZSwhMSkpO2dldCBtb3ZlUGlja2VyTG9hZGluZygpe3JldHVybiB0aGlzLiNTfXNldCBtb3ZlUGlja2VyTG9hZGluZyhmZSl7dGhpcy4jUz1mZX0jXz0oQXQodGhpcyxZZSksQXQodGhpcyxVdCwhMSkpO2dldCBzaG93UmVuYW1lRGlhbG9nKCl7cmV0dXJuIHRoaXMuI199c2V0IHNob3dSZW5hbWVEaWFsb2coZmUpe3RoaXMuI189ZmV9I009KEF0KHRoaXMsWnQpLEF0KHRoaXMsZXQsbnVsbCkpO2dldCByZW5hbWVTb3VyY2UoKXtyZXR1cm4gdGhpcy4jTX1zZXQgcmVuYW1lU291cmNlKGZlKXt0aGlzLiNNPWZlfSN6PShBdCh0aGlzLGJ0KSxBdCh0aGlzLGVzLCIiKSk7Z2V0IHJlbmFtZU5hbWUoKXtyZXR1cm4gdGhpcy4jen1zZXQgcmVuYW1lTmFtZShmZSl7dGhpcy4jej1mZX0jQz0oQXQodGhpcyxycyksQXQodGhpcyxucywhMSkpO2dldCByZW5hbWVJblByb2dyZXNzKCl7cmV0dXJuIHRoaXMuI0N9c2V0IHJlbmFtZUluUHJvZ3Jlc3MoZmUpe3RoaXMuI0M9ZmV9I1Q9KEF0KHRoaXMsdGkpLEF0KHRoaXMsemUsbnVsbCkpO2dldCByZW5hbWVFcnJvcigpe3JldHVybiB0aGlzLiNUfXNldCByZW5hbWVFcnJvcihmZSl7dGhpcy4jVD1mZX0jJD0oQXQodGhpcyx4ZSksQXQodGhpcyx4dCxudWxsKSk7Z2V0IGRyYWdnZWRJdGVtKCl7cmV0dXJuIHRoaXMuIyR9c2V0IGRyYWdnZWRJdGVtKGZlKXt0aGlzLiMkPWZlfXJlc2l6aW5nPShBdCh0aGlzLE1hKSxudWxsKTtERUZBVUxUX0NPTFVNTl9XSURUSD0yNTA7TUlOX0NPTFVNTl9XSURUSD0xNTA7TUFYX0NPTFVNTl9XSURUSD01MDA7ZHJhZ0NvdW50ZXJzPW5ldyBNYXA7Zm9sZGVySG92ZXJUaW1lcj1udWxsO2ZpbGVJbnB1dEVsZW1lbnQ9bnVsbDtmb2xkZXJJbnB1dEVsZW1lbnQ9bnVsbDtzdGF0aWMgc3R5bGVzPVtoLmRlZmF1bHRTdHlsZXMsSGUsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwogICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLmNvbHVtbnMtY29udGFpbmVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBtaW4td2lkdGg6IG1heC1jb250ZW50OwogICAgICB9CgogICAgICAuY29sdW1uLXdyYXBwZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAuY29sdW1uIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAucmVzaXplLWhhbmRsZSB7CiAgICAgICAgd2lkdGg6IDVweDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgY3Vyc29yOiBjb2wtcmVzaXplOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQoKICAgICAgLnJlc2l6ZS1oYW5kbGU6OmFmdGVyIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDJweDsKICAgICAgICB3aWR0aDogMXB4OwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMzMzMiKX07CiAgICAgIH0KCiAgICAgIC5yZXNpemUtaGFuZGxlOmhvdmVyOjphZnRlciwKICAgICAgLnJlc2l6ZS1oYW5kbGUuYWN0aXZlOjphZnRlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNhMWExYWEiLCIjNDA0MDQwIil9OwogICAgICAgIHdpZHRoOiAycHg7CiAgICAgICAgbGVmdDogMXB4OwogICAgICB9CgogICAgICAuY29sdW1uLXdyYXBwZXI6bGFzdC1jaGlsZCAucmVzaXplLWhhbmRsZSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgLmNvbHVtbi1oZWFkZXIgewogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiM2NjYiKX07CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wMikiLCJyZ2JhKDAsIDAsIDAsIDAuMikiKX07CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzMzMyIpfTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgIH0KCiAgICAgIC5jb2x1bW4taXRlbXMgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBwYWRkaW5nOiA0cHg7CiAgICAgIH0KCiAgICAgIC5jb2x1bW4taXRlbSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIHBhZGRpbmc6IDZweCAxMHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xczsKICAgICAgfQoKICAgICAgLmNvbHVtbi1pdGVtOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjA0KSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSkiKX07CiAgICAgIH0KCiAgICAgIC5jb2x1bW4taXRlbS5zZWxlY3RlZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoNTksIDEzMCwgMjQ2LCAwLjEpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzFkNGVkOCIsIiNlMGUwZTAiKX07CiAgICAgIH0KCiAgICAgIC5jb2x1bW4taXRlbS5mb2xkZXIgewogICAgICAgIGNvbG9yOiAjZmJiZjI0OwogICAgICB9CgogICAgICAuY29sdW1uLWl0ZW0gLmljb24gewogICAgICAgIHdpZHRoOiAxNnB4OwogICAgICAgIGhlaWdodDogMTZweDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQoKICAgICAgLmNvbHVtbi1pdGVtIC5uYW1lIHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgfQoKICAgICAgLmNvbHVtbi1pdGVtIC5jaGV2cm9uIHsKICAgICAgICB3aWR0aDogMTRweDsKICAgICAgICBoZWlnaHQ6IDE0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZDRkNGQ4IiwiIzU1NSIpfTsKICAgICAgfQoKICAgICAgLmVtcHR5LXN0YXRlIHsKICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNhMWExYWEiLCIjNjY2Iil9OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgfQoKICAgICAgLmxvYWRpbmcgewogICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2ExYTFhYSIsIiM2NjYiKX07CiAgICAgIH0KCiAgICAgIC5jb2x1bW4uZHJhZy1vdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDU5LCAxMzAsIDI0NiwgMC4wOCk7CiAgICAgICAgb3V0bGluZTogMnB4IGRhc2hlZCByZ2JhKDU5LCAxMzAsIDI0NiwgMC40KTsKICAgICAgICBvdXRsaW5lLW9mZnNldDogLTJweDsKICAgICAgfQoKICAgICAgLmNvbHVtbi1pdGVtLmZvbGRlci5kcmFnLXRhcmdldCB7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSg1OSwgMTMwLCAyNDYsIDAuMikgIWltcG9ydGFudDsKICAgICAgICBvdXRsaW5lOiAxcHggc29saWQgcmdiYSg1OSwgMTMwLCAyNDYsIDAuNSk7CiAgICAgIH0KCiAgICAgIC51cGxvYWQtb3ZlcmxheSB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNik7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgei1pbmRleDogMTA7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICB9CgogICAgICAudXBsb2FkLW92ZXJsYXkgLnVwbG9hZC10ZXh0IHsKICAgICAgICBjb2xvcjogI2UwZTBlMDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgIH0KCiAgICAgIC51cGxvYWQtb3ZlcmxheSAudXBsb2FkLXByb2dyZXNzIHsKICAgICAgICBjb2xvcjogIzg4ODsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgIH0KCiAgICAgIC5kcmFnLWhpbnQgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBib3R0b206IDhweDsKICAgICAgICBsZWZ0OiA1MCU7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoNTksIDEzMCwgMjQ2LCAwLjkpOwogICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICBwYWRkaW5nOiA0cHggMTJweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgei1pbmRleDogNTsKICAgICAgfQoKICAgICAgLmRpYWxvZy1vdmVybGF5IHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC43KTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgei1pbmRleDogMTAwMDsKICAgICAgfQoKICAgICAgLmRpYWxvZyB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMWUxZTFlIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICBtaW4td2lkdGg6IDQwMHB4OwogICAgICAgIGJveC1zaGFkb3c6IDAgMjBweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC41KTsKICAgICAgfQoKICAgICAgLmRpYWxvZy10aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmZmIil9OwogICAgICB9CgogICAgICAuZGlhbG9nLWxvY2F0aW9uIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiIzg4OCIpfTsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4OwogICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgICAgIH0KCiAgICAgIC5kaWFsb2ctaW5wdXQgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHBhZGRpbmc6IDEwcHggMTJweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMxNDE0MTQiKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNkNGQ0ZDgiLCIjMzMzIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmZmIil9OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLmRpYWxvZy1pbnB1dDpmb2N1cyB7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjYTFhMWFhIiwiI2UwZTBlMCIpfTsKICAgICAgfQoKICAgICAgLmRpYWxvZy1oaW50IHsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjYTFhMWFhIiwiIzY2NiIpfTsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICB9CgogICAgICAuZGlhbG9nLWFjdGlvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgIH0KCiAgICAgIC5kaWFsb2ctYnRuIHsKICAgICAgICBwYWRkaW5nOiA4cHggMTZweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4yczsKICAgICAgfQoKICAgICAgLmRpYWxvZy1idG4tY2FuY2VsIHsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2Q0ZDRkOCIsIiM0NDQiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2FhYSIpfTsKICAgICAgfQoKICAgICAgLmRpYWxvZy1idG4tY2FuY2VsOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjAzKSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZmZiIpfTsKICAgICAgfQoKICAgICAgLmRpYWxvZy1idG4tY3JlYXRlIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiM0MDQwNDAiKX07CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmZmYiKX07CiAgICAgIH0KCiAgICAgIC5kaWFsb2ctYnRuLWNyZWF0ZTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNkNGQ0ZDgiLCIjNTA1MDUwIil9OwogICAgICB9CgogICAgICAuZGlhbG9nLWJ0bi1jcmVhdGU6ZGlzYWJsZWQgewogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICB9CgogICAgICAvKiBNb3ZlIGRpYWxvZyBzdHlsZXMgKi8KICAgICAgLm1vdmUtc3VtbWFyeSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wMykiLCJyZ2JhKDAsIDAsIDAsIDAuMikiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgfQoKICAgICAgLm1vdmUtaXRlbSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgIH0KCiAgICAgIC5tb3ZlLWl0ZW06bGFzdC1jaGlsZCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgfQoKICAgICAgLm1vdmUtbGFiZWwgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiM4ODgiKX07CiAgICAgICAgbWluLXdpZHRoOiA0MHB4OwogICAgICB9CgogICAgICAubW92ZS1wYXRoIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzZjNmNDYiLCIjZTBlMGUwIil9OwogICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDsKICAgICAgfQoKICAgICAgLm1vdmUtZXJyb3IgewogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjM5LCA2OCwgNjgsIDAuMTUpOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjM5LCA2OCwgNjgsIDAuMyk7CiAgICAgICAgY29sb3I6ICNmODcxNzE7CiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgfQoKICAgICAgLyogTW92ZSBwaWNrZXIgZGlhbG9nIHN0eWxlcyAqLwogICAgICAubW92ZS1waWNrZXItZGlhbG9nIHsKICAgICAgICBtaW4td2lkdGg6IDQ1MHB4OwogICAgICAgIG1heC1oZWlnaHQ6IDUwMHB4OwogICAgICB9CgogICAgICAucGlja2VyLWJyZWFkY3J1bWIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDRweDsKICAgICAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjAzKSIsInJnYmEoMCwgMCwgMCwgMC4yKSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKICAgICAgfQoKICAgICAgLnBpY2tlci1jcnVtYiB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiIzg4OCIpfTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgLnBpY2tlci1jcnVtYjpob3ZlciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZmZiIpfTsKICAgICAgfQoKICAgICAgLnBpY2tlci1zZXBhcmF0b3IgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2Q0ZDRkOCIsIiM1NTUiKX07CiAgICAgIH0KCiAgICAgIC5waWNrZXItbGlzdCB7CiAgICAgICAgbWF4LWhlaWdodDogMjgwcHg7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMzMzMiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgICAgbWluLWhlaWdodDogMTAwcHg7CiAgICAgIH0KCiAgICAgIC5waWNrZXItaXRlbSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBjb2xvcjogI2ZiYmYyNDsKICAgICAgfQoKICAgICAgLnBpY2tlci1pdGVtOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjAzKSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSkiKX07CiAgICAgIH0KCiAgICAgIC5waWNrZXItaXRlbSAuaWNvbiB7CiAgICAgICAgd2lkdGg6IDE2cHg7CiAgICAgICAgaGVpZ2h0OiAxNnB4OwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAucGlja2VyLWl0ZW0gLm5hbWUgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CgogICAgICAucGlja2VyLWVtcHR5IHsKICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNhMWExYWEiLCIjNjY2Iil9OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgfQoKICAgICAgLmNvbHVtbi1pdGVtLmRyYWdnaW5nIHsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgIH0KCiAgICAgIC5jb2x1bW4taXRlbS5kcm9wLXRhcmdldCB7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSg1OSwgMTMwLCAyNDYsIDAuMTUpICFpbXBvcnRhbnQ7CiAgICAgICAgb3V0bGluZTogMXB4IGRhc2hlZCByZ2JhKDU5LCAxMzAsIDI0NiwgMC41KTsKICAgICAgfQoKICAgICAgLmNvbHVtbi1pdGVtLmRyb3AtaW52YWxpZCB7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyMzksIDY4LCA2OCwgMC4xKSAhaW1wb3J0YW50OwogICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAgIH0KICAgIGBdO2FzeW5jIGNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSxhd2FpdCB0aGlzLmxvYWRJbml0aWFsQ29sdW1uKCl9YXN5bmMgZGlzY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuY2xlYXJGb2xkZXJIb3ZlcigpLHRoaXMuZHJhZ0NvdW50ZXJzLmNsZWFyKCksdGhpcy5maWxlSW5wdXRFbGVtZW50JiYodGhpcy5maWxlSW5wdXRFbGVtZW50LnJlbW92ZSgpLHRoaXMuZmlsZUlucHV0RWxlbWVudD1udWxsKSx0aGlzLmZvbGRlcklucHV0RWxlbWVudCYmKHRoaXMuZm9sZGVySW5wdXRFbGVtZW50LnJlbW92ZSgpLHRoaXMuZm9sZGVySW5wdXRFbGVtZW50PW51bGwpfXVwZGF0ZWQoZmUpe2ZlLmhhcygiYnVja2V0TmFtZSIpfHxmZS5oYXMoImN1cnJlbnRQcmVmaXgiKT90aGlzLmxvYWRJbml0aWFsQ29sdW1uKCk6ZmUuaGFzKCJyZWZyZXNoS2V5IikmJnRoaXMucmVmcmVzaEFsbENvbHVtbnMoKX1hc3luYyBsb2FkSW5pdGlhbENvbHVtbigpe2lmKHRoaXMuZGF0YVByb3ZpZGVyKXt0aGlzLmxvYWRpbmc9ITA7dHJ5e2xldCBmZT15Zyh0aGlzLmN1cnJlbnRQcmVmaXgpLHJlPVsiIiwuLi5mZV0sU2U9YXdhaXQgUHJvbWlzZS5hbGwocmUubWFwKE9lPT50aGlzLmRhdGFQcm92aWRlci5saXN0T2JqZWN0cyh0aGlzLmJ1Y2tldE5hbWUsT2UsIi8iKSkpO3RoaXMuY29sdW1ucz1TZS5tYXAoKE9lLEplKT0+e2xldCB6YT1yZVtKZV0sZGE9SmU8ZmUubGVuZ3RoP2ZlW0plXTpudWxsO3JldHVybntwcmVmaXg6emEsb2JqZWN0czpPZS5vYmplY3RzLHByZWZpeGVzOk9lLnByZWZpeGVzLHNlbGVjdGVkSXRlbTpkYSx3aWR0aDp0aGlzLkRFRkFVTFRfQ09MVU1OX1dJRFRIfX0pLHRoaXMudXBkYXRlQ29tcGxldGUudGhlbigoKT0+dGhpcy5zY3JvbGxUb0VuZCgpKX1jYXRjaChmZSl7Y29uc29sZS5lcnJvcigiRXJyb3IgbG9hZGluZyBvYmplY3RzOiIsZmUpLHRoaXMuY29sdW1ucz1bXX10aGlzLmxvYWRpbmc9ITF9fWFzeW5jIHJlZnJlc2hBbGxDb2x1bW5zKCl7aWYoIXRoaXMuZGF0YVByb3ZpZGVyKXJldHVybjtsZXQgZmU9YXdhaXQgUHJvbWlzZS5hbGwodGhpcy5jb2x1bW5zLm1hcChhc3luYyByZT0+e3RyeXtsZXQgU2U9YXdhaXQgdGhpcy5kYXRhUHJvdmlkZXIubGlzdE9iamVjdHModGhpcy5idWNrZXROYW1lLHJlLnByZWZpeCwiLyIpO3JldHVybnsuLi5yZSxvYmplY3RzOlNlLm9iamVjdHMscHJlZml4ZXM6U2UucHJlZml4ZXN9fWNhdGNoe3JldHVybiByZX19KSk7dGhpcy5jb2x1bW5zPWZlfWFzeW5jIHNlbGVjdEZvbGRlcihmZSxyZSl7aWYodGhpcy5kYXRhUHJvdmlkZXIpe3RoaXMuY29sdW1ucz10aGlzLmNvbHVtbnMubWFwKChTZSxPZSk9Pk9lPT09ZmU/ey4uLlNlLHNlbGVjdGVkSXRlbTpyZX06U2UpLHRoaXMuY29sdW1ucz10aGlzLmNvbHVtbnMuc2xpY2UoMCxmZSsxKTt0cnl7bGV0IFNlPWF3YWl0IHRoaXMuZGF0YVByb3ZpZGVyLmxpc3RPYmplY3RzKHRoaXMuYnVja2V0TmFtZSxyZSwiLyIpO3RoaXMuY29sdW1ucz1bLi4udGhpcy5jb2x1bW5zLHtwcmVmaXg6cmUsb2JqZWN0czpTZS5vYmplY3RzLHByZWZpeGVzOlNlLnByZWZpeGVzLHNlbGVjdGVkSXRlbTpudWxsLHdpZHRoOnRoaXMuREVGQVVMVF9DT0xVTU5fV0lEVEh9XSx0aGlzLnVwZGF0ZUNvbXBsZXRlLnRoZW4oKCk9PnRoaXMuc2Nyb2xsVG9FbmQoKSl9Y2F0Y2goU2Upe2NvbnNvbGUuZXJyb3IoIkVycm9yIGxvYWRpbmcgZm9sZGVyOiIsU2UpfX19c2Nyb2xsVG9FbmQoKXt0aGlzLnNjcm9sbExlZnQ9dGhpcy5zY3JvbGxXaWR0aC10aGlzLmNsaWVudFdpZHRofXN0YXJ0UmVzaXplKGZlLHJlKXtmZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMucmVzaXppbmc9e2NvbHVtbkluZGV4OnJlLHN0YXJ0WDpmZS5jbGllbnRYLHN0YXJ0V2lkdGg6dGhpcy5jb2x1bW5zW3JlXS53aWR0aH0sZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLmhhbmRsZVJlc2l6ZSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdGhpcy5zdG9wUmVzaXplKSxkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvcj0iY29sLXJlc2l6ZSIsZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0PSJub25lIn1oYW5kbGVSZXNpemU9aShmZT0+e2lmKCF0aGlzLnJlc2l6aW5nKXJldHVybjtsZXQgcmU9ZmUuY2xpZW50WC10aGlzLnJlc2l6aW5nLnN0YXJ0WCxTZT1NYXRoLm1pbih0aGlzLk1BWF9DT0xVTU5fV0lEVEgsTWF0aC5tYXgodGhpcy5NSU5fQ09MVU1OX1dJRFRILHRoaXMucmVzaXppbmcuc3RhcnRXaWR0aCtyZSkpO3RoaXMuY29sdW1ucz10aGlzLmNvbHVtbnMubWFwKChPZSxKZSk9PkplPT09dGhpcy5yZXNpemluZy5jb2x1bW5JbmRleD97Li4uT2Usd2lkdGg6U2V9Ok9lKX0sImhhbmRsZVJlc2l6ZSIpO3N0b3BSZXNpemU9aSgoKT0+e3RoaXMucmVzaXppbmc9bnVsbCxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMuaGFuZGxlUmVzaXplKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLnN0b3BSZXNpemUpLGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yPSIiLGRvY3VtZW50LmJvZHkuc3R5bGUudXNlclNlbGVjdD0iIn0sInN0b3BSZXNpemUiKTtzZWxlY3RGaWxlKGZlLHJlKXt0aGlzLmNvbHVtbnM9dGhpcy5jb2x1bW5zLm1hcCgoU2UsT2UpPT5PZT09PWZlP3suLi5TZSxzZWxlY3RlZEl0ZW06cmV9OlNlKSx0aGlzLmNvbHVtbnM9dGhpcy5jb2x1bW5zLnNsaWNlKDAsZmUrMSksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgia2V5LXNlbGVjdGVkIix7ZGV0YWlsOntrZXk6cmV9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9Z2V0RmlsZUljb24oZmUpe2xldCByZT1mZS5zcGxpdCgiLiIpLnBvcCgpPy50b0xvd2VyQ2FzZSgpfHwiIjtyZXR1cm57anNvbjoiTTE0IDJINmEyIDIgMCAwIDAtMiAydjE2YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlY4eiIsdHh0OiJNMTQgMkg2YTIgMiAwIDAgMC0yIDJ2MTZhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjh6Iixwbmc6Ik01IDNoMTRhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJ6IixqcGc6Ik01IDNoMTRhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJ6IixqcGVnOiJNNSAzaDE0YTIgMiAwIDAgMSAyIDJ2MTRhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yeiIsZ2lmOiJNNSAzaDE0YTIgMiAwIDAgMSAyIDJ2MTRhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yeiIscGRmOiJNMTQgMkg2YTIgMiAwIDAgMC0yIDJ2MTZhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjh6In1bcmVdfHwiTTE0IDJINmEyIDIgMCAwIDAtMiAydjE2YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlY4eiJ9aGFuZGxlRm9sZGVyQ29udGV4dE1lbnUoZmUscmUsU2Upe3RoaXMuZGF0YVByb3ZpZGVyJiYoZmUucHJldmVudERlZmF1bHQoKSxrYS5vcGVuQ29udGV4dE1lbnVXaXRoT3B0aW9ucyhmZSxbe25hbWU6Ik9wZW4iLGljb25OYW1lOiJsdWNpZGU6Zm9sZGVyT3BlbiIsYWN0aW9uOmkoYXN5bmMoKT0+e3RoaXMuc2VsZWN0Rm9sZGVyKHJlLFNlKX0sImFjdGlvbiIpfSx7bmFtZToiQ29weSBQYXRoIixpY29uTmFtZToibHVjaWRlOmNvcHkiLGFjdGlvbjppKGFzeW5jKCk9Pnthd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChTZSl9LCJhY3Rpb24iKX0se25hbWU6IlJlbmFtZSIsaWNvbk5hbWU6Imx1Y2lkZTpwZW5jaWwiLGFjdGlvbjppKGFzeW5jKCk9PnRoaXMub3BlblJlbmFtZURpYWxvZyhTZSwhMCksImFjdGlvbiIpfSx7ZGl2aWRlcjohMH0se25hbWU6Ik1vdmUgdG8uLi4iLGljb25OYW1lOiJsdWNpZGU6Zm9sZGVySW5wdXQiLGFjdGlvbjppKGFzeW5jKCk9PnRoaXMub3Blbk1vdmVQaWNrZXJEaWFsb2coU2UsITApLCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJOZXcgRm9sZGVyIEluc2lkZSIsaWNvbk5hbWU6Imx1Y2lkZTpmb2xkZXJQbHVzIixhY3Rpb246aShhc3luYygpPT50aGlzLm9wZW5DcmVhdGVEaWFsb2coImZvbGRlciIsU2UpLCJhY3Rpb24iKX0se25hbWU6Ik5ldyBGaWxlIEluc2lkZSIsaWNvbk5hbWU6Imx1Y2lkZTpmaWxlUGx1cyIsYWN0aW9uOmkoYXN5bmMoKT0+dGhpcy5vcGVuQ3JlYXRlRGlhbG9nKCJmaWxlIixTZSksImFjdGlvbiIpfSx7bmFtZToiVXBsb2FkIEZpbGVzLi4uIixpY29uTmFtZToibHVjaWRlOmZpbGUiLGFjdGlvbjppKGFzeW5jKCk9PnRoaXMudHJpZ2dlckZpbGVVcGxvYWQoU2UsImZpbGVzIiksImFjdGlvbiIpfSx7bmFtZToiVXBsb2FkIEZvbGRlci4uLiIsaWNvbk5hbWU6Imx1Y2lkZTpmb2xkZXJVcCIsYWN0aW9uOmkoYXN5bmMoKT0+dGhpcy50cmlnZ2VyRmlsZVVwbG9hZChTZSwiZm9sZGVyIiksImFjdGlvbiIpfSx7ZGl2aWRlcjohMH0se25hbWU6IkRlbGV0ZSBGb2xkZXIiLGljb25OYW1lOiJsdWNpZGU6dHJhc2gyIixhY3Rpb246aShhc3luYygpPT57Y29uZmlybShgRGVsZXRlIGZvbGRlciAiJHtGYShTZSl9IiBhbmQgYWxsIGl0cyBjb250ZW50cz9gKSYmYXdhaXQgdGhpcy5kYXRhUHJvdmlkZXIuZGVsZXRlUHJlZml4KHRoaXMuYnVja2V0TmFtZSxTZSkmJih0aGlzLmNvbHVtbnM9dGhpcy5jb2x1bW5zLnNsaWNlKDAscmUrMSksdGhpcy5jb2x1bW5zPXRoaXMuY29sdW1ucy5tYXAoKEplLHphKT0+emE9PT1yZT97Li4uSmUsc2VsZWN0ZWRJdGVtOm51bGx9OkplKSxhd2FpdCB0aGlzLnJlZnJlc2hDb2x1bW5CeVByZWZpeCh0aGlzLmNvbHVtbnNbcmVdLnByZWZpeCkpfSwiYWN0aW9uIil9XSkpfWhhbmRsZUZpbGVDb250ZXh0TWVudShmZSxyZSxTZSl7dGhpcy5kYXRhUHJvdmlkZXImJihmZS5wcmV2ZW50RGVmYXVsdCgpLGthLm9wZW5Db250ZXh0TWVudVdpdGhPcHRpb25zKGZlLFt7bmFtZToiUHJldmlldyIsaWNvbk5hbWU6Imx1Y2lkZTpleWUiLGFjdGlvbjppKGFzeW5jKCk9Pnt0aGlzLnNlbGVjdEZpbGUocmUsU2UpfSwiYWN0aW9uIil9LHtuYW1lOiJEb3dubG9hZCIsaWNvbk5hbWU6Imx1Y2lkZTpkb3dubG9hZCIsYWN0aW9uOmkoYXN5bmMoKT0+e2xldCBPZT1hd2FpdCB0aGlzLmRhdGFQcm92aWRlci5nZXRPYmplY3RVcmwodGhpcy5idWNrZXROYW1lLFNlKSxKZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7SmUuaHJlZj1PZSxKZS5kb3dubG9hZD1GYShTZSksSmUuY2xpY2soKX0sImFjdGlvbiIpfSx7bmFtZToiQ29weSBQYXRoIixpY29uTmFtZToibHVjaWRlOmNvcHkiLGFjdGlvbjppKGFzeW5jKCk9Pnthd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChTZSl9LCJhY3Rpb24iKX0se25hbWU6IlJlbmFtZSIsaWNvbk5hbWU6Imx1Y2lkZTpwZW5jaWwiLGFjdGlvbjppKGFzeW5jKCk9PnRoaXMub3BlblJlbmFtZURpYWxvZyhTZSwhMSksImFjdGlvbiIpfSx7ZGl2aWRlcjohMH0se25hbWU6Ik1vdmUgdG8uLi4iLGljb25OYW1lOiJsdWNpZGU6Zm9sZGVySW5wdXQiLGFjdGlvbjppKGFzeW5jKCk9PnRoaXMub3Blbk1vdmVQaWNrZXJEaWFsb2coU2UsITEpLCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJEZWxldGUiLGljb25OYW1lOiJsdWNpZGU6dHJhc2gyIixhY3Rpb246aShhc3luYygpPT57Y29uZmlybShgRGVsZXRlIGZpbGUgIiR7RmEoU2UpfSI/YCkmJmF3YWl0IHRoaXMuZGF0YVByb3ZpZGVyLmRlbGV0ZU9iamVjdCh0aGlzLmJ1Y2tldE5hbWUsU2UpJiZhd2FpdCB0aGlzLnJlZnJlc2hDb2x1bW5CeVByZWZpeCh0aGlzLmNvbHVtbnNbcmVdLnByZWZpeCl9LCJhY3Rpb24iKX1dKSl9aGFuZGxlRW1wdHlTcGFjZUNvbnRleHRNZW51KGZlLHJlKXtpZihmZS50YXJnZXQhPT1mZS5jdXJyZW50VGFyZ2V0KXJldHVybjtmZS5wcmV2ZW50RGVmYXVsdCgpO2xldCBTZT10aGlzLmNvbHVtbnNbcmVdLnByZWZpeDtrYS5vcGVuQ29udGV4dE1lbnVXaXRoT3B0aW9ucyhmZSxbe25hbWU6Ik5ldyBGb2xkZXIiLGljb25OYW1lOiJsdWNpZGU6Zm9sZGVyUGx1cyIsYWN0aW9uOmkoYXN5bmMoKT0+dGhpcy5vcGVuQ3JlYXRlRGlhbG9nKCJmb2xkZXIiLFNlKSwiYWN0aW9uIil9LHtuYW1lOiJOZXcgRmlsZSIsaWNvbk5hbWU6Imx1Y2lkZTpmaWxlUGx1cyIsYWN0aW9uOmkoYXN5bmMoKT0+dGhpcy5vcGVuQ3JlYXRlRGlhbG9nKCJmaWxlIixTZSksImFjdGlvbiIpfSx7bmFtZToiVXBsb2FkIEZpbGVzLi4uIixpY29uTmFtZToibHVjaWRlOmZpbGUiLGFjdGlvbjppKGFzeW5jKCk9PnRoaXMudHJpZ2dlckZpbGVVcGxvYWQoU2UsImZpbGVzIiksImFjdGlvbiIpfSx7bmFtZToiVXBsb2FkIEZvbGRlci4uLiIsaWNvbk5hbWU6Imx1Y2lkZTpmb2xkZXJVcCIsYWN0aW9uOmkoYXN5bmMoKT0+dGhpcy50cmlnZ2VyRmlsZVVwbG9hZChTZSwiZm9sZGVyIiksImFjdGlvbiIpfV0pfW9wZW5DcmVhdGVEaWFsb2coZmUscmUpe3RoaXMuY3JlYXRlRGlhbG9nVHlwZT1mZSx0aGlzLmNyZWF0ZURpYWxvZ1ByZWZpeD1yZSx0aGlzLmNyZWF0ZURpYWxvZ05hbWU9IiIsdGhpcy5zaG93Q3JlYXRlRGlhbG9nPSEwfWVuc3VyZUZpbGVJbnB1dHMoKXt0aGlzLmZpbGVJbnB1dEVsZW1lbnR8fCh0aGlzLmZpbGVJbnB1dEVsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSx0aGlzLmZpbGVJbnB1dEVsZW1lbnQudHlwZT0iZmlsZSIsdGhpcy5maWxlSW5wdXRFbGVtZW50Lm11bHRpcGxlPSEwLHRoaXMuZmlsZUlucHV0RWxlbWVudC5zdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLnNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQodGhpcy5maWxlSW5wdXRFbGVtZW50KSksdGhpcy5mb2xkZXJJbnB1dEVsZW1lbnR8fCh0aGlzLmZvbGRlcklucHV0RWxlbWVudD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLHRoaXMuZm9sZGVySW5wdXRFbGVtZW50LnR5cGU9ImZpbGUiLHRoaXMuZm9sZGVySW5wdXRFbGVtZW50Lm11bHRpcGxlPSEwLHRoaXMuZm9sZGVySW5wdXRFbGVtZW50LndlYmtpdGRpcmVjdG9yeT0hMCx0aGlzLmZvbGRlcklucHV0RWxlbWVudC5zdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLnNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQodGhpcy5mb2xkZXJJbnB1dEVsZW1lbnQpKX10cmlnZ2VyRmlsZVVwbG9hZChmZSxyZSl7dGhpcy5lbnN1cmVGaWxlSW5wdXRzKCk7bGV0IFNlPXJlPT09ImZvbGRlciI/dGhpcy5mb2xkZXJJbnB1dEVsZW1lbnQ6dGhpcy5maWxlSW5wdXRFbGVtZW50O1NlLnZhbHVlPSIiO2xldCBPZT1pKGFzeW5jKCk9PntTZS5yZW1vdmVFdmVudExpc3RlbmVyKCJjaGFuZ2UiLE9lKSxTZS5maWxlcyYmU2UuZmlsZXMubGVuZ3RoPjAmJmF3YWl0IHRoaXMudXBsb2FkRmlsZXMoQXJyYXkuZnJvbShTZS5maWxlcyksZmUpfSwiaGFuZGxlciIpO1NlLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsT2UpLFNlLmNsaWNrKCl9YXN5bmMgdXBsb2FkRmlsZXMoZmUscmUpe2lmKHRoaXMuZGF0YVByb3ZpZGVyKXt0aGlzLnVwbG9hZGluZz0hMCx0aGlzLnVwbG9hZFByb2dyZXNzPXtjdXJyZW50OjAsdG90YWw6ZmUubGVuZ3RofTtmb3IobGV0IFNlPTA7U2U8ZmUubGVuZ3RoO1NlKyspe2xldCBPZT1mZVtTZV07dGhpcy51cGxvYWRQcm9ncmVzcz17Y3VycmVudDpTZSsxLHRvdGFsOmZlLmxlbmd0aH07dHJ5e2xldCBKZT1hd2FpdCB0aGlzLnJlYWRGaWxlQXNCYXNlNjQoT2UpLHphPU9lLndlYmtpdFJlbGF0aXZlUGF0aHx8T2UubmFtZSxkYT1yZSt6YSx3cz1PZS50eXBlfHxXaChPZS5uYW1lLnNwbGl0KCIuIikucG9wKCk/LnRvTG93ZXJDYXNlKCl8fCIiKTthd2FpdCB0aGlzLmRhdGFQcm92aWRlci5wdXRPYmplY3QodGhpcy5idWNrZXROYW1lLGRhLEplLHdzKX1jYXRjaChKZSl7Y29uc29sZS5lcnJvcihgRmFpbGVkIHRvIHVwbG9hZCAke09lLm5hbWV9OmAsSmUpfX10aGlzLnVwbG9hZGluZz0hMSx0aGlzLnVwbG9hZFByb2dyZXNzPW51bGwsYXdhaXQgdGhpcy5yZWZyZXNoQ29sdW1uQnlQcmVmaXgocmUpfX1hc3luYyB1cGxvYWRGaWxlc1dpdGhQYXRocyhmZSxyZSl7aWYodGhpcy5kYXRhUHJvdmlkZXIpe3RoaXMudXBsb2FkaW5nPSEwLHRoaXMudXBsb2FkUHJvZ3Jlc3M9e2N1cnJlbnQ6MCx0b3RhbDpmZS5sZW5ndGh9O2ZvcihsZXQgU2U9MDtTZTxmZS5sZW5ndGg7U2UrKyl7bGV0e2ZpbGU6T2UscmVsYXRpdmVQYXRoOkplfT1mZVtTZV07dGhpcy51cGxvYWRQcm9ncmVzcz17Y3VycmVudDpTZSsxLHRvdGFsOmZlLmxlbmd0aH07dHJ5e2xldCB6YT1hd2FpdCB0aGlzLnJlYWRGaWxlQXNCYXNlNjQoT2UpLGRhPXJlK0plLHdzPU9lLnR5cGV8fFdoKE9lLm5hbWUuc3BsaXQoIi4iKS5wb3AoKT8udG9Mb3dlckNhc2UoKXx8IiIpO2F3YWl0IHRoaXMuZGF0YVByb3ZpZGVyLnB1dE9iamVjdCh0aGlzLmJ1Y2tldE5hbWUsZGEsemEsd3MpfWNhdGNoKHphKXtjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gdXBsb2FkICR7SmV9OmAsemEpfX10aGlzLnVwbG9hZGluZz0hMSx0aGlzLnVwbG9hZFByb2dyZXNzPW51bGwsYXdhaXQgdGhpcy5yZWZyZXNoQ29sdW1uQnlQcmVmaXgocmUpfX1yZWFkRmlsZUFzQmFzZTY0KGZlKXtyZXR1cm4gbmV3IFByb21pc2UoKHJlLFNlKT0+e2xldCBPZT1uZXcgRmlsZVJlYWRlcjtPZS5vbmxvYWQ9KCk9PntsZXQgSmU9T2UucmVzdWx0O3JlKEplLnNwbGl0KCIsIilbMV18fCIiKX0sT2Uub25lcnJvcj0oKT0+U2UoT2UuZXJyb3IpLE9lLnJlYWRBc0RhdGFVUkwoZmUpfSl9YXN5bmMgcmVmcmVzaENvbHVtbkJ5UHJlZml4KGZlKXtpZighdGhpcy5kYXRhUHJvdmlkZXIpcmV0dXJuO2xldCByZT10aGlzLmNvbHVtbnMuZmluZEluZGV4KFNlPT5TZS5wcmVmaXg9PT1mZSk7aWYocmU9PT0tMSl7YXdhaXQgdGhpcy5yZWZyZXNoQWxsQ29sdW1ucygpO3JldHVybn10cnl7bGV0IFNlPWF3YWl0IHRoaXMuZGF0YVByb3ZpZGVyLmxpc3RPYmplY3RzKHRoaXMuYnVja2V0TmFtZSxmZSwiLyIpO3RoaXMuY29sdW1ucz10aGlzLmNvbHVtbnMubWFwKChPZSxKZSk9PkplPT09cmU/ey4uLk9lLG9iamVjdHM6U2Uub2JqZWN0cyxwcmVmaXhlczpTZS5wcmVmaXhlc306T2UpfWNhdGNoe2F3YWl0IHRoaXMucmVmcmVzaEFsbENvbHVtbnMoKX19aGFuZGxlQ29sdW1uRHJhZ0VudGVyKGZlLHJlKXtmZS5wcmV2ZW50RGVmYXVsdCgpLGZlLnN0b3BQcm9wYWdhdGlvbigpO2xldCBTZT0odGhpcy5kcmFnQ291bnRlcnMuZ2V0KHJlKXx8MCkrMTt0aGlzLmRyYWdDb3VudGVycy5zZXQocmUsU2UpLHRoaXMuZHJhZ092ZXJDb2x1bW5JbmRleD1yZX1oYW5kbGVDb2x1bW5EcmFnT3ZlcihmZSl7ZmUucHJldmVudERlZmF1bHQoKSxmZS5zdG9wUHJvcGFnYXRpb24oKSxmZS5kYXRhVHJhbnNmZXImJihmZS5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdD10aGlzLmRyYWdnZWRJdGVtPyJtb3ZlIjoiY29weSIpfWhhbmRsZUNvbHVtbkRyYWdMZWF2ZShmZSxyZSl7ZmUuc3RvcFByb3BhZ2F0aW9uKCk7bGV0IFNlPSh0aGlzLmRyYWdDb3VudGVycy5nZXQocmUpfHwxKS0xO3RoaXMuZHJhZ0NvdW50ZXJzLnNldChyZSxTZSksU2U8PTAmJih0aGlzLmRyYWdDb3VudGVycy5kZWxldGUocmUpLHRoaXMuZHJhZ092ZXJDb2x1bW5JbmRleD09PXJlJiYodGhpcy5kcmFnT3ZlckNvbHVtbkluZGV4PS0xKSx0aGlzLmNsZWFyRm9sZGVySG92ZXIoKSl9YXN5bmMgaGFuZGxlQ29sdW1uRHJvcChmZSxyZSl7ZmUucHJldmVudERlZmF1bHQoKSxmZS5zdG9wUHJvcGFnYXRpb24oKTtsZXQgU2U9dGhpcy5kcmFnT3ZlckZvbGRlclByZWZpeD8/dGhpcy5jb2x1bW5zW3JlXS5wcmVmaXg7aWYodGhpcy5kcmFnZ2VkSXRlbSl7dGhpcy5pbml0aWF0ZU1vdmUodGhpcy5kcmFnZ2VkSXRlbS5rZXksdGhpcy5kcmFnZ2VkSXRlbS5pc0ZvbGRlcixTZSksdGhpcy5kcmFnZ2VkSXRlbT1udWxsLHRoaXMuY2xlYXJGb2xkZXJIb3ZlcigpLHRoaXMuZHJhZ0NvdW50ZXJzLmNsZWFyKCksdGhpcy5kcmFnT3ZlckNvbHVtbkluZGV4PS0xO3JldHVybn10aGlzLmRyYWdDb3VudGVycy5jbGVhcigpLHRoaXMuZHJhZ092ZXJDb2x1bW5JbmRleD0tMTtsZXQgT2U9ZmUuZGF0YVRyYW5zZmVyPy5pdGVtcztpZighT2V8fE9lLmxlbmd0aD09PTApcmV0dXJuO3RoaXMuY2xlYXJGb2xkZXJIb3ZlcigpO2xldCBKZT1bXSx6YT1pKGFzeW5jKGRhLHdzKT0+e2lmKGRhLmlzRmlsZSl7bGV0IGtpPWRhLEppPWF3YWl0IG5ldyBQcm9taXNlKChScixTaSk9PntraS5maWxlKFJyLFNpKX0pO0plLnB1c2goe2ZpbGU6SmkscmVsYXRpdmVQYXRoOndzK0ppLm5hbWV9KX1lbHNlIGlmKGRhLmlzRGlyZWN0b3J5KXtsZXQgSmk9ZGEuY3JlYXRlUmVhZGVyKCksUnI9YXdhaXQgbmV3IFByb21pc2UoKFNpLHZuKT0+e0ppLnJlYWRFbnRyaWVzKFNpLHZuKX0pO2ZvcihsZXQgU2kgb2YgUnIpYXdhaXQgemEoU2ksd3MrZGEubmFtZSsiLyIpfX0sInByb2Nlc3NFbnRyeSIpO2ZvcihsZXQgZGE9MDtkYTxPZS5sZW5ndGg7ZGErKyl7bGV0IHdzPU9lW2RhXTtpZih3cy5raW5kPT09ImZpbGUiKXtsZXQga2k9d3Mud2Via2l0R2V0QXNFbnRyeSgpO2tpJiZhd2FpdCB6YShraSwiIil9fUplLmxlbmd0aD4wJiZhd2FpdCB0aGlzLnVwbG9hZEZpbGVzV2l0aFBhdGhzKEplLFNlKX1oYW5kbGVGb2xkZXJEcmFnRW50ZXIoZmUscmUpe2ZlLnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuY2xlYXJGb2xkZXJIb3ZlcigpLHRoaXMuZm9sZGVySG92ZXJUaW1lcj1zZXRUaW1lb3V0KCgpPT57dGhpcy5kcmFnT3ZlckZvbGRlclByZWZpeD1yZX0sNTAwKX1oYW5kbGVGb2xkZXJEcmFnTGVhdmUoZmUscmUpe2ZlLnN0b3BQcm9wYWdhdGlvbigpO2xldCBTZT1mZS5jdXJyZW50VGFyZ2V0LE9lPWZlLnJlbGF0ZWRUYXJnZXQ7T2UmJlNlLmNvbnRhaW5zKE9lKXx8KHRoaXMuZHJhZ092ZXJGb2xkZXJQcmVmaXg9PT1yZSYmKHRoaXMuZHJhZ092ZXJGb2xkZXJQcmVmaXg9bnVsbCksdGhpcy5mb2xkZXJIb3ZlclRpbWVyJiYoY2xlYXJUaW1lb3V0KHRoaXMuZm9sZGVySG92ZXJUaW1lciksdGhpcy5mb2xkZXJIb3ZlclRpbWVyPW51bGwpKX1oYW5kbGVGb2xkZXJEcmFnT3ZlcihmZSl7ZmUucHJldmVudERlZmF1bHQoKSxmZS5zdG9wUHJvcGFnYXRpb24oKSxmZS5kYXRhVHJhbnNmZXImJihmZS5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdD10aGlzLmRyYWdnZWRJdGVtPyJtb3ZlIjoiY29weSIpfWNsZWFyRm9sZGVySG92ZXIoKXt0aGlzLmZvbGRlckhvdmVyVGltZXImJihjbGVhclRpbWVvdXQodGhpcy5mb2xkZXJIb3ZlclRpbWVyKSx0aGlzLmZvbGRlckhvdmVyVGltZXI9bnVsbCksdGhpcy5kcmFnT3ZlckZvbGRlclByZWZpeD1udWxsfWhhbmRsZUl0ZW1EcmFnU3RhcnQoZmUscmUsU2Upe3RoaXMuZHJhZ2dlZEl0ZW09e2tleTpyZSxpc0ZvbGRlcjpTZX0sZmUuZGF0YVRyYW5zZmVyPy5zZXREYXRhKCJ0ZXh0L3BsYWluIixyZSksZmUuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQ9ImNvcHlNb3ZlIixmZS50YXJnZXQuY2xhc3NMaXN0LmFkZCgiZHJhZ2dpbmciKX1oYW5kbGVJdGVtRHJhZ0VuZChmZSl7dGhpcy5kcmFnZ2VkSXRlbT1udWxsLGZlLnRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKCJkcmFnZ2luZyIpfWFzeW5jIG9wZW5Nb3ZlUGlja2VyRGlhbG9nKGZlLHJlKXt0aGlzLm1vdmVQaWNrZXJTb3VyY2U9e2tleTpmZSxpc0ZvbGRlcjpyZX0sdGhpcy5tb3ZlUGlja2VyQ3VycmVudFByZWZpeD0iIix0aGlzLnNob3dNb3ZlUGlja2VyRGlhbG9nPSEwLGF3YWl0IHRoaXMubG9hZE1vdmVQaWNrZXJQcmVmaXhlcygiIil9YXN5bmMgbmF2aWdhdGVNb3ZlUGlja2VyKGZlKXt0aGlzLm1vdmVQaWNrZXJDdXJyZW50UHJlZml4PWZlLGF3YWl0IHRoaXMubG9hZE1vdmVQaWNrZXJQcmVmaXhlcyhmZSl9YXN5bmMgbG9hZE1vdmVQaWNrZXJQcmVmaXhlcyhmZSl7aWYodGhpcy5kYXRhUHJvdmlkZXIpe3RoaXMubW92ZVBpY2tlckxvYWRpbmc9ITA7dHJ5e2xldCByZT1hd2FpdCB0aGlzLmRhdGFQcm92aWRlci5saXN0T2JqZWN0cyh0aGlzLmJ1Y2tldE5hbWUsZmUsIi8iKTt0aGlzLm1vdmVQaWNrZXJQcmVmaXhlcz1yZS5wcmVmaXhlc31jYXRjaHt0aGlzLm1vdmVQaWNrZXJQcmVmaXhlcz1bXX10aGlzLm1vdmVQaWNrZXJMb2FkaW5nPSExfX1zZWxlY3RNb3ZlRGVzdGluYXRpb24oZmUpe3RoaXMubW92ZVBpY2tlclNvdXJjZSYmKHRoaXMuY2xvc2VNb3ZlUGlja2VyRGlhbG9nKCksdGhpcy5pbml0aWF0ZU1vdmUodGhpcy5tb3ZlUGlja2VyU291cmNlLmtleSx0aGlzLm1vdmVQaWNrZXJTb3VyY2UuaXNGb2xkZXIsZmUpKX1jbG9zZU1vdmVQaWNrZXJEaWFsb2coKXt0aGlzLnNob3dNb3ZlUGlja2VyRGlhbG9nPSExLHRoaXMubW92ZVBpY2tlclNvdXJjZT1udWxsLHRoaXMubW92ZVBpY2tlckN1cnJlbnRQcmVmaXg9IiIsdGhpcy5tb3ZlUGlja2VyUHJlZml4ZXM9W119aW5pdGlhdGVNb3ZlKGZlLHJlLFNlKXtsZXQgT2U9SnYoZmUsU2UpO2lmKCFPZS52YWxpZCl7dGhpcy5tb3ZlU291cmNlPXtrZXk6ZmUsaXNGb2xkZXI6cmV9LHRoaXMubW92ZURlc3RpbmF0aW9uPVNlLHRoaXMubW92ZUVycm9yPU9lLmVycm9yLHRoaXMuc2hvd01vdmVEaWFsb2c9ITA7cmV0dXJufXRoaXMubW92ZVNvdXJjZT17a2V5OmZlLGlzRm9sZGVyOnJlfSx0aGlzLm1vdmVEZXN0aW5hdGlvbj1TZSx0aGlzLm1vdmVFcnJvcj1udWxsLHRoaXMuc2hvd01vdmVEaWFsb2c9ITB9YXN5bmMgZXhlY3V0ZU1vdmUoKXtpZighKCF0aGlzLm1vdmVTb3VyY2V8fCF0aGlzLmRhdGFQcm92aWRlcikpe3RoaXMubW92ZUluUHJvZ3Jlc3M9ITA7dHJ5e2xldCBmZT1GYSh0aGlzLm1vdmVTb3VyY2Uua2V5KSxyZT10aGlzLm1vdmVEZXN0aW5hdGlvbitmZSsodGhpcy5tb3ZlU291cmNlLmlzRm9sZGVyPyIvIjoiIiksU2U7dGhpcy5tb3ZlU291cmNlLmlzRm9sZGVyP1NlPWF3YWl0IHRoaXMuZGF0YVByb3ZpZGVyLm1vdmVQcmVmaXgodGhpcy5idWNrZXROYW1lLHRoaXMubW92ZVNvdXJjZS5rZXkscmUpOlNlPWF3YWl0IHRoaXMuZGF0YVByb3ZpZGVyLm1vdmVPYmplY3QodGhpcy5idWNrZXROYW1lLHRoaXMubW92ZVNvdXJjZS5rZXkscmUpLFNlLnN1Y2Nlc3M/KHRoaXMuY2xvc2VNb3ZlRGlhbG9nKCksYXdhaXQgdGhpcy5yZWZyZXNoQWxsQ29sdW1ucygpKTp0aGlzLm1vdmVFcnJvcj1TZS5lcnJvcnx8Ik1vdmUgb3BlcmF0aW9uIGZhaWxlZCJ9Y2F0Y2goZmUpe3RoaXMubW92ZUVycm9yPWBFcnJvcjogJHtmZX1gfXRoaXMubW92ZUluUHJvZ3Jlc3M9ITF9fWNsb3NlTW92ZURpYWxvZygpe3RoaXMuc2hvd01vdmVEaWFsb2c9ITEsdGhpcy5tb3ZlU291cmNlPW51bGwsdGhpcy5tb3ZlRGVzdGluYXRpb249IiIsdGhpcy5tb3ZlRXJyb3I9bnVsbCx0aGlzLm1vdmVJblByb2dyZXNzPSExfW9wZW5SZW5hbWVEaWFsb2coZmUscmUpe3RoaXMucmVuYW1lU291cmNlPXtrZXk6ZmUsaXNGb2xkZXI6cmV9LHRoaXMucmVuYW1lTmFtZT1GYShmZSksdGhpcy5yZW5hbWVFcnJvcj1udWxsLHRoaXMuc2hvd1JlbmFtZURpYWxvZz0hMCx0aGlzLnVwZGF0ZUNvbXBsZXRlLnRoZW4oKCk9PntsZXQgU2U9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIucmVuYW1lLWRpYWxvZy1pbnB1dCIpO2lmKFNlKWlmKFNlLmZvY3VzKCkscmUpU2Uuc2VsZWN0KCk7ZWxzZXtsZXQgT2U9dGhpcy5yZW5hbWVOYW1lLmxhc3RJbmRleE9mKCIuIik7T2U+MD9TZS5zZXRTZWxlY3Rpb25SYW5nZSgwLE9lKTpTZS5zZWxlY3QoKX19KX1hc3luYyBleGVjdXRlUmVuYW1lKCl7aWYoIXRoaXMucmVuYW1lU291cmNlfHwhdGhpcy5yZW5hbWVOYW1lLnRyaW0oKXx8IXRoaXMuZGF0YVByb3ZpZGVyKXJldHVybjtsZXQgZmU9dGhpcy5yZW5hbWVOYW1lLnRyaW0oKSxyZT1GYSh0aGlzLnJlbmFtZVNvdXJjZS5rZXkpO2lmKGZlPT09cmUpe3RoaXMucmVuYW1lRXJyb3I9Ik5hbWUgaXMgdGhlIHNhbWUgYXMgY3VycmVudCI7cmV0dXJufWlmKCFmZSl7dGhpcy5yZW5hbWVFcnJvcj0iTmFtZSBjYW5ub3QgYmUgZW1wdHkiO3JldHVybn1pZihmZS5pbmNsdWRlcygiLyIpKXt0aGlzLnJlbmFtZUVycm9yPSdOYW1lIGNhbm5vdCBjb250YWluICIvIic7cmV0dXJufXRoaXMucmVuYW1lSW5Qcm9ncmVzcz0hMCx0aGlzLnJlbmFtZUVycm9yPW51bGw7dHJ5e2xldCBPZT1sMih0aGlzLnJlbmFtZVNvdXJjZS5rZXkpK2ZlKyh0aGlzLnJlbmFtZVNvdXJjZS5pc0ZvbGRlcj8iLyI6IiIpLEplO3RoaXMucmVuYW1lU291cmNlLmlzRm9sZGVyP0plPWF3YWl0IHRoaXMuZGF0YVByb3ZpZGVyLm1vdmVQcmVmaXgodGhpcy5idWNrZXROYW1lLHRoaXMucmVuYW1lU291cmNlLmtleSxPZSk6SmU9YXdhaXQgdGhpcy5kYXRhUHJvdmlkZXIubW92ZU9iamVjdCh0aGlzLmJ1Y2tldE5hbWUsdGhpcy5yZW5hbWVTb3VyY2Uua2V5LE9lKSxKZS5zdWNjZXNzPyh0aGlzLmNsb3NlUmVuYW1lRGlhbG9nKCksYXdhaXQgdGhpcy5yZWZyZXNoQWxsQ29sdW1ucygpKTp0aGlzLnJlbmFtZUVycm9yPUplLmVycm9yfHwiUmVuYW1lIGZhaWxlZCJ9Y2F0Y2goU2Upe3RoaXMucmVuYW1lRXJyb3I9YEVycm9yOiAke1NlfWB9dGhpcy5yZW5hbWVJblByb2dyZXNzPSExfWNsb3NlUmVuYW1lRGlhbG9nKCl7dGhpcy5zaG93UmVuYW1lRGlhbG9nPSExLHRoaXMucmVuYW1lU291cmNlPW51bGwsdGhpcy5yZW5hbWVOYW1lPSIiLHRoaXMucmVuYW1lRXJyb3I9bnVsbCx0aGlzLnJlbmFtZUluUHJvZ3Jlc3M9ITF9cmVuZGVyUmVuYW1lRGlhbG9nKCl7aWYoIXRoaXMuc2hvd1JlbmFtZURpYWxvZ3x8IXRoaXMucmVuYW1lU291cmNlKXJldHVybiIiO2xldCBmZT10aGlzLnJlbmFtZVNvdXJjZS5pc0ZvbGRlcjtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iZGlhbG9nLW92ZXJsYXkiIEBjbGljaz0keygpPT50aGlzLmNsb3NlUmVuYW1lRGlhbG9nKCl9PgogICAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZyIgQGNsaWNrPSR7U2U9PlNlLnN0b3BQcm9wYWdhdGlvbigpfT4KICAgICAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZy10aXRsZSI+JHtmZT8iUmVuYW1lIEZvbGRlciI6IlJlbmFtZSBGaWxlIn08L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZy1sb2NhdGlvbiI+CiAgICAgICAgICAgIExvY2F0aW9uOiAke3RoaXMuYnVja2V0TmFtZX0vJHtsMih0aGlzLnJlbmFtZVNvdXJjZS5rZXkpfQogICAgICAgICAgPC9kaXY+CiAgICAgICAgICAke3RoaXMucmVuYW1lRXJyb3I/d2A8ZGl2IGNsYXNzPSJtb3ZlLWVycm9yIj4ke3RoaXMucmVuYW1lRXJyb3J9PC9kaXY+YDoiIn0KICAgICAgICAgIDxpbnB1dAogICAgICAgICAgICB0eXBlPSJ0ZXh0IgogICAgICAgICAgICBjbGFzcz0iZGlhbG9nLWlucHV0IHJlbmFtZS1kaWFsb2ctaW5wdXQiCiAgICAgICAgICAgIHBsYWNlaG9sZGVyPSR7ZmU/ImZvbGRlci1uYW1lIjoiZmlsZW5hbWUuZXh0In0KICAgICAgICAgICAgLnZhbHVlPSR7dGhpcy5yZW5hbWVOYW1lfQogICAgICAgICAgICBAaW5wdXQ9JHtTZT0+e3RoaXMucmVuYW1lTmFtZT1TZS50YXJnZXQudmFsdWUsdGhpcy5yZW5hbWVFcnJvcj1udWxsfX0KICAgICAgICAgICAgQGtleWRvd249JHtTZT0+e1NlLmtleT09PSJFbnRlciImJnRoaXMuZXhlY3V0ZVJlbmFtZSgpLFNlLmtleT09PSJFc2NhcGUiJiZ0aGlzLmNsb3NlUmVuYW1lRGlhbG9nKCl9fQogICAgICAgICAgLz4KICAgICAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZy1hY3Rpb25zIj4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZGlhbG9nLWJ0biBkaWFsb2ctYnRuLWNhbmNlbCIKICAgICAgICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy5jbG9zZVJlbmFtZURpYWxvZygpfQogICAgICAgICAgICAgICAgICAgID9kaXNhYmxlZD0ke3RoaXMucmVuYW1lSW5Qcm9ncmVzc30+Q2FuY2VsPC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImRpYWxvZy1idG4gZGlhbG9nLWJ0bi1jcmVhdGUiCiAgICAgICAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMuZXhlY3V0ZVJlbmFtZSgpfQogICAgICAgICAgICAgICAgICAgID9kaXNhYmxlZD0ke3RoaXMucmVuYW1lSW5Qcm9ncmVzc3x8IXRoaXMucmVuYW1lTmFtZS50cmltKCl9PgogICAgICAgICAgICAgICR7dGhpcy5yZW5hbWVJblByb2dyZXNzPyJSZW5hbWluZy4uLiI6IlJlbmFtZSJ9CiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJNb3ZlRGlhbG9nKCl7aWYoIXRoaXMuc2hvd01vdmVEaWFsb2d8fCF0aGlzLm1vdmVTb3VyY2UpcmV0dXJuIiI7bGV0IGZlPUZhKHRoaXMubW92ZVNvdXJjZS5rZXkpO3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJkaWFsb2ctb3ZlcmxheSIgQGNsaWNrPSR7KCk9PnRoaXMuY2xvc2VNb3ZlRGlhbG9nKCl9PgogICAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZyIgQGNsaWNrPSR7cmU9PnJlLnN0b3BQcm9wYWdhdGlvbigpfT4KICAgICAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZy10aXRsZSI+TW92ZSAke3RoaXMubW92ZVNvdXJjZS5pc0ZvbGRlcj8iRm9sZGVyIjoiRmlsZSJ9PC9kaXY+CgogICAgICAgICAgJHt0aGlzLm1vdmVFcnJvcj93YAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb3ZlLWVycm9yIj4ke3RoaXMubW92ZUVycm9yfTwvZGl2PgogICAgICAgICAgYDp3YAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb3ZlLXN1bW1hcnkiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vdmUtaXRlbSI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibW92ZS1sYWJlbCI+RnJvbTo8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibW92ZS1wYXRoIj4ke3RoaXMubW92ZVNvdXJjZS5rZXl9PC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vdmUtaXRlbSI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibW92ZS1sYWJlbCI+VG86PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1vdmUtcGF0aCI+JHt0aGlzLm1vdmVEZXN0aW5hdGlvbn0ke2ZlfTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgfQoKICAgICAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZy1hY3Rpb25zIj4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZGlhbG9nLWJ0biBkaWFsb2ctYnRuLWNhbmNlbCIKICAgICAgICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy5jbG9zZU1vdmVEaWFsb2coKX0KICAgICAgICAgICAgICAgICAgICA/ZGlzYWJsZWQ9JHt0aGlzLm1vdmVJblByb2dyZXNzfT4KICAgICAgICAgICAgICBDYW5jZWwKICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICR7dGhpcy5tb3ZlRXJyb3I/IiI6d2AKICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJkaWFsb2ctYnRuIGRpYWxvZy1idG4tY3JlYXRlIgogICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMuZXhlY3V0ZU1vdmUoKX0KICAgICAgICAgICAgICAgICAgICAgID9kaXNhYmxlZD0ke3RoaXMubW92ZUluUHJvZ3Jlc3N9PgogICAgICAgICAgICAgICAgJHt0aGlzLm1vdmVJblByb2dyZXNzPyJNb3ZpbmcuLi4iOiJNb3ZlIn0KICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgYH0KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyTW92ZVBpY2tlckRpYWxvZygpe2lmKCF0aGlzLnNob3dNb3ZlUGlja2VyRGlhbG9nfHwhdGhpcy5tb3ZlUGlja2VyU291cmNlKXJldHVybiIiO2xldCBmZT1GYSh0aGlzLm1vdmVQaWNrZXJTb3VyY2Uua2V5KSxyZT1sMih0aGlzLm1vdmVQaWNrZXJTb3VyY2Uua2V5KTtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iZGlhbG9nLW92ZXJsYXkiIEBjbGljaz0keygpPT50aGlzLmNsb3NlTW92ZVBpY2tlckRpYWxvZygpfT4KICAgICAgICA8ZGl2IGNsYXNzPSJkaWFsb2cgbW92ZS1waWNrZXItZGlhbG9nIiBAY2xpY2s9JHtTZT0+U2Uuc3RvcFByb3BhZ2F0aW9uKCl9PgogICAgICAgICAgPGRpdiBjbGFzcz0iZGlhbG9nLXRpdGxlIj5Nb3ZlICIke2ZlfSIgdG8uLi48L2Rpdj4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJwaWNrZXItYnJlYWRjcnVtYiI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwaWNrZXItY3J1bWIiIEBjbGljaz0keygpPT50aGlzLm5hdmlnYXRlTW92ZVBpY2tlcigiIil9PgogICAgICAgICAgICAgICR7dGhpcy5idWNrZXROYW1lfQogICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICR7eWcodGhpcy5tb3ZlUGlja2VyQ3VycmVudFByZWZpeCkubWFwKFNlPT53YAogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwaWNrZXItc2VwYXJhdG9yIj4vPC9zcGFuPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwaWNrZXItY3J1bWIiIEBjbGljaz0keygpPT50aGlzLm5hdmlnYXRlTW92ZVBpY2tlcihTZSl9PgogICAgICAgICAgICAgICAgJHtGYShTZSl9CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICBgKX0KICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgIDxkaXYgY2xhc3M9InBpY2tlci1saXN0Ij4KICAgICAgICAgICAgJHt0aGlzLm1vdmVQaWNrZXJMb2FkaW5nP3dgPGRpdiBjbGFzcz0icGlja2VyLWVtcHR5Ij5Mb2FkaW5nLi4uPC9kaXY+YDoiIn0KICAgICAgICAgICAgJHshdGhpcy5tb3ZlUGlja2VyTG9hZGluZyYmdGhpcy5tb3ZlUGlja2VyUHJlZml4ZXMuZmlsdGVyKFNlPT5TZSE9PXRoaXMubW92ZVBpY2tlclNvdXJjZS5rZXkpLmxlbmd0aD09PTA/d2AKICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwaWNrZXItZW1wdHkiPk5vIHN1YmZvbGRlcnM8L2Rpdj4KICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICAgJHt0aGlzLm1vdmVQaWNrZXJQcmVmaXhlcy5maWx0ZXIoU2U9PlNlIT09dGhpcy5tb3ZlUGlja2VyU291cmNlLmtleSkubWFwKFNlPT53YAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGlja2VyLWl0ZW0iCiAgICAgICAgICAgICAgICAgICAgIEBjbGljaz0keygpPT50aGlzLm5hdmlnYXRlTW92ZVBpY2tlcihTZSl9CiAgICAgICAgICAgICAgICAgICAgIEBkYmxjbGljaz0keygpPT50aGlzLnNlbGVjdE1vdmVEZXN0aW5hdGlvbihTZSl9PgogICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJpY29uIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9ImN1cnJlbnRDb2xvciI+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTIyIDE5YTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmg1bDIgM2g5YTIgMiAwIDAgMSAyIDJ6Ii8+CiAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibmFtZSI+JHtGYShTZSl9PC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgYCl9CiAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJkaWFsb2ctYWN0aW9ucyI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImRpYWxvZy1idG4gZGlhbG9nLWJ0bi1jYW5jZWwiIEBjbGljaz0keygpPT50aGlzLmNsb3NlTW92ZVBpY2tlckRpYWxvZygpfT4KICAgICAgICAgICAgICBDYW5jZWwKICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImRpYWxvZy1idG4gZGlhbG9nLWJ0bi1jcmVhdGUiCiAgICAgICAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMuc2VsZWN0TW92ZURlc3RpbmF0aW9uKHRoaXMubW92ZVBpY2tlckN1cnJlbnRQcmVmaXgpfQogICAgICAgICAgICAgICAgICAgID9kaXNhYmxlZD0ke3RoaXMubW92ZVBpY2tlckN1cnJlbnRQcmVmaXg9PT1yZX0+CiAgICAgICAgICAgICAgTW92ZSBIZXJlCiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1hc3luYyBoYW5kbGVDcmVhdGUoKXtpZighdGhpcy5jcmVhdGVEaWFsb2dOYW1lLnRyaW0oKXx8IXRoaXMuZGF0YVByb3ZpZGVyKXJldHVybjtsZXQgZmU9dGhpcy5jcmVhdGVEaWFsb2dOYW1lLnRyaW0oKSxyZTt0aGlzLmNyZWF0ZURpYWxvZ1R5cGU9PT0iZm9sZGVyIj9yZT10aGlzLmNyZWF0ZURpYWxvZ1ByZWZpeCtmZSsiLy5rZWVwIjpyZT10aGlzLmNyZWF0ZURpYWxvZ1ByZWZpeCtmZTtsZXQgU2U9ZmUuc3BsaXQoIi4iKS5wb3AoKT8udG9Mb3dlckNhc2UoKXx8IiIsT2U9dGhpcy5jcmVhdGVEaWFsb2dUeXBlPT09ImZpbGUiP1doKFNlKToiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIixKZT10aGlzLmNyZWF0ZURpYWxvZ1R5cGU9PT0iZmlsZSI/ZXgoU2UpOiIiO2F3YWl0IHRoaXMuZGF0YVByb3ZpZGVyLnB1dE9iamVjdCh0aGlzLmJ1Y2tldE5hbWUscmUsYnRvYShKZSksT2UpJiYodGhpcy5zaG93Q3JlYXRlRGlhbG9nPSExLGF3YWl0IHRoaXMucmVmcmVzaENvbHVtbkJ5UHJlZml4KHRoaXMuY3JlYXRlRGlhbG9nUHJlZml4KSl9cmVuZGVyQ3JlYXRlRGlhbG9nKCl7aWYoIXRoaXMuc2hvd0NyZWF0ZURpYWxvZylyZXR1cm4iIjtsZXQgZmU9dGhpcy5jcmVhdGVEaWFsb2dUeXBlPT09ImZvbGRlciIscmU9ZmU/IkNyZWF0ZSBOZXcgRm9sZGVyIjoiQ3JlYXRlIE5ldyBGaWxlIixTZT1mZT8iZm9sZGVyLW5hbWUgb3IgcGF0aC90by9mb2xkZXIiOiJmaWxlbmFtZS50eHQgb3IgcGF0aC90by9maWxlLnR4dCI7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZy1vdmVybGF5IiBAY2xpY2s9JHsoKT0+dGhpcy5zaG93Q3JlYXRlRGlhbG9nPSExfT4KICAgICAgICA8ZGl2IGNsYXNzPSJkaWFsb2ciIEBjbGljaz0ke09lPT5PZS5zdG9wUHJvcGFnYXRpb24oKX0+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkaWFsb2ctdGl0bGUiPiR7cmV9PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkaWFsb2ctbG9jYXRpb24iPgogICAgICAgICAgICBMb2NhdGlvbjogJHt0aGlzLmJ1Y2tldE5hbWV9LyR7dGhpcy5jcmVhdGVEaWFsb2dQcmVmaXh9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxpbnB1dAogICAgICAgICAgICB0eXBlPSJ0ZXh0IgogICAgICAgICAgICBjbGFzcz0iZGlhbG9nLWlucHV0IgogICAgICAgICAgICBwbGFjZWhvbGRlcj0ke1NlfQogICAgICAgICAgICAudmFsdWU9JHt0aGlzLmNyZWF0ZURpYWxvZ05hbWV9CiAgICAgICAgICAgIEBpbnB1dD0ke09lPT50aGlzLmNyZWF0ZURpYWxvZ05hbWU9T2UudGFyZ2V0LnZhbHVlfQogICAgICAgICAgICBAa2V5ZG93bj0ke09lPT5PZS5rZXk9PT0iRW50ZXIiJiZ0aGlzLmhhbmRsZUNyZWF0ZSgpfQogICAgICAgICAgLz4KICAgICAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZy1oaW50Ij4KICAgICAgICAgICAgVXNlICIvIiB0byBjcmVhdGUgbmVzdGVkICR7ZmU/ImZvbGRlcnMiOiJwYXRoIn0gKGUuZy4sICR7ZmU/InBhcmVudC9jaGlsZCI6ImZvbGRlci9maWxlLnR4dCJ9KQogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkaWFsb2ctYWN0aW9ucyI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImRpYWxvZy1idG4gZGlhbG9nLWJ0bi1jYW5jZWwiIEBjbGljaz0keygpPT50aGlzLnNob3dDcmVhdGVEaWFsb2c9ITF9PgogICAgICAgICAgICAgIENhbmNlbAogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgPGJ1dHRvbgogICAgICAgICAgICAgIGNsYXNzPSJkaWFsb2ctYnRuIGRpYWxvZy1idG4tY3JlYXRlIgogICAgICAgICAgICAgID9kaXNhYmxlZD0keyF0aGlzLmNyZWF0ZURpYWxvZ05hbWUudHJpbSgpfQogICAgICAgICAgICAgIEBjbGljaz0keygpPT50aGlzLmhhbmRsZUNyZWF0ZSgpfQogICAgICAgICAgICA+CiAgICAgICAgICAgICAgQ3JlYXRlCiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXIoKXtyZXR1cm4gdGhpcy5sb2FkaW5nJiZ0aGlzLmNvbHVtbnMubGVuZ3RoPT09MD93YDxkaXYgY2xhc3M9ImxvYWRpbmciPkxvYWRpbmcuLi48L2Rpdj5gOndgCiAgICAgIDxkaXYgY2xhc3M9ImNvbHVtbnMtY29udGFpbmVyIj4KICAgICAgICAke3RoaXMuY29sdW1ucy5tYXAoKGZlLHJlKT0+dGhpcy5yZW5kZXJDb2x1bW5XcmFwcGVyKGZlLHJlKSl9CiAgICAgIDwvZGl2PgogICAgICAke3RoaXMucmVuZGVyQ3JlYXRlRGlhbG9nKCl9CiAgICAgICR7dGhpcy5yZW5kZXJNb3ZlRGlhbG9nKCl9CiAgICAgICR7dGhpcy5yZW5kZXJNb3ZlUGlja2VyRGlhbG9nKCl9CiAgICAgICR7dGhpcy5yZW5kZXJSZW5hbWVEaWFsb2coKX0KICAgIGB9cmVuZGVyQ29sdW1uV3JhcHBlcihmZSxyZSl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImNvbHVtbi13cmFwcGVyIj4KICAgICAgICAke3RoaXMucmVuZGVyQ29sdW1uKGZlLHJlKX0KICAgICAgICA8ZGl2CiAgICAgICAgICBjbGFzcz0icmVzaXplLWhhbmRsZSAke3RoaXMucmVzaXppbmc/LmNvbHVtbkluZGV4PT09cmU/ImFjdGl2ZSI6IiJ9IgogICAgICAgICAgQG1vdXNlZG93bj0ke1NlPT50aGlzLnN0YXJ0UmVzaXplKFNlLHJlKX0KICAgICAgICA+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJDb2x1bW4oZmUscmUpe2xldCBTZT1mZS5wcmVmaXg/RmEoZmUucHJlZml4KTp0aGlzLmJ1Y2tldE5hbWU7cmV0dXJuIHdgCiAgICAgIDxkaXYKICAgICAgICBjbGFzcz0iY29sdW1uICR7dGhpcy5kcmFnT3ZlckNvbHVtbkluZGV4PT09cmU/ImRyYWctb3ZlciI6IiJ9IgogICAgICAgIHN0eWxlPSJ3aWR0aDogJHtmZS53aWR0aH1weCIKICAgICAgICBAZHJhZ2VudGVyPSR7T2U9PnRoaXMuaGFuZGxlQ29sdW1uRHJhZ0VudGVyKE9lLHJlKX0KICAgICAgICBAZHJhZ292ZXI9JHtPZT0+dGhpcy5oYW5kbGVDb2x1bW5EcmFnT3ZlcihPZSl9CiAgICAgICAgQGRyYWdsZWF2ZT0ke09lPT50aGlzLmhhbmRsZUNvbHVtbkRyYWdMZWF2ZShPZSxyZSl9CiAgICAgICAgQGRyb3A9JHtPZT0+dGhpcy5oYW5kbGVDb2x1bW5Ecm9wKE9lLHJlKX0KICAgICAgPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbHVtbi1oZWFkZXIiIHRpdGxlPSR7ZmUucHJlZml4fHx0aGlzLmJ1Y2tldE5hbWV9PgogICAgICAgICAgJHtTZX0KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb2x1bW4taXRlbXMiIEBjb250ZXh0bWVudT0ke09lPT50aGlzLmhhbmRsZUVtcHR5U3BhY2VDb250ZXh0TWVudShPZSxyZSl9PgogICAgICAgICAgJHtmZS5wcmVmaXhlcy5sZW5ndGg9PT0wJiZmZS5vYmplY3RzLmxlbmd0aD09PTA/d2A8ZGl2IGNsYXNzPSJlbXB0eS1zdGF0ZSI+RW1wdHkgZm9sZGVyPC9kaXY+YDoiIn0KICAgICAgICAgICR7ZmUucHJlZml4ZXMubWFwKE9lPT53YAogICAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSJjb2x1bW4taXRlbSBmb2xkZXIgJHtmZS5zZWxlY3RlZEl0ZW09PT1PZT8ic2VsZWN0ZWQiOiIifSAke3RoaXMuZHJhZ092ZXJGb2xkZXJQcmVmaXg9PT1PZT8iZHJhZy10YXJnZXQiOiIifSIKICAgICAgICAgICAgICAgIGRyYWdnYWJsZT0idHJ1ZSIKICAgICAgICAgICAgICAgIEBjbGljaz0keygpPT50aGlzLnNlbGVjdEZvbGRlcihyZSxPZSl9CiAgICAgICAgICAgICAgICBAY29udGV4dG1lbnU9JHtKZT0+dGhpcy5oYW5kbGVGb2xkZXJDb250ZXh0TWVudShKZSxyZSxPZSl9CiAgICAgICAgICAgICAgICBAZHJhZ3N0YXJ0PSR7SmU9PnRoaXMuaGFuZGxlSXRlbURyYWdTdGFydChKZSxPZSwhMCl9CiAgICAgICAgICAgICAgICBAZHJhZ2VuZD0ke0plPT50aGlzLmhhbmRsZUl0ZW1EcmFnRW5kKEplKX0KICAgICAgICAgICAgICAgIEBkcmFnZW50ZXI9JHtKZT0+dGhpcy5oYW5kbGVGb2xkZXJEcmFnRW50ZXIoSmUsT2UpfQogICAgICAgICAgICAgICAgQGRyYWdvdmVyPSR7SmU9PnRoaXMuaGFuZGxlRm9sZGVyRHJhZ092ZXIoSmUpfQogICAgICAgICAgICAgICAgQGRyYWdsZWF2ZT0ke0plPT50aGlzLmhhbmRsZUZvbGRlckRyYWdMZWF2ZShKZSxPZSl9CiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiPgogICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjIgMTlhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDVsMiAzaDlhMiAyIDAgMCAxIDIgMnoiIC8+CiAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJuYW1lIj4ke0ZhKE9lKX08L3NwYW4+CiAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJjaGV2cm9uIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgICAgICAgICAgICAgICA8cG9seWxpbmUgcG9pbnRzPSI5IDE4IDE1IDEyIDkgNiI+PC9wb2x5bGluZT4KICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICBgKX0KICAgICAgICAgICR7ZmUub2JqZWN0cy5tYXAoT2U9PndgCiAgICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgY2xhc3M9ImNvbHVtbi1pdGVtICR7ZmUuc2VsZWN0ZWRJdGVtPT09T2Uua2V5PyJzZWxlY3RlZCI6IiJ9IgogICAgICAgICAgICAgICAgZHJhZ2dhYmxlPSJ0cnVlIgogICAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMuc2VsZWN0RmlsZShyZSxPZS5rZXkpfQogICAgICAgICAgICAgICAgQGNvbnRleHRtZW51PSR7SmU9PnRoaXMuaGFuZGxlRmlsZUNvbnRleHRNZW51KEplLHJlLE9lLmtleSl9CiAgICAgICAgICAgICAgICBAZHJhZ3N0YXJ0PSR7SmU9PnRoaXMuaGFuZGxlSXRlbURyYWdTdGFydChKZSxPZS5rZXksITEpfQogICAgICAgICAgICAgICAgQGRyYWdlbmQ9JHtKZT0+dGhpcy5oYW5kbGVJdGVtRHJhZ0VuZChKZSl9CiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgICAgICAgPHBhdGggZD0iJHt0aGlzLmdldEZpbGVJY29uKE9lLmtleSl9IiAvPgogICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibmFtZSI+JHtGYShPZS5rZXkpfTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYCl9CiAgICAgICAgPC9kaXY+CiAgICAgICAgJHt0aGlzLmRyYWdPdmVyQ29sdW1uSW5kZXg9PT1yZT93YAogICAgICAgICAgPGRpdiBjbGFzcz0iZHJhZy1oaW50Ij4KICAgICAgICAgICAgJHt0aGlzLmRyYWdnZWRJdGVtP3RoaXMuZHJhZ092ZXJGb2xkZXJQcmVmaXg/YE1vdmUgdG8gJHtGYSh0aGlzLmRyYWdPdmVyRm9sZGVyUHJlZml4KX1gOiJNb3ZlIGhlcmUiOnRoaXMuZHJhZ092ZXJGb2xkZXJQcmVmaXg/YERyb3AgdG8gdXBsb2FkIGludG8gJHtGYSh0aGlzLmRyYWdPdmVyRm9sZGVyUHJlZml4KX1gOiJEcm9wIHRvIHVwbG9hZCBoZXJlIn0KICAgICAgICAgIDwvZGl2PgogICAgICAgIGA6IiJ9CiAgICAgICAgJHt0aGlzLnVwbG9hZGluZz93YAogICAgICAgICAgPGRpdiBjbGFzcz0idXBsb2FkLW92ZXJsYXkiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ1cGxvYWQtdGV4dCI+VXBsb2FkaW5nLi4uPC9kaXY+CiAgICAgICAgICAgICR7dGhpcy51cGxvYWRQcm9ncmVzcz93YAogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InVwbG9hZC1wcm9ncmVzcyI+JHt0aGlzLnVwbG9hZFByb2dyZXNzLmN1cnJlbnR9IC8gJHt0aGlzLnVwbG9hZFByb2dyZXNzLnRvdGFsfSBmaWxlczwvZGl2PgogICAgICAgICAgICBgOiIifQogICAgICAgICAgPC9kaXY+CiAgICAgICAgYDoiIn0KICAgICAgPC9kaXY+CiAgICBgfXN0YXRpY3tBdChhLHQpfX07cmV0dXJuIE5yPWF9KSgpfSk7dmFyIEhzLHF0LEltYSxxaXQ9ZygoKT0+e3BlKCk7b3IoKTtwdCgpO0tYKCk7SHM9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LHF0PWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxJbWE9KCgpPT57bGV0IHM9W25lKCJkZWVzLXN0b3JhZ2Uta2V5cyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdLEgsaz1bXSxTPVtdLEksUD1bXSxSPVtdLEssVj1bXSxXPVtdLG1lLEI9W10sVT1bXSxoZSxGPVtdLGo9W10sdWUsbGU9W10sUT1bXSxpZSx0ZT1bXSxlZT1bXSxrZSxYPVtdLFo9W10seWUscT1bXSxBPVtdLHNlLG9lPVtdLGFlPVtdLFRlLFJlPVtdLEJlPVtdLEdlLERlPVtdLF9lPVtdLENlLHZlPVtdLGJlPVtdLEVlLGplPVtdLFdlPVtdLHN0LE1lPVtdLGdlPVtdLEllLGNlPVtdLGRlPVtdLExlLEtlPVtdLFllPVtdLG90LFV0PVtdLFp0PVtdLGphLGV0PVtdLGJ0PVtdLHlhLGVzPVtdLHJzPVtdLHBzLG5zPVtdLHRpPVtdO3ZhciBhaT1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1N0b3JhZ2VLZXlzIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IHplPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6T2JqZWN0fSldLHA9W0woe3R5cGU6U3RyaW5nfSldLGM9W0woe3R5cGU6U3RyaW5nfSldLHg9W0woe3R5cGU6TnVtYmVyfSldLHk9W1koKV0sTj1bWSgpXSxPPVtZKCldLEg9W1koKV0sST1bWSgpXSxLPVtZKCldLG1lPVtZKCldLGhlPVtZKCldLHVlPVtZKCldLGllPVtZKCldLGtlPVtZKCldLHllPVtZKCldLHNlPVtZKCldLFRlPVtZKCldLEdlPVtZKCldLENlPVtZKCldLEVlPVtZKCldLHN0PVtZKCldLEllPVtZKCldLExlPVtZKCldLG90PVtZKCldLGphPVtZKCldLHlhPVtZKCldLHBzPVtZKCldLEhzKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZGF0YVByb3ZpZGVyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHhlPT4iZGF0YVByb3ZpZGVyImluIHhlLCJoYXMiKSxnZXQ6aSh4ZT0+eGUuZGF0YVByb3ZpZGVyLCJnZXQiKSxzZXQ6aSgoeGUsTmUpPT57eGUuZGF0YVByb3ZpZGVyPU5lfSwic2V0Iil9LG1ldGFkYXRhOnplfSxvLGwpLEhzKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYnVja2V0TmFtZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh4ZT0+ImJ1Y2tldE5hbWUiaW4geGUsImhhcyIpLGdldDppKHhlPT54ZS5idWNrZXROYW1lLCJnZXQiKSxzZXQ6aSgoeGUsTmUpPT57eGUuYnVja2V0TmFtZT1OZX0sInNldCIpfSxtZXRhZGF0YTp6ZX0sZCx1KSxIcyh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImN1cnJlbnRQcmVmaXgiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoeGU9PiJjdXJyZW50UHJlZml4ImluIHhlLCJoYXMiKSxnZXQ6aSh4ZT0+eGUuY3VycmVudFByZWZpeCwiZ2V0Iiksc2V0OmkoKHhlLE5lKT0+e3hlLmN1cnJlbnRQcmVmaXg9TmV9LCJzZXQiKX0sbWV0YWRhdGE6emV9LGIsdiksSHModGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJyZWZyZXNoS2V5IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHhlPT4icmVmcmVzaEtleSJpbiB4ZSwiaGFzIiksZ2V0OmkoeGU9PnhlLnJlZnJlc2hLZXksImdldCIpLHNldDppKCh4ZSxOZSk9Pnt4ZS5yZWZyZXNoS2V5PU5lfSwic2V0Iil9LG1ldGFkYXRhOnplfSxtLGYpLEhzKHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYWxsS2V5cyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh4ZT0+ImFsbEtleXMiaW4geGUsImhhcyIpLGdldDppKHhlPT54ZS5hbGxLZXlzLCJnZXQiKSxzZXQ6aSgoeGUsTmUpPT57eGUuYWxsS2V5cz1OZX0sInNldCIpfSxtZXRhZGF0YTp6ZX0sTSx6KSxIcyh0aGlzLG51bGwsTix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InByZWZpeGVzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHhlPT4icHJlZml4ZXMiaW4geGUsImhhcyIpLGdldDppKHhlPT54ZS5wcmVmaXhlcywiZ2V0Iiksc2V0OmkoKHhlLE5lKT0+e3hlLnByZWZpeGVzPU5lfSwic2V0Iil9LG1ldGFkYXRhOnplfSxDLF8pLEhzKHRoaXMsbnVsbCxPLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibG9hZGluZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh4ZT0+ImxvYWRpbmciaW4geGUsImhhcyIpLGdldDppKHhlPT54ZS5sb2FkaW5nLCJnZXQiKSxzZXQ6aSgoeGUsTmUpPT57eGUubG9hZGluZz1OZX0sInNldCIpfSxtZXRhZGF0YTp6ZX0sJCxFKSxIcyh0aGlzLG51bGwsSCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlbGVjdGVkS2V5IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHhlPT4ic2VsZWN0ZWRLZXkiaW4geGUsImhhcyIpLGdldDppKHhlPT54ZS5zZWxlY3RlZEtleSwiZ2V0Iiksc2V0OmkoKHhlLE5lKT0+e3hlLnNlbGVjdGVkS2V5PU5lfSwic2V0Iil9LG1ldGFkYXRhOnplfSxrLFMpLEhzKHRoaXMsbnVsbCxJLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZmlsdGVyVGV4dCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh4ZT0+ImZpbHRlclRleHQiaW4geGUsImhhcyIpLGdldDppKHhlPT54ZS5maWx0ZXJUZXh0LCJnZXQiKSxzZXQ6aSgoeGUsTmUpPT57eGUuZmlsdGVyVGV4dD1OZX0sInNldCIpfSxtZXRhZGF0YTp6ZX0sUCxSKSxIcyh0aGlzLG51bGwsSyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dDcmVhdGVEaWFsb2ciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoeGU9PiJzaG93Q3JlYXRlRGlhbG9nImluIHhlLCJoYXMiKSxnZXQ6aSh4ZT0+eGUuc2hvd0NyZWF0ZURpYWxvZywiZ2V0Iiksc2V0OmkoKHhlLE5lKT0+e3hlLnNob3dDcmVhdGVEaWFsb2c9TmV9LCJzZXQiKX0sbWV0YWRhdGE6emV9LFYsVyksSHModGhpcyxudWxsLG1lLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY3JlYXRlRGlhbG9nVHlwZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh4ZT0+ImNyZWF0ZURpYWxvZ1R5cGUiaW4geGUsImhhcyIpLGdldDppKHhlPT54ZS5jcmVhdGVEaWFsb2dUeXBlLCJnZXQiKSxzZXQ6aSgoeGUsTmUpPT57eGUuY3JlYXRlRGlhbG9nVHlwZT1OZX0sInNldCIpfSxtZXRhZGF0YTp6ZX0sQixVKSxIcyh0aGlzLG51bGwsaGUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjcmVhdGVEaWFsb2dQcmVmaXgiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoeGU9PiJjcmVhdGVEaWFsb2dQcmVmaXgiaW4geGUsImhhcyIpLGdldDppKHhlPT54ZS5jcmVhdGVEaWFsb2dQcmVmaXgsImdldCIpLHNldDppKCh4ZSxOZSk9Pnt4ZS5jcmVhdGVEaWFsb2dQcmVmaXg9TmV9LCJzZXQiKX0sbWV0YWRhdGE6emV9LEYsaiksSHModGhpcyxudWxsLHVlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY3JlYXRlRGlhbG9nTmFtZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh4ZT0+ImNyZWF0ZURpYWxvZ05hbWUiaW4geGUsImhhcyIpLGdldDppKHhlPT54ZS5jcmVhdGVEaWFsb2dOYW1lLCJnZXQiKSxzZXQ6aSgoeGUsTmUpPT57eGUuY3JlYXRlRGlhbG9nTmFtZT1OZX0sInNldCIpfSxtZXRhZGF0YTp6ZX0sbGUsUSksSHModGhpcyxudWxsLGllLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2hvd01vdmVEaWFsb2ciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoeGU9PiJzaG93TW92ZURpYWxvZyJpbiB4ZSwiaGFzIiksZ2V0OmkoeGU9PnhlLnNob3dNb3ZlRGlhbG9nLCJnZXQiKSxzZXQ6aSgoeGUsTmUpPT57eGUuc2hvd01vdmVEaWFsb2c9TmV9LCJzZXQiKX0sbWV0YWRhdGE6emV9LHRlLGVlKSxIcyh0aGlzLG51bGwsa2Use2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtb3ZlU291cmNlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHhlPT4ibW92ZVNvdXJjZSJpbiB4ZSwiaGFzIiksZ2V0OmkoeGU9PnhlLm1vdmVTb3VyY2UsImdldCIpLHNldDppKCh4ZSxOZSk9Pnt4ZS5tb3ZlU291cmNlPU5lfSwic2V0Iil9LG1ldGFkYXRhOnplfSxYLFopLEhzKHRoaXMsbnVsbCx5ZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1vdmVEZXN0aW5hdGlvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh4ZT0+Im1vdmVEZXN0aW5hdGlvbiJpbiB4ZSwiaGFzIiksZ2V0OmkoeGU9PnhlLm1vdmVEZXN0aW5hdGlvbiwiZ2V0Iiksc2V0OmkoKHhlLE5lKT0+e3hlLm1vdmVEZXN0aW5hdGlvbj1OZX0sInNldCIpfSxtZXRhZGF0YTp6ZX0scSxBKSxIcyh0aGlzLG51bGwsc2Use2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtb3ZlSW5Qcm9ncmVzcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh4ZT0+Im1vdmVJblByb2dyZXNzImluIHhlLCJoYXMiKSxnZXQ6aSh4ZT0+eGUubW92ZUluUHJvZ3Jlc3MsImdldCIpLHNldDppKCh4ZSxOZSk9Pnt4ZS5tb3ZlSW5Qcm9ncmVzcz1OZX0sInNldCIpfSxtZXRhZGF0YTp6ZX0sb2UsYWUpLEhzKHRoaXMsbnVsbCxUZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1vdmVFcnJvciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh4ZT0+Im1vdmVFcnJvciJpbiB4ZSwiaGFzIiksZ2V0OmkoeGU9PnhlLm1vdmVFcnJvciwiZ2V0Iiksc2V0OmkoKHhlLE5lKT0+e3hlLm1vdmVFcnJvcj1OZX0sInNldCIpfSxtZXRhZGF0YTp6ZX0sUmUsQmUpLEhzKHRoaXMsbnVsbCxHZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dNb3ZlUGlja2VyRGlhbG9nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHhlPT4ic2hvd01vdmVQaWNrZXJEaWFsb2ciaW4geGUsImhhcyIpLGdldDppKHhlPT54ZS5zaG93TW92ZVBpY2tlckRpYWxvZywiZ2V0Iiksc2V0OmkoKHhlLE5lKT0+e3hlLnNob3dNb3ZlUGlja2VyRGlhbG9nPU5lfSwic2V0Iil9LG1ldGFkYXRhOnplfSxEZSxfZSksSHModGhpcyxudWxsLENlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibW92ZVBpY2tlclNvdXJjZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh4ZT0+Im1vdmVQaWNrZXJTb3VyY2UiaW4geGUsImhhcyIpLGdldDppKHhlPT54ZS5tb3ZlUGlja2VyU291cmNlLCJnZXQiKSxzZXQ6aSgoeGUsTmUpPT57eGUubW92ZVBpY2tlclNvdXJjZT1OZX0sInNldCIpfSxtZXRhZGF0YTp6ZX0sdmUsYmUpLEhzKHRoaXMsbnVsbCxFZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1vdmVQaWNrZXJDdXJyZW50UHJlZml4IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHhlPT4ibW92ZVBpY2tlckN1cnJlbnRQcmVmaXgiaW4geGUsImhhcyIpLGdldDppKHhlPT54ZS5tb3ZlUGlja2VyQ3VycmVudFByZWZpeCwiZ2V0Iiksc2V0OmkoKHhlLE5lKT0+e3hlLm1vdmVQaWNrZXJDdXJyZW50UHJlZml4PU5lfSwic2V0Iil9LG1ldGFkYXRhOnplfSxqZSxXZSksSHModGhpcyxudWxsLHN0LHtraW5kOiJhY2Nlc3NvciIsbmFtZToibW92ZVBpY2tlclByZWZpeGVzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHhlPT4ibW92ZVBpY2tlclByZWZpeGVzImluIHhlLCJoYXMiKSxnZXQ6aSh4ZT0+eGUubW92ZVBpY2tlclByZWZpeGVzLCJnZXQiKSxzZXQ6aSgoeGUsTmUpPT57eGUubW92ZVBpY2tlclByZWZpeGVzPU5lfSwic2V0Iil9LG1ldGFkYXRhOnplfSxNZSxnZSksSHModGhpcyxudWxsLEllLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibW92ZVBpY2tlckxvYWRpbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoeGU9PiJtb3ZlUGlja2VyTG9hZGluZyJpbiB4ZSwiaGFzIiksZ2V0OmkoeGU9PnhlLm1vdmVQaWNrZXJMb2FkaW5nLCJnZXQiKSxzZXQ6aSgoeGUsTmUpPT57eGUubW92ZVBpY2tlckxvYWRpbmc9TmV9LCJzZXQiKX0sbWV0YWRhdGE6emV9LGNlLGRlKSxIcyh0aGlzLG51bGwsTGUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93UmVuYW1lRGlhbG9nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHhlPT4ic2hvd1JlbmFtZURpYWxvZyJpbiB4ZSwiaGFzIiksZ2V0OmkoeGU9PnhlLnNob3dSZW5hbWVEaWFsb2csImdldCIpLHNldDppKCh4ZSxOZSk9Pnt4ZS5zaG93UmVuYW1lRGlhbG9nPU5lfSwic2V0Iil9LG1ldGFkYXRhOnplfSxLZSxZZSksSHModGhpcyxudWxsLG90LHtraW5kOiJhY2Nlc3NvciIsbmFtZToicmVuYW1lU291cmNlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHhlPT4icmVuYW1lU291cmNlImluIHhlLCJoYXMiKSxnZXQ6aSh4ZT0+eGUucmVuYW1lU291cmNlLCJnZXQiKSxzZXQ6aSgoeGUsTmUpPT57eGUucmVuYW1lU291cmNlPU5lfSwic2V0Iil9LG1ldGFkYXRhOnplfSxVdCxadCksSHModGhpcyxudWxsLGphLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicmVuYW1lTmFtZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh4ZT0+InJlbmFtZU5hbWUiaW4geGUsImhhcyIpLGdldDppKHhlPT54ZS5yZW5hbWVOYW1lLCJnZXQiKSxzZXQ6aSgoeGUsTmUpPT57eGUucmVuYW1lTmFtZT1OZX0sInNldCIpfSxtZXRhZGF0YTp6ZX0sZXQsYnQpLEhzKHRoaXMsbnVsbCx5YSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InJlbmFtZUluUHJvZ3Jlc3MiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoeGU9PiJyZW5hbWVJblByb2dyZXNzImluIHhlLCJoYXMiKSxnZXQ6aSh4ZT0+eGUucmVuYW1lSW5Qcm9ncmVzcywiZ2V0Iiksc2V0OmkoKHhlLE5lKT0+e3hlLnJlbmFtZUluUHJvZ3Jlc3M9TmV9LCJzZXQiKX0sbWV0YWRhdGE6emV9LGVzLHJzKSxIcyh0aGlzLG51bGwscHMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJyZW5hbWVFcnJvciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh4ZT0+InJlbmFtZUVycm9yImluIHhlLCJoYXMiKSxnZXQ6aSh4ZT0+eGUucmVuYW1lRXJyb3IsImdldCIpLHNldDppKCh4ZSxOZSk9Pnt4ZS5yZW5hbWVFcnJvcj1OZX0sInNldCIpfSxtZXRhZGF0YTp6ZX0sbnMsdGkpLEhzKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOnplfSxudWxsLHQpLGFpPWE9ZS52YWx1ZSx6ZSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTp6ZX0pfSNlPXF0KHRoaXMsbyxudWxsKTtnZXQgZGF0YVByb3ZpZGVyKCl7cmV0dXJuIHRoaXMuI2V9c2V0IGRhdGFQcm92aWRlcih6ZSl7dGhpcy4jZT16ZX0jdD0ocXQodGhpcyxsKSxxdCh0aGlzLGQsIiIpKTtnZXQgYnVja2V0TmFtZSgpe3JldHVybiB0aGlzLiN0fXNldCBidWNrZXROYW1lKHplKXt0aGlzLiN0PXplfSNhPShxdCh0aGlzLHUpLHF0KHRoaXMsYiwiIikpO2dldCBjdXJyZW50UHJlZml4KCl7cmV0dXJuIHRoaXMuI2F9c2V0IGN1cnJlbnRQcmVmaXgoemUpe3RoaXMuI2E9emV9I3M9KHF0KHRoaXMsdikscXQodGhpcyxtLDApKTtnZXQgcmVmcmVzaEtleSgpe3JldHVybiB0aGlzLiNzfXNldCByZWZyZXNoS2V5KHplKXt0aGlzLiNzPXplfSNpPShxdCh0aGlzLGYpLHF0KHRoaXMsTSxbXSkpO2dldCBhbGxLZXlzKCl7cmV0dXJuIHRoaXMuI2l9c2V0IGFsbEtleXMoemUpe3RoaXMuI2k9emV9I3I9KHF0KHRoaXMseikscXQodGhpcyxDLFtdKSk7Z2V0IHByZWZpeGVzKCl7cmV0dXJuIHRoaXMuI3J9c2V0IHByZWZpeGVzKHplKXt0aGlzLiNyPXplfSNvPShxdCh0aGlzLF8pLHF0KHRoaXMsJCwhMSkpO2dldCBsb2FkaW5nKCl7cmV0dXJuIHRoaXMuI299c2V0IGxvYWRpbmcoemUpe3RoaXMuI289emV9I249KHF0KHRoaXMsRSkscXQodGhpcyxrLCIiKSk7Z2V0IHNlbGVjdGVkS2V5KCl7cmV0dXJuIHRoaXMuI259c2V0IHNlbGVjdGVkS2V5KHplKXt0aGlzLiNuPXplfSNsPShxdCh0aGlzLFMpLHF0KHRoaXMsUCwiIikpO2dldCBmaWx0ZXJUZXh0KCl7cmV0dXJuIHRoaXMuI2x9c2V0IGZpbHRlclRleHQoemUpe3RoaXMuI2w9emV9I2M9KHF0KHRoaXMsUikscXQodGhpcyxWLCExKSk7Z2V0IHNob3dDcmVhdGVEaWFsb2coKXtyZXR1cm4gdGhpcy4jY31zZXQgc2hvd0NyZWF0ZURpYWxvZyh6ZSl7dGhpcy4jYz16ZX0jZD0ocXQodGhpcyxXKSxxdCh0aGlzLEIsImZvbGRlciIpKTtnZXQgY3JlYXRlRGlhbG9nVHlwZSgpe3JldHVybiB0aGlzLiNkfXNldCBjcmVhdGVEaWFsb2dUeXBlKHplKXt0aGlzLiNkPXplfSN1PShxdCh0aGlzLFUpLHF0KHRoaXMsRiwiIikpO2dldCBjcmVhdGVEaWFsb2dQcmVmaXgoKXtyZXR1cm4gdGhpcy4jdX1zZXQgY3JlYXRlRGlhbG9nUHJlZml4KHplKXt0aGlzLiN1PXplfSNwPShxdCh0aGlzLGopLHF0KHRoaXMsbGUsIiIpKTtnZXQgY3JlYXRlRGlhbG9nTmFtZSgpe3JldHVybiB0aGlzLiNwfXNldCBjcmVhdGVEaWFsb2dOYW1lKHplKXt0aGlzLiNwPXplfSNoPShxdCh0aGlzLFEpLHF0KHRoaXMsdGUsITEpKTtnZXQgc2hvd01vdmVEaWFsb2coKXtyZXR1cm4gdGhpcy4jaH1zZXQgc2hvd01vdmVEaWFsb2coemUpe3RoaXMuI2g9emV9I2Y9KHF0KHRoaXMsZWUpLHF0KHRoaXMsWCxudWxsKSk7Z2V0IG1vdmVTb3VyY2UoKXtyZXR1cm4gdGhpcy4jZn1zZXQgbW92ZVNvdXJjZSh6ZSl7dGhpcy4jZj16ZX0jbT0ocXQodGhpcyxaKSxxdCh0aGlzLHEsIiIpKTtnZXQgbW92ZURlc3RpbmF0aW9uKCl7cmV0dXJuIHRoaXMuI219c2V0IG1vdmVEZXN0aW5hdGlvbih6ZSl7dGhpcy4jbT16ZX0jZz0ocXQodGhpcyxBKSxxdCh0aGlzLG9lLCExKSk7Z2V0IG1vdmVJblByb2dyZXNzKCl7cmV0dXJuIHRoaXMuI2d9c2V0IG1vdmVJblByb2dyZXNzKHplKXt0aGlzLiNnPXplfSNiPShxdCh0aGlzLGFlKSxxdCh0aGlzLFJlLG51bGwpKTtnZXQgbW92ZUVycm9yKCl7cmV0dXJuIHRoaXMuI2J9c2V0IG1vdmVFcnJvcih6ZSl7dGhpcy4jYj16ZX0jdj0ocXQodGhpcyxCZSkscXQodGhpcyxEZSwhMSkpO2dldCBzaG93TW92ZVBpY2tlckRpYWxvZygpe3JldHVybiB0aGlzLiN2fXNldCBzaG93TW92ZVBpY2tlckRpYWxvZyh6ZSl7dGhpcy4jdj16ZX0jeD0ocXQodGhpcyxfZSkscXQodGhpcyx2ZSxudWxsKSk7Z2V0IG1vdmVQaWNrZXJTb3VyY2UoKXtyZXR1cm4gdGhpcy4jeH1zZXQgbW92ZVBpY2tlclNvdXJjZSh6ZSl7dGhpcy4jeD16ZX0jeT0ocXQodGhpcyxiZSkscXQodGhpcyxqZSwiIikpO2dldCBtb3ZlUGlja2VyQ3VycmVudFByZWZpeCgpe3JldHVybiB0aGlzLiN5fXNldCBtb3ZlUGlja2VyQ3VycmVudFByZWZpeCh6ZSl7dGhpcy4jeT16ZX0jdz0ocXQodGhpcyxXZSkscXQodGhpcyxNZSxbXSkpO2dldCBtb3ZlUGlja2VyUHJlZml4ZXMoKXtyZXR1cm4gdGhpcy4jd31zZXQgbW92ZVBpY2tlclByZWZpeGVzKHplKXt0aGlzLiN3PXplfSNrPShxdCh0aGlzLGdlKSxxdCh0aGlzLGNlLCExKSk7Z2V0IG1vdmVQaWNrZXJMb2FkaW5nKCl7cmV0dXJuIHRoaXMuI2t9c2V0IG1vdmVQaWNrZXJMb2FkaW5nKHplKXt0aGlzLiNrPXplfSNTPShxdCh0aGlzLGRlKSxxdCh0aGlzLEtlLCExKSk7Z2V0IHNob3dSZW5hbWVEaWFsb2coKXtyZXR1cm4gdGhpcy4jU31zZXQgc2hvd1JlbmFtZURpYWxvZyh6ZSl7dGhpcy4jUz16ZX0jXz0ocXQodGhpcyxZZSkscXQodGhpcyxVdCxudWxsKSk7Z2V0IHJlbmFtZVNvdXJjZSgpe3JldHVybiB0aGlzLiNffXNldCByZW5hbWVTb3VyY2UoemUpe3RoaXMuI189emV9I009KHF0KHRoaXMsWnQpLHF0KHRoaXMsZXQsIiIpKTtnZXQgcmVuYW1lTmFtZSgpe3JldHVybiB0aGlzLiNNfXNldCByZW5hbWVOYW1lKHplKXt0aGlzLiNNPXplfSN6PShxdCh0aGlzLGJ0KSxxdCh0aGlzLGVzLCExKSk7Z2V0IHJlbmFtZUluUHJvZ3Jlc3MoKXtyZXR1cm4gdGhpcy4jen1zZXQgcmVuYW1lSW5Qcm9ncmVzcyh6ZSl7dGhpcy4jej16ZX0jQz0ocXQodGhpcyxycykscXQodGhpcyxucyxudWxsKSk7Z2V0IHJlbmFtZUVycm9yKCl7cmV0dXJuIHRoaXMuI0N9c2V0IHJlbmFtZUVycm9yKHplKXt0aGlzLiNDPXplfXN0YXRpYyBzdHlsZXM9W2guZGVmYXVsdFN0eWxlcyxIZSxKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC5rZXlzLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgLmZpbHRlci1iYXIgewogICAgICAgIHBhZGRpbmc6IDEycHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzMzMyIpfTsKICAgICAgfQoKICAgICAgLmZpbHRlci1pbnB1dCB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wMykiLCJyZ2JhKDAsIDAsIDAsIDAuMykiKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNkNGQ0ZDgiLCIjNDQ0Iil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmZmIil9OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgfQoKICAgICAgLmZpbHRlci1pbnB1dDpmb2N1cyB7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjYTFhMWFhIiwiIzQwNDA0MCIpfTsKICAgICAgfQoKICAgICAgLmZpbHRlci1pbnB1dDo6cGxhY2Vob2xkZXIgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2ExYTFhYSIsIiM2NjYiKX07CiAgICAgIH0KCiAgICAgIC5rZXlzLWxpc3QgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgfQoKICAgICAgdGFibGUgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7CiAgICAgIH0KCiAgICAgIHRoZWFkIHsKICAgICAgICBwb3NpdGlvbjogc3RpY2t5OwogICAgICAgIHRvcDogMDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZhZmFmYSIsIiMxYTFhMWEiKX07CiAgICAgICAgei1pbmRleDogMTsKICAgICAgfQoKICAgICAgdGggewogICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgICAgcGFkZGluZzogMTBweCAxMnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiM2NjYiKX07CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMzMzIil9OwogICAgICB9CgogICAgICB0ZCB7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMyYTJhM2UiKX07CiAgICAgIH0KCiAgICAgIHRyOmhvdmVyIHRkIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjAyKSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMykiKX07CiAgICAgIH0KCiAgICAgIHRyLnNlbGVjdGVkIHRkIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSg1OSwgMTMwLCAyNDYsIDAuMDgpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSIpfTsKICAgICAgfQoKICAgICAgLmtleS1jZWxsIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICB9CgogICAgICAua2V5LWljb24gewogICAgICAgIHdpZHRoOiAxNnB4OwogICAgICAgIGhlaWdodDogMTZweDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQoKICAgICAgLmZvbGRlci1pY29uIHsKICAgICAgICBjb2xvcjogI2ZiYmYyNDsKICAgICAgfQoKICAgICAgLmtleS1uYW1lIHsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgIH0KCiAgICAgIC5zaXplLWNlbGwgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiM4ODgiKX07CiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtczsKICAgICAgfQoKICAgICAgLmVtcHR5LXN0YXRlIHsKICAgICAgICBwYWRkaW5nOiAzMnB4OwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNhMWExYWEiLCIjNjY2Iil9OwogICAgICB9CgogICAgICAuZGlhbG9nLW92ZXJsYXkgewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjcpOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICB6LWluZGV4OiAxMDAwOwogICAgICB9CgogICAgICAuZGlhbG9nIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMxZTFlMWUiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgIG1pbi13aWR0aDogNDAwcHg7CiAgICAgICAgYm94LXNoYWRvdzogMCAyMHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjUpOwogICAgICB9CgogICAgICAuZGlhbG9nLXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmZmYiKX07CiAgICAgIH0KCiAgICAgIC5kaWFsb2ctbG9jYXRpb24gewogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjODg4Iil9OwogICAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7CiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgfQoKICAgICAgLmRpYWxvZy1pbnB1dCB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgcGFkZGluZzogMTBweCAxMnB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzE0MTQxNCIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2Q0ZDRkOCIsIiMzMzMiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmZmYiKX07CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAuZGlhbG9nLWlucHV0OmZvY3VzIHsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiNhMWExYWEiLCIjZTBlMGUwIil9OwogICAgICB9CgogICAgICAuZGlhbG9nLWhpbnQgewogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNhMWExYWEiLCIjNjY2Iil9OwogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgIH0KCiAgICAgIC5kaWFsb2ctYWN0aW9ucyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBnYXA6IDEycHg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgfQoKICAgICAgLmRpYWxvZy1idG4gewogICAgICAgIHBhZGRpbmc6IDhweCAxNnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzOwogICAgICB9CgogICAgICAuZGlhbG9nLWJ0bi1jYW5jZWwgewogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZDRkNGQ4IiwiIzQ0NCIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYWFhIil9OwogICAgICB9CgogICAgICAuZGlhbG9nLWJ0bi1jYW5jZWw6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMDMpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmZmIil9OwogICAgICB9CgogICAgICAuZGlhbG9nLWJ0bi1jcmVhdGUgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzQwNDA0MCIpfTsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZmZiIpfTsKICAgICAgfQoKICAgICAgLmRpYWxvZy1idG4tY3JlYXRlOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Q0ZDRkOCIsIiM1MDUwNTAiKX07CiAgICAgIH0KCiAgICAgIC5kaWFsb2ctYnRuLWNyZWF0ZTpkaXNhYmxlZCB7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAgIH0KCiAgICAgIC8qIE1vdmUgZGlhbG9nIHN0eWxlcyAqLwogICAgICAubW92ZS1zdW1tYXJ5IHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjAzKSIsInJnYmEoMCwgMCwgMCwgMC4yKSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICB9CgogICAgICAubW92ZS1pdGVtIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGdhcDogOHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgfQoKICAgICAgLm1vdmUtaXRlbTpsYXN0LWNoaWxkIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICB9CgogICAgICAubW92ZS1sYWJlbCB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiIzg4OCIpfTsKICAgICAgICBtaW4td2lkdGg6IDQwcHg7CiAgICAgIH0KCiAgICAgIC5tb3ZlLXBhdGggewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzNmM2Y0NiIsIiNlMGUwZTAiKX07CiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsOwogICAgICB9CgogICAgICAubW92ZS1lcnJvciB7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyMzksIDY4LCA2OCwgMC4xNSk7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyMzksIDY4LCA2OCwgMC4zKTsKICAgICAgICBjb2xvcjogI2Y4NzE3MTsKICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICB9CgogICAgICAvKiBNb3ZlIHBpY2tlciBkaWFsb2cgc3R5bGVzICovCiAgICAgIC5tb3ZlLXBpY2tlci1kaWFsb2cgewogICAgICAgIG1pbi13aWR0aDogNDUwcHg7CiAgICAgICAgbWF4LWhlaWdodDogNTAwcHg7CiAgICAgIH0KCiAgICAgIC5waWNrZXItYnJlYWRjcnVtYiB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNHB4OwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMDMpIiwicmdiYSgwLCAwLCAwLCAwLjIpIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwogICAgICB9CgogICAgICAucGlja2VyLWNydW1iIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjODg4Iil9OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CgogICAgICAucGlja2VyLWNydW1iOmhvdmVyIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmZmIil9OwogICAgICB9CgogICAgICAucGlja2VyLXNlcGFyYXRvciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZDRkNGQ4IiwiIzU1NSIpfTsKICAgICAgfQoKICAgICAgLnBpY2tlci1saXN0IHsKICAgICAgICBtYXgtaGVpZ2h0OiAyODBweDsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzMzMyIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgICBtaW4taGVpZ2h0OiAxMDBweDsKICAgICAgfQoKICAgICAgLnBpY2tlci1pdGVtIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGNvbG9yOiAjZmJiZjI0OwogICAgICB9CgogICAgICAucGlja2VyLWl0ZW06aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMDMpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KSIpfTsKICAgICAgfQoKICAgICAgLnBpY2tlci1pdGVtIC5pY29uIHsKICAgICAgICB3aWR0aDogMTZweDsKICAgICAgICBoZWlnaHQ6IDE2cHg7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC5waWNrZXItaXRlbSAubmFtZSB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgIH0KCiAgICAgIC5waWNrZXItZW1wdHkgewogICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2ExYTFhYSIsIiM2NjYiKX07CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICB9CiAgICBgXTthc3luYyBjb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksYXdhaXQgdGhpcy5sb2FkT2JqZWN0cygpfXVwZGF0ZWQoemUpeyh6ZS5oYXMoImJ1Y2tldE5hbWUiKXx8emUuaGFzKCJjdXJyZW50UHJlZml4Iil8fHplLmhhcygicmVmcmVzaEtleSIpKSYmdGhpcy5sb2FkT2JqZWN0cygpfWFzeW5jIGxvYWRPYmplY3RzKCl7aWYodGhpcy5kYXRhUHJvdmlkZXIpe3RoaXMubG9hZGluZz0hMDt0cnl7bGV0IHplPWF3YWl0IHRoaXMuZGF0YVByb3ZpZGVyLmxpc3RPYmplY3RzKHRoaXMuYnVja2V0TmFtZSx0aGlzLmN1cnJlbnRQcmVmaXgsIi8iKTt0aGlzLmFsbEtleXM9emUub2JqZWN0cyx0aGlzLnByZWZpeGVzPXplLnByZWZpeGVzfWNhdGNoKHplKXtjb25zb2xlLmVycm9yKCJFcnJvciBsb2FkaW5nIG9iamVjdHM6Iix6ZSksdGhpcy5hbGxLZXlzPVtdLHRoaXMucHJlZml4ZXM9W119dGhpcy5sb2FkaW5nPSExfX1oYW5kbGVGaWx0ZXJJbnB1dCh6ZSl7dGhpcy5maWx0ZXJUZXh0PXplLnRhcmdldC52YWx1ZX1zZWxlY3RLZXkoemUseGUpe3RoaXMuc2VsZWN0ZWRLZXk9emUseGU/dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgibmF2aWdhdGUiLHtkZXRhaWw6e3ByZWZpeDp6ZX0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKTp0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJrZXktc2VsZWN0ZWQiLHtkZXRhaWw6e2tleTp6ZX0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1nZXQgZmlsdGVyZWRJdGVtcygpe2xldCB6ZT10aGlzLmZpbHRlclRleHQudG9Mb3dlckNhc2UoKSx4ZT10aGlzLnByZWZpeGVzLmZpbHRlcih4dD0+IXplfHxGYSh4dCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh6ZSkpLm1hcCh4dD0+KHtrZXk6eHQsaXNGb2xkZXI6ITAsc2l6ZTp2b2lkIDB9KSksTmU9dGhpcy5hbGxLZXlzLmZpbHRlcih4dD0+IXplfHxGYSh4dC5rZXkpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoemUpKS5tYXAoeHQ9Pih7a2V5Onh0LmtleSxpc0ZvbGRlcjohMSxzaXplOnh0LnNpemV9KSk7cmV0dXJuWy4uLnhlLC4uLk5lXX1oYW5kbGVJdGVtQ29udGV4dE1lbnUoemUseGUsTmUpe3RoaXMuZGF0YVByb3ZpZGVyJiYoemUucHJldmVudERlZmF1bHQoKSxOZT9rYS5vcGVuQ29udGV4dE1lbnVXaXRoT3B0aW9ucyh6ZSxbe25hbWU6Ik9wZW4iLGljb25OYW1lOiJsdWNpZGU6Zm9sZGVyT3BlbiIsYWN0aW9uOmkoYXN5bmMoKT0+e3RoaXMuc2VsZWN0S2V5KHhlLCEwKX0sImFjdGlvbiIpfSx7bmFtZToiQ29weSBQYXRoIixpY29uTmFtZToibHVjaWRlOmNvcHkiLGFjdGlvbjppKGFzeW5jKCk9Pnthd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh4ZSl9LCJhY3Rpb24iKX0se25hbWU6IlJlbmFtZSIsaWNvbk5hbWU6Imx1Y2lkZTpwZW5jaWwiLGFjdGlvbjppKGFzeW5jKCk9PnRoaXMub3BlblJlbmFtZURpYWxvZyh4ZSwhMCksImFjdGlvbiIpfSx7ZGl2aWRlcjohMH0se25hbWU6Ik1vdmUgdG8uLi4iLGljb25OYW1lOiJsdWNpZGU6Zm9sZGVySW5wdXQiLGFjdGlvbjppKGFzeW5jKCk9PnRoaXMub3Blbk1vdmVQaWNrZXJEaWFsb2coeGUsITApLCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJOZXcgRm9sZGVyIEluc2lkZSIsaWNvbk5hbWU6Imx1Y2lkZTpmb2xkZXJQbHVzIixhY3Rpb246aShhc3luYygpPT50aGlzLm9wZW5DcmVhdGVEaWFsb2coImZvbGRlciIseGUpLCJhY3Rpb24iKX0se25hbWU6Ik5ldyBGaWxlIEluc2lkZSIsaWNvbk5hbWU6Imx1Y2lkZTpmaWxlUGx1cyIsYWN0aW9uOmkoYXN5bmMoKT0+dGhpcy5vcGVuQ3JlYXRlRGlhbG9nKCJmaWxlIix4ZSksImFjdGlvbiIpfSx7ZGl2aWRlcjohMH0se25hbWU6IkRlbGV0ZSBGb2xkZXIiLGljb25OYW1lOiJsdWNpZGU6dHJhc2gyIixhY3Rpb246aShhc3luYygpPT57Y29uZmlybShgRGVsZXRlIGZvbGRlciAiJHtGYSh4ZSl9IiBhbmQgYWxsIGl0cyBjb250ZW50cz9gKSYmYXdhaXQgdGhpcy5kYXRhUHJvdmlkZXIuZGVsZXRlUHJlZml4KHRoaXMuYnVja2V0TmFtZSx4ZSkmJmF3YWl0IHRoaXMubG9hZE9iamVjdHMoKX0sImFjdGlvbiIpfV0pOmthLm9wZW5Db250ZXh0TWVudVdpdGhPcHRpb25zKHplLFt7bmFtZToiUHJldmlldyIsaWNvbk5hbWU6Imx1Y2lkZTpleWUiLGFjdGlvbjppKGFzeW5jKCk9Pnt0aGlzLnNlbGVjdEtleSh4ZSwhMSl9LCJhY3Rpb24iKX0se25hbWU6IkRvd25sb2FkIixpY29uTmFtZToibHVjaWRlOmRvd25sb2FkIixhY3Rpb246aShhc3luYygpPT57bGV0IHh0PWF3YWl0IHRoaXMuZGF0YVByb3ZpZGVyLmdldE9iamVjdFVybCh0aGlzLmJ1Y2tldE5hbWUseGUpLE1hPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtNYS5ocmVmPXh0LE1hLmRvd25sb2FkPUZhKHhlKSxNYS5jbGljaygpfSwiYWN0aW9uIil9LHtuYW1lOiJDb3B5IFBhdGgiLGljb25OYW1lOiJsdWNpZGU6Y29weSIsYWN0aW9uOmkoYXN5bmMoKT0+e2F3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHhlKX0sImFjdGlvbiIpfSx7bmFtZToiUmVuYW1lIixpY29uTmFtZToibHVjaWRlOnBlbmNpbCIsYWN0aW9uOmkoYXN5bmMoKT0+dGhpcy5vcGVuUmVuYW1lRGlhbG9nKHhlLCExKSwiYWN0aW9uIil9LHtkaXZpZGVyOiEwfSx7bmFtZToiTW92ZSB0by4uLiIsaWNvbk5hbWU6Imx1Y2lkZTpmb2xkZXJJbnB1dCIsYWN0aW9uOmkoYXN5bmMoKT0+dGhpcy5vcGVuTW92ZVBpY2tlckRpYWxvZyh4ZSwhMSksImFjdGlvbiIpfSx7ZGl2aWRlcjohMH0se25hbWU6IkRlbGV0ZSIsaWNvbk5hbWU6Imx1Y2lkZTp0cmFzaDIiLGFjdGlvbjppKGFzeW5jKCk9Pntjb25maXJtKGBEZWxldGUgZmlsZSAiJHtGYSh4ZSl9Ij9gKSYmYXdhaXQgdGhpcy5kYXRhUHJvdmlkZXIuZGVsZXRlT2JqZWN0KHRoaXMuYnVja2V0TmFtZSx4ZSkmJmF3YWl0IHRoaXMubG9hZE9iamVjdHMoKX0sImFjdGlvbiIpfV0pKX1oYW5kbGVFbXB0eVNwYWNlQ29udGV4dE1lbnUoemUpe3plLnRhcmdldC5jbG9zZXN0KCJ0ciIpfHwoemUucHJldmVudERlZmF1bHQoKSxrYS5vcGVuQ29udGV4dE1lbnVXaXRoT3B0aW9ucyh6ZSxbe25hbWU6Ik5ldyBGb2xkZXIiLGljb25OYW1lOiJsdWNpZGU6Zm9sZGVyUGx1cyIsYWN0aW9uOmkoYXN5bmMoKT0+dGhpcy5vcGVuQ3JlYXRlRGlhbG9nKCJmb2xkZXIiLHRoaXMuY3VycmVudFByZWZpeCksImFjdGlvbiIpfSx7bmFtZToiTmV3IEZpbGUiLGljb25OYW1lOiJsdWNpZGU6ZmlsZVBsdXMiLGFjdGlvbjppKGFzeW5jKCk9PnRoaXMub3BlbkNyZWF0ZURpYWxvZygiZmlsZSIsdGhpcy5jdXJyZW50UHJlZml4KSwiYWN0aW9uIil9XSkpfW9wZW5DcmVhdGVEaWFsb2coemUseGUpe3RoaXMuY3JlYXRlRGlhbG9nVHlwZT16ZSx0aGlzLmNyZWF0ZURpYWxvZ1ByZWZpeD14ZSx0aGlzLmNyZWF0ZURpYWxvZ05hbWU9IiIsdGhpcy5zaG93Q3JlYXRlRGlhbG9nPSEwfWFzeW5jIGhhbmRsZUNyZWF0ZSgpe2lmKCF0aGlzLmNyZWF0ZURpYWxvZ05hbWUudHJpbSgpfHwhdGhpcy5kYXRhUHJvdmlkZXIpcmV0dXJuO2xldCB6ZT10aGlzLmNyZWF0ZURpYWxvZ05hbWUudHJpbSgpLHhlO3RoaXMuY3JlYXRlRGlhbG9nVHlwZT09PSJmb2xkZXIiP3hlPXRoaXMuY3JlYXRlRGlhbG9nUHJlZml4K3plKyIvLmtlZXAiOnhlPXRoaXMuY3JlYXRlRGlhbG9nUHJlZml4K3plO2xldCBOZT16ZS5zcGxpdCgiLiIpLnBvcCgpPy50b0xvd2VyQ2FzZSgpfHwiIix4dD10aGlzLmNyZWF0ZURpYWxvZ1R5cGU9PT0iZmlsZSI/V2goTmUpOiJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLE1hPXRoaXMuY3JlYXRlRGlhbG9nVHlwZT09PSJmaWxlIj9leChOZSk6IiI7YXdhaXQgdGhpcy5kYXRhUHJvdmlkZXIucHV0T2JqZWN0KHRoaXMuYnVja2V0TmFtZSx4ZSxidG9hKE1hKSx4dCkmJih0aGlzLnNob3dDcmVhdGVEaWFsb2c9ITEsYXdhaXQgdGhpcy5sb2FkT2JqZWN0cygpKX1yZW5kZXJDcmVhdGVEaWFsb2coKXtpZighdGhpcy5zaG93Q3JlYXRlRGlhbG9nKXJldHVybiIiO2xldCB6ZT10aGlzLmNyZWF0ZURpYWxvZ1R5cGU9PT0iZm9sZGVyIix4ZT16ZT8iQ3JlYXRlIE5ldyBGb2xkZXIiOiJDcmVhdGUgTmV3IEZpbGUiLE5lPXplPyJmb2xkZXItbmFtZSBvciBwYXRoL3RvL2ZvbGRlciI6ImZpbGVuYW1lLnR4dCBvciBwYXRoL3RvL2ZpbGUudHh0IjtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iZGlhbG9nLW92ZXJsYXkiIEBjbGljaz0keygpPT50aGlzLnNob3dDcmVhdGVEaWFsb2c9ITF9PgogICAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZyIgQGNsaWNrPSR7eHQ9Pnh0LnN0b3BQcm9wYWdhdGlvbigpfT4KICAgICAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZy10aXRsZSI+JHt4ZX08L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZy1sb2NhdGlvbiI+CiAgICAgICAgICAgIExvY2F0aW9uOiAke3RoaXMuYnVja2V0TmFtZX0vJHt0aGlzLmNyZWF0ZURpYWxvZ1ByZWZpeH0KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGlucHV0CiAgICAgICAgICAgIHR5cGU9InRleHQiCiAgICAgICAgICAgIGNsYXNzPSJkaWFsb2ctaW5wdXQiCiAgICAgICAgICAgIHBsYWNlaG9sZGVyPSR7TmV9CiAgICAgICAgICAgIC52YWx1ZT0ke3RoaXMuY3JlYXRlRGlhbG9nTmFtZX0KICAgICAgICAgICAgQGlucHV0PSR7eHQ9PnRoaXMuY3JlYXRlRGlhbG9nTmFtZT14dC50YXJnZXQudmFsdWV9CiAgICAgICAgICAgIEBrZXlkb3duPSR7eHQ9Pnh0LmtleT09PSJFbnRlciImJnRoaXMuaGFuZGxlQ3JlYXRlKCl9CiAgICAgICAgICAvPgogICAgICAgICAgPGRpdiBjbGFzcz0iZGlhbG9nLWhpbnQiPgogICAgICAgICAgICBVc2UgIi8iIHRvIGNyZWF0ZSBuZXN0ZWQgJHt6ZT8iZm9sZGVycyI6InBhdGgifSAoZS5nLiwgJHt6ZT8icGFyZW50L2NoaWxkIjoiZm9sZGVyL2ZpbGUudHh0In0pCiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZy1hY3Rpb25zIj4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZGlhbG9nLWJ0biBkaWFsb2ctYnRuLWNhbmNlbCIgQGNsaWNrPSR7KCk9PnRoaXMuc2hvd0NyZWF0ZURpYWxvZz0hMX0+CiAgICAgICAgICAgICAgQ2FuY2VsCiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgICAgY2xhc3M9ImRpYWxvZy1idG4gZGlhbG9nLWJ0bi1jcmVhdGUiCiAgICAgICAgICAgICAgP2Rpc2FibGVkPSR7IXRoaXMuY3JlYXRlRGlhbG9nTmFtZS50cmltKCl9CiAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlQ3JlYXRlKCl9CiAgICAgICAgICAgID4KICAgICAgICAgICAgICBDcmVhdGUKICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfWFzeW5jIG9wZW5Nb3ZlUGlja2VyRGlhbG9nKHplLHhlKXt0aGlzLm1vdmVQaWNrZXJTb3VyY2U9e2tleTp6ZSxpc0ZvbGRlcjp4ZX0sdGhpcy5tb3ZlUGlja2VyQ3VycmVudFByZWZpeD0iIix0aGlzLnNob3dNb3ZlUGlja2VyRGlhbG9nPSEwLGF3YWl0IHRoaXMubG9hZE1vdmVQaWNrZXJQcmVmaXhlcygiIil9YXN5bmMgbmF2aWdhdGVNb3ZlUGlja2VyKHplKXt0aGlzLm1vdmVQaWNrZXJDdXJyZW50UHJlZml4PXplLGF3YWl0IHRoaXMubG9hZE1vdmVQaWNrZXJQcmVmaXhlcyh6ZSl9YXN5bmMgbG9hZE1vdmVQaWNrZXJQcmVmaXhlcyh6ZSl7aWYodGhpcy5kYXRhUHJvdmlkZXIpe3RoaXMubW92ZVBpY2tlckxvYWRpbmc9ITA7dHJ5e2xldCB4ZT1hd2FpdCB0aGlzLmRhdGFQcm92aWRlci5saXN0T2JqZWN0cyh0aGlzLmJ1Y2tldE5hbWUsemUsIi8iKTt0aGlzLm1vdmVQaWNrZXJQcmVmaXhlcz14ZS5wcmVmaXhlc31jYXRjaHt0aGlzLm1vdmVQaWNrZXJQcmVmaXhlcz1bXX10aGlzLm1vdmVQaWNrZXJMb2FkaW5nPSExfX1zZWxlY3RNb3ZlRGVzdGluYXRpb24oemUpe3RoaXMubW92ZVBpY2tlclNvdXJjZSYmKHRoaXMuY2xvc2VNb3ZlUGlja2VyRGlhbG9nKCksdGhpcy5pbml0aWF0ZU1vdmUodGhpcy5tb3ZlUGlja2VyU291cmNlLmtleSx0aGlzLm1vdmVQaWNrZXJTb3VyY2UuaXNGb2xkZXIsemUpKX1jbG9zZU1vdmVQaWNrZXJEaWFsb2coKXt0aGlzLnNob3dNb3ZlUGlja2VyRGlhbG9nPSExLHRoaXMubW92ZVBpY2tlclNvdXJjZT1udWxsLHRoaXMubW92ZVBpY2tlckN1cnJlbnRQcmVmaXg9IiIsdGhpcy5tb3ZlUGlja2VyUHJlZml4ZXM9W119aW5pdGlhdGVNb3ZlKHplLHhlLE5lKXtsZXQgeHQ9SnYoemUsTmUpO2lmKCF4dC52YWxpZCl7dGhpcy5tb3ZlU291cmNlPXtrZXk6emUsaXNGb2xkZXI6eGV9LHRoaXMubW92ZURlc3RpbmF0aW9uPU5lLHRoaXMubW92ZUVycm9yPXh0LmVycm9yLHRoaXMuc2hvd01vdmVEaWFsb2c9ITA7cmV0dXJufXRoaXMubW92ZVNvdXJjZT17a2V5OnplLGlzRm9sZGVyOnhlfSx0aGlzLm1vdmVEZXN0aW5hdGlvbj1OZSx0aGlzLm1vdmVFcnJvcj1udWxsLHRoaXMuc2hvd01vdmVEaWFsb2c9ITB9YXN5bmMgZXhlY3V0ZU1vdmUoKXtpZighKCF0aGlzLm1vdmVTb3VyY2V8fCF0aGlzLmRhdGFQcm92aWRlcikpe3RoaXMubW92ZUluUHJvZ3Jlc3M9ITA7dHJ5e2xldCB6ZT1GYSh0aGlzLm1vdmVTb3VyY2Uua2V5KSx4ZT10aGlzLm1vdmVEZXN0aW5hdGlvbit6ZSxOZTt0aGlzLm1vdmVTb3VyY2UuaXNGb2xkZXI/TmU9YXdhaXQgdGhpcy5kYXRhUHJvdmlkZXIubW92ZVByZWZpeCh0aGlzLmJ1Y2tldE5hbWUsdGhpcy5tb3ZlU291cmNlLmtleSx4ZSk6TmU9YXdhaXQgdGhpcy5kYXRhUHJvdmlkZXIubW92ZU9iamVjdCh0aGlzLmJ1Y2tldE5hbWUsdGhpcy5tb3ZlU291cmNlLmtleSx4ZSksTmUuc3VjY2Vzcz8odGhpcy5jbG9zZU1vdmVEaWFsb2coKSxhd2FpdCB0aGlzLmxvYWRPYmplY3RzKCkpOnRoaXMubW92ZUVycm9yPU5lLmVycm9yfHwiTW92ZSBvcGVyYXRpb24gZmFpbGVkIn1jYXRjaCh6ZSl7dGhpcy5tb3ZlRXJyb3I9YEVycm9yOiAke3plfWB9dGhpcy5tb3ZlSW5Qcm9ncmVzcz0hMX19Y2xvc2VNb3ZlRGlhbG9nKCl7dGhpcy5zaG93TW92ZURpYWxvZz0hMSx0aGlzLm1vdmVTb3VyY2U9bnVsbCx0aGlzLm1vdmVEZXN0aW5hdGlvbj0iIix0aGlzLm1vdmVFcnJvcj1udWxsLHRoaXMubW92ZUluUHJvZ3Jlc3M9ITF9b3BlblJlbmFtZURpYWxvZyh6ZSx4ZSl7dGhpcy5yZW5hbWVTb3VyY2U9e2tleTp6ZSxpc0ZvbGRlcjp4ZX0sdGhpcy5yZW5hbWVOYW1lPUZhKHplKSx0aGlzLnJlbmFtZUVycm9yPW51bGwsdGhpcy5zaG93UmVuYW1lRGlhbG9nPSEwLHRoaXMudXBkYXRlQ29tcGxldGUudGhlbigoKT0+e2xldCBOZT10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5yZW5hbWUtZGlhbG9nLWlucHV0Iik7aWYoTmUpaWYoTmUuZm9jdXMoKSx4ZSlOZS5zZWxlY3QoKTtlbHNle2xldCB4dD10aGlzLnJlbmFtZU5hbWUubGFzdEluZGV4T2YoIi4iKTt4dD4wP05lLnNldFNlbGVjdGlvblJhbmdlKDAseHQpOk5lLnNlbGVjdCgpfX0pfWFzeW5jIGV4ZWN1dGVSZW5hbWUoKXtpZighdGhpcy5yZW5hbWVTb3VyY2V8fCF0aGlzLnJlbmFtZU5hbWUudHJpbSgpfHwhdGhpcy5kYXRhUHJvdmlkZXIpcmV0dXJuO2xldCB6ZT10aGlzLnJlbmFtZU5hbWUudHJpbSgpLHhlPUZhKHRoaXMucmVuYW1lU291cmNlLmtleSk7aWYoemU9PT14ZSl7dGhpcy5yZW5hbWVFcnJvcj0iTmFtZSBpcyB0aGUgc2FtZSBhcyBjdXJyZW50IjtyZXR1cm59aWYoIXplKXt0aGlzLnJlbmFtZUVycm9yPSJOYW1lIGNhbm5vdCBiZSBlbXB0eSI7cmV0dXJufWlmKHplLmluY2x1ZGVzKCIvIikpe3RoaXMucmVuYW1lRXJyb3I9J05hbWUgY2Fubm90IGNvbnRhaW4gIi8iJztyZXR1cm59dGhpcy5yZW5hbWVJblByb2dyZXNzPSEwLHRoaXMucmVuYW1lRXJyb3I9bnVsbDt0cnl7bGV0IHh0PWwyKHRoaXMucmVuYW1lU291cmNlLmtleSkremUrKHRoaXMucmVuYW1lU291cmNlLmlzRm9sZGVyPyIvIjoiIiksTWE7dGhpcy5yZW5hbWVTb3VyY2UuaXNGb2xkZXI/TWE9YXdhaXQgdGhpcy5kYXRhUHJvdmlkZXIubW92ZVByZWZpeCh0aGlzLmJ1Y2tldE5hbWUsdGhpcy5yZW5hbWVTb3VyY2Uua2V5LHh0KTpNYT1hd2FpdCB0aGlzLmRhdGFQcm92aWRlci5tb3ZlT2JqZWN0KHRoaXMuYnVja2V0TmFtZSx0aGlzLnJlbmFtZVNvdXJjZS5rZXkseHQpLE1hLnN1Y2Nlc3M/KHRoaXMuY2xvc2VSZW5hbWVEaWFsb2coKSxhd2FpdCB0aGlzLmxvYWRPYmplY3RzKCkpOnRoaXMucmVuYW1lRXJyb3I9TWEuZXJyb3J8fCJSZW5hbWUgZmFpbGVkIn1jYXRjaChOZSl7dGhpcy5yZW5hbWVFcnJvcj1gRXJyb3I6ICR7TmV9YH10aGlzLnJlbmFtZUluUHJvZ3Jlc3M9ITF9Y2xvc2VSZW5hbWVEaWFsb2coKXt0aGlzLnNob3dSZW5hbWVEaWFsb2c9ITEsdGhpcy5yZW5hbWVTb3VyY2U9bnVsbCx0aGlzLnJlbmFtZU5hbWU9IiIsdGhpcy5yZW5hbWVFcnJvcj1udWxsLHRoaXMucmVuYW1lSW5Qcm9ncmVzcz0hMX1yZW5kZXJSZW5hbWVEaWFsb2coKXtpZighdGhpcy5zaG93UmVuYW1lRGlhbG9nfHwhdGhpcy5yZW5hbWVTb3VyY2UpcmV0dXJuIiI7bGV0IHplPXRoaXMucmVuYW1lU291cmNlLmlzRm9sZGVyO3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJkaWFsb2ctb3ZlcmxheSIgQGNsaWNrPSR7KCk9PnRoaXMuY2xvc2VSZW5hbWVEaWFsb2coKX0+CiAgICAgICAgPGRpdiBjbGFzcz0iZGlhbG9nIiBAY2xpY2s9JHtOZT0+TmUuc3RvcFByb3BhZ2F0aW9uKCl9PgogICAgICAgICAgPGRpdiBjbGFzcz0iZGlhbG9nLXRpdGxlIj4ke3plPyJSZW5hbWUgRm9sZGVyIjoiUmVuYW1lIEZpbGUifTwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZGlhbG9nLWxvY2F0aW9uIj4KICAgICAgICAgICAgTG9jYXRpb246ICR7dGhpcy5idWNrZXROYW1lfS8ke2wyKHRoaXMucmVuYW1lU291cmNlLmtleSl9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICR7dGhpcy5yZW5hbWVFcnJvcj93YDxkaXYgY2xhc3M9Im1vdmUtZXJyb3IiPiR7dGhpcy5yZW5hbWVFcnJvcn08L2Rpdj5gOiIifQogICAgICAgICAgPGlucHV0CiAgICAgICAgICAgIHR5cGU9InRleHQiCiAgICAgICAgICAgIGNsYXNzPSJkaWFsb2ctaW5wdXQgcmVuYW1lLWRpYWxvZy1pbnB1dCIKICAgICAgICAgICAgcGxhY2Vob2xkZXI9JHt6ZT8iZm9sZGVyLW5hbWUiOiJmaWxlbmFtZS5leHQifQogICAgICAgICAgICAudmFsdWU9JHt0aGlzLnJlbmFtZU5hbWV9CiAgICAgICAgICAgIEBpbnB1dD0ke05lPT57dGhpcy5yZW5hbWVOYW1lPU5lLnRhcmdldC52YWx1ZSx0aGlzLnJlbmFtZUVycm9yPW51bGx9fQogICAgICAgICAgICBAa2V5ZG93bj0ke05lPT57TmUua2V5PT09IkVudGVyIiYmdGhpcy5leGVjdXRlUmVuYW1lKCksTmUua2V5PT09IkVzY2FwZSImJnRoaXMuY2xvc2VSZW5hbWVEaWFsb2coKX19CiAgICAgICAgICAvPgogICAgICAgICAgPGRpdiBjbGFzcz0iZGlhbG9nLWFjdGlvbnMiPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJkaWFsb2ctYnRuIGRpYWxvZy1idG4tY2FuY2VsIgogICAgICAgICAgICAgICAgICAgIEBjbGljaz0keygpPT50aGlzLmNsb3NlUmVuYW1lRGlhbG9nKCl9CiAgICAgICAgICAgICAgICAgICAgP2Rpc2FibGVkPSR7dGhpcy5yZW5hbWVJblByb2dyZXNzfT5DYW5jZWw8L2J1dHRvbj4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZGlhbG9nLWJ0biBkaWFsb2ctYnRuLWNyZWF0ZSIKICAgICAgICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy5leGVjdXRlUmVuYW1lKCl9CiAgICAgICAgICAgICAgICAgICAgP2Rpc2FibGVkPSR7dGhpcy5yZW5hbWVJblByb2dyZXNzfHwhdGhpcy5yZW5hbWVOYW1lLnRyaW0oKX0+CiAgICAgICAgICAgICAgJHt0aGlzLnJlbmFtZUluUHJvZ3Jlc3M/IlJlbmFtaW5nLi4uIjoiUmVuYW1lIn0KICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfXJlbmRlck1vdmVEaWFsb2coKXtpZighdGhpcy5zaG93TW92ZURpYWxvZ3x8IXRoaXMubW92ZVNvdXJjZSlyZXR1cm4iIjtsZXQgemU9RmEodGhpcy5tb3ZlU291cmNlLmtleSk7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZy1vdmVybGF5IiBAY2xpY2s9JHsoKT0+dGhpcy5jbG9zZU1vdmVEaWFsb2coKX0+CiAgICAgICAgPGRpdiBjbGFzcz0iZGlhbG9nIiBAY2xpY2s9JHt4ZT0+eGUuc3RvcFByb3BhZ2F0aW9uKCl9PgogICAgICAgICAgPGRpdiBjbGFzcz0iZGlhbG9nLXRpdGxlIj5Nb3ZlICR7dGhpcy5tb3ZlU291cmNlLmlzRm9sZGVyPyJGb2xkZXIiOiJGaWxlIn08L2Rpdj4KCiAgICAgICAgICAke3RoaXMubW92ZUVycm9yP3dgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vdmUtZXJyb3IiPiR7dGhpcy5tb3ZlRXJyb3J9PC9kaXY+CiAgICAgICAgICBgOndgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vdmUtc3VtbWFyeSI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW92ZS1pdGVtIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJtb3ZlLWxhYmVsIj5Gcm9tOjwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJtb3ZlLXBhdGgiPiR7dGhpcy5tb3ZlU291cmNlLmtleX08L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW92ZS1pdGVtIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJtb3ZlLWxhYmVsIj5Ubzo8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibW92ZS1wYXRoIj4ke3RoaXMubW92ZURlc3RpbmF0aW9ufSR7emV9PC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIGB9CgogICAgICAgICAgPGRpdiBjbGFzcz0iZGlhbG9nLWFjdGlvbnMiPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJkaWFsb2ctYnRuIGRpYWxvZy1idG4tY2FuY2VsIgogICAgICAgICAgICAgICAgICAgIEBjbGljaz0keygpPT50aGlzLmNsb3NlTW92ZURpYWxvZygpfQogICAgICAgICAgICAgICAgICAgID9kaXNhYmxlZD0ke3RoaXMubW92ZUluUHJvZ3Jlc3N9PgogICAgICAgICAgICAgIENhbmNlbAogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgJHt0aGlzLm1vdmVFcnJvcj8iIjp3YAogICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImRpYWxvZy1idG4gZGlhbG9nLWJ0bi1jcmVhdGUiCiAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy5leGVjdXRlTW92ZSgpfQogICAgICAgICAgICAgICAgICAgICAgP2Rpc2FibGVkPSR7dGhpcy5tb3ZlSW5Qcm9ncmVzc30+CiAgICAgICAgICAgICAgICAke3RoaXMubW92ZUluUHJvZ3Jlc3M/Ik1vdmluZy4uLiI6Ik1vdmUifQogICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICBgfQogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJNb3ZlUGlja2VyRGlhbG9nKCl7aWYoIXRoaXMuc2hvd01vdmVQaWNrZXJEaWFsb2d8fCF0aGlzLm1vdmVQaWNrZXJTb3VyY2UpcmV0dXJuIiI7bGV0IHplPUZhKHRoaXMubW92ZVBpY2tlclNvdXJjZS5rZXkpLHhlPWwyKHRoaXMubW92ZVBpY2tlclNvdXJjZS5rZXkpO3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJkaWFsb2ctb3ZlcmxheSIgQGNsaWNrPSR7KCk9PnRoaXMuY2xvc2VNb3ZlUGlja2VyRGlhbG9nKCl9PgogICAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZyBtb3ZlLXBpY2tlci1kaWFsb2ciIEBjbGljaz0ke05lPT5OZS5zdG9wUHJvcGFnYXRpb24oKX0+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkaWFsb2ctdGl0bGUiPk1vdmUgIiR7emV9IiB0by4uLjwvZGl2PgoKICAgICAgICAgIDxkaXYgY2xhc3M9InBpY2tlci1icmVhZGNydW1iIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBpY2tlci1jcnVtYiIgQGNsaWNrPSR7KCk9PnRoaXMubmF2aWdhdGVNb3ZlUGlja2VyKCIiKX0+CiAgICAgICAgICAgICAgJHt0aGlzLmJ1Y2tldE5hbWV9CiAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgJHt5Zyh0aGlzLm1vdmVQaWNrZXJDdXJyZW50UHJlZml4KS5tYXAoTmU9PndgCiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBpY2tlci1zZXBhcmF0b3IiPi88L3NwYW4+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBpY2tlci1jcnVtYiIgQGNsaWNrPSR7KCk9PnRoaXMubmF2aWdhdGVNb3ZlUGlja2VyKE5lKX0+CiAgICAgICAgICAgICAgICAke0ZhKE5lKX0KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIGApfQogICAgICAgICAgPC9kaXY+CgogICAgICAgICAgPGRpdiBjbGFzcz0icGlja2VyLWxpc3QiPgogICAgICAgICAgICAke3RoaXMubW92ZVBpY2tlckxvYWRpbmc/d2A8ZGl2IGNsYXNzPSJwaWNrZXItZW1wdHkiPkxvYWRpbmcuLi48L2Rpdj5gOiIifQogICAgICAgICAgICAkeyF0aGlzLm1vdmVQaWNrZXJMb2FkaW5nJiZ0aGlzLm1vdmVQaWNrZXJQcmVmaXhlcy5maWx0ZXIoTmU9Pk5lIT09dGhpcy5tb3ZlUGlja2VyU291cmNlLmtleSkubGVuZ3RoPT09MD93YAogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBpY2tlci1lbXB0eSI+Tm8gc3ViZm9sZGVyczwvZGl2PgogICAgICAgICAgICBgOiIifQogICAgICAgICAgICAke3RoaXMubW92ZVBpY2tlclByZWZpeGVzLmZpbHRlcihOZT0+TmUhPT10aGlzLm1vdmVQaWNrZXJTb3VyY2Uua2V5KS5tYXAoTmU9PndgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwaWNrZXItaXRlbSIKICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMubmF2aWdhdGVNb3ZlUGlja2VyKE5lKX0KICAgICAgICAgICAgICAgICAgICAgQGRibGNsaWNrPSR7KCk9PnRoaXMuc2VsZWN0TW92ZURlc3RpbmF0aW9uKE5lKX0+CiAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Imljb24iIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIj4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjIgMTlhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDVsMiAzaDlhMiAyIDAgMCAxIDIgMnoiLz4KICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJuYW1lIj4ke0ZhKE5lKX08L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICBgKX0KICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZy1hY3Rpb25zIj4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZGlhbG9nLWJ0biBkaWFsb2ctYnRuLWNhbmNlbCIgQGNsaWNrPSR7KCk9PnRoaXMuY2xvc2VNb3ZlUGlja2VyRGlhbG9nKCl9PgogICAgICAgICAgICAgIENhbmNlbAogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZGlhbG9nLWJ0biBkaWFsb2ctYnRuLWNyZWF0ZSIKICAgICAgICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy5zZWxlY3RNb3ZlRGVzdGluYXRpb24odGhpcy5tb3ZlUGlja2VyQ3VycmVudFByZWZpeCl9CiAgICAgICAgICAgICAgICAgICAgP2Rpc2FibGVkPSR7dGhpcy5tb3ZlUGlja2VyQ3VycmVudFByZWZpeD09PXhlfT4KICAgICAgICAgICAgICBNb3ZlIEhlcmUKICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfXJlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJrZXlzLWNvbnRhaW5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iZmlsdGVyLWJhciI+CiAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgdHlwZT0idGV4dCIKICAgICAgICAgICAgY2xhc3M9ImZpbHRlci1pbnB1dCIKICAgICAgICAgICAgcGxhY2Vob2xkZXI9IkZpbHRlciBmaWxlcy4uLiIKICAgICAgICAgICAgLnZhbHVlPSR7dGhpcy5maWx0ZXJUZXh0fQogICAgICAgICAgICBAaW5wdXQ9JHt0aGlzLmhhbmRsZUZpbHRlcklucHV0fQogICAgICAgICAgLz4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0ia2V5cy1saXN0IiBAY29udGV4dG1lbnU9JHt6ZT0+dGhpcy5oYW5kbGVFbXB0eVNwYWNlQ29udGV4dE1lbnUoemUpfT4KICAgICAgICAgICR7dGhpcy5sb2FkaW5nP3dgPGRpdiBjbGFzcz0iZW1wdHktc3RhdGUiPkxvYWRpbmcuLi48L2Rpdj5gOnRoaXMuZmlsdGVyZWRJdGVtcy5sZW5ndGg9PT0wP3dgPGRpdiBjbGFzcz0iZW1wdHktc3RhdGUiPk5vIG9iamVjdHMgZm91bmQ8L2Rpdj5gOndgCiAgICAgICAgICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5OYW1lPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDogMTAwcHg7Ij5TaXplPC90aD4KICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAgICAgICAke3RoaXMuZmlsdGVyZWRJdGVtcy5tYXAoemU9PndgCiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iJHt0aGlzLnNlbGVjdGVkS2V5PT09emUua2V5PyJzZWxlY3RlZCI6IiJ9IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMuc2VsZWN0S2V5KHplLmtleSx6ZS5pc0ZvbGRlcil9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY29udGV4dG1lbnU9JHt4ZT0+dGhpcy5oYW5kbGVJdGVtQ29udGV4dE1lbnUoeGUsemUua2V5LHplLmlzRm9sZGVyKX0KICAgICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImtleS1jZWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3plLmlzRm9sZGVyP3dgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ia2V5LWljb24gZm9sZGVyLWljb24iIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMiAxOWEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoNWwyIDNoOWEyIDIgMCAwIDEgMiAyeiIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYDp3YAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9ImtleS1pY29uIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE0IDJINmEyIDIgMCAwIDAtMiAydjE2YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlY4eiIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5LW5hbWUiPiR7RmEoemUua2V5KX08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0ic2l6ZS1jZWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHt6ZS5pc0ZvbGRlcj8iLSI6UXYoemUuc2l6ZSl9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgIGApfQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICBgfQogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgJHt0aGlzLnJlbmRlckNyZWF0ZURpYWxvZygpfQogICAgICAke3RoaXMucmVuZGVyTW92ZURpYWxvZygpfQogICAgICAke3RoaXMucmVuZGVyTW92ZVBpY2tlckRpYWxvZygpfQogICAgICAke3RoaXMucmVuZGVyUmVuYW1lRGlhbG9nKCl9CiAgICBgfWNvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSxxdCh0aGlzLHRpKX1zdGF0aWN7cXQoYSx0KX19O3JldHVybiBhaT1hfSkoKX0pO3ZhciAkbCxacyxBbWEsaml0PWcoKCk9PntwZSgpO3B0KCk7S1goKTskbD1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sWnM9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LEFtYT0oKCk9PntsZXQgcz1bbmUoImRlZXMtc3RvcmFnZS1wcmV2aWV3IildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W10sSCxrPVtdLFM9W10sSSxQPVtdLFI9W10sSyxWPVtdLFc9W10sbWUsQj1bXSxVPVtdLGhlLEY9W10saj1bXSx1ZSxsZT1bXSxRPVtdO3ZhciBpZT1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1N0b3JhZ2VQcmV2aWV3Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IHRlPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6T2JqZWN0fSldLHA9W0woe3R5cGU6U3RyaW5nfSldLGM9W0woe3R5cGU6U3RyaW5nfSldLHg9W1koKV0seT1bWSgpXSxOPVtZKCldLE89W1koKV0sSD1bWSgpXSxJPVtZKCldLEs9W1koKV0sbWU9W1koKV0saGU9W1koKV0sdWU9W1koKV0sJGwodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJkYXRhUHJvdmlkZXIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZWU9PiJkYXRhUHJvdmlkZXIiaW4gZWUsImhhcyIpLGdldDppKGVlPT5lZS5kYXRhUHJvdmlkZXIsImdldCIpLHNldDppKChlZSxrZSk9PntlZS5kYXRhUHJvdmlkZXI9a2V9LCJzZXQiKX0sbWV0YWRhdGE6dGV9LG8sbCksJGwodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJidWNrZXROYW1lIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGVlPT4iYnVja2V0TmFtZSJpbiBlZSwiaGFzIiksZ2V0OmkoZWU9PmVlLmJ1Y2tldE5hbWUsImdldCIpLHNldDppKChlZSxrZSk9PntlZS5idWNrZXROYW1lPWtlfSwic2V0Iil9LG1ldGFkYXRhOnRlfSxkLHUpLCRsKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToib2JqZWN0S2V5IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGVlPT4ib2JqZWN0S2V5ImluIGVlLCJoYXMiKSxnZXQ6aShlZT0+ZWUub2JqZWN0S2V5LCJnZXQiKSxzZXQ6aSgoZWUsa2UpPT57ZWUub2JqZWN0S2V5PWtlfSwic2V0Iil9LG1ldGFkYXRhOnRlfSxiLHYpLCRsKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToibG9hZGluZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShlZT0+ImxvYWRpbmciaW4gZWUsImhhcyIpLGdldDppKGVlPT5lZS5sb2FkaW5nLCJnZXQiKSxzZXQ6aSgoZWUsa2UpPT57ZWUubG9hZGluZz1rZX0sInNldCIpfSxtZXRhZGF0YTp0ZX0sbSxmKSwkbCh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNhdmluZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShlZT0+InNhdmluZyJpbiBlZSwiaGFzIiksZ2V0OmkoZWU9PmVlLnNhdmluZywiZ2V0Iiksc2V0OmkoKGVlLGtlKT0+e2VlLnNhdmluZz1rZX0sInNldCIpfSxtZXRhZGF0YTp0ZX0sTSx6KSwkbCh0aGlzLG51bGwsTix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNvbnRlbnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZWU9PiJjb250ZW50ImluIGVlLCJoYXMiKSxnZXQ6aShlZT0+ZWUuY29udGVudCwiZ2V0Iiksc2V0OmkoKGVlLGtlKT0+e2VlLmNvbnRlbnQ9a2V9LCJzZXQiKX0sbWV0YWRhdGE6dGV9LEMsXyksJGwodGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJvcmlnaW5hbFRleHRDb250ZW50IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGVlPT4ib3JpZ2luYWxUZXh0Q29udGVudCJpbiBlZSwiaGFzIiksZ2V0OmkoZWU9PmVlLm9yaWdpbmFsVGV4dENvbnRlbnQsImdldCIpLHNldDppKChlZSxrZSk9PntlZS5vcmlnaW5hbFRleHRDb250ZW50PWtlfSwic2V0Iil9LG1ldGFkYXRhOnRlfSwkLEUpLCRsKHRoaXMsbnVsbCxILHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaGFzQ2hhbmdlcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShlZT0+Imhhc0NoYW5nZXMiaW4gZWUsImhhcyIpLGdldDppKGVlPT5lZS5oYXNDaGFuZ2VzLCJnZXQiKSxzZXQ6aSgoZWUsa2UpPT57ZWUuaGFzQ2hhbmdlcz1rZX0sInNldCIpfSxtZXRhZGF0YTp0ZX0sayxTKSwkbCh0aGlzLG51bGwsSSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImVkaXRpbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZWU9PiJlZGl0aW5nImluIGVlLCJoYXMiKSxnZXQ6aShlZT0+ZWUuZWRpdGluZywiZ2V0Iiksc2V0OmkoKGVlLGtlKT0+e2VlLmVkaXRpbmc9a2V9LCJzZXQiKX0sbWV0YWRhdGE6dGV9LFAsUiksJGwodGhpcyxudWxsLEsse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjb250ZW50VHlwZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShlZT0+ImNvbnRlbnRUeXBlImluIGVlLCJoYXMiKSxnZXQ6aShlZT0+ZWUuY29udGVudFR5cGUsImdldCIpLHNldDppKChlZSxrZSk9PntlZS5jb250ZW50VHlwZT1rZX0sInNldCIpfSxtZXRhZGF0YTp0ZX0sVixXKSwkbCh0aGlzLG51bGwsbWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJmaWxlU2l6ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShlZT0+ImZpbGVTaXplImluIGVlLCJoYXMiKSxnZXQ6aShlZT0+ZWUuZmlsZVNpemUsImdldCIpLHNldDppKChlZSxrZSk9PntlZS5maWxlU2l6ZT1rZX0sInNldCIpfSxtZXRhZGF0YTp0ZX0sQixVKSwkbCh0aGlzLG51bGwsaGUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJsYXN0TW9kaWZpZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZWU9PiJsYXN0TW9kaWZpZWQiaW4gZWUsImhhcyIpLGdldDppKGVlPT5lZS5sYXN0TW9kaWZpZWQsImdldCIpLHNldDppKChlZSxrZSk9PntlZS5sYXN0TW9kaWZpZWQ9a2V9LCJzZXQiKX0sbWV0YWRhdGE6dGV9LEYsaiksJGwodGhpcyxudWxsLHVlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZXJyb3IiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZWU9PiJlcnJvciJpbiBlZSwiaGFzIiksZ2V0OmkoZWU9PmVlLmVycm9yLCJnZXQiKSxzZXQ6aSgoZWUsa2UpPT57ZWUuZXJyb3I9a2V9LCJzZXQiKX0sbWV0YWRhdGE6dGV9LGxlLFEpLCRsKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOnRlfSxudWxsLHQpLGllPWE9ZS52YWx1ZSx0ZSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTp0ZX0pfSNlPVpzKHRoaXMsbyxudWxsKTtnZXQgZGF0YVByb3ZpZGVyKCl7cmV0dXJuIHRoaXMuI2V9c2V0IGRhdGFQcm92aWRlcih0ZSl7dGhpcy4jZT10ZX0jdD0oWnModGhpcyxsKSxacyh0aGlzLGQsIiIpKTtnZXQgYnVja2V0TmFtZSgpe3JldHVybiB0aGlzLiN0fXNldCBidWNrZXROYW1lKHRlKXt0aGlzLiN0PXRlfSNhPShacyh0aGlzLHUpLFpzKHRoaXMsYiwiIikpO2dldCBvYmplY3RLZXkoKXtyZXR1cm4gdGhpcy4jYX1zZXQgb2JqZWN0S2V5KHRlKXt0aGlzLiNhPXRlfSNzPShacyh0aGlzLHYpLFpzKHRoaXMsbSwhMSkpO2dldCBsb2FkaW5nKCl7cmV0dXJuIHRoaXMuI3N9c2V0IGxvYWRpbmcodGUpe3RoaXMuI3M9dGV9I2k9KFpzKHRoaXMsZiksWnModGhpcyxNLCExKSk7Z2V0IHNhdmluZygpe3JldHVybiB0aGlzLiNpfXNldCBzYXZpbmcodGUpe3RoaXMuI2k9dGV9I3I9KFpzKHRoaXMseiksWnModGhpcyxDLCIiKSk7Z2V0IGNvbnRlbnQoKXtyZXR1cm4gdGhpcy4jcn1zZXQgY29udGVudCh0ZSl7dGhpcy4jcj10ZX0jbz0oWnModGhpcyxfKSxacyh0aGlzLCQsIiIpKTtnZXQgb3JpZ2luYWxUZXh0Q29udGVudCgpe3JldHVybiB0aGlzLiNvfXNldCBvcmlnaW5hbFRleHRDb250ZW50KHRlKXt0aGlzLiNvPXRlfSNuPShacyh0aGlzLEUpLFpzKHRoaXMsaywhMSkpO2dldCBoYXNDaGFuZ2VzKCl7cmV0dXJuIHRoaXMuI259c2V0IGhhc0NoYW5nZXModGUpe3RoaXMuI249dGV9I2w9KFpzKHRoaXMsUyksWnModGhpcyxQLCExKSk7Z2V0IGVkaXRpbmcoKXtyZXR1cm4gdGhpcy4jbH1zZXQgZWRpdGluZyh0ZSl7dGhpcy4jbD10ZX0jYz0oWnModGhpcyxSKSxacyh0aGlzLFYsIiIpKTtnZXQgY29udGVudFR5cGUoKXtyZXR1cm4gdGhpcy4jY31zZXQgY29udGVudFR5cGUodGUpe3RoaXMuI2M9dGV9I2Q9KFpzKHRoaXMsVyksWnModGhpcyxCLDApKTtnZXQgZmlsZVNpemUoKXtyZXR1cm4gdGhpcy4jZH1zZXQgZmlsZVNpemUodGUpe3RoaXMuI2Q9dGV9I3U9KFpzKHRoaXMsVSksWnModGhpcyxGLCIiKSk7Z2V0IGxhc3RNb2RpZmllZCgpe3JldHVybiB0aGlzLiN1fXNldCBsYXN0TW9kaWZpZWQodGUpe3RoaXMuI3U9dGV9I3A9KFpzKHRoaXMsaiksWnModGhpcyxsZSwiIikpO2dldCBlcnJvcigpe3JldHVybiB0aGlzLiNwfXNldCBlcnJvcih0ZSl7dGhpcy4jcD10ZX1zdGF0aWMgc3R5bGVzPVtoLmRlZmF1bHRTdHlsZXMsSGUsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgLnByZXZpZXctY29udGFpbmVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CgogICAgICAucHJldmlldy1oZWFkZXIgewogICAgICAgIHBhZGRpbmc6IDEycHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzMzMyIpfTsKICAgICAgfQoKICAgICAgLnByZXZpZXctdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7CiAgICAgIH0KCiAgICAgIC5wcmV2aWV3LW1ldGEgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgIGdhcDogMTZweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiIzg4OCIpfTsKICAgICAgfQoKICAgICAgLm1ldGEtaXRlbSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNHB4OwogICAgICB9CgogICAgICAucHJldmlldy1jb250ZW50IHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC5wcmV2aWV3LWNvbnRlbnQgZGVlcy1wcmV2aWV3IHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5wcmV2aWV3LWNvbnRlbnQuY29kZS1lZGl0b3IgewogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLnByZXZpZXctY29udGVudC5jb2RlLWVkaXRvciBkZWVzLWlucHV0LWNvZGUgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgLnByZXZpZXctYWN0aW9ucyB7CiAgICAgICAgcGFkZGluZzogMTJweDsKICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMzMzIil9OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnRuIHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIHBhZGRpbmc6IDhweCAxNnB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMDUpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZDRkNGQ4IiwiIzQwNDA0MCIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzZjNmNDYiLCIjZTBlMGUwIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1czsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idG46aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMDgpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSIpfTsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idG4uZGFuZ2VyIHsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDIzOSwgNjgsIDY4LCAwLjIpOwogICAgICAgIGJvcmRlci1jb2xvcjogI2VmNDQ0NDsKICAgICAgICBjb2xvcjogI2Y4NzE3MTsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idG4uZGFuZ2VyOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDIzOSwgNjgsIDY4LCAwLjMpOwogICAgICB9CgogICAgICAuYWN0aW9uLWJ0bi5wcmltYXJ5IHsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDU5LCAxMzAsIDI0NiwgMC4zKTsKICAgICAgICBib3JkZXItY29sb3I6ICMzYjgyZjY7CiAgICAgICAgY29sb3I6ICM2MGE1ZmE7CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnRuLnByaW1hcnk6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoNTksIDEzMCwgMjQ2LCAwLjQpOwogICAgICB9CgogICAgICAuYWN0aW9uLWJ0bi5wcmltYXJ5OmRpc2FibGVkIHsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idG4uc2Vjb25kYXJ5IHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjAzKSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSkiKX07CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiI2Q0ZDRkOCIsIiM1NTUiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2FhYSIpfTsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idG4uc2Vjb25kYXJ5OmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjA2KSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmZmIil9OwogICAgICB9CgogICAgICAudW5zYXZlZC1pbmRpY2F0b3IgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDZweDsKICAgICAgICBwYWRkaW5nOiA2cHggMTBweDsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1MSwgMTkxLCAzNiwgMC4xKTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1MSwgMTkxLCAzNiwgMC4zKTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGNvbG9yOiAjZmJiZjI0OwogICAgICB9CgogICAgICAudW5zYXZlZC1kb3QgewogICAgICAgIHdpZHRoOiA2cHg7CiAgICAgICAgaGVpZ2h0OiA2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIGJhY2tncm91bmQ6ICNmYmJmMjQ7CiAgICAgIH0KCiAgICAgIC5lbXB0eS1zdGF0ZSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2ExYTFhYSIsIiM2NjYiKX07CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgIH0KCiAgICAgIC5lbXB0eS1zdGF0ZSBzdmcgewogICAgICAgIHdpZHRoOiA0OHB4OwogICAgICAgIGhlaWdodDogNDhweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4OwogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgfQoKICAgICAgLmxvYWRpbmctc3RhdGUgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiIzg4OCIpfTsKICAgICAgfQoKICAgICAgLmVycm9yLXN0YXRlIHsKICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICAgIGNvbG9yOiAjZjg3MTcxOwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgfQogICAgYF07dXBkYXRlZCh0ZSl7KHRlLmhhcygib2JqZWN0S2V5Iil8fHRlLmhhcygiYnVja2V0TmFtZSIpKSYmKHRoaXMub2JqZWN0S2V5P3RoaXMubG9hZE9iamVjdCgpOih0aGlzLmNvbnRlbnQ9IiIsdGhpcy5jb250ZW50VHlwZT0iIix0aGlzLmVycm9yPSIiLHRoaXMub3JpZ2luYWxUZXh0Q29udGVudD0iIix0aGlzLmhhc0NoYW5nZXM9ITEsdGhpcy5lZGl0aW5nPSExKSl9YXN5bmMgbG9hZE9iamVjdCgpe2lmKCEoIXRoaXMub2JqZWN0S2V5fHwhdGhpcy5idWNrZXROYW1lfHwhdGhpcy5kYXRhUHJvdmlkZXIpKXt0aGlzLmxvYWRpbmc9ITAsdGhpcy5lcnJvcj0iIix0aGlzLmhhc0NoYW5nZXM9ITEsdGhpcy5lZGl0aW5nPSExO3RyeXtsZXQgdGU9YXdhaXQgdGhpcy5kYXRhUHJvdmlkZXIuZ2V0T2JqZWN0KHRoaXMuYnVja2V0TmFtZSx0aGlzLm9iamVjdEtleSk7aWYoIXRlKXt0aGlzLmVycm9yPSJPYmplY3Qgbm90IGZvdW5kIix0aGlzLmxvYWRpbmc9ITE7cmV0dXJufXRoaXMuY29udGVudD10ZS5jb250ZW50fHwiIix0aGlzLmNvbnRlbnRUeXBlPXRlLmNvbnRlbnRUeXBlfHwiIix0aGlzLmZpbGVTaXplPXRlLnNpemV8fDAsdGhpcy5sYXN0TW9kaWZpZWQ9dGUubGFzdE1vZGlmaWVkfHwiIix0aGlzLmlzVGV4dCgpJiYodGhpcy5vcmlnaW5hbFRleHRDb250ZW50PXRoaXMuZ2V0VGV4dENvbnRlbnQoKSl9Y2F0Y2godGUpe2NvbnNvbGUuZXJyb3IoIkVycm9yIGxvYWRpbmcgb2JqZWN0OiIsdGUpLHRoaXMuZXJyb3I9IkZhaWxlZCB0byBsb2FkIG9iamVjdCJ9dGhpcy5sb2FkaW5nPSExfX1mb3JtYXREYXRlKHRlKXtyZXR1cm4gdGU/bmV3IERhdGUodGUpLnRvTG9jYWxlU3RyaW5nKCk6Ii0ifWlzSW1hZ2UoKXtyZXR1cm4gdGhpcy5jb250ZW50VHlwZS5zdGFydHNXaXRoKCJpbWFnZS8iKX1pc1RleHQoKXtyZXR1cm4gdGhpcy5jb250ZW50VHlwZS5zdGFydHNXaXRoKCJ0ZXh0LyIpfHx0aGlzLmNvbnRlbnRUeXBlPT09ImFwcGxpY2F0aW9uL2pzb24ifHx0aGlzLmNvbnRlbnRUeXBlPT09ImFwcGxpY2F0aW9uL3htbCJ8fHRoaXMuY29udGVudFR5cGU9PT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCJ9Z2V0VGV4dENvbnRlbnQoKXt0cnl7bGV0IHRlPWF0b2IodGhpcy5jb250ZW50KSxlZT1uZXcgVWludDhBcnJheSh0ZS5sZW5ndGgpO2ZvcihsZXQga2U9MDtrZTx0ZS5sZW5ndGg7a2UrKyllZVtrZV09dGUuY2hhckNvZGVBdChrZSk7cmV0dXJuIG5ldyBUZXh0RGVjb2RlcigidXRmLTgiKS5kZWNvZGUoZWUpfWNhdGNoe3JldHVybiJVbmFibGUgdG8gZGVjb2RlIGNvbnRlbnQifX1hc3luYyBoYW5kbGVEb3dubG9hZCgpe3RyeXtsZXQgdGU9bmV3IEJsb2IoW1VpbnQ4QXJyYXkuZnJvbShhdG9iKHRoaXMuY29udGVudCksWD0+WC5jaGFyQ29kZUF0KDApKV0se3R5cGU6dGhpcy5jb250ZW50VHlwZX0pLGVlPVVSTC5jcmVhdGVPYmplY3RVUkwodGUpLGtlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtrZS5ocmVmPWVlLGtlLmRvd25sb2FkPUZhKHRoaXMub2JqZWN0S2V5KSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGtlKSxrZS5jbGljaygpLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoa2UpLFVSTC5yZXZva2VPYmplY3RVUkwoZWUpfWNhdGNoKHRlKXtjb25zb2xlLmVycm9yKCJFcnJvciBkb3dubG9hZGluZzoiLHRlKX19YXN5bmMgaGFuZGxlRGVsZXRlKCl7aWYodGhpcy5kYXRhUHJvdmlkZXImJmNvbmZpcm0oYERlbGV0ZSAiJHtGYSh0aGlzLm9iamVjdEtleSl9Ij9gKSl0cnl7YXdhaXQgdGhpcy5kYXRhUHJvdmlkZXIuZGVsZXRlT2JqZWN0KHRoaXMuYnVja2V0TmFtZSx0aGlzLm9iamVjdEtleSksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgib2JqZWN0LWRlbGV0ZWQiLHtkZXRhaWw6e2tleTp0aGlzLm9iamVjdEtleX0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1jYXRjaCh0ZSl7Y29uc29sZS5lcnJvcigiRXJyb3IgZGVsZXRpbmcgb2JqZWN0OiIsdGUpfX1nZXRMYW5ndWFnZSgpe2xldCB0ZT10aGlzLm9iamVjdEtleS5zcGxpdCgiLiIpLnBvcCgpPy50b0xvd2VyQ2FzZSgpfHwiIjtyZXR1cm57dHM6InR5cGVzY3JpcHQiLHRzeDoidHlwZXNjcmlwdCIsanM6ImphdmFzY3JpcHQiLGpzeDoiamF2YXNjcmlwdCIsbWpzOiJqYXZhc2NyaXB0IixjanM6ImphdmFzY3JpcHQiLGpzb246Impzb24iLGh0bWw6Imh0bWwiLGh0bToiaHRtbCIsY3NzOiJjc3MiLHNjc3M6InNjc3MiLHNhc3M6InNjc3MiLGxlc3M6Imxlc3MiLG1kOiJtYXJrZG93biIsbWFya2Rvd246Im1hcmtkb3duIix4bWw6InhtbCIseWFtbDoieWFtbCIseW1sOiJ5YW1sIixweToicHl0aG9uIixyYjoicnVieSIsZ286ImdvIixyczoicnVzdCIsamF2YToiamF2YSIsYzoiYyIsY3BwOiJjcHAiLGg6ImMiLGhwcDoiY3BwIixjczoiY3NoYXJwIixwaHA6InBocCIsc2g6InNoZWxsIixiYXNoOiJzaGVsbCIsenNoOiJzaGVsbCIsc3FsOiJzcWwiLGdyYXBocWw6ImdyYXBocWwiLGdxbDoiZ3JhcGhxbCIsZG9ja2VyZmlsZToiZG9ja2VyZmlsZSIsdHh0OiJwbGFpbnRleHQifVt0ZV18fCJwbGFpbnRleHQifWhhbmRsZUNvbnRlbnRDaGFuZ2UodGUpe2xldCBlZT10ZS5kZXRhaWw7dGhpcy5oYXNDaGFuZ2VzPWVlIT09dGhpcy5vcmlnaW5hbFRleHRDb250ZW50fWhhbmRsZUVkaXQoKXt0aGlzLmVkaXRpbmc9ITB9aGFuZGxlRGlzY2FyZCgpe2xldCB0ZT10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoImRlZXMtaW5wdXQtY29kZSIpO3RlJiYodGUudmFsdWU9dGhpcy5vcmlnaW5hbFRleHRDb250ZW50KSx0aGlzLmhhc0NoYW5nZXM9ITEsdGhpcy5lZGl0aW5nPSExfWFzeW5jIGhhbmRsZVNhdmUoKXtpZighKCF0aGlzLmhhc0NoYW5nZXN8fHRoaXMuc2F2aW5nfHwhdGhpcy5kYXRhUHJvdmlkZXIpKXt0aGlzLnNhdmluZz0hMDt0cnl7bGV0IGVlPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiZGVlcy1pbnB1dC1jb2RlIik/LnZhbHVlPz8iIixYPW5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShlZSksWj1idG9hKFN0cmluZy5mcm9tQ2hhckNvZGUoLi4uWCkpO2F3YWl0IHRoaXMuZGF0YVByb3ZpZGVyLnB1dE9iamVjdCh0aGlzLmJ1Y2tldE5hbWUsdGhpcy5vYmplY3RLZXksWix0aGlzLmNvbnRlbnRUeXBlKSYmKHRoaXMub3JpZ2luYWxUZXh0Q29udGVudD1lZSx0aGlzLmhhc0NoYW5nZXM9ITEsdGhpcy5lZGl0aW5nPSExLHRoaXMuY29udGVudD1aKX1jYXRjaCh0ZSl7Y29uc29sZS5lcnJvcigiRXJyb3Igc2F2aW5nIG9iamVjdDoiLHRlKX10aGlzLnNhdmluZz0hMX19cmVuZGVyKCl7cmV0dXJuIHRoaXMub2JqZWN0S2V5P3RoaXMubG9hZGluZz93YAogICAgICAgIDxkaXYgY2xhc3M9InByZXZpZXctY29udGFpbmVyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImxvYWRpbmctc3RhdGUiPkxvYWRpbmcuLi48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgYDp0aGlzLmVycm9yP3dgCiAgICAgICAgPGRpdiBjbGFzcz0icHJldmlldy1jb250YWluZXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZXJyb3Itc3RhdGUiPiR7dGhpcy5lcnJvcn08L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgYDp3YAogICAgICA8ZGl2IGNsYXNzPSJwcmV2aWV3LWNvbnRhaW5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0icHJldmlldy1oZWFkZXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0icHJldmlldy10aXRsZSI+JHtGYSh0aGlzLm9iamVjdEtleSl9PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmV2aWV3LW1ldGEiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0ibWV0YS1pdGVtIj4ke3RoaXMuY29udGVudFR5cGV9PC9zcGFuPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0ibWV0YS1pdGVtIj4ke1F2KHRoaXMuZmlsZVNpemUpfTwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1ldGEtaXRlbSI+JHt0aGlzLmZvcm1hdERhdGUodGhpcy5sYXN0TW9kaWZpZWQpfTwvc3Bhbj4KICAgICAgICAgICAgJHt0aGlzLmhhc0NoYW5nZXM/d2AKICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idW5zYXZlZC1pbmRpY2F0b3IiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InVuc2F2ZWQtZG90Ij48L3NwYW4+CiAgICAgICAgICAgICAgICBVbnNhdmVkIGNoYW5nZXMKICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0icHJldmlldy1jb250ZW50ICR7dGhpcy5lZGl0aW5nPyJjb2RlLWVkaXRvciI6IiJ9Ij4KICAgICAgICAgICR7dGhpcy5lZGl0aW5nP3dgCiAgICAgICAgICAgICAgICA8ZGVlcy1pbnB1dC1jb2RlCiAgICAgICAgICAgICAgICAgIC52YWx1ZT0ke3RoaXMub3JpZ2luYWxUZXh0Q29udGVudH0KICAgICAgICAgICAgICAgICAgLmxhbmd1YWdlPSR7dGhpcy5nZXRMYW5ndWFnZSgpfQogICAgICAgICAgICAgICAgICBoZWlnaHQ9IjEwMCUiCiAgICAgICAgICAgICAgICAgIEBjb250ZW50LWNoYW5nZT0ke3RlPT50aGlzLmhhbmRsZUNvbnRlbnRDaGFuZ2UodGUpfQogICAgICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1jb2RlPgogICAgICAgICAgICAgIGA6dGhpcy5pc1RleHQoKT93YAogICAgICAgICAgICAgICAgICA8ZGVlcy1wcmV2aWV3CiAgICAgICAgICAgICAgICAgICAgLnRleHRDb250ZW50PSR7dGhpcy5vcmlnaW5hbFRleHRDb250ZW50fQogICAgICAgICAgICAgICAgICAgIC5maWxlbmFtZT0ke0ZhKHRoaXMub2JqZWN0S2V5KX0KICAgICAgICAgICAgICAgICAgICAubGFuZ3VhZ2U9JHt0aGlzLmdldExhbmd1YWdlKCl9CiAgICAgICAgICAgICAgICAgICAgLnNob3dUb29sYmFyPSR7ITB9CiAgICAgICAgICAgICAgICAgICAgLnNob3dGaWxlbmFtZT0keyExfQogICAgICAgICAgICAgICAgICA+PC9kZWVzLXByZXZpZXc+CiAgICAgICAgICAgICAgICBgOndgCiAgICAgICAgICAgICAgICAgIDxkZWVzLXByZXZpZXcKICAgICAgICAgICAgICAgICAgICAuYmFzZTY0PSR7dGhpcy5jb250ZW50fQogICAgICAgICAgICAgICAgICAgIC5taW1lVHlwZT0ke3RoaXMuY29udGVudFR5cGV9CiAgICAgICAgICAgICAgICAgICAgLmZpbGVuYW1lPSR7RmEodGhpcy5vYmplY3RLZXkpfQogICAgICAgICAgICAgICAgICAgIC5zaG93VG9vbGJhcj0keyEwfQogICAgICAgICAgICAgICAgICAgIC5zaG93RmlsZW5hbWU9JHshMX0KICAgICAgICAgICAgICAgICAgPjwvZGVlcy1wcmV2aWV3PgogICAgICAgICAgICAgICAgYH0KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0icHJldmlldy1hY3Rpb25zIj4KICAgICAgICAgICR7dGhpcy5lZGl0aW5nP3dgCiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJhY3Rpb24tYnRuIHNlY29uZGFyeSIgQGNsaWNrPSR7dGhpcy5oYW5kbGVEaXNjYXJkfT4KICAgICAgICAgICAgICAgICAgJHt0aGlzLmhhc0NoYW5nZXM/IkRpc2NhcmQiOiJDYW5jZWwifQogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgICAgICAgIGNsYXNzPSJhY3Rpb24tYnRuIHByaW1hcnkiCiAgICAgICAgICAgICAgICAgIEBjbGljaz0ke3RoaXMuaGFuZGxlU2F2ZX0KICAgICAgICAgICAgICAgICAgP2Rpc2FibGVkPSR7dGhpcy5zYXZpbmd8fCF0aGlzLmhhc0NoYW5nZXN9CiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICR7dGhpcy5zYXZpbmc/IlNhdmluZy4uLiI6IlNhdmUifQogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgYDp3YAogICAgICAgICAgICAgICAgJHt0aGlzLmlzVGV4dCgpP3dgPGJ1dHRvbiBjbGFzcz0iYWN0aW9uLWJ0biIgQGNsaWNrPSR7dGhpcy5oYW5kbGVFZGl0fT5FZGl0PC9idXR0b24+YDoiIn0KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImFjdGlvbi1idG4iIEBjbGljaz0ke3RoaXMuaGFuZGxlRG93bmxvYWR9PkRvd25sb2FkPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJhY3Rpb24tYnRuIGRhbmdlciIgQGNsaWNrPSR7dGhpcy5oYW5kbGVEZWxldGV9PkRlbGV0ZTwvYnV0dG9uPgogICAgICAgICAgICAgIGB9CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYDp3YAogICAgICAgIDxkaXYgY2xhc3M9InByZXZpZXctY29udGFpbmVyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImVtcHR5LXN0YXRlIj4KICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNCAySDZhMiAyIDAgMCAwLTIgMnYxNmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWOHoiIC8+CiAgICAgICAgICAgICAgPHBvbHlsaW5lIHBvaW50cz0iMTQgMiAxNCA4IDIwIDgiIC8+CiAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICA8cD5TZWxlY3QgYSBmaWxlIHRvIHByZXZpZXc8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgYH1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksWnModGhpcyxRKX1zdGF0aWN7WnMoYSx0KX19O3JldHVybiBpZT1hfSkoKX0pO3ZhciBLYywkaSxObWEsQml0PWcoKCk9PntwZSgpO3B0KCk7TG1hKCk7SGl0KCk7cWl0KCk7aml0KCk7S2M9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LCRpPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxObWE9KCgpPT57bGV0IHM9W25lKCJkZWVzLXN0b3JhZ2UtYnJvd3NlciIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdLEgsaz1bXSxTPVtdLEksUD1bXSxSPVtdLEssVj1bXSxXPVtdLG1lLEI9W10sVT1bXTt2YXIgaGU9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNTdG9yYWdlQnJvd3NlciIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBGPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6T2JqZWN0fSldLHA9W0woe3R5cGU6U3RyaW5nfSldLGM9W0woe3R5cGU6T2JqZWN0fSldLHg9W1koKV0seT1bWSgpXSxOPVtZKCldLE89W1koKV0sSD1bWSgpXSxJPVtZKCldLEs9W1koKV0sbWU9W1koKV0sS2ModGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJkYXRhUHJvdmlkZXIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoaj0+ImRhdGFQcm92aWRlciJpbiBqLCJoYXMiKSxnZXQ6aShqPT5qLmRhdGFQcm92aWRlciwiZ2V0Iiksc2V0OmkoKGosdWUpPT57ai5kYXRhUHJvdmlkZXI9dWV9LCJzZXQiKX0sbWV0YWRhdGE6Rn0sbyxsKSxLYyh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImJ1Y2tldE5hbWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoaj0+ImJ1Y2tldE5hbWUiaW4gaiwiaGFzIiksZ2V0Omkoaj0+ai5idWNrZXROYW1lLCJnZXQiKSxzZXQ6aSgoaix1ZSk9PntqLmJ1Y2tldE5hbWU9dWV9LCJzZXQiKX0sbWV0YWRhdGE6Rn0sZCx1KSxLYyh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im9uQ2hhbmdlRXZlbnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoaj0+Im9uQ2hhbmdlRXZlbnQiaW4gaiwiaGFzIiksZ2V0Omkoaj0+ai5vbkNoYW5nZUV2ZW50LCJnZXQiKSxzZXQ6aSgoaix1ZSk9PntqLm9uQ2hhbmdlRXZlbnQ9dWV9LCJzZXQiKX0sbWV0YWRhdGE6Rn0sYix2KSxLYyh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InZpZXdUeXBlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGo9PiJ2aWV3VHlwZSJpbiBqLCJoYXMiKSxnZXQ6aShqPT5qLnZpZXdUeXBlLCJnZXQiKSxzZXQ6aSgoaix1ZSk9PntqLnZpZXdUeXBlPXVlfSwic2V0Iil9LG1ldGFkYXRhOkZ9LG0sZiksS2ModGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjdXJyZW50UHJlZml4IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGo9PiJjdXJyZW50UHJlZml4ImluIGosImhhcyIpLGdldDppKGo9PmouY3VycmVudFByZWZpeCwiZ2V0Iiksc2V0OmkoKGosdWUpPT57ai5jdXJyZW50UHJlZml4PXVlfSwic2V0Iil9LG1ldGFkYXRhOkZ9LE0seiksS2ModGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWxlY3RlZEtleSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4ic2VsZWN0ZWRLZXkiaW4gaiwiaGFzIiksZ2V0Omkoaj0+ai5zZWxlY3RlZEtleSwiZ2V0Iiksc2V0OmkoKGosdWUpPT57ai5zZWxlY3RlZEtleT11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSxDLF8pLEtjKHRoaXMsbnVsbCxPLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicmVmcmVzaEtleSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4icmVmcmVzaEtleSJpbiBqLCJoYXMiKSxnZXQ6aShqPT5qLnJlZnJlc2hLZXksImdldCIpLHNldDppKChqLHVlKT0+e2oucmVmcmVzaEtleT11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSwkLEUpLEtjKHRoaXMsbnVsbCxILHtraW5kOiJhY2Nlc3NvciIsbmFtZToicHJldmlld1dpZHRoIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGo9PiJwcmV2aWV3V2lkdGgiaW4gaiwiaGFzIiksZ2V0Omkoaj0+ai5wcmV2aWV3V2lkdGgsImdldCIpLHNldDppKChqLHVlKT0+e2oucHJldmlld1dpZHRoPXVlfSwic2V0Iil9LG1ldGFkYXRhOkZ9LGssUyksS2ModGhpcyxudWxsLEkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpc1Jlc2l6aW5nUHJldmlldyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4iaXNSZXNpemluZ1ByZXZpZXciaW4gaiwiaGFzIiksZ2V0Omkoaj0+ai5pc1Jlc2l6aW5nUHJldmlldywiZ2V0Iiksc2V0OmkoKGosdWUpPT57ai5pc1Jlc2l6aW5nUHJldmlldz11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSxQLFIpLEtjKHRoaXMsbnVsbCxLLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicmVjZW50Q2hhbmdlQ291bnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoaj0+InJlY2VudENoYW5nZUNvdW50ImluIGosImhhcyIpLGdldDppKGo9PmoucmVjZW50Q2hhbmdlQ291bnQsImdldCIpLHNldDppKChqLHVlKT0+e2oucmVjZW50Q2hhbmdlQ291bnQ9dWV9LCJzZXQiKX0sbWV0YWRhdGE6Rn0sVixXKSxLYyh0aGlzLG51bGwsbWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpc1N0cmVhbUNvbm5lY3RlZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4iaXNTdHJlYW1Db25uZWN0ZWQiaW4gaiwiaGFzIiksZ2V0Omkoaj0+ai5pc1N0cmVhbUNvbm5lY3RlZCwiZ2V0Iiksc2V0OmkoKGosdWUpPT57ai5pc1N0cmVhbUNvbm5lY3RlZD11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSxCLFUpLEtjKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOkZ9LG51bGwsdCksaGU9YT1lLnZhbHVlLEYmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Rn0pfXN0YXRpYyBkZW1vPURtYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIkRhdGEgVmlldyJdOyNlPSRpKHRoaXMsbyxudWxsKTtnZXQgZGF0YVByb3ZpZGVyKCl7cmV0dXJuIHRoaXMuI2V9c2V0IGRhdGFQcm92aWRlcihGKXt0aGlzLiNlPUZ9I3Q9KCRpKHRoaXMsbCksJGkodGhpcyxkLCIiKSk7Z2V0IGJ1Y2tldE5hbWUoKXtyZXR1cm4gdGhpcy4jdH1zZXQgYnVja2V0TmFtZShGKXt0aGlzLiN0PUZ9I2E9KCRpKHRoaXMsdSksJGkodGhpcyxiLG51bGwpKTtnZXQgb25DaGFuZ2VFdmVudCgpe3JldHVybiB0aGlzLiNhfXNldCBvbkNoYW5nZUV2ZW50KEYpe3RoaXMuI2E9Rn0jcz0oJGkodGhpcyx2KSwkaSh0aGlzLG0sImNvbHVtbnMiKSk7Z2V0IHZpZXdUeXBlKCl7cmV0dXJuIHRoaXMuI3N9c2V0IHZpZXdUeXBlKEYpe3RoaXMuI3M9Rn0jaT0oJGkodGhpcyxmKSwkaSh0aGlzLE0sIiIpKTtnZXQgY3VycmVudFByZWZpeCgpe3JldHVybiB0aGlzLiNpfXNldCBjdXJyZW50UHJlZml4KEYpe3RoaXMuI2k9Rn0jcj0oJGkodGhpcyx6KSwkaSh0aGlzLEMsIiIpKTtnZXQgc2VsZWN0ZWRLZXkoKXtyZXR1cm4gdGhpcy4jcn1zZXQgc2VsZWN0ZWRLZXkoRil7dGhpcy4jcj1GfSNvPSgkaSh0aGlzLF8pLCRpKHRoaXMsJCwwKSk7Z2V0IHJlZnJlc2hLZXkoKXtyZXR1cm4gdGhpcy4jb31zZXQgcmVmcmVzaEtleShGKXt0aGlzLiNvPUZ9I249KCRpKHRoaXMsRSksJGkodGhpcyxrLDcwMCkpO2dldCBwcmV2aWV3V2lkdGgoKXtyZXR1cm4gdGhpcy4jbn1zZXQgcHJldmlld1dpZHRoKEYpe3RoaXMuI249Rn0jbD0oJGkodGhpcyxTKSwkaSh0aGlzLFAsITEpKTtnZXQgaXNSZXNpemluZ1ByZXZpZXcoKXtyZXR1cm4gdGhpcy4jbH1zZXQgaXNSZXNpemluZ1ByZXZpZXcoRil7dGhpcy4jbD1GfSNjPSgkaSh0aGlzLFIpLCRpKHRoaXMsViwwKSk7Z2V0IHJlY2VudENoYW5nZUNvdW50KCl7cmV0dXJuIHRoaXMuI2N9c2V0IHJlY2VudENoYW5nZUNvdW50KEYpe3RoaXMuI2M9Rn0jZD0oJGkodGhpcyxXKSwkaSh0aGlzLEIsITEpKTtnZXQgaXNTdHJlYW1Db25uZWN0ZWQoKXtyZXR1cm4gdGhpcy4jZH1zZXQgaXNTdHJlYW1Db25uZWN0ZWQoRil7dGhpcy4jZD1GfWNoYW5nZVVuc3Vic2NyaWJlPSgkaSh0aGlzLFUpLG51bGwpO3N0YXRpYyBzdHlsZXM9W2guZGVmYXVsdFN0eWxlcyxIZSxKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CgogICAgICAuYnJvd3Nlci1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgIC50b29sYmFyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgIHBhZGRpbmc6IDEycHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wMykiLCJyZ2JhKDAsIDAsIDAsIDAuMikiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgIH0KCiAgICAgIC5icmVhZGNydW1iIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA0cHg7CiAgICAgICAgZmxleDogMTsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiIzk5OSIpfTsKICAgICAgfQoKICAgICAgLmJyZWFkY3J1bWItaXRlbSB7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHBhZGRpbmc6IDRweCA4cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xNXM7CiAgICAgIH0KCiAgICAgIC5icmVhZGNydW1iLWl0ZW06aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMDUpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmZmYiKX07CiAgICAgIH0KCiAgICAgIC5icmVhZGNydW1iLXNlcGFyYXRvciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZDRkNGQ4IiwiIzU1NSIpfTsKICAgICAgfQoKICAgICAgLnZpZXctdG9nZ2xlIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGdhcDogNHB4OwogICAgICB9CgogICAgICAudmlldy1idG4gewogICAgICAgIHBhZGRpbmc6IDZweCAxMnB4OwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZDRkNGQ4IiwiIzQ0NCIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjODg4Iil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1czsKICAgICAgfQoKICAgICAgLnZpZXctYnRuOmhvdmVyIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjYTFhMWFhIiwiIzY2NiIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzZjNmNDYiLCIjYWFhIil9OwogICAgICB9CgogICAgICAudmlldy1idG4uYWN0aXZlIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjA1KSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSIpfTsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjYTFhMWFhIiwiIzQwNDA0MCIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZTBlMGUwIil9OwogICAgICB9CgogICAgICAuY29udGVudCB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOwogICAgICAgIGdhcDogMDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAuY29udGVudC5oYXMtcHJldmlldyB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgNHB4IHZhcigtLXByZXZpZXctd2lkdGgsIDcwMHB4KTsKICAgICAgfQoKICAgICAgLnJlc2l6ZS1kaXZpZGVyIHsKICAgICAgICB3aWR0aDogNHB4OwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGN1cnNvcjogY29sLXJlc2l6ZTsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMnM7CiAgICAgIH0KCiAgICAgIC5yZXNpemUtZGl2aWRlcjpob3ZlciwKICAgICAgLnJlc2l6ZS1kaXZpZGVyLmFjdGl2ZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4xKSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKSIpfTsKICAgICAgfQoKICAgICAgLm1haW4tdmlldyB7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wMikiLCJyZ2JhKDAsIDAsIDAsIDAuMikiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICB9CgogICAgICAucHJldmlldy1wYW5lbCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wMikiLCJyZ2JhKDAsIDAsIDAsIDAuMikiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgbWFyZ2luLWxlZnQ6IDEycHg7CiAgICAgIH0KCiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHsKICAgICAgICAuY29udGVudCwKICAgICAgICAuY29udGVudC5oYXMtcHJldmlldyB7CiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKICAgICAgICB9CgogICAgICAgIC5wcmV2aWV3LXBhbmVsLAogICAgICAgIC5yZXNpemUtZGl2aWRlciB7CiAgICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLnN0cmVhbS1zdGF0dXMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDRweDsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiIzg4OCIpfTsKICAgICAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDEycHg7CiAgICAgIH0KCiAgICAgIC5zdHJlYW0tZG90IHsKICAgICAgICB3aWR0aDogNnB4OwogICAgICAgIGhlaWdodDogNnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ExYTFhYSIsIiM4ODgiKX07CiAgICAgIH0KCiAgICAgIC5zdHJlYW0tZG90LmNvbm5lY3RlZCB7CiAgICAgICAgYmFja2dyb3VuZDogIzIyYzU1ZTsKICAgICAgfQoKICAgICAgLmNoYW5nZS1pbmRpY2F0b3IgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDZweDsKICAgICAgICBwYWRkaW5nOiA0cHggOHB4OwogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjQ1LCAxNTgsIDExLCAwLjIpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgY29sb3I6ICNmNTllMGI7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMnB4OwogICAgICB9CgogICAgICAuY2hhbmdlLWluZGljYXRvci5wdWxzZSB7CiAgICAgICAgYW5pbWF0aW9uOiBwdWxzZS1vcmFuZ2UgMXMgZWFzZS1pbi1vdXQ7CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMgcHVsc2Utb3JhbmdlIHsKICAgICAgICAwJSB7IGJhY2tncm91bmQ6IHJnYmEoMjQ1LCAxNTgsIDExLCAwLjQpOyB9CiAgICAgICAgMTAwJSB7IGJhY2tncm91bmQ6IHJnYmEoMjQ1LCAxNTgsIDExLCAwLjIpOyB9CiAgICAgIH0KICAgIGBdO2FzeW5jIGNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLnN1YnNjcmliZVRvQ2hhbmdlcygpfWFzeW5jIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLnVuc3Vic2NyaWJlRnJvbUNoYW5nZXMoKX1yZWZyZXNoKCl7dGhpcy5yZWZyZXNoS2V5Kyt9c2V0Vmlld1R5cGUoRil7dGhpcy52aWV3VHlwZT1GfW5hdmlnYXRlVG9QcmVmaXgoRil7dGhpcy5jdXJyZW50UHJlZml4PUYsdGhpcy5zZWxlY3RlZEtleT0iIn1oYW5kbGVLZXlTZWxlY3RlZChGKXt0aGlzLnNlbGVjdGVkS2V5PUYuZGV0YWlsLmtleX1oYW5kbGVOYXZpZ2F0ZShGKXt0aGlzLm5hdmlnYXRlVG9QcmVmaXgoRi5kZXRhaWwucHJlZml4KX1oYW5kbGVPYmplY3REZWxldGVkKEYpe3RoaXMuc2VsZWN0ZWRLZXk9IiIsdGhpcy5yZWZyZXNoS2V5Kyt9dXBkYXRlZChGKXtGLmhhcygiYnVja2V0TmFtZSIpJiYodGhpcy5zZWxlY3RlZEtleT0iIix0aGlzLmN1cnJlbnRQcmVmaXg9IiIsdGhpcy5yZWNlbnRDaGFuZ2VDb3VudD0wLHRoaXMudW5zdWJzY3JpYmVGcm9tQ2hhbmdlcygpLHRoaXMuc3Vic2NyaWJlVG9DaGFuZ2VzKCkpLEYuaGFzKCJvbkNoYW5nZUV2ZW50IikmJih0aGlzLnVuc3Vic2NyaWJlRnJvbUNoYW5nZXMoKSx0aGlzLnN1YnNjcmliZVRvQ2hhbmdlcygpKX1zdWJzY3JpYmVUb0NoYW5nZXMoKXtpZighdGhpcy5vbkNoYW5nZUV2ZW50KXt0aGlzLmlzU3RyZWFtQ29ubmVjdGVkPSExO3JldHVybn10cnl7dGhpcy5jaGFuZ2VVbnN1YnNjcmliZT10aGlzLm9uQ2hhbmdlRXZlbnQoRj0+e3RoaXMuaGFuZGxlQ2hhbmdlKEYpfSksdGhpcy5pc1N0cmVhbUNvbm5lY3RlZD0hMH1jYXRjaChGKXtjb25zb2xlLndhcm4oIltTdG9yYWdlQnJvd3Nlcl0gRmFpbGVkIHRvIHN1YnNjcmliZSB0byBjaGFuZ2VzOiIsRiksdGhpcy5pc1N0cmVhbUNvbm5lY3RlZD0hMX19dW5zdWJzY3JpYmVGcm9tQ2hhbmdlcygpe3RoaXMuY2hhbmdlVW5zdWJzY3JpYmUmJih0aGlzLmNoYW5nZVVuc3Vic2NyaWJlKCksdGhpcy5jaGFuZ2VVbnN1YnNjcmliZT1udWxsKSx0aGlzLmlzU3RyZWFtQ29ubmVjdGVkPSExfWhhbmRsZUNoYW5nZShGKXt0aGlzLnJlY2VudENoYW5nZUNvdW50KyssdGhpcy5yZWZyZXNoS2V5Kyt9c3RhcnRQcmV2aWV3UmVzaXplPWkoRj0+e0YucHJldmVudERlZmF1bHQoKSx0aGlzLmlzUmVzaXppbmdQcmV2aWV3PSEwLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5oYW5kbGVQcmV2aWV3UmVzaXplKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLmVuZFByZXZpZXdSZXNpemUpfSwic3RhcnRQcmV2aWV3UmVzaXplIik7aGFuZGxlUHJldmlld1Jlc2l6ZT1pKEY9PntpZighdGhpcy5pc1Jlc2l6aW5nUHJldmlldylyZXR1cm47bGV0IGo9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIuY29udGVudCIpO2lmKCFqKXJldHVybjtsZXQgdWU9ai5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxsZT1NYXRoLm1pbihNYXRoLm1heCh1ZS5yaWdodC1GLmNsaWVudFgsMjUwKSwxZTMpO3RoaXMucHJldmlld1dpZHRoPWxlfSwiaGFuZGxlUHJldmlld1Jlc2l6ZSIpO2VuZFByZXZpZXdSZXNpemU9aSgoKT0+e3RoaXMuaXNSZXNpemluZ1ByZXZpZXc9ITEsZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLmhhbmRsZVByZXZpZXdSZXNpemUpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHRoaXMuZW5kUHJldmlld1Jlc2l6ZSl9LCJlbmRQcmV2aWV3UmVzaXplIik7cmVuZGVyKCl7bGV0IEY9dGhpcy5jdXJyZW50UHJlZml4P3RoaXMuY3VycmVudFByZWZpeC5zcGxpdCgiLyIpLmZpbHRlcihCb29sZWFuKTpbXTtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iYnJvd3Nlci1jb250YWluZXIiPgogICAgICAgIDxkaXYgY2xhc3M9InRvb2xiYXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0iYnJlYWRjcnVtYiI+CiAgICAgICAgICAgIDxzcGFuCiAgICAgICAgICAgICAgY2xhc3M9ImJyZWFkY3J1bWItaXRlbSIKICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy5uYXZpZ2F0ZVRvUHJlZml4KCIiKX0KICAgICAgICAgICAgPgogICAgICAgICAgICAgICR7dGhpcy5idWNrZXROYW1lfQogICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICR7Ri5tYXAoKGosdWUpPT57bGV0IGxlPUYuc2xpY2UoMCx1ZSsxKS5qb2luKCIvIikrIi8iO3JldHVybiB3YAogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImJyZWFkY3J1bWItc2VwYXJhdG9yIj4vPC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4KICAgICAgICAgICAgICAgICAgY2xhc3M9ImJyZWFkY3J1bWItaXRlbSIKICAgICAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMubmF2aWdhdGVUb1ByZWZpeChsZSl9CiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICR7an0KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICBgfSl9CiAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAke3RoaXMub25DaGFuZ2VFdmVudD93YAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdHJlYW0tc3RhdHVzIj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3RyZWFtLWRvdCAke3RoaXMuaXNTdHJlYW1Db25uZWN0ZWQ/ImNvbm5lY3RlZCI6IiJ9Ij48L3NwYW4+CiAgICAgICAgICAgICAgJHt0aGlzLmlzU3RyZWFtQ29ubmVjdGVkPyJMaXZlIjoiT2ZmbGluZSJ9CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYDoiIn0KICAgICAgICAgICR7dGhpcy5yZWNlbnRDaGFuZ2VDb3VudD4wP3dgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjaGFuZ2UtaW5kaWNhdG9yIHB1bHNlIj4KICAgICAgICAgICAgICAgICAgJHt0aGlzLnJlY2VudENoYW5nZUNvdW50fSBjaGFuZ2Uke3RoaXMucmVjZW50Q2hhbmdlQ291bnQ+MT8icyI6IiJ9CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICBgOiIifQogICAgICAgICAgPGRpdiBjbGFzcz0idmlldy10b2dnbGUiPgogICAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgICAgY2xhc3M9InZpZXctYnRuICR7dGhpcy52aWV3VHlwZT09PSJjb2x1bW5zIj8iYWN0aXZlIjoiIn0iCiAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMuc2V0Vmlld1R5cGUoImNvbHVtbnMiKX0KICAgICAgICAgICAgPgogICAgICAgICAgICAgIENvbHVtbnMKICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgICBjbGFzcz0idmlldy1idG4gJHt0aGlzLnZpZXdUeXBlPT09ImtleXMiPyJhY3RpdmUiOiIifSIKICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy5zZXRWaWV3VHlwZSgia2V5cyIpfQogICAgICAgICAgICA+CiAgICAgICAgICAgICAgTGlzdAogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50ICR7dGhpcy5zZWxlY3RlZEtleT8iaGFzLXByZXZpZXciOiIifSIgc3R5bGU9Ii0tcHJldmlldy13aWR0aDogJHt0aGlzLnByZXZpZXdXaWR0aH1weCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJtYWluLXZpZXciPgogICAgICAgICAgICAke3RoaXMudmlld1R5cGU9PT0iY29sdW1ucyI/d2AKICAgICAgICAgICAgICAgICAgPGRlZXMtc3RvcmFnZS1jb2x1bW5zCiAgICAgICAgICAgICAgICAgICAgLmRhdGFQcm92aWRlcj0ke3RoaXMuZGF0YVByb3ZpZGVyfQogICAgICAgICAgICAgICAgICAgIC5idWNrZXROYW1lPSR7dGhpcy5idWNrZXROYW1lfQogICAgICAgICAgICAgICAgICAgIC5jdXJyZW50UHJlZml4PSR7dGhpcy5jdXJyZW50UHJlZml4fQogICAgICAgICAgICAgICAgICAgIC5yZWZyZXNoS2V5PSR7dGhpcy5yZWZyZXNoS2V5fQogICAgICAgICAgICAgICAgICAgIEBrZXktc2VsZWN0ZWQ9JHt0aGlzLmhhbmRsZUtleVNlbGVjdGVkfQogICAgICAgICAgICAgICAgICAgIEBuYXZpZ2F0ZT0ke3RoaXMuaGFuZGxlTmF2aWdhdGV9CiAgICAgICAgICAgICAgICAgID48L2RlZXMtc3RvcmFnZS1jb2x1bW5zPgogICAgICAgICAgICAgICAgYDp3YAogICAgICAgICAgICAgICAgICA8ZGVlcy1zdG9yYWdlLWtleXMKICAgICAgICAgICAgICAgICAgICAuZGF0YVByb3ZpZGVyPSR7dGhpcy5kYXRhUHJvdmlkZXJ9CiAgICAgICAgICAgICAgICAgICAgLmJ1Y2tldE5hbWU9JHt0aGlzLmJ1Y2tldE5hbWV9CiAgICAgICAgICAgICAgICAgICAgLmN1cnJlbnRQcmVmaXg9JHt0aGlzLmN1cnJlbnRQcmVmaXh9CiAgICAgICAgICAgICAgICAgICAgLnJlZnJlc2hLZXk9JHt0aGlzLnJlZnJlc2hLZXl9CiAgICAgICAgICAgICAgICAgICAgQGtleS1zZWxlY3RlZD0ke3RoaXMuaGFuZGxlS2V5U2VsZWN0ZWR9CiAgICAgICAgICAgICAgICAgICAgQG5hdmlnYXRlPSR7dGhpcy5oYW5kbGVOYXZpZ2F0ZX0KICAgICAgICAgICAgICAgICAgPjwvZGVlcy1zdG9yYWdlLWtleXM+CiAgICAgICAgICAgICAgICBgfQogICAgICAgICAgPC9kaXY+CgogICAgICAgICAgJHt0aGlzLnNlbGVjdGVkS2V5P3dgCiAgICAgICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgIGNsYXNzPSJyZXNpemUtZGl2aWRlciAke3RoaXMuaXNSZXNpemluZ1ByZXZpZXc/ImFjdGl2ZSI6IiJ9IgogICAgICAgICAgICAgICAgICBAbW91c2Vkb3duPSR7dGhpcy5zdGFydFByZXZpZXdSZXNpemV9CiAgICAgICAgICAgICAgICA+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmV2aWV3LXBhbmVsIj4KICAgICAgICAgICAgICAgICAgPGRlZXMtc3RvcmFnZS1wcmV2aWV3CiAgICAgICAgICAgICAgICAgICAgLmRhdGFQcm92aWRlcj0ke3RoaXMuZGF0YVByb3ZpZGVyfQogICAgICAgICAgICAgICAgICAgIC5idWNrZXROYW1lPSR7dGhpcy5idWNrZXROYW1lfQogICAgICAgICAgICAgICAgICAgIC5vYmplY3RLZXk9JHt0aGlzLnNlbGVjdGVkS2V5fQogICAgICAgICAgICAgICAgICAgIEBvYmplY3QtZGVsZXRlZD0ke3RoaXMuaGFuZGxlT2JqZWN0RGVsZXRlZH0KICAgICAgICAgICAgICAgICAgPjwvZGVlcy1zdG9yYWdlLXByZXZpZXc+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICBgOiIifQogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9c3RhdGljeyRpKGEsdCl9fTtyZXR1cm4gaGU9YX0pKCl9KTt2YXIgUm1hPWcoKCk9Pnt9KTt2YXIgT21hPWcoKCk9PntCaXQoKTtIaXQoKTtxaXQoKTtqaXQoKTtSbWEoKTtLWCgpfSk7dmFyIEZtYT1nKCgpPT57a21hKCk7VG1hKCk7a2l0KCk7JG1hKCk7T21hKCl9KTt2YXIgWVgseHUsQm1hLGUxZT1nKCgpPT57cGUoKTtwdCgpO1VhKCk7WVg9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LHh1PWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxCbWE9KCgpPT57bGV0IHM9W25lKCJkZWVzLWFjdGlvbmJhciIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdO3ZhciB5PWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzQWN0aW9uYmFyIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IE09dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bWSgpXSxwPVtZKCldLGM9W1koKV0seD1bWSgpXSxZWCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImN1cnJlbnRCYXIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoej0+ImN1cnJlbnRCYXIiaW4geiwiaGFzIiksZ2V0Omkoej0+ei5jdXJyZW50QmFyLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3ouY3VycmVudEJhcj1OfSwic2V0Iil9LG1ldGFkYXRhOk19LG8sbCksWVgodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0aW1lUmVtYWluaW5nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJ0aW1lUmVtYWluaW5nImluIHosImhhcyIpLGdldDppKHo9PnoudGltZVJlbWFpbmluZywiZ2V0Iiksc2V0OmkoKHosTik9Pnt6LnRpbWVSZW1haW5pbmc9Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxkLHUpLFlYKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicHJvZ3Jlc3NQZXJjZW50IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJwcm9ncmVzc1BlcmNlbnQiaW4geiwiaGFzIiksZ2V0Omkoej0+ei5wcm9ncmVzc1BlcmNlbnQsImdldCIpLHNldDppKCh6LE4pPT57ei5wcm9ncmVzc1BlcmNlbnQ9Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxiLHYpLFlYKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNWaXNpYmxlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJpc1Zpc2libGUiaW4geiwiaGFzIiksZ2V0Omkoej0+ei5pc1Zpc2libGUsImdldCIpLHNldDppKCh6LE4pPT57ei5pc1Zpc2libGU9Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxtLGYpLFlYKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOk19LG51bGwsdCkseT1hPWUudmFsdWUsTSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpNfSl9c3RhdGljIGRlbW9Hcm91cHM9WyJGZWVkYmFjayIsIk92ZXJsYXkiXTtzdGF0aWMgZGVtbz1pKCgpPT57bGV0IE09aShfPT5fLmN1cnJlbnRUYXJnZXQuY2xvc2VzdCgiLmRlbW8tY29udGFpbmVyIik/LnF1ZXJ5U2VsZWN0b3IoImRlZXMtYWN0aW9uYmFyIiksImdldEFjdGlvbmJhciIpO3JldHVybiB3YAogICAgICA8c3R5bGU+CiAgICAgICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgaGVpZ2h0OiAzMDBweDsKICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMzMzM7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIH0KICAgICAgICAuZGVtby1jb250ZW50IHsKICAgICAgICAgIGZsZXg6IDE7CiAgICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGdhcDogOHB4OwogICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgICAgICAgfQogICAgICA8L3N0eWxlPgogICAgICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iZGVtby1jb250ZW50Ij4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiBAY2xpY2s9JHtpKGFzeW5jIF89PntsZXQgTz1NKF8pO2lmKCFPKXJldHVybjtsZXQgJD1hd2FpdCBPLnNob3coe21lc3NhZ2U6IkZpbGUgY2hhbmdlZCBleHRlcm5hbGx5LiBSZWxvYWQ/Iix0eXBlOiJ3YXJuaW5nIixpY29uOiJsdWNpZGU6YWxlcnRUcmlhbmdsZSIsYWN0aW9uczpbe2lkOiJyZWxvYWQiLGxhYmVsOiJSZWxvYWQiLHByaW1hcnk6ITB9LHtpZDoiaWdub3JlIixsYWJlbDoiSWdub3JlIn1dLHRpbWVvdXQ6e2R1cmF0aW9uOjVlMyxkZWZhdWx0QWN0aW9uSWQ6InJlbG9hZCJ9LGRpc21pc3NpYmxlOiEwfSk7Y29uc29sZS5sb2coIkFjdGlvbiBiYXIgcmVzdWx0OiIsJCl9LCJzaG93QWN0aW9uQmFyIil9Pldhcm5pbmc8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIEBjbGljaz0ke2koYXN5bmMgXz0+e2xldCBPPU0oXyk7aWYoIU8pcmV0dXJuO2xldCAkPWF3YWl0IE8uc2hvdyh7bWVzc2FnZToiUHJvY2VzcyBmYWlsZWQgd2l0aCBleGl0IGNvZGUgMSIsdHlwZToiZXJyb3IiLGljb246Imx1Y2lkZTp4Q2lyY2xlIixhY3Rpb25zOlt7aWQ6InJldHJ5IixsYWJlbDoiUmV0cnkiLHByaW1hcnk6ITB9LHtpZDoiZGlzbWlzcyIsbGFiZWw6IkRpc21pc3MifV0sdGltZW91dDp7ZHVyYXRpb246MWU0LGRlZmF1bHRBY3Rpb25JZDoiZGlzbWlzcyJ9fSk7Y29uc29sZS5sb2coIkVycm9yIGJhciByZXN1bHQ6IiwkKX0sInNob3dFcnJvckJhciIpfT5FcnJvcjwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrPSR7aShhc3luYyBfPT57bGV0IE89TShfKTtpZighTylyZXR1cm47bGV0ICQ9YXdhaXQgTy5zaG93KHttZXNzYWdlOiJTYXZlIGNoYW5nZXMgYmVmb3JlIGNsb3Npbmc/Iix0eXBlOiJxdWVzdGlvbiIsaWNvbjoibHVjaWRlOmhlbHBDaXJjbGUiLGFjdGlvbnM6W3tpZDoic2F2ZSIsbGFiZWw6IlNhdmUiLHByaW1hcnk6ITB9LHtpZDoiZGlzY2FyZCIsbGFiZWw6IkRpc2NhcmQifSx7aWQ6ImNhbmNlbCIsbGFiZWw6IkNhbmNlbCJ9XX0pO2NvbnNvbGUubG9nKCJRdWVzdGlvbiBiYXIgcmVzdWx0OiIsJCl9LCJzaG93UXVlc3Rpb25CYXIiKX0+UXVlc3Rpb248L2RlZXMtYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkZWVzLWFjdGlvbmJhcj48L2RlZXMtYWN0aW9uYmFyPgogICAgICA8L2Rpdj4KICAgIGB9LCJkZW1vIik7cXVldWU9W107I2U9eHUodGhpcyxvLG51bGwpO2dldCBjdXJyZW50QmFyKCl7cmV0dXJuIHRoaXMuI2V9c2V0IGN1cnJlbnRCYXIoTSl7dGhpcy4jZT1NfSN0PSh4dSh0aGlzLGwpLHh1KHRoaXMsZCwwKSk7Z2V0IHRpbWVSZW1haW5pbmcoKXtyZXR1cm4gdGhpcy4jdH1zZXQgdGltZVJlbWFpbmluZyhNKXt0aGlzLiN0PU19I2E9KHh1KHRoaXMsdSkseHUodGhpcyxiLDEwMCkpO2dldCBwcm9ncmVzc1BlcmNlbnQoKXtyZXR1cm4gdGhpcy4jYX1zZXQgcHJvZ3Jlc3NQZXJjZW50KE0pe3RoaXMuI2E9TX0jcz0oeHUodGhpcyx2KSx4dSh0aGlzLG0sITEpKTtnZXQgaXNWaXNpYmxlKCl7cmV0dXJuIHRoaXMuI3N9c2V0IGlzVmlzaWJsZShNKXt0aGlzLiNzPU19dGltZW91dEludGVydmFsPSh4dSh0aGlzLGYpLG51bGwpO2N1cnJlbnRSZXNvbHZlPW51bGw7c3RhdGljIHN0eWxlcz1bSGUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgLmFjdGlvbmJhci1pdGVtIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogMGZyOwogICAgICAgIHRyYW5zaXRpb246IGdyaWQtdGVtcGxhdGUtcm93cyAwLjJzIGVhc2Utb3V0OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5NiUpIiwiaHNsKDAgMCUgMTIlKSIpfTsKICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgwIDAlIDg4JSkiLCJoc2woMCAwJSAyMCUpIil9OwogICAgICB9CgogICAgICA6aG9zdCgudmlzaWJsZSkgLmFjdGlvbmJhci1pdGVtIHsKICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IDFmcjsKICAgICAgfQoKICAgICAgLmFjdGlvbmJhci1jb250ZW50IHsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIG1pbi1oZWlnaHQ6IDA7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZS1vdXQ7CiAgICAgIH0KCiAgICAgIDpob3N0KC52aXNpYmxlKSAuYWN0aW9uYmFyLWNvbnRlbnQgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC5wcm9ncmVzcy1iYXIgewogICAgICAgIGhlaWdodDogM3B4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5MCUpIiwiaHNsKDAgMCUgMTglKSIpfTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAucHJvZ3Jlc3MtYmFyLWZpbGwgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxMCAxMDAlIDUwJSkiLCJoc2woMjEwIDEwMCUgNjAlKSIpfTsKICAgICAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjFzIGxpbmVhcjsKICAgICAgfQoKICAgICAgLnByb2dyZXNzLWJhci1maWxsLndhcm5pbmcgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMzggOTIlIDUwJSkiLCJoc2woMzggOTIlIDU1JSkiKX07CiAgICAgIH0KCiAgICAgIC5wcm9ncmVzcy1iYXItZmlsbC5lcnJvciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDcwJSA1MCUpIiwiaHNsKDAgNzAlIDU1JSkiKX07CiAgICAgIH0KCiAgICAgIC5wcm9ncmVzcy1iYXItZmlsbC5xdWVzdGlvbiB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyNzAgNzAlIDUwJSkiLCJoc2woMjcwIDcwJSA2MCUpIil9OwogICAgICB9CgogICAgICAuY29udGVudCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgIGdhcDogMTJweDsKICAgICAgICBtaW4taGVpZ2h0OiAzMnB4OwogICAgICB9CgogICAgICAubWVzc2FnZS1zZWN0aW9uIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgZmxleDogMTsKICAgICAgICBtaW4td2lkdGg6IDA7CiAgICAgIH0KCiAgICAgIC5tZXNzYWdlLWljb24gewogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNDAlKSIsImhzbCgwIDAlIDYwJSkiKX07CiAgICAgIH0KCiAgICAgIC5tZXNzYWdlLWljb24uaW5mbyB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDEwMCUgNDUlKSIsImhzbCgyMTAgMTAwJSA2MCUpIil9OwogICAgICB9CgogICAgICAubWVzc2FnZS1pY29uLndhcm5pbmcgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDM4IDkyJSA0NSUpIiwiaHNsKDM4IDkyJSA1NSUpIil9OwogICAgICB9CgogICAgICAubWVzc2FnZS1pY29uLmVycm9yIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDcwJSA1MCUpIiwiaHNsKDAgNzAlIDU1JSkiKX07CiAgICAgIH0KCiAgICAgIC5tZXNzYWdlLWljb24ucXVlc3Rpb24gewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDI3MCA3MCUgNTAlKSIsImhzbCgyNzAgNzAlIDYwJSkiKX07CiAgICAgIH0KCiAgICAgIC5tZXNzYWdlLXRleHQgewogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDIwJSkiLCJoc2woMCAwJSA4NSUpIil9OwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgfQoKICAgICAgLmFjdGlvbnMtc2VjdGlvbiB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbiB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNHB4OwogICAgICAgIHBhZGRpbmc6IDRweCAxMHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idXR0b24uc2Vjb25kYXJ5IHsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDMwJSkiLCJoc2woMCAwJSA3MCUpIil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDgwJSkiLCJoc2woMCAwJSAzMCUpIil9OwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbi5zZWNvbmRhcnk6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5MiUpIiwiaHNsKDAgMCUgMTglKSIpfTsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idXR0b24ucHJpbWFyeSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgMTAwJSA1MCUpIiwiaHNsKDIxMCAxMDAlIDU1JSkiKX07CiAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbi5wcmltYXJ5OmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxMCAxMDAlIDQ1JSkiLCJoc2woMjEwIDEwMCUgNTAlKSIpfTsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idXR0b24ucHJpbWFyeS53YXJuaW5nIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDM4IDkyJSA0NSUpIiwiaHNsKDM4IDkyJSA1MCUpIil9OwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbi5wcmltYXJ5Lndhcm5pbmc6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMzggOTIlIDQwJSkiLCJoc2woMzggOTIlIDQ1JSkiKX07CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uLnByaW1hcnkuZXJyb3IgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCA3MCUgNTAlKSIsImhzbCgwIDcwJSA1NSUpIil9OwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbi5wcmltYXJ5LmVycm9yOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgNzAlIDQ1JSkiLCJoc2woMCA3MCUgNTAlKSIpfTsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idXR0b24ucHJpbWFyeS5xdWVzdGlvbiB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyNzAgNzAlIDUwJSkiLCJoc2woMjcwIDcwJSA1NSUpIil9OwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbi5wcmltYXJ5LnF1ZXN0aW9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDI3MCA3MCUgNDUlKSIsImhzbCgyNzAgNzAlIDUwJSkiKX07CiAgICAgIH0KCiAgICAgIC5jb3VudGRvd24gewogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBvcGFjaXR5OiAwLjg7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDJweDsKICAgICAgfQoKICAgICAgLmRpc21pc3MtYnV0dG9uIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA1MCUpIiwiaHNsKDAgMCUgNTAlKSIpfTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgfQoKICAgICAgLmRpc21pc3MtYnV0dG9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgODglKSIsImhzbCgwIDAlIDIyJSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAzMCUpIiwiaHNsKDAgMCUgNzAlKSIpfTsKICAgICAgfQogICAgYF07cmVuZGVyKCl7bGV0IE09dGhpcy5jdXJyZW50QmFyLHo9TT8udHlwZXx8ImluZm8iLE49TT8udGltZW91dCYmdGhpcy50aW1lUmVtYWluaW5nPjA7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbmJhci1pdGVtIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb25iYXItY29udGVudCI+CiAgICAgICAgICAke00/d2AKICAgICAgICAgICAgJHtOP3dgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyIj4KICAgICAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgICAgY2xhc3M9InByb2dyZXNzLWJhci1maWxsICR7en0iCiAgICAgICAgICAgICAgICAgIHN0eWxlPSJ3aWR0aDogJHt0aGlzLnByb2dyZXNzUGVyY2VudH0lIgogICAgICAgICAgICAgICAgPjwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICBgOiIifQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXNzYWdlLXNlY3Rpb24iPgogICAgICAgICAgICAgICAgJHtNLmljb24/d2AKICAgICAgICAgICAgICAgICAgPGRlZXMtaWNvbgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJtZXNzYWdlLWljb24gJHt6fSIKICAgICAgICAgICAgICAgICAgICAuaWNvbj0ke00uaWNvbn0KICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZT0iMTYiCiAgICAgICAgICAgICAgICAgID48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibWVzc2FnZS10ZXh0Ij4ke00ubWVzc2FnZX08L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9ucy1zZWN0aW9uIj4KICAgICAgICAgICAgICAgICR7TS5hY3Rpb25zLm1hcChDPT50aGlzLnJlbmRlckFjdGlvbkJ1dHRvbihDLE0sTikpfQogICAgICAgICAgICAgICAgJHtNLmRpc21pc3NpYmxlP3dgCiAgICAgICAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZGlzbWlzcy1idXR0b24iCiAgICAgICAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlRGlzbWlzcygpfQogICAgICAgICAgICAgICAgICAgIHRpdGxlPSJEaXNtaXNzIgogICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6eCJ9IGljb25TaXplPSIxNCI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgOiIifQogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyQWN0aW9uQnV0dG9uKE0seixOKXtsZXQgQz1NLnByaW1hcnksXz16LnR5cGV8fCJpbmZvIixPPXoudGltZW91dD8uZGVmYXVsdEFjdGlvbklkPT09TS5pZCwkPU4mJk8sRT1NYXRoLmNlaWwodGhpcy50aW1lUmVtYWluaW5nLzFlMyk7cmV0dXJuIHdgCiAgICAgIDxidXR0b24KICAgICAgICBjbGFzcz0iYWN0aW9uLWJ1dHRvbiAke0M/YHByaW1hcnkgJHtffWA6InNlY29uZGFyeSJ9IgogICAgICAgIEBjbGljaz0keygpPT50aGlzLmhhbmRsZUFjdGlvbihNLmlkLCExKX0KICAgICAgPgogICAgICAgICR7TS5pY29uP3dgCiAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7TS5pY29ufSBpY29uU2l6ZT0iMTIiPjwvZGVlcy1pY29uPgogICAgICAgIGA6IiJ9CiAgICAgICAgPHNwYW4+JHtNLmxhYmVsfTwvc3Bhbj4KICAgICAgICAkeyQ/d2AKICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb3VudGRvd24iPigke0V9cyk8L3NwYW4+CiAgICAgICAgYDoiIn0KICAgICAgPC9idXR0b24+CiAgICBgfWFzeW5jIHNob3coTSl7cmV0dXJuIG5ldyBQcm9taXNlKHo9Pnt0aGlzLnF1ZXVlLnB1c2goe29wdGlvbnM6TSxyZXNvbHZlOnp9KSx0aGlzLmN1cnJlbnRCYXJ8fHRoaXMucHJvY2Vzc1F1ZXVlKCl9KX1kaXNtaXNzKCl7dGhpcy5oYW5kbGVEaXNtaXNzKCl9Y2xlYXJRdWV1ZSgpe2ZvcihsZXQgTSBvZiB0aGlzLnF1ZXVlKU0ucmVzb2x2ZSh7YWN0aW9uSWQ6ImRpc21pc3NlZCIsdGltZWRPdXQ6ITF9KTt0aGlzLnF1ZXVlPVtdfWFzeW5jIGhpZGVDdXJyZW50QmFyKCl7dGhpcy5jbGFzc0xpc3QucmVtb3ZlKCJ2aXNpYmxlIiksdGhpcy5pc1Zpc2libGU9ITEsYXdhaXQgbmV3IFByb21pc2UoTT0+c2V0VGltZW91dChNLDIyMCkpLHRoaXMuY3VycmVudEJhcj1udWxsLHRoaXMuY3VycmVudFJlc29sdmU9bnVsbH1hc3luYyBwcm9jZXNzUXVldWUoKXtpZih0aGlzLnF1ZXVlLmxlbmd0aD09PTApe3RoaXMuaGlkZUN1cnJlbnRCYXIoKTtyZXR1cm59bGV0IE09dGhpcy5xdWV1ZS5zaGlmdCgpO3RoaXMuY3VycmVudEJhcj1NLm9wdGlvbnMsdGhpcy5jdXJyZW50UmVzb2x2ZT1NLnJlc29sdmUsdGhpcy5pc1Zpc2libGU9ITAsYXdhaXQgdGhpcy51cGRhdGVDb21wbGV0ZSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pnt0aGlzLmNsYXNzTGlzdC5hZGQoInZpc2libGUiKX0pLE0ub3B0aW9ucy50aW1lb3V0JiZ0aGlzLnN0YXJ0VGltZW91dChNLm9wdGlvbnMudGltZW91dC5kdXJhdGlvbixNLm9wdGlvbnMudGltZW91dC5kZWZhdWx0QWN0aW9uSWQpfXN0YXJ0VGltZW91dChNLHope3RoaXMudGltZVJlbWFpbmluZz1NLHRoaXMucHJvZ3Jlc3NQZXJjZW50PTEwMDtsZXQgTj1EYXRlLm5vdygpLEM9NTA7dGhpcy50aW1lb3V0SW50ZXJ2YWw9c2V0SW50ZXJ2YWwoKCk9PntsZXQgXz1EYXRlLm5vdygpLU47dGhpcy50aW1lUmVtYWluaW5nPU1hdGgubWF4KDAsTS1fKSx0aGlzLnByb2dyZXNzUGVyY2VudD10aGlzLnRpbWVSZW1haW5pbmcvTSoxMDAsdGhpcy50aW1lUmVtYWluaW5nPD0wJiYodGhpcy5jbGVhclRpbWVvdXRJbnRlcnZhbCgpLHRoaXMuaGFuZGxlQWN0aW9uKHosITApKX0sQyl9Y2xlYXJUaW1lb3V0SW50ZXJ2YWwoKXt0aGlzLnRpbWVvdXRJbnRlcnZhbCYmKGNsZWFySW50ZXJ2YWwodGhpcy50aW1lb3V0SW50ZXJ2YWwpLHRoaXMudGltZW91dEludGVydmFsPW51bGwpfWhhbmRsZUFjdGlvbihNLHope3RoaXMuY2xlYXJUaW1lb3V0SW50ZXJ2YWwoKSx0aGlzLmN1cnJlbnRSZXNvbHZlJiZ0aGlzLmN1cnJlbnRSZXNvbHZlKHthY3Rpb25JZDpNLHRpbWVkT3V0Onp9KSx0aGlzLnByb2Nlc3NRdWV1ZSgpfWhhbmRsZURpc21pc3MoKXt0aGlzLmhhbmRsZUFjdGlvbigiZGlzbWlzc2VkIiwhMSl9YXN5bmMgZGlzY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuY2xlYXJUaW1lb3V0SW50ZXJ2YWwoKX1zdGF0aWN7eHUoYSx0KX19O3JldHVybiB5PWF9KSgpfSk7dmFyIEhtYT1nKCgpPT57fSk7dmFyIHFtYT1nKCgpPT57ZTFlKCk7SG1hKCl9KTt2YXIgam1hLFZtYT1nKCgpPT57cGUoKTtqbWE9aSgoKT0+d2AKICA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBnYXA6IDhweDsgYWxpZ24taXRlbXM6IGNlbnRlcjsiPgogICAgPGRlZXMtYmFkZ2UgLnRleHQ9JHsiRGVmYXVsdCJ9PjwvZGVlcy1iYWRnZT4KICAgIDxkZWVzLWJhZGdlIC50eXBlPSR7InByaW1hcnkifSAudGV4dD0keyJQcmltYXJ5In0+PC9kZWVzLWJhZGdlPgogICAgPGRlZXMtYmFkZ2UgLnR5cGU9JHsic3VjY2VzcyJ9IC50ZXh0PSR7IlN1Y2Nlc3MifT48L2RlZXMtYmFkZ2U+CiAgICA8ZGVlcy1iYWRnZSAudHlwZT0keyJ3YXJuaW5nIn0gLnRleHQ9JHsiV2FybmluZyJ9PjwvZGVlcy1iYWRnZT4KICAgIDxkZWVzLWJhZGdlIC50eXBlPSR7ImVycm9yIn0gLnRleHQ9JHsiRXJyb3IifT48L2RlZXMtYmFkZ2U+CiAgICA8ZGVlcy1iYWRnZSAudHlwZT0keyJwcmltYXJ5In0gLnJvdW5kZWQ9JHshMH0gLnRleHQ9JHsiUm91bmRlZCJ9PjwvZGVlcy1iYWRnZT4KICA8L2Rpdj4KYCwiZGVtb0Z1bmMiKX0pO3ZhciB0MWUsd2csVW1hLFdtYT1nKCgpPT57cGUoKTtrdCgpO1ZtYSgpO3B0KCk7dDFlPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSx3Zz1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sVW1hPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1iYWRnZSIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdO3ZhciB4PWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzQmFkZ2UiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgbT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZ30pXSxwPVtMKHt0eXBlOlN0cmluZ30pXSxjPVtMKHt0eXBlOkJvb2xlYW59KV0sdDFlKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidHlwZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShmPT4idHlwZSJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLnR5cGUsImdldCIpLHNldDppKChmLHkpPT57Zi50eXBlPXl9LCJzZXQiKX0sbWV0YWRhdGE6bX0sbyxsKSx0MWUodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0ZXh0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGY9PiJ0ZXh0ImluIGYsImhhcyIpLGdldDppKGY9PmYudGV4dCwiZ2V0Iiksc2V0OmkoKGYseSk9PntmLnRleHQ9eX0sInNldCIpfSxtZXRhZGF0YTptfSxkLHUpLHQxZSh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InJvdW5kZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+InJvdW5kZWQiaW4gZiwiaGFzIiksZ2V0OmkoZj0+Zi5yb3VuZGVkLCJnZXQiKSxzZXQ6aSgoZix5KT0+e2Yucm91bmRlZD15fSwic2V0Iil9LG1ldGFkYXRhOm19LGIsdiksdDFlKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOm19LG51bGwsdCkseD1hPWUudmFsdWUsbSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTptfSl9c3RhdGljIGRlbW89am1hO3N0YXRpYyBkZW1vR3JvdXBzPVsiRmVlZGJhY2siXTsjZT13Zyh0aGlzLG8sImRlZmF1bHQiKTtnZXQgdHlwZSgpe3JldHVybiB0aGlzLiNlfXNldCB0eXBlKG0pe3RoaXMuI2U9bX0jdD0od2codGhpcyxsKSx3Zyh0aGlzLGQsIiIpKTtnZXQgdGV4dCgpe3JldHVybiB0aGlzLiN0fXNldCB0ZXh0KG0pe3RoaXMuI3Q9bX0jYT0od2codGhpcyx1KSx3Zyh0aGlzLGIsITEpKTtnZXQgcm91bmRlZCgpe3JldHVybiB0aGlzLiNhfXNldCByb3VuZGVkKG0pe3RoaXMuI2E9bX1jb25zdHJ1Y3Rvcigpe3N1cGVyKCksd2codGhpcyx2KSx0YS5zZXR1cCgpfXN0YXRpYyBzdHlsZXM9W0hlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICAvKiBUT0RPOiBNaWdyYXRlIGhhcmRjb2RlZCB2YWx1ZXMgdG8gLS1kZWVzLSogQ1NTIHZhcmlhYmxlcyAqLwogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CgogICAgICAuYmFkZ2UgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgcGFkZGluZzogMnB4IDhweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBsaW5lLWhlaWdodDogMS41OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CgogICAgICAuYmFkZ2Uucm91bmRlZCB7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgICAgfQoKICAgICAgLmJhZGdlLmRlZmF1bHQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjVmNWY1IiwiIzMzMyIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM2NjYiLCIjY2NjIil9OwogICAgICB9CgogICAgICAuYmFkZ2UucHJpbWFyeSB7CiAgICAgICAgYmFja2dyb3VuZDogIzAwNTBiOTsKICAgICAgICBjb2xvcjogI2ZmZmZmZjsKICAgICAgfQoKICAgICAgLmJhZGdlLnN1Y2Nlc3MgewogICAgICAgIGJhY2tncm91bmQ6ICMyZTdkMzI7CiAgICAgICAgY29sb3I6ICNmZmZmZmY7CiAgICAgIH0KCiAgICAgIC5iYWRnZS53YXJuaW5nIHsKICAgICAgICBiYWNrZ3JvdW5kOiAjZWQ2YzAyOwogICAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgICB9CgogICAgICAuYmFkZ2UuZXJyb3IgewogICAgICAgIGJhY2tncm91bmQ6ICNlNDAwMmI7CiAgICAgICAgY29sb3I6ICNmZmZmZmY7CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJiYWRnZSAke3RoaXMudHlwZX0gJHt0aGlzLnJvdW5kZWQ/InJvdW5kZWQiOiIifSI+CiAgICAgICAgJHt0aGlzLnRleHR9CiAgICAgIDwvZGl2PgogICAgYH1zdGF0aWN7d2coYSx0KX19O3JldHVybiB4PWF9KSgpfSk7dmFyIEdtYT1nKCgpPT57V21hKCl9KTt2YXIgS21hLFltYT1nKCgpPT57cGUoKTtLbWE9aSgoKT0+d2AKICA8ZGVlcy1oaW50PjwvZGVlcy1oaW50PgpgLCJkZW1vRnVuYyIpfSk7dmFyIFptYSxWaXQsWG1hLFFtYT1nKCgpPT57cGUoKTtrdCgpO1ltYSgpO3B0KCk7Wm1hPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxWaXQ9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LFhtYT0oKCk9PntsZXQgcz1bbmUoImRlZXMtaGludCIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdO3ZhciBwPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzSGludCIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBkPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6U3RyaW5nfSldLFptYSh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InR5cGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkodT0+InR5cGUiaW4gdSwiaGFzIiksZ2V0OmkodT0+dS50eXBlLCJnZXQiKSxzZXQ6aSgodSxjKT0+e3UudHlwZT1jfSwic2V0Iil9LG1ldGFkYXRhOmR9LG8sbCksWm1hKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOmR9LG51bGwsdCkscD1hPWUudmFsdWUsZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpkfSl9c3RhdGljIGRlbW89S21hO3N0YXRpYyBkZW1vR3JvdXBzPVsiRmVlZGJhY2siXTsjZT1WaXQodGhpcyxvLCJpbmZvIik7Z2V0IHR5cGUoKXtyZXR1cm4gdGhpcy4jZX1zZXQgdHlwZShkKXt0aGlzLiNlPWR9Y29uc3RydWN0b3IoKXtzdXBlcigpLFZpdCh0aGlzLGwpLHRhLnNldHVwKCl9c3RhdGljIHN0eWxlcz1bSGUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AgPGRpdiBjbGFzcz0ibWFpbmJveCI+PC9kaXY+IGB9c3RhdGlje1ZpdChhLHQpfX07cmV0dXJuIHA9YX0pKCl9KTt2YXIgSm1hPWcoKCk9PntRbWEoKX0pO3ZhciBlNmEsdDZhPWcoKCk9PntwZSgpO0l0KCk7ZTZhPWkoKCk9PntsZXQgcz1bWyJSZXNvbHZpbmcgd29ya3NwYWNlIHBhY2thZ2VzIl0sWyJSZXNvbHZpbmcgd29ya3NwYWNlIHBhY2thZ2VzIiwiRG93bmxvYWRpbmcgdWktYXNzZXRzLnRhci5neiJdLFsiUmVzb2x2aW5nIHdvcmtzcGFjZSBwYWNrYWdlcyIsIkRvd25sb2FkaW5nIHVpLWFzc2V0cy50YXIuZ3oiLCJWZXJpZnlpbmcgY2hlY2tzdW0iXSxbIlJlc29sdmluZyB3b3Jrc3BhY2UgcGFja2FnZXMiLCJEb3dubG9hZGluZyB1aS1hc3NldHMudGFyLmd6IiwiVmVyaWZ5aW5nIGNoZWNrc3VtIiwiRXh0cmFjdGluZyByZWxlYXNlIGJ1bmRsZSJdLFsiUmVzb2x2aW5nIHdvcmtzcGFjZSBwYWNrYWdlcyIsIkRvd25sb2FkaW5nIHVpLWFzc2V0cy50YXIuZ3oiLCJWZXJpZnlpbmcgY2hlY2tzdW0iLCJFeHRyYWN0aW5nIHJlbGVhc2UgYnVuZGxlIiwiUmVzdGFydGluZyBhcHBsaWNhdGlvbiJdXSxlPWkodD0+dD49MTAwPyJVcGxvYWQgY29tcGxldGUuIEZpbmFsaXppbmcgcGFja2FnZSBtYW5pZmVzdC4uLiI6dD49ODI/IlZlcmlmeWluZyBjaGVja3N1bXMgYmVmb3JlIGhhbmRvZmYuLi4iOnQ+PTU1PyJVcGxvYWRpbmcgdGh1bWJuYWlscyB0byBlZGdlIGNhY2hlLi4uIjp0Pj0yNT8iU3RyZWFtaW5nIHNvdXJjZSBmaWxlcyB0byB0aGUgcmVtb3RlIHdvcmtlci4uLiI6IlByZXBhcmluZyBhcmNoaXZlIGFuZCBkZXBlbmRlbmN5IGdyYXBoLi4uIiwiZ2V0VXBsb2FkU3RhdHVzIik7cmV0dXJuIHdgCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyB0PT57bGV0IGE9dC5xdWVyeVNlbGVjdG9yKCIjbGl2ZS1wcm9ncmVzcyIpLHI9dC5xdWVyeVNlbGVjdG9yKCIjdGVybWluYWwtcHJvZ3Jlc3MiKSxuPXQ7aWYoIWF8fCFyKXJldHVybjtuLl9fcHJvZ3Jlc3NiYXJEZW1vSW50ZXJ2YWxJZCYmd2luZG93LmNsZWFySW50ZXJ2YWwobi5fX3Byb2dyZXNzYmFyRGVtb0ludGVydmFsSWQpO2xldCBvPTEyLGw9MCxwPWkoKCk9PnthLnBlcmNlbnRhZ2U9byxhLnN0YXR1c1RleHQ9ZShvKSxyLnRlcm1pbmFsTGluZXM9Wy4uLnNbbF1dLHIucGVyY2VudGFnZT1NYXRoLm1pbigxMDAsKGwrMSkqMjApLHIuaW5kZXRlcm1pbmF0ZT1sPHMubGVuZ3RoLTEsbz1vPj0xMDA/MTI6TWF0aC5taW4oMTAwLG8rMTEpLGw9bD49cy5sZW5ndGgtMT8wOmwrMX0sInVwZGF0ZURlbW8iKTtwKCksbi5fX3Byb2dyZXNzYmFyRGVtb0ludGVydmFsSWQ9d2luZG93LnNldEludGVydmFsKHAsMTQwMCl9fT4KICAgICAgPHN0eWxlPgogICAgICAgICR7SmAKICAgICAgICAgIC5kZW1vQm94IHsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTUlKSIsImhzbCgwIDAlIDklKSIpfTsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgcGFkZGluZzogNDBweDsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgICAgfQoKICAgICAgICAgIC5kZW1vSW50cm8gewogICAgICAgICAgICBtYXgtd2lkdGg6IDcyMHB4OwogICAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUgMjAlIDMwJSkiLCJoc2woMjE1IDE4JSA3NiUpIil9OwogICAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgICB9CgogICAgICAgICAgLnNob3djYXNlR3JpZCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjgwcHgsIDFmcikpOwogICAgICAgICAgICBnYXA6IDE4cHg7CiAgICAgICAgICB9CgogICAgICAgICAgLnNob3djYXNlQ2FyZCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDI1NSwyNTUsMjU1LDAuNzgpIiwicmdiYSgyNTUsMjU1LDI1NSwwLjA0KSIpfTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgyMTAgMjIlIDg2JSkiLCJoc2woMjEwIDEwJSAxOCUpIil9OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4OwogICAgICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICBnYXA6IDE2cHg7CiAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig4cHgpOwogICAgICAgICAgfQoKICAgICAgICAgIC5zaG93Y2FzZUNhcmQud2lkZSB7CiAgICAgICAgICAgIGdyaWQtY29sdW1uOiBzcGFuIDI7CiAgICAgICAgICB9CgogICAgICAgICAgLnNob3djYXNlQ2FyZCBoMyB7CiAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgZm9udC1zaXplOiAxNXB4OwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgfQoKICAgICAgICAgIC5zaG93Y2FzZUNhcmQgcCB7CiAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1IDE0JSA0MCUpIiwiaHNsKDIxNSAxMCUgNjYlKSIpfTsKICAgICAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgICAgICBsaW5lLWhlaWdodDogMS41NTsKICAgICAgICAgIH0KCiAgICAgICAgICAucHJvZ3Jlc3NTdGFjayB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIGdhcDogMTRweDsKICAgICAgICAgIH0KCiAgICAgICAgICAuY29kZUxhYmVsIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdTRiBNb25vJywgJ01vbmFjbycsICdJbmNvbnNvbGF0YScsICdGaXJhIENvZGUnLCBtb25vc3BhY2U7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1IDE0JSA0NCUpIiwiaHNsKDIxNSAxMCUgNzAlKSIpfTsKICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDNlbTsKICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICAgIH0KCiAgICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHsKICAgICAgICAgICAgLmRlbW9Cb3ggewogICAgICAgICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5zaG93Y2FzZUNhcmQud2lkZSB7CiAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IHNwYW4gMTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIGB9CiAgICAgIDwvc3R5bGU+CiAgICAgIDxkaXYgY2xhc3M9ImRlbW9Cb3giPgogICAgICAgIDxkaXYgY2xhc3M9ImRlbW9JbnRybyI+CiAgICAgICAgICA8Y29kZT5kZWVzLXByb2dyZXNzYmFyPC9jb2RlPiBjYW4gbm93IHBhaXIgYSBjbGFzc2ljIHByb2dyZXNzIGJhciB3aXRoIGEgZml4ZWQtaGVpZ2h0IHN0YXR1cyBhcmVhLiBVc2Ugc2ltcGxlIHN0YXR1cyB0ZXh0IGZvciBjbGVhciB1c2VyLWZhY2luZyB1cGRhdGVzIG9yIHN3aXRjaCB0byB0ZXJtaW5hbC1saWtlIGxpbmVzIHdoZW4geW91IHdhbnQgcmVjZW50IHN0ZXBzIHRvIHN0YXkgdmlzaWJsZSB3aXRob3V0IGNhdXNpbmcgbGF5b3V0IGp1bXBzLgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNob3djYXNlR3JpZCI+CiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic2hvd2Nhc2VDYXJkIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29kZUxhYmVsIj5EZXRlcm1pbmF0ZTwvZGl2PgogICAgICAgICAgICA8aDM+UGVyY2VudGFnZSBwbHVzIGN1cnJlbnQgdGFzazwvaDM+CiAgICAgICAgICAgIDxwPlVzZSBhIGxhYmVsLCBhIHBlcmNlbnRhZ2UsIGFuZCBvbmUgc2hvcnQgc3RhdHVzIGxpbmUgd2hlbiB0aGUgd29yayBpcyBtZWFzdXJhYmxlLjwvcD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3NTdGFjayI+CiAgICAgICAgICAgICAgPGRlZXMtcHJvZ3Jlc3NiYXIKICAgICAgICAgICAgICAgIGxhYmVsPSJNZWRpYSB1cGxvYWQiCiAgICAgICAgICAgICAgICAucGVyY2VudGFnZT0kezY4fQogICAgICAgICAgICAgICAgc3RhdHVzVGV4dD0iVXBsb2FkaW5nIHRodW1ibmFpbHMgdG8gZWRnZSBjYWNoZS4uLiIKICAgICAgICAgICAgICAgIC5zdGF0dXNSb3dzPSR7Mn0KICAgICAgICAgICAgICA+PC9kZWVzLXByb2dyZXNzYmFyPgogICAgICAgICAgICAgIDxkZWVzLXByb2dyZXNzYmFyCiAgICAgICAgICAgICAgICBsYWJlbD0iQXNzZXQgc3luYyIKICAgICAgICAgICAgICAgIC5wZXJjZW50YWdlPSR7MTAwfQogICAgICAgICAgICAgICAgc3RhdHVzVGV4dD0iQWxsIGZpbGVzIGFyZSBzeW5jZWQgYW5kIGF2YWlsYWJsZS4iCiAgICAgICAgICAgICAgICAuc3RhdHVzUm93cz0kezJ9CiAgICAgICAgICAgICAgPjwvZGVlcy1wcm9ncmVzc2Jhcj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNob3djYXNlQ2FyZCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvZGVMYWJlbCI+SW5kZXRlcm1pbmF0ZTwvZGl2PgogICAgICAgICAgICA8aDM+U3Bpbm5lci1zdHlsZSB0ZXh0IGluZGljYXRvcjwvaDM+CiAgICAgICAgICAgIDxwPldoZW4gdGhlcmUgaXMgbm8gdHJ1c3R3b3J0aHkgcGVyY2VudGFnZSB5ZXQsIGtlZXAgdGhlIGJhciBtb3ZpbmcgYW5kIGxldCB0aGUgdGV4dCBleHBsYWluIHdoYXQgaXMgaGFwcGVuaW5nLjwvcD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3NTdGFjayI+CiAgICAgICAgICAgICAgPGRlZXMtcHJvZ3Jlc3NiYXIKICAgICAgICAgICAgICAgIGxhYmVsPSJEZXBlbmRlbmN5IGluc3RhbGwiCiAgICAgICAgICAgICAgICAuaW5kZXRlcm1pbmF0ZT0keyEwfQogICAgICAgICAgICAgICAgc3RhdHVzVGV4dD0iRG93bmxvYWRpbmcgcGFja2FnZSBtZXRhZGF0YS4uLiIKICAgICAgICAgICAgICAgIC5zdGF0dXNSb3dzPSR7Mn0KICAgICAgICAgICAgICA+PC9kZWVzLXByb2dyZXNzYmFyPgogICAgICAgICAgICAgIDxkZWVzLXByb2dyZXNzYmFyCiAgICAgICAgICAgICAgICBsYWJlbD0iUXVldWVkIGpvYiIKICAgICAgICAgICAgICAgIC5wZXJjZW50YWdlPSR7MzJ9CiAgICAgICAgICAgICAgICAuc2hvd1BlcmNlbnRhZ2U9JHshMX0KICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ9IldhaXRpbmcgZm9yIGEgd29ya2VyIHNsb3QgdG8gYmVjb21lIGF2YWlsYWJsZS4uLiIKICAgICAgICAgICAgICAgIC5zdGF0dXNSb3dzPSR7Mn0KICAgICAgICAgICAgICA+PC9kZWVzLXByb2dyZXNzYmFyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic2hvd2Nhc2VDYXJkIHdpZGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2RlTGFiZWwiPlRlcm1pbmFsIExpbmVzPC9kaXY+CiAgICAgICAgICAgIDxoMz5GaXhlZC1oZWlnaHQgdGVybWluYWwtc3R5bGUgc3RhdHVzIG91dHB1dDwvaDM+CiAgICAgICAgICAgIDxwPlRoZSBwYW5lbCBzdGF5cyB0aGUgc2FtZSBoZWlnaHQgd2hpbGUgdGhlIGxhdGVzdCBzdGVwIHN0YXlzIHZpc2libGUuIFRoaXMgaXMgdXNlZnVsIGZvciB1cGRhdGUgZmxvd3MsIGRvd25sb2FkcywgYW5kIHN0YWdlZCBiYWNrZ3JvdW5kIHdvcmsuPC9wPgogICAgICAgICAgICA8ZGVlcy1wcm9ncmVzc2JhcgogICAgICAgICAgICAgIGlkPSJ0ZXJtaW5hbC1wcm9ncmVzcyIKICAgICAgICAgICAgICBsYWJlbD0iUmVsZWFzZSBidW5kbGUiCiAgICAgICAgICAgICAgLnBlcmNlbnRhZ2U9JHsyMH0KICAgICAgICAgICAgICAuaW5kZXRlcm1pbmF0ZT0keyEwfQogICAgICAgICAgICAgIC5zdGF0dXNSb3dzPSR7NH0KICAgICAgICAgICAgICAudGVybWluYWxMaW5lcz0ke3NbMF19CiAgICAgICAgICAgID48L2RlZXMtcHJvZ3Jlc3NiYXI+CiAgICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNob3djYXNlQ2FyZCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvZGVMYWJlbCI+TGl2ZSBEZW1vPC9kaXY+CiAgICAgICAgICAgIDxoMz5VcGRhdGluZyBwZXJjZW50YWdlIGFuZCB0ZXh0IHRvZ2V0aGVyPC9oMz4KICAgICAgICAgICAgPHA+QSBzaW5nbGUgY29tcG9uZW50IGNhbiBleHByZXNzIGJvdGggaG93IGZhciB0aGUgam9iIGlzIGFuZCB3aGljaCBwaGFzZSBpcyBjdXJyZW50bHkgYWN0aXZlLjwvcD4KICAgICAgICAgICAgPGRlZXMtcHJvZ3Jlc3NiYXIKICAgICAgICAgICAgICBpZD0ibGl2ZS1wcm9ncmVzcyIKICAgICAgICAgICAgICBsYWJlbD0iQ3VzdG9tZXIgZXhwb3J0IgogICAgICAgICAgICAgIC5wZXJjZW50YWdlPSR7MTJ9CiAgICAgICAgICAgICAgc3RhdHVzVGV4dD0iUHJlcGFyaW5nIGFyY2hpdmUgYW5kIGRlcGVuZGVuY3kgZ3JhcGguLi4iCiAgICAgICAgICAgICAgLnN0YXR1c1Jvd3M9JHsyfQogICAgICAgICAgICA+PC9kZWVzLXByb2dyZXNzYmFyPgogICAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzaG93Y2FzZUNhcmQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2RlTGFiZWwiPkNvbXBhdGliaWxpdHk8L2Rpdj4KICAgICAgICAgICAgPGgzPkxlZ2FjeSA8Y29kZT52YWx1ZTwvY29kZT4gYW5kIDxjb2RlPnByb2dyZXNzPC9jb2RlPiBpbnB1dHM8L2gzPgogICAgICAgICAgICA8cD5FeGlzdGluZyB1c2FnZXMgY2FuIGtlZXAgcGFzc2luZyBwZXJjZW50YWdlcyBkaXJlY3RseSBvciBub3JtYWxpemVkIHByb2dyZXNzIHZhbHVlcyBmcm9tIDAgdG8gMS48L3A+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzU3RhY2siPgogICAgICAgICAgICAgIDxkZWVzLXByb2dyZXNzYmFyCiAgICAgICAgICAgICAgICBsYWJlbD0iRnJvbSB2YWx1ZSIKICAgICAgICAgICAgICAgIC52YWx1ZT0kezc1fQogICAgICAgICAgICAgICAgc3RhdHVzVGV4dD0iTWlncmF0aW5nIGV4aXN0aW5nIHJlYWRtZS1zdHlsZSB1c2FnZS4uLiIKICAgICAgICAgICAgICAgIC5zdGF0dXNSb3dzPSR7Mn0KICAgICAgICAgICAgICA+PC9kZWVzLXByb2dyZXNzYmFyPgogICAgICAgICAgICAgIDxkZWVzLXByb2dyZXNzYmFyCiAgICAgICAgICAgICAgICBsYWJlbD0iRnJvbSBwcm9ncmVzcyIKICAgICAgICAgICAgICAgIC5wcm9ncmVzcz0key40Mn0KICAgICAgICAgICAgICAgIC5zaG93UGVyY2VudGFnZT0keyExfQogICAgICAgICAgICAgICAgc3RhdHVzVGV4dD0iUmVuZGVyaW5nIG5vcm1hbGl6ZWQgcHJvZ3Jlc3MgaW5wdXQuLi4iCiAgICAgICAgICAgICAgICAuc3RhdHVzUm93cz0kezJ9CiAgICAgICAgICAgICAgPjwvZGVlcy1wcm9ncmVzc2Jhcj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgogIGB9LCJkZW1vRnVuYyIpfSk7dmFyIGMyLGhyLGE2YSxVaXQ9ZygoKT0+e0cxKCk7dDZhKCk7cGUoKTtwdCgpO2MyPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxocj1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sYTZhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1wcm9ncmVzc2JhciIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdLEgsaz1bXSxTPVtdLEksUD1bXSxSPVtdLEssVj1bXSxXPVtdO3ZhciBtZT1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1Byb2dyZXNzYmFyIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IEI9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpOdW1iZXJ9KV0scD1bTCh7dHlwZTpOdW1iZXJ9KV0sYz1bTCh7dHlwZTpOdW1iZXJ9KV0seD1bTCh7dHlwZTpTdHJpbmd9KV0seT1bTCh7dHlwZTpTdHJpbmd9KV0sTj1bTCh7dHlwZTpBcnJheX0pXSxPPVtMKHt0eXBlOk51bWJlcn0pXSxIPVtMKHt0eXBlOkJvb2xlYW59KV0sST1bTCh7dHlwZTpCb29sZWFufSldLEs9W1koKV0sYzIodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJwZXJjZW50YWdlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFU9PiJwZXJjZW50YWdlImluIFUsImhhcyIpLGdldDppKFU9PlUucGVyY2VudGFnZSwiZ2V0Iiksc2V0OmkoKFUsaGUpPT57VS5wZXJjZW50YWdlPWhlfSwic2V0Iil9LG1ldGFkYXRhOkJ9LG8sbCksYzIodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2YWx1ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4idmFsdWUiaW4gVSwiaGFzIiksZ2V0OmkoVT0+VS52YWx1ZSwiZ2V0Iiksc2V0OmkoKFUsaGUpPT57VS52YWx1ZT1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxkLHUpLGMyKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicHJvZ3Jlc3MiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVT0+InByb2dyZXNzImluIFUsImhhcyIpLGdldDppKFU9PlUucHJvZ3Jlc3MsImdldCIpLHNldDppKChVLGhlKT0+e1UucHJvZ3Jlc3M9aGV9LCJzZXQiKX0sbWV0YWRhdGE6Qn0sYix2KSxjMih0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImxhYmVsIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFU9PiJsYWJlbCJpbiBVLCJoYXMiKSxnZXQ6aShVPT5VLmxhYmVsLCJnZXQiKSxzZXQ6aSgoVSxoZSk9PntVLmxhYmVsPWhlfSwic2V0Iil9LG1ldGFkYXRhOkJ9LG0sZiksYzIodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzdGF0dXNUZXh0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFU9PiJzdGF0dXNUZXh0ImluIFUsImhhcyIpLGdldDppKFU9PlUuc3RhdHVzVGV4dCwiZ2V0Iiksc2V0OmkoKFUsaGUpPT57VS5zdGF0dXNUZXh0PWhlfSwic2V0Iil9LG1ldGFkYXRhOkJ9LE0seiksYzIodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0ZXJtaW5hbExpbmVzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFU9PiJ0ZXJtaW5hbExpbmVzImluIFUsImhhcyIpLGdldDppKFU9PlUudGVybWluYWxMaW5lcywiZ2V0Iiksc2V0OmkoKFUsaGUpPT57VS50ZXJtaW5hbExpbmVzPWhlfSwic2V0Iil9LG1ldGFkYXRhOkJ9LEMsXyksYzIodGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzdGF0dXNSb3dzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFU9PiJzdGF0dXNSb3dzImluIFUsImhhcyIpLGdldDppKFU9PlUuc3RhdHVzUm93cywiZ2V0Iiksc2V0OmkoKFUsaGUpPT57VS5zdGF0dXNSb3dzPWhlfSwic2V0Iil9LG1ldGFkYXRhOkJ9LCQsRSksYzIodGhpcyxudWxsLEgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpbmRldGVybWluYXRlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFU9PiJpbmRldGVybWluYXRlImluIFUsImhhcyIpLGdldDppKFU9PlUuaW5kZXRlcm1pbmF0ZSwiZ2V0Iiksc2V0OmkoKFUsaGUpPT57VS5pbmRldGVybWluYXRlPWhlfSwic2V0Iil9LG1ldGFkYXRhOkJ9LGssUyksYzIodGhpcyxudWxsLEkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93UGVyY2VudGFnZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4ic2hvd1BlcmNlbnRhZ2UiaW4gVSwiaGFzIiksZ2V0OmkoVT0+VS5zaG93UGVyY2VudGFnZSwiZ2V0Iiksc2V0OmkoKFUsaGUpPT57VS5zaG93UGVyY2VudGFnZT1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxQLFIpLGMyKHRoaXMsbnVsbCxLLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYWN0aXZlU3Bpbm5lckZyYW1lIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFU9PiJhY3RpdmVTcGlubmVyRnJhbWUiaW4gVSwiaGFzIiksZ2V0OmkoVT0+VS5hY3RpdmVTcGlubmVyRnJhbWUsImdldCIpLHNldDppKChVLGhlKT0+e1UuYWN0aXZlU3Bpbm5lckZyYW1lPWhlfSwic2V0Iil9LG1ldGFkYXRhOkJ9LFYsVyksYzIobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6Qn0sbnVsbCx0KSxtZT1hPWUudmFsdWUsQiYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpCfSl9c3RhdGljIGRlbW89ZTZhO3N0YXRpYyBkZW1vR3JvdXBzPVsiRmVlZGJhY2siXTsjZT1ocih0aGlzLG8sMCk7Z2V0IHBlcmNlbnRhZ2UoKXtyZXR1cm4gdGhpcy4jZX1zZXQgcGVyY2VudGFnZShCKXt0aGlzLiNlPUJ9I3Q9KGhyKHRoaXMsbCksaHIodGhpcyxkLG51bGwpKTtnZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy4jdH1zZXQgdmFsdWUoQil7dGhpcy4jdD1CfSNhPShocih0aGlzLHUpLGhyKHRoaXMsYixudWxsKSk7Z2V0IHByb2dyZXNzKCl7cmV0dXJuIHRoaXMuI2F9c2V0IHByb2dyZXNzKEIpe3RoaXMuI2E9Qn0jcz0oaHIodGhpcyx2KSxocih0aGlzLG0sIiIpKTtnZXQgbGFiZWwoKXtyZXR1cm4gdGhpcy4jc31zZXQgbGFiZWwoQil7dGhpcy4jcz1CfSNpPShocih0aGlzLGYpLGhyKHRoaXMsTSwiIikpO2dldCBzdGF0dXNUZXh0KCl7cmV0dXJuIHRoaXMuI2l9c2V0IHN0YXR1c1RleHQoQil7dGhpcy4jaT1CfSNyPShocih0aGlzLHopLGhyKHRoaXMsQyxbXSkpO2dldCB0ZXJtaW5hbExpbmVzKCl7cmV0dXJuIHRoaXMuI3J9c2V0IHRlcm1pbmFsTGluZXMoQil7dGhpcy4jcj1CfSNvPShocih0aGlzLF8pLGhyKHRoaXMsJCwzKSk7Z2V0IHN0YXR1c1Jvd3MoKXtyZXR1cm4gdGhpcy4jb31zZXQgc3RhdHVzUm93cyhCKXt0aGlzLiNvPUJ9I249KGhyKHRoaXMsRSksaHIodGhpcyxrLCExKSk7Z2V0IGluZGV0ZXJtaW5hdGUoKXtyZXR1cm4gdGhpcy4jbn1zZXQgaW5kZXRlcm1pbmF0ZShCKXt0aGlzLiNuPUJ9I2w9KGhyKHRoaXMsUyksaHIodGhpcyxQLCEwKSk7Z2V0IHNob3dQZXJjZW50YWdlKCl7cmV0dXJuIHRoaXMuI2x9c2V0IHNob3dQZXJjZW50YWdlKEIpe3RoaXMuI2w9Qn0jYz0oaHIodGhpcyxSKSxocih0aGlzLFYsMCkpO2dldCBhY3RpdmVTcGlubmVyRnJhbWUoKXtyZXR1cm4gdGhpcy4jY31zZXQgYWN0aXZlU3Bpbm5lckZyYW1lKEIpe3RoaXMuI2M9Qn1zcGlubmVySW50ZXJ2YWxJZD0oaHIodGhpcyxXKSxudWxsKTtzcGlubmVyRnJhbWVzPVsifCIsIi8iLCItIiwiXFwiXTtzdGF0aWMgc3R5bGVzPVtIZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSh2aC50ZXh0LGJoLnRleHQpfTsKICAgICAgfQoKICAgICAgLnByb2dyZXNzQmFyQ29udGFpbmVyIHsKICAgICAgICBtaW4td2lkdGg6IDIwMHB4OwogICAgICAgIHBhZGRpbmc6IDhweDsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAucHJvZ3Jlc3NIZWFkZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTsKICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICB9CgogICAgICAucHJvZ3Jlc3NMYWJlbCB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzsKICAgICAgfQoKICAgICAgLnByb2dyZXNzVmFsdWUgewogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBsaW5lLWhlaWdodDogMS4zOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNSAxNSUgNDAlKSIsImhzbCgyMTUgMTUlIDcwJSkiKX07CiAgICAgICAgZm9udC1mYW1pbHk6ICdTRiBNb25vJywgJ01vbmFjbycsICdJbmNvbnNvbGF0YScsICdGaXJhIENvZGUnLCBtb25vc3BhY2U7CiAgICAgIH0KCiAgICAgIC5wcm9ncmVzc0JhciB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiA4cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNlZWVlZWIiLCIjNDQ0Iil9OwogICAgICAgIGJvcmRlci10b3A6IDAuNXB4IHNvbGlkICR7aC5iZFRoZW1lKCJ0cmFuc3BhcmVudCIsIiM1NTUiKX07CiAgICAgIH0KCiAgICAgIC5wcm9ncmVzc0JhckZpbGwgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKGJoLmJsdWVBY3RpdmUsdmguYmx1ZUFjdGl2ZSl9OwogICAgICAgIHRyYW5zaXRpb246IHdpZHRoIDAuMnMgZWFzZTsKICAgICAgfQoKICAgICAgLnByb2dyZXNzQmFyRmlsbC5pbmRldGVybWluYXRlIHsKICAgICAgICB3aWR0aDogMzQlOwogICAgICAgIHRyYW5zaXRpb246IG5vbmU7CiAgICAgICAgYW5pbWF0aW9uOiBpbmRldGVybWluYXRlU2xpZGUgMS4ycyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgICAgfQoKICAgICAgLnN0YXR1c1BhbmVsIHsKICAgICAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgICAgIGhlaWdodDogY2FsYyh2YXIoLS1zdGF0dXMtcm93cywgMykgKiAxLjM1ZW0gKyAxNnB4KTsKICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKHZhcigtLXN0YXR1cy1yb3dzLCAzKSAqIDEuMzVlbSArIDE2cHgpOwogICAgICAgIHBhZGRpbmc6IDhweCAxMHB4OwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMjEwIDIwJSA4NiUpIiwiaHNsKDIxMCAxMCUgMjYlKSIpfTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxMCAzMyUgOTglKSIsImhzbCgyMjAgMjAlIDEwJSkiKX07CiAgICAgICAgZm9udC1mYW1pbHk6ICdTRiBNb25vJywgJ01vbmFjbycsICdJbmNvbnNvbGF0YScsICdGaXJhIENvZGUnLCBtb25vc3BhY2U7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC5zdGF0dXNUZXh0Um93LAogICAgICAudGVybWluYWxMaW5lIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICAgIGdhcDogOHB4OwogICAgICAgIG1pbi1oZWlnaHQ6IDEuMzVlbTsKICAgICAgfQoKICAgICAgLnRlcm1pbmFsU2Nyb2xsZXIgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBvdmVyZmxvdzogYXV0bzsKICAgICAgfQoKICAgICAgLnRlcm1pbmFsU2Nyb2xsZXI6Oi13ZWJraXQtc2Nyb2xsYmFyIHsKICAgICAgICB3aWR0aDogNnB4OwogICAgICB9CgogICAgICAudGVybWluYWxTY3JvbGxlcjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjE1IDE4JSA3OCUpIiwiaHNsKDIxNSAxMCUgMzQlKSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDsKICAgICAgfQoKICAgICAgLnRlcm1pbmFsU2Nyb2xsZXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgfQoKICAgICAgLmxpbmVQcmVmaXggewogICAgICAgIHdpZHRoOiAxY2g7CiAgICAgICAgZmxleDogMCAwIDFjaDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoYmguYmx1ZUFjdGl2ZSx2aC5ibHVlQWN0aXZlKX07CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICB9CgogICAgICAubGluZVRleHQgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgbWluLXdpZHRoOiAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIyMCAxNSUgMjUlKSIsImhzbCgyMTAgMTUlIDg2JSkiKX07CiAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7CiAgICAgIH0KCiAgICAgIC50ZXJtaW5hbExpbmU6bm90KC5jdXJyZW50KSAubGluZVRleHQgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNSAxMiUgNDIlKSIsImhzbCgyMTUgMTIlIDYzJSkiKX07CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMgaW5kZXRlcm1pbmF0ZVNsaWRlIHsKICAgICAgICAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEyMCUpOwogICAgICAgIH0KCiAgICAgICAgMTAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMzIwJSk7CiAgICAgICAgfQogICAgICB9CiAgICBgXTthc3luYyBjb25uZWN0ZWRDYWxsYmFjaygpe2F3YWl0IHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5zeW5jU3Bpbm5lclN0YXRlKCl9YXN5bmMgZGlzY29ubmVjdGVkQ2FsbGJhY2soKXt0aGlzLnN0b3BTcGlubmVyKCksYXdhaXQgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKX11cGRhdGVkKEIpe3N1cGVyLnVwZGF0ZWQoQiksdGhpcy5zeW5jU3Bpbm5lclN0YXRlKCksQi5oYXMoInRlcm1pbmFsTGluZXMiKSYmdGhpcy50ZXJtaW5hbExpbmVzLmxlbmd0aD4wJiZ0aGlzLnNjcm9sbFRlcm1pbmFsVG9Cb3R0b20oKX1yZW5kZXIoKXtsZXQgQj10aGlzLmdldEVmZmVjdGl2ZVBlcmNlbnRhZ2UoKSxVPSEhdGhpcy5sYWJlbHx8dGhpcy5zaG93UGVyY2VudGFnZSYmIXRoaXMuaW5kZXRlcm1pbmF0ZSxoZT10aGlzLnRlcm1pbmFsTGluZXMubGVuZ3RoPjAsRj1oZXx8dGhpcy5zdGF0dXNUZXh0LnRyaW0oKS5sZW5ndGg+MCxqPXRoaXMuZ2V0UmVuZGVyZWRTdGF0dXNSb3dzKCksdWU9dGhpcy5zcGlubmVyRnJhbWVzW3RoaXMuYWN0aXZlU3Bpbm5lckZyYW1lXT8/dGhpcy5zcGlubmVyRnJhbWVzWzBdO3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzc0JhckNvbnRhaW5lciI+CiAgICAgICAgJHtVP3dgCiAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzc0hlYWRlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzTGFiZWwiPiR7dGhpcy5sYWJlbH08L2Rpdj4KICAgICAgICAgICAgJHt0aGlzLnNob3dQZXJjZW50YWdlJiYhdGhpcy5pbmRldGVybWluYXRlP3dgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3NWYWx1ZSI+JHt0aGlzLmZvcm1hdFBlcmNlbnRhZ2UoQil9JTwvZGl2PgogICAgICAgICAgICBgOiIifQogICAgICAgICAgPC9kaXY+CiAgICAgICAgYDoiIn0KICAgICAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzc0JhciI+CiAgICAgICAgICA8ZGl2CiAgICAgICAgICAgIGNsYXNzPSJwcm9ncmVzc0JhckZpbGwgJHt0aGlzLmluZGV0ZXJtaW5hdGU/ImluZGV0ZXJtaW5hdGUiOiIifSIKICAgICAgICAgICAgc3R5bGU9IiR7dGhpcy5pbmRldGVybWluYXRlPyIiOmB3aWR0aDogJHtCfSU7YH0iCiAgICAgICAgICA+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgJHtGP3dgCiAgICAgICAgICA8ZGl2CiAgICAgICAgICAgIGNsYXNzPSJzdGF0dXNQYW5lbCIKICAgICAgICAgICAgc3R5bGU9Ii0tc3RhdHVzLXJvd3M6ICR7an07IgogICAgICAgICAgICBhcmlhLWxpdmU9InBvbGl0ZSIKICAgICAgICAgICAgYXJpYS1hdG9taWM9InRydWUiCiAgICAgICAgICA+CiAgICAgICAgICAgICR7aGU/d2AKICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbFNjcm9sbGVyIj4KICAgICAgICAgICAgICAgICR7dGhpcy50ZXJtaW5hbExpbmVzLm1hcCgobGUsUSk9PntsZXQgaWU9UT09PXRoaXMudGVybWluYWxMaW5lcy5sZW5ndGgtMSx0ZT10aGlzLmluZGV0ZXJtaW5hdGUmJmllP3VlOiI+IjtyZXR1cm4gd2AKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbExpbmUgJHtpZT8iY3VycmVudCI6IiJ9Ij4KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lUHJlZml4Ij4ke3RlfTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lVGV4dCI+JHtsZX08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIGB9KX0KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYDp3YAogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXR1c1RleHRSb3ciPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVQcmVmaXgiPiR7dGhpcy5pbmRldGVybWluYXRlP3VlOiI+In08L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZVRleHQiPiR7dGhpcy5zdGF0dXNUZXh0fTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYH0KICAgICAgICAgIDwvZGl2PgogICAgICAgIGA6IiJ9CiAgICAgIDwvZGl2PgogICAgYH1nZXRFZmZlY3RpdmVQZXJjZW50YWdlKCl7aWYodHlwZW9mIHRoaXMudmFsdWU9PSJudW1iZXIiJiZOdW1iZXIuaXNGaW5pdGUodGhpcy52YWx1ZSkpcmV0dXJuIHRoaXMuY2xhbXBQZXJjZW50YWdlKHRoaXMudmFsdWUpO2lmKHR5cGVvZiB0aGlzLnByb2dyZXNzPT0ibnVtYmVyIiYmTnVtYmVyLmlzRmluaXRlKHRoaXMucHJvZ3Jlc3MpKXtsZXQgQj10aGlzLnByb2dyZXNzPj0wJiZ0aGlzLnByb2dyZXNzPD0xP3RoaXMucHJvZ3Jlc3MqMTAwOnRoaXMucHJvZ3Jlc3M7cmV0dXJuIHRoaXMuY2xhbXBQZXJjZW50YWdlKEIpfXJldHVybiB0aGlzLmNsYW1wUGVyY2VudGFnZSh0aGlzLnBlcmNlbnRhZ2UpfWdldFJlbmRlcmVkU3RhdHVzUm93cygpe2xldCBCPU51bWJlci5pc0Zpbml0ZSh0aGlzLnN0YXR1c1Jvd3MpP01hdGguZmxvb3IodGhpcy5zdGF0dXNSb3dzKTozO3JldHVybiBNYXRoLm1heCgxLEIpfWNsYW1wUGVyY2VudGFnZShCKXtyZXR1cm4gTWF0aC5tYXgoMCxNYXRoLm1pbigxMDAsQikpfWZvcm1hdFBlcmNlbnRhZ2UoQil7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoQik/YCR7Qn1gOkIudG9GaXhlZCgxKS5yZXBsYWNlKC9cLjAkLywiIil9c3luY1NwaW5uZXJTdGF0ZSgpe2xldCBCPXRoaXMuaW5kZXRlcm1pbmF0ZSYmKHRoaXMuc3RhdHVzVGV4dC50cmltKCkubGVuZ3RoPjB8fHRoaXMudGVybWluYWxMaW5lcy5sZW5ndGg+MCk7aWYoQiYmdGhpcy5zcGlubmVySW50ZXJ2YWxJZD09PW51bGwpe3RoaXMuc3Bpbm5lckludGVydmFsSWQ9d2luZG93LnNldEludGVydmFsKCgpPT57dGhpcy5hY3RpdmVTcGlubmVyRnJhbWU9KHRoaXMuYWN0aXZlU3Bpbm5lckZyYW1lKzEpJXRoaXMuc3Bpbm5lckZyYW1lcy5sZW5ndGh9LDEyMCk7cmV0dXJufUJ8fHRoaXMuc3RvcFNwaW5uZXIoKX1zdG9wU3Bpbm5lcigpe3RoaXMuc3Bpbm5lckludGVydmFsSWQhPT1udWxsJiYod2luZG93LmNsZWFySW50ZXJ2YWwodGhpcy5zcGlubmVySW50ZXJ2YWxJZCksdGhpcy5zcGlubmVySW50ZXJ2YWxJZD1udWxsKSx0aGlzLmFjdGl2ZVNwaW5uZXJGcmFtZT0wfXNjcm9sbFRlcm1pbmFsVG9Cb3R0b20oKXtsZXQgQj10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi50ZXJtaW5hbFNjcm9sbGVyIik7QiYmd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e0Iuc2Nyb2xsVG9wPUIuc2Nyb2xsSGVpZ2h0fSl9c3RhdGlje2hyKGEsdCl9fTtyZXR1cm4gbWU9YX0pKCl9KTt2YXIgczZhPWcoKCk9PntVaXQoKX0pO3ZhciBhMWUsa2csaTZhLHI2YT1nKCgpPT57cGUoKTtrdCgpO3B0KCk7YTFlPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxrZz1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0saTZhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1zcGlubmVyIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W107dmFyIHg9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNTcGlubmVyIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IG09dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpOdW1iZXJ9KV0scD1bTCh7dHlwZTpTdHJpbmd9KV0sYz1bTCgpXSxhMWUodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaXplIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGY9PiJzaXplImluIGYsImhhcyIpLGdldDppKGY9PmYuc2l6ZSwiZ2V0Iiksc2V0OmkoKGYseSk9PntmLnNpemU9eX0sInNldCIpfSxtZXRhZGF0YTptfSxvLGwpLGExZSh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImJudyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShmPT4iYm53ImluIGYsImhhcyIpLGdldDppKGY9PmYuYm53LCJnZXQiKSxzZXQ6aSgoZix5KT0+e2YuYm53PXl9LCJzZXQiKX0sbWV0YWRhdGE6bX0sZCx1KSxhMWUodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzdGF0dXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+InN0YXR1cyJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLnN0YXR1cywiZ2V0Iiksc2V0OmkoKGYseSk9PntmLnN0YXR1cz15fSwic2V0Iil9LG1ldGFkYXRhOm19LGIsdiksYTFlKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOm19LG51bGwsdCkseD1hPWUudmFsdWUsbSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTptfSl9c3RhdGljIGRlbW9Hcm91cHM9WyJGZWVkYmFjayJdO3N0YXRpYyBkZW1vPWkoKCk9PndgCiAgICA8ZGVlcy1zcGlubmVyPjwvZGVlcy1zcGlubmVyPgogICAgPGRlZXMtc3Bpbm5lciBzdGF0dXM9InN1Y2Nlc3MiPjwvZGVlcy1zcGlubmVyPgogICAgPGRlZXMtc3Bpbm5lciBzdGF0dXM9ImVycm9yIj48L2RlZXMtc3Bpbm5lcj4KICAgIDxkZWVzLXNwaW5uZXIgc2l6ZT0kezY0fSBzdGF0dXM9InN1Y2Nlc3MiPjwvZGVlcy1zcGlubmVyPgogICAgPGRlZXMtc3Bpbm5lciAuc2l6ZT0kezY0fSBzdGF0dXM9ImVycm9yIj48L2RlZXMtc3Bpbm5lcj4KICBgLCJkZW1vIik7I2U9a2codGhpcyxvLDIwKTtnZXQgc2l6ZSgpe3JldHVybiB0aGlzLiNlfXNldCBzaXplKG0pe3RoaXMuI2U9bX0jdD0oa2codGhpcyxsKSxrZyh0aGlzLGQsITEpKTtnZXQgYm53KCl7cmV0dXJuIHRoaXMuI3R9c2V0IGJudyhtKXt0aGlzLiN0PW19I2E9KGtnKHRoaXMsdSksa2codGhpcyxiLCJub3JtYWwiKSk7Z2V0IHN0YXR1cygpe3JldHVybiB0aGlzLiNhfXNldCBzdGF0dXMobSl7dGhpcy4jYT1tfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSxrZyh0aGlzLHYpfXN0YXRpYyBzdHlsZXM9W0hlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICAvKiBUT0RPOiBNaWdyYXRlIGhhcmRjb2RlZCB2YWx1ZXMgdG8gLS1kZWVzLSogQ1NTIHZhcmlhYmxlcyAqLwogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KCiAgICAgICNsb2FkaW5nIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBiYWNrZ3JvdW5kOiAjOGJjMzRhMDA7CiAgICAgICAgYm9yZGVyOiAzcHggc29saWQgJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4xKSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJHtoLmJkVGhlbWUoIiMzMzMiLCIjZmZmIil9OwogICAgICAgIGFuaW1hdGlvbjogc3BpbiAxcyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogc3BpbiAxcyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgICAgfQoKICAgICAgI2xvYWRpbmcuc3VjY2VzcyB7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICBhbmltYXRpb246IG5vbmU7CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IG5vbmU7CiAgICAgIH0KCiAgICAgICNsb2FkaW5nLmVycm9yIHsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIGFuaW1hdGlvbjogbm9uZTsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogbm9uZTsKICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBzcGluIHsKICAgICAgICB0byB7CiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICAgICAgfQogICAgICB9CiAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBzcGluIHsKICAgICAgICB0byB7CiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICAgICAgfQogICAgICB9CgogICAgICBkZWVzLWljb24gewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8c3R5bGU+CiAgICAgICAgI2xvYWRpbmcgewogICAgICAgICAgd2lkdGg6ICR7dGhpcy5zaXplfXB4OwogICAgICAgICAgaGVpZ2h0OiAke3RoaXMuc2l6ZX1weDsKICAgICAgICB9CiAgICAgICAgI2xvYWRpbmcuc3VjY2VzcyB7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUodGhpcy5ibnc/IiMzMzMiOiIjOGJjMzRhIix0aGlzLmJudz8iI2ZmZiI6IiM4YmMzNGEiKX07CiAgICAgICAgICAKICAgICAgICB9CiAgICAgICAgI2xvYWRpbmcuZXJyb3IgewogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKHRoaXMuYm53PyIjMzMzIjoiI2U2NGExOSIsdGhpcy5ibnc/IiNmZmYiOiIjZTY0YTE5Iil9OwogICAgICAgIH0KICAgICAgICBkZWVzLWljb24gewogICAgICAgICAgZm9udC1zaXplOiAke3RoaXMuc2l6ZX1weDsKICAgICAgICB9CiAgICAgIDwvc3R5bGU+CiAgICAgIDxkaXYgY2xhc3M9IiR7dGhpcy5zdGF0dXN9IiBpZD0ibG9hZGluZyI+CiAgICAgICAgJHsoKCk9PntpZih0aGlzLnN0YXR1cz09PSJzdWNjZXNzIilyZXR1cm4gd2A8ZGVlcy1pY29uIHN0eWxlPSJ0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMSUpIHRyYW5zbGF0ZVkoMyUpOyIgLmljb249JHsiZmE6Y2lyY2xlLWNoZWNrIn0+PC9kZWVzLWljb24+YDtpZih0aGlzLnN0YXR1cz09PSJlcnJvciIpcmV0dXJuIHdgPGRlZXMtaWNvbiAuaWNvbj0keyJmYTpjaXJjbGUteG1hcmsifT48L2RlZXMtaWNvbj5gfSkoKX0KICAgICAgPC9kaXY+CiAgICBgfXN0YXRpY3trZyhhLHQpfX07cmV0dXJuIHg9YX0pKCl9KTt2YXIgbzZhPWcoKCk9PntyNmEoKX0pO3ZhciBuNmEsbDZhPWcoKCk9PntwZSgpO1dpdCgpO0Q4KCk7bjZhPWkoKCk9PndgCiAgICA8c3R5bGU+CiAgICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgICAgcGFkZGluZzogMzJweDsKICAgICAgICBtaW4taGVpZ2h0OiAxMDB2aDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y4ZjlmYSIsIiMwYTBhMGEiKX07CiAgICAgIH0KCiAgICAgIC5kZW1vLXNlY3Rpb24gewogICAgICAgIG1hcmdpbi1ib3R0b206IDQ4cHg7CiAgICAgIH0KCiAgICAgIC5kZW1vLXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDI0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzMzMyIsIiNmZmYiKX07CiAgICAgIH0KCiAgICAgIC5kZW1vLWRlc2NyaXB0aW9uIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNjY2IiwiI2FhYSIpfTsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgICB9CgogICAgICAuYnV0dG9uLWdyaWQgewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyMDBweCwgMWZyKSk7CiAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDMycHg7CiAgICAgIH0KCiAgICAgIC50aGVtZS10b2dnbGUgewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICB0b3A6IDE2cHg7CiAgICAgICAgcmlnaHQ6IDE2cHg7CiAgICAgICAgei1pbmRleDogMTAwOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgICAgPGRlZXMtYnV0dG9uIGNsYXNzPSJ0aGVtZS10b2dnbGUiIEBjbGlja2VkPSR7KCk9Pntkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoImJyaWdodCIpfX0+VG9nZ2xlIFRoZW1lPC9kZWVzLWJ1dHRvbj4KCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgyIGNsYXNzPSJkZW1vLXRpdGxlIj5Ub2FzdCBUeXBlczwvaDI+CiAgICAgICAgPHAgY2xhc3M9ImRlbW8tZGVzY3JpcHRpb24iPgogICAgICAgICAgRGlmZmVyZW50IHRvYXN0IHR5cGVzIGZvciB2YXJpb3VzIG5vdGlmaWNhdGlvbiBzY2VuYXJpb3MuIENsaWNrIGFueSBidXR0b24gdG8gc2hvdyBhIHRvYXN0LgogICAgICAgIDwvcD4KICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tZ3JpZCI+CiAgICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrZWQ9JHsoKT0+e21zLmluZm8oIlRoaXMgaXMgYW4gaW5mb3JtYXRpb25hbCBtZXNzYWdlIil9fT5JbmZvIFRvYXN0PC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9ImhpZ2hsaWdodGVkIiBAY2xpY2tlZD0keygpPT57bXMuc3VjY2VzcygiT3BlcmF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkhIil9fT5TdWNjZXNzIFRvYXN0PC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtYnV0dG9uIEBjbGlja2VkPSR7KCk9Pnttcy53YXJuaW5nKCJQbGVhc2UgcmV2aWV3IGJlZm9yZSBwcm9jZWVkaW5nIil9fT5XYXJuaW5nIFRvYXN0PC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtYnV0dG9uIEBjbGlja2VkPSR7KCk9Pnttcy5lcnJvcigiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgcHJvY2Vzc2luZyIpfX0+RXJyb3IgVG9hc3Q8L2RlZXMtYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgyIGNsYXNzPSJkZW1vLXRpdGxlIj5Ub2FzdCBQb3NpdGlvbnM8L2gyPgogICAgICAgIDxwIGNsYXNzPSJkZW1vLWRlc2NyaXB0aW9uIj4KICAgICAgICAgIFRvYXN0cyBjYW4gYXBwZWFyIGluIGRpZmZlcmVudCBwb3NpdGlvbnMgb24gdGhlIHNjcmVlbi4KICAgICAgICA8L3A+CiAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWdyaWQiPgogICAgICAgICAgPGRlZXMtYnV0dG9uIEBjbGlja2VkPSR7KCk9Pnttcy5zaG93KHttZXNzYWdlOiJUb3AgUmlnaHQgUG9zaXRpb24iLHR5cGU6ImluZm8iLHBvc2l0aW9uOiJ0b3AtcmlnaHQifSl9fT5Ub3AgUmlnaHQ8L2RlZXMtYnV0dG9uPgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrZWQ9JHsoKT0+e21zLnNob3coe21lc3NhZ2U6IlRvcCBMZWZ0IFBvc2l0aW9uIix0eXBlOiJpbmZvIixwb3NpdGlvbjoidG9wLWxlZnQifSl9fT5Ub3AgTGVmdDwvZGVlcy1idXR0b24+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWJ1dHRvbiBAY2xpY2tlZD0keygpPT57bXMuc2hvdyh7bWVzc2FnZToiQm90dG9tIFJpZ2h0IFBvc2l0aW9uIix0eXBlOiJpbmZvIixwb3NpdGlvbjoiYm90dG9tLXJpZ2h0In0pfX0+Qm90dG9tIFJpZ2h0PC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtYnV0dG9uIEBjbGlja2VkPSR7KCk9Pnttcy5zaG93KHttZXNzYWdlOiJCb3R0b20gTGVmdCBQb3NpdGlvbiIsdHlwZToiaW5mbyIscG9zaXRpb246ImJvdHRvbS1sZWZ0In0pfX0+Qm90dG9tIExlZnQ8L2RlZXMtYnV0dG9uPgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrZWQ9JHsoKT0+e21zLnNob3coe21lc3NhZ2U6IlRvcCBDZW50ZXIgUG9zaXRpb24iLHR5cGU6ImluZm8iLHBvc2l0aW9uOiJ0b3AtY2VudGVyIn0pfX0+VG9wIENlbnRlcjwvZGVlcy1idXR0b24+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWJ1dHRvbiBAY2xpY2tlZD0keygpPT57bXMuc2hvdyh7bWVzc2FnZToiQm90dG9tIENlbnRlciBQb3NpdGlvbiIsdHlwZToiaW5mbyIscG9zaXRpb246ImJvdHRvbS1jZW50ZXIifSl9fT5Cb3R0b20gQ2VudGVyPC9kZWVzLWJ1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICAgIDxoMiBjbGFzcz0iZGVtby10aXRsZSI+RHVyYXRpb24gT3B0aW9uczwvaDI+CiAgICAgICAgPHAgY2xhc3M9ImRlbW8tZGVzY3JpcHRpb24iPgogICAgICAgICAgQ29udHJvbCBob3cgbG9uZyB0b2FzdHMgc3RheSB2aXNpYmxlLiBEdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMuCiAgICAgICAgPC9wPgogICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ncmlkIj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiBAY2xpY2tlZD0keygpPT57bXMuc2hvdyh7bWVzc2FnZToiUXVpY2sgdG9hc3QgKDEgc2Vjb25kKSIsdHlwZToiaW5mbyIsZHVyYXRpb246MWUzfSl9fT4xIFNlY29uZDwvZGVlcy1idXR0b24+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWJ1dHRvbiBAY2xpY2tlZD0keygpPT57bXMuc2hvdyh7bWVzc2FnZToiU3RhbmRhcmQgdG9hc3QgKDMgc2Vjb25kcykiLHR5cGU6ImluZm8iLGR1cmF0aW9uOjNlM30pfX0+MyBTZWNvbmRzIChEZWZhdWx0KTwvZGVlcy1idXR0b24+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWJ1dHRvbiBAY2xpY2tlZD0keygpPT57bXMuc2hvdyh7bWVzc2FnZToiTG9uZyB0b2FzdCAoNSBzZWNvbmRzKSIsdHlwZToiaW5mbyIsZHVyYXRpb246NWUzfSl9fT41IFNlY29uZHM8L2RlZXMtYnV0dG9uPgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrZWQ9JHsoKT0+e21zLnNob3coe21lc3NhZ2U6Ik1hbnVhbCBkaXNtaXNzIG9ubHkgKGNsaWNrIHRvIGNsb3NlKSIsdHlwZToid2FybmluZyIsZHVyYXRpb246MH0pfX0+Tm8gQXV0by1EaXNtaXNzPC9kZWVzLWJ1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICAgIDxoMiBjbGFzcz0iZGVtby10aXRsZSI+TXVsdGlwbGUgVG9hc3RzPC9oMj4KICAgICAgICA8cCBjbGFzcz0iZGVtby1kZXNjcmlwdGlvbiI+CiAgICAgICAgICBNdWx0aXBsZSB0b2FzdHMgc3RhY2sgYXV0b21hdGljYWxseS4gVGhleSBtYWludGFpbiB0aGVpciBvcmRlciBhbmQgYW5pbWF0ZSBzbW9vdGhseS4KICAgICAgICA8L3A+CiAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWdyaWQiPgogICAgICAgICAgPGRlZXMtYnV0dG9uIEBjbGlja2VkPSR7KCk9Pnttcy5pbmZvKCJGaXJzdCBub3RpZmljYXRpb24iKSxzZXRUaW1lb3V0KCgpPT5tcy5zdWNjZXNzKCJTZWNvbmQgbm90aWZpY2F0aW9uIiksMjAwKSxzZXRUaW1lb3V0KCgpPT5tcy53YXJuaW5nKCJUaGlyZCBub3RpZmljYXRpb24iKSw0MDApLHNldFRpbWVvdXQoKCk9Pm1zLmVycm9yKCJGb3VydGggbm90aWZpY2F0aW9uIiksNjAwKX19PlNob3cgTXVsdGlwbGU8L2RlZXMtYnV0dG9uPgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrZWQ9JHsoKT0+e2ZvcihsZXQgcz0xO3M8PTU7cysrKXNldFRpbWVvdXQoKCk9Pnttcy5zaG93KHttZXNzYWdlOmBOb3RpZmljYXRpb24gIyR7c31gLHR5cGU6cyUyPT09MD8ic3VjY2VzcyI6ImluZm8iLGR1cmF0aW9uOjJlMytzKjUwMH0pfSxzKjEwMCl9fT5SYXBpZCBGaXJlPC9kZWVzLWJ1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICAgIDxoMiBjbGFzcz0iZGVtby10aXRsZSI+UmVhbC1Xb3JsZCBFeGFtcGxlczwvaDI+CiAgICAgICAgPHAgY2xhc3M9ImRlbW8tZGVzY3JpcHRpb24iPgogICAgICAgICAgQ29tbW9uIHVzZSBjYXNlcyBmb3IgdG9hc3Qgbm90aWZpY2F0aW9ucyBpbiBhcHBsaWNhdGlvbnMuCiAgICAgICAgPC9wPgogICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ncmlkIj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiBAY2xpY2tlZD0ke2FzeW5jKCk9PntsZXQgcz1hd2FpdCBtcy5zaG93KHttZXNzYWdlOiJTYXZpbmcgY2hhbmdlcy4uLiIsdHlwZToiaW5mbyIsZHVyYXRpb246MH0pO3NldFRpbWVvdXQoKCk9PntzLmRpc21pc3MoKSxtcy5zdWNjZXNzKCJDaGFuZ2VzIHNhdmVkIHN1Y2Nlc3NmdWxseSEiKX0sMmUzKX19PlNhdmUgT3BlcmF0aW9uPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtYnV0dG9uIEBjbGlja2VkPSR7KCk9Pnttcy5lcnJvcigiRmFpbGVkIHRvIGNvbm5lY3QgdG8gc2VydmVyLiBQbGVhc2UgY2hlY2sgeW91ciBpbnRlcm5ldCBjb25uZWN0aW9uLiIpfX0+TmV0d29yayBFcnJvcjwvZGVlcy1idXR0b24+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWJ1dHRvbiBAY2xpY2tlZD0keygpPT57bXMud2FybmluZygiWW91ciBzZXNzaW9uIHdpbGwgZXhwaXJlIGluIDUgbWludXRlcyIpfX0+U2Vzc2lvbiBXYXJuaW5nPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtYnV0dG9uIEBjbGlja2VkPSR7KCk9Pnttcy5zdWNjZXNzKCJGaWxlIHVwbG9hZGVkIHN1Y2Nlc3NmdWxseSEiKX19PlVwbG9hZCBDb21wbGV0ZTwvZGVlcy1idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgICA8aDIgY2xhc3M9ImRlbW8tdGl0bGUiPlByb2dyYW1tYXRpYyBDb250cm9sPC9oMj4KICAgICAgICA8cCBjbGFzcz0iZGVtby1kZXNjcmlwdGlvbiI+CiAgICAgICAgICBBZHZhbmNlZCBjb250cm9sIG92ZXIgdG9hc3QgYmVoYXZpb3IuCiAgICAgICAgPC9wPgogICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ncmlkIj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiBAY2xpY2tlZD0ke2FzeW5jKCk9PntsZXQgcz1hd2FpdCBtcy5zaG93KHttZXNzYWdlOiJUaGlzIHRvYXN0IGNhbiBiZSBkaXNtaXNzZWQgcHJvZ3JhbW1hdGljYWxseSIsdHlwZToiaW5mbyIsZHVyYXRpb246MH0pO3NldFRpbWVvdXQoKCk9PntzLmRpc21pc3MoKSxtcy5zdWNjZXNzKCJUb2FzdCBkaXNtaXNzZWQgYWZ0ZXIgMiBzZWNvbmRzIil9LDJlMyl9fT5Qcm9ncmFtbWF0aWMgRGlzbWlzczwvZGVlcy1idXR0b24+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWJ1dHRvbiBAY2xpY2tlZD0keygpPT57bXMuaW5mbygiSW5mbyBtZXNzYWdlIiwyZTMpLHNldFRpbWVvdXQoKCk9Pm1zLnN1Y2Nlc3MoIlN1Y2Nlc3MgbWVzc2FnZSIsMmUzKSw1MDApLHNldFRpbWVvdXQoKCk9Pm1zLndhcm5pbmcoIldhcm5pbmcgbWVzc2FnZSIsMmUzKSwxZTMpLHNldFRpbWVvdXQoKCk9Pm1zLmVycm9yKCJFcnJvciBtZXNzYWdlIiwyZTMpLDE1MDApfX0+Q29udmVuaWVuY2UgTWV0aG9kczwvZGVlcy1idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgYCwiZGVtb0Z1bmMiKX0pO3ZhciBaWCx5dSxtcyxXaXQ9ZygoKT0+e3BlKCk7a3QoKTt6bigpO2w2YSgpO0NyKCk7cHQoKTtaWD1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0seXU9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LG1zPSgoKT0+e2xldCBzPVtuZSgiZGVlcy10b2FzdCIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdO3ZhciB5PWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzVG9hc3QiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgTT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZ30pXSxwPVtMKHt0eXBlOlN0cmluZ30pXSxjPVtMKHt0eXBlOk51bWJlcn0pXSx4PVtMKHt0eXBlOkJvb2xlYW4scmVmbGVjdDohMH0pXSxaWCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1lc3NhZ2UiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoej0+Im1lc3NhZ2UiaW4geiwiaGFzIiksZ2V0Omkoej0+ei5tZXNzYWdlLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3oubWVzc2FnZT1OfSwic2V0Iil9LG1ldGFkYXRhOk19LG8sbCksWlgodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0eXBlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJ0eXBlImluIHosImhhcyIpLGdldDppKHo9PnoudHlwZSwiZ2V0Iiksc2V0OmkoKHosTik9Pnt6LnR5cGU9Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxkLHUpLFpYKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZHVyYXRpb24iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoej0+ImR1cmF0aW9uImluIHosImhhcyIpLGdldDppKHo9PnouZHVyYXRpb24sImdldCIpLHNldDppKCh6LE4pPT57ei5kdXJhdGlvbj1OfSwic2V0Iil9LG1ldGFkYXRhOk19LGIsdiksWlgodGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpc1Zpc2libGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoej0+ImlzVmlzaWJsZSJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LmlzVmlzaWJsZSwiZ2V0Iiksc2V0OmkoKHosTik9Pnt6LmlzVmlzaWJsZT1OfSwic2V0Iil9LG1ldGFkYXRhOk19LG0sZiksWlgobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6TX0sbnVsbCx0KSx5PWE9ZS52YWx1ZSxNJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOk19KX1zdGF0aWMgZGVtbz1uNmE7c3RhdGljIGRlbW9Hcm91cHM9WyJGZWVkYmFjayIsIk92ZXJsYXkiXTtzdGF0aWMgdG9hc3RDb250YWluZXJzPW5ldyBNYXA7c3RhdGljIGdldE9yQ3JlYXRlQ29udGFpbmVyKE0pe2lmKCF0aGlzLnRvYXN0Q29udGFpbmVycy5oYXMoTSkpe2xldCB6PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3N3aXRjaCh6LmNsYXNzTmFtZT1gdG9hc3QtY29udGFpbmVyIHRvYXN0LWNvbnRhaW5lci0ke019YCx6LnN0eWxlLmNzc1RleHQ9YAogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICB6LWluZGV4OiAke1dyLm92ZXJsYXkudG9hc3R9OwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogOHB4OwogICAgICBgLE0pe2Nhc2UidG9wLXJpZ2h0Ijp6LnN0eWxlLnRvcD0iMCIsei5zdHlsZS5yaWdodD0iMCI7YnJlYWs7Y2FzZSJ0b3AtbGVmdCI6ei5zdHlsZS50b3A9IjAiLHouc3R5bGUubGVmdD0iMCI7YnJlYWs7Y2FzZSJib3R0b20tcmlnaHQiOnouc3R5bGUuYm90dG9tPSIwIix6LnN0eWxlLnJpZ2h0PSIwIjticmVhaztjYXNlImJvdHRvbS1sZWZ0Ijp6LnN0eWxlLmJvdHRvbT0iMCIsei5zdHlsZS5sZWZ0PSIwIjticmVhaztjYXNlInRvcC1jZW50ZXIiOnouc3R5bGUudG9wPSIwIix6LnN0eWxlLmxlZnQ9IjUwJSIsei5zdHlsZS50cmFuc2Zvcm09InRyYW5zbGF0ZVgoLTUwJSkiO2JyZWFrO2Nhc2UiYm90dG9tLWNlbnRlciI6ei5zdHlsZS5ib3R0b209IjAiLHouc3R5bGUubGVmdD0iNTAlIix6LnN0eWxlLnRyYW5zZm9ybT0idHJhbnNsYXRlWCgtNTAlKSI7YnJlYWt9ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh6KSx0aGlzLnRvYXN0Q29udGFpbmVycy5zZXQoTSx6KX1yZXR1cm4gdGhpcy50b2FzdENvbnRhaW5lcnMuZ2V0KE0pfXN0YXRpYyBhc3luYyBzaG93KE0pe2xldCB6PXR5cGVvZiBNPT0ic3RyaW5nIj97bWVzc2FnZTpNfTpNLE49bmV3IHk7cmV0dXJuIE4ubWVzc2FnZT16Lm1lc3NhZ2UsTi50eXBlPXoudHlwZXx8ImluZm8iLE4uZHVyYXRpb249ei5kdXJhdGlvbnx8M2UzLHRoaXMuZ2V0T3JDcmVhdGVDb250YWluZXIoei5wb3NpdGlvbnx8InRvcC1yaWdodCIpLmFwcGVuZENoaWxkKE4pLGF3YWl0IE4udXBkYXRlQ29tcGxldGUscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57Ti5pc1Zpc2libGU9ITB9KSxOLmR1cmF0aW9uPjAmJnNldFRpbWVvdXQoKCk9PntOLmRpc21pc3MoKX0sTi5kdXJhdGlvbiksTn1zdGF0aWMgYXN5bmMgY3JlYXRlQW5kU2hvdyhNKXtyZXR1cm4gdGhpcy5zaG93KE0pfXN0YXRpYyBpbmZvKE0seil7cmV0dXJuIHRoaXMuc2hvdyh7bWVzc2FnZTpNLHR5cGU6ImluZm8iLGR1cmF0aW9uOnp9KX1zdGF0aWMgc3VjY2VzcyhNLHope3JldHVybiB0aGlzLnNob3coe21lc3NhZ2U6TSx0eXBlOiJzdWNjZXNzIixkdXJhdGlvbjp6fSl9c3RhdGljIHdhcm5pbmcoTSx6KXtyZXR1cm4gdGhpcy5zaG93KHttZXNzYWdlOk0sdHlwZToid2FybmluZyIsZHVyYXRpb246en0pfXN0YXRpYyBlcnJvcihNLHope3JldHVybiB0aGlzLnNob3coe21lc3NhZ2U6TSx0eXBlOiJlcnJvciIsZHVyYXRpb246en0pfSNlPXl1KHRoaXMsbywiIik7Z2V0IG1lc3NhZ2UoKXtyZXR1cm4gdGhpcy4jZX1zZXQgbWVzc2FnZShNKXt0aGlzLiNlPU19I3Q9KHl1KHRoaXMsbCkseXUodGhpcyxkLCJpbmZvIikpO2dldCB0eXBlKCl7cmV0dXJuIHRoaXMuI3R9c2V0IHR5cGUoTSl7dGhpcy4jdD1NfSNhPSh5dSh0aGlzLHUpLHl1KHRoaXMsYiwzZTMpKTtnZXQgZHVyYXRpb24oKXtyZXR1cm4gdGhpcy4jYX1zZXQgZHVyYXRpb24oTSl7dGhpcy4jYT1NfSNzPSh5dSh0aGlzLHYpLHl1KHRoaXMsbSwhMSkpO2dldCBpc1Zpc2libGUoKXtyZXR1cm4gdGhpcy4jc31zZXQgaXNWaXNpYmxlKE0pe3RoaXMuI3M9TX1jb25zdHJ1Y3Rvcigpe3N1cGVyKCkseXUodGhpcyxmKSx0YS5zZXR1cCgpfXN0YXRpYyBzdHlsZXM9W0hlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICAvKiBUT0RPOiBNaWdyYXRlIGhhcmRjb2RlZCB2YWx1ZXMgdG8gLS1kZWVzLSogQ1NTIHZhcmlhYmxlcyAqLwogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87CiAgICAgICAgZm9udC1mYW1pbHk6ICR7TmF9OwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwogICAgICB9CgogICAgICA6aG9zdChbaXN2aXNpYmxlXSkgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgICB9CgogICAgICAudG9hc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgcGFkZGluZzogMTZweCAyMHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZiIsIiMyMjIiKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlMGUwZTAiLCIjMzMzIil9OwogICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggJHtoLmJkVGhlbWUoInJnYmEoMCwwLDAsMC4xKSIsInJnYmEoMCwwLDAsMC4zKSIpfTsKICAgICAgICBtaW4td2lkdGg6IDMwMHB4OwogICAgICAgIG1heC13aWR0aDogNTAwcHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICB9CgogICAgICAudG9hc3Q6aG92ZXIgewogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wMik7CiAgICAgIH0KCiAgICAgIC5pY29uIHsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICB3aWR0aDogMjBweDsKICAgICAgICBoZWlnaHQ6IDIwcHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICB9CgogICAgICAuaWNvbiBzdmcgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgLm1lc3NhZ2UgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMzMzIiwiI2ZmZiIpfTsKICAgICAgfQoKICAgICAgLmNsb3NlIHsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICB3aWR0aDogMTZweDsKICAgICAgICBoZWlnaHQ6IDE2cHg7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnM7CiAgICAgIH0KCiAgICAgIC5jbG9zZTpob3ZlciB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgLmNsb3NlIHN2ZyB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGZpbGw6IGN1cnJlbnRDb2xvcjsKICAgICAgfQoKICAgICAgLyogVHlwZS1zcGVjaWZpYyBzdHlsZXMgKi8KICAgICAgOmhvc3QoW3R5cGU9ImluZm8iXSkgLmljb24gewogICAgICAgIGNvbG9yOiAjMDA4NGZmOwogICAgICB9CgogICAgICA6aG9zdChbdHlwZT0ic3VjY2VzcyJdKSAuaWNvbiB7CiAgICAgICAgY29sb3I6ICMyMmM1NWU7CiAgICAgIH0KCiAgICAgIDpob3N0KFt0eXBlPSJ3YXJuaW5nIl0pIC5pY29uIHsKICAgICAgICBjb2xvcjogI2Y1OWUwYjsKICAgICAgfQoKICAgICAgOmhvc3QoW3R5cGU9ImVycm9yIl0pIC5pY29uIHsKICAgICAgICBjb2xvcjogI2VmNDQ0NDsKICAgICAgfQoKICAgICAgLyogUHJvZ3Jlc3MgYmFyICovCiAgICAgIC5wcm9ncmVzcyB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGhlaWdodDogM3B4OwogICAgICAgIGJhY2tncm91bmQ6IGN1cnJlbnRDb2xvcjsKICAgICAgICBvcGFjaXR5OiAwLjI7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMCAwIDhweCA4cHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLnByb2dyZXNzLWJhciB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGJhY2tncm91bmQ6IGN1cnJlbnRDb2xvcjsKICAgICAgICBvcGFjaXR5OiAwLjg7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdDsKICAgICAgICBhbmltYXRpb246IHByb2dyZXNzIGxpbmVhciBmb3J3YXJkczsKICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBwcm9ncmVzcyB7CiAgICAgICAgZnJvbSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKTsKICAgICAgICB9CiAgICAgICAgdG8gewogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMCk7CiAgICAgICAgfQogICAgICB9CiAgICBgXTtyZW5kZXIoKXtsZXQgTT17aW5mbzp3YDxzdmcgdmlld0JveD0iMCAwIDIwIDIwIiBmaWxsPSJjdXJyZW50Q29sb3IiPgogICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6bTEtMTFhMSAxIDAgMTAtMiAwdjJIN2ExIDEgMCAxMDAgMmgydjJhMSAxIDAgMTAyIDB2LTJoMmExIDEgMCAxMDAtMmgtMlY3eiIgY2xpcC1ydWxlPSJldmVub2RkIi8+CiAgICAgIDwvc3ZnPmAsc3VjY2Vzczp3YDxzdmcgdmlld0JveD0iMCAwIDIwIDIwIiBmaWxsPSJjdXJyZW50Q29sb3IiPgogICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6bTMuNzA3LTkuMjkzYTEgMSAwIDAwLTEuNDE0LTEuNDE0TDkgMTAuNTg2IDcuNzA3IDkuMjkzYTEgMSAwIDAwLTEuNDE0IDEuNDE0bDIgMmExIDEgMCAwMDEuNDE0IDBsNC00eiIgY2xpcC1ydWxlPSJldmVub2RkIi8+CiAgICAgIDwvc3ZnPmAsd2FybmluZzp3YDxzdmcgdmlld0JveD0iMCAwIDIwIDIwIiBmaWxsPSJjdXJyZW50Q29sb3IiPgogICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguMjU3IDMuMDk5Yy43NjUtMS4zNiAyLjcyMi0xLjM2IDMuNDg2IDBsNS41OCA5LjkyYy43NSAxLjMzNC0uMjEzIDIuOTgtMS43NDIgMi45OEg0LjQyYy0xLjUzIDAtMi40OTMtMS42NDYtMS43NDMtMi45OGw1LjU4LTkuOTJ6TTExIDEzYTEgMSAwIDExLTIgMCAxIDEgMCAwMTIgMHptLTEtOGExIDEgMCAwMC0xIDF2M2ExIDEgMCAwMDIgMFY2YTEgMSAwIDAwLTEtMXoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPgogICAgICA8L3N2Zz5gLGVycm9yOndgPHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIGZpbGw9ImN1cnJlbnRDb2xvciI+CiAgICAgICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnpNOC43MDcgNy4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRMOC41ODYgMTBsLTEuMjkzIDEuMjkzYTEgMSAwIDEwMS40MTQgMS40MTRMMTAgMTEuNDE0bDEuMjkzIDEuMjkzYTEgMSAwIDAwMS40MTQtMS40MTRMMTEuNDE0IDEwbDEuMjkzLTEuMjkzYTEgMSAwIDAwLTEuNDE0LTEuNDE0TDEwIDguNTg2IDguNzA3IDcuMjkzeiIgY2xpcC1ydWxlPSJldmVub2RkIi8+CiAgICAgIDwvc3ZnPmB9O3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJ0b2FzdCIgQGNsaWNrPSR7dGhpcy5kaXNtaXNzfT4KICAgICAgICA8ZGl2IGNsYXNzPSJpY29uIj4KICAgICAgICAgICR7TVt0aGlzLnR5cGVdfQogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1lc3NhZ2UiPiR7dGhpcy5tZXNzYWdlfTwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNsb3NlIj4KICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDE2IDE2IiBmaWxsPSJjdXJyZW50Q29sb3IiPgogICAgICAgICAgICA8cGF0aCBkPSJNNC42NDYgNC42NDZhLjUuNSAwIDAgMSAuNzA4IDBMOCA3LjI5M2wyLjY0Ni0yLjY0N2EuNS41IDAgMCAxIC43MDguNzA4TDguNzA3IDhsMi42NDcgMi42NDZhLjUuNSAwIDAgMS0uNzA4LjcwOEw4IDguNzA3bC0yLjY0NiAyLjY0N2EuNS41IDAgMCAxLS43MDgtLjcwOEw3LjI5MyA4IDQuNjQ2IDUuMzU0YS41LjUgMCAwIDEgMC0uNzA4eiIvPgogICAgICAgICAgPC9zdmc+CiAgICAgICAgPC9kaXY+CiAgICAgICAgJHt0aGlzLmR1cmF0aW9uPjA/d2AKICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyIiBzdHlsZT0iYW5pbWF0aW9uLWR1cmF0aW9uOiAke3RoaXMuZHVyYXRpb259bXMiPjwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgYDoiIn0KICAgICAgPC9kaXY+CiAgICBgfWFzeW5jIGRpc21pc3MoKXt0aGlzLmlzVmlzaWJsZT0hMSxhd2FpdCBuZXcgUHJvbWlzZSh6PT5zZXRUaW1lb3V0KHosMzAwKSksdGhpcy5yZW1vdmUoKTtsZXQgTT10aGlzLnBhcmVudEVsZW1lbnQ7aWYoTSYmTS5jaGlsZHJlbi5sZW5ndGg9PT0wKXtNLnJlbW92ZSgpO2ZvcihsZXRbeixOXW9mIHkudG9hc3RDb250YWluZXJzLmVudHJpZXMoKSlpZihOPT09TSl7eS50b2FzdENvbnRhaW5lcnMuZGVsZXRlKHopO2JyZWFrfX19Zmlyc3RVcGRhdGVkKCl7dGhpcy5zZXRBdHRyaWJ1dGUoInR5cGUiLHRoaXMudHlwZSl9c3RhdGlje3l1KGEsdCl9fTtyZXR1cm4geT1hfSkoKX0pO3ZhciBjNmE9ZygoKT0+e1dpdCgpfSk7dmFyIGQ2YT1nKCgpPT57cW1hKCk7R21hKCk7Sm1hKCk7czZhKCk7bzZhKCk7YzZhKCl9KTt2YXIgdTZhPWcoKCk9Pnt1digpfSk7dmFyIHA2YT1nKCgpPT57QTgoKX0pO3ZhciBoNmE9ZygoKT0+e3U2YSgpO3A2YSgpfSk7dmFyIGY2YT1nKCgpPT57emkoKX0pO3ZhciBtNmE9ZygoKT0+e1JldCgpfSk7dmFyIGc2YT1nKCgpPT57WWV0KCl9KTt2YXIgYjZhPWcoKCk9PntzdHQoKX0pO3ZhciB2NmE9ZygoKT0+e1pldCgpfSk7dmFyIHg2YT1nKCgpPT57WGV0KCl9KTt2YXIgeTZhPWcoKCk9PntxZXQoKX0pO3ZhciB3NmE9ZygoKT0+e2JuZSgpfSk7dmFyIGs2YT1nKCgpPT57S2NlKCl9KTt2YXIgUzZhPWcoKCk9Pnt9KTt2YXIgXzZhPWcoKCk9PntTNmEoKX0pO3ZhciBNNmE9ZygoKT0+e0pldCgpfSk7dmFyIHo2YT1nKCgpPT57dHR0KCl9KTt2YXIgQzZhPWcoKCk9PntHY2UoKTttaXQoKX0pO3ZhciBzMWUsVDZhPWcoKCk9PntzMWU9Y2xhc3N7c3RhdGlje2kodGhpcywiSW1hZ2VDcm9wcGVyIil9b3B0aW9ucztjYW52YXM7Y3R4O2ltZztvdmVybGF5Q2FudmFzO292ZXJsYXlDdHg7Y3JvcFg9MDtjcm9wWT0wO2Nyb3BTaXplPTIwMDttaW5Dcm9wU2l6ZT01MDtpc0RyYWdnaW5nPSExO2lzUmVzaXppbmc9ITE7ZHJhZ1N0YXJ0WD0wO2RyYWdTdGFydFk9MDtyZXNpemVIYW5kbGU9IiI7aW1hZ2VTY2FsZT0xO2ltYWdlT2Zmc2V0WD0wO2ltYWdlT2Zmc2V0WT0wO2NvbnN0cnVjdG9yKGUpe3RoaXMub3B0aW9ucz17bWluU2l6ZTo1MCxvdXRwdXRTaXplOjgwMCxvdXRwdXRRdWFsaXR5Oi45NSwuLi5lfSx0aGlzLmNhbnZhcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSx0aGlzLmN0eD10aGlzLmNhbnZhcy5nZXRDb250ZXh0KCIyZCIpLHRoaXMub3ZlcmxheUNhbnZhcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSx0aGlzLm92ZXJsYXlDdHg9dGhpcy5vdmVybGF5Q2FudmFzLmdldENvbnRleHQoIjJkIiksdGhpcy5pbWc9bmV3IEltYWdlfWFzeW5jIGluaXRpYWxpemUoKXthd2FpdCB0aGlzLmxvYWRJbWFnZSgpLHRoaXMuc2V0dXBDYW52YXNlcygpLHRoaXMuc2V0dXBFdmVudExpc3RlbmVycygpLHRoaXMucmVuZGVyKCl9YXN5bmMgbG9hZEltYWdlKCl7cmV0dXJuIG5ldyBQcm9taXNlKChlLHQpPT57dGhpcy5pbWcub25sb2FkPSgpPT5lKCksdGhpcy5pbWcub25lcnJvcj10LHRoaXMuaW1nLnNyYz10aGlzLm9wdGlvbnMuaW1hZ2V9KX1zZXR1cENhbnZhc2VzKCl7bGV0IGU9dGhpcy5vcHRpb25zLmNvbnRhaW5lcix0PU1hdGgubWluKGUuY2xpZW50V2lkdGgsZS5jbGllbnRIZWlnaHQpO3RoaXMuY2FudmFzLndpZHRoPXQsdGhpcy5jYW52YXMuaGVpZ2h0PXQsdGhpcy5jYW52YXMuc3R5bGUud2lkdGg9IjEwMCUiLHRoaXMuY2FudmFzLnN0eWxlLmhlaWdodD0iMTAwJSIsdGhpcy5jYW52YXMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIix0aGlzLmNhbnZhcy5zdHlsZS50b3A9IjAiLHRoaXMuY2FudmFzLnN0eWxlLmxlZnQ9IjAiLHRoaXMub3ZlcmxheUNhbnZhcy53aWR0aD10LHRoaXMub3ZlcmxheUNhbnZhcy5oZWlnaHQ9dCx0aGlzLm92ZXJsYXlDYW52YXMuc3R5bGUud2lkdGg9IjEwMCUiLHRoaXMub3ZlcmxheUNhbnZhcy5zdHlsZS5oZWlnaHQ9IjEwMCUiLHRoaXMub3ZlcmxheUNhbnZhcy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLHRoaXMub3ZlcmxheUNhbnZhcy5zdHlsZS50b3A9IjAiLHRoaXMub3ZlcmxheUNhbnZhcy5zdHlsZS5sZWZ0PSIwIix0aGlzLm92ZXJsYXlDYW52YXMuc3R5bGUuY3Vyc29yPSJtb3ZlIixlLmFwcGVuZENoaWxkKHRoaXMuY2FudmFzKSxlLmFwcGVuZENoaWxkKHRoaXMub3ZlcmxheUNhbnZhcyk7bGV0IGE9TWF0aC5taW4odC90aGlzLmltZy53aWR0aCx0L3RoaXMuaW1nLmhlaWdodCk7dGhpcy5pbWFnZVNjYWxlPWEsdGhpcy5pbWFnZU9mZnNldFg9KHQtdGhpcy5pbWcud2lkdGgqYSkvMix0aGlzLmltYWdlT2Zmc2V0WT0odC10aGlzLmltZy5oZWlnaHQqYSkvMjtsZXQgcj10aGlzLmltZy53aWR0aCphLG49dGhpcy5pbWcuaGVpZ2h0KmEsbz1NYXRoLm1pbihyLG4sdCouOCk7dGhpcy5jcm9wU2l6ZT1vKi44LHRoaXMuY3JvcFg9KHQtdGhpcy5jcm9wU2l6ZSkvMix0aGlzLmNyb3BZPSh0LXRoaXMuY3JvcFNpemUpLzJ9c2V0dXBFdmVudExpc3RlbmVycygpe3RoaXMub3ZlcmxheUNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLHRoaXMuaGFuZGxlTW91c2VEb3duLmJpbmQodGhpcykpLHRoaXMub3ZlcmxheUNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMuaGFuZGxlTW91c2VNb3ZlLmJpbmQodGhpcykpLHRoaXMub3ZlcmxheUNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLmhhbmRsZU1vdXNlVXAuYmluZCh0aGlzKSksdGhpcy5vdmVybGF5Q2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLHRoaXMuaGFuZGxlTW91c2VVcC5iaW5kKHRoaXMpKSx0aGlzLm92ZXJsYXlDYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5oYW5kbGVUb3VjaFN0YXJ0LmJpbmQodGhpcykpLHRoaXMub3ZlcmxheUNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLHRoaXMuaGFuZGxlVG91Y2hNb3ZlLmJpbmQodGhpcykpLHRoaXMub3ZlcmxheUNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsdGhpcy5oYW5kbGVUb3VjaEVuZC5iaW5kKHRoaXMpKX1oYW5kbGVNb3VzZURvd24oZSl7bGV0IHQ9dGhpcy5vdmVybGF5Q2FudmFzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGE9KGUuY2xpZW50WC10LmxlZnQpKih0aGlzLm92ZXJsYXlDYW52YXMud2lkdGgvdC53aWR0aCkscj0oZS5jbGllbnRZLXQudG9wKSoodGhpcy5vdmVybGF5Q2FudmFzLmhlaWdodC90LmhlaWdodCksbj10aGlzLmdldFJlc2l6ZUhhbmRsZShhLHIpO24/KHRoaXMuaXNSZXNpemluZz0hMCx0aGlzLnJlc2l6ZUhhbmRsZT1uKTp0aGlzLmlzSW5zaWRlQ3JvcEFyZWEoYSxyKSYmKHRoaXMuaXNEcmFnZ2luZz0hMCksdGhpcy5kcmFnU3RhcnRYPWEsdGhpcy5kcmFnU3RhcnRZPXJ9aGFuZGxlTW91c2VNb3ZlKGUpe2xldCB0PXRoaXMub3ZlcmxheUNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxhPShlLmNsaWVudFgtdC5sZWZ0KSoodGhpcy5vdmVybGF5Q2FudmFzLndpZHRoL3Qud2lkdGgpLHI9KGUuY2xpZW50WS10LnRvcCkqKHRoaXMub3ZlcmxheUNhbnZhcy5oZWlnaHQvdC5oZWlnaHQpLG49dGhpcy5nZXRSZXNpemVIYW5kbGUoYSxyKTtpZihuP3RoaXMub3ZlcmxheUNhbnZhcy5zdHlsZS5jdXJzb3I9dGhpcy5nZXRSZXNpemVDdXJzb3Iobik6dGhpcy5pc0luc2lkZUNyb3BBcmVhKGEscik/dGhpcy5vdmVybGF5Q2FudmFzLnN0eWxlLmN1cnNvcj0ibW92ZSI6dGhpcy5vdmVybGF5Q2FudmFzLnN0eWxlLmN1cnNvcj0iZGVmYXVsdCIsdGhpcy5pc0RyYWdnaW5nKXtsZXQgbz1hLXRoaXMuZHJhZ1N0YXJ0WCxsPXItdGhpcy5kcmFnU3RhcnRZLHA9dGhpcy5pbWFnZU9mZnNldFgsZD10aGlzLmltYWdlT2Zmc2V0WCt0aGlzLmltZy53aWR0aCp0aGlzLmltYWdlU2NhbGUtdGhpcy5jcm9wU2l6ZSx1PXRoaXMuaW1hZ2VPZmZzZXRZLGM9dGhpcy5pbWFnZU9mZnNldFkrdGhpcy5pbWcuaGVpZ2h0KnRoaXMuaW1hZ2VTY2FsZS10aGlzLmNyb3BTaXplO3RoaXMuY3JvcFg9TWF0aC5tYXgocCxNYXRoLm1pbihkLHRoaXMuY3JvcFgrbykpLHRoaXMuY3JvcFk9TWF0aC5tYXgodSxNYXRoLm1pbihjLHRoaXMuY3JvcFkrbCkpLHRoaXMuZHJhZ1N0YXJ0WD1hLHRoaXMuZHJhZ1N0YXJ0WT1yLHRoaXMucmVuZGVyKCl9dGhpcy5pc1Jlc2l6aW5nJiYodGhpcy5oYW5kbGVSZXNpemUoYSxyKSx0aGlzLmRyYWdTdGFydFg9YSx0aGlzLmRyYWdTdGFydFk9cix0aGlzLnJlbmRlcigpKX1oYW5kbGVNb3VzZVVwKCl7dGhpcy5pc0RyYWdnaW5nPSExLHRoaXMuaXNSZXNpemluZz0hMSx0aGlzLnJlc2l6ZUhhbmRsZT0iIn1oYW5kbGVUb3VjaFN0YXJ0KGUpe2UucHJldmVudERlZmF1bHQoKTtsZXQgdD1lLnRvdWNoZXNbMF0sYT1uZXcgTW91c2VFdmVudCgibW91c2Vkb3duIix7Y2xpZW50WDp0LmNsaWVudFgsY2xpZW50WTp0LmNsaWVudFl9KTt0aGlzLmhhbmRsZU1vdXNlRG93bihhKX1oYW5kbGVUb3VjaE1vdmUoZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO2xldCB0PWUudG91Y2hlc1swXSxhPW5ldyBNb3VzZUV2ZW50KCJtb3VzZW1vdmUiLHtjbGllbnRYOnQuY2xpZW50WCxjbGllbnRZOnQuY2xpZW50WX0pO3RoaXMuaGFuZGxlTW91c2VNb3ZlKGEpfWhhbmRsZVRvdWNoRW5kKGUpe2UucHJldmVudERlZmF1bHQoKSx0aGlzLmhhbmRsZU1vdXNlVXAoKX1nZXRSZXNpemVIYW5kbGUoZSx0KXtsZXQgcj17bnc6e3g6dGhpcy5jcm9wWCx5OnRoaXMuY3JvcFl9LG5lOnt4OnRoaXMuY3JvcFgrdGhpcy5jcm9wU2l6ZSx5OnRoaXMuY3JvcFl9LHN3Ont4OnRoaXMuY3JvcFgseTp0aGlzLmNyb3BZK3RoaXMuY3JvcFNpemV9LHNlOnt4OnRoaXMuY3JvcFgrdGhpcy5jcm9wU2l6ZSx5OnRoaXMuY3JvcFkrdGhpcy5jcm9wU2l6ZX19O2ZvcihsZXRbbixvXW9mIE9iamVjdC5lbnRyaWVzKHIpKWlmKE1hdGguYWJzKGUtby54KTwyMCYmTWF0aC5hYnModC1vLnkpPDIwKXJldHVybiBuO3JldHVybiIifWdldFJlc2l6ZUN1cnNvcihlKXtyZXR1cm57bnc6Im53LXJlc2l6ZSIsbmU6Im5lLXJlc2l6ZSIsc3c6InN3LXJlc2l6ZSIsc2U6InNlLXJlc2l6ZSJ9W2VdfHwiZGVmYXVsdCJ9aXNJbnNpZGVDcm9wQXJlYShlLHQpe3JldHVybiBlPj10aGlzLmNyb3BYJiZlPD10aGlzLmNyb3BYK3RoaXMuY3JvcFNpemUmJnQ+PXRoaXMuY3JvcFkmJnQ8PXRoaXMuY3JvcFkrdGhpcy5jcm9wU2l6ZX1oYW5kbGVSZXNpemUoZSx0KXtsZXQgYT1lLXRoaXMuZHJhZ1N0YXJ0WCxyPXQtdGhpcy5kcmFnU3RhcnRZLG49dGhpcy5pbWFnZU9mZnNldFgsbz10aGlzLmltYWdlT2Zmc2V0WSxsPXRoaXMuaW1hZ2VPZmZzZXRYK3RoaXMuaW1nLndpZHRoKnRoaXMuaW1hZ2VTY2FsZSxwPXRoaXMuaW1hZ2VPZmZzZXRZK3RoaXMuaW1nLmhlaWdodCp0aGlzLmltYWdlU2NhbGU7c3dpdGNoKHRoaXMucmVzaXplSGFuZGxlKXtjYXNlInNlIjp0aGlzLmNyb3BTaXplPU1hdGgubWF4KHRoaXMubWluQ3JvcFNpemUsTWF0aC5taW4odGhpcy5jcm9wU2l6ZStNYXRoLm1heChhLHIpLE1hdGgubWluKGwtdGhpcy5jcm9wWCxwLXRoaXMuY3JvcFkpKSk7YnJlYWs7Y2FzZSJudyI6bGV0IGQ9TWF0aC5tYXgodGhpcy5taW5Dcm9wU2l6ZSx0aGlzLmNyb3BTaXplLU1hdGgubWF4KGEscikpLHU9dGhpcy5jcm9wU2l6ZS1kLGM9dGhpcy5jcm9wWCt1LGI9dGhpcy5jcm9wWSt1O2M+PW4mJmI+PW8mJih0aGlzLmNyb3BYPWMsdGhpcy5jcm9wWT1iLHRoaXMuY3JvcFNpemU9ZCk7YnJlYWs7Y2FzZSJuZSI6bGV0IHY9TWF0aC5tYXgoYSwtcikseD1NYXRoLm1heCh0aGlzLm1pbkNyb3BTaXplLHRoaXMuY3JvcFNpemUrdiksbT14LXRoaXMuY3JvcFNpemUsZj10aGlzLmNyb3BZLW07Zj49byYmdGhpcy5jcm9wWCt4PD1sJiYodGhpcy5jcm9wWT1mLHRoaXMuY3JvcFNpemU9eCk7YnJlYWs7Y2FzZSJzdyI6bGV0IHk9TWF0aC5tYXgoLWEsciksTT1NYXRoLm1heCh0aGlzLm1pbkNyb3BTaXplLHRoaXMuY3JvcFNpemUreSksej1NLXRoaXMuY3JvcFNpemUsTj10aGlzLmNyb3BYLXo7Tj49biYmdGhpcy5jcm9wWStNPD1wJiYodGhpcy5jcm9wWD1OLHRoaXMuY3JvcFNpemU9TSk7YnJlYWt9fXJlbmRlcigpe3RoaXMuY3R4LmNsZWFyUmVjdCgwLDAsdGhpcy5jYW52YXMud2lkdGgsdGhpcy5jYW52YXMuaGVpZ2h0KSx0aGlzLm92ZXJsYXlDdHguY2xlYXJSZWN0KDAsMCx0aGlzLm92ZXJsYXlDYW52YXMud2lkdGgsdGhpcy5vdmVybGF5Q2FudmFzLmhlaWdodCksdGhpcy5jdHguZmlsbFN0eWxlPSIjMDAwMDAwIix0aGlzLmN0eC5maWxsUmVjdCgwLDAsdGhpcy5jYW52YXMud2lkdGgsdGhpcy5jYW52YXMuaGVpZ2h0KSx0aGlzLmN0eC5kcmF3SW1hZ2UodGhpcy5pbWcsdGhpcy5pbWFnZU9mZnNldFgsdGhpcy5pbWFnZU9mZnNldFksdGhpcy5pbWcud2lkdGgqdGhpcy5pbWFnZVNjYWxlLHRoaXMuaW1nLmhlaWdodCp0aGlzLmltYWdlU2NhbGUpLHRoaXMub3ZlcmxheUN0eC5maWxsU3R5bGU9InJnYmEoMCwgMCwgMCwgMC41KSIsdGhpcy5vdmVybGF5Q3R4LmZpbGxSZWN0KHRoaXMuaW1hZ2VPZmZzZXRYLHRoaXMuaW1hZ2VPZmZzZXRZLHRoaXMuaW1nLndpZHRoKnRoaXMuaW1hZ2VTY2FsZSx0aGlzLmltZy5oZWlnaHQqdGhpcy5pbWFnZVNjYWxlKSx0aGlzLm92ZXJsYXlDdHguc2F2ZSgpLHRoaXMub3B0aW9ucy5zaGFwZT09PSJyb3VuZCI/KHRoaXMub3ZlcmxheUN0eC5iZWdpblBhdGgoKSx0aGlzLm92ZXJsYXlDdHguYXJjKHRoaXMuY3JvcFgrdGhpcy5jcm9wU2l6ZS8yLHRoaXMuY3JvcFkrdGhpcy5jcm9wU2l6ZS8yLHRoaXMuY3JvcFNpemUvMiwwLE1hdGguUEkqMiksdGhpcy5vdmVybGF5Q3R4LmNsaXAoKSk6KHRoaXMub3ZlcmxheUN0eC5iZWdpblBhdGgoKSx0aGlzLm92ZXJsYXlDdHgucmVjdCh0aGlzLmNyb3BYLHRoaXMuY3JvcFksdGhpcy5jcm9wU2l6ZSx0aGlzLmNyb3BTaXplKSx0aGlzLm92ZXJsYXlDdHguY2xpcCgpKSx0aGlzLm92ZXJsYXlDdHguY2xlYXJSZWN0KDAsMCx0aGlzLm92ZXJsYXlDYW52YXMud2lkdGgsdGhpcy5vdmVybGF5Q2FudmFzLmhlaWdodCksdGhpcy5vdmVybGF5Q3R4LnJlc3RvcmUoKSx0aGlzLm92ZXJsYXlDdHguc3Ryb2tlU3R5bGU9IndoaXRlIix0aGlzLm92ZXJsYXlDdHgubGluZVdpZHRoPTIsdGhpcy5vcHRpb25zLnNoYXBlPT09InJvdW5kIj8odGhpcy5vdmVybGF5Q3R4LmJlZ2luUGF0aCgpLHRoaXMub3ZlcmxheUN0eC5hcmModGhpcy5jcm9wWCt0aGlzLmNyb3BTaXplLzIsdGhpcy5jcm9wWSt0aGlzLmNyb3BTaXplLzIsdGhpcy5jcm9wU2l6ZS8yLDAsTWF0aC5QSSoyKSx0aGlzLm92ZXJsYXlDdHguc3Ryb2tlKCkpOnRoaXMub3ZlcmxheUN0eC5zdHJva2VSZWN0KHRoaXMuY3JvcFgsdGhpcy5jcm9wWSx0aGlzLmNyb3BTaXplLHRoaXMuY3JvcFNpemUpLHRoaXMuZHJhd1Jlc2l6ZUhhbmRsZXMoKX1kcmF3UmVzaXplSGFuZGxlcygpe2xldCB0PVt7eDp0aGlzLmNyb3BYLHk6dGhpcy5jcm9wWX0se3g6dGhpcy5jcm9wWCt0aGlzLmNyb3BTaXplLHk6dGhpcy5jcm9wWX0se3g6dGhpcy5jcm9wWCx5OnRoaXMuY3JvcFkrdGhpcy5jcm9wU2l6ZX0se3g6dGhpcy5jcm9wWCt0aGlzLmNyb3BTaXplLHk6dGhpcy5jcm9wWSt0aGlzLmNyb3BTaXplfV07dGhpcy5vdmVybGF5Q3R4LmZpbGxTdHlsZT0id2hpdGUiLHQuZm9yRWFjaChhPT57dGhpcy5vdmVybGF5Q3R4LmJlZ2luUGF0aCgpLHRoaXMub3ZlcmxheUN0eC5hcmMoYS54LGEueSw4LDAsTWF0aC5QSSoyKSx0aGlzLm92ZXJsYXlDdHguZmlsbCgpfSl9YXN5bmMgZ2V0Q3JvcHBlZEltYWdlKCl7bGV0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksdD1lLmdldENvbnRleHQoIjJkIiksYT0xL3RoaXMuaW1hZ2VTY2FsZSxyPXRoaXMuY3JvcFNpemUqYSxuPXRoaXMub3B0aW9ucy5vdXRwdXRTaXplO24+ciYmY29uc29sZS5pbmZvKGBQcm9maWxlIHBpY3R1cmU6IFVwc2NhbGluZyBmcm9tICR7TWF0aC5yb3VuZChyKX1weCB0byAke259cHhgKSxlLndpZHRoPW4sZS5oZWlnaHQ9bjtsZXQgbz0odGhpcy5jcm9wWC10aGlzLmltYWdlT2Zmc2V0WCkqYSxsPSh0aGlzLmNyb3BZLXRoaXMuaW1hZ2VPZmZzZXRZKSphLHA9dGhpcy5jcm9wU2l6ZSphO3RoaXMub3B0aW9ucy5zaGFwZT09PSJyb3VuZCImJih0LmJlZ2luUGF0aCgpLHQuYXJjKG4vMixuLzIsbi8yLDAsTWF0aC5QSSoyKSx0LmNsaXAoKSksdC5pbWFnZVNtb290aGluZ0VuYWJsZWQ9ITAsdC5pbWFnZVNtb290aGluZ1F1YWxpdHk9ImhpZ2giLHQuZHJhd0ltYWdlKHRoaXMuaW1nLG8sbCxwLHAsMCwwLG4sbik7bGV0IHU9dGhpcy5vcHRpb25zLmltYWdlLmluY2x1ZGVzKCJpbWFnZS9wbmciKT8iaW1hZ2UvcG5nIjoiaW1hZ2UvanBlZyI7cmV0dXJuIGUudG9EYXRhVVJMKHUsdGhpcy5vcHRpb25zLm91dHB1dFF1YWxpdHkpfWRlc3Ryb3koKXt0aGlzLmNhbnZhcy5yZW1vdmUoKSx0aGlzLm92ZXJsYXlDYW52YXMucmVtb3ZlKCl9fX0pO3ZhciBHaCxSbixHaXQsJDZhPWcoKCk9PntwZSgpO0cxKCk7Q3IoKTt6bigpO1VhKCk7RDgoKTtGMSgpO0YxKCk7VDZhKCk7cHQoKTtHaD1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sUm49ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LEdpdD0oKCk9PntsZXQgcz1bbmUoImRlZXMtcHJvZmlsZXBpY3R1cmUtbW9kYWwiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXSxPLCQ9W10sRT1bXTt2YXIgSD1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiUHJvZmlsZVBpY3R1cmVNb2RhbCIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBrPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6U3RyaW5nfSldLHA9W0woe3R5cGU6U3RyaW5nfSldLGM9W0woe3R5cGU6TnVtYmVyfSldLHg9W0woe3R5cGU6TnVtYmVyfSldLHk9W1koKV0sTj1bWSgpXSxPPVtZKCldLEdoKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaW5pdGlhbEltYWdlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJpbml0aWFsSW1hZ2UiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5pbml0aWFsSW1hZ2UsImdldCIpLHNldDppKChTLEkpPT57Uy5pbml0aWFsSW1hZ2U9SX0sInNldCIpfSxtZXRhZGF0YTprfSxvLGwpLEdoKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2hhcGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+InNoYXBlImluIFMsImhhcyIpLGdldDppKFM9PlMuc2hhcGUsImdldCIpLHNldDppKChTLEkpPT57Uy5zaGFwZT1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LGQsdSksR2godGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJvdXRwdXRTaXplIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJvdXRwdXRTaXplImluIFMsImhhcyIpLGdldDppKFM9PlMub3V0cHV0U2l6ZSwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLm91dHB1dFNpemU9SX0sInNldCIpfSxtZXRhZGF0YTprfSxiLHYpLEdoKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToib3V0cHV0UXVhbGl0eSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4ib3V0cHV0UXVhbGl0eSJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLm91dHB1dFF1YWxpdHksImdldCIpLHNldDppKChTLEkpPT57Uy5vdXRwdXRRdWFsaXR5PUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sbSxmKSxHaCh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImN1cnJlbnRTdGVwIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJjdXJyZW50U3RlcCJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLmN1cnJlbnRTdGVwLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MuY3VycmVudFN0ZXA9SX0sInNldCIpfSxtZXRhZGF0YTprfSxNLHopLEdoKHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY3JvcHBlZEltYWdlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJjcm9wcGVkSW1hZ2UiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5jcm9wcGVkSW1hZ2UsImdldCIpLHNldDppKChTLEkpPT57Uy5jcm9wcGVkSW1hZ2U9SX0sInNldCIpfSxtZXRhZGF0YTprfSxDLF8pLEdoKHRoaXMsbnVsbCxPLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNQcm9jZXNzaW5nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJpc1Byb2Nlc3NpbmciaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5pc1Byb2Nlc3NpbmcsImdldCIpLHNldDppKChTLEkpPT57Uy5pc1Byb2Nlc3Npbmc9SX0sInNldCIpfSxtZXRhZGF0YTprfSwkLEUpLEdoKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOmt9LG51bGwsdCksSD1hPWUudmFsdWUsayYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTprfSl9I2U9Um4odGhpcyxvLCIiKTtnZXQgaW5pdGlhbEltYWdlKCl7cmV0dXJuIHRoaXMuI2V9c2V0IGluaXRpYWxJbWFnZShrKXt0aGlzLiNlPWt9I3Q9KFJuKHRoaXMsbCksUm4odGhpcyxkLCJyb3VuZCIpKTtnZXQgc2hhcGUoKXtyZXR1cm4gdGhpcy4jdH1zZXQgc2hhcGUoayl7dGhpcy4jdD1rfSNhPShSbih0aGlzLHUpLFJuKHRoaXMsYiw4MDApKTtnZXQgb3V0cHV0U2l6ZSgpe3JldHVybiB0aGlzLiNhfXNldCBvdXRwdXRTaXplKGspe3RoaXMuI2E9a30jcz0oUm4odGhpcyx2KSxSbih0aGlzLG0sLjk1KSk7Z2V0IG91dHB1dFF1YWxpdHkoKXtyZXR1cm4gdGhpcy4jc31zZXQgb3V0cHV0UXVhbGl0eShrKXt0aGlzLiNzPWt9I2k9KFJuKHRoaXMsZiksUm4odGhpcyxNLCJjcm9wIikpO2dldCBjdXJyZW50U3RlcCgpe3JldHVybiB0aGlzLiNpfXNldCBjdXJyZW50U3RlcChrKXt0aGlzLiNpPWt9I3I9KFJuKHRoaXMseiksUm4odGhpcyxDLCIiKSk7Z2V0IGNyb3BwZWRJbWFnZSgpe3JldHVybiB0aGlzLiNyfXNldCBjcm9wcGVkSW1hZ2Uoayl7dGhpcy4jcj1rfSNvPShSbih0aGlzLF8pLFJuKHRoaXMsJCwhMSkpO2dldCBpc1Byb2Nlc3NpbmcoKXtyZXR1cm4gdGhpcy4jb31zZXQgaXNQcm9jZXNzaW5nKGspe3RoaXMuI289a31jcm9wcGVyPShSbih0aGlzLEUpLG51bGwpO3dpbmRvd0xheWVyO3pJbmRleD0wO3N0YXRpYyBzdHlsZXM9W0hlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICAvKiBUT0RPOiBNaWdyYXRlIGhhcmRjb2RlZCB2YWx1ZXMgdG8gLS1kZWVzLSogQ1NTIHZhcmlhYmxlcyAqLwogICAgICA6aG9zdCB7CiAgICAgICAgZm9udC1mYW1pbHk6ICR7TmF9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzMzMyIsIiNmZmYiKX07CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgei1pbmRleDogdmFyKC0tei1pbmRleCk7CiAgICAgIH0KCiAgICAgIC5tb2RhbC1jb250YWluZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzBhMGEwYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMDgpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSIpfTsKICAgICAgICBib3gtc2hhZG93OiAke2guYmRUaGVtZSgiMCAyMHB4IDI1cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMSksIDAgMTBweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjA0KSIsIjAgMjBweCAyNXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjMpLCAwIDEwcHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSIpfTsKICAgICAgICB3aWR0aDogNDgwcHg7CiAgICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMHZ3IC0gMzJweCk7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwcHgpIHNjYWxlKDAuOTgpOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgYW5pbWF0aW9uOiBtb2RhbFNob3cgMC4yNXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBmb3J3YXJkczsKICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBtb2RhbFNob3cgewogICAgICAgIHRvIHsKICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KSBzY2FsZSgxKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC5tb2RhbC1oZWFkZXIgewogICAgICAgIGhlaWdodDogNTJweDsKICAgICAgICBwYWRkaW5nOiAwIDIwcHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMDYpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA2KSIpfTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAubW9kYWwtdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTVweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICAgIH0KCiAgICAgIC5jbG9zZS1idXR0b24gewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICByaWdodDogMTBweDsKICAgICAgICB0b3A6IDUwJTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjNzE3MTdhIil9OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICB9CgogICAgICAuY2xvc2UtYnV0dG9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjA1KSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLmNsb3NlLWJ1dHRvbjphY3RpdmUgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMDgpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSIpfTsKICAgICAgfQoKICAgICAgLm1vZGFsLWJvZHkgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMjBweDsKICAgICAgfQoKICAgICAgLmNyb3BwZXItY29udGFpbmVyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IDM2MHB4OwogICAgICAgIGFzcGVjdC1yYXRpbzogMTsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiMwMDAwMDAiLCIjMDAwMDAwIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBib3gtc2hhZG93OiAke2guYmRUaGVtZSgiaW5zZXQgMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4wNikiLCJpbnNldCAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjIpIil9OwogICAgICB9CgogICAgICAucHJldmlldy1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMjBweDsKICAgICAgfQoKICAgICAgLnByZXZpZXctaW1hZ2UgewogICAgICAgIHdpZHRoOiAxODBweDsKICAgICAgICBoZWlnaHQ6IDE4MHB4OwogICAgICAgIG9iamVjdC1maXQ6IGNvdmVyOwogICAgICAgIGJvcmRlcjogNHB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzE4MTgxYiIpfTsKICAgICAgICBib3gtc2hhZG93OiAke2guYmRUaGVtZSgiMCAxMHB4IDE1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMSksIDAgNHB4IDZweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4wNSkiLCIwIDEwcHggMTVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4zKSwgMCA0cHggNnB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpIil9OwogICAgICB9CgogICAgICAucHJldmlldy1pbWFnZS5yb3VuZCB7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICB9CgogICAgICAucHJldmlldy1pbWFnZS5zcXVhcmUgewogICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7CiAgICAgIH0KCiAgICAgIC5zdWNjZXNzLW1lc3NhZ2UgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDEwcHg7CiAgICAgICAgcGFkZGluZzogMTBweCAyMHB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjMTBiOTgxIiwiIzEwYjk4MSIpfTsKICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTAwcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgYW5pbWF0aW9uOiBzdWNjZXNzUHVsc2UgMC40cyBlYXNlLW91dDsKICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBzdWNjZXNzUHVsc2UgewogICAgICAgIDAlIHsgdHJhbnNmb3JtOiBzY2FsZSgwLjkpOyBvcGFjaXR5OiAwOyB9CiAgICAgICAgNTAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxLjAyKTsgfQogICAgICAgIDEwMCUgeyB0cmFuc2Zvcm06IHNjYWxlKDEpOyBvcGFjaXR5OiAxOyB9CiAgICAgIH0KCiAgICAgIC5tb2RhbC1mb290ZXIgewogICAgICAgIHBhZGRpbmc6IDIwcHggMjRweDsKICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wNikiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDYpIil9OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiAxMHB4OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgIH0KCiAgICAgIC5pbnN0cnVjdGlvbnMgewogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBsaW5lLWhlaWdodDogMS41OwogICAgICAgIG1heC13aWR0aDogMzIwcHg7CiAgICAgIH0KCiAgICAgIC5sb2FkaW5nLXNwaW5uZXIgewogICAgICAgIHdpZHRoOiA0MHB4OwogICAgICAgIGhlaWdodDogNDBweDsKICAgICAgICBib3JkZXI6IDNweCBzb2xpZCAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjEpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpIil9OwogICAgICAgIGJvcmRlci10b3AtY29sb3I6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzYwYTVmYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYW5pbWF0aW9uOiBzcGluIDAuNnMgbGluZWFyIGluZmluaXRlOwogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIHNwaW4gewogICAgICAgIHRvIHsKICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICAgICAgfQogICAgICB9CgogICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsKICAgICAgICAubW9kYWwtY29udGFpbmVyIHsKICAgICAgICAgIHdpZHRoOiBjYWxjKDEwMHZ3IC0gMzJweCk7CiAgICAgICAgICBtYXJnaW46IDE2cHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5tb2RhbC1ib2R5IHsKICAgICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgfQogICAgICB9CiAgICBgXTthc3luYyBjb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksdGhpcy53aW5kb3dMYXllcj1hd2FpdCBoby5jcmVhdGVBbmRTaG93KHtibHVyOiEwfSksdGhpcy53aW5kb3dMYXllci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PnRoaXMuY2xvc2UoKSksdGhpcy56SW5kZXg9eGEuZ2V0TmV4dFpJbmRleCgpLHRoaXMuc3R5bGUuc2V0UHJvcGVydHkoIi0tei1pbmRleCIsdGhpcy56SW5kZXgudG9TdHJpbmcoKSkseGEucmVnaXN0ZXIodGhpcyx0aGlzLnpJbmRleCl9YXN5bmMgZGlzY29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuY3JvcHBlciYmdGhpcy5jcm9wcGVyLmRlc3Ryb3koKSx0aGlzLndpbmRvd0xheWVyJiZhd2FpdCB0aGlzLndpbmRvd0xheWVyLmRlc3Ryb3koKSx4YS51bnJlZ2lzdGVyKHRoaXMpfXJlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250YWluZXIiIEBjbGljaz0ke2s9Pmsuc3RvcFByb3BhZ2F0aW9uKCl9PgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICA8aDMgY2xhc3M9Im1vZGFsLXRpdGxlIj4KICAgICAgICAgICAgJHt0aGlzLmN1cnJlbnRTdGVwPT09ImNyb3AiPyJBZGp1c3QgSW1hZ2UiOiJTdWNjZXNzIn0KICAgICAgICAgIDwvaDM+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjbG9zZS1idXR0b24iIEBjbGljaz0ke3RoaXMuY2xvc2V9IHRpdGxlPSJDbG9zZSI+CiAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOngiIGljb25TaXplPSIxNiI+PC9kZWVzLWljb24+CiAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICR7dGhpcy5jdXJyZW50U3RlcD09PSJjcm9wIj93YAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnN0cnVjdGlvbnMiPgogICAgICAgICAgICAgIFBvc2l0aW9uIGFuZCByZXNpemUgdGhlIHNxdWFyZSB0byBzZWxlY3QgeW91ciBwcm9maWxlIGFyZWEKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNyb3BwZXItY29udGFpbmVyIiBpZD0iY3JvcHBlckNvbnRhaW5lciI+PC9kaXY+CiAgICAgICAgICBgOndgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InByZXZpZXctY29udGFpbmVyIj4KICAgICAgICAgICAgICAke3RoaXMuaXNQcm9jZXNzaW5nP3dgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2FkaW5nLXNwaW5uZXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5zdHJ1Y3Rpb25zIj5TYXZpbmcuLi48L2Rpdj4KICAgICAgICAgICAgICBgOndgCiAgICAgICAgICAgICAgICA8aW1nIAogICAgICAgICAgICAgICAgICBjbGFzcz0icHJldmlldy1pbWFnZSAke3RoaXMuc2hhcGV9IiAKICAgICAgICAgICAgICAgICAgc3JjPSIke3RoaXMuY3JvcHBlZEltYWdlfSIgCiAgICAgICAgICAgICAgICAgIGFsdD0iQ3JvcHBlZCBwcmV2aWV3IgogICAgICAgICAgICAgICAgLz4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Y2Nlc3MtbWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOmNoZWNrIiBpY29uU2l6ZT0iMTYiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgICA8c3Bhbj5Mb29raW5nIGdvb2QhPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgYH0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgfQogICAgICAgIDwvZGl2PgogICAgICAgIAogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciI+CiAgICAgICAgICAke3RoaXMuY3VycmVudFN0ZXA9PT0iY3JvcCI/d2AKICAgICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9ImRlc3RydWN0aXZlIiBzaXplPSJzbSIgQGNsaWNrPSR7dGhpcy5jbG9zZX0+CiAgICAgICAgICAgICAgQ2FuY2VsCiAgICAgICAgICAgIDwvZGVlcy1idXR0b24+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbiB0eXBlPSJkZWZhdWx0IiBzaXplPSJzbSIgQGNsaWNrPSR7dGhpcy5oYW5kbGVDcm9wfT4KICAgICAgICAgICAgICBTYXZlCiAgICAgICAgICAgIDwvZGVlcy1idXR0b24+CiAgICAgICAgICBgOiIifQogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9YXN5bmMgZmlyc3RVcGRhdGVkKCl7dGhpcy5jdXJyZW50U3RlcD09PSJjcm9wIiYmYXdhaXQgdGhpcy5pbml0aWFsaXplQ3JvcHBlcigpfWFzeW5jIGluaXRpYWxpemVDcm9wcGVyKCl7YXdhaXQgdGhpcy51cGRhdGVDb21wbGV0ZTtsZXQgaz10aGlzLnNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoImNyb3BwZXJDb250YWluZXIiKTtrJiYodGhpcy5jcm9wcGVyPW5ldyBzMWUoe2NvbnRhaW5lcjprLGltYWdlOnRoaXMuaW5pdGlhbEltYWdlLHNoYXBlOnRoaXMuc2hhcGUsYXNwZWN0UmF0aW86MSxvdXRwdXRTaXplOnRoaXMub3V0cHV0U2l6ZSxvdXRwdXRRdWFsaXR5OnRoaXMub3V0cHV0UXVhbGl0eX0pLGF3YWl0IHRoaXMuY3JvcHBlci5pbml0aWFsaXplKCkpfWFzeW5jIGhhbmRsZUNyb3AoKXtpZih0aGlzLmNyb3BwZXIpdHJ5e3RoaXMuaXNQcm9jZXNzaW5nPSEwLHRoaXMuY3VycmVudFN0ZXA9InByZXZpZXciLGF3YWl0IHRoaXMudXBkYXRlQ29tcGxldGU7bGV0IGs9YXdhaXQgdGhpcy5jcm9wcGVyLmdldENyb3BwZWRJbWFnZSgpO3RoaXMuY3JvcHBlZEltYWdlPWssYXdhaXQgbmV3IFByb21pc2UoUz0+c2V0VGltZW91dChTLDgwMCkpLHRoaXMuaXNQcm9jZXNzaW5nPSExLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInNhdmUiLHtkZXRhaWw6e2Nyb3BwZWRJbWFnZTp0aGlzLmNyb3BwZWRJbWFnZX0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKSxzZXRUaW1lb3V0KCgpPT57dGhpcy5jbG9zZSgpfSwxNTAwKX1jYXRjaChrKXtjb25zb2xlLmVycm9yKCJFcnJvciBjcm9wcGluZyBpbWFnZToiLGspLHRoaXMuaXNQcm9jZXNzaW5nPSExfX1jbG9zZSgpe3RoaXMucmVtb3ZlKCl9c3RhdGlje1JuKGEsdCl9fTtyZXR1cm4gSD1hfSkoKX0pO3ZhciBENmEsTDZhPWcoKCk9PntwZSgpO0l0KCk7Zm8oKTtLaXQoKTtENmE9aSgoKT0+d2AKICA8c3R5bGU+CiAgICAke0pgCiAgICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMjRweDsKICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgIG1heC13aWR0aDogMTIwMHB4OwogICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICB9CiAgICAgIAogICAgICBkZWVzLXBhbmVsIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgICB9CiAgICAgIAogICAgICAuZGVtby1yb3cgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiA0OHB4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICB9CiAgICAgIAogICAgICAuZGVtby1vdXRwdXQgewogICAgICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICAgICAgcGFkZGluZzogMTJweDsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDEwNSwgMjQyLCAwLjEpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7CiAgICAgICAgbWF4LWhlaWdodDogMTAwcHg7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgfQogICAgICAKICAgICAgLmZlYXR1cmUtbGlzdCB7CiAgICAgICAgbWFyZ2luLXRvcDogMTZweDsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICAgIH0KICAgICAgCiAgICAgIC5mZWF0dXJlLWxpc3QgbGkgewogICAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgfQogICAgYH0KICA8L3N0eWxlPgogIAogIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntsZXQgZT1zLnF1ZXJ5U2VsZWN0b3IoJ2RlZXMtaW5wdXQtcHJvZmlsZXBpY3R1cmVbc2hhcGU9InJvdW5kIl0nKTtlJiZlLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsKHQ9PntsZXQgYT10LnRhcmdldDtjb25zb2xlLmxvZygiUm91bmQgcHJvZmlsZSBwaWN0dXJlIGNoYW5nZWQ6IixhLnZhbHVlPy5zdWJzdHJpbmcoMCw1MCkrIi4uLiIpfSkpfX0+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJQcm9maWxlIFBpY3R1cmUgSW5wdXQifSAuc3VidGl0bGU9JHsiQmFzaWMgdXNhZ2Ugd2l0aCByb3VuZCBhbmQgc3F1YXJlIHNoYXBlcyJ9PgogICAgICAgIDxkaXYgY2xhc3M9ImRlbW8tcm93Ij4KICAgICAgICAgIDxkZWVzLWlucHV0LXByb2ZpbGVwaWN0dXJlCiAgICAgICAgICAgIGxhYmVsPSJQcm9maWxlIFBpY3R1cmUgKFJvdW5kKSIKICAgICAgICAgICAgZGVzY3JpcHRpb249IkNsaWNrIHRvIHVwbG9hZCBvciBkcmFnICYgZHJvcCBhbiBpbWFnZSIKICAgICAgICAgICAgc2hhcGU9InJvdW5kIgogICAgICAgICAgICBzaXplPSIxMjAiCiAgICAgICAgICA+PC9kZWVzLWlucHV0LXByb2ZpbGVwaWN0dXJlPgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1pbnB1dC1wcm9maWxlcGljdHVyZQogICAgICAgICAgICBsYWJlbD0iUHJvZmlsZSBQaWN0dXJlIChTcXVhcmUpIgogICAgICAgICAgICBkZXNjcmlwdGlvbj0iU3VwcG9ydHMgSlBFRywgUE5HLCBhbmQgV2ViUCBmb3JtYXRzIgogICAgICAgICAgICBzaGFwZT0ic3F1YXJlIgogICAgICAgICAgICBzaXplPSIxMjAiCiAgICAgICAgICA+PC9kZWVzLWlucHV0LXByb2ZpbGVwaWN0dXJlPgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CgogICAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e3MucXVlcnlTZWxlY3RvckFsbCgiZGVlcy1pbnB1dC1wcm9maWxlcGljdHVyZSIpLmZvckVhY2godD0+e3QuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwoYT0+e2xldCByPWEudGFyZ2V0O2NvbnNvbGUubG9nKGBQcm9maWxlIChzaXplICR7ci5zaXplfSkgY2hhbmdlZGApfSkpfSl9fT4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IlNpemUgVmFyaWF0aW9ucyJ9IC5zdWJ0aXRsZT0keyJQcm9maWxlIHBpY3R1cmVzIGluIGRpZmZlcmVudCBzaXplcyJ9PgogICAgICAgIDxkaXYgY2xhc3M9ImRlbW8tcm93Ij4KICAgICAgICAgIDxkZWVzLWlucHV0LXByb2ZpbGVwaWN0dXJlCiAgICAgICAgICAgIGxhYmVsPSJTbWFsbCAoODBweCkiCiAgICAgICAgICAgIHNoYXBlPSJyb3VuZCIKICAgICAgICAgICAgc2l6ZT0iODAiCiAgICAgICAgICA+PC9kZWVzLWlucHV0LXByb2ZpbGVwaWN0dXJlPgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1pbnB1dC1wcm9maWxlcGljdHVyZQogICAgICAgICAgICBsYWJlbD0iTWVkaXVtICgxMjBweCkiCiAgICAgICAgICAgIHNoYXBlPSJyb3VuZCIKICAgICAgICAgICAgc2l6ZT0iMTIwIgogICAgICAgICAgPjwvZGVlcy1pbnB1dC1wcm9maWxlcGljdHVyZT4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtaW5wdXQtcHJvZmlsZXBpY3R1cmUKICAgICAgICAgICAgbGFiZWw9IkxhcmdlICgxNjBweCkiCiAgICAgICAgICAgIHNoYXBlPSJyb3VuZCIKICAgICAgICAgICAgc2l6ZT0iMTYwIgogICAgICAgICAgPjwvZGVlcy1pbnB1dC1wcm9maWxlcGljdHVyZT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgoKICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntsZXQgZT0iZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCM2FXUjBhRDBpTWpBd0lpQm9aV2xuYUhROUlqSXdNQ0lnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JajRLSUNBOFpHVm1jejRLSUNBZ0lEeHNhVzVsWVhKSGNtRmthV1Z1ZENCcFpEMGlaM0poWkdsbGJuUWlJSGd4UFNJd0pTSWdlVEU5SWpBbElpQjRNajBpTVRBd0pTSWdlVEk5SWpFd01DVWlQZ29nSUNBZ0lDQThjM1J2Y0NCdlptWnpaWFE5SWpBbElpQnpkRzl3TFdOdmJHOXlQU0lqTmpZM1pXVmhJaUF2UGdvZ0lDQWdJQ0E4YzNSdmNDQnZabVp6WlhROUlqRXdNQ1VpSUhOMGIzQXRZMjlzYjNJOUlpTTNOalJpWVRJaUlDOCtDaUFnSUNBOEwyeHBibVZoY2tkeVlXUnBaVzUwUGdvZ0lEd3ZaR1ZtY3o0S0lDQThjbVZqZENCM2FXUjBhRDBpTWpBd0lpQm9aV2xuYUhROUlqSXdNQ0lnWm1sc2JEMGlkWEpzS0NObmNtRmthV1Z1ZENraUlDOCtDaUFnUEhSbGVIUWdlRDBpTlRBbElpQjVQU0kxTUNVaUlHUnZiV2x1WVc1MExXSmhjMlZzYVc1bFBTSnRhV1JrYkdVaUlIUmxlSFF0WVc1amFHOXlQU0p0YVdSa2JHVWlJR1p2Ym5RdFptRnRhV3g1UFNKQmNtbGhiQ0lnWm05dWRDMXphWHBsUFNJNE1DSWdabWxzYkQwaWQyaHBkR1VpUGtwRVBDOTBaWGgwUGdvOEwzTjJaejQ9Iix0PXMucXVlcnlTZWxlY3RvcigiI3ByZWZpbGxlZC1wcm9maWxlIik7dCYmKHQudmFsdWU9ZSx0LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsKGE9PntsZXQgcj1hLnRhcmdldCxuPXMucXVlcnlTZWxlY3RvcigiI3ByZWZpbGxlZC1vdXRwdXQiKTtuJiYobi50ZXh0Q29udGVudD1yLnZhbHVlP2BJbWFnZSBkYXRhOiAke3IudmFsdWUuc3Vic3RyaW5nKDAsODApfS4uLmA6Ik5vIGltYWdlIHNlbGVjdGVkIil9KSkpfX0+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJQcmUtZmlsbGVkIGFuZCBWYWx1ZSBCaW5kaW5nIn0gLnN1YnRpdGxlPSR7IlByb2ZpbGUgcGljdHVyZSB3aXRoIGluaXRpYWwgdmFsdWUgYW5kIGNoYW5nZSB0cmFja2luZyJ9PgogICAgICAgIDxkZWVzLWlucHV0LXByb2ZpbGVwaWN0dXJlCiAgICAgICAgICBpZD0icHJlZmlsbGVkLXByb2ZpbGUiCiAgICAgICAgICBsYWJlbD0iRWRpdCBFeGlzdGluZyBQcm9maWxlIgogICAgICAgICAgZGVzY3JpcHRpb249IkNsaWNrIHRoZSBlZGl0IGJ1dHRvbiB0byBjaGFuZ2Ugb3IgZGVsZXRlIHRvIHJlbW92ZSIKICAgICAgICAgIHNoYXBlPSJyb3VuZCIKICAgICAgICAgIHNpemU9IjE1MCIKICAgICAgICA+PC9kZWVzLWlucHV0LXByb2ZpbGVwaWN0dXJlPgogICAgICAgIAogICAgICAgIDxkaXYgaWQ9InByZWZpbGxlZC1vdXRwdXQiIGNsYXNzPSJkZW1vLW91dHB1dCI+CiAgICAgICAgICBJbWFnZSBkYXRhIHdpbGwgYXBwZWFyIGhlcmUgd2hlbiBjaGFuZ2VkCiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57bGV0IGU9cy5xdWVyeVNlbGVjdG9yKCIjZGlzYWJsZWQtcHJvZmlsZSIpO2UmJihlLnZhbHVlPSJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUIzYVdSMGFEMGlNakF3SWlCb1pXbG5hSFE5SWpJd01DSWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklqNEtJQ0E4Y21WamRDQjNhV1IwYUQwaU1qQXdJaUJvWldsbmFIUTlJakl3TUNJZ1ptbHNiRDBpSTJOalkyTmpZeUlnTHo0S0lDQThkR1Y0ZENCNFBTSTFNQ1VpSUhrOUlqVXdKU0lnWkc5dGFXNWhiblF0WW1GelpXeHBibVU5SW0xcFpHUnNaU0lnZEdWNGRDMWhibU5vYjNJOUltMXBaR1JzWlNJZ1ptOXVkQzFtWVcxcGJIazlJa0Z5YVdGc0lpQm1iMjUwTFhOcGVtVTlJall3SWlCbWFXeHNQU0ozYUdsMFpTSStUa0U4TDNSbGVIUStDand2YzNablBnPT0iKX19PgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiRm9ybSBTdGF0ZXMifSAuc3VidGl0bGU9JHsiRGlmZmVyZW50IHN0YXRlcyBhbmQgY29uZmlndXJhdGlvbnMifT4KICAgICAgICA8ZGl2IGNsYXNzPSJkZW1vLXJvdyI+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1wcm9maWxlcGljdHVyZQogICAgICAgICAgICBsYWJlbD0iUmVxdWlyZWQgRmllbGQiCiAgICAgICAgICAgIGRlc2NyaXB0aW9uPSJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkIgogICAgICAgICAgICBzaGFwZT0icm91bmQiCiAgICAgICAgICAgIC5yZXF1aXJlZD0keyEwfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1wcm9maWxlcGljdHVyZT4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtaW5wdXQtcHJvZmlsZXBpY3R1cmUKICAgICAgICAgICAgaWQ9ImRpc2FibGVkLXByb2ZpbGUiCiAgICAgICAgICAgIGxhYmVsPSJEaXNhYmxlZCBTdGF0ZSIKICAgICAgICAgICAgZGVzY3JpcHRpb249IkNhbm5vdCBiZSBlZGl0ZWQiCiAgICAgICAgICAgIHNoYXBlPSJzcXVhcmUiCiAgICAgICAgICAgIC5kaXNhYmxlZD0keyEwfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1wcm9maWxlcGljdHVyZT4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtaW5wdXQtcHJvZmlsZXBpY3R1cmUKICAgICAgICAgICAgbGFiZWw9IlVwbG9hZCBPbmx5IgogICAgICAgICAgICBkZXNjcmlwdGlvbj0iRGVsZXRlIG5vdCBhbGxvd2VkIgogICAgICAgICAgICBzaGFwZT0icm91bmQiCiAgICAgICAgICAgIC5hbGxvd0RlbGV0ZT0keyExfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1wcm9maWxlcGljdHVyZT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgoKICAgIDxkZWVzLWRlbW93cmFwcGVyPgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiRmVhdHVyZXMifSAuc3VidGl0bGU9JHsiQ29tcGxldGUgZmVhdHVyZSBzZXQgb2YgdGhlIHByb2ZpbGUgcGljdHVyZSBpbnB1dCJ9PgogICAgICAgIDx1bCBjbGFzcz0iZmVhdHVyZS1saXN0Ij4KICAgICAgICAgIDxsaT48c3Ryb25nPkltYWdlIFVwbG9hZDo8L3N0cm9uZz4gQ2xpY2sgdG8gdXBsb2FkIG9yIGRyYWcgJiBkcm9wIGltYWdlczwvbGk+CiAgICAgICAgICA8bGk+PHN0cm9uZz5JbWFnZSBDcm9wcGluZzo8L3N0cm9uZz4gSW50ZXJhY3RpdmUgY3JvcCB0b29sIHdpdGggcmVzaXplIGhhbmRsZXM8L2xpPgogICAgICAgICAgPGxpPjxzdHJvbmc+U2hhcGUgU3VwcG9ydDo8L3N0cm9uZz4gUm91bmQgb3Igc3F1YXJlIHByb2ZpbGUgcGljdHVyZXM8L2xpPgogICAgICAgICAgPGxpPjxzdHJvbmc+U2l6ZSBDdXN0b21pemF0aW9uOjwvc3Ryb25nPiBBZGp1c3RhYmxlIGRpbWVuc2lvbnM8L2xpPgogICAgICAgICAgPGxpPjxzdHJvbmc+UHJldmlldyAmIEVkaXQ6PC9zdHJvbmc+IEhvdmVyIG92ZXJsYXkgd2l0aCBlZGl0IGFuZCBkZWxldGUgb3B0aW9uczwvbGk+CiAgICAgICAgICA8bGk+PHN0cm9uZz5GaWxlIFZhbGlkYXRpb246PC9zdHJvbmc+IEZvcm1hdCBhbmQgc2l6ZSByZXN0cmljdGlvbnM8L2xpPgogICAgICAgICAgPGxpPjxzdHJvbmc+UmVzcG9uc2l2ZSBEZXNpZ246PC9zdHJvbmc+IFdvcmtzIG9uIGRlc2t0b3AgYW5kIG1vYmlsZSBkZXZpY2VzPC9saT4KICAgICAgICAgIDxsaT48c3Ryb25nPkZvcm0gSW50ZWdyYXRpb246PC9zdHJvbmc+IFN0YW5kYXJkIGZvcm0gdmFsdWUgYmluZGluZyBhbmQgdmFsaWRhdGlvbjwvbGk+CiAgICAgICAgICA8bGk+PHN0cm9uZz5BY2Nlc3NpYmlsaXR5Ojwvc3Ryb25nPiBLZXlib2FyZCBuYXZpZ2F0aW9uIGFuZCBzY3JlZW4gcmVhZGVyIHN1cHBvcnQ8L2xpPgogICAgICAgICAgPGxpPjxzdHJvbmc+Wi1JbmRleCBNYW5hZ2VtZW50Ojwvc3Ryb25nPiBQcm9wZXIgbW9kYWwgc3RhY2tpbmcgd2l0aCByZWdpc3RyeTwvbGk+CiAgICAgICAgPC91bD4KICAgICAgICAKICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOiAyNHB4OyI+CiAgICAgICAgICA8c3Ryb25nPlN1cHBvcnRlZCBGb3JtYXRzOjwvc3Ryb25nPiBKUEVHLCBQTkcsIFdlYlA8YnI+CiAgICAgICAgICA8c3Ryb25nPk1heCBGaWxlIFNpemU6PC9zdHJvbmc+IDVNQiAoY29uZmlndXJhYmxlKTxicj4KICAgICAgICAgIDxzdHJvbmc+T3V0cHV0IEZvcm1hdDo8L3N0cm9uZz4gQmFzZTY0IGVuY29kZWQgSlBFRwogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CiAgPC9kaXY+CmAsImRlbW9GdW5jIil9KTt2YXIgRGwsWHMsRTZhLEtpdD1nKCgpPT57cGUoKTt6aSgpO1VhKCk7bHYoKTskNmEoKTtMNmEoKTtwdCgpO0RsPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxYcz1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sRTZhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1pbnB1dC1wcm9maWxlcGljdHVyZSIpXSxlLHQ9W10sYSxyPU90LG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdLEgsaz1bXSxTPVtdLEksUD1bXSxSPVtdLEssVj1bXSxXPVtdLG1lLEI9W10sVT1bXSxoZSxGPVtdLGo9W10sdWUsbGU9W10sUT1bXTt2YXIgaWU9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNJbnB1dFByb2ZpbGVQaWN0dXJlIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IHRlPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6U3RyaW5nfSldLHA9W0woe3R5cGU6U3RyaW5nfSldLGM9W0woe3R5cGU6TnVtYmVyfSldLHg9W0woe3R5cGU6U3RyaW5nfSldLHk9W0woe3R5cGU6Qm9vbGVhbn0pXSxOPVtMKHt0eXBlOkJvb2xlYW59KV0sTz1bTCh7dHlwZTpOdW1iZXJ9KV0sSD1bTCh7dHlwZTpBcnJheX0pXSxJPVtMKHt0eXBlOk51bWJlcn0pXSxLPVtMKHt0eXBlOk51bWJlcn0pXSxtZT1bWSgpXSxoZT1bWSgpXSx1ZT1bWSgpXSxEbCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InZhbHVlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGVlPT4idmFsdWUiaW4gZWUsImhhcyIpLGdldDppKGVlPT5lZS52YWx1ZSwiZ2V0Iiksc2V0OmkoKGVlLGtlKT0+e2VlLnZhbHVlPWtlfSwic2V0Iil9LG1ldGFkYXRhOnRlfSxvLGwpLERsKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2hhcGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZWU9PiJzaGFwZSJpbiBlZSwiaGFzIiksZ2V0OmkoZWU9PmVlLnNoYXBlLCJnZXQiKSxzZXQ6aSgoZWUsa2UpPT57ZWUuc2hhcGU9a2V9LCJzZXQiKX0sbWV0YWRhdGE6dGV9LGQsdSksRGwodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaXplIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGVlPT4ic2l6ZSJpbiBlZSwiaGFzIiksZ2V0OmkoZWU9PmVlLnNpemUsImdldCIpLHNldDppKChlZSxrZSk9PntlZS5zaXplPWtlfSwic2V0Iil9LG1ldGFkYXRhOnRlfSxiLHYpLERsKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToicGxhY2Vob2xkZXIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZWU9PiJwbGFjZWhvbGRlciJpbiBlZSwiaGFzIiksZ2V0OmkoZWU9PmVlLnBsYWNlaG9sZGVyLCJnZXQiKSxzZXQ6aSgoZWUsa2UpPT57ZWUucGxhY2Vob2xkZXI9a2V9LCJzZXQiKX0sbWV0YWRhdGE6dGV9LG0sZiksRGwodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJhbGxvd1VwbG9hZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShlZT0+ImFsbG93VXBsb2FkImluIGVlLCJoYXMiKSxnZXQ6aShlZT0+ZWUuYWxsb3dVcGxvYWQsImdldCIpLHNldDppKChlZSxrZSk9PntlZS5hbGxvd1VwbG9hZD1rZX0sInNldCIpfSxtZXRhZGF0YTp0ZX0sTSx6KSxEbCh0aGlzLG51bGwsTix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImFsbG93RGVsZXRlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGVlPT4iYWxsb3dEZWxldGUiaW4gZWUsImhhcyIpLGdldDppKGVlPT5lZS5hbGxvd0RlbGV0ZSwiZ2V0Iiksc2V0OmkoKGVlLGtlKT0+e2VlLmFsbG93RGVsZXRlPWtlfSwic2V0Iil9LG1ldGFkYXRhOnRlfSxDLF8pLERsKHRoaXMsbnVsbCxPLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWF4RmlsZVNpemUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZWU9PiJtYXhGaWxlU2l6ZSJpbiBlZSwiaGFzIiksZ2V0OmkoZWU9PmVlLm1heEZpbGVTaXplLCJnZXQiKSxzZXQ6aSgoZWUsa2UpPT57ZWUubWF4RmlsZVNpemU9a2V9LCJzZXQiKX0sbWV0YWRhdGE6dGV9LCQsRSksRGwodGhpcyxudWxsLEgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJhY2NlcHRlZEZvcm1hdHMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZWU9PiJhY2NlcHRlZEZvcm1hdHMiaW4gZWUsImhhcyIpLGdldDppKGVlPT5lZS5hY2NlcHRlZEZvcm1hdHMsImdldCIpLHNldDppKChlZSxrZSk9PntlZS5hY2NlcHRlZEZvcm1hdHM9a2V9LCJzZXQiKX0sbWV0YWRhdGE6dGV9LGssUyksRGwodGhpcyxudWxsLEkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJvdXRwdXRTaXplIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGVlPT4ib3V0cHV0U2l6ZSJpbiBlZSwiaGFzIiksZ2V0OmkoZWU9PmVlLm91dHB1dFNpemUsImdldCIpLHNldDppKChlZSxrZSk9PntlZS5vdXRwdXRTaXplPWtlfSwic2V0Iil9LG1ldGFkYXRhOnRlfSxQLFIpLERsKHRoaXMsbnVsbCxLLHtraW5kOiJhY2Nlc3NvciIsbmFtZToib3V0cHV0UXVhbGl0eSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShlZT0+Im91dHB1dFF1YWxpdHkiaW4gZWUsImhhcyIpLGdldDppKGVlPT5lZS5vdXRwdXRRdWFsaXR5LCJnZXQiKSxzZXQ6aSgoZWUsa2UpPT57ZWUub3V0cHV0UXVhbGl0eT1rZX0sInNldCIpfSxtZXRhZGF0YTp0ZX0sVixXKSxEbCh0aGlzLG51bGwsbWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpc0hvdmVyZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZWU9PiJpc0hvdmVyZWQiaW4gZWUsImhhcyIpLGdldDppKGVlPT5lZS5pc0hvdmVyZWQsImdldCIpLHNldDppKChlZSxrZSk9PntlZS5pc0hvdmVyZWQ9a2V9LCJzZXQiKX0sbWV0YWRhdGE6dGV9LEIsVSksRGwodGhpcyxudWxsLGhlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNEcmFnZ2luZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShlZT0+ImlzRHJhZ2dpbmciaW4gZWUsImhhcyIpLGdldDppKGVlPT5lZS5pc0RyYWdnaW5nLCJnZXQiKSxzZXQ6aSgoZWUsa2UpPT57ZWUuaXNEcmFnZ2luZz1rZX0sInNldCIpfSxtZXRhZGF0YTp0ZX0sRixqKSxEbCh0aGlzLG51bGwsdWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpc0xvYWRpbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZWU9PiJpc0xvYWRpbmciaW4gZWUsImhhcyIpLGdldDppKGVlPT5lZS5pc0xvYWRpbmcsImdldCIpLHNldDppKChlZSxrZSk9PntlZS5pc0xvYWRpbmc9a2V9LCJzZXQiKX0sbWV0YWRhdGE6dGV9LGxlLFEpLERsKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOnRlfSxudWxsLHQpLGllPWE9ZS52YWx1ZSx0ZSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTp0ZX0pfXN0YXRpYyBkZW1vPUQ2YTtzdGF0aWMgZGVtb0dyb3Vwcz1bIklucHV0Il07I2U9WHModGhpcyxvLCIiKTtnZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy4jZX1zZXQgdmFsdWUodGUpe3RoaXMuI2U9dGV9I3Q9KFhzKHRoaXMsbCksWHModGhpcyxkLCJyb3VuZCIpKTtnZXQgc2hhcGUoKXtyZXR1cm4gdGhpcy4jdH1zZXQgc2hhcGUodGUpe3RoaXMuI3Q9dGV9I2E9KFhzKHRoaXMsdSksWHModGhpcyxiLDEyMCkpO2dldCBzaXplKCl7cmV0dXJuIHRoaXMuI2F9c2V0IHNpemUodGUpe3RoaXMuI2E9dGV9I3M9KFhzKHRoaXMsdiksWHModGhpcyxtLCIiKSk7Z2V0IHBsYWNlaG9sZGVyKCl7cmV0dXJuIHRoaXMuI3N9c2V0IHBsYWNlaG9sZGVyKHRlKXt0aGlzLiNzPXRlfSNpPShYcyh0aGlzLGYpLFhzKHRoaXMsTSwhMCkpO2dldCBhbGxvd1VwbG9hZCgpe3JldHVybiB0aGlzLiNpfXNldCBhbGxvd1VwbG9hZCh0ZSl7dGhpcy4jaT10ZX0jcj0oWHModGhpcyx6KSxYcyh0aGlzLEMsITApKTtnZXQgYWxsb3dEZWxldGUoKXtyZXR1cm4gdGhpcy4jcn1zZXQgYWxsb3dEZWxldGUodGUpe3RoaXMuI3I9dGV9I289KFhzKHRoaXMsXyksWHModGhpcywkLDUqMTAyNCoxMDI0KSk7Z2V0IG1heEZpbGVTaXplKCl7cmV0dXJuIHRoaXMuI299c2V0IG1heEZpbGVTaXplKHRlKXt0aGlzLiNvPXRlfSNuPShYcyh0aGlzLEUpLFhzKHRoaXMsayxbImltYWdlL2pwZWciLCJpbWFnZS9wbmciLCJpbWFnZS93ZWJwIl0pKTtnZXQgYWNjZXB0ZWRGb3JtYXRzKCl7cmV0dXJuIHRoaXMuI259c2V0IGFjY2VwdGVkRm9ybWF0cyh0ZSl7dGhpcy4jbj10ZX0jbD0oWHModGhpcyxTKSxYcyh0aGlzLFAsODAwKSk7Z2V0IG91dHB1dFNpemUoKXtyZXR1cm4gdGhpcy4jbH1zZXQgb3V0cHV0U2l6ZSh0ZSl7dGhpcy4jbD10ZX0jYz0oWHModGhpcyxSKSxYcyh0aGlzLFYsLjk1KSk7Z2V0IG91dHB1dFF1YWxpdHkoKXtyZXR1cm4gdGhpcy4jY31zZXQgb3V0cHV0UXVhbGl0eSh0ZSl7dGhpcy4jYz10ZX0jZD0oWHModGhpcyxXKSxYcyh0aGlzLEIsITEpKTtnZXQgaXNIb3ZlcmVkKCl7cmV0dXJuIHRoaXMuI2R9c2V0IGlzSG92ZXJlZCh0ZSl7dGhpcy4jZD10ZX0jdT0oWHModGhpcyxVKSxYcyh0aGlzLEYsITEpKTtnZXQgaXNEcmFnZ2luZygpe3JldHVybiB0aGlzLiN1fXNldCBpc0RyYWdnaW5nKHRlKXt0aGlzLiN1PXRlfSNwPShYcyh0aGlzLGopLFhzKHRoaXMsbGUsITEpKTtnZXQgaXNMb2FkaW5nKCl7cmV0dXJuIHRoaXMuI3B9c2V0IGlzTG9hZGluZyh0ZSl7dGhpcy4jcD10ZX1tb2RhbEluc3RhbmNlPShYcyh0aGlzLFEpLG51bGwpO3N0YXRpYyBzdHlsZXM9W0hlLC4uLk90LmJhc2VTdHlsZXMsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIC5pbnB1dC13cmFwcGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiAxNnB4OwogICAgICB9CgogICAgICAucHJvZmlsZS1jb250YWluZXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5wcm9maWxlLWNvbnRhaW5lcjpob3ZlciB7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjAyKTsKICAgICAgfQoKICAgICAgLnByb2ZpbGUtcGljdHVyZSB7CiAgICAgICAgd2lkdGg6IHZhcigtLXNpemUsIDEyMHB4KTsKICAgICAgICBoZWlnaHQ6IHZhcigtLXNpemUsIDEyMHB4KTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y1ZjVmNSIsIiMxODE4MWIiKX07CiAgICAgICAgYm9yZGVyOiAzcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMjcyNzJhIil9OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICB9CgogICAgICAucHJvZmlsZS1waWN0dXJlLnJvdW5kIHsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgIH0KCiAgICAgIC5wcm9maWxlLXBpY3R1cmUuc3F1YXJlIHsKICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgICB9CgogICAgICAucHJvZmlsZS1waWN0dXJlLmRyYWdnaW5nIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzYwYTVmYSIpfTsKICAgICAgICBib3gtc2hhZG93OiAwIDAgMCA0cHggJHtoLmJkVGhlbWUoInJnYmEoNTksIDEzMCwgMjQ2LCAwLjE1KSIsInJnYmEoOTYsIDE2NSwgMjUwLCAwLjE1KSIpfTsKICAgICAgfQoKICAgICAgLnByb2ZpbGUtcGljdHVyZTpob3ZlciB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiI2Q0ZDRkOCIsIiMzZjNmNDYiKX07CiAgICAgIH0KCiAgICAgIC5wcm9maWxlLXBpY3R1cmU6ZGlzYWJsZWQgewogICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICB9CgogICAgICAucHJvZmlsZS1pbWFnZSB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG9iamVjdC1maXQ6IGNvdmVyOwogICAgICB9CgogICAgICAucGxhY2Vob2xkZXItaWNvbiB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQoKICAgICAgLm92ZXJsYXkgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjYpOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICAucHJvZmlsZS1jb250YWluZXI6aG92ZXIgLm92ZXJsYXkgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC5vdmVybGF5LWNvbnRlbnQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICB9CgogICAgICAub3ZlcmxheS1idXR0b24gewogICAgICAgIHdpZHRoOiA0MHB4OwogICAgICAgIGhlaWdodDogNDBweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMjU1LCAyNTUsIDI1NSwgMC45NSkiLCJyZ2JhKDM5LCAzOSwgNDIsIDAuOTUpIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMSkiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87CiAgICAgICAgYm94LXNoYWRvdzogMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICAgICAgfQoKICAgICAgLm92ZXJsYXktYnV0dG9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMzZjNmNDYiKX07CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpOwogICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTUpOwogICAgICB9CgogICAgICAub3ZlcmxheS1idXR0b24uZGVsZXRlIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgyMzksIDY4LCA2OCwgMC45KSIsInJnYmEoMjIwLCAzOCwgMzgsIDAuOSkiKX07CiAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgIH0KCiAgICAgIC5vdmVybGF5LWJ1dHRvbi5kZWxldGU6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZWY0NDQ0IiwiI2RjMjYyNiIpfTsKICAgICAgfQoKICAgICAgLmRyb3Atem9uZS10ZXh0IHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiA1MCU7CiAgICAgICAgbGVmdDogNTAlOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgLmhpZGRlbi1pbnB1dCB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgLyogTG9hZGluZyBhbmltYXRpb24gKi8KICAgICAgLmxvYWRpbmctb3ZlcmxheSB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpIiwicmdiYSgwLCAwLCAwLCAwLjgpIil9OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0OwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5sb2FkaW5nLW92ZXJsYXkuc2hvdyB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0bzsKICAgICAgfQoKICAgICAgLmxvYWRpbmctc3Bpbm5lciB7CiAgICAgICAgd2lkdGg6IDQwcHg7CiAgICAgICAgaGVpZ2h0OiA0MHB4OwogICAgICAgIGJvcmRlcjogM3B4IHNvbGlkICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMSkiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSkiKX07CiAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJHtoLmJkVGhlbWUoIiMzYjgyZjYiLCIjNjBhNWZhIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICBhbmltYXRpb246IHNwaW4gMC42cyBsaW5lYXIgaW5maW5pdGU7CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMgc3BpbiB7CiAgICAgICAgdG8gewogICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMgcHVsc2UgewogICAgICAgIDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIH0KICAgICAgICA1MCUgewogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTsKICAgICAgICAgIG9wYWNpdHk6IDAuODsKICAgICAgICB9CiAgICAgICAgMTAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC5wcm9maWxlLXBpY3R1cmUuY2xpY2tpbmcgewogICAgICAgIGFuaW1hdGlvbjogcHVsc2UgMC4zcyBlYXNlLW91dDsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImlucHV0LXdyYXBwZXIiPgogICAgICAgIDxkZWVzLWxhYmVsIC5sYWJlbD0ke3RoaXMubGFiZWx9IC5pbmZvVGV4dD0ke3RoaXMuaW5mb1RleHR9IC5yZXF1aXJlZD0ke3RoaXMucmVxdWlyZWR9PjwvZGVlcy1sYWJlbD4KICAgICAgICAKICAgICAgICA8ZGl2IAogICAgICAgICAgY2xhc3M9InByb2ZpbGUtY29udGFpbmVyIgogICAgICAgICAgQGNsaWNrPSR7dGhpcy5oYW5kbGVDbGlja30KICAgICAgICAgIEBkcmFnb3Zlcj0ke3RoaXMuaGFuZGxlRHJhZ092ZXJ9CiAgICAgICAgICBAZHJhZ2xlYXZlPSR7dGhpcy5oYW5kbGVEcmFnTGVhdmV9CiAgICAgICAgICBAZHJvcD0ke3RoaXMuaGFuZGxlRHJvcH0KICAgICAgICAgIHN0eWxlPSItLXNpemU6ICR7dGhpcy5zaXplfXB4IgogICAgICAgID4KICAgICAgICAgIDxkaXYgY2xhc3M9InByb2ZpbGUtcGljdHVyZSAke3RoaXMuc2hhcGV9ICR7dGhpcy5pc0RyYWdnaW5nPyJkcmFnZ2luZyI6IiJ9ICR7dGhpcy5pc0xvYWRpbmcmJiF0aGlzLnZhbHVlPyJjbGlja2luZyI6IiJ9Ij4KICAgICAgICAgICAgJHt0aGlzLnZhbHVlP3dgCiAgICAgICAgICAgICAgPGltZyBjbGFzcz0icHJvZmlsZS1pbWFnZSIgc3JjPSIke3RoaXMudmFsdWV9IiBhbHQ9IlByb2ZpbGUgcGljdHVyZSIgLz4KICAgICAgICAgICAgYDp3YAogICAgICAgICAgICAgIDxkZWVzLWljb24gY2xhc3M9InBsYWNlaG9sZGVyLWljb24iIGljb249Imx1Y2lkZTp1c2VyIiBpY29uU2l6ZT0iJHt0aGlzLnNpemUqLjV9Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgYH0KICAgICAgICAgICAgCiAgICAgICAgICAgICR7dGhpcy5pc0RyYWdnaW5nP3dgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ib3ZlcmxheSIgc3R5bGU9Im9wYWNpdHk6IDEiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHJvcC16b25lLXRleHQiPgogICAgICAgICAgICAgICAgICBEcm9wIGltYWdlIGhlcmUKICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICBgOiIifQogICAgICAgICAgICAKICAgICAgICAgICAgJHt0aGlzLnZhbHVlJiYhdGhpcy5kaXNhYmxlZD93YAogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im92ZXJsYXkiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ib3ZlcmxheS1jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgJHt0aGlzLmFsbG93VXBsb2FkP3dgCiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ib3ZlcmxheS1idXR0b24iIEBjbGljaz0ke3RlPT57dGUuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5vcGVuTW9kYWwoKX19IHRpdGxlPSJDaGFuZ2UgcGljdHVyZSI+CiAgICAgICAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpwZW5jaWwiIGljb25TaXplPSIyMCI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAgICAgICAgICR7dGhpcy5hbGxvd0RlbGV0ZT93YAogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9Im92ZXJsYXktYnV0dG9uIGRlbGV0ZSIgQGNsaWNrPSR7dGU9Pnt0ZS5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmRlbGV0ZVBpY3R1cmUoKX19IHRpdGxlPSJEZWxldGUgcGljdHVyZSI+CiAgICAgICAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTp0cmFzaDIiIGljb25TaXplPSIyMCI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICR7dGhpcy5pc0xvYWRpbmcmJiF0aGlzLnZhbHVlP3dgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9hZGluZy1vdmVybGF5IHNob3ciPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9hZGluZy1zcGlubmVyIj48L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYDoiIn0KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIAogICAgICAgIDxpbnB1dAogICAgICAgICAgdHlwZT0iZmlsZSIKICAgICAgICAgIGNsYXNzPSJoaWRkZW4taW5wdXQiCiAgICAgICAgICBhY2NlcHQ9IiR7dGhpcy5hY2NlcHRlZEZvcm1hdHMuam9pbigiLCIpfSIKICAgICAgICAgIEBjaGFuZ2U9JHt0aGlzLmhhbmRsZUZpbGVTZWxlY3R9CiAgICAgICAgLz4KICAgICAgICAke3RoaXMucmVuZGVyRGVzY3JpcHRpb24oKX0KICAgICAgPC9kaXY+CiAgICBgfWhhbmRsZUNsaWNrKCl7aWYoISh0aGlzLmRpc2FibGVkfHwhdGhpcy5hbGxvd1VwbG9hZCkmJiF0aGlzLnZhbHVlKXt0aGlzLmlzTG9hZGluZz0hMDtsZXQgdGU9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5oaWRkZW4taW5wdXQiKSxlZT1pKCgpPT57c2V0VGltZW91dCgoKT0+eyghdGUuZmlsZXN8fHRlLmZpbGVzLmxlbmd0aD09PTApJiYodGhpcy5pc0xvYWRpbmc9ITEpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1cyIsZWUpfSwzMDApfSwiaGFuZGxlRm9jdXMiKTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLGVlKSx0ZS5jbGljaygpfX1oYW5kbGVGaWxlU2VsZWN0KHRlKXtsZXQgZWU9dGUudGFyZ2V0LGtlPWVlLmZpbGVzPy5bMF07dGhpcy5pc0xvYWRpbmc9ITEsa2UmJnRoaXMucHJvY2Vzc0ZpbGUoa2UpLGVlLnZhbHVlPSIifWhhbmRsZURyYWdPdmVyKHRlKXt0ZS5wcmV2ZW50RGVmYXVsdCgpLCF0aGlzLmRpc2FibGVkJiZ0aGlzLmFsbG93VXBsb2FkJiYodGhpcy5pc0RyYWdnaW5nPSEwKX1oYW5kbGVEcmFnTGVhdmUoKXt0aGlzLmlzRHJhZ2dpbmc9ITF9aGFuZGxlRHJvcCh0ZSl7aWYodGUucHJldmVudERlZmF1bHQoKSx0aGlzLmlzRHJhZ2dpbmc9ITEsdGhpcy5kaXNhYmxlZHx8IXRoaXMuYWxsb3dVcGxvYWQpcmV0dXJuO2xldCBlZT10ZS5kYXRhVHJhbnNmZXI/LmZpbGVzWzBdO2VlJiZ0aGlzLnByb2Nlc3NGaWxlKGVlKX1hc3luYyBwcm9jZXNzRmlsZSh0ZSl7aWYoIXRoaXMuYWNjZXB0ZWRGb3JtYXRzLmluY2x1ZGVzKHRlLnR5cGUpKXtjb25zb2xlLmVycm9yKCJJbnZhbGlkIGZpbGUgdHlwZToiLHRlLnR5cGUpO3JldHVybn1pZih0ZS5zaXplPnRoaXMubWF4RmlsZVNpemUpe2NvbnNvbGUuZXJyb3IoIkZpbGUgdG9vIGxhcmdlOiIsdGUuc2l6ZSk7cmV0dXJufWxldCBlZT1uZXcgRmlsZVJlYWRlcjtlZS5vbmxvYWQ9YXN5bmMga2U9PntsZXQgWD1rZS50YXJnZXQ/LnJlc3VsdDthd2FpdCB0aGlzLm9wZW5Nb2RhbChYKX0sZWUucmVhZEFzRGF0YVVSTCh0ZSl9YXN5bmMgb3Blbk1vZGFsKHRlKXtsZXQgZWU9dGV8fHRoaXMudmFsdWU7aWYoIWVlKXt0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLmhpZGRlbi1pbnB1dCIpLmNsaWNrKCk7cmV0dXJufXRoaXMubW9kYWxJbnN0YW5jZT1uZXcgR2l0LHRoaXMubW9kYWxJbnN0YW5jZS5zaGFwZT10aGlzLnNoYXBlLHRoaXMubW9kYWxJbnN0YW5jZS5pbml0aWFsSW1hZ2U9ZWUsdGhpcy5tb2RhbEluc3RhbmNlLm91dHB1dFNpemU9dGhpcy5vdXRwdXRTaXplLHRoaXMubW9kYWxJbnN0YW5jZS5vdXRwdXRRdWFsaXR5PXRoaXMub3V0cHV0UXVhbGl0eSx0aGlzLm1vZGFsSW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcigic2F2ZSIsKGtlPT57dGhpcy52YWx1ZT1rZS5kZXRhaWwuY3JvcHBlZEltYWdlLHRoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMpfSkpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5tb2RhbEluc3RhbmNlKX1kZWxldGVQaWN0dXJlKCl7dGhpcy52YWx1ZT0iIix0aGlzLmNoYW5nZVN1YmplY3QubmV4dCh0aGlzKX1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLnZhbHVlfXNldFZhbHVlKHRlKXt0aGlzLnZhbHVlPXRlfXN0YXRpY3tYcyhhLHQpfX07cmV0dXJuIGllPWF9KSgpfSk7dmFyIFA2YT1nKCgpPT57ZjZhKCk7dml0KCk7bTZhKCk7aG5lKCk7eGl0KCk7VWV0KCk7ZzZhKCk7YjZhKCk7djZhKCk7eDZhKCk7eTZhKCk7dzZhKCk7azZhKCk7XzZhKCk7eWl0KCk7Yml0KCk7TTZhKCk7ejZhKCk7QzZhKCk7S2l0KCl9KTt2YXIgSTZhLEE2YT1nKCgpPT57cGUoKTtJNmE9aSgoKT0+d2AKICA8c3R5bGU+CiAgICAuZGVtb0NvbnRhaW5lciB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgIGdhcDogMzJweDsKICAgICAgcGFkZGluZzogNDhweDsKICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmOGY5ZmEiLCIjMGEwYTBhIil9OwogICAgICBtaW4taGVpZ2h0OiAxMDB2aDsKICAgIH0KICAgIAogICAgLnNlY3Rpb24gewogICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMxODE4MWIiKX07CiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzI3MjcyYSIpfTsKICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICBwYWRkaW5nOiAyNHB4OwogICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogICAgfQogICAgCiAgICAuc2VjdGlvbi10aXRsZSB7CiAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICAgIH0KICAgIAogICAgLnNlY3Rpb24tZGVzY3JpcHRpb24gewogICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICB9CiAgPC9zdHlsZT4KICA8ZGl2IGNsYXNzPSJkZW1vQ29udGFpbmVyIj4KICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5Ob24tU2VsZWN0YWJsZSBDaGlwczwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj5CYXNpYyBjaGlwcyB3aXRob3V0IHNlbGVjdGlvbiBjYXBhYmlsaXR5LiBVc2UgZm9yIGRpc3BsYXktb25seSB0YWdzLjwvZGl2PgogICAgICA8ZGVlcy1jaGlwcwogICAgICAgIHNlbGVjdGlvbk1vZGU9Im5vbmUiCiAgICAgICAgLnNlbGVjdGFibGVDaGlwcz0ke1t7a2V5OiJzdGF0dXMiLHZhbHVlOiJBY3RpdmUifSx7a2V5OiJ0aWVyIix2YWx1ZToiUHJlbWl1bSJ9LHtrZXk6InJlZ2lvbiIsdmFsdWU6IkVVLVdlc3QifSx7a2V5OiJ0eXBlIix2YWx1ZToiRW50ZXJwcmlzZSJ9XX0KICAgICAgPjwvZGVlcy1jaGlwcz4KICAgIDwvZGl2PgogICAgCiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+U2luZ2xlIFNlbGVjdGlvbiBDaGlwczwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj5DbGljayB0byBzZWxlY3Qgb25lIGNoaXAgYXQgYSB0aW1lLiBVc2VmdWwgZm9yIGZpbHRlcnMgYW5kIG9wdGlvbnMuPC9kaXY+CiAgICAgIDxkZWVzLWNoaXBzCiAgICAgICAgc2VsZWN0aW9uTW9kZT0ic2luZ2xlIgogICAgICAgIC5zZWxlY3RhYmxlQ2hpcHM9JHtbe2tleToiYWxsIix2YWx1ZToiQWxsIFByb2plY3RzIn0se2tleToiYWN0aXZlIix2YWx1ZToiQWN0aXZlIn0se2tleToiYXJjaGl2ZWQiLHZhbHVlOiJBcmNoaXZlZCJ9LHtrZXk6ImRyYWZ0cyIsdmFsdWU6IkRyYWZ0cyJ9XX0KICAgICAgPjwvZGVlcy1jaGlwcz4KICAgIDwvZGl2PgogICAgCiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+TXVsdGlwbGUgU2VsZWN0aW9uIENoaXBzPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tZGVzY3JpcHRpb24iPlNlbGVjdCBtdWx0aXBsZSBjaGlwcyBzaW11bHRhbmVvdXNseS4gR3JlYXQgZm9yIHRhZyBzZWxlY3Rpb24uPC9kaXY+CiAgICAgIDxkZWVzLWNoaXBzCiAgICAgICAgc2VsZWN0aW9uTW9kZT0ibXVsdGlwbGUiCiAgICAgICAgLnNlbGVjdGFibGVDaGlwcz0ke1t7a2V5OiJqcyIsdmFsdWU6IkphdmFTY3JpcHQifSx7a2V5OiJ0cyIsdmFsdWU6IlR5cGVTY3JpcHQifSx7a2V5OiJyZWFjdCIsdmFsdWU6IlJlYWN0In0se2tleToidnVlIix2YWx1ZToiVnVlIn0se2tleToiYW5ndWxhciIsdmFsdWU6IkFuZ3VsYXIifSx7a2V5OiJub2RlIix2YWx1ZToiTm9kZS5qcyJ9XX0KICAgICAgPjwvZGVlcy1jaGlwcz4KICAgIDwvZGl2PgogICAgCiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+UmVtb3ZhYmxlIENoaXBzIHdpdGggS2V5czwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj5DaGlwcyB3aXRoIHJlbW92ZSBidXR0b25zIGFuZCBrZXktdmFsdWUgcGFpcnMuIFBlcmZlY3QgZm9yIGR5bmFtaWMgbGlzdHMuPC9kaXY+CiAgICAgIDxkZWVzLWNoaXBzCiAgICAgICAgc2VsZWN0aW9uTW9kZT0ic2luZ2xlIgogICAgICAgIGNoaXBzQXJlUmVtb3ZhYmxlCiAgICAgICAgLnNlbGVjdGFibGVDaGlwcz0ke1t7a2V5OiJlbnYiLHZhbHVlOiJQcm9kdWN0aW9uIn0se2tleToidmVyc2lvbiIsdmFsdWU6IjIuNC4xIn0se2tleToiYnJhbmNoIix2YWx1ZToibWFpbiJ9LHtrZXk6ImF1dGhvciIsdmFsdWU6IkpvaG4gRG9lIn1dfQogICAgICA+PC9kZWVzLWNoaXBzPgogICAgPC9kaXY+CiAgICAKICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5NaXhlZCBDb250ZW50IEV4YW1wbGU8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1kZXNjcmlwdGlvbiI+Q29tYmluaW5nIGRpZmZlcmVudCBjaGlwIHR5cGVzIGZvciBjb21wbGV4IFVJcy48L2Rpdj4KICAgICAgPGRlZXMtY2hpcHMKICAgICAgICBzZWxlY3Rpb25Nb2RlPSJtdWx0aXBsZSIKICAgICAgICBjaGlwc0FyZVJlbW92YWJsZQogICAgICAgIC5zZWxlY3RhYmxlQ2hpcHM9JHtbe2tleToicHJpb3JpdHkiLHZhbHVlOiJIaWdoIn0se2tleToic3RhdHVzIix2YWx1ZToiSW4gUHJvZ3Jlc3MifSx7a2V5OiJidWciLHZhbHVlOiJCdWcifSx7a2V5OiJmZWF0dXJlIix2YWx1ZToiRmVhdHVyZSJ9LHtrZXk6InNwcmludCIsdmFsdWU6IlNwcmludCAyMyJ9LHtrZXk6ImFzc2lnbmVlIix2YWx1ZToiQWxpY2UifV19CiAgICAgID48L2RlZXMtY2hpcHM+CiAgICA8L2Rpdj4KICA8L2Rpdj4KYCwiZGVtb0Z1bmMiKX0pO3ZhciB0eCxkMixONmEsUjZhPWcoKCk9PntwZSgpO2t0KCk7QTZhKCk7cHQoKTt0eD1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sZDI9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LE42YT0oKCk9PntsZXQgcz1bbmUoImRlZXMtY2hpcHMiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXTt2YXIgTj1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0NoaXBzIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IEM9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCgpXSxwPVtMKHt0eXBlOkJvb2xlYW59KV0sYz1bTCh7dHlwZTpBcnJheX0pXSx4PVtMKCldLHk9W0woe3R5cGU6QXJyYXl9KV0sdHgodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWxlY3Rpb25Nb2RlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJzZWxlY3Rpb25Nb2RlImluIF8sImhhcyIpLGdldDppKF89Pl8uc2VsZWN0aW9uTW9kZSwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLnNlbGVjdGlvbk1vZGU9T30sInNldCIpfSxtZXRhZGF0YTpDfSxvLGwpLHR4KHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY2hpcHNBcmVSZW1vdmFibGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+ImNoaXBzQXJlUmVtb3ZhYmxlImluIF8sImhhcyIpLGdldDppKF89Pl8uY2hpcHNBcmVSZW1vdmFibGUsImdldCIpLHNldDppKChfLE8pPT57Xy5jaGlwc0FyZVJlbW92YWJsZT1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LGQsdSksdHgodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWxlY3RhYmxlQ2hpcHMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+InNlbGVjdGFibGVDaGlwcyJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLnNlbGVjdGFibGVDaGlwcywiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLnNlbGVjdGFibGVDaGlwcz1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LGIsdiksdHgodGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWxlY3RlZENoaXAiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+InNlbGVjdGVkQ2hpcCJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLnNlbGVjdGVkQ2hpcCwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLnNlbGVjdGVkQ2hpcD1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LG0sZiksdHgodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWxlY3RlZENoaXBzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJzZWxlY3RlZENoaXBzImluIF8sImhhcyIpLGdldDppKF89Pl8uc2VsZWN0ZWRDaGlwcywiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLnNlbGVjdGVkQ2hpcHM9T30sInNldCIpfSxtZXRhZGF0YTpDfSxNLHopLHR4KG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOkN9LG51bGwsdCksTj1hPWUudmFsdWUsQyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpDfSl9c3RhdGljIGRlbW89STZhO3N0YXRpYyBkZW1vR3JvdXBzPVsiTGF5b3V0Il07I2U9ZDIodGhpcyxvLCJzaW5nbGUiKTtnZXQgc2VsZWN0aW9uTW9kZSgpe3JldHVybiB0aGlzLiNlfXNldCBzZWxlY3Rpb25Nb2RlKEMpe3RoaXMuI2U9Q30jdD0oZDIodGhpcyxsKSxkMih0aGlzLGQsITEpKTtnZXQgY2hpcHNBcmVSZW1vdmFibGUoKXtyZXR1cm4gdGhpcy4jdH1zZXQgY2hpcHNBcmVSZW1vdmFibGUoQyl7dGhpcy4jdD1DfSNhPShkMih0aGlzLHUpLGQyKHRoaXMsYixbXSkpO2dldCBzZWxlY3RhYmxlQ2hpcHMoKXtyZXR1cm4gdGhpcy4jYX1zZXQgc2VsZWN0YWJsZUNoaXBzKEMpe3RoaXMuI2E9Q30jcz0oZDIodGhpcyx2KSxkMih0aGlzLG0sbnVsbCkpO2dldCBzZWxlY3RlZENoaXAoKXtyZXR1cm4gdGhpcy4jc31zZXQgc2VsZWN0ZWRDaGlwKEMpe3RoaXMuI3M9Q30jaT0oZDIodGhpcyxmKSxkMih0aGlzLE0sW10pKTtnZXQgc2VsZWN0ZWRDaGlwcygpe3JldHVybiB0aGlzLiNpfXNldCBzZWxlY3RlZENoaXBzKEMpe3RoaXMuI2k9Q31jb25zdHJ1Y3Rvcigpe3N1cGVyKCksZDIodGhpcyx6KX1zdGF0aWMgc3R5bGVzPVtIZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgLyogVE9ETzogTWlncmF0ZSBoYXJkY29kZWQgdmFsdWVzIHRvIC0tZGVlcy0qIENTUyB2YXJpYWJsZXMgKi8KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgIC5tYWluYm94IHsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICBnYXA6IDhweDsKICAgICAgfQoKICAgICAgLmNoaXAgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzI3MjcyYSIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMzZjNmNDYiKX07CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgcGFkZGluZzogMHB4IDEycHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBib3gtc2hhZG93OiAwIDFweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMDUpOwogICAgICB9CgogICAgICAuY2hpcDpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjM2YzZjQ2Iil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiNkMWQ1ZGIiLCIjNTI1MjViIil9OwogICAgICB9CgogICAgICAuY2hpcDphY3RpdmUgewogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45OCk7CiAgICAgIH0KCiAgICAgIC5jaGlwLnNlbGVjdGVkIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiIzNiODJmNiIsIiMzYjgyZjYiKX07CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiIzNiODJmNiIsIiMzYjgyZjYiKX07CiAgICAgICAgY29sb3I6ICNmZmZmZmY7CiAgICAgIH0KCiAgICAgIC5jaGlwLnNlbGVjdGVkOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiIzI1NjNlYiIsIiMyNTYzZWIiKX07CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiIzI1NjNlYiIsIiMyNTYzZWIiKX07CiAgICAgIH0KCiAgICAgIC5jaGlwS2V5IHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjA2KSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSIpfTsKICAgICAgICBoZWlnaHQ6IDIwcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBtYXJnaW4tbGVmdDogLThweDsKICAgICAgICBwYWRkaW5nOiAwcHggOHB4OwogICAgICAgIG1hcmdpbi1yaWdodDogOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICB9CgogICAgICAuY2hpcC5zZWxlY3RlZCAuY2hpcEtleSB7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpOwogICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7CiAgICAgIH0KCiAgICAgIGRlZXMtaWNvbiB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIHdpZHRoOiAxNnB4OwogICAgICAgIGhlaWdodDogMTZweDsKICAgICAgICBtYXJnaW4tbGVmdDogOHB4OwogICAgICAgIG1hcmdpbi1yaWdodDogLTZweDsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQoKICAgICAgLmNoaXAuc2VsZWN0ZWQgZGVlcy1pY29uIHsKICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpOwogICAgICB9CgogICAgICBkZWVzLWljb246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMSkiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZWY0NDQ0IiwiI2VmNDQ0NCIpfTsKICAgICAgfQoKICAgICAgLmNoaXAuc2VsZWN0ZWQgZGVlcy1pY29uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7CiAgICAgICAgY29sb3I6ICNmZmZmZmY7CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJtYWluYm94Ij4KICAgICAgICAke3RoaXMuc2VsZWN0YWJsZUNoaXBzLm1hcChDPT53YAogICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMuc2VsZWN0Q2hpcChDKX0KICAgICAgICAgICAgICBjbGFzcz0iY2hpcCAke3RoaXMuaXNTZWxlY3RlZChDKT8ic2VsZWN0ZWQiOiIifSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgICR7Qy5rZXk/d2A8ZGl2IGNsYXNzPSJjaGlwS2V5Ij4ke0Mua2V5fTwvZGl2PmA6d2BgfSAke0MudmFsdWV9CiAgICAgICAgICAgICAgJHt0aGlzLmNoaXBzQXJlUmVtb3ZhYmxlP3dgCiAgICAgICAgICAgICAgICAgICAgPGRlZXMtaWNvbgogICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPSR7Xz0+e18uc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5yZW1vdmVDaGlwKEMpfX0KICAgICAgICAgICAgICAgICAgICAgIC5pY29uPSR7ImZhOnhtYXJrIn0KICAgICAgICAgICAgICAgICAgICA+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICAgIGA6d2BgfQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIGApfQogICAgICA8L2Rpdj4KICAgIGB9YXN5bmMgZmlyc3RVcGRhdGVkKCl7fWlzU2VsZWN0ZWQoQyl7cmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZT09PSJzaW5nbGUiP3RoaXMuc2VsZWN0ZWRDaGlwP3RoaXMuaXNTYW1lQ2hpcCh0aGlzLnNlbGVjdGVkQ2hpcCxDKTohMTp0aGlzLnNlbGVjdGVkQ2hpcHMuc29tZShfPT50aGlzLmlzU2FtZUNoaXAoXyxDKSl9aXNTYW1lQ2hpcChDLF8pe3JldHVybihDLmtleSYmXy5rZXl8fEMudmFsdWU9PT1fLnZhbHVlKSYmQy5rZXk9PT1fLmtleX1hc3luYyBzZWxlY3RDaGlwKEMpe3RoaXMuc2VsZWN0aW9uTW9kZSE9PSJub25lIiYmKHRoaXMuc2VsZWN0aW9uTW9kZT09PSJzaW5nbGUiP3RoaXMuaXNTZWxlY3RlZChDKT8odGhpcy5zZWxlY3RlZENoaXA9bnVsbCx0aGlzLnNlbGVjdGVkQ2hpcHM9W10pOih0aGlzLnNlbGVjdGVkQ2hpcD1DLHRoaXMuc2VsZWN0ZWRDaGlwcz1bQ10pOnRoaXMuc2VsZWN0aW9uTW9kZT09PSJtdWx0aXBsZSImJih0aGlzLmlzU2VsZWN0ZWQoQyk/dGhpcy5zZWxlY3RlZENoaXBzPXRoaXMuc2VsZWN0ZWRDaGlwcy5maWx0ZXIoXz0+IXRoaXMuaXNTYW1lQ2hpcChfLEMpKTp0aGlzLnNlbGVjdGVkQ2hpcHM9Wy4uLnRoaXMuc2VsZWN0ZWRDaGlwcyxDXSx0aGlzLnJlcXVlc3RVcGRhdGUoKSksY29uc29sZS5sb2codGhpcy5zZWxlY3RlZENoaXBzKSl9cmVtb3ZlQ2hpcChDKXt0aGlzLnNlbGVjdGFibGVDaGlwcz10aGlzLnNlbGVjdGFibGVDaGlwcy5maWx0ZXIoXz0+IXRoaXMuaXNTYW1lQ2hpcChfLEMpKSx0aGlzLnNlbGVjdGVkQ2hpcHM9dGhpcy5zZWxlY3RlZENoaXBzLmZpbHRlcihfPT4hdGhpcy5pc1NhbWVDaGlwKF8sQykpLHRoaXMuc2VsZWN0ZWRDaGlwJiZ0aGlzLmlzU2FtZUNoaXAodGhpcy5zZWxlY3RlZENoaXAsQykmJih0aGlzLnNlbGVjdGVkQ2hpcD1udWxsKSx0aGlzLnJlcXVlc3RVcGRhdGUoKX1zdGF0aWN7ZDIoYSx0KX19O3JldHVybiBOPWF9KSgpfSk7dmFyIE82YT1nKCgpPT57UjZhKCl9KTt2YXIgRjZhLEI2YT1nKCgpPT57cGUoKTtJdCgpO0Y2YT1pKCgpPT53YAogICAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e2xldCBlPXMucXVlcnlTZWxlY3RvcigiI2Rhc2hib2FyZEdyaWQiKSx0PVt7aWQ6Im1ldHJpY3MxIix4OjAseTowLHc6MyxoOjIsdGl0bGU6IlJldmVudWUiLGljb246Imx1Y2lkZTpkb2xsYXJTaWduIixjb250ZW50OndgCiAgICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmc6IDIwcHg7Ij4KICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJmb250LXNpemU6IDMycHg7IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07Ij4kMTI0LDU2MzwvZGl2PgogICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiAjMjJjNTVlOyBmb250LXNpemU6IDE0cHg7IG1hcmdpbi10b3A6IDhweDsiPuKGkSAxMi41JSBmcm9tIGxhc3QgbW9udGg8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgfSx7aWQ6Im1ldHJpY3MyIix4OjMseTowLHc6MyxoOjIsdGl0bGU6IlVzZXJzIixpY29uOiJsdWNpZGU6dXNlcnMiLGNvbnRlbnQ6d2AKICAgICAgICAgICAgPGRpdiBzdHlsZT0icGFkZGluZzogMjBweDsiPgogICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZTogMzJweDsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsiPjgsMjM0PC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iY29sb3I6ICMzYjgyZjY7IGZvbnQtc2l6ZTogMTRweDsgbWFyZ2luLXRvcDogOHB4OyI+4oaRIDUuMiUgZnJvbSBsYXN0IHdlZWs8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgfSx7aWQ6ImNoYXJ0MSIseDo2LHk6MCx3OjYsaDo0LHRpdGxlOiJBbmFseXRpY3MiLGljb246Imx1Y2lkZTpsaW5lQ2hhcnQiLGNvbnRlbnQ6d2AKICAgICAgICAgICAgPGRpdiBzdHlsZT0icGFkZGluZzogMjBweDsgaGVpZ2h0OiAxMDAlOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsiPgogICAgICAgICAgICAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgY29sb3I6ICM3MTcxN2E7Ij4KICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHsibHVjaWRlOmxpbmVDaGFydCJ9IHN0eWxlPSJmb250LXNpemU6IDQ4cHg7IG1hcmdpbi1ib3R0b206IDE2cHg7Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgIDxkaXY+Q2hhcnQgdmlzdWFsaXphdGlvbiBhcmVhPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYH1dO2Uud2lkZ2V0cz10Lm1hcCh5PT4oey4uLnl9KSksZS5jZWxsSGVpZ2h0PTgwLGUubWFyZ2luPXt0b3A6MTAscmlnaHQ6MTAsYm90dG9tOjEwLGxlZnQ6MTB9LGUuZW5hYmxlQW5pbWF0aW9uPSEwLGUuc2hvd0dyaWRMaW5lcz0hMTtsZXQgYT1lLmdldExheW91dCgpLm1hcCh5PT4oey4uLnl9KSkscj1lLndpZGdldHMubWFwKCh5LE0pPT4oe2lkOnkuaWQseDowLHk6TT09PTA/MDplLndpZGdldHMuc2xpY2UoMCxNKS5yZWR1Y2UoKHosTik9PnorTi5oLDApLHc6ZS5jb2x1bW5zLGg6eS5ofSkpO2UubGF5b3V0cz17YmFzZTphLG1vYmlsZTpyfTtsZXQgbj1zLnF1ZXJ5U2VsZWN0b3IoIiNkYXNoYm9hcmRMYXlvdXRTdGF0dXMiKSxvPWkoKCk9PntsZXQgeT1lLmdldExheW91dCgpO24udGV4dENvbnRlbnQ9YEFjdGl2ZSBicmVha3BvaW50OiAke2UuYWN0aXZlQnJlYWtwb2ludH0gXHUyMDIyIFRpbGVzOiAke3kubGVuZ3RofWB9LCJ1cGRhdGVTdGF0dXMiKSxsPXdpbmRvdy5tYXRjaE1lZGlhKCIobWF4LXdpZHRoOiA3NjhweCkiKSxwPWkoKCk9PntsZXQgeT1sLm1hdGNoZXM/Im1vYmlsZSI6ImJhc2UiO2UuYXBwbHlCcmVha3BvaW50TGF5b3V0KHkpLG8oKX0sImhhbmRsZUJyZWFrcG9pbnQiKTt0eXBlb2YgbC5hZGRFdmVudExpc3RlbmVyPT0iZnVuY3Rpb24iP2wuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixwKTpsLmFkZExpc3RlbmVyPy4ocCkscCgpO2xldCBkPTQ7cy5xdWVyeVNlbGVjdG9yQWxsKCJkZWVzLWJ1dHRvbiIpLmZvckVhY2goeT0+e3N3aXRjaCh5LnRleHQ/LnRyaW0oKSl7Y2FzZSJUb2dnbGUgQW5pbWF0aW9uIjp5LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e2UuZW5hYmxlQW5pbWF0aW9uPSFlLmVuYWJsZUFuaW1hdGlvbn0pO2JyZWFrO2Nhc2UiVG9nZ2xlIEdyaWQgTGluZXMiOnkuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57ZS5zaG93R3JpZExpbmVzPSFlLnNob3dHcmlkTGluZXN9KTticmVhaztjYXNlIkFkZCBXaWRnZXQiOnkuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57bGV0IHo9e2lkOmB3aWRnZXQke2QrK31gLHg6MCx5OjAsdzozLGg6MixhdXRvUG9zaXRpb246ITAsdGl0bGU6YFdpZGdldCAke2QtMX1gLGljb246Imx1Y2lkZTpwYWNrYWdlIixjb250ZW50OndgCiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmc6IDIwcHg7IHRleHQtYWxpZ246IGNlbnRlcjsiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiAjNzE3MTdhOyI+TmV3IHdpZGdldCBjb250ZW50PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDogOHB4OyBmb250LXNpemU6IDI0cHg7IGZvbnQtd2VpZ2h0OiA2MDA7IGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07Ij4ke01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoxZTMpfTwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIGB9O2UuYWRkV2lkZ2V0KHosITApfSk7YnJlYWs7Y2FzZSJDb21wYWN0IEdyaWQiOnkuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57ZS5jb21wYWN0KCl9KTticmVhaztjYXNlIlRvZ2dsZSBFZGl0IE1vZGUiOnkuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57ZS5lZGl0YWJsZT0hZS5lZGl0YWJsZSx5LnRleHQ9ZS5lZGl0YWJsZT8iTG9jayBHcmlkIjoiVW5sb2NrIEdyaWQifSk7YnJlYWs7Y2FzZSJSZXNldCBMYXlvdXQiOnkuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57ZS5hcHBseUJyZWFrcG9pbnRMYXlvdXQoZS5hY3RpdmVCcmVha3BvaW50KX0pO2JyZWFrO2RlZmF1bHQ6YnJlYWt9fSk7bGV0IGM9bnVsbCxiPTAsdj1pKCh5LE0pPT57bGV0IHo9ZS5nZXRMYXlvdXQoKTtjb25zb2xlLmdyb3VwKGBcdXsxRjUwNH0gJHt5fSBbRXZlbnQgIyR7KytifV1gKSxjb25zb2xlLmxvZygiVGltZXN0YW1wOiIsbmV3IERhdGUoKS50b0lTT1N0cmluZygpKSxjb25zb2xlLmxvZygiR3JpZCBDb25maWd1cmF0aW9uOiIse2NvbHVtbnM6ZS5jb2x1bW5zLGNlbGxIZWlnaHQ6ZS5jZWxsSGVpZ2h0LG1hcmdpbjplLm1hcmdpbixlZGl0YWJsZTplLmVkaXRhYmxlLGFjdGl2ZUJyZWFrcG9pbnQ6ZS5hY3RpdmVCcmVha3BvaW50fSksY29uc29sZS5sb2coIkN1cnJlbnQgTGF5b3V0OiIseiksY29uc29sZS5sb2coIldpZGdldCBDb3VudDoiLHoubGVuZ3RoKSxjb25zb2xlLmxvZygiR3JpZCBCb3VuZHM6Iix7dG90YWxXaWRnZXRzOmUud2lkZ2V0cy5sZW5ndGgsbWF4WTpNYXRoLm1heCguLi56Lm1hcChOPT5OLnkrTi5oKSksb2NjdXBpZWQ6ei5tYXAoTj0+YCR7Ti5pZH06ICgke04ueH0sJHtOLnl9KSAke04ud314JHtOLmh9YCkuam9pbigiLCAiKX0pLE0mJmNvbnNvbGUubG9nKCJFdmVudCBEZXRhaWxzOiIsTSksY29uc29sZS5ncm91cEVuZCgpfSwibG9nR3JpZFN0YXRlIikseD1uZXcgTXV0YXRpb25PYnNlcnZlcigoKT0+e2xldCB5PWUuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLnBsYWNlaG9sZGVyIik7aWYoeSl7bGV0IE09e2xlZnQ6eS5zdHlsZS5sZWZ0LHRvcDp5LnN0eWxlLnRvcCx3aWR0aDp5LnN0eWxlLndpZHRoLGhlaWdodDp5LnN0eWxlLmhlaWdodH07aWYoSlNPTi5zdHJpbmdpZnkoTSkhPT1KU09OLnN0cmluZ2lmeShjKSl7Y29uc29sZS5ncm91cCgiXHV7MUY0Q0R9IFBsYWNlaG9sZGVyIFBvc2l0aW9uIENoYW5nZWQiKSxjb25zb2xlLmxvZygiUHJldmlvdXM6IixjKSxjb25zb2xlLmxvZygiQ3VycmVudDoiLE0pO2xldCB6PWUuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLmdyaWQtY29udGFpbmVyIik7eiYmY29uc29sZS5sb2coIkdyaWQgQ29udGFpbmVyIERpbWVuc2lvbnM6Iix7d2lkdGg6ei5jbGllbnRXaWR0aCxoZWlnaHQ6ei5jbGllbnRIZWlnaHR9KSxjb25zb2xlLmdyb3VwRW5kKCksYz1NfX19KTtlLnNoYWRvd1Jvb3QmJngub2JzZXJ2ZShlLnNoYWRvd1Jvb3Qse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwLGF0dHJpYnV0ZXM6ITAsYXR0cmlidXRlRmlsdGVyOlsic3R5bGUiXX0pLHYoIkluaXRpYWwgR3JpZCBTdGF0ZSIpLGUuYWRkRXZlbnRMaXN0ZW5lcigid2lkZ2V0LW1vdmUiLHk9PntsZXQgTT15LmRldGFpbDt2KCJXaWRnZXQgTW92ZSIse3dpZGdldDpNLndpZGdldCxkaXNwbGFjZWQ6TS5kaXNwbGFjZWQsc3dhcHBlZFdpdGg6TS5zd2FwcGVkV2l0aH0pfSksZS5hZGRFdmVudExpc3RlbmVyKCJ3aWRnZXQtcmVzaXplIix5PT57bGV0IE09eS5kZXRhaWw7digiV2lkZ2V0IFJlc2l6ZSIse3dpZGdldDpNLndpZGdldCxkaXNwbGFjZWQ6TS5kaXNwbGFjZWQsc3dhcHBlZFdpdGg6TS5zd2FwcGVkV2l0aH0pfSksZS5hZGRFdmVudExpc3RlbmVyKCJ3aWRnZXQtcmVtb3ZlIix5PT57bGV0IE09eS5kZXRhaWw7digiV2lkZ2V0IFJlbW92ZSIse3JlbW92ZWRXaWRnZXQ6TS53aWRnZXR9KSxvKCl9KSxlLmFkZEV2ZW50TGlzdGVuZXIoImxheW91dC1jaGFuZ2UiLCgpPT57digiTGF5b3V0IENoYW5nZSIpLG8oKX0pLGUuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLHk9PntsZXQgTT15LnRhcmdldC5jbG9zZXN0KCIud2lkZ2V0LWhlYWRlciIpLHo9eS50YXJnZXQuY2xvc2VzdCgiLnJlc2l6ZS1oYW5kbGUiKTtpZihNfHx6KXtjb25zb2xlLmdyb3VwKGBcdXsxRjNBRn0gSW50ZXJhY3Rpb24gU3RhcnRlZDogJHtNPyJEcmFnIjoiUmVzaXplIn1gKSxjb25zb2xlLmxvZygiVGFyZ2V0IFdpZGdldDoiLHkudGFyZ2V0LmNsb3Nlc3QoIi53aWRnZXQiKT8uZ2V0QXR0cmlidXRlKCJkYXRhLXdpZGdldC1pZCIpKSxjb25zb2xlLmxvZygiUG9pbnRlciBQb3NpdGlvbjoiLHt4OnkuY2xpZW50WCx5OnkuY2xpZW50WX0pLGNvbnNvbGUuZ3JvdXBFbmQoKTtsZXQgTj1pKF89PntsZXQgTz15LnRhcmdldC5jbG9zZXN0KCIud2lkZ2V0Iik7TyYmY29uc29sZS5sb2coIlx1MjE5NFx1RkUwRiBQb2ludGVyIE1vdmU6Iix7d2lkZ2V0SWQ6Ty5nZXRBdHRyaWJ1dGUoImRhdGEtd2lkZ2V0LWlkIikscG9zaXRpb246e3g6Xy5jbGllbnRYLHk6Xy5jbGllbnRZfSxkZWx0YTp7eDpfLmNsaWVudFgteS5jbGllbnRYLHk6Xy5jbGllbnRZLXkuY2xpZW50WX19KX0sImhhbmRsZVBvaW50ZXJNb3ZlIiksQz1pKCgpPT57Y29uc29sZS5ncm91cCgiXHV7MUYzQzF9IEludGVyYWN0aW9uIEVuZGVkIiksdigiRmluYWwgU3RhdGUgQWZ0ZXIgSW50ZXJhY3Rpb24iKSxjb25zb2xlLmdyb3VwRW5kKCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLE4pLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsQyl9LCJoYW5kbGVQb2ludGVyVXAiKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsTiksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIixDKX19KTtsZXQgbT1lLmFkZFdpZGdldC5iaW5kKGUpO2UuYWRkV2lkZ2V0PSh5LE0pPT57Y29uc29sZS5ncm91cCgiXHUyNzk1IEFkZGluZyBXaWRnZXQiKSxjb25zb2xlLmxvZygiTmV3IFdpZGdldDoiLHkpLGNvbnNvbGUubG9nKCJBdXRvIFBvc2l0aW9uOiIsTSk7bGV0IHo9bSh5LE0pO3JldHVybiB2KCJBZnRlciBXaWRnZXQgQWRkZWQiKSxjb25zb2xlLmdyb3VwRW5kKCksen07bGV0IGY9ZS5jb21wYWN0LmJpbmQoZSk7ZS5jb21wYWN0PXk9Pntjb25zb2xlLmdyb3VwKCJcdXsxRjVEQ31cdUZFMEYgQ29tcGFjdGluZyBHcmlkIiksY29uc29sZS5sb2coIkRpcmVjdGlvbjoiLHl8fCJ2ZXJ0aWNhbCIpLHYoIkJlZm9yZSBDb21wYWN0Iik7bGV0IE09Zih5KTtyZXR1cm4gdigiQWZ0ZXIgQ29tcGFjdCIpLGNvbnNvbGUuZ3JvdXBFbmQoKSxNfSxvKCl9fT4KICAgICAgPHN0eWxlPgogICAgICAgICR7SmAKICAgICAgICAgIC5kZW1vQm94IHsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMwOTA5MGIiKX07CiAgICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIHBhZGRpbmc6IDQwcHg7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIGdhcDogMjRweDsKICAgICAgICAgIH0KCiAgICAgICAgICAuZGVtby1jb250cm9scyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgICAgfQoKICAgICAgICAgIC5kZW1vLWNvbnRyb2xzIGRlZXMtYnV0dG9uIHsKICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgICB9CgogICAgICAgICAgLmdyaWQtY29udGFpbmVyLXdyYXBwZXIgewogICAgICAgICAgICBmbGV4OiAxOwogICAgICAgICAgICBtaW4taGVpZ2h0OiA2MDBweDsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgfQoKICAgICAgICAgIC5pbmZvIHsKICAgICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiIzcxNzE3YSIpfTsKICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgICAgICBmb250LWZhbWlseTogJ0dlaXN0IFNhbnMnLCBzYW5zLXNlcmlmOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIGdhcDogNnB4OwogICAgICAgICAgfQoKICAgICAgICAgICNkYXNoYm9hcmRMYXlvdXRTdGF0dXMgewogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzYjgyZjYiLCIjNjBhNWZhIil9OwogICAgICAgICAgfQogICAgICAgIGB9CiAgICAgIDwvc3R5bGU+CiAgICAgIDxkaXYgY2xhc3M9ImRlbW9Cb3giPgogICAgICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udHJvbHMiPgogICAgICAgICAgPGRlZXMtYnV0dG9uLWdyb3VwIGxhYmVsPSJBbmltYXRpb246Ij4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uPlRvZ2dsZSBBbmltYXRpb248L2RlZXMtYnV0dG9uPgogICAgICAgICAgPC9kZWVzLWJ1dHRvbi1ncm91cD4KCiAgICAgICAgICA8ZGVlcy1idXR0b24tZ3JvdXAgbGFiZWw9IkRpc3BsYXk6Ij4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uPlRvZ2dsZSBHcmlkIExpbmVzPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDwvZGVlcy1idXR0b24tZ3JvdXA+CgogICAgICAgICAgPGRlZXMtYnV0dG9uLWdyb3VwIGxhYmVsPSJBY3Rpb25zOiI+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbj5BZGQgV2lkZ2V0PC9kZWVzLWJ1dHRvbj4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uPkNvbXBhY3QgR3JpZDwvZGVlcy1idXR0b24+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbj5SZXNldCBMYXlvdXQ8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPC9kZWVzLWJ1dHRvbi1ncm91cD4KCiAgICAgICAgICA8ZGVlcy1idXR0b24tZ3JvdXAgbGFiZWw9Ik1vZGU6Ij4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uPlRvZ2dsZSBFZGl0IE1vZGU8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPC9kZWVzLWJ1dHRvbi1ncm91cD4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZC1jb250YWluZXItd3JhcHBlciI+CiAgICAgICAgICA8ZGVlcy1kYXNoYm9hcmRncmlkIGlkPSJkYXNoYm9hcmRHcmlkIj48L2RlZXMtZGFzaGJvYXJkZ3JpZD4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iaW5mbyI+CiAgICAgICAgICA8ZGl2PkRyYWcgdG8gcmVwb3NpdGlvbiwgcmVzaXplIGZyb20gaGFuZGxlcywgb3IgcmlnaHQtY2xpY2sgYSBoZWFkZXIgdG8gZGVsZXRlIGEgdGlsZS48L2Rpdj4KICAgICAgICAgIDxkaXYgaWQ9ImRhc2hib2FyZExheW91dFN0YXR1cyI+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgogIGAsImRlbW9GdW5jIil9KTt2YXIgSDZhLHE2YT1nKCgpPT57cGUoKTtINmE9W2guZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgLmdyaWQtY29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWluLWhlaWdodDogNDAwcHg7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLmdyaWQtd2lkZ2V0IHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgd2lsbC1jaGFuZ2U6IGF1dG87CiAgICAgIH0KICAgICAgCiAgICAgIDpob3N0KFtlbmFibGVhbmltYXRpb25dKSAuZ3JpZC13aWRnZXQgewogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CiAgICAgIH0KCiAgICAgIC5ncmlkLXdpZGdldC5kcmFnZ2luZyB7CiAgICAgICAgei1pbmRleDogMTAwMDsKICAgICAgICB0cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgb3BhY2l0eTogMC44OwogICAgICAgIGN1cnNvcjogZ3JhYmJpbmc7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKICAgICAgfQogICAgICAKICAgICAgLmdyaWQtd2lkZ2V0LnBsYWNlaG9sZGVyIHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICB6LWluZGV4OiAxOwogICAgICB9CiAgICAgIAogICAgICAuZ3JpZC13aWRnZXQucGxhY2Vob2xkZXIgLndpZGdldC1jb250ZW50IHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSg1OSwgMTMwLCAyNDYsIDAuMSkiLCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC4xKSIpfTsKICAgICAgICBib3JkZXI6IDJweCBkYXNoZWQgJHtoLmJkVGhlbWUoIiMzYjgyZjYiLCIjM2I4MmY2Iil9OwogICAgICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5ncmlkLXdpZGdldC5yZXNpemluZyB7CiAgICAgICAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAud2lkZ2V0LWNvbnRlbnQgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIHRvcDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMwOTA5MGIiKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMjcyNzJhIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBib3gtc2hhZG93OiAke2guYmRUaGVtZSgiMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xKSIsIjAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMykiKX07CiAgICAgICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjJzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5ncmlkLXdpZGdldDpob3ZlciAud2lkZ2V0LWNvbnRlbnQgewogICAgICAgIGJveC1zaGFkb3c6ICR7aC5iZFRoZW1lKCIwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xNSkiLCIwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC40KSIpfTsKICAgICAgfQoKICAgICAgLmdyaWQtd2lkZ2V0LmRyYWdnaW5nIC53aWRnZXQtY29udGVudCB7CiAgICAgICAgYm94LXNoYWRvdzogJHtoLmJkVGhlbWUoIjAgMTZweCA0OHB4IHJnYmEoMCwgMCwgMCwgMC4yNSkiLCIwIDE2cHggNDhweCByZ2JhKDAsIDAsIDAsIDAuNikiKX07CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTsKICAgICAgfQoKICAgICAgLndpZGdldC1oZWFkZXIgewogICAgICAgIHBhZGRpbmc6IDEycHggMTZweDsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMjcyNzJhIil9OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTA5MGIiLCIjZmFmYWZhIil9OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjlmYWZiIiwiIzBhMGEwYSIpfTsKICAgICAgICBjdXJzb3I6IGdyYWI7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIH0KICAgICAgCiAgICAgIC53aWRnZXQtaGVhZGVyOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMxODE4MWIiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC53aWRnZXQtaGVhZGVyOmFjdGl2ZSB7CiAgICAgICAgY3Vyc29yOiBncmFiYmluZzsKICAgICAgfQoKICAgICAgLndpZGdldC1oZWFkZXIubG9ja2VkIHsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgIH0KICAgICAgCiAgICAgIC53aWRnZXQtaGVhZGVyLmxvY2tlZDpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmOWZhZmIiLCIjMGEwYTBhIil9OwogICAgICB9CgogICAgICAud2lkZ2V0LWhlYWRlciBkZWVzLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjNzE3MTdhIil9OwogICAgICB9CgogICAgICAud2lkZ2V0LWJvZHkgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLndpZGdldC1ib2R5Lmhhcy1oZWFkZXIgewogICAgICAgIHRvcDogNDVweDsKICAgICAgfQoKICAgICAgLnJlc2l6ZS1oYW5kbGUgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICB6LWluZGV4OiAxMDsKICAgICAgfQoKICAgICAgLnJlc2l6ZS1oYW5kbGU6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzNiODJmNiIpfTsKICAgICAgICBvcGFjaXR5OiAwLjM7CiAgICAgIH0KCiAgICAgIC5yZXNpemUtaGFuZGxlLWUgewogICAgICAgIGN1cnNvcjogZXctcmVzaXplOwogICAgICAgIHdpZHRoOiAxMnB4OwogICAgICAgIHJpZ2h0OiAtNnB4OwogICAgICAgIHRvcDogMTAlOwogICAgICAgIGhlaWdodDogODAlOwogICAgICB9CgogICAgICAucmVzaXplLWhhbmRsZS1zIHsKICAgICAgICBjdXJzb3I6IG5zLXJlc2l6ZTsKICAgICAgICBoZWlnaHQ6IDEycHg7CiAgICAgICAgd2lkdGg6IDgwJTsKICAgICAgICBib3R0b206IC02cHg7CiAgICAgICAgbGVmdDogMTAlOwogICAgICB9CgogICAgICAucmVzaXplLWhhbmRsZS1zZSB7CiAgICAgICAgY3Vyc29yOiBzZS1yZXNpemU7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICAgIHJpZ2h0OiAtMnB4OwogICAgICAgIGJvdHRvbTogLTJweDsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlOwogICAgICB9CiAgICAgIAogICAgICAucmVzaXplLWhhbmRsZS1zZTo6YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICByaWdodDogNHB4OwogICAgICAgIGJvdHRvbTogNHB4OwogICAgICAgIHdpZHRoOiA2cHg7CiAgICAgICAgaGVpZ2h0OiA2cHg7CiAgICAgICAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjNzE3MTdhIil9OwogICAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiM3MTcxN2EiKX07CiAgICAgIH0KCiAgICAgIC5ncmlkLXdpZGdldDpob3ZlciAucmVzaXplLWhhbmRsZS1zZSB7CiAgICAgICAgb3BhY2l0eTogMC43OwogICAgICB9CgogICAgICAucmVzaXplLWhhbmRsZS1zZTpob3ZlciB7CiAgICAgICAgb3BhY2l0eTogMSAhaW1wb3J0YW50OwogICAgICB9CiAgICAgIAogICAgICAucmVzaXplLWhhbmRsZS1zZTpob3Zlcjo6YWZ0ZXIgewogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiMzYjgyZjYiLCIjM2I4MmY2Iil9OwogICAgICB9CgogICAgICAuZ3JpZC1wbGFjZWhvbGRlciB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzNiODJmNiIpfTsKICAgICAgICBvcGFjaXR5OiAwLjE7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIGJvcmRlcjogMnB4IGRhc2hlZCAke2guYmRUaGVtZSgiIzNiODJmNiIsIiMzYjgyZjYiKX07CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgLmVtcHR5LXN0YXRlIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBoZWlnaHQ6IDQwMHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiM3MTcxN2EiKX07CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDMycHg7CiAgICAgIH0KCiAgICAgIC5lbXB0eS1zdGF0ZSBkZWVzLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogNDhweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgfQogICAgICAKICAgICAgLmdyaWQtbGluZXMgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgei1pbmRleDogLTE7CiAgICAgIH0KICAgICAgCiAgICAgIC5ncmlkLWxpbmUtdmVydGljYWwgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIHdpZHRoOiAxcHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMjcyNzJhIil9OwogICAgICAgIG9wYWNpdHk6IDAuMzsKICAgICAgfQogICAgICAKICAgICAgLmdyaWQtbGluZS1ob3Jpem9udGFsIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBoZWlnaHQ6IDFweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMyNzI3MmEiKX07CiAgICAgICAgb3BhY2l0eTogMC4zOwogICAgICB9CiAgYF19KTt2YXIgVjhvLFlpdCxVNmEsVzZhLGo2YSxYWCxWNmEsVlhhLFVYYSxaaXQsS2gsRzZhLEs2YSxZNmE9ZygoKT0+e1Y4bz0xMCxZaXQ9aShzPT57aWYodHlwZW9mIHM9PSJudW1iZXIiKXJldHVybntob3Jpem9udGFsOnMsdmVydGljYWw6cyx0b3A6cyxyaWdodDpzLGJvdHRvbTpzLGxlZnQ6c307bGV0IGU9e3RvcDpzLnRvcD8/MTAscmlnaHQ6cy5yaWdodD8/MTAsYm90dG9tOnMuYm90dG9tPz8xMCxsZWZ0OnMubGVmdD8/MTB9O3JldHVybnsuLi5lLGhvcml6b250YWw6KGUubGVmdCtlLnJpZ2h0KS8yLHZlcnRpY2FsOihlLnRvcCtlLmJvdHRvbSkvMn19LCJyZXNvbHZlTWFyZ2lucyIpLFU2YT1pKChzLGUsdCxhLHIpPT57bGV0IG49dC5ob3Jpem9udGFsKihlKzEpLG89TWF0aC5tYXgocy1uLDApLGw9ZT4wP28vZTowLHA9cj09PSJhdXRvIj9sOmE7cmV0dXJue2NvbnRhaW5lcldpZHRoOnMsY2VsbFdpZHRoUHg6bCxtYXJnaW5Ib3Jpem9udGFsUHg6dC5ob3Jpem9udGFsLGNlbGxIZWlnaHRQeDpwLG1hcmdpblZlcnRpY2FsUHg6dC52ZXJ0aWNhbH19LCJjYWxjdWxhdGVDZWxsTWV0cmljcyIpLFc2YT1pKChzLGUsdCk9PntpZihzLmxlbmd0aD09PTApcmV0dXJuIDA7bGV0IGE9TWF0aC5tYXgoLi4ucy5tYXAocj0+ci55K3IuaCksMCk7cmV0dXJuIGEqdCsoYSsxKSplLnZlcnRpY2FsfSwiY2FsY3VsYXRlR3JpZEhlaWdodCIpLGo2YT1pKChzLGUsdCxhLHIpPT5lPHMueCtzLncmJmUrYT5zLngmJnQ8cy55K3MuaCYmdCtyPnMueSwib3ZlcmxhcHMiKSxYWD1pKChzLGUsdCxhLHI9ZS53LG49ZS5oKT0+cy5maWx0ZXIobz0+by5pZD09PWUuaWQ/ITE6ajZhKG8sdCxhLHIsbikpLCJjb2xsZWN0Q29sbGlzaW9ucyIpLFY2YT1pKChzLGUsdCxhKT0+WFgocyxlLHQsYSkubGVuZ3RoPjAsImNoZWNrQ29sbGlzaW9uIiksVlhhPWkocz0+KHsuLi5zfSksImNsb25lV2lkZ2V0IiksVVhhPWkocz0+cy5tYXAoVlhhKSwiY2xvbmVXaWRnZXRzIiksWml0PWkoKHMsZSx0LGEpPT57Zm9yKGxldCBuPTA7bjwyMDA7bisrKWZvcihsZXQgbz0wO288PWEtZTtvKyspaWYoIXMuc29tZShwPT5qNmEocCxvLG4sZSx0KSkpcmV0dXJue3g6byx5Om59O3JldHVybnt4OjAseTpzLnJlZHVjZSgobixvKT0+TWF0aC5tYXgobixvLnkrby5oKSwwKX19LCJmaW5kQXZhaWxhYmxlUG9zaXRpb24iKSxLaD1pKChzLGUsdCxhLHIpPT57bGV0IG49VVhhKHMpLG89bi5maW5kKGI9PmIuaWQ9PT1lKSxsPXMuZmluZChiPT5iLmlkPT09ZSk7aWYoIW98fCFsKXJldHVybiBudWxsO2xldCBwPXt4OnQueCx5OnQueSx3OnQudz8/by53LGg6dC5oPz9vLmh9O28ueD1wLngsby55PXAueSxvLnc9cC53LG8uaD1wLmg7bGV0IGQ9WFgobixvLHAueCxwLnkscC53LHAuaCk7aWYoZC5sZW5ndGg9PT0wKXJldHVybnt3aWRnZXRzOm4sbW92ZWRXaWRnZXRzOltvLmlkXX07aWYoZC5sZW5ndGg9PT0xKXtsZXQgYj1kWzBdO2lmKCFiLmxvY2tlZCYmIWIubm9Nb3ZlJiZiLnc9PT1vLncmJmIuaD09PW8uaCl7bGV0IHY9bi5maW5kKHg9PnguaWQ9PT1iLmlkKTtpZih2KXtsZXQgeD1sLG09e3g6di54LHk6di55fTtpZih2Lng9eC54LHYueT14LnksWFgobixvLG8ueCxvLnksby53LG8uaCkubGVuZ3RoPT09MCYmWFgobix2LHYueCx2Lnksdi53LHYuaCkubGVuZ3RoPT09MClyZXR1cm57d2lkZ2V0czpuLG1vdmVkV2lkZ2V0czpbby5pZCx2LmlkXSxzd2FwcGVkV2l0aDp2LmlkfTt2Lng9bS54LHYueT1tLnl9fX1sZXQgdT1uZXcgU2V0KFtvLmlkXSk7Zm9yKGxldCBiIG9mIGQpe2lmKGIubG9ja2VkfHxiLm5vTW92ZSlyZXR1cm4gbnVsbDtsZXQgdj1uLmZpbmQoZj0+Zi5pZD09PWIuaWQpO2lmKCF2KWNvbnRpbnVlO2xldCB4PW4uZmlsdGVyKGY9PmYuaWQhPT1iLmlkKSxtPVppdCh4LHYudyx2LmgsYSk7di54PW0ueCx2Lnk9bS55LHUuYWRkKHYuaWQpfXJldHVybiBYWChuLG8sby54LG8ueSxvLncsby5oKS5sZW5ndGg+MD9udWxsOnt3aWRnZXRzOm4sbW92ZWRXaWRnZXRzOkFycmF5LmZyb20odSl9fSwicmVzb2x2ZVdpZGdldFBsYWNlbWVudCIpLEc2YT1pKChzLGU9InZlcnRpY2FsIik9PntsZXQgdD1bLi4uc10uc29ydCgoYSxyKT0+ZT09PSJ2ZXJ0aWNhbCI/YS55IT09ci55P2EueS1yLnk6YS54LXIueDphLnghPT1yLng/YS54LXIueDphLnktci55KTtmb3IobGV0IGEgb2YgdClpZighKGEubG9ja2VkfHxhLm5vTW92ZSkpaWYoZT09PSJ2ZXJ0aWNhbCIpZm9yKDthLnk+MCYmIVY2YShzLGEsYS54LGEueS0xKTspYS55LT0xO2Vsc2UgZm9yKDthLng+MCYmIVY2YShzLGEsYS54LTEsYS55KTspYS54LT0xfSwiY29tcGFjdExheW91dCIpLEs2YT1pKChzLGUpPT5zLm1hcCh0PT57bGV0IGE9ZS5maW5kKHI9PnIuaWQ9PT10LmlkKTtyZXR1cm4gYT97Li4udCwuLi5hfTp0fSksImFwcGx5TGF5b3V0Iil9KTt2YXIgWjZhLFg2YSxRNmE9ZygoKT0+e1o2YT1pKCh7cG9pbnRlcjpzLGNvbnRhaW5lclJlY3Q6ZSxtZXRyaWNzOnQsY29sdW1uczphLHdpZGdldDpyLHJ0bDpuLGRyYWdPZmZzZXRYOm89MCxkcmFnT2Zmc2V0WTpsPTB9KT0+e2xldCBwPXMuY2xpZW50WC1lLmxlZnQtbyxkPXMuY2xpZW50WS1lLnRvcC1sLHU9dC5tYXJnaW5Ib3Jpem9udGFsUHgsYz10Lm1hcmdpblZlcnRpY2FsUHgsYj10LmNlbGxXaWR0aFB4LHY9dC5jZWxsSGVpZ2h0UHgseD1pKChDLF8sTyk9Pk1hdGgubWF4KF8sTWF0aC5taW4oTyxDKSksImNsYW1wIiksbT14KHAtdSwwLGUud2lkdGgtdSksZj14KGQtYywwLE51bWJlci5QT1NJVElWRV9JTkZJTklUWSkseT1iK3UsTT12K2Msej1NYXRoLnJvdW5kKG0veSk7biYmKHo9YS1yLncteiksej14KHosMCxhLXIudyk7bGV0IE49eChNYXRoLnJvdW5kKGYvTSksMCxOdW1iZXIuTUFYX1NBRkVfSU5URUdFUik7cmV0dXJue3g6eix5Ok59fSwiY29tcHV0ZUdyaWRDb29yZGluYXRlcyIpLFg2YT1pKCh7cG9pbnRlcjpzLGNvbnRhaW5lclJlY3Q6ZSxtZXRyaWNzOnQsc3RhcnRXaWR0aDphLHN0YXJ0SGVpZ2h0OnIsc3RhcnRQb2ludGVyOm4saGFuZGxlcjpvLHdpZGdldDpsLGNvbHVtbnM6cH0pPT57bGV0IGQ9cy5jbGllbnRYLW4uY2xpZW50WCx1PXMuY2xpZW50WS1uLmNsaWVudFksYz1hLGI9cix2PXQuY2VsbFdpZHRoUHgrdC5tYXJnaW5Ib3Jpem9udGFsUHgseD10LmNlbGxIZWlnaHRQeCt0Lm1hcmdpblZlcnRpY2FsUHg7aWYoby5pbmNsdWRlcygiZSIpKXtsZXQgeT1NYXRoLnJvdW5kKGQvdik7Yz1hK3l9aWYoby5pbmNsdWRlcygicyIpKXtsZXQgeT1NYXRoLnJvdW5kKHUveCk7Yj1yK3l9bGV0IG09TWF0aC5tYXgobC5taW5XfHwxLE1hdGgubWluKGMsbC5tYXhXfHxwLWwueCkpLGY9TWF0aC5tYXgobC5taW5IfHwxLE1hdGgubWluKGIsbC5tYXhIfHxOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikpO3JldHVybnt3aWR0aDptLGhlaWdodDpmfX0sImNvbXB1dGVSZXNpemVEaW1lbnNpb25zIil9KTt2YXIgSjZhLGU1YT1nKCgpPT57b3IoKTtwbygpO0o2YT1pKCh7d2lkZ2V0OnMsaG9zdDplLGV2ZW50OnR9KT0+e2xldCBhPVt7bmFtZToiRGVsZXRlIHRpbGUiLGljb25OYW1lOiJsdWNpZGU6dHJhc2gyIixhY3Rpb246aShhc3luYygpPT4oZS5yZW1vdmVXaWRnZXQocy5pZCksbnVsbCksImFjdGlvbiIpfV07a2Eub3BlbkNvbnRleHRNZW51V2l0aE9wdGlvbnModCxhKX0sIm9wZW5XaWRnZXRDb250ZXh0TWVudSIpfSk7dmFyIGRuLE1zLHQ1YSxhNWE9ZygoKT0+e3BlKCk7VWEoKTtvcigpO0I2YSgpO3E2YSgpO1k2YSgpO1E2YSgpO2U1YSgpO2RuPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxNcz1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sdDVhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1kYXNoYm9hcmRncmlkIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W10sSCxrPVtdLFM9W10sSSxQPVtdLFI9W10sSyxWPVtdLFc9W10sbWUsQj1bXSxVPVtdLGhlLEY9W10saj1bXSx1ZSxsZT1bXSxRPVtdLGllLHRlPVtdLGVlPVtdLGtlLFg9W10sWj1bXTt2YXIgeWU9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNEYXNoYm9hcmRncmlkIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IHE9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpBcnJheX0pXSxwPVtMKHt0eXBlOk51bWJlcn0pXSxjPVtMKHt0eXBlOk9iamVjdH0pXSx4PVtMKHt0eXBlOk51bWJlcn0pXSx5PVtMKHt0eXBlOkJvb2xlYW59KV0sTj1bTCh7dHlwZTpCb29sZWFuLHJlZmxlY3Q6ITB9KV0sTz1bTCh7dHlwZTpTdHJpbmd9KV0sSD1bTCh7dHlwZTpCb29sZWFufSldLEk9W0woe3R5cGU6Qm9vbGVhbn0pXSxLPVtMKHthdHRyaWJ1dGU6ITF9KV0sbWU9W0woe3R5cGU6U3RyaW5nfSldLGhlPVtZKCldLHVlPVtZKCldLGllPVtZKCldLGtlPVtZKCldLGRuKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToid2lkZ2V0cyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4id2lkZ2V0cyJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLndpZGdldHMsImdldCIpLHNldDppKChBLHNlKT0+e0Eud2lkZ2V0cz1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSxvLGwpLGRuKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY2VsbEhlaWdodCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4iY2VsbEhlaWdodCJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLmNlbGxIZWlnaHQsImdldCIpLHNldDppKChBLHNlKT0+e0EuY2VsbEhlaWdodD1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSxkLHUpLGRuKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWFyZ2luIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJtYXJnaW4iaW4gQSwiaGFzIiksZ2V0OmkoQT0+QS5tYXJnaW4sImdldCIpLHNldDppKChBLHNlKT0+e0EubWFyZ2luPXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LGIsdiksZG4odGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjb2x1bW5zIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJjb2x1bW5zImluIEEsImhhcyIpLGdldDppKEE9PkEuY29sdW1ucywiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS5jb2x1bW5zPXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LG0sZiksZG4odGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJlZGl0YWJsZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4iZWRpdGFibGUiaW4gQSwiaGFzIiksZ2V0OmkoQT0+QS5lZGl0YWJsZSwiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS5lZGl0YWJsZT1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSxNLHopLGRuKHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZW5hYmxlQW5pbWF0aW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJlbmFibGVBbmltYXRpb24iaW4gQSwiaGFzIiksZ2V0OmkoQT0+QS5lbmFibGVBbmltYXRpb24sImdldCIpLHNldDppKChBLHNlKT0+e0EuZW5hYmxlQW5pbWF0aW9uPXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LEMsXyksZG4odGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjZWxsSGVpZ2h0VW5pdCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4iY2VsbEhlaWdodFVuaXQiaW4gQSwiaGFzIiksZ2V0OmkoQT0+QS5jZWxsSGVpZ2h0VW5pdCwiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS5jZWxsSGVpZ2h0VW5pdD1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSwkLEUpLGRuKHRoaXMsbnVsbCxILHtraW5kOiJhY2Nlc3NvciIsbmFtZToicnRsIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJydGwiaW4gQSwiaGFzIiksZ2V0OmkoQT0+QS5ydGwsImdldCIpLHNldDppKChBLHNlKT0+e0EucnRsPXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LGssUyksZG4odGhpcyxudWxsLEkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93R3JpZExpbmVzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJzaG93R3JpZExpbmVzImluIEEsImhhcyIpLGdldDppKEE9PkEuc2hvd0dyaWRMaW5lcywiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS5zaG93R3JpZExpbmVzPXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LFAsUiksZG4odGhpcyxudWxsLEsse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJsYXlvdXRzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJsYXlvdXRzImluIEEsImhhcyIpLGdldDppKEE9PkEubGF5b3V0cywiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS5sYXlvdXRzPXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LFYsVyksZG4odGhpcyxudWxsLG1lLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYWN0aXZlQnJlYWtwb2ludCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4iYWN0aXZlQnJlYWtwb2ludCJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLmFjdGl2ZUJyZWFrcG9pbnQsImdldCIpLHNldDppKChBLHNlKT0+e0EuYWN0aXZlQnJlYWtwb2ludD1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSxCLFUpLGRuKHRoaXMsbnVsbCxoZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InBsYWNlaG9sZGVyUG9zaXRpb24iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+InBsYWNlaG9sZGVyUG9zaXRpb24iaW4gQSwiaGFzIiksZ2V0OmkoQT0+QS5wbGFjZWhvbGRlclBvc2l0aW9uLCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLnBsYWNlaG9sZGVyUG9zaXRpb249c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sRixqKSxkbih0aGlzLG51bGwsdWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtZXRyaWNzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJtZXRyaWNzImluIEEsImhhcyIpLGdldDppKEE9PkEubWV0cmljcywiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS5tZXRyaWNzPXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LGxlLFEpLGRuKHRoaXMsbnVsbCxpZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InJlc29sdmVkTWFyZ2lucyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4icmVzb2x2ZWRNYXJnaW5zImluIEEsImhhcyIpLGdldDppKEE9PkEucmVzb2x2ZWRNYXJnaW5zLCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLnJlc29sdmVkTWFyZ2lucz1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSx0ZSxlZSksZG4odGhpcyxudWxsLGtlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicHJldmlld1dpZGdldHMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+InByZXZpZXdXaWRnZXRzImluIEEsImhhcyIpLGdldDppKEE9PkEucHJldmlld1dpZGdldHMsImdldCIpLHNldDppKChBLHNlKT0+e0EucHJldmlld1dpZGdldHM9c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sWCxaKSxkbihudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpxfSxudWxsLHQpLHllPWE9ZS52YWx1ZSxxJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnF9KX1zdGF0aWMgZGVtbz1GNmE7c3RhdGljIGRlbW9Hcm91cHM9WyJMYXlvdXQiXTtzdGF0aWMgc3R5bGVzPUg2YTsjZT1Ncyh0aGlzLG8sW10pO2dldCB3aWRnZXRzKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHdpZGdldHMocSl7dGhpcy4jZT1xfSN0PShNcyh0aGlzLGwpLE1zKHRoaXMsZCw4MCkpO2dldCBjZWxsSGVpZ2h0KCl7cmV0dXJuIHRoaXMuI3R9c2V0IGNlbGxIZWlnaHQocSl7dGhpcy4jdD1xfSNhPShNcyh0aGlzLHUpLE1zKHRoaXMsYiwxMCkpO2dldCBtYXJnaW4oKXtyZXR1cm4gdGhpcy4jYX1zZXQgbWFyZ2luKHEpe3RoaXMuI2E9cX0jcz0oTXModGhpcyx2KSxNcyh0aGlzLG0sMTIpKTtnZXQgY29sdW1ucygpe3JldHVybiB0aGlzLiNzfXNldCBjb2x1bW5zKHEpe3RoaXMuI3M9cX0jaT0oTXModGhpcyxmKSxNcyh0aGlzLE0sITApKTtnZXQgZWRpdGFibGUoKXtyZXR1cm4gdGhpcy4jaX1zZXQgZWRpdGFibGUocSl7dGhpcy4jaT1xfSNyPShNcyh0aGlzLHopLE1zKHRoaXMsQywhMCkpO2dldCBlbmFibGVBbmltYXRpb24oKXtyZXR1cm4gdGhpcy4jcn1zZXQgZW5hYmxlQW5pbWF0aW9uKHEpe3RoaXMuI3I9cX0jbz0oTXModGhpcyxfKSxNcyh0aGlzLCQsInB4IikpO2dldCBjZWxsSGVpZ2h0VW5pdCgpe3JldHVybiB0aGlzLiNvfXNldCBjZWxsSGVpZ2h0VW5pdChxKXt0aGlzLiNvPXF9I249KE1zKHRoaXMsRSksTXModGhpcyxrLCExKSk7Z2V0IHJ0bCgpe3JldHVybiB0aGlzLiNufXNldCBydGwocSl7dGhpcy4jbj1xfSNsPShNcyh0aGlzLFMpLE1zKHRoaXMsUCwhMSkpO2dldCBzaG93R3JpZExpbmVzKCl7cmV0dXJuIHRoaXMuI2x9c2V0IHNob3dHcmlkTGluZXMocSl7dGhpcy4jbD1xfSNjPShNcyh0aGlzLFIpLE1zKHRoaXMsVix2b2lkIDApKTtnZXQgbGF5b3V0cygpe3JldHVybiB0aGlzLiNjfXNldCBsYXlvdXRzKHEpe3RoaXMuI2M9cX0jZD0oTXModGhpcyxXKSxNcyh0aGlzLEIsImJhc2UiKSk7Z2V0IGFjdGl2ZUJyZWFrcG9pbnQoKXtyZXR1cm4gdGhpcy4jZH1zZXQgYWN0aXZlQnJlYWtwb2ludChxKXt0aGlzLiNkPXF9I3U9KE1zKHRoaXMsVSksTXModGhpcyxGLG51bGwpKTtnZXQgcGxhY2Vob2xkZXJQb3NpdGlvbigpe3JldHVybiB0aGlzLiN1fXNldCBwbGFjZWhvbGRlclBvc2l0aW9uKHEpe3RoaXMuI3U9cX0jcD0oTXModGhpcyxqKSxNcyh0aGlzLGxlLG51bGwpKTtnZXQgbWV0cmljcygpe3JldHVybiB0aGlzLiNwfXNldCBtZXRyaWNzKHEpe3RoaXMuI3A9cX0jaD0oTXModGhpcyxRKSxNcyh0aGlzLHRlLG51bGwpKTtnZXQgcmVzb2x2ZWRNYXJnaW5zKCl7cmV0dXJuIHRoaXMuI2h9c2V0IHJlc29sdmVkTWFyZ2lucyhxKXt0aGlzLiNoPXF9I2Y9KE1zKHRoaXMsZWUpLE1zKHRoaXMsWCxudWxsKSk7Z2V0IHByZXZpZXdXaWRnZXRzKCl7cmV0dXJuIHRoaXMuI2Z9c2V0IHByZXZpZXdXaWRnZXRzKHEpe3RoaXMuI2Y9cX1jb250YWluZXJCb3VuZHM9KE1zKHRoaXMsWiksbnVsbCk7ZHJhZ1N0YXRlPW51bGw7cmVzaXplU3RhdGU9bnVsbDtyZXNpemVPYnNlcnZlcjtpbnRlcmFjdGlvbkFjdGl2ZT0hMTthc3luYyBjb25uZWN0ZWRDYWxsYmFjaygpe2F3YWl0IHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5jb21wdXRlTWV0cmljcygpLHRoaXMub2JzZXJ2ZVJlc2l6ZSgpfWFzeW5jIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLmRpc2Nvbm5lY3RSZXNpemVPYnNlcnZlcigpLHRoaXMucmVsZWFzZVBvaW50ZXJFdmVudHMoKX11cGRhdGVkKHEpeyhxLmhhcygibWFyZ2luIil8fHEuaGFzKCJjb2x1bW5zIil8fHEuaGFzKCJjZWxsSGVpZ2h0Iil8fHEuaGFzKCJjZWxsSGVpZ2h0VW5pdCIpKSYmdGhpcy5jb21wdXRlTWV0cmljcygpLHEuaGFzKCJ3aWRnZXRzIikmJiF0aGlzLmludGVyYWN0aW9uQWN0aXZlJiZ0aGlzLm5vdGlmeUxheW91dENoYW5nZSgpfXJlbmRlcigpe2xldCBxPXRoaXMud2lkZ2V0cztpZihxLmxlbmd0aD09PTApcmV0dXJuIHdgCiAgICAgICAgPGRpdiBjbGFzcz0iZW1wdHktc3RhdGUiPgogICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6bGF5b3V0R3JpZCJ9PjwvZGVlcy1pY29uPgogICAgICAgICAgPGRpdj5ObyB3aWRnZXRzIGNvbmZpZ3VyZWQ8L2Rpdj4KICAgICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZTogMTRweDsgbWFyZ2luLXRvcDogOHB4OyI+QWRkIHdpZGdldHMgdG8gcG9wdWxhdGUgdGhlIGRhc2hib2FyZDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICBgO2xldCBBPXRoaXMuZW5zdXJlTWV0cmljcygpLHNlPXRoaXMucmVzb2x2ZWRNYXJnaW5zPz9ZaXQodGhpcy5tYXJnaW4pLG9lPUEuY2VsbEhlaWdodFB4LGFlPXRoaXMucHJldmlld1dpZGdldHM/P3RoaXMud2lkZ2V0cyxUZT1XNmEoYWUsc2Usb2UpLFJlPXRoaXMucHJldmlld1dpZGdldHM/bmV3IE1hcCh0aGlzLnByZXZpZXdXaWRnZXRzLm1hcChCZT0+W0JlLmlkLEJlXSkpOm51bGw7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImdyaWQtY29udGFpbmVyIiBzdHlsZT0iaGVpZ2h0OiAke1RlfXB4OyI+CiAgICAgICAgJHt0aGlzLnNob3dHcmlkTGluZXM/dGhpcy5yZW5kZXJHcmlkTGluZXMoQSxUZSk6bnVsbH0KICAgICAgICAke3EubWFwKEJlPT50aGlzLnJlbmRlcldpZGdldChCZSxBLHNlLFJlKSl9CiAgICAgICAgJHt0aGlzLnBsYWNlaG9sZGVyUG9zaXRpb24/dGhpcy5yZW5kZXJQbGFjZWhvbGRlcihBLHNlKTpudWxsfQogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyR3JpZExpbmVzKHEsQSl7bGV0IHNlPVtdLG9lPVtdLGFlPXEuY2VsbFdpZHRoUHgrcS5tYXJnaW5Ib3Jpem9udGFsUHgsVGU9cS5jZWxsSGVpZ2h0UHgrcS5tYXJnaW5WZXJ0aWNhbFB4O2ZvcihsZXQgQmU9MDtCZTw9dGhpcy5jb2x1bW5zO0JlKyspe2xldCBHZT1CZSphZStxLm1hcmdpbkhvcml6b250YWxQeCxEZT10aGlzLnB4VG9QZXJjZW50KEdlLHEuY29udGFpbmVyV2lkdGgpO3NlLnB1c2god2A8ZGl2IGNsYXNzPSJncmlkLWxpbmUtdmVydGljYWwiIHN0eWxlPSJsZWZ0OiAke0RlfSU7Ij48L2Rpdj5gKX1sZXQgUmU9TWF0aC5jZWlsKEEvVGUpO2ZvcihsZXQgQmU9MDtCZTw9UmU7QmUrKyl7bGV0IEdlPUJlKlRlO29lLnB1c2god2A8ZGl2IGNsYXNzPSJncmlkLWxpbmUtaG9yaXpvbnRhbCIgc3R5bGU9InRvcDogJHtHZX1weDsiPjwvZGl2PmApfXJldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJncmlkLWxpbmVzIj4KICAgICAgICAke3NlfQogICAgICAgICR7b2V9CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJXaWRnZXQocSxBLHNlLG9lKXtsZXQgYWU9dGhpcy5kcmFnU3RhdGU/LndpZGdldElkPT09cS5pZCxUZT10aGlzLnJlc2l6ZVN0YXRlPy53aWRnZXRJZD09PXEuaWQsUmU9cS5sb2NrZWR8fCF0aGlzLmVkaXRhYmxlLEJlPW9lPy5nZXQocS5pZCk/P251bGwsR2U9YWU/cTpCZT8/cSxEZT10aGlzLmNvbXB1dGVXaWRnZXRSZWN0KEdlLEEsc2UpLF9lPXRoaXMucnRsPyJyaWdodCI6ImxlZnQiLENlPXRoaXMucHhUb1BlcmNlbnQoRGUubGVmdCxBLmNvbnRhaW5lcldpZHRoKSx2ZT10aGlzLnB4VG9QZXJjZW50KERlLndpZHRoLEEuY29udGFpbmVyV2lkdGgpLGJlPSIiO2lmKGFlJiZ0aGlzLmRyYWdTdGF0ZT8uY3VycmVudFBvaW50ZXIpe2xldCBFZT10aGlzLmRyYWdTdGF0ZS5jdXJyZW50UG9pbnRlcixqZT10aGlzLmNvbnRhaW5lckJvdW5kcz8/dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxXZT1FZS5jbGllbnRYLWplLmxlZnQtdGhpcy5kcmFnU3RhdGUub2Zmc2V0WC1EZS5sZWZ0LHN0PUVlLmNsaWVudFktamUudG9wLXRoaXMuZHJhZ1N0YXRlLm9mZnNldFktRGUudG9wO2JlPWB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgke1dlfXB4LCAke3N0fXB4KTtgfXJldHVybiB3YAogICAgICA8ZGl2CiAgICAgICAgY2xhc3M9ImdyaWQtd2lkZ2V0ICR7YWU/ImRyYWdnaW5nIjoiIn0gJHtUZT8icmVzaXppbmciOiIifSIKICAgICAgICBzdHlsZT0iCiAgICAgICAgICAke19lfTogJHtDZX0lOwogICAgICAgICAgdG9wOiAke0RlLnRvcH1weDsKICAgICAgICAgIHdpZHRoOiAke3ZlfSU7CiAgICAgICAgICBoZWlnaHQ6ICR7RGUuaGVpZ2h0fXB4OwogICAgICAgICAgJHtiZX0KICAgICAgICAiCiAgICAgICAgZGF0YS13aWRnZXQtaWQ9JHtxLmlkfQogICAgICA+CiAgICAgICAgPGRpdiBjbGFzcz0id2lkZ2V0LWNvbnRlbnQiPgogICAgICAgICAgJHtxLnRpdGxlP3dgCiAgICAgICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgIGNsYXNzPSJ3aWRnZXQtaGVhZGVyICR7UmU/ImxvY2tlZCI6IiJ9IgogICAgICAgICAgICAgICAgICBAcG9pbnRlcmRvd249JHshUmUmJiFxLm5vTW92ZT9FZT0+dGhpcy5zdGFydERyYWcoRWUscSk6bnVsbH0KICAgICAgICAgICAgICAgICAgQGNvbnRleHRtZW51PSR7RWU9PnRoaXMuaGFuZGxlV2lkZ2V0Q29udGV4dE1lbnUoRWUscSl9CiAgICAgICAgICAgICAgICAgIHRhYmluZGV4PSR7IVJlJiYhcS5ub01vdmU/MDotMX0KICAgICAgICAgICAgICAgICAgQGtleWRvd249JHtFZT0+dGhpcy5oYW5kbGVIZWFkZXJLZXlkb3duKEVlLHEpfQogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAke3EuaWNvbj93YDxkZWVzLWljb24gLmljb249JHtxLmljb259PjwvZGVlcy1pY29uPmA6bnVsbH0KICAgICAgICAgICAgICAgICAgJHtxLnRpdGxlfQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgYDpudWxsfQogICAgICAgICAgPGRpdiBjbGFzcz0id2lkZ2V0LWJvZHkgJHtxLnRpdGxlPyJoYXMtaGVhZGVyIjoiIn0iPgogICAgICAgICAgICAke3EuY29udGVudH0KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgJHshUmUmJiFxLm5vUmVzaXplP3dgCiAgICAgICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgIGNsYXNzPSJyZXNpemUtaGFuZGxlIHJlc2l6ZS1oYW5kbGUtZSIKICAgICAgICAgICAgICAgICAgQHBvaW50ZXJkb3duPSR7RWU9PnRoaXMuc3RhcnRSZXNpemUoRWUscSwiZSIpfQogICAgICAgICAgICAgICAgPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICBjbGFzcz0icmVzaXplLWhhbmRsZSByZXNpemUtaGFuZGxlLXMiCiAgICAgICAgICAgICAgICAgIEBwb2ludGVyZG93bj0ke0VlPT50aGlzLnN0YXJ0UmVzaXplKEVlLHEsInMiKX0KICAgICAgICAgICAgICAgID48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgICAgY2xhc3M9InJlc2l6ZS1oYW5kbGUgcmVzaXplLWhhbmRsZS1zZSIKICAgICAgICAgICAgICAgICAgQHBvaW50ZXJkb3duPSR7RWU9PnRoaXMuc3RhcnRSZXNpemUoRWUscSwic2UiKX0KICAgICAgICAgICAgICAgID48L2Rpdj4KICAgICAgICAgICAgICBgOm51bGx9CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJQbGFjZWhvbGRlcihxLEEpe2lmKCF0aGlzLnBsYWNlaG9sZGVyUG9zaXRpb24pcmV0dXJuIHdgYDtsZXQgc2U9dGhpcy5jb21wdXRlV2lkZ2V0UmVjdCh0aGlzLnBsYWNlaG9sZGVyUG9zaXRpb24scSxBKSxvZT10aGlzLnJ0bD8icmlnaHQiOiJsZWZ0IixhZT10aGlzLnB4VG9QZXJjZW50KHNlLmxlZnQscS5jb250YWluZXJXaWR0aCksVGU9dGhpcy5weFRvUGVyY2VudChzZS53aWR0aCxxLmNvbnRhaW5lcldpZHRoKTtyZXR1cm4gd2AKICAgICAgPGRpdgogICAgICAgIGNsYXNzPSJncmlkLXdpZGdldCBwbGFjZWhvbGRlciIKICAgICAgICBzdHlsZT0iCiAgICAgICAgICAke29lfTogJHthZX0lOwogICAgICAgICAgdG9wOiAke3NlLnRvcH1weDsKICAgICAgICAgIHdpZHRoOiAke1RlfSU7CiAgICAgICAgICBoZWlnaHQ6ICR7c2UuaGVpZ2h0fXB4OwogICAgICAgICIKICAgICAgPgogICAgICAgIDxkaXYgY2xhc3M9IndpZGdldC1jb250ZW50Ij48L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfXN0YXJ0RHJhZyhxLEEpe2lmKCF0aGlzLmVkaXRhYmxlfHxBLm5vTW92ZXx8QS5sb2NrZWQpcmV0dXJuO3EucHJldmVudERlZmF1bHQoKSxxLnN0b3BQcm9wYWdhdGlvbigpO2xldCBzZT1xLmN1cnJlbnRUYXJnZXQuY2xvc2VzdCgiLmdyaWQtd2lkZ2V0Iik7aWYoIXNlKXJldHVybjtsZXQgb2U9c2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dGhpcy5jb250YWluZXJCb3VuZHM9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0aGlzLmVuc3VyZU1ldHJpY3MoKSx0aGlzLmRyYWdTdGF0ZT17d2lkZ2V0SWQ6QS5pZCxwb2ludGVySWQ6cS5wb2ludGVySWQsb2Zmc2V0WDpxLmNsaWVudFgtb2UubGVmdCxvZmZzZXRZOnEuY2xpZW50WS1vZS50b3Asc3RhcnQ6e2lkOkEuaWQseDpBLngseTpBLnksdzpBLncsaDpBLmh9LHByZXZpb3VzUG9zaXRpb246e2lkOkEuaWQseDpBLngseTpBLnksdzpBLncsaDpBLmh9LGN1cnJlbnRQb2ludGVyOntjbGllbnRYOnEuY2xpZW50WCxjbGllbnRZOnEuY2xpZW50WX0sbGFzdFBsYWNlbWVudDpudWxsfSx0aGlzLmludGVyYWN0aW9uQWN0aXZlPSEwLHEuY3VycmVudFRhcmdldC5zZXRQb2ludGVyQ2FwdHVyZShxLnBvaW50ZXJJZCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLHRoaXMuaGFuZGxlRHJhZ01vdmUpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsdGhpcy5oYW5kbGVEcmFnRW5kKSx0aGlzLnBsYWNlaG9sZGVyUG9zaXRpb249e2lkOkEuaWQseDpBLngseTpBLnksdzpBLncsaDpBLmh9fWhhbmRsZURyYWdNb3ZlPWkocT0+e2lmKCF0aGlzLmRyYWdTdGF0ZSlyZXR1cm47bGV0IEE9dGhpcy5lbnN1cmVNZXRyaWNzKCksc2U9dGhpcy53aWRnZXRzLG9lPXNlLmZpbmQoQmU9PkJlLmlkPT09dGhpcy5kcmFnU3RhdGUud2lkZ2V0SWQpO2lmKCFvZSlyZXR1cm47cS5wcmV2ZW50RGVmYXVsdCgpO2xldCBhZT10aGlzLmRyYWdTdGF0ZS5wcmV2aW91c1Bvc2l0aW9uLFRlPVo2YSh7cG9pbnRlcjp7Y2xpZW50WDpxLmNsaWVudFgsY2xpZW50WTpxLmNsaWVudFl9LGNvbnRhaW5lclJlY3Q6dGhpcy5jb250YWluZXJCb3VuZHM/P3RoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbWV0cmljczpBLGNvbHVtbnM6dGhpcy5jb2x1bW5zLHdpZGdldDpvZSxydGw6dGhpcy5ydGwsZHJhZ09mZnNldFg6dGhpcy5kcmFnU3RhdGUub2Zmc2V0WCxkcmFnT2Zmc2V0WTp0aGlzLmRyYWdTdGF0ZS5vZmZzZXRZfSksUmU9S2goc2Usb2UuaWQse3g6VGUueCx5OlRlLnl9LHRoaXMuY29sdW1ucyxhZSk7aWYoUmUpe2xldCBCZT1SZS53aWRnZXRzLmZpbmQoRGU9PkRlLmlkPT09b2UuaWQpO3RoaXMuZHJhZ1N0YXRlPXsuLi50aGlzLmRyYWdTdGF0ZSxjdXJyZW50UG9pbnRlcjp7Y2xpZW50WDpxLmNsaWVudFgsY2xpZW50WTpxLmNsaWVudFl9LGxhc3RQbGFjZW1lbnQ6UmUscHJldmlvdXNQb3NpdGlvbjpCZT97aWQ6QmUuaWQseDpCZS54LHk6QmUueSx3OkJlLncsaDpCZS5ofTp7aWQ6b2UuaWQseDpUZS54LHk6VGUueSx3Om9lLncsaDpvZS5ofX0sdGhpcy5wcmV2aWV3V2lkZ2V0cz1SZS53aWRnZXRzO2xldCBHZT1SZS53aWRnZXRzLmZpbmQoRGU9PkRlLmlkPT09b2UuaWQpO0dlP3RoaXMucGxhY2Vob2xkZXJQb3NpdGlvbj17aWQ6R2UuaWQseDpHZS54LHk6R2UueSx3OkdlLncsaDpHZS5ofTp0aGlzLnBsYWNlaG9sZGVyUG9zaXRpb249e2lkOm9lLmlkLHg6VGUueCx5OlRlLnksdzpvZS53LGg6b2UuaH19ZWxzZSB0aGlzLnByZXZpZXdXaWRnZXRzPW51bGwsdGhpcy5wbGFjZWhvbGRlclBvc2l0aW9uPW51bGw7dGhpcy5yZXF1ZXN0VXBkYXRlKCl9LCJoYW5kbGVEcmFnTW92ZSIpO2hhbmRsZURyYWdFbmQ9aShxPT57bGV0IEE9dGhpcy5kcmFnU3RhdGU7aWYoIUF8fHEucG9pbnRlcklkIT09QS5wb2ludGVySWQpcmV0dXJuO2xldCBzZT10aGlzLndpZGdldHM7dGhpcy5wcmV2aWV3V2lkZ2V0cz1udWxsO2xldCBvZT10aGlzLnBsYWNlaG9sZGVyUG9zaXRpb24/P0Euc3RhcnQsYWU9S2goc2UsQS53aWRnZXRJZCx7eDpvZS54LHk6b2UueX0sdGhpcy5jb2x1bW5zLEEucHJldmlvdXNQb3NpdGlvbik7aWYoYWUpe2xldCBUZT1hZS53aWRnZXRzLmZpbmQoUmU9PlJlLmlkPT09QS53aWRnZXRJZCk7VGUmJihhZS53aWRnZXRzLnNvbWUoQmU9PkJlLmlkPT09QS53aWRnZXRJZD8hMTpUZS54PEJlLngrQmUudyYmVGUueCtUZS53PkJlLngmJlRlLnk8QmUueStCZS5oJiZUZS55K1RlLmg+QmUueSk/dGhpcy53aWRnZXRzPXRoaXMud2lkZ2V0cy5tYXAoQmU9PkJlLmlkPT09QS53aWRnZXRJZD97Li4uQmUseDpBLnN0YXJ0LngseTpBLnN0YXJ0Lnl9OkJlKTp0aGlzLmNvbW1pdFBsYWNlbWVudChhZSxBLndpZGdldElkLCJ3aWRnZXQtbW92ZSIpKX1lbHNlIHRoaXMud2lkZ2V0cz10aGlzLndpZGdldHMubWFwKFRlPT5UZS5pZD09PUEud2lkZ2V0SWQ/ey4uLlRlLHg6QS5zdGFydC54LHk6QS5zdGFydC55fTpUZSk7dGhpcy5wbGFjZWhvbGRlclBvc2l0aW9uPW51bGwsdGhpcy5kcmFnU3RhdGU9bnVsbCx0aGlzLmludGVyYWN0aW9uQWN0aXZlPSExLHRoaXMucmVsZWFzZVBvaW50ZXJFdmVudHMoKX0sImhhbmRsZURyYWdFbmQiKTtzdGFydFJlc2l6ZShxLEEsc2UpeyF0aGlzLmVkaXRhYmxlfHxBLm5vUmVzaXplfHxBLmxvY2tlZHx8KHEucHJldmVudERlZmF1bHQoKSxxLnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuZW5zdXJlTWV0cmljcygpLHRoaXMucmVzaXplU3RhdGU9e3dpZGdldElkOkEuaWQscG9pbnRlcklkOnEucG9pbnRlcklkLGhhbmRsZXI6c2Usc3RhcnRQb2ludGVyOntjbGllbnRYOnEuY2xpZW50WCxjbGllbnRZOnEuY2xpZW50WX0sc3RhcnQ6e2lkOkEuaWQseDpBLngseTpBLnksdzpBLncsaDpBLmh9LHN0YXJ0V2lkdGg6QS53LHN0YXJ0SGVpZ2h0OkEuaCxsYXN0UGxhY2VtZW50Om51bGx9LHRoaXMuaW50ZXJhY3Rpb25BY3RpdmU9ITAscS5jdXJyZW50VGFyZ2V0LnNldFBvaW50ZXJDYXB0dXJlKHEucG9pbnRlcklkKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsdGhpcy5oYW5kbGVSZXNpemVNb3ZlKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLHRoaXMuaGFuZGxlUmVzaXplRW5kKSx0aGlzLnBsYWNlaG9sZGVyUG9zaXRpb249e2lkOkEuaWQseDpBLngseTpBLnksdzpBLncsaDpBLmh9KX1oYW5kbGVSZXNpemVNb3ZlPWkocT0+e2lmKCF0aGlzLnJlc2l6ZVN0YXRlKXJldHVybjtsZXQgQT10aGlzLmVuc3VyZU1ldHJpY3MoKSxzZT10aGlzLndpZGdldHMsb2U9c2UuZmluZChSZT0+UmUuaWQ9PT10aGlzLnJlc2l6ZVN0YXRlLndpZGdldElkKTtpZighb2UpcmV0dXJuO3EucHJldmVudERlZmF1bHQoKTtsZXQgYWU9WDZhKHtwb2ludGVyOntjbGllbnRYOnEuY2xpZW50WCxjbGllbnRZOnEuY2xpZW50WX0sY29udGFpbmVyUmVjdDp0aGlzLmNvbnRhaW5lckJvdW5kcz8/dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxtZXRyaWNzOkEsc3RhcnRXaWR0aDp0aGlzLnJlc2l6ZVN0YXRlLnN0YXJ0V2lkdGgsc3RhcnRIZWlnaHQ6dGhpcy5yZXNpemVTdGF0ZS5zdGFydEhlaWdodCxzdGFydFBvaW50ZXI6dGhpcy5yZXNpemVTdGF0ZS5zdGFydFBvaW50ZXIsaGFuZGxlcjp0aGlzLnJlc2l6ZVN0YXRlLmhhbmRsZXIsd2lkZ2V0Om9lLGNvbHVtbnM6dGhpcy5jb2x1bW5zfSksVGU9S2goc2Usb2UuaWQse3g6b2UueCx5Om9lLnksdzphZS53aWR0aCxoOmFlLmhlaWdodH0sdGhpcy5jb2x1bW5zLHRoaXMucmVzaXplU3RhdGUuc3RhcnQpO2lmKFRlKXt0aGlzLnJlc2l6ZVN0YXRlPXsuLi50aGlzLnJlc2l6ZVN0YXRlLGxhc3RQbGFjZW1lbnQ6VGV9LHRoaXMucHJldmlld1dpZGdldHM9VGUud2lkZ2V0cztsZXQgUmU9VGUud2lkZ2V0cy5maW5kKEJlPT5CZS5pZD09PW9lLmlkKTtSZT90aGlzLnBsYWNlaG9sZGVyUG9zaXRpb249e2lkOlJlLmlkLHg6UmUueCx5OlJlLnksdzpSZS53LGg6UmUuaH06dGhpcy5wbGFjZWhvbGRlclBvc2l0aW9uPXtpZDpvZS5pZCx4Om9lLngseTpvZS55LHc6YWUud2lkdGgsaDphZS5oZWlnaHR9fWVsc2UgdGhpcy5wcmV2aWV3V2lkZ2V0cz1udWxsLHRoaXMucGxhY2Vob2xkZXJQb3NpdGlvbj1udWxsO3RoaXMucmVxdWVzdFVwZGF0ZSgpfSwiaGFuZGxlUmVzaXplTW92ZSIpO2hhbmRsZVJlc2l6ZUVuZD1pKHE9PntsZXQgQT10aGlzLnJlc2l6ZVN0YXRlO2lmKCFBfHxxLnBvaW50ZXJJZCE9PUEucG9pbnRlcklkKXJldHVybjtsZXQgc2U9dGhpcy53aWRnZXRzO3RoaXMucHJldmlld1dpZGdldHM9bnVsbDtsZXQgb2U9QS5sYXN0UGxhY2VtZW50Pz9LaChzZSxBLndpZGdldElkLHt4OnRoaXMucGxhY2Vob2xkZXJQb3NpdGlvbj8ueD8/QS5zdGFydC54LHk6dGhpcy5wbGFjZWhvbGRlclBvc2l0aW9uPy55Pz9BLnN0YXJ0Lnksdzp0aGlzLnBsYWNlaG9sZGVyUG9zaXRpb24/Lnc/P0Euc3RhcnQudyxoOnRoaXMucGxhY2Vob2xkZXJQb3NpdGlvbj8uaD8/QS5zdGFydC5ofSx0aGlzLmNvbHVtbnMsQS5zdGFydCk7b2U/dGhpcy5jb21taXRQbGFjZW1lbnQob2UsQS53aWRnZXRJZCwid2lkZ2V0LXJlc2l6ZSIpOnRoaXMud2lkZ2V0cz10aGlzLndpZGdldHMubWFwKGFlPT5hZS5pZD09PUEud2lkZ2V0SWQ/ey4uLmFlLHc6QS5zdGFydC53LGg6QS5zdGFydC5ofTphZSksdGhpcy5wbGFjZWhvbGRlclBvc2l0aW9uPW51bGwsdGhpcy5yZXNpemVTdGF0ZT1udWxsLHRoaXMuaW50ZXJhY3Rpb25BY3RpdmU9ITEsdGhpcy5yZWxlYXNlUG9pbnRlckV2ZW50cygpfSwiaGFuZGxlUmVzaXplRW5kIik7aGFuZGxlSGVhZGVyS2V5ZG93bihxLEEpe2lmKCF0aGlzLmVkaXRhYmxlfHxBLm5vTW92ZXx8QS5sb2NrZWQpcmV0dXJuO2xldCBzZT1xLmtleSxvZT1xLnNoaWZ0S2V5LGFlPW51bGw7aWYob2UmJlsiQXJyb3dMZWZ0IiwiQXJyb3dSaWdodCIsIkFycm93VXAiLCJBcnJvd0Rvd24iXS5pbmNsdWRlcyhzZSkpe3EucHJldmVudERlZmF1bHQoKTtsZXQgRGU9c2U9PT0iQXJyb3dSaWdodCJ8fHNlPT09IkFycm93RG93biI/MTotMTtpZihzZT09PSJBcnJvd0xlZnQifHxzZT09PSJBcnJvd1JpZ2h0Iil7bGV0IF9lPUEubWF4Vz8/dGhpcy5jb2x1bW5zLUEueCxDZT1NYXRoLm1heChBLm1pblc/PzEsTWF0aC5taW4oX2UsQS53K0RlKSk7YWU9S2godGhpcy53aWRnZXRzLEEuaWQse3g6QS54LHk6QS55LHc6Q2UsaDpBLmh9LHRoaXMuY29sdW1ucyl9ZWxzZXtsZXQgX2U9QS5tYXhIPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksQ2U9TWF0aC5tYXgoQS5taW5IPz8xLE1hdGgubWluKF9lLEEuaCtEZSkpO2FlPUtoKHRoaXMud2lkZ2V0cyxBLmlkLHt4OkEueCx5OkEueSx3OkEudyxoOkNlfSx0aGlzLmNvbHVtbnMpfWFlJiZ0aGlzLmNvbW1pdFBsYWNlbWVudChhZSxBLmlkLCJ3aWRnZXQtcmVzaXplIik7cmV0dXJufWxldCBSZT17QXJyb3dMZWZ0OntkeDotMSxkeTowfSxBcnJvd1JpZ2h0OntkeDoxLGR5OjB9LEFycm93VXA6e2R4OjAsZHk6LTF9LEFycm93RG93bjp7ZHg6MCxkeToxfX1bc2VdO2lmKCFSZSlyZXR1cm47cS5wcmV2ZW50RGVmYXVsdCgpO2xldCBCZT1NYXRoLm1heCgwLE1hdGgubWluKHRoaXMuY29sdW1ucy1BLncsQS54K1JlLmR4KSksR2U9TWF0aC5tYXgoMCxBLnkrUmUuZHkpO2FlPUtoKHRoaXMud2lkZ2V0cyxBLmlkLHt4OkJlLHk6R2V9LHRoaXMuY29sdW1ucyksYWUmJnRoaXMuY29tbWl0UGxhY2VtZW50KGFlLEEuaWQsIndpZGdldC1tb3ZlIil9aGFuZGxlV2lkZ2V0Q29udGV4dE1lbnUocSxBKXtxLnByZXZlbnREZWZhdWx0KCkscS5zdG9wUHJvcGFnYXRpb24oKSxKNmEoe3dpZGdldDpBLGhvc3Q6dGhpcyxldmVudDpxfSl9Y29tbWl0UGxhY2VtZW50KHEsQSxzZSl7dGhpcy5wcmV2aWV3V2lkZ2V0cz1udWxsLHRoaXMud2lkZ2V0cz1xLndpZGdldHM7bGV0IG9lPXRoaXMud2lkZ2V0cy5maW5kKGFlPT5hZS5pZD09PUEpO29lJiZ0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KHNlLHtkZXRhaWw6e3dpZGdldDpvZSxkaXNwbGFjZWQ6cS5tb3ZlZFdpZGdldHMuZmlsdGVyKGFlPT5hZSE9PUEpLHN3YXBwZWRXaXRoOnEuc3dhcHBlZFdpdGh9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9cmVtb3ZlV2lkZ2V0KHEpe2xldCBBPXRoaXMud2lkZ2V0cy5maW5kKHNlPT5zZS5pZD09PXEpO0EmJih0aGlzLndpZGdldHM9dGhpcy53aWRnZXRzLmZpbHRlcihzZT0+c2UuaWQhPT1xKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJ3aWRnZXQtcmVtb3ZlIix7ZGV0YWlsOnt3aWRnZXQ6QX0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKSl9dXBkYXRlV2lkZ2V0KHEsQSl7dGhpcy53aWRnZXRzPXRoaXMud2lkZ2V0cy5tYXAoc2U9PnNlLmlkPT09cT97Li4uc2UsLi4uQX06c2UpfWdldExheW91dCgpe3JldHVybiB0aGlzLndpZGdldHMubWFwKCh7aWQ6cSx4OkEseTpzZSx3Om9lLGg6YWV9KT0+KHtpZDpxLHg6QSx5OnNlLHc6b2UsaDphZX0pKX1zZXRMYXlvdXQocSl7dGhpcy53aWRnZXRzPUs2YSh0aGlzLndpZGdldHMscSl9bG9ja0dyaWQoKXt0aGlzLmVkaXRhYmxlPSExfXVubG9ja0dyaWQoKXt0aGlzLmVkaXRhYmxlPSEwfWFkZFdpZGdldChxLEE9ITEpe2xldCBzZT17Li4ucX07aWYoQXx8c2UuYXV0b1Bvc2l0aW9uKXtsZXQgb2U9Wml0KHRoaXMud2lkZ2V0cyxzZS53LHNlLmgsdGhpcy5jb2x1bW5zKTtzZS54PW9lLngsc2UueT1vZS55fXRoaXMud2lkZ2V0cz1bLi4udGhpcy53aWRnZXRzLHNlXX1jb21wYWN0KHE9InZlcnRpY2FsIil7bGV0IEE9dGhpcy53aWRnZXRzLm1hcChzZT0+KHsuLi5zZX0pKTtHNmEoQSxxKSx0aGlzLndpZGdldHM9QX1hcHBseUJyZWFrcG9pbnRMYXlvdXQocSl7dGhpcy5hY3RpdmVCcmVha3BvaW50PXE7bGV0IEE9dGhpcy5sYXlvdXRzPy5bcV07QSYmdGhpcy5zZXRMYXlvdXQoQSl9bm90aWZ5TGF5b3V0Q2hhbmdlKCl7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgibGF5b3V0LWNoYW5nZSIse2RldGFpbDp7bGF5b3V0OnRoaXMuZ2V0TGF5b3V0KCl9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9ZW5zdXJlTWV0cmljcygpe3JldHVybiB0aGlzLm1ldHJpY3N8fHRoaXMuY29tcHV0ZU1ldHJpY3MoKSx0aGlzLm1ldHJpY3N9Y29tcHV0ZU1ldHJpY3MoKXtpZighdGhpcy5pc0Nvbm5lY3RlZClyZXR1cm47bGV0IHE9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0aGlzLmNvbnRhaW5lckJvdW5kcz1xO2xldCBBPVlpdCh0aGlzLm1hcmdpbik7dGhpcy5yZXNvbHZlZE1hcmdpbnM9QSx0aGlzLm1ldHJpY3M9VTZhKHEud2lkdGgsdGhpcy5jb2x1bW5zLEEsdGhpcy5jZWxsSGVpZ2h0LHRoaXMuY2VsbEhlaWdodFVuaXQpfW9ic2VydmVSZXNpemUoKXt0aGlzLnJlc2l6ZU9ic2VydmVyfHwodGhpcy5yZXNpemVPYnNlcnZlcj1uZXcgUmVzaXplT2JzZXJ2ZXIoKCk9Pnt0aGlzLmNvbXB1dGVNZXRyaWNzKCl9KSx0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcykpfWRpc2Nvbm5lY3RSZXNpemVPYnNlcnZlcigpe3RoaXMucmVzaXplT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKSx0aGlzLnJlc2l6ZU9ic2VydmVyPXZvaWQgMH1yZWxlYXNlUG9pbnRlckV2ZW50cygpe2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIix0aGlzLmhhbmRsZURyYWdNb3ZlKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLHRoaXMuaGFuZGxlRHJhZ0VuZCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLHRoaXMuaGFuZGxlUmVzaXplTW92ZSksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIix0aGlzLmhhbmRsZVJlc2l6ZUVuZCl9cHhUb1BlcmNlbnQocSxBKXtyZXR1cm4gQT9OdW1iZXIoKHEvQSoxMDApLnRvRml4ZWQoNCkpOjB9Y29tcHV0ZVdpZGdldFJlY3QocSxBLHNlKXtsZXQgb2U9QS5jZWxsV2lkdGhQeCxhZT1BLmNlbGxIZWlnaHRQeCxUZT1xLngqKG9lK3NlLmhvcml6b250YWwpK3NlLmhvcml6b250YWwsUmU9cS55KihhZStzZS52ZXJ0aWNhbCkrc2UudmVydGljYWwsQmU9cS53Km9lK01hdGgubWF4KDAscS53LTEpKnNlLmhvcml6b250YWwsR2U9cS5oKmFlK01hdGgubWF4KDAscS5oLTEpKnNlLnZlcnRpY2FsO3JldHVybntsZWZ0OlRlLHRvcDpSZSx3aWR0aDpCZSxoZWlnaHQ6R2V9fXN0YXRpY3tNcyhhLHQpfX07cmV0dXJuIHllPWF9KSgpfSk7dmFyIHM1YT1nKCgpPT57YTVhKCl9KTtmdW5jdGlvbiBpNWEoKXtyZXR1cm4gd2AKICAgIDxkZWVzLWhlYWRpbmcgbGV2ZWw9IjEiPlRoaXMgaXMgYSBIMSBoZWFkaW5nPC9kZWVzLWhlYWRpbmc+CiAgICA8ZGVlcy1oZWFkaW5nIGxldmVsPSIyIj5UaGlzIGlzIGEgSDIgaGVhZGluZzwvZGVlcy1oZWFkaW5nPgogICAgPGRlZXMtaGVhZGluZyBsZXZlbD0iMyI+VGhpcyBpcyBhIEgzIGhlYWRpbmc8L2RlZXMtaGVhZGluZz4KICAgIDxkZWVzLWhlYWRpbmcgbGV2ZWw9IjQiPlRoaXMgaXMgYSBINCBoZWFkaW5nPC9kZWVzLWhlYWRpbmc+CiAgICA8ZGVlcy1oZWFkaW5nIGxldmVsPSI1Ij5UaGlzIGlzIGEgSDUgaGVhZGluZzwvZGVlcy1oZWFkaW5nPgogICAgPGRlZXMtaGVhZGluZyBsZXZlbD0iNiI+VGhpcyBpcyBhIEg2IGhlYWRpbmc8L2RlZXMtaGVhZGluZz4KICAgIDxkZWVzLWhlYWRpbmcgbGV2ZWw9ImhyIj5UaGlzIGlzIGFuIGhyIGhlYWRpbmcgKGxldmVsPSJociIpPC9kZWVzLWhlYWRpbmc+CiAgICA8ZGVlcy1oZWFkaW5nIGxldmVsPSI3Ij5UaGlzIGlzIGFuIGhyIGhlYWRpbmcgKGxldmVsPSI3Iik8L2RlZXMtaGVhZGluZz4KICAgIDxkZWVzLWhlYWRpbmcgbGV2ZWw9ImhyLXNtYWxsIj5UaGlzIGlzIGFuIGhyLXNtYWxsIGhlYWRpbmcgKGxldmVsPSJoci1zbWFsbCIpPC9kZWVzLWhlYWRpbmc+CiAgICA8ZGVlcy1oZWFkaW5nIGxldmVsPSI4Ij5UaGlzIGlzIGFuIGhyLXNtYWxsIGhlYWRpbmcgKGxldmVsPSI4Iik8L2RlZXMtaGVhZGluZz4KICBgfXZhciByNWE9ZygoKT0+e3BlKCk7aShpNWEsImRlbW9GdW5jIil9KTt2YXIgbzVhLFhpdCxuNWEsbDVhPWcoKCk9PntwZSgpO3I1YSgpO0NyKCk7cHQoKTtvNWE9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LFhpdD1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sbjVhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1oZWFkaW5nIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W107dmFyIHA9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNIZWFkaW5nIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpTdHJpbmcscmVmbGVjdDohMH0pXSxvNWEodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJsZXZlbCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh1PT4ibGV2ZWwiaW4gdSwiaGFzIiksZ2V0OmkodT0+dS5sZXZlbCwiZ2V0Iiksc2V0OmkoKHUsYyk9Pnt1LmxldmVsPWN9LCJzZXQiKX0sbWV0YWRhdGE6ZH0sbyxsKSxvNWEobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6ZH0sbnVsbCx0KSxwPWE9ZS52YWx1ZSxkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmR9KX1zdGF0aWMgZGVtbz1pNWE7c3RhdGljIGRlbW9Hcm91cHM9WyJMYXlvdXQiXTsjZT1YaXQodGhpcyxvLCIxIik7Z2V0IGxldmVsKCl7cmV0dXJuIHRoaXMuI2V9c2V0IGxldmVsKGQpe3RoaXMuI2U9ZH1zdGF0aWMgc3R5bGVzPVtIZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICAvKiBIZWFkaW5nIHN0eWxlcy4KICAgICAgICogQ29sb3IgaGllcmFyY2h5OiBoMS1oMiBzdGF5IHByb21pbmVudCB3aXRoIHRleHQtcHJpbWFyeTsgaDMtaDYgc3RlcAogICAgICAgKiBkb3duIHRvIHRleHQtc2Vjb25kYXJ5IHNvIHRoZXkgcmVhZCBhcyBzdWJoZWFkaW5ncyBpbnN0ZWFkIG9mCiAgICAgICAqIG1pbmktaDFzLiBLZWVwcyB0aGUgdmlzdWFsIGxvdWRuZXNzIG91dCBvZiBzbWFsbGVyIGhlYWRpbmdzLiAqLwogICAgICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICB9CiAgICAgIGgxLCBoMiB7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgfQogICAgICBoMywgaDQsIGg1LCBoNiB7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOwogICAgICB9CgogICAgICAvKiBQZXItbGV2ZWwgdHlwb2dyYXBoeSArIHNwYWNpbmcuCiAgICAgICAqIE1hcmdpbiBzY2FsZXMgd2l0aCBpbXBvcnRhbmNlOiBoMSBnZXRzIHRoZSBtb3N0IGJyZWF0aGluZyByb29tLAogICAgICAgKiBoNiB0aGUgbGVhc3QuIFRvcCBtYXJnaW4gPiBib3R0b20gbWFyZ2luIHNvIGhlYWRpbmdzIGdyb3VwIHdpdGgKICAgICAgICogdGhlIGNvbnRlbnQgdGhhdCBmb2xsb3dzIHRoZW0uICovCiAgICAgIGgxIHsKICAgICAgICAvKiBoMSB1c2VzIHdlaWdodCA1MDAsIG5vdCA2MDA6IHRoZSBDYWwgU2FucyBkaXNwbGF5IGZvbnQgaXMKICAgICAgICAgKiBhbHJlYWR5IHN0eWxpemVkIGVub3VnaCB0aGF0IGJvbGQgKyBtYXggY29udHJhc3QgKyAzMnB4IHN0YWNrcwogICAgICAgICAqIHRvbyBtdWNoIGVtcGhhc2lzLiA1MDAga2VlcHMgdGhlIHR5cG9ncmFwaGljIGltcGFjdCB3aXRob3V0CiAgICAgICAgICogc2hvdXRpbmcuICovCiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBmb250LXNpemU6IDMycHg7CiAgICAgICAgZm9udC1mYW1pbHk6ICR7emRhfTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wMjVlbTsKICAgICAgICBtYXJnaW46IHZhcigtLWRlZXMtc3BhY2luZy0yeGwpIDAgdmFyKC0tZGVlcy1zcGFjaW5nLWxnKTsKICAgICAgfQogICAgICBoMiB7CiAgICAgICAgZm9udC1zaXplOiAyOHB4OwogICAgICAgIG1hcmdpbjogdmFyKC0tZGVlcy1zcGFjaW5nLXhsKSAwIHZhcigtLWRlZXMtc3BhY2luZy1tZCk7CiAgICAgIH0KICAgICAgaDMgewogICAgICAgIGZvbnQtc2l6ZTogMjRweDsKICAgICAgICBtYXJnaW46IHZhcigtLWRlZXMtc3BhY2luZy14bCkgMCB2YXIoLS1kZWVzLXNwYWNpbmctbWQpOwogICAgICB9CiAgICAgIGg0IHsKICAgICAgICBmb250LXNpemU6IDIwcHg7CiAgICAgICAgbWFyZ2luOiB2YXIoLS1kZWVzLXNwYWNpbmctbGcpIDAgdmFyKC0tZGVlcy1zcGFjaW5nLXNtKTsKICAgICAgfQogICAgICBoNSB7CiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgIG1hcmdpbjogdmFyKC0tZGVlcy1zcGFjaW5nLW1kKSAwIHZhcigtLWRlZXMtc3BhY2luZy1zbSk7CiAgICAgIH0KICAgICAgaDYgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBtYXJnaW46IHZhcigtLWRlZXMtc3BhY2luZy1tZCkgMCB2YXIoLS1kZWVzLXNwYWNpbmcteHMpOwogICAgICB9CgogICAgICAvKiBIb3Jpem9udGFsIHJ1bGUgc3R5bGUgaGVhZGluZyAqLwogICAgICAuaGVhZGluZy1ociB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBtYXJnaW46IHZhcigtLWRlZXMtc3BhY2luZy1sZykgMDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgfQogICAgICAvKiBGYWRlIGxpbmVzIHRvd2FyZCBhbmQgYXdheSBmcm9tIHRleHQgZm9yIGhyIHN0eWxlICovCiAgICAgIC5oZWFkaW5nLWhyOjpiZWZvcmUgewogICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgIGZsZXg6IDE7CiAgICAgICAgaGVpZ2h0OiAxcHg7CiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCB0cmFuc3BhcmVudCwgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItc3Ryb25nKSk7CiAgICAgICAgbWFyZ2luOiAwIHZhcigtLWRlZXMtc3BhY2luZy1zbSk7CiAgICAgIH0KICAgICAgLmhlYWRpbmctaHI6OmFmdGVyIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICBmbGV4OiAxOwogICAgICAgIGhlaWdodDogMXB4OwogICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItc3Ryb25nKSwgdHJhbnNwYXJlbnQpOwogICAgICAgIG1hcmdpbjogMCB2YXIoLS1kZWVzLXNwYWNpbmctc20pOwogICAgICB9CiAgICAgIC8qIFNtYWxsIGhyIHZhcmlhbnQgd2l0aCByZWR1Y2VkIG1hcmdpbnMgKi8KICAgICAgLmhlYWRpbmctaHIuaGVhZGluZy1oci1zbWFsbCB7CiAgICAgICAgbWFyZ2luOiB2YXIoLS1kZWVzLXNwYWNpbmctc20pIDA7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICB9CiAgICAgIC5oZWFkaW5nLWhyLmhlYWRpbmctaHItc21hbGw6OmJlZm9yZSwKICAgICAgLmhlYWRpbmctaHIuaGVhZGluZy1oci1zbWFsbDo6YWZ0ZXIgewogICAgICAgIG1hcmdpbjogMCB2YXIoLS1kZWVzLXNwYWNpbmctc20pOwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtzd2l0Y2godGhpcy5sZXZlbCl7Y2FzZSIxIjpyZXR1cm4gd2A8aDE+PHNsb3Q+PC9zbG90PjwvaDE+YDtjYXNlIjIiOnJldHVybiB3YDxoMj48c2xvdD48L3Nsb3Q+PC9oMj5gO2Nhc2UiMyI6cmV0dXJuIHdgPGgzPjxzbG90Pjwvc2xvdD48L2gzPmA7Y2FzZSI0IjpyZXR1cm4gd2A8aDQ+PHNsb3Q+PC9zbG90PjwvaDQ+YDtjYXNlIjUiOnJldHVybiB3YDxoNT48c2xvdD48L3Nsb3Q+PC9oNT5gO2Nhc2UiNiI6cmV0dXJuIHdgPGg2PjxzbG90Pjwvc2xvdD48L2g2PmA7Y2FzZSI3IjpjYXNlImhyIjpyZXR1cm4gd2A8ZGl2IGNsYXNzPSJoZWFkaW5nLWhyIj48c2xvdD48L3Nsb3Q+PC9kaXY+YDtjYXNlIjgiOmNhc2UiaHItc21hbGwiOnJldHVybiB3YDxkaXYgY2xhc3M9ImhlYWRpbmctaHIgaGVhZGluZy1oci1zbWFsbCI+PHNsb3Q+PC9zbG90PjwvZGl2PmA7ZGVmYXVsdDpyZXR1cm4gd2A8aDE+PHNsb3Q+PC9zbG90PjwvaDE+YH19Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLFhpdCh0aGlzLGwpfXN0YXRpY3tYaXQoYSx0KX19O3JldHVybiBwPWF9KSgpfSk7dmFyIGM1YT1nKCgpPT57bDVhKCl9KTt2YXIgZDVhPWcoKCk9PntsdigpfSk7dmFyIHU1YSxwNWE9ZygoKT0+e3BlKCk7dTVhPWkoKCk9PndgCiAgPGRpdiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAxNnB4OyI+CiAgICA8IS0tIFNtYWxsIHNldCBvZiBwYWdlcyAtLT4KICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogNHB4OyI+CiAgICAgIDxzcGFuPjUgcGFnZXMsIHN0YXJ0aW5nIGF0IDE6PC9zcGFuPgogICAgICA8ZGVlcy1wYWdpbmF0aW9uCiAgICAgICAgLnRvdGFsPSR7NX0KICAgICAgICAucGFnZT0kezF9CiAgICAgICAgQHBhZ2UtY2hhbmdlPSR7cz0+Y29uc29sZS5sb2coIlBhZ2UgY2hhbmdlZCB0byIscy5kZXRhaWwucGFnZSl9CiAgICAgID48L2RlZXMtcGFnaW5hdGlvbj4KICAgIDwvZGl2PgoKICAgIDwhLS0gTGFyZ2VyIHNldCBvZiBwYWdlcyAtLT4KICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogNHB4OyI+CiAgICAgIDxzcGFuPjE1IHBhZ2VzLCBzdGFydGluZyBhdCA4Ojwvc3Bhbj4KICAgICAgPGRlZXMtcGFnaW5hdGlvbgogICAgICAgIC50b3RhbD0kezE1fQogICAgICAgIC5wYWdlPSR7OH0KICAgICAgICBAcGFnZS1jaGFuZ2U9JHtzPT5jb25zb2xlLmxvZygiUGFnZSBjaGFuZ2VkIHRvIixzLmRldGFpbC5wYWdlKX0KICAgICAgPjwvZGVlcy1wYWdpbmF0aW9uPgogICAgPC9kaXY+CiAgPC9kaXY+CmAsImRlbW9GdW5jIil9KTt2YXIgUWl0LFFYLGg1YSxmNWE9ZygoKT0+e3BlKCk7cDVhKCk7cHQoKTtRaXQ9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LFFYPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxoNWE9KCgpPT57bGV0IHM9W25lKCJkZWVzLXBhZ2luYXRpb24iKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXTt2YXIgYz1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1BhZ2luYXRpb24iKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgYj10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOk51bWJlcixyZWZsZWN0OiEwfSldLHA9W0woe3R5cGU6TnVtYmVyLHJlZmxlY3Q6ITB9KV0sUWl0KHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicGFnZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh2PT4icGFnZSJpbiB2LCJoYXMiKSxnZXQ6aSh2PT52LnBhZ2UsImdldCIpLHNldDppKCh2LHgpPT57di5wYWdlPXh9LCJzZXQiKX0sbWV0YWRhdGE6Yn0sbyxsKSxRaXQodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0b3RhbCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh2PT4idG90YWwiaW4gdiwiaGFzIiksZ2V0Omkodj0+di50b3RhbCwiZ2V0Iiksc2V0OmkoKHYseCk9Pnt2LnRvdGFsPXh9LCJzZXQiKX0sbWV0YWRhdGE6Yn0sZCx1KSxRaXQobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6Yn0sbnVsbCx0KSxjPWE9ZS52YWx1ZSxiJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KX1zdGF0aWMgZGVtbz11NWE7c3RhdGljIGRlbW9Hcm91cHM9WyJMYXlvdXQiXTsjZT1RWCh0aGlzLG8sMSk7Z2V0IHBhZ2UoKXtyZXR1cm4gdGhpcy4jZX1zZXQgcGFnZShiKXt0aGlzLiNlPWJ9I3Q9KFFYKHRoaXMsbCksUVgodGhpcyxkLDEpKTtnZXQgdG90YWwoKXtyZXR1cm4gdGhpcy4jdH1zZXQgdG90YWwoYil7dGhpcy4jdD1ifXN0YXRpYyBzdHlsZXM9W0hlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICAvKiBUT0RPOiBNaWdyYXRlIGhhcmRjb2RlZCB2YWx1ZXMgdG8gLS1kZWVzLSogQ1NTIHZhcmlhYmxlcyAqLwogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgfQogICAgICBidXR0b24gewogICAgICAgIGJhY2tncm91bmQ6IG5vbmU7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIG1hcmdpbjogMCAycHg7CiAgICAgICAgcGFkZGluZzogNnB4IDEwcHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzMzMiLCIjY2NjIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMnM7CiAgICAgIH0KICAgICAgYnV0dG9uOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2VlZSIsIiM0NDQiKX07CiAgICAgIH0KICAgICAgYnV0dG9uOmRpc2FibGVkIHsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjYWFhIiwiIzY2NiIpfTsKICAgICAgfQogICAgICBidXR0b24uY3VycmVudCB7CiAgICAgICAgYmFja2dyb3VuZDogIzAwNTBiOTsKICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgIH0KICAgICAgc3Bhbi5lbGxpcHNpcyB7CiAgICAgICAgbWFyZ2luOiAwIDRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzMzMiLCIjY2NjIil9OwogICAgICB9CiAgICBgXTtnZXQgcGFnZXMoKXtsZXQgYj1bXSx2PXRoaXMudG90YWwseD10aGlzLnBhZ2U7aWYodjw9Nylmb3IobGV0IG09MTttPD12O20rKyliLnB1c2gobSk7ZWxzZXtiLnB1c2goMSkseD40JiZiLnB1c2goIi4uLiIpO2xldCBtPU1hdGgubWF4KDIseC0yKSxmPU1hdGgubWluKHYtMSx4KzIpO2ZvcihsZXQgeT1tO3k8PWY7eSsrKWIucHVzaCh5KTt4PHYtMyYmYi5wdXNoKCIuLi4iKSxiLnB1c2godil9cmV0dXJuIGJ9cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxidXR0b24KICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy5jaGFuZ2VQYWdlKHRoaXMucGFnZS0xKX0KICAgICAgICA/ZGlzYWJsZWQ9JHt0aGlzLnBhZ2U8PTF9CiAgICAgICAgYXJpYS1sYWJlbD0iUHJldmlvdXMgcGFnZSIKICAgICAgPgogICAgICAgIOKAuQogICAgICA8L2J1dHRvbj4KICAgICAgJHt0aGlzLnBhZ2VzLm1hcChiPT5iPT09Ii4uLiI/d2A8c3BhbiBjbGFzcz0iZWxsaXBzaXMiPuKApjwvc3Bhbj5gOndgCiAgICAgICAgICAgICAgPGJ1dHRvbgogICAgICAgICAgICAgICAgY2xhc3M9IiR7Yj09PXRoaXMucGFnZT8iY3VycmVudCI6IiJ9IgogICAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMuY2hhbmdlUGFnZShiKX0KICAgICAgICAgICAgICAgID9kaXNhYmxlZD0ke2I9PT10aGlzLnBhZ2V9CiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPSJQYWdlICR7Yn0iCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgJHtifQogICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICBgKX0KICAgICAgPGJ1dHRvbgogICAgICAgIEBjbGljaz0keygpPT50aGlzLmNoYW5nZVBhZ2UodGhpcy5wYWdlKzEpfQogICAgICAgID9kaXNhYmxlZD0ke3RoaXMucGFnZT49dGhpcy50b3RhbH0KICAgICAgICBhcmlhLWxhYmVsPSJOZXh0IHBhZ2UiCiAgICAgID4KICAgICAgICDigLoKICAgICAgPC9idXR0b24+CiAgICBgfWNoYW5nZVBhZ2UoYil7YjwxfHxiPnRoaXMudG90YWx8fGI9PT10aGlzLnBhZ2V8fCh0aGlzLnBhZ2U9Yix0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJwYWdlLWNoYW5nZSIse2RldGFpbDp7cGFnZTp0aGlzLnBhZ2V9LGJ1YmJsZXM6ITB9KSkpfWNvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSxRWCh0aGlzLHUpfXN0YXRpY3tRWChhLHQpfX07cmV0dXJuIGM9YX0pKCl9KTt2YXIgbTVhPWcoKCk9PntmNWEoKX0pO3ZhciBnNWE9ZygoKT0+e2ZvKCl9KTt2YXIgYjVhLHY1YT1nKCgpPT57cGUoKTtKaXQoKTtiNWE9aSgoKT0+e2xldCBzPVt7a2V5OiJlbWFpbCIsbGFiZWw6IkFjY291bnQgZW1haWwiLHZhbHVlOiJhZG1pbkBleGFtcGxlLmNvbSJ9LHtrZXk6InN0YXR1cyIsbGFiZWw6IlN0YXR1cyIsdmFsdWU6ImVuYWJsZWQifSx7a2V5OiJtb2RlIixsYWJlbDoiTW9kZSIsdmFsdWU6InByb2R1Y3Rpb24ifSx7a2V5OiJhdXRvUmVuZXciLGxhYmVsOiJBdXRvLXJlbmV3Iix2YWx1ZToib24ifSx7a2V5OiJ0aHJlc2hvbGQiLGxhYmVsOiJSZW5ld2FsIHRocmVzaG9sZCIsdmFsdWU6IjMwIGRheXMifV0sZT1be25hbWU6IkVkaXQiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiRWRpdCBjbGlja2VkIiksImFjdGlvbiIpfV0sdD1be25hbWU6IkNvbmZpZ3VyZSIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJDb25maWd1cmUgY2xpY2tlZCIpLCJhY3Rpb24iKX1dLGE9W3tuYW1lOiJSZXNldCIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJSZXNldCBjbGlja2VkIiksImFjdGlvbiIpfSx7bmFtZToiRWRpdCIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJFZGl0IGNsaWNrZWQiKSwiYWN0aW9uIil9XTtyZXR1cm4gd2AKICAgIDxkZWVzLWRlbW93cmFwcGVyPgogICAgICA8c3R5bGU+CiAgICAgICAgJHtKYAogICAgICAgICAgLmRlbW9Cb3ggewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTUlKSIsImhzbCgwIDAlIDklKSIpfTsKICAgICAgICAgICAgcGFkZGluZzogNDBweDsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgICAgICBtYXgtd2lkdGg6IDYwMHB4OwogICAgICAgICAgfQogICAgICAgIGB9CiAgICAgIDwvc3R5bGU+CiAgICAgIDxkaXYgY2xhc3M9ImRlbW9Cb3giPgogICAgICAgIDxkZWVzLXNldHRpbmdzCiAgICAgICAgICAuaGVhZGluZz0keyJBQ01FIFNldHRpbmdzIn0KICAgICAgICAgIC5zZXR0aW5nc0ZpZWxkcz0ke3N9CiAgICAgICAgICAuYWN0aW9ucz0ke2V9CiAgICAgICAgPjwvZGVlcy1zZXR0aW5ncz4KCiAgICAgICAgPGRlZXMtc2V0dGluZ3MKICAgICAgICAgIC5oZWFkaW5nPSR7IkFDTUUgU2V0dGluZ3MifQogICAgICAgICAgLmRlc2NyaXB0aW9uPSR7Ik5vIEFDTUUgY29uZmlndXJhdGlvbiB5ZXQuIENsaWNrIENvbmZpZ3VyZSB0byBzZXQgdXAgYXV0b21hdGVkIFRMUyBjZXJ0aWZpY2F0ZSBpc3N1YW5jZS4ifQogICAgICAgICAgLmFjdGlvbnM9JHt0fQogICAgICAgID48L2RlZXMtc2V0dGluZ3M+CgogICAgICAgIDxkZWVzLXNldHRpbmdzCiAgICAgICAgICAuaGVhZGluZz0keyJTZXJ2ZXIgQ29uZmlnIn0KICAgICAgICAgIC5zZXR0aW5nc0ZpZWxkcz0ke1t7a2V5OiJob3N0IixsYWJlbDoiSG9zdG5hbWUiLHZhbHVlOiJwcm94eS5leGFtcGxlLmNvbSJ9LHtrZXk6InBvcnQiLGxhYmVsOiJQb3J0Iix2YWx1ZToiNDQzIn1dfQogICAgICAgICAgLmFjdGlvbnM9JHthfQogICAgICAgID48L2RlZXMtc2V0dGluZ3M+CiAgICAgIDwvZGl2PgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgogIGB9LCJkZW1vRnVuYyIpfSk7dmFyIEpYLHd1LHg1YSxKaXQ9ZygoKT0+e3BlKCk7djVhKCk7Q3IoKTtwdCgpO25yKCk7Slg9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LHd1PWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSx4NWE9KCgpPT57bGV0IHM9W25lKCJkZWVzLXNldHRpbmdzIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W107dmFyIHk9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNTZXR0aW5ncyIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBNPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6U3RyaW5nfSldLHA9W0woe3R5cGU6U3RyaW5nfSldLGM9W0woe2F0dHJpYnV0ZTohMX0pXSx4PVtMKHthdHRyaWJ1dGU6ITF9KV0sSlgodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJoZWFkaW5nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJoZWFkaW5nImluIHosImhhcyIpLGdldDppKHo9PnouaGVhZGluZywiZ2V0Iiksc2V0OmkoKHosTik9Pnt6LmhlYWRpbmc9Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxvLGwpLEpYKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZGVzY3JpcHRpb24iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoej0+ImRlc2NyaXB0aW9uImluIHosImhhcyIpLGdldDppKHo9PnouZGVzY3JpcHRpb24sImdldCIpLHNldDppKCh6LE4pPT57ei5kZXNjcmlwdGlvbj1OfSwic2V0Iil9LG1ldGFkYXRhOk19LGQsdSksSlgodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZXR0aW5nc0ZpZWxkcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4ic2V0dGluZ3NGaWVsZHMiaW4geiwiaGFzIiksZ2V0Omkoej0+ei5zZXR0aW5nc0ZpZWxkcywiZ2V0Iiksc2V0OmkoKHosTik9Pnt6LnNldHRpbmdzRmllbGRzPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sYix2KSxKWCh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImFjdGlvbnMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoej0+ImFjdGlvbnMiaW4geiwiaGFzIiksZ2V0Omkoej0+ei5hY3Rpb25zLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3ouYWN0aW9ucz1OfSwic2V0Iil9LG1ldGFkYXRhOk19LG0sZiksSlgobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6TX0sbnVsbCx0KSx5PWE9ZS52YWx1ZSxNJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOk19KX1zdGF0aWMgZGVtbz1iNWE7c3RhdGljIGRlbW9Hcm91cHM9WyJMYXlvdXQiXTsjZT13dSh0aGlzLG8sIiIpO2dldCBoZWFkaW5nKCl7cmV0dXJuIHRoaXMuI2V9c2V0IGhlYWRpbmcoTSl7dGhpcy4jZT1NfSN0PSh3dSh0aGlzLGwpLHd1KHRoaXMsZCwiIikpO2dldCBkZXNjcmlwdGlvbigpe3JldHVybiB0aGlzLiN0fXNldCBkZXNjcmlwdGlvbihNKXt0aGlzLiN0PU19I2E9KHd1KHRoaXMsdSksd3UodGhpcyxiLFtdKSk7Z2V0IHNldHRpbmdzRmllbGRzKCl7cmV0dXJuIHRoaXMuI2F9c2V0IHNldHRpbmdzRmllbGRzKE0pe3RoaXMuI2E9TX0jcz0od3UodGhpcyx2KSx3dSh0aGlzLG0sW10pKTtnZXQgYWN0aW9ucygpe3JldHVybiB0aGlzLiNzfXNldCBhY3Rpb25zKE0pe3RoaXMuI3M9TX1zdGF0aWMgc3R5bGVzPVtIZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGZvbnQtZmFtaWx5OiAke05hfTsKICAgICAgfQoKICAgICAgLnNldHRpbmdzR3JpZCB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDE4MHB4LCAxZnIpKTsKICAgICAgICBnYXA6IDEycHggMjRweDsKICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICB9CgogICAgICAuc2V0dGluZ3NGaWVsZCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMnB4OwogICAgICB9CgogICAgICAuZmllbGRMYWJlbCB7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDNlbTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgfQoKICAgICAgLmZpZWxkVmFsdWUgewogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICB9CgogICAgICAuc2V0dGluZ3NEZXNjcmlwdGlvbiB7CiAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgfQoKICAgICAgLmJvdHRvbUJ1dHRvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAwOwogICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAuYm90dG9tQnV0dG9ucyAuYm90dG9tQnV0dG9uIHsKICAgICAgICBwYWRkaW5nOiAwIDE2cHg7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItc3VidGxlKTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgfQoKICAgICAgLmJvdHRvbUJ1dHRvbnMgLmJvdHRvbUJ1dHRvbjpmaXJzdC1jaGlsZCB7CiAgICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5ib3R0b21CdXR0b25zIC5ib3R0b21CdXR0b246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItaG92ZXIpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIH0KCiAgICAgIC5ib3R0b21CdXR0b25zIC5ib3R0b21CdXR0b246YWN0aXZlIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTIlKSIsImhzbCgwIDAlIDEzJSkiKX07CiAgICAgIH0KCiAgICAgIC5ib3R0b21CdXR0b25zIC5ib3R0b21CdXR0b24ucHJpbWFyeSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE3LjIgOTEuMiUgNTkuOCUpIiwiaHNsKDIxMy4xIDkzLjklIDY3LjglKSIpfTsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICB9CgogICAgICAuYm90dG9tQnV0dG9ucyAuYm90dG9tQnV0dG9uLnByaW1hcnk6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjE3LjIgOTEuMiUgNTkuOCUgLyAwLjA4KSIsImhzbCgyMTMuMSA5My45JSA2Ny44JSAvIDAuMDgpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNy4yIDkxLjIlIDUwJSkiLCJoc2woMjEzLjEgOTMuOSUgNzUlKSIpfTsKICAgICAgfQoKICAgICAgLmJvdHRvbUJ1dHRvbnMgLmJvdHRvbUJ1dHRvbi5wcmltYXJ5OmFjdGl2ZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTcuMiA5MS4yJSA1OS44JSAvIDAuMTUpIiwiaHNsKDIxMy4xIDkzLjklIDY3LjglIC8gMC4xNSkiKX07CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe2xldCBNPXRoaXMuc2V0dGluZ3NGaWVsZHMubGVuZ3RoPjAsej10aGlzLmFjdGlvbnMubGVuZ3RoPjA7cmV0dXJuIHdgCiAgICAgIDxkZWVzLXRpbGUgLmhlYWRpbmc9JHt0aGlzLmhlYWRpbmd9PgogICAgICAgICR7TT93YAogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNldHRpbmdzR3JpZCI+CiAgICAgICAgICAgICAgICAke3RoaXMuc2V0dGluZ3NGaWVsZHMubWFwKE49PndgCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2V0dGluZ3NGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmllbGRMYWJlbCI+JHtOLmxhYmVsfTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmaWVsZFZhbHVlIj4ke04udmFsdWV9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICBgKX0KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYDp3YAogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNldHRpbmdzRGVzY3JpcHRpb24iPiR7dGhpcy5kZXNjcmlwdGlvbn08L2Rpdj4KICAgICAgICAgICAgYH0KICAgICAgICAke3o/d2AKICAgICAgICAgICAgICA8ZGl2IHNsb3Q9ImZvb3RlciIgY2xhc3M9ImJvdHRvbUJ1dHRvbnMiPgogICAgICAgICAgICAgICAgJHt0aGlzLmFjdGlvbnMubWFwKChOLEMpPT53YAogICAgICAgICAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJib3R0b21CdXR0b24gJHtDPT09dGhpcy5hY3Rpb25zLmxlbmd0aC0xPyJwcmltYXJ5IjoiIn0iCiAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+Ti5hY3Rpb24oKX0KICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAke04ubmFtZX0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgYCl9CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGA6IiJ9CiAgICAgIDwvZGVlcy10aWxlPgogICAgYH1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksd3UodGhpcyxmKX1zdGF0aWN7d3UoYSx0KX19O3JldHVybiB5PWF9KSgpfSk7dmFyIHk1YT1nKCgpPT57Sml0KCl9KTt2YXIgdzVhLGVRLGs1YSxTNWEsXzVhPWcoKCk9PntwZSgpO2kxZSgpO3c1YT1pKGFzeW5jKHMsZSk9Pm5ldyBQcm9taXNlKHQ9PntsZXQgYT0hMSxyPWkobD0+e2F8fChhPSEwLGUmJmUucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLG4pLHQobCkpfSwiZmluaXNoIiksbj1pKCgpPT57d2luZG93LmNsZWFyVGltZW91dChvKSxyKCExKX0sImhhbmRsZUFib3J0Iiksbz13aW5kb3cuc2V0VGltZW91dCgoKT0+e3IoITApfSxzKTtlJiZlLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixuLHtvbmNlOiEwfSl9KSwid2FpdEZvclByb2dyZXNzVGljayIpLGVRPWkoKHM9IkNvbnRpbnVlIik9Plt7bmFtZTpzLGFjdGlvbjppKGFzeW5jIGU9PmU/LmdvTmV4dCgpLCJhY3Rpb24iKX1dLCJjcmVhdGVDb250aW51ZU1lbnVPcHRpb25zIiksazVhPWkoKCk9Plt7dGl0bGU6IkFjY291bnQgU2V0dXAiLGNvbnRlbnQ6d2AKICAgICAgPGRlZXMtZm9ybT4KICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0IGtleT0iZW1haWwiIGxhYmVsPSJXb3JrIEVtYWlsIiByZXF1aXJlZD48L2RlZXMtaW5wdXQtdGV4dD4KICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0IGtleT0icGFzc3dvcmQiIGxhYmVsPSJDcmVhdGUgUGFzc3dvcmQiIHR5cGU9InBhc3N3b3JkIiByZXF1aXJlZD48L2RlZXMtaW5wdXQtdGV4dD4KICAgICAgPC9kZWVzLWZvcm0+CiAgICBgLG1lbnVPcHRpb25zOmVRKCl9LHt0aXRsZToiUHJvZmlsZSBEZXRhaWxzIixjb250ZW50OndgCiAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgPGRlZXMtaW5wdXQtdGV4dCBrZXk9ImZpcnN0TmFtZSIgbGFiZWw9IkZpcnN0IE5hbWUiIHJlcXVpcmVkPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgIDxkZWVzLWlucHV0LXRleHQga2V5PSJsYXN0TmFtZSIgbGFiZWw9Ikxhc3QgTmFtZSIgcmVxdWlyZWQ+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgIDwvZGVlcy1mb3JtPgogICAgYCxtZW51T3B0aW9uczplUSgpfSx7dGl0bGU6IkNvbnRhY3QgSW5mb3JtYXRpb24iLGNvbnRlbnQ6d2AKICAgICAgPGRlZXMtZm9ybT4KICAgICAgICA8ZGVlcy1pbnB1dC1waG9uZSBrZXk9InBob25lIiBsYWJlbD0iTW9iaWxlIE51bWJlciIgcmVxdWlyZWQ+PC9kZWVzLWlucHV0LXBob25lPgogICAgICAgIDxkZWVzLWlucHV0LXRleHQga2V5PSJjb21wYW55IiBsYWJlbD0iQ29tcGFueSI+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgIDwvZGVlcy1mb3JtPgogICAgYCxtZW51T3B0aW9uczplUSgpfSx7dGl0bGU6IlByb3Zpc2lvbiBXb3Jrc3BhY2UiLGNvbnRlbnQ6d2AKICAgICAgPGRlZXMtcGFuZWw+CiAgICAgICAgPHA+CiAgICAgICAgICBXZSBhcmUgY3JlYXRpbmcgeW91ciBzdGFydGVyIHdvcmtzcGFjZSwgYXBwbHlpbmcgeW91ciBvbmJvYXJkaW5nIGNob2ljZXMsCiAgICAgICAgICBhbmQgcHJlcGFyaW5nIGEgbGl2ZSBwcmV2aWV3LiBUaGlzIHN0ZXAgbW92ZXMgZm9yd2FyZCBhdXRvbWF0aWNhbGx5IHdoZW4KICAgICAgICAgIHRoZSBlbnZpcm9ubWVudCBpcyByZWFkeS4KICAgICAgICA8L3A+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIGAscHJvZ3Jlc3NTdGVwOntsYWJlbDoiV29ya3NwYWNlIHNldHVwIixwZXJjZW50YWdlOjgsaW5kZXRlcm1pbmF0ZTohMCxzdGF0dXNSb3dzOjQsc3RhdHVzVGV4dDoiQWxsb2NhdGluZyBhIGNsZWFuIHdvcmtzcGFjZS4uLiIsdGVybWluYWxMaW5lczpbIkFsbG9jYXRpbmcgYSBjbGVhbiB3b3Jrc3BhY2UiXX0sdmFsaWRhdGlvbkZ1bmM6aShhc3luYyhzLGUsdCk9PntsZXQgYT1be2xpbmU6IkFsbG9jYXRpbmcgYSBjbGVhbiB3b3Jrc3BhY2UiLHBlcmNlbnRhZ2U6OCxkZWxheTo1MDB9LHtsaW5lOiJTeW5jaW5nIGFjY291bnQgcHJlZmVyZW5jZXMiLHBlcmNlbnRhZ2U6MjQsZGVsYXk6NjUwfSx7bGluZToiSW5zdGFsbGluZyBzZWxlY3RlZCBpbnRlZ3JhdGlvbnMiLHBlcmNlbnRhZ2U6NDcsZGVsYXk6NzAwfSx7bGluZToiR2VuZXJhdGluZyBzdGFydGVyIHByb2plY3QgZmlsZXMiLHBlcmNlbnRhZ2U6NzEsZGVsYXk6NjUwfSx7bGluZToiQm9vdGluZyB0aGUgbGl2ZSBwcmV2aWV3IGVudmlyb25tZW50IixwZXJjZW50YWdlOjkyLGRlbGF5OjcwMH1dO3MucmVzZXRQcm9ncmVzc1N0ZXAoKTtmb3IobGV0W3Isbl1vZiBhLmVudHJpZXMoKSlpZih0Py5hYm9ydGVkfHwocj09PTA/cy51cGRhdGVQcm9ncmVzc1N0ZXAoe3BlcmNlbnRhZ2U6bi5wZXJjZW50YWdlLGluZGV0ZXJtaW5hdGU6ITAsc3RhdHVzVGV4dDpgJHtuLmxpbmV9Li4uYCx0ZXJtaW5hbExpbmVzOltuLmxpbmVdfSk6KHMuYXBwZW5kUHJvZ3Jlc3NTdGVwTGluZShuLmxpbmUpLHMudXBkYXRlUHJvZ3Jlc3NTdGVwKHtwZXJjZW50YWdlOm4ucGVyY2VudGFnZSxpbmRldGVybWluYXRlOiEwLHN0YXR1c1RleHQ6YCR7bi5saW5lfS4uLmB9KSksIWF3YWl0IHc1YShuLmRlbGF5LHQpKSlyZXR1cm47cy5hcHBlbmRQcm9ncmVzc1N0ZXBMaW5lKCJXb3Jrc3BhY2UgcmVhZHkiKSxzLnVwZGF0ZVByb2dyZXNzU3RlcCh7cGVyY2VudGFnZToxMDAsaW5kZXRlcm1pbmF0ZTohMSxzdGF0dXNUZXh0OiJXb3Jrc3BhY2UgcmVhZHkuIn0pLGF3YWl0IHc1YSgzNTAsdCl9LCJ2YWxpZGF0aW9uRnVuYyIpfSx7dGl0bGU6IlRlYW0gU2l6ZSIsY29udGVudDp3YAogICAgICA8ZGVlcy1mb3JtPgogICAgICAgIDxkZWVzLWlucHV0LWRyb3Bkb3duCiAgICAgICAgICBrZXk9InRlYW1TaXplIgogICAgICAgICAgbGFiZWw9IkhvdyBiaWcgaXMgeW91ciB0ZWFtPyIKICAgICAgICAgIC5vcHRpb25zPSR7W3tsYWJlbDoiMS01Iix2YWx1ZToiMS01In0se2xhYmVsOiI2LTIwIix2YWx1ZToiNi0yMCJ9LHtsYWJlbDoiMjEtNTAiLHZhbHVlOiIyMS01MCJ9LHtsYWJlbDoiNTErIix2YWx1ZToiNTErIn1dfQogICAgICAgICAgcmVxdWlyZWQKICAgICAgICA+PC9kZWVzLWlucHV0LWRyb3Bkb3duPgogICAgICA8L2RlZXMtZm9ybT4KICAgIGAsbWVudU9wdGlvbnM6ZVEoKX0se3RpdGxlOiJHb2FscyIsY29udGVudDp3YAogICAgICA8ZGVlcy1mb3JtPgogICAgICAgIDxkZWVzLWlucHV0LW11bHRpdG9nZ2xlCiAgICAgICAgICBrZXk9ImdvYWwiCiAgICAgICAgICBsYWJlbD0iTWFpbiBvYmplY3RpdmUiCiAgICAgICAgICAub3B0aW9ucz0ke1t7bGFiZWw6Ik9uYm9hcmRpbmciLHZhbHVlOiJvbmJvYXJkaW5nIn0se2xhYmVsOiJBbmFseXRpY3MiLHZhbHVlOiJhbmFseXRpY3MifSx7bGFiZWw6IkF1dG9tYXRpb24iLHZhbHVlOiJhdXRvbWF0aW9uIn1dfQogICAgICAgICAgcmVxdWlyZWQKICAgICAgICA+PC9kZWVzLWlucHV0LW11bHRpdG9nZ2xlPgogICAgICA8L2RlZXMtZm9ybT4KICAgIGAsbWVudU9wdGlvbnM6ZVEoKX0se3RpdGxlOiJSZXZpZXcgJiBMYXVuY2giLGNvbnRlbnQ6d2AKICAgICAgPGRlZXMtcGFuZWw+CiAgICAgICAgPHA+CiAgICAgICAgICBZb3VyIHdvcmtzcGFjZSBpcyByZWFkeS4gUmV2aWV3IHRoZSBjb2xsZWN0ZWQgZGV0YWlscyBhbmQgbGF1bmNoIHdoZW4KICAgICAgICAgIHlvdSBhcmUgcmVhZHkgdG8gc3RhcnQuCiAgICAgICAgPC9wPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICBgLG1lbnVPcHRpb25zOlt7bmFtZToiTGF1bmNoIixhY3Rpb246aShhc3luYyBzPT57cz8ub3ZlcmxheSYmYXdhaXQgcy5kZXN0cm95KCl9LCJhY3Rpb24iKX1dfV0sImNyZWF0ZURlbW9TdGVwcyIpLFM1YT1pKCgpPT53YAogIDxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgaW5zZXQ6IDA7Ij4KICAgIDxkaXYKICAgICAgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxNnB4OyBsZWZ0OiA1MCU7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsgei1pbmRleDogMTA7IgogICAgPgogICAgICA8ZGVlcy1idXR0b24KICAgICAgICBAY2xpY2s9JHthc3luYygpPT57YXdhaXQgYXguY3JlYXRlQW5kU2hvdyh7c3RlcHM6azVhKCl9KX19CiAgICAgID5PcGVuIHN0ZXBwZXIgYXMgb3ZlcmxheTwvZGVlcy1idXR0b24+CiAgICA8L2Rpdj4KICAgIDxkZWVzLXN0ZXBwZXIgLnN0ZXBzPSR7azVhKCl9PjwvZGVlcy1zdGVwcGVyPgogIDwvZGl2PgpgLCJzdGVwcGVyRGVtbyIpfSk7dmFyIFloLE9uLGF4LGkxZT1nKCgpPT57cG8oKTtwZSgpO2t0KCk7XzVhKCk7cHQoKTtDcigpO3puKCk7RjEoKTtKMCgpO1VpdCgpO25yKCk7WWg9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LE9uPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxheD0oKCk9PntsZXQgcz1bbmUoImRlZXMtc3RlcHBlciIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdO3ZhciBIPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzU3RlcHBlciIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBrPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6QXJyYXl9KV0scD1bTCh7dHlwZTpPYmplY3R9KV0sYz1bTCh7dHlwZTpCb29sZWFuLHJlZmxlY3Q6ITB9KV0seD1bTCh7dHlwZTpCb29sZWFuLHJlZmxlY3Q6ITB9KV0seT1bTCh7dHlwZTpOdW1iZXIsYXR0cmlidXRlOiExfSldLE49W0woe3R5cGU6T2JqZWN0LGF0dHJpYnV0ZTohMX0pXSxPPVtMKHt0eXBlOkJvb2xlYW4sYXR0cmlidXRlOiExfSldLFloKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic3RlcHMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+InN0ZXBzImluIFMsImhhcyIpLGdldDppKFM9PlMuc3RlcHMsImdldCIpLHNldDppKChTLEkpPT57Uy5zdGVwcz1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LG8sbCksWWgodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWxlY3RlZFN0ZXAiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+InNlbGVjdGVkU3RlcCJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLnNlbGVjdGVkU3RlcCwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLnNlbGVjdGVkU3RlcD1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LGQsdSksWWgodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJvdmVybGF5IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJvdmVybGF5ImluIFMsImhhcyIpLGdldDppKFM9PlMub3ZlcmxheSwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLm92ZXJsYXk9SX0sInNldCIpfSxtZXRhZGF0YTprfSxiLHYpLFloKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY2FuY2VsYWJsZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4iY2FuY2VsYWJsZSJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLmNhbmNlbGFibGUsImdldCIpLHNldDppKChTLEkpPT57Uy5jYW5jZWxhYmxlPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sbSxmKSxZaCh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InN0ZXBwZXJaSW5kZXgiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+InN0ZXBwZXJaSW5kZXgiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5zdGVwcGVyWkluZGV4LCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1Muc3RlcHBlclpJbmRleD1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LE0seiksWWgodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJhY3RpdmVGb3JtIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJhY3RpdmVGb3JtImluIFMsImhhcyIpLGdldDppKFM9PlMuYWN0aXZlRm9ybSwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLmFjdGl2ZUZvcm09SX0sInNldCIpfSxtZXRhZGF0YTprfSxDLF8pLFloKHRoaXMsbnVsbCxPLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYWN0aXZlRm9ybVZhbGlkIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJhY3RpdmVGb3JtVmFsaWQiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5hY3RpdmVGb3JtVmFsaWQsImdldCIpLHNldDppKChTLEkpPT57Uy5hY3RpdmVGb3JtVmFsaWQ9SX0sInNldCIpfSxtZXRhZGF0YTprfSwkLEUpLFloKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOmt9LG51bGwsdCksSD1hPWUudmFsdWUsayYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTprfSl9c3RhdGljIGRlbW89UzVhO3N0YXRpYyBkZW1vR3JvdXBzPVsiTGF5b3V0IiwiRm9ybSJdO3N0YXRpYyBhc3luYyBjcmVhdGVBbmRTaG93KGspe2xldCBTPWRvY3VtZW50LmJvZHksST1uZXcgSDtyZXR1cm4gSS5zdGVwcz1rLnN0ZXBzLEkub3ZlcmxheT0hMCxrLmNhbmNlbGFibGUhPT12b2lkIDAmJihJLmNhbmNlbGFibGU9ay5jYW5jZWxhYmxlKSxJLndpbmRvd0xheWVyPWF3YWl0IGhvLmNyZWF0ZUFuZFNob3coe2JsdXI6ITB9KSxTLmFwcGVuZChJLndpbmRvd0xheWVyKSxTLmFwcGVuZChJKSxJLnN0ZXBwZXJaSW5kZXg9eGEuZ2V0TmV4dFpJbmRleCgpLHhhLnJlZ2lzdGVyKEksSS5zdGVwcGVyWkluZGV4KSxJfSNlPU9uKHRoaXMsbyxbXSk7Z2V0IHN0ZXBzKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHN0ZXBzKGspe3RoaXMuI2U9a30jdD0oT24odGhpcyxsKSxPbih0aGlzLGQsdm9pZCAwKSk7Z2V0IHNlbGVjdGVkU3RlcCgpe3JldHVybiB0aGlzLiN0fXNldCBzZWxlY3RlZFN0ZXAoayl7dGhpcy4jdD1rfSNhPShPbih0aGlzLHUpLE9uKHRoaXMsYiwhMSkpO2dldCBvdmVybGF5KCl7cmV0dXJuIHRoaXMuI2F9c2V0IG92ZXJsYXkoayl7dGhpcy4jYT1rfSNzPShPbih0aGlzLHYpLE9uKHRoaXMsbSwhMCkpO2dldCBjYW5jZWxhYmxlKCl7cmV0dXJuIHRoaXMuI3N9c2V0IGNhbmNlbGFibGUoayl7dGhpcy4jcz1rfSNpPShPbih0aGlzLGYpLE9uKHRoaXMsTSwxZTMpKTtnZXQgc3RlcHBlclpJbmRleCgpe3JldHVybiB0aGlzLiNpfXNldCBzdGVwcGVyWkluZGV4KGspe3RoaXMuI2k9a30jcj0oT24odGhpcyx6KSxPbih0aGlzLEMsbnVsbCkpO2dldCBhY3RpdmVGb3JtKCl7cmV0dXJuIHRoaXMuI3J9c2V0IGFjdGl2ZUZvcm0oayl7dGhpcy4jcj1rfSNvPShPbih0aGlzLF8pLE9uKHRoaXMsJCwhMCkpO2dldCBhY3RpdmVGb3JtVmFsaWQoKXtyZXR1cm4gdGhpcy4jb31zZXQgYWN0aXZlRm9ybVZhbGlkKGspe3RoaXMuI289a31hY3RpdmVGb3JtU3Vic2NyaXB0aW9uPU9uKHRoaXMsRSk7d2luZG93TGF5ZXI7Y29uc3RydWN0b3IoKXtzdXBlcigpfXN0YXRpYyBzdHlsZXM9W0hlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICAvKiBUT0RPOiBNaWdyYXRlIGhhcmRjb2RlZCB2YWx1ZXMgdG8gLS1kZWVzLSogQ1NTIHZhcmlhYmxlcyAqLwogICAgICA6aG9zdCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBmb250LWZhbWlseTogJHtOYX07CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgfQoKICAgICAgLyoKICAgICAgICogSW4gb3ZlcmxheSBtb2RlIHRoZSBob3N0IGlzICJ0cmFuc3BhcmVudCIgdG8gbGF5b3V0IOKAlCB0aGUgaW5uZXIKICAgICAgICogLnN0ZXBwZXJDb250YWluZXIub3ZlcmxheSBpcyB3aGF0IHBpbnMgdG8gdGhlIHZpZXdwb3J0IGFuZCBjYXJyaWVzIHRoZQogICAgICAgKiB6LWluZGV4LiBLZWVwaW5nIDpob3N0IHVucG9zaXRpb25lZCBhdm9pZHMgbmVzdGluZyB0aGUgc3RhY2tpbmcgY29udGV4dAogICAgICAgKiB1bmRlciBhbiBhdXRvLXotaW5kZXggcGFyZW50ICh3aGljaCB3YXMgdHJhcHBpbmcgLnN0ZXBwZXJDb250YWluZXIKICAgICAgICogYmVsb3cgRGVlc1dpbmRvd0xheWVyJ3Mgc2libGluZyBsYXllcnMpLiBUaGlzIG1pcnJvcnMgaG93IGRlZXMtbW9kYWwKICAgICAgICoga2VlcHMgaXRzIG93biA6aG9zdCB1bnBvc2l0aW9uZWQgYW5kIGxldHMgLm1vZGFsQ29udGFpbmVyIGRyaXZlIGxheW91dC4KICAgICAgICovCiAgICAgIDpob3N0KFtvdmVybGF5XSkgewogICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7CiAgICAgICAgd2lkdGg6IDA7CiAgICAgICAgaGVpZ2h0OiAwOwogICAgICB9CgogICAgICAuc3RlcHBlckNvbnRhaW5lciB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAuc3RlcHBlckNvbnRhaW5lci5vdmVybGF5IHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgd2lkdGg6IDEwMHZ3OwogICAgICAgIGhlaWdodDogMTAwdmg7CiAgICAgIH0KCiAgICAgIC8qIEV4aXQgYW5pbWF0aW9uIOKAlCByZXZlcnNlIG9mIHRoZSBlbnRyeS4gVGlsZXMgc2xpZGUgRE9XTiArIGZhZGUgb3V0LAogICAgICAgICBtaXJyb3JpbmcgdGhlIC5lbnRyYW5jZSBzbGlkZS11cC4gVGhlIHRyYW5zaXRpb24gb3ZlcnJpZGUgaXMgbmVlZGVkCiAgICAgICAgIGJlY2F1c2UgZGVlcy10aWxlLnN0ZXAgaGFzIGl0cyBvd24gMC43cyB0cmFuc2l0aW9uIGZvciBzdGVwIHNlbGVjdGlvbgogICAgICAgICB3aGljaCB3b3VsZCBvdGhlcndpc2UgbWFrZSB0aGUgZXhpdCBzbHVnZ2lzaC4gKi8KICAgICAgLnN0ZXBwZXJDb250YWluZXIucHJlZGVzdHJveSBkZWVzLXRpbGUuc3RlcCB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDE2cHgpOwogICAgICAgIGZpbHRlcjogb3BhY2l0eSgwKTsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4yNXMsIGZpbHRlciAwLjJzOwogICAgICB9CgogICAgICBkZWVzLXRpbGUuc3RlcCB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIG1heC13aWR0aDogNTAwcHg7CiAgICAgICAgbWluLWhlaWdodDogMzAwcHg7CiAgICAgICAgbWFyZ2luOiBhdXRvOwogICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgICAgZmlsdGVyOiBvcGFjaXR5KDAuNTUpIHNhdHVyYXRlKDAuODUpOwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjdzIGN1YmljLWJlemllcigwLjg3LCAwLCAwLjEzLCAxKSwgZmlsdGVyIDAuN3MgY3ViaWMtYmV6aWVyKDAuODcsIDAsIDAuMTMsIDEpOwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICB9CgogICAgICBkZWVzLXRpbGUuc3RlcC5zZWxlY3RlZCB7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IGFsbDsKICAgICAgICBmaWx0ZXI6IG9wYWNpdHkoMSkgc2F0dXJhdGUoMSk7CiAgICAgICAgdXNlci1zZWxlY3Q6IGF1dG87CiAgICAgIH0KCiAgICAgIGRlZXMtdGlsZS5zdGVwLmhpZGRlblN0ZXAgewogICAgICAgIGZpbHRlcjogb3BhY2l0eSgwKTsKICAgICAgfQoKICAgICAgZGVlcy10aWxlLnN0ZXAuZW50cmFuY2UgewogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjM1cyBlYXNlLCBmaWx0ZXIgMC4zNXMgZWFzZTsKICAgICAgfQoKICAgICAgZGVlcy10aWxlLnN0ZXAuZW50cmFuY2UuaGlkZGVuU3RlcCB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDE2cHgpOwogICAgICB9CgogICAgICBkZWVzLXRpbGUuc3RlcDpsYXN0LWNoaWxkIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMDB2aDsKICAgICAgfQoKICAgICAgLnN0ZXBwZXJDb250YWluZXIub3ZlcmxheSBkZWVzLXRpbGUuc3RlcDo6cGFydChvdXRlcikgewogICAgICAgIGJveC1zaGFkb3c6CiAgICAgICAgICAwIDAgMCAxcHggJHtoLmJkVGhlbWUoImhzbCgwIDAlIDAlIC8gMC4wMykiLCJoc2woMCAwJSAxMDAlIC8gMC4wMykiKX0sCiAgICAgICAgICAwIDhweCA0MHB4ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAwJSAvIDAuMTIpIiwiaHNsKDAgMCUgMCUgLyAwLjUpIil9LAogICAgICAgICAgMCAycHggOHB4ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAwJSAvIDAuMDYpIiwiaHNsKDAgMCUgMCUgLyAwLjI1KSIpfTsKICAgICAgfQoKICAgICAgLnN0ZXAtaGVhZGVyIHsKICAgICAgICBoZWlnaHQ6IDM2cHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBwYWRkaW5nOiAwIDhweCAwIDEycHg7CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICB9CgogICAgICAuZ29CYWNrLXNwYWNlciB7CiAgICAgICAgd2lkdGg6IDFweDsKICAgICAgfQoKICAgICAgLnN0ZXAtaGVhZGVyIC5nb0JhY2sgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgaGVpZ2h0OiAyNHB4OwogICAgICAgIHBhZGRpbmc6IDAgOHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xNXMgZWFzZSwgY29sb3IgMC4xNXMgZWFzZSwgdHJhbnNmb3JtIDAuMnMgZWFzZTsKICAgICAgfQoKICAgICAgLnN0ZXAtaGVhZGVyIC5nb0JhY2s6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItaG92ZXIpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTJweCk7CiAgICAgIH0KCiAgICAgIC5zdGVwLWhlYWRlciAuZ29CYWNrOmFjdGl2ZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDkwJSkiLCJoc2woMCAwJSAxNSUpIil9OwogICAgICB9CgogICAgICAuc3RlcC1oZWFkZXIgLmdvQmFjayBzcGFuIHsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlOwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQoKICAgICAgLnN0ZXAtaGVhZGVyIC5nb0JhY2s6aG92ZXIgc3BhbiB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0ycHgpOwogICAgICB9CgogICAgICAuc3RlcC1oZWFkZXIgLnN0ZXBDb3VudGVyIHsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTsKICAgICAgICBwYWRkaW5nOiAwIDhweDsKICAgICAgfQoKICAgICAgLnN0ZXAtYm9keSAudGl0bGUgewogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBwYWRkaW5nLXRvcDogMzJweDsKICAgICAgICBmb250LWZhbWlseTogJ0dlaXN0IFNhbnMnLCBzYW5zLXNlcmlmOwogICAgICAgIGZvbnQtc2l6ZTogMjRweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICAgIGNvbG9yOiBpbmhlcml0OwogICAgICB9CgogICAgICAuc3RlcC1ib2R5IC5jb250ZW50IHsKICAgICAgICBwYWRkaW5nOiAzMnB4OwogICAgICB9CgogICAgICAuc3RlcC1ib2R5IC5jb250ZW50LndpdGhQcm9ncmVzc1N0ZXAgewogICAgICAgIHBhZGRpbmctdG9wOiAyMHB4OwogICAgICB9CgogICAgICAucHJvZ3Jlc3NTdGVwIHsKICAgICAgICBwYWRkaW5nOiAwIDI0cHg7CiAgICAgIH0KCiAgICAgIC8qIC0tLSBGb290ZXI6IG1vZGFsLXN0eWxlIGJvdHRvbSBidXR0b25zIC0tLSAqLwogICAgICAuYm90dG9tQnV0dG9ucyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDA7CiAgICAgICAgaGVpZ2h0OiAzNnB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgIC5ib3R0b21CdXR0b25zIC5ib3R0b21CdXR0b24gewogICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC8qIEJvcmRlci1sZWZ0IHNlcGFyYXRvciBvbiBldmVyeSBidXR0b24gRVhDRVBUIHRoZSBmaXJzdCBvbmUuCiAgICAgICAgIFVzZXMgZ2VuZXJhbCBzaWJsaW5nIHNvIHRoZSBzdGVwSGludCAoaWYgcmVuZGVyZWQgb24gdGhlIGxlZnQpIGRvZXMKICAgICAgICAgbm90IHNoaWZ0IHdoaWNoIGJ1dHRvbiBjb3VudHMgYXMgImZpcnN0IiBhbmQgY3JlYXRlIGEgcGhhbnRvbSBib3JkZXIuICovCiAgICAgIC5ib3R0b21CdXR0b25zIC5ib3R0b21CdXR0b24gfiAuYm90dG9tQnV0dG9uIHsKICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLXN1YnRsZSk7CiAgICAgIH0KCiAgICAgIC5ib3R0b21CdXR0b25zIC5ib3R0b21CdXR0b246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItaG92ZXIpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIH0KCiAgICAgIC5ib3R0b21CdXR0b25zIC5ib3R0b21CdXR0b246YWN0aXZlIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTIlKSIsImhzbCgwIDAlIDEzJSkiKX07CiAgICAgIH0KCiAgICAgIC5ib3R0b21CdXR0b25zIC5ib3R0b21CdXR0b24ucHJpbWFyeSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE3LjIgOTEuMiUgNTkuOCUpIiwiaHNsKDIxMy4xIDkzLjklIDY3LjglKSIpfTsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICB9CgogICAgICAuYm90dG9tQnV0dG9ucyAuYm90dG9tQnV0dG9uLnByaW1hcnk6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjE3LjIgOTEuMiUgNTkuOCUgLyAwLjA4KSIsImhzbCgyMTMuMSA5My45JSA2Ny44JSAvIDAuMDgpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNy4yIDkxLjIlIDUwJSkiLCJoc2woMjEzLjEgOTMuOSUgNzUlKSIpfTsKICAgICAgfQoKICAgICAgLmJvdHRvbUJ1dHRvbnMgLmJvdHRvbUJ1dHRvbi5wcmltYXJ5OmFjdGl2ZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTcuMiA5MS4yJSA1OS44JSAvIDAuMTIpIiwiaHNsKDIxMy4xIDkzLjklIDY3LjglIC8gMC4xMikiKX07CiAgICAgIH0KCiAgICAgIC5ib3R0b21CdXR0b25zIC5ib3R0b21CdXR0b24uZGlzYWJsZWQgewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIG9wYWNpdHk6IDAuNDsKICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICB9CgogICAgICAuYm90dG9tQnV0dG9ucyAuYm90dG9tQnV0dG9uLmRpc2FibGVkOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgfQoKICAgICAgLyogSGludCBzaG93biBvbiB0aGUgbGVmdCBvZiB0aGUgZm9vdGVyIHdoZW4gdGhlIGFjdGl2ZSBzdGVwJ3MgZm9ybSBoYXMKICAgICAgICAgdW5maWxsZWQgcmVxdWlyZWQgZmllbGRzLiBVc2VzIG1hcmdpbi1yaWdodDogYXV0byB0byBwdXNoIHJpZ2h0LWFsaWduZWQKICAgICAgICAgYnV0dG9ucyB0byB0aGUgcmlnaHQgd2hpbGUga2VlcGluZyB0aGUgaGludCBmbHVzaC1sZWZ0LiAqLwogICAgICAuYm90dG9tQnV0dG9ucyAuc3RlcEhpbnQgewogICAgICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgICAgICBwYWRkaW5nOiAwIDE2cHg7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkaXYKICAgICAgICBjbGFzcz0ic3RlcHBlckNvbnRhaW5lciAke3RoaXMub3ZlcmxheT8ib3ZlcmxheSI6IiJ9IgogICAgICAgIHN0eWxlPSR7dGhpcy5vdmVybGF5P2B6LWluZGV4OiAke3RoaXMuc3RlcHBlclpJbmRleH07YDoiIn0KICAgICAgICBAY2xpY2s9JHt0aGlzLmhhbmRsZU91dHNpZGVDbGlja30KICAgICAgPgogICAgICAgICR7dGhpcy5zdGVwcy5tYXAoKGssUyk9PntsZXQgST1rPT09dGhpcy5zZWxlY3RlZFN0ZXAsUD10aGlzLmdldEluZGV4T2ZTdGVwKGspPnRoaXMuZ2V0SW5kZXhPZlN0ZXAodGhpcy5zZWxlY3RlZFN0ZXApLFI9Uz09PTAsSz1rLnByb2dyZXNzU3RlcD90aGlzLmdldFByb2dyZXNzU3RlcFN0YXRlKGspOm51bGw7cmV0dXJuIHdgPGRlZXMtdGlsZQogICAgICAgICAgICBjbGFzcz0ic3RlcCAke0k/InNlbGVjdGVkIjoiIn0gJHtQPyJoaWRkZW5TdGVwIjoiIn0gJHtSPyJlbnRyYW5jZSI6IiJ9IgogICAgICAgICAgPgogICAgICAgICAgICA8ZGl2IHNsb3Q9ImhlYWRlciIgY2xhc3M9InN0ZXAtaGVhZGVyIj4KICAgICAgICAgICAgICAke1I/d2A8ZGl2IGNsYXNzPSJnb0JhY2stc3BhY2VyIj48L2Rpdj5gOndgPGRpdiBjbGFzcz0iZ29CYWNrIiBAY2xpY2s9JHt0aGlzLmdvQmFja30+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBJbnRlciI+PC08L3NwYW4+IGdvIHRvIHByZXZpb3VzIHN0ZXAKICAgICAgICAgICAgICAgICAgPC9kaXY+YH0KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGVwQ291bnRlciI+CiAgICAgICAgICAgICAgICBTdGVwICR7UysxfSBvZiAke3RoaXMuc3RlcHMubGVuZ3RofQogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RlcC1ib2R5Ij4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+JHtrLnRpdGxlfTwvZGl2PgogICAgICAgICAgICAgICR7ay5wcm9ncmVzc1N0ZXAmJks/d2AKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzU3RlcCI+CiAgICAgICAgICAgICAgICAgIDxkZWVzLXByb2dyZXNzYmFyCiAgICAgICAgICAgICAgICAgICAgLmxhYmVsPSR7Sy5sYWJlbD8/ay50aXRsZX0KICAgICAgICAgICAgICAgICAgICAucGVyY2VudGFnZT0ke0sucGVyY2VudGFnZT8/MH0KICAgICAgICAgICAgICAgICAgICAuaW5kZXRlcm1pbmF0ZT0ke0suaW5kZXRlcm1pbmF0ZT8/ITF9CiAgICAgICAgICAgICAgICAgICAgLnNob3dQZXJjZW50YWdlPSR7Sy5zaG93UGVyY2VudGFnZT8/ITB9CiAgICAgICAgICAgICAgICAgICAgLnN0YXR1c1RleHQ9JHtLLnN0YXR1c1RleHQ/PyIifQogICAgICAgICAgICAgICAgICAgIC50ZXJtaW5hbExpbmVzPSR7Sy50ZXJtaW5hbExpbmVzPz9bXX0KICAgICAgICAgICAgICAgICAgICAuc3RhdHVzUm93cz0ke0suc3RhdHVzUm93cz8/M30KICAgICAgICAgICAgICAgICAgPjwvZGVlcy1wcm9ncmVzc2Jhcj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCAke2sucHJvZ3Jlc3NTdGVwPyJ3aXRoUHJvZ3Jlc3NTdGVwIjoiIn0iPiR7ay5jb250ZW50fTwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBzbG90PSJmb290ZXIiIGNsYXNzPSJib3R0b21CdXR0b25zIj4KICAgICAgICAgICAgICAke0kmJnRoaXMuYWN0aXZlRm9ybSE9PW51bGwmJiF0aGlzLmFjdGl2ZUZvcm1WYWxpZD93YDxkaXYgY2xhc3M9InN0ZXBIaW50Ij5Db21wbGV0ZSBmb3JtIHRvIGNvbnRpbnVlPC9kaXY+YDoiIn0KICAgICAgICAgICAgICAke3RoaXMuY2FuY2VsYWJsZT93YDxkaXYKICAgICAgICAgICAgICAgICAgICBjbGFzcz0iYm90dG9tQnV0dG9uIgogICAgICAgICAgICAgICAgICAgIEBjbGljaz0keygpPT50aGlzLmhhbmRsZUNhbmNlbFJlcXVlc3QoKX0KICAgICAgICAgICAgICAgICAgPkNhbmNlbDwvZGl2PmA6IiJ9CiAgICAgICAgICAgICAgJHtrLm1lbnVPcHRpb25zPy5tYXAoKFYsVyk9PntsZXQgbWU9Vz09PWsubWVudU9wdGlvbnMubGVuZ3RoLTEsQj1tZSYmdGhpcy5hY3RpdmVGb3JtIT09bnVsbCYmIXRoaXMuYWN0aXZlRm9ybVZhbGlkO3JldHVybiB3YAogICAgICAgICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImJvdHRvbUJ1dHRvbiAke21lPyJwcmltYXJ5IjoiIn0gJHtCPyJkaXNhYmxlZCI6IiJ9IgogICAgICAgICAgICAgICAgICAgIEBjbGljaz0keygpPT50aGlzLmhhbmRsZU1lbnVPcHRpb25DbGljayhWLG1lKX0KICAgICAgICAgICAgICAgICAgPiR7Vi5uYW1lfTwvZGl2PgogICAgICAgICAgICAgICAgYH0pPz8iIn0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2RlZXMtdGlsZT5gfSl9CiAgICAgIDwvZGl2PgogICAgYH1nZXRJbmRleE9mU3RlcD1pKGs9PnRoaXMuc3RlcHMuZmluZEluZGV4KFM9Pms9PT1TKSwiZ2V0SW5kZXhPZlN0ZXAiKTthc3luYyBmaXJzdFVwZGF0ZWQoKXthd2FpdCB0aGlzLmRvbXRvb2xzUHJvbWlzZSxhd2FpdCB0aGlzLmRvbXRvb2xzLmNvbnZlbmllbmNlLnNtYXJ0ZGVsYXkuZGVsYXlGb3IoMCksdGhpcy5zdGVwcy5sZW5ndGgmJih0aGlzLnByZXBhcmVTdGVwRm9yQWN0aXZhdGlvbih0aGlzLnN0ZXBzWzBdKSx0aGlzLnNlbGVjdGVkU3RlcD10aGlzLnN0ZXBzWzBdLGF3YWl0IHRoaXMudXBkYXRlQ29tcGxldGUsYXdhaXQgdGhpcy5zZXRTY3JvbGxTdGF0dXMoKSxhd2FpdCB0aGlzLmRvbXRvb2xzLmNvbnZlbmllbmNlLnNtYXJ0ZGVsYXkuZGVsYXlGb3IoMzUwKSx0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLnN0ZXAuZW50cmFuY2UiKT8uY2xhc3NMaXN0LnJlbW92ZSgiZW50cmFuY2UiKSl9YXN5bmMgdXBkYXRlZChrKXshay5oYXMoInNlbGVjdGVkU3RlcCIpJiYhay5oYXMoInN0ZXBzIil8fGF3YWl0IHRoaXMuc2V0U2Nyb2xsU3RhdHVzKCl9c2Nyb2xsZXI7YXN5bmMgc2V0U2Nyb2xsU3RhdHVzKCl7bGV0IGs9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5zdGVwcGVyQ29udGFpbmVyIiksUz10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLnNlbGVjdGVkIik7aWYoIVMpcmV0dXJuO3RoaXMuc2NhbkFjdGl2ZUZvcm0oUyksay5zdHlsZS5wYWRkaW5nVG9wfHwoay5zdHlsZS5wYWRkaW5nVG9wPWAke2sub2Zmc2V0SGVpZ2h0LzItUy5vZmZzZXRIZWlnaHQvMn1weGApO2xldCBJPVMub2Zmc2V0VG9wLWsub2Zmc2V0SGVpZ2h0LzIrUy5vZmZzZXRIZWlnaHQvMjthd2FpdCBqaS5zZXR1cERvbVRvb2xzKCksdGhpcy5zY3JvbGxlcnx8KHRoaXMuc2Nyb2xsZXI9bmV3IHV0LlN3ZWV0U2Nyb2xsKHt2ZXJ0aWNhbDohMCxob3Jpem9udGFsOiExLGVhc2luZzoiZWFzZUluT3V0RXhwbyIsZHVyYXRpb246NzAwfSxrKSksIXRoaXMuc2VsZWN0ZWRTdGVwLnZhbGlkYXRpb25GdW5jQ2FsbGVkJiZ0aGlzLnNlbGVjdGVkU3RlcC52YWxpZGF0aW9uRnVuYyYmKHRoaXMuc2VsZWN0ZWRTdGVwLmFib3J0Q29udHJvbGxlcj1uZXcgQWJvcnRDb250cm9sbGVyLHRoaXMuc2VsZWN0ZWRTdGVwLnZhbGlkYXRpb25GdW5jQ2FsbGVkPSEwLHRoaXMucnVuU3RlcFZhbGlkYXRpb24odGhpcy5zZWxlY3RlZFN0ZXAsUyx0aGlzLnNlbGVjdGVkU3RlcC5hYm9ydENvbnRyb2xsZXIuc2lnbmFsKSksdGhpcy5zY3JvbGxlci50byhJKX1hc3luYyBnb0JhY2soKXtsZXQgaz10aGlzLnN0ZXBzLmZpbmRJbmRleChQPT5QPT09dGhpcy5zZWxlY3RlZFN0ZXApO2lmKGs8PTApcmV0dXJuO3RoaXMuc2VsZWN0ZWRTdGVwLmFib3J0Q29udHJvbGxlciYmdGhpcy5zZWxlY3RlZFN0ZXAuYWJvcnRDb250cm9sbGVyLmFib3J0KCk7bGV0IFM9dGhpcy5zdGVwc1trXTtTLnZhbGlkYXRpb25GdW5jQ2FsbGVkPSExO2xldCBJPXRoaXMuc3RlcHNbay0xXTtJLnZhbGlkYXRpb25GdW5jQ2FsbGVkPSExLHRoaXMucHJlcGFyZVN0ZXBGb3JBY3RpdmF0aW9uKEkpLHRoaXMuc2VsZWN0ZWRTdGVwPUksYXdhaXQgdGhpcy5kb210b29sc1Byb21pc2UsYXdhaXQgdGhpcy5kb210b29scy5jb252ZW5pZW5jZS5zbWFydGRlbGF5LmRlbGF5Rm9yKDEwMCksdGhpcy5zZWxlY3RlZFN0ZXAub25SZXR1cm5Ub1N0ZXBGdW5jPy4odGhpcyx0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLnNlbGVjdGVkIikpfWdvTmV4dCgpe2xldCBrPXRoaXMuc3RlcHMuZmluZEluZGV4KFA9PlA9PT10aGlzLnNlbGVjdGVkU3RlcCk7aWYoazwwfHxrPj10aGlzLnN0ZXBzLmxlbmd0aC0xKXJldHVybjt0aGlzLnNlbGVjdGVkU3RlcC5hYm9ydENvbnRyb2xsZXImJnRoaXMuc2VsZWN0ZWRTdGVwLmFib3J0Q29udHJvbGxlci5hYm9ydCgpO2xldCBTPXRoaXMuc3RlcHNba107Uy52YWxpZGF0aW9uRnVuY0NhbGxlZD0hMTtsZXQgST10aGlzLnN0ZXBzW2srMV07SS52YWxpZGF0aW9uRnVuY0NhbGxlZD0hMSx0aGlzLnByZXBhcmVTdGVwRm9yQWN0aXZhdGlvbihJKSx0aGlzLnNlbGVjdGVkU3RlcD1JfXJlc2V0UHJvZ3Jlc3NTdGVwKGs9dGhpcy5zZWxlY3RlZFN0ZXApe2s/LnByb2dyZXNzU3RlcCYmKGsucHJvZ3Jlc3NTdGVwU3RhdGU9dGhpcy5jcmVhdGVJbml0aWFsUHJvZ3Jlc3NTdGVwU3RhdGUoayksdGhpcy5yZXF1ZXN0VXBkYXRlKCkpfXVwZGF0ZVByb2dyZXNzU3RlcChrLFM9dGhpcy5zZWxlY3RlZFN0ZXApe2lmKCFTPy5wcm9ncmVzc1N0ZXApcmV0dXJuO2xldCBJPXRoaXMuZ2V0UHJvZ3Jlc3NTdGVwU3RhdGUoUyk7Uy5wcm9ncmVzc1N0ZXBTdGF0ZT17Li4uSSwuLi5rLHRlcm1pbmFsTGluZXM6ay50ZXJtaW5hbExpbmVzP1suLi5rLnRlcm1pbmFsTGluZXNdOlsuLi5JLnRlcm1pbmFsTGluZXM/P1tdXX0sdGhpcy5yZXF1ZXN0VXBkYXRlKCl9YXBwZW5kUHJvZ3Jlc3NTdGVwTGluZShrLFM9dGhpcy5zZWxlY3RlZFN0ZXApe2lmKCFTPy5wcm9ncmVzc1N0ZXApcmV0dXJuO2xldCBJPXRoaXMuZ2V0UHJvZ3Jlc3NTdGVwU3RhdGUoUyk7dGhpcy51cGRhdGVQcm9ncmVzc1N0ZXAoe3Rlcm1pbmFsTGluZXM6Wy4uLkkudGVybWluYWxMaW5lcz8/W10sa119LFMpfXNjYW5BY3RpdmVGb3JtKGspe2xldCBTPWsucXVlcnlTZWxlY3RvcigiZGVlcy1mb3JtIik7aWYoUz09PXRoaXMuYWN0aXZlRm9ybSl7dGhpcy5yZWNvbXB1dGVGb3JtVmFsaWQoKTtyZXR1cm59aWYodGhpcy5hY3RpdmVGb3JtU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpLHRoaXMuYWN0aXZlRm9ybVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5hY3RpdmVGb3JtPVMsIVMpe3RoaXMuYWN0aXZlRm9ybVZhbGlkPSEwO3JldHVybn10aGlzLnJlY29tcHV0ZUZvcm1WYWxpZCgpLHRoaXMuYWN0aXZlRm9ybVN1YnNjcmlwdGlvbj1TLmNoYW5nZVN1YmplY3Quc3Vic2NyaWJlKCgpPT57dGhpcy5yZWNvbXB1dGVGb3JtVmFsaWQoKX0pfXJlY29tcHV0ZUZvcm1WYWxpZCgpe2xldCBrPXRoaXMuYWN0aXZlRm9ybTtpZighayl7dGhpcy5hY3RpdmVGb3JtVmFsaWQ9ITA7cmV0dXJufWxldCBTPWsuZ2V0Rm9ybUVsZW1lbnRzKCk7dGhpcy5hY3RpdmVGb3JtVmFsaWQ9Uy5ldmVyeShJPT4hSS5yZXF1aXJlZHx8SS52YWx1ZSE9PW51bGwmJkkudmFsdWUhPT12b2lkIDAmJkkudmFsdWUhPT0iIil9YXN5bmMgaGFuZGxlTWVudU9wdGlvbkNsaWNrKGssUyl7bGV0IEk9dGhpcy5hY3RpdmVGb3JtO2lmKFMmJkkpe2lmKCF0aGlzLmFjdGl2ZUZvcm1WYWxpZClyZXR1cm47YXdhaXQgbmV3IFByb21pc2UoUD0+e0kuYWRkRXZlbnRMaXN0ZW5lcigiZm9ybURhdGEiLCgpPT5QKCkse29uY2U6ITB9KSxJLmdhdGhlckFuZERpc3BhdGNoKCl9KX1hd2FpdCBrLmFjdGlvbih0aGlzKX1nZXRQcm9ncmVzc1N0ZXBTdGF0ZShrKXtyZXR1cm4gay5wcm9ncmVzc1N0ZXA/KGsucHJvZ3Jlc3NTdGVwU3RhdGV8fChrLnByb2dyZXNzU3RlcFN0YXRlPXRoaXMuY3JlYXRlSW5pdGlhbFByb2dyZXNzU3RlcFN0YXRlKGspKSxrLnByb2dyZXNzU3RlcFN0YXRlKTp7fX1jcmVhdGVJbml0aWFsUHJvZ3Jlc3NTdGVwU3RhdGUoayl7cmV0dXJue2xhYmVsOmsucHJvZ3Jlc3NTdGVwPy5sYWJlbD8/ay50aXRsZSxwZXJjZW50YWdlOmsucHJvZ3Jlc3NTdGVwPy5wZXJjZW50YWdlPz8wLGluZGV0ZXJtaW5hdGU6ay5wcm9ncmVzc1N0ZXA/LmluZGV0ZXJtaW5hdGU/PyExLHNob3dQZXJjZW50YWdlOmsucHJvZ3Jlc3NTdGVwPy5zaG93UGVyY2VudGFnZT8/ITAsc3RhdHVzVGV4dDprLnByb2dyZXNzU3RlcD8uc3RhdHVzVGV4dD8/IiIsdGVybWluYWxMaW5lczpbLi4uay5wcm9ncmVzc1N0ZXA/LnRlcm1pbmFsTGluZXM/P1tdXSxzdGF0dXNSb3dzOmsucHJvZ3Jlc3NTdGVwPy5zdGF0dXNSb3dzPz8zfX1wcmVwYXJlU3RlcEZvckFjdGl2YXRpb24oayl7az8ucHJvZ3Jlc3NTdGVwJiYoay5wcm9ncmVzc1N0ZXBTdGF0ZT10aGlzLmNyZWF0ZUluaXRpYWxQcm9ncmVzc1N0ZXBTdGF0ZShrKSl9YXN5bmMgcnVuU3RlcFZhbGlkYXRpb24oayxTLEkpe3RyeXtpZihhd2FpdCBrLnZhbGlkYXRpb25GdW5jPy4odGhpcyxTLEkpLEkuYWJvcnRlZClyZXR1cm47ay5wcm9ncmVzc1N0ZXAmJmsucHJvZ3Jlc3NTdGVwLmF1dG9BZHZhbmNlIT09ITEmJnRoaXMuc2VsZWN0ZWRTdGVwPT09ayYmdGhpcy5nb05leHQoKX1jYXRjaChQKXtpZihJLmFib3J0ZWQpcmV0dXJuO2lmKGsucHJvZ3Jlc3NTdGVwKXtsZXQgUj1QIGluc3RhbmNlb2YgRXJyb3I/UC5tZXNzYWdlOiJVbmV4cGVjdGVkIGVycm9yIjt0aGlzLmFwcGVuZFByb2dyZXNzU3RlcExpbmUoYEVycm9yOiAke1J9YCxrKSx0aGlzLnVwZGF0ZVByb2dyZXNzU3RlcCh7aW5kZXRlcm1pbmF0ZTohMSxzdGF0dXNUZXh0OlJ9LGspfWNvbnNvbGUuZXJyb3IoUCl9fWNhbmNlbENvbmZpcm1Nb2RhbDtoYW5kbGVPdXRzaWRlQ2xpY2soayl7aWYoIXRoaXMub3ZlcmxheXx8IXRoaXMuY2FuY2VsYWJsZSlyZXR1cm47ay5zdG9wUHJvcGFnYXRpb24oKTtsZXQgUz10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLnN0ZXBwZXJDb250YWluZXIiKTtrLnRhcmdldD09PVMmJnRoaXMuaGFuZGxlQ2FuY2VsUmVxdWVzdCgpfWFzeW5jIGhhbmRsZUNhbmNlbFJlcXVlc3QoKXt0aGlzLmNhbmNlbGFibGUmJih0aGlzLmNhbmNlbENvbmZpcm1Nb2RhbCYmdGhpcy5jYW5jZWxDb25maXJtTW9kYWwuaXNDb25uZWN0ZWR8fCh0aGlzLmNhbmNlbENvbmZpcm1Nb2RhbD12b2lkIDAsdGhpcy5jYW5jZWxDb25maXJtTW9kYWw9YXdhaXQgUWEuY3JlYXRlQW5kU2hvdyh7aGVhZGluZzoiQ2FuY2VsIHNldHVwPyIsd2lkdGg6InNtYWxsIixjb250ZW50OndgCiAgICAgICAgPHAgc3R5bGU9Im1hcmdpbjogMDsiPgogICAgICAgICAgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNhbmNlbD8gQW55IHByb2dyZXNzIG9uIHRoZSBjdXJyZW50IHN0ZXAgd2lsbCBiZSBsb3N0LgogICAgICAgIDwvcD4KICAgICAgYCxtZW51T3B0aW9uczpbe25hbWU6IkNvbnRpbnVlIHNldHVwIixhY3Rpb246aShhc3luYyBrPT57dGhpcy5jYW5jZWxDb25maXJtTW9kYWw9dm9pZCAwLGF3YWl0IGsuZGVzdHJveSgpfSwiYWN0aW9uIil9LHtuYW1lOiJZZXMsIGNhbmNlbCIsYWN0aW9uOmkoYXN5bmMgaz0+e3RoaXMuY2FuY2VsQ29uZmlybU1vZGFsPXZvaWQgMCxrLmRlc3Ryb3koKSxhd2FpdChhd2FpdCB0aGlzLmRvbXRvb2xzUHJvbWlzZSkuY29udmVuaWVuY2Uuc21hcnRkZWxheS5kZWxheUZvcigxMDApLGF3YWl0IHRoaXMuZGVzdHJveSgpfSwiYWN0aW9uIil9XX0pKSl9YXN5bmMgZGVzdHJveSgpe2xldCBrPWF3YWl0IHRoaXMuZG9tdG9vbHNQcm9taXNlLFM9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5zdGVwcGVyQ29udGFpbmVyIik7dGhpcy5zZWxlY3RlZFN0ZXA/LmFib3J0Q29udHJvbGxlciYmdGhpcy5zZWxlY3RlZFN0ZXAuYWJvcnRDb250cm9sbGVyLmFib3J0KCksUz8uY2xhc3NMaXN0LmFkZCgicHJlZGVzdHJveSIpLGF3YWl0IGsuY29udmVuaWVuY2Uuc21hcnRkZWxheS5kZWxheUZvcigyNTApLHRoaXMucGFyZW50RWxlbWVudCYmdGhpcy5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMpLHRoaXMud2luZG93TGF5ZXImJmF3YWl0IHRoaXMud2luZG93TGF5ZXIuZGVzdHJveSgpLHRoaXMuYWN0aXZlRm9ybVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKSx0aGlzLmFjdGl2ZUZvcm1TdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuYWN0aXZlRm9ybT1udWxsLHhhLnVucmVnaXN0ZXIodGhpcyl9c3RhdGlje09uKGEsdCl9fTtyZXR1cm4gSD1hfSkoKX0pO3ZhciBNNWE9ZygoKT0+e2kxZSgpfSk7dmFyIHo1YT1nKCgpPT57bnIoKX0pO3ZhciBDNWE9ZygoKT0+e082YSgpO3M1YSgpO2M1YSgpO2Q1YSgpO201YSgpO2c1YSgpO3k1YSgpO001YSgpO3o1YSgpfSk7dmFyIFQ1YSwkNWE9ZygoKT0+e3BlKCk7VDVhPWkoKCk9PndgCiAgPHN0eWxlPgogICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgcGFkZGluZzogNDhweDsKICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmOGY5ZmEiLCIjMGEwYTBhIil9OwogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICBnYXA6IDMycHg7CiAgICB9CgogICAgLnNlY3Rpb24gewogICAgICBtYXgtd2lkdGg6IDkwMHB4OwogICAgICB3aWR0aDogMTAwJTsKICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICB9CgogICAgLnNlY3Rpb24tdGl0bGUgewogICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICAgIH0KCiAgICAuc2VjdGlvbi1kZXNjcmlwdGlvbiB7CiAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgIH0KCiAgICBkZWVzLWltYWdlLXZpZXdlciB7CiAgICAgIGhlaWdodDogNDAwcHg7CiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzI3MjcyYSIpfTsKICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgfQoKICAgIC5jb21wYWN0IHsKICAgICAgaGVpZ2h0OiAyNTBweDsKICAgIH0KICA8L3N0eWxlPgoKICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+SlBFRyBJbWFnZSB3aXRoIFRvb2xiYXI8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1kZXNjcmlwdGlvbiI+QSBsYW5kc2NhcGUgcGhvdG8gd2l0aCB6b29tLCBwYW4sIGZpdCwgYW5kIGRvd25sb2FkIGNvbnRyb2xzLjwvZGl2PgogICAgICA8ZGVlcy1pbWFnZS12aWV3ZXIKICAgICAgICBzcmM9Imh0dHBzOi8vaW1hZ2VzLnVuc3BsYXNoLmNvbS9waG90by0xNTA2NzQ0MDM4MTM2LTQ2MjczODM0YjNmYj93PTEyMDAiCiAgICAgICAgYWx0PSJNb3VudGFpbiBsYW5kc2NhcGUiCiAgICAgID48L2RlZXMtaW1hZ2Utdmlld2VyPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPlBORyB3aXRoIFRyYW5zcGFyZW5jeTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj5UcmFuc3BhcmVudCBQTkcgZGlzcGxheWVkIG9uIGEgY2hlY2tlcmJvYXJkIGJhY2tncm91bmQuPC9kaXY+CiAgICAgIDxkZWVzLWltYWdlLXZpZXdlcgogICAgICAgIHNyYz0iaHR0cHM6Ly91cGxvYWQud2lraW1lZGlhLm9yZy93aWtpcGVkaWEvY29tbW9ucy80LzQ3L1BOR190cmFuc3BhcmVuY3lfZGVtb25zdHJhdGlvbl8xLnBuZyIKICAgICAgICBhbHQ9IlBORyB0cmFuc3BhcmVuY3kgZGVtbyIKICAgICAgPjwvZGVlcy1pbWFnZS12aWV3ZXI+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+U1ZHIEltYWdlPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tZGVzY3JpcHRpb24iPlNjYWxhYmxlIHZlY3RvciBncmFwaGljLjwvZGl2PgogICAgICA8ZGVlcy1pbWFnZS12aWV3ZXIKICAgICAgICBzcmM9Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvMC8wMi9TVkdfbG9nby5zdmciCiAgICAgICAgYWx0PSJTVkcgbG9nbyIKICAgICAgICBmaXQ9ImNvbnRhaW4iCiAgICAgID48L2RlZXMtaW1hZ2Utdmlld2VyPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPk5vIFRvb2xiYXIgVmFyaWFudDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj5JbWFnZSB2aWV3ZXIgd2l0aCB0aGUgdG9vbGJhciBoaWRkZW4uPC9kaXY+CiAgICAgIDxkZWVzLWltYWdlLXZpZXdlcgogICAgICAgIGNsYXNzPSJjb21wYWN0IgogICAgICAgIHNyYz0iaHR0cHM6Ly9pbWFnZXMudW5zcGxhc2guY29tL3Bob3RvLTE0Njk0NzQ5NjgwMjgtNTY2MjNmMDJlNDJlP3c9ODAwIgogICAgICAgIGFsdD0iTmF0dXJlIHNjZW5lIgogICAgICAgIC5zaG93VG9vbGJhcj0keyExfQogICAgICA+PC9kZWVzLWltYWdlLXZpZXdlcj4KICAgIDwvZGl2PgogIDwvZGl2PgpgLCJkZW1vIil9KTt2YXIgZWMsZmksRDVhLGVydD1nKCgpPT57cGUoKTtVYSgpOyQ1YSgpO2VjPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxmaT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sRDVhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1pbWFnZS12aWV3ZXIiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXSxPLCQ9W10sRT1bXSxILGs9W10sUz1bXSxJLFA9W10sUj1bXSxLLFY9W10sVz1bXSxtZSxCPVtdLFU9W10saGUsRj1bXSxqPVtdO3ZhciB1ZT1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0ltYWdlVmlld2VyIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGxlPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woKV0scD1bTCgpXSxjPVtMKCldLHg9W0woe3R5cGU6Qm9vbGVhbn0pXSx5PVtZKCldLE49W1koKV0sTz1bWSgpXSxIPVtZKCldLEk9W1koKV0sSz1bWSgpXSxtZT1bWSgpXSxoZT1bWSgpXSxlYyh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNyYyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShRPT4ic3JjImluIFEsImhhcyIpLGdldDppKFE9PlEuc3JjLCJnZXQiKSxzZXQ6aSgoUSxpZSk9PntRLnNyYz1pZX0sInNldCIpfSxtZXRhZGF0YTpsZX0sbyxsKSxlYyh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImFsdCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShRPT4iYWx0ImluIFEsImhhcyIpLGdldDppKFE9PlEuYWx0LCJnZXQiKSxzZXQ6aSgoUSxpZSk9PntRLmFsdD1pZX0sInNldCIpfSxtZXRhZGF0YTpsZX0sZCx1KSxlYyh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImZpdCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShRPT4iZml0ImluIFEsImhhcyIpLGdldDppKFE9PlEuZml0LCJnZXQiKSxzZXQ6aSgoUSxpZSk9PntRLmZpdD1pZX0sInNldCIpfSxtZXRhZGF0YTpsZX0sYix2KSxlYyh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dUb29sYmFyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFE9PiJzaG93VG9vbGJhciJpbiBRLCJoYXMiKSxnZXQ6aShRPT5RLnNob3dUb29sYmFyLCJnZXQiKSxzZXQ6aSgoUSxpZSk9PntRLnNob3dUb29sYmFyPWllfSwic2V0Iil9LG1ldGFkYXRhOmxlfSxtLGYpLGVjKHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiem9vbSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShRPT4iem9vbSJpbiBRLCJoYXMiKSxnZXQ6aShRPT5RLnpvb20sImdldCIpLHNldDppKChRLGllKT0+e1Euem9vbT1pZX0sInNldCIpfSxtZXRhZGF0YTpsZX0sTSx6KSxlYyh0aGlzLG51bGwsTix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InBhblgiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUT0+InBhblgiaW4gUSwiaGFzIiksZ2V0OmkoUT0+US5wYW5YLCJnZXQiKSxzZXQ6aSgoUSxpZSk9PntRLnBhblg9aWV9LCJzZXQiKX0sbWV0YWRhdGE6bGV9LEMsXyksZWModGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJwYW5ZIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFE9PiJwYW5ZImluIFEsImhhcyIpLGdldDppKFE9PlEucGFuWSwiZ2V0Iiksc2V0OmkoKFEsaWUpPT57US5wYW5ZPWllfSwic2V0Iil9LG1ldGFkYXRhOmxlfSwkLEUpLGVjKHRoaXMsbnVsbCxILHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNEcmFnZ2luZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShRPT4iaXNEcmFnZ2luZyJpbiBRLCJoYXMiKSxnZXQ6aShRPT5RLmlzRHJhZ2dpbmcsImdldCIpLHNldDppKChRLGllKT0+e1EuaXNEcmFnZ2luZz1pZX0sInNldCIpfSxtZXRhZGF0YTpsZX0sayxTKSxlYyh0aGlzLG51bGwsSSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImxvYWRpbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUT0+ImxvYWRpbmciaW4gUSwiaGFzIiksZ2V0OmkoUT0+US5sb2FkaW5nLCJnZXQiKSxzZXQ6aSgoUSxpZSk9PntRLmxvYWRpbmc9aWV9LCJzZXQiKX0sbWV0YWRhdGE6bGV9LFAsUiksZWModGhpcyxudWxsLEsse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJlcnJvciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShRPT4iZXJyb3IiaW4gUSwiaGFzIiksZ2V0OmkoUT0+US5lcnJvciwiZ2V0Iiksc2V0OmkoKFEsaWUpPT57US5lcnJvcj1pZX0sInNldCIpfSxtZXRhZGF0YTpsZX0sVixXKSxlYyh0aGlzLG51bGwsbWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpbWFnZU5hdHVyYWxXaWR0aCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShRPT4iaW1hZ2VOYXR1cmFsV2lkdGgiaW4gUSwiaGFzIiksZ2V0OmkoUT0+US5pbWFnZU5hdHVyYWxXaWR0aCwiZ2V0Iiksc2V0OmkoKFEsaWUpPT57US5pbWFnZU5hdHVyYWxXaWR0aD1pZX0sInNldCIpfSxtZXRhZGF0YTpsZX0sQixVKSxlYyh0aGlzLG51bGwsaGUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpbWFnZU5hdHVyYWxIZWlnaHQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUT0+ImltYWdlTmF0dXJhbEhlaWdodCJpbiBRLCJoYXMiKSxnZXQ6aShRPT5RLmltYWdlTmF0dXJhbEhlaWdodCwiZ2V0Iiksc2V0OmkoKFEsaWUpPT57US5pbWFnZU5hdHVyYWxIZWlnaHQ9aWV9LCJzZXQiKX0sbWV0YWRhdGE6bGV9LEYsaiksZWMobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6bGV9LG51bGwsdCksdWU9YT1lLnZhbHVlLGxlJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmxlfSl9c3RhdGljIGRlbW89VDVhO3N0YXRpYyBkZW1vR3JvdXBzPVsiTWVkaWEiXTsjZT1maSh0aGlzLG8sIiIpO2dldCBzcmMoKXtyZXR1cm4gdGhpcy4jZX1zZXQgc3JjKGxlKXt0aGlzLiNlPWxlfSN0PShmaSh0aGlzLGwpLGZpKHRoaXMsZCwiIikpO2dldCBhbHQoKXtyZXR1cm4gdGhpcy4jdH1zZXQgYWx0KGxlKXt0aGlzLiN0PWxlfSNhPShmaSh0aGlzLHUpLGZpKHRoaXMsYiwiY29udGFpbiIpKTtnZXQgZml0KCl7cmV0dXJuIHRoaXMuI2F9c2V0IGZpdChsZSl7dGhpcy4jYT1sZX0jcz0oZmkodGhpcyx2KSxmaSh0aGlzLG0sITApKTtnZXQgc2hvd1Rvb2xiYXIoKXtyZXR1cm4gdGhpcy4jc31zZXQgc2hvd1Rvb2xiYXIobGUpe3RoaXMuI3M9bGV9I2k9KGZpKHRoaXMsZiksZmkodGhpcyxNLDEpKTtnZXQgem9vbSgpe3JldHVybiB0aGlzLiNpfXNldCB6b29tKGxlKXt0aGlzLiNpPWxlfSNyPShmaSh0aGlzLHopLGZpKHRoaXMsQywwKSk7Z2V0IHBhblgoKXtyZXR1cm4gdGhpcy4jcn1zZXQgcGFuWChsZSl7dGhpcy4jcj1sZX0jbz0oZmkodGhpcyxfKSxmaSh0aGlzLCQsMCkpO2dldCBwYW5ZKCl7cmV0dXJuIHRoaXMuI299c2V0IHBhblkobGUpe3RoaXMuI289bGV9I249KGZpKHRoaXMsRSksZmkodGhpcyxrLCExKSk7Z2V0IGlzRHJhZ2dpbmcoKXtyZXR1cm4gdGhpcy4jbn1zZXQgaXNEcmFnZ2luZyhsZSl7dGhpcy4jbj1sZX0jbD0oZmkodGhpcyxTKSxmaSh0aGlzLFAsITApKTtnZXQgbG9hZGluZygpe3JldHVybiB0aGlzLiNsfXNldCBsb2FkaW5nKGxlKXt0aGlzLiNsPWxlfSNjPShmaSh0aGlzLFIpLGZpKHRoaXMsViwiIikpO2dldCBlcnJvcigpe3JldHVybiB0aGlzLiNjfXNldCBlcnJvcihsZSl7dGhpcy4jYz1sZX0jZD0oZmkodGhpcyxXKSxmaSh0aGlzLEIsMCkpO2dldCBpbWFnZU5hdHVyYWxXaWR0aCgpe3JldHVybiB0aGlzLiNkfXNldCBpbWFnZU5hdHVyYWxXaWR0aChsZSl7dGhpcy4jZD1sZX0jdT0oZmkodGhpcyxVKSxmaSh0aGlzLEYsMCkpO2dldCBpbWFnZU5hdHVyYWxIZWlnaHQoKXtyZXR1cm4gdGhpcy4jdX1zZXQgaW1hZ2VOYXR1cmFsSGVpZ2h0KGxlKXt0aGlzLiN1PWxlfWRyYWdTdGFydFg9KGZpKHRoaXMsaiksMCk7ZHJhZ1N0YXJ0WT0wO2RyYWdTdGFydFBhblg9MDtkcmFnU3RhcnRQYW5ZPTA7cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxzdHlsZT4KICAgICAgICA6aG9zdCB7CiAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgc2Fucy1zZXJpZjsKICAgICAgICB9CgogICAgICAgIC52aWV3ZXItY29udGFpbmVyIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk3JSkiLCJoc2woMjE1IDIwJSAxMCUpIil9OwogICAgICAgIH0KCiAgICAgICAgLnRvb2xiYXIgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgIGdhcDogMTZweDsKICAgICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgICAgIGhlaWdodDogNDhweDsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiaHNsKDIxNSAyMCUgMTUlKSIpfTsKICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsImhzbCgyMTcgMjUlIDIyJSkiKX07CiAgICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICB9CgogICAgICAgIC50b29sYmFyLWdyb3VwIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgZ2FwOiA0cHg7CiAgICAgICAgfQoKICAgICAgICAudG9vbGJhci1idXR0b24gewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgIHdpZHRoOiAzMnB4OwogICAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUgMTYlIDQ1JSkiLCJoc2woMjE1IDE2JSA3NSUpIil9OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgfQoKICAgICAgICAudG9vbGJhci1idXR0b24gZGVlcy1pY29uIHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICB9CgogICAgICAgIC50b29sYmFyLWJ1dHRvbjpob3ZlciB7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxNCAzMSUgOTIlKSIsImhzbCgyMTcgMjUlIDIyJSkiKX07CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTA5MGIiLCIjZmFmYWZhIil9OwogICAgICAgIH0KCiAgICAgICAgLnRvb2xiYXItYnV0dG9uOmFjdGl2ZSB7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMzZjNmNDYiKX07CiAgICAgICAgfQoKICAgICAgICAuem9vbS1sZXZlbCB7CiAgICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgICAgbWluLXdpZHRoOiA0OHB4OwogICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1IDE2JSA0NSUpIiwiaHNsKDIxNSAxNiUgNzUlKSIpfTsKICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB9CgogICAgICAgIC5pbWFnZS1hcmVhIHsKICAgICAgICAgIGZsZXg6IDE7CiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgICAgY3Vyc29yOiAke3RoaXMuem9vbT4xP3RoaXMuaXNEcmFnZ2luZz8iZ3JhYmJpbmciOiJncmFiIjoiZGVmYXVsdCJ9OwogICAgICAgIH0KCiAgICAgICAgLmNoZWNrZXJib2FyZCB7CiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICBpbnNldDogMDsKICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6CiAgICAgICAgICAgIGxpbmVhci1ncmFkaWVudCg0NWRlZywgJHtoLmJkVGhlbWUoIiNmMGYwZjAiLCIjMWExYTFhIil9IDI1JSwgdHJhbnNwYXJlbnQgMjUlKSwKICAgICAgICAgICAgbGluZWFyLWdyYWRpZW50KC00NWRlZywgJHtoLmJkVGhlbWUoIiNmMGYwZjAiLCIjMWExYTFhIil9IDI1JSwgdHJhbnNwYXJlbnQgMjUlKSwKICAgICAgICAgICAgbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCB0cmFuc3BhcmVudCA3NSUsICR7aC5iZFRoZW1lKCIjZjBmMGYwIiwiIzFhMWExYSIpfSA3NSUpLAogICAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB0cmFuc3BhcmVudCA3NSUsICR7aC5iZFRoZW1lKCIjZjBmMGYwIiwiIzFhMWExYSIpfSA3NSUpOwogICAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxNnB4IDE2cHg7CiAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDAsIDAgOHB4LCA4cHggLThweCwgLThweCAwcHg7CiAgICAgICAgICBvcGFjaXR5OiAwLjM7CiAgICAgICAgfQoKICAgICAgICAuaW1hZ2Utd3JhcHBlciB7CiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICBpbnNldDogMDsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgke3RoaXMucGFuWH1weCwgJHt0aGlzLnBhbll9cHgpIHNjYWxlKCR7dGhpcy56b29tfSk7CiAgICAgICAgICB0cmFuc2l0aW9uOiAke3RoaXMuaXNEcmFnZ2luZz8ibm9uZSI6InRyYW5zZm9ybSAwLjJzIGVhc2UifTsKICAgICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07CiAgICAgICAgfQoKICAgICAgICAuaW1hZ2Utd3JhcHBlciBpbWcgewogICAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICAgICAgbWF4LWhlaWdodDogMTAwJTsKICAgICAgICAgIG9iamVjdC1maXQ6ICR7dGhpcy5maXR9OwogICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgICAtd2Via2l0LXVzZXItZHJhZzogbm9uZTsKICAgICAgICB9CgogICAgICAgIC5pbWFnZS13cmFwcGVyIGltZy5hY3R1YWwgewogICAgICAgICAgbWF4LXdpZHRoOiBub25lOwogICAgICAgICAgbWF4LWhlaWdodDogbm9uZTsKICAgICAgICAgIG9iamVjdC1maXQ6IG5vbmU7CiAgICAgICAgfQoKICAgICAgICAubG9hZGluZy1vdmVybGF5IHsKICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgIGluc2V0OiAwOwogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDI1NSwyNTUsMjU1LDAuOCkiLCJyZ2JhKDAsMCwwLDAuNikiKX07CiAgICAgICAgfQoKICAgICAgICAubG9hZGluZy1zcGlubmVyIHsKICAgICAgICAgIHdpZHRoOiAzMnB4OwogICAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgICAgYm9yZGVyOiAzcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjM2YzZjQ2Iil9OwogICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJHtoLmJkVGhlbWUoIiMzYjgyZjYiLCIjNjBhNWZhIil9OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgICAgYW5pbWF0aW9uOiBzcGluIDAuOHMgbGluZWFyIGluZmluaXRlOwogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyBzcGluIHsKICAgICAgICAgIHRvIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfQogICAgICAgIH0KCiAgICAgICAgLmVycm9yLW92ZXJsYXkgewogICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgaW5zZXQ6IDA7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgIGdhcDogOHB4OwogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgICB9CgogICAgICAgIC5lcnJvci1vdmVybGF5IC5lcnJvci1pY29uIHsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2RjMjYyNiIsIiNmODcxNzEiKX07CiAgICAgICAgICBmb250LXNpemU6IDMycHg7CiAgICAgICAgfQoKICAgICAgICAuZXJyb3ItdGV4dCB7CiAgICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgfQoKICAgICAgICAuaW1hZ2UtaW5mbyB7CiAgICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNhMWExYWEiLCIjNzE3MTdhIil9OwogICAgICAgICAgcGFkZGluZzogMCA0cHg7CiAgICAgICAgfQogICAgICA8L3N0eWxlPgoKICAgICAgPGRpdiBjbGFzcz0idmlld2VyLWNvbnRhaW5lciI+CiAgICAgICAgJHt0aGlzLnNob3dUb29sYmFyP3dgCiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b29sYmFyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9vbGJhci1ncm91cCI+CiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idG9vbGJhci1idXR0b24iIEBjbGljaz0ke3RoaXMuem9vbU91dH0gdGl0bGU9Ilpvb20gb3V0Ij4KICAgICAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOlpvb21PdXQiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InRvb2xiYXItYnV0dG9uIiBAY2xpY2s9JHt0aGlzLnJlc2V0Wm9vbX0+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iem9vbS1sZXZlbCI+JHtNYXRoLnJvdW5kKHRoaXMuem9vbSoxMDApfSU8L3NwYW4+CiAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idG9vbGJhci1idXR0b24iIEBjbGljaz0ke3RoaXMuem9vbUlufSB0aXRsZT0iWm9vbSBpbiI+CiAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpab29tSW4iPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9vbGJhci1ncm91cCI+CiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idG9vbGJhci1idXR0b24iIEBjbGljaz0ke3RoaXMuZml0VG9TY3JlZW59IHRpdGxlPSJGaXQgdG8gc2NyZWVuIj4KICAgICAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOk1heGltaXplIj48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJ0b29sYmFyLWJ1dHRvbiIgQGNsaWNrPSR7dGhpcy5hY3R1YWxTaXplfSB0aXRsZT0iQWN0dWFsIHNpemUgKDEwMCUpIj4KICAgICAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOlNjYW4iPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9vbGJhci1ncm91cCI+CiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idG9vbGJhci1idXR0b24iIEBjbGljaz0ke3RoaXMuZG93bmxvYWR9IHRpdGxlPSJEb3dubG9hZCI+CiAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpEb3dubG9hZCI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAke3RoaXMuaW1hZ2VOYXR1cmFsV2lkdGg+MD93YAogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvb2xiYXItZ3JvdXAiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImltYWdlLWluZm8iPiR7dGhpcy5pbWFnZU5hdHVyYWxXaWR0aH0geCAke3RoaXMuaW1hZ2VOYXR1cmFsSGVpZ2h0fTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYDoiIn0KICAgICAgICAgIDwvZGl2PgogICAgICAgIGA6IiJ9CgogICAgICAgIDxkaXYKICAgICAgICAgIGNsYXNzPSJpbWFnZS1hcmVhIgogICAgICAgICAgQHdoZWVsPSR7dGhpcy5oYW5kbGVXaGVlbH0KICAgICAgICAgIEBtb3VzZWRvd249JHt0aGlzLmhhbmRsZU1vdXNlRG93bn0KICAgICAgICAgIEBtb3VzZW1vdmU9JHt0aGlzLmhhbmRsZU1vdXNlTW92ZX0KICAgICAgICAgIEBtb3VzZXVwPSR7dGhpcy5oYW5kbGVNb3VzZVVwfQogICAgICAgICAgQG1vdXNlbGVhdmU9JHt0aGlzLmhhbmRsZU1vdXNlVXB9CiAgICAgICAgICBAZGJsY2xpY2s9JHt0aGlzLmhhbmRsZURvdWJsZUNsaWNrfQogICAgICAgID4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNoZWNrZXJib2FyZCI+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJpbWFnZS13cmFwcGVyIj4KICAgICAgICAgICAgJHt0aGlzLnNyYz93YAogICAgICAgICAgICAgIDxpbWcKICAgICAgICAgICAgICAgIGNsYXNzPSIke3RoaXMuZml0PT09ImFjdHVhbCI/ImFjdHVhbCI6IiJ9IgogICAgICAgICAgICAgICAgc3JjPSIke3RoaXMuc3JjfSIKICAgICAgICAgICAgICAgIGFsdD0iJHt0aGlzLmFsdH0iCiAgICAgICAgICAgICAgICBAbG9hZD0ke3RoaXMuaGFuZGxlSW1hZ2VMb2FkfQogICAgICAgICAgICAgICAgQGVycm9yPSR7dGhpcy5oYW5kbGVJbWFnZUVycm9yfQogICAgICAgICAgICAgICAgZHJhZ2dhYmxlPSJmYWxzZSIKICAgICAgICAgICAgICAvPgogICAgICAgICAgICBgOiIifQogICAgICAgICAgPC9kaXY+CiAgICAgICAgICAke3RoaXMubG9hZGluZyYmdGhpcy5zcmM/d2AKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9hZGluZy1vdmVybGF5Ij4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2FkaW5nLXNwaW5uZXIiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAke3RoaXMuZXJyb3I/d2AKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZXJyb3Itb3ZlcmxheSI+CiAgICAgICAgICAgICAgPGRlZXMtaWNvbiBjbGFzcz0iZXJyb3ItaWNvbiIgaWNvbj0ibHVjaWRlOkltYWdlT2ZmIj48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZXJyb3ItdGV4dCI+JHt0aGlzLmVycm9yfTwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgOiIifQogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9em9vbUluKCl7dGhpcy56b29tPU1hdGgubWluKDEwLHRoaXMuem9vbSoxLjI1KX16b29tT3V0KCl7dGhpcy56b29tPU1hdGgubWF4KC4xLHRoaXMuem9vbS8xLjI1KSx0aGlzLnpvb208PTEmJih0aGlzLnBhblg9MCx0aGlzLnBhblk9MCl9cmVzZXRab29tKCl7dGhpcy56b29tPTEsdGhpcy5wYW5YPTAsdGhpcy5wYW5ZPTB9Zml0VG9TY3JlZW4oKXt0aGlzLnpvb209MSx0aGlzLnBhblg9MCx0aGlzLnBhblk9MCx0aGlzLmZpdD0iY29udGFpbiJ9YWN0dWFsU2l6ZSgpe3RoaXMuem9vbT0xLHRoaXMucGFuWD0wLHRoaXMucGFuWT0wLHRoaXMuZml0PSJhY3R1YWwifWRvd25sb2FkKCl7aWYoIXRoaXMuc3JjKXJldHVybjtsZXQgbGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO2xlLmhyZWY9dGhpcy5zcmMsbGUuZG93bmxvYWQ9dGhpcy5zcmMuc3BsaXQoIi8iKS5wb3AoKXx8ImltYWdlIixsZS5jbGljaygpfWhhbmRsZUltYWdlTG9hZChsZSl7bGV0IFE9bGUudGFyZ2V0O3RoaXMubG9hZGluZz0hMSx0aGlzLmVycm9yPSIiLHRoaXMuaW1hZ2VOYXR1cmFsV2lkdGg9US5uYXR1cmFsV2lkdGgsdGhpcy5pbWFnZU5hdHVyYWxIZWlnaHQ9US5uYXR1cmFsSGVpZ2h0fWhhbmRsZUltYWdlRXJyb3IoKXt0aGlzLmxvYWRpbmc9ITEsdGhpcy5lcnJvcj0iRmFpbGVkIHRvIGxvYWQgaW1hZ2UifWhhbmRsZVdoZWVsKGxlKXtsZS5wcmV2ZW50RGVmYXVsdCgpO2xldCBRPWxlLmRlbHRhWT4wPy45OjEuMSxpZT1NYXRoLm1pbigxMCxNYXRoLm1heCguMSx0aGlzLnpvb20qUSkpO3RoaXMuem9vbT1pZSx0aGlzLnpvb208PTEmJih0aGlzLnBhblg9MCx0aGlzLnBhblk9MCl9aGFuZGxlTW91c2VEb3duKGxlKXt0aGlzLnpvb208PTF8fCh0aGlzLmlzRHJhZ2dpbmc9ITAsdGhpcy5kcmFnU3RhcnRYPWxlLmNsaWVudFgsdGhpcy5kcmFnU3RhcnRZPWxlLmNsaWVudFksdGhpcy5kcmFnU3RhcnRQYW5YPXRoaXMucGFuWCx0aGlzLmRyYWdTdGFydFBhblk9dGhpcy5wYW5ZKX1oYW5kbGVNb3VzZU1vdmUobGUpe3RoaXMuaXNEcmFnZ2luZyYmKHRoaXMucGFuWD10aGlzLmRyYWdTdGFydFBhblgrKGxlLmNsaWVudFgtdGhpcy5kcmFnU3RhcnRYKSx0aGlzLnBhblk9dGhpcy5kcmFnU3RhcnRQYW5ZKyhsZS5jbGllbnRZLXRoaXMuZHJhZ1N0YXJ0WSkpfWhhbmRsZU1vdXNlVXAoKXt0aGlzLmlzRHJhZ2dpbmc9ITF9aGFuZGxlRG91YmxlQ2xpY2soKXt0aGlzLnpvb209PT0xP3RoaXMuem9vbT0yOih0aGlzLnpvb209MSx0aGlzLnBhblg9MCx0aGlzLnBhblk9MCl9dXBkYXRlZChsZSl7c3VwZXIudXBkYXRlZChsZSksbGUuaGFzKCJzcmMiKSYmKHRoaXMubG9hZGluZz0hMCx0aGlzLmVycm9yPSIiLHRoaXMuem9vbT0xLHRoaXMucGFuWD0wLHRoaXMucGFuWT0wLHRoaXMuaW1hZ2VOYXR1cmFsV2lkdGg9MCx0aGlzLmltYWdlTmF0dXJhbEhlaWdodD0wKX1zdGF0aWN7ZmkoYSx0KX19O3JldHVybiB1ZT1hfSkoKX0pO3ZhciBMNWE9ZygoKT0+e2VydCgpfSk7dmFyIEU1YSxQNWE9ZygoKT0+e3BlKCk7RTVhPWkoKCk9PndgCiAgPHN0eWxlPgogICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgcGFkZGluZzogNDhweDsKICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmOGY5ZmEiLCIjMGEwYTBhIil9OwogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICBnYXA6IDMycHg7CiAgICB9CgogICAgLnNlY3Rpb24gewogICAgICBtYXgtd2lkdGg6IDYwMHB4OwogICAgICB3aWR0aDogMTAwJTsKICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICB9CgogICAgLnNlY3Rpb24tdGl0bGUgewogICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICAgIH0KCiAgICAuc2VjdGlvbi1kZXNjcmlwdGlvbiB7CiAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgIH0KCiAgICBkZWVzLWF1ZGlvLXZpZXdlciB7CiAgICAgIGhlaWdodDogMjAwcHg7CiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzI3MjcyYSIpfTsKICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgfQogIDwvc3R5bGU+CgogIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5BdWRpbyB3aXRoIFdhdmVmb3JtPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tZGVzY3JpcHRpb24iPkF1ZGlvIHBsYXllciB3aXRoIHdhdmVmb3JtIHZpc3VhbGl6YXRpb24gYW5kIGZ1bGwgdHJhbnNwb3J0IGNvbnRyb2xzLjwvZGl2PgogICAgICA8ZGVlcy1hdWRpby12aWV3ZXIKICAgICAgICBzcmM9Imh0dHBzOi8vd3d3LnNvdW5kaGVsaXguY29tL2V4YW1wbGVzL21wMy9Tb3VuZEhlbGl4LVNvbmctMS5tcDMiCiAgICAgICAgdGl0bGU9IlNvdW5kSGVsaXggU29uZyAxIgogICAgICAgIGFydGlzdD0iVC4gU2NodWVyZ2VyIgogICAgICA+PC9kZWVzLWF1ZGlvLXZpZXdlcj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5BdWRpbyB3aXRob3V0IFdhdmVmb3JtPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tZGVzY3JpcHRpb24iPlNpbXBsZSBhdWRpbyBwbGF5ZXIgd2l0aCBhIHNlZWtiYXIgaW5zdGVhZCBvZiBhIHdhdmVmb3JtLjwvZGl2PgogICAgICA8ZGVlcy1hdWRpby12aWV3ZXIKICAgICAgICBzcmM9Imh0dHBzOi8vd3d3LnNvdW5kaGVsaXguY29tL2V4YW1wbGVzL21wMy9Tb3VuZEhlbGl4LVNvbmctMi5tcDMiCiAgICAgICAgdGl0bGU9IlNvdW5kSGVsaXggU29uZyAyIgogICAgICAgIC5zaG93V2F2ZWZvcm09JHshMX0KICAgICAgPjwvZGVlcy1hdWRpby12aWV3ZXI+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+TWluaW1hbCBBdWRpbyBQbGF5ZXI8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1kZXNjcmlwdGlvbiI+Tm8gdGl0bGUgb3IgYXJ0aXN0IG1ldGFkYXRhIOKAlCBqdXN0IHRoZSBwbGF5ZXIuPC9kaXY+CiAgICAgIDxkZWVzLWF1ZGlvLXZpZXdlcgogICAgICAgIHNyYz0iaHR0cHM6Ly93d3cuc291bmRoZWxpeC5jb20vZXhhbXBsZXMvbXAzL1NvdW5kSGVsaXgtU29uZy0zLm1wMyIKICAgICAgPjwvZGVlcy1hdWRpby12aWV3ZXI+CiAgICA8L2Rpdj4KICA8L2Rpdj4KYCwiZGVtbyIpfSk7dmFyIHVuLHpzLEk1YSx0cnQ9ZygoKT0+e3BlKCk7VWEoKTtQNWEoKTt1bj1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0senM9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LEk1YT0oKCk9PntsZXQgcz1bbmUoImRlZXMtYXVkaW8tdmlld2VyIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W10sSCxrPVtdLFM9W10sSSxQPVtdLFI9W10sSyxWPVtdLFc9W10sbWUsQj1bXSxVPVtdLGhlLEY9W10saj1bXSx1ZSxsZT1bXSxRPVtdLGllLHRlPVtdLGVlPVtdLGtlLFg9W10sWj1bXTt2YXIgeWU9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNBdWRpb1ZpZXdlciIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBxPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woKV0scD1bTCgpXSxjPVtMKCldLHg9W0woe3R5cGU6Qm9vbGVhbn0pXSx5PVtMKHt0eXBlOkJvb2xlYW59KV0sTj1bTCh7dHlwZTpCb29sZWFufSldLE89W1koKV0sSD1bWSgpXSxJPVtZKCldLEs9W1koKV0sbWU9W1koKV0saGU9W1koKV0sdWU9W1koKV0saWU9W1koKV0sa2U9W1koKV0sdW4odGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzcmMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+InNyYyJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLnNyYywiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS5zcmM9c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sbyxsKSx1bih0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InRpdGxlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJ0aXRsZSJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLnRpdGxlLCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLnRpdGxlPXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LGQsdSksdW4odGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJhcnRpc3QiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+ImFydGlzdCJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLmFydGlzdCwiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS5hcnRpc3Q9c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sYix2KSx1bih0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dXYXZlZm9ybSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4ic2hvd1dhdmVmb3JtImluIEEsImhhcyIpLGdldDppKEE9PkEuc2hvd1dhdmVmb3JtLCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLnNob3dXYXZlZm9ybT1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSxtLGYpLHVuKHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYXV0b3BsYXkiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+ImF1dG9wbGF5ImluIEEsImhhcyIpLGdldDppKEE9PkEuYXV0b3BsYXksImdldCIpLHNldDppKChBLHNlKT0+e0EuYXV0b3BsYXk9c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sTSx6KSx1bih0aGlzLG51bGwsTix7a2luZDoiYWNjZXNzb3IiLG5hbWU6Imxvb3AiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+Imxvb3AiaW4gQSwiaGFzIiksZ2V0OmkoQT0+QS5sb29wLCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLmxvb3A9c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sQyxfKSx1bih0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImlzUGxheWluZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4iaXNQbGF5aW5nImluIEEsImhhcyIpLGdldDppKEE9PkEuaXNQbGF5aW5nLCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLmlzUGxheWluZz1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSwkLEUpLHVuKHRoaXMsbnVsbCxILHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY3VycmVudFRpbWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+ImN1cnJlbnRUaW1lImluIEEsImhhcyIpLGdldDppKEE9PkEuY3VycmVudFRpbWUsImdldCIpLHNldDppKChBLHNlKT0+e0EuY3VycmVudFRpbWU9c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sayxTKSx1bih0aGlzLG51bGwsSSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImR1cmF0aW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJkdXJhdGlvbiJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLmR1cmF0aW9uLCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLmR1cmF0aW9uPXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LFAsUiksdW4odGhpcyxudWxsLEsse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2b2x1bWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+InZvbHVtZSJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLnZvbHVtZSwiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS52b2x1bWU9c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sVixXKSx1bih0aGlzLG51bGwsbWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpc011dGVkIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJpc011dGVkImluIEEsImhhcyIpLGdldDppKEE9PkEuaXNNdXRlZCwiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS5pc011dGVkPXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LEIsVSksdW4odGhpcyxudWxsLGhlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibG9hZGluZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4ibG9hZGluZyJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLmxvYWRpbmcsImdldCIpLHNldDppKChBLHNlKT0+e0EubG9hZGluZz1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSxGLGopLHVuKHRoaXMsbnVsbCx1ZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImVycm9yIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJlcnJvciJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLmVycm9yLCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLmVycm9yPXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LGxlLFEpLHVuKHRoaXMsbnVsbCxpZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6IndhdmVmb3JtRGF0YSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4id2F2ZWZvcm1EYXRhImluIEEsImhhcyIpLGdldDppKEE9PkEud2F2ZWZvcm1EYXRhLCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLndhdmVmb3JtRGF0YT1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSx0ZSxlZSksdW4odGhpcyxudWxsLGtlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToid2F2ZWZvcm1SZWFkeSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4id2F2ZWZvcm1SZWFkeSJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLndhdmVmb3JtUmVhZHksImdldCIpLHNldDppKChBLHNlKT0+e0Eud2F2ZWZvcm1SZWFkeT1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSxYLFopLHVuKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOnF9LG51bGwsdCkseWU9YT1lLnZhbHVlLHEmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6cX0pfXN0YXRpYyBkZW1vPUU1YTtzdGF0aWMgZGVtb0dyb3Vwcz1bIk1lZGlhIl07I2U9enModGhpcyxvLCIiKTtnZXQgc3JjKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHNyYyhxKXt0aGlzLiNlPXF9I3Q9KHpzKHRoaXMsbCksenModGhpcyxkLCIiKSk7Z2V0IHRpdGxlKCl7cmV0dXJuIHRoaXMuI3R9c2V0IHRpdGxlKHEpe3RoaXMuI3Q9cX0jYT0oenModGhpcyx1KSx6cyh0aGlzLGIsIiIpKTtnZXQgYXJ0aXN0KCl7cmV0dXJuIHRoaXMuI2F9c2V0IGFydGlzdChxKXt0aGlzLiNhPXF9I3M9KHpzKHRoaXMsdiksenModGhpcyxtLCEwKSk7Z2V0IHNob3dXYXZlZm9ybSgpe3JldHVybiB0aGlzLiNzfXNldCBzaG93V2F2ZWZvcm0ocSl7dGhpcy4jcz1xfSNpPSh6cyh0aGlzLGYpLHpzKHRoaXMsTSwhMSkpO2dldCBhdXRvcGxheSgpe3JldHVybiB0aGlzLiNpfXNldCBhdXRvcGxheShxKXt0aGlzLiNpPXF9I3I9KHpzKHRoaXMseiksenModGhpcyxDLCExKSk7Z2V0IGxvb3AoKXtyZXR1cm4gdGhpcy4jcn1zZXQgbG9vcChxKXt0aGlzLiNyPXF9I289KHpzKHRoaXMsXyksenModGhpcywkLCExKSk7Z2V0IGlzUGxheWluZygpe3JldHVybiB0aGlzLiNvfXNldCBpc1BsYXlpbmcocSl7dGhpcy4jbz1xfSNuPSh6cyh0aGlzLEUpLHpzKHRoaXMsaywwKSk7Z2V0IGN1cnJlbnRUaW1lKCl7cmV0dXJuIHRoaXMuI259c2V0IGN1cnJlbnRUaW1lKHEpe3RoaXMuI249cX0jbD0oenModGhpcyxTKSx6cyh0aGlzLFAsMCkpO2dldCBkdXJhdGlvbigpe3JldHVybiB0aGlzLiNsfXNldCBkdXJhdGlvbihxKXt0aGlzLiNsPXF9I2M9KHpzKHRoaXMsUiksenModGhpcyxWLDEpKTtnZXQgdm9sdW1lKCl7cmV0dXJuIHRoaXMuI2N9c2V0IHZvbHVtZShxKXt0aGlzLiNjPXF9I2Q9KHpzKHRoaXMsVyksenModGhpcyxCLCExKSk7Z2V0IGlzTXV0ZWQoKXtyZXR1cm4gdGhpcy4jZH1zZXQgaXNNdXRlZChxKXt0aGlzLiNkPXF9I3U9KHpzKHRoaXMsVSksenModGhpcyxGLCExKSk7Z2V0IGxvYWRpbmcoKXtyZXR1cm4gdGhpcy4jdX1zZXQgbG9hZGluZyhxKXt0aGlzLiN1PXF9I3A9KHpzKHRoaXMsaiksenModGhpcyxsZSwiIikpO2dldCBlcnJvcigpe3JldHVybiB0aGlzLiNwfXNldCBlcnJvcihxKXt0aGlzLiNwPXF9I2g9KHpzKHRoaXMsUSksenModGhpcyx0ZSxbXSkpO2dldCB3YXZlZm9ybURhdGEoKXtyZXR1cm4gdGhpcy4jaH1zZXQgd2F2ZWZvcm1EYXRhKHEpe3RoaXMuI2g9cX0jZj0oenModGhpcyxlZSksenModGhpcyxYLCExKSk7Z2V0IHdhdmVmb3JtUmVhZHkoKXtyZXR1cm4gdGhpcy4jZn1zZXQgd2F2ZWZvcm1SZWFkeShxKXt0aGlzLiNmPXF9YXVkaW9FbGVtZW50PSh6cyh0aGlzLFopLG51bGwpO2NhbnZhc0VsZW1lbnQ9bnVsbDthbmltRnJhbWVJZD0wO3ZvbHVtZUJlZm9yZU11dGU9MTtyZW5kZXIoKXtsZXQgcT10aGlzLnRpdGxlJiZ0aGlzLmFydGlzdD9gJHt0aGlzLnRpdGxlfSBcdTIwMTQgJHt0aGlzLmFydGlzdH1gOnRoaXMudGl0bGV8fHRoaXMuYXJ0aXN0fHwiIjtyZXR1cm4gd2AKICAgICAgPHN0eWxlPgogICAgICAgIDpob3N0IHsKICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBzYW5zLXNlcmlmOwogICAgICAgIH0KCiAgICAgICAgLnZpZXdlci1jb250YWluZXIgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTclKSIsImhzbCgyMTUgMjAlIDEwJSkiKX07CiAgICAgICAgfQoKICAgICAgICAudG9vbGJhciB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgIGdhcDogMTZweDsKICAgICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgICAgIGhlaWdodDogNDhweDsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiaHNsKDIxNSAyMCUgMTUlKSIpfTsKICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsImhzbCgyMTcgMjUlIDIyJSkiKX07CiAgICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICB9CgogICAgICAgIC50b29sYmFyLWdyb3VwIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgZ2FwOiA0cHg7CiAgICAgICAgfQoKICAgICAgICAudG9vbGJhci1ncm91cC0tZW5kIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgZ2FwOiA0cHg7CiAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgICAgICB9CgogICAgICAgIC50b29sYmFyLWJ1dHRvbiB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNSAxNiUgNDUlKSIsImhzbCgyMTUgMTYlIDc1JSkiKX07CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIH0KCiAgICAgICAgLnRvb2xiYXItYnV0dG9uIGRlZXMtaWNvbiB7CiAgICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgfQoKICAgICAgICAudG9vbGJhci1idXR0b246aG92ZXIgewogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTQgMzElIDkyJSkiLCJoc2woMjE3IDI1JSAyMiUpIil9OwogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICAgICAgICB9CgogICAgICAgIC50b29sYmFyLWJ1dHRvbjphY3RpdmUgewogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjM2YzZjQ2Iil9OwogICAgICAgIH0KCiAgICAgICAgLnRvb2xiYXItYnV0dG9uLmFjdGl2ZSB7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTcgOTElIDYwJSkiLCJoc2woMjEzIDkzJSA2OCUpIil9OwogICAgICAgIH0KCiAgICAgICAgLnRvb2xiYXItdGl0bGUgewogICAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNSAxNiUgNDUlKSIsImhzbCgyMTUgMTYlIDc1JSkiKX07CiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgICAgbWluLXdpZHRoOiAwOwogICAgICAgIH0KCiAgICAgICAgLnRpbWUtZGlzcGxheSB7CiAgICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtczsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNSAxNiUgNDUlKSIsImhzbCgyMTUgMTYlIDc1JSkiKX07CiAgICAgICAgICBtaW4td2lkdGg6IDkwcHg7CiAgICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICB9CgogICAgICAgIC52b2x1bWUtZ3JvdXAgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBnYXA6IDRweDsKICAgICAgICB9CgogICAgICAgIC52b2x1bWUtc2xpZGVyIHsKICAgICAgICAgIHdpZHRoOiA3MHB4OwogICAgICAgICAgaGVpZ2h0OiA0cHg7CiAgICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgICAgICAgICBhcHBlYXJhbmNlOiBub25lOwogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTQgMzElIDkxJSkiLCJoc2woMjE3IDI1JSAyMiUpIil9OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB9CgogICAgICAgIC52b2x1bWUtc2xpZGVyOjotd2Via2l0LXNsaWRlci10aHVtYiB7CiAgICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgICAgICAgICB3aWR0aDogMTJweDsKICAgICAgICAgIGhlaWdodDogMTJweDsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjE3IDkxJSA2MCUpIiwiaHNsKDIxMyA5MyUgNjglKSIpfTsKICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB9CgogICAgICAgIC52b2x1bWUtc2xpZGVyOjotbW96LXJhbmdlLXRodW1iIHsKICAgICAgICAgIHdpZHRoOiAxMnB4OwogICAgICAgICAgaGVpZ2h0OiAxMnB4OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTcgOTElIDYwJSkiLCJoc2woMjEzIDkzJSA2OCUpIil9OwogICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIH0KCiAgICAgICAgLmNvbnRlbnQtYXJlYSB7CiAgICAgICAgICBmbGV4OiAxOwogICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgfQoKICAgICAgICAud2F2ZWZvcm0tY29udGFpbmVyIHsKICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgIGluc2V0OiAwOwogICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB9CgogICAgICAgIC53YXZlZm9ybS1jb250YWluZXIgY2FudmFzIHsKICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgfQoKICAgICAgICAuc2Vla2Jhci1jb250YWluZXIgewogICAgICAgICAgd2lkdGg6IDgwJTsKICAgICAgICAgIG1heC13aWR0aDogNjAwcHg7CiAgICAgICAgICBoZWlnaHQ6IDZweDsKICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjE0IDMxJSA5MSUpIiwiaHNsKDIxNyAyNSUgMjIlKSIpfTsKICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgfQoKICAgICAgICAuc2Vla2Jhci1maWxsIHsKICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjE3IDkxJSA2MCUpIiwiaHNsKDIxMyA5MyUgNjglKSIpfTsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICAgIHRyYW5zaXRpb246IHdpZHRoIDAuMXMgbGluZWFyOwogICAgICAgIH0KCiAgICAgICAgLmVycm9yLW92ZXJsYXkgewogICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgaW5zZXQ6IDA7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgIGdhcDogOHB4OwogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgICB9CgogICAgICAgIC5lcnJvci1vdmVybGF5IC5lcnJvci1pY29uIHsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2RjMjYyNiIsIiNmODcxNzEiKX07CiAgICAgICAgICBmb250LXNpemU6IDMycHg7CiAgICAgICAgfQoKICAgICAgICAuZXJyb3ItdGV4dCB7CiAgICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgfQoKICAgICAgICAubG9hZGluZy1vdmVybGF5IHsKICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgIGluc2V0OiAwOwogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICB9CgogICAgICAgIC5sb2FkaW5nLXNwaW5uZXIgewogICAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgICBib3JkZXI6IDNweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDIxNCAzMSUgODYlKSIsImhzbCgyMTcgMjUlIDI4JSkiKX07CiAgICAgICAgICBib3JkZXItdG9wLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNyA5MSUgNjAlKSIsImhzbCgyMTMgOTMlIDY4JSkiKX07CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICBhbmltYXRpb246IHNwaW4gMC44cyBsaW5lYXIgaW5maW5pdGU7CiAgICAgICAgfQoKICAgICAgICBAa2V5ZnJhbWVzIHNwaW4gewogICAgICAgICAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9CiAgICAgICAgfQogICAgICA8L3N0eWxlPgoKICAgICAgPGRpdiBjbGFzcz0idmlld2VyLWNvbnRhaW5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0idG9vbGJhciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b29sYmFyLWdyb3VwIj4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idG9vbGJhci1idXR0b24iIEBjbGljaz0ke3RoaXMudG9nZ2xlUGxheX0+CiAgICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6JHt0aGlzLmlzUGxheWluZz8iUGF1c2UiOiJQbGF5In0iPjwvZGVlcy1pY29uPgogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRpbWUtZGlzcGxheSI+CiAgICAgICAgICAgICAgJHt0aGlzLmZvcm1hdFRpbWUodGhpcy5jdXJyZW50VGltZSl9IC8gJHt0aGlzLmZvcm1hdFRpbWUodGhpcy5kdXJhdGlvbil9CiAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICR7cT93YAogICAgICAgICAgICA8c3BhbiBjbGFzcz0idG9vbGJhci10aXRsZSI+JHtxfTwvc3Bhbj4KICAgICAgICAgIGA6IiJ9CgogICAgICAgICAgPGRpdiBjbGFzcz0idG9vbGJhci1ncm91cC0tZW5kIj4KICAgICAgICAgICAgPGJ1dHRvbgogICAgICAgICAgICAgIGNsYXNzPSJ0b29sYmFyLWJ1dHRvbiAke3RoaXMubG9vcD8iYWN0aXZlIjoiIn0iCiAgICAgICAgICAgICAgQGNsaWNrPSR7dGhpcy50b2dnbGVMb29wfQogICAgICAgICAgICAgIHRpdGxlPSJMb29wIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6UmVwZWF0Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgPC9idXR0b24+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2b2x1bWUtZ3JvdXAiPgogICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InRvb2xiYXItYnV0dG9uIiBAY2xpY2s9JHt0aGlzLnRvZ2dsZU11dGV9IHRpdGxlPSIke3RoaXMuaXNNdXRlZD8iVW5tdXRlIjoiTXV0ZSJ9Ij4KICAgICAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOiR7dGhpcy5pc011dGVkfHx0aGlzLnZvbHVtZT09PTA/IlZvbHVtZVgiOnRoaXMudm9sdW1lPC41PyJWb2x1bWUxIjoiVm9sdW1lMiJ9Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgICAgIGNsYXNzPSJ2b2x1bWUtc2xpZGVyIgogICAgICAgICAgICAgICAgdHlwZT0icmFuZ2UiCiAgICAgICAgICAgICAgICBtaW49IjAiCiAgICAgICAgICAgICAgICBtYXg9IjEiCiAgICAgICAgICAgICAgICBzdGVwPSIwLjAxIgogICAgICAgICAgICAgICAgLnZhbHVlPSR7U3RyaW5nKHRoaXMuaXNNdXRlZD8wOnRoaXMudm9sdW1lKX0KICAgICAgICAgICAgICAgIEBpbnB1dD0ke3RoaXMuaGFuZGxlVm9sdW1lQ2hhbmdlfQogICAgICAgICAgICAgIC8+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQtYXJlYSI+CiAgICAgICAgICAke3RoaXMuZXJyb3I/d2AKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZXJyb3Itb3ZlcmxheSI+CiAgICAgICAgICAgICAgPGRlZXMtaWNvbiBjbGFzcz0iZXJyb3ItaWNvbiIgaWNvbj0ibHVjaWRlOk11c2ljT2ZmIj48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZXJyb3ItdGV4dCI+JHt0aGlzLmVycm9yfTwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgOnRoaXMubG9hZGluZz93YAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2FkaW5nLW92ZXJsYXkiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvYWRpbmctc3Bpbm5lciI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYDp0aGlzLnNob3dXYXZlZm9ybT93YAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3YXZlZm9ybS1jb250YWluZXIiIEBjbGljaz0ke3RoaXMuaGFuZGxlV2F2ZWZvcm1DbGlja30+CiAgICAgICAgICAgICAgPGNhbnZhcz48L2NhbnZhcz4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgOndgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlZWtiYXItY29udGFpbmVyIiBAY2xpY2s9JHt0aGlzLmhhbmRsZVNlZWtiYXJDbGlja30+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2Vla2Jhci1maWxsIiBzdHlsZT0id2lkdGg6ICR7dGhpcy5kdXJhdGlvbj90aGlzLmN1cnJlbnRUaW1lL3RoaXMuZHVyYXRpb24qMTAwOjB9JSI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYH0KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfWFzeW5jIGNvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLnNyYyYmdGhpcy5pbml0QXVkaW8oKX1hc3luYyBkaXNjb25uZWN0ZWRDYWxsYmFjaygpe2F3YWl0IHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5jbGVhbnVwKCl9YXN5bmMgdXBkYXRlZChxKXtzdXBlci51cGRhdGVkKHEpLHEuaGFzKCJzcmMiKSYmdGhpcy5zcmMmJih0aGlzLmNsZWFudXAoKSx0aGlzLmluaXRBdWRpbygpKSwocS5oYXMoIndhdmVmb3JtRGF0YSIpfHxxLmhhcygiY3VycmVudFRpbWUiKSkmJnRoaXMuZHJhd1dhdmVmb3JtKCl9cGxheSgpe3RoaXMuYXVkaW9FbGVtZW50Py5wbGF5KCl9cGF1c2UoKXt0aGlzLmF1ZGlvRWxlbWVudD8ucGF1c2UoKX10b2dnbGVQbGF5KCl7dGhpcy5pc1BsYXlpbmc/dGhpcy5wYXVzZSgpOnRoaXMucGxheSgpfXNlZWsocSl7dGhpcy5hdWRpb0VsZW1lbnQmJih0aGlzLmF1ZGlvRWxlbWVudC5jdXJyZW50VGltZT1xKX1zZXRWb2x1bWUocSl7dGhpcy52b2x1bWU9TWF0aC5tYXgoMCxNYXRoLm1pbigxLHEpKSx0aGlzLmF1ZGlvRWxlbWVudCYmKHRoaXMuYXVkaW9FbGVtZW50LnZvbHVtZT10aGlzLnZvbHVtZSksdGhpcy52b2x1bWU+MCYmKHRoaXMuaXNNdXRlZD0hMSl9dG9nZ2xlTXV0ZSgpe3RoaXMuaXNNdXRlZD8odGhpcy5pc011dGVkPSExLHRoaXMudm9sdW1lPXRoaXMudm9sdW1lQmVmb3JlTXV0ZXx8LjUsdGhpcy5hdWRpb0VsZW1lbnQmJih0aGlzLmF1ZGlvRWxlbWVudC52b2x1bWU9dGhpcy52b2x1bWUpKToodGhpcy52b2x1bWVCZWZvcmVNdXRlPXRoaXMudm9sdW1lLHRoaXMuaXNNdXRlZD0hMCx0aGlzLmF1ZGlvRWxlbWVudCYmKHRoaXMuYXVkaW9FbGVtZW50LnZvbHVtZT0wKSl9dG9nZ2xlTG9vcCgpe3RoaXMubG9vcD0hdGhpcy5sb29wLHRoaXMuYXVkaW9FbGVtZW50JiYodGhpcy5hdWRpb0VsZW1lbnQubG9vcD10aGlzLmxvb3ApfWluaXRBdWRpbygpe3RoaXMuYXVkaW9FbGVtZW50PW5ldyBBdWRpbyx0aGlzLmF1ZGlvRWxlbWVudC5jcm9zc09yaWdpbj0iYW5vbnltb3VzIix0aGlzLmF1ZGlvRWxlbWVudC5zcmM9dGhpcy5zcmMsdGhpcy5hdWRpb0VsZW1lbnQudm9sdW1lPXRoaXMuaXNNdXRlZD8wOnRoaXMudm9sdW1lLHRoaXMuYXVkaW9FbGVtZW50Lmxvb3A9dGhpcy5sb29wLHRoaXMuYXVkaW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImxvYWRlZG1ldGFkYXRhIiwoKT0+e3RoaXMuZHVyYXRpb249dGhpcy5hdWRpb0VsZW1lbnQuZHVyYXRpb24sdGhpcy5sb2FkaW5nPSExfSksdGhpcy5hdWRpb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicGxheSIsKCk9Pnt0aGlzLmlzUGxheWluZz0hMCx0aGlzLnN0YXJ0VGltZVVwZGF0ZSgpfSksdGhpcy5hdWRpb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicGF1c2UiLCgpPT57dGhpcy5pc1BsYXlpbmc9ITEsdGhpcy5zdG9wVGltZVVwZGF0ZSgpfSksdGhpcy5hdWRpb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZW5kZWQiLCgpPT57dGhpcy5pc1BsYXlpbmc9ITEsdGhpcy5zdG9wVGltZVVwZGF0ZSgpfSksdGhpcy5hdWRpb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCgpPT57dGhpcy5lcnJvcj0iRmFpbGVkIHRvIGxvYWQgYXVkaW8iLHRoaXMubG9hZGluZz0hMX0pLHRoaXMuYXVkaW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRpbWV1cGRhdGUiLCgpPT57dGhpcy5jdXJyZW50VGltZT10aGlzLmF1ZGlvRWxlbWVudC5jdXJyZW50VGltZX0pLHRoaXMuYXV0b3BsYXkmJnRoaXMuYXVkaW9FbGVtZW50LnBsYXkoKS5jYXRjaCgoKT0+e30pLHRoaXMuc2hvd1dhdmVmb3JtJiZ0aGlzLmxvYWRXYXZlZm9ybSgpfWFzeW5jIGxvYWRXYXZlZm9ybSgpe3RyeXt0aGlzLmxvYWRpbmc9ITA7bGV0IEE9YXdhaXQoYXdhaXQgZmV0Y2godGhpcy5zcmMpKS5hcnJheUJ1ZmZlcigpLHNlPW5ldyBBdWRpb0NvbnRleHQsYWU9KGF3YWl0IHNlLmRlY29kZUF1ZGlvRGF0YShBKSkuZ2V0Q2hhbm5lbERhdGEoMCksVGU9MjAwLFJlPU1hdGguZmxvb3IoYWUubGVuZ3RoL1RlKSxCZT1bXTtmb3IobGV0IERlPTA7RGU8VGU7RGUrKyl7bGV0IF9lPTA7Zm9yKGxldCBDZT0wO0NlPFJlO0NlKyspX2UrPU1hdGguYWJzKGFlW0RlKlJlK0NlXSk7QmUucHVzaChfZS9SZSl9bGV0IEdlPU1hdGgubWF4KC4uLkJlKTt0aGlzLndhdmVmb3JtRGF0YT1CZS5tYXAoRGU9PkdlPjA/RGUvR2U6MCksdGhpcy53YXZlZm9ybVJlYWR5PSEwLHRoaXMubG9hZGluZz0hMSxhd2FpdCBzZS5jbG9zZSgpfWNhdGNoe3RoaXMud2F2ZWZvcm1SZWFkeT0hMSx0aGlzLmxvYWRpbmc9ITF9fWRyYXdXYXZlZm9ybSgpe2lmKCF0aGlzLnNob3dXYXZlZm9ybXx8IXRoaXMud2F2ZWZvcm1SZWFkeSlyZXR1cm47bGV0IHE9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTtpZighcSlyZXR1cm47dGhpcy5jYW52YXNFbGVtZW50PXE7bGV0IEE9cS5wYXJlbnRFbGVtZW50LHNlPXdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvfHwxLG9lPUEuY2xpZW50V2lkdGgsYWU9QS5jbGllbnRIZWlnaHQ7cS53aWR0aD1vZSpzZSxxLmhlaWdodD1hZSpzZTtsZXQgVGU9cS5nZXRDb250ZXh0KCIyZCIpO2lmKCFUZSlyZXR1cm47VGUuc2NhbGUoc2Usc2UpLFRlLmNsZWFyUmVjdCgwLDAsb2UsYWUpO2xldCBSZT10aGlzLndhdmVmb3JtRGF0YS5sZW5ndGg7aWYoUmU9PT0wKXJldHVybjtsZXQgQmU9b2UvUmUsR2U9dGhpcy5kdXJhdGlvbj4wP3RoaXMuY3VycmVudFRpbWUvdGhpcy5kdXJhdGlvbjowLERlPU1hdGguZmxvb3IoR2UqUmUpLF9lPWRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCJ0aGVtZS1kYXJrIil8fHdpbmRvdy5tYXRjaE1lZGlhKCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIikubWF0Y2hlcyxDZT1fZT8iaHNsKDIxMyA5MyUgNjglKSI6ImhzbCgyMTcgOTElIDYwJSkiLHZlPV9lPyJoc2woMjE3IDI1JSAyMiUpIjoiaHNsKDIxNCAzMSUgODYlKSI7Zm9yKGxldCBiZT0wO2JlPFJlO2JlKyspe2xldCBFZT10aGlzLndhdmVmb3JtRGF0YVtiZV0samU9TWF0aC5tYXgoMixFZSooYWUtNCkpLFdlPWJlKkJlLHN0PShhZS1qZSkvMjtUZS5maWxsU3R5bGU9YmU8RGU/Q2U6dmUsVGUuZmlsbFJlY3QoV2UrLjUsc3QsQmUtMSxqZSl9fWhhbmRsZVdhdmVmb3JtQ2xpY2socSl7bGV0IEE9cS5jdXJyZW50VGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHNlPShxLmNsaWVudFgtQS5sZWZ0KS9BLndpZHRoO3RoaXMuc2VlayhzZSp0aGlzLmR1cmF0aW9uKX1oYW5kbGVTZWVrYmFyQ2xpY2socSl7bGV0IEE9cS5jdXJyZW50VGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHNlPShxLmNsaWVudFgtQS5sZWZ0KS9BLndpZHRoO3RoaXMuc2VlayhzZSp0aGlzLmR1cmF0aW9uKX1oYW5kbGVWb2x1bWVDaGFuZ2UocSl7bGV0IEE9cGFyc2VGbG9hdChxLnRhcmdldC52YWx1ZSk7dGhpcy5zZXRWb2x1bWUoQSl9c3RhcnRUaW1lVXBkYXRlKCl7dGhpcy5zdG9wVGltZVVwZGF0ZSgpO2xldCBxPWkoKCk9Pnt0aGlzLmF1ZGlvRWxlbWVudCYmdGhpcy5pc1BsYXlpbmcmJih0aGlzLmN1cnJlbnRUaW1lPXRoaXMuYXVkaW9FbGVtZW50LmN1cnJlbnRUaW1lLHRoaXMuYW5pbUZyYW1lSWQ9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKHEpKX0sInVwZGF0ZSIpO3RoaXMuYW5pbUZyYW1lSWQ9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKHEpfXN0b3BUaW1lVXBkYXRlKCl7dGhpcy5hbmltRnJhbWVJZCYmKGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuYW5pbUZyYW1lSWQpLHRoaXMuYW5pbUZyYW1lSWQ9MCl9Zm9ybWF0VGltZShxKXtpZighaXNGaW5pdGUocSl8fHE8MClyZXR1cm4iMDowMCI7bGV0IEE9TWF0aC5mbG9vcihxLzYwKSxzZT1NYXRoLmZsb29yKHElNjApO3JldHVybmAke0F9OiR7c2UudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9YH1jbGVhbnVwKCl7dGhpcy5zdG9wVGltZVVwZGF0ZSgpLHRoaXMuYXVkaW9FbGVtZW50JiYodGhpcy5hdWRpb0VsZW1lbnQucGF1c2UoKSx0aGlzLmF1ZGlvRWxlbWVudC5zcmM9IiIsdGhpcy5hdWRpb0VsZW1lbnQ9bnVsbCksdGhpcy5pc1BsYXlpbmc9ITEsdGhpcy5jdXJyZW50VGltZT0wLHRoaXMuZHVyYXRpb249MCx0aGlzLndhdmVmb3JtRGF0YT1bXSx0aGlzLndhdmVmb3JtUmVhZHk9ITF9c3RhdGlje3pzKGEsdCl9fTtyZXR1cm4geWU9YX0pKCl9KTt2YXIgQTVhPWcoKCk9Pnt0cnQoKX0pO3ZhciBONWEsUjVhPWcoKCk9PntwZSgpO041YT1pKCgpPT53YAogIDxzdHlsZT4KICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgIHBhZGRpbmc6IDQ4cHg7CiAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjhmOWZhIiwiIzBhMGEwYSIpfTsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgZ2FwOiAzMnB4OwogICAgfQoKICAgIC5zZWN0aW9uIHsKICAgICAgbWF4LXdpZHRoOiA4MDBweDsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgfQoKICAgIC5zZWN0aW9uLXRpdGxlIHsKICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICBmb250LXdlaWdodDogNjAwOwogICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07CiAgICB9CgogICAgLnNlY3Rpb24tZGVzY3JpcHRpb24gewogICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICB9CiAgPC9zdHlsZT4KCiAgPGRpdiBjbGFzcz0iZGVtby1jb250YWluZXIiPgogICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPlZpZGVvIHdpdGggQ3VzdG9tIENvbnRyb2xzPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tZGVzY3JpcHRpb24iPkEgdmlkZW8gcGxheWVyIHdpdGggb3ZlcmxheSBjb250cm9scywgc2Vla2luZywgYW5kIHZvbHVtZSBhZGp1c3RtZW50LjwvZGl2PgogICAgICA8ZGVlcy12aWRlby12aWV3ZXIKICAgICAgICBzcmM9Imh0dHBzOi8vY29tbW9uZGF0YXN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZ3R2LXZpZGVvcy1idWNrZXQvc2FtcGxlL0JpZ0J1Y2tCdW5ueS5tcDQiCiAgICAgICAgcG9zdGVyPSJodHRwczovL2NvbW1vbmRhdGFzdG9yYWdlLmdvb2dsZWFwaXMuY29tL2d0di12aWRlb3MtYnVja2V0L3NhbXBsZS9pbWFnZXMvQmlnQnVja0J1bm55LmpwZyIKICAgICAgPjwvZGVlcy12aWRlby12aWV3ZXI+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+QXV0b3BsYXkgTXV0ZWQ8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1kZXNjcmlwdGlvbiI+VmlkZW8gdGhhdCBhdXRvcGxheXMgbXV0ZWQsIGNvbW1vbmx5IHVzZWQgZm9yIHByZXZpZXdzLjwvZGl2PgogICAgICA8ZGVlcy12aWRlby12aWV3ZXIKICAgICAgICBzcmM9Imh0dHBzOi8vY29tbW9uZGF0YXN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZ3R2LXZpZGVvcy1idWNrZXQvc2FtcGxlL0VsZXBoYW50c0RyZWFtLm1wNCIKICAgICAgICBwb3N0ZXI9Imh0dHBzOi8vY29tbW9uZGF0YXN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZ3R2LXZpZGVvcy1idWNrZXQvc2FtcGxlL2ltYWdlcy9FbGVwaGFudHNEcmVhbS5qcGciCiAgICAgICAgLmF1dG9wbGF5PSR7ITB9CiAgICAgICAgLm11dGVkPSR7ITB9CiAgICAgID48L2RlZXMtdmlkZW8tdmlld2VyPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPk5hdGl2ZSBDb250cm9sczwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj5WaWRlbyB1c2luZyBicm93c2VyLW5hdGl2ZSBjb250cm9scyBpbnN0ZWFkIG9mIGN1c3RvbSBvdmVybGF5LjwvZGl2PgogICAgICA8ZGVlcy12aWRlby12aWV3ZXIKICAgICAgICBzcmM9Imh0dHBzOi8vY29tbW9uZGF0YXN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZ3R2LXZpZGVvcy1idWNrZXQvc2FtcGxlL0ZvckJpZ2dlckJsYXplcy5tcDQiCiAgICAgICAgLnNob3dDb250cm9scz0keyExfQogICAgICA+PC9kZWVzLXZpZGVvLXZpZXdlcj4KICAgIDwvZGl2PgogIDwvZGl2PgpgLCJkZW1vIil9KTt2YXIgRm4scXMsTzVhLGFydD1nKCgpPT57cGUoKTtVYSgpO1I1YSgpO0ZuPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxxcz1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sTzVhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy12aWRlby12aWV3ZXIiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXSxPLCQ9W10sRT1bXSxILGs9W10sUz1bXSxJLFA9W10sUj1bXSxLLFY9W10sVz1bXSxtZSxCPVtdLFU9W10saGUsRj1bXSxqPVtdLHVlLGxlPVtdLFE9W10saWUsdGU9W10sZWU9W107dmFyIGtlPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzVmlkZW9WaWV3ZXIiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgWD10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKCldLHA9W0woKV0sYz1bTCh7dHlwZTpCb29sZWFufSldLHg9W0woe3R5cGU6Qm9vbGVhbn0pXSx5PVtMKHt0eXBlOkJvb2xlYW59KV0sTj1bTCh7dHlwZTpCb29sZWFufSldLE89W1koKV0sSD1bWSgpXSxJPVtZKCldLEs9W1koKV0sbWU9W1koKV0saGU9W1koKV0sdWU9W1koKV0saWU9W1koKV0sRm4odGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzcmMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoWj0+InNyYyJpbiBaLCJoYXMiKSxnZXQ6aShaPT5aLnNyYywiZ2V0Iiksc2V0OmkoKFoseWUpPT57Wi5zcmM9eWV9LCJzZXQiKX0sbWV0YWRhdGE6WH0sbyxsKSxGbih0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InBvc3RlciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShaPT4icG9zdGVyImluIFosImhhcyIpLGdldDppKFo9PloucG9zdGVyLCJnZXQiKSxzZXQ6aSgoWix5ZSk9PntaLnBvc3Rlcj15ZX0sInNldCIpfSxtZXRhZGF0YTpYfSxkLHUpLEZuKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2hvd0NvbnRyb2xzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFo9PiJzaG93Q29udHJvbHMiaW4gWiwiaGFzIiksZ2V0OmkoWj0+Wi5zaG93Q29udHJvbHMsImdldCIpLHNldDppKChaLHllKT0+e1ouc2hvd0NvbnRyb2xzPXllfSwic2V0Iil9LG1ldGFkYXRhOlh9LGIsdiksRm4odGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJhdXRvcGxheSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShaPT4iYXV0b3BsYXkiaW4gWiwiaGFzIiksZ2V0OmkoWj0+Wi5hdXRvcGxheSwiZ2V0Iiksc2V0OmkoKFoseWUpPT57Wi5hdXRvcGxheT15ZX0sInNldCIpfSxtZXRhZGF0YTpYfSxtLGYpLEZuKHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToibG9vcCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShaPT4ibG9vcCJpbiBaLCJoYXMiKSxnZXQ6aShaPT5aLmxvb3AsImdldCIpLHNldDppKChaLHllKT0+e1oubG9vcD15ZX0sInNldCIpfSxtZXRhZGF0YTpYfSxNLHopLEZuKHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibXV0ZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoWj0+Im11dGVkImluIFosImhhcyIpLGdldDppKFo9PloubXV0ZWQsImdldCIpLHNldDppKChaLHllKT0+e1oubXV0ZWQ9eWV9LCJzZXQiKX0sbWV0YWRhdGE6WH0sQyxfKSxGbih0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImlzUGxheWluZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShaPT4iaXNQbGF5aW5nImluIFosImhhcyIpLGdldDppKFo9PlouaXNQbGF5aW5nLCJnZXQiKSxzZXQ6aSgoWix5ZSk9PntaLmlzUGxheWluZz15ZX0sInNldCIpfSxtZXRhZGF0YTpYfSwkLEUpLEZuKHRoaXMsbnVsbCxILHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY3VycmVudFRpbWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoWj0+ImN1cnJlbnRUaW1lImluIFosImhhcyIpLGdldDppKFo9PlouY3VycmVudFRpbWUsImdldCIpLHNldDppKChaLHllKT0+e1ouY3VycmVudFRpbWU9eWV9LCJzZXQiKX0sbWV0YWRhdGE6WH0sayxTKSxGbih0aGlzLG51bGwsSSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImR1cmF0aW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFo9PiJkdXJhdGlvbiJpbiBaLCJoYXMiKSxnZXQ6aShaPT5aLmR1cmF0aW9uLCJnZXQiKSxzZXQ6aSgoWix5ZSk9PntaLmR1cmF0aW9uPXllfSwic2V0Iil9LG1ldGFkYXRhOlh9LFAsUiksRm4odGhpcyxudWxsLEsse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2b2x1bWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoWj0+InZvbHVtZSJpbiBaLCJoYXMiKSxnZXQ6aShaPT5aLnZvbHVtZSwiZ2V0Iiksc2V0OmkoKFoseWUpPT57Wi52b2x1bWU9eWV9LCJzZXQiKX0sbWV0YWRhdGE6WH0sVixXKSxGbih0aGlzLG51bGwsbWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJsb2FkaW5nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFo9PiJsb2FkaW5nImluIFosImhhcyIpLGdldDppKFo9PloubG9hZGluZywiZ2V0Iiksc2V0OmkoKFoseWUpPT57Wi5sb2FkaW5nPXllfSwic2V0Iil9LG1ldGFkYXRhOlh9LEIsVSksRm4odGhpcyxudWxsLGhlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZXJyb3IiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoWj0+ImVycm9yImluIFosImhhcyIpLGdldDppKFo9PlouZXJyb3IsImdldCIpLHNldDppKChaLHllKT0+e1ouZXJyb3I9eWV9LCJzZXQiKX0sbWV0YWRhdGE6WH0sRixqKSxGbih0aGlzLG51bGwsdWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpc0Z1bGxzY3JlZW4iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoWj0+ImlzRnVsbHNjcmVlbiJpbiBaLCJoYXMiKSxnZXQ6aShaPT5aLmlzRnVsbHNjcmVlbiwiZ2V0Iiksc2V0OmkoKFoseWUpPT57Wi5pc0Z1bGxzY3JlZW49eWV9LCJzZXQiKX0sbWV0YWRhdGE6WH0sbGUsUSksRm4odGhpcyxudWxsLGllLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY29udHJvbHNWaXNpYmxlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFo9PiJjb250cm9sc1Zpc2libGUiaW4gWiwiaGFzIiksZ2V0OmkoWj0+Wi5jb250cm9sc1Zpc2libGUsImdldCIpLHNldDppKChaLHllKT0+e1ouY29udHJvbHNWaXNpYmxlPXllfSwic2V0Iil9LG1ldGFkYXRhOlh9LHRlLGVlKSxGbihudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpYfSxudWxsLHQpLGtlPWE9ZS52YWx1ZSxYJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOlh9KX1zdGF0aWMgZGVtbz1ONWE7c3RhdGljIGRlbW9Hcm91cHM9WyJNZWRpYSJdOyNlPXFzKHRoaXMsbywiIik7Z2V0IHNyYygpe3JldHVybiB0aGlzLiNlfXNldCBzcmMoWCl7dGhpcy4jZT1YfSN0PShxcyh0aGlzLGwpLHFzKHRoaXMsZCwiIikpO2dldCBwb3N0ZXIoKXtyZXR1cm4gdGhpcy4jdH1zZXQgcG9zdGVyKFgpe3RoaXMuI3Q9WH0jYT0ocXModGhpcyx1KSxxcyh0aGlzLGIsITApKTtnZXQgc2hvd0NvbnRyb2xzKCl7cmV0dXJuIHRoaXMuI2F9c2V0IHNob3dDb250cm9scyhYKXt0aGlzLiNhPVh9I3M9KHFzKHRoaXMsdikscXModGhpcyxtLCExKSk7Z2V0IGF1dG9wbGF5KCl7cmV0dXJuIHRoaXMuI3N9c2V0IGF1dG9wbGF5KFgpe3RoaXMuI3M9WH0jaT0ocXModGhpcyxmKSxxcyh0aGlzLE0sITEpKTtnZXQgbG9vcCgpe3JldHVybiB0aGlzLiNpfXNldCBsb29wKFgpe3RoaXMuI2k9WH0jcj0ocXModGhpcyx6KSxxcyh0aGlzLEMsITEpKTtnZXQgbXV0ZWQoKXtyZXR1cm4gdGhpcy4jcn1zZXQgbXV0ZWQoWCl7dGhpcy4jcj1YfSNvPShxcyh0aGlzLF8pLHFzKHRoaXMsJCwhMSkpO2dldCBpc1BsYXlpbmcoKXtyZXR1cm4gdGhpcy4jb31zZXQgaXNQbGF5aW5nKFgpe3RoaXMuI289WH0jbj0ocXModGhpcyxFKSxxcyh0aGlzLGssMCkpO2dldCBjdXJyZW50VGltZSgpe3JldHVybiB0aGlzLiNufXNldCBjdXJyZW50VGltZShYKXt0aGlzLiNuPVh9I2w9KHFzKHRoaXMsUykscXModGhpcyxQLDApKTtnZXQgZHVyYXRpb24oKXtyZXR1cm4gdGhpcy4jbH1zZXQgZHVyYXRpb24oWCl7dGhpcy4jbD1YfSNjPShxcyh0aGlzLFIpLHFzKHRoaXMsViwxKSk7Z2V0IHZvbHVtZSgpe3JldHVybiB0aGlzLiNjfXNldCB2b2x1bWUoWCl7dGhpcy4jYz1YfSNkPShxcyh0aGlzLFcpLHFzKHRoaXMsQiwhMCkpO2dldCBsb2FkaW5nKCl7cmV0dXJuIHRoaXMuI2R9c2V0IGxvYWRpbmcoWCl7dGhpcy4jZD1YfSN1PShxcyh0aGlzLFUpLHFzKHRoaXMsRiwiIikpO2dldCBlcnJvcigpe3JldHVybiB0aGlzLiN1fXNldCBlcnJvcihYKXt0aGlzLiN1PVh9I3A9KHFzKHRoaXMsaikscXModGhpcyxsZSwhMSkpO2dldCBpc0Z1bGxzY3JlZW4oKXtyZXR1cm4gdGhpcy4jcH1zZXQgaXNGdWxsc2NyZWVuKFgpe3RoaXMuI3A9WH0jaD0ocXModGhpcyxRKSxxcyh0aGlzLHRlLCEwKSk7Z2V0IGNvbnRyb2xzVmlzaWJsZSgpe3JldHVybiB0aGlzLiNofXNldCBjb250cm9sc1Zpc2libGUoWCl7dGhpcy4jaD1YfWhpZGVDb250cm9sc1RpbWVyPShxcyh0aGlzLGVlKSxudWxsKTt2aWRlb0VsZW1lbnQ9bnVsbDtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPHN0eWxlPgogICAgICAgIDpob3N0IHsKICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBzYW5zLXNlcmlmOwogICAgICAgIH0KCiAgICAgICAgLnZpZGVvLWNvbnRhaW5lciB7CiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgIGFzcGVjdC1yYXRpbzogMTYgLyA5OwogICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMDsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgfQoKICAgICAgICB2aWRlbyB7CiAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47CiAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB9CgogICAgICAgIC5vdmVybGF5IHsKICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgIGluc2V0OiAwOwogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIH0KCiAgICAgICAgLmNlbnRlci1wbGF5IHsKICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgIHRvcDogNTAlOwogICAgICAgICAgbGVmdDogNTAlOwogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICAgICAgICB3aWR0aDogNjRweDsKICAgICAgICAgIGhlaWdodDogNjRweDsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC42KTsKICAgICAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlLCB0cmFuc2Zvcm0gMC4ycyBlYXNlOwogICAgICAgICAgb3BhY2l0eTogJHt0aGlzLmlzUGxheWluZz8wOjF9OwogICAgICAgICAgcG9pbnRlci1ldmVudHM6ICR7dGhpcy5pc1BsYXlpbmc/Im5vbmUiOiJhdXRvIn07CiAgICAgICAgfQoKICAgICAgICAuY2VudGVyLXBsYXkgZGVlcy1pY29uIHsKICAgICAgICAgIGZvbnQtc2l6ZTogMjhweDsKICAgICAgICB9CgogICAgICAgIC5jZW50ZXItcGxheTpob3ZlciB7CiAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuOCk7CiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKSBzY2FsZSgxLjEpOwogICAgICAgIH0KCiAgICAgICAgLmNvbnRyb2xzLWJhciB7CiAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodHJhbnNwYXJlbnQsIHJnYmEoMCwgMCwgMCwgMC43KSk7CiAgICAgICAgICBwYWRkaW5nOiAyNHB4IDEycHggMTJweDsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgICBvcGFjaXR5OiAke3RoaXMuY29udHJvbHNWaXNpYmxlfHwhdGhpcy5pc1BsYXlpbmc/MTowfTsKICAgICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgLnNlZWtiYXItcm93IHsKICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgaGVpZ2h0OiA0cHg7CiAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgfQoKICAgICAgICAuc2Vla2Jhci1yb3c6aG92ZXIgewogICAgICAgICAgaGVpZ2h0OiA2cHg7CiAgICAgICAgfQoKICAgICAgICAuc2Vla2Jhci1wcm9ncmVzcyB7CiAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiIzNiODJmNiIsIiM2MGE1ZmEiKX07CiAgICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICB9CgogICAgICAgIC5jb250cm9scy1yb3cgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBnYXA6IDhweDsKICAgICAgICB9CgogICAgICAgIC5jdHJsLWJ1dHRvbiB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cyBlYXNlOwogICAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgfQoKICAgICAgICAuY3RybC1idXR0b24gZGVlcy1pY29uIHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICB9CgogICAgICAgIC5jdHJsLWJ1dHRvbjpob3ZlciB7CiAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpOwogICAgICAgIH0KCiAgICAgICAgLnRpbWUtZGlzcGxheSB7CiAgICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zOwogICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsKICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgfQoKICAgICAgICAuc3BhY2VyIHsKICAgICAgICAgIGZsZXg6IDE7CiAgICAgICAgfQoKICAgICAgICAudm9sdW1lLWdyb3VwIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgZ2FwOiA0cHg7CiAgICAgICAgfQoKICAgICAgICAudm9sdW1lLXNsaWRlciB7CiAgICAgICAgICB3aWR0aDogNjBweDsKICAgICAgICAgIGhlaWdodDogNHB4OwogICAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwogICAgICAgICAgYXBwZWFyYW5jZTogbm9uZTsKICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgfQoKICAgICAgICAudm9sdW1lLXNsaWRlcjo6LXdlYmtpdC1zbGlkZXItdGh1bWIgewogICAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwogICAgICAgICAgd2lkdGg6IDEycHg7CiAgICAgICAgICBoZWlnaHQ6IDEycHg7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmOwogICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIH0KCiAgICAgICAgLnZvbHVtZS1zbGlkZXI6Oi1tb3otcmFuZ2UtdGh1bWIgewogICAgICAgICAgd2lkdGg6IDEycHg7CiAgICAgICAgICBoZWlnaHQ6IDEycHg7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmOwogICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIH0KCiAgICAgICAgLmxvYWRpbmctb3ZlcmxheSB7CiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICBpbnNldDogMDsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMyk7CiAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICB9CgogICAgICAgIC5sb2FkaW5nLXNwaW5uZXIgewogICAgICAgICAgd2lkdGg6IDQwcHg7CiAgICAgICAgICBoZWlnaHQ6IDQwcHg7CiAgICAgICAgICBib3JkZXI6IDNweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7CiAgICAgICAgICBib3JkZXItdG9wLWNvbG9yOiAjZmZmZmZmOwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgICAgYW5pbWF0aW9uOiBzcGluIDAuOHMgbGluZWFyIGluZmluaXRlOwogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyBzcGluIHsKICAgICAgICAgIHRvIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfQogICAgICAgIH0KCiAgICAgICAgLmVycm9yLW92ZXJsYXkgewogICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgaW5zZXQ6IDA7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgIGdhcDogOHB4OwogICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTsKICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC42KTsKICAgICAgICB9CgogICAgICAgIC5lcnJvci1vdmVybGF5IGRlZXMtaWNvbiB7CiAgICAgICAgICBjb2xvcjogI2Y4NzE3MTsKICAgICAgICAgIGZvbnQtc2l6ZTogMzJweDsKICAgICAgICB9CgogICAgICAgIC5lcnJvci10ZXh0IHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICB9CiAgICAgIDwvc3R5bGU+CgogICAgICA8ZGl2CiAgICAgICAgY2xhc3M9InZpZGVvLWNvbnRhaW5lciIKICAgICAgICBAbW91c2Vtb3ZlPSR7dGhpcy5oYW5kbGVNb3VzZU1vdmV9CiAgICAgICAgQG1vdXNlbGVhdmU9JHt0aGlzLmhhbmRsZU1vdXNlTGVhdmV9CiAgICAgID4KICAgICAgICA8dmlkZW8KICAgICAgICAgIC5zcmM9JHt0aGlzLnNyY30KICAgICAgICAgIC5wb3N0ZXI9JHt0aGlzLnBvc3Rlcn0KICAgICAgICAgIC5tdXRlZD0ke3RoaXMubXV0ZWR9CiAgICAgICAgICAubG9vcD0ke3RoaXMubG9vcH0KICAgICAgICAgID9hdXRvcGxheT0ke3RoaXMuYXV0b3BsYXl9CiAgICAgICAgICA/Y29udHJvbHM9JHshdGhpcy5zaG93Q29udHJvbHN9CiAgICAgICAgICBwbGF5c2lubGluZQogICAgICAgICAgQGxvYWRlZG1ldGFkYXRhPSR7dGhpcy5oYW5kbGVMb2FkZWRNZXRhZGF0YX0KICAgICAgICAgIEBwbGF5PSR7dGhpcy5oYW5kbGVQbGF5fQogICAgICAgICAgQHBhdXNlPSR7dGhpcy5oYW5kbGVQYXVzZX0KICAgICAgICAgIEBlbmRlZD0ke3RoaXMuaGFuZGxlRW5kZWR9CiAgICAgICAgICBAdGltZXVwZGF0ZT0ke3RoaXMuaGFuZGxlVGltZVVwZGF0ZX0KICAgICAgICAgIEBlcnJvcj0ke3RoaXMuaGFuZGxlRXJyb3J9CiAgICAgICAgICBAd2FpdGluZz0keygpPT57dGhpcy5sb2FkaW5nPSEwfX0KICAgICAgICAgIEBjYW5wbGF5PSR7KCk9Pnt0aGlzLmxvYWRpbmc9ITF9fQogICAgICAgID48L3ZpZGVvPgoKICAgICAgICAke3RoaXMuc2hvd0NvbnRyb2xzP3dgCiAgICAgICAgICA8ZGl2IGNsYXNzPSJvdmVybGF5IiBAY2xpY2s9JHt0aGlzLmhhbmRsZU92ZXJsYXlDbGlja30+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNlbnRlci1wbGF5Ij4KICAgICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpQbGF5Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9scy1iYXIiIEBjbGljaz0ke1g9Plguc3RvcFByb3BhZ2F0aW9uKCl9PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlZWtiYXItcm93IiBAY2xpY2s9JHt0aGlzLmhhbmRsZVNlZWt9PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2Vla2Jhci1wcm9ncmVzcyIgc3R5bGU9IndpZHRoOiAke3RoaXMuZHVyYXRpb24/dGhpcy5jdXJyZW50VGltZS90aGlzLmR1cmF0aW9uKjEwMDowfSUiPjwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9scy1yb3ciPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY3RybC1idXR0b24iIEBjbGljaz0ke3RoaXMudG9nZ2xlUGxheX0+CiAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOiR7dGhpcy5pc1BsYXlpbmc/IlBhdXNlIjoiUGxheSJ9Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgoKICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0aW1lLWRpc3BsYXkiPgogICAgICAgICAgICAgICAgICAke3RoaXMuZm9ybWF0VGltZSh0aGlzLmN1cnJlbnRUaW1lKX0gLyAke3RoaXMuZm9ybWF0VGltZSh0aGlzLmR1cmF0aW9uKX0KICAgICAgICAgICAgICAgIDwvc3Bhbj4KCiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3BhY2VyIj48L3NwYW4+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idm9sdW1lLWdyb3VwIj4KICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY3RybC1idXR0b24iIEBjbGljaz0ke3RoaXMudG9nZ2xlTXV0ZX0+CiAgICAgICAgICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6JHt0aGlzLm11dGVkfHx0aGlzLnZvbHVtZT09PTA/IlZvbHVtZVgiOnRoaXMudm9sdW1lPC41PyJWb2x1bWUxIjoiVm9sdW1lMiJ9Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgIDxpbnB1dAogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJ2b2x1bWUtc2xpZGVyIgogICAgICAgICAgICAgICAgICAgIHR5cGU9InJhbmdlIgogICAgICAgICAgICAgICAgICAgIG1pbj0iMCIKICAgICAgICAgICAgICAgICAgICBtYXg9IjEiCiAgICAgICAgICAgICAgICAgICAgc3RlcD0iMC4wMSIKICAgICAgICAgICAgICAgICAgICAudmFsdWU9JHtTdHJpbmcodGhpcy5tdXRlZD8wOnRoaXMudm9sdW1lKX0KICAgICAgICAgICAgICAgICAgICBAaW5wdXQ9JHt0aGlzLmhhbmRsZVZvbHVtZUNoYW5nZX0KICAgICAgICAgICAgICAgICAgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImN0cmwtYnV0dG9uIiBAY2xpY2s9JHt0aGlzLnRvZ2dsZUZ1bGxzY3JlZW59IHRpdGxlPSJGdWxsc2NyZWVuIj4KICAgICAgICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6JHt0aGlzLmlzRnVsbHNjcmVlbj8iTWluaW1pemUiOiJNYXhpbWl6ZSJ9Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIGA6IiJ9CgogICAgICAgICR7dGhpcy5sb2FkaW5nJiYhdGhpcy5lcnJvcj93YAogICAgICAgICAgPGRpdiBjbGFzcz0ibG9hZGluZy1vdmVybGF5Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9hZGluZy1zcGlubmVyIj48L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIGA6IiJ9CgogICAgICAgICR7dGhpcy5lcnJvcj93YAogICAgICAgICAgPGRpdiBjbGFzcz0iZXJyb3Itb3ZlcmxheSI+CiAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOlZpZGVvT2ZmIj48L2RlZXMtaWNvbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImVycm9yLXRleHQiPiR7dGhpcy5lcnJvcn08L3NwYW4+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgOiIifQogICAgICA8L2Rpdj4KICAgIGB9YXN5bmMgZmlyc3RVcGRhdGVkKCl7dGhpcy52aWRlb0VsZW1lbnQ9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCJ2aWRlbyIpfHxudWxsLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZ1bGxzY3JlZW5jaGFuZ2UiLHRoaXMuaGFuZGxlRnVsbHNjcmVlbkNoYW5nZSl9YXN5bmMgZGlzY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImZ1bGxzY3JlZW5jaGFuZ2UiLHRoaXMuaGFuZGxlRnVsbHNjcmVlbkNoYW5nZSksdGhpcy5oaWRlQ29udHJvbHNUaW1lciYmY2xlYXJUaW1lb3V0KHRoaXMuaGlkZUNvbnRyb2xzVGltZXIpfXBsYXkoKXt0aGlzLnZpZGVvRWxlbWVudD8ucGxheSgpfXBhdXNlKCl7dGhpcy52aWRlb0VsZW1lbnQ/LnBhdXNlKCl9dG9nZ2xlUGxheSgpe3RoaXMuaXNQbGF5aW5nP3RoaXMucGF1c2UoKTp0aGlzLnBsYXkoKX1zZWVrKFgpe3RoaXMudmlkZW9FbGVtZW50JiYodGhpcy52aWRlb0VsZW1lbnQuY3VycmVudFRpbWU9WCl9c2V0Vm9sdW1lKFgpe3RoaXMudm9sdW1lPU1hdGgubWF4KDAsTWF0aC5taW4oMSxYKSksdGhpcy52aWRlb0VsZW1lbnQmJih0aGlzLnZpZGVvRWxlbWVudC52b2x1bWU9dGhpcy52b2x1bWUpfXRvZ2dsZUZ1bGxzY3JlZW4oKXtsZXQgWD10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi52aWRlby1jb250YWluZXIiKTtYJiYodGhpcy5pc0Z1bGxzY3JlZW4/ZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4/LigpOlgucmVxdWVzdEZ1bGxzY3JlZW4/LigpKX1oYW5kbGVMb2FkZWRNZXRhZGF0YSgpe3RoaXMudmlkZW9FbGVtZW50JiYodGhpcy5kdXJhdGlvbj10aGlzLnZpZGVvRWxlbWVudC5kdXJhdGlvbix0aGlzLmxvYWRpbmc9ITEpfWhhbmRsZVBsYXkoKXt0aGlzLmlzUGxheWluZz0hMCx0aGlzLnNjaGVkdWxlSGlkZUNvbnRyb2xzKCl9aGFuZGxlUGF1c2UoKXt0aGlzLmlzUGxheWluZz0hMSx0aGlzLmNvbnRyb2xzVmlzaWJsZT0hMH1oYW5kbGVFbmRlZCgpe3RoaXMuaXNQbGF5aW5nPSExLHRoaXMuY29udHJvbHNWaXNpYmxlPSEwfWhhbmRsZVRpbWVVcGRhdGUoKXt0aGlzLnZpZGVvRWxlbWVudCYmKHRoaXMuY3VycmVudFRpbWU9dGhpcy52aWRlb0VsZW1lbnQuY3VycmVudFRpbWUpfWhhbmRsZUVycm9yKCl7dGhpcy5lcnJvcj0iRmFpbGVkIHRvIGxvYWQgdmlkZW8iLHRoaXMubG9hZGluZz0hMX1oYW5kbGVPdmVybGF5Q2xpY2soKXt0aGlzLnRvZ2dsZVBsYXkoKX1oYW5kbGVTZWVrKFgpe2xldCBaPVguY3VycmVudFRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx5ZT0oWC5jbGllbnRYLVoubGVmdCkvWi53aWR0aDt0aGlzLnNlZWsoeWUqdGhpcy5kdXJhdGlvbil9aGFuZGxlVm9sdW1lQ2hhbmdlKFgpe2xldCBaPXBhcnNlRmxvYXQoWC50YXJnZXQudmFsdWUpO3RoaXMuc2V0Vm9sdW1lKFopLHRoaXMubXV0ZWQ9Wj09PTB9dG9nZ2xlTXV0ZSgpe3RoaXMubXV0ZWQ9IXRoaXMubXV0ZWQsdGhpcy52aWRlb0VsZW1lbnQmJih0aGlzLnZpZGVvRWxlbWVudC5tdXRlZD10aGlzLm11dGVkKX1oYW5kbGVNb3VzZU1vdmUoKXt0aGlzLmNvbnRyb2xzVmlzaWJsZT0hMCx0aGlzLnNjaGVkdWxlSGlkZUNvbnRyb2xzKCl9aGFuZGxlTW91c2VMZWF2ZSgpe3RoaXMuaXNQbGF5aW5nJiYodGhpcy5jb250cm9sc1Zpc2libGU9ITEpfXNjaGVkdWxlSGlkZUNvbnRyb2xzKCl7dGhpcy5oaWRlQ29udHJvbHNUaW1lciYmY2xlYXJUaW1lb3V0KHRoaXMuaGlkZUNvbnRyb2xzVGltZXIpLHRoaXMuaXNQbGF5aW5nJiYodGhpcy5oaWRlQ29udHJvbHNUaW1lcj1zZXRUaW1lb3V0KCgpPT57dGhpcy5jb250cm9sc1Zpc2libGU9ITF9LDNlMykpfWhhbmRsZUZ1bGxzY3JlZW5DaGFuZ2U9aSgoKT0+e3RoaXMuaXNGdWxsc2NyZWVuPSEhZG9jdW1lbnQuZnVsbHNjcmVlbkVsZW1lbnR9LCJoYW5kbGVGdWxsc2NyZWVuQ2hhbmdlIik7Zm9ybWF0VGltZShYKXtpZighaXNGaW5pdGUoWCl8fFg8MClyZXR1cm4iMDowMCI7bGV0IFo9TWF0aC5mbG9vcihYLzYwKSx5ZT1NYXRoLmZsb29yKFglNjApO3JldHVybmAke1p9OiR7eWUudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9YH1zdGF0aWN7cXMoYSx0KX19O3JldHVybiBrZT1hfSkoKX0pO3ZhciBGNWE9ZygoKT0+e2FydCgpfSk7dmFyIEdkLHIxZT1nKCgpPT57cGUoKTtHZD1jbGFzc3tzdGF0aWN7aSh0aGlzLCJQZGZNYW5hZ2VyIil9c3RhdGljIHBkZmpzTGliO3N0YXRpYyBpbml0aWFsaXplZD0hMTtzdGF0aWMgYXN5bmMgaW5pdGlhbGl6ZSgpe3RoaXMuaW5pdGlhbGl6ZWR8fCh0aGlzLnBkZmpzTGliPWF3YWl0IGltcG9ydCgiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9wZGZqcy1kaXN0QDQuMC4zNzkvK2VzbSIpLHRoaXMucGRmanNMaWIuR2xvYmFsV29ya2VyT3B0aW9ucy53b3JrZXJTcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vcGRmanMtZGlzdEA0LjAuMzc5L2J1aWxkL3BkZi53b3JrZXIubWpzIix0aGlzLmluaXRpYWxpemVkPSEwKX1zdGF0aWMgYXN5bmMgbG9hZERvY3VtZW50KGUpe3JldHVybiBhd2FpdCB0aGlzLmluaXRpYWxpemUoKSxhd2FpdCB0aGlzLnBkZmpzTGliLmdldERvY3VtZW50KGUpLnByb21pc2V9c3RhdGljIHJlbGVhc2VEb2N1bWVudChlKXt9fX0pO3ZhciBCNWEsSDVhPWcoKCk9PntwZSgpO3B0KCk7QjVhPVtIZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgIDpob3N0IHsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBoZWlnaHQ6IDYwMHB4OwogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIGZvbnQtZmFtaWx5OiAnR2Vpc3QgU2FucycsIHNhbnMtc2VyaWY7CiAgICAgIGNvbnRhaW46IGxheW91dCBzdHlsZTsKICAgIH0KCiAgICBkZWVzLXRpbGUgewogICAgICBoZWlnaHQ6IDEwMCU7CiAgICB9CgogICAgLnZpZXdlci1jb250YWluZXI6OmJlZm9yZSwKICAgIC52aWV3ZXItY29udGFpbmVyOjphZnRlciB7CiAgICAgIGNvbnRlbnQ6ICcnOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIGxlZnQ6IDA7CiAgICAgIHJpZ2h0OiAwOwogICAgICBoZWlnaHQ6IDhweDsKICAgICAgei1pbmRleDogNTsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICB9CgogICAgLnZpZXdlci1jb250YWluZXI6OmJlZm9yZSB7CiAgICAgIHRvcDogMDsKICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KAogICAgICAgIHRvIGJvdHRvbSwKICAgICAgICAke2guYmRUaGVtZSgiaHNsKDAgMCUgMCUgLyAwLjA4KSIsImhzbCgwIDAlIDAlIC8gMC40KSIpfSwKICAgICAgICAke2guYmRUaGVtZSgiaHNsKDAgMCUgMCUgLyAwLjAzKSIsImhzbCgwIDAlIDAlIC8gMC4xMikiKX0sCiAgICAgICAgdHJhbnNwYXJlbnQKICAgICAgKTsKICAgIH0KCiAgICAudmlld2VyLWNvbnRhaW5lcjo6YWZ0ZXIgewogICAgICBib3R0b206IDA7CiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgKICAgICAgICB0byB0b3AsCiAgICAgICAgJHtoLmJkVGhlbWUoImhzbCgwIDAlIDAlIC8gMC4wOCkiLCJoc2woMCAwJSAwJSAvIDAuNCkiKX0sCiAgICAgICAgJHtoLmJkVGhlbWUoImhzbCgwIDAlIDAlIC8gMC4wMykiLCJoc2woMCAwJSAwJSAvIDAuMTIpIil9LAogICAgICAgIHRyYW5zcGFyZW50CiAgICAgICk7CiAgICB9CgogICAgLnRvb2xiYXIgewogICAgICBoZWlnaHQ6IDQwcHg7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIHBhZGRpbmc6IDAgMTJweDsKICAgICAgZ2FwOiAxMnB4OwogICAgfQoKICAgIC50b29sYmFyLWdyb3VwIHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgZ2FwOiA0cHg7CiAgICB9CgogICAgLnRvb2xiYXItZ3JvdXAtLWVuZCB7CiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgfQoKICAgIC50b29sYmFyLWJ1dHRvbiB7CiAgICAgIHdpZHRoOiAzMnB4OwogICAgICBoZWlnaHQ6IDMycHg7CiAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cyBlYXNlOwogICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUgMTYlIDQ1JSkiLCJoc2woMjE1IDE2JSA3NSUpIil9OwogICAgfQoKICAgIC50b29sYmFyLWJ1dHRvbjpob3Zlcjpub3QoOmRpc2FibGVkKSB7CiAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjE0IDMxJSA5MiUpIiwiaHNsKDIxNyAyNSUgMjIlKSIpfTsKICAgIH0KCiAgICAudG9vbGJhci1idXR0b246ZGlzYWJsZWQgewogICAgICBvcGFjaXR5OiAwLjQ7CiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICB9CgogICAgLnRvb2xiYXItYnV0dG9uIGRlZXMtaWNvbiB7CiAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIH0KCiAgICAucGFnZS1pbmZvIHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgZ2FwOiA4cHg7CiAgICAgIHBhZGRpbmc6IDAgOHB4OwogICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNSAxNiUgNDUlKSIsImhzbCgyMTUgMTYlIDc1JSkiKX07CiAgICB9CgogICAgLnBhZ2UtaW5wdXQgewogICAgICB3aWR0aDogNDhweDsKICAgICAgaGVpZ2h0OiAyOHB4OwogICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMjE0IDMxJSA4NiUpIiwiaHNsKDIxNyAyNSUgMjglKSIpfTsKICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDEwMCUpIiwiaHNsKDIxNSAyMCUgMTIlKSIpfTsKICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjIyIDQ3JSAxMSUpIiwiaHNsKDIxMCAyMCUgOTYlKSIpfTsKICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogICAgICBvdXRsaW5lOiBub25lOwogICAgfQoKICAgIC5wYWdlLWlucHV0OmZvY3VzIHsKICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNyA5MSUgNjAlKSIsImhzbCgyMTMgOTMlIDY4JSkiKX07CiAgICB9CgogICAgLnBhZ2Utc2VwYXJhdG9yIHsKICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1IDE2JSA2MCUpIiwiaHNsKDIxNSAxNiUgNTAlKSIpfTsKICAgIH0KCiAgICAuem9vbS1sZXZlbCB7CiAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgbWluLXdpZHRoOiA0OHB4OwogICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB9CgogICAgLnZpZXdlci1jb250YWluZXIgewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIGluc2V0OiAwOwogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgfQoKICAgIC5zaWRlYmFyIHsKICAgICAgd2lkdGg6IDIwMHB4OwogICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgyMTQgMzElIDkxJSkiLCJoc2woMjE3IDI1JSAyMiUpIil9OwogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIG9yZGVyOiAwOwogICAgfQoKICAgIC5zaWRlYmFyLXJpZ2h0IC5zaWRlYmFyIHsKICAgICAgYm9yZGVyLXJpZ2h0OiBub25lOwogICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMjE0IDMxJSA5MSUpIiwiaHNsKDIxNyAyNSUgMjIlKSIpfTsKICAgICAgb3JkZXI6IDE7CiAgICB9CgogICAgLnNpZGViYXItaGVhZGVyIHsKICAgICAgaGVpZ2h0OiA0MHB4OwogICAgICBwYWRkaW5nOiAwIDEycHg7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMjE0IDMxJSA5MSUpIiwiaHNsKDIxNyAyNSUgMjIlKSIpfTsKICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICBmb250LXdlaWdodDogNjAwOwogICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUgMTYlIDQ1JSkiLCJoc2woMjE1IDE2JSA3NSUpIil9OwogICAgfQoKICAgIC5zaWRlYmFyLWNsb3NlIHsKICAgICAgd2lkdGg6IDI0cHg7CiAgICAgIGhlaWdodDogMjRweDsKICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgYm9yZGVyOiBub25lOwogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUgMTYlIDQ1JSkiLCJoc2woMjE1IDE2JSA3NSUpIil9OwogICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzIGVhc2U7CiAgICB9CgogICAgLnNpZGViYXItY2xvc2U6aG92ZXIgewogICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxNCAzMSUgOTIlKSIsImhzbCgyMTcgMjUlIDIyJSkiKX07CiAgICB9CgogICAgLnNpZGViYXItY2xvc2UgZGVlcy1pY29uIHsKICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgfQoKICAgIC5zaWRlYmFyLWNvbnRlbnQgewogICAgICBmbGV4OiAxOwogICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICAgIHBhZGRpbmc6IDEycHg7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluOwogICAgICBtaW4taGVpZ2h0OiAwOwogICAgfQoKICAgIC50aHVtYm5haWwgewogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICBib3JkZXI6IDJweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2U7CiAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5NSUpIiwiaHNsKDIxNSAyMCUgMTglKSIpfTsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBtYXJnaW4tYm90dG9tOiAxMnB4OwogICAgICAvKiBEZWZhdWx0IEE0IGFzcGVjdCByYXRpbyAoMjk3bW0gLyAyMTBtbSDiiYggMS40MTQpICovCiAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTc2cHggKiAxLjQxNCk7CiAgICB9CgogICAgLnRodW1ibmFpbDpsYXN0LWNoaWxkIHsKICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIH0KCiAgICAudGh1bWJuYWlsOmhvdmVyIHsKICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNCAzMSUgODYlKSIsImhzbCgyMTcgMjUlIDM1JSkiKX07CiAgICB9CgogICAgLnRodW1ibmFpbC5hY3RpdmUgewogICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE3IDkxJSA2MCUpIiwiaHNsKDIxMyA5MyUgNjglKSIpfTsKICAgIH0KCiAgICAudGh1bWJuYWlsLWNhbnZhcyB7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB3aWR0aDogMTAwJTsKICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICBpbWFnZS1yZW5kZXJpbmc6IC13ZWJraXQtb3B0aW1pemUtY29udHJhc3Q7CiAgICAgIGltYWdlLXJlbmRlcmluZzogY3Jpc3AtZWRnZXM7CiAgICB9CgogICAgLnRodW1ibmFpbC1udW1iZXIgewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIGJvdHRvbTogNHB4OwogICAgICByaWdodDogNHB4OwogICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjcpIiwicmdiYSgwLCAwLCAwLCAwLjgpIil9OwogICAgICBjb2xvcjogd2hpdGU7CiAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgcGFkZGluZzogMnB4IDZweDsKICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgfQoKICAgIC52aWV3ZXItbWFpbiB7CiAgICAgIGZsZXg6IDE7CiAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgcGFkZGluZzogMjBweDsKICAgICAgc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGg7CiAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW47CiAgICAgIG1pbi1oZWlnaHQ6IDA7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIH0KCiAgICAubG9hZGluZy1jb250YWluZXIgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICBnYXA6IDE2cHg7CiAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNSAxNiUgNDUlKSIsImhzbCgyMTUgMTYlIDc1JSkiKX07CiAgICB9CgogICAgLmxvYWRpbmctc3Bpbm5lciB7CiAgICAgIHdpZHRoOiAzMnB4OwogICAgICBoZWlnaHQ6IDMycHg7CiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgYm9yZGVyOiAzcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgyMTQgMzElIDg2JSkiLCJoc2woMjE3IDI1JSAyOCUpIil9OwogICAgICBib3JkZXItdG9wLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNyA5MSUgNjAlKSIsImhzbCgyMTMgOTMlIDY4JSkiKX07CiAgICAgIGFuaW1hdGlvbjogc3BpbiAwLjhzIGxpbmVhciBpbmZpbml0ZTsKICAgIH0KCiAgICBAa2V5ZnJhbWVzIHNwaW4gewogICAgICB0byB7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgICAgfQogICAgfQoKICAgIC5sb2FkaW5nLXRleHQgewogICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICB9CgogICAgLnBhZ2VzLWNvbnRhaW5lciB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGdhcDogMjBweDsKICAgIH0KCiAgICAucGFnZS13cmFwcGVyIHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgfQoKICAgIC5jYW52YXMtY29udGFpbmVyIHsKICAgICAgYmFja2dyb3VuZDogd2hpdGU7CiAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDEycHggJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4xKSIsInJnYmEoMCwgMCwgMCwgMC4zKSIpfTsKICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIH0KCiAgICAucGFnZS1jYW52YXMgewogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgaW1hZ2UtcmVuZGVyaW5nOiAtd2Via2l0LW9wdGltaXplLWNvbnRyYXN0OwogICAgICBpbWFnZS1yZW5kZXJpbmc6IGNyaXNwLWVkZ2VzOwogICAgfQoKICAgIC8qIFRleHQgbGF5ZXIgZm9yIHNlbGVjdGlvbiAqLwogICAgLnRleHQtbGF5ZXIgewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIGluc2V0OiAwOwogICAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgICAgbGluZS1oZWlnaHQ6IDE7CiAgICAgIHRleHQtc2l6ZS1hZGp1c3Q6IG5vbmU7CiAgICAgIGZvcmNlZC1jb2xvci1hZGp1c3Q6IG5vbmU7CiAgICAgIHRyYW5zZm9ybS1vcmlnaW46IDAgMDsKICAgICAgei1pbmRleDogMTsKICAgICAgdXNlci1zZWxlY3Q6IHRleHQ7CiAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IHRleHQ7CiAgICB9CgogICAgLnRleHQtbGF5ZXIgc3BhbiwKICAgIC50ZXh0LWxheWVyIGJyIHsKICAgICAgY29sb3I6IHRyYW5zcGFyZW50OwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHdoaXRlLXNwYWNlOiBwcmU7CiAgICAgIGN1cnNvcjogdGV4dDsKICAgICAgdHJhbnNmb3JtLW9yaWdpbjogMCUgMCU7CiAgICAgIHVzZXItc2VsZWN0OiB0ZXh0OwogICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiB0ZXh0OwogICAgfQoKICAgIC50ZXh0LWxheWVyIDo6c2VsZWN0aW9uIHsKICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAxMDAsIDIwMCwgMC4zKTsKICAgIH0KCiAgICAudGV4dC1sYXllciBicjo6c2VsZWN0aW9uIHsKICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICB9CgogICAgLnRleHQtbGF5ZXIgLmVuZE9mQ29udGVudCB7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIGluc2V0OiAxMDAlIDAgMDsKICAgICAgei1pbmRleDogMDsKICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgIH0KCiAgICAudGV4dC1sYXllci5zZWxlY3RpbmcgLmVuZE9mQ29udGVudCB7CiAgICAgIHRvcDogMDsKICAgIH0KCiAgICAucGRmLXZpZXdlci53aXRoLXNpZGViYXIgLnZpZXdlci1tYWluIHsKICAgICAgbWFyZ2luLWxlZnQ6IDA7CiAgICB9CgogICAgLnBkZi1mb290ZXIgewogICAgICBoZWlnaHQ6IDI4cHg7CiAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIH0KCiAgICAucGRmLWZvb3Rlci1sZWZ0IHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgZ2FwOiAxMnB4OwogICAgfQoKICAgIC5wZGYtZm9vdGVyLWxlZnQgLnBkZi1mb290ZXItaXRlbSArIC5wZGYtZm9vdGVyLWl0ZW0gewogICAgICBwYWRkaW5nLWxlZnQ6IDEycHg7CiAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICB9CgogICAgLnBkZi1mb290ZXItY2VudGVyIHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICBsZWZ0OiA1MCU7CiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgdHJhbnNpdGlvbjogbWFyZ2luLWxlZnQgMC4xNXMgZWFzZTsKICAgIH0KCiAgICAucGRmLWZvb3Rlci1yaWdodCB7CiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgfQoKICAgIC5wZGYtZm9vdGVyLWl0ZW0gewogICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgfQoKICAgIC5wZGYtZm9vdGVyLWZpbGVuYW1lIHsKICAgICAgZm9udC1mYW1pbHk6ICdJbnRlbCBPbmUgTW9ubycsICdHZWlzdCBNb25vJywgbW9ub3NwYWNlOwogICAgICBvcGFjaXR5OiAwLjc7CiAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgfQogIGBdfSk7dmFyIHE1YSxqNWE9ZygoKT0+e3BlKCk7cTVhPWkoKCk9PndgCiAgPHN0eWxlPgogICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgcGFkZGluZzogMjBweDsKICAgICAgYmFja2dyb3VuZDogIzAwMDAwMDsKICAgIH0KCiAgICAuZGVtby1zZWN0aW9uIHsKICAgICAgbWFyZ2luLWJvdHRvbTogNDBweDsKICAgIH0KCiAgICBoMyB7CiAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgY29sb3I6ICNmYWZhZmE7CiAgICB9CgogICAgZGVlcy1wZGYtdmlld2VyIHsKICAgICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDsKICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgfQoKICAgIC52aWV3ZXItdGFsbCB7CiAgICAgIGhlaWdodDogODAwcHg7CiAgICB9CgogICAgLnZpZXdlci1jb21wYWN0IHsKICAgICAgaGVpZ2h0OiA1MDBweDsKICAgIH0KICA8L3N0eWxlPgoKICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICA8aDM+RnVsbCBGZWF0dXJlZCBQREYgVmlld2VyIHdpdGggVG9vbGJhcjwvaDM+CiAgICAgIDxkZWVzLXBkZi12aWV3ZXIKICAgICAgICBjbGFzcz0idmlld2VyLXRhbGwiCiAgICAgICAgcGRmVXJsPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbW96aWxsYS9wZGYuanMvYmEyZWRlYWUvd2ViL2NvbXByZXNzZWQudHJhY2Vtb25rZXktcGxkaS0wOS5wZGYiCiAgICAgICAgc2hvd1Rvb2xiYXI9InRydWUiCiAgICAgICAgc2hvd1NpZGViYXI9ImZhbHNlIgogICAgICAgIGluaXRpYWxab29tPSJwYWdlLWZpdCIKICAgICAgPjwvZGVlcy1wZGYtdmlld2VyPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgPGgzPlBERiBWaWV3ZXIgd2l0aCBTaWRlYmFyIE5hdmlnYXRpb248L2gzPgogICAgICA8ZGVlcy1wZGYtdmlld2VyCiAgICAgICAgY2xhc3M9InZpZXdlci10YWxsIgogICAgICAgIHBkZlVybD0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL21vemlsbGEvcGRmLmpzL2JhMmVkZWFlL3dlYi9jb21wcmVzc2VkLnRyYWNlbW9ua2V5LXBsZGktMDkucGRmIgogICAgICAgIHNob3dUb29sYmFyPSJ0cnVlIgogICAgICAgIHNob3dTaWRlYmFyPSJ0cnVlIgogICAgICAgIGluaXRpYWxab29tPSJwYWdlLXdpZHRoIgogICAgICA+PC9kZWVzLXBkZi12aWV3ZXI+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICA8aDM+Q29tcGFjdCBWaWV3ZXIgd2l0aG91dCBDb250cm9sczwvaDM+CiAgICAgIDxkZWVzLXBkZi12aWV3ZXIKICAgICAgICBjbGFzcz0idmlld2VyLWNvbXBhY3QiCiAgICAgICAgcGRmVXJsPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbW96aWxsYS9wZGYuanMvYmEyZWRlYWUvZXhhbXBsZXMvbGVhcm5pbmcvaGVsbG93b3JsZC5wZGYiCiAgICAgICAgc2hvd1Rvb2xiYXI9ImZhbHNlIgogICAgICAgIHNob3dTaWRlYmFyPSJmYWxzZSIKICAgICAgICBpbml0aWFsWm9vbT0iYXV0byIKICAgICAgPjwvZGVlcy1wZGYtdmlld2VyPgogICAgPC9kaXY+CiAgPC9kaXY+CmAsImRlbW8iKX0pO3ZhciBCbixqcyxWNWEsc3J0PWcoKCk9PntwZSgpO3IxZSgpO0g1YSgpO2o1YSgpO1VhKCk7bnIoKTtCbj1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sanM9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LFY1YT0oKCk9PntsZXQgcz1bbmUoImRlZXMtcGRmLXZpZXdlciIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdLEgsaz1bXSxTPVtdLEksUD1bXSxSPVtdLEssVj1bXSxXPVtdLG1lLEI9W10sVT1bXSxoZSxGPVtdLGo9W10sdWUsbGU9W10sUT1bXSxpZSx0ZT1bXSxlZT1bXTt2YXIga2U9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNQZGZWaWV3ZXIiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgWD10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZ30pXSxwPVtMKHt0eXBlOk51bWJlcn0pXSxjPVtMKHt0eXBlOlN0cmluZ30pXSx4PVtMKHt0eXBlOkJvb2xlYW59KV0seT1bTCh7dHlwZTpCb29sZWFufSldLE49W0woe3R5cGU6U3RyaW5nfSldLE89W0woe3R5cGU6TnVtYmVyfSldLEg9W0woe3R5cGU6TnVtYmVyfSldLEk9W0woe3R5cGU6TnVtYmVyfSldLEs9W0woe3R5cGU6Qm9vbGVhbn0pXSxtZT1bTCh7dHlwZTpTdHJpbmd9KV0saGU9W0woe3R5cGU6QXJyYXl9KV0sdWU9W0woe3R5cGU6QXJyYXl9KV0saWU9W0woe3R5cGU6TnVtYmVyfSldLEJuKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicGRmVXJsIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFo9PiJwZGZVcmwiaW4gWiwiaGFzIiksZ2V0OmkoWj0+Wi5wZGZVcmwsImdldCIpLHNldDppKChaLHllKT0+e1oucGRmVXJsPXllfSwic2V0Iil9LG1ldGFkYXRhOlh9LG8sbCksQm4odGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpbml0aWFsUGFnZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShaPT4iaW5pdGlhbFBhZ2UiaW4gWiwiaGFzIiksZ2V0OmkoWj0+Wi5pbml0aWFsUGFnZSwiZ2V0Iiksc2V0OmkoKFoseWUpPT57Wi5pbml0aWFsUGFnZT15ZX0sInNldCIpfSxtZXRhZGF0YTpYfSxkLHUpLEJuKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaW5pdGlhbFpvb20iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoWj0+ImluaXRpYWxab29tImluIFosImhhcyIpLGdldDppKFo9PlouaW5pdGlhbFpvb20sImdldCIpLHNldDppKChaLHllKT0+e1ouaW5pdGlhbFpvb209eWV9LCJzZXQiKX0sbWV0YWRhdGE6WH0sYix2KSxCbih0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dUb29sYmFyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFo9PiJzaG93VG9vbGJhciJpbiBaLCJoYXMiKSxnZXQ6aShaPT5aLnNob3dUb29sYmFyLCJnZXQiKSxzZXQ6aSgoWix5ZSk9PntaLnNob3dUb29sYmFyPXllfSwic2V0Iil9LG1ldGFkYXRhOlh9LG0sZiksQm4odGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93U2lkZWJhciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShaPT4ic2hvd1NpZGViYXIiaW4gWiwiaGFzIiksZ2V0OmkoWj0+Wi5zaG93U2lkZWJhciwiZ2V0Iiksc2V0OmkoKFoseWUpPT57Wi5zaG93U2lkZWJhcj15ZX0sInNldCIpfSxtZXRhZGF0YTpYfSxNLHopLEJuKHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2lkZWJhclBvc2l0aW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFo9PiJzaWRlYmFyUG9zaXRpb24iaW4gWiwiaGFzIiksZ2V0OmkoWj0+Wi5zaWRlYmFyUG9zaXRpb24sImdldCIpLHNldDppKChaLHllKT0+e1ouc2lkZWJhclBvc2l0aW9uPXllfSwic2V0Iil9LG1ldGFkYXRhOlh9LEMsXyksQm4odGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjdXJyZW50UGFnZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShaPT4iY3VycmVudFBhZ2UiaW4gWiwiaGFzIiksZ2V0OmkoWj0+Wi5jdXJyZW50UGFnZSwiZ2V0Iiksc2V0OmkoKFoseWUpPT57Wi5jdXJyZW50UGFnZT15ZX0sInNldCIpfSxtZXRhZGF0YTpYfSwkLEUpLEJuKHRoaXMsbnVsbCxILHtraW5kOiJhY2Nlc3NvciIsbmFtZToidG90YWxQYWdlcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShaPT4idG90YWxQYWdlcyJpbiBaLCJoYXMiKSxnZXQ6aShaPT5aLnRvdGFsUGFnZXMsImdldCIpLHNldDppKChaLHllKT0+e1oudG90YWxQYWdlcz15ZX0sInNldCIpfSxtZXRhZGF0YTpYfSxrLFMpLEJuKHRoaXMsbnVsbCxJLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY3VycmVudFpvb20iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoWj0+ImN1cnJlbnRab29tImluIFosImhhcyIpLGdldDppKFo9PlouY3VycmVudFpvb20sImdldCIpLHNldDppKChaLHllKT0+e1ouY3VycmVudFpvb209eWV9LCJzZXQiKX0sbWV0YWRhdGE6WH0sUCxSKSxCbih0aGlzLG51bGwsSyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImxvYWRpbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoWj0+ImxvYWRpbmciaW4gWiwiaGFzIiksZ2V0OmkoWj0+Wi5sb2FkaW5nLCJnZXQiKSxzZXQ6aSgoWix5ZSk9PntaLmxvYWRpbmc9eWV9LCJzZXQiKX0sbWV0YWRhdGE6WH0sVixXKSxCbih0aGlzLG51bGwsbWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJkb2N1bWVudElkIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFo9PiJkb2N1bWVudElkImluIFosImhhcyIpLGdldDppKFo9PlouZG9jdW1lbnRJZCwiZ2V0Iiksc2V0OmkoKFoseWUpPT57Wi5kb2N1bWVudElkPXllfSwic2V0Iil9LG1ldGFkYXRhOlh9LEIsVSksQm4odGhpcyxudWxsLGhlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidGh1bWJuYWlsRGF0YSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShaPT4idGh1bWJuYWlsRGF0YSJpbiBaLCJoYXMiKSxnZXQ6aShaPT5aLnRodW1ibmFpbERhdGEsImdldCIpLHNldDppKChaLHllKT0+e1oudGh1bWJuYWlsRGF0YT15ZX0sInNldCIpfSxtZXRhZGF0YTpYfSxGLGopLEJuKHRoaXMsbnVsbCx1ZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InBhZ2VEYXRhIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFo9PiJwYWdlRGF0YSJpbiBaLCJoYXMiKSxnZXQ6aShaPT5aLnBhZ2VEYXRhLCJnZXQiKSxzZXQ6aSgoWix5ZSk9PntaLnBhZ2VEYXRhPXllfSwic2V0Iil9LG1ldGFkYXRhOlh9LGxlLFEpLEJuKHRoaXMsbnVsbCxpZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InBkZkZpbGVTaXplIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFo9PiJwZGZGaWxlU2l6ZSJpbiBaLCJoYXMiKSxnZXQ6aShaPT5aLnBkZkZpbGVTaXplLCJnZXQiKSxzZXQ6aSgoWix5ZSk9PntaLnBkZkZpbGVTaXplPXllfSwic2V0Iil9LG1ldGFkYXRhOlh9LHRlLGVlKSxCbihudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpYfSxudWxsLHQpLGtlPWE9ZS52YWx1ZSxYJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOlh9KX1zdGF0aWMgZGVtbz1xNWE7c3RhdGljIGRlbW9Hcm91cHM9WyJNZWRpYSIsIlBERiJdO3N0YXRpYyBzdHlsZXM9QjVhOyNlPWpzKHRoaXMsbywiIik7Z2V0IHBkZlVybCgpe3JldHVybiB0aGlzLiNlfXNldCBwZGZVcmwoWCl7dGhpcy4jZT1YfSN0PShqcyh0aGlzLGwpLGpzKHRoaXMsZCwxKSk7Z2V0IGluaXRpYWxQYWdlKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGluaXRpYWxQYWdlKFgpe3RoaXMuI3Q9WH0jYT0oanModGhpcyx1KSxqcyh0aGlzLGIsImF1dG8iKSk7Z2V0IGluaXRpYWxab29tKCl7cmV0dXJuIHRoaXMuI2F9c2V0IGluaXRpYWxab29tKFgpe3RoaXMuI2E9WH0jcz0oanModGhpcyx2KSxqcyh0aGlzLG0sITApKTtnZXQgc2hvd1Rvb2xiYXIoKXtyZXR1cm4gdGhpcy4jc31zZXQgc2hvd1Rvb2xiYXIoWCl7dGhpcy4jcz1YfSNpPShqcyh0aGlzLGYpLGpzKHRoaXMsTSwhMSkpO2dldCBzaG93U2lkZWJhcigpe3JldHVybiB0aGlzLiNpfXNldCBzaG93U2lkZWJhcihYKXt0aGlzLiNpPVh9I3I9KGpzKHRoaXMseiksanModGhpcyxDLCJsZWZ0IikpO2dldCBzaWRlYmFyUG9zaXRpb24oKXtyZXR1cm4gdGhpcy4jcn1zZXQgc2lkZWJhclBvc2l0aW9uKFgpe3RoaXMuI3I9WH0jbz0oanModGhpcyxfKSxqcyh0aGlzLCQsMSkpO2dldCBjdXJyZW50UGFnZSgpe3JldHVybiB0aGlzLiNvfXNldCBjdXJyZW50UGFnZShYKXt0aGlzLiNvPVh9I249KGpzKHRoaXMsRSksanModGhpcyxrLDEpKTtnZXQgdG90YWxQYWdlcygpe3JldHVybiB0aGlzLiNufXNldCB0b3RhbFBhZ2VzKFgpe3RoaXMuI249WH0jbD0oanModGhpcyxTKSxqcyh0aGlzLFAsMSkpO2dldCBjdXJyZW50Wm9vbSgpe3JldHVybiB0aGlzLiNsfXNldCBjdXJyZW50Wm9vbShYKXt0aGlzLiNsPVh9I2M9KGpzKHRoaXMsUiksanModGhpcyxWLCExKSk7Z2V0IGxvYWRpbmcoKXtyZXR1cm4gdGhpcy4jY31zZXQgbG9hZGluZyhYKXt0aGlzLiNjPVh9I2Q9KGpzKHRoaXMsVyksanModGhpcyxCLCIiKSk7Z2V0IGRvY3VtZW50SWQoKXtyZXR1cm4gdGhpcy4jZH1zZXQgZG9jdW1lbnRJZChYKXt0aGlzLiNkPVh9I3U9KGpzKHRoaXMsVSksanModGhpcyxGLFtdKSk7Z2V0IHRodW1ibmFpbERhdGEoKXtyZXR1cm4gdGhpcy4jdX1zZXQgdGh1bWJuYWlsRGF0YShYKXt0aGlzLiN1PVh9I3A9KGpzKHRoaXMsaiksanModGhpcyxsZSxbXSkpO2dldCBwYWdlRGF0YSgpe3JldHVybiB0aGlzLiNwfXNldCBwYWdlRGF0YShYKXt0aGlzLiNwPVh9I2g9KGpzKHRoaXMsUSksanModGhpcyx0ZSwwKSk7Z2V0IHBkZkZpbGVTaXplKCl7cmV0dXJuIHRoaXMuI2h9c2V0IHBkZkZpbGVTaXplKFgpe3RoaXMuI2g9WH1wZGZEb2N1bWVudD1qcyh0aGlzLGVlKTtyZW5kZXJTdGF0ZT0iaWRsZSI7cmVuZGVyQWJvcnRDb250cm9sbGVyPW51bGw7cGFnZVJlbmRlcmluZz0hMTtwYWdlTnVtUGVuZGluZz1udWxsO2N1cnJlbnRSZW5kZXJUYXNrPW51bGw7Y3VycmVudFJlbmRlclByb21pc2U9bnVsbDt0aHVtYm5haWxSZW5kZXJUYXNrcz1bXTtwYWdlUmVuZGVyVGFza3M9bmV3IE1hcDt0ZXh0TGF5ZXJSZW5kZXJUYXNrcz1uZXcgTWFwO2NhbnZhcztjdHg7dmlld2VyTWFpbj1udWxsO3Jlc2l6ZU9ic2VydmVyO2ludGVyc2VjdGlvbk9ic2VydmVyO3Njcm9sbFRocm90dGxlVGltZW91dDt2aWV3cG9ydERpbWVuc2lvbnM9e3dpZHRoOjAsaGVpZ2h0OjB9O3ZpZXdwb3J0TW9kZT0iYXV0byI7TUFOVUFMX01JTl9aT09NPS41O01BTlVBTF9NQVhfWk9PTT0zO0FCU09MVVRFX01JTl9aT09NPS4xO0FCU09MVVRFX01BWF9aT09NPTQ7UEFHRV9HQVA9MjA7UkVOREVSX0JVRkZFUj0zO2NvbnN0cnVjdG9yKCl7c3VwZXIoKX1yZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRlZXMtdGlsZSBjbGFzcz0iJHt0aGlzLnNob3dTaWRlYmFyPyJ3aXRoLXNpZGViYXIiOiIifSBzaWRlYmFyLSR7dGhpcy5zaWRlYmFyUG9zaXRpb259Ij4KICAgICAgICAke3RoaXMuc2hvd1Rvb2xiYXI/d2AKICAgICAgICAgIDxkaXYgc2xvdD0iaGVhZGVyIiBjbGFzcz0idG9vbGJhciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvb2xiYXItZ3JvdXAiPgogICAgICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgICAgIGNsYXNzPSJ0b29sYmFyLWJ1dHRvbiIKICAgICAgICAgICAgICAgIEBjbGljaz0ke3RoaXMucHJldmlvdXNQYWdlfQogICAgICAgICAgICAgICAgP2Rpc2FibGVkPSR7dGhpcy5jdXJyZW50UGFnZTw9MX0KICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpDaGV2cm9uTGVmdCI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFnZS1pbmZvIj4KICAgICAgICAgICAgICAgIDxpbnB1dAogICAgICAgICAgICAgICAgICB0eXBlPSJudW1iZXIiCiAgICAgICAgICAgICAgICAgIG1pbj0iMSIKICAgICAgICAgICAgICAgICAgbWF4PSIke3RoaXMudG90YWxQYWdlc30iCiAgICAgICAgICAgICAgICAgIC52YWx1ZT0ke1N0cmluZyh0aGlzLmN1cnJlbnRQYWdlKX0KICAgICAgICAgICAgICAgICAgQGNoYW5nZT0ke3RoaXMuaGFuZGxlUGFnZUlucHV0fQogICAgICAgICAgICAgICAgICBjbGFzcz0icGFnZS1pbnB1dCIKICAgICAgICAgICAgICAgIC8+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGFnZS1zZXBhcmF0b3IiPi88L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGFnZS10b3RhbCI+JHt0aGlzLnRvdGFsUGFnZXN9PC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgICAgIGNsYXNzPSJ0b29sYmFyLWJ1dHRvbiIKICAgICAgICAgICAgICAgIEBjbGljaz0ke3RoaXMubmV4dFBhZ2V9CiAgICAgICAgICAgICAgICA/ZGlzYWJsZWQ9JHt0aGlzLmN1cnJlbnRQYWdlPj10aGlzLnRvdGFsUGFnZXN9CiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6Q2hldnJvblJpZ2h0Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b29sYmFyLWdyb3VwIj4KICAgICAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgICAgICBjbGFzcz0idG9vbGJhci1idXR0b24iCiAgICAgICAgICAgICAgICBAY2xpY2s9JHt0aGlzLnpvb21PdXR9CiAgICAgICAgICAgICAgICA/ZGlzYWJsZWQ9JHshdGhpcy5jYW5ab29tT3V0fQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOlpvb21PdXQiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgICAgIGNsYXNzPSJ0b29sYmFyLWJ1dHRvbiIKICAgICAgICAgICAgICAgIEBjbGljaz0ke3RoaXMucmVzZXRab29tfQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ6b29tLWxldmVsIj4ke01hdGgucm91bmQodGhpcy5jdXJyZW50Wm9vbSoxMDApfSU8L3NwYW4+CiAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgPGJ1dHRvbgogICAgICAgICAgICAgICAgY2xhc3M9InRvb2xiYXItYnV0dG9uIgogICAgICAgICAgICAgICAgQGNsaWNrPSR7dGhpcy56b29tSW59CiAgICAgICAgICAgICAgICA/ZGlzYWJsZWQ9JHshdGhpcy5jYW5ab29tSW59CiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6Wm9vbUluIj48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b29sYmFyLWdyb3VwIj4KICAgICAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgICAgICBjbGFzcz0idG9vbGJhci1idXR0b24iCiAgICAgICAgICAgICAgICBAY2xpY2s9JHt0aGlzLmZpdFRvUGFnZX0KICAgICAgICAgICAgICAgIHRpdGxlPSJGaXQgdG8gcGFnZSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpNYXhpbWl6ZSI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgPGJ1dHRvbgogICAgICAgICAgICAgICAgY2xhc3M9InRvb2xiYXItYnV0dG9uIgogICAgICAgICAgICAgICAgQGNsaWNrPSR7dGhpcy5maXRUb1dpZHRofQogICAgICAgICAgICAgICAgdGl0bGU9IkZpdCB0byB3aWR0aCIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpBcnJvd0xlZnRSaWdodCI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9vbGJhci1ncm91cCB0b29sYmFyLWdyb3VwLS1lbmQiPgogICAgICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgICAgIGNsYXNzPSJ0b29sYmFyLWJ1dHRvbiIKICAgICAgICAgICAgICAgIEBjbGljaz0keygpPT50aGlzLnNob3dTaWRlYmFyPSF0aGlzLnNob3dTaWRlYmFyfQogICAgICAgICAgICAgICAgdGl0bGU9IiR7dGhpcy5zaG93U2lkZWJhcj8iSGlkZSB0aHVtYm5haWxzIjoiU2hvdyB0aHVtYm5haWxzIn0iCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSIke3RoaXMuc2hvd1NpZGViYXI/Imx1Y2lkZTpTaWRlYmFyQ2xvc2UiOiJsdWNpZGU6U2lkZWJhciJ9Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgICAgICBjbGFzcz0idG9vbGJhci1idXR0b24iCiAgICAgICAgICAgICAgICBAY2xpY2s9JHt0aGlzLmRvd25sb2FkUGRmfQogICAgICAgICAgICAgICAgdGl0bGU9IkRvd25sb2FkIgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOkRvd25sb2FkIj48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgICAgICBjbGFzcz0idG9vbGJhci1idXR0b24iCiAgICAgICAgICAgICAgICBAY2xpY2s9JHt0aGlzLnByaW50UGRmfQogICAgICAgICAgICAgICAgdGl0bGU9IlByaW50IgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOlByaW50ZXIiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIGA6IiJ9CgogICAgICAgIDxkaXYgY2xhc3M9InZpZXdlci1jb250YWluZXIiPgogICAgICAgICAgJHt0aGlzLnNob3dTaWRlYmFyP3dgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXIiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItaGVhZGVyIj4KICAgICAgICAgICAgICAgIDxzcGFuPlBhZ2VzPC9zcGFuPgogICAgICAgICAgICAgICAgPGJ1dHRvbgogICAgICAgICAgICAgICAgICBjbGFzcz0ic2lkZWJhci1jbG9zZSIKICAgICAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMuc2hvd1NpZGViYXI9ITF9CiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOlgiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1jb250ZW50Ij4KICAgICAgICAgICAgICAgICR7Vmkua2V5ZWQodGhpcy5kb2N1bWVudElkLHdgCiAgICAgICAgICAgICAgICAgICR7VmkucmVwZWF0KHRoaXMudGh1bWJuYWlsRGF0YSxYPT5YLnBhZ2UsWD0+d2AKICAgICAgICAgICAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9InRodW1ibmFpbCAke3RoaXMuY3VycmVudFBhZ2U9PT1YLnBhZ2U/ImFjdGl2ZSI6IiJ9IgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXBhZ2U9IiR7WC5wYWdlfSIKICAgICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPSR7dGhpcy5oYW5kbGVUaHVtYm5haWxDbGlja30KICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgPGNhbnZhcyBjbGFzcz0idGh1bWJuYWlsLWNhbnZhcyIgZGF0YS1wYWdlPSIke1gucGFnZX0iPjwvY2FudmFzPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGh1bWJuYWlsLW51bWJlciI+JHtYLnBhZ2V9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgYCl9CiAgICAgICAgICAgICAgICBgKX0KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgOiIifQoKICAgICAgICAgIDxkaXYgY2xhc3M9InZpZXdlci1tYWluIiBAc2Nyb2xsPSR7dGhpcy5oYW5kbGVTY3JvbGx9PgogICAgICAgICAgICAke3RoaXMubG9hZGluZz93YAogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvYWRpbmctY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvYWRpbmctc3Bpbm5lciI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2FkaW5nLXRleHQiPkxvYWRpbmcgUERGLi4uPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGA6d2AKICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWdlcy1jb250YWluZXIiPgogICAgICAgICAgICAgICAgJHtWaS5yZXBlYXQodGhpcy5wYWdlRGF0YSxYPT5YLnBhZ2UsWD0+d2AKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWdlLXdyYXBwZXIiIGRhdGEtcGFnZT0iJHtYLnBhZ2V9Ij4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbnZhcy1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8Y2FudmFzIGNsYXNzPSJwYWdlLWNhbnZhcyIgZGF0YS1wYWdlPSIke1gucGFnZX0iPjwvY2FudmFzPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LWxheWVyIiBkYXRhLXBhZ2U9IiR7WC5wYWdlfSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgYCl9CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGB9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IHNsb3Q9ImZvb3RlciIgY2xhc3M9InBkZi1mb290ZXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0icGRmLWZvb3Rlci1sZWZ0Ij4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBkZi1mb290ZXItaXRlbSI+Wm9vbSAke01hdGgucm91bmQodGhpcy5jdXJyZW50Wm9vbSoxMDApfSU8L3NwYW4+CiAgICAgICAgICAgICR7dGhpcy5wZGZGaWxlU2l6ZT4wP3dgCiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBkZi1mb290ZXItaXRlbSI+JHt0aGlzLmZvcm1hdEZpbGVTaXplKHRoaXMucGRmRmlsZVNpemUpfTwvc3Bhbj4KICAgICAgICAgICAgYDoiIn0KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icGRmLWZvb3Rlci1jZW50ZXIiIHN0eWxlPSJtYXJnaW4tbGVmdDogJHt0aGlzLnNob3dTaWRlYmFyJiZ0aGlzLnNpZGViYXJQb3NpdGlvbj09PSJsZWZ0Ij8iMTAwcHgiOnRoaXMuc2hvd1NpZGViYXImJnRoaXMuc2lkZWJhclBvc2l0aW9uPT09InJpZ2h0Ij8iLTEwMHB4IjoiMCJ9Ij4KICAgICAgICAgICAgPHNwYW4+UGFnZSAke3RoaXMuY3VycmVudFBhZ2V9IG9mICR7dGhpcy50b3RhbFBhZ2VzfTwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icGRmLWZvb3Rlci1yaWdodCI+CiAgICAgICAgICAgICR7dGhpcy5wZGZVcmw/d2AKICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGRmLWZvb3Rlci1maWxlbmFtZSI+JHt0aGlzLnBkZlVybC5zcGxpdCgiLyIpLnBvcCgpfTwvc3Bhbj4KICAgICAgICAgICAgYDoiIn0KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtdGlsZT4KICAgIGB9YXN5bmMgY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLGF3YWl0IHRoaXMudXBkYXRlQ29tcGxldGUsdGhpcy5lbnN1cmVWaWV3ZXJSZWZzKCksdGhpcy5wZGZVcmwmJih0aGlzLmRvY3VtZW50SWQ9YCR7dGhpcy5wZGZVcmx9LSR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpfWAsYXdhaXQgdGhpcy5sb2FkUGRmKCkpfWFzeW5jIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCksdGhpcy5yZXNpemVPYnNlcnZlcj12b2lkIDAsdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlcj8uZGlzY29ubmVjdCgpLHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXI9dm9pZCAwLHRoaXMuc2Nyb2xsVGhyb3R0bGVUaW1lb3V0JiYoY2xlYXJUaW1lb3V0KHRoaXMuc2Nyb2xsVGhyb3R0bGVUaW1lb3V0KSx0aGlzLnNjcm9sbFRocm90dGxlVGltZW91dD12b2lkIDApLHRoaXMucmVuZGVyU3RhdGU9ImRpc3Bvc2VkIixhd2FpdCB0aGlzLmNsZWFudXBEb2N1bWVudCgpLHRoaXMuY2FudmFzPXZvaWQgMCx0aGlzLmN0eD12b2lkIDB9YXN5bmMgdXBkYXRlZChYKXtpZihzdXBlci51cGRhdGVkKFgpLFguaGFzKCJwZGZVcmwiKSYmdGhpcy5wZGZVcmwpe2xldCBaPVguZ2V0KCJwZGZVcmwiKTtaJiZHZC5yZWxlYXNlRG9jdW1lbnQoWiksdGhpcy5kb2N1bWVudElkPWAke3RoaXMucGRmVXJsfS0ke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKX1gLGF3YWl0IHRoaXMubG9hZFBkZigpfVguaGFzKCJzaG93U2lkZWJhciIpJiZ0aGlzLnNob3dTaWRlYmFyJiZ0aGlzLnBkZkRvY3VtZW50JiYoYXdhaXQgbmV3IFByb21pc2UoWj0+cmVxdWVzdEFuaW1hdGlvbkZyYW1lKFopKSx0aGlzLnRodW1ibmFpbERhdGEuZm9yRWFjaChaPT5aLnJlbmRlcmVkPSExKSxhd2FpdCB0aGlzLnJlbmRlclRodW1ibmFpbHMoKSx0aGlzLnNldHVwSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKSx0aGlzLnNjcm9sbFRodW1ibmFpbEludG9WaWV3KHRoaXMuY3VycmVudFBhZ2UpKX1mb3JtYXRGaWxlU2l6ZShYKXtyZXR1cm4gWDwxMDI0P2Ake1h9IEJgOlg8MTAyNCoxMDI0P2AkeyhYLzEwMjQpLnRvRml4ZWQoMSl9IEtCYDpgJHsoWC8oMTAyNCoxMDI0KSkudG9GaXhlZCgxKX0gTUJgfWFzeW5jIGxvYWRQZGYoKXt0aGlzLmxvYWRpbmc9ITAsdGhpcy5yZW5kZXJTdGF0ZT0ibG9hZGluZyI7dHJ5e2F3YWl0IHRoaXMuY2xlYW51cERvY3VtZW50KCksdGhpcy5yZW5kZXJBYm9ydENvbnRyb2xsZXI9bmV3IEFib3J0Q29udHJvbGxlcjtsZXQgWD10aGlzLnJlbmRlckFib3J0Q29udHJvbGxlci5zaWduYWw7aWYodGhpcy5wZGZEb2N1bWVudD1hd2FpdCBHZC5sb2FkRG9jdW1lbnQodGhpcy5wZGZVcmwpLFguYWJvcnRlZClyZXR1cm47dGhpcy50b3RhbFBhZ2VzPXRoaXMucGRmRG9jdW1lbnQubnVtUGFnZXMsdGhpcy5jdXJyZW50UGFnZT10aGlzLmluaXRpYWxQYWdlLHRoaXMucmVzb2x2ZUluaXRpYWxWaWV3cG9ydE1vZGUoKTt0cnl7bGV0IFo9YXdhaXQgdGhpcy5wZGZEb2N1bWVudC5nZXREYXRhKCk7dGhpcy5wZGZGaWxlU2l6ZT1aLmxlbmd0aH1jYXRjaHt0aGlzLnBkZkZpbGVTaXplPTB9aWYodGhpcy50aHVtYm5haWxEYXRhPUFycmF5LmZyb20oe2xlbmd0aDp0aGlzLnRvdGFsUGFnZXN9LChaLHllKT0+KHtwYWdlOnllKzEscmVuZGVyZWQ6ITF9KSksdGhpcy5wYWdlRGF0YT1BcnJheS5mcm9tKHtsZW5ndGg6dGhpcy50b3RhbFBhZ2VzfSwoWix5ZSk9Pih7cGFnZTp5ZSsxLHJlbmRlcmVkOiExLHJlbmRlcmluZzohMSx0ZXh0TGF5ZXJSZW5kZXJlZDohMX0pKSx0aGlzLmxvYWRpbmc9ITEsYXdhaXQgdGhpcy51cGRhdGVDb21wbGV0ZSx0aGlzLmVuc3VyZVZpZXdlclJlZnMoKSx0aGlzLnNldHVwSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKSxhd2FpdCBuZXcgUHJvbWlzZShaPT5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoWikpLFguYWJvcnRlZHx8KHRoaXMucmVuZGVyU3RhdGU9InJlbmRlcmluZy1tYWluIixhd2FpdCB0aGlzLnJlbmRlclZpc2libGVQYWdlcygpLFguYWJvcnRlZCl8fCh0aGlzLmluaXRpYWxQYWdlPjEmJmF3YWl0IHRoaXMuc2Nyb2xsVG9QYWdlKHRoaXMuaW5pdGlhbFBhZ2UsITEpLHRoaXMuc2hvd1NpZGViYXImJihhd2FpdCB0aGlzLnVwZGF0ZUNvbXBsZXRlLGF3YWl0IG5ldyBQcm9taXNlKFo9PnJlcXVlc3RBbmltYXRpb25GcmFtZShaKSksWC5hYm9ydGVkfHwoYXdhaXQgdGhpcy5yZW5kZXJUaHVtYm5haWxzKCksWC5hYm9ydGVkKSkpKXJldHVybjt0aGlzLnJlbmRlclN0YXRlPSJyZW5kZXJlZCJ9Y2F0Y2goWCl7Y29uc29sZS5lcnJvcigiRXJyb3IgbG9hZGluZyBQREY6IixYKSx0aGlzLmxvYWRpbmc9ITEsdGhpcy5yZW5kZXJTdGF0ZT0iZXJyb3IifX1zZXR1cEludGVyc2VjdGlvbk9ic2VydmVyKCl7dGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlciYmdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlci5kaXNjb25uZWN0KCksdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlcj1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoWj0+e2ZvcihsZXQgeWUgb2YgWil7bGV0IHE9eWUudGFyZ2V0LEE9cGFyc2VJbnQocS5kYXRhc2V0LnBhZ2V8fCIxIik7eWUuaXNJbnRlcnNlY3RpbmcmJnRoaXMucmVuZGVyUGFnZUlmTmVlZGVkKEEpfX0se3Jvb3Q6dGhpcy52aWV3ZXJNYWluLHJvb3RNYXJnaW46YCR7dGhpcy5SRU5ERVJfQlVGRkVSKjEwMH1weCAwcHhgLHRocmVzaG9sZDouMDF9KTtsZXQgWD10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3JBbGwoIi5wYWdlLXdyYXBwZXIiKTtYJiZYLmZvckVhY2goWj0+e3RoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXI/Lm9ic2VydmUoWil9KX1hc3luYyByZW5kZXJWaXNpYmxlUGFnZXMoKXtpZighdGhpcy52aWV3ZXJNYWluKXJldHVybjtsZXQgWD10aGlzLnZpZXdlck1haW4uY2xpZW50SGVpZ2h0O2ZvcihsZXQgWiBvZiB0aGlzLnBhZ2VEYXRhKXtsZXQgeWU9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKGAucGFnZS13cmFwcGVyW2RhdGEtcGFnZT0iJHtaLnBhZ2V9Il1gKTtpZigheWUpY29udGludWU7bGV0IHE9eWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksQT10aGlzLnZpZXdlck1haW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksc2U9cS50b3AtQS50b3Asb2U9c2UrcS5oZWlnaHQsYWU9dGhpcy5SRU5ERVJfQlVGRkVSKlg7b2U+PS1hZSYmc2U8PVgrYWUmJmF3YWl0IHRoaXMucmVuZGVyUGFnZUlmTmVlZGVkKFoucGFnZSl9fWFzeW5jIHJlbmRlclBhZ2VJZk5lZWRlZChYKXtsZXQgWj10aGlzLnBhZ2VEYXRhLmZpbmQoeWU9PnllLnBhZ2U9PT1YKTtpZighKCFafHxaLnJlbmRlcmVkfHxaLnJlbmRlcmluZykpe1oucmVuZGVyaW5nPSEwO3RyeXtsZXQgeWU9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKGAucGFnZS1jYW52YXNbZGF0YS1wYWdlPSIke1h9Il1gKTtpZigheWUpe1oucmVuZGVyaW5nPSExO3JldHVybn1sZXQgcT1hd2FpdCB0aGlzLnBkZkRvY3VtZW50LmdldFBhZ2UoWCksQT10aGlzLmNvbXB1dGVWaWV3cG9ydChxKSxzZT13aW5kb3cuZGV2aWNlUGl4ZWxSYXRpb3x8MTt5ZS53aWR0aD1NYXRoLmZsb29yKEEud2lkdGgqc2UpLHllLmhlaWdodD1NYXRoLmZsb29yKEEuaGVpZ2h0KnNlKSx5ZS5zdHlsZS53aWR0aD1gJHtBLndpZHRofXB4YCx5ZS5zdHlsZS5oZWlnaHQ9YCR7QS5oZWlnaHR9cHhgO2xldCBvZT15ZS5nZXRDb250ZXh0KCIyZCIpO2lmKCFvZSl7cS5jbGVhbnVwPy4oKSxaLnJlbmRlcmluZz0hMTtyZXR1cm59b2Uuc2NhbGUoc2Usc2UpO2xldCBhZT17Y2FudmFzQ29udGV4dDpvZSx2aWV3cG9ydDpBfSxUZT1xLnJlbmRlcihhZSk7dGhpcy5wYWdlUmVuZGVyVGFza3Muc2V0KFgsVGUpLGF3YWl0IFRlLnByb21pc2UscS5jbGVhbnVwPy4oKSxaLnJlbmRlcmVkPSEwLFoucmVuZGVyaW5nPSExLHRoaXMucGFnZVJlbmRlclRhc2tzLmRlbGV0ZShYKSxhd2FpdCB0aGlzLnJlbmRlclRleHRMYXllcihYKSx0aGlzLnJlcXVlc3RVcGRhdGUoInBhZ2VEYXRhIil9Y2F0Y2goeWUpe3llPy5uYW1lIT09IlJlbmRlcmluZ0NhbmNlbGxlZEV4Y2VwdGlvbiImJmNvbnNvbGUuZXJyb3IoYEVycm9yIHJlbmRlcmluZyBwYWdlICR7WH06YCx5ZSksWi5yZW5kZXJpbmc9ITEsdGhpcy5wYWdlUmVuZGVyVGFza3MuZGVsZXRlKFgpfX19YXN5bmMgcmVuZGVyVGV4dExheWVyKFgpe2xldCBaPXRoaXMucGFnZURhdGEuZmluZCh5ZT0+eWUucGFnZT09PVgpO2lmKCEoIVp8fFoudGV4dExheWVyUmVuZGVyZWQpKXRyeXtsZXQgeWU9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKGAudGV4dC1sYXllcltkYXRhLXBhZ2U9IiR7WH0iXWApO2lmKCF5ZSlyZXR1cm47eWUuaW5uZXJIVE1MPSIiO2xldCBxPWF3YWl0IHRoaXMucGRmRG9jdW1lbnQuZ2V0UGFnZShYKSxBPWF3YWl0IHEuZ2V0VGV4dENvbnRlbnQoKSxzZT10aGlzLmNvbXB1dGVWaWV3cG9ydChxKSxvZT1hd2FpdCBpbXBvcnQoImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vcGRmanMtZGlzdEA0LjAuMzc5Lytlc20iKTt5ZS5zdHlsZS53aWR0aD1gJHtzZS53aWR0aH1weGAseWUuc3R5bGUuaGVpZ2h0PWAke3NlLmhlaWdodH1weGAseWUuc3R5bGUuc2V0UHJvcGVydHkoIi0tc2NhbGUtZmFjdG9yIixTdHJpbmcoc2Uuc2NhbGUpKTtsZXQgYWU9b2UucmVuZGVyVGV4dExheWVyKHt0ZXh0Q29udGVudFNvdXJjZTpBLGNvbnRhaW5lcjp5ZSx2aWV3cG9ydDpzZX0pO3RoaXMudGV4dExheWVyUmVuZGVyVGFza3Muc2V0KFgsYWUpLGF3YWl0IGFlLnByb21pc2U7bGV0IFRlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO1RlLmNsYXNzTmFtZT0iZW5kT2ZDb250ZW50Iix5ZS5hcHBlbmRDaGlsZChUZSk7bGV0IFJlPSExLEJlPW51bGwsR2U9MCxEZT1pKCh2ZSxiZSk9PntsZXQgRWU9QXJyYXkuZnJvbSh5ZS5xdWVyeVNlbGVjdG9yQWxsKCJzcGFuIikpO2ZvcihsZXQgamUgb2YgRWUpe2xldCBXZT1qZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZih2ZT49V2UubGVmdCYmdmU8PVdlLnJpZ2h0JiZiZT49V2UudG9wJiZiZTw9V2UuYm90dG9tKXtsZXQgc3Q9amUuZmlyc3RDaGlsZDtpZihzdCYmc3Qubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERSl7bGV0IE1lPXN0LnRleHRDb250ZW50fHwiIixnZT1XZS53aWR0aC9NZS5sZW5ndGgsSWU9dmUtV2UubGVmdCxjZT1NYXRoLm1pbihNYXRoLnJvdW5kKEllL2dlKSxNZS5sZW5ndGgpO3JldHVybntub2RlOnN0LG9mZnNldDpjZX19fX1yZXR1cm4gbnVsbH0sImdldFRleHRQb3NpdGlvbkZyb21Qb2ludCIpLF9lPWkoKCk9PntSZSYmKFJlPSExLEJlPW51bGwseWUuY2xhc3NMaXN0LnJlbW92ZSgic2VsZWN0aW5nIikpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLF9lKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLENlKX0sImhhbmRsZU1vdXNlVXAiKSxDZT1pKHZlPT57aWYoIVJlfHwhQmUpcmV0dXJuO3ZlLnByZXZlbnREZWZhdWx0KCk7bGV0IGJlPURlKHZlLmNsaWVudFgsdmUuY2xpZW50WSk7aWYoYmUpe2xldCBFZT13aW5kb3cuZ2V0U2VsZWN0aW9uKCk7aWYoRWUpdHJ5e0VlLnNldEJhc2VBbmRFeHRlbnQoQmUsR2UsYmUubm9kZSxiZS5vZmZzZXQpfWNhdGNoe319fSwiaGFuZGxlTW91c2VNb3ZlIik7eWUuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIix2ZT0+e2lmKHZlLmJ1dHRvbiE9PTApcmV0dXJuO2xldCBiZT1EZSh2ZS5jbGllbnRYLHZlLmNsaWVudFkpO2JlJiYodmUucHJldmVudERlZmF1bHQoKSxSZT0hMCxCZT1iZS5ub2RlLEdlPWJlLm9mZnNldCx5ZS5jbGFzc0xpc3QuYWRkKCJzZWxlY3RpbmciKSx3aW5kb3cuZ2V0U2VsZWN0aW9uKCk/LnJlbW92ZUFsbFJhbmdlcygpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsQ2UpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLF9lKSl9KSxaLnRleHRMYXllclJlbmRlcmVkPSEwLHEuY2xlYW51cD8uKCksdGhpcy50ZXh0TGF5ZXJSZW5kZXJUYXNrcy5kZWxldGUoWCl9Y2F0Y2goeWUpe3llPy5uYW1lIT09IlJlbmRlcmluZ0NhbmNlbGxlZEV4Y2VwdGlvbiImJmNvbnNvbGUuZXJyb3IoYEVycm9yIHJlbmRlcmluZyB0ZXh0IGxheWVyIGZvciBwYWdlICR7WH06YCx5ZSksdGhpcy50ZXh0TGF5ZXJSZW5kZXJUYXNrcy5kZWxldGUoWCl9fWhhbmRsZVNjcm9sbD1pKCgpPT57dGhpcy5zY3JvbGxUaHJvdHRsZVRpbWVvdXQmJmNsZWFyVGltZW91dCh0aGlzLnNjcm9sbFRocm90dGxlVGltZW91dCksdGhpcy5zY3JvbGxUaHJvdHRsZVRpbWVvdXQ9d2luZG93LnNldFRpbWVvdXQoKCk9Pnt0aGlzLnVwZGF0ZUN1cnJlbnRQYWdlKCksdGhpcy5yZW5kZXJWaXNpYmxlUGFnZXMoKX0sNTApfSwiaGFuZGxlU2Nyb2xsIik7dXBkYXRlQ3VycmVudFBhZ2UoKXtpZighdGhpcy52aWV3ZXJNYWluKXJldHVybjtsZXQgWD10aGlzLnZpZXdlck1haW4uc2Nyb2xsVG9wLFo9dGhpcy52aWV3ZXJNYWluLmNsaWVudEhlaWdodCx5ZT1YK1ovMjtmb3IobGV0IHE9MDtxPHRoaXMucGFnZURhdGEubGVuZ3RoO3ErKyl7bGV0IEE9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKGAucGFnZS13cmFwcGVyW2RhdGEtcGFnZT0iJHtxKzF9Il1gKTtpZighQSljb250aW51ZTtsZXQgc2U9QS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvZT10aGlzLnZpZXdlck1haW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYWU9c2UudG9wLW9lLnRvcCtYLFRlPWFlK3NlLmhlaWdodDtpZih5ZT49YWUmJnllPD1UZSl7dGhpcy5jdXJyZW50UGFnZSE9PXErMSYmKHRoaXMuY3VycmVudFBhZ2U9cSsxLHRoaXMuc2hvd1NpZGViYXImJnRoaXMuc2Nyb2xsVGh1bWJuYWlsSW50b1ZpZXcocSsxKSk7YnJlYWt9fX1zY3JvbGxUaHVtYm5haWxJbnRvVmlldyhYKXtsZXQgWj10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoYC50aHVtYm5haWxbZGF0YS1wYWdlPSIke1h9Il1gKSx5ZT10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5zaWRlYmFyLWNvbnRlbnQiKTtpZihaJiZ5ZSl7bGV0IHE9Wi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxBPXllLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHNlPXEudG9wPEEudG9wLG9lPXEuYm90dG9tPkEuYm90dG9tO2lmKHNlfHxvZSl7bGV0IGFlPVoub2Zmc2V0VG9wLFRlPVoub2Zmc2V0SGVpZ2h0LFJlPXllLmNsaWVudEhlaWdodCxCZT1hZS1SZS8yK1RlLzI7eWUuc2Nyb2xsVG8oe3RvcDpNYXRoLm1heCgwLEJlKSxiZWhhdmlvcjoic21vb3RoIn0pfX19YXN5bmMgc2Nyb2xsVG9QYWdlKFgsWj0hMCl7YXdhaXQgdGhpcy51cGRhdGVDb21wbGV0ZTtsZXQgeWU9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKGAucGFnZS13cmFwcGVyW2RhdGEtcGFnZT0iJHtYfSJdYCk7aWYoeWUmJnRoaXMudmlld2VyTWFpbil7bGV0IHE9eWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksQT10aGlzLnZpZXdlck1haW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksb2U9dGhpcy52aWV3ZXJNYWluLnNjcm9sbFRvcCsocS50b3AtQS50b3ApLXRoaXMudmlld2VyTWFpbi5jbGllbnRUb3AtMTY7Wj90aGlzLnZpZXdlck1haW4uc2Nyb2xsVG8oe3RvcDpvZSxiZWhhdmlvcjoic21vb3RoIn0pOnRoaXMudmlld2VyTWFpbi5zY3JvbGxUb3A9b2UsdGhpcy5jdXJyZW50UGFnZT1YLHRoaXMuc2hvd1NpZGViYXImJnRoaXMuc2Nyb2xsVGh1bWJuYWlsSW50b1ZpZXcoWCksYXdhaXQgdGhpcy5yZW5kZXJQYWdlSWZOZWVkZWQoWCl9fWFzeW5jIHJlbmRlclRodW1ibmFpbHMoKXtpZighdGhpcy5wZGZEb2N1bWVudHx8dGhpcy50aHVtYm5haWxEYXRhLmxlbmd0aD4wJiZ0aGlzLnRodW1ibmFpbERhdGEuZXZlcnkoWj0+Wi5yZW5kZXJlZCl8fHRoaXMucmVuZGVyQWJvcnRDb250cm9sbGVyPy5zaWduYWwuYWJvcnRlZClyZXR1cm47bGV0IFg9dGhpcy5yZW5kZXJBYm9ydENvbnRyb2xsZXI/LnNpZ25hbDt0aGlzLnJlbmRlclN0YXRlPSJyZW5kZXJpbmctdGh1bWJzIjtmb3IobGV0IFogb2YgdGhpcy50aHVtYm5haWxSZW5kZXJUYXNrcyl0cnl7Wi5jYW5jZWwoKX1jYXRjaHt9dGhpcy50aHVtYm5haWxSZW5kZXJUYXNrcz1bXTt0cnl7YXdhaXQgdGhpcy51cGRhdGVDb21wbGV0ZTtsZXQgWj10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3JBbGwoIi50aHVtYm5haWwiKSx5ZT10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3JBbGwoIi50aHVtYm5haWwtY2FudmFzIikscT10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5zaWRlYmFyLWNvbnRlbnQiKSxBPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHEpLG9lPTIwMC0ocGFyc2VGbG9hdChBLnBhZGRpbmdMZWZ0KStwYXJzZUZsb2F0KEEucGFkZGluZ1JpZ2h0KSktNDtmb3IobGV0IGFlIG9mIEFycmF5LmZyb20oeWUpKXtsZXQgVGU9YWUuZ2V0Q29udGV4dCgiMmQiKTtUZSYmVGUuY2xlYXJSZWN0KDAsMCxhZS53aWR0aCxhZS5oZWlnaHQpfWZvcihsZXQgYWU9MDthZTx5ZS5sZW5ndGg7YWUrKyl7aWYoWD8uYWJvcnRlZClyZXR1cm47bGV0IFRlPXllW2FlXSxSZT1aW2FlXSxCZT1wYXJzZUludChUZS5kYXRhc2V0LnBhZ2V8fCIxIiksR2U9YXdhaXQgdGhpcy5wZGZEb2N1bWVudC5nZXRQYWdlKEJlKSxEZT1HZS5nZXRWaWV3cG9ydCh7c2NhbGU6MX0pLF9lPW9lL0RlLndpZHRoLENlPUdlLmdldFZpZXdwb3J0KHtzY2FsZTpfZX0pLHZlPXdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvfHwxO1RlLndpZHRoPU1hdGguZmxvb3IoQ2Uud2lkdGgqdmUpLFRlLmhlaWdodD1NYXRoLmZsb29yKENlLmhlaWdodCp2ZSksVGUuc3R5bGUud2lkdGg9YCR7Q2Uud2lkdGh9cHhgLFRlLnN0eWxlLmhlaWdodD1gJHtDZS5oZWlnaHR9cHhgLFJlLnN0eWxlLmhlaWdodD1gJHtDZS5oZWlnaHR9cHhgLFJlLnN0eWxlLm1pbkhlaWdodD1gJHtDZS5oZWlnaHR9cHhgO2xldCBiZT1UZS5nZXRDb250ZXh0KCIyZCIpO2lmKCFiZSl7R2UuY2xlYW51cD8uKCk7Y29udGludWV9YmUuc2NhbGUodmUsdmUpO2xldCBFZT17Y2FudmFzQ29udGV4dDpiZSx2aWV3cG9ydDpDZX0samU9R2UucmVuZGVyKEVlKTt0aGlzLnRodW1ibmFpbFJlbmRlclRhc2tzLnB1c2goamUpLGF3YWl0IGplLnByb21pc2UsR2UuY2xlYW51cD8uKCk7bGV0IFdlPXRoaXMudGh1bWJuYWlsRGF0YS5maW5kKHN0PT5zdC5wYWdlPT09QmUpO1dlJiYoV2UucmVuZGVyZWQ9ITApfXRoaXMucmVxdWVzdFVwZGF0ZSgidGh1bWJuYWlsRGF0YSIpfWNhdGNoKFope1o/Lm5hbWUhPT0iUmVuZGVyaW5nQ2FuY2VsbGVkRXhjZXB0aW9uIiYmY29uc29sZS5lcnJvcigiRXJyb3IgcmVuZGVyaW5nIHRodW1ibmFpbHM6IixaKX1maW5hbGx5e3RoaXMudGh1bWJuYWlsUmVuZGVyVGFza3M9W119fXByZXZpb3VzUGFnZSgpe3RoaXMuY3VycmVudFBhZ2U+MSYmdGhpcy5zY3JvbGxUb1BhZ2UodGhpcy5jdXJyZW50UGFnZS0xKX1uZXh0UGFnZSgpe3RoaXMuY3VycmVudFBhZ2U8dGhpcy50b3RhbFBhZ2VzJiZ0aGlzLnNjcm9sbFRvUGFnZSh0aGlzLmN1cnJlbnRQYWdlKzEpfWhhbmRsZVRodW1ibmFpbENsaWNrKFgpe2xldCBaPVguY3VycmVudFRhcmdldCx5ZT1wYXJzZUludChaLmRhdGFzZXQucGFnZXx8IjEiKTt0aGlzLnNjcm9sbFRvUGFnZSh5ZSl9aGFuZGxlUGFnZUlucHV0KFgpe2xldCBaPVgudGFyZ2V0LHllPXBhcnNlSW50KFoudmFsdWUpO3RoaXMuc2Nyb2xsVG9QYWdlKHllKX16b29tSW4oKXtsZXQgWD1NYXRoLm1pbih0aGlzLk1BTlVBTF9NQVhfWk9PTSx0aGlzLmN1cnJlbnRab29tKjEuMik7dGhpcy52aWV3cG9ydE1vZGU9ImN1c3RvbSIsWCE9PXRoaXMuY3VycmVudFpvb20mJih0aGlzLmN1cnJlbnRab29tPVgsdGhpcy5yZVJlbmRlckFsbFBhZ2VzKCkpfXpvb21PdXQoKXtsZXQgWD1NYXRoLm1heCh0aGlzLk1BTlVBTF9NSU5fWk9PTSx0aGlzLmN1cnJlbnRab29tLzEuMik7dGhpcy52aWV3cG9ydE1vZGU9ImN1c3RvbSIsWCE9PXRoaXMuY3VycmVudFpvb20mJih0aGlzLmN1cnJlbnRab29tPVgsdGhpcy5yZVJlbmRlckFsbFBhZ2VzKCkpfXJlc2V0Wm9vbSgpe3RoaXMudmlld3BvcnRNb2RlPSJjdXN0b20iLHRoaXMuY3VycmVudFpvb209MSx0aGlzLnJlUmVuZGVyQWxsUGFnZXMoKX1maXRUb1BhZ2UoKXt0aGlzLnZpZXdwb3J0TW9kZT0icGFnZS1maXQiLHRoaXMucmVSZW5kZXJBbGxQYWdlcygpfWZpdFRvV2lkdGgoKXt0aGlzLnZpZXdwb3J0TW9kZT0icGFnZS13aWR0aCIsdGhpcy5yZVJlbmRlckFsbFBhZ2VzKCl9cmVSZW5kZXJBbGxQYWdlcygpe3RoaXMucGFnZURhdGEuZm9yRWFjaChYPT57WC5yZW5kZXJlZD0hMSxYLnJlbmRlcmluZz0hMSxYLnRleHRMYXllclJlbmRlcmVkPSExfSksdGhpcy5wYWdlUmVuZGVyVGFza3MuZm9yRWFjaChYPT57dHJ5e1guY2FuY2VsKCl9Y2F0Y2h7fX0pLHRoaXMucGFnZVJlbmRlclRhc2tzLmNsZWFyKCksdGhpcy50ZXh0TGF5ZXJSZW5kZXJUYXNrcy5mb3JFYWNoKFg9Pnt0cnl7WC5jYW5jZWw/LigpfWNhdGNoe319KSx0aGlzLnRleHRMYXllclJlbmRlclRhc2tzLmNsZWFyKCksdGhpcy5yZXF1ZXN0VXBkYXRlKCksdGhpcy51cGRhdGVDb21wbGV0ZS50aGVuKCgpPT57dGhpcy5yZW5kZXJWaXNpYmxlUGFnZXMoKX0pfWFzeW5jIGRvd25sb2FkUGRmKCl7aWYodGhpcy5wZGZEb2N1bWVudCl0cnl7bGV0IFg9YXdhaXQgdGhpcy5wZGZEb2N1bWVudC5nZXREYXRhKCksWj1uZXcgQmxvYihbWC5idWZmZXJdLHt0eXBlOiJhcHBsaWNhdGlvbi9wZGYifSkseWU9VVJMLmNyZWF0ZU9iamVjdFVSTChaKSxxPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtxLmhyZWY9eWUscS5kb3dubG9hZD10aGlzLnBkZlVybCYmdGhpcy5wZGZVcmwuc3BsaXQoIi8iKS5wb3AoKXx8ImRvY3VtZW50LnBkZiIscS5jbGljaygpLHNldFRpbWVvdXQoKCk9PlVSTC5yZXZva2VPYmplY3RVUkwoeWUpLDFlMyl9Y2F0Y2goWCl7Y29uc29sZS5lcnJvcigiRXJyb3IgZG93bmxvYWRpbmcgUERGOiIsWCl9fWFzeW5jIHByaW50UGRmKCl7aWYodGhpcy5wZGZEb2N1bWVudCl0cnl7bGV0IFg9YXdhaXQgdGhpcy5wZGZEb2N1bWVudC5nZXREYXRhKCksWj1uZXcgQmxvYihbWC5idWZmZXJdLHt0eXBlOiJhcHBsaWNhdGlvbi9wZGYifSkseWU9VVJMLmNyZWF0ZU9iamVjdFVSTChaKSxxPWAKICAgICAgICA8IURPQ1RZUEUgaHRtbD4KICAgICAgICA8aHRtbD4KICAgICAgICA8aGVhZD4KICAgICAgICAgIDx0aXRsZT5QcmludCBQREY8L3RpdGxlPgogICAgICAgICAgPHN0eWxlPgogICAgICAgICAgICAqIHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9CiAgICAgICAgICAgIGh0bWwsIGJvZHkgeyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBvdmVyZmxvdzogaGlkZGVuOyB9CiAgICAgICAgICAgIGlmcmFtZSB7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IGJvcmRlcjogbm9uZTsgfQogICAgICAgICAgICBAbWVkaWEgcHJpbnQgewogICAgICAgICAgICAgIGh0bWwsIGJvZHksIGlmcmFtZSB7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IH0KICAgICAgICAgICAgfQogICAgICAgICAgPC9zdHlsZT4KICAgICAgICA8L2hlYWQ+CiAgICAgICAgPGJvZHk+CiAgICAgICAgICA8aWZyYW1lIHNyYz0iJHt5ZX0iIHR5cGU9ImFwcGxpY2F0aW9uL3BkZiI+PC9pZnJhbWU+CiAgICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHdpbmRvdy5mb2N1cygpOwogICAgICAgICAgICAgICAgd2luZG93LnByaW50KCk7CiAgICAgICAgICAgICAgfSwgNTAwKTsKICAgICAgICAgICAgfTsKICAgICAgICAgICAgd2luZG93Lm9uYWZ0ZXJwcmludCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIHdpbmRvdy5jbG9zZSgpOwogICAgICAgICAgICB9OwogICAgICAgICAgICAvLyBTYWZldHkgY2xvc2UgYWZ0ZXIgMiBtaW51dGVzCiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHdpbmRvdy5jbG9zZSgpOyB9LCAxMjAwMDApOwogICAgICAgICAgPFwvc2NyaXB0PgogICAgICAgIDwvYm9keT4KICAgICAgICA8L2h0bWw+CiAgICAgIGAsQT1uZXcgQmxvYihbcV0se3R5cGU6InRleHQvaHRtbCJ9KSxzZT1VUkwuY3JlYXRlT2JqZWN0VVJMKEEpLG9lPXdpbmRvdy5vcGVuKHNlLCJfYmxhbmsiLCJ3aWR0aD04MDAsaGVpZ2h0PTYwMCIpO2lmKG9lKXtsZXQgYWU9c2V0SW50ZXJ2YWwoKCk9PntvZS5jbG9zZWQmJihjbGVhckludGVydmFsKGFlKSxVUkwucmV2b2tlT2JqZWN0VVJMKHllKSxVUkwucmV2b2tlT2JqZWN0VVJMKHNlKSl9LDUwMCk7c2V0VGltZW91dCgoKT0+e2NsZWFySW50ZXJ2YWwoYWUpLFVSTC5yZXZva2VPYmplY3RVUkwoeWUpLFVSTC5yZXZva2VPYmplY3RVUkwoc2UpfSwxMmU0KX1lbHNlIHdpbmRvdy5vcGVuKHllLCJfYmxhbmsiKSxzZXRUaW1lb3V0KCgpPT5VUkwucmV2b2tlT2JqZWN0VVJMKHllKSw2ZTQpLFVSTC5yZXZva2VPYmplY3RVUkwoc2UpfWNhdGNoKFgpe2NvbnNvbGUuZXJyb3IoIkVycm9yIHByaW50aW5nIFBERjoiLFgpfX1nZXRDb250ZXh0TWVudUl0ZW1zKCl7bGV0IFg9W10seWU9d2luZG93LmdldFNlbGVjdGlvbigpPy50b1N0cmluZygpfHwiIjtyZXR1cm4geWUmJihYLnB1c2goe25hbWU6IkNvcHkiLGljb25OYW1lOiJsdWNpZGU6Q29weSIsYWN0aW9uOmkoYXN5bmMoKT0+e2F3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHllKX0sImFjdGlvbiIpfSksWC5wdXNoKHtkaXZpZGVyOiEwfSkpLFgucHVzaCh7bmFtZToiRG93bmxvYWQgUERGIixpY29uTmFtZToibHVjaWRlOkRvd25sb2FkIixhY3Rpb246aShhc3luYygpPT57YXdhaXQgdGhpcy5kb3dubG9hZFBkZigpfSwiYWN0aW9uIil9LHtuYW1lOiJQcmludCBQREYiLGljb25OYW1lOiJsdWNpZGU6UHJpbnRlciIsYWN0aW9uOmkoYXN5bmMoKT0+e2F3YWl0IHRoaXMucHJpbnRQZGYoKX0sImFjdGlvbiIpfSksWH1nZXQgY2FuWm9vbUluKCl7cmV0dXJuIHRoaXMudmlld3BvcnRNb2RlIT09ImN1c3RvbSJ8fHRoaXMuY3VycmVudFpvb208dGhpcy5NQU5VQUxfTUFYX1pPT019Z2V0IGNhblpvb21PdXQoKXtyZXR1cm4gdGhpcy52aWV3cG9ydE1vZGUhPT0iY3VzdG9tInx8dGhpcy5jdXJyZW50Wm9vbT50aGlzLk1BTlVBTF9NSU5fWk9PTX1lbnN1cmVWaWV3ZXJSZWZzKCl7dGhpcy52aWV3ZXJNYWlufHwodGhpcy52aWV3ZXJNYWluPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLnZpZXdlci1tYWluIikpLHRoaXMudmlld2VyTWFpbiYmIXRoaXMucmVzaXplT2JzZXJ2ZXImJih0aGlzLnJlc2l6ZU9ic2VydmVyPW5ldyBSZXNpemVPYnNlcnZlcigoKT0+e3RoaXMubWVhc3VyZVZpZXdwb3J0RGltZW5zaW9ucygpLHRoaXMucGRmRG9jdW1lbnQmJnRoaXMucmVSZW5kZXJBbGxQYWdlcygpfSksdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMudmlld2VyTWFpbiksdGhpcy5tZWFzdXJlVmlld3BvcnREaW1lbnNpb25zKCksdGhpcy52aWV3ZXJNYWluLmFkZEV2ZW50TGlzdGVuZXIoIndoZWVsIixYPT57bGV0IFo9WC5jdXJyZW50VGFyZ2V0LHllPVouc2Nyb2xsVG9wLHE9Wi5zY3JvbGxIZWlnaHQsQT1aLmNsaWVudEhlaWdodCxzZT1YLmRlbHRhWSxvZT15ZT09PTAsYWU9TWF0aC5hYnMoeWUrQS1xKTwxO3NlPDAmJiFvZXx8c2U+MCYmIWFlP1guc3RvcFByb3BhZ2F0aW9uKCk6KHNlPDAmJm9lfHxzZT4wJiZhZSkmJihYLnByZXZlbnREZWZhdWx0KCksWC5zdG9wUHJvcGFnYXRpb24oKSl9LHtwYXNzaXZlOiExfSkpfW1lYXN1cmVWaWV3cG9ydERpbWVuc2lvbnMoKXtpZighdGhpcy52aWV3ZXJNYWluKXt0aGlzLnZpZXdwb3J0RGltZW5zaW9ucz17d2lkdGg6MCxoZWlnaHQ6MH07cmV0dXJufWxldCBYPWdldENvbXB1dGVkU3R5bGUodGhpcy52aWV3ZXJNYWluKSxaPXBhcnNlRmxvYXQoWC5wYWRkaW5nTGVmdHx8IjAiKStwYXJzZUZsb2F0KFgucGFkZGluZ1JpZ2h0fHwiMCIpLHllPXBhcnNlRmxvYXQoWC5wYWRkaW5nVG9wfHwiMCIpK3BhcnNlRmxvYXQoWC5wYWRkaW5nQm90dG9tfHwiMCIpLHE9TWF0aC5tYXgodGhpcy52aWV3ZXJNYWluLmNsaWVudFdpZHRoLVosMCksQT1NYXRoLm1heCh0aGlzLnZpZXdlck1haW4uY2xpZW50SGVpZ2h0LXllLDApO3RoaXMudmlld3BvcnREaW1lbnNpb25zPXt3aWR0aDpxLGhlaWdodDpBfX1yZXNvbHZlSW5pdGlhbFZpZXdwb3J0TW9kZSgpe3R5cGVvZiB0aGlzLmluaXRpYWxab29tPT0ibnVtYmVyIj8odGhpcy52aWV3cG9ydE1vZGU9ImN1c3RvbSIsdGhpcy5jdXJyZW50Wm9vbT10aGlzLm5vcm1hbGl6ZVpvb20odGhpcy5pbml0aWFsWm9vbSwhMCkpOnRoaXMuaW5pdGlhbFpvb209PT0icGFnZS13aWR0aCI/dGhpcy52aWV3cG9ydE1vZGU9InBhZ2Utd2lkdGgiOnRoaXMuaW5pdGlhbFpvb209PT0icGFnZS1maXQifHx0aGlzLmluaXRpYWxab29tPT09ImF1dG8iP3RoaXMudmlld3BvcnRNb2RlPSJwYWdlLWZpdCI6dGhpcy52aWV3cG9ydE1vZGU9ImF1dG8iLHRoaXMudmlld3BvcnRNb2RlIT09ImN1c3RvbSImJih0aGlzLmN1cnJlbnRab29tPTEpfWNvbXB1dGVWaWV3cG9ydChYKXt0aGlzLm1lYXN1cmVWaWV3cG9ydERpbWVuc2lvbnMoKTtsZXQgWj1YLmdldFZpZXdwb3J0KHtzY2FsZToxfSkseWU7c3dpdGNoKHRoaXMudmlld3BvcnRNb2RlKXtjYXNlInBhZ2Utd2lkdGgiOnt5ZT0odGhpcy52aWV3cG9ydERpbWVuc2lvbnMud2lkdGh8fFoud2lkdGgpL1oud2lkdGg7YnJlYWt9Y2FzZSJwYWdlLWZpdCI6Y2FzZSJhdXRvIjp7bGV0IEE9dGhpcy52aWV3cG9ydERpbWVuc2lvbnMud2lkdGh8fFoud2lkdGgsc2U9dGhpcy52aWV3cG9ydERpbWVuc2lvbnMuaGVpZ2h0fHxaLmhlaWdodCxvZT1BL1oud2lkdGgsYWU9c2UvWi5oZWlnaHQ7eWU9TWF0aC5taW4ob2UsYWUpO2JyZWFrfWRlZmF1bHQ6e3llPXRoaXMubm9ybWFsaXplWm9vbSh0aGlzLmN1cnJlbnRab29tfHwxLCExKTticmVha319KCFOdW1iZXIuaXNGaW5pdGUoeWUpfHx5ZTw9MCkmJih5ZT0xKTtsZXQgcT10aGlzLnZpZXdwb3J0TW9kZT09PSJjdXN0b20iP3RoaXMubm9ybWFsaXplWm9vbSh5ZSwhMCk6dGhpcy5ub3JtYWxpemVab29tKHllLCExKTtyZXR1cm4gdGhpcy52aWV3cG9ydE1vZGUhPT0iY3VzdG9tIiYmKHRoaXMuY3VycmVudFpvb209cSksWC5nZXRWaWV3cG9ydCh7c2NhbGU6cX0pfW5vcm1hbGl6ZVpvb20oWCxaKXtsZXQgeWU9Wj90aGlzLk1BTlVBTF9NSU5fWk9PTTp0aGlzLkFCU09MVVRFX01JTl9aT09NLHE9Wj90aGlzLk1BTlVBTF9NQVhfWk9PTTp0aGlzLkFCU09MVVRFX01BWF9aT09NO3JldHVybiBNYXRoLm1pbihNYXRoLm1heChYLHllKSxxKX1hc3luYyBjbGVhbnVwRG9jdW1lbnQoKXtpZih0aGlzLnJlbmRlckFib3J0Q29udHJvbGxlciYmKHRoaXMucmVuZGVyQWJvcnRDb250cm9sbGVyLmFib3J0KCksdGhpcy5yZW5kZXJBYm9ydENvbnRyb2xsZXI9bnVsbCksdGhpcy5jdXJyZW50UmVuZGVyUHJvbWlzZSl7dHJ5e2F3YWl0IHRoaXMuY3VycmVudFJlbmRlclByb21pc2V9Y2F0Y2h7fXRoaXMuY3VycmVudFJlbmRlclByb21pc2U9bnVsbH10aGlzLmN1cnJlbnRSZW5kZXJUYXNrPW51bGwsdGhpcy5wYWdlUmVuZGVyVGFza3MuZm9yRWFjaChYPT57dHJ5e1guY2FuY2VsKCl9Y2F0Y2h7fX0pLHRoaXMucGFnZVJlbmRlclRhc2tzLmNsZWFyKCksdGhpcy50ZXh0TGF5ZXJSZW5kZXJUYXNrcy5mb3JFYWNoKFg9Pnt0cnl7WC5jYW5jZWw/LigpfWNhdGNoe319KSx0aGlzLnRleHRMYXllclJlbmRlclRhc2tzLmNsZWFyKCk7Zm9yKGxldCBYIG9mIHRoaXMudGh1bWJuYWlsUmVuZGVyVGFza3N8fFtdKXRyeXtYLmNhbmNlbCgpfWNhdGNoe31pZih0aGlzLnRodW1ibmFpbFJlbmRlclRhc2tzPVtdLHRoaXMucmVuZGVyU3RhdGU9ImlkbGUiLHRoaXMucGFnZVJlbmRlcmluZz0hMSx0aGlzLnBhZ2VOdW1QZW5kaW5nPW51bGwsdGhpcy50aHVtYm5haWxEYXRhPVtdLHRoaXMucGFnZURhdGE9W10sdGhpcy5kb2N1bWVudElkPSIiLHRoaXMuY2FudmFzJiZ0aGlzLmN0eCYmdGhpcy5jdHguY2xlYXJSZWN0KDAsMCx0aGlzLmNhbnZhcy53aWR0aCx0aGlzLmNhbnZhcy5oZWlnaHQpLHRoaXMucGRmRG9jdW1lbnQpdHJ5e3RoaXMucGRmRG9jdW1lbnQuZGVzdHJveSgpfWNhdGNoKFgpe2NvbnNvbGUuZXJyb3IoIkVycm9yIGRlc3Ryb3lpbmcgUERGIGRvY3VtZW50OiIsWCl9dGhpcy5wZGZEb2N1bWVudD1udWxsLHRoaXMucmVxdWVzdFVwZGF0ZSgpfXN0YXRpY3tqcyhhLHQpfX07cmV0dXJuIGtlPWF9KSgpfSk7dmFyIFU1YSxXNWE9ZygoKT0+e3BlKCk7VTVhPWkoKCk9PndgCiAgPHN0eWxlPgogICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgcGFkZGluZzogNDhweDsKICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmOGY5ZmEiLCIjMGEwYTBhIil9OwogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICBnYXA6IDQwcHg7CiAgICB9CgogICAgLnNlY3Rpb24gewogICAgICBtYXgtd2lkdGg6IDkwMHB4OwogICAgICB3aWR0aDogMTAwJTsKICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICB9CgogICAgLnNlY3Rpb24tdGl0bGUgewogICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICAgIH0KCiAgICAuc2VjdGlvbi1kZXNjcmlwdGlvbiB7CiAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgIH0KCiAgICAucHJldmlldy1pbWFnZSB7CiAgICAgIGhlaWdodDogNDAwcHg7CiAgICB9CgogICAgLnByZXZpZXctcGRmIHsKICAgICAgaGVpZ2h0OiA2MDBweDsKICAgIH0KICA8L3N0eWxlPgoKICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+SW1hZ2UgUHJldmlldyAoVVJMKTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj5BdXRvLWRldGVjdHMgaW1hZ2UgZnJvbSBVUkwgZXh0ZW5zaW9uIGFuZCByZW5kZXJzIHdpdGggdGhlIGltYWdlIHZpZXdlci48L2Rpdj4KICAgICAgPGRlZXMtcHJldmlldwogICAgICAgIGNsYXNzPSJwcmV2aWV3LWltYWdlIgogICAgICAgIHVybD0iaHR0cHM6Ly9pbWFnZXMudW5zcGxhc2guY29tL3Bob3RvLTE1MDY3NDQwMzgxMzYtNDYyNzM4MzRiM2ZiP3c9MTIwMCIKICAgICAgICBmaWxlbmFtZT0ibGFuZHNjYXBlLmpwZyIKICAgICAgPjwvZGVlcy1wcmV2aWV3PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPlBERiBQcmV2aWV3IChVUkwpPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tZGVzY3JpcHRpb24iPkF1dG8tZGV0ZWN0cyBQREYgYW5kIGRpc3BsYXlzIHdpdGggdGhlIFBERiB2aWV3ZXIgaW5jbHVkaW5nIHRvb2xiYXIuPC9kaXY+CiAgICAgIDxkZWVzLXByZXZpZXcKICAgICAgICBjbGFzcz0icHJldmlldy1wZGYiCiAgICAgICAgdXJsPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbW96aWxsYS9wZGYuanMvYmEyZWRlYWUvd2ViL2NvbXByZXNzZWQudHJhY2Vtb25rZXktcGxkaS0wOS5wZGYiCiAgICAgICAgZmlsZW5hbWU9InJlc2VhcmNoLXBhcGVyLnBkZiIKICAgICAgPjwvZGVlcy1wcmV2aWV3PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPkNvZGUgUHJldmlldyAoVGV4dCBDb250ZW50KTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj5UeXBlU2NyaXB0IGNvZGUgZGlzcGxheWVkIHdpdGggc3ludGF4IGhpZ2hsaWdodGluZyB2aWEgdGhlIGNvZGVib3guPC9kaXY+CiAgICAgIDxkZWVzLXByZXZpZXcKICAgICAgICBmaWxlbmFtZT0iZXhhbXBsZS50cyIKICAgICAgICBsYW5ndWFnZT0idHlwZXNjcmlwdCIKICAgICAgICAudGV4dENvbnRlbnQ9JHtgaW1wb3J0IHsgaHRtbCwgY3NzIH0gZnJvbSAnbGl0JzsKCmV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCBleHRlbmRzIExpdEVsZW1lbnQgewogIHN0YXRpYyBzdHlsZXMgPSBjc3NcYAogICAgOmhvc3QgewogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgcGFkZGluZzogMTZweDsKICAgIH0KICBcYDsKCiAgcmVuZGVyKCkgewogICAgcmV0dXJuIGh0bWxcYDxoMT5IZWxsbyBXb3JsZDwvaDE+XGA7CiAgfQp9YH0KICAgICAgPjwvZGVlcy1wcmV2aWV3PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPkF1ZGlvIFByZXZpZXcgKFVSTCk8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1kZXNjcmlwdGlvbiI+QXVkaW8gZmlsZSBkZXRlY3RlZCBieSBleHRlbnNpb24sIHNob3duIHdpdGggd2F2ZWZvcm0gcGxheWVyLjwvZGl2PgogICAgICA8ZGVlcy1wcmV2aWV3CiAgICAgICAgdXJsPSJodHRwczovL3d3dy5zb3VuZGhlbGl4LmNvbS9leGFtcGxlcy9tcDMvU291bmRIZWxpeC1Tb25nLTEubXAzIgogICAgICAgIGZpbGVuYW1lPSJzb25nLm1wMyIKICAgICAgPjwvZGVlcy1wcmV2aWV3PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPlZpZGVvIFByZXZpZXcgKFVSTCk8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1kZXNjcmlwdGlvbiI+VmlkZW8gZmlsZSBkZXRlY3RlZCBmcm9tIFVSTCwgcmVuZGVyZWQgd2l0aCBjdXN0b20gdmlkZW8gY29udHJvbHMuPC9kaXY+CiAgICAgIDxkZWVzLXByZXZpZXcKICAgICAgICB1cmw9Imh0dHBzOi8vY29tbW9uZGF0YXN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZ3R2LXZpZGVvcy1idWNrZXQvc2FtcGxlL0JpZ0J1Y2tCdW5ueS5tcDQiCiAgICAgICAgZmlsZW5hbWU9ImJpZy1idWNrLWJ1bm55Lm1wNCIKICAgICAgPjwvZGVlcy1wcmV2aWV3PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPkV4cGxpY2l0IFR5cGUgT3ZlcnJpZGU8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1kZXNjcmlwdGlvbiI+Rm9yY2UgY29udGVudCB0eXBlIHRvICd0ZXh0JyBldmVuIHRob3VnaCB0aGUgVVJMIGhhcyBubyBleHRlbnNpb24uPC9kaXY+CiAgICAgIDxkZWVzLXByZXZpZXcKICAgICAgICBjb250ZW50VHlwZT0idGV4dCIKICAgICAgICAudGV4dENvbnRlbnQ9JHtgVGhpcyBpcyBwbGFpbiB0ZXh0IGNvbnRlbnQuCkl0IHByZXNlcnZlcyB3aGl0ZXNwYWNlIGFuZCBsaW5lIGJyZWFrcy4KClVzZWZ1bCBmb3IgbG9nIGZpbGVzLCBSRUFETUVzLCBldGMuYH0KICAgICAgICBmaWxlbmFtZT0ibm90ZXMudHh0IgogICAgICA+PC9kZWVzLXByZXZpZXc+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+VW5rbm93biBUeXBlPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tZGVzY3JpcHRpb24iPldoZW4gY29udGVudCB0eXBlIGNhbm5vdCBiZSBkZXRlY3RlZCwgc2hvd3MgYSBwbGFjZWhvbGRlci48L2Rpdj4KICAgICAgPGRlZXMtcHJldmlldwogICAgICAgIGZpbGVuYW1lPSJkYXRhLmJpbiIKICAgICAgICBjb250ZW50VHlwZT0idW5rbm93biIKICAgICAgPjwvZGVlcy1wcmV2aWV3PgogICAgPC9kaXY+CiAgPC9kaXY+CmAsImRlbW9GdW5jIil9KTt2YXIgSW8sZ3MsRzVhLFdYYSxHWGEsS1hhLEs1YSxZNWE9ZygoKT0+e3BlKCk7ZXJ0KCk7dHJ0KCk7YXJ0KCk7Uml0KCk7c3J0KCk7VWEoKTtXNWEoKTtJbz1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sZ3M9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LEc1YT17anBnOiJpbWFnZSIsanBlZzoiaW1hZ2UiLHBuZzoiaW1hZ2UiLGdpZjoiaW1hZ2UiLHdlYnA6ImltYWdlIixzdmc6ImltYWdlIixibXA6ImltYWdlIixhdmlmOiJpbWFnZSIsaWNvOiJpbWFnZSIscGRmOiJwZGYiLG1wMzoiYXVkaW8iLHdhdjoiYXVkaW8iLG9nZzoiYXVkaW8iLGZsYWM6ImF1ZGlvIixhYWM6ImF1ZGlvIixtNGE6ImF1ZGlvIixvcHVzOiJhdWRpbyIsd2ViYToiYXVkaW8iLG1wNDoidmlkZW8iLHdlYm06InZpZGVvIixtb3Y6InZpZGVvIixhdmk6InZpZGVvIixta3Y6InZpZGVvIixvZ3Y6InZpZGVvIix0czoiY29kZSIsanM6ImNvZGUiLGpzeDoiY29kZSIsdHN4OiJjb2RlIixqc29uOiJjb2RlIixodG1sOiJjb2RlIixjc3M6ImNvZGUiLHNjc3M6ImNvZGUiLGxlc3M6ImNvZGUiLHB5OiJjb2RlIixqYXZhOiJjb2RlIixnbzoiY29kZSIscnM6ImNvZGUiLHlhbWw6ImNvZGUiLHltbDoiY29kZSIseG1sOiJjb2RlIixzcWw6ImNvZGUiLHNoOiJjb2RlIixiYXNoOiJjb2RlIix6c2g6ImNvZGUiLG1kOiJjb2RlIixjOiJjb2RlIixjcHA6ImNvZGUiLGg6ImNvZGUiLGhwcDoiY29kZSIscmI6ImNvZGUiLHBocDoiY29kZSIsc3dpZnQ6ImNvZGUiLGt0OiJjb2RlIix0eHQ6InRleHQiLGxvZzoidGV4dCIsY3N2OiJ0ZXh0IixlbnY6InRleHQifSxXWGE9eyJpbWFnZS8iOiJpbWFnZSIsImF1ZGlvLyI6ImF1ZGlvIiwidmlkZW8vIjoidmlkZW8iLCJhcHBsaWNhdGlvbi9wZGYiOiJwZGYifSxHWGE9e3RzOiJ0eXBlc2NyaXB0Iix0c3g6InR5cGVzY3JpcHQiLGpzOiJqYXZhc2NyaXB0Iixqc3g6ImphdmFzY3JpcHQiLGpzb246Impzb24iLGh0bWw6InhtbCIseG1sOiJ4bWwiLGNzczoiY3NzIixzY3NzOiJzY3NzIixsZXNzOiJsZXNzIixweToicHl0aG9uIixqYXZhOiJqYXZhIixnbzoiZ28iLHJzOiJydXN0Iix5YW1sOiJ5YW1sIix5bWw6InlhbWwiLHNxbDoic3FsIixzaDoiYmFzaCIsYmFzaDoiYmFzaCIsenNoOiJiYXNoIixjOiJjIixjcHA6ImNwcCIsaDoiYyIsaHBwOiJjcHAiLHJiOiJydWJ5IixwaHA6InBocCIsc3dpZnQ6InN3aWZ0IixrdDoia290bGluIixtZDoibWFya2Rvd24ifSxLWGE9e2ltYWdlOiJsdWNpZGU6SW1hZ2UiLHBkZjoibHVjaWRlOkZpbGVUZXh0IixhdWRpbzoibHVjaWRlOk11c2ljIix2aWRlbzoibHVjaWRlOlZpZGVvIixjb2RlOiJsdWNpZGU6Q29kZSIsdGV4dDoibHVjaWRlOkZpbGVUZXh0Iix1bmtub3duOiJsdWNpZGU6RmlsZSJ9LEs1YT0oKCk9PntsZXQgcz1bbmUoImRlZXMtcHJldmlldyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdLEgsaz1bXSxTPVtdLEksUD1bXSxSPVtdLEssVj1bXSxXPVtdLG1lLEI9W10sVT1bXSxoZSxGPVtdLGo9W10sdWUsbGU9W10sUT1bXSxpZSx0ZT1bXSxlZT1bXSxrZSxYPVtdLFo9W10seWUscT1bXSxBPVtdO3ZhciBzZT1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1ByZXZpZXciKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgb2U9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCgpXSxwPVtMKHthdHRyaWJ1dGU6ITF9KV0sYz1bTCgpXSx4PVtMKCldLHk9W0woKV0sTj1bTCgpXSxPPVtMKCldLEg9W0woKV0sST1bTCh7dHlwZTpCb29sZWFufSldLEs9W0woe3R5cGU6Qm9vbGVhbn0pXSxtZT1bWSgpXSxoZT1bWSgpXSx1ZT1bWSgpXSxpZT1bWSgpXSxrZT1bWSgpXSx5ZT1bWSgpXSxJbyh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InVybCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShhZT0+InVybCJpbiBhZSwiaGFzIiksZ2V0OmkoYWU9PmFlLnVybCwiZ2V0Iiksc2V0OmkoKGFlLFRlKT0+e2FlLnVybD1UZX0sInNldCIpfSxtZXRhZGF0YTpvZX0sbyxsKSxJbyh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImZpbGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYWU9PiJmaWxlImluIGFlLCJoYXMiKSxnZXQ6aShhZT0+YWUuZmlsZSwiZ2V0Iiksc2V0OmkoKGFlLFRlKT0+e2FlLmZpbGU9VGV9LCJzZXQiKX0sbWV0YWRhdGE6b2V9LGQsdSksSW8odGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJiYXNlNjQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYWU9PiJiYXNlNjQiaW4gYWUsImhhcyIpLGdldDppKGFlPT5hZS5iYXNlNjQsImdldCIpLHNldDppKChhZSxUZSk9PnthZS5iYXNlNjQ9VGV9LCJzZXQiKX0sbWV0YWRhdGE6b2V9LGIsdiksSW8odGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0ZXh0Q29udGVudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShhZT0+InRleHRDb250ZW50ImluIGFlLCJoYXMiKSxnZXQ6aShhZT0+YWUudGV4dENvbnRlbnQsImdldCIpLHNldDppKChhZSxUZSk9PnthZS50ZXh0Q29udGVudD1UZX0sInNldCIpfSxtZXRhZGF0YTpvZX0sbSxmKSxJbyh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNvbnRlbnRUeXBlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGFlPT4iY29udGVudFR5cGUiaW4gYWUsImhhcyIpLGdldDppKGFlPT5hZS5jb250ZW50VHlwZSwiZ2V0Iiksc2V0OmkoKGFlLFRlKT0+e2FlLmNvbnRlbnRUeXBlPVRlfSwic2V0Iil9LG1ldGFkYXRhOm9lfSxNLHopLElvKHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibGFuZ3VhZ2UiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYWU9PiJsYW5ndWFnZSJpbiBhZSwiaGFzIiksZ2V0OmkoYWU9PmFlLmxhbmd1YWdlLCJnZXQiKSxzZXQ6aSgoYWUsVGUpPT57YWUubGFuZ3VhZ2U9VGV9LCJzZXQiKX0sbWV0YWRhdGE6b2V9LEMsXyksSW8odGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtaW1lVHlwZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShhZT0+Im1pbWVUeXBlImluIGFlLCJoYXMiKSxnZXQ6aShhZT0+YWUubWltZVR5cGUsImdldCIpLHNldDppKChhZSxUZSk9PnthZS5taW1lVHlwZT1UZX0sInNldCIpfSxtZXRhZGF0YTpvZX0sJCxFKSxJbyh0aGlzLG51bGwsSCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImZpbGVuYW1lIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGFlPT4iZmlsZW5hbWUiaW4gYWUsImhhcyIpLGdldDppKGFlPT5hZS5maWxlbmFtZSwiZ2V0Iiksc2V0OmkoKGFlLFRlKT0+e2FlLmZpbGVuYW1lPVRlfSwic2V0Iil9LG1ldGFkYXRhOm9lfSxrLFMpLElvKHRoaXMsbnVsbCxJLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2hvd1Rvb2xiYXIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYWU9PiJzaG93VG9vbGJhciJpbiBhZSwiaGFzIiksZ2V0OmkoYWU9PmFlLnNob3dUb29sYmFyLCJnZXQiKSxzZXQ6aSgoYWUsVGUpPT57YWUuc2hvd1Rvb2xiYXI9VGV9LCJzZXQiKX0sbWV0YWRhdGE6b2V9LFAsUiksSW8odGhpcyxudWxsLEsse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93RmlsZW5hbWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYWU9PiJzaG93RmlsZW5hbWUiaW4gYWUsImhhcyIpLGdldDppKGFlPT5hZS5zaG93RmlsZW5hbWUsImdldCIpLHNldDppKChhZSxUZSk9PnthZS5zaG93RmlsZW5hbWU9VGV9LCJzZXQiKX0sbWV0YWRhdGE6b2V9LFYsVyksSW8odGhpcyxudWxsLG1lLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicmVzb2x2ZWRUeXBlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGFlPT4icmVzb2x2ZWRUeXBlImluIGFlLCJoYXMiKSxnZXQ6aShhZT0+YWUucmVzb2x2ZWRUeXBlLCJnZXQiKSxzZXQ6aSgoYWUsVGUpPT57YWUucmVzb2x2ZWRUeXBlPVRlfSwic2V0Iil9LG1ldGFkYXRhOm9lfSxCLFUpLElvKHRoaXMsbnVsbCxoZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InJlc29sdmVkU3JjIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGFlPT4icmVzb2x2ZWRTcmMiaW4gYWUsImhhcyIpLGdldDppKGFlPT5hZS5yZXNvbHZlZFNyYywiZ2V0Iiksc2V0OmkoKGFlLFRlKT0+e2FlLnJlc29sdmVkU3JjPVRlfSwic2V0Iil9LG1ldGFkYXRhOm9lfSxGLGopLElvKHRoaXMsbnVsbCx1ZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InJlc29sdmVkVGV4dCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShhZT0+InJlc29sdmVkVGV4dCJpbiBhZSwiaGFzIiksZ2V0OmkoYWU9PmFlLnJlc29sdmVkVGV4dCwiZ2V0Iiksc2V0OmkoKGFlLFRlKT0+e2FlLnJlc29sdmVkVGV4dD1UZX0sInNldCIpfSxtZXRhZGF0YTpvZX0sbGUsUSksSW8odGhpcyxudWxsLGllLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicmVzb2x2ZWRMYW5nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGFlPT4icmVzb2x2ZWRMYW5nImluIGFlLCJoYXMiKSxnZXQ6aShhZT0+YWUucmVzb2x2ZWRMYW5nLCJnZXQiKSxzZXQ6aSgoYWUsVGUpPT57YWUucmVzb2x2ZWRMYW5nPVRlfSwic2V0Iil9LG1ldGFkYXRhOm9lfSx0ZSxlZSksSW8odGhpcyxudWxsLGtlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibG9hZGluZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShhZT0+ImxvYWRpbmciaW4gYWUsImhhcyIpLGdldDppKGFlPT5hZS5sb2FkaW5nLCJnZXQiKSxzZXQ6aSgoYWUsVGUpPT57YWUubG9hZGluZz1UZX0sInNldCIpfSxtZXRhZGF0YTpvZX0sWCxaKSxJbyh0aGlzLG51bGwseWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJlcnJvciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShhZT0+ImVycm9yImluIGFlLCJoYXMiKSxnZXQ6aShhZT0+YWUuZXJyb3IsImdldCIpLHNldDppKChhZSxUZSk9PnthZS5lcnJvcj1UZX0sInNldCIpfSxtZXRhZGF0YTpvZX0scSxBKSxJbyhudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpvZX0sbnVsbCx0KSxzZT1hPWUudmFsdWUsb2UmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6b2V9KX1zdGF0aWMgZGVtbz1VNWE7c3RhdGljIGRlbW9Hcm91cHM9WyJNZWRpYSIsIkRhdGEgVmlldyJdOyNlPWdzKHRoaXMsbywiIik7Z2V0IHVybCgpe3JldHVybiB0aGlzLiNlfXNldCB1cmwob2Upe3RoaXMuI2U9b2V9I3Q9KGdzKHRoaXMsbCksZ3ModGhpcyxkLHZvaWQgMCkpO2dldCBmaWxlKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGZpbGUob2Upe3RoaXMuI3Q9b2V9I2E9KGdzKHRoaXMsdSksZ3ModGhpcyxiLCIiKSk7Z2V0IGJhc2U2NCgpe3JldHVybiB0aGlzLiNhfXNldCBiYXNlNjQob2Upe3RoaXMuI2E9b2V9I3M9KGdzKHRoaXMsdiksZ3ModGhpcyxtLCIiKSk7Z2V0IHRleHRDb250ZW50KCl7cmV0dXJuIHRoaXMuI3N9c2V0IHRleHRDb250ZW50KG9lKXt0aGlzLiNzPW9lfSNpPShncyh0aGlzLGYpLGdzKHRoaXMsTSx2b2lkIDApKTtnZXQgY29udGVudFR5cGUoKXtyZXR1cm4gdGhpcy4jaX1zZXQgY29udGVudFR5cGUob2Upe3RoaXMuI2k9b2V9I3I9KGdzKHRoaXMseiksZ3ModGhpcyxDLCIiKSk7Z2V0IGxhbmd1YWdlKCl7cmV0dXJuIHRoaXMuI3J9c2V0IGxhbmd1YWdlKG9lKXt0aGlzLiNyPW9lfSNvPShncyh0aGlzLF8pLGdzKHRoaXMsJCwiIikpO2dldCBtaW1lVHlwZSgpe3JldHVybiB0aGlzLiNvfXNldCBtaW1lVHlwZShvZSl7dGhpcy4jbz1vZX0jbj0oZ3ModGhpcyxFKSxncyh0aGlzLGssIiIpKTtnZXQgZmlsZW5hbWUoKXtyZXR1cm4gdGhpcy4jbn1zZXQgZmlsZW5hbWUob2Upe3RoaXMuI249b2V9I2w9KGdzKHRoaXMsUyksZ3ModGhpcyxQLCEwKSk7Z2V0IHNob3dUb29sYmFyKCl7cmV0dXJuIHRoaXMuI2x9c2V0IHNob3dUb29sYmFyKG9lKXt0aGlzLiNsPW9lfSNjPShncyh0aGlzLFIpLGdzKHRoaXMsViwhMCkpO2dldCBzaG93RmlsZW5hbWUoKXtyZXR1cm4gdGhpcy4jY31zZXQgc2hvd0ZpbGVuYW1lKG9lKXt0aGlzLiNjPW9lfSNkPShncyh0aGlzLFcpLGdzKHRoaXMsQiwidW5rbm93biIpKTtnZXQgcmVzb2x2ZWRUeXBlKCl7cmV0dXJuIHRoaXMuI2R9c2V0IHJlc29sdmVkVHlwZShvZSl7dGhpcy4jZD1vZX0jdT0oZ3ModGhpcyxVKSxncyh0aGlzLEYsIiIpKTtnZXQgcmVzb2x2ZWRTcmMoKXtyZXR1cm4gdGhpcy4jdX1zZXQgcmVzb2x2ZWRTcmMob2Upe3RoaXMuI3U9b2V9I3A9KGdzKHRoaXMsaiksZ3ModGhpcyxsZSwiIikpO2dldCByZXNvbHZlZFRleHQoKXtyZXR1cm4gdGhpcy4jcH1zZXQgcmVzb2x2ZWRUZXh0KG9lKXt0aGlzLiNwPW9lfSNoPShncyh0aGlzLFEpLGdzKHRoaXMsdGUsInRleHQiKSk7Z2V0IHJlc29sdmVkTGFuZygpe3JldHVybiB0aGlzLiNofXNldCByZXNvbHZlZExhbmcob2Upe3RoaXMuI2g9b2V9I2Y9KGdzKHRoaXMsZWUpLGdzKHRoaXMsWCwhMSkpO2dldCBsb2FkaW5nKCl7cmV0dXJuIHRoaXMuI2Z9c2V0IGxvYWRpbmcob2Upe3RoaXMuI2Y9b2V9I209KGdzKHRoaXMsWiksZ3ModGhpcyxxLCIiKSk7Z2V0IGVycm9yKCl7cmV0dXJuIHRoaXMuI219c2V0IGVycm9yKG9lKXt0aGlzLiNtPW9lfW9iamVjdFVybD0oZ3ModGhpcyxBKSwiIik7cmVuZGVyKCl7bGV0IG9lPXRoaXMuZmlsZW5hbWV8fHRoaXMuZmlsZT8ubmFtZXx8dGhpcy5nZXRGaWxlbmFtZUZyb21VcmwoKXx8IiI7cmV0dXJuIHdgCiAgICAgIDxzdHlsZT4KICAgICAgICA6aG9zdCB7CiAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgc2Fucy1zZXJpZjsKICAgICAgICB9CgogICAgICAgIC5wcmV2aWV3LWNvbnRhaW5lciB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzI3MjcyYSIpfTsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMwOTA5MGIiKX07CiAgICAgICAgfQoKICAgICAgICAuaGVhZGVyLWJhciB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgIGdhcDogOHB4OwogICAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgICAgaGVpZ2h0OiA0MHB4OwogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmOWZhZmIiLCJoc2woMjE1IDIwJSAxNSUpIil9OwogICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiaHNsKDIxNyAyNSUgMjIlKSIpfTsKICAgICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIH0KCiAgICAgICAgLmhlYWRlci1pY29uIHsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNSAxNiUgNDUlKSIsImhzbCgyMTUgMTYlIDc1JSkiKX07CiAgICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICB9CgogICAgICAgIC5oZWFkZXItZmlsZW5hbWUgewogICAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07CiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgICAgZmxleDogMTsKICAgICAgICB9CgogICAgICAgIC5oZWFkZXItYmFkZ2UgewogICAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICAgIHBhZGRpbmc6IDJweCA4cHg7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSg1OSwgMTMwLCAyNDYsIDAuMSkiLCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC4xNSkiKX07CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzYjgyZjYiLCIjNjBhNWZhIil9OwogICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIH0KCiAgICAgICAgLmNvbnRlbnQtYXJlYSB7CiAgICAgICAgICBmbGV4OiAxOwogICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgIG1pbi1oZWlnaHQ6IDIwMHB4OwogICAgICAgIH0KCiAgICAgICAgLmNvbnRlbnQtYXJlYSA+ICogewogICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgfQoKICAgICAgICBkZWVzLWltYWdlLXZpZXdlciB7CiAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB9CgogICAgICAgIGRlZXMtcGRmLXZpZXdlciB7CiAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB9CgogICAgICAgIGRlZXMtdmlkZW8tdmlld2VyIHsKICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIH0KCiAgICAgICAgZGVlcy1hdWRpby12aWV3ZXIgewogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgfQoKICAgICAgICBkZWVzLWRhdGF2aWV3LWNvZGVib3ggewogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgfQoKICAgICAgICAudGV4dC12aWV3ZXIgewogICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgICAgIGZvbnQtZmFtaWx5OiB1aS1tb25vc3BhY2UsIFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgbW9ub3NwYWNlOwogICAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07CiAgICAgICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CiAgICAgICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgICAgICAgICBvdmVyZmxvdzogYXV0bzsKICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgfQoKICAgICAgICAucGxhY2Vob2xkZXIgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICBtaW4taGVpZ2h0OiAyMDBweDsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2ExYTFhYSIsIiM3MTcxN2EiKX07CiAgICAgICAgfQoKICAgICAgICAucGxhY2Vob2xkZXIgZGVlcy1pY29uIHsKICAgICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgICAgIGZvbnQtc2l6ZTogMzJweDsKICAgICAgICB9CgogICAgICAgIC5wbGFjZWhvbGRlci10ZXh0IHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICB9CgogICAgICAgIC5sb2FkaW5nLWNvbnRhaW5lciB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgbWluLWhlaWdodDogMjAwcHg7CiAgICAgICAgfQoKICAgICAgICAubG9hZGluZy1zcGlubmVyIHsKICAgICAgICAgIHdpZHRoOiAzMnB4OwogICAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgICAgYm9yZGVyOiAzcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjM2YzZjQ2Iil9OwogICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJHtoLmJkVGhlbWUoIiMzYjgyZjYiLCIjNjBhNWZhIil9OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgICAgYW5pbWF0aW9uOiBzcGluIDAuOHMgbGluZWFyIGluZmluaXRlOwogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyBzcGluIHsKICAgICAgICAgIHRvIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfQogICAgICAgIH0KCiAgICAgICAgLmVycm9yLWNvbnRhaW5lciB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgIGdhcDogOHB4OwogICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgbWluLWhlaWdodDogMjAwcHg7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNkYzI2MjYiLCIjZjg3MTcxIil9OwogICAgICAgIH0KCiAgICAgICAgLmVycm9yLWNvbnRhaW5lciBkZWVzLWljb24gewogICAgICAgICAgZm9udC1zaXplOiAzMnB4OwogICAgICAgIH0KCiAgICAgICAgLmVycm9yLXRleHQgewogICAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIH0KICAgICAgPC9zdHlsZT4KCiAgICAgIDxkaXYgY2xhc3M9InByZXZpZXctY29udGFpbmVyIj4KICAgICAgICAke3RoaXMuc2hvd0ZpbGVuYW1lJiZvZT93YAogICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyLWJhciI+CiAgICAgICAgICAgIDxkZWVzLWljb24gY2xhc3M9ImhlYWRlci1pY29uIiBpY29uPSIke0tYYVt0aGlzLnJlc29sdmVkVHlwZV19Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImhlYWRlci1maWxlbmFtZSI+JHtvZX08L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJoZWFkZXItYmFkZ2UiPiR7dGhpcy5yZXNvbHZlZFR5cGV9PC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgYDoiIn0KCiAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudC1hcmVhIj4KICAgICAgICAgICR7dGhpcy5lcnJvcj93YAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJlcnJvci1jb250YWluZXIiPgogICAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOkFsZXJ0VHJpYW5nbGUiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlcnJvci10ZXh0Ij4ke3RoaXMuZXJyb3J9PC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIGA6dGhpcy5sb2FkaW5nP3dgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvYWRpbmctY29udGFpbmVyIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2FkaW5nLXNwaW5uZXIiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIGA6dGhpcy5yZW5kZXJDb250ZW50KCl9CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJDb250ZW50KCl7c3dpdGNoKHRoaXMucmVzb2x2ZWRUeXBlKXtjYXNlImltYWdlIjpyZXR1cm4gd2AKICAgICAgICAgIDxkZWVzLWltYWdlLXZpZXdlcgogICAgICAgICAgICAuc3JjPSR7dGhpcy5yZXNvbHZlZFNyY30KICAgICAgICAgICAgLnNob3dUb29sYmFyPSR7dGhpcy5zaG93VG9vbGJhcn0KICAgICAgICAgICAgYWx0PSIke3RoaXMuZmlsZW5hbWV8fCIifSIKICAgICAgICAgID48L2RlZXMtaW1hZ2Utdmlld2VyPgogICAgICAgIGA7Y2FzZSJwZGYiOnJldHVybiB3YAogICAgICAgICAgPGRlZXMtcGRmLXZpZXdlcgogICAgICAgICAgICAucGRmVXJsPSR7dGhpcy5yZXNvbHZlZFNyY30KICAgICAgICAgICAgLnNob3dUb29sYmFyPSR7dGhpcy5zaG93VG9vbGJhcn0KICAgICAgICAgICAgaW5pdGlhbFpvb209InBhZ2UtZml0IgogICAgICAgICAgPjwvZGVlcy1wZGYtdmlld2VyPgogICAgICAgIGA7Y2FzZSJhdWRpbyI6cmV0dXJuIHdgCiAgICAgICAgICA8ZGVlcy1hdWRpby12aWV3ZXIKICAgICAgICAgICAgLnNyYz0ke3RoaXMucmVzb2x2ZWRTcmN9CiAgICAgICAgICAgIC50aXRsZT0ke3RoaXMuZmlsZW5hbWV8fHRoaXMuZmlsZT8ubmFtZXx8IiJ9CiAgICAgICAgICA+PC9kZWVzLWF1ZGlvLXZpZXdlcj4KICAgICAgICBgO2Nhc2UidmlkZW8iOnJldHVybiB3YAogICAgICAgICAgPGRlZXMtdmlkZW8tdmlld2VyCiAgICAgICAgICAgIC5zcmM9JHt0aGlzLnJlc29sdmVkU3JjfQogICAgICAgICAgPjwvZGVlcy12aWRlby12aWV3ZXI+CiAgICAgICAgYDtjYXNlImNvZGUiOnJldHVybiB3YAogICAgICAgICAgPGRlZXMtZGF0YXZpZXctY29kZWJveAogICAgICAgICAgICAucHJvZ0xhbmc9JHt0aGlzLnJlc29sdmVkTGFuZ30KICAgICAgICAgICAgLmNvZGVUb0Rpc3BsYXk9JHt0aGlzLnJlc29sdmVkVGV4dH0KICAgICAgICAgID48L2RlZXMtZGF0YXZpZXctY29kZWJveD4KICAgICAgICBgO2Nhc2UidGV4dCI6cmV0dXJuIHdgPHByZSBjbGFzcz0idGV4dC12aWV3ZXIiPiR7dGhpcy5yZXNvbHZlZFRleHR9PC9wcmU+YDtkZWZhdWx0OnJldHVybiB3YAogICAgICAgICAgPGRpdiBjbGFzcz0icGxhY2Vob2xkZXIiPgogICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpGaWxlUXVlc3Rpb24iPjwvZGVlcy1pY29uPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0icGxhY2Vob2xkZXItdGV4dCI+UHJldmlldyBub3QgYXZhaWxhYmxlPC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgYH19YXN5bmMgdXBkYXRlZChvZSl7c3VwZXIudXBkYXRlZChvZSksWyJ1cmwiLCJmaWxlIiwiYmFzZTY0IiwidGV4dENvbnRlbnQiLCJjb250ZW50VHlwZSIsImxhbmd1YWdlIiwibWltZVR5cGUiLCJmaWxlbmFtZSJdLnNvbWUoUmU9Pm9lLmhhcyhSZSkpJiZhd2FpdCB0aGlzLnJlc29sdmVDb250ZW50KCl9YXN5bmMgZGlzY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMucmV2b2tlT2JqZWN0VXJsKCl9YXN5bmMgcmVzb2x2ZUNvbnRlbnQoKXt0aGlzLmVycm9yPSIiLHRoaXMucmV2b2tlT2JqZWN0VXJsKCksdGhpcy5yZXNvbHZlZFR5cGU9dGhpcy5kZXRlY3RUeXBlKCk7dHJ5e2lmKHRoaXMudXJsKXtpZih0aGlzLnJlc29sdmVkU3JjPXRoaXMudXJsLHRoaXMucmVzb2x2ZWRUeXBlPT09ImNvZGUifHx0aGlzLnJlc29sdmVkVHlwZT09PSJ0ZXh0IilpZih0aGlzLnRleHRDb250ZW50KXRoaXMucmVzb2x2ZWRUZXh0PXRoaXMudGV4dENvbnRlbnQ7ZWxzZXt0aGlzLmxvYWRpbmc9ITA7bGV0IG9lPWF3YWl0IGZldGNoKHRoaXMudXJsKTt0aGlzLnJlc29sdmVkVGV4dD1hd2FpdCBvZS50ZXh0KCksdGhpcy5sb2FkaW5nPSExfX1lbHNlIGlmKHRoaXMuZmlsZSl0aGlzLm9iamVjdFVybD1VUkwuY3JlYXRlT2JqZWN0VVJMKHRoaXMuZmlsZSksdGhpcy5yZXNvbHZlZFNyYz10aGlzLm9iamVjdFVybCwodGhpcy5yZXNvbHZlZFR5cGU9PT0iY29kZSJ8fHRoaXMucmVzb2x2ZWRUeXBlPT09InRleHQiKSYmKHRoaXMubG9hZGluZz0hMCx0aGlzLnJlc29sdmVkVGV4dD1hd2FpdCB0aGlzLmZpbGUudGV4dCgpLHRoaXMubG9hZGluZz0hMSk7ZWxzZSBpZih0aGlzLmJhc2U2NCl7bGV0IG9lPXRoaXMubWltZVR5cGV8fCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iO3RoaXMucmVzb2x2ZWRTcmM9YGRhdGE6JHtvZX07YmFzZTY0LCR7dGhpcy5iYXNlNjR9YH1lbHNlIHRoaXMudGV4dENvbnRlbnQmJih0aGlzLnJlc29sdmVkVGV4dD10aGlzLnRleHRDb250ZW50KX1jYXRjaHt0aGlzLmVycm9yPSJGYWlsZWQgdG8gbG9hZCBjb250ZW50Iix0aGlzLmxvYWRpbmc9ITF9dGhpcy5yZXNvbHZlZExhbmc9dGhpcy5yZXNvbHZlTGFuZ3VhZ2UoKX1kZXRlY3RUeXBlKCl7aWYodGhpcy5jb250ZW50VHlwZSlyZXR1cm4gdGhpcy5jb250ZW50VHlwZTtsZXQgb2U9dGhpcy5taW1lVHlwZXx8dGhpcy5maWxlPy50eXBlfHwiIjtpZihvZSl7aWYob2U9PT0iYXBwbGljYXRpb24vcGRmIilyZXR1cm4icGRmIjtmb3IobGV0W1RlLFJlXW9mIE9iamVjdC5lbnRyaWVzKFdYYSkpaWYob2Uuc3RhcnRzV2l0aChUZSkpcmV0dXJuIFJlO2lmKG9lLnN0YXJ0c1dpdGgoInRleHQvIikpcmV0dXJuInRleHQifWxldCBhZT10aGlzLmdldEV4dGVuc2lvbigpO3JldHVybiBhZSYmRzVhW2FlXT9HNWFbYWVdOnRoaXMudGV4dENvbnRlbnQ/dGhpcy5sYW5ndWFnZT8iY29kZSI6InRleHQiOiJ1bmtub3duIn1nZXRFeHRlbnNpb24oKXtsZXQgb2U9dGhpcy5maWxlbmFtZXx8dGhpcy5maWxlPy5uYW1lfHwiIjtpZihvZSl7bGV0IGFlPW9lLnNwbGl0KCIuIik7aWYoYWUubGVuZ3RoPjEpcmV0dXJuIGFlLnBvcCgpLnRvTG93ZXJDYXNlKCl9aWYodGhpcy51cmwpdHJ5e2xldCBUZT1uZXcgVVJMKHRoaXMudXJsLCJodHRwczovL3BsYWNlaG9sZGVyLmNvbSIpLnBhdGhuYW1lLnNwbGl0KCIuIik7aWYoVGUubGVuZ3RoPjEpcmV0dXJuIFRlLnBvcCgpLnRvTG93ZXJDYXNlKCl9Y2F0Y2h7fXJldHVybiIifWdldEZpbGVuYW1lRnJvbVVybCgpe2lmKCF0aGlzLnVybClyZXR1cm4iIjt0cnl7cmV0dXJuIG5ldyBVUkwodGhpcy51cmwsImh0dHBzOi8vcGxhY2Vob2xkZXIuY29tIikucGF0aG5hbWUuc3BsaXQoIi8iKS5wb3AoKXx8IiJ9Y2F0Y2h7cmV0dXJuIiJ9fXJlc29sdmVMYW5ndWFnZSgpe2lmKHRoaXMubGFuZ3VhZ2UpcmV0dXJuIHRoaXMubGFuZ3VhZ2U7bGV0IG9lPXRoaXMuZ2V0RXh0ZW5zaW9uKCk7cmV0dXJuIEdYYVtvZV18fCJ0ZXh0In1yZXZva2VPYmplY3RVcmwoKXt0aGlzLm9iamVjdFVybCYmKFVSTC5yZXZva2VPYmplY3RVUkwodGhpcy5vYmplY3RVcmwpLHRoaXMub2JqZWN0VXJsPSIiKX1zdGF0aWN7Z3MoYSx0KX19O3JldHVybiBzZT1hfSkoKX0pO3ZhciBaNWE9ZygoKT0+e1k1YSgpfSk7dmFyIHN4LGlydD1nKCgpPT57c3g9Y2xhc3N7c3RhdGlje2kodGhpcywiQ2FudmFzUG9vbCIpfXN0YXRpYyBwb29sPVtdO3N0YXRpYyBtYXhQb29sU2l6ZT0yMDtzdGF0aWMgTUlOX0NBTlZBU19TSVpFPTI1NjtzdGF0aWMgTUFYX0NBTlZBU19TSVpFPTQwOTY7c3RhdGljIGFjcXVpcmUoZSx0KXtsZXQgYT10aGlzLnBvb2wuZmluZChsPT4hbC5pblVzZSYmbC5jYW52YXMud2lkdGg+PWUmJmwuY2FudmFzLmhlaWdodD49dCYmbC5jYW52YXMud2lkdGg8PWUqMS41JiZsLmNhbnZhcy5oZWlnaHQ8PXQqMS41KTtpZihhKXJldHVybiBhLmluVXNlPSEwLGEubGFzdFVzZWQ9RGF0ZS5ub3coKSxhLmNhbnZhcy53aWR0aD1lLGEuY2FudmFzLmhlaWdodD10LGEuY3R4LmNsZWFyUmVjdCgwLDAsZSx0KSxhO2lmKHRoaXMucG9vbC5sZW5ndGg8dGhpcy5tYXhQb29sU2l6ZSl7bGV0IGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIikscD1sLmdldENvbnRleHQoIjJkIix7YWxwaGE6ITAsZGVzeW5jaHJvbml6ZWQ6ITB9KTtsLndpZHRoPU1hdGgubWluKE1hdGgubWF4KGUsdGhpcy5NSU5fQ0FOVkFTX1NJWkUpLHRoaXMuTUFYX0NBTlZBU19TSVpFKSxsLmhlaWdodD1NYXRoLm1pbihNYXRoLm1heCh0LHRoaXMuTUlOX0NBTlZBU19TSVpFKSx0aGlzLk1BWF9DQU5WQVNfU0laRSk7bGV0IGQ9e2NhbnZhczpsLGN0eDpwLGluVXNlOiEwLGxhc3RVc2VkOkRhdGUubm93KCl9O3JldHVybiB0aGlzLnBvb2wucHVzaChkKSxkfWxldCByPXRoaXMucG9vbC5maWx0ZXIobD0+IWwuaW5Vc2UpLnNvcnQoKGwscCk9PmwubGFzdFVzZWQtcC5sYXN0VXNlZClbMF07aWYocilyZXR1cm4gci5jYW52YXMud2lkdGg9ZSxyLmNhbnZhcy5oZWlnaHQ9dCxyLmN0eC5jbGVhclJlY3QoMCwwLGUsdCksci5pblVzZT0hMCxyLmxhc3RVc2VkPURhdGUubm93KCkscjtsZXQgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSxvPW4uZ2V0Q29udGV4dCgiMmQiKTtyZXR1cm4gbi53aWR0aD1lLG4uaGVpZ2h0PXQse2NhbnZhczpuLGN0eDpvLGluVXNlOiEwLGxhc3RVc2VkOkRhdGUubm93KCl9fXN0YXRpYyByZWxlYXNlKGUpe3RoaXMucG9vbC5pbmNsdWRlcyhlKSYmKGUuaW5Vc2U9ITEsZS5jdHguY2xlYXJSZWN0KDAsMCxlLmNhbnZhcy53aWR0aCxlLmNhbnZhcy5oZWlnaHQpKX1zdGF0aWMgcmVsZWFzZUFsbCgpe2ZvcihsZXQgZSBvZiB0aGlzLnBvb2wpZS5pblVzZT0hMSxlLmN0eC5jbGVhclJlY3QoMCwwLGUuY2FudmFzLndpZHRoLGUuY2FudmFzLmhlaWdodCl9c3RhdGljIGRlc3Ryb3koKXtmb3IobGV0IGUgb2YgdGhpcy5wb29sKWUuY2FudmFzLndpZHRoPTAsZS5jYW52YXMuaGVpZ2h0PTA7dGhpcy5wb29sPVtdfXN0YXRpYyBnZXRTdGF0cygpe3JldHVybntwb29sU2l6ZTp0aGlzLnBvb2wubGVuZ3RoLG1heFBvb2xTaXplOnRoaXMubWF4UG9vbFNpemUsaW5Vc2U6dGhpcy5wb29sLmZpbHRlcihlPT5lLmluVXNlKS5sZW5ndGgsYXZhaWxhYmxlOnRoaXMucG9vbC5maWx0ZXIoZT0+IWUuaW5Vc2UpLmxlbmd0aH19c3RhdGljIGFkanVzdFBvb2xTaXplKGUpe2lmKGU8dGhpcy5wb29sLmxlbmd0aCl7bGV0IHQ9dGhpcy5wb29sLmxlbmd0aC1lLGE9dGhpcy5wb29sLmZpbHRlcihyPT4hci5pblVzZSkuc2xpY2UoMCx0KTtmb3IobGV0IHIgb2YgYSl7bGV0IG49dGhpcy5wb29sLmluZGV4T2Yocik7bj4tMSYmdGhpcy5wb29sLnNwbGljZShuLDEpfX10aGlzLm1heFBvb2xTaXplPWV9fX0pO2Z1bmN0aW9uIFlYYShzLGUpe2xldCB0O3JldHVybiBpKGZ1bmN0aW9uKC4uLnIpe2xldCBuPWkoKCk9PntjbGVhclRpbWVvdXQodCkscyguLi5yKX0sImxhdGVyIik7Y2xlYXJUaW1lb3V0KHQpLHQ9d2luZG93LnNldFRpbWVvdXQobixlKX0sImV4ZWN1dGVkRnVuY3Rpb24iKX1mdW5jdGlvbiBaWGEocyxlKXtsZXQgdDtyZXR1cm4oLi4uYSk9Pnt0fHwocyguLi5hKSx0PSEwLHNldFRpbWVvdXQoKCk9PnQ9ITEsZSkpfX1mdW5jdGlvbiBycnQocyl7aWYocz09PTApcmV0dXJuIjAgQnl0ZXMiO2xldCBlPTEwMjQsdD1bIkJ5dGVzIiwiS0IiLCJNQiIsIkdCIl0sYT1NYXRoLmZsb29yKE1hdGgubG9nKHMpL01hdGgubG9nKGUpKTtyZXR1cm4gTWF0aC5yb3VuZChzL01hdGgucG93KGUsYSkqMTAwKS8xMDArIiAiK3RbYV19ZnVuY3Rpb24gWFhhKHMsZT0wKXtsZXQgdD1zLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiB0LnRvcD49LWUmJnQubGVmdD49LWUmJnQuYm90dG9tPD0od2luZG93LmlubmVySGVpZ2h0fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0KStlJiZ0LnJpZ2h0PD0od2luZG93LmlubmVyV2lkdGh8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCkrZX12YXIgaXgsb3J0PWcoKCk9PntpKFlYYSwiZGVib3VuY2UiKTtpKFpYYSwidGhyb3R0bGUiKTtpKHJydCwiZm9ybWF0RmlsZVNpemUiKTtpKFhYYSwiaXNJblZpZXdwb3J0Iik7aXg9Y2xhc3N7c3RhdGlje2kodGhpcywiUGVyZm9ybWFuY2VNb25pdG9yIil9c3RhdGljIG1hcmtzPW5ldyBNYXA7c3RhdGljIG1lYXN1cmVzPVtdO3N0YXRpYyBtYXJrKGUpe3RoaXMubWFya3Muc2V0KGUscGVyZm9ybWFuY2Uubm93KCkpfXN0YXRpYyBtZWFzdXJlKGUsdCl7bGV0IGE9dGhpcy5tYXJrcy5nZXQodCk7aWYoYSl7bGV0IHI9cGVyZm9ybWFuY2Uubm93KCktYTtyZXR1cm4gdGhpcy5tZWFzdXJlcy5wdXNoKHtuYW1lOmUsZHVyYXRpb246cn0pLHRoaXMubWFya3MuZGVsZXRlKHQpLHJ9cmV0dXJuIDB9c3RhdGljIGdldFJlcG9ydCgpe2xldCBlPXttZWFzdXJlczpbLi4udGhpcy5tZWFzdXJlc10sYXZlcmFnZXM6e319LHQ9bmV3IE1hcDtmb3IobGV0IGEgb2YgdGhpcy5tZWFzdXJlcyl0LmhhcyhhLm5hbWUpfHx0LnNldChhLm5hbWUsW10pLHQuZ2V0KGEubmFtZSkucHVzaChhLmR1cmF0aW9uKTtmb3IobGV0W2Escl1vZiB0KWUuYXZlcmFnZXNbYV09ci5yZWR1Y2UoKG4sbyk9Pm4rbywwKS9yLmxlbmd0aDtyZXR1cm4gZX1zdGF0aWMgY2xlYXIoKXt0aGlzLm1hcmtzLmNsZWFyKCksdGhpcy5tZWFzdXJlcz1bXX19fSk7dmFyIFg1YT1nKCgpPT57aXJ0KCk7cjFlKCk7b3J0KCl9KTt2YXIgUTVhPWcoKCk9PntzcnQoKX0pO3ZhciBwbixrdT1nKCgpPT57cGUoKTtwbj1baC5kZWZhdWx0U3R5bGVzLEpgCiAgICA6aG9zdCB7CiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgfQoKICAgIC50aWxlLWNvbnRhaW5lciB7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgd2lkdGg6IDIwMHB4OwogICAgICBoZWlnaHQ6IDI2MHB4OwogICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTglKSIsImhzbCgyMTUgMjAlIDE0JSkiKX07CiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjJzIGVhc2U7CiAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjEyKSIsInJnYmEoMCwgMCwgMCwgMC4yNCkiKX07CgogICAgfQoKICAgIC50aWxlLWNvbnRhaW5lci5jbGlja2FibGUgewogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB9CgogICAgLnRpbGUtY29udGFpbmVyLmNsaWNrYWJsZTpob3ZlciB7CiAgICAgIGJveC1zaGFkb3c6IDAgOHB4IDI0cHggJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4xMikiLCJyZ2JhKDAsIDAsIDAsIDAuMykiKX07CiAgICB9CgogICAgLnRpbGUtY29udGFpbmVyLmNsaWNrYWJsZTpob3ZlciAudGlsZS1vdmVybGF5IHsKICAgICAgb3BhY2l0eTogMTsKICAgIH0KCiAgICAudGlsZS1jb250ZW50IHsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB3aWR0aDogMTAwJTsKICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIH0KCiAgICAudGlsZS1vdmVybGF5IHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB0b3A6IDA7CiAgICAgIGxlZnQ6IDA7CiAgICAgIHJpZ2h0OiAwOwogICAgICBib3R0b206IDA7CiAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuNykiLCJyZ2JhKDAsIDAsIDAsIDAuOCkiKX07CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICBnYXA6IDhweDsKICAgICAgb3BhY2l0eTogMDsKICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2U7CiAgICAgIHotaW5kZXg6IDIwOwogICAgfQoKICAgIC50aWxlLW92ZXJsYXkgZGVlcy1pY29uIHsKICAgICAgZm9udC1zaXplOiAyNHB4OwogICAgICBjb2xvcjogd2hpdGU7CiAgICB9CgogICAgLnRpbGUtb3ZlcmxheSBzcGFuIHsKICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICBmb250LXdlaWdodDogNTAwOwogICAgICBjb2xvcjogd2hpdGU7CiAgICB9CgogICAgLnRpbGUtaW5mby1iYXIgewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIGJvdHRvbTogMDsKICAgICAgbGVmdDogMDsKICAgICAgcmlnaHQ6IDA7CiAgICAgIHBhZGRpbmc6IDRweCA4cHg7CiAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxMDAlIC8gMC45NSkiLCJoc2woMjE1IDIwJSAxMiUgLyAwLjk1KSIpfTsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgZ2FwOiA2cHg7CiAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1IDE2JSA0NSUpIiwiaHNsKDIxNSAxNiUgNzUlKSIpfTsKICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEycHgpOwogICAgICB6LWluZGV4OiAyNTsKICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtczsKICAgIH0KCiAgICAuaW5mby1sYWJlbCB7CiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICBtaW4td2lkdGg6IDA7CiAgICB9CgogICAgLmluZm8tc3BhY2VyIHsKICAgICAgZmxleDogMTsKICAgIH0KCiAgICAuaW5mby1kZXRhaWwgewogICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICBvcGFjaXR5OiAwLjc7CiAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgfQoKICAgIC50aWxlLWxvYWRpbmcsCiAgICAudGlsZS1lcnJvciB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgdG9wOiAwOwogICAgICBsZWZ0OiAwOwogICAgICByaWdodDogMDsKICAgICAgYm90dG9tOiAwOwogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgZ2FwOiAxMnB4OwogICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUgMTYlIDQ1JSkiLCJoc2woMjE1IDE2JSA3NSUpIil9OwogICAgfQoKICAgIC50aWxlLWxvYWRpbmcgewogICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTklKSIsImhzbCgyMTUgMjAlIDE0JSkiKX07CiAgICB9CgogICAgLnRpbGUtZXJyb3IgewogICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgNzIlIDk4JSkiLCJoc2woMCA2MiUgMjAlKSIpfTsKICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCA3MiUgNDAlKSIsImhzbCgwIDcwJSA2OCUpIil9OwogICAgfQoKICAgIC50aWxlLWVycm9yIGRlZXMtaWNvbiB7CiAgICAgIGZvbnQtc2l6ZTogMzJweDsKICAgIH0KCiAgICAudGlsZS1zcGlubmVyIHsKICAgICAgd2lkdGg6IDI0cHg7CiAgICAgIGhlaWdodDogMjRweDsKICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICBib3JkZXI6IDJweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDIxNCAzMSUgODYlKSIsImhzbCgyMTcgMjUlIDI4JSkiKX07CiAgICAgIGJvcmRlci10b3AtY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE3IDkxJSA2MCUpIiwiaHNsKDIxMyA5MyUgNjglKSIpfTsKICAgICAgYW5pbWF0aW9uOiBzcGluIDAuOHMgbGluZWFyIGluZmluaXRlOwogICAgfQoKICAgIC50aWxlLWxvYWRpbmctdGV4dCwKICAgIC50aWxlLWVycm9yLXRleHQgewogICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICB9CgogICAgQGtleWZyYW1lcyBzcGluIHsKICAgICAgdG8gewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICAgIH0KICAgIH0KCiAgICAvKiBTaXplIHZhcmlhbnRzICovCiAgICA6aG9zdChbc2l6ZT0ic21hbGwiXSkgLnRpbGUtY29udGFpbmVyIHsKICAgICAgd2lkdGg6IDE1MHB4OwogICAgICBoZWlnaHQ6IDE5NXB4OwogICAgfQoKICAgIDpob3N0KFtzaXplPSJsYXJnZSJdKSAudGlsZS1jb250YWluZXIgewogICAgICB3aWR0aDogMjUwcHg7CiAgICAgIGhlaWdodDogMzI1cHg7CiAgICB9CgogICAgLyogR3JpZCBvcHRpbWl6YXRpb25zICovCiAgICA6aG9zdChbZ3JpZC1tb2RlXSkgLnRpbGUtY29udGFpbmVyIHsKICAgICAgd2lsbC1jaGFuZ2U6IGF1dG87CiAgICB9CiAgYF19KTt2YXIgdFEsS2QsSG4sWmg9ZygoKT0+e3BlKCk7a3UoKTtVYSgpO3RRPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxLZD1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sSG49KCgpPT57bGV0IHM9d2UsZSx0PVtdLGE9W10scixuPVtdLG89W10sbCxwPVtdLGQ9W10sdSxjPVtdLGI9W10sdix4PVtdLG09W107cmV0dXJuIGNsYXNzIGV4dGVuZHMgc3tzdGF0aWN7aSh0aGlzLCJEZWVzVGh1bWJuYWlsQmFzZSIpfXN0YXRpY3tsZXQgeT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShzW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtlPVtMKHt0eXBlOkJvb2xlYW59KV0scj1bTCh7dHlwZTpCb29sZWFufSldLGw9W0woe3R5cGU6Qm9vbGVhbn0pXSx1PVtMKHt0eXBlOlN0cmluZyxyZWZsZWN0OiEwfSldLHY9W0woe3R5cGU6U3RyaW5nfSldLHRRKHRoaXMsbnVsbCxlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY2xpY2thYmxlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKE09PiJjbGlja2FibGUiaW4gTSwiaGFzIiksZ2V0OmkoTT0+TS5jbGlja2FibGUsImdldCIpLHNldDppKChNLHopPT57TS5jbGlja2FibGU9en0sInNldCIpfSxtZXRhZGF0YTp5fSx0LGEpLHRRKHRoaXMsbnVsbCxyLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibG9hZGluZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShNPT4ibG9hZGluZyJpbiBNLCJoYXMiKSxnZXQ6aShNPT5NLmxvYWRpbmcsImdldCIpLHNldDppKChNLHopPT57TS5sb2FkaW5nPXp9LCJzZXQiKX0sbWV0YWRhdGE6eX0sbixvKSx0USh0aGlzLG51bGwsbCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImVycm9yIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKE09PiJlcnJvciJpbiBNLCJoYXMiKSxnZXQ6aShNPT5NLmVycm9yLCJnZXQiKSxzZXQ6aSgoTSx6KT0+e00uZXJyb3I9en0sInNldCIpfSxtZXRhZGF0YTp5fSxwLGQpLHRRKHRoaXMsbnVsbCx1LHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2l6ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShNPT4ic2l6ZSJpbiBNLCJoYXMiKSxnZXQ6aShNPT5NLnNpemUsImdldCIpLHNldDppKChNLHopPT57TS5zaXplPXp9LCJzZXQiKX0sbWV0YWRhdGE6eX0sYyxiKSx0USh0aGlzLG51bGwsdix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImxhYmVsIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKE09PiJsYWJlbCJpbiBNLCJoYXMiKSxnZXQ6aShNPT5NLmxhYmVsLCJnZXQiKSxzZXQ6aSgoTSx6KT0+e00ubGFiZWw9en0sInNldCIpfSxtZXRhZGF0YTp5fSx4LG0pLHkmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6eX0pfXN0YXRpYyBzdHlsZXM9cG47I2U9S2QodGhpcyx0LCEwKTtnZXQgY2xpY2thYmxlKCl7cmV0dXJuIHRoaXMuI2V9c2V0IGNsaWNrYWJsZSh5KXt0aGlzLiNlPXl9I3Q9KEtkKHRoaXMsYSksS2QodGhpcyxuLCExKSk7Z2V0IGxvYWRpbmcoKXtyZXR1cm4gdGhpcy4jdH1zZXQgbG9hZGluZyh5KXt0aGlzLiN0PXl9I2E9KEtkKHRoaXMsbyksS2QodGhpcyxwLCExKSk7Z2V0IGVycm9yKCl7cmV0dXJuIHRoaXMuI2F9c2V0IGVycm9yKHkpe3RoaXMuI2E9eX0jcz0oS2QodGhpcyxkKSxLZCh0aGlzLGMsImRlZmF1bHQiKSk7Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy4jc31zZXQgc2l6ZSh5KXt0aGlzLiNzPXl9I2k9KEtkKHRoaXMsYiksS2QodGhpcyx4LCIiKSk7Z2V0IGxhYmVsKCl7cmV0dXJuIHRoaXMuI2l9c2V0IGxhYmVsKHkpe3RoaXMuI2k9eX1vYnNlcnZlcj1LZCh0aGlzLG0pO192aXNpYmxlPSExO2dldCBpc1Zpc2libGUoKXtyZXR1cm4gdGhpcy5fdmlzaWJsZX1yZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdgogICAgICAgIGNsYXNzPSJ0aWxlLWNvbnRhaW5lciAke3RoaXMuY2xpY2thYmxlPyJjbGlja2FibGUiOiIifSAke3RoaXMubG9hZGluZz8ibG9hZGluZyI6IiJ9ICR7dGhpcy5lcnJvcj8iZXJyb3IiOiIifSIKICAgICAgICBAY2xpY2s9JHt0aGlzLmhhbmRsZVRpbGVDbGlja30KICAgICAgICBAbW91c2VlbnRlcj0ke3RoaXMub25UaWxlTW91c2VFbnRlcn0KICAgICAgICBAbW91c2VsZWF2ZT0ke3RoaXMub25UaWxlTW91c2VMZWF2ZX0KICAgICAgICBAbW91c2Vtb3ZlPSR7dGhpcy5vblRpbGVNb3VzZU1vdmV9CiAgICAgID4KICAgICAgICAke3RoaXMubG9hZGluZz93YAogICAgICAgICAgPGRpdiBjbGFzcz0idGlsZS1sb2FkaW5nIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGlsZS1zcGlubmVyIj48L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGlsZS1sb2FkaW5nLXRleHQiPkxvYWRpbmcuLi48L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIGA6IiJ9CgogICAgICAgICR7dGhpcy5lcnJvcj93YAogICAgICAgICAgPGRpdiBjbGFzcz0idGlsZS1lcnJvciI+CiAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOkFsZXJ0VHJpYW5nbGUiPjwvZGVlcy1pY29uPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aWxlLWVycm9yLXRleHQiPkZhaWxlZCB0byBsb2FkPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgOiIifQoKICAgICAgICAkeyF0aGlzLmxvYWRpbmcmJiF0aGlzLmVycm9yP3RoaXMucmVuZGVyVGlsZUNvbnRlbnQoKToiIn0KCiAgICAgICAgJHt0aGlzLnJlbmRlckJvdHRvbUJhcigpfQogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyQm90dG9tQmFyKCl7cmV0dXJuIiJ9YXN5bmMgY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuc2V0dXBJbnRlcnNlY3Rpb25PYnNlcnZlcigpfWFzeW5jIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLm9ic2VydmVyJiYodGhpcy5vYnNlcnZlci5kaXNjb25uZWN0KCksdGhpcy5vYnNlcnZlcj12b2lkIDApfXNldHVwSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKXt0aGlzLm9ic2VydmVyPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcih5PT57Zm9yKGxldCBNIG9mIHkpe2xldCB6PXRoaXMuX3Zpc2libGU7dGhpcy5fdmlzaWJsZT1NLmlzSW50ZXJzZWN0aW5nLHRoaXMuX3Zpc2libGUmJiF6JiZ0aGlzLm9uQmVjYW1lVmlzaWJsZSgpfX0se3Jvb3Q6bnVsbCxyb290TWFyZ2luOiIyMDBweCIsdGhyZXNob2xkOi4wMX0pLHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzKX1vbkJlY2FtZVZpc2libGUoKXt9b25UaWxlTW91c2VFbnRlcigpe31vblRpbGVNb3VzZUxlYXZlKCl7fW9uVGlsZU1vdXNlTW92ZSh5KXt9aGFuZGxlVGlsZUNsaWNrKCl7dGhpcy5jbGlja2FibGUmJnRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInRpbGUtY2xpY2siLHtkZXRhaWw6dGhpcy5nZXRUaWxlQ2xpY2tEZXRhaWwoKSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWdldFRpbGVDbGlja0RldGFpbCgpe3JldHVybnt9fX19KSgpfSk7dmFyIEo1YT1nKCgpPT57WmgoKTtrdSgpfSk7dmFyIGU4YSx0OGE9ZygoKT0+e3BlKCk7ZThhPUpgCiAgLnByZXZpZXctc3RhY2sgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBwYWRkaW5nOiA4cHggOHB4IDI4cHggOHB4OwogIH0KCiAgLnByZXZpZXctc3RhY2subm9uLWE0IHsKICAgIHBhZGRpbmc6IDEycHggMTJweCAyOHB4IDEycHg7CiAgfQoKICAucHJldmlldy1jYW52YXMgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgYmFja2dyb3VuZDogd2hpdGU7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1heC13aWR0aDogMTAwJTsKICAgIG1heC1oZWlnaHQ6IDEwMCU7CiAgICB3aWR0aDogYXV0bzsKICAgIGhlaWdodDogYXV0bzsKICAgIG9iamVjdC1maXQ6IGNvbnRhaW47CiAgICBpbWFnZS1yZW5kZXJpbmc6IGF1dG87CiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjEpIiwicmdiYSgwLCAwLCAwLCAwLjMpIil9OwogIH0KCiAgLm5vbi1hNCAucHJldmlldy1jYW52YXMgewogICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgyMTQgMzElIDkyJSkiLCJoc2woMjE3IDI1JSAyNCUpIil9OwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogIH0KCiAgLyogR3JpZCBvcHRpbWl6YXRpb25zICovCiAgOmhvc3QoW2dyaWQtbW9kZV0pIC5wcmV2aWV3LWNhbnZhcyB7CiAgICBpbWFnZS1yZW5kZXJpbmc6IC13ZWJraXQtb3B0aW1pemUtY29udHJhc3Q7CiAgICBpbWFnZS1yZW5kZXJpbmc6IGNyaXNwLWVkZ2VzOwogIH0KYH0pO3ZhciBhOGEsczhhPWcoKCk9PntwZSgpO2E4YT1pKCgpPT57bGV0IHM9WyJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbW96aWxsYS9wZGYuanMvYmEyZWRlYWUvZXhhbXBsZXMvbGVhcm5pbmcvaGVsbG93b3JsZC5wZGYiLCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbW96aWxsYS9wZGYuanMvYmEyZWRlYWUvd2ViL2NvbXByZXNzZWQudHJhY2Vtb25rZXktcGxkaS0wOS5wZGYiXSxlPWkodD0+e2xldCBhPVtdO2ZvcihsZXQgcj0wO3I8dDtyKyspe2xldCBuPXNbciVzLmxlbmd0aF07YS5wdXNoKHdgCiAgICAgICAgPGRlZXMtdGh1bWJuYWlsLXBkZgogICAgICAgICAgcGRmVXJsPSIke259IgogICAgICAgICAgY2xpY2thYmxlPSJ0cnVlIgogICAgICAgICAgZ3JpZC1tb2RlCiAgICAgICAgICBAdGlsZS1jbGljaz0ke289Pntjb25zb2xlLmxvZygiUERGIFRpbGUgY2xpY2tlZDoiLG8uZGV0YWlsKSxhbGVydChgUERGIGNsaWNrZWQ6ICR7by5kZXRhaWwucGFnZUNvdW50fSBwYWdlc2ApfX0KICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC1wZGY+CiAgICAgIGApfXJldHVybiBhfSwiZ2VuZXJhdGVHcmlkSXRlbXMiKTtyZXR1cm4gd2AKICAgIDxzdHlsZT4KICAgICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nOiA0MHB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjVmNWY1IiwiIzBhMGEwYSIpfTsKICAgICAgfQoKICAgICAgLmRlbW8tc2VjdGlvbiB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNjBweDsKICAgICAgfQoKICAgICAgaDMgewogICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLnByZXZpZXctZ3JpZCB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgyMDBweCwgMWZyKSk7CiAgICAgICAgZ2FwOiAyNHB4OwogICAgICB9CgogICAgICAucHJldmlldy1yb3cgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgfQoKICAgICAgLnByZXZpZXctbGFiZWwgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIG1pbi13aWR0aDogMTAwcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgzPlNpbmdsZSBQREYgVGlsZTwvaDM+CiAgICAgICAgPGRlZXMtdGh1bWJuYWlsLXBkZgogICAgICAgICAgcGRmVXJsPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbW96aWxsYS9wZGYuanMvYmEyZWRlYWUvd2ViL2NvbXByZXNzZWQudHJhY2Vtb25rZXktcGxkaS0wOS5wZGYiCiAgICAgICAgICBjbGlja2FibGU9InRydWUiCiAgICAgICAgPjwvZGVlcy10aHVtYm5haWwtcGRmPgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgzPkRpZmZlcmVudCBTaXplczwvaDM+CiAgICAgICAgPGRpdiBjbGFzcz0icHJldmlldy1yb3ciPgogICAgICAgICAgPGRpdiBjbGFzcz0icHJldmlldy1sYWJlbCI+U21hbGw6PC9kaXY+CiAgICAgICAgICA8ZGVlcy10aHVtYm5haWwtcGRmCiAgICAgICAgICAgIHNpemU9InNtYWxsIgogICAgICAgICAgICBwZGZVcmw9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9tb3ppbGxhL3BkZi5qcy9iYTJlZGVhZS9leGFtcGxlcy9sZWFybmluZy9oZWxsb3dvcmxkLnBkZiIKICAgICAgICAgICAgY2xpY2thYmxlPSJ0cnVlIgogICAgICAgICAgPjwvZGVlcy10aHVtYm5haWwtcGRmPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJwcmV2aWV3LXJvdyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmV2aWV3LWxhYmVsIj5EZWZhdWx0OjwvZGl2PgogICAgICAgICAgPGRlZXMtdGh1bWJuYWlsLXBkZgogICAgICAgICAgICBwZGZVcmw9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9tb3ppbGxhL3BkZi5qcy9iYTJlZGVhZS9leGFtcGxlcy9sZWFybmluZy9oZWxsb3dvcmxkLnBkZiIKICAgICAgICAgICAgY2xpY2thYmxlPSJ0cnVlIgogICAgICAgICAgPjwvZGVlcy10aHVtYm5haWwtcGRmPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJwcmV2aWV3LXJvdyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmV2aWV3LWxhYmVsIj5MYXJnZTo8L2Rpdj4KICAgICAgICAgIDxkZWVzLXRodW1ibmFpbC1wZGYKICAgICAgICAgICAgc2l6ZT0ibGFyZ2UiCiAgICAgICAgICAgIHBkZlVybD0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL21vemlsbGEvcGRmLmpzL2JhMmVkZWFlL2V4YW1wbGVzL2xlYXJuaW5nL2hlbGxvd29ybGQucGRmIgogICAgICAgICAgICBjbGlja2FibGU9InRydWUiCiAgICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC1wZGY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgICA8aDM+V2l0aCBMYWJlbDwvaDM+CiAgICAgICAgPGRlZXMtdGh1bWJuYWlsLXBkZgogICAgICAgICAgcGRmVXJsPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbW96aWxsYS9wZGYuanMvYmEyZWRlYWUvd2ViL2NvbXByZXNzZWQudHJhY2Vtb25rZXktcGxkaS0wOS5wZGYiCiAgICAgICAgICBjbGlja2FibGU9InRydWUiCiAgICAgICAgICBsYWJlbD0iUmVzZWFyY2ggUGFwZXIucGRmIgogICAgICAgID48L2RlZXMtdGh1bWJuYWlsLXBkZj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICAgIDxoMz5Ob24tQ2xpY2thYmxlPC9oMz4KICAgICAgICA8ZGVlcy10aHVtYm5haWwtcGRmCiAgICAgICAgICBwZGZVcmw9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9tb3ppbGxhL3BkZi5qcy9iYTJlZGVhZS9leGFtcGxlcy9sZWFybmluZy9oZWxsb3dvcmxkLnBkZiIKICAgICAgICAgIGNsaWNrYWJsZT0iZmFsc2UiCiAgICAgICAgPjwvZGVlcy10aHVtYm5haWwtcGRmPgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgzPkdyaWQgLSAyMCBQREZzIHdpdGggTGF6eSBMb2FkaW5nPC9oMz4KICAgICAgICA8ZGl2IGNsYXNzPSJwcmV2aWV3LWdyaWQiPgogICAgICAgICAgJHtlKDIwKX0KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICBgfSwiZGVtbyIpfSk7dmFyIFhoLHFuLGk4YSxyOGE9ZygoKT0+e3BlKCk7WmgoKTtrdSgpO3IxZSgpO2lydCgpO29ydCgpO3Q4YSgpO3M4YSgpO1hoPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxxbj1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0saThhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy10aHVtYm5haWwtcGRmIildLGUsdD1bXSxhLHI9SG4sbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W107dmFyIEg9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNUaHVtYm5haWxQZGYiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgaz10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZ30pXSxwPVtMKHt0eXBlOk51bWJlcn0pXSxjPVtMKHt0eXBlOk51bWJlcn0pXSx4PVtMKHt0eXBlOkJvb2xlYW59KV0seT1bTCh7dHlwZTpCb29sZWFufSldLE49W0woe3R5cGU6Qm9vbGVhbn0pXSxPPVtZKCldLFhoKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicGRmVXJsIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJwZGZVcmwiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5wZGZVcmwsImdldCIpLHNldDppKChTLEkpPT57Uy5wZGZVcmw9SX0sInNldCIpfSxtZXRhZGF0YTprfSxvLGwpLFhoKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY3VycmVudFByZXZpZXdQYWdlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJjdXJyZW50UHJldmlld1BhZ2UiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5jdXJyZW50UHJldmlld1BhZ2UsImdldCIpLHNldDppKChTLEkpPT57Uy5jdXJyZW50UHJldmlld1BhZ2U9SX0sInNldCIpfSxtZXRhZGF0YTprfSxkLHUpLFhoKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicGFnZUNvdW50IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJwYWdlQ291bnQiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5wYWdlQ291bnQsImdldCIpLHNldDppKChTLEkpPT57Uy5wYWdlQ291bnQ9SX0sInNldCIpfSxtZXRhZGF0YTprfSxiLHYpLFhoKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToicmVuZGVyZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+InJlbmRlcmVkImluIFMsImhhcyIpLGdldDppKFM9PlMucmVuZGVyZWQsImdldCIpLHNldDppKChTLEkpPT57Uy5yZW5kZXJlZD1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LG0sZiksWGgodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpc0hvdmVyaW5nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJpc0hvdmVyaW5nImluIFMsImhhcyIpLGdldDppKFM9PlMuaXNIb3ZlcmluZywiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLmlzSG92ZXJpbmc9SX0sInNldCIpfSxtZXRhZGF0YTprfSxNLHopLFhoKHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNBNEZvcm1hdCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4iaXNBNEZvcm1hdCJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLmlzQTRGb3JtYXQsImdldCIpLHNldDppKChTLEkpPT57Uy5pc0E0Rm9ybWF0PUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sQyxfKSxYaCh0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImZpbGVTaXplIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJmaWxlU2l6ZSJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLmZpbGVTaXplLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MuZmlsZVNpemU9SX0sInNldCIpfSxtZXRhZGF0YTprfSwkLEUpLFhoKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOmt9LG51bGwsdCksSD1hPWUudmFsdWUsayYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTprfSl9c3RhdGljIGRlbW89YThhO3N0YXRpYyBkZW1vR3JvdXBzPVsiTWVkaWEiLCJQREYiXTtzdGF0aWMgc3R5bGVzPVsuLi5wbixlOGFdOyNlPXFuKHRoaXMsbywiIik7Z2V0IHBkZlVybCgpe3JldHVybiB0aGlzLiNlfXNldCBwZGZVcmwoayl7dGhpcy4jZT1rfSN0PShxbih0aGlzLGwpLHFuKHRoaXMsZCwxKSk7Z2V0IGN1cnJlbnRQcmV2aWV3UGFnZSgpe3JldHVybiB0aGlzLiN0fXNldCBjdXJyZW50UHJldmlld1BhZ2Uoayl7dGhpcy4jdD1rfSNhPShxbih0aGlzLHUpLHFuKHRoaXMsYiwwKSk7Z2V0IHBhZ2VDb3VudCgpe3JldHVybiB0aGlzLiNhfXNldCBwYWdlQ291bnQoayl7dGhpcy4jYT1rfSNzPShxbih0aGlzLHYpLHFuKHRoaXMsbSwhMSkpO2dldCByZW5kZXJlZCgpe3JldHVybiB0aGlzLiNzfXNldCByZW5kZXJlZChrKXt0aGlzLiNzPWt9I2k9KHFuKHRoaXMsZikscW4odGhpcyxNLCExKSk7Z2V0IGlzSG92ZXJpbmcoKXtyZXR1cm4gdGhpcy4jaX1zZXQgaXNIb3ZlcmluZyhrKXt0aGlzLiNpPWt9I3I9KHFuKHRoaXMseikscW4odGhpcyxDLCEwKSk7Z2V0IGlzQTRGb3JtYXQoKXtyZXR1cm4gdGhpcy4jcn1zZXQgaXNBNEZvcm1hdChrKXt0aGlzLiNyPWt9I289KHFuKHRoaXMsXykscW4odGhpcywkLDApKTtnZXQgZmlsZVNpemUoKXtyZXR1cm4gdGhpcy4jb31zZXQgZmlsZVNpemUoayl7dGhpcy4jbz1rfXJlbmRlclBhZ2VzVGFzaz0ocW4odGhpcyxFKSxudWxsKTtyZW5kZXJQYWdlc1F1ZXVlZD0hMTtwZGZEb2N1bWVudDtjYW52YXNlcz1bXTtyZXNpemVPYnNlcnZlcjtzdGFja0VsZW1lbnQ9bnVsbDtsb2FkZWRQZGZVcmw9bnVsbDtyZW5kZXJUaWxlQ29udGVudCgpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJwcmV2aWV3LXN0YWNrICR7dGhpcy5pc0E0Rm9ybWF0PyIiOiJub24tYTQifSI+CiAgICAgICAgPGNhbnZhcwogICAgICAgICAgY2xhc3M9InByZXZpZXctY2FudmFzIgogICAgICAgICAgZGF0YS1wYWdlPSIke3RoaXMuY3VycmVudFByZXZpZXdQYWdlfSIKICAgICAgICA+PC9jYW52YXM+CiAgICAgIDwvZGl2PgoKICAgICAgJHt0aGlzLmNsaWNrYWJsZT93YAogICAgICAgIDxkaXYgY2xhc3M9InRpbGUtb3ZlcmxheSI+CiAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpFeWUiPjwvZGVlcy1pY29uPgogICAgICAgICAgPHNwYW4+VmlldyBQREY8L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgIGA6IiJ9CiAgICBgfXJlbmRlckJvdHRvbUJhcigpe3JldHVybiF0aGlzLnBhZ2VDb3VudCYmIXRoaXMubGFiZWw/IiI6d2AKICAgICAgPGRpdiBjbGFzcz0idGlsZS1pbmZvLWJhciI+CiAgICAgICAgJHt0aGlzLmxhYmVsP3dgPHNwYW4gY2xhc3M9ImluZm8tbGFiZWwiIHRpdGxlPSIke3RoaXMubGFiZWx9Ij4ke3RoaXMubGFiZWx9PC9zcGFuPmA6IiJ9CiAgICAgICAgPHNwYW4gY2xhc3M9ImluZm8tc3BhY2VyIj48L3NwYW4+CiAgICAgICAgJHt0aGlzLnBhZ2VDb3VudD4xJiZ0aGlzLmlzSG92ZXJpbmc/d2A8c3BhbiBjbGFzcz0iaW5mby1kZXRhaWwiPiR7dGhpcy5jdXJyZW50UHJldmlld1BhZ2V9LyR7dGhpcy5wYWdlQ291bnR9PC9zcGFuPmA6dGhpcy5wYWdlQ291bnQ+MD93YDxzcGFuIGNsYXNzPSJpbmZvLWRldGFpbCI+JHt0aGlzLnBhZ2VDb3VudH0gcGc8L3NwYW4+YDoiIn0KICAgICAgICAke3RoaXMuZmlsZVNpemU+MD93YDxzcGFuIGNsYXNzPSJpbmZvLWRldGFpbCI+JHtycnQodGhpcy5maWxlU2l6ZSl9PC9zcGFuPmA6IiJ9CiAgICAgIDwvZGl2PgogICAgYH1nZXRUaWxlQ2xpY2tEZXRhaWwoKXtyZXR1cm57cGRmVXJsOnRoaXMucGRmVXJsLHBhZ2VDb3VudDp0aGlzLnBhZ2VDb3VudH19b25CZWNhbWVWaXNpYmxlKCl7IXRoaXMucmVuZGVyZWQmJnRoaXMucGRmVXJsJiZ0aGlzLmxvYWRBbmRSZW5kZXJQcmV2aWV3KCl9b25UaWxlTW91c2VFbnRlcigpe3RoaXMuaXNIb3ZlcmluZz0hMH1vblRpbGVNb3VzZUxlYXZlKCl7dGhpcy5pc0hvdmVyaW5nPSExLHRoaXMuY3VycmVudFByZXZpZXdQYWdlIT09MSYmKHRoaXMuY3VycmVudFByZXZpZXdQYWdlPTEsdGhpcy5zY2hlZHVsZVJlbmRlclBhZ2VzKCkpfW9uVGlsZU1vdXNlTW92ZShrKXtpZighdGhpcy5pc0hvdmVyaW5nfHx0aGlzLnBhZ2VDb3VudDw9MSlyZXR1cm47bGV0IFM9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxJPWsuY2xpZW50WC1TLmxlZnQsUD1TLndpZHRoLFI9TWF0aC5tYXgoMCxNYXRoLm1pbigxLEkvUCkpLEs9TWF0aC5jZWlsKFIqdGhpcy5wYWdlQ291bnQpfHwxO0shPT10aGlzLmN1cnJlbnRQcmV2aWV3UGFnZSYmKHRoaXMuY3VycmVudFByZXZpZXdQYWdlPUssdGhpcy5zY2hlZHVsZVJlbmRlclBhZ2VzKCkpfWFzeW5jIGNvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSxhd2FpdCB0aGlzLnVwZGF0ZUNvbXBsZXRlLHRoaXMuY2FjaGVFbGVtZW50cygpLHRoaXMuc2V0dXBSZXNpemVPYnNlcnZlcigpfWFzeW5jIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLmNsZWFudXAoKSx0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCksdGhpcy5yZXNpemVPYnNlcnZlcj12b2lkIDB9YXN5bmMgbG9hZEFuZFJlbmRlclByZXZpZXcoKXtpZighKHRoaXMucmVuZGVyZWR8fHRoaXMubG9hZGluZykpe3RoaXMubG9hZGluZz0hMCx0aGlzLmVycm9yPSExLGl4Lm1hcmsoYHByZXZpZXctbG9hZC0ke3RoaXMucGRmVXJsfWApO3RyeXt0aGlzLnBkZkRvY3VtZW50PWF3YWl0IEdkLmxvYWREb2N1bWVudCh0aGlzLnBkZlVybCksdGhpcy5wYWdlQ291bnQ9dGhpcy5wZGZEb2N1bWVudC5udW1QYWdlcyx0aGlzLmN1cnJlbnRQcmV2aWV3UGFnZT0xO3RyeXtsZXQgUz1hd2FpdCB0aGlzLnBkZkRvY3VtZW50LmdldERvd25sb2FkSW5mbygpO3RoaXMuZmlsZVNpemU9Uy5sZW5ndGh9Y2F0Y2h7fXRoaXMubG9hZGVkUGRmVXJsPXRoaXMucGRmVXJsLHRoaXMubG9hZGluZz0hMSxhd2FpdCB0aGlzLnVwZGF0ZUNvbXBsZXRlLHRoaXMuY2FjaGVFbGVtZW50cygpLGF3YWl0IHRoaXMuc2NoZWR1bGVSZW5kZXJQYWdlcygpLHRoaXMucmVuZGVyZWQ9ITA7bGV0IGs9aXgubWVhc3VyZShgcHJldmlldy1yZW5kZXItJHt0aGlzLnBkZlVybH1gLGBwcmV2aWV3LWxvYWQtJHt0aGlzLnBkZlVybH1gKTtjb25zb2xlLmxvZyhgUERGIHRpbGUgcmVuZGVyZWQgaW4gJHtrfW1zYCl9Y2F0Y2goayl7Y29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGxvYWQgUERGIHRpbGU6IixrKSx0aGlzLmVycm9yPSEwLHRoaXMubG9hZGluZz0hMX19fXNjaGVkdWxlUmVuZGVyUGFnZXMoKXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudD90aGlzLnJlbmRlclBhZ2VzVGFzaz8odGhpcy5yZW5kZXJQYWdlc1F1ZXVlZD0hMCx0aGlzLnJlbmRlclBhZ2VzVGFzayk6KHRoaXMucmVuZGVyUGFnZXNUYXNrPShhc3luYygpPT57dHJ5e2F3YWl0IHRoaXMucGVyZm9ybVJlbmRlclBhZ2VzKCl9Y2F0Y2goayl7Y29uc29sZS5lcnJvcigiRmFpbGVkIHRvIHJlbmRlciBQREYgdGlsZSBwYWdlczoiLGspfX0pKCkuZmluYWxseSgoKT0+e3RoaXMucmVuZGVyUGFnZXNUYXNrPW51bGwsdGhpcy5yZW5kZXJQYWdlc1F1ZXVlZCYmKHRoaXMucmVuZGVyUGFnZXNRdWV1ZWQ9ITEsdGhpcy5zY2hlZHVsZVJlbmRlclBhZ2VzKCkpfSksdGhpcy5yZW5kZXJQYWdlc1Rhc2spOlByb21pc2UucmVzb2x2ZSgpfWFzeW5jIHBlcmZvcm1SZW5kZXJQYWdlcygpe2lmKCF0aGlzLnBkZkRvY3VtZW50KXJldHVybjthd2FpdCBuZXcgUHJvbWlzZShQPT5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoUCkpO2xldCBrPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLnByZXZpZXctY2FudmFzIik7aWYoIWspcmV0dXJuO3RoaXMuY2xlYXJDYW52YXNlcygpLHRoaXMuY2FjaGVFbGVtZW50cygpO2xldHthdmFpbGFibGVXaWR0aDpTLGF2YWlsYWJsZUhlaWdodDpJfT10aGlzLmdldEF2YWlsYWJsZVNpemUoKTt0cnl7bGV0IFA9dGhpcy5jdXJyZW50UHJldmlld1BhZ2UsUj1hd2FpdCB0aGlzLnBkZkRvY3VtZW50LmdldFBhZ2UoUCksSz1SLmdldFZpZXdwb3J0KHtzY2FsZToxfSksVj1LLmhlaWdodC9LLndpZHRoLFc9MS40MTQsbWU9LjcwNyxCPTEuMjk0LFU9Ljc3MyxoZT0uMDUsRj1NYXRoLmFicyhWLVcpPFcqaGUsaj1NYXRoLmFicyhWLW1lKTxtZSpoZSx1ZT1NYXRoLmFicyhWLUIpPEIqaGUsbGU9TWF0aC5hYnMoVi1VKTxVKmhlO3RoaXMuaXNBNEZvcm1hdD1GfHxqfHx1ZXx8bGU7bGV0IFE9dGhpcy5pc0E0Rm9ybWF0P1M6Uy0yNCxpZT10aGlzLmlzQTRGb3JtYXQ/STpJLTI0LHRlPVE+MD9RL0sud2lkdGg6MCxlZT1pZT4wP2llL0suaGVpZ2h0OjAsa2U9TWF0aC5taW4odGV8fC41LGVlfHx0ZXx8LjUpLFg9TWF0aC5taW4oa2UqMiwzKTtpZighTnVtYmVyLmlzRmluaXRlKFgpfHxYPD0wKXtSLmNsZWFudXA/LigpO3JldHVybn1sZXQgWj1SLmdldFZpZXdwb3J0KHtzY2FsZTpYfSkseWU9c3guYWNxdWlyZShaLndpZHRoLFouaGVpZ2h0KTt0aGlzLmNhbnZhc2VzLnB1c2goeWUpO2xldCBxPXtjYW52YXNDb250ZXh0OnllLmN0eCx2aWV3cG9ydDpafTthd2FpdCBSLnJlbmRlcihxKS5wcm9taXNlLGsud2lkdGg9Wi53aWR0aCxrLmhlaWdodD1aLmhlaWdodDtsZXQgQT1RLHNlPVouaGVpZ2h0L1oud2lkdGgqUTtpZihzZT5pZSl7bGV0IGFlPWllLFRlPVoud2lkdGgvWi5oZWlnaHQqaWU7ay5zdHlsZS53aWR0aD1gJHtUZX1weGAsay5zdHlsZS5oZWlnaHQ9YCR7YWV9cHhgfWVsc2Ugay5zdHlsZS53aWR0aD1gJHtBfXB4YCxrLnN0eWxlLmhlaWdodD1gJHtzZX1weGA7bGV0IG9lPWsuZ2V0Q29udGV4dCgiMmQiKTtvZSYmKG9lLmltYWdlU21vb3RoaW5nRW5hYmxlZD0hMCxvZS5pbWFnZVNtb290aGluZ1F1YWxpdHk9ImhpZ2giLG9lLmRyYXdJbWFnZSh5ZS5jYW52YXMsMCwwKSksUi5jbGVhbnVwKCl9Y2F0Y2goUCl7Y29uc29sZS5lcnJvcihgRmFpbGVkIHRvIHJlbmRlciBwYWdlICR7dGhpcy5jdXJyZW50UHJldmlld1BhZ2V9OmAsUCl9fWNsZWFyQ2FudmFzZXMoKXtmb3IobGV0IGsgb2YgdGhpcy5jYW52YXNlcylzeC5yZWxlYXNlKGspO3RoaXMuY2FudmFzZXM9W119Y2xlYW51cCgpe3RoaXMuY2xlYXJDYW52YXNlcygpLHRoaXMucGRmRG9jdW1lbnQmJihHZC5yZWxlYXNlRG9jdW1lbnQodGhpcy5sb2FkZWRQZGZVcmw/P3RoaXMucGRmVXJsKSx0aGlzLnBkZkRvY3VtZW50PW51bGwpLHRoaXMucmVuZGVyUGFnZXNRdWV1ZWQ9ITEsdGhpcy5wYWdlQ291bnQ9MCx0aGlzLmN1cnJlbnRQcmV2aWV3UGFnZT0xLHRoaXMuaXNIb3ZlcmluZz0hMSx0aGlzLmlzQTRGb3JtYXQ9ITAsdGhpcy5zdGFja0VsZW1lbnQ9bnVsbCx0aGlzLmxvYWRlZFBkZlVybD1udWxsLHRoaXMucmVuZGVyZWQ9ITEsdGhpcy5sb2FkaW5nPSExLHRoaXMuZXJyb3I9ITF9YXN5bmMgdXBkYXRlZChrKXtpZihzdXBlci51cGRhdGVkKGspLGsuaGFzKCJwZGZVcmwiKSYmdGhpcy5wZGZVcmwpe2xldCBTPWsuZ2V0KCJwZGZVcmwiKTtTJiZHZC5yZWxlYXNlRG9jdW1lbnQoUyksdGhpcy5jbGVhbnVwKCksdGhpcy5yZW5kZXJlZD0hMSx0aGlzLmN1cnJlbnRQcmV2aWV3UGFnZT0xO2xldCBJPXRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7SS50b3A8d2luZG93LmlubmVySGVpZ2h0JiZJLmJvdHRvbT4wJiZ0aGlzLmxvYWRBbmRSZW5kZXJQcmV2aWV3KCl9ay5oYXMoImN1cnJlbnRQcmV2aWV3UGFnZSIpJiZ0aGlzLnJlbmRlcmVkJiZhd2FpdCB0aGlzLnNjaGVkdWxlUmVuZGVyUGFnZXMoKX1nZXRDb250ZXh0TWVudUl0ZW1zKCl7bGV0IGs9W107cmV0dXJuIHRoaXMuY2xpY2thYmxlJiYoay5wdXNoKHtuYW1lOiJWaWV3IFBERiIsaWNvbk5hbWU6Imx1Y2lkZTpFeWUiLGFjdGlvbjppKGFzeW5jKCk9Pnt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJ0aWxlLWNsaWNrIix7ZGV0YWlsOnRoaXMuZ2V0VGlsZUNsaWNrRGV0YWlsKCksYnViYmxlczohMCxjb21wb3NlZDohMH0pKX0sImFjdGlvbiIpfSksay5wdXNoKHtkaXZpZGVyOiEwfSkpLGsucHVzaCh7bmFtZToiT3BlbiBQREYgaW4gTmV3IFRhYiIsaWNvbk5hbWU6Imx1Y2lkZTpFeHRlcm5hbExpbmsiLGFjdGlvbjppKGFzeW5jKCk9Pnt3aW5kb3cub3Blbih0aGlzLnBkZlVybCwiX2JsYW5rIil9LCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJDb3B5IFBERiBVUkwiLGljb25OYW1lOiJsdWNpZGU6Q29weSIsYWN0aW9uOmkoYXN5bmMoKT0+e2F3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRoaXMucGRmVXJsKX0sImFjdGlvbiIpfSx7bmFtZToiRG93bmxvYWQgUERGIixpY29uTmFtZToibHVjaWRlOkRvd25sb2FkIixhY3Rpb246aShhc3luYygpPT57bGV0IFM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO1MuaHJlZj10aGlzLnBkZlVybCxTLmRvd25sb2FkPXRoaXMucGRmVXJsLnNwbGl0KCIvIikucG9wKCl8fCJkb2N1bWVudC5wZGYiLFMuY2xpY2soKX0sImFjdGlvbiIpfSksdGhpcy5wYWdlQ291bnQ+MCYmay5wdXNoKHtkaXZpZGVyOiEwfSx7bmFtZTpgJHt0aGlzLnBhZ2VDb3VudH0gcGFnZSR7dGhpcy5wYWdlQ291bnQ+MT8icyI6IiJ9YCxpY29uTmFtZToibHVjaWRlOkZpbGVUZXh0IixkaXNhYmxlZDohMCxhY3Rpb246aShhc3luYygpPT57fSwiYWN0aW9uIil9KSxrfWNhY2hlRWxlbWVudHMoKXt0aGlzLnN0YWNrRWxlbWVudHx8KHRoaXMuc3RhY2tFbGVtZW50PXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLnByZXZpZXctc3RhY2siKSl9c2V0dXBSZXNpemVPYnNlcnZlcigpe3RoaXMucmVzaXplT2JzZXJ2ZXJ8fCh0aGlzLnJlc2l6ZU9ic2VydmVyPW5ldyBSZXNpemVPYnNlcnZlcigoKT0+e3RoaXMucmVuZGVyZWQmJnRoaXMucGRmRG9jdW1lbnQmJiF0aGlzLmxvYWRpbmcmJnRoaXMuc2NoZWR1bGVSZW5kZXJQYWdlcygpfSksdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMpKX1nZXRBdmFpbGFibGVTaXplKCl7aWYodGhpcy5zdGFja0VsZW1lbnR8fCh0aGlzLnN0YWNrRWxlbWVudD10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5wcmV2aWV3LXN0YWNrIikpLCF0aGlzLnN0YWNrRWxlbWVudClyZXR1cm57YXZhaWxhYmxlV2lkdGg6MjAwLGF2YWlsYWJsZUhlaWdodDoyNjB9O2xldCBrPXRoaXMuc3RhY2tFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFM9TWF0aC5tYXgoay53aWR0aCwwKXx8MjAwLEk9TWF0aC5tYXgoay5oZWlnaHQsMCl8fDI2MDtyZXR1cm57YXZhaWxhYmxlV2lkdGg6UyxhdmFpbGFibGVIZWlnaHQ6SX19c3RhdGlje3FuKGEsdCl9fTtyZXR1cm4gSD1hfSkoKX0pO3ZhciBvOGE9ZygoKT0+e3I4YSgpfSk7dmFyIG44YSxsOGE9ZygoKT0+e3BlKCk7bjhhPWkoKCk9PndgCiAgPHN0eWxlPgogICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgcGFkZGluZzogNDBweDsKICAgICAgYmFja2dyb3VuZDogI2Y1ZjVmNTsKICAgIH0KICAgIC5kZW1vLXNlY3Rpb24gewogICAgICBtYXJnaW4tYm90dG9tOiA2MHB4OwogICAgfQogICAgaDMgewogICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICB9CiAgICAudGlsZS1yb3cgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBnYXA6IDI0cHg7CiAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgICB9CiAgPC9zdHlsZT4KCiAgPGRpdiBjbGFzcz0iZGVtby1jb250YWluZXIiPgogICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgPGgzPkltYWdlIFRpbGVzPC9oMz4KICAgICAgPGRpdiBjbGFzcz0idGlsZS1yb3ciPgogICAgICAgIDxkZWVzLXRodW1ibmFpbC1pbWFnZQogICAgICAgICAgc3JjPSJodHRwczovL3BpY3N1bS5waG90b3MvODAwLzYwMCIKICAgICAgICAgIGFsdD0iTGFuZHNjYXBlIHBob3RvIgogICAgICAgICAgbGFiZWw9ImxhbmRzY2FwZS5qcGciCiAgICAgICAgICBAdGlsZS1jbGljaz0ke3M9PmNvbnNvbGUubG9nKCJJbWFnZSBjbGlja2VkOiIscy5kZXRhaWwpfQogICAgICAgID48L2RlZXMtdGh1bWJuYWlsLWltYWdlPgoKICAgICAgICA8ZGVlcy10aHVtYm5haWwtaW1hZ2UKICAgICAgICAgIHNyYz0iaHR0cHM6Ly9waWNzdW0ucGhvdG9zLzQwMC80MDAiCiAgICAgICAgICBhbHQ9IlNxdWFyZSBwaG90byIKICAgICAgICAgIGxhYmVsPSJzcXVhcmUucG5nIgogICAgICAgID48L2RlZXMtdGh1bWJuYWlsLWltYWdlPgoKICAgICAgICA8ZGVlcy10aHVtYm5haWwtaW1hZ2UKICAgICAgICAgIHNyYz0iaHR0cHM6Ly9waWNzdW0ucGhvdG9zLzMwMC85MDAiCiAgICAgICAgICBhbHQ9IlBvcnRyYWl0IHBob3RvIgogICAgICAgICAgbGFiZWw9InBvcnRyYWl0LndlYnAiCiAgICAgICAgPjwvZGVlcy10aHVtYm5haWwtaW1hZ2U+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgPGgzPlNpemUgVmFyaWFudHM8L2gzPgogICAgICA8ZGl2IGNsYXNzPSJ0aWxlLXJvdyI+CiAgICAgICAgPGRlZXMtdGh1bWJuYWlsLWltYWdlCiAgICAgICAgICBzaXplPSJzbWFsbCIKICAgICAgICAgIHNyYz0iaHR0cHM6Ly9waWNzdW0ucGhvdG9zLzIwMC8yMDAiCiAgICAgICAgICBhbHQ9IlNtYWxsIgogICAgICAgICAgbGFiZWw9InNtYWxsLmpwZyIKICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC1pbWFnZT4KCiAgICAgICAgPGRlZXMtdGh1bWJuYWlsLWltYWdlCiAgICAgICAgICBzcmM9Imh0dHBzOi8vcGljc3VtLnBob3Rvcy82MDAvNDAwIgogICAgICAgICAgYWx0PSJEZWZhdWx0IgogICAgICAgICAgbGFiZWw9ImRlZmF1bHQuanBnIgogICAgICAgID48L2RlZXMtdGh1bWJuYWlsLWltYWdlPgoKICAgICAgICA8ZGVlcy10aHVtYm5haWwtaW1hZ2UKICAgICAgICAgIHNpemU9ImxhcmdlIgogICAgICAgICAgc3JjPSJodHRwczovL3BpY3N1bS5waG90b3MvMTIwMC84MDAiCiAgICAgICAgICBhbHQ9IkxhcmdlIgogICAgICAgICAgbGFiZWw9ImxhcmdlLmpwZyIKICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC1pbWFnZT4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICA8aDM+RXJyb3IgU3RhdGUgKGJyb2tlbiBVUkwpPC9oMz4KICAgICAgPGRlZXMtdGh1bWJuYWlsLWltYWdlCiAgICAgICAgc3JjPSJodHRwczovL2ludmFsaWQtdXJsLXRoYXQtZG9lcy1ub3QtZXhpc3QuZXhhbXBsZS9pbWFnZS5wbmciCiAgICAgICAgYWx0PSJCcm9rZW4iCiAgICAgICAgbGFiZWw9ImJyb2tlbi5wbmciCiAgICAgID48L2RlZXMtdGh1bWJuYWlsLWltYWdlPgogICAgPC9kaXY+CiAgPC9kaXY+CmAsImRlbW8iKX0pO3ZhciByeCx1MixjOGEsZDhhPWcoKCk9PntwZSgpO1poKCk7a3UoKTtsOGEoKTtyeD1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sdTI9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LGM4YT0oKCk9PntsZXQgcz1bbmUoImRlZXMtdGh1bWJuYWlsLWltYWdlIildLGUsdD1bXSxhLHI9SG4sbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W107dmFyIE49Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNUaHVtYm5haWxJbWFnZSIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBDPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6U3RyaW5nfSldLHA9W0woe3R5cGU6U3RyaW5nfSldLGM9W1koKV0seD1bWSgpXSx5PVtZKCldLHJ4KHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic3JjIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJzcmMiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5zcmMsImdldCIpLHNldDppKChfLE8pPT57Xy5zcmM9T30sInNldCIpfSxtZXRhZGF0YTpDfSxvLGwpLHJ4KHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYWx0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJhbHQiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5hbHQsImdldCIpLHNldDppKChfLE8pPT57Xy5hbHQ9T30sInNldCIpfSxtZXRhZGF0YTpDfSxkLHUpLHJ4KHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaW1hZ2VMb2FkZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+ImltYWdlTG9hZGVkImluIF8sImhhcyIpLGdldDppKF89Pl8uaW1hZ2VMb2FkZWQsImdldCIpLHNldDppKChfLE8pPT57Xy5pbWFnZUxvYWRlZD1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LGIsdikscngodGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpbWFnZVdpZHRoIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJpbWFnZVdpZHRoImluIF8sImhhcyIpLGdldDppKF89Pl8uaW1hZ2VXaWR0aCwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLmltYWdlV2lkdGg9T30sInNldCIpfSxtZXRhZGF0YTpDfSxtLGYpLHJ4KHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaW1hZ2VIZWlnaHQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+ImltYWdlSGVpZ2h0ImluIF8sImhhcyIpLGdldDppKF89Pl8uaW1hZ2VIZWlnaHQsImdldCIpLHNldDppKChfLE8pPT57Xy5pbWFnZUhlaWdodD1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LE0seikscngobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6Q30sbnVsbCx0KSxOPWE9ZS52YWx1ZSxDJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOkN9KX1zdGF0aWMgZGVtbz1uOGE7c3RhdGljIGRlbW9Hcm91cHM9WyJNZWRpYSJdO3N0YXRpYyBzdHlsZXM9Wy4uLnBuLEpgCiAgICAgIC5pbWFnZS13cmFwcGVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZXBlYXRpbmctY29uaWMtZ3JhZGllbnQoI2U4ZThlOCAwJSAyNSUsIHdoaXRlIDAlIDUwJSkgNTAlIC8gMTZweCAxNnB4IiwicmVwZWF0aW5nLWNvbmljLWdyYWRpZW50KGhzbCgyMTUgMjAlIDE4JSkgMCUgMjUlLCBoc2woMjE1IDIwJSAxNCUpIDAlIDUwJSkgNTAlIC8gMTZweCAxNnB4Iil9OwogICAgICB9CgogICAgICAuaW1hZ2Utd3JhcHBlciBpbWcgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTsKICAgICAgfQoKICAgICAgLmltYWdlLXdyYXBwZXIgaW1nLmxvYWRlZCB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgLmltYWdlLXdyYXBwZXIgaW1nLmxvYWRpbmcgewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgIH0KCiAgICBgXTsjZT11Mih0aGlzLG8sIiIpO2dldCBzcmMoKXtyZXR1cm4gdGhpcy4jZX1zZXQgc3JjKEMpe3RoaXMuI2U9Q30jdD0odTIodGhpcyxsKSx1Mih0aGlzLGQsIiIpKTtnZXQgYWx0KCl7cmV0dXJuIHRoaXMuI3R9c2V0IGFsdChDKXt0aGlzLiN0PUN9I2E9KHUyKHRoaXMsdSksdTIodGhpcyxiLCExKSk7Z2V0IGltYWdlTG9hZGVkKCl7cmV0dXJuIHRoaXMuI2F9c2V0IGltYWdlTG9hZGVkKEMpe3RoaXMuI2E9Q30jcz0odTIodGhpcyx2KSx1Mih0aGlzLG0sMCkpO2dldCBpbWFnZVdpZHRoKCl7cmV0dXJuIHRoaXMuI3N9c2V0IGltYWdlV2lkdGgoQyl7dGhpcy4jcz1DfSNpPSh1Mih0aGlzLGYpLHUyKHRoaXMsTSwwKSk7Z2V0IGltYWdlSGVpZ2h0KCl7cmV0dXJuIHRoaXMuI2l9c2V0IGltYWdlSGVpZ2h0KEMpe3RoaXMuI2k9Q31oYXNTdGFydGVkTG9hZGluZz0odTIodGhpcyx6KSwhMSk7cmVuZGVyVGlsZUNvbnRlbnQoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iaW1hZ2Utd3JhcHBlciI+CiAgICAgICAgJHt0aGlzLmhhc1N0YXJ0ZWRMb2FkaW5nP3dgCiAgICAgICAgICA8aW1nCiAgICAgICAgICAgIGNsYXNzPSIke3RoaXMuaW1hZ2VMb2FkZWQ/ImxvYWRlZCI6ImxvYWRpbmcifSIKICAgICAgICAgICAgc3JjPSIke3RoaXMuc3JjfSIKICAgICAgICAgICAgYWx0PSIke3RoaXMuYWx0fSIKICAgICAgICAgICAgQGxvYWQ9JHt0aGlzLmhhbmRsZUltYWdlTG9hZH0KICAgICAgICAgICAgQGVycm9yPSR7dGhpcy5oYW5kbGVJbWFnZUVycm9yfQogICAgICAgICAgLz4KICAgICAgICBgOiIifQogICAgICA8L2Rpdj4KCiAgICAgICR7dGhpcy5jbGlja2FibGU/d2AKICAgICAgICA8ZGl2IGNsYXNzPSJ0aWxlLW92ZXJsYXkiPgogICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6RXllIj48L2RlZXMtaWNvbj4KICAgICAgICAgIDxzcGFuPlZpZXcgSW1hZ2U8L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgIGA6IiJ9CiAgICBgfXJlbmRlckJvdHRvbUJhcigpe3JldHVybiF0aGlzLmxhYmVsJiYhKHRoaXMuaW1hZ2VXaWR0aD4wKT8iIjp3YAogICAgICA8ZGl2IGNsYXNzPSJ0aWxlLWluZm8tYmFyIj4KICAgICAgICAke3RoaXMubGFiZWw/d2A8c3BhbiBjbGFzcz0iaW5mby1sYWJlbCIgdGl0bGU9IiR7dGhpcy5sYWJlbH0iPiR7dGhpcy5sYWJlbH08L3NwYW4+YDoiIn0KICAgICAgICA8c3BhbiBjbGFzcz0iaW5mby1zcGFjZXIiPjwvc3Bhbj4KICAgICAgICAke3RoaXMuaW1hZ2VXaWR0aD4wJiZ0aGlzLmltYWdlSGVpZ2h0PjA/d2A8c3BhbiBjbGFzcz0iaW5mby1kZXRhaWwiPiR7dGhpcy5pbWFnZVdpZHRofSDDlyAke3RoaXMuaW1hZ2VIZWlnaHR9PC9zcGFuPmA6IiJ9CiAgICAgIDwvZGl2PgogICAgYH1nZXRUaWxlQ2xpY2tEZXRhaWwoKXtyZXR1cm57c3JjOnRoaXMuc3JjLGFsdDp0aGlzLmFsdCx3aWR0aDp0aGlzLmltYWdlV2lkdGgsaGVpZ2h0OnRoaXMuaW1hZ2VIZWlnaHR9fW9uQmVjYW1lVmlzaWJsZSgpeyF0aGlzLmhhc1N0YXJ0ZWRMb2FkaW5nJiZ0aGlzLnNyYyYmKHRoaXMuaGFzU3RhcnRlZExvYWRpbmc9ITAsdGhpcy5sb2FkaW5nPSEwLHRoaXMucmVxdWVzdFVwZGF0ZSgpKX1oYW5kbGVJbWFnZUxvYWQoQyl7bGV0IF89Qy50YXJnZXQ7dGhpcy5pbWFnZVdpZHRoPV8ubmF0dXJhbFdpZHRoLHRoaXMuaW1hZ2VIZWlnaHQ9Xy5uYXR1cmFsSGVpZ2h0LHRoaXMuaW1hZ2VMb2FkZWQ9ITAsdGhpcy5sb2FkaW5nPSExfWhhbmRsZUltYWdlRXJyb3IoKXt0aGlzLmVycm9yPSEwLHRoaXMubG9hZGluZz0hMX1hc3luYyB1cGRhdGVkKEMpe3N1cGVyLnVwZGF0ZWQoQyksQy5oYXMoInNyYyIpJiZ0aGlzLnNyYyYmdGhpcy5pc1Zpc2libGUmJih0aGlzLmhhc1N0YXJ0ZWRMb2FkaW5nPSEwLHRoaXMuaW1hZ2VMb2FkZWQ9ITEsdGhpcy5sb2FkaW5nPSEwKX1zdGF0aWN7dTIoYSx0KX19O3JldHVybiBOPWF9KSgpfSk7dmFyIHU4YT1nKCgpPT57ZDhhKCl9KTt2YXIgcDhhLGg4YT1nKCgpPT57cGUoKTtwOGE9aSgoKT0+d2AKICA8c3R5bGU+CiAgICAuZGVtby1jb250YWluZXIgewogICAgICBwYWRkaW5nOiA0MHB4OwogICAgICBiYWNrZ3JvdW5kOiAjZjVmNWY1OwogICAgfQogICAgLmRlbW8tc2VjdGlvbiB7CiAgICAgIG1hcmdpbi1ib3R0b206IDYwcHg7CiAgICB9CiAgICBoMyB7CiAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIH0KICAgIC50aWxlLXJvdyB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGdhcDogMjRweDsKICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgIH0KICA8L3N0eWxlPgoKICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICA8aDM+QXVkaW8gVGlsZXM8L2gzPgogICAgICA8ZGl2IGNsYXNzPSJ0aWxlLXJvdyI+CiAgICAgICAgPGRlZXMtdGh1bWJuYWlsLWF1ZGlvCiAgICAgICAgICBzcmM9Imh0dHBzOi8vd3d3LnNvdW5kaGVsaXguY29tL2V4YW1wbGVzL21wMy9Tb3VuZEhlbGl4LVNvbmctMS5tcDMiCiAgICAgICAgICB0aXRsZT0iU291bmRIZWxpeCBTb25nIDEiCiAgICAgICAgICBhcnRpc3Q9IlQuIFNjaHVlcmdlciIKICAgICAgICAgIGxhYmVsPSJzb3VuZGhlbGl4LTEubXAzIgogICAgICAgICAgQHRpbGUtY2xpY2s9JHtzPT5jb25zb2xlLmxvZygiQXVkaW8gY2xpY2tlZDoiLHMuZGV0YWlsKX0KICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC1hdWRpbz4KCiAgICAgICAgPGRlZXMtdGh1bWJuYWlsLWF1ZGlvCiAgICAgICAgICBzcmM9Imh0dHBzOi8vd3d3LnNvdW5kaGVsaXguY29tL2V4YW1wbGVzL21wMy9Tb3VuZEhlbGl4LVNvbmctMi5tcDMiCiAgICAgICAgICB0aXRsZT0iU291bmRIZWxpeCBTb25nIDIiCiAgICAgICAgICBhcnRpc3Q9IlQuIFNjaHVlcmdlciIKICAgICAgICAgIGxhYmVsPSJzb3VuZGhlbGl4LTIubXAzIgogICAgICAgID48L2RlZXMtdGh1bWJuYWlsLWF1ZGlvPgoKICAgICAgICA8ZGVlcy10aHVtYm5haWwtYXVkaW8KICAgICAgICAgIHNyYz0iaHR0cHM6Ly93d3cuc291bmRoZWxpeC5jb20vZXhhbXBsZXMvbXAzL1NvdW5kSGVsaXgtU29uZy0zLm1wMyIKICAgICAgICAgIHRpdGxlPSJTb3VuZEhlbGl4IFNvbmcgMyIKICAgICAgICAgIGxhYmVsPSJzb3VuZGhlbGl4LTMubXAzIgogICAgICAgID48L2RlZXMtdGh1bWJuYWlsLWF1ZGlvPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgIDxoMz5TaXplIFZhcmlhbnRzPC9oMz4KICAgICAgPGRpdiBjbGFzcz0idGlsZS1yb3ciPgogICAgICAgIDxkZWVzLXRodW1ibmFpbC1hdWRpbwogICAgICAgICAgc2l6ZT0ic21hbGwiCiAgICAgICAgICBzcmM9Imh0dHBzOi8vd3d3LnNvdW5kaGVsaXguY29tL2V4YW1wbGVzL21wMy9Tb3VuZEhlbGl4LVNvbmctMS5tcDMiCiAgICAgICAgICB0aXRsZT0iU21hbGwiCiAgICAgICAgICBsYWJlbD0ic21hbGwubXAzIgogICAgICAgID48L2RlZXMtdGh1bWJuYWlsLWF1ZGlvPgoKICAgICAgICA8ZGVlcy10aHVtYm5haWwtYXVkaW8KICAgICAgICAgIHNyYz0iaHR0cHM6Ly93d3cuc291bmRoZWxpeC5jb20vZXhhbXBsZXMvbXAzL1NvdW5kSGVsaXgtU29uZy0xLm1wMyIKICAgICAgICAgIHRpdGxlPSJEZWZhdWx0IgogICAgICAgICAgbGFiZWw9ImRlZmF1bHQubXAzIgogICAgICAgID48L2RlZXMtdGh1bWJuYWlsLWF1ZGlvPgoKICAgICAgICA8ZGVlcy10aHVtYm5haWwtYXVkaW8KICAgICAgICAgIHNpemU9ImxhcmdlIgogICAgICAgICAgc3JjPSJodHRwczovL3d3dy5zb3VuZGhlbGl4LmNvbS9leGFtcGxlcy9tcDMvU291bmRIZWxpeC1Tb25nLTEubXAzIgogICAgICAgICAgdGl0bGU9IkxhcmdlIgogICAgICAgICAgbGFiZWw9ImxhcmdlLm1wMyIKICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC1hdWRpbz4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KYCwiZGVtbyIpfSk7dmFyIFFoLGpuLGY4YSxtOGE9ZygoKT0+e3BlKCk7WmgoKTtrdSgpO2g4YSgpO1FoPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxqbj1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sZjhhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy10aHVtYm5haWwtYXVkaW8iKV0sZSx0PVtdLGEscj1IbixuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXSxPLCQ9W10sRT1bXTt2YXIgSD1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1RodW1ibmFpbEF1ZGlvIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGs9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpTdHJpbmd9KV0scD1bTCh7dHlwZTpTdHJpbmd9KV0sYz1bTCh7dHlwZTpTdHJpbmd9KV0seD1bWSgpXSx5PVtZKCldLE49W1koKV0sTz1bWSgpXSxRaCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNyYyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4ic3JjImluIFMsImhhcyIpLGdldDppKFM9PlMuc3JjLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1Muc3JjPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sbyxsKSxRaCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InRpdGxlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJ0aXRsZSJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLnRpdGxlLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MudGl0bGU9SX0sInNldCIpfSxtZXRhZGF0YTprfSxkLHUpLFFoKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYXJ0aXN0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJhcnRpc3QiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5hcnRpc3QsImdldCIpLHNldDppKChTLEkpPT57Uy5hcnRpc3Q9SX0sInNldCIpfSxtZXRhZGF0YTprfSxiLHYpLFFoKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZHVyYXRpb24iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+ImR1cmF0aW9uImluIFMsImhhcyIpLGdldDppKFM9PlMuZHVyYXRpb24sImdldCIpLHNldDppKChTLEkpPT57Uy5kdXJhdGlvbj1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LG0sZiksUWgodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ3YXZlZm9ybURhdGEiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+IndhdmVmb3JtRGF0YSJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLndhdmVmb3JtRGF0YSwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLndhdmVmb3JtRGF0YT1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LE0seiksUWgodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ3YXZlZm9ybVJlYWR5IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJ3YXZlZm9ybVJlYWR5ImluIFMsImhhcyIpLGdldDppKFM9PlMud2F2ZWZvcm1SZWFkeSwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLndhdmVmb3JtUmVhZHk9SX0sInNldCIpfSxtZXRhZGF0YTprfSxDLF8pLFFoKHRoaXMsbnVsbCxPLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNQcmV2aWV3UGxheWluZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4iaXNQcmV2aWV3UGxheWluZyJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLmlzUHJldmlld1BsYXlpbmcsImdldCIpLHNldDppKChTLEkpPT57Uy5pc1ByZXZpZXdQbGF5aW5nPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sJCxFKSxRaChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTprfSxudWxsLHQpLEg9YT1lLnZhbHVlLGsmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6a30pfXN0YXRpYyBkZW1vPXA4YTtzdGF0aWMgZGVtb0dyb3Vwcz1bIk1lZGlhIl07c3RhdGljIHN0eWxlcz1bLi4ucG4sSmAKICAgICAgLmF1ZGlvLWNvbnRlbnQgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBoc2woMjUwIDQwJSA5NiUpLCBoc2woMjgwIDMwJSA5NCUpKSIsImxpbmVhci1ncmFkaWVudCgxMzVkZWcsIGhzbCgyNTAgMzAlIDE2JSksIGhzbCgyODAgMjUlIDE0JSkpIil9OwogICAgICB9CgogICAgICAubXVzaWMtaWNvbiB7CiAgICAgICAgZm9udC1zaXplOiA0OHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDI1MCA2MCUgNjUlKSIsImhzbCgyNTAgNjAlIDcwJSkiKX07CiAgICAgICAgb3BhY2l0eTogMC44OwogICAgICB9CgogICAgICAuYXVkaW8tdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDI1MCAyMCUgMzUlKSIsImhzbCgyNTAgMjAlIDgwJSkiKX07CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CgogICAgICAuYXVkaW8tYXJ0aXN0IHsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyNTAgMTUlIDUwJSkiLCJoc2woMjUwIDE1JSA2NSUpIil9OwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiAwIDE2cHg7CiAgICAgICAgbWFyZ2luLXRvcDogLTEycHg7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgLndhdmVmb3JtLWNvbnRhaW5lciB7CiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDMycHgpOwogICAgICAgIGhlaWdodDogNDBweDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLndhdmVmb3JtLWNvbnRhaW5lciBjYW52YXMgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKCiAgICAgIC5wbGF5LW92ZXJsYXkgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2U7CiAgICAgICAgei1pbmRleDogMTg7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICAgIC50aWxlLWNvbnRhaW5lci5jbGlja2FibGU6aG92ZXIgLnBsYXktb3ZlcmxheSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgLnBsYXktY2lyY2xlIHsKICAgICAgICB3aWR0aDogNDhweDsKICAgICAgICBoZWlnaHQ6IDQ4cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC42KTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDhweCk7CiAgICAgIH0KCiAgICAgIC5wbGF5LWNpcmNsZSBkZWVzLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMjBweDsKICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgIH0KICAgIGBdOyNlPWpuKHRoaXMsbywiIik7Z2V0IHNyYygpe3JldHVybiB0aGlzLiNlfXNldCBzcmMoayl7dGhpcy4jZT1rfSN0PShqbih0aGlzLGwpLGpuKHRoaXMsZCwiIikpO2dldCB0aXRsZSgpe3JldHVybiB0aGlzLiN0fXNldCB0aXRsZShrKXt0aGlzLiN0PWt9I2E9KGpuKHRoaXMsdSksam4odGhpcyxiLCIiKSk7Z2V0IGFydGlzdCgpe3JldHVybiB0aGlzLiNhfXNldCBhcnRpc3Qoayl7dGhpcy4jYT1rfSNzPShqbih0aGlzLHYpLGpuKHRoaXMsbSwwKSk7Z2V0IGR1cmF0aW9uKCl7cmV0dXJuIHRoaXMuI3N9c2V0IGR1cmF0aW9uKGspe3RoaXMuI3M9a30jaT0oam4odGhpcyxmKSxqbih0aGlzLE0sW10pKTtnZXQgd2F2ZWZvcm1EYXRhKCl7cmV0dXJuIHRoaXMuI2l9c2V0IHdhdmVmb3JtRGF0YShrKXt0aGlzLiNpPWt9I3I9KGpuKHRoaXMseiksam4odGhpcyxDLCExKSk7Z2V0IHdhdmVmb3JtUmVhZHkoKXtyZXR1cm4gdGhpcy4jcn1zZXQgd2F2ZWZvcm1SZWFkeShrKXt0aGlzLiNyPWt9I289KGpuKHRoaXMsXyksam4odGhpcywkLCExKSk7Z2V0IGlzUHJldmlld1BsYXlpbmcoKXtyZXR1cm4gdGhpcy4jb31zZXQgaXNQcmV2aWV3UGxheWluZyhrKXt0aGlzLiNvPWt9YXVkaW9FbGVtZW50PShqbih0aGlzLEUpLG51bGwpO3ByZXZpZXdUaW1lb3V0PW51bGw7aGFzTG9hZGVkV2F2ZWZvcm09ITE7cmVuZGVyVGlsZUNvbnRlbnQoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iYXVkaW8tY29udGVudCI+CiAgICAgICAgPGRlZXMtaWNvbiBjbGFzcz0ibXVzaWMtaWNvbiIgaWNvbj0ibHVjaWRlOk11c2ljIj48L2RlZXMtaWNvbj4KCiAgICAgICAgJHt0aGlzLnRpdGxlP3dgPGRpdiBjbGFzcz0iYXVkaW8tdGl0bGUiPiR7dGhpcy50aXRsZX08L2Rpdj5gOiIifQogICAgICAgICR7dGhpcy5hcnRpc3Q/d2A8ZGl2IGNsYXNzPSJhdWRpby1hcnRpc3QiPiR7dGhpcy5hcnRpc3R9PC9kaXY+YDoiIn0KCiAgICAgICAgJHt0aGlzLndhdmVmb3JtUmVhZHk/d2AKICAgICAgICAgIDxkaXYgY2xhc3M9IndhdmVmb3JtLWNvbnRhaW5lciI+CiAgICAgICAgICAgIDxjYW52YXM+PC9jYW52YXM+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgOiIifQogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InBsYXktb3ZlcmxheSI+CiAgICAgICAgPGRpdiBjbGFzcz0icGxheS1jaXJjbGUiPgogICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6UGxheSI+PC9kZWVzLWljb24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgJHt0aGlzLmNsaWNrYWJsZT93YAogICAgICAgIDxkaXYgY2xhc3M9InRpbGUtb3ZlcmxheSI+CiAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpIZWFkcGhvbmVzIj48L2RlZXMtaWNvbj4KICAgICAgICAgIDxzcGFuPlBsYXkgQXVkaW88L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgIGA6IiJ9CiAgICBgfXJlbmRlckJvdHRvbUJhcigpe3JldHVybiF0aGlzLmxhYmVsJiYhdGhpcy5kdXJhdGlvbj8iIjp3YAogICAgICA8ZGl2IGNsYXNzPSJ0aWxlLWluZm8tYmFyIj4KICAgICAgICAke3RoaXMubGFiZWw/d2A8c3BhbiBjbGFzcz0iaW5mby1sYWJlbCIgdGl0bGU9IiR7dGhpcy5sYWJlbH0iPiR7dGhpcy5sYWJlbH08L3NwYW4+YDoiIn0KICAgICAgICA8c3BhbiBjbGFzcz0iaW5mby1zcGFjZXIiPjwvc3Bhbj4KICAgICAgICAke3RoaXMuZHVyYXRpb24+MD93YDxzcGFuIGNsYXNzPSJpbmZvLWRldGFpbCI+JHt0aGlzLmZvcm1hdFRpbWUodGhpcy5kdXJhdGlvbil9PC9zcGFuPmA6IiJ9CiAgICAgIDwvZGl2PgogICAgYH1nZXRUaWxlQ2xpY2tEZXRhaWwoKXtyZXR1cm57c3JjOnRoaXMuc3JjLHRpdGxlOnRoaXMudGl0bGUsYXJ0aXN0OnRoaXMuYXJ0aXN0LGR1cmF0aW9uOnRoaXMuZHVyYXRpb259fW9uQmVjYW1lVmlzaWJsZSgpeyF0aGlzLmhhc0xvYWRlZFdhdmVmb3JtJiZ0aGlzLnNyYyYmKHRoaXMuaGFzTG9hZGVkV2F2ZWZvcm09ITAsdGhpcy5sb2FkQXVkaW9NZXRhKCkpfWFzeW5jIGxvYWRBdWRpb01ldGEoKXt0aGlzLmxvYWRpbmc9ITA7dHJ5e2xldCBrPW5ldyBBdWRpbztrLmNyb3NzT3JpZ2luPSJhbm9ueW1vdXMiLGsucHJlbG9hZD0ibWV0YWRhdGEiLGF3YWl0IG5ldyBQcm9taXNlKChTLEkpPT57ay5hZGRFdmVudExpc3RlbmVyKCJsb2FkZWRtZXRhZGF0YSIsKCk9Pnt0aGlzLmR1cmF0aW9uPWsuZHVyYXRpb24sUygpfSx7b25jZTohMH0pLGsuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCgpPT5JKG5ldyBFcnJvcigiRmFpbGVkIHRvIGxvYWQgYXVkaW8iKSkse29uY2U6ITB9KSxrLnNyYz10aGlzLnNyY30pLGF3YWl0IHRoaXMubG9hZFdhdmVmb3JtKCksdGhpcy5sb2FkaW5nPSExfWNhdGNoe3RoaXMubG9hZGluZz0hMX19YXN5bmMgbG9hZFdhdmVmb3JtKCl7dHJ5e2xldCBTPWF3YWl0KGF3YWl0IGZldGNoKHRoaXMuc3JjKSkuYXJyYXlCdWZmZXIoKSxJPW5ldyBBdWRpb0NvbnRleHQsUj0oYXdhaXQgSS5kZWNvZGVBdWRpb0RhdGEoUykpLmdldENoYW5uZWxEYXRhKDApLEs9ODAsVj1NYXRoLmZsb29yKFIubGVuZ3RoL0spLFc9W107Zm9yKGxldCBCPTA7QjxLO0IrKyl7bGV0IFU9MDtmb3IobGV0IGhlPTA7aGU8VjtoZSsrKVUrPU1hdGguYWJzKFJbQipWK2hlXSk7Vy5wdXNoKFUvVil9bGV0IG1lPU1hdGgubWF4KC4uLlcpO3RoaXMud2F2ZWZvcm1EYXRhPVcubWFwKEI9Pm1lPjA/Qi9tZTowKSx0aGlzLndhdmVmb3JtUmVhZHk9ITAsYXdhaXQgSS5jbG9zZSgpLGF3YWl0IHRoaXMudXBkYXRlQ29tcGxldGUsdGhpcy5kcmF3V2F2ZWZvcm0oKX1jYXRjaHt0aGlzLndhdmVmb3JtUmVhZHk9ITF9fWRyYXdXYXZlZm9ybSgpe2lmKCF0aGlzLndhdmVmb3JtUmVhZHkpcmV0dXJuO2xldCBrPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLndhdmVmb3JtLWNvbnRhaW5lciBjYW52YXMiKTtpZighaylyZXR1cm47bGV0IFM9ay5wYXJlbnRFbGVtZW50LEk9d2luZG93LmRldmljZVBpeGVsUmF0aW98fDEsUD1TLmNsaWVudFdpZHRoLFI9Uy5jbGllbnRIZWlnaHQ7ay53aWR0aD1QKkksay5oZWlnaHQ9UipJO2xldCBLPWsuZ2V0Q29udGV4dCgiMmQiKTtpZighSylyZXR1cm47Sy5zY2FsZShJLEkpLEsuY2xlYXJSZWN0KDAsMCxQLFIpO2xldCBWPXRoaXMud2F2ZWZvcm1EYXRhLmxlbmd0aDtpZihWPT09MClyZXR1cm47bGV0IFc9UC9WLEI9ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoInRoZW1lLWRhcmsiKXx8d2luZG93Lm1hdGNoTWVkaWEoIihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiKS5tYXRjaGVzPyJoc2woMjUwIDUwJSA2MCUpIjoiaHNsKDI1MCA1MCUgNzAlKSI7Sy5maWxsU3R5bGU9Qjtmb3IobGV0IFU9MDtVPFY7VSsrKXtsZXQgaGU9dGhpcy53YXZlZm9ybURhdGFbVV0sRj1NYXRoLm1heCgyLGhlKihSLTQpKSxqPVUqVyx1ZT0oUi1GKS8yO0suZmlsbFJlY3QoaisuNSx1ZSxXLTEsRil9fWFzeW5jIHVwZGF0ZWQoayl7c3VwZXIudXBkYXRlZChrKSxrLmhhcygic3JjIikmJnRoaXMuc3JjJiZ0aGlzLmlzVmlzaWJsZSYmKHRoaXMuaGFzTG9hZGVkV2F2ZWZvcm09ITAsdGhpcy53YXZlZm9ybVJlYWR5PSExLHRoaXMuZHVyYXRpb249MCx0aGlzLmxvYWRBdWRpb01ldGEoKSksay5oYXMoIndhdmVmb3JtUmVhZHkiKSYmdGhpcy53YXZlZm9ybVJlYWR5JiYoYXdhaXQgdGhpcy51cGRhdGVDb21wbGV0ZSx0aGlzLmRyYXdXYXZlZm9ybSgpKX1hc3luYyBkaXNjb25uZWN0ZWRDYWxsYmFjaygpe2F3YWl0IHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5wcmV2aWV3VGltZW91dCYmY2xlYXJUaW1lb3V0KHRoaXMucHJldmlld1RpbWVvdXQpLHRoaXMuYXVkaW9FbGVtZW50JiYodGhpcy5hdWRpb0VsZW1lbnQucGF1c2UoKSx0aGlzLmF1ZGlvRWxlbWVudC5zcmM9IiIsdGhpcy5hdWRpb0VsZW1lbnQ9bnVsbCl9Zm9ybWF0VGltZShrKXtpZighaXNGaW5pdGUoayl8fGs8MClyZXR1cm4iMDowMCI7bGV0IFM9TWF0aC5mbG9vcihrLzYwKSxJPU1hdGguZmxvb3IoayU2MCk7cmV0dXJuYCR7U306JHtJLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfWB9c3RhdGlje2puKGEsdCl9fTtyZXR1cm4gSD1hfSkoKX0pO3ZhciBnOGE9ZygoKT0+e204YSgpfSk7dmFyIGI4YSx2OGE9ZygoKT0+e3BlKCk7YjhhPWkoKCk9PndgCiAgPHN0eWxlPgogICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgcGFkZGluZzogNDBweDsKICAgICAgYmFja2dyb3VuZDogI2Y1ZjVmNTsKICAgIH0KICAgIC5kZW1vLXNlY3Rpb24gewogICAgICBtYXJnaW4tYm90dG9tOiA2MHB4OwogICAgfQogICAgaDMgewogICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICB9CiAgICAudGlsZS1yb3cgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBnYXA6IDI0cHg7CiAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgICB9CiAgPC9zdHlsZT4KCiAgPGRpdiBjbGFzcz0iZGVtby1jb250YWluZXIiPgogICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgPGgzPlZpZGVvIFRpbGVzPC9oMz4KICAgICAgPGRpdiBjbGFzcz0idGlsZS1yb3ciPgogICAgICAgIDxkZWVzLXRodW1ibmFpbC12aWRlbwogICAgICAgICAgc3JjPSJodHRwczovL3d3dy53M3NjaG9vbHMuY29tL2h0bWwvbW92X2JiYi5tcDQiCiAgICAgICAgICBsYWJlbD0iYnVubnkubXA0IgogICAgICAgICAgQHRpbGUtY2xpY2s9JHtzPT5jb25zb2xlLmxvZygiVmlkZW8gY2xpY2tlZDoiLHMuZGV0YWlsKX0KICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC12aWRlbz4KCiAgICAgICAgPGRlZXMtdGh1bWJuYWlsLXZpZGVvCiAgICAgICAgICBzcmM9Imh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vaHRtbC9tb3ZpZS5tcDQiCiAgICAgICAgICBwb3N0ZXI9Imh0dHBzOi8vcGljc3VtLnBob3Rvcy80MDAvMzAwIgogICAgICAgICAgbGFiZWw9Im1vdmllLm1wNCIKICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC12aWRlbz4KCiAgICAgICAgPGRlZXMtdGh1bWJuYWlsLXZpZGVvCiAgICAgICAgICBzcmM9Imh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vaHRtbC9tb3ZfYmJiLm1wNCIKICAgICAgICAgIGxhYmVsPSJhbm90aGVyLXZpZGVvLm1wNCIKICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC12aWRlbz4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICA8aDM+U2l6ZSBWYXJpYW50czwvaDM+CiAgICAgIDxkaXYgY2xhc3M9InRpbGUtcm93Ij4KICAgICAgICA8ZGVlcy10aHVtYm5haWwtdmlkZW8KICAgICAgICAgIHNpemU9InNtYWxsIgogICAgICAgICAgc3JjPSJodHRwczovL3d3dy53M3NjaG9vbHMuY29tL2h0bWwvbW92X2JiYi5tcDQiCiAgICAgICAgICBsYWJlbD0ic21hbGwubXA0IgogICAgICAgID48L2RlZXMtdGh1bWJuYWlsLXZpZGVvPgoKICAgICAgICA8ZGVlcy10aHVtYm5haWwtdmlkZW8KICAgICAgICAgIHNyYz0iaHR0cHM6Ly93d3cudzNzY2hvb2xzLmNvbS9odG1sL21vdl9iYmIubXA0IgogICAgICAgICAgbGFiZWw9ImRlZmF1bHQubXA0IgogICAgICAgID48L2RlZXMtdGh1bWJuYWlsLXZpZGVvPgoKICAgICAgICA8ZGVlcy10aHVtYm5haWwtdmlkZW8KICAgICAgICAgIHNpemU9ImxhcmdlIgogICAgICAgICAgc3JjPSJodHRwczovL3d3dy53M3NjaG9vbHMuY29tL2h0bWwvbW92X2JiYi5tcDQiCiAgICAgICAgICBsYWJlbD0ibGFyZ2UubXA0IgogICAgICAgID48L2RlZXMtdGh1bWJuYWlsLXZpZGVvPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgIDxoMz5XaXRoIFBvc3RlciBJbWFnZTwvaDM+CiAgICAgIDxkZWVzLXRodW1ibmFpbC12aWRlbwogICAgICAgIHNyYz0iaHR0cHM6Ly93d3cudzNzY2hvb2xzLmNvbS9odG1sL21vdmllLm1wNCIKICAgICAgICBwb3N0ZXI9Imh0dHBzOi8vcGljc3VtLnBob3Rvcy82MDAvNDAwIgogICAgICAgIGxhYmVsPSJwb3N0ZXItdmlkZW8ubXA0IgogICAgICA+PC9kZWVzLXRodW1ibmFpbC12aWRlbz4KICAgIDwvZGl2PgogIDwvZGl2PgpgLCJkZW1vIil9KTt2YXIgb3gscDIseDhhLHk4YT1nKCgpPT57cGUoKTtaaCgpO2t1KCk7djhhKCk7b3g9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LHAyPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSx4OGE9KCgpPT57bGV0IHM9W25lKCJkZWVzLXRodW1ibmFpbC12aWRlbyIpXSxlLHQ9W10sYSxyPUhuLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdO3ZhciBOPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzVGh1bWJuYWlsVmlkZW8iKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgQz10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZ30pXSxwPVtMKHt0eXBlOlN0cmluZ30pXSxjPVtZKCldLHg9W1koKV0seT1bWSgpXSxveCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNyYyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4ic3JjImluIF8sImhhcyIpLGdldDppKF89Pl8uc3JjLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uc3JjPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sbyxsKSxveCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InBvc3RlciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4icG9zdGVyImluIF8sImhhcyIpLGdldDppKF89Pl8ucG9zdGVyLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18ucG9zdGVyPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sZCx1KSxveCh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImR1cmF0aW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJkdXJhdGlvbiJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLmR1cmF0aW9uLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uZHVyYXRpb249T30sInNldCIpfSxtZXRhZGF0YTpDfSxiLHYpLG94KHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToidGh1bWJuYWlsQ2FwdHVyZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+InRodW1ibmFpbENhcHR1cmVkImluIF8sImhhcyIpLGdldDppKF89Pl8udGh1bWJuYWlsQ2FwdHVyZWQsImdldCIpLHNldDppKChfLE8pPT57Xy50aHVtYm5haWxDYXB0dXJlZD1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LG0sZiksb3godGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpc0hvdmVyaW5nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJpc0hvdmVyaW5nImluIF8sImhhcyIpLGdldDppKF89Pl8uaXNIb3ZlcmluZywiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLmlzSG92ZXJpbmc9T30sInNldCIpfSxtZXRhZGF0YTpDfSxNLHopLG94KG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOkN9LG51bGwsdCksTj1hPWUudmFsdWUsQyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpDfSl9c3RhdGljIGRlbW89YjhhO3N0YXRpYyBkZW1vR3JvdXBzPVsiTWVkaWEiXTtzdGF0aWMgc3R5bGVzPVsuLi5wbixKYAogICAgICAudmlkZW8td3JhcHBlciB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIGJhY2tncm91bmQ6ICMwMDA7CiAgICAgIH0KCiAgICAgIC52aWRlby13cmFwcGVyIHZpZGVvIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KCiAgICAgIC52aWRlby13cmFwcGVyIGNhbnZhcyB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG9iamVjdC1maXQ6IGNvdmVyOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICAucG9zdGVyLWltYWdlIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KCgogICAgICAucGxheS1vdmVybGF5IHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiA1MCU7CiAgICAgICAgbGVmdDogNTAlOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgICAgIHdpZHRoOiA0OHB4OwogICAgICAgIGhlaWdodDogNDhweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjYpOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICB6LWluZGV4OiAxNTsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZTsKICAgICAgfQoKICAgICAgLnBsYXktb3ZlcmxheSBkZWVzLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMjBweDsKICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgIH0KCiAgICAgIC50aWxlLWNvbnRhaW5lci5jbGlja2FibGU6aG92ZXIgLnBsYXktb3ZlcmxheSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgfQoKICAgICAgLnZpZGVvLWhvdmVyLXByZXZpZXcgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7CiAgICAgICAgei1pbmRleDogNTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlOwogICAgICB9CgogICAgICAudmlkZW8taG92ZXItcHJldmlldy5hY3RpdmUgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KICAgIGBdOyNlPXAyKHRoaXMsbywiIik7Z2V0IHNyYygpe3JldHVybiB0aGlzLiNlfXNldCBzcmMoQyl7dGhpcy4jZT1DfSN0PShwMih0aGlzLGwpLHAyKHRoaXMsZCwiIikpO2dldCBwb3N0ZXIoKXtyZXR1cm4gdGhpcy4jdH1zZXQgcG9zdGVyKEMpe3RoaXMuI3Q9Q30jYT0ocDIodGhpcyx1KSxwMih0aGlzLGIsMCkpO2dldCBkdXJhdGlvbigpe3JldHVybiB0aGlzLiNhfXNldCBkdXJhdGlvbihDKXt0aGlzLiNhPUN9I3M9KHAyKHRoaXMsdikscDIodGhpcyxtLCExKSk7Z2V0IHRodW1ibmFpbENhcHR1cmVkKCl7cmV0dXJuIHRoaXMuI3N9c2V0IHRodW1ibmFpbENhcHR1cmVkKEMpe3RoaXMuI3M9Q30jaT0ocDIodGhpcyxmKSxwMih0aGlzLE0sITEpKTtnZXQgaXNIb3ZlcmluZygpe3JldHVybiB0aGlzLiNpfXNldCBpc0hvdmVyaW5nKEMpe3RoaXMuI2k9Q310aHVtYm5haWxDYW52YXM9KHAyKHRoaXMseiksbnVsbCk7aG92ZXJWaWRlbz1udWxsO2hhc1N0YXJ0ZWRMb2FkaW5nPSExO3JlbmRlclRpbGVDb250ZW50KCl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9InZpZGVvLXdyYXBwZXIiPgogICAgICAgICR7dGhpcy5wb3N0ZXI/d2AKICAgICAgICAgIDxpbWcgY2xhc3M9InBvc3Rlci1pbWFnZSIgc3JjPSIke3RoaXMucG9zdGVyfSIgYWx0PSIiIC8+CiAgICAgICAgYDp0aGlzLnRodW1ibmFpbENhcHR1cmVkP3dgCiAgICAgICAgICA8Y2FudmFzPjwvY2FudmFzPgogICAgICAgIGA6d2AKICAgICAgICAgIDxkaXYgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IGJhY2tncm91bmQ6ICMwMDA7Ij48L2Rpdj4KICAgICAgICBgfQoKICAgICAgICAke3RoaXMuaXNIb3ZlcmluZyYmdGhpcy5zcmM/d2AKICAgICAgICAgIDx2aWRlbwogICAgICAgICAgICBjbGFzcz0idmlkZW8taG92ZXItcHJldmlldyAke3RoaXMuaXNIb3ZlcmluZz8iYWN0aXZlIjoiIn0iCiAgICAgICAgICAgIC5zcmM9JHt0aGlzLnNyY30KICAgICAgICAgICAgbXV0ZWQKICAgICAgICAgICAgcGxheXNpbmxpbmUKICAgICAgICAgICAgQGxvYWRlZGRhdGE9JHt0aGlzLmhhbmRsZUhvdmVyVmlkZW9Mb2FkZWR9CiAgICAgICAgICA+PC92aWRlbz4KICAgICAgICBgOiIifQogICAgICA8L2Rpdj4KCiAgICAgICR7dGhpcy5pc0hvdmVyaW5nPyIiOndgCiAgICAgICAgPGRpdiBjbGFzcz0icGxheS1vdmVybGF5Ij4KICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOlBsYXkiPjwvZGVlcy1pY29uPgogICAgICAgIDwvZGl2PgogICAgICBgfQoKICAgICAgJHt0aGlzLmNsaWNrYWJsZT93YAogICAgICAgIDxkaXYgY2xhc3M9InRpbGUtb3ZlcmxheSI+CiAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpQbGF5Ij48L2RlZXMtaWNvbj4KICAgICAgICAgIDxzcGFuPlBsYXkgVmlkZW88L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgIGA6IiJ9CiAgICBgfXJlbmRlckJvdHRvbUJhcigpe3JldHVybiF0aGlzLmxhYmVsJiYhdGhpcy5kdXJhdGlvbj8iIjp3YAogICAgICA8ZGl2IGNsYXNzPSJ0aWxlLWluZm8tYmFyIj4KICAgICAgICAke3RoaXMubGFiZWw/d2A8c3BhbiBjbGFzcz0iaW5mby1sYWJlbCIgdGl0bGU9IiR7dGhpcy5sYWJlbH0iPiR7dGhpcy5sYWJlbH08L3NwYW4+YDoiIn0KICAgICAgICA8c3BhbiBjbGFzcz0iaW5mby1zcGFjZXIiPjwvc3Bhbj4KICAgICAgICAke3RoaXMuZHVyYXRpb24+MD93YDxzcGFuIGNsYXNzPSJpbmZvLWRldGFpbCI+JHt0aGlzLmZvcm1hdFRpbWUodGhpcy5kdXJhdGlvbil9PC9zcGFuPmA6IiJ9CiAgICAgIDwvZGl2PgogICAgYH1nZXRUaWxlQ2xpY2tEZXRhaWwoKXtyZXR1cm57c3JjOnRoaXMuc3JjLHBvc3Rlcjp0aGlzLnBvc3RlcixkdXJhdGlvbjp0aGlzLmR1cmF0aW9ufX1vbkJlY2FtZVZpc2libGUoKXshdGhpcy5oYXNTdGFydGVkTG9hZGluZyYmdGhpcy5zcmMmJih0aGlzLmhhc1N0YXJ0ZWRMb2FkaW5nPSEwLHRoaXMuY2FwdHVyZUZpcnN0RnJhbWUoKSl9YXN5bmMgY2FwdHVyZUZpcnN0RnJhbWUoKXtpZih0aGlzLnBvc3Rlcil7dGhpcy5sb2FkRHVyYXRpb24oKTtyZXR1cm59dGhpcy5sb2FkaW5nPSEwO3RyeXtsZXQgQz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ2aWRlbyIpO0MuY3Jvc3NPcmlnaW49ImFub255bW91cyIsQy5tdXRlZD0hMCxDLnByZWxvYWQ9Im1ldGFkYXRhIixhd2FpdCBuZXcgUHJvbWlzZSgoXyxPKT0+e0MuYWRkRXZlbnRMaXN0ZW5lcigibG9hZGVkZGF0YSIsKCk9Pnt0aGlzLmR1cmF0aW9uPUMuZHVyYXRpb24sQy5jdXJyZW50VGltZT0uMSxDLmFkZEV2ZW50TGlzdGVuZXIoInNlZWtlZCIsKCk9PntsZXQgJD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTskLndpZHRoPUMudmlkZW9XaWR0aCwkLmhlaWdodD1DLnZpZGVvSGVpZ2h0O2xldCBFPSQuZ2V0Q29udGV4dCgiMmQiKTtFJiYoRS5kcmF3SW1hZ2UoQywwLDApLHRoaXMudGh1bWJuYWlsQ2FudmFzPSQsdGhpcy50aHVtYm5haWxDYXB0dXJlZD0hMCksQy5zcmM9IiIsQy5sb2FkKCksXygpfSx7b25jZTohMH0pfSx7b25jZTohMH0pLEMuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCgpPT5PKG5ldyBFcnJvcigiRmFpbGVkIHRvIGxvYWQgdmlkZW8iKSkse29uY2U6ITB9KSxDLnNyYz10aGlzLnNyY30pLHRoaXMubG9hZGluZz0hMSxhd2FpdCB0aGlzLnVwZGF0ZUNvbXBsZXRlLHRoaXMuY29weVRodW1ibmFpbFRvQ2FudmFzKCl9Y2F0Y2h7dGhpcy5sb2FkaW5nPSExLHRoaXMubG9hZER1cmF0aW9uKCl9fWxvYWREdXJhdGlvbigpe2xldCBDPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInZpZGVvIik7Qy5wcmVsb2FkPSJtZXRhZGF0YSIsQy5hZGRFdmVudExpc3RlbmVyKCJsb2FkZWRtZXRhZGF0YSIsKCk9Pnt0aGlzLmR1cmF0aW9uPUMuZHVyYXRpb24sQy5zcmM9IiIsQy5sb2FkKCl9KSxDLnNyYz10aGlzLnNyY31jb3B5VGh1bWJuYWlsVG9DYW52YXMoKXtpZighdGhpcy50aHVtYm5haWxDYW52YXMpcmV0dXJuO2xldCBDPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLnZpZGVvLXdyYXBwZXIgY2FudmFzIik7aWYoIUMpcmV0dXJuO0Mud2lkdGg9dGhpcy50aHVtYm5haWxDYW52YXMud2lkdGgsQy5oZWlnaHQ9dGhpcy50aHVtYm5haWxDYW52YXMuaGVpZ2h0O2xldCBfPUMuZ2V0Q29udGV4dCgiMmQiKTtfJiZfLmRyYXdJbWFnZSh0aGlzLnRodW1ibmFpbENhbnZhcywwLDApfW9uVGlsZU1vdXNlRW50ZXIoKXt0aGlzLmlzSG92ZXJpbmc9ITB9b25UaWxlTW91c2VMZWF2ZSgpe3RoaXMuaXNIb3ZlcmluZz0hMSx0aGlzLmhvdmVyVmlkZW89bnVsbH1oYW5kbGVIb3ZlclZpZGVvTG9hZGVkKEMpe3RoaXMuaG92ZXJWaWRlbz1DLnRhcmdldCx0aGlzLmhvdmVyVmlkZW8ucGxheSgpLmNhdGNoKCgpPT57fSl9YXN5bmMgdXBkYXRlZChDKXtzdXBlci51cGRhdGVkKEMpLEMuaGFzKCJzcmMiKSYmdGhpcy5zcmMmJnRoaXMuaXNWaXNpYmxlJiYodGhpcy5oYXNTdGFydGVkTG9hZGluZz0hMCx0aGlzLnRodW1ibmFpbENhcHR1cmVkPSExLHRoaXMuZHVyYXRpb249MCx0aGlzLmNhcHR1cmVGaXJzdEZyYW1lKCkpLEMuaGFzKCJ0aHVtYm5haWxDYXB0dXJlZCIpJiZ0aGlzLnRodW1ibmFpbENhcHR1cmVkJiYoYXdhaXQgdGhpcy51cGRhdGVDb21wbGV0ZSx0aGlzLmNvcHlUaHVtYm5haWxUb0NhbnZhcygpKX1hc3luYyBkaXNjb25uZWN0ZWRDYWxsYmFjaygpe2F3YWl0IHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5ob3ZlclZpZGVvJiYodGhpcy5ob3ZlclZpZGVvLnBhdXNlKCksdGhpcy5ob3ZlclZpZGVvLnNyYz0iIix0aGlzLmhvdmVyVmlkZW89bnVsbCksdGhpcy50aHVtYm5haWxDYW52YXM9bnVsbH1mb3JtYXRUaW1lKEMpe2lmKCFpc0Zpbml0ZShDKXx8QzwwKXJldHVybiIwOjAwIjtsZXQgXz1NYXRoLmZsb29yKEMvNjApLE89TWF0aC5mbG9vcihDJTYwKTtyZXR1cm5gJHtffToke08udG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9YH1zdGF0aWN7cDIoYSx0KX19O3JldHVybiBOPWF9KSgpfSk7dmFyIHc4YT1nKCgpPT57eThhKCl9KTt2YXIgazhhLFM4YT1nKCgpPT57cGUoKTtrOGE9aSgoKT0+e2xldCBzPWBpbXBvcnQgeyBodG1sIH0gZnJvbSAnbGl0JzsKCmV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCB7CiAgcHJpdmF0ZSBpdGVtczogc3RyaW5nW10gPSBbXTsKCiAgcmVuZGVyKCkgewogICAgcmV0dXJuIGh0bWxcYAogICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICAgIFwke3RoaXMuaXRlbXMubWFwKGl0ZW0gPT4gaHRtbFxgCiAgICAgICAgICA8c3Bhbj5cJHtpdGVtfTwvc3Bhbj4KICAgICAgICBcYCl9CiAgICAgIDwvZGl2PgogICAgXGA7CiAgfQp9YCxlPWBNZWV0aW5nIE5vdGVzIC0gUTQgUGxhbm5pbmcKRGF0ZTogSmFudWFyeSAxNSwgMjAyNgpBdHRlbmRlZXM6IEFsaWNlLCBCb2IsIENoYXJsaWUKCktleSBEZWNpc2lvbnM6CjEuIExhdW5jaCBuZXcgZmVhdHVyZSBieSBNYXJjaAoyLiBIaXJlIDIgbW9yZSBlbmdpbmVlcnMKMy4gTWlncmF0ZSB0byBuZXcgQ0kvQ0QgcGlwZWxpbmUKNC4gVXBkYXRlIGRlc2lnbiBzeXN0ZW0gdG8gdjMKCkFjdGlvbiBJdGVtczoKLSBBbGljZTogRHJhZnQgUFJEIGJ5IG5leHQgd2VlawotIEJvYjogU2V0IHVwIGludGVydmlldyBwaXBlbGluZQotIENoYXJsaWU6IEV2YWx1YXRlIEplbmtpbnMgdnMgR2l0SHViIEFjdGlvbnNgO3JldHVybiB3YAogICAgPHN0eWxlPgogICAgICAuZGVtby1jb250YWluZXIgewogICAgICAgIHBhZGRpbmc6IDQwcHg7CiAgICAgICAgYmFja2dyb3VuZDogI2Y1ZjVmNTsKICAgICAgfQogICAgICAuZGVtby1zZWN0aW9uIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiA2MHB4OwogICAgICB9CiAgICAgIGgzIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICB9CiAgICAgIC50aWxlLXJvdyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBnYXA6IDI0cHg7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgICA8aDM+Tm90ZSBUaWxlczwvaDM+CiAgICAgICAgPGRpdiBjbGFzcz0idGlsZS1yb3ciPgogICAgICAgICAgPGRlZXMtdGh1bWJuYWlsLW5vdGUKICAgICAgICAgICAgdGl0bGU9ImNvbXBvbmVudC50cyIKICAgICAgICAgICAgLmNvbnRlbnQ9JHtzfQogICAgICAgICAgICBsYW5ndWFnZT0idHlwZXNjcmlwdCIKICAgICAgICAgICAgbGFiZWw9ImNvbXBvbmVudC50cyIKICAgICAgICAgICAgQHRpbGUtY2xpY2s9JHthPT5jb25zb2xlLmxvZygiTm90ZSBjbGlja2VkOiIsYS5kZXRhaWwpfQogICAgICAgICAgPjwvZGVlcy10aHVtYm5haWwtbm90ZT4KCiAgICAgICAgICA8ZGVlcy10aHVtYm5haWwtbm90ZQogICAgICAgICAgICB0aXRsZT0iTWVldGluZyBOb3RlcyIKICAgICAgICAgICAgLmNvbnRlbnQ9JHtlfQogICAgICAgICAgICBsYWJlbD0ibWVldGluZy1ub3Rlcy50eHQiCiAgICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC1ub3RlPgoKICAgICAgICAgIDxkZWVzLXRodW1ibmFpbC1ub3RlCiAgICAgICAgICAgIHRpdGxlPSJwYWNrYWdlLmpzb24iCiAgICAgICAgICAgIC5jb250ZW50PSR7YHsKICAibmFtZSI6ICJAZGVzaWduLmVzdGF0ZS9kZWVzLWNhdGFsb2ciLAogICJ2ZXJzaW9uIjogIjMuMzguMCIsCiAgImRlc2NyaXB0aW9uIjogIkRlc2lnbiBjb21wb25lbnQgY2F0YWxvZyIsCiAgImRlcGVuZGVuY2llcyI6IHsKICAgICJAZGVzaWduLmVzdGF0ZS9kZWVzLWVsZW1lbnQiOiAiXjIuMC4wIiwKICAgICJsaXQiOiAiXjMuMS4wIgogIH0sCiAgInNjcmlwdHMiOiB7CiAgICAiYnVpbGQiOiAidHNidWlsZCIsCiAgICAidGVzdCI6ICJ0c3Rlc3QiCiAgfQp9YH0KICAgICAgICAgICAgbGFuZ3VhZ2U9Impzb24iCiAgICAgICAgICAgIGxhYmVsPSJwYWNrYWdlLmpzb24iCiAgICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC1ub3RlPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgzPlNpemUgVmFyaWFudHM8L2gzPgogICAgICAgIDxkaXYgY2xhc3M9InRpbGUtcm93Ij4KICAgICAgICAgIDxkZWVzLXRodW1ibmFpbC1ub3RlCiAgICAgICAgICAgIHNpemU9InNtYWxsIgogICAgICAgICAgICB0aXRsZT0ic21hbGwudHMiCiAgICAgICAgICAgIC5jb250ZW50PSR7c30KICAgICAgICAgICAgbGFuZ3VhZ2U9InRzIgogICAgICAgICAgICBsYWJlbD0ic21hbGwudHMiCiAgICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC1ub3RlPgoKICAgICAgICAgIDxkZWVzLXRodW1ibmFpbC1ub3RlCiAgICAgICAgICAgIHRpdGxlPSJkZWZhdWx0LnRzIgogICAgICAgICAgICAuY29udGVudD0ke3N9CiAgICAgICAgICAgIGxhbmd1YWdlPSJ0cyIKICAgICAgICAgICAgbGFiZWw9ImRlZmF1bHQudHMiCiAgICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC1ub3RlPgoKICAgICAgICAgIDxkZWVzLXRodW1ibmFpbC1ub3RlCiAgICAgICAgICAgIHNpemU9ImxhcmdlIgogICAgICAgICAgICB0aXRsZT0ibGFyZ2UudHMiCiAgICAgICAgICAgIC5jb250ZW50PSR7c30KICAgICAgICAgICAgbGFuZ3VhZ2U9InRzIgogICAgICAgICAgICBsYWJlbD0ibGFyZ2UudHMiCiAgICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC1ub3RlPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgzPldpdGhvdXQgVGl0bGU8L2gzPgogICAgICAgIDxkZWVzLXRodW1ibmFpbC1ub3RlCiAgICAgICAgICAuY29udGVudD0ke2V9CiAgICAgICAgICBsYWJlbD0idW50aXRsZWQudHh0IgogICAgICAgID48L2RlZXMtdGh1bWJuYWlsLW5vdGU+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgYH0sImRlbW8iKX0pO3ZhciBhUSxTdSxfOGEsTThhPWcoKCk9PntwZSgpO1poKCk7a3UoKTtTOGEoKTthUT1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sU3U9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LF84YT0oKCk9PntsZXQgcz1bbmUoImRlZXMtdGh1bWJuYWlsLW5vdGUiKV0sZSx0PVtdLGEscj1IbixuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXTt2YXIgeT1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1RodW1ibmFpbE5vdGUiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgTT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZ30pXSxwPVtMKHt0eXBlOlN0cmluZ30pXSxjPVtMKHt0eXBlOlN0cmluZ30pXSx4PVtZKCldLGFRKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidGl0bGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoej0+InRpdGxlImluIHosImhhcyIpLGdldDppKHo9PnoudGl0bGUsImdldCIpLHNldDppKCh6LE4pPT57ei50aXRsZT1OfSwic2V0Iil9LG1ldGFkYXRhOk19LG8sbCksYVEodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjb250ZW50IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJjb250ZW50ImluIHosImhhcyIpLGdldDppKHo9PnouY29udGVudCwiZ2V0Iiksc2V0OmkoKHosTik9Pnt6LmNvbnRlbnQ9Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxkLHUpLGFRKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibGFuZ3VhZ2UiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoej0+Imxhbmd1YWdlImluIHosImhhcyIpLGdldDppKHo9PnoubGFuZ3VhZ2UsImdldCIpLHNldDppKCh6LE4pPT57ei5sYW5ndWFnZT1OfSwic2V0Iil9LG1ldGFkYXRhOk19LGIsdiksYVEodGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpc0hvdmVyaW5nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJpc0hvdmVyaW5nImluIHosImhhcyIpLGdldDppKHo9PnouaXNIb3ZlcmluZywiZ2V0Iiksc2V0OmkoKHosTik9Pnt6LmlzSG92ZXJpbmc9Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxtLGYpLGFRKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOk19LG51bGwsdCkseT1hPWUudmFsdWUsTSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpNfSl9c3RhdGljIGRlbW89azhhO3N0YXRpYyBkZW1vR3JvdXBzPVsiTWVkaWEiXTtzdGF0aWMgc3R5bGVzPVsuLi5wbixKYAogICAgICAubm90ZS1jb250ZW50IHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsImhzbCg2MCA1JSA5NiUpIil9OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC5ub3RlLWhlYWRlciB7CiAgICAgICAgcGFkZGluZzogMTJweCAxNHB4IDhweDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQoKICAgICAgLm5vdGUtdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNSAyMCUgMjAlKSIsImhzbCgyMTUgMjAlIDIwJSkiKX07CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM7CiAgICAgIH0KCiAgICAgIC5ub3RlLWJvZHkgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgcGFkZGluZzogMCAxNHB4IDE0cHg7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC5ub3RlLXRleHQgewogICAgICAgIGZvbnQtZmFtaWx5OiB1aS1tb25vc3BhY2UsIFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgbW9ub3NwYWNlOwogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICBsaW5lLWhlaWdodDogMS41OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNSAxMCUgNDAlKSIsImhzbCgyMTUgMTAlIDM1JSkiKX07CiAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgfQoKICAgICAgLm5vdGUtZmFkZSB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGhlaWdodDogNjBweDsKICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoCiAgICAgICAgICB0cmFuc3BhcmVudCwKICAgICAgICAgICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiaHNsKDYwIDUlIDk2JSkiKX0KICAgICAgICApOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICAubm90ZS1saW5lcyB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICB3aWR0aDogMzRweDsKICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDAgNzAlIDg1JSkiLCJoc2woMCA1MCUgODAlKSIpfTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgcGFkZGluZy10b3A6IDEycHg7CiAgICAgIH0KCiAgICAgIC5saW5lLW51bWJlciB7CiAgICAgICAgZm9udC1mYW1pbHk6IHVpLW1vbm9zcGFjZSwgU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCBtb25vc3BhY2U7CiAgICAgICAgZm9udC1zaXplOiA5cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE1cHg7IC8qIG1hdGNoZXMgMTBweCAqIDEuNSBsaW5lLWhlaWdodCAqLwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNSAxMCUgNzUlKSIsImhzbCgyMTUgMTAlIDcwJSkiKX07CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgcGFkZGluZy1yaWdodDogNnB4OwogICAgICB9CgogICAgYF07I2U9U3UodGhpcyxvLCIiKTtnZXQgdGl0bGUoKXtyZXR1cm4gdGhpcy4jZX1zZXQgdGl0bGUoTSl7dGhpcy4jZT1NfSN0PShTdSh0aGlzLGwpLFN1KHRoaXMsZCwiIikpO2dldCBjb250ZW50KCl7cmV0dXJuIHRoaXMuI3R9c2V0IGNvbnRlbnQoTSl7dGhpcy4jdD1NfSNhPShTdSh0aGlzLHUpLFN1KHRoaXMsYiwiIikpO2dldCBsYW5ndWFnZSgpe3JldHVybiB0aGlzLiNhfXNldCBsYW5ndWFnZShNKXt0aGlzLiNhPU19I3M9KFN1KHRoaXMsdiksU3UodGhpcyxtLCExKSk7Z2V0IGlzSG92ZXJpbmcoKXtyZXR1cm4gdGhpcy4jc31zZXQgaXNIb3ZlcmluZyhNKXt0aGlzLiNzPU19bm90ZUJvZHlFbGVtZW50PShTdSh0aGlzLGYpLG51bGwpO3JlbmRlclRpbGVDb250ZW50KCl7bGV0IE09dGhpcy5jb250ZW50LnNwbGl0KGAKYCk7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9Im5vdGUtY29udGVudCI+CiAgICAgICAgJHt0aGlzLnRpdGxlP3dgCiAgICAgICAgICA8ZGl2IGNsYXNzPSJub3RlLWhlYWRlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5vdGUtdGl0bGUiPiR7dGhpcy50aXRsZX08L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIGA6IiJ9CgogICAgICAgIDxkaXYgY2xhc3M9Im5vdGUtYm9keSI+CiAgICAgICAgICA8cHJlIGNsYXNzPSJub3RlLXRleHQiPiR7TS5qb2luKGAKYCl9PC9wcmU+CiAgICAgICAgICAke3RoaXMuaXNIb3ZlcmluZz8iIjp3YDxkaXYgY2xhc3M9Im5vdGUtZmFkZSI+PC9kaXY+YH0KICAgICAgICA8L2Rpdj4KCiAgICAgIDwvZGl2PgoKICAgICAgJHt0aGlzLmNsaWNrYWJsZT93YAogICAgICAgIDxkaXYgY2xhc3M9InRpbGUtb3ZlcmxheSI+CiAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpGaWxlVGV4dCI+PC9kZWVzLWljb24+CiAgICAgICAgICA8c3Bhbj5PcGVuIE5vdGU8L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgIGA6IiJ9CiAgICBgfXJlbmRlckJvdHRvbUJhcigpe2xldCBNPXRoaXMuY29udGVudC5zcGxpdChgCmApO3JldHVybiF0aGlzLmxhYmVsJiYhdGhpcy5sYW5ndWFnZSYmIU0ubGVuZ3RoPyIiOndgCiAgICAgIDxkaXYgY2xhc3M9InRpbGUtaW5mby1iYXIiPgogICAgICAgICR7dGhpcy5sYWJlbD93YDxzcGFuIGNsYXNzPSJpbmZvLWxhYmVsIiB0aXRsZT0iJHt0aGlzLmxhYmVsfSI+JHt0aGlzLmxhYmVsfTwvc3Bhbj5gOiIifQogICAgICAgIDxzcGFuIGNsYXNzPSJpbmZvLXNwYWNlciI+PC9zcGFuPgogICAgICAgICR7dGhpcy5sYW5ndWFnZT93YDxzcGFuIGNsYXNzPSJpbmZvLWRldGFpbCI+JHt0aGlzLmxhbmd1YWdlLnRvVXBwZXJDYXNlKCl9PC9zcGFuPmA6IiJ9CiAgICAgICAgJHt0aGlzLmlzSG92ZXJpbmcmJk0ubGVuZ3RoPjEyP3dgPHNwYW4gY2xhc3M9ImluZm8tZGV0YWlsIj5MaW5lICR7dGhpcy5nZXRWaXNpYmxlTGluZVJhbmdlKE0ubGVuZ3RoKX08L3NwYW4+YDp3YDxzcGFuIGNsYXNzPSJpbmZvLWRldGFpbCI+JHtNLmxlbmd0aH0gbGluZXM8L3NwYW4+YH0KICAgICAgPC9kaXY+CiAgICBgfWdldFRpbGVDbGlja0RldGFpbCgpe3JldHVybnt0aXRsZTp0aGlzLnRpdGxlLGNvbnRlbnQ6dGhpcy5jb250ZW50LGxhbmd1YWdlOnRoaXMubGFuZ3VhZ2V9fW9uVGlsZU1vdXNlRW50ZXIoKXt0aGlzLmlzSG92ZXJpbmc9ITAsdGhpcy5ub3RlQm9keUVsZW1lbnR8fCh0aGlzLm5vdGVCb2R5RWxlbWVudD10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5ub3RlLWJvZHkiKSl9b25UaWxlTW91c2VMZWF2ZSgpe3RoaXMuaXNIb3ZlcmluZz0hMSx0aGlzLm5vdGVCb2R5RWxlbWVudCYmKHRoaXMubm90ZUJvZHlFbGVtZW50LnNjcm9sbFRvcD0wKX1vblRpbGVNb3VzZU1vdmUoTSl7aWYoIXRoaXMuaXNIb3ZlcmluZ3x8IXRoaXMubm90ZUJvZHlFbGVtZW50fHx0aGlzLmNvbnRlbnQuc3BsaXQoYApgKS5sZW5ndGg8PTEyKXJldHVybjtsZXQgTj10aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLEM9TS5jbGllbnRYLU4ubGVmdCxfPU1hdGgubWF4KDAsTWF0aC5taW4oMSxDL04ud2lkdGgpKSxPPXRoaXMubm90ZUJvZHlFbGVtZW50LnNjcm9sbEhlaWdodC10aGlzLm5vdGVCb2R5RWxlbWVudC5jbGllbnRIZWlnaHQ7dGhpcy5ub3RlQm9keUVsZW1lbnQuc2Nyb2xsVG9wPV8qT31nZXRWaXNpYmxlTGluZVJhbmdlKE0pe2lmKCF0aGlzLm5vdGVCb2R5RWxlbWVudClyZXR1cm5gMVx1MjAxMzEyIG9mICR7TX1gO2xldCB6PTE1LE49TWF0aC5mbG9vcih0aGlzLm5vdGVCb2R5RWxlbWVudC5zY3JvbGxUb3AveikrMSxDPU1hdGguZmxvb3IodGhpcy5ub3RlQm9keUVsZW1lbnQuY2xpZW50SGVpZ2h0L3opLF89TWF0aC5taW4oTitDLTEsTSk7cmV0dXJuYCR7Tn1cdTIwMTMke199IG9mICR7TX1gfXN0YXRpY3tTdShhLHQpfX07cmV0dXJuIHk9YX0pKCl9KTt2YXIgejhhPWcoKCk9PntNOGEoKX0pO3ZhciBDOGEsVDhhPWcoKCk9PntwZSgpO0M4YT1pKCgpPT57bGV0IHM9W3t0eXBlOiJpbWFnZSIsbmFtZToic3Vuc2V0LmpwZyIsdGh1bWJuYWlsU3JjOiJodHRwczovL3BpY3N1bS5waG90b3MvMjAwLzIwMD9yYW5kb209MSJ9LHt0eXBlOiJpbWFnZSIsbmFtZToibW91bnRhaW4uanBnIix0aHVtYm5haWxTcmM6Imh0dHBzOi8vcGljc3VtLnBob3Rvcy8yMDAvMjAwP3JhbmRvbT0yIn0se3R5cGU6ImltYWdlIixuYW1lOiJvY2Vhbi5qcGciLHRodW1ibmFpbFNyYzoiaHR0cHM6Ly9waWNzdW0ucGhvdG9zLzIwMC8yMDA/cmFuZG9tPTMifSx7dHlwZToiaW1hZ2UiLG5hbWU6ImZvcmVzdC5qcGciLHRodW1ibmFpbFNyYzoiaHR0cHM6Ly9waWNzdW0ucGhvdG9zLzIwMC8yMDA/cmFuZG9tPTQifSx7dHlwZToiaW1hZ2UiLG5hbWU6ImNpdHkuanBnIix0aHVtYm5haWxTcmM6Imh0dHBzOi8vcGljc3VtLnBob3Rvcy8yMDAvMjAwP3JhbmRvbT01In0se3R5cGU6ImltYWdlIixuYW1lOiJkZXNlcnQuanBnIix0aHVtYm5haWxTcmM6Imh0dHBzOi8vcGljc3VtLnBob3Rvcy8yMDAvMjAwP3JhbmRvbT02In1dO3JldHVybiB3YAogICAgPHN0eWxlPgogICAgICAuZGVtby1jb250YWluZXIgewogICAgICAgIHBhZGRpbmc6IDQwcHg7CiAgICAgICAgYmFja2dyb3VuZDogI2Y1ZjVmNTsKICAgICAgfQogICAgICAuZGVtby1zZWN0aW9uIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiA2MHB4OwogICAgICB9CiAgICAgIGgzIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICB9CiAgICAgIC50aWxlLXJvdyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBnYXA6IDI0cHg7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgICA8aDM+Rm9sZGVyIFRpbGVzPC9oMz4KICAgICAgICA8ZGl2IGNsYXNzPSJ0aWxlLXJvdyI+CiAgICAgICAgICA8ZGVlcy10aHVtYm5haWwtZm9sZGVyCiAgICAgICAgICAgIG5hbWU9IlBob3RvcyIKICAgICAgICAgICAgLml0ZW1zPSR7c30KICAgICAgICAgICAgbGFiZWw9IjYgcGhvdG9zIgogICAgICAgICAgICBAdGlsZS1jbGljaz0ke249PmNvbnNvbGUubG9nKCJGb2xkZXIgY2xpY2tlZDoiLG4uZGV0YWlsKX0KICAgICAgICAgID48L2RlZXMtdGh1bWJuYWlsLWZvbGRlcj4KCiAgICAgICAgICA8ZGVlcy10aHVtYm5haWwtZm9sZGVyCiAgICAgICAgICAgIG5hbWU9Im15LXByb2plY3QiCiAgICAgICAgICAgIC5pdGVtcz0ke1t7dHlwZToibm90ZSIsbmFtZToiUkVBRE1FLm1kIn0se3R5cGU6Im5vdGUiLG5hbWU6InBhY2thZ2UuanNvbiJ9LHt0eXBlOiJmb2xkZXIiLG5hbWU6InNyYyJ9LHt0eXBlOiJmb2xkZXIiLG5hbWU6InRlc3QifSx7dHlwZToibm90ZSIsbmFtZToidHNjb25maWcuanNvbiJ9LHt0eXBlOiJwZGYiLG5hbWU6ImRvY3MucGRmIn0se3R5cGU6ImltYWdlIixuYW1lOiJsb2dvLnBuZyIsdGh1bWJuYWlsU3JjOiJodHRwczovL3BpY3N1bS5waG90b3MvMTAwLzEwMD9yYW5kb209MTAifV19CiAgICAgICAgICAgIGxhYmVsPSJQcm9qZWN0IGZpbGVzIgogICAgICAgICAgPjwvZGVlcy10aHVtYm5haWwtZm9sZGVyPgoKICAgICAgICAgIDxkZWVzLXRodW1ibmFpbC1mb2xkZXIKICAgICAgICAgICAgbmFtZT0iTWVkaWEgQXNzZXRzIgogICAgICAgICAgICAuaXRlbXM9JHtbe3R5cGU6InZpZGVvIixuYW1lOiJpbnRyby5tcDQifSx7dHlwZToiYXVkaW8iLG5hbWU6ImJhY2tncm91bmQubXAzIn0se3R5cGU6ImltYWdlIixuYW1lOiJ0aHVtYm5haWwuanBnIix0aHVtYm5haWxTcmM6Imh0dHBzOi8vcGljc3VtLnBob3Rvcy8yMDAvMjAwP3JhbmRvbT0yMCJ9LHt0eXBlOiJwZGYiLG5hbWU6InN0b3J5Ym9hcmQucGRmIn1dfQogICAgICAgICAgICBsYWJlbD0iTWl4ZWQgbWVkaWEiCiAgICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC1mb2xkZXI+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgICA8aDM+RWRnZSBDYXNlczwvaDM+CiAgICAgICAgPGRpdiBjbGFzcz0idGlsZS1yb3ciPgogICAgICAgICAgPGRlZXMtdGh1bWJuYWlsLWZvbGRlcgogICAgICAgICAgICBuYW1lPSJFbXB0eSBGb2xkZXIiCiAgICAgICAgICAgIC5pdGVtcz0ke1tdfQogICAgICAgICAgPjwvZGVlcy10aHVtYm5haWwtZm9sZGVyPgoKICAgICAgICAgIDxkZWVzLXRodW1ibmFpbC1mb2xkZXIKICAgICAgICAgICAgbmFtZT0iU2luZ2xlIEl0ZW0iCiAgICAgICAgICAgIC5pdGVtcz0ke1t7dHlwZToicGRmIixuYW1lOiJyZXBvcnQucGRmIn1dfQogICAgICAgICAgPjwvZGVlcy10aHVtYm5haWwtZm9sZGVyPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgzPlNpemUgVmFyaWFudHM8L2gzPgogICAgICAgIDxkaXYgY2xhc3M9InRpbGUtcm93Ij4KICAgICAgICAgIDxkZWVzLXRodW1ibmFpbC1mb2xkZXIKICAgICAgICAgICAgc2l6ZT0ic21hbGwiCiAgICAgICAgICAgIG5hbWU9IlNtYWxsIgogICAgICAgICAgICAuaXRlbXM9JHtzfQogICAgICAgICAgPjwvZGVlcy10aHVtYm5haWwtZm9sZGVyPgoKICAgICAgICAgIDxkZWVzLXRodW1ibmFpbC1mb2xkZXIKICAgICAgICAgICAgbmFtZT0iRGVmYXVsdCIKICAgICAgICAgICAgLml0ZW1zPSR7c30KICAgICAgICAgID48L2RlZXMtdGh1bWJuYWlsLWZvbGRlcj4KCiAgICAgICAgICA8ZGVlcy10aHVtYm5haWwtZm9sZGVyCiAgICAgICAgICAgIHNpemU9ImxhcmdlIgogICAgICAgICAgICBuYW1lPSJMYXJnZSIKICAgICAgICAgICAgLml0ZW1zPSR7c30KICAgICAgICAgID48L2RlZXMtdGh1bWJuYWlsLWZvbGRlcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICBgfSwiZGVtbyIpfSk7dmFyIG5ydCxzUSwkOGEsRDhhLEw4YT1nKCgpPT57cGUoKTtaaCgpO2t1KCk7VDhhKCk7bnJ0PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxzUT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sJDhhPXtwZGY6Imx1Y2lkZTpGaWxlVGV4dCIsaW1hZ2U6Imx1Y2lkZTpJbWFnZSIsYXVkaW86Imx1Y2lkZTpNdXNpYyIsdmlkZW86Imx1Y2lkZTpWaWRlbyIsbm90ZToibHVjaWRlOkZpbGVDb2RlIixmb2xkZXI6Imx1Y2lkZTpGb2xkZXIiLHVua25vd246Imx1Y2lkZTpGaWxlIn0sRDhhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy10aHVtYm5haWwtZm9sZGVyIildLGUsdD1bXSxhLHI9SG4sbixvPVtdLGw9W10scCxkPVtdLHU9W107dmFyIGM9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNUaHVtYm5haWxGb2xkZXIiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgYj10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZ30pXSxwPVtMKHthdHRyaWJ1dGU6ITF9KV0sbnJ0KHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibmFtZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh2PT4ibmFtZSJpbiB2LCJoYXMiKSxnZXQ6aSh2PT52Lm5hbWUsImdldCIpLHNldDppKCh2LHgpPT57di5uYW1lPXh9LCJzZXQiKX0sbWV0YWRhdGE6Yn0sbyxsKSxucnQodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpdGVtcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh2PT4iaXRlbXMiaW4gdiwiaGFzIiksZ2V0Omkodj0+di5pdGVtcywiZ2V0Iiksc2V0OmkoKHYseCk9Pnt2Lml0ZW1zPXh9LCJzZXQiKX0sbWV0YWRhdGE6Yn0sZCx1KSxucnQobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6Yn0sbnVsbCx0KSxjPWE9ZS52YWx1ZSxiJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KX1zdGF0aWMgZGVtbz1DOGE7c3RhdGljIGRlbW9Hcm91cHM9WyJNZWRpYSJdO3N0YXRpYyBzdHlsZXM9Wy4uLnBuLEpgCiAgICAgIC5mb2xkZXItY29udGVudCB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCg0MCAzMCUgOTclKSIsImhzbCgyMTUgMjAlIDE0JSkiKX07CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLmZvbGRlci1oZWFkZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBwYWRkaW5nOiAxMnB4IDE0cHggOHB4OwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAuZm9sZGVyLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCg0MCA4MCUgNTAlKSIsImhzbCg0MCA3MCUgNjAlKSIpfTsKICAgICAgfQoKICAgICAgLmZvbGRlci1uYW1lIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUgMjAlIDIwJSkiLCJoc2woMjE1IDE2JSA4MCUpIil9OwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICBmbGV4OiAxOwogICAgICB9CgogICAgICAucHJldmlldy1ncmlkIHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOwogICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogMWZyIDFmcjsKICAgICAgICBnYXA6IDRweDsKICAgICAgICBwYWRkaW5nOiAwIDE0cHggMTRweDsKICAgICAgICBtaW4taGVpZ2h0OiAwOwogICAgICB9CgogICAgICAuZ3JpZC1jZWxsIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTUgMjAlIDk0JSkiLCJoc2woMjE1IDIwJSAxOCUpIil9OwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgLmdyaWQtY2VsbCBpbWcgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgLmdyaWQtY2VsbCBkZWVzLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMjBweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUgMTYlIDYwJSkiLCJoc2woMjE1IDE2JSA1NSUpIil9OwogICAgICB9CgogICAgICAuZ3JpZC1jZWxsLWVtcHR5IHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxNSAxNSUgOTYlKSIsImhzbCgyMTUgMjAlIDE2JSkiKX07CiAgICAgIH0KCiAgICBgXTsjZT1zUSh0aGlzLG8sIiIpO2dldCBuYW1lKCl7cmV0dXJuIHRoaXMuI2V9c2V0IG5hbWUoYil7dGhpcy4jZT1ifSN0PShzUSh0aGlzLGwpLHNRKHRoaXMsZCxbXSkpO2dldCBpdGVtcygpe3JldHVybiB0aGlzLiN0fXNldCBpdGVtcyhiKXt0aGlzLiN0PWJ9cmVuZGVyVGlsZUNvbnRlbnQoKXtsZXQgYj10aGlzLml0ZW1zLnNsaWNlKDAsNCksdj00LWIubGVuZ3RoO3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJmb2xkZXItY29udGVudCI+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9sZGVyLWhlYWRlciI+CiAgICAgICAgICA8ZGVlcy1pY29uIGNsYXNzPSJmb2xkZXItaWNvbiIgaWNvbj0ibHVjaWRlOkZvbGRlciI+PC9kZWVzLWljb24+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xkZXItbmFtZSI+JHt0aGlzLm5hbWV8fCJVbnRpdGxlZCBGb2xkZXIifTwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJwcmV2aWV3LWdyaWQiPgogICAgICAgICAgJHtiLm1hcCh4PT53YAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJncmlkLWNlbGwiPgogICAgICAgICAgICAgICR7eC50aHVtYm5haWxTcmM/d2AKICAgICAgICAgICAgICAgIDxpbWcgc3JjPSIke3gudGh1bWJuYWlsU3JjfSIgYWx0PSIke3gubmFtZX0iIC8+CiAgICAgICAgICAgICAgYDp3YAogICAgICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSIkeyQ4YVt4LnR5cGVdfHwkOGEudW5rbm93bn0iPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgIGB9CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYCl9CiAgICAgICAgICAke0FycmF5LmZyb20oe2xlbmd0aDp2fSkubWFwKCgpPT53YAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJncmlkLWNlbGwgZ3JpZC1jZWxsLWVtcHR5Ij48L2Rpdj4KICAgICAgICAgIGApfQogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgICR7dGhpcy5jbGlja2FibGU/d2AKICAgICAgICA8ZGl2IGNsYXNzPSJ0aWxlLW92ZXJsYXkiPgogICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6Rm9sZGVyT3BlbiI+PC9kZWVzLWljb24+CiAgICAgICAgICA8c3Bhbj5PcGVuIEZvbGRlcjwvc3Bhbj4KICAgICAgICA8L2Rpdj4KICAgICAgYDoiIn0KICAgIGB9cmVuZGVyQm90dG9tQmFyKCl7cmV0dXJuIXRoaXMubGFiZWwmJiF0aGlzLml0ZW1zLmxlbmd0aD8iIjp3YAogICAgICA8ZGl2IGNsYXNzPSJ0aWxlLWluZm8tYmFyIj4KICAgICAgICAke3RoaXMubGFiZWw/d2A8c3BhbiBjbGFzcz0iaW5mby1sYWJlbCIgdGl0bGU9IiR7dGhpcy5sYWJlbH0iPiR7dGhpcy5sYWJlbH08L3NwYW4+YDoiIn0KICAgICAgICA8c3BhbiBjbGFzcz0iaW5mby1zcGFjZXIiPjwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iaW5mby1kZXRhaWwiPiR7dGhpcy5pdGVtcy5sZW5ndGh9IGl0ZW0ke3RoaXMuaXRlbXMubGVuZ3RoIT09MT8icyI6IiJ9PC9zcGFuPgogICAgICA8L2Rpdj4KICAgIGB9Z2V0VGlsZUNsaWNrRGV0YWlsKCl7cmV0dXJue25hbWU6dGhpcy5uYW1lLGl0ZW1Db3VudDp0aGlzLml0ZW1zLmxlbmd0aCxpdGVtczp0aGlzLml0ZW1zfX1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksc1EodGhpcyx1KX1zdGF0aWN7c1EoYSx0KX19O3JldHVybiBjPWF9KSgpfSk7dmFyIEU4YT1nKCgpPT57TDhhKCl9KTt2YXIgUDhhPWcoKCk9PntMNWEoKTtBNWEoKTtGNWEoKTtaNWEoKTtYNWEoKTtRNWEoKTtKNWEoKTtvOGEoKTt1OGEoKTtnOGEoKTt3OGEoKTt6OGEoKTtFOGEoKX0pO3ZhciBJOGE9ZygoKT0+e29yKCl9KTt2YXIgQThhPWcoKCk9PntKMCgpfSk7dmFyIE44YSxSOGE9ZygoKT0+e3BlKCk7TjhhPWkoKCk9PndgCiAgICA8c3R5bGU+CiAgICAgIC5yZWYxIHsKICAgICAgICBtYXJnaW46IDIwcHg7CiAgICAgICAgd2lkdGg6IDEwcHg7CiAgICAgICAgaGVpZ2h0OiAxMHB4OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxkaXYgY2xhc3M9InJlZjEiPjwvZGl2PgogICAgPGRlZXMtc3BlZWNoYnViYmxlIC50ZXh0PSR7YAogICAgICAqKlRoaXMgaXMgYSBsb25nZXIgbWFya2Rvd24gdGV4dCB0aGF0ICBjYW4gYmUgdXNlZCB0aGUgd3JpdGUqKiAgCiAgICAgIGEgbG9uZ2VyIGRlc2NyaXB0aW9uIGFib3V0IHdoYXRzIGdvaW5nIG9uIHRoZSBhcHAgIAogIAogICAgICAqKlRoaXMgaXMgYSBzdWJoZWFkZXIqKgogICAgICBhbmQgYW5vdGhlciB0ZXh0CiAgICAKICAgIGB9PjwvZGVlcy1zcGVlY2hidWJibGU+CiAgYCwiZGVtb0Z1bmMiKX0pO3ZhciBueCxoMixPOGEsRjhhPWcoKCk9PntHMSgpO3BvKCk7UjhhKCk7cGUoKTtGMSgpO3B0KCk7bng9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LGgyPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxPOGE9KCgpPT57bGV0IHM9W25lKCJkZWVzLXNwZWVjaGJ1YmJsZSIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdO3ZhciBOPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzU3BlZWNoYnViYmxlIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IEM9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpPYmplY3R9KV0scD1bTCh7dHlwZTpTdHJpbmcscmVmbGVjdDohMH0pXSxjPVtMKHt0eXBlOkJvb2xlYW59KV0seD1bTCh7dHlwZTpCb29sZWFufSldLHk9W0woe3R5cGU6U3RyaW5nfSldLG54KHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicmVmZmVkRWxlbWVudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4icmVmZmVkRWxlbWVudCJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLnJlZmZlZEVsZW1lbnQsImdldCIpLHNldDppKChfLE8pPT57Xy5yZWZmZWRFbGVtZW50PU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sbyxsKSxueCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InRleHQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+InRleHQiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy50ZXh0LCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18udGV4dD1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LGQsdSksbngodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ3YXZlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJ3YXZlImluIF8sImhhcyIpLGdldDppKF89Pl8ud2F2ZSwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLndhdmU9T30sInNldCIpfSxtZXRhZGF0YTpDfSxiLHYpLG54KHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWFuaWZlc3RlZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4ibWFuaWZlc3RlZCJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLm1hbmlmZXN0ZWQsImdldCIpLHNldDppKChfLE8pPT57Xy5tYW5pZmVzdGVkPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sbSxmKSxueCh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InN0YXR1cyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4ic3RhdHVzImluIF8sImhhcyIpLGdldDppKF89Pl8uc3RhdHVzLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uc3RhdHVzPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sTSx6KSxueChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpDfSxudWxsLHQpLE49YT1lLnZhbHVlLEMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Q30pfXN0YXRpYyBkZW1vPU44YTtzdGF0aWMgZGVtb0dyb3Vwcz1bIk92ZXJsYXkiXTtzdGF0aWMgYXN5bmMgY3JlYXRlQW5kU2hvdyhDLF8pe2xldCBPPWF3YWl0IGhvLmNyZWF0ZUFuZFNob3coe2JsdXI6ITF9KSwkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRlZXMtc3BlZWNoYnViYmxlIik7cmV0dXJuICQud2luZG93TGF5ZXI9TywkLnJlZmZlZEVsZW1lbnQ9QywkLnRleHQ9XywkLm1hbmlmZXN0ZWQ9ITAsTy5hcHBlbmRDaGlsZCgkKSxPLnN0eWxlLnBvaW50ZXJFdmVudHM9Im5vbmUiLE8uc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIud2luZG93T3ZlcmxheSIpLnN0eWxlLnBvaW50ZXJFdmVudHM9Im5vbmUiLCR9I2U9aDIodGhpcyxvLHZvaWQgMCk7Z2V0IHJlZmZlZEVsZW1lbnQoKXtyZXR1cm4gdGhpcy4jZX1zZXQgcmVmZmVkRWxlbWVudChDKXt0aGlzLiNlPUN9I3Q9KGgyKHRoaXMsbCksaDIodGhpcyxkLHZvaWQgMCkpO2dldCB0ZXh0KCl7cmV0dXJuIHRoaXMuI3R9c2V0IHRleHQoQyl7dGhpcy4jdD1DfSNhPShoMih0aGlzLHUpLGgyKHRoaXMsYiwhMSkpO2dldCB3YXZlKCl7cmV0dXJuIHRoaXMuI2F9c2V0IHdhdmUoQyl7dGhpcy4jYT1DfSNzPShoMih0aGlzLHYpLGgyKHRoaXMsbSwhMSkpO2dldCBtYW5pZmVzdGVkKCl7cmV0dXJuIHRoaXMuI3N9c2V0IG1hbmlmZXN0ZWQoQyl7dGhpcy4jcz1DfSNpPShoMih0aGlzLGYpLGgyKHRoaXMsTSwibm9ybWFsIikpO2dldCBzdGF0dXMoKXtyZXR1cm4gdGhpcy4jaX1zZXQgc3RhdHVzKEMpe3RoaXMuI2k9Q313aW5kb3dMYXllcj1oMih0aGlzLHopO2NvbnN0cnVjdG9yKCl7c3VwZXIoKX1zdGF0aWMgc3R5bGVzPVtIZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgLyogVE9ETzogTWlncmF0ZSBoYXJkY29kZWQgdmFsdWVzIHRvIC0tZGVlcy0qIENTUyB2YXJpYWJsZXMgKi8KICAgICAgOmhvc3QgewogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMzMzIiwiI2ZmZiIpfTsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgfQoKICAgICAgLm1haW5jb250YWluZXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwcHgpOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzOwogICAgICAgIG1hcmdpbi1sZWZ0OiAwcHg7CiAgICAgICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMikpOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7CiAgICAgIH0KCiAgICAgIC5hcnJvdyB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZiIsIiMzMzMiKX07CiAgICAgICAgaGVpZ2h0OiAxNXB4OwogICAgICAgIHdpZHRoOiAxNXB4OwogICAgICAgIGxlZnQ6IDJweDsKICAgICAgICB0b3A6IDEycHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICB9CgogICAgICAuc3BlZWNoYnViYmxlIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZiIsIiMzMzMiKX07CiAgICAgICAgcGFkZGluZzogMHB4IDE2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBtaW4td2lkdGg6IDI0MHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICB0b3A6IDBweDsKICAgICAgICBsZWZ0OiA4cHg7CiAgICAgIH0KCiAgICAgIC53YXZlIHsKICAgICAgICBhbmltYXRpb24tbmFtZTogd2F2ZS1hbmltYXRpb247IC8qIFJlZmVycyB0byB0aGUgbmFtZSBvZiB5b3VyIEBrZXlmcmFtZXMgZWxlbWVudCBiZWxvdyAqLwogICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMi41czsgLyogQ2hhbmdlIHRvIHNwZWVkIHVwIG9yIHNsb3cgZG93biAqLwogICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlOyAvKiBOZXZlciBzdG9wIHdhdmluZyA6KSAqLwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IDcwJSA3MCU7IC8qIFBpdm90IGFyb3VuZCB0aGUgYm90dG9tLWxlZnQgcGFsbSAqLwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQoKICAgICAgQGtleWZyYW1lcyB3YXZlLWFuaW1hdGlvbiB7CiAgICAgICAgMCUgewogICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgICAgICAgfQogICAgICAgIDEwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxNGRlZyk7CiAgICAgICAgfSAvKiBUaGUgZm9sbG93aW5nIGZpdmUgdmFsdWVzIGNhbiBiZSBwbGF5ZWQgd2l0aCB0byBtYWtlIHRoZSB3YXZpbmcgbW9yZSBvciBsZXNzIGV4dHJlbWUgKi8KICAgICAgICAyMCUgewogICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLThkZWcpOwogICAgICAgIH0KICAgICAgICAzMCUgewogICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTRkZWcpOwogICAgICAgIH0KICAgICAgICA0MCUgewogICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTRkZWcpOwogICAgICAgIH0KICAgICAgICA1MCUgewogICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTBkZWcpOwogICAgICAgIH0KICAgICAgICA2MCUgewogICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgICAgICAgfSAvKiBSZXNldCBmb3IgdGhlIGxhc3QgaGFsZiB0byBwYXVzZSAqLwogICAgICAgIDEwMCUgewogICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgICAgICAgfQogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgJHt0aGlzLm1hbmlmZXN0ZWQ/d2AKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWFpbmNvbnRhaW5lciIgQGNsaWNrPSR7dGhpcy5oYW5kbGVDbGlja30+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXJyb3ciPjwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwZWVjaGJ1YmJsZSI+CiAgICAgICAgICAgICAgICAke3RoaXMud2F2ZT93YDxzcGFuIGNsYXNzPSJ3YXZlIj7wn5GLPC9zcGFuPmA6d2BgfQogICAgICAgICAgICAgICAgJHtWaS5yZXNvbHZlKHRoaXMuZ2V0SHRtbCgpKX0KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgOndgYH0KICAgIGB9YXN5bmMgaGFuZGxlQ2xpY2soKXtjb25zb2xlLmxvZygic3BlZWNoYnViYmxlIGdvdCBjbGlja2VkLiIpfWFzeW5jIGZpcnN0VXBkYXRlZCgpe2lmKHRoaXMucmVmZmVkRWxlbWVudHx8KHRoaXMucmVmZmVkRWxlbWVudD10aGlzLnByZXZpb3VzRWxlbWVudFNpYmxpbmcpLHRoaXMubWFuaWZlc3RlZClhd2FpdCB0aGlzLnVwZGF0ZVBvc2l0aW9uKCksdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5tYWluY29udGFpbmVyIikuc3R5bGUub3BhY2l0eT0iMSI7ZWxzZXtsZXQgQzt0aGlzLnJlZmZlZEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VlbnRlciIsYXN5bmMoKT0+e0M9YXdhaXQgTi5jcmVhdGVBbmRTaG93KHRoaXMucmVmZmVkRWxlbWVudCx0aGlzLnRleHQpfSksdGhpcy5yZWZmZWRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLCgpPT57Qy5kZXN0cm95KCl9KX19YXN5bmMgdXBkYXRlUG9zaXRpb24oKXtsZXQgQz10aGlzLnJlZmZlZEVsZW1lbnQsXz1DLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMuc3R5bGUucG9zaXRpb249ImZpeGVkIix0aGlzLnN0eWxlLnRvcD1gJHtfLnRvcC0xM31weGAsdGhpcy5zdHlsZS5sZWZ0PWAke18ubGVmdCtDLmNsaWVudFdpZHRoKzR9cHhgLF8ucmlnaHQ+MjUwJiYodGhpcy5zdHlsZS53aWR0aD0iMjUwcHgiKX1hc3luYyBnZXRIdG1sKCl7aWYoIXRoaXMudGV4dClyZXR1cm4iIjtsZXQgQz1sdC5wbHVnaW5zLnNtYXJ0c3RyaW5nLm5vcm1hbGl6ZS5zdGFuZGFyZCh0aGlzLnRleHQpLF89YXdhaXQgbHQucGx1Z2lucy5zbWFydG1hcmtkb3duLlNtYXJ0TWFya2Rvd24uZWFzeU1hcmtkb3duVG9IdG1sKEMpO3JldHVybiBWMyhfKX1hc3luYyBzaG93KCl7fWFzeW5jIGRlc3Ryb3koKXt0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLm1haW5jb250YWluZXIiKS5zdHlsZS5vcGFjaXR5PSIwIix0aGlzLndpbmRvd0xheWVyLmRlc3Ryb3koKX1zdGF0aWN7aDIoYSx0KX19O3JldHVybiBOPWF9KSgpfSk7dmFyIEI4YT1nKCgpPT57RjhhKCl9KTt2YXIgSDhhPWcoKCk9PntGMSgpfSk7dmFyIHE4YT1nKCgpPT57SThhKCk7QThhKCk7QjhhKCk7SDhhKCl9KTt2YXIgajhhPWcoKCk9Pnt9KTt2YXIgVjhhPWcoKCk9PntqOGEoKX0pO3ZhciBVOGEsbzFlLG4xZSxscnQsVzhhLGwxZSxjMWUsZDFlLHUxZT1nKCgpPT57VThhPSJodHRwczovL3N0YWNrYmxpdHouY29tIixvMWU9ImNvZGUiLG4xZT0iZXJyb3IiLGxydD0iZXJyb3JfZGVzY3JpcHRpb24iLFc4YT0iX193Y19hcGlfYmNfXyIsbDFlPSJfX3djX2FwaV90b2tlbnNfXyIsYzFlPSJfX3djX2FwaV92ZXJpZmllcl9fIixkMWU9Il9fd2NfYXBpX3BvcHVwX18ifSk7dmFyIFNnLGNydD1nKCgpPT57U2c9Y2xhc3N7c3RhdGlje2kodGhpcywiVHlwZWRFdmVudFRhcmdldCIpfV9idXM9bmV3IEV2ZW50VGFyZ2V0O2xpc3RlbihlKXtmdW5jdGlvbiB0KGEpe2UoYS5kYXRhKX1yZXR1cm4gaSh0LCJ3cmFwcGVkTGlzdGVuZXIiKSx0aGlzLl9idXMuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdCksKCk9PnRoaXMuX2J1cy5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIix0KX1maXJlRXZlbnQoZSl7dGhpcy5fYnVzLmRpc3BhdGNoRXZlbnQobmV3IE1lc3NhZ2VFdmVudCgibWVzc2FnZSIse2RhdGE6ZX0pKX19fSk7ZnVuY3Rpb24gcDFlKCl7bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0obDFlKX1mdW5jdGlvbiBYOGEocyl7cmV0dXJuIEs4YS5saXN0ZW4ocyl9ZnVuY3Rpb24gUVhhKCl7bGV0IHM9bG9jYWxTdG9yYWdlLmdldEl0ZW0obDFlKTtpZighcylyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIEpTT04ucGFyc2Uocyl9Y2F0Y2h7cmV0dXJuIG51bGx9fWZ1bmN0aW9uIEpYYShzKXtsb2NhbFN0b3JhZ2Uuc2V0SXRlbShsMWUsSlNPTi5zdHJpbmdpZnkocykpfWZ1bmN0aW9uIFk4YSh7Y3JlYXRlZF9hdDpzLGV4cGlyZXNfaW46ZX0pe3JldHVybihzK2UpKjFlM31mdW5jdGlvbiBaOGEocyl7aWYodHlwZW9mIHMhPSJvYmplY3QifHwhcyl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgVG9rZW4gUmVzcG9uc2UiKTtpZih0eXBlb2Ygcy5hY2Nlc3NfdG9rZW4hPSJzdHJpbmcifHx0eXBlb2Ygcy5yZWZyZXNoX3Rva2VuIT0ic3RyaW5nInx8dHlwZW9mIHMuY3JlYXRlZF9hdCE9Im51bWJlciJ8fHR5cGVvZiBzLmV4cGlyZXNfaW4hPSJudW1iZXIiKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBUb2tlbiBSZXNwb25zZSIpfWZ1bmN0aW9uIGVRYShzKXtyZXR1cm4gbmV3IFByb21pc2UoZT0+c2V0VGltZW91dChlLHMpKX1mdW5jdGlvbiB0UWEocyl7SzhhLmZpcmVFdmVudChzKX12YXIgRzhhLEs4YSxseCxkcnQ9ZygoKT0+e3UxZSgpO2NydCgpO0c4YT1uZXcgRXJyb3I7RzhhLnN0YWNrPSIiO0s4YT1uZXcgU2csbHg9Y2xhc3Mgc3tzdGF0aWN7aSh0aGlzLCJUb2tlbnMiKX1vcmlnaW47cmVmcmVzaDthY2Nlc3M7ZXhwaXJlcztfcmV2b2tlZD1uZXcgQWJvcnRDb250cm9sbGVyO2NvbnN0cnVjdG9yKGUsdCxhLHIpe3RoaXMub3JpZ2luPWUsdGhpcy5yZWZyZXNoPXQsdGhpcy5hY2Nlc3M9YSx0aGlzLmV4cGlyZXM9cn1hc3luYyBhY3RpdmF0ZShlKXtpZih0aGlzLl9yZXZva2VkLnNpZ25hbC5hYm9ydGVkKXRocm93IG5ldyBFcnJvcigiVG9rZW4gcmV2b2tlZCIpO3JldHVybiB0aGlzLmV4cGlyZXM8RGF0ZS5ub3coKSYmIWF3YWl0IHRoaXMuX2ZldGNoTmV3QWNjZXNzVG9rZW4oKT8hMToodGhpcy5fc3luYygpLHRoaXMuX3N0YXJ0UmVmcmVzaFRva2Vuc0xvb3AoZSksITApfWFzeW5jIHJldm9rZShlLHQpe3RoaXMuX3Jldm9rZWQuYWJvcnQoKTt0cnl7aWYoIShhd2FpdCBmZXRjaChgJHt0aGlzLm9yaWdpbn0vb2F1dGgvcmV2b2tlYCx7bWV0aG9kOiJQT1NUIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn0sYm9keTpuZXcgVVJMU2VhcmNoUGFyYW1zKHt0b2tlbjp0aGlzLnJlZnJlc2gsdG9rZW5fdHlwZV9oaW50OiJyZWZyZXNoX3Rva2VuIixjbGllbnRfaWQ6ZX0pLG1vZGU6ImNvcnMifSkpLm9rKXRocm93IG5ldyBFcnJvcigiRmFpbGVkIHRvIGxvZ291dCIpfWNhdGNoKGEpe2lmKCF0KXRocm93IGF9cDFlKCl9c3RhdGljIGZyb21TdG9yYWdlKCl7bGV0IGU9UVhhKCk7cmV0dXJuIGU/bmV3IHMoZS5vcmlnaW4sZS5yZWZyZXNoLGUuYWNjZXNzLGUuZXhwaXJlcyk6bnVsbH1zdGF0aWMgYXN5bmMgZnJvbUF1dGhDb2RlKHtlZGl0b3JPcmlnaW46ZSxjbGllbnRJZDp0LGNvZGVWZXJpZmllcjphLGF1dGhDb2RlOnIscmVkaXJlY3RVcmk6bn0pe2xldCBvPWF3YWl0IGZldGNoKGAke2V9L29hdXRoL3Rva2VuYCx7bWV0aG9kOiJQT1NUIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn0sYm9keTpuZXcgVVJMU2VhcmNoUGFyYW1zKHtjbGllbnRfaWQ6dCxjb2RlOnIsY29kZV92ZXJpZmllcjphLGdyYW50X3R5cGU6ImF1dGhvcml6YXRpb25fY29kZSIscmVkaXJlY3RfdXJpOm59KSxtb2RlOiJjb3JzIn0pO2lmKCFvLm9rKXRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGZldGNoIHRva2VuOiAke28uc3RhdHVzfWApO2xldCBsPWF3YWl0IG8uanNvbigpO1o4YShsKTtsZXR7YWNjZXNzX3Rva2VuOnAscmVmcmVzaF90b2tlbjpkfT1sLHU9WThhKGwpO3JldHVybiBuZXcgcyhlLGQscCx1KX1hc3luYyBfZmV0Y2hOZXdBY2Nlc3NUb2tlbigpe3RyeXtsZXQgZT1hd2FpdCBmZXRjaChgJHt0aGlzLm9yaWdpbn0vb2F1dGgvdG9rZW5gLHttZXRob2Q6IlBPU1QiLGhlYWRlcnM6eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQifSxib2R5Om5ldyBVUkxTZWFyY2hQYXJhbXMoe2dyYW50X3R5cGU6InJlZnJlc2hfdG9rZW4iLHJlZnJlc2hfdG9rZW46dGhpcy5yZWZyZXNofSksbW9kZToiY29ycyIsc2lnbmFsOnRoaXMuX3Jldm9rZWQuc2lnbmFsfSk7aWYoIWUub2spdGhyb3cgRzhhO2xldCB0PWF3YWl0IGUuanNvbigpO1o4YSh0KTtsZXR7YWNjZXNzX3Rva2VuOmEscmVmcmVzaF90b2tlbjpyfT10LG49WThhKHQpO3JldHVybiB0aGlzLmFjY2Vzcz1hLHRoaXMuZXhwaXJlcz1uLHRoaXMucmVmcmVzaD1yLCEwfWNhdGNoe3JldHVybiBwMWUoKSwhMX19X3N5bmMoKXtKWGEodGhpcyksdFFhKHRoaXMuYWNjZXNzKX1hc3luYyBfc3RhcnRSZWZyZXNoVG9rZW5zTG9vcChlKXtmb3IoOzspe2xldCB0PXRoaXMuZXhwaXJlcy1EYXRlLm5vdygpLTFlMztpZihhd2FpdCBlUWEoTWF0aC5tYXgodCwxZTMpKSx0aGlzLl9yZXZva2VkLnNpZ25hbC5hYm9ydGVkKXJldHVybjtpZighdGhpcy5fZmV0Y2hOZXdBY2Nlc3NUb2tlbigpKXtlKCk7cmV0dXJufXRoaXMuX3N5bmMoKX19fTtpKHAxZSwiY2xlYXJUb2tlbnNJblN0b3JhZ2UiKTtpKFg4YSwiYWRkQWNjZXNzVG9rZW5DaGFuZ2VkTGlzdGVuZXIiKTtpKFFYYSwicmVhZFRva2Vuc0Zyb21TdG9yYWdlIik7aShKWGEsInBlcnNpc3RUb2tlbnNJblN0b3JhZ2UiKTtpKFk4YSwiZ2V0RXhwaXJlc0Zyb21Ub2tlblJlc3BvbnNlIik7aShaOGEsImFzc2VydFRva2VuUmVzcG9uc2UiKTtpKGVRYSwid2FpdCIpO2kodFFhLCJmaXJlQWNjZXNzVG9rZW5DaGFuZ2VkIil9KTt2YXIgdXJ0LGgxZSxfdSxwcnQ9ZygoKT0+e3UxZSgpO3VydD17fSxoMWU9bnVsbCxfdT17Z2V0IGVkaXRvck9yaWdpbigpe3JldHVybiBoMWU9PW51bGwmJihoMWU9bmV3IFVSTChnbG9iYWxUaGlzLldFQkNPTlRBSU5FUl9BUElfSUZSQU1FX1VSTD8/VThhKS5vcmlnaW4pLGgxZX0sc2V0IGVkaXRvck9yaWdpbihzKXtoMWU9bmV3IFVSTChzKS5vcmlnaW59LHNldFF1ZXJ5UGFyYW0ocyxlKXt1cnRbc109ZX0sZ2V0IHVybCgpe2xldCBzPW5ldyBVUkwodGhpcy5lZGl0b3JPcmlnaW4pO3MucGF0aG5hbWU9Ii9oZWFkbGVzcyI7Zm9yKGxldCBlIGluIHVydClzLnNlYXJjaFBhcmFtcy5zZXQoZSx1cnRbZV0pO3JldHVybiBzLnNlYXJjaFBhcmFtcy5zZXQoInZlcnNpb24iLCIxLjYuMSIpLHN9fX0pO2FzeW5jIGZ1bmN0aW9uIFE4YShzKXtsZXQgZT1uZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUocyksdD1uZXcgVWludDhBcnJheShhd2FpdCBjcnlwdG8uc3VidGxlLmRpZ2VzdCgiU0hBLTI1NiIsZSkpO3JldHVybiBidG9hKHQucmVkdWNlKChhLHIpPT5hK1N0cmluZy5mcm9tQ29kZVBvaW50KHIpLCIiKSkucmVwbGFjZSgvXCsvZywiLSIpLnJlcGxhY2UoL1wvL2csIl8iKS5yZXBsYWNlKC89KyQvLCIiKX1mdW5jdGlvbiBKOGEoKXtsZXQgcz1uZXcgVWludDhBcnJheSg5Nik7Y3J5cHRvLmdldFJhbmRvbVZhbHVlcyhzKTtsZXQgZT0iIjtmb3IobGV0IHQ9MDt0PDMyOysrdCllKz1hUWEoc1szKnQrMF0sc1szKnQrMV0sc1szKnQrMl0pO3JldHVybiBlfWZ1bmN0aW9uIGFRYShzLGUsdCl7bGV0IGE9cz4+MixyPShzJjMpPDw0fGU+PjQsbj1lJjE1fCh0JjE5Mik+PjIsbz10JjYzO3JldHVyblthLHIsbixvXS5tYXAoc1FhKS5qb2luKCIiKX1mdW5jdGlvbiBzUWEocyl7bGV0IGU7cmV0dXJuIHM8MjY/ZT1zKzY1OnM8NTI/ZT1zLTI2Kzk3OnM8NjI/ZT1zLTUyKzQ4OmU9cz09PTYyPzMwOjQ1LFN0cmluZy5mcm9tQ2hhckNvZGUoZSl9dmFyIGVnYT1nKCgpPT57aShROGEsIlMyNTYiKTtpKEo4YSwibmV3Q29kZVZlcmlmaWVyIik7aShhUWEsIm5leHRGb3VyQ2hhcnMiKTtpKHNRYSwidW5yZXNlcnZlZENoYXJhY3RlcnMiKX0pO2Z1bmN0aW9uIHRnYSgpe2xldCBzLGU7ZnVuY3Rpb24gdCgpe2U9bmV3IFByb21pc2UoYT0+cz1hKX1yZXR1cm4gaSh0LCJyZXNldCIpLHQoKSx7Z2V0IHByb21pc2UoKXtyZXR1cm4gZX0scmVzb2x2ZShhKXtyZXR1cm4gcyhhKX0scmVzZXQ6dH19dmFyIGFnYT1nKCgpPT57aSh0Z2EsInJlc2V0dGFibGVQcm9taXNlIil9KTtmdW5jdGlvbiBpUShzKXtiYS5icm9hZGNhc3RDaGFubmVsJiYoYmEuYnJvYWRjYXN0Q2hhbm5lbC5wb3N0TWVzc2FnZShzKSxsb2NhbFN0b3JhZ2UuZ2V0SXRlbShkMWUpPT09InRydWUiJiZzLnR5cGUhPT0iYXV0aC1sb2dvdXQiJiYobG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oZDFlKSxzZXRUaW1lb3V0KCgpPT57d2luZG93LmNsb3NlKCl9KSkpfWZ1bmN0aW9uIGhydCgpe19nLmZpcmVFdmVudCgpLGlRKHt0eXBlOiJhdXRoLWxvZ291dCJ9KX1mdW5jdGlvbiBpZ2EoKXtyZXR1cm4gd2luZG93LmxvY2F0aW9uLmhyZWZ9YXN5bmMgZnVuY3Rpb24gcmdhKCl7bGV0IHM9SjhhKCk7bG9jYWxTdG9yYWdlLnNldEl0ZW0oYzFlLHMpO2xldCBlPWF3YWl0IFE4YShzKSx0PW5ldyBVUkwoIi9vYXV0aC9hdXRob3JpemUiLGJhLmVkaXRvck9yaWdpbikse3NlYXJjaFBhcmFtczphfT10O3JldHVybiBhLmFwcGVuZCgicmVzcG9uc2VfdHlwZSIsImNvZGUiKSxhLmFwcGVuZCgiY2xpZW50X2lkIixiYS5jbGllbnRJZCksYS5hcHBlbmQoInJlZGlyZWN0X3VyaSIsaWdhKCkpLGEuYXBwZW5kKCJzY29wZSIsYmEub2F1dGhTY29wZSksYS5hcHBlbmQoImNvZGVfY2hhbGxlbmdlIixlKSxhLmFwcGVuZCgiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIiwiUzI1NiIpLHQudG9TdHJpbmcoKX1mdW5jdGlvbiBmcnQocyl7aWYoIXMpdGhyb3cgbmV3IEVycm9yKCJPb3BzISBUb2tlbnMgaXMgbm90IGRlZmluZWQgd2hlbiBpdCBhbHdheXMgc2hvdWxkIGJlLiIpfXZhciBiYSxzZ2EsX2csb2dhLG1ydD1nKCgpPT57ZHJ0KCk7dTFlKCk7cHJ0KCk7ZWdhKCk7YWdhKCk7Y3J0KCk7YmE9e2luaXRpYWxpemVkOiExLGJvb3RDYWxsZWQ6ITEsYXV0aENvbXBsZXRlOnRnYSgpLGNsaWVudElkOiIiLG9hdXRoU2NvcGU6IiIsYnJvYWRjYXN0Q2hhbm5lbDpudWxsLGdldCBlZGl0b3JPcmlnaW4oKXtyZXR1cm4gX3UuZWRpdG9yT3JpZ2lufSx0b2tlbnM6bnVsbH0sc2dhPW5ldyBTZyxfZz1uZXcgU2c7aShpUSwiYnJvYWRjYXN0TWVzc2FnZSIpO29nYT17aW5pdCh7ZWRpdG9yT3JpZ2luOnMsY2xpZW50SWQ6ZSxzY29wZTp0fSl7aWYoYmEuaW5pdGlhbGl6ZWQpdGhyb3cgbmV3IEVycm9yKCJJbml0IHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlIik7aWYoITAmJmJhLmJvb3RDYWxsZWQpdGhyb3cgbmV3IEVycm9yKCJgYXV0aC5pbml0YCBzaG91bGQgYWx3YXlzIGJlIGNhbGxlZCBiZWZvcmUgYFdlYkNvbnRhaW5lci5ib290YCIpO2JhLmluaXRpYWxpemVkPSEwLGJhLnRva2Vucz1seC5mcm9tU3RvcmFnZSgpLGJhLmNsaWVudElkPWUsYmEub2F1dGhTY29wZT10LGJhLmJyb2FkY2FzdENoYW5uZWw9bmV3IEJyb2FkY2FzdENoYW5uZWwoVzhhKSxfdS5zZXRRdWVyeVBhcmFtKCJjbGllbnRfaWQiLGUpLHMmJihfdS5lZGl0b3JPcmlnaW49bmV3IFVSTChzKS5vcmlnaW4pLF9nLmxpc3RlbigoKT0+YmEuYXV0aENvbXBsZXRlLnJlc2V0KCkpLGJhLmJyb2FkY2FzdENoYW5uZWwuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIscik7YXN5bmMgZnVuY3Rpb24gcihwKXtsZXQgZD1wLmRhdGE7aWYoZC50eXBlPT09ImF1dGgtY29tcGxldGUiKXtiYS50b2tlbnM9bHguZnJvbVN0b3JhZ2UoKSxhd2FpdCBiYS50b2tlbnMuYWN0aXZhdGUoaHJ0KSxiYS5hdXRoQ29tcGxldGUucmVzb2x2ZSgpO3JldHVybn1pZihkLnR5cGU9PT0iYXV0aC1mYWlsZWQiKXtzZ2EuZmlyZUV2ZW50KGQpO3JldHVybn1pZihkLnR5cGU9PT0iYXV0aC1sb2dvdXQiKXtfZy5maXJlRXZlbnQoKTtyZXR1cm59fWlmKGkociwib25DaGFubmVsTWVzc2FnZSIpLGJhLnRva2Vucyl7bGV0IHA9YmEudG9rZW5zO2lmKHAub3JpZ2luPT09YmEuZWRpdG9yT3JpZ2luKXJldHVybihhc3luYygpPT57aWYoIWF3YWl0IHAuYWN0aXZhdGUoaHJ0KSl7aWYoYmEudG9rZW5zIT09cClyZXR1cm47X2cuZmlyZUV2ZW50KCk7cmV0dXJufWJhLmF1dGhDb21wbGV0ZS5yZXNvbHZlKCl9KSgpLHtzdGF0dXM6ImF1dGhvcml6ZWQifTtwMWUoKSxiYS50b2tlbnM9bnVsbH1sZXQgbj1uZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSx7c2VhcmNoUGFyYW1zOm99PW4sbD1pKCgpPT53aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoe30sZG9jdW1lbnQudGl0bGUsbiksInVwZGF0ZVVSTCIpO2lmKG8uaGFzKG4xZSkpe2xldCBwPW8uZ2V0KG4xZSksZD1vLmdldChscnQpO3JldHVybiBvLmRlbGV0ZShuMWUpLG8uZGVsZXRlKGxydCksbCgpLGlRKHt0eXBlOiJhdXRoLWZhaWxlZCIsZXJyb3I6cCxkZXNjcmlwdGlvbjpkfSkse3N0YXR1czoiYXV0aC1mYWlsZWQiLGVycm9yOnAsZGVzY3JpcHRpb246ZH19aWYoby5oYXMobzFlKSl7bGV0IHA9by5nZXQobzFlKSxkPWJhLmVkaXRvck9yaWdpbjtvLmRlbGV0ZShvMWUpLGwoKTtsZXQgdT1sb2NhbFN0b3JhZ2UuZ2V0SXRlbShjMWUpO3JldHVybiB1Pyhsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShjMWUpLGx4LmZyb21BdXRoQ29kZSh7ZWRpdG9yT3JpZ2luOmQsY2xpZW50SWQ6YmEuY2xpZW50SWQsYXV0aENvZGU6cCxjb2RlVmVyaWZpZXI6dSxyZWRpcmVjdFVyaTppZ2EoKX0pLnRoZW4oYXN5bmMgYz0+e2lmKGJhLnRva2Vucz1jLGZydChiYS50b2tlbnMpLCFhd2FpdCBiYS50b2tlbnMuYWN0aXZhdGUoaHJ0KSl0aHJvdyBuZXcgRXJyb3I7YmEuYXV0aENvbXBsZXRlLnJlc29sdmUoKSxpUSh7dHlwZToiYXV0aC1jb21wbGV0ZSJ9KX0pLmNhdGNoKGM9Pntjb25zb2xlLmVycm9yKGMpLF9nLmZpcmVFdmVudCgpLGlRKHt0eXBlOiJhdXRoLWxvZ291dCJ9KX0pLHtzdGF0dXM6ImF1dGhvcml6ZWQifSk6e3N0YXR1czoibmVlZC1hdXRoIn19cmV0dXJue3N0YXR1czoibmVlZC1hdXRoIn19LGFzeW5jIHN0YXJ0QXV0aEZsb3coe3BvcHVwOnN9PXt9KXtpZighYmEuaW5pdGlhbGl6ZWQpdGhyb3cgbmV3IEVycm9yKCJhdXRoLmluaXQgbXVzdCBiZSBjYWxsZWQgZmlyc3QiKTtpZihzKXtsb2NhbFN0b3JhZ2Uuc2V0SXRlbShkMWUsInRydWUiKTtsZXQgZT01MDAsdD02MjAsYT13aW5kb3cuc2NyZWVuTGVmdCsod2luZG93Lm91dGVyV2lkdGgtdCkvMixyPXdpbmRvdy5zY3JlZW5Ub3ArKHdpbmRvdy5vdXRlckhlaWdodC1lKS8yO3dpbmRvdy5vcGVuKGF3YWl0IHJnYSgpLCJfYmxhbmsiLGBwb3B1cCx3aWR0aD0ke3R9LGhlaWdodD0ke2V9LGxlZnQ9JHthfSx0b3A9JHtyfWApfWVsc2Ugd2luZG93LmxvY2F0aW9uLmhyZWY9YXdhaXQgcmdhKCl9LGFzeW5jIGxvZ291dCh7aWdub3JlUmV2b2tlRXJyb3I6c309e30pe2F3YWl0IGJhLnRva2Vucz8ucmV2b2tlKGJhLmNsaWVudElkLHM/PyExKSxfZy5maXJlRXZlbnQoKSxpUSh7dHlwZToiYXV0aC1sb2dvdXQifSl9LGxvZ2dlZEluKCl7cmV0dXJuIGJhLmF1dGhDb21wbGV0ZS5wcm9taXNlfSxvbihzLGUpe3N3aXRjaChzKXtjYXNlImF1dGgtZmFpbGVkIjpyZXR1cm4gc2dhLmxpc3RlbihlKTtjYXNlImxvZ2dlZC1vdXQiOnJldHVybiBfZy5saXN0ZW4oZSk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGV2ZW50IHR5cGUgJyR7c30nLmApfX19O2koaHJ0LCJvbkZhaWxlZFRva2VuUmVmcmVzaCIpO2koaWdhLCJkZWZhdWx0UmVkaXJlY3RVcmkiKTtpKHJnYSwiZ2VuZXJhdGVPQXV0aFJlcXVlc3QiKTtpKGZydCwiYXNzZXJ0QXV0aFRva2VucyIpfSk7dmFyIE11LGYxZT1nKCgpPT57KGZ1bmN0aW9uKHMpe3MuVW5jYXVnaHRFeGNlcHRpb249IlBSRVZJRVdfVU5DQVVHSFRfRVhDRVBUSU9OIixzLlVuaGFuZGxlZFJlamVjdGlvbj0iUFJFVklFV19VTkhBTkRMRURfUkVKRUNUSU9OIixzLkNvbnNvbGVFcnJvcj0iUFJFVklFV19DT05TT0xFX0VSUk9SIn0pKE11fHwoTXU9e30pKX0pO2Z1bmN0aW9uIHhydChzLGU9c2VsZil7ZS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixpKGZ1bmN0aW9uIHQoYSl7aWYoIWF8fCFhLmRhdGEpcmV0dXJuO2xldHtpZDpyLHR5cGU6bixwYXRoOm99PU9iamVjdC5hc3NpZ24oe3BhdGg6W119LGEuZGF0YSksbD0oYS5kYXRhLmFyZ3VtZW50TGlzdHx8W10pLm1hcChNZykscDt0cnl7bGV0IGQ9by5zbGljZSgwLC0xKS5yZWR1Y2UoKGMsYik9PmNbYl0scyksdT1vLnJlZHVjZSgoYyxiKT0+Y1tiXSxzKTtzd2l0Y2gobil7Y2FzZSAwOnA9dTticmVhaztjYXNlIDE6ZFtvLnNsaWNlKC0xKVswXV09TWcoYS5kYXRhLnZhbHVlKSxwPSEwO2JyZWFrO2Nhc2UgMjpwPXUuYXBwbHkoZCxsKTticmVhaztjYXNlIDM6e2xldCBjPW5ldyB1KC4uLmwpO3A9bWdhKGMpfWJyZWFrO2Nhc2UgNDp7bGV0e3BvcnQxOmMscG9ydDI6Yn09bmV3IE1lc3NhZ2VDaGFubmVsO3hydChzLGIpLHA9ZmdhKGMsW2NdKX1icmVhaztjYXNlIDU6cD12b2lkIDA7YnJlYWt9fWNhdGNoKGQpe3A9e3ZhbHVlOmQsW2JydF06MH19UHJvbWlzZS5yZXNvbHZlKHApLmNhdGNoKGQ9Pih7dmFsdWU6ZCxbYnJ0XTowfSkpLnRoZW4oZD0+e2xldFt1LGNdPXdydChkKTtlLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx1KSx7aWQ6cn0pLGMpLG49PT01JiYoZS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIix0KSxkZ2EoZSkpfSl9LCJjYWxsYmFjayIpKSxlLnN0YXJ0JiZlLnN0YXJ0KCl9ZnVuY3Rpb24gbFFhKHMpe3JldHVybiBzLmNvbnN0cnVjdG9yLm5hbWU9PT0iTWVzc2FnZVBvcnQifWZ1bmN0aW9uIGRnYShzKXtsUWEocykmJnMuY2xvc2UoKX1mdW5jdGlvbiB1Z2EocyxlKXtyZXR1cm4geXJ0KHMsW10sZSl9ZnVuY3Rpb24gbTFlKHMpe2lmKHMpdGhyb3cgbmV3IEVycm9yKCJQcm94eSBoYXMgYmVlbiByZWxlYXNlZCBhbmQgaXMgbm90IHVzZWFibGUiKX1mdW5jdGlvbiB5cnQocyxlPVtdLHQ9ZnVuY3Rpb24oKXt9KXtsZXQgYT0hMSxyPW5ldyBQcm94eSh0LHtnZXQobixvKXtpZihtMWUoYSksbz09PWxnYSlyZXR1cm4oKT0+Y3gocyx7dHlwZTo1LHBhdGg6ZS5tYXAobD0+bC50b1N0cmluZygpKX0pLnRoZW4oKCk9PntkZ2EocyksYT0hMH0pO2lmKG89PT0idGhlbiIpe2lmKGUubGVuZ3RoPT09MClyZXR1cm57dGhlbjppKCgpPT5yLCJ0aGVuIil9O2xldCBsPWN4KHMse3R5cGU6MCxwYXRoOmUubWFwKHA9PnAudG9TdHJpbmcoKSl9KS50aGVuKE1nKTtyZXR1cm4gbC50aGVuLmJpbmQobCl9cmV0dXJuIHlydChzLFsuLi5lLG9dKX0sc2V0KG4sbyxsKXttMWUoYSk7bGV0W3AsZF09d3J0KGwpO3JldHVybiBjeChzLHt0eXBlOjEscGF0aDpbLi4uZSxvXS5tYXAodT0+dS50b1N0cmluZygpKSx2YWx1ZTpwfSxkKS50aGVuKE1nKX0sYXBwbHkobixvLGwpe20xZShhKTtsZXQgcD1lW2UubGVuZ3RoLTFdO2lmKHA9PT1uZ2EpcmV0dXJuIGN4KHMse3R5cGU6NH0pLnRoZW4oTWcpO2lmKHA9PT0iYmluZCIpcmV0dXJuIHlydChzLGUuc2xpY2UoMCwtMSkpO2xldFtkLHVdPXBnYShsKTtyZXR1cm4gY3gocyx7dHlwZToyLHBhdGg6ZS5tYXAoYz0+Yy50b1N0cmluZygpKSxhcmd1bWVudExpc3Q6ZH0sdSkudGhlbihNZyl9LGNvbnN0cnVjdChuLG8pe20xZShhKTtsZXRbbCxwXT1wZ2Eobyk7cmV0dXJuIGN4KHMse3R5cGU6MyxwYXRoOmUubWFwKGQ9PmQudG9TdHJpbmcoKSksYXJndW1lbnRMaXN0Omx9LHApLnRoZW4oTWcpfX0pO3JldHVybiByfWZ1bmN0aW9uIGNRYShzKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxzKX1mdW5jdGlvbiBwZ2Eocyl7bGV0IGU9cy5tYXAod3J0KTtyZXR1cm5bZS5tYXAodD0+dFswXSksY1FhKGUubWFwKHQ9PnRbMV0pKV19ZnVuY3Rpb24gZmdhKHMsZSl7cmV0dXJuIGhnYS5zZXQocyxlKSxzfWZ1bmN0aW9uIG1nYShzKXtyZXR1cm4gT2JqZWN0LmFzc2lnbihzLHtbZ3J0XTohMH0pfWZ1bmN0aW9uIGRRYShzLGU9c2VsZix0PSIqIil7cmV0dXJue3Bvc3RNZXNzYWdlOmkoKGEscik9PnMucG9zdE1lc3NhZ2UoYSx0LHIpLCJwb3N0TWVzc2FnZSIpLGFkZEV2ZW50TGlzdGVuZXI6ZS5hZGRFdmVudExpc3RlbmVyLmJpbmQoZSkscmVtb3ZlRXZlbnRMaXN0ZW5lcjplLnJlbW92ZUV2ZW50TGlzdGVuZXIuYmluZChlKX19ZnVuY3Rpb24gd3J0KHMpe2ZvcihsZXRbZSx0XW9mIHZydClpZih0LmNhbkhhbmRsZShzKSl7bGV0W2Escl09dC5zZXJpYWxpemUocyk7cmV0dXJuW3t0eXBlOjMsbmFtZTplLHZhbHVlOmF9LHJdfXJldHVyblt7dHlwZTowLHZhbHVlOnN9LGhnYS5nZXQocyl8fFtdXX1mdW5jdGlvbiBNZyhzKXtzd2l0Y2gocy50eXBlKXtjYXNlIDM6cmV0dXJuIHZydC5nZXQocy5uYW1lKS5kZXNlcmlhbGl6ZShzLnZhbHVlKTtjYXNlIDA6cmV0dXJuIHMudmFsdWV9fWZ1bmN0aW9uIGN4KHMsZSx0KXtyZXR1cm4gbmV3IFByb21pc2UoYT0+e2xldCByPXVRYSgpO3MuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsaShmdW5jdGlvbiBuKG8peyFvLmRhdGF8fCFvLmRhdGEuaWR8fG8uZGF0YS5pZCE9PXJ8fChzLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLG4pLGEoby5kYXRhKSl9LCJsIikpLHMuc3RhcnQmJnMuc3RhcnQoKSxzLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oe2lkOnJ9LGUpLHQpfSl9ZnVuY3Rpb24gdVFhKCl7cmV0dXJuIG5ldyBBcnJheSg0KS5maWxsKDApLm1hcCgoKT0+TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKk51bWJlci5NQVhfU0FGRV9JTlRFR0VSKS50b1N0cmluZygxNikpLmpvaW4oIi0iKX12YXIgaVFhLHJRYSxZYyxncnQsbmdhLGxnYSxicnQsY2dhLG9RYSxuUWEsdnJ0LGhnYSxnZ2E9ZygoKT0+e2lRYT1PYmplY3QuZGVmaW5lUHJvcGVydHksclFhPWkoKHMsZSk9Pntmb3IodmFyIHQgaW4gZSlpUWEocyx0LHtnZXQ6ZVt0XSxlbnVtZXJhYmxlOiEwfSl9LCJfX2V4cG9ydCIpLFljPXt9O3JRYShZYyx7Y3JlYXRlRW5kcG9pbnQ6aSgoKT0+bmdhLCJjcmVhdGVFbmRwb2ludCIpLGV4cG9zZTppKCgpPT54cnQsImV4cG9zZSIpLHByb3h5OmkoKCk9Pm1nYSwicHJveHkiKSxwcm94eU1hcmtlcjppKCgpPT5ncnQsInByb3h5TWFya2VyIikscmVsZWFzZVByb3h5OmkoKCk9PmxnYSwicmVsZWFzZVByb3h5IiksdHJhbnNmZXI6aSgoKT0+ZmdhLCJ0cmFuc2ZlciIpLHRyYW5zZmVySGFuZGxlcnM6aSgoKT0+dnJ0LCJ0cmFuc2ZlckhhbmRsZXJzIiksd2luZG93RW5kcG9pbnQ6aSgoKT0+ZFFhLCJ3aW5kb3dFbmRwb2ludCIpLHdyYXA6aSgoKT0+dWdhLCJ3cmFwIil9KTtncnQ9U3ltYm9sKCJDb21saW5rLnByb3h5IiksbmdhPVN5bWJvbCgiQ29tbGluay5lbmRwb2ludCIpLGxnYT1TeW1ib2woIkNvbWxpbmsucmVsZWFzZVByb3h5IiksYnJ0PVN5bWJvbCgiQ29tbGluay50aHJvd24iKSxjZ2E9aShzPT50eXBlb2Ygcz09Im9iamVjdCImJnMhPT1udWxsfHx0eXBlb2Ygcz09ImZ1bmN0aW9uIiwiaXNPYmplY3QiKSxvUWE9e2NhbkhhbmRsZTppKHM9PmNnYShzKSYmc1tncnRdLCJjYW5IYW5kbGUiKSxzZXJpYWxpemUocyl7bGV0e3BvcnQxOmUscG9ydDI6dH09bmV3IE1lc3NhZ2VDaGFubmVsO3JldHVybiB4cnQocyxlKSxbdCxbdF1dfSxkZXNlcmlhbGl6ZShzKXtyZXR1cm4gcy5zdGFydCgpLHVnYShzKX19LG5RYT17Y2FuSGFuZGxlOmkocz0+Y2dhKHMpJiZicnQgaW4gcywiY2FuSGFuZGxlIiksc2VyaWFsaXplKHt2YWx1ZTpzfSl7bGV0IGU7cmV0dXJuIHMgaW5zdGFuY2VvZiBFcnJvcj9lPXtpc0Vycm9yOiEwLHZhbHVlOnttZXNzYWdlOnMubWVzc2FnZSxuYW1lOnMubmFtZSxzdGFjazpzLnN0YWNrfX06ZT17aXNFcnJvcjohMSx2YWx1ZTpzfSxbZSxbXV19LGRlc2VyaWFsaXplKHMpe3Rocm93IHMuaXNFcnJvcj9PYmplY3QuYXNzaWduKG5ldyBFcnJvcihzLnZhbHVlLm1lc3NhZ2UpLHMudmFsdWUpOnMudmFsdWV9fSx2cnQ9bmV3IE1hcChbWyJwcm94eSIsb1FhXSxbInRocm93IixuUWFdXSk7aSh4cnQsImV4cG9zZSIpO2kobFFhLCJpc01lc3NhZ2VQb3J0Iik7aShkZ2EsImNsb3NlRW5kUG9pbnQiKTtpKHVnYSwid3JhcCIpO2kobTFlLCJ0aHJvd0lmUHJveHlSZWxlYXNlZCIpO2koeXJ0LCJjcmVhdGVQcm94eSIpO2koY1FhLCJteUZsYXQiKTtpKHBnYSwicHJvY2Vzc0FyZ3VtZW50cyIpO2hnYT1uZXcgV2Vha01hcDtpKGZnYSwidHJhbnNmZXIiKTtpKG1nYSwicHJveHkiKTtpKGRRYSwid2luZG93RW5kcG9pbnQiKTtpKHdydCwidG9XaXJlVmFsdWUiKTtpKE1nLCJmcm9tV2lyZVZhbHVlIik7aShjeCwicmVxdWVzdFJlc3BvbnNlTWVzc2FnZSIpO2kodVFhLCJnZW5lcmF0ZVVVSUQiKX0pO3ZhciBiZ2E9ZygoKT0+e30pO2Z1bmN0aW9uIGtydChzKXtyZXR1cm4hKHM9PW51bGx8fHR5cGVvZiBzIT0ib2JqZWN0Inx8ISgidHlwZSJpbiBzKXx8IXBRYS5pbmNsdWRlcyhzLnR5cGUpKX12YXIgcFFhLHZnYT1nKCgpPT57ZjFlKCk7cFFhPVtNdS5Db25zb2xlRXJyb3IsTXUuVW5jYXVnaHRFeGNlcHRpb24sTXUuVW5oYW5kbGVkUmVqZWN0aW9uXTtpKGtydCwiaXNQcmV2aWV3TWVzc2FnZSIpfSk7dmFyIFNydD1nKCgpPT57YmdhKCk7ZjFlKCk7dmdhKCl9KTtmdW5jdGlvbiB6ZyhzKXtsZXQgZT1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBzP09iamVjdC5hc3NpZ24oZSxzKTplfXZhciB4Z2E9ZygoKT0+e2koemcsIm51bGxQcm90b3R5cGUiKX0pO2Z1bmN0aW9uIF9ydChzKXtsZXQgZT17ZDp7fX07Zm9yKGxldCB0IG9mIE9iamVjdC5rZXlzKHMpKXtsZXQgYT1zW3RdO2lmKCJmaWxlImluIGEpe2lmKCJzeW1saW5rImluIGEuZmlsZSl7ZS5kW3RdPXtmOntsOmEuZmlsZS5zeW1saW5rfX07Y29udGludWV9bGV0IG49YS5maWxlLmNvbnRlbnRzLG89dHlwZW9mIG49PSJzdHJpbmciP246aFFhLmRlY29kZShuKSxsPXR5cGVvZiBuPT0ic3RyaW5nIj97fTp7YjohMH07ZS5kW3RdPXtmOntjOm8sLi4ubH19O2NvbnRpbnVlfWxldCByPV9ydChhLmRpcmVjdG9yeSk7ZS5kW3RdPXJ9cmV0dXJuIGV9ZnVuY3Rpb24gTXJ0KHMpe2xldCBlPXpnKCk7aWYoImYiaW4gcyl0aHJvdyBuZXcgRXJyb3IoIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBleHBvcnQgYSBzaW5nbGUgZmlsZSBpbiB0aGUgSlNPTiBmb3JtYXQuIik7aWYoImQiaW4gcylmb3IobGV0IHQgb2YgT2JqZWN0LmtleXMocy5kKSl7bGV0IGE9cy5kW3RdOyJkImluIGE/ZVt0XT16Zyh7ZGlyZWN0b3J5Ok1ydChhKX0pOiJmImluIGEmJigiYyJpbiBhLmY/ZVt0XT16Zyh7ZmlsZTp6Zyh7Y29udGVudHM6YS5mLmI/ZlFhKGEuZi5jKTphLmYuY30pfSk6ImwiaW4gYS5mJiYoZVt0XT16Zyh7ZmlsZTp6Zyh7c3ltbGluazphLmYubH0pfSkpKX1yZXR1cm4gZX1mdW5jdGlvbiBmUWEocyl7bGV0IGU9bmV3IFVpbnQ4QXJyYXkocy5sZW5ndGgpO2ZvcihsZXQgdD0wO3Q8cy5sZW5ndGg7dCsrKWVbdF09c1t0XS5jaGFyQ29kZUF0KDApO3JldHVybiBlfXZhciBoUWEseWdhPWcoKCk9Pnt4Z2EoKTtoUWE9bmV3IFRleHREZWNvZGVyKCJsYXRpbjEiKTtpKF9ydCwidG9JbnRlcm5hbEZpbGVTeXN0ZW1UcmVlIik7aShNcnQsInRvRXh0ZXJuYWxGaWxlU3lzdGVtVHJlZSIpO2koZlFhLCJmcm9tQmluYXJ5U3RyaW5nIil9KTtmdW5jdGlvbiB4eW8ocyl7aWYoYmEuYm9vdENhbGxlZCl0aHJvdyBuZXcgRXJyb3IoImBjb25maWd1cmVBUElLZXlgIHNob3VsZCBhbHdheXMgYmUgY2FsbGVkIGJlZm9yZSBgV2ViQ29udGFpbmVyLmJvb3RgIik7X3Uuc2V0UXVlcnlQYXJhbSgiY2xpZW50X2lkIixzKX1hc3luYyBmdW5jdGlvbiB2UWEocyl7bGV0e3NlcnZlclByb21pc2U6ZX09eFFhKHMpLGE9YXdhaXQoYXdhaXQgZSkuYnVpbGQoe2hvc3Q6d2luZG93LmxvY2F0aW9uLmhvc3QsdmVyc2lvbjoiMS42LjEiLHdvcmtkaXJOYW1lOnMud29ya2Rpck5hbWUsZm9yd2FyZFByZXZpZXdFcnJvcnM6cy5mb3J3YXJkUHJldmlld0Vycm9yc30pLFtyLG4sb109YXdhaXQgUHJvbWlzZS5hbGwoW2EuZnMoKSxhLnByZXZpZXdTY3JpcHQoKSxhLnJ1bnRpbWVJbmZvKCldKTtyZXR1cm4gbmV3IENnKGEscixuLG8pfWZ1bmN0aW9uIExydChzKXtpZihzIT1udWxsKXJldHVybiBlPT57ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXk/cyh3Z2EuZGVjb2RlKGUpKTplPT1udWxsJiZzKG51bGwpfX1mdW5jdGlvbiB2MWUocyl7aWYocyE9bnVsbClyZXR1cm4gWWMucHJveHkocyl9ZnVuY3Rpb24geFFhKHMpe2lmKGIxZSE9bnVsbClyZXR1cm4gcy5jb2VwIT09enJ0LmNvZXAmJihjb25zb2xlLndhcm4oYEF0dGVtcHRpbmcgdG8gYm9vdCBXZWJDb250YWluZXIgd2l0aCAnY29lcDogJHtzLmNvZXB9J2ApLGNvbnNvbGUud2FybihgRmlyc3QgYm9vdCBoYWQgJ2NvZXA6ICR7enJ0LmNvZXB9JywgbmV3IHNldHRpbmdzIHdpbGwgbm90IHRha2UgZWZmZWN0IWApKSx7c2VydmVyUHJvbWlzZTpiMWV9O3MuY29lcCYmX3Uuc2V0UXVlcnlQYXJhbSgiY29lcCIscy5jb2VwKSxzLmV4cGVyaW1lbnRhbE5vZGUmJl91LnNldFF1ZXJ5UGFyYW0oImV4cGVyaW1lbnRhbF9ub2RlIiwiMSIpO2xldCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpO2Uuc3R5bGUuZGlzcGxheT0ibm9uZSIsZS5zZXRBdHRyaWJ1dGUoImFsbG93IiwiY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkIik7bGV0IHQ9X3UudXJsO2Uuc3JjPXQudG9TdHJpbmcoKTtsZXR7b3JpZ2luOmF9PXQ7cmV0dXJuIHpydD17Li4uc30sYjFlPW5ldyBQcm9taXNlKHI9PntsZXQgbj1pKG89PntpZihvLm9yaWdpbiE9PWEpcmV0dXJuO2xldHtkYXRhOmx9PW87aWYobC50eXBlPT09ImluaXQiKXtyKFljLndyYXAoby5wb3J0c1swXSkpO3JldHVybn1pZihsLnR5cGU9PT0id2FybmluZyIpe2NvbnNvbGVbbC5sZXZlbF0uY2FsbChjb25zb2xlLGwubWVzc2FnZSk7cmV0dXJufX0sIm9uTWVzc2FnZSIpO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixuKX0pLGRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGUsbnVsbCkse3NlcnZlclByb21pc2U6YjFlfX1mdW5jdGlvbiB5UWEocyl7cmV0dXJuIHR5cGVvZiBzWzBdPT0ic3RyaW5nIn1mdW5jdGlvbiB3UWEocyl7cmV0dXJuIHNbMF1pbnN0YW5jZW9mIFVpbnQ4QXJyYXl9ZnVuY3Rpb24ga1FhKCl7bGV0IHM9bnVsbDtyZXR1cm57c3RyZWFtOm5ldyBSZWFkYWJsZVN0cmVhbSh7c3RhcnQoYSl7cz1hfX0pLHB1c2g6aShhPT57YSE9bnVsbD9zPy5lbnF1ZXVlKGEpOihzPy5jbG9zZSgpLHM9bnVsbCl9LCJwdXNoIil9fWZ1bmN0aW9uIFNRYShzKXtsZXQgZT0hMSx0PWkoKCk9Pnt9LCJ1bnN1YnNjcmliZSIpO3JldHVybntzdWJzY3JpYmUocil7cmV0dXJuIHIudGhlbihuPT57dD1uLGUmJnQoKX0pLCgpPT57ZT0hMCx0KCl9fSxsaXN0ZW5lcjppKCgoLi4ucik9PntlfHxzKC4uLnIpfSksIndyYXBwZWQiKX19dmFyIHZ5byxnMWUsYjFlLHpydCx3Z2EsbVFhLENnLGdRYSxiUWEsQ3J0LFRydCwkcnQsRHJ0LEVydD1nKCgpPT57bXJ0KCk7ZjFlKCk7Z2dhKCk7bXJ0KCk7ZHJ0KCk7cHJ0KCk7U3J0KCk7eWdhKCk7U3J0KCk7dnlvPW9nYSxnMWU9bnVsbCxiMWU9bnVsbCx6cnQ9e30sd2dhPW5ldyBUZXh0RGVjb2RlcixtUWE9bmV3IFRleHRFbmNvZGVyLENnPWNsYXNzIHN7c3RhdGlje2kodGhpcywiV2ViQ29udGFpbmVyIil9X2luc3RhbmNlO19ydW50aW1lSW5mbztmcztzdGF0aWMgX2luc3RhbmNlPW51bGw7c3RhdGljIF90ZWFyZG93blByb21pc2U9bnVsbDtfdG9ybkRvd249ITE7X3Vuc3Vic2NyaWJlRnJvbVRva2VuQ2hhbmdlZExpc3RlbmVyPWkoKCk9Pnt9LCJfdW5zdWJzY3JpYmVGcm9tVG9rZW5DaGFuZ2VkTGlzdGVuZXIiKTtjb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLl9pbnN0YW5jZT1lLHRoaXMuX3J1bnRpbWVJbmZvPXIsdGhpcy5mcz1uZXcgRHJ0KHQpLGJhLmluaXRpYWxpemVkJiYodGhpcy5fdW5zdWJzY3JpYmVGcm9tVG9rZW5DaGFuZ2VkTGlzdGVuZXI9WDhhKG49Pnt0aGlzLl9pbnN0YW5jZS5zZXRDcmVkZW50aWFscyh7YWNjZXNzVG9rZW46bixlZGl0b3JPcmlnaW46YmEuZWRpdG9yT3JpZ2lufSl9KSwoYXN5bmMoKT0+e2F3YWl0IGJhLmF1dGhDb21wbGV0ZS5wcm9taXNlLCF0aGlzLl90b3JuRG93biYmKGZydChiYS50b2tlbnMpLGF3YWl0IHRoaXMuX2luc3RhbmNlLnNldENyZWRlbnRpYWxzKHthY2Nlc3NUb2tlbjpiYS50b2tlbnMuYWNjZXNzLGVkaXRvck9yaWdpbjpiYS5lZGl0b3JPcmlnaW59KSl9KSgpLmNhdGNoKG49Pntjb25zb2xlLmVycm9yKG4pfSkpfWFzeW5jIHNwYXduKGUsdCxhKXtsZXQgcj1bXTtBcnJheS5pc0FycmF5KHQpP3I9dDphPXQ7bGV0IG4sbz1uZXcgUmVhZGFibGVTdHJlYW07aWYoYT8ub3V0cHV0IT09ITEpe2xldCBtPWtRYSgpO249bS5wdXNoLG89bS5zdHJlYW19bGV0IGwscCxkLHUsYz12MWUoTHJ0KG4pKSxiPXYxZShMcnQobCkpLHY9djFlKExydChkKSkseD1hd2FpdCB0aGlzLl9pbnN0YW5jZS5ydW4oe2NvbW1hbmQ6ZSxhcmdzOnIsY3dkOmE/LmN3ZCxlbnY6YT8uZW52LHRlcm1pbmFsOmE/LnRlcm1pbmFsfSxiLHYsYyk7cmV0dXJuIG5ldyAkcnQoeCxvLHAsdSl9YXN5bmMgZXhwb3J0KGUsdCl7bGV0IGE9e2Zvcm1hdDp0Py5mb3JtYXQ/PyJqc29uIixpbmNsdWRlczp0Py5pbmNsdWRlcyxleGNsdWRlczp0Py5leGNsdWRlcyxleHRlcm5hbDohMH0scj1hd2FpdCB0aGlzLl9pbnN0YW5jZS5zZXJpYWxpemUoZSxhKTtpZihhLmZvcm1hdD09PSJqc29uIil7bGV0IG49SlNPTi5wYXJzZSh3Z2EuZGVjb2RlKHIpKTtyZXR1cm4gTXJ0KG4pfXJldHVybiByfW9uKGUsdCl7aWYoZT09PSJwcmV2aWV3LW1lc3NhZ2UiKXtsZXQgbj10O3Q9aSgobz0+e2tydChvKSYmbihvKX0pLCJsaXN0ZW5lciIpfWxldHtsaXN0ZW5lcjphLHN1YnNjcmliZTpyfT1TUWEodCk7cmV0dXJuIHIodGhpcy5faW5zdGFuY2Uub24oZSxZYy5wcm94eShhKSkpfW1vdW50KGUsdCl7bGV0IGE9ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXk/ZTplIGluc3RhbmNlb2YgQXJyYXlCdWZmZXI/bmV3IFVpbnQ4QXJyYXkoZSk6bVFhLmVuY29kZShKU09OLnN0cmluZ2lmeShfcnQoZSkpKTtyZXR1cm4gdGhpcy5faW5zdGFuY2UubG9hZEZpbGVzKFljLnRyYW5zZmVyKGEsW2EuYnVmZmVyXSkse21vdW50UG9pbnRzOnQ/Lm1vdW50UG9pbnR9KX1zZXRQcmV2aWV3U2NyaXB0KGUsdCl7cmV0dXJuIHRoaXMuX2luc3RhbmNlLnNldFByZXZpZXdTY3JpcHQoZSx0KX1nZXQgcGF0aCgpe3JldHVybiB0aGlzLl9ydW50aW1lSW5mby5wYXRofWdldCB3b3JrZGlyKCl7cmV0dXJuIHRoaXMuX3J1bnRpbWVJbmZvLmN3ZH10ZWFyZG93bigpe2lmKHRoaXMuX3Rvcm5Eb3duKXRocm93IG5ldyBFcnJvcigiV2ViQ29udGFpbmVyIGFscmVhZHkgdG9ybiBkb3duIik7dGhpcy5fdG9ybkRvd249ITAsdGhpcy5fdW5zdWJzY3JpYmVGcm9tVG9rZW5DaGFuZ2VkTGlzdGVuZXIoKTtsZXQgZT1pKGFzeW5jKCk9Pnt0cnl7YXdhaXQgdGhpcy5mcy5fdGVhcmRvd24oKSxhd2FpdCB0aGlzLl9pbnN0YW5jZS50ZWFyZG93bigpfWZpbmFsbHl7dGhpcy5faW5zdGFuY2VbWWMucmVsZWFzZVByb3h5XSgpLHMuX2luc3RhbmNlPT09dGhpcyYmKHMuX2luc3RhbmNlPW51bGwpfX0sInRlYXJkb3duRm4iKTtzLl90ZWFyZG93blByb21pc2U9ZSgpfXN0YXRpYyBhc3luYyBib290KGU9e30pe2F3YWl0IHRoaXMuX3RlYXJkb3duUHJvbWlzZSxzLl90ZWFyZG93blByb21pc2U9bnVsbDtsZXR7d29ya2Rpck5hbWU6dH09ZTtpZih3aW5kb3cuY3Jvc3NPcmlnaW5Jc29sYXRlZCYmZS5jb2VwPT09Im5vbmUiJiZjb25zb2xlLndhcm4oYEEgQ3Jvc3MtT3JpZ2luLUVtYmVkZGVyLVBvbGljeSBoZWFkZXIgaXMgcmVxdWlyZWQgaW4gY3Jvc3Mgb3JpZ2luIGlzb2xhdGVkIGVudmlyb25tZW50cy4KU2V0IHRoZSAnY29lcCcgb3B0aW9uIHRvICdyZXF1aXJlLWNvcnAnLmApLHQ/LmluY2x1ZGVzKCIvIil8fHQ9PT0iLi4ifHx0PT09Ii4iKXRocm93IG5ldyBFcnJvcigid29ya2Rpck5hbWUgc2hvdWxkIGJlIGEgdmFsaWQgZm9sZGVyIG5hbWUiKTtmb3IoYmEuYm9vdENhbGxlZD0hMDtnMWU7KWF3YWl0IGcxZTtpZihzLl9pbnN0YW5jZSl0aHJvdyBuZXcgRXJyb3IoIk9ubHkgYSBzaW5nbGUgV2ViQ29udGFpbmVyIGluc3RhbmNlIGNhbiBiZSBib290ZWQiKTtsZXQgYT12UWEoZSk7ZzFlPWEuY2F0Y2goKCk9Pnt9KTt0cnl7bGV0IHI9YXdhaXQgYTtyZXR1cm4gcy5faW5zdGFuY2U9cixyfWZpbmFsbHl7ZzFlPW51bGx9fX07aSh4eW8sImNvbmZpZ3VyZUFQSUtleSIpO2dRYT0xLGJRYT0yLENydD1jbGFzc3tzdGF0aWN7aSh0aGlzLCJEaXJFbnRJbXBsIil9bmFtZTtfdHlwZTtjb25zdHJ1Y3RvcihlLHQpe3RoaXMubmFtZT1lLHRoaXMuX3R5cGU9dH1pc0ZpbGUoKXtyZXR1cm4gdGhpcy5fdHlwZT09PWdRYX1pc0RpcmVjdG9yeSgpe3JldHVybiB0aGlzLl90eXBlPT09YlFhfX0sVHJ0PWNsYXNze3N0YXRpY3tpKHRoaXMsIkZTV2F0Y2hlciIpfV9hcGlDbGllbnQ7X3BhdGg7X29wdGlvbnM7X2xpc3RlbmVyO193cmFwcGVkTGlzdGVuZXI7X3dhdGNoZXI7X2Nsb3NlZD0hMTtjb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLl9hcGlDbGllbnQ9ZSx0aGlzLl9wYXRoPXQsdGhpcy5fb3B0aW9ucz1hLHRoaXMuX2xpc3RlbmVyPXIsdGhpcy5fYXBpQ2xpZW50Ll93YXRjaGVycy5hZGQodGhpcyksdGhpcy5fd3JhcHBlZExpc3RlbmVyPShuLG8pPT57dGhpcy5fbGlzdGVuZXImJiF0aGlzLl9jbG9zZWQmJnRoaXMuX2xpc3RlbmVyKG4sbyl9LHRoaXMuX2FwaUNsaWVudC5fZnMud2F0Y2godGhpcy5fcGF0aCx0aGlzLl9vcHRpb25zLHYxZSh0aGlzLl93cmFwcGVkTGlzdGVuZXIpKS50aGVuKG49PntpZih0aGlzLl93YXRjaGVyPW4sdGhpcy5fY2xvc2VkKXJldHVybiB0aGlzLl90ZWFyZG93bigpfSkuY2F0Y2goY29uc29sZS5lcnJvcil9YXN5bmMgY2xvc2UoKXt0aGlzLl9jbG9zZWR8fCh0aGlzLl9jbG9zZWQ9ITAsdGhpcy5fYXBpQ2xpZW50Ll93YXRjaGVycy5kZWxldGUodGhpcyksYXdhaXQgdGhpcy5fdGVhcmRvd24oKSl9YXN5bmMgX3RlYXJkb3duKCl7YXdhaXQgdGhpcy5fd2F0Y2hlcj8uY2xvc2UoKS5maW5hbGx5KCgpPT57dGhpcy5fd2F0Y2hlcj8uW1ljLnJlbGVhc2VQcm94eV0oKX0pfX0sJHJ0PWNsYXNze3N0YXRpY3tpKHRoaXMsIldlYkNvbnRhaW5lclByb2Nlc3NJbXBsIil9b3V0cHV0O2lucHV0O2V4aXQ7X3Byb2Nlc3M7c3Rkb3V0O3N0ZGVycjtjb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLm91dHB1dD10LHRoaXMuX3Byb2Nlc3M9ZSx0aGlzLmlucHV0PW5ldyBXcml0YWJsZVN0cmVhbSh7d3JpdGU6aShuPT57dGhpcy5fZ2V0UHJvY2VzcygpPy53cml0ZShuKS5jYXRjaCgoKT0+e30pfSwid3JpdGUiKX0pLHRoaXMuZXhpdD10aGlzLl9vbkV4aXQoKSx0aGlzLnN0ZG91dD1hLHRoaXMuc3RkZXJyPXJ9a2lsbCgpe3RoaXMuX3Byb2Nlc3M/LmtpbGwoKX1yZXNpemUoZSl7dGhpcy5fZ2V0UHJvY2VzcygpPy5yZXNpemUoZSl9YXN5bmMgX29uRXhpdCgpe3RyeXtyZXR1cm4gYXdhaXQgdGhpcy5fcHJvY2Vzcy5vbkV4aXR9ZmluYWxseXt0aGlzLl9wcm9jZXNzPy5bWWMucmVsZWFzZVByb3h5XSgpLHRoaXMuX3Byb2Nlc3M9bnVsbH19X2dldFByb2Nlc3MoKXtyZXR1cm4gdGhpcy5fcHJvY2Vzcz09bnVsbCYmY29uc29sZS53YXJuKCJUaGlzIHByb2Nlc3MgYWxyZWFkeSBleGl0ZWQiKSx0aGlzLl9wcm9jZXNzfX0sRHJ0PWNsYXNze3N0YXRpY3tpKHRoaXMsIkZpbGVTeXN0ZW1BUElDbGllbnQiKX1fZnM7X3dhdGNoZXJzPW5ldyBTZXQoW10pO2NvbnN0cnVjdG9yKGUpe3RoaXMuX2ZzPWV9cm0oLi4uZSl7cmV0dXJuIHRoaXMuX2ZzLnJtKC4uLmUpfWFzeW5jIHJlYWRGaWxlKGUsdCl7cmV0dXJuIGF3YWl0IHRoaXMuX2ZzLnJlYWRGaWxlKGUsdCl9YXN5bmMgcmVuYW1lKGUsdCl7cmV0dXJuIGF3YWl0IHRoaXMuX2ZzLnJlbmFtZShlLHQpfWFzeW5jIHdyaXRlRmlsZShlLHQsYSl7aWYodCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpe2xldCByPXQuYnVmZmVyLnNsaWNlKHQuYnl0ZU9mZnNldCx0LmJ5dGVPZmZzZXQrdC5ieXRlTGVuZ3RoKTt0PVljLnRyYW5zZmVyKG5ldyBVaW50OEFycmF5KHIpLFtyXSl9YXdhaXQgdGhpcy5fZnMud3JpdGVGaWxlKGUsdCxhKX1hc3luYyByZWFkZGlyKGUsdCl7bGV0IGE9YXdhaXQgdGhpcy5fZnMucmVhZGRpcihlLHQpO3JldHVybiB5UWEoYSl8fHdRYShhKT9hOmEubWFwKG49Pm5ldyBDcnQobi5uYW1lLG5bIlN5bWJvbCh0eXBlKSJdKSl9YXN5bmMgbWtkaXIoZSx0KXtyZXR1cm4gYXdhaXQgdGhpcy5fZnMubWtkaXIoZSx0KX13YXRjaChlLHQsYSl7cmV0dXJuIHR5cGVvZiB0PT0iZnVuY3Rpb24iJiYoYT10LHQ9bnVsbCksbmV3IFRydCh0aGlzLGUsdCxhKX1hc3luYyBfdGVhcmRvd24oKXt0aGlzLl9mc1tZYy5yZWxlYXNlUHJveHldKCksYXdhaXQgUHJvbWlzZS5hbGwoWy4uLnRoaXMuX3dhdGNoZXJzXS5tYXAoZT0+ZS5jbG9zZSgpKSl9fTtpKHZRYSwidW5zeW5jaHJvbml6ZWRCb290Iik7aShMcnQsImJpbmFyeUxpc3RlbmVyIik7aSh2MWUsInByb3h5TGlzdGVuZXIiKTtpKHhRYSwic2VydmVyRmFjdG9yeSIpO2koeVFhLCJpc1N0cmluZ0FycmF5Iik7aSh3UWEsImlzVHlwZWRBcnJheUNvbGxlY3Rpb24iKTtpKGtRYSwic3RyZWFtV2l0aFB1c2giKTtpKFNRYSwic3luY1N1YnNjcmlwdGlvbiIpfSk7dmFyIFRnLFNnYT1nKCgpPT57RXJ0KCk7VGc9Y2xhc3Mgc3tzdGF0aWN7aSh0aGlzLCJXZWJDb250YWluZXJFbnZpcm9ubWVudCIpfXN0YXRpYyBzaGFyZWRDb250YWluZXI9bnVsbDtzdGF0aWMgYm9vdFByb21pc2U9bnVsbDtfcmVhZHk9ITE7dHlwZT0id2ViY29udGFpbmVyIjtnZXQgcmVhZHkoKXtyZXR1cm4gdGhpcy5fcmVhZHl9Z2V0IGNvbnRhaW5lcigpe3JldHVybiBzLnNoYXJlZENvbnRhaW5lcn1hc3luYyBpbml0KCl7aWYoISh0aGlzLl9yZWFkeSYmcy5zaGFyZWRDb250YWluZXIpKXtpZihzLmJvb3RQcm9taXNlKXthd2FpdCBzLmJvb3RQcm9taXNlLHRoaXMuX3JlYWR5PSEwO3JldHVybn1pZihzLnNoYXJlZENvbnRhaW5lcil7dGhpcy5fcmVhZHk9ITA7cmV0dXJufWlmKHR5cGVvZiBTaGFyZWRBcnJheUJ1ZmZlcj4idSIpdGhyb3cgbmV3IEVycm9yKGBXZWJDb250YWluZXIgcmVxdWlyZXMgU2hhcmVkQXJyYXlCdWZmZXIgd2hpY2ggaXMgbm90IGF2YWlsYWJsZS4gRW5zdXJlIHlvdXIgc2VydmVyIHNlbmRzIHRoZXNlIGhlYWRlcnM6CiAgQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3k6IHNhbWUtb3JpZ2luCiAgQ3Jvc3MtT3JpZ2luLUVtYmVkZGVyLVBvbGljeTogcmVxdWlyZS1jb3JwYCk7cy5ib290UHJvbWlzZT1DZy5ib290KCk7dHJ5e3Muc2hhcmVkQ29udGFpbmVyPWF3YWl0IHMuYm9vdFByb21pc2UsdGhpcy5fcmVhZHk9ITB9Y2F0Y2goZSl7dGhyb3cgcy5ib290UHJvbWlzZT1udWxsLGV9fX1hc3luYyBkZXN0cm95KCl7cy5zaGFyZWRDb250YWluZXImJihzLnNoYXJlZENvbnRhaW5lci50ZWFyZG93bigpLHMuc2hhcmVkQ29udGFpbmVyPW51bGwscy5ib290UHJvbWlzZT1udWxsLHRoaXMuX3JlYWR5PSExKX1hc3luYyByZWFkRmlsZShlKXtyZXR1cm4gdGhpcy5lbnN1cmVSZWFkeSgpLGF3YWl0IHRoaXMuY29udGFpbmVyLmZzLnJlYWRGaWxlKGUsInV0Zi04Iil9YXN5bmMgd3JpdGVGaWxlKGUsdCl7dGhpcy5lbnN1cmVSZWFkeSgpLGF3YWl0IHRoaXMuY29udGFpbmVyLmZzLndyaXRlRmlsZShlLHQsInV0Zi04Iil9YXN5bmMgcmVhZERpcihlKXtyZXR1cm4gdGhpcy5lbnN1cmVSZWFkeSgpLChhd2FpdCB0aGlzLmNvbnRhaW5lci5mcy5yZWFkZGlyKGUse3dpdGhGaWxlVHlwZXM6ITB9KSkubWFwKGE9Pih7dHlwZTphLmlzRGlyZWN0b3J5KCk/ImRpcmVjdG9yeSI6ImZpbGUiLG5hbWU6YS5uYW1lLHBhdGg6ZT09PSIvIj9gLyR7YS5uYW1lfWA6YCR7ZX0vJHthLm5hbWV9YH0pKX1hc3luYyBta2RpcihlKXt0aGlzLmVuc3VyZVJlYWR5KCksYXdhaXQgdGhpcy5jb250YWluZXIuZnMubWtkaXIoZSx7cmVjdXJzaXZlOiEwfSl9YXN5bmMgcm0oZSx0KXt0aGlzLmVuc3VyZVJlYWR5KCksYXdhaXQgdGhpcy5jb250YWluZXIuZnMucm0oZSx7cmVjdXJzaXZlOnQ/LnJlY3Vyc2l2ZT8/ITF9KX1hc3luYyBleGlzdHMoZSl7dGhpcy5lbnN1cmVSZWFkeSgpO3RyeXtyZXR1cm4gYXdhaXQgdGhpcy5jb250YWluZXIuZnMucmVhZEZpbGUoZSksITB9Y2F0Y2h7dHJ5e3JldHVybiBhd2FpdCB0aGlzLmNvbnRhaW5lci5mcy5yZWFkZGlyKGUpLCEwfWNhdGNoe3JldHVybiExfX19d2F0Y2goZSx0LGEpe3RoaXMuZW5zdXJlUmVhZHkoKTtsZXQgcj10aGlzLmNvbnRhaW5lci5mcy53YXRjaChlLHtyZWN1cnNpdmU6YT8ucmVjdXJzaXZlPz8hMX0sdCk7cmV0dXJue3N0b3A6aSgoKT0+ci5jbG9zZSgpLCJzdG9wIil9fWFzeW5jIHNwYXduKGUsdD1bXSl7dGhpcy5lbnN1cmVSZWFkeSgpO2xldCBhPWF3YWl0IHRoaXMuY29udGFpbmVyLnNwYXduKGUsdCk7cmV0dXJue291dHB1dDphLm91dHB1dCxpbnB1dDphLmlucHV0LGV4aXQ6YS5leGl0LGtpbGw6aSgoKT0+YS5raWxsKCksImtpbGwiKX19Z2V0U2hlbGxDb21tYW5kKCl7cmV0dXJue2NvbW1hbmQ6ImpzaCIsbGFiZWw6ImpzaCIscHJvbXB0OiJ+LyJ9fWFzeW5jIG1vdW50KGUpe3RoaXMuZW5zdXJlUmVhZHkoKSxhd2FpdCB0aGlzLmNvbnRhaW5lci5tb3VudChlKX1nZXRDb250YWluZXIoKXtyZXR1cm4gdGhpcy5lbnN1cmVSZWFkeSgpLHRoaXMuY29udGFpbmVyfWVuc3VyZVJlYWR5KCl7aWYoIXRoaXMuX3JlYWR5fHwhdGhpcy5jb250YWluZXIpdGhyb3cgbmV3IEVycm9yKCJXZWJDb250YWluZXJFbnZpcm9ubWVudCBub3QgaW5pdGlhbGl6ZWQuIENhbGwgaW5pdCgpIGZpcnN0LiIpfX19KTt2YXIgX2dhPWcoKCk9PntTZ2EoKX0pO3ZhciB4MWU9ZygoKT0+e1Y4YSgpO19nYSgpfSk7dmFyIE1nYT1nKCgpPT57QmV0KCl9KTt2YXIgclEsUHJ0PWcoKCk9PntyUT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJUZXJtaW5hbFRhYk1hbmFnZXIiKX10YWJzPW5ldyBNYXA7dGFiQ291bnRlcj0wO3h0ZXJtQnVuZGxlPW51bGw7eHRlcm1GaXRBZGRvbkJ1bmRsZT1udWxsO3NldFh0ZXJtTW9kdWxlcyhlLHQpe3RoaXMueHRlcm1CdW5kbGU9ZSx0aGlzLnh0ZXJtRml0QWRkb25CdW5kbGU9dH1nZW5lcmF0ZVRhYklkKCl7cmV0dXJuIHRoaXMudGFiQ291bnRlcisrLGB0ZXJtaW5hbC0ke3RoaXMudGFiQ291bnRlcn0tJHtEYXRlLm5vdygpfWB9Z2V0RGVmYXVsdExhYmVsKGUsdCl7c3dpdGNoKGUpe2Nhc2Uic2hlbGwiOnJldHVybiJiYXNoIjtjYXNlInNjcmlwdCI6cmV0dXJuIHQ/LnNjcmlwdE5hbWV8fCJzY3JpcHQiO2Nhc2UicGFja2FnZS11cGRhdGUiOnJldHVybiB0Py5wYWNrYWdlTmFtZT9gdXBkYXRlICR7dC5wYWNrYWdlTmFtZX1gOiJ1cGRhdGUiO2Nhc2UiY3VzdG9tIjpyZXR1cm4gdD8uY29tbWFuZHx8InByb2Nlc3MiO2RlZmF1bHQ6cmV0dXJuInRlcm1pbmFsIn19Z2V0RGVmYXVsdEljb24oZSl7c3dpdGNoKGUpe2Nhc2Uic2hlbGwiOnJldHVybiJsdWNpZGU6dGVybWluYWwiO2Nhc2Uic2NyaXB0IjpyZXR1cm4ibHVjaWRlOnBsYXkiO2Nhc2UicGFja2FnZS11cGRhdGUiOnJldHVybiJsdWNpZGU6cGFja2FnZUNoZWNrIjtjYXNlImN1c3RvbSI6cmV0dXJuImx1Y2lkZTpjb2RlIjtkZWZhdWx0OnJldHVybiJsdWNpZGU6dGVybWluYWwifX1nZXRUZXJtaW5hbFRoZW1lKGUpe3JldHVybiBlP3tiYWNrZ3JvdW5kOiIjZmZmZmZmIixmb3JlZ3JvdW5kOiIjMzMzMzMzIixjdXJzb3I6IiMzMzMzMzMiLGN1cnNvckFjY2VudDoiI2ZmZmZmZiIsc2VsZWN0aW9uOiJyZ2JhKDAsIDAsIDAsIDAuMikiLGJsYWNrOiIjMDAwMDAwIixyZWQ6IiNjZDMxMzEiLGdyZWVuOiIjMDBiYzAwIix5ZWxsb3c6IiM5NDk4MDAiLGJsdWU6IiMwNDUxYTUiLG1hZ2VudGE6IiNiYzA1YmMiLGN5YW46IiMwNTk4YmMiLHdoaXRlOiIjNTU1NTU1IixicmlnaHRCbGFjazoiIzY2NjY2NiIsYnJpZ2h0UmVkOiIjY2QzMTMxIixicmlnaHRHcmVlbjoiIzE0Y2UxNCIsYnJpZ2h0WWVsbG93OiIjYjViYTAwIixicmlnaHRCbHVlOiIjMDQ1MWE1IixicmlnaHRNYWdlbnRhOiIjYmMwNWJjIixicmlnaHRDeWFuOiIjMDU5OGJjIixicmlnaHRXaGl0ZToiI2E1YTVhNSJ9OntiYWNrZ3JvdW5kOiIjMDAwMDAwIixmb3JlZ3JvdW5kOiIjZmZmZmZmIixjdXJzb3I6IiNmZmZmZmYiLGN1cnNvckFjY2VudDoiIzAwMDAwMCIsc2VsZWN0aW9uOiJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMikifX1jcmVhdGVUYWIoZSx0KXtpZighdGhpcy54dGVybUJ1bmRsZXx8IXRoaXMueHRlcm1GaXRBZGRvbkJ1bmRsZSl0aHJvdyBuZXcgRXJyb3IoIlRlcm1pbmFsVGFiTWFuYWdlcjogeHRlcm0gbW9kdWxlcyBub3QgaW5pdGlhbGl6ZWQuIENhbGwgc2V0WHRlcm1Nb2R1bGVzKCkgZmlyc3QuIik7bGV0IGE9dGhpcy5nZW5lcmF0ZVRhYklkKCkscj1lLnR5cGUsbj1uZXcgdGhpcy54dGVybUJ1bmRsZS5UZXJtaW5hbCh7Y29udmVydEVvbDohMCxjdXJzb3JCbGluazohMCx0aGVtZTp0aGlzLmdldFRlcm1pbmFsVGhlbWUodCksZm9udEZhbWlseTonTWVubG8sIE1vbmFjbywgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlJyxmb250U2l6ZToxMyxsaW5lSGVpZ2h0OjEuMn0pLG89bmV3IHRoaXMueHRlcm1GaXRBZGRvbkJ1bmRsZS5GaXRBZGRvbjtuLmxvYWRBZGRvbihvKTtsZXQgbD17aWQ6YSxsYWJlbDplLmxhYmVsfHx0aGlzLmdldERlZmF1bHRMYWJlbChyLGUubWV0YWRhdGEpLGljb25OYW1lOmUuaWNvbk5hbWV8fHRoaXMuZ2V0RGVmYXVsdEljb24ociksdHlwZTpyLGNsb3NlYWJsZTplLmNsb3NlYWJsZT8/ciE9PSJzaGVsbCIsdGVybWluYWw6bixmaXRBZGRvbjpvLHByb2Nlc3M6bnVsbCxpbnB1dFdyaXRlcjpudWxsLGV4aXRlZDohMSxleGl0Q29kZTpudWxsLGNyZWF0ZWRBdDpEYXRlLm5vdygpLG1ldGFkYXRhOmUubWV0YWRhdGF9O3JldHVybiB0aGlzLnRhYnMuc2V0KGEsbCksbH1nZXRUYWIoZSl7cmV0dXJuIHRoaXMudGFicy5nZXQoZSl9Z2V0QWxsVGFicygpe3JldHVybiBBcnJheS5mcm9tKHRoaXMudGFicy52YWx1ZXMoKSkuc29ydCgoZSx0KT0+ZS5jcmVhdGVkQXQtdC5jcmVhdGVkQXQpfWdldFRhYkNvdW50KCl7cmV0dXJuIHRoaXMudGFicy5zaXplfWhhc1RhYihlKXtyZXR1cm4gdGhpcy50YWJzLmhhcyhlKX1jbG9zZVRhYihlKXtsZXQgdD10aGlzLnRhYnMuZ2V0KGUpO2lmKCF0KXJldHVybiExO2lmKHQucHJvY2VzcyYmIXQuZXhpdGVkKXRyeXt0LnByb2Nlc3Mua2lsbCgpfWNhdGNoKGEpe2NvbnNvbGUud2FybigiRmFpbGVkIHRvIGtpbGwgcHJvY2VzczoiLGEpfXRyeXt0LnRlcm1pbmFsLmRpc3Bvc2UoKX1jYXRjaChhKXtjb25zb2xlLndhcm4oIkZhaWxlZCB0byBkaXNwb3NlIHRlcm1pbmFsOiIsYSl9cmV0dXJuIHRoaXMudGFicy5kZWxldGUoZSksITB9cmVuYW1lVGFiKGUsdCl7bGV0IGE9dGhpcy50YWJzLmdldChlKTtyZXR1cm4gYT8oYS5sYWJlbD10LCEwKTohMX1tYXJrVGFiRXhpdGVkKGUsdCl7bGV0IGE9dGhpcy50YWJzLmdldChlKTthJiYoYS5leGl0ZWQ9ITAsYS5leGl0Q29kZT10KX1zZXRUYWJQcm9jZXNzKGUsdCxhKXtsZXQgcj10aGlzLnRhYnMuZ2V0KGUpO3ImJihyLnByb2Nlc3M9dCxyLmlucHV0V3JpdGVyPWEpfXVwZGF0ZUFsbFRoZW1lcyhlKXtsZXQgdD10aGlzLmdldFRlcm1pbmFsVGhlbWUoZSk7Zm9yKGxldCBhIG9mIHRoaXMudGFicy52YWx1ZXMoKSlhLnRlcm1pbmFsLm9wdGlvbnMudGhlbWU9dH1kaXNwb3NlQWxsKCl7Zm9yKGxldFtlXW9mIHRoaXMudGFicyl0aGlzLmNsb3NlVGFiKGUpO3RoaXMudGFicy5jbGVhcigpfX19KTt2YXIgemdhPXt9O3l0KHpnYSx7RGVlc1dvcmtzcGFjZVRlcm1pbmFsOigpPT5JcnR9KTt2YXIgSmgsVm4sSXJ0LG9RPWcoKCk9PntwZSgpO2t0KCk7cHQoKTt4MWUoKTtVYSgpO2UxZSgpO1BydCgpO2Z1KCk7Smg9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LFZuPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxJcnQ9KCgpPT57bGV0IHM9W25lKCJkZWVzLXdvcmtzcGFjZS10ZXJtaW5hbCIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdO3ZhciBIPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzV29ya3NwYWNlVGVybWluYWwiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgaz10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOk9iamVjdH0pXSxwPVtMKCldLGM9W0woKV0seD1bTCh7dHlwZTpOdW1iZXJ9KV0seT1bTCh7dHlwZTpCb29sZWFufSldLE49W1koKV0sTz1bWSgpXSxKaCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImV4ZWN1dGlvbkVudmlyb25tZW50IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJleGVjdXRpb25FbnZpcm9ubWVudCJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLmV4ZWN1dGlvbkVudmlyb25tZW50LCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MuZXhlY3V0aW9uRW52aXJvbm1lbnQ9SX0sInNldCIpfSxtZXRhZGF0YTprfSxvLGwpLEpoKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2V0dXBDb21tYW5kIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJzZXR1cENvbW1hbmQiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5zZXR1cENvbW1hbmQsImdldCIpLHNldDppKChTLEkpPT57Uy5zZXR1cENvbW1hbmQ9SX0sInNldCIpfSxtZXRhZGF0YTprfSxkLHUpLEpoKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZW52aXJvbm1lbnRWYXJpYWJsZXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+ImVudmlyb25tZW50VmFyaWFibGVzImluIFMsImhhcyIpLGdldDppKFM9PlMuZW52aXJvbm1lbnRWYXJpYWJsZXMsImdldCIpLHNldDppKChTLEkpPT57Uy5lbnZpcm9ubWVudFZhcmlhYmxlcz1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LGIsdiksSmgodGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0YWJCYXJXaWR0aCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4idGFiQmFyV2lkdGgiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy50YWJCYXJXaWR0aCwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLnRhYkJhcldpZHRoPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sbSxmKSxKaCh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dUYWJCYXIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+InNob3dUYWJCYXIiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5zaG93VGFiQmFyLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1Muc2hvd1RhYkJhcj1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LE0seiksSmgodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0YWJzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJ0YWJzImluIFMsImhhcyIpLGdldDppKFM9PlMudGFicywiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLnRhYnM9SX0sInNldCIpfSxtZXRhZGF0YTprfSxDLF8pLEpoKHRoaXMsbnVsbCxPLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYWN0aXZlVGFiSWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+ImFjdGl2ZVRhYklkImluIFMsImhhcyIpLGdldDppKFM9PlMuYWN0aXZlVGFiSWQsImdldCIpLHNldDppKChTLEkpPT57Uy5hY3RpdmVUYWJJZD1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LCQsRSksSmgobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6a30sbnVsbCx0KSxIPWE9ZS52YWx1ZSxrJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmt9KX1zdGF0aWMgZGVtbz1pKCgpPT57bGV0IGs9bmV3IFRnO3JldHVybiB3YDxkZWVzLXdvcmtzcGFjZS10ZXJtaW5hbCAuZXhlY3V0aW9uRW52aXJvbm1lbnQ9JHtrfT48L2RlZXMtd29ya3NwYWNlLXRlcm1pbmFsPmB9LCJkZW1vIik7c3RhdGljIGRlbW9Hcm91cHM9WyJXb3Jrc3BhY2UiXTtyZXNpemVPYnNlcnZlcjt0YWJNYW5hZ2VyOyNlPVZuKHRoaXMsbyxudWxsKTtnZXQgZXhlY3V0aW9uRW52aXJvbm1lbnQoKXtyZXR1cm4gdGhpcy4jZX1zZXQgZXhlY3V0aW9uRW52aXJvbm1lbnQoayl7dGhpcy4jZT1rfSN0PShWbih0aGlzLGwpLFZuKHRoaXMsZCwiIikpO2dldCBzZXR1cENvbW1hbmQoKXtyZXR1cm4gdGhpcy4jdH1zZXQgc2V0dXBDb21tYW5kKGspe3RoaXMuI3Q9a30jYT0oVm4odGhpcyx1KSxWbih0aGlzLGIse30pKTtnZXQgZW52aXJvbm1lbnRWYXJpYWJsZXMoKXtyZXR1cm4gdGhpcy4jYX1zZXQgZW52aXJvbm1lbnRWYXJpYWJsZXMoayl7dGhpcy4jYT1rfSNzPShWbih0aGlzLHYpLFZuKHRoaXMsbSwxNjApKTtnZXQgdGFiQmFyV2lkdGgoKXtyZXR1cm4gdGhpcy4jc31zZXQgdGFiQmFyV2lkdGgoayl7dGhpcy4jcz1rfSNpPShWbih0aGlzLGYpLFZuKHRoaXMsTSwhMCkpO2dldCBzaG93VGFiQmFyKCl7cmV0dXJuIHRoaXMuI2l9c2V0IHNob3dUYWJCYXIoayl7dGhpcy4jaT1rfSNyPShWbih0aGlzLHopLFZuKHRoaXMsQyxbXSkpO2dldCB0YWJzKCl7cmV0dXJuIHRoaXMuI3J9c2V0IHRhYnMoayl7dGhpcy4jcj1rfSNvPShWbih0aGlzLF8pLFZuKHRoaXMsJCxudWxsKSk7Z2V0IGFjdGl2ZVRhYklkKCl7cmV0dXJuIHRoaXMuI299c2V0IGFjdGl2ZVRhYklkKGspe3RoaXMuI289a310ZXJtaW5hbFRoZW1lU3Vic2NyaXB0aW9uPShWbih0aGlzLEUpLG51bGwpO2lzQnJpZ2h0PSExO3Rlcm1pbmFsQWN0aW9uYmFyPW51bGw7ZW52aXJvbm1lbnREZWZlcnJlZD1uZXcgdXQuc21hcnRwcm9taXNlLkRlZmVycmVkO2Vudmlyb25tZW50UHJvbWlzZT10aGlzLmVudmlyb25tZW50RGVmZXJyZWQucHJvbWlzZTtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy50YWJNYW5hZ2VyPW5ldyByUSx0aGlzLnJlc2l6ZU9ic2VydmVyPW5ldyBSZXNpemVPYnNlcnZlcigoKT0+e3RoaXMuaGFuZGxlUmVzaXplKCl9KX1zdGF0aWMgc3R5bGVzPVtIZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzAwMDAwMCIpfTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgICogewogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgIC50ZXJtaW5hbC1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgIC50ZXJtaW5hbC1jb250ZW50IHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzAwMDAwMCIpfTsKICAgICAgfQoKICAgICAgI2FjdGl2ZS10ZXJtaW5hbC1jb250YWluZXIgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG1pbi1oZWlnaHQ6IDA7CiAgICAgICAgbWFyZ2luOiAyMHB4OwogICAgICB9CgogICAgICAudGVybWluYWwtY29udGVudCBkZWVzLWFjdGlvbmJhciB7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC8qIFRhYiBiYXIgb24gdGhlIHJpZ2h0IHNpZGUgKi8KICAgICAgLnRhYi1iYXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTYlKSIsImhzbCgwIDAlIDclKSIpfTsKICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4NSUpIiwiaHNsKDAgMCUgMTUlKSIpfTsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAudGFiLWJhci1oZWFkZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgcGFkZGluZzogOHB4IDEwcHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4OCUpIiwiaHNsKDAgMCUgMTIlKSIpfTsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDQ1JSkiLCJoc2woMCAwJSA1NSUpIil9OwogICAgICB9CgogICAgICAudGFiLWJhci10aXRsZSB7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICB9CgogICAgICAudGFiLWJhci1hY3Rpb25zIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGdhcDogMnB4OwogICAgICB9CgogICAgICAudGFiLWFjdGlvbiB7CiAgICAgICAgd2lkdGg6IDIycHg7CiAgICAgICAgaGVpZ2h0OiAyMnB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNTAlKSIsImhzbCgwIDAlIDYwJSkiKX07CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC50YWItYWN0aW9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgODglKSIsImhzbCgwIDAlIDE1JSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAzMCUpIiwiaHNsKDAgMCUgODAlKSIpfTsKICAgICAgfQoKICAgICAgLnRhYi1saXN0IHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgcGFkZGluZzogNHB4OwogICAgICB9CgogICAgICAudGVybWluYWwtdGFiIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgcGFkZGluZzogOHB4IDEwcHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNDUlKSIsImhzbCgwIDAlIDYwJSkiKX07CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC50ZXJtaW5hbC10YWI6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5MCUpIiwiaHNsKDAgMCUgMTIlKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDI1JSkiLCJoc2woMCAwJSA4MCUpIil9OwogICAgICB9CgogICAgICAudGVybWluYWwtdGFiLmFjdGl2ZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgMTAwJSA5NSUpIiwiaHNsKDIxMCAzMCUgMTUlKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTAgMTAwJSA0MCUpIiwiaHNsKDIxMCAxMDAlIDcwJSkiKX07CiAgICAgIH0KCiAgICAgIC50ZXJtaW5hbC10YWIuZXhpdGVkIHsKICAgICAgICBvcGFjaXR5OiAwLjc7CiAgICAgIH0KCiAgICAgIC50YWItaWNvbiB7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC50YWItaWNvbi5ydW5uaW5nIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgxNDIgNzAlIDQwJSkiLCJoc2woMTQyIDcwJSA1NSUpIil9OwogICAgICB9CgogICAgICAudGFiLWxhYmVsIHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgLmV4aXQtYmFkZ2UgewogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICBwYWRkaW5nOiAxcHggNXB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAuZXhpdC1iYWRnZS5zdWNjZXNzIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDE0MiA3MCUgOTAlKSIsImhzbCgxNDIgMzAlIDIwJSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMTQyIDcwJSAzNSUpIiwiaHNsKDE0MiA3MCUgNjAlKSIpfTsKICAgICAgfQoKICAgICAgLmV4aXQtYmFkZ2UuZXJyb3IgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCA3MCUgOTMlKSIsImhzbCgwIDMwJSAyMCUpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgNzAlIDQ1JSkiLCJoc2woMCA3MCUgNjAlKSIpfTsKICAgICAgfQoKICAgICAgLnRhYi1jbG9zZSB7CiAgICAgICAgd2lkdGg6IDE4cHg7CiAgICAgICAgaGVpZ2h0OiAxOHB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQoKICAgICAgLnRlcm1pbmFsLXRhYjpob3ZlciAudGFiLWNsb3NlIHsKICAgICAgICBvcGFjaXR5OiAwLjY7CiAgICAgIH0KCiAgICAgIC50YWItY2xvc2U6aG92ZXIgewogICAgICAgIG9wYWNpdHk6IDEgIWltcG9ydGFudDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgODUlKSIsImhzbCgwIDAlIDI1JSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCA3MCUgNTAlKSIsImhzbCgwIDcwJSA2MCUpIil9OwogICAgICB9CgogICAgICAuZW1wdHktc3RhdGUgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDUwJSkiLCJoc2woMCAwJSA1MCUpIil9OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBnYXA6IDhweDsKICAgICAgfQoKICAgICAgLyogeHRlcm0uanMgc3R5bGVzICovCiAgICAgIC54dGVybSB7CiAgICAgICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiAnbGlnYScgMDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIH0KCiAgICAgIC54dGVybS5mb2N1cywKICAgICAgLnh0ZXJtOmZvY3VzIHsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICB9CgogICAgICAueHRlcm0gLnh0ZXJtLWhlbHBlcnMgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgei1pbmRleDogNTsKICAgICAgfQoKICAgICAgLnh0ZXJtIC54dGVybS1oZWxwZXItdGV4dGFyZWEgewogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgYm9yZGVyOiAwOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBsZWZ0OiAtOTk5OWVtOwogICAgICAgIHRvcDogMDsKICAgICAgICB3aWR0aDogMDsKICAgICAgICBoZWlnaHQ6IDA7CiAgICAgICAgei1pbmRleDogLTU7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHJlc2l6ZTogbm9uZTsKICAgICAgfQoKICAgICAgLnh0ZXJtIC5jb21wb3NpdGlvbi12aWV3IHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMwMDAwMDAiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMzMzMzMzIiwiI2ZmZmZmZiIpfTsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIHotaW5kZXg6IDE7CiAgICAgIH0KCiAgICAgIC54dGVybSAuY29tcG9zaXRpb24tdmlldy5hY3RpdmUgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICAueHRlcm0gLnh0ZXJtLXZpZXdwb3J0IHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMwMDAwMDAiKX07CiAgICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsOwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB0b3A6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICB9CgogICAgICAueHRlcm0gLnh0ZXJtLXNjcmVlbiB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAueHRlcm0gLnh0ZXJtLXNjcmVlbiBjYW52YXMgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHRvcDogMDsKICAgICAgfQoKICAgICAgLnh0ZXJtIC54dGVybS1zY3JvbGwtYXJlYSB7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICB9CgogICAgICAueHRlcm0tY2hhci1tZWFzdXJlLWVsZW1lbnQgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAtOTk5OWVtOwogICAgICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7CiAgICAgIH0KCiAgICAgIC54dGVybSB7CiAgICAgICAgY3Vyc29yOiB0ZXh0OwogICAgICB9CgogICAgICAueHRlcm0uZW5hYmxlLW1vdXNlLWV2ZW50cyB7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICB9CgogICAgICAueHRlcm0ueHRlcm0tY3Vyc29yLXBvaW50ZXIgewogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQoKICAgICAgLnh0ZXJtLmNvbHVtbi1zZWxlY3QuZm9jdXMgewogICAgICAgIGN1cnNvcjogY3Jvc3NoYWlyOwogICAgICB9CgogICAgICAueHRlcm0gLnh0ZXJtLWFjY2Vzc2liaWxpdHksCiAgICAgIC54dGVybSAueHRlcm0tbWVzc2FnZSB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICB6LWluZGV4OiAxMDsKICAgICAgICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgIH0KCiAgICAgIC54dGVybSAubGl2ZS1yZWdpb24gewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBsZWZ0OiAtOTk5OXB4OwogICAgICAgIHdpZHRoOiAxcHg7CiAgICAgICAgaGVpZ2h0OiAxcHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLnh0ZXJtLWRpbSB7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICB9CgogICAgICAueHRlcm0tdW5kZXJsaW5lIHsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgICAgfQogICAgYF07cmVuZGVyKCl7bGV0IGs9dGhpcy5hY3RpdmVUYWJJZD90aGlzLnRhYk1hbmFnZXIuZ2V0VGFiKHRoaXMuYWN0aXZlVGFiSWQpOm51bGw7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9InRlcm1pbmFsLWNvbnRhaW5lciI+CiAgICAgICAgPCEtLSBNYWluIHRlcm1pbmFsIGFyZWEgLS0+CiAgICAgICAgPGRpdiBjbGFzcz0idGVybWluYWwtY29udGVudCI+CiAgICAgICAgICAke2s/d2AKICAgICAgICAgICAgPGRpdiBpZD0iYWN0aXZlLXRlcm1pbmFsLWNvbnRhaW5lciI+PC9kaXY+CiAgICAgICAgICBgOndgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVtcHR5LXN0YXRlIj4KICAgICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7Imx1Y2lkZTp0ZXJtaW5hbCJ9IGljb25TaXplPSIzMiI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgPHNwYW4+Tm8gdGVybWluYWwgb3Blbjwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgfQogICAgICAgICAgPGRlZXMtYWN0aW9uYmFyPjwvZGVlcy1hY3Rpb25iYXI+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDwhLS0gVmVydGljYWwgdGFiIGJhciBvbiB0aGUgcmlnaHQgLS0+CiAgICAgICAgJHt0aGlzLnNob3dUYWJCYXI/d2AKICAgICAgICAgIDxkaXYgY2xhc3M9InRhYi1iYXIiIHN0eWxlPSJ3aWR0aDogJHt0aGlzLnRhYkJhcldpZHRofXB4Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFiLWJhci1oZWFkZXIiPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0YWItYmFyLXRpdGxlIj5UZXJtaW5hbHM8L3NwYW4+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFiLWJhci1hY3Rpb25zIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYi1hY3Rpb24iIEBjbGljaz0ke3RoaXMuaGFuZGxlQWRkVGFifSB0aXRsZT0iTmV3IFRlcm1pbmFsIj4KICAgICAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6cGx1cyJ9IGljb25TaXplPSIxNCI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWItbGlzdCI+CiAgICAgICAgICAgICAgJHt0aGlzLnRhYnMubWFwKFM9PndgCiAgICAgICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgIGNsYXNzPSJ0ZXJtaW5hbC10YWIgJHtTLmlkPT09dGhpcy5hY3RpdmVUYWJJZD8iYWN0aXZlIjoiIn0gJHtTLmV4aXRlZD8iZXhpdGVkIjoiIn0iCiAgICAgICAgICAgICAgICAgIEBjbGljaz0keygpPT50aGlzLnN3aXRjaFRvVGFiKFMuaWQpfQogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICA8ZGVlcy1pY29uCiAgICAgICAgICAgICAgICAgICAgLmljb249JHtTLmljb25OYW1lfQogICAgICAgICAgICAgICAgICAgIGljb25TaXplPSIxNCIKICAgICAgICAgICAgICAgICAgICBjbGFzcz0idGFiLWljb24gJHtTLnByb2Nlc3MmJiFTLmV4aXRlZD8icnVubmluZyI6IiJ9IgogICAgICAgICAgICAgICAgICA+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0YWItbGFiZWwiPiR7Uy5sYWJlbH08L3NwYW4+CiAgICAgICAgICAgICAgICAgICR7Uy5leGl0ZWQ/d2AKICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZXhpdC1iYWRnZSAke1MuZXhpdENvZGU9PT0wPyJzdWNjZXNzIjoiZXJyb3IifSI+CiAgICAgICAgICAgICAgICAgICAgICAke1MuZXhpdENvZGV9CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICBgOiIifQogICAgICAgICAgICAgICAgICAke1MuY2xvc2VhYmxlP3dgCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRhYi1jbG9zZSIgQGNsaWNrPSR7ST0+dGhpcy5oYW5kbGVUYWJDbG9zZShJLFMuaWQpfT4KICAgICAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHsibHVjaWRlOngifSBpY29uU2l6ZT0iMTIiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIGApfQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIGA6IiJ9CiAgICAgIDwvZGl2PgogICAgYH1hc3luYyBmaXJzdFVwZGF0ZWQoKXtsZXQgaz1hd2FpdCB0aGlzLmRvbXRvb2xzUHJvbWlzZTt0aGlzLmlzQnJpZ2h0PWsudGhlbWVNYW5hZ2VyLmdvQnJpZ2h0Qm9vbGVhbix0aGlzLnRlcm1pbmFsVGhlbWVTdWJzY3JpcHRpb249ay50aGVtZU1hbmFnZXIudGhlbWVPYnNlcnZhYmxlLnN1YnNjcmliZShSPT57dGhpcy5pc0JyaWdodD1SLHRoaXMudGFiTWFuYWdlci51cGRhdGVBbGxUaGVtZXMoUil9KTtsZXQgUz1Rci5nZXRJbnN0YW5jZSgpLFtJLFBdPWF3YWl0IFByb21pc2UuYWxsKFtTLmxvYWRYdGVybSgpLFMubG9hZFh0ZXJtRml0QWRkb24oKV0pO3RoaXMudGFiTWFuYWdlci5zZXRYdGVybU1vZHVsZXMoSSxQKSxhd2FpdCB0aGlzLmNyZWF0ZVNoZWxsVGFiKCl9YXN5bmMgY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpfWFzeW5jIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7bGV0IGs9dGhpcy5zaGFkb3dSb290Py5nZXRFbGVtZW50QnlJZCgiYWN0aXZlLXRlcm1pbmFsLWNvbnRhaW5lciIpO2smJnRoaXMucmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKGspLHRoaXMudGVybWluYWxUaGVtZVN1YnNjcmlwdGlvbiYmKHRoaXMudGVybWluYWxUaGVtZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMudGVybWluYWxUaGVtZVN1YnNjcmlwdGlvbj1udWxsKSx0aGlzLnRhYk1hbmFnZXIuZGlzcG9zZUFsbCgpLGF3YWl0IHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCl9YXN5bmMgaGFuZGxlQWRkVGFiKCl7YXdhaXQgdGhpcy5jcmVhdGVTaGVsbFRhYigpfWhhbmRsZVRhYkNsb3NlKGssUyl7ay5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmNsb3NlVGFiKFMpfXN3aXRjaFRvVGFiKGspe2lmKGs9PT10aGlzLmFjdGl2ZVRhYklkKXJldHVybjtsZXQgUz10aGlzLnRhYk1hbmFnZXIuZ2V0VGFiKGspO2lmKCFTKXJldHVybjtsZXQgST10aGlzLmFjdGl2ZVRhYklkO3RoaXMuYWN0aXZlVGFiSWQmJnRoaXMuZGV0YWNoQWN0aXZlVGVybWluYWwoKSx0aGlzLmFjdGl2ZVRhYklkPWssdGhpcy50YWJzPXRoaXMudGFiTWFuYWdlci5nZXRBbGxUYWJzKCksdGhpcy51cGRhdGVDb21wbGV0ZS50aGVuKCgpPT57dGhpcy5hdHRhY2hUZXJtaW5hbFRvQ29udGFpbmVyKFMpLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInRhYi1zd2l0Y2hlZCIse2J1YmJsZXM6ITAsY29tcG9zZWQ6ITAsZGV0YWlsOnt0YWJJZDprLHByZXZpb3VzVGFiSWQ6SX19KSl9KX1kZXRhY2hBY3RpdmVUZXJtaW5hbCgpe2xldCBrPXRoaXMuc2hhZG93Um9vdD8uZ2V0RWxlbWVudEJ5SWQoImFjdGl2ZS10ZXJtaW5hbC1jb250YWluZXIiKTtrJiYoay5pbm5lckhUTUw9IiIpfWF0dGFjaFRlcm1pbmFsVG9Db250YWluZXIoayl7bGV0IFM9dGhpcy5zaGFkb3dSb290Py5nZXRFbGVtZW50QnlJZCgiYWN0aXZlLXRlcm1pbmFsLWNvbnRhaW5lciIpO1MmJih0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUoUyksUy5pbm5lckhUTUw9IiIsay50ZXJtaW5hbC5vcGVuKFMpLGsuZml0QWRkb24uZml0KCksay50ZXJtaW5hbC5mb2N1cygpKX1oYW5kbGVSZXNpemUoKXtpZih0aGlzLmFjdGl2ZVRhYklkKXtsZXQgaz10aGlzLnRhYk1hbmFnZXIuZ2V0VGFiKHRoaXMuYWN0aXZlVGFiSWQpO2smJmsuZml0QWRkb24uZml0KCl9fWFzeW5jIHNwYXduUHJvY2Vzc0ZvclRhYihrLFMsST1bXSl7aWYoIXRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQpe2sudGVybWluYWwud3JpdGUoIlx4MUJbMzFtIiksay50ZXJtaW5hbC53cml0ZShgXHUyNzRDIE5vIGV4ZWN1dGlvbiBlbnZpcm9ubWVudCBhdmFpbGFibGUuXHIKYCksay50ZXJtaW5hbC53cml0ZSgiXHgxQlswbSIpO3JldHVybn10cnl7dGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5yZWFkeXx8KGsudGVybWluYWwud3JpdGUoYEluaXRpYWxpemluZyBlbnZpcm9ubWVudC4uLlxyCmApLGF3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQuaW5pdCgpKTtsZXQgUD1hd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LnNwYXduKFMsSSk7UC5vdXRwdXQucGlwZVRvKG5ldyBXcml0YWJsZVN0cmVhbSh7d3JpdGU6aShLPT57ay50ZXJtaW5hbC53cml0ZShLKX0sIndyaXRlIil9KSk7bGV0IFI9UC5pbnB1dC5nZXRXcml0ZXIoKTtrLnRlcm1pbmFsLm9uRGF0YShLPT57Ui53cml0ZShLKX0pLHRoaXMudGFiTWFuYWdlci5zZXRUYWJQcm9jZXNzKGsuaWQsUCxSKSx0aGlzLnRhYnM9dGhpcy50YWJNYW5hZ2VyLmdldEFsbFRhYnMoKSxQLmV4aXQudGhlbihLPT57dGhpcy5oYW5kbGVQcm9jZXNzRXhpdChrLmlkLEspfSl9Y2F0Y2goUCl7ay50ZXJtaW5hbC53cml0ZSgiXHgxQlszMW0iKSxrLnRlcm1pbmFsLndyaXRlKGBcdTI3NEMgRmFpbGVkIHRvIHNwYXduIHByb2Nlc3M6ICR7UH1ccgpgKSxrLnRlcm1pbmFsLndyaXRlKCJceDFCWzBtIiksY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIHNwYXduIHByb2Nlc3M6IixQKX19YXN5bmMgZ2V0U2hlbGxDb21tYW5kKCl7cmV0dXJuIHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQmJiF0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LnJlYWR5JiZhd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LmluaXQoKSx0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50Py5nZXRTaGVsbENvbW1hbmQ/YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5nZXRTaGVsbENvbW1hbmQoKTp7Y29tbWFuZDoianNoIixsYWJlbDoianNoIixwcm9tcHQ6In4vIn19aGFuZGxlUHJvY2Vzc0V4aXQoayxTKXtsZXQgST10aGlzLnRhYk1hbmFnZXIuZ2V0VGFiKGspO2lmKCFJKXJldHVybjt0aGlzLnRhYk1hbmFnZXIubWFya1RhYkV4aXRlZChrLFMpO2xldCBQPVM9PT0wP2BccgpceDFCWzMybVtQcm9jZXNzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHldXHgxQlswbVxyCmA6YFxyClx4MUJbMzFtW1Byb2Nlc3MgZXhpdGVkIHdpdGggY29kZSAke1N9XVx4MUJbMG1ccgpgO0kudGVybWluYWwud3JpdGUoUCksdGhpcy50YWJzPXRoaXMudGFiTWFuYWdlci5nZXRBbGxUYWJzKCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgicHJvY2Vzcy1jb21wbGV0ZSIse2J1YmJsZXM6ITAsY29tcG9zZWQ6ITAsZGV0YWlsOnt0YWJJZDprLGV4aXRDb2RlOlN9fSkpLEkuY2xvc2VhYmxlJiZ0aGlzLnNob3dFeGl0ZWRUYWJBY3Rpb25iYXIoayxJLmxhYmVsLFMpfWFzeW5jIHNob3dFeGl0ZWRUYWJBY3Rpb25iYXIoayxTLEkpe2xldCBQPUk9PT0wOyhhd2FpdCB0aGlzLnNob3dBY3Rpb25iYXIoe21lc3NhZ2U6UD9gIiR7U30iIGNvbXBsZXRlZC4gQ2xvc2UgdGFiP2A6YCIke1N9IiBleGl0ZWQgKGNvZGUgJHtJfSkuIENsb3NlIHRhYj9gLHR5cGU6UD8iaW5mbyI6Indhcm5pbmciLGljb246UD8ibHVjaWRlOmNoZWNrQ2lyY2xlIjoibHVjaWRlOmFsZXJ0VHJpYW5nbGUiLGFjdGlvbnM6W3tpZDoiY2xvc2UiLGxhYmVsOiJDbG9zZSBUYWIiLHByaW1hcnk6ITB9LHtpZDoia2VlcCIsbGFiZWw6IktlZXAgT3BlbiJ9XSx0aW1lb3V0OntkdXJhdGlvbjoxZTQsZGVmYXVsdEFjdGlvbklkOiJjbG9zZSJ9LGRpc21pc3NpYmxlOiEwfSkpLmFjdGlvbklkPT09ImNsb3NlIiYmdGhpcy5jbG9zZVRhYihrKX1hc3luYyBjcmVhdGVTaGVsbFRhYihrKXtsZXQgUz1hd2FpdCB0aGlzLmdldFNoZWxsQ29tbWFuZCgpLEk9dGhpcy50YWJNYW5hZ2VyLmNyZWF0ZVRhYih7dHlwZToic2hlbGwiLGxhYmVsOmt8fGAke1MubGFiZWx8fFMuY29tbWFuZH0gJHt0aGlzLnRhYk1hbmFnZXIuZ2V0VGFiQ291bnQoKSsxfWAsY2xvc2VhYmxlOnRoaXMudGFiTWFuYWdlci5nZXRUYWJDb3VudCgpPjB9LHRoaXMuaXNCcmlnaHQpO3JldHVybiB0aGlzLnRhYnM9dGhpcy50YWJNYW5hZ2VyLmdldEFsbFRhYnMoKSx0aGlzLnN3aXRjaFRvVGFiKEkuaWQpLGF3YWl0IHRoaXMudXBkYXRlQ29tcGxldGUsYXdhaXQgdGhpcy5zcGF3blByb2Nlc3NGb3JUYWIoSSxTLmNvbW1hbmQsUy5hcmdzfHxbXSksdGhpcy50YWJNYW5hZ2VyLmdldFRhYkNvdW50KCk9PT0xJiZ0aGlzLnNldHVwQ29tbWFuZCYmKGF3YWl0IHRoaXMud2FpdEZvclByb21wdChJLnRlcm1pbmFsLFMucHJvbXB0fHwifi8iKSxJLmlucHV0V3JpdGVyJiZJLmlucHV0V3JpdGVyLndyaXRlKHRoaXMuc2V0dXBDb21tYW5kKSksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgidGFiLWNyZWF0ZWQiLHtidWJibGVzOiEwLGNvbXBvc2VkOiEwLGRldGFpbDp7dGFiSWQ6SS5pZH19KSksSS5pZH1hc3luYyBjcmVhdGVQcm9jZXNzVGFiKGspe2xldCBTPXRoaXMudGFiTWFuYWdlci5jcmVhdGVUYWIoayx0aGlzLmlzQnJpZ2h0KTtyZXR1cm4gdGhpcy50YWJzPXRoaXMudGFiTWFuYWdlci5nZXRBbGxUYWJzKCksay5zd2l0Y2hUb1RhYiE9PSExJiZ0aGlzLnN3aXRjaFRvVGFiKFMuaWQpLGF3YWl0IHRoaXMudXBkYXRlQ29tcGxldGUsay5jb21tYW5kJiZhd2FpdCB0aGlzLnNwYXduUHJvY2Vzc0ZvclRhYihTLGsuY29tbWFuZCxrLmFyZ3MpLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInRhYi1jcmVhdGVkIix7YnViYmxlczohMCxjb21wb3NlZDohMCxkZXRhaWw6e3RhYklkOlMuaWR9fSkpLFMuaWR9Z2V0QWN0aXZlVGFiKCl7cmV0dXJuIHRoaXMuYWN0aXZlVGFiSWQmJnRoaXMudGFiTWFuYWdlci5nZXRUYWIodGhpcy5hY3RpdmVUYWJJZCl8fG51bGx9Z2V0VGFicygpe3JldHVybiB0aGlzLnRhYk1hbmFnZXIuZ2V0QWxsVGFicygpfXNlbGVjdFRhYihrKXtyZXR1cm4gdGhpcy50YWJNYW5hZ2VyLmhhc1RhYihrKT8odGhpcy5zd2l0Y2hUb1RhYihrKSwhMCk6ITF9Y2xvc2VUYWIoayl7bGV0IFM9dGhpcy50YWJNYW5hZ2VyLmdldFRhYihrKTtpZighU3x8IVMuY2xvc2VhYmxlKXJldHVybiExO2lmKGs9PT10aGlzLmFjdGl2ZVRhYklkKXtsZXQgST10aGlzLnRhYk1hbmFnZXIuZ2V0QWxsVGFicygpLFA9SS5maW5kSW5kZXgoSz0+Sy5pZD09PWspLFI9SVtQKzFdfHxJW1AtMV07Uj90aGlzLnN3aXRjaFRvVGFiKFIuaWQpOih0aGlzLmFjdGl2ZVRhYklkPW51bGwsdGhpcy5kZXRhY2hBY3RpdmVUZXJtaW5hbCgpKX1yZXR1cm4gdGhpcy50YWJNYW5hZ2VyLmNsb3NlVGFiKGspLHRoaXMudGFicz10aGlzLnRhYk1hbmFnZXIuZ2V0QWxsVGFicygpLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInRhYi1jbG9zZWQiLHtidWJibGVzOiEwLGNvbXBvc2VkOiEwLGRldGFpbDp7dGFiSWQ6a319KSksITB9d3JpdGVUb1RhYihrLFMpe2xldCBJPXRoaXMudGFiTWFuYWdlci5nZXRUYWIoayk7cmV0dXJuIEk/KEkudGVybWluYWwud3JpdGUoUyksITApOiExfXNlbmRJbnB1dFRvVGFiKGssUyl7bGV0IEk9dGhpcy50YWJNYW5hZ2VyLmdldFRhYihrKTtyZXR1cm4hSXx8IUkuaW5wdXRXcml0ZXI/ITE6KEkuaW5wdXRXcml0ZXIud3JpdGUoUyksITApfWFzeW5jIHNob3dBY3Rpb25iYXIoayl7cmV0dXJuIHRoaXMudGVybWluYWxBY3Rpb25iYXJ8fCh0aGlzLnRlcm1pbmFsQWN0aW9uYmFyPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiZGVlcy1hY3Rpb25iYXIiKSksdGhpcy50ZXJtaW5hbEFjdGlvbmJhcj8uc2hvdyhrKX1hc3luYyB3YWl0Rm9yUHJvbXB0KGssUyl7cmV0dXJuIG5ldyBQcm9taXNlKEk9PntsZXQgUD1pKCgpPT57bGV0IFI9ay5idWZmZXIuYWN0aXZlO2ZvcihsZXQgSz0wO0s8Ui5sZW5ndGg7SysrKXtsZXQgVj1SLmdldExpbmUoSyk7aWYoViYmVi50cmFuc2xhdGVUb1N0cmluZygpLmluY2x1ZGVzKFMpKXtzZXRUaW1lb3V0KCgpPT57SSgpfSwxMDApO3JldHVybn19c2V0VGltZW91dChQLDEwMCl9LCJjaGVja1Byb21wdCIpO1AoKX0pfWFzeW5jIHNldEVudmlyb25tZW50VmFyaWFibGVzKGspe2lmKCF0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50KXRocm93IG5ldyBFcnJvcigiTm8gZXhlY3V0aW9uIGVudmlyb25tZW50IGF2YWlsYWJsZSIpO2xldCBTPSIiO2ZvcihsZXQgSSBpbiBrKVMrPWBleHBvcnQgJHtJfT0iJHtrW0ldfSIKYDthd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LndyaXRlRmlsZSgiL3NvdXJjZS5lbnYiLFMpfWdldEV4ZWN1dGlvbkVudmlyb25tZW50KCl7cmV0dXJuIHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnR9c3RhdGlje1ZuKGEsdCl9fTtyZXR1cm4gSD1hfSkoKX0pO3ZhciBBcnQsTnJ0LENnYSxUZ2EsJGdhLERnYSxMZ2E9ZygoKT0+e3BlKCk7dXYoKTt4aCgpO29uZSgpO3duZSgpO2JuZSgpO0E4KCk7UWNlKCk7QXJ0PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxOcnQ9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LENnYT0oKCk9PntsZXQgcz1bbmUoImRlbW8tdmlldy1kYXNoYm9hcmQiKV0sZSx0PVtdLGEscj13ZTt2YXIgbj1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVtb1ZpZXdEYXNoYm9hcmQiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgbz10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtBcnQobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6b30sbnVsbCx0KSxuPWE9ZS52YWx1ZSxvJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm99KX1zdGF0aWMgc3R5bGVzPVtoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBhZGRpbmc6IDQwcHg7CiAgICAgIH0KICAgICAgaDEgewogICAgICAgIG1hcmdpbjogMCAwIDIwcHggMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwMDAiLCIjZmZmIil9OwogICAgICB9CiAgICAgIGRlZXMtc3RhdHNncmlkIHsKICAgICAgICBtYXJnaW4tdG9wOiAyMHB4OwogICAgICB9CiAgICBgXTtzdGF0c1RpbGVzPVt7aWQ6InVzZXJzIix0aXRsZToiQWN0aXZlIFVzZXJzIix2YWx1ZToxMjM0LHR5cGU6Im51bWJlciIsaWNvbjoiZmFVc2VycyIsZGVzY3JpcHRpb246IisxNSUgZnJvbSBsYXN0IHdlZWsiLGNvbG9yOiIjMjJjNTVlIn0se2lkOiJwYWdldmlld3MiLHRpdGxlOiJQYWdlIFZpZXdzIix2YWx1ZTo1NjcwMCx0eXBlOiJudW1iZXIiLGljb246ImZhRXllIixkZXNjcmlwdGlvbjoiNTYuN2sgdG90YWwgdmlld3MiLGNvbG9yOiIjM2I4MmY2In0se2lkOiJ1cHRpbWUiLHRpdGxlOiJTeXN0ZW0gVXB0aW1lIix2YWx1ZTo4OSx1bml0OiIlIix0eXBlOiJnYXVnZSIsaWNvbjoiZmFTZXJ2ZXIiLGRlc2NyaXB0aW9uOiJMYXN0IDMwIGRheXMiLGNvbG9yOiIjMTBiOTgxIixnYXVnZU9wdGlvbnM6e21pbjowLG1heDoxMDAsdGhyZXNob2xkczpbe3ZhbHVlOjgwLGNvbG9yOiIjZWY0NDQ0In0se3ZhbHVlOjkwLGNvbG9yOiIjZjU5ZTBiIn0se3ZhbHVlOjEwMCxjb2xvcjoiIzEwYjk4MSJ9XX19LHtpZDoicmVzcG9uc2UiLHRpdGxlOiJBdmcgUmVzcG9uc2UgVGltZSIsdmFsdWU6My4yLHVuaXQ6InMiLHR5cGU6Im51bWJlciIsaWNvbjoiZmFDbG9jayIsZGVzY3JpcHRpb246Ii0wLjVzIGltcHJvdmVtZW50Iixjb2xvcjoiI2Y1OWUwYiJ9LHtpZDoicmV2ZW51ZSIsdGl0bGU6Ik1vbnRobHkgUmV2ZW51ZSIsdmFsdWU6NDg1MjAsdW5pdDoiJCIsdHlwZToidHJlbmQiLGljb246ImZhRG9sbGFyU2lnbiIsZGVzY3JpcHRpb246Iis4LjIlIGdyb3d0aCIsY29sb3I6IiMyMmM1NWUiLHRyZW5kRGF0YTpbMzVlMywzOGUzLDM3NTAwLDQxZTMsMzk4MDAsNDJlMyw0NDEwMCw0MzIwMCw0NTYwMCw0NzEwMCw0NjgwMCw0ODUyMF19LHtpZDoidHJhZmZpYyIsdGl0bGU6IlRyYWZmaWMgVHJlbmQiLHZhbHVlOjE2ODAsdHlwZToidHJlbmQiLGljb246ImZhQ2hhcnRMaW5lIixkZXNjcmlwdGlvbjoiTGFzdCA3IGRheXMiLGNvbG9yOiIjM2I4MmY2Iix0cmVuZERhdGE6WzEyMDAsMTM1MCwxMTAwLDE0NTAsMTYwMCwxNTUwLDE2ODBdfV07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxoMT5EYXNoYm9hcmQ8L2gxPgogICAgICA8cD5XZWxjb21lIHRvIHlvdXIgYXBwbGljYXRpb24gZGFzaGJvYXJkLiBIZXJlJ3MgYW4gb3ZlcnZpZXcgb2YgeW91ciBtZXRyaWNzOjwvcD4KICAgICAgPGRlZXMtc3RhdHNncmlkCiAgICAgICAgLnRpbGVzPSR7dGhpcy5zdGF0c1RpbGVzfQogICAgICAgIEB0aWxlLWFjdGlvbj0ke289Pntjb25zb2xlLmxvZygiVGlsZSBhY3Rpb246IixvLmRldGFpbCl9fQogICAgICA+PC9kZWVzLXN0YXRzZ3JpZD4KCiAgICAgIDxoMiBzdHlsZT0ibWFyZ2luLXRvcDogNDBweDsiPlJlY2VudCBBY3Rpdml0eTwvaDI+CiAgICAgIDxwPkJlbG93IGlzIGEgbG9nIG9mIHJlY2VudCBzeXN0ZW0gZXZlbnRzIGFuZCB1c2VyIGFjdGl2aXR5IHRvIGRlbW9uc3RyYXRlIHNjcm9sbGFibGUgY29udGVudC48L3A+CgogICAgICAke1t7dGltZToiMiBtaW4gYWdvIixldmVudDoiVXNlciBqb2huQGV4YW1wbGUuY29tIGxvZ2dlZCBpbiBmcm9tIDE5Mi4xNjguMS40MiIsdHlwZToiaW5mbyJ9LHt0aW1lOiI1IG1pbiBhZ28iLGV2ZW50OiJEZXBsb3ltZW50IHYzLjUyLjEgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSBvbiBwcm9kdWN0aW9uIix0eXBlOiJzdWNjZXNzIn0se3RpbWU6IjEyIG1pbiBhZ28iLGV2ZW50OiJEYXRhYmFzZSBiYWNrdXAgZmluaXNoZWQgXHUyMDE0IDIuNCBHQiBjb21wcmVzc2VkIix0eXBlOiJpbmZvIn0se3RpbWU6IjE4IG1pbiBhZ28iLGV2ZW50OiJTU0wgY2VydGlmaWNhdGUgcmVuZXdlZCBmb3IgYXBpLmV4YW1wbGUuY29tIChleHBpcmVzIDIwMjctMDQtMDMpIix0eXBlOiJzdWNjZXNzIn0se3RpbWU6IjI1IG1pbiBhZ28iLGV2ZW50OiJNZW1vcnkgdXNhZ2Ugc3Bpa2Ugb24gd29ya2VyLTAzICg5MiUpIFx1MjAxNCBhdXRvLXNjYWxlZCB0byA0IGluc3RhbmNlcyIsdHlwZToid2FybmluZyJ9LHt0aW1lOiIzMSBtaW4gYWdvIixldmVudDoiTmV3IHVzZXIgcmVnaXN0cmF0aW9uOiBzYXJhaEBjb21wYW55LmlvIix0eXBlOiJpbmZvIn0se3RpbWU6IjQ1IG1pbiBhZ28iLGV2ZW50OidTY2hlZHVsZWQgam9iICJjbGVhbnVwLXRlbXAtZmlsZXMiIGNvbXBsZXRlZCBcdTIwMTQgcmVtb3ZlZCAxLDI0NyBmaWxlcycsdHlwZToiaW5mbyJ9LHt0aW1lOiIxIGhvdXIgYWdvIixldmVudDoiQVBJIHJhdGUgbGltaXQgcmVhY2hlZCBmb3IgY2xpZW50IGFwcC1tb2JpbGUtaW9zICg0MjkgcmVzcG9uc2VzKSIsdHlwZToid2FybmluZyJ9LHt0aW1lOiIxLjUgaG91cnMgYWdvIixldmVudDoiQ0ROIGNhY2hlIHB1cmdlZCBmb3IgL2Fzc2V0cy8qIFx1MjAxNCAzNDAgb2JqZWN0cyBpbnZhbGlkYXRlZCIsdHlwZToiaW5mbyJ9LHt0aW1lOiIyIGhvdXJzIGFnbyIsZXZlbnQ6IkZhaWxlZCBsb2dpbiBhdHRlbXB0IGZvciBhZG1pbkBleGFtcGxlLmNvbSBmcm9tIDIwMy4wLjExMy41MCAoYmxvY2tlZCkiLHR5cGU6ImVycm9yIn0se3RpbWU6IjIuNSBob3VycyBhZ28iLGV2ZW50OiJXZWJob29rIGRlbGl2ZXJ5IHRvIGh0dHBzOi8vaG9va3Muc2xhY2suY29tIHN1Y2NlZWRlZCAoMjAwIE9LKSIsdHlwZToiaW5mbyJ9LHt0aW1lOiIzIGhvdXJzIGFnbyIsZXZlbnQ6J0Nyb24gam9iICJnZW5lcmF0ZS1yZXBvcnRzIiBzdGFydGVkIFx1MjAxNCBwcm9jZXNzaW5nIFExIDIwMjYgZGF0YScsdHlwZToiaW5mbyJ9LHt0aW1lOiIzLjUgaG91cnMgYWdvIixldmVudDoiTG9hZCBiYWxhbmNlciBoZWFsdGggY2hlY2s6IGFsbCA4IG5vZGVzIGhlYWx0aHkiLHR5cGU6InN1Y2Nlc3MifSx7dGltZToiNCBob3VycyBhZ28iLGV2ZW50OiJETlMgcHJvcGFnYXRpb24gY29tcGxldGUgZm9yIG5ldyBzdWJkb21haW4gc3RhZ2luZy5leGFtcGxlLmNvbSIsdHlwZToic3VjY2VzcyJ9XS5tYXAobz0+d2AKICAgICAgICA8ZGl2IHN0eWxlPSIKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgICBwYWRkaW5nOiAxMHB4IDA7CiAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgwIDAlIDkwJSkiLCJoc2woMCAwJSAxMiUpIil9OwogICAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgICI+CiAgICAgICAgICA8c3BhbiBzdHlsZT0iCiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgICAgICB3aWR0aDogMTAwcHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA1NSUpIiwiaHNsKDAgMCUgNDUlKSIpfTsKICAgICAgICAgICI+JHtvLnRpbWV9PC9zcGFuPgogICAgICAgICAgPHNwYW4gc3R5bGU9IgogICAgICAgICAgICBjb2xvcjogJHtvLnR5cGU9PT0iZXJyb3IiP2guYmRUaGVtZSgiaHNsKDAgNzIlIDUwJSkiLCJoc2woMCA3MiUgNjUlKSIpOm8udHlwZT09PSJ3YXJuaW5nIj9oLmJkVGhlbWUoImhzbCgyNSA5NSUgNTAlKSIsImhzbCgyNSA5NSUgNjMlKSIpOm8udHlwZT09PSJzdWNjZXNzIj9oLmJkVGhlbWUoImhzbCgxNDIgNzAlIDQwJSkiLCJoc2woMTQyIDcwJSA1NSUpIik6aC5iZFRoZW1lKCJoc2woMCAwJSAzMCUpIiwiaHNsKDAgMCUgNzUlKSIpfTsKICAgICAgICAgICI+JHtvLmV2ZW50fTwvc3Bhbj4KICAgICAgICA8L2Rpdj4KICAgICAgYCl9CiAgICBgfXN0YXRpY3tOcnQoYSx0KX19O3JldHVybiBuPWF9KSgpLFRnYT0oKCk9PntsZXQgcz1bbmUoImRlbW8tdmlldy1hbmFseXRpY3MiKV0sZSx0PVtdLGEscj13ZTt2YXIgbj1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVtb1ZpZXdBbmFseXRpY3MiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgbz10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtBcnQobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6b30sbnVsbCx0KSxuPWE9ZS52YWx1ZSxvJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm99KX1zdGF0aWMgc3R5bGVzPVtoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBhZGRpbmc6IDQwcHg7CiAgICAgIH0KICAgICAgaDEgewogICAgICAgIG1hcmdpbjogMCAwIDIwcHggMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwMDAiLCIjZmZmIil9OwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGgxPkFuYWx5dGljczwvaDE+CiAgICAgIDxwPlRoaXMgaXMgdGhlIGFuYWx5dGljcyB2aWV3LiBZb3UgY2FuIGFkZCBjaGFydHMgYW5kIG1ldHJpY3MgaGVyZS48L3A+CiAgICBgfXN0YXRpY3tOcnQoYSx0KX19O3JldHVybiBuPWF9KSgpLCRnYT0oKCk9PntsZXQgcz1bbmUoImRlbW8tdmlldy1zZXR0aW5ncyIpXSxlLHQ9W10sYSxyPXdlO3ZhciBuPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZW1vVmlld1NldHRpbmdzIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IG89dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7QXJ0KG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOm99LG51bGwsdCksbj1hPWUudmFsdWUsbyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpvfSl9c3RhdGljIHN0eWxlcz1baC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwYWRkaW5nOiA0MHB4OwogICAgICB9CiAgICAgIGgxIHsKICAgICAgICBtYXJnaW46IDAgMCAyMHB4IDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDAwIiwiI2ZmZiIpfTsKICAgICAgfQogICAgICAuc2V0dGluZ3Mtc2VjdGlvbiB7CiAgICAgICAgbWFyZ2luLXRvcDogMzBweDsKICAgICAgfQogICAgICAuc2V0dGluZ3Mtc2VjdGlvbiBoMiB7CiAgICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICAgIG1hcmdpbjogMCAwIDE1cHggMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzMzMiLCIjY2NjIil9OwogICAgICB9CiAgICAgIC5ob3Jpem9udGFsLWZvcm0tc2VjdGlvbiB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNWY1ZjUiLCIjMWExYTFhIil9OwogICAgICAgIHBhZGRpbmc6IDIwcHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIG1hcmdpbjogMTVweCAwOwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGgxPlNldHRpbmdzPC9oMT4KICAgICAgPHA+Q29uZmlndXJlIHlvdXIgYXBwbGljYXRpb24gc2V0dGluZ3MgYmVsb3c6PC9wPgogICAgICAKICAgICAgPGRpdiBjbGFzcz0ic2V0dGluZ3Mtc2VjdGlvbiI+CiAgICAgICAgPGgyPkdlbmVyYWwgU2V0dGluZ3M8L2gyPgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0IGtleT0iYXBwTmFtZSIgbGFiZWw9IkFwcGxpY2F0aW9uIE5hbWUiIHZhbHVlPSJNeSBBcHAiPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dCBrZXk9ImFwaUVuZHBvaW50IiBsYWJlbD0iQVBJIEVuZHBvaW50IiB2YWx1ZT0iaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20iPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgPGRlZXMtaW5wdXQtZHJvcGRvd24KICAgICAgICAgICAga2V5PSJlbnZpcm9ubWVudCIKICAgICAgICAgICAgbGFiZWw9IkVudmlyb25tZW50IgogICAgICAgICAgICAub3B0aW9ucz0ke1t7b3B0aW9uOiJEZXZlbG9wbWVudCIsa2V5OiJkZXYifSx7b3B0aW9uOiJTdGFnaW5nIixrZXk6InN0YWdpbmcifSx7b3B0aW9uOiJQcm9kdWN0aW9uIixrZXk6InByb2QifV19CiAgICAgICAgICAgIC5zZWxlY3RlZE9wdGlvbj0ke3tvcHRpb246IlByb2R1Y3Rpb24iLGtleToicHJvZCJ9fQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1kcm9wZG93bj4KICAgICAgICAgIDxkZWVzLWlucHV0LWNoZWNrYm94IGtleT0iZW5hYmxlTm90aWZpY2F0aW9ucyIgbGFiZWw9IkVuYWJsZSBOb3RpZmljYXRpb25zIiB2YWx1ZT0idHJ1ZSI+PC9kZWVzLWlucHV0LWNoZWNrYm94PgogICAgICAgICAgPGRlZXMtaW5wdXQtY2hlY2tib3gga2V5PSJlbmFibGVBbmFseXRpY3MiIGxhYmVsPSJFbmFibGUgQW5hbHl0aWNzIiB2YWx1ZT0iZmFsc2UiPjwvZGVlcy1pbnB1dC1jaGVja2JveD4KICAgICAgICAgIDxkZWVzLWZvcm0tc3VibWl0PlNhdmUgR2VuZXJhbCBTZXR0aW5nczwvZGVlcy1mb3JtLXN1Ym1pdD4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kaXY+CiAgICAgIAogICAgICA8ZGl2IGNsYXNzPSJzZXR0aW5ncy1zZWN0aW9uIj4KICAgICAgICA8aDI+RGlzcGxheSBQcmVmZXJlbmNlczwvaDI+CiAgICAgICAgPGRpdiBjbGFzcz0iaG9yaXpvbnRhbC1mb3JtLXNlY3Rpb24iPgogICAgICAgICAgPHAgc3R5bGU9Im1hcmdpbi10b3A6IDA7IG1hcmdpbi1ib3R0b206IDE2cHg7Ij5RdWljayBkaXNwbGF5IHNldHRpbmdzIHVzaW5nIGhvcml6b250YWwgbGF5b3V0OjwvcD4KICAgICAgICAgIDxkZWVzLWZvcm0gaG9yaXpvbnRhbC1sYXlvdXQ+CiAgICAgICAgICAgIDxkZWVzLWlucHV0LWRyb3Bkb3duCiAgICAgICAgICAgICAga2V5PSJ0aGVtZSIKICAgICAgICAgICAgICBsYWJlbD0iVGhlbWUiCiAgICAgICAgICAgICAgLmVuYWJsZVNlYXJjaD0keyExfQogICAgICAgICAgICAgIC5vcHRpb25zPSR7W3tvcHRpb246IkxpZ2h0IixrZXk6ImxpZ2h0In0se29wdGlvbjoiRGFyayIsa2V5OiJkYXJrIn0se29wdGlvbjoiQXV0byIsa2V5OiJhdXRvIn1dfQogICAgICAgICAgICAgIC5zZWxlY3RlZE9wdGlvbj0ke3tvcHRpb246IkRhcmsiLGtleToiZGFyayJ9fQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LWRyb3Bkb3duPgogICAgICAgICAgICA8ZGVlcy1pbnB1dC1kcm9wZG93bgogICAgICAgICAgICAgIGtleT0ibGFuZ3VhZ2UiCiAgICAgICAgICAgICAgbGFiZWw9Ikxhbmd1YWdlIgogICAgICAgICAgICAgIC5lbmFibGVTZWFyY2g9JHshMX0KICAgICAgICAgICAgICAub3B0aW9ucz0ke1t7b3B0aW9uOiJFbmdsaXNoIixrZXk6ImVuIn0se29wdGlvbjoiR2VybWFuIixrZXk6ImRlIn0se29wdGlvbjoiU3BhbmlzaCIsa2V5OiJlcyJ9LHtvcHRpb246IkZyZW5jaCIsa2V5OiJmciJ9XX0KICAgICAgICAgICAgICAuc2VsZWN0ZWRPcHRpb249JHt7b3B0aW9uOiJFbmdsaXNoIixrZXk6ImVuIn19CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtZHJvcGRvd24+CiAgICAgICAgICAgIDxkZWVzLWlucHV0LWNoZWNrYm94IGtleT0iY29tcGFjdE1vZGUiIGxhYmVsPSJDb21wYWN0IE1vZGUiPjwvZGVlcy1pbnB1dC1jaGVja2JveD4KICAgICAgICAgIDwvZGVlcy1mb3JtPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgCiAgICAgIDxkaXYgY2xhc3M9InNldHRpbmdzLXNlY3Rpb24iPgogICAgICAgIDxoMj5Ob3RpZmljYXRpb24gU2V0dGluZ3M8L2gyPgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1yYWRpb2dyb3VwCiAgICAgICAgICAgIC5sYWJlbD0keyJFbWFpbCBGcmVxdWVuY3kifQogICAgICAgICAgICAub3B0aW9ucz0ke1siUmVhbC10aW1lIiwiRGFpbHkgRGlnZXN0IiwiV2Vla2x5IFN1bW1hcnkiLCJOZXZlciJdfQogICAgICAgICAgICAuc2VsZWN0ZWRPcHRpb249JHsiUmVhbC10aW1lIn0KICAgICAgICAgICAgLmtleT0keyJlbWFpbEZyZXF1ZW5jeSJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXJhZGlvZ3JvdXA+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1jaGVja2JveCBrZXk9InB1c2hOb3RpZmljYXRpb25zIiBsYWJlbD0iRW5hYmxlIFB1c2ggTm90aWZpY2F0aW9ucyIgdmFsdWU9InRydWUiPjwvZGVlcy1pbnB1dC1jaGVja2JveD4KICAgICAgICAgIDxkZWVzLWlucHV0LWNoZWNrYm94IGtleT0ic291bmRBbGVydHMiIGxhYmVsPSJQbGF5IFNvdW5kIGZvciBBbGVydHMiIHZhbHVlPSJ0cnVlIj48L2RlZXMtaW5wdXQtY2hlY2tib3g+CiAgICAgICAgICA8ZGVlcy1mb3JtLXN1Ym1pdD5VcGRhdGUgTm90aWZpY2F0aW9uczwvZGVlcy1mb3JtLXN1Ym1pdD4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kaXY+CiAgICBgfXN0YXRpY3tOcnQoYSx0KX19O3JldHVybiBuPWF9KSgpLERnYT1pKCgpPT53YAogIDxzdHlsZT4KICAgIGJvZHkgewogICAgICBtYXJnaW46IDA7CiAgICAgIHBhZGRpbmc6IDA7CiAgICB9CiAgICAuZGVtby1jb250YWluZXIgewogICAgICB3aWR0aDogMTAwJTsKICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHRvcDogMDsKICAgICAgbGVmdDogMDsKICAgIH0KICA8L3N0eWxlPgogIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgIDxkZWVzLXNpbXBsZS1hcHBkYXNoCiAgICAgIG5hbWU9Ik15IEFwcGxpY2F0aW9uIgogICAgICB0ZXJtaW5hbFNldHVwQ29tbWFuZD0iZWNobyAnV2VsY29tZSB0byB0aGUgdGVybWluYWwhJyIKICAgICAgLmdsb2JhbE1lc3NhZ2VzPSR7W3tpZDoidXBkYXRlIix0eXBlOiJpbmZvIixtZXNzYWdlOiJBIG5ldyB2ZXJzaW9uICh2My41MC4wKSBpcyBhdmFpbGFibGUgd2l0aCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMgYW5kIGJ1ZyBmaXhlcy4iLGRpc21pc3NpYmxlOiEwLGFjdGlvbnM6W3tuYW1lOiJVcGRhdGUgTm93IixpY29uTmFtZToibHVjaWRlOmRvd25sb2FkIixhY3Rpb246aSgoKT0+YWxlcnQoIlVwZGF0aW5nLi4uIiksImFjdGlvbiIpfSx7bmFtZToiUmVsZWFzZSBOb3RlcyIsYWN0aW9uOmkoKCk9PmFsZXJ0KCJPcGVuaW5nIHJlbGVhc2Ugbm90ZXMuLi4iKSwiYWN0aW9uIil9XX0se2lkOiJtYWludGVuYW5jZSIsdHlwZToid2FybmluZyIsbWVzc2FnZToiU2NoZWR1bGVkIG1haW50ZW5hbmNlIHdpbmRvdzogQXByaWwgNSwgMjAyNiAwMjowMFx1MjAxMzA2OjAwIFVUQy4gU29tZSBzZXJ2aWNlcyBtYXkgYmUgdGVtcG9yYXJpbHkgdW5hdmFpbGFibGUuIixkaXNtaXNzaWJsZTohMH0se2lkOiJjcml0aWNhbCIsdHlwZToiZXJyb3IiLG1lc3NhZ2U6IllvdXIgU1NMIGNlcnRpZmljYXRlIGV4cGlyZXMgaW4gMyBkYXlzLiBSZW5ldyBub3cgdG8gYXZvaWQgc2VydmljZSBkaXNydXB0aW9uLiIsZGlzbWlzc2libGU6ITEsYWN0aW9uczpbe25hbWU6IlJlbmV3IENlcnRpZmljYXRlIixpY29uTmFtZToibHVjaWRlOnNoaWVsZENoZWNrIixhY3Rpb246aSgoKT0+YWxlcnQoIlJlbmV3aW5nIGNlcnRpZmljYXRlLi4uIiksImFjdGlvbiIpfV19XX0KICAgICAgLnZpZXdUYWJzPSR7W3tuYW1lOiJEYXNoYm9hcmQiLGljb25OYW1lOiJsdWNpZGU6aG9tZSIsZWxlbWVudDpDZ2F9LHtuYW1lOiJBbmFseXRpY3MiLGljb25OYW1lOiJsdWNpZGU6bGluZUNoYXJ0IixlbGVtZW50OlRnYSxzdWJWaWV3czpbe25hbWU6Ik92ZXJ2aWV3IixpY29uTmFtZToibHVjaWRlOmFjdGl2aXR5IixlbGVtZW50OlRnYX0se25hbWU6IlJlcG9ydHMiLGljb25OYW1lOiJsdWNpZGU6ZmlsZVRleHQiLGVsZW1lbnQ6Q2dhfV19LHtuYW1lOiJTZXR0aW5ncyIsaWNvbk5hbWU6Imx1Y2lkZTpzZXR0aW5ncyIsc3ViVmlld3M6W3tuYW1lOiJQcm9maWxlIixpY29uTmFtZToibHVjaWRlOnVzZXIiLGVsZW1lbnQ6JGdhfSx7bmFtZToiQmlsbGluZyIsaWNvbk5hbWU6Imx1Y2lkZTpjcmVkaXRDYXJkIixlbGVtZW50OiRnYX1dfV19CiAgICAgIEBsb2dvdXQ9JHsoKT0+e2NvbnNvbGUubG9nKCJMb2dvdXQgZXZlbnQgdHJpZ2dlcmVkIiksYWxlcnQoIkxvZ291dCBjbGlja2VkISIpfX0KICAgICAgQHZpZXctc2VsZWN0PSR7cz0+e2NvbnNvbGUubG9nKCJWaWV3IHNlbGVjdGVkOiIscy5kZXRhaWwudmlldy5uYW1lKX19CiAgICA+PC9kZWVzLXNpbXBsZS1hcHBkYXNoPgogIDwvZGl2PgpgLCJkZW1vRnVuYyIpfSk7dmFyICRnLHRjLEVnYSxQZ2E9ZygoKT0+e0xnYSgpO3BlKCk7VWEoKTtwdCgpOyRnPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSx0Yz1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sRWdhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1zaW1wbGUtYXBwZGFzaCIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdO3ZhciBPPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzU2ltcGxlQXBwRGFzaCIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCAkPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woKV0scD1bTCh7dHlwZTpBcnJheX0pXSxjPVtMKHt0eXBlOlN0cmluZ30pXSx4PVtMKHt0eXBlOkFycmF5fSldLHk9W1koKV0sTj1bWSgpXSwkZyh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im5hbWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+Im5hbWUiaW4gRSwiaGFzIiksZ2V0OmkoRT0+RS5uYW1lLCJnZXQiKSxzZXQ6aSgoRSxIKT0+e0UubmFtZT1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LG8sbCksJGcodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2aWV3VGFicyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShFPT4idmlld1RhYnMiaW4gRSwiaGFzIiksZ2V0OmkoRT0+RS52aWV3VGFicywiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLnZpZXdUYWJzPUh9LCJzZXQiKX0sbWV0YWRhdGE6JH0sZCx1KSwkZyh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InRlcm1pbmFsU2V0dXBDb21tYW5kIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEU9PiJ0ZXJtaW5hbFNldHVwQ29tbWFuZCJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLnRlcm1pbmFsU2V0dXBDb21tYW5kLCJnZXQiKSxzZXQ6aSgoRSxIKT0+e0UudGVybWluYWxTZXR1cENvbW1hbmQ9SH0sInNldCIpfSxtZXRhZGF0YTokfSxiLHYpLCRnKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZ2xvYmFsTWVzc2FnZXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+Imdsb2JhbE1lc3NhZ2VzImluIEUsImhhcyIpLGdldDppKEU9PkUuZ2xvYmFsTWVzc2FnZXMsImdldCIpLHNldDppKChFLEgpPT57RS5nbG9iYWxNZXNzYWdlcz1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LG0sZiksJGcodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWxlY3RlZFZpZXciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+InNlbGVjdGVkVmlldyJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLnNlbGVjdGVkVmlldywiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLnNlbGVjdGVkVmlldz1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LE0seiksJGcodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJfYWN0aXZlTWVzc2FnZXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+Il9hY3RpdmVNZXNzYWdlcyJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLl9hY3RpdmVNZXNzYWdlcywiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLl9hY3RpdmVNZXNzYWdlcz1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LEMsXyksJGcobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6JH0sbnVsbCx0KSxPPWE9ZS52YWx1ZSwkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOiR9KX1zdGF0aWMgZGVtbz1EZ2E7c3RhdGljIGRlbW9Hcm91cHM9WyJTaW1wbGUiXTsjZT10Yyh0aGlzLG8sIkFwcGxpY2F0aW9uIERhc2hib2FyZCIpO2dldCBuYW1lKCl7cmV0dXJuIHRoaXMuI2V9c2V0IG5hbWUoJCl7dGhpcy4jZT0kfSN0PSh0Yyh0aGlzLGwpLHRjKHRoaXMsZCxbXSkpO2dldCB2aWV3VGFicygpe3JldHVybiB0aGlzLiN0fXNldCB2aWV3VGFicygkKXt0aGlzLiN0PSR9I2E9KHRjKHRoaXMsdSksdGModGhpcyxiLCdlY2hvICJUZXJtaW5hbCByZWFkeSInKSk7Z2V0IHRlcm1pbmFsU2V0dXBDb21tYW5kKCl7cmV0dXJuIHRoaXMuI2F9c2V0IHRlcm1pbmFsU2V0dXBDb21tYW5kKCQpe3RoaXMuI2E9JH0jcz0odGModGhpcyx2KSx0Yyh0aGlzLG0sW10pKTtnZXQgZ2xvYmFsTWVzc2FnZXMoKXtyZXR1cm4gdGhpcy4jc31zZXQgZ2xvYmFsTWVzc2FnZXMoJCl7dGhpcy4jcz0kfSNpPSh0Yyh0aGlzLGYpLHRjKHRoaXMsTSx2b2lkIDApKTtnZXQgc2VsZWN0ZWRWaWV3KCl7cmV0dXJuIHRoaXMuI2l9c2V0IHNlbGVjdGVkVmlldygkKXt0aGlzLiNpPSR9I3I9KHRjKHRoaXMseiksdGModGhpcyxDLFtdKSk7Z2V0IF9hY3RpdmVNZXNzYWdlcygpe3JldHVybiB0aGlzLiNyfXNldCBfYWN0aXZlTWVzc2FnZXMoJCl7dGhpcy4jcj0kfXN0YXRpYyBzdHlsZXM9W0hlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5tYWluY29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwcHg7CiAgICAgICAgbGVmdDogMHB4OwogICAgICAgIHJpZ2h0OiAwcHg7CiAgICAgICAgYm90dG9tOiAwcHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLmFwcGJhciB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMHB4OwogICAgICAgIGxlZnQ6IDBweDsKICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDI0cHgpOwogICAgICAgIHdpZHRoOiAyNDBweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXNlY29uZGFyeSk7CiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtZmFtaWx5OiAnR2Vpc3QgU2FucycsIHNhbnMtc2VyaWY7CiAgICAgICAgei1pbmRleDogMjsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byAxZnIgbWluLWNvbnRlbnQ7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLnNpZGViYXItaGVhZGVyIHsKICAgICAgICBwYWRkaW5nOiAyMHB4IDE2cHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDEycHg7CiAgICAgIH0KCiAgICAgIC5oZWFkZXItaWNvbi13cmFwcGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgd2lkdGg6IDM2cHg7CiAgICAgICAgaGVpZ2h0OiAzNnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1iZy10ZXJ0aWFyeSk7CiAgICAgICAgYm94LXNoYWRvdzogJHtoLmJkVGhlbWUoIjAgMXB4IDJweCByZ2IoMCAwIDAgLyAwLjA1KSIsIjAgMXB4IDJweCByZ2IoMCAwIDAgLyAwLjIpIil9OwogICAgICB9CgogICAgICAuaGVhZGVyLWljb24td3JhcHBlciBkZWVzLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICB9CgogICAgICAuYXBwTmFtZSB7CiAgICAgICAgZm9udC1zaXplOiAxNXB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07CiAgICAgIH0KCiAgICAgIC52aWV3VGFicy1jb250YWluZXIgewogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgcGFkZGluZzogMTJweCA4cHg7CiAgICAgICAgc2Nyb2xsYmFyLXdpZHRoOiB0aGluOwogICAgICAgIHNjcm9sbGJhci1jb2xvcjogdmFyKC0tZGVlcy1jb2xvci1zY3JvbGxiYXItdGh1bWIpIHRyYW5zcGFyZW50OwogICAgICB9CgogICAgICAudmlld1RhYnMtY29udGFpbmVyOjotd2Via2l0LXNjcm9sbGJhciB7CiAgICAgICAgd2lkdGg6IDZweDsKICAgICAgfQoKICAgICAgLnZpZXdUYWJzLWNvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sgewogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICB9CgogICAgICAudmlld1RhYnMtY29udGFpbmVyOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1zY3JvbGxiYXItdGh1bWIpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgfQoKICAgICAgLnZpZXdUYWJzLWNvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3Itc2Nyb2xsYmFyLXRodW1iLWhvdmVyKTsKICAgICAgfQoKICAgICAgLnNlY3Rpb24tbGFiZWwgewogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICBwYWRkaW5nOiA4cHggMTJweCA4cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4OwogICAgICB9CgogICAgICAudmlld1RhYnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDJweDsKICAgICAgfQoKICAgICAgLnZpZXdUYWIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDEwcHg7CiAgICAgICAgcGFkZGluZzogMTBweCAxMnB4OwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXNlY29uZGFyeSk7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgfQoKICAgICAgLnZpZXdUYWI6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItaG92ZXIpOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzI2MjYyNiIsIiNlNWU1ZTUiKX07CiAgICAgIH0KCiAgICAgIC52aWV3VGFiOmFjdGl2ZSB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1hY3RpdmUpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45OSk7CiAgICAgIH0KCiAgICAgIC52aWV3VGFiLnNlbGVjdGVkIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWFjdGl2ZSk7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICB9CgogICAgICAudmlld1RhYi5zZWxlY3RlZDo6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB0b3A6IDhweDsKICAgICAgICBib3R0b206IDhweDsKICAgICAgICB3aWR0aDogM3B4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDAgMnB4IDJweCAwOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgfQoKICAgICAgLnZpZXdUYWIgZGVlcy1pY29uIHsKICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgb3BhY2l0eTogMC41NTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgfQoKICAgICAgLnZpZXdUYWI6aG92ZXIgZGVlcy1pY29uIHsKICAgICAgICBvcGFjaXR5OiAwLjc1OwogICAgICB9CgogICAgICAudmlld1RhYi5zZWxlY3RlZCBkZWVzLWljb24gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgfQoKICAgICAgLnZpZXdUYWIgc3BhbiB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgIH0KCiAgICAgIC52aWV3VGFiIC5jaGV2cm9uIHsKICAgICAgICBmbGV4OiAwIDAgYXV0bzsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZSwgb3BhY2l0eSAwLjE1cyBlYXNlOwogICAgICB9CgogICAgICAudmlld1RhYi5oYXNTdWJzOmhvdmVyIC5jaGV2cm9uIHsKICAgICAgICBvcGFjaXR5OiAwLjc1OwogICAgICB9CgogICAgICAudmlld1RhYi5oYXNTdWJzLmdyb3VwQWN0aXZlIC5jaGV2cm9uIHsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICAgICAgICBvcGFjaXR5OiAwLjk7CiAgICAgIH0KCiAgICAgIC5zdWJWaWV3cyB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IDBmcjsKICAgICAgICBtYXJnaW4tbGVmdDogMTJweDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgdHJhbnNpdGlvbjoKICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93cyAwLjI1cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpLAogICAgICAgICAgbWFyZ2luLXRvcCAwLjI1cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpLAogICAgICAgICAgbWFyZ2luLWJvdHRvbSAwLjI1cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwogICAgICB9CgogICAgICAuc3ViVmlld3MuZXhwYW5kZWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogMWZyOwogICAgICAgIG1hcmdpbi10b3A6IDJweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7CiAgICAgIH0KCiAgICAgIC5zdWJWaWV3czo6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB0b3A6IDRweDsKICAgICAgICBib3R0b206IDRweDsKICAgICAgICB3aWR0aDogMXB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5zdWJWaWV3cy5leHBhbmRlZDo6YmVmb3JlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CgogICAgICAuc3ViVmlld3MtaW5uZXIgewogICAgICAgIG1pbi1oZWlnaHQ6IDA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiAycHg7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAxMnB4OwogICAgICB9CgogICAgICAudmlld1RhYi5zdWIgewogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgfQoKICAgICAgLnZpZXdUYWIuc3ViIGRlZXMtaWNvbiB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICB9CgogICAgICAudmlld1RhYi5zdWIuc2VsZWN0ZWQ6OmJlZm9yZSB7CiAgICAgICAgbGVmdDogLTEycHg7CiAgICAgIH0KCiAgICAgIC5hcHBBY3Rpb25zIHsKICAgICAgICBwYWRkaW5nOiAxMnB4IDhweDsKICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICAgIH0KCiAgICAgIC5hY3Rpb24gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDEwcHg7CiAgICAgICAgcGFkZGluZzogMTBweCAxMnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOwogICAgICB9CgogICAgICAuYWN0aW9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgODQlIDYwJSAvIDAuMDgpIiwiaHNsKDAgODQlIDYwJSAvIDAuMTIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgODQlIDQ1JSkiLCJoc2woMCA4NCUgNjUlKSIpfTsKICAgICAgfQoKICAgICAgLmFjdGlvbiBkZWVzLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICBvcGFjaXR5OiAwLjY7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5hY3Rpb246aG92ZXIgZGVlcy1pY29uIHsKICAgICAgICBvcGFjaXR5OiAwLjk7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCA4NCUgNDUlKSIsImhzbCgwIDg0JSA2NSUpIil9OwogICAgICB9CgogICAgICAuYXBwY29udGVudCB7CiAgICAgICAgei1pbmRleDogMTsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwcHg7CiAgICAgICAgcmlnaHQ6IDBweDsKICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDI0cHgpOwogICAgICAgIGJvdHRvbTogMjRweDsKICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gMjQwcHgpOwogICAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYmctc2Vjb25kYXJ5KTsKICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluOwogICAgICB9CgogICAgICAuYXBwY29udGVudDo6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICBwb3NpdGlvbjogc3RpY2t5OwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGhlaWdodDogOHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IC04cHg7CiAgICAgICAgei1pbmRleDogMTA7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KAogICAgICAgICAgdG8gYm90dG9tLAogICAgICAgICAgJHtoLmJkVGhlbWUoImhzbCgwIDAlIDAlIC8gMC4wOCkiLCJoc2woMCAwJSAwJSAvIDAuNCkiKX0sCiAgICAgICAgICAke2guYmRUaGVtZSgiaHNsKDAgMCUgMCUgLyAwLjAzKSIsImhzbCgwIDAlIDAlIC8gMC4xMikiKX0sCiAgICAgICAgICB0cmFuc3BhcmVudAogICAgICAgICk7CiAgICAgIH0KCiAgICAgIC5jb250cm9sYmFyOjpiZWZvcmUgewogICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IC04cHg7CiAgICAgICAgbGVmdDogMjQwcHg7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgaGVpZ2h0OiA4cHg7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KAogICAgICAgICAgdG8gdG9wLAogICAgICAgICAgJHtoLmJkVGhlbWUoImhzbCgwIDAlIDAlIC8gMC4wOCkiLCJoc2woMCAwJSAwJSAvIDAuNCkiKX0sCiAgICAgICAgICAke2guYmRUaGVtZSgiaHNsKDAgMCUgMCUgLyAwLjAzKSIsImhzbCgwIDAlIDAlIC8gMC4xMikiKX0sCiAgICAgICAgICB0cmFuc3BhcmVudAogICAgICAgICk7CiAgICAgIH0KCiAgICAgIC5jb250cm9sYmFyIHsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgYm90dG9tOiAwcHg7CiAgICAgICAgbGVmdDogMHB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMjRweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXRlcnRpYXJ5KTsKICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICAgICAgei1pbmRleDogMTE7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wMWVtOwogICAgICB9CgogICAgICAuY29udHJvbCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4OwogICAgICAgIHBhZGRpbmc6IDAgMTJweDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1zdHJvbmcpOwoKICAgICAgfQoKICAgICAgLmNvbnRyb2w6Zmlyc3QtY2hpbGQgewogICAgICAgIGJvcmRlci1sZWZ0OiBub25lOwogICAgICB9CgogICAgICAuY29udHJvbDpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1ob3Zlcik7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgfQoKICAgICAgLmNvbnRyb2wgZGVlcy1pY29uIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgIH0KCiAgICAgIC5jb250cm9sLnN0YXR1cy1jb25uZWN0ZWQgZGVlcy1pY29uIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgxNDIgNzAlIDM1JSkiLCJoc2woMTQyIDcwJSA1MCUpIil9OwogICAgICB9CgogICAgICAuY29udHJvbC5zdGF0dXMtdGVybWluYWwgZGVlcy1pY29uIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgzOCA5MiUgNDUlKSIsImhzbCgzOCA5MiUgNTUlKSIpfTsKICAgICAgfQoKICAgICAgLyogR2xvYmFsIE1lc3NhZ2UgQmFubmVycyAqLwogICAgICAubWVzc2FnZUJhbm5lckFyZWEgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMjQwcHg7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgei1pbmRleDogMzsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuMjVzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CiAgICAgIH0KCiAgICAgIC5tZXNzYWdlQmFubmVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgIHBhZGRpbmc6IDEwcHggMTZweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC1mYW1pbHk6ICdHZWlzdCBTYW5zJywgc2Fucy1zZXJpZjsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgICBhbmltYXRpb246IGJhbm5lclNsaWRlRG93biAwLjI1cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGZvcndhcmRzOwogICAgICB9CgogICAgICAubWVzc2FnZUJhbm5lci5kaXNtaXNzaW5nIHsKICAgICAgICBhbmltYXRpb246IGJhbm5lclNsaWRlVXAgMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGZvcndhcmRzOwogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGJhbm5lclNsaWRlRG93biB7CiAgICAgICAgZnJvbSB7CiAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTsKICAgICAgICB9CiAgICAgICAgdG8gewogICAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMgYmFubmVyU2xpZGVVcCB7CiAgICAgICAgZnJvbSB7CiAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgICAgIH0KICAgICAgICB0byB7CiAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC5tZXNzYWdlQmFubmVyIGRlZXMtaWNvbiB7CiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAubWVzc2FnZUJhbm5lci10ZXh0IHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgLm1lc3NhZ2VCYW5uZXItYWN0aW9ucyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4OwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAubWVzc2FnZUJhbm5lci1hY3Rpb24gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDZweDsKICAgICAgICBwYWRkaW5nOiA0cHggMTJweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAxZW07CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMCUgLyAwLjA4KSIsImhzbCgwIDAlIDEwMCUgLyAwLjEpIil9OwogICAgICAgIGNvbG9yOiBpbmhlcml0OwogICAgICB9CgogICAgICAubWVzc2FnZUJhbm5lci1hY3Rpb246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAwJSAvIDAuMTUpIiwiaHNsKDAgMCUgMTAwJSAvIDAuMTgpIil9OwogICAgICB9CgogICAgICAubWVzc2FnZUJhbm5lci1hY3Rpb246YWN0aXZlIHsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTcpOwogICAgICB9CgogICAgICAubWVzc2FnZUJhbm5lci1hY3Rpb24gZGVlcy1pY29uIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgIH0KCiAgICAgIC5tZXNzYWdlQmFubmVyLWRpc21pc3MgewogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICB3aWR0aDogMjRweDsKICAgICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5tZXNzYWdlQmFubmVyLWRpc21pc3M6aG92ZXIgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgYmFja2dyb3VuZDogaHNsKDAgMCUgMCUgLyAwLjEpOwogICAgICB9CgogICAgICAvKiBNZXNzYWdlIHR5cGU6IGluZm8gKi8KICAgICAgLm1lc3NhZ2VCYW5uZXItaW5mbyB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgMTAwJSA5NyUpIiwiaHNsKDIxMCA1MCUgMTAlKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTAgNzAlIDMwJSkiLCJoc2woMjEwIDcwJSA4MCUpIil9OwogICAgICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgIzAwODRmZjsKICAgICAgfQogICAgICAubWVzc2FnZUJhbm5lci1pbmZvIGRlZXMtaWNvbiB7CiAgICAgICAgY29sb3I6ICMwMDg0ZmY7CiAgICAgIH0KCiAgICAgIC8qIE1lc3NhZ2UgdHlwZTogc3VjY2VzcyAqLwogICAgICAubWVzc2FnZUJhbm5lci1zdWNjZXNzIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDE0MiA3MCUgOTclKSIsImhzbCgxNDIgMzAlIDEwJSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMTQyIDUwJSAyNSUpIiwiaHNsKDE0MiA1MCUgODAlKSIpfTsKICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkICMyMmM1NWU7CiAgICAgIH0KICAgICAgLm1lc3NhZ2VCYW5uZXItc3VjY2VzcyBkZWVzLWljb24gewogICAgICAgIGNvbG9yOiAjMjJjNTVlOwogICAgICB9CgogICAgICAvKiBNZXNzYWdlIHR5cGU6IHdhcm5pbmcgKi8KICAgICAgLm1lc3NhZ2VCYW5uZXItd2FybmluZyB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgzOCA5MCUgOTclKSIsImhzbCgzOCA0MCUgMTAlKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgzOCA2MCUgMjUlKSIsImhzbCgzOCA2MCUgODAlKSIpfTsKICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkICNmNTllMGI7CiAgICAgIH0KICAgICAgLm1lc3NhZ2VCYW5uZXItd2FybmluZyBkZWVzLWljb24gewogICAgICAgIGNvbG9yOiAjZjU5ZTBiOwogICAgICB9CgogICAgICAvKiBNZXNzYWdlIHR5cGU6IGVycm9yICovCiAgICAgIC5tZXNzYWdlQmFubmVyLWVycm9yIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgNzAlIDk3JSkiLCJoc2woMCA0MCUgMTAlKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDYwJSAzMCUpIiwiaHNsKDAgNjAlIDgwJSkiKX07CiAgICAgICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCAjZWY0NDQ0OwogICAgICB9CiAgICAgIC5tZXNzYWdlQmFubmVyLWVycm9yIGRlZXMtaWNvbiB7CiAgICAgICAgY29sb3I6ICNlZjQ0NDQ7CiAgICAgIH0KCiAgICAgIC5tZXNzYWdlQmFubmVyLWRpc21pc3M6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAwJSAvIDAuMDgpIiwiaHNsKDAgMCUgMTAwJSAvIDAuMSkiKX07CiAgICAgIH0KCiAgICAgIC5hcHBjb250ZW50IHsKICAgICAgICB0b3A6IHZhcigtLWJhbm5lci1hcmVhLWhlaWdodCwgMHB4KTsKICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDI0cHggLSB2YXIoLS1iYW5uZXItYXJlYS1oZWlnaHQsIDBweCkpOwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0ibWFpbmNvbnRhaW5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iYXBwYmFyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItaGVhZGVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyLWljb24td3JhcHBlciI+CiAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0iJHsibHVjaWRlOmxheW91dEdyaWQifSI+PC9kZWVzLWljb24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhcHBOYW1lIj4ke3RoaXMubmFtZX08L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0idmlld1RhYnMtY29udGFpbmVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1sYWJlbCI+TmF2aWdhdGlvbjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2aWV3VGFicyI+CiAgICAgICAgICAgICAgJHt0aGlzLnZpZXdUYWJzLm1hcCgkPT57bGV0IEU9ISEkLnN1YlZpZXdzPy5sZW5ndGgsSD1FJiZ0aGlzLmlzR3JvdXBBY3RpdmUoJCk7cmV0dXJuIHdgCiAgICAgICAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgICAgICBjbGFzcz0idmlld1RhYiAke3RoaXMuc2VsZWN0ZWRWaWV3PT09JD8ic2VsZWN0ZWQiOiIifSAke0U/Imhhc1N1YnMiOiIifSAke0g/Imdyb3VwQWN0aXZlIjoiIn0iCiAgICAgICAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMubG9hZFZpZXcoJCl9CiAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAkeyQuaWNvbk5hbWU/d2AKICAgICAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249IiR7JC5pY29uTmFtZS5pbmNsdWRlcygiOiIpPyQuaWNvbk5hbWU6YGx1Y2lkZTokeyQuaWNvbk5hbWV9YH0iPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgICAgIGA6d2AKICAgICAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249IiR7Imx1Y2lkZTpmaWxlIn0iPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgICAgIGB9CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+JHskLm5hbWV9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICR7RT93YAogICAgICAgICAgICAgICAgICAgICAgPGRlZXMtaWNvbiBjbGFzcz0iY2hldnJvbiIgLmljb249IiR7Imx1Y2lkZTpjaGV2cm9uRG93biJ9Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgICAgICBgOiIifQogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgJHtFP3dgCiAgICAgICAgICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgICAgY2xhc3M9InN1YlZpZXdzICR7SD8iZXhwYW5kZWQiOiIifSIKICAgICAgICAgICAgICAgICAgICAgID9pbmVydD0keyFIfQogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1YlZpZXdzLWlubmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgJHskLnN1YlZpZXdzLm1hcChrPT53YAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0idmlld1RhYiBzdWIgJHt0aGlzLnNlbGVjdGVkVmlldz09PWs/InNlbGVjdGVkIjoiIn0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz0ke1M9PntTLnN0b3BQcm9wYWdhdGlvbigpLHRoaXMubG9hZFZpZXcoayl9fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2suaWNvbk5hbWU/d2AKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSIke2suaWNvbk5hbWUuaW5jbHVkZXMoIjoiKT9rLmljb25OYW1lOmBsdWNpZGU6JHtrLmljb25OYW1lfWB9Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYDp3YAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249IiR7Imx1Y2lkZTpkb3QifSI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPiR7ay5uYW1lfTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgIGApfQogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAgICAgICBgfSl9CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJhcHBBY3Rpb25zIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uIiBAY2xpY2s9JHsoKT0+e3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImxvZ291dCIse2J1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9fT4KICAgICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSIkeyJsdWNpZGU6bG9nT3V0In0iPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgIDxzcGFuPlNpZ24gb3V0PC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgICR7dGhpcy5fYWN0aXZlTWVzc2FnZXMubGVuZ3RoPjA/d2AKICAgICAgICA8ZGl2IGNsYXNzPSJtZXNzYWdlQmFubmVyQXJlYSI+CiAgICAgICAgICAke3RoaXMuX2FjdGl2ZU1lc3NhZ2VzLm1hcCgkPT53YAogICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgY2xhc3M9Im1lc3NhZ2VCYW5uZXIgbWVzc2FnZUJhbm5lci0keyQudHlwZX0iCiAgICAgICAgICAgICAgZGF0YS1tZXNzYWdlLWlkPSIkeyQuaWR9IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0iJHt0aGlzLmdldE1lc3NhZ2VJY29uKCQpfSI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1lc3NhZ2VCYW5uZXItdGV4dCI+JHskLm1lc3NhZ2V9PC9zcGFuPgogICAgICAgICAgICAgICR7JC5hY3Rpb25zPy5sZW5ndGg/d2AKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lc3NhZ2VCYW5uZXItYWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICR7JC5hY3Rpb25zLm1hcChFPT53YAogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lc3NhZ2VCYW5uZXItYWN0aW9uIiBAY2xpY2s9JHsoKT0+RS5hY3Rpb24oKX0+CiAgICAgICAgICAgICAgICAgICAgICAke0UuaWNvbk5hbWU/d2A8ZGVlcy1pY29uIC5pY29uPSIke0UuaWNvbk5hbWUuaW5jbHVkZXMoIjoiKT9FLmljb25OYW1lOmBsdWNpZGU6JHtFLmljb25OYW1lfWB9Ij48L2RlZXMtaWNvbj5gOiIifQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4+JHtFLm5hbWV9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICBgKX0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAgICAgJHskLmRpc21pc3NpYmxlIT09ITE/d2AKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lc3NhZ2VCYW5uZXItZGlzbWlzcyIgQGNsaWNrPSR7KCk9PnRoaXMucmVtb3ZlTWVzc2FnZSgkLmlkKX0+CiAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249IiR7Imx1Y2lkZTp4In0iPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgKX0KICAgICAgICA8L2Rpdj4KICAgICAgYDoiIn0KICAgICAgICA8ZGl2IGNsYXNzPSJhcHBjb250ZW50Ij4KICAgICAgICAgIDwhLS0gQ29udGVudCBnb2VzIGhlcmUgLS0+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbGJhciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9sIHN0YXR1cy1jb25uZWN0ZWQiPgogICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSIkeyJsdWNpZGU6d2lmaSJ9Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgPHNwYW4+Q29ubmVjdGVkPC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9sIHN0YXR1cy10ZXJtaW5hbCIgQGNsaWNrPSR7dGhpcy5sYXVuY2hUZXJtaW5hbH0+CiAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249IiR7Imx1Y2lkZTp0ZXJtaW5hbCJ9Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgPHNwYW4+VGVybWluYWw8L3NwYW4+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfWFzeW5jIGZpcnN0VXBkYXRlZCgkKXtsZXQgRT1hd2FpdCB0aGlzLmRvbXRvb2xzUHJvbWlzZTtpZihzdXBlci5maXJzdFVwZGF0ZWQoJCksdGhpcy52aWV3VGFicyYmdGhpcy52aWV3VGFicy5sZW5ndGg+MCl7bGV0IEg9dGhpcy5zZWxlY3RlZFZpZXd8fHRoaXMudmlld1RhYnNbMF07YXdhaXQgdGhpcy5sb2FkVmlldyhIKX19d2lsbFVwZGF0ZSgkKXtpZigkLmhhcygiZ2xvYmFsTWVzc2FnZXMiKSl7bGV0IEU9bmV3IFNldCh0aGlzLmdsb2JhbE1lc3NhZ2VzLm1hcChSPT5SLmlkKSksSD1uZXcgU2V0KHRoaXMuX2FjdGl2ZU1lc3NhZ2VzLm1hcChSPT5SLmlkKSksaz10aGlzLmdsb2JhbE1lc3NhZ2VzLmZpbHRlcihSPT4hSC5oYXMoUi5pZCkpLFM9JC5nZXQoImdsb2JhbE1lc3NhZ2VzIil8fFtdLEk9bmV3IFNldChTLm1hcChSPT5SLmlkKSksUD1uZXcgU2V0KFsuLi5JXS5maWx0ZXIoUj0+IUUuaGFzKFIpKSk7dGhpcy5fYWN0aXZlTWVzc2FnZXM9Wy4uLnRoaXMuX2FjdGl2ZU1lc3NhZ2VzLmZpbHRlcihSPT4hUC5oYXMoUi5pZCkpLC4uLmtdfX11cGRhdGVkKCQpe3N1cGVyLnVwZGF0ZWQoJCksdGhpcy51cGRhdGVCYW5uZXJPZmZzZXQoKX11cGRhdGVCYW5uZXJPZmZzZXQoKXtyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntsZXQgJD10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5tZXNzYWdlQmFubmVyQXJlYSIpLEU9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIubWFpbmNvbnRhaW5lciIpLEg9JD8kLm9mZnNldEhlaWdodDowO0U/LnN0eWxlLnNldFByb3BlcnR5KCItLWJhbm5lci1hcmVhLWhlaWdodCIsYCR7SH1weGApfSl9Z2V0TWVzc2FnZUljb24oJCl7cmV0dXJuICQuaWNvbj8kLmljb246e2luZm86Imx1Y2lkZTppbmZvIixzdWNjZXNzOiJsdWNpZGU6Y2lyY2xlQ2hlY2siLHdhcm5pbmc6Imx1Y2lkZTp0cmlhbmdsZUFsZXJ0IixlcnJvcjoibHVjaWRlOmNpcmNsZVgifVskLnR5cGVdfWFkZE1lc3NhZ2UoJCl7bGV0IEU9JC5pZHx8YG1zZy0ke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsOSl9YCxIPXtkaXNtaXNzaWJsZTohMCwuLi4kLGlkOkV9O3JldHVybiB0aGlzLl9hY3RpdmVNZXNzYWdlcz1bLi4udGhpcy5fYWN0aXZlTWVzc2FnZXMsSF0sRX1yZW1vdmVNZXNzYWdlKCQpe2xldCBFPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihgW2RhdGEtbWVzc2FnZS1pZD0iJHskfSJdYCk7RT8oRS5jbGFzc0xpc3QuYWRkKCJkaXNtaXNzaW5nIiksRS5hZGRFdmVudExpc3RlbmVyKCJhbmltYXRpb25lbmQiLCgpPT57dGhpcy5fYWN0aXZlTWVzc2FnZXM9dGhpcy5fYWN0aXZlTWVzc2FnZXMuZmlsdGVyKEg9PkguaWQhPT0kKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJtZXNzYWdlLWRpc21pc3MiLHtkZXRhaWw6e2lkOiR9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9LHtvbmNlOiEwfSkpOnRoaXMuX2FjdGl2ZU1lc3NhZ2VzPXRoaXMuX2FjdGl2ZU1lc3NhZ2VzLmZpbHRlcihIPT5ILmlkIT09JCl9Y2xlYXJNZXNzYWdlcygpe3RoaXMuX2FjdGl2ZU1lc3NhZ2VzPVtdfWN1cnJlbnRUZXJtaW5hbD0odGModGhpcyxfKSxudWxsKTthc3luYyBsYXVuY2hUZXJtaW5hbCgpe2xldCAkPWF3YWl0IHRoaXMuZG9tdG9vbHNQcm9taXNlO2lmKHRoaXMuY3VycmVudFRlcm1pbmFsKXthd2FpdCB0aGlzLmNsb3NlVGVybWluYWwoKTtyZXR1cm59bGV0IEU9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5tYWluY29udGFpbmVyIikse0RlZXNXb3Jrc3BhY2VUZXJtaW5hbDpIfT1hd2FpdCBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4ob1EoKSx6Z2EpKSxrPW5ldyBIO3JldHVybiBrLnNldHVwQ29tbWFuZD10aGlzLnRlcm1pbmFsU2V0dXBDb21tYW5kLHRoaXMuY3VycmVudFRlcm1pbmFsPWssRS5hcHBlbmRDaGlsZChrKSxrLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsay5zdHlsZS56SW5kZXg9IjEwIixrLnN0eWxlLnRvcD0idmFyKC0tYmFubmVyLWFyZWEtaGVpZ2h0LCAwcHgpIixrLnN0eWxlLmxlZnQ9IjI0MHB4IixrLnN0eWxlLnJpZ2h0PSIwcHgiLGsuc3R5bGUuaGVpZ2h0PSJhdXRvIixrLnN0eWxlLmJvdHRvbT0iMjRweCIsay5zdHlsZS5vcGFjaXR5PSIwIixrLnN0eWxlLnRyYW5zZm9ybT0idHJhbnNsYXRlWSg4cHgpIHNjYWxlKDAuOTkpIixrLnN0eWxlLnRyYW5zaXRpb249ImFsbCAwLjI1cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIixrLnN0eWxlLmJveFNoYWRvdz0iMCAyNXB4IDUwcHggLTEycHggcmdiKDAgMCAwIC8gMC41KSwgMCAwIDAgMXB4IHJnYigyNTUgMjU1IDI1NSAvIDAuMDUpIixrLmFkZEV2ZW50TGlzdGVuZXIoImNsb3NlIiwoKT0+dGhpcy5jbG9zZVRlcm1pbmFsKCkpLGF3YWl0ICQuY29udmVuaWVuY2Uuc21hcnRkZWxheS5kZWxheUZvcigwKSxrLnN0eWxlLm9wYWNpdHk9IjEiLGsuc3R5bGUudHJhbnNmb3JtPSJ0cmFuc2xhdGVZKDApIHNjYWxlKDEpIixrfWFzeW5jIGNsb3NlVGVybWluYWwoKXtsZXQgJD1hd2FpdCB0aGlzLmRvbXRvb2xzUHJvbWlzZTt0aGlzLmN1cnJlbnRUZXJtaW5hbCYmKHRoaXMuY3VycmVudFRlcm1pbmFsLnN0eWxlLm9wYWNpdHk9IjAiLHRoaXMuY3VycmVudFRlcm1pbmFsLnN0eWxlLnRyYW5zZm9ybT0idHJhbnNsYXRlWSg4cHgpIHNjYWxlKDAuOTkpIixhd2FpdCAkLmNvbnZlbmllbmNlLnNtYXJ0ZGVsYXkuZGVsYXlGb3IoMjUwKSx0aGlzLmN1cnJlbnRUZXJtaW5hbC5yZW1vdmUoKSx0aGlzLmN1cnJlbnRUZXJtaW5hbD1udWxsKX1pc0dyb3VwQWN0aXZlKCQpe3JldHVybiB0aGlzLnNlbGVjdGVkVmlldz09PSQ/ITA6JC5zdWJWaWV3cz8uc29tZShFPT5FPT09dGhpcy5zZWxlY3RlZFZpZXcpPz8hMX1jdXJyZW50Vmlldzthc3luYyBsb2FkVmlldygkKXtpZighJC5lbGVtZW50JiYkLnN1YlZpZXdzPy5sZW5ndGgpe2xldCBrPSQuc3ViVmlld3MuZmluZChTPT5TLmVsZW1lbnQpO3JldHVybiBrP3RoaXMubG9hZFZpZXcoayk6dm9pZCAwfWlmKCEkLmVsZW1lbnQpcmV0dXJuO2xldCBFPXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIuYXBwY29udGVudCIpLEg9bmV3ICQuZWxlbWVudDt0aGlzLmN1cnJlbnRWaWV3JiZ0aGlzLmN1cnJlbnRWaWV3LnJlbW92ZSgpLEUuYXBwZW5kQ2hpbGQoSCksdGhpcy5jdXJyZW50Vmlldz1ILHRoaXMuc2VsZWN0ZWRWaWV3PSQsdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgidmlldy1zZWxlY3QiLHtkZXRhaWw6e3ZpZXc6JH0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1zdGF0aWN7dGMoYSx0KX19O3JldHVybiBPPWF9KSgpfSk7dmFyIElnYT1nKCgpPT57UGdhKCl9KTt2YXIgQWdhLE5nYT1nKCgpPT57cGUoKTtBZ2E9aSgoKT0+d2AKICA8c3R5bGU+CiAgICBib2R5IHsKICAgICAgbWFyZ2luOiAwOwogICAgICBwYWRkaW5nOiAwOwogICAgfQogICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGhlaWdodDogMTAwJTsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB0b3A6IDA7CiAgICAgIGxlZnQ6IDA7CiAgICB9CiAgPC9zdHlsZT4KICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICA8ZGVlcy1zaW1wbGUtbG9naW4gCiAgICAgIG5hbWU9Ik15IEFwcGxpY2F0aW9uIgogICAgICBAbG9naW49JHtzPT57Y29uc29sZS5sb2coIkxvZ2luIGV2ZW50IHJlY2VpdmVkOiIscy5kZXRhaWwpO2xldCBlPXMuZGV0YWlsPy5kYXRhfHxzLmRldGFpbDtlPy51c2VybmFtZSYmZT8ucGFzc3dvcmQ/YWxlcnQoYExvZ2luIGF0dGVtcHRlZCB3aXRoOgpVc2VybmFtZTogJHtlLnVzZXJuYW1lfQpQYXNzd29yZDogJHtlLnBhc3N3b3JkfWApOmNvbnNvbGUuZXJyb3IoIkludmFsaWQgbG9naW4gZGF0YSBzdHJ1Y3R1cmU6IixzLmRldGFpbCl9fQogICAgPgogICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nOiA0MHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij4KICAgICAgICA8aDE+V2VsY29tZSE8L2gxPgogICAgICAgIDxwPlRoaXMgaXMgdGhlIHNsb3R0ZWQgY29udGVudCB0aGF0IGFwcGVhcnMgYWZ0ZXIgbG9naW4uPC9wPgogICAgICA8L2Rpdj4KICAgIDwvZGVlcy1zaW1wbGUtbG9naW4+CiAgPC9kaXY+CmAsImRlbW9GdW5jIil9KTt2YXIgUmdhLFJydCxPZ2EsRmdhPWcoKCk9PntOZ2EoKTtwZSgpO3B0KCk7bnIoKTtSZ2E9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LFJydD1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sT2dhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1zaW1wbGUtbG9naW4iKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXTt2YXIgcD1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1NpbXBsZUxvZ2luIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCgpXSxSZ2EodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJuYW1lIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHU9PiJuYW1lImluIHUsImhhcyIpLGdldDppKHU9PnUubmFtZSwiZ2V0Iiksc2V0OmkoKHUsYyk9Pnt1Lm5hbWU9Y30sInNldCIpfSxtZXRhZGF0YTpkfSxvLGwpLFJnYShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpkfSxudWxsLHQpLHA9YT1lLnZhbHVlLGQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZH0pfXN0YXRpYyBkZW1vPUFnYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIlNpbXBsZSJdOyNlPVJydCh0aGlzLG8sIkFwcGxpY2F0aW9uIik7Z2V0IG5hbWUoKXtyZXR1cm4gdGhpcy4jZX1zZXQgbmFtZShkKXt0aGlzLiNlPWR9c3RhdGljIHN0eWxlcz1bSGUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBmb250LWZhbWlseTogJ0dlaXN0IFNhbnMnLCBzYW5zLXNlcmlmOwogICAgICB9CgogICAgICAubG9naW5Db250YWluZXIgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYmctcHJpbWFyeSk7CiAgICAgIH0KCiAgICAgIC5zbG90Q29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2UsIHRyYW5zZm9ybSAwLjJzIGVhc2U7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5sb2dpbiB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWF4LXdpZHRoOiAzNjBweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiAyNHB4OwogICAgICB9CgogICAgICAubG9naW4taGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICB9CgogICAgICAuaGVhZGVyIHsKICAgICAgICBmb250LXNpemU6IDI0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDI1ZW07CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgfQoKICAgICAgLnN1YmhlYWRlciB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICB9CgogICAgICBkZWVzLXRpbGUgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICBkZWVzLXRpbGU6OnBhcnQoY29udGVudCkgewogICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgIH0KCiAgICAgIGRlZXMtdGlsZSBkZWVzLWZvcm0gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDE2cHg7CiAgICAgIH0KCiAgICAgIGRlZXMtdGlsZSBkZWVzLWlucHV0LXRleHQgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICBkZWVzLXRpbGUgZGVlcy1mb3JtLXN1Ym1pdCB7CiAgICAgICAgbWFyZ2luLXRvcDogOHB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0ibG9naW5Db250YWluZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImxvZ2luIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ2luLWhlYWRlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+U2lnbiBpbjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWJoZWFkZXIiPkVudGVyIHlvdXIgY3JlZGVudGlhbHMgdG8gYWNjZXNzICR7dGhpcy5uYW1lfTwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGVlcy10aWxlIC5oZWFkaW5nPSR7IkNyZWRlbnRpYWxzIn0+CiAgICAgICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dCBrZXk9InVzZXJuYW1lIiBsYWJlbD0iVXNlcm5hbWUiIHJlcXVpcmVkPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQga2V5PSJwYXNzd29yZCIgbGFiZWw9IlBhc3N3b3JkIiBpc1Bhc3N3b3JkQm9vbCByZXF1aXJlZD48L2RlZXMtaW5wdXQtdGV4dD4KICAgICAgICAgICAgICA8ZGVlcy1mb3JtLXN1Ym1pdD5TaWduIGluPC9kZWVzLWZvcm0tc3VibWl0PgogICAgICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgICAgIDwvZGVlcy10aWxlPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ic2xvdENvbnRhaW5lciI+CiAgICAgICAgPHNsb3Q+PC9zbG90PgogICAgICA8L2Rpdj4KICAgIGB9YXN5bmMgZmlyc3RVcGRhdGVkKGQpe3N1cGVyLmZpcnN0VXBkYXRlZChkKTtsZXQgdT10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiZGVlcy1mb3JtIik7dSYmdS5hZGRFdmVudExpc3RlbmVyKCJmb3JtRGF0YSIsKGM9Pnt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJsb2dpbiIse2RldGFpbDpjLmRldGFpbCxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfSkpfWFzeW5jIHN3aXRjaFRvU2xvdHRlZENvbnRlbnQoKXtsZXQgZD1hd2FpdCB0aGlzLmRvbXRvb2xzUHJvbWlzZSx1PXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIubG9naW4iKSxjPXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIubG9naW5Db250YWluZXIiKSxiPXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIuc2xvdENvbnRhaW5lciIpO3Uuc3R5bGUub3BhY2l0eT0iMCIsdS5zdHlsZS50cmFuc2Zvcm09InRyYW5zbGF0ZVkoMjBweCkiLGMuc3R5bGUucG9pbnRlckV2ZW50cz0ibm9uZSIsYi5zdHlsZS50cmFuc2Zvcm09InRyYW5zbGF0ZVkoMjBweCkiLGF3YWl0IGQuY29udmVuaWVuY2Uuc21hcnRkZWxheS5kZWxheUZvcigzMDApLGIuc3R5bGUub3BhY2l0eT0iMSIsYi5zdHlsZS50cmFuc2Zvcm09InRyYW5zbGF0ZVkoMHB4KSIsYXdhaXQgZC5jb252ZW5pZW5jZS5zbWFydGRlbGF5LmRlbGF5Rm9yKDMwMCksYi5zdHlsZS5wb2ludGVyRXZlbnRzPSJhbGwifWNvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSxScnQodGhpcyxsKX1zdGF0aWN7UnJ0KGEsdCl9fTtyZXR1cm4gcD1hfSkoKX0pO3ZhciBCZ2E9ZygoKT0+e0ZnYSgpfSk7dmFyIEhnYT1nKCgpPT57TWdhKCk7SWdhKCk7QmdhKCl9KTt2YXIgcWdhPWcoKCk9PntVYSgpfSk7dmFyIGpnYSxWZ2E9ZygoKT0+e3BlKCk7amdhPWkoKCk9PndgCiAgICA8c3R5bGU+CiAgICAgIC5kZW1vV3JhcHBlciB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIAogICAgICAgIGJhY2tncm91bmQ6ICM4ODg4ODg7CiAgICAgIH0KICAgICAgLmxvZ3MgewogICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgd2lkdGg6IDYwMHB4OwogICAgICAgIGNvbG9yOiAjZmZmOwogICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgICAgIH0KICAgICAgLmxvZ3MgZGl2IHsKICAgICAgICBtYXJnaW46IDRweCAwOwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPGRpdiBjbGFzcz0iZGVtb1dyYXBwZXIiPgogICAgICA8ZGVlcy1zZWFyY2hiYXIKICAgICAgICBAc2VhcmNoLWNoYW5nZWQ9JHtpKHQ9PntsZXQgcj10LnRhcmdldC5jbG9zZXN0KCIuZGVtb1dyYXBwZXIiKT8ucXVlcnlTZWxlY3RvcigiI2NoYW5nZWQiKTtyJiYoci50ZXh0Q29udGVudD1gc2VhcmNoLWNoYW5nZWQ6ICR7dC5kZXRhaWwudmFsdWV9YCl9LCJvbkNoYW5nZWQiKX0KICAgICAgICBAc2VhcmNoLXN1Ym1pdD0ke2kodD0+e2xldCByPXQudGFyZ2V0LmNsb3Nlc3QoIi5kZW1vV3JhcHBlciIpPy5xdWVyeVNlbGVjdG9yKCIjc3VibWl0dGVkIik7ciYmKHIudGV4dENvbnRlbnQ9YHNlYXJjaC1zdWJtaXQ6ICR7dC5kZXRhaWwudmFsdWV9YCl9LCJvblN1Ym1pdCIpfQogICAgICA+PC9kZWVzLXNlYXJjaGJhcj4KICAgICAgPGRpdiBjbGFzcz0ibG9ncyI+CiAgICAgICAgPGRpdiBpZD0iY2hhbmdlZCI+c2VhcmNoLWNoYW5nZWQ6PC9kaXY+CiAgICAgICAgPGRpdiBpZD0ic3VibWl0dGVkIj5zZWFyY2gtc3VibWl0OjwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIGAsImRlbW9GdW5jIil9KTt2YXIgVWdhLE9ydCxXZ2EsR2dhPWcoKCk9PntwZSgpO0cxKCk7VmdhKCk7cHQoKTtVZ2E9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LE9ydD1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sV2dhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1zZWFyY2hiYXIiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXTt2YXIgcD1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1NlYXJjaGJhciIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBkPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woKV0sVWdhKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZmlsdGVycyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh1PT4iZmlsdGVycyJpbiB1LCJoYXMiKSxnZXQ6aSh1PT51LmZpbHRlcnMsImdldCIpLHNldDppKCh1LGMpPT57dS5maWx0ZXJzPWN9LCJzZXQiKX0sbWV0YWRhdGE6ZH0sbyxsKSxVZ2EobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6ZH0sbnVsbCx0KSxwPWE9ZS52YWx1ZSxkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmR9KX1zdGF0aWMgZGVtbz1qZ2E7c3RhdGljIGRlbW9Hcm91cHM9WyJVdGlsaXR5Il07c3RhdGljIHN0eWxlcz1bSGUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICAgIDpob3N0IHsKICAgICAgICBwYWRkaW5nOiA0MHB4OwogICAgICAgIGZvbnQtZmFtaWx5OiBEZWVzIFNhbnM7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNlZWVlZWIiLCIjMDAwMDAwIil9OwogICAgICB9CgogICAgICAuc2VhcmNoYm94Q29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgbWFyZ2luOiBhdXRvOwogICAgICAgIG1heC13aWR0aDogODAwcHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiMwMDAwMDAxNSIsIiNmZmZmZmYxNSIpfTsKICAgICAgICAtLWJveEhlaWdodDogNjBweDsKICAgICAgICBoZWlnaHQ6IHZhcigtLWJveEhlaWdodCk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm94SGVpZ2h0KTsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDE0MHB4OwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjMDAwMDAwMTUiLCIjZmZmZmZmMjAiKX07CiAgICAgIH0KCiAgICAgIGlucHV0IHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGJhY2tncm91bmQ6IG5vbmU7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDAwMDAwIiwiI2VlZWVlYiIpfTsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDI1cHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAtOHB4OwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICB9CgogICAgICAuc2VhcmNoQnV0dG9uIHsKICAgICAgICAtLWJ1dHRvblBhZGRpbmc6IDhweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2VlZWVlYiIsIiMwMDAwMDAiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDAwMDAwIiwiI2VlZWVlYiIpfTsKICAgICAgICBsaW5lLWhlaWdodDogY2FsYyh2YXIoLS1ib3hIZWlnaHQpIC0gKHZhcigtLWJ1dHRvblBhZGRpbmcpICogMikpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJveEhlaWdodCk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKSA7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJTsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgCiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMXMsIGJhY2tncm91bmQgMC4xczsKICAgICAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLWJ1dHRvblBhZGRpbmcpOwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICB9CgogICAgICAuc2VhcmNoQnV0dG9uOmhvdmVyIHsKICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSh2aC5ibHVlLGJoLmJsdWUpfTsKICAgICAgfQoKICAgICAgLnNlYXJjaEJ1dHRvbjphY3RpdmUgewogICAgICAgIGNvbG9yOiAjZmZmOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKHZoLmJsdWVBY3RpdmUsYmguYmx1ZUFjdGl2ZSl9OwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45OCk7CiAgICAgIH0KCiAgICAgIC5maWx0ZXJzIHsKICAgICAgICBtYXJnaW46IGF1dG87CiAgICAgICAgbWF4LXdpZHRoOiA4MDBweDsKICAgICAgfQogICAgYF07I2U9T3J0KHRoaXMsbyxbXSk7Z2V0IGZpbHRlcnMoKXtyZXR1cm4gdGhpcy4jZX1zZXQgZmlsdGVycyhkKXt0aGlzLiNlPWR9c2VhcmNoSW5wdXQ9T3J0KHRoaXMsbCk7c2VhcmNoQnV0dG9uO2NvbnN0cnVjdG9yKCl7c3VwZXIoKX1yZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0ic2VhcmNoYm94Q29udGFpbmVyIj4KICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IllvdXIgU2tpbGxzIChlLmcuIFR5cGVTY3JpcHQsIFJ1c3QsIFByb2plY3RtYW5hZ2VtZW50KSIgLz4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWFyY2hCdXR0b24iPlNlYXJjaCAtPjwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgJHt0aGlzLmZpbHRlcnMubGVuZ3RoPjA/d2AKICAgICAgICA8ZGl2IGNsYXNzPSJmaWx0ZXJzIj4KICAgICAgICA8ZGVlcy1oZWFkaW5nIGxldmVsPSJoci1zbWFsbCI+RmlsdGVyczwvZGVlcy1oZWFkaW5nPgogICAgICAgIDxkZWVzLWlucHV0LWRyb3Bkb3duIC5sYWJlbD0keyJsb2NhdGlvbiJ9PjwvZGVlcy1pbnB1dC1kcm9wZG93bj4KICAgICAgPC9kaXY+ICAKICAgICAgYDp3YGB9CiAgICBgfWZpcnN0VXBkYXRlZCgpe3RoaXMuc2VhcmNoSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCgpPT57dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgic2VhcmNoLWNoYW5nZWQiLHtidWJibGVzOiEwLGNvbXBvc2VkOiEwLGRldGFpbDp7dmFsdWU6dGhpcy5zZWFyY2hJbnB1dC52YWx1ZX19KSl9KSx0aGlzLnNlYXJjaElucHV0LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLGQ9PntkLmtleT09PSJFbnRlciImJnRoaXMuX2Rpc3BhdGNoU3VibWl0KCl9KSx0aGlzLnNlYXJjaEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PnRoaXMuX2Rpc3BhdGNoU3VibWl0KCkpfV9kaXNwYXRjaFN1Ym1pdCgpe3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInNlYXJjaC1zdWJtaXQiLHtidWJibGVzOiEwLGNvbXBvc2VkOiEwLGRldGFpbDp7dmFsdWU6dGhpcy5zZWFyY2hJbnB1dC52YWx1ZX19KSl9c3RhdGlje09ydChhLHQpfX07cmV0dXJuIHA9YX0pKCl9KTt2YXIgS2dhPWcoKCk9PntHZ2EoKX0pO3ZhciBZZ2EsWmdhPWcoKCk9PntwZSgpO1lnYT1pKCgpPT53YAogIDxzdHlsZT4KICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgIGdhcDogMzJweDsKICAgICAgcGFkZGluZzogNDhweDsKICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmOGY5ZmEiLCIjMGEwYTBhIil9OwogICAgICBtaW4taGVpZ2h0OiAxMDB2aDsKICAgIH0KCiAgICAuc2VjdGlvbiB7CiAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzE4MTgxYiIpfTsKICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMjcyNzJhIil9OwogICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICB9CgogICAgLnNlY3Rpb24tdGl0bGUgewogICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07CiAgICB9CgogICAgLnNlY3Rpb24tZGVzY3JpcHRpb24gewogICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICB9CgogICAgLnRva2VuLWdyaWQgewogICAgICBkaXNwbGF5OiBncmlkOwogICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgyMDBweCwgMWZyKSk7CiAgICAgIGdhcDogMTZweDsKICAgIH0KCiAgICAudG9rZW4taXRlbSB7CiAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzI3MjcyYSIpfTsKICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICBwYWRkaW5nOiAxNnB4OwogICAgfQoKICAgIC50b2tlbi1uYW1lIHsKICAgICAgZm9udC1mYW1pbHk6ICdJbnRlbCBPbmUgTW9ubycsIG1vbm9zcGFjZTsKICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICB9CgogICAgLnRva2VuLXZhbHVlIHsKICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICBmb250LXdlaWdodDogNTAwOwogICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTA5MGIiLCIjZmFmYWZhIil9OwogICAgfQoKICAgIC5zcGFjaW5nLWRlbW8gewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7CiAgICAgIGdhcDogOHB4OwogICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICB9CgogICAgLnNwYWNpbmctYm94IHsKICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiMzYjgyZjYiLCIjM2I4MmY2Iil9OwogICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICB9CgogICAgLnJhZGl1cy1kZW1vIHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZ2FwOiAxNnB4OwogICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICB9CgogICAgLnJhZGl1cy1ib3ggewogICAgICB3aWR0aDogNjBweDsKICAgICAgaGVpZ2h0OiA2MHB4OwogICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiIzNiODJmNiIsIiMzYjgyZjYiKX07CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICBjb2xvcjogd2hpdGU7CiAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIH0KCiAgICAuc2hhZG93LWRlbW8gewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBnYXA6IDI0cHg7CiAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIH0KCiAgICAuc2hhZG93LWJveCB7CiAgICAgIHdpZHRoOiAxMDBweDsKICAgICAgaGVpZ2h0OiAxMDBweDsKICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMjcyNzJhIil9OwogICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICBmb250LXNpemU6IDEycHg7CiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICB9CgogICAgLmhlaWdodC1kZW1vIHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZ2FwOiAxNnB4OwogICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7CiAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIH0KCiAgICAuaGVpZ2h0LWJveCB7CiAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzNiODJmNiIpfTsKICAgICAgd2lkdGg6IDEyMHB4OwogICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICBjb2xvcjogd2hpdGU7CiAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIH0KICA8L3N0eWxlPgogIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgIDxkZWVzLXRoZW1lPgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5TcGFjaW5nIFNjYWxlPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1kZXNjcmlwdGlvbiI+CiAgICAgICAgICBDU1MgdmFyaWFibGVzOiAtLWRlZXMtc3BhY2luZy14cyB0aHJvdWdoIC0tZGVlcy1zcGFjaW5nLTN4bAogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNwYWNpbmctZGVtbyI+CiAgICAgICAgICA8ZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFjaW5nLWJveCIgc3R5bGU9IndpZHRoOiB2YXIoLS1kZWVzLXNwYWNpbmcteHMpOyBoZWlnaHQ6IHZhcigtLWRlZXMtc3BhY2luZy14cyk7Ij48L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9rZW4tbmFtZSI+eHMgKDRweCk8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhY2luZy1ib3giIHN0eWxlPSJ3aWR0aDogdmFyKC0tZGVlcy1zcGFjaW5nLXNtKTsgaGVpZ2h0OiB2YXIoLS1kZWVzLXNwYWNpbmctc20pOyI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRva2VuLW5hbWUiPnNtICg4cHgpPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYWNpbmctYm94IiBzdHlsZT0id2lkdGg6IHZhcigtLWRlZXMtc3BhY2luZy1tZCk7IGhlaWdodDogdmFyKC0tZGVlcy1zcGFjaW5nLW1kKTsiPjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2tlbi1uYW1lIj5tZCAoMTJweCk8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhY2luZy1ib3giIHN0eWxlPSJ3aWR0aDogdmFyKC0tZGVlcy1zcGFjaW5nLWxnKTsgaGVpZ2h0OiB2YXIoLS1kZWVzLXNwYWNpbmctbGcpOyI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRva2VuLW5hbWUiPmxnICgxNnB4KTwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFjaW5nLWJveCIgc3R5bGU9IndpZHRoOiB2YXIoLS1kZWVzLXNwYWNpbmcteGwpOyBoZWlnaHQ6IHZhcigtLWRlZXMtc3BhY2luZy14bCk7Ij48L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9rZW4tbmFtZSI+eGwgKDI0cHgpPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYWNpbmctYm94IiBzdHlsZT0id2lkdGg6IHZhcigtLWRlZXMtc3BhY2luZy0yeGwpOyBoZWlnaHQ6IHZhcigtLWRlZXMtc3BhY2luZy0yeGwpOyI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRva2VuLW5hbWUiPjJ4bCAoMzJweCk8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhY2luZy1ib3giIHN0eWxlPSJ3aWR0aDogdmFyKC0tZGVlcy1zcGFjaW5nLTN4bCk7IGhlaWdodDogdmFyKC0tZGVlcy1zcGFjaW5nLTN4bCk7Ij48L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9rZW4tbmFtZSI+M3hsICg0OHB4KTwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+Qm9yZGVyIFJhZGl1cyBTY2FsZTwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tZGVzY3JpcHRpb24iPgogICAgICAgICAgQ1NTIHZhcmlhYmxlczogLS1kZWVzLXJhZGl1cy14cyB0aHJvdWdoIC0tZGVlcy1yYWRpdXMtZnVsbAogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InJhZGl1cy1kZW1vIj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJhZGl1cy1ib3giIHN0eWxlPSJib3JkZXItcmFkaXVzOiB2YXIoLS1kZWVzLXJhZGl1cy14cyk7Ij54czwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2tlbi1uYW1lIj4ycHg8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icmFkaXVzLWJveCIgc3R5bGU9ImJvcmRlci1yYWRpdXM6IHZhcigtLWRlZXMtcmFkaXVzLXNtKTsiPnNtPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRva2VuLW5hbWUiPjRweDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyYWRpdXMtYm94IiBzdHlsZT0iYm9yZGVyLXJhZGl1czogdmFyKC0tZGVlcy1yYWRpdXMtbWQpOyI+bWQ8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9rZW4tbmFtZSI+NnB4PC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJhZGl1cy1ib3giIHN0eWxlPSJib3JkZXItcmFkaXVzOiB2YXIoLS1kZWVzLXJhZGl1cy1sZyk7Ij5sZzwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2tlbi1uYW1lIj44cHg8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icmFkaXVzLWJveCIgc3R5bGU9ImJvcmRlci1yYWRpdXM6IHZhcigtLWRlZXMtcmFkaXVzLXhsKTsiPnhsPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRva2VuLW5hbWUiPjEycHg8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icmFkaXVzLWJveCIgc3R5bGU9ImJvcmRlci1yYWRpdXM6IHZhcigtLWRlZXMtcmFkaXVzLWZ1bGwpOyI+ZnVsbDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2tlbi1uYW1lIj45OTlweDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+U2hhZG93IEVsZXZhdGlvbiBTY2FsZTwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tZGVzY3JpcHRpb24iPgogICAgICAgICAgQ1NTIHZhcmlhYmxlczogLS1kZWVzLXNoYWRvdy14cyB0aHJvdWdoIC0tZGVlcy1zaGFkb3ctbGcKICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzaGFkb3ctZGVtbyI+CiAgICAgICAgICA8ZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaGFkb3ctYm94IiBzdHlsZT0iYm94LXNoYWRvdzogdmFyKC0tZGVlcy1zaGFkb3cteHMpOyI+eHM8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9rZW4tbmFtZSI+bWluaW1hbDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaGFkb3ctYm94IiBzdHlsZT0iYm94LXNoYWRvdzogdmFyKC0tZGVlcy1zaGFkb3ctc20pOyI+c208L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9rZW4tbmFtZSI+c3VidGxlPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNoYWRvdy1ib3giIHN0eWxlPSJib3gtc2hhZG93OiB2YXIoLS1kZWVzLXNoYWRvdy1tZCk7Ij5tZDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2tlbi1uYW1lIj5tZWRpdW08L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2hhZG93LWJveCIgc3R5bGU9ImJveC1zaGFkb3c6IHZhcigtLWRlZXMtc2hhZG93LWxnKTsiPmxnPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRva2VuLW5hbWUiPnByb21pbmVudDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+Q29udHJvbCBIZWlnaHQgU2NhbGU8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj4KICAgICAgICAgIENTUyB2YXJpYWJsZXM6IC0tZGVlcy1jb250cm9sLWhlaWdodC1zbSB0aHJvdWdoIC0tZGVlcy1jb250cm9sLWhlaWdodC14bAogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImhlaWdodC1kZW1vIj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlaWdodC1ib3giIHN0eWxlPSJoZWlnaHQ6IHZhcigtLWRlZXMtY29udHJvbC1oZWlnaHQtc20pOyI+c208L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9rZW4tbmFtZSI+MzJweDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWlnaHQtYm94IiBzdHlsZT0iaGVpZ2h0OiB2YXIoLS1kZWVzLWNvbnRyb2wtaGVpZ2h0LW1kKTsiPm1kPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRva2VuLW5hbWUiPjM2cHg8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVpZ2h0LWJveCIgc3R5bGU9ImhlaWdodDogdmFyKC0tZGVlcy1jb250cm9sLWhlaWdodC1sZyk7Ij5sZzwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2tlbi1uYW1lIj40MHB4PC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlaWdodC1ib3giIHN0eWxlPSJoZWlnaHQ6IHZhcigtLWRlZXMtY29udHJvbC1oZWlnaHQteGwpOyI+eGw8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9rZW4tbmFtZSI+NDhweDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+VHJhbnNpdGlvbiBEdXJhdGlvbnM8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj4KICAgICAgICAgIENTUyB2YXJpYWJsZXM6IC0tZGVlcy10cmFuc2l0aW9uLWZhc3QgdGhyb3VnaCAtLWRlZXMtdHJhbnNpdGlvbi1zbG93ZXIKICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0b2tlbi1ncmlkIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRva2VuLWl0ZW0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2tlbi1uYW1lIj4tLWRlZXMtdHJhbnNpdGlvbi1mYXN0PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRva2VuLXZhbHVlIj4wLjFzPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRva2VuLWl0ZW0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2tlbi1uYW1lIj4tLWRlZXMtdHJhbnNpdGlvbi1kZWZhdWx0PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRva2VuLXZhbHVlIj4wLjE1czwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2tlbi1pdGVtIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9rZW4tbmFtZSI+LS1kZWVzLXRyYW5zaXRpb24tc2xvdzwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2tlbi12YWx1ZSI+MC4yczwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2tlbi1pdGVtIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9rZW4tbmFtZSI+LS1kZWVzLXRyYW5zaXRpb24tc2xvd2VyPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRva2VuLXZhbHVlIj4wLjNzPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2RlZXMtdGhlbWU+CiAgPC9kaXY+CmAsImRlbW9GdW5jIil9KTt2YXIgZHgsZjIsWGdhLFFnYT1nKCgpPT57cGUoKTtwdCgpO1pnYSgpO2R4PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxmMj1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sWGdhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy10aGVtZSIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdO3ZhciBOPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzVGhlbWUiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgQz10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOk9iamVjdH0pXSxwPVtMKHt0eXBlOk9iamVjdH0pXSxjPVtMKHt0eXBlOk9iamVjdH0pXSx4PVtMKHt0eXBlOk9iamVjdH0pXSx5PVtMKHt0eXBlOk9iamVjdH0pXSxkeCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImN1c3RvbVNwYWNpbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+ImN1c3RvbVNwYWNpbmciaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5jdXN0b21TcGFjaW5nLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uY3VzdG9tU3BhY2luZz1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LG8sbCksZHgodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjdXN0b21SYWRpdXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+ImN1c3RvbVJhZGl1cyJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLmN1c3RvbVJhZGl1cywiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLmN1c3RvbVJhZGl1cz1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LGQsdSksZHgodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjdXN0b21TaGFkb3dzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJjdXN0b21TaGFkb3dzImluIF8sImhhcyIpLGdldDppKF89Pl8uY3VzdG9tU2hhZG93cywiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLmN1c3RvbVNoYWRvd3M9T30sInNldCIpfSxtZXRhZGF0YTpDfSxiLHYpLGR4KHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY3VzdG9tVHJhbnNpdGlvbnMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+ImN1c3RvbVRyYW5zaXRpb25zImluIF8sImhhcyIpLGdldDppKF89Pl8uY3VzdG9tVHJhbnNpdGlvbnMsImdldCIpLHNldDppKChfLE8pPT57Xy5jdXN0b21UcmFuc2l0aW9ucz1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LG0sZiksZHgodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjdXN0b21Db250cm9sSGVpZ2h0cyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4iY3VzdG9tQ29udHJvbEhlaWdodHMiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5jdXN0b21Db250cm9sSGVpZ2h0cywiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLmN1c3RvbUNvbnRyb2xIZWlnaHRzPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sTSx6KSxkeChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpDfSxudWxsLHQpLE49YT1lLnZhbHVlLEMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Q30pfXN0YXRpYyBkZW1vPVlnYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIlV0aWxpdHkiXTsjZT1mMih0aGlzLG8sbnVsbCk7Z2V0IGN1c3RvbVNwYWNpbmcoKXtyZXR1cm4gdGhpcy4jZX1zZXQgY3VzdG9tU3BhY2luZyhDKXt0aGlzLiNlPUN9I3Q9KGYyKHRoaXMsbCksZjIodGhpcyxkLG51bGwpKTtnZXQgY3VzdG9tUmFkaXVzKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGN1c3RvbVJhZGl1cyhDKXt0aGlzLiN0PUN9I2E9KGYyKHRoaXMsdSksZjIodGhpcyxiLG51bGwpKTtnZXQgY3VzdG9tU2hhZG93cygpe3JldHVybiB0aGlzLiNhfXNldCBjdXN0b21TaGFkb3dzKEMpe3RoaXMuI2E9Q30jcz0oZjIodGhpcyx2KSxmMih0aGlzLG0sbnVsbCkpO2dldCBjdXN0b21UcmFuc2l0aW9ucygpe3JldHVybiB0aGlzLiNzfXNldCBjdXN0b21UcmFuc2l0aW9ucyhDKXt0aGlzLiNzPUN9I2k9KGYyKHRoaXMsZiksZjIodGhpcyxNLG51bGwpKTtnZXQgY3VzdG9tQ29udHJvbEhlaWdodHMoKXtyZXR1cm4gdGhpcy4jaX1zZXQgY3VzdG9tQ29udHJvbEhlaWdodHMoQyl7dGhpcy4jaT1DfXN0YXRpYyBzdHlsZXM9W0hlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogY29udGVudHM7CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8c3R5bGU+CiAgICAgICAgJHt0aGlzLmdlbmVyYXRlQ3VzdG9tU3R5bGVzKCl9CiAgICAgIDwvc3R5bGU+CiAgICAgIDxzbG90Pjwvc2xvdD4KICAgIGB9Z2VuZXJhdGVDdXN0b21TdHlsZXMoKXtsZXQgQz1bIjpob3N0IHsiXTtpZih0aGlzLmN1c3RvbVNwYWNpbmcpZm9yKGxldFtfLE9db2YgT2JqZWN0LmVudHJpZXModGhpcy5jdXN0b21TcGFjaW5nKSlPJiZDLnB1c2goYCAgLS1kZWVzLXNwYWNpbmctJHtffTogJHtPfTtgKTtpZih0aGlzLmN1c3RvbVJhZGl1cylmb3IobGV0W18sT11vZiBPYmplY3QuZW50cmllcyh0aGlzLmN1c3RvbVJhZGl1cykpTyYmQy5wdXNoKGAgIC0tZGVlcy1yYWRpdXMtJHtffTogJHtPfTtgKTtpZih0aGlzLmN1c3RvbVNoYWRvd3MpZm9yKGxldFtfLE9db2YgT2JqZWN0LmVudHJpZXModGhpcy5jdXN0b21TaGFkb3dzKSlPJiZDLnB1c2goYCAgLS1kZWVzLXNoYWRvdy0ke199OiAke099O2ApO2lmKHRoaXMuY3VzdG9tVHJhbnNpdGlvbnMpe2ZvcihsZXRbXyxPXW9mIE9iamVjdC5lbnRyaWVzKHRoaXMuY3VzdG9tVHJhbnNpdGlvbnMpKWlmKE8pe2xldCAkPV89PT0iZGVmYXVsdCI/ImRlZmF1bHQiOl87Qy5wdXNoKGAgIC0tZGVlcy10cmFuc2l0aW9uLSR7JH06ICR7T307YCl9fWlmKHRoaXMuY3VzdG9tQ29udHJvbEhlaWdodHMpZm9yKGxldFtfLE9db2YgT2JqZWN0LmVudHJpZXModGhpcy5jdXN0b21Db250cm9sSGVpZ2h0cykpTyYmQy5wdXNoKGAgIC0tZGVlcy1jb250cm9sLWhlaWdodC0ke199OiAke099O2ApO3JldHVybiBDLnB1c2goIn0iKSxDLmpvaW4oYApgKX1zZXRTcGFjaW5nKEMsXyl7dGhpcy5jdXN0b21TcGFjaW5nPXsuLi50aGlzLmN1c3RvbVNwYWNpbmcsW0NdOl99fXNldFJhZGl1cyhDLF8pe3RoaXMuY3VzdG9tUmFkaXVzPXsuLi50aGlzLmN1c3RvbVJhZGl1cyxbQ106X319c2V0U2hhZG93KEMsXyl7dGhpcy5jdXN0b21TaGFkb3dzPXsuLi50aGlzLmN1c3RvbVNoYWRvd3MsW0NdOl99fXNldFRyYW5zaXRpb24oQyxfKXt0aGlzLmN1c3RvbVRyYW5zaXRpb25zPXsuLi50aGlzLmN1c3RvbVRyYW5zaXRpb25zLFtDXTpffX1zZXRDb250cm9sSGVpZ2h0KEMsXyl7dGhpcy5jdXN0b21Db250cm9sSGVpZ2h0cz17Li4udGhpcy5jdXN0b21Db250cm9sSGVpZ2h0cyxbQ106X319Z2V0VGhlbWUoKXtyZXR1cm57Y29sb3JzOldsLmNvbG9ycyxzcGFjaW5nOnsuLi5XbC5zcGFjaW5nLC4uLnRoaXMuY3VzdG9tU3BhY2luZ30scmFkaXVzOnsuLi5XbC5yYWRpdXMsLi4udGhpcy5jdXN0b21SYWRpdXN9LHNoYWRvd3M6ey4uLldsLnNoYWRvd3MsLi4udGhpcy5jdXN0b21TaGFkb3dzfSx0cmFuc2l0aW9uczp7Li4uV2wudHJhbnNpdGlvbnMsLi4udGhpcy5jdXN0b21UcmFuc2l0aW9uc30sY29udHJvbEhlaWdodHM6ey4uLldsLmNvbnRyb2xIZWlnaHRzLC4uLnRoaXMuY3VzdG9tQ29udHJvbEhlaWdodHN9fX1yZXNldFRvRGVmYXVsdHMoKXt0aGlzLmN1c3RvbVNwYWNpbmc9bnVsbCx0aGlzLmN1c3RvbVJhZGl1cz1udWxsLHRoaXMuY3VzdG9tU2hhZG93cz1udWxsLHRoaXMuY3VzdG9tVHJhbnNpdGlvbnM9bnVsbCx0aGlzLmN1c3RvbUNvbnRyb2xIZWlnaHRzPW51bGx9YXBwbHlUaGVtZShDKXtDLnNwYWNpbmcmJih0aGlzLmN1c3RvbVNwYWNpbmc9Qy5zcGFjaW5nKSxDLnJhZGl1cyYmKHRoaXMuY3VzdG9tUmFkaXVzPUMucmFkaXVzKSxDLnNoYWRvd3MmJih0aGlzLmN1c3RvbVNoYWRvd3M9Qy5zaGFkb3dzKSxDLnRyYW5zaXRpb25zJiYodGhpcy5jdXN0b21UcmFuc2l0aW9ucz1DLnRyYW5zaXRpb25zKSxDLmNvbnRyb2xIZWlnaHRzJiYodGhpcy5jdXN0b21Db250cm9sSGVpZ2h0cz1DLmNvbnRyb2xIZWlnaHRzKX1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksZjIodGhpcyx6KX1zdGF0aWN7ZjIoYSx0KX19O3JldHVybiBOPWF9KSgpfSk7dmFyIEpnYT1nKCgpPT57UWdhKCl9KTt2YXIgZTdhLHQ3YSxhN2E9ZygoKT0+e3BlKCk7RnJ0KCk7ZTdhPWkoYXN5bmMgcz0+e2F3YWl0IG5ldyBQcm9taXNlKGU9Pnt3aW5kb3cuc2V0VGltZW91dCgoKT0+ZSgpLHMpfSl9LCJ3YWl0Rm9yRGVtb1N0ZXAiKSx0N2E9aSgoKT0+e2xldCBzPSExO3JldHVybiB3YAogICAgPGRpdiBzdHlsZT0iZGlzcGxheTogZ3JpZDsgZ2FwOiAxNnB4OyBwbGFjZS1pdGVtczogY2VudGVyOyBwYWRkaW5nOiAzMnB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij4KICAgICAgPHAgc3R5bGU9Im1hcmdpbjogMDsgbWF4LXdpZHRoOiA1NDBweDsgbGluZS1oZWlnaHQ6IDEuNjsgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOyI+CiAgICAgICAgTGF1bmNoZXMgdGhlIHVwZGF0ZXIgYXMgYSBzdGVwcGVyIGZsb3cuIFRoZSBmaXJzdCBzdGVwIHN0cmVhbXMgdGVybWluYWwtc3R5bGUKICAgICAgICBwcm9ncmVzcyB1cGRhdGVzIGFuZCB0aGVuIG1vdmVzIGF1dG9tYXRpY2FsbHkgdG8gdGhlIHJlYWR5IHN0ZXAuCiAgICAgIDwvcD4KICAgICAgPGRlZXMtYnV0dG9uCiAgICAgICAgQGNsaWNrPSR7YXN5bmMoKT0+e2lmKCFzKXtzPSEwO3RyeXtsZXQgZT1hd2FpdCB5MWUuY3JlYXRlQW5kU2hvdyh7Y3VycmVudFZlcnNpb246IjMuNzkuMCIsdXBkYXRlZFZlcnNpb246IjMuODAuMCIsbW9yZUluZm9Vcmw6Imh0dHBzOi8vY29kZS5mb3NzLmdsb2JhbC9kZXNpZ24uZXN0YXRlL2RlZXMtY2F0YWxvZyIsY2hhbmdlbG9nVXJsOiJodHRwczovL2NvZGUuZm9zcy5nbG9iYWwvZGVzaWduLmVzdGF0ZS9kZWVzLWNhdGFsb2cvLS9ibG9iL21haW4vY2hhbmdlbG9nLm1kIixzdWNjZXNzQWN0aW9uOiJjbG9zZSIsc3VjY2Vzc0RlbGF5TXM6MWU0fSksdD1be2xpbmU6IkNoZWNraW5nIHJlbGVhc2UgbWFuaWZlc3QiLHBlcmNlbnRhZ2U6MTIsZGVsYXk6NTUwfSx7bGluZToiRG93bmxvYWRpbmcgc2lnbmVkIGJ1bmRsZSIscGVyY2VudGFnZTozMyxkZWxheTo3MDB9LHtsaW5lOiJWZXJpZnlpbmcgY2hlY2tzdW0iLHBlcmNlbnRhZ2U6NTEsZGVsYXk6NjUwfSx7bGluZToiQXBwbHlpbmcgdXBkYXRlIGZpbGVzIixwZXJjZW50YWdlOjc0LGRlbGF5OjgwMH0se2xpbmU6IkNsZWFuaW5nIHVwIHByZXZpb3VzIHJlbGVhc2UiLHBlcmNlbnRhZ2U6OTEsZGVsYXk6NjAwfV07ZS51cGRhdGVQcm9ncmVzcyh7c3RhdHVzVGV4dDoiQ2hlY2tpbmcgcmVsZWFzZSBtYW5pZmVzdC4uLiIsdGVybWluYWxMaW5lczpbIkNoZWNraW5nIHJlbGVhc2UgbWFuaWZlc3QiXSxwZXJjZW50YWdlOjEyLGluZGV0ZXJtaW5hdGU6ITB9KTtmb3IobGV0W2Escl1vZiB0LmVudHJpZXMoKSlhPjAmJihlLmFwcGVuZFByb2dyZXNzTGluZShyLmxpbmUpLGUudXBkYXRlUHJvZ3Jlc3Moe3BlcmNlbnRhZ2U6ci5wZXJjZW50YWdlLHN0YXR1c1RleHQ6YCR7ci5saW5lfS4uLmB9KSksYXdhaXQgZTdhKHIuZGVsYXkpO2F3YWl0IGUubWFya1VwZGF0ZVJlYWR5KCksYXdhaXQgZTdhKDEwNTAwKX1maW5hbGx5e3M9ITF9fX19CiAgICAgID5TaG93IHVwZGF0ZXIgZmxvdzwvZGVlcy1idXR0b24+CiAgICA8L2Rpdj4KICBgfSwiZGVtb0Z1bmMiKX0pO3ZhciBlNCxVbix5MWUsRnJ0PWcoKCk9PntwZSgpO2E3YSgpO2kxZSgpO0NyKCk7ZTQ9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LFVuPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSx5MWU9KCgpPT57bGV0IHM9W25lKCJkZWVzLXVwZGF0ZXIiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXSxPLCQ9W10sRT1bXTt2YXIgSD1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1VwZGF0ZXIiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgaz10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZ30pXSxwPVtMKHt0eXBlOlN0cmluZ30pXSxjPVtMKHt0eXBlOlN0cmluZ30pXSx4PVtMKHt0eXBlOlN0cmluZ30pXSx5PVtMKHt0eXBlOlN0cmluZ30pXSxOPVtMKHt0eXBlOk51bWJlcn0pXSxPPVtMKHt0eXBlOlN0cmluZ30pXSxlNCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImN1cnJlbnRWZXJzaW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJjdXJyZW50VmVyc2lvbiJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLmN1cnJlbnRWZXJzaW9uLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MuY3VycmVudFZlcnNpb249SX0sInNldCIpfSxtZXRhZGF0YTprfSxvLGwpLGU0KHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidXBkYXRlZFZlcnNpb24iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+InVwZGF0ZWRWZXJzaW9uImluIFMsImhhcyIpLGdldDppKFM9PlMudXBkYXRlZFZlcnNpb24sImdldCIpLHNldDppKChTLEkpPT57Uy51cGRhdGVkVmVyc2lvbj1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LGQsdSksZTQodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtb3JlSW5mb1VybCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4ibW9yZUluZm9VcmwiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5tb3JlSW5mb1VybCwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLm1vcmVJbmZvVXJsPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sYix2KSxlNCh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNoYW5nZWxvZ1VybCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4iY2hhbmdlbG9nVXJsImluIFMsImhhcyIpLGdldDppKFM9PlMuY2hhbmdlbG9nVXJsLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MuY2hhbmdlbG9nVXJsPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sbSxmKSxlNCh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InN1Y2Nlc3NBY3Rpb24iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+InN1Y2Nlc3NBY3Rpb24iaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5zdWNjZXNzQWN0aW9uLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1Muc3VjY2Vzc0FjdGlvbj1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LE0seiksZTQodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzdWNjZXNzRGVsYXlNcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4ic3VjY2Vzc0RlbGF5TXMiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5zdWNjZXNzRGVsYXlNcywiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLnN1Y2Nlc3NEZWxheU1zPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sQyxfKSxlNCh0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InN1Y2Nlc3NBY3Rpb25MYWJlbCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4ic3VjY2Vzc0FjdGlvbkxhYmVsImluIFMsImhhcyIpLGdldDppKFM9PlMuc3VjY2Vzc0FjdGlvbkxhYmVsLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1Muc3VjY2Vzc0FjdGlvbkxhYmVsPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sJCxFKSxlNChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTprfSxudWxsLHQpLEg9YT1lLnZhbHVlLGsmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6a30pfXN0YXRpYyBkZW1vPXQ3YTtzdGF0aWMgZGVtb0dyb3Vwcz1bIlV0aWxpdHkiXTtzdGF0aWMgYXN5bmMgY3JlYXRlQW5kU2hvdyhrPXt9KXtsZXQgUz1uZXcgSDtyZXR1cm4gUy5jdXJyZW50VmVyc2lvbj1rLmN1cnJlbnRWZXJzaW9uPz8iIixTLnVwZGF0ZWRWZXJzaW9uPWsudXBkYXRlZFZlcnNpb24/PyIiLFMubW9yZUluZm9Vcmw9ay5tb3JlSW5mb1VybD8/IiIsUy5jaGFuZ2Vsb2dVcmw9ay5jaGFuZ2Vsb2dVcmw/PyIiLFMuc3VjY2Vzc0FjdGlvbj1rLnN1Y2Nlc3NBY3Rpb24/PyJjbG9zZSIsUy5zdWNjZXNzRGVsYXlNcz1rLnN1Y2Nlc3NEZWxheU1zPz8xZTQsUy5zdWNjZXNzQWN0aW9uTGFiZWw9ay5zdWNjZXNzQWN0aW9uTGFiZWw/PyIiLFMub25TdWNjZXNzQWN0aW9uPWsub25TdWNjZXNzQWN0aW9uPz9udWxsLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoUyksYXdhaXQgUy5zaG93KCksU30jZT1Vbih0aGlzLG8sIiIpO2dldCBjdXJyZW50VmVyc2lvbigpe3JldHVybiB0aGlzLiNlfXNldCBjdXJyZW50VmVyc2lvbihrKXt0aGlzLiNlPWt9I3Q9KFVuKHRoaXMsbCksVW4odGhpcyxkLCIiKSk7Z2V0IHVwZGF0ZWRWZXJzaW9uKCl7cmV0dXJuIHRoaXMuI3R9c2V0IHVwZGF0ZWRWZXJzaW9uKGspe3RoaXMuI3Q9a30jYT0oVW4odGhpcyx1KSxVbih0aGlzLGIsIiIpKTtnZXQgbW9yZUluZm9VcmwoKXtyZXR1cm4gdGhpcy4jYX1zZXQgbW9yZUluZm9Vcmwoayl7dGhpcy4jYT1rfSNzPShVbih0aGlzLHYpLFVuKHRoaXMsbSwiIikpO2dldCBjaGFuZ2Vsb2dVcmwoKXtyZXR1cm4gdGhpcy4jc31zZXQgY2hhbmdlbG9nVXJsKGspe3RoaXMuI3M9a30jaT0oVW4odGhpcyxmKSxVbih0aGlzLE0sImNsb3NlIikpO2dldCBzdWNjZXNzQWN0aW9uKCl7cmV0dXJuIHRoaXMuI2l9c2V0IHN1Y2Nlc3NBY3Rpb24oayl7dGhpcy4jaT1rfSNyPShVbih0aGlzLHopLFVuKHRoaXMsQywxZTQpKTtnZXQgc3VjY2Vzc0RlbGF5TXMoKXtyZXR1cm4gdGhpcy4jcn1zZXQgc3VjY2Vzc0RlbGF5TXMoayl7dGhpcy4jcj1rfSNvPShVbih0aGlzLF8pLFVuKHRoaXMsJCwiIikpO2dldCBzdWNjZXNzQWN0aW9uTGFiZWwoKXtyZXR1cm4gdGhpcy4jb31zZXQgc3VjY2Vzc0FjdGlvbkxhYmVsKGspe3RoaXMuI289a31zdGVwcGVyPShVbih0aGlzLEUpLG51bGwpO3Byb2dyZXNzU3RlcD1udWxsO3Nob3dQcm9taXNlPW51bGw7b25TdWNjZXNzQWN0aW9uPW51bGw7c3RhdGljIHN0eWxlcz1bSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YGB9YXN5bmMgY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuc2hvdygpfWFzeW5jIHNob3coKXtpZighdGhpcy5zdGVwcGVyPy5pc0Nvbm5lY3RlZCl7aWYodGhpcy5zaG93UHJvbWlzZSlyZXR1cm4gdGhpcy5zaG93UHJvbWlzZTt0aGlzLnNob3dQcm9taXNlPXRoaXMub3BlblN0ZXBwZXJGbG93KCk7dHJ5e2F3YWl0IHRoaXMuc2hvd1Byb21pc2V9ZmluYWxseXt0aGlzLnNob3dQcm9taXNlPW51bGx9fX11cGRhdGVQcm9ncmVzcyhrKXshdGhpcy5zdGVwcGVyfHwhdGhpcy5wcm9ncmVzc1N0ZXB8fHRoaXMuc3RlcHBlci51cGRhdGVQcm9ncmVzc1N0ZXAoayx0aGlzLnByb2dyZXNzU3RlcCl9YXBwZW5kUHJvZ3Jlc3NMaW5lKGspeyF0aGlzLnN0ZXBwZXJ8fCF0aGlzLnByb2dyZXNzU3RlcHx8dGhpcy5zdGVwcGVyLmFwcGVuZFByb2dyZXNzU3RlcExpbmUoayx0aGlzLnByb2dyZXNzU3RlcCl9bWFya1VwZGF0ZUVycm9yKGspe3RoaXMuYXBwZW5kUHJvZ3Jlc3NMaW5lKGBFcnJvcjogJHtrfWApLHRoaXMudXBkYXRlUHJvZ3Jlc3Moe2luZGV0ZXJtaW5hdGU6ITEsc3RhdHVzVGV4dDprfSl9YXN5bmMgbWFya1VwZGF0ZVJlYWR5KCl7IXRoaXMuc3RlcHBlcnx8IXRoaXMucHJvZ3Jlc3NTdGVwfHwodGhpcy5zdGVwcGVyLnVwZGF0ZVByb2dyZXNzU3RlcCh7cGVyY2VudGFnZToxMDAsaW5kZXRlcm1pbmF0ZTohMSxzdGF0dXNUZXh0OiJVcGRhdGUgcmVhZHkuIn0sdGhpcy5wcm9ncmVzc1N0ZXApLHRoaXMuc3RlcHBlci5hcHBlbmRQcm9ncmVzc1N0ZXBMaW5lKCJVcGRhdGUgcmVhZHkiLHRoaXMucHJvZ3Jlc3NTdGVwKSx0aGlzLnN0ZXBwZXIuc2VsZWN0ZWRTdGVwPT09dGhpcy5wcm9ncmVzc1N0ZXAmJnRoaXMuc3RlcHBlci5nb05leHQoKSl9YXN5bmMgZGVzdHJveSgpe2xldCBrPXRoaXMuc3RlcHBlcjt0aGlzLnN0ZXBwZXI9bnVsbCx0aGlzLnByb2dyZXNzU3RlcD1udWxsLGs/LmlzQ29ubmVjdGVkJiZhd2FpdCBrLmRlc3Ryb3koKSx0aGlzLnBhcmVudEVsZW1lbnQmJnRoaXMucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzKX1hc3luYyBvcGVuU3RlcHBlckZsb3coKXtsZXR7c3RlcHM6ayxwcm9ncmVzc1N0ZXA6U309dGhpcy5jcmVhdGVVcGRhdGVyU3RlcHMoKTt0aGlzLnByb2dyZXNzU3RlcD1TLHRoaXMuc3RlcHBlcj1hd2FpdCBheC5jcmVhdGVBbmRTaG93KHtzdGVwczprLGNhbmNlbGFibGU6ITF9KX1jcmVhdGVVcGRhdGVyU3RlcHMoKXtsZXQgaz10aGlzLmdldExpbmtNZW51T3B0aW9ucygpLFM9e3RpdGxlOiJVcGRhdGluZyB0aGUgYXBwbGljYXRpb24iLGNvbnRlbnQ6dGhpcy5yZW5kZXJQcm9ncmVzc0NvbnRlbnQoKSxwcm9ncmVzc1N0ZXA6e2xhYmVsOnRoaXMuZ2V0UHJvZ3Jlc3NMYWJlbCgpLHBlcmNlbnRhZ2U6NSxpbmRldGVybWluYXRlOiEwLHN0YXR1c1Jvd3M6NCxzdGF0dXNUZXh0OiJQcmVwYXJpbmcgdXBkYXRlLi4uIix0ZXJtaW5hbExpbmVzOlsiUHJlcGFyaW5nIHVwZGF0ZSJdfSxtZW51T3B0aW9uczprLmxlbmd0aD4wP2s6dm9pZCAwfSxJPXt0aXRsZTp0aGlzLnVwZGF0ZWRWZXJzaW9uP2BWZXJzaW9uICR7dGhpcy51cGRhdGVkVmVyc2lvbn0gcmVhZHlgOiJVcGRhdGUgcmVhZHkiLGNvbnRlbnQ6dGhpcy5yZW5kZXJSZWFkeUNvbnRlbnQoKSxwcm9ncmVzc1N0ZXA6e2xhYmVsOnRoaXMuZ2V0U3VjY2Vzc0NvdW50ZG93bkxhYmVsKHRoaXMuZ2V0U3VjY2Vzc0RlbGF5U2Vjb25kcygpKSxwZXJjZW50YWdlOjAsaW5kZXRlcm1pbmF0ZTohMSxzaG93UGVyY2VudGFnZTohMSxzdGF0dXNSb3dzOjIsc3RhdHVzVGV4dDp0aGlzLmdldFN1Y2Nlc3NDb3VudGRvd25TdGF0dXModGhpcy5nZXRTdWNjZXNzRGVsYXlTZWNvbmRzKCkpfSx2YWxpZGF0aW9uRnVuYzppKGFzeW5jKFAsUixLKT0+e2F3YWl0IHRoaXMucnVuU3VjY2Vzc0NvdW50ZG93bihQLEksSyl9LCJ2YWxpZGF0aW9uRnVuYyIpfTtyZXR1cm57c3RlcHM6W1MsSV0scHJvZ3Jlc3NTdGVwOlN9fWdldFByb2dyZXNzTGFiZWwoKXtyZXR1cm4gdGhpcy5jdXJyZW50VmVyc2lvbiYmdGhpcy51cGRhdGVkVmVyc2lvbj9gJHt0aGlzLmN1cnJlbnRWZXJzaW9ufSAtPiAke3RoaXMudXBkYXRlZFZlcnNpb259YDp0aGlzLnVwZGF0ZWRWZXJzaW9uP2BQcmVwYXJpbmcgJHt0aGlzLnVwZGF0ZWRWZXJzaW9ufWA6IkFwcGxpY2F0aW9uIHVwZGF0ZSJ9Z2V0U3VjY2Vzc0RlbGF5U2Vjb25kcygpe3JldHVybiBNYXRoLm1heCgxLE1hdGguY2VpbCh0aGlzLnN1Y2Nlc3NEZWxheU1zLzFlMykpfWdldFN1Y2Nlc3NBY3Rpb25EaXNwbGF5TGFiZWwoKXtyZXR1cm4gdGhpcy5zdWNjZXNzQWN0aW9uTGFiZWw/dGhpcy5zdWNjZXNzQWN0aW9uTGFiZWw6dGhpcy5vblN1Y2Nlc3NBY3Rpb24/IkNvbnRpbnVpbmcgYXV0b21hdGljYWxseSI6dGhpcy5zdWNjZXNzQWN0aW9uPT09InJlbG9hZCI/IlJlbG9hZGluZyBhcHBsaWNhdGlvbiI6IkNsb3NpbmcgdXBkYXRlciJ9Z2V0U3VjY2Vzc0NvdW50ZG93bkxhYmVsKGspe3JldHVybmAke3RoaXMuZ2V0U3VjY2Vzc0FjdGlvbkRpc3BsYXlMYWJlbCgpfSBpbiAke2t9c2B9Z2V0U3VjY2Vzc0NvdW50ZG93blN0YXR1cyhrKXtsZXQgUz1rPT09MT8ic2Vjb25kIjoic2Vjb25kcyI7cmV0dXJuYCR7dGhpcy5nZXRTdWNjZXNzQWN0aW9uRGlzcGxheUxhYmVsKCl9IGluICR7a30gJHtTfS5gfWdldFN1Y2Nlc3NBY3Rpb25Ob3dMYWJlbCgpe3JldHVybmAke3RoaXMuZ2V0U3VjY2Vzc0FjdGlvbkRpc3BsYXlMYWJlbCgpfSBub3cuLi5gfWdldExpbmtNZW51T3B0aW9ucygpe2xldCBrPVtdO3JldHVybiB0aGlzLm1vcmVJbmZvVXJsJiZrLnB1c2goe25hbWU6Ik1vcmUgaW5mbyIsYWN0aW9uOmkoYXN5bmMoKT0+e3RoaXMub3BlbkV4dGVybmFsVXJsKHRoaXMubW9yZUluZm9VcmwpfSwiYWN0aW9uIil9KSx0aGlzLmNoYW5nZWxvZ1VybCYmay5wdXNoKHtuYW1lOiJDaGFuZ2Vsb2ciLGFjdGlvbjppKGFzeW5jKCk9Pnt0aGlzLm9wZW5FeHRlcm5hbFVybCh0aGlzLmNoYW5nZWxvZ1VybCl9LCJhY3Rpb24iKX0pLGt9cmVuZGVyVmVyc2lvbk1ldGEoayxTKXtyZXR1cm4gd2AKICAgICAgPGRpdgogICAgICAgIHN0eWxlPSJkaXNwbGF5OiBncmlkOyBnYXA6IDRweDsgbWluLXdpZHRoOiAxMzJweDsgcGFkZGluZzogMTJweCAxNHB4OyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1zdWJ0bGUpOyBib3JkZXItcmFkaXVzOiA4cHg7IGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItaG92ZXIpOyIKICAgICAgPgogICAgICAgIDxkaXYKICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDExcHg7IGZvbnQtd2VpZ2h0OiA2MDA7IGxldHRlci1zcGFjaW5nOiAwLjA1ZW07IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOyIKICAgICAgICA+CiAgICAgICAgICAke2t9CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdgogICAgICAgICAgc3R5bGU9JHtgZm9udC1mYW1pbHk6ICR7aW5lfTsgZm9udC1zaXplOiAxM3B4OyBmb250LXdlaWdodDogNjAwOyBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTsgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTtgfQogICAgICAgID4KICAgICAgICAgICR7U30KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfXJlbmRlclByb2dyZXNzQ29udGVudCgpe3JldHVybiB3YAogICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBncmlkOyBnYXA6IDE4cHg7IGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTsiPgogICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGdyaWQ7IGdhcDogNnB4OyI+CiAgICAgICAgICA8ZGl2CiAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDExcHg7IGZvbnQtd2VpZ2h0OiA2MDA7IGxldHRlci1zcGFjaW5nOiAwLjA4ZW07IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOyIKICAgICAgICAgID4KICAgICAgICAgICAgQXBwbGljYXRpb24gdXBkYXRlCiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYKICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMThweDsgbGluZS1oZWlnaHQ6IDEuMzU7IGZvbnQtd2VpZ2h0OiA2MDA7IGxldHRlci1zcGFjaW5nOiAtMC4wMmVtOyBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOyIKICAgICAgICAgID4KICAgICAgICAgICAgRG93bmxvYWRpbmcgYW5kIGFwcGx5aW5nIHRoZSBsYXRlc3QgcmVsZWFzZS4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHAgc3R5bGU9Im1hcmdpbjogMDsgZm9udC1zaXplOiAxNHB4OyBsaW5lLWhlaWdodDogMS42NTsgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOyI+CiAgICAgICAgICAgICR7dGhpcy5jdXJyZW50VmVyc2lvbiYmdGhpcy51cGRhdGVkVmVyc2lvbj93YE1vdmluZyBmcm9tIDxzdHJvbmc+JHt0aGlzLmN1cnJlbnRWZXJzaW9ufTwvc3Ryb25nPiB0byA8c3Ryb25nPiR7dGhpcy51cGRhdGVkVmVyc2lvbn08L3N0cm9uZz4uYDp0aGlzLnVwZGF0ZWRWZXJzaW9uP3dgUHJlcGFyaW5nIDxzdHJvbmc+JHt0aGlzLnVwZGF0ZWRWZXJzaW9ufTwvc3Ryb25nPiBmb3IgaW5zdGFsbGF0aW9uLmA6IlRoZSB1cGRhdGVyIGlzIGZldGNoaW5nIHRoZSBuZXdlc3QgYnVpbGQgYW5kIHByZXBhcmluZyBpdCBmb3IgaW5zdGFsbGF0aW9uLiJ9CiAgICAgICAgICA8L3A+CiAgICAgICAgPC9kaXY+CgogICAgICAgICR7dGhpcy5jdXJyZW50VmVyc2lvbnx8dGhpcy51cGRhdGVkVmVyc2lvbj93YAogICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsgZ2FwOiAxMHB4OyI+CiAgICAgICAgICAgICAgICAke3RoaXMuY3VycmVudFZlcnNpb24/dGhpcy5yZW5kZXJWZXJzaW9uTWV0YSgiQ3VycmVudCB2ZXJzaW9uIix0aGlzLmN1cnJlbnRWZXJzaW9uKToiIn0KICAgICAgICAgICAgICAgICR7dGhpcy51cGRhdGVkVmVyc2lvbj90aGlzLnJlbmRlclZlcnNpb25NZXRhKCJJbmNvbWluZyB2ZXJzaW9uIix0aGlzLnVwZGF0ZWRWZXJzaW9uKToiIn0KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYDoiIn0KCiAgICAgICAgPGRpdgogICAgICAgICAgc3R5bGU9ImRpc3BsYXk6IGdyaWQ7IGdhcDogNHB4OyBwYWRkaW5nOiAxNHB4IDE2cHg7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLXN1YnRsZSk7IGJvcmRlci1yYWRpdXM6IDhweDsgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1ob3Zlcik7IgogICAgICAgID4KICAgICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsiPgogICAgICAgICAgICBBdXRvbWF0aWMgZmxvdwogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJmb250LXNpemU6IDEzcHg7IGxpbmUtaGVpZ2h0OiAxLjY7IGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOyI+CiAgICAgICAgICAgIFRoZSB1cGRhdGVyIGNvbnRpbnVlcyBvbiBpdHMgb3duIG9uY2UgdGhlIG5ldyBidWlsZCBpcyBpbnN0YWxsZWQgYW5kIHZlcmlmaWVkLgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJSZWFkeUNvbnRlbnQoKXtsZXQgaz10aGlzLmdldFN1Y2Nlc3NEZWxheVNlY29uZHMoKTtyZXR1cm4gd2AKICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTogZ3JpZDsgZ2FwOiAxOHB4OyBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXNlY29uZGFyeSk7Ij4KICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBncmlkOyBnYXA6IDZweDsiPgogICAgICAgICAgPGRpdgogICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMXB4OyBmb250LXdlaWdodDogNjAwOyBsZXR0ZXItc3BhY2luZzogMC4wOGVtOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsiCiAgICAgICAgICA+CiAgICAgICAgICAgIFVwZGF0ZSBjb21wbGV0ZQogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2CiAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDE4cHg7IGxpbmUtaGVpZ2h0OiAxLjM1OyBmb250LXdlaWdodDogNjAwOyBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTsgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsiCiAgICAgICAgICA+CiAgICAgICAgICAgICR7dGhpcy51cGRhdGVkVmVyc2lvbj93YFZlcnNpb24gPHNwYW4gc3R5bGU9JHtgZm9udC1mYW1pbHk6ICR7aW5lfTsgZm9udC1zaXplOiAwLjk1ZW07YH0+JHt0aGlzLnVwZGF0ZWRWZXJzaW9ufTwvc3Bhbj4gaXMgcmVhZHkgdG8gdXNlLmA6IlRoZSBuZXcgdmVyc2lvbiBpcyByZWFkeSB0byB1c2UuIn0KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHAgc3R5bGU9Im1hcmdpbjogMDsgZm9udC1zaXplOiAxNHB4OyBsaW5lLWhlaWdodDogMS42NTsgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOyI+CiAgICAgICAgICAgIFRoZSBuZXcgYnVpbGQgaGFzIGJlZW4gaW5zdGFsbGVkIGFuZCB2ZXJpZmllZC4gWW91IGNhbiByZXZpZXcgcmVsZWFzZSBkZXRhaWxzIGJlbG93IHdoaWxlIHRoZSBuZXh0IGFjdGlvbiBydW5zIGF1dG9tYXRpY2FsbHkuCiAgICAgICAgICA8L3A+CiAgICAgICAgPC9kaXY+CgogICAgICAgICR7dGhpcy51cGRhdGVkVmVyc2lvbj93YAogICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsgZ2FwOiAxMHB4OyI+CiAgICAgICAgICAgICAgICAke3RoaXMucmVuZGVyVmVyc2lvbk1ldGEoIkluc3RhbGxlZCB2ZXJzaW9uIix0aGlzLnVwZGF0ZWRWZXJzaW9uKX0KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYDoiIn0KCiAgICAgICAgPGRpdgogICAgICAgICAgc3R5bGU9ImRpc3BsYXk6IGdyaWQ7IGdhcDogNHB4OyBwYWRkaW5nOiAxNHB4IDE2cHg7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLXN1YnRsZSk7IGJvcmRlci1yYWRpdXM6IDhweDsgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1ob3Zlcik7IgogICAgICAgID4KICAgICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsiPgogICAgICAgICAgICBOZXh0IGFjdGlvbgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJmb250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAxLjU7IGZvbnQtd2VpZ2h0OiA2MDA7IGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7Ij4KICAgICAgICAgICAgJHt0aGlzLmdldFN1Y2Nlc3NBY3Rpb25EaXNwbGF5TGFiZWwoKX0KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBzdHlsZT0iZm9udC1zaXplOiAxM3B4OyBsaW5lLWhlaWdodDogMS42OyBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsiPgogICAgICAgICAgICBSdW5zIGF1dG9tYXRpY2FsbHkgaW4gJHtrfSBzZWNvbmRzLgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1hc3luYyBydW5TdWNjZXNzQ291bnRkb3duKGssUyxJKXtsZXQgUD1NYXRoLm1heCgxZTMsdGhpcy5zdWNjZXNzRGVsYXlNcyksUj1EYXRlLm5vdygpO2Zvcig7IUk/LmFib3J0ZWQ7KXtsZXQgSz1NYXRoLm1pbihQLERhdGUubm93KCktUiksVj1NYXRoLm1heCgwLFAtSyksVz1NYXRoLm1heCgwLE1hdGguY2VpbChWLzFlMykpO2lmKGsudXBkYXRlUHJvZ3Jlc3NTdGVwKHtsYWJlbDpWPjA/dGhpcy5nZXRTdWNjZXNzQ291bnRkb3duTGFiZWwoVyk6dGhpcy5nZXRTdWNjZXNzQWN0aW9uTm93TGFiZWwoKSxwZXJjZW50YWdlOksvUCoxMDAsaW5kZXRlcm1pbmF0ZTohMSxzaG93UGVyY2VudGFnZTohMSxzdGF0dXNUZXh0OlY+MD90aGlzLmdldFN1Y2Nlc3NDb3VudGRvd25TdGF0dXMoVyk6dGhpcy5nZXRTdWNjZXNzQWN0aW9uTm93TGFiZWwoKX0sUyksVjw9MClicmVhaztpZighYXdhaXQgdGhpcy53YWl0Rm9yQ291bnRkb3duVGljaygxMDAsSSkpcmV0dXJufWF3YWl0IHRoaXMucnVuQ29uZmlndXJlZFN1Y2Nlc3NBY3Rpb24oKX1hc3luYyB3YWl0Rm9yQ291bnRkb3duVGljayhrLFMpe3JldHVybiBuZXcgUHJvbWlzZShJPT57bGV0IFA9ITEsUj1pKFc9PntQfHwoUD0hMCxTJiZTLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixLKSxJKFcpKX0sImZpbmlzaCIpLEs9aSgoKT0+e3dpbmRvdy5jbGVhclRpbWVvdXQoViksUighMSl9LCJoYW5kbGVBYm9ydCIpLFY9d2luZG93LnNldFRpbWVvdXQoKCk9PntSKCEwKX0sayk7UyYmUy5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsSyx7b25jZTohMH0pfSl9YXN5bmMgcnVuQ29uZmlndXJlZFN1Y2Nlc3NBY3Rpb24oKXtpZih0aGlzLm9uU3VjY2Vzc0FjdGlvbil7YXdhaXQgdGhpcy5vblN1Y2Nlc3NBY3Rpb24oKTtyZXR1cm59aWYodGhpcy5zdWNjZXNzQWN0aW9uPT09InJlbG9hZCIpe2F3YWl0IHRoaXMuZGVzdHJveSgpLHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtyZXR1cm59YXdhaXQgdGhpcy5kZXN0cm95KCl9b3BlbkV4dGVybmFsVXJsKGspe3dpbmRvdy5vcGVuKGssIl9ibGFuayIsIm5vb3BlbmVyLG5vcmVmZXJyZXIiKX1zdGF0aWN7VW4oYSx0KX19O3JldHVybiBIPWF9KSgpfSk7dmFyIHM3YT1nKCgpPT57RnJ0KCl9KTt2YXIgaTdhPWcoKCk9PntUZXQoKX0pO3ZhciByN2E9ZygoKT0+e3FnYSgpO0tnYSgpO0pnYSgpO3M3YSgpO2k3YSgpfSk7dmFyIERnLGFjLG83YSx3MWU9ZygoKT0+e3BlKCk7a3QoKTtwdCgpO1VhKCk7b3IoKTtvcigpO0owKCk7eGgoKTt4aCgpO0RnPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxhYz1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sbzdhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy13b3Jrc3BhY2UtZmlsZXRyZWUiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXTt2YXIgTz1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1dvcmtzcGFjZUZpbGV0cmVlIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0ICQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpPYmplY3R9KV0scD1bTCh7dHlwZTpTdHJpbmd9KV0sYz1bTCh7dHlwZTpTdHJpbmd9KV0seD1bWSgpXSx5PVtZKCldLE49W1koKV0sRGcodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJleGVjdXRpb25FbnZpcm9ubWVudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShFPT4iZXhlY3V0aW9uRW52aXJvbm1lbnQiaW4gRSwiaGFzIiksZ2V0OmkoRT0+RS5leGVjdXRpb25FbnZpcm9ubWVudCwiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLmV4ZWN1dGlvbkVudmlyb25tZW50PUh9LCJzZXQiKX0sbWV0YWRhdGE6JH0sbyxsKSxEZyh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InJvb3RQYXRoIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEU9PiJyb290UGF0aCJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLnJvb3RQYXRoLCJnZXQiKSxzZXQ6aSgoRSxIKT0+e0Uucm9vdFBhdGg9SH0sInNldCIpfSxtZXRhZGF0YTokfSxkLHUpLERnKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VsZWN0ZWRQYXRoIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEU9PiJzZWxlY3RlZFBhdGgiaW4gRSwiaGFzIiksZ2V0OmkoRT0+RS5zZWxlY3RlZFBhdGgsImdldCIpLHNldDppKChFLEgpPT57RS5zZWxlY3RlZFBhdGg9SH0sInNldCIpfSxtZXRhZGF0YTokfSxiLHYpLERnKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToidHJlZURhdGEiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+InRyZWVEYXRhImluIEUsImhhcyIpLGdldDppKEU9PkUudHJlZURhdGEsImdldCIpLHNldDppKChFLEgpPT57RS50cmVlRGF0YT1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LG0sZiksRGcodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpc0xvYWRpbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+ImlzTG9hZGluZyJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLmlzTG9hZGluZywiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLmlzTG9hZGluZz1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LE0seiksRGcodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJlcnJvck1lc3NhZ2UiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+ImVycm9yTWVzc2FnZSJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLmVycm9yTWVzc2FnZSwiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLmVycm9yTWVzc2FnZT1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LEMsXyksRGcobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6JH0sbnVsbCx0KSxPPWE9ZS52YWx1ZSwkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOiR9KX1zdGF0aWMgZGVtbz1pKCgpPT53YAogICAgPGRpdiBzdHlsZT0id2lkdGg6IDMwMHB4OyBoZWlnaHQ6IDQwMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij4KICAgICAgPGRlZXMtd29ya3NwYWNlLWZpbGV0cmVlPjwvZGVlcy13b3Jrc3BhY2UtZmlsZXRyZWU+CiAgICA8L2Rpdj4KICBgLCJkZW1vIik7c3RhdGljIGRlbW9Hcm91cHM9WyJXb3Jrc3BhY2UiXTsjZT1hYyh0aGlzLG8sbnVsbCk7Z2V0IGV4ZWN1dGlvbkVudmlyb25tZW50KCl7cmV0dXJuIHRoaXMuI2V9c2V0IGV4ZWN1dGlvbkVudmlyb25tZW50KCQpe3RoaXMuI2U9JH0jdD0oYWModGhpcyxsKSxhYyh0aGlzLGQsIi8iKSk7Z2V0IHJvb3RQYXRoKCl7cmV0dXJuIHRoaXMuI3R9c2V0IHJvb3RQYXRoKCQpe3RoaXMuI3Q9JH0jYT0oYWModGhpcyx1KSxhYyh0aGlzLGIsIiIpKTtnZXQgc2VsZWN0ZWRQYXRoKCl7cmV0dXJuIHRoaXMuI2F9c2V0IHNlbGVjdGVkUGF0aCgkKXt0aGlzLiNhPSR9I3M9KGFjKHRoaXMsdiksYWModGhpcyxtLFtdKSk7Z2V0IHRyZWVEYXRhKCl7cmV0dXJuIHRoaXMuI3N9c2V0IHRyZWVEYXRhKCQpe3RoaXMuI3M9JH0jaT0oYWModGhpcyxmKSxhYyh0aGlzLE0sITEpKTtnZXQgaXNMb2FkaW5nKCl7cmV0dXJuIHRoaXMuI2l9c2V0IGlzTG9hZGluZygkKXt0aGlzLiNpPSR9I3I9KGFjKHRoaXMseiksYWModGhpcyxDLCIiKSk7Z2V0IGVycm9yTWVzc2FnZSgpe3JldHVybiB0aGlzLiNyfXNldCBlcnJvck1lc3NhZ2UoJCl7dGhpcy4jcj0kfWV4cGFuZGVkUGF0aHM9KGFjKHRoaXMsXyksbmV3IFNldCk7bG9hZFRyZWVTdGFydGVkPSExO2NsaXBib2FyZFBhdGg9bnVsbDtjbGlwYm9hcmRPcGVyYXRpb249bnVsbDtmaWxlV2F0Y2hlcj1udWxsO3JlZnJlc2hEZWJvdW5jZVRpbWVvdXQ9bnVsbDtsYXN0RXhlY3V0aW9uRW52aXJvbm1lbnQ9bnVsbDtzdGF0aWMgc3R5bGVzPVtIZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk4JSkiLCJoc2woMCAwJSA5JSkiKX07CiAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBzYW5zLXNlcmlmOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgfQoKICAgICAgLnRyZWUtY29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nOiA4cHggMDsKICAgICAgfQoKICAgICAgLnRyZWUtaXRlbSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDRweCA4cHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBtYXJnaW46IDFweCA0cHg7CiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjFzIGVhc2U7CiAgICAgIH0KCiAgICAgIC50cmVlLWl0ZW06aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5MyUpIiwiaHNsKDAgMCUgMTQlKSIpfTsKICAgICAgfQoKICAgICAgLnRyZWUtaXRlbS5zZWxlY3RlZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgMTAwJSA5NSUpIiwiaHNsKDIxMCA1MCUgMjAlKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTAgMTAwJSA0MCUpIiwiaHNsKDIxMCAxMDAlIDcwJSkiKX07CiAgICAgIH0KCiAgICAgIC50cmVlLWl0ZW0uc2VsZWN0ZWQ6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDEwMCUgOTIlKSIsImhzbCgyMTAgNTAlIDI1JSkiKX07CiAgICAgIH0KCiAgICAgIC5pbmRlbnQgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB3aWR0aDogMTZweDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQoKICAgICAgLmV4cGFuZC1pY29uIHsKICAgICAgICB3aWR0aDogMTZweDsKICAgICAgICBoZWlnaHQ6IDE2cHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNTAlKSIsImhzbCgwIDAlIDYwJSkiKX07CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5leHBhbmQtaWNvbi5leHBhbmRlZCB7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwogICAgICB9CgogICAgICAuZXhwYW5kLWljb24uaGlkZGVuIHsKICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC5maWxlLWljb24gewogICAgICAgIHdpZHRoOiAxNnB4OwogICAgICAgIGhlaWdodDogMTZweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDZweDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5maWxlLWljb24gZGVlcy1pY29uIHsKICAgICAgICB3aWR0aDogMTZweDsKICAgICAgICBoZWlnaHQ6IDE2cHg7CiAgICAgIH0KCiAgICAgIC5maWxlLWljb24uZm9sZGVyIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCg0NSA4MCUgNDUlKSIsImhzbCg0NSA3MCUgNTUlKSIpfTsKICAgICAgfQoKICAgICAgLmZpbGUtaWNvbi5maWxlIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDUwJSkiLCJoc2woMCAwJSA2MCUpIil9OwogICAgICB9CgogICAgICAuZmlsZS1pY29uLnR5cGVzY3JpcHQgewogICAgICAgIGNvbG9yOiBoc2woMjExIDYwJSA0OCUpOwogICAgICB9CgogICAgICAuZmlsZS1pY29uLmphdmFzY3JpcHQgewogICAgICAgIGNvbG9yOiBoc2woNTMgOTMlIDU0JSk7CiAgICAgIH0KCiAgICAgIC5maWxlLWljb24uanNvbiB7CiAgICAgICAgY29sb3I6IGhzbCg0NSA4MCUgNTAlKTsKICAgICAgfQoKICAgICAgLmZpbGUtaWNvbi5odG1sIHsKICAgICAgICBjb2xvcjogaHNsKDE0IDc3JSA1MiUpOwogICAgICB9CgogICAgICAuZmlsZS1pY29uLmNzcyB7CiAgICAgICAgY29sb3I6IGhzbCgyMjggNzclIDU5JSk7CiAgICAgIH0KCiAgICAgIC5maWxlLWljb24ubWFya2Rvd24gewogICAgICAgIGNvbG9yOiBoc2woMCAwJSA1MCUpOwogICAgICB9CgogICAgICAuZmlsZS1uYW1lIHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDIwJSkiLCJoc2woMCAwJSA4NSUpIil9OwogICAgICB9CgogICAgICAubG9hZGluZyB7CiAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA1MCUpIiwiaHNsKDAgMCUgNjAlKSIpfTsKICAgICAgfQoKICAgICAgLmVycm9yIHsKICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBjb2xvcjogaHNsKDAgNzAlIDUwJSk7CiAgICAgIH0KCiAgICAgIC5lbXB0eSB7CiAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA1MCUpIiwiaHNsKDAgMCUgNjAlKSIpfTsKICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgIH0KCiAgICAgIC5maWxldHJlZS10b29sYmFyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICBwYWRkaW5nOiAwIDEycHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4NSUpIiwiaHNsKDAgMCUgMTUlKSIpfTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTYlKSIsImhzbCgwIDAlIDglKSIpfTsKICAgICAgICBwb3NpdGlvbjogc3RpY2t5OwogICAgICAgIHRvcDogMDsKICAgICAgICB6LWluZGV4OiAxOwogICAgICB9CgogICAgICAudG9vbGJhci10aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA0MCUpIiwiaHNsKDAgMCUgNjAlKSIpfTsKICAgICAgfQoKICAgICAgLnRvb2xiYXItYWN0aW9ucyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBnYXA6IDRweDsKICAgICAgfQoKICAgICAgLnRvb2xiYXItYnV0dG9uIHsKICAgICAgICBwYWRkaW5nOiA0cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBvcGFjaXR5OiAwLjc7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cywgYmFja2dyb3VuZCAwLjE1czsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAzMCUpIiwiaHNsKDAgMCUgNzAlKSIpfTsKICAgICAgfQoKICAgICAgLnRvb2xiYXItYnV0dG9uOmhvdmVyIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAwJSAvIDAuMDgpIiwiaHNsKDAgMCUgMTAwJSAvIDAuMSkiKX07CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50P3RoaXMuaXNMb2FkaW5nP3dgCiAgICAgICAgPGRpdiBjbGFzcz0ibG9hZGluZyI+CiAgICAgICAgICBMb2FkaW5nIGZpbGVzLi4uCiAgICAgICAgPC9kaXY+CiAgICAgIGA6dGhpcy5lcnJvck1lc3NhZ2U/d2AKICAgICAgICA8ZGl2IGNsYXNzPSJlcnJvciI+CiAgICAgICAgICAke3RoaXMuZXJyb3JNZXNzYWdlfQogICAgICAgIDwvZGl2PgogICAgICBgOndgCiAgICAgIDxkaXYgY2xhc3M9ImZpbGV0cmVlLXRvb2xiYXIiPgogICAgICAgIDxzcGFuIGNsYXNzPSJ0b29sYmFyLXRpdGxlIj5FeHBsb3Jlcjwvc3Bhbj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0b29sYmFyLWFjdGlvbnMiPgogICAgICAgICAgPGRpdiBjbGFzcz0idG9vbGJhci1idXR0b24iIEBjbGljaz0keygpPT50aGlzLmNyZWF0ZU5ld0ZpbGUoIi8iKX0gdGl0bGU9Ik5ldyBGaWxlIj4KICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6ZmlsZVBsdXMifSBpY29uU2l6ZT0iMTYiPjwvZGVlcy1pY29uPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b29sYmFyLWJ1dHRvbiIgQGNsaWNrPSR7KCk9PnRoaXMuY3JlYXRlTmV3Rm9sZGVyKCIvIil9IHRpdGxlPSJOZXcgRm9sZGVyIj4KICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6Zm9sZGVyUGx1cyJ9IGljb25TaXplPSIxNiI+PC9kZWVzLWljb24+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgICR7dGhpcy50cmVlRGF0YS5sZW5ndGg9PT0wP3dgPGRpdiBjbGFzcz0iZW1wdHkiPk5vIGZpbGVzIGZvdW5kLjwvZGl2PmA6d2AKICAgICAgICAgICAgPGRpdiBjbGFzcz0idHJlZS1jb250YWluZXIiIEBjb250ZXh0bWVudT0ke3RoaXMuaGFuZGxlRW1wdHlTcGFjZUNvbnRleHRNZW51fT4KICAgICAgICAgICAgICAke3RoaXMucmVuZGVyVHJlZSh0aGlzLnRyZWVEYXRhKX0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgfQogICAgYDp3YAogICAgICAgIDxkaXYgY2xhc3M9ImVtcHR5Ij4KICAgICAgICAgIE5vIGV4ZWN1dGlvbiBlbnZpcm9ubWVudCBwcm92aWRlZC4KICAgICAgICA8L2Rpdj4KICAgICAgYH1yZW5kZXJUcmVlKCQpe3JldHVybiAkLm1hcChFPT50aGlzLnJlbmRlck5vZGUoRSkpfXJlbmRlck5vZGUoJCl7bGV0IEU9JC50eXBlPT09ImRpcmVjdG9yeSIsSD10aGlzLmV4cGFuZGVkUGF0aHMuaGFzKCQucGF0aCksaz0kLnBhdGg9PT10aGlzLnNlbGVjdGVkUGF0aCxTPXRoaXMuZ2V0RmlsZUljb25DbGFzcygkKTtyZXR1cm4gd2AKICAgICAgPGRpdgogICAgICAgIGNsYXNzPSJ0cmVlLWl0ZW0gJHtrPyJzZWxlY3RlZCI6IiJ9IgogICAgICAgIHN0eWxlPSJwYWRkaW5nLWxlZnQ6ICR7OCskLmxldmVsKjE2fXB4IgogICAgICAgIEBjbGljaz0ke0k9PnRoaXMuaGFuZGxlSXRlbUNsaWNrKEksJCl9CiAgICAgICAgQGNvbnRleHRtZW51PSR7ST0+dGhpcy5oYW5kbGVDb250ZXh0TWVudShJLCQpfQogICAgICA+CiAgICAgICAgPHNwYW4gY2xhc3M9ImV4cGFuZC1pY29uICR7SD8iZXhwYW5kZWQiOiIifSAke0U/IiI6ImhpZGRlbiJ9Ij4KICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHsibHVjaWRlOmNoZXZyb25SaWdodCJ9IGljb25TaXplPSIxMiI+PC9kZWVzLWljb24+CiAgICAgICAgPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJmaWxlLWljb24gJHtTfSI+CiAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7dGhpcy5nZXRGaWxlSWNvbigkKX0gaWNvblNpemU9IjE2Ij48L2RlZXMtaWNvbj4KICAgICAgICA8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9ImZpbGUtbmFtZSI+JHskLm5hbWV9PC9zcGFuPgogICAgICA8L2Rpdj4KICAgICAgJHtFJiZIJiYkLmNoaWxkcmVuP3RoaXMucmVuZGVyVHJlZSgkLmNoaWxkcmVuKToiIn0KICAgIGB9Z2V0RmlsZUljb24oJCl7aWYoJC50eXBlPT09ImRpcmVjdG9yeSIpcmV0dXJuIHRoaXMuZXhwYW5kZWRQYXRocy5oYXMoJC5wYXRoKT8ibHVjaWRlOmZvbGRlck9wZW4iOiJsdWNpZGU6Zm9sZGVyIjtzd2l0Y2goJC5uYW1lLnNwbGl0KCIuIikucG9wKCk/LnRvTG93ZXJDYXNlKCkpe2Nhc2UidHMiOmNhc2UidHN4IjpyZXR1cm4ibHVjaWRlOmZpbGVDb2RlIjtjYXNlImpzIjpjYXNlImpzeCI6cmV0dXJuImx1Y2lkZTpmaWxlQ29kZSI7Y2FzZSJqc29uIjpyZXR1cm4ibHVjaWRlOmZpbGVKc29uIjtjYXNlImh0bWwiOnJldHVybiJsdWNpZGU6ZmlsZUNvZGUiO2Nhc2UiY3NzIjpjYXNlInNjc3MiOmNhc2UibGVzcyI6cmV0dXJuImx1Y2lkZTpmaWxlQ29kZSI7Y2FzZSJtZCI6cmV0dXJuImx1Y2lkZTpmaWxlVGV4dCI7Y2FzZSJwbmciOmNhc2UianBnIjpjYXNlImpwZWciOmNhc2UiZ2lmIjpjYXNlInN2ZyI6cmV0dXJuImx1Y2lkZTppbWFnZSI7ZGVmYXVsdDpyZXR1cm4ibHVjaWRlOmZpbGUifX1nZXRGaWxlSWNvbkNsYXNzKCQpe2lmKCQudHlwZT09PSJkaXJlY3RvcnkiKXJldHVybiJmb2xkZXIiO3N3aXRjaCgkLm5hbWUuc3BsaXQoIi4iKS5wb3AoKT8udG9Mb3dlckNhc2UoKSl7Y2FzZSJ0cyI6Y2FzZSJ0c3giOnJldHVybiJ0eXBlc2NyaXB0IjtjYXNlImpzIjpjYXNlImpzeCI6cmV0dXJuImphdmFzY3JpcHQiO2Nhc2UianNvbiI6cmV0dXJuImpzb24iO2Nhc2UiaHRtbCI6cmV0dXJuImh0bWwiO2Nhc2UiY3NzIjpjYXNlInNjc3MiOmNhc2UibGVzcyI6cmV0dXJuImNzcyI7Y2FzZSJtZCI6cmV0dXJuIm1hcmtkb3duIjtkZWZhdWx0OnJldHVybiJmaWxlIn19YXN5bmMgaGFuZGxlSXRlbUNsaWNrKCQsRSl7JC5zdG9wUHJvcGFnYXRpb24oKSxFLnR5cGU9PT0iZGlyZWN0b3J5Ij9hd2FpdCB0aGlzLnRvZ2dsZURpcmVjdG9yeShFKToodGhpcy5zZWxlY3RlZFBhdGg9RS5wYXRoLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImZpbGUtc2VsZWN0Iix7ZGV0YWlsOntwYXRoOkUucGF0aCxuYW1lOkUubmFtZX0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKSl9YXN5bmMgdG9nZ2xlRGlyZWN0b3J5KCQpe3RoaXMuZXhwYW5kZWRQYXRocy5oYXMoJC5wYXRoKT90aGlzLmV4cGFuZGVkUGF0aHMuZGVsZXRlKCQucGF0aCk6KHRoaXMuZXhwYW5kZWRQYXRocy5hZGQoJC5wYXRoKSwoISQuY2hpbGRyZW58fCQuY2hpbGRyZW4ubGVuZ3RoPT09MCkmJmF3YWl0IHRoaXMubG9hZERpcmVjdG9yeUNvbnRlbnRzKCQpKSx0aGlzLnJlcXVlc3RVcGRhdGUoKX1hc3luYyBsb2FkRGlyZWN0b3J5Q29udGVudHMoJCl7aWYodGhpcy5leGVjdXRpb25FbnZpcm9ubWVudCl0cnl7bGV0IEU9YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5yZWFkRGlyKCQucGF0aCk7JC5jaGlsZHJlbj10aGlzLnNvcnRFbnRyaWVzKEUpLm1hcChIPT4oey4uLkgsbGV2ZWw6JC5sZXZlbCsxLGV4cGFuZGVkOiExLGNoaWxkcmVuOkgudHlwZT09PSJkaXJlY3RvcnkiP1tdOnZvaWQgMH0pKX1jYXRjaChFKXtjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gbG9hZCBkaXJlY3RvcnkgJHskLnBhdGh9OmAsRSl9fWFzeW5jIGhhbmRsZUNvbnRleHRNZW51KCQsRSl7JC5wcmV2ZW50RGVmYXVsdCgpLCQuc3RvcFByb3BhZ2F0aW9uKCk7bGV0IEg9W107RS50eXBlPT09ImRpcmVjdG9yeSImJkgucHVzaCh7bmFtZToiTmV3IEZpbGUiLGljb25OYW1lOiJmaWxlUGx1cyIsYWN0aW9uOmkoYXN5bmMoKT0+dGhpcy5jcmVhdGVOZXdGaWxlKEUucGF0aCksImFjdGlvbiIpfSx7bmFtZToiTmV3IEZvbGRlciIsaWNvbk5hbWU6ImZvbGRlclBsdXMiLGFjdGlvbjppKGFzeW5jKCk9PnRoaXMuY3JlYXRlTmV3Rm9sZGVyKEUucGF0aCksImFjdGlvbiIpfSx7ZGl2aWRlcjohMH0pLEgucHVzaCh7bmFtZToiUmVuYW1lIixpY29uTmFtZToicGVuY2lsIixhY3Rpb246aShhc3luYygpPT50aGlzLnJlbmFtZUl0ZW0oRSksImFjdGlvbiIpfSx7bmFtZToiRHVwbGljYXRlIixpY29uTmFtZToiZmlsZXMiLGFjdGlvbjppKGFzeW5jKCk9PnRoaXMuZHVwbGljYXRlSXRlbShFKSwiYWN0aW9uIil9LHtuYW1lOiJDb3B5IixpY29uTmFtZToiY29weSIsYWN0aW9uOmkoYXN5bmMoKT0+dGhpcy5jb3B5SXRlbShFKSwiYWN0aW9uIil9KSxFLnR5cGU9PT0iZGlyZWN0b3J5IiYmdGhpcy5jbGlwYm9hcmRQYXRoJiZILnB1c2goe25hbWU6IlBhc3RlIixpY29uTmFtZToiY2xpcGJvYXJkIixhY3Rpb246aShhc3luYygpPT50aGlzLnBhc3RlSXRlbShFLnBhdGgpLCJhY3Rpb24iKX0pLEgucHVzaCh7ZGl2aWRlcjohMH0se25hbWU6IkRlbGV0ZSIsaWNvbk5hbWU6InRyYXNoMiIsYWN0aW9uOmkoYXN5bmMoKT0+dGhpcy5kZWxldGVJdGVtKEUpLCJhY3Rpb24iKX0pLGF3YWl0IGthLm9wZW5Db250ZXh0TWVudVdpdGhPcHRpb25zKCQsSCl9YXN5bmMgaGFuZGxlRW1wdHlTcGFjZUNvbnRleHRNZW51KCQpe2lmKCQudGFyZ2V0LmNsb3Nlc3QoIi50cmVlLWl0ZW0iKSlyZXR1cm47JC5wcmV2ZW50RGVmYXVsdCgpLCQuc3RvcFByb3BhZ2F0aW9uKCk7bGV0IEg9W3tuYW1lOiJOZXcgRmlsZSIsaWNvbk5hbWU6ImZpbGVQbHVzIixhY3Rpb246aShhc3luYygpPT50aGlzLmNyZWF0ZU5ld0ZpbGUoIi8iKSwiYWN0aW9uIil9LHtuYW1lOiJOZXcgRm9sZGVyIixpY29uTmFtZToiZm9sZGVyUGx1cyIsYWN0aW9uOmkoYXN5bmMoKT0+dGhpcy5jcmVhdGVOZXdGb2xkZXIoIi8iKSwiYWN0aW9uIil9XTt0aGlzLmNsaXBib2FyZFBhdGgmJkgucHVzaCh7ZGl2aWRlcjohMH0se25hbWU6IlBhc3RlIixpY29uTmFtZToiY2xpcGJvYXJkIixhY3Rpb246aShhc3luYygpPT50aGlzLnBhc3RlSXRlbSgiLyIpLCJhY3Rpb24iKX0pLGF3YWl0IGthLm9wZW5Db250ZXh0TWVudVdpdGhPcHRpb25zKCQsSCl9YXN5bmMgc2hvd0lucHV0TW9kYWwoJCl7cmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIEU9PntsZXQgSD1hd2FpdCBRYS5jcmVhdGVBbmRTaG93KHtoZWFkaW5nOiQuaGVhZGluZyx3aWR0aDoic21hbGwiLGNvbnRlbnQ6d2AKICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQKICAgICAgICAgICAgLmxhYmVsPSR7JC5sYWJlbH0KICAgICAgICAgICAgLnZhbHVlPSR7JC52YWx1ZXx8IiJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgYCxtZW51T3B0aW9uczpbe25hbWU6IkNhbmNlbCIsYWN0aW9uOmkoYXN5bmMgUz0+e2F3YWl0IFMuZGVzdHJveSgpLEUobnVsbCl9LCJhY3Rpb24iKX0se25hbWU6JC5idXR0b25OYW1lfHwiQ3JlYXRlIixhY3Rpb246aShhc3luYyBTPT57bGV0IFI9Uy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIubW9kYWwgLmNvbnRlbnQiKT8ucXVlcnlTZWxlY3RvcigiZGVlcy1pbnB1dC10ZXh0Iik/LnZhbHVlPy50cmltKCl8fCIiO2F3YWl0IFMuZGVzdHJveSgpLEUoUnx8bnVsbCl9LCJhY3Rpb24iKX1dfSk7YXdhaXQgSC51cGRhdGVDb21wbGV0ZTtsZXQgaz1ILnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5tb2RhbCAuY29udGVudCIpO2lmKGspe2xldCBTPWsucXVlcnlTZWxlY3RvcigiZGVlcy1pbnB1dC10ZXh0Iik7UyYmKGF3YWl0IFMudXBkYXRlQ29tcGxldGUsUy5mb2N1cygpKX19KX1hc3luYyBjcmVhdGVOZXdGaWxlKCQpe2xldCBFPWF3YWl0IHRoaXMuc2hvd0lucHV0TW9kYWwoe2hlYWRpbmc6Ik5ldyBGaWxlIixsYWJlbDoiRmlsZSBuYW1lIn0pO2lmKCFFfHwhdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudClyZXR1cm47bGV0IEg9JD09PSIvIj9gLyR7RX1gOmAkeyR9LyR7RX1gO3RyeXthd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LndyaXRlRmlsZShILCIiKSxhd2FpdCB0aGlzLnJlZnJlc2goKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJmaWxlLWNyZWF0ZWQiLHtkZXRhaWw6e3BhdGg6SH0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1jYXRjaChrKXtjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gY3JlYXRlIGZpbGU6IixrKX19YXN5bmMgY3JlYXRlTmV3Rm9sZGVyKCQpe2xldCBFPWF3YWl0IHRoaXMuc2hvd0lucHV0TW9kYWwoe2hlYWRpbmc6Ik5ldyBGb2xkZXIiLGxhYmVsOiJGb2xkZXIgbmFtZSJ9KTtpZighRXx8IXRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQpcmV0dXJuO2xldCBIPSQ9PT0iLyI/YC8ke0V9YDpgJHskfS8ke0V9YDt0cnl7YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5ta2RpcihIKSxhd2FpdCB0aGlzLnJlZnJlc2goKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJmb2xkZXItY3JlYXRlZCIse2RldGFpbDp7cGF0aDpIfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWNhdGNoKGspe2NvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBjcmVhdGUgZm9sZGVyOiIsayl9fWFzeW5jIGRlbGV0ZUl0ZW0oJCl7aWYoISghdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudHx8IWNvbmZpcm0oYERlbGV0ZSAkeyQubmFtZX0/YCkpKXRyeXthd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LnJtKCQucGF0aCx7cmVjdXJzaXZlOiQudHlwZT09PSJkaXJlY3RvcnkifSksYXdhaXQgdGhpcy5yZWZyZXNoKCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiaXRlbS1kZWxldGVkIix7ZGV0YWlsOntwYXRoOiQucGF0aCx0eXBlOiQudHlwZX0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1jYXRjaChIKXtjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gZGVsZXRlIGl0ZW06IixIKX19YXN5bmMgcmVuYW1lSXRlbSgkKXtpZighdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudClyZXR1cm47bGV0IEU9YXdhaXQgdGhpcy5zaG93SW5wdXRNb2RhbCh7aGVhZGluZzoiUmVuYW1lIixsYWJlbDoiTmV3IG5hbWUiLHZhbHVlOiQubmFtZSxidXR0b25OYW1lOiJSZW5hbWUifSk7aWYoIUV8fEU9PT0kLm5hbWUpcmV0dXJuO2xldCBIPSQucGF0aC5zdWJzdHJpbmcoMCwkLnBhdGgubGFzdEluZGV4T2YoIi8iKSl8fCIvIixrPUg9PT0iLyI/YC8ke0V9YDpgJHtIfS8ke0V9YDt0cnl7aWYoJC50eXBlPT09ImZpbGUiKXtsZXQgUz1hd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LnJlYWRGaWxlKCQucGF0aCk7YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC53cml0ZUZpbGUoayxTKSxhd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LnJtKCQucGF0aCl9ZWxzZSBhd2FpdCB0aGlzLmNvcHlEaXJlY3RvcnlDb250ZW50cygkLnBhdGgsayksYXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5ybSgkLnBhdGgse3JlY3Vyc2l2ZTohMH0pO2F3YWl0IHRoaXMucmVmcmVzaCgpLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoIml0ZW0tcmVuYW1lZCIse2RldGFpbDp7b2xkUGF0aDokLnBhdGgsbmV3UGF0aDprLHR5cGU6JC50eXBlfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWNhdGNoKFMpe2NvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byByZW5hbWUgaXRlbToiLFMpfX1hc3luYyBkdXBsaWNhdGVJdGVtKCQpe2lmKCF0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50KXJldHVybjtsZXQgRT0kLnBhdGguc3Vic3RyaW5nKDAsJC5wYXRoLmxhc3RJbmRleE9mKCIvIikpfHwiLyIsSDtpZigkLnR5cGU9PT0iZmlsZSIpe2xldCBTPSQubmFtZS5sYXN0SW5kZXhPZigiLiIpO2lmKFM+MCl7bGV0IEk9JC5uYW1lLnN1YnN0cmluZygwLFMpLFA9JC5uYW1lLnN1YnN0cmluZyhTKTtIPWAke0l9X2NvcHkke1B9YH1lbHNlIEg9YCR7JC5uYW1lfV9jb3B5YH1lbHNlIEg9YCR7JC5uYW1lfV9jb3B5YDtsZXQgaz1FPT09Ii8iP2AvJHtIfWA6YCR7RX0vJHtIfWA7dHJ5e2lmKCQudHlwZT09PSJmaWxlIil7bGV0IFM9YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5yZWFkRmlsZSgkLnBhdGgpO2F3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQud3JpdGVGaWxlKGssUyl9ZWxzZSBhd2FpdCB0aGlzLmNvcHlEaXJlY3RvcnlDb250ZW50cygkLnBhdGgsayk7YXdhaXQgdGhpcy5yZWZyZXNoKCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiaXRlbS1kdXBsaWNhdGVkIix7ZGV0YWlsOntzb3VyY2VQYXRoOiQucGF0aCxuZXdQYXRoOmssdHlwZTokLnR5cGV9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9Y2F0Y2goUyl7Y29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGR1cGxpY2F0ZSBpdGVtOiIsUyl9fWFzeW5jIGNvcHlJdGVtKCQpe3RoaXMuY2xpcGJvYXJkUGF0aD0kLnBhdGgsdGhpcy5jbGlwYm9hcmRPcGVyYXRpb249ImNvcHkifWFzeW5jIHBhc3RlSXRlbSgkKXtpZighdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudHx8IXRoaXMuY2xpcGJvYXJkUGF0aClyZXR1cm47bGV0IEU9dGhpcy5jbGlwYm9hcmRQYXRoLnNwbGl0KCIvIikucG9wKCl8fCJwYXN0ZWQiLEg9JD09PSIvIj9gLyR7RX1gOmAkeyR9LyR7RX1gO3RyeXtpZighYXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5leGlzdHModGhpcy5jbGlwYm9hcmRQYXRoKSl7Y29uc29sZS5lcnJvcigiU291cmNlIGZpbGUgbm8gbG9uZ2VyIGV4aXN0cyIpLHRoaXMuY2xpcGJvYXJkUGF0aD1udWxsLHRoaXMuY2xpcGJvYXJkT3BlcmF0aW9uPW51bGw7cmV0dXJufXRyeXtsZXQgaz1hd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LnJlYWRGaWxlKHRoaXMuY2xpcGJvYXJkUGF0aCk7YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC53cml0ZUZpbGUoSCxrKX1jYXRjaHthd2FpdCB0aGlzLmNvcHlEaXJlY3RvcnlDb250ZW50cyh0aGlzLmNsaXBib2FyZFBhdGgsSCl9YXdhaXQgdGhpcy5yZWZyZXNoKCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiaXRlbS1wYXN0ZWQiLHtkZXRhaWw6e3NvdXJjZVBhdGg6dGhpcy5jbGlwYm9hcmRQYXRoLHRhcmdldFBhdGg6SH0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKSx0aGlzLmNsaXBib2FyZFBhdGg9bnVsbCx0aGlzLmNsaXBib2FyZE9wZXJhdGlvbj1udWxsfWNhdGNoKGspe2NvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBwYXN0ZSBpdGVtOiIsayl9fWFzeW5jIGNvcHlEaXJlY3RvcnlDb250ZW50cygkLEUpe2lmKCF0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50KXJldHVybjthd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50Lm1rZGlyKEUpO2xldCBIPWF3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQucmVhZERpcigkKTtmb3IobGV0IGsgb2YgSCl7bGV0IFM9JD09PSIvIj9gLyR7ay5uYW1lfWA6YCR7JH0vJHtrLm5hbWV9YCxJPUU9PT0iLyI/YC8ke2submFtZX1gOmAke0V9LyR7ay5uYW1lfWA7aWYoay50eXBlPT09ImRpcmVjdG9yeSIpYXdhaXQgdGhpcy5jb3B5RGlyZWN0b3J5Q29udGVudHMoUyxJKTtlbHNle2xldCBQPWF3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQucmVhZEZpbGUoUyk7YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC53cml0ZUZpbGUoSSxQKX19fWFzeW5jIGZpcnN0VXBkYXRlZCgpe2F3YWl0IHRoaXMubG9hZFRyZWUoKX1hc3luYyB1cGRhdGVkKCQpeyQuaGFzKCJleGVjdXRpb25FbnZpcm9ubWVudCIpJiYodGhpcy5sYXN0RXhlY3V0aW9uRW52aXJvbm1lbnQhPT10aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50JiYodGhpcy5zdG9wRmlsZVdhdGNoZXIoKSx0aGlzLmxhc3RFeGVjdXRpb25FbnZpcm9ubWVudD10aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50KSx0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50JiYoYXdhaXQgdGhpcy5sb2FkVHJlZSgpLHRoaXMuc3RhcnRGaWxlV2F0Y2hlcigpKSl9YXN5bmMgZGlzY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuc3RvcEZpbGVXYXRjaGVyKCksdGhpcy5yZWZyZXNoRGVib3VuY2VUaW1lb3V0JiYoY2xlYXJUaW1lb3V0KHRoaXMucmVmcmVzaERlYm91bmNlVGltZW91dCksdGhpcy5yZWZyZXNoRGVib3VuY2VUaW1lb3V0PW51bGwpfXN0YXJ0RmlsZVdhdGNoZXIoKXtpZighKCF0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50fHx0aGlzLmZpbGVXYXRjaGVyKSl0cnl7dGhpcy5maWxlV2F0Y2hlcj10aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LndhdGNoKCIvIiwoJCxFKT0+e3RoaXMucmVmcmVzaERlYm91bmNlVGltZW91dCYmY2xlYXJUaW1lb3V0KHRoaXMucmVmcmVzaERlYm91bmNlVGltZW91dCksdGhpcy5yZWZyZXNoRGVib3VuY2VUaW1lb3V0PXNldFRpbWVvdXQoKCk9Pnt0aGlzLnJlZnJlc2goKX0sMzAwKX0se3JlY3Vyc2l2ZTohMH0pfWNhdGNoKCQpe2NvbnNvbGUud2FybigiRmlsZSB3YXRjaGluZyBub3Qgc3VwcG9ydGVkOiIsJCl9fXN0b3BGaWxlV2F0Y2hlcigpe3RoaXMuZmlsZVdhdGNoZXImJih0aGlzLmZpbGVXYXRjaGVyLnN0b3AoKSx0aGlzLmZpbGVXYXRjaGVyPW51bGwpfWFzeW5jIGxvYWRUcmVlKCl7aWYodGhpcy5leGVjdXRpb25FbnZpcm9ubWVudCYmIXRoaXMubG9hZFRyZWVTdGFydGVkKXt0aGlzLmxvYWRUcmVlU3RhcnRlZD0hMCx0aGlzLmlzTG9hZGluZz0hMCx0aGlzLmVycm9yTWVzc2FnZT0iIjt0cnl7dGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5yZWFkeXx8YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5pbml0KCk7bGV0ICQ9YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5yZWFkRGlyKHRoaXMucm9vdFBhdGgpO3RoaXMudHJlZURhdGE9dGhpcy5zb3J0RW50cmllcygkKS5tYXAoRT0+KHsuLi5FLGxldmVsOjAsZXhwYW5kZWQ6ITEsY2hpbGRyZW46RS50eXBlPT09ImRpcmVjdG9yeSI/W106dm9pZCAwfSkpfWNhdGNoKCQpe3RoaXMuZXJyb3JNZXNzYWdlPWBGYWlsZWQgdG8gbG9hZCBmaWxlczogJHskfWAsY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGxvYWQgZmlsZSB0cmVlOiIsJCksdGhpcy5sb2FkVHJlZVN0YXJ0ZWQ9ITF9ZmluYWxseXt0aGlzLmlzTG9hZGluZz0hMX19fXNvcnRFbnRyaWVzKCQpe3JldHVybiAkLnNvcnQoKEUsSCk9PkUudHlwZSE9PUgudHlwZT9FLnR5cGU9PT0iZGlyZWN0b3J5Ij8tMToxOkUubmFtZS5sb2NhbGVDb21wYXJlKEgubmFtZSkpfWFzeW5jIHJlZnJlc2goKXt0aGlzLmV4cGFuZGVkUGF0aHMuY2xlYXIoKSx0aGlzLmxvYWRUcmVlU3RhcnRlZD0hMSxhd2FpdCB0aGlzLmxvYWRUcmVlKCl9c2VsZWN0RmlsZSgkKXt0aGlzLnNlbGVjdGVkUGF0aD0kfXN0YXRpY3thYyhhLHQpfX07cmV0dXJuIE89YX0pKCl9KTt2YXIgQnJ0LG5RLG43YSxIcnQ9ZygoKT0+e3BlKCk7cHQoKTtmdSgpO25yKCk7QnJ0PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxuUT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sbjdhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy13b3Jrc3BhY2UtdGVybWluYWwtcHJldmlldyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdO3ZhciBjPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzV29ya3NwYWNlVGVybWluYWxQcmV2aWV3Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGI9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpTdHJpbmd9KV0scD1bTCh7dHlwZTpBcnJheX0pXSxCcnQodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjb21tYW5kIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHY9PiJjb21tYW5kImluIHYsImhhcyIpLGdldDppKHY9PnYuY29tbWFuZCwiZ2V0Iiksc2V0OmkoKHYseCk9Pnt2LmNvbW1hbmQ9eH0sInNldCIpfSxtZXRhZGF0YTpifSxvLGwpLEJydCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImxpbmVzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHY9PiJsaW5lcyJpbiB2LCJoYXMiKSxnZXQ6aSh2PT52LmxpbmVzLCJnZXQiKSxzZXQ6aSgodix4KT0+e3YubGluZXM9eH0sInNldCIpfSxtZXRhZGF0YTpifSxkLHUpLEJydChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpifSxudWxsLHQpLGM9YT1lLnZhbHVlLGImJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pfXN0YXRpYyBkZW1vPWkoKCk9PndgCiAgICA8ZGVlcy13b3Jrc3BhY2UtdGVybWluYWwtcHJldmlldwogICAgICAuY29tbWFuZD0keyJwbnBtIGluc3RhbGwifQogICAgICAubGluZXM9JHtbIlBhY2thZ2VzOiArNDIiLCJQcm9ncmVzczogcmVzb2x2ZWQgMTQyLCByZXVzZWQgMTQwLCBkb3dubG9hZGVkIDIsIGFkZGVkIDQyLCBkb25lIiwiIiwiZGVwZW5kZW5jaWVzOiIsIisgQHB1c2gucm9ja3Mvc21hcnRwcm9taXNlIDQuMi4zIiwiKyB0eXBlc2NyaXB0IDUuMy4zIiwiIiwiRG9uZSBpbiAyLjNzIl19CiAgICA+PC9kZWVzLXdvcmtzcGFjZS10ZXJtaW5hbC1wcmV2aWV3PgogIGAsImRlbW8iKTtzdGF0aWMgZGVtb0dyb3Vwcz1bIldvcmtzcGFjZSJdOyNlPW5RKHRoaXMsbywiIik7Z2V0IGNvbW1hbmQoKXtyZXR1cm4gdGhpcy4jZX1zZXQgY29tbWFuZChiKXt0aGlzLiNlPWJ9I3Q9KG5RKHRoaXMsbCksblEodGhpcyxkLFtdKSk7Z2V0IGxpbmVzKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGxpbmVzKGIpe3RoaXMuI3Q9Yn10ZXJtaW5hbD0oblEodGhpcyx1KSxudWxsKTtmaXRBZGRvbj1udWxsO2xhc3RMaW5lQ291bnQ9MDtyZXNpemVPYnNlcnZlcj1udWxsO3Rlcm1pbmFsVGhlbWVTdWJzY3JpcHRpb249bnVsbDtzdGF0aWMgc3R5bGVzPVtIZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGhlaWdodDogMjAwcHg7CiAgICAgIH0KCiAgICAgIGRlZXMtdGlsZSB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CgogICAgICAudGVybWluYWwtaGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgcGFkZGluZzogMCAxMnB4OwogICAgICAgIGhlaWdodDogMzJweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC1mYW1pbHk6ICdTRiBNb25vJywgJ01vbmFjbycsICdJbmNvbnNvbGF0YScsICdGaXJhIENvZGUnLCBtb25vc3BhY2U7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgIH0KCiAgICAgIC50ZXJtaW5hbC1oZWFkZXItaWNvbiB7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgIH0KCiAgICAgIC50ZXJtaW5hbC1oZWFkZXItY29tbWFuZCB7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIH0KCiAgICAgIC50ZXJtaW5hbC1jb250YWluZXIgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBpbnNldDogMDsKICAgICAgICBwYWRkaW5nOiA4cHg7CiAgICAgIH0KCiAgICAgICN4dGVybS1jb250YWluZXIgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDhweDsKICAgICAgICBsZWZ0OiA4cHg7CiAgICAgICAgcmlnaHQ6IDhweDsKICAgICAgICBib3R0b206IDhweDsKICAgICAgfQoKICAgICAgLyogeHRlcm0uanMgc3R5bGVzICovCiAgICAgIC54dGVybSB7CiAgICAgICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiAnbGlnYScgMDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIH0KCiAgICAgIC54dGVybS5mb2N1cywKICAgICAgLnh0ZXJtOmZvY3VzIHsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICB9CgogICAgICAueHRlcm0gLnh0ZXJtLWhlbHBlcnMgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgei1pbmRleDogNTsKICAgICAgfQoKICAgICAgLnh0ZXJtIC54dGVybS1oZWxwZXItdGV4dGFyZWEgewogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgYm9yZGVyOiAwOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBsZWZ0OiAtOTk5OWVtOwogICAgICAgIHRvcDogMDsKICAgICAgICB3aWR0aDogMDsKICAgICAgICBoZWlnaHQ6IDA7CiAgICAgICAgei1pbmRleDogLTU7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHJlc2l6ZTogbm9uZTsKICAgICAgfQoKICAgICAgLnh0ZXJtIC5jb21wb3NpdGlvbi12aWV3IHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMwMDAwMDAiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMzMzMzMzIiwiI2ZmZmZmZiIpfTsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIHotaW5kZXg6IDE7CiAgICAgIH0KCiAgICAgIC54dGVybSAuY29tcG9zaXRpb24tdmlldy5hY3RpdmUgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICAueHRlcm0gLnh0ZXJtLXZpZXdwb3J0IHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMwMDAwMDAiKX07CiAgICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsOwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB0b3A6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICB9CgogICAgICAueHRlcm0gLnh0ZXJtLXNjcmVlbiB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAueHRlcm0gLnh0ZXJtLXNjcmVlbiBjYW52YXMgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHRvcDogMDsKICAgICAgfQoKICAgICAgLnh0ZXJtIC54dGVybS1zY3JvbGwtYXJlYSB7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICB9CgogICAgICAueHRlcm0tY2hhci1tZWFzdXJlLWVsZW1lbnQgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAtOTk5OWVtOwogICAgICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7CiAgICAgIH0KCiAgICAgIC54dGVybSB7CiAgICAgICAgY3Vyc29yOiB0ZXh0OwogICAgICB9CgogICAgICAueHRlcm0uZW5hYmxlLW1vdXNlLWV2ZW50cyB7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICB9CgogICAgICAueHRlcm0ueHRlcm0tY3Vyc29yLXBvaW50ZXIgewogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQoKICAgICAgLnh0ZXJtLmNvbHVtbi1zZWxlY3QuZm9jdXMgewogICAgICAgIGN1cnNvcjogY3Jvc3NoYWlyOwogICAgICB9CgogICAgICAueHRlcm0gLnh0ZXJtLWFjY2Vzc2liaWxpdHksCiAgICAgIC54dGVybSAueHRlcm0tbWVzc2FnZSB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICB6LWluZGV4OiAxMDsKICAgICAgICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgIH0KCiAgICAgIC54dGVybSAubGl2ZS1yZWdpb24gewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBsZWZ0OiAtOTk5OXB4OwogICAgICAgIHdpZHRoOiAxcHg7CiAgICAgICAgaGVpZ2h0OiAxcHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLnh0ZXJtLWRpbSB7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICB9CgogICAgICAueHRlcm0tdW5kZXJsaW5lIHsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgICAgfQoKICAgICAgLyogQ3VzdG9tIHNjcm9sbGJhciBmb3IgeHRlcm0gdmlld3BvcnQgKi8KICAgICAgLnh0ZXJtIC54dGVybS12aWV3cG9ydDo6LXdlYmtpdC1zY3JvbGxiYXIgewogICAgICAgIHdpZHRoOiA4cHg7CiAgICAgIH0KCiAgICAgIC54dGVybSAueHRlcm0tdmlld3BvcnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTYlKSIsImhzbCgwIDAlIDglKSIpfTsKICAgICAgfQoKICAgICAgLnh0ZXJtIC54dGVybS12aWV3cG9ydDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3Itc2Nyb2xsYmFyLXRodW1iKTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgIH0KCiAgICAgIC54dGVybSAueHRlcm0tdmlld3BvcnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLXNjcm9sbGJhci10aHVtYi1ob3Zlcik7CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGVlcy10aWxlPgogICAgICAgIDxkaXYgc2xvdD0iaGVhZGVyIiBjbGFzcz0idGVybWluYWwtaGVhZGVyIj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtaW5hbC1oZWFkZXItaWNvbiI+JDwvc3Bhbj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtaW5hbC1oZWFkZXItY29tbWFuZCI+JHt0aGlzLmNvbW1hbmR8fCJXYWl0aW5nLi4uIn08L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0idGVybWluYWwtY29udGFpbmVyIj4KICAgICAgICAgIDxkaXYgaWQ9Inh0ZXJtLWNvbnRhaW5lciI+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy10aWxlPgogICAgYH1nZXRUZXJtaW5hbFRoZW1lKGIpe3JldHVybiBiP3tiYWNrZ3JvdW5kOiIjZmZmZmZmIixmb3JlZ3JvdW5kOiIjMzMzMzMzIixjdXJzb3I6IiMzMzMzMzMiLGN1cnNvckFjY2VudDoiI2ZmZmZmZiIsc2VsZWN0aW9uQmFja2dyb3VuZDoicmdiYSgwLCAwLCAwLCAwLjIpIn06e2JhY2tncm91bmQ6IiMwMDAwMDAiLGZvcmVncm91bmQ6IiNjY2NjY2MiLGN1cnNvcjoiI2NjY2NjYyIsY3Vyc29yQWNjZW50OiIjMDAwMDAwIixzZWxlY3Rpb25CYWNrZ3JvdW5kOiJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMikifX1hc3luYyBmaXJzdFVwZGF0ZWQoYil7c3VwZXIuZmlyc3RVcGRhdGVkKGIpO2xldCB2PXRoaXMuc2hhZG93Um9vdD8uZ2V0RWxlbWVudEJ5SWQoInh0ZXJtLWNvbnRhaW5lciIpO2lmKCF2KXJldHVybjtsZXQgeD1hd2FpdCB0aGlzLmRvbXRvb2xzUHJvbWlzZSxtPXgudGhlbWVNYW5hZ2VyLmdvQnJpZ2h0Qm9vbGVhbixmPVFyLmdldEluc3RhbmNlKCksW3ksTV09YXdhaXQgUHJvbWlzZS5hbGwoW2YubG9hZFh0ZXJtKCksZi5sb2FkWHRlcm1GaXRBZGRvbigpXSk7dGhpcy50ZXJtaW5hbD1uZXcgeS5UZXJtaW5hbCh7Y29udmVydEVvbDohMCxjdXJzb3JCbGluazohMSxkaXNhYmxlU3RkaW46ITAsZm9udFNpemU6MTIsZm9udEZhbWlseToiJ1NGIE1vbm8nLCAnTW9uYWNvJywgJ0luY29uc29sYXRhJywgJ0ZpcmEgQ29kZScsIG1vbm9zcGFjZSIsdGhlbWU6dGhpcy5nZXRUZXJtaW5hbFRoZW1lKG0pLHNjcm9sbGJhY2s6MWUzfSksdGhpcy50ZXJtaW5hbFRoZW1lU3Vic2NyaXB0aW9uPXgudGhlbWVNYW5hZ2VyLnRoZW1lT2JzZXJ2YWJsZS5zdWJzY3JpYmUoej0+e3RoaXMudGVybWluYWwmJih0aGlzLnRlcm1pbmFsLm9wdGlvbnMudGhlbWU9dGhpcy5nZXRUZXJtaW5hbFRoZW1lKHopKX0pLHRoaXMuZml0QWRkb249bmV3IE0uRml0QWRkb24sdGhpcy50ZXJtaW5hbC5sb2FkQWRkb24odGhpcy5maXRBZGRvbiksdGhpcy50ZXJtaW5hbC5vcGVuKHYpLHRoaXMuZml0QWRkb24uZml0KCksdGhpcy5yZXNpemVPYnNlcnZlcj1uZXcgUmVzaXplT2JzZXJ2ZXIoKCk9Pnt0aGlzLmZpdEFkZG9uJiZ0aGlzLmZpdEFkZG9uLmZpdCgpfSksdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHYpLHRoaXMud3JpdGVOZXdMaW5lcygpfWFzeW5jIHVwZGF0ZWQoYil7c3VwZXIudXBkYXRlZChiKSxiLmhhcygibGluZXMiKSYmdGhpcy53cml0ZU5ld0xpbmVzKCl9d3JpdGVOZXdMaW5lcygpe2lmKCF0aGlzLnRlcm1pbmFsKXJldHVybjtsZXQgYj10aGlzLmxpbmVzLnNsaWNlKHRoaXMubGFzdExpbmVDb3VudCk7Zm9yKGxldCB2IG9mIGIpdGhpcy50ZXJtaW5hbC53cml0ZWxuKHYpO3RoaXMubGFzdExpbmVDb3VudD10aGlzLmxpbmVzLmxlbmd0aH1hc3luYyBkaXNjb25uZWN0ZWRDYWxsYmFjaygpe3RoaXMucmVzaXplT2JzZXJ2ZXImJih0aGlzLnJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKSx0aGlzLnJlc2l6ZU9ic2VydmVyPW51bGwpLHRoaXMudGVybWluYWxUaGVtZVN1YnNjcmlwdGlvbiYmKHRoaXMudGVybWluYWxUaGVtZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMudGVybWluYWxUaGVtZVN1YnNjcmlwdGlvbj1udWxsKSx0aGlzLnRlcm1pbmFsJiYodGhpcy50ZXJtaW5hbC5kaXNwb3NlKCksdGhpcy50ZXJtaW5hbD1udWxsKSxhd2FpdCBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpfWFkZExpbmUoYil7dGhpcy5saW5lcz1bLi4udGhpcy5saW5lcyxiXX1jbGVhcigpe3RoaXMubGluZXM9W10sdGhpcy5sYXN0TGluZUNvdW50PTAsdGhpcy50ZXJtaW5hbCYmdGhpcy50ZXJtaW5hbC5jbGVhcigpfXN0YXRpY3tuUShhLHQpfX07cmV0dXJuIGM9YX0pKCl9KTt2YXIgdXgsbTIsbDdhLHFydD1nKCgpPT57cGUoKTtwdCgpO1VhKCk7b3IoKTt1eD1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sbTI9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LGw3YT0oKCk9PntsZXQgcz1bbmUoImRlZXMtd29ya3NwYWNlLWJvdHRvbWJhciIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdO3ZhciBOPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzV29ya3NwYWNlQm90dG9tYmFyIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IEM9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpPYmplY3R9KV0scD1bWSgpXSxjPVtZKCldLHg9W1koKV0seT1bWSgpXSx1eCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImV4ZWN1dGlvbkVudmlyb25tZW50IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJleGVjdXRpb25FbnZpcm9ubWVudCJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLmV4ZWN1dGlvbkVudmlyb25tZW50LCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uZXhlY3V0aW9uRW52aXJvbm1lbnQ9T30sInNldCIpfSxtZXRhZGF0YTpDfSxvLGwpLHV4KHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2NyaXB0cyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4ic2NyaXB0cyJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLnNjcmlwdHMsImdldCIpLHNldDppKChfLE8pPT57Xy5zY3JpcHRzPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sZCx1KSx1eCh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InBhY2thZ2VTdGF0dXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+InBhY2thZ2VTdGF0dXMiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5wYWNrYWdlU3RhdHVzLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18ucGFja2FnZVN0YXR1cz1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LGIsdiksdXgodGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJvdXRkYXRlZFBhY2thZ2VzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJvdXRkYXRlZFBhY2thZ2VzImluIF8sImhhcyIpLGdldDppKF89Pl8ub3V0ZGF0ZWRQYWNrYWdlcywiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLm91dGRhdGVkUGFja2FnZXM9T30sInNldCIpfSxtZXRhZGF0YTpDfSxtLGYpLHV4KHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNDaGVja2luZ1BhY2thZ2VzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJpc0NoZWNraW5nUGFja2FnZXMiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5pc0NoZWNraW5nUGFja2FnZXMsImdldCIpLHNldDppKChfLE8pPT57Xy5pc0NoZWNraW5nUGFja2FnZXM9T30sInNldCIpfSxtZXRhZGF0YTpDfSxNLHopLHV4KG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOkN9LG51bGwsdCksTj1hPWUudmFsdWUsQyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpDfSl9I2U9bTIodGhpcyxvLG51bGwpO2dldCBleGVjdXRpb25FbnZpcm9ubWVudCgpe3JldHVybiB0aGlzLiNlfXNldCBleGVjdXRpb25FbnZpcm9ubWVudChDKXt0aGlzLiNlPUN9I3Q9KG0yKHRoaXMsbCksbTIodGhpcyxkLHt9KSk7Z2V0IHNjcmlwdHMoKXtyZXR1cm4gdGhpcy4jdH1zZXQgc2NyaXB0cyhDKXt0aGlzLiN0PUN9I2E9KG0yKHRoaXMsdSksbTIodGhpcyxiLCJpZGxlIikpO2dldCBwYWNrYWdlU3RhdHVzKCl7cmV0dXJuIHRoaXMuI2F9c2V0IHBhY2thZ2VTdGF0dXMoQyl7dGhpcy4jYT1DfSNzPShtMih0aGlzLHYpLG0yKHRoaXMsbSxbXSkpO2dldCBvdXRkYXRlZFBhY2thZ2VzKCl7cmV0dXJuIHRoaXMuI3N9c2V0IG91dGRhdGVkUGFja2FnZXMoQyl7dGhpcy4jcz1DfSNpPShtMih0aGlzLGYpLG0yKHRoaXMsTSwhMSkpO2dldCBpc0NoZWNraW5nUGFja2FnZXMoKXtyZXR1cm4gdGhpcy4jaX1zZXQgaXNDaGVja2luZ1BhY2thZ2VzKEMpe3RoaXMuI2k9Q31wZW5kaW5nUGFja2FnZVVwZGF0ZT0obTIodGhpcyx6KSwhMSk7aGFuZGxlUHJvY2Vzc0NvbXBsZXRlPWkoQz0+e3RoaXMucGVuZGluZ1BhY2thZ2VVcGRhdGUmJih0aGlzLnBlbmRpbmdQYWNrYWdlVXBkYXRlPSExLHNldFRpbWVvdXQoKCk9PnRoaXMuY2hlY2tQYWNrYWdlcygpLDUwMCkpfSwiaGFuZGxlUHJvY2Vzc0NvbXBsZXRlIik7c3RhdGljIHN0eWxlcz1bSGUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC5ib3R0b20tYmFyIHsKICAgICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDAgOHB4OwogICAgICAgIGdhcDogNHB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5NCUpIiwiaHNsKDAgMCUgNiUpIil9OwogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDAgMCUgODUlKSIsImhzbCgwIDAlIDE1JSkiKX07CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNDAlKSIsImhzbCgwIDAlIDYwJSkiKX07CiAgICAgIH0KCiAgICAgIC53aWRnZXQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDRweDsKICAgICAgICBwYWRkaW5nOiAycHggNnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cyBlYXNlLCBjb2xvciAwLjE1cyBlYXNlOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgIH0KCiAgICAgIC53aWRnZXQ6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4OCUpIiwiaHNsKDAgMCUgMTIlKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDIwJSkiLCJoc2woMCAwJSA4MCUpIil9OwogICAgICB9CgogICAgICAud2lkZ2V0IGRlZXMtaWNvbiB7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC53aWRnZXQtc2VwYXJhdG9yIHsKICAgICAgICB3aWR0aDogMXB4OwogICAgICAgIGhlaWdodDogMTRweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgODAlKSIsImhzbCgwIDAlIDIwJSkiKX07CiAgICAgICAgbWFyZ2luOiAwIDRweDsKICAgICAgfQoKICAgICAgLndpZGdldC5ydW5uaW5nIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTAgMTAwJSA0NSUpIiwiaHNsKDIxMCAxMDAlIDYwJSkiKX07CiAgICAgIH0KCiAgICAgIC53aWRnZXQudXAtdG8tZGF0ZSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMTQyIDcwJSAzNSUpIiwiaHNsKDE0MiA3MCUgNTAlKSIpfTsKICAgICAgfQoKICAgICAgLndpZGdldC51cGRhdGVzLWF2YWlsYWJsZSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMzggOTIlIDQ1JSkiLCJoc2woMzggOTIlIDU1JSkiKX07CiAgICAgIH0KCiAgICAgIC53aWRnZXQuZXJyb3IgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgNzAlIDUwJSkiLCJoc2woMCA3MCUgNjAlKSIpfTsKICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBzcGluIHsKICAgICAgICBmcm9tIHsgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH0KICAgICAgICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0KICAgICAgfQoKICAgICAgLnNwaW5uaW5nIHsKICAgICAgICBhbmltYXRpb246IHNwaW4gMXMgbGluZWFyIGluZmluaXRlOwogICAgICB9CgogICAgICAuc3BhY2VyIHsKICAgICAgICBmbGV4OiAxOwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iYm90dG9tLWJhciI+CiAgICAgICAgPCEtLSBTY3JpcHQgUnVubmVyIFdpZGdldCAtLT4KICAgICAgICA8ZGl2CiAgICAgICAgICBjbGFzcz0id2lkZ2V0IgogICAgICAgICAgQGNsaWNrPSR7dGhpcy5oYW5kbGVTY3JpcHRDbGlja30KICAgICAgICAgIHRpdGxlPSJSdW4gc2NyaXB0IgogICAgICAgID4KICAgICAgICAgIDxkZWVzLWljb24KICAgICAgICAgICAgLmljb249JHsibHVjaWRlOnBsYXkifQogICAgICAgICAgICBpY29uU2l6ZT0iMTIiCiAgICAgICAgICA+PC9kZWVzLWljb24+CiAgICAgICAgICA8c3Bhbj5TY3JpcHRzPC9zcGFuPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJ3aWRnZXQtc2VwYXJhdG9yIj48L2Rpdj4KCiAgICAgICAgPCEtLSBQYWNrYWdlIENoZWNrZXIgV2lkZ2V0IC0tPgogICAgICAgIDxkaXYKICAgICAgICAgIGNsYXNzPSJ3aWRnZXQgJHt0aGlzLmdldFBhY2thZ2VTdGF0dXNDbGFzcygpfSIKICAgICAgICAgIEBjbGljaz0ke3RoaXMuaGFuZGxlUGFja2FnZUNsaWNrfQogICAgICAgICAgdGl0bGU9IiR7dGhpcy5nZXRQYWNrYWdlVG9vbHRpcCgpfSIKICAgICAgICA+CiAgICAgICAgICA8ZGVlcy1pY29uCiAgICAgICAgICAgIC5pY29uPSR7dGhpcy5nZXRQYWNrYWdlSWNvbigpfQogICAgICAgICAgICBpY29uU2l6ZT0iMTIiCiAgICAgICAgICAgIGNsYXNzPSIke3RoaXMuaXNDaGVja2luZ1BhY2thZ2VzPyJzcGlubmluZyI6IiJ9IgogICAgICAgICAgPjwvZGVlcy1pY29uPgogICAgICAgICAgPHNwYW4+JHt0aGlzLmdldFBhY2thZ2VTdGF0dXNUZXh0KCl9PC9zcGFuPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJzcGFjZXIiPjwvZGl2PgoKICAgICAgICA8IS0tIEZ1dHVyZSB3aWRnZXRzIGNhbiBiZSBhZGRlZCBoZXJlIC0tPgogICAgICA8L2Rpdj4KICAgIGB9YXN5bmMgY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwcm9jZXNzLWNvbXBsZXRlIix0aGlzLmhhbmRsZVByb2Nlc3NDb21wbGV0ZSl9YXN5bmMgZGlzY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJwcm9jZXNzLWNvbXBsZXRlIix0aGlzLmhhbmRsZVByb2Nlc3NDb21wbGV0ZSl9YXN5bmMgZmlyc3RVcGRhdGVkKCl7YXdhaXQgdGhpcy5sb2FkU2NyaXB0cygpLGF3YWl0IHRoaXMuY2hlY2tQYWNrYWdlcygpfWFzeW5jIHVwZGF0ZWQoQyl7Qy5oYXMoImV4ZWN1dGlvbkVudmlyb25tZW50IikmJnRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQmJihhd2FpdCB0aGlzLmxvYWRTY3JpcHRzKCksYXdhaXQgdGhpcy5jaGVja1BhY2thZ2VzKCkpfWFzeW5jIGxvYWRTY3JpcHRzKCl7aWYodGhpcy5leGVjdXRpb25FbnZpcm9ubWVudCl0cnl7aWYoIWF3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQuZXhpc3RzKCIvcGFja2FnZS5qc29uIikpe3RoaXMuc2NyaXB0cz17fTtyZXR1cm59bGV0IF89YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5yZWFkRmlsZSgiL3BhY2thZ2UuanNvbiIpLE89SlNPTi5wYXJzZShfKTt0aGlzLnNjcmlwdHM9Ty5zY3JpcHRzfHx7fX1jYXRjaChDKXtjb25zb2xlLndhcm4oIkZhaWxlZCB0byBsb2FkIHNjcmlwdHMgZnJvbSBwYWNrYWdlLmpzb246IixDKSx0aGlzLnNjcmlwdHM9e319fWFzeW5jIGhhbmRsZVNjcmlwdENsaWNrKEMpe0Muc3RvcFByb3BhZ2F0aW9uKCk7bGV0IF89T2JqZWN0LmtleXModGhpcy5zY3JpcHRzKTtpZihfLmxlbmd0aD09PTApcmV0dXJuO2xldCBPPV8ubWFwKCQ9Pih7bmFtZTokLGljb25OYW1lOiJsdWNpZGU6dGVybWluYWwiLGFjdGlvbjppKGFzeW5jKCk9Pnthd2FpdCB0aGlzLnJ1blNjcmlwdCgkKX0sImFjdGlvbiIpfSkpO2F3YWl0IGthLm9wZW5Db250ZXh0TWVudVdpdGhPcHRpb25zKEMsTyl9YXN5bmMgcnVuU2NyaXB0KEMpe2lmKCF0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50KXJldHVybjtsZXQgXz17dHlwZToic2NyaXB0IixsYWJlbDpDLGNvbW1hbmQ6InBucG0iLGFyZ3M6WyJydW4iLENdLG1ldGFkYXRhOntzY3JpcHROYW1lOkN9fTt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJydW4tcHJvY2VzcyIse2J1YmJsZXM6ITAsY29tcG9zZWQ6ITAsZGV0YWlsOl99KSl9YXN5bmMgY2hlY2tQYWNrYWdlcygpe2lmKCF0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50KXt0aGlzLnBhY2thZ2VTdGF0dXM9ImlkbGUiO3JldHVybn10cnl7aWYoIWF3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQuZXhpc3RzKCIvcGFja2FnZS5qc29uIikpe3RoaXMucGFja2FnZVN0YXR1cz0iaWRsZSI7cmV0dXJufXRoaXMucGFja2FnZVN0YXR1cz0iY2hlY2tpbmciLHRoaXMuaXNDaGVja2luZ1BhY2thZ2VzPSEwO2xldCBfPWF3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQuc3Bhd24oInBucG0iLFsib3V0ZGF0ZWQiLCItLWpzb24iXSksTz0iIiwkPV8ub3V0cHV0LmdldFJlYWRlcigpO2koYXN5bmMoKT0+e3RyeXtmb3IoOzspe2xldHtkb25lOmssdmFsdWU6U309YXdhaXQgJC5yZWFkKCk7aWYoaylicmVhaztPKz1TfX1jYXRjaHt9fSwicmVhZE91dHB1dCIpKCk7bGV0IEg9YXdhaXQgUHJvbWlzZS5yYWNlKFtfLmV4aXQsbmV3IFByb21pc2Uoaz0+c2V0VGltZW91dCgoKT0+aygtMSksMWU0KSldKTt0cnl7YXdhaXQgJC5jYW5jZWwoKX1jYXRjaHt9aWYoSD09PS0xKXtjb25zb2xlLndhcm4oIlBhY2thZ2UgY2hlY2sgdGltZWQgb3V0IiksdGhpcy5wYWNrYWdlU3RhdHVzPSJlcnJvciI7cmV0dXJufWlmKEg9PT0wKXRoaXMucGFja2FnZVN0YXR1cz0idXAtdG8tZGF0ZSIsdGhpcy5vdXRkYXRlZFBhY2thZ2VzPVtdO2Vsc2UgdHJ5e2xldCBrPUpTT04ucGFyc2UoTyk7dGhpcy5vdXRkYXRlZFBhY2thZ2VzPXRoaXMucGFyc2VPdXRkYXRlZFBhY2thZ2VzKGspLHRoaXMucGFja2FnZVN0YXR1cz10aGlzLm91dGRhdGVkUGFja2FnZXMubGVuZ3RoPjA/InVwZGF0ZXMtYXZhaWxhYmxlIjoidXAtdG8tZGF0ZSJ9Y2F0Y2h7dGhpcy5wYWNrYWdlU3RhdHVzPSJ1cGRhdGVzLWF2YWlsYWJsZSIsdGhpcy5vdXRkYXRlZFBhY2thZ2VzPVtdfX1jYXRjaChDKXtjb25zb2xlLndhcm4oIkZhaWxlZCB0byBjaGVjayBmb3IgcGFja2FnZSB1cGRhdGVzOiIsQyksdGhpcy5wYWNrYWdlU3RhdHVzPSJlcnJvciJ9ZmluYWxseXt0aGlzLmlzQ2hlY2tpbmdQYWNrYWdlcz0hMX19cGFyc2VPdXRkYXRlZFBhY2thZ2VzKEMpe2xldCBfPVtdO2lmKHR5cGVvZiBDPT0ib2JqZWN0IiYmQyE9PW51bGwpZm9yKGxldFtPLCRdb2YgT2JqZWN0LmVudHJpZXMoQykpe2xldCBFPSQ7Xy5wdXNoKHtuYW1lOk8sY3VycmVudDpFLmN1cnJlbnR8fCJ1bmtub3duIix3YW50ZWQ6RS53YW50ZWR8fEUuY3VycmVudHx8InVua25vd24iLGxhdGVzdDpFLmxhdGVzdHx8RS53YW50ZWR8fCJ1bmtub3duIix0eXBlOkUuZGVwZW5kZW5jeVR5cGU9PT0iZGV2RGVwZW5kZW5jaWVzIj8iZGV2RGVwZW5kZW5jaWVzIjoiZGVwZW5kZW5jaWVzIn0pfXJldHVybiBffWFzeW5jIGhhbmRsZVBhY2thZ2VDbGljayhDKXtDLnN0b3BQcm9wYWdhdGlvbigpO2xldCBfPVtdO2lmKF8ucHVzaCh7bmFtZTp0aGlzLmlzQ2hlY2tpbmdQYWNrYWdlcz8iQ2hlY2tpbmcuLi4iOiJDaGVjayBmb3IgdXBkYXRlcyIsaWNvbk5hbWU6Imx1Y2lkZTpyZWZyZXNoQ3ciLGFjdGlvbjppKGFzeW5jKCk9PntpZih0aGlzLmlzQ2hlY2tpbmdQYWNrYWdlcylyZXR1cm47bGV0IE89e3R5cGU6InBhY2thZ2UtdXBkYXRlIixsYWJlbDoiY2hlY2sgcGFja2FnZXMiLGNvbW1hbmQ6InBucG0iLGFyZ3M6WyJvdXRkYXRlZCJdfTt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJydW4tcHJvY2VzcyIse2J1YmJsZXM6ITAsY29tcG9zZWQ6ITAsZGV0YWlsOk99KSksc2V0VGltZW91dCgoKT0+dGhpcy5jaGVja1BhY2thZ2VzKCksM2UzKX0sImFjdGlvbiIpfSksdGhpcy5vdXRkYXRlZFBhY2thZ2VzLmxlbmd0aD4wKXtfLnB1c2goe2RpdmlkZXI6ITB9KTtsZXQgTz10aGlzLm91dGRhdGVkUGFja2FnZXMuc2xpY2UoMCwxMCk7Zm9yKGxldCAkIG9mIE8pXy5wdXNoKHtuYW1lOmAkeyQubmFtZX06ICR7JC5jdXJyZW50fSBcdTIxOTIgJHskLmxhdGVzdH1gLGljb25OYW1lOiJsdWNpZGU6cGFja2FnZSIsYWN0aW9uOmkoYXN5bmMoKT0+e2F3YWl0IHRoaXMudXBkYXRlUGFja2FnZSgkLm5hbWUpfSwiYWN0aW9uIil9KTt0aGlzLm91dGRhdGVkUGFja2FnZXMubGVuZ3RoPjEwJiZfLnB1c2goe25hbWU6YC4uLiBhbmQgJHt0aGlzLm91dGRhdGVkUGFja2FnZXMubGVuZ3RoLTEwfSBtb3JlYCxpY29uTmFtZToibHVjaWRlOm1vcmVIb3Jpem9udGFsIixhY3Rpb246aShhc3luYygpPT57fSwiYWN0aW9uIil9KSxfLnB1c2goe2RpdmlkZXI6ITB9KSxfLnB1c2goe25hbWU6IlVwZGF0ZSBhbGwgcGFja2FnZXMiLGljb25OYW1lOiJsdWNpZGU6YXJyb3dVcENpcmNsZSIsYWN0aW9uOmkoYXN5bmMoKT0+e2F3YWl0IHRoaXMudXBkYXRlQWxsUGFja2FnZXMoKX0sImFjdGlvbiIpfSl9YXdhaXQga2Eub3BlbkNvbnRleHRNZW51V2l0aE9wdGlvbnMoQyxfKX1hc3luYyB1cGRhdGVQYWNrYWdlKEMpe2lmKCF0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50KXJldHVybjt0aGlzLnBlbmRpbmdQYWNrYWdlVXBkYXRlPSEwO2xldCBfPXt0eXBlOiJwYWNrYWdlLXVwZGF0ZSIsbGFiZWw6YHVwZGF0ZSAke0N9YCxjb21tYW5kOiJwbnBtIixhcmdzOlsidXBkYXRlIiwiLS1sYXRlc3QiLENdLG1ldGFkYXRhOntwYWNrYWdlTmFtZTpDfX07dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgicnVuLXByb2Nlc3MiLHtidWJibGVzOiEwLGNvbXBvc2VkOiEwLGRldGFpbDpffSkpfWFzeW5jIHVwZGF0ZUFsbFBhY2thZ2VzKCl7aWYoIXRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQpcmV0dXJuO3RoaXMucGVuZGluZ1BhY2thZ2VVcGRhdGU9ITA7bGV0IEM9e3R5cGU6InBhY2thZ2UtdXBkYXRlIixsYWJlbDoidXBkYXRlIGFsbCIsY29tbWFuZDoicG5wbSIsYXJnczpbInVwZGF0ZSIsIi0tbGF0ZXN0Il19O3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInJ1bi1wcm9jZXNzIix7YnViYmxlczohMCxjb21wb3NlZDohMCxkZXRhaWw6Q30pKX1nZXRQYWNrYWdlU3RhdHVzQ2xhc3MoKXtyZXR1cm4gdGhpcy5pc0NoZWNraW5nUGFja2FnZXM/IiI6dGhpcy5wYWNrYWdlU3RhdHVzfWdldFBhY2thZ2VJY29uKCl7aWYodGhpcy5pc0NoZWNraW5nUGFja2FnZXMpcmV0dXJuImx1Y2lkZTpsb2FkZXIyIjtzd2l0Y2godGhpcy5wYWNrYWdlU3RhdHVzKXtjYXNlInVwLXRvLWRhdGUiOnJldHVybiJsdWNpZGU6Y2hlY2tDaXJjbGUiO2Nhc2UidXBkYXRlcy1hdmFpbGFibGUiOnJldHVybiJsdWNpZGU6YWxlcnRDaXJjbGUiO2Nhc2UiZXJyb3IiOnJldHVybiJsdWNpZGU6eENpcmNsZSI7ZGVmYXVsdDpyZXR1cm4ibHVjaWRlOnBhY2thZ2UifX1nZXRQYWNrYWdlU3RhdHVzVGV4dCgpe2lmKHRoaXMuaXNDaGVja2luZ1BhY2thZ2VzKXJldHVybiJDaGVja2luZy4uLiI7c3dpdGNoKHRoaXMucGFja2FnZVN0YXR1cyl7Y2FzZSJ1cC10by1kYXRlIjpyZXR1cm4iVXAgdG8gZGF0ZSI7Y2FzZSJ1cGRhdGVzLWF2YWlsYWJsZSI6cmV0dXJuYCR7dGhpcy5vdXRkYXRlZFBhY2thZ2VzLmxlbmd0aH0gdXBkYXRlJHt0aGlzLm91dGRhdGVkUGFja2FnZXMubGVuZ3RoIT09MT8icyI6IiJ9YDtjYXNlImVycm9yIjpyZXR1cm4iQ2hlY2sgZmFpbGVkIjtkZWZhdWx0OnJldHVybiJQYWNrYWdlcyJ9fWdldFBhY2thZ2VUb29sdGlwKCl7aWYodGhpcy5pc0NoZWNraW5nUGFja2FnZXMpcmV0dXJuIkNoZWNraW5nIGZvciBwYWNrYWdlIHVwZGF0ZXMuLi4iO3N3aXRjaCh0aGlzLnBhY2thZ2VTdGF0dXMpe2Nhc2UidXAtdG8tZGF0ZSI6cmV0dXJuIkFsbCBwYWNrYWdlcyBhcmUgdXAgdG8gZGF0ZSI7Y2FzZSJ1cGRhdGVzLWF2YWlsYWJsZSI6cmV0dXJuYCR7dGhpcy5vdXRkYXRlZFBhY2thZ2VzLmxlbmd0aH0gcGFja2FnZSB1cGRhdGUke3RoaXMub3V0ZGF0ZWRQYWNrYWdlcy5sZW5ndGghPT0xPyJzIjoiIn0gYXZhaWxhYmxlYDtjYXNlImVycm9yIjpyZXR1cm4iRmFpbGVkIHRvIGNoZWNrIGZvciB1cGRhdGVzLiBDbGljayB0byByZXRyeS4iO2RlZmF1bHQ6cmV0dXJuIkNsaWNrIHRvIGNoZWNrIGZvciBwYWNrYWdlIHVwZGF0ZXMifX1hc3luYyByZWZyZXNoUGFja2FnZVN0YXR1cygpe2F3YWl0IHRoaXMuY2hlY2tQYWNrYWdlcygpfWFzeW5jIHJlZnJlc2hTY3JpcHRzKCl7YXdhaXQgdGhpcy5sb2FkU2NyaXB0cygpfXN0YXRpY3ttMihhLHQpfX07cmV0dXJuIE49YX0pKCl9KTt2YXIgbFEsanJ0PWcoKCk9PntsUT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJUeXBlU2NyaXB0SW50ZWxsaVNlbnNlTWFuYWdlciIpfWxvYWRlZExpYnM9bmV3IFNldDtub3RGb3VuZFBhY2thZ2VzPW5ldyBTZXQ7bW9uYWNvSW5zdGFuY2U9bnVsbDtleGVjdXRpb25FbnZpcm9ubWVudD1udWxsO2ZpbGVDYWNoZT1uZXcgTWFwO2FkZGVkRXh0cmFMaWJzPW5ldyBNYXA7Z2V0IHRzQXBpKCl7cmV0dXJuIHRoaXMubW9uYWNvSW5zdGFuY2U/dGhpcy5tb25hY29JbnN0YW5jZS5sYW5ndWFnZXMudHlwZXNjcmlwdDpudWxsfWFzeW5jIGluaXQoZSx0KXt0aGlzLm1vbmFjb0luc3RhbmNlPWUsdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudD10LHRoaXMuY29uZmlndXJlQ29tcGlsZXJPcHRpb25zKCksYXdhaXQgdGhpcy5sb2FkQWxsUHJvamVjdEZpbGVzKCl9YXN5bmMgbG9hZEFsbFByb2plY3RGaWxlcygpe3RoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQmJmF3YWl0IHRoaXMubG9hZEZpbGVzRnJvbURpcmVjdG9yeSgiLyIpfWFzeW5jIGxvYWRGaWxlc0Zyb21EaXJlY3RvcnkoZSl7aWYodGhpcy5leGVjdXRpb25FbnZpcm9ubWVudCl0cnl7bGV0IHQ9YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5yZWFkRGlyKGUpO2ZvcihsZXQgYSBvZiB0KXtsZXQgcj1lPT09Ii8iP2AvJHthLm5hbWV9YDpgJHtlfS8ke2EubmFtZX1gO2lmKGEubmFtZSE9PSJub2RlX21vZHVsZXMiKXtpZihhLnR5cGU9PT0iZGlyZWN0b3J5Iilhd2FpdCB0aGlzLmxvYWRGaWxlc0Zyb21EaXJlY3Rvcnkocik7ZWxzZSBpZihhLnR5cGU9PT0iZmlsZSIpe2xldCBuPWEubmFtZS5zcGxpdCgiLiIpLnBvcCgpPy50b0xvd2VyQ2FzZSgpO2lmKG49PT0idHMifHxuPT09InRzeCJ8fG49PT0ianMifHxuPT09ImpzeCIpdHJ5e2xldCBvPWF3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQucmVhZEZpbGUocik7dGhpcy5hZGRGaWxlTW9kZWwocixvKX1jYXRjaHt9fX19fWNhdGNoe319Y29uZmlndXJlQ29tcGlsZXJPcHRpb25zKCl7bGV0IGU9dGhpcy50c0FwaTtlJiYoZS50eXBlc2NyaXB0RGVmYXVsdHMuc2V0Q29tcGlsZXJPcHRpb25zKHt0YXJnZXQ6ZS5TY3JpcHRUYXJnZXQuRVMyMDIwLG1vZHVsZTplLk1vZHVsZUtpbmQuRVNOZXh0LG1vZHVsZVJlc29sdXRpb246ZS5Nb2R1bGVSZXNvbHV0aW9uS2luZC5CdW5kbGVyPz9lLk1vZHVsZVJlc29sdXRpb25LaW5kLk5vZGVKcyxhbGxvd1N5bnRoZXRpY0RlZmF1bHRJbXBvcnRzOiEwLGVzTW9kdWxlSW50ZXJvcDohMCxzdHJpY3Q6ITAsbm9FbWl0OiEwLGFsbG93SnM6ITAsY2hlY2tKczohMSxhbGxvd05vblRzRXh0ZW5zaW9uczohMCxsaWI6WyJlczIwMjAiLCJkb20iLCJkb20uaXRlcmFibGUiXSxiYXNlVXJsOiIvIixhbGxvd0ltcG9ydGluZ1RzRXh0ZW5zaW9uczohMCxyZXNvbHZlSnNvbk1vZHVsZTohMH0pLGUudHlwZXNjcmlwdERlZmF1bHRzLnNldERpYWdub3N0aWNzT3B0aW9ucyh7bm9TZW1hbnRpY1ZhbGlkYXRpb246ITEsbm9TeW50YXhWYWxpZGF0aW9uOiExfSksZS50eXBlc2NyaXB0RGVmYXVsdHMuc2V0RWFnZXJNb2RlbFN5bmMoITApKX1wYXJzZUltcG9ydHMoZSl7bGV0IHQ9W10sYT0vaW1wb3J0XHMrKD86W1x3Knt9XHMsXStmcm9tXHMrKT9bJyJdKFteJyJdKylbJyJdL2cscjtmb3IoOyhyPWEuZXhlYyhlKSkhPT1udWxsOyl7bGV0IG89clsxXTtpZighby5zdGFydHNXaXRoKCIuIikmJiFvLnN0YXJ0c1dpdGgoIi8iKSl7bGV0IGw9by5zdGFydHNXaXRoKCJAIik/by5zcGxpdCgiLyIpLnNsaWNlKDAsMikuam9pbigiLyIpOm8uc3BsaXQoIi8iKVswXTt0LnB1c2gobCl9fWxldCBuPS9yZXF1aXJlXHMqXChccypbJyJdKFteJyJdKylbJyJdXHMqXCkvZztmb3IoOyhyPW4uZXhlYyhlKSkhPT1udWxsOyl7bGV0IG89clsxXTtpZighby5zdGFydHNXaXRoKCIuIikmJiFvLnN0YXJ0c1dpdGgoIi8iKSl7bGV0IGw9by5zdGFydHNXaXRoKCJAIik/by5zcGxpdCgiLyIpLnNsaWNlKDAsMikuam9pbigiLyIpOm8uc3BsaXQoIi8iKVswXTt0LnB1c2gobCl9fXJldHVyblsuLi5uZXcgU2V0KHQpXX1hc3luYyBsb2FkVHlwZXNGb3JQYWNrYWdlKGUpe2lmKCEoIXRoaXMubW9uYWNvSW5zdGFuY2V8fCF0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50KSYmIXRoaXMubG9hZGVkTGlicy5oYXMoZSkmJiF0aGlzLm5vdEZvdW5kUGFja2FnZXMuaGFzKGUpKXRyeXtsZXQgdD1hd2FpdCB0aGlzLnRyeUxvYWRQYWNrYWdlVHlwZXMoZSk7dHx8KHQ9YXdhaXQgdGhpcy50cnlMb2FkQXRUeXBlc1BhY2thZ2UoZSkpLHQ/dGhpcy5sb2FkZWRMaWJzLmFkZChlKTp0aGlzLm5vdEZvdW5kUGFja2FnZXMuYWRkKGUpfWNhdGNoKHQpe2NvbnNvbGUud2FybihgRmFpbGVkIHRvIGxvYWQgdHlwZXMgZm9yICR7ZX06YCx0KX19YXN5bmMgdHJ5TG9hZFBhY2thZ2VUeXBlcyhlKXtsZXQgdD10aGlzLnRzQXBpO2lmKCF0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50fHwhdClyZXR1cm4hMTtsZXQgYT1gL25vZGVfbW9kdWxlcy8ke2V9YDt0cnl7bGV0IHI9YCR7YX0vcGFja2FnZS5qc29uYDtpZihhd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LmV4aXN0cyhyKSl7bGV0IGw9YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5yZWFkRmlsZShyKSxwPUpTT04ucGFyc2UobCk7aWYodC50eXBlc2NyaXB0RGVmYXVsdHMuYWRkRXh0cmFMaWIobCxgZmlsZTovLyR7cn1gKSxwLnR5cGVzfHxwLnR5cGluZ3MpcmV0dXJuIGF3YWl0IHRoaXMubG9hZEFsbER0c0ZpbGVzRnJvbVBhY2thZ2UoYSksITB9bGV0IG89W2Ake2F9L2luZGV4LmQudHNgLGAke2F9L2Rpc3QvaW5kZXguZC50c2AsYCR7YX0vbGliL2luZGV4LmQudHNgXTtmb3IobGV0IGwgb2YgbylpZihhd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LmV4aXN0cyhsKSlyZXR1cm4gYXdhaXQgdGhpcy5sb2FkQWxsRHRzRmlsZXNGcm9tUGFja2FnZShhKSwhMDtyZXR1cm4hMX1jYXRjaChyKXtyZXR1cm4gY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGxvYWQgcGFja2FnZSB0eXBlcyBmb3IgJHtlfTpgLHIpLCExfX1hc3luYyBsb2FkQWxsRHRzRmlsZXNGcm9tUGFja2FnZShlKXtsZXQgdD10aGlzLnRzQXBpOyF0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50fHwhdHx8YXdhaXQgdGhpcy5sb2FkRHRzRmlsZXNGcm9tRGlyZWN0b3J5KGUpfWFzeW5jIGxvYWREdHNGaWxlc0Zyb21EaXJlY3RvcnkoZSl7bGV0IHQ9dGhpcy50c0FwaTtpZighKCF0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50fHwhdCkpdHJ5e2xldCBhPWF3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQucmVhZERpcihlKTtmb3IobGV0IHIgb2YgYSl7bGV0IG49ZT09PSIvIj9gLyR7ci5uYW1lfWA6YCR7ZX0vJHtyLm5hbWV9YDtpZihyLm5hbWUhPT0ibm9kZV9tb2R1bGVzIil7aWYoci50eXBlPT09ImRpcmVjdG9yeSIpYXdhaXQgdGhpcy5sb2FkRHRzRmlsZXNGcm9tRGlyZWN0b3J5KG4pO2Vsc2UgaWYoci50eXBlPT09ImZpbGUiJiZyLm5hbWUuZW5kc1dpdGgoIi5kLnRzIikpdHJ5e2xldCBvPWF3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQucmVhZEZpbGUobik7dC50eXBlc2NyaXB0RGVmYXVsdHMuYWRkRXh0cmFMaWIobyxgZmlsZTovLyR7bn1gKX1jYXRjaHt9fX19Y2F0Y2h7fX1hc3luYyB0cnlMb2FkQXRUeXBlc1BhY2thZ2UoZSl7aWYoIXRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQpcmV0dXJuITE7bGV0IGE9YC9ub2RlX21vZHVsZXMvJHtlLnN0YXJ0c1dpdGgoIkAiKT9gQHR5cGVzLyR7ZS5zbGljZSgxKS5yZXBsYWNlKCIvIiwiX18iKX1gOmBAdHlwZXMvJHtlfWB9YDt0cnl7bGV0IHI9YCR7YX0vaW5kZXguZC50c2A7cmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQuZXhpc3RzKHIpPyhhd2FpdCB0aGlzLmxvYWRBbGxEdHNGaWxlc0Zyb21QYWNrYWdlKGEpLCEwKTohMX1jYXRjaHtyZXR1cm4hMX19YXN5bmMgcHJvY2Vzc0NvbnRlbnRDaGFuZ2UoZSl7bGV0IHQ9dGhpcy5wYXJzZUltcG9ydHMoZSk7Zm9yKGxldCBhIG9mIHQpdGhpcy5sb2FkZWRMaWJzLmhhcyhhKXx8YXdhaXQgdGhpcy5sb2FkVHlwZXNGb3JQYWNrYWdlKGEpfWFzeW5jIHNjYW5BbmRMb2FkTmV3UGFja2FnZVR5cGVzKCl7aWYodGhpcy5leGVjdXRpb25FbnZpcm9ubWVudCl7dGhpcy5ub3RGb3VuZFBhY2thZ2VzLmNsZWFyKCk7dHJ5e2lmKCFhd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LmV4aXN0cygiL25vZGVfbW9kdWxlcyIpKXJldHVybjtsZXQgZT1hd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LnJlYWREaXIoIi9ub2RlX21vZHVsZXMiKTtmb3IobGV0IHQgb2YgZSlpZih0LnR5cGU9PT0iZGlyZWN0b3J5IilpZih0Lm5hbWUuc3RhcnRzV2l0aCgiQCIpKXRyeXtsZXQgYT1gL25vZGVfbW9kdWxlcy8ke3QubmFtZX1gLHI9YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5yZWFkRGlyKGEpO2ZvcihsZXQgbiBvZiByKWlmKG4udHlwZT09PSJkaXJlY3RvcnkiKXtsZXQgbz1gJHt0Lm5hbWV9LyR7bi5uYW1lfWA7YXdhaXQgdGhpcy5sb2FkVHlwZXNGb3JQYWNrYWdlKG8pfX1jYXRjaHt9ZWxzZSB0Lm5hbWUuc3RhcnRzV2l0aCgiLiIpfHxhd2FpdCB0aGlzLmxvYWRUeXBlc0ZvclBhY2thZ2UodC5uYW1lKX1jYXRjaChlKXtjb25zb2xlLndhcm4oIkZhaWxlZCB0byBzY2FuIG5vZGVfbW9kdWxlczoiLGUpfX19YWRkRmlsZU1vZGVsKGUsdCl7aWYoIXRoaXMubW9uYWNvSW5zdGFuY2UpcmV0dXJuO3RoaXMuZmlsZUNhY2hlLnNldChlLHQpO2xldCBhPXRoaXMubW9uYWNvSW5zdGFuY2UuVXJpLnBhcnNlKGBmaWxlOi8vJHtlfWApLHI9dGhpcy5tb25hY29JbnN0YW5jZS5lZGl0b3IuZ2V0TW9kZWwoYSk7aWYocilyLmdldFZhbHVlKCkhPT10JiZyLnNldFZhbHVlKHQpO2Vsc2V7bGV0IG49dGhpcy5nZXRMYW5ndWFnZUZyb21QYXRoKGUpO3RoaXMubW9uYWNvSW5zdGFuY2UuZWRpdG9yLmNyZWF0ZU1vZGVsKHQsbixhKX10aGlzLmFkZEZpbGVBc0V4dHJhTGliKGUsdCl9YWRkRmlsZUFzRXh0cmFMaWIoZSx0KXtsZXQgYT10aGlzLnRzQXBpO2lmKCFhKXJldHVybjtsZXQgcj10aGlzLmFkZGVkRXh0cmFMaWJzLmdldChlKTtyJiZyLmRpc3Bvc2UoKTtsZXQgbj1gZmlsZTovLyR7ZX1gLG89YS50eXBlc2NyaXB0RGVmYXVsdHMuYWRkRXh0cmFMaWIodCxuKTtpZih0aGlzLmFkZGVkRXh0cmFMaWJzLnNldChlLG8pLGUuZW5kc1dpdGgoIi50cyIpJiYhZS5lbmRzV2l0aCgiLmQudHMiKSl7bGV0IGw9ZS5yZXBsYWNlKC9cLnRzJC8sIi5qcyIpLHA9YGZpbGU6Ly8ke2x9YCxkPWEudHlwZXNjcmlwdERlZmF1bHRzLmFkZEV4dHJhTGliKHQscCk7dGhpcy5hZGRlZEV4dHJhTGlicy5zZXQobCxkKSx0aGlzLmZpbGVDYWNoZS5zZXQobCx0KX1lbHNlIGlmKGUuZW5kc1dpdGgoIi50c3giKSl7bGV0IGw9ZS5yZXBsYWNlKC9cLnRzeCQvLCIuanN4IikscD1gZmlsZTovLyR7bH1gLGQ9YS50eXBlc2NyaXB0RGVmYXVsdHMuYWRkRXh0cmFMaWIodCxwKTt0aGlzLmFkZGVkRXh0cmFMaWJzLnNldChsLGQpLHRoaXMuZmlsZUNhY2hlLnNldChsLHQpfX1nZXRGaWxlQ29udGVudChlKXtyZXR1cm4gdGhpcy5maWxlQ2FjaGUuZ2V0KGUpfWdldExhbmd1YWdlRnJvbVBhdGgoZSl7c3dpdGNoKGUuc3BsaXQoIi4iKS5wb3AoKT8udG9Mb3dlckNhc2UoKSl7Y2FzZSJ0cyI6Y2FzZSJ0c3giOnJldHVybiJ0eXBlc2NyaXB0IjtjYXNlImpzIjpjYXNlImpzeCI6cmV0dXJuImphdmFzY3JpcHQiO2Nhc2UianNvbiI6cmV0dXJuImpzb24iO2RlZmF1bHQ6cmV0dXJuInBsYWludGV4dCJ9fX19KTt2YXIgTGcsc2MsYzdhLFZydD1nKCgpPT57cGUoKTtrdCgpO05ldCgpO3B0KCk7RDgoKTtMZz1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sc2M9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LGM3YT0oKCk9PntsZXQgcz1bbmUoImRlZXMtd29ya3NwYWNlLWRpZmYtZWRpdG9yIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W107dmFyIE89Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNXb3Jrc3BhY2VEaWZmRWRpdG9yIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0ICQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpTdHJpbmd9KV0scD1bTCh7dHlwZTpTdHJpbmd9KV0sYz1bTCh7dHlwZTpTdHJpbmd9KV0seD1bTCh7dHlwZTpTdHJpbmd9KV0seT1bTCh7dHlwZTpTdHJpbmd9KV0sTj1bTCh7dHlwZTpTdHJpbmd9KV0sTGcodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJvcmlnaW5hbENvbnRlbnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+Im9yaWdpbmFsQ29udGVudCJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLm9yaWdpbmFsQ29udGVudCwiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLm9yaWdpbmFsQ29udGVudD1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LG8sbCksTGcodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtb2RpZmllZENvbnRlbnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+Im1vZGlmaWVkQ29udGVudCJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLm1vZGlmaWVkQ29udGVudCwiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLm1vZGlmaWVkQ29udGVudD1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LGQsdSksTGcodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJvcmlnaW5hbExhYmVsIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEU9PiJvcmlnaW5hbExhYmVsImluIEUsImhhcyIpLGdldDppKEU9PkUub3JpZ2luYWxMYWJlbCwiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLm9yaWdpbmFsTGFiZWw9SH0sInNldCIpfSxtZXRhZGF0YTokfSxiLHYpLExnKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToibW9kaWZpZWRMYWJlbCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShFPT4ibW9kaWZpZWRMYWJlbCJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLm1vZGlmaWVkTGFiZWwsImdldCIpLHNldDppKChFLEgpPT57RS5tb2RpZmllZExhYmVsPUh9LCJzZXQiKX0sbWV0YWRhdGE6JH0sbSxmKSxMZyh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Imxhbmd1YWdlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEU9PiJsYW5ndWFnZSJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLmxhbmd1YWdlLCJnZXQiKSxzZXQ6aSgoRSxIKT0+e0UubGFuZ3VhZ2U9SH0sInNldCIpfSxtZXRhZGF0YTokfSxNLHopLExnKHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZmlsZVBhdGgiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+ImZpbGVQYXRoImluIEUsImhhcyIpLGdldDppKEU9PkUuZmlsZVBhdGgsImdldCIpLHNldDppKChFLEgpPT57RS5maWxlUGF0aD1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LEMsXyksTGcobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6JH0sbnVsbCx0KSxPPWE9ZS52YWx1ZSwkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOiR9KX1zdGF0aWMgZGVtbz1pKCgpPT53YAogICAgPGRlZXMtd29ya3NwYWNlLWRpZmYtZWRpdG9yCiAgICAgIC5vcmlnaW5hbENvbnRlbnQ9JHtgZnVuY3Rpb24gaGVsbG8oKSB7CiAgY29uc29sZS5sb2coIkhlbGxvIik7Cn1gfQogICAgICAubW9kaWZpZWRDb250ZW50PSR7YGZ1bmN0aW9uIGhlbGxvKCkgewogIGNvbnNvbGUubG9nKCJIZWxsbyBXb3JsZCEiKTsKICByZXR1cm4gdHJ1ZTsKfWB9CiAgICAgIC5sYW5ndWFnZT0keyJ0eXBlc2NyaXB0In0KICAgICAgLmZpbGVQYXRoPSR7Ii9kZW1vL2V4YW1wbGUudHMifQogICAgPjwvZGVlcy13b3Jrc3BhY2UtZGlmZi1lZGl0b3I+CiAgYCwiZGVtbyIpO3N0YXRpYyBkZW1vR3JvdXBzPVsiV29ya3NwYWNlIl07ZGlmZkVkaXRvckRlZmVycmVkPXV0LnNtYXJ0cHJvbWlzZS5kZWZlcigpOyNlPXNjKHRoaXMsbywiIik7Z2V0IG9yaWdpbmFsQ29udGVudCgpe3JldHVybiB0aGlzLiNlfXNldCBvcmlnaW5hbENvbnRlbnQoJCl7dGhpcy4jZT0kfSN0PShzYyh0aGlzLGwpLHNjKHRoaXMsZCwiIikpO2dldCBtb2RpZmllZENvbnRlbnQoKXtyZXR1cm4gdGhpcy4jdH1zZXQgbW9kaWZpZWRDb250ZW50KCQpe3RoaXMuI3Q9JH0jYT0oc2ModGhpcyx1KSxzYyh0aGlzLGIsIkRpc2sgVmVyc2lvbiIpKTtnZXQgb3JpZ2luYWxMYWJlbCgpe3JldHVybiB0aGlzLiNhfXNldCBvcmlnaW5hbExhYmVsKCQpe3RoaXMuI2E9JH0jcz0oc2ModGhpcyx2KSxzYyh0aGlzLG0sIkxvY2FsIFZlcnNpb24iKSk7Z2V0IG1vZGlmaWVkTGFiZWwoKXtyZXR1cm4gdGhpcy4jc31zZXQgbW9kaWZpZWRMYWJlbCgkKXt0aGlzLiNzPSR9I2k9KHNjKHRoaXMsZiksc2ModGhpcyxNLCJ0eXBlc2NyaXB0IikpO2dldCBsYW5ndWFnZSgpe3JldHVybiB0aGlzLiNpfXNldCBsYW5ndWFnZSgkKXt0aGlzLiNpPSR9I3I9KHNjKHRoaXMseiksc2ModGhpcyxDLCIiKSk7Z2V0IGZpbGVQYXRoKCl7cmV0dXJuIHRoaXMuI3J9c2V0IGZpbGVQYXRoKCQpe3RoaXMuI3I9JH1kaWZmRWRpdG9yPShzYyh0aGlzLF8pLG51bGwpO21vbmFjb1RoZW1lU3Vic2NyaXB0aW9uPW51bGw7b3JpZ2luYWxNb2RlbD1udWxsO21vZGlmaWVkTW9kZWw9bnVsbDtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksamkuc2V0dXBEb21Ub29scygpfXN0YXRpYyBzdHlsZXM9W0hlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgfQoKICAgICAgKiB7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLmRpZmYtd3JhcHBlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgLmRpZmYtdG9vbGJhciB7CiAgICAgICAgaGVpZ2h0OiA0OHB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5NiUpIiwiaHNsKDAgMCUgMTIlKSIpfTsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgwIDAlIDg1JSkiLCJoc2woMCAwJSAyMCUpIil9OwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAuZGlmZi1pbmZvIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDMwJSkiLCJoc2woMCAwJSA4MCUpIil9OwogICAgICB9CgogICAgICAuZGlmZi1maWxlbmFtZSB7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDIwJSkiLCJoc2woMCAwJSA5MCUpIil9OwogICAgICB9CgogICAgICAuZGlmZi1sYWJlbHMgewogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDUwJSkiLCJoc2woMCAwJSA2MCUpIil9OwogICAgICB9CgogICAgICAuZGlmZi1hY3Rpb25zIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgIH0KCiAgICAgIC5kaWZmLWNvbnRhaW5lciB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBtaW4taGVpZ2h0OiAwOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAubmF2LWJ1dHRvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiA0cHg7CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9ucyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBtYXJnaW4tbGVmdDogMTZweDsKICAgICAgfQogICAgYF07cmVuZGVyKCl7bGV0ICQ9dGhpcy5maWxlUGF0aC5zcGxpdCgiLyIpLnBvcCgpfHwiZmlsZSI7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImRpZmYtd3JhcHBlciI+CiAgICAgICAgPGRpdiBjbGFzcz0iZGlmZi10b29sYmFyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImRpZmYtaW5mbyI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkaWZmLWZpbGVuYW1lIj4keyR9PC9zcGFuPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iZGlmZi1sYWJlbHMiPiR7dGhpcy5vcmlnaW5hbExhYmVsfSDihpQgJHt0aGlzLm1vZGlmaWVkTGFiZWx9PC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkaWZmLWFjdGlvbnMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXYtYnV0dG9ucyI+CiAgICAgICAgICAgICAgPGRlZXMtYnV0dG9uCiAgICAgICAgICAgICAgICB0eXBlPSJvdXRsaW5lIgogICAgICAgICAgICAgICAgQGNsaWNrPSR7dGhpcy5nb1RvUHJldmlvdXNEaWZmfQogICAgICAgICAgICAgID5QcmV2aW91czwvZGVlcy1idXR0b24+CiAgICAgICAgICAgICAgPGRlZXMtYnV0dG9uCiAgICAgICAgICAgICAgICB0eXBlPSJvdXRsaW5lIgogICAgICAgICAgICAgICAgQGNsaWNrPSR7dGhpcy5nb1RvTmV4dERpZmZ9CiAgICAgICAgICAgICAgPk5leHQ8L2RlZXMtYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbnMiPgogICAgICAgICAgICAgIDxkZWVzLWJ1dHRvbgogICAgICAgICAgICAgICAgdHlwZT0iaGlnaGxpZ2h0ZWQiCiAgICAgICAgICAgICAgICBAY2xpY2s9JHt0aGlzLmFjY2VwdExvY2FsfQogICAgICAgICAgICAgID5Vc2UgTG9jYWw8L2RlZXMtYnV0dG9uPgogICAgICAgICAgICAgIDxkZWVzLWJ1dHRvbgogICAgICAgICAgICAgICAgdHlwZT0ib3V0bGluZSIKICAgICAgICAgICAgICAgIEBjbGljaz0ke3RoaXMuYWNjZXB0RGlza30KICAgICAgICAgICAgICA+VXNlIERpc2s8L2RlZXMtYnV0dG9uPgogICAgICAgICAgICAgIDxkZWVzLWJ1dHRvbgogICAgICAgICAgICAgICAgdHlwZT0ib3V0bGluZSIKICAgICAgICAgICAgICAgIEBjbGljaz0ke3RoaXMuY2xvc2V9CiAgICAgICAgICAgICAgPkNsb3NlPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJkaWZmLWNvbnRhaW5lciI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1hc3luYyBmaXJzdFVwZGF0ZWQoKXthd2FpdCBzdXBlci5maXJzdFVwZGF0ZWQobmV3IE1hcCksYXdhaXQgdGhpcy5pbml0RGlmZkVkaXRvcigpfWFzeW5jIGluaXREaWZmRWRpdG9yKCl7bGV0ICQ9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIuZGlmZi1jb250YWluZXIiKTtpZighJClyZXR1cm47bGV0IEU9YGh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbW9uYWNvLWVkaXRvckAke2NuZX1gLEg9d2luZG93Lm1vbmFjbztIfHwoYXdhaXQgbmV3IFByb21pc2UoVz0+e2xldCBtZT1zZXRJbnRlcnZhbCgoKT0+e3dpbmRvdy5tb25hY28mJihjbGVhckludGVydmFsKG1lKSxXKCkpfSwxMDApfSksSD13aW5kb3cubW9uYWNvKTtsZXQgaz1hd2FpdCB0aGlzLmRvbXRvb2xzUHJvbWlzZSxJPWsudGhlbWVNYW5hZ2VyLmdvQnJpZ2h0Qm9vbGVhbj8idnMiOiJ2cy1kYXJrIixQPURhdGUubm93KCksUj1ILlVyaS5wYXJzZShgZGlmZjovL29yaWdpbmFsLyR7UH0ke3RoaXMuZmlsZVBhdGh9YCksSz1ILlVyaS5wYXJzZShgZGlmZjovL21vZGlmaWVkLyR7UH0ke3RoaXMuZmlsZVBhdGh9YCk7dGhpcy5vcmlnaW5hbE1vZGVsPUguZWRpdG9yLmNyZWF0ZU1vZGVsKHRoaXMub3JpZ2luYWxDb250ZW50LHRoaXMubGFuZ3VhZ2UsUiksdGhpcy5tb2RpZmllZE1vZGVsPUguZWRpdG9yLmNyZWF0ZU1vZGVsKHRoaXMubW9kaWZpZWRDb250ZW50LHRoaXMubGFuZ3VhZ2UsSyksdGhpcy5kaWZmRWRpdG9yPUguZWRpdG9yLmNyZWF0ZURpZmZFZGl0b3IoJCx7YXV0b21hdGljTGF5b3V0OiEwLHJlYWRPbmx5OiExLG9yaWdpbmFsRWRpdGFibGU6ITEscmVuZGVyU2lkZUJ5U2lkZTohMCxpZ25vcmVUcmltV2hpdGVzcGFjZTohMSxmb250U2l6ZToxNCxtaW5pbWFwOntlbmFibGVkOiExfX0pLEguZWRpdG9yLnNldFRoZW1lKEkpLHRoaXMuZGlmZkVkaXRvci5zZXRNb2RlbCh7b3JpZ2luYWw6dGhpcy5vcmlnaW5hbE1vZGVsLG1vZGlmaWVkOnRoaXMubW9kaWZpZWRNb2RlbH0pLHRoaXMubW9uYWNvVGhlbWVTdWJzY3JpcHRpb249ay50aGVtZU1hbmFnZXIudGhlbWVPYnNlcnZhYmxlLnN1YnNjcmliZShXPT57bGV0IG1lPVc/InZzIjoidnMtZGFyayI7SC5lZGl0b3Iuc2V0VGhlbWUobWUpfSk7bGV0IFY9Im1vbmFjby1kaWZmLWVkaXRvci1jc3MiO2lmKCF0aGlzLnNoYWRvd1Jvb3Q/LmdldEVsZW1lbnRCeUlkKFYpKXtsZXQgbWU9YXdhaXQoYXdhaXQgZmV0Y2goYCR7RX0vbWluL3ZzL2VkaXRvci9lZGl0b3IubWFpbi5jc3NgKSkudGV4dCgpLEI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtCLmlkPVYsQi50ZXh0Q29udGVudD1tZSx0aGlzLnNoYWRvd1Jvb3Q/LmFwcGVuZChCKX1zZXRUaW1lb3V0KCgpPT57dHJ5e3RoaXMuZGlmZkVkaXRvcj8ucmV2ZWFsRmlyc3REaWZmKCl9Y2F0Y2h7fX0sMTAwKSx0aGlzLmRpZmZFZGl0b3JEZWZlcnJlZC5yZXNvbHZlKHRoaXMuZGlmZkVkaXRvcil9Z29Ub05leHREaWZmKCl7dHJ5e3RoaXMuZGlmZkVkaXRvcj8uZ29Ub0RpZmYoIm5leHQiKX1jYXRjaHt9fWdvVG9QcmV2aW91c0RpZmYoKXt0cnl7dGhpcy5kaWZmRWRpdG9yPy5nb1RvRGlmZigicHJldmlvdXMiKX1jYXRjaHt9fWFjY2VwdExvY2FsKCl7bGV0ICQ9dGhpcy5kaWZmRWRpdG9yPy5nZXRNb2RpZmllZEVkaXRvcigpLmdldFZhbHVlKCl8fHRoaXMubW9kaWZpZWRDb250ZW50O3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImRpZmYtcmVzb2x2ZWQiLHtkZXRhaWw6e2FjdGlvbjoidXNlLWxvY2FsIixjb250ZW50OiR9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9YWNjZXB0RGlzaygpe3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImRpZmYtcmVzb2x2ZWQiLHtkZXRhaWw6e2FjdGlvbjoidXNlLWRpc2siLGNvbnRlbnQ6dGhpcy5vcmlnaW5hbENvbnRlbnR9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9Y2xvc2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJkaWZmLWNsb3NlZCIse2J1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9YXN5bmMgZGlzY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMubW9uYWNvVGhlbWVTdWJzY3JpcHRpb24mJih0aGlzLm1vbmFjb1RoZW1lU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5tb25hY29UaGVtZVN1YnNjcmlwdGlvbj1udWxsKSx0aGlzLm9yaWdpbmFsTW9kZWwmJih0aGlzLm9yaWdpbmFsTW9kZWwuZGlzcG9zZSgpLHRoaXMub3JpZ2luYWxNb2RlbD1udWxsKSx0aGlzLm1vZGlmaWVkTW9kZWwmJih0aGlzLm1vZGlmaWVkTW9kZWwuZGlzcG9zZSgpLHRoaXMubW9kaWZpZWRNb2RlbD1udWxsKSx0aGlzLmRpZmZFZGl0b3ImJih0aGlzLmRpZmZFZGl0b3IuZGlzcG9zZSgpLHRoaXMuZGlmZkVkaXRvcj1udWxsKX1zdGF0aWN7c2MoYSx0KX19O3JldHVybiBPPWF9KSgpfSk7dmFyIERpLG9hLGQ3YSx1N2E9ZygoKT0+e3BlKCk7a3QoKTtwdCgpO3gxZSgpO1A4KCk7dzFlKCk7dzFlKCk7b1EoKTtvUSgpO0hydCgpO3FydCgpO1VhKCk7UDgoKTtqcnQoKTtvcigpO0l0KCk7ZTFlKCk7VnJ0KCk7RGk9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LG9hPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxkN2E9KCgpPT57bGV0IHM9W25lKCJkZWVzLXdvcmtzcGFjZSIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdLEgsaz1bXSxTPVtdLEksUD1bXSxSPVtdLEssVj1bXSxXPVtdLG1lLEI9W10sVT1bXSxoZSxGPVtdLGo9W10sdWUsbGU9W10sUT1bXSxpZSx0ZT1bXSxlZT1bXSxrZSxYPVtdLFo9W10seWUscT1bXSxBPVtdLHNlLG9lPVtdLGFlPVtdLFRlLFJlPVtdLEJlPVtdLEdlLERlPVtdLF9lPVtdLENlLHZlPVtdLGJlPVtdLEVlLGplPVtdLFdlPVtdLHN0LE1lPVtdLGdlPVtdO3ZhciBJZT1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1dvcmtzcGFjZSIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBjZT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOk9iamVjdH0pXSxwPVtMKHthdHRyaWJ1dGU6ITF9KV0sYz1bTCh7dHlwZTpCb29sZWFufSldLHg9W0woe3R5cGU6Qm9vbGVhbn0pXSx5PVtMKHt0eXBlOk51bWJlcn0pXSxOPVtMKHt0eXBlOk51bWJlcn0pXSxPPVtZKCldLEg9W1koKV0sST1bWSgpXSxLPVtZKCldLG1lPVtZKCldLGhlPVtZKCldLHVlPVtZKCldLGllPVtZKCldLGtlPVtZKCldLHllPVtZKCldLHNlPVtZKCldLFRlPVtZKCldLEdlPVtZKCldLENlPVtZKCldLEVlPVtZKCldLHN0PVtZKCldLERpKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZXhlY3V0aW9uRW52aXJvbm1lbnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZGU9PiJleGVjdXRpb25FbnZpcm9ubWVudCJpbiBkZSwiaGFzIiksZ2V0OmkoZGU9PmRlLmV4ZWN1dGlvbkVudmlyb25tZW50LCJnZXQiKSxzZXQ6aSgoZGUsTGUpPT57ZGUuZXhlY3V0aW9uRW52aXJvbm1lbnQ9TGV9LCJzZXQiKX0sbWV0YWRhdGE6Y2V9LG8sbCksRGkodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpbml0aWFsaXphdGlvblByb21pc2UiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZGU9PiJpbml0aWFsaXphdGlvblByb21pc2UiaW4gZGUsImhhcyIpLGdldDppKGRlPT5kZS5pbml0aWFsaXphdGlvblByb21pc2UsImdldCIpLHNldDppKChkZSxMZSk9PntkZS5pbml0aWFsaXphdGlvblByb21pc2U9TGV9LCJzZXQiKX0sbWV0YWRhdGE6Y2V9LGQsdSksRGkodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93RmlsZVRyZWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZGU9PiJzaG93RmlsZVRyZWUiaW4gZGUsImhhcyIpLGdldDppKGRlPT5kZS5zaG93RmlsZVRyZWUsImdldCIpLHNldDppKChkZSxMZSk9PntkZS5zaG93RmlsZVRyZWU9TGV9LCJzZXQiKX0sbWV0YWRhdGE6Y2V9LGIsdiksRGkodGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93VGVybWluYWwiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZGU9PiJzaG93VGVybWluYWwiaW4gZGUsImhhcyIpLGdldDppKGRlPT5kZS5zaG93VGVybWluYWwsImdldCIpLHNldDppKChkZSxMZSk9PntkZS5zaG93VGVybWluYWw9TGV9LCJzZXQiKX0sbWV0YWRhdGE6Y2V9LG0sZiksRGkodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJmaWxlVHJlZVdpZHRoIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGRlPT4iZmlsZVRyZWVXaWR0aCJpbiBkZSwiaGFzIiksZ2V0OmkoZGU9PmRlLmZpbGVUcmVlV2lkdGgsImdldCIpLHNldDppKChkZSxMZSk9PntkZS5maWxlVHJlZVdpZHRoPUxlfSwic2V0Iil9LG1ldGFkYXRhOmNlfSxNLHopLERpKHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidGVybWluYWxIZWlnaHQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZGU9PiJ0ZXJtaW5hbEhlaWdodCJpbiBkZSwiaGFzIiksZ2V0OmkoZGU9PmRlLnRlcm1pbmFsSGVpZ2h0LCJnZXQiKSxzZXQ6aSgoZGUsTGUpPT57ZGUudGVybWluYWxIZWlnaHQ9TGV9LCJzZXQiKX0sbWV0YWRhdGE6Y2V9LEMsXyksRGkodGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJvcGVuRmlsZXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZGU9PiJvcGVuRmlsZXMiaW4gZGUsImhhcyIpLGdldDppKGRlPT5kZS5vcGVuRmlsZXMsImdldCIpLHNldDppKChkZSxMZSk9PntkZS5vcGVuRmlsZXM9TGV9LCJzZXQiKX0sbWV0YWRhdGE6Y2V9LCQsRSksRGkodGhpcyxudWxsLEgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJhY3RpdmVGaWxlUGF0aCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShkZT0+ImFjdGl2ZUZpbGVQYXRoImluIGRlLCJoYXMiKSxnZXQ6aShkZT0+ZGUuYWN0aXZlRmlsZVBhdGgsImdldCIpLHNldDppKChkZSxMZSk9PntkZS5hY3RpdmVGaWxlUGF0aD1MZX0sInNldCIpfSxtZXRhZGF0YTpjZX0sayxTKSxEaSh0aGlzLG51bGwsSSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImlzVGVybWluYWxDb2xsYXBzZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZGU9PiJpc1Rlcm1pbmFsQ29sbGFwc2VkImluIGRlLCJoYXMiKSxnZXQ6aShkZT0+ZGUuaXNUZXJtaW5hbENvbGxhcHNlZCwiZ2V0Iiksc2V0OmkoKGRlLExlKT0+e2RlLmlzVGVybWluYWxDb2xsYXBzZWQ9TGV9LCJzZXQiKX0sbWV0YWRhdGE6Y2V9LFAsUiksRGkodGhpcyxudWxsLEsse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpc0ZpbGVUcmVlQ29sbGFwc2VkIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGRlPT4iaXNGaWxlVHJlZUNvbGxhcHNlZCJpbiBkZSwiaGFzIiksZ2V0OmkoZGU9PmRlLmlzRmlsZVRyZWVDb2xsYXBzZWQsImdldCIpLHNldDppKChkZSxMZSk9PntkZS5pc0ZpbGVUcmVlQ29sbGFwc2VkPUxlfSwic2V0Iil9LG1ldGFkYXRhOmNlfSxWLFcpLERpKHRoaXMsbnVsbCxtZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImlzSW5pdGlhbGl6aW5nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGRlPT4iaXNJbml0aWFsaXppbmciaW4gZGUsImhhcyIpLGdldDppKGRlPT5kZS5pc0luaXRpYWxpemluZywiZ2V0Iiksc2V0OmkoKGRlLExlKT0+e2RlLmlzSW5pdGlhbGl6aW5nPUxlfSwic2V0Iil9LG1ldGFkYXRhOmNlfSxCLFUpLERpKHRoaXMsbnVsbCxoZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImFjdGl2ZUJvdHRvbVBhbmVsIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGRlPT4iYWN0aXZlQm90dG9tUGFuZWwiaW4gZGUsImhhcyIpLGdldDppKGRlPT5kZS5hY3RpdmVCb3R0b21QYW5lbCwiZ2V0Iiksc2V0OmkoKGRlLExlKT0+e2RlLmFjdGl2ZUJvdHRvbVBhbmVsPUxlfSwic2V0Iil9LG1ldGFkYXRhOmNlfSxGLGopLERpKHRoaXMsbnVsbCx1ZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImRpYWdub3N0aWNNYXJrZXJzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGRlPT4iZGlhZ25vc3RpY01hcmtlcnMiaW4gZGUsImhhcyIpLGdldDppKGRlPT5kZS5kaWFnbm9zdGljTWFya2VycywiZ2V0Iiksc2V0OmkoKGRlLExlKT0+e2RlLmRpYWdub3N0aWNNYXJrZXJzPUxlfSwic2V0Iil9LG1ldGFkYXRhOmNlfSxsZSxRKSxEaSh0aGlzLG51bGwsaWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJhdXRvU2F2ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShkZT0+ImF1dG9TYXZlImluIGRlLCJoYXMiKSxnZXQ6aShkZT0+ZGUuYXV0b1NhdmUsImdldCIpLHNldDppKChkZSxMZSk9PntkZS5hdXRvU2F2ZT1MZX0sInNldCIpfSxtZXRhZGF0YTpjZX0sdGUsZWUpLERpKHRoaXMsbnVsbCxrZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImluaXRDb21tYW5kIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGRlPT4iaW5pdENvbW1hbmQiaW4gZGUsImhhcyIpLGdldDppKGRlPT5kZS5pbml0Q29tbWFuZCwiZ2V0Iiksc2V0OmkoKGRlLExlKT0+e2RlLmluaXRDb21tYW5kPUxlfSwic2V0Iil9LG1ldGFkYXRhOmNlfSxYLFopLERpKHRoaXMsbnVsbCx5ZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImluaXRPdXRwdXQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZGU9PiJpbml0T3V0cHV0ImluIGRlLCJoYXMiKSxnZXQ6aShkZT0+ZGUuaW5pdE91dHB1dCwiZ2V0Iiksc2V0OmkoKGRlLExlKT0+e2RlLmluaXRPdXRwdXQ9TGV9LCJzZXQiKX0sbWV0YWRhdGE6Y2V9LHEsQSksRGkodGhpcyxudWxsLHNlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY3VycmVudEZpbGVUcmVlV2lkdGgiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZGU9PiJjdXJyZW50RmlsZVRyZWVXaWR0aCJpbiBkZSwiaGFzIiksZ2V0OmkoZGU9PmRlLmN1cnJlbnRGaWxlVHJlZVdpZHRoLCJnZXQiKSxzZXQ6aSgoZGUsTGUpPT57ZGUuY3VycmVudEZpbGVUcmVlV2lkdGg9TGV9LCJzZXQiKX0sbWV0YWRhdGE6Y2V9LG9lLGFlKSxEaSh0aGlzLG51bGwsVGUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjdXJyZW50VGVybWluYWxIZWlnaHQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZGU9PiJjdXJyZW50VGVybWluYWxIZWlnaHQiaW4gZGUsImhhcyIpLGdldDppKGRlPT5kZS5jdXJyZW50VGVybWluYWxIZWlnaHQsImdldCIpLHNldDppKChkZSxMZSk9PntkZS5jdXJyZW50VGVybWluYWxIZWlnaHQ9TGV9LCJzZXQiKX0sbWV0YWRhdGE6Y2V9LFJlLEJlKSxEaSh0aGlzLG51bGwsR2Use2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpc0RyYWdnaW5nRmlsZVRyZWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZGU9PiJpc0RyYWdnaW5nRmlsZVRyZWUiaW4gZGUsImhhcyIpLGdldDppKGRlPT5kZS5pc0RyYWdnaW5nRmlsZVRyZWUsImdldCIpLHNldDppKChkZSxMZSk9PntkZS5pc0RyYWdnaW5nRmlsZVRyZWU9TGV9LCJzZXQiKX0sbWV0YWRhdGE6Y2V9LERlLF9lKSxEaSh0aGlzLG51bGwsQ2Use2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpc0RyYWdnaW5nVGVybWluYWwiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZGU9PiJpc0RyYWdnaW5nVGVybWluYWwiaW4gZGUsImhhcyIpLGdldDppKGRlPT5kZS5pc0RyYWdnaW5nVGVybWluYWwsImdldCIpLHNldDppKChkZSxMZSk9PntkZS5pc0RyYWdnaW5nVGVybWluYWw9TGV9LCJzZXQiKX0sbWV0YWRhdGE6Y2V9LHZlLGJlKSxEaSh0aGlzLG51bGwsRWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93RGlmZlZpZXciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZGU9PiJzaG93RGlmZlZpZXciaW4gZGUsImhhcyIpLGdldDppKGRlPT5kZS5zaG93RGlmZlZpZXcsImdldCIpLHNldDppKChkZSxMZSk9PntkZS5zaG93RGlmZlZpZXc9TGV9LCJzZXQiKX0sbWV0YWRhdGE6Y2V9LGplLFdlKSxEaSh0aGlzLG51bGwsc3Qse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJkaWZmVmlld0NvbmZpZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShkZT0+ImRpZmZWaWV3Q29uZmlnImluIGRlLCJoYXMiKSxnZXQ6aShkZT0+ZGUuZGlmZlZpZXdDb25maWcsImdldCIpLHNldDppKChkZSxMZSk9PntkZS5kaWZmVmlld0NvbmZpZz1MZX0sInNldCIpfSxtZXRhZGF0YTpjZX0sTWUsZ2UpLERpKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOmNlfSxudWxsLHQpLEllPWE9ZS52YWx1ZSxjZSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpjZX0pfXN0YXRpYyBkZW1vPWkoKCk9PntsZXQgY2U9bmV3IFRnLGRlPShhc3luYygpPT57YXdhaXQgY2UuaW5pdCgpO2xldCBZZT17InBhY2thZ2UuanNvbiI6e2ZpbGU6e2NvbnRlbnRzOkpTT04uc3RyaW5naWZ5KHtuYW1lOiJkZW1vLXByb2plY3QiLHZlcnNpb246IjEuMC4wIix0eXBlOiJtb2R1bGUiLHNjcmlwdHM6e2J1aWxkOiJ0c2MiLGRldjoidHNjIC0td2F0Y2gifSxkZXBlbmRlbmNpZXM6eyJAcHVzaC5yb2Nrcy9zbWFydHByb21pc2UiOiJeNC4yLjMifSxkZXZEZXBlbmRlbmNpZXM6eyJAdHlwZXMvbm9kZSI6Il4yMi4wLjAiLHR5cGVzY3JpcHQ6Il41LjAuMCJ9fSxudWxsLDIpfX0sIm5wbWV4dHJhLmpzb24iOntmaWxlOntjb250ZW50czpKU09OLnN0cmluZ2lmeSh7ZGVlc0VkaXRvcldvcmtzcGFjZTp7b25Jbml0OiJwbnBtIGluc3RhbGwifX0sbnVsbCwyKX19LCJ0c2NvbmZpZy5qc29uIjp7ZmlsZTp7Y29udGVudHM6SlNPTi5zdHJpbmdpZnkoe2NvbXBpbGVyT3B0aW9uczp7dGFyZ2V0OiJFUzIwMjIiLG1vZHVsZToiTm9kZU5leHQiLG1vZHVsZVJlc29sdXRpb246Ik5vZGVOZXh0IixzdHJpY3Q6ITAsb3V0RGlyOiIuL2Rpc3QiLHJvb3REaXI6Ii4vc3JjIixkZWNsYXJhdGlvbjohMH0saW5jbHVkZTpbInNyYy8qKi8qIl19LG51bGwsMil9fSxzcmM6e2RpcmVjdG9yeTp7ImluZGV4LnRzIjp7ZmlsZTp7Y29udGVudHM6YC8vIE1haW4gZW50cnkgcG9pbnQKaW1wb3J0IHsgZ3JlZXQsIGZvcm1hdE5hbWUgfSBmcm9tICcuL3V0aWxzLmpzJzsKCmNvbnN0IG5hbWUgPSBmb3JtYXROYW1lKCdXb3JsZCcpOwpjb25zb2xlLmxvZyhncmVldChuYW1lKSk7CgovLyBFeGFtcGxlIGFzeW5jIGZ1bmN0aW9uCmFzeW5jIGZ1bmN0aW9uIG1haW4oKSB7CiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKCdIZWxsbyBmcm9tIGFzeW5jIScpOwogIGNvbnNvbGUubG9nKHJlc3VsdCk7Cn0KCm1haW4oKTsKYH19LCJ1dGlscy50cyI6e2ZpbGU6e2NvbnRlbnRzOmAvLyBVdGlsaXR5IGZ1bmN0aW9ucwoKZXhwb3J0IGludGVyZmFjZSBJVXNlciB7CiAgZmlyc3ROYW1lOiBzdHJpbmc7CiAgbGFzdE5hbWU6IHN0cmluZzsKfQoKZXhwb3J0IGZ1bmN0aW9uIGdyZWV0KG5hbWU6IHN0cmluZyk6IHN0cmluZyB7CiAgcmV0dXJuIFxgSGVsbG8sIFwke25hbWV9IVxgOwp9CgpleHBvcnQgZnVuY3Rpb24gZm9ybWF0TmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcgewogIHJldHVybiBuYW1lLnRyaW0oKS50b1VwcGVyQ2FzZSgpOwp9CgpleHBvcnQgZnVuY3Rpb24gY3JlYXRlVXNlcihmaXJzdE5hbWU6IHN0cmluZywgbGFzdE5hbWU6IHN0cmluZyk6IElVc2VyIHsKICByZXR1cm4geyBmaXJzdE5hbWUsIGxhc3ROYW1lIH07Cn0KYH19LCJpbXBvcnR0ZXN0LnRzIjp7ZmlsZTp7Y29udGVudHM6YC8vIFRlc3QgbnBtIHBhY2thZ2UgaW1wb3J0cwppbXBvcnQgKiBhcyBzbWFydHByb21pc2UgZnJvbSAnQHB1c2gucm9ja3Mvc21hcnRwcm9taXNlJzsKCi8vIFRoaXMgc2hvdWxkIGhhdmUgSW50ZWxsaVNlbnNlIHNob3dpbmcgZGVmZXIoKSBtZXRob2QKY29uc3QgZGVmZXJyZWQgPSBzbWFydHByb21pc2UuZGVmZXI8c3RyaW5nPigpOwoKLy8gVGVzdCB1c2luZyB0aGUgZGVmZXJyZWQgcHJvbWlzZQphc3luYyBmdW5jdGlvbiB0ZXN0U21hcnRQcm9taXNlKCkgewogIHNldFRpbWVvdXQoKCkgPT4gewogICAgZGVmZXJyZWQucmVzb2x2ZSgnSGVsbG8gZnJvbSBzbWFydHByb21pc2UhJyk7CiAgfSwgMTAwKTsKCiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZGVmZXJyZWQucHJvbWlzZTsKICBjb25zb2xlLmxvZyhyZXN1bHQpOwp9Cgp0ZXN0U21hcnRQcm9taXNlKCk7CmB9fX19fTthd2FpdCBjZS5tb3VudChZZSl9KSgpLExlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO0xlLnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwOyBoZWlnaHQ6IDEwMCU7IHdpZHRoOiAxMDAlOyBvdmVyZmxvdzogaGlkZGVuOyI7bGV0IEtlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRlZXMtd29ya3NwYWNlIik7cmV0dXJuIEtlLmV4ZWN1dGlvbkVudmlyb25tZW50PWNlLEtlLmluaXRpYWxpemF0aW9uUHJvbWlzZT1kZSxMZS5hcHBlbmRDaGlsZChLZSksd2AKICAgICAgPGRlZXMtZGVtb3dyYXBwZXI+CiAgICAgICAgJHtMZX0KICAgICAgPC9kZWVzLWRlbW93cmFwcGVyPgogICAgYH0sImRlbW8iKTtzdGF0aWMgZGVtb0dyb3Vwcz1bIldvcmtzcGFjZSJdOyNlPW9hKHRoaXMsbyxudWxsKTtnZXQgZXhlY3V0aW9uRW52aXJvbm1lbnQoKXtyZXR1cm4gdGhpcy4jZX1zZXQgZXhlY3V0aW9uRW52aXJvbm1lbnQoY2Upe3RoaXMuI2U9Y2V9I3Q9KG9hKHRoaXMsbCksb2EodGhpcyxkLG51bGwpKTtnZXQgaW5pdGlhbGl6YXRpb25Qcm9taXNlKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGluaXRpYWxpemF0aW9uUHJvbWlzZShjZSl7dGhpcy4jdD1jZX0jYT0ob2EodGhpcyx1KSxvYSh0aGlzLGIsITApKTtnZXQgc2hvd0ZpbGVUcmVlKCl7cmV0dXJuIHRoaXMuI2F9c2V0IHNob3dGaWxlVHJlZShjZSl7dGhpcy4jYT1jZX0jcz0ob2EodGhpcyx2KSxvYSh0aGlzLG0sITApKTtnZXQgc2hvd1Rlcm1pbmFsKCl7cmV0dXJuIHRoaXMuI3N9c2V0IHNob3dUZXJtaW5hbChjZSl7dGhpcy4jcz1jZX0jaT0ob2EodGhpcyxmKSxvYSh0aGlzLE0sMjUwKSk7Z2V0IGZpbGVUcmVlV2lkdGgoKXtyZXR1cm4gdGhpcy4jaX1zZXQgZmlsZVRyZWVXaWR0aChjZSl7dGhpcy4jaT1jZX0jcj0ob2EodGhpcyx6KSxvYSh0aGlzLEMsMjAwKSk7Z2V0IHRlcm1pbmFsSGVpZ2h0KCl7cmV0dXJuIHRoaXMuI3J9c2V0IHRlcm1pbmFsSGVpZ2h0KGNlKXt0aGlzLiNyPWNlfSNvPShvYSh0aGlzLF8pLG9hKHRoaXMsJCxbXSkpO2dldCBvcGVuRmlsZXMoKXtyZXR1cm4gdGhpcy4jb31zZXQgb3BlbkZpbGVzKGNlKXt0aGlzLiNvPWNlfSNuPShvYSh0aGlzLEUpLG9hKHRoaXMsaywiIikpO2dldCBhY3RpdmVGaWxlUGF0aCgpe3JldHVybiB0aGlzLiNufXNldCBhY3RpdmVGaWxlUGF0aChjZSl7dGhpcy4jbj1jZX0jbD0ob2EodGhpcyxTKSxvYSh0aGlzLFAsITEpKTtnZXQgaXNUZXJtaW5hbENvbGxhcHNlZCgpe3JldHVybiB0aGlzLiNsfXNldCBpc1Rlcm1pbmFsQ29sbGFwc2VkKGNlKXt0aGlzLiNsPWNlfSNjPShvYSh0aGlzLFIpLG9hKHRoaXMsViwhMSkpO2dldCBpc0ZpbGVUcmVlQ29sbGFwc2VkKCl7cmV0dXJuIHRoaXMuI2N9c2V0IGlzRmlsZVRyZWVDb2xsYXBzZWQoY2Upe3RoaXMuI2M9Y2V9I2Q9KG9hKHRoaXMsVyksb2EodGhpcyxCLCEwKSk7Z2V0IGlzSW5pdGlhbGl6aW5nKCl7cmV0dXJuIHRoaXMuI2R9c2V0IGlzSW5pdGlhbGl6aW5nKGNlKXt0aGlzLiNkPWNlfSN1PShvYSh0aGlzLFUpLG9hKHRoaXMsRiwidGVybWluYWwiKSk7Z2V0IGFjdGl2ZUJvdHRvbVBhbmVsKCl7cmV0dXJuIHRoaXMuI3V9c2V0IGFjdGl2ZUJvdHRvbVBhbmVsKGNlKXt0aGlzLiN1PWNlfSNwPShvYSh0aGlzLGopLG9hKHRoaXMsbGUsW10pKTtnZXQgZGlhZ25vc3RpY01hcmtlcnMoKXtyZXR1cm4gdGhpcy4jcH1zZXQgZGlhZ25vc3RpY01hcmtlcnMoY2Upe3RoaXMuI3A9Y2V9ZWRpdG9yRWxlbWVudD0ob2EodGhpcyxRKSxudWxsKTtpbml0aWFsaXphdGlvblN0YXJ0ZWQ9ITE7aW50ZWxsaVNlbnNlTWFuYWdlcj1udWxsO2ludGVsbGlTZW5zZUluaXRpYWxpemVkPSExO25vZGVNb2R1bGVzV2F0Y2hlcj1udWxsO25vZGVNb2R1bGVzRGVib3VuY2VUaW1lb3V0PW51bGw7aW50ZWxsaVNlbnNlRGVib3VuY2VUaW1lb3V0PW51bGw7b3BlbkZpbGVXYXRjaGVycz1uZXcgTWFwO2ZpbGVDaGFuZ2VEZWJvdW5jZT1uZXcgTWFwO2FjdGlvbmJhckVsZW1lbnQ9bnVsbDsjaD1vYSh0aGlzLHRlLCExKTtnZXQgYXV0b1NhdmUoKXtyZXR1cm4gdGhpcy4jaH1zZXQgYXV0b1NhdmUoY2Upe3RoaXMuI2g9Y2V9YXV0b1NhdmVJbnRlcnZhbD0ob2EodGhpcyxlZSksbnVsbCk7I2Y9b2EodGhpcyxYLCIiKTtnZXQgaW5pdENvbW1hbmQoKXtyZXR1cm4gdGhpcy4jZn1zZXQgaW5pdENvbW1hbmQoY2Upe3RoaXMuI2Y9Y2V9I209KG9hKHRoaXMsWiksb2EodGhpcyxxLFtdKSk7Z2V0IGluaXRPdXRwdXQoKXtyZXR1cm4gdGhpcy4jbX1zZXQgaW5pdE91dHB1dChjZSl7dGhpcy4jbT1jZX0jZz0ob2EodGhpcyxBKSxvYSh0aGlzLG9lLDI1MCkpO2dldCBjdXJyZW50RmlsZVRyZWVXaWR0aCgpe3JldHVybiB0aGlzLiNnfXNldCBjdXJyZW50RmlsZVRyZWVXaWR0aChjZSl7dGhpcy4jZz1jZX0jYj0ob2EodGhpcyxhZSksb2EodGhpcyxSZSwyMDApKTtnZXQgY3VycmVudFRlcm1pbmFsSGVpZ2h0KCl7cmV0dXJuIHRoaXMuI2J9c2V0IGN1cnJlbnRUZXJtaW5hbEhlaWdodChjZSl7dGhpcy4jYj1jZX0jdj0ob2EodGhpcyxCZSksb2EodGhpcyxEZSwhMSkpO2dldCBpc0RyYWdnaW5nRmlsZVRyZWUoKXtyZXR1cm4gdGhpcy4jdn1zZXQgaXNEcmFnZ2luZ0ZpbGVUcmVlKGNlKXt0aGlzLiN2PWNlfSN4PShvYSh0aGlzLF9lKSxvYSh0aGlzLHZlLCExKSk7Z2V0IGlzRHJhZ2dpbmdUZXJtaW5hbCgpe3JldHVybiB0aGlzLiN4fXNldCBpc0RyYWdnaW5nVGVybWluYWwoY2Upe3RoaXMuI3g9Y2V9I3k9KG9hKHRoaXMsYmUpLG9hKHRoaXMsamUsITEpKTtnZXQgc2hvd0RpZmZWaWV3KCl7cmV0dXJuIHRoaXMuI3l9c2V0IHNob3dEaWZmVmlldyhjZSl7dGhpcy4jeT1jZX0jdz0ob2EodGhpcyxXZSksb2EodGhpcyxNZSxudWxsKSk7Z2V0IGRpZmZWaWV3Q29uZmlnKCl7cmV0dXJuIHRoaXMuI3d9c2V0IGRpZmZWaWV3Q29uZmlnKGNlKXt0aGlzLiN3PWNlfWtleWRvd25IYW5kbGVyPShvYSh0aGlzLGdlKSxjZT0+eyhjZS5tZXRhS2V5fHxjZS5jdHJsS2V5KSYmY2Uua2V5PT09InMiJiYhY2Uuc2hpZnRLZXkmJihjZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuc2F2ZUFjdGl2ZUZpbGUoKSksKGNlLm1ldGFLZXl8fGNlLmN0cmxLZXkpJiZjZS5zaGlmdEtleSYmY2Uua2V5LnRvTG93ZXJDYXNlKCk9PT0icyImJihjZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuc2F2ZUFsbEZpbGVzKCkpfSk7aGFuZGxlRmlsZVRyZWVNb3VzZURvd249aShjZT0+e2NlLnByZXZlbnREZWZhdWx0KCksdGhpcy5pc0RyYWdnaW5nRmlsZVRyZWU9ITAsZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLmhhbmRsZUZpbGVUcmVlTW91c2VNb3ZlKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLmhhbmRsZUZpbGVUcmVlTW91c2VVcCl9LCJoYW5kbGVGaWxlVHJlZU1vdXNlRG93biIpO2hhbmRsZUZpbGVUcmVlTW91c2VNb3ZlPWkoY2U9PntpZighdGhpcy5pc0RyYWdnaW5nRmlsZVRyZWUpcmV0dXJuO2xldCBkZT10aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLExlPWNlLmNsaWVudFgtZGUubGVmdCxLZT0xNTAsWWU9ZGUud2lkdGgqLjUsb3Q9TWF0aC5tYXgoS2UsTWF0aC5taW4oWWUsTGUpKTt0aGlzLmN1cnJlbnRGaWxlVHJlZVdpZHRoPW90fSwiaGFuZGxlRmlsZVRyZWVNb3VzZU1vdmUiKTtoYW5kbGVGaWxlVHJlZU1vdXNlVXA9aSgoKT0+e3RoaXMuaXNEcmFnZ2luZ0ZpbGVUcmVlPSExLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5oYW5kbGVGaWxlVHJlZU1vdXNlTW92ZSksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdGhpcy5oYW5kbGVGaWxlVHJlZU1vdXNlVXApLHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgicmVzaXplIikpfSwiaGFuZGxlRmlsZVRyZWVNb3VzZVVwIik7aGFuZGxlVGVybWluYWxNb3VzZURvd249aShjZT0+e2NlLnByZXZlbnREZWZhdWx0KCksdGhpcy5pc0RyYWdnaW5nVGVybWluYWw9ITAsZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLmhhbmRsZVRlcm1pbmFsTW91c2VNb3ZlKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLmhhbmRsZVRlcm1pbmFsTW91c2VVcCl9LCJoYW5kbGVUZXJtaW5hbE1vdXNlRG93biIpO2hhbmRsZVRlcm1pbmFsTW91c2VNb3ZlPWkoY2U9PntpZighdGhpcy5pc0RyYWdnaW5nVGVybWluYWwpcmV0dXJuO2xldCBkZT10aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLExlPWNlLmNsaWVudFktZGUudG9wLEtlPWRlLmhlaWdodC1MZSxZZT0xMDAsb3Q9ZGUuaGVpZ2h0Ki43LFV0PU1hdGgubWF4KFllLE1hdGgubWluKG90LEtlKSk7dGhpcy5jdXJyZW50VGVybWluYWxIZWlnaHQ9VXR9LCJoYW5kbGVUZXJtaW5hbE1vdXNlTW92ZSIpO2hhbmRsZVRlcm1pbmFsTW91c2VVcD1pKCgpPT57dGhpcy5pc0RyYWdnaW5nVGVybWluYWw9ITEsZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLmhhbmRsZVRlcm1pbmFsTW91c2VNb3ZlKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLmhhbmRsZVRlcm1pbmFsTW91c2VVcCksd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCJyZXNpemUiKSl9LCJoYW5kbGVUZXJtaW5hbE1vdXNlVXAiKTtzdGF0aWMgc3R5bGVzPVtIZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk2JSkiLCJoc2woMCAwJSA3JSkiKX07CiAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBzYW5zLXNlcmlmOwogICAgICB9CgogICAgICAud29ya3NwYWNlLW91dGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAud29ya3NwYWNlLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGZsZXg6IDE7CiAgICAgICAgbWluLWhlaWdodDogMDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgLmVkaXRvci1hcmVhIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZmxleDogMTsKICAgICAgICBtaW4td2lkdGg6IDA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLmZpbGV0cmVlLXBhbmVsIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQoKICAgICAgLmZpbGV0cmVlLXBhbmVsLmNvbGxhcHNlZCB7CiAgICAgICAgd2lkdGg6IDAgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgLmVkaXRvci1wYW5lbCB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxMDAlKSIsImhzbCgwIDAlIDklKSIpfTsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG1pbi13aWR0aDogMjAwcHg7CiAgICAgIH0KCiAgICAgIC50ZXJtaW5hbC1wYW5lbCB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDAgMCUgODUlKSIsImhzbCgwIDAlIDE1JSkiKX07CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQoKICAgICAgLnRlcm1pbmFsLXBhbmVsLmNvbGxhcHNlZCB7CiAgICAgICAgaGVpZ2h0OiAzMnB4ICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIC5wYW5lbC1oZWFkZXIgewogICAgICAgIGhlaWdodDogMzJweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIHBhZGRpbmc6IDAgOHB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5NSUpIiwiaHNsKDAgMCUgOCUpIil9OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDAgMCUgODUlKSIsImhzbCgwIDAlIDE1JSkiKX07CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA0MCUpIiwiaHNsKDAgMCUgNjAlKSIpfTsKICAgICAgfQoKICAgICAgLnBhbmVsLWhlYWRlci10aXRsZSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4OwogICAgICB9CgogICAgICAucGFuZWwtaGVhZGVyLWFjdGlvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDRweDsKICAgICAgfQoKICAgICAgLnBhbmVsLWFjdGlvbiB7CiAgICAgICAgd2lkdGg6IDI0cHg7CiAgICAgICAgaGVpZ2h0OiAyNHB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNTAlKSIsImhzbCgwIDAlIDYwJSkiKX07CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5wYW5lbC1hY3Rpb246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4OCUpIiwiaHNsKDAgMCUgMTglKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDMwJSkiLCJoc2woMCAwJSA4MCUpIil9OwogICAgICB9CgogICAgICAudGFicy1iYXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7CiAgICAgICAgaGVpZ2h0OiAzNnB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5NiUpIiwiaHNsKDAgMCUgOCUpIil9OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDAgMCUgODUlKSIsImhzbCgwIDAlIDE1JSkiKX07CiAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKICAgICAgfQoKICAgICAgLnRhYiB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4OwogICAgICAgIHBhZGRpbmc6IDAgMTJweDsKICAgICAgICBtaW4td2lkdGg6IDEyMHB4OwogICAgICAgIG1heC13aWR0aDogMjAwcHg7CiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgwIDAlIDg4JSkiLCJoc2woMCAwJSAxMiUpIil9OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA1MCUpIiwiaHNsKDAgMCUgNjAlKSIpfTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTQlKSIsImhzbCgwIDAlIDEwJSkiKX07CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC50YWI6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5MiUpIiwiaHNsKDAgMCUgMTIlKSIpfTsKICAgICAgfQoKICAgICAgLnRhYi5hY3RpdmUgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxMDAlKSIsImhzbCgwIDAlIDklKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDIwJSkiLCJoc2woMCAwJSA5MCUpIil9OwogICAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDIxMCAxMDAlIDUwJSkiLCJoc2woMjEwIDEwMCUgNjAlKSIpfTsKICAgICAgfQoKICAgICAgLnRhYi1uYW1lIHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgLnRhYi1jbG9zZSB7CiAgICAgICAgd2lkdGg6IDE2cHg7CiAgICAgICAgaGVpZ2h0OiAxNnB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgfQoKICAgICAgLnRhYjpob3ZlciAudGFiLWNsb3NlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CgogICAgICAudGFiLWNsb3NlOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgODUlKSIsImhzbCgwIDAlIDI1JSkiKX07CiAgICAgIH0KCiAgICAgIC50YWItbW9kaWZpZWQgewogICAgICAgIHdpZHRoOiA4cHg7CiAgICAgICAgaGVpZ2h0OiA4cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA1MCUpIiwiaHNsKDAgMCUgNjAlKSIpfTsKICAgICAgfQoKICAgICAgLnRhYnMtY29udGFpbmVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXg6IDE7CiAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKICAgICAgfQoKICAgICAgLmVkaXRvci1tZW51LWJ1dHRvbiB7CiAgICAgICAgcGFkZGluZzogNnB4IDhweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDRweDsKICAgICAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIG9wYWNpdHk6IDAuNjsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzLCBiYWNrZ3JvdW5kIDAuMTVzOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgfQoKICAgICAgLmVkaXRvci1tZW51LWJ1dHRvbjpob3ZlciB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMCUgLyAwLjA4KSIsImhzbCgwIDAlIDEwMCUgLyAwLjEpIil9OwogICAgICB9CgogICAgICAuZWRpdG9yLWNvbnRlbnQgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAudGVybWluYWwtY29udGVudCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMzJweDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgfQoKICAgICAgLnByb2JsZW1zLWNvbnRlbnQgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDMycHg7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTAwJSkiLCJoc2woMCAwJSA5JSkiKX07CiAgICAgIH0KCiAgICAgIC5wYW5lbC10YWJzIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAwOwogICAgICB9CgogICAgICAucGFuZWwtdGFiIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgcGFkZGluZzogMCAxMnB4OwogICAgICAgIGhlaWdodDogMzJweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA1MCUpIiwiaHNsKDAgMCUgNTUlKSIpfTsKICAgICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5wYW5lbC10YWI6aG92ZXIgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMzAlKSIsImhzbCgwIDAlIDc1JSkiKX07CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDkwJSkiLCJoc2woMCAwJSAxMiUpIil9OwogICAgICB9CgogICAgICAucGFuZWwtdGFiLmFjdGl2ZSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAyMCUpIiwiaHNsKDAgMCUgOTAlKSIpfTsKICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxMCAxMDAlIDUwJSkiLCJoc2woMjEwIDEwMCUgNjAlKSIpfTsKICAgICAgfQoKICAgICAgLnBhbmVsLXRhYi1iYWRnZSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBtaW4td2lkdGg6IDE4cHg7CiAgICAgICAgaGVpZ2h0OiAxOHB4OwogICAgICAgIHBhZGRpbmc6IDAgNXB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDlweDsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgNzAlIDUwJSkiLCJoc2woMCA3MCUgNDUlKSIpfTsKICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgIH0KCiAgICAgIC5wYW5lbC10YWItYmFkZ2Uud2FybmluZyB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCg0MCA3MCUgNTAlKSIsImhzbCg0MCA3MCUgNDUlKSIpfTsKICAgICAgfQoKICAgICAgLnBhbmVsLXRhYi1iYWRnZS5ub25lIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CgogICAgICAucHJvYmxlbXMtbGlzdCB7CiAgICAgICAgcGFkZGluZzogNHB4IDA7CiAgICAgIH0KCiAgICAgIC5wcm9ibGVtLWl0ZW0gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgcGFkZGluZzogNnB4IDEycHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBsaW5lLWhlaWdodDogMS40OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMzAlKSIsImhzbCgwIDAlIDgwJSkiKX07CiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjFzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5wcm9ibGVtLWl0ZW06aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5NSUpIiwiaHNsKDAgMCUgMTUlKSIpfTsKICAgICAgfQoKICAgICAgLnByb2JsZW0taWNvbiB7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgbWFyZ2luLXRvcDogMnB4OwogICAgICB9CgogICAgICAucHJvYmxlbS1pY29uLmVycm9yIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDcwJSA1MCUpIiwiaHNsKDAgNzAlIDYwJSkiKX07CiAgICAgIH0KCiAgICAgIC5wcm9ibGVtLWljb24ud2FybmluZyB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woNDAgNzAlIDUwJSkiLCJoc2woNDAgNzAlIDYwJSkiKX07CiAgICAgIH0KCiAgICAgIC5wcm9ibGVtLWRldGFpbHMgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgbWluLXdpZHRoOiAwOwogICAgICB9CgogICAgICAucHJvYmxlbS1tZXNzYWdlIHsKICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkOwogICAgICB9CgogICAgICAucHJvYmxlbS1sb2NhdGlvbiB7CiAgICAgICAgbWFyZ2luLXRvcDogMnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDUwJSkiLCJoc2woMCAwJSA1NSUpIil9OwogICAgICB9CgogICAgICAucHJvYmxlbXMtZW1wdHkgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDU1JSkiLCJoc2woMCAwJSA1MCUpIil9OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBnYXA6IDhweDsKICAgICAgfQoKICAgICAgLmVtcHR5LXN0YXRlIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA1MCUpIiwiaHNsKDAgMCUgNTAlKSIpfTsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgIH0KCiAgICAgIC5lbXB0eS1zdGF0ZSBkZWVzLWljb24gewogICAgICAgIHdpZHRoOiA0OHB4OwogICAgICAgIGhlaWdodDogNDhweDsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMgc3BpbiB7CiAgICAgICAgZnJvbSB7IHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9CiAgICAgICAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9CiAgICAgIH0KCiAgICAgIC5pbml0aWFsaXppbmcgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDUwJSkiLCJoc2woMCAwJSA2MCUpIil9OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBnYXA6IDEycHg7CiAgICAgIH0KCiAgICAgIC5pbml0aWFsaXppbmcgZGVlcy1pY29uIHsKICAgICAgICBhbmltYXRpb246IHNwaW4gMXMgbGluZWFyIGluZmluaXRlOwogICAgICB9CgogICAgICAuaW5pdGlhbGl6aW5nIGRlZXMtd29ya3NwYWNlLXRlcm1pbmFsLXByZXZpZXcgewogICAgICAgIG1hcmdpbi10b3A6IDI0cHg7CiAgICAgICAgd2lkdGg6IDgwJTsKICAgICAgICBtYXgtd2lkdGg6IDYwMHB4OwogICAgICAgIGhlaWdodDogMjAwcHg7CiAgICAgIH0KCiAgICAgIGRlZXMtd29ya3NwYWNlLWZpbGV0cmVlIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICB9CgogICAgICBkZWVzLXdvcmtzcGFjZS1tb25hY28gewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgIH0KCiAgICAgIGRlZXMtd29ya3NwYWNlLXRlcm1pbmFsIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICB9CgogICAgICAvKiBSZXNpemUgaGFuZGxlcyAqLwogICAgICAucmVzaXplLWhhbmRsZS12ZXJ0aWNhbCB7CiAgICAgICAgd2lkdGg6IDZweDsKICAgICAgICBjdXJzb3I6IGNvbC1yZXNpemU7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cyBlYXNlOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICB6LWluZGV4OiAxMDsKICAgICAgfQoKICAgICAgLnJlc2l6ZS1oYW5kbGUtdmVydGljYWw6aG92ZXIsCiAgICAgIC5yZXNpemUtaGFuZGxlLXZlcnRpY2FsLmRyYWdnaW5nIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiIzNiODJmNiIsIiM1OGE2ZmYiKX07CiAgICAgIH0KCiAgICAgIC5yZXNpemUtaGFuZGxlLXZlcnRpY2FsOjphZnRlciB7CiAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogNTAlOwogICAgICAgIGxlZnQ6IDUwJTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgICAgICB3aWR0aDogMnB4OwogICAgICAgIGhlaWdodDogMzJweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiIzljYTNhZiIsIiM2ZTc2ODEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogMXB4OwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cyBlYXNlOwogICAgICB9CgogICAgICAucmVzaXplLWhhbmRsZS12ZXJ0aWNhbDpob3Zlcjo6YWZ0ZXIsCiAgICAgIC5yZXNpemUtaGFuZGxlLXZlcnRpY2FsLmRyYWdnaW5nOjphZnRlciB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiNmZmZmZmYiKX07CiAgICAgIH0KCiAgICAgIC5yZXNpemUtaGFuZGxlLWhvcml6b250YWwgewogICAgICAgIGhlaWdodDogNnB4OwogICAgICAgIGN1cnNvcjogcm93LXJlc2l6ZTsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzIGVhc2U7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIHotaW5kZXg6IDEwOwogICAgICB9CgogICAgICAucmVzaXplLWhhbmRsZS1ob3Jpem9udGFsOmhvdmVyLAogICAgICAucmVzaXplLWhhbmRsZS1ob3Jpem9udGFsLmRyYWdnaW5nIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiIzNiODJmNiIsIiM1OGE2ZmYiKX07CiAgICAgIH0KCiAgICAgIC5yZXNpemUtaGFuZGxlLWhvcml6b250YWw6OmFmdGVyIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiA1MCU7CiAgICAgICAgbGVmdDogNTAlOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgICAgIHdpZHRoOiAzMnB4OwogICAgICAgIGhlaWdodDogMnB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjOWNhM2FmIiwiIzZlNzY4MSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiAxcHg7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5yZXNpemUtaGFuZGxlLWhvcml6b250YWw6aG92ZXI6OmFmdGVyLAogICAgICAucmVzaXplLWhhbmRsZS1ob3Jpem9udGFsLmRyYWdnaW5nOjphZnRlciB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiNmZmZmZmYiKX07CiAgICAgIH0KCiAgICAgIC8qIFByZXZlbnQgdGV4dCBzZWxlY3Rpb24gd2hpbGUgZHJhZ2dpbmcgKi8KICAgICAgLndvcmtzcGFjZS1jb250YWluZXIuZHJhZ2dpbmcgewogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICB9CgogICAgICAud29ya3NwYWNlLWNvbnRhaW5lci5kcmFnZ2luZyAuZmlsZXRyZWUtcGFuZWwsCiAgICAgIC53b3Jrc3BhY2UtY29udGFpbmVyLmRyYWdnaW5nIC5lZGl0b3ItcGFuZWwsCiAgICAgIC53b3Jrc3BhY2UtY29udGFpbmVyLmRyYWdnaW5nIC50ZXJtaW5hbC1wYW5lbCB7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICBgXTtyZW5kZXIoKXtsZXQgY2U9WyJ3b3Jrc3BhY2UtY29udGFpbmVyIix0aGlzLmlzRHJhZ2dpbmdGaWxlVHJlZXx8dGhpcy5pc0RyYWdnaW5nVGVybWluYWw/ImRyYWdnaW5nIjoiIl0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiAiKTtyZXR1cm4gdGhpcy5pc0luaXRpYWxpemluZz93YAogICAgICAgIDxkaXYgY2xhc3M9ImluaXRpYWxpemluZyI+CiAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7Imx1Y2lkZTpsb2FkZXIyIn0gaWNvblNpemU9IjMyIj48L2RlZXMtaWNvbj4KICAgICAgICAgIDxzcGFuPkluaXRpYWxpemluZyB3b3Jrc3BhY2UuLi48L3NwYW4+CiAgICAgICAgICA8ZGVlcy13b3Jrc3BhY2UtdGVybWluYWwtcHJldmlldwogICAgICAgICAgICAuY29tbWFuZD0ke3RoaXMuaW5pdENvbW1hbmR8fCIifQogICAgICAgICAgICAubGluZXM9JHt0aGlzLmluaXRPdXRwdXR9CiAgICAgICAgICA+PC9kZWVzLXdvcmtzcGFjZS10ZXJtaW5hbC1wcmV2aWV3PgogICAgICAgIDwvZGl2PgogICAgICBgOndgCiAgICAgIDxkaXYgY2xhc3M9IndvcmtzcGFjZS1vdXRlciI+CiAgICAgICAgPGRpdiBjbGFzcz0iJHtjZX0iPgogICAgICAgICAgPCEtLSBGaWxldHJlZSBwYW5lbCAoZnVsbCBoZWlnaHQpIC0tPgogICAgICAgICAgJHt0aGlzLnNob3dGaWxlVHJlZT93YAogICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgY2xhc3M9ImZpbGV0cmVlLXBhbmVsICR7dGhpcy5pc0ZpbGVUcmVlQ29sbGFwc2VkPyJjb2xsYXBzZWQiOiIifSIKICAgICAgICAgICAgICBzdHlsZT0id2lkdGg6ICR7dGhpcy5pc0ZpbGVUcmVlQ29sbGFwc2VkPzA6dGhpcy5jdXJyZW50RmlsZVRyZWVXaWR0aH1weCIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxkZWVzLXdvcmtzcGFjZS1maWxldHJlZQogICAgICAgICAgICAgICAgLmV4ZWN1dGlvbkVudmlyb25tZW50PSR7dGhpcy5leGVjdXRpb25FbnZpcm9ubWVudH0KICAgICAgICAgICAgICAgIC5zZWxlY3RlZFBhdGg9JHt0aGlzLmFjdGl2ZUZpbGVQYXRofQogICAgICAgICAgICAgICAgQGZpbGUtc2VsZWN0PSR7dGhpcy5oYW5kbGVGaWxlU2VsZWN0fQogICAgICAgICAgICAgID48L2RlZXMtd29ya3NwYWNlLWZpbGV0cmVlPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgJHt0aGlzLmlzRmlsZVRyZWVDb2xsYXBzZWQ/IiI6d2AKICAgICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICBjbGFzcz0icmVzaXplLWhhbmRsZS12ZXJ0aWNhbCAke3RoaXMuaXNEcmFnZ2luZ0ZpbGVUcmVlPyJkcmFnZ2luZyI6IiJ9IgogICAgICAgICAgICAgICAgQG1vdXNlZG93bj0ke3RoaXMuaGFuZGxlRmlsZVRyZWVNb3VzZURvd259CiAgICAgICAgICAgICAgPjwvZGl2PgogICAgICAgICAgICBgfQogICAgICAgICAgYDoiIn0KCiAgICAgICAgICA8IS0tIEVkaXRvciArIFRlcm1pbmFsIGFyZWEgLS0+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJlZGl0b3ItYXJlYSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVkaXRvci1wYW5lbCI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFicy1iYXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFicy1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAke3RoaXMub3BlbkZpbGVzLm1hcChkZT0+d2AKICAgICAgICAgICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0idGFiICR7ZGUucGF0aD09PXRoaXMuYWN0aXZlRmlsZVBhdGg/ImFjdGl2ZSI6IiJ9IgogICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMuYWN0aXZhdGVGaWxlKGRlLnBhdGgpfQogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICR7ZGUubW9kaWZpZWQ/d2A8c3BhbiBjbGFzcz0idGFiLW1vZGlmaWVkIj48L3NwYW4+YDoiIn0KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0YWItbmFtZSI+JHtkZS5uYW1lfTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0YWItY2xvc2UiIEBjbGljaz0ke0xlPT50aGlzLmNsb3NlRmlsZShMZSxkZS5wYXRoKX0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHsibHVjaWRlOngifSBpY29uU2l6ZT0iMTIiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICBgKX0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWRpdG9yLW1lbnUtYnV0dG9uIiBAY2xpY2s9JHt0aGlzLnNob3dFZGl0b3JNZW51fSB0aXRsZT0iRWRpdG9yIG9wdGlvbnMiPgogICAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7Imx1Y2lkZTptb3JlVmVydGljYWwifSBpY29uU2l6ZT0iMTYiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWRpdG9yLWNvbnRlbnQiPgogICAgICAgICAgICAgICAgJHt0aGlzLnNob3dEaWZmVmlldyYmdGhpcy5kaWZmVmlld0NvbmZpZz93YAogICAgICAgICAgICAgICAgICA8ZGVlcy13b3Jrc3BhY2UtZGlmZi1lZGl0b3IKICAgICAgICAgICAgICAgICAgICAuZmlsZVBhdGg9JHt0aGlzLmRpZmZWaWV3Q29uZmlnLmZpbGVQYXRofQogICAgICAgICAgICAgICAgICAgIC5vcmlnaW5hbENvbnRlbnQ9JHt0aGlzLmRpZmZWaWV3Q29uZmlnLm9yaWdpbmFsQ29udGVudH0KICAgICAgICAgICAgICAgICAgICAubW9kaWZpZWRDb250ZW50PSR7dGhpcy5kaWZmVmlld0NvbmZpZy5tb2RpZmllZENvbnRlbnR9CiAgICAgICAgICAgICAgICAgICAgLmxhbmd1YWdlPSR7dGhpcy5kaWZmVmlld0NvbmZpZy5sYW5ndWFnZX0KICAgICAgICAgICAgICAgICAgICBAZGlmZi1yZXNvbHZlZD0ke3RoaXMuaGFuZGxlRGlmZlJlc29sdmVkfQogICAgICAgICAgICAgICAgICAgIEBkaWZmLWNsb3NlZD0keygpPT57dGhpcy5zaG93RGlmZlZpZXc9ITEsdGhpcy5kaWZmVmlld0NvbmZpZz1udWxsfX0KICAgICAgICAgICAgICAgICAgPjwvZGVlcy13b3Jrc3BhY2UtZGlmZi1lZGl0b3I+CiAgICAgICAgICAgICAgICBgOnRoaXMub3BlbkZpbGVzLmxlbmd0aD09PTA/d2AKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZW1wdHktc3RhdGUiPgogICAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHsibHVjaWRlOmZpbGVDb2RlIn0gaWNvblNpemU9IjQ4Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj5TZWxlY3QgYSBmaWxlIHRvIGVkaXQ8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgYDp3YAogICAgICAgICAgICAgICAgICA8ZGVlcy13b3Jrc3BhY2UtbW9uYWNvCiAgICAgICAgICAgICAgICAgICAgLmZpbGVQYXRoPSR7dGhpcy5hY3RpdmVGaWxlUGF0aH0KICAgICAgICAgICAgICAgICAgICAuY29udGVudD0ke3RoaXMuZ2V0QWN0aXZlRmlsZUNvbnRlbnQoKX0KICAgICAgICAgICAgICAgICAgICAubGFuZ3VhZ2U9JHt0aGlzLmdldExhbmd1YWdlRnJvbVBhdGgodGhpcy5hY3RpdmVGaWxlUGF0aCl9CiAgICAgICAgICAgICAgICAgICAgQGNvbnRlbnQtY2hhbmdlPSR7dGhpcy5oYW5kbGVDb250ZW50Q2hhbmdlfQogICAgICAgICAgICAgICAgICA+PC9kZWVzLXdvcmtzcGFjZS1tb25hY28+CiAgICAgICAgICAgICAgICBgfQogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkZWVzLWFjdGlvbmJhcj48L2RlZXMtYWN0aW9uYmFyPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDwhLS0gSG9yaXpvbnRhbCByZXNpemUgaGFuZGxlIGZvciB0ZXJtaW5hbCAtLT4KICAgICAgICAgICAgJHt0aGlzLnNob3dUZXJtaW5hbCYmIXRoaXMuaXNUZXJtaW5hbENvbGxhcHNlZD93YAogICAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSJyZXNpemUtaGFuZGxlLWhvcml6b250YWwgJHt0aGlzLmlzRHJhZ2dpbmdUZXJtaW5hbD8iZHJhZ2dpbmciOiIifSIKICAgICAgICAgICAgICAgIEBtb3VzZWRvd249JHt0aGlzLmhhbmRsZVRlcm1pbmFsTW91c2VEb3dufQogICAgICAgICAgICAgID48L2Rpdj4KICAgICAgICAgICAgYDoiIn0KCiAgICAgICAgICAgIDwhLS0gVGVybWluYWwgcGFuZWwgLS0+CiAgICAgICAgICAgICR7dGhpcy5zaG93VGVybWluYWw/d2AKICAgICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICBjbGFzcz0idGVybWluYWwtcGFuZWwgJHt0aGlzLmlzVGVybWluYWxDb2xsYXBzZWQ/ImNvbGxhcHNlZCI6IiJ9IgogICAgICAgICAgICAgICAgc3R5bGU9ImhlaWdodDogJHt0aGlzLmlzVGVybWluYWxDb2xsYXBzZWQ/MzI6dGhpcy5jdXJyZW50VGVybWluYWxIZWlnaHR9cHgiCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFuZWwtaGVhZGVyIj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFuZWwtdGFicyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgICAgY2xhc3M9InBhbmVsLXRhYiAke3RoaXMuYWN0aXZlQm90dG9tUGFuZWw9PT0idGVybWluYWwiPyJhY3RpdmUiOiIifSIKICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz0keygpPT50aGlzLmFjdGl2ZUJvdHRvbVBhbmVsPSJ0ZXJtaW5hbCJ9CiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6dGVybWluYWwifSBpY29uU2l6ZT0iMTQiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgICAgICAgVGVybWluYWwKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0icGFuZWwtdGFiICR7dGhpcy5hY3RpdmVCb3R0b21QYW5lbD09PSJwcm9ibGVtcyI/ImFjdGl2ZSI6IiJ9IgogICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMuYWN0aXZlQm90dG9tUGFuZWw9InByb2JsZW1zIn0KICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7Imx1Y2lkZTpjaXJjbGVBbGVydCJ9IGljb25TaXplPSIxNCI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICAgICAgICBQcm9ibGVtcwogICAgICAgICAgICAgICAgICAgICAgJHt0aGlzLmRpYWdub3N0aWNNYXJrZXJzLmxlbmd0aD4wP3dgCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwYW5lbC10YWItYmFkZ2UgJHt0aGlzLmdldEVycm9yQ291bnQoKT09PTA/Indhcm5pbmciOiIifSI+JHt0aGlzLmRpYWdub3N0aWNNYXJrZXJzLmxlbmd0aH08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICBgOiIifQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFuZWwtaGVhZGVyLWFjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhbmVsLWFjdGlvbiIgQGNsaWNrPSR7dGhpcy50b2dnbGVUZXJtaW5hbH0+CiAgICAgICAgICAgICAgICAgICAgICA8ZGVlcy1pY29uCiAgICAgICAgICAgICAgICAgICAgICAgIC5pY29uPSR7dGhpcy5pc1Rlcm1pbmFsQ29sbGFwc2VkPyJsdWNpZGU6Y2hldnJvblVwIjoibHVjaWRlOmNoZXZyb25Eb3duIn0KICAgICAgICAgICAgICAgICAgICAgICAgaWNvblNpemU9IjE0IgogICAgICAgICAgICAgICAgICAgICAgPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVybWluYWwtY29udGVudCIgc3R5bGU9ImRpc3BsYXk6ICR7dGhpcy5hY3RpdmVCb3R0b21QYW5lbD09PSJ0ZXJtaW5hbCI/ImJsb2NrIjoibm9uZSJ9Ij4KICAgICAgICAgICAgICAgICAgPGRlZXMtd29ya3NwYWNlLXRlcm1pbmFsCiAgICAgICAgICAgICAgICAgICAgLmV4ZWN1dGlvbkVudmlyb25tZW50PSR7dGhpcy5leGVjdXRpb25FbnZpcm9ubWVudH0KICAgICAgICAgICAgICAgICAgICAuc2V0dXBDb21tYW5kPSR7IiJ9CiAgICAgICAgICAgICAgICAgID48L2RlZXMtd29ya3NwYWNlLXRlcm1pbmFsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9ibGVtcy1jb250ZW50IiBzdHlsZT0iZGlzcGxheTogJHt0aGlzLmFjdGl2ZUJvdHRvbVBhbmVsPT09InByb2JsZW1zIj8iYmxvY2siOiJub25lIn0iPgogICAgICAgICAgICAgICAgICAke3RoaXMucmVuZGVyUHJvYmxlbXNQYW5lbCgpfQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPCEtLSBCb3R0b20gQmFyIChmdWxsIHdpZHRoKSAtLT4KICAgICAgICA8ZGVlcy13b3Jrc3BhY2UtYm90dG9tYmFyCiAgICAgICAgICAuZXhlY3V0aW9uRW52aXJvbm1lbnQ9JHt0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50fQogICAgICAgICAgQHJ1bi1wcm9jZXNzPSR7dGhpcy5oYW5kbGVSdW5Qcm9jZXNzfQogICAgICAgID48L2RlZXMtd29ya3NwYWNlLWJvdHRvbWJhcj4KICAgICAgPC9kaXY+CiAgICBgfWFzeW5jIGNvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLmtleWRvd25IYW5kbGVyKX1hc3luYyBkaXNjb25uZWN0ZWRDYWxsYmFjaygpe2F3YWl0IHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5rZXlkb3duSGFuZGxlciksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLmhhbmRsZUZpbGVUcmVlTW91c2VNb3ZlKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLmhhbmRsZUZpbGVUcmVlTW91c2VVcCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLmhhbmRsZVRlcm1pbmFsTW91c2VNb3ZlKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLmhhbmRsZVRlcm1pbmFsTW91c2VVcCksdGhpcy5hdXRvU2F2ZUludGVydmFsJiYoY2xlYXJJbnRlcnZhbCh0aGlzLmF1dG9TYXZlSW50ZXJ2YWwpLHRoaXMuYXV0b1NhdmVJbnRlcnZhbD1udWxsKSx0aGlzLnN0b3BOb2RlTW9kdWxlc1dhdGNoZXIoKSx0aGlzLnN0b3BBbGxGaWxlV2F0Y2hlcnMoKX1hc3luYyBmaXJzdFVwZGF0ZWQoKXt0aGlzLmN1cnJlbnRGaWxlVHJlZVdpZHRoPXRoaXMuZmlsZVRyZWVXaWR0aCx0aGlzLmN1cnJlbnRUZXJtaW5hbEhlaWdodD10aGlzLnRlcm1pbmFsSGVpZ2h0LHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQmJmF3YWl0IHRoaXMuaW5pdGlhbGl6ZVdvcmtzcGFjZSgpfWFzeW5jIHVwZGF0ZWQoY2Upe2NlLmhhcygiZXhlY3V0aW9uRW52aXJvbm1lbnQiKSYmdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudCYmYXdhaXQgdGhpcy5pbml0aWFsaXplV29ya3NwYWNlKCksdGhpcy5hY3Rpb25iYXJFbGVtZW50fHwodGhpcy5hY3Rpb25iYXJFbGVtZW50PXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLmVkaXRvci1wYW5lbCBkZWVzLWFjdGlvbmJhciIpKX1hc3luYyBpbml0aWFsaXplV29ya3NwYWNlKCl7aWYodGhpcy5leGVjdXRpb25FbnZpcm9ubWVudCYmIXRoaXMuaW5pdGlhbGl6YXRpb25TdGFydGVkKXt0aGlzLmluaXRpYWxpemF0aW9uU3RhcnRlZD0hMCx0aGlzLmlzSW5pdGlhbGl6aW5nPSEwO3RyeXt0aGlzLmluaXRpYWxpemF0aW9uUHJvbWlzZT9hd2FpdCB0aGlzLmluaXRpYWxpemF0aW9uUHJvbWlzZTp0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LnJlYWR5fHxhd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LmluaXQoKSxhd2FpdCB0aGlzLmV4ZWN1dGVPbkluaXRDb21tYW5kKCl9Y2F0Y2goY2Upe2NvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBpbml0aWFsaXplIHdvcmtzcGFjZToiLGNlKSx0aGlzLmluaXRpYWxpemF0aW9uU3RhcnRlZD0hMX1maW5hbGx5e3RoaXMuaXNJbml0aWFsaXppbmc9ITF9fX1hc3luYyBleGVjdXRlT25Jbml0Q29tbWFuZCgpe2lmKHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQpdHJ5e2lmKGF3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQuZXhpc3RzKCIvbnBtZXh0cmEuanNvbiIpKXtsZXQgY2U9YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5yZWFkRmlsZSgiL25wbWV4dHJhLmpzb24iKSxMZT1KU09OLnBhcnNlKGNlKT8uZGVlc0VkaXRvcldvcmtzcGFjZT8ub25Jbml0O2lmKExlJiZ0eXBlb2YgTGU9PSJzdHJpbmciKXtjb25zb2xlLmxvZygiRXhlY3V0aW5nIG9uSW5pdCBjb21tYW5kOiIsTGUpLHRoaXMuaW5pdENvbW1hbmQ9TGUsdGhpcy5pbml0T3V0cHV0PVtdO2xldFtLZSwuLi5ZZV09TGUuc3BsaXQoIiAiKSxvdD1hd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LnNwYXduKEtlLFllKTtvdC5vdXRwdXQucGlwZVRvKG5ldyBXcml0YWJsZVN0cmVhbSh7d3JpdGU6aShadD0+e2xldCBqYT1adC5zcGxpdChgCmApO2ZvcihsZXQgZXQgb2YgamEpZXQmJih0aGlzLmluaXRPdXRwdXQ9Wy4uLnRoaXMuaW5pdE91dHB1dCxldF0pfSwid3JpdGUiKX0pKTtsZXQgVXQ9YXdhaXQgb3QuZXhpdDtjb25zb2xlLmxvZygib25Jbml0IGNvbW1hbmQgY29tcGxldGVkIHdpdGggZXhpdCBjb2RlOiIsVXQpLHRoaXMuaW5pdE91dHB1dD1bLi4udGhpcy5pbml0T3V0cHV0LCIiLGBDb21tYW5kIGNvbXBsZXRlZCB3aXRoIGV4aXQgY29kZTogJHtVdH1gXX19fWNhdGNoKGNlKXtjb25zb2xlLndhcm4oIkZhaWxlZCB0byBleGVjdXRlIG9uSW5pdCBjb21tYW5kOiIsY2UpfX1hc3luYyBpbml0aWFsaXplSW50ZWxsaVNlbnNlKCl7aWYoIXRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnR8fHRoaXMuaW50ZWxsaVNlbnNlSW5pdGlhbGl6ZWQpcmV0dXJuO2xldCBjZT13aW5kb3cubW9uYWNvO2lmKGNlfHwoYXdhaXQgbmV3IFByb21pc2UoZGU9PnNldFRpbWVvdXQoZGUsMTAwKSksY2U9d2luZG93Lm1vbmFjbyksIWNlKXtjb25zb2xlLndhcm4oIk1vbmFjbyBub3QgeWV0IGxvYWRlZCwgSW50ZWxsaVNlbnNlIHdpbGwgYmUgaW5pdGlhbGl6ZWQgbGF0ZXIiKTtyZXR1cm59dGhpcy5pbnRlbGxpU2Vuc2VJbml0aWFsaXplZD0hMCx0aGlzLmludGVsbGlTZW5zZU1hbmFnZXI9bmV3IGxRLGF3YWl0IHRoaXMuaW50ZWxsaVNlbnNlTWFuYWdlci5pbml0KGNlLHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQpLHRoaXMuc2V0dXBNYXJrZXJMaXN0ZW5lcigpLHRoaXMuc3RhcnROb2RlTW9kdWxlc1dhdGNoZXIoKSxhd2FpdCB0aGlzLmludGVsbGlTZW5zZU1hbmFnZXIuc2NhbkFuZExvYWROZXdQYWNrYWdlVHlwZXMoKX1zdGFydE5vZGVNb2R1bGVzV2F0Y2hlcigpe2lmKCEoIXRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnR8fHRoaXMubm9kZU1vZHVsZXNXYXRjaGVyKSl0cnl7dGhpcy5ub2RlTW9kdWxlc1dhdGNoZXI9dGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC53YXRjaCgiL25vZGVfbW9kdWxlcyIsKGNlLGRlKT0+e3RoaXMubm9kZU1vZHVsZXNEZWJvdW5jZVRpbWVvdXQmJmNsZWFyVGltZW91dCh0aGlzLm5vZGVNb2R1bGVzRGVib3VuY2VUaW1lb3V0KSx0aGlzLm5vZGVNb2R1bGVzRGVib3VuY2VUaW1lb3V0PXNldFRpbWVvdXQoYXN5bmMoKT0+e3RoaXMuaW50ZWxsaVNlbnNlTWFuYWdlciYmYXdhaXQgdGhpcy5pbnRlbGxpU2Vuc2VNYW5hZ2VyLnNjYW5BbmRMb2FkTmV3UGFja2FnZVR5cGVzKCl9LDJlMyl9LHtyZWN1cnNpdmU6ITB9KX1jYXRjaChjZSl7Y29uc29sZS53YXJuKCJDb3VsZCBub3Qgd2F0Y2ggbm9kZV9tb2R1bGVzOiIsY2UpfX1zdG9wTm9kZU1vZHVsZXNXYXRjaGVyKCl7dGhpcy5ub2RlTW9kdWxlc1dhdGNoZXImJih0aGlzLm5vZGVNb2R1bGVzV2F0Y2hlci5zdG9wKCksdGhpcy5ub2RlTW9kdWxlc1dhdGNoZXI9bnVsbCksdGhpcy5ub2RlTW9kdWxlc0RlYm91bmNlVGltZW91dCYmKGNsZWFyVGltZW91dCh0aGlzLm5vZGVNb2R1bGVzRGVib3VuY2VUaW1lb3V0KSx0aGlzLm5vZGVNb2R1bGVzRGVib3VuY2VUaW1lb3V0PW51bGwpfXN0YXJ0V2F0Y2hpbmdGaWxlKGNlKXtpZighKCF0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50fHx0aGlzLm9wZW5GaWxlV2F0Y2hlcnMuaGFzKGNlKSkpdHJ5e2xldCBkZT10aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LndhdGNoKGNlLChMZSxLZSk9PntsZXQgWWU9dGhpcy5maWxlQ2hhbmdlRGVib3VuY2UuZ2V0KGNlKTtZZSYmY2xlYXJUaW1lb3V0KFllKTtsZXQgb3Q9c2V0VGltZW91dCgoKT0+e3RoaXMuaGFuZGxlRXh0ZXJuYWxGaWxlQ2hhbmdlKGNlKSx0aGlzLmZpbGVDaGFuZ2VEZWJvdW5jZS5kZWxldGUoY2UpfSwzMDApO3RoaXMuZmlsZUNoYW5nZURlYm91bmNlLnNldChjZSxvdCl9KTt0aGlzLm9wZW5GaWxlV2F0Y2hlcnMuc2V0KGNlLGRlKX1jYXRjaChkZSl7Y29uc29sZS53YXJuKGBDb3VsZCBub3Qgd2F0Y2ggZmlsZSAke2NlfTpgLGRlKX19c3RvcFdhdGNoaW5nRmlsZShjZSl7bGV0IGRlPXRoaXMub3BlbkZpbGVXYXRjaGVycy5nZXQoY2UpO2RlJiYoZGUuc3RvcCgpLHRoaXMub3BlbkZpbGVXYXRjaGVycy5kZWxldGUoY2UpKTtsZXQgTGU9dGhpcy5maWxlQ2hhbmdlRGVib3VuY2UuZ2V0KGNlKTtMZSYmKGNsZWFyVGltZW91dChMZSksdGhpcy5maWxlQ2hhbmdlRGVib3VuY2UuZGVsZXRlKGNlKSl9c3RvcEFsbEZpbGVXYXRjaGVycygpe2ZvcihsZXQgY2Ugb2YgdGhpcy5vcGVuRmlsZVdhdGNoZXJzLnZhbHVlcygpKWNlLnN0b3AoKTt0aGlzLm9wZW5GaWxlV2F0Y2hlcnMuY2xlYXIoKTtmb3IobGV0IGNlIG9mIHRoaXMuZmlsZUNoYW5nZURlYm91bmNlLnZhbHVlcygpKWNsZWFyVGltZW91dChjZSk7dGhpcy5maWxlQ2hhbmdlRGVib3VuY2UuY2xlYXIoKX1hc3luYyBoYW5kbGVFeHRlcm5hbEZpbGVDaGFuZ2UoY2Upe2xldCBkZT10aGlzLm9wZW5GaWxlcy5maW5kKExlPT5MZS5wYXRoPT09Y2UpO2lmKCEoIWRlfHwhdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudCkpdHJ5e2xldCBMZT1hd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LnJlYWRGaWxlKGNlKTtpZihMZT09PWRlLmNvbnRlbnQpcmV0dXJuO2lmKGRlLm1vZGlmaWVkKXtsZXQgS2U9YXdhaXQgdGhpcy5hY3Rpb25iYXJFbGVtZW50Py5zaG93KHttZXNzYWdlOmAiJHtkZS5uYW1lfSIgY2hhbmdlZCBvbiBkaXNrLiBXaGF0IGRvIHlvdSB3YW50IHRvIGRvP2AsdHlwZToicXVlc3Rpb24iLGljb246Imx1Y2lkZTpnaXRNZXJnZSIsYWN0aW9uczpbe2lkOiJsb2FkLWRpc2siLGxhYmVsOiJMb2FkIGZyb20gRGlzayIscHJpbWFyeTohMH0se2lkOiJzYXZlLWxvY2FsIixsYWJlbDoiU2F2ZSBMb2NhbCB0byBEaXNrIn0se2lkOiJjb21wYXJlIixsYWJlbDoiQ29tcGFyZSJ9XSx0aW1lb3V0OntkdXJhdGlvbjoxNWUzLGRlZmF1bHRBY3Rpb25JZDoibG9hZC1kaXNrIn0sZGlzbWlzc2libGU6ITB9KTtLZT8uYWN0aW9uSWQ9PT0ibG9hZC1kaXNrIj9hd2FpdCB0aGlzLnVwZGF0ZUZpbGVDb250ZW50KGNlLExlLCExKTpLZT8uYWN0aW9uSWQ9PT0ic2F2ZS1sb2NhbCI/KGF3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQud3JpdGVGaWxlKGNlLGRlLmNvbnRlbnQpLHRoaXMub3BlbkZpbGVzPXRoaXMub3BlbkZpbGVzLm1hcChZZT0+WWUucGF0aD09PWNlP3suLi5ZZSxtb2RpZmllZDohMX06WWUpKTpLZT8uYWN0aW9uSWQ9PT0iY29tcGFyZSImJnRoaXMub3BlbkRpZmZWaWV3KGNlLGRlLmNvbnRlbnQsTGUpfWVsc2UgYXdhaXQgdGhpcy51cGRhdGVGaWxlQ29udGVudChjZSxMZSwhMCl9Y2F0Y2goTGUpe2NvbnNvbGUud2FybihgRmFpbGVkIHRvIGhhbmRsZSBleHRlcm5hbCBjaGFuZ2UgZm9yICR7Y2V9OmAsTGUpfX1hc3luYyB1cGRhdGVGaWxlQ29udGVudChjZSxkZSxMZSl7aWYodGhpcy5vcGVuRmlsZXM9dGhpcy5vcGVuRmlsZXMubWFwKEtlPT5LZS5wYXRoPT09Y2U/ey4uLktlLGNvbnRlbnQ6ZGUsbW9kaWZpZWQ6ITF9OktlKSxjZT09PXRoaXMuYWN0aXZlRmlsZVBhdGgpe2xldCBLZT10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoImRlZXMtd29ya3NwYWNlLW1vbmFjbyIpO0tlJiZhd2FpdCBLZS5zZXRDb250ZW50RXh0ZXJuYWwoZGUsTGUpfX1vcGVuRGlmZlZpZXcoY2UsZGUsTGUpe3RoaXMuZGlmZlZpZXdDb25maWc9e2ZpbGVQYXRoOmNlLG9yaWdpbmFsQ29udGVudDpMZSxtb2RpZmllZENvbnRlbnQ6ZGUsbGFuZ3VhZ2U6dGhpcy5nZXRMYW5ndWFnZUZyb21QYXRoKGNlKX0sdGhpcy5zaG93RGlmZlZpZXc9ITB9YXN5bmMgaGFuZGxlRGlmZlJlc29sdmVkKGNlKXtsZXR7YWN0aW9uOmRlLGNvbnRlbnQ6TGV9PWNlLmRldGFpbCxLZT10aGlzLmRpZmZWaWV3Q29uZmlnPy5maWxlUGF0aDtpZighS2V8fCF0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50KXt0aGlzLnNob3dEaWZmVmlldz0hMSx0aGlzLmRpZmZWaWV3Q29uZmlnPW51bGw7cmV0dXJufWlmKGRlPT09InVzZS1sb2NhbCIpe2lmKGF3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQud3JpdGVGaWxlKEtlLExlKSx0aGlzLm9wZW5GaWxlcz10aGlzLm9wZW5GaWxlcy5tYXAoWWU9PlllLnBhdGg9PT1LZT97Li4uWWUsY29udGVudDpMZSxtb2RpZmllZDohMX06WWUpLEtlPT09dGhpcy5hY3RpdmVGaWxlUGF0aCl7bGV0IFllPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiZGVlcy13b3Jrc3BhY2UtbW9uYWNvIik7WWUmJmF3YWl0IFllLnNldENvbnRlbnRFeHRlcm5hbChMZSwhMSl9fWVsc2UgZGU9PT0idXNlLWRpc2siJiZhd2FpdCB0aGlzLnVwZGF0ZUZpbGVDb250ZW50KEtlLExlLCExKTt0aGlzLnNob3dEaWZmVmlldz0hMSx0aGlzLmRpZmZWaWV3Q29uZmlnPW51bGx9YXN5bmMgaGFuZGxlRmlsZVNlbGVjdChjZSl7bGV0e3BhdGg6ZGUsbmFtZTpMZX09Y2UuZGV0YWlsO2F3YWl0IHRoaXMub3BlbkZpbGUoZGUsTGUpfWFzeW5jIG9wZW5GaWxlKGNlLGRlKXtpZih0aGlzLm9wZW5GaWxlcy5maW5kKEtlPT5LZS5wYXRoPT09Y2UpKXt0aGlzLmFjdGl2ZUZpbGVQYXRoPWNlO3JldHVybn1pZih0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50KXRyeXtsZXQgS2U9YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5yZWFkRmlsZShjZSk7aWYodGhpcy5vcGVuRmlsZXM9Wy4uLnRoaXMub3BlbkZpbGVzLHtwYXRoOmNlLG5hbWU6ZGUsY29udGVudDpLZSxtb2RpZmllZDohMX1dLHRoaXMuYWN0aXZlRmlsZVBhdGg9Y2UsdGhpcy5zdGFydFdhdGNoaW5nRmlsZShjZSksIXRoaXMuaW50ZWxsaVNlbnNlSW5pdGlhbGl6ZWQpe2F3YWl0IHRoaXMudXBkYXRlQ29tcGxldGUsYXdhaXQgbmV3IFByb21pc2Uob3Q9PnNldFRpbWVvdXQob3QsNTAwKSksYXdhaXQgdGhpcy5pbml0aWFsaXplSW50ZWxsaVNlbnNlKCk7bGV0IFllPXRoaXMuZ2V0TGFuZ3VhZ2VGcm9tUGF0aChjZSk7dGhpcy5pbnRlbGxpU2Vuc2VNYW5hZ2VyJiYoWWU9PT0idHlwZXNjcmlwdCJ8fFllPT09ImphdmFzY3JpcHQiKSYmYXdhaXQgdGhpcy5pbnRlbGxpU2Vuc2VNYW5hZ2VyLnByb2Nlc3NDb250ZW50Q2hhbmdlKEtlKX19Y2F0Y2goS2Upe2NvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBvcGVuIGZpbGUgJHtjZX06YCxLZSl9fWFjdGl2YXRlRmlsZShjZSl7dGhpcy5hY3RpdmVGaWxlUGF0aD1jZX1jbG9zZUZpbGUoY2UsZGUpe2NlLnN0b3BQcm9wYWdhdGlvbigpO2xldCBMZT10aGlzLm9wZW5GaWxlcy5maW5kSW5kZXgoWWU9PlllLnBhdGg9PT1kZSk7aWYoTGU9PT0tMSlyZXR1cm47bGV0IEtlPXRoaXMub3BlbkZpbGVzW0xlXTtpZighKEtlLm1vZGlmaWVkJiYhY29uZmlybShgJHtLZS5uYW1lfSBoYXMgdW5zYXZlZCBjaGFuZ2VzLiBDbG9zZSBhbnl3YXk/YCkpJiYodGhpcy5zdG9wV2F0Y2hpbmdGaWxlKGRlKSx0aGlzLm9wZW5GaWxlcz10aGlzLm9wZW5GaWxlcy5maWx0ZXIoWWU9PlllLnBhdGghPT1kZSksdGhpcy5hY3RpdmVGaWxlUGF0aD09PWRlKSlpZih0aGlzLm9wZW5GaWxlcy5sZW5ndGg+MCl7bGV0IFllPU1hdGgubWluKExlLHRoaXMub3BlbkZpbGVzLmxlbmd0aC0xKTt0aGlzLmFjdGl2ZUZpbGVQYXRoPXRoaXMub3BlbkZpbGVzW1llXS5wYXRofWVsc2UgdGhpcy5hY3RpdmVGaWxlUGF0aD0iIn1nZXRBY3RpdmVGaWxlQ29udGVudCgpe3JldHVybiB0aGlzLm9wZW5GaWxlcy5maW5kKGRlPT5kZS5wYXRoPT09dGhpcy5hY3RpdmVGaWxlUGF0aCk/LmNvbnRlbnR8fCIifWhhbmRsZUNvbnRlbnRDaGFuZ2UoY2Upe2xldCBkZT1jZS5kZXRhaWwsTGU9dGhpcy5vcGVuRmlsZXMuZmluZEluZGV4KFllPT5ZZS5wYXRoPT09dGhpcy5hY3RpdmVGaWxlUGF0aCk7aWYoTGU9PT0tMSlyZXR1cm47bGV0IEtlPXRoaXMub3BlbkZpbGVzW0xlXTtpZihLZS5jb250ZW50IT09ZGUpe3RoaXMub3BlbkZpbGVzPVsuLi50aGlzLm9wZW5GaWxlcy5zbGljZSgwLExlKSx7Li4uS2UsY29udGVudDpkZSxtb2RpZmllZDohMH0sLi4udGhpcy5vcGVuRmlsZXMuc2xpY2UoTGUrMSldO2xldCBZZT10aGlzLmdldExhbmd1YWdlRnJvbVBhdGgodGhpcy5hY3RpdmVGaWxlUGF0aCk7dGhpcy5pbnRlbGxpU2Vuc2VNYW5hZ2VyJiYoWWU9PT0idHlwZXNjcmlwdCJ8fFllPT09ImphdmFzY3JpcHQiKSYmKHRoaXMuaW50ZWxsaVNlbnNlRGVib3VuY2VUaW1lb3V0JiZjbGVhclRpbWVvdXQodGhpcy5pbnRlbGxpU2Vuc2VEZWJvdW5jZVRpbWVvdXQpLHRoaXMuaW50ZWxsaVNlbnNlRGVib3VuY2VUaW1lb3V0PXNldFRpbWVvdXQoKCk9Pnt0aGlzLmludGVsbGlTZW5zZU1hbmFnZXI/LnByb2Nlc3NDb250ZW50Q2hhbmdlKGRlKX0sNTAwKSl9fWdldExhbmd1YWdlRnJvbVBhdGgoY2Upe2xldCBkZT1jZS5zcGxpdCgiLiIpLnBvcCgpPy50b0xvd2VyQ2FzZSgpO3JldHVybnt0czoidHlwZXNjcmlwdCIsdHN4OiJ0eXBlc2NyaXB0IixqczoiamF2YXNjcmlwdCIsanN4OiJqYXZhc2NyaXB0Iixqc29uOiJqc29uIixodG1sOiJodG1sIixjc3M6ImNzcyIsc2Nzczoic2NzcyIsbGVzczoibGVzcyIsbWQ6Im1hcmtkb3duIix5YW1sOiJ5YW1sIix5bWw6InlhbWwiLHhtbDoieG1sIixzcWw6InNxbCIscHk6InB5dGhvbiIsc2g6InNoZWxsIixiYXNoOiJzaGVsbCJ9W2RlfHwiIl18fCJwbGFpbnRleHQifXRvZ2dsZVRlcm1pbmFsKCl7dGhpcy5pc1Rlcm1pbmFsQ29sbGFwc2VkPSF0aGlzLmlzVGVybWluYWxDb2xsYXBzZWR9YXN5bmMgc2F2ZUFjdGl2ZUZpbGUoKXtsZXQgY2U9dGhpcy5vcGVuRmlsZXMuZmluZChkZT0+ZGUucGF0aD09PXRoaXMuYWN0aXZlRmlsZVBhdGgpO2lmKCEoIWNlfHwhdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudCkpdHJ5e2F3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQud3JpdGVGaWxlKGNlLnBhdGgsY2UuY29udGVudCksdGhpcy5vcGVuRmlsZXM9dGhpcy5vcGVuRmlsZXMubWFwKGRlPT5kZS5wYXRoPT09Y2UucGF0aD97Li4uZGUsbW9kaWZpZWQ6ITF9OmRlKSx0aGlzLmludGVsbGlTZW5zZU1hbmFnZXImJnRoaXMuaW50ZWxsaVNlbnNlTWFuYWdlci5hZGRGaWxlTW9kZWwoY2UucGF0aCxjZS5jb250ZW50KX1jYXRjaChkZSl7Y29uc29sZS5lcnJvcigiRmFpbGVkIHRvIHNhdmUgZmlsZToiLGRlKX19YXN5bmMgc2F2ZUFsbEZpbGVzKCl7aWYodGhpcy5leGVjdXRpb25FbnZpcm9ubWVudCl7Zm9yKGxldCBjZSBvZiB0aGlzLm9wZW5GaWxlcy5maWx0ZXIoZGU9PmRlLm1vZGlmaWVkKSl0cnl7YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC53cml0ZUZpbGUoY2UucGF0aCxjZS5jb250ZW50KSx0aGlzLmludGVsbGlTZW5zZU1hbmFnZXImJnRoaXMuaW50ZWxsaVNlbnNlTWFuYWdlci5hZGRGaWxlTW9kZWwoY2UucGF0aCxjZS5jb250ZW50KX1jYXRjaChkZSl7Y29uc29sZS5lcnJvcihgRmFpbGVkIHRvIHNhdmUgJHtjZS5wYXRofTpgLGRlKX10aGlzLm9wZW5GaWxlcz10aGlzLm9wZW5GaWxlcy5tYXAoY2U9Pih7Li4uY2UsbW9kaWZpZWQ6ITF9KSl9fWFzeW5jIHNob3dFZGl0b3JNZW51KGNlKXtjZS5zdG9wUHJvcGFnYXRpb24oKTtsZXQgZGU9W3tuYW1lOnRoaXMuYXV0b1NhdmU/Ilx1MjcxMyBBdXRvIFNhdmUiOiJBdXRvIFNhdmUiLGljb25OYW1lOiJsdWNpZGU6c2F2ZSIsYWN0aW9uOmkoYXN5bmMoKT0+dGhpcy50b2dnbGVBdXRvU2F2ZSgpLCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJTYXZlIixpY29uTmFtZToibHVjaWRlOnNhdmUiLGFjdGlvbjppKGFzeW5jKCk9PnRoaXMuc2F2ZUFjdGl2ZUZpbGUoKSwiYWN0aW9uIil9LHtuYW1lOiJTYXZlIEFsbCIsaWNvbk5hbWU6Imx1Y2lkZTpzYXZlIixhY3Rpb246aShhc3luYygpPT50aGlzLnNhdmVBbGxGaWxlcygpLCJhY3Rpb24iKX1dO2F3YWl0IGthLm9wZW5Db250ZXh0TWVudVdpdGhPcHRpb25zKGNlLGRlKX10b2dnbGVBdXRvU2F2ZSgpe3RoaXMuYXV0b1NhdmU9IXRoaXMuYXV0b1NhdmUsdGhpcy5hdXRvU2F2ZT90aGlzLmF1dG9TYXZlSW50ZXJ2YWw9c2V0SW50ZXJ2YWwoKCk9Pnt0aGlzLm9wZW5GaWxlcy5zb21lKGRlPT5kZS5tb2RpZmllZCkmJnRoaXMuc2F2ZUFsbEZpbGVzKCl9LDJlMyk6dGhpcy5hdXRvU2F2ZUludGVydmFsJiYoY2xlYXJJbnRlcnZhbCh0aGlzLmF1dG9TYXZlSW50ZXJ2YWwpLHRoaXMuYXV0b1NhdmVJbnRlcnZhbD1udWxsKX1nZXRFcnJvckNvdW50KCl7cmV0dXJuIHRoaXMuZGlhZ25vc3RpY01hcmtlcnMuZmlsdGVyKGNlPT5jZS5zZXZlcml0eT09PTgpLmxlbmd0aH1yZW5kZXJQcm9ibGVtc1BhbmVsKCl7cmV0dXJuIHRoaXMuZGlhZ25vc3RpY01hcmtlcnMubGVuZ3RoPT09MD93YAogICAgICAgIDxkaXYgY2xhc3M9InByb2JsZW1zLWVtcHR5Ij4KICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHsibHVjaWRlOmNoZWNrQ2lyY2xlIn0gaWNvblNpemU9IjI0Ij48L2RlZXMtaWNvbj4KICAgICAgICAgIDxzcGFuPk5vIHByb2JsZW1zIGRldGVjdGVkPC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICBgOndgCiAgICAgIDxkaXYgY2xhc3M9InByb2JsZW1zLWxpc3QiPgogICAgICAgICR7dGhpcy5kaWFnbm9zdGljTWFya2Vycy5tYXAoY2U9PndgCiAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9ibGVtLWl0ZW0iIEBjbGljaz0keygpPT50aGlzLm5hdmlnYXRlVG9Qcm9ibGVtKGNlKX0+CiAgICAgICAgICAgIDxkZWVzLWljb24KICAgICAgICAgICAgICBjbGFzcz0icHJvYmxlbS1pY29uICR7Y2Uuc2V2ZXJpdHk9PT04PyJlcnJvciI6Indhcm5pbmcifSIKICAgICAgICAgICAgICAuaWNvbj0ke2NlLnNldmVyaXR5PT09OD8ibHVjaWRlOmNpcmNsZVgiOiJsdWNpZGU6dHJpYW5nbGVBbGVydCJ9CiAgICAgICAgICAgICAgaWNvblNpemU9IjE0IgogICAgICAgICAgICA+PC9kZWVzLWljb24+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2JsZW0tZGV0YWlscyI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvYmxlbS1tZXNzYWdlIj4ke2NlLm1lc3NhZ2V9PC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvYmxlbS1sb2NhdGlvbiI+CiAgICAgICAgICAgICAgICAke2NlLnJlc291cmNlLnBhdGguc3BsaXQoIi8iKS5wb3AoKX0gKCR7Y2Uuc3RhcnRMaW5lTnVtYmVyfSwgJHtjZS5zdGFydENvbHVtbn0pCiAgICAgICAgICAgICAgICAke2NlLnNvdXJjZT9gWyR7Y2Uuc291cmNlfV1gOiIifQogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIGApfQogICAgICA8L2Rpdj4KICAgIGB9YXN5bmMgbmF2aWdhdGVUb1Byb2JsZW0oY2Upe2xldCBkZT1jZS5yZXNvdXJjZS5wYXRoLExlPWRlLnNwbGl0KCIvIikucG9wKCl8fCIiO3RoaXMub3BlbkZpbGVzLmZpbmQob3Q9Pm90LnBhdGg9PT1kZSk/dGhpcy5hY3RpdmVGaWxlUGF0aD1kZTphd2FpdCB0aGlzLm9wZW5GaWxlKGRlLExlKSxhd2FpdCB0aGlzLnVwZGF0ZUNvbXBsZXRlO2xldCBZZT10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoImRlZXMtd29ya3NwYWNlLW1vbmFjbyIpO2lmKFllKXtsZXQgb3Q9YXdhaXQgWWUuZWRpdG9yRGVmZXJyZWQucHJvbWlzZTtvdC5yZXZlYWxMaW5lSW5DZW50ZXIoY2Uuc3RhcnRMaW5lTnVtYmVyKSxvdC5zZXRQb3NpdGlvbih7bGluZU51bWJlcjpjZS5zdGFydExpbmVOdW1iZXIsY29sdW1uOmNlLnN0YXJ0Q29sdW1ufSksb3QuZm9jdXMoKX19c2V0dXBNYXJrZXJMaXN0ZW5lcigpe2xldCBjZT13aW5kb3cubW9uYWNvO2NlJiYoY2UuZWRpdG9yLm9uRGlkQ2hhbmdlTWFya2VycyhkZT0+e3RoaXMudXBkYXRlRGlhZ25vc3RpY01hcmtlcnMoKX0pLHRoaXMudXBkYXRlRGlhZ25vc3RpY01hcmtlcnMoKSl9dXBkYXRlRGlhZ25vc3RpY01hcmtlcnMoKXtsZXQgY2U9d2luZG93Lm1vbmFjbztpZighY2UpcmV0dXJuO2xldCBkZT1jZS5lZGl0b3IuZ2V0TW9kZWxNYXJrZXJzKHt9KTt0aGlzLmRpYWdub3N0aWNNYXJrZXJzPWRlLm1hcChMZT0+KHttZXNzYWdlOkxlLm1lc3NhZ2Usc2V2ZXJpdHk6TGUuc2V2ZXJpdHksc3RhcnRMaW5lTnVtYmVyOkxlLnN0YXJ0TGluZU51bWJlcixzdGFydENvbHVtbjpMZS5zdGFydENvbHVtbixlbmRMaW5lTnVtYmVyOkxlLmVuZExpbmVOdW1iZXIsZW5kQ29sdW1uOkxlLmVuZENvbHVtbixzb3VyY2U6TGUuc291cmNlLHJlc291cmNlOntwYXRoOkxlLnJlc291cmNlLnBhdGh9fSkpfWFzeW5jIGhhbmRsZVJ1blByb2Nlc3MoY2Upe2xldCBkZT1jZS5kZXRhaWwsTGU9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCJkZWVzLXdvcmtzcGFjZS10ZXJtaW5hbCIpO2lmKCFMZSl7Y29uc29sZS53YXJuKCJUZXJtaW5hbCBjb21wb25lbnQgbm90IGZvdW5kIik7cmV0dXJufXRoaXMuaXNUZXJtaW5hbENvbGxhcHNlZCYmKHRoaXMuaXNUZXJtaW5hbENvbGxhcHNlZD0hMSksdGhpcy5hY3RpdmVCb3R0b21QYW5lbD0idGVybWluYWwiLGF3YWl0IHRoaXMudXBkYXRlQ29tcGxldGUsYXdhaXQgTGUuY3JlYXRlUHJvY2Vzc1RhYih7dHlwZTpkZS50eXBlLGxhYmVsOmRlLmxhYmVsLGNvbW1hbmQ6ZGUuY29tbWFuZCxhcmdzOmRlLmFyZ3MsbWV0YWRhdGE6ZGUubWV0YWRhdGEsc3dpdGNoVG9UYWI6ITB9KX1zZXRGaWxlVHJlZVdpZHRoKGNlKXtsZXQgTGU9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCouNTt0aGlzLmN1cnJlbnRGaWxlVHJlZVdpZHRoPU1hdGgubWF4KDE1MCxNYXRoLm1pbihMZSxjZSkpLHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgicmVzaXplIikpfXNldFRlcm1pbmFsSGVpZ2h0KGNlKXtsZXQgTGU9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQqLjc7dGhpcy5jdXJyZW50VGVybWluYWxIZWlnaHQ9TWF0aC5tYXgoMTAwLE1hdGgubWluKExlLGNlKSksd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCJyZXNpemUiKSl9cmVzZXRMYXlvdXQoKXt0aGlzLmN1cnJlbnRGaWxlVHJlZVdpZHRoPXRoaXMuZmlsZVRyZWVXaWR0aCx0aGlzLmN1cnJlbnRUZXJtaW5hbEhlaWdodD10aGlzLnRlcm1pbmFsSGVpZ2h0LHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgicmVzaXplIikpfXN0YXRpY3tvYShhLHQpfX07cmV0dXJuIEllPWF9KSgpfSk7dmFyIHA3YT1nKCgpPT57dTdhKCk7anJ0KCl9KTt2YXIgaDdhPWcoKCk9PntQOCgpfSk7dmFyIGY3YT1nKCgpPT57dzFlKCl9KTt2YXIgbTdhPWcoKCk9Pnt9KTt2YXIgZzdhPWcoKCk9PntvUSgpO203YSgpO1BydCgpfSk7dmFyIGI3YT1nKCgpPT57SHJ0KCl9KTt2YXIgY1EsenUsV1NvLHY3YSx4N2E9ZygoKT0+e3BlKCk7cHQoKTtQOCgpO2NRPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSx6dT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sV1NvPWx0LnBsdWdpbnMuc21hcnRwcm9taXNlLmRlZmVyKCksdjdhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy13b3Jrc3BhY2UtbWFya2Rvd24iKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXTt2YXIgeT1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1dvcmtzcGFjZU1hcmtkb3duIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IE09dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpOdW1iZXJ9KV0scD1bTCh7dHlwZTpOdW1iZXJ9KV0sYz1bWSgpXSx4PVtZKCldLGNRKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic3BsaXRSYXRpbyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4ic3BsaXRSYXRpbyJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LnNwbGl0UmF0aW8sImdldCIpLHNldDppKCh6LE4pPT57ei5zcGxpdFJhdGlvPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sbyxsKSxjUSh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1pblBhbmVsU2l6ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4ibWluUGFuZWxTaXplImluIHosImhhcyIpLGdldDppKHo9PnoubWluUGFuZWxTaXplLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3oubWluUGFuZWxTaXplPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sZCx1KSxjUSh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImN1cnJlbnRTcGxpdFJhdGlvIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJjdXJyZW50U3BsaXRSYXRpbyJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LmN1cnJlbnRTcGxpdFJhdGlvLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3ouY3VycmVudFNwbGl0UmF0aW89Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxiLHYpLGNRKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNEcmFnZ2luZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4iaXNEcmFnZ2luZyJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LmlzRHJhZ2dpbmcsImdldCIpLHNldDppKCh6LE4pPT57ei5pc0RyYWdnaW5nPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sbSxmKSxjUShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpNfSxudWxsLHQpLHk9YT1lLnZhbHVlLE0mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6TX0pfXN0YXRpYyBkZW1vPWkoKCk9PndgPGRlZXMtd29ya3NwYWNlLW1hcmtkb3duPjwvZGVlcy13b3Jrc3BhY2UtbWFya2Rvd24+YCwiZGVtbyIpO3N0YXRpYyBkZW1vR3JvdXBzPVsiV29ya3NwYWNlIl07c3RhdGljIHN0eWxlcz1bSGUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CgogICAgICAuc3BsaXRDb250YWluZXIgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICB9CgogICAgICAuZWRpdG9yQ29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG1pbi13aWR0aDogMTAwcHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLnJlc2l6ZUhhbmRsZSB7CiAgICAgICAgd2lkdGg6IDZweDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMzAzNjNkIil9OwogICAgICAgIGN1cnNvcjogY29sLXJlc2l6ZTsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzIGVhc2U7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAucmVzaXplSGFuZGxlOmhvdmVyLAogICAgICAucmVzaXplSGFuZGxlLmRyYWdnaW5nIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiIzNiODJmNiIsIiM1OGE2ZmYiKX07CiAgICAgIH0KCiAgICAgIC5yZXNpemVIYW5kbGU6OmFmdGVyIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiA1MCU7CiAgICAgICAgbGVmdDogNTAlOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgICAgIHdpZHRoOiAycHg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjOWNhM2FmIiwiIzZlNzY4MSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiAxcHg7CiAgICAgICAgb3BhY2l0eTogMC42OwogICAgICB9CgogICAgICAucmVzaXplSGFuZGxlOmhvdmVyOjphZnRlciwKICAgICAgLnJlc2l6ZUhhbmRsZS5kcmFnZ2luZzo6YWZ0ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiI2ZmZmZmZiIpfTsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CgogICAgICAub3V0bGV0Q29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG1pbi13aWR0aDogMTAwcHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMGQxMTE3Iil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzI0MjkyZiIsIiNlNmVkZjMiKX07CiAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgJ05vdG8gU2FucycsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgICAgICAgcGFkZGluZzogMjBweDsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgIC8qIFByZXZlbnQgdGV4dCBzZWxlY3Rpb24gd2hpbGUgZHJhZ2dpbmcgKi8KICAgICAgLnNwbGl0Q29udGFpbmVyLmRyYWdnaW5nIHsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgfQoKICAgICAgLnNwbGl0Q29udGFpbmVyLmRyYWdnaW5nIC5lZGl0b3JDb250YWluZXIsCiAgICAgIC5zcGxpdENvbnRhaW5lci5kcmFnZ2luZyAub3V0bGV0Q29udGFpbmVyIHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQogICAgYF07I2U9enUodGhpcyxvLDUwKTtnZXQgc3BsaXRSYXRpbygpe3JldHVybiB0aGlzLiNlfXNldCBzcGxpdFJhdGlvKE0pe3RoaXMuI2U9TX0jdD0oenUodGhpcyxsKSx6dSh0aGlzLGQsMTApKTtnZXQgbWluUGFuZWxTaXplKCl7cmV0dXJuIHRoaXMuI3R9c2V0IG1pblBhbmVsU2l6ZShNKXt0aGlzLiN0PU19I2E9KHp1KHRoaXMsdSksenUodGhpcyxiLDUwKSk7Z2V0IGN1cnJlbnRTcGxpdFJhdGlvKCl7cmV0dXJuIHRoaXMuI2F9c2V0IGN1cnJlbnRTcGxpdFJhdGlvKE0pe3RoaXMuI2E9TX0jcz0oenUodGhpcyx2KSx6dSh0aGlzLG0sITEpKTtnZXQgaXNEcmFnZ2luZygpe3JldHVybiB0aGlzLiNzfXNldCBpc0RyYWdnaW5nKE0pe3RoaXMuI3M9TX1yZXNpemVIYW5kbGVFbGVtZW50PXp1KHRoaXMsZik7Y29udGFpbmVyRWxlbWVudDtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0ic3BsaXRDb250YWluZXIgJHt0aGlzLmlzRHJhZ2dpbmc/ImRyYWdnaW5nIjoiIn0iPgogICAgICAgIDxkaXYgY2xhc3M9ImVkaXRvckNvbnRhaW5lciIgc3R5bGU9IndpZHRoOiAke3RoaXMuY3VycmVudFNwbGl0UmF0aW99JSI+CiAgICAgICAgICA8ZGVlcy13b3Jrc3BhY2UtbW9uYWNvCiAgICAgICAgICAgIC5sYW5ndWFnZT0keyJtYXJrZG93biJ9CiAgICAgICAgICAgIC5jb250ZW50PSR7YCMgYSB0ZXN0IGNvbnRlbnQKClRoaXMgaXMgdGVzdCBjb250ZW50IHRoYXQgaXMgb2YgbG9uZ2VyIGZvcm0gYW4gaG9wZWZ1bGx5IHN0YXJ0cyB0byB3cmFwIHdoZW4gSSBuZWVkIGl0LiBBbmQgeWVzLCBpdCBkb2VzIHBlcmZlY3RseS4gbmljZS4KClRlc3QgfCBIZWxsbwotLS0gfCAtLS0KWWVhaCB8IFNvIGdvb2QKClRoaXMgaXMgcmVhbCBhc3NldCBJIHRoaW5rLiBXaHkgd291bGQgd2Ugd2FudCB0byBsZWF2ZSB0aGF0IG9uIHRoZSB0YWJsZT8gQ2FuIHlvdSB0ZWxsIG15IHRoYXQ/CgpXaHkgYXJlIHdlIGhlcmU/CgpEbyB5b3Uga25vdz8KCj4gbm90ZToKVGhlcmUgaXMgc29tZXRoaW5nIGdvaW5nIG9uLgoKXGBcYFxgdHlwZXNjcmlwdApjb25zdCBoZWxsbyA9ICd5ZXMnClxgXGBcYApgfQogICAgICAgICAgICB3b3JkV3JhcD0iYm91bmRlZCIKICAgICAgICAgID48L2RlZXMtd29ya3NwYWNlLW1vbmFjbz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2CiAgICAgICAgICBjbGFzcz0icmVzaXplSGFuZGxlICR7dGhpcy5pc0RyYWdnaW5nPyJkcmFnZ2luZyI6IiJ9IgogICAgICAgICAgQG1vdXNlZG93bj0ke3RoaXMuaGFuZGxlTW91c2VEb3dufQogICAgICAgID48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJvdXRsZXRDb250YWluZXIiIHN0eWxlPSJ3aWR0aDogJHsxMDAtdGhpcy5jdXJyZW50U3BsaXRSYXRpb30lIj4KICAgICAgICAgIDxkZWVzLXdvcmtzcGFjZS1tYXJrZG93bm91dGxldD48L2RlZXMtd29ya3NwYWNlLW1hcmtkb3dub3V0bGV0PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9YXN5bmMgZmlyc3RVcGRhdGVkKE0pe2F3YWl0IHN1cGVyLmZpcnN0VXBkYXRlZChNKSx0aGlzLmN1cnJlbnRTcGxpdFJhdGlvPXRoaXMuc3BsaXRSYXRpbyx0aGlzLmNvbnRhaW5lckVsZW1lbnQ9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5zcGxpdENvbnRhaW5lciIpLHRoaXMucmVzaXplSGFuZGxlRWxlbWVudD10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLnJlc2l6ZUhhbmRsZSIpO2xldCB6PXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCJkZWVzLXdvcmtzcGFjZS1tb25hY28iKSxOPXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCJkZWVzLXdvcmtzcGFjZS1tYXJrZG93bm91dGxldCIpLF89YXdhaXQgbmV3IGx0LnBsdWdpbnMuc21hcnRtYXJrZG93bi5TbWFydE1hcmtkb3duKCkuZ2V0TWRQYXJzZWRSZXN1bHRGcm9tTWFya2Rvd24oImxvYWRpbmcuLi4iKTt6LmNvbnRlbnRTdWJqZWN0LnN1YnNjcmliZShhc3luYyBPPT57YXdhaXQgXy51cGRhdGVGcm9tTWFya2Rvd25TdHJpbmcoTyk7bGV0ICQ9Xy5odG1sO04udXBkYXRlSHRtbFRleHQoJCl9KX1oYW5kbGVNb3VzZURvd249aShNPT57TS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuaXNEcmFnZ2luZz0hMCxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMuaGFuZGxlTW91c2VNb3ZlKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLmhhbmRsZU1vdXNlVXApfSwiaGFuZGxlTW91c2VEb3duIik7aGFuZGxlTW91c2VNb3ZlPWkoTT0+e2lmKCF0aGlzLmlzRHJhZ2dpbmd8fCF0aGlzLmNvbnRhaW5lckVsZW1lbnQpcmV0dXJuO2xldCB6PXRoaXMuY29udGFpbmVyRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxOPXoud2lkdGgsXz0oTS5jbGllbnRYLXoubGVmdCkvTioxMDA7Xz1NYXRoLm1heCh0aGlzLm1pblBhbmVsU2l6ZSxNYXRoLm1pbigxMDAtdGhpcy5taW5QYW5lbFNpemUsXykpLHRoaXMuY3VycmVudFNwbGl0UmF0aW89X30sImhhbmRsZU1vdXNlTW92ZSIpO2hhbmRsZU1vdXNlVXA9aSgoKT0+e3RoaXMuaXNEcmFnZ2luZz0hMSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMuaGFuZGxlTW91c2VNb3ZlKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLmhhbmRsZU1vdXNlVXApLHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCJkZWVzLXdvcmtzcGFjZS1tb25hY28iKSYmd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCJyZXNpemUiKSl9LCJoYW5kbGVNb3VzZVVwIik7YXN5bmMgZGlzY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5oYW5kbGVNb3VzZU1vdmUpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHRoaXMuaGFuZGxlTW91c2VVcCl9c2V0U3BsaXRSYXRpbyhNKXt0aGlzLmN1cnJlbnRTcGxpdFJhdGlvPU1hdGgubWF4KHRoaXMubWluUGFuZWxTaXplLE1hdGgubWluKDEwMC10aGlzLm1pblBhbmVsU2l6ZSxNKSl9cmVzZXRTcGxpdFJhdGlvKCl7dGhpcy5jdXJyZW50U3BsaXRSYXRpbz10aGlzLnNwbGl0UmF0aW99c3RhdGlje3p1KGEsdCl9fTtyZXR1cm4geT1hfSkoKX0pO3ZhciB5N2E9ZygoKT0+e3g3YSgpfSk7dmFyIHc3YSxrN2E9ZygoKT0+e3BlKCk7SXQoKTtmbygpO3c3YT1pKCgpPT53YAogIDxkZWVzLWRlbW93cmFwcGVyPgogICAgPHN0eWxlPgogICAgICAke0pgCiAgICAgICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICAgIG1heC13aWR0aDogOTAwcHg7CiAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICB9CiAgICAgIGB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgICAgPCEtLSBEZW1vIDE6IEhlYWRpbmdzIC0tPgogICAgICA8ZGVlcy1wYW5lbAogICAgICAgIC50aXRsZT0keyJIZWFkaW5ncyJ9CiAgICAgICAgLnN1YnRpdGxlPSR7IkFsbCBoZWFkaW5nIGxldmVscyBmcm9tIEgxIHRvIEg2In0KICAgICAgICAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57YXdhaXQgcy5xdWVyeVNlbGVjdG9yKCJkZWVzLXdvcmtzcGFjZS1tYXJrZG93bm91dGxldCIpPy51cGRhdGVIdG1sVGV4dChgCiAgICAgICAgICAgIDxoMT5IZWFkaW5nIExldmVsIDE8L2gxPgogICAgICAgICAgICA8aDI+SGVhZGluZyBMZXZlbCAyPC9oMj4KICAgICAgICAgICAgPGgzPkhlYWRpbmcgTGV2ZWwgMzwvaDM+CiAgICAgICAgICAgIDxoND5IZWFkaW5nIExldmVsIDQ8L2g0PgogICAgICAgICAgICA8aDU+SGVhZGluZyBMZXZlbCA1PC9oNT4KICAgICAgICAgICAgPGg2PkhlYWRpbmcgTGV2ZWwgNjwvaDY+CiAgICAgICAgICBgKX19CiAgICAgID4KICAgICAgICA8ZGVlcy13b3Jrc3BhY2UtbWFya2Rvd25vdXRsZXQ+PC9kZWVzLXdvcmtzcGFjZS1tYXJrZG93bm91dGxldD4KICAgICAgPC9kZWVzLXBhbmVsPgoKICAgICAgPCEtLSBEZW1vIDI6IFRleHQgRm9ybWF0dGluZyAtLT4KICAgICAgPGRlZXMtcGFuZWwKICAgICAgICAudGl0bGU9JHsiVGV4dCBGb3JtYXR0aW5nIn0KICAgICAgICAuc3VidGl0bGU9JHsiQm9sZCwgaXRhbGljLCBsaW5rcywgY29kZSwgYW5kIGtleWJvYXJkIGlucHV0In0KICAgICAgICAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57YXdhaXQgcy5xdWVyeVNlbGVjdG9yKCJkZWVzLXdvcmtzcGFjZS1tYXJrZG93bm91dGxldCIpPy51cGRhdGVIdG1sVGV4dChgCiAgICAgICAgICAgIDxwPlRoaXMgaXMgYSBwYXJhZ3JhcGggd2l0aCA8c3Ryb25nPmJvbGQgdGV4dDwvc3Ryb25nPiBhbmQgPGVtPml0YWxpYyB0ZXh0PC9lbT4uPC9wPgogICAgICAgICAgICA8cD5Zb3UgY2FuIGFsc28gdXNlIDxzdHJvbmc+PGVtPmJvbGQgaXRhbGljPC9lbT48L3N0cm9uZz4gZm9yIGVtcGhhc2lzLjwvcD4KICAgICAgICAgICAgPHA+SGVyZSdzIGEgPGEgaHJlZj0iIyI+bGluayBleGFtcGxlPC9hPiBhbmQgc29tZSA8Y29kZT5pbmxpbmUgY29kZTwvY29kZT4uPC9wPgogICAgICAgICAgICA8cD5QcmVzcyA8a2JkPkN0cmw8L2tiZD4gKyA8a2JkPkM8L2tiZD4gdG8gY29weSB0ZXh0LjwvcD4KICAgICAgICAgICAgPGhyPgogICAgICAgICAgICA8cD5BYm92ZSBpcyBhIGhvcml6b250YWwgcnVsZSBzZXBhcmF0b3IuPC9wPgogICAgICAgICAgYCl9fQogICAgICA+CiAgICAgICAgPGRlZXMtd29ya3NwYWNlLW1hcmtkb3dub3V0bGV0PjwvZGVlcy13b3Jrc3BhY2UtbWFya2Rvd25vdXRsZXQ+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDwhLS0gRGVtbyAzOiBMaXN0cyAtLT4KICAgICAgPGRlZXMtcGFuZWwKICAgICAgICAudGl0bGU9JHsiTGlzdHMifQogICAgICAgIC5zdWJ0aXRsZT0keyJPcmRlcmVkLCB1bm9yZGVyZWQsIGFuZCB0YXNrIGxpc3RzIn0KICAgICAgICAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57YXdhaXQgcy5xdWVyeVNlbGVjdG9yKCJkZWVzLXdvcmtzcGFjZS1tYXJrZG93bm91dGxldCIpPy51cGRhdGVIdG1sVGV4dChgCiAgICAgICAgICAgIDxoMz5Vbm9yZGVyZWQgTGlzdDwvaDM+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICA8bGk+Rmlyc3QgaXRlbTwvbGk+CiAgICAgICAgICAgICAgPGxpPlNlY29uZCBpdGVtCiAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgIDxsaT5OZXN0ZWQgaXRlbSAxPC9saT4KICAgICAgICAgICAgICAgICAgPGxpPk5lc3RlZCBpdGVtIDI8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaT5UaGlyZCBpdGVtPC9saT4KICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgIDxoMz5PcmRlcmVkIExpc3Q8L2gzPgogICAgICAgICAgICA8b2w+CiAgICAgICAgICAgICAgPGxpPlN0ZXAgb25lPC9saT4KICAgICAgICAgICAgICA8bGk+U3RlcCB0d288L2xpPgogICAgICAgICAgICAgIDxsaT5TdGVwIHRocmVlPC9saT4KICAgICAgICAgICAgPC9vbD4KCiAgICAgICAgICAgIDxoMz5UYXNrIExpc3Q8L2gzPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0YXNrLWxpc3QtaXRlbSI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBjaGVja2VkIGRpc2FibGVkPiBDb21wbGV0ZWQgdGFzazwvbGk+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0YXNrLWxpc3QtaXRlbSI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBkaXNhYmxlZD4gUGVuZGluZyB0YXNrPC9saT4KICAgICAgICAgICAgICA8bGkgY2xhc3M9InRhc2stbGlzdC1pdGVtIj48aW5wdXQgdHlwZT0iY2hlY2tib3giIGRpc2FibGVkPiBBbm90aGVyIHRhc2s8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgICAgYCl9fQogICAgICA+CiAgICAgICAgPGRlZXMtd29ya3NwYWNlLW1hcmtkb3dub3V0bGV0PjwvZGVlcy13b3Jrc3BhY2UtbWFya2Rvd25vdXRsZXQ+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDwhLS0gRGVtbyA0OiBDb2RlIEJsb2NrcyAtLT4KICAgICAgPGRlZXMtcGFuZWwKICAgICAgICAudGl0bGU9JHsiQ29kZSBCbG9ja3MifQogICAgICAgIC5zdWJ0aXRsZT0keyJTeW50YXggaGlnaGxpZ2h0ZWQgY29kZSBleGFtcGxlcyJ9CiAgICAgICAgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e2F3YWl0IHMucXVlcnlTZWxlY3RvcigiZGVlcy13b3Jrc3BhY2UtbWFya2Rvd25vdXRsZXQiKT8udXBkYXRlSHRtbFRleHQoYAogICAgICAgICAgICA8cD5JbmxpbmUgY29kZTogPGNvZGU+Y29uc3QgZ3JlZXRpbmcgPSAiSGVsbG8sIFdvcmxkISI7PC9jb2RlPjwvcD4KCiAgICAgICAgICAgIDxoMz5UeXBlU2NyaXB0IEV4YW1wbGU8L2gzPgogICAgICAgICAgICA8cHJlPjxjb2RlPjxzcGFuIGNsYXNzPSJobGpzLWtleXdvcmQiPmltcG9ydDwvc3Bhbj4geyBodG1sLCBjc3MgfSA8c3BhbiBjbGFzcz0iaGxqcy1rZXl3b3JkIj5mcm9tPC9zcGFuPiA8c3BhbiBjbGFzcz0iaGxqcy1zdHJpbmciPidAZGVzaWduLmVzdGF0ZS9kZWVzLWVsZW1lbnQnPC9zcGFuPjsKCjxzcGFuIGNsYXNzPSJobGpzLWtleXdvcmQiPmludGVyZmFjZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImhsanMtdGl0bGUiPklVc2VyPC9zcGFuPiB7CiAgPHNwYW4gY2xhc3M9ImhsanMtYXR0ciI+bmFtZTwvc3Bhbj46IDxzcGFuIGNsYXNzPSJobGpzLWJ1aWx0X2luIj5zdHJpbmc8L3NwYW4+OwogIDxzcGFuIGNsYXNzPSJobGpzLWF0dHIiPmVtYWlsPC9zcGFuPjogPHNwYW4gY2xhc3M9ImhsanMtYnVpbHRfaW4iPnN0cmluZzwvc3Bhbj47CiAgPHNwYW4gY2xhc3M9ImhsanMtYXR0ciI+YWdlPC9zcGFuPj86IDxzcGFuIGNsYXNzPSJobGpzLWJ1aWx0X2luIj5udW1iZXI8L3NwYW4+Owp9Cgo8c3BhbiBjbGFzcz0iaGxqcy1rZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImhsanMtdGl0bGUiPmdldFVzZXI8L3NwYW4+ID0gPHNwYW4gY2xhc3M9ImhsanMta2V5d29yZCI+YXN5bmM8L3NwYW4+ICg8c3BhbiBjbGFzcz0iaGxqcy1hdHRyIj5pZDwvc3Bhbj46IDxzcGFuIGNsYXNzPSJobGpzLWJ1aWx0X2luIj5zdHJpbmc8L3NwYW4+KTogPHNwYW4gY2xhc3M9ImhsanMtYnVpbHRfaW4iPlByb21pc2U8L3NwYW4+Jmx0O0lVc2VyJmd0OyA9Jmd0OyB7CiAgPHNwYW4gY2xhc3M9ImhsanMta2V5d29yZCI+Y29uc3Q8L3NwYW4+IHJlc3BvbnNlID0gPHNwYW4gY2xhc3M9ImhsanMta2V5d29yZCI+YXdhaXQ8L3NwYW4+IGZldGNoKFxgL2FwaS91c2Vycy9cJHtpZH1cYCk7CiAgPHNwYW4gY2xhc3M9ImhsanMta2V5d29yZCI+cmV0dXJuPC9zcGFuPiByZXNwb25zZS5qc29uKCk7Cn07PC9jb2RlPjwvcHJlPgoKICAgICAgICAgICAgPGgzPkpTT04gRXhhbXBsZTwvaDM+CiAgICAgICAgICAgIDxwcmU+PGNvZGU+ewogIDxzcGFuIGNsYXNzPSJobGpzLWF0dHIiPiJuYW1lIjwvc3Bhbj46IDxzcGFuIGNsYXNzPSJobGpzLXN0cmluZyI+ImRlZXMtY2F0YWxvZyI8L3NwYW4+LAogIDxzcGFuIGNsYXNzPSJobGpzLWF0dHIiPiJ2ZXJzaW9uIjwvc3Bhbj46IDxzcGFuIGNsYXNzPSJobGpzLXN0cmluZyI+IjMuMC4wIjwvc3Bhbj4sCiAgPHNwYW4gY2xhc3M9ImhsanMtYXR0ciI+ImRlcGVuZGVuY2llcyI8L3NwYW4+OiB7CiAgICA8c3BhbiBjbGFzcz0iaGxqcy1hdHRyIj4iQGRlc2lnbi5lc3RhdGUvZGVlcy1lbGVtZW50Ijwvc3Bhbj46IDxzcGFuIGNsYXNzPSJobGpzLXN0cmluZyI+Il4yLjAuMCI8L3NwYW4+CiAgfQp9PC9jb2RlPjwvcHJlPgogICAgICAgICAgYCl9fQogICAgICA+CiAgICAgICAgPGRlZXMtd29ya3NwYWNlLW1hcmtkb3dub3V0bGV0PjwvZGVlcy13b3Jrc3BhY2UtbWFya2Rvd25vdXRsZXQ+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDwhLS0gRGVtbyA1OiBUYWJsZXMgLS0+CiAgICAgIDxkZWVzLXBhbmVsCiAgICAgICAgLnRpdGxlPSR7IlRhYmxlcyJ9CiAgICAgICAgLnN1YnRpdGxlPSR7IlN0eWxlZCB0YWJsZXMgd2l0aCBhbHRlcm5hdGluZyByb3dzIn0KICAgICAgICAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57YXdhaXQgcy5xdWVyeVNlbGVjdG9yKCJkZWVzLXdvcmtzcGFjZS1tYXJrZG93bm91dGxldCIpPy51cGRhdGVIdG1sVGV4dChgCiAgICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0aD5GZWF0dXJlPC90aD4KICAgICAgICAgICAgICAgICAgPHRoPlN0YXR1czwvdGg+CiAgICAgICAgICAgICAgICAgIDx0aD5Qcmlvcml0eTwvdGg+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+RGFyayBtb2RlIHN1cHBvcnQ8L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+Q29tcGxldGVkPC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPkhpZ2g8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPlJlc3BvbnNpdmUgZGVzaWduPC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPkluIFByb2dyZXNzPC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPk1lZGl1bTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+QWNjZXNzaWJpbGl0eTwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5QbGFubmVkPC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPkhpZ2g8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPkRvY3VtZW50YXRpb248L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+SW4gUHJvZ3Jlc3M8L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+TG93PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIGApfX0KICAgICAgPgogICAgICAgIDxkZWVzLXdvcmtzcGFjZS1tYXJrZG93bm91dGxldD48L2RlZXMtd29ya3NwYWNlLW1hcmtkb3dub3V0bGV0PgogICAgICA8L2RlZXMtcGFuZWw+CgogICAgICA8IS0tIERlbW8gNjogQmxvY2txdW90ZXMgJiBBbGVydHMgLS0+CiAgICAgIDxkZWVzLXBhbmVsCiAgICAgICAgLnRpdGxlPSR7IkJsb2NrcXVvdGVzICYgQWxlcnRzIn0KICAgICAgICAuc3VidGl0bGU9JHsiUXVvdGVzIGFuZCBHaXRIdWItc3R5bGUgYWxlcnRzIn0KICAgICAgICAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57YXdhaXQgcy5xdWVyeVNlbGVjdG9yKCJkZWVzLXdvcmtzcGFjZS1tYXJrZG93bm91dGxldCIpPy51cGRhdGVIdG1sVGV4dChgCiAgICAgICAgICAgIDxibG9ja3F1b3RlPgogICAgICAgICAgICAgIDxwPlRoaXMgaXMgYSBzdGFuZGFyZCBibG9ja3F1b3RlLiBJdCdzIGdyZWF0IGZvciBoaWdobGlnaHRpbmcgaW1wb3J0YW50IGluZm9ybWF0aW9uIG9yIHF1b3RlcyBmcm9tIG90aGVyIHNvdXJjZXMuPC9wPgogICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYXJrZG93bi1hbGVydCBtYXJrZG93bi1hbGVydC1ub3RlIj4KICAgICAgICAgICAgICA8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFRoaXMgaXMgYW4gaW5mb3JtYXRpb25hbCBub3RlIHRvIGRyYXcgYXR0ZW50aW9uIHRvIGltcG9ydGFudCBkZXRhaWxzLjwvcD4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYXJrZG93bi1hbGVydCBtYXJrZG93bi1hbGVydC10aXAiPgogICAgICAgICAgICAgIDxwPjxzdHJvbmc+VGlwOjwvc3Ryb25nPiBIZXJlJ3MgYSBoZWxwZnVsIHRpcCB0byBpbXByb3ZlIHlvdXIgd29ya2Zsb3cuPC9wPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWFsZXJ0IG1hcmtkb3duLWFsZXJ0LWltcG9ydGFudCI+CiAgICAgICAgICAgICAgPHA+PHN0cm9uZz5JbXBvcnRhbnQ6PC9zdHJvbmc+IFRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgdG9waWMuPC9wPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWFsZXJ0IG1hcmtkb3duLWFsZXJ0LXdhcm5pbmciPgogICAgICAgICAgICAgIDxwPjxzdHJvbmc+V2FybmluZzo8L3N0cm9uZz4gQmUgY2FyZWZ1bCB3aGVuIHBlcmZvcm1pbmcgdGhpcyBhY3Rpb24uPC9wPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWFsZXJ0IG1hcmtkb3duLWFsZXJ0LWNhdXRpb24iPgogICAgICAgICAgICAgIDxwPjxzdHJvbmc+Q2F1dGlvbjo8L3N0cm9uZz4gVGhpcyBhY3Rpb24gbWF5IGhhdmUgdW5pbnRlbmRlZCBjb25zZXF1ZW5jZXMuPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIGApfX0KICAgICAgPgogICAgICAgIDxkZWVzLXdvcmtzcGFjZS1tYXJrZG93bm91dGxldD48L2RlZXMtd29ya3NwYWNlLW1hcmtkb3dub3V0bGV0PgogICAgICA8L2RlZXMtcGFuZWw+CgogICAgICA8IS0tIERlbW8gNzogRnVsbCBEb2N1bWVudCAtLT4KICAgICAgPGRlZXMtcGFuZWwKICAgICAgICAudGl0bGU9JHsiRnVsbCBEb2N1bWVudCJ9CiAgICAgICAgLnN1YnRpdGxlPSR7IkEgY29tcGxldGUgbWFya2Rvd24gZG9jdW1lbnQgZXhhbXBsZSJ9CiAgICAgICAgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e2F3YWl0IHMucXVlcnlTZWxlY3RvcigiZGVlcy13b3Jrc3BhY2UtbWFya2Rvd25vdXRsZXQiKT8udXBkYXRlSHRtbFRleHQoYAogICAgICAgICAgICA8aDE+R2V0dGluZyBTdGFydGVkIEd1aWRlPC9oMT4KICAgICAgICAgICAgPHA+V2VsY29tZSB0byB0aGUgPHN0cm9uZz5kZWVzLWNhdGFsb2c8L3N0cm9uZz4gY29tcG9uZW50IGxpYnJhcnkuIFRoaXMgZ3VpZGUgd2lsbCBoZWxwIHlvdSBnZXQgdXAgYW5kIHJ1bm5pbmcgcXVpY2tseS48L3A+CgogICAgICAgICAgICA8aDI+SW5zdGFsbGF0aW9uPC9oMj4KICAgICAgICAgICAgPHA+SW5zdGFsbCB0aGUgcGFja2FnZSB1c2luZyB5b3VyIHByZWZlcnJlZCBwYWNrYWdlIG1hbmFnZXI6PC9wPgogICAgICAgICAgICA8cHJlPjxjb2RlPjxzcGFuIGNsYXNzPSJobGpzLWNvbW1lbnQiPiMgVXNpbmcgcG5wbSAocmVjb21tZW5kZWQpPC9zcGFuPgpwbnBtIGFkZCBAZGVzaWduLmVzdGF0ZS9kZWVzLWNhdGFsb2cKCjxzcGFuIGNsYXNzPSJobGpzLWNvbW1lbnQiPiMgVXNpbmcgbnBtPC9zcGFuPgpucG0gaW5zdGFsbCBAZGVzaWduLmVzdGF0ZS9kZWVzLWNhdGFsb2c8L2NvZGU+PC9wcmU+CgogICAgICAgICAgICA8aDI+QmFzaWMgVXNhZ2U8L2gyPgogICAgICAgICAgICA8cD5JbXBvcnQgYW5kIHVzZSBjb21wb25lbnRzIGluIHlvdXIgVHlwZVNjcmlwdCBmaWxlczo8L3A+CiAgICAgICAgICAgIDxwcmU+PGNvZGU+PHNwYW4gY2xhc3M9ImhsanMta2V5d29yZCI+aW1wb3J0PC9zcGFuPiB7IERlZXNCdXR0b24gfSA8c3BhbiBjbGFzcz0iaGxqcy1rZXl3b3JkIj5mcm9tPC9zcGFuPiA8c3BhbiBjbGFzcz0iaGxqcy1zdHJpbmciPidAZGVzaWduLmVzdGF0ZS9kZWVzLWNhdGFsb2cnPC9zcGFuPjsKCjxzcGFuIGNsYXNzPSJobGpzLWNvbW1lbnQiPi8vIFVzZSBpbiB5b3VyIHRlbXBsYXRlczwvc3Bhbj4KaHRtbFxgJmx0O2RlZXMtYnV0dG9uJmd0O0NsaWNrIG1lJmx0Oy9kZWVzLWJ1dHRvbiZndDtcYDwvY29kZT48L3ByZT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWFsZXJ0IG1hcmtkb3duLWFsZXJ0LXRpcCI+CiAgICAgICAgICAgICAgPHA+PHN0cm9uZz5UaXA6PC9zdHJvbmc+IENoZWNrIHRoZSBkZW1vIHNob3djYXNlIGZvciBsaXZlIGV4YW1wbGVzIG9mIGFsbCBjb21wb25lbnRzLjwvcD4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8aDI+QXZhaWxhYmxlIENvbXBvbmVudHM8L2gyPgogICAgICAgICAgICA8dGFibGU+CiAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGg+Q29tcG9uZW50PC90aD4KICAgICAgICAgICAgICAgICAgPHRoPkRlc2NyaXB0aW9uPC90aD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD48Y29kZT5kZWVzLWJ1dHRvbjwvY29kZT48L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+UHJpbWFyeSBidXR0b24gY29tcG9uZW50PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD48Y29kZT5kZWVzLWlucHV0LXRleHQ8L2NvZGU+PC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPlRleHQgaW5wdXQgZmllbGQ8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPjxjb2RlPmRlZXMtdGFibGU8L2NvZGU+PC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPkRhdGEgdGFibGUgd2l0aCBzb3J0aW5nPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD48Y29kZT5kZWVzLW1vZGFsPC9jb2RlPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5Nb2RhbCBkaWFsb2c8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICA8L3RhYmxlPgoKICAgICAgICAgICAgPGgyPk5leHQgU3RlcHM8L2gyPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgPGxpPkV4cGxvcmUgdGhlIDxhIGhyZWY9IiMiPmNvbXBvbmVudCBkb2N1bWVudGF0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgPGxpPkNoZWNrIG91dCB0aGUgPGEgaHJlZj0iIyI+dGhlbWluZyBndWlkZTwvYT48L2xpPgogICAgICAgICAgICAgIDxsaT5Kb2luIG91ciA8YSBocmVmPSIjIj5jb21tdW5pdHkgRGlzY29yZDwvYT48L2xpPgogICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgPGJsb2NrcXVvdGU+CiAgICAgICAgICAgICAgPHA+IlRoZSBiZXN0IGNvbXBvbmVudCBsaWJyYXJ5IGlzIG9uZSB0aGF0IGdldHMgb3V0IG9mIHlvdXIgd2F5LiIgXHUyMDE0IERlc2lnbiBTeXN0ZW1zIFRlYW08L3A+CiAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KICAgICAgICAgIGApfX0KICAgICAgPgogICAgICAgIDxkZWVzLXdvcmtzcGFjZS1tYXJrZG93bm91dGxldD48L2RlZXMtd29ya3NwYWNlLW1hcmtkb3dub3V0bGV0PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2Rpdj4KICA8L2RlZXMtZGVtb3dyYXBwZXI+CmAsImRlbW9GdW5jIil9KTt2YXIgX1FhLE1RYSxTN2EsXzdhPWcoKCk9PntwZSgpO3B0KCk7azdhKCk7X1FhPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxNUWE9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LFM3YT0oKCk9PntsZXQgcz1bbmUoImRlZXMtd29ya3NwYWNlLW1hcmtkb3dub3V0bGV0IildLGUsdD1bXSxhLHI9d2U7dmFyIG49Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNXb3Jrc3BhY2VNYXJrZG93bm91dGxldCIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBvPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO19RYShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpvfSxudWxsLHQpLG49YT1lLnZhbHVlLG8mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6b30pfXN0YXRpYyBkZW1vPXc3YTtzdGF0aWMgZGVtb0dyb3Vwcz1bIldvcmtzcGFjZSJdO3N0YXRpYyBzdHlsZXM9W0hlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgJ05vdG8gU2FucycsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMjQyOTJmIiwiI2U2ZWRmMyIpfTsKICAgICAgfQoKICAgICAgLm91dGxldCB7CiAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgICB9CgogICAgICAvKiBIZWFkaW5ncyAqLwogICAgICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHsKICAgICAgICBtYXJnaW4tdG9wOiAyNHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBsaW5lLWhlaWdodDogMS4yNTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxZjIzMjgiLCIjZjBmNmZjIil9OwogICAgICB9CgogICAgICBoMSB7CiAgICAgICAgZm9udC1zaXplOiAyZW07CiAgICAgICAgcGFkZGluZy1ib3R0b206IDAuM2VtOwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2QxZDllMCIsIiMzMDM2M2QiKX07CiAgICAgIH0KCiAgICAgIGgyIHsKICAgICAgICBmb250LXNpemU6IDEuNWVtOwogICAgICAgIHBhZGRpbmctYm90dG9tOiAwLjNlbTsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNkMWQ5ZTAiLCIjMzAzNjNkIil9OwogICAgICB9CgogICAgICBoMyB7CiAgICAgICAgZm9udC1zaXplOiAxLjI1ZW07CiAgICAgIH0KCiAgICAgIGg0IHsKICAgICAgICBmb250LXNpemU6IDFlbTsKICAgICAgfQoKICAgICAgaDUgewogICAgICAgIGZvbnQtc2l6ZTogMC44NzVlbTsKICAgICAgfQoKICAgICAgaDYgewogICAgICAgIGZvbnQtc2l6ZTogMC44NWVtOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzY1NmQ3NiIsIiM4Yjk0OWUiKX07CiAgICAgIH0KCiAgICAgIC8qIFBhcmFncmFwaHMgYW5kIHRleHQgKi8KICAgICAgcCB7CiAgICAgICAgbWFyZ2luLXRvcDogMDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICB9CgogICAgICAvKiBMaW5rcyAqLwogICAgICBhIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTY5ZGEiLCIjNThhNmZmIil9OwogICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgfQoKICAgICAgYTpob3ZlciB7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICAgIH0KCiAgICAgIC8qIFN0cm9uZyBhbmQgZW1waGFzaXMgKi8KICAgICAgc3Ryb25nIHsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzFmMjMyOCIsIiNmMGY2ZmMiKX07CiAgICAgIH0KCiAgICAgIGVtIHsKICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgIH0KCiAgICAgIC8qIExpc3RzICovCiAgICAgIHVsLCBvbCB7CiAgICAgICAgbWFyZ2luLXRvcDogMDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICAgIHBhZGRpbmctbGVmdDogMmVtOwogICAgICB9CgogICAgICBsaSB7CiAgICAgICAgbWFyZ2luLXRvcDogNHB4OwogICAgICB9CgogICAgICBsaSArIGxpIHsKICAgICAgICBtYXJnaW4tdG9wOiA0cHg7CiAgICAgIH0KCiAgICAgIHVsIHVsLCB1bCBvbCwgb2wgdWwsIG9sIG9sIHsKICAgICAgICBtYXJnaW4tdG9wOiAwOwogICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgIH0KCiAgICAgIC8qIEJsb2NrcXVvdGVzICovCiAgICAgIGJsb2NrcXVvdGUgewogICAgICAgIG1hcmdpbjogMCAwIDE2cHggMDsKICAgICAgICBwYWRkaW5nOiAwIDFlbTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM2NTZkNzYiLCIjOGI5NDllIil9OwogICAgICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgJHtoLmJkVGhlbWUoIiNkMWQ5ZTAiLCIjMzAzNjNkIil9OwogICAgICB9CgogICAgICBibG9ja3F1b3RlID4gOmZpcnN0LWNoaWxkIHsKICAgICAgICBtYXJnaW4tdG9wOiAwOwogICAgICB9CgogICAgICBibG9ja3F1b3RlID4gOmxhc3QtY2hpbGQgewogICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgIH0KCiAgICAgIC8qIElubGluZSBjb2RlICovCiAgICAgIGNvZGUgewogICAgICAgIHBhZGRpbmc6IDAuMmVtIDAuNGVtOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBmb250LXNpemU6IDg1JTsKICAgICAgICBmb250LWZhbWlseTogdWktbW9ub3NwYWNlLCBTRk1vbm8tUmVndWxhciwgJ1NGIE1vbm8nLCBNZW5sbywgQ29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLCBtb25vc3BhY2U7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtoLmJkVGhlbWUoInJnYmEoMTc1LCAxODQsIDE5MywgMC4yKSIsInJnYmEoMTEwLCAxMTgsIDEyOSwgMC40KSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgd2hpdGUtc3BhY2U6IGJyZWFrLXNwYWNlczsKICAgICAgfQoKICAgICAgLyogQ29kZSBibG9ja3MgKi8KICAgICAgcHJlIHsKICAgICAgICBtYXJnaW4tdG9wOiAwOwogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgICBvdmVyZmxvdzogYXV0bzsKICAgICAgICBmb250LXNpemU6IDg1JTsKICAgICAgICBsaW5lLWhlaWdodDogMS40NTsKICAgICAgICBmb250LWZhbWlseTogdWktbW9ub3NwYWNlLCBTRk1vbm8tUmVndWxhciwgJ1NGIE1vbm8nLCBNZW5sbywgQ29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLCBtb25vc3BhY2U7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtoLmJkVGhlbWUoIiNmNmY4ZmEiLCIjMTYxYjIyIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICB3b3JkLXdyYXA6IG5vcm1hbDsKICAgICAgfQoKICAgICAgcHJlIGNvZGUgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0OwogICAgICAgIHdvcmQtd3JhcDogbm9ybWFsOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogMDsKICAgICAgICBmb250LXNpemU6IDEwMCU7CiAgICAgICAgd2hpdGUtc3BhY2U6IHByZTsKICAgICAgfQoKICAgICAgLyogVGFibGVzICovCiAgICAgIHRhYmxlIHsKICAgICAgICB3aWR0aDogbWF4LWNvbnRlbnQ7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICAgIG1hcmdpbi10b3A6IDA7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgICBib3JkZXItc3BhY2luZzogMDsKICAgICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwogICAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICB0YWJsZSB0aCB7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBwYWRkaW5nOiA2cHggMTNweDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2QxZDllMCIsIiMzMDM2M2QiKX07CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtoLmJkVGhlbWUoIiNmNmY4ZmEiLCIjMTYxYjIyIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzFmMjMyOCIsIiNlNmVkZjMiKX07CiAgICAgIH0KCiAgICAgIHRhYmxlIHRkIHsKICAgICAgICBwYWRkaW5nOiA2cHggMTNweDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2QxZDllMCIsIiMzMDM2M2QiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMWYyMzI4IiwiI2U2ZWRmMyIpfTsKICAgICAgfQoKICAgICAgdGFibGUgdHIgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzBkMTExNyIpfTsKICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNkMWQ5ZTAiLCIjMjEyNjJkIil9OwogICAgICB9CgogICAgICB0YWJsZSB0cjpudGgtY2hpbGQoMm4pIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke2guYmRUaGVtZSgiI2Y2ZjhmYSIsIiMxNjFiMjIiKX07CiAgICAgIH0KCiAgICAgIC8qIEhvcml6b250YWwgcnVsZXMgKi8KICAgICAgaHIgewogICAgICAgIGhlaWdodDogNHB4OwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgbWFyZ2luOiAyNHB4IDA7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtoLmJkVGhlbWUoIiNkMWQ5ZTAiLCIjMzAzNjNkIil9OwogICAgICAgIGJvcmRlcjogMDsKICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgIH0KCiAgICAgIC8qIEltYWdlcyAqLwogICAgICBpbWcgewogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgfQoKICAgICAgLyogVGFzayBsaXN0cyAqLwogICAgICAudGFzay1saXN0LWl0ZW0gewogICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsKICAgICAgfQoKICAgICAgLnRhc2stbGlzdC1pdGVtIGlucHV0IHsKICAgICAgICBtYXJnaW46IDAgMC4yZW0gMC4yNWVtIC0xLjRlbTsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgICB9CgogICAgICAvKiBEZWZpbml0aW9uIGxpc3RzICovCiAgICAgIGRsIHsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICB9CgogICAgICBkbCBkdCB7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBtYXJnaW4tdG9wOiAxNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMWVtOwogICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICB9CgogICAgICBkbCBkZCB7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgIH0KCiAgICAgIC8qIEtleWJvYXJkIGlucHV0ICovCiAgICAgIGtiZCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHBhZGRpbmc6IDNweCA1cHg7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGZvbnQtZmFtaWx5OiB1aS1tb25vc3BhY2UsIFNGTW9uby1SZWd1bGFyLCAnU0YgTW9ubycsIE1lbmxvLCBDb25zb2xhcywgJ0xpYmVyYXRpb24gTW9ubycsIG1vbm9zcGFjZTsKICAgICAgICBsaW5lLWhlaWdodDogMTBweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxZjIzMjgiLCIjZTZlZGYzIil9OwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtoLmJkVGhlbWUoIiNmNmY4ZmEiLCIjMTYxYjIyIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZDFkOWUwIiwiIzMwMzYzZCIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAtMXB4IDAgJHtoLmJkVGhlbWUoIiNkMWQ5ZTAiLCIjMzAzNjNkIil9OwogICAgICB9CgogICAgICAvKiBGb290bm90ZXMgKi8KICAgICAgLmZvb3Rub3RlcyB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzY1NmQ3NiIsIiM4Yjk0OWUiKX07CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZDFkOWUwIiwiIzMwMzYzZCIpfTsKICAgICAgICBwYWRkaW5nLXRvcDogMTZweDsKICAgICAgICBtYXJnaW4tdG9wOiAzMnB4OwogICAgICB9CgogICAgICAvKiBBbGVydHMvQWRtb25pdGlvbnMgKi8KICAgICAgLm1hcmtkb3duLWFsZXJ0IHsKICAgICAgICBwYWRkaW5nOiA4cHggMTZweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQ7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICB9CgogICAgICAubWFya2Rvd24tYWxlcnQtbm90ZSB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiIzA5NjlkYSIsIiM1OGE2ZmYiKX07CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtoLmJkVGhlbWUoInJnYmEoOSwgMTA1LCAyMTgsIDAuMSkiLCJyZ2JhKDU2LCAxMzksIDI1MywgMC4xKSIpfTsKICAgICAgfQoKICAgICAgLm1hcmtkb3duLWFsZXJ0LXdhcm5pbmcgewogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiNiZjg3MDAiLCIjZDI5OTIyIil9OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7aC5iZFRoZW1lKCJyZ2JhKDE5MSwgMTM1LCAwLCAwLjEpIiwicmdiYSgxODcsIDEyOCwgOSwgMC4xKSIpfTsKICAgICAgfQoKICAgICAgLm1hcmtkb3duLWFsZXJ0LWltcG9ydGFudCB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiIzgyNTBkZiIsIiNhMzcxZjciKX07CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtoLmJkVGhlbWUoInJnYmEoMTMwLCA4MCwgMjIzLCAwLjEpIiwicmdiYSgxNjMsIDExMywgMjQ3LCAwLjEpIil9OwogICAgICB9CgogICAgICAubWFya2Rvd24tYWxlcnQtY2F1dGlvbiB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiI2NmMjIyZSIsIiNmODUxNDkiKX07CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtoLmJkVGhlbWUoInJnYmEoMjA3LCAzNCwgNDYsIDAuMSkiLCJyZ2JhKDI0OCwgODEsIDczLCAwLjEpIil9OwogICAgICB9CgogICAgICAubWFya2Rvd24tYWxlcnQtdGlwIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjMWE3ZjM3IiwiIzNmYjk1MCIpfTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke2guYmRUaGVtZSgicmdiYSgyNiwgMTI3LCA1NSwgMC4xKSIsInJnYmEoNDYsIDE2MCwgNjcsIDAuMSkiKX07CiAgICAgIH0KCiAgICAgIC8qIFN5bnRheCBoaWdobGlnaHRpbmcgZm9yIGNvZGUgYmxvY2tzICovCiAgICAgIC5obGpzLWNvbW1lbnQsCiAgICAgIC5obGpzLXF1b3RlIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM2YTczN2QiLCIjOGI5NDllIil9OwogICAgICB9CgogICAgICAuaGxqcy1rZXl3b3JkLAogICAgICAuaGxqcy1zZWxlY3Rvci10YWcsCiAgICAgIC5obGpzLWFkZGl0aW9uIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNkNzNhNDkiLCIjZmY3YjcyIil9OwogICAgICB9CgogICAgICAuaGxqcy1udW1iZXIsCiAgICAgIC5obGpzLXN0cmluZywKICAgICAgLmhsanMtbWV0YSAuaGxqcy1tZXRhLXN0cmluZywKICAgICAgLmhsanMtbGl0ZXJhbCwKICAgICAgLmhsanMtZG9jdGFnLAogICAgICAuaGxqcy1yZWdleHAgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzAzMmY2MiIsIiNhNWQ2ZmYiKX07CiAgICAgIH0KCiAgICAgIC5obGpzLXRpdGxlLAogICAgICAuaGxqcy1zZWN0aW9uLAogICAgICAuaGxqcy1uYW1lLAogICAgICAuaGxqcy1zZWxlY3Rvci1pZCwKICAgICAgLmhsanMtc2VsZWN0b3ItY2xhc3MgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzZmNDJjMSIsIiNkMmE4ZmYiKX07CiAgICAgIH0KCiAgICAgIC5obGpzLWF0dHJpYnV0ZSwKICAgICAgLmhsanMtYXR0ciwKICAgICAgLmhsanMtdmFyaWFibGUsCiAgICAgIC5obGpzLXRlbXBsYXRlLXZhcmlhYmxlLAogICAgICAuaGxqcy1jbGFzcyAuaGxqcy10aXRsZSwKICAgICAgLmhsanMtdHlwZSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDA1Y2M1IiwiIzc5YzBmZiIpfTsKICAgICAgfQoKICAgICAgLmhsanMtc3ltYm9sLAogICAgICAuaGxqcy1idWxsZXQsCiAgICAgIC5obGpzLXN1YnN0LAogICAgICAuaGxqcy1tZXRhLAogICAgICAuaGxqcy1tZXRhIC5obGpzLWtleXdvcmQsCiAgICAgIC5obGpzLXNlbGVjdG9yLWF0dHIsCiAgICAgIC5obGpzLXNlbGVjdG9yLXBzZXVkbywKICAgICAgLmhsanMtbGluayB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZTM2MjA5IiwiI2ZmYTY1NyIpfTsKICAgICAgfQoKICAgICAgLmhsanMtYnVpbHRfaW4sCiAgICAgIC5obGpzLWRlbGV0aW9uIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNiMzFkMjgiLCIjZmZhMTk4Iil9OwogICAgICB9CgogICAgICAuaGxqcy1mb3JtdWxhIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke2guYmRUaGVtZSgiI2Y2ZjhmYSIsIiMxNjFiMjIiKX07CiAgICAgIH0KCiAgICAgIC5obGpzLWVtcGhhc2lzIHsKICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgIH0KCiAgICAgIC5obGpzLXN0cm9uZyB7CiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgIH0KICAgIGBdO291dGxldDtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0ib3V0bGV0Ij4KICAgICAgICA8aDE+TWFya2Rvd24gUHJldmlldzwvaDE+CiAgICAgICAgPHA+Q29udGVudCB3aWxsIGFwcGVhciBoZXJlIHdoZW4gbWFya2Rvd24gaXMgcGFyc2VkLjwvcD4KICAgICAgPC9kaXY+CiAgICBgfWFzeW5jIGZpcnN0VXBkYXRlZChvKXthd2FpdCBzdXBlci5maXJzdFVwZGF0ZWQobyksdGhpcy5vdXRsZXQ9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5vdXRsZXQiKX1hc3luYyB1cGRhdGVIdG1sVGV4dChvKXthd2FpdCB0aGlzLnVwZGF0ZUNvbXBsZXRlLHRoaXMub3V0bGV0fHwodGhpcy5vdXRsZXQ9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5vdXRsZXQiKSksdGhpcy5vdXRsZXQuaW5uZXJIVE1MPW99c3RhdGlje01RYShhLHQpfX07cmV0dXJuIG49YX0pKCl9KTt2YXIgTTdhPWcoKCk9PntfN2EoKX0pO3ZhciB6N2E9ZygoKT0+e3FydCgpfSk7dmFyIEM3YT1nKCgpPT57VnJ0KCl9KTt2YXIgVDdhPWcoKCk9PntwN2EoKTtoN2EoKTtmN2EoKTtnN2EoKTtiN2EoKTt5N2EoKTtNN2EoKTt6N2EoKTtDN2EoKX0pO3ZhciAkN2E9ZygoKT0+e30pO3ZhciBEN2E9ZygoKT0+eyQ3YSgpfSk7dmFyIEw3YT1nKCgpPT57cGUoKX0pO3ZhciBFN2E9ZygoKT0+e0w3YSgpfSk7dmFyIFA3YT1nKCgpPT57em4oKTtwdCgpO2RmYSgpO3dmYSgpO3ZtYSgpO0ZtYSgpO2Q2YSgpO2g2YSgpO1A2YSgpO0M1YSgpO1A4YSgpO3E4YSgpO3gxZSgpO0hnYSgpO3I3YSgpO1Q3YSgpO0Q3YSgpO0U3YSgpfSk7dmFyIEk3YSxBN2E9ZygoKT0+e0k3YT17bmFtZToiQGRlc2lnbi5lc3RhdGUvZGVlcy1jYXRhbG9nIix2ZXJzaW9uOiIzLjgyLjAiLGRlc2NyaXB0aW9uOiJBIGNvbXByZWhlbnNpdmUgbGlicmFyeSB0aGF0IHByb3ZpZGVzIGR5bmFtaWMgd2ViIGNvbXBvbmVudHMgZm9yIGJ1aWxkaW5nIHNvcGhpc3RpY2F0ZWQgYW5kIG1vZGVybiB3ZWIgYXBwbGljYXRpb25zIHVzaW5nIEphdmFTY3JpcHQgYW5kIFR5cGVTY3JpcHQuIn19KTt2YXIgZFE9e307eXQoZFEse0NhbnZhc1Bvb2w6KCk9PnN4LERlZXNBY3Rpb25iYXI6KCk9PkJtYSxEZWVzQXBwdWk6KCk9PkozYSxEZWVzQXBwdWlBY3Rpdml0eWxvZzooKT0+c2RhLERlZXNBcHB1aUJhcjooKT0+dmRhLERlZXNBcHB1aUJvdHRvbWJhcjooKT0+a2RhLERlZXNBcHB1aU1haW5jb250ZW50OigpPT5RM2EsRGVlc0FwcHVpTWFpbm1lbnU6KCk9PlUzYSxEZWVzQXBwdWlQcm9maWxlRHJvcGRvd246KCk9PmJkYSxEZWVzQXBwdWlTZWNvbmRhcnltZW51OigpPT5LM2EsRGVlc0FwcHVpVGFiczooKT0+WDNhLERlZXNBdWRpb1ZpZXdlcjooKT0+STVhLERlZXNCYWRnZTooKT0+VW1hLERlZXNCdXR0b246KCk9PkYzYSxEZWVzQnV0dG9uRXhpdDooKT0+aGZhLERlZXNCdXR0b25Hcm91cDooKT0+dmZhLERlZXNDaGFydEFyZWE6KCk9PlRmYSxEZWVzQ2hhcnRCYXI6KCk9PkhmYSxEZWVzQ2hhcnREb251dDooKT0+WWZhLERlZXNDaGFydEdhdWdlOigpPT5zbWEsRGVlc0NoYXJ0TG9nOigpPT5ubWEsRGVlc0NoYXJ0UmFkYXI6KCk9PmdtYSxEZWVzQ2hpcHM6KCk9Pk42YSxEZWVzQ29udGV4dG1lbnU6KCk9PmthLERlZXNEYXNoYm9hcmRncmlkOigpPT50NWEsRGVlc0RhdGF2aWV3Q29kZWJveDooKT0+d21hLERlZXNEYXRhdmlld1N0YXR1c29iamVjdDooKT0+em1hLERlZXNGb3JtOigpPT5OM2EsRGVlc0Zvcm1TdWJtaXQ6KCk9PnZuZSxEZWVzRm9ybWF0dGluZ01lbnU6KCk9PkFuZSxEZWVzSGVhZGluZzooKT0+bjVhLERlZXNIaW50OigpPT5YbWEsRGVlc0ljb246KCk9PlgyYSxEZWVzSW1hZ2VWaWV3ZXI6KCk9PkQ1YSxEZWVzSW5wdXRCYXNlOigpPT5PdCxEZWVzSW5wdXRDaGVja2JveDooKT0+cm5lLERlZXNJbnB1dENvZGU6KCk9PmRuZSxEZWVzSW5wdXREYXRlcGlja2VyOigpPT5wbmUsRGVlc0lucHV0RGF0ZXBpY2tlclBvcHVwOigpPT51bmUsRGVlc0lucHV0RHJvcGRvd246KCk9PnluZSxEZWVzSW5wdXREcm9wZG93blBvcHVwOigpPT54bmUsRGVlc0lucHV0RmlsZXVwbG9hZDooKT0+a25lLERlZXNJbnB1dEliYW46KCk9Pk1uZSxEZWVzSW5wdXRMaXN0OigpPT5FbmUsRGVlc0lucHV0TXVsdGl0b2dnbGU6KCk9PnpuZSxEZWVzSW5wdXRQaG9uZTooKT0+VG5lLERlZXNJbnB1dFByb2ZpbGVQaWN0dXJlOigpPT5FNmEsRGVlc0lucHV0UXVhbnRpdHlTZWxlY3RvcjooKT0+bW5lLERlZXNJbnB1dFJhZGlvZ3JvdXA6KCk9PmduZSxEZWVzSW5wdXRSaWNodGV4dDooKT0+WWNlLERlZXNJbnB1dFRhZ3M6KCk9PkxuZSxEZWVzSW5wdXRUZXh0OigpPT5mbmUsRGVlc0lucHV0VG9nZ2xlOigpPT4kbmUsRGVlc0lucHV0VHlwZWxpc3Q6KCk9PkRuZSxEZWVzSW5wdXRXeXNpd3lnOigpPT5IWCxEZWVzTGFiZWw6KCk9PkJkYSxEZWVzTW9iaWxlbmF2aWdhdGlvbjooKT0+bmZhLERlZXNNb2RhbDooKT0+UWEsRGVlc1BhZ2luYXRpb246KCk9Pmg1YSxEZWVzUGFuZWw6KCk9PkNkYSxEZWVzUGRmVmlld2VyOigpPT5WNWEsRGVlc1ByZXZpZXc6KCk9Pks1YSxEZWVzUHJvZ3Jlc3NiYXI6KCk9PmE2YSxEZWVzU2VhcmNoYmFyOigpPT5XZ2EsRGVlc1NldHRpbmdzOigpPT54NWEsRGVlc1Nob3BwaW5nUHJvZHVjdGNhcmQ6KCk9PlFkYSxEZWVzU2ltcGxlQXBwRGFzaDooKT0+RWdhLERlZXNTaW1wbGVMb2dpbjooKT0+T2dhLERlZXNTbGFzaE1lbnU6KCk9PlBuZSxEZWVzU3BlZWNoYnViYmxlOigpPT5POGEsRGVlc1NwaW5uZXI6KCk9Pmk2YSxEZWVzU3RhdHNHcmlkOigpPT5CM2EsRGVlc1N0ZXBwZXI6KCk9PmF4LERlZXNTdG9yYWdlQnJvd3NlcjooKT0+Tm1hLERlZXNTdG9yYWdlQ29sdW1uczooKT0+UG1hLERlZXNTdG9yYWdlS2V5czooKT0+SW1hLERlZXNTdG9yYWdlUHJldmlldzooKT0+QW1hLERlZXNUYWJsZTooKT0+WGNlLERlZXNUaGVtZTooKT0+WGdhLERlZXNUaHVtYm5haWxBdWRpbzooKT0+ZjhhLERlZXNUaHVtYm5haWxCYXNlOigpPT5IbixEZWVzVGh1bWJuYWlsRm9sZGVyOigpPT5EOGEsRGVlc1RodW1ibmFpbEltYWdlOigpPT5jOGEsRGVlc1RodW1ibmFpbE5vdGU6KCk9Pl84YSxEZWVzVGh1bWJuYWlsUGRmOigpPT5pOGEsRGVlc1RodW1ibmFpbFZpZGVvOigpPT54OGEsRGVlc1RpbGU6KCk9PlJkYSxEZWVzVG9hc3Q6KCk9Pm1zLERlZXNVcGRhdGVyOigpPT55MWUsRGVlc1ZpZGVvVmlld2VyOigpPT5PNWEsRGVlc1dpbmRvd0NvbnRyb2xzOigpPT5nZGEsRGVlc1dpbmRvd0xheWVyOigpPT5obyxEZWVzV29ya3NwYWNlOigpPT5kN2EsRGVlc1dvcmtzcGFjZUJvdHRvbWJhcjooKT0+bDdhLERlZXNXb3Jrc3BhY2VEaWZmRWRpdG9yOigpPT5jN2EsRGVlc1dvcmtzcGFjZUZpbGV0cmVlOigpPT5vN2EsRGVlc1dvcmtzcGFjZU1hcmtkb3duOigpPT52N2EsRGVlc1dvcmtzcGFjZU1hcmtkb3dub3V0bGV0OigpPT5TN2EsRGVlc1dvcmtzcGFjZU1vbmFjbzooKT0+SGRhLERlZXNXb3Jrc3BhY2VUZXJtaW5hbDooKT0+SXJ0LERlZXNXb3Jrc3BhY2VUZXJtaW5hbFByZXZpZXc6KCk9Pm43YSxEZWVzV3lzaXd5Z0Jsb2NrOigpPT5tM2EsUFJPR1JBTU1JTkdfTEFOR1VBR0VTOigpPT5MWixQZGZNYW5hZ2VyOigpPT5HZCxQZXJmb3JtYW5jZU1vbml0b3I6KCk9Pml4LFRlcm1pbmFsVGFiTWFuYWdlcjooKT0+clEsVHlwZVNjcmlwdEludGVsbGlTZW5zZU1hbmFnZXI6KCk9PmxRLFZpZXdSZWdpc3RyeTooKT0+cVgsV2ViQ29udGFpbmVyRW52aXJvbm1lbnQ6KCk9PlRnLFd5c2l3eWdCbG9ja09wZXJhdGlvbnM6KCk9PkVaLFd5c2l3eWdCbG9ja3M6KCk9PkNvLFd5c2l3eWdDb252ZXJ0ZXJzOigpPT5SYyxXeXNpd3lnRHJhZ0Ryb3BIYW5kbGVyOigpPT5PWCxXeXNpd3lnRm9ybWF0dGluZzooKT0+c3UsV3lzaXd5Z0hpc3Rvcnk6KCk9PkZYLFd5c2l3eWdJbnB1dEhhbmRsZXI6KCk9Pk5YLFd5c2l3eWdLZXlib2FyZEhhbmRsZXI6KCk9PlJYLFd5c2l3eWdNb2RhbE1hbmFnZXI6KCk9PkFYLFd5c2l3eWdTZWxlY3Rpb246KCk9PlN0LFd5c2l3eWdTaG9ydGN1dHM6KCk9PmNyLFpJbmRleFJlZ2lzdHJ5OigpPT5JcmUsY29sb3JzOigpPT5udixjb21taXRpbmZvOigpPT5JN2EsY29tcG9uZW50WkluZGV4OigpPT5OcWEsZGVib3VuY2U6KCk9PllYYSxmb3JtYXRDb3VudDooKT0+RW1hLGZvcm1hdEZpbGVTaXplOigpPT5ycnQsZm9ybWF0U2l6ZTooKT0+UXYsZ2V0Q29udGVudFR5cGU6KCk9PldoLGdldERlZmF1bHRDb250ZW50OigpPT5leCxnZXRGaWxlTmFtZTooKT0+RmEsZ2V0UGFyZW50UHJlZml4OigpPT5sMixnZXRQYXRoU2VnbWVudHM6KCk9PnlnLGdldFpJbmRleDooKT0+QXFhLGljb25zOigpPT5hbmUsaXNJblZpZXdwb3J0OigpPT5YWGEscmVnaXN0ZXJBbGxCbG9ja0hhbmRsZXJzOigpPT5kM2EsdGhlbWVEZWZhdWx0U3R5bGVzOigpPT5IZSx0aGVtZURlZmF1bHRzOigpPT5XbCx0aHJvdHRsZTooKT0+WlhhLHRodW1ibmFpbEJhc2VTdHlsZXM6KCk9PnBuLHZhbGlkYXRlTW92ZTooKT0+SnYsd3lzaXd5Z1N0eWxlczooKT0+bnR0LHpJbmRleExheWVyczooKT0+V3IsekluZGV4UmVnaXN0cnk6KCk9PnhhfSk7dmFyIE43YT1nKCgpPT57UDdhKCk7RzEoKTtBN2EoKX0pO3ZhciBVcnQsdVEselFhLFdydD1nKCgpPT57cGUoKTtVcnQ9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LHVRPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSx6UWE9KCgpPT57bGV0IHM9W25lKCJzei1yZXNvdXJjZS11c2FnZS1jYXJkIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W107dmFyIGM9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIlN6UmVzb3VyY2VVc2FnZUNhcmQiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgYj10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOk9iamVjdH0pXSxwPVtMKHt0eXBlOlN0cmluZ30pXSxVcnQodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJkYXRhIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHY9PiJkYXRhImluIHYsImhhcyIpLGdldDppKHY9PnYuZGF0YSwiZ2V0Iiksc2V0OmkoKHYseCk9Pnt2LmRhdGE9eH0sInNldCIpfSxtZXRhZGF0YTpifSxvLGwpLFVydCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlcnZpY2VDb3VudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh2PT4ic2VydmljZUNvdW50ImluIHYsImhhcyIpLGdldDppKHY9PnYuc2VydmljZUNvdW50LCJnZXQiKSxzZXQ6aSgodix4KT0+e3Yuc2VydmljZUNvdW50PXh9LCJzZXQiKX0sbWV0YWRhdGE6Yn0sZCx1KSxVcnQobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6Yn0sbnVsbCx0KSxjPWE9ZS52YWx1ZSxiJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KX1zdGF0aWMgZGVtbz1pKCgpPT53YAogICAgPGRpdiBzdHlsZT0icGFkZGluZzogMjRweDsgbWF4LXdpZHRoOiA4MDBweDsiPgogICAgICA8c3otcmVzb3VyY2UtdXNhZ2UtY2FyZAogICAgICAgIC5kYXRhPSR7e2NwdTouNSxtZW1vcnlVc2VkOiIxOTEgTUIiLG1lbW9yeVRvdGFsOiI0MjkuMiBHQiIsbmV0d29ya0luOiIzOC45IEtCL3MiLG5ldHdvcmtPdXQ6IjEuNyBLQi9zIix0b3BDb25zdW1lcnM6W3tuYW1lOiJ0ZXN0LW5naW54IixtZW1vcnk6IjMyLjEgTUIifSx7bmFtZToidGVzdC12MiIsbWVtb3J5OiIzMS43IE1CIn1dfX0KICAgICAgICBzZXJ2aWNlQ291bnQ9IjciCiAgICAgID48L3N6LXJlc291cmNlLXVzYWdlLWNhcmQ+CiAgICA8L2Rpdj4KICBgLCJkZW1vIik7c3RhdGljIGRlbW9Hcm91cHM9WyJEYXNoYm9hcmQiXTsjZT11USh0aGlzLG8se2NwdTowLG1lbW9yeVVzZWQ6IjAgTUIiLG1lbW9yeVRvdGFsOiIwIEdCIixuZXR3b3JrSW46IjAgS0IvcyIsbmV0d29ya091dDoiMCBLQi9zIix0b3BDb25zdW1lcnM6W119KTtnZXQgZGF0YSgpe3JldHVybiB0aGlzLiNlfXNldCBkYXRhKGIpe3RoaXMuI2U9Yn0jdD0odVEodGhpcyxsKSx1USh0aGlzLGQsIjAiKSk7Z2V0IHNlcnZpY2VDb3VudCgpe3JldHVybiB0aGlzLiN0fXNldCBzZXJ2aWNlQ291bnQoYil7dGhpcy4jdD1ifXN0YXRpYyBzdHlsZXM9W2guZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CgogICAgICAuY2FyZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDkwOTBiIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTRlNGU3IiwiIzI3MjcyYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgcGFkZGluZzogMjBweDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLmhlYWRlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgfQoKICAgICAgLnRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAuc3VidGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICAgIG1hcmdpbi10b3A6IDJweDsKICAgICAgfQoKICAgICAgLnZpZXctYWxsIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzYwYTVmYSIpfTsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICB9CgogICAgICAudmlldy1hbGw6aG92ZXIgewogICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogICAgICB9CgogICAgICAubWV0cmljcyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMTZweDsKICAgICAgfQoKICAgICAgLm1ldHJpYy1yb3cgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDZweDsKICAgICAgfQoKICAgICAgLm1ldHJpYy1oZWFkZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5tZXRyaWMtbGFiZWwgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICB9CgogICAgICAubWV0cmljLXZhbHVlIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLnByb2dyZXNzLWJhciB7CiAgICAgICAgaGVpZ2h0OiA2cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMjcyNzJhIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAucHJvZ3Jlc3MtZmlsbCB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzYwYTVmYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgICAgdHJhbnNpdGlvbjogd2lkdGggMzAwbXMgZWFzZTsKICAgICAgfQoKICAgICAgLm5ldHdvcmstcm93IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGdhcDogMTZweDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICB9CgogICAgICAubmV0d29yay1pdGVtIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA0cHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgIH0KCiAgICAgIC5uZXR3b3JrLWljb24gewogICAgICAgIHdpZHRoOiAxNHB4OwogICAgICAgIGhlaWdodDogMTRweDsKICAgICAgfQoKICAgICAgLm5ldHdvcmstaWNvbi5kb3duIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxNmEzNGEiLCIjMjJjNTVlIil9OwogICAgICB9CgogICAgICAubmV0d29yay1pY29uLnVwIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzYjgyZjYiLCIjNjBhNWZhIil9OwogICAgICB9CgogICAgICAudG9wLWNvbnN1bWVycyB7CiAgICAgICAgbWFyZ2luLXRvcDogOHB4OwogICAgICAgIHBhZGRpbmctdG9wOiAxMnB4OwogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMyNzI3MmEiKX07CiAgICAgIH0KCiAgICAgIC5jb25zdW1lcnMtbGFiZWwgewogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICAgIG1hcmdpbi1ib3R0b206IDZweDsKICAgICAgfQoKICAgICAgLmNvbnN1bWVycy1saXN0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICBnYXA6IDEycHg7CiAgICAgIH0KCiAgICAgIC5jb25zdW1lci1pdGVtIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLmNvbnN1bWVyLW5hbWUgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJjYXJkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPlJlc291cmNlIFVzYWdlPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1YnRpdGxlIj5BZ2dyZWdhdGVkIGFjcm9zcyAke3RoaXMuc2VydmljZUNvdW50fSBzZXJ2aWNlczwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8YSBjbGFzcz0idmlldy1hbGwiPlZpZXcgQWxsPC9hPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJtZXRyaWNzIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im1ldHJpYy1yb3ciPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXRyaWMtaGVhZGVyIj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibWV0cmljLWxhYmVsIj5DUFU8L3NwYW4+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1ldHJpYy12YWx1ZSI+JHt0aGlzLmRhdGEuY3B1LnRvRml4ZWQoMSl9JTwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWJhciI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtZmlsbCIgc3R5bGU9IndpZHRoOiAke01hdGgubWluKHRoaXMuZGF0YS5jcHUsMTAwKX0lIj48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXRyaWMtcm93Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWV0cmljLWhlYWRlciI+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1ldHJpYy1sYWJlbCI+TWVtb3J5PC9zcGFuPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJtZXRyaWMtdmFsdWUiPiR7dGhpcy5kYXRhLm1lbW9yeVVzZWR9IC8gJHt0aGlzLmRhdGEubWVtb3J5VG90YWx9PC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1maWxsIiBzdHlsZT0id2lkdGg6ICR7dGhpcy5jYWxjdWxhdGVNZW1vcnlQZXJjZW50KCl9JSI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CgogICAgICAgICAgPGRpdiBjbGFzcz0ibWV0cmljLXJvdyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1ldHJpYy1oZWFkZXIiPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJtZXRyaWMtbGFiZWwiPk5ldHdvcms8L3NwYW4+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmV0d29yay1yb3ciPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im5ldHdvcmstaXRlbSI+CiAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im5ldHdvcmstaWNvbiBkb3duIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMiA1djE0TTE5IDEybC03IDctNy03Ii8+CiAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAke3RoaXMuZGF0YS5uZXR3b3JrSW59CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibmV0d29yay1pdGVtIj4KICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ibmV0d29yay1pY29uIHVwIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMiAxOVY1TTUgMTJsNy03IDcgNyIvPgogICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgJHt0aGlzLmRhdGEubmV0d29ya091dH0KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgJHt0aGlzLmRhdGEudG9wQ29uc3VtZXJzLmxlbmd0aD4wP3dgCiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3AtY29uc3VtZXJzIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29uc3VtZXJzLWxhYmVsIj5Ub3AgY29uc3VtZXJzPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnN1bWVycy1saXN0Ij4KICAgICAgICAgICAgICAke3RoaXMuZGF0YS50b3BDb25zdW1lcnMubWFwKGI9PndgCiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb25zdW1lci1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29uc3VtZXItbmFtZSI+JHtiLm5hbWV9Ojwvc3Bhbj4gJHtiLm1lbW9yeX0KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgYCl9CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgYDoiIn0KICAgICAgPC9kaXY+CiAgICBgfWNhbGN1bGF0ZU1lbW9yeVBlcmNlbnQoKXtsZXQgYj1wYXJzZUZsb2F0KHRoaXMuZGF0YS5tZW1vcnlVc2VkKSx2PXBhcnNlRmxvYXQodGhpcy5kYXRhLm1lbW9yeVRvdGFsKTtyZXR1cm4gdj09PTA/MDpNYXRoLm1pbihiL3YqMTAwLDEwMCl9Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHVRKHRoaXMsdSl9c3RhdGlje3VRKGEsdCl9fTtyZXR1cm4gYz1hfSkoKX0pO3ZhciBSN2EsR3J0LENRYSxLcnQ9ZygoKT0+e3BlKCk7UjdhPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxHcnQ9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LENRYT0oKCk9PntsZXQgcz1bbmUoInN6LXRyYWZmaWMtY2FyZCIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdO3ZhciBwPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJTelRyYWZmaWNDYXJkIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpPYmplY3R9KV0sUjdhKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZGF0YSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh1PT4iZGF0YSJpbiB1LCJoYXMiKSxnZXQ6aSh1PT51LmRhdGEsImdldCIpLHNldDppKCh1LGMpPT57dS5kYXRhPWN9LCJzZXQiKX0sbWV0YWRhdGE6ZH0sbyxsKSxSN2EobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6ZH0sbnVsbCx0KSxwPWE9ZS52YWx1ZSxkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmR9KX1zdGF0aWMgZGVtbz1pKCgpPT53YAogICAgPGRpdiBzdHlsZT0icGFkZGluZzogMjRweDsgbWF4LXdpZHRoOiA1MDBweDsiPgogICAgICA8c3otdHJhZmZpYy1jYXJkCiAgICAgICAgLmRhdGE9JHt7cmVxdWVzdHM6MTI1MCxlcnJvcnM6MTUsZXJyb3JQZXJjZW50OjEuMixhdmdSZXNwb25zZToxNDUscmVxUGVyTWluOjIxLHN0YXR1czJ4eDo4NSxzdGF0dXMzeHg6NSxzdGF0dXM0eHg6OCxzdGF0dXM1eHg6Mn19CiAgICAgID48L3N6LXRyYWZmaWMtY2FyZD4KICAgIDwvZGl2PgogIGAsImRlbW8iKTtzdGF0aWMgZGVtb0dyb3Vwcz1bIkRhc2hib2FyZCJdOyNlPUdydCh0aGlzLG8se3JlcXVlc3RzOjAsZXJyb3JzOjAsZXJyb3JQZXJjZW50OjAsYXZnUmVzcG9uc2U6MCxyZXFQZXJNaW46MCxzdGF0dXMyeHg6MCxzdGF0dXMzeHg6MCxzdGF0dXM0eHg6MCxzdGF0dXM1eHg6MH0pO2dldCBkYXRhKCl7cmV0dXJuIHRoaXMuI2V9c2V0IGRhdGEoZCl7dGhpcy4jZT1kfXN0YXRpYyBzdHlsZXM9W2guZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CgogICAgICAuY2FyZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDkwOTBiIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTRlNGU3IiwiIzI3MjcyYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgcGFkZGluZzogMjBweDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLmhlYWRlciB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgfQoKICAgICAgLnRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAuc3VidGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICAgIG1hcmdpbi10b3A6IDJweDsKICAgICAgfQoKICAgICAgLm1ldHJpY3MgewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTsKICAgICAgICBnYXA6IDE2cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgfQoKICAgICAgLm1ldHJpYyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMnB4OwogICAgICB9CgogICAgICAubWV0cmljLWxhYmVsIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQoKICAgICAgLm1ldHJpYy12YWx1ZSB7CiAgICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLnN0YXR1cy1iYXItY29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nLXRvcDogMTJweDsKICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMjcyNzJhIil9OwogICAgICB9CgogICAgICAuc3RhdHVzLWJhciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBoZWlnaHQ6IDhweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMyNzI3MmEiKX07CiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICB9CgogICAgICAuc3RhdHVzLXNlZ21lbnQgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB0cmFuc2l0aW9uOiB3aWR0aCAzMDBtcyBlYXNlOwogICAgICB9CgogICAgICAuc3RhdHVzLTJ4eCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiMyMmM1NWUiLCIjMjJjNTVlIil9OwogICAgICB9CgogICAgICAuc3RhdHVzLTN4eCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiMzYjgyZjYiLCIjNjBhNWZhIil9OwogICAgICB9CgogICAgICAuc3RhdHVzLTR4eCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmYWNjMTUiLCIjZmFjYzE1Iil9OwogICAgICB9CgogICAgICAuc3RhdHVzLTV4eCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNlZjQ0NDQiLCIjZWY0NDQ0Iil9OwogICAgICB9CgogICAgICAuc3RhdHVzLWxlZ2VuZCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgIH0KCiAgICAgIC5sZWdlbmQtaXRlbSB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe2xldCBkPXRoaXMuZGF0YS5zdGF0dXMyeHgrdGhpcy5kYXRhLnN0YXR1czN4eCt0aGlzLmRhdGEuc3RhdHVzNHh4K3RoaXMuZGF0YS5zdGF0dXM1eHgsdT1kPjA/dGhpcy5kYXRhLnN0YXR1czJ4eC9kKjEwMDowLGM9ZD4wP3RoaXMuZGF0YS5zdGF0dXMzeHgvZCoxMDA6MCxiPWQ+MD90aGlzLmRhdGEuc3RhdHVzNHh4L2QqMTAwOjAsdj1kPjA/dGhpcy5kYXRhLnN0YXR1czV4eC9kKjEwMDowO3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJjYXJkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPlRyYWZmaWMgKExhc3QgSG91cik8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InN1YnRpdGxlIj5SZXF1ZXN0IG1ldHJpY3MgZnJvbSBhY2Nlc3MgbG9nczwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJtZXRyaWNzIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im1ldHJpYyI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJtZXRyaWMtbGFiZWwiPlJlcXVlc3RzPC9zcGFuPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0ibWV0cmljLXZhbHVlIj4ke3RoaXMuZm9ybWF0TnVtYmVyKHRoaXMuZGF0YS5yZXF1ZXN0cyl9PC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXRyaWMiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0ibWV0cmljLWxhYmVsIj5FcnJvcnM8L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJtZXRyaWMtdmFsdWUiPiR7dGhpcy5kYXRhLmVycm9yc30gKCR7dGhpcy5kYXRhLmVycm9yUGVyY2VudH0lKTwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ibWV0cmljIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1ldHJpYy1sYWJlbCI+QXZnIFJlc3BvbnNlPC9zcGFuPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0ibWV0cmljLXZhbHVlIj4ke3RoaXMuZGF0YS5hdmdSZXNwb25zZX1tczwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ibWV0cmljIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1ldHJpYy1sYWJlbCI+UmVxL21pbjwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1ldHJpYy12YWx1ZSI+JHt0aGlzLmRhdGEucmVxUGVyTWlufTwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0dXMtYmFyLWNvbnRhaW5lciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0dXMtYmFyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdHVzLXNlZ21lbnQgc3RhdHVzLTJ4eCIgc3R5bGU9IndpZHRoOiAke3V9JSI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXR1cy1zZWdtZW50IHN0YXR1cy0zeHgiIHN0eWxlPSJ3aWR0aDogJHtjfSUiPjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0dXMtc2VnbWVudCBzdGF0dXMtNHh4IiBzdHlsZT0id2lkdGg6ICR7Yn0lIj48L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdHVzLXNlZ21lbnQgc3RhdHVzLTV4eCIgc3R5bGU9IndpZHRoOiAke3Z9JSI+PC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXR1cy1sZWdlbmQiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGVnZW5kLWl0ZW0iPjJ4eDwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxlZ2VuZC1pdGVtIj4zeHg8L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsZWdlbmQtaXRlbSI+NHh4PC9zcGFuPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGVnZW5kLWl0ZW0iPjV4eDwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9Zm9ybWF0TnVtYmVyKGQpe3JldHVybiBkPj0xZTY/KGQvMWU2KS50b0ZpeGVkKDEpKyJNIjpkPj0xZTM/KGQvMWUzKS50b0ZpeGVkKDEpKyJLIjpkLnRvU3RyaW5nKCl9Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLEdydCh0aGlzLGwpfXN0YXRpY3tHcnQoYSx0KX19O3JldHVybiBwPWF9KSgpfSk7dmFyIE83YSxZcnQsVFFhLFpydD1nKCgpPT57cGUoKTtPN2E9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LFlydD1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sVFFhPSgoKT0+e2xldCBzPVtuZSgic3otcGxhdGZvcm0tc2VydmljZXMtY2FyZCIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdO3ZhciBwPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJTelBsYXRmb3JtU2VydmljZXNDYXJkIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpBcnJheX0pXSxPN2EodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZXJ2aWNlcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh1PT4ic2VydmljZXMiaW4gdSwiaGFzIiksZ2V0OmkodT0+dS5zZXJ2aWNlcywiZ2V0Iiksc2V0OmkoKHUsYyk9Pnt1LnNlcnZpY2VzPWN9LCJzZXQiKX0sbWV0YWRhdGE6ZH0sbyxsKSxPN2EobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6ZH0sbnVsbCx0KSxwPWE9ZS52YWx1ZSxkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmR9KX1zdGF0aWMgZGVtbz1pKCgpPT53YAogICAgPGRpdiBzdHlsZT0icGFkZGluZzogMjRweDsgbWF4LXdpZHRoOiA1MDBweDsiPgogICAgICA8c3otcGxhdGZvcm0tc2VydmljZXMtY2FyZAogICAgICAgIC5zZXJ2aWNlcz0ke1t7bmFtZToiTW9uZ29EQiIsc3RhdHVzOiIxIERCIixydW5uaW5nOiEwfSx7bmFtZToiUzMgU3RvcmFnZSAoTWluSU8pIixzdGF0dXM6IjEgYnVja2V0IixydW5uaW5nOiEwfSx7bmFtZToiU21hcnRQcm94eSBSZXZlcnNlIFByb3h5IixzdGF0dXM6IlJ1bm5pbmciLHJ1bm5pbmc6ITB9LHtuYW1lOiJDbGlja0hvdXNlIixzdGF0dXM6IjEgREIiLHJ1bm5pbmc6ITB9XX0KICAgICAgPjwvc3otcGxhdGZvcm0tc2VydmljZXMtY2FyZD4KICAgIDwvZGl2PgogIGAsImRlbW8iKTtzdGF0aWMgZGVtb0dyb3Vwcz1bIlBsYXRmb3JtIl07I2U9WXJ0KHRoaXMsbyxbXSk7Z2V0IHNlcnZpY2VzKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHNlcnZpY2VzKGQpe3RoaXMuI2U9ZH1zdGF0aWMgc3R5bGVzPVtoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgLmNhcmQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzA5MDkwYiIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U0ZTRlNyIsIiMyNzI3MmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIHBhZGRpbmc6IDIwcHg7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgIC5oZWFkZXIgewogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgIH0KCiAgICAgIC50aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLnN1YnRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgICBtYXJnaW4tdG9wOiAycHg7CiAgICAgIH0KCiAgICAgIC5zZXJ2aWNlcy1saXN0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICB9CgogICAgICAuc2VydmljZS1pdGVtIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDhweCAwOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDIwMG1zIGVhc2U7CiAgICAgIH0KCiAgICAgIC5zZXJ2aWNlLWl0ZW06aG92ZXIgewogICAgICAgIG9wYWNpdHk6IDAuODsKICAgICAgfQoKICAgICAgLnNlcnZpY2UtbGVmdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMTBweDsKICAgICAgfQoKICAgICAgLnN0YXR1cy1kb3QgewogICAgICAgIHdpZHRoOiA4cHg7CiAgICAgICAgaGVpZ2h0OiA4cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAuc3RhdHVzLWRvdC5ydW5uaW5nIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiIzIyYzU1ZSIsIiMyMmM1NWUiKX07CiAgICAgICAgYm94LXNoYWRvdzogMCAwIDZweCAke2guYmRUaGVtZSgicmdiYSgzNCwgMTk3LCA5NCwgMC40KSIsInJnYmEoMzQsIDE5NywgOTQsIDAuNCkiKX07CiAgICAgIH0KCiAgICAgIC5zdGF0dXMtZG90LnN0b3BwZWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZWY0NDQ0IiwiI2VmNDQ0NCIpfTsKICAgICAgfQoKICAgICAgLnNlcnZpY2UtbmFtZSB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLnNlcnZpY2Utc3RhdHVzIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImNhcmQiPgogICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+UGxhdGZvcm0gU2VydmljZXM8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InN1YnRpdGxlIj5JbmZyYXN0cnVjdHVyZSBzdGF0dXM8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0ic2VydmljZXMtbGlzdCI+CiAgICAgICAgICAke3RoaXMuc2VydmljZXMubWFwKGQ9PndgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VydmljZS1pdGVtIiBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVTZXJ2aWNlQ2xpY2soZCl9PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VydmljZS1sZWZ0Ij4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdHVzLWRvdCAke2QucnVubmluZz8icnVubmluZyI6InN0b3BwZWQifSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZXJ2aWNlLW5hbWUiPiR7ZC5uYW1lfTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlcnZpY2Utc3RhdHVzIj4ke2Quc3RhdHVzfTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYCl9CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1oYW5kbGVTZXJ2aWNlQ2xpY2soZCl7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgic2VydmljZS1jbGljayIse2RldGFpbDpkLGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLFlydCh0aGlzLGwpfXN0YXRpY3tZcnQoYSx0KX19O3JldHVybiBwPWF9KSgpfSk7dmFyIGsxZSxFZywkUWEsWHJ0PWcoKCk9PntwZSgpO2sxZT1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sRWc9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LCRRYT0oKCk9PntsZXQgcz1bbmUoInN6LWNlcnRpZmljYXRlcy1jYXJkIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W107dmFyIHg9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIlN6Q2VydGlmaWNhdGVzQ2FyZCIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBtPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6TnVtYmVyfSldLHA9W0woe3R5cGU6TnVtYmVyfSldLGM9W0woe3R5cGU6TnVtYmVyfSldLGsxZSh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InZhbGlkQ291bnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+InZhbGlkQ291bnQiaW4gZiwiaGFzIiksZ2V0OmkoZj0+Zi52YWxpZENvdW50LCJnZXQiKSxzZXQ6aSgoZix5KT0+e2YudmFsaWRDb3VudD15fSwic2V0Iil9LG1ldGFkYXRhOm19LG8sbCksazFlKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZXhwaXJpbmdDb3VudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShmPT4iZXhwaXJpbmdDb3VudCJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLmV4cGlyaW5nQ291bnQsImdldCIpLHNldDppKChmLHkpPT57Zi5leHBpcmluZ0NvdW50PXl9LCJzZXQiKX0sbWV0YWRhdGE6bX0sZCx1KSxrMWUodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJleHBpcmVkQ291bnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+ImV4cGlyZWRDb3VudCJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLmV4cGlyZWRDb3VudCwiZ2V0Iiksc2V0OmkoKGYseSk9PntmLmV4cGlyZWRDb3VudD15fSwic2V0Iil9LG1ldGFkYXRhOm19LGIsdiksazFlKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOm19LG51bGwsdCkseD1hPWUudmFsdWUsbSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTptfSl9c3RhdGljIGRlbW89aSgoKT0+d2AKICAgIDxkaXYgc3R5bGU9InBhZGRpbmc6IDI0cHg7IGRpc3BsYXk6IGZsZXg7IGdhcDogMTZweDsgZmxleC13cmFwOiB3cmFwOyI+CiAgICAgIDxzei1jZXJ0aWZpY2F0ZXMtY2FyZCB2YWxpZENvdW50PSIyIj48L3N6LWNlcnRpZmljYXRlcy1jYXJkPgogICAgICA8c3otY2VydGlmaWNhdGVzLWNhcmQgdmFsaWRDb3VudD0iNSIgZXhwaXJpbmdDb3VudD0iMiI+PC9zei1jZXJ0aWZpY2F0ZXMtY2FyZD4KICAgICAgPHN6LWNlcnRpZmljYXRlcy1jYXJkIHZhbGlkQ291bnQ9IjAiIGV4cGlyZWRDb3VudD0iMSI+PC9zei1jZXJ0aWZpY2F0ZXMtY2FyZD4KICAgIDwvZGl2PgogIGAsImRlbW8iKTtzdGF0aWMgZGVtb0dyb3Vwcz1bIk5ldHdvcmsiXTsjZT1FZyh0aGlzLG8sMCk7Z2V0IHZhbGlkQ291bnQoKXtyZXR1cm4gdGhpcy4jZX1zZXQgdmFsaWRDb3VudChtKXt0aGlzLiNlPW19I3Q9KEVnKHRoaXMsbCksRWcodGhpcyxkLDApKTtnZXQgZXhwaXJpbmdDb3VudCgpe3JldHVybiB0aGlzLiN0fXNldCBleHBpcmluZ0NvdW50KG0pe3RoaXMuI3Q9bX0jYT0oRWcodGhpcyx1KSxFZyh0aGlzLGIsMCkpO2dldCBleHBpcmVkQ291bnQoKXtyZXR1cm4gdGhpcy4jYX1zZXQgZXhwaXJlZENvdW50KG0pe3RoaXMuI2E9bX1zdGF0aWMgc3R5bGVzPVtoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIG1pbi13aWR0aDogMjAwcHg7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CgogICAgICAuY2FyZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDkwOTBiIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTRlNGU3IiwiIzI3MjcyYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgcGFkZGluZzogMjBweDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLmhlYWRlciB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgfQoKICAgICAgLnRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAuc3VidGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICAgIG1hcmdpbi10b3A6IDJweDsKICAgICAgfQoKICAgICAgLnN0YXR1cyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICB9CgogICAgICAuc3RhdHVzLWljb24gewogICAgICAgIHdpZHRoOiAyMHB4OwogICAgICAgIGhlaWdodDogMjBweDsKICAgICAgfQoKICAgICAgLnN0YXR1cy1pY29uLnZhbGlkIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMyMmM1NWUiLCIjMjJjNTVlIil9OwogICAgICB9CgogICAgICAuc3RhdHVzLWljb24ud2FybmluZyB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZmFjYzE1IiwiI2ZhY2MxNSIpfTsKICAgICAgfQoKICAgICAgLnN0YXR1cy1pY29uLmVycm9yIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNlZjQ0NDQiLCIjZWY0NDQ0Iil9OwogICAgICB9CgogICAgICAuc3RhdHVzLXRleHQgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAuc3RhdHVzLWxpc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDhweDsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImNhcmQiPgogICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+Q2VydGlmaWNhdGVzPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWJ0aXRsZSI+U1NML1RMUyBjZXJ0aWZpY2F0ZSBzdGF0dXM8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0ic3RhdHVzLWxpc3QiPgogICAgICAgICAgJHt0aGlzLnZhbGlkQ291bnQ+MD93YAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0dXMiPgogICAgICAgICAgICAgIDxzdmcgY2xhc3M9InN0YXR1cy1pY29uIHZhbGlkIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgICAgICAgICAgICAgPHBvbHlsaW5lIHBvaW50cz0iMjAgNiA5IDE3IDQgMTIiPjwvcG9seWxpbmU+CiAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN0YXR1cy10ZXh0Ij4ke3RoaXMudmFsaWRDb3VudH0gdmFsaWQ8L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYDoiIn0KCiAgICAgICAgICAke3RoaXMuZXhwaXJpbmdDb3VudD4wP3dgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXR1cyI+CiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ic3RhdHVzLWljb24gd2FybmluZyIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4yOSAzLjg2TDEuODIgMThhMiAyIDAgMCAwIDEuNzEgM2gxNi45NGEyIDIgMCAwIDAgMS43MS0zTDEzLjcxIDMuODZhMiAyIDAgMCAwLTMuNDIgMHoiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxsaW5lIHgxPSIxMiIgeTE9IjkiIHgyPSIxMiIgeTI9IjEzIj48L2xpbmU+CiAgICAgICAgICAgICAgICA8bGluZSB4MT0iMTIiIHkxPSIxNyIgeDI9IjEyLjAxIiB5Mj0iMTciPjwvbGluZT4KICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3RhdHVzLXRleHQiPiR7dGhpcy5leHBpcmluZ0NvdW50fSBleHBpcmluZyBzb29uPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIGA6IiJ9CgogICAgICAgICAgJHt0aGlzLmV4cGlyZWRDb3VudD4wP3dgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXR1cyI+CiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ic3RhdHVzLWljb24gZXJyb3IiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+CiAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICA8bGluZSB4MT0iMTUiIHkxPSI5IiB4Mj0iOSIgeTI9IjE1Ij48L2xpbmU+CiAgICAgICAgICAgICAgICA8bGluZSB4MT0iOSIgeTE9IjkiIHgyPSIxNSIgeTI9IjE1Ij48L2xpbmU+CiAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN0YXR1cy10ZXh0Ij4ke3RoaXMuZXhwaXJlZENvdW50fSBleHBpcmVkPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIGA6IiJ9CgogICAgICAgICAgJHt0aGlzLnZhbGlkQ291bnQ9PT0wJiZ0aGlzLmV4cGlyaW5nQ291bnQ9PT0wJiZ0aGlzLmV4cGlyZWRDb3VudD09PTA/d2AKICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdHVzIj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3RhdHVzLXRleHQiPk5vIGNlcnRpZmljYXRlczwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgOiIifQogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLEVnKHRoaXMsdil9c3RhdGlje0VnKGEsdCl9fTtyZXR1cm4geD1hfSkoKX0pO3ZhciBweCxnMixEUWEsUXJ0PWcoKCk9PntwZSgpO3B4PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxnMj1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sRFFhPSgoKT0+e2xldCBzPVtuZSgic3otcmV2ZXJzZS1wcm94eS1jYXJkIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W107dmFyIE49Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIlN6UmV2ZXJzZVByb3h5Q2FyZCIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBDPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6U3RyaW5nfSldLHA9W0woe3R5cGU6U3RyaW5nfSldLGM9W0woe3R5cGU6Qm9vbGVhbn0pXSx4PVtMKHt0eXBlOkJvb2xlYW59KV0seT1bTCh7dHlwZTpTdHJpbmd9KV0scHgodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJodHRwUG9ydCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4iaHR0cFBvcnQiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5odHRwUG9ydCwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLmh0dHBQb3J0PU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sbyxsKSxweCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Imh0dHBzUG9ydCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4iaHR0cHNQb3J0ImluIF8sImhhcyIpLGdldDppKF89Pl8uaHR0cHNQb3J0LCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uaHR0cHNQb3J0PU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sZCx1KSxweCh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Imh0dHBBY3RpdmUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+Imh0dHBBY3RpdmUiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5odHRwQWN0aXZlLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uaHR0cEFjdGl2ZT1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LGIsdikscHgodGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJodHRwc0FjdGl2ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4iaHR0cHNBY3RpdmUiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5odHRwc0FjdGl2ZSwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLmh0dHBzQWN0aXZlPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sbSxmKSxweCh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InJvdXRlQ291bnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+InJvdXRlQ291bnQiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5yb3V0ZUNvdW50LCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18ucm91dGVDb3VudD1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LE0seikscHgobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6Q30sbnVsbCx0KSxOPWE9ZS52YWx1ZSxDJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOkN9KX1zdGF0aWMgZGVtbz1pKCgpPT53YAogICAgPGRpdiBzdHlsZT0icGFkZGluZzogMjRweDsgbWF4LXdpZHRoOiA0MDBweDsiPgogICAgICA8c3otcmV2ZXJzZS1wcm94eS1jYXJkCiAgICAgICAgaHR0cFBvcnQ9IjgwODAiCiAgICAgICAgaHR0cHNQb3J0PSI4NDQzIgogICAgICAgIGh0dHBBY3RpdmUKICAgICAgICBodHRwc0FjdGl2ZQogICAgICAgIHJvdXRlQ291bnQ9IjMiCiAgICAgID48L3N6LXJldmVyc2UtcHJveHktY2FyZD4KICAgIDwvZGl2PgogIGAsImRlbW8iKTtzdGF0aWMgZGVtb0dyb3Vwcz1bIk5ldHdvcmsiXTsjZT1nMih0aGlzLG8sIjgwIik7Z2V0IGh0dHBQb3J0KCl7cmV0dXJuIHRoaXMuI2V9c2V0IGh0dHBQb3J0KEMpe3RoaXMuI2U9Q30jdD0oZzIodGhpcyxsKSxnMih0aGlzLGQsIjQ0MyIpKTtnZXQgaHR0cHNQb3J0KCl7cmV0dXJuIHRoaXMuI3R9c2V0IGh0dHBzUG9ydChDKXt0aGlzLiN0PUN9I2E9KGcyKHRoaXMsdSksZzIodGhpcyxiLCExKSk7Z2V0IGh0dHBBY3RpdmUoKXtyZXR1cm4gdGhpcy4jYX1zZXQgaHR0cEFjdGl2ZShDKXt0aGlzLiNhPUN9I3M9KGcyKHRoaXMsdiksZzIodGhpcyxtLCExKSk7Z2V0IGh0dHBzQWN0aXZlKCl7cmV0dXJuIHRoaXMuI3N9c2V0IGh0dHBzQWN0aXZlKEMpe3RoaXMuI3M9Q30jaT0oZzIodGhpcyxmKSxnMih0aGlzLE0sIjAiKSk7Z2V0IHJvdXRlQ291bnQoKXtyZXR1cm4gdGhpcy4jaX1zZXQgcm91dGVDb3VudChDKXt0aGlzLiNpPUN9c3RhdGljIHN0eWxlcz1baC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5jYXJkIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMwOTA5MGIiKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNGU0ZTciLCIjMjcyNzJhIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAuaGVhZGVyIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICB9CgogICAgICAudGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgIH0KCiAgICAgIC5zdWJ0aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgICAgbWFyZ2luLXRvcDogMnB4OwogICAgICB9CgogICAgICAuaXRlbXMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDEwcHg7CiAgICAgIH0KCiAgICAgIC5pdGVtIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICB9CgogICAgICAuaXRlbS1sYWJlbCB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgIH0KCiAgICAgIC5pdGVtLXZhbHVlIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQoKICAgICAgLmJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDJweCAxMHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OTlweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgfQoKICAgICAgLmJhZGdlLmFjdGl2ZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNkY2ZjZTciLCJyZ2JhKDM0LCAxOTcsIDk0LCAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE2YTM0YSIsIiMyMmM1NWUiKX07CiAgICAgIH0KCiAgICAgIC5iYWRnZS5pbmFjdGl2ZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZWUyZTIiLCJyZ2JhKDIzOSwgNjgsIDY4LCAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2RjMjYyNiIsIiNlZjQ0NDQiKX07CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJjYXJkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPlJldmVyc2UgUHJveHk8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InN1YnRpdGxlIj5IVFRQL0hUVFBTIHByb3h5IHN0YXR1czwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtcyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9Iml0ZW0tbGFiZWwiPkhUVFAgKCR7dGhpcy5odHRwUG9ydH0pPC9zcGFuPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iYmFkZ2UgJHt0aGlzLmh0dHBBY3RpdmU/ImFjdGl2ZSI6ImluYWN0aXZlIn0iPgogICAgICAgICAgICAgICR7dGhpcy5odHRwQWN0aXZlPyJBY3RpdmUiOiJJbmFjdGl2ZSJ9CiAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpdGVtLWxhYmVsIj5IVFRQUyAoJHt0aGlzLmh0dHBzUG9ydH0pPC9zcGFuPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iYmFkZ2UgJHt0aGlzLmh0dHBzQWN0aXZlPyJhY3RpdmUiOiJpbmFjdGl2ZSJ9Ij4KICAgICAgICAgICAgICAke3RoaXMuaHR0cHNBY3RpdmU/IkFjdGl2ZSI6IkluYWN0aXZlIn0KICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9Iml0ZW0tbGFiZWwiPlJvdXRlczwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9Iml0ZW0tdmFsdWUiPiR7dGhpcy5yb3V0ZUNvdW50fTwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLGcyKHRoaXMseil9c3RhdGlje2cyKGEsdCl9fTtyZXR1cm4gTj1hfSkoKX0pO3ZhciBKcnQscFEsTFFhLGVvdD1nKCgpPT57cGUoKTtKcnQ9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LHBRPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxMUWE9KCgpPT57bGV0IHM9W25lKCJzei1kbnMtc3NsLWNhcmQiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXTt2YXIgYz1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiU3pEbnNTc2xDYXJkIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGI9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpCb29sZWFufSldLHA9W0woe3R5cGU6Qm9vbGVhbn0pXSxKcnQodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJkbnNDb25maWd1cmVkIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHY9PiJkbnNDb25maWd1cmVkImluIHYsImhhcyIpLGdldDppKHY9PnYuZG5zQ29uZmlndXJlZCwiZ2V0Iiksc2V0OmkoKHYseCk9Pnt2LmRuc0NvbmZpZ3VyZWQ9eH0sInNldCIpfSxtZXRhZGF0YTpifSxvLGwpLEpydCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImFjbWVDb25maWd1cmVkIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHY9PiJhY21lQ29uZmlndXJlZCJpbiB2LCJoYXMiKSxnZXQ6aSh2PT52LmFjbWVDb25maWd1cmVkLCJnZXQiKSxzZXQ6aSgodix4KT0+e3YuYWNtZUNvbmZpZ3VyZWQ9eH0sInNldCIpfSxtZXRhZGF0YTpifSxkLHUpLEpydChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpifSxudWxsLHQpLGM9YT1lLnZhbHVlLGImJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pfXN0YXRpYyBkZW1vPWkoKCk9PndgCiAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nOiAyNHB4OyBtYXgtd2lkdGg6IDQwMHB4OyI+CiAgICAgIDxzei1kbnMtc3NsLWNhcmQKICAgICAgICBkbnNDb25maWd1cmVkCiAgICAgICAgYWNtZUNvbmZpZ3VyZWQKICAgICAgPjwvc3otZG5zLXNzbC1jYXJkPgogICAgPC9kaXY+CiAgYCwiZGVtbyIpO3N0YXRpYyBkZW1vR3JvdXBzPVsiTmV0d29yayJdOyNlPXBRKHRoaXMsbywhMSk7Z2V0IGRuc0NvbmZpZ3VyZWQoKXtyZXR1cm4gdGhpcy4jZX1zZXQgZG5zQ29uZmlndXJlZChiKXt0aGlzLiNlPWJ9I3Q9KHBRKHRoaXMsbCkscFEodGhpcyxkLCExKSk7Z2V0IGFjbWVDb25maWd1cmVkKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGFjbWVDb25maWd1cmVkKGIpe3RoaXMuI3Q9Yn1zdGF0aWMgc3R5bGVzPVtoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgLmNhcmQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzA5MDkwYiIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U0ZTRlNyIsIiMyNzI3MmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIHBhZGRpbmc6IDIwcHg7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgIC5oZWFkZXIgewogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgIH0KCiAgICAgIC50aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLnN1YnRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgICBtYXJnaW4tdG9wOiAycHg7CiAgICAgIH0KCiAgICAgIC5pdGVtcyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMTBweDsKICAgICAgfQoKICAgICAgLml0ZW0gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5pdGVtLWxhYmVsIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLmJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDJweCAxMHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OTlweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgfQoKICAgICAgLmJhZGdlLmNvbmZpZ3VyZWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZGJlYWZlIiwicmdiYSg1OSwgMTMwLCAyNDYsIDAuMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMjU2M2ViIiwiIzYwYTVmYSIpfTsKICAgICAgfQoKICAgICAgLmJhZGdlLm5vdC1jb25maWd1cmVkIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMyNzI3MmEiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImNhcmQiPgogICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+RE5TICYgU1NMPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWJ0aXRsZSI+Q29uZmlndXJhdGlvbiBzdGF0dXM8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iaXRlbXMiPgogICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpdGVtLWxhYmVsIj5DbG91ZGZsYXJlIEROUzwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImJhZGdlICR7dGhpcy5kbnNDb25maWd1cmVkPyJjb25maWd1cmVkIjoibm90LWNvbmZpZ3VyZWQifSI+CiAgICAgICAgICAgICAgJHt0aGlzLmRuc0NvbmZpZ3VyZWQ/IkNvbmZpZ3VyZWQiOiJOb3QgY29uZmlndXJlZCJ9CiAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpdGVtLWxhYmVsIj5BQ01FIChMZXQncyBFbmNyeXB0KTwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImJhZGdlICR7dGhpcy5hY21lQ29uZmlndXJlZD8iY29uZmlndXJlZCI6Im5vdC1jb25maWd1cmVkIn0iPgogICAgICAgICAgICAgICR7dGhpcy5hY21lQ29uZmlndXJlZD8iQ29uZmlndXJlZCI6Ik5vdCBjb25maWd1cmVkIn0KICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cykscFEodGhpcyx1KX1zdGF0aWN7cFEoYSx0KX19O3JldHVybiBjPWF9KSgpfSk7dmFyIEY3YSx0b3QsRVFhLGFvdD1nKCgpPT57cGUoKTtGN2E9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LHRvdD1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sRVFhPSgoKT0+e2xldCBzPVtuZSgic3otcXVpY2stYWN0aW9ucy1jYXJkIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W107dmFyIHA9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIlN6UXVpY2tBY3Rpb25zQ2FyZCIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBkPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6QXJyYXl9KV0sRjdhKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYWN0aW9ucyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh1PT4iYWN0aW9ucyJpbiB1LCJoYXMiKSxnZXQ6aSh1PT51LmFjdGlvbnMsImdldCIpLHNldDppKCh1LGMpPT57dS5hY3Rpb25zPWN9LCJzZXQiKX0sbWV0YWRhdGE6ZH0sbyxsKSxGN2EobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6ZH0sbnVsbCx0KSxwPWE9ZS52YWx1ZSxkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmR9KX1zdGF0aWMgZGVtbz1pKCgpPT53YAogICAgPGRpdiBzdHlsZT0icGFkZGluZzogMjRweDsgbWF4LXdpZHRoOiA4MDBweDsiPgogICAgICA8c3otcXVpY2stYWN0aW9ucy1jYXJkCiAgICAgICAgLmFjdGlvbnM9JHtbe2xhYmVsOiJEZXBsb3kgU2VydmljZSIsaWNvbjoicGx1cyIscHJpbWFyeTohMH0se2xhYmVsOiJWaWV3IEFsbCBTZXJ2aWNlcyJ9LHtsYWJlbDoiUGxhdGZvcm0gU2VydmljZXMifSx7bGFiZWw6Ik1hbmFnZSBEb21haW5zIn1dfQogICAgICA+PC9zei1xdWljay1hY3Rpb25zLWNhcmQ+CiAgICA8L2Rpdj4KICBgLCJkZW1vIik7c3RhdGljIGRlbW9Hcm91cHM9WyJEYXNoYm9hcmQiXTsjZT10b3QodGhpcyxvLFtdKTtnZXQgYWN0aW9ucygpe3JldHVybiB0aGlzLiNlfXNldCBhY3Rpb25zKGQpe3RoaXMuI2U9ZH1zdGF0aWMgc3R5bGVzPVtoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgLmNhcmQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzA5MDkwYiIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U0ZTRlNyIsIiMyNzI3MmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIHBhZGRpbmc6IDIwcHg7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgIC5oZWFkZXIgewogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgIH0KCiAgICAgIC50aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLnN1YnRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgICBtYXJnaW4tdG9wOiAycHg7CiAgICAgIH0KCiAgICAgIC5hY3Rpb25zIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICBnYXA6IDEycHg7CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIHBhZGRpbmc6IDEwcHggMTZweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAyMDBtcyBlYXNlOwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbi5wcmltYXJ5IHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiIzI1NjNlYiIsIiMzYjgyZjYiKX07CiAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbi5wcmltYXJ5OmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiIzFkNGVkOCIsIiMyNTYzZWIiKX07CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uLnNlY29uZGFyeSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDkwOTBiIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNGU0ZTciLCIjMjcyNzJhIil9OwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbi5zZWNvbmRhcnk6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzE4MTgxYiIpfTsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjZDRkNGQ4IiwiIzNmM2Y0NiIpfTsKICAgICAgfQoKICAgICAgLmFjdGlvbi1pY29uIHsKICAgICAgICB3aWR0aDogMTZweDsKICAgICAgICBoZWlnaHQ6IDE2cHg7CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJjYXJkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPlF1aWNrIEFjdGlvbnM8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InN1YnRpdGxlIj5Db21tb24gdGFza3MgYW5kIHNob3J0Y3V0czwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb25zIj4KICAgICAgICAgICR7dGhpcy5hY3Rpb25zLm1hcChkPT53YAogICAgICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgICAgIGNsYXNzPSJhY3Rpb24tYnV0dG9uICR7ZC5wcmltYXJ5PyJwcmltYXJ5Ijoic2Vjb25kYXJ5In0iCiAgICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVBY3Rpb25DbGljayhkKX0KICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAke2QuaWNvbj09PSJwbHVzIj93YAogICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJhY3Rpb24taWNvbiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgICAgICAgICA8bGluZSB4MT0iMTIiIHkxPSI1IiB4Mj0iMTIiIHkyPSIxOSI+PC9saW5lPgogICAgICAgICAgICAgICAgICAgIDxsaW5lIHgxPSI1IiB5MT0iMTIiIHgyPSIxOSIgeTI9IjEyIj48L2xpbmU+CiAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICAgICAgICR7ZC5sYWJlbH0KICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgYCl9CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1oYW5kbGVBY3Rpb25DbGljayhkKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJhY3Rpb24tY2xpY2siLHtkZXRhaWw6ZCxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWNvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0b3QodGhpcyxsKX1zdGF0aWN7dG90KGEsdCl9fTtyZXR1cm4gcD1hfSkoKX0pO3ZhciBCN2Esc290LFBRYSxpb3Q9ZygoKT0+e3BlKCk7QjdhPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxzb3Q9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LFBRYT0oKCk9PntsZXQgcz1bbmUoInN6LXN0YXR1cy1ncmlkLWNsdXN0ZXIiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXTt2YXIgcD1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiU3pTdGF0dXNHcmlkQ2x1c3RlciIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBkPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6T2JqZWN0fSldLEI3YSh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InN0YXRzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHU9PiJzdGF0cyJpbiB1LCJoYXMiKSxnZXQ6aSh1PT51LnN0YXRzLCJnZXQiKSxzZXQ6aSgodSxjKT0+e3Uuc3RhdHM9Y30sInNldCIpfSxtZXRhZGF0YTpkfSxvLGwpLEI3YShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpkfSxudWxsLHQpLHA9YT1lLnZhbHVlLGQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZH0pfXN0YXRpYyBkZW1vPWkoKCk9PndgCiAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nOiAyNHB4OyBtYXgtd2lkdGg6IDkwMHB4OyI+CiAgICAgIDxzei1zdGF0dXMtZ3JpZC1jbHVzdGVyCiAgICAgICAgLnN0YXRzPSR7e3RvdGFsU2VydmljZXM6NyxydW5uaW5nOjcsc3RvcHBlZDowLGRvY2tlclN0YXR1czoicnVubmluZyJ9fQogICAgICA+PC9zei1zdGF0dXMtZ3JpZC1jbHVzdGVyPgogICAgPC9kaXY+CiAgYCwiZGVtbyIpO3N0YXRpYyBkZW1vR3JvdXBzPVsiRGFzaGJvYXJkIEdyaWRzIl07I2U9c290KHRoaXMsbyx7dG90YWxTZXJ2aWNlczowLHJ1bm5pbmc6MCxzdG9wcGVkOjAsZG9ja2VyU3RhdHVzOiJzdG9wcGVkIn0pO2dldCBzdGF0cygpe3JldHVybiB0aGlzLiNlfXNldCBzdGF0cyhkKXt0aGlzLiNlPWR9c3RhdGljIHN0eWxlcz1baC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgYF07Z2V0IHRpbGVzKCl7cmV0dXJuW3tpZDoidG90YWwiLHRpdGxlOiJUb3RhbCBTZXJ2aWNlcyIsdmFsdWU6dGhpcy5zdGF0cy50b3RhbFNlcnZpY2VzLHR5cGU6Im51bWJlciIsaWNvbjoibHVjaWRlOnNlcnZlciJ9LHtpZDoicnVubmluZyIsdGl0bGU6IlJ1bm5pbmciLHZhbHVlOnRoaXMuc3RhdHMucnVubmluZyx0eXBlOiJudW1iZXIiLGljb246Imx1Y2lkZTpjaGVjayIsY29sb3I6IiMyMmM1NWUifSx7aWQ6InN0b3BwZWQiLHRpdGxlOiJTdG9wcGVkIix2YWx1ZTp0aGlzLnN0YXRzLnN0b3BwZWQsdHlwZToibnVtYmVyIixpY29uOiJsdWNpZGU6Y2lyY2xlU3RvcCIsY29sb3I6dGhpcy5zdGF0cy5zdG9wcGVkPjA/IiNmNTllMGIiOnZvaWQgMH0se2lkOiJkb2NrZXIiLHRpdGxlOiJEb2NrZXIiLHZhbHVlOnRoaXMuc3RhdHMuZG9ja2VyU3RhdHVzPT09InJ1bm5pbmciPyJSdW5uaW5nIjoiU3RvcHBlZCIsdHlwZToidGV4dCIsaWNvbjoibHVjaWRlOmNvbnRhaW5lciIsY29sb3I6dGhpcy5zdGF0cy5kb2NrZXJTdGF0dXM9PT0icnVubmluZyI/IiMyMmM1NWUiOiIjZWY0NDQ0In1dfXJlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGVlcy1zdGF0c2dyaWQKICAgICAgICAudGlsZXM9JHt0aGlzLnRpbGVzfQogICAgICAgIC5taW5UaWxlV2lkdGg9JHsyMDB9CiAgICAgID48L2RlZXMtc3RhdHNncmlkPgogICAgYH1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksc290KHRoaXMsbCl9c3RhdGlje3NvdChhLHQpfX07cmV0dXJuIHA9YX0pKCl9KTt2YXIgcm90LGhRLElRYSxvb3Q9ZygoKT0+e3BlKCk7V3J0KCk7WnJ0KCk7cm90PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxoUT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sSVFhPSgoKT0+e2xldCBzPVtuZSgic3otc3RhdHVzLWdyaWQtc2VydmljZXMiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXTt2YXIgYz1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiU3pTdGF0dXNHcmlkU2VydmljZXMiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgYj10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOk9iamVjdH0pXSxwPVtMKHt0eXBlOkFycmF5fSldLHJvdCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InJlc291cmNlVXNhZ2UiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkodj0+InJlc291cmNlVXNhZ2UiaW4gdiwiaGFzIiksZ2V0Omkodj0+di5yZXNvdXJjZVVzYWdlLCJnZXQiKSxzZXQ6aSgodix4KT0+e3YucmVzb3VyY2VVc2FnZT14fSwic2V0Iil9LG1ldGFkYXRhOmJ9LG8sbCkscm90KHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicGxhdGZvcm1TZXJ2aWNlcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh2PT4icGxhdGZvcm1TZXJ2aWNlcyJpbiB2LCJoYXMiKSxnZXQ6aSh2PT52LnBsYXRmb3JtU2VydmljZXMsImdldCIpLHNldDppKCh2LHgpPT57di5wbGF0Zm9ybVNlcnZpY2VzPXh9LCJzZXQiKX0sbWV0YWRhdGE6Yn0sZCx1KSxyb3QobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6Yn0sbnVsbCx0KSxjPWE9ZS52YWx1ZSxiJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KX1zdGF0aWMgZGVtbz1pKCgpPT53YAogICAgPGRpdiBzdHlsZT0icGFkZGluZzogMjRweDsgbWF4LXdpZHRoOiAxMjAwcHg7Ij4KICAgICAgPHN6LXN0YXR1cy1ncmlkLXNlcnZpY2VzCiAgICAgICAgLnJlc291cmNlVXNhZ2U9JHt7Y3B1OjQ1LG1lbW9yeVVzZWQ6IjQuOTYgR0IiLG1lbW9yeVRvdGFsOiI4IEdCIixuZXR3b3JrSW46IjEuMiBNQi9zIixuZXR3b3JrT3V0OiIwLjggTUIvcyIsdG9wQ29uc3VtZXJzOlt7bmFtZToiYXBpLXNlcnZpY2UiLG1lbW9yeToiNTEyIE1CIn0se25hbWU6IndlYi1mcm9udGVuZCIsbWVtb3J5OiIyNTYgTUIifSx7bmFtZToid29ya2VyIixtZW1vcnk6IjEyOCBNQiJ9XX19CiAgICAgICAgLnBsYXRmb3JtU2VydmljZXM9JHtbe25hbWU6Ik1vbmdvREIiLHN0YXR1czoiMSBEQiIscnVubmluZzohMH0se25hbWU6IlMzIFN0b3JhZ2UiLHN0YXR1czoiMSBidWNrZXQiLHJ1bm5pbmc6ITB9LHtuYW1lOiJDbGlja0hvdXNlIixzdGF0dXM6IlN0b3BwZWQiLHJ1bm5pbmc6ITF9LHtuYW1lOiJSZWRpcyBDYWNoZSIsc3RhdHVzOiJSdW5uaW5nIixydW5uaW5nOiEwfV19CiAgICAgID48L3N6LXN0YXR1cy1ncmlkLXNlcnZpY2VzPgogICAgPC9kaXY+CiAgYCwiZGVtbyIpO3N0YXRpYyBkZW1vR3JvdXBzPVsiRGFzaGJvYXJkIEdyaWRzIl07I2U9aFEodGhpcyxvLHtjcHU6MCxtZW1vcnlVc2VkOiIwIEdCIixtZW1vcnlUb3RhbDoiMCBHQiIsbmV0d29ya0luOiIwIE1CL3MiLG5ldHdvcmtPdXQ6IjAgTUIvcyIsdG9wQ29uc3VtZXJzOltdfSk7Z2V0IHJlc291cmNlVXNhZ2UoKXtyZXR1cm4gdGhpcy4jZX1zZXQgcmVzb3VyY2VVc2FnZShiKXt0aGlzLiNlPWJ9I3Q9KGhRKHRoaXMsbCksaFEodGhpcyxkLFtdKSk7Z2V0IHBsYXRmb3JtU2VydmljZXMoKXtyZXR1cm4gdGhpcy4jdH1zZXQgcGxhdGZvcm1TZXJ2aWNlcyhiKXt0aGlzLiN0PWJ9c3RhdGljIHN0eWxlcz1baC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgLmdyaWQgewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CiAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoOwogICAgICB9CgogICAgICAuZ3JpZCA+ICogewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgICAgICAgLmdyaWQgewogICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOwogICAgICAgIH0KICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImdyaWQiPgogICAgICAgIDxzei1yZXNvdXJjZS11c2FnZS1jYXJkCiAgICAgICAgICAuZGF0YT0ke3RoaXMucmVzb3VyY2VVc2FnZX0KICAgICAgICA+PC9zei1yZXNvdXJjZS11c2FnZS1jYXJkPgogICAgICAgIDxzei1wbGF0Zm9ybS1zZXJ2aWNlcy1jYXJkCiAgICAgICAgICAuc2VydmljZXM9JHt0aGlzLnBsYXRmb3JtU2VydmljZXN9CiAgICAgICAgPjwvc3otcGxhdGZvcm0tc2VydmljZXMtY2FyZD4KICAgICAgPC9kaXY+CiAgICBgfWNvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSxoUSh0aGlzLHUpfXN0YXRpY3toUShhLHQpfX07cmV0dXJuIGM9YX0pKCl9KTt2YXIgUzFlLFBnLEFRYSxub3Q9ZygoKT0+e3BlKCk7S3J0KCk7UXJ0KCk7WHJ0KCk7UzFlPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxQZz1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sQVFhPSgoKT0+e2xldCBzPVtuZSgic3otc3RhdHVzLWdyaWQtbmV0d29yayIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdO3ZhciB4PWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJTelN0YXR1c0dyaWROZXR3b3JrIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IG09dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpPYmplY3R9KV0scD1bTCh7dHlwZTpPYmplY3R9KV0sYz1bTCh7dHlwZTpPYmplY3R9KV0sUzFlKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidHJhZmZpYyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShmPT4idHJhZmZpYyJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLnRyYWZmaWMsImdldCIpLHNldDppKChmLHkpPT57Zi50cmFmZmljPXl9LCJzZXQiKX0sbWV0YWRhdGE6bX0sbyxsKSxTMWUodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJwcm94eSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShmPT4icHJveHkiaW4gZiwiaGFzIiksZ2V0OmkoZj0+Zi5wcm94eSwiZ2V0Iiksc2V0OmkoKGYseSk9PntmLnByb3h5PXl9LCJzZXQiKX0sbWV0YWRhdGE6bX0sZCx1KSxTMWUodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjZXJ0aWZpY2F0ZXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+ImNlcnRpZmljYXRlcyJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLmNlcnRpZmljYXRlcywiZ2V0Iiksc2V0OmkoKGYseSk9PntmLmNlcnRpZmljYXRlcz15fSwic2V0Iil9LG1ldGFkYXRhOm19LGIsdiksUzFlKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOm19LG51bGwsdCkseD1hPWUudmFsdWUsbSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTptfSl9c3RhdGljIGRlbW89aSgoKT0+d2AKICAgIDxkaXYgc3R5bGU9InBhZGRpbmc6IDI0cHg7IG1heC13aWR0aDogMTQwMHB4OyI+CiAgICAgIDxzei1zdGF0dXMtZ3JpZC1uZXR3b3JrCiAgICAgICAgLnRyYWZmaWM9JHt7cmVxdWVzdHM6MTI1NDIwLGVycm9yczoxNTAsZXJyb3JQZXJjZW50Oi4xMixhdmdSZXNwb25zZTo0NSxyZXFQZXJNaW46ODQ3LHN0YXR1czJ4eDo5NS4yLHN0YXR1czN4eDoyLjEsc3RhdHVzNHh4OjIuMyxzdGF0dXM1eHg6LjR9fQogICAgICAgIC5wcm94eT0ke3todHRwUG9ydDoiODAiLGh0dHBzUG9ydDoiNDQzIixodHRwQWN0aXZlOiEwLGh0dHBzQWN0aXZlOiEwLHJvdXRlQ291bnQ6IjEyIn19CiAgICAgICAgLmNlcnRpZmljYXRlcz0ke3t2YWxpZDo4LGV4cGlyaW5nOjIsZXhwaXJlZDowfX0KICAgICAgPjwvc3otc3RhdHVzLWdyaWQtbmV0d29yaz4KICAgIDwvZGl2PgogIGAsImRlbW8iKTtzdGF0aWMgZGVtb0dyb3Vwcz1bIkRhc2hib2FyZCBHcmlkcyJdOyNlPVBnKHRoaXMsbyx7cmVxdWVzdHM6MCxlcnJvcnM6MCxlcnJvclBlcmNlbnQ6MCxhdmdSZXNwb25zZTowLHJlcVBlck1pbjowLHN0YXR1czJ4eDowLHN0YXR1czN4eDowLHN0YXR1czR4eDowLHN0YXR1czV4eDowfSk7Z2V0IHRyYWZmaWMoKXtyZXR1cm4gdGhpcy4jZX1zZXQgdHJhZmZpYyhtKXt0aGlzLiNlPW19I3Q9KFBnKHRoaXMsbCksUGcodGhpcyxkLHtodHRwUG9ydDoiODAiLGh0dHBzUG9ydDoiNDQzIixodHRwQWN0aXZlOiExLGh0dHBzQWN0aXZlOiExLHJvdXRlQ291bnQ6IjAifSkpO2dldCBwcm94eSgpe3JldHVybiB0aGlzLiN0fXNldCBwcm94eShtKXt0aGlzLiN0PW19I2E9KFBnKHRoaXMsdSksUGcodGhpcyxiLHt2YWxpZDowLGV4cGlyaW5nOjAsZXhwaXJlZDowfSkpO2dldCBjZXJ0aWZpY2F0ZXMoKXtyZXR1cm4gdGhpcy4jYX1zZXQgY2VydGlmaWNhdGVzKG0pe3RoaXMuI2E9bX1zdGF0aWMgc3R5bGVzPVtoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICAuZ3JpZCB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKICAgICAgICBnYXA6IDE2cHg7CiAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7CiAgICAgIH0KCiAgICAgIC5ncmlkID4gKiB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CgogICAgICBAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAgICAgICAuZ3JpZCB7CiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7CiAgICAgICAgfQogICAgICB9CgogICAgICBAbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7CiAgICAgICAgLmdyaWQgewogICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAyZnIgMWZyIDFmcjsKICAgICAgICB9CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJncmlkIj4KICAgICAgICA8c3otdHJhZmZpYy1jYXJkCiAgICAgICAgICAuZGF0YT0ke3RoaXMudHJhZmZpY30KICAgICAgICA+PC9zei10cmFmZmljLWNhcmQ+CiAgICAgICAgPHN6LXJldmVyc2UtcHJveHktY2FyZAogICAgICAgICAgaHR0cFBvcnQ9IiR7dGhpcy5wcm94eS5odHRwUG9ydH0iCiAgICAgICAgICBodHRwc1BvcnQ9IiR7dGhpcy5wcm94eS5odHRwc1BvcnR9IgogICAgICAgICAgP2h0dHBBY3RpdmU9JHt0aGlzLnByb3h5Lmh0dHBBY3RpdmV9CiAgICAgICAgICA/aHR0cHNBY3RpdmU9JHt0aGlzLnByb3h5Lmh0dHBzQWN0aXZlfQogICAgICAgICAgcm91dGVDb3VudD0iJHt0aGlzLnByb3h5LnJvdXRlQ291bnR9IgogICAgICAgID48L3N6LXJldmVyc2UtcHJveHktY2FyZD4KICAgICAgICA8c3otY2VydGlmaWNhdGVzLWNhcmQKICAgICAgICAgIHZhbGlkPSIke3RoaXMuY2VydGlmaWNhdGVzLnZhbGlkfSIKICAgICAgICAgIGV4cGlyaW5nPSIke3RoaXMuY2VydGlmaWNhdGVzLmV4cGlyaW5nfSIKICAgICAgICAgIGV4cGlyZWQ9IiR7dGhpcy5jZXJ0aWZpY2F0ZXMuZXhwaXJlZH0iCiAgICAgICAgPjwvc3otY2VydGlmaWNhdGVzLWNhcmQ+CiAgICAgIDwvZGl2PgogICAgYH1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksUGcodGhpcyx2KX1zdGF0aWN7UGcoYSx0KX19O3JldHVybiB4PWF9KSgpfSk7dmFyIF8xZSxJZyxOUWEsbG90PWcoKCk9PntwZSgpO2VvdCgpO2FvdCgpO18xZT1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sSWc9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LE5RYT0oKCk9PntsZXQgcz1bbmUoInN6LXN0YXR1cy1ncmlkLWluZnJhIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W107dmFyIHg9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIlN6U3RhdHVzR3JpZEluZnJhIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IG09dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpCb29sZWFufSldLHA9W0woe3R5cGU6Qm9vbGVhbn0pXSxjPVtMKHt0eXBlOkFycmF5fSldLF8xZSh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImRuc0NvbmZpZ3VyZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+ImRuc0NvbmZpZ3VyZWQiaW4gZiwiaGFzIiksZ2V0OmkoZj0+Zi5kbnNDb25maWd1cmVkLCJnZXQiKSxzZXQ6aSgoZix5KT0+e2YuZG5zQ29uZmlndXJlZD15fSwic2V0Iil9LG1ldGFkYXRhOm19LG8sbCksXzFlKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYWNtZUNvbmZpZ3VyZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+ImFjbWVDb25maWd1cmVkImluIGYsImhhcyIpLGdldDppKGY9PmYuYWNtZUNvbmZpZ3VyZWQsImdldCIpLHNldDppKChmLHkpPT57Zi5hY21lQ29uZmlndXJlZD15fSwic2V0Iil9LG1ldGFkYXRhOm19LGQsdSksXzFlKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYWN0aW9ucyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShmPT4iYWN0aW9ucyJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLmFjdGlvbnMsImdldCIpLHNldDppKChmLHkpPT57Zi5hY3Rpb25zPXl9LCJzZXQiKX0sbWV0YWRhdGE6bX0sYix2KSxfMWUobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6bX0sbnVsbCx0KSx4PWE9ZS52YWx1ZSxtJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm19KX1zdGF0aWMgZGVtbz1pKCgpPT53YAogICAgPGRpdiBzdHlsZT0icGFkZGluZzogMjRweDsgbWF4LXdpZHRoOiAxMjAwcHg7Ij4KICAgICAgPHN6LXN0YXR1cy1ncmlkLWluZnJhCiAgICAgICAgZG5zQ29uZmlndXJlZAogICAgICAgIGFjbWVDb25maWd1cmVkCiAgICAgICAgLmFjdGlvbnM9JHtbe2xhYmVsOiJEZXBsb3kgU2VydmljZSIsaWNvbjoicGx1cyIscHJpbWFyeTohMH0se2xhYmVsOiJWaWV3IEFsbCBTZXJ2aWNlcyJ9LHtsYWJlbDoiUGxhdGZvcm0gU2VydmljZXMifSx7bGFiZWw6Ik1hbmFnZSBEb21haW5zIn1dfQogICAgICA+PC9zei1zdGF0dXMtZ3JpZC1pbmZyYT4KICAgIDwvZGl2PgogIGAsImRlbW8iKTtzdGF0aWMgZGVtb0dyb3Vwcz1bIkRhc2hib2FyZCBHcmlkcyJdOyNlPUlnKHRoaXMsbywhMSk7Z2V0IGRuc0NvbmZpZ3VyZWQoKXtyZXR1cm4gdGhpcy4jZX1zZXQgZG5zQ29uZmlndXJlZChtKXt0aGlzLiNlPW19I3Q9KElnKHRoaXMsbCksSWcodGhpcyxkLCExKSk7Z2V0IGFjbWVDb25maWd1cmVkKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGFjbWVDb25maWd1cmVkKG0pe3RoaXMuI3Q9bX0jYT0oSWcodGhpcyx1KSxJZyh0aGlzLGIsW10pKTtnZXQgYWN0aW9ucygpe3JldHVybiB0aGlzLiNhfXNldCBhY3Rpb25zKG0pe3RoaXMuI2E9bX1zdGF0aWMgc3R5bGVzPVtoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICAuZ3JpZCB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKICAgICAgICBnYXA6IDE2cHg7CiAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7CiAgICAgIH0KCiAgICAgIC5ncmlkID4gKiB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CgogICAgICBAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAgICAgICAuZ3JpZCB7CiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAyZnI7CiAgICAgICAgfQogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iZ3JpZCI+CiAgICAgICAgPHN6LWRucy1zc2wtY2FyZAogICAgICAgICAgP2Ruc0NvbmZpZ3VyZWQ9JHt0aGlzLmRuc0NvbmZpZ3VyZWR9CiAgICAgICAgICA/YWNtZUNvbmZpZ3VyZWQ9JHt0aGlzLmFjbWVDb25maWd1cmVkfQogICAgICAgID48L3N6LWRucy1zc2wtY2FyZD4KICAgICAgICA8c3otcXVpY2stYWN0aW9ucy1jYXJkCiAgICAgICAgICAuYWN0aW9ucz0ke3RoaXMuYWN0aW9uc30KICAgICAgICAgIEBhY3Rpb24tY2xpY2s9JHttPT50aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJhY3Rpb24tY2xpY2siLHtkZXRhaWw6bS5kZXRhaWwsYnViYmxlczohMCxjb21wb3NlZDohMH0pKX0KICAgICAgICA+PC9zei1xdWljay1hY3Rpb25zLWNhcmQ+CiAgICAgIDwvZGl2PgogICAgYH1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksSWcodGhpcyx2KX1zdGF0aWN7SWcoYSx0KX19O3JldHVybiB4PWF9KSgpfSk7dmFyIEg3YSxjb3QsUlFhLHE3YT1nKCgpPT57cGUoKTtpb3QoKTtvb3QoKTtub3QoKTtsb3QoKTtIN2E9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LGNvdD1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sUlFhPSgoKT0+e2xldCBzPVtuZSgic3otZGFzaGJvYXJkLXZpZXciKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXTt2YXIgcD1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiU3pEYXNoYm9hcmRWaWV3Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpPYmplY3R9KV0sSDdhKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZGF0YSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh1PT4iZGF0YSJpbiB1LCJoYXMiKSxnZXQ6aSh1PT51LmRhdGEsImdldCIpLHNldDppKCh1LGMpPT57dS5kYXRhPWN9LCJzZXQiKX0sbWV0YWRhdGE6ZH0sbyxsKSxIN2EobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6ZH0sbnVsbCx0KSxwPWE9ZS52YWx1ZSxkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmR9KX1zdGF0aWMgZGVtbz1pKCgpPT53YAogICAgPGRpdiBzdHlsZT0icGFkZGluZzogMjRweDsgbWF4LXdpZHRoOiAxNDAwcHg7Ij4KICAgICAgPHN6LWRhc2hib2FyZC12aWV3CiAgICAgICAgLmRhdGE9JHt7Y2x1c3Rlcjp7dG90YWxTZXJ2aWNlczo3LHJ1bm5pbmc6NyxzdG9wcGVkOjAsZG9ja2VyU3RhdHVzOiJydW5uaW5nIn0scmVzb3VyY2VVc2FnZTp7Y3B1Oi41LG1lbW9yeVVzZWQ6IjE5MSBNQiIsbWVtb3J5VG90YWw6IjQyOS4yIEdCIixuZXR3b3JrSW46IjM4LjkgS0IvcyIsbmV0d29ya091dDoiMS43IEtCL3MiLHRvcENvbnN1bWVyczpbe25hbWU6InRlc3QtbmdpbngiLG1lbW9yeToiMzIuMSBNQiJ9LHtuYW1lOiJ0ZXN0LXYyIixtZW1vcnk6IjMxLjcgTUIifV19LHBsYXRmb3JtU2VydmljZXM6W3tuYW1lOiJNb25nb0RCIixzdGF0dXM6IjEgREIiLHJ1bm5pbmc6ITB9LHtuYW1lOiJTMyBTdG9yYWdlIChNaW5JTykiLHN0YXR1czoiMSBidWNrZXQiLHJ1bm5pbmc6ITB9LHtuYW1lOiJTbWFydFByb3h5IFJldmVyc2UgUHJveHkiLHN0YXR1czoiUnVubmluZyIscnVubmluZzohMH0se25hbWU6IkNsaWNrSG91c2UiLHN0YXR1czoiMSBEQiIscnVubmluZzohMH1dLHRyYWZmaWM6e3JlcXVlc3RzOjEyNTAsZXJyb3JzOjE1LGVycm9yUGVyY2VudDoxLjIsYXZnUmVzcG9uc2U6MTQ1LHJlcVBlck1pbjoyMSxzdGF0dXMyeHg6ODUsc3RhdHVzM3h4OjUsc3RhdHVzNHh4Ojgsc3RhdHVzNXh4OjJ9LHByb3h5OntodHRwUG9ydDoiODAiLGh0dHBzUG9ydDoiNDQzIixodHRwQWN0aXZlOiEwLGh0dHBzQWN0aXZlOiEwLHJvdXRlQ291bnQ6IjEyIn0sY2VydGlmaWNhdGVzOnt2YWxpZDo4LGV4cGlyaW5nOjIsZXhwaXJlZDowfSxkbnNDb25maWd1cmVkOiEwLGFjbWVDb25maWd1cmVkOiEwLHF1aWNrQWN0aW9uczpbe2xhYmVsOiJEZXBsb3kgU2VydmljZSIsaWNvbjoicGx1cyIscHJpbWFyeTohMH0se2xhYmVsOiJWaWV3IEFsbCBTZXJ2aWNlcyJ9LHtsYWJlbDoiUGxhdGZvcm0gU2VydmljZXMifSx7bGFiZWw6Ik1hbmFnZSBEb21haW5zIn1dfX0KICAgICAgPjwvc3otZGFzaGJvYXJkLXZpZXc+CiAgICA8L2Rpdj4KICBgLCJkZW1vIik7c3RhdGljIGRlbW9Hcm91cHM9WyJEYXNoYm9hcmQiXTsjZT1jb3QodGhpcyxvLHtjbHVzdGVyOnt0b3RhbFNlcnZpY2VzOjAscnVubmluZzowLHN0b3BwZWQ6MCxkb2NrZXJTdGF0dXM6InN0b3BwZWQifSxyZXNvdXJjZVVzYWdlOntjcHU6MCxtZW1vcnlVc2VkOiIwIE1CIixtZW1vcnlUb3RhbDoiMCBHQiIsbmV0d29ya0luOiIwIEtCL3MiLG5ldHdvcmtPdXQ6IjAgS0IvcyIsdG9wQ29uc3VtZXJzOltdfSxwbGF0Zm9ybVNlcnZpY2VzOltdLHRyYWZmaWM6e3JlcXVlc3RzOjAsZXJyb3JzOjAsZXJyb3JQZXJjZW50OjAsYXZnUmVzcG9uc2U6MCxyZXFQZXJNaW46MCxzdGF0dXMyeHg6MCxzdGF0dXMzeHg6MCxzdGF0dXM0eHg6MCxzdGF0dXM1eHg6MH0scHJveHk6e2h0dHBQb3J0OiI4MCIsaHR0cHNQb3J0OiI0NDMiLGh0dHBBY3RpdmU6ITEsaHR0cHNBY3RpdmU6ITEscm91dGVDb3VudDoiMCJ9LGNlcnRpZmljYXRlczp7dmFsaWQ6MCxleHBpcmluZzowLGV4cGlyZWQ6MH0sZG5zQ29uZmlndXJlZDohMSxhY21lQ29uZmlndXJlZDohMSxxdWlja0FjdGlvbnM6W119KTtnZXQgZGF0YSgpe3JldHVybiB0aGlzLiNlfXNldCBkYXRhKGQpe3RoaXMuI2U9ZH1zdGF0aWMgc3R5bGVzPVtoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICAuZGFzaGJvYXJkIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiAyNHB4OwogICAgICB9CgogICAgICAuc2VjdGlvbi10aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4OwogICAgICB9CgogICAgICAuc2VjdGlvbiB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iZGFzaGJvYXJkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgICAgICA8aDIgY2xhc3M9InNlY3Rpb24tdGl0bGUiPkNsdXN0ZXIgT3ZlcnZpZXc8L2gyPgogICAgICAgICAgPHN6LXN0YXR1cy1ncmlkLWNsdXN0ZXIKICAgICAgICAgICAgLnN0YXRzPSR7dGhpcy5kYXRhLmNsdXN0ZXJ9CiAgICAgICAgICA+PC9zei1zdGF0dXMtZ3JpZC1jbHVzdGVyPgogICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNlY3Rpb24iPgogICAgICAgICAgPGgyIGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5TZXJ2aWNlcyAmIFJlc291cmNlczwvaDI+CiAgICAgICAgICA8c3otc3RhdHVzLWdyaWQtc2VydmljZXMKICAgICAgICAgICAgLnJlc291cmNlVXNhZ2U9JHt0aGlzLmRhdGEucmVzb3VyY2VVc2FnZX0KICAgICAgICAgICAgLnBsYXRmb3JtU2VydmljZXM9JHt0aGlzLmRhdGEucGxhdGZvcm1TZXJ2aWNlc30KICAgICAgICAgID48L3N6LXN0YXR1cy1ncmlkLXNlcnZpY2VzPgogICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNlY3Rpb24iPgogICAgICAgICAgPGgyIGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5OZXR3b3JrICYgVHJhZmZpYzwvaDI+CiAgICAgICAgICA8c3otc3RhdHVzLWdyaWQtbmV0d29yawogICAgICAgICAgICAudHJhZmZpYz0ke3RoaXMuZGF0YS50cmFmZmljfQogICAgICAgICAgICAucHJveHk9JHt0aGlzLmRhdGEucHJveHl9CiAgICAgICAgICAgIC5jZXJ0aWZpY2F0ZXM9JHt0aGlzLmRhdGEuY2VydGlmaWNhdGVzfQogICAgICAgICAgPjwvc3otc3RhdHVzLWdyaWQtbmV0d29yaz4KICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzZWN0aW9uIj4KICAgICAgICAgIDxoMiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+SW5mcmFzdHJ1Y3R1cmU8L2gyPgogICAgICAgICAgPHN6LXN0YXR1cy1ncmlkLWluZnJhCiAgICAgICAgICAgID9kbnNDb25maWd1cmVkPSR7dGhpcy5kYXRhLmRuc0NvbmZpZ3VyZWR9CiAgICAgICAgICAgID9hY21lQ29uZmlndXJlZD0ke3RoaXMuZGF0YS5hY21lQ29uZmlndXJlZH0KICAgICAgICAgICAgLmFjdGlvbnM9JHt0aGlzLmRhdGEucXVpY2tBY3Rpb25zfQogICAgICAgICAgICBAYWN0aW9uLWNsaWNrPSR7ZD0+dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiYWN0aW9uLWNsaWNrIix7ZGV0YWlsOmQuZGV0YWlsLGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9CiAgICAgICAgICA+PC9zei1zdGF0dXMtZ3JpZC1pbmZyYT4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgIDwvZGl2PgogICAgYH1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksY290KHRoaXMsbCl9c3RhdGlje2NvdChhLHQpfX07cmV0dXJuIHA9YX0pKCl9KTt2YXIgdDQsV24sT1FhLGo3YT1nKCgpPT57cGUoKTt0ND1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sV249ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LE9RYT0oKCk9PntsZXQgcz1bbmUoInN6LW5ldHdvcmstcHJveHktdmlldyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdO3ZhciBIPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJTek5ldHdvcmtQcm94eVZpZXciKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgaz10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZ30pXSxwPVtMKHt0eXBlOlN0cmluZ30pXSxjPVtMKHt0eXBlOlN0cmluZ30pXSx4PVtMKHt0eXBlOlN0cmluZ30pXSx5PVtMKHt0eXBlOkFycmF5fSldLE49W0woe3R5cGU6QXJyYXl9KV0sTz1bTCh7dHlwZTpCb29sZWFufSldLHQ0KHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicHJveHlTdGF0dXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+InByb3h5U3RhdHVzImluIFMsImhhcyIpLGdldDppKFM9PlMucHJveHlTdGF0dXMsImdldCIpLHNldDppKChTLEkpPT57Uy5wcm94eVN0YXR1cz1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LG8sbCksdDQodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJyb3V0ZUNvdW50IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJyb3V0ZUNvdW50ImluIFMsImhhcyIpLGdldDppKFM9PlMucm91dGVDb3VudCwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLnJvdXRlQ291bnQ9SX0sInNldCIpfSxtZXRhZGF0YTprfSxkLHUpLHQ0KHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY2VydGlmaWNhdGVDb3VudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4iY2VydGlmaWNhdGVDb3VudCJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLmNlcnRpZmljYXRlQ291bnQsImdldCIpLHNldDppKChTLEkpPT57Uy5jZXJ0aWZpY2F0ZUNvdW50PUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sYix2KSx0NCh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InRhcmdldENvdW50IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJ0YXJnZXRDb3VudCJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLnRhcmdldENvdW50LCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MudGFyZ2V0Q291bnQ9SX0sInNldCIpfSxtZXRhZGF0YTprfSxtLGYpLHQ0KHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToidGFyZ2V0cyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4idGFyZ2V0cyJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLnRhcmdldHMsImdldCIpLHNldDppKChTLEkpPT57Uy50YXJnZXRzPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sTSx6KSx0NCh0aGlzLG51bGwsTix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImxvZ3MiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+ImxvZ3MiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5sb2dzLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MubG9ncz1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LEMsXyksdDQodGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzdHJlYW1pbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+InN0cmVhbWluZyJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLnN0cmVhbWluZywiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLnN0cmVhbWluZz1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LCQsRSksdDQobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6a30sbnVsbCx0KSxIPWE9ZS52YWx1ZSxrJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmt9KX1zdGF0aWMgZGVtbz1pKCgpPT53YAogICAgPGRpdiBzdHlsZT0icGFkZGluZzogMjRweDsgbWF4LXdpZHRoOiAxNDAwcHg7Ij4KICAgICAgPHN6LW5ldHdvcmstcHJveHktdmlldwogICAgICAgIHByb3h5U3RhdHVzPSJydW5uaW5nIgogICAgICAgIHJvdXRlQ291bnQ9IjMiCiAgICAgICAgY2VydGlmaWNhdGVDb3VudD0iMiIKICAgICAgICB0YXJnZXRDb3VudD0iMTEiCiAgICAgICAgLnRhcmdldHM9JHtbe3R5cGU6InNlcnZpY2UiLG5hbWU6InRlc3QtbmdpbngiLGRvbWFpbjoiYXBwLmJsZXUuZGUiLHRhcmdldDoibG9jYWxob3N0OjgwODAiLHN0YXR1czoicnVubmluZyJ9LHt0eXBlOiJzZXJ2aWNlIixuYW1lOiJoZWxsby13b3JsZCIsZG9tYWluOiJoZWxsby50YXNrLnZjIix0YXJnZXQ6ImxvY2FsaG9zdDo4MDgxIixzdGF0dXM6InJ1bm5pbmcifSx7dHlwZToicmVnaXN0cnkiLG5hbWU6Im9uZWJveC1yZWdpc3RyeSIsZG9tYWluOm51bGwsdGFyZ2V0OiJsb2NhbGhvc3Q6NDAwMCIsc3RhdHVzOiJydW5uaW5nIn0se3R5cGU6InBsYXRmb3JtIixuYW1lOiJNb25nb0RCIixkb21haW46bnVsbCx0YXJnZXQ6ImxvY2FsaG9zdDoyNzAxNyIsc3RhdHVzOiJydW5uaW5nIn0se3R5cGU6InBsYXRmb3JtIixuYW1lOiJDbGlja0hvdXNlIixkb21haW46bnVsbCx0YXJnZXQ6ImxvY2FsaG9zdDo4MTIzIixzdGF0dXM6InJ1bm5pbmcifV19CiAgICAgICAgLmxvZ3M9JHtbe3RpbWVzdGFtcDoiMjAyNC0wMS0wMiAxMDoxNTozMiIsbWV0aG9kOiJHRVQiLHBhdGg6Ii9hcGkvc2VydmljZXMiLHN0YXR1czoyMDAsZHVyYXRpb246NDUsaXA6IjE5Mi4xNjguMS4xMDAifSx7dGltZXN0YW1wOiIyMDI0LTAxLTAyIDEwOjE1OjMwIixtZXRob2Q6IlBPU1QiLHBhdGg6Ii9hcGkvYXV0aC9sb2dpbiIsc3RhdHVzOjIwMCxkdXJhdGlvbjoxMjAsaXA6IjE5Mi4xNjguMS4xMDEifSx7dGltZXN0YW1wOiIyMDI0LTAxLTAyIDEwOjE1OjI4IixtZXRob2Q6IkdFVCIscGF0aDoiL3N0YXRpYy9idW5kbGUuanMiLHN0YXR1czozMDQsZHVyYXRpb246NSxpcDoiMTkyLjE2OC4xLjEwMCJ9XX0KICAgICAgPjwvc3otbmV0d29yay1wcm94eS12aWV3PgogICAgPC9kaXY+CiAgYCwiZGVtbyIpO3N0YXRpYyBkZW1vR3JvdXBzPVsiTmV0d29yayJdOyNlPVduKHRoaXMsbywic3RvcHBlZCIpO2dldCBwcm94eVN0YXR1cygpe3JldHVybiB0aGlzLiNlfXNldCBwcm94eVN0YXR1cyhrKXt0aGlzLiNlPWt9I3Q9KFduKHRoaXMsbCksV24odGhpcyxkLCIwIikpO2dldCByb3V0ZUNvdW50KCl7cmV0dXJuIHRoaXMuI3R9c2V0IHJvdXRlQ291bnQoayl7dGhpcy4jdD1rfSNhPShXbih0aGlzLHUpLFduKHRoaXMsYiwiMCIpKTtnZXQgY2VydGlmaWNhdGVDb3VudCgpe3JldHVybiB0aGlzLiNhfXNldCBjZXJ0aWZpY2F0ZUNvdW50KGspe3RoaXMuI2E9a30jcz0oV24odGhpcyx2KSxXbih0aGlzLG0sIjAiKSk7Z2V0IHRhcmdldENvdW50KCl7cmV0dXJuIHRoaXMuI3N9c2V0IHRhcmdldENvdW50KGspe3RoaXMuI3M9a30jaT0oV24odGhpcyxmKSxXbih0aGlzLE0sW10pKTtnZXQgdGFyZ2V0cygpe3JldHVybiB0aGlzLiNpfXNldCB0YXJnZXRzKGspe3RoaXMuI2k9a30jcj0oV24odGhpcyx6KSxXbih0aGlzLEMsW10pKTtnZXQgbG9ncygpe3JldHVybiB0aGlzLiNyfXNldCBsb2dzKGspe3RoaXMuI3I9a30jbz0oV24odGhpcyxfKSxXbih0aGlzLCQsITEpKTtnZXQgc3RyZWFtaW5nKCl7cmV0dXJuIHRoaXMuI299c2V0IHN0cmVhbWluZyhrKXt0aGlzLiNvPWt9c3RhdGljIHN0eWxlcz1baC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgLmFjdGlvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICB9CgogICAgICAucmVmcmVzaC1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgcGFkZGluZzogOHB4IDE2cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDkwOTBiIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTRlNGU3IiwiIzI3MjcyYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDIwMG1zIGVhc2U7CiAgICAgIH0KCiAgICAgIC5yZWZyZXNoLWJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMTgxODFiIil9OwogICAgICB9CgogICAgICBkZWVzLXN0YXRzZ3JpZCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgICAgfQoKICAgICAgZGVlcy10aWxlIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgICB9CgogICAgICAuc2VjdGlvbi1oZWFkZXIgewogICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgIC5zZWN0aW9uLWhlYWRpbmcgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgbWluLXdpZHRoOiAwOwogICAgICB9CgogICAgICAuc2VjdGlvbi10aXRsZSB7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgfQoKICAgICAgLnNlY3Rpb24tc3VidGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgIH0KCiAgICAgIC5zZWN0aW9uLWZvb3RlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDA7CiAgICAgICAgaGVpZ2h0OiAzNnB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgIC50aWxlLWJ1dHRvbiB7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLXN1YnRsZSk7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA2cHg7CiAgICAgIH0KCiAgICAgIC50aWxlLWJ1dHRvbjpmaXJzdC1jaGlsZCB7CiAgICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7CiAgICAgIH0KCiAgICAgIC50aWxlLWJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1ob3Zlcik7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgfQoKICAgICAgLnRpbGUtYnV0dG9uLnByaW1hcnkgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNy4yIDkxLjIlIDU5LjglKSIsImhzbCgyMTMuMSA5My45JSA2Ny44JSkiKX07CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgfQoKICAgICAgLnRpbGUtYnV0dG9uLnByaW1hcnk6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjE3LjIgOTEuMiUgNTkuOCUgLyAwLjA4KSIsImhzbCgyMTMuMSA5My45JSA2Ny44JSAvIDAuMDgpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNy4yIDkxLjIlIDUwJSkiLCJoc2woMjEzLjEgOTMuOSUgNzUlKSIpfTsKICAgICAgfQoKICAgICAgLnRpbGUtYnV0dG9uLmRhbmdlciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZGMyNjI2IiwiI2VmNDQ0NCIpfTsKICAgICAgfQoKICAgICAgLnRpbGUtYnV0dG9uLmRhbmdlcjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZWUyZTIiLCJyZ2JhKDIzOSwgNjgsIDY4LCAwLjEpIil9OwogICAgICB9CgogICAgICAudGFibGUtaGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogODBweCAxLjVmciAxLjVmciAxLjVmciA4MHB4OwogICAgICAgIGdhcDogMTZweDsKICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMTgxODFiIil9OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U0ZTRlNyIsIiMyNzI3MmEiKX07CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgIH0KCiAgICAgIC50YWJsZS1yb3cgewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiA4MHB4IDEuNWZyIDEuNWZyIDEuNWZyIDgwcHg7CiAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgIHBhZGRpbmc6IDEycHggMTZweDsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMjcyNzJhIil9OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDIwMG1zIGVhc2U7CiAgICAgIH0KCiAgICAgIC50YWJsZS1yb3c6bGFzdC1jaGlsZCB7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgICAgfQoKICAgICAgLnRhYmxlLXJvdzpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMTgxODFiIil9OwogICAgICB9CgogICAgICAudHlwZS1iYWRnZSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiAycHggOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICB9CgogICAgICAudHlwZS1iYWRnZS5zZXJ2aWNlIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2RiZWFmZSIsInJnYmEoNTksIDEzMCwgMjQ2LCAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzI1NjNlYiIsIiM2MGE1ZmEiKX07CiAgICAgIH0KCiAgICAgIC50eXBlLWJhZGdlLnJlZ2lzdHJ5IHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2YzZThmZiIsInJnYmEoMTY4LCA4NSwgMjQ3LCAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzkzMzNlYSIsIiNhODU1ZjciKX07CiAgICAgIH0KCiAgICAgIC50eXBlLWJhZGdlLnBsYXRmb3JtIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZlZjNjNyIsInJnYmEoMjQ1LCAxNTgsIDExLCAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2Q5NzcwNiIsIiNmNTllMGIiKX07CiAgICAgIH0KCiAgICAgIC50YXJnZXQtdmFsdWUgewogICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQoKICAgICAgLnN0YXR1cy1iYWRnZSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiAycHggOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OTlweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgfQoKICAgICAgLnN0YXR1cy1iYWRnZS5ydW5uaW5nIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2RjZmNlNyIsInJnYmEoMzQsIDE5NywgOTQsIDAuMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTZhMzRhIiwiIzIyYzU1ZSIpfTsKICAgICAgfQoKICAgICAgLnN0YXR1cy1iYWRnZS5zdG9wcGVkIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZlZTJlMiIsInJnYmEoMjM5LCA2OCwgNjgsIDAuMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZGMyNjI2IiwiI2VmNDQ0NCIpfTsKICAgICAgfQoKICAgICAgLmxvZ3MtY29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIG1heC1oZWlnaHQ6IDMwMHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmYWZhZmEiLCIjMGEwYTBhIil9OwogICAgICB9CgogICAgICAubG9nLWVudHJ5IHsKICAgICAgICBwYWRkaW5nOiA0cHggMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICB9CgogICAgICAubG9nLXRpbWVzdGFtcCB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjYTFhMWFhIiwiIzUyNTI1YiIpfTsKICAgICAgfQoKICAgICAgLmxvZy1tZXRob2QgewogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMjU2M2ViIiwiIzYwYTVmYSIpfTsKICAgICAgfQoKICAgICAgLmxvZy1zdGF0dXMtMnh4IHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxNmEzNGEiLCIjMjJjNTVlIil9OwogICAgICB9CgogICAgICAubG9nLXN0YXR1cy0zeHggewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzI1NjNlYiIsIiM2MGE1ZmEiKX07CiAgICAgIH0KCiAgICAgIC5sb2ctc3RhdHVzLTR4eCB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjY2E4YTA0IiwiI2ZhY2MxNSIpfTsKICAgICAgfQoKICAgICAgLmxvZy1zdGF0dXMtNXh4IHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNkYzI2MjYiLCIjZWY0NDQ0Iil9OwogICAgICB9CgogICAgICAuZW1wdHktbG9ncyB7CiAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQogICAgYF07Z2V0IHRpbGVzKCl7cmV0dXJuW3tpZDoicHJveHktc3RhdHVzIix0aXRsZToiUHJveHkgU3RhdHVzIix2YWx1ZTp0aGlzLnByb3h5U3RhdHVzPT09InJ1bm5pbmciPyJSdW5uaW5nIjoiU3RvcHBlZCIsdHlwZToidGV4dCIsaWNvbjoibHVjaWRlOnNlcnZlciIsY29sb3I6dGhpcy5wcm94eVN0YXR1cz09PSJydW5uaW5nIj8iIzIyYzU1ZSI6IiNlZjQ0NDQifSx7aWQ6InJvdXRlcyIsdGl0bGU6IlJvdXRlcyIsdmFsdWU6dGhpcy5yb3V0ZUNvdW50LHR5cGU6Im51bWJlciIsaWNvbjoibHVjaWRlOnNlcnZlciJ9LHtpZDoiY2VydGlmaWNhdGVzIix0aXRsZToiQ2VydGlmaWNhdGVzIix2YWx1ZTp0aGlzLmNlcnRpZmljYXRlQ291bnQsdHlwZToibnVtYmVyIixpY29uOiJsdWNpZGU6Y2hlY2sifSx7aWQ6InRhcmdldHMiLHRpdGxlOiJUYXJnZXRzIix2YWx1ZTp0aGlzLnRhcmdldENvdW50LHR5cGU6Im51bWJlciIsaWNvbjoibHVjaWRlOnNlcnZlciJ9XX1yZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iYWN0aW9ucyI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0icmVmcmVzaC1idXR0b24iIEBjbGljaz0keygpPT50aGlzLmhhbmRsZVJlZnJlc2goKX0+UmVmcmVzaDwvYnV0dG9uPgogICAgICA8L2Rpdj4KCiAgICAgIDxkZWVzLXN0YXRzZ3JpZAogICAgICAgIC50aWxlcz0ke3RoaXMudGlsZXN9CiAgICAgICAgLm1pblRpbGVXaWR0aD0kezIwMH0KICAgICAgPjwvZGVlcy1zdGF0c2dyaWQ+CgogICAgICA8ZGVlcy10aWxlPgogICAgICAgIDxkaXYgc2xvdD0iaGVhZGVyIiBjbGFzcz0ic2VjdGlvbi1oZWFkZXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3Rpb24tdGl0bGUiPlRyYWZmaWMgVGFyZ2V0czwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3Rpb24tc3VidGl0bGUiPlNlcnZpY2VzLCByZWdpc3RyeSwgYW5kIHBsYXRmb3JtIHNlcnZpY2VzIHdpdGggdGhlaXIgcm91dGluZyBpbmZvPC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0idGFibGUtaGVhZGVyIj4KICAgICAgICAgIDxzcGFuPlR5cGU8L3NwYW4+CiAgICAgICAgICA8c3Bhbj5OYW1lPC9zcGFuPgogICAgICAgICAgPHNwYW4+RG9tYWluPC9zcGFuPgogICAgICAgICAgPHNwYW4+VGFyZ2V0PC9zcGFuPgogICAgICAgICAgPHNwYW4+U3RhdHVzPC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICAgICR7dGhpcy50YXJnZXRzLm1hcChrPT53YAogICAgICAgICAgPGRpdiBjbGFzcz0idGFibGUtcm93IiBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVUYXJnZXRDbGljayhrKX0+CiAgICAgICAgICAgIDxzcGFuPjxzcGFuIGNsYXNzPSJ0eXBlLWJhZGdlICR7ay50eXBlfSI+JHtrLnR5cGV9PC9zcGFuPjwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4+JHtrLm5hbWV9PC9zcGFuPgogICAgICAgICAgICA8c3Bhbj4ke2suZG9tYWlufHwiLSJ9PC9zcGFuPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0idGFyZ2V0LXZhbHVlIj4ke2sudGFyZ2V0fTwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4+PHNwYW4gY2xhc3M9InN0YXR1cy1iYWRnZSAke2suc3RhdHVzfSI+JHtrLnN0YXR1c308L3NwYW4+PC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgYCl9CiAgICAgIDwvZGVlcy10aWxlPgoKICAgICAgPGRlZXMtdGlsZT4KICAgICAgICA8ZGl2IHNsb3Q9ImhlYWRlciIgY2xhc3M9InNlY3Rpb24taGVhZGVyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24taGVhZGluZyI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5BY2Nlc3MgTG9nczwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3Rpb24tc3VidGl0bGUiPlJlYWwtdGltZSBwcm94eSBhY2Nlc3MgbG9nczwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImxvZ3MtY29udGFpbmVyIj4KICAgICAgICAgICR7dGhpcy5sb2dzLmxlbmd0aD4wP3RoaXMubG9ncy5tYXAoaz0+d2AKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nLWVudHJ5Ij4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibG9nLXRpbWVzdGFtcCI+JHtrLnRpbWVzdGFtcH08L3NwYW4+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxvZy1tZXRob2QiPiR7ay5tZXRob2R9PC9zcGFuPgogICAgICAgICAgICAgICR7ay5wYXRofQogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSIke3RoaXMuZ2V0U3RhdHVzQ2xhc3Moay5zdGF0dXMpfSI+JHtrLnN0YXR1c308L3NwYW4+CiAgICAgICAgICAgICAgJHtrLmR1cmF0aW9ufW1zCiAgICAgICAgICAgICAgJHtrLmlwfQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIGApOndgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVtcHR5LWxvZ3MiPkNsaWNrICJTdHJlYW0iIHRvIHN0YXJ0IGxpdmUgYWNjZXNzIGxvZyBzdHJlYW1pbmc8L2Rpdj4KICAgICAgICAgIGB9CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBzbG90PSJmb290ZXIiIGNsYXNzPSJzZWN0aW9uLWZvb3RlciI+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJ0aWxlLWJ1dHRvbiAke3RoaXMuc3RyZWFtaW5nPyJkYW5nZXIiOiJwcmltYXJ5In0iIEBjbGljaz0keygpPT50aGlzLnRvZ2dsZVN0cmVhbWluZygpfT4KICAgICAgICAgICAgPHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIj4KICAgICAgICAgICAgICAke3RoaXMuc3RyZWFtaW5nP3dgPHJlY3QgeD0iNiIgeT0iNiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiByeD0iMSIvPmA6d2A8cG9seWdvbiBwb2ludHM9IjUsMyAxOSwxMiA1LDIxIi8+YH0KICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICR7dGhpcy5zdHJlYW1pbmc/IlN0b3AiOiJTdHJlYW0ifQogICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJ0aWxlLWJ1dHRvbiIgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlQ2xlYXJMb2dzKCl9PgogICAgICAgICAgICA8c3ZnIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgICA8cG9seWxpbmUgcG9pbnRzPSIzLDYgNSw2IDIxLDYiLz48cGF0aCBkPSJNMTksNnYxNGEyLDIsMCwwLDEtMiwySDdhMiwyLDAsMCwxLTItMlY2bTMsMFY0YTIsMiwwLDAsMSwyLTJoNGEyLDIsMCwwLDEsMiwydjIiLz4KICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgIENsZWFyIGxvZ3MKICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtdGlsZT4KICAgIGB9Z2V0U3RhdHVzQ2xhc3Moayl7cmV0dXJuIGs+PTUwMD8ibG9nLXN0YXR1cy01eHgiOms+PTQwMD8ibG9nLXN0YXR1cy00eHgiOms+PTMwMD8ibG9nLXN0YXR1cy0zeHgiOiJsb2ctc3RhdHVzLTJ4eCJ9aGFuZGxlUmVmcmVzaCgpe3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInJlZnJlc2giLHtidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZVRhcmdldENsaWNrKGspe3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInRhcmdldC1jbGljayIse2RldGFpbDprLGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9dG9nZ2xlU3RyZWFtaW5nKCl7dGhpcy5zdHJlYW1pbmc9IXRoaXMuc3RyZWFtaW5nLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInN0cmVhbS10b2dnbGUiLHtkZXRhaWw6e3N0cmVhbWluZzp0aGlzLnN0cmVhbWluZ30sYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1oYW5kbGVDbGVhckxvZ3MoKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjbGVhci1sb2dzIix7YnViYmxlczohMCxjb21wb3NlZDohMH0pKX1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksV24odGhpcyxFKX1zdGF0aWN7V24oYSx0KX19O3JldHVybiBIPWF9KSgpfSk7dmFyIFY3YSxkb3QsRlFhLFU3YT1nKCgpPT57cGUoKTtWN2E9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LGRvdD1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sRlFhPSgoKT0+e2xldCBzPVtuZSgic3otbmV0d29yay1kbnMtdmlldyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdO3ZhciBwPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJTek5ldHdvcmtEbnNWaWV3Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpBcnJheX0pXSxWN2EodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJyZWNvcmRzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHU9PiJyZWNvcmRzImluIHUsImhhcyIpLGdldDppKHU9PnUucmVjb3JkcywiZ2V0Iiksc2V0OmkoKHUsYyk9Pnt1LnJlY29yZHM9Y30sInNldCIpfSxtZXRhZGF0YTpkfSxvLGwpLFY3YShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpkfSxudWxsLHQpLHA9YT1lLnZhbHVlLGQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZH0pfXN0YXRpYyBkZW1vPWkoKCk9PndgCiAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nOiAyNHB4OyBtYXgtd2lkdGg6IDEwMDBweDsiPgogICAgICA8c3otbmV0d29yay1kbnMtdmlldwogICAgICAgIC5yZWNvcmRzPSR7W3tkb21haW46InByLnRhc2sudmMiLHR5cGU6IkEiLHZhbHVlOiIxOTUuMjAxLjk4LjIzMiJ9LHtkb21haW46Im91dGxpbmUudGFzay52YyIsdHlwZToiQSIsdmFsdWU6IjE5NS4yMDEuOTguMjMyIn0se2RvbWFpbjoibnMxLnRhc2sudmMiLHR5cGU6IkEiLHZhbHVlOiIyMTIuOTUuOTkuMTMwIn0se2RvbWFpbjoiYmxldS5kZSIsdHlwZToiQSIsdmFsdWU6IjIxMi45NS45OS4xMzAifSx7ZG9tYWluOiJtYWlsLmJsZXUuZGUiLHR5cGU6Ik1YIix2YWx1ZToiMTAgbWFpbC5ibGV1LmRlIn1dfQogICAgICA+PC9zei1uZXR3b3JrLWRucy12aWV3PgogICAgPC9kaXY+CiAgYCwiZGVtbyIpO3N0YXRpYyBkZW1vR3JvdXBzPVsiTmV0d29yayJdOyNlPWRvdCh0aGlzLG8sW10pO2dldCByZWNvcmRzKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHJlY29yZHMoZCl7dGhpcy4jZT1kfXN0YXRpYyBzdHlsZXM9W2guZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KCiAgICAgIC5oZWFkZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgfQoKICAgICAgLmRlc2NyaXB0aW9uIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQoKICAgICAgLnN5bmMtYnV0dG9uIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIHBhZGRpbmc6IDhweCAxNnB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzA5MDkwYiIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U0ZTRlNyIsIiMyNzI3MmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAyMDBtcyBlYXNlOwogICAgICB9CgogICAgICAuc3luYy1idXR0b246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzE4MTgxYiIpfTsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjZDRkNGQ4IiwiIzNmM2Y0NiIpfTsKICAgICAgfQoKICAgICAgLnRhYmxlLWNvbnRhaW5lciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDkwOTBiIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTRlNGU3IiwiIzI3MjcyYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLnRhYmxlLWhlYWRlciB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDJmciA4MHB4IDJmciAxMDBweDsKICAgICAgICBnYXA6IDE2cHg7CiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzE4MTgxYiIpfTsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNGU0ZTciLCIjMjcyNzJhIil9OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICB9CgogICAgICAudGFibGUtcm93IHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMmZyIDgwcHggMmZyIDEwMHB4OwogICAgICAgIGdhcDogMTZweDsKICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzI3MjcyYSIpfTsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDIwMG1zIGVhc2U7CiAgICAgIH0KCiAgICAgIC50YWJsZS1yb3c6bGFzdC1jaGlsZCB7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgICAgfQoKICAgICAgLnRhYmxlLXJvdzpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMTgxODFiIil9OwogICAgICB9CgogICAgICAuZG9tYWluIHsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICB9CgogICAgICAudHlwZS1iYWRnZSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiAycHggOHB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZGJlYWZlIiwicmdiYSg1OSwgMTMwLCAyNDYsIDAuMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMjU2M2ViIiwiIzYwYTVmYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIH0KCiAgICAgIC52YWx1ZSB7CiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICB9CgogICAgICAuZGVsZXRlLWJ1dHRvbiB7CiAgICAgICAgcGFkZGluZzogNnB4IDEycHg7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNmZWUyZTIiLCJyZ2JhKDIzOSwgNjgsIDY4LCAwLjMpIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZGMyNjI2IiwiI2VmNDQ0NCIpfTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDIwMG1zIGVhc2U7CiAgICAgIH0KCiAgICAgIC5kZWxldGUtYnV0dG9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZlZTJlMiIsInJnYmEoMjM5LCA2OCwgNjgsIDAuMikiKX07CiAgICAgIH0KCiAgICAgIC5lbXB0eS1zdGF0ZSB7CiAgICAgICAgcGFkZGluZzogNDhweCAyNHB4OwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIj4KICAgICAgICA8c3BhbiBjbGFzcz0iZGVzY3JpcHRpb24iPk1hbmFnZSBETlMgcmVjb3JkcyBzeW5jZWQgd2l0aCBDbG91ZGZsYXJlPC9zcGFuPgogICAgICAgIDxidXR0b24gY2xhc3M9InN5bmMtYnV0dG9uIiBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVTeW5jKCl9PgogICAgICAgICAgPHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMSAxMmE5IDkgMCAwIDEtOSA5bTktOWE5IDkgMCAwIDAtOS05bTkgOUgzbTkgOWE5IDkgMCAwIDEtOS05bTkgOWMxLjY2IDAgMy00LjAzIDMtOXMtMS4zNC05LTMtOW0wIDE4Yy0xLjY2IDAtMy00LjAzLTMtOXMxLjM0LTkgMy05Ii8+CiAgICAgICAgICA8L3N2Zz4KICAgICAgICAgIFN5bmMgQ2xvdWRmbGFyZQogICAgICAgIDwvYnV0dG9uPgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InRhYmxlLWNvbnRhaW5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0idGFibGUtaGVhZGVyIj4KICAgICAgICAgIDxzcGFuPkRvbWFpbjwvc3Bhbj4KICAgICAgICAgIDxzcGFuPlR5cGU8L3NwYW4+CiAgICAgICAgICA8c3Bhbj5WYWx1ZTwvc3Bhbj4KICAgICAgICAgIDxzcGFuPkFjdGlvbnM8L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgICAgJHt0aGlzLnJlY29yZHMubGVuZ3RoPjA/dGhpcy5yZWNvcmRzLm1hcChkPT53YAogICAgICAgICAgPGRpdiBjbGFzcz0idGFibGUtcm93Ij4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRvbWFpbiI+JHtkLmRvbWFpbn08L3NwYW4+CiAgICAgICAgICAgIDxzcGFuPjxzcGFuIGNsYXNzPSJ0eXBlLWJhZGdlIj4ke2QudHlwZX08L3NwYW4+PC9zcGFuPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0idmFsdWUiPiR7ZC52YWx1ZX08L3NwYW4+CiAgICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImRlbGV0ZS1idXR0b24iIEBjbGljaz0keygpPT50aGlzLmhhbmRsZURlbGV0ZShkKX0+RGVsZXRlPC9idXR0b24+CiAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIGApOndgCiAgICAgICAgICA8ZGl2IGNsYXNzPSJlbXB0eS1zdGF0ZSI+Tm8gRE5TIHJlY29yZHMgZm91bmQ8L2Rpdj4KICAgICAgICBgfQogICAgICA8L2Rpdj4KICAgIGB9aGFuZGxlU3luYygpe3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInN5bmMiLHtidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZURlbGV0ZShkKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJkZWxldGUiLHtkZXRhaWw6ZCxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWNvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSxkb3QodGhpcyxsKX1zdGF0aWN7ZG90KGEsdCl9fTtyZXR1cm4gcD1hfSkoKX0pO3ZhciB1b3QsZlEsQlFhLFc3YT1nKCgpPT57cGUoKTt1b3Q9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LGZRPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxCUWE9KCgpPT57bGV0IHM9W25lKCJzei1uZXR3b3JrLWRvbWFpbnMtdmlldyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdO3ZhciBjPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJTek5ldHdvcmtEb21haW5zVmlldyIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBiPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6QXJyYXl9KV0scD1bTCh7dHlwZTpPYmplY3R9KV0sdW90KHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZG9tYWlucyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh2PT4iZG9tYWlucyJpbiB2LCJoYXMiKSxnZXQ6aSh2PT52LmRvbWFpbnMsImdldCIpLHNldDppKCh2LHgpPT57di5kb21haW5zPXh9LCJzZXQiKX0sbWV0YWRhdGE6Yn0sbyxsKSx1b3QodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzdGF0cyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh2PT4ic3RhdHMiaW4gdiwiaGFzIiksZ2V0Omkodj0+di5zdGF0cywiZ2V0Iiksc2V0OmkoKHYseCk9Pnt2LnN0YXRzPXh9LCJzZXQiKX0sbWV0YWRhdGE6Yn0sZCx1KSx1b3QobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6Yn0sbnVsbCx0KSxjPWE9ZS52YWx1ZSxiJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KX1zdGF0aWMgZGVtbz1pKCgpPT53YAogICAgPGRpdiBzdHlsZT0icGFkZGluZzogMjRweDsgbWF4LXdpZHRoOiAxMjAwcHg7Ij4KICAgICAgPHN6LW5ldHdvcmstZG9tYWlucy12aWV3CiAgICAgICAgLmRvbWFpbnM9JHtbe2RvbWFpbjoiYmxldS5kZSIscHJvdmlkZXI6ImNsb3VkZmxhcmUiLHNlcnZpY2VDb3VudDoyLGNlcnRpZmljYXRlU3RhdHVzOiJ2YWxpZCIsZXhwaXJlc0luOiI1MiBkYXlzIn0se2RvbWFpbjoidGFzay52YyIscHJvdmlkZXI6ImNsb3VkZmxhcmUiLHNlcnZpY2VDb3VudDoxLGNlcnRpZmljYXRlU3RhdHVzOiJ2YWxpZCIsZXhwaXJlc0luOiI1MiBkYXlzIn0se2RvbWFpbjoiZXhhbXBsZS5jb20iLHByb3ZpZGVyOiJjbG91ZGZsYXJlIixzZXJ2aWNlQ291bnQ6MCxjZXJ0aWZpY2F0ZVN0YXR1czoiZXhwaXJpbmciLGV4cGlyZXNJbjoiNyBkYXlzIn1dfQogICAgICAgIC5zdGF0cz0ke3t0b3RhbDozLHZhbGlkOjIsZXhwaXJpbmc6MSxleHBpcmVkOjB9fQogICAgICA+PC9zei1uZXR3b3JrLWRvbWFpbnMtdmlldz4KICAgIDwvZGl2PgogIGAsImRlbW8iKTtzdGF0aWMgZGVtb0dyb3Vwcz1bIk5ldHdvcmsiXTsjZT1mUSh0aGlzLG8sW10pO2dldCBkb21haW5zKCl7cmV0dXJuIHRoaXMuI2V9c2V0IGRvbWFpbnMoYil7dGhpcy4jZT1ifSN0PShmUSh0aGlzLGwpLGZRKHRoaXMsZCx7dG90YWw6MCx2YWxpZDowLGV4cGlyaW5nOjAsZXhwaXJlZDowfSkpO2dldCBzdGF0cygpe3JldHVybiB0aGlzLiN0fXNldCBzdGF0cyhiKXt0aGlzLiN0PWJ9c3RhdGljIHN0eWxlcz1baC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgLmhlYWRlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICB9CgogICAgICAuZGVzY3JpcHRpb24gewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICB9CgogICAgICAuc3luYy1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgcGFkZGluZzogOHB4IDE2cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDkwOTBiIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTRlNGU3IiwiIzI3MjcyYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDIwMG1zIGVhc2U7CiAgICAgIH0KCiAgICAgIC5zeW5jLWJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMTgxODFiIil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiNkNGQ0ZDgiLCIjM2YzZjQ2Iil9OwogICAgICB9CgogICAgICBkZWVzLXN0YXRzZ3JpZCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgICAgfQoKICAgICAgLnRhYmxlLWNvbnRhaW5lciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDkwOTBiIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTRlNGU3IiwiIzI3MjcyYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLnRhYmxlLWhlYWRlciB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDJmciAxZnIgODBweCAxMDBweCAxMDBweCA4MHB4OwogICAgICAgIGdhcDogMTZweDsKICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMTgxODFiIil9OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U0ZTRlNyIsIiMyNzI3MmEiKX07CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgIH0KCiAgICAgIC50YWJsZS1yb3cgewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAyZnIgMWZyIDgwcHggMTAwcHggMTAwcHggODBweDsKICAgICAgICBnYXA6IDE2cHg7CiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMyNzI3MmEiKX07CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDIwMG1zIGVhc2U7CiAgICAgIH0KCiAgICAgIC50YWJsZS1yb3c6bGFzdC1jaGlsZCB7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgICAgfQoKICAgICAgLnRhYmxlLXJvdzpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMTgxODFiIil9OwogICAgICB9CgogICAgICAuZG9tYWluLW5hbWUgewogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIH0KCiAgICAgIC5wcm92aWRlciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQoKICAgICAgLnN0YXR1cy1iYWRnZSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiAycHggOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OTlweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgfQoKICAgICAgLnN0YXR1cy1iYWRnZS52YWxpZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNkY2ZjZTciLCJyZ2JhKDM0LCAxOTcsIDk0LCAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE2YTM0YSIsIiMyMmM1NWUiKX07CiAgICAgIH0KCiAgICAgIC5zdGF0dXMtYmFkZ2UuZXhwaXJpbmcgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmVmOWMzIiwicmdiYSgyNTAsIDIwNCwgMjEsIDAuMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjY2E4YTA0IiwiI2ZhY2MxNSIpfTsKICAgICAgfQoKICAgICAgLnN0YXR1cy1iYWRnZS5leHBpcmVkLAogICAgICAuc3RhdHVzLWJhZGdlLnBlbmRpbmcgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmVlMmUyIiwicmdiYSgyMzksIDY4LCA2OCwgMC4yKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNkYzI2MjYiLCIjZWY0NDQ0Iil9OwogICAgICB9CgogICAgICAuZXhwaXJlcyB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQoKICAgICAgLnZpZXctYnV0dG9uIHsKICAgICAgICBwYWRkaW5nOiA2cHggMTJweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMwOTA5MGIiKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNGU0ZTciLCIjMjcyNzJhIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDIwMG1zIGVhc2U7CiAgICAgIH0KCiAgICAgIC52aWV3LWJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMTgxODFiIil9OwogICAgICB9CgogICAgICAuZW1wdHktc3RhdGUgewogICAgICAgIHBhZGRpbmc6IDQ4cHggMjRweDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQogICAgYF07Z2V0IHRpbGVzKCl7cmV0dXJuW3tpZDoidG90YWwiLHRpdGxlOiJUb3RhbCBEb21haW5zIix2YWx1ZTp0aGlzLnN0YXRzLnRvdGFsLHR5cGU6Im51bWJlciIsaWNvbjoibHVjaWRlOmdsb2JlIn0se2lkOiJ2YWxpZCIsdGl0bGU6IlZhbGlkIENlcnRpZmljYXRlcyIsdmFsdWU6dGhpcy5zdGF0cy52YWxpZCx0eXBlOiJudW1iZXIiLGljb246Imx1Y2lkZTpzaGllbGRDaGVjayIsY29sb3I6IiMyMmM1NWUifSx7aWQ6ImV4cGlyaW5nIix0aXRsZToiRXhwaXJpbmcgU29vbiIsdmFsdWU6dGhpcy5zdGF0cy5leHBpcmluZyx0eXBlOiJudW1iZXIiLGljb246Imx1Y2lkZTpzaGllbGRBbGVydCIsY29sb3I6dGhpcy5zdGF0cy5leHBpcmluZz4wPyIjZjU5ZTBiIjp2b2lkIDB9LHtpZDoiZXhwaXJlZCIsdGl0bGU6IkV4cGlyZWQvUGVuZGluZyIsdmFsdWU6dGhpcy5zdGF0cy5leHBpcmVkLHR5cGU6Im51bWJlciIsaWNvbjoibHVjaWRlOmNpcmNsZU9mZiIsY29sb3I6dGhpcy5zdGF0cy5leHBpcmVkPjA/IiNlZjQ0NDQiOnZvaWQgMH1dfXJlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPgogICAgICAgIDxzcGFuIGNsYXNzPSJkZXNjcmlwdGlvbiI+TWFuYWdlIGRvbWFpbnMgYW5kIFNTTCBjZXJ0aWZpY2F0ZXM8L3NwYW4+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0ic3luYy1idXR0b24iIEBjbGljaz0keygpPT50aGlzLmhhbmRsZVN5bmMoKX0+U3luYyBDbG91ZGZsYXJlPC9idXR0b24+CiAgICAgIDwvZGl2PgoKICAgICAgPGRlZXMtc3RhdHNncmlkCiAgICAgICAgLnRpbGVzPSR7dGhpcy50aWxlc30KICAgICAgICAubWluVGlsZVdpZHRoPSR7MjAwfQogICAgICA+PC9kZWVzLXN0YXRzZ3JpZD4KCiAgICAgIDxkaXYgY2xhc3M9InRhYmxlLWNvbnRhaW5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0idGFibGUtaGVhZGVyIj4KICAgICAgICAgIDxzcGFuPkRvbWFpbjwvc3Bhbj4KICAgICAgICAgIDxzcGFuPlByb3ZpZGVyPC9zcGFuPgogICAgICAgICAgPHNwYW4+U2VydmljZXM8L3NwYW4+CiAgICAgICAgICA8c3Bhbj5DZXJ0aWZpY2F0ZTwvc3Bhbj4KICAgICAgICAgIDxzcGFuPkV4cGlyZXM8L3NwYW4+CiAgICAgICAgICA8c3Bhbj5BY3Rpb25zPC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICAgICR7dGhpcy5kb21haW5zLmxlbmd0aD4wP3RoaXMuZG9tYWlucy5tYXAoYj0+d2AKICAgICAgICAgIDxkaXYgY2xhc3M9InRhYmxlLXJvdyI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkb21haW4tbmFtZSI+JHtiLmRvbWFpbn08L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcm92aWRlciI+JHtiLnByb3ZpZGVyfTwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4+JHtiLnNlcnZpY2VDb3VudH08L3NwYW4+CiAgICAgICAgICAgIDxzcGFuPjxzcGFuIGNsYXNzPSJzdGF0dXMtYmFkZ2UgJHtiLmNlcnRpZmljYXRlU3RhdHVzfSI+JHtiLmNlcnRpZmljYXRlU3RhdHVzfTwvc3Bhbj48L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJleHBpcmVzIj4ke2IuZXhwaXJlc0lufHwiLSJ9PC9zcGFuPgogICAgICAgICAgICA8c3Bhbj4KICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJ2aWV3LWJ1dHRvbiIgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlVmlldyhiKX0+VmlldzwvYnV0dG9uPgogICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgKTp3YAogICAgICAgICAgPGRpdiBjbGFzcz0iZW1wdHktc3RhdGUiPk5vIGRvbWFpbnMgY29uZmlndXJlZDwvZGl2PgogICAgICAgIGB9CiAgICAgIDwvZGl2PgogICAgYH1oYW5kbGVTeW5jKCl7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgic3luYyIse2J1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9aGFuZGxlVmlldyhiKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJ2aWV3Iix7ZGV0YWlsOmIsYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksZlEodGhpcyx1KX1zdGF0aWN7ZlEoYSx0KX19O3JldHVybiBjPWF9KSgpfSk7dmFyIHBvdCxtUSxIUWEsRzdhPWcoKCk9PntwZSgpO3BvdD1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sbVE9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LEhRYT0oKCk9PntsZXQgcz1bbmUoInN6LXJlZ2lzdHJ5LWFkdmVydGlzZW1lbnQiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXTt2YXIgYz1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiU3pSZWdpc3RyeUFkdmVydGlzZW1lbnQiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgYj10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZ30pXSxwPVtMKHt0eXBlOlN0cmluZ30pXSxwb3QodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzdGF0dXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkodj0+InN0YXR1cyJpbiB2LCJoYXMiKSxnZXQ6aSh2PT52LnN0YXR1cywiZ2V0Iiksc2V0OmkoKHYseCk9Pnt2LnN0YXR1cz14fSwic2V0Iil9LG1ldGFkYXRhOmJ9LG8sbCkscG90KHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicmVnaXN0cnlVcmwiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkodj0+InJlZ2lzdHJ5VXJsImluIHYsImhhcyIpLGdldDppKHY9PnYucmVnaXN0cnlVcmwsImdldCIpLHNldDppKCh2LHgpPT57di5yZWdpc3RyeVVybD14fSwic2V0Iil9LG1ldGFkYXRhOmJ9LGQsdSkscG90KG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOmJ9LG51bGwsdCksYz1hPWUudmFsdWUsYiYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSl9c3RhdGljIGRlbW89aSgoKT0+d2AKICAgIDxkaXYgc3R5bGU9InBhZGRpbmc6IDI0cHg7IG1heC13aWR0aDogODAwcHg7Ij4KICAgICAgPHN6LXJlZ2lzdHJ5LWFkdmVydGlzZW1lbnQKICAgICAgICBzdGF0dXM9InJ1bm5pbmciCiAgICAgICAgcmVnaXN0cnlVcmw9ImxvY2FsaG9zdDozMDAwL3YyIgogICAgICA+PC9zei1yZWdpc3RyeS1hZHZlcnRpc2VtZW50PgogICAgPC9kaXY+CiAgYCwiZGVtbyIpO3N0YXRpYyBkZW1vR3JvdXBzPVsiQXV0aCAmIFNldHRpbmdzIl07I2U9bVEodGhpcyxvLCJzdG9wcGVkIik7Z2V0IHN0YXR1cygpe3JldHVybiB0aGlzLiNlfXNldCBzdGF0dXMoYil7dGhpcy4jZT1ifSN0PShtUSh0aGlzLGwpLG1RKHRoaXMsZCwiIikpO2dldCByZWdpc3RyeVVybCgpe3JldHVybiB0aGlzLiN0fXNldCByZWdpc3RyeVVybChiKXt0aGlzLiN0PWJ9c3RhdGljIHN0eWxlcz1baC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgLmNhcmQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzA5MDkwYiIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U0ZTRlNyIsIiMyNzI3MmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC5jYXJkLWhlYWRlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMTJweDsKICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U0ZTRlNyIsIiMyNzI3MmEiKX07CiAgICAgIH0KCiAgICAgIC5yZWdpc3RyeS1pY29uIHsKICAgICAgICB3aWR0aDogNDBweDsKICAgICAgICBoZWlnaHQ6IDQwcHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNkYmVhZmUiLCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC4yKSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzI1NjNlYiIsIiM2MGE1ZmEiKX07CiAgICAgIH0KCiAgICAgIC5oZWFkZXItaW5mbyB7CiAgICAgICAgZmxleDogMTsKICAgICAgfQoKICAgICAgLmhlYWRlci10aXRsZSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgIH0KCiAgICAgIC5kZWZhdWx0LWJhZGdlIHsKICAgICAgICBwYWRkaW5nOiAycHggOHB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZGJlYWZlIiwicmdiYSg1OSwgMTMwLCAyNDYsIDAuMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMjU2M2ViIiwiIzYwYTVmYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIH0KCiAgICAgIC5oZWFkZXItc3VidGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICAgIG1hcmdpbi10b3A6IDJweDsKICAgICAgfQoKICAgICAgLmNhcmQtY29udGVudCB7CiAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgfQoKICAgICAgLmluZm8tZ3JpZCB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDIwMHB4LCAxZnIpKTsKICAgICAgICBnYXA6IDE2cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgICAgfQoKICAgICAgLmluZm8taXRlbSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogNHB4OwogICAgICB9CgogICAgICAuaW5mby1sYWJlbCB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07CiAgICAgIH0KCiAgICAgIC5pbmZvLXZhbHVlIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLnN0YXR1cy1iYWRnZSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiAycHggOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OTlweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgfQoKICAgICAgLnN0YXR1cy1iYWRnZS5ydW5uaW5nIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2RjZmNlNyIsInJnYmEoMzQsIDE5NywgOTQsIDAuMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTZhMzRhIiwiIzIyYzU1ZSIpfTsKICAgICAgfQoKICAgICAgLnN0YXR1cy1iYWRnZS5zdG9wcGVkIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZlZTJlMiIsInJnYmEoMjM5LCA2OCwgNjgsIDAuMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZGMyNjI2IiwiI2VmNDQ0NCIpfTsKICAgICAgfQoKICAgICAgLm1hbmFnZS1saW5rIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMyNTYzZWIiLCIjNjBhNWZhIil9OwogICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KCiAgICAgIC5tYW5hZ2UtbGluazpob3ZlciB7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICAgIH0KCiAgICAgIC5xdWljay1zdGFydCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMTgxODFiIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICB9CgogICAgICAucXVpY2stc3RhcnQtdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICB9CgogICAgICAucXVpY2stc3RhcnQtZGVzYyB7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDsKICAgICAgfQoKICAgICAgLmNvZGUtYmxvY2sgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiIzBhMGEwYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgcGFkZGluZzogMTJweDsKICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwogICAgICB9CgogICAgICAuY29kZS1saW5lIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNhMWExYWEiLCIjNzE3MTdhIil9OwogICAgICAgIG1hcmdpbi1ib3R0b206IDRweDsKICAgICAgfQoKICAgICAgLmNvZGUtbGluZTpsYXN0LWNoaWxkIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICB9CgogICAgICAuY29kZS1jb21tZW50IHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM2YjcyODAiLCIjNTI1MjViIil9OwogICAgICB9CgogICAgICAuY29kZS1jb21tYW5kIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNmYWZhZmEiLCIjZTRlNGU3Iil9OwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iY2FyZCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1oZWFkZXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0icmVnaXN0cnktaWNvbiI+CiAgICAgICAgICAgIDxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMSAxNlY4YTIgMiAwIDAgMC0xLTEuNzNsLTctNGEyIDIgMCAwIDAtMiAwbC03IDRBMiAyIDAgMCAwIDMgOHY4YTIgMiAwIDAgMCAxIDEuNzNsNyA0YTIgMiAwIDAgMCAyIDBsNy00QTIgMiAwIDAgMCAyMSAxNnoiPjwvcGF0aD4KICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlci1pbmZvIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyLXRpdGxlIj4KICAgICAgICAgICAgICBSZWdpc3RyeSBBZHZlcnRpc2VtZW50CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRlZmF1bHQtYmFkZ2UiPkRlZmF1bHQ8L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXItc3VidGl0bGUiPkNvbnRhaW5lciByZWdpc3RyeSBmb3IgeW91ciBzZXJ2aWNlczwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtY29udGVudCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvLWdyaWQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvLWl0ZW0iPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpbmZvLWxhYmVsIj5TdGF0dXM8L3NwYW4+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImluZm8tdmFsdWUiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN0YXR1cy1iYWRnZSAke3RoaXMuc3RhdHVzfSI+JHt0aGlzLnN0YXR1cz09PSJydW5uaW5nIj8iUnVubmluZyI6IlN0b3BwZWQifTwvc3Bhbj4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvLWl0ZW0iPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpbmZvLWxhYmVsIj5SZWdpc3RyeSBVUkw8L3NwYW4+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImluZm8tdmFsdWUiPiR7dGhpcy5yZWdpc3RyeVVybH08L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvLWl0ZW0iPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpbmZvLWxhYmVsIj5BdXRoZW50aWNhdGlvbjwvc3Bhbj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaW5mby12YWx1ZSI+CiAgICAgICAgICAgICAgICA8YSBjbGFzcz0ibWFuYWdlLWxpbmsiIEBjbGljaz0keygpPT50aGlzLmhhbmRsZU1hbmFnZVRva2VucygpfT5NYW5hZ2UgVG9rZW5zPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJxdWljay1zdGFydCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InF1aWNrLXN0YXJ0LXRpdGxlIj5RdWljayBTdGFydDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJxdWljay1zdGFydC1kZXNjIj5UbyBwdXNoIGltYWdlcyB0byB0aGUgcmVnaXN0cnksIHVzZSBhIENJIG9yIEdsb2JhbCB0b2tlbjo8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29kZS1ibG9jayI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29kZS1saW5lIGNvZGUtY29tbWVudCI+IyBMb2dpbiB0byB0aGUgcmVnaXN0cnk8L2Rpdj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2RlLWxpbmUgY29kZS1jb21tYW5kIj5kb2NrZXIgbG9naW4gJHt0aGlzLnJlZ2lzdHJ5VXJsLnNwbGl0KCIvIilbMF19IC11IHJlZ2lzdHJ5IC1wIFlPVVJfVE9LRU48L2Rpdj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2RlLWxpbmUgY29kZS1jb21tZW50Ij4jIFRhZyBhbmQgcHVzaCB5b3VyIGltYWdlPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29kZS1saW5lIGNvZGUtY29tbWFuZCI+ZG9ja2VyIHRhZyBteWFwcCAke3RoaXMucmVnaXN0cnlVcmwuc3BsaXQoIi8iKVswXX0vbXlzZXJ2aWNlOmxhdGVzdDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvZGUtbGluZSBjb2RlLWNvbW1hbmQiPmRvY2tlciBwdXNoICR7dGhpcy5yZWdpc3RyeVVybC5zcGxpdCgiLyIpWzBdfS9teXNlcnZpY2U6bGF0ZXN0PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1oYW5kbGVNYW5hZ2VUb2tlbnMoKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJtYW5hZ2UtdG9rZW5zIix7YnViYmxlczohMCxjb21wb3NlZDohMH0pKX1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksbVEodGhpcyx1KX1zdGF0aWN7bVEoYSx0KX19O3JldHVybiBjPWF9KSgpfSk7dmFyIEs3YSxob3QscVFhLFk3YT1nKCgpPT57cGUoKTtLN2E9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LGhvdD1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0scVFhPSgoKT0+e2xldCBzPVtuZSgic3otcmVnaXN0cnktZXh0ZXJuYWwtdmlldyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdO3ZhciBwPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJTelJlZ2lzdHJ5RXh0ZXJuYWxWaWV3Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpBcnJheX0pXSxLN2EodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJyZWdpc3RyaWVzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHU9PiJyZWdpc3RyaWVzImluIHUsImhhcyIpLGdldDppKHU9PnUucmVnaXN0cmllcywiZ2V0Iiksc2V0OmkoKHUsYyk9Pnt1LnJlZ2lzdHJpZXM9Y30sInNldCIpfSxtZXRhZGF0YTpkfSxvLGwpLEs3YShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpkfSxudWxsLHQpLHA9YT1lLnZhbHVlLGQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZH0pfXN0YXRpYyBkZW1vPWkoKCk9PndgCiAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nOiAyNHB4OyBtYXgtd2lkdGg6IDgwMHB4OyI+CiAgICAgIDxzei1yZWdpc3RyeS1leHRlcm5hbC12aWV3CiAgICAgICAgLnJlZ2lzdHJpZXM9JHtbe2lkOiIxIixuYW1lOiJEb2NrZXIgSHViIix1cmw6ImRvY2tlci5pbyIsdXNlcm5hbWU6Im15dXNlciIsdHlwZToiZG9ja2VyaHViIn0se2lkOiIyIixuYW1lOiJHaXRIdWIgQ29udGFpbmVyIFJlZ2lzdHJ5Iix1cmw6ImdoY3IuaW8iLHVzZXJuYW1lOiJteW9yZyIsdHlwZToiZ2hjciJ9XX0KICAgICAgPjwvc3otcmVnaXN0cnktZXh0ZXJuYWwtdmlldz4KICAgIDwvZGl2PgogIGAsImRlbW8iKTtzdGF0aWMgZGVtb0dyb3Vwcz1bIkF1dGggJiBTZXR0aW5ncyJdOyNlPWhvdCh0aGlzLG8sW10pO2dldCByZWdpc3RyaWVzKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHJlZ2lzdHJpZXMoZCl7dGhpcy4jZT1kfXN0YXRpYyBzdHlsZXM9W2guZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KCiAgICAgIC5oZWFkZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgIH0KCiAgICAgIC5oZWFkZXItaW5mbyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogNHB4OwogICAgICB9CgogICAgICAuaGVhZGVyLXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAuaGVhZGVyLXN1YnRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQoKICAgICAgLmFkZC1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgcGFkZGluZzogOHB4IDE0cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZmFmYWZhIiwiIzE4MTgxYiIpfTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDIwMG1zIGVhc2U7CiAgICAgIH0KCiAgICAgIC5hZGQtYnV0dG9uOmhvdmVyIHsKICAgICAgICBvcGFjaXR5OiAwLjk7CiAgICAgIH0KCiAgICAgIC5yZWdpc3RyeS1saXN0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICB9CgogICAgICAucmVnaXN0cnktaXRlbSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzA5MDkwYiIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U0ZTRlNyIsIiMyNzI3MmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICB9CgogICAgICAucmVnaXN0cnktaW5mbyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMTJweDsKICAgICAgfQoKICAgICAgLnJlZ2lzdHJ5LWljb24gewogICAgICAgIHdpZHRoOiA0MHB4OwogICAgICAgIGhlaWdodDogNDBweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMxODE4MWIiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICB9CgogICAgICAucmVnaXN0cnktZGV0YWlscyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMnB4OwogICAgICB9CgogICAgICAucmVnaXN0cnktbmFtZSB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLnJlZ2lzdHJ5LXVybCB7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQoKICAgICAgLnJlZ2lzdHJ5LWFjdGlvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uIHsKICAgICAgICBwYWRkaW5nOiA2cHggMTJweDsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U0ZTRlNyIsIiMyNzI3MmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMjAwbXMgZWFzZTsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idXR0b246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzE4MTgxYiIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbi5kZWxldGUgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2RjMjYyNiIsIiNlZjQ0NDQiKX07CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiI2ZlZTJlMiIsInJnYmEoMjM5LCA2OCwgNjgsIDAuMykiKX07CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uLmRlbGV0ZTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZWUyZTIiLCJyZ2JhKDIzOSwgNjgsIDY4LCAwLjIpIil9OwogICAgICB9CgogICAgICAuZW1wdHktc3RhdGUgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzA5MDkwYiIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U0ZTRlNyIsIiMyNzI3MmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIHBhZGRpbmc6IDQ4cHggMjRweDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5lbXB0eS1pY29uIHsKICAgICAgICB3aWR0aDogNDhweDsKICAgICAgICBoZWlnaHQ6IDQ4cHg7CiAgICAgICAgbWFyZ2luOiAwIGF1dG8gMTZweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNhMWExYWEiLCIjNTI1MjViIil9OwogICAgICB9CgogICAgICAuZW1wdHktdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICB9CgogICAgICAuZW1wdHktZGVzY3JpcHRpb24gewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgIH0KCiAgICAgIC5lbXB0eS1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgcGFkZGluZzogOHB4IDE0cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDkwOTBiIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTRlNGU3IiwiIzI3MjcyYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDIwMG1zIGVhc2U7CiAgICAgIH0KCiAgICAgIC5lbXB0eS1idXR0b246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzE4MTgxYiIpfTsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyLWluZm8iPgogICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyLXRpdGxlIj5FeHRlcm5hbCBSZWdpc3RyaWVzPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXItc3VidGl0bGUiPkFkZCBjcmVkZW50aWFscyBmb3IgcHJpdmF0ZSBEb2NrZXIgcmVnaXN0cmllczwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxidXR0b24gY2xhc3M9ImFkZC1idXR0b24iIEBjbGljaz0keygpPT50aGlzLmhhbmRsZUFkZCgpfT5BZGQgUmVnaXN0cnk8L2J1dHRvbj4KICAgICAgPC9kaXY+CgogICAgICAke3RoaXMucmVnaXN0cmllcy5sZW5ndGg+MD93YAogICAgICAgIDxkaXYgY2xhc3M9InJlZ2lzdHJ5LWxpc3QiPgogICAgICAgICAgJHt0aGlzLnJlZ2lzdHJpZXMubWFwKGQ9PndgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlZ2lzdHJ5LWl0ZW0iPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlZ2lzdHJ5LWluZm8iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmVnaXN0cnktaWNvbiI+CiAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMSAxNlY4YTIgMiAwIDAgMC0xLTEuNzNsLTctNGEyIDIgMCAwIDAtMiAwbC03IDRBMiAyIDAgMCAwIDMgOHY4YTIgMiAwIDAgMCAxIDEuNzNsNyA0YTIgMiAwIDAgMCAyIDBsNy00QTIgMiAwIDAgMCAyMSAxNnoiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlZ2lzdHJ5LWRldGFpbHMiPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZWdpc3RyeS1uYW1lIj4ke2QubmFtZX08L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmVnaXN0cnktdXJsIj4ke2QudXJsfSAoJHtkLnVzZXJuYW1lfSk8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlZ2lzdHJ5LWFjdGlvbnMiPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiIgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlRWRpdChkKX0+RWRpdDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiBkZWxldGUiIEBjbGljaz0keygpPT50aGlzLmhhbmRsZURlbGV0ZShkKX0+RGVsZXRlPC9idXR0b24+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYCl9CiAgICAgICAgPC9kaXY+CiAgICAgIGA6d2AKICAgICAgICA8ZGl2IGNsYXNzPSJlbXB0eS1zdGF0ZSI+CiAgICAgICAgICA8c3ZnIGNsYXNzPSJlbXB0eS1pY29uIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuNSI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMSAxNlY4YTIgMiAwIDAgMC0xLTEuNzNsLTctNGEyIDIgMCAwIDAtMiAwbC03IDRBMiAyIDAgMCAwIDMgOHY4YTIgMiAwIDAgMCAxIDEuNzNsNyA0YTIgMiAwIDAgMCAyIDBsNy00QTIgMiAwIDAgMCAyMSAxNnoiPjwvcGF0aD4KICAgICAgICAgICAgPHBvbHlsaW5lIHBvaW50cz0iMy4yNyA2Ljk2IDEyIDEyLjAxIDIwLjczIDYuOTYiPjwvcG9seWxpbmU+CiAgICAgICAgICAgIDxsaW5lIHgxPSIxMiIgeTE9IjIyLjA4IiB4Mj0iMTIiIHkyPSIxMiI+PC9saW5lPgogICAgICAgICAgPC9zdmc+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJlbXB0eS10aXRsZSI+Tm8gZXh0ZXJuYWwgcmVnaXN0cmllczwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZW1wdHktZGVzY3JpcHRpb24iPkFkZCBjcmVkZW50aWFscyBmb3IgRG9ja2VyIEh1YiwgR2l0SHViIENvbnRhaW5lciBSZWdpc3RyeSwgb3Igb3RoZXIgcHJpdmF0ZSByZWdpc3RyaWVzLjwvZGl2PgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZW1wdHktYnV0dG9uIiBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVBZGQoKX0+QWRkIEV4dGVybmFsIFJlZ2lzdHJ5PC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIGB9CiAgICBgfWhhbmRsZUFkZCgpe3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImFkZCIse2J1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9aGFuZGxlRWRpdChkKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJlZGl0Iix7ZGV0YWlsOmQsYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1oYW5kbGVEZWxldGUoZCl7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiZGVsZXRlIix7ZGV0YWlsOmQsYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksaG90KHRoaXMsbCl9c3RhdGlje2hvdChhLHQpfX07cmV0dXJuIHA9YX0pKCl9KTt2YXIgWjdhLGZvdCxqUWEsWDdhPWcoKCk9PntwZSgpO1o3YT1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sZm90PWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxqUWE9KCgpPT57bGV0IHM9W25lKCJzei1zZXJ2aWNlcy1saXN0LXZpZXciKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXTt2YXIgcD1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiU3pTZXJ2aWNlc0xpc3RWaWV3Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpBcnJheX0pXSxaN2EodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZXJ2aWNlcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh1PT4ic2VydmljZXMiaW4gdSwiaGFzIiksZ2V0OmkodT0+dS5zZXJ2aWNlcywiZ2V0Iiksc2V0OmkoKHUsYyk9Pnt1LnNlcnZpY2VzPWN9LCJzZXQiKX0sbWV0YWRhdGE6ZH0sbyxsKSxaN2EobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6ZH0sbnVsbCx0KSxwPWE9ZS52YWx1ZSxkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmR9KX1zdGF0aWMgZGVtbz1pKCgpPT53YAogICAgPGRpdiBzdHlsZT0icGFkZGluZzogMjRweDsgbWF4LXdpZHRoOiAxMjAwcHg7Ij4KICAgICAgPHN6LXNlcnZpY2VzLWxpc3QtdmlldwogICAgICAgIC5zZXJ2aWNlcz0ke1t7bmFtZToidGVzdC1uZ2lueCIsaW1hZ2U6Im5naW54OmFscGluZSIsZG9tYWluOiJhcHAuYmxldS5kZSIsc3RhdHVzOiJydW5uaW5nIn0se25hbWU6ImhlbGxvLXdvcmxkIixpbWFnZToibG9jYWxob3N0OjMwMDAvaGVsbG8td29ybGQ6bGF0ZXN0Iixkb21haW46ImhlbGxvLnRhc2sudmMiLHN0YXR1czoicnVubmluZyJ9LHtuYW1lOiJ0ZXN0LXYyIixpbWFnZToibG9jYWxob3N0OjMwMDAvdGVzdC1yZWdpc3RyeTp2MSIsZG9tYWluOm51bGwsc3RhdHVzOiJydW5uaW5nIn0se25hbWU6ImFwaS1zZXJ2aWNlIixpbWFnZToibm9kZToxOC1hbHBpbmUiLGRvbWFpbjoiYXBpLmV4YW1wbGUuY29tIixzdGF0dXM6InN0b3BwZWQifV19CiAgICAgID48L3N6LXNlcnZpY2VzLWxpc3Qtdmlldz4KICAgIDwvZGl2PgogIGAsImRlbW8iKTtzdGF0aWMgZGVtb0dyb3Vwcz1bIlNlcnZpY2VzIl07I2U9Zm90KHRoaXMsbyxbXSk7Z2V0IHNlcnZpY2VzKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHNlcnZpY2VzKGQpe3RoaXMuI2U9ZH1zdGF0aWMgc3R5bGVzPVtoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICAudGFibGUtY29udGFpbmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMwOTA5MGIiKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNGU0ZTciLCIjMjcyNzJhIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAudGFibGUtaGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMS41ZnIgMmZyIDEuNWZyIDEwMHB4IDIwMHB4OwogICAgICAgIGdhcDogMTZweDsKICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMTgxODFiIil9OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U0ZTRlNyIsIiMyNzI3MmEiKX07CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgIH0KCiAgICAgIC50YWJsZS1yb3cgewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxLjVmciAyZnIgMS41ZnIgMTAwcHggMjAwcHg7CiAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgIHBhZGRpbmc6IDEycHggMTZweDsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMjcyNzJhIil9OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAyMDBtcyBlYXNlOwogICAgICB9CgogICAgICAudGFibGUtcm93Omxhc3QtY2hpbGQgewogICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7CiAgICAgIH0KCiAgICAgIC50YWJsZS1yb3c6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzE4MTgxYiIpfTsKICAgICAgfQoKICAgICAgLnNlcnZpY2UtbmFtZSB7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMyNTYzZWIiLCIjNjBhNWZhIil9OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQoKICAgICAgLnNlcnZpY2UtbmFtZTpob3ZlciB7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICAgIH0KCiAgICAgIC5pbWFnZSB7CiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgIH0KCiAgICAgIC5kb21haW4tbGluayB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMjU2M2ViIiwiIzYwYTVmYSIpfTsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgIH0KCiAgICAgIC5kb21haW4tbGluazpob3ZlciB7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICAgIH0KCiAgICAgIC5zdGF0dXMtYmFkZ2UgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgcGFkZGluZzogMnB4IDhweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA5OTk5cHg7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIH0KCiAgICAgIC5zdGF0dXMtYmFkZ2UucnVubmluZyB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNkY2ZjZTciLCJyZ2JhKDM0LCAxOTcsIDk0LCAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE2YTM0YSIsIiMyMmM1NWUiKX07CiAgICAgIH0KCiAgICAgIC5zdGF0dXMtYmFkZ2Uuc3RvcHBlZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZWUyZTIiLCJyZ2JhKDIzOSwgNjgsIDY4LCAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2RjMjYyNiIsIiNlZjQ0NDQiKX07CiAgICAgIH0KCiAgICAgIC5zdGF0dXMtYmFkZ2Uuc3RhcnRpbmcgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmVmOWMzIiwicmdiYSgyNTAsIDIwNCwgMjEsIDAuMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjY2E4YTA0IiwiI2ZhY2MxNSIpfTsKICAgICAgfQoKICAgICAgLnN0YXR1cy1iYWRnZS5lcnJvciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZWUyZTIiLCJyZ2JhKDIzOSwgNjgsIDY4LCAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2RjMjYyNiIsIiNlZjQ0NDQiKX07CiAgICAgIH0KCiAgICAgIC5hY3Rpb25zIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGdhcDogOHB4OwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbiB7CiAgICAgICAgcGFkZGluZzogNHB4IDEwcHg7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNGU0ZTciLCIjMjcyNzJhIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAyMDBtcyBlYXNlOwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMTgxODFiIil9OwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbi5zdG9wIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNjYThhMDQiLCIjZmFjYzE1Iil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiNmZWY5YzMiLCJyZ2JhKDI1MCwgMjA0LCAyMSwgMC4zKSIpfTsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idXR0b24uc3RhcnQgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE2YTM0YSIsIiMyMmM1NWUiKX07CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiI2RjZmNlNyIsInJnYmEoMzQsIDE5NywgOTQsIDAuMykiKX07CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uLnJlc3RhcnQgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzI1NjNlYiIsIiM2MGE1ZmEiKX07CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiI2RiZWFmZSIsInJnYmEoNTksIDEzMCwgMjQ2LCAwLjMpIil9OwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbi5kZWxldGUgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2RjMjYyNiIsIiNlZjQ0NDQiKX07CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiI2ZlZTJlMiIsInJnYmEoMjM5LCA2OCwgNjgsIDAuMykiKX07CiAgICAgIH0KCiAgICAgIC5lbXB0eS1zdGF0ZSB7CiAgICAgICAgcGFkZGluZzogNDhweCAyNHB4OwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0idGFibGUtY29udGFpbmVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0YWJsZS1oZWFkZXIiPgogICAgICAgICAgPHNwYW4+TmFtZTwvc3Bhbj4KICAgICAgICAgIDxzcGFuPkltYWdlPC9zcGFuPgogICAgICAgICAgPHNwYW4+RG9tYWluPC9zcGFuPgogICAgICAgICAgPHNwYW4+U3RhdHVzPC9zcGFuPgogICAgICAgICAgPHNwYW4+QWN0aW9uczwvc3Bhbj4KICAgICAgICA8L2Rpdj4KICAgICAgICAke3RoaXMuc2VydmljZXMubGVuZ3RoPjA/dGhpcy5zZXJ2aWNlcy5tYXAoZD0+d2AKICAgICAgICAgIDxkaXYgY2xhc3M9InRhYmxlLXJvdyI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZXJ2aWNlLW5hbWUiIEBjbGljaz0keygpPT50aGlzLmhhbmRsZVNlcnZpY2VDbGljayhkKX0+JHtkLm5hbWV9PC9zcGFuPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iaW1hZ2UiIHRpdGxlPSIke2QuaW1hZ2V9Ij4ke2QuaW1hZ2V9PC9zcGFuPgogICAgICAgICAgICA8c3Bhbj4KICAgICAgICAgICAgICAke2QuZG9tYWluP3dgPGEgY2xhc3M9ImRvbWFpbi1saW5rIiBocmVmPSJodHRwczovLyR7ZC5kb21haW59IiB0YXJnZXQ9Il9ibGFuayI+JHtkLmRvbWFpbn08L2E+YDoiLSJ9CiAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4+PHNwYW4gY2xhc3M9InN0YXR1cy1iYWRnZSAke2Quc3RhdHVzfSI+JHtkLnN0YXR1c308L3NwYW4+PC9zcGFuPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iYWN0aW9ucyI+CiAgICAgICAgICAgICAgJHtkLnN0YXR1cz09PSJydW5uaW5nIj93YDxidXR0b24gY2xhc3M9ImFjdGlvbi1idXR0b24gc3RvcCIgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlQWN0aW9uKGQsInN0b3AiKX0+U3RvcDwvYnV0dG9uPmA6d2A8YnV0dG9uIGNsYXNzPSJhY3Rpb24tYnV0dG9uIHN0YXJ0IiBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVBY3Rpb24oZCwic3RhcnQiKX0+U3RhcnQ8L2J1dHRvbj5gfQogICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImFjdGlvbi1idXR0b24gcmVzdGFydCIgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlQWN0aW9uKGQsInJlc3RhcnQiKX0+UmVzdGFydDwvYnV0dG9uPgogICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImFjdGlvbi1idXR0b24gZGVsZXRlIiBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVBY3Rpb24oZCwiZGVsZXRlIil9PkRlbGV0ZTwvYnV0dG9uPgogICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgKTp3YAogICAgICAgICAgPGRpdiBjbGFzcz0iZW1wdHktc3RhdGUiPk5vIHNlcnZpY2VzIGRlcGxveWVkPC9kaXY+CiAgICAgICAgYH0KICAgICAgPC9kaXY+CiAgICBgfWhhbmRsZVNlcnZpY2VDbGljayhkKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJzZXJ2aWNlLWNsaWNrIix7ZGV0YWlsOmQsYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1oYW5kbGVBY3Rpb24oZCx1KXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJzZXJ2aWNlLWFjdGlvbiIse2RldGFpbDp7c2VydmljZTpkLGFjdGlvbjp1fSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWNvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSxmb3QodGhpcyxsKX1zdGF0aWN7Zm90KGEsdCl9fTtyZXR1cm4gcD1hfSkoKX0pO3ZhciBtb3QsZ1EsVlFhLFE3YT1nKCgpPT57cGUoKTttb3Q9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LGdRPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxWUWE9KCgpPT57bGV0IHM9W25lKCJzei1zZXJ2aWNlcy1iYWNrdXBzLXZpZXciKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXTt2YXIgYz1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiU3pTZXJ2aWNlc0JhY2t1cHNWaWV3Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGI9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpBcnJheX0pXSxwPVtMKHt0eXBlOkFycmF5fSldLG1vdCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNjaGVkdWxlcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh2PT4ic2NoZWR1bGVzImluIHYsImhhcyIpLGdldDppKHY9PnYuc2NoZWR1bGVzLCJnZXQiKSxzZXQ6aSgodix4KT0+e3Yuc2NoZWR1bGVzPXh9LCJzZXQiKX0sbWV0YWRhdGE6Yn0sbyxsKSxtb3QodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJiYWNrdXBzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHY9PiJiYWNrdXBzImluIHYsImhhcyIpLGdldDppKHY9PnYuYmFja3VwcywiZ2V0Iiksc2V0OmkoKHYseCk9Pnt2LmJhY2t1cHM9eH0sInNldCIpfSxtZXRhZGF0YTpifSxkLHUpLG1vdChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpifSxudWxsLHQpLGM9YT1lLnZhbHVlLGImJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pfXN0YXRpYyBkZW1vPWkoKCk9PndgCiAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nOiAyNHB4OyBtYXgtd2lkdGg6IDEyMDBweDsiPgogICAgICA8c3otc2VydmljZXMtYmFja3Vwcy12aWV3CiAgICAgICAgLnNjaGVkdWxlcz0ke1t7aWQ6IjEiLHNjb3BlOiJBbGwgU2VydmljZXMiLHJldGVudGlvbjoiRDo3LCBXOjQsIE06MTIiLHNjaGVkdWxlOiIwIDIgKiAqICoiLGxhc3RSdW46IjEvMi8yMDI2LCAyOjAwOjAzIEFNIixuZXh0UnVuOiIxLzMvMjAyNiwgMjowMDowMCBBTSIsc3RhdHVzOiJhY3RpdmUifV19CiAgICAgICAgLmJhY2t1cHM9JHtbe2lkOiIxIixzZXJ2aWNlOiJ0ZXN0LW5naW54IixjcmVhdGVkQXQ6IjEvMi8yMDI2LCAyOjAwOjAzIEFNIixzaXplOiIyMi4wIE1CIixpbmNsdWRlczpbIkltYWdlIl19LHtpZDoiMiIsc2VydmljZToiaGVsbG8td29ybGQiLGNyZWF0ZWRBdDoiMS8yLzIwMjYsIDI6MDA6MDIgQU0iLHNpemU6IjIxLjUgTUIiLGluY2x1ZGVzOlsiSW1hZ2UiXX0se2lkOiIzIixzZXJ2aWNlOiJ0ZXN0LWNoLWZpbmFsIixjcmVhdGVkQXQ6IjEvMi8yMDI2LCAyOjAwOjAwIEFNIixzaXplOiIyMi4wIE1CIixpbmNsdWRlczpbIkltYWdlIiwiY2xpY2tob3VzZSJdfV19CiAgICAgID48L3N6LXNlcnZpY2VzLWJhY2t1cHMtdmlldz4KICAgIDwvZGl2PgogIGAsImRlbW8iKTtzdGF0aWMgZGVtb0dyb3Vwcz1bIlNlcnZpY2VzIl07I2U9Z1EodGhpcyxvLFtdKTtnZXQgc2NoZWR1bGVzKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHNjaGVkdWxlcyhiKXt0aGlzLiNlPWJ9I3Q9KGdRKHRoaXMsbCksZ1EodGhpcyxkLFtdKSk7Z2V0IGJhY2t1cHMoKXtyZXR1cm4gdGhpcy4jdH1zZXQgYmFja3VwcyhiKXt0aGlzLiN0PWJ9c3RhdGljIHN0eWxlcz1baC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgZGVlcy10aWxlIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgICB9CgogICAgICAuc2VjdGlvbi1oZWFkZXIgewogICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgIC5zZWN0aW9uLWhlYWRpbmcgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgbWluLXdpZHRoOiAwOwogICAgICB9CgogICAgICAuc2VjdGlvbi10aXRsZSB7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgfQoKICAgICAgLnNlY3Rpb24tc3VidGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgIH0KCiAgICAgIC5zZWN0aW9uLWZvb3RlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDA7CiAgICAgICAgaGVpZ2h0OiAzNnB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgIC50aWxlLWJ1dHRvbiB7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLXN1YnRsZSk7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA2cHg7CiAgICAgIH0KCiAgICAgIC50aWxlLWJ1dHRvbjpmaXJzdC1jaGlsZCB7CiAgICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7CiAgICAgIH0KCiAgICAgIC50aWxlLWJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1ob3Zlcik7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgfQoKICAgICAgLnRpbGUtYnV0dG9uLnByaW1hcnkgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNy4yIDkxLjIlIDU5LjglKSIsImhzbCgyMTMuMSA5My45JSA2Ny44JSkiKX07CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgfQoKICAgICAgLnRpbGUtYnV0dG9uLnByaW1hcnk6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjE3LjIgOTEuMiUgNTkuOCUgLyAwLjA4KSIsImhzbCgyMTMuMSA5My45JSA2Ny44JSAvIDAuMDgpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNy4yIDkxLjIlIDUwJSkiLCJoc2woMjEzLjEgOTMuOSUgNzUlKSIpfTsKICAgICAgfQoKICAgICAgLnRhYmxlLWhlYWRlciB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBnYXA6IDE2cHg7CiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzE4MTgxYiIpfTsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNGU0ZTciLCIjMjcyNzJhIil9OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICB9CgogICAgICAuc2NoZWR1bGVzLWhlYWRlciB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyIDFmciAxLjVmciAxLjVmciA4MHB4IDEyMHB4OwogICAgICB9CgogICAgICAuYmFja3Vwcy1oZWFkZXIgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMS41ZnIgMS41ZnIgMTAwcHggMWZyIDEyMHB4OwogICAgICB9CgogICAgICAudGFibGUtcm93IHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdhcDogMTZweDsKICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzI3MjcyYSIpfTsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICB9CgogICAgICAuc2NoZWR1bGVzLXJvdyB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyIDFmciAxLjVmciAxLjVmciA4MHB4IDEyMHB4OwogICAgICB9CgogICAgICAuYmFja3Vwcy1yb3cgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMS41ZnIgMS41ZnIgMTAwcHggMWZyIDEyMHB4OwogICAgICB9CgogICAgICAudGFibGUtcm93Omxhc3QtY2hpbGQgewogICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7CiAgICAgIH0KCiAgICAgIC50YWJsZS1yb3c6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzE4MTgxYiIpfTsKICAgICAgfQoKICAgICAgLnN0YXR1cy1iYWRnZSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiAycHggOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OTlweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgfQoKICAgICAgLnN0YXR1cy1iYWRnZS5hY3RpdmUgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZGNmY2U3IiwicmdiYSgzNCwgMTk3LCA5NCwgMC4yKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxNmEzNGEiLCIjMjJjNTVlIil9OwogICAgICB9CgogICAgICAuc3RhdHVzLWJhZGdlLmZhaWxlZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZWUyZTIiLCJyZ2JhKDIzOSwgNjgsIDY4LCAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2RjMjYyNiIsIiNlZjQ0NDQiKX07CiAgICAgIH0KCiAgICAgIC5zdGF0dXMtYmFkZ2UuZGlzYWJsZWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzI3MjcyYSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICB9CgogICAgICAubWV0YS10ZXh0IHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQoKICAgICAgLmluY2x1ZGVzLWxpc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgIGdhcDogNHB4OwogICAgICB9CgogICAgICAuaW5jbHVkZS1iYWRnZSB7CiAgICAgICAgcGFkZGluZzogMnB4IDhweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2RiZWFmZSIsInJnYmEoNTksIDEzMCwgMjQ2LCAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzI1NjNlYiIsIiM2MGE1ZmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICB9CgogICAgICAucm93LWFjdGlvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiA0cHg7CiAgICAgIH0KCiAgICAgIC5pY29uLWJ1dHRvbiB7CiAgICAgICAgcGFkZGluZzogNnB4OwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTRlNGU3IiwiIzI3MjcyYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDIwMG1zIGVhc2U7CiAgICAgIH0KCiAgICAgIC5pY29uLWJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMTgxODFiIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgIH0KCiAgICAgIC5pY29uLWJ1dHRvbi5kYW5nZXI6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmVlMmUyIiwicmdiYSgyMzksIDY4LCA2OCwgMC4yKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNkYzI2MjYiLCIjZWY0NDQ0Iil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiNmZWUyZTIiLCJyZ2JhKDIzOSwgNjgsIDY4LCAwLjMpIil9OwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRlZXMtdGlsZT4KICAgICAgICA8ZGl2IHNsb3Q9ImhlYWRlciIgY2xhc3M9InNlY3Rpb24taGVhZGVyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24taGVhZGluZyI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5CYWNrdXAgU2NoZWR1bGVzPC9zcGFuPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdGlvbi1zdWJ0aXRsZSI+Q29uZmlndXJlIGF1dG9tYXRlZCBiYWNrdXAgc2NoZWR1bGVzIGZvciB5b3VyIHNlcnZpY2VzPC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0idGFibGUtaGVhZGVyIHNjaGVkdWxlcy1oZWFkZXIiPgogICAgICAgICAgPHNwYW4+U2NvcGU8L3NwYW4+CiAgICAgICAgICA8c3Bhbj5SZXRlbnRpb248L3NwYW4+CiAgICAgICAgICA8c3Bhbj5TY2hlZHVsZTwvc3Bhbj4KICAgICAgICAgIDxzcGFuPkxhc3QgUnVuPC9zcGFuPgogICAgICAgICAgPHNwYW4+TmV4dCBSdW48L3NwYW4+CiAgICAgICAgICA8c3Bhbj5TdGF0dXM8L3NwYW4+CiAgICAgICAgICA8c3Bhbj5BY3Rpb25zPC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICAgICR7dGhpcy5zY2hlZHVsZXMubWFwKGI9PndgCiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWJsZS1yb3cgc2NoZWR1bGVzLXJvdyI+CiAgICAgICAgICAgIDxzcGFuPiR7Yi5zY29wZX08L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJtZXRhLXRleHQiIHRpdGxlPSJLZWVwOiAke2IucmV0ZW50aW9ufSI+JHtiLnJldGVudGlvbn08L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJtZXRhLXRleHQiPiR7Yi5zY2hlZHVsZX08L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJtZXRhLXRleHQiPiR7Yi5sYXN0UnVufHwiLSJ9PC9zcGFuPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0ibWV0YS10ZXh0Ij4ke2IubmV4dFJ1bnx8Ii0ifTwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN0YXR1cy1iYWRnZSAke2Iuc3RhdHVzfSIgdGl0bGU9IiR7Yi5lcnJvcnx8IiJ9Ij4KICAgICAgICAgICAgICAgICR7Yi5zdGF0dXM9PT0iYWN0aXZlIj8iQWN0aXZlIjpiLnN0YXR1cz09PSJmYWlsZWQiPyJGYWlsZWQiOiJEaXNhYmxlZCJ9CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJyb3ctYWN0aW9ucyI+CiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iaWNvbi1idXR0b24iIHRpdGxlPSJSdW4gYmFja3VwIG5vdyIgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlUnVuTm93KGIpfT4KICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9IjE0IiBoZWlnaHQ9IjE0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9ImN1cnJlbnRDb2xvciI+PHBvbHlnb24gcG9pbnRzPSI1LDMgMTksMTIgNSwyMSIvPjwvc3ZnPgogICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9Imljb24tYnV0dG9uIiB0aXRsZT0iJHtiLnN0YXR1cz09PSJkaXNhYmxlZCI/IkVuYWJsZSI6IkRpc2FibGUifSIgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlVG9nZ2xlKGIpfT4KICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9IjE0IiBoZWlnaHQ9IjE0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgICAgICAgICAgICAgICAke2Iuc3RhdHVzPT09ImRpc2FibGVkIj93YDxwb2x5bGluZSBwb2ludHM9IjIwIDYgOSAxNyA0IDEyIj48L3BvbHlsaW5lPmA6d2A8cmVjdCB4PSI2IiB5PSI2IiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHJ4PSIxIi8+YH0KICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9Imljb24tYnV0dG9uIGRhbmdlciIgdGl0bGU9IkRlbGV0ZSIgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlRGVsZXRlU2NoZWR1bGUoYil9PgogICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+CiAgICAgICAgICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9IjMsNiA1LDYgMjEsNiIvPjxwYXRoIGQ9Ik0xOSw2djE0YTIsMiwwLDAsMS0yLDJIN2EyLDIsMCwwLDEtMi0yVjZtMywwVjRhMiwyLDAsMCwxLDItMmg0YTIsMiwwLDAsMSwyLDJ2MiIvPgogICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIGApfQogICAgICAgIDxkaXYgc2xvdD0iZm9vdGVyIiBjbGFzcz0ic2VjdGlvbi1mb290ZXIiPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idGlsZS1idXR0b24iIEBjbGljaz0keygpPT50aGlzLmhhbmRsZUltcG9ydCgpfT4KICAgICAgICAgICAgPHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+CiAgICAgICAgICAgICAgPHBhdGggZD0iTTIxIDE1djRhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJ2LTQiLz4KICAgICAgICAgICAgICA8cG9seWxpbmUgcG9pbnRzPSIxNyA4IDEyIDMgNyA4Ii8+CiAgICAgICAgICAgICAgPGxpbmUgeDE9IjEyIiB5MT0iMyIgeDI9IjEyIiB5Mj0iMTUiLz4KICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgIEltcG9ydCBCYWNrdXAKICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idGlsZS1idXR0b24gcHJpbWFyeSIgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlQ3JlYXRlU2NoZWR1bGUoKX0+CiAgICAgICAgICAgIDxzdmcgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgICAgICAgICAgIDxsaW5lIHgxPSIxMiIgeTE9IjUiIHgyPSIxMiIgeTI9IjE5Ij48L2xpbmU+CiAgICAgICAgICAgICAgPGxpbmUgeDE9IjUiIHkxPSIxMiIgeDI9IjE5IiB5Mj0iMTIiPjwvbGluZT4KICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgIENyZWF0ZSBTY2hlZHVsZQogICAgICAgICAgPC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy10aWxlPgoKICAgICAgPGRlZXMtdGlsZT4KICAgICAgICA8ZGl2IHNsb3Q9ImhlYWRlciIgY2xhc3M9InNlY3Rpb24taGVhZGVyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24taGVhZGluZyI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5BbGwgQmFja3Vwczwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3Rpb24tc3VidGl0bGUiPkJyb3dzZSBhbmQgbWFuYWdlIGFsbCBiYWNrdXBzIGFjcm9zcyBzZXJ2aWNlczwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InRhYmxlLWhlYWRlciBiYWNrdXBzLWhlYWRlciI+CiAgICAgICAgICA8c3Bhbj5TZXJ2aWNlPC9zcGFuPgogICAgICAgICAgPHNwYW4+Q3JlYXRlZDwvc3Bhbj4KICAgICAgICAgIDxzcGFuPlNpemU8L3NwYW4+CiAgICAgICAgICA8c3Bhbj5JbmNsdWRlczwvc3Bhbj4KICAgICAgICAgIDxzcGFuPkFjdGlvbnM8L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgICAgJHt0aGlzLmJhY2t1cHMubWFwKGI9PndgCiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWJsZS1yb3cgYmFja3Vwcy1yb3ciPgogICAgICAgICAgICA8c3Bhbj4ke2Iuc2VydmljZX08L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJtZXRhLXRleHQiPiR7Yi5jcmVhdGVkQXR9PC9zcGFuPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0ibWV0YS10ZXh0Ij4ke2Iuc2l6ZX08L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpbmNsdWRlcy1saXN0Ij4KICAgICAgICAgICAgICAke2IuaW5jbHVkZXMubWFwKHY9PndgPHNwYW4gY2xhc3M9ImluY2x1ZGUtYmFkZ2UiPiR7dn08L3NwYW4+YCl9CiAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJvdy1hY3Rpb25zIj4KICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJpY29uLWJ1dHRvbiIgdGl0bGU9IkRvd25sb2FkIGJhY2t1cCIgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlRG93bmxvYWQoYil9PgogICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+CiAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMSAxNXY0YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0ydi00Ii8+CiAgICAgICAgICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9IjcgMTAgMTIgMTUgMTcgMTAiLz4KICAgICAgICAgICAgICAgICAgPGxpbmUgeDE9IjEyIiB5MT0iMTUiIHgyPSIxMiIgeTI9IjMiLz4KICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9Imljb24tYnV0dG9uIGRhbmdlciIgdGl0bGU9IkRlbGV0ZSIgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlRGVsZXRlQmFja3VwKGIpfT4KICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9IjE0IiBoZWlnaHQ9IjE0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgICAgICAgICAgICAgICA8cG9seWxpbmUgcG9pbnRzPSIzLDYgNSw2IDIxLDYiLz48cGF0aCBkPSJNMTksNnYxNGEyLDIsMCwwLDEtMiwySDdhMiwyLDAsMCwxLTItMlY2bTMsMFY0YTIsMiwwLDAsMSwyLTJoNGEyLDIsMCwwLDEsMiwydjIiLz4KICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgKX0KICAgICAgPC9kZWVzLXRpbGU+CiAgICBgfWhhbmRsZUltcG9ydCgpe3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImltcG9ydCIse2J1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9aGFuZGxlQ3JlYXRlU2NoZWR1bGUoKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjcmVhdGUtc2NoZWR1bGUiLHtidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZVJ1bk5vdyhiKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJydW4tbm93Iix7ZGV0YWlsOmIsYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1oYW5kbGVUb2dnbGUoYil7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgidG9nZ2xlLXNjaGVkdWxlIix7ZGV0YWlsOmIsYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1oYW5kbGVEZWxldGVTY2hlZHVsZShiKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJkZWxldGUtc2NoZWR1bGUiLHtkZXRhaWw6YixidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZURvd25sb2FkKGIpe3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImRvd25sb2FkIix7ZGV0YWlsOmIsYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1oYW5kbGVEZWxldGVCYWNrdXAoYil7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiZGVsZXRlLWJhY2t1cCIse2RldGFpbDpiLGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLGdRKHRoaXMsdSl9c3RhdGlje2dRKGEsdCl9fTtyZXR1cm4gYz1hfSkoKX0pO3ZhciBDdSxBbyxVUWEsSjdhPWcoKCk9PntwZSgpO0N1PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxBbz1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sVVFhPSgoKT0+e2xldCBzPVtuZSgic3otc2VydmljZS1kZXRhaWwtdmlldyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdLEgsaz1bXSxTPVtdO3ZhciBJPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJTelNlcnZpY2VEZXRhaWxWaWV3Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IFA9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpPYmplY3R9KV0scD1bTCh7dHlwZTpPYmplY3R9KV0sYz1bTCh7dHlwZTpBcnJheX0pXSx4PVtMKHt0eXBlOkFycmF5fSldLHk9W0woe3R5cGU6Qm9vbGVhbn0pXSxOPVtMKHt0eXBlOk9iamVjdH0pXSxPPVtMKHt0eXBlOlN0cmluZ30pXSxIPVtZKCldLEN1KHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VydmljZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShSPT4ic2VydmljZSJpbiBSLCJoYXMiKSxnZXQ6aShSPT5SLnNlcnZpY2UsImdldCIpLHNldDppKChSLEspPT57Ui5zZXJ2aWNlPUt9LCJzZXQiKX0sbWV0YWRhdGE6UH0sbyxsKSxDdSh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InN0YXRzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFI9PiJzdGF0cyJpbiBSLCJoYXMiKSxnZXQ6aShSPT5SLnN0YXRzLCJnZXQiKSxzZXQ6aSgoUixLKT0+e1Iuc3RhdHM9S30sInNldCIpfSxtZXRhZGF0YTpQfSxkLHUpLEN1KHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYmFja3VwcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShSPT4iYmFja3VwcyJpbiBSLCJoYXMiKSxnZXQ6aShSPT5SLmJhY2t1cHMsImdldCIpLHNldDppKChSLEspPT57Ui5iYWNrdXBzPUt9LCJzZXQiKX0sbWV0YWRhdGE6UH0sYix2KSxDdSh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImxvZ3MiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUj0+ImxvZ3MiaW4gUiwiaGFzIiksZ2V0OmkoUj0+Ui5sb2dzLCJnZXQiKSxzZXQ6aSgoUixLKT0+e1IubG9ncz1LfSwic2V0Iil9LG1ldGFkYXRhOlB9LG0sZiksQ3UodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzdHJlYW1pbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUj0+InN0cmVhbWluZyJpbiBSLCJoYXMiKSxnZXQ6aShSPT5SLnN0cmVhbWluZywiZ2V0Iiksc2V0OmkoKFIsSyk9PntSLnN0cmVhbWluZz1LfSwic2V0Iil9LG1ldGFkYXRhOlB9LE0seiksQ3UodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ3b3Jrc3BhY2VFbnZpcm9ubWVudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShSPT4id29ya3NwYWNlRW52aXJvbm1lbnQiaW4gUiwiaGFzIiksZ2V0OmkoUj0+Ui53b3Jrc3BhY2VFbnZpcm9ubWVudCwiZ2V0Iiksc2V0OmkoKFIsSyk9PntSLndvcmtzcGFjZUVudmlyb25tZW50PUt9LCJzZXQiKX0sbWV0YWRhdGE6UH0sQyxfKSxDdSh0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6IndvcmtzcGFjZVBhdGgiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUj0+IndvcmtzcGFjZVBhdGgiaW4gUiwiaGFzIiksZ2V0OmkoUj0+Ui53b3Jrc3BhY2VQYXRoLCJnZXQiKSxzZXQ6aSgoUixLKT0+e1Iud29ya3NwYWNlUGF0aD1LfSwic2V0Iil9LG1ldGFkYXRhOlB9LCQsRSksQ3UodGhpcyxudWxsLEgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjdXJyZW50VmlldyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShSPT4iY3VycmVudFZpZXciaW4gUiwiaGFzIiksZ2V0OmkoUj0+Ui5jdXJyZW50VmlldywiZ2V0Iiksc2V0OmkoKFIsSyk9PntSLmN1cnJlbnRWaWV3PUt9LCJzZXQiKX0sbWV0YWRhdGE6UH0sayxTKSxDdShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpQfSxudWxsLHQpLEk9YT1lLnZhbHVlLFAmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6UH0pfXN0YXRpYyBkZW1vPWkoKCk9PndgCiAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nOiAyNHB4OyBtYXgtd2lkdGg6IDEyMDBweDsiPgogICAgICA8c3otc2VydmljZS1kZXRhaWwtdmlldwogICAgICAgIC5zZXJ2aWNlPSR7e25hbWU6InRlc3QtbmdpbngiLHN0YXR1czoicnVubmluZyIsaW1hZ2U6Im5naW54OmFscGluZSIscG9ydDo4MCxkb21haW46ImFwcC5ibGV1LmRlIixjb250YWluZXJJZDoicGNoYmJyOWZqcjRnIixjcmVhdGVkOiIxMS8xOC8yMDI1LCAyOjA2OjU1IFBNIix1cGRhdGVkOiIxMS8yNi8yMDI1LCA0OjA1OjQ2IFBNIixyZWdpc3RyeToiRG9ja2VyIEh1YiIscmVwb3NpdG9yeToibmdpbngiLHRhZzoiYWxwaW5lIn19CiAgICAgICAgLnN0YXRzPSR7e2NwdTouNSxtZW1vcnk6IjMyLjEgTUIiLG1lbW9yeUxpbWl0OiI2MS4zIEdCIixuZXR3b3JrSW46IjYuNCBLQiIsbmV0d29ya091dDoiMjUyIEIifX0KICAgICAgICAuYmFja3Vwcz0ke1t7aWQ6IjEiLGNyZWF0ZWRBdDoiMS8yLzIwMjYsIDI6MDA6MDMgQU0iLHNpemU6IjIxLjk2IE1CIix0eXBlOiJEb2NrZXIgSW1hZ2UifSx7aWQ6IjIiLGNyZWF0ZWRBdDoiMTEvMjcvMjAyNSwgMTo0MjoyNiBQTSIsc2l6ZToiNTEuNzYgTUIiLHR5cGU6IkRvY2tlciBJbWFnZSJ9XX0KICAgICAgICAubG9ncz0ke1t7dGltZXN0YW1wOiIyMDI0LTAxLTAyIDEwOjE1OjMyIixtZXNzYWdlOicxOTIuMTY4LjEuMTAwIC0gLSBbMDIvSmFuLzIwMjQ6MTA6MTU6MzIgKzAwMDBdICJHRVQgLyBIVFRQLzEuMSIgMjAwIDYxMid9LHt0aW1lc3RhbXA6IjIwMjQtMDEtMDIgMTA6MTU6MzAiLG1lc3NhZ2U6JzE5Mi4xNjguMS4xMDAgLSAtIFswMi9KYW4vMjAyNDoxMDoxNTozMCArMDAwMF0gIkdFVCAvZmF2aWNvbi5pY28gSFRUUC8xLjEiIDQwNCAxNTMnfV19CiAgICAgID48L3N6LXNlcnZpY2UtZGV0YWlsLXZpZXc+CiAgICA8L2Rpdj4KICBgLCJkZW1vIik7c3RhdGljIGRlbW9Hcm91cHM9WyJTZXJ2aWNlcyJdOyNlPUFvKHRoaXMsbyx7bmFtZToiIixzdGF0dXM6InN0b3BwZWQiLGltYWdlOiIiLHBvcnQ6MCxkb21haW46bnVsbCxjb250YWluZXJJZDoiIixjcmVhdGVkOiIiLHVwZGF0ZWQ6IiIscmVnaXN0cnk6IiIscmVwb3NpdG9yeToiIix0YWc6IiJ9KTtnZXQgc2VydmljZSgpe3JldHVybiB0aGlzLiNlfXNldCBzZXJ2aWNlKFApe3RoaXMuI2U9UH0jdD0oQW8odGhpcyxsKSxBbyh0aGlzLGQse2NwdTowLG1lbW9yeToiMCBNQiIsbWVtb3J5TGltaXQ6IjAgR0IiLG5ldHdvcmtJbjoiMCBCIixuZXR3b3JrT3V0OiIwIEIifSkpO2dldCBzdGF0cygpe3JldHVybiB0aGlzLiN0fXNldCBzdGF0cyhQKXt0aGlzLiN0PVB9I2E9KEFvKHRoaXMsdSksQW8odGhpcyxiLFtdKSk7Z2V0IGJhY2t1cHMoKXtyZXR1cm4gdGhpcy4jYX1zZXQgYmFja3VwcyhQKXt0aGlzLiNhPVB9I3M9KEFvKHRoaXMsdiksQW8odGhpcyxtLFtdKSk7Z2V0IGxvZ3MoKXtyZXR1cm4gdGhpcy4jc31zZXQgbG9ncyhQKXt0aGlzLiNzPVB9I2k9KEFvKHRoaXMsZiksQW8odGhpcyxNLCExKSk7Z2V0IHN0cmVhbWluZygpe3JldHVybiB0aGlzLiNpfXNldCBzdHJlYW1pbmcoUCl7dGhpcy4jaT1QfSNyPShBbyh0aGlzLHopLEFvKHRoaXMsQyxudWxsKSk7Z2V0IHdvcmtzcGFjZUVudmlyb25tZW50KCl7cmV0dXJuIHRoaXMuI3J9c2V0IHdvcmtzcGFjZUVudmlyb25tZW50KFApe3RoaXMuI3I9UH0jbz0oQW8odGhpcyxfKSxBbyh0aGlzLCQsIi8iKSk7Z2V0IHdvcmtzcGFjZVBhdGgoKXtyZXR1cm4gdGhpcy4jb31zZXQgd29ya3NwYWNlUGF0aChQKXt0aGlzLiNvPVB9I249KEFvKHRoaXMsRSksQW8odGhpcyxrLCJkZXRhaWxzIikpO2dldCBjdXJyZW50Vmlldygpe3JldHVybiB0aGlzLiNufXNldCBjdXJyZW50VmlldyhQKXt0aGlzLiNuPVB9c3RhdGljIHN0eWxlcz1baC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgLmhlYWRlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMTZweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgICB9CgogICAgICAuYmFjay1saW5rIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAyMDBtcyBlYXNlOwogICAgICB9CgogICAgICAuYmFjay1saW5rOmhvdmVyIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAuc2VydmljZS1oZWFkZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDEycHg7CiAgICAgIH0KCiAgICAgIC5zZXJ2aWNlLW5hbWUgewogICAgICAgIGZvbnQtc2l6ZTogMjRweDsKICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgIH0KCiAgICAgIC5zdGF0dXMtYmFkZ2UgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgcGFkZGluZzogNHB4IDEycHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5OXB4OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICB9CgogICAgICAuc3RhdHVzLWJhZGdlLnJ1bm5pbmcgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZGNmY2U3IiwicmdiYSgzNCwgMTk3LCA5NCwgMC4yKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxNmEzNGEiLCIjMjJjNTVlIil9OwogICAgICB9CgogICAgICAuc3RhdHVzLWJhZGdlLnN0b3BwZWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmVlMmUyIiwicmdiYSgyMzksIDY4LCA2OCwgMC4yKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNkYzI2MjYiLCIjZWY0NDQ0Iil9OwogICAgICB9CgogICAgICAuY29udGVudCB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKICAgICAgICBnYXA6IDI0cHg7CiAgICAgIH0KCiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHsKICAgICAgICAuY29udGVudCB7CiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDJmciAxZnI7CiAgICAgICAgfQogICAgICB9CgogICAgICAubWFpbi1jb250ZW50IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiAyNHB4OwogICAgICB9CgogICAgICAuc2lkZWJhciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMjRweDsKICAgICAgfQoKICAgICAgLmNhcmQtaGVhZGVyIHsKICAgICAgICBoZWlnaHQ6IDM2cHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDAgOHB4IDAgMTZweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAuY2FyZC1oZWFkaW5nIHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIG1pbi13aWR0aDogMDsKICAgICAgfQoKICAgICAgLmNhcmQtdGl0bGUgewogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgIH0KCiAgICAgIC5jYXJkLXN1YnRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICB9CgogICAgICAuY2FyZC1mb290ZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAwOwogICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAudGlsZS1idXR0b24gewogICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1zdWJ0bGUpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4OwogICAgICB9CgogICAgICAudGlsZS1idXR0b246Zmlyc3QtY2hpbGQgewogICAgICAgIGJvcmRlci1sZWZ0OiBub25lOwogICAgICB9CgogICAgICAudGlsZS1idXR0b246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItaG92ZXIpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIH0KCiAgICAgIC50aWxlLWJ1dHRvbi5wcmltYXJ5IHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTcuMiA5MS4yJSA1OS44JSkiLCJoc2woMjEzLjEgOTMuOSUgNjcuOCUpIil9OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIH0KCiAgICAgIC50aWxlLWJ1dHRvbi5wcmltYXJ5OmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxNy4yIDkxLjIlIDU5LjglIC8gMC4wOCkiLCJoc2woMjEzLjEgOTMuOSUgNjcuOCUgLyAwLjA4KSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTcuMiA5MS4yJSA1MCUpIiwiaHNsKDIxMy4xIDkzLjklIDc1JSkiKX07CiAgICAgIH0KCiAgICAgIC50aWxlLWJ1dHRvbi5kYW5nZXIgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2RjMjYyNiIsIiNlZjQ0NDQiKX07CiAgICAgIH0KCiAgICAgIC50aWxlLWJ1dHRvbi5kYW5nZXI6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmVlMmUyIiwicmdiYSgyMzksIDY4LCA2OCwgMC4xKSIpfTsKICAgICAgfQoKICAgICAgLmNhcmQtY29udGVudCB7CiAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgfQoKICAgICAgLmRldGFpbC1saXN0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICB9CgogICAgICAuZGV0YWlsLWl0ZW0gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICB9CgogICAgICAuZGV0YWlsLWxhYmVsIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQoKICAgICAgLmRldGFpbC12YWx1ZSB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgIH0KCiAgICAgIC5kZXRhaWwtdmFsdWUgYSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMjU2M2ViIiwiIzYwYTVmYSIpfTsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgIH0KCiAgICAgIC5kZXRhaWwtdmFsdWUgYTpob3ZlciB7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICAgIH0KCiAgICAgIC5zdGF0cy1ncmlkIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICB9CgogICAgICAuc3RhdC1pdGVtIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMxODE4MWIiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIHBhZGRpbmc6IDEycHg7CiAgICAgIH0KCiAgICAgIC5zdGF0LWxhYmVsIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4OwogICAgICB9CgogICAgICAuc3RhdC12YWx1ZSB7CiAgICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLnN0YXQtc3VidmFsdWUgewogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNhMWExYWEiLCIjNTI1MjViIil9OwogICAgICB9CgogICAgICAuYWN0aW9ucy1ncmlkIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBwYWRkaW5nOiAxMHB4IDE2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMjAwbXMgZWFzZTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U0ZTRlNyIsIiMyNzI3MmEiKX07CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDkwOTBiIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMxODE4MWIiKX07CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uLmRhbmdlciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZGMyNjI2IiwiI2VmNDQ0NCIpfTsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjZmVlMmUyIiwicmdiYSgyMzksIDY4LCA2OCwgMC4zKSIpfTsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idXR0b24uZGFuZ2VyOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZlZTJlMiIsInJnYmEoMjM5LCA2OCwgNjgsIDAuMikiKX07CiAgICAgIH0KCiAgICAgIC5iYWNrdXAtbGlzdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogOHB4OwogICAgICB9CgogICAgICAuYmFja3VwLWl0ZW0gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgcGFkZGluZzogMTJweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMxODE4MWIiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICB9CgogICAgICAuYmFja3VwLWluZm8gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDJweDsKICAgICAgfQoKICAgICAgLmJhY2t1cC1kYXRlIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLmJhY2t1cC1tZXRhIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQoKICAgICAgLmJhY2t1cC1hY3Rpb25zIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGdhcDogNHB4OwogICAgICB9CgogICAgICAuaWNvbi1idXR0b24gewogICAgICAgIHBhZGRpbmc6IDZweDsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U0ZTRlNyIsIiMyNzI3MmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAyMDBtcyBlYXNlOwogICAgICB9CgogICAgICAuaWNvbi1idXR0b246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzA5MDkwYiIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAudGFnLWJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBwYWRkaW5nOiAycHggOHB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZGJlYWZlIiwicmdiYSg1OSwgMTMwLCAyNDYsIDAuMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMjU2M2ViIiwiIzYwYTVmYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIH0KCiAgICAgIDpob3N0KC53b3Jrc3BhY2UtbW9kZSkgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgIC53b3Jrc3BhY2Utd3JhcHBlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgLndvcmtzcGFjZS1oZWFkZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U0ZTRlNyIsIiMyNzI3MmEiKX07CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDkwOTBiIil9OwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAud29ya3NwYWNlLWJhY2stbGluayB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDZweDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMyNTYzZWIiLCIjNjBhNWZhIil9OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAyMDBtcyBlYXNlOwogICAgICB9CgogICAgICAud29ya3NwYWNlLWJhY2stbGluazpob3ZlciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMWQ0ZWQ4IiwiIzkzYzVmZCIpfTsKICAgICAgfQoKICAgICAgLndvcmtzcGFjZS1zZXJ2aWNlLW5hbWUgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgIH0KCiAgICAgIC53b3Jrc3BhY2Utc3RhdHVzLWJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHdpZHRoOiA4cHg7CiAgICAgICAgaGVpZ2h0OiA4cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICB9CgogICAgICAud29ya3NwYWNlLXN0YXR1cy1iYWRnZS5ydW5uaW5nIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiIzIyYzU1ZSIsIiMyMmM1NWUiKX07CiAgICAgIH0KCiAgICAgIC53b3Jrc3BhY2Utc3RhdHVzLWJhZGdlLnN0b3BwZWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZWY0NDQ0IiwiI2VmNDQ0NCIpfTsKICAgICAgfQoKICAgICAgLndvcmtzcGFjZS1jb250YWluZXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG1pbi1oZWlnaHQ6IDA7CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB0aGlzLmN1cnJlbnRWaWV3PT09IndvcmtzcGFjZSI/dGhpcy5yZW5kZXJXb3Jrc3BhY2VWaWV3KCk6dGhpcy5yZW5kZXJEZXRhaWxzVmlldygpfXJlbmRlcldvcmtzcGFjZVZpZXcoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0id29ya3NwYWNlLXdyYXBwZXIiPgogICAgICAgIDxkaXYgY2xhc3M9IndvcmtzcGFjZS1oZWFkZXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0id29ya3NwYWNlLWJhY2stbGluayIgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlQ2xvc2VXb3Jrc3BhY2UoKX0+CiAgICAgICAgICAgIDxzdmcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9IjE1IDE4IDkgMTIgMTUgNiI+PC9wb2x5bGluZT4KICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgIEJhY2sgdG8gRGV0YWlscwogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8c3BhbiBjbGFzcz0id29ya3NwYWNlLXNlcnZpY2UtbmFtZSI+JHt0aGlzLnNlcnZpY2UubmFtZX08L3NwYW4+CiAgICAgICAgICA8c3BhbiBjbGFzcz0id29ya3NwYWNlLXN0YXR1cy1iYWRnZSAke3RoaXMuc2VydmljZS5zdGF0dXN9Ij48L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0id29ya3NwYWNlLWNvbnRhaW5lciI+CiAgICAgICAgICA8ZGVlcy13b3Jrc3BhY2UgLmV4ZWN1dGlvbkVudmlyb25tZW50PSR7dGhpcy53b3Jrc3BhY2VFbnZpcm9ubWVudH0+PC9kZWVzLXdvcmtzcGFjZT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfXJlbmRlckRldGFpbHNWaWV3KCl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgPGRpdiBjbGFzcz0iYmFjay1saW5rIiBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVCYWNrKCl9PgogICAgICAgICAgPHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+CiAgICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9IjE1IDE4IDkgMTIgMTUgNiI+PC9wb2x5bGluZT4KICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgQmFjayB0byBTZXJ2aWNlcwogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InNlcnZpY2UtaGVhZGVyIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMjRweDsiPgogICAgICAgIDxoMSBjbGFzcz0ic2VydmljZS1uYW1lIj4ke3RoaXMuc2VydmljZS5uYW1lfTwvaDE+CiAgICAgICAgPHNwYW4gY2xhc3M9InN0YXR1cy1iYWRnZSAke3RoaXMuc2VydmljZS5zdGF0dXN9Ij4ke3RoaXMuc2VydmljZS5zdGF0dXN9PC9zcGFuPgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9Im1haW4tY29udGVudCI+CiAgICAgICAgICA8ZGVlcy10aWxlPgogICAgICAgICAgICA8ZGl2IHNsb3Q9ImhlYWRlciIgY2xhc3M9ImNhcmQtaGVhZGVyIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWhlYWRpbmciPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhcmQtdGl0bGUiPlNlcnZpY2UgRGV0YWlsczwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtY29udGVudCI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGV0YWlsLWxpc3QiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGV0YWlsLWl0ZW0iPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZGV0YWlsLWxhYmVsIj5JbWFnZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRldGFpbC12YWx1ZSI+JHt0aGlzLnNlcnZpY2UuaW1hZ2V9PC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXRhaWwtaXRlbSI+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkZXRhaWwtbGFiZWwiPlBvcnQ8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkZXRhaWwtdmFsdWUiPiR7dGhpcy5zZXJ2aWNlLnBvcnR9PC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXRhaWwtaXRlbSI+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkZXRhaWwtbGFiZWwiPkRvbWFpbjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRldGFpbC12YWx1ZSI+CiAgICAgICAgICAgICAgICAgICAgJHt0aGlzLnNlcnZpY2UuZG9tYWluP3dgPGEgaHJlZj0iaHR0cHM6Ly8ke3RoaXMuc2VydmljZS5kb21haW59IiB0YXJnZXQ9Il9ibGFuayI+JHt0aGlzLnNlcnZpY2UuZG9tYWlufTwvYT5gOiItIn0KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXRhaWwtaXRlbSI+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkZXRhaWwtbGFiZWwiPkNvbnRhaW5lciBJRDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRldGFpbC12YWx1ZSI+JHt0aGlzLnNlcnZpY2UuY29udGFpbmVySWR9PC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXRhaWwtaXRlbSI+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkZXRhaWwtbGFiZWwiPkNyZWF0ZWQ8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkZXRhaWwtdmFsdWUiPiR7dGhpcy5zZXJ2aWNlLmNyZWF0ZWR9PC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXRhaWwtaXRlbSI+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkZXRhaWwtbGFiZWwiPlVwZGF0ZWQ8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkZXRhaWwtdmFsdWUiPiR7dGhpcy5zZXJ2aWNlLnVwZGF0ZWR9PC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IHNsb3Q9ImZvb3RlciIgY2xhc3M9ImNhcmQtZm9vdGVyIj4KICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJ0aWxlLWJ1dHRvbiBwcmltYXJ5IiBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVFZGl0KCl9PkVkaXQ8L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2RlZXMtdGlsZT4KCiAgICAgICAgICA8ZGVlcy1jaGFydC1sb2cKICAgICAgICAgICAgLmxhYmVsPSR7IlNlcnZpY2UgTG9ncyJ9CiAgICAgICAgICAgIC5sb2dFbnRyaWVzPSR7dGhpcy5sb2dzLm1hcChQPT4oe3RpbWVzdGFtcDpQLnRpbWVzdGFtcD8uaW5jbHVkZXM/LigiVCIpP1AudGltZXN0YW1wOm5ldyBEYXRlKFAudGltZXN0YW1wfHxEYXRlLm5vdygpKS50b0lTT1N0cmluZygpLGxldmVsOlAubGV2ZWx8fCJpbmZvIixtZXNzYWdlOlAubWVzc2FnZX0pKX0KICAgICAgICAgICAgLmF1dG9TY3JvbGw9JHshMH0KICAgICAgICAgICAgLm1heEVudHJpZXM9JHsyZTN9CiAgICAgICAgICAgIC5zaG93TWV0cmljcz0keyEwfQogICAgICAgICAgPjwvZGVlcy1jaGFydC1sb2c+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXIiPgogICAgICAgICAgPGRlZXMtdGlsZT4KICAgICAgICAgICAgPGRpdiBzbG90PSJoZWFkZXIiIGNsYXNzPSJjYXJkLWhlYWRlciI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1oZWFkaW5nIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjYXJkLXRpdGxlIj5MaXZlIHN0YXRzPC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1jb250ZW50Ij4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0cy1ncmlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtaXRlbSI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtbGFiZWwiPkNQVTwvZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0LXZhbHVlIj4ke3RoaXMuc3RhdHMuY3B1LnRvRml4ZWQoMSl9JTwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0LWl0ZW0iPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0LWxhYmVsIj5NZW1vcnk8L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC12YWx1ZSI+JHt0aGlzLnN0YXRzLm1lbW9yeX08L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC1zdWJ2YWx1ZSI+b2YgJHt0aGlzLnN0YXRzLm1lbW9yeUxpbWl0fTwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0LWl0ZW0iPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0LWxhYmVsIj5OZXR3b3JrIEluPC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtdmFsdWUiPiR7dGhpcy5zdGF0cy5uZXR3b3JrSW59PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtaXRlbSI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtbGFiZWwiPk5ldHdvcmsgT3V0PC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtdmFsdWUiPiR7dGhpcy5zdGF0cy5uZXR3b3JrT3V0fTwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kZWVzLXRpbGU+CgogICAgICAgICAgPGRlZXMtdGlsZT4KICAgICAgICAgICAgPGRpdiBzbG90PSJoZWFkZXIiIGNsYXNzPSJjYXJkLWhlYWRlciI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1oZWFkaW5nIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjYXJkLXRpdGxlIj5BY3Rpb25zPC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhcmQtc3VidGl0bGUiPk1hbmFnZSBzZXJ2aWNlIHN0YXRlPC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1jb250ZW50Ij4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb25zLWdyaWQiPgogICAgICAgICAgICAgICAgJHt0aGlzLnNlcnZpY2Uuc3RhdHVzPT09InJ1bm5pbmciP3dgPGJ1dHRvbiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiIgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlQWN0aW9uKCJzdG9wIil9PlN0b3AgU2VydmljZTwvYnV0dG9uPmA6d2A8YnV0dG9uIGNsYXNzPSJhY3Rpb24tYnV0dG9uIiBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVBY3Rpb24oInN0YXJ0Iil9PlN0YXJ0IFNlcnZpY2U8L2J1dHRvbj5gfQogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiIgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlQWN0aW9uKCJyZXN0YXJ0Iil9PlJlc3RhcnQgU2VydmljZTwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiIgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlT3BlbldvcmtzcGFjZSgpfT4KICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3R5bGU9ImRpc3BsYXk6IGlubGluZTsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgbWFyZ2luLXJpZ2h0OiA0cHg7Ij4KICAgICAgICAgICAgICAgICAgICA8cG9seWxpbmUgcG9pbnRzPSI0IDE3IDEwIDExIDQgNSI+PC9wb2x5bGluZT4KICAgICAgICAgICAgICAgICAgICA8bGluZSB4MT0iMTIiIHkxPSIxOSIgeDI9IjIwIiB5Mj0iMTkiPjwvbGluZT4KICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgIE9wZW4gV29ya3NwYWNlCiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImFjdGlvbi1idXR0b24gZGFuZ2VyIiBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVBY3Rpb24oImRlbGV0ZSIpfT5EZWxldGUgU2VydmljZTwvYnV0dG9uPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGVlcy10aWxlPgoKICAgICAgICAgIDxkZWVzLXRpbGU+CiAgICAgICAgICAgIDxkaXYgc2xvdD0iaGVhZGVyIiBjbGFzcz0iY2FyZC1oZWFkZXIiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaGVhZGluZyI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2FyZC10aXRsZSI+SW1hZ2UgU291cmNlPC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhcmQtc3VidGl0bGUiPiR7dGhpcy5zZXJ2aWNlLnJlZ2lzdHJ5PT09IkRvY2tlciBIdWIiPyJFeHRlcm5hbCBjb250YWluZXIgcmVnaXN0cnkiOiJPbmVib3ggcmVnaXN0cnkifTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtY29udGVudCI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGV0YWlsLWxpc3QiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGV0YWlsLWl0ZW0iPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZGV0YWlsLWxhYmVsIj5SZWdpc3RyeTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRldGFpbC12YWx1ZSI+JHt0aGlzLnNlcnZpY2UucmVnaXN0cnl9PC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXRhaWwtaXRlbSI+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkZXRhaWwtbGFiZWwiPlJlcG9zaXRvcnk8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkZXRhaWwtdmFsdWUiPiR7dGhpcy5zZXJ2aWNlLnJlcG9zaXRvcnl9PC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXRhaWwtaXRlbSI+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkZXRhaWwtbGFiZWwiPlRhZzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRldGFpbC12YWx1ZSI+PHNwYW4gY2xhc3M9InRhZy1iYWRnZSI+JHt0aGlzLnNlcnZpY2UudGFnfTwvc3Bhbj48L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2RlZXMtdGlsZT4KCiAgICAgICAgICA8ZGVlcy10aWxlPgogICAgICAgICAgICA8ZGl2IHNsb3Q9ImhlYWRlciIgY2xhc3M9ImNhcmQtaGVhZGVyIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWhlYWRpbmciPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhcmQtdGl0bGUiPkJhY2t1cHM8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2FyZC1zdWJ0aXRsZSI+Q3JlYXRlIGFuZCBtYW5hZ2Ugc2VydmljZSBiYWNrdXBzPC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1jb250ZW50Ij4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiYWNrdXAtbGlzdCI+CiAgICAgICAgICAgICAgICAke3RoaXMuYmFja3Vwcy5tYXAoUD0+d2AKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmFja3VwLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJhY2t1cC1pbmZvIj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJhY2t1cC1kYXRlIj4ke1AuY3JlYXRlZEF0fTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmFja3VwLW1ldGEiPiR7UC5zaXplfSDCtyAke1AudHlwZX08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiYWNrdXAtYWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJpY29uLWJ1dHRvbiIgdGl0bGU9IkRvd25sb2FkIiBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVEb3dubG9hZEJhY2t1cChQKX0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9IjE0IiBoZWlnaHQ9IjE0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMSAxNXY0YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0ydi00Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBvbHlsaW5lIHBvaW50cz0iNyAxMCAxMiAxNSAxNyAxMCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5lIHgxPSIxMiIgeTE9IjE1IiB4Mj0iMTIiIHkyPSIzIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJpY29uLWJ1dHRvbiIgdGl0bGU9IlJlc3RvcmUiIEBjbGljaz0keygpPT50aGlzLmhhbmRsZVJlc3RvcmVCYWNrdXAoUCl9PgogICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8cG9seWxpbmUgcG9pbnRzPSIxIDQgMSAxMCA3IDEwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTMuNTEgMTVhOSA5IDAgMSAwIDIuMTMtOS4zNkwxIDEwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJpY29uLWJ1dHRvbiIgdGl0bGU9IkRlbGV0ZSIgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlRGVsZXRlQmFja3VwKFApfT4KICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBvbHlsaW5lIHBvaW50cz0iMyw2IDUsNiAyMSw2Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE5LDZ2MTRhMiwyLDAsMCwxLTIsMkg3YTIsMiwwLDAsMS0yLTJWNm0zLDBWNGEyLDIsMCwwLDEsMi0yaDRhMiwyLDAsMCwxLDIsMnYyIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgYCl9CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IHNsb3Q9ImZvb3RlciIgY2xhc3M9ImNhcmQtZm9vdGVyIj4KICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJ0aWxlLWJ1dHRvbiBwcmltYXJ5IiBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVDcmVhdGVCYWNrdXAoKX0+CiAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgICAgICAgPGxpbmUgeDE9IjEyIiB5MT0iNSIgeDI9IjEyIiB5Mj0iMTkiPjwvbGluZT4KICAgICAgICAgICAgICAgICAgPGxpbmUgeDE9IjUiIHkxPSIxMiIgeDI9IjE5IiB5Mj0iMTIiPjwvbGluZT4KICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgQ3JlYXRlIEJhY2t1cAogICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGVlcy10aWxlPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9aGFuZGxlQmFjaygpe3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImJhY2siLHtidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZUVkaXQoKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJlZGl0Iix7ZGV0YWlsOnRoaXMuc2VydmljZSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZUFjdGlvbihQKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJzZXJ2aWNlLWFjdGlvbiIse2RldGFpbDp7c2VydmljZTp0aGlzLnNlcnZpY2UsYWN0aW9uOlB9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9dG9nZ2xlU3RyZWFtaW5nKCl7dGhpcy5zdHJlYW1pbmc9IXRoaXMuc3RyZWFtaW5nLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInN0cmVhbS10b2dnbGUiLHtkZXRhaWw6e3N0cmVhbWluZzp0aGlzLnN0cmVhbWluZ30sYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1oYW5kbGVDbGVhckxvZ3MoKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjbGVhci1sb2dzIix7YnViYmxlczohMCxjb21wb3NlZDohMH0pKX1oYW5kbGVDcmVhdGVCYWNrdXAoKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjcmVhdGUtYmFja3VwIix7YnViYmxlczohMCxjb21wb3NlZDohMH0pKX1oYW5kbGVEb3dubG9hZEJhY2t1cChQKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJkb3dubG9hZC1iYWNrdXAiLHtkZXRhaWw6UCxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZVJlc3RvcmVCYWNrdXAoUCl7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgicmVzdG9yZS1iYWNrdXAiLHtkZXRhaWw6UCxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZURlbGV0ZUJhY2t1cChQKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJkZWxldGUtYmFja3VwIix7ZGV0YWlsOlAsYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1oYW5kbGVPcGVuV29ya3NwYWNlKCl7dGhpcy53b3Jrc3BhY2VFbnZpcm9ubWVudD8odGhpcy5jdXJyZW50Vmlldz0id29ya3NwYWNlIix0aGlzLmNsYXNzTGlzdC5hZGQoIndvcmtzcGFjZS1tb2RlIikpOnRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInJlcXVlc3Qtd29ya3NwYWNlIix7ZGV0YWlsOntzZXJ2aWNlOnRoaXMuc2VydmljZX0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1oYW5kbGVDbG9zZVdvcmtzcGFjZSgpe3RoaXMuY3VycmVudFZpZXc9ImRldGFpbHMiLHRoaXMuY2xhc3NMaXN0LnJlbW92ZSgid29ya3NwYWNlLW1vZGUiKX11cGRhdGVkKFApe3N1cGVyLnVwZGF0ZWQoUCksUC5oYXMoIndvcmtzcGFjZUVudmlyb25tZW50IikmJnRoaXMud29ya3NwYWNlRW52aXJvbm1lbnQmJnRoaXMuY3VycmVudFZpZXc9PT0iZGV0YWlscyImJih0aGlzLmN1cnJlbnRWaWV3PSJ3b3Jrc3BhY2UiLHRoaXMuY2xhc3NMaXN0LmFkZCgid29ya3NwYWNlLW1vZGUiKSl9Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLEFvKHRoaXMsUyl9c3RhdGlje0FvKGEsdCl9fTtyZXR1cm4gST1hfSkoKX0pO3ZhciBNMWUsQWcsV1FhLGU5YT1nKCgpPT57cGUoKTtNMWU9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LEFnPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxXUWE9KCgpPT57bGV0IHM9W25lKCJzei1hcHAtc3RvcmUtdmlldyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdO3ZhciB4PWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJTekFwcFN0b3JlVmlldyIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBtPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6QXJyYXl9KV0scD1bWSgpXSxjPVtZKCldLE0xZSh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImFwcHMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+ImFwcHMiaW4gZiwiaGFzIiksZ2V0OmkoZj0+Zi5hcHBzLCJnZXQiKSxzZXQ6aSgoZix5KT0+e2YuYXBwcz15fSwic2V0Iil9LG1ldGFkYXRhOm19LG8sbCksTTFlKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VsZWN0ZWRDYXRlZ29yeSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShmPT4ic2VsZWN0ZWRDYXRlZ29yeSJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLnNlbGVjdGVkQ2F0ZWdvcnksImdldCIpLHNldDppKChmLHkpPT57Zi5zZWxlY3RlZENhdGVnb3J5PXl9LCJzZXQiKX0sbWV0YWRhdGE6bX0sZCx1KSxNMWUodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWFyY2hRdWVyeSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShmPT4ic2VhcmNoUXVlcnkiaW4gZiwiaGFzIiksZ2V0OmkoZj0+Zi5zZWFyY2hRdWVyeSwiZ2V0Iiksc2V0OmkoKGYseSk9PntmLnNlYXJjaFF1ZXJ5PXl9LCJzZXQiKX0sbWV0YWRhdGE6bX0sYix2KSxNMWUobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6bX0sbnVsbCx0KSx4PWE9ZS52YWx1ZSxtJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm19KX1zdGF0aWMgZGVtbz1pKCgpPT53YAogICAgPGRpdiBzdHlsZT0icGFkZGluZzogMjRweDsgbWF4LXdpZHRoOiAxMjAwcHg7Ij4KICAgICAgPHN6LWFwcC1zdG9yZS12aWV3CiAgICAgICAgLmFwcHM9JHtbe2lkOiJ3b3JkcHJlc3MiLG5hbWU6IldvcmRQcmVzcyIsZGVzY3JpcHRpb246IlRoZSB3b3JsZCdzIG1vc3QgcG9wdWxhciBvcGVuLXNvdXJjZSBjb250ZW50IG1hbmFnZW1lbnQgc3lzdGVtIGZvciBidWlsZGluZyB3ZWJzaXRlcyBhbmQgYmxvZ3MuIixjYXRlZ29yeToiQ01TIixpY29uTmFtZToiZmlsZS10ZXh0IixpbWFnZToid29yZHByZXNzOmxhdGVzdCIscG9ydDo4MCxlbnZWYXJzOlt7a2V5OiJXT1JEUFJFU1NfREJfSE9TVCIsdmFsdWU6IiIsZGVzY3JpcHRpb246IkRhdGFiYXNlIGhvc3QgYWRkcmVzcyIscmVxdWlyZWQ6ITB9LHtrZXk6IldPUkRQUkVTU19EQl9VU0VSIix2YWx1ZToid29yZHByZXNzIixkZXNjcmlwdGlvbjoiRGF0YWJhc2UgdXNlcm5hbWUiLHJlcXVpcmVkOiEwfSx7a2V5OiJXT1JEUFJFU1NfREJfUEFTU1dPUkQiLHZhbHVlOiIiLGRlc2NyaXB0aW9uOiJEYXRhYmFzZSBwYXNzd29yZCIscmVxdWlyZWQ6ITB9LHtrZXk6IldPUkRQUkVTU19EQl9OQU1FIix2YWx1ZToid29yZHByZXNzIixkZXNjcmlwdGlvbjoiRGF0YWJhc2UgbmFtZSIscmVxdWlyZWQ6ITB9XSx2b2x1bWVzOlsiL3Zhci93d3cvaHRtbCJdLGVuYWJsZU1vbmdvREI6ITEsZW5hYmxlUzM6ITF9LHtpZDoiZ2l0ZWEiLG5hbWU6IkdpdGVhIixkZXNjcmlwdGlvbjoiQSBsaWdodHdlaWdodCwgc2VsZi1ob3N0ZWQgR2l0IHNlcnZpY2UuIFBhaW5sZXNzIHNldHVwIGZvciB5b3VyIG93biBjb2RlIGhvc3RpbmcgcGxhdGZvcm0uIixjYXRlZ29yeToiRGV2ZWxvcG1lbnQiLGljb25OYW1lOiJnaXQtYnJhbmNoIixpbWFnZToiZ2l0ZWEvZ2l0ZWE6bGF0ZXN0Iixwb3J0OjNlMyxlbnZWYXJzOlt7a2V5OiJHSVRFQV9fZGF0YWJhc2VfX0RCX1RZUEUiLHZhbHVlOiJzcWxpdGUzIixkZXNjcmlwdGlvbjoiRGF0YWJhc2UgdHlwZSIscmVxdWlyZWQ6ITB9LHtrZXk6IkdJVEVBX19zZXJ2ZXJfX1JPT1RfVVJMIix2YWx1ZToiIixkZXNjcmlwdGlvbjoiUHVibGljIFVSTCBvZiB0aGUgR2l0ZWEgaW5zdGFuY2UiLHJlcXVpcmVkOiExfV0sdm9sdW1lczpbIi9kYXRhIl19LHtpZDoiZ2hvc3QiLG5hbWU6Ikdob3N0IixkZXNjcmlwdGlvbjoiQSBwb3dlcmZ1bCBvcGVuLXNvdXJjZSBwdWJsaXNoaW5nIHBsYXRmb3JtIGZvciBwcm9mZXNzaW9uYWwgYmxvZ2dlcnMgYW5kIGNvbnRlbnQgY3JlYXRvcnMuIixjYXRlZ29yeToiQ01TIixpY29uTmFtZToiYm9vay1vcGVuIixpbWFnZToiZ2hvc3Q6bGF0ZXN0Iixwb3J0OjIzNjgsZW52VmFyczpbe2tleToidXJsIix2YWx1ZToiIixkZXNjcmlwdGlvbjoiUHVibGljIFVSTCBmb3IgdGhlIEdob3N0IHNpdGUiLHJlcXVpcmVkOiEwfSx7a2V5OiJkYXRhYmFzZV9fY2xpZW50Iix2YWx1ZToic3FsaXRlMyIsZGVzY3JpcHRpb246IkRhdGFiYXNlIGNsaWVudCB0eXBlIixyZXF1aXJlZDohMX1dLHZvbHVtZXM6WyIvdmFyL2xpYi9naG9zdC9jb250ZW50Il19LHtpZDoibmdpbngiLG5hbWU6Ik5naW54IixkZXNjcmlwdGlvbjoiSGlnaC1wZXJmb3JtYW5jZSBIVFRQIHNlcnZlciBhbmQgcmV2ZXJzZSBwcm94eSB3aXRoIGxvdyByZXNvdXJjZSBjb25zdW1wdGlvbi4iLGNhdGVnb3J5OiJXZWIgU2VydmVyIixpY29uTmFtZToiZ2xvYmUiLGltYWdlOiJuZ2lueDphbHBpbmUiLHBvcnQ6ODAsdm9sdW1lczpbIi91c3Ivc2hhcmUvbmdpbngvaHRtbCIsIi9ldGMvbmdpbngvY29uZi5kIl19LHtpZDoicmVkaXMiLG5hbWU6IlJlZGlzIixkZXNjcmlwdGlvbjoiSW4tbWVtb3J5IGRhdGEgc3RvcmUgdXNlZCBhcyBhIGRhdGFiYXNlLCBjYWNoZSwgc3RyZWFtaW5nIGVuZ2luZSwgYW5kIG1lc3NhZ2UgYnJva2VyLiIsY2F0ZWdvcnk6IkRhdGFiYXNlIixpY29uTmFtZToiZGF0YWJhc2UiLGltYWdlOiJyZWRpczphbHBpbmUiLHBvcnQ6NjM3OX0se2lkOiJwb3N0Z3JlcyIsbmFtZToiUG9zdGdyZVNRTCIsZGVzY3JpcHRpb246IkFkdmFuY2VkIG9wZW4tc291cmNlIHJlbGF0aW9uYWwgZGF0YWJhc2Ugd2l0aCBzdHJvbmcgcmVsaWFiaWxpdHkgYW5kIGZlYXR1cmUgc2V0LiIsY2F0ZWdvcnk6IkRhdGFiYXNlIixpY29uTmFtZToiZGF0YWJhc2UiLGltYWdlOiJwb3N0Z3JlczoxNi1hbHBpbmUiLHBvcnQ6NTQzMixlbnZWYXJzOlt7a2V5OiJQT1NUR1JFU19VU0VSIix2YWx1ZToicG9zdGdyZXMiLGRlc2NyaXB0aW9uOiJTdXBlcnVzZXIgdXNlcm5hbWUiLHJlcXVpcmVkOiEwfSx7a2V5OiJQT1NUR1JFU19QQVNTV09SRCIsdmFsdWU6IiIsZGVzY3JpcHRpb246IlN1cGVydXNlciBwYXNzd29yZCIscmVxdWlyZWQ6ITB9LHtrZXk6IlBPU1RHUkVTX0RCIix2YWx1ZToicG9zdGdyZXMiLGRlc2NyaXB0aW9uOiJEZWZhdWx0IGRhdGFiYXNlIG5hbWUiLHJlcXVpcmVkOiExfV0sdm9sdW1lczpbIi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YSJdfV19CiAgICAgID48L3N6LWFwcC1zdG9yZS12aWV3PgogICAgPC9kaXY+CiAgYCwiZGVtbyIpO3N0YXRpYyBkZW1vR3JvdXBzPVsiU2VydmljZXMiXTsjZT1BZyh0aGlzLG8sW10pO2dldCBhcHBzKCl7cmV0dXJuIHRoaXMuI2V9c2V0IGFwcHMobSl7dGhpcy4jZT1tfSN0PShBZyh0aGlzLGwpLEFnKHRoaXMsZCwiQWxsIikpO2dldCBzZWxlY3RlZENhdGVnb3J5KCl7cmV0dXJuIHRoaXMuI3R9c2V0IHNlbGVjdGVkQ2F0ZWdvcnkobSl7dGhpcy4jdD1tfSNhPShBZyh0aGlzLHUpLEFnKHRoaXMsYiwiIikpO2dldCBzZWFyY2hRdWVyeSgpe3JldHVybiB0aGlzLiNhfXNldCBzZWFyY2hRdWVyeShtKXt0aGlzLiNhPW19c3RhdGljIHN0eWxlcz1baC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgLmhlYWRlciB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgICAgfQoKICAgICAgLmhlYWRlci10aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAyMHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLmhlYWRlci1zdWJ0aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgICAgbWFyZ2luLXRvcDogNHB4OwogICAgICB9CgogICAgICAuZmlsdGVyLWJhciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgICAgfQoKICAgICAgLmNhdGVnb3J5LXBpbGxzIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG1pbi13aWR0aDogMDsKICAgICAgfQoKICAgICAgLmNhdGVnb3J5LXBpbGwgewogICAgICAgIHBhZGRpbmc6IDZweCAxNHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OTlweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDIwMG1zIGVhc2U7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNGU0ZTciLCIjMjcyNzJhIil9OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzA5MDkwYiIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgIH0KCiAgICAgIC5jYXRlZ29yeS1waWxsOmhvdmVyIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjZDRkNGQ4IiwiIzNmM2Y0NiIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAuY2F0ZWdvcnktcGlsbC5hY3RpdmUgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNmYWZhZmEiLCIjMTgxODFiIil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAuc2VhcmNoLWlucHV0IHsKICAgICAgICB3aWR0aDogMjQwcHg7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHggOHB4IDM2cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMTgxODFiIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTRlNGU3IiwiIzI3MjcyYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMjAwbXMgZWFzZTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAuc2VhcmNoLWlucHV0OmZvY3VzIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzYwYTVmYSIpfTsKICAgICAgfQoKICAgICAgLnNlYXJjaC1pbnB1dDo6cGxhY2Vob2xkZXIgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2ExYTFhYSIsIiM1MjUyNWIiKX07CiAgICAgIH0KCiAgICAgIC5zZWFyY2gtd3JhcHBlciB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAuc2VhcmNoLWljb24gewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBsZWZ0OiAxMHB4OwogICAgICAgIHRvcDogNTAlOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgICAgICB3aWR0aDogMTZweDsKICAgICAgICBoZWlnaHQ6IDE2cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjYTFhMWFhIiwiIzUyNTI1YiIpfTsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgLmFwcC1ncmlkIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7CiAgICAgICAgZ2FwOiAxNnB4OwogICAgICB9CgogICAgICBAbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7CiAgICAgICAgLmFwcC1ncmlkIHsKICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7CiAgICAgICAgfQogICAgICB9CgogICAgICBAbWVkaWEgKG1heC13aWR0aDogNjQwcHgpIHsKICAgICAgICAuYXBwLWdyaWQgewogICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CiAgICAgICAgfQoKICAgICAgICAuZmlsdGVyLWJhciB7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7CiAgICAgICAgfQoKICAgICAgICAuc2VhcmNoLWlucHV0IHsKICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLmFwcC1jYXJkIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMwOTA5MGIiKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNGU0ZTciLCIjMjcyNzJhIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDIwMG1zIGVhc2U7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICB9CgogICAgICAuYXBwLWNhcmQ6aG92ZXIgewogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiNkNGQ0ZDgiLCIjM2YzZjQ2Iil9OwogICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggJHtoLmJkVGhlbWUoInJnYmEoMCwwLDAsMC4wNSkiLCJyZ2JhKDAsMCwwLDAuMikiKX07CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOwogICAgICB9CgogICAgICAuY2FyZC10b3AgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgICAgICAgZ2FwOiAxNHB4OwogICAgICB9CgogICAgICAuYXBwLWljb24gewogICAgICAgIHdpZHRoOiA0NHB4OwogICAgICAgIGhlaWdodDogNDRweDsKICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzE4MTgxYiIpfTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLmFwcC1pY29uIHN2ZyB7CiAgICAgICAgd2lkdGg6IDIycHg7CiAgICAgICAgaGVpZ2h0OiAyMnB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgIH0KCiAgICAgIC5hcHAtaWNvbiBpbWcgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjsKICAgICAgfQoKICAgICAgLmFwcC1pY29uIC5sZXR0ZXItZmFsbGJhY2sgewogICAgICAgIGZvbnQtc2l6ZTogMjBweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5jYXJkLWluZm8gewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgbWluLXdpZHRoOiAwOwogICAgICB9CgogICAgICAuYXBwLW5hbWUgewogICAgICAgIGZvbnQtc2l6ZTogMTVweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzsKICAgICAgfQoKICAgICAgLmNhdGVnb3J5LWJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDJweCA4cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5OXB4OwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIG1hcmdpbi10b3A6IDRweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2VmZjZmZiIsInJnYmEoNTksIDEzMCwgMjQ2LCAwLjE1KSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMyNTYzZWIiLCIjNjBhNWZhIil9OwogICAgICB9CgogICAgICAuYXBwLWRlc2NyaXB0aW9uIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMjsKICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgZmxleDogMTsKICAgICAgfQoKICAgICAgLmNhcmQtZm9vdGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIHBhZGRpbmctdG9wOiAxMnB4OwogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMxYTFhMWUiKX07CiAgICAgICAgbWFyZ2luLXRvcDogYXV0bzsKICAgICAgfQoKICAgICAgLmltYWdlLXRhZyB7CiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjYTFhMWFhIiwiIzUyNTI1YiIpfTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgbWF4LXdpZHRoOiAxNjBweDsKICAgICAgfQoKICAgICAgLmRlcGxveS1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgcGFkZGluZzogN3B4IDE2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMjAwbXMgZWFzZTsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2ZhZmFmYSIsIiMxODE4MWIiKX07CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQoKICAgICAgLmRlcGxveS1idXR0b246aG92ZXIgewogICAgICAgIG9wYWNpdHk6IDAuODU7CiAgICAgIH0KCiAgICAgIC5kZXBsb3ktYnV0dG9uIHN2ZyB7CiAgICAgICAgd2lkdGg6IDE0cHg7CiAgICAgICAgaGVpZ2h0OiAxNHB4OwogICAgICB9CgogICAgICAuZGV0YWlscy1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgcGFkZGluZzogN3B4IDEycHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMjAwbXMgZWFzZTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U0ZTRlNyIsIiMyNzI3MmEiKX07CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAuZGV0YWlscy1idXR0b246aG92ZXIgewogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiNkNGQ0ZDgiLCIjM2YzZjQ2Iil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgIH0KCiAgICAgIC5jYXJkLWFjdGlvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDhweDsKICAgICAgfQoKICAgICAgLmVtcHR5LXN0YXRlIHsKICAgICAgICBncmlkLWNvbHVtbjogMSAvIC0xOwogICAgICAgIHBhZGRpbmc6IDY0cHggMjRweDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5lbXB0eS1pY29uIHsKICAgICAgICB3aWR0aDogNDhweDsKICAgICAgICBoZWlnaHQ6IDQ4cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZDRkNGQ4IiwiIzNmM2Y0NiIpfTsKICAgICAgICBtYXJnaW46IDAgYXV0byAxNnB4OwogICAgICB9CgogICAgICAuZW1wdHktdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4OwogICAgICB9CgogICAgICAuZW1wdHktZGVzY3JpcHRpb24gewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICB9CiAgICBgXTtnZXQgY2F0ZWdvcmllcygpe2xldCBtPW5ldyBTZXQodGhpcy5hcHBzLm1hcChmPT5mLmNhdGVnb3J5KSk7cmV0dXJuWyJBbGwiLC4uLkFycmF5LmZyb20obSkuc29ydCgpXX1nZXQgZmlsdGVyZWRBcHBzKCl7bGV0IG09dGhpcy5hcHBzO2lmKHRoaXMuc2VsZWN0ZWRDYXRlZ29yeSE9PSJBbGwiJiYobT1tLmZpbHRlcihmPT5mLmNhdGVnb3J5PT09dGhpcy5zZWxlY3RlZENhdGVnb3J5KSksdGhpcy5zZWFyY2hRdWVyeS50cmltKCkpe2xldCBmPXRoaXMuc2VhcmNoUXVlcnkudHJpbSgpLnRvTG93ZXJDYXNlKCk7bT1tLmZpbHRlcih5PT55Lm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmKXx8eS5kZXNjcmlwdGlvbi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGYpfHx5LmNhdGVnb3J5LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZikpfXJldHVybiBtfXJlbmRlcigpe2xldCBtPXRoaXMuZmlsdGVyZWRBcHBzO3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlci10aXRsZSI+QXBwIFN0b3JlPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyLXN1YnRpdGxlIj5EZXBsb3kgcG9wdWxhciBhcHBsaWNhdGlvbnMgd2l0aCBvbmUgY2xpY2s8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJmaWx0ZXItYmFyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjYXRlZ29yeS1waWxscyI+CiAgICAgICAgICAke3RoaXMuY2F0ZWdvcmllcy5tYXAoZj0+d2AKICAgICAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgICAgICBjbGFzcz0iY2F0ZWdvcnktcGlsbCAke3RoaXMuc2VsZWN0ZWRDYXRlZ29yeT09PWY/ImFjdGl2ZSI6IiJ9IgogICAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9Pnt0aGlzLnNlbGVjdGVkQ2F0ZWdvcnk9Zn19CiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgJHtmfQogICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICBgKX0KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWFyY2gtd3JhcHBlciI+CiAgICAgICAgICA8c3ZnIGNsYXNzPSJzZWFyY2gtaWNvbiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTEiIGN5PSIxMSIgcj0iOCI+PC9jaXJjbGU+CiAgICAgICAgICAgIDxsaW5lIHgxPSIyMSIgeTE9IjIxIiB4Mj0iMTYuNjUiIHkyPSIxNi42NSI+PC9saW5lPgogICAgICAgICAgPC9zdmc+CiAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgdHlwZT0idGV4dCIKICAgICAgICAgICAgY2xhc3M9InNlYXJjaC1pbnB1dCIKICAgICAgICAgICAgcGxhY2Vob2xkZXI9IlNlYXJjaCBhcHBzLi4uIgogICAgICAgICAgICAudmFsdWU9JHt0aGlzLnNlYXJjaFF1ZXJ5fQogICAgICAgICAgICBAaW5wdXQ9JHtmPT57dGhpcy5zZWFyY2hRdWVyeT1mLnRhcmdldC52YWx1ZX19CiAgICAgICAgICA+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iYXBwLWdyaWQiPgogICAgICAgICR7bS5sZW5ndGg+MD9tLm1hcChmPT50aGlzLnJlbmRlckFwcENhcmQoZikpOndgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZW1wdHktc3RhdGUiPgogICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0iZW1wdHktaWNvbiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiPgogICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PSIxMSIgY3k9IjExIiByPSI4Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgPGxpbmUgeDE9IjIxIiB5MT0iMjEiIHgyPSIxNi42NSIgeTI9IjE2LjY1Ij48L2xpbmU+CiAgICAgICAgICAgICAgICAgIDxsaW5lIHgxPSI4IiB5MT0iMTEiIHgyPSIxNCIgeTI9IjExIj48L2xpbmU+CiAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVtcHR5LXRpdGxlIj5ObyBhcHBzIGZvdW5kPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbXB0eS1kZXNjcmlwdGlvbiI+CiAgICAgICAgICAgICAgICAgIFRyeSBhZGp1c3RpbmcgeW91ciBzZWFyY2ggb3IgZmlsdGVyIHRvIGZpbmQgd2hhdCB5b3UncmUgbG9va2luZyBmb3IuCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYH0KICAgICAgPC9kaXY+CiAgICBgfXJlbmRlckFwcENhcmQobSl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImFwcC1jYXJkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLXRvcCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJhcHAtaWNvbiI+CiAgICAgICAgICAgICR7bS5pY29uVXJsP3dgPGltZyBzcmM9IiR7bS5pY29uVXJsfSIgYWx0PSIke20ubmFtZX0iPmA6bS5pY29uTmFtZT90aGlzLnJlbmRlckljb25CeU5hbWUobS5pY29uTmFtZSk6d2A8c3BhbiBjbGFzcz0ibGV0dGVyLWZhbGxiYWNrIj4ke20ubmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKX08L3NwYW4+YH0KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1pbmZvIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXBwLW5hbWUiPiR7bS5uYW1lfTwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXRlZ29yeS1iYWRnZSI+JHttLmNhdGVnb3J5fTwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYXBwLWRlc2NyaXB0aW9uIj4ke20uZGVzY3JpcHRpb259PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1mb290ZXIiPgogICAgICAgICAgPHNwYW4gY2xhc3M9ImltYWdlLXRhZyIgdGl0bGU9IiR7bS5pbWFnZX0iPiR7bS5pbWFnZX08L3NwYW4+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWFjdGlvbnMiPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJkZXRhaWxzLWJ1dHRvbiIgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlVmlld0RldGFpbHMobSl9PgogICAgICAgICAgICAgIFZpZXcgRGV0YWlscwogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZGVwbG95LWJ1dHRvbiIgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlRGVwbG95KG0pfT4KICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+CiAgICAgICAgICAgICAgICA8cG9seWxpbmUgcG9pbnRzPSIyMCAxMiAyMCAyMiA0IDIyIDQgMTIiPjwvcG9seWxpbmU+CiAgICAgICAgICAgICAgICA8cmVjdCB4PSIyIiB5PSI3IiB3aWR0aD0iMjAiIGhlaWdodD0iNSI+PC9yZWN0PgogICAgICAgICAgICAgICAgPGxpbmUgeDE9IjEyIiB5MT0iMjIiIHgyPSIxMiIgeTI9IjciPjwvbGluZT4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMiA3SDcuNWEyLjUgMi41IDAgMCAxIDAtNUMxMSAyIDEyIDcgMTIgN3oiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMiA3aDQuNWEyLjUgMi41IDAgMCAwIDAtNUMxMyAyIDEyIDcgMTIgN3oiPjwvcGF0aD4KICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICBEZXBsb3kKICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfXJlbmRlckljb25CeU5hbWUobSl7cmV0dXJueyJmaWxlLXRleHQiOndgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxwYXRoIGQ9Ik0xNCAySDZhMiAyIDAgMCAwLTIgMnYxNmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWOHoiPjwvcGF0aD48cG9seWxpbmUgcG9pbnRzPSIxNCAyIDE0IDggMjAgOCI+PC9wb2x5bGluZT48bGluZSB4MT0iMTYiIHkxPSIxMyIgeDI9IjgiIHkyPSIxMyI+PC9saW5lPjxsaW5lIHgxPSIxNiIgeTE9IjE3IiB4Mj0iOCIgeTI9IjE3Ij48L2xpbmU+PHBvbHlsaW5lIHBvaW50cz0iMTAgOSA5IDkgOCA5Ij48L3BvbHlsaW5lPjwvc3ZnPmAsImdpdC1icmFuY2giOndgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxsaW5lIHgxPSI2IiB5MT0iMyIgeDI9IjYiIHkyPSIxNSI+PC9saW5lPjxjaXJjbGUgY3g9IjE4IiBjeT0iNiIgcj0iMyI+PC9jaXJjbGU+PGNpcmNsZSBjeD0iNiIgY3k9IjE4IiByPSIzIj48L2NpcmNsZT48cGF0aCBkPSJNMTggOWE5IDkgMCAwIDEtOSA5Ij48L3BhdGg+PC9zdmc+YCwiYm9vay1vcGVuIjp3YDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj48cGF0aCBkPSJNMiAzaDZhNCA0IDAgMCAxIDQgNHYxNGEzIDMgMCAwIDAtMy0zSDJ6Ij48L3BhdGg+PHBhdGggZD0iTTIyIDNoLTZhNCA0IDAgMCAwLTQgNHYxNGEzIDMgMCAwIDEgMy0zaDd6Ij48L3BhdGg+PC9zdmc+YCxnbG9iZTp3YDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCI+PC9jaXJjbGU+PGxpbmUgeDE9IjIiIHkxPSIxMiIgeDI9IjIyIiB5Mj0iMTIiPjwvbGluZT48cGF0aCBkPSJNMTIgMmExNS4zIDE1LjMgMCAwIDEgNCAxMCAxNS4zIDE1LjMgMCAwIDEtNCAxMCAxNS4zIDE1LjMgMCAwIDEtNC0xMCAxNS4zIDE1LjMgMCAwIDEgNC0xMHoiPjwvcGF0aD48L3N2Zz5gLGRhdGFiYXNlOndgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxlbGxpcHNlIGN4PSIxMiIgY3k9IjUiIHJ4PSI5IiByeT0iMyI+PC9lbGxpcHNlPjxwYXRoIGQ9Ik0yMSAxMmMwIDEuNjYtNCAzLTkgM3MtOS0xLjM0LTktMyI+PC9wYXRoPjxwYXRoIGQ9Ik0zIDV2MTRjMCAxLjY2IDQgMyA5IDNzOS0xLjM0IDktM1Y1Ij48L3BhdGg+PC9zdmc+YCxzZXJ2ZXI6d2A8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+PHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjIwIiBoZWlnaHQ9IjgiIHJ4PSIyIiByeT0iMiI+PC9yZWN0PjxyZWN0IHg9IjIiIHk9IjE0IiB3aWR0aD0iMjAiIGhlaWdodD0iOCIgcng9IjIiIHJ5PSIyIj48L3JlY3Q+PGxpbmUgeDE9IjYiIHkxPSI2IiB4Mj0iNi4wMSIgeTI9IjYiPjwvbGluZT48bGluZSB4MT0iNiIgeTE9IjE4IiB4Mj0iNi4wMSIgeTI9IjE4Ij48L2xpbmU+PC9zdmc+YCxwYWNrYWdlOndgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxsaW5lIHgxPSIxNi41IiB5MT0iOS40IiB4Mj0iNy41IiB5Mj0iNC4yMSI+PC9saW5lPjxwYXRoIGQ9Ik0yMSAxNlY4YTIgMiAwIDAgMC0xLTEuNzNsLTctNGEyIDIgMCAwIDAtMiAwbC03IDRBMiAyIDAgMCAwIDMgOHY4YTIgMiAwIDAgMCAxIDEuNzNsNyA0YTIgMiAwIDAgMCAyIDBsNy00QTIgMiAwIDAgMCAyMSAxNnoiPjwvcGF0aD48cG9seWxpbmUgcG9pbnRzPSIzLjI3IDYuOTYgMTIgMTIuMDEgMjAuNzMgNi45NiI+PC9wb2x5bGluZT48bGluZSB4MT0iMTIiIHkxPSIyMi4wOCIgeDI9IjEyIiB5Mj0iMTIiPjwvbGluZT48L3N2Zz5gLG1haWw6d2A8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+PHBhdGggZD0iTTQgNGgxNmMxLjEgMCAyIC45IDIgMnYxMmMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTJ6Ij48L3BhdGg+PHBvbHlsaW5lIHBvaW50cz0iMjIsNiAxMiwxMyAyLDYiPjwvcG9seWxpbmU+PC9zdmc+YCxzaGllbGQ6d2A8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+PHBhdGggZD0iTTEyIDIyczgtNCA4LTEwVjVsLTgtMy04IDN2N2MwIDYgOCAxMCA4IDEweiI+PC9wYXRoPjwvc3ZnPmAsbW9uaXRvcjp3YDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj48cmVjdCB4PSIyIiB5PSIzIiB3aWR0aD0iMjAiIGhlaWdodD0iMTQiIHJ4PSIyIiByeT0iMiI+PC9yZWN0PjxsaW5lIHgxPSI4IiB5MT0iMjEiIHgyPSIxNiIgeTI9IjIxIj48L2xpbmU+PGxpbmUgeDE9IjEyIiB5MT0iMTciIHgyPSIxMiIgeTI9IjIxIj48L2xpbmU+PC9zdmc+YH1bbV18fHdgPHNwYW4gY2xhc3M9ImxldHRlci1mYWxsYmFjayI+Pzwvc3Bhbj5gfWhhbmRsZVZpZXdEZXRhaWxzKG0pe3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInZpZXctYXBwIix7ZGV0YWlsOnthcHA6bX0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1oYW5kbGVEZXBsb3kobSl7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiZGVwbG95LWFwcCIse2RldGFpbDp7YXBwOm19LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLEFnKHRoaXMsdil9c3RhdGlje0FnKGEsdCl9fTtyZXR1cm4geD1hfSkoKX0pO3ZhciBnb3QsYlEsR1FhLHQ5YT1nKCgpPT57cGUoKTtnb3Q9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LGJRPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxHUWE9KCgpPT57bGV0IHM9W25lKCJzei10b2tlbnMtdmlldyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdO3ZhciBjPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJTelRva2Vuc1ZpZXciKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgYj10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOkFycmF5fSldLHA9W0woe3R5cGU6QXJyYXl9KV0sZ290KHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZ2xvYmFsVG9rZW5zIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHY9PiJnbG9iYWxUb2tlbnMiaW4gdiwiaGFzIiksZ2V0Omkodj0+di5nbG9iYWxUb2tlbnMsImdldCIpLHNldDppKCh2LHgpPT57di5nbG9iYWxUb2tlbnM9eH0sInNldCIpfSxtZXRhZGF0YTpifSxvLGwpLGdvdCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNpVG9rZW5zIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHY9PiJjaVRva2VucyJpbiB2LCJoYXMiKSxnZXQ6aSh2PT52LmNpVG9rZW5zLCJnZXQiKSxzZXQ6aSgodix4KT0+e3YuY2lUb2tlbnM9eH0sInNldCIpfSxtZXRhZGF0YTpifSxkLHUpLGdvdChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpifSxudWxsLHQpLGM9YT1lLnZhbHVlLGImJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pfXN0YXRpYyBkZW1vPWkoKCk9PndgCiAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nOiAyNHB4OyBtYXgtd2lkdGg6IDEwMDBweDsiPgogICAgICA8c3otdG9rZW5zLXZpZXcKICAgICAgICAuZ2xvYmFsVG9rZW5zPSR7W3tpZDoiMSIsbmFtZToiQ0kvQ0QgUGlwZWxpbmUiLHR5cGU6Imdsb2JhbCIsY3JlYXRlZEF0OiIyMDI0LTAxLTE1IixsYXN0VXNlZDoiMjAyNC0wMS0yMCJ9LHtpZDoiMiIsbmFtZToiRGV2ZWxvcG1lbnQiLHR5cGU6Imdsb2JhbCIsY3JlYXRlZEF0OiIyMDI0LTAxLTEwIn1dfQogICAgICAgIC5jaVRva2Vucz0ke1t7aWQ6IjMiLG5hbWU6ImhlbGxvLXdvcmxkLWNpIix0eXBlOiJjaSIsc2VydmljZToiaGVsbG8td29ybGQiLGNyZWF0ZWRBdDoiMjAyNC0wMS0xOCJ9LHtpZDoiNCIsbmFtZToiYXBpLXNlcnZpY2UtY2kiLHR5cGU6ImNpIixzZXJ2aWNlOiJhcGktc2VydmljZSIsY3JlYXRlZEF0OiIyMDI0LTAxLTEyIixsYXN0VXNlZDoiMjAyNC0wMS0xOSJ9XX0KICAgICAgPjwvc3otdG9rZW5zLXZpZXc+CiAgICA8L2Rpdj4KICBgLCJkZW1vIik7c3RhdGljIGRlbW9Hcm91cHM9WyJBdXRoICYgU2V0dGluZ3MiXTsjZT1iUSh0aGlzLG8sW10pO2dldCBnbG9iYWxUb2tlbnMoKXtyZXR1cm4gdGhpcy4jZX1zZXQgZ2xvYmFsVG9rZW5zKGIpe3RoaXMuI2U9Yn0jdD0oYlEodGhpcyxsKSxiUSh0aGlzLGQsW10pKTtnZXQgY2lUb2tlbnMoKXtyZXR1cm4gdGhpcy4jdH1zZXQgY2lUb2tlbnMoYil7dGhpcy4jdD1ifXN0YXRpYyBzdHlsZXM9W2guZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KCiAgICAgIGRlZXMtdGlsZSB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgICAgfQoKICAgICAgLnNlY3Rpb24taGVhZGVyIHsKICAgICAgICBoZWlnaHQ6IDM2cHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAuc2VjdGlvbi1oZWFkaW5nIHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIG1pbi13aWR0aDogMDsKICAgICAgfQoKICAgICAgLnNlY3Rpb24tdGl0bGUgewogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgIH0KCiAgICAgIC5zZWN0aW9uLXN1YnRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICB9CgogICAgICAuc2VjdGlvbi1mb290ZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAwOwogICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAudGlsZS1idXR0b24gewogICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1zdWJ0bGUpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4OwogICAgICB9CgogICAgICAudGlsZS1idXR0b246Zmlyc3QtY2hpbGQgewogICAgICAgIGJvcmRlci1sZWZ0OiBub25lOwogICAgICB9CgogICAgICAudGlsZS1idXR0b246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItaG92ZXIpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIH0KCiAgICAgIC50aWxlLWJ1dHRvbi5wcmltYXJ5IHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTcuMiA5MS4yJSA1OS44JSkiLCJoc2woMjEzLjEgOTMuOSUgNjcuOCUpIil9OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIH0KCiAgICAgIC50aWxlLWJ1dHRvbi5wcmltYXJ5OmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxNy4yIDkxLjIlIDU5LjglIC8gMC4wOCkiLCJoc2woMjEzLjEgOTMuOSUgNjcuOCUgLyAwLjA4KSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTcuMiA5MS4yJSA1MCUpIiwiaHNsKDIxMy4xIDkzLjklIDc1JSkiKX07CiAgICAgIH0KCiAgICAgIC50b2tlbi1saXN0IHsKICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICB9CgogICAgICAudG9rZW4taXRlbSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMTgxODFiIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgIH0KCiAgICAgIC50b2tlbi1pdGVtOmxhc3QtY2hpbGQgewogICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgIH0KCiAgICAgIC50b2tlbi1pbmZvIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiA0cHg7CiAgICAgIH0KCiAgICAgIC50b2tlbi1uYW1lIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAudG9rZW4tbWV0YSB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgIH0KCiAgICAgIC50b2tlbi1zZXJ2aWNlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDJweCA4cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNkYmVhZmUiLCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC4yKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMyNTYzZWIiLCIjNjBhNWZhIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDhweDsKICAgICAgfQoKICAgICAgLnRva2VuLWFjdGlvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uIHsKICAgICAgICBwYWRkaW5nOiA2cHggMTJweDsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U0ZTRlNyIsIiMyNzI3MmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMjAwbXMgZWFzZTsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idXR0b246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzA5MDkwYiIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbi5kZWxldGUgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2RjMjYyNiIsIiNlZjQ0NDQiKX07CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiI2ZlZTJlMiIsInJnYmEoMjM5LCA2OCwgNjgsIDAuMykiKX07CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uLmRlbGV0ZTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZWUyZTIiLCJyZ2JhKDIzOSwgNjgsIDY4LCAwLjIpIil9OwogICAgICB9CgogICAgICAuZW1wdHktc3RhdGUgewogICAgICAgIHBhZGRpbmc6IDMycHggMTZweDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5lbXB0eS10ZXh0IHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkZWVzLXRpbGU+CiAgICAgICAgPGRpdiBzbG90PSJoZWFkZXIiIGNsYXNzPSJzZWN0aW9uLWhlYWRlciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWhlYWRpbmciPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+R2xvYmFsIFRva2Vuczwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3Rpb24tc3VidGl0bGUiPlRva2VucyB0aGF0IGNhbiBwdXNoIGltYWdlcyB0byBtdWx0aXBsZSBzZXJ2aWNlczwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgICR7dGhpcy5nbG9iYWxUb2tlbnMubGVuZ3RoPjA/d2AKICAgICAgICAgIDxkaXYgY2xhc3M9InRva2VuLWxpc3QiPgogICAgICAgICAgICAke3RoaXMuZ2xvYmFsVG9rZW5zLm1hcChiPT50aGlzLnJlbmRlclRva2VuKGIpKX0KICAgICAgICAgIDwvZGl2PgogICAgICAgIGA6d2AKICAgICAgICAgIDxkaXYgY2xhc3M9ImVtcHR5LXN0YXRlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZW1wdHktdGV4dCI+Tm8gZ2xvYmFsIHRva2VucyBjcmVhdGVkPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgfQogICAgICAgIDxkaXYgc2xvdD0iZm9vdGVyIiBjbGFzcz0ic2VjdGlvbi1mb290ZXIiPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idGlsZS1idXR0b24gcHJpbWFyeSIgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlQ3JlYXRlKCJnbG9iYWwiKX0+CiAgICAgICAgICAgIDxzdmcgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgICAgICAgICAgIDxsaW5lIHgxPSIxMiIgeTE9IjUiIHgyPSIxMiIgeTI9IjE5Ij48L2xpbmU+CiAgICAgICAgICAgICAgPGxpbmUgeDE9IjUiIHkxPSIxMiIgeDI9IjE5IiB5Mj0iMTIiPjwvbGluZT4KICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgIENyZWF0ZSBUb2tlbgogICAgICAgICAgPC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy10aWxlPgoKICAgICAgPGRlZXMtdGlsZT4KICAgICAgICA8ZGl2IHNsb3Q9ImhlYWRlciIgY2xhc3M9InNlY3Rpb24taGVhZGVyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24taGVhZGluZyI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5DSSBUb2tlbnMgKFNlcnZpY2Utc3BlY2lmaWMpPC9zcGFuPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdGlvbi1zdWJ0aXRsZSI+VG9rZW5zIHRpZWQgdG8gaW5kaXZpZHVhbCBzZXJ2aWNlcyBmb3IgQ0kvQ0QgcGlwZWxpbmVzPC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgJHt0aGlzLmNpVG9rZW5zLmxlbmd0aD4wP3dgCiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2tlbi1saXN0Ij4KICAgICAgICAgICAgJHt0aGlzLmNpVG9rZW5zLm1hcChiPT50aGlzLnJlbmRlclRva2VuKGIpKX0KICAgICAgICAgIDwvZGl2PgogICAgICAgIGA6d2AKICAgICAgICAgIDxkaXYgY2xhc3M9ImVtcHR5LXN0YXRlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZW1wdHktdGV4dCI+Tm8gQ0kgdG9rZW5zIGNyZWF0ZWQ8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIGB9CiAgICAgICAgPGRpdiBzbG90PSJmb290ZXIiIGNsYXNzPSJzZWN0aW9uLWZvb3RlciI+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJ0aWxlLWJ1dHRvbiBwcmltYXJ5IiBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVDcmVhdGUoImNpIil9PgogICAgICAgICAgICA8c3ZnIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgICA8bGluZSB4MT0iMTIiIHkxPSI1IiB4Mj0iMTIiIHkyPSIxOSI+PC9saW5lPgogICAgICAgICAgICAgIDxsaW5lIHgxPSI1IiB5MT0iMTIiIHgyPSIxOSIgeTI9IjEyIj48L2xpbmU+CiAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICBDcmVhdGUgVG9rZW4KICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtdGlsZT4KICAgIGB9cmVuZGVyVG9rZW4oYil7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9InRva2VuLWl0ZW0iPgogICAgICAgIDxkaXYgY2xhc3M9InRva2VuLWluZm8iPgogICAgICAgICAgPGRpdiBjbGFzcz0idG9rZW4tbmFtZSI+JHtiLm5hbWV9PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2tlbi1tZXRhIj4KICAgICAgICAgICAgJHtiLnNlcnZpY2U/d2A8c3BhbiBjbGFzcz0idG9rZW4tc2VydmljZSI+JHtiLnNlcnZpY2V9PC9zcGFuPmA6IiJ9CiAgICAgICAgICAgIENyZWF0ZWQgJHtiLmNyZWF0ZWRBdH0KICAgICAgICAgICAgJHtiLmxhc3RVc2VkP3dgIMK3IExhc3QgdXNlZCAke2IubGFzdFVzZWR9YDoiIn0KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InRva2VuLWFjdGlvbnMiPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiIgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlQ29weShiKX0+Q29weTwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiIgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlUmVnZW5lcmF0ZShiKX0+UmVnZW5lcmF0ZTwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiBkZWxldGUiIEBjbGljaz0keygpPT50aGlzLmhhbmRsZURlbGV0ZShiKX0+RGVsZXRlPC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1oYW5kbGVDcmVhdGUoYil7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY3JlYXRlIix7ZGV0YWlsOnt0eXBlOmJ9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9aGFuZGxlQ29weShiKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjb3B5Iix7ZGV0YWlsOmIsYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1oYW5kbGVSZWdlbmVyYXRlKGIpe3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInJlZ2VuZXJhdGUiLHtkZXRhaWw6YixidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZURlbGV0ZShiKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJkZWxldGUiLHtkZXRhaWw6YixidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWNvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSxiUSh0aGlzLHUpfXN0YXRpY3tiUShhLHQpfX07cmV0dXJuIGM9YX0pKCl9KTt2YXIgYm90LHZRLEtRYSxhOWE9ZygoKT0+e3BlKCk7Ym90PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSx2UT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sS1FhPSgoKT0+e2xldCBzPVtuZSgic3otc2V0dGluZ3MtdmlldyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdO3ZhciBjPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJTelNldHRpbmdzVmlldyIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBiPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6T2JqZWN0fSldLHA9W0woe3R5cGU6U3RyaW5nfSldLGJvdCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNldHRpbmdzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHY9PiJzZXR0aW5ncyJpbiB2LCJoYXMiKSxnZXQ6aSh2PT52LnNldHRpbmdzLCJnZXQiKSxzZXQ6aSgodix4KT0+e3Yuc2V0dGluZ3M9eH0sInNldCIpfSxtZXRhZGF0YTpifSxvLGwpLGJvdCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImN1cnJlbnRVc2VyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHY9PiJjdXJyZW50VXNlciJpbiB2LCJoYXMiKSxnZXQ6aSh2PT52LmN1cnJlbnRVc2VyLCJnZXQiKSxzZXQ6aSgodix4KT0+e3YuY3VycmVudFVzZXI9eH0sInNldCIpfSxtZXRhZGF0YTpifSxkLHUpLGJvdChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpifSxudWxsLHQpLGM9YT1lLnZhbHVlLGImJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pfXN0YXRpYyBkZW1vPWkoKCk9PndgCiAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nOiAyNHB4OyBtYXgtd2lkdGg6IDgwMHB4OyI+CiAgICAgIDxzei1zZXR0aW5ncy12aWV3CiAgICAgICAgLnNldHRpbmdzPSR7e2RhcmtNb2RlOiEwLGNsb3VkZmxhcmVUb2tlbjoiIixjbG91ZGZsYXJlWm9uZUlkOiIiLGF1dG9SZW5ld0NlcnRzOiEwLHJlbmV3YWxUaHJlc2hvbGQ6MzAsYWNtZUVtYWlsOiJjZXJ0c0BleGFtcGxlLmNvbSIsaHR0cFBvcnQ6ODAsaHR0cHNQb3J0OjQ0Myxmb3JjZUh0dHBzOiEwfX0KICAgICAgICBjdXJyZW50VXNlcj0iYWRtaW4iCiAgICAgID48L3N6LXNldHRpbmdzLXZpZXc+CiAgICA8L2Rpdj4KICBgLCJkZW1vIik7c3RhdGljIGRlbW9Hcm91cHM9WyJBdXRoICYgU2V0dGluZ3MiXTsjZT12USh0aGlzLG8se2RhcmtNb2RlOiExLGNsb3VkZmxhcmVUb2tlbjoiIixjbG91ZGZsYXJlWm9uZUlkOiIiLGF1dG9SZW5ld0NlcnRzOiEwLHJlbmV3YWxUaHJlc2hvbGQ6MzAsYWNtZUVtYWlsOiIiLGh0dHBQb3J0OjgwLGh0dHBzUG9ydDo0NDMsZm9yY2VIdHRwczohMH0pO2dldCBzZXR0aW5ncygpe3JldHVybiB0aGlzLiNlfXNldCBzZXR0aW5ncyhiKXt0aGlzLiNlPWJ9I3Q9KHZRKHRoaXMsbCksdlEodGhpcyxkLCIiKSk7Z2V0IGN1cnJlbnRVc2VyKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGN1cnJlbnRVc2VyKGIpe3RoaXMuI3Q9Yn1zdGF0aWMgc3R5bGVzPVtoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICBkZWVzLXRpbGUgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgIH0KCiAgICAgIC5zZWN0aW9uLWhlYWRlciB7CiAgICAgICAgaGVpZ2h0OiAzNnB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiAwIDE2cHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLnNlY3Rpb24taGVhZGluZyB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBtaW4td2lkdGg6IDA7CiAgICAgIH0KCiAgICAgIC5zZWN0aW9uLXRpdGxlIHsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXNlY29uZGFyeSk7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICB9CgogICAgICAuc2VjdGlvbi1zdWJ0aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgfQoKICAgICAgLnNlY3Rpb24tY29udGVudCB7CiAgICAgICAgcGFkZGluZzogMjBweDsKICAgICAgfQoKICAgICAgLnNlY3Rpb24tZm9vdGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMDsKICAgICAgICBoZWlnaHQ6IDM2cHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLnRpbGUtYnV0dG9uIHsKICAgICAgICBwYWRkaW5nOiAwIDE2cHg7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItc3VidGxlKTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDZweDsKICAgICAgfQoKICAgICAgLnRpbGUtYnV0dG9uOmZpcnN0LWNoaWxkIHsKICAgICAgICBib3JkZXItbGVmdDogbm9uZTsKICAgICAgfQoKICAgICAgLnRpbGUtYnV0dG9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWhvdmVyKTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICB9CgogICAgICAudGlsZS1idXR0b24ucHJpbWFyeSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE3LjIgOTEuMiUgNTkuOCUpIiwiaHNsKDIxMy4xIDkzLjklIDY3LjglKSIpfTsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICB9CgogICAgICAudGlsZS1idXR0b24ucHJpbWFyeTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTcuMiA5MS4yJSA1OS44JSAvIDAuMDgpIiwiaHNsKDIxMy4xIDkzLjklIDY3LjglIC8gMC4wOCkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE3LjIgOTEuMiUgNTAlKSIsImhzbCgyMTMuMSA5My45JSA3NSUpIil9OwogICAgICB9CgogICAgICAuZm9ybS1ncm91cCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgfQoKICAgICAgLmZvcm0tZ3JvdXA6bGFzdC1jaGlsZCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgfQoKICAgICAgLmZvcm0tcm93IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDEycHggMDsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMjcyNzJhIil9OwogICAgICB9CgogICAgICAuZm9ybS1yb3c6bGFzdC1jaGlsZCB7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgICAgfQoKICAgICAgLmZvcm0tbGFiZWwtZ3JvdXAgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDJweDsKICAgICAgfQoKICAgICAgLmZvcm0tbGFiZWwgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgIH0KCiAgICAgIC5mb3JtLWhpbnQgewogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICB9CgogICAgICAuaW5wdXQtZ3JvdXAgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDhweDsKICAgICAgfQoKICAgICAgLmlucHV0LXJvdyB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7CiAgICAgICAgZ2FwOiAxNnB4OwogICAgICB9CgogICAgICBpbnB1dFt0eXBlPSJ0ZXh0Il0sCiAgICAgIGlucHV0W3R5cGU9InBhc3N3b3JkIl0sCiAgICAgIGlucHV0W3R5cGU9ImVtYWlsIl0sCiAgICAgIGlucHV0W3R5cGU9Im51bWJlciJdIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMwOTA5MGIiKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNGU0ZTciLCIjMjcyNzJhIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAyMDBtcyBlYXNlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgIGlucHV0OmZvY3VzIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzYwYTVmYSIpfTsKICAgICAgfQoKICAgICAgaW5wdXQ6OnBsYWNlaG9sZGVyIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNhMWExYWEiLCIjNTI1MjViIil9OwogICAgICB9CgogICAgICAudG9nZ2xlLXN3aXRjaCB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHdpZHRoOiA0NHB4OwogICAgICAgIGhlaWdodDogMjRweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2U0ZTRlNyIsIiMyNzI3MmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5OXB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDIwMG1zIGVhc2U7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtc3dpdGNoLmFjdGl2ZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiMyNTYzZWIiLCIjM2I4MmY2Iil9OwogICAgICB9CgogICAgICAudG9nZ2xlLXN3aXRjaDo6YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDJweDsKICAgICAgICBsZWZ0OiAycHg7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjAwbXMgZWFzZTsKICAgICAgfQoKICAgICAgLnRvZ2dsZS1zd2l0Y2guYWN0aXZlOjphZnRlciB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwcHgpOwogICAgICB9CgogICAgICAucGFzc3dvcmQtc2VjdGlvbiB7CiAgICAgICAgbWFyZ2luLXRvcDogMTZweDsKICAgICAgICBwYWRkaW5nLXRvcDogMTZweDsKICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMjcyNzJhIil9OwogICAgICB9CgogICAgICAucGFzc3dvcmQtdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDsKICAgICAgfQoKICAgICAgLnBhc3N3b3JkLWZpZWxkcyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMTJweDsKICAgICAgfQoKICAgICAgLmZpZWxkLWxhYmVsIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7CiAgICAgIH0KCiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRlZXMtdGlsZT4KICAgICAgICA8ZGl2IHNsb3Q9ImhlYWRlciIgY2xhc3M9InNlY3Rpb24taGVhZGVyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24taGVhZGluZyI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5BcHBlYXJhbmNlPC9zcGFuPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdGlvbi1zdWJ0aXRsZSI+Q3VzdG9taXplIHRoZSBsb29rIGFuZCBmZWVsPC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1jb250ZW50Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tcm93Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1sYWJlbC1ncm91cCI+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZvcm0tbGFiZWwiPkRhcmsgTW9kZTwvc3Bhbj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZm9ybS1oaW50Ij5Ub2dnbGUgZGFyayBtb2RlIG9uIG9yIG9mZjwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvZ2dsZS1zd2l0Y2ggJHt0aGlzLnNldHRpbmdzLmRhcmtNb2RlPyJhY3RpdmUiOiIifSIgQGNsaWNrPSR7KCk9PnRoaXMudG9nZ2xlRGFya01vZGUoKX0+PC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXRpbGU+CgogICAgICA8ZGVlcy10aWxlPgogICAgICAgIDxkaXYgc2xvdD0iaGVhZGVyIiBjbGFzcz0ic2VjdGlvbi1oZWFkZXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3Rpb24tdGl0bGUiPkNsb3VkZmxhcmUgSW50ZWdyYXRpb248L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0aW9uLXN1YnRpdGxlIj5Db25maWd1cmUgQ2xvdWRmbGFyZSBBUEkgZm9yIEROUyBtYW5hZ2VtZW50PC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1jb250ZW50Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQtbGFiZWwiPkFQSSBUb2tlbjwvZGl2PgogICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJwYXNzd29yZCIgcGxhY2Vob2xkZXI9IkVudGVyIENsb3VkZmxhcmUgQVBJIHRva2VuIiAudmFsdWU9JHt0aGlzLnNldHRpbmdzLmNsb3VkZmxhcmVUb2tlbn0gQGlucHV0PSR7Yj0+dGhpcy51cGRhdGVTZXR0aW5nKCJjbG91ZGZsYXJlVG9rZW4iLGIudGFyZ2V0LnZhbHVlKX0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC1sYWJlbCI+Wm9uZSBJRCAoT3B0aW9uYWwpPC9kaXY+CiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIHBsYWNlaG9sZGVyPSJEZWZhdWx0IHpvbmUgSUQiIC52YWx1ZT0ke3RoaXMuc2V0dGluZ3MuY2xvdWRmbGFyZVpvbmVJZH0gQGlucHV0PSR7Yj0+dGhpcy51cGRhdGVTZXR0aW5nKCJjbG91ZGZsYXJlWm9uZUlkIixiLnRhcmdldC52YWx1ZSl9PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1oaW50Ij5HZXQgeW91ciBBUEkgdG9rZW4gZnJvbSB0aGUgQ2xvdWRmbGFyZSBkYXNoYm9hcmQgd2l0aCBETlMgZWRpdCBwZXJtaXNzaW9ucy48L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtdGlsZT4KCiAgICAgIDxkZWVzLXRpbGU+CiAgICAgICAgPGRpdiBzbG90PSJoZWFkZXIiIGNsYXNzPSJzZWN0aW9uLWhlYWRlciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWhlYWRpbmciPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+U1NML1RMUyBTZXR0aW5nczwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3Rpb24tc3VidGl0bGUiPkNvbmZpZ3VyZSBjZXJ0aWZpY2F0ZSBtYW5hZ2VtZW50PC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1jb250ZW50Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tcm93Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1sYWJlbC1ncm91cCI+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZvcm0tbGFiZWwiPkF1dG8tUmVuZXcgQ2VydGlmaWNhdGVzPC9zcGFuPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmb3JtLWhpbnQiPkF1dG9tYXRpY2FsbHkgcmVuZXcgY2VydGlmaWNhdGVzIGJlZm9yZSBleHBpcnk8L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2dnbGUtc3dpdGNoICR7dGhpcy5zZXR0aW5ncy5hdXRvUmVuZXdDZXJ0cz8iYWN0aXZlIjoiIn0iIEBjbGljaz0keygpPT50aGlzLnRvZ2dsZVNldHRpbmcoImF1dG9SZW5ld0NlcnRzIil9PjwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIiBzdHlsZT0ibWFyZ2luLXRvcDogMTZweDsiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC1sYWJlbCI+UmVuZXdhbCBUaHJlc2hvbGQgKGRheXMpPC9kaXY+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIC52YWx1ZT0ke1N0cmluZyh0aGlzLnNldHRpbmdzLnJlbmV3YWxUaHJlc2hvbGQpfSBAaW5wdXQ9JHtiPT50aGlzLnVwZGF0ZVNldHRpbmcoInJlbmV3YWxUaHJlc2hvbGQiLHBhcnNlSW50KGIudGFyZ2V0LnZhbHVlKSl9PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWhpbnQiPlJlbmV3IGNlcnRpZmljYXRlcyB3aGVuIHRoZXkgaGF2ZSBmZXdlciB0aGFuIHRoaXMgbWFueSBkYXlzIHJlbWFpbmluZy48L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkLWxhYmVsIj5BQ01FIEVtYWlsPC9kaXY+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJlbWFpbCIgcGxhY2Vob2xkZXI9ImFkbWluQGV4YW1wbGUuY29tIiAudmFsdWU9JHt0aGlzLnNldHRpbmdzLmFjbWVFbWFpbH0gQGlucHV0PSR7Yj0+dGhpcy51cGRhdGVTZXR0aW5nKCJhY21lRW1haWwiLGIudGFyZ2V0LnZhbHVlKX0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0taGludCI+RW1haWwgYWRkcmVzcyBmb3IgTGV0J3MgRW5jcnlwdCBub3RpZmljYXRpb25zLjwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy10aWxlPgoKICAgICAgPGRlZXMtdGlsZT4KICAgICAgICA8ZGl2IHNsb3Q9ImhlYWRlciIgY2xhc3M9InNlY3Rpb24taGVhZGVyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24taGVhZGluZyI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5OZXR3b3JrIFNldHRpbmdzPC9zcGFuPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdGlvbi1zdWJ0aXRsZSI+Q29uZmlndXJlIG5ldHdvcmsgYW5kIHByb3h5IHNldHRpbmdzPC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1jb250ZW50Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0LXJvdyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkLWxhYmVsIj5IVFRQIFBvcnQ8L2Rpdj4KICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiAudmFsdWU9JHtTdHJpbmcodGhpcy5zZXR0aW5ncy5odHRwUG9ydCl9IEBpbnB1dD0ke2I9PnRoaXMudXBkYXRlU2V0dGluZygiaHR0cFBvcnQiLHBhcnNlSW50KGIudGFyZ2V0LnZhbHVlKSl9PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQtbGFiZWwiPkhUVFBTIFBvcnQ8L2Rpdj4KICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiAudmFsdWU9JHtTdHJpbmcodGhpcy5zZXR0aW5ncy5odHRwc1BvcnQpfSBAaW5wdXQ9JHtiPT50aGlzLnVwZGF0ZVNldHRpbmcoImh0dHBzUG9ydCIscGFyc2VJbnQoYi50YXJnZXQudmFsdWUpKX0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLXJvdyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tbGFiZWwtZ3JvdXAiPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmb3JtLWxhYmVsIj5Gb3JjZSBIVFRQUzwvc3Bhbj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZm9ybS1oaW50Ij5SZWRpcmVjdCBhbGwgSFRUUCB0cmFmZmljIHRvIEhUVFBTPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9nZ2xlLXN3aXRjaCAke3RoaXMuc2V0dGluZ3MuZm9yY2VIdHRwcz8iYWN0aXZlIjoiIn0iIEBjbGljaz0keygpPT50aGlzLnRvZ2dsZVNldHRpbmcoImZvcmNlSHR0cHMiKX0+PC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXRpbGU+CgogICAgICA8ZGVlcy10aWxlPgogICAgICAgIDxkaXYgc2xvdD0iaGVhZGVyIiBjbGFzcz0ic2VjdGlvbi1oZWFkZXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3Rpb24tdGl0bGUiPkFjY291bnQ8L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0aW9uLXN1YnRpdGxlIj5NYW5hZ2UgeW91ciBhY2NvdW50IHNldHRpbmdzPC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1jb250ZW50Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC1sYWJlbCI+Q3VycmVudCBVc2VyPC9kaXY+CiAgICAgICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZTogMTRweDsgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsiPiR7dGhpcy5jdXJyZW50VXNlcnx8IlVua25vd24ifTwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwYXNzd29yZC1zZWN0aW9uIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFzc3dvcmQtdGl0bGUiPkNoYW5nZSBQYXNzd29yZDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYXNzd29yZC1maWVsZHMiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC1sYWJlbCI+Q3VycmVudCBQYXNzd29yZDwvZGl2PgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InBhc3N3b3JkIiBpZD0iY3VycmVudFBhc3N3b3JkIj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQtbGFiZWwiPk5ldyBQYXNzd29yZDwvZGl2PgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InBhc3N3b3JkIiBpZD0ibmV3UGFzc3dvcmQiPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC1sYWJlbCI+Q29uZmlybSBQYXNzd29yZDwvZGl2PgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InBhc3N3b3JkIiBpZD0iY29uZmlybVBhc3N3b3JkIj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IHNsb3Q9ImZvb3RlciIgY2xhc3M9InNlY3Rpb24tZm9vdGVyIj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9InRpbGUtYnV0dG9uIiBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVDaGFuZ2VQYXNzd29yZCgpfT5VcGRhdGUgUGFzc3dvcmQ8L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXRpbGU+CgogICAgICA8ZGVlcy10aWxlPgogICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tY29udGVudCIgc3R5bGU9InBhZGRpbmc6IDEycHggMTZweDsgdGV4dC1hbGlnbjogY2VudGVyOyBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsgZm9udC1zaXplOiAxMnB4OyI+CiAgICAgICAgICBTYXZlIHlvdXIgY2hhbmdlcyBvciByZXNldCB0byBkZWZhdWx0cy4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IHNsb3Q9ImZvb3RlciIgY2xhc3M9InNlY3Rpb24tZm9vdGVyIj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9InRpbGUtYnV0dG9uIiBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVSZXNldCgpfT5SZXNldDwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idGlsZS1idXR0b24gcHJpbWFyeSIgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlU2F2ZSgpfT5TYXZlIFNldHRpbmdzPC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy10aWxlPgogICAgYH10b2dnbGVEYXJrTW9kZSgpe3RoaXMuc2V0dGluZ3M9ey4uLnRoaXMuc2V0dGluZ3MsZGFya01vZGU6IXRoaXMuc2V0dGluZ3MuZGFya01vZGV9LHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInNldHRpbmctY2hhbmdlIix7ZGV0YWlsOntrZXk6ImRhcmtNb2RlIix2YWx1ZTp0aGlzLnNldHRpbmdzLmRhcmtNb2RlfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfXRvZ2dsZVNldHRpbmcoYil7dGhpcy5zZXR0aW5nc1tiXT0hdGhpcy5zZXR0aW5nc1tiXSx0aGlzLnNldHRpbmdzPXsuLi50aGlzLnNldHRpbmdzfX11cGRhdGVTZXR0aW5nKGIsdil7dGhpcy5zZXR0aW5nc1tiXT12LHRoaXMuc2V0dGluZ3M9ey4uLnRoaXMuc2V0dGluZ3N9fWhhbmRsZUNoYW5nZVBhc3N3b3JkKCl7bGV0IGI9dGhpcy5zaGFkb3dSb290Py5nZXRFbGVtZW50QnlJZCgiY3VycmVudFBhc3N3b3JkIik/LnZhbHVlLHY9dGhpcy5zaGFkb3dSb290Py5nZXRFbGVtZW50QnlJZCgibmV3UGFzc3dvcmQiKT8udmFsdWUseD10aGlzLnNoYWRvd1Jvb3Q/LmdldEVsZW1lbnRCeUlkKCJjb25maXJtUGFzc3dvcmQiKT8udmFsdWU7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY2hhbmdlLXBhc3N3b3JkIix7ZGV0YWlsOntjdXJyZW50UGFzc3dvcmQ6YixuZXdQYXNzd29yZDp2LGNvbmZpcm1QYXNzd29yZDp4fSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZVJlc2V0KCl7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgicmVzZXQiLHtidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZVNhdmUoKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJzYXZlIix7ZGV0YWlsOnRoaXMuc2V0dGluZ3MsYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdlEodGhpcyx1KX1zdGF0aWN7dlEoYSx0KX19O3JldHVybiBjPWF9KSgpfSk7dmFyIHhRLFR1LFlRYSxzOWE9ZygoKT0+e3BlKCk7eFE9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LFR1PWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxZUWE9KCgpPT57bGV0IHM9W25lKCJzei1sb2dpbi12aWV3IildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W107dmFyIHk9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIlN6TG9naW5WaWV3Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IE09dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpCb29sZWFufSldLHA9W0woe3R5cGU6U3RyaW5nfSldLGM9W0woe3R5cGU6U3RyaW5nfSldLHg9W0woe3R5cGU6U3RyaW5nfSldLHhRKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibG9hZGluZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4ibG9hZGluZyJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LmxvYWRpbmcsImdldCIpLHNldDppKCh6LE4pPT57ei5sb2FkaW5nPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sbyxsKSx4USh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImVycm9yIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJlcnJvciJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LmVycm9yLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3ouZXJyb3I9Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxkLHUpLHhRKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidGl0bGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoej0+InRpdGxlImluIHosImhhcyIpLGdldDppKHo9PnoudGl0bGUsImdldCIpLHNldDppKCh6LE4pPT57ei50aXRsZT1OfSwic2V0Iil9LG1ldGFkYXRhOk19LGIsdikseFEodGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzdWJ0aXRsZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4ic3VidGl0bGUiaW4geiwiaGFzIiksZ2V0Omkoej0+ei5zdWJ0aXRsZSwiZ2V0Iiksc2V0OmkoKHosTik9Pnt6LnN1YnRpdGxlPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sbSxmKSx4UShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpNfSxudWxsLHQpLHk9YT1lLnZhbHVlLE0mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6TX0pfXN0YXRpYyBkZW1vPWkoKCk9PndgCiAgICA8ZGl2IHN0eWxlPSJoZWlnaHQ6IDYwMHB4OyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgYmFja2dyb3VuZDogIzA5MDkwYjsiPgogICAgICA8c3otbG9naW4tdmlldz48L3N6LWxvZ2luLXZpZXc+CiAgICA8L2Rpdj4KICBgLCJkZW1vIik7c3RhdGljIGRlbW9Hcm91cHM9WyJBdXRoICYgU2V0dGluZ3MiXTsjZT1UdSh0aGlzLG8sITEpO2dldCBsb2FkaW5nKCl7cmV0dXJuIHRoaXMuI2V9c2V0IGxvYWRpbmcoTSl7dGhpcy4jZT1NfSN0PShUdSh0aGlzLGwpLFR1KHRoaXMsZCwiIikpO2dldCBlcnJvcigpe3JldHVybiB0aGlzLiN0fXNldCBlcnJvcihNKXt0aGlzLiN0PU19I2E9KFR1KHRoaXMsdSksVHUodGhpcyxiLCJzZXJ2ZS56b25lIikpO2dldCB0aXRsZSgpe3JldHVybiB0aGlzLiNhfXNldCB0aXRsZShNKXt0aGlzLiNhPU19I3M9KFR1KHRoaXMsdiksVHUodGhpcyxtLCJTaWduIGluIHRvIHlvdXIgb25lYm94IikpO2dldCBzdWJ0aXRsZSgpe3JldHVybiB0aGlzLiNzfXNldCBzdWJ0aXRsZShNKXt0aGlzLiNzPU19c3RhdGljIHN0eWxlcz1baC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgbWluLWhlaWdodDogMTAwdmg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMDkwOTBiIil9OwogICAgICB9CgogICAgICAubG9naW4tY29udGFpbmVyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IDQwMHB4OwogICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgIH0KCiAgICAgIC5sb2dpbi1jYXJkIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMxODE4MWIiKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNGU0ZTciLCIjMjcyNzJhIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICAgICAgcGFkZGluZzogMzJweDsKICAgICAgICBib3gtc2hhZG93OiAwIDRweCA2cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMSksIDAgMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4wNik7CiAgICAgIH0KCiAgICAgIC5sb2dvLXNlY3Rpb24gewogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBtYXJnaW4tYm90dG9tOiAzMnB4OwogICAgICB9CgogICAgICAubG9nbyB7CiAgICAgICAgd2lkdGg6IDY0cHg7CiAgICAgICAgaGVpZ2h0OiA2NHB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBtYXJnaW46IDAgYXV0byAxNnB4OwogICAgICB9CgogICAgICAubG9nbyBzdmcgewogICAgICAgIHdpZHRoOiAzNnB4OwogICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNmYWZhZmEiLCIjMTgxODFiIil9OwogICAgICB9CgogICAgICAudGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMjRweDsKICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4OwogICAgICB9CgogICAgICAuc3VidGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICB9CgogICAgICAuZm9ybSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMjBweDsKICAgICAgfQoKICAgICAgLmZvcm0tZ3JvdXAgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDZweDsKICAgICAgfQoKICAgICAgLmZvcm0tbGFiZWwgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgIH0KCiAgICAgIC5mb3JtLWlucHV0IHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBwYWRkaW5nOiAxMnB4IDE0cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDkwOTBiIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTRlNGU3IiwiIzI3MjcyYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMjAwbXMgZWFzZSwgYm94LXNoYWRvdyAyMDBtcyBlYXNlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgIC5mb3JtLWlucHV0OmZvY3VzIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzYwYTVmYSIpfTsKICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggJHtoLmJkVGhlbWUoInJnYmEoNTksIDEzMCwgMjQ2LCAwLjEpIiwicmdiYSg5NiwgMTY1LCAyNTAsIDAuMSkiKX07CiAgICAgIH0KCiAgICAgIC5mb3JtLWlucHV0OjpwbGFjZWhvbGRlciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjYTFhMWFhIiwiIzUyNTI1YiIpfTsKICAgICAgfQoKICAgICAgLmZvcm0taW5wdXQuZXJyb3IgewogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiNlZjQ0NDQiLCIjZjg3MTcxIil9OwogICAgICB9CgogICAgICAuZXJyb3ItbWVzc2FnZSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIHBhZGRpbmc6IDEycHggMTRweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZlZjJmMiIsInJnYmEoMjM5LCA2OCwgNjgsIDAuMSkiKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNmZWNhY2EiLCJyZ2JhKDIzOSwgNjgsIDY4LCAwLjIpIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZGMyNjI2IiwiI2Y4NzE3MSIpfTsKICAgICAgfQoKICAgICAgLmVycm9yLW1lc3NhZ2Ugc3ZnIHsKICAgICAgICB3aWR0aDogMThweDsKICAgICAgICBoZWlnaHQ6IDE4cHg7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC5zdWJtaXQtYnV0dG9uIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBwYWRkaW5nOiAxMnB4IDIwcHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZmFmYWZhIiwiIzE4MTgxYiIpfTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAyMDBtcyBlYXNlLCB0cmFuc2Zvcm0gMjAwbXMgZWFzZTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgIH0KCiAgICAgIC5zdWJtaXQtYnV0dG9uOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHsKICAgICAgICBvcGFjaXR5OiAwLjk7CiAgICAgIH0KCiAgICAgIC5zdWJtaXQtYnV0dG9uOmFjdGl2ZTpub3QoOmRpc2FibGVkKSB7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk4KTsKICAgICAgfQoKICAgICAgLnN1Ym1pdC1idXR0b246ZGlzYWJsZWQgewogICAgICAgIG9wYWNpdHk6IDAuNjsKICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICB9CgogICAgICAuc3Bpbm5lciB7CiAgICAgICAgd2lkdGg6IDE4cHg7CiAgICAgICAgaGVpZ2h0OiAxOHB4OwogICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlci10b3AtY29sb3I6IGN1cnJlbnRDb2xvcjsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYW5pbWF0aW9uOiBzcGluIDAuOHMgbGluZWFyIGluZmluaXRlOwogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIHNwaW4gewogICAgICAgIHRvIHsKICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICAgICAgfQogICAgICB9CgogICAgICAuZm9vdGVyIHsKICAgICAgICBtYXJnaW4tdG9wOiAyNHB4OwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQoKICAgICAgLmZvb3RlciBhIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzYjgyZjYiLCIjNjBhNWZhIil9OwogICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgfQoKICAgICAgLmZvb3RlciBhOmhvdmVyIHsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImxvZ2luLWNvbnRhaW5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0ibG9naW4tY2FyZCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvLXNlY3Rpb24iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvIj4KICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMSAxNlY4YTIgMiAwIDAgMC0xLTEuNzNsLTctNGEyIDIgMCAwIDAtMiAwbC03IDRBMiAyIDAgMCAwIDMgOHY4YTIgMiAwIDAgMCAxIDEuNzNsNyA0YTIgMiAwIDAgMCAyIDBsNy00QTIgMiAwIDAgMCAyMSAxNnoiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9IjMuMjcgNi45NiAxMiAxMi4wMSAyMC43MyA2Ljk2Ij48L3BvbHlsaW5lPgogICAgICAgICAgICAgICAgPGxpbmUgeDE9IjEyIiB5MT0iMjIuMDgiIHgyPSIxMiIgeTI9IjEyIj48L2xpbmU+CiAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+JHt0aGlzLnRpdGxlfTwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWJ0aXRsZSI+JHt0aGlzLnN1YnRpdGxlfTwvZGl2PgogICAgICAgICAgPC9kaXY+CgogICAgICAgICAgPGZvcm0gY2xhc3M9ImZvcm0iIEBzdWJtaXQ9JHt0aGlzLmhhbmRsZVN1Ym1pdH0+CiAgICAgICAgICAgICR7dGhpcy5lcnJvcj93YAogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVycm9yLW1lc3NhZ2UiPgogICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgIDxsaW5lIHgxPSIxMiIgeTE9IjgiIHgyPSIxMiIgeTI9IjEyIj48L2xpbmU+CiAgICAgICAgICAgICAgICAgIDxsaW5lIHgxPSIxMiIgeTE9IjE2IiB4Mj0iMTIuMDEiIHkyPSIxNiI+PC9saW5lPgogICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAke3RoaXMuZXJyb3J9CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGA6IiJ9CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9ImZvcm0tbGFiZWwiIGZvcj0idXNlcm5hbWUiPlVzZXJuYW1lPC9sYWJlbD4KICAgICAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgICAgIHR5cGU9InRleHQiCiAgICAgICAgICAgICAgICBpZD0idXNlcm5hbWUiCiAgICAgICAgICAgICAgICBjbGFzcz0iZm9ybS1pbnB1dCAke3RoaXMuZXJyb3I/ImVycm9yIjoiIn0iCiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj0iRW50ZXIgeW91ciB1c2VybmFtZSIKICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT0idXNlcm5hbWUiCiAgICAgICAgICAgICAgICA/ZGlzYWJsZWQ9JHt0aGlzLmxvYWRpbmd9CiAgICAgICAgICAgICAgICByZXF1aXJlZAogICAgICAgICAgICAgID4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9ImZvcm0tbGFiZWwiIGZvcj0icGFzc3dvcmQiPlBhc3N3b3JkPC9sYWJlbD4KICAgICAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgICAgIHR5cGU9InBhc3N3b3JkIgogICAgICAgICAgICAgICAgaWQ9InBhc3N3b3JkIgogICAgICAgICAgICAgICAgY2xhc3M9ImZvcm0taW5wdXQgJHt0aGlzLmVycm9yPyJlcnJvciI6IiJ9IgogICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9IkVudGVyIHlvdXIgcGFzc3dvcmQiCiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9ImN1cnJlbnQtcGFzc3dvcmQiCiAgICAgICAgICAgICAgICA/ZGlzYWJsZWQ9JHt0aGlzLmxvYWRpbmd9CiAgICAgICAgICAgICAgICByZXF1aXJlZAogICAgICAgICAgICAgID4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9InN1Ym1pdC1idXR0b24iID9kaXNhYmxlZD0ke3RoaXMubG9hZGluZ30+CiAgICAgICAgICAgICAgJHt0aGlzLmxvYWRpbmc/d2AKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwaW5uZXIiPjwvZGl2PgogICAgICAgICAgICAgICAgU2lnbmluZyBpbi4uLgogICAgICAgICAgICAgIGA6IlNpZ24gaW4ifQogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgIDwvZm9ybT4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXIiPgogICAgICAgICAgICBQb3dlcmVkIGJ5IDxhIGhyZWY9Imh0dHBzOi8vc2VydmUuem9uZSIgdGFyZ2V0PSJfYmxhbmsiPnNlcnZlLnpvbmU8L2E+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfWhhbmRsZVN1Ym1pdChNKXtNLnByZXZlbnREZWZhdWx0KCk7bGV0IHo9dGhpcy5zaGFkb3dSb290Py5nZXRFbGVtZW50QnlJZCgidXNlcm5hbWUiKSxOPXRoaXMuc2hhZG93Um9vdD8uZ2V0RWxlbWVudEJ5SWQoInBhc3N3b3JkIik7aWYoIXp8fCFOKXJldHVybjtsZXQgQz16LnZhbHVlLnRyaW0oKSxfPU4udmFsdWU7aWYoIUN8fCFfKXt0aGlzLmVycm9yPSJQbGVhc2UgZW50ZXIgYm90aCB1c2VybmFtZSBhbmQgcGFzc3dvcmQiO3JldHVybn10aGlzLmVycm9yPSIiLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImxvZ2luIix7ZGV0YWlsOnt1c2VybmFtZTpDLHBhc3N3b3JkOl99LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9Y2xlYXJGb3JtKCl7bGV0IE09dGhpcy5zaGFkb3dSb290Py5nZXRFbGVtZW50QnlJZCgidXNlcm5hbWUiKSx6PXRoaXMuc2hhZG93Um9vdD8uZ2V0RWxlbWVudEJ5SWQoInBhc3N3b3JkIik7TSYmKE0udmFsdWU9IiIpLHomJih6LnZhbHVlPSIiKSx0aGlzLmVycm9yPSIifWZvY3VzVXNlcm5hbWUoKXtsZXQgTT10aGlzLnNoYWRvd1Jvb3Q/LmdldEVsZW1lbnRCeUlkKCJ1c2VybmFtZSIpO00mJk0uZm9jdXMoKX1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksVHUodGhpcyxmKX1zdGF0aWN7VHUoYSx0KX19O3JldHVybiB5PWF9KSgpfSk7dmFyIE5vLGJzLFpRYSxpOWE9ZygoKT0+e3BlKCk7Tm89ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LGJzPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxaUWE9KCgpPT57bGV0IHM9W25lKCJzei1zZXJ2aWNlLWNyZWF0ZS12aWV3IildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W10sSCxrPVtdLFM9W10sSSxQPVtdLFI9W10sSyxWPVtdLFc9W10sbWUsQj1bXSxVPVtdLGhlLEY9W10saj1bXSx1ZSxsZT1bXSxRPVtdLGllLHRlPVtdLGVlPVtdLGtlLFg9W10sWj1bXSx5ZSxxPVtdLEE9W107dmFyIHNlPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJTelNlcnZpY2VDcmVhdGVWaWV3Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IG9lPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6QXJyYXl9KV0scD1bTCh7dHlwZTpCb29sZWFufSldLGM9W1koKV0seD1bWSgpXSx5PVtZKCldLE49W1koKV0sTz1bWSgpXSxIPVtZKCldLEk9W1koKV0sSz1bWSgpXSxtZT1bWSgpXSxoZT1bWSgpXSx1ZT1bWSgpXSxpZT1bWSgpXSxrZT1bWSgpXSx5ZT1bWSgpXSxObyh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InJlZ2lzdHJpZXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYWU9PiJyZWdpc3RyaWVzImluIGFlLCJoYXMiKSxnZXQ6aShhZT0+YWUucmVnaXN0cmllcywiZ2V0Iiksc2V0OmkoKGFlLFRlKT0+e2FlLnJlZ2lzdHJpZXM9VGV9LCJzZXQiKX0sbWV0YWRhdGE6b2V9LG8sbCksTm8odGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJsb2FkaW5nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGFlPT4ibG9hZGluZyJpbiBhZSwiaGFzIiksZ2V0OmkoYWU9PmFlLmxvYWRpbmcsImdldCIpLHNldDppKChhZSxUZSk9PnthZS5sb2FkaW5nPVRlfSwic2V0Iil9LG1ldGFkYXRhOm9lfSxkLHUpLE5vKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VydmljZU5hbWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYWU9PiJzZXJ2aWNlTmFtZSJpbiBhZSwiaGFzIiksZ2V0OmkoYWU9PmFlLnNlcnZpY2VOYW1lLCJnZXQiKSxzZXQ6aSgoYWUsVGUpPT57YWUuc2VydmljZU5hbWU9VGV9LCJzZXQiKX0sbWV0YWRhdGE6b2V9LGIsdiksTm8odGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpbWFnZVVybCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShhZT0+ImltYWdlVXJsImluIGFlLCJoYXMiKSxnZXQ6aShhZT0+YWUuaW1hZ2VVcmwsImdldCIpLHNldDppKChhZSxUZSk9PnthZS5pbWFnZVVybD1UZX0sInNldCIpfSxtZXRhZGF0YTpvZX0sbSxmKSxObyh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlbGVjdGVkUmVnaXN0cnkiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYWU9PiJzZWxlY3RlZFJlZ2lzdHJ5ImluIGFlLCJoYXMiKSxnZXQ6aShhZT0+YWUuc2VsZWN0ZWRSZWdpc3RyeSwiZ2V0Iiksc2V0OmkoKGFlLFRlKT0+e2FlLnNlbGVjdGVkUmVnaXN0cnk9VGV9LCJzZXQiKX0sbWV0YWRhdGE6b2V9LE0seiksTm8odGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJwb3J0cyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShhZT0+InBvcnRzImluIGFlLCJoYXMiKSxnZXQ6aShhZT0+YWUucG9ydHMsImdldCIpLHNldDppKChhZSxUZSk9PnthZS5wb3J0cz1UZX0sInNldCIpfSxtZXRhZGF0YTpvZX0sQyxfKSxObyh0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImVudlZhcnMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYWU9PiJlbnZWYXJzImluIGFlLCJoYXMiKSxnZXQ6aShhZT0+YWUuZW52VmFycywiZ2V0Iiksc2V0OmkoKGFlLFRlKT0+e2FlLmVudlZhcnM9VGV9LCJzZXQiKX0sbWV0YWRhdGE6b2V9LCQsRSksTm8odGhpcyxudWxsLEgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2b2x1bWVzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGFlPT4idm9sdW1lcyJpbiBhZSwiaGFzIiksZ2V0OmkoYWU9PmFlLnZvbHVtZXMsImdldCIpLHNldDppKChhZSxUZSk9PnthZS52b2x1bWVzPVRlfSwic2V0Iil9LG1ldGFkYXRhOm9lfSxrLFMpLE5vKHRoaXMsbnVsbCxJLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY3B1TGltaXQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYWU9PiJjcHVMaW1pdCJpbiBhZSwiaGFzIiksZ2V0OmkoYWU9PmFlLmNwdUxpbWl0LCJnZXQiKSxzZXQ6aSgoYWUsVGUpPT57YWUuY3B1TGltaXQ9VGV9LCJzZXQiKX0sbWV0YWRhdGE6b2V9LFAsUiksTm8odGhpcyxudWxsLEsse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtZW1vcnlMaW1pdCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShhZT0+Im1lbW9yeUxpbWl0ImluIGFlLCJoYXMiKSxnZXQ6aShhZT0+YWUubWVtb3J5TGltaXQsImdldCIpLHNldDppKChhZSxUZSk9PnthZS5tZW1vcnlMaW1pdD1UZX0sInNldCIpfSxtZXRhZGF0YTpvZX0sVixXKSxObyh0aGlzLG51bGwsbWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJyZXN0YXJ0UG9saWN5IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGFlPT4icmVzdGFydFBvbGljeSJpbiBhZSwiaGFzIiksZ2V0OmkoYWU9PmFlLnJlc3RhcnRQb2xpY3ksImdldCIpLHNldDppKChhZSxUZSk9PnthZS5yZXN0YXJ0UG9saWN5PVRlfSwic2V0Iil9LG1ldGFkYXRhOm9lfSxCLFUpLE5vKHRoaXMsbnVsbCxoZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im5ldHdvcmtNb2RlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGFlPT4ibmV0d29ya01vZGUiaW4gYWUsImhhcyIpLGdldDppKGFlPT5hZS5uZXR3b3JrTW9kZSwiZ2V0Iiksc2V0OmkoKGFlLFRlKT0+e2FlLm5ldHdvcmtNb2RlPVRlfSwic2V0Iil9LG1ldGFkYXRhOm9lfSxGLGopLE5vKHRoaXMsbnVsbCx1ZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dBZHZhbmNlZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShhZT0+InNob3dBZHZhbmNlZCJpbiBhZSwiaGFzIiksZ2V0OmkoYWU9PmFlLnNob3dBZHZhbmNlZCwiZ2V0Iiksc2V0OmkoKGFlLFRlKT0+e2FlLnNob3dBZHZhbmNlZD1UZX0sInNldCIpfSxtZXRhZGF0YTpvZX0sbGUsUSksTm8odGhpcyxudWxsLGllLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZW5hYmxlTW9uZ29EQiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShhZT0+ImVuYWJsZU1vbmdvREIiaW4gYWUsImhhcyIpLGdldDppKGFlPT5hZS5lbmFibGVNb25nb0RCLCJnZXQiKSxzZXQ6aSgoYWUsVGUpPT57YWUuZW5hYmxlTW9uZ29EQj1UZX0sInNldCIpfSxtZXRhZGF0YTpvZX0sdGUsZWUpLE5vKHRoaXMsbnVsbCxrZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImVuYWJsZVMzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGFlPT4iZW5hYmxlUzMiaW4gYWUsImhhcyIpLGdldDppKGFlPT5hZS5lbmFibGVTMywiZ2V0Iiksc2V0OmkoKGFlLFRlKT0+e2FlLmVuYWJsZVMzPVRlfSwic2V0Iil9LG1ldGFkYXRhOm9lfSxYLFopLE5vKHRoaXMsbnVsbCx5ZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImVuYWJsZUNsaWNrSG91c2UiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYWU9PiJlbmFibGVDbGlja0hvdXNlImluIGFlLCJoYXMiKSxnZXQ6aShhZT0+YWUuZW5hYmxlQ2xpY2tIb3VzZSwiZ2V0Iiksc2V0OmkoKGFlLFRlKT0+e2FlLmVuYWJsZUNsaWNrSG91c2U9VGV9LCJzZXQiKX0sbWV0YWRhdGE6b2V9LHEsQSksTm8obnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6b2V9LG51bGwsdCksc2U9YT1lLnZhbHVlLG9lJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm9lfSl9c3RhdGljIGRlbW89aSgoKT0+d2AKICAgIDxkaXYgc3R5bGU9InBhZGRpbmc6IDI0cHg7IG1heC13aWR0aDogODAwcHg7Ij4KICAgICAgPHN6LXNlcnZpY2UtY3JlYXRlLXZpZXcKICAgICAgICAucmVnaXN0cmllcz0ke1t7aWQ6IjEiLG5hbWU6Ik9uZWJveCBSZWdpc3RyeSIsdXJsOiJyZWdpc3RyeS5vbmVib3gubG9jYWwifSx7aWQ6IjIiLG5hbWU6IkRvY2tlciBIdWIiLHVybDoiZG9ja2VyLmlvIn1dfQogICAgICA+PC9zei1zZXJ2aWNlLWNyZWF0ZS12aWV3PgogICAgPC9kaXY+CiAgYCwiZGVtbyIpO3N0YXRpYyBkZW1vR3JvdXBzPVsiU2VydmljZXMiXTsjZT1icyh0aGlzLG8sW10pO2dldCByZWdpc3RyaWVzKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHJlZ2lzdHJpZXMob2Upe3RoaXMuI2U9b2V9I3Q9KGJzKHRoaXMsbCksYnModGhpcyxkLCExKSk7Z2V0IGxvYWRpbmcoKXtyZXR1cm4gdGhpcy4jdH1zZXQgbG9hZGluZyhvZSl7dGhpcy4jdD1vZX0jYT0oYnModGhpcyx1KSxicyh0aGlzLGIsIiIpKTtnZXQgc2VydmljZU5hbWUoKXtyZXR1cm4gdGhpcy4jYX1zZXQgc2VydmljZU5hbWUob2Upe3RoaXMuI2E9b2V9I3M9KGJzKHRoaXMsdiksYnModGhpcyxtLCIiKSk7Z2V0IGltYWdlVXJsKCl7cmV0dXJuIHRoaXMuI3N9c2V0IGltYWdlVXJsKG9lKXt0aGlzLiNzPW9lfSNpPShicyh0aGlzLGYpLGJzKHRoaXMsTSwiIikpO2dldCBzZWxlY3RlZFJlZ2lzdHJ5KCl7cmV0dXJuIHRoaXMuI2l9c2V0IHNlbGVjdGVkUmVnaXN0cnkob2Upe3RoaXMuI2k9b2V9I3I9KGJzKHRoaXMseiksYnModGhpcyxDLFt7aG9zdFBvcnQ6IiIsY29udGFpbmVyUG9ydDoiIixwcm90b2NvbDoidGNwIn1dKSk7Z2V0IHBvcnRzKCl7cmV0dXJuIHRoaXMuI3J9c2V0IHBvcnRzKG9lKXt0aGlzLiNyPW9lfSNvPShicyh0aGlzLF8pLGJzKHRoaXMsJCxbe2tleToiIix2YWx1ZToiIn1dKSk7Z2V0IGVudlZhcnMoKXtyZXR1cm4gdGhpcy4jb31zZXQgZW52VmFycyhvZSl7dGhpcy4jbz1vZX0jbj0oYnModGhpcyxFKSxicyh0aGlzLGssW10pKTtnZXQgdm9sdW1lcygpe3JldHVybiB0aGlzLiNufXNldCB2b2x1bWVzKG9lKXt0aGlzLiNuPW9lfSNsPShicyh0aGlzLFMpLGJzKHRoaXMsUCwiIikpO2dldCBjcHVMaW1pdCgpe3JldHVybiB0aGlzLiNsfXNldCBjcHVMaW1pdChvZSl7dGhpcy4jbD1vZX0jYz0oYnModGhpcyxSKSxicyh0aGlzLFYsIiIpKTtnZXQgbWVtb3J5TGltaXQoKXtyZXR1cm4gdGhpcy4jY31zZXQgbWVtb3J5TGltaXQob2Upe3RoaXMuI2M9b2V9I2Q9KGJzKHRoaXMsVyksYnModGhpcyxCLCJhbHdheXMiKSk7Z2V0IHJlc3RhcnRQb2xpY3koKXtyZXR1cm4gdGhpcy4jZH1zZXQgcmVzdGFydFBvbGljeShvZSl7dGhpcy4jZD1vZX0jdT0oYnModGhpcyxVKSxicyh0aGlzLEYsImJyaWRnZSIpKTtnZXQgbmV0d29ya01vZGUoKXtyZXR1cm4gdGhpcy4jdX1zZXQgbmV0d29ya01vZGUob2Upe3RoaXMuI3U9b2V9I3A9KGJzKHRoaXMsaiksYnModGhpcyxsZSwhMSkpO2dldCBzaG93QWR2YW5jZWQoKXtyZXR1cm4gdGhpcy4jcH1zZXQgc2hvd0FkdmFuY2VkKG9lKXt0aGlzLiNwPW9lfSNoPShicyh0aGlzLFEpLGJzKHRoaXMsdGUsITEpKTtnZXQgZW5hYmxlTW9uZ29EQigpe3JldHVybiB0aGlzLiNofXNldCBlbmFibGVNb25nb0RCKG9lKXt0aGlzLiNoPW9lfSNmPShicyh0aGlzLGVlKSxicyh0aGlzLFgsITEpKTtnZXQgZW5hYmxlUzMoKXtyZXR1cm4gdGhpcy4jZn1zZXQgZW5hYmxlUzMob2Upe3RoaXMuI2Y9b2V9I209KGJzKHRoaXMsWiksYnModGhpcyxxLCExKSk7Z2V0IGVuYWJsZUNsaWNrSG91c2UoKXtyZXR1cm4gdGhpcy4jbX1zZXQgZW5hYmxlQ2xpY2tIb3VzZShvZSl7dGhpcy4jbT1vZX1zdGF0aWMgc3R5bGVzPVtoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICAuaGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgIH0KCiAgICAgIC5oZWFkZXItdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMjBweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgIH0KCiAgICAgIC5oZWFkZXItc3VidGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICAgIG1hcmdpbi10b3A6IDRweDsKICAgICAgfQoKICAgICAgLnNlY3Rpb24gewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzA5MDkwYiIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U0ZTRlNyIsIiMyNzI3MmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIHBhZGRpbmc6IDIwcHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgfQoKICAgICAgLnNlY3Rpb24tdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTVweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgIH0KCiAgICAgIC5zZWN0aW9uLXRpdGxlIHN2ZyB7CiAgICAgICAgd2lkdGg6IDE4cHg7CiAgICAgICAgaGVpZ2h0OiAxOHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgIH0KCiAgICAgIC5mb3JtLXJvdyB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7CiAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgIH0KCiAgICAgIC5mb3JtLXJvdy5zaW5nbGUgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOwogICAgICB9CgogICAgICAuZm9ybS1ncm91cCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogNnB4OwogICAgICB9CgogICAgICAuZm9ybS1sYWJlbCB7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLmZvcm0tbGFiZWwgLnJlcXVpcmVkIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNlZjQ0NDQiLCIjZjg3MTcxIil9OwogICAgICB9CgogICAgICAuZm9ybS1oaW50IHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQoKICAgICAgLmZvcm0taW5wdXQsCiAgICAgIC5mb3JtLXNlbGVjdCB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgcGFkZGluZzogMTBweCAxMnB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzE4MTgxYiIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U0ZTRlNyIsIiMyNzI3MmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDIwMG1zIGVhc2U7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLmZvcm0taW5wdXQ6Zm9jdXMsCiAgICAgIC5mb3JtLXNlbGVjdDpmb2N1cyB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiIzNiODJmNiIsIiM2MGE1ZmEiKX07CiAgICAgIH0KCiAgICAgIC5mb3JtLWlucHV0OjpwbGFjZWhvbGRlciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjYTFhMWFhIiwiIzUyNTI1YiIpfTsKICAgICAgfQoKICAgICAgLmZvcm0tc2VsZWN0IHsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KCiAgICAgIC5keW5hbWljLWxpc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDhweDsKICAgICAgfQoKICAgICAgLmR5bmFtaWMtcm93IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGdhcDogOHB4OwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICB9CgogICAgICAuZHluYW1pYy1yb3cgLmZvcm0taW5wdXQgewogICAgICAgIGZsZXg6IDE7CiAgICAgIH0KCiAgICAgIC5keW5hbWljLXJvdyAuZm9ybS1zZWxlY3QgewogICAgICAgIHdpZHRoOiA4MHB4OwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAucmVtb3ZlLWJ1dHRvbiB7CiAgICAgICAgcGFkZGluZzogMTBweDsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U0ZTRlNyIsIiMyNzI3MmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAyMDBtcyBlYXNlOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAucmVtb3ZlLWJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZWUyZTIiLCJyZ2JhKDIzOSwgNjgsIDY4LCAwLjIpIil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiNmZWNhY2EiLCJyZ2JhKDIzOSwgNjgsIDY4LCAwLjMpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2RjMjYyNiIsIiNlZjQ0NDQiKX07CiAgICAgIH0KCiAgICAgIC5hZGQtYnV0dG9uIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4OwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogMXB4IGRhc2hlZCAke2guYmRUaGVtZSgiI2U0ZTRlNyIsIiMyNzI3MmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMjAwbXMgZWFzZTsKICAgICAgICBtYXJnaW4tdG9wOiA4cHg7CiAgICAgIH0KCiAgICAgIC5hZGQtYnV0dG9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMxODE4MWIiKX07CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiI2ExYTFhYSIsIiM1MjUyNWIiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLmFkZC1idXR0b24gc3ZnIHsKICAgICAgICB3aWR0aDogMTRweDsKICAgICAgICBoZWlnaHQ6IDE0cHg7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtYWR2YW5jZWQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBwYWRkaW5nOiAxMnB4IDA7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzYwYTVmYSIpfTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtYWR2YW5jZWQgc3ZnIHsKICAgICAgICB3aWR0aDogMTZweDsKICAgICAgICBoZWlnaHQ6IDE2cHg7CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDIwMG1zIGVhc2U7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtYWR2YW5jZWQub3BlbiBzdmcgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7CiAgICAgIH0KCiAgICAgIC5jaGVja2JveC1yb3cgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDhweDsKICAgICAgfQoKICAgICAgLmNoZWNrYm94IHsKICAgICAgICB3aWR0aDogMThweDsKICAgICAgICBoZWlnaHQ6IDE4cHg7CiAgICAgICAgYWNjZW50LWNvbG9yOiAke2guYmRUaGVtZSgiIzNiODJmNiIsIiM2MGE1ZmEiKX07CiAgICAgIH0KCiAgICAgIC5wbGF0Zm9ybS10b2dnbGUtbGlzdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMTJweDsKICAgICAgfQoKICAgICAgLnBsYXRmb3JtLXRvZ2dsZS1pdGVtIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIHBhZGRpbmc6IDEycHggMTZweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMxODE4MWIiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMjAwbXMgZWFzZTsKICAgICAgfQoKICAgICAgLnBsYXRmb3JtLXRvZ2dsZS1pdGVtOmhhcyhpbnB1dDpjaGVja2VkKSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNlZmY2ZmYiLCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC4xKSIpfTsKICAgICAgfQoKICAgICAgLnBsYXRmb3JtLXRvZ2dsZS1pbmZvIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICB9CgogICAgICAucGxhdGZvcm0tdG9nZ2xlLWljb24gewogICAgICAgIHdpZHRoOiAzNnB4OwogICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMjcyNzJhIil9OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgfQoKICAgICAgLnBsYXRmb3JtLXRvZ2dsZS1pY29uIHN2ZyB7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgIH0KCiAgICAgIC5wbGF0Zm9ybS10b2dnbGUtbmFtZSB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLnBsYXRmb3JtLXRvZ2dsZS1kZXNjIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgICBtYXJnaW4tdG9wOiAycHg7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtc3dpdGNoIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2lkdGg6IDQ0cHg7CiAgICAgICAgaGVpZ2h0OiAyNHB4OwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAudG9nZ2xlLXN3aXRjaCBpbnB1dCB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB3aWR0aDogMDsKICAgICAgICBoZWlnaHQ6IDA7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtc2xpZGVyIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Q0ZDRkOCIsIiMzZjNmNDYiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDIwMG1zIGVhc2U7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtc2xpZGVyOjpiZWZvcmUgewogICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBoZWlnaHQ6IDE4cHg7CiAgICAgICAgd2lkdGg6IDE4cHg7CiAgICAgICAgbGVmdDogM3B4OwogICAgICAgIGJvdHRvbTogM3B4OwogICAgICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjAwbXMgZWFzZTsKICAgICAgfQoKICAgICAgLnRvZ2dsZS1zd2l0Y2ggaW5wdXQ6Y2hlY2tlZCArIC50b2dnbGUtc2xpZGVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiIzNiODJmNiIsIiM2MGE1ZmEiKX07CiAgICAgIH0KCiAgICAgIC50b2dnbGUtc3dpdGNoIGlucHV0OmNoZWNrZWQgKyAudG9nZ2xlLXNsaWRlcjo6YmVmb3JlIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjBweCk7CiAgICAgIH0KCiAgICAgIC5hY3Rpb25zIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgIHBhZGRpbmctdG9wOiAxNnB4OwogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U0ZTRlNyIsIiMyNzI3MmEiKX07CiAgICAgICAgbWFyZ2luLXRvcDogOHB4OwogICAgICB9CgogICAgICAuYnV0dG9uIHsKICAgICAgICBwYWRkaW5nOiAxMHB4IDIwcHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMjAwbXMgZWFzZTsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICB9CgogICAgICAuYnV0dG9uLnNlY29uZGFyeSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDkwOTBiIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTRlNGU3IiwiIzI3MjcyYSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAuYnV0dG9uLnNlY29uZGFyeTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMTgxODFiIil9OwogICAgICB9CgogICAgICAuYnV0dG9uLnByaW1hcnkgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZmFmYWZhIiwiIzE4MTgxYiIpfTsKICAgICAgfQoKICAgICAgLmJ1dHRvbi5wcmltYXJ5OmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHsKICAgICAgICBvcGFjaXR5OiAwLjk7CiAgICAgIH0KCiAgICAgIC5idXR0b24ucHJpbWFyeTpkaXNhYmxlZCB7CiAgICAgICAgb3BhY2l0eTogMC42OwogICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAgIH0KCiAgICAgIC5zcGlubmVyIHsKICAgICAgICB3aWR0aDogMTZweDsKICAgICAgICBoZWlnaHQ6IDE2cHg7CiAgICAgICAgYm9yZGVyOiAycHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogY3VycmVudENvbG9yOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICBhbmltYXRpb246IHNwaW4gMC44cyBsaW5lYXIgaW5maW5pdGU7CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMgc3BpbiB7CiAgICAgICAgdG8gewogICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgICAgICB9CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPgogICAgICAgIDxkaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXItdGl0bGUiPkRlcGxveSBOZXcgU2VydmljZTwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyLXN1YnRpdGxlIj5Db25maWd1cmUgYW5kIGRlcGxveSBhIG5ldyBEb2NrZXIgY29udGFpbmVyPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPCEtLSBCYXNpYyBJbmZvIFNlY3Rpb24gLS0+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPgogICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgICAgICAgICA8cmVjdCB4PSIzIiB5PSIzIiB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHJ4PSIyIiByeT0iMiI+PC9yZWN0PgogICAgICAgICAgICA8bGluZSB4MT0iOSIgeTE9IjkiIHgyPSIxNSIgeTI9IjkiPjwvbGluZT4KICAgICAgICAgICAgPGxpbmUgeDE9IjkiIHkxPSIxNSIgeDI9IjE1IiB5Mj0iMTUiPjwvbGluZT4KICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgQmFzaWMgSW5mb3JtYXRpb24KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLXJvdyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWxhYmVsIj5TZXJ2aWNlIE5hbWUgPHNwYW4gY2xhc3M9InJlcXVpcmVkIj4qPC9zcGFuPjwvbGFiZWw+CiAgICAgICAgICAgIDxpbnB1dAogICAgICAgICAgICAgIHR5cGU9InRleHQiCiAgICAgICAgICAgICAgY2xhc3M9ImZvcm0taW5wdXQiCiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9Im15LXNlcnZpY2UiCiAgICAgICAgICAgICAgLnZhbHVlPSR7dGhpcy5zZXJ2aWNlTmFtZX0KICAgICAgICAgICAgICBAaW5wdXQ9JHtvZT0+dGhpcy5zZXJ2aWNlTmFtZT1vZS50YXJnZXQudmFsdWV9CiAgICAgICAgICAgID4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1oaW50Ij5VbmlxdWUgbmFtZSBmb3IgdGhlIHNlcnZpY2UgKGFscGhhbnVtZXJpYyBhbmQgaHlwaGVucyk8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybS1sYWJlbCI+UmVnaXN0cnk8L2xhYmVsPgogICAgICAgICAgICA8c2VsZWN0CiAgICAgICAgICAgICAgY2xhc3M9ImZvcm0tc2VsZWN0IgogICAgICAgICAgICAgIC52YWx1ZT0ke3RoaXMuc2VsZWN0ZWRSZWdpc3RyeX0KICAgICAgICAgICAgICBAY2hhbmdlPSR7b2U9PnRoaXMuc2VsZWN0ZWRSZWdpc3RyeT1vZS50YXJnZXQudmFsdWV9CiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIiPkN1c3RvbSBJbWFnZSBVUkw8L29wdGlvbj4KICAgICAgICAgICAgICAke3RoaXMucmVnaXN0cmllcy5tYXAob2U9PndgCiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSR7b2UuaWR9PiR7b2UubmFtZX08L29wdGlvbj4KICAgICAgICAgICAgICBgKX0KICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLXJvdyBzaW5nbGUiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybS1sYWJlbCI+SW1hZ2UgPHNwYW4gY2xhc3M9InJlcXVpcmVkIj4qPC9zcGFuPjwvbGFiZWw+CiAgICAgICAgICAgIDxpbnB1dAogICAgICAgICAgICAgIHR5cGU9InRleHQiCiAgICAgICAgICAgICAgY2xhc3M9ImZvcm0taW5wdXQiCiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9Im5naW54OmxhdGVzdCBvciByZWdpc3RyeS5leGFtcGxlLmNvbS9pbWFnZTp0YWciCiAgICAgICAgICAgICAgLnZhbHVlPSR7dGhpcy5pbWFnZVVybH0KICAgICAgICAgICAgICBAaW5wdXQ9JHtvZT0+dGhpcy5pbWFnZVVybD1vZS50YXJnZXQudmFsdWV9CiAgICAgICAgICAgID4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1oaW50Ij5Eb2NrZXIgaW1hZ2UgdG8gZGVwbG95IChpbmNsdWRlIHRhZyk8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDwhLS0gUG9ydCBDb25maWd1cmF0aW9uIC0tPgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj4KICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMTAiPjwvY2lyY2xlPgogICAgICAgICAgICA8bGluZSB4MT0iMiIgeTE9IjEyIiB4Mj0iMjIiIHkyPSIxMiI+PC9saW5lPgogICAgICAgICAgICA8cGF0aCBkPSJNMTIgMmExNS4zIDE1LjMgMCAwIDEgNCAxMCAxNS4zIDE1LjMgMCAwIDEtNCAxMCAxNS4zIDE1LjMgMCAwIDEtNC0xMCAxNS4zIDE1LjMgMCAwIDEgNC0xMHoiPjwvcGF0aD4KICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgUG9ydCBDb25maWd1cmF0aW9uCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZHluYW1pYy1saXN0Ij4KICAgICAgICAgICR7dGhpcy5wb3J0cy5tYXAoKG9lLGFlKT0+d2AKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHluYW1pYy1yb3ciPgogICAgICAgICAgICAgIDxpbnB1dAogICAgICAgICAgICAgICAgdHlwZT0idGV4dCIKICAgICAgICAgICAgICAgIGNsYXNzPSJmb3JtLWlucHV0IgogICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9Ikhvc3QgUG9ydCIKICAgICAgICAgICAgICAgIC52YWx1ZT0ke29lLmhvc3RQb3J0fQogICAgICAgICAgICAgICAgQGlucHV0PSR7VGU9PnRoaXMudXBkYXRlUG9ydChhZSwiaG9zdFBvcnQiLFRlLnRhcmdldC52YWx1ZSl9CiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxpbnB1dAogICAgICAgICAgICAgICAgdHlwZT0idGV4dCIKICAgICAgICAgICAgICAgIGNsYXNzPSJmb3JtLWlucHV0IgogICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9IkNvbnRhaW5lciBQb3J0IgogICAgICAgICAgICAgICAgLnZhbHVlPSR7b2UuY29udGFpbmVyUG9ydH0KICAgICAgICAgICAgICAgIEBpbnB1dD0ke1RlPT50aGlzLnVwZGF0ZVBvcnQoYWUsImNvbnRhaW5lclBvcnQiLFRlLnRhcmdldC52YWx1ZSl9CiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxzZWxlY3QKICAgICAgICAgICAgICAgIGNsYXNzPSJmb3JtLXNlbGVjdCIKICAgICAgICAgICAgICAgIC52YWx1ZT0ke29lLnByb3RvY29sfQogICAgICAgICAgICAgICAgQGNoYW5nZT0ke1RlPT50aGlzLnVwZGF0ZVBvcnQoYWUsInByb3RvY29sIixUZS50YXJnZXQudmFsdWUpfQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InRjcCI+VENQPC9vcHRpb24+CiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJ1ZHAiPlVEUDwvb3B0aW9uPgogICAgICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgICAgICAgICR7dGhpcy5wb3J0cy5sZW5ndGg+MT93YAogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icmVtb3ZlLWJ1dHRvbiIgQGNsaWNrPSR7KCk9PnRoaXMucmVtb3ZlUG9ydChhZSl9PgogICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgICAgICAgICA8bGluZSB4MT0iMTgiIHkxPSI2IiB4Mj0iNiIgeTI9IjE4Ij48L2xpbmU+CiAgICAgICAgICAgICAgICAgICAgPGxpbmUgeDE9IjYiIHkxPSI2IiB4Mj0iMTgiIHkyPSIxOCI+PC9saW5lPgogICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYCl9CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWRkLWJ1dHRvbiIgQGNsaWNrPSR7KCk9PnRoaXMuYWRkUG9ydCgpfT4KICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgPGxpbmUgeDE9IjEyIiB5MT0iNSIgeDI9IjEyIiB5Mj0iMTkiPjwvbGluZT4KICAgICAgICAgICAgPGxpbmUgeDE9IjUiIHkxPSIxMiIgeDI9IjE5IiB5Mj0iMTIiPjwvbGluZT4KICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgQWRkIFBvcnQgTWFwcGluZwogICAgICAgIDwvYnV0dG9uPgogICAgICA8L2Rpdj4KCiAgICAgIDwhLS0gRW52aXJvbm1lbnQgVmFyaWFibGVzIC0tPgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj4KICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgPHBvbHlsaW5lIHBvaW50cz0iNCAxNyAxMCAxMSA0IDUiPjwvcG9seWxpbmU+CiAgICAgICAgICAgIDxsaW5lIHgxPSIxMiIgeTE9IjE5IiB4Mj0iMjAiIHkyPSIxOSI+PC9saW5lPgogICAgICAgICAgPC9zdmc+CiAgICAgICAgICBFbnZpcm9ubWVudCBWYXJpYWJsZXMKICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJkeW5hbWljLWxpc3QiPgogICAgICAgICAgJHt0aGlzLmVudlZhcnMubWFwKChvZSxhZSk9PndgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImR5bmFtaWMtcm93Ij4KICAgICAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgICAgIHR5cGU9InRleHQiCiAgICAgICAgICAgICAgICBjbGFzcz0iZm9ybS1pbnB1dCIKICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSJLRVkiCiAgICAgICAgICAgICAgICAudmFsdWU9JHtvZS5rZXl9CiAgICAgICAgICAgICAgICBAaW5wdXQ9JHtUZT0+dGhpcy51cGRhdGVFbnZWYXIoYWUsImtleSIsVGUudGFyZ2V0LnZhbHVlKX0KICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgPGlucHV0CiAgICAgICAgICAgICAgICB0eXBlPSJ0ZXh0IgogICAgICAgICAgICAgICAgY2xhc3M9ImZvcm0taW5wdXQiCiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj0idmFsdWUiCiAgICAgICAgICAgICAgICAudmFsdWU9JHtvZS52YWx1ZX0KICAgICAgICAgICAgICAgIEBpbnB1dD0ke1RlPT50aGlzLnVwZGF0ZUVudlZhcihhZSwidmFsdWUiLFRlLnRhcmdldC52YWx1ZSl9CiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICR7dGhpcy5lbnZWYXJzLmxlbmd0aD4xP3dgCiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJyZW1vdmUtYnV0dG9uIiBAY2xpY2s9JHsoKT0+dGhpcy5yZW1vdmVFbnZWYXIoYWUpfT4KICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+CiAgICAgICAgICAgICAgICAgICAgPGxpbmUgeDE9IjE4IiB5MT0iNiIgeDI9IjYiIHkyPSIxOCI+PC9saW5lPgogICAgICAgICAgICAgICAgICAgIDxsaW5lIHgxPSI2IiB5MT0iNiIgeDI9IjE4IiB5Mj0iMTgiPjwvbGluZT4KICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICBgOiIifQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIGApfQogICAgICAgIDwvZGl2PgogICAgICAgIDxidXR0b24gY2xhc3M9ImFkZC1idXR0b24iIEBjbGljaz0keygpPT50aGlzLmFkZEVudlZhcigpfT4KICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgPGxpbmUgeDE9IjEyIiB5MT0iNSIgeDI9IjEyIiB5Mj0iMTkiPjwvbGluZT4KICAgICAgICAgICAgPGxpbmUgeDE9IjUiIHkxPSIxMiIgeDI9IjE5IiB5Mj0iMTIiPjwvbGluZT4KICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgQWRkIEVudmlyb25tZW50IFZhcmlhYmxlCiAgICAgICAgPC9idXR0b24+CiAgICAgIDwvZGl2PgoKICAgICAgPCEtLSBQbGF0Zm9ybSBTZXJ2aWNlcyAtLT4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+CiAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+CiAgICAgICAgICAgIDxyZWN0IHg9IjIiIHk9IjIiIHdpZHRoPSIyMCIgaGVpZ2h0PSI4IiByeD0iMiIgcnk9IjIiPjwvcmVjdD4KICAgICAgICAgICAgPHJlY3QgeD0iMiIgeT0iMTQiIHdpZHRoPSIyMCIgaGVpZ2h0PSI4IiByeD0iMiIgcnk9IjIiPjwvcmVjdD4KICAgICAgICAgICAgPGxpbmUgeDE9IjYiIHkxPSI2IiB4Mj0iNi4wMSIgeTI9IjYiPjwvbGluZT4KICAgICAgICAgICAgPGxpbmUgeDE9IjYiIHkxPSIxOCIgeDI9IjYuMDEiIHkyPSIxOCI+PC9saW5lPgogICAgICAgICAgPC9zdmc+CiAgICAgICAgICBQbGF0Zm9ybSBTZXJ2aWNlcwogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImZvcm0taGludCIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDEycHg7Ij4KICAgICAgICAgIEVuYWJsZSBtYW5hZ2VkIGluZnJhc3RydWN0dXJlIHNlcnZpY2VzIGZvciB0aGlzIGRlcGxveW1lbnQuIFJlc291cmNlcyBhcmUgYXV0b21hdGljYWxseSBwcm92aXNpb25lZCBhbmQgY29ubmVjdGlvbiBkZXRhaWxzIGluamVjdGVkIGFzIGVudmlyb25tZW50IHZhcmlhYmxlcy4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJwbGF0Zm9ybS10b2dnbGUtbGlzdCI+CiAgICAgICAgICA8bGFiZWwgY2xhc3M9InBsYXRmb3JtLXRvZ2dsZS1pdGVtIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhdGZvcm0tdG9nZ2xlLWluZm8iPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYXRmb3JtLXRvZ2dsZS1pY29uIj4KICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMSAxNy45M2MtMy45NS0uNDktNy0zLjg1LTctNy45MyAwLS42Mi4wOC0xLjIxLjIxLTEuNzlMOSAxNXYxYzAgMS4xLjkgMiAyIDJ2MS45M3ptNi45LTIuNTRjLS4yNi0uODEtMS0xLjM5LTEuOS0xLjM5aC0xdi0zYzAtLjU1LS40NS0xLTEtMUg4di0yaDJjLjU1IDAgMS0uNDUgMS0xVjdoMmMxLjEgMCAyLS45IDItMnYtLjQxYzIuOTMgMS4xOSA1IDQuMDYgNSA3LjQxIDAgMi4wOC0uOCAzLjk3LTIuMSA1LjM5eiIvPjwvc3ZnPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwbGF0Zm9ybS10b2dnbGUtbmFtZSI+TW9uZ29EQjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhdGZvcm0tdG9nZ2xlLWRlc2MiPkRvY3VtZW50IGRhdGFiYXNlIHdpdGggYXV0by1wcm92aXNpb25lZCBjcmVkZW50aWFsczwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9nZ2xlLXN3aXRjaCI+CiAgICAgICAgICAgICAgPGlucHV0CiAgICAgICAgICAgICAgICB0eXBlPSJjaGVja2JveCIKICAgICAgICAgICAgICAgID9jaGVja2VkPSR7dGhpcy5lbmFibGVNb25nb0RCfQogICAgICAgICAgICAgICAgQGNoYW5nZT0ke29lPT50aGlzLmVuYWJsZU1vbmdvREI9b2UudGFyZ2V0LmNoZWNrZWR9CiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0b2dnbGUtc2xpZGVyIj48L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgIDxsYWJlbCBjbGFzcz0icGxhdGZvcm0tdG9nZ2xlLWl0ZW0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwbGF0Zm9ybS10b2dnbGUtaW5mbyI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhdGZvcm0tdG9nZ2xlLWljb24iPgogICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9ImN1cnJlbnRDb2xvciI+PHBhdGggZD0iTTIxIDE2LjVjMCAuMzgtLjIxLjcxLS41My44OGwtNy45IDQuNDRjLS4xNi4xMi0uMzYuMTgtLjU3LjE4LS4yMSAwLS40MS0uMDYtLjU3LS4xOGwtNy45LTQuNDRBLjk5MS45OTEgMCAwIDEgMyAxNi41di05YzAtLjM4LjIxLS43MS41My0uODhsNy45LTQuNDRjLjE2LS4xMi4zNi0uMTguNTctLjE4LjIxIDAgLjQxLjA2LjU3LjE4bDcuOSA0LjQ0Yy4zMi4xNy41My41LjUzLjg4djl6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYXRmb3JtLXRvZ2dsZS1uYW1lIj5TMyBTdG9yYWdlIChNaW5JTyk8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYXRmb3JtLXRvZ2dsZS1kZXNjIj5PYmplY3Qgc3RvcmFnZSBidWNrZXQgd2l0aCBhdXRvLXByb3Zpc2lvbmVkIGFjY2VzcyBrZXlzPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2dnbGUtc3dpdGNoIj4KICAgICAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgICAgIHR5cGU9ImNoZWNrYm94IgogICAgICAgICAgICAgICAgP2NoZWNrZWQ9JHt0aGlzLmVuYWJsZVMzfQogICAgICAgICAgICAgICAgQGNoYW5nZT0ke29lPT50aGlzLmVuYWJsZVMzPW9lLnRhcmdldC5jaGVja2VkfQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idG9nZ2xlLXNsaWRlciI+PC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICA8bGFiZWwgY2xhc3M9InBsYXRmb3JtLXRvZ2dsZS1pdGVtIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhdGZvcm0tdG9nZ2xlLWluZm8iPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYXRmb3JtLXRvZ2dsZS1pY29uIj4KICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxyZWN0IHg9IjIiIHk9IjIiIHdpZHRoPSI2IiBoZWlnaHQ9IjIwIi8+PHJlY3QgeD0iOSIgeT0iNyIgd2lkdGg9IjYiIGhlaWdodD0iMTUiLz48cmVjdCB4PSIxNiIgeT0iMTIiIHdpZHRoPSI2IiBoZWlnaHQ9IjEwIi8+PC9zdmc+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYXRmb3JtLXRvZ2dsZS1uYW1lIj5DbGlja0hvdXNlPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwbGF0Zm9ybS10b2dnbGUtZGVzYyI+QW5hbHl0aWNzIGRhdGFiYXNlIHdpdGggYXV0by1wcm92aXNpb25lZCBjcmVkZW50aWFsczwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9nZ2xlLXN3aXRjaCI+CiAgICAgICAgICAgICAgPGlucHV0CiAgICAgICAgICAgICAgICB0eXBlPSJjaGVja2JveCIKICAgICAgICAgICAgICAgID9jaGVja2VkPSR7dGhpcy5lbmFibGVDbGlja0hvdXNlfQogICAgICAgICAgICAgICAgQGNoYW5nZT0ke29lPT50aGlzLmVuYWJsZUNsaWNrSG91c2U9b2UudGFyZ2V0LmNoZWNrZWR9CiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0b2dnbGUtc2xpZGVyIj48L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9sYWJlbD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8IS0tIEFkdmFuY2VkIE9wdGlvbnMgVG9nZ2xlIC0tPgogICAgICA8YnV0dG9uCiAgICAgICAgY2xhc3M9InRvZ2dsZS1hZHZhbmNlZCAke3RoaXMuc2hvd0FkdmFuY2VkPyJvcGVuIjoiIn0iCiAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMuc2hvd0FkdmFuY2VkPSF0aGlzLnNob3dBZHZhbmNlZH0KICAgICAgPgogICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9IjYgOSAxMiAxNSAxOCA5Ij48L3BvbHlsaW5lPgogICAgICAgIDwvc3ZnPgogICAgICAgIEFkdmFuY2VkIE9wdGlvbnMKICAgICAgPC9idXR0b24+CgogICAgICAke3RoaXMuc2hvd0FkdmFuY2VkP3dgCiAgICAgICAgPCEtLSBWb2x1bWVzIC0tPgogICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+CiAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgICA8cGF0aCBkPSJNMjIgMTlhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDVsMiAzaDlhMiAyIDAgMCAxIDIgMnoiPjwvcGF0aD4KICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgIFZvbHVtZSBNb3VudHMKICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZHluYW1pYy1saXN0Ij4KICAgICAgICAgICAgJHt0aGlzLnZvbHVtZXMubGVuZ3RoPT09MD93YAogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0taGludCI+Tm8gdm9sdW1lcyBjb25maWd1cmVkPC9kaXY+CiAgICAgICAgICAgIGA6dGhpcy52b2x1bWVzLm1hcCgob2UsYWUpPT53YAogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImR5bmFtaWMtcm93Ij4KICAgICAgICAgICAgICAgIDxpbnB1dAogICAgICAgICAgICAgICAgICB0eXBlPSJ0ZXh0IgogICAgICAgICAgICAgICAgICBjbGFzcz0iZm9ybS1pbnB1dCIKICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9Ii9ob3N0L3BhdGgiCiAgICAgICAgICAgICAgICAgIC52YWx1ZT0ke29lLmhvc3RQYXRofQogICAgICAgICAgICAgICAgICBAaW5wdXQ9JHtUZT0+dGhpcy51cGRhdGVWb2x1bWUoYWUsImhvc3RQYXRoIixUZS50YXJnZXQudmFsdWUpfQogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPGlucHV0CiAgICAgICAgICAgICAgICAgIHR5cGU9InRleHQiCiAgICAgICAgICAgICAgICAgIGNsYXNzPSJmb3JtLWlucHV0IgogICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj0iL2NvbnRhaW5lci9wYXRoIgogICAgICAgICAgICAgICAgICAudmFsdWU9JHtvZS5jb250YWluZXJQYXRofQogICAgICAgICAgICAgICAgICBAaW5wdXQ9JHtUZT0+dGhpcy51cGRhdGVWb2x1bWUoYWUsImNvbnRhaW5lclBhdGgiLFRlLnRhcmdldC52YWx1ZSl9CiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjaGVja2JveC1yb3ciPgogICAgICAgICAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgICAgICAgICB0eXBlPSJjaGVja2JveCIKICAgICAgICAgICAgICAgICAgICBjbGFzcz0iY2hlY2tib3giCiAgICAgICAgICAgICAgICAgICAgP2NoZWNrZWQ9JHtvZS5yZWFkT25seX0KICAgICAgICAgICAgICAgICAgICBAY2hhbmdlPSR7VGU9PnRoaXMudXBkYXRlVm9sdW1lKGFlLCJyZWFkT25seSIsVGUudGFyZ2V0LmNoZWNrZWQpfQogICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmb3JtLWhpbnQiPlJPPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJyZW1vdmUtYnV0dG9uIiBAY2xpY2s9JHsoKT0+dGhpcy5yZW1vdmVWb2x1bWUoYWUpfT4KICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+CiAgICAgICAgICAgICAgICAgICAgPGxpbmUgeDE9IjE4IiB5MT0iNiIgeDI9IjYiIHkyPSIxOCI+PC9saW5lPgogICAgICAgICAgICAgICAgICAgIDxsaW5lIHgxPSI2IiB5MT0iNiIgeDI9IjE4IiB5Mj0iMTgiPjwvbGluZT4KICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYCl9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9ImFkZC1idXR0b24iIEBjbGljaz0keygpPT50aGlzLmFkZFZvbHVtZSgpfT4KICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgICAgICAgICAgIDxsaW5lIHgxPSIxMiIgeTE9IjUiIHgyPSIxMiIgeTI9IjE5Ij48L2xpbmU+CiAgICAgICAgICAgICAgPGxpbmUgeDE9IjUiIHkxPSIxMiIgeDI9IjE5IiB5Mj0iMTIiPjwvbGluZT4KICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgIEFkZCBWb2x1bWUgTW91bnQKICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8IS0tIFJlc291cmNlIExpbWl0cyAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPgogICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+CiAgICAgICAgICAgICAgPHJlY3QgeD0iMSIgeT0iNCIgd2lkdGg9IjIyIiBoZWlnaHQ9IjE2IiByeD0iMiIgcnk9IjIiPjwvcmVjdD4KICAgICAgICAgICAgICA8bGluZSB4MT0iMSIgeTE9IjEwIiB4Mj0iMjMiIHkyPSIxMCI+PC9saW5lPgogICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgUmVzb3VyY2UgTGltaXRzCiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tcm93Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWxhYmVsIj5DUFUgTGltaXQ8L2xhYmVsPgogICAgICAgICAgICAgIDxpbnB1dAogICAgICAgICAgICAgICAgdHlwZT0idGV4dCIKICAgICAgICAgICAgICAgIGNsYXNzPSJmb3JtLWlucHV0IgogICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9ImUuZy4sIDEuMCBvciAwLjUiCiAgICAgICAgICAgICAgICAudmFsdWU9JHt0aGlzLmNwdUxpbWl0fQogICAgICAgICAgICAgICAgQGlucHV0PSR7b2U9PnRoaXMuY3B1TGltaXQ9b2UudGFyZ2V0LnZhbHVlfQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWhpbnQiPk51bWJlciBvZiBDUFVzIChsZWF2ZSBlbXB0eSBmb3IgdW5saW1pdGVkKTwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWxhYmVsIj5NZW1vcnkgTGltaXQ8L2xhYmVsPgogICAgICAgICAgICAgIDxpbnB1dAogICAgICAgICAgICAgICAgdHlwZT0idGV4dCIKICAgICAgICAgICAgICAgIGNsYXNzPSJmb3JtLWlucHV0IgogICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9ImUuZy4sIDUxMm0gb3IgMWciCiAgICAgICAgICAgICAgICAudmFsdWU9JHt0aGlzLm1lbW9yeUxpbWl0fQogICAgICAgICAgICAgICAgQGlucHV0PSR7b2U9PnRoaXMubWVtb3J5TGltaXQ9b2UudGFyZ2V0LnZhbHVlfQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWhpbnQiPk1lbW9yeSBsaW1pdCAobGVhdmUgZW1wdHkgZm9yIHVubGltaXRlZCk8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPCEtLSBSZXN0YXJ0IFBvbGljeSAmIE5ldHdvcmsgLS0+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj4KICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgICAgICAgICAgIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjMiPjwvY2lyY2xlPgogICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS40IDE1YTEuNjUgMS42NSAwIDAgMCAuMzMgMS44MmwuMDYuMDZhMiAyIDAgMCAxIDAgMi44MyAyIDIgMCAwIDEtMi44MyAwbC0uMDYtLjA2YTEuNjUgMS42NSAwIDAgMC0xLjgyLS4zMyAxLjY1IDEuNjUgMCAwIDAtMSAxLjUxVjIxYTIgMiAwIDAgMS0yIDIgMiAyIDAgMCAxLTItMnYtLjA5QTEuNjUgMS42NSAwIDAgMCA5IDE5LjRhMS42NSAxLjY1IDAgMCAwLTEuODIuMzNsLS4wNi4wNmEyIDIgMCAwIDEtMi44MyAwIDIgMiAwIDAgMSAwLTIuODNsLjA2LS4wNmExLjY1IDEuNjUgMCAwIDAgLjMzLTEuODIgMS42NSAxLjY1IDAgMCAwLTEuNTEtMUgzYTIgMiAwIDAgMS0yLTIgMiAyIDAgMCAxIDItMmguMDlBMS42NSAxLjY1IDAgMCAwIDQuNiA5YTEuNjUgMS42NSAwIDAgMC0uMzMtMS44MmwtLjA2LS4wNmEyIDIgMCAwIDEgMC0yLjgzIDIgMiAwIDAgMSAyLjgzIDBsLjA2LjA2YTEuNjUgMS42NSAwIDAgMCAxLjgyLjMzSDlhMS42NSAxLjY1IDAgMCAwIDEtMS41MVYzYTIgMiAwIDAgMSAyLTIgMiAyIDAgMCAxIDIgMnYuMDlhMS42NSAxLjY1IDAgMCAwIDEgMS41MSAxLjY1IDEuNjUgMCAwIDAgMS44Mi0uMzNsLjA2LS4wNmEyIDIgMCAwIDEgMi44MyAwIDIgMiAwIDAgMSAwIDIuODNsLS4wNi4wNmExLjY1IDEuNjUgMCAwIDAtLjMzIDEuODJWOWExLjY1IDEuNjUgMCAwIDAgMS41MSAxSDIxYTIgMiAwIDAgMSAyIDIgMiAyIDAgMCAxLTIgMmgtLjA5YTEuNjUgMS42NSAwIDAgMC0xLjUxIDF6Ij48L3BhdGg+CiAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICBDb250YWluZXIgU2V0dGluZ3MKICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1yb3ciPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9ImZvcm0tbGFiZWwiPlJlc3RhcnQgUG9saWN5PC9sYWJlbD4KICAgICAgICAgICAgICA8c2VsZWN0CiAgICAgICAgICAgICAgICBjbGFzcz0iZm9ybS1zZWxlY3QiCiAgICAgICAgICAgICAgICAudmFsdWU9JHt0aGlzLnJlc3RhcnRQb2xpY3l9CiAgICAgICAgICAgICAgICBAY2hhbmdlPSR7b2U9PnRoaXMucmVzdGFydFBvbGljeT1vZS50YXJnZXQudmFsdWV9CiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iYWx3YXlzIj5BbHdheXM8L29wdGlvbj4KICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Im9uLWZhaWx1cmUiPk9uIEZhaWx1cmU8L29wdGlvbj4KICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Im5ldmVyIj5OZXZlcjwvb3B0aW9uPgogICAgICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWxhYmVsIj5OZXR3b3JrIE1vZGU8L2xhYmVsPgogICAgICAgICAgICAgIDxzZWxlY3QKICAgICAgICAgICAgICAgIGNsYXNzPSJmb3JtLXNlbGVjdCIKICAgICAgICAgICAgICAgIC52YWx1ZT0ke3RoaXMubmV0d29ya01vZGV9CiAgICAgICAgICAgICAgICBAY2hhbmdlPSR7b2U9PnRoaXMubmV0d29ya01vZGU9b2UudGFyZ2V0LnZhbHVlfQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImJyaWRnZSI+QnJpZGdlPC9vcHRpb24+CiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJob3N0Ij5Ib3N0PC9vcHRpb24+CiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJub25lIj5Ob25lPC9vcHRpb24+CiAgICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIGA6IiJ9CgogICAgICA8ZGl2IGNsYXNzPSJhY3Rpb25zIj4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJidXR0b24gc2Vjb25kYXJ5IiBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVDYW5jZWwoKX0+Q2FuY2VsPC9idXR0b24+CiAgICAgICAgPGJ1dHRvbgogICAgICAgICAgY2xhc3M9ImJ1dHRvbiBwcmltYXJ5IgogICAgICAgICAgP2Rpc2FibGVkPSR7dGhpcy5sb2FkaW5nfHwhdGhpcy5pc1ZhbGlkKCl9CiAgICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVDcmVhdGUoKX0KICAgICAgICA+CiAgICAgICAgICAke3RoaXMubG9hZGluZz93YDxkaXYgY2xhc3M9InNwaW5uZXIiPjwvZGl2PmA6IiJ9CiAgICAgICAgICAke3RoaXMubG9hZGluZz8iRGVwbG95aW5nLi4uIjoiRGVwbG95IFNlcnZpY2UifQogICAgICAgIDwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIGB9aXNWYWxpZCgpe3JldHVybiB0aGlzLnNlcnZpY2VOYW1lLnRyaW0oKSE9PSIiJiZ0aGlzLmltYWdlVXJsLnRyaW0oKSE9PSIifWFkZFBvcnQoKXt0aGlzLnBvcnRzPVsuLi50aGlzLnBvcnRzLHtob3N0UG9ydDoiIixjb250YWluZXJQb3J0OiIiLHByb3RvY29sOiJ0Y3AifV19cmVtb3ZlUG9ydChvZSl7dGhpcy5wb3J0cz10aGlzLnBvcnRzLmZpbHRlcigoYWUsVGUpPT5UZSE9PW9lKX11cGRhdGVQb3J0KG9lLGFlLFRlKXtsZXQgUmU9Wy4uLnRoaXMucG9ydHNdO1JlW29lXVthZV09VGUsdGhpcy5wb3J0cz1SZX1hZGRFbnZWYXIoKXt0aGlzLmVudlZhcnM9Wy4uLnRoaXMuZW52VmFycyx7a2V5OiIiLHZhbHVlOiIifV19cmVtb3ZlRW52VmFyKG9lKXt0aGlzLmVudlZhcnM9dGhpcy5lbnZWYXJzLmZpbHRlcigoYWUsVGUpPT5UZSE9PW9lKX11cGRhdGVFbnZWYXIob2UsYWUsVGUpe2xldCBSZT1bLi4udGhpcy5lbnZWYXJzXTtSZVtvZV1bYWVdPVRlLHRoaXMuZW52VmFycz1SZX1hZGRWb2x1bWUoKXt0aGlzLnZvbHVtZXM9Wy4uLnRoaXMudm9sdW1lcyx7aG9zdFBhdGg6IiIsY29udGFpbmVyUGF0aDoiIixyZWFkT25seTohMX1dfXJlbW92ZVZvbHVtZShvZSl7dGhpcy52b2x1bWVzPXRoaXMudm9sdW1lcy5maWx0ZXIoKGFlLFRlKT0+VGUhPT1vZSl9dXBkYXRlVm9sdW1lKG9lLGFlLFRlKXtsZXQgUmU9Wy4uLnRoaXMudm9sdW1lc107UmVbb2VdW2FlXT1UZSx0aGlzLnZvbHVtZXM9UmV9aGFuZGxlQ2FuY2VsKCl7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY2FuY2VsIix7YnViYmxlczohMCxjb21wb3NlZDohMH0pKX1oYW5kbGVDcmVhdGUoKXtsZXQgb2U9e25hbWU6dGhpcy5zZXJ2aWNlTmFtZS50cmltKCksaW1hZ2U6dGhpcy5pbWFnZVVybC50cmltKCkscG9ydHM6dGhpcy5wb3J0cy5maWx0ZXIoYWU9PmFlLmhvc3RQb3J0JiZhZS5jb250YWluZXJQb3J0KSxlbnZWYXJzOnRoaXMuZW52VmFycy5maWx0ZXIoYWU9PmFlLmtleSksdm9sdW1lczp0aGlzLnZvbHVtZXMuZmlsdGVyKGFlPT5hZS5ob3N0UGF0aCYmYWUuY29udGFpbmVyUGF0aCksY3B1TGltaXQ6dGhpcy5jcHVMaW1pdCxtZW1vcnlMaW1pdDp0aGlzLm1lbW9yeUxpbWl0LHJlc3RhcnRQb2xpY3k6dGhpcy5yZXN0YXJ0UG9saWN5LG5ldHdvcmtNb2RlOnRoaXMubmV0d29ya01vZGUsZW5hYmxlTW9uZ29EQjp0aGlzLmVuYWJsZU1vbmdvREIsZW5hYmxlUzM6dGhpcy5lbmFibGVTMyxlbmFibGVDbGlja0hvdXNlOnRoaXMuZW5hYmxlQ2xpY2tIb3VzZX07dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY3JlYXRlLXNlcnZpY2UiLHtkZXRhaWw6b2UsYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1yZXNldCgpe3RoaXMuc2VydmljZU5hbWU9IiIsdGhpcy5pbWFnZVVybD0iIix0aGlzLnNlbGVjdGVkUmVnaXN0cnk9IiIsdGhpcy5wb3J0cz1be2hvc3RQb3J0OiIiLGNvbnRhaW5lclBvcnQ6IiIscHJvdG9jb2w6InRjcCJ9XSx0aGlzLmVudlZhcnM9W3trZXk6IiIsdmFsdWU6IiJ9XSx0aGlzLnZvbHVtZXM9W10sdGhpcy5jcHVMaW1pdD0iIix0aGlzLm1lbW9yeUxpbWl0PSIiLHRoaXMucmVzdGFydFBvbGljeT0iYWx3YXlzIix0aGlzLm5ldHdvcmtNb2RlPSJicmlkZ2UiLHRoaXMuc2hvd0FkdmFuY2VkPSExLHRoaXMuZW5hYmxlTW9uZ29EQj0hMSx0aGlzLmVuYWJsZVMzPSExLHRoaXMuZW5hYmxlQ2xpY2tIb3VzZT0hMX1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksYnModGhpcyxBKX1zdGF0aWN7YnMoYSx0KX19O3JldHVybiBzZT1hfSkoKX0pO3ZhciB6MWUsTmcsWFFhLHI5YT1nKCgpPT57cGUoKTt6MWU9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LE5nPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxYUWE9KCgpPT57bGV0IHM9W25lKCJzei1wbGF0Zm9ybS1zZXJ2aWNlLWRldGFpbC12aWV3IildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W107dmFyIHg9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIlN6UGxhdGZvcm1TZXJ2aWNlRGV0YWlsVmlldyIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBtPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6T2JqZWN0fSldLHA9W0woe3R5cGU6QXJyYXl9KV0sYz1bTCh7dHlwZTpCb29sZWFufSldLHoxZSh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlcnZpY2UiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+InNlcnZpY2UiaW4gZiwiaGFzIiksZ2V0OmkoZj0+Zi5zZXJ2aWNlLCJnZXQiKSxzZXQ6aSgoZix5KT0+e2Yuc2VydmljZT15fSwic2V0Iil9LG1ldGFkYXRhOm19LG8sbCksejFlKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibG9ncyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShmPT4ibG9ncyJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLmxvZ3MsImdldCIpLHNldDppKChmLHkpPT57Zi5sb2dzPXl9LCJzZXQiKX0sbWV0YWRhdGE6bX0sZCx1KSx6MWUodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJhY3Rpb25Mb2FkaW5nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGY9PiJhY3Rpb25Mb2FkaW5nImluIGYsImhhcyIpLGdldDppKGY9PmYuYWN0aW9uTG9hZGluZywiZ2V0Iiksc2V0OmkoKGYseSk9PntmLmFjdGlvbkxvYWRpbmc9eX0sInNldCIpfSxtZXRhZGF0YTptfSxiLHYpLHoxZShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTptfSxudWxsLHQpLHg9YT1lLnZhbHVlLG0mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6bX0pfXN0YXRpYyBkZW1vPWkoKCk9PndgCiAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nOiAyNHB4OyBtYXgtd2lkdGg6IDEwMDBweDsiPgogICAgICA8c3otcGxhdGZvcm0tc2VydmljZS1kZXRhaWwtdmlldwogICAgICAgIC5zZXJ2aWNlPSR7e2lkOiIxIixuYW1lOiJNb25nb0RCIix0eXBlOiJtb25nb2RiIixzdGF0dXM6InJ1bm5pbmciLHZlcnNpb246IjcuMC40Iixob3N0OiJsb2NhbGhvc3QiLHBvcnQ6MjcwMTcsY3JlZGVudGlhbHM6e3VzZXJuYW1lOiJhZG1pbiIscGFzc3dvcmQ6Ilx1MjAyMlx1MjAyMlx1MjAyMlx1MjAyMlx1MjAyMlx1MjAyMlx1MjAyMlx1MjAyMiJ9LGNvbmZpZzp7cmVwbGljYVNldDoicnMwIixhdXRoRW5hYmxlZDohMH0sbWV0cmljczp7Y3B1OjEyLG1lbW9yeTo0NSxzdG9yYWdlOjIzLGNvbm5lY3Rpb25zOjh9fX0KICAgICAgICAubG9ncz0ke1t7dGltZXN0YW1wOiIyMDI0LTAxLTIwIDE0OjMwOjIyIixsZXZlbDoiaW5mbyIsbWVzc2FnZToiQ29ubmVjdGlvbiBhY2NlcHRlZCBmcm9tIDEyNy4wLjAuMTo1NDMyMSJ9LHt0aW1lc3RhbXA6IjIwMjQtMDEtMjAgMTQ6MzA6MjAiLGxldmVsOiJpbmZvIixtZXNzYWdlOiJJbmRleCBidWlsZCBjb21wbGV0ZWQgb24gY29sbGVjdGlvbiB1c2VycyJ9LHt0aW1lc3RhbXA6IjIwMjQtMDEtMjAgMTQ6MzA6MTUiLGxldmVsOiJ3YXJuIixtZXNzYWdlOiJTbG93IHF1ZXJ5IGRldGVjdGVkOiAxLjJzIG9uIGNvbGxlY3Rpb24gb3JkZXJzIn0se3RpbWVzdGFtcDoiMjAyNC0wMS0yMCAxNDozMDoxMCIsbGV2ZWw6ImluZm8iLG1lc3NhZ2U6IkNoZWNrcG9pbnQgY29tcGxldGUifV19CiAgICAgID48L3N6LXBsYXRmb3JtLXNlcnZpY2UtZGV0YWlsLXZpZXc+CiAgICA8L2Rpdj4KICBgLCJkZW1vIik7c3RhdGljIGRlbW9Hcm91cHM9WyJQbGF0Zm9ybSJdOyNlPU5nKHRoaXMsbyxudWxsKTtnZXQgc2VydmljZSgpe3JldHVybiB0aGlzLiNlfXNldCBzZXJ2aWNlKG0pe3RoaXMuI2U9bX0jdD0oTmcodGhpcyxsKSxOZyh0aGlzLGQsW10pKTtnZXQgbG9ncygpe3JldHVybiB0aGlzLiN0fXNldCBsb2dzKG0pe3RoaXMuI3Q9bX0jYT0oTmcodGhpcyx1KSxOZyh0aGlzLGIsITEpKTtnZXQgYWN0aW9uTG9hZGluZygpe3JldHVybiB0aGlzLiNhfXNldCBhY3Rpb25Mb2FkaW5nKG0pe3RoaXMuI2E9bX1zdGF0aWMgc3R5bGVzPVtoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICAuaGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgICB9CgogICAgICAuaGVhZGVyLWluZm8gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDE2cHg7CiAgICAgIH0KCiAgICAgIC5zZXJ2aWNlLWljb24gewogICAgICAgIHdpZHRoOiA1NnB4OwogICAgICAgIGhlaWdodDogNTZweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMyNzI3MmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5zZXJ2aWNlLWljb24gc3ZnIHsKICAgICAgICB3aWR0aDogMjhweDsKICAgICAgICBoZWlnaHQ6IDI4cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLnNlcnZpY2UtZGV0YWlscyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogNHB4OwogICAgICB9CgogICAgICAuc2VydmljZS1uYW1lIHsKICAgICAgICBmb250LXNpemU6IDIycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAuc2VydmljZS1tZXRhIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICB9CgogICAgICAuc3RhdHVzLWJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4OwogICAgICAgIHBhZGRpbmc6IDRweCAxMHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OTlweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgfQoKICAgICAgLnN0YXR1cy1iYWRnZS5ydW5uaW5nIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2RjZmNlNyIsInJnYmEoMzQsIDE5NywgOTQsIDAuMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTZhMzRhIiwiIzIyYzU1ZSIpfTsKICAgICAgfQoKICAgICAgLnN0YXR1cy1iYWRnZS5zdG9wcGVkIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMyNzI3MmEiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQoKICAgICAgLnN0YXR1cy1iYWRnZS5lcnJvciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZWUyZTIiLCJyZ2JhKDIzOSwgNjgsIDY4LCAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2RjMjYyNiIsIiNlZjQ0NDQiKX07CiAgICAgIH0KCiAgICAgIC5zdGF0dXMtZG90IHsKICAgICAgICB3aWR0aDogOHB4OwogICAgICAgIGhlaWdodDogOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICBiYWNrZ3JvdW5kOiBjdXJyZW50Q29sb3I7CiAgICAgIH0KCiAgICAgIC5oZWFkZXItYWN0aW9ucyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBnYXA6IDhweDsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgcGFkZGluZzogOHB4IDE0cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDkwOTBiIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTRlNGU3IiwiIzI3MjcyYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDIwMG1zIGVhc2U7CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMxODE4MWIiKX07CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uOmRpc2FibGVkIHsKICAgICAgICBvcGFjaXR5OiAwLjY7CiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idXR0b24gc3ZnIHsKICAgICAgICB3aWR0aDogMTRweDsKICAgICAgICBoZWlnaHQ6IDE0cHg7CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uLmRhbmdlciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZGMyNjI2IiwiI2VmNDQ0NCIpfTsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjZmVlMmUyIiwicmdiYSgyMzksIDY4LCA2OCwgMC4zKSIpfTsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idXR0b24uZGFuZ2VyOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZlZTJlMiIsInJnYmEoMjM5LCA2OCwgNjgsIDAuMikiKX07CiAgICAgIH0KCiAgICAgIC5ncmlkIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjsKICAgICAgICBnYXA6IDE2cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgfQoKICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgICAgICAgLmdyaWQgewogICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CiAgICAgICAgfQogICAgICB9CgogICAgICBkZWVzLXRpbGUuZnVsbC13aWR0aCB7CiAgICAgICAgZ3JpZC1jb2x1bW46IDEgLyAtMTsKICAgICAgfQoKICAgICAgLnNlY3Rpb24taGVhZGVyIHsKICAgICAgICBoZWlnaHQ6IDM2cHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAuc2VjdGlvbi10aXRsZSB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOwogICAgICB9CgogICAgICAuc2VjdGlvbi10aXRsZSBzdmcgewogICAgICAgIHdpZHRoOiAxNHB4OwogICAgICAgIGhlaWdodDogMTRweDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXNlY29uZGFyeSk7CiAgICAgIH0KCiAgICAgIC5zZWN0aW9uLWNvbnRlbnQgewogICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgIH0KCiAgICAgIC5pbmZvLXJvdyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiAxMHB4IDA7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzI3MjcyYSIpfTsKICAgICAgfQoKICAgICAgLmluZm8tcm93Omxhc3QtY2hpbGQgewogICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7CiAgICAgIH0KCiAgICAgIC5pbmZvLWxhYmVsIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQoKICAgICAgLmluZm8tdmFsdWUgewogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgIH0KCiAgICAgIC5jb3B5LWJ1dHRvbiB7CiAgICAgICAgcGFkZGluZzogNHB4OwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDIwMG1zIGVhc2U7CiAgICAgIH0KCiAgICAgIC5jb3B5LWJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMjcyNzJhIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgIH0KCiAgICAgIC5tZXRyaWNzLWdyaWQgewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgMWZyKTsKICAgICAgICBnYXA6IDEycHg7CiAgICAgIH0KCiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkgewogICAgICAgIC5tZXRyaWNzLWdyaWQgewogICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC5tZXRyaWMtY2FyZCB7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDEycHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMTgxODFiIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgfQoKICAgICAgLm1ldHJpYy12YWx1ZSB7CiAgICAgICAgZm9udC1zaXplOiAyMHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLm1ldHJpYy1sYWJlbCB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgICAgbWFyZ2luLXRvcDogMnB4OwogICAgICB9CgogICAgICAucHJvZ3Jlc3MtYmFyIHsKICAgICAgICBoZWlnaHQ6IDRweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2U0ZTRlNyIsIiMyNzI3MmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgICAgIG1hcmdpbi10b3A6IDhweDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAucHJvZ3Jlc3MtZmlsbCB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgICAgICB0cmFuc2l0aW9uOiB3aWR0aCAzMDBtcyBlYXNlOwogICAgICB9CgogICAgICAucHJvZ3Jlc3MtZmlsbC5sb3cgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjMjJjNTVlIiwiIzIyYzU1ZSIpfTsKICAgICAgfQoKICAgICAgLnByb2dyZXNzLWZpbGwubWVkaXVtIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2VhYjMwOCIsIiNlYWIzMDgiKX07CiAgICAgIH0KCiAgICAgIC5wcm9ncmVzcy1maWxsLmhpZ2ggewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZWY0NDQ0IiwiI2VmNDQ0NCIpfTsKICAgICAgfQoKICAgICAgLmNvbmZpZy1pdGVtIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBwYWRkaW5nOiA4cHggMDsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMjcyNzJhIil9OwogICAgICB9CgogICAgICAuY29uZmlnLWl0ZW06bGFzdC1jaGlsZCB7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgICAgfQoKICAgICAgLmNvbmZpZy1rZXkgewogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICB9CgogICAgICAuY29uZmlnLXZhbHVlIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAuY29uZmlnLXZhbHVlLnRydWUgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE2YTM0YSIsIiMyMmM1NWUiKX07CiAgICAgIH0KCiAgICAgIC5jb25maWctdmFsdWUuZmFsc2UgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2RjMjYyNiIsIiNlZjQ0NDQiKX07CiAgICAgIH0KCiAgICAgIC5lbXB0eS1zdGF0ZSB7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDQwcHggMjBweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gdGhpcy5zZXJ2aWNlP3dgCiAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyLWluZm8iPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VydmljZS1pY29uIj4KICAgICAgICAgICAgJHt0aGlzLnJlbmRlclNlcnZpY2VJY29uKCl9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlcnZpY2UtZGV0YWlscyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlcnZpY2UtbmFtZSI+JHt0aGlzLnNlcnZpY2UubmFtZX08L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VydmljZS1tZXRhIj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3RhdHVzLWJhZGdlICR7dGhpcy5zZXJ2aWNlLnN0YXR1c30iPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN0YXR1cy1kb3QiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICR7dGhpcy5zZXJ2aWNlLnN0YXR1cy5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0aGlzLnNlcnZpY2Uuc3RhdHVzLnNsaWNlKDEpfQogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8c3Bhbj5WZXJzaW9uICR7dGhpcy5zZXJ2aWNlLnZlcnNpb259PC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlci1hY3Rpb25zIj4KICAgICAgICAgICR7dGhpcy5zZXJ2aWNlLnN0YXR1cz09PSJydW5uaW5nIj93YAogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJhY3Rpb24tYnV0dG9uIiA/ZGlzYWJsZWQ9JHt0aGlzLmFjdGlvbkxvYWRpbmd9IEBjbGljaz0keygpPT50aGlzLmhhbmRsZVJlc3RhcnQoKX0+CiAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgICAgICAgICAgICAgPHBvbHlsaW5lIHBvaW50cz0iMjMgNCAyMyAxMCAxNyAxMCI+PC9wb2x5bGluZT4KICAgICAgICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9IjEgMjAgMSAxNCA3IDE0Ij48L3BvbHlsaW5lPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTMuNTEgOWE5IDkgMCAwIDEgMTQuODUtMy4zNkwyMyAxME0xIDE0bDQuNjQgNC4zNkE5IDkgMCAwIDAgMjAuNDkgMTUiPjwvcGF0aD4KICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICBSZXN0YXJ0CiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJhY3Rpb24tYnV0dG9uIGRhbmdlciIgP2Rpc2FibGVkPSR7dGhpcy5hY3Rpb25Mb2FkaW5nfSBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVTdG9wKCl9PgogICAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgICAgIDxyZWN0IHg9IjYiIHk9IjYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgcng9IjEiPjwvcmVjdD4KICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICBTdG9wCiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgYDp3YAogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJhY3Rpb24tYnV0dG9uIiA/ZGlzYWJsZWQ9JHt0aGlzLmFjdGlvbkxvYWRpbmd9IEBjbGljaz0keygpPT50aGlzLmhhbmRsZVN0YXJ0KCl9PgogICAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI1LDMgMTksMTIgNSwyMSI+PC9wb2x5Z29uPgogICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgIFN0YXJ0CiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgYH0KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJncmlkIj4KICAgICAgICA8IS0tIENvbm5lY3Rpb24gSW5mbyAtLT4KICAgICAgICA8ZGVlcy10aWxlPgogICAgICAgICAgPGRpdiBzbG90PSJoZWFkZXIiIGNsYXNzPSJzZWN0aW9uLWhlYWRlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPgogICAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMCAxM2E1IDUgMCAwIDAgNy41NC41NGwzLTNhNSA1IDAgMCAwLTcuMDctNy4wN2wtMS43MiAxLjcxIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTQgMTFhNSA1IDAgMCAwLTcuNTQtLjU0bC0zIDNhNSA1IDAgMCAwIDcuMDcgNy4wN2wxLjcxLTEuNzEiPjwvcGF0aD4KICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICBDb25uZWN0aW9uCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWNvbnRlbnQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvLXJvdyI+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImluZm8tbGFiZWwiPkhvc3Q8L3NwYW4+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImluZm8tdmFsdWUiPgogICAgICAgICAgICAgICAgJHt0aGlzLnNlcnZpY2UuaG9zdH0KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImNvcHktYnV0dG9uIiBAY2xpY2s9JHsoKT0+dGhpcy5jb3B5VG9DbGlwYm9hcmQodGhpcy5zZXJ2aWNlLmhvc3QpfT4KICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+CiAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD0iOSIgeT0iOSIgd2lkdGg9IjEzIiBoZWlnaHQ9IjEzIiByeD0iMiIgcnk9IjIiPjwvcmVjdD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNSAxNUg0YTIgMiAwIDAgMS0yLTJWNGEyIDIgMCAwIDEgMi0yaDlhMiAyIDAgMCAxIDIgMnYxIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5mby1yb3ciPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpbmZvLWxhYmVsIj5Qb3J0PC9zcGFuPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpbmZvLXZhbHVlIj4ke3RoaXMuc2VydmljZS5wb3J0fTwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICR7dGhpcy5zZXJ2aWNlLmNyZWRlbnRpYWxzPy51c2VybmFtZT93YAogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImluZm8tcm93Ij4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpbmZvLWxhYmVsIj5Vc2VybmFtZTwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpbmZvLXZhbHVlIj4KICAgICAgICAgICAgICAgICAgJHt0aGlzLnNlcnZpY2UuY3JlZGVudGlhbHMudXNlcm5hbWV9CiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImNvcHktYnV0dG9uIiBAY2xpY2s9JHsoKT0+dGhpcy5jb3B5VG9DbGlwYm9hcmQodGhpcy5zZXJ2aWNlLmNyZWRlbnRpYWxzLnVzZXJuYW1lKX0+CiAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+CiAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PSI5IiB5PSI5IiB3aWR0aD0iMTMiIGhlaWdodD0iMTMiIHJ4PSIyIiByeT0iMiI+PC9yZWN0PgogICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTUgMTVINGEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmg5YTIgMiAwIDAgMSAyIDJ2MSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvLXJvdyI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaW5mby1sYWJlbCI+UGFzc3dvcmQ8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaW5mby12YWx1ZSI+4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCiPC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICBgOiIifQogICAgICAgICAgICAke3RoaXMuc2VydmljZS5jcmVkZW50aWFscz8uYWNjZXNzS2V5P3dgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5mby1yb3ciPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImluZm8tbGFiZWwiPkFjY2VzcyBLZXk8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaW5mby12YWx1ZSI+CiAgICAgICAgICAgICAgICAgICR7dGhpcy5zZXJ2aWNlLmNyZWRlbnRpYWxzLmFjY2Vzc0tleX0KICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY29weS1idXR0b24iIEBjbGljaz0keygpPT50aGlzLmNvcHlUb0NsaXBib2FyZCh0aGlzLnNlcnZpY2UuY3JlZGVudGlhbHMuYWNjZXNzS2V5KX0+CiAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+CiAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PSI5IiB5PSI5IiB3aWR0aD0iMTMiIGhlaWdodD0iMTMiIHJ4PSIyIiByeT0iMiI+PC9yZWN0PgogICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTUgMTVINGEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmg5YTIgMiAwIDAgMSAyIDJ2MSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvLXJvdyI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaW5mby1sYWJlbCI+U2VjcmV0IEtleTwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpbmZvLXZhbHVlIj7igKLigKLigKLigKLigKLigKLigKLigKI8L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2RlZXMtdGlsZT4KCiAgICAgICAgPCEtLSBDb25maWd1cmF0aW9uIC0tPgogICAgICAgIDxkZWVzLXRpbGU+CiAgICAgICAgICA8ZGl2IHNsb3Q9ImhlYWRlciIgY2xhc3M9InNlY3Rpb24taGVhZGVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+CiAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMyI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTkuNCAxNWExLjY1IDEuNjUgMCAwIDAgLjMzIDEuODJsLjA2LjA2YTIgMiAwIDAgMSAwIDIuODMgMiAyIDAgMCAxLTIuODMgMGwtLjA2LS4wNmExLjY1IDEuNjUgMCAwIDAtMS44Mi0uMzMgMS42NSAxLjY1IDAgMCAwLTEgMS41MVYyMWEyIDIgMCAwIDEtMiAyIDIgMiAwIDAgMS0yLTJ2LS4wOUExLjY1IDEuNjUgMCAwIDAgOSAxOS40YTEuNjUgMS42NSAwIDAgMC0xLjgyLjMzbC0uMDYuMDZhMiAyIDAgMCAxLTIuODMgMCAyIDIgMCAwIDEgMC0yLjgzbC4wNi0uMDZhMS42NSAxLjY1IDAgMCAwIC4zMy0xLjgyIDEuNjUgMS42NSAwIDAgMC0xLjUxLTFIM2EyIDIgMCAwIDEtMi0yIDIgMiAwIDAgMSAyLTJoLjA5QTEuNjUgMS42NSAwIDAgMCA0LjYgOWExLjY1IDEuNjUgMCAwIDAtLjMzLTEuODJsLS4wNi0uMDZhMiAyIDAgMCAxIDAtMi44MyAyIDIgMCAwIDEgMi44MyAwbC4wNi4wNmExLjY1IDEuNjUgMCAwIDAgMS44Mi4zM0g5YTEuNjUgMS42NSAwIDAgMCAxLTEuNTFWM2EyIDIgMCAwIDEgMi0yIDIgMiAwIDAgMSAyIDJ2LjA5YTEuNjUgMS42NSAwIDAgMCAxIDEuNTEgMS42NSAxLjY1IDAgMCAwIDEuODItLjMzbC4wNi0uMDZhMiAyIDAgMCAxIDIuODMgMCAyIDIgMCAwIDEgMCAyLjgzbC0uMDYuMDZhMS42NSAxLjY1IDAgMCAwLS4zMyAxLjgyVjlhMS42NSAxLjY1IDAgMCAwIDEuNTEgMUgyMWEyIDIgMCAwIDEgMiAyIDIgMiAwIDAgMS0yIDJoLS4wOWExLjY1IDEuNjUgMCAwIDAtMS41MSAxeiI+PC9wYXRoPgogICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tY29udGVudCI+CiAgICAgICAgICAgICR7T2JqZWN0LmVudHJpZXModGhpcy5zZXJ2aWNlLmNvbmZpZykubWFwKChbbSxmXSk9PndgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29uZmlnLWl0ZW0iPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbmZpZy1rZXkiPiR7dGhpcy5mb3JtYXRDb25maWdLZXkobSl9PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbmZpZy12YWx1ZSAke3R5cGVvZiBmPT0iYm9vbGVhbiI/Zj8idHJ1ZSI6ImZhbHNlIjoiIn0iPiR7dGhpcy5mb3JtYXRDb25maWdWYWx1ZShmKX08L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGApfQogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kZWVzLXRpbGU+CgogICAgICAgIDwhLS0gTWV0cmljcyAtLT4KICAgICAgICAke3RoaXMuc2VydmljZS5tZXRyaWNzP3dgCiAgICAgICAgICA8ZGVlcy10aWxlIGNsYXNzPSJmdWxsLXdpZHRoIj4KICAgICAgICAgICAgPGRpdiBzbG90PSJoZWFkZXIiIGNsYXNzPSJzZWN0aW9uLWhlYWRlciI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+CiAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+CiAgICAgICAgICAgICAgICAgIDxsaW5lIHgxPSIxOCIgeTE9IjIwIiB4Mj0iMTgiIHkyPSIxMCI+PC9saW5lPgogICAgICAgICAgICAgICAgICA8bGluZSB4MT0iMTIiIHkxPSIyMCIgeDI9IjEyIiB5Mj0iNCI+PC9saW5lPgogICAgICAgICAgICAgICAgICA8bGluZSB4MT0iNiIgeTE9IjIwIiB4Mj0iNiIgeTI9IjE0Ij48L2xpbmU+CiAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgIFJlc291cmNlIFVzYWdlCiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWNvbnRlbnQiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1ldHJpY3MtZ3JpZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXRyaWMtY2FyZCI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1ldHJpYy12YWx1ZSI+JHt0aGlzLnNlcnZpY2UubWV0cmljcy5jcHV9JTwvZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXRyaWMtbGFiZWwiPkNQVTwvZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1iYXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWZpbGwgJHt0aGlzLmdldFByb2dyZXNzQ2xhc3ModGhpcy5zZXJ2aWNlLm1ldHJpY3MuY3B1KX0iIHN0eWxlPSJ3aWR0aDogJHt0aGlzLnNlcnZpY2UubWV0cmljcy5jcHV9JSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXRyaWMtY2FyZCI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1ldHJpYy12YWx1ZSI+JHt0aGlzLnNlcnZpY2UubWV0cmljcy5tZW1vcnl9JTwvZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXRyaWMtbGFiZWwiPk1lbW9yeTwvZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1iYXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWZpbGwgJHt0aGlzLmdldFByb2dyZXNzQ2xhc3ModGhpcy5zZXJ2aWNlLm1ldHJpY3MubWVtb3J5KX0iIHN0eWxlPSJ3aWR0aDogJHt0aGlzLnNlcnZpY2UubWV0cmljcy5tZW1vcnl9JSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXRyaWMtY2FyZCI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1ldHJpYy12YWx1ZSI+JHt0aGlzLnNlcnZpY2UubWV0cmljcy5zdG9yYWdlfSU8L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWV0cmljLWxhYmVsIj5TdG9yYWdlPC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWJhciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtZmlsbCAke3RoaXMuZ2V0UHJvZ3Jlc3NDbGFzcyh0aGlzLnNlcnZpY2UubWV0cmljcy5zdG9yYWdlKX0iIHN0eWxlPSJ3aWR0aDogJHt0aGlzLnNlcnZpY2UubWV0cmljcy5zdG9yYWdlfSUiPjwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgJHt0aGlzLnNlcnZpY2UubWV0cmljcy5jb25uZWN0aW9ucyE9PXZvaWQgMD93YAogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXRyaWMtY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWV0cmljLXZhbHVlIj4ke3RoaXMuc2VydmljZS5tZXRyaWNzLmNvbm5lY3Rpb25zfTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1ldHJpYy1sYWJlbCI+Q29ubmVjdGlvbnM8L2Rpdj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICBgOiIifQogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGVlcy10aWxlPgogICAgICAgIGA6IiJ9CgogICAgICAgIDwhLS0gTG9ncyAtLT4KICAgICAgICA8ZGl2IHN0eWxlPSJncmlkLWNvbHVtbjogMSAvIC0xOyI+CiAgICAgICAgICA8ZGVlcy1jaGFydC1sb2cKICAgICAgICAgICAgLmxhYmVsPSR7IlNlcnZpY2UgTG9ncyJ9CiAgICAgICAgICAgIC5sb2dFbnRyaWVzPSR7dGhpcy5sb2dzLm1hcChtPT4oe3RpbWVzdGFtcDptLnRpbWVzdGFtcC5pbmNsdWRlcygiVCIpP20udGltZXN0YW1wOm5ldyBEYXRlKG0udGltZXN0YW1wKS50b0lTT1N0cmluZygpLGxldmVsOm0ubGV2ZWwsbWVzc2FnZTptLm1lc3NhZ2V9KSl9CiAgICAgICAgICAgIC5hdXRvU2Nyb2xsPSR7ITB9CiAgICAgICAgICAgIC5tYXhFbnRyaWVzPSR7MmUzfQogICAgICAgICAgICAuc2hvd01ldHJpY3M9JHshMH0KICAgICAgICAgID48L2RlZXMtY2hhcnQtbG9nPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGA6d2A8ZGl2IGNsYXNzPSJlbXB0eS1zdGF0ZSI+Tm8gc2VydmljZSBzZWxlY3RlZDwvZGl2PmB9cmVuZGVyU2VydmljZUljb24oKXtzd2l0Y2godGhpcy5zZXJ2aWNlPy50eXBlKXtjYXNlIm1vbmdvZGIiOnJldHVybiB3YDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMSAxNy45M2MtMy45NS0uNDktNy0zLjg1LTctNy45MyAwLS42Mi4wOC0xLjIxLjIxLTEuNzlMOSAxNXYxYzAgMS4xLjkgMiAyIDJ2MS45M3ptNi45LTIuNTRjLS4yNi0uODEtMS0xLjM5LTEuOS0xLjM5aC0xdi0zYzAtLjU1LS40NS0xLTEtMUg4di0yaDJjLjU1IDAgMS0uNDUgMS0xVjdoMmMxLjEgMCAyLS45IDItMnYtLjQxYzIuOTMgMS4xOSA1IDQuMDYgNSA3LjQxIDAgMi4wOC0uOCAzLjk3LTIuMSA1LjM5eiIvPjwvc3ZnPmA7Y2FzZSJtaW5pbyI6cmV0dXJuIHdgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9ImN1cnJlbnRDb2xvciI+PHBhdGggZD0iTTIxIDE2LjVjMCAuMzgtLjIxLjcxLS41My44OGwtNy45IDQuNDRjLS4xNi4xMi0uMzYuMTgtLjU3LjE4LS4yMSAwLS40MS0uMDYtLjU3LS4xOGwtNy45LTQuNDRBLjk5MS45OTEgMCAwIDEgMyAxNi41di05YzAtLjM4LjIxLS43MS41My0uODhsNy45LTQuNDRjLjE2LS4xMi4zNi0uMTguNTctLjE4LjIxIDAgLjQxLjA2LjU3LjE4bDcuOSA0LjQ0Yy4zMi4xNy41My41LjUzLjg4djl6Ii8+PC9zdmc+YDtjYXNlImNsaWNraG91c2UiOnJldHVybiB3YDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxyZWN0IHg9IjIiIHk9IjIiIHdpZHRoPSI2IiBoZWlnaHQ9IjIwIi8+PHJlY3QgeD0iOSIgeT0iNyIgd2lkdGg9IjYiIGhlaWdodD0iMTUiLz48cmVjdCB4PSIxNiIgeT0iMTIiIHdpZHRoPSI2IiBoZWlnaHQ9IjEwIi8+PC9zdmc+YDtjYXNlInJlZGlzIjpyZXR1cm4gd2A8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIj48cGF0aCBkPSJNMTIgMkwyIDdsMTAgNSAxMC01LTEwLTV6TTIgMTdsMTAgNSAxMC01TTIgMTJsMTAgNSAxMC01Ii8+PC9zdmc+YDtkZWZhdWx0OnJldHVybiB3YDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj48cmVjdCB4PSIyIiB5PSIyIiB3aWR0aD0iMjAiIGhlaWdodD0iOCIgcng9IjIiIHJ5PSIyIj48L3JlY3Q+PHJlY3QgeD0iMiIgeT0iMTQiIHdpZHRoPSIyMCIgaGVpZ2h0PSI4IiByeD0iMiIgcnk9IjIiPjwvcmVjdD48bGluZSB4MT0iNiIgeTE9IjYiIHgyPSI2LjAxIiB5Mj0iNiI+PC9saW5lPjxsaW5lIHgxPSI2IiB5MT0iMTgiIHgyPSI2LjAxIiB5Mj0iMTgiPjwvbGluZT48L3N2Zz5gfX1nZXRQcm9ncmVzc0NsYXNzKG0pe3JldHVybiBtPDUwPyJsb3ciOm08ODA/Im1lZGl1bSI6ImhpZ2gifWZvcm1hdENvbmZpZ0tleShtKXtyZXR1cm4gbS5yZXBsYWNlKC8oW0EtWl0pL2csIiAkMSIpLnJlcGxhY2UoL14uLyxmPT5mLnRvVXBwZXJDYXNlKCkpfWZvcm1hdENvbmZpZ1ZhbHVlKG0pe3JldHVybiB0eXBlb2YgbT09ImJvb2xlYW4iP20/IkVuYWJsZWQiOiJEaXNhYmxlZCI6U3RyaW5nKG0pfWNvcHlUb0NsaXBib2FyZChtKXtuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChtKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjb3B5Iix7ZGV0YWlsOm0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1oYW5kbGVTdGFydCgpe3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInN0YXJ0Iix7ZGV0YWlsOnRoaXMuc2VydmljZSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZVN0b3AoKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJzdG9wIix7ZGV0YWlsOnRoaXMuc2VydmljZSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZVJlc3RhcnQoKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJyZXN0YXJ0Iix7ZGV0YWlsOnRoaXMuc2VydmljZSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWNvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSxOZyh0aGlzLHYpfXN0YXRpY3tOZyhhLHQpfX07cmV0dXJuIHg9YX0pKCl9KTt2YXIgeVEsJHUsUVFhLG85YT1nKCgpPT57cGUoKTt5UT1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sJHU9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LFFRYT0oKCk9PntsZXQgcz1bbmUoInN6LWRvbWFpbi1kZXRhaWwtdmlldyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdO3ZhciB5PWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJTekRvbWFpbkRldGFpbFZpZXciKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgTT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOk9iamVjdH0pXSxwPVtMKHt0eXBlOk9iamVjdH0pXSxjPVtMKHt0eXBlOkFycmF5fSldLHg9W0woe3R5cGU6Qm9vbGVhbn0pXSx5USh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImRvbWFpbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4iZG9tYWluImluIHosImhhcyIpLGdldDppKHo9PnouZG9tYWluLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3ouZG9tYWluPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sbyxsKSx5USh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNlcnRpZmljYXRlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJjZXJ0aWZpY2F0ZSJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LmNlcnRpZmljYXRlLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3ouY2VydGlmaWNhdGU9Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxkLHUpLHlRKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZG5zUmVjb3JkcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4iZG5zUmVjb3JkcyJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LmRuc1JlY29yZHMsImdldCIpLHNldDppKCh6LE4pPT57ei5kbnNSZWNvcmRzPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sYix2KSx5USh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImFjdGlvbkxvYWRpbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoej0+ImFjdGlvbkxvYWRpbmciaW4geiwiaGFzIiksZ2V0Omkoej0+ei5hY3Rpb25Mb2FkaW5nLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3ouYWN0aW9uTG9hZGluZz1OfSwic2V0Iil9LG1ldGFkYXRhOk19LG0sZikseVEobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6TX0sbnVsbCx0KSx5PWE9ZS52YWx1ZSxNJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOk19KX1zdGF0aWMgZGVtbz1pKCgpPT53YAogICAgPGRpdiBzdHlsZT0icGFkZGluZzogMjRweDsgbWF4LXdpZHRoOiAxMDAwcHg7Ij4KICAgICAgPHN6LWRvbWFpbi1kZXRhaWwtdmlldwogICAgICAgIC5kb21haW49JHt7aWQ6IjEiLG5hbWU6ImV4YW1wbGUuY29tIixzdGF0dXM6ImFjdGl2ZSIsdmVyaWZpZWQ6ITAsY3JlYXRlZEF0OiIyMDI0LTAxLTEwIixwcm94eVJvdXRlczpbIi9hcGkvKiIsIi9hcHAvKiJdfX0KICAgICAgICAuY2VydGlmaWNhdGU9JHt7aWQ6IjEiLGRvbWFpbjoiZXhhbXBsZS5jb20iLGlzc3VlcjoiTGV0J3MgRW5jcnlwdCIsdmFsaWRGcm9tOiIyMDI0LTAxLTEwIix2YWxpZFVudGlsOiIyMDI0LTA0LTEwIixkYXlzUmVtYWluaW5nOjQ1LHN0YXR1czoidmFsaWQiLGF1dG9SZW5ldzohMCxjaGFpbjpbIlIzIiwiSVNSRyBSb290IFgxIl19fQogICAgICAgIC5kbnNSZWNvcmRzPSR7W3tpZDoiMSIsdHlwZToiQSIsbmFtZToiQCIsdmFsdWU6IjE5Mi4xNjguMS4xMDAiLHR0bDozNjAwfSx7aWQ6IjIiLHR5cGU6IkNOQU1FIixuYW1lOiJ3d3ciLHZhbHVlOiJleGFtcGxlLmNvbSIsdHRsOjM2MDB9LHtpZDoiMyIsdHlwZToiTVgiLG5hbWU6IkAiLHZhbHVlOiJtYWlsLmV4YW1wbGUuY29tIix0dGw6MzYwMCxwcmlvcml0eToxMH0se2lkOiI0Iix0eXBlOiJUWFQiLG5hbWU6IkAiLHZhbHVlOiJ2PXNwZjEgaW5jbHVkZTpfc3BmLmV4YW1wbGUuY29tIH5hbGwiLHR0bDozNjAwfV19CiAgICAgID48L3N6LWRvbWFpbi1kZXRhaWwtdmlldz4KICAgIDwvZGl2PgogIGAsImRlbW8iKTtzdGF0aWMgZGVtb0dyb3Vwcz1bIk5ldHdvcmsiXTsjZT0kdSh0aGlzLG8sbnVsbCk7Z2V0IGRvbWFpbigpe3JldHVybiB0aGlzLiNlfXNldCBkb21haW4oTSl7dGhpcy4jZT1NfSN0PSgkdSh0aGlzLGwpLCR1KHRoaXMsZCxudWxsKSk7Z2V0IGNlcnRpZmljYXRlKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGNlcnRpZmljYXRlKE0pe3RoaXMuI3Q9TX0jYT0oJHUodGhpcyx1KSwkdSh0aGlzLGIsW10pKTtnZXQgZG5zUmVjb3Jkcygpe3JldHVybiB0aGlzLiNhfXNldCBkbnNSZWNvcmRzKE0pe3RoaXMuI2E9TX0jcz0oJHUodGhpcyx2KSwkdSh0aGlzLG0sITEpKTtnZXQgYWN0aW9uTG9hZGluZygpe3JldHVybiB0aGlzLiNzfXNldCBhY3Rpb25Mb2FkaW5nKE0pe3RoaXMuI3M9TX1zdGF0aWMgc3R5bGVzPVtoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICAuaGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgICB9CgogICAgICAuaGVhZGVyLWluZm8gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDhweDsKICAgICAgfQoKICAgICAgLmRvbWFpbi1uYW1lIHsKICAgICAgICBmb250LXNpemU6IDI0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDEycHg7CiAgICAgIH0KCiAgICAgIC5zdGF0dXMtYmFkZ2UgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgcGFkZGluZzogNHB4IDEwcHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5OXB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICB9CgogICAgICAuc3RhdHVzLWJhZGdlLmFjdGl2ZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNkY2ZjZTciLCJyZ2JhKDM0LCAxOTcsIDk0LCAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE2YTM0YSIsIiMyMmM1NWUiKX07CiAgICAgIH0KCiAgICAgIC5zdGF0dXMtYmFkZ2UucGVuZGluZyB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZWYzYzciLCJyZ2JhKDI0NSwgMTU4LCAxMSwgMC4yKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNkOTc3MDYiLCIjZjU5ZTBiIil9OwogICAgICB9CgogICAgICAuc3RhdHVzLWJhZGdlLmVycm9yIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZlZTJlMiIsInJnYmEoMjM5LCA2OCwgNjgsIDAuMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZGMyNjI2IiwiI2VmNDQ0NCIpfTsKICAgICAgfQoKICAgICAgLnN0YXR1cy1kb3QgewogICAgICAgIHdpZHRoOiA2cHg7CiAgICAgICAgaGVpZ2h0OiA2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIGJhY2tncm91bmQ6IGN1cnJlbnRDb2xvcjsKICAgICAgfQoKICAgICAgLmRvbWFpbi1tZXRhIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICB9CgogICAgICAudmVyaWZpZWQtYmFkZ2UgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTZhMzRhIiwiIzIyYzU1ZSIpfTsKICAgICAgfQoKICAgICAgLnZlcmlmaWVkLWJhZGdlIHN2ZyB7CiAgICAgICAgd2lkdGg6IDE2cHg7CiAgICAgICAgaGVpZ2h0OiAxNnB4OwogICAgICB9CgogICAgICAuaGVhZGVyLWFjdGlvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4OwogICAgICAgIHBhZGRpbmc6IDhweCAxNHB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzA5MDkwYiIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U0ZTRlNyIsIiMyNzI3MmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAyMDBtcyBlYXNlOwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbjpob3Zlcjpub3QoOmRpc2FibGVkKSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMTgxODFiIil9OwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbjpkaXNhYmxlZCB7CiAgICAgICAgb3BhY2l0eTogMC42OwogICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uIHN2ZyB7CiAgICAgICAgd2lkdGg6IDE0cHg7CiAgICAgICAgaGVpZ2h0OiAxNHB4OwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbi5kYW5nZXIgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2RjMjYyNiIsIiNlZjQ0NDQiKX07CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiI2ZlZTJlMiIsInJnYmEoMjM5LCA2OCwgNjgsIDAuMykiKX07CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uLmRhbmdlcjpob3Zlcjpub3QoOmRpc2FibGVkKSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZWUyZTIiLCJyZ2JhKDIzOSwgNjgsIDY4LCAwLjIpIil9OwogICAgICB9CgogICAgICAuZ3JpZCB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7CiAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgIH0KCiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgewogICAgICAgIC5ncmlkIHsKICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOwogICAgICAgIH0KICAgICAgfQoKICAgICAgZGVlcy10aWxlLmZ1bGwtd2lkdGggewogICAgICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7CiAgICAgIH0KCiAgICAgIC5zZWN0aW9uLWhlYWRlciB7CiAgICAgICAgaGVpZ2h0OiAzNnB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiAwIDE2cHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLnNlY3Rpb24tdGl0bGUgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTsKICAgICAgfQoKICAgICAgLnNlY3Rpb24tdGl0bGUgc3ZnIHsKICAgICAgICB3aWR0aDogMTRweDsKICAgICAgICBoZWlnaHQ6IDE0cHg7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOwogICAgICB9CgogICAgICAuc2VjdGlvbi1mb290ZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAwOwogICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAudGlsZS1idXR0b24gewogICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1zdWJ0bGUpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4OwogICAgICB9CgogICAgICAudGlsZS1idXR0b246Zmlyc3QtY2hpbGQgewogICAgICAgIGJvcmRlci1sZWZ0OiBub25lOwogICAgICB9CgogICAgICAudGlsZS1idXR0b246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItaG92ZXIpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIH0KCiAgICAgIC50aWxlLWJ1dHRvbi5wcmltYXJ5IHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTcuMiA5MS4yJSA1OS44JSkiLCJoc2woMjEzLjEgOTMuOSUgNjcuOCUpIil9OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIH0KCiAgICAgIC50aWxlLWJ1dHRvbi5wcmltYXJ5OmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxNy4yIDkxLjIlIDU5LjglIC8gMC4wOCkiLCJoc2woMjEzLjEgOTMuOSUgNjcuOCUgLyAwLjA4KSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTcuMiA5MS4yJSA1MCUpIiwiaHNsKDIxMy4xIDkzLjklIDc1JSkiKX07CiAgICAgIH0KCgogICAgICAuc2VjdGlvbi1jb250ZW50IHsKICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICB9CgogICAgICAuY2VydC1zdGF0dXMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2YwZmRmNCIsInJnYmEoMzQsIDE5NywgOTQsIDAuMSkiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgIH0KCiAgICAgIC5jZXJ0LXN0YXR1cy5leHBpcmluZyB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZiZWIiLCJyZ2JhKDI0NSwgMTU4LCAxMSwgMC4xKSIpfTsKICAgICAgfQoKICAgICAgLmNlcnQtc3RhdHVzLmV4cGlyZWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmVmMmYyIiwicmdiYSgyMzksIDY4LCA2OCwgMC4xKSIpfTsKICAgICAgfQoKICAgICAgLmNlcnQtaWNvbiB7CiAgICAgICAgd2lkdGg6IDQwcHg7CiAgICAgICAgaGVpZ2h0OiA0MHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC5jZXJ0LWljb24udmFsaWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZGNmY2U3IiwicmdiYSgzNCwgMTk3LCA5NCwgMC4yKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxNmEzNGEiLCIjMjJjNTVlIil9OwogICAgICB9CgogICAgICAuY2VydC1pY29uLmV4cGlyaW5nIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZlZjNjNyIsInJnYmEoMjQ1LCAxNTgsIDExLCAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2Q5NzcwNiIsIiNmNTllMGIiKX07CiAgICAgIH0KCiAgICAgIC5jZXJ0LWljb24uZXhwaXJlZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZWUyZTIiLCJyZ2JhKDIzOSwgNjgsIDY4LCAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2RjMjYyNiIsIiNlZjQ0NDQiKX07CiAgICAgIH0KCiAgICAgIC5jZXJ0LWljb24gc3ZnIHsKICAgICAgICB3aWR0aDogMjBweDsKICAgICAgICBoZWlnaHQ6IDIwcHg7CiAgICAgIH0KCiAgICAgIC5jZXJ0LWluZm8gewogICAgICAgIGZsZXg6IDE7CiAgICAgIH0KCiAgICAgIC5jZXJ0LXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAuY2VydC1zdWJ0aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgICAgbWFyZ2luLXRvcDogMnB4OwogICAgICB9CgogICAgICAuY2VydC1kYXlzIHsKICAgICAgICBmb250LXNpemU6IDI0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5jZXJ0LWRheXMudmFsaWQgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE2YTM0YSIsIiMyMmM1NWUiKX07CiAgICAgIH0KCiAgICAgIC5jZXJ0LWRheXMuZXhwaXJpbmcgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2Q5NzcwNiIsIiNmNTllMGIiKX07CiAgICAgIH0KCiAgICAgIC5jZXJ0LWRheXMuZXhwaXJlZCB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZGMyNjI2IiwiI2VmNDQ0NCIpfTsKICAgICAgfQoKICAgICAgLmNlcnQtZGF5cy1sYWJlbCB7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIG1hcmdpbi10b3A6IDJweDsKICAgICAgfQoKICAgICAgLmluZm8tcm93IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDEwcHggMDsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMjcyNzJhIil9OwogICAgICB9CgogICAgICAuaW5mby1yb3c6bGFzdC1jaGlsZCB7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgICAgfQoKICAgICAgLmluZm8tbGFiZWwgewogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICB9CgogICAgICAuaW5mby12YWx1ZSB7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLmluZm8tdmFsdWUuZW5hYmxlZCB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTZhMzRhIiwiIzIyYzU1ZSIpfTsKICAgICAgfQoKICAgICAgLmNoYWluLWxpc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgIGdhcDogOHB4OwogICAgICB9CgogICAgICAuY2hhaW4tYmFkZ2UgewogICAgICAgIHBhZGRpbmc6IDRweCA4cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMjcyNzJhIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQoKICAgICAgLmRucy10YWJsZSB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5kbnMtaGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogODBweCAxZnIgMmZyIDgwcHggNjBweDsKICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgcGFkZGluZzogMTBweCAwOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U0ZTRlNyIsIiMyNzI3MmEiKX07CiAgICAgIH0KCiAgICAgIC5kbnMtcm93IHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogODBweCAxZnIgMmZyIDgwcHggNjBweDsKICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgcGFkZGluZzogMTJweCAwOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMyNzI3MmEiKX07CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgfQoKICAgICAgLmRucy1yb3c6bGFzdC1jaGlsZCB7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgICAgfQoKICAgICAgLmRucy1yb3c6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzE4MTgxYiIpfTsKICAgICAgICBtYXJnaW46IDAgLTE2cHg7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAxNnB4OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDE2cHg7CiAgICAgIH0KCiAgICAgIC5kbnMtdHlwZSB7CiAgICAgICAgcGFkZGluZzogMnB4IDhweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2RiZWFmZSIsInJnYmEoNTksIDEzMCwgMjQ2LCAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzI1NjNlYiIsIiM2MGE1ZmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgfQoKICAgICAgLmRucy1uYW1lIHsKICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogICAgICB9CgogICAgICAuZG5zLXZhbHVlIHsKICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CgogICAgICAuZG5zLXR0bCB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQoKICAgICAgLmRucy1hY3Rpb25zIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGdhcDogNHB4OwogICAgICB9CgogICAgICAuaWNvbi1idXR0b24gewogICAgICAgIHBhZGRpbmc6IDRweDsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAyMDBtcyBlYXNlOwogICAgICB9CgogICAgICAuaWNvbi1idXR0b246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZTRlNGU3IiwiIzI3MjcyYSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAuaWNvbi1idXR0b24uZGFuZ2VyOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZlZTJlMiIsInJnYmEoMjM5LCA2OCwgNjgsIDAuMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZGMyNjI2IiwiI2VmNDQ0NCIpfTsKICAgICAgfQoKICAgICAgLmljb24tYnV0dG9uIHN2ZyB7CiAgICAgICAgd2lkdGg6IDE0cHg7CiAgICAgICAgaGVpZ2h0OiAxNHB4OwogICAgICB9CgogICAgICAucm91dGVzLWxpc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgIGdhcDogOHB4OwogICAgICB9CgogICAgICAucm91dGUtYmFkZ2UgewogICAgICAgIHBhZGRpbmc6IDZweCAxMHB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzI3MjcyYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLmVtcHR5LXN0YXRlIHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHRoaXMuZG9tYWluP3dgCiAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyLWluZm8iPgogICAgICAgICAgPGRpdiBjbGFzcz0iZG9tYWluLW5hbWUiPgogICAgICAgICAgICAke3RoaXMuZG9tYWluLm5hbWV9CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzdGF0dXMtYmFkZ2UgJHt0aGlzLmRvbWFpbi5zdGF0dXN9Ij4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3RhdHVzLWRvdCI+PC9zcGFuPgogICAgICAgICAgICAgICR7dGhpcy5kb21haW4uc3RhdHVzLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3RoaXMuZG9tYWluLnN0YXR1cy5zbGljZSgxKX0KICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkb21haW4tbWV0YSI+CiAgICAgICAgICAgICR7dGhpcy5kb21haW4udmVyaWZpZWQ/d2AKICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idmVyaWZpZWQtYmFkZ2UiPgogICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjIgMTEuMDhWMTJhMTAgMTAgMCAxIDEtNS45My05LjE0Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9IjIyIDQgMTIgMTQuMDEgOSAxMS4wMSI+PC9wb2x5bGluZT4KICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgVmVyaWZpZWQKICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIGA6d2A8c3Bhbj5Ob3QgdmVyaWZpZWQ8L3NwYW4+YH0KICAgICAgICAgICAgPHNwYW4+QWRkZWQgJHt0aGlzLmRvbWFpbi5jcmVhdGVkQXR9PC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyLWFjdGlvbnMiPgogICAgICAgICAgJHt0aGlzLmRvbWFpbi52ZXJpZmllZD8iIjp3YAogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJhY3Rpb24tYnV0dG9uIiA/ZGlzYWJsZWQ9JHt0aGlzLmFjdGlvbkxvYWRpbmd9IEBjbGljaz0keygpPT50aGlzLmhhbmRsZVZlcmlmeSgpfT4KICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+CiAgICAgICAgICAgICAgICA8cG9seWxpbmUgcG9pbnRzPSIyMCA2IDkgMTcgNCAxMiI+PC9wb2x5bGluZT4KICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICBWZXJpZnkgRG9tYWluCiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgYH0KICAgICAgICAgIDxidXR0b24gY2xhc3M9ImFjdGlvbi1idXR0b24gZGFuZ2VyIiA/ZGlzYWJsZWQ9JHt0aGlzLmFjdGlvbkxvYWRpbmd9IEBjbGljaz0keygpPT50aGlzLmhhbmRsZURlbGV0ZSgpfT4KICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9IjMgNiA1IDYgMjEgNiI+PC9wb2x5bGluZT4KICAgICAgICAgICAgICA8cGF0aCBkPSJNMTkgNnYxNGEyIDIgMCAwIDEtMiAySDdhMiAyIDAgMCAxLTItMlY2bTMgMFY0YTIgMiAwIDAgMSAyLTJoNGEyIDIgMCAwIDEgMiAydjIiPjwvcGF0aD4KICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgIERlbGV0ZQogICAgICAgICAgPC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iZ3JpZCI+CiAgICAgICAgPCEtLSBDZXJ0aWZpY2F0ZSBTZWN0aW9uIC0tPgogICAgICAgIDxkZWVzLXRpbGU+CiAgICAgICAgICA8ZGl2IHNsb3Q9ImhlYWRlciIgY2xhc3M9InNlY3Rpb24taGVhZGVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+CiAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgICAgICAgICAgICAgPHJlY3QgeD0iMyIgeT0iMTEiIHdpZHRoPSIxOCIgaGVpZ2h0PSIxMSIgcng9IjIiIHJ5PSIyIj48L3JlY3Q+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNyAxMVY3YTUgNSAwIDAgMSAxMCAwdjQiPjwvcGF0aD4KICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICBTU0wgQ2VydGlmaWNhdGUKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tY29udGVudCI+CiAgICAgICAgICAgICR7dGhpcy5jZXJ0aWZpY2F0ZT93YAogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNlcnQtc3RhdHVzICR7dGhpcy5jZXJ0aWZpY2F0ZS5zdGF0dXN9Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNlcnQtaWNvbiAke3RoaXMuY2VydGlmaWNhdGUuc3RhdHVzfSI+CiAgICAgICAgICAgICAgICAgICR7dGhpcy5jZXJ0aWZpY2F0ZS5zdGF0dXM9PT0idmFsaWQiP3dgCiAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTIyIDExLjA4VjEyYTEwIDEwIDAgMSAxLTUuOTMtOS4xNCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgPHBvbHlsaW5lIHBvaW50cz0iMjIgNCAxMiAxNC4wMSA5IDExLjAxIj48L3BvbHlsaW5lPgogICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICBgOnRoaXMuY2VydGlmaWNhdGUuc3RhdHVzPT09ImV4cGlyaW5nIj93YAogICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjEwIj48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgIDxsaW5lIHgxPSIxMiIgeTE9IjgiIHgyPSIxMiIgeTI9IjEyIj48L2xpbmU+CiAgICAgICAgICAgICAgICAgICAgICA8bGluZSB4MT0iMTIiIHkxPSIxNiIgeDI9IjEyLjAxIiB5Mj0iMTYiPjwvbGluZT4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgYDp3YAogICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjEwIj48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgIDxsaW5lIHgxPSIxNSIgeTE9IjkiIHgyPSI5IiB5Mj0iMTUiPjwvbGluZT4KICAgICAgICAgICAgICAgICAgICAgIDxsaW5lIHgxPSI5IiB5MT0iOSIgeDI9IjE1IiB5Mj0iMTUiPjwvbGluZT4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgYH0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2VydC1pbmZvIj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2VydC10aXRsZSI+JHt0aGlzLmNlcnRpZmljYXRlLnN0YXR1cz09PSJ2YWxpZCI/IkNlcnRpZmljYXRlIFZhbGlkIjp0aGlzLmNlcnRpZmljYXRlLnN0YXR1cz09PSJleHBpcmluZyI/IkNlcnRpZmljYXRlIEV4cGlyaW5nIFNvb24iOiJDZXJ0aWZpY2F0ZSBFeHBpcmVkIn08L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2VydC1zdWJ0aXRsZSI+SXNzdWVkIGJ5ICR7dGhpcy5jZXJ0aWZpY2F0ZS5pc3N1ZXJ9PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNlcnQtZGF5cyAke3RoaXMuY2VydGlmaWNhdGUuc3RhdHVzfSI+JHtNYXRoLmFicyh0aGlzLmNlcnRpZmljYXRlLmRheXNSZW1haW5pbmcpfTwvZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjZXJ0LWRheXMtbGFiZWwiPiR7dGhpcy5jZXJ0aWZpY2F0ZS5kYXlzUmVtYWluaW5nPj0wPyJkYXlzIGxlZnQiOiJkYXlzIGFnbyJ9PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5mby1yb3ciPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImluZm8tbGFiZWwiPlZhbGlkIEZyb208L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaW5mby12YWx1ZSI+JHt0aGlzLmNlcnRpZmljYXRlLnZhbGlkRnJvbX08L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5mby1yb3ciPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImluZm8tbGFiZWwiPlZhbGlkIFVudGlsPC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImluZm8tdmFsdWUiPiR7dGhpcy5jZXJ0aWZpY2F0ZS52YWxpZFVudGlsfTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvLXJvdyI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaW5mby1sYWJlbCI+QXV0by1SZW5ldzwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpbmZvLXZhbHVlICR7dGhpcy5jZXJ0aWZpY2F0ZS5hdXRvUmVuZXc/ImVuYWJsZWQiOiIifSI+JHt0aGlzLmNlcnRpZmljYXRlLmF1dG9SZW5ldz8iRW5hYmxlZCI6IkRpc2FibGVkIn08L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgJHt0aGlzLmNlcnRpZmljYXRlLmNoYWluJiZ0aGlzLmNlcnRpZmljYXRlLmNoYWluLmxlbmd0aD4wP3dgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvLXJvdyI+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpbmZvLWxhYmVsIj5DZXJ0aWZpY2F0ZSBDaGFpbjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2hhaW4tbGlzdCI+CiAgICAgICAgICAgICAgICAgICAgJHt0aGlzLmNlcnRpZmljYXRlLmNoYWluLm1hcChNPT53YDxzcGFuIGNsYXNzPSJjaGFpbi1iYWRnZSI+JHtNfTwvc3Bhbj5gKX0KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICBgOiIifQogICAgICAgICAgICBgOndgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZW1wdHktc3RhdGUiPk5vIGNlcnRpZmljYXRlIGNvbmZpZ3VyZWQ8L2Rpdj4KICAgICAgICAgICAgYH0KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgJHt0aGlzLmNlcnRpZmljYXRlP3dgCiAgICAgICAgICAgIDxkaXYgc2xvdD0iZm9vdGVyIiBjbGFzcz0ic2VjdGlvbi1mb290ZXIiPgogICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InRpbGUtYnV0dG9uIHByaW1hcnkiIEBjbGljaz0keygpPT50aGlzLmhhbmRsZVJlbmV3Q2VydGlmaWNhdGUoKX0+UmVuZXc8L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgOiIifQogICAgICAgIDwvZGVlcy10aWxlPgoKICAgICAgICA8IS0tIFByb3h5IFJvdXRlcyBTZWN0aW9uIC0tPgogICAgICAgIDxkZWVzLXRpbGU+CiAgICAgICAgICA8ZGl2IHNsb3Q9ImhlYWRlciIgY2xhc3M9InNlY3Rpb24taGVhZGVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+CiAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgICAgICAgICAgICAgPHBvbHlsaW5lIHBvaW50cz0iMTYgMyAyMSAzIDIxIDgiPjwvcG9seWxpbmU+CiAgICAgICAgICAgICAgICA8bGluZSB4MT0iNCIgeTE9IjIwIiB4Mj0iMjEiIHkyPSIzIj48L2xpbmU+CiAgICAgICAgICAgICAgICA8cG9seWxpbmUgcG9pbnRzPSIyMSAxNiAyMSAyMSAxNiAyMSI+PC9wb2x5bGluZT4KICAgICAgICAgICAgICAgIDxsaW5lIHgxPSIxNSIgeTE9IjE1IiB4Mj0iMjEiIHkyPSIyMSI+PC9saW5lPgogICAgICAgICAgICAgICAgPGxpbmUgeDE9IjQiIHkxPSI0IiB4Mj0iOSIgeTI9IjkiPjwvbGluZT4KICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICBQcm94eSBSb3V0ZXMKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tY29udGVudCI+CiAgICAgICAgICAgICR7dGhpcy5kb21haW4ucHJveHlSb3V0ZXMmJnRoaXMuZG9tYWluLnByb3h5Um91dGVzLmxlbmd0aD4wP3dgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm91dGVzLWxpc3QiPgogICAgICAgICAgICAgICAgJHt0aGlzLmRvbWFpbi5wcm94eVJvdXRlcy5tYXAoTT0+d2AKICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJvdXRlLWJhZGdlIj4ke019PC9zcGFuPgogICAgICAgICAgICAgICAgYCl9CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGA6d2AKICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbXB0eS1zdGF0ZSI+Tm8gcHJveHkgcm91dGVzIGNvbmZpZ3VyZWQ8L2Rpdj4KICAgICAgICAgICAgYH0KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGVlcy10aWxlPgoKICAgICAgICA8IS0tIEROUyBSZWNvcmRzIFNlY3Rpb24gLS0+CiAgICAgICAgPGRlZXMtdGlsZSBjbGFzcz0iZnVsbC13aWR0aCI+CiAgICAgICAgICA8ZGl2IHNsb3Q9ImhlYWRlciIgY2xhc3M9InNlY3Rpb24taGVhZGVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+CiAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMTAiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgPGxpbmUgeDE9IjIiIHkxPSIxMiIgeDI9IjIyIiB5Mj0iMTIiPjwvbGluZT4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMiAyYTE1LjMgMTUuMyAwIDAgMSA0IDEwIDE1LjMgMTUuMyAwIDAgMS00IDEwIDE1LjMgMTUuMyAwIDAgMS00LTEwIDE1LjMgMTUuMyAwIDAgMSA0LTEweiI+PC9wYXRoPgogICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgIEROUyBSZWNvcmRzCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWNvbnRlbnQiPgogICAgICAgICAgICAke3RoaXMuZG5zUmVjb3Jkcy5sZW5ndGg+MD93YAogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRucy10YWJsZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkbnMtaGVhZGVyIj4KICAgICAgICAgICAgICAgICAgPHNwYW4+VHlwZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPHNwYW4+TmFtZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPHNwYW4+VmFsdWU8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxzcGFuPlRUTDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAke3RoaXMuZG5zUmVjb3Jkcy5tYXAoTT0+d2AKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG5zLXJvdyI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRucy10eXBlIj4ke00udHlwZX08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRucy1uYW1lIj4ke00ubmFtZX08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRucy12YWx1ZSIgdGl0bGU9IiR7TS52YWx1ZX0iPiR7TS5wcmlvcml0eT9gJHtNLnByaW9yaXR5fSBgOiIifSR7TS52YWx1ZX08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRucy10dGwiPiR7TS50dGx9czwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZG5zLWFjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iaWNvbi1idXR0b24iIHRpdGxlPSJFZGl0IiBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVFZGl0RG5zUmVjb3JkKE0pfT4KICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMSA0SDRhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YTIgMiAwIDAgMCAyLTJ2LTciPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTguNSAyLjVhMi4xMjEgMi4xMjEgMCAwIDEgMyAzTDEyIDE1bC00IDEgMS00IDkuNS05LjV6Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJpY29uLWJ1dHRvbiBkYW5nZXIiIHRpdGxlPSJEZWxldGUiIEBjbGljaz0keygpPT50aGlzLmhhbmRsZURlbGV0ZURuc1JlY29yZChNKX0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8cG9seWxpbmUgcG9pbnRzPSIzIDYgNSA2IDIxIDYiPjwvcG9seWxpbmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE5IDZ2MTRhMiAyIDAgMCAxLTIgMkg3YTIgMiAwIDAgMS0yLTJWNm0zIDBWNGEyIDIgMCAwIDEgMi0yaDRhMiAyIDAgMCAxIDIgMnYyIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIGApfQogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICBgOndgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZW1wdHktc3RhdGUiPk5vIEROUyByZWNvcmRzIGNvbmZpZ3VyZWQ8L2Rpdj4KICAgICAgICAgICAgYH0KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBzbG90PSJmb290ZXIiIGNsYXNzPSJzZWN0aW9uLWZvb3RlciI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InRpbGUtYnV0dG9uIHByaW1hcnkiIEBjbGljaz0keygpPT50aGlzLmhhbmRsZUFkZERuc1JlY29yZCgpfT4KICAgICAgICAgICAgICA8c3ZnIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgICAgIDxsaW5lIHgxPSIxMiIgeTE9IjUiIHgyPSIxMiIgeTI9IjE5Ij48L2xpbmU+CiAgICAgICAgICAgICAgICA8bGluZSB4MT0iNSIgeTE9IjEyIiB4Mj0iMTkiIHkyPSIxMiI+PC9saW5lPgogICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgIEFkZCBSZWNvcmQKICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2RlZXMtdGlsZT4KICAgICAgPC9kaXY+CiAgICBgOndgPGRpdiBjbGFzcz0iZW1wdHktc3RhdGUiPk5vIGRvbWFpbiBzZWxlY3RlZDwvZGl2PmB9aGFuZGxlVmVyaWZ5KCl7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgidmVyaWZ5LWRvbWFpbiIse2RldGFpbDp0aGlzLmRvbWFpbixidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZURlbGV0ZSgpe3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImRlbGV0ZS1kb21haW4iLHtkZXRhaWw6dGhpcy5kb21haW4sYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1oYW5kbGVSZW5ld0NlcnRpZmljYXRlKCl7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgicmVuZXctY2VydGlmaWNhdGUiLHtkZXRhaWw6dGhpcy5jZXJ0aWZpY2F0ZSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZUFkZERuc1JlY29yZCgpe3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImFkZC1kbnMtcmVjb3JkIix7ZGV0YWlsOnRoaXMuZG9tYWluLGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9aGFuZGxlRWRpdERuc1JlY29yZChNKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJlZGl0LWRucy1yZWNvcmQiLHtkZXRhaWw6TSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZURlbGV0ZURuc1JlY29yZChNKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJkZWxldGUtZG5zLXJlY29yZCIse2RldGFpbDpNLGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLCR1KHRoaXMsZil9c3RhdGljeyR1KGEsdCl9fTtyZXR1cm4geT1hfSkoKX0pO3ZhciB3USxEdSxKUWEsbjlhPWcoKCk9PntwZSgpO3dRPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxEdT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sSlFhPSgoKT0+e2xldCBzPVtuZSgic3otbXRhLWxpc3QtdmlldyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdO3ZhciB5PWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJTek10YUxpc3RWaWV3Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IE09dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpBcnJheX0pXSxwPVtZKCldLGM9W1koKV0seD1bWSgpXSx3USh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImVtYWlscyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4iZW1haWxzImluIHosImhhcyIpLGdldDppKHo9PnouZW1haWxzLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3ouZW1haWxzPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sbyxsKSx3USh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlYXJjaFF1ZXJ5IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJzZWFyY2hRdWVyeSJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LnNlYXJjaFF1ZXJ5LCJnZXQiKSxzZXQ6aSgoeixOKT0+e3ouc2VhcmNoUXVlcnk9Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxkLHUpLHdRKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic3RhdHVzRmlsdGVyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJzdGF0dXNGaWx0ZXIiaW4geiwiaGFzIiksZ2V0Omkoej0+ei5zdGF0dXNGaWx0ZXIsImdldCIpLHNldDppKCh6LE4pPT57ei5zdGF0dXNGaWx0ZXI9Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxiLHYpLHdRKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZGlyZWN0aW9uRmlsdGVyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJkaXJlY3Rpb25GaWx0ZXIiaW4geiwiaGFzIiksZ2V0Omkoej0+ei5kaXJlY3Rpb25GaWx0ZXIsImdldCIpLHNldDppKCh6LE4pPT57ei5kaXJlY3Rpb25GaWx0ZXI9Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxtLGYpLHdRKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOk19LG51bGwsdCkseT1hPWUudmFsdWUsTSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpNfSl9c3RhdGljIGRlbW89aSgoKT0+d2AKICAgIDxkaXYgc3R5bGU9InBhZGRpbmc6IDI0cHg7IG1heC13aWR0aDogMTIwMHB4OyI+CiAgICAgIDxzei1tdGEtbGlzdC12aWV3CiAgICAgICAgLmVtYWlscz0ke1t7aWQ6IjEiLGRpcmVjdGlvbjoib3V0Ym91bmQiLHN0YXR1czoiZGVsaXZlcmVkIixmcm9tOiJub3JlcGx5QHNlcnZlLnpvbmUiLHRvOiJ1c2VyQGV4YW1wbGUuY29tIixzdWJqZWN0OiJXZWxjb21lIHRvIHNlcnZlLnpvbmUiLHRpbWVzdGFtcDoiMjAyNC0wMS0xNSAxNDozMDoyMiIsbWVzc2FnZUlkOiI8YWJjMTIzQHNlcnZlLnpvbmU+IixzaXplOiIxMi40IEtCIn0se2lkOiIyIixkaXJlY3Rpb246Im91dGJvdW5kIixzdGF0dXM6ImJvdW5jZWQiLGZyb206ImFsZXJ0c0BzZXJ2ZS56b25lIix0bzoiaW52YWxpZEBub3doZXJlLnRlc3QiLHN1YmplY3Q6IlNlcnZpY2UgQWxlcnQ6IENQVSBVc2FnZSBIaWdoIix0aW1lc3RhbXA6IjIwMjQtMDEtMTUgMTQ6Mjg6MTAiLG1lc3NhZ2VJZDoiPGRlZjQ1NkBzZXJ2ZS56b25lPiIsc2l6ZToiOC4yIEtCIn0se2lkOiIzIixkaXJlY3Rpb246ImluYm91bmQiLHN0YXR1czoiZGVsaXZlcmVkIixmcm9tOiJzdXBwb3J0QGN1c3RvbWVyLmNvbSIsdG86ImFkbWluQHNlcnZlLnpvbmUiLHN1YmplY3Q6IlJlOiBJbmZyYXN0cnVjdHVyZSBSZXZpZXciLHRpbWVzdGFtcDoiMjAyNC0wMS0xNSAxNDoyNTowMCIsbWVzc2FnZUlkOiI8Z2hpNzg5QGN1c3RvbWVyLmNvbT4iLHNpemU6IjI0LjEgS0IifSx7aWQ6IjQiLGRpcmVjdGlvbjoib3V0Ym91bmQiLHN0YXR1czoicmVqZWN0ZWQiLGZyb206ImJpbGxpbmdAc2VydmUuem9uZSIsdG86ImJsb2NrZWRAc3BhbS1kb21haW4udGVzdCIsc3ViamVjdDoiSW52b2ljZSAjMjAyNC0wMDEiLHRpbWVzdGFtcDoiMjAyNC0wMS0xNSAxNDoyMDo0NSIsbWVzc2FnZUlkOiI8amtsMDEyQHNlcnZlLnpvbmU+IixzaXplOiI0NS42IEtCIn0se2lkOiI1IixkaXJlY3Rpb246Im91dGJvdW5kIixzdGF0dXM6ImRlZmVycmVkIixmcm9tOiJub3JlcGx5QHNlcnZlLnpvbmUiLHRvOiJzbG93QHJlbW90ZS1zZXJ2ZXIudGVzdCIsc3ViamVjdDoiUGFzc3dvcmQgUmVzZXQgUmVxdWVzdCIsdGltZXN0YW1wOiIyMDI0LTAxLTE1IDE0OjE1OjMwIixtZXNzYWdlSWQ6Ijxtbm8zNDVAc2VydmUuem9uZT4iLHNpemU6IjYuOCBLQiJ9LHtpZDoiNiIsZGlyZWN0aW9uOiJpbmJvdW5kIixzdGF0dXM6ImRlbGl2ZXJlZCIsZnJvbToiY2lAZ2l0aHViLmNvbSIsdG86ImRldm9wc0BzZXJ2ZS56b25lIixzdWJqZWN0OiJCdWlsZCAjNDUyMSBwYXNzZWQiLHRpbWVzdGFtcDoiMjAyNC0wMS0xNSAxNDoxMDowMCIsbWVzc2FnZUlkOiI8cHFyNjc4QGdpdGh1Yi5jb20+IixzaXplOiIxNS4zIEtCIn0se2lkOiI3IixkaXJlY3Rpb246Im91dGJvdW5kIixzdGF0dXM6InBlbmRpbmciLGZyb206InJlcG9ydHNAc2VydmUuem9uZSIsdG86InRlYW1Ac2VydmUuem9uZSIsc3ViamVjdDoiV2Vla2x5IEluZnJhc3RydWN0dXJlIFJlcG9ydCIsdGltZXN0YW1wOiIyMDI0LTAxLTE1IDE0OjA1OjAwIixtZXNzYWdlSWQ6IjxzdHU5MDFAc2VydmUuem9uZT4iLHNpemU6IjEwMi43IEtCIn1dfQogICAgICA+PC9zei1tdGEtbGlzdC12aWV3PgogICAgPC9kaXY+CiAgYCwiZGVtbyIpO3N0YXRpYyBkZW1vR3JvdXBzPVsiTVRBIl07I2U9RHUodGhpcyxvLFtdKTtnZXQgZW1haWxzKCl7cmV0dXJuIHRoaXMuI2V9c2V0IGVtYWlscyhNKXt0aGlzLiNlPU19I3Q9KER1KHRoaXMsbCksRHUodGhpcyxkLCIiKSk7Z2V0IHNlYXJjaFF1ZXJ5KCl7cmV0dXJuIHRoaXMuI3R9c2V0IHNlYXJjaFF1ZXJ5KE0pe3RoaXMuI3Q9TX0jYT0oRHUodGhpcyx1KSxEdSh0aGlzLGIsImFsbCIpKTtnZXQgc3RhdHVzRmlsdGVyKCl7cmV0dXJuIHRoaXMuI2F9c2V0IHN0YXR1c0ZpbHRlcihNKXt0aGlzLiNhPU19I3M9KER1KHRoaXMsdiksRHUodGhpcyxtLCJhbGwiKSk7Z2V0IGRpcmVjdGlvbkZpbHRlcigpe3JldHVybiB0aGlzLiNzfXNldCBkaXJlY3Rpb25GaWx0ZXIoTSl7dGhpcy4jcz1NfWdldCBmaWx0ZXJlZEVtYWlscygpe3JldHVybiB0aGlzLmVtYWlscy5maWx0ZXIoTT0+e2lmKHRoaXMuc3RhdHVzRmlsdGVyIT09ImFsbCImJk0uc3RhdHVzIT09dGhpcy5zdGF0dXNGaWx0ZXJ8fHRoaXMuZGlyZWN0aW9uRmlsdGVyIT09ImFsbCImJk0uZGlyZWN0aW9uIT09dGhpcy5kaXJlY3Rpb25GaWx0ZXIpcmV0dXJuITE7aWYodGhpcy5zZWFyY2hRdWVyeSl7bGV0IHo9dGhpcy5zZWFyY2hRdWVyeS50b0xvd2VyQ2FzZSgpO3JldHVybiBNLmZyb20udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh6KXx8TS50by50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHopfHxNLnN1YmplY3QudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh6KXx8TS5tZXNzYWdlSWQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh6KX1yZXR1cm4hMH0pfXN0YXRpYyBzdHlsZXM9W2guZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KCiAgICAgIC5maWx0ZXItYmFyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICB9CgogICAgICAuc2VhcmNoLWlucHV0IHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG1pbi13aWR0aDogMjAwcHg7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDkwOTBiIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTRlNGU3IiwiIzI3MjcyYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMjAwbXMgZWFzZTsKICAgICAgfQoKICAgICAgLnNlYXJjaC1pbnB1dDo6cGxhY2Vob2xkZXIgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2ExYTFhYSIsIiM1MjUyNWIiKX07CiAgICAgIH0KCiAgICAgIC5zZWFyY2gtaW5wdXQ6Zm9jdXMgewogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiMyNTYzZWIiLCIjM2I4MmY2Iil9OwogICAgICB9CgogICAgICAuY2hpcC1ncm91cCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBnYXA6IDRweDsKICAgICAgfQoKICAgICAgLmNoaXAgewogICAgICAgIHBhZGRpbmc6IDZweCAxMnB4OwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTRlNGU3IiwiIzI3MjcyYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA5OTk5cHg7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDIwMG1zIGVhc2U7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgLmNoaXA6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzE4MTgxYiIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAuY2hpcC5hY3RpdmUgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNmYWZhZmEiLCIjMTgxODFiIil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAucmVzdWx0cy1jb3VudCB7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDsKICAgICAgfQoKICAgICAgLnRhYmxlLWNvbnRhaW5lciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDkwOTBiIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTRlNGU3IiwiIzI3MjcyYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLnRhYmxlLWhlYWRlciB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDQwcHggOTBweCAxLjVmciAxLjVmciAyZnIgMTQwcHg7CiAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgIHBhZGRpbmc6IDEycHggMTZweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMxODE4MWIiKX07CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTRlNGU3IiwiIzI3MjcyYSIpfTsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQoKICAgICAgLnRhYmxlLXJvdyB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDQwcHggOTBweCAxLjVmciAxLjVmciAyZnIgMTQwcHg7CiAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgIHBhZGRpbmc6IDEycHggMTZweDsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMjcyNzJhIil9OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMjAwbXMgZWFzZTsKICAgICAgfQoKICAgICAgLnRhYmxlLXJvdzpsYXN0LWNoaWxkIHsKICAgICAgICBib3JkZXItYm90dG9tOiBub25lOwogICAgICB9CgogICAgICAudGFibGUtcm93OmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMxODE4MWIiKX07CiAgICAgIH0KCiAgICAgIC5kaXJlY3Rpb24taWNvbiB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICB9CgogICAgICAuZGlyZWN0aW9uLWljb24uaW5ib3VuZCB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTZhMzRhIiwiIzIyYzU1ZSIpfTsKICAgICAgfQoKICAgICAgLmRpcmVjdGlvbi1pY29uLm91dGJvdW5kIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMyNTYzZWIiLCIjNjBhNWZhIil9OwogICAgICB9CgogICAgICAuc3RhdHVzLWJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDJweCA4cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5OXB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICB9CgogICAgICAuc3RhdHVzLWJhZGdlLmRlbGl2ZXJlZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNkY2ZjZTciLCJyZ2JhKDM0LCAxOTcsIDk0LCAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE2YTM0YSIsIiMyMmM1NWUiKX07CiAgICAgIH0KCiAgICAgIC5zdGF0dXMtYmFkZ2UuYm91bmNlZCwKICAgICAgLnN0YXR1cy1iYWRnZS5yZWplY3RlZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZWUyZTIiLCJyZ2JhKDIzOSwgNjgsIDY4LCAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2RjMjYyNiIsIiNlZjQ0NDQiKX07CiAgICAgIH0KCiAgICAgIC5zdGF0dXMtYmFkZ2UuZGVmZXJyZWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmVmOWMzIiwicmdiYSgyNTAsIDIwNCwgMjEsIDAuMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjY2E4YTA0IiwiI2ZhY2MxNSIpfTsKICAgICAgfQoKICAgICAgLnN0YXR1cy1iYWRnZS5wZW5kaW5nIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2RiZWFmZSIsInJnYmEoNTksIDEzMCwgMjQ2LCAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzI1NjNlYiIsIiM2MGE1ZmEiKX07CiAgICAgIH0KCiAgICAgIC5lbWFpbC1mcm9tLAogICAgICAuZW1haWwtdG8gewogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgLmVtYWlsLXN1YmplY3QgewogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICB9CgogICAgICAuZW1haWwtdGltZXN0YW1wIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CgogICAgICAuZW1wdHktc3RhdGUgewogICAgICAgIHBhZGRpbmc6IDQ4cHggMjRweDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQogICAgYF07cmVuZGVyKCl7bGV0IE09dGhpcy5maWx0ZXJlZEVtYWlscztyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iZmlsdGVyLWJhciI+CiAgICAgICAgPGlucHV0CiAgICAgICAgICBjbGFzcz0ic2VhcmNoLWlucHV0IgogICAgICAgICAgdHlwZT0idGV4dCIKICAgICAgICAgIHBsYWNlaG9sZGVyPSJTZWFyY2ggYnkgZnJvbSwgdG8sIHN1YmplY3QsIG9yIG1lc3NhZ2UgSUQuLi4iCiAgICAgICAgICAudmFsdWU9JHt0aGlzLnNlYXJjaFF1ZXJ5fQogICAgICAgICAgQGlucHV0PSR7ej0+e3RoaXMuc2VhcmNoUXVlcnk9ei50YXJnZXQudmFsdWV9fQogICAgICAgIC8+CiAgICAgICAgPGRpdiBjbGFzcz0iY2hpcC1ncm91cCI+CiAgICAgICAgICAke1siYWxsIiwiaW5ib3VuZCIsIm91dGJvdW5kIl0ubWFwKHo9PndgCiAgICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgICBjbGFzcz0iY2hpcCAke3RoaXMuZGlyZWN0aW9uRmlsdGVyPT09ej8iYWN0aXZlIjoiIn0iCiAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9Pnt0aGlzLmRpcmVjdGlvbkZpbHRlcj16fX0KICAgICAgICAgICAgPiR7ej09PSJhbGwiPyJBbGwiOno9PT0iaW5ib3VuZCI/IkluYm91bmQiOiJPdXRib3VuZCJ9PC9idXR0b24+CiAgICAgICAgICBgKX0KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjaGlwLWdyb3VwIj4KICAgICAgICAgICR7WyJhbGwiLCJkZWxpdmVyZWQiLCJib3VuY2VkIiwicmVqZWN0ZWQiLCJkZWZlcnJlZCIsInBlbmRpbmciXS5tYXAoej0+d2AKICAgICAgICAgICAgPGJ1dHRvbgogICAgICAgICAgICAgIGNsYXNzPSJjaGlwICR7dGhpcy5zdGF0dXNGaWx0ZXI9PT16PyJhY3RpdmUiOiIifSIKICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+e3RoaXMuc3RhdHVzRmlsdGVyPXp9fQogICAgICAgICAgICA+JHt6PT09ImFsbCI/IkFsbCI6ei5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt6LnNsaWNlKDEpfTwvYnV0dG9uPgogICAgICAgICAgYCl9CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0icmVzdWx0cy1jb3VudCI+U2hvd2luZyAke00ubGVuZ3RofSBvZiAke3RoaXMuZW1haWxzLmxlbmd0aH0gZW1haWxzPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJ0YWJsZS1jb250YWluZXIiPgogICAgICAgIDxkaXYgY2xhc3M9InRhYmxlLWhlYWRlciI+CiAgICAgICAgICA8c3Bhbj48L3NwYW4+CiAgICAgICAgICA8c3Bhbj5TdGF0dXM8L3NwYW4+CiAgICAgICAgICA8c3Bhbj5Gcm9tPC9zcGFuPgogICAgICAgICAgPHNwYW4+VG88L3NwYW4+CiAgICAgICAgICA8c3Bhbj5TdWJqZWN0PC9zcGFuPgogICAgICAgICAgPHNwYW4+VGltZXN0YW1wPC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICAgICR7TS5sZW5ndGg+MD9NLm1hcCh6PT53YAogICAgICAgICAgPGRpdiBjbGFzcz0idGFibGUtcm93IiBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVFbWFpbENsaWNrKHopfT4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRpcmVjdGlvbi1pY29uICR7ei5kaXJlY3Rpb259Ij4KICAgICAgICAgICAgICAke3ouZGlyZWN0aW9uPT09ImluYm91bmQiP3dgPHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+PGxpbmUgeDE9IjEyIiB5MT0iNSIgeDI9IjEyIiB5Mj0iMTkiLz48cG9seWxpbmUgcG9pbnRzPSIxOSAxMiAxMiAxOSA1IDEyIi8+PC9zdmc+YDp3YDxzdmcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxsaW5lIHgxPSIxMiIgeTE9IjE5IiB4Mj0iMTIiIHkyPSI1Ii8+PHBvbHlsaW5lIHBvaW50cz0iNSAxMiAxMiA1IDE5IDEyIi8+PC9zdmc+YH0KICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8c3Bhbj48c3BhbiBjbGFzcz0ic3RhdHVzLWJhZGdlICR7ei5zdGF0dXN9Ij4ke3ouc3RhdHVzfTwvc3Bhbj48L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlbWFpbC1mcm9tIiB0aXRsZT0iJHt6LmZyb219Ij4ke3ouZnJvbX08L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlbWFpbC10byIgdGl0bGU9IiR7ei50b30iPiR7ei50b308L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlbWFpbC1zdWJqZWN0IiB0aXRsZT0iJHt6LnN1YmplY3R9Ij4ke3ouc3ViamVjdH08L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlbWFpbC10aW1lc3RhbXAiPiR7ei50aW1lc3RhbXB9PC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgYCk6d2AKICAgICAgICAgIDxkaXYgY2xhc3M9ImVtcHR5LXN0YXRlIj5ObyBlbWFpbHMgZm91bmQ8L2Rpdj4KICAgICAgICBgfQogICAgICA8L2Rpdj4KICAgIGB9aGFuZGxlRW1haWxDbGljayhNKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJlbWFpbC1jbGljayIse2RldGFpbDpNLGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLER1KHRoaXMsZil9c3RhdGlje0R1KGEsdCl9fTtyZXR1cm4geT1hfSkoKX0pO3ZhciBsOWEsdm90LGVKYSxjOWE9ZygoKT0+e3BlKCk7bDlhPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSx2b3Q9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LGVKYT0oKCk9PntsZXQgcz1bbmUoInN6LW10YS1kZXRhaWwtdmlldyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdO3ZhciBwPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJTek10YURldGFpbFZpZXciKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgZD10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOk9iamVjdH0pXSxsOWEodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJlbWFpbCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh1PT4iZW1haWwiaW4gdSwiaGFzIiksZ2V0OmkodT0+dS5lbWFpbCwiZ2V0Iiksc2V0OmkoKHUsYyk9Pnt1LmVtYWlsPWN9LCJzZXQiKX0sbWV0YWRhdGE6ZH0sbyxsKSxsOWEobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6ZH0sbnVsbCx0KSxwPWE9ZS52YWx1ZSxkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmR9KX1zdGF0aWMgZGVtbz1pKCgpPT53YAogICAgPGRpdiBzdHlsZT0icGFkZGluZzogMjRweDsgbWF4LXdpZHRoOiAxMjAwcHg7Ij4KICAgICAgPHN6LW10YS1kZXRhaWwtdmlldwogICAgICAgIC5lbWFpbD0ke3tpZDoiMSIsZGlyZWN0aW9uOiJvdXRib3VuZCIsc3RhdHVzOiJkZWxpdmVyZWQiLGZyb206Im5vcmVwbHlAc2VydmUuem9uZSIsdG86InVzZXJAZXhhbXBsZS5jb20iLHRvTGlzdDpbInVzZXJAZXhhbXBsZS5jb20iXSxzdWJqZWN0OiJXZWxjb21lIHRvIHNlcnZlLnpvbmUiLHRpbWVzdGFtcDoiMjAyNC0wMS0xNSAxNDozMDoyMiIsbWVzc2FnZUlkOiI8YWJjMTIzQHNlcnZlLnpvbmU+IixzaXplOiIxMi40IEtCIixzbXRwTG9nOlt7dGltZXN0YW1wOiIxNDozMDoyMCIsZGlyZWN0aW9uOiJjbGllbnQiLGNvbW1hbmQ6IkVITE8gbWFpbC5zZXJ2ZS56b25lIn0se3RpbWVzdGFtcDoiMTQ6MzA6MjAiLGRpcmVjdGlvbjoic2VydmVyIixjb21tYW5kOiIyNTAtbWFpbC5leGFtcGxlLmNvbSBIZWxsbyIscmVzcG9uc2VDb2RlOjI1MH0se3RpbWVzdGFtcDoiMTQ6MzA6MjAiLGRpcmVjdGlvbjoic2VydmVyIixjb21tYW5kOiIyNTAtU1RBUlRUTFMiLHJlc3BvbnNlQ29kZToyNTB9LHt0aW1lc3RhbXA6IjE0OjMwOjIwIixkaXJlY3Rpb246InNlcnZlciIsY29tbWFuZDoiMjUwIFNJWkUgNTI0Mjg4MDAiLHJlc3BvbnNlQ29kZToyNTB9LHt0aW1lc3RhbXA6IjE0OjMwOjIwIixkaXJlY3Rpb246ImNsaWVudCIsY29tbWFuZDoiU1RBUlRUTFMifSx7dGltZXN0YW1wOiIxNDozMDoyMSIsZGlyZWN0aW9uOiJzZXJ2ZXIiLGNvbW1hbmQ6IjIyMCBSZWFkeSB0byBzdGFydCBUTFMiLHJlc3BvbnNlQ29kZToyMjB9LHt0aW1lc3RhbXA6IjE0OjMwOjIxIixkaXJlY3Rpb246ImNsaWVudCIsY29tbWFuZDoiRUhMTyBtYWlsLnNlcnZlLnpvbmUifSx7dGltZXN0YW1wOiIxNDozMDoyMSIsZGlyZWN0aW9uOiJzZXJ2ZXIiLGNvbW1hbmQ6IjI1MC1tYWlsLmV4YW1wbGUuY29tIEhlbGxvIixyZXNwb25zZUNvZGU6MjUwfSx7dGltZXN0YW1wOiIxNDozMDoyMSIsZGlyZWN0aW9uOiJzZXJ2ZXIiLGNvbW1hbmQ6IjI1MC1BVVRIIFBMQUlOIExPR0lOIixyZXNwb25zZUNvZGU6MjUwfSx7dGltZXN0YW1wOiIxNDozMDoyMSIsZGlyZWN0aW9uOiJzZXJ2ZXIiLGNvbW1hbmQ6IjI1MCBTSVpFIDUyNDI4ODAwIixyZXNwb25zZUNvZGU6MjUwfSx7dGltZXN0YW1wOiIxNDozMDoyMSIsZGlyZWN0aW9uOiJjbGllbnQiLGNvbW1hbmQ6IkFVVEggUExBSU4gQUhWelpYSUFjR0Z6YzNkdmNtUT0ifSx7dGltZXN0YW1wOiIxNDozMDoyMSIsZGlyZWN0aW9uOiJzZXJ2ZXIiLGNvbW1hbmQ6IjIzNSAyLjcuMCBBdXRoZW50aWNhdGlvbiBzdWNjZXNzZnVsIixyZXNwb25zZUNvZGU6MjM1fSx7dGltZXN0YW1wOiIxNDozMDoyMSIsZGlyZWN0aW9uOiJjbGllbnQiLGNvbW1hbmQ6Ik1BSUwgRlJPTTo8bm9yZXBseUBzZXJ2ZS56b25lPiJ9LHt0aW1lc3RhbXA6IjE0OjMwOjIxIixkaXJlY3Rpb246InNlcnZlciIsY29tbWFuZDoiMjUwIE9LIixyZXNwb25zZUNvZGU6MjUwfSx7dGltZXN0YW1wOiIxNDozMDoyMSIsZGlyZWN0aW9uOiJjbGllbnQiLGNvbW1hbmQ6IlJDUFQgVE86PHVzZXJAZXhhbXBsZS5jb20+In0se3RpbWVzdGFtcDoiMTQ6MzA6MjEiLGRpcmVjdGlvbjoic2VydmVyIixjb21tYW5kOiIyNTAgQWNjZXB0ZWQiLHJlc3BvbnNlQ29kZToyNTB9LHt0aW1lc3RhbXA6IjE0OjMwOjIyIixkaXJlY3Rpb246ImNsaWVudCIsY29tbWFuZDoiREFUQSJ9LHt0aW1lc3RhbXA6IjE0OjMwOjIyIixkaXJlY3Rpb246InNlcnZlciIsY29tbWFuZDonMzU0IEVudGVyIG1lc3NhZ2UsIGVuZGluZyB3aXRoICIuIiBvbiBhIGxpbmUgYnkgaXRzZWxmJyxyZXNwb25zZUNvZGU6MzU0fSx7dGltZXN0YW1wOiIxNDozMDoyMiIsZGlyZWN0aW9uOiJjbGllbnQiLGNvbW1hbmQ6Ii4ifSx7dGltZXN0YW1wOiIxNDozMDoyMiIsZGlyZWN0aW9uOiJzZXJ2ZXIiLGNvbW1hbmQ6IjI1MCBPSyBpZD0xcFEyclMtMDAwM0FiLUM0IixyZXNwb25zZUNvZGU6MjUwfSx7dGltZXN0YW1wOiIxNDozMDoyMiIsZGlyZWN0aW9uOiJjbGllbnQiLGNvbW1hbmQ6IlFVSVQifSx7dGltZXN0YW1wOiIxNDozMDoyMiIsZGlyZWN0aW9uOiJzZXJ2ZXIiLGNvbW1hbmQ6IjIyMSBtYWlsLmV4YW1wbGUuY29tIGNsb3NpbmcgY29ubmVjdGlvbiIscmVzcG9uc2VDb2RlOjIyMX1dLGNvbm5lY3Rpb25JbmZvOntzb3VyY2VJcDoiMTAuMC4xLjUwIixzb3VyY2VIb3N0bmFtZToibWFpbC5zZXJ2ZS56b25lIixkZXN0aW5hdGlvbklwOiI5My4xODQuMjE2LjM0IixkZXN0aW5hdGlvblBvcnQ6MjUsdGxzVmVyc2lvbjoiVExTdjEuMyIsdGxzQ2lwaGVyOiJUTFNfQUVTXzI1Nl9HQ01fU0hBMzg0IixhdXRoZW50aWNhdGVkOiEwLGF1dGhNZXRob2Q6IlBMQUlOIixhdXRoVXNlcjoibm9yZXBseUBzZXJ2ZS56b25lIn0sYXV0aGVudGljYXRpb25SZXN1bHRzOntzcGY6InBhc3MiLHNwZkRvbWFpbjoic2VydmUuem9uZSIsZGtpbToicGFzcyIsZGtpbURvbWFpbjoic2VydmUuem9uZSIsZG1hcmM6InBhc3MiLGRtYXJjUG9saWN5OiJyZWplY3QifSxoZWFkZXJzOntGcm9tOiJub3JlcGx5QHNlcnZlLnpvbmUiLFRvOiJ1c2VyQGV4YW1wbGUuY29tIixTdWJqZWN0OiJXZWxjb21lIHRvIHNlcnZlLnpvbmUiLERhdGU6Ik1vbiwgMTUgSmFuIDIwMjQgMTQ6MzA6MjIgKzAwMDAiLCJNSU1FLVZlcnNpb24iOiIxLjAiLCJDb250ZW50LVR5cGUiOiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgifSxib2R5Oic8aHRtbD5cXG48aGVhZD48dGl0bGU+V2VsY29tZTwvdGl0bGU+PC9oZWFkPlxcbjxib2R5PlxcbiAgPGgxPldlbGNvbWUgdG8gc2VydmUuem9uZSE8L2gxPlxcbiAgPHA+WW91ciBhY2NvdW50IGhhcyBiZWVuIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LjwvcD5cXG4gIDxhIGhyZWY9Imh0dHBzOi8vc2VydmUuem9uZS9kYXNoYm9hcmQiPkdvIHRvIERhc2hib2FyZDwvYT5cXG48L2JvZHk+XFxuPC9odG1sPid9fQogICAgICA+PC9zei1tdGEtZGV0YWlsLXZpZXc+CiAgICA8L2Rpdj4KICBgLCJkZW1vIik7c3RhdGljIGRlbW9Hcm91cHM9WyJNVEEiXTsjZT12b3QodGhpcyxvLG51bGwpO2dldCBlbWFpbCgpe3JldHVybiB0aGlzLiNlfXNldCBlbWFpbChkKXt0aGlzLiNlPWR9c3RhdGljIHN0eWxlcz1baC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgLmhlYWRlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMTZweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgICB9CgogICAgICAuYmFjay1saW5rIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAyMDBtcyBlYXNlOwogICAgICB9CgogICAgICAuYmFjay1saW5rOmhvdmVyIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAuZW1haWwtaGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgIH0KCiAgICAgIC5lbWFpbC1zdWJqZWN0IHsKICAgICAgICBmb250LXNpemU6IDI0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICAgIG1hcmdpbjogMDsKICAgICAgfQoKICAgICAgLmJhZGdlLWdyb3VwIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGdhcDogOHB4OwogICAgICB9CgogICAgICAuc3RhdHVzLWJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDRweCAxMnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OTlweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgfQoKICAgICAgLnN0YXR1cy1iYWRnZS5kZWxpdmVyZWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZGNmY2U3IiwicmdiYSgzNCwgMTk3LCA5NCwgMC4yKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxNmEzNGEiLCIjMjJjNTVlIil9OwogICAgICB9CgogICAgICAuc3RhdHVzLWJhZGdlLmJvdW5jZWQsCiAgICAgIC5zdGF0dXMtYmFkZ2UucmVqZWN0ZWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmVlMmUyIiwicmdiYSgyMzksIDY4LCA2OCwgMC4yKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNkYzI2MjYiLCIjZWY0NDQ0Iil9OwogICAgICB9CgogICAgICAuc3RhdHVzLWJhZGdlLmRlZmVycmVkIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZlZjljMyIsInJnYmEoMjUwLCAyMDQsIDIxLCAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2NhOGEwNCIsIiNmYWNjMTUiKX07CiAgICAgIH0KCiAgICAgIC5zdGF0dXMtYmFkZ2UucGVuZGluZyB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNkYmVhZmUiLCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC4yKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMyNTYzZWIiLCIjNjBhNWZhIil9OwogICAgICB9CgogICAgICAuZGlyZWN0aW9uLWJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNHB4OwogICAgICAgIHBhZGRpbmc6IDRweCAxMnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OTlweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgfQoKICAgICAgLmRpcmVjdGlvbi1iYWRnZS5pbmJvdW5kIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2RjZmNlNyIsInJnYmEoMzQsIDE5NywgOTQsIDAuMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTZhMzRhIiwiIzIyYzU1ZSIpfTsKICAgICAgfQoKICAgICAgLmRpcmVjdGlvbi1iYWRnZS5vdXRib3VuZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNkYmVhZmUiLCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC4yKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMyNTYzZWIiLCIjNjBhNWZhIil9OwogICAgICB9CgogICAgICAuY29udGVudCB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKICAgICAgICBnYXA6IDI0cHg7CiAgICAgIH0KCiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHsKICAgICAgICAuY29udGVudCB7CiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDJmciAxZnI7CiAgICAgICAgfQogICAgICB9CgogICAgICAubWFpbi1jb250ZW50IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiAyNHB4OwogICAgICB9CgogICAgICAuc2lkZWJhciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMjRweDsKICAgICAgfQoKICAgICAgLmNhcmQtaGVhZGVyIHsKICAgICAgICBoZWlnaHQ6IDM2cHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAuY2FyZC1oZWFkaW5nIHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIG1pbi13aWR0aDogMDsKICAgICAgfQoKICAgICAgLmNhcmQtdGl0bGUgewogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgIH0KCiAgICAgIC5jYXJkLXN1YnRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICB9CgogICAgICAuY2FyZC1mb290ZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAwOwogICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAudGlsZS1idXR0b24gewogICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1zdWJ0bGUpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4OwogICAgICB9CgogICAgICAudGlsZS1idXR0b246Zmlyc3QtY2hpbGQgewogICAgICAgIGJvcmRlci1sZWZ0OiBub25lOwogICAgICB9CgogICAgICAudGlsZS1idXR0b246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItaG92ZXIpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIH0KCiAgICAgIC50aWxlLWJ1dHRvbi5wcmltYXJ5IHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTcuMiA5MS4yJSA1OS44JSkiLCJoc2woMjEzLjEgOTMuOSUgNjcuOCUpIil9OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIH0KCiAgICAgIC50aWxlLWJ1dHRvbi5wcmltYXJ5OmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxNy4yIDkxLjIlIDU5LjglIC8gMC4wOCkiLCJoc2woMjEzLjEgOTMuOSUgNjcuOCUgLyAwLjA4KSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTcuMiA5MS4yJSA1MCUpIiwiaHNsKDIxMy4xIDkzLjklIDc1JSkiKX07CiAgICAgIH0KCiAgICAgIC5jYXJkLWNvbnRlbnQgewogICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgIH0KCiAgICAgIC5kZXRhaWwtbGlzdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMTJweDsKICAgICAgfQoKICAgICAgLmRldGFpbC1pdGVtIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgfQoKICAgICAgLmRldGFpbC1sYWJlbCB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC5kZXRhaWwtdmFsdWUgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDsKICAgICAgfQoKICAgICAgLnNtdHAtbG9nLWNvbnRhaW5lciB7CiAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgICBmb250LWZhbWlseTogJ1NGIE1vbm8nLCBNb25hY28sICdDYXNjYWRpYSBDb2RlJywgbW9ub3NwYWNlOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIG1heC1oZWlnaHQ6IDUwMHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmYWZhZmEiLCIjMGEwYTBhIil9OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBzY3JvbGxiYXItd2lkdGg6IHRoaW47CiAgICAgICAgc2Nyb2xsYmFyLWNvbG9yOiAke2guYmRUaGVtZSgiI2Q0ZDRkOCIsIiMzZjNmNDYiKX0gdHJhbnNwYXJlbnQ7CiAgICAgIH0KCiAgICAgIC5zbXRwLWxvZy1jb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFyIHsKICAgICAgICB3aWR0aDogNnB4OwogICAgICB9CgogICAgICAuc210cC1sb2ctY29udGFpbmVyOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgIH0KCiAgICAgIC5zbXRwLWxvZy1jb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Q0ZDRkOCIsIiMzZjNmNDYiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICB9CgogICAgICAvKiBQaGFzZSBzZXBhcmF0b3JzICovCiAgICAgIC5zbXRwLXBoYXNlLXNlcGFyYXRvciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMTJweDsKICAgICAgICBwYWRkaW5nOiA0cHggMDsKICAgICAgICBtYXJnaW46IDRweCAwOwogICAgICB9CgogICAgICAuc210cC1waGFzZS1saW5lIHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIGhlaWdodDogMXB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZTRlNGU3IiwiIzI3MjcyYSIpfTsKICAgICAgfQoKICAgICAgLnNtdHAtcGhhc2UtbGFiZWwgewogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2ExYTFhYSIsIiM1MjUyNWIiKX07CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgLyogQ2hhdCBidWJibGVzICovCiAgICAgIC5zbXRwLWJ1YmJsZSB7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIHBhZGRpbmc6IDEwcHggMTRweDsKICAgICAgICBtYXgtd2lkdGg6IDcwJTsKICAgICAgfQoKICAgICAgLnNtdHAtYnViYmxlLmNsaWVudCB7CiAgICAgICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSg1OSwgMTMwLCAyNDYsIDAuMDgpIiwicmdiYSg1OSwgMTMwLCAyNDYsIDAuMTIpIil9OwogICAgICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgJHtoLmJkVGhlbWUoIiMzYjgyZjYiLCIjNjBhNWZhIil9OwogICAgICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgICAgfQoKICAgICAgLnNtdHAtYnViYmxlLnNlcnZlciB7CiAgICAgICAgYWxpZ24tc2VsZjogZmxleC1lbmQ7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMzQsIDE5NywgOTQsIDAuMDYpIiwicmdiYSgzNCwgMTk3LCA5NCwgMC4xMCkiKX07CiAgICAgICAgYm9yZGVyLXJpZ2h0OiAzcHggc29saWQgJHtoLmJkVGhlbWUoIiMyMmM1NWUiLCIjNGFkZTgwIil9OwogICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICB9CgogICAgICAuc210cC1idWJibGUtY29tbWFuZCB7CiAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAuc210cC1idWJibGUtbWV0YSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4OwogICAgICAgIG1hcmdpbi10b3A6IDRweDsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjYTFhMWFhIiwiIzUyNTI1YiIpfTsKICAgICAgfQoKICAgICAgLnNtdHAtYnViYmxlLnNlcnZlciAuc210cC1idWJibGUtbWV0YSB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgfQoKICAgICAgLnNtdHAtZGlyZWN0aW9uLXRhZyB7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4zcHg7CiAgICAgIH0KCiAgICAgIC5zbXRwLWRpcmVjdGlvbi10YWcuY2xpZW50IHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzYjgyZjYiLCIjNjBhNWZhIil9OwogICAgICB9CgogICAgICAuc210cC1kaXJlY3Rpb24tdGFnLnNlcnZlciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMjJjNTVlIiwiIzRhZGU4MCIpfTsKICAgICAgfQoKICAgICAgLyogUmVzcG9uc2UgY29kZSBiYWRnZXMgKi8KICAgICAgLnJlc3BvbnNlLWNvZGUtYmFkZ2UgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBwYWRkaW5nOiAxcHggN3B4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OTlweDsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7CiAgICAgICAgZm9udC1mYW1pbHk6ICdTRiBNb25vJywgTW9uYWNvLCAnQ2FzY2FkaWEgQ29kZScsIG1vbm9zcGFjZTsKICAgICAgfQoKICAgICAgLnJlc3BvbnNlLWNvZGUtYmFkZ2UuY29kZS0yeHggewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDM0LCAxOTcsIDk0LCAwLjE1KSIsInJnYmEoMzQsIDE5NywgOTQsIDAuMjUpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE2YTM0YSIsIiMyMmM1NWUiKX07CiAgICAgIH0KCiAgICAgIC5yZXNwb25zZS1jb2RlLWJhZGdlLmNvZGUtM3h4IHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSg1OSwgMTMwLCAyNDYsIDAuMTUpIiwicmdiYSg1OSwgMTMwLCAyNDYsIDAuMjUpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzI1NjNlYiIsIiM2MGE1ZmEiKX07CiAgICAgIH0KCiAgICAgIC5yZXNwb25zZS1jb2RlLWJhZGdlLmNvZGUtNHh4IHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgyNTAsIDIwNCwgMjEsIDAuMTUpIiwicmdiYSgyNTAsIDIwNCwgMjEsIDAuMjUpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2NhOGEwNCIsIiNmYWNjMTUiKX07CiAgICAgIH0KCiAgICAgIC5yZXNwb25zZS1jb2RlLWJhZGdlLmNvZGUtNXh4IHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgyMzksIDY4LCA2OCwgMC4xNSkiLCJyZ2JhKDIzOSwgNjgsIDY4LCAwLjI1KSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNkYzI2MjYiLCIjZWY0NDQ0Iil9OwogICAgICB9CgogICAgICAvKiBTTVRQIG1ldGFkYXRhIGJhbm5lciDigJQgc2l0cyBpbnNpZGUgY29udGVudCwgYWJvdmUgdGhlIGxvZyAqLwogICAgICAuc210cC1oZWFkZXItc3VidGl0bGUgewogICAgICAgIHBhZGRpbmc6IDEwcHggMTZweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLXN1YnRsZSk7CiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgfQoKICAgICAgLnNtdHAtZGlyZWN0aW9uLWJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDJweCA4cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5OXB4OwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuM3B4OwogICAgICB9CgogICAgICAuc210cC1kaXJlY3Rpb24tYmFkZ2UuaW5ib3VuZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMzQsIDE5NywgOTQsIDAuMTIpIiwicmdiYSgzNCwgMTk3LCA5NCwgMC4yKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxNmEzNGEiLCIjMjJjNTVlIil9OwogICAgICB9CgogICAgICAuc210cC1kaXJlY3Rpb24tYmFkZ2Uub3V0Ym91bmQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC4xMikiLCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC4yKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMyNTYzZWIiLCIjNjBhNWZhIil9OwogICAgICB9CgogICAgICAuZW1haWwtYm9keS1jb250YWluZXIgewogICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgbWF4LWhlaWdodDogNTAwcHg7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZhZmFmYSIsIiMwYTBhMGEiKX07CiAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAudGxzLWJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDJweCA4cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZGNmY2U3IiwicmdiYSgzNCwgMTk3LCA5NCwgMC4yKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxNmEzNGEiLCIjMjJjNTVlIil9OwogICAgICB9CgogICAgICAuYXV0aC1yb3cgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgcGFkZGluZzogOHB4IDA7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzI3MjcyYSIpfTsKICAgICAgfQoKICAgICAgLmF1dGgtcm93Omxhc3QtY2hpbGQgewogICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7CiAgICAgIH0KCiAgICAgIC5hdXRoLWxhYmVsIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAuYXV0aC1kb21haW4gewogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7CiAgICAgIH0KCiAgICAgIC5hdXRoLWJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDJweCA4cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5OXB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICB9CgogICAgICAuYXV0aC1iYWRnZS5wYXNzIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2RjZmNlNyIsInJnYmEoMzQsIDE5NywgOTQsIDAuMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTZhMzRhIiwiIzIyYzU1ZSIpfTsKICAgICAgfQoKICAgICAgLmF1dGgtYmFkZ2UuZmFpbCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZWUyZTIiLCJyZ2JhKDIzOSwgNjgsIDY4LCAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2RjMjYyNiIsIiNlZjQ0NDQiKX07CiAgICAgIH0KCiAgICAgIC5hdXRoLWJhZGdlLnNvZnRmYWlsLAogICAgICAuYXV0aC1iYWRnZS5uZXV0cmFsLAogICAgICAuYXV0aC1iYWRnZS5ub25lIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZlZjljMyIsInJnYmEoMjUwLCAyMDQsIDIxLCAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2NhOGEwNCIsIiNmYWNjMTUiKX07CiAgICAgIH0KCiAgICAgIGRlZXMtdGlsZS5yZWplY3Rpb24tY2FyZDo6cGFydChvdXRlcikgewogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiNmZWNhY2EiLCJyZ2JhKDIzOSwgNjgsIDY4LCAwLjMpIil9OwogICAgICB9CgogICAgICAucmVqZWN0aW9uLWNvbnRlbnQgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNkYzI2MjYiLCIjZWY0NDQ0Iil9OwogICAgICB9CgogICAgICAucmVqZWN0aW9uLWxhYmVsIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7CiAgICAgIH0KCiAgICAgIC5yZWplY3Rpb24tdGV4dCB7CiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZWYyZjIiLCJyZ2JhKDIzOSwgNjgsIDY4LCAwLjEpIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzk5MWIxYiIsIiNmY2E1YTUiKX07CiAgICAgIH0KCiAgICAgIC5yZWplY3Rpb24tdGV4dDpsYXN0LWNoaWxkIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICB9CgogICAgICAubm8tZW1haWwgewogICAgICAgIHBhZGRpbmc6IDQ4cHggMjRweDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQogICAgYF07cmVuZGVyKCl7aWYoIXRoaXMuZW1haWwpcmV0dXJuIHdgPGRpdiBjbGFzcz0ibm8tZW1haWwiPk5vIGVtYWlsIHNlbGVjdGVkPC9kaXY+YDtsZXQgZD10aGlzLmVtYWlsO3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImJhY2stbGluayIgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlQmFjaygpfT4KICAgICAgICAgIDxzdmcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgICAgICAgICA8cG9seWxpbmUgcG9pbnRzPSIxNSAxOCA5IDEyIDE1IDYiPjwvcG9seWxpbmU+CiAgICAgICAgICA8L3N2Zz4KICAgICAgICAgIEJhY2sgdG8gRW1haWxzCiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iZW1haWwtaGVhZGVyIj4KICAgICAgICA8aDEgY2xhc3M9ImVtYWlsLXN1YmplY3QiPiR7ZC5zdWJqZWN0fTwvaDE+CiAgICAgICAgPGRpdiBjbGFzcz0iYmFkZ2UtZ3JvdXAiPgogICAgICAgICAgPHNwYW4gY2xhc3M9InN0YXR1cy1iYWRnZSAke2Quc3RhdHVzfSI+JHtkLnN0YXR1c308L3NwYW4+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iZGlyZWN0aW9uLWJhZGdlICR7ZC5kaXJlY3Rpb259Ij4ke2QuZGlyZWN0aW9ufTwvc3Bhbj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJtYWluLWNvbnRlbnQiPgogICAgICAgICAgPCEtLSBFbWFpbCBNZXRhZGF0YSAtLT4KICAgICAgICAgIDxkZWVzLXRpbGU+CiAgICAgICAgICAgIDxkaXYgc2xvdD0iaGVhZGVyIiBjbGFzcz0iY2FyZC1oZWFkZXIiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaGVhZGluZyI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2FyZC10aXRsZSI+RW1haWwgTWV0YWRhdGE8L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWNvbnRlbnQiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRldGFpbC1saXN0Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRldGFpbC1pdGVtIj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRldGFpbC1sYWJlbCI+RnJvbTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRldGFpbC12YWx1ZSI+JHtkLmZyb219PC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXRhaWwtaXRlbSI+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkZXRhaWwtbGFiZWwiPlRvPC9zcGFuPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZGV0YWlsLXZhbHVlIj4ke2QudG9MaXN0LmpvaW4oIiwgIil9PC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAke2QuY2MmJmQuY2MubGVuZ3RoPjA/d2AKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGV0YWlsLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkZXRhaWwtbGFiZWwiPkNDPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkZXRhaWwtdmFsdWUiPiR7ZC5jYy5qb2luKCIsICIpfTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICBgOiIifQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGV0YWlsLWl0ZW0iPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZGV0YWlsLWxhYmVsIj5TdWJqZWN0PC9zcGFuPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZGV0YWlsLXZhbHVlIj4ke2Quc3ViamVjdH08L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRldGFpbC1pdGVtIj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRldGFpbC1sYWJlbCI+RGF0ZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRldGFpbC12YWx1ZSI+JHtkLnRpbWVzdGFtcH08L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRldGFpbC1pdGVtIj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRldGFpbC1sYWJlbCI+TWVzc2FnZSBJRDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRldGFpbC12YWx1ZSI+JHtkLm1lc3NhZ2VJZH08L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRldGFpbC1pdGVtIj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRldGFpbC1sYWJlbCI+U2l6ZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRldGFpbC12YWx1ZSI+JHtkLnNpemV9PC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kZWVzLXRpbGU+CgogICAgICAgICAgPCEtLSBTTVRQIFRyYW5zYWN0aW9uIExvZyAtLT4KICAgICAgICAgIDxkZWVzLXRpbGU+CiAgICAgICAgICAgIDxkaXYgc2xvdD0iaGVhZGVyIiBjbGFzcz0iY2FyZC1oZWFkZXIiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaGVhZGluZyI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2FyZC10aXRsZSI+U01UUCBUcmFuc2FjdGlvbiBMb2c8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic210cC1kaXJlY3Rpb24tYmFkZ2UgJHtkLmRpcmVjdGlvbn0iPiR7ZC5kaXJlY3Rpb259PC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic210cC1oZWFkZXItc3VidGl0bGUiPgogICAgICAgICAgICAgICR7ZC5kaXJlY3Rpb249PT0ib3V0Ym91bmQiP2Ake2QuY29ubmVjdGlvbkluZm8uc291cmNlSG9zdG5hbWV9IFx1MjE5MiAke2QuY29ubmVjdGlvbkluZm8uZGVzdGluYXRpb25JcH06JHtkLmNvbm5lY3Rpb25JbmZvLmRlc3RpbmF0aW9uUG9ydH1gOmAke2QuY29ubmVjdGlvbkluZm8uc291cmNlSXB9IFx1MjE5MiAke2QuY29ubmVjdGlvbkluZm8uc291cmNlSG9zdG5hbWV9OiR7ZC5jb25uZWN0aW9uSW5mby5kZXN0aW5hdGlvblBvcnR9YH0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICR7dGhpcy5yZW5kZXJTbXRwTG9nKGQpfQogICAgICAgICAgICA8ZGl2IHNsb3Q9ImZvb3RlciIgY2xhc3M9ImNhcmQtZm9vdGVyIj4KICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJ0aWxlLWJ1dHRvbiIgQGNsaWNrPSR7KCk9PnRoaXMuY29weVNtdHBMb2coKX0+CiAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPgogICAgICAgICAgICAgICAgICA8cmVjdCB4PSI5IiB5PSI5IiB3aWR0aD0iMTMiIGhlaWdodD0iMTMiIHJ4PSIyIiByeT0iMiI+PC9yZWN0PgogICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNSAxNUg0YTIgMiAwIDAgMS0yLTJWNGEyIDIgMCAwIDEgMi0yaDlhMiAyIDAgMCAxIDIgMnYxIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgIENvcHkgTG9nCiAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kZWVzLXRpbGU+CgogICAgICAgICAgPCEtLSBFbWFpbCBCb2R5IC0tPgogICAgICAgICAgPGRlZXMtdGlsZT4KICAgICAgICAgICAgPGRpdiBzbG90PSJoZWFkZXIiIGNsYXNzPSJjYXJkLWhlYWRlciI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1oZWFkaW5nIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjYXJkLXRpdGxlIj5FbWFpbCBCb2R5IChFc2NhcGVkKTwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjYXJkLXN1YnRpdGxlIj5SYXcgY29udGVudCDigJQgSFRNTCBpcyBub3QgcmVuZGVyZWQ8L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cHJlIGNsYXNzPSJlbWFpbC1ib2R5LWNvbnRhaW5lciI+JHtkLmJvZHl9PC9wcmU+CiAgICAgICAgICA8L2RlZXMtdGlsZT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhciI+CiAgICAgICAgICA8IS0tIENvbm5lY3Rpb24gSW5mbyAtLT4KICAgICAgICAgIDxkZWVzLXRpbGU+CiAgICAgICAgICAgIDxkaXYgc2xvdD0iaGVhZGVyIiBjbGFzcz0iY2FyZC1oZWFkZXIiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaGVhZGluZyI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2FyZC10aXRsZSI+Q29ubmVjdGlvbiBJbmZvPC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1jb250ZW50Ij4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXRhaWwtbGlzdCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXRhaWwtaXRlbSI+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkZXRhaWwtbGFiZWwiPlNvdXJjZSBJUDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRldGFpbC12YWx1ZSI+JHtkLmNvbm5lY3Rpb25JbmZvLnNvdXJjZUlwfTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGV0YWlsLWl0ZW0iPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZGV0YWlsLWxhYmVsIj5Tb3VyY2UgSG9zdG5hbWU8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkZXRhaWwtdmFsdWUiPiR7ZC5jb25uZWN0aW9uSW5mby5zb3VyY2VIb3N0bmFtZX08L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRldGFpbC1pdGVtIj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRldGFpbC1sYWJlbCI+RGVzdGluYXRpb248L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkZXRhaWwtdmFsdWUiPiR7ZC5jb25uZWN0aW9uSW5mby5kZXN0aW5hdGlvbklwfToke2QuY29ubmVjdGlvbkluZm8uZGVzdGluYXRpb25Qb3J0fTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGV0YWlsLWl0ZW0iPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZGV0YWlsLWxhYmVsIj5UTFM8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkZXRhaWwtdmFsdWUiPgogICAgICAgICAgICAgICAgICAgICR7ZC5jb25uZWN0aW9uSW5mby50bHNWZXJzaW9uP3dgPHNwYW4gY2xhc3M9InRscy1iYWRnZSI+JHtkLmNvbm5lY3Rpb25JbmZvLnRsc1ZlcnNpb259PC9zcGFuPmA6Ik5vbmUifQogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICR7ZC5jb25uZWN0aW9uSW5mby50bHNDaXBoZXI/d2AKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGV0YWlsLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkZXRhaWwtbGFiZWwiPkNpcGhlcjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZGV0YWlsLXZhbHVlIj4ke2QuY29ubmVjdGlvbkluZm8udGxzQ2lwaGVyfTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICBgOiIifQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGV0YWlsLWl0ZW0iPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZGV0YWlsLWxhYmVsIj5BdXRoZW50aWNhdGVkPC9zcGFuPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZGV0YWlsLXZhbHVlIj4ke2QuY29ubmVjdGlvbkluZm8uYXV0aGVudGljYXRlZD8iWWVzIjoiTm8ifTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgJHtkLmNvbm5lY3Rpb25JbmZvLmF1dGhlbnRpY2F0ZWQ/d2AKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGV0YWlsLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkZXRhaWwtbGFiZWwiPkF1dGggTWV0aG9kPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkZXRhaWwtdmFsdWUiPiR7ZC5jb25uZWN0aW9uSW5mby5hdXRoTWV0aG9kfTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRldGFpbC1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZGV0YWlsLWxhYmVsIj5BdXRoIFVzZXI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRldGFpbC12YWx1ZSI+JHtkLmNvbm5lY3Rpb25JbmZvLmF1dGhVc2VyfTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICBgOiIifQogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGVlcy10aWxlPgoKICAgICAgICAgIDwhLS0gQXV0aGVudGljYXRpb24gUmVzdWx0cyAtLT4KICAgICAgICAgIDxkZWVzLXRpbGU+CiAgICAgICAgICAgIDxkaXYgc2xvdD0iaGVhZGVyIiBjbGFzcz0iY2FyZC1oZWFkZXIiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaGVhZGluZyI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2FyZC10aXRsZSI+QXV0aGVudGljYXRpb24gUmVzdWx0czwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtY29udGVudCI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXV0aC1yb3ciPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImF1dGgtbGFiZWwiPlNQRjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImF1dGgtZG9tYWluIj4ke2QuYXV0aGVudGljYXRpb25SZXN1bHRzLnNwZkRvbWFpbn08L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhdXRoLWJhZGdlICR7ZC5hdXRoZW50aWNhdGlvblJlc3VsdHMuc3BmfSI+JHtkLmF1dGhlbnRpY2F0aW9uUmVzdWx0cy5zcGZ9PC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImF1dGgtcm93Ij4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhdXRoLWxhYmVsIj5ES0lNPC9zcGFuPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYXV0aC1kb21haW4iPiR7ZC5hdXRoZW50aWNhdGlvblJlc3VsdHMuZGtpbURvbWFpbn08L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhdXRoLWJhZGdlICR7ZC5hdXRoZW50aWNhdGlvblJlc3VsdHMuZGtpbX0iPiR7ZC5hdXRoZW50aWNhdGlvblJlc3VsdHMuZGtpbX08L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXV0aC1yb3ciPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImF1dGgtbGFiZWwiPkRNQVJDPC9zcGFuPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYXV0aC1kb21haW4iPnBvbGljeTogJHtkLmF1dGhlbnRpY2F0aW9uUmVzdWx0cy5kbWFyY1BvbGljeX08L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhdXRoLWJhZGdlICR7ZC5hdXRoZW50aWNhdGlvblJlc3VsdHMuZG1hcmN9Ij4ke2QuYXV0aGVudGljYXRpb25SZXN1bHRzLmRtYXJjfTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2RlZXMtdGlsZT4KCiAgICAgICAgICA8IS0tIFJlamVjdGlvbiBEZXRhaWxzIChjb25kaXRpb25hbCkgLS0+CiAgICAgICAgICAke2Quc3RhdHVzPT09InJlamVjdGVkInx8ZC5zdGF0dXM9PT0iYm91bmNlZCI/d2AKICAgICAgICAgICAgPGRlZXMtdGlsZSBjbGFzcz0icmVqZWN0aW9uLWNhcmQiPgogICAgICAgICAgICAgIDxkaXYgc2xvdD0iaGVhZGVyIiBjbGFzcz0iY2FyZC1oZWFkZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhcmQtdGl0bGUiPlJlamVjdGlvbiBEZXRhaWxzPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1jb250ZW50Ij4KICAgICAgICAgICAgICAgICR7ZC5yZWplY3Rpb25SZWFzb24/d2AKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmVqZWN0aW9uLWxhYmVsIj5SZWplY3Rpb24gUmVhc29uPC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlamVjdGlvbi10ZXh0Ij4ke2QucmVqZWN0aW9uUmVhc29ufTwvZGl2PgogICAgICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICAgICAgICR7ZC5ib3VuY2VNZXNzYWdlP3dgCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlamVjdGlvbi1sYWJlbCI+Qm91bmNlIE1lc3NhZ2U8L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmVqZWN0aW9uLXRleHQiPiR7ZC5ib3VuY2VNZXNzYWdlfTwvZGl2PgogICAgICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kZWVzLXRpbGU+CiAgICAgICAgICBgOiIifQogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9Z2V0UmVzcG9uc2VDb2RlQmFkZ2VDbGFzcyhkKXtyZXR1cm4gZD49NTAwPyJjb2RlLTV4eCI6ZD49NDAwPyJjb2RlLTR4eCI6ZD49MzAwPyJjb2RlLTN4eCI6ImNvZGUtMnh4In1nZXRTbXRwUGhhc2VzKGQpe2xldCB1PVtdLGM9IiIsYj0wO2ZvcihsZXQgdiBvZiBkKXtsZXQgeD12LmNvbW1hbmQudG9VcHBlckNhc2UoKSxtPWM7aWYodi5kaXJlY3Rpb249PT0iY2xpZW50IiYmKHguc3RhcnRzV2l0aCgiRUhMTyIpfHx4LnN0YXJ0c1dpdGgoIkhFTE8iKT8oYisrLGI9PT0xP209ImNvbm5lY3Rpb24iOm09InBvc3QtdGxzIik6eD09PSJTVEFSVFRMUyI/bT0idGxzIjp4LnN0YXJ0c1dpdGgoIkFVVEgiKT9tPSJhdXRoIjp4LnN0YXJ0c1dpdGgoIk1BSUwgRlJPTSIpfHx4LnN0YXJ0c1dpdGgoIlJDUFQgVE8iKXx8eD09PSJEQVRBInx8eD09PSIuIj9tPSJ0cmFuc2ZlciI6eD09PSJRVUlUIiYmKG09ImNsb3NpbmciKSksdi5kaXJlY3Rpb249PT0ic2VydmVyIiYmbT09PSIiJiYobT1jfHwiY29ubmVjdGlvbiIpLG09PT0iIiYmKG09ImNvbm5lY3Rpb24iKSxtIT09Yyl7Yz1tO2xldCBmPXtjb25uZWN0aW9uOiJDb25uZWN0aW9uIix0bHM6IlRMUyBOZWdvdGlhdGlvbiIsInBvc3QtdGxzIjoiUG9zdC1UTFMgSGFuZHNoYWtlIixhdXRoOiJBdXRoZW50aWNhdGlvbiIsdHJhbnNmZXI6Ik1haWwgVHJhbnNmZXIiLGNsb3Npbmc6IkNsb3NpbmcifTt1LnB1c2goe3BoYXNlOm0sbGFiZWw6ZlttXXx8bSxlbnRyaWVzOltdfSl9dS5sZW5ndGg9PT0wJiZ1LnB1c2goe3BoYXNlOiJjb25uZWN0aW9uIixsYWJlbDoiQ29ubmVjdGlvbiIsZW50cmllczpbXX0pLHVbdS5sZW5ndGgtMV0uZW50cmllcy5wdXNoKHYpfXJldHVybiB1fXJlbmRlclNtdHBMb2coZCl7bGV0IHU9dGhpcy5nZXRTbXRwUGhhc2VzKGQuc210cExvZyk7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9InNtdHAtbG9nLWNvbnRhaW5lciI+CiAgICAgICAgJHt1Lm1hcChjPT53YAogICAgICAgICAgPGRpdiBjbGFzcz0ic210cC1waGFzZS1zZXBhcmF0b3IiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbXRwLXBoYXNlLWxpbmUiPjwvZGl2PgogICAgICAgICAgICA8c3BhbiBjbGFzcz0ic210cC1waGFzZS1sYWJlbCI+JHtjLmxhYmVsfTwvc3Bhbj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic210cC1waGFzZS1saW5lIj48L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgJHtjLmVudHJpZXMubWFwKGI9PndgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNtdHAtYnViYmxlICR7Yi5kaXJlY3Rpb259Ij4KICAgICAgICAgICAgICAke2IuZGlyZWN0aW9uPT09InNlcnZlciImJmIucmVzcG9uc2VDb2RlP3dgCiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icmVzcG9uc2UtY29kZS1iYWRnZSAke3RoaXMuZ2V0UmVzcG9uc2VDb2RlQmFkZ2VDbGFzcyhiLnJlc3BvbnNlQ29kZSl9Ij4ke2IucmVzcG9uc2VDb2RlfTwvc3Bhbj4KICAgICAgICAgICAgICBgOiIifQogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNtdHAtYnViYmxlLWNvbW1hbmQiPiR7Yi5jb21tYW5kfTwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNtdHAtYnViYmxlLW1ldGEiPgogICAgICAgICAgICAgICAgPHNwYW4+JHtiLnRpbWVzdGFtcH08L3NwYW4+CiAgICAgICAgICAgICAgICA8c3Bhbj7Ctzwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzbXRwLWRpcmVjdGlvbi10YWcgJHtiLmRpcmVjdGlvbn0iPiR7Yi5kaXJlY3Rpb249PT0iY2xpZW50Ij8iQ2xpZW50IjoiU2VydmVyIn08L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYCl9CiAgICAgICAgYCl9CiAgICAgIDwvZGl2PgogICAgYH1jb3B5U210cExvZygpe2lmKCF0aGlzLmVtYWlsKXJldHVybjtsZXQgZD10aGlzLmVtYWlsLnNtdHBMb2cubWFwKHU9PmBbJHt1LnRpbWVzdGFtcH1dICR7dS5kaXJlY3Rpb249PT0iY2xpZW50Ij8iQzoiOiJTOiJ9ICR7dS5jb21tYW5kfWApLmpvaW4oYApgKTtuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChkKX1oYW5kbGVCYWNrKCl7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiYmFjayIse2J1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHZvdCh0aGlzLGwpfXN0YXRpY3t2b3QoYSx0KX19O3JldHVybiBwPWF9KSgpfSk7ZnVuY3Rpb24gdEphKHMpe3JldHVybiB0eXBlb2Ygcz09Im51bWJlciI/U3RyaW5nKHMpOkFycmF5LmlzQXJyYXkocyk/cy5tYXAoZT0+dHlwZW9mIGU9PSJudW1iZXIiP1N0cmluZyhlKTpgJHtlLmZyb219XHUyMDEzJHtlLnRvfWApLmpvaW4oIiwgIik6U3RyaW5nKHMpfWZ1bmN0aW9uIGFKYShzKXtsZXQgZT1bXTtmb3IobGV0IHQgb2Ygcyl7bGV0IGE9QXJyYXkuaXNBcnJheSh0Lmhvc3QpP3QuaG9zdDpbdC5ob3N0XSxyPXQucG9ydD09PSJwcmVzZXJ2ZSI/IihwcmVzZXJ2ZSkiOlN0cmluZyh0LnBvcnQpO2ZvcihsZXQgbiBvZiBhKWUucHVzaChgJHtufToke3J9YCl9cmV0dXJuIGV9dmFyIHhvdCxrUSxzSmEsZDlhPWcoKCk9PntwZSgpO3hvdD1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sa1E9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9O2kodEphLCJmb3JtYXRQb3J0cyIpO2koYUphLCJmb3JtYXRUYXJnZXRzIik7c0phPSgoKT0+e2xldCBzPVtuZSgic3otcm91dGUtY2FyZCIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdO3ZhciBjPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJTelJvdXRlQ2FyZCIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBiPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6T2JqZWN0fSldLHA9W0woe3R5cGU6Qm9vbGVhbn0pXSx4b3QodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJyb3V0ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh2PT4icm91dGUiaW4gdiwiaGFzIiksZ2V0Omkodj0+di5yb3V0ZSwiZ2V0Iiksc2V0OmkoKHYseCk9Pnt2LnJvdXRlPXh9LCJzZXQiKX0sbWV0YWRhdGE6Yn0sbyxsKSx4b3QodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93QWN0aW9ucyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh2PT4ic2hvd0FjdGlvbnMiaW4gdiwiaGFzIiksZ2V0Omkodj0+di5zaG93QWN0aW9ucywiZ2V0Iiksc2V0OmkoKHYseCk9Pnt2LnNob3dBY3Rpb25zPXh9LCJzZXQiKX0sbWV0YWRhdGE6Yn0sZCx1KSx4b3QobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6Yn0sbnVsbCx0KSxjPWE9ZS52YWx1ZSxiJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KX1zdGF0aWMgZGVtbz1pKCgpPT53YAogICAgPGRpdiBzdHlsZT0icGFkZGluZzogMjRweDsgbWF4LXdpZHRoOiA1MjBweDsiPgogICAgICA8c3otcm91dGUtY2FyZAogICAgICAgIC5yb3V0ZT0ke3tuYW1lOiJBUEkgR2F0ZXdheSIsZGVzY3JpcHRpb246Ik1haW4gQVBJIGdhdGV3YXkgd2l0aCBUTFMgdGVybWluYXRpb24gYW5kIGxvYWQgYmFsYW5jaW5nIixlbmFibGVkOiEwLHByaW9yaXR5OjEwLHRhZ3M6WyJ3ZWIiLCJhcGkiLCJwcm9kdWN0aW9uIl0sbWF0Y2g6e3BvcnRzOls0NDMsODQ0M10sZG9tYWluczpbImFwaS5leGFtcGxlLmNvbSIsIiouYXBpLnNlcnZlLnpvbmUiXSxwYXRoOiIvYXBpLyoiLHByb3RvY29sOiJodHRwIixjbGllbnRJcDpbIjEwLjAuMC4wLzgiXX0sYWN0aW9uOnt0eXBlOiJmb3J3YXJkIix0YXJnZXRzOlt7aG9zdDpbIjEwLjAuMC4xIiwiMTAuMC4wLjIiXSxwb3J0OjgwODB9XSx0bHM6e21vZGU6InRlcm1pbmF0ZSIsY2VydGlmaWNhdGU6ImF1dG8ifSx3ZWJzb2NrZXQ6e2VuYWJsZWQ6ITB9LGxvYWRCYWxhbmNpbmc6e2FsZ29yaXRobToicm91bmQtcm9iaW4ifSxmb3J3YXJkaW5nRW5naW5lOiJuZnRhYmxlcyJ9LHNlY3VyaXR5OntpcEFsbG93TGlzdDpbIjEwLjAuMC4wLzgiXSxpcEJsb2NrTGlzdDpbIjE5Mi4xNjguMTAwLjAvMjQiXSxyYXRlTGltaXQ6e2VuYWJsZWQ6ITAsbWF4UmVxdWVzdHM6MTAwLHdpbmRvdzo2MH0sbWF4Q29ubmVjdGlvbnM6MWUzfSx2cG5Pbmx5OiEwLG1ldGFkYXRhOntzb3VyY2VQcm9maWxlTmFtZToiU1RBTkRBUkQiLG5ldHdvcmtUYXJnZXROYW1lOiJMT1NTTEVTU19JTkZSQSJ9fX0KICAgICAgPjwvc3otcm91dGUtY2FyZD4KICAgIDwvZGl2PgogIGAsImRlbW8iKTtzdGF0aWMgZGVtb0dyb3Vwcz1bIlJvdXRlcyJdOyNlPWtRKHRoaXMsbyxudWxsKTtnZXQgcm91dGUoKXtyZXR1cm4gdGhpcy4jZX1zZXQgcm91dGUoYil7dGhpcy4jZT1ifSN0PShrUSh0aGlzLGwpLGtRKHRoaXMsZCwhMSkpO2dldCBzaG93QWN0aW9ucygpe3JldHVybiB0aGlzLiN0fXNldCBzaG93QWN0aW9ucyhiKXt0aGlzLiN0PWJ9c3RhdGljIHN0eWxlcz1baC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgZGVlcy10aWxlOjpwYXJ0KG91dGVyKSB7CiAgICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDIwMG1zIGVhc2UsIGJveC1zaGFkb3cgMjAwbXMgZWFzZTsKICAgICAgfQoKICAgICAgZGVlcy10aWxlOmhvdmVyOjpwYXJ0KG91dGVyKSB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1zdHJvbmcpOwogICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCAke2guYmRUaGVtZSgicmdiYSgwLDAsMCwwLjA2KSIsInJnYmEoMCwwLDAsMC4yKSIpfTsKICAgICAgfQoKICAgICAgLyogSGVhZGVyICovCiAgICAgIC5oZWFkZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgIGhlaWdodDogNDBweDsKICAgICAgICBwYWRkaW5nOiAwIDE2cHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLmhlYWRlci1sZWZ0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgbWluLXdpZHRoOiAwOwogICAgICAgIGZsZXg6IDE7CiAgICAgIH0KCiAgICAgIC5zdGF0dXMtZG90IHsKICAgICAgICB3aWR0aDogOHB4OwogICAgICAgIGhlaWdodDogOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQoKICAgICAgLnN0YXR1cy1kb3QuZW5hYmxlZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiMyMmM1NWUiLCIjMjJjNTVlIil9OwogICAgICAgIGJveC1zaGFkb3c6IDAgMCA2cHggJHtoLmJkVGhlbWUoInJnYmEoMzQsMTk3LDk0LDAuNCkiLCJyZ2JhKDM0LDE5Nyw5NCwwLjMpIil9OwogICAgICB9CgogICAgICAuc3RhdHVzLWRvdC5kaXNhYmxlZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNhMWExYWEiLCIjNTI1MjViIil9OwogICAgICB9CgogICAgICAucm91dGUtbmFtZSB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgfQoKICAgICAgLmhlYWRlci1iYWRnZXMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC5iYWRnZSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiAycHggOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OTlweDsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CgogICAgICAuYmFkZ2UuZm9yd2FyZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNkYmVhZmUiLCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC4yKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMyNTYzZWIiLCIjNjBhNWZhIil9OwogICAgICB9CgogICAgICAuYmFkZ2Uuc29ja2V0LWhhbmRsZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZWRlOWZlIiwicmdiYSgxMzksIDkyLCAyNDYsIDAuMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjN2MzYWVkIiwiI2E3OGJmYSIpfTsKICAgICAgfQoKICAgICAgLmJhZGdlLmVuYWJsZWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZGNmY2U3IiwicmdiYSgzNCwgMTk3LCA5NCwgMC4yKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxNmEzNGEiLCIjMjJjNTVlIil9OwogICAgICB9CgogICAgICAuYmFkZ2UuZGlzYWJsZWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwicmdiYSgxMTMsIDExMywgMTIyLCAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgIH0KCiAgICAgIC5jYXJkLWJvZHkgewogICAgICAgIHBhZGRpbmc6IDE2cHggMjBweDsKICAgICAgfQoKICAgICAgLmRlc2NyaXB0aW9uIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDsKICAgICAgfQoKICAgICAgLm1ldGEtcm93IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICBnYXA6IDZweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICB9CgogICAgICAudGFncyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgZ2FwOiA0cHg7CiAgICAgIH0KCiAgICAgIC50YWcgewogICAgICAgIHBhZGRpbmc6IDJweCA4cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMjcyNzJhIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM1MjUyNWIiLCIjYTFhMWFhIil9OwogICAgICB9CgogICAgICAucHJpb3JpdHkgewogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNhMWExYWEiLCIjNzE3MTdhIil9OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIH0KCiAgICAgIC8qIFNlY3Rpb25zICovCiAgICAgIC5zZWN0aW9uIHsKICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkOwogICAgICAgIHBhZGRpbmc6IDEwcHggMTRweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDAgNnB4IDZweCAwOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmFmYWZhIiwiIzEwMTAxMCIpfTsKICAgICAgfQoKICAgICAgLnNlY3Rpb246bGFzdC1vZi10eXBlIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICB9CgogICAgICAuc2VjdGlvbi5tYXRjaCB7CiAgICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzNiODJmNiIpfTsKICAgICAgfQoKICAgICAgLnNlY3Rpb24uYWN0aW9uIHsKICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogJHtoLmJkVGhlbWUoIiMyMmM1NWUiLCIjMjJjNTVlIil9OwogICAgICB9CgogICAgICAuc2VjdGlvbi5zZWN1cml0eSB7CiAgICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICR7aC5iZFRoZW1lKCIjZjU5ZTBiIiwiI2Y1OWUwYiIpfTsKICAgICAgfQoKICAgICAgLnNlY3Rpb24ubGlua2VkIHsKICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogJHtoLmJkVGhlbWUoIiM4YjVjZjYiLCIjOGI1Y2Y2Iil9OwogICAgICB9CgogICAgICAubGlua2VkLW5hbWUgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIHBhZGRpbmc6IDFweCA2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNlZGU5ZmUiLCJyZ2JhKDEzOSwgOTIsIDI0NiwgMC4xNSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNmQyOGQ5IiwiI2E3OGJmYSIpfTsKICAgICAgfQoKICAgICAgLnNlY3Rpb24tbGFiZWwgewogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDhlbTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNhMWExYWEiLCIjNzE3MTdhIil9OwogICAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgfQoKICAgICAgLmZpZWxkLXJvdyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICAgIH0KCiAgICAgIC5maWVsZC1yb3c6bGFzdC1jaGlsZCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgfQoKICAgICAgLmZpZWxkLWtleSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgICBtaW4td2lkdGg6IDY0cHg7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgfQoKICAgICAgLmZpZWxkLXZhbHVlIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZTRlNGU3Iil9OwogICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDsKICAgICAgfQoKICAgICAgLmRvbWFpbi1jaGlwIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBwYWRkaW5nOiAxcHggNnB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZWZmNmZmIiwicmdiYSg1OSwgMTMwLCAyNDYsIDAuMSkiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDRweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAycHg7CiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgfQoKICAgICAgLmRvbWFpbi1jaGlwLmdsb2IgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmVmM2M3IiwicmdiYSgyNDUsIDE1OCwgMTEsIDAuMTUpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzkyNDAwZSIsIiNmYmJmMjQiKX07CiAgICAgIH0KCiAgICAgIC5tb25vIHsKICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgfQoKICAgICAgLnByb3RvY29sLWJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBwYWRkaW5nOiAxcHggNnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgfQoKICAgICAgLnByb3RvY29sLWJhZGdlLmh0dHAgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZGJlYWZlIiwicmdiYSg1OSwgMTMwLCAyNDYsIDAuMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMjU2M2ViIiwiIzYwYTVmYSIpfTsKICAgICAgfQoKICAgICAgLnByb3RvY29sLWJhZGdlLnRjcCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNkY2ZjZTciLCJyZ2JhKDM0LCAxOTcsIDk0LCAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE2YTM0YSIsIiMyMmM1NWUiKX07CiAgICAgIH0KCiAgICAgIC50bHMtYmFkZ2UgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIHBhZGRpbmc6IDFweCA2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICB9CgogICAgICAudGxzLWJhZGdlLmF1dG8gewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZGNmY2U3IiwicmdiYSgzNCwgMTk3LCA5NCwgMC4yKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxNmEzNGEiLCIjMjJjNTVlIil9OwogICAgICB9CgogICAgICAudGxzLWJhZGdlLmN1c3RvbSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmVkZDUiLCJyZ2JhKDI0OSwgMTE1LCAyMiwgMC4yKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNjMjQxMGMiLCIjZmI5MjNjIil9OwogICAgICB9CgogICAgICAuZW5naW5lLWJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBwYWRkaW5nOiAxcHggNnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZhZThmZiIsInJnYmEoMTY4LCA4NSwgMjQ3LCAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzdlMjJjZSIsIiNjMDg0ZmMiKX07CiAgICAgIH0KCiAgICAgIC5oZWFkZXItcGFpciB7CiAgICAgICAgZGlzcGxheTogaW5saW5lOwogICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICB9CgogICAgICAvKiBGZWF0dXJlIGljb25zICovCiAgICAgIC5mZWF0dXJlcy1yb3cgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgIGdhcDogMTBweDsKICAgICAgICBtYXJnaW4tdG9wOiAxNHB4OwogICAgICAgIHBhZGRpbmctdG9wOiAxMnB4OwogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMxYTFhMWEiKX07CiAgICAgIH0KCiAgICAgIC5mZWF0dXJlIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA0cHg7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQoKICAgICAgLmZlYXR1cmUtaWNvbiB7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICB9CgogICAgICAubm8tcm91dGUgewogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2ExYTFhYSIsIiM1MjUyNWIiKX07CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICB9CgogICAgICAuc2VjdGlvbi52cG4gewogICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAke2guYmRUaGVtZSgiIzA4OTFiMiIsIiMwNmI2ZDQiKX07CiAgICAgIH0KCiAgICAgIC52cG4tYmFkZ2UgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgcGFkZGluZzogMnB4IDhweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA5OTk5cHg7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgLnZwbi1iYWRnZS5tYW5kYXRvcnkgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmN2VkIiwicmdiYSgyNDksIDExNSwgMjIsIDAuMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjYzI0MTBjIiwiI2ZiOTIzYyIpfTsKICAgICAgfQoKICAgICAgLnZwbi1iYWRnZS5vcHRpb25hbCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNlY2ZkZjUiLCJyZ2JhKDE2LCAxODUsIDEyOSwgMC4yKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwNDc4NTciLCIjMzRkMzk5Iil9OwogICAgICB9CgogICAgICAudnBuLXRhZyB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgcGFkZGluZzogMXB4IDZweDsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDRweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAycHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNlY2ZlZmYiLCJyZ2JhKDYsIDE4MiwgMjEyLCAwLjE1KSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwZTc0OTAiLCIjMjJkM2VlIil9OwogICAgICB9CgogICAgICAuY2FyZC1mb290ZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAwOwogICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAudGlsZS1idXR0b24gewogICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1zdWJ0bGUpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4OwogICAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogICAgICB9CgogICAgICAudGlsZS1idXR0b246Zmlyc3QtY2hpbGQgewogICAgICAgIGJvcmRlci1sZWZ0OiBub25lOwogICAgICB9CgogICAgICAudGlsZS1idXR0b246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItaG92ZXIpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIH0KCiAgICAgIC50aWxlLWJ1dHRvbi5lZGl0OmhvdmVyIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTcuMiA5MS4yJSA1OS44JSkiLCJoc2woMjEzLjEgOTMuOSUgNjcuOCUpIil9OwogICAgICB9CgogICAgICAudGlsZS1idXR0b24uZGVsZXRlOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZlZTJlMiIsInJnYmEoMjM5LCA2OCwgNjgsIDAuMSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZGMyNjI2IiwiI2Y4NzE3MSIpfTsKICAgICAgfQogICAgYF07cmVuZGVyKCl7aWYoIXRoaXMucm91dGUpcmV0dXJuIHdgCiAgICAgICAgPGRlZXMtdGlsZT4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtYm9keSI+PGRpdiBjbGFzcz0ibm8tcm91dGUiPk5vIHJvdXRlIGRhdGE8L2Rpdj48L2Rpdj4KICAgICAgICA8L2RlZXMtdGlsZT4KICAgICAgYDtsZXQgYj10aGlzLnJvdXRlLHY9Yi5lbmFibGVkIT09ITEseD1iLm1hdGNoLG09Yi5hY3Rpb24sZj1iLnNlY3VyaXR5O3JldHVybiB3YAogICAgICA8ZGVlcy10aWxlPgogICAgICAgIDwhLS0gSGVhZGVyIC0tPgogICAgICAgIDxkaXYgc2xvdD0iaGVhZGVyIiBjbGFzcz0iaGVhZGVyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlci1sZWZ0Ij4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN0YXR1cy1kb3QgJHt2PyJlbmFibGVkIjoiZGlzYWJsZWQifSI+PC9zcGFuPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0icm91dGUtbmFtZSI+JHtiLm5hbWV8fGIuaWR8fCJVbm5hbWVkIFJvdXRlIn08L3NwYW4+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlci1iYWRnZXMiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iYmFkZ2UgJHttLnR5cGV9Ij4ke20udHlwZX08L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJiYWRnZSAke3Y/ImVuYWJsZWQiOiJkaXNhYmxlZCJ9Ij4ke3Y/ImVuYWJsZWQiOiJkaXNhYmxlZCJ9PC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtYm9keSI+CiAgICAgICAgICAke2IuZGVzY3JpcHRpb24/d2A8ZGl2IGNsYXNzPSJkZXNjcmlwdGlvbiI+JHtiLmRlc2NyaXB0aW9ufTwvZGl2PmA6IiJ9CgogICAgICAgICAgPGRpdiBjbGFzcz0ibWV0YS1yb3ciPgogICAgICAgICAgICAke2IudGFncyYmYi50YWdzLmxlbmd0aD4wP3dgPGRpdiBjbGFzcz0idGFncyI+JHtiLnRhZ3MubWFwKHk9PndgPHNwYW4gY2xhc3M9InRhZyI+JHt5fTwvc3Bhbj5gKX08L2Rpdj5gOndgPGRpdj48L2Rpdj5gfQogICAgICAgICAgICAke2IucHJpb3JpdHkhPW51bGw/d2A8c3BhbiBjbGFzcz0icHJpb3JpdHkiPlByaW9yaXR5OiAke2IucHJpb3JpdHl9PC9zcGFuPmA6IiJ9CiAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICA8IS0tIE1hdGNoIFNlY3Rpb24gLS0+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbiBtYXRjaCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWxhYmVsIj5NYXRjaDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQtcm93Ij4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZpZWxkLWtleSI+UG9ydHM8L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmaWVsZC12YWx1ZSBtb25vIj4ke3RKYSh4LnBvcnRzKX08L3NwYW4+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICR7eC5kb21haW5zP3dgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC1yb3ciPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmllbGQta2V5Ij5Eb21haW5zPC9zcGFuPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmllbGQtdmFsdWUiPiR7dGhpcy5yZW5kZXJEb21haW5zKHguZG9tYWlucyl9PC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICR7eC5wYXRoP3dgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC1yb3ciPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmllbGQta2V5Ij5QYXRoPC9zcGFuPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmllbGQtdmFsdWUgbW9ubyI+JHt4LnBhdGh9PC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICR7eC5wcm90b2NvbD93YAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQtcm93Ij4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZpZWxkLWtleSI+UHJvdG9jb2w8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmaWVsZC12YWx1ZSI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InByb3RvY29sLWJhZGdlICR7eC5wcm90b2NvbH0iPiR7eC5wcm90b2NvbH08L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAke3guY2xpZW50SXAmJnguY2xpZW50SXAubGVuZ3RoPjA/d2AKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkLXJvdyI+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmaWVsZC1rZXkiPkNsaWVudDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZpZWxkLXZhbHVlIG1vbm8iPiR7eC5jbGllbnRJcC5qb2luKCIsICIpfTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAke3gudGxzVmVyc2lvbiYmeC50bHNWZXJzaW9uLmxlbmd0aD4wP3dgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC1yb3ciPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmllbGQta2V5Ij5UTFMgVmVyPC9zcGFuPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmllbGQtdmFsdWUiPiR7eC50bHNWZXJzaW9uLmpvaW4oIiwgIil9PC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICR7eC5oZWFkZXJzP3dgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC1yb3ciPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmllbGQta2V5Ij5IZWFkZXJzPC9zcGFuPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmllbGQtdmFsdWUiPgogICAgICAgICAgICAgICAgICAgICR7T2JqZWN0LmVudHJpZXMoeC5oZWFkZXJzKS5tYXAoKFt5LE1dKT0+d2A8c3BhbiBjbGFzcz0iaGVhZGVyLXBhaXIiPiR7eX09JHtNfTwvc3Bhbj4gYCl9CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgPC9kaXY+CgogICAgICAgIDwhLS0gQWN0aW9uIFNlY3Rpb24gLS0+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbiBhY3Rpb24iPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1sYWJlbCI+QWN0aW9uPC9kaXY+CiAgICAgICAgICAke20udGFyZ2V0cyYmbS50YXJnZXRzLmxlbmd0aD4wP3dgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC1yb3ciPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmllbGQta2V5Ij5UYXJnZXRzPC9zcGFuPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmllbGQtdmFsdWUgbW9ubyI+JHthSmEobS50YXJnZXRzKS5qb2luKCIsICIpfTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAke20udGxzP3dgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC1yb3ciPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmllbGQta2V5Ij5UTFM8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmaWVsZC12YWx1ZSI+CiAgICAgICAgICAgICAgICAgICAgJHttLnRscy5tb2RlfQogICAgICAgICAgICAgICAgICAgICR7bS50bHMuY2VydGlmaWNhdGU/bS50bHMuY2VydGlmaWNhdGU9PT0iYXV0byI/d2AgPHNwYW4gY2xhc3M9InRscy1iYWRnZSBhdXRvIj5hdXRvIGNlcnQ8L3NwYW4+YDp3YCA8c3BhbiBjbGFzcz0idGxzLWJhZGdlIGN1c3RvbSI+Y3VzdG9tIGNlcnQ8L3NwYW4+YDoiIn0KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICR7bS5mb3J3YXJkaW5nRW5naW5lP3dgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC1yb3ciPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmllbGQta2V5Ij5FbmdpbmU8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmaWVsZC12YWx1ZSI+PHNwYW4gY2xhc3M9ImVuZ2luZS1iYWRnZSI+JHttLmZvcndhcmRpbmdFbmdpbmV9PC9zcGFuPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAke20ubG9hZEJhbGFuY2luZz93YAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQtcm93Ij4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZpZWxkLWtleSI+TEI8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmaWVsZC12YWx1ZSI+JHttLmxvYWRCYWxhbmNpbmcuYWxnb3JpdGhtfTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAke20ud2Vic29ja2V0Py5lbmFibGVkP3dgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC1yb3ciPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmllbGQta2V5Ij5XUzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZpZWxkLXZhbHVlIj48c3BhbiBjbGFzcz0iYmFkZ2UgZW5hYmxlZCI+ZW5hYmxlZDwvc3Bhbj48L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICBgOiIifQogICAgICAgIDwvZGl2PgoKICAgICAgICA8IS0tIFNlY3VyaXR5IFNlY3Rpb24gLS0+CiAgICAgICAgJHtmP3dgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbiBzZWN1cml0eSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWxhYmVsIj5TZWN1cml0eTwvZGl2PgogICAgICAgICAgICAgICAgJHtmLmlwQWxsb3dMaXN0JiZmLmlwQWxsb3dMaXN0Lmxlbmd0aD4wP3dgCiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC1yb3ciPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmllbGQta2V5Ij5BbGxvdzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZpZWxkLXZhbHVlIG1vbm8iPiR7Zi5pcEFsbG93TGlzdC5qb2luKCIsICIpfTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAgICAgICAke2YuaXBCbG9ja0xpc3QmJmYuaXBCbG9ja0xpc3QubGVuZ3RoPjA/d2AKICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkLXJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmaWVsZC1rZXkiPkJsb2NrPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmllbGQtdmFsdWUgbW9ubyI+JHtmLmlwQmxvY2tMaXN0LmpvaW4oIiwgIil9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICAgICAgICR7Zi5yYXRlTGltaXQ/LmVuYWJsZWQ/d2AKICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkLXJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmaWVsZC1rZXkiPlJhdGU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmaWVsZC12YWx1ZSI+JHtmLnJhdGVMaW1pdC5tYXhSZXF1ZXN0c30gcmVxIC8gJHtmLnJhdGVMaW1pdC53aW5kb3d9czwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAgICAgICAke2YubWF4Q29ubmVjdGlvbnM/d2AKICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkLXJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmaWVsZC1rZXkiPk1heCBDb25uPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmllbGQtdmFsdWUiPiR7Zi5tYXhDb25uZWN0aW9uc308L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICBgOiIifQogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICBgOiIifQoKICAgICAgICAgIDwhLS0gVlBOIFNlY3Rpb24gLS0+CiAgICAgICAgICAke3RoaXMucmVuZGVyVnBuKCl9CgogICAgICAgICAgPCEtLSBMaW5rZWQgUmVmZXJlbmNlcyBTZWN0aW9uIC0tPgogICAgICAgICAgJHt0aGlzLnJlbmRlckxpbmtlZCgpfQoKICAgICAgICAgIDwhLS0gRmVhdHVyZSBJY29ucyBSb3cgLS0+CiAgICAgICAgICAke3RoaXMucmVuZGVyRmVhdHVyZXMoKX0KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPCEtLSBBY3Rpb24gQnV0dG9ucyAtLT4KICAgICAgICAke3RoaXMuc2hvd0FjdGlvbnM/d2AKICAgICAgICAgIDxkaXYgc2xvdD0iZm9vdGVyIiBjbGFzcz0iY2FyZC1mb290ZXIiPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJ0aWxlLWJ1dHRvbiBlZGl0IiBAY2xpY2s9JHt5PT57eS5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJyb3V0ZS1lZGl0Iix7ZGV0YWlsOnRoaXMucm91dGUsYnViYmxlczohMCxjb21wb3NlZDohMH0pKX19PkVkaXQ8L2J1dHRvbj4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idGlsZS1idXR0b24gZGVsZXRlIiBAY2xpY2s9JHt5PT57eS5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJyb3V0ZS1kZWxldGUiLHtkZXRhaWw6dGhpcy5yb3V0ZSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfX0+RGVsZXRlPC9idXR0b24+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgOiIifQogICAgICA8L2RlZXMtdGlsZT4KICAgIGB9cmVuZGVyRG9tYWlucyhiKXtsZXQgdj1BcnJheS5pc0FycmF5KGIpP2I6W2JdO3JldHVybiB3YCR7di5tYXAoeD0+d2A8c3BhbiBjbGFzcz0iZG9tYWluLWNoaXAgJHt4LmluY2x1ZGVzKCIqIik/Imdsb2IiOiIifSI+JHt4fTwvc3Bhbj5gKX1gfXJlbmRlclZwbigpe3JldHVybiB0aGlzLnJvdXRlPy52cG5Pbmx5P3dgCiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24gdnBuIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWxhYmVsIj5WUE4gQWNjZXNzPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQtcm93Ij4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJmaWVsZC1rZXkiPk1vZGU8L3NwYW4+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iZmllbGQtdmFsdWUiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0idnBuLWJhZGdlIG1hbmRhdG9yeSI+VlBOIE9ubHk8L3NwYW4+CiAgICAgICAgICA8L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYDp3YGB9cmVuZGVyTGlua2VkKCl7bGV0IGI9dGhpcy5yb3V0ZT8ubWV0YWRhdGE7aWYoIWIpcmV0dXJuIHdgYDtsZXQgdj0hIWIuc291cmNlUHJvZmlsZU5hbWUseD0hIWIubmV0d29ya1RhcmdldE5hbWU7cmV0dXJuIXYmJiF4P3dgYDp3YAogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIGxpbmtlZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1sYWJlbCI+TGlua2VkPC9kaXY+CiAgICAgICAgJHt2P3dgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQtcm93Ij4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmaWVsZC1rZXkiPlByb2ZpbGU8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmllbGQtdmFsdWUiPjxzcGFuIGNsYXNzPSJsaW5rZWQtbmFtZSI+JHtiLnNvdXJjZVByb2ZpbGVOYW1lfTwvc3Bhbj48L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgJHt4P3dgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQtcm93Ij4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmaWVsZC1rZXkiPlRhcmdldDwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmaWVsZC12YWx1ZSI+PHNwYW4gY2xhc3M9ImxpbmtlZC1uYW1lIj4ke2IubmV0d29ya1RhcmdldE5hbWV9PC9zcGFuPjwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYDoiIn0KICAgICAgPC9kaXY+CiAgICBgfXJlbmRlckZlYXR1cmVzKCl7aWYoIXRoaXMucm91dGUpcmV0dXJuIHdgYDtsZXQgYj1bXSx2PXRoaXMucm91dGUuYWN0aW9uLHg9dGhpcy5yb3V0ZS5zZWN1cml0eSxtPXRoaXMucm91dGUuaGVhZGVycyxmPXRoaXMucm91dGUubWV0YWRhdGE7cmV0dXJuIHYudGxzJiZiLnB1c2god2A8c3BhbiBjbGFzcz0iZmVhdHVyZSI+PHNwYW4gY2xhc3M9ImZlYXR1cmUtaWNvbiI+JiN4MWY1MTI7PC9zcGFuPlRMUzwvc3Bhbj5gKSx2LndlYnNvY2tldD8uZW5hYmxlZCYmYi5wdXNoKHdgPHNwYW4gY2xhc3M9ImZlYXR1cmUiPjxzcGFuIGNsYXNzPSJmZWF0dXJlLWljb24iPiYjeDIxOTQ7PC9zcGFuPldTPC9zcGFuPmApLHYubG9hZEJhbGFuY2luZyYmYi5wdXNoKHdgPHNwYW4gY2xhc3M9ImZlYXR1cmUiPjxzcGFuIGNsYXNzPSJmZWF0dXJlLWljb24iPiYjeDI2OTY7PC9zcGFuPkxCPC9zcGFuPmApLHgmJmIucHVzaCh3YDxzcGFuIGNsYXNzPSJmZWF0dXJlIj48c3BhbiBjbGFzcz0iZmVhdHVyZS1pY29uIj4mI3gxZjZlMTs8L3NwYW4+U2VjdXJpdHk8L3NwYW4+YCksbSYmYi5wdXNoKHdgPHNwYW4gY2xhc3M9ImZlYXR1cmUiPjxzcGFuIGNsYXNzPSJmZWF0dXJlLWljb24iPiYjeDI2OTk7PC9zcGFuPkhlYWRlcnM8L3NwYW4+YCksdGhpcy5yb3V0ZT8udnBuT25seSYmYi5wdXNoKHdgPHNwYW4gY2xhc3M9ImZlYXR1cmUiPjxzcGFuIGNsYXNzPSJmZWF0dXJlLWljb24iPiYjeDFmNTEwOzwvc3Bhbj5WUE48L3NwYW4+YCksKGY/LnNvdXJjZVByb2ZpbGVOYW1lfHxmPy5uZXR3b3JrVGFyZ2V0TmFtZSkmJmIucHVzaCh3YDxzcGFuIGNsYXNzPSJmZWF0dXJlIj48c3BhbiBjbGFzcz0iZmVhdHVyZS1pY29uIj4mI3gxZjUxNzs8L3NwYW4+TGlua2VkPC9zcGFuPmApLGIubGVuZ3RoPT09MD93YGA6d2A8ZGl2IGNsYXNzPSJmZWF0dXJlcy1yb3ciPiR7Yn08L2Rpdj5gfWNvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSxrUSh0aGlzLHUpfXN0YXRpY3trUShhLHQpfX07cmV0dXJuIGM9YX0pKCl9KTt2YXIgaHgsYjIsaUphLHU5YT1nKCgpPT57cGUoKTtoeD1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sYjI9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LGlKYT0oKCk9PntsZXQgcz1bbmUoInN6LXJvdXRlLWxpc3QtdmlldyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdO3ZhciBOPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJTelJvdXRlTGlzdFZpZXciKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgQz10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOkFycmF5fSldLHA9W0woe2F0dHJpYnV0ZTohMX0pXSxjPVtZKCldLHg9W1koKV0seT1bWSgpXSxoeCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InJvdXRlcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4icm91dGVzImluIF8sImhhcyIpLGdldDppKF89Pl8ucm91dGVzLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18ucm91dGVzPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sbyxsKSxoeCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dBY3Rpb25zRmlsdGVyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJzaG93QWN0aW9uc0ZpbHRlciJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLnNob3dBY3Rpb25zRmlsdGVyLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uc2hvd0FjdGlvbnNGaWx0ZXI9T30sInNldCIpfSxtZXRhZGF0YTpDfSxkLHUpLGh4KHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VhcmNoUXVlcnkiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+InNlYXJjaFF1ZXJ5ImluIF8sImhhcyIpLGdldDppKF89Pl8uc2VhcmNoUXVlcnksImdldCIpLHNldDppKChfLE8pPT57Xy5zZWFyY2hRdWVyeT1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LGIsdiksaHgodGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJhY3Rpb25GaWx0ZXIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+ImFjdGlvbkZpbHRlciJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLmFjdGlvbkZpbHRlciwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLmFjdGlvbkZpbHRlcj1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LG0sZiksaHgodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJlbmFibGVkRmlsdGVyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJlbmFibGVkRmlsdGVyImluIF8sImhhcyIpLGdldDppKF89Pl8uZW5hYmxlZEZpbHRlciwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLmVuYWJsZWRGaWx0ZXI9T30sInNldCIpfSxtZXRhZGF0YTpDfSxNLHopLGh4KG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOkN9LG51bGwsdCksTj1hPWUudmFsdWUsQyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpDfSl9c3RhdGljIGRlbW89aSgoKT0+d2AKICAgIDxkaXYgc3R5bGU9InBhZGRpbmc6IDI0cHg7IG1heC13aWR0aDogMTIwMHB4OyI+CiAgICAgIDxzei1yb3V0ZS1saXN0LXZpZXcKICAgICAgICAucm91dGVzPSR7W3tuYW1lOiJIVFRQUyBHYXRld2F5IixkZXNjcmlwdGlvbjoiTWFpbiB3ZWIgZ2F0ZXdheSB3aXRoIFRMUyB0ZXJtaW5hdGlvbiIsZW5hYmxlZDohMCx0YWdzOlsid2ViIiwiaHR0cHMiLCJwcm9kdWN0aW9uIl0sbWF0Y2g6e3BvcnRzOjQ0Myxkb21haW5zOlsiKi5leGFtcGxlLmNvbSIsInNlcnZlLnpvbmUiXSxwcm90b2NvbDoiaHR0cCJ9LGFjdGlvbjp7dHlwZToiZm9yd2FyZCIsdGFyZ2V0czpbe2hvc3Q6IjEwLjAuMC4xIixwb3J0OjgwODB9XSx0bHM6e21vZGU6InRlcm1pbmF0ZSIsY2VydGlmaWNhdGU6ImF1dG8ifX19LHtuYW1lOiJTTVRQIEluYm91bmQiLGRlc2NyaXB0aW9uOiJFbWFpbCByZWxheSBmb3IgaW5jb21pbmcgbWFpbCIsZW5hYmxlZDohMCx0YWdzOlsiZW1haWwiLCJzbXRwIl0sbWF0Y2g6e3BvcnRzOjI1LGRvbWFpbnM6Im1haWwuc2VydmUuem9uZSJ9LGFjdGlvbjp7dHlwZToiZm9yd2FyZCIsdGFyZ2V0czpbe2hvc3Q6IjEwLjAuMS41Iixwb3J0OjI1fV19fSx7bmFtZToiV2ViU29ja2V0IEFQSSIsZGVzY3JpcHRpb246IlJlYWwtdGltZSBXZWJTb2NrZXQgY29ubmVjdGlvbnMiLGVuYWJsZWQ6ITAsdGFnczpbIndlYiIsImFwaSJdLG1hdGNoOntwb3J0czo0NDMsZG9tYWluczoid3MuZXhhbXBsZS5jb20iLHBhdGg6Ii93cy8qIn0sYWN0aW9uOnt0eXBlOiJmb3J3YXJkIix0YXJnZXRzOlt7aG9zdDoiMTAuMC4wLjMiLHBvcnQ6OTA5MH1dLHdlYnNvY2tldDp7ZW5hYmxlZDohMH0sdGxzOnttb2RlOiJ0ZXJtaW5hdGUiLGNlcnRpZmljYXRlOiJhdXRvIn19fSx7bmFtZToiTWFpbnRlbmFuY2UgUGFnZSIsZW5hYmxlZDohMSx0YWdzOlsid2ViIl0sbWF0Y2g6e3BvcnRzOls4MCw0NDNdLGRvbWFpbnM6Im9sZC5leGFtcGxlLmNvbSJ9LGFjdGlvbjp7dHlwZToic29ja2V0LWhhbmRsZXIifX1dfQogICAgICA+PC9zei1yb3V0ZS1saXN0LXZpZXc+CiAgICA8L2Rpdj4KICBgLCJkZW1vIik7c3RhdGljIGRlbW9Hcm91cHM9WyJSb3V0ZXMiXTsjZT1iMih0aGlzLG8sW10pO2dldCByb3V0ZXMoKXtyZXR1cm4gdGhpcy4jZX1zZXQgcm91dGVzKEMpe3RoaXMuI2U9Q30jdD0oYjIodGhpcyxsKSxiMih0aGlzLGQsbnVsbCkpO2dldCBzaG93QWN0aW9uc0ZpbHRlcigpe3JldHVybiB0aGlzLiN0fXNldCBzaG93QWN0aW9uc0ZpbHRlcihDKXt0aGlzLiN0PUN9I2E9KGIyKHRoaXMsdSksYjIodGhpcyxiLCIiKSk7Z2V0IHNlYXJjaFF1ZXJ5KCl7cmV0dXJuIHRoaXMuI2F9c2V0IHNlYXJjaFF1ZXJ5KEMpe3RoaXMuI2E9Q30jcz0oYjIodGhpcyx2KSxiMih0aGlzLG0sImFsbCIpKTtnZXQgYWN0aW9uRmlsdGVyKCl7cmV0dXJuIHRoaXMuI3N9c2V0IGFjdGlvbkZpbHRlcihDKXt0aGlzLiNzPUN9I2k9KGIyKHRoaXMsZiksYjIodGhpcyxNLCJhbGwiKSk7Z2V0IGVuYWJsZWRGaWx0ZXIoKXtyZXR1cm4gdGhpcy4jaX1zZXQgZW5hYmxlZEZpbHRlcihDKXt0aGlzLiNpPUN9Z2V0IGZpbHRlcmVkUm91dGVzKCl7cmV0dXJuIHRoaXMucm91dGVzLmZpbHRlcihDPT57aWYodGhpcy5hY3Rpb25GaWx0ZXIhPT0iYWxsIiYmQy5hY3Rpb24udHlwZSE9PXRoaXMuYWN0aW9uRmlsdGVyfHx0aGlzLmVuYWJsZWRGaWx0ZXI9PT0iZW5hYmxlZCImJkMuZW5hYmxlZD09PSExfHx0aGlzLmVuYWJsZWRGaWx0ZXI9PT0iZGlzYWJsZWQiJiZDLmVuYWJsZWQhPT0hMSlyZXR1cm4hMTtpZih0aGlzLnNlYXJjaFF1ZXJ5KXtsZXQgXz10aGlzLnNlYXJjaFF1ZXJ5LnRvTG93ZXJDYXNlKCk7cmV0dXJuIHRoaXMucm91dGVNYXRjaGVzU2VhcmNoKEMsXyl9cmV0dXJuITB9KX1yb3V0ZU1hdGNoZXNTZWFyY2goQyxfKXtpZihDLm5hbWU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoXyl8fEMuZGVzY3JpcHRpb24/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoXyl8fEMubWF0Y2guZG9tYWlucyYmKEFycmF5LmlzQXJyYXkoQy5tYXRjaC5kb21haW5zKT9DLm1hdGNoLmRvbWFpbnM6W0MubWF0Y2guZG9tYWluc10pLnNvbWUoRT0+RS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKF8pKXx8dGhpcy5mb3JtYXRQb3J0c0ZvclNlYXJjaChDLm1hdGNoLnBvcnRzKS5pbmNsdWRlcyhfKXx8Qy5tYXRjaC5wYXRoPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKF8pfHxDLm1hdGNoLmNsaWVudElwPy5zb21lKCQ9PiQuaW5jbHVkZXMoXykpKXJldHVybiEwO2lmKEMuYWN0aW9uLnRhcmdldHMpe2ZvcihsZXQgJCBvZiBDLmFjdGlvbi50YXJnZXRzKWlmKChBcnJheS5pc0FycmF5KCQuaG9zdCk/JC5ob3N0OlskLmhvc3RdKS5zb21lKEg9PkgudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhfKSkpcmV0dXJuITB9cmV0dXJuISFDLnRhZ3M/LnNvbWUoJD0+JC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKF8pKX1mb3JtYXRQb3J0c0ZvclNlYXJjaChDKXtyZXR1cm4gdHlwZW9mIEM9PSJudW1iZXIiP1N0cmluZyhDKTpBcnJheS5pc0FycmF5KEMpP0MubWFwKF89PnR5cGVvZiBfPT0ibnVtYmVyIj9TdHJpbmcoXyk6YCR7Xy5mcm9tfS0ke18udG99YCkuam9pbigiICIpOlN0cmluZyhDKX1zdGF0aWMgc3R5bGVzPVtoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICAuZmlsdGVyLWJhciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDsKICAgICAgfQoKICAgICAgLnNlYXJjaC1pbnB1dCB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBtaW4td2lkdGg6IDIwMHB4OwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzA5MDkwYiIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U0ZTRlNyIsIiMyNzI3MmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDIwMG1zIGVhc2U7CiAgICAgIH0KCiAgICAgIC5zZWFyY2gtaW5wdXQ6OnBsYWNlaG9sZGVyIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNhMWExYWEiLCIjNTI1MjViIil9OwogICAgICB9CgogICAgICAuc2VhcmNoLWlucHV0OmZvY3VzIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjMjU2M2ViIiwiIzNiODJmNiIpfTsKICAgICAgfQoKICAgICAgLmNoaXAtZ3JvdXAgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiA0cHg7CiAgICAgIH0KCiAgICAgIC5jaGlwIHsKICAgICAgICBwYWRkaW5nOiA2cHggMTJweDsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U0ZTRlNyIsIiMyNzI3MmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5OXB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAyMDBtcyBlYXNlOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgIH0KCiAgICAgIC5jaGlwOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMxODE4MWIiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLmNoaXAuYWN0aXZlIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZmFmYWZhIiwiIzE4MTgxYiIpfTsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLnJlc3VsdHMtY291bnQgewogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgIH0KCiAgICAgIC5ncmlkIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDQyMHB4LCAxZnIpKTsKICAgICAgICBnYXA6IDE2cHg7CiAgICAgIH0KCiAgICAgIC5ncmlkIHN6LXJvdXRlLWNhcmQgewogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQoKICAgICAgLmVtcHR5LXN0YXRlIHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgcGFkZGluZzogNDhweCAyNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICB9CgogICAgICAuZW1wdHktc3RhdGUtaWNvbiB7CiAgICAgICAgZm9udC1zaXplOiAzMnB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtsZXQgQz10aGlzLmZpbHRlcmVkUm91dGVzO3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJmaWx0ZXItYmFyIj4KICAgICAgICA8aW5wdXQKICAgICAgICAgIGNsYXNzPSJzZWFyY2gtaW5wdXQiCiAgICAgICAgICB0eXBlPSJ0ZXh0IgogICAgICAgICAgcGxhY2Vob2xkZXI9IlNlYXJjaCByb3V0ZXMgYnkgZG9tYWluLCBJUCwgcG9ydCwgcGF0aCwgb3IgdGFnLi4uIgogICAgICAgICAgLnZhbHVlPSR7dGhpcy5zZWFyY2hRdWVyeX0KICAgICAgICAgIEBpbnB1dD0ke189Pnt0aGlzLnNlYXJjaFF1ZXJ5PV8udGFyZ2V0LnZhbHVlfX0KICAgICAgICAvPgogICAgICAgIDxkaXYgY2xhc3M9ImNoaXAtZ3JvdXAiPgogICAgICAgICAgJHtbImFsbCIsImZvcndhcmQiLCJzb2NrZXQtaGFuZGxlciJdLm1hcChfPT53YAogICAgICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgICAgIGNsYXNzPSJjaGlwICR7dGhpcy5hY3Rpb25GaWx0ZXI9PT1fPyJhY3RpdmUiOiIifSIKICAgICAgICAgICAgICAgIEBjbGljaz0keygpPT57dGhpcy5hY3Rpb25GaWx0ZXI9X319CiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgJHtfPT09ImFsbCI/IkFsbCI6Xz09PSJmb3J3YXJkIj8iRm9yd2FyZCI6IlNvY2tldCBIYW5kbGVyIn0KICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgYCl9CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY2hpcC1ncm91cCI+CiAgICAgICAgICAke1siYWxsIiwiZW5hYmxlZCIsImRpc2FibGVkIl0ubWFwKF89PndgCiAgICAgICAgICAgICAgPGJ1dHRvbgogICAgICAgICAgICAgICAgY2xhc3M9ImNoaXAgJHt0aGlzLmVuYWJsZWRGaWx0ZXI9PT1fPyJhY3RpdmUiOiIifSIKICAgICAgICAgICAgICAgIEBjbGljaz0keygpPT57dGhpcy5lbmFibGVkRmlsdGVyPV99fQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICR7Xy5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStfLnNsaWNlKDEpfQogICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICBgKX0KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJyZXN1bHRzLWNvdW50Ij4KICAgICAgICBTaG93aW5nICR7Qy5sZW5ndGh9IG9mICR7dGhpcy5yb3V0ZXMubGVuZ3RofSByb3V0ZXMKICAgICAgPC9kaXY+CgogICAgICAke0MubGVuZ3RoPjA/d2AKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZCI+CiAgICAgICAgICAgICAgJHtDLm1hcChfPT53YAogICAgICAgICAgICAgICAgICA8c3otcm91dGUtY2FyZAogICAgICAgICAgICAgICAgICAgIC5yb3V0ZT0ke199CiAgICAgICAgICAgICAgICAgICAgLnNob3dBY3Rpb25zPSR7dGhpcy5zaG93QWN0aW9uc0ZpbHRlcj8uKF8pPz8hMX0KICAgICAgICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVSb3V0ZUNsaWNrKF8pfQogICAgICAgICAgICAgICAgICA+PC9zei1yb3V0ZS1jYXJkPgogICAgICAgICAgICAgICAgYCl9CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYDp3YAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbXB0eS1zdGF0ZSI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZW1wdHktc3RhdGUtaWNvbiI+JiN4MWY1MGQ7PC9kaXY+CiAgICAgICAgICAgICAgPGRpdj5ObyByb3V0ZXMgbWF0Y2ggeW91ciBmaWx0ZXJzPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYH0KICAgIGB9aGFuZGxlUm91dGVDbGljayhDKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJyb3V0ZS1jbGljayIse2RldGFpbDpDLGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLGIyKHRoaXMseil9c3RhdGlje2IyKGEsdCl9fTtyZXR1cm4gTj1hfSkoKX0pO3ZhciBaYyxMaSxySmEscDlhPWcoKCk9PntwZSgpO1pjPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxMaT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sckphPSgoKT0+e2xldCBzPVtuZSgic3otY29uZmlnLXNlY3Rpb24iKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXSxPLCQ9W10sRT1bXSxILGs9W10sUz1bXSxJLFA9W10sUj1bXSxLLFY9W10sVz1bXSxtZSxCPVtdLFU9W107dmFyIGhlPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJTekNvbmZpZ1NlY3Rpb24iKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgRj10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZ30pXSxwPVtMKHt0eXBlOlN0cmluZ30pXSxjPVtMKHt0eXBlOlN0cmluZ30pXSx4PVtMKHt0eXBlOlN0cmluZ30pXSx5PVtMKHt0eXBlOkFycmF5fSldLE49W0woe3R5cGU6QXJyYXl9KV0sTz1bTCh7dHlwZTpBcnJheX0pXSxIPVtMKHt0eXBlOkJvb2xlYW59KV0sST1bTCh7dHlwZTpCb29sZWFufSldLEs9W1koKV0sbWU9W1koKV0sWmModGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0aXRsZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4idGl0bGUiaW4gaiwiaGFzIiksZ2V0Omkoaj0+ai50aXRsZSwiZ2V0Iiksc2V0OmkoKGosdWUpPT57ai50aXRsZT11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSxvLGwpLFpjKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic3VidGl0bGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoaj0+InN1YnRpdGxlImluIGosImhhcyIpLGdldDppKGo9Pmouc3VidGl0bGUsImdldCIpLHNldDppKChqLHVlKT0+e2ouc3VidGl0bGU9dWV9LCJzZXQiKX0sbWV0YWRhdGE6Rn0sZCx1KSxaYyh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Imljb24iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoaj0+Imljb24iaW4gaiwiaGFzIiksZ2V0Omkoaj0+ai5pY29uLCJnZXQiKSxzZXQ6aSgoaix1ZSk9PntqLmljb249dWV9LCJzZXQiKX0sbWV0YWRhdGE6Rn0sYix2KSxaYyh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InN0YXR1cyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4ic3RhdHVzImluIGosImhhcyIpLGdldDppKGo9Pmouc3RhdHVzLCJnZXQiKSxzZXQ6aSgoaix1ZSk9PntqLnN0YXR1cz11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSxtLGYpLFpjKHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZmllbGRzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGo9PiJmaWVsZHMiaW4gaiwiaGFzIiksZ2V0Omkoaj0+ai5maWVsZHMsImdldCIpLHNldDppKChqLHVlKT0+e2ouZmllbGRzPXVlfSwic2V0Iil9LG1ldGFkYXRhOkZ9LE0seiksWmModGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJhY3Rpb25zIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGo9PiJhY3Rpb25zImluIGosImhhcyIpLGdldDppKGo9PmouYWN0aW9ucywiZ2V0Iiksc2V0OmkoKGosdWUpPT57ai5hY3Rpb25zPXVlfSwic2V0Iil9LG1ldGFkYXRhOkZ9LEMsXyksWmModGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJsaW5rcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4ibGlua3MiaW4gaiwiaGFzIiksZ2V0Omkoaj0+ai5saW5rcywiZ2V0Iiksc2V0OmkoKGosdWUpPT57ai5saW5rcz11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSwkLEUpLFpjKHRoaXMsbnVsbCxILHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY29sbGFwc2libGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoaj0+ImNvbGxhcHNpYmxlImluIGosImhhcyIpLGdldDppKGo9PmouY29sbGFwc2libGUsImdldCIpLHNldDppKChqLHVlKT0+e2ouY29sbGFwc2libGU9dWV9LCJzZXQiKX0sbWV0YWRhdGE6Rn0sayxTKSxaYyh0aGlzLG51bGwsSSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNvbGxhcHNlZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4iY29sbGFwc2VkImluIGosImhhcyIpLGdldDppKGo9PmouY29sbGFwc2VkLCJnZXQiKSxzZXQ6aSgoaix1ZSk9PntqLmNvbGxhcHNlZD11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSxQLFIpLFpjKHRoaXMsbnVsbCxLLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNDb2xsYXBzZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoaj0+ImlzQ29sbGFwc2VkImluIGosImhhcyIpLGdldDppKGo9PmouaXNDb2xsYXBzZWQsImdldCIpLHNldDppKChqLHVlKT0+e2ouaXNDb2xsYXBzZWQ9dWV9LCJzZXQiKX0sbWV0YWRhdGE6Rn0sVixXKSxaYyh0aGlzLG51bGwsbWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJoYXNTbG90dGVkQ29udGVudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4iaGFzU2xvdHRlZENvbnRlbnQiaW4gaiwiaGFzIiksZ2V0Omkoaj0+ai5oYXNTbG90dGVkQ29udGVudCwiZ2V0Iiksc2V0OmkoKGosdWUpPT57ai5oYXNTbG90dGVkQ29udGVudD11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSxCLFUpLFpjKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOkZ9LG51bGwsdCksaGU9YT1lLnZhbHVlLEYmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Rn0pfXN0YXRpYyBkZW1vPWkoKCk9PndgCiAgICA8c3otY29uZmlnLXNlY3Rpb24KICAgICAgdGl0bGU9IlNtYXJ0UHJveHkiCiAgICAgIHN1YnRpdGxlPSJIVFRQL0hUVFBTIGFuZCBUQ1AvU05JIHJldmVyc2UgcHJveHkiCiAgICAgIGljb249Imx1Y2lkZTpuZXR3b3JrIgogICAgICBzdGF0dXM9ImVuYWJsZWQiCiAgICAgIC5maWVsZHM9JHtbe2tleToiUm91dGUgQ291bnQiLHZhbHVlOjEyfSx7a2V5OiJBQ01FIEVuYWJsZWQiLHZhbHVlOiEwLHR5cGU6ImJvb2xlYW4ifSx7a2V5OiJBY2NvdW50IEVtYWlsIix2YWx1ZToiYWRtaW5AZXhhbXBsZS5jb20ifSx7a2V5OiJVc2UgUHJvZHVjdGlvbiIsdmFsdWU6ITAsdHlwZToiYm9vbGVhbiJ9LHtrZXk6IkF1dG8gUmVuZXciLHZhbHVlOiEwLHR5cGU6ImJvb2xlYW4ifSx7a2V5OiJSZW5ldyBUaHJlc2hvbGQiLHZhbHVlOiIzMCBkYXlzIn1dfQogICAgICAubGlua3M9JHtbe2xhYmVsOiJEb2NzIixocmVmOiJodHRwczovL2NvZGUuZm9zcy5nbG9iYWwvc2VydmUuem9uZS9zbWFydHByb3h5IixpY29uOiJsdWNpZGU6Ym9va09wZW4iLGV4dGVybmFsOiEwfV19CiAgICAgIC5hY3Rpb25zPSR7W3tsYWJlbDoiQ29uZmlndXJlIixpY29uOiJsdWNpZGU6c2V0dGluZ3MiLGV2ZW50OiJjb25maWd1cmUifV19CiAgICA+PC9zei1jb25maWctc2VjdGlvbj4KICAgIDxzei1jb25maWctc2VjdGlvbgogICAgICB0aXRsZT0iRW1haWwgU2VydmVyIgogICAgICBzdWJ0aXRsZT0iU01UUCBlbWFpbCBoYW5kbGluZyB3aXRoIHNtYXJ0bXRhIgogICAgICBpY29uPSJsdWNpZGU6bWFpbCIKICAgICAgc3RhdHVzPSJkaXNhYmxlZCIKICAgICAgLmZpZWxkcz0ke1t7a2V5OiJQb3J0cyIsdmFsdWU6WyIyNSIsIjQ2NSIsIjU4NyJdLHR5cGU6InBpbGxzIn0se2tleToiSG9zdG5hbWUiLHZhbHVlOm51bGx9LHtrZXk6IkRvbWFpbnMiLHZhbHVlOlsiZXhhbXBsZS5jb20iLCJtYWlsLmV4YW1wbGUuY29tIl0sdHlwZToicGlsbHMifV19CiAgICAgIC5saW5rcz0ke1t7bGFiZWw6IkRvY3MiLGhyZWY6Imh0dHBzOi8vY29kZS5mb3NzLmdsb2JhbC9zZXJ2ZS56b25lL3NtYXJ0bXRhIixpY29uOiJsdWNpZGU6Ym9va09wZW4iLGV4dGVybmFsOiEwfSx7bGFiZWw6IlNvdXJjZSIsaHJlZjoiaHR0cHM6Ly9jb2RlLmZvc3MuZ2xvYmFsL3NlcnZlLnpvbmUvc21hcnRtdGEiLGljb246Imx1Y2lkZTpnaXRodWIiLGV4dGVybmFsOiEwfV19CiAgICAgIC5hY3Rpb25zPSR7W3tsYWJlbDoiRW5hYmxlIixpY29uOiJsdWNpZGU6cG93ZXIiLGV2ZW50OiJlbmFibGUifV19CiAgICA+PC9zei1jb25maWctc2VjdGlvbj4KICAgIDxzei1jb25maWctc2VjdGlvbgogICAgICB0aXRsZT0iRE5TIFNlcnZlciIKICAgICAgc3VidGl0bGU9IkF1dGhvcml0YXRpdmUgRE5TIHdpdGggc21hcnRkbnMiCiAgICAgIGljb249Imx1Y2lkZTpnbG9iZSIKICAgICAgc3RhdHVzPSJub3QtY29uZmlndXJlZCIKICAgICAgY29sbGFwc2libGUKICAgICAgLmZpZWxkcz0ke1t7a2V5OiJQb3J0Iix2YWx1ZTo1M30se2tleToiTlMgRG9tYWlucyIsdmFsdWU6WyJuczEuZXhhbXBsZS5jb20iLCJuczIuZXhhbXBsZS5jb20iXSx0eXBlOiJwaWxscyJ9XX0KICAgICAgLmxpbmtzPSR7W3tsYWJlbDoiR2V0dGluZyBTdGFydGVkIixocmVmOiJodHRwczovL2RvY3MuZXhhbXBsZS5jb20vZG5zIixpY29uOiJsdWNpZGU6Ym9va09wZW4iLGV4dGVybmFsOiEwfV19CiAgICA+PC9zei1jb25maWctc2VjdGlvbj4KICBgLCJkZW1vIik7c3RhdGljIGRlbW9Hcm91cHM9WyJDb25maWd1cmF0aW9uIl07I2U9TGkodGhpcyxvLCIiKTtnZXQgdGl0bGUoKXtyZXR1cm4gdGhpcy4jZX1zZXQgdGl0bGUoRil7dGhpcy4jZT1GfSN0PShMaSh0aGlzLGwpLExpKHRoaXMsZCwiIikpO2dldCBzdWJ0aXRsZSgpe3JldHVybiB0aGlzLiN0fXNldCBzdWJ0aXRsZShGKXt0aGlzLiN0PUZ9I2E9KExpKHRoaXMsdSksTGkodGhpcyxiLCIiKSk7Z2V0IGljb24oKXtyZXR1cm4gdGhpcy4jYX1zZXQgaWNvbihGKXt0aGlzLiNhPUZ9I3M9KExpKHRoaXMsdiksTGkodGhpcyxtLCJlbmFibGVkIikpO2dldCBzdGF0dXMoKXtyZXR1cm4gdGhpcy4jc31zZXQgc3RhdHVzKEYpe3RoaXMuI3M9Rn0jaT0oTGkodGhpcyxmKSxMaSh0aGlzLE0sW10pKTtnZXQgZmllbGRzKCl7cmV0dXJuIHRoaXMuI2l9c2V0IGZpZWxkcyhGKXt0aGlzLiNpPUZ9I3I9KExpKHRoaXMseiksTGkodGhpcyxDLFtdKSk7Z2V0IGFjdGlvbnMoKXtyZXR1cm4gdGhpcy4jcn1zZXQgYWN0aW9ucyhGKXt0aGlzLiNyPUZ9I289KExpKHRoaXMsXyksTGkodGhpcywkLFtdKSk7Z2V0IGxpbmtzKCl7cmV0dXJuIHRoaXMuI299c2V0IGxpbmtzKEYpe3RoaXMuI289Rn0jbj0oTGkodGhpcyxFKSxMaSh0aGlzLGssITEpKTtnZXQgY29sbGFwc2libGUoKXtyZXR1cm4gdGhpcy4jbn1zZXQgY29sbGFwc2libGUoRil7dGhpcy4jbj1GfSNsPShMaSh0aGlzLFMpLExpKHRoaXMsUCwhMSkpO2dldCBjb2xsYXBzZWQoKXtyZXR1cm4gdGhpcy4jbH1zZXQgY29sbGFwc2VkKEYpe3RoaXMuI2w9Rn0jYz0oTGkodGhpcyxSKSxMaSh0aGlzLFYsITEpKTtnZXQgaXNDb2xsYXBzZWQoKXtyZXR1cm4gdGhpcy4jY31zZXQgaXNDb2xsYXBzZWQoRil7dGhpcy4jYz1GfSNkPShMaSh0aGlzLFcpLExpKHRoaXMsQiwhMSkpO2dldCBoYXNTbG90dGVkQ29udGVudCgpe3JldHVybiB0aGlzLiNkfXNldCBoYXNTbG90dGVkQ29udGVudChGKXt0aGlzLiNkPUZ9c3RhdGljIHN0eWxlcz1baC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICB9CgogICAgICBkZWVzLXRpbGUgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICA6aG9zdChbY29sbGFwc2VkXSkgZGVlcy10aWxlOjpwYXJ0KGNvbnRlbnQpIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CgogICAgICA6aG9zdChbY29sbGFwc2VkXSkgZGVlcy10aWxlOjpwYXJ0KGZvb3RlcikgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5zZWN0aW9uLWhlYWRlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDEwcHggMTZweDsKICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIH0KCiAgICAgIDpob3N0KFtjb2xsYXBzaWJsZV0pIC5zZWN0aW9uLWhlYWRlciB7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICB9CgogICAgICA6aG9zdChbY29sbGFwc2libGVdKSAuc2VjdGlvbi1oZWFkZXI6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItaG92ZXIpOwogICAgICB9CgogICAgICAuaGVhZGVyLWxlZnQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDEwcHg7CiAgICAgICAgbWluLXdpZHRoOiAwOwogICAgICAgIGZsZXg6IDE7CiAgICAgIH0KCiAgICAgIC5oZWFkZXItaWNvbiB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIHdpZHRoOiAyOHB4OwogICAgICAgIGhlaWdodDogMjhweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC5oZWFkZXItaWNvbiBkZWVzLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgfQoKICAgICAgLmhlYWRlci10ZXh0IHsKICAgICAgICBtaW4td2lkdGg6IDA7CiAgICAgIH0KCiAgICAgIC5oZWFkZXItdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTsKICAgICAgICBsaW5lLWhlaWdodDogMS4zOwogICAgICB9CgogICAgICAuaGVhZGVyLXN1YnRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzsKICAgICAgICBtYXJnaW4tdG9wOiAxcHg7CiAgICAgIH0KCiAgICAgIC5oZWFkZXItcmlnaHQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDEwcHg7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC8qIFN0YXR1cyBiYWRnZSAqLwogICAgICAuc3RhdHVzLWJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4OwogICAgICAgIHBhZGRpbmc6IDNweCAxMHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OTlweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CgogICAgICAuc3RhdHVzLWJhZGdlLmVuYWJsZWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZGNmY2U3IiwicmdiYSgzNCwxOTcsOTQsMC4yKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxNmEzNGEiLCIjMjJjNTVlIil9OwogICAgICB9CgogICAgICAuc3RhdHVzLWJhZGdlLmRpc2FibGVkIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZlZTJlMiIsInJnYmEoMjM5LDY4LDY4LDAuMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZGMyNjI2IiwiI2VmNDQ0NCIpfTsKICAgICAgfQoKICAgICAgLnN0YXR1cy1iYWRnZS5ub3QtY29uZmlndXJlZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCJyZ2JhKDExMywxMTMsMTIyLDAuMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQoKICAgICAgLnN0YXR1cy1iYWRnZS53YXJuaW5nIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZlZjNjNyIsInJnYmEoMjQ1LDE1OCwxMSwwLjE1KSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM5MjQwMGUiLCIjZmJiZjI0Iil9OwogICAgICB9CgogICAgICAuc3RhdHVzLWRvdCB7CiAgICAgICAgd2lkdGg6IDdweDsKICAgICAgICBoZWlnaHQ6IDdweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgIH0KCiAgICAgIC5zdGF0dXMtYmFkZ2UuZW5hYmxlZCAuc3RhdHVzLWRvdCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiMxNmEzNGEiLCIjMjJjNTVlIil9OwogICAgICB9CgogICAgICAuc3RhdHVzLWJhZGdlLmRpc2FibGVkIC5zdGF0dXMtZG90IHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2RjMjYyNiIsIiNlZjQ0NDQiKX07CiAgICAgIH0KCiAgICAgIC5zdGF0dXMtYmFkZ2Uubm90LWNvbmZpZ3VyZWQgLnN0YXR1cy1kb3QgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjYTFhMWFhIiwiIzUyNTI1YiIpfTsKICAgICAgfQoKICAgICAgLnN0YXR1cy1iYWRnZS53YXJuaW5nIC5zdGF0dXMtZG90IHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y1OWUwYiIsIiNmYmJmMjQiKX07CiAgICAgIH0KCiAgICAgIC8qIEZvb3RlciBhY3Rpb24gYnV0dG9ucyDigJQgY2Fub25pY2FsIGRlZXMtbW9kYWwgLyBkZWVzLXRpbGUgcGF0dGVybiAqLwogICAgICAuc2VjdGlvbi1mb290ZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAwOwogICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAudGlsZS1idXR0b24gewogICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1zdWJ0bGUpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4OwogICAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgfQoKICAgICAgLnRpbGUtYnV0dG9uOmZpcnN0LWNoaWxkIHsKICAgICAgICBib3JkZXItbGVmdDogbm9uZTsKICAgICAgfQoKICAgICAgLnRpbGUtYnV0dG9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWhvdmVyKTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICB9CgogICAgICAudGlsZS1idXR0b24ucHJpbWFyeSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE3LjIgOTEuMiUgNTkuOCUpIiwiaHNsKDIxMy4xIDkzLjklIDY3LjglKSIpfTsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICB9CgogICAgICAudGlsZS1idXR0b24ucHJpbWFyeTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTcuMiA5MS4yJSA1OS44JSAvIDAuMDgpIiwiaHNsKDIxMy4xIDkzLjklIDY3LjglIC8gMC4wOCkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE3LjIgOTEuMiUgNTAlKSIsImhzbCgyMTMuMSA5My45JSA3NSUpIil9OwogICAgICB9CgogICAgICAudGlsZS1idXR0b24gZGVlcy1pY29uIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgIH0KCiAgICAgIC8qIENoZXZyb24gKi8KICAgICAgLmNoZXZyb24gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjAwbXMgZWFzZTsKICAgICAgfQoKICAgICAgLmNoZXZyb24uY29sbGFwc2VkIHsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpOwogICAgICB9CgogICAgICAuY2hldnJvbiBkZWVzLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgfQoKICAgICAgLyogQ29udGVudCAqLwogICAgICAuc2VjdGlvbi1jb250ZW50IHsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICB9CgogICAgICAuZmllbGRzLWxpc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgfQoKICAgICAgLyogRmllbGQgcm93cyAqLwogICAgICAuZmllbGQtcm93IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBwYWRkaW5nOiAxMHB4IDIwcHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzFhMWExZSIpfTsKICAgICAgICBnYXA6IDE2cHg7CiAgICAgIH0KCiAgICAgIC5maWVsZHMtbGlzdCAuZmllbGQtcm93Omxhc3QtY2hpbGQgewogICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7CiAgICAgIH0KCiAgICAgIC5maWVsZC1rZXkgewogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgbWluLXdpZHRoOiAxNDBweDsKICAgICAgICBwYWRkaW5nLXRvcDogMXB4OwogICAgICB9CgogICAgICAuZmllbGQtdmFsdWUgewogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBmb250LWZhbWlseTogJ1NGIE1vbm8nLCBNb25hY28sICdDYXNjYWRpYSBDb2RlJywgbW9ub3NwYWNlOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsOwogICAgICB9CgogICAgICAuZmllbGQtdmFsdWUubnVsbC12YWx1ZSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjYTFhMWFhIiwiIzUyNTI1YiIpfTsKICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgICAgIH0KCiAgICAgIC8qIEJvb2xlYW4gZGlzcGxheSAqLwogICAgICAuYm9vbC12YWx1ZSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDVweDsKICAgICAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgfQoKICAgICAgLmJvb2wtdmFsdWUudHJ1ZSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTZhMzRhIiwiIzIyYzU1ZSIpfTsKICAgICAgfQoKICAgICAgLmJvb2wtdmFsdWUuZmFsc2UgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2RjMjYyNiIsIiNlZjQ0NDQiKX07CiAgICAgIH0KCiAgICAgIC5ib29sLWRvdCB7CiAgICAgICAgd2lkdGg6IDZweDsKICAgICAgICBoZWlnaHQ6IDZweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgIH0KCiAgICAgIC5ib29sLXZhbHVlLnRydWUgLmJvb2wtZG90IHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiIzE2YTM0YSIsIiMyMmM1NWUiKX07CiAgICAgIH0KCiAgICAgIC5ib29sLXZhbHVlLmZhbHNlIC5ib29sLWRvdCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNkYzI2MjYiLCIjZWY0NDQ0Iil9OwogICAgICB9CgogICAgICAvKiBQaWxscyAqLwogICAgICAucGlsbHMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgIGdhcDogNXB4OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgIH0KCiAgICAgIC5waWxsIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDJweCA5cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5OXB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGZvbnQtZmFtaWx5OiAnU0YgTW9ubycsIE1vbmFjbywgJ0Nhc2NhZGlhIENvZGUnLCBtb25vc3BhY2U7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNlZmY2ZmYiLCJyZ2JhKDU5LDEzMCwyNDYsMC4xKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMyNTYzZWIiLCIjNjBhNWZhIil9OwogICAgICB9CgogICAgICAvKiBDb2RlIHZhbHVlICovCiAgICAgIC5jb2RlLXZhbHVlIHsKICAgICAgICBmb250LWZhbWlseTogJ1NGIE1vbm8nLCBNb25hY28sICdDYXNjYWRpYSBDb2RlJywgbW9ub3NwYWNlOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMxODE4MWIiKX07CiAgICAgICAgcGFkZGluZzogMnB4IDhweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLyogTGluayB2YWx1ZSAqLwogICAgICAubGluay12YWx1ZSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMjU2M2ViIiwiIzYwYTVmYSIpfTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgfQoKICAgICAgLmxpbmstdmFsdWU6aG92ZXIgewogICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogICAgICB9CgogICAgICAvKiBEZXNjcmlwdGlvbiBoaW50ICovCiAgICAgIC5maWVsZC1kZXNjcmlwdGlvbiB7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2ExYTFhYSIsIiM1MjUyNWIiKX07CiAgICAgICAgbWFyZ2luLXRvcDogM3B4OwogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICB9CgogICAgICAvKiBTbG90IGZvciBjdXN0b20gY29udGVudCAqLwogICAgICAuc2xvdC1jb250ZW50IHsKICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMWExYTFlIil9OwogICAgICB9CgogICAgICAuc2xvdC1jb250ZW50LmVtcHR5IHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CgogICAgICAvKiBCYWRnZSB0eXBlICovCiAgICAgIC5iYWRnZS12YWx1ZSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiAycHggOXB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OTlweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMyNzI3MmEiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNTI1MjViIiwiI2ExYTFhYSIpfTsKICAgICAgfQogICAgYF07YXN5bmMgY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuaXNDb2xsYXBzZWQ9dGhpcy5jb2xsYXBzZWQsdGhpcy5jb2xsYXBzaWJsZSYmdGhpcy5zZXRBdHRyaWJ1dGUoImNvbGxhcHNpYmxlIiwiIil9dXBkYXRlZChGKXtzdXBlci51cGRhdGVkKEYpLEYuaGFzKCJpc0NvbGxhcHNlZCIpJiZ0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgiY29sbGFwc2VkIix0aGlzLmlzQ29sbGFwc2VkKX1vblNsb3RDaGFuZ2UoRil7bGV0IGo9Ri50YXJnZXQ7dGhpcy5oYXNTbG90dGVkQ29udGVudD1qLmFzc2lnbmVkTm9kZXMoe2ZsYXR0ZW46ITB9KS5sZW5ndGg+MH1yZW5kZXIoKXtsZXQgRj17ZW5hYmxlZDoiRW5hYmxlZCIsZGlzYWJsZWQ6IkRpc2FibGVkIiwibm90LWNvbmZpZ3VyZWQiOiJOb3QgQ29uZmlndXJlZCIsd2FybmluZzoiV2FybmluZyJ9O3JldHVybiB3YAogICAgICA8ZGVlcy10aWxlPgogICAgICAgIDxkaXYKICAgICAgICAgIHNsb3Q9ImhlYWRlciIKICAgICAgICAgIGNsYXNzPSJzZWN0aW9uLWhlYWRlciIKICAgICAgICAgIEBjbGljaz0keygpPT57dGhpcy5jb2xsYXBzaWJsZSYmKHRoaXMuaXNDb2xsYXBzZWQ9IXRoaXMuaXNDb2xsYXBzZWQpfX0KICAgICAgICA+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXItbGVmdCI+CiAgICAgICAgICAgICR7dGhpcy5pY29uP3dgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyLWljb24iPgogICAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0ke3RoaXMuaWNvbn0+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlci10ZXh0Ij4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXItdGl0bGUiPiR7dGhpcy50aXRsZX08L2Rpdj4KICAgICAgICAgICAgICAke3RoaXMuc3VidGl0bGU/d2A8ZGl2IGNsYXNzPSJoZWFkZXItc3VidGl0bGUiPiR7dGhpcy5zdWJ0aXRsZX08L2Rpdj5gOiIifQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyLXJpZ2h0Ij4KICAgICAgICAgICAgJHt0aGlzLnN0YXR1cz93YAogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzdGF0dXMtYmFkZ2UgJHt0aGlzLnN0YXR1c30iPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN0YXR1cy1kb3QiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICR7Rlt0aGlzLnN0YXR1c118fHRoaXMuc3RhdHVzfQogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICAgJHt0aGlzLmNvbGxhcHNpYmxlP3dgCiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNoZXZyb24gJHt0aGlzLmlzQ29sbGFwc2VkPyJjb2xsYXBzZWQiOiIifSI+CiAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7Imx1Y2lkZTpjaGV2cm9uRG93biJ9PjwvZGVlcy1pY29uPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgYDoiIn0KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tY29udGVudCI+CiAgICAgICAgICAke3RoaXMuZmllbGRzLmxlbmd0aD4wP3dgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkcy1saXN0Ij4KICAgICAgICAgICAgICAke3RoaXMuZmllbGRzLm1hcChqPT50aGlzLnJlbmRlckZpZWxkKGopKX0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgOiIifQogICAgICAgICAgPGRpdiBjbGFzcz0ic2xvdC1jb250ZW50ICR7dGhpcy5oYXNTbG90dGVkQ29udGVudD8iIjoiZW1wdHkifSI+CiAgICAgICAgICAgIDxzbG90IEBzbG90Y2hhbmdlPSR7dGhpcy5vblNsb3RDaGFuZ2V9Pjwvc2xvdD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgICR7dGhpcy5saW5rcy5sZW5ndGg+MHx8dGhpcy5hY3Rpb25zLmxlbmd0aD4wP3dgCiAgICAgICAgICA8ZGl2IHNsb3Q9ImZvb3RlciIgY2xhc3M9InNlY3Rpb24tZm9vdGVyIj4KICAgICAgICAgICAgJHt0aGlzLmxpbmtzLm1hcChqPT53YAogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBjbGFzcz0idGlsZS1idXR0b24iCiAgICAgICAgICAgICAgICBocmVmPSR7ai5ocmVmfQogICAgICAgICAgICAgICAgdGFyZ2V0PSR7ai5leHRlcm5hbD8iX2JsYW5rIjoiX3NlbGYifQogICAgICAgICAgICAgICAgcmVsPSR7ai5leHRlcm5hbD8ibm9vcGVuZXIgbm9yZWZlcnJlciI6IiJ9CiAgICAgICAgICAgICAgICBAY2xpY2s9JHt1ZT0+dWUuc3RvcFByb3BhZ2F0aW9uKCl9CiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgJHtqLmljb24/d2A8ZGVlcy1pY29uIC5pY29uPSR7ai5pY29ufT48L2RlZXMtaWNvbj5gOiIifQogICAgICAgICAgICAgICAgJHtqLmxhYmVsfQogICAgICAgICAgICAgICAgJHtqLmV4dGVybmFsP3dgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6ZXh0ZXJuYWxMaW5rIn0+PC9kZWVzLWljb24+YDoiIn0KICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIGApfQogICAgICAgICAgICAke3RoaXMuYWN0aW9ucy5tYXAoaj0+d2AKICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJ0aWxlLWJ1dHRvbiBwcmltYXJ5IiBAY2xpY2s9JHt1ZT0+e3VlLnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoai5ldmVudHx8ImFjdGlvbiIse2RldGFpbDpqLmRldGFpbHx8e2xhYmVsOmoubGFiZWx9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9fT4KICAgICAgICAgICAgICAgICR7ai5pY29uP3dgPGRlZXMtaWNvbiAuaWNvbj0ke2ouaWNvbn0+PC9kZWVzLWljb24+YDoiIn0KICAgICAgICAgICAgICAgICR7ai5sYWJlbH0KICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgYCl9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgOiIifQogICAgICA8L2RlZXMtdGlsZT4KICAgIGB9cmVuZGVyRmllbGQoRil7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImZpZWxkLXJvdyI+CiAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQta2V5Ij4ke0Yua2V5fTwvZGl2PgogICAgICAgIDxkaXY+CiAgICAgICAgICAke3RoaXMucmVuZGVyRmllbGRWYWx1ZShGKX0KICAgICAgICAgICR7Ri5kZXNjcmlwdGlvbj93YDxkaXYgY2xhc3M9ImZpZWxkLWRlc2NyaXB0aW9uIj4ke0YuZGVzY3JpcHRpb259PC9kaXY+YDoiIn0KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfXJlbmRlckZpZWxkVmFsdWUoRil7bGV0IGo9Ri52YWx1ZSx1ZT1GLnR5cGV8fHRoaXMuaW5mZXJUeXBlKGopO2lmKGo9PW51bGwpcmV0dXJuIHdgPHNwYW4gY2xhc3M9ImZpZWxkLXZhbHVlIG51bGwtdmFsdWUiPk5vdCBjb25maWd1cmVkPC9zcGFuPmA7c3dpdGNoKHVlKXtjYXNlImJvb2xlYW4iOnJldHVybiB3YAogICAgICAgICAgPHNwYW4gY2xhc3M9ImJvb2wtdmFsdWUgJHtqPyJ0cnVlIjoiZmFsc2UifSI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJib29sLWRvdCI+PC9zcGFuPgogICAgICAgICAgICAke2o/IkVuYWJsZWQiOiJEaXNhYmxlZCJ9CiAgICAgICAgICA8L3NwYW4+CiAgICAgICAgYDtjYXNlInBpbGxzIjpyZXR1cm4gQXJyYXkuaXNBcnJheShqKSYmai5sZW5ndGg9PT0wP3dgPHNwYW4gY2xhc3M9ImZpZWxkLXZhbHVlIG51bGwtdmFsdWUiPk5vbmU8L3NwYW4+YDp3YAogICAgICAgICAgPGRpdiBjbGFzcz0icGlsbHMiPgogICAgICAgICAgICAke2oubWFwKGxlPT53YDxzcGFuIGNsYXNzPSJwaWxsIj4ke2xlfTwvc3Bhbj5gKX0KICAgICAgICAgIDwvZGl2PgogICAgICAgIGA7Y2FzZSJjb2RlIjpyZXR1cm4gd2A8c3BhbiBjbGFzcz0iY29kZS12YWx1ZSI+JHtTdHJpbmcoail9PC9zcGFuPmA7Y2FzZSJiYWRnZSI6cmV0dXJuIHdgPHNwYW4gY2xhc3M9ImJhZGdlLXZhbHVlIj4ke1N0cmluZyhqKX08L3NwYW4+YDtjYXNlImxpbmsiOnJldHVybiB3YAogICAgICAgICAgPHNwYW4KICAgICAgICAgICAgY2xhc3M9ImxpbmstdmFsdWUiCiAgICAgICAgICAgIEBjbGljaz0keygpPT57Ri5saW5rVG8mJnRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoIm5hdmlnYXRlIix7ZGV0YWlsOnt0YXJnZXQ6Ri5saW5rVG99LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9fQogICAgICAgICAgPiR7U3RyaW5nKGopfTwvc3Bhbj4KICAgICAgICBgO2RlZmF1bHQ6cmV0dXJuIHdgPHNwYW4gY2xhc3M9ImZpZWxkLXZhbHVlIj4ke1N0cmluZyhqKX08L3NwYW4+YH19aW5mZXJUeXBlKEYpe3JldHVybiB0eXBlb2YgRj09ImJvb2xlYW4iPyJib29sZWFuIjpBcnJheS5pc0FycmF5KEYpPyJwaWxscyI6InRleHQifWNvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSxMaSh0aGlzLFUpfXN0YXRpY3tMaShhLHQpfX07cmV0dXJuIGhlPWF9KSgpfSk7dmFyIHlvdCxTUSxvSmEsaDlhPWcoKCk9PntwZSgpO3lvdD1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sU1E9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LG9KYT0oKCk9PntsZXQgcz1bbmUoInN6LWNvbmZpZy1vdmVydmlldyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdO3ZhciBjPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJTekNvbmZpZ092ZXJ2aWV3Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGI9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpTdHJpbmd9KV0scD1bTCh7dHlwZTpTdHJpbmd9KV0seW90KHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaGVhZGluZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh2PT4iaGVhZGluZyJpbiB2LCJoYXMiKSxnZXQ6aSh2PT52LmhlYWRpbmcsImdldCIpLHNldDppKCh2LHgpPT57di5oZWFkaW5nPXh9LCJzZXQiKX0sbWV0YWRhdGE6Yn0sbyxsKSx5b3QodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpbmZvVGV4dCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh2PT4iaW5mb1RleHQiaW4gdiwiaGFzIiksZ2V0Omkodj0+di5pbmZvVGV4dCwiZ2V0Iiksc2V0OmkoKHYseCk9Pnt2LmluZm9UZXh0PXh9LCJzZXQiKX0sbWV0YWRhdGE6Yn0sZCx1KSx5b3QobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6Yn0sbnVsbCx0KSxjPWE9ZS52YWx1ZSxiJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KX1zdGF0aWMgZGVtbz1pKCgpPT53YDxzei1jb25maWctb3ZlcnZpZXcKICAgIGhlYWRpbmc9IkNvbmZpZ3VyYXRpb24iCiAgICBpbmZvVGV4dD0iVGhpcyBpcyBhIHJlYWQtb25seSB2aWV3IG9mIHRoZSBjdXJyZW50IHJ1bm5pbmcgY29uZmlndXJhdGlvbi4iCiAgPgogICAgPGRpdiBzdHlsZT0icGFkZGluZzogMjBweDsgdGV4dC1hbGlnbjogY2VudGVyOyBjb2xvcjogIzcxNzE3YTsgZm9udC1zaXplOiAxNHB4OyI+CiAgICAgIFBsYWNlICZsdDtzei1jb25maWctc2VjdGlvbiZndDsgZWxlbWVudHMgaGVyZQogICAgPC9kaXY+CiAgPC9zei1jb25maWctb3ZlcnZpZXc+YCwiZGVtbyIpO3N0YXRpYyBkZW1vR3JvdXBzPVsiQ29uZmlndXJhdGlvbiJdOyNlPVNRKHRoaXMsbywiIik7Z2V0IGhlYWRpbmcoKXtyZXR1cm4gdGhpcy4jZX1zZXQgaGVhZGluZyhiKXt0aGlzLiNlPWJ9I3Q9KFNRKHRoaXMsbCksU1EodGhpcyxkLCIiKSk7Z2V0IGluZm9UZXh0KCl7cmV0dXJuIHRoaXMuI3R9c2V0IGluZm9UZXh0KGIpe3RoaXMuI3Q9Yn1zdGF0aWMgc3R5bGVzPVtoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICAuaGVhZGluZyB7CiAgICAgICAgZm9udC1zaXplOiAyMHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICB9CgogICAgICAuaW5mby1iYW5uZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgIHBhZGRpbmc6IDE0cHggMThweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2VmZjZmZiIsInJnYmEoNTksMTMwLDI0NiwwLjA4KSIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2JmZGJmZSIsInJnYmEoNTksMTMwLDI0NiwwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzFlNDBhZiIsIiM5M2M1ZmQiKX07CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICAgIH0KCiAgICAgIC5pbmZvLWJhbm5lciBkZWVzLWljb24gewogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgICBtYXJnaW4tdG9wOiAxcHg7CiAgICAgIH0KCiAgICAgIDo6c2xvdHRlZChzei1jb25maWctc2VjdGlvbikgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7CiAgICAgIH0KCiAgICAgIDo6c2xvdHRlZChzei1jb25maWctc2VjdGlvbjpsYXN0LWNoaWxkKSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgICR7dGhpcy5oZWFkaW5nP3dgPGRpdiBjbGFzcz0iaGVhZGluZyI+JHt0aGlzLmhlYWRpbmd9PC9kaXY+YDoiIn0KICAgICAgJHt0aGlzLmluZm9UZXh0P3dgCiAgICAgICAgPGRpdiBjbGFzcz0iaW5mby1iYW5uZXIiPgogICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6aW5mbyJ9PjwvZGVlcy1pY29uPgogICAgICAgICAgPHNwYW4+JHt0aGlzLmluZm9UZXh0fTwvc3Bhbj4KICAgICAgICA8L2Rpdj4KICAgICAgYDoiIn0KICAgICAgPHNsb3Q+PC9zbG90PgogICAgYH1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksU1EodGhpcyx1KX1zdGF0aWN7U1EoYSx0KX19O3JldHVybiBjPWF9KSgpfSk7dmFyIG5KYSxsSmEsY0phLGY5YT1nKCgpPT57cGUoKTtpYygpO25KYT1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sbEphPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxjSmE9KCgpPT57bGV0IHM9W25lKCJzei1kZW1vLXZpZXctZGFzaGJvYXJkIildLGUsdD1bXSxhLHI9d2U7dmFyIG49Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIlN6RGVtb1ZpZXdEYXNoYm9hcmQiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgbz10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuSmEobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6b30sbnVsbCx0KSxuPWE9ZS52YWx1ZSxvJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm99KX1hcHB1aT1udWxsO2FzeW5jIG9uQWN0aXZhdGUobyl7dGhpcy5hcHB1aT1vLmFwcHVpLHRoaXMuYXBwdWkuc2V0U2Vjb25kYXJ5TWVudSh7aGVhZGluZzoiRGFzaGJvYXJkIixncm91cHM6W3tuYW1lOiJRdWljayBBY3Rpb25zIixpdGVtczpbe3R5cGU6ImFjdGlvbiIsa2V5OiJEZXBsb3kgU2VydmljZSIsaWNvbk5hbWU6Imx1Y2lkZTpSb2NrZXQiLGFjdGlvbjppKCgpPT57Y29uc29sZS5sb2coIkRlcGxveSBzZXJ2aWNlIil9LCJhY3Rpb24iKX0se3R5cGU6ImFjdGlvbiIsa2V5OiJBZGQgRG9tYWluIixpY29uTmFtZToibHVjaWRlOkdsb2JlIixhY3Rpb246aSgoKT0+e2NvbnNvbGUubG9nKCJBZGQgZG9tYWluIil9LCJhY3Rpb24iKX0se3R5cGU6ImFjdGlvbiIsa2V5OiJDcmVhdGUgVG9rZW4iLGljb25OYW1lOiJsdWNpZGU6S2V5IixhY3Rpb246aSgoKT0+e2NvbnNvbGUubG9nKCJDcmVhdGUgdG9rZW4iKX0sImFjdGlvbiIpfV19LHtuYW1lOiJTeXN0ZW0iLGl0ZW1zOlt7dHlwZToiYWN0aW9uIixrZXk6IlJlZnJlc2ggU3RhdHMiLGljb25OYW1lOiJsdWNpZGU6UmVmcmVzaEN3IixhY3Rpb246aSgoKT0+e2NvbnNvbGUubG9nKCJSZWZyZXNoIil9LCJhY3Rpb24iKX0se3R5cGU6ImFjdGlvbiIsa2V5OiJWaWV3IExvZ3MiLGljb25OYW1lOiJsdWNpZGU6VGVybWluYWwiLGFjdGlvbjppKCgpPT57Y29uc29sZS5sb2coIlZpZXcgbG9ncyIpfSwiYWN0aW9uIil9XX1dfSl9b25EZWFjdGl2YXRlKCl7fXN0YXRpYyBzdHlsZXM9W2guZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAucGFnZS1oZWFkZXIgewogICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgIH0KCiAgICAgIC5wYWdlLXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDI0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICAgIG1hcmdpbjogMCAwIDhweCAwOwogICAgICB9CgogICAgICAucGFnZS1zdWJ0aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgICAgbWFyZ2luOiAwOwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0icGFnZS1oZWFkZXIiPgogICAgICAgIDxoMSBjbGFzcz0icGFnZS10aXRsZSI+RGFzaGJvYXJkPC9oMT4KICAgICAgICA8cCBjbGFzcz0icGFnZS1zdWJ0aXRsZSI+T3ZlcnZpZXcgb2YgeW91ciBvbmVib3ggaW5mcmFzdHJ1Y3R1cmU8L3A+CiAgICAgIDwvZGl2PgoKICAgICAgPHN6LWRhc2hib2FyZC12aWV3CiAgICAgICAgLmNsdXN0ZXJTdGF0cz0ke3t0b3RhbFNlcnZpY2VzOjEyLHJ1bm5pbmc6OSxzdG9wcGVkOjMsZG9ja2VyU3RhdHVzOiJydW5uaW5nIn19CiAgICAgICAgLnJlc291cmNlVXNhZ2U9JHt7Y3B1OjQ1LG1lbW9yeVVzZWQ6IjYuMiBHQiIsbWVtb3J5VG90YWw6IjE2IEdCIixuZXR3b3JrSW46IjIuNSBNQi9zIixuZXR3b3JrT3V0OiIxLjIgTUIvcyIsdG9wQ29uc3VtZXJzOlt7bmFtZToibW9uZ29kYiIsbWVtb3J5OiIxLjIgR0IifSx7bmFtZToiY2xpY2tob3VzZSIsbWVtb3J5OiI5ODAgTUIifSx7bmFtZToibmdpbngtcHJveHkiLG1lbW9yeToiMjU2IE1CIn1dfX0KICAgICAgICAucGxhdGZvcm1TZXJ2aWNlcz0ke1t7bmFtZToiTW9uZ29EQiIsc3RhdHVzOiJydW5uaW5nIixpY29uOiJkYXRhYmFzZSJ9LHtuYW1lOiJTMyBTdG9yYWdlIixzdGF0dXM6InJ1bm5pbmciLGljb246InN0b3JhZ2UifSx7bmFtZToiQ2xpY2tIb3VzZSIsc3RhdHVzOiJzdG9wcGVkIixpY29uOiJhbmFseXRpY3MifSx7bmFtZToiUmVkaXMgQ2FjaGUiLHN0YXR1czoicnVubmluZyIsaWNvbjoiY2FjaGUifV19CiAgICAgICAgLnRyYWZmaWM9JHt7cmVxdWVzdHM6MTU0MjAsZXJyb3JzOjIzLGVycm9yUGVyY2VudDouMTUsYXZnUmVzcG9uc2U6MTQ1LHJlcVBlck1pbjo4NTYsc3RhdHVzMnh4OjE0ODUwLHN0YXR1czN4eDozMjAsc3RhdHVzNHh4OjIyNyxzdGF0dXM1eHg6MjN9fQogICAgICAgIC5wcm94eT0ke3todHRwUG9ydDoiODAiLGh0dHBzUG9ydDoiNDQzIixodHRwQWN0aXZlOiEwLGh0dHBzQWN0aXZlOiEwLHJvdXRlQ291bnQ6IjI0In19CiAgICAgICAgLmNlcnRpZmljYXRlcz0ke3t2YWxpZDoxOCxleHBpcmluZzoyLGV4cGlyZWQ6MH19CiAgICAgICAgLmRucz0ke3tyZWNvcmRzOjQ1LHpvbmVzOjgscGVuZGluZ0NoYW5nZXM6MH19CiAgICAgICAgLnNzbD0ke3thY3RpdmVDZXJ0czoyMCxhdXRvUmVuZXc6ITAscHJvdmlkZXI6IkxldCdzIEVuY3J5cHQifX0KICAgICAgICBAcXVpY2stYWN0aW9uPSR7bz0+Y29uc29sZS5sb2coIlF1aWNrIGFjdGlvbjoiLG8uZGV0YWlsKX0KICAgICAgPjwvc3otZGFzaGJvYXJkLXZpZXc+CiAgICBgfXN0YXRpY3tsSmEoYSx0KX19O3JldHVybiBuPWF9KSgpfSk7dmFyIEMxZSxSZyxkSmEsbTlhPWcoKCk9PntwZSgpO2ljKCk7QzFlPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxSZz1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sZEphPSgoKT0+e2xldCBzPVtuZSgic3otZGVtby12aWV3LXNlcnZpY2VzIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W107dmFyIHg9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIlN6RGVtb1ZpZXdTZXJ2aWNlcyIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBtPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W1koKV0scD1bWSgpXSxjPVtZKCldLEMxZSh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImN1cnJlbnRWaWV3IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGY9PiJjdXJyZW50VmlldyJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLmN1cnJlbnRWaWV3LCJnZXQiKSxzZXQ6aSgoZix5KT0+e2YuY3VycmVudFZpZXc9eX0sInNldCIpfSxtZXRhZGF0YTptfSxvLGwpLEMxZSh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlbGVjdGVkU2VydmljZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShmPT4ic2VsZWN0ZWRTZXJ2aWNlImluIGYsImhhcyIpLGdldDppKGY9PmYuc2VsZWN0ZWRTZXJ2aWNlLCJnZXQiKSxzZXQ6aSgoZix5KT0+e2Yuc2VsZWN0ZWRTZXJ2aWNlPXl9LCJzZXQiKX0sbWV0YWRhdGE6bX0sZCx1KSxDMWUodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWxlY3RlZFBsYXRmb3JtU2VydmljZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShmPT4ic2VsZWN0ZWRQbGF0Zm9ybVNlcnZpY2UiaW4gZiwiaGFzIiksZ2V0OmkoZj0+Zi5zZWxlY3RlZFBsYXRmb3JtU2VydmljZSwiZ2V0Iiksc2V0OmkoKGYseSk9PntmLnNlbGVjdGVkUGxhdGZvcm1TZXJ2aWNlPXl9LCJzZXQiKX0sbWV0YWRhdGE6bX0sYix2KSxDMWUobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6bX0sbnVsbCx0KSx4PWE9ZS52YWx1ZSxtJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm19KX1hcHB1aT1udWxsOyNlPVJnKHRoaXMsbywibGlzdCIpO2dldCBjdXJyZW50Vmlldygpe3JldHVybiB0aGlzLiNlfXNldCBjdXJyZW50VmlldyhtKXt0aGlzLiNlPW19I3Q9KFJnKHRoaXMsbCksUmcodGhpcyxkLG51bGwpKTtnZXQgc2VsZWN0ZWRTZXJ2aWNlKCl7cmV0dXJuIHRoaXMuI3R9c2V0IHNlbGVjdGVkU2VydmljZShtKXt0aGlzLiN0PW19I2E9KFJnKHRoaXMsdSksUmcodGhpcyxiLG51bGwpKTtnZXQgc2VsZWN0ZWRQbGF0Zm9ybVNlcnZpY2UoKXtyZXR1cm4gdGhpcy4jYX1zZXQgc2VsZWN0ZWRQbGF0Zm9ybVNlcnZpY2UobSl7dGhpcy4jYT1tfWRlbW9TZXJ2aWNlcz0oUmcodGhpcyx2KSxbe2lkOiIxIixuYW1lOiJuZ2lueC1wcm94eSIsaW1hZ2U6Im5naW54OmxhdGVzdCIsc3RhdHVzOiJydW5uaW5nIixjcHU6IjIuNSUiLG1lbW9yeToiMjU2IE1CIixwb3J0czoiODAsIDQ0MyIsdXB0aW1lOiI1ZCAxMmgifSx7aWQ6IjIiLG5hbWU6ImFwaS1nYXRld2F5IixpbWFnZToiYXBpLWdhdGV3YXk6djIuMS4wIixzdGF0dXM6InJ1bm5pbmciLGNwdToiOC4yJSIsbWVtb3J5OiI1MTIgTUIiLHBvcnRzOiIzMDAwIix1cHRpbWU6IjNkIDhoIn0se2lkOiIzIixuYW1lOiJ3b3JrZXItc2VydmljZSIsaW1hZ2U6IndvcmtlcjpsYXRlc3QiLHN0YXR1czoic3RvcHBlZCIsY3B1OiIwJSIsbWVtb3J5OiIwIE1CIixwb3J0czoiLSIsdXB0aW1lOiItIn0se2lkOiI0IixuYW1lOiJyZWRpcy1jYWNoZSIsaW1hZ2U6InJlZGlzOjctYWxwaW5lIixzdGF0dXM6InJ1bm5pbmciLGNwdToiMS4yJSIsbWVtb3J5OiIxMjggTUIiLHBvcnRzOiI2Mzc5Iix1cHRpbWU6IjEwZCA0aCJ9XSk7ZGVtb1BsYXRmb3JtU2VydmljZT17aWQ6IjEiLG5hbWU6Ik1vbmdvREIiLHR5cGU6Im1vbmdvZGIiLHN0YXR1czoicnVubmluZyIsdmVyc2lvbjoiNy4wLjQiLGhvc3Q6ImxvY2FsaG9zdCIscG9ydDoyNzAxNyxjcmVkZW50aWFsczp7dXNlcm5hbWU6ImFkbWluIixwYXNzd29yZDoiXHUyMDIyXHUyMDIyXHUyMDIyXHUyMDIyXHUyMDIyXHUyMDIyXHUyMDIyXHUyMDIyIn0sY29uZmlnOntyZXBsaWNhU2V0OiJyczAiLGF1dGhFbmFibGVkOiEwLGpvdXJuYWxpbmc6ITB9LG1ldHJpY3M6e2NwdToxMixtZW1vcnk6NDUsc3RvcmFnZToyMyxjb25uZWN0aW9uczo4fX07ZGVtb1BsYXRmb3JtTG9ncz1be3RpbWVzdGFtcDoiMjAyNC0wMS0yMCAxNDozMDoyMiIsbGV2ZWw6ImluZm8iLG1lc3NhZ2U6IkNvbm5lY3Rpb24gYWNjZXB0ZWQgZnJvbSAxMjcuMC4wLjE6NTQzMjEifSx7dGltZXN0YW1wOiIyMDI0LTAxLTIwIDE0OjMwOjIwIixsZXZlbDoiaW5mbyIsbWVzc2FnZToiSW5kZXggYnVpbGQgY29tcGxldGVkIG9uIGNvbGxlY3Rpb24gdXNlcnMifSx7dGltZXN0YW1wOiIyMDI0LTAxLTIwIDE0OjMwOjE1IixsZXZlbDoid2FybiIsbWVzc2FnZToiU2xvdyBxdWVyeSBkZXRlY3RlZDogMS4ycyBvbiBjb2xsZWN0aW9uIG9yZGVycyJ9LHt0aW1lc3RhbXA6IjIwMjQtMDEtMjAgMTQ6MzA6MTAiLGxldmVsOiJpbmZvIixtZXNzYWdlOiJDaGVja3BvaW50IGNvbXBsZXRlIn1dO2RlbW9CYWNrdXBTY2hlZHVsZXM9W3tpZDoiMSIsc2NvcGU6IkFsbCBTZXJ2aWNlcyIscmV0ZW50aW9uOiJEOjcsIFc6NCwgTToxMiIsc2NoZWR1bGU6IjAgMiAqICogKiIsbGFzdFJ1bjoiMS8yLzIwMjYsIDI6MDA6MDMgQU0iLG5leHRSdW46IjEvMy8yMDI2LCAyOjAwOjAwIEFNIixzdGF0dXM6ImFjdGl2ZSJ9XTtkZW1vQmFja3Vwcz1be2lkOiIxIixzZXJ2aWNlOiJuZ2lueC1wcm94eSIsY3JlYXRlZEF0OiIxLzIvMjAyNiwgMjowMDowMyBBTSIsc2l6ZToiMjIuMCBNQiIsaW5jbHVkZXM6WyJJbWFnZSJdfSx7aWQ6IjIiLHNlcnZpY2U6ImFwaS1nYXRld2F5IixjcmVhdGVkQXQ6IjEvMi8yMDI2LCAyOjAwOjAyIEFNIixzaXplOiIxNTYuNSBNQiIsaW5jbHVkZXM6WyJJbWFnZSIsIlZvbHVtZXMiXX0se2lkOiIzIixzZXJ2aWNlOiJyZWRpcy1jYWNoZSIsY3JlYXRlZEF0OiIxLzIvMjAyNiwgMjowMDowMCBBTSIsc2l6ZToiNDguMCBNQiIsaW5jbHVkZXM6WyJJbWFnZSIsIkRhdGEiXX1dO3N0YXRpYyBzdHlsZXM9W2guZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAucGFnZS1oZWFkZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgIH0KCiAgICAgIC5oZWFkZXItaW5mbyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogOHB4OwogICAgICB9CgogICAgICAucGFnZS10aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAyNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgICBtYXJnaW46IDA7CiAgICAgIH0KCiAgICAgIC5wYWdlLXN1YnRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgICBtYXJnaW46IDA7CiAgICAgIH0KCiAgICAgIC5oZWFkZXItYWN0aW9ucyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBnYXA6IDhweDsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgcGFkZGluZzogOHB4IDE0cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZmFmYWZhIiwiIzE4MTgxYiIpfTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDIwMG1zIGVhc2U7CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uOmhvdmVyIHsKICAgICAgICBvcGFjaXR5OiAwLjk7CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uLnNlY29uZGFyeSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDkwOTBiIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTRlNGU3IiwiIzI3MjcyYSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbi5zZWNvbmRhcnk6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzE4MTgxYiIpfTsKICAgICAgfQoKICAgICAgLnRhYnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiA0cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNGU0ZTciLCIjMjcyNzJhIil9OwogICAgICAgIHBhZGRpbmctYm90dG9tOiAwOwogICAgICB9CgogICAgICAudGFiIHsKICAgICAgICBwYWRkaW5nOiAxMHB4IDE2cHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAyMDBtcyBlYXNlOwogICAgICB9CgogICAgICAudGFiOmhvdmVyIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAudGFiLmFjdGl2ZSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLnRhYi5hY3RpdmU6OmFmdGVyIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgYm90dG9tOiAtMXB4OwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgaGVpZ2h0OiAycHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDFweCAxcHggMCAwOwogICAgICB9CgogICAgICAuYmFjay1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgcGFkZGluZzogNnB4IDEycHg7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNGU0ZTciLCIjMjcyNzJhIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMjAwbXMgZWFzZTsKICAgICAgfQoKICAgICAgLmJhY2stYnV0dG9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMxODE4MWIiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgICR7dGhpcy5jdXJyZW50Vmlldz09PSJsaXN0Ij90aGlzLnJlbmRlckxpc3RWaWV3KCk6IiJ9CiAgICAgICR7dGhpcy5jdXJyZW50Vmlldz09PSJjcmVhdGUiP3RoaXMucmVuZGVyQ3JlYXRlVmlldygpOiIifQogICAgICAke3RoaXMuY3VycmVudFZpZXc9PT0iZGV0YWlsIj90aGlzLnJlbmRlckRldGFpbFZpZXcoKToiIn0KICAgICAgJHt0aGlzLmN1cnJlbnRWaWV3PT09ImJhY2t1cHMiP3RoaXMucmVuZGVyQmFja3Vwc1ZpZXcoKToiIn0KICAgICAgJHt0aGlzLmN1cnJlbnRWaWV3PT09InBsYXRmb3JtLWRldGFpbCI/dGhpcy5yZW5kZXJQbGF0Zm9ybURldGFpbFZpZXcoKToiIn0KICAgIGB9cmVuZGVyTGlzdFZpZXcoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0icGFnZS1oZWFkZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlci1pbmZvIj4KICAgICAgICAgIDxoMSBjbGFzcz0icGFnZS10aXRsZSI+U2VydmljZXM8L2gxPgogICAgICAgICAgPHAgY2xhc3M9InBhZ2Utc3VidGl0bGUiPk1hbmFnZSB5b3VyIERvY2tlciBjb250YWluZXJzIGFuZCBwbGF0Zm9ybSBzZXJ2aWNlczwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXItYWN0aW9ucyI+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJhY3Rpb24tYnV0dG9uIHNlY29uZGFyeSIgQGNsaWNrPSR7KCk9PnRoaXMuY3VycmVudFZpZXc9ImJhY2t1cHMifT4KICAgICAgICAgICAgPHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+CiAgICAgICAgICAgICAgPHBhdGggZD0iTTIxIDE1djRhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJ2LTQiLz4KICAgICAgICAgICAgICA8cG9seWxpbmUgcG9pbnRzPSIxNyA4IDEyIDMgNyA4Ii8+CiAgICAgICAgICAgICAgPGxpbmUgeDE9IjEyIiB5MT0iMyIgeDI9IjEyIiB5Mj0iMTUiLz4KICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgIEJhY2t1cHMKICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiIgQGNsaWNrPSR7KCk9PnRoaXMuY3VycmVudFZpZXc9ImNyZWF0ZSJ9PgogICAgICAgICAgICA8c3ZnIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgICA8bGluZSB4MT0iMTIiIHkxPSI1IiB4Mj0iMTIiIHkyPSIxOSIvPgogICAgICAgICAgICAgIDxsaW5lIHgxPSI1IiB5MT0iMTIiIHgyPSIxOSIgeTI9IjEyIi8+CiAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICBEZXBsb3kgU2VydmljZQogICAgICAgICAgPC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0idGFicyI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0idGFiIGFjdGl2ZSI+RG9ja2VyIFNlcnZpY2VzPC9idXR0b24+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0idGFiIiBAY2xpY2s9JHsoKT0+e3RoaXMuc2VsZWN0ZWRQbGF0Zm9ybVNlcnZpY2U9dGhpcy5kZW1vUGxhdGZvcm1TZXJ2aWNlLHRoaXMuY3VycmVudFZpZXc9InBsYXRmb3JtLWRldGFpbCJ9fT5QbGF0Zm9ybSBTZXJ2aWNlczwvYnV0dG9uPgogICAgICA8L2Rpdj4KCiAgICAgIDxzei1zZXJ2aWNlcy1saXN0LXZpZXcKICAgICAgICAuc2VydmljZXM9JHt0aGlzLmRlbW9TZXJ2aWNlc30KICAgICAgICBAdmlldy1zZXJ2aWNlPSR7bT0+e3RoaXMuc2VsZWN0ZWRTZXJ2aWNlPW0uZGV0YWlsLHRoaXMuY3VycmVudFZpZXc9ImRldGFpbCJ9fQogICAgICAgIEBzdGFydC1zZXJ2aWNlPSR7bT0+Y29uc29sZS5sb2coIlN0YXJ0IHNlcnZpY2U6IixtLmRldGFpbCl9CiAgICAgICAgQHN0b3Atc2VydmljZT0ke209PmNvbnNvbGUubG9nKCJTdG9wIHNlcnZpY2U6IixtLmRldGFpbCl9CiAgICAgICAgQHJlc3RhcnQtc2VydmljZT0ke209PmNvbnNvbGUubG9nKCJSZXN0YXJ0IHNlcnZpY2U6IixtLmRldGFpbCl9CiAgICAgICAgQGRlbGV0ZS1zZXJ2aWNlPSR7bT0+Y29uc29sZS5sb2coIkRlbGV0ZSBzZXJ2aWNlOiIsbS5kZXRhaWwpfQogICAgICA+PC9zei1zZXJ2aWNlcy1saXN0LXZpZXc+CiAgICBgfXJlbmRlckNyZWF0ZVZpZXcoKXtyZXR1cm4gd2AKICAgICAgPGJ1dHRvbiBjbGFzcz0iYmFjay1idXR0b24iIEBjbGljaz0keygpPT50aGlzLmN1cnJlbnRWaWV3PSJsaXN0In0+CiAgICAgICAgPHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+CiAgICAgICAgICA8cG9seWxpbmUgcG9pbnRzPSIxNSAxOCA5IDEyIDE1IDYiLz4KICAgICAgICA8L3N2Zz4KICAgICAgICBCYWNrIHRvIFNlcnZpY2VzCiAgICAgIDwvYnV0dG9uPgoKICAgICAgPHN6LXNlcnZpY2UtY3JlYXRlLXZpZXcKICAgICAgICAucmVnaXN0cmllcz0ke1t7aWQ6IjEiLG5hbWU6Ik9uZWJveCBSZWdpc3RyeSIsdXJsOiJyZWdpc3RyeS5vbmVib3gubG9jYWwifSx7aWQ6IjIiLG5hbWU6IkRvY2tlciBIdWIiLHVybDoiZG9ja2VyLmlvIn1dfQogICAgICAgIEBjcmVhdGUtc2VydmljZT0ke209Pntjb25zb2xlLmxvZygiQ3JlYXRlIHNlcnZpY2U6IixtLmRldGFpbCksdGhpcy5jdXJyZW50Vmlldz0ibGlzdCJ9fQogICAgICAgIEBjYW5jZWw9JHsoKT0+dGhpcy5jdXJyZW50Vmlldz0ibGlzdCJ9CiAgICAgID48L3N6LXNlcnZpY2UtY3JlYXRlLXZpZXc+CiAgICBgfXJlbmRlckRldGFpbFZpZXcoKXtyZXR1cm4gd2AKICAgICAgPGJ1dHRvbiBjbGFzcz0iYmFjay1idXR0b24iIEBjbGljaz0keygpPT50aGlzLmN1cnJlbnRWaWV3PSJsaXN0In0+CiAgICAgICAgPHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+CiAgICAgICAgICA8cG9seWxpbmUgcG9pbnRzPSIxNSAxOCA5IDEyIDE1IDYiLz4KICAgICAgICA8L3N2Zz4KICAgICAgICBCYWNrIHRvIFNlcnZpY2VzCiAgICAgIDwvYnV0dG9uPgoKICAgICAgPHN6LXNlcnZpY2UtZGV0YWlsLXZpZXcKICAgICAgICAuc2VydmljZT0ke3tpZDp0aGlzLnNlbGVjdGVkU2VydmljZT8uaWR8fCIxIixuYW1lOnRoaXMuc2VsZWN0ZWRTZXJ2aWNlPy5uYW1lfHwibmdpbngtcHJveHkiLGltYWdlOnRoaXMuc2VsZWN0ZWRTZXJ2aWNlPy5pbWFnZXx8Im5naW54OmxhdGVzdCIsc3RhdHVzOnRoaXMuc2VsZWN0ZWRTZXJ2aWNlPy5zdGF0dXN8fCJydW5uaW5nIixwb3J0czpbe2hvc3Q6IjgwIixjb250YWluZXI6IjgwIn0se2hvc3Q6IjQ0MyIsY29udGFpbmVyOiI0NDMifV0sZW52VmFyczpbe2tleToiTkdJTlhfSE9TVCIsdmFsdWU6ImxvY2FsaG9zdCJ9LHtrZXk6Ik5HSU5YX1BPUlQiLHZhbHVlOiI4MCJ9XSx2b2x1bWVzOlt7aG9zdDoiL2RhdGEvbmdpbngvY29uZiIsY29udGFpbmVyOiIvZXRjL25naW54L2NvbmYuZCJ9XSxjcmVhdGVkQXQ6IjIwMjQtMDEtMTUgMTA6MzA6MDAiLHJlc3RhcnRQb2xpY3k6ImFsd2F5cyJ9fQogICAgICAgIC5sb2dzPSR7W3t0aW1lc3RhbXA6IjIwMjQtMDEtMjAgMTQ6MzA6MjIiLGxldmVsOiJpbmZvIixtZXNzYWdlOicxMjcuMC4wLjEgLSAtIFsyMC9KYW4vMjAyNDoxNDozMDoyMiArMDAwMF0gIkdFVCAvIEhUVFAvMS4xIiAyMDAgNjEyJ30se3RpbWVzdGFtcDoiMjAyNC0wMS0yMCAxNDozMDoyMSIsbGV2ZWw6ImluZm8iLG1lc3NhZ2U6JzEyNy4wLjAuMSAtIC0gWzIwL0phbi8yMDI0OjE0OjMwOjIxICswMDAwXSAiR0VUIC9hcGkvaGVhbHRoIEhUVFAvMS4xIiAyMDAgMTUnfSx7dGltZXN0YW1wOiIyMDI0LTAxLTIwIDE0OjMwOjIwIixsZXZlbDoid2FybiIsbWVzc2FnZToidXBzdHJlYW0gdGltZWQgb3V0ICgxMTA6IENvbm5lY3Rpb24gdGltZWQgb3V0KSJ9LHt0aW1lc3RhbXA6IjIwMjQtMDEtMjAgMTQ6MzA6MTkiLGxldmVsOiJpbmZvIixtZXNzYWdlOicxMjcuMC4wLjEgLSAtIFsyMC9KYW4vMjAyNDoxNDozMDoxOSArMDAwMF0gIlBPU1QgL2FwaS9kYXRhIEhUVFAvMS4xIiAyMDEgODknfV19CiAgICAgICAgQHN0YXJ0PSR7KCk9PmNvbnNvbGUubG9nKCJTdGFydCIpfQogICAgICAgIEBzdG9wPSR7KCk9PmNvbnNvbGUubG9nKCJTdG9wIil9CiAgICAgICAgQHJlc3RhcnQ9JHsoKT0+Y29uc29sZS5sb2coIlJlc3RhcnQiKX0KICAgICAgICBAcmVxdWVzdC13b3Jrc3BhY2U9JHttPT5jb25zb2xlLmxvZygiV29ya3NwYWNlIHJlcXVlc3RlZCBmb3I6IixtLmRldGFpbC5zZXJ2aWNlLm5hbWUpfQogICAgICA+PC9zei1zZXJ2aWNlLWRldGFpbC12aWV3PgogICAgYH1yZW5kZXJCYWNrdXBzVmlldygpe3JldHVybiB3YAogICAgICA8YnV0dG9uIGNsYXNzPSJiYWNrLWJ1dHRvbiIgQGNsaWNrPSR7KCk9PnRoaXMuY3VycmVudFZpZXc9Imxpc3QifT4KICAgICAgICA8c3ZnIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9IjE1IDE4IDkgMTIgMTUgNiIvPgogICAgICAgIDwvc3ZnPgogICAgICAgIEJhY2sgdG8gU2VydmljZXMKICAgICAgPC9idXR0b24+CgogICAgICA8ZGl2IGNsYXNzPSJwYWdlLWhlYWRlciI+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyLWluZm8iPgogICAgICAgICAgPGgxIGNsYXNzPSJwYWdlLXRpdGxlIj5CYWNrdXBzPC9oMT4KICAgICAgICAgIDxwIGNsYXNzPSJwYWdlLXN1YnRpdGxlIj5NYW5hZ2UgYmFja3VwIHNjaGVkdWxlcyBhbmQgcmVzdG9yZSBwb2ludHM8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPHN6LXNlcnZpY2VzLWJhY2t1cHMtdmlldwogICAgICAgIC5zY2hlZHVsZXM9JHt0aGlzLmRlbW9CYWNrdXBTY2hlZHVsZXN9CiAgICAgICAgLmJhY2t1cHM9JHt0aGlzLmRlbW9CYWNrdXBzfQogICAgICAgIEBjcmVhdGUtc2NoZWR1bGU9JHsoKT0+Y29uc29sZS5sb2coIkNyZWF0ZSBzY2hlZHVsZSIpfQogICAgICAgIEBydW4tbm93PSR7bT0+Y29uc29sZS5sb2coIlJ1biBub3c6IixtLmRldGFpbCl9CiAgICAgICAgQGRvd25sb2FkPSR7bT0+Y29uc29sZS5sb2coIkRvd25sb2FkOiIsbS5kZXRhaWwpfQogICAgICA+PC9zei1zZXJ2aWNlcy1iYWNrdXBzLXZpZXc+CiAgICBgfXJlbmRlclBsYXRmb3JtRGV0YWlsVmlldygpe3JldHVybiB3YAogICAgICA8YnV0dG9uIGNsYXNzPSJiYWNrLWJ1dHRvbiIgQGNsaWNrPSR7KCk9PnRoaXMuY3VycmVudFZpZXc9Imxpc3QifT4KICAgICAgICA8c3ZnIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9IjE1IDE4IDkgMTIgMTUgNiIvPgogICAgICAgIDwvc3ZnPgogICAgICAgIEJhY2sgdG8gU2VydmljZXMKICAgICAgPC9idXR0b24+CgogICAgICA8c3otcGxhdGZvcm0tc2VydmljZS1kZXRhaWwtdmlldwogICAgICAgIC5zZXJ2aWNlPSR7dGhpcy5kZW1vUGxhdGZvcm1TZXJ2aWNlfQogICAgICAgIC5sb2dzPSR7dGhpcy5kZW1vUGxhdGZvcm1Mb2dzfQogICAgICAgIEBzdGFydD0keygpPT5jb25zb2xlLmxvZygiU3RhcnQiKX0KICAgICAgICBAc3RvcD0keygpPT5jb25zb2xlLmxvZygiU3RvcCIpfQogICAgICAgIEByZXN0YXJ0PSR7KCk9PmNvbnNvbGUubG9nKCJSZXN0YXJ0Iil9CiAgICAgID48L3N6LXBsYXRmb3JtLXNlcnZpY2UtZGV0YWlsLXZpZXc+CiAgICBgfWFzeW5jIG9uQWN0aXZhdGUobSl7dGhpcy5hcHB1aT1tLmFwcHVpLHRoaXMuYXBwdWkuc2V0Q29udGVudFRhYnMoW3trZXk6IkRvY2tlciBTZXJ2aWNlcyIsYWN0aW9uOmkoKCk9Pnt0aGlzLmN1cnJlbnRWaWV3PSJsaXN0Iix0aGlzLnVwZGF0ZVNlY29uZGFyeU1lbnUoKX0sImFjdGlvbiIpfSx7a2V5OiJQbGF0Zm9ybSBTZXJ2aWNlcyIsYWN0aW9uOmkoKCk9Pnt0aGlzLmN1cnJlbnRWaWV3PSJwbGF0Zm9ybS1kZXRhaWwiLHRoaXMudXBkYXRlU2Vjb25kYXJ5TWVudSgpfSwiYWN0aW9uIil9LHtrZXk6IkJhY2t1cHMiLGFjdGlvbjppKCgpPT57dGhpcy5jdXJyZW50Vmlldz0iYmFja3VwcyIsdGhpcy51cGRhdGVTZWNvbmRhcnlNZW51KCl9LCJhY3Rpb24iKX1dKSx0aGlzLnVwZGF0ZVNlY29uZGFyeU1lbnUoKX11cGRhdGVTZWNvbmRhcnlNZW51KCl7dGhpcy5hcHB1aSYmdGhpcy5hcHB1aS5zZXRTZWNvbmRhcnlNZW51KHtoZWFkaW5nOiJTZXJ2aWNlcyIsZ3JvdXBzOlt7bmFtZToiQWN0aW9ucyIsaXRlbXM6W3t0eXBlOiJhY3Rpb24iLGtleToiRGVwbG95IFNlcnZpY2UiLGljb25OYW1lOiJsdWNpZGU6UGx1cyIsYWN0aW9uOmkoKCk9Pnt0aGlzLmN1cnJlbnRWaWV3PSJjcmVhdGUifSwiYWN0aW9uIil9LHt0eXBlOiJhY3Rpb24iLGtleToiUmVmcmVzaCIsaWNvbk5hbWU6Imx1Y2lkZTpSZWZyZXNoQ3ciLGFjdGlvbjppKCgpPT57Y29uc29sZS5sb2coIlJlZnJlc2giKX0sImFjdGlvbiIpfV19LHtuYW1lOiJRdWljayBGaWx0ZXJzIixpdGVtczpbe2tleToiUnVubmluZyIsaWNvbk5hbWU6Imx1Y2lkZTpQbGF5IixiYWRnZToiMyIsYmFkZ2VWYXJpYW50OiJzdWNjZXNzIixhY3Rpb246aSgoKT0+e2NvbnNvbGUubG9nKCJGaWx0ZXIgcnVubmluZyIpfSwiYWN0aW9uIil9LHtrZXk6IlN0b3BwZWQiLGljb25OYW1lOiJsdWNpZGU6U3F1YXJlIixiYWRnZToiMSIsYWN0aW9uOmkoKCk9Pntjb25zb2xlLmxvZygiRmlsdGVyIHN0b3BwZWQiKX0sImFjdGlvbiIpfV19XX0pfW9uRGVhY3RpdmF0ZSgpe31zdGF0aWN7UmcoYSx0KX19O3JldHVybiB4PWF9KSgpfSk7dmFyIHdvdCxfUSx1SmEsZzlhPWcoKCk9PntwZSgpO2ljKCk7d290PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxfUT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sdUphPSgoKT0+e2xldCBzPVtuZSgic3otZGVtby12aWV3LW5ldHdvcmsiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXTt2YXIgYz1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiU3pEZW1vVmlld05ldHdvcmsiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgYj10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtZKCldLHA9W1koKV0sd290KHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY3VycmVudFRhYiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh2PT4iY3VycmVudFRhYiJpbiB2LCJoYXMiKSxnZXQ6aSh2PT52LmN1cnJlbnRUYWIsImdldCIpLHNldDppKCh2LHgpPT57di5jdXJyZW50VGFiPXh9LCJzZXQiKX0sbWV0YWRhdGE6Yn0sbyxsKSx3b3QodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWxlY3RlZERvbWFpbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh2PT4ic2VsZWN0ZWREb21haW4iaW4gdiwiaGFzIiksZ2V0Omkodj0+di5zZWxlY3RlZERvbWFpbiwiZ2V0Iiksc2V0OmkoKHYseCk9Pnt2LnNlbGVjdGVkRG9tYWluPXh9LCJzZXQiKX0sbWV0YWRhdGE6Yn0sZCx1KSx3b3QobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6Yn0sbnVsbCx0KSxjPWE9ZS52YWx1ZSxiJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KX1hcHB1aT1udWxsOyNlPV9RKHRoaXMsbywicHJveHkiKTtnZXQgY3VycmVudFRhYigpe3JldHVybiB0aGlzLiNlfXNldCBjdXJyZW50VGFiKGIpe3RoaXMuI2U9Yn1hc3luYyBvbkFjdGl2YXRlKGIpe3RoaXMuYXBwdWk9Yi5hcHB1aSx0aGlzLmFwcHVpLnNldENvbnRlbnRUYWJzKFt7a2V5OiJSZXZlcnNlIFByb3h5IixhY3Rpb246aSgoKT0+e3RoaXMuY3VycmVudFRhYj0icHJveHkiLHRoaXMudXBkYXRlU2Vjb25kYXJ5TWVudSgpfSwiYWN0aW9uIil9LHtrZXk6IkROUyBSZWNvcmRzIixhY3Rpb246aSgoKT0+e3RoaXMuY3VycmVudFRhYj0iZG5zIix0aGlzLnVwZGF0ZVNlY29uZGFyeU1lbnUoKX0sImFjdGlvbiIpfSx7a2V5OiJEb21haW5zIixhY3Rpb246aSgoKT0+e3RoaXMuY3VycmVudFRhYj0iZG9tYWlucyIsdGhpcy51cGRhdGVTZWNvbmRhcnlNZW51KCl9LCJhY3Rpb24iKX1dKSx0aGlzLnVwZGF0ZVNlY29uZGFyeU1lbnUoKX11cGRhdGVTZWNvbmRhcnlNZW51KCl7dGhpcy5hcHB1aSYmKHRoaXMuY3VycmVudFRhYj09PSJwcm94eSI/dGhpcy5hcHB1aS5zZXRTZWNvbmRhcnlNZW51KHtoZWFkaW5nOiJSZXZlcnNlIFByb3h5Iixncm91cHM6W3tuYW1lOiJBY3Rpb25zIixpdGVtczpbe3R5cGU6ImFjdGlvbiIsa2V5OiJBZGQgUm91dGUiLGljb25OYW1lOiJsdWNpZGU6UGx1cyIsYWN0aW9uOmkoKCk9Pntjb25zb2xlLmxvZygiQWRkIHJvdXRlIil9LCJhY3Rpb24iKX0se3R5cGU6ImFjdGlvbiIsa2V5OiJSZWZyZXNoIixpY29uTmFtZToibHVjaWRlOlJlZnJlc2hDdyIsYWN0aW9uOmkoKCk9Pntjb25zb2xlLmxvZygiUmVmcmVzaCIpfSwiYWN0aW9uIil9XX0se25hbWU6IlN0YXRpc3RpY3MiLGl0ZW1zOlt7dHlwZToiaGVhZGVyIixsYWJlbDoiNDIgQWN0aXZlIENvbm5lY3Rpb25zIn0se3R5cGU6ImhlYWRlciIsbGFiZWw6IjE1LDQyMCBSZXF1ZXN0cyBUb2RheSJ9XX1dfSk6dGhpcy5jdXJyZW50VGFiPT09ImRucyI/dGhpcy5hcHB1aS5zZXRTZWNvbmRhcnlNZW51KHtoZWFkaW5nOiJETlMgUmVjb3JkcyIsZ3JvdXBzOlt7bmFtZToiQWN0aW9ucyIsaXRlbXM6W3t0eXBlOiJhY3Rpb24iLGtleToiQWRkIFJlY29yZCIsaWNvbk5hbWU6Imx1Y2lkZTpQbHVzIixhY3Rpb246aSgoKT0+e2NvbnNvbGUubG9nKCJBZGQgcmVjb3JkIil9LCJhY3Rpb24iKX0se3R5cGU6ImFjdGlvbiIsa2V5OiJJbXBvcnQgWm9uZSIsaWNvbk5hbWU6Imx1Y2lkZTpVcGxvYWQiLGFjdGlvbjppKCgpPT57Y29uc29sZS5sb2coIkltcG9ydCB6b25lIil9LCJhY3Rpb24iKX1dfSx7bmFtZToiWm9uZXMiLGl0ZW1zOlt7a2V5OiJleGFtcGxlLmNvbSIsaWNvbk5hbWU6Imx1Y2lkZTpHbG9iZSIsYWN0aW9uOmkoKCk9Pntjb25zb2xlLmxvZygiU2VsZWN0IGV4YW1wbGUuY29tIil9LCJhY3Rpb24iKX0se2tleToiZXhhbXBsZS5uZXQiLGljb25OYW1lOiJsdWNpZGU6R2xvYmUiLGFjdGlvbjppKCgpPT57Y29uc29sZS5sb2coIlNlbGVjdCBleGFtcGxlLm5ldCIpfSwiYWN0aW9uIil9LHtrZXk6Im15YXBwLmlvIixpY29uTmFtZToibHVjaWRlOkdsb2JlIixhY3Rpb246aSgoKT0+e2NvbnNvbGUubG9nKCJTZWxlY3QgbXlhcHAuaW8iKX0sImFjdGlvbiIpfV19XX0pOih0aGlzLmN1cnJlbnRUYWI9PT0iZG9tYWlucyJ8fHRoaXMuY3VycmVudFRhYj09PSJkb21haW4tZGV0YWlsIikmJnRoaXMuYXBwdWkuc2V0U2Vjb25kYXJ5TWVudSh7aGVhZGluZzoiRG9tYWlucyIsZ3JvdXBzOlt7bmFtZToiQWN0aW9ucyIsaXRlbXM6W3t0eXBlOiJhY3Rpb24iLGtleToiQWRkIERvbWFpbiIsaWNvbk5hbWU6Imx1Y2lkZTpQbHVzIixhY3Rpb246aSgoKT0+e2NvbnNvbGUubG9nKCJBZGQgZG9tYWluIil9LCJhY3Rpb24iKX0se3R5cGU6ImFjdGlvbiIsa2V5OiJWZXJpZnkgQWxsIixpY29uTmFtZToibHVjaWRlOkNoZWNrQ2lyY2xlIixhY3Rpb246aSgoKT0+e2NvbnNvbGUubG9nKCJWZXJpZnkgYWxsIil9LCJhY3Rpb24iKX1dfSx7bmFtZToiQ2VydGlmaWNhdGVzIixpdGVtczpbe2tleToiVmFsaWQiLGljb25OYW1lOiJsdWNpZGU6U2hpZWxkQ2hlY2siLGJhZGdlOiIzIixiYWRnZVZhcmlhbnQ6InN1Y2Nlc3MiLGFjdGlvbjppKCgpPT57Y29uc29sZS5sb2coIkZpbHRlciB2YWxpZCIpfSwiYWN0aW9uIil9LHtrZXk6IkV4cGlyaW5nIFNvb24iLGljb25OYW1lOiJsdWNpZGU6QWxlcnRUcmlhbmdsZSIsYmFkZ2U6IjEiLGJhZGdlVmFyaWFudDoid2FybmluZyIsYWN0aW9uOmkoKCk9Pntjb25zb2xlLmxvZygiRmlsdGVyIGV4cGlyaW5nIil9LCJhY3Rpb24iKX1dfV19KSl9b25EZWFjdGl2YXRlKCl7fSN0PShfUSh0aGlzLGwpLF9RKHRoaXMsZCxudWxsKSk7Z2V0IHNlbGVjdGVkRG9tYWluKCl7cmV0dXJuIHRoaXMuI3R9c2V0IHNlbGVjdGVkRG9tYWluKGIpe3RoaXMuI3Q9Yn1kZW1vUHJveHlSb3V0ZXM9KF9RKHRoaXMsdSksW3tpZDoiMSIsZG9tYWluOiJhcGkuZXhhbXBsZS5jb20iLHRhcmdldDoiaHR0cDovL2FwaS1nYXRld2F5OjMwMDAiLHNzbDohMCxzdGF0dXM6ImFjdGl2ZSJ9LHtpZDoiMiIsZG9tYWluOiJhcHAuZXhhbXBsZS5jb20iLHRhcmdldDoiaHR0cDovL2Zyb250ZW5kOjgwODAiLHNzbDohMCxzdGF0dXM6ImFjdGl2ZSJ9LHtpZDoiMyIsZG9tYWluOiJhZG1pbi5leGFtcGxlLmNvbSIsdGFyZ2V0OiJodHRwOi8vYWRtaW4tcGFuZWw6NDAwMCIsc3NsOiEwLHN0YXR1czoiYWN0aXZlIn0se2lkOiI0Iixkb21haW46ImxlZ2FjeS5leGFtcGxlLmNvbSIsdGFyZ2V0OiJodHRwOi8vbGVnYWN5OjUwMDAiLHNzbDohMSxzdGF0dXM6ImluYWN0aXZlIn1dKTtkZW1vQWNjZXNzTG9ncz1be3RpbWVzdGFtcDoiMTQ6MzA6MjIiLG1ldGhvZDoiR0VUIixwYXRoOiIvYXBpL3VzZXJzIixzdGF0dXM6MjAwLGR1cmF0aW9uOiI0NW1zIixpcDoiMTkyLjE2OC4xLjEwMCJ9LHt0aW1lc3RhbXA6IjE0OjMwOjIxIixtZXRob2Q6IlBPU1QiLHBhdGg6Ii9hcGkvb3JkZXJzIixzdGF0dXM6MjAxLGR1cmF0aW9uOiIxMjBtcyIsaXA6IjE5Mi4xNjguMS4xMDUifSx7dGltZXN0YW1wOiIxNDozMDoyMCIsbWV0aG9kOiJHRVQiLHBhdGg6Ii9hcGkvcHJvZHVjdHMiLHN0YXR1czoyMDAsZHVyYXRpb246Ijg5bXMiLGlwOiIxOTIuMTY4LjEuMTAwIn0se3RpbWVzdGFtcDoiMTQ6MzA6MTkiLG1ldGhvZDoiREVMRVRFIixwYXRoOiIvYXBpL2NhY2hlIixzdGF0dXM6MjA0LGR1cmF0aW9uOiIxMm1zIixpcDoiMTkyLjE2OC4xLjUwIn0se3RpbWVzdGFtcDoiMTQ6MzA6MTgiLG1ldGhvZDoiR0VUIixwYXRoOiIvaGVhbHRoIixzdGF0dXM6MjAwLGR1cmF0aW9uOiI1bXMiLGlwOiIxMC4wLjAuMSJ9XTtkZW1vRG5zUmVjb3Jkcz1be2lkOiIxIix0eXBlOiJBIixuYW1lOiJAIix2YWx1ZToiMTkyLjE2OC4xLjEwMCIsdHRsOjM2MDAsem9uZToiZXhhbXBsZS5jb20ifSx7aWQ6IjIiLHR5cGU6IkEiLG5hbWU6ImFwaSIsdmFsdWU6IjE5Mi4xNjguMS4xMDAiLHR0bDozNjAwLHpvbmU6ImV4YW1wbGUuY29tIn0se2lkOiIzIix0eXBlOiJDTkFNRSIsbmFtZToid3d3Iix2YWx1ZToiZXhhbXBsZS5jb20iLHR0bDozNjAwLHpvbmU6ImV4YW1wbGUuY29tIn0se2lkOiI0Iix0eXBlOiJNWCIsbmFtZToiQCIsdmFsdWU6Im1haWwuZXhhbXBsZS5jb20iLHR0bDozNjAwLHpvbmU6ImV4YW1wbGUuY29tIixwcmlvcml0eToxMH0se2lkOiI1Iix0eXBlOiJUWFQiLG5hbWU6IkAiLHZhbHVlOiJ2PXNwZjEgaW5jbHVkZTpfc3BmLmV4YW1wbGUuY29tIH5hbGwiLHR0bDozNjAwLHpvbmU6ImV4YW1wbGUuY29tIn1dO2RlbW9Eb21haW5zPVt7aWQ6IjEiLG5hbWU6ImV4YW1wbGUuY29tIixzdGF0dXM6ImFjdGl2ZSIsc3NsOiEwLHNzbEV4cGlyeToiMjAyNC0wNC0xNSIsZG5zUHJvdmlkZXI6IkNsb3VkZmxhcmUiLHJlY29yZENvdW50OjEyfSx7aWQ6IjIiLG5hbWU6ImFwaS5leGFtcGxlLmNvbSIsc3RhdHVzOiJhY3RpdmUiLHNzbDohMCxzc2xFeHBpcnk6IjIwMjQtMDUtMjAiLGRuc1Byb3ZpZGVyOiJDbG91ZGZsYXJlIixyZWNvcmRDb3VudDozfSx7aWQ6IjMiLG5hbWU6InN0YWdpbmcuZXhhbXBsZS5jb20iLHN0YXR1czoicGVuZGluZyIsc3NsOiExLHNzbEV4cGlyeTpudWxsLGRuc1Byb3ZpZGVyOiJDbG91ZGZsYXJlIixyZWNvcmRDb3VudDoyfSx7aWQ6IjQiLG5hbWU6ImxlZ2FjeS5leGFtcGxlLm5ldCIsc3RhdHVzOiJhY3RpdmUiLHNzbDohMCxzc2xFeHBpcnk6IjIwMjQtMDItMTAiLGRuc1Byb3ZpZGVyOiJNYW51YWwiLHJlY29yZENvdW50OjV9XTtkZW1vRG9tYWluRGV0YWlsPXtpZDoiMSIsbmFtZToiZXhhbXBsZS5jb20iLHN0YXR1czoiYWN0aXZlIix2ZXJpZmllZDohMCxjcmVhdGVkQXQ6IjIwMjQtMDEtMTAiLHByb3h5Um91dGVzOlsiL2FwaS8qIiwiL2FwcC8qIiwiL2FkbWluLyoiXX07ZGVtb0NlcnRpZmljYXRlPXtpZDoiMSIsZG9tYWluOiJleGFtcGxlLmNvbSIsaXNzdWVyOiJMZXQncyBFbmNyeXB0Iix2YWxpZEZyb206IjIwMjQtMDEtMTAiLHZhbGlkVW50aWw6IjIwMjQtMDQtMTAiLGRheXNSZW1haW5pbmc6NDUsc3RhdHVzOiJ2YWxpZCIsYXV0b1JlbmV3OiEwLGNoYWluOlsiUjMiLCJJU1JHIFJvb3QgWDEiXX07ZGVtb0RvbWFpbkRuc1JlY29yZHM9W3tpZDoiMSIsdHlwZToiQSIsbmFtZToiQCIsdmFsdWU6IjE5Mi4xNjguMS4xMDAiLHR0bDozNjAwfSx7aWQ6IjIiLHR5cGU6IkNOQU1FIixuYW1lOiJ3d3ciLHZhbHVlOiJleGFtcGxlLmNvbSIsdHRsOjM2MDB9LHtpZDoiMyIsdHlwZToiTVgiLG5hbWU6IkAiLHZhbHVlOiJtYWlsLmV4YW1wbGUuY29tIix0dGw6MzYwMCxwcmlvcml0eToxMH0se2lkOiI0Iix0eXBlOiJUWFQiLG5hbWU6IkAiLHZhbHVlOiJ2PXNwZjEgaW5jbHVkZTpfc3BmLmV4YW1wbGUuY29tIH5hbGwiLHR0bDozNjAwfV07c3RhdGljIHN0eWxlcz1baC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgIC5wYWdlLWhlYWRlciB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgICAgfQoKICAgICAgLnBhZ2UtdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMjRweDsKICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgICAgbWFyZ2luOiAwIDAgOHB4IDA7CiAgICAgIH0KCiAgICAgIC5wYWdlLXN1YnRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgICBtYXJnaW46IDA7CiAgICAgIH0KCiAgICAgIC50YWJzIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGdhcDogNHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTRlNGU3IiwiIzI3MjcyYSIpfTsKICAgICAgfQoKICAgICAgLnRhYiB7CiAgICAgICAgcGFkZGluZzogMTBweCAxNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgMjAwbXMgZWFzZTsKICAgICAgfQoKICAgICAgLnRhYjpob3ZlciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLnRhYi5hY3RpdmUgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgIH0KCiAgICAgIC50YWIuYWN0aXZlOjphZnRlciB7CiAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGJvdHRvbTogLTFweDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGhlaWdodDogMnB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiAxcHggMXB4IDAgMDsKICAgICAgfQoKICAgICAgLmJhY2stYnV0dG9uIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4OwogICAgICAgIHBhZGRpbmc6IDZweCAxMnB4OwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTRlNGU3IiwiIzI3MjcyYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDIwMG1zIGVhc2U7CiAgICAgIH0KCiAgICAgIC5iYWNrLWJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMTgxODFiIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB0aGlzLmN1cnJlbnRUYWI9PT0iZG9tYWluLWRldGFpbCI/dGhpcy5yZW5kZXJEb21haW5EZXRhaWwoKTp3YAogICAgICAke3RoaXMuY3VycmVudFRhYj09PSJwcm94eSI/dGhpcy5yZW5kZXJQcm94eVZpZXcoKToiIn0KICAgICAgJHt0aGlzLmN1cnJlbnRUYWI9PT0iZG5zIj90aGlzLnJlbmRlckRuc1ZpZXcoKToiIn0KICAgICAgJHt0aGlzLmN1cnJlbnRUYWI9PT0iZG9tYWlucyI/dGhpcy5yZW5kZXJEb21haW5zVmlldygpOiIifQogICAgYH1yZW5kZXJQcm94eVZpZXcoKXtyZXR1cm4gd2AKICAgICAgPHN6LW5ldHdvcmstcHJveHktdmlldwogICAgICAgIC5yb3V0ZXM9JHt0aGlzLmRlbW9Qcm94eVJvdXRlc30KICAgICAgICAuYWNjZXNzTG9ncz0ke3RoaXMuZGVtb0FjY2Vzc0xvZ3N9CiAgICAgICAgLnN0YXRzPSR7e2FjdGl2ZUNvbm5lY3Rpb25zOjQyLHJlcXVlc3RzVG9kYXk6MTU0MjAsYnl0ZXNUcmFuc2ZlcnJlZDoiMi40IEdCIn19CiAgICAgICAgQGFkZC1yb3V0ZT0keygpPT5jb25zb2xlLmxvZygiQWRkIHJvdXRlIil9CiAgICAgICAgQGVkaXQtcm91dGU9JHtiPT5jb25zb2xlLmxvZygiRWRpdCByb3V0ZToiLGIuZGV0YWlsKX0KICAgICAgICBAZGVsZXRlLXJvdXRlPSR7Yj0+Y29uc29sZS5sb2coIkRlbGV0ZSByb3V0ZToiLGIuZGV0YWlsKX0KICAgICAgPjwvc3otbmV0d29yay1wcm94eS12aWV3PgogICAgYH1yZW5kZXJEbnNWaWV3KCl7cmV0dXJuIHdgCiAgICAgIDxzei1uZXR3b3JrLWRucy12aWV3CiAgICAgICAgLnJlY29yZHM9JHt0aGlzLmRlbW9EbnNSZWNvcmRzfQogICAgICAgIC56b25lcz0ke1siZXhhbXBsZS5jb20iLCJleGFtcGxlLm5ldCIsIm15YXBwLmlvIl19CiAgICAgICAgLnNlbGVjdGVkWm9uZT0keyJleGFtcGxlLmNvbSJ9CiAgICAgICAgQGFkZC1yZWNvcmQ9JHsoKT0+Y29uc29sZS5sb2coIkFkZCByZWNvcmQiKX0KICAgICAgICBAZWRpdC1yZWNvcmQ9JHtiPT5jb25zb2xlLmxvZygiRWRpdCByZWNvcmQ6IixiLmRldGFpbCl9CiAgICAgICAgQGRlbGV0ZS1yZWNvcmQ9JHtiPT5jb25zb2xlLmxvZygiRGVsZXRlIHJlY29yZDoiLGIuZGV0YWlsKX0KICAgICAgICBAY2hhbmdlLXpvbmU9JHtiPT5jb25zb2xlLmxvZygiQ2hhbmdlIHpvbmU6IixiLmRldGFpbCl9CiAgICAgID48L3N6LW5ldHdvcmstZG5zLXZpZXc+CiAgICBgfXJlbmRlckRvbWFpbnNWaWV3KCl7cmV0dXJuIHdgCiAgICAgIDxzei1uZXR3b3JrLWRvbWFpbnMtdmlldwogICAgICAgIC5kb21haW5zPSR7dGhpcy5kZW1vRG9tYWluc30KICAgICAgICBAYWRkLWRvbWFpbj0keygpPT5jb25zb2xlLmxvZygiQWRkIGRvbWFpbiIpfQogICAgICAgIEB2aWV3LWRvbWFpbj0ke2I9Pnt0aGlzLnNlbGVjdGVkRG9tYWluPWIuZGV0YWlsLHRoaXMuY3VycmVudFRhYj0iZG9tYWluLWRldGFpbCJ9fQogICAgICAgIEByZW5ldy1zc2w9JHtiPT5jb25zb2xlLmxvZygiUmVuZXcgU1NMOiIsYi5kZXRhaWwpfQogICAgICAgIEBkZWxldGUtZG9tYWluPSR7Yj0+Y29uc29sZS5sb2coIkRlbGV0ZSBkb21haW46IixiLmRldGFpbCl9CiAgICAgID48L3N6LW5ldHdvcmstZG9tYWlucy12aWV3PgogICAgYH1yZW5kZXJEb21haW5EZXRhaWwoKXtyZXR1cm4gd2AKICAgICAgPGJ1dHRvbiBjbGFzcz0iYmFjay1idXR0b24iIEBjbGljaz0keygpPT50aGlzLmN1cnJlbnRUYWI9ImRvbWFpbnMifT4KICAgICAgICA8c3ZnIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9IjE1IDE4IDkgMTIgMTUgNiIvPgogICAgICAgIDwvc3ZnPgogICAgICAgIEJhY2sgdG8gRG9tYWlucwogICAgICA8L2J1dHRvbj4KCiAgICAgIDxzei1kb21haW4tZGV0YWlsLXZpZXcKICAgICAgICAuZG9tYWluPSR7dGhpcy5kZW1vRG9tYWluRGV0YWlsfQogICAgICAgIC5jZXJ0aWZpY2F0ZT0ke3RoaXMuZGVtb0NlcnRpZmljYXRlfQogICAgICAgIC5kbnNSZWNvcmRzPSR7dGhpcy5kZW1vRG9tYWluRG5zUmVjb3Jkc30KICAgICAgICBAdmVyaWZ5LWRvbWFpbj0keygpPT5jb25zb2xlLmxvZygiVmVyaWZ5IGRvbWFpbiIpfQogICAgICAgIEBkZWxldGUtZG9tYWluPSR7KCk9Pntjb25zb2xlLmxvZygiRGVsZXRlIGRvbWFpbiIpLHRoaXMuY3VycmVudFRhYj0iZG9tYWlucyJ9fQogICAgICAgIEByZW5ldy1jZXJ0aWZpY2F0ZT0keygpPT5jb25zb2xlLmxvZygiUmVuZXcgY2VydGlmaWNhdGUiKX0KICAgICAgICBAYWRkLWRucy1yZWNvcmQ9JHsoKT0+Y29uc29sZS5sb2coIkFkZCBETlMgcmVjb3JkIil9CiAgICAgICAgQGVkaXQtZG5zLXJlY29yZD0ke2I9PmNvbnNvbGUubG9nKCJFZGl0IEROUyByZWNvcmQ6IixiLmRldGFpbCl9CiAgICAgICAgQGRlbGV0ZS1kbnMtcmVjb3JkPSR7Yj0+Y29uc29sZS5sb2coIkRlbGV0ZSBETlMgcmVjb3JkOiIsYi5kZXRhaWwpfQogICAgICA+PC9zei1kb21haW4tZGV0YWlsLXZpZXc+CiAgICBgfXN0YXRpY3tfUShhLHQpfX07cmV0dXJuIGM9YX0pKCl9KTt2YXIgYjlhLGtvdCxwSmEsdjlhPWcoKCk9PntwZSgpO2ljKCk7YjlhPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxrb3Q9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LHBKYT0oKCk9PntsZXQgcz1bbmUoInN6LWRlbW8tdmlldy1yZWdpc3RyaWVzIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W107dmFyIHA9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIlN6RGVtb1ZpZXdSZWdpc3RyaWVzIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bWSgpXSxiOWEodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjdXJyZW50VGFiIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHU9PiJjdXJyZW50VGFiImluIHUsImhhcyIpLGdldDppKHU9PnUuY3VycmVudFRhYiwiZ2V0Iiksc2V0OmkoKHUsYyk9Pnt1LmN1cnJlbnRUYWI9Y30sInNldCIpfSxtZXRhZGF0YTpkfSxvLGwpLGI5YShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpkfSxudWxsLHQpLHA9YT1lLnZhbHVlLGQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZH0pfWFwcHVpPW51bGw7I2U9a290KHRoaXMsbywib25lYm94Iik7Z2V0IGN1cnJlbnRUYWIoKXtyZXR1cm4gdGhpcy4jZX1zZXQgY3VycmVudFRhYihkKXt0aGlzLiNlPWR9YXN5bmMgb25BY3RpdmF0ZShkKXt0aGlzLmFwcHVpPWQuYXBwdWksdGhpcy5hcHB1aS5zZXRDb250ZW50VGFicyhbe2tleToiUmVnaXN0cnkgQWR2ZXJ0aXNlbWVudCIsYWN0aW9uOmkoKCk9Pnt0aGlzLmN1cnJlbnRUYWI9Im9uZWJveCIsdGhpcy51cGRhdGVTZWNvbmRhcnlNZW51KCl9LCJhY3Rpb24iKX0se2tleToiRXh0ZXJuYWwgUmVnaXN0cmllcyIsYWN0aW9uOmkoKCk9Pnt0aGlzLmN1cnJlbnRUYWI9ImV4dGVybmFsIix0aGlzLnVwZGF0ZVNlY29uZGFyeU1lbnUoKX0sImFjdGlvbiIpfV0pLHRoaXMudXBkYXRlU2Vjb25kYXJ5TWVudSgpfXVwZGF0ZVNlY29uZGFyeU1lbnUoKXt0aGlzLmFwcHVpJiYodGhpcy5jdXJyZW50VGFiPT09Im9uZWJveCI/dGhpcy5hcHB1aS5zZXRTZWNvbmRhcnlNZW51KHtoZWFkaW5nOiJSZWdpc3RyeSBBZHZlcnRpc2VtZW50Iixncm91cHM6W3tuYW1lOiJBY3Rpb25zIixpdGVtczpbe3R5cGU6ImFjdGlvbiIsa2V5OiJQdXNoIEltYWdlIixpY29uTmFtZToibHVjaWRlOlVwbG9hZCIsYWN0aW9uOmkoKCk9Pntjb25zb2xlLmxvZygiUHVzaCBpbWFnZSIpfSwiYWN0aW9uIil9LHt0eXBlOiJhY3Rpb24iLHZhcmlhbnQ6ImRhbmdlciIsa2V5OiJHYXJiYWdlIENvbGxlY3QiLGljb25OYW1lOiJsdWNpZGU6VHJhc2gyIixhY3Rpb246aSgoKT0+e2NvbnNvbGUubG9nKCJHQyIpfSwiYWN0aW9uIil9XX0se25hbWU6IlN0YXRpc3RpY3MiLGl0ZW1zOlt7dHlwZToiaGVhZGVyIixsYWJlbDoiNCBJbWFnZXMifSx7dHlwZToiaGVhZGVyIixsYWJlbDoiNjQwIE1CIFRvdGFsIn1dfV19KTp0aGlzLmFwcHVpLnNldFNlY29uZGFyeU1lbnUoe2hlYWRpbmc6IkV4dGVybmFsIFJlZ2lzdHJpZXMiLGdyb3Vwczpbe25hbWU6IkFjdGlvbnMiLGl0ZW1zOlt7dHlwZToiYWN0aW9uIixrZXk6IkFkZCBSZWdpc3RyeSIsaWNvbk5hbWU6Imx1Y2lkZTpQbHVzIixhY3Rpb246aSgoKT0+e2NvbnNvbGUubG9nKCJBZGQgcmVnaXN0cnkiKX0sImFjdGlvbiIpfSx7dHlwZToiYWN0aW9uIixrZXk6IlRlc3QgQWxsIixpY29uTmFtZToibHVjaWRlOkNoZWNrQ2lyY2xlIixhY3Rpb246aSgoKT0+e2NvbnNvbGUubG9nKCJUZXN0IGFsbCIpfSwiYWN0aW9uIil9XX0se25hbWU6IkNvbm5lY3RlZCIsaXRlbXM6W3trZXk6IkRvY2tlciBIdWIiLGljb25OYW1lOiJsdWNpZGU6Qm94IixhY3Rpb246aSgoKT0+e2NvbnNvbGUubG9nKCJEb2NrZXIgSHViIil9LCJhY3Rpb24iKX0se2tleToiR0hDUiIsaWNvbk5hbWU6Imx1Y2lkZTpHaXRodWIiLGFjdGlvbjppKCgpPT57Y29uc29sZS5sb2coIkdIQ1IiKX0sImFjdGlvbiIpfV19XX0pKX1vbkRlYWN0aXZhdGUoKXt9ZGVtb09uZWJveEltYWdlcz0oa290KHRoaXMsbCksW3tpZDoiMSIsbmFtZToiYXBpLWdhdGV3YXkiLHRhZ3M6WyJsYXRlc3QiLCJ2Mi4xLjAiLCJ2Mi4wLjAiXSxzaXplOiIyNTYgTUIiLHVwZGF0ZWQ6IjIwMjQtMDEtMjAiLHB1bGxzOjE0Mn0se2lkOiIyIixuYW1lOiJmcm9udGVuZCIsdGFnczpbImxhdGVzdCIsInYxLjUuMCJdLHNpemU6IjEyOCBNQiIsdXBkYXRlZDoiMjAyNC0wMS0xOSIscHVsbHM6ODl9LHtpZDoiMyIsbmFtZToid29ya2VyLXNlcnZpY2UiLHRhZ3M6WyJsYXRlc3QiXSxzaXplOiI2NCBNQiIsdXBkYXRlZDoiMjAyNC0wMS0xOCIscHVsbHM6NTZ9LHtpZDoiNCIsbmFtZToiYWRtaW4tcGFuZWwiLHRhZ3M6WyJsYXRlc3QiLCJ2My4wLjAiLCJ2Mi45LjAiXSxzaXplOiIxOTIgTUIiLHVwZGF0ZWQ6IjIwMjQtMDEtMTciLHB1bGxzOjM0fV0pO2RlbW9FeHRlcm5hbFJlZ2lzdHJpZXM9W3tpZDoiMSIsbmFtZToiRG9ja2VyIEh1YiIsdXJsOiJkb2NrZXIuaW8iLHN0YXR1czoiY29ubmVjdGVkIixpbWFnZXM6MTJ9LHtpZDoiMiIsbmFtZToiR2l0SHViIENvbnRhaW5lciBSZWdpc3RyeSIsdXJsOiJnaGNyLmlvIixzdGF0dXM6ImNvbm5lY3RlZCIsaW1hZ2VzOjh9LHtpZDoiMyIsbmFtZToiQVdTIEVDUiIsdXJsOiIxMjM0NTY3ODkuZGtyLmVjci51cy1lYXN0LTEuYW1hem9uYXdzLmNvbSIsc3RhdHVzOiJlcnJvciIsaW1hZ2VzOjB9XTtzdGF0aWMgc3R5bGVzPVtoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLnBhZ2UtaGVhZGVyIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgICB9CgogICAgICAucGFnZS10aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAyNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgICBtYXJnaW46IDAgMCA4cHggMDsKICAgICAgfQoKICAgICAgLnBhZ2Utc3VidGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICAgIG1hcmdpbjogMDsKICAgICAgfQoKICAgICAgLnRhYnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiA0cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNGU0ZTciLCIjMjcyNzJhIil9OwogICAgICB9CgogICAgICAudGFiIHsKICAgICAgICBwYWRkaW5nOiAxMHB4IDE2cHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAyMDBtcyBlYXNlOwogICAgICB9CgogICAgICAudGFiOmhvdmVyIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAudGFiLmFjdGl2ZSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLnRhYi5hY3RpdmU6OmFmdGVyIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgYm90dG9tOiAtMXB4OwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgaGVpZ2h0OiAycHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDFweCAxcHggMCAwOwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgJHt0aGlzLmN1cnJlbnRUYWI9PT0ib25lYm94Ij93YAogICAgICAgIDxzei1yZWdpc3RyeS1hZHZlcnRpc2VtZW50CiAgICAgICAgICAuaW1hZ2VzPSR7dGhpcy5kZW1vT25lYm94SW1hZ2VzfQogICAgICAgICAgLnN0YXRzPSR7e3RvdGFsSW1hZ2VzOjQsdG90YWxTaXplOiI2NDAgTUIiLHRvdGFsUHVsbHM6MzIxfX0KICAgICAgICAgIEB2aWV3LWltYWdlPSR7ZD0+Y29uc29sZS5sb2coIlZpZXcgaW1hZ2U6IixkLmRldGFpbCl9CiAgICAgICAgICBAZGVsZXRlLWltYWdlPSR7ZD0+Y29uc29sZS5sb2coIkRlbGV0ZSBpbWFnZToiLGQuZGV0YWlsKX0KICAgICAgICAgIEBkZWxldGUtdGFnPSR7ZD0+Y29uc29sZS5sb2coIkRlbGV0ZSB0YWc6IixkLmRldGFpbCl9CiAgICAgICAgPjwvc3otcmVnaXN0cnktYWR2ZXJ0aXNlbWVudD4KICAgICAgYDp3YAogICAgICAgIDxzei1yZWdpc3RyeS1leHRlcm5hbC12aWV3CiAgICAgICAgICAucmVnaXN0cmllcz0ke3RoaXMuZGVtb0V4dGVybmFsUmVnaXN0cmllc30KICAgICAgICAgIEBhZGQtcmVnaXN0cnk9JHsoKT0+Y29uc29sZS5sb2coIkFkZCByZWdpc3RyeSIpfQogICAgICAgICAgQGVkaXQtcmVnaXN0cnk9JHtkPT5jb25zb2xlLmxvZygiRWRpdCByZWdpc3RyeToiLGQuZGV0YWlsKX0KICAgICAgICAgIEBkZWxldGUtcmVnaXN0cnk9JHtkPT5jb25zb2xlLmxvZygiRGVsZXRlIHJlZ2lzdHJ5OiIsZC5kZXRhaWwpfQogICAgICAgICAgQHRlc3QtY29ubmVjdGlvbj0ke2Q9PmNvbnNvbGUubG9nKCJUZXN0IGNvbm5lY3Rpb246IixkLmRldGFpbCl9CiAgICAgICAgPjwvc3otcmVnaXN0cnktZXh0ZXJuYWwtdmlldz4KICAgICAgYH0KICAgIGB9c3RhdGlje2tvdChhLHQpfX07cmV0dXJuIHA9YX0pKCl9KTt2YXIgaEphLGZKYSxtSmEseDlhPWcoKCk9PntwZSgpO2ljKCk7aEphPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxmSmE9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LG1KYT0oKCk9PntsZXQgcz1bbmUoInN6LWRlbW8tdmlldy10b2tlbnMiKV0sZSx0PVtdLGEscj13ZTt2YXIgbj1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiU3pEZW1vVmlld1Rva2VucyIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBvPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO2hKYShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpvfSxudWxsLHQpLG49YT1lLnZhbHVlLG8mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6b30pfWFwcHVpPW51bGw7YXN5bmMgb25BY3RpdmF0ZShvKXt0aGlzLmFwcHVpPW8uYXBwdWksdGhpcy5hcHB1aS5zZXRTZWNvbmRhcnlNZW51KHtoZWFkaW5nOiJUb2tlbnMiLGdyb3Vwczpbe25hbWU6IkFjdGlvbnMiLGl0ZW1zOlt7dHlwZToiYWN0aW9uIixrZXk6IkNyZWF0ZSBHbG9iYWwgVG9rZW4iLGljb25OYW1lOiJsdWNpZGU6UGx1cyIsYWN0aW9uOmkoKCk9Pntjb25zb2xlLmxvZygiQ3JlYXRlIGdsb2JhbCB0b2tlbiIpfSwiYWN0aW9uIil9LHt0eXBlOiJhY3Rpb24iLGtleToiQ3JlYXRlIENJIFRva2VuIixpY29uTmFtZToibHVjaWRlOkdpdEJyYW5jaCIsYWN0aW9uOmkoKCk9Pntjb25zb2xlLmxvZygiQ3JlYXRlIENJIHRva2VuIil9LCJhY3Rpb24iKX1dfSx7bmFtZToiVG9rZW4gVHlwZXMiLGl0ZW1zOlt7a2V5OiJHbG9iYWwgVG9rZW5zIixpY29uTmFtZToibHVjaWRlOktleSIsYmFkZ2U6IjMiLGFjdGlvbjppKCgpPT57Y29uc29sZS5sb2coIkZpbHRlciBnbG9iYWwiKX0sImFjdGlvbiIpfSx7a2V5OiJDSSBUb2tlbnMiLGljb25OYW1lOiJsdWNpZGU6Q3B1IixiYWRnZToiMyIsYWN0aW9uOmkoKCk9Pntjb25zb2xlLmxvZygiRmlsdGVyIENJIil9LCJhY3Rpb24iKX1dfV19KX1vbkRlYWN0aXZhdGUoKXt9ZGVtb0dsb2JhbFRva2Vucz1be2lkOiIxIixuYW1lOiJDSS9DRCBQaXBlbGluZSIsdHlwZToiZ2xvYmFsIixjcmVhdGVkQXQ6IjIwMjQtMDEtMTUiLGxhc3RVc2VkOiIyMDI0LTAxLTIwIn0se2lkOiIyIixuYW1lOiJEZXZlbG9wbWVudCIsdHlwZToiZ2xvYmFsIixjcmVhdGVkQXQ6IjIwMjQtMDEtMTAifSx7aWQ6IjMiLG5hbWU6IlByb2R1Y3Rpb24gRGVwbG95Iix0eXBlOiJnbG9iYWwiLGNyZWF0ZWRBdDoiMjAyNC0wMS0wNSIsbGFzdFVzZWQ6IjIwMjQtMDEtMTkifV07ZGVtb0NpVG9rZW5zPVt7aWQ6IjQiLG5hbWU6ImFwaS1nYXRld2F5LWNpIix0eXBlOiJjaSIsc2VydmljZToiYXBpLWdhdGV3YXkiLGNyZWF0ZWRBdDoiMjAyNC0wMS0xOCIsbGFzdFVzZWQ6IjIwMjQtMDEtMjAifSx7aWQ6IjUiLG5hbWU6ImZyb250ZW5kLWNpIix0eXBlOiJjaSIsc2VydmljZToiZnJvbnRlbmQiLGNyZWF0ZWRBdDoiMjAyNC0wMS0xMiIsbGFzdFVzZWQ6IjIwMjQtMDEtMTkifSx7aWQ6IjYiLG5hbWU6Indvcmtlci1zZXJ2aWNlLWNpIix0eXBlOiJjaSIsc2VydmljZToid29ya2VyLXNlcnZpY2UiLGNyZWF0ZWRBdDoiMjAyNC0wMS0wOCJ9XTtzdGF0aWMgc3R5bGVzPVtoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLnBhZ2UtaGVhZGVyIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgICB9CgogICAgICAucGFnZS10aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAyNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgICBtYXJnaW46IDAgMCA4cHggMDsKICAgICAgfQoKICAgICAgLnBhZ2Utc3VidGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICAgIG1hcmdpbjogMDsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9InBhZ2UtaGVhZGVyIj4KICAgICAgICA8aDEgY2xhc3M9InBhZ2UtdGl0bGUiPlRva2VuczwvaDE+CiAgICAgICAgPHAgY2xhc3M9InBhZ2Utc3VidGl0bGUiPk1hbmFnZSByZWdpc3RyeSBhY2Nlc3MgdG9rZW5zIGZvciBDSS9DRCBwaXBlbGluZXM8L3A+CiAgICAgIDwvZGl2PgoKICAgICAgPHN6LXRva2Vucy12aWV3CiAgICAgICAgLmdsb2JhbFRva2Vucz0ke3RoaXMuZGVtb0dsb2JhbFRva2Vuc30KICAgICAgICAuY2lUb2tlbnM9JHt0aGlzLmRlbW9DaVRva2Vuc30KICAgICAgICBAY3JlYXRlPSR7bz0+Y29uc29sZS5sb2coIkNyZWF0ZSB0b2tlbjoiLG8uZGV0YWlsKX0KICAgICAgICBAY29weT0ke289PmNvbnNvbGUubG9nKCJDb3B5IHRva2VuOiIsby5kZXRhaWwpfQogICAgICAgIEByZWdlbmVyYXRlPSR7bz0+Y29uc29sZS5sb2coIlJlZ2VuZXJhdGUgdG9rZW46IixvLmRldGFpbCl9CiAgICAgICAgQGRlbGV0ZT0ke289PmNvbnNvbGUubG9nKCJEZWxldGUgdG9rZW46IixvLmRldGFpbCl9CiAgICAgID48L3N6LXRva2Vucy12aWV3PgogICAgYH1zdGF0aWN7ZkphKGEsdCl9fTtyZXR1cm4gbj1hfSkoKX0pO3ZhciBnSmEsYkphLHZKYSx5OWE9ZygoKT0+e3BlKCk7aWMoKTtnSmE9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LGJKYT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sdkphPSgoKT0+e2xldCBzPVtuZSgic3otZGVtby12aWV3LXNldHRpbmdzIildLGUsdD1bXSxhLHI9d2U7dmFyIG49Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIlN6RGVtb1ZpZXdTZXR0aW5ncyIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBvPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO2dKYShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpvfSxudWxsLHQpLG49YT1lLnZhbHVlLG8mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6b30pfWFwcHVpPW51bGw7YXN5bmMgb25BY3RpdmF0ZShvKXt0aGlzLmFwcHVpPW8uYXBwdWksdGhpcy5hcHB1aS5zZXRTZWNvbmRhcnlNZW51KHtoZWFkaW5nOiJTZXR0aW5ncyIsZ3JvdXBzOlt7bmFtZToiQ2F0ZWdvcmllcyIsaXRlbXM6W3trZXk6IkdlbmVyYWwiLGljb25OYW1lOiJsdWNpZGU6U2V0dGluZ3MiLGFjdGlvbjppKCgpPT57Y29uc29sZS5sb2coIkdlbmVyYWwgc2V0dGluZ3MiKX0sImFjdGlvbiIpfSx7a2V5OiJOZXR3b3JrIixpY29uTmFtZToibHVjaWRlOk5ldHdvcmsiLGFjdGlvbjppKCgpPT57Y29uc29sZS5sb2coIk5ldHdvcmsgc2V0dGluZ3MiKX0sImFjdGlvbiIpfSx7a2V5OiJTZWN1cml0eSIsaWNvbk5hbWU6Imx1Y2lkZTpTaGllbGQiLGFjdGlvbjppKCgpPT57Y29uc29sZS5sb2coIlNlY3VyaXR5IHNldHRpbmdzIil9LCJhY3Rpb24iKX0se2tleToiQ2VydGlmaWNhdGVzIixpY29uTmFtZToibHVjaWRlOkZpbGVCYWRnZSIsYWN0aW9uOmkoKCk9Pntjb25zb2xlLmxvZygiQ2VydGlmaWNhdGUgc2V0dGluZ3MiKX0sImFjdGlvbiIpfV19LHtuYW1lOiJBY3Rpb25zIixpdGVtczpbe3R5cGU6ImFjdGlvbiIsa2V5OiJFeHBvcnQgQ29uZmlnIixpY29uTmFtZToibHVjaWRlOkRvd25sb2FkIixhY3Rpb246aSgoKT0+e2NvbnNvbGUubG9nKCJFeHBvcnQgY29uZmlnIil9LCJhY3Rpb24iKX0se3R5cGU6ImFjdGlvbiIsa2V5OiJJbXBvcnQgQ29uZmlnIixpY29uTmFtZToibHVjaWRlOlVwbG9hZCIsYWN0aW9uOmkoKCk9Pntjb25zb2xlLmxvZygiSW1wb3J0IGNvbmZpZyIpfSwiYWN0aW9uIil9LHt0eXBlOiJhY3Rpb24iLHZhcmlhbnQ6ImRhbmdlciIsa2V5OiJSZXNldCB0byBEZWZhdWx0IixpY29uTmFtZToibHVjaWRlOlJvdGF0ZUNjdyIsY29uZmlybU1lc3NhZ2U6IkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZXNldCBhbGwgc2V0dGluZ3MgdG8gZGVmYXVsdD8iLGFjdGlvbjppKCgpPT57Y29uc29sZS5sb2coIlJlc2V0IHNldHRpbmdzIil9LCJhY3Rpb24iKX1dfV19KX1vbkRlYWN0aXZhdGUoKXt9ZGVtb1NldHRpbmdzPXtkYXJrTW9kZTohMCxjbG91ZGZsYXJlVG9rZW46IiIsY2xvdWRmbGFyZVpvbmVJZDoiIixhdXRvUmVuZXdDZXJ0czohMCxyZW5ld2FsVGhyZXNob2xkOjMwLGFjbWVFbWFpbDoiYWRtaW5Ac2VydmUuem9uZSIsaHR0cFBvcnQ6ODAsaHR0cHNQb3J0OjQ0Myxmb3JjZUh0dHBzOiEwfTtzdGF0aWMgc3R5bGVzPVtoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLnBhZ2UtaGVhZGVyIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgICB9CgogICAgICAucGFnZS10aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAyNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZhZmFmYSIpfTsKICAgICAgICBtYXJnaW46IDAgMCA4cHggMDsKICAgICAgfQoKICAgICAgLnBhZ2Utc3VidGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICAgIG1hcmdpbjogMDsKICAgICAgfQoKICAgICAgLnNldHRpbmdzLWNvbnRhaW5lciB7CiAgICAgICAgbWF4LXdpZHRoOiA4MDBweDsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9InBhZ2UtaGVhZGVyIj4KICAgICAgICA8aDEgY2xhc3M9InBhZ2UtdGl0bGUiPlNldHRpbmdzPC9oMT4KICAgICAgICA8cCBjbGFzcz0icGFnZS1zdWJ0aXRsZSI+Q29uZmlndXJlIHlvdXIgb25lYm94IGluc3RhbmNlPC9wPgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InNldHRpbmdzLWNvbnRhaW5lciI+CiAgICAgICAgPHN6LXNldHRpbmdzLXZpZXcKICAgICAgICAgIC5zZXR0aW5ncz0ke3RoaXMuZGVtb1NldHRpbmdzfQogICAgICAgICAgY3VycmVudFVzZXI9ImFkbWluIgogICAgICAgICAgQHNldHRpbmctY2hhbmdlPSR7bz0+Y29uc29sZS5sb2coIlNldHRpbmcgY2hhbmdlOiIsby5kZXRhaWwpfQogICAgICAgICAgQGNoYW5nZS1wYXNzd29yZD0ke289PmNvbnNvbGUubG9nKCJDaGFuZ2UgcGFzc3dvcmQ6IixvLmRldGFpbCl9CiAgICAgICAgICBAcmVzZXQ9JHsoKT0+Y29uc29sZS5sb2coIlJlc2V0IHNldHRpbmdzIil9CiAgICAgICAgICBAc2F2ZT0ke289PmNvbnNvbGUubG9nKCJTYXZlIHNldHRpbmdzOiIsby5kZXRhaWwpfQogICAgICAgID48L3N6LXNldHRpbmdzLXZpZXc+CiAgICAgIDwvZGl2PgogICAgYH1zdGF0aWN7YkphKGEsdCl9fTtyZXR1cm4gbj1hfSkoKX0pO3ZhciBUMWUsT2cseEphLHc5YT1nKCgpPT57cGUoKTtpYygpO1QxZT1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sT2c9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LHhKYT0oKCk9PntsZXQgcz1bbmUoInN6LWRlbW8tdmlldy1tdGEiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXTt2YXIgeD1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiU3pEZW1vVmlld010YSIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBtPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W1koKV0scD1bWSgpXSxjPVtZKCldLFQxZSh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImN1cnJlbnRWaWV3IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGY9PiJjdXJyZW50VmlldyJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLmN1cnJlbnRWaWV3LCJnZXQiKSxzZXQ6aSgoZix5KT0+e2YuY3VycmVudFZpZXc9eX0sInNldCIpfSxtZXRhZGF0YTptfSxvLGwpLFQxZSh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlbGVjdGVkRW1haWwiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+InNlbGVjdGVkRW1haWwiaW4gZiwiaGFzIiksZ2V0OmkoZj0+Zi5zZWxlY3RlZEVtYWlsLCJnZXQiKSxzZXQ6aSgoZix5KT0+e2Yuc2VsZWN0ZWRFbWFpbD15fSwic2V0Iil9LG1ldGFkYXRhOm19LGQsdSksVDFlKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY3VycmVudERpcmVjdGlvbkZpbHRlciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShmPT4iY3VycmVudERpcmVjdGlvbkZpbHRlciJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLmN1cnJlbnREaXJlY3Rpb25GaWx0ZXIsImdldCIpLHNldDppKChmLHkpPT57Zi5jdXJyZW50RGlyZWN0aW9uRmlsdGVyPXl9LCJzZXQiKX0sbWV0YWRhdGE6bX0sYix2KSxUMWUobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6bX0sbnVsbCx0KSx4PWE9ZS52YWx1ZSxtJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm19KX1hcHB1aT1udWxsOyNlPU9nKHRoaXMsbywibGlzdCIpO2dldCBjdXJyZW50Vmlldygpe3JldHVybiB0aGlzLiNlfXNldCBjdXJyZW50VmlldyhtKXt0aGlzLiNlPW19I3Q9KE9nKHRoaXMsbCksT2codGhpcyxkLG51bGwpKTtnZXQgc2VsZWN0ZWRFbWFpbCgpe3JldHVybiB0aGlzLiN0fXNldCBzZWxlY3RlZEVtYWlsKG0pe3RoaXMuI3Q9bX0jYT0oT2codGhpcyx1KSxPZyh0aGlzLGIsImFsbCIpKTtnZXQgY3VycmVudERpcmVjdGlvbkZpbHRlcigpe3JldHVybiB0aGlzLiNhfXNldCBjdXJyZW50RGlyZWN0aW9uRmlsdGVyKG0pe3RoaXMuI2E9bX1kZW1vRW1haWxzPShPZyh0aGlzLHYpLFt7aWQ6IjEiLGRpcmVjdGlvbjoib3V0Ym91bmQiLHN0YXR1czoiZGVsaXZlcmVkIixmcm9tOiJub3JlcGx5QHNlcnZlLnpvbmUiLHRvOiJ1c2VyQGV4YW1wbGUuY29tIixzdWJqZWN0OiJXZWxjb21lIHRvIHNlcnZlLnpvbmUiLHRpbWVzdGFtcDoiMjAyNC0wMS0xNSAxNDozMDoyMiIsbWVzc2FnZUlkOiI8YWJjMTIzQHNlcnZlLnpvbmU+IixzaXplOiIxMi40IEtCIn0se2lkOiIyIixkaXJlY3Rpb246Im91dGJvdW5kIixzdGF0dXM6ImJvdW5jZWQiLGZyb206ImFsZXJ0c0BzZXJ2ZS56b25lIix0bzoiaW52YWxpZEBub3doZXJlLnRlc3QiLHN1YmplY3Q6IlNlcnZpY2UgQWxlcnQ6IENQVSBVc2FnZSBIaWdoIix0aW1lc3RhbXA6IjIwMjQtMDEtMTUgMTQ6Mjg6MTAiLG1lc3NhZ2VJZDoiPGRlZjQ1NkBzZXJ2ZS56b25lPiIsc2l6ZToiOC4yIEtCIn0se2lkOiIzIixkaXJlY3Rpb246ImluYm91bmQiLHN0YXR1czoiZGVsaXZlcmVkIixmcm9tOiJzdXBwb3J0QGN1c3RvbWVyLmNvbSIsdG86ImFkbWluQHNlcnZlLnpvbmUiLHN1YmplY3Q6IlJlOiBJbmZyYXN0cnVjdHVyZSBSZXZpZXciLHRpbWVzdGFtcDoiMjAyNC0wMS0xNSAxNDoyNTowMCIsbWVzc2FnZUlkOiI8Z2hpNzg5QGN1c3RvbWVyLmNvbT4iLHNpemU6IjI0LjEgS0IifSx7aWQ6IjQiLGRpcmVjdGlvbjoib3V0Ym91bmQiLHN0YXR1czoicmVqZWN0ZWQiLGZyb206ImJpbGxpbmdAc2VydmUuem9uZSIsdG86ImJsb2NrZWRAc3BhbS1kb21haW4udGVzdCIsc3ViamVjdDoiSW52b2ljZSAjMjAyNC0wMDEiLHRpbWVzdGFtcDoiMjAyNC0wMS0xNSAxNDoyMDo0NSIsbWVzc2FnZUlkOiI8amtsMDEyQHNlcnZlLnpvbmU+IixzaXplOiI0NS42IEtCIn0se2lkOiI1IixkaXJlY3Rpb246Im91dGJvdW5kIixzdGF0dXM6ImRlZmVycmVkIixmcm9tOiJub3JlcGx5QHNlcnZlLnpvbmUiLHRvOiJzbG93QHJlbW90ZS1zZXJ2ZXIudGVzdCIsc3ViamVjdDoiUGFzc3dvcmQgUmVzZXQgUmVxdWVzdCIsdGltZXN0YW1wOiIyMDI0LTAxLTE1IDE0OjE1OjMwIixtZXNzYWdlSWQ6Ijxtbm8zNDVAc2VydmUuem9uZT4iLHNpemU6IjYuOCBLQiJ9LHtpZDoiNiIsZGlyZWN0aW9uOiJpbmJvdW5kIixzdGF0dXM6ImRlbGl2ZXJlZCIsZnJvbToiY2lAZ2l0aHViLmNvbSIsdG86ImRldm9wc0BzZXJ2ZS56b25lIixzdWJqZWN0OiJCdWlsZCAjNDUyMSBwYXNzZWQiLHRpbWVzdGFtcDoiMjAyNC0wMS0xNSAxNDoxMDowMCIsbWVzc2FnZUlkOiI8cHFyNjc4QGdpdGh1Yi5jb20+IixzaXplOiIxNS4zIEtCIn0se2lkOiI3IixkaXJlY3Rpb246Im91dGJvdW5kIixzdGF0dXM6InBlbmRpbmciLGZyb206InJlcG9ydHNAc2VydmUuem9uZSIsdG86InRlYW1Ac2VydmUuem9uZSIsc3ViamVjdDoiV2Vla2x5IEluZnJhc3RydWN0dXJlIFJlcG9ydCIsdGltZXN0YW1wOiIyMDI0LTAxLTE1IDE0OjA1OjAwIixtZXNzYWdlSWQ6IjxzdHU5MDFAc2VydmUuem9uZT4iLHNpemU6IjEwMi43IEtCIn0se2lkOiI4IixkaXJlY3Rpb246ImluYm91bmQiLHN0YXR1czoiZGVsaXZlcmVkIixmcm9tOiJtb25pdG9yaW5nQHVwdGltZS5pbyIsdG86Im9wc0BzZXJ2ZS56b25lIixzdWJqZWN0OiJVcHRpbWUgUmVwb3J0OiA5OS45OCUiLHRpbWVzdGFtcDoiMjAyNC0wMS0xNSAxMzo1NTowMCIsbWVzc2FnZUlkOiI8dnd4MjM0QHVwdGltZS5pbz4iLHNpemU6IjkuMSBLQiJ9XSk7ZGVtb0VtYWlsRGV0YWlscz17MTp7aWQ6IjEiLGRpcmVjdGlvbjoib3V0Ym91bmQiLHN0YXR1czoiZGVsaXZlcmVkIixmcm9tOiJub3JlcGx5QHNlcnZlLnpvbmUiLHRvOiJ1c2VyQGV4YW1wbGUuY29tIix0b0xpc3Q6WyJ1c2VyQGV4YW1wbGUuY29tIl0sc3ViamVjdDoiV2VsY29tZSB0byBzZXJ2ZS56b25lIix0aW1lc3RhbXA6IjIwMjQtMDEtMTUgMTQ6MzA6MjIiLG1lc3NhZ2VJZDoiPGFiYzEyM0BzZXJ2ZS56b25lPiIsc2l6ZToiMTIuNCBLQiIsc210cExvZzpbe3RpbWVzdGFtcDoiMTQ6MzA6MjAiLGRpcmVjdGlvbjoiY2xpZW50Iixjb21tYW5kOiJFSExPIG1haWwuc2VydmUuem9uZSJ9LHt0aW1lc3RhbXA6IjE0OjMwOjIwIixkaXJlY3Rpb246InNlcnZlciIsY29tbWFuZDoiMjUwLW1haWwuZXhhbXBsZS5jb20gSGVsbG8iLHJlc3BvbnNlQ29kZToyNTB9LHt0aW1lc3RhbXA6IjE0OjMwOjIwIixkaXJlY3Rpb246InNlcnZlciIsY29tbWFuZDoiMjUwLVNUQVJUVExTIixyZXNwb25zZUNvZGU6MjUwfSx7dGltZXN0YW1wOiIxNDozMDoyMCIsZGlyZWN0aW9uOiJzZXJ2ZXIiLGNvbW1hbmQ6IjI1MCBTSVpFIDUyNDI4ODAwIixyZXNwb25zZUNvZGU6MjUwfSx7dGltZXN0YW1wOiIxNDozMDoyMCIsZGlyZWN0aW9uOiJjbGllbnQiLGNvbW1hbmQ6IlNUQVJUVExTIn0se3RpbWVzdGFtcDoiMTQ6MzA6MjEiLGRpcmVjdGlvbjoic2VydmVyIixjb21tYW5kOiIyMjAgUmVhZHkgdG8gc3RhcnQgVExTIixyZXNwb25zZUNvZGU6MjIwfSx7dGltZXN0YW1wOiIxNDozMDoyMSIsZGlyZWN0aW9uOiJjbGllbnQiLGNvbW1hbmQ6IkVITE8gbWFpbC5zZXJ2ZS56b25lIn0se3RpbWVzdGFtcDoiMTQ6MzA6MjEiLGRpcmVjdGlvbjoic2VydmVyIixjb21tYW5kOiIyNTAtbWFpbC5leGFtcGxlLmNvbSBIZWxsbyIscmVzcG9uc2VDb2RlOjI1MH0se3RpbWVzdGFtcDoiMTQ6MzA6MjEiLGRpcmVjdGlvbjoic2VydmVyIixjb21tYW5kOiIyNTAtQVVUSCBQTEFJTiBMT0dJTiIscmVzcG9uc2VDb2RlOjI1MH0se3RpbWVzdGFtcDoiMTQ6MzA6MjEiLGRpcmVjdGlvbjoic2VydmVyIixjb21tYW5kOiIyNTAgU0laRSA1MjQyODgwMCIscmVzcG9uc2VDb2RlOjI1MH0se3RpbWVzdGFtcDoiMTQ6MzA6MjEiLGRpcmVjdGlvbjoiY2xpZW50Iixjb21tYW5kOiJBVVRIIFBMQUlOIEFIVnpaWElBY0dGemMzZHZjbVE9In0se3RpbWVzdGFtcDoiMTQ6MzA6MjEiLGRpcmVjdGlvbjoic2VydmVyIixjb21tYW5kOiIyMzUgMi43LjAgQXV0aGVudGljYXRpb24gc3VjY2Vzc2Z1bCIscmVzcG9uc2VDb2RlOjIzNX0se3RpbWVzdGFtcDoiMTQ6MzA6MjEiLGRpcmVjdGlvbjoiY2xpZW50Iixjb21tYW5kOiJNQUlMIEZST006PG5vcmVwbHlAc2VydmUuem9uZT4ifSx7dGltZXN0YW1wOiIxNDozMDoyMSIsZGlyZWN0aW9uOiJzZXJ2ZXIiLGNvbW1hbmQ6IjI1MCBPSyIscmVzcG9uc2VDb2RlOjI1MH0se3RpbWVzdGFtcDoiMTQ6MzA6MjEiLGRpcmVjdGlvbjoiY2xpZW50Iixjb21tYW5kOiJSQ1BUIFRPOjx1c2VyQGV4YW1wbGUuY29tPiJ9LHt0aW1lc3RhbXA6IjE0OjMwOjIxIixkaXJlY3Rpb246InNlcnZlciIsY29tbWFuZDoiMjUwIEFjY2VwdGVkIixyZXNwb25zZUNvZGU6MjUwfSx7dGltZXN0YW1wOiIxNDozMDoyMiIsZGlyZWN0aW9uOiJjbGllbnQiLGNvbW1hbmQ6IkRBVEEifSx7dGltZXN0YW1wOiIxNDozMDoyMiIsZGlyZWN0aW9uOiJzZXJ2ZXIiLGNvbW1hbmQ6JzM1NCBFbnRlciBtZXNzYWdlLCBlbmRpbmcgd2l0aCAiLiIgb24gYSBsaW5lIGJ5IGl0c2VsZicscmVzcG9uc2VDb2RlOjM1NH0se3RpbWVzdGFtcDoiMTQ6MzA6MjIiLGRpcmVjdGlvbjoiY2xpZW50Iixjb21tYW5kOiIuIn0se3RpbWVzdGFtcDoiMTQ6MzA6MjIiLGRpcmVjdGlvbjoic2VydmVyIixjb21tYW5kOiIyNTAgT0sgaWQ9MXBRMnJTLTAwMDNBYi1DNCIscmVzcG9uc2VDb2RlOjI1MH0se3RpbWVzdGFtcDoiMTQ6MzA6MjIiLGRpcmVjdGlvbjoiY2xpZW50Iixjb21tYW5kOiJRVUlUIn0se3RpbWVzdGFtcDoiMTQ6MzA6MjIiLGRpcmVjdGlvbjoic2VydmVyIixjb21tYW5kOiIyMjEgbWFpbC5leGFtcGxlLmNvbSBjbG9zaW5nIGNvbm5lY3Rpb24iLHJlc3BvbnNlQ29kZToyMjF9XSxjb25uZWN0aW9uSW5mbzp7c291cmNlSXA6IjEwLjAuMS41MCIsc291cmNlSG9zdG5hbWU6Im1haWwuc2VydmUuem9uZSIsZGVzdGluYXRpb25JcDoiOTMuMTg0LjIxNi4zNCIsZGVzdGluYXRpb25Qb3J0OjI1LHRsc1ZlcnNpb246IlRMU3YxLjMiLHRsc0NpcGhlcjoiVExTX0FFU18yNTZfR0NNX1NIQTM4NCIsYXV0aGVudGljYXRlZDohMCxhdXRoTWV0aG9kOiJQTEFJTiIsYXV0aFVzZXI6Im5vcmVwbHlAc2VydmUuem9uZSJ9LGF1dGhlbnRpY2F0aW9uUmVzdWx0czp7c3BmOiJwYXNzIixzcGZEb21haW46InNlcnZlLnpvbmUiLGRraW06InBhc3MiLGRraW1Eb21haW46InNlcnZlLnpvbmUiLGRtYXJjOiJwYXNzIixkbWFyY1BvbGljeToicmVqZWN0In0saGVhZGVyczp7RnJvbToibm9yZXBseUBzZXJ2ZS56b25lIixUbzoidXNlckBleGFtcGxlLmNvbSIsU3ViamVjdDoiV2VsY29tZSB0byBzZXJ2ZS56b25lIixEYXRlOiJNb24sIDE1IEphbiAyMDI0IDE0OjMwOjIyICswMDAwIiwiTUlNRS1WZXJzaW9uIjoiMS4wIiwiQ29udGVudC1UeXBlIjoidGV4dC9odG1sOyBjaGFyc2V0PVVURi04In0sYm9keTpgPGh0bWw+CjxoZWFkPjx0aXRsZT5XZWxjb21lPC90aXRsZT48L2hlYWQ+Cjxib2R5PgogIDxoMT5XZWxjb21lIHRvIHNlcnZlLnpvbmUhPC9oMT4KICA8cD5Zb3VyIGFjY291bnQgaGFzIGJlZW4gY3JlYXRlZCBzdWNjZXNzZnVsbHkuPC9wPgogIDxwPkdldCBzdGFydGVkIGJ5IHZpc2l0aW5nIHlvdXIgPGEgaHJlZj0iaHR0cHM6Ly9zZXJ2ZS56b25lL2Rhc2hib2FyZCI+ZGFzaGJvYXJkPC9hPi48L3A+CjwvYm9keT4KPC9odG1sPmB9LDI6e2lkOiIyIixkaXJlY3Rpb246Im91dGJvdW5kIixzdGF0dXM6ImJvdW5jZWQiLGZyb206ImFsZXJ0c0BzZXJ2ZS56b25lIix0bzoiaW52YWxpZEBub3doZXJlLnRlc3QiLHRvTGlzdDpbImludmFsaWRAbm93aGVyZS50ZXN0Il0sc3ViamVjdDoiU2VydmljZSBBbGVydDogQ1BVIFVzYWdlIEhpZ2giLHRpbWVzdGFtcDoiMjAyNC0wMS0xNSAxNDoyODoxMCIsbWVzc2FnZUlkOiI8ZGVmNDU2QHNlcnZlLnpvbmU+IixzaXplOiI4LjIgS0IiLHJlamVjdGlvblJlYXNvbjoiNTUwIDUuMS4xIFRoZSBlbWFpbCBhY2NvdW50IHRoYXQgeW91IHRyaWVkIHRvIHJlYWNoIGRvZXMgbm90IGV4aXN0LiIsYm91bmNlTWVzc2FnZTpgRGVsaXZlcnkgdG8gdGhlIGZvbGxvd2luZyByZWNpcGllbnQgZmFpbGVkIHBlcm1hbmVudGx5OgoKICAgIGludmFsaWRAbm93aGVyZS50ZXN0CgpUZWNobmljYWwgZGV0YWlscyBvZiBwZXJtYW5lbnQgZmFpbHVyZToKR29vZ2xlIHRyaWVkIHRvIGRlbGl2ZXIgeW91ciBtZXNzYWdlLCBidXQgaXQgd2FzIHJlamVjdGVkIGJ5IHRoZSBzZXJ2ZXIgZm9yIHRoZSByZWNpcGllbnQgZG9tYWluIG5vd2hlcmUudGVzdC5gLHNtdHBMb2c6W3t0aW1lc3RhbXA6IjE0OjI4OjA4IixkaXJlY3Rpb246ImNsaWVudCIsY29tbWFuZDoiRUhMTyBtYWlsLnNlcnZlLnpvbmUifSx7dGltZXN0YW1wOiIxNDoyODowOCIsZGlyZWN0aW9uOiJzZXJ2ZXIiLGNvbW1hbmQ6IjI1MC1tYWlsLm5vd2hlcmUudGVzdCBIZWxsbyIscmVzcG9uc2VDb2RlOjI1MH0se3RpbWVzdGFtcDoiMTQ6Mjg6MDgiLGRpcmVjdGlvbjoiY2xpZW50Iixjb21tYW5kOiJNQUlMIEZST006PGFsZXJ0c0BzZXJ2ZS56b25lPiJ9LHt0aW1lc3RhbXA6IjE0OjI4OjA5IixkaXJlY3Rpb246InNlcnZlciIsY29tbWFuZDoiMjUwIE9LIixyZXNwb25zZUNvZGU6MjUwfSx7dGltZXN0YW1wOiIxNDoyODowOSIsZGlyZWN0aW9uOiJjbGllbnQiLGNvbW1hbmQ6IlJDUFQgVE86PGludmFsaWRAbm93aGVyZS50ZXN0PiJ9LHt0aW1lc3RhbXA6IjE0OjI4OjEwIixkaXJlY3Rpb246InNlcnZlciIsY29tbWFuZDoiNTUwIDUuMS4xIFRoZSBlbWFpbCBhY2NvdW50IHRoYXQgeW91IHRyaWVkIHRvIHJlYWNoIGRvZXMgbm90IGV4aXN0LiIscmVzcG9uc2VDb2RlOjU1MH0se3RpbWVzdGFtcDoiMTQ6Mjg6MTAiLGRpcmVjdGlvbjoiY2xpZW50Iixjb21tYW5kOiJRVUlUIn0se3RpbWVzdGFtcDoiMTQ6Mjg6MTAiLGRpcmVjdGlvbjoic2VydmVyIixjb21tYW5kOiIyMjEgQnllIixyZXNwb25zZUNvZGU6MjIxfV0sY29ubmVjdGlvbkluZm86e3NvdXJjZUlwOiIxMC4wLjEuNTAiLHNvdXJjZUhvc3RuYW1lOiJtYWlsLnNlcnZlLnpvbmUiLGRlc3RpbmF0aW9uSXA6IjE5OC41MS4xMDAuMjUiLGRlc3RpbmF0aW9uUG9ydDoyNSx0bHNWZXJzaW9uOiJUTFN2MS4yIix0bHNDaXBoZXI6IkVDREhFLVJTQS1BRVMxMjgtR0NNLVNIQTI1NiIsYXV0aGVudGljYXRlZDohMCxhdXRoTWV0aG9kOiJQTEFJTiIsYXV0aFVzZXI6ImFsZXJ0c0BzZXJ2ZS56b25lIn0sYXV0aGVudGljYXRpb25SZXN1bHRzOntzcGY6InBhc3MiLHNwZkRvbWFpbjoic2VydmUuem9uZSIsZGtpbToicGFzcyIsZGtpbURvbWFpbjoic2VydmUuem9uZSIsZG1hcmM6InBhc3MiLGRtYXJjUG9saWN5OiJxdWFyYW50aW5lIn0saGVhZGVyczp7RnJvbToiYWxlcnRzQHNlcnZlLnpvbmUiLFRvOiJpbnZhbGlkQG5vd2hlcmUudGVzdCIsU3ViamVjdDoiU2VydmljZSBBbGVydDogQ1BVIFVzYWdlIEhpZ2giLERhdGU6Ik1vbiwgMTUgSmFuIDIwMjQgMTQ6Mjg6MTAgKzAwMDAiLCJNSU1FLVZlcnNpb24iOiIxLjAiLCJDb250ZW50LVR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04In0sYm9keTpgQUxFUlQ6IENQVSBVc2FnZSBIaWdoCgpTZXJ2aWNlOiBhcGktZ2F0ZXdheQpDdXJyZW50IFVzYWdlOiA5NC4yJQpUaHJlc2hvbGQ6IDkwJQpUaW1lc3RhbXA6IDIwMjQtMDEtMTUgMTQ6Mjg6MDAgVVRDCgpQbGVhc2UgaW52ZXN0aWdhdGUgaW1tZWRpYXRlbHkuYH0sMzp7aWQ6IjMiLGRpcmVjdGlvbjoiaW5ib3VuZCIsc3RhdHVzOiJkZWxpdmVyZWQiLGZyb206InN1cHBvcnRAY3VzdG9tZXIuY29tIix0bzoiYWRtaW5Ac2VydmUuem9uZSIsdG9MaXN0OlsiYWRtaW5Ac2VydmUuem9uZSJdLGNjOlsib3BzQHNlcnZlLnpvbmUiXSxzdWJqZWN0OiJSZTogSW5mcmFzdHJ1Y3R1cmUgUmV2aWV3Iix0aW1lc3RhbXA6IjIwMjQtMDEtMTUgMTQ6MjU6MDAiLG1lc3NhZ2VJZDoiPGdoaTc4OUBjdXN0b21lci5jb20+IixzaXplOiIyNC4xIEtCIixzbXRwTG9nOlt7dGltZXN0YW1wOiIxNDoyNDo1OCIsZGlyZWN0aW9uOiJjbGllbnQiLGNvbW1hbmQ6IkVITE8gbWFpbC5jdXN0b21lci5jb20ifSx7dGltZXN0YW1wOiIxNDoyNDo1OCIsZGlyZWN0aW9uOiJzZXJ2ZXIiLGNvbW1hbmQ6IjI1MC1tYWlsLnNlcnZlLnpvbmUgSGVsbG8iLHJlc3BvbnNlQ29kZToyNTB9LHt0aW1lc3RhbXA6IjE0OjI0OjU4IixkaXJlY3Rpb246InNlcnZlciIsY29tbWFuZDoiMjUwLVNUQVJUVExTIixyZXNwb25zZUNvZGU6MjUwfSx7dGltZXN0YW1wOiIxNDoyNDo1OCIsZGlyZWN0aW9uOiJzZXJ2ZXIiLGNvbW1hbmQ6IjI1MCBTSVpFIDUyNDI4ODAwIixyZXNwb25zZUNvZGU6MjUwfSx7dGltZXN0YW1wOiIxNDoyNDo1OSIsZGlyZWN0aW9uOiJjbGllbnQiLGNvbW1hbmQ6IlNUQVJUVExTIn0se3RpbWVzdGFtcDoiMTQ6MjQ6NTkiLGRpcmVjdGlvbjoic2VydmVyIixjb21tYW5kOiIyMjAgUmVhZHkgdG8gc3RhcnQgVExTIixyZXNwb25zZUNvZGU6MjIwfSx7dGltZXN0YW1wOiIxNDoyNDo1OSIsZGlyZWN0aW9uOiJjbGllbnQiLGNvbW1hbmQ6Ik1BSUwgRlJPTTo8c3VwcG9ydEBjdXN0b21lci5jb20+In0se3RpbWVzdGFtcDoiMTQ6MjQ6NTkiLGRpcmVjdGlvbjoic2VydmVyIixjb21tYW5kOiIyNTAgT0siLHJlc3BvbnNlQ29kZToyNTB9LHt0aW1lc3RhbXA6IjE0OjI0OjU5IixkaXJlY3Rpb246ImNsaWVudCIsY29tbWFuZDoiUkNQVCBUTzo8YWRtaW5Ac2VydmUuem9uZT4ifSx7dGltZXN0YW1wOiIxNDoyNTowMCIsZGlyZWN0aW9uOiJzZXJ2ZXIiLGNvbW1hbmQ6IjI1MCBBY2NlcHRlZCIscmVzcG9uc2VDb2RlOjI1MH0se3RpbWVzdGFtcDoiMTQ6MjU6MDAiLGRpcmVjdGlvbjoiY2xpZW50Iixjb21tYW5kOiJEQVRBIn0se3RpbWVzdGFtcDoiMTQ6MjU6MDAiLGRpcmVjdGlvbjoic2VydmVyIixjb21tYW5kOiIzNTQgRW50ZXIgbWVzc2FnZSIscmVzcG9uc2VDb2RlOjM1NH0se3RpbWVzdGFtcDoiMTQ6MjU6MDAiLGRpcmVjdGlvbjoiY2xpZW50Iixjb21tYW5kOiIuIn0se3RpbWVzdGFtcDoiMTQ6MjU6MDAiLGRpcmVjdGlvbjoic2VydmVyIixjb21tYW5kOiIyNTAgT0sgaWQ9MmJSM3NULTAwMDRDZC1FNSIscmVzcG9uc2VDb2RlOjI1MH1dLGNvbm5lY3Rpb25JbmZvOntzb3VyY2VJcDoiMjAzLjAuMTEzLjQ1Iixzb3VyY2VIb3N0bmFtZToibWFpbC5jdXN0b21lci5jb20iLGRlc3RpbmF0aW9uSXA6IjEwLjAuMS41MCIsZGVzdGluYXRpb25Qb3J0OjI1LHRsc1ZlcnNpb246IlRMU3YxLjMiLHRsc0NpcGhlcjoiVExTX0FFU18xMjhfR0NNX1NIQTI1NiIsYXV0aGVudGljYXRlZDohMSxhdXRoTWV0aG9kOiIiLGF1dGhVc2VyOiIifSxhdXRoZW50aWNhdGlvblJlc3VsdHM6e3NwZjoicGFzcyIsc3BmRG9tYWluOiJjdXN0b21lci5jb20iLGRraW06InBhc3MiLGRraW1Eb21haW46ImN1c3RvbWVyLmNvbSIsZG1hcmM6InBhc3MiLGRtYXJjUG9saWN5OiJub25lIn0saGVhZGVyczp7RnJvbToic3VwcG9ydEBjdXN0b21lci5jb20iLFRvOiJhZG1pbkBzZXJ2ZS56b25lIixDQzoib3BzQHNlcnZlLnpvbmUiLFN1YmplY3Q6IlJlOiBJbmZyYXN0cnVjdHVyZSBSZXZpZXciLERhdGU6Ik1vbiwgMTUgSmFuIDIwMjQgMTQ6MjU6MDAgKzAwMDAiLCJNSU1FLVZlcnNpb24iOiIxLjAiLCJDb250ZW50LVR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04IiwiSW4tUmVwbHktVG8iOiI8cHJldjEyM0BzZXJ2ZS56b25lPiJ9LGJvZHk6YEhpIEFkbWluLAoKVGhhbmsgeW91IGZvciB0aGUgZGV0YWlsZWQgaW5mcmFzdHJ1Y3R1cmUgcmV2aWV3IHJlcG9ydC4KCldlIGhhdmUgcmV2aWV3ZWQgdGhlIHJlY29tbWVuZGF0aW9ucyBhbmQgd291bGQgbGlrZSB0bwpwcm9jZWVkIHdpdGggdGhlIGZvbGxvd2luZzoKCjEuIFVwZ3JhZGUgdG8gdGhlIFBybyB0aWVyCjIuIEVuYWJsZSBhdXRvbWF0aWMgYmFja3VwcwozLiBTZXQgdXAgbW9uaXRvcmluZyBhbGVydHMKClBsZWFzZSBsZXQgdXMga25vdyB0aGUgdGltZWxpbmUgZm9yIHRoZXNlIGNoYW5nZXMuCgpCZXN0IHJlZ2FyZHMsCkN1c3RvbWVyIFN1cHBvcnQgVGVhbWB9fTthc3luYyBvbkFjdGl2YXRlKG0pe3RoaXMuYXBwdWk9bS5hcHB1aSx0aGlzLmFwcHVpLnNldENvbnRlbnRUYWJzKFt7a2V5OiJBbGwgRW1haWxzIixhY3Rpb246aSgoKT0+e3RoaXMuY3VycmVudERpcmVjdGlvbkZpbHRlcj0iYWxsIix0aGlzLmN1cnJlbnRWaWV3PSJsaXN0Iix0aGlzLnVwZGF0ZVNlY29uZGFyeU1lbnUoKX0sImFjdGlvbiIpfSx7a2V5OiJJbmJvdW5kIixhY3Rpb246aSgoKT0+e3RoaXMuY3VycmVudERpcmVjdGlvbkZpbHRlcj0iaW5ib3VuZCIsdGhpcy5jdXJyZW50Vmlldz0ibGlzdCIsdGhpcy51cGRhdGVTZWNvbmRhcnlNZW51KCl9LCJhY3Rpb24iKX0se2tleToiT3V0Ym91bmQiLGFjdGlvbjppKCgpPT57dGhpcy5jdXJyZW50RGlyZWN0aW9uRmlsdGVyPSJvdXRib3VuZCIsdGhpcy5jdXJyZW50Vmlldz0ibGlzdCIsdGhpcy51cGRhdGVTZWNvbmRhcnlNZW51KCl9LCJhY3Rpb24iKX1dKSx0aGlzLnVwZGF0ZVNlY29uZGFyeU1lbnUoKX11cGRhdGVTZWNvbmRhcnlNZW51KCl7dGhpcy5hcHB1aSYmdGhpcy5hcHB1aS5zZXRTZWNvbmRhcnlNZW51KHtoZWFkaW5nOiJFbWFpbCAvIE1UQSIsZ3JvdXBzOlt7bmFtZToiQWN0aW9ucyIsaXRlbXM6W3t0eXBlOiJhY3Rpb24iLGtleToiUmVmcmVzaCIsaWNvbk5hbWU6Imx1Y2lkZTpSZWZyZXNoQ3ciLGFjdGlvbjppKCgpPT57Y29uc29sZS5sb2coIlJlZnJlc2ggZW1haWxzIil9LCJhY3Rpb24iKX0se3R5cGU6ImFjdGlvbiIsa2V5OiJFeHBvcnQgTG9ncyIsaWNvbk5hbWU6Imx1Y2lkZTpEb3dubG9hZCIsYWN0aW9uOmkoKCk9Pntjb25zb2xlLmxvZygiRXhwb3J0IGxvZ3MiKX0sImFjdGlvbiIpfV19LHtuYW1lOiJTdGF0dXMgRmlsdGVycyIsaXRlbXM6W3trZXk6IkRlbGl2ZXJlZCIsaWNvbk5hbWU6Imx1Y2lkZTpDaGVja0NpcmNsZSIsYmFkZ2U6IjUiLGJhZGdlVmFyaWFudDoic3VjY2VzcyIsYWN0aW9uOmkoKCk9Pntjb25zb2xlLmxvZygiRmlsdGVyIGRlbGl2ZXJlZCIpfSwiYWN0aW9uIil9LHtrZXk6IkJvdW5jZWQiLGljb25OYW1lOiJsdWNpZGU6WENpcmNsZSIsYmFkZ2U6IjEiLGJhZGdlVmFyaWFudDoiZXJyb3IiLGFjdGlvbjppKCgpPT57Y29uc29sZS5sb2coIkZpbHRlciBib3VuY2VkIil9LCJhY3Rpb24iKX0se2tleToiRGVmZXJyZWQiLGljb25OYW1lOiJsdWNpZGU6Q2xvY2siLGJhZGdlOiIxIixiYWRnZVZhcmlhbnQ6Indhcm5pbmciLGFjdGlvbjppKCgpPT57Y29uc29sZS5sb2coIkZpbHRlciBkZWZlcnJlZCIpfSwiYWN0aW9uIil9LHtrZXk6IlBlbmRpbmciLGljb25OYW1lOiJsdWNpZGU6TG9hZGVyIixiYWRnZToiMSIsYWN0aW9uOmkoKCk9Pntjb25zb2xlLmxvZygiRmlsdGVyIHBlbmRpbmciKX0sImFjdGlvbiIpfV19LHtuYW1lOiJTdGF0aXN0aWNzIixpdGVtczpbe3R5cGU6ImhlYWRlciIsbGFiZWw6IjggVG90YWwgRW1haWxzIn0se3R5cGU6ImhlYWRlciIsbGFiZWw6IjYyLjUlIERlbGl2ZXJ5IFJhdGUifV19XX0pfW9uRGVhY3RpdmF0ZSgpe31zdGF0aWMgc3R5bGVzPVtoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHRoaXMuY3VycmVudFZpZXc9PT0iZGV0YWlsIiYmdGhpcy5zZWxlY3RlZEVtYWlsP3dgCiAgICAgICAgPHN6LW10YS1kZXRhaWwtdmlldwogICAgICAgICAgLmVtYWlsPSR7dGhpcy5zZWxlY3RlZEVtYWlsfQogICAgICAgICAgQGJhY2s9JHsoKT0+e3RoaXMuY3VycmVudFZpZXc9Imxpc3QiLHRoaXMuc2VsZWN0ZWRFbWFpbD1udWxsfX0KICAgICAgICA+PC9zei1tdGEtZGV0YWlsLXZpZXc+CiAgICAgIGA6d2AKICAgICAgPHN6LW10YS1saXN0LXZpZXcKICAgICAgICAuZW1haWxzPSR7dGhpcy5jdXJyZW50RGlyZWN0aW9uRmlsdGVyPT09ImFsbCI/dGhpcy5kZW1vRW1haWxzOnRoaXMuZGVtb0VtYWlscy5maWx0ZXIobT0+bS5kaXJlY3Rpb249PT10aGlzLmN1cnJlbnREaXJlY3Rpb25GaWx0ZXIpfQogICAgICAgIEBlbWFpbC1jbGljaz0ke209PnRoaXMuaGFuZGxlRW1haWxDbGljayhtLmRldGFpbCl9CiAgICAgID48L3N6LW10YS1saXN0LXZpZXc+CiAgICBgfWhhbmRsZUVtYWlsQ2xpY2sobSl7bGV0IGY9dGhpcy5kZW1vRW1haWxEZXRhaWxzW20uaWRdO2Y/KHRoaXMuc2VsZWN0ZWRFbWFpbD1mLHRoaXMuY3VycmVudFZpZXc9ImRldGFpbCIpOmNvbnNvbGUubG9nKCJObyBkZXRhaWwgZGF0YSBhdmFpbGFibGUgZm9yIGVtYWlsOiIsbS5pZCl9c3RhdGlje09nKGEsdCl9fTtyZXR1cm4geD1hfSkoKX0pO3ZhciBrOWEsU290LHlKYSxTOWE9ZygoKT0+e3BlKCk7aWMoKTtrOWE9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LFNvdD1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0seUphPSgoKT0+e2xldCBzPVtuZSgic3otZGVtby12aWV3LXJvdXRlcyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdO3ZhciBwPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJTekRlbW9WaWV3Um91dGVzIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bWSgpXSxrOWEodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjdXJyZW50VGFiIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHU9PiJjdXJyZW50VGFiImluIHUsImhhcyIpLGdldDppKHU9PnUuY3VycmVudFRhYiwiZ2V0Iiksc2V0OmkoKHUsYyk9Pnt1LmN1cnJlbnRUYWI9Y30sInNldCIpfSxtZXRhZGF0YTpkfSxvLGwpLGs5YShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpkfSxudWxsLHQpLHA9YT1lLnZhbHVlLGQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZH0pfWFwcHVpPW51bGw7I2U9U290KHRoaXMsbywiYWxsIik7Z2V0IGN1cnJlbnRUYWIoKXtyZXR1cm4gdGhpcy4jZX1zZXQgY3VycmVudFRhYihkKXt0aGlzLiNlPWR9ZGVtb1JvdXRlcz0oU290KHRoaXMsbCksW3tpZDoicm91dGUtMSIsbmFtZToiV2ViIEZyb250ZW5kIixkZXNjcmlwdGlvbjoiTWFpbiB3ZWJzaXRlIHdpdGggVExTIHRlcm1pbmF0aW9uIGFuZCBhdXRvbWF0aWMgY2VydGlmaWNhdGVzIixlbmFibGVkOiEwLHByaW9yaXR5OjEwLHRhZ3M6WyJ3ZWIiLCJodHRwcyIsInByb2R1Y3Rpb24iXSxtYXRjaDp7cG9ydHM6NDQzLGRvbWFpbnM6WyJzZXJ2ZS56b25lIiwid3d3LnNlcnZlLnpvbmUiXSxwcm90b2NvbDoiaHR0cCJ9LGFjdGlvbjp7dHlwZToiZm9yd2FyZCIsdGFyZ2V0czpbe2hvc3Q6IjEwLjAuMC4xMCIscG9ydDozZTN9XSx0bHM6e21vZGU6InRlcm1pbmF0ZSIsY2VydGlmaWNhdGU6ImF1dG8ifX19LHtpZDoicm91dGUtMiIsbmFtZToiSFRUUCBSZWRpcmVjdCIsZGVzY3JpcHRpb246IlJlZGlyZWN0cyBhbGwgSFRUUCB0cmFmZmljIHRvIEhUVFBTIixlbmFibGVkOiEwLHByaW9yaXR5OjEwMCx0YWdzOlsid2ViIiwiaHR0cCIsInJlZGlyZWN0Il0sbWF0Y2g6e3BvcnRzOjgwLGRvbWFpbnM6WyJzZXJ2ZS56b25lIiwid3d3LnNlcnZlLnpvbmUiXSxwcm90b2NvbDoiaHR0cCJ9LGFjdGlvbjp7dHlwZToic29ja2V0LWhhbmRsZXIifX0se2lkOiJyb3V0ZS0zIixuYW1lOiJTTVRQIEluYm91bmQiLGRlc2NyaXB0aW9uOiJJbmJvdW5kIGVtYWlsIHJlbGF5IGZvciBzZXJ2ZS56b25lIGRvbWFpbiIsZW5hYmxlZDohMCx0YWdzOlsiZW1haWwiLCJzbXRwIiwicHJvZHVjdGlvbiJdLG1hdGNoOntwb3J0czoyNSxkb21haW5zOiJtYWlsLnNlcnZlLnpvbmUifSxhY3Rpb246e3R5cGU6ImZvcndhcmQiLHRhcmdldHM6W3tob3N0OiIxMC4wLjEuNSIscG9ydDoyNX1dLHRsczp7bW9kZToidGVybWluYXRlIixjZXJ0aWZpY2F0ZToiYXV0byJ9fX0se2lkOiJyb3V0ZS00IixuYW1lOiJBUEkgR2F0ZXdheSIsZGVzY3JpcHRpb246IkFQSSBnYXRld2F5IHdpdGggcmF0ZSBsaW1pdGluZywgQ09SUyBoZWFkZXJzLCBhbmQgbG9hZCBiYWxhbmNpbmciLGVuYWJsZWQ6ITAscHJpb3JpdHk6MjAsdGFnczpbIndlYiIsImFwaSIsImh0dHBzIiwicHJvZHVjdGlvbiJdLG1hdGNoOntwb3J0czo0NDMsZG9tYWluczoiYXBpLnNlcnZlLnpvbmUiLHBhdGg6Ii92Mi8qIixwcm90b2NvbDoiaHR0cCJ9LGFjdGlvbjp7dHlwZToiZm9yd2FyZCIsdGFyZ2V0czpbe2hvc3Q6WyIxMC4wLjAuMjAiLCIxMC4wLjAuMjEiLCIxMC4wLjAuMjIiXSxwb3J0OjgwODB9XSx0bHM6e21vZGU6InRlcm1pbmF0ZSIsY2VydGlmaWNhdGU6ImF1dG8ifSxsb2FkQmFsYW5jaW5nOnthbGdvcml0aG06InJvdW5kLXJvYmluIn19LHNlY3VyaXR5OntyYXRlTGltaXQ6e2VuYWJsZWQ6ITAsbWF4UmVxdWVzdHM6MjAwLHdpbmRvdzo2MH0sbWF4Q29ubmVjdGlvbnM6NWUzfSxoZWFkZXJzOntyZXNwb25zZTp7IkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiI6IioiLCJYLVJlcXVlc3QtSWQiOiJ7e3JlcXVlc3RJZH19In19fSx7aWQ6InJvdXRlLTUiLG5hbWU6IldlYlNvY2tldCBSZWFsdGltZSIsZGVzY3JpcHRpb246IlJlYWwtdGltZSBXZWJTb2NrZXQgY29ubmVjdGlvbnMgZm9yIGxpdmUgdXBkYXRlcyIsZW5hYmxlZDohMCx0YWdzOlsid2ViIiwiaHR0cHMiLCJ3ZWJzb2NrZXQiXSxtYXRjaDp7cG9ydHM6NDQzLGRvbWFpbnM6IndzLnNlcnZlLnpvbmUiLHBhdGg6Ii93cy8qIixwcm90b2NvbDoiaHR0cCJ9LGFjdGlvbjp7dHlwZToiZm9yd2FyZCIsdGFyZ2V0czpbe2hvc3Q6IjEwLjAuMC4zMCIscG9ydDo5MDkwfV0sdGxzOnttb2RlOiJ0ZXJtaW5hdGUiLGNlcnRpZmljYXRlOiJhdXRvIn0sd2Vic29ja2V0OntlbmFibGVkOiEwfX19LHtpZDoicm91dGUtNiIsbmFtZToiVGVuYW50IFdpbGRjYXJkIixkZXNjcmlwdGlvbjoiTXVsdGktdGVuYW50IHdpbGRjYXJkIHJvdXRpbmcgZm9yIGN1c3RvbWVyIHN1YmRvbWFpbnMiLGVuYWJsZWQ6ITAscHJpb3JpdHk6NTAsdGFnczpbIndlYiIsImh0dHBzIiwibXVsdGktdGVuYW50Il0sbWF0Y2g6e3BvcnRzOjQ0Myxkb21haW5zOiIqLmN1c3RvbWVycy5zZXJ2ZS56b25lIixwcm90b2NvbDoiaHR0cCJ9LGFjdGlvbjp7dHlwZToiZm9yd2FyZCIsdGFyZ2V0czpbe2hvc3Q6IjEwLjAuMC40MCIscG9ydDo4MDgwfV0sdGxzOnttb2RlOiJ0ZXJtaW5hdGUiLGNlcnRpZmljYXRlOiJhdXRvIn19LHNlY3VyaXR5OntpcEFsbG93TGlzdDpbIjEwLjAuMC4wLzgiLCIxNzIuMTYuMC4wLzEyIl19fSx7aWQ6InJvdXRlLTciLG5hbWU6Ik1pY3Jvc2VydmljZXMgTEIiLGRlc2NyaXB0aW9uOiJMb2FkLWJhbGFuY2VkIG1pY3Jvc2VydmljZXMgYmFja2VuZCB3aXRoIElQLWhhc2ggYWZmaW5pdHkiLGVuYWJsZWQ6ITAsdGFnczpbIndlYiIsImh0dHBzIiwicHJvZHVjdGlvbiJdLG1hdGNoOntwb3J0czpbNDQzLDg0NDNdLGRvbWFpbnM6InNlcnZpY2VzLnNlcnZlLnpvbmUiLHByb3RvY29sOiJodHRwIn0sYWN0aW9uOnt0eXBlOiJmb3J3YXJkIix0YXJnZXRzOlt7aG9zdDpbIjEwLjAuMi4xIiwiMTAuMC4yLjIiLCIxMC4wLjIuMyIsIjEwLjAuMi40Il0scG9ydDozZTN9XSx0bHM6e21vZGU6InRlcm1pbmF0ZS1hbmQtcmVlbmNyeXB0IixjZXJ0aWZpY2F0ZToiYXV0byJ9LGxvYWRCYWxhbmNpbmc6e2FsZ29yaXRobToiaXAtaGFzaCJ9fX0se2lkOiJyb3V0ZS04IixuYW1lOiJETlMgb3ZlciBIVFRQUyIsZGVzY3JpcHRpb246IkROUy1vdmVyLUhUVFBTIHJlc29sdmVyIGVuZHBvaW50IixlbmFibGVkOiEwLHRhZ3M6WyJkbnMiLCJodHRwcyJdLG1hdGNoOntwb3J0czo0NDMsZG9tYWluczoiZG5zLnNlcnZlLnpvbmUiLHBhdGg6Ii9kbnMtcXVlcnkiLHByb3RvY29sOiJodHRwIn0sYWN0aW9uOnt0eXBlOiJmb3J3YXJkIix0YXJnZXRzOlt7aG9zdDoiMTAuMC4zLjEiLHBvcnQ6ODA1M31dLHRsczp7bW9kZToidGVybWluYXRlIixjZXJ0aWZpY2F0ZToiYXV0byJ9fX0se2lkOiJyb3V0ZS05IixuYW1lOiJIaWdoLVBlcmYgVENQIFByb3h5IixkZXNjcmlwdGlvbjoiTkZUYWJsZXMtYWNjZWxlcmF0ZWQgVENQIHByb3h5IGZvciBnYW1lIHNlcnZlcnMiLGVuYWJsZWQ6ITAsdGFnczpbInRjcCIsIm5mdGFibGVzIiwicHJvZHVjdGlvbiJdLG1hdGNoOntwb3J0czpbe2Zyb206MjdlMyx0bzoyNzA1MH1dLHByb3RvY29sOiJ0Y3AifSxhY3Rpb246e3R5cGU6ImZvcndhcmQiLHRhcmdldHM6W3tob3N0OiIxMC4wLjQuMSIscG9ydDoicHJlc2VydmUifV0sZm9yd2FyZGluZ0VuZ2luZToibmZ0YWJsZXMifX0se2lkOiJyb3V0ZS0xMCIsbmFtZToiTGVnYWN5IEFkbWluIFBhbmVsIixkZXNjcmlwdGlvbjoiRGVwcmVjYXRlZCBhZG1pbiBwYW5lbCBcdTIwMTQgZGlzYWJsZWQgZm9yIG1haW50ZW5hbmNlIixlbmFibGVkOiExLHRhZ3M6WyJ3ZWIiLCJodHRwcyIsImRlcHJlY2F0ZWQiXSxtYXRjaDp7cG9ydHM6NDQzLGRvbWFpbnM6ImFkbWluLW9sZC5zZXJ2ZS56b25lIixwcm90b2NvbDoiaHR0cCJ9LGFjdGlvbjp7dHlwZToic29ja2V0LWhhbmRsZXIifSxzZWN1cml0eTp7aXBCbG9ja0xpc3Q6WyIwLjAuMC4wLzAiXX19XSk7Z2V0IGZpbHRlcmVkUm91dGVzKCl7cmV0dXJuIHRoaXMuY3VycmVudFRhYj09PSJhbGwiP3RoaXMuZGVtb1JvdXRlczp0aGlzLmN1cnJlbnRUYWI9PT0iaHR0cHMiP3RoaXMuZGVtb1JvdXRlcy5maWx0ZXIoZD0+ZC50YWdzPy5zb21lKHU9Plsid2ViIiwiaHR0cHMiLCJodHRwIl0uaW5jbHVkZXModSkpKTp0aGlzLmN1cnJlbnRUYWI9PT0iZW1haWwiP3RoaXMuZGVtb1JvdXRlcy5maWx0ZXIoZD0+ZC50YWdzPy5zb21lKHU9PlsiZW1haWwiLCJzbXRwIl0uaW5jbHVkZXModSkpKTp0aGlzLmN1cnJlbnRUYWI9PT0iZG5zIj90aGlzLmRlbW9Sb3V0ZXMuZmlsdGVyKGQ9PmQudGFncz8uc29tZSh1PT5bImRucyJdLmluY2x1ZGVzKHUpKSk6dGhpcy5kZW1vUm91dGVzfWFzeW5jIG9uQWN0aXZhdGUoZCl7dGhpcy5hcHB1aT1kLmFwcHVpLHRoaXMuYXBwdWkuc2V0Q29udGVudFRhYnMoW3trZXk6IkFsbCBSb3V0ZXMiLGFjdGlvbjppKCgpPT57dGhpcy5jdXJyZW50VGFiPSJhbGwiLHRoaXMudXBkYXRlU2Vjb25kYXJ5TWVudSgpfSwiYWN0aW9uIil9LHtrZXk6IkhUVFAvUyIsYWN0aW9uOmkoKCk9Pnt0aGlzLmN1cnJlbnRUYWI9Imh0dHBzIix0aGlzLnVwZGF0ZVNlY29uZGFyeU1lbnUoKX0sImFjdGlvbiIpfSx7a2V5OiJFbWFpbCIsYWN0aW9uOmkoKCk9Pnt0aGlzLmN1cnJlbnRUYWI9ImVtYWlsIix0aGlzLnVwZGF0ZVNlY29uZGFyeU1lbnUoKX0sImFjdGlvbiIpfSx7a2V5OiJETlMiLGFjdGlvbjppKCgpPT57dGhpcy5jdXJyZW50VGFiPSJkbnMiLHRoaXMudXBkYXRlU2Vjb25kYXJ5TWVudSgpfSwiYWN0aW9uIil9XSksdGhpcy51cGRhdGVTZWNvbmRhcnlNZW51KCl9dXBkYXRlU2Vjb25kYXJ5TWVudSgpe2lmKCF0aGlzLmFwcHVpKXJldHVybjtsZXQgZD10aGlzLmRlbW9Sb3V0ZXMubGVuZ3RoLHU9dGhpcy5kZW1vUm91dGVzLmZpbHRlcihiPT5iLmVuYWJsZWQhPT0hMSkubGVuZ3RoLGM9dGhpcy5kZW1vUm91dGVzLmZpbHRlcihiPT5iLmFjdGlvbi50eXBlPT09ImZvcndhcmQiKS5sZW5ndGg7dGhpcy5hcHB1aS5zZXRTZWNvbmRhcnlNZW51KHtoZWFkaW5nOiJSb3V0ZXMiLGdyb3Vwczpbe25hbWU6IkFjdGlvbnMiLGl0ZW1zOlt7dHlwZToiYWN0aW9uIixrZXk6IlJlZnJlc2giLGljb25OYW1lOiJsdWNpZGU6UmVmcmVzaEN3IixhY3Rpb246aSgoKT0+e2NvbnNvbGUubG9nKCJSZWZyZXNoIHJvdXRlcyIpfSwiYWN0aW9uIil9LHt0eXBlOiJhY3Rpb24iLGtleToiQWRkIFJvdXRlIixpY29uTmFtZToibHVjaWRlOlBsdXMiLGFjdGlvbjppKCgpPT57Y29uc29sZS5sb2coIkFkZCByb3V0ZSIpfSwiYWN0aW9uIil9XX0se25hbWU6IlN0YXRpc3RpY3MiLGl0ZW1zOlt7dHlwZToiaGVhZGVyIixsYWJlbDpgJHtkfSBUb3RhbCBSb3V0ZXNgfSx7dHlwZToiaGVhZGVyIixsYWJlbDpgJHt1fSBBY3RpdmVgfSx7dHlwZToiaGVhZGVyIixsYWJlbDpgJHtjfSBGb3J3YXJkYH0se3R5cGU6ImhlYWRlciIsbGFiZWw6YCR7ZC1jfSBTb2NrZXQgSGFuZGxlcmB9XX1dfSl9b25EZWFjdGl2YXRlKCl7fXN0YXRpYyBzdHlsZXM9W2guZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPHN6LXJvdXRlLWxpc3QtdmlldwogICAgICAgIC5yb3V0ZXM9JHt0aGlzLmZpbHRlcmVkUm91dGVzfQogICAgICAgIEByb3V0ZS1jbGljaz0ke2Q9Pntjb25zb2xlLmxvZygiUm91dGUgY2xpY2tlZDoiLGQuZGV0YWlsLm5hbWUpfX0KICAgICAgPjwvc3otcm91dGUtbGlzdC12aWV3PgogICAgYH1zdGF0aWN7U290KGEsdCl9fTtyZXR1cm4gcD1hfSkoKX0pO3ZhciB3SmEsa0phLFNKYSxfOWE9ZygoKT0+e3BlKCk7aWMoKTt3SmE9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LGtKYT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sU0phPSgoKT0+e2xldCBzPVtuZSgic3otZGVtby12aWV3LWNvbmZpZyIpXSxlLHQ9W10sYSxyPXdlO3ZhciBuPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJTekRlbW9WaWV3Q29uZmlnIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IG89dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7d0phKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOm99LG51bGwsdCksbj1hPWUudmFsdWUsbyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpvfSl9c3RhdGljIHN0eWxlcz1baC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8c3otY29uZmlnLW92ZXJ2aWV3CiAgICAgICAgaW5mb1RleHQ9IlRoaXMgdmlldyBkaXNwbGF5cyB0aGUgY3VycmVudCBydW5uaW5nIGNvbmZpZ3VyYXRpb24uIERjUm91dGVyIGlzIGNvbmZpZ3VyZWQgdGhyb3VnaCBjb2RlIG9yIHJlbW90ZSBtYW5hZ2VtZW50LiIKICAgICAgPgogICAgICAgIDxzei1jb25maWctc2VjdGlvbgogICAgICAgICAgdGl0bGU9IlN5c3RlbSIKICAgICAgICAgIHN1YnRpdGxlPSJCYXNlIHBhdGhzIGFuZCBpbmZyYXN0cnVjdHVyZSIKICAgICAgICAgIGljb249Imx1Y2lkZTpzZXJ2ZXIiCiAgICAgICAgICBzdGF0dXM9ImVuYWJsZWQiCiAgICAgICAgICAuZmllbGRzPSR7W3trZXk6IkJhc2UgRGlyZWN0b3J5Iix2YWx1ZToiL2hvbWUvdXNlci8uc2VydmUuem9uZS9kY3JvdXRlciJ9LHtrZXk6IkRhdGEgRGlyZWN0b3J5Iix2YWx1ZToiL2hvbWUvdXNlci8uc2VydmUuem9uZS9kY3JvdXRlci9kYXRhIn0se2tleToiUHVibGljIElQIix2YWx1ZToiMjAzLjAuMTEzLjUwIn0se2tleToiUHJveHkgSVBzIix2YWx1ZTpbIjIwMy4wLjExMy4xMCIsIjIwMy4wLjExMy4xMSJdLHR5cGU6InBpbGxzIn0se2tleToiVXB0aW1lIix2YWx1ZToiM2QgMTRoIDIybSJ9LHtrZXk6IlN0b3JhZ2UgQmFja2VuZCIsdmFsdWU6ImZpbGVzeXN0ZW0iLHR5cGU6ImJhZGdlIn1dfQogICAgICAgID48L3N6LWNvbmZpZy1zZWN0aW9uPgoKICAgICAgICA8c3otY29uZmlnLXNlY3Rpb24KICAgICAgICAgIHRpdGxlPSJTbWFydFByb3h5IgogICAgICAgICAgc3VidGl0bGU9IkhUVFAvSFRUUFMgYW5kIFRDUC9TTkkgcmV2ZXJzZSBwcm94eSIKICAgICAgICAgIGljb249Imx1Y2lkZTpuZXR3b3JrIgogICAgICAgICAgc3RhdHVzPSJlbmFibGVkIgogICAgICAgICAgLmZpZWxkcz0ke1t7a2V5OiJSb3V0ZSBDb3VudCIsdmFsdWU6MTJ9LHtrZXk6IkFDTUUgRW5hYmxlZCIsdmFsdWU6ITAsdHlwZToiYm9vbGVhbiJ9LHtrZXk6IkFjY291bnQgRW1haWwiLHZhbHVlOiJhZG1pbkBzZXJ2ZS56b25lIn0se2tleToiVXNlIFByb2R1Y3Rpb24iLHZhbHVlOiEwLHR5cGU6ImJvb2xlYW4ifSx7a2V5OiJBdXRvIFJlbmV3Iix2YWx1ZTohMCx0eXBlOiJib29sZWFuIn0se2tleToiUmVuZXcgVGhyZXNob2xkIix2YWx1ZToiMzAgZGF5cyJ9XX0KICAgICAgICAgIC5hY3Rpb25zPSR7W3tsYWJlbDoiVmlldyBSb3V0ZXMiLGljb246Imx1Y2lkZTphcnJvdy1yaWdodCIsZXZlbnQ6Im5hdmlnYXRlIixkZXRhaWw6e3ZpZXc6InJvdXRlcyJ9fV19CiAgICAgICAgPjwvc3otY29uZmlnLXNlY3Rpb24+CgogICAgICAgIDxzei1jb25maWctc2VjdGlvbgogICAgICAgICAgdGl0bGU9IkVtYWlsIFNlcnZlciIKICAgICAgICAgIHN1YnRpdGxlPSJTTVRQIGVtYWlsIGhhbmRsaW5nIHdpdGggc21hcnRtdGEiCiAgICAgICAgICBpY29uPSJsdWNpZGU6bWFpbCIKICAgICAgICAgIHN0YXR1cz0iZW5hYmxlZCIKICAgICAgICAgIC5maWVsZHM9JHtbe2tleToiUG9ydHMiLHZhbHVlOlsiMjUiLCI0NjUiLCI1ODciXSx0eXBlOiJwaWxscyJ9LHtrZXk6Ikhvc3RuYW1lIix2YWx1ZToibWFpbC5zZXJ2ZS56b25lIn0se2tleToiRG9tYWlucyIsdmFsdWU6WyJzZXJ2ZS56b25lIiwibWFpbC5zZXJ2ZS56b25lIl0sdHlwZToicGlsbHMifSx7a2V5OiJFbWFpbCBSb3V0ZXMiLHZhbHVlOjV9LHtrZXk6IlJlY2VpdmVkIFBhdGgiLHZhbHVlOiIvZGF0YS9lbWFpbHMifV19CiAgICAgICAgPjwvc3otY29uZmlnLXNlY3Rpb24+CgogICAgICAgIDxzei1jb25maWctc2VjdGlvbgogICAgICAgICAgdGl0bGU9IkROUyBTZXJ2ZXIiCiAgICAgICAgICBzdWJ0aXRsZT0iQXV0aG9yaXRhdGl2ZSBETlMgd2l0aCBzbWFydGRucyIKICAgICAgICAgIGljb249Imx1Y2lkZTpnbG9iZSIKICAgICAgICAgIHN0YXR1cz0iZW5hYmxlZCIKICAgICAgICAgIC5maWVsZHM9JHtbe2tleToiUG9ydCIsdmFsdWU6NTN9LHtrZXk6Ik5TIERvbWFpbnMiLHZhbHVlOlsibnMxLnNlcnZlLnpvbmUiLCJuczIuc2VydmUuem9uZSJdLHR5cGU6InBpbGxzIn0se2tleToiU2NvcGVzIix2YWx1ZTpbInNlcnZlLnpvbmUiLCJleGFtcGxlLmNvbSJdLHR5cGU6InBpbGxzIn0se2tleToiUmVjb3JkIENvdW50Iix2YWx1ZToyNH0se2tleToiRE5TIENoYWxsZW5nZSIsdmFsdWU6ITAsdHlwZToiYm9vbGVhbiJ9XX0KICAgICAgICA+PC9zei1jb25maWctc2VjdGlvbj4KCiAgICAgICAgPHN6LWNvbmZpZy1zZWN0aW9uCiAgICAgICAgICB0aXRsZT0iVExTIC8gQ2VydGlmaWNhdGVzIgogICAgICAgICAgc3VidGl0bGU9IkNlcnRpZmljYXRlIG1hbmFnZW1lbnQgYW5kIEFDTUUiCiAgICAgICAgICBpY29uPSJsdWNpZGU6c2hpZWxkLWNoZWNrIgogICAgICAgICAgc3RhdHVzPSJlbmFibGVkIgogICAgICAgICAgLmZpZWxkcz0ke1t7a2V5OiJDb250YWN0IEVtYWlsIix2YWx1ZToiYWRtaW5Ac2VydmUuem9uZSJ9LHtrZXk6IkRvbWFpbiIsdmFsdWU6InNlcnZlLnpvbmUifSx7a2V5OiJTb3VyY2UiLHZhbHVlOiJhY21lIix0eXBlOiJiYWRnZSJ9LHtrZXk6IkNlcnRpZmljYXRlIFBhdGgiLHZhbHVlOm51bGx9LHtrZXk6IktleSBQYXRoIix2YWx1ZTpudWxsfV19CiAgICAgICAgPjwvc3otY29uZmlnLXNlY3Rpb24+CgogICAgICAgIDxzei1jb25maWctc2VjdGlvbgogICAgICAgICAgdGl0bGU9IkNhY2hlIERhdGFiYXNlIgogICAgICAgICAgc3VidGl0bGU9IlBlcnNpc3RlbnQgY2FjaGluZyB3aXRoIHNtYXJ0ZGF0YSIKICAgICAgICAgIGljb249Imx1Y2lkZTpkYXRhYmFzZSIKICAgICAgICAgIHN0YXR1cz0iZW5hYmxlZCIKICAgICAgICAgIC5maWVsZHM9JHtbe2tleToiU3RvcmFnZSBQYXRoIix2YWx1ZToiL2hvbWUvdXNlci8uc2VydmUuem9uZS9kY3JvdXRlci90c21kYiJ9LHtrZXk6IkRCIE5hbWUiLHZhbHVlOiJkY3JvdXRlciJ9LHtrZXk6IkRlZmF1bHQgVFRMIix2YWx1ZToiMzAgZGF5cyJ9LHtrZXk6IkNsZWFudXAgSW50ZXJ2YWwiLHZhbHVlOiIxIGhvdXIifV19CiAgICAgICAgPjwvc3otY29uZmlnLXNlY3Rpb24+CgogICAgICAgIDxzei1jb25maWctc2VjdGlvbgogICAgICAgICAgdGl0bGU9IlJBRElVUyBTZXJ2ZXIiCiAgICAgICAgICBzdWJ0aXRsZT0iTmV0d29yayBhdXRoZW50aWNhdGlvbiBhbmQgVkxBTiBhc3NpZ25tZW50IgogICAgICAgICAgaWNvbj0ibHVjaWRlOndpZmkiCiAgICAgICAgICBzdGF0dXM9Im5vdC1jb25maWd1cmVkIgogICAgICAgICAgLmZpZWxkcz0ke1t7a2V5OiJBdXRoIFBvcnQiLHZhbHVlOm51bGx9LHtrZXk6IkFjY291bnRpbmcgUG9ydCIsdmFsdWU6bnVsbH1dfQogICAgICAgID48L3N6LWNvbmZpZy1zZWN0aW9uPgoKICAgICAgICA8c3otY29uZmlnLXNlY3Rpb24KICAgICAgICAgIHRpdGxlPSJSZW1vdGUgSW5ncmVzcyIKICAgICAgICAgIHN1YnRpdGxlPSJFZGdlIHR1bm5lbCBub2RlcyIKICAgICAgICAgIGljb249Imx1Y2lkZTpjbG91ZCIKICAgICAgICAgIHN0YXR1cz0iZW5hYmxlZCIKICAgICAgICAgIC5maWVsZHM9JHtbe2tleToiVHVubmVsIFBvcnQiLHZhbHVlOjg0NDN9LHtrZXk6Ikh1YiBEb21haW4iLHZhbHVlOiJodWIuc2VydmUuem9uZSJ9LHtrZXk6IlRMUyBDb25maWd1cmVkIix2YWx1ZTohMCx0eXBlOiJib29sZWFuIn1dfQogICAgICAgID48L3N6LWNvbmZpZy1zZWN0aW9uPgogICAgICA8L3N6LWNvbmZpZy1vdmVydmlldz4KICAgIGB9c3RhdGlje2tKYShhLHQpfX07cmV0dXJuIG49YX0pKCl9KTt2YXIgaWM9ZygoKT0+e1dydCgpO0tydCgpO1pydCgpO1hydCgpO1FydCgpO2VvdCgpO2FvdCgpO2lvdCgpO29vdCgpO25vdCgpO2xvdCgpO3E3YSgpO2o3YSgpO1U3YSgpO1c3YSgpO0c3YSgpO1k3YSgpO1g3YSgpO1E3YSgpO0o3YSgpO2U5YSgpO3Q5YSgpO2E5YSgpO3M5YSgpO2k5YSgpO3I5YSgpO285YSgpO245YSgpO2M5YSgpO2Q5YSgpO3U5YSgpO3A5YSgpO2g5YSgpO2Y5YSgpO205YSgpO2c5YSgpO3Y5YSgpO3g5YSgpO3k5YSgpO3c5YSgpO1M5YSgpO185YSgpfSk7dmFyIGgkbyxNOWE9ZygoKT0+e3BlKCk7aCRvPWkoKCk9PndgCiAgPHN0eWxlPgogICAgYm9keSB7CiAgICAgIG1hcmdpbjogMDsKICAgICAgcGFkZGluZzogMDsKICAgICAgYmFja2dyb3VuZDogI2Y1ZjVmNTsKICAgIH0KICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgIG1pbi1oZWlnaHQ6IDEwMHZoOwogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgcGFkZGluZzogMjRweDsKICAgIH0KICAgIC5kZW1vLXNlY3Rpb24gewogICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgICAgcGFkZGluZzogNDhweDsKICAgICAgYm94LXNoYWRvdzogMCA0cHggMjRweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgICAgIG1heC13aWR0aDogNjAwcHg7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgfQogICAgaDEgewogICAgICBtYXJnaW46IDAgMCAzMnB4IDA7CiAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgc2Fucy1zZXJpZjsKICAgICAgZm9udC1zaXplOiAyOHB4OwogICAgICBjb2xvcjogIzFhMWExYTsKICAgIH0KICAgIC5jb21wb25lbnQtZGVtbyB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgIGdhcDogMTZweDsKICAgIH0KICA8L3N0eWxlPgogIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgIDxoMT5TZXJ2ZS5ab25lIENhdGFsb2c8L2gxPgogICAgICA8ZGl2IGNsYXNzPSJjb21wb25lbnQtZGVtbyI+CiAgICAgICAgPHN6LWhlbGxvPjwvc3otaGVsbG8+CiAgICAgICAgPHN6LWhlbGxvIHRleHQ9IldlbGNvbWUgdG8gU2VydmUuWm9uZSEiPjwvc3otaGVsbG8+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CmAsIm1haW5wYWdlIil9KTt2YXIgdiRvLHo5YT1nKCgpPT57cGUoKTtpYygpO3Ykbz1pKCgpPT53YAogIDxzdHlsZT4KICAgIGh0bWwsIGJvZHkgewogICAgICBtYXJnaW46IDA7CiAgICAgIHBhZGRpbmc6IDA7CiAgICAgIGhlaWdodDogMTAwJTsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB9CiAgICBzei1kZW1vLWFwcC1zaGVsbCB7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICBoZWlnaHQ6IDEwMHZoOwogICAgICB3aWR0aDogMTAwdnc7CiAgICB9CiAgPC9zdHlsZT4KICA8c3otZGVtby1hcHAtc2hlbGw+PC9zei1kZW1vLWFwcC1zaGVsbD4KYCwic3pEZW1vQXBwIil9KTtmdW5jdGlvbiB3JG8ocyxlKXtsZXQgdD1ib1tzXTtyZXR1cm4gdHlwZW9mIHQ9PSJvYmplY3QiJiZlP3RbZV18fCJhdXRvIjp0eXBlb2YgdD09Im51bWJlciI/dDoiYXV0byJ9dmFyIGJvLGskbyxfb3QsX2EsR249ZygoKT0+e2JvPXtiYXNlOntjb250ZW50OiJhdXRvIixpbnB1dEVsZW1lbnRzOjF9LGZpeGVkOnthcHBCYXI6MTAsc2lkZU1lbnU6MTAsbW9iaWxlTmF2OjI1MH0sYmFja2Ryb3A6e2Ryb3Bkb3duOjE5OTksbW9kYWw6Mjk5OSxjb250ZXh0TWVudTozOTk5fSxvdmVybGF5Ontkcm9wZG93bjoyZTMsbW9kYWw6M2UzLGNvbnRleHRNZW51OjRlMyx0b2FzdDo1ZTN9LG1vZGFsRHJvcGRvd246MzUwMCx3eXNpd3lnTWVudXM6NDUwMH07aSh3JG8sImdldFpJbmRleCIpO2skbz17ImRlZXMtbW9kYWwiOmJvLm92ZXJsYXkubW9kYWwsImRlZXMtd2luZG93bGF5ZXIiOmJvLm92ZXJsYXkuZHJvcGRvd24sImRlZXMtY29udGV4dG1lbnUiOmJvLm92ZXJsYXkuY29udGV4dE1lbnUsImRlZXMtdG9hc3QiOmJvLm92ZXJsYXkudG9hc3QsImRlZXMtYXBwdWktbWFpbm1lbnUiOmJvLmZpeGVkLmFwcEJhciwiZGVlcy1tb2JpbGVuYXZpZ2F0aW9uIjpiby5maXhlZC5tb2JpbGVOYXYsImRlZXMtc2xhc2gtbWVudSI6Ym8ud3lzaXd5Z01lbnVzLCJkZWVzLWZvcm1hdHRpbmctbWVudSI6Ym8ud3lzaXd5Z01lbnVzfSxfb3Q9Y2xhc3Mgc3tzdGF0aWN7aSh0aGlzLCJaSW5kZXhSZWdpc3RyeSIpfXN0YXRpYyBpbnN0YW5jZTthY3RpdmVFbGVtZW50cz1uZXcgU2V0O2VsZW1lbnRaSW5kZXhNYXA9bmV3IFdlYWtNYXA7Y3VycmVudFpJbmRleD0xZTM7Y29uc3RydWN0b3IoKXt9c3RhdGljIGdldEluc3RhbmNlKCl7cmV0dXJuIHMuaW5zdGFuY2V8fChzLmluc3RhbmNlPW5ldyBzKSxzLmluc3RhbmNlfWdldE5leHRaSW5kZXgoKXtyZXR1cm4gdGhpcy5jdXJyZW50WkluZGV4Kz0xMCx0aGlzLmN1cnJlbnRaSW5kZXh9cmVnaXN0ZXIoZSx0KXt0aGlzLmFjdGl2ZUVsZW1lbnRzLmFkZChlKSx0aGlzLmVsZW1lbnRaSW5kZXhNYXAuc2V0KGUsdCl9dW5yZWdpc3RlcihlKXt0aGlzLmFjdGl2ZUVsZW1lbnRzLmRlbGV0ZShlKSx0aGlzLmVsZW1lbnRaSW5kZXhNYXAuZGVsZXRlKGUpLHRoaXMuYWN0aXZlRWxlbWVudHMuc2l6ZT09PTAmJih0aGlzLmN1cnJlbnRaSW5kZXg9MWUzKX1nZXRFbGVtZW50WkluZGV4KGUpe3JldHVybiB0aGlzLmVsZW1lbnRaSW5kZXhNYXAuZ2V0KGUpfWdldEFjdGl2ZUNvdW50KCl7cmV0dXJuIHRoaXMuYWN0aXZlRWxlbWVudHMuc2l6ZX1nZXRDdXJyZW50WkluZGV4KCl7cmV0dXJuIHRoaXMuY3VycmVudFpJbmRleH1jbGVhcigpe3RoaXMuYWN0aXZlRWxlbWVudHMuY2xlYXIoKSx0aGlzLmVsZW1lbnRaSW5kZXhNYXA9bmV3IFdlYWtNYXAsdGhpcy5jdXJyZW50WkluZGV4PTFlM31nZXRBY3RpdmVFbGVtZW50c0luT3JkZXIoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmFjdGl2ZUVsZW1lbnRzKS5zb3J0KChlLHQpPT57bGV0IGE9dGhpcy5lbGVtZW50WkluZGV4TWFwLmdldChlKXx8MCxyPXRoaXMuZWxlbWVudFpJbmRleE1hcC5nZXQodCl8fDA7cmV0dXJuIGEtcn0pfX0sX2E9X290LmdldEluc3RhbmNlKCl9KTt2YXIgWGMsWWksWmkscWUsaHQ9ZygoKT0+e3BlKCk7WGM9e2NvbG9yczp7bGlnaHQ6e2JnUHJpbWFyeToiaHNsKDAgMCUgMTAwJSkiLGJnU2Vjb25kYXJ5OiJoc2woMCAwJSA5OCUpIixiZ1RlcnRpYXJ5OiJoc2woMCAwJSA5NiUpIix0ZXh0UHJpbWFyeToiaHNsKDAgMCUgMy45JSkiLHRleHRTZWNvbmRhcnk6ImhzbCgwIDAlIDIwJSkiLHRleHRNdXRlZDoiaHNsKDAgMCUgNDUlKSIsdGV4dFdhcm06IiM3ODcxNmMiLGJvcmRlckRlZmF1bHQ6ImhzbCgwIDAlIDg5LjglKSIsYm9yZGVyU3VidGxlOiJoc2woMCAwJSA5MyUpIixib3JkZXJTdHJvbmc6ImhzbCgwIDAlIDgwJSkiLGFjY2VudFByaW1hcnk6IiMzYjgyZjYiLGFjY2VudFN1Y2Nlc3M6IiMyMmM1NWUiLGFjY2VudFdhcm5pbmc6IiNmNTllMGIiLGFjY2VudEVycm9yOiIjZWY0NDQ0IixiYWRnZURlZmF1bHRCZzoiI2Y0ZjRmNSIsYmFkZ2VEZWZhdWx0Rmc6IiMzZjNmNDYiLGJhZGdlU3VjY2Vzc0JnOiIjZGNmY2U3IixiYWRnZVN1Y2Nlc3NGZzoiIzE2NjUzNCIsYmFkZ2VXYXJuaW5nQmc6IiNmZWYzYzciLGJhZGdlV2FybmluZ0ZnOiIjOTI0MDBlIixiYWRnZUVycm9yQmc6IiNmZWUyZTIiLGJhZGdlRXJyb3JGZzoiIzk5MWIxYiJ9LGRhcms6e2JnUHJpbWFyeToiaHNsKDAgMCUgMy45JSkiLGJnU2Vjb25kYXJ5OiJoc2woMCAwJSAzLjklKSIsYmdUZXJ0aWFyeToiaHNsKDAgMCUgNyUpIix0ZXh0UHJpbWFyeToiaHNsKDAgMCUgOTglKSIsdGV4dFNlY29uZGFyeToiaHNsKDAgMCUgNjMuOSUpIix0ZXh0TXV0ZWQ6ImhzbCgwIDAlIDU1JSkiLHRleHRXYXJtOiIjYjVhOTlhIixib3JkZXJEZWZhdWx0OiJoc2woMCAwJSAxNC45JSkiLGJvcmRlclN1YnRsZToiaHNsKDAgMCUgMTElKSIsYm9yZGVyU3Ryb25nOiJoc2woMCAwJSAyMCUpIixhY2NlbnRQcmltYXJ5OiIjM2I4MmY2IixhY2NlbnRTdWNjZXNzOiIjMjJjNTVlIixhY2NlbnRXYXJuaW5nOiIjZjU5ZTBiIixhY2NlbnRFcnJvcjoiI2VmNDQ0NCIsYmFkZ2VEZWZhdWx0Qmc6IiMyNzI3MmEiLGJhZGdlRGVmYXVsdEZnOiIjYTFhMWFhIixiYWRnZVN1Y2Nlc3NCZzoiIzE0NTMyZCIsYmFkZ2VTdWNjZXNzRmc6IiM0YWRlODAiLGJhZGdlV2FybmluZ0JnOiIjNDUxYTAzIixiYWRnZVdhcm5pbmdGZzoiI2ZiYmYyNCIsYmFkZ2VFcnJvckJnOiIjNDUwYTBhIixiYWRnZUVycm9yRmc6IiNmODcxNzEifX0sc3BhY2luZzp7eHM6IjRweCIsc206IjhweCIsbWQ6IjEycHgiLGxnOiIxNnB4Iix4bDoiMjRweCIsIjJ4bCI6IjMycHgiLCIzeGwiOiI0OHB4In0scmFkaXVzOnt4czoiMnB4IixzbToiNHB4IixtZDoiNnB4IixsZzoiOHB4Iix4bDoiMTJweCIsZnVsbDoiOTk5cHgifSxzaGFkb3dzOnt4czoiMCAxcHggMnB4IDAgcmdiKDAgMCAwIC8gMC4wNSkiLHNtOiIwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEpIixtZDoiMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xNSkiLGxnOiIwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xNSkifSx0cmFuc2l0aW9uczp7ZmFzdDoiMC4xcyIsZGVmYXVsdDoiMC4xNXMiLHNsb3c6IjAuMnMiLHNsb3dlcjoiMC4zcyJ9LGNvbnRyb2xIZWlnaHRzOntzbToiMzJweCIsbWQ6IjM2cHgiLGxnOiI0MHB4Iix4bDoiNDhweCJ9fSxZaT1YYy5jb2xvcnMubGlnaHQsWmk9WGMuY29sb3JzLmRhcmsscWU9SmAKICA6aG9zdCB7CiAgICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgKiBDb2xvcnMg4oCUIEJhY2tncm91bmQgKGZyb20gdGhlbWVEZWZhdWx0cykKICAgICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KICAgIC0tZGVlcy1jb2xvci1iZy1wcmltYXJ5OiAke2guYmRUaGVtZShZaS5iZ1ByaW1hcnksWmkuYmdQcmltYXJ5KX07CiAgICAtLWRlZXMtY29sb3ItYmctc2Vjb25kYXJ5OiAke2guYmRUaGVtZShZaS5iZ1NlY29uZGFyeSxaaS5iZ1NlY29uZGFyeSl9OwogICAgLS1kZWVzLWNvbG9yLWJnLXRlcnRpYXJ5OiAke2guYmRUaGVtZShZaS5iZ1RlcnRpYXJ5LFppLmJnVGVydGlhcnkpfTsKCiAgICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgKiBDb2xvcnMg4oCUIFRleHQgKGZyb20gdGhlbWVEZWZhdWx0cykKICAgICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KICAgIC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnk6ICR7aC5iZFRoZW1lKFlpLnRleHRQcmltYXJ5LFppLnRleHRQcmltYXJ5KX07CiAgICAtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnk6ICR7aC5iZFRoZW1lKFlpLnRleHRTZWNvbmRhcnksWmkudGV4dFNlY29uZGFyeSl9OwogICAgLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQ6ICR7aC5iZFRoZW1lKFlpLnRleHRNdXRlZCxaaS50ZXh0TXV0ZWQpfTsKCiAgICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgKiBDb2xvcnMg4oCUIEJvcmRlciAoZnJvbSB0aGVtZURlZmF1bHRzKQogICAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogICAgLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0OiAke2guYmRUaGVtZShZaS5ib3JkZXJEZWZhdWx0LFppLmJvcmRlckRlZmF1bHQpfTsKICAgIC0tZGVlcy1jb2xvci1ib3JkZXItc3VidGxlOiAke2guYmRUaGVtZShZaS5ib3JkZXJTdWJ0bGUsWmkuYm9yZGVyU3VidGxlKX07CiAgICAtLWRlZXMtY29sb3ItYm9yZGVyLXN0cm9uZzogJHtoLmJkVGhlbWUoWWkuYm9yZGVyU3Ryb25nLFppLmJvcmRlclN0cm9uZyl9OwoKICAgIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAqIENvbG9ycyDigJQgV2FybSBUZXh0IChmcm9tIHRoZW1lRGVmYXVsdHMpCiAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAgICAtLWRlZXMtY29sb3ItdGV4dC13YXJtOiAke2guYmRUaGVtZShZaS50ZXh0V2FybSxaaS50ZXh0V2FybSl9OwoKICAgIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAqIENvbG9ycyDigJQgQWNjZW50IChmcm9tIHRoZW1lRGVmYXVsdHMpCiAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAgICAtLWRlZXMtY29sb3ItYWNjZW50LXByaW1hcnk6ICR7aC5iZFRoZW1lKFlpLmFjY2VudFByaW1hcnksWmkuYWNjZW50UHJpbWFyeSl9OwogICAgLS1kZWVzLWNvbG9yLWFjY2VudC1zdWNjZXNzOiAke2guYmRUaGVtZShZaS5hY2NlbnRTdWNjZXNzLFppLmFjY2VudFN1Y2Nlc3MpfTsKICAgIC0tZGVlcy1jb2xvci1hY2NlbnQtd2FybmluZzogJHtoLmJkVGhlbWUoWWkuYWNjZW50V2FybmluZyxaaS5hY2NlbnRXYXJuaW5nKX07CiAgICAtLWRlZXMtY29sb3ItYWNjZW50LWVycm9yOiAke2guYmRUaGVtZShZaS5hY2NlbnRFcnJvcixaaS5hY2NlbnRFcnJvcil9OwoKICAgIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAqIENvbG9ycyDigJQgQmFkZ2UgKGZyb20gdGhlbWVEZWZhdWx0cykKICAgICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KICAgIC0tZGVlcy1jb2xvci1iYWRnZS1kZWZhdWx0LWJnOiAke2guYmRUaGVtZShZaS5iYWRnZURlZmF1bHRCZyxaaS5iYWRnZURlZmF1bHRCZyl9OwogICAgLS1kZWVzLWNvbG9yLWJhZGdlLWRlZmF1bHQtZmc6ICR7aC5iZFRoZW1lKFlpLmJhZGdlRGVmYXVsdEZnLFppLmJhZGdlRGVmYXVsdEZnKX07CiAgICAtLWRlZXMtY29sb3ItYmFkZ2Utc3VjY2Vzcy1iZzogJHtoLmJkVGhlbWUoWWkuYmFkZ2VTdWNjZXNzQmcsWmkuYmFkZ2VTdWNjZXNzQmcpfTsKICAgIC0tZGVlcy1jb2xvci1iYWRnZS1zdWNjZXNzLWZnOiAke2guYmRUaGVtZShZaS5iYWRnZVN1Y2Nlc3NGZyxaaS5iYWRnZVN1Y2Nlc3NGZyl9OwogICAgLS1kZWVzLWNvbG9yLWJhZGdlLXdhcm5pbmctYmc6ICR7aC5iZFRoZW1lKFlpLmJhZGdlV2FybmluZ0JnLFppLmJhZGdlV2FybmluZ0JnKX07CiAgICAtLWRlZXMtY29sb3ItYmFkZ2Utd2FybmluZy1mZzogJHtoLmJkVGhlbWUoWWkuYmFkZ2VXYXJuaW5nRmcsWmkuYmFkZ2VXYXJuaW5nRmcpfTsKICAgIC0tZGVlcy1jb2xvci1iYWRnZS1lcnJvci1iZzogJHtoLmJkVGhlbWUoWWkuYmFkZ2VFcnJvckJnLFppLmJhZGdlRXJyb3JCZyl9OwogICAgLS1kZWVzLWNvbG9yLWJhZGdlLWVycm9yLWZnOiAke2guYmRUaGVtZShZaS5iYWRnZUVycm9yRmcsWmkuYmFkZ2VFcnJvckZnKX07CgogICAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICogQ29sb3JzIOKAlCBJbnRlcmFjdGl2ZSBTdGF0ZXMKICAgICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KICAgIC0tZGVlcy1jb2xvci1ob3ZlcjogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wNCkiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDYpIil9OwogICAgLS1kZWVzLWNvbG9yLWFjdGl2ZTogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wNikiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpIil9OwogICAgLS1kZWVzLWNvbG9yLXByZXNzZWQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMDgpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKSIpfTsKICAgIC0tZGVlcy1jb2xvci1yb3ctaG92ZXI6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUgLyAwLjA2KSIsImhzbCgyMTcuMiA5MS4yJSA1OS44JSAvIDAuMDgpIil9OwoKICAgIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAqIENvbG9ycyDigJQgRm9jdXMgUmluZwogICAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogICAgLS1kZWVzLWNvbG9yLWZvY3VzLXJpbmc6ICR7aC5iZFRoZW1lKCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC40KSIsInJnYmEoNTksIDEzMCwgMjQ2LCAwLjQpIil9OwoKICAgIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAqIENvbG9ycyDigJQgVG9vbHRpcCAoaW52ZXJ0ZWQgY29udHJhc3QpCiAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAgICAtLWRlZXMtY29sb3ItdG9vbHRpcC1iZzogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgLS1kZWVzLWNvbG9yLXRvb2x0aXAtZmc6ICR7aC5iZFRoZW1lKCIjZmFmYWZhIiwiIzE4MTgxYiIpfTsKCiAgICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgKiBDb2xvcnMg4oCUIExpbmsKICAgICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KICAgIC0tZGVlcy1jb2xvci1saW5rOiAke2guYmRUaGVtZSgiIzNiODJmNiIsIiM2MGE1ZmEiKX07CiAgICAtLWRlZXMtY29sb3ItbGluay1ob3ZlcjogJHtoLmJkVGhlbWUoIiMyNTYzZWIiLCIjOTNiYmZkIil9OwoKICAgIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAqIENvbG9ycyDigJQgQ29kZQogICAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogICAgLS1kZWVzLWNvbG9yLWNvZGUtYmc6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMDYpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpIil9OwogICAgLS1kZWVzLWNvbG9yLWNvZGUtYmxvY2stYmc6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzE4MTgxYiIpfTsKCiAgICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgKiBDb2xvcnMg4oCUIFNlbGVjdGlvbgogICAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogICAgLS1kZWVzLWNvbG9yLXNlbGVjdGlvbjogJHtoLmJkVGhlbWUoInJnYmEoNTksIDEzMCwgMjQ2LCAwLjIpIiwicmdiYSg1OSwgMTMwLCAyNDYsIDAuMykiKX07CgogICAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICogQ29sb3JzIOKAlCBTY3JvbGxiYXIKICAgICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KICAgIC0tZGVlcy1jb2xvci1zY3JvbGxiYXItdGh1bWI6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMTUpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSIpfTsKICAgIC0tZGVlcy1jb2xvci1zY3JvbGxiYXItdGh1bWItaG92ZXI6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMjUpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KSIpfTsKCiAgICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgKiBTcGFjaW5nIFNjYWxlCiAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAgICAtLWRlZXMtc3BhY2luZy14czogNHB4OwogICAgLS1kZWVzLXNwYWNpbmctc206IDhweDsKICAgIC0tZGVlcy1zcGFjaW5nLW1kOiAxMnB4OwogICAgLS1kZWVzLXNwYWNpbmctbGc6IDE2cHg7CiAgICAtLWRlZXMtc3BhY2luZy14bDogMjRweDsKICAgIC0tZGVlcy1zcGFjaW5nLTJ4bDogMzJweDsKICAgIC0tZGVlcy1zcGFjaW5nLTN4bDogNDhweDsKCiAgICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgKiBCb3JkZXIgUmFkaXVzIFNjYWxlCiAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAgICAtLWRlZXMtcmFkaXVzLXhzOiAycHg7CiAgICAtLWRlZXMtcmFkaXVzLXNtOiA0cHg7CiAgICAtLWRlZXMtcmFkaXVzLW1kOiA2cHg7CiAgICAtLWRlZXMtcmFkaXVzLWxnOiA4cHg7CiAgICAtLWRlZXMtcmFkaXVzLXhsOiAxMnB4OwogICAgLS1kZWVzLXJhZGl1cy1mdWxsOiA5OTlweDsKCiAgICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgKiBTaGFkb3cgRWxldmF0aW9uIFNjYWxlCiAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAgICAtLWRlZXMtc2hhZG93LXhzOiAwIDFweCAycHggMCByZ2IoMCAwIDAgLyAwLjA1KTsKICAgIC0tZGVlcy1zaGFkb3ctc206IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgICAtLWRlZXMtc2hhZG93LW1kOiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjE1KTsKICAgIC0tZGVlcy1zaGFkb3ctbGc6IDAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjE1KTsKCiAgICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgKiBUcmFuc2l0aW9uIER1cmF0aW9uIFNjYWxlCiAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAgICAtLWRlZXMtdHJhbnNpdGlvbi1mYXN0OiAwLjFzOwogICAgLS1kZWVzLXRyYW5zaXRpb24tZGVmYXVsdDogMC4xNXM7CiAgICAtLWRlZXMtdHJhbnNpdGlvbi1zbG93OiAwLjJzOwogICAgLS1kZWVzLXRyYW5zaXRpb24tc2xvd2VyOiAwLjNzOwoKICAgIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAqIENvbnRyb2wgSGVpZ2h0IFNjYWxlCiAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAgICAtLWRlZXMtY29udHJvbC1oZWlnaHQtc206IDMycHg7CiAgICAtLWRlZXMtY29udHJvbC1oZWlnaHQtbWQ6IDM2cHg7CiAgICAtLWRlZXMtY29udHJvbC1oZWlnaHQtbGc6IDQwcHg7CiAgICAtLWRlZXMtY29udHJvbC1oZWlnaHQteGw6IDQ4cHg7CiAgfQpgfSk7dmFyIHZvPWcoKCk9PntpbygpO1NuKCl9KTt2YXIgQzlhLFQ5YT1nKCgpPT57cGUoKTt2bygpO2ZyKCk7QzlhPWkoKCk9PndgCjxzdHlsZT4KICAud2l0aE1hcmdpbiB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1hcmdpbjogMjBweDsKICB9CiAgLmRlbW8tY29udGFpbmVyIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgZ2FwOiAyMHB4OwogICAgcGFkZGluZzogMjBweDsKICAgIG1pbi1oZWlnaHQ6IDQwMHB4OwogIH0KICAuZGVtby1hcmVhIHsKICAgIHBhZGRpbmc6IDQwcHg7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBjdXJzb3I6IGNvbnRleHQtbWVudTsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4yczsKICB9CiAgLmRlbW8tYXJlYTpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDIpOwogIH0KPC9zdHlsZT4KPGRpdiBjbGFzcz0iZGVtby1jb250YWluZXIiPgogIDxkZWVzLXBhbmVsIGhlYWRpbmc9IkJhc2ljIENvbnRleHQgTWVudSB3aXRoIE5lc3RlZCBTdWJtZW51cyI+CiAgICA8ZGl2IGNsYXNzPSJkZW1vLWFyZWEiIEBjb250ZXh0bWVudT0ke3M9PnskYS5vcGVuQ29udGV4dE1lbnVXaXRoT3B0aW9ucyhzLFt7bmFtZToiRmlsZSIsaWNvbk5hbWU6ImZpbGVUZXh0IixhY3Rpb246aShhc3luYygpPT57fSwiYWN0aW9uIiksc3VibWVudTpbe25hbWU6Ik5ldyIsaWNvbk5hbWU6ImZpbGVQbHVzIixzaG9ydGN1dDoiQ21kK04iLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJOZXcgZmlsZSIpLCJhY3Rpb24iKX0se25hbWU6Ik9wZW4iLGljb25OYW1lOiJmb2xkZXJPcGVuIixzaG9ydGN1dDoiQ21kK08iLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJPcGVuIGZpbGUiKSwiYWN0aW9uIil9LHtuYW1lOiJTYXZlIixpY29uTmFtZToic2F2ZSIsc2hvcnRjdXQ6IkNtZCtTIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiU2F2ZSIpLCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJFeHBvcnQgYXMgUERGIixpY29uTmFtZToiZG93bmxvYWQiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJFeHBvcnQgUERGIiksImFjdGlvbiIpfSx7bmFtZToiRXhwb3J0IGFzIEhUTUwiLGljb25OYW1lOiJjb2RlIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiRXhwb3J0IEhUTUwiKSwiYWN0aW9uIil9XX0se25hbWU6IkVkaXQiLGljb25OYW1lOiJlZGl0MyIsYWN0aW9uOmkoYXN5bmMoKT0+e30sImFjdGlvbiIpLHN1Ym1lbnU6W3tuYW1lOiJDdXQiLGljb25OYW1lOiJzY2lzc29ycyIsc2hvcnRjdXQ6IkNtZCtYIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiQ3V0IiksImFjdGlvbiIpfSx7bmFtZToiQ29weSIsaWNvbk5hbWU6ImNvcHkiLHNob3J0Y3V0OiJDbWQrQyIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIkNvcHkiKSwiYWN0aW9uIil9LHtuYW1lOiJQYXN0ZSIsaWNvbk5hbWU6ImNsaXBib2FyZCIsc2hvcnRjdXQ6IkNtZCtWIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiUGFzdGUiKSwiYWN0aW9uIil9LHtkaXZpZGVyOiEwfSx7bmFtZToiRmluZCIsaWNvbk5hbWU6InNlYXJjaCIsc2hvcnRjdXQ6IkNtZCtGIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiRmluZCIpLCJhY3Rpb24iKX0se25hbWU6IlJlcGxhY2UiLGljb25OYW1lOiJyZXBlYXQiLHNob3J0Y3V0OiJDbWQrSCIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIlJlcGxhY2UiKSwiYWN0aW9uIil9XX0se25hbWU6IlZpZXciLGljb25OYW1lOiJleWUiLGFjdGlvbjppKGFzeW5jKCk9Pnt9LCJhY3Rpb24iKSxzdWJtZW51Olt7bmFtZToiWm9vbSBJbiIsaWNvbk5hbWU6Inpvb21JbiIsc2hvcnRjdXQ6IkNtZCsrIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiWm9vbSBpbiIpLCJhY3Rpb24iKX0se25hbWU6Ilpvb20gT3V0IixpY29uTmFtZToiem9vbU91dCIsc2hvcnRjdXQ6IkNtZCstIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiWm9vbSBvdXQiKSwiYWN0aW9uIil9LHtuYW1lOiJSZXNldCBab29tIixpY29uTmFtZToibWF4aW1pemUyIixzaG9ydGN1dDoiQ21kKzAiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJSZXNldCB6b29tIiksImFjdGlvbiIpfSx7ZGl2aWRlcjohMH0se25hbWU6IkZ1bGwgU2NyZWVuIixpY29uTmFtZToibWF4aW1pemUiLHNob3J0Y3V0OiJGMTEiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJGdWxsIHNjcmVlbiIpLCJhY3Rpb24iKX1dfSx7ZGl2aWRlcjohMH0se25hbWU6IlNldHRpbmdzIixpY29uTmFtZToic2V0dGluZ3MiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJTZXR0aW5ncyIpLCJhY3Rpb24iKX0se25hbWU6IkhlbHAiLGljb25OYW1lOiJoZWxwQ2lyY2xlIixhY3Rpb246aShhc3luYygpPT57fSwiYWN0aW9uIiksc3VibWVudTpbe25hbWU6IkRvY3VtZW50YXRpb24iLGljb25OYW1lOiJib29rIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiRG9jdW1lbnRhdGlvbiIpLCJhY3Rpb24iKX0se25hbWU6IktleWJvYXJkIFNob3J0Y3V0cyIsaWNvbk5hbWU6ImtleWJvYXJkIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiU2hvcnRjdXRzIiksImFjdGlvbiIpfSx7ZGl2aWRlcjohMH0se25hbWU6IkFib3V0IixpY29uTmFtZToiaW5mbyIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIkFib3V0IiksImFjdGlvbiIpfV19XSl9fT4KICAgICAgPGgzPlJpZ2h0LWNsaWNrIGFueXdoZXJlIGluIHRoaXMgYXJlYTwvaDM+CiAgICAgIDxwPkEgY29udGV4dCBtZW51IHdpdGggbmVzdGVkIHN1Ym1lbnVzIHdpbGwgYXBwZWFyPC9wPgogICAgPC9kaXY+CiAgPC9kZWVzLXBhbmVsPgogIDxkZWVzLXBhbmVsIGhlYWRpbmc9IkNvbXBvbmVudC1TcGVjaWZpYyBDb250ZXh0IE1lbnUiPgogICAgPGRlZXMtYnV0dG9uIHN0eWxlPSJtYXJnaW46IDIwcHg7IiBAY29udGV4dG1lbnU9JHtzPT57JGEub3BlbkNvbnRleHRNZW51V2l0aE9wdGlvbnMocyxbe25hbWU6IkJ1dHRvbiBBY3Rpb25zIixpY29uTmFtZToibW91c2VQb2ludGVyIixhY3Rpb246aShhc3luYygpPT57fSwiYWN0aW9uIiksc3VibWVudTpbe25hbWU6IkNsaWNrIixpY29uTmFtZToibW91c2UiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJDbGljayBhY3Rpb24iKSwiYWN0aW9uIil9LHtuYW1lOiJEb3VibGUgQ2xpY2siLGljb25OYW1lOiJ6YXAiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJEb3VibGUgY2xpY2siKSwiYWN0aW9uIil9LHtuYW1lOiJMb25nIFByZXNzIixpY29uTmFtZToiY2xvY2siLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJMb25nIHByZXNzIiksImFjdGlvbiIpfV19LHtuYW1lOiJCdXR0b24gU3RhdGUiLGljb25OYW1lOiJ0b2dnbGVMZWZ0IixhY3Rpb246aShhc3luYygpPT57fSwiYWN0aW9uIiksc3VibWVudTpbe25hbWU6IkVuYWJsZSIsaWNvbk5hbWU6ImNoZWNrQ2lyY2xlIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiRW5hYmxlIiksImFjdGlvbiIpfSx7bmFtZToiRGlzYWJsZSIsaWNvbk5hbWU6InhDaXJjbGUiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJEaXNhYmxlIiksImFjdGlvbiIpfSx7ZGl2aWRlcjohMH0se25hbWU6IlNob3ciLGljb25OYW1lOiJleWUiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJTaG93IiksImFjdGlvbiIpfSx7bmFtZToiSGlkZSIsaWNvbk5hbWU6ImV5ZU9mZiIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIkhpZGUiKSwiYWN0aW9uIil9XX0se2RpdmlkZXI6ITB9LHtuYW1lOiJEaXNhYmxlZCBBY3Rpb24iLGljb25OYW1lOiJiYW4iLGRpc2FibGVkOiEwLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJUaGlzIHNob3VsZCBub3QgcnVuIiksImFjdGlvbiIpfSx7bmFtZToiUHJvcGVydGllcyIsaWNvbk5hbWU6InNldHRpbmdzIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiQnV0dG9uIHByb3BlcnRpZXMiKSwiYWN0aW9uIil9XSl9fT5SaWdodC1jbGljayBvbiB0aGlzIGJ1dHRvbjwvZGVlcy1idXR0b24+CiAgPC9kZWVzLXBhbmVsPgoKICA8ZGVlcy1wYW5lbCBoZWFkaW5nPSJBZHZhbmNlZCBDb250ZXh0IE1lbnUgRXhhbXBsZSI+CiAgICA8ZGl2IGNsYXNzPSJkZW1vLWFyZWEiIEBjb250ZXh0bWVudT0ke3M9PnskYS5vcGVuQ29udGV4dE1lbnVXaXRoT3B0aW9ucyhzLFt7bmFtZToiRm9ybWF0IixpY29uTmFtZToidHlwZSIsYWN0aW9uOmkoYXN5bmMoKT0+e30sImFjdGlvbiIpLHN1Ym1lbnU6W3tuYW1lOiJCb2xkIixpY29uTmFtZToiYm9sZCIsc2hvcnRjdXQ6IkNtZCtCIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiQm9sZCIpLCJhY3Rpb24iKX0se25hbWU6Ikl0YWxpYyIsaWNvbk5hbWU6Iml0YWxpYyIsc2hvcnRjdXQ6IkNtZCtJIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiSXRhbGljIiksImFjdGlvbiIpfSx7bmFtZToiVW5kZXJsaW5lIixpY29uTmFtZToidW5kZXJsaW5lIixzaG9ydGN1dDoiQ21kK1UiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJVbmRlcmxpbmUiKSwiYWN0aW9uIil9LHtkaXZpZGVyOiEwfSx7bmFtZToiRm9udCBTaXplIixpY29uTmFtZToidHlwZSIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIkZvbnQgc2l6ZSBtZW51IiksImFjdGlvbiIpfSx7bmFtZToiRm9udCBDb2xvciIsaWNvbk5hbWU6InBhbGV0dGUiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJGb250IGNvbG9yIG1lbnUiKSwiYWN0aW9uIil9XX0se25hbWU6IlRyYW5zZm9ybSIsaWNvbk5hbWU6InNodWZmbGUiLGFjdGlvbjppKGFzeW5jKCk9Pnt9LCJhY3Rpb24iKSxzdWJtZW51Olt7bmFtZToiVG8gVXBwZXJjYXNlIixpY29uTmFtZToiYXJyb3dVcCIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIlVwcGVyY2FzZSIpLCJhY3Rpb24iKX0se25hbWU6IlRvIExvd2VyY2FzZSIsaWNvbk5hbWU6ImFycm93RG93biIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIkxvd2VyY2FzZSIpLCJhY3Rpb24iKX0se25hbWU6IkNhcGl0YWxpemUiLGljb25OYW1lOiJ0eXBlIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiQ2FwaXRhbGl6ZSIpLCJhY3Rpb24iKX1dfSx7ZGl2aWRlcjohMH0se25hbWU6IkRlbGV0ZSIsaWNvbk5hbWU6InRyYXNoMiIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIkRlbGV0ZSIpLCJhY3Rpb24iKX1dKX19PgogICAgICA8aDM+QWR2YW5jZWQgTmVzdGVkIE1lbnUgRXhhbXBsZTwvaDM+CiAgICAgIDxwPlRoaXMgc2hvd3MgZGVlcGx5IG5lc3RlZCBzdWJtZW51cyBhbmQgdmFyaW91cyBmb3JtYXR0aW5nIG9wdGlvbnM8L3A+CiAgICA8L2Rpdj4KICA8L2RlZXMtcGFuZWw+CiAgCiAgPGRlZXMtcGFuZWwgaGVhZGluZz0iU3RhdGljIENvbnRleHQgTWVudSAoQWx3YXlzIFZpc2libGUpIj4KICAgIDxkZWVzLWNvbnRleHRtZW51CiAgICAgIGNsYXNzPSJ3aXRoTWFyZ2luIgogICAgICAubWVudUl0ZW1zPSR7W3tuYW1lOiJQcm9qZWN0IixpY29uTmFtZToiZm9sZGVyIixhY3Rpb246aShhc3luYygpPT57fSwiYWN0aW9uIiksc3VibWVudTpbe25hbWU6Ik5ldyBQcm9qZWN0IixpY29uTmFtZToiZm9sZGVyUGx1cyIsc2hvcnRjdXQ6IkNtZCtTaGlmdCtOIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiTmV3IHByb2plY3QiKSwiYWN0aW9uIil9LHtuYW1lOiJPcGVuIFByb2plY3QiLGljb25OYW1lOiJmb2xkZXJPcGVuIixzaG9ydGN1dDoiQ21kK1NoaWZ0K08iLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJPcGVuIHByb2plY3QiKSwiYWN0aW9uIil9LHtkaXZpZGVyOiEwfSx7bmFtZToiUmVjZW50IFByb2plY3RzIixpY29uTmFtZToiY2xvY2siLGFjdGlvbjppKGFzeW5jKCk9Pnt9LCJhY3Rpb24iKSxzdWJtZW51Olt7bmFtZToiUHJvamVjdCBBbHBoYSIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIk9wZW4gQWxwaGEiKSwiYWN0aW9uIil9LHtuYW1lOiJQcm9qZWN0IEJldGEiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJPcGVuIEJldGEiKSwiYWN0aW9uIil9LHtuYW1lOiJQcm9qZWN0IEdhbW1hIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiT3BlbiBHYW1tYSIpLCJhY3Rpb24iKX1dfV19LHtuYW1lOiJUb29scyIsaWNvbk5hbWU6InRvb2wiLGFjdGlvbjppKGFzeW5jKCk9Pnt9LCJhY3Rpb24iKSxzdWJtZW51Olt7bmFtZToiVGVybWluYWwiLGljb25OYW1lOiJ0ZXJtaW5hbCIsc2hvcnRjdXQ6IkNtZCtUIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiVGVybWluYWwiKSwiYWN0aW9uIil9LHtuYW1lOiJDb25zb2xlIixpY29uTmFtZToibW9uaXRvciIsc2hvcnRjdXQ6IkNtZCtLIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiQ29uc29sZSIpLCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJFeHRlbnNpb25zIixpY29uTmFtZToicGFja2FnZSIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIkV4dGVuc2lvbnMiKSwiYWN0aW9uIil9XX0se2RpdmlkZXI6ITB9LHtuYW1lOiJQcmVmZXJlbmNlcyIsaWNvbk5hbWU6InNsaWRlcnMiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJQcmVmZXJlbmNlcyIpLCJhY3Rpb24iKX1dfQogICAgPjwvZGVlcy1jb250ZXh0bWVudT4KICA8L2RlZXMtcGFuZWw+CjwvZGl2PgpgLCJkZW1vRnVuYyIpfSk7dmFyIE1RLEx1LFJvLHYyPWcoKCk9PntwZSgpO0duKCk7TVE9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LEx1PWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxSbz0oKCk9PntsZXQgcz1bbmUoImRlZXMtd2luZG93bGF5ZXIiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXTt2YXIgeT1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1dpbmRvd0xheWVyIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IE09dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bWSgpXSxwPVtZKCldLGM9W1koKV0seD1bTCh7dHlwZTpCb29sZWFufSldLE1RKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToib3B0aW9ucyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4ib3B0aW9ucyJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56Lm9wdGlvbnMsImdldCIpLHNldDppKCh6LE4pPT57ei5vcHRpb25zPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sbyxsKSxNUSh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImJhY2tkcm9wWkluZGV4IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJiYWNrZHJvcFpJbmRleCJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LmJhY2tkcm9wWkluZGV4LCJnZXQiKSxzZXQ6aSgoeixOKT0+e3ouYmFja2Ryb3BaSW5kZXg9Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxkLHUpLE1RKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY29udGVudFpJbmRleCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4iY29udGVudFpJbmRleCJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LmNvbnRlbnRaSW5kZXgsImdldCIpLHNldDppKCh6LE4pPT57ei5jb250ZW50WkluZGV4PU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sYix2KSxNUSh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InZpc2libGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoej0+InZpc2libGUiaW4geiwiaGFzIiksZ2V0Omkoej0+ei52aXNpYmxlLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3oudmlzaWJsZT1OfSwic2V0Iil9LG1ldGFkYXRhOk19LG0sZiksTVEobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6TX0sbnVsbCx0KSx5PWE9ZS52YWx1ZSxNJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOk19KX1zdGF0aWMgZGVtbz1pKCgpPT53YDxkZWVzLXdpbmRvd2xheWVyPjwvZGVlcy13aW5kb3dsYXllcj5gLCJkZW1vIik7c3RhdGljIGRlbW9Hcm91cHM9WyJPdmVybGF5Il07c3RhdGljIGFzeW5jIGNyZWF0ZUFuZFNob3coTSl7bGV0IHo9bHQuRG9tVG9vbHMuZ2V0R2xvYmFsRG9tVG9vbHNTeW5jKCksTj1uZXcgeTtyZXR1cm4gTi5vcHRpb25zPXsuLi5OLm9wdGlvbnMsLi4uTX0sZG9jdW1lbnQuYm9keS5hcHBlbmQoTiksYXdhaXQgei5jb252ZW5pZW5jZS5zbWFydGRlbGF5LmRlbGF5Rm9yKDApLE4uc2hvdygpLE59I2U9THUodGhpcyxvLHtibHVyOiExfSk7Z2V0IG9wdGlvbnMoKXtyZXR1cm4gdGhpcy4jZX1zZXQgb3B0aW9ucyhNKXt0aGlzLiNlPU19I3Q9KEx1KHRoaXMsbCksTHUodGhpcyxkLDFlMykpO2dldCBiYWNrZHJvcFpJbmRleCgpe3JldHVybiB0aGlzLiN0fXNldCBiYWNrZHJvcFpJbmRleChNKXt0aGlzLiN0PU19I2E9KEx1KHRoaXMsdSksTHUodGhpcyxiLDEwMDEpKTtnZXQgY29udGVudFpJbmRleCgpe3JldHVybiB0aGlzLiNhfXNldCBjb250ZW50WkluZGV4KE0pe3RoaXMuI2E9TX0jcz0oTHUodGhpcyx2KSxMdSh0aGlzLG0sITEpKTtnZXQgdmlzaWJsZSgpe3JldHVybiB0aGlzLiNzfXNldCB2aXNpYmxlKE0pe3RoaXMuI3M9TX1jb25zdHJ1Y3Rvcigpe3N1cGVyKCksTHUodGhpcyxmKSxsdC5lbGVtZW50QmFzaWMuc2V0dXAoKX1yZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgJHtsdC5lbGVtZW50QmFzaWMuc3R5bGVzfQogICAgICA8c3R5bGU+CiAgICAgICAgLndpbmRvd092ZXJsYXkgewogICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7CiAgICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgICAgdG9wOiAwcHg7CiAgICAgICAgICBsZWZ0OiAwcHg7CiAgICAgICAgICBoZWlnaHQ6IDEwMHZoOwogICAgICAgICAgd2lkdGg6IDEwMHZ3OwogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4wKTsKICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYnJpZ2h0bmVzcygxKSAke3RoaXMub3B0aW9ucy5ibHVyPyJibHVyKDBweCkiOiIifTsKICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgICAgei1pbmRleDogJHt0aGlzLmJhY2tkcm9wWkluZGV4fTsKICAgICAgICB9CiAgICAgICAgLnNsb3RDb250ZW50IHsKICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICAgIGhlaWdodDogMTAwdmg7CiAgICAgICAgICB3aWR0aDogMTAwdnc7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgei1pbmRleDogJHt0aGlzLmNvbnRlbnRaSW5kZXh9OwogICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5zbG90Q29udGVudCA+ICogewogICAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC52aXNpYmxlIHsKICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4yKTsKICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYnJpZ2h0bmVzcygwLjkpICR7dGhpcy5vcHRpb25zLmJsdXI/ImJsdXIoMnB4KSI6IiJ9OwogICAgICAgICAgcG9pbnRlci1ldmVudHM6IGFsbDsKICAgICAgICB9CiAgICAgIDwvc3R5bGU+CiAgICAgIDxkaXYgQGNsaWNrPSR7dGhpcy5kaXNwYXRjaENsaWNrZWR9IGNsYXNzPSJ3aW5kb3dPdmVybGF5ICR7dGhpcy52aXNpYmxlPyJ2aXNpYmxlIjpudWxsfSI+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzbG90Q29udGVudCI+CiAgICAgICAgPHNsb3Q+PC9zbG90PgogICAgICA8L2Rpdj4KICAgIGB9Zmlyc3RVcGRhdGVkKCl7c2V0VGltZW91dCgoKT0+e3RoaXMudmlzaWJsZT0hMH0sMTAwKX1kaXNwYXRjaENsaWNrZWQoKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjbGlja2VkIikpfXRvZ2dsZVZpc2liaWxpdHkoKXt0aGlzLnZpc2libGU9IXRoaXMudmlzaWJsZX1nZXRDb250ZW50WkluZGV4KCl7cmV0dXJuIHRoaXMuY29udGVudFpJbmRleH1hc3luYyBzaG93KCl7bGV0IE09YXdhaXQgdGhpcy5kb210b29sc1Byb21pc2U7dGhpcy5iYWNrZHJvcFpJbmRleD1fYS5nZXROZXh0WkluZGV4KCksdGhpcy5jb250ZW50WkluZGV4PV9hLmdldE5leHRaSW5kZXgoKSxfYS5yZWdpc3Rlcih0aGlzLHRoaXMuYmFja2Ryb3BaSW5kZXgpLGF3YWl0IE0uY29udmVuaWVuY2Uuc21hcnRkZWxheS5kZWxheUZvcigwKSx0aGlzLnZpc2libGU9ITB9YXN5bmMgaGlkZSgpe2F3YWl0KGF3YWl0IHRoaXMuZG9tdG9vbHNQcm9taXNlKS5jb252ZW5pZW5jZS5zbWFydGRlbGF5LmRlbGF5Rm9yKDApLHRoaXMudmlzaWJsZT0hMX1hc3luYyBkZXN0cm95KCl7bGV0IE09YXdhaXQgdGhpcy5kb210b29sc1Byb21pc2U7YXdhaXQgdGhpcy5oaWRlKCksYXdhaXQgTS5jb252ZW5pZW5jZS5zbWFydGRlbGF5LmRlbGF5Rm9yKDMwMCksX2EudW5yZWdpc3Rlcih0aGlzKSx0aGlzLnJlbW92ZSgpfXN0YXRpY3tMdShhLHQpfX07cmV0dXJuIHk9YX0pKCl9KTt2YXIgJDlhLEQ5YT1nKCgpPT57cGUoKTtHYSgpO0M4KCk7JDlhPWkoKCk9PntsZXQgcz1PYmplY3Qua2V5cyhNb3QuZmEpO2NvbnNvbGUubG9nKCJGaXJzdCBmZXcgTHVjaWRlIGtleXM6IixPYmplY3Qua2V5cyhHcikuc2xpY2UoMCw1KSk7bGV0IGU9T2JqZWN0LmtleXMoR3IpLmZpbHRlcihuPT57bGV0IG89blswXT09PW5bMF0udG9VcHBlckNhc2UoKSYmblswXSE9PW5bMF0udG9Mb3dlckNhc2UoKSxsPXR5cGVvZiBHcltuXT09ImZ1bmN0aW9uIixwPSFbImNyZWF0ZUVsZW1lbnQiLCJjcmVhdGVJY29ucyIsImRlZmF1bHQiXS5pbmNsdWRlcyhuKTtyZXR1cm4gbCYmbyYmcH0pLm1hcChuPT5uLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpK24uc2xpY2UoMSkpO2lmKGNvbnNvbGUubG9nKGBGb3VuZCAke2UubGVuZ3RofSBMdWNpZGUgaWNvbnNgKSxlLmxlbmd0aD09PTAmJihjb25zb2xlLmxvZygiVHJ5aW5nIGFsdGVybmF0aXZlIGFwcHJvYWNoIHRvIGZpbmQgTHVjaWRlIGljb25zIiksQ2QpKXtsZXQgbj1DZHx8e307ZS5wdXNoKC4uLk9iamVjdC5rZXlzKG4pKSxjb25zb2xlLmxvZyhgRm91bmQgJHtlLmxlbmd0aH0gaWNvbnMgdmlhIGFsdGVybmF0aXZlIG1ldGhvZGApfWxldCB0PWkoKCk9PntsZXQgbj1zLm1hcChkPT5gZmE6JHtkfWApLG89ZS5tYXAoZD0+YGx1Y2lkZToke2R9YCksbD1bLi4ubiwuLi5vXSxwPWwuam9pbihgCmApO25hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHApLnRoZW4oKCk9PntsZXQgdT13aW5kb3cuZXZlbnQuY3VycmVudFRhcmdldCxjPXUudGV4dENvbnRlbnQ7dS50ZXh0Q29udGVudD1gXHUyNzEzIENvcGllZCAke2wubGVuZ3RofSBpY29uIG5hbWVzIWAsc2V0VGltZW91dCgoKT0+e3UudGV4dENvbnRlbnQ9Y30sMmUzKX0pfSwiY29weUFsbEljb25OYW1lcyIpLGE9aShuPT57bGV0IG89bi50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKS50cmltKCksbD1uLnRhcmdldC5jbG9zZXN0KCIuZGVtb0NvbnRhaW5lciIpO2wucXVlcnlTZWxlY3RvckFsbCgiLmljb25Db250YWluZXIiKS5mb3JFYWNoKGQ9PntsZXQgdT1kLmdldEF0dHJpYnV0ZSgiZGF0YS1uYW1lIik7bz09PSIifHx1JiZ1LmluY2x1ZGVzKG8pP2QuY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIik6ZC5jbGFzc0xpc3QuYWRkKCJoaWRkZW4iKX0pLGwucXVlcnlTZWxlY3RvckFsbCgiLnNlY3Rpb24tY29udGFpbmVyIikuZm9yRWFjaChkPT57bGV0IHU9ZC5xdWVyeVNlbGVjdG9yQWxsKCIuaWNvbkNvbnRhaW5lcjpub3QoLmhpZGRlbikiKS5sZW5ndGgsYz1kLnF1ZXJ5U2VsZWN0b3IoIi5pY29uLWNvdW50Iik7aWYoYyl7bGV0IGI9ZC5jbGFzc0xpc3QuY29udGFpbnMoImZhLXNlY3Rpb24iKT9zLmxlbmd0aDplLmxlbmd0aDtjLnRleHRDb250ZW50PXU9PT1iP2Ake2J9IGljb25zYDpgJHt1fSBvZiAke2J9IGljb25zYH19KX0sInNlYXJjaEljb25zIikscj1pKChuLG8pPT57bGV0IGw9YCR7b306JHtufWA7bmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQobCkudGhlbigoKT0+e2xldCB1PXdpbmRvdy5ldmVudC5jdXJyZW50VGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoIi5jb3B5LXRvb2x0aXAiKTt1JiYodS50ZXh0Q29udGVudD0iQ29waWVkISIsc2V0VGltZW91dCgoKT0+e3UudGV4dENvbnRlbnQ9IkNsaWNrIHRvIGNvcHkifSwyZTMpKX0pfSwiY29weUljb25OYW1lIik7cmV0dXJuIHdgCiAgPHN0eWxlPgogICAgLmRlbW9Db250YWluZXIgewogICAgICB3aWR0aDogMTAwJTsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICBiYWNrZ3JvdW5kOiAjMTExMTExOwogICAgICBwYWRkaW5nOiAyMHB4OwogICAgICBmb250LXNpemU6IDMwcHg7CiAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgT3h5Z2VuLVNhbnMsIFVidW50dSwgQ2FudGFyZWxsLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmOwogICAgfQogICAgCiAgICAuc2VhcmNoLWNvbnRhaW5lciB7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBnYXA6IDEwcHg7CiAgICB9CiAgICAKICAgICNpY29uU2VhcmNoIHsKICAgICAgZmxleDogMTsKICAgICAgcGFkZGluZzogMTJweCAxNnB4OwogICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICBiYWNrZ3JvdW5kOiAjMjIyOwogICAgICBjb2xvcjogI2ZmZjsKICAgICAgYm9yZGVyOiAxcHggc29saWQgIzMzMzsKICAgIH0KICAgIAogICAgI2ljb25TZWFyY2g6Zm9jdXMgewogICAgICBvdXRsaW5lOiBub25lOwogICAgICBib3JkZXItY29sb3I6ICNlNDAwMmI7CiAgICB9CiAgICAKICAgIC5jb3B5LWFsbC1idXR0b24gewogICAgICBwYWRkaW5nOiAxMnB4IDIwcHg7CiAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgYm9yZGVyOiBub25lOwogICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgIGJhY2tncm91bmQ6ICNlNDAwMmI7CiAgICAgIGNvbG9yOiAjZmZmOwogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzOwogICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgfQogICAgCiAgICAuY29weS1hbGwtYnV0dG9uOmhvdmVyIHsKICAgICAgYmFja2dyb3VuZDogI2M0MDAxYjsKICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOwogICAgfQogICAgCiAgICAuY29weS1hbGwtYnV0dG9uOmFjdGl2ZSB7CiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIH0KICAgIAogICAgZGVlcy1pY29uIHsKICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTsKICAgICAgY29sb3I6ICNmZmZmZmY7CiAgICB9CgogICAgLmljb25Db250YWluZXIgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICBwYWRkaW5nOiAyMHB4IDE2cHggMHB4IDE2cHg7CiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMzMzMzMzM7CiAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnM7CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgfQogICAgCiAgICAuaWNvbkNvbnRhaW5lcjpob3ZlciB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyMjI7CiAgICB9CgogICAgLmljb25OYW1lIHsKICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIGNvbG9yOiAjY2NjOwogICAgICBiYWNrZ3JvdW5kOiAjMzMzMzMzOwogICAgICBwYWRkaW5nOiA2cHggMTBweDsKICAgICAgbWFyZ2luLWxlZnQ6IC0xNnB4OwogICAgICBtYXJnaW4tcmlnaHQ6IC0xNnB4OwogICAgICBtYXJnaW4tdG9wOiAyMHB4OwogICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgbWF4LXdpZHRoOiAxMjBweDsKICAgICAgYm9yZGVyLXJhZGl1czogMCAwIDRweCA0cHg7CiAgICB9CgogICAgLnNlY3Rpb24tdGl0bGUgewogICAgICB3aWR0aDogMTAwJTsKICAgICAgY29sb3I6ICNmZmZmZmY7CiAgICAgIGZvbnQtc2l6ZTogMjRweDsKICAgICAgbWFyZ2luOiAyMHB4IDA7CiAgICAgIHBhZGRpbmctYm90dG9tOiAxMHB4OwogICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzMzMzMzMzsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgfQogICAgCiAgICAuYXBpLW5vdGUgewogICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIGNvbG9yOiAjZTQwMDJiOwogICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICBwYWRkaW5nOiAxMHB4OwogICAgICBib3JkZXI6IDFweCBzb2xpZCAjZTQwMDJiOwogICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjI4LCAwLCA0MywgMC4xKTsKICAgIH0KICAgIAogICAgLmljb24tY291bnQgewogICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIGNvbG9yOiAjODg4OwogICAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgICBiYWNrZ3JvdW5kOiAjMjIyOwogICAgICBwYWRkaW5nOiA1cHggMTBweDsKICAgICAgYm9yZGVyLXJhZGl1czogMjBweDsKICAgIH0KICAgIAogICAgLmljb25zLWdyaWQgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgfQogICAgCiAgICAuc2VjdGlvbi1jb250YWluZXIgewogICAgICB3aWR0aDogMTAwJTsKICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICAgIH0KICAgIAogICAgLmNvcHktdG9vbHRpcCB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgYmFja2dyb3VuZDogIzMzMzsKICAgICAgY29sb3I6IHdoaXRlOwogICAgICBwYWRkaW5nOiA1cHggMTBweDsKICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICBmb250LXNpemU6IDEycHg7CiAgICAgIHRvcDogLTMwcHg7CiAgICAgIG9wYWNpdHk6IDA7CiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zczsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICB9CiAgICAKICAgIC5pY29uQ29udGFpbmVyOmhvdmVyIC5jb3B5LXRvb2x0aXAgewogICAgICBvcGFjaXR5OiAxOwogICAgfQoKICAgIC5pY29uQ29udGFpbmVyOmhvdmVyIGRlZXMtaWNvbiB7CiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTsKICAgIH0KICAgIAogICAgLmhpZGRlbiB7CiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KICA8L3N0eWxlPgogIAogIDxkaXYgY2xhc3M9ImRlbW9Db250YWluZXIiPgogICAgPGRpdiBjbGFzcz0ic2VhcmNoLWNvbnRhaW5lciI+CiAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaWNvblNlYXJjaCIgcGxhY2Vob2xkZXI9IlNlYXJjaCBpY29ucy4uLiIgQGlucHV0PSR7YX0+CiAgICAgIDxidXR0b24gY2xhc3M9ImNvcHktYWxsLWJ1dHRvbiIgQGNsaWNrPSR7dH0+8J+TiyBDb3B5IEFsbCBJY29uIE5hbWVzPC9idXR0b24+CiAgICA8L2Rpdj4KICAgIAogICAgPGRpdiBjbGFzcz0iYXBpLW5vdGUiPgogICAgICBOZXcgQVBJOiBVc2UgPGNvZGU+aWNvbj0iZmE6aWNvbk5hbWUiPC9jb2RlPiBvciA8Y29kZT5pY29uPSJsdWNpZGU6aWNvbk5hbWUiPC9jb2RlPiBpbnN0ZWFkIG9mIDxjb2RlPmljb25GQTwvY29kZT4uIAogICAgICBDbGljayBhbnkgaWNvbiB0byBjb3B5IGl0cyBuZXcgZm9ybWF0IHRvIGNsaXBib2FyZC4KICAgIDwvZGl2PgogICAgCiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWNvbnRhaW5lciBmYS1zZWN0aW9uIj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+CiAgICAgICAgRm9udEF3ZXNvbWUgSWNvbnMKICAgICAgICA8c3BhbiBjbGFzcz0iaWNvbi1jb3VudCI+JHtzLmxlbmd0aH0gaWNvbnM8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJpY29ucy1ncmlkIj4KICAgICAgICAke3MubWFwKG49PntsZXQgbz1gZmE6JHtufWA7cmV0dXJuIHdgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaWNvbkNvbnRhaW5lciBmYS1pY29uIiBkYXRhLW5hbWU9JHtuLnRvTG93ZXJDYXNlKCl9IEBjbGljaz0keygpPT5yKG4sImZhIil9PgogICAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0ke299IGljb25TaXplPSIyNCI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpY29uTmFtZSI+ZmE6JHtufTwvZGl2PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvcHktdG9vbHRpcCI+Q2xpY2sgdG8gY29weTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYH0pfQogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tY29udGFpbmVyIGx1Y2lkZS1zZWN0aW9uIj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+CiAgICAgICAgTHVjaWRlIEljb25zCiAgICAgICAgPHNwYW4gY2xhc3M9Imljb24tY291bnQiPiR7ZS5sZW5ndGh9IGljb25zPC9zcGFuPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iaWNvbnMtZ3JpZCI+CiAgICAgICAgJHtlLm1hcChuPT57bGV0IG89YGx1Y2lkZToke259YDtyZXR1cm4gd2AKICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpY29uQ29udGFpbmVyIGx1Y2lkZS1pY29uIiBkYXRhLW5hbWU9JHtuLnRvTG93ZXJDYXNlKCl9IEBjbGljaz0keygpPT5yKG4sImx1Y2lkZSIpfT4KICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHtvfSBpY29uU2l6ZT0iMjQiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaWNvbk5hbWUiPmx1Y2lkZToke259PC9kaXY+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29weS10b29sdGlwIj5DbGljayB0byBjb3B5PC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICBgfSl9CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CiAgYH0sImRlbW9GdW5jIil9KTtmdW5jdGlvbiB6SmEoKXtteC5zaXplPkw5YSYmQXJyYXkuZnJvbShteC5rZXlzKCkpLnNsaWNlKDAsTDlhLzUpLmZvckVhY2goZT0+bXguZGVsZXRlKGUpKX12YXIgZngseDIsTUphLE1vdCxteCxMOWEsQ0phLEdhPWcoKCk9PntwZSgpO2t0KCk7aHQoKTtrOGUoKTtzZ2UoKTt6N2UoKTtSa2UoKTtEOWEoKTtDOCgpO0M4KCk7Zng9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LHgyPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxNSmE9e2Fycm93UmlnaHQ6WGIsYXJyb3dVcFJpZ2h0RnJvbVNxdWFyZTpnZixiZWxsOkZiLGJ1ZzpldixidWlsZGluZzpLYixjYXJldExlZnQ6cWIsY2FyZXRSaWdodDpPYixjaGVjazpaYixjaXJjbGVJbmZvOnZmLGNpcmNsZUNoZWNrOnRmLGNpcmNsZUNoZWNrU29saWQ6cGYsY2lyY2xlWG1hcms6dWgsY2lyY2xlWG1hcmtTb2xpZDpwaCxjbG9ja1JvdGF0ZUxlZnQ6aGYsY29weTpQYixjb3B5U29saWQ6dHYsZGVza3RvcDpiZixleWU6SGIsZXllU2xhc2g6YXYsZmlsZUludm9pY2U6UWIsZmlsZUludm9pY2VEb2xsZXI6SmIsZ2VhcjpkZixncmlwOmhoLG1hZ25pZnlpbmdHbGFzczpuZixtZXNzYWdlOkozLG1lc3NhZ2VTb2xpZDpyZixtb25leUNoZWNrRG9sbGFyOm1mLG11Z0hvdDpzdixtaW51czpzZixuZXR3b3JrV2lyZWQ6V2IscGFwZXJjbGlwOlliLHBhc3RlOlEzLHBhc3RlU29saWQ6YWYscGVuVG9TcXVhcmU6bGYscGx1czpmZixyZWNlaXB0OmpiLHJzczpvZixzaGFyZTpjZixzdW46RWIsc3VuU29saWQ6VWIsdGVybWluYWw6R2IsdHJhc2g6ZmgsdHJhc2hTb2xpZDpmaCx0cmFzaENhbjplZix0cmFzaENhblNvbGlkOnVmLHVzZXJzOlZiLHdhbGxldDpCYix4bWFyazp6ZCxmYWNlYm9vazpDYixnb29nbGU6TWIsaW5zdGFncmFtOkRiLGxpbmtlZGluOnpiLG1lZGl1bTpYMyxzbGFjazpUYix0aWt0b2s6JGIsdHdpdHRlcjpMYn0sTW90PXtmYTpNSmF9LG14PW5ldyBNYXAsTDlhPTUwMDtpKHpKYSwibGltaXRDYWNoZVNpemUiKTtDSmE9KCgpPT57bGV0IHM9W25lKCJkZWVzLWljb24iKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXTt2YXIgTj1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0ljb24iKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgQz10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZyxjb252ZXJ0ZXI6e2Zyb21BdHRyaWJ1dGU6aShfPT5fLCJmcm9tQXR0cmlidXRlIiksdG9BdHRyaWJ1dGU6aShfPT5fLCJ0b0F0dHJpYnV0ZSIpfX0pXSxwPVtMKHt0eXBlOlN0cmluZyxjb252ZXJ0ZXI6e2Zyb21BdHRyaWJ1dGU6aShfPT5fLCJmcm9tQXR0cmlidXRlIiksdG9BdHRyaWJ1dGU6aShfPT5fLCJ0b0F0dHJpYnV0ZSIpfX0pXSxjPVtMKHt0eXBlOk51bWJlcn0pXSx4PVtMKHt0eXBlOlN0cmluZ30pXSx5PVtMKHt0eXBlOk51bWJlcn0pXSxmeCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6Imljb25GQSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4iaWNvbkZBImluIF8sImhhcyIpLGdldDppKF89Pl8uaWNvbkZBLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uaWNvbkZBPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sbyxsKSxmeCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Imljb24iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+Imljb24iaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5pY29uLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uaWNvbj1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LGQsdSksZngodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpY29uU2l6ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4iaWNvblNpemUiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5pY29uU2l6ZSwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLmljb25TaXplPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sYix2KSxmeCh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNvbG9yIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJjb2xvciJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLmNvbG9yLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uY29sb3I9T30sInNldCIpfSxtZXRhZGF0YTpDfSxtLGYpLGZ4KHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToic3Ryb2tlV2lkdGgiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+InN0cm9rZVdpZHRoImluIF8sImhhcyIpLGdldDppKF89Pl8uc3Ryb2tlV2lkdGgsImdldCIpLHNldDppKChfLE8pPT57Xy5zdHJva2VXaWR0aD1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LE0seiksZngobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6Q30sbnVsbCx0KSxOPWE9ZS52YWx1ZSxDJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOkN9KX1zdGF0aWMgZGVtbz0kOWE7c3RhdGljIGRlbW9Hcm91cHM9WyJVdGlsaXR5Il07I2U9eDIodGhpcyxvLHZvaWQgMCk7Z2V0IGljb25GQSgpe3JldHVybiB0aGlzLiNlfXNldCBpY29uRkEoQyl7dGhpcy4jZT1DfSN0PSh4Mih0aGlzLGwpLHgyKHRoaXMsZCx2b2lkIDApKTtnZXQgaWNvbigpe3JldHVybiB0aGlzLiN0fXNldCBpY29uKEMpe3RoaXMuI3Q9Q30jYT0oeDIodGhpcyx1KSx4Mih0aGlzLGIsdm9pZCAwKSk7Z2V0IGljb25TaXplKCl7cmV0dXJuIHRoaXMuI2F9c2V0IGljb25TaXplKEMpe3RoaXMuI2E9Q30jcz0oeDIodGhpcyx2KSx4Mih0aGlzLG0sImN1cnJlbnRDb2xvciIpKTtnZXQgY29sb3IoKXtyZXR1cm4gdGhpcy4jc31zZXQgY29sb3IoQyl7dGhpcy4jcz1DfSNpPSh4Mih0aGlzLGYpLHgyKHRoaXMsTSwyKSk7Z2V0IHN0cm9rZVdpZHRoKCl7cmV0dXJuIHRoaXMuI2l9c2V0IHN0cm9rZVdpZHRoKEMpe3RoaXMuI2k9Q31sYXN0SWNvbj0oeDIodGhpcyx6KSxudWxsKTtsYXN0SWNvblNpemU9bnVsbDtsYXN0Q29sb3I9bnVsbDtsYXN0U3Ryb2tlV2lkdGg9bnVsbDtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGEuc2V0dXAoKX1nZXRFZmZlY3RpdmVJY29uKCl7cmV0dXJuIHRoaXMuaWNvbj90aGlzLmljb246dGhpcy5pY29uRkE/dGhpcy5pY29uRkEuc3RhcnRzV2l0aCgibHVjaWRlOiIpP3RoaXMuaWNvbkZBOmBmYToke3RoaXMuaWNvbkZBfWA6bnVsbH1wYXJzZUljb25TdHJpbmcoQyl7bGV0IF89Qy50b0xvd2VyQ2FzZSgpO3JldHVybiBfLnN0YXJ0c1dpdGgoImZhOiIpP3t0eXBlOiJmYSIsbmFtZTpDLnN1YnN0cmluZygzKX06Xy5zdGFydHNXaXRoKCJsdWNpZGU6Iik/e3R5cGU6Imx1Y2lkZSIsbmFtZTpDLnN1YnN0cmluZyg3KX06e3R5cGU6Imx1Y2lkZSIsbmFtZTpDfX1yZW5kZXJMdWNpZGVJY29uKEMpe2xldCBfPWBsdWNpZGU6JHtDfToke3RoaXMuaWNvblNpemV9OiR7dGhpcy5jb2xvcn06JHt0aGlzLnN0cm9rZVdpZHRofWA7aWYobXguaGFzKF8pKXJldHVybiBteC5nZXQoXyl8fCIiO3RyeXtsZXQgTz1DLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK0Muc2xpY2UoMSk7aWYoIUdyW09dKXJldHVybiBjb25zb2xlLndhcm4oYEx1Y2lkZSBpY29uICcke099JyBub3QgZm91bmQgaW4gbHVjaWRlSWNvbnMgb2JqZWN0YCksIiI7bGV0ICQ9ajEoR3JbT10se2NvbG9yOnRoaXMuY29sb3Isc2l6ZTp0aGlzLmljb25TaXplLHN0cm9rZVdpZHRoOnRoaXMuc3Ryb2tlV2lkdGh9KTtpZighJClyZXR1cm4gY29uc29sZS53YXJuKGBjcmVhdGVFbGVtZW50IHJldHVybmVkIGVtcHR5IHJlc3VsdCBmb3IgJHtPfWApLCIiO2xldCBFPSQub3V0ZXJIVE1MO3JldHVybiBteC5zZXQoXyxFKSx6SmEoKSxFfWNhdGNoKE8pe3JldHVybiBjb25zb2xlLmVycm9yKGBFcnJvciByZW5kZXJpbmcgTHVjaWRlIGljb24gJHtDfTpgLE8pLGA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IiR7dGhpcy5pY29uU2l6ZX0iIGhlaWdodD0iJHt0aGlzLmljb25TaXplfSIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiR7dGhpcy5jb2xvcn0iIHN0cm9rZS13aWR0aD0iJHt0aGlzLnN0cm9rZVdpZHRofSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj4KICAgICAgICA8dGV4dCB4PSI1MCUiIHk9IjUwJSIgZm9udC1zaXplPSI2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBkb21pbmFudC1iYXNlbGluZT0ibWlkZGxlIiBmaWxsPSIke3RoaXMuY29sb3J9Ij4ke0N9PC90ZXh0PgogICAgICA8L3N2Zz5gfX1zdGF0aWMgc3R5bGVzPVtxZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgLyogVE9ETzogTWlncmF0ZSBoYXJkY29kZWQgdmFsdWVzIHRvIC0tZGVlcy0qIENTUyB2YXJpYWJsZXMgKi8KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE7CiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgLyogSW1wcm92ZSByZW5kZXJpbmcgcGVyZm9ybWFuY2UgKi8KICAgICAgI2ljb25Db250YWluZXIgc3ZnIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsgLyogSGVscHMgd2l0aCBhbmltYXRpb25zICovCiAgICAgICAgY29udGFpbjogc3RyaWN0OyAvKiBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gKi8KICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgICR7dGEuc3R5bGVzfQogICAgICA8c3R5bGU+CiAgICAgICAgI2ljb25Db250YWluZXIgewogICAgICAgICAgd2lkdGg6ICR7dGhpcy5pY29uU2l6ZX1weDsKICAgICAgICAgIGhlaWdodDogJHt0aGlzLmljb25TaXplfXB4OwogICAgICAgIH0KICAgICAgPC9zdHlsZT4KICAgICAgPGRpdiBpZD0iaWNvbkNvbnRhaW5lciI+PC9kaXY+CiAgICBgfXVwZGF0ZWQoKXt0aGlzLmljb25TaXplfHwodGhpcy5pY29uU2l6ZT1wYXJzZUludChnbG9iYWxUaGlzLmdldENvbXB1dGVkU3R5bGUodGhpcykuZm9udFNpemUucmVwbGFjZSgvXEQvZywiIikpKTtsZXQgQz10aGlzLmdldEVmZmVjdGl2ZUljb24oKTtpZih0aGlzLmxhc3RJY29uPT09QyYmdGhpcy5sYXN0SWNvblNpemU9PT10aGlzLmljb25TaXplJiZ0aGlzLmxhc3RDb2xvcj09PXRoaXMuY29sb3ImJnRoaXMubGFzdFN0cm9rZVdpZHRoPT09dGhpcy5zdHJva2VXaWR0aClyZXR1cm47dGhpcy5sYXN0SWNvbj1DLHRoaXMubGFzdEljb25TaXplPXRoaXMuaWNvblNpemUsdGhpcy5sYXN0Q29sb3I9dGhpcy5jb2xvcix0aGlzLmxhc3RTdHJva2VXaWR0aD10aGlzLnN0cm9rZVdpZHRoO2xldCBfPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiI2ljb25Db250YWluZXIiKTtpZighKCFffHwhQykpdHJ5e2xldHt0eXBlOk8sbmFtZTokfT10aGlzLnBhcnNlSWNvblN0cmluZyhDKTtpZihPPT09Imx1Y2lkZSIpe18uaW5uZXJIVE1MPSIiO3RyeXtsZXQgRT0kLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpKyQuc2xpY2UoMSk7aWYoR3JbRV0pe2xldCBIPWoxKEdyW0VdLHtjb2xvcjp0aGlzLmNvbG9yLHNpemU6dGhpcy5pY29uU2l6ZSxzdHJva2VXaWR0aDp0aGlzLnN0cm9rZVdpZHRofSk7aWYoSCl7Xy5hcHBlbmRDaGlsZChIKTtyZXR1cm59fXRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGNyZWF0ZSBlbGVtZW50IGZvciAke0V9YCl9Y2F0Y2goRSl7Y29uc29sZS5lcnJvcigiRXJyb3IgcmVuZGVyaW5nIEx1Y2lkZSBpY29uOiIsRSk7bGV0IEg9dGhpcy5yZW5kZXJMdWNpZGVJY29uKCQpO0gmJihfLmlubmVySFRNTD1IKX19ZWxzZXtsZXQgRT1Nb3QuZmFbJF07aWYoRSl7bGV0IEg9R2soRSkuaHRtbFswXTtfLmlubmVySFRNTD1IfWVsc2UgY29uc29sZS53YXJuKGBGb250QXdlc29tZSBpY29uIG5vdCBmb3VuZDogJHskfWApfX1jYXRjaChPKXtjb25zb2xlLmVycm9yKGBFcnJvciB1cGRhdGluZyBpY29uICR7Q306YCxPKX19YXN5bmMgZGlzY29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMubGFzdEljb249bnVsbCx0aGlzLmxhc3RJY29uU2l6ZT1udWxsLHRoaXMubGFzdENvbG9yPW51bGwsdGhpcy5sYXN0U3Ryb2tlV2lkdGg9bnVsbH1zdGF0aWN7eDIoYSx0KX19O3JldHVybiBOPWF9KSgpfSk7dmFyIEU5YSx6b3QsJGEsZnI9ZygoKT0+e3ZvKCk7VDlhKCk7cGUoKTtrdCgpO3YyKCk7R24oKTtHYSgpO2h0KCk7RTlhPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSx6b3Q9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LCRhPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1jb250ZXh0bWVudSIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdO3ZhciBwPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzQ29udGV4dG1lbnUiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgZD10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOkFycmF5fSldLEU5YSh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1lbnVJdGVtcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh1PT4ibWVudUl0ZW1zImluIHUsImhhcyIpLGdldDppKHU9PnUubWVudUl0ZW1zLCJnZXQiKSxzZXQ6aSgodSxjKT0+e3UubWVudUl0ZW1zPWN9LCJzZXQiKX0sbWV0YWRhdGE6ZH0sbyxsKSxFOWEobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6ZH0sbnVsbCx0KSxwPWE9ZS52YWx1ZSxkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmR9KX1zdGF0aWMgZGVtbz1DOWE7c3RhdGljIGRlbW9Hcm91cHM9WyJPdmVybGF5Il07c3RhdGljIGNvbnRleHRNZW51RGVhY3RpdmF0ZWQ9ITE7c3RhdGljIGFjY3VtdWxhdGVkTWVudUl0ZW1zPVtdO3N0YXRpYyBpbml0aWFsaXplR2xvYmFsTGlzdGVuZXIoKXtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsZD0+e2lmKHRoaXMuY29udGV4dE1lbnVEZWFjdGl2YXRlZClyZXR1cm47ZC5wcmV2ZW50RGVmYXVsdCgpLHAuYWNjdW11bGF0ZWRNZW51SXRlbXM9W107bGV0IHU9ZC5jb21wb3NlZFBhdGgoKTtmb3IobGV0IGMgb2YgdSlpZihjLmdldENvbnRleHRNZW51SXRlbXMpe2xldCBiPWMuZ2V0Q29udGV4dE1lbnVJdGVtcygpO2ImJmIubGVuZ3RoPjAmJihwLmFjY3VtdWxhdGVkTWVudUl0ZW1zLmxlbmd0aD4wJiZwLmFjY3VtdWxhdGVkTWVudUl0ZW1zLnB1c2goe2RpdmlkZXI6ITB9KSxwLmFjY3VtdWxhdGVkTWVudUl0ZW1zLnB1c2goLi4uYikpfXAub3BlbkNvbnRleHRNZW51V2l0aE9wdGlvbnMoZCxwLmFjY3VtdWxhdGVkTWVudUl0ZW1zKX0pfXN0YXRpYyBhc3luYyBvcGVuQ29udGV4dE1lbnVXaXRoT3B0aW9ucyhkLHUpe2lmKHRoaXMuY29udGV4dE1lbnVEZWFjdGl2YXRlZClyZXR1cm47ZC5wcmV2ZW50RGVmYXVsdCgpLGQuc3RvcFByb3BhZ2F0aW9uKCk7bGV0IGM9bmV3IHA7Yy5zdHlsZS5wb3NpdGlvbj0iZml4ZWQiLGMuc3R5bGUuekluZGV4PVN0cmluZyhiby5vdmVybGF5LmNvbnRleHRNZW51KSxjLnN0eWxlLm9wYWNpdHk9IjAiLGMuc3R5bGUudHJhbnNmb3JtPSJzY2FsZSgwLjk1KSB0cmFuc2xhdGVZKC0xMHB4KSIsYy5tZW51SXRlbXM9dSxjLndpbmRvd0xheWVyPWF3YWl0IFJvLmNyZWF0ZUFuZFNob3coKSxjLndpbmRvd0xheWVyLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixhc3luYyB5PT57eS50YXJnZXQuY2xvc2VzdCgiZGVlcy1jb250ZXh0bWVudSIpfHxhd2FpdCBjLmRlc3Ryb3koKX0pLGRvY3VtZW50LmJvZHkuYXBwZW5kKGMpLGF3YWl0IHV0LnNtYXJ0ZGVsYXkuZGVsYXlGb3IoMCk7bGV0IGI9Yy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx2PXdpbmRvdy5pbm5lcldpZHRoLHg9d2luZG93LmlubmVySGVpZ2h0LG09ZC5jbGllbnRZLGY9ZC5jbGllbnRYO2YrYi53aWR0aD52JiYoZj12LWIud2lkdGgtMTApLG0rYi5oZWlnaHQ+eCYmKG09eC1iLmhlaWdodC0xMCksZjwxMCYmKGY9MTApLG08MTAmJihtPTEwKSxjLnN0eWxlLnRvcD1gJHttfXB4YCxjLnN0eWxlLmxlZnQ9YCR7Zn1weGAsYy5zdHlsZS50cmFuc2Zvcm1PcmlnaW49InRvcCBsZWZ0Iixhd2FpdCB1dC5zbWFydGRlbGF5LmRlbGF5Rm9yKDApLGMuc3R5bGUub3BhY2l0eT0iMSIsYy5zdHlsZS50cmFuc2Zvcm09InNjYWxlKDEpIHRyYW5zbGF0ZVkoMCkifSNlPXpvdCh0aGlzLG8sW10pO2dldCBtZW51SXRlbXMoKXtyZXR1cm4gdGhpcy4jZX1zZXQgbWVudUl0ZW1zKGQpe3RoaXMuI2U9ZH13aW5kb3dMYXllcj16b3QodGhpcyxsKTtzdWJtZW51PW51bGw7c3VibWVudVRpbWVvdXQ9bnVsbDtwYXJlbnRNZW51PW51bGw7aXNEZXN0cm95aW5nPSExO2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLnRhYkluZGV4PTB9c3RhdGljIHN0eWxlcz1bcWUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMsIHRyYW5zZm9ybSAwLjJzOwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5tYWluYm94IHsKICAgICAgICBtaW4td2lkdGg6IDIwMHB4OwogICAgICAgIG1heC13aWR0aDogMjgwcHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDAwMDAwIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTBlMGUwIiwiIzIwMjAyMCIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgYm94LXNoYWRvdzogJHtoLmJkVGhlbWUoIjAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjE1KSIsIjAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjMpIil9OwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICAgIHBhZGRpbmc6IDRweCAwOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzMzMiLCIjY2NjIil9OwogICAgICB9CgogICAgICAubWVudWl0ZW0gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjFzOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgLm1lbnVpdGVtOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjA0KSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCkiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5tZW51aXRlbS5oYXMtc3VibWVudTo6YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICfigLonOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICByaWdodDogOHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgIH0KCiAgICAgIC5tZW51aXRlbTphY3RpdmU6bm90KC5oYXMtc3VibWVudSkgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMDgpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKSIpfTsKICAgICAgfQogICAgICAKICAgICAgLm1lbnVpdGVtLmRpc2FibGVkIHsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgLm1lbnVpdGVtIGRlZXMtaWNvbiB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIG9wYWNpdHk6IDAuNzsKICAgICAgfQoKICAgICAgLm1lbnVpdGVtLXRleHQgewogICAgICAgIGZsZXg6IDE7CiAgICAgIH0KCiAgICAgIC5tZW51aXRlbS1zaG9ydGN1dCB7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzk5OSIsIiM2NjYiKX07CiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgICAgb3BhY2l0eTogMC43OwogICAgICB9CgogICAgICAubWVudS1kaXZpZGVyIHsKICAgICAgICBoZWlnaHQ6IDFweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2UwZTBlMCIsIiMyMDIwMjAiKX07CiAgICAgICAgbWFyZ2luOiA0cHggMDsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9Im1haW5ib3giPgogICAgICAgICR7dGhpcy5tZW51SXRlbXMubWFwKGQ9PntpZigiZGl2aWRlciJpbiBkJiZkLmRpdmlkZXIpcmV0dXJuIHdgPGRpdiBjbGFzcz0ibWVudS1kaXZpZGVyIj48L2Rpdj5gO2xldCB1PWQsYz11LnN1Ym1lbnUmJnUuc3VibWVudS5sZW5ndGg+MDtyZXR1cm4gd2AKICAgICAgICAgICAgPGRpdiAKICAgICAgICAgICAgICBjbGFzcz0ibWVudWl0ZW0gJHt1LmRpc2FibGVkPyJkaXNhYmxlZCI6IiJ9ICR7Yz8iaGFzLXN1Ym1lbnUiOiIifSIgCiAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PiF1LmRpc2FibGVkJiYhYyYmdGhpcy5oYW5kbGVDbGljayh1KX0KICAgICAgICAgICAgICBAbW91c2VlbnRlcj0keygpPT50aGlzLmhhbmRsZU1lbnVJdGVtSG92ZXIodSxjKX0KICAgICAgICAgICAgICBAbW91c2VsZWF2ZT0keygpPT50aGlzLmhhbmRsZU1lbnVJdGVtTGVhdmUoKX0KICAgICAgICAgICAgPgogICAgICAgICAgICAgICR7dS5pY29uTmFtZT93YAogICAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0iJHt1Lmljb25OYW1lfSI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibWVudWl0ZW0tdGV4dCI+JHt1Lm5hbWV9PC9zcGFuPgogICAgICAgICAgICAgICR7dS5zaG9ydGN1dCYmIWM/d2AKICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJtZW51aXRlbS1zaG9ydGN1dCI+JHt1LnNob3J0Y3V0fTwvc3Bhbj4KICAgICAgICAgICAgICBgOiIifQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIGB9KX0KICAgICAgICAke3RoaXMubWVudUl0ZW1zLmxlbmd0aD09PTA/d2AKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVudWl0ZW0iIEBjbGljaz0keygpPT57cC5jb250ZXh0TWVudURlYWN0aXZhdGVkPSEwLHRoaXMuZGVzdHJveSgpfX0+CiAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0ibHVjaWRlOngiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJtZW51aXRlbS10ZXh0Ij5BbGxvdyBuYXRpdmUgY29udGV4dDwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgYDp3YGB9CiAgICAgIDwvZGl2PgogICAgYH1hc3luYyBmaXJzdFVwZGF0ZWQoKXt0aGlzLmZvY3VzKCksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLmhhbmRsZUtleWRvd24pfWhhbmRsZUtleWRvd249aShkPT57bGV0IHU9QXJyYXkuZnJvbSh0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgiLm1lbnVpdGVtOm5vdCguZGlzYWJsZWQpIikpLGM9dS5maW5kSW5kZXgoYj0+Yi5tYXRjaGVzKCI6aG92ZXIiKSk7c3dpdGNoKGQua2V5KXtjYXNlIkFycm93RG93biI6ZC5wcmV2ZW50RGVmYXVsdCgpO2xldCBiPWMrMTx1Lmxlbmd0aD9jKzE6MDt1W2JdLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoIm1vdXNlZW50ZXIiKSk7YnJlYWs7Y2FzZSJBcnJvd1VwIjpkLnByZXZlbnREZWZhdWx0KCk7bGV0IHY9Yy0xPj0wP2MtMTp1Lmxlbmd0aC0xO3Vbdl0uZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgibW91c2VlbnRlciIpKTticmVhaztjYXNlIkVudGVyIjpkLnByZXZlbnREZWZhdWx0KCksYz49MCYmdVtjXS5jbGljaygpO2JyZWFrO2Nhc2UiRXNjYXBlIjpkLnByZXZlbnREZWZhdWx0KCksdGhpcy5kZXN0cm95KCk7YnJlYWt9fSwiaGFuZGxlS2V5ZG93biIpO2FzeW5jIGhhbmRsZUNsaWNrKGQpe2QuYWN0aW9uKCksYXdhaXQgdGhpcy5kZXN0cm95QWxsKCl9YXN5bmMgaGFuZGxlTWVudUl0ZW1Ib3ZlcihkLHUpe3RoaXMuc3VibWVudVRpbWVvdXQmJihjbGVhclRpbWVvdXQodGhpcy5zdWJtZW51VGltZW91dCksdGhpcy5zdWJtZW51VGltZW91dD1udWxsKSx0aGlzLnN1Ym1lbnUmJmF3YWl0IHRoaXMuaGlkZVN1Ym1lbnUoKSx1JiZkLnN1Ym1lbnUmJih0aGlzLnN1Ym1lbnVUaW1lb3V0PXNldFRpbWVvdXQoKCk9Pnt0aGlzLnNob3dTdWJtZW51KGQpfSwyMDApKX1oYW5kbGVNZW51SXRlbUxlYXZlKCl7dGhpcy5zdWJtZW51VGltZW91dCYmY2xlYXJUaW1lb3V0KHRoaXMuc3VibWVudVRpbWVvdXQpLHRoaXMuc3VibWVudVRpbWVvdXQ9c2V0VGltZW91dCgoKT0+e3RoaXMuc3VibWVudSYmIXRoaXMuc3VibWVudS5tYXRjaGVzKCI6aG92ZXIiKSYmdGhpcy5oaWRlU3VibWVudSgpfSwzMDApfWFzeW5jIHNob3dTdWJtZW51KGQpe2lmKCFkLnN1Ym1lbnV8fGQuc3VibWVudS5sZW5ndGg9PT0wKXJldHVybjtsZXQgYz1BcnJheS5mcm9tKHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCIubWVudWl0ZW0iKSkuZmluZChNPT5NLnF1ZXJ5U2VsZWN0b3IoIi5tZW51aXRlbS10ZXh0Iik/LnRleHRDb250ZW50PT09ZC5uYW1lKTtpZighYylyZXR1cm47dGhpcy5zdWJtZW51PW5ldyBwLHRoaXMuc3VibWVudS5tZW51SXRlbXM9ZC5zdWJtZW51LHRoaXMuc3VibWVudS5wYXJlbnRNZW51PXRoaXMsdGhpcy5zdWJtZW51LnN0eWxlLnBvc2l0aW9uPSJmaXhlZCIsdGhpcy5zdWJtZW51LnN0eWxlLnpJbmRleD1TdHJpbmcocGFyc2VJbnQodGhpcy5zdHlsZS56SW5kZXgpKzEpLHRoaXMuc3VibWVudS5zdHlsZS5vcGFjaXR5PSIwIix0aGlzLnN1Ym1lbnUuc3R5bGUudHJhbnNmb3JtPSJzY2FsZSgwLjk1KSIsZG9jdW1lbnQuYm9keS5hcHBlbmQodGhpcy5zdWJtZW51KSxhd2FpdCB1dC5zbWFydGRlbGF5LmRlbGF5Rm9yKDApO2xldCBiPWMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdj10aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHg9dGhpcy5zdWJtZW51LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG09d2luZG93LmlubmVyV2lkdGgsZj12LnJpZ2h0LTQseT1iLnRvcDtmK3gud2lkdGg+bS0xMCYmKGY9di5sZWZ0LXgud2lkdGgrNCkseSt4LmhlaWdodD53aW5kb3cuaW5uZXJIZWlnaHQtMTAmJih5PXdpbmRvdy5pbm5lckhlaWdodC14LmhlaWdodC0xMCksdGhpcy5zdWJtZW51LnN0eWxlLmxlZnQ9YCR7Zn1weGAsdGhpcy5zdWJtZW51LnN0eWxlLnRvcD1gJHt5fXB4YCxhd2FpdCB1dC5zbWFydGRlbGF5LmRlbGF5Rm9yKDApLHRoaXMuc3VibWVudS5zdHlsZS5vcGFjaXR5PSIxIix0aGlzLnN1Ym1lbnUuc3R5bGUudHJhbnNmb3JtPSJzY2FsZSgxKSIsdGhpcy5zdWJtZW51LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZW50ZXIiLCgpPT57dGhpcy5zdWJtZW51VGltZW91dCYmKGNsZWFyVGltZW91dCh0aGlzLnN1Ym1lbnVUaW1lb3V0KSx0aGlzLnN1Ym1lbnVUaW1lb3V0PW51bGwpfSksdGhpcy5zdWJtZW51LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLCgpPT57dGhpcy5oYW5kbGVNZW51SXRlbUxlYXZlKCl9KX1hc3luYyBoaWRlU3VibWVudSgpe3RoaXMuc3VibWVudSYmKGF3YWl0IHRoaXMuc3VibWVudS5kZXN0cm95KCksdGhpcy5zdWJtZW51PW51bGwpfWFzeW5jIGRlc3Ryb3koKXt0aGlzLmlzRGVzdHJveWluZ3x8KHRoaXMuaXNEZXN0cm95aW5nPSEwLHRoaXMuc3VibWVudVRpbWVvdXQmJihjbGVhclRpbWVvdXQodGhpcy5zdWJtZW51VGltZW91dCksdGhpcy5zdWJtZW51VGltZW91dD1udWxsKSx0aGlzLnN1Ym1lbnUmJihhd2FpdCB0aGlzLnN1Ym1lbnUuZGVzdHJveSgpLHRoaXMuc3VibWVudT1udWxsKSx0aGlzLndpbmRvd0xheWVyJiYhdGhpcy5wYXJlbnRNZW51JiZ0aGlzLndpbmRvd0xheWVyLmRlc3Ryb3koKSx0aGlzLnN0eWxlLm9wYWNpdHk9IjAiLHRoaXMuc3R5bGUudHJhbnNmb3JtPSJzY2FsZSgwLjk1KSB0cmFuc2xhdGVZKC0xMHB4KSIsYXdhaXQgdXQuc21hcnRkZWxheS5kZWxheUZvcigxMDApLHRoaXMucGFyZW50RWxlbWVudCYmdGhpcy5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMpKX1hc3luYyBkZXN0cm95QWxsKCl7bGV0IGQ9dGhpcztmb3IoO2QucGFyZW50TWVudTspZD1kLnBhcmVudE1lbnU7YXdhaXQgZC5kZXN0cm95KCl9c3RhdGlje3pvdChhLHQpfX07cmV0dXJuIHA9YX0pKCk7JGEuaW5pdGlhbGl6ZUdsb2JhbExpc3RlbmVyKCl9KTt2YXIgUDlhLEk5YT1nKCgpPT57cGUoKTtJdCgpO1A5YT1pKCgpPT57bGV0IHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGVlcy1hcHB1aS1hY3Rpdml0eWxvZyIpO3JldHVybiBzZXRUaW1lb3V0KCgpPT57cy5hZGRNYW55KFt7dHlwZToibG9naW4iLHVzZXI6IkpvaG4gRG9lIixtZXNzYWdlOiJsb2dnZWQgaW4gZnJvbSBDaHJvbWUgb24gbWFjT1MifSx7dHlwZToiY3JlYXRlIix1c2VyOiJKb2huIERvZSIsbWVzc2FnZTonY3JlYXRlZCBhIG5ldyBwcm9qZWN0ICJGcm9udGVuZCBBcHAiJ30se3R5cGU6InVwZGF0ZSIsdXNlcjoiSmFuZSBTbWl0aCIsbWVzc2FnZToidXBkYXRlZCBBUEkgZG9jdW1lbnRhdGlvbiJ9LHt0eXBlOiJ2aWV3Iix1c2VyOiJKb2huIERvZSIsbWVzc2FnZToidmlld2VkIGRhc2hib2FyZCBhbmFseXRpY3MifSx7dHlwZToiZGVsZXRlIix1c2VyOiJBZG1pbiIsbWVzc2FnZToicmVtb3ZlZCBkZXByZWNhdGVkIGVuZHBvaW50In0se3R5cGU6ImN1c3RvbSIsdXNlcjoiU3lzdGVtIixtZXNzYWdlOiJzY2hlZHVsZWQgYmFja3VwIGNvbXBsZXRlZCIsaWNvbk5hbWU6Imx1Y2lkZTpkYXRhYmFzZSJ9LHt0eXBlOiJsb2dvdXQiLHVzZXI6IkFsaWNlIEJyb3duIixtZXNzYWdlOiJsb2dnZWQgb3V0In0se3R5cGU6ImNyZWF0ZSIsdXNlcjoiSmFuZSBTbWl0aCIsbWVzc2FnZToiY3JlYXRlZCBpbnZvaWNlICMxMjM0In1dKSxzLmVudHJpZXMkLnN1YnNjcmliZShlPT57Y29uc29sZS5sb2coIkFjdGl2aXR5IGxvZyB1cGRhdGVkOiIsZS5sZW5ndGgsImVudHJpZXMiKX0pfSwxMDApLHdgCiAgICA8ZGVlcy1kZW1vd3JhcHBlcj4KICAgICAgPHN0eWxlPgogICAgICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgaGVpZ2h0OiA2MDBweDsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzA5MDkwYiIpfTsKICAgICAgICAgIHBhZGRpbmc6IDMycHg7CiAgICAgICAgfQogICAgICA8L3N0eWxlPgogICAgICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICAgICAgJHtzfQogICAgICA8L2Rpdj4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KICBgfSwiZGVtb0Z1bmMiKX0pO3ZhciAkMWUsRmcsVEphLENvdD1nKCgpPT57cGUoKTtrdCgpO2ZyKCk7R2EoKTtJOWEoKTtodCgpOyQxZT1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sRmc9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LFRKYT0oKCk9PntsZXQgcz1bbmUoImRlZXMtYXBwdWktYWN0aXZpdHlsb2ciKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXTt2YXIgeD1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0FwcHVpQWN0aXZpdHlsb2ciKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgbT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtZKCldLHA9W1koKV0sYz1bWSgpXSwkMWUodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJlbnRyaWVzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGY9PiJlbnRyaWVzImluIGYsImhhcyIpLGdldDppKGY9PmYuZW50cmllcywiZ2V0Iiksc2V0OmkoKGYseSk9PntmLmVudHJpZXM9eX0sInNldCIpfSxtZXRhZGF0YTptfSxvLGwpLCQxZSh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlYXJjaFF1ZXJ5IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGY9PiJzZWFyY2hRdWVyeSJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLnNlYXJjaFF1ZXJ5LCJnZXQiKSxzZXQ6aSgoZix5KT0+e2Yuc2VhcmNoUXVlcnk9eX0sInNldCIpfSxtZXRhZGF0YTptfSxkLHUpLCQxZSh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImZpbHRlckNyaXRlcmlhIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGY9PiJmaWx0ZXJDcml0ZXJpYSJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLmZpbHRlckNyaXRlcmlhLCJnZXQiKSxzZXQ6aSgoZix5KT0+e2YuZmlsdGVyQ3JpdGVyaWE9eX0sInNldCIpfSxtZXRhZGF0YTptfSxiLHYpLCQxZShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTptfSxudWxsLHQpLHg9YT1lLnZhbHVlLG0mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6bX0pfXN0YXRpYyBkZW1vPVA5YTtzdGF0aWMgZGVtb0dyb3Vwcz1bIkFwcCBVSSJdOyNlPUZnKHRoaXMsbyxbXSk7Z2V0IGVudHJpZXMoKXtyZXR1cm4gdGhpcy4jZX1zZXQgZW50cmllcyhtKXt0aGlzLiNlPW19I3Q9KEZnKHRoaXMsbCksRmcodGhpcyxkLCIiKSk7Z2V0IHNlYXJjaFF1ZXJ5KCl7cmV0dXJuIHRoaXMuI3R9c2V0IHNlYXJjaFF1ZXJ5KG0pe3RoaXMuI3Q9bX0jYT0oRmcodGhpcyx1KSxGZyh0aGlzLGIse30pKTtnZXQgZmlsdGVyQ3JpdGVyaWEoKXtyZXR1cm4gdGhpcy4jYX1zZXQgZmlsdGVyQ3JpdGVyaWEobSl7dGhpcy4jYT1tfWVudHJpZXMkPShGZyh0aGlzLHYpLG5ldyB1dC5zbWFydHJ4LnJ4anMuU3ViamVjdCk7c3RhdGljIHN0eWxlcz1bcWUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICAvKiBDU1MgVmFyaWFibGVzIGFsaWduZWQgd2l0aCBzZWNvbmRhcnkgbWVudSAqLwogICAgICAgIC0tYWN0aXZpdHlsb2ctYmc6ICR7aC5iZFRoZW1lKCIjZmFmYWZhIiwiIzBhMGEwYSIpfTsKICAgICAgICAtLWFjdGl2aXR5bG9nLWZnOiAke2guYmRUaGVtZSgiIzUyNTI1MiIsIiNhM2EzYTMiKX07CiAgICAgICAgLS1hY3Rpdml0eWxvZy1mZy1tdXRlZDogJHtoLmJkVGhlbWUoIiM3MzczNzMiLCIjNzM3MzczIil9OwogICAgICAgIC0tYWN0aXZpdHlsb2ctZmctYWN0aXZlOiAke2guYmRUaGVtZSgiIzBhMGEwYSIsIiNmYWZhZmEiKX07CiAgICAgICAgLS1hY3Rpdml0eWxvZy1ib3JkZXI6ICR7aC5iZFRoZW1lKCIjZTVlNWU1IiwiIzFhMWExYSIpfTsKICAgICAgICAtLWFjdGl2aXR5bG9nLWhvdmVyOiAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjA0KSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNikiKX07CiAgICAgICAgLS1hY3Rpdml0eWxvZy1hY2NlbnQ6ICR7aC5iZFRoZW1lKCIjNzg3MTZjIiwiI2I1YTk5YSIpfTsKCiAgICAgICAgY29sb3I6IHZhcigtLWFjdGl2aXR5bG9nLWZnKTsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWFjdGl2aXR5bG9nLWJnKTsKICAgICAgICBmb250LWZhbWlseTogJ0dlaXN0IFNhbnMnLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIHNhbnMtc2VyaWY7CiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCB2YXIoLS1hY3Rpdml0eWxvZy1ib3JkZXIpOwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAubWFpbmNvbnRhaW5lciB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMHB4OwogICAgICAgIGxlZnQ6IDBweDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDI4MHB4OwogICAgICB9CgogICAgICAvKiBIZWFkZXIgd2l0aCBzdHJlYW1pbmcgaW5kaWNhdG9yICovCiAgICAgIC50b3BiYXIgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDBweDsKICAgICAgICBoZWlnaHQ6IDQ4cHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgcGFkZGluZzogMHB4IDEycHg7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYWN0aXZpdHlsb2ctYmcpOwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1hY3Rpdml0eWxvZy1ib3JkZXIpOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLnRvcGJhciAuaGVhZGluZyB7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY29sb3I6IHZhcigtLWFjdGl2aXR5bG9nLWZnLWFjdGl2ZSk7CiAgICAgIH0KCiAgICAgIC5saXZlLWluZGljYXRvciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTsKICAgICAgICBjb2xvcjogdmFyKC0tYWN0aXZpdHlsb2ctZmctbXV0ZWQpOwogICAgICB9CgogICAgICAubGl2ZS1pbmRpY2F0b3IgLmRvdCB7CiAgICAgICAgd2lkdGg6IDZweDsKICAgICAgICBoZWlnaHQ6IDZweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiIzIyYzU1ZSIsIiMyMmM1NWUiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIGFuaW1hdGlvbjogcHVsc2UgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMgcHVsc2UgewogICAgICAgIDAlLCAxMDAlIHsgb3BhY2l0eTogMC41OyB0cmFuc2Zvcm06IHNjYWxlKDAuOSk7IH0KICAgICAgICA1MCUgeyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7IH0KICAgICAgfQoKICAgICAgLyogQWN0aXZpdHkgY29udGFpbmVyICovCiAgICAgIC5hY3Rpdml0eUNvbnRhaW5lciB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogNDhweDsKICAgICAgICBib3R0b206IDQ4cHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgcGFkZGluZzogOHB4IDA7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluOwogICAgICAgIHNjcm9sbGJhci13aWR0aDogdGhpbjsKICAgICAgICBzY3JvbGxiYXItY29sb3I6ICR7aC5iZFRoZW1lKCIjZDRkNGQ0IiwiIzMzMzMzMyIpfSB0cmFuc3BhcmVudDsKICAgICAgfQoKICAgICAgLmFjdGl2aXR5Q29udGFpbmVyOjotd2Via2l0LXNjcm9sbGJhciB7CiAgICAgICAgd2lkdGg6IDZweDsKICAgICAgfQoKICAgICAgLmFjdGl2aXR5Q29udGFpbmVyOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgIH0KCiAgICAgIC5hY3Rpdml0eUNvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZDRkNGQ0IiwiIzMzMzMzMyIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgIH0KCiAgICAgIC5hY3Rpdml0eUNvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjYTNhM2EzIiwiIzUyNTI1MiIpfTsKICAgICAgfQoKICAgICAgLmVtcHR5LXN0YXRlIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDQwcHggMTZweDsKICAgICAgICBjb2xvcjogdmFyKC0tYWN0aXZpdHlsb2ctZmctbXV0ZWQpOwogICAgICB9CgogICAgICAvKiBEYXRlIHNlcGFyYXRvciAtIHdhcm0gdGF1cGUgc3R5bGluZyAqLwogICAgICAuZGF0ZS1zZXBhcmF0b3IgewogICAgICAgIHBhZGRpbmc6IDEycHggMTJweCA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7CiAgICAgICAgY29sb3I6IHZhcigtLWFjdGl2aXR5bG9nLWFjY2VudCk7CiAgICAgICAgcG9zaXRpb246IHN0aWNreTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgei1pbmRleDogMTsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1hY3Rpdml0eWxvZy1iZyk7CiAgICAgIH0KCiAgICAgIC8qIEFjdGl2aXR5IGVudHJ5IC0gbW9kZXJuIHN0YWNrZWQgbGF5b3V0ICovCiAgICAgIC5hY3Rpdml0eWVudHJ5IHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgbWFyZ2luOiAycHggNHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzIGVhc2U7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgICBnYXA6IDEwcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDsKICAgICAgICBhbmltYXRpb246IGZhZGVJbiAwLjJzIGVhc2Utb3V0OwogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGZhZGVJbiB7CiAgICAgICAgZnJvbSB7CiAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpOwogICAgICAgIH0KICAgICAgICB0byB7CiAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLmFjdGl2aXR5ZW50cnk6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWFjdGl2aXR5bG9nLWhvdmVyKTsKICAgICAgfQoKICAgICAgLmFjdGl2aXR5LWljb24gewogICAgICAgIHdpZHRoOiAyOHB4OwogICAgICAgIGhlaWdodDogMjhweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wNCkiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDYpIil9OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6IHZhcigtLWFjdGl2aXR5bG9nLWZnLW11dGVkKTsKICAgICAgICBtYXJnaW4tdG9wOiAxcHg7CiAgICAgIH0KCiAgICAgIC5hY3Rpdml0eS1pY29uLmxvZ2luIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgzNCwgMTk3LCA5NCwgMC4wOCkiLCJyZ2JhKDM0LCAxOTcsIDk0LCAwLjEyKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxNmEzNGEiLCIjNGFkZTgwIil9OwogICAgICB9CgogICAgICAuYWN0aXZpdHktaWNvbi5sb2dvdXQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDIzOSwgNjgsIDY4LCAwLjA4KSIsInJnYmEoMjM5LCA2OCwgNjgsIDAuMTIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2RjMjYyNiIsIiNmODcxNzEiKX07CiAgICAgIH0KCiAgICAgIC5hY3Rpdml0eS1pY29uLnZpZXcgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC4wOCkiLCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC4xMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMjU2M2ViIiwiIzYwYTVmYSIpfTsKICAgICAgfQoKICAgICAgLmFjdGl2aXR5LWljb24uY3JlYXRlIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgxNjgsIDg1LCAyNDcsIDAuMDgpIiwicmdiYSgxNjgsIDg1LCAyNDcsIDAuMTIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzkzMzNlYSIsIiNjMDg0ZmMiKX07CiAgICAgIH0KCiAgICAgIC5hY3Rpdml0eS1pY29uLnVwZGF0ZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMjUxLCAxNDYsIDYwLCAwLjA4KSIsInJnYmEoMjUxLCAxNDYsIDYwLCAwLjEyKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNlYTU4MGMiLCIjZmI5MjNjIil9OwogICAgICB9CgogICAgICAuYWN0aXZpdHktaWNvbi5kZWxldGUgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDIzOSwgNjgsIDY4LCAwLjA4KSIsInJnYmEoMjM5LCA2OCwgNjgsIDAuMTIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2RjMjYyNiIsIiNmODcxNzEiKX07CiAgICAgIH0KCiAgICAgIC5hY3Rpdml0eS1pY29uLmN1c3RvbSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMTAwLCAxMTYsIDEzOSwgMC4wOCkiLCJyZ2JhKDEwMCwgMTE2LCAxMzksIDAuMTIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzQ3NTU2OSIsIiM5NGEzYjgiKX07CiAgICAgIH0KCiAgICAgIC5hY3Rpdml0eS1jb250ZW50IHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG1pbi13aWR0aDogMDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiAycHg7CiAgICAgIH0KCiAgICAgIC5hY3Rpdml0eS1oZWFkZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDZweDsKICAgICAgfQoKICAgICAgLmFjdGl2aXR5LXVzZXIgewogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1hY3Rpdml0eWxvZy1mZy1hY3RpdmUpOwogICAgICB9CgogICAgICAuYWN0aXZpdHktc2VwYXJhdG9yIHsKICAgICAgICBjb2xvcjogdmFyKC0tYWN0aXZpdHlsb2ctZmctbXV0ZWQpOwogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgfQoKICAgICAgLnRpbWVzdGFtcCB7CiAgICAgICAgY29sb3I6IHZhcigtLWFjdGl2aXR5bG9nLWZnLW11dGVkKTsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zOwogICAgICAgIGZvbnQtZmFtaWx5OiAnR2Vpc3QgTW9ubycsIG1vbm9zcGFjZTsKICAgICAgfQoKICAgICAgLmFjdGl2aXR5LW1lc3NhZ2UgewogICAgICAgIGNvbG9yOiB2YXIoLS1hY3Rpdml0eWxvZy1mZyk7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDsKICAgICAgfQoKICAgICAgLyogU2VhcmNoIGJveCAtIHJlZmluZWQgc3R5bGluZyAqLwogICAgICAuc2VhcmNoYm94IHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgYm90dG9tOiAwcHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiA0OHB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWFjdGl2aXR5bG9nLWJnKTsKICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYWN0aXZpdHlsb2ctYm9yZGVyKTsKICAgICAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAuc2VhcmNoLXdyYXBwZXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgIH0KCiAgICAgIC5zZWFyY2gtaWNvbiB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGxlZnQ6IDEwcHg7CiAgICAgICAgdG9wOiA1MCU7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgICAgIGNvbG9yOiB2YXIoLS1hY3Rpdml0eWxvZy1mZy1tdXRlZCk7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5zZWFyY2hib3ggaW5wdXQgewogICAgICAgIGNvbG9yOiB2YXIoLS1hY3Rpdml0eWxvZy1mZy1hY3RpdmUpOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMDMpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA0KSIpfTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wOCkiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBwYWRkaW5nOiAwIDEycHggMCAzNHB4OwogICAgICAgIGZvbnQtZmFtaWx5OiAnR2Vpc3QgU2FucycsIHNhbnMtc2VyaWY7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICB9CgogICAgICAuc2VhcmNoYm94IGlucHV0OjpwbGFjZWhvbGRlciB7CiAgICAgICAgY29sb3I6IHZhcigtLWFjdGl2aXR5bG9nLWZnLW11dGVkKTsKICAgICAgfQoKICAgICAgLnNlYXJjaGJveCBpbnB1dDpmb2N1cyB7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMTUpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSIpfTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjAyKSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNikiKX07CiAgICAgIH0KCiAgICAgIC5zZWFyY2gtd3JhcHBlcjpoYXMoaW5wdXQ6Zm9jdXMpIC5zZWFyY2gtaWNvbiB7CiAgICAgICAgY29sb3I6IHZhcigtLWFjdGl2aXR5bG9nLWZnKTsKICAgICAgfQogICAgYF07cmVuZGVyKCl7bGV0IG09dGhpcy5nZXRGaWx0ZXJlZEVudHJpZXMoKSxmPXRoaXMuZ3JvdXBFbnRyaWVzQnlEYXRlKG0pO3JldHVybiB3YAogICAgICAke3RhLnN0eWxlc30KICAgICAgPHN0eWxlPjwvc3R5bGU+CiAgICAgIDxkaXYgY2xhc3M9Im1haW5jb250YWluZXIiPgogICAgICAgIDxkaXYgY2xhc3M9InRvcGJhciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nIj5BY3Rpdml0eSBMb2c8L2Rpdj4KICAgICAgICAgICR7bS5sZW5ndGg+MD93YDxkaXYgY2xhc3M9ImxpdmUtaW5kaWNhdG9yIj48c3BhbiBjbGFzcz0iZG90Ij48L3NwYW4+TGl2ZTwvZGl2PmA6IiJ9CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYWN0aXZpdHlDb250YWluZXIiPgogICAgICAgICAgJHttLmxlbmd0aD09PTA/d2A8ZGl2IGNsYXNzPSJlbXB0eS1zdGF0ZSI+Tm8gYWN0aXZpdHkgZW50cmllczwvZGl2PmA6Zi5tYXAoeT0+d2AKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGF0ZS1zZXBhcmF0b3IiPiR7eS5sYWJlbH08L2Rpdj4KICAgICAgICAgICAgICAgICAgJHt5LmVudHJpZXMubWFwKE09PnRoaXMucmVuZGVyQWN0aXZpdHlFbnRyeShNKSl9CiAgICAgICAgICAgICAgICBgKX0KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWFyY2hib3giPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VhcmNoLXdyYXBwZXIiPgogICAgICAgICAgICA8ZGVlcy1pY29uIGNsYXNzPSJzZWFyY2gtaWNvbiIgLmljb249JHsibHVjaWRlOnNlYXJjaCJ9PjwvZGVlcy1pY29uPgogICAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgICB0eXBlPSJ0ZXh0IgogICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSJTZWFyY2ggYWN0aXZpdGllcywgdXNlcnMuLi4iCiAgICAgICAgICAgICAgLnZhbHVlPSR7dGhpcy5zZWFyY2hRdWVyeX0KICAgICAgICAgICAgICBAaW5wdXQ9JHt0aGlzLmhhbmRsZVNlYXJjaElucHV0fQogICAgICAgICAgICAvPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJBY3Rpdml0eUVudHJ5KG0pe2xldCBmPW0udGltZXN0YW1wfHxuZXcgRGF0ZSx5PXRoaXMuZm9ybWF0VGltZShmKSxNPW0uaWNvbk5hbWV8fHRoaXMuZ2V0SWNvbkZvclR5cGUobS50eXBlKTtyZXR1cm4gd2AKICAgICAgPGRpdgogICAgICAgIGNsYXNzPSJhY3Rpdml0eWVudHJ5IgogICAgICAgIEBjb250ZXh0bWVudT0ke3o9PnRoaXMuaGFuZGxlQ29udGV4dE1lbnUoeixtKX0KICAgICAgPgogICAgICAgIDxkaXYgY2xhc3M9ImFjdGl2aXR5LWljb24gJHttLnR5cGV9Ij4KICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHtNfT48L2RlZXMtaWNvbj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpdml0eS1jb250ZW50Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGl2aXR5LWhlYWRlciI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhY3Rpdml0eS11c2VyIj4ke20udXNlcn08L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhY3Rpdml0eS1zZXBhcmF0b3IiPsK3PC9zcGFuPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0idGltZXN0YW1wIj4ke3l9PC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpdml0eS1tZXNzYWdlIj4ke20ubWVzc2FnZX08L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfWFkZChtKXtsZXQgZj17Li4ubSxpZDptLmlkfHx0aGlzLmdlbmVyYXRlSWQoKSx0aW1lc3RhbXA6bS50aW1lc3RhbXB8fG5ldyBEYXRlfTt0aGlzLmVudHJpZXM9W2YsLi4udGhpcy5lbnRyaWVzXSx0aGlzLmVudHJpZXMkLm5leHQodGhpcy5lbnRyaWVzKX1hZGRNYW55KG0pe2xldCBmPW0ubWFwKHk9Pih7Li4ueSxpZDp5LmlkfHx0aGlzLmdlbmVyYXRlSWQoKSx0aW1lc3RhbXA6eS50aW1lc3RhbXB8fG5ldyBEYXRlfSkpO3RoaXMuZW50cmllcz1bLi4uZi5yZXZlcnNlKCksLi4udGhpcy5lbnRyaWVzXSx0aGlzLmVudHJpZXMkLm5leHQodGhpcy5lbnRyaWVzKX1jbGVhcigpe3RoaXMuZW50cmllcz1bXSx0aGlzLmVudHJpZXMkLm5leHQodGhpcy5lbnRyaWVzKX1nZXRFbnRyaWVzKCl7cmV0dXJuWy4uLnRoaXMuZW50cmllc119ZmlsdGVyKG0pe3JldHVybiB0aGlzLmVudHJpZXMuZmlsdGVyKGY9PiEobS51c2VyJiZmLnVzZXIhPT1tLnVzZXJ8fG0udHlwZSYmZi50eXBlIT09bS50eXBlKSl9c2VhcmNoKG0pe2xldCBmPW0udG9Mb3dlckNhc2UoKTtyZXR1cm4gdGhpcy5lbnRyaWVzLmZpbHRlcih5PT55Lm1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmKXx8eS51c2VyLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZikpfWdlbmVyYXRlSWQoKXtyZXR1cm5gYWN0aXZpdHktJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLDkpfWB9Z2V0RmlsdGVyZWRFbnRyaWVzKCl7bGV0IG09dGhpcy5lbnRyaWVzO2lmKHRoaXMuc2VhcmNoUXVlcnkpe2xldCBmPXRoaXMuc2VhcmNoUXVlcnkudG9Mb3dlckNhc2UoKTttPW0uZmlsdGVyKHk9PnkubWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGYpfHx5LnVzZXIudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmKSl9cmV0dXJuKHRoaXMuZmlsdGVyQ3JpdGVyaWEudXNlcnx8dGhpcy5maWx0ZXJDcml0ZXJpYS50eXBlKSYmKG09bS5maWx0ZXIoZj0+ISh0aGlzLmZpbHRlckNyaXRlcmlhLnVzZXImJmYudXNlciE9PXRoaXMuZmlsdGVyQ3JpdGVyaWEudXNlcnx8dGhpcy5maWx0ZXJDcml0ZXJpYS50eXBlJiZmLnR5cGUhPT10aGlzLmZpbHRlckNyaXRlcmlhLnR5cGUpKSksbX1ncm91cEVudHJpZXNCeURhdGUobSl7bGV0IGY9bmV3IE1hcCx5PW5ldyBEYXRlLE09bmV3IERhdGUoeSk7TS5zZXREYXRlKE0uZ2V0RGF0ZSgpLTEpO2ZvcihsZXQgeiBvZiBtKXtsZXQgTj16LnRpbWVzdGFtcHx8bmV3IERhdGUsQzt0aGlzLmlzU2FtZURheShOLHkpP0M9IlRvZGF5Ijp0aGlzLmlzU2FtZURheShOLE0pP0M9Illlc3RlcmRheSI6Qz1OLnRvTG9jYWxlRGF0ZVN0cmluZygiZW4tVVMiLHttb250aDoic2hvcnQiLGRheToibnVtZXJpYyIseWVhcjpOLmdldEZ1bGxZZWFyKCkhPT15LmdldEZ1bGxZZWFyKCk/Im51bWVyaWMiOnZvaWQgMH0pLGYuaGFzKEMpfHxmLnNldChDLFtdKSxmLmdldChDKS5wdXNoKHopfXJldHVybiBBcnJheS5mcm9tKGYuZW50cmllcygpKS5tYXAoKFt6LE5dKT0+KHtsYWJlbDp6LGVudHJpZXM6Tn0pKX1pc1NhbWVEYXkobSxmKXtyZXR1cm4gbS5nZXRGdWxsWWVhcigpPT09Zi5nZXRGdWxsWWVhcigpJiZtLmdldE1vbnRoKCk9PT1mLmdldE1vbnRoKCkmJm0uZ2V0RGF0ZSgpPT09Zi5nZXREYXRlKCl9Zm9ybWF0VGltZShtKXtyZXR1cm4gbS50b0xvY2FsZVRpbWVTdHJpbmcoImVuLVVTIix7aG91cjoiMi1kaWdpdCIsbWludXRlOiIyLWRpZ2l0Iixob3VyMTI6ITF9KX1nZXRJY29uRm9yVHlwZShtKXtsZXQgZj17bG9naW46Imx1Y2lkZTpsb2dJbiIsbG9nb3V0OiJsdWNpZGU6bG9nT3V0Iix2aWV3OiJsdWNpZGU6ZXllIixjcmVhdGU6Imx1Y2lkZTpwbHVzIix1cGRhdGU6Imx1Y2lkZTplZGl0IixkZWxldGU6Imx1Y2lkZTp0cmFzaDIiLGN1c3RvbToibHVjaWRlOmFjdGl2aXR5In07cmV0dXJuIGZbbV18fGYuY3VzdG9tfWhhbmRsZVNlYXJjaElucHV0KG0pe2xldCBmPW0udGFyZ2V0O3RoaXMuc2VhcmNoUXVlcnk9Zi52YWx1ZX1oYW5kbGVDb250ZXh0TWVudShtLGYpe20ucHJldmVudERlZmF1bHQoKSwkYS5vcGVuQ29udGV4dE1lbnVXaXRoT3B0aW9ucyhtLFt7bmFtZToiQ29weSBhY3Rpdml0eSIsaWNvbk5hbWU6Imx1Y2lkZTpjb3B5IixhY3Rpb246aShhc3luYygpPT57YXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoYCR7Zi51c2VyfSAke2YubWVzc2FnZX1gKX0sImFjdGlvbiIpfSx7bmFtZToiRmlsdGVyIGJ5IHVzZXIiLGljb25OYW1lOiJsdWNpZGU6dXNlciIsYWN0aW9uOmkoYXN5bmMoKT0+e3RoaXMuZmlsdGVyQ3JpdGVyaWE9e3VzZXI6Zi51c2VyfX0sImFjdGlvbiIpfSx7bmFtZToiRmlsdGVyIGJ5IHR5cGUiLGljb25OYW1lOiJsdWNpZGU6ZmlsdGVyIixhY3Rpb246aShhc3luYygpPT57dGhpcy5maWx0ZXJDcml0ZXJpYT17dHlwZTpmLnR5cGV9fSwiYWN0aW9uIil9LHtuYW1lOiJDbGVhciBmaWx0ZXJzIixpY29uTmFtZToibHVjaWRlOngiLGFjdGlvbjppKGFzeW5jKCk9Pnt0aGlzLmZpbHRlckNyaXRlcmlhPXt9LHRoaXMuc2VhcmNoUXVlcnk9IiJ9LCJhY3Rpb24iKX1dKX1zdGF0aWN7RmcoYSx0KX19O3JldHVybiB4PWF9KSgpfSk7dmFyIEE5YT1nKCgpPT57Q290KCl9KTt2YXIgTjlhPWcoKCk9Pnt9KTt2YXIgUjlhPWcoKCk9Pnt2bygpfSk7dmFyIE85YT1nKCgpPT57fSk7dmFyIEY5YT1nKCgpPT57fSk7dmFyIEI5YT1nKCgpPT57fSk7dmFyIGE0PWcoKCk9PntOOWEoKTtSOWEoKTtPOWEoKTtGOWEoKTtCOWEoKX0pO3ZhciBIOWEscTlhPWcoKCk9PntwZSgpO0l0KCk7VG90KCk7SDlhPWkoKCk9PntsZXQgcz1be25hbWU6IkZpbGUiLGFjdGlvbjppKGFzeW5jKCk9Pnt9LCJhY3Rpb24iKSxzdWJtZW51Olt7bmFtZToiTmV3IEZpbGUiLHNob3J0Y3V0OiJDbWQrTiIsaWNvbk5hbWU6ImZpbGUtcGx1cyIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIk5ldyBmaWxlIiksImFjdGlvbiIpfSx7bmFtZToiT3Blbi4uLiIsc2hvcnRjdXQ6IkNtZCtPIixpY29uTmFtZToiZm9sZGVyLW9wZW4iLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJPcGVuIiksImFjdGlvbiIpfSx7bmFtZToiT3BlbiBSZWNlbnQiLGFjdGlvbjppKGFzeW5jKCk9Pnt9LCJhY3Rpb24iKSxzdWJtZW51Olt7bmFtZToicHJvamVjdC1hbHBoYS50cyIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIk9wZW4gcmVjZW50IDEiKSwiYWN0aW9uIil9LHtuYW1lOiJjb25maWcuanNvbiIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIk9wZW4gcmVjZW50IDIiKSwiYWN0aW9uIil9LHtuYW1lOiJyZWFkbWUubWQiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJPcGVuIHJlY2VudCAzIiksImFjdGlvbiIpfV19LHtkaXZpZGVyOiEwfSx7bmFtZToiU2F2ZSIsc2hvcnRjdXQ6IkNtZCtTIixpY29uTmFtZToic2F2ZSIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIlNhdmUiKSwiYWN0aW9uIil9LHtuYW1lOiJTYXZlIEFzLi4uIixzaG9ydGN1dDoiQ21kK1NoaWZ0K1MiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJTYXZlIGFzIiksImFjdGlvbiIpLGRpc2FibGVkOiEwfSx7ZGl2aWRlcjohMH0se25hbWU6IkV4aXQiLHNob3J0Y3V0OiJDbWQrUSIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIkV4aXQiKSwiYWN0aW9uIil9XX0se25hbWU6IkVkaXQiLGFjdGlvbjppKGFzeW5jKCk9Pnt9LCJhY3Rpb24iKSxzdWJtZW51Olt7bmFtZToiVW5kbyIsc2hvcnRjdXQ6IkNtZCtaIixpY29uTmFtZToidW5kbyIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIlVuZG8iKSwiYWN0aW9uIil9LHtuYW1lOiJSZWRvIixzaG9ydGN1dDoiQ21kK1NoaWZ0K1oiLGljb25OYW1lOiJyZWRvIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiUmVkbyIpLCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJDdXQiLHNob3J0Y3V0OiJDbWQrWCIsaWNvbk5hbWU6InNjaXNzb3JzIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiQ3V0IiksImFjdGlvbiIpfSx7bmFtZToiQ29weSIsc2hvcnRjdXQ6IkNtZCtDIixpY29uTmFtZToiY29weSIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIkNvcHkiKSwiYWN0aW9uIil9LHtuYW1lOiJQYXN0ZSIsc2hvcnRjdXQ6IkNtZCtWIixpY29uTmFtZToiY2xpcGJvYXJkIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiUGFzdGUiKSwiYWN0aW9uIil9LHtkaXZpZGVyOiEwfSx7bmFtZToiRmluZCIsc2hvcnRjdXQ6IkNtZCtGIixpY29uTmFtZToic2VhcmNoIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiRmluZCIpLCJhY3Rpb24iKX0se25hbWU6IlJlcGxhY2UiLHNob3J0Y3V0OiJDbWQrSCIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIlJlcGxhY2UiKSwiYWN0aW9uIil9XX0se25hbWU6IlZpZXciLGFjdGlvbjppKGFzeW5jKCk9Pnt9LCJhY3Rpb24iKSxzdWJtZW51Olt7bmFtZToiVG9nZ2xlIEZ1bGxzY3JlZW4iLHNob3J0Y3V0OiJGMTEiLGljb25OYW1lOiJleHBhbmQiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJGdWxsc2NyZWVuIiksImFjdGlvbiIpfSx7bmFtZToiWm9vbSBJbiIsc2hvcnRjdXQ6IkNtZCsrIixpY29uTmFtZToiem9vbS1pbiIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIlpvb20gaW4iKSwiYWN0aW9uIil9LHtuYW1lOiJab29tIE91dCIsc2hvcnRjdXQ6IkNtZCstIixpY29uTmFtZToiem9vbS1vdXQiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJab29tIG91dCIpLCJhY3Rpb24iKX0se25hbWU6IlJlc2V0IFpvb20iLHNob3J0Y3V0OiJDbWQrMCIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIlJlc2V0IHpvb20iKSwiYWN0aW9uIil9LHtkaXZpZGVyOiEwfSx7bmFtZToiVG9nZ2xlIFNpZGViYXIiLHNob3J0Y3V0OiJDbWQrQiIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIlRvZ2dsZSBzaWRlYmFyIiksImFjdGlvbiIpfSx7bmFtZToiVG9nZ2xlIFRlcm1pbmFsIixzaG9ydGN1dDoiQ21kK0oiLGljb25OYW1lOiJ0ZXJtaW5hbCIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIlRvZ2dsZSB0ZXJtaW5hbCIpLCJhY3Rpb24iKX1dfSx7bmFtZToiSGVscCIsYWN0aW9uOmkoYXN5bmMoKT0+e30sImFjdGlvbiIpLHN1Ym1lbnU6W3tuYW1lOiJEb2N1bWVudGF0aW9uIixpY29uTmFtZToiYm9vayIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIkRvY3VtZW50YXRpb24iKSwiYWN0aW9uIil9LHtuYW1lOiJSZWxlYXNlIE5vdGVzIixpY29uTmFtZToiZmlsZS10ZXh0IixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiUmVsZWFzZSBub3RlcyIpLCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJSZXBvcnQgSXNzdWUiLGljb25OYW1lOiJidWciLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJSZXBvcnQgaXNzdWUiKSwiYWN0aW9uIil9LHtuYW1lOiJBYm91dCIsaWNvbk5hbWU6ImluZm8iLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJBYm91dCIpLCJhY3Rpb24iKX1dfV07cmV0dXJuIHdgCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBlPT57bGV0IHQ9ZS5xdWVyeVNlbGVjdG9yKCIjYXBwYmFyIiksYT1lLnF1ZXJ5U2VsZWN0b3JBbGwoIi5zdGF0dXMtdG9nZ2xlIGRlZXMtYnV0dG9uIik7YVswXS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9Pnt0LnVzZXI9ey4uLnQudXNlcixzdGF0dXM6Im9ubGluZSJ9fSksYVsxXS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9Pnt0LnVzZXI9ey4uLnQudXNlcixzdGF0dXM6ImJ1c3kifX0pLGFbMl0uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57dC51c2VyPXsuLi50LnVzZXIsc3RhdHVzOiJhd2F5In19KSxhWzNdLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e3QudXNlcj17Li4udC51c2VyLHN0YXR1czoib2ZmbGluZSJ9fSksZS5xdWVyeVNlbGVjdG9yKCIud2luZG93LWNvbnRyb2xzLXRvZ2dsZSBkZWVzLWJ1dHRvbiIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e3Quc2hvd1dpbmRvd0NvbnRyb2xzPSF0LnNob3dXaW5kb3dDb250cm9sc30pO2xldCBuPWUucXVlcnlTZWxlY3RvckFsbCgiLmJyZWFkY3J1bWItdG9nZ2xlIGRlZXMtYnV0dG9uIik7blswXS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9Pnt0LmJyZWFkY3J1bWJzPSJIb21lID4gRG9jdW1lbnRzID4gUHJvamVjdHMgPiBNeUFwcCA+IHNyYyA+IGluZGV4LnRzIn0pLG5bMV0uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57dC5icmVhZGNydW1icz0iRGFzaGJvYXJkIn0pfX0+CiAgICAgIDxzdHlsZT4KICAgICAgICAke0pgCiAgICAgICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgICAgIGhlaWdodDogNjAwcHg7CiAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgIGJhY2tncm91bmQ6ICMxYTFhMWE7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmNvbnRlbnQgewogICAgICAgICAgZmxleDogMTsKICAgICAgICAgIHBhZGRpbmc6IDIwcHg7CiAgICAgICAgICBjb2xvcjogI2NjYzsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmNvbnRyb2xzIHsKICAgICAgICAgIHBhZGRpbmc6IDIwcHg7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuY29udHJvbC1ncm91cCB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgIGdhcDogOHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuY29udHJvbC1ncm91cCBsYWJlbCB7CiAgICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgICBjb2xvcjogIzg4ODsKICAgICAgICB9CiAgICAgIGB9CiAgICA8L3N0eWxlPgogICAgCiAgICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICAgIDxkZWVzLWFwcHVpLWFwcGJhcgogICAgICAgIGlkPSJhcHBiYXIiCiAgICAgICAgLm1lbnVJdGVtcz0ke3N9CiAgICAgICAgLmJyZWFkY3J1bWJzPSR7IlByb2plY3QgPiBzcmMgPiBjb21wb25lbnRzID4gQXBwQmFyLnRzIn0KICAgICAgICAuYnJlYWRjcnVtYlNlcGFyYXRvcj0keyIgPiAifQogICAgICAgIC5zaG93V2luZG93Q29udHJvbHM9JHshMH0KICAgICAgICAuc2hvd1NlYXJjaD0keyEwfQogICAgICAgIC50aGVtZT0keyJkYXJrIn0KICAgICAgICAudXNlcj0ke3tuYW1lOiJKb2huIERvZSIsc3RhdHVzOiJvbmxpbmUifX0KICAgICAgICBAbWVudS1zZWxlY3Q9JHtlPT5jb25zb2xlLmxvZygiTWVudSBzZWxlY3RlZDoiLGUuZGV0YWlsLml0ZW0pfQogICAgICAgIEBicmVhZGNydW1iLW5hdmlnYXRlPSR7ZT0+Y29uc29sZS5sb2coIkJyZWFkY3J1bWIgY2xpY2tlZDoiLGUuZGV0YWlsKX0KICAgICAgICBAc2VhcmNoLWNsaWNrPSR7KCk9PmNvbnNvbGUubG9nKCJTZWFyY2ggY2xpY2tlZCIpfQogICAgICAgIEB1c2VyLW1lbnUtb3Blbj0keygpPT5jb25zb2xlLmxvZygiVXNlciBtZW51IGNsaWNrZWQiKX0KICAgICAgPjwvZGVlcy1hcHB1aS1hcHBiYXI+CiAgICAgIAogICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KICAgICAgICA8aDI+QXBwIEJhciBEZW1vPC9oMj4KICAgICAgICA8cD5UaGlzIGRlbW8gc2hvd3MgdmFyaW91cyBmZWF0dXJlcyBvZiB0aGUgYXBwIGJhciBjb21wb25lbnQ6PC9wPgogICAgICAgIDx1bD4KICAgICAgICAgIDxsaT5EeW5hbWljIG1lbnUgaXRlbXMgd2l0aCBpY29ucywgc2hvcnRjdXRzLCBhbmQgc3VibWVudXM8L2xpPgogICAgICAgICAgPGxpPkJyZWFkY3J1bWIgbmF2aWdhdGlvbjwvbGk+CiAgICAgICAgICA8bGk+VXNlciBhY2NvdW50IHNlY3Rpb24gd2l0aCBzdGF0dXMgaW5kaWNhdG9yPC9saT4KICAgICAgICAgIDxsaT5TZWFyY2ggaWNvbjwvbGk+CiAgICAgICAgICA8bGk+V2luZG93IGNvbnRyb2xzIChwbGF0Zm9ybS1zcGVjaWZpYyk8L2xpPgogICAgICAgICAgPGxpPkRhcmsvbGlnaHQgdGhlbWUgc3VwcG9ydDwvbGk+CiAgICAgICAgICA8bGk+S2V5Ym9hcmQgbmF2aWdhdGlvbiAoVGFiLCBFbnRlciwgRXNjYXBlKTwvbGk+CiAgICAgICAgICA8bGk+Q3VzdG9tIGV2ZW50cyBmb3IgYWxsIGludGVyYWN0aW9uczwvbGk+CiAgICAgICAgPC91bD4KICAgICAgPC9kaXY+CiAgICAgIAogICAgICA8ZGl2IGNsYXNzPSJjb250cm9scyI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbC1ncm91cCI+CiAgICAgICAgICA8bGFiZWw+VGhlbWU8L2xhYmVsPgogICAgICAgICAgPGRlZXMtYnV0dG9uLWdyb3VwIGNsYXNzPSJ0aGVtZS10b2dnbGUiPgogICAgICAgICAgICA8ZGVlcy1idXR0b24+RGFyazwvZGVlcy1idXR0b24+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbj5MaWdodDwvZGVlcy1idXR0b24+CiAgICAgICAgICA8L2RlZXMtYnV0dG9uLWdyb3VwPgogICAgICAgIDwvZGl2PgogICAgICAgIAogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtZ3JvdXAiPgogICAgICAgICAgPGxhYmVsPlVzZXIgU3RhdHVzPC9sYWJlbD4KICAgICAgICAgIDxkZWVzLWJ1dHRvbi1ncm91cCBjbGFzcz0ic3RhdHVzLXRvZ2dsZSI+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbj5PbmxpbmU8L2RlZXMtYnV0dG9uPgogICAgICAgICAgICA8ZGVlcy1idXR0b24+QnVzeTwvZGVlcy1idXR0b24+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbj5Bd2F5PC9kZWVzLWJ1dHRvbj4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uPk9mZmxpbmU8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPC9kZWVzLWJ1dHRvbi1ncm91cD4KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9sLWdyb3VwIj4KICAgICAgICAgIDxsYWJlbD5XaW5kb3cgQ29udHJvbHM8L2xhYmVsPgogICAgICAgICAgPGRlZXMtYnV0dG9uLWdyb3VwIGNsYXNzPSJ3aW5kb3ctY29udHJvbHMtdG9nZ2xlIj4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uPlRvZ2dsZTwvZGVlcy1idXR0b24+CiAgICAgICAgICA8L2RlZXMtYnV0dG9uLWdyb3VwPgogICAgICAgIDwvZGl2PgogICAgICAgIAogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtZ3JvdXAiPgogICAgICAgICAgPGxhYmVsPkJyZWFkY3J1bWJzPC9sYWJlbD4KICAgICAgICAgIDxkZWVzLWJ1dHRvbi1ncm91cCBjbGFzcz0iYnJlYWRjcnVtYi10b2dnbGUiPgogICAgICAgICAgICA8ZGVlcy1idXR0b24+TG9uZyBQYXRoPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uPlNob3J0IFBhdGg8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPC9kZWVzLWJ1dHRvbi1ncm91cD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KICBgfSwiZGVtb0Z1bmMiKX0pO3ZhciBqOWEsVjlhPWcoKCk9PntwZSgpO2o5YT1baC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICAvKiBDU1MgVmFyaWFibGVzIGZvciB0aGVtaW5nICovCiAgICAgICAgLS1hcHBiYXItaGVpZ2h0OiA0MHB4OwogICAgICAgIC0tYXBwYmFyLWZvbnQtc2l6ZTogMTJweDsKICAgICAgICAKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiB2YXIoLS1hcHBiYXItaGVpZ2h0KTsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1iZy1wcmltYXJ5KTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwMDAwMDA4MCIsIiNmZmZmZmY4MCIpfTsKICAgICAgICBmb250LXNpemU6IHZhcigtLWFwcGJhci1mb250LXNpemUpOwogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmciBhdXRvOwogICAgICAgIC13ZWJraXQtYXBwLXJlZ2lvbjogZHJhZzsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgfQoKICAgICAgLm1lbnVzIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA0cHg7CiAgICAgICAgcGFkZGluZzogMCA4cHg7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICB9CgogICAgICAubWVudUl0ZW0gewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBsaW5lLWhlaWdodDogMjRweDsKICAgICAgICBwYWRkaW5nOiAwcHggMTJweDsKICAgICAgICBtYXJnaW46IDhweCAwcHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIC13ZWJraXQtYXBwLXJlZ2lvbjogbm8tZHJhZzsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlOwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDRweDsKICAgICAgfQoKICAgICAgLyogT3B0aW9uYWw6IFN0eWxlIGZvciBtZW51IGl0ZW1zIHdpdGggaWNvbnMgKG5vdCB0eXBpY2FsbHkgdXNlZCBmb3IgdG9wLWxldmVsIGl0ZW1zKSAqLwogICAgICAubWVudUl0ZW0gZGVlcy1pY29uIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgb3BhY2l0eTogMC44OwogICAgICB9CgogICAgICAubWVudUl0ZW06aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjMDAwMDAwMTAiLCIjZmZmZmZmMjAiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDAwMDAwIiwiI2ZmZmZmZiIpfTsKICAgICAgfQoKICAgICAgLm1lbnVJdGVtLmFjdGl2ZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiMwMDAwMDAyMCIsIiNmZmZmZmYzMCIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwMDAwMDAiLCIjZmZmZmZmIil9OwogICAgICB9CgogICAgICAubWVudUl0ZW1bZGlzYWJsZWRdIHsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgLm1lbnVJdGVtOmZvY3VzLXZpc2libGUgewogICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCAke2guYmRUaGVtZSgiIzAwMDAwMDgwIiwiI2ZmZmZmZjgwIil9OwogICAgICB9CgoKICAgICAgLyogRHJvcGRvd24gc3R5bGVzICovCiAgICAgIC5kcm9wZG93biB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMTAwJTsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIG1pbi13aWR0aDogMjAwcHg7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1iZy1wcmltYXJ5KTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgYm94LXNoYWRvdzogJHtoLmJkVGhlbWUoIjAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjE1KSIsIjAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjMpIil9OwogICAgICAgIG1hcmdpbi10b3A6IDRweDsKICAgICAgICB6LWluZGV4OiAxMDAwOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMsIHRyYW5zZm9ybSAwLjJzOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICAuZHJvcGRvd24ub3BlbiB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87CiAgICAgIH0KCiAgICAgIC5kcm9wZG93bi1pdGVtIHsKICAgICAgICBwYWRkaW5nOiA4cHggMTZweDsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xczsKICAgICAgfQoKICAgICAgLmRyb3Bkb3duLWl0ZW06aG92ZXIsCiAgICAgIC5kcm9wZG93bi1pdGVtLmZvY3VzZWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjMDAwMDAwMTAiLCIjZmZmZmZmMjAiKX07CiAgICAgIH0KCiAgICAgIC5kcm9wZG93bi1kaXZpZGVyIHsKICAgICAgICBoZWlnaHQ6IDFweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgICBtYXJnaW46IDRweCAwOwogICAgICB9CgogICAgICAuZHJvcGRvd24taXRlbVtkaXNhYmxlZF0gewogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICAuZHJvcGRvd24taXRlbSAuc2hvcnRjdXQgewogICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICAgIG9wYWNpdHk6IDAuNjsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgIH0KCiAgICAgIC8qIEJyZWFkY3J1bWJzICovCiAgICAgIC5icmVhZGNydW1icyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBwYWRkaW5nOiAwIDE2cHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CgogICAgICAuYnJlYWRjcnVtYi1pdGVtIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwMDAwMDA4MCIsIiNmZmZmZmY4MCIpfTsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgMC4yczsKICAgICAgfQoKICAgICAgLmJyZWFkY3J1bWItaXRlbTpob3ZlciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDAwMDAwIiwiI2ZmZmZmZiIpfTsKICAgICAgfQoKICAgICAgLmJyZWFkY3J1bWItc2VwYXJhdG9yIHsKICAgICAgICBtYXJnaW46IDAgOHB4OwogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgfQoKICAgICAgLyogQWNjb3VudCBzZWN0aW9uICovCiAgICAgIC5hY2NvdW50IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICBwYWRkaW5nOiAwIDE2cHg7CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICB9CgogICAgICAuc2VhcmNoLWljb24gewogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgICBvcGFjaXR5OiAwLjc7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzOwogICAgICB9CgogICAgICAuc2VhcmNoLWljb246aG92ZXIgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC51c2VyLWluZm8gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgICAgcGFkZGluZzogNHB4IDhweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzOwogICAgICB9CgogICAgICAudXNlci1pbmZvOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiIzAwMDAwMDEwIiwiI2ZmZmZmZjIwIil9OwogICAgICB9CgogICAgICAudXNlci1hdmF0YXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogMjRweDsKICAgICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjMDAwMDAwMjAiLCIjZmZmZmZmMzAiKX07CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgfQoKICAgICAgLnVzZXItYXZhdGFyIGltZyB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjsKICAgICAgfQoKICAgICAgLnVzZXItc3RhdHVzIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgYm90dG9tOiAtMnB4OwogICAgICAgIHJpZ2h0OiAtMnB4OwogICAgICAgIHdpZHRoOiA4cHg7CiAgICAgICAgaGVpZ2h0OiA4cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYmctcHJpbWFyeSk7CiAgICAgIH0KCiAgICAgIC51c2VyLXN0YXR1cy5vbmxpbmUgewogICAgICAgIGJhY2tncm91bmQ6ICM0Y2FmNTA7CiAgICAgIH0KCiAgICAgIC51c2VyLXN0YXR1cy5vZmZsaW5lIHsKICAgICAgICBiYWNrZ3JvdW5kOiAjNzU3NTc1OwogICAgICB9CgogICAgICAudXNlci1zdGF0dXMuYnVzeSB7CiAgICAgICAgYmFja2dyb3VuZDogI2Y0NDMzNjsKICAgICAgfQoKICAgICAgLnVzZXItc3RhdHVzLmF3YXkgewogICAgICAgIGJhY2tncm91bmQ6ICNmZjk4MDA7CiAgICAgIH0KCiAgICAgIC8qIEFjdGl2aXR5IGxvZyB0b2dnbGUgYnV0dG9uICovCiAgICAgIC5hY3Rpdml0eS10b2dnbGUgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDJweDsKICAgICAgICBoZWlnaHQ6IDI4cHg7CiAgICAgICAgcGFkZGluZzogMCA4cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgICAtd2Via2l0LWFwcC1yZWdpb246IG5vLWRyYWc7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDAwMDAwNjAiLCIjZmZmZmZmNjAiKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4xKSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSIpfTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgfQoKICAgICAgLmFjdGl2aXR5LXRvZ2dsZTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiMwMDAwMDAxMCIsIiNmZmZmZmYxNSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwMDAwMDAiLCIjZmZmZmZmIil9OwogICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgIH0KCiAgICAgIC5hY3Rpdml0eS10b2dnbGUuYWN0aXZlIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiIzAwMDAwMDE1IiwiI2ZmZmZmZjIwIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzAwMDAwMCIsIiNmZmZmZmYiKX07CiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgfQoKICAgICAgLmFjdGl2aXR5LXRvZ2dsZSBkZWVzLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgfQoKICAgICAgLmFjdGl2aXR5LWJhZGdlIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDRweDsKICAgICAgICBtaW4td2lkdGg6IDE2cHg7CiAgICAgICAgaGVpZ2h0OiAxNnB4OwogICAgICAgIHBhZGRpbmc6IDAgNHB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjNTI1MjUyIiwiIzUyNTI1MiIpfTsKICAgICAgICBjb2xvcjogI2ZhZmFmYTsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgICB9CiAgICBgXX0pO3ZhciBVOWEsVzlhPWcoKCk9PntwZSgpO1U5YT1pKHM9PndgCiAgICAgICAgPGRpdiBjbGFzcz0ibWVudXMiPgogICAgICAgICAgJHtzLnNob3dXaW5kb3dDb250cm9scz93YDxkZWVzLXdpbmRvd2NvbnRyb2xzPjwvZGVlcy13aW5kb3djb250cm9scz5gOiIifQogICAgICAgICAgJHtzLnJlbmRlck1lbnVJdGVtcygpfQogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImJyZWFkY3J1bWJzIj4KICAgICAgICAgICR7cy5yZW5kZXJCcmVhZGNydW1icygpfQogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImFjY291bnQiPgogICAgICAgICAgJHtzLnJlbmRlckFjY291bnRTZWN0aW9uKCl9CiAgICAgICAgPC9kaXY+CiAgICAgIGAsInJlbmRlckFwcHVpQXBwYmFyIil9KTt2YXIgJG90LHpRLCRKYSxEb3Q9ZygoKT0+e3BlKCk7aHQoKTskb3Q9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LHpRPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSwkSmE9KCgpPT57bGV0IHM9W25lKCJkZWVzLXdpbmRvd2NvbnRyb2xzIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W107dmFyIGM9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNXaW5kb3dDb250cm9scyIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBiPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3JlZmxlY3Q6ITB9KV0scD1bTCh7cmVmbGVjdDohMH0pXSwkb3QodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0eXBlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHY9PiJ0eXBlImluIHYsImhhcyIpLGdldDppKHY9PnYudHlwZSwiZ2V0Iiksc2V0OmkoKHYseCk9Pnt2LnR5cGU9eH0sInNldCIpfSxtZXRhZGF0YTpifSxvLGwpLCRvdCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InBvc2l0aW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHY9PiJwb3NpdGlvbiJpbiB2LCJoYXMiKSxnZXQ6aSh2PT52LnBvc2l0aW9uLCJnZXQiKSxzZXQ6aSgodix4KT0+e3YucG9zaXRpb249eH0sInNldCIpfSxtZXRhZGF0YTpifSxkLHUpLCRvdChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpifSxudWxsLHQpLGM9YT1lLnZhbHVlLGImJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pfXN0YXRpYyBkZW1vPWkoKCk9PndgPGRlZXMtd2luZG93Y29udHJvbHM+PC9kZWVzLXdpbmRvd2NvbnRyb2xzPmAsImRlbW8iKTtzdGF0aWMgZGVtb0dyb3Vwcz1bIlV0aWxpdHkiXTsjZT16USh0aGlzLG8sIm1hYyIpO2dldCB0eXBlKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHR5cGUoYil7dGhpcy4jZT1ifSN0PSh6USh0aGlzLGwpLHpRKHRoaXMsZCwibGVmdCIpKTtnZXQgcG9zaXRpb24oKXtyZXR1cm4gdGhpcy4jdH1zZXQgcG9zaXRpb24oYil7dGhpcy4jdD1ifXN0YXRpYyBzdHlsZXM9W3FlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICAvKiBUT0RPOiBNaWdyYXRlIGhhcmRjb2RlZCB2YWx1ZXMgdG8gLS1kZWVzLSogQ1NTIHZhcmlhYmxlcyAqLwogICAgICA6aG9zdCB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAxNnB4OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDE2cHg7CiAgICAgIH0KCiAgICAgIC53aW5kb3dDb250cm9scyB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC53aW5kb3dDb250cm9scyBkaXYgewogICAgICAgIHdpZHRoOiAxMnB4OwogICAgICAgIGhlaWdodDogMTJweDsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIG1hcmdpbjogMHB4OwogICAgICAgIHBhZGRpbmc6IDBweDsKICAgICAgICBiYWNrZ3JvdW5kOiAjMjIyMjIyOwogICAgICB9CgogICAgICAud2luZG93Q29udHJvbHMgZGl2LmNsb3NlIHsKICAgICAgICBiYWNrZ3JvdW5kOiAjZmY1ZjU3OwogICAgICAgIG1hcmdpbi1yaWdodDogMTJweDsKICAgICAgfQoKICAgICAgLndpbmRvd0NvbnRyb2xzIGRpdi50b0RvY2sgewogICAgICAgIGJhY2tncm91bmQ6ICNmZmJkMmU7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMnB4OwogICAgICB9CgogICAgICAud2luZG93Q29udHJvbHMgZGl2Lm1pbk1heCB7CiAgICAgICAgYmFja2dyb3VuZDogIzI3YzkzZjsKICAgICAgfQoKICAgICAgLndpbmRvd0NvbnRyb2xzIGRpdjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogIzMzMzMzMzsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgICR7dGhpcy50eXBlPT09Im1hYyImJnRoaXMucG9zaXRpb249PT0ibGVmdCJ8fCh0aGlzLnR5cGU9PT0ibGludXgifHx0aGlzLnR5cGU9PT0id2luZG93cyIpJiZ0aGlzLnBvc2l0aW9uPT09InJpZ2h0Ij93YAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3aW5kb3dDb250cm9scyI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2xvc2UiPjwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvRG9jayI+PC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWluTWF4Ij48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgOndgYH0KICAgIGB9Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHpRKHRoaXMsdSl9c3RhdGlje3pRKGEsdCl9fTtyZXR1cm4gYz1hfSkoKX0pO3ZhciBDUSxFdSxESmEsTG90PWcoKCk9Pnt2bygpO0duKCk7cGUoKTtodCgpO0NRPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxFdT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sREphPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1hcHB1aS1wcm9maWxlZHJvcGRvd24iKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXTt2YXIgeT1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0FwcHVpUHJvZmlsZURyb3Bkb3duIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IE09dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpPYmplY3R9KV0scD1bTCh7dHlwZTpBcnJheX0pXSxjPVtMKHt0eXBlOkJvb2xlYW4scmVmbGVjdDohMH0pXSx4PVtMKHt0eXBlOlN0cmluZ30pXSxDUSh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InVzZXIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoej0+InVzZXIiaW4geiwiaGFzIiksZ2V0Omkoej0+ei51c2VyLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3oudXNlcj1OfSwic2V0Iil9LG1ldGFkYXRhOk19LG8sbCksQ1EodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtZW51SXRlbXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoej0+Im1lbnVJdGVtcyJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56Lm1lbnVJdGVtcywiZ2V0Iiksc2V0OmkoKHosTik9Pnt6Lm1lbnVJdGVtcz1OfSwic2V0Iil9LG1ldGFkYXRhOk19LGQsdSksQ1EodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpc09wZW4iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoej0+ImlzT3BlbiJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LmlzT3BlbiwiZ2V0Iiksc2V0OmkoKHosTik9Pnt6LmlzT3Blbj1OfSwic2V0Iil9LG1ldGFkYXRhOk19LGIsdiksQ1EodGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJwb3NpdGlvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4icG9zaXRpb24iaW4geiwiaGFzIiksZ2V0Omkoej0+ei5wb3NpdGlvbiwiZ2V0Iiksc2V0OmkoKHosTik9Pnt6LnBvc2l0aW9uPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sbSxmKSxDUShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpNfSxudWxsLHQpLHk9YT1lLnZhbHVlLE0mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6TX0pfXN0YXRpYyBkZW1vPWkoKCk9PndgCiAgICA8ZGVlcy1hcHB1aS1wcm9maWxlZHJvcGRvd24KICAgICAgLnVzZXI9JHt7bmFtZToiSm9obiBEb2UiLGVtYWlsOiJqb2huLmRvZUBleGFtcGxlLmNvbSIsYXZhdGFyOiJodHRwczovL3JhbmRvbXVzZXIubWUvYXBpL3BvcnRyYWl0cy9tZW4vMS5qcGciLHN0YXR1czoib25saW5lIn19CiAgICAgIC5tZW51SXRlbXM9JHtbe25hbWU6IlByb2ZpbGUgU2V0dGluZ3MiLGljb25OYW1lOiJ1c2VyIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiUHJvZmlsZSIpLCJhY3Rpb24iKX0se25hbWU6IkFjY291bnQiLGljb25OYW1lOiJzZXR0aW5ncyIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIkFjY291bnQiKSwiYWN0aW9uIil9LHtkaXZpZGVyOiEwfSx7bmFtZToiSGVscCAmIFN1cHBvcnQiLGljb25OYW1lOiJoZWxwQ2lyY2xlIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiSGVscCIpLCJhY3Rpb24iKX0se25hbWU6IktleWJvYXJkIFNob3J0Y3V0cyIsaWNvbk5hbWU6ImtleWJvYXJkIixzaG9ydGN1dDoiQ21kK0siLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJTaG9ydGN1dHMiKSwiYWN0aW9uIil9LHtkaXZpZGVyOiEwfSx7bmFtZToiU2lnbiBPdXQiLGljb25OYW1lOiJsb2dPdXQiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJTaWduIG91dCIpLCJhY3Rpb24iKX1dfQogICAgICAuaXNPcGVuPSR7ITB9CiAgICA+PC9kZWVzLWFwcHVpLXByb2ZpbGVkcm9wZG93bj4KICBgLCJkZW1vIik7c3RhdGljIGRlbW9Hcm91cHM9WyJBcHAgVUkiXTsjZT1FdSh0aGlzLG8sdm9pZCAwKTtnZXQgdXNlcigpe3JldHVybiB0aGlzLiNlfXNldCB1c2VyKE0pe3RoaXMuI2U9TX0jdD0oRXUodGhpcyxsKSxFdSh0aGlzLGQsW10pKTtnZXQgbWVudUl0ZW1zKCl7cmV0dXJuIHRoaXMuI3R9c2V0IG1lbnVJdGVtcyhNKXt0aGlzLiN0PU19I2E9KEV1KHRoaXMsdSksRXUodGhpcyxiLCExKSk7Z2V0IGlzT3Blbigpe3JldHVybiB0aGlzLiNhfXNldCBpc09wZW4oTSl7dGhpcy4jYT1NfSNzPShFdSh0aGlzLHYpLEV1KHRoaXMsbSwidG9wLXJpZ2h0IikpO2dldCBwb3NpdGlvbigpe3JldHVybiB0aGlzLiNzfXNldCBwb3NpdGlvbihNKXt0aGlzLiNzPU19c3RhdGljIHN0eWxlcz1bcWUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAxMDAlOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5kcm9wZG93biB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIG1pbi13aWR0aDogMjIwcHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDAwMDAwIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTBlMGUwIiwiIzIwMjAyMCIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgYm94LXNoYWRvdzogJHtoLmJkVGhlbWUoIjAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjE1KSIsIjAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjMpIil9OwogICAgICAgIHotaW5kZXg6ICR7Ym8ub3ZlcmxheS5kcm9wZG93bn07CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTUpIHRyYW5zbGF0ZVkoLTEwcHgpOwogICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycywgdHJhbnNmb3JtIDAuMnM7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgIH0KCiAgICAgIDpob3N0KFtpc29wZW5dKSAuZHJvcGRvd24gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKSB0cmFuc2xhdGVZKDApOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOwogICAgICB9CiAgICAgIAogICAgICAuYmFja2Ryb3AgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KCiAgICAgIC8qIFBvc2l0aW9uIHZhcmlhbnRzICovCiAgICAgIC5kcm9wZG93bi50b3AtcmlnaHQgewogICAgICAgIHRvcDogMTAwJTsKICAgICAgICByaWdodDogMDsKICAgICAgICBtYXJnaW4tdG9wOiA0cHg7CiAgICAgIH0KCiAgICAgIC5kcm9wZG93bi50b3AtbGVmdCB7CiAgICAgICAgdG9wOiAxMDAlOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgbWFyZ2luLXRvcDogOHB4OwogICAgICB9CgogICAgICAuZHJvcGRvd24uYm90dG9tLXJpZ2h0IHsKICAgICAgICBib3R0b206IDEwMCU7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICB9CgogICAgICAuZHJvcGRvd24uYm90dG9tLWxlZnQgewogICAgICAgIGJvdHRvbTogMTAwJTsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgfQoKICAgICAgLyogVXNlciBzZWN0aW9uICovCiAgICAgIC51c2VyLXNlY3Rpb24gewogICAgICAgIHBhZGRpbmc6IDEycHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTBlMGUwIiwiIzIwMjAyMCIpfTsKICAgICAgfQoKICAgICAgLnVzZXItaW5mbyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMTBweDsKICAgICAgfQoKICAgICAgLnVzZXItYXZhdGFyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2lkdGg6IDM2cHg7CiAgICAgICAgaGVpZ2h0OiAzNnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2YwZjBmMCIsIiMxYTFhMWEiKX07CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzY2NiIsIiM5OTkiKX07CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLnVzZXItYXZhdGFyIGltZyB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG9iamVjdC1maXQ6IGNvdmVyOwogICAgICB9CgogICAgICAudXNlci1zdGF0dXMgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgd2lkdGg6IDEwcHg7CiAgICAgICAgaGVpZ2h0OiAxMHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMwMDAwMDAiKX07CiAgICAgIH0KCiAgICAgIC51c2VyLXN0YXR1cy5vbmxpbmUgewogICAgICAgIGJhY2tncm91bmQ6ICM0Y2FmNTA7CiAgICAgIH0KCiAgICAgIC51c2VyLXN0YXR1cy5vZmZsaW5lIHsKICAgICAgICBiYWNrZ3JvdW5kOiAjNzU3NTc1OwogICAgICB9CgogICAgICAudXNlci1zdGF0dXMuYnVzeSB7CiAgICAgICAgYmFja2dyb3VuZDogI2Y0NDMzNjsKICAgICAgfQoKICAgICAgLnVzZXItc3RhdHVzLmF3YXkgewogICAgICAgIGJhY2tncm91bmQ6ICNmZjk4MDA7CiAgICAgIH0KCiAgICAgIC51c2VyLWRldGFpbHMgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgbWluLXdpZHRoOiAwOwogICAgICB9CgogICAgICAudXNlci1uYW1lIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwMDAiLCIjZmZmIil9OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgfQoKICAgICAgLnVzZXItZW1haWwgewogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM2NjYiLCIjOTk5Iil9OwogICAgICAgIG1hcmdpbi10b3A6IDJweDsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgIH0KCiAgICAgIC8qIE1lbnUgc2VjdGlvbiAqLwogICAgICAubWVudS1zZWN0aW9uIHsKICAgICAgICBwYWRkaW5nOiA0cHggMDsKICAgICAgfQoKICAgICAgLm1lbnUtaXRlbSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMXM7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMzMzIiwiI2NjYyIpfTsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5tZW51LWl0ZW06aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMDQpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSIpfTsKICAgICAgfQoKICAgICAgLm1lbnUtaXRlbTphY3RpdmUgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMDgpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKSIpfTsKICAgICAgfQoKICAgICAgLm1lbnUtaXRlbSBkZWVzLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBvcGFjaXR5OiAwLjc7CiAgICAgIH0KCiAgICAgIC5tZW51LWl0ZW0tdGV4dCB7CiAgICAgICAgZmxleDogMTsKICAgICAgfQoKICAgICAgLm1lbnUtc2hvcnRjdXQgewogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM5OTkiLCIjNjY2Iil9OwogICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICAgIG9wYWNpdHk6IDAuNzsKICAgICAgfQoKICAgICAgLm1lbnUtZGl2aWRlciB7CiAgICAgICAgaGVpZ2h0OiAxcHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNlMGUwZTAiLCIjMjAyMDIwIil9OwogICAgICAgIG1hcmdpbjogNHB4IDA7CiAgICAgIH0KCiAgICAgIC8qIEJhY2tkcm9wIGZvciBtb2JpbGUgKi8KICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgICAgICAgLmJhY2tkcm9wIHsKICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICAgIHRvcDogMDsKICAgICAgICAgIGxlZnQ6IDA7CiAgICAgICAgICByaWdodDogMDsKICAgICAgICAgIGJvdHRvbTogMDsKICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4zKTsKICAgICAgICAgIHotaW5kZXg6ICR7Ym8uYmFja2Ryb3AuZHJvcGRvd259OwogICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4yczsKICAgICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICAgfQoKICAgICAgICA6aG9zdChbaXNvcGVuXSkgLmJhY2tkcm9wIHsKICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOwogICAgICAgIH0KCiAgICAgICAgLmRyb3Bkb3duIHsKICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICAgIHRvcDogNTAlOwogICAgICAgICAgbGVmdDogNTAlOwogICAgICAgICAgcmlnaHQ6IGF1dG87CiAgICAgICAgICBib3R0b206IGF1dG87CiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKSBzY2FsZSgwLjk1KTsKICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgIG1heC13aWR0aDogY2FsYygxMDB2dyAtIDMycHgpOwogICAgICAgICAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDMycHgpOwogICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW47CiAgICAgICAgfQoKICAgICAgICA6aG9zdChbaXNvcGVuXSkgLmRyb3Bkb3duIHsKICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpIHNjYWxlKDEpOwogICAgICAgIH0KICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImJhY2tkcm9wIiBAY2xpY2s9JHsoKT0+dGhpcy5jbG9zZSgpfT48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iZHJvcGRvd24gJHt0aGlzLnBvc2l0aW9ufSI+CiAgICAgICAgJHt0aGlzLnVzZXI/d2AKICAgICAgICAgIDxkaXYgY2xhc3M9InVzZXItc2VjdGlvbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InVzZXItaW5mbyI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idXNlci1hdmF0YXIiPgogICAgICAgICAgICAgICAgJHt0aGlzLnVzZXIuYXZhdGFyP3dgPGltZyBzcmM9IiR7dGhpcy51c2VyLmF2YXRhcn0iIGFsdD0iJHt0aGlzLnVzZXIubmFtZX0iPmA6dGhpcy5nZXRJbml0aWFscyh0aGlzLnVzZXIubmFtZSl9CiAgICAgICAgICAgICAgICAke3RoaXMudXNlci5zdGF0dXM/d2AKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idXNlci1zdGF0dXMgJHt0aGlzLnVzZXIuc3RhdHVzfSI+PC9kaXY+CiAgICAgICAgICAgICAgICBgOiIifQogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InVzZXItZGV0YWlscyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ1c2VyLW5hbWUiPiR7dGhpcy51c2VyLm5hbWV9PC9kaXY+CiAgICAgICAgICAgICAgICAke3RoaXMudXNlci5lbWFpbD93YAogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ1c2VyLWVtYWlsIj4ke3RoaXMudXNlci5lbWFpbH08L2Rpdj4KICAgICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgYDoiIn0KICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJtZW51LXNlY3Rpb24iPgogICAgICAgICAgJHt0aGlzLm1lbnVJdGVtcy5tYXAoTT0+dGhpcy5yZW5kZXJNZW51SXRlbShNKSl9CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJNZW51SXRlbShNKXtpZigiZGl2aWRlciJpbiBNJiZNLmRpdmlkZXIpcmV0dXJuIHdgPGRpdiBjbGFzcz0ibWVudS1kaXZpZGVyIj48L2Rpdj5gO2xldCB6PU07cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9Im1lbnUtaXRlbSIgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlTWVudUNsaWNrKHopfT4KICAgICAgICAke3ouaWNvbk5hbWU/d2AKICAgICAgICAgIDxkZWVzLWljb24gLmljb249IiR7YGx1Y2lkZToke3ouaWNvbk5hbWV9YH0iPjwvZGVlcy1pY29uPgogICAgICAgIGA6IiJ9CiAgICAgICAgPHNwYW4gY2xhc3M9Im1lbnUtaXRlbS10ZXh0Ij4ke3oubmFtZX08L3NwYW4+CiAgICAgICAgJHt6LnNob3J0Y3V0P3dgCiAgICAgICAgICA8c3BhbiBjbGFzcz0ibWVudS1zaG9ydGN1dCI+JHt6LnNob3J0Y3V0fTwvc3Bhbj4KICAgICAgICBgOiIifQogICAgICA8L2Rpdj4KICAgIGB9Z2V0SW5pdGlhbHMoTSl7cmV0dXJuIE0uc3BsaXQoIiAiKS5tYXAoej0+elswXSkuam9pbigiIikudG9VcHBlckNhc2UoKS5zbGljZSgwLDIpfWFzeW5jIGhhbmRsZU1lbnVDbGljayhNKXthd2FpdCBNLmFjdGlvbigpLHRoaXMuY2xvc2UoKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJtZW51LXNlbGVjdCIse2RldGFpbDp7aXRlbTpNfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfW9wZW4oKXt0aGlzLmlzT3Blbj0hMH1jbG9zZSgpe3RoaXMuaXNPcGVuPSExfXRvZ2dsZSgpe3RoaXMuaXNPcGVuPSF0aGlzLmlzT3Blbn1hc3luYyBjb25uZWN0ZWRDYWxsYmFjaygpe2F3YWl0IHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5oYW5kbGVPdXRzaWRlQ2xpY2s9dGhpcy5oYW5kbGVPdXRzaWRlQ2xpY2suYmluZCh0aGlzKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5oYW5kbGVPdXRzaWRlQ2xpY2spfWFzeW5jIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5oYW5kbGVPdXRzaWRlQ2xpY2spfWhhbmRsZU91dHNpZGVDbGljayhNKXtpZih0aGlzLmlzT3BlbiYmIXRoaXMuY29udGFpbnMoTS50YXJnZXQpKXtsZXQgej10aGlzLnBhcmVudEVsZW1lbnQ7aWYoeiYmei5jb250YWlucyhNLnRhcmdldCkpcmV0dXJuO3RoaXMuY2xvc2UoKX19Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLEV1KHRoaXMsZil9c3RhdGlje0V1KGEsdCl9fTtyZXR1cm4geT1hfSkoKX0pO3ZhciBobixDcyxMSmEsVG90PWcoKCk9PntwZSgpO2t0KCk7YTQoKTt2bygpO3E5YSgpO1Y5YSgpO1c5YSgpO0dhKCk7RG90KCk7TG90KCk7aG49ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LENzPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxMSmE9KCgpPT57bGV0IHM9W25lKCJkZWVzLWFwcHVpLWFwcGJhciIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdLEgsaz1bXSxTPVtdLEksUD1bXSxSPVtdLEssVj1bXSxXPVtdLG1lLEI9W10sVT1bXSxoZSxGPVtdLGo9W10sdWUsbGU9W10sUT1bXSxpZSx0ZT1bXSxlZT1bXSxrZSxYPVtdLFo9W107dmFyIHllPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzQXBwdWlCYXIiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgcT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOkFycmF5fSldLHA9W0woe3R5cGU6U3RyaW5nfSldLGM9W0woe3R5cGU6U3RyaW5nfSldLHg9W0woe3R5cGU6Qm9vbGVhbn0pXSx5PVtMKHt0eXBlOk9iamVjdH0pXSxOPVtMKHt0eXBlOkFycmF5fSldLE89W0woe3R5cGU6Qm9vbGVhbn0pXSxIPVtMKHt0eXBlOkJvb2xlYW59KV0sST1bTCh7dHlwZTpOdW1iZXJ9KV0sSz1bTCh7dHlwZTpCb29sZWFufSldLG1lPVtZKCldLGhlPVtZKCldLHVlPVtZKCldLGllPVtZKCldLGtlPVtZKCldLGhuKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWVudUl0ZW1zIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJtZW51SXRlbXMiaW4gQSwiaGFzIiksZ2V0OmkoQT0+QS5tZW51SXRlbXMsImdldCIpLHNldDppKChBLHNlKT0+e0EubWVudUl0ZW1zPXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LG8sbCksaG4odGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJicmVhZGNydW1icyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4iYnJlYWRjcnVtYnMiaW4gQSwiaGFzIiksZ2V0OmkoQT0+QS5icmVhZGNydW1icywiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS5icmVhZGNydW1icz1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSxkLHUpLGhuKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYnJlYWRjcnVtYlNlcGFyYXRvciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4iYnJlYWRjcnVtYlNlcGFyYXRvciJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLmJyZWFkY3J1bWJTZXBhcmF0b3IsImdldCIpLHNldDppKChBLHNlKT0+e0EuYnJlYWRjcnVtYlNlcGFyYXRvcj1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSxiLHYpLGhuKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2hvd1dpbmRvd0NvbnRyb2xzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJzaG93V2luZG93Q29udHJvbHMiaW4gQSwiaGFzIiksZ2V0OmkoQT0+QS5zaG93V2luZG93Q29udHJvbHMsImdldCIpLHNldDppKChBLHNlKT0+e0Euc2hvd1dpbmRvd0NvbnRyb2xzPXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LG0sZiksaG4odGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ1c2VyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJ1c2VyImluIEEsImhhcyIpLGdldDppKEE9PkEudXNlciwiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS51c2VyPXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LE0seiksaG4odGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJwcm9maWxlTWVudUl0ZW1zIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJwcm9maWxlTWVudUl0ZW1zImluIEEsImhhcyIpLGdldDppKEE9PkEucHJvZmlsZU1lbnVJdGVtcywiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS5wcm9maWxlTWVudUl0ZW1zPXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LEMsXyksaG4odGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93U2VhcmNoIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJzaG93U2VhcmNoImluIEEsImhhcyIpLGdldDppKEE9PkEuc2hvd1NlYXJjaCwiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS5zaG93U2VhcmNoPXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LCQsRSksaG4odGhpcyxudWxsLEgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93QWN0aXZpdHlMb2dUb2dnbGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+InNob3dBY3Rpdml0eUxvZ1RvZ2dsZSJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLnNob3dBY3Rpdml0eUxvZ1RvZ2dsZSwiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS5zaG93QWN0aXZpdHlMb2dUb2dnbGU9c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sayxTKSxobih0aGlzLG51bGwsSSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImFjdGl2aXR5TG9nQ291bnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+ImFjdGl2aXR5TG9nQ291bnQiaW4gQSwiaGFzIiksZ2V0OmkoQT0+QS5hY3Rpdml0eUxvZ0NvdW50LCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLmFjdGl2aXR5TG9nQ291bnQ9c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sUCxSKSxobih0aGlzLG51bGwsSyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImFjdGl2aXR5TG9nQWN0aXZlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJhY3Rpdml0eUxvZ0FjdGl2ZSJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLmFjdGl2aXR5TG9nQWN0aXZlLCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLmFjdGl2aXR5TG9nQWN0aXZlPXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LFYsVyksaG4odGhpcyxudWxsLG1lLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYWN0aXZlTWVudSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4iYWN0aXZlTWVudSJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLmFjdGl2ZU1lbnUsImdldCIpLHNldDppKChBLHNlKT0+e0EuYWN0aXZlTWVudT1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSxCLFUpLGhuKHRoaXMsbnVsbCxoZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im9wZW5Ecm9wZG93bnMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+Im9wZW5Ecm9wZG93bnMiaW4gQSwiaGFzIiksZ2V0OmkoQT0+QS5vcGVuRHJvcGRvd25zLCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLm9wZW5Ecm9wZG93bnM9c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sRixqKSxobih0aGlzLG51bGwsdWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJmb2N1c2VkSXRlbSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4iZm9jdXNlZEl0ZW0iaW4gQSwiaGFzIiksZ2V0OmkoQT0+QS5mb2N1c2VkSXRlbSwiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS5mb2N1c2VkSXRlbT1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSxsZSxRKSxobih0aGlzLG51bGwsaWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJmb2N1c2VkRHJvcGRvd25JdGVtIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJmb2N1c2VkRHJvcGRvd25JdGVtImluIEEsImhhcyIpLGdldDppKEE9PkEuZm9jdXNlZERyb3Bkb3duSXRlbSwiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS5mb2N1c2VkRHJvcGRvd25JdGVtPXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LHRlLGVlKSxobih0aGlzLG51bGwsa2Use2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpc1Byb2ZpbGVEcm9wZG93bk9wZW4iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+ImlzUHJvZmlsZURyb3Bkb3duT3BlbiJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLmlzUHJvZmlsZURyb3Bkb3duT3BlbiwiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS5pc1Byb2ZpbGVEcm9wZG93bk9wZW49c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sWCxaKSxobihudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpxfSxudWxsLHQpLHllPWE9ZS52YWx1ZSxxJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnF9KX1zdGF0aWMgZGVtbz1IOWE7c3RhdGljIGRlbW9Hcm91cHM9WyJBcHAgVUkiXTsjZT1Dcyh0aGlzLG8sW10pO2dldCBtZW51SXRlbXMoKXtyZXR1cm4gdGhpcy4jZX1zZXQgbWVudUl0ZW1zKHEpe3RoaXMuI2U9cX0jdD0oQ3ModGhpcyxsKSxDcyh0aGlzLGQsIiIpKTtnZXQgYnJlYWRjcnVtYnMoKXtyZXR1cm4gdGhpcy4jdH1zZXQgYnJlYWRjcnVtYnMocSl7dGhpcy4jdD1xfSNhPShDcyh0aGlzLHUpLENzKHRoaXMsYiwiID4gIikpO2dldCBicmVhZGNydW1iU2VwYXJhdG9yKCl7cmV0dXJuIHRoaXMuI2F9c2V0IGJyZWFkY3J1bWJTZXBhcmF0b3IocSl7dGhpcy4jYT1xfSNzPShDcyh0aGlzLHYpLENzKHRoaXMsbSwhMCkpO2dldCBzaG93V2luZG93Q29udHJvbHMoKXtyZXR1cm4gdGhpcy4jc31zZXQgc2hvd1dpbmRvd0NvbnRyb2xzKHEpe3RoaXMuI3M9cX0jaT0oQ3ModGhpcyxmKSxDcyh0aGlzLE0sdm9pZCAwKSk7Z2V0IHVzZXIoKXtyZXR1cm4gdGhpcy4jaX1zZXQgdXNlcihxKXt0aGlzLiNpPXF9I3I9KENzKHRoaXMseiksQ3ModGhpcyxDLFtdKSk7Z2V0IHByb2ZpbGVNZW51SXRlbXMoKXtyZXR1cm4gdGhpcy4jcn1zZXQgcHJvZmlsZU1lbnVJdGVtcyhxKXt0aGlzLiNyPXF9I289KENzKHRoaXMsXyksQ3ModGhpcywkLCExKSk7Z2V0IHNob3dTZWFyY2goKXtyZXR1cm4gdGhpcy4jb31zZXQgc2hvd1NlYXJjaChxKXt0aGlzLiNvPXF9I249KENzKHRoaXMsRSksQ3ModGhpcyxrLCExKSk7Z2V0IHNob3dBY3Rpdml0eUxvZ1RvZ2dsZSgpe3JldHVybiB0aGlzLiNufXNldCBzaG93QWN0aXZpdHlMb2dUb2dnbGUocSl7dGhpcy4jbj1xfSNsPShDcyh0aGlzLFMpLENzKHRoaXMsUCwwKSk7Z2V0IGFjdGl2aXR5TG9nQ291bnQoKXtyZXR1cm4gdGhpcy4jbH1zZXQgYWN0aXZpdHlMb2dDb3VudChxKXt0aGlzLiNsPXF9I2M9KENzKHRoaXMsUiksQ3ModGhpcyxWLCExKSk7Z2V0IGFjdGl2aXR5TG9nQWN0aXZlKCl7cmV0dXJuIHRoaXMuI2N9c2V0IGFjdGl2aXR5TG9nQWN0aXZlKHEpe3RoaXMuI2M9cX0jZD0oQ3ModGhpcyxXKSxDcyh0aGlzLEIsbnVsbCkpO2dldCBhY3RpdmVNZW51KCl7cmV0dXJuIHRoaXMuI2R9c2V0IGFjdGl2ZU1lbnUocSl7dGhpcy4jZD1xfSN1PShDcyh0aGlzLFUpLENzKHRoaXMsRixuZXcgU2V0KSk7Z2V0IG9wZW5Ecm9wZG93bnMoKXtyZXR1cm4gdGhpcy4jdX1zZXQgb3BlbkRyb3Bkb3ducyhxKXt0aGlzLiN1PXF9I3A9KENzKHRoaXMsaiksQ3ModGhpcyxsZSxudWxsKSk7Z2V0IGZvY3VzZWRJdGVtKCl7cmV0dXJuIHRoaXMuI3B9c2V0IGZvY3VzZWRJdGVtKHEpe3RoaXMuI3A9cX0jaD0oQ3ModGhpcyxRKSxDcyh0aGlzLHRlLC0xKSk7Z2V0IGZvY3VzZWREcm9wZG93bkl0ZW0oKXtyZXR1cm4gdGhpcy4jaH1zZXQgZm9jdXNlZERyb3Bkb3duSXRlbShxKXt0aGlzLiNoPXF9I2Y9KENzKHRoaXMsZWUpLENzKHRoaXMsWCwhMSkpO2dldCBpc1Byb2ZpbGVEcm9wZG93bk9wZW4oKXtyZXR1cm4gdGhpcy4jZn1zZXQgaXNQcm9maWxlRHJvcGRvd25PcGVuKHEpe3RoaXMuI2Y9cX1zdGF0aWMgc3R5bGVzPWo5YTtyZW5kZXIoKXtyZXR1cm4gVTlhKHRoaXMpfXJlbmRlck1lbnVJdGVtcygpe3JldHVybiB3YAogICAgICAke3RoaXMubWVudUl0ZW1zLm1hcCgocSxBKT0+dGhpcy5yZW5kZXJNZW51SXRlbShxLGBtZW51LSR7QX1gKSl9CiAgICBgfXJlbmRlck1lbnVJdGVtKHEsQSl7aWYoImRpdmlkZXIiaW4gcSYmcS5kaXZpZGVyKXJldHVybiB3YDxkaXYgY2xhc3M9ImRyb3Bkb3duLWRpdmlkZXIiPjwvZGl2PmA7bGV0IHNlPXEsb2U9dGhpcy5hY3RpdmVNZW51PT09QSxhZT1zZS5zdWJtZW51JiZzZS5zdWJtZW51Lmxlbmd0aD4wO3JldHVybiB3YAogICAgICA8ZGl2CiAgICAgICAgY2xhc3M9Im1lbnVJdGVtICR7b2U/ImFjdGl2ZSI6IiJ9IgogICAgICAgID9kaXNhYmxlZD0ke3NlLmRpc2FibGVkfQogICAgICAgIHRhYmluZGV4PSIke3NlLmRpc2FibGVkPy0xOjB9IgogICAgICAgIGRhdGEtaXRlbS1pZD0iJHtBfSIKICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVNZW51Q2xpY2soc2UsQSl9CiAgICAgICAgQGtleWRvd249JHtUZT0+dGhpcy5oYW5kbGVNZW51S2V5ZG93bihUZSxzZSxBKX0KICAgICAgICByb2xlPSJtZW51aXRlbSIKICAgICAgICBhcmlhLWhhc3BvcHVwPSIke2FlfSIKICAgICAgICBhcmlhLWV4cGFuZGVkPSIke29lfSIKICAgICAgPgogICAgICAgICR7c2UuaWNvbk5hbWU/d2A8ZGVlcy1pY29uIC5pY29uPSIke2BsdWNpZGU6JHtzZS5pY29uTmFtZX1gfSI+PC9kZWVzLWljb24+YDoiIn0KICAgICAgICAke3NlLm5hbWV9CiAgICAgICAgJHthZT90aGlzLnJlbmRlckRyb3Bkb3duKHNlLnN1Ym1lbnUsQSxvZSk6IiJ9CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJEcm9wZG93bihxLEEsc2Upe3JldHVybiB3YAogICAgICA8ZGl2IAogICAgICAgIGNsYXNzPSJkcm9wZG93biAke3NlPyJvcGVuIjoiIn0iIAogICAgICAgIEBjbGljaz0ke29lPT5vZS5zdG9wUHJvcGFnYXRpb24oKX0KICAgICAgICBAa2V5ZG93bj0ke29lPT50aGlzLmhhbmRsZURyb3Bkb3duS2V5ZG93bihvZSxxLEEpfQogICAgICAgIHRhYmluZGV4PSIke3NlPzA6LTF9IgogICAgICAgIHJvbGU9Im1lbnUiCiAgICAgID4KICAgICAgICAke3EubWFwKChvZSxhZSk9PnRoaXMucmVuZGVyRHJvcGRvd25JdGVtKG9lLGAke0F9LSR7YWV9YCkpfQogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyRHJvcGRvd25JdGVtKHEsQSl7aWYoImRpdmlkZXIiaW4gcSYmcS5kaXZpZGVyKXJldHVybiB3YDxkaXYgY2xhc3M9ImRyb3Bkb3duLWRpdmlkZXIiPjwvZGl2PmA7bGV0IHNlPXEsb2U9cGFyc2VJbnQoQS5zcGxpdCgiLSIpLnBvcCgpfHwiMCIpLGFlPXRoaXMuZm9jdXNlZERyb3Bkb3duSXRlbT09PW9lO3JldHVybiB3YAogICAgICA8ZGl2CiAgICAgICAgY2xhc3M9ImRyb3Bkb3duLWl0ZW0gJHthZT8iZm9jdXNlZCI6IiJ9IgogICAgICAgID9kaXNhYmxlZD0ke3NlLmRpc2FibGVkfQogICAgICAgIEBjbGljaz0keygpPT50aGlzLmhhbmRsZURyb3Bkb3duSXRlbUNsaWNrKHNlKX0KICAgICAgICBAbW91c2VlbnRlcj0keygpPT50aGlzLmZvY3VzZWREcm9wZG93bkl0ZW09b2V9CiAgICAgICAgcm9sZT0ibWVudWl0ZW0iCiAgICAgICAgdGFiaW5kZXg9IiR7c2UuZGlzYWJsZWQ/LTE6MH0iCiAgICAgID4KICAgICAgICAke3NlLmljb25OYW1lP3dgPGRlZXMtaWNvbiAuaWNvbj0iJHtgbHVjaWRlOiR7c2UuaWNvbk5hbWV9YH0iPjwvZGVlcy1pY29uPmA6IiJ9CiAgICAgICAgPHNwYW4+JHtzZS5uYW1lfTwvc3Bhbj4KICAgICAgICAke3NlLnNob3J0Y3V0P3dgPHNwYW4gY2xhc3M9InNob3J0Y3V0Ij4ke3NlLnNob3J0Y3V0fTwvc3Bhbj5gOiIifQogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyQnJlYWRjcnVtYnMoKXtpZighdGhpcy5icmVhZGNydW1icylyZXR1cm4gd2BgO2xldCBxPXRoaXMuYnJlYWRjcnVtYnMuc3BsaXQodGhpcy5icmVhZGNydW1iU2VwYXJhdG9yKTtyZXR1cm4gd2AKICAgICAgJHtxLm1hcCgoQSxzZSk9PndgCiAgICAgICAgJHtzZT4wP3dgPHNwYW4gY2xhc3M9ImJyZWFkY3J1bWItc2VwYXJhdG9yIj4ke3RoaXMuYnJlYWRjcnVtYlNlcGFyYXRvcn08L3NwYW4+YDoiIn0KICAgICAgICA8c3BhbiAKICAgICAgICAgIGNsYXNzPSJicmVhZGNydW1iLWl0ZW0iIAogICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMuaGFuZGxlQnJlYWRjcnVtYkNsaWNrKEEsc2UpfQogICAgICAgID4KICAgICAgICAgICR7QX0KICAgICAgICA8L3NwYW4+CiAgICAgIGApfQogICAgYH1yZW5kZXJBY2NvdW50U2VjdGlvbigpe3JldHVybiB3YAogICAgICAke3RoaXMuc2hvd1NlYXJjaD93YAogICAgICAgIDxkZWVzLWljb24KICAgICAgICAgIGNsYXNzPSJzZWFyY2gtaWNvbiIKICAgICAgICAgIC5pY29uPSR7Imx1Y2lkZTpzZWFyY2gifQogICAgICAgICAgQGNsaWNrPSR7dGhpcy5oYW5kbGVTZWFyY2hDbGlja30KICAgICAgICA+PC9kZWVzLWljb24+CiAgICAgIGA6IiJ9CiAgICAgICR7dGhpcy51c2VyP3dgCiAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ1c2VyLWluZm8iIEBjbGljaz0ke3RoaXMuaGFuZGxlVXNlckNsaWNrfT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idXNlci1hdmF0YXIiPgogICAgICAgICAgICAgICR7dGhpcy51c2VyLmF2YXRhcj93YDxpbWcgc3JjPSIke3RoaXMudXNlci5hdmF0YXJ9IiBhbHQ9IiR7dGhpcy51c2VyLm5hbWV9Ij5gOndgJHt0aGlzLnVzZXIubmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKX1gfQogICAgICAgICAgICAgICR7dGhpcy51c2VyLnN0YXR1cz93YAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idXNlci1zdGF0dXMgJHt0aGlzLnVzZXIuc3RhdHVzfSI+PC9kaXY+CiAgICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxzcGFuPiR7dGhpcy51c2VyLm5hbWV9PC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGVlcy1hcHB1aS1wcm9maWxlZHJvcGRvd24KICAgICAgICAgICAgLnVzZXI9JHt0aGlzLnVzZXJ9CiAgICAgICAgICAgIC5tZW51SXRlbXM9JHt0aGlzLnByb2ZpbGVNZW51SXRlbXN9CiAgICAgICAgICAgIC5pc09wZW49JHt0aGlzLmlzUHJvZmlsZURyb3Bkb3duT3Blbn0KICAgICAgICAgICAgLnBvc2l0aW9uPSR7InRvcC1yaWdodCJ9CiAgICAgICAgICAgIEBtZW51LXNlbGVjdD0ke3E9PnRoaXMuaGFuZGxlUHJvZmlsZU1lbnVTZWxlY3QocSl9CiAgICAgICAgICA+PC9kZWVzLWFwcHVpLXByb2ZpbGVkcm9wZG93bj4KICAgICAgICA8L2Rpdj4KICAgICAgYDoiIn0KICAgICAgJHt0aGlzLnNob3dBY3Rpdml0eUxvZ1RvZ2dsZT93YAogICAgICAgIDxkaXYKICAgICAgICAgIGNsYXNzPSJhY3Rpdml0eS10b2dnbGUgJHt0aGlzLmFjdGl2aXR5TG9nQWN0aXZlPyJhY3RpdmUiOiIifSIKICAgICAgICAgIEBjbGljaz0ke3RoaXMuaGFuZGxlQWN0aXZpdHlUb2dnbGV9CiAgICAgICAgICB0aXRsZT0iQWN0aXZpdHkgTG9nIgogICAgICAgID4KICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHsibHVjaWRlOmFjdGl2aXR5In0+PC9kZWVzLWljb24+CiAgICAgICAgICAke3RoaXMuYWN0aXZpdHlMb2dDb3VudD4wP3dgCiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhY3Rpdml0eS1iYWRnZSI+JHt0aGlzLmFjdGl2aXR5TG9nQ291bnQ+OTk/Ijk5KyI6dGhpcy5hY3Rpdml0eUxvZ0NvdW50fTwvc3Bhbj4KICAgICAgICAgIGA6IiJ9CiAgICAgICAgPC9kaXY+CiAgICAgIGA6IiJ9CiAgICBgfWhhbmRsZU1lbnVDbGljayhxLEEpe3EuZGlzYWJsZWR8fChxLnN1Ym1lbnUmJnEuc3VibWVudS5sZW5ndGg+MD90aGlzLmFjdGl2ZU1lbnU9PT1BP3RoaXMuYWN0aXZlTWVudT1udWxsOnRoaXMuYWN0aXZlTWVudT1BOih0aGlzLmFjdGl2ZU1lbnU9bnVsbCxxLmFjdGlvbiYmcS5hY3Rpb24oKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJtZW51LXNlbGVjdCIse2RldGFpbDp7aXRlbTpxfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpKSl9aGFuZGxlRHJvcGRvd25JdGVtQ2xpY2socSl7cS5kaXNhYmxlZHx8KHRoaXMuYWN0aXZlTWVudT1udWxsLHEuYWN0aW9uJiZxLmFjdGlvbigpLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoIm1lbnUtc2VsZWN0Iix7ZGV0YWlsOntpdGVtOnF9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSkpfWhhbmRsZU1lbnVLZXlkb3duKHEsQSxzZSl7c3dpdGNoKHEua2V5KXtjYXNlIkVudGVyIjpjYXNlIiAiOnEucHJldmVudERlZmF1bHQoKSx0aGlzLmhhbmRsZU1lbnVDbGljayhBLHNlKTticmVhaztjYXNlIkFycm93RG93biI6aWYoQS5zdWJtZW51JiZ0aGlzLmFjdGl2ZU1lbnU9PT1zZSl7cS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuZm9jdXNlZERyb3Bkb3duSXRlbT0wO2xldCBvZT10aGlzLmZpbmROZXh0VmFsaWRJdGVtKEEuc3VibWVudSwtMSwxKTtvZSE9PS0xJiYodGhpcy5mb2N1c2VkRHJvcGRvd25JdGVtPW9lLHNldFRpbWVvdXQoKCk9PntsZXQgYWU9dGhpcy5yZW5kZXJSb290LnF1ZXJ5U2VsZWN0b3IoIi5kcm9wZG93bi5vcGVuIik7YWUmJmFlLmZvY3VzKCl9LDApKX1icmVhaztjYXNlIkVzY2FwZSI6dGhpcy5hY3RpdmVNZW51PW51bGwsdGhpcy5mb2N1c2VkRHJvcGRvd25JdGVtPS0xO2JyZWFrO2Nhc2UiVGFiIjp0aGlzLmFjdGl2ZU1lbnU9PT1zZSYmKHRoaXMuYWN0aXZlTWVudT1udWxsLHRoaXMuZm9jdXNlZERyb3Bkb3duSXRlbT0tMSk7YnJlYWs7Y2FzZSJBcnJvd1JpZ2h0IjpxLnByZXZlbnREZWZhdWx0KCksdGhpcy5mb2N1c05leHRNZW51SXRlbShzZSwxKTticmVhaztjYXNlIkFycm93TGVmdCI6cS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuZm9jdXNOZXh0TWVudUl0ZW0oc2UsLTEpO2JyZWFrfX1oYW5kbGVCcmVhZGNydW1iQ2xpY2socSxBKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJicmVhZGNydW1iLW5hdmlnYXRlIix7ZGV0YWlsOnticmVhZGNydW1iOnEsaW5kZXg6QX0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1oYW5kbGVTZWFyY2hDbGljaygpe3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInNlYXJjaC1jbGljayIse2J1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9aGFuZGxlQWN0aXZpdHlUb2dnbGUoKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJhY3Rpdml0eS10b2dnbGUiLHtidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZVVzZXJDbGljaygpe3RoaXMuaXNQcm9maWxlRHJvcGRvd25PcGVuPSF0aGlzLmlzUHJvZmlsZURyb3Bkb3duT3Blbix0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJ1c2VyLW1lbnUtb3BlbiIse2J1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9aGFuZGxlUHJvZmlsZU1lbnVTZWxlY3QocSl7dGhpcy5pc1Byb2ZpbGVEcm9wZG93bk9wZW49ITEsdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgicHJvZmlsZS1tZW51LXNlbGVjdCIse2RldGFpbDpxLmRldGFpbCxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWFzeW5jIGNvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLmhhbmRsZUdsb2JhbENsaWNrKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5oYW5kbGVEb2N1bWVudENsaWNrKX1hc3luYyBkaXNjb25uZWN0ZWRDYWxsYmFjaygpe2F3YWl0IHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMuaGFuZGxlRG9jdW1lbnRDbGljayl9aGFuZGxlR2xvYmFsQ2xpY2s9KENzKHRoaXMsWikscT0+e3Euc3RvcFByb3BhZ2F0aW9uKCl9KTtoYW5kbGVEb2N1bWVudENsaWNrPWkoKCk9Pnt0aGlzLmFjdGl2ZU1lbnU9bnVsbCx0aGlzLmZvY3VzZWREcm9wZG93bkl0ZW09LTF9LCJoYW5kbGVEb2N1bWVudENsaWNrIik7aGFuZGxlRHJvcGRvd25LZXlkb3duKHEsQSxzZSl7bGV0IG9lPUEuZmlsdGVyKGFlPT4hKCJkaXZpZGVyImluIGFlJiZhZS5kaXZpZGVyKSk7c3dpdGNoKHEua2V5KXtjYXNlIkFycm93RG93biI6cS5wcmV2ZW50RGVmYXVsdCgpO2xldCBhZT10aGlzLmZpbmROZXh0VmFsaWRJdGVtKEEsdGhpcy5mb2N1c2VkRHJvcGRvd25JdGVtLDEpO2FlIT09LTEmJih0aGlzLmZvY3VzZWREcm9wZG93bkl0ZW09YWUpO2JyZWFrO2Nhc2UiQXJyb3dVcCI6cS5wcmV2ZW50RGVmYXVsdCgpO2xldCBUZT10aGlzLmZpbmROZXh0VmFsaWRJdGVtKEEsdGhpcy5mb2N1c2VkRHJvcGRvd25JdGVtLC0xKTtUZSE9PS0xJiYodGhpcy5mb2N1c2VkRHJvcGRvd25JdGVtPVRlKTticmVhaztjYXNlIkVudGVyIjppZihxLnByZXZlbnREZWZhdWx0KCksdGhpcy5mb2N1c2VkRHJvcGRvd25JdGVtIT09LTEpe2xldCBEZT1vZVt0aGlzLmZvY3VzZWREcm9wZG93bkl0ZW1dO0RlJiYiYWN0aW9uImluIERlJiYhRGUuZGlzYWJsZWQmJnRoaXMuaGFuZGxlRHJvcGRvd25JdGVtQ2xpY2soRGUpfWJyZWFrO2Nhc2UiSG9tZSI6cS5wcmV2ZW50RGVmYXVsdCgpO2xldCBSZT10aGlzLmZpbmROZXh0VmFsaWRJdGVtKEEsLTEsMSk7UmUhPT0tMSYmKHRoaXMuZm9jdXNlZERyb3Bkb3duSXRlbT1SZSk7YnJlYWs7Y2FzZSJFbmQiOnEucHJldmVudERlZmF1bHQoKTtsZXQgQmU9dGhpcy5maW5kTmV4dFZhbGlkSXRlbShBLEEubGVuZ3RoLC0xKTtCZSE9PS0xJiYodGhpcy5mb2N1c2VkRHJvcGRvd25JdGVtPUJlKTticmVhaztjYXNlIkVzY2FwZSI6cS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuYWN0aXZlTWVudT1udWxsLHRoaXMuZm9jdXNlZERyb3Bkb3duSXRlbT0tMTtsZXQgR2U9dGhpcy5yZW5kZXJSb290LnF1ZXJ5U2VsZWN0b3IoIi5tZW51SXRlbS5hY3RpdmUiKTtHZSYmR2UuZm9jdXMoKTticmVha319ZmluZE5leHRWYWxpZEl0ZW0ocSxBLHNlKXtsZXQgb2U9QStzZTtmb3IoO29lPj0wJiZvZTxxLmxlbmd0aDspe2xldCBhZT1xW29lXTtpZighKCJkaXZpZGVyImluIGFlJiZhZS5kaXZpZGVyKSYmISgiZGlzYWJsZWQiaW4gYWUmJmFlLmRpc2FibGVkKSlyZXR1cm4gb2U7b2UrPXNlfXJldHVybi0xfWZvY3VzTmV4dE1lbnVJdGVtKHEsQSl7bGV0IHNlPUFycmF5LmZyb20odGhpcy5yZW5kZXJSb290LnF1ZXJ5U2VsZWN0b3JBbGwoIi5tZW51SXRlbSIpKSxvZT1zZS5maW5kSW5kZXgoUmU9PlJlLmdldEF0dHJpYnV0ZSgiZGF0YS1pdGVtLWlkIik9PT1xKTtpZihvZT09PS0xKXJldHVybjtsZXQgYWU9b2UrQTthZTwwP2FlPXNlLmxlbmd0aC0xOmFlPj1zZS5sZW5ndGgmJihhZT0wKTtsZXQgVGU9MDtmb3IoO1RlPHNlLmxlbmd0aDspe2xldCBSZT1zZVthZV07aWYoIVJlLmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKSl7UmUuZm9jdXMoKSx0aGlzLmFjdGl2ZU1lbnUmJih0aGlzLmFjdGl2ZU1lbnU9bnVsbCx0aGlzLmZvY3VzZWREcm9wZG93bkl0ZW09LTEpO2JyZWFrfWFlPShhZStBK3NlLmxlbmd0aCklc2UubGVuZ3RoLFRlKyt9fXN0YXRpY3tDcyhhLHQpfX07cmV0dXJuIHllPWF9KSgpfSk7dmFyIEVvdD1nKCgpPT57VG90KCl9KTt2YXIgRzlhLEs5YSxZOWE9ZygoKT0+e3BlKCk7SXQoKTtLOWE9aSgoKT0+dyhHOWF8fChHOWE9YmMoW2AKICAgIDxkZWVzLWRlbW93cmFwcGVyPgogICAgICA8c3R5bGU+CiAgICAgICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICAgIGJhY2tncm91bmQ6ICMxYTFhMWE7CiAgICAgICAgfQoKICAgICAgICAuZGVtby1zZWN0aW9uIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgfQoKICAgICAgICAuZGVtby1sYWJlbCB7CiAgICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgICBjb2xvcjogIzczNzM3MzsKICAgICAgICAgIGZvbnQtZmFtaWx5OiAnR2Vpc3QgU2FucycsIHNhbnMtc2VyaWY7CiAgICAgICAgfQoKICAgICAgICAuZGVtby1ib3R0b21iYXItd3JhcHBlciB7CiAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBoc2woMCAwJSAyMCUpOwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB9CiAgICAgIDwvc3R5bGU+CiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICAgICAgPGRpdiBjbGFzcz0iZGVtby1sYWJlbCI+Qm90dG9tIGJhciB3aXRoIHN0YXR1cyB3aWRnZXRzIGFuZCBhY3Rpb25zPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkZW1vLWJvdHRvbWJhci13cmFwcGVyIj4KICAgICAgICAgICAgPGRlZXMtYXBwdWktYm90dG9tYmFyCiAgICAgICAgICAgICAgaWQ9ImRlbW8tYm90dG9tYmFyIgogICAgICAgICAgICA+PC9kZWVzLWFwcHVpLWJvdHRvbWJhcj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICAgICAgPGRpdiBjbGFzcz0iZGVtby1sYWJlbCI+Q29udHJvbHM8L2Rpdj4KICAgICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGdhcDogOHB4OyBmbGV4LXdyYXA6IHdyYXA7Ij4KICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJhZGRTdWNjZXNzV2lkZ2V0KCkiPkFkZCBTdWNjZXNzIFdpZGdldDwvYnV0dG9uPgogICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9ImFkZFdhcm5pbmdXaWRnZXQoKSI+QWRkIFdhcm5pbmcgV2lkZ2V0PC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iYWRkRXJyb3JXaWRnZXQoKSI+QWRkIEVycm9yIFdpZGdldDwvYnV0dG9uPgogICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9ImFkZExvYWRpbmdXaWRnZXQoKSI+QWRkIExvYWRpbmcgV2lkZ2V0PC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iYWRkUmlnaHRXaWRnZXQoKSI+QWRkIFJpZ2h0IFdpZGdldDwvYnV0dG9uPgogICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9ImFkZEFjdGlvbigpIj5BZGQgQWN0aW9uPC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iY2xlYXJBbGwoKSI+Q2xlYXIgQWxsPC9idXR0b24+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxzY3JpcHQgdHlwZT0ibW9kdWxlIj4KICAgICAgICBjb25zdCBib3R0b21iYXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGVtby1ib3R0b21iYXInKTsKCiAgICAgICAgLy8gV2FpdCBmb3IgY29tcG9uZW50IHRvIGluaXRpYWxpemUKICAgICAgICBhd2FpdCBib3R0b21iYXIudXBkYXRlQ29tcGxldGU7CgogICAgICAgIC8vIEFkZCBpbml0aWFsIHdpZGdldHMKICAgICAgICBib3R0b21iYXIuYWRkV2lkZ2V0KHsKICAgICAgICAgIGlkOiAnc3RhdHVzJywKICAgICAgICAgIGljb25OYW1lOiAnbHVjaWRlOmFjdGl2aXR5JywKICAgICAgICAgIGxhYmVsOiAnU3lzdGVtIE9ubGluZScsCiAgICAgICAgICBzdGF0dXM6ICdzdWNjZXNzJywKICAgICAgICAgIHRvb2x0aXA6ICdBbGwgc3lzdGVtcyBvcGVyYXRpb25hbCcsCiAgICAgICAgICBvbkNsaWNrOiAoKSA9PiBjb25zb2xlLmxvZygnU3RhdHVzIGNsaWNrZWQnKSwKICAgICAgICAgIGNvbnRleHRNZW51SXRlbXM6IFsKICAgICAgICAgICAgeyBuYW1lOiAnVmlldyBEZXRhaWxzJywgaWNvbk5hbWU6ICdsdWNpZGU6aW5mbycsIGFjdGlvbjogKCkgPT4gYWxlcnQoJ1N5c3RlbSBkZXRhaWxzJykgfSwKICAgICAgICAgICAgeyBkaXZpZGVyOiB0cnVlIH0sCiAgICAgICAgICAgIHsgbmFtZTogJ1JlZnJlc2ggU3RhdHVzJywgaWNvbk5hbWU6ICdsdWNpZGU6cmVmcmVzaEN3JywgYWN0aW9uOiAoKSA9PiBhbGVydCgnUmVmcmVzaGluZy4uLicpIH0sCiAgICAgICAgICBdLAogICAgICAgIH0pOwoKICAgICAgICBib3R0b21iYXIuYWRkV2lkZ2V0KHsKICAgICAgICAgIGlkOiAnbm90aWZpY2F0aW9ucycsCiAgICAgICAgICBpY29uTmFtZTogJ2x1Y2lkZTpiZWxsJywKICAgICAgICAgIGxhYmVsOiAnMyBub3RpZmljYXRpb25zJywKICAgICAgICAgIHN0YXR1czogJ3dhcm5pbmcnLAogICAgICAgICAgdG9vbHRpcDogJ1lvdSBoYXZlIHVucmVhZCBub3RpZmljYXRpb25zJywKICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IGNvbnNvbGUubG9nKCdOb3RpZmljYXRpb25zIGNsaWNrZWQnKSwKICAgICAgICB9KTsKCiAgICAgICAgYm90dG9tYmFyLmFkZFdpZGdldCh7CiAgICAgICAgICBpZDogJ3ZlcnNpb24nLAogICAgICAgICAgaWNvbk5hbWU6ICdsdWNpZGU6Z2l0QnJhbmNoJywKICAgICAgICAgIGxhYmVsOiAndjEuMi4zJywKICAgICAgICAgIHRvb2x0aXA6ICdDdXJyZW50IHZlcnNpb24nLAogICAgICAgICAgcG9zaXRpb246ICdyaWdodCcsCiAgICAgICAgICBvbkNsaWNrOiAoKSA9PiBjb25zb2xlLmxvZygnVmVyc2lvbiBjbGlja2VkJyksCiAgICAgICAgfSk7CgogICAgICAgIC8vIEFkZCBpbml0aWFsIGFjdGlvbnMKICAgICAgICBib3R0b21iYXIuYWRkQWN0aW9uKHsKICAgICAgICAgIGlkOiAnc2V0dGluZ3MnLAogICAgICAgICAgaWNvbk5hbWU6ICdsdWNpZGU6c2V0dGluZ3MnLAogICAgICAgICAgdG9vbHRpcDogJ1NldHRpbmdzJywKICAgICAgICAgIHBvc2l0aW9uOiAncmlnaHQnLAogICAgICAgICAgb25DbGljazogKCkgPT4gYWxlcnQoJ1NldHRpbmdzIGNsaWNrZWQnKSwKICAgICAgICB9KTsKCiAgICAgICAgYm90dG9tYmFyLmFkZEFjdGlvbih7CiAgICAgICAgICBpZDogJ2hlbHAnLAogICAgICAgICAgaWNvbk5hbWU6ICdsdWNpZGU6aGVscENpcmNsZScsCiAgICAgICAgICB0b29sdGlwOiAnSGVscCcsCiAgICAgICAgICBwb3NpdGlvbjogJ3JpZ2h0JywKICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IGFsZXJ0KCdIZWxwIGNsaWNrZWQnKSwKICAgICAgICB9KTsKCiAgICAgICAgLy8gRGVtbyBjb250cm9sIGZ1bmN0aW9ucwogICAgICAgIGxldCB3aWRnZXRDb3VudGVyID0gMDsKICAgICAgICBsZXQgYWN0aW9uQ291bnRlciA9IDA7CgogICAgICAgIHdpbmRvdy5hZGRTdWNjZXNzV2lkZ2V0ID0gKCkgPT4gewogICAgICAgICAgd2lkZ2V0Q291bnRlcisrOwogICAgICAgICAgYm90dG9tYmFyLmFkZFdpZGdldCh7CiAgICAgICAgICAgIGlkOiAnc3VjY2Vzcy0nICsgd2lkZ2V0Q291bnRlciwKICAgICAgICAgICAgaWNvbk5hbWU6ICdsdWNpZGU6Y2hlY2tDaXJjbGUnLAogICAgICAgICAgICBsYWJlbDogJ1N1Y2Nlc3MgJyArIHdpZGdldENvdW50ZXIsCiAgICAgICAgICAgIHN0YXR1czogJ3N1Y2Nlc3MnLAogICAgICAgICAgICB0b29sdGlwOiAnU3VjY2VzcyB3aWRnZXQnLAogICAgICAgICAgICBvbkNsaWNrOiAoKSA9PiBib3R0b21iYXIucmVtb3ZlV2lkZ2V0KCdzdWNjZXNzLScgKyB3aWRnZXRDb3VudGVyKSwKICAgICAgICAgIH0pOwogICAgICAgIH07CgogICAgICAgIHdpbmRvdy5hZGRXYXJuaW5nV2lkZ2V0ID0gKCkgPT4gewogICAgICAgICAgd2lkZ2V0Q291bnRlcisrOwogICAgICAgICAgYm90dG9tYmFyLmFkZFdpZGdldCh7CiAgICAgICAgICAgIGlkOiAnd2FybmluZy0nICsgd2lkZ2V0Q291bnRlciwKICAgICAgICAgICAgaWNvbk5hbWU6ICdsdWNpZGU6YWxlcnRUcmlhbmdsZScsCiAgICAgICAgICAgIGxhYmVsOiAnV2FybmluZyAnICsgd2lkZ2V0Q291bnRlciwKICAgICAgICAgICAgc3RhdHVzOiAnd2FybmluZycsCiAgICAgICAgICAgIHRvb2x0aXA6ICdXYXJuaW5nIHdpZGdldCcsCiAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IGJvdHRvbWJhci5yZW1vdmVXaWRnZXQoJ3dhcm5pbmctJyArIHdpZGdldENvdW50ZXIpLAogICAgICAgICAgfSk7CiAgICAgICAgfTsKCiAgICAgICAgd2luZG93LmFkZEVycm9yV2lkZ2V0ID0gKCkgPT4gewogICAgICAgICAgd2lkZ2V0Q291bnRlcisrOwogICAgICAgICAgYm90dG9tYmFyLmFkZFdpZGdldCh7CiAgICAgICAgICAgIGlkOiAnZXJyb3ItJyArIHdpZGdldENvdW50ZXIsCiAgICAgICAgICAgIGljb25OYW1lOiAnbHVjaWRlOnhDaXJjbGUnLAogICAgICAgICAgICBsYWJlbDogJ0Vycm9yICcgKyB3aWRnZXRDb3VudGVyLAogICAgICAgICAgICBzdGF0dXM6ICdlcnJvcicsCiAgICAgICAgICAgIHRvb2x0aXA6ICdFcnJvciB3aWRnZXQnLAogICAgICAgICAgICBvbkNsaWNrOiAoKSA9PiBib3R0b21iYXIucmVtb3ZlV2lkZ2V0KCdlcnJvci0nICsgd2lkZ2V0Q291bnRlciksCiAgICAgICAgICB9KTsKICAgICAgICB9OwoKICAgICAgICB3aW5kb3cuYWRkTG9hZGluZ1dpZGdldCA9ICgpID0+IHsKICAgICAgICAgIHdpZGdldENvdW50ZXIrKzsKICAgICAgICAgIGNvbnN0IGlkID0gJ2xvYWRpbmctJyArIHdpZGdldENvdW50ZXI7CiAgICAgICAgICBib3R0b21iYXIuYWRkV2lkZ2V0KHsKICAgICAgICAgICAgaWQ6IGlkLAogICAgICAgICAgICBpY29uTmFtZTogJ2x1Y2lkZTpsb2FkZXIyJywKICAgICAgICAgICAgbGFiZWw6ICdMb2FkaW5nLi4uJywKICAgICAgICAgICAgc3RhdHVzOiAnYWN0aXZlJywKICAgICAgICAgICAgbG9hZGluZzogdHJ1ZSwKICAgICAgICAgICAgdG9vbHRpcDogJ0xvYWRpbmcgaW4gcHJvZ3Jlc3MnLAogICAgICAgICAgfSk7CgogICAgICAgICAgLy8gU2ltdWxhdGUgY29tcGxldGlvbiBhZnRlciAzIHNlY29uZHMKICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICBib3R0b21iYXIudXBkYXRlV2lkZ2V0KGlkLCB7CiAgICAgICAgICAgICAgaWNvbk5hbWU6ICdsdWNpZGU6Y2hlY2snLAogICAgICAgICAgICAgIGxhYmVsOiAnRG9uZSEnLAogICAgICAgICAgICAgIHN0YXR1czogJ3N1Y2Nlc3MnLAogICAgICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLAogICAgICAgICAgICB9KTsKICAgICAgICAgIH0sIDMwMDApOwogICAgICAgIH07CgogICAgICAgIHdpbmRvdy5hZGRSaWdodFdpZGdldCA9ICgpID0+IHsKICAgICAgICAgIHdpZGdldENvdW50ZXIrKzsKICAgICAgICAgIGJvdHRvbWJhci5hZGRXaWRnZXQoewogICAgICAgICAgICBpZDogJ3JpZ2h0LScgKyB3aWRnZXRDb3VudGVyLAogICAgICAgICAgICBpY29uTmFtZTogJ2x1Y2lkZTppbmZvJywKICAgICAgICAgICAgbGFiZWw6ICdSaWdodCAnICsgd2lkZ2V0Q291bnRlciwKICAgICAgICAgICAgcG9zaXRpb246ICdyaWdodCcsCiAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IGJvdHRvbWJhci5yZW1vdmVXaWRnZXQoJ3JpZ2h0LScgKyB3aWRnZXRDb3VudGVyKSwKICAgICAgICAgIH0pOwogICAgICAgIH07CgogICAgICAgIHdpbmRvdy5hZGRBY3Rpb24gPSAoKSA9PiB7CiAgICAgICAgICBhY3Rpb25Db3VudGVyKys7CiAgICAgICAgICBib3R0b21iYXIuYWRkQWN0aW9uKHsKICAgICAgICAgICAgaWQ6ICdhY3Rpb24tJyArIGFjdGlvbkNvdW50ZXIsCiAgICAgICAgICAgIGljb25OYW1lOiAnbHVjaWRlOnphcCcsCiAgICAgICAgICAgIHRvb2x0aXA6ICdBY3Rpb24gJyArIGFjdGlvbkNvdW50ZXIsCiAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IHsKICAgICAgICAgICAgICBhbGVydCgnQWN0aW9uICcgKyBhY3Rpb25Db3VudGVyICsgJyBjbGlja2VkJyk7CiAgICAgICAgICAgICAgYm90dG9tYmFyLnJlbW92ZUFjdGlvbignYWN0aW9uLScgKyBhY3Rpb25Db3VudGVyKTsKICAgICAgICAgICAgfSwKICAgICAgICAgIH0pOwogICAgICAgIH07CgogICAgICAgIHdpbmRvdy5jbGVhckFsbCA9ICgpID0+IHsKICAgICAgICAgIGJvdHRvbWJhci5jbGVhcldpZGdldHMoKTsKICAgICAgICAgIGJvdHRvbWJhci5jbGVhckFjdGlvbnMoKTsKICAgICAgICAgIHdpZGdldENvdW50ZXIgPSAwOwogICAgICAgICAgYWN0aW9uQ291bnRlciA9IDA7CiAgICAgICAgfTsKICAgICAgPFwvc2NyaXB0PgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgogIGBdKSkpLCJkZW1vRnVuYyIpfSk7dmFyIFBvdCxUUSxFSmEsSW90PWcoKCk9PntwZSgpO2h0KCk7R2EoKTtmcigpO1k5YSgpO1BvdD1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sVFE9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LEVKYT0oKCk9PntsZXQgcz1bbmUoImRlZXMtYXBwdWktYm90dG9tYmFyIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W107dmFyIGM9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNBcHB1aUJvdHRvbWJhciIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBiPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W1koKV0scD1bWSgpXSxQb3QodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ3aWRnZXRzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHY9PiJ3aWRnZXRzImluIHYsImhhcyIpLGdldDppKHY9PnYud2lkZ2V0cywiZ2V0Iiksc2V0OmkoKHYseCk9Pnt2LndpZGdldHM9eH0sInNldCIpfSxtZXRhZGF0YTpifSxvLGwpLFBvdCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImFjdGlvbnMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkodj0+ImFjdGlvbnMiaW4gdiwiaGFzIiksZ2V0Omkodj0+di5hY3Rpb25zLCJnZXQiKSxzZXQ6aSgodix4KT0+e3YuYWN0aW9ucz14fSwic2V0Iil9LG1ldGFkYXRhOmJ9LGQsdSksUG90KG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOmJ9LG51bGwsdCksYz1hPWUudmFsdWUsYiYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSl9c3RhdGljIGRlbW89SzlhO3N0YXRpYyBkZW1vR3JvdXBzPVsiQXBwIFVJIl07I2U9VFEodGhpcyxvLFtdKTtnZXQgd2lkZ2V0cygpe3JldHVybiB0aGlzLiNlfXNldCB3aWRnZXRzKGIpe3RoaXMuI2U9Yn0jdD0oVFEodGhpcyxsKSxUUSh0aGlzLGQsW10pKTtnZXQgYWN0aW9ucygpe3JldHVybiB0aGlzLiN0fXNldCBhY3Rpb25zKGIpe3RoaXMuI3Q9Yn1zdGF0aWMgc3R5bGVzPVtxZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGhlaWdodDogMjRweDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgfQoKICAgICAgLmJvdHRvbS1iYXIgewogICAgICAgIGhlaWdodDogMjRweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgcGFkZGluZzogMCA4cHg7CiAgICAgICAgZ2FwOiA0cHg7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1iZy10ZXJ0aWFyeSk7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgfQoKICAgICAgLndpZGdldCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNHB4OwogICAgICAgIHBhZGRpbmc6IDJweCA2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzIGVhc2UsIGNvbG9yIDAuMTVzIGVhc2U7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgLndpZGdldDpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1ob3Zlcik7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOwogICAgICB9CgogICAgICAud2lkZ2V0IGRlZXMtaWNvbiB7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC53aWRnZXQtc2VwYXJhdG9yIHsKICAgICAgICB3aWR0aDogMXB4OwogICAgICAgIGhlaWdodDogMTRweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1zdHJvbmcpOwogICAgICAgIG1hcmdpbjogMCA0cHg7CiAgICAgIH0KCiAgICAgIC8qIFN0YXR1cyBjb2xvcnMgbWF0Y2hpbmcgZGVlcy13b3Jrc3BhY2UtYm90dG9tYmFyICovCiAgICAgIC53aWRnZXQuYWN0aXZlIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTAgMTAwJSA0NSUpIiwiaHNsKDIxMCAxMDAlIDYwJSkiKX07CiAgICAgIH0KCiAgICAgIC53aWRnZXQuc3VjY2VzcyB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMTQyIDcwJSAzNSUpIiwiaHNsKDE0MiA3MCUgNTAlKSIpfTsKICAgICAgfQoKICAgICAgLndpZGdldC53YXJuaW5nIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgzOCA5MiUgNDUlKSIsImhzbCgzOCA5MiUgNTUlKSIpfTsKICAgICAgfQoKICAgICAgLndpZGdldC5lcnJvciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCA3MCUgNTAlKSIsImhzbCgwIDcwJSA2MCUpIil9OwogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIHNwaW4gewogICAgICAgIGZyb20geyB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfQogICAgICAgIHRvIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfQogICAgICB9CgogICAgICAuc3Bpbm5pbmcgewogICAgICAgIGFuaW1hdGlvbjogc3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7CiAgICAgIH0KCiAgICAgIC5zcGFjZXIgewogICAgICAgIGZsZXg6IDE7CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cyBlYXNlOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1ob3Zlcik7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbi5kaXNhYmxlZCB7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uLmRpc2FibGVkOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgfQogICAgYF07cmVuZGVyKCl7bGV0IGI9dGhpcy53aWRnZXRzLmZpbHRlcihmPT5mLnBvc2l0aW9uIT09InJpZ2h0Iikuc29ydCgoZix5KT0+KGYub3JkZXJ8fDApLSh5Lm9yZGVyfHwwKSksdj10aGlzLndpZGdldHMuZmlsdGVyKGY9PmYucG9zaXRpb249PT0icmlnaHQiKS5zb3J0KChmLHkpPT4oZi5vcmRlcnx8MCktKHkub3JkZXJ8fDApKSx4PXRoaXMuYWN0aW9ucy5maWx0ZXIoZj0+Zi5wb3NpdGlvbj09PSJsZWZ0IiksbT10aGlzLmFjdGlvbnMuZmlsdGVyKGY9PmYucG9zaXRpb24hPT0ibGVmdCIpO3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJib3R0b20tYmFyIj4KICAgICAgICA8IS0tIExlZnQgYWN0aW9ucyAtLT4KICAgICAgICAke3gubWFwKGY9PnRoaXMucmVuZGVyQWN0aW9uKGYpKX0KCiAgICAgICAgPCEtLSBMZWZ0IHdpZGdldHMgLS0+CiAgICAgICAgJHtiLm1hcCgoZix5KT0+d2AKICAgICAgICAgICR7eT4wfHx4Lmxlbmd0aD4wP3dgPGRpdiBjbGFzcz0id2lkZ2V0LXNlcGFyYXRvciI+PC9kaXY+YDoiIn0KICAgICAgICAgICR7dGhpcy5yZW5kZXJXaWRnZXQoZil9CiAgICAgICAgYCl9CgogICAgICAgIDxkaXYgY2xhc3M9InNwYWNlciI+PC9kaXY+CgogICAgICAgIDwhLS0gUmlnaHQgd2lkZ2V0cyAtLT4KICAgICAgICAke3YubWFwKChmLHkpPT53YAogICAgICAgICAgJHt0aGlzLnJlbmRlcldpZGdldChmKX0KICAgICAgICAgICR7eTx2Lmxlbmd0aC0xfHxtLmxlbmd0aD4wP3dgPGRpdiBjbGFzcz0id2lkZ2V0LXNlcGFyYXRvciI+PC9kaXY+YDoiIn0KICAgICAgICBgKX0KCiAgICAgICAgPCEtLSBSaWdodCBhY3Rpb25zIC0tPgogICAgICAgICR7bS5tYXAoZj0+dGhpcy5yZW5kZXJBY3Rpb24oZikpfQogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyV2lkZ2V0KGIpe2xldCB2PWIuc3RhdHVzJiZiLnN0YXR1cyE9PSJpZGxlIj9iLnN0YXR1czoiIix4PWIuaWNvbk5hbWU/Yi5pY29uTmFtZS5zdGFydHNXaXRoKCJsdWNpZGU6Iik/Yi5pY29uTmFtZTpgbHVjaWRlOiR7Yi5pY29uTmFtZX1gOiIiO3JldHVybiB3YAogICAgICA8ZGl2CiAgICAgICAgY2xhc3M9IndpZGdldCAke3Z9IgogICAgICAgIHRpdGxlPSIke2IudG9vbHRpcHx8IiJ9IgogICAgICAgIEBjbGljaz0keygpPT5iLm9uQ2xpY2s/LigpfQogICAgICAgIEBjb250ZXh0bWVudT0ke209PnRoaXMuaGFuZGxlV2lkZ2V0Q29udGV4dE1lbnUobSxiKX0KICAgICAgPgogICAgICAgICR7eD93YAogICAgICAgICAgPGRlZXMtaWNvbgogICAgICAgICAgICAuaWNvbj0ke3h9CiAgICAgICAgICAgIGljb25TaXplPSIxMiIKICAgICAgICAgICAgY2xhc3M9IiR7Yi5sb2FkaW5nPyJzcGlubmluZyI6IiJ9IgogICAgICAgICAgPjwvZGVlcy1pY29uPgogICAgICAgIGA6IiJ9CiAgICAgICAgJHtiLmxhYmVsP3dgPHNwYW4+JHtiLmxhYmVsfTwvc3Bhbj5gOiIifQogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyQWN0aW9uKGIpe2xldCB2PWIuaWNvbk5hbWUuc3RhcnRzV2l0aCgibHVjaWRlOiIpP2IuaWNvbk5hbWU6YGx1Y2lkZToke2IuaWNvbk5hbWV9YDtyZXR1cm4gd2AKICAgICAgPGRpdgogICAgICAgIGNsYXNzPSJhY3Rpb24tYnV0dG9uICR7Yi5kaXNhYmxlZD8iZGlzYWJsZWQiOiIifSIKICAgICAgICB0aXRsZT0iJHtiLnRvb2x0aXB8fCIifSIKICAgICAgICBAY2xpY2s9JHsoKT0+IWIuZGlzYWJsZWQmJmIub25DbGljaz8uKCl9CiAgICAgID4KICAgICAgICA8ZGVlcy1pY29uCiAgICAgICAgICAuaWNvbj0ke3Z9CiAgICAgICAgICBpY29uU2l6ZT0iMTIiCiAgICAgICAgPjwvZGVlcy1pY29uPgogICAgICA8L2Rpdj4KICAgIGB9YXN5bmMgaGFuZGxlV2lkZ2V0Q29udGV4dE1lbnUoYix2KXtpZighdi5jb250ZXh0TWVudUl0ZW1zfHx2LmNvbnRleHRNZW51SXRlbXMubGVuZ3RoPT09MClyZXR1cm47Yi5wcmV2ZW50RGVmYXVsdCgpO2xldCB4PVtdO2ZvcihsZXQgbSBvZiB2LmNvbnRleHRNZW51SXRlbXMpbS5kaXZpZGVyP3gucHVzaCh7ZGl2aWRlcjohMH0pOngucHVzaCh7bmFtZTptLm5hbWUsaWNvbk5hbWU6bS5pY29uTmFtZSxhY3Rpb246aShhc3luYygpPT57YXdhaXQgbS5hY3Rpb24oKX0sImFjdGlvbiIpLGRpc2FibGVkOm0uZGlzYWJsZWR9KTthd2FpdCAkYS5vcGVuQ29udGV4dE1lbnVXaXRoT3B0aW9ucyhiLHgpfWFkZFdpZGdldChiKXt0aGlzLndpZGdldHM9dGhpcy53aWRnZXRzLmZpbHRlcih2PT52LmlkIT09Yi5pZCksdGhpcy53aWRnZXRzPVsuLi50aGlzLndpZGdldHMsYl19dXBkYXRlV2lkZ2V0KGIsdil7dGhpcy53aWRnZXRzPXRoaXMud2lkZ2V0cy5tYXAoeD0+eC5pZD09PWI/ey4uLngsLi4udn06eCl9cmVtb3ZlV2lkZ2V0KGIpe3RoaXMud2lkZ2V0cz10aGlzLndpZGdldHMuZmlsdGVyKHY9PnYuaWQhPT1iKX1nZXRXaWRnZXQoYil7cmV0dXJuIHRoaXMud2lkZ2V0cy5maW5kKHY9PnYuaWQ9PT1iKX1jbGVhcldpZGdldHMoKXt0aGlzLndpZGdldHM9W119YWRkQWN0aW9uKGIpe3RoaXMuYWN0aW9ucz10aGlzLmFjdGlvbnMuZmlsdGVyKHY9PnYuaWQhPT1iLmlkKSx0aGlzLmFjdGlvbnM9Wy4uLnRoaXMuYWN0aW9ucyxiXX1yZW1vdmVBY3Rpb24oYil7dGhpcy5hY3Rpb25zPXRoaXMuYWN0aW9ucy5maWx0ZXIodj0+di5pZCE9PWIpfWNsZWFyQWN0aW9ucygpe3RoaXMuYWN0aW9ucz1bXX1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksVFEodGhpcyx1KX1zdGF0aWN7VFEoYSx0KX19O3JldHVybiBjPWF9KSgpfSk7dmFyIFo5YT1nKCgpPT57SW90KCl9KTt2YXIgWDlhLFE5YT1nKCgpPT57cGUoKTtYOWE9aSgoKT0+d2AKICA8c3R5bGU+CiAgICAke0pgCiAgICAgIC5kZW1vLWJhY2tncm91bmQgewogICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk1JSkiLCJoc2woMCAwJSA1JSkiKX07CiAgICAgICAgbWluLWhlaWdodDogMTAwdmg7CiAgICAgIH0KICAgICAgCiAgICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHg7CiAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMjRweDsKICAgICAgfQogICAgICAKICAgICAgLnNlY3Rpb24tdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMjRweDsKICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIG1hcmdpbjogMzJweCAwIDE2cHggMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDklKSIsImhzbCgwIDAlIDk1JSkiKX07CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyNWVtOwogICAgICB9CiAgICAgIAogICAgICAuc2VjdGlvbi10aXRsZTpmaXJzdC1jaGlsZCB7CiAgICAgICAgbWFyZ2luLXRvcDogMDsKICAgICAgfQogICAgICAKICAgICAgLmdyaWQtbGF5b3V0IHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjsKICAgICAgICBnYXA6IDI0cHg7CiAgICAgIH0KICAgICAgCiAgICAgIC5ncmlkLTNjb2wgewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyIDFmcjsKICAgICAgICBnYXA6IDI0cHg7CiAgICAgIH0KICAgICAgCiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA5NjhweCkgewogICAgICAgIC5ncmlkLTNjb2wgewogICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CiAgICAgICAgfQogICAgICB9CiAgICAgIAogICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsKICAgICAgICAuZ3JpZC1sYXlvdXQgewogICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CiAgICAgICAgfQogICAgICB9CiAgICAgIAogICAgICBjb2RlIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgODkuOCUpIiwiaHNsKDAgMCUgMTQuOSUpIil9OwogICAgICAgIHBhZGRpbmc6IDJweCA2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgfQogICAgYH0KICA8L3N0eWxlPgogIAogIDxkaXYgY2xhc3M9ImRlbW8tYmFja2dyb3VuZCI+CiAgICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICAgIDxoMiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+RGVmYXVsdCBQYW5lbHM8L2gyPgogICAgICAKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IlBhbmVsIENvbXBvbmVudCJ9IC5zdWJ0aXRsZT0keyJUaGUgZGVmYXVsdCBwYW5lbCB2YXJpYW50IHdpdGggc2hhZGNuLWluc3BpcmVkIHN0eWxpbmcifT4KICAgICAgICA8cD5UaGUgcGFuZWwgY29tcG9uZW50IGF1dG9tYXRpY2FsbHkgZm9sbG93cyB0aGUgdGhlbWUgYW5kIHByb3ZpZGVzIGNvbnNpc3RlbnQgc3R5bGluZyBmb3IgZ3JvdXBlZCBjb250ZW50LjwvcD4KICAgICAgICA8cD5JdCdzIHBlcmZlY3QgZm9yIGNyZWF0aW5nIHNlY3Rpb25zIGluIHlvdXIgYXBwbGljYXRpb24gd2l0aCBwcm9wZXIgc3BhY2luZyBhbmQgYm9yZGVycy48L3A+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgCiAgICAgIDxkaXYgY2xhc3M9ImdyaWQtbGF5b3V0Ij4KICAgICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiRmVhdHVyZSBPdmVydmlldyJ9IC5zdWJ0aXRsZT0keyJLZXkgY2FwYWJpbGl0aWVzIn0+CiAgICAgICAgICA8cD5HcmlkIGxheW91dHMgd29yayBncmVhdCB3aXRoIHBhbmVscyBmb3IgY3JlYXRpbmcgZGFzaGJvYXJkcyBhbmQgZmVhdHVyZSBzZWN0aW9ucy48L3A+CiAgICAgICAgICA8ZGVlcy1idXR0b24+TGVhcm4gTW9yZTwvZGVlcy1idXR0b24+CiAgICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAgIAogICAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJRdWljayBBY3Rpb25zIn0gLnN1YnRpdGxlPSR7IkNvbW1vbiB0YXNrcyJ9PgogICAgICAgICAgPHA+RWFjaCBwYW5lbCBtYWludGFpbnMgY29uc2lzdGVudCBzcGFjaW5nIGFuZCBzdHlsaW5nIGFjcm9zcyB5b3VyIGFwcGxpY2F0aW9uLjwvcD4KICAgICAgICAgIDxkZWVzLWJ1dHRvbj5HZXQgU3RhcnRlZDwvZGVlcy1idXR0b24+CiAgICAgICAgPC9kZWVzLXBhbmVsPgogICAgICA8L2Rpdj4KICAgICAgCiAgICAgIDxoMiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+UGFuZWwgVmFyaWFudHM8L2gyPgogICAgICAKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IkRlZmF1bHQgVmFyaWFudCJ9IC52YXJpYW50PSR7ImRlZmF1bHQifT4KICAgICAgICA8cD5UaGUgZGVmYXVsdCB2YXJpYW50IGhhcyBhIHdoaXRlIGJhY2tncm91bmQsIHN1YnRsZSBib3JkZXIsIGFuZCBtaW5pbWFsIHNoYWRvdy4gSXQncyB0aGUgc3RhbmRhcmQgY2hvaWNlIGZvciBtb3N0IGNvbnRlbnQuPC9wPgogICAgICAgIDxwPlVzZSA8Y29kZT52YXJpYW50PSJkZWZhdWx0IjwvY29kZT4gb3Igb21pdCB0aGUgdmFyaWFudCBwcm9wZXJ0eS48L3A+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJPdXRsaW5lIFZhcmlhbnQifSAuc3VidGl0bGU9JHsiVHJhbnNwYXJlbnQgYmFja2dyb3VuZCB3aXRoIGJvcmRlciJ9IC52YXJpYW50PSR7Im91dGxpbmUifT4KICAgICAgICA8cD5UaGUgb3V0bGluZSB2YXJpYW50IHJlbW92ZXMgdGhlIGJhY2tncm91bmQgY29sb3IgYW5kIHNoYWRvdywga2VlcGluZyBvbmx5IHRoZSBib3JkZXIuPC9wPgogICAgICAgIDxwPlVzZSA8Y29kZT52YXJpYW50PSJvdXRsaW5lIjwvY29kZT4gZm9yIGEgbGlnaHRlciB2aXN1YWwgd2VpZ2h0LjwvcD4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7Ikdob3N0IFZhcmlhbnQifSAuc3VidGl0bGU9JHsiTWluaW1hbCBzdHlsaW5nIGZvciBzdWJ0bGUgc2VjdGlvbnMifSAudmFyaWFudD0keyJnaG9zdCJ9PgogICAgICAgIDxwPlRoZSBnaG9zdCB2YXJpYW50IGhhcyBubyBib3JkZXIgb3IgYmFja2dyb3VuZCBieSBkZWZhdWx0LCBvbmx5IHNob3dpbmcgYSBzdWJ0bGUgYmFja2dyb3VuZCBvbiBob3Zlci48L3A+CiAgICAgICAgPHA+VXNlIDxjb2RlPnZhcmlhbnQ9Imdob3N0IjwvY29kZT4gZm9yIHRoZSBtb3N0IG1pbmltYWwgYXBwZWFyYW5jZS48L3A+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgCiAgICAgIDxoMiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+UGFuZWwgU2l6ZXM8L2gyPgogICAgICAKICAgICAgPGRpdiBjbGFzcz0iZ3JpZC0zY29sIj4KICAgICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiU21hbGwgUGFuZWwifSAuc2l6ZT0keyJzbSJ9PgogICAgICAgICAgPHA+Q29tcGFjdCBwYWRkaW5nIGZvciBkZW5zZSBsYXlvdXRzLjwvcD4KICAgICAgICAgIDxwPlVzZSA8Y29kZT5zaXplPSJzbSI8L2NvZGU+PC9wPgogICAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgICAKICAgICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiTWVkaXVtIFBhbmVsIn0gLnNpemU9JHsibWQifT4KICAgICAgICAgIDxwPkRlZmF1bHQgc2l6ZSB3aXRoIGJhbGFuY2VkIHNwYWNpbmcuPC9wPgogICAgICAgICAgPHA+VXNlIDxjb2RlPnNpemU9Im1kIjwvY29kZT4gb3Igb21pdC48L3A+CiAgICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAgIAogICAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJMYXJnZSBQYW5lbCJ9IC5zaXplPSR7ImxnIn0+CiAgICAgICAgICA8cD5HZW5lcm91cyBwYWRkaW5nIGZvciBwcm9taW5lbnQgc2VjdGlvbnMuPC9wPgogICAgICAgICAgPHA+VXNlIDxjb2RlPnNpemU9ImxnIjwvY29kZT48L3A+CiAgICAgICAgPC9kZWVzLXBhbmVsPgogICAgICA8L2Rpdj4KICAgICAgCiAgICAgIDxoMiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+Q29tcGxleCBFeGFtcGxlczwvaDI+CiAgICAgIAogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiRm9ybSBFeGFtcGxlIn0gLnN1YnRpdGxlPSR7IlBhbmVscyB3b3JrIGdyZWF0IGZvciBvcmdhbml6aW5nIGZvcm0gc2VjdGlvbnMifT4KICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dCAubGFiZWw9JHsiUHJvamVjdCBOYW1lIn0gLnJlcXVpcmVkPSR7ITB9PjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dCAubGFiZWw9JHsiRGVzY3JpcHRpb24ifSAuaW5wdXRUeXBlPSR7InRleHRhcmVhIn0+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1kcm9wZG93biAKICAgICAgICAgICAgLmxhYmVsPSR7IkNhdGVnb3J5In0gCiAgICAgICAgICAgIC5vcHRpb25zPSR7W3tvcHRpb246IldlYiBEZXZlbG9wbWVudCIsa2V5OiJ3ZWIifSx7b3B0aW9uOiJNb2JpbGUgQXBwIixrZXk6Im1vYmlsZSJ9LHtvcHRpb246IkRlc2t0b3AgU29mdHdhcmUiLGtleToiZGVza3RvcCJ9XX0KICAgICAgICAgID48L2RlZXMtaW5wdXQtZHJvcGRvd24+CiAgICAgICAgICA8ZGVlcy1mb3JtLXN1Ym1pdD5DcmVhdGUgUHJvamVjdDwvZGVlcy1mb3JtLXN1Ym1pdD4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7Ik5lc3RlZCBQYW5lbHMifSAuc3VidGl0bGU9JHsiUGFuZWxzIGNhbiBiZSBuZXN0ZWQgZm9yIGhpZXJhcmNoaWNhbCBvcmdhbml6YXRpb24ifT4KICAgICAgICA8cD5Zb3UgY2FuIG5lc3QgcGFuZWxzIHRvIGNyZWF0ZSBtb3JlIGNvbXBsZXggbGF5b3V0czo8L3A+CiAgICAgICAgCiAgICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7Ik5lc3RlZCBQYW5lbCAxIn0gLnZhcmlhbnQ9JHsib3V0bGluZSJ9IC5zaXplPSR7InNtIn0+CiAgICAgICAgICA8cD5UaGlzIGlzIGEgbmVzdGVkIHBhbmVsIHdpdGggb3V0bGluZSB2YXJpYW50IGFuZCBzbWFsbCBzaXplLjwvcD4KICAgICAgICA8L2RlZXMtcGFuZWw+CiAgICAgICAgCiAgICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7Ik5lc3RlZCBQYW5lbCAyIn0gLnZhcmlhbnQ9JHsiZ2hvc3QifSAuc2l6ZT0keyJzbSJ9PgogICAgICAgICAgPHA+VGhpcyBpcyBhbm90aGVyIG5lc3RlZCBwYW5lbCB3aXRoIGdob3N0IHZhcmlhbnQuPC9wPgogICAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGgyIGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5VbnRpdGxlZCBQYW5lbHM8L2gyPgogICAgICAKICAgICAgPGRlZXMtcGFuZWw+CiAgICAgICAgPHA+UGFuZWxzIHdvcmsgZ3JlYXQgZXZlbiB3aXRob3V0IGEgdGl0bGUgZm9yIHNpbXBsZSBjb250ZW50IGdyb3VwaW5nLjwvcD4KICAgICAgICA8cD5UaGV5IHByb3ZpZGUgdmlzdWFsIHNlcGFyYXRpb24gYW5kIGNvbnNpc3RlbnQgcGFkZGluZyB0aHJvdWdob3V0IHlvdXIgaW50ZXJmYWNlLjwvcD4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGRpdiBjbGFzcz0iZ3JpZC1sYXlvdXQiPgogICAgICAgIDxkZWVzLXBhbmVsIC52YXJpYW50PSR7Im91dGxpbmUifT4KICAgICAgICAgIDxoNCBzdHlsZT0ibWFyZ2luLXRvcDogMDsiPkN1c3RvbSBDb250ZW50PC9oND4KICAgICAgICAgIDxwPllvdSBjYW4gYWRkIHlvdXIgb3duIGhlYWRpbmdzIGFuZCBzdHJ1Y3R1cmUgd2l0aGluIHVudGl0bGVkIHBhbmVscy48L3A+CiAgICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAgIAogICAgICAgIDxkZWVzLXBhbmVsIC52YXJpYW50PSR7Imdob3N0In0+CiAgICAgICAgICA8aDQgc3R5bGU9Im1hcmdpbi10b3A6IDA7Ij5NaW5pbWFsIFN0eWxlPC9oND4KICAgICAgICAgIDxwPkdob3N0IHBhbmVscyB3aXRob3V0IHRpdGxlcyBjcmVhdGUgdmVyeSBzdWJ0bGUgY29udGVudCBzZWN0aW9ucy48L3A+CiAgICAgICAgPC9kZWVzLXBhbmVsPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2PgpgLCJkZW1vRnVuYyIpfSk7dmFyIFBKYSxJSmEsQW90LEQxZSxCYSxCZyxBSmEsTkphLEo5YSxSSmEsT0phLE5MbyxSTG8sRXI9ZygoKT0+e3BlKCk7UEphPSJHZWlzdCBTYW5zIixJSmE9IkludGVsIE9uZSBNb25vIixBb3Q9YCcke1BKYX0nLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsICdSb2JvdG8nLCAnT3h5Z2VuJywgJ1VidW50dScsICdDYW50YXJlbGwnLCAnRmlyYSBTYW5zJywgJ0Ryb2lkIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlmYCxEMWU9YCcke0lKYX0nLCAnU0YgTW9ubycsICdNb25hY28nLCAnSW5jb25zb2xhdGEnLCAnRmlyYSBDb2RlJywgJ0ZpcmEgTW9ubycsICdEcm9pZCBTYW5zIE1vbm8nLCAnQ291cmllciBOZXcnLCBtb25vc3BhY2VgLEJhPWFhKEFvdCksQmc9YWEoRDFlKSxBSmE9IkNhbCBTYW5zIixOSmE9YCcke0FKYX0nLCAke0FvdH1gLEo5YT1hYShOSmEpLFJKYT0iUm9ib3RvIFNsYWIiLE9KYT1gJyR7UkphfScsIEdlb3JnaWEsIHNlcmlmYCxOTG89YWEoT0phKSxSTG89YWEoYAogIGZvbnQtZmFtaWx5OiAke0FvdH07CiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKICBmb250LWZlYXR1cmUtc2V0dGluZ3M6ICdjdjExJywgJ3RudW0nLCAnY3YwNScgMTsKYCl9KTt2YXIgZ3gseTIsRkphLHhvPWcoKCk9PntwZSgpO1E5YSgpO0VyKCk7aHQoKTtneD1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0seTI9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LEZKYT0oKCk9PntsZXQgcz1bbmUoImRlZXMtcGFuZWwiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXTt2YXIgTj1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1BhbmVsIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IEM9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpTdHJpbmd9KV0scD1bTCh7dHlwZTpTdHJpbmd9KV0sYz1bTCh7dHlwZTpTdHJpbmd9KV0seD1bTCh7dHlwZTpTdHJpbmd9KV0seT1bTCh7YXR0cmlidXRlOiExfSldLGd4KHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidGl0bGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+InRpdGxlImluIF8sImhhcyIpLGdldDppKF89Pl8udGl0bGUsImdldCIpLHNldDppKChfLE8pPT57Xy50aXRsZT1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LG8sbCksZ3godGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzdWJ0aXRsZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4ic3VidGl0bGUiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5zdWJ0aXRsZSwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLnN1YnRpdGxlPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sZCx1KSxneCh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InZhcmlhbnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+InZhcmlhbnQiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy52YXJpYW50LCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18udmFyaWFudD1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LGIsdiksZ3godGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaXplIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJzaXplImluIF8sImhhcyIpLGdldDppKF89Pl8uc2l6ZSwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLnNpemU9T30sInNldCIpfSxtZXRhZGF0YTpDfSxtLGYpLGd4KHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToicnVuQWZ0ZXJSZW5kZXIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+InJ1bkFmdGVyUmVuZGVyImluIF8sImhhcyIpLGdldDppKF89Pl8ucnVuQWZ0ZXJSZW5kZXIsImdldCIpLHNldDppKChfLE8pPT57Xy5ydW5BZnRlclJlbmRlcj1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LE0seiksZ3gobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6Q30sbnVsbCx0KSxOPWE9ZS52YWx1ZSxDJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOkN9KX1zdGF0aWMgZGVtbz1YOWE7c3RhdGljIGRlbW9Hcm91cHM9WyJMYXlvdXQiXTsjZT15Mih0aGlzLG8sIiIpO2dldCB0aXRsZSgpe3JldHVybiB0aGlzLiNlfXNldCB0aXRsZShDKXt0aGlzLiNlPUN9I3Q9KHkyKHRoaXMsbCkseTIodGhpcyxkLCIiKSk7Z2V0IHN1YnRpdGxlKCl7cmV0dXJuIHRoaXMuI3R9c2V0IHN1YnRpdGxlKEMpe3RoaXMuI3Q9Q30jYT0oeTIodGhpcyx1KSx5Mih0aGlzLGIsImRlZmF1bHQiKSk7Z2V0IHZhcmlhbnQoKXtyZXR1cm4gdGhpcy4jYX1zZXQgdmFyaWFudChDKXt0aGlzLiNhPUN9I3M9KHkyKHRoaXMsdikseTIodGhpcyxtLCJtZCIpKTtnZXQgc2l6ZSgpe3JldHVybiB0aGlzLiNzfXNldCBzaXplKEMpe3RoaXMuI3M9Q30jaT0oeTIodGhpcyxmKSx5Mih0aGlzLE0sdm9pZCAwKSk7Z2V0IHJ1bkFmdGVyUmVuZGVyKCl7cmV0dXJuIHRoaXMuI2l9c2V0IHJ1bkFmdGVyUmVuZGVyKEMpe3RoaXMuI2k9Q31zdGF0aWMgc3R5bGVzPVtxZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgLyogVE9ETzogTWlncmF0ZSBoYXJkY29kZWQgdmFsdWVzIHRvIC0tZGVlcy0qIENTUyB2YXJpYWJsZXMgKi8KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGZvbnQtZmFtaWx5OiAke0JhfTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTAwJSkiLCJoc2woMCAwJSAzLjklKSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDAgMCUgODkuOCUpIiwiaHNsKDAgMCUgMTQuOSUpIil9OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CiAgICAgIH0KCiAgICAgIC8qIFZhcmlhbnQ6IGRlZmF1bHQgKi8KICAgICAgOmhvc3QoW3ZhcmlhbnQ9ImRlZmF1bHQiXSkgewogICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDJweCAwIGhzbCgwIDAlIDAlIC8gMC4wNSk7CiAgICAgIH0KCiAgICAgIC8qIFZhcmlhbnQ6IG91dGxpbmUgKi8KICAgICAgOmhvc3QoW3ZhcmlhbnQ9Im91dGxpbmUiXSkgewogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgICAgIH0KCiAgICAgIC8qIFZhcmlhbnQ6IGdob3N0ICovCiAgICAgIDpob3N0KFt2YXJpYW50PSJnaG9zdCJdKSB7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgICBib3gtc2hhZG93OiBub25lOwogICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgIH0KCiAgICAgIC8qIFNpemUgdmFyaWF0aW9ucyAqLwogICAgICA6aG9zdChbc2l6ZT0ic20iXSkgewogICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgIH0KCiAgICAgIDpob3N0KFtzaXplPSJsZyJdKSB7CiAgICAgICAgcGFkZGluZzogMzJweDsKICAgICAgfQoKICAgICAgLmhlYWRlciB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgfQoKICAgICAgLmhlYWRlcjplbXB0eSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgLnRpdGxlIHsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5JSkiLCJoc2woMCAwJSA5NSUpIil9OwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMjVlbTsKICAgICAgICBsaW5lLWhlaWdodDogMS41OwogICAgICB9CgogICAgICAvKiBUaXRsZSBzaXplIHZhcmlhdGlvbnMgKi8KICAgICAgOmhvc3QoW3NpemU9InNtIl0pIC50aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICB9CgogICAgICA6aG9zdChbc2l6ZT0ibGciXSkgLnRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDIwcHg7CiAgICAgIH0KCiAgICAgIC5zdWJ0aXRsZSB7CiAgICAgICAgbWFyZ2luOiA0cHggMCAwIDA7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDU2LjklKSIsImhzbCgyMTUgMjAuMiUgNTUuMSUpIil9OwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMDZlbTsKICAgICAgICBsaW5lLWhlaWdodDogMS41OwogICAgICB9CgogICAgICAvKiBTdWJ0aXRsZSBzaXplIHZhcmlhdGlvbnMgKi8KICAgICAgOmhvc3QoW3NpemU9InNtIl0pIC5zdWJ0aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICB9CgogICAgICA6aG9zdChbc2l6ZT0ibGciXSkgLnN1YnRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDE1cHg7CiAgICAgICAgbWFyZ2luLXRvcDogNnB4OwogICAgICB9CgogICAgICAuY29udGVudCB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjMgMjUlIDI2LjclKSIsImhzbCgyMTcuOSAxMC42JSA4NC45JSkiKX07CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgIH0KCiAgICAgIC8qIENvbnRlbnQgc2l6ZSB2YXJpYXRpb25zICovCiAgICAgIDpob3N0KFtzaXplPSJzbSJdKSAuY29udGVudCB7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICB9CgogICAgICA6aG9zdChbc2l6ZT0ibGciXSkgLmNvbnRlbnQgewogICAgICAgIGZvbnQtc2l6ZTogMTVweDsKICAgICAgfQoKICAgICAgLyogUmVtb3ZlIG1hcmdpbnMgZnJvbSBmaXJzdCBhbmQgbGFzdCBjaGlsZHJlbiAqLwogICAgICAuY29udGVudCA6OnNsb3R0ZWQoKjpmaXJzdC1jaGlsZCkgewogICAgICAgIG1hcmdpbi10b3A6IDA7CiAgICAgIH0KCiAgICAgIC5jb250ZW50IDo6c2xvdHRlZCgqOmxhc3QtY2hpbGQpIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICB9CgogICAgICAvKiBJbnRlcmFjdGl2ZSBzdGF0ZXMgZm9yIGRlZmF1bHQgdmFyaWFudCAqLwogICAgICA6aG9zdChbdmFyaWFudD0iZGVmYXVsdCJdOmhvdmVyKSB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNzkuOCUpIiwiaHNsKDAgMCUgMjAuOSUpIil9OwogICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDZweCAtMXB4IGhzbCgwIDAlIDAlIC8gMC4xKSwgMCAycHggNHB4IC0ycHggaHNsKDAgMCUgMCUgLyAwLjEpOwogICAgICB9CgogICAgICAvKiBJbnRlcmFjdGl2ZSBzdGF0ZXMgZm9yIG91dGxpbmUgdmFyaWFudCAqLwogICAgICA6aG9zdChbdmFyaWFudD0ib3V0bGluZSJdOmhvdmVyKSB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNzkuOCUpIiwiaHNsKDAgMCUgMjAuOSUpIil9OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5OCUpIiwiaHNsKDAgMCUgNy44JSkiKX07CiAgICAgIH0KCiAgICAgIC8qIEludGVyYWN0aXZlIHN0YXRlcyBmb3IgZ2hvc3QgdmFyaWFudCAqLwogICAgICA6aG9zdChbdmFyaWFudD0iZ2hvc3QiXTpob3ZlcikgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5NS4xJSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgIH0KCiAgICAgIC8qIEZvY3VzIHN0YXRlcyAqLwogICAgICA6aG9zdCg6Zm9jdXMtd2l0aGluKSB7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUpIiwiaHNsKDIxNy4yIDkxLjIlIDU5LjglKSIpfTsKICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggJHtoLmJkVGhlbWUoImhzbCgyMjIuMiA0Ny40JSA1MS4yJSAvIDAuMSkiLCJoc2woMjE3LjIgOTEuMiUgNTkuOCUgLyAwLjEpIil9OwogICAgICB9CgogICAgICAvKiBOZXN0ZWQgcGFuZWxzIHNwYWNpbmcgKi8KICAgICAgOjpzbG90dGVkKGRlZXMtcGFuZWwpIHsKICAgICAgICBtYXJnaW4tdG9wOiAxNnB4OwogICAgICB9CgogICAgICA6OnNsb3R0ZWQoZGVlcy1wYW5lbDpmaXJzdC1jaGlsZCkgewogICAgICAgIG1hcmdpbi10b3A6IDA7CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPgogICAgICAgICR7dGhpcy50aXRsZT93YDxoMyBjbGFzcz0idGl0bGUiPiR7dGhpcy50aXRsZX08L2gzPmA6IiJ9CiAgICAgICAgJHt0aGlzLnN1YnRpdGxlP3dgPHAgY2xhc3M9InN1YnRpdGxlIj4ke3RoaXMuc3VidGl0bGV9PC9wPmA6IiJ9CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KICAgICAgICA8c2xvdD48L3Nsb3Q+CiAgICAgIDwvZGl2PgogICAgYH1hc3luYyBmaXJzdFVwZGF0ZWQoKXt0aGlzLnJ1bkFmdGVyUmVuZGVyJiZhd2FpdCB0aGlzLnJ1bkFmdGVyUmVuZGVyKHRoaXMpfWNvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx5Mih0aGlzLHopfXN0YXRpY3t5MihhLHQpfX07cmV0dXJuIE49YX0pKCl9KTt2YXIgZWJhLE5vdCx0YmEsYWJhPWcoKCk9PntwZSgpO0l0KCk7eG8oKTtOb3Q9aShzPT5BcnJheS5mcm9tKHtsZW5ndGg6c30sKGUsdCk9Pih7aWQ6dCx1c2FnZTpNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkqMTAwKSxsYWJlbDpgJHt0fWB9KSksImdlbmVyYXRlQ3B1Q29yZXMiKSx0YmE9aSgoKT0+dyhlYmF8fChlYmE9YmMoW2AKICA8ZGVlcy1kZW1vd3JhcHBlcj4KICAgIDxzdHlsZT4KICAgICAgYCxgCiAgICA8L3N0eWxlPgogICAgCiAgICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT1gLCIgLnN1YnRpdGxlPSIsYD4KICAgICAgICA8ZGVlcy1zdGF0c2dyaWQKICAgICAgICAgIC50aWxlcz1gLGAKICAgICAgICAgIC5ncmlkQWN0aW9ucz1gLGAKICAgICAgICAgIC5taW5UaWxlV2lkdGg9YCxgCiAgICAgICAgICAuZ2FwPWAsYAogICAgICAgID48L2RlZXMtc3RhdHNncmlkPgogICAgICAgIAogICAgICAgIDxkaXYgaWQ9ImFjdGlvbi1vdXRwdXQiIHN0eWxlPSJtYXJnaW4tdG9wOiAxNnB4OyBwYWRkaW5nOiAxMnB4OyBiYWNrZ3JvdW5kOiBgLCI7IGJvcmRlci1yYWRpdXM6IDZweDsgZm9udC1zaXplOiAxNHB4OyBmb250LWZhbWlseTogbW9ub3NwYWNlOyBjb2xvcjogIixgOyI+CiAgICAgICAgICA8ZW0+Q2xpY2sgb24gdGlsZSBhY3Rpb25zIG9yIGdyaWQgYWN0aW9ucyB0byBzZWUgdGhlIHJlc3VsdC4uLjwvZW0+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT1gLCIgLnN1YnRpdGxlPSIsYD4KICAgICAgICA8ZGVlcy1zdGF0c2dyaWQKICAgICAgICAgIC50aWxlcz1gLGAKICAgICAgICAgIC5taW5UaWxlV2lkdGg9YCxgCiAgICAgICAgICAuZ2FwPWAsYAogICAgICAgID48L2RlZXMtc3RhdHNncmlkPgogICAgICAgIAogICAgICAgIDxkaXYgY2xhc3M9InRpbGUtY29uZmlnIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbmZpZy1zZWN0aW9uIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29uZmlnLXRpdGxlIj5Db25maWd1cmF0aW9uIE9wdGlvbnM8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29uZmlnLWRlc2NyaXB0aW9uIj4KICAgICAgICAgICAgICBFYWNoIHRpbGUgdHlwZSBzdXBwb3J0cyBkaWZmZXJlbnQgcHJvcGVydGllczoKICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbjogOHB4IDA7IHBhZGRpbmctbGVmdDogMjBweDsiPgogICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+TnVtYmVyOjwvc3Ryb25nPiB2YWx1ZSwgdW5pdCwgY29sb3IsIGRlc2NyaXB0aW9uPC9saT4KICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPkdhdWdlOjwvc3Ryb25nPiB2YWx1ZSwgdW5pdCwgZ2F1Z2VPcHRpb25zIChtaW4sIG1heCwgdGhyZXNob2xkcyk8L2xpPgogICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+UGVyY2VudGFnZTo8L3N0cm9uZz4gdmFsdWUgKDAtMTAwKSwgY29sb3IsIGRlc2NyaXB0aW9uPC9saT4KICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPlRyZW5kOjwvc3Ryb25nPiB2YWx1ZSwgdW5pdCwgdHJlbmREYXRhIGFycmF5LCBkZXNjcmlwdGlvbjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5UZXh0Ojwvc3Ryb25nPiB2YWx1ZSAoc3RyaW5nKSwgY29sb3IsIGRlc2NyaXB0aW9uPC9saT4KICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICAgIAogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9YCwiIC5zdWJ0aXRsZT0iLGA+CiAgICAgICAgPGg0IHN0eWxlPSJtYXJnaW46IDAgMCAxNnB4IDA7IGZvbnQtc2l6ZTogMTZweDsgZm9udC13ZWlnaHQ6IDYwMDsiPkNvbXBhY3QgTGF5b3V0ICgxODBweCB0aWxlcyk8L2g0PgogICAgICAgIDxkZWVzLXN0YXRzZ3JpZAogICAgICAgICAgLnRpbGVzPWAsYAogICAgICAgICAgLm1pblRpbGVXaWR0aD1gLGAKICAgICAgICAgIC5nYXA9YCxgCiAgICAgICAgPjwvZGVlcy1zdGF0c2dyaWQ+CiAgICAgICAgCiAgICAgICAgPGg0IHN0eWxlPSJtYXJnaW46IDI0cHggMCAxNnB4IDA7IGZvbnQtc2l6ZTogMTZweDsgZm9udC13ZWlnaHQ6IDYwMDsiPlNwYWNpb3VzIExheW91dCAoMzIwcHggdGlsZXMpPC9oND4KICAgICAgICA8ZGVlcy1zdGF0c2dyaWQKICAgICAgICAgIC50aWxlcz1gLGAKICAgICAgICAgIC5taW5UaWxlV2lkdGg9YCxgCiAgICAgICAgICAuZ2FwPWAsYAogICAgICAgID48L2RlZXMtc3RhdHNncmlkPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICAgIAogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9YCwiIC5zdWJ0aXRsZT0iLGA+CiAgICAgICAgPGRlZXMtc3RhdHNncmlkCiAgICAgICAgICBpZD0iY3B1LWNvcmVzLWdyaWQiCiAgICAgICAgICAudGlsZXM9YCxgCiAgICAgICAgICAuZ3JpZEFjdGlvbnM9YCxgCiAgICAgICAgICAubWluVGlsZVdpZHRoPWAsYAogICAgICAgICAgLmdhcD1gLGAKICAgICAgICA+PC9kZWVzLXN0YXRzZ3JpZD4KICAgICAgPC9kZWVzLXBhbmVsPgoKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPWAsIiAuc3VidGl0bGU9IixgPgogICAgICAgIDxkZWVzLXN0YXRzZ3JpZAogICAgICAgICAgaWQ9ImludGVyYWN0aXZlLWdyaWQiCiAgICAgICAgICAudGlsZXM9YCxgCiAgICAgICAgICAuZ3JpZEFjdGlvbnM9YCxgCiAgICAgICAgICAubWluVGlsZVdpZHRoPWAsYAogICAgICAgICAgLmdhcD1gLGAKICAgICAgICA+PC9kZWVzLXN0YXRzZ3JpZD4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPWAsIiAuc3VidGl0bGU9IixgPgogICAgICAgIDxkaXYgY2xhc3M9ImNvZGUtYmxvY2siPmAsYDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9YCwiIC5zdWJ0aXRsZT0iLGA+CiAgICAgICAgPGRlZXMtc3RhdHNncmlkCiAgICAgICAgICAudGlsZXM9YCxgCiAgICAgICAgICAubWluVGlsZVdpZHRoPWAsYAogICAgICAgICAgLmdhcD1gLGAKICAgICAgICA+PC9kZWVzLXN0YXRzZ3JpZD4KCiAgICAgICAgPGRpdiBjbGFzcz0idGlsZS1jb25maWciPgogICAgICAgICAgPGRpdiBjbGFzcz0iY29uZmlnLXNlY3Rpb24iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb25maWctdGl0bGUiPlBhcnRpdGlvbiBUaWxlIFByb3BlcnRpZXM8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29uZmlnLWRlc2NyaXB0aW9uIj4KICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbjogOHB4IDA7IHBhZGRpbmctbGVmdDogMjBweDsiPgogICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+cGFydGl0aW9uRGF0YS51c2VkOjwvc3Ryb25nPiBVc2VkIHNwYWNlIGluIGJ5dGVzIChhdXRvLWZvcm1hdHRlZCk8L2xpPgogICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+cGFydGl0aW9uRGF0YS50b3RhbDo8L3N0cm9uZz4gVG90YWwgY2FwYWNpdHkgaW4gYnl0ZXM8L2xpPgogICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+cGFydGl0aW9uRGF0YS5maWxlc3lzdGVtOjwvc3Ryb25nPiBGaWxlc3lzdGVtIHR5cGUgKGV4dDQsIHhmcywgbnRmcyk8L2xpPgogICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+cGFydGl0aW9uRGF0YS5tb3VudFBvaW50Ojwvc3Ryb25nPiBNb3VudCBwb2ludCBwYXRoIChvcHRpb25hbCk8L2xpPgogICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgQ29sb3IgdGhyZXNob2xkczogTm9ybWFsICgmbHQ7NzUlKSwgV2FybmluZyAoNzUtOTAlKSwgQ3JpdGljYWwgKCZndDs5MCUpCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb25maWctc2VjdGlvbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbmZpZy10aXRsZSI+RGlzayBUaWxlIFByb3BlcnRpZXM8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29uZmlnLWRlc2NyaXB0aW9uIj4KICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbjogOHB4IDA7IHBhZGRpbmctbGVmdDogMjBweDsiPgogICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+ZGlza0RhdGEuY2FwYWNpdHk6PC9zdHJvbmc+IFRvdGFsIGNhcGFjaXR5IGluIGJ5dGVzPC9saT4KICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPmRpc2tEYXRhLm1vZGVsOjwvc3Ryb25nPiBEaXNrIG1vZGVsIG5hbWUgKG9wdGlvbmFsKTwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5kaXNrRGF0YS50eXBlOjwvc3Ryb25nPiBEaXNrIHR5cGU6ICdzc2QnLCAnaGRkJywgb3IgJ252bWUnPC9saT4KICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPmRpc2tEYXRhLmlvcHM6PC9zdHJvbmc+IFJlYWQvd3JpdGUgSU9QUyAob3B0aW9uYWwpPC9saT4KICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPmRpc2tEYXRhLmhlYWx0aDo8L3N0cm9uZz4gSGVhbHRoIHBlcmNlbnRhZ2UgMC0xMDAgKG9wdGlvbmFsKTwvbGk+CiAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICBIZWFsdGggdGhyZXNob2xkczogR29vZCAoNzAtMTAwJSksIFdhcm5pbmcgKDMwLTcwJSksIENyaXRpY2FsICgmbHQ7MzAlKQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2Rpdj4KCiAgICA8c2NyaXB0PgogICAgICAvLyBDbGVhbnVwIGxpdmUgdXBkYXRlcyBvbiBwYWdlIHVubG9hZAogICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgKCkgPT4gewogICAgICAgIGlmICgod2luZG93IGFzIGFueSkubGl2ZVVwZGF0ZUludGVydmFsKSB7CiAgICAgICAgICBjbGVhckludGVydmFsKCh3aW5kb3cgYXMgYW55KS5saXZlVXBkYXRlSW50ZXJ2YWwpOwogICAgICAgIH0KICAgICAgfSk7CiAgICA8XC9zY3JpcHQ+CiAgPC9kZWVzLWRlbW93cmFwcGVyPgogIGBdKSksSmAKICAgICAgICAuZGVtby1jb250YWluZXIgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICBnYXA6IDI0cHg7CiAgICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgICAgbWF4LXdpZHRoOiAxNDAwcHg7CiAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZGVlcy1wYW5lbCB7CiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICBkZWVzLXBhbmVsOmxhc3QtY2hpbGQgewogICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnRpbGUtY29uZmlnIHsKICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDMwMHB4LCAxZnIpKTsKICAgICAgICAgIGdhcDogMTZweDsKICAgICAgICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5jb25maWctc2VjdGlvbiB7CiAgICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgNDAlIDk2LjElKSIsImhzbCgyMTUgMjAuMiUgMTYuOCUpIil9OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuY29uZmlnLXRpdGxlIHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuMyAyNSUgOC44JSkiLCJoc2woMjEwIDQwJSA5OCUpIil9OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuY29uZmlnLWRlc2NyaXB0aW9uIHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDU2LjklKSIsImhzbCgyMTUgMjAuMiUgNTUuMSUpIil9OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuY29kZS1ibG9jayB7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxMCA0MCUgOTYuMSUpIiwiaHNsKDIxNSAyMC4yJSAxMS44JSkiKX07CiAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDIxNC4zIDMxLjglIDkxLjQlKSIsImhzbCgyMTUgMjAuMiUgMTYuOCUpIil9OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwogICAgICAgICAgd2hpdGUtc3BhY2U6IHByZTsKICAgICAgICB9CiAgICAgIGAsIjEuIENvbXByZWhlbnNpdmUgRGFzaGJvYXJkIiwiRnVsbC1mZWF0dXJlZCBzdGF0cyBncmlkIHdpdGggdmFyaW91cyB0aWxlIHR5cGVzLCBhY3Rpb25zLCBhbmQgTHVjaWRlIGljb25zIixbe2lkOiJyZXZlbnVlIix0aXRsZToiVG90YWwgUmV2ZW51ZSIsdmFsdWU6MTI1NDIwLHVuaXQ6IiQiLHR5cGU6Im51bWJlciIsaWNvbjoibHVjaWRlOmRvbGxhci1zaWduIixkZXNjcmlwdGlvbjoiKzEyLjUlIGZyb20gbGFzdCBtb250aCIsYWN0aW9uczpbe25hbWU6IlZpZXcgRGV0YWlscyIsaWNvbk5hbWU6Imx1Y2lkZTp0cmVuZGluZy11cCIsYWN0aW9uOmkoYXN5bmMoKT0+e2xldCBzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNhY3Rpb24tb3V0cHV0Iik7cyYmKHMudGV4dENvbnRlbnQ9IlZpZXdpbmcgcmV2ZW51ZSBkZXRhaWxzOiAkMTI1LDQyMCAoKzEyLjUlKSIpfSwiYWN0aW9uIil9LHtuYW1lOiJFeHBvcnQgRGF0YSIsaWNvbk5hbWU6Imx1Y2lkZTpkb3dubG9hZCIsYWN0aW9uOmkoYXN5bmMoKT0+e2xldCBzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNhY3Rpb24tb3V0cHV0Iik7cyYmKHMudGV4dENvbnRlbnQ9IkV4cG9ydGluZyByZXZlbnVlIGRhdGEgdG8gQ1NWLi4uIil9LCJhY3Rpb24iKX1dfSx7aWQ6InVzZXJzIix0aXRsZToiQWN0aXZlIFVzZXJzIix2YWx1ZTozODQ3LHR5cGU6Im51bWJlciIsaWNvbjoibHVjaWRlOnVzZXJzIixkZXNjcmlwdGlvbjoiMzI0IG5ldyB0aGlzIHdlZWsiLGFjdGlvbnM6W3tuYW1lOiJWaWV3IFVzZXIgTGlzdCIsaWNvbk5hbWU6Imx1Y2lkZTpsaXN0IixhY3Rpb246aShhc3luYygpPT57bGV0IHM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2FjdGlvbi1vdXRwdXQiKTtzJiYocy50ZXh0Q29udGVudD0iT3BlbmluZyB1c2VyIGxpc3QuLi4iKX0sImFjdGlvbiIpfV19LHtpZDoiY3B1Iix0aXRsZToiQ1BVIFVzYWdlIix2YWx1ZTo3Myx1bml0OiIlIix0eXBlOiJnYXVnZSIsaWNvbjoibHVjaWRlOmNwdSIsZ2F1Z2VPcHRpb25zOnttaW46MCxtYXg6MTAwLHRocmVzaG9sZHM6W3t2YWx1ZTowLGNvbG9yOiJoc2woMTQyLjEgNzYuMiUgMzYuMyUpIn0se3ZhbHVlOjYwLGNvbG9yOiJoc2woNDUuNCA5My40JSA0Ny41JSkifSx7dmFsdWU6ODAsY29sb3I6ImhzbCgwIDg0LjIlIDYwLjIlKSJ9XX19LHtpZDoic3RvcmFnZSIsdGl0bGU6IlN0b3JhZ2UgVXNlZCIsdmFsdWU6NjUsdHlwZToicGVyY2VudGFnZSIsaWNvbjoibHVjaWRlOmhhcmQtZHJpdmUiLGRlc2NyaXB0aW9uOiI2NTAgR0Igb2YgMSBUQiJ9LHtpZDoibGF0ZW5jeSIsdGl0bGU6IlJlc3BvbnNlIFRpbWUiLHZhbHVlOjE0Mix1bml0OiJtcyIsdHlwZToidHJlbmQiLGljb246Imx1Y2lkZTphY3Rpdml0eSIsdHJlbmREYXRhOlsxNTAsMTQ1LDE0OCwxNDIsMTM4LDE0MCwxMzUsMTQ1LDE0Ml0sZGVzY3JpcHRpb246IlA5NSJ9LHtpZDoidXB0aW1lIix0aXRsZToiU3lzdGVtIFVwdGltZSIsdmFsdWU6Ijk5Ljk1JSIsdHlwZToidGV4dCIsaWNvbjoibHVjaWRlOmNoZWNrLWNpcmNsZSIsY29sb3I6ImhzbCgxNDIuMSA3Ni4yJSAzNi4zJSkiLGRlc2NyaXB0aW9uOiJMYXN0IDMwIGRheXMifV0sW3tuYW1lOiJSZWZyZXNoIixpY29uTmFtZToibHVjaWRlOnJlZnJlc2gtY3ciLGFjdGlvbjppKGFzeW5jKCk9PntsZXQgcz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkZWVzLXN0YXRzZ3JpZCIpO3MmJihzLnN0eWxlLm9wYWNpdHk9IjAuNSIsc2V0VGltZW91dCgoKT0+e3Muc3R5bGUub3BhY2l0eT0iMSJ9LDMwMCkpfSwiYWN0aW9uIil9LHtuYW1lOiJFeHBvcnQiLGljb25OYW1lOiJsdWNpZGU6c2hhcmUiLGFjdGlvbjppKGFzeW5jKCk9PntsZXQgcz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjYWN0aW9uLW91dHB1dCIpO3MmJihzLnRleHRDb250ZW50PSJFeHBvcnRpbmcgZGFzaGJvYXJkIHJlcG9ydC4uLiIpfSwiYWN0aW9uIil9LHtuYW1lOiJTZXR0aW5ncyIsaWNvbk5hbWU6Imx1Y2lkZTpzZXR0aW5ncyIsYWN0aW9uOmkoYXN5bmMoKT0+e2xldCBzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNhY3Rpb24tb3V0cHV0Iik7cyYmKHMudGV4dENvbnRlbnQ9Ik9wZW5pbmcgZGFzaGJvYXJkIHNldHRpbmdzLi4uIil9LCJhY3Rpb24iKX1dLDI1MCwxNixoLmJkVGhlbWUoImhzbCgyMTAgNDAlIDk2LjElKSIsImhzbCgyMTUgMjAuMiUgMTYuOCUpIiksaC5iZFRoZW1lKCJoc2woMjE1LjMgMjUlIDguOCUpIiwiaHNsKDIxMCA0MCUgOTglKSIpLCIyLiBUaWxlIFR5cGVzIiwiRGlmZmVyZW50IHZpc3VhbGl6YXRpb24gdHlwZXMgYXZhaWxhYmxlIGluIHRoZSBzdGF0cyBncmlkIixbe2lkOiJudW1iZXItZXhhbXBsZSIsdGl0bGU6Ik51bWJlciBUaWxlIix2YWx1ZTo0MjE5NSx1bml0OiIkIix0eXBlOiJudW1iZXIiLGljb246Imx1Y2lkZTpoYXNoIixkZXNjcmlwdGlvbjoiU2ltcGxlIG51bWVyaWMgZGlzcGxheSJ9LHtpZDoiZ2F1Z2UtZXhhbXBsZSIsdGl0bGU6IkdhdWdlIFRpbGUiLHZhbHVlOjY4LHVuaXQ6IiUiLHR5cGU6ImdhdWdlIixpY29uOiJsdWNpZGU6Z2F1Z2UiLGdhdWdlT3B0aW9uczp7bWluOjAsbWF4OjEwMCx0aHJlc2hvbGRzOlt7dmFsdWU6MCxjb2xvcjoiaHNsKDE0Mi4xIDc2LjIlIDM2LjMlKSJ9LHt2YWx1ZTo1MCxjb2xvcjoiaHNsKDQ1LjQgOTMuNCUgNDcuNSUpIn0se3ZhbHVlOjgwLGNvbG9yOiJoc2woMCA4NC4yJSA2MC4yJSkifV19fSx7aWQ6InBlcmNlbnRhZ2UtZXhhbXBsZSIsdGl0bGU6IlBlcmNlbnRhZ2UgVGlsZSIsdmFsdWU6NzgsdHlwZToicGVyY2VudGFnZSIsaWNvbjoibHVjaWRlOnBlcmNlbnQiLGRlc2NyaXB0aW9uOiJQcm9ncmVzcyBiYXIgdmlzdWFsaXphdGlvbiJ9LHtpZDoidHJlbmQtZXhhbXBsZSIsdGl0bGU6IlRyZW5kIFRpbGUiLHZhbHVlOjg5Mix1bml0OiJvcHMvcyIsdHlwZToidHJlbmQiLGljb246Imx1Y2lkZTp0cmVuZGluZy11cCIsdHJlbmREYXRhOls3MjAsNzUwLDc4MCw3OTUsODEwLDgzNSw4NTAsODY1LDg4MCw4OTJdLGRlc2NyaXB0aW9uOiJhdmcifSx7aWQ6InRleHQtZXhhbXBsZSIsdGl0bGU6IlRleHQgVGlsZSIsdmFsdWU6Ik9wZXJhdGlvbmFsIix0eXBlOiJ0ZXh0IixpY29uOiJsdWNpZGU6aW5mbyIsY29sb3I6ImhzbCgxNDIuMSA3Ni4yJSAzNi4zJSkiLGRlc2NyaXB0aW9uOiJTdGF0dXMgZGlzcGxheSJ9XSwyODAsMTYsIjMuIEdyaWQgQ29uZmlndXJhdGlvbnMiLCJEaWZmZXJlbnQgbGF5b3V0IG9wdGlvbnMgYW5kIHJlc3BvbnNpdmUgYmVoYXZpb3IiLFt7aWQ6IjEiLHRpdGxlOiJPcmRlcnMiLHZhbHVlOjE1Nix0eXBlOiJudW1iZXIiLGljb246Imx1Y2lkZTpzaG9wcGluZy1jYXJ0In0se2lkOiIyIix0aXRsZToiUmV2ZW51ZSIsdmFsdWU6ODQyMCx1bml0OiIkIix0eXBlOiJudW1iZXIiLGljb246Imx1Y2lkZTpkb2xsYXItc2lnbiJ9LHtpZDoiMyIsdGl0bGU6IlVzZXJzIix2YWx1ZTo0MjMsdHlwZToibnVtYmVyIixpY29uOiJsdWNpZGU6dXNlcnMifSx7aWQ6IjQiLHRpdGxlOiJHcm93dGgiLHZhbHVlOjEyLjUsdW5pdDoiJSIsdHlwZToibnVtYmVyIixpY29uOiJsdWNpZGU6dHJlbmRpbmctdXAiLGNvbG9yOiJoc2woMTQyLjEgNzYuMiUgMzYuMyUpIn1dLDE4MCwxMixbe2lkOiJzcGFjaW91czEiLHRpdGxlOiJNb250aGx5IFJldmVudWUiLHZhbHVlOjE4NDUwMCx1bml0OiIkIix0eXBlOiJudW1iZXIiLGljb246Imx1Y2lkZTpjcmVkaXQtY2FyZCIsZGVzY3JpcHRpb246IlRvdGFsIHJldmVudWUgdGhpcyBtb250aCJ9LHtpZDoic3BhY2lvdXMyIix0aXRsZToiQ3VzdG9tZXIgU2F0aXNmYWN0aW9uIix2YWx1ZTo5NCx0eXBlOiJwZXJjZW50YWdlIixpY29uOiJsdWNpZGU6c21pbGUiLGRlc2NyaXB0aW9uOiJCYXNlZCBvbiAxLDIzNCByZXZpZXdzIn0se2lkOiJzcGFjaW91czMiLHRpdGxlOiJTZXJ2ZXIgUmVzcG9uc2UiLHZhbHVlOjk4LHVuaXQ6Im1zIix0eXBlOiJ0cmVuZCIsaWNvbjoibHVjaWRlOnNlcnZlciIsdHJlbmREYXRhOlsxMDUsMTAyLDEwMCw5OSw5OCw5OCw5Nyw5OF0sZGVzY3JpcHRpb246ImF2ZyByZXNwb25zZSB0aW1lIn1dLDMyMCwyMCwiNC4gQ1BVIENvcmVzIFZpc3VhbGl6YXRpb24iLCJWZXJ0aWNhbCBiYXIgdmlzdWFsaXphdGlvbiBmb3IgbXVsdGktY29yZSBDUFUgdXNhZ2Ugd2l0aCBjb2x1bW4gc3Bhbm5pbmciLFt7aWQ6ImNwdS1jb3Jlcy04Iix0aXRsZToiQ1BVIENvcmVzICg4LWNvcmUpIix2YWx1ZTowLHR5cGU6ImNwdUNvcmVzIixpY29uOiJsdWNpZGU6Y3B1Iixjb2x1bW5TcGFuOjIsY29yZXNEYXRhOk5vdCg4KSxkZXNjcmlwdGlvbjoiSW50ZWwgaTcgLSA4IGNvcmVzIn0se2lkOiJtZW1vcnkiLHRpdGxlOiJNZW1vcnkgVXNhZ2UiLHZhbHVlOjY4LHR5cGU6InBlcmNlbnRhZ2UiLGljb246Imx1Y2lkZTpkYXRhYmFzZSIsZGVzY3JpcHRpb246IjEzLjYgR0Igb2YgMjAgR0IifSx7aWQ6ImNwdS1jb3Jlcy0xNiIsdGl0bGU6IkNQVSBDb3JlcyAoMTYtY29yZSkiLHZhbHVlOjAsdHlwZToiY3B1Q29yZXMiLGljb246Imx1Y2lkZTpjcHUiLGNvbHVtblNwYW46Mixjb3Jlc0RhdGE6Tm90KDE2KSxkZXNjcmlwdGlvbjoiQU1EIFJ5emVuIDkgLSAxNiBjb3JlcyJ9LHtpZDoibmV0d29yayIsdGl0bGU6Ik5ldHdvcmsgSS9PIix2YWx1ZToyNDUsdW5pdDoiTUIvcyIsdHlwZToidHJlbmQiLGljb246Imx1Y2lkZTpuZXR3b3JrIix0cmVuZERhdGE6WzIwMCwyMjAsMjM1LDI0MCwyMzgsMjQ1XSxkZXNjcmlwdGlvbjoidGhyb3VnaHB1dCJ9LHtpZDoiY3B1LWNvcmVzLTMyIix0aXRsZToiU2VydmVyIENQVSAoMzItY29yZSkiLHZhbHVlOjAsdHlwZToiY3B1Q29yZXMiLGljb246Imx1Y2lkZTpzZXJ2ZXIiLGNvbHVtblNwYW46Myxjb3Jlc0RhdGE6Tm90KDMyKSxkZXNjcmlwdGlvbjoiQU1EIEVQWUMgLSAzMiBjb3JlcyJ9LHtpZDoiZGlzayIsdGl0bGU6IkRpc2sgVXNhZ2UiLHZhbHVlOjQyLHR5cGU6InBlcmNlbnRhZ2UiLGljb246Imx1Y2lkZTpoYXJkLWRyaXZlIixkZXNjcmlwdGlvbjoiNDIwIEdCIG9mIDEgVEIifV0sW3tuYW1lOiJSYW5kb21pemUiLGljb25OYW1lOiJsdWNpZGU6c2h1ZmZsZSIsYWN0aW9uOmkoYXN5bmMoKT0+e2xldCBzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNjcHUtY29yZXMtZ3JpZCIpO2lmKCFzKXJldHVybjtsZXQgZT1zLnRpbGVzLm1hcCh0PT50LnR5cGU9PT0iY3B1Q29yZXMiJiZ0LmNvcmVzRGF0YT97Li4udCxjb3Jlc0RhdGE6dC5jb3Jlc0RhdGEubWFwKGE9Pih7Li4uYSx1c2FnZTpNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkqMTAwKX0pKX06dCk7cy50aWxlcz1lfSwiYWN0aW9uIil9XSwyNTAsMTYsIjUuIEludGVyYWN0aXZlIEZlYXR1cmVzIiwiVGlsZXMgd2l0aCBhY3Rpb25zIGFuZCByZWFsLXRpbWUgdXBkYXRlcyIsW3tpZDoibGl2ZS1jcHUiLHRpdGxlOiJMaXZlIENQVSIsdmFsdWU6NDUsdW5pdDoiJSIsdHlwZToiZ2F1Z2UiLGljb246Imx1Y2lkZTpjcHUiLGdhdWdlT3B0aW9uczp7bWluOjAsbWF4OjEwMCx0aHJlc2hvbGRzOlt7dmFsdWU6MCxjb2xvcjoiaHNsKDE0Mi4xIDc2LjIlIDM2LjMlKSJ9LHt2YWx1ZTo2MCxjb2xvcjoiaHNsKDQ1LjQgOTMuNCUgNDcuNSUpIn0se3ZhbHVlOjgwLGNvbG9yOiJoc2woMCA4NC4yJSA2MC4yJSkifV19fSx7aWQ6ImxpdmUtcmVxdWVzdHMiLHRpdGxlOiJSZXF1ZXN0cy9zZWMiLHZhbHVlOjg5Mix0eXBlOiJ0cmVuZCIsaWNvbjoibHVjaWRlOmFjdGl2aXR5Iix0cmVuZERhdGE6Wzg1MCw4NjAsODcwLDg4MCw4ODUsODkwLDg5Ml19LHtpZDoibGl2ZS1tZW1vcnkiLHRpdGxlOiJNZW1vcnkgVXNhZ2UiLHZhbHVlOjYyLHR5cGU6InBlcmNlbnRhZ2UiLGljb246Imx1Y2lkZTpkYXRhYmFzZSJ9LHtpZDoiY291bnRlciIsdGl0bGU6IkV2ZW50IENvdW50ZXIiLHZhbHVlOjAsdHlwZToibnVtYmVyIixpY29uOiJsdWNpZGU6emFwIixhY3Rpb25zOlt7bmFtZToiSW5jcmVtZW50IixpY29uTmFtZToibHVjaWRlOnBsdXMiLGFjdGlvbjppKGFzeW5jKCk9PntsZXQgcz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjaW50ZXJhY3RpdmUtZ3JpZCIpO2lmKCFzKXJldHVybjtsZXQgZT1zLnRpbGVzLmZpbmQodD0+dC5pZD09PSJjb3VudGVyIik7ZS52YWx1ZT10eXBlb2YgZS52YWx1ZT09Im51bWJlciI/ZS52YWx1ZSsxOjEscy50aWxlcz1bLi4ucy50aWxlc119LCJhY3Rpb24iKX0se25hbWU6IlJlc2V0IixpY29uTmFtZToibHVjaWRlOnJvdGF0ZS1jY3ciLGFjdGlvbjppKGFzeW5jKCk9PntsZXQgcz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjaW50ZXJhY3RpdmUtZ3JpZCIpO2lmKCFzKXJldHVybjtsZXQgZT1zLnRpbGVzLmZpbmQodD0+dC5pZD09PSJjb3VudGVyIik7ZS52YWx1ZT0wLHMudGlsZXM9Wy4uLnMudGlsZXNdfSwiYWN0aW9uIil9XX1dLFt7bmFtZToiU3RhcnQgTGl2ZSBVcGRhdGVzIixpY29uTmFtZToibHVjaWRlOnBsYXkiLGFjdGlvbjppKGFzeW5jIGZ1bmN0aW9uKCl7d2luZG93LmxpdmVVcGRhdGVJbnRlcnZhbD8oY2xlYXJJbnRlcnZhbCh3aW5kb3cubGl2ZVVwZGF0ZUludGVydmFsKSx3aW5kb3cubGl2ZVVwZGF0ZUludGVydmFsPW51bGwsdGhpcy5uYW1lPSJTdGFydCBMaXZlIFVwZGF0ZXMiLHRoaXMuaWNvbk5hbWU9Imx1Y2lkZTpwbGF5Iik6KHdpbmRvdy5saXZlVXBkYXRlSW50ZXJ2YWw9c2V0SW50ZXJ2YWwoKCk9PntsZXQgcz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjaW50ZXJhY3RpdmUtZ3JpZCIpO2lmKHMpe2xldCBlPVsuLi5zLnRpbGVzXSx0PWUuZmluZChvPT5vLmlkPT09ImxpdmUtY3B1Iik7dC52YWx1ZT1NYXRoLm1heCgwLE1hdGgubWluKDEwMCx0LnZhbHVlKyhNYXRoLnJhbmRvbSgpKjIwLTEwKSkpO2xldCBhPWUuZmluZChvPT5vLmlkPT09ImxpdmUtcmVxdWVzdHMiKSxyPWEudmFsdWUrTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpKjUwLTI1KTthLnZhbHVlPU1hdGgubWF4KDgwMCxyKSxhLnRyZW5kRGF0YT1bLi4uYS50cmVuZERhdGEuc2xpY2UoMSksYS52YWx1ZV07bGV0IG49ZS5maW5kKG89Pm8uaWQ9PT0ibGl2ZS1tZW1vcnkiKTtuLnZhbHVlPU1hdGgubWF4KDAsTWF0aC5taW4oMTAwLG4udmFsdWUrKE1hdGgucmFuZG9tKCkqMTAtNSkpKSxzLnRpbGVzPWV9fSwxZTMpLHRoaXMubmFtZT0iU3RvcCBMaXZlIFVwZGF0ZXMiLHRoaXMuaWNvbk5hbWU9Imx1Y2lkZTpwYXVzZSIpfSwiYWN0aW9uIil9XSwyNTAsMTYsIjYuIENvZGUgRXhhbXBsZSIsIkhvdyB0byBpbXBsZW1lbnQgYSBzdGF0cyBncmlkIHdpdGggVHlwZVNjcmlwdCIsYGNvbnN0IHRpbGVzOiBJU3RhdHNUaWxlW10gPSBbCiAgewogICAgaWQ6ICdyZXZlbnVlJywKICAgIHRpdGxlOiAnVG90YWwgUmV2ZW51ZScsCiAgICB2YWx1ZTogMTI1NDIwLAogICAgdW5pdDogJyQnLAogICAgdHlwZTogJ251bWJlcicsCiAgICBpY29uOiAnbHVjaWRlOmRvbGxhci1zaWduJywKICAgIGRlc2NyaXB0aW9uOiAnKzEyLjUlIGZyb20gbGFzdCBtb250aCcsCiAgICBhY3Rpb25zOiBbCiAgICAgIHsKICAgICAgICBuYW1lOiAnVmlldyBEZXRhaWxzJywKICAgICAgICBpY29uTmFtZTogJ2x1Y2lkZTp0cmVuZGluZy11cCcsCiAgICAgICAgYWN0aW9uOiBhc3luYyAoKSA9PiB7CiAgICAgICAgICBjb25zb2xlLmxvZygnVmlldyByZXZlbnVlIGRldGFpbHMnKTsKICAgICAgICB9CiAgICAgIH0KICAgIF0KICB9LAogIHsKICAgIGlkOiAnY3B1JywKICAgIHRpdGxlOiAnQ1BVIFVzYWdlJywKICAgIHZhbHVlOiA3MywKICAgIHVuaXQ6ICclJywKICAgIHR5cGU6ICdnYXVnZScsCiAgICBpY29uOiAnbHVjaWRlOmNwdScsCiAgICBnYXVnZU9wdGlvbnM6IHsKICAgICAgbWluOiAwLAogICAgICBtYXg6IDEwMCwKICAgICAgdGhyZXNob2xkczogWwogICAgICAgIHsgdmFsdWU6IDAsIGNvbG9yOiAnaHNsKDE0Mi4xIDc2LjIlIDM2LjMlKScgfSwKICAgICAgICB7IHZhbHVlOiA2MCwgY29sb3I6ICdoc2woNDUuNCA5My40JSA0Ny41JSknIH0sCiAgICAgICAgeyB2YWx1ZTogODAsIGNvbG9yOiAnaHNsKDAgODQuMiUgNjAuMiUpJyB9CiAgICAgIF0KICAgIH0KICB9Cl07CgovLyBSZW5kZXIgdGhlIHN0YXRzIGdyaWQKaHRtbFxgCiAgPGRlZXMtc3RhdHNncmlkCiAgICAudGlsZXM9XCR7dGlsZXN9CiAgICAubWluVGlsZVdpZHRoPVwkezI1MH0KICAgIC5nYXA9XCR7MTZ9CiAgICAuZ3JpZEFjdGlvbnM9XCR7WwogICAgICB7CiAgICAgICAgbmFtZTogJ1JlZnJlc2gnLAogICAgICAgIGljb25OYW1lOiAnbHVjaWRlOnJlZnJlc2gtY3cnLAogICAgICAgIGFjdGlvbjogYXN5bmMgKCkgPT4gY29uc29sZS5sb2coJ1JlZnJlc2gnKQogICAgICB9CiAgICBdfQogID48L2RlZXMtc3RhdHNncmlkPgpcYDtgLCI3LiBEaXNrICYgU3RvcmFnZSBUaWxlcyIsIlBhcnRpdGlvbiBhbmQgcGh5c2ljYWwgZGlzayB2aXN1YWxpemF0aW9uIHRpbGVzIixbe2lkOiJyb290LXBhcnRpdGlvbiIsdGl0bGU6IlJvb3QgUGFydGl0aW9uIix2YWx1ZTowLHR5cGU6InBhcnRpdGlvbiIsaWNvbjoibHVjaWRlOmZvbGRlci1yb290IixwYXJ0aXRpb25EYXRhOnt1c2VkOjY5ODM0MTQyNTE1Mix0b3RhbDoxMDczNzQxODI0ZTMsZmlsZXN5c3RlbToiZXh0NCIsbW91bnRQb2ludDoiLyJ9fSx7aWQ6ImhvbWUtcGFydGl0aW9uIix0aXRsZToiSG9tZSBQYXJ0aXRpb24iLHZhbHVlOjAsdHlwZToicGFydGl0aW9uIixpY29uOiJsdWNpZGU6aG9tZSIscGFydGl0aW9uRGF0YTp7dXNlZDoyMTQ3NDgzNjQ4MDAsdG90YWw6NTM2ODcwOTEyZTMsZmlsZXN5c3RlbToiZXh0NCIsbW91bnRQb2ludDoiL2hvbWUifX0se2lkOiJkYXRhLXBhcnRpdGlvbiIsdGl0bGU6IkRhdGEgUGFydGl0aW9uIix2YWx1ZTowLHR5cGU6InBhcnRpdGlvbiIsaWNvbjoibHVjaWRlOmRhdGFiYXNlIixwYXJ0aXRpb25EYXRhOnt1c2VkOjE5MzI3MzUyODMyMDAsdG90YWw6MjE0NzQ4MzY0OGUzLGZpbGVzeXN0ZW06InhmcyIsbW91bnRQb2ludDoiL2RhdGEifX0se2lkOiJudm1lLXNzZCIsdGl0bGU6IlByaW1hcnkgTlZNZSIsdmFsdWU6MCx0eXBlOiJkaXNrIixpY29uOiJsdWNpZGU6aGFyZC1kcml2ZSIsY29sdW1uU3BhbjoyLGRpc2tEYXRhOntjYXBhY2l0eToyZTEyLG1vZGVsOiJTYW1zdW5nIDk5MCBQcm8iLHR5cGU6Im52bWUiLGlvcHM6e3JlYWQ6NzQ1MCx3cml0ZTo2OTAwfSxoZWFsdGg6OTh9fSx7aWQ6InNhdGEtc3NkIix0aXRsZToiU2Vjb25kYXJ5IFNTRCIsdmFsdWU6MCx0eXBlOiJkaXNrIixpY29uOiJsdWNpZGU6aGFyZC1kcml2ZSIsZGlza0RhdGE6e2NhcGFjaXR5OjFlMTIsbW9kZWw6IkNydWNpYWwgTVg1MDAiLHR5cGU6InNzZCIsaW9wczp7cmVhZDo1NjAsd3JpdGU6NTEwfSxoZWFsdGg6ODV9fSx7aWQ6ImhkZC1zdG9yYWdlIix0aXRsZToiQmFja3VwIEhERCIsdmFsdWU6MCx0eXBlOiJkaXNrIixpY29uOiJsdWNpZGU6YXJjaGl2ZSIsZGlza0RhdGE6e2NhcGFjaXR5OjhlMTIsbW9kZWw6IlNlYWdhdGUgSXJvbldvbGYiLHR5cGU6ImhkZCIsaW9wczp7cmVhZDoyMTAsd3JpdGU6MTk1fSxoZWFsdGg6NDJ9fV0sMjgwLDE2KSwiZGVtb0Z1bmMiKX0pO3ZhciBzNCxmbixCdCxFaT1nKCgpPT57cGUoKTtrdCgpO3M0PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxmbj1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sQnQ9KCgpPT57bGV0IHM9d2UsZSx0PVtdLGE9W10scixuPVtdLG89W10sbCxwPVtdLGQ9W10sdSxjPVtdLGI9W10sdix4PVtdLG09W10sZix5PVtdLE09W10seixOPVtdLEM9W10sXyxPPVtdLCQ9W107cmV0dXJuIGNsYXNzIGV4dGVuZHMgc3tzdGF0aWN7aSh0aGlzLCJEZWVzSW5wdXRCYXNlIil9c3RhdGlje2xldCBIPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHNbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO2U9W0woe3R5cGU6U3RyaW5nfSldLHI9W0woe3R5cGU6U3RyaW5nfSldLGw9W0woe3R5cGU6U3RyaW5nfSldLHU9W0woe3R5cGU6U3RyaW5nfSldLHY9W0woe3R5cGU6Qm9vbGVhbn0pXSxmPVtMKHt0eXBlOkJvb2xlYW59KV0sej1bTCh7dHlwZTpTdHJpbmd9KV0sXz1bTCh7dHlwZTpTdHJpbmd9KV0sczQodGhpcyxudWxsLGUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJsYXlvdXRNb2RlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGs9PiJsYXlvdXRNb2RlImluIGssImhhcyIpLGdldDppKGs9PmsubGF5b3V0TW9kZSwiZ2V0Iiksc2V0OmkoKGssUyk9PntrLmxheW91dE1vZGU9U30sInNldCIpfSxtZXRhZGF0YTpIfSx0LGEpLHM0KHRoaXMsbnVsbCxyLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibGFiZWxQb3NpdGlvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShrPT4ibGFiZWxQb3NpdGlvbiJpbiBrLCJoYXMiKSxnZXQ6aShrPT5rLmxhYmVsUG9zaXRpb24sImdldCIpLHNldDppKChrLFMpPT57ay5sYWJlbFBvc2l0aW9uPVN9LCJzZXQiKX0sbWV0YWRhdGE6SH0sbixvKSxzNCh0aGlzLG51bGwsbCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImtleSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShrPT4ia2V5ImluIGssImhhcyIpLGdldDppKGs9Pmsua2V5LCJnZXQiKSxzZXQ6aSgoayxTKT0+e2sua2V5PVN9LCJzZXQiKX0sbWV0YWRhdGE6SH0scCxkKSxzNCh0aGlzLG51bGwsdSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImxhYmVsIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGs9PiJsYWJlbCJpbiBrLCJoYXMiKSxnZXQ6aShrPT5rLmxhYmVsLCJnZXQiKSxzZXQ6aSgoayxTKT0+e2subGFiZWw9U30sInNldCIpfSxtZXRhZGF0YTpIfSxjLGIpLHM0KHRoaXMsbnVsbCx2LHtraW5kOiJhY2Nlc3NvciIsbmFtZToicmVxdWlyZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoaz0+InJlcXVpcmVkImluIGssImhhcyIpLGdldDppKGs9PmsucmVxdWlyZWQsImdldCIpLHNldDppKChrLFMpPT57ay5yZXF1aXJlZD1TfSwic2V0Iil9LG1ldGFkYXRhOkh9LHgsbSksczQodGhpcyxudWxsLGYse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJkaXNhYmxlZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShrPT4iZGlzYWJsZWQiaW4gaywiaGFzIiksZ2V0Omkoaz0+ay5kaXNhYmxlZCwiZ2V0Iiksc2V0OmkoKGssUyk9PntrLmRpc2FibGVkPVN9LCJzZXQiKX0sbWV0YWRhdGE6SH0seSxNKSxzNCh0aGlzLG51bGwseix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImluZm9UZXh0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGs9PiJpbmZvVGV4dCJpbiBrLCJoYXMiKSxnZXQ6aShrPT5rLmluZm9UZXh0LCJnZXQiKSxzZXQ6aSgoayxTKT0+e2suaW5mb1RleHQ9U30sInNldCIpfSxtZXRhZGF0YTpIfSxOLEMpLHM0KHRoaXMsbnVsbCxfLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZGVzY3JpcHRpb24iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoaz0+ImRlc2NyaXB0aW9uImluIGssImhhcyIpLGdldDppKGs9PmsuZGVzY3JpcHRpb24sImdldCIpLHNldDppKChrLFMpPT57ay5kZXNjcmlwdGlvbj1TfSwic2V0Iil9LG1ldGFkYXRhOkh9LE8sJCksSCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpIfSl9I2U9Zm4odGhpcyx0LCJhdXRvIik7Z2V0IGxheW91dE1vZGUoKXtyZXR1cm4gdGhpcy4jZX1zZXQgbGF5b3V0TW9kZShIKXt0aGlzLiNlPUh9I3Q9KGZuKHRoaXMsYSksZm4odGhpcyxuLCJ0b3AiKSk7Z2V0IGxhYmVsUG9zaXRpb24oKXtyZXR1cm4gdGhpcy4jdH1zZXQgbGFiZWxQb3NpdGlvbihIKXt0aGlzLiN0PUh9I2E9KGZuKHRoaXMsbyksZm4odGhpcyxwLHZvaWQgMCkpO2dldCBrZXkoKXtyZXR1cm4gdGhpcy4jYX1zZXQga2V5KEgpe3RoaXMuI2E9SH0jcz0oZm4odGhpcyxkKSxmbih0aGlzLGMsdm9pZCAwKSk7Z2V0IGxhYmVsKCl7cmV0dXJuIHRoaXMuI3N9c2V0IGxhYmVsKEgpe3RoaXMuI3M9SH0jaT0oZm4odGhpcyxiKSxmbih0aGlzLHgsITEpKTtnZXQgcmVxdWlyZWQoKXtyZXR1cm4gdGhpcy4jaX1zZXQgcmVxdWlyZWQoSCl7dGhpcy4jaT1IfSNyPShmbih0aGlzLG0pLGZuKHRoaXMseSwhMSkpO2dldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLiNyfXNldCBkaXNhYmxlZChIKXt0aGlzLiNyPUh9I289KGZuKHRoaXMsTSksZm4odGhpcyxOLHZvaWQgMCkpO2dldCBpbmZvVGV4dCgpe3JldHVybiB0aGlzLiNvfXNldCBpbmZvVGV4dChIKXt0aGlzLiNvPUh9I249KGZuKHRoaXMsQyksZm4odGhpcyxPLHZvaWQgMCkpO2dldCBkZXNjcmlwdGlvbigpe3JldHVybiB0aGlzLiNufXNldCBkZXNjcmlwdGlvbihIKXt0aGlzLiNuPUh9c3RhdGljIGdldCBiYXNlU3R5bGVzKCl7cmV0dXJuW0pgCiAgICAgICAgLyogQ1NTIFZhcmlhYmxlcyBmb3IgY29uc2lzdGVudCBzcGFjaW5nICovCiAgICAgICAgOmhvc3QgewogICAgICAgICAgLS1kZWVzLWlucHV0LXNwYWNpbmctdW5pdDogOHB4OwogICAgICAgICAgLS1kZWVzLWlucHV0LWxhYmVsLWdhcDogdmFyKC0tZGVlcy1pbnB1dC1zcGFjaW5nLXVuaXQpOyAvKiA4cHggKi8KICAgICAgICB9CgogICAgICAgIC8qIERlZmF1bHQgYmxvY2sgZGlzcGxheSB3aXRoIG5vIG1hcmdpbnMgLSBzcGFjaW5nIGlzIGNvbnRhaW5lci1kcml2ZW4gKi8KICAgICAgICA6aG9zdCB7CiAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICB9CgogICAgICAgIC8qIEhvcml6b250YWwgbGF5b3V0IG1vZGUgLSBhY3RpdmF0ZWQgYnkgYXR0cmlidXRlICovCiAgICAgICAgOmhvc3QoW2xheW91dC1tb2RlPSJob3Jpem9udGFsIl0pIHsKICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB9CgogICAgICAgIC8qIExhYmVsIHBvc2l0aW9uIHZhcmlhdGlvbnMgKi8KICAgICAgICA6aG9zdChbbGFiZWwtcG9zaXRpb249ImxlZnQiXSkgLmlucHV0LXdyYXBwZXIgewogICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnI7CiAgICAgICAgICBnYXA6IHZhcigtLWRlZXMtaW5wdXQtbGFiZWwtZ2FwKTsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgfQoKICAgICAgICA6aG9zdChbbGFiZWwtcG9zaXRpb249InJpZ2h0Il0pIC5pbnB1dC13cmFwcGVyIHsKICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciBhdXRvOwogICAgICAgICAgZ2FwOiB2YXIoLS1kZWVzLWlucHV0LWxhYmVsLWdhcCk7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIH0KCiAgICAgICAgOmhvc3QoW2xhYmVsLXBvc2l0aW9uPSJ0b3AiXSkgLmlucHV0LXdyYXBwZXIgewogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgfQoKICAgICAgICA6aG9zdChbbGFiZWwtcG9zaXRpb249Im5vbmUiXSkgZGVlcy1sYWJlbCB7CiAgICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICAgIH0KCiAgICAgICAgLyogRGVzY3JpcHRpb24gdGV4dCBiZWxvdyBpbnB1dCAqLwogICAgICAgIC5kZXNjcmlwdGlvblRleHQgewogICAgICAgICAgbWFyZ2luLXRvcDogNHB4OwogICAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNDUuMSUpIiwiaHNsKDAgMCUgNjMuOSUpIil9OwogICAgICAgIH0KICAgICAgYF19Y2hhbmdlU3ViamVjdD0oZm4odGhpcywkKSxuZXcgdXQuc21hcnRyeC5yeGpzLlN1YmplY3QpO2FzeW5jIGNvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLmRldGVjdExheW91dE1vZGUoKX1kZXRlY3RMYXlvdXRNb2RlKCl7aWYodGhpcy5sYXlvdXRNb2RlIT09ImF1dG8iKXt0aGlzLnNldEF0dHJpYnV0ZSgibGF5b3V0LW1vZGUiLHRoaXMubGF5b3V0TW9kZSk7cmV0dXJufWxldCBIPXRoaXMuY2xvc2VzdCgiZGVlcy1mb3JtIik7SCYmSC5oYXNBdHRyaWJ1dGUoImhvcml6b250YWwtbGF5b3V0Iik/dGhpcy5zZXRBdHRyaWJ1dGUoImxheW91dC1tb2RlIiwiaG9yaXpvbnRhbCIpOnRoaXMuc2V0QXR0cmlidXRlKCJsYXlvdXQtbW9kZSIsInZlcnRpY2FsIil9dXBkYXRlZChIKXtzdXBlci51cGRhdGVkKEgpLEguaGFzKCJsYXlvdXRNb2RlIikmJnRoaXMuZGV0ZWN0TGF5b3V0TW9kZSgpLEguaGFzKCJsYWJlbFBvc2l0aW9uIikmJnRoaXMuc2V0QXR0cmlidXRlKCJsYWJlbC1wb3NpdGlvbiIsdGhpcy5sYWJlbFBvc2l0aW9uKX1hc3luYyBmcmVlemUoKXt0aGlzLmRpc2FibGVkPSEwfWFzeW5jIHVuZnJlZXplKCl7dGhpcy5kaXNhYmxlZD0hMX1yZW5kZXJEZXNjcmlwdGlvbigpe3JldHVybiB0aGlzLmRlc2NyaXB0aW9uP3dgPGRpdiBjbGFzcz0iZGVzY3JpcHRpb25UZXh0Ij4ke3RoaXMuZGVzY3JpcHRpb259PC9kaXY+YDoiIn19fSkoKX0pO3ZhciBzYmEsaWJhPWcoKCk9PntwZSgpO0l0KCk7eG8oKTtIZygpO3NiYT1pKCgpPT53YAogIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntsZXQgZT1zLnF1ZXJ5U2VsZWN0b3JBbGwoImRlZXMtaW5wdXQtY2hlY2tib3giKSx0PXMucXVlcnlTZWxlY3RvcigiI3NlbGVjdC1hbGwtYnRuIiksYT1zLnF1ZXJ5U2VsZWN0b3IoIiNjbGVhci1hbGwtYnRuIik7dCYmYSYmKHQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57ZS5mb3JFYWNoKHI9Pnshci5kaXNhYmxlZCYmci5rZXk/LnN0YXJ0c1dpdGgoImZlYXR1cmUiKSYmKHIudmFsdWU9ITApfSl9KSxhLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e2UuZm9yRWFjaChyPT57IXIuZGlzYWJsZWQmJnIua2V5Py5zdGFydHNXaXRoKCJmZWF0dXJlIikmJihyLnZhbHVlPSExKX0pfSkpfX0+CiAgICA8c3R5bGU+CiAgICAgICR7SmAKICAgICAgICAuZGVtby1jb250YWluZXIgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICBnYXA6IDI0cHg7CiAgICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHg7CiAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZGVlcy1wYW5lbCB7CiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICBkZWVzLXBhbmVsOmxhc3QtY2hpbGQgewogICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmNoZWNrYm94LWdyb3VwIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuaG9yaXpvbnRhbC1jaGVja2JveGVzIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBnYXA6IDI0cHg7CiAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5pbnRlcmFjdGl2ZS1zZWN0aW9uIHsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDQwJSA5Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDE2LjglKSIpfTsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgICBtYXJnaW4tdG9wOiAxNnB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAub3V0cHV0LXRleHQgewogICAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS4zIDI1JSAyNi43JSkiLCJoc2woMjEwIDQwJSA4MCUpIil9OwogICAgICAgICAgcGFkZGluZzogOHB4OwogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgNDAlIDk4JSkiLCJoc2woMjE1IDIwLjIlIDExLjglKSIpfTsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICAgIG1pbi1oZWlnaHQ6IDI0cHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5mb3JtLXNlY3Rpb24gewogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk3JSkiLCJoc2woMCAwJSA3JSkiKX07CiAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDAgMCUgODkuOCUpIiwiaHNsKDAgMCUgMTQuOSUpIil9OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgICAgcGFkZGluZzogMjBweDsKICAgICAgICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5idXR0b24tZ3JvdXAgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGdhcDogOHB4OwogICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmZlYXR1cmUtbGlzdCB7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxMCA0MCUgOTYuMSUpIiwiaHNsKDIxNSAyMC4yJSAxMS44JSkiKX07CiAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDIxNC4zIDMxLjglIDkxLjQlKSIsImhzbCgyMTUgMjAuMiUgMTYuOCUpIil9OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnNlY3Rpb24tdGl0bGUgewogICAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuMyAyNSUgOC44JSkiLCJoc2woMjEwIDQwJSA5OCUpIil9OwogICAgICAgIH0KICAgICAgYH0KICAgIDwvc3R5bGU+CiAgICAKICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IkJhc2ljIENoZWNrYm94ZXMifSAuc3VidGl0bGU9JHsiU2ltcGxlIGNoZWNrYm94IGV4YW1wbGVzIHdpdGggdmFyaW91cyBsYWJlbHMifT4KICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRlZXMtaW5wdXQtY2hlY2tib3gKICAgICAgICAgICAgLmxhYmVsPSR7IkkgYWdyZWUgdG8gdGhlIFRlcm1zIGFuZCBDb25kaXRpb25zIn0KICAgICAgICAgICAgLnZhbHVlPSR7ITB9CiAgICAgICAgICAgIC5rZXk9JHsidGVybXMifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1jaGVja2JveD4KCiAgICAgICAgICA8ZGVlcy1pbnB1dC1jaGVja2JveAogICAgICAgICAgICAubGFiZWw9JHsiU3Vic2NyaWJlIHRvIG5ld3NsZXR0ZXIifQogICAgICAgICAgICAudmFsdWU9JHshMX0KICAgICAgICAgICAgLmtleT0keyJuZXdzbGV0dGVyIn0KICAgICAgICAgID48L2RlZXMtaW5wdXQtY2hlY2tib3g+CgogICAgICAgICAgPGRlZXMtaW5wdXQtY2hlY2tib3gKICAgICAgICAgICAgLmxhYmVsPSR7IkVuYWJsZSBub3RpZmljYXRpb25zIn0KICAgICAgICAgICAgLnZhbHVlPSR7ITF9CiAgICAgICAgICAgIC5kZXNjcmlwdGlvbj0keyJSZWNlaXZlIGVtYWlsIHVwZGF0ZXMgYWJvdXQgeW91ciBhY2NvdW50In0KICAgICAgICAgICAgLmtleT0keyJub3RpZmljYXRpb25zIn0KICAgICAgICAgID48L2RlZXMtaW5wdXQtY2hlY2tib3g+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJDaGVja2JveCBTdGF0ZXMifSAuc3VidGl0bGU9JHsiRGlmZmVyZW50IGNoZWNrYm94IHN0YXRlcyBhbmQgY29uZmlndXJhdGlvbnMifT4KICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRlZXMtaW5wdXQtY2hlY2tib3gKICAgICAgICAgICAgLmxhYmVsPSR7IkRlZmF1bHQgc3RhdGUifQogICAgICAgICAgICAudmFsdWU9JHshMX0KICAgICAgICAgID48L2RlZXMtaW5wdXQtY2hlY2tib3g+CgogICAgICAgICAgPGRlZXMtaW5wdXQtY2hlY2tib3gKICAgICAgICAgICAgLmxhYmVsPSR7IkNoZWNrZWQgc3RhdGUifQogICAgICAgICAgICAudmFsdWU9JHshMH0KICAgICAgICAgID48L2RlZXMtaW5wdXQtY2hlY2tib3g+CgogICAgICAgICAgPGRlZXMtaW5wdXQtY2hlY2tib3gKICAgICAgICAgICAgLmxhYmVsPSR7IkRpc2FibGVkIHVuY2hlY2tlZCJ9CiAgICAgICAgICAgIC52YWx1ZT0keyExfQogICAgICAgICAgICAuZGlzYWJsZWQ9JHshMH0KICAgICAgICAgID48L2RlZXMtaW5wdXQtY2hlY2tib3g+CgogICAgICAgICAgPGRlZXMtaW5wdXQtY2hlY2tib3gKICAgICAgICAgICAgLmxhYmVsPSR7IkRpc2FibGVkIGNoZWNrZWQifQogICAgICAgICAgICAudmFsdWU9JHshMH0KICAgICAgICAgICAgLmRpc2FibGVkPSR7ITB9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LWNoZWNrYm94PgoKICAgICAgICAgIDxkZWVzLWlucHV0LWNoZWNrYm94CiAgICAgICAgICAgIC5sYWJlbD0keyJSZXF1aXJlZCBjaGVja2JveCJ9CiAgICAgICAgICAgIC5yZXF1aXJlZD0keyEwfQogICAgICAgICAgICAua2V5PSR7InJlcXVpcmVkIn0KICAgICAgICAgID48L2RlZXMtaW5wdXQtY2hlY2tib3g+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJIb3Jpem9udGFsIExheW91dCJ9IC5zdWJ0aXRsZT0keyJDaGVja2JveGVzIGFycmFuZ2VkIGhvcml6b250YWxseSBmb3IgY29tcGFjdCBmb3JtcyJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJob3Jpem9udGFsLWNoZWNrYm94ZXMiPgogICAgICAgICAgICA8ZGVlcy1pbnB1dC1jaGVja2JveAogICAgICAgICAgICAgIC5sYWJlbD0keyJPcHRpb24gQSJ9CiAgICAgICAgICAgICAgLnZhbHVlPSR7ITF9CiAgICAgICAgICAgICAgLmxheW91dE1vZGU9JHsiaG9yaXpvbnRhbCJ9CiAgICAgICAgICAgICAgLmtleT0keyJvcHRpb25BIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1jaGVja2JveD4KCiAgICAgICAgICAgIDxkZWVzLWlucHV0LWNoZWNrYm94CiAgICAgICAgICAgICAgLmxhYmVsPSR7Ik9wdGlvbiBCIn0KICAgICAgICAgICAgICAudmFsdWU9JHshMH0KICAgICAgICAgICAgICAubGF5b3V0TW9kZT0keyJob3Jpem9udGFsIn0KICAgICAgICAgICAgICAua2V5PSR7Im9wdGlvbkIifQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LWNoZWNrYm94PgoKICAgICAgICAgICAgPGRlZXMtaW5wdXQtY2hlY2tib3gKICAgICAgICAgICAgICAubGFiZWw9JHsiT3B0aW9uIEMifQogICAgICAgICAgICAgIC52YWx1ZT0keyExfQogICAgICAgICAgICAgIC5sYXlvdXRNb2RlPSR7Imhvcml6b250YWwifQogICAgICAgICAgICAgIC5rZXk9JHsib3B0aW9uQyJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtY2hlY2tib3g+CgogICAgICAgICAgICA8ZGVlcy1pbnB1dC1jaGVja2JveAogICAgICAgICAgICAgIC5sYWJlbD0keyJPcHRpb24gRCJ9CiAgICAgICAgICAgICAgLnZhbHVlPSR7ITB9CiAgICAgICAgICAgICAgLmxheW91dE1vZGU9JHsiaG9yaXpvbnRhbCJ9CiAgICAgICAgICAgICAgLmtleT0keyJvcHRpb25EIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1jaGVja2JveD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICAgIAogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiRmVhdHVyZSBTZWxlY3Rpb24gRXhhbXBsZSJ9IC5zdWJ0aXRsZT0keyJDb21tb24gdXNlIGNhc2UgZm9yIGZlYXR1cmUgdG9nZ2xlcyB3aXRoIGJhdGNoIG9wZXJhdGlvbnMifT4KICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tZ3JvdXAiPgogICAgICAgICAgPGRlZXMtYnV0dG9uIGlkPSJzZWxlY3QtYWxsLWJ0biIgdHlwZT0ic2Vjb25kYXJ5Ij5TZWxlY3QgQWxsPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiBpZD0iY2xlYXItYWxsLWJ0biIgdHlwZT0ic2Vjb25kYXJ5Ij5DbGVhciBBbGw8L2RlZXMtYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICAgIAogICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmUtbGlzdCI+CiAgICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgICA8ZGVlcy1pbnB1dC1jaGVja2JveAogICAgICAgICAgICAgIC5sYWJlbD0keyJEYXJrIE1vZGUgU3VwcG9ydCJ9CiAgICAgICAgICAgICAgLnZhbHVlPSR7ITB9CiAgICAgICAgICAgICAgLmtleT0keyJmZWF0dXJlMSJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtY2hlY2tib3g+CgogICAgICAgICAgICA8ZGVlcy1pbnB1dC1jaGVja2JveAogICAgICAgICAgICAgIC5sYWJlbD0keyJFbWFpbCBOb3RpZmljYXRpb25zIn0KICAgICAgICAgICAgICAudmFsdWU9JHshMH0KICAgICAgICAgICAgICAua2V5PSR7ImZlYXR1cmUyIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1jaGVja2JveD4KCiAgICAgICAgICAgIDxkZWVzLWlucHV0LWNoZWNrYm94CiAgICAgICAgICAgICAgLmxhYmVsPSR7IlR3by1GYWN0b3IgQXV0aGVudGljYXRpb24ifQogICAgICAgICAgICAgIC52YWx1ZT0keyExfQogICAgICAgICAgICAgIC5rZXk9JHsiZmVhdHVyZTMifQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LWNoZWNrYm94PgoKICAgICAgICAgICAgPGRlZXMtaW5wdXQtY2hlY2tib3gKICAgICAgICAgICAgICAubGFiZWw9JHsiQVBJIEFjY2VzcyJ9CiAgICAgICAgICAgICAgLnZhbHVlPSR7ITB9CiAgICAgICAgICAgICAgLmtleT0keyJmZWF0dXJlNCJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtY2hlY2tib3g+CgogICAgICAgICAgICA8ZGVlcy1pbnB1dC1jaGVja2JveAogICAgICAgICAgICAgIC5sYWJlbD0keyJBZHZhbmNlZCBBbmFseXRpY3MifQogICAgICAgICAgICAgIC52YWx1ZT0keyExfQogICAgICAgICAgICAgIC5rZXk9JHsiZmVhdHVyZTUifQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LWNoZWNrYm94PgogICAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJQcml2YWN5IFNldHRpbmdzIEV4YW1wbGUifSAuc3VidGl0bGU9JHsiQ2hlY2tib3hlcyBpbiBhIHR5cGljYWwgZm9ybSBjb250ZXh0In0+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1zZWN0aW9uIj4KICAgICAgICAgIDxoNCBjbGFzcz0ic2VjdGlvbi10aXRsZSI+UHJpdmFjeSBQcmVmZXJlbmNlczwvaDQ+CgogICAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgICAgPGRlZXMtaW5wdXQtY2hlY2tib3gKICAgICAgICAgICAgICAubGFiZWw9JHsiU2hhcmUgYW5hbHl0aWNzIGRhdGEifQogICAgICAgICAgICAgIC52YWx1ZT0keyEwfQogICAgICAgICAgICAgIC5kZXNjcmlwdGlvbj0keyJIZWxwIHVzIGltcHJvdmUgYnkgc2hhcmluZyBhbm9ueW1vdXMgdXNhZ2UgZGF0YSJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtY2hlY2tib3g+CgogICAgICAgICAgICA8ZGVlcy1pbnB1dC1jaGVja2JveAogICAgICAgICAgICAgIC5sYWJlbD0keyJQZXJzb25hbGl6ZWQgcmVjb21tZW5kYXRpb25zIn0KICAgICAgICAgICAgICAudmFsdWU9JHshMH0KICAgICAgICAgICAgICAuZGVzY3JpcHRpb249JHsiR2V0IHN1Z2dlc3Rpb25zIGJhc2VkIG9uIHlvdXIgYWN0aXZpdHkifQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LWNoZWNrYm94PgoKICAgICAgICAgICAgPGRlZXMtaW5wdXQtY2hlY2tib3gKICAgICAgICAgICAgICAubGFiZWw9JHsiTWFya2V0aW5nIGNvbW11bmljYXRpb25zIn0KICAgICAgICAgICAgICAudmFsdWU9JHshMX0KICAgICAgICAgICAgICAuZGVzY3JpcHRpb249JHsiUmVjZWl2ZSBwcm9tb3Rpb25hbCBlbWFpbHMgYW5kIHNwZWNpYWwgb2ZmZXJzIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1jaGVja2JveD4KCiAgICAgICAgICAgIDxkZWVzLWlucHV0LWNoZWNrYm94CiAgICAgICAgICAgICAgLmxhYmVsPSR7IlRoaXJkLXBhcnR5IGludGVncmF0aW9ucyJ9CiAgICAgICAgICAgICAgLnZhbHVlPSR7ITF9CiAgICAgICAgICAgICAgLmRlc2NyaXB0aW9uPSR7IkFsbG93IGFwcHJvdmVkIHBhcnRuZXJzIHRvIGFjY2VzcyB5b3VyIGRhdGEifQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LWNoZWNrYm94PgogICAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJJbnRlcmFjdGl2ZSBFeGFtcGxlIn0gLnN1YnRpdGxlPSR7IkNsaWNrIGNoZWNrYm94ZXMgdG8gc2VlIHZhbHVlIGNoYW5nZXMifT4KICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRlZXMtaW5wdXQtY2hlY2tib3gKICAgICAgICAgICAgLmxhYmVsPSR7IkZlYXR1cmUgdG9nZ2xlIn0KICAgICAgICAgICAgLnZhbHVlPSR7ITF9CiAgICAgICAgICAgIEBjaGFuZ2VTdWJqZWN0PSR7cz0+e2xldCBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNjaGVja2JveC1vdXRwdXQiKTtpZihlJiZzLmRldGFpbCl7bGV0IHQ9cy5kZXRhaWwuZ2V0VmFsdWUoKTtlLnRleHRDb250ZW50PWBGZWF0dXJlIGlzICR7dD8iZW5hYmxlZCI6ImRpc2FibGVkIn1gfX19CiAgICAgICAgICA+PC9kZWVzLWlucHV0LWNoZWNrYm94PgoKICAgICAgICAgIDxkZWVzLWlucHV0LWNoZWNrYm94CiAgICAgICAgICAgIC5sYWJlbD0keyJEZWJ1ZyBtb2RlIn0KICAgICAgICAgICAgLnZhbHVlPSR7ITF9CiAgICAgICAgICAgIEBjaGFuZ2VTdWJqZWN0PSR7cz0+e2xldCBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNkZWJ1Zy1vdXRwdXQiKTtpZihlJiZzLmRldGFpbCl7bGV0IHQ9cy5kZXRhaWwuZ2V0VmFsdWUoKTtlLnRleHRDb250ZW50PWBEZWJ1ZyBtb2RlOiAke3Q/Ik9OIjoiT0ZGIn1gfX19CiAgICAgICAgICA+PC9kZWVzLWlucHV0LWNoZWNrYm94PgogICAgICAgIDwvZGVlcy1mb3JtPgoKICAgICAgICA8ZGl2IGNsYXNzPSJpbnRlcmFjdGl2ZS1zZWN0aW9uIj4KICAgICAgICAgIDxkaXYgaWQ9ImNoZWNrYm94LW91dHB1dCIgY2xhc3M9Im91dHB1dC10ZXh0Ij5GZWF0dXJlIGlzIGRpc2FibGVkPC9kaXY+CiAgICAgICAgICA8ZGl2IGlkPSJkZWJ1Zy1vdXRwdXQiIGNsYXNzPSJvdXRwdXQtdGV4dCIgc3R5bGU9Im1hcmdpbi10b3A6IDhweDsiPkRlYnVnIG1vZGU6IE9GRjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2Rpdj4KICA8L2RlZXMtZGVtb3dyYXBwZXI+CmAsImRlbW9GdW5jIil9KTt2YXIgUm90LCRRLE9vdCxMMWU9ZygoKT0+e3BlKCk7RWkoKTtpYmEoKTtFcigpO2h0KCk7Um90PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSwkUT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sT290PSgoKT0+e2xldCBzPVtuZSgiZGVlcy1pbnB1dC1jaGVja2JveCIpXSxlLHQ9W10sYSxyPUJ0LG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdO3ZhciBjPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzSW5wdXRDaGVja2JveCIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBiPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6Qm9vbGVhbn0pXSxwPVtMKHt0eXBlOkJvb2xlYW59KV0sUm90KHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidmFsdWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkodj0+InZhbHVlImluIHYsImhhcyIpLGdldDppKHY9PnYudmFsdWUsImdldCIpLHNldDppKCh2LHgpPT57di52YWx1ZT14fSwic2V0Iil9LG1ldGFkYXRhOmJ9LG8sbCksUm90KHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaW5kZXRlcm1pbmF0ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh2PT4iaW5kZXRlcm1pbmF0ZSJpbiB2LCJoYXMiKSxnZXQ6aSh2PT52LmluZGV0ZXJtaW5hdGUsImdldCIpLHNldDppKCh2LHgpPT57di5pbmRldGVybWluYXRlPXh9LCJzZXQiKX0sbWV0YWRhdGE6Yn0sZCx1KSxSb3QobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6Yn0sbnVsbCx0KSxjPWE9ZS52YWx1ZSxiJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KX1zdGF0aWMgZGVtbz1zYmE7c3RhdGljIGRlbW9Hcm91cHM9WyJJbnB1dCJdOyNlPSRRKHRoaXMsbywhMSk7Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHZhbHVlKGIpe3RoaXMuI2U9Yn0jdD0oJFEodGhpcyxsKSwkUSh0aGlzLGQsITEpKTtnZXQgaW5kZXRlcm1pbmF0ZSgpe3JldHVybiB0aGlzLiN0fXNldCBpbmRldGVybWluYXRlKGIpe3RoaXMuI3Q9Yn1jb25zdHJ1Y3Rvcigpe3N1cGVyKCksJFEodGhpcyx1KSx0aGlzLmxhYmVsUG9zaXRpb249InJpZ2h0In1zdGF0aWMgc3R5bGVzPVtxZSwuLi5CdC5iYXNlU3R5bGVzLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICAgICAgKiB7CiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIH0KCiAgICAgICAgOmhvc3QgewogICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICAgICAgZm9udC1mYW1pbHk6ICR7QmF9OwogICAgICAgIH0KCiAgICAgICAgLm1haW5jb250YWluZXIgewogICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgICAgIGdhcDogOHB4OwogICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICB9CgogICAgICAgIC5jaGVja2JveCB7CiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICBoZWlnaHQ6IDE4cHg7CiAgICAgICAgICB3aWR0aDogMThweDsKICAgICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgwIDAlIDg5LjglKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxMDAlKSIsImhzbCgwIDAlIDMuOSUpIil9OwogICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgICBtYXJnaW4tdG9wOiAxcHg7CiAgICAgICAgfQoKICAgICAgICAubWFpbmNvbnRhaW5lcjpob3ZlciAuY2hlY2tib3ggewogICAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNzkuOCUpIiwiaHNsKDAgMCUgMjAuOSUpIil9OwogICAgICAgIH0KCiAgICAgICAgLmNoZWNrYm94LnNlbGVjdGVkIHsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUpIiwiaHNsKDIxNy4yIDkxLjIlIDU5LjglKSIpfTsKICAgICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMjIuMiA0Ny40JSA1MS4yJSkiLCJoc2woMjE3LjIgOTEuMiUgNTkuOCUpIil9OwogICAgICAgIH0KCiAgICAgICAgLmNoZWNrYm94OmZvY3VzLXZpc2libGUgewogICAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDUxLjIlIC8gMC4xKSIsImhzbCgyMTcuMiA5MS4yJSA1OS44JSAvIDAuMSkiKX07CiAgICAgICAgfQoKICAgICAgICAvKiBDaGVja21hcmsgdXNpbmcgTHVjaWRlIGljb24gc3R5bGUgKi8KICAgICAgICAuY2hlY2tib3ggLmNoZWNrbWFyayB7CiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICB0b3A6IDUwJTsKICAgICAgICAgIGxlZnQ6IDUwJTsKICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgZWFzZTsKICAgICAgICB9CgogICAgICAgIC5jaGVja2JveC5zZWxlY3RlZCAuY2hlY2ttYXJrIHsKICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgfQoKICAgICAgICAuY2hlY2tib3ggLmNoZWNrbWFyayBzdmcgewogICAgICAgICAgd2lkdGg6IDEycHg7CiAgICAgICAgICBoZWlnaHQ6IDEycHg7CiAgICAgICAgICBzdHJva2U6IHdoaXRlOwogICAgICAgICAgc3Ryb2tlLXdpZHRoOiAzOwogICAgICAgIH0KCiAgICAgICAgLyogRGlzYWJsZWQgc3RhdGUgKi8KICAgICAgICAubWFpbmNvbnRhaW5lci5kaXNhYmxlZCB7CiAgICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICAgICAgb3BhY2l0eTogMC41OwogICAgICAgIH0KCiAgICAgICAgLmNoZWNrYm94LmRpc2FibGVkIHsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5NS4xJSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4OS44JSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgfQoKICAgICAgICAvKiBMYWJlbCAqLwogICAgICAgIC5sYWJlbC1jb250YWluZXIgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICBnYXA6IDJweDsKICAgICAgICAgIGZsZXg6IDE7CiAgICAgICAgfQoKICAgICAgICAuY2hlY2tib3gtbGFiZWwgewogICAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxNSUpIiwiaHNsKDAgMCUgOTAlKSIpfTsKICAgICAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMTVzIGVhc2U7CiAgICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTsKICAgICAgICB9CgogICAgICAgIC5tYWluY29udGFpbmVyOmhvdmVyIC5jaGVja2JveC1sYWJlbCB7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDklKSIsImhzbCgwIDAlIDk1JSkiKX07CiAgICAgICAgfQoKICAgICAgICAubWFpbmNvbnRhaW5lci5kaXNhYmxlZDpob3ZlciAuY2hlY2tib3gtbGFiZWwgewogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxNSUpIiwiaHNsKDAgMCUgOTAlKSIpfTsKICAgICAgICB9CgogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImlucHV0LXdyYXBwZXIiPgogICAgICAgIDxkaXYgY2xhc3M9Im1haW5jb250YWluZXIgJHt0aGlzLmRpc2FibGVkPyJkaXNhYmxlZCI6IiJ9IiBAY2xpY2s9IiR7dGhpcy50b2dnbGVTZWxlY3RlZH0iPgogICAgICAgICAgPGRpdiAKICAgICAgICAgICAgY2xhc3M9ImNoZWNrYm94ICR7dGhpcy52YWx1ZT8ic2VsZWN0ZWQiOiIifSAke3RoaXMuZGlzYWJsZWQ/ImRpc2FibGVkIjoiIn0iIAogICAgICAgICAgICB0YWJpbmRleD0iJHt0aGlzLmRpc2FibGVkPyItMSI6IjAifSIKICAgICAgICAgICAgQGtleWRvd249IiR7dGhpcy5oYW5kbGVLZXlkb3dufSIKICAgICAgICAgID4KICAgICAgICAgICAgJHt0aGlzLnZhbHVlP3dgCiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjaGVja21hcmsiPgogICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTIwIDZMOSAxN0w0IDEyIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIGA6dGhpcy5pbmRldGVybWluYXRlP3dgCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNoZWNrbWFyayI+CiAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTUgMTJIMTkiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgYDp3YGB9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImxhYmVsLWNvbnRhaW5lciI+CiAgICAgICAgICAgICR7dGhpcy5sYWJlbD93YDxkaXYgY2xhc3M9ImNoZWNrYm94LWxhYmVsIj4ke3RoaXMubGFiZWx9PC9kaXY+YDoiIn0KICAgICAgICAgICAgJHt0aGlzLnJlbmRlckRlc2NyaXB0aW9uKCl9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfWFzeW5jIHRvZ2dsZVNlbGVjdGVkKCl7dGhpcy5kaXNhYmxlZHx8KHRoaXMudmFsdWU9IXRoaXMudmFsdWUsdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgibmV3VmFsdWUiLHtkZXRhaWw6dGhpcy52YWx1ZSxidWJibGVzOiEwfSkpLHRoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMpKX1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLnZhbHVlfXNldFZhbHVlKGIpe3RoaXMudmFsdWU9Yn1mb2N1cygpe2xldCBiPXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIuY2hlY2tib3giKTtiJiZiLmZvY3VzKCl9aGFuZGxlS2V5ZG93bihiKXsoYi5rZXk9PT0iICJ8fGIua2V5PT09IkVudGVyIikmJihiLnByZXZlbnREZWZhdWx0KCksdGhpcy50b2dnbGVTZWxlY3RlZCgpKX1zdGF0aWN7JFEoYSx0KX19O3JldHVybiBjPWF9KSgpfSk7dmFyIERRPXt9O3l0KERRLHticmlnaHQ6KCk9PnI0LGRhcms6KCk9Pmk0fSk7dmFyIGk0LHI0LHcyPWcoKCk9PntpND17Ymx1ZToiIzAwNTBiOSIsYmx1ZUFjdGl2ZToiIzAwNjlmMiIsYmx1ZU11dGVkOiIjMDEyNDUyIix0ZXh0OiIjZmZmZmZmIn0scjQ9e2JsdWU6IiMwMDUwYjkiLGJsdWVBY3RpdmU6IiMwMDY5ZjIiLGJsdWVNdXRlZDoiIzAwNjlmMiIsdGV4dDoiIzMzMzMzMyJ9fSk7dmFyIHJiYSxvYmE9ZygoKT0+e3BlKCk7UHUoKTtyYmE9aSgoKT0+d2AKICA8c3R5bGU+CiAgICAke0pgCiAgICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMjRweDsKICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgIG1heC13aWR0aDogMTIwMHB4OwogICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICB9CiAgICAgIAogICAgICAuZGVtby1zZWN0aW9uIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y4ZjlmYSIsIiMxYTFhMWEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlMGUwZTAiLCIjMzMzIil9OwogICAgICB9CiAgICAgIAogICAgICAuZGVtby1zZWN0aW9uIGgzIHsKICAgICAgICBtYXJnaW4tdG9wOiAwOwogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMzMzIiwiI2ZmZiIpfTsKICAgICAgfQogICAgICAKICAgICAgLmRlbW8tc2VjdGlvbiBwIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM2NjYiLCIjOTk5Iil9OwogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgIH0KICAgICAgCiAgICAgIC5idXR0b24tZ3JpZCB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDE1MHB4LCAxZnIpKTsKICAgICAgICBnYXA6IDE2cHg7CiAgICAgIH0KICAgIGB9CiAgPC9zdHlsZT4KICAKICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICA8aDM+SGVhZGVyIEJ1dHRvbnM8L2gzPgogICAgICA8cD5Nb2RhbHMgY2FuIGhhdmUgb3B0aW9uYWwgaGVhZGVyIGJ1dHRvbnMgZm9yIGhlbHAgYW5kIGNsb3NpbmcuPC9wPgogICAgICA8ZGl2IGNsYXNzPSJidXR0b24tZ3JpZCI+CiAgICAgICAgPGRlZXMtYnV0dG9uIEBjbGljaz0keygpPT57aXMuY3JlYXRlQW5kU2hvdyh7aGVhZGluZzoiV2l0aCBIZWxwIEJ1dHRvbiIsc2hvd0hlbHBCdXR0b246ITAsb25IZWxwOmkoYXN5bmMoKT0+e2F3YWl0IGlzLmNyZWF0ZUFuZFNob3coe2hlYWRpbmc6IkhlbHAiLHdpZHRoOiJzbWFsbCIsc2hvd0Nsb3NlQnV0dG9uOiEwLHNob3dIZWxwQnV0dG9uOiExLGNvbnRlbnQ6d2AKICAgICAgICAgICAgICAgICAgPHA+VGhpcyBpcyB0aGUgaGVscCBjb250ZW50IGZvciB0aGUgbW9kYWwuPC9wPgogICAgICAgICAgICAgICAgICA8cD5Zb3UgY2FuIHByb3ZpZGUgY29udGV4dC1zcGVjaWZpYyBoZWxwIGhlcmUuPC9wPgogICAgICAgICAgICAgICAgYCxtZW51T3B0aW9uczpbe25hbWU6IkdvdCBpdCIsYWN0aW9uOmkoYXN5bmMgcz0+cy5kZXN0cm95KCksImFjdGlvbiIpfV19KX0sIm9uSGVscCIpLGNvbnRlbnQ6d2AKICAgICAgICAgICAgICA8cD5UaGlzIG1vZGFsIGhhcyBhIGhlbHAgYnV0dG9uIGluIHRoZSBoZWFkZXIuIENsaWNrIGl0IHRvIHNlZSBoZWxwIGNvbnRlbnQuPC9wPgogICAgICAgICAgICAgIDxwPlRoZSBjbG9zZSBidXR0b24gaXMgYWxzbyB2aXNpYmxlIGJ5IGRlZmF1bHQuPC9wPgogICAgICAgICAgICBgLG1lbnVPcHRpb25zOlt7bmFtZToiT0siLGFjdGlvbjppKGFzeW5jIHM9PnMuZGVzdHJveSgpLCJhY3Rpb24iKX1dfSl9fT5XaXRoIEhlbHAgQnV0dG9uPC9kZWVzLWJ1dHRvbj4KICAgICAgICAKICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrPSR7KCk9Pntpcy5jcmVhdGVBbmRTaG93KHtoZWFkaW5nOiJObyBDbG9zZSBCdXR0b24iLHNob3dDbG9zZUJ1dHRvbjohMSxjb250ZW50OndgCiAgICAgICAgICAgICAgPHA+VGhpcyBtb2RhbCBoYXMgbm8gY2xvc2UgYnV0dG9uIGluIHRoZSBoZWFkZXIuPC9wPgogICAgICAgICAgICAgIDxwPllvdSBtdXN0IHVzZSB0aGUgYWN0aW9uIGJ1dHRvbnMgb3IgY2xpY2sgb3V0c2lkZSB0byBjbG9zZSBpdC48L3A+CiAgICAgICAgICAgIGAsbWVudU9wdGlvbnM6W3tuYW1lOiJDbG9zZSIsYWN0aW9uOmkoYXN5bmMgcz0+cy5kZXN0cm95KCksImFjdGlvbiIpfV19KX19Pk5vIENsb3NlIEJ1dHRvbjwvZGVlcy1idXR0b24+CiAgICAgICAgCiAgICAgICAgPGRlZXMtYnV0dG9uIEBjbGljaz0keygpPT57aXMuY3JlYXRlQW5kU2hvdyh7aGVhZGluZzoiQm90aCBCdXR0b25zIixzaG93SGVscEJ1dHRvbjohMCxzaG93Q2xvc2VCdXR0b246ITAsb25IZWxwOmkoKCk9PmFsZXJ0KCJIZWxwIGNsaWNrZWQhIiksIm9uSGVscCIpLGNvbnRlbnQ6d2AKICAgICAgICAgICAgICA8cD5UaGlzIG1vZGFsIGhhcyBib3RoIGhlbHAgYW5kIGNsb3NlIGJ1dHRvbnMuPC9wPgogICAgICAgICAgICBgLG1lbnVPcHRpb25zOlt7bmFtZToiRG9uZSIsYWN0aW9uOmkoYXN5bmMgcz0+cy5kZXN0cm95KCksImFjdGlvbiIpfV19KX19PkJvdGggQnV0dG9uczwvZGVlcy1idXR0b24+CiAgICAgICAgCiAgICAgICAgPGRlZXMtYnV0dG9uIEBjbGljaz0keygpPT57aXMuY3JlYXRlQW5kU2hvdyh7aGVhZGluZzoiQ2xlYW4gSGVhZGVyIixzaG93Q2xvc2VCdXR0b246ITEsc2hvd0hlbHBCdXR0b246ITEsY29udGVudDp3YAogICAgICAgICAgICAgIDxwPlRoaXMgbW9kYWwgaGFzIGEgY2xlYW4gaGVhZGVyIHdpdGggbm8gYnV0dG9ucy48L3A+CiAgICAgICAgICAgIGAsbWVudU9wdGlvbnM6W3tuYW1lOiJDbG9zZSIsYWN0aW9uOmkoYXN5bmMgcz0+cy5kZXN0cm95KCksImFjdGlvbiIpfV19KX19PkNsZWFuIEhlYWRlcjwvZGVlcy1idXR0b24+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICAKICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgIDxoMz5Nb2RhbCBXaWR0aCBWYXJpYXRpb25zPC9oMz4KICAgICAgPHA+TW9kYWxzIGNhbiBoYXZlIGRpZmZlcmVudCB3aWR0aHM6IHNtYWxsLCBtZWRpdW0sIGxhcmdlLCBmdWxsc2NyZWVuLCBvciBjdXN0b20gcGl4ZWwgdmFsdWVzLjwvcD4KICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWdyaWQiPgogICAgICAgIDxkZWVzLWJ1dHRvbiBAY2xpY2s9JHsoKT0+e2lzLmNyZWF0ZUFuZFNob3coe2hlYWRpbmc6IlNtYWxsIE1vZGFsIix3aWR0aDoic21hbGwiLGNvbnRlbnQ6d2AKICAgICAgICAgICAgICA8cD5UaGlzIGlzIGEgc21hbGwgbW9kYWwgd2l0aCBhIHdpZHRoIG9mIDM4MHB4LiBQZXJmZWN0IGZvciBzaW1wbGUgY29uZmlybWF0aW9ucyBvciBicmllZiBtZXNzYWdlcy48L3A+CiAgICAgICAgICAgIGAsbWVudU9wdGlvbnM6W3tuYW1lOiJDYW5jZWwiLGFjdGlvbjppKGFzeW5jIHM9PnMuZGVzdHJveSgpLCJhY3Rpb24iKX0se25hbWU6Ik9LIixhY3Rpb246aShhc3luYyBzPT5zLmRlc3Ryb3koKSwiYWN0aW9uIil9XX0pfX0+U21hbGwgTW9kYWw8L2RlZXMtYnV0dG9uPgogICAgICAgIAogICAgICAgIDxkZWVzLWJ1dHRvbiBAY2xpY2s9JHsoKT0+e2lzLmNyZWF0ZUFuZFNob3coe2hlYWRpbmc6Ik1lZGl1bSBNb2RhbCAoRGVmYXVsdCkiLHdpZHRoOiJtZWRpdW0iLGNvbnRlbnQ6d2AKICAgICAgICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dCAubGFiZWw9JHsiVXNlcm5hbWUifT48L2RlZXMtaW5wdXQtdGV4dD4KICAgICAgICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQgLmxhYmVsPSR7IkVtYWlsIn0gLmlucHV0VHlwZT0keyJlbWFpbCJ9PjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dCAubGFiZWw9JHsiUGFzc3dvcmQifSAuaW5wdXRUeXBlPSR7InBhc3N3b3JkIn0+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgICAgICAgIGAsbWVudU9wdGlvbnM6W3tuYW1lOiJDYW5jZWwiLGFjdGlvbjppKGFzeW5jIHM9PnMuZGVzdHJveSgpLCJhY3Rpb24iKX0se25hbWU6IlNpZ24gVXAiLGFjdGlvbjppKGFzeW5jIHM9PnMuZGVzdHJveSgpLCJhY3Rpb24iKX1dfSl9fT5NZWRpdW0gTW9kYWw8L2RlZXMtYnV0dG9uPgogICAgICAgIAogICAgICAgIDxkZWVzLWJ1dHRvbiBAY2xpY2s9JHsoKT0+e2lzLmNyZWF0ZUFuZFNob3coe2hlYWRpbmc6IkxhcmdlIE1vZGFsIix3aWR0aDoibGFyZ2UiLGNvbnRlbnQ6d2AKICAgICAgICAgICAgICA8aDQ+V2lkZSBDb250ZW50IEFyZWE8L2g0PgogICAgICAgICAgICAgIDxwPlRoaXMgbGFyZ2UgbW9kYWwgaXMgODAwcHggd2lkZSBhbmQgcGVyZmVjdCBmb3IgZGlzcGxheWluZyBtb3JlIGNvbXBsZXggY29udGVudCBsaWtlIGZvcm1zIHdpdGggbXVsdGlwbGUgY29sdW1ucywgdGFibGVzLCBvciBkZXRhaWxlZCBpbmZvcm1hdGlvbi48L3A+CiAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOyBnYXA6IDE2cHg7IG1hcmdpbi10b3A6IDE2cHg7Ij4KICAgICAgICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQgLmxhYmVsPSR7IkZpcnN0IE5hbWUifT48L2RlZXMtaW5wdXQtdGV4dD4KICAgICAgICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQgLmxhYmVsPSR7Ikxhc3QgTmFtZSJ9PjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dCAubGFiZWw9JHsiQ29tcGFueSJ9PjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dCAubGFiZWw9JHsiUG9zaXRpb24ifT48L2RlZXMtaW5wdXQtdGV4dD4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYCxtZW51T3B0aW9uczpbe25hbWU6IkNhbmNlbCIsYWN0aW9uOmkoYXN5bmMgcz0+cy5kZXN0cm95KCksImFjdGlvbiIpfSx7bmFtZToiU2F2ZSIsYWN0aW9uOmkoYXN5bmMgcz0+cy5kZXN0cm95KCksImFjdGlvbiIpfV19KX19PkxhcmdlIE1vZGFsPC9kZWVzLWJ1dHRvbj4KICAgICAgICAKICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrPSR7KCk9Pntpcy5jcmVhdGVBbmRTaG93KHtoZWFkaW5nOiJGdWxsc2NyZWVuIEVkaXRvciIsd2lkdGg6ImZ1bGxzY3JlZW4iLHNob3dIZWxwQnV0dG9uOiEwLG9uSGVscDppKGFzeW5jKCk9PnthbGVydCgiSW4gYSByZWFsIGFwcCwgdGhpcyB3b3VsZCBzaG93IGVkaXRvciBkb2N1bWVudGF0aW9uIil9LCJvbkhlbHAiKSxjb250ZW50OndgCiAgICAgICAgICAgICAgPGg0PkZ1bGxzY3JlZW4gRXhwZXJpZW5jZSB3aXRoIEhlYWRlciBDb250cm9sczwvaDQ+CiAgICAgICAgICAgICAgPHA+VGhpcyBtb2RhbCB0YWtlcyB1cCBhbG1vc3QgdGhlIGVudGlyZSB2aWV3cG9ydCB3aXRoIGEgMjBweCBtYXJnaW4gb24gYWxsIHNpZGVzLiBUaGUgaGVhZGVyIGJ1dHRvbnMgYXJlIHBhcnRpY3VsYXJseSB1c2VmdWwgaW4gZnVsbHNjcmVlbiBtb2RlLjwvcD4KICAgICAgICAgICAgICA8cD5UaGUgY29udGVudCBhcmVhIGNhbiBiZSBhcyB0YWxsIGFzIG5lZWRlZCBhbmQgd2lsbCBzY3JvbGwgaWYgbmVjZXNzYXJ5LjwvcD4KICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJoZWlnaHQ6IDIwMHB4OyBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2YwZjBmMCIsIiMyYTJhMmEiKX07IGJvcmRlci1yYWRpdXM6IDhweDsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IG1hcmdpbi10b3A6IDE2cHg7Ij4KICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJjb2xvcjogJHtoLmJkVGhlbWUoIiM5OTkiLCIjNjY2Iil9Ij5MYXJnZSBjb250ZW50IGFyZWE8L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGAsbWVudU9wdGlvbnM6W3tuYW1lOiJTYXZlIixhY3Rpb246aShhc3luYyBzPT5zLmRlc3Ryb3koKSwiYWN0aW9uIil9LHtuYW1lOiJDYW5jZWwiLGFjdGlvbjppKGFzeW5jIHM9PnMuZGVzdHJveSgpLCJhY3Rpb24iKX1dfSl9fT5GdWxsc2NyZWVuIE1vZGFsPC9kZWVzLWJ1dHRvbj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIAogICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgPGgzPkN1c3RvbSBXaWR0aCAmIENvbnN0cmFpbnRzPC9oMz4KICAgICAgPHA+WW91IGNhbiBhbHNvIHNldCBjdXN0b20gcGl4ZWwgd2lkdGhzIGFuZCBtaW4vbWF4IGNvbnN0cmFpbnRzLjwvcD4KICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWdyaWQiPgogICAgICAgIDxkZWVzLWJ1dHRvbiBAY2xpY2s9JHsoKT0+e2lzLmNyZWF0ZUFuZFNob3coe2hlYWRpbmc6IkN1c3RvbSBXaWR0aCAoNzAwcHgpIix3aWR0aDo3MDAsY29udGVudDp3YAogICAgICAgICAgICAgIDxwPlRoaXMgbW9kYWwgaGFzIGEgY3VzdG9tIHdpZHRoIG9mIGV4YWN0bHkgNzAwIHBpeGVscy48L3A+CiAgICAgICAgICAgIGAsbWVudU9wdGlvbnM6W3tuYW1lOiJDbG9zZSIsYWN0aW9uOmkoYXN5bmMgcz0+cy5kZXN0cm95KCksImFjdGlvbiIpfV19KX19PkN1c3RvbSA3MDBweDwvZGVlcy1idXR0b24+CiAgICAgICAgCiAgICAgICAgPGRlZXMtYnV0dG9uIEBjbGljaz0keygpPT57aXMuY3JlYXRlQW5kU2hvdyh7aGVhZGluZzoiV2l0aCBNYXggV2lkdGgiLHdpZHRoOiJsYXJnZSIsbWF4V2lkdGg6NjAwLGNvbnRlbnQ6d2AKICAgICAgICAgICAgICA8cD5UaGlzIG1vZGFsIGlzIHNldCB0byAnbGFyZ2UnIGJ1dCBjb25zdHJhaW5lZCBieSBhIG1heFdpZHRoIG9mIDYwMHB4LjwvcD4KICAgICAgICAgICAgYCxtZW51T3B0aW9uczpbe25hbWU6IkdvdCBpdCIsYWN0aW9uOmkoYXN5bmMgcz0+cy5kZXN0cm95KCksImFjdGlvbiIpfV19KX19Pk1heCBXaWR0aCA2MDBweDwvZGVlcy1idXR0b24+CiAgICAgICAgCiAgICAgICAgPGRlZXMtYnV0dG9uIEBjbGljaz0keygpPT57aXMuY3JlYXRlQW5kU2hvdyh7aGVhZGluZzoiV2l0aCBNaW4gV2lkdGgiLHdpZHRoOjMwMCxtaW5XaWR0aDo0MDAsY29udGVudDp3YAogICAgICAgICAgICAgIDxwPlRoaXMgbW9kYWwgd2lkdGggaXMgc2V0IHRvIDMwMHB4IGJ1dCBoYXMgYSBtaW5XaWR0aCBvZiA0MDBweCwgc28gaXQgd2lsbCBiZSA0MDBweCB3aWRlLjwvcD4KICAgICAgICAgICAgYCxtZW51T3B0aW9uczpbe25hbWU6Ik9LIixhY3Rpb246aShhc3luYyBzPT5zLmRlc3Ryb3koKSwiYWN0aW9uIil9XX0pfX0+TWluIFdpZHRoIDQwMHB4PC9kZWVzLWJ1dHRvbj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIAogICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgPGgzPkJ1dHRvbiBWYXJpYXRpb25zPC9oMz4KICAgICAgPHA+TW9kYWxzIGNhbiBoYXZlIGRpZmZlcmVudCBidXR0b24gY29uZmlndXJhdGlvbnMgd2l0aCBwcm9wZXIgc3BhY2luZy48L3A+CiAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ncmlkIj4KICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrPSR7KCk9Pntpcy5jcmVhdGVBbmRTaG93KHtoZWFkaW5nOiJNdWx0aXBsZSBBY3Rpb25zIixjb250ZW50OndgCiAgICAgICAgICAgICAgPHA+VGhpcyBtb2RhbCBkZW1vbnN0cmF0ZXMgbXVsdGlwbGUgYnV0dG9ucyB3aXRoIHByb3BlciBzcGFjaW5nIGJldHdlZW4gdGhlbS48L3A+CiAgICAgICAgICAgIGAsbWVudU9wdGlvbnM6W3tuYW1lOiJEZWxldGUiLGFjdGlvbjppKGFzeW5jIHM9PnMuZGVzdHJveSgpLCJhY3Rpb24iKX0se25hbWU6IkNhbmNlbCIsYWN0aW9uOmkoYXN5bmMgcz0+cy5kZXN0cm95KCksImFjdGlvbiIpfSx7bmFtZToiU2F2ZSBDaGFuZ2VzIixhY3Rpb246aShhc3luYyBzPT5zLmRlc3Ryb3koKSwiYWN0aW9uIil9XX0pfX0+VGhyZWUgQnV0dG9uczwvZGVlcy1idXR0b24+CiAgICAgICAgCiAgICAgICAgPGRlZXMtYnV0dG9uIEBjbGljaz0keygpPT57aXMuY3JlYXRlQW5kU2hvdyh7aGVhZGluZzoiU2luZ2xlIEFjdGlvbiIsY29udGVudDp3YAogICAgICAgICAgICAgIDxwPlNvbWV0aW1lcyB5b3UganVzdCBuZWVkIG9uZSBidXR0b24uPC9wPgogICAgICAgICAgICBgLG1lbnVPcHRpb25zOlt7bmFtZToiQWNrbm93bGVkZ2UiLGFjdGlvbjppKGFzeW5jIHM9PnMuZGVzdHJveSgpLCJhY3Rpb24iKX1dfSl9fT5TaW5nbGUgQnV0dG9uPC9kZWVzLWJ1dHRvbj4KICAgICAgICAKICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrPSR7KCk9Pntpcy5jcmVhdGVBbmRTaG93KHtoZWFkaW5nOiJObyBBY3Rpb25zIixjb250ZW50OndgCiAgICAgICAgICAgICAgPHA+VGhpcyBtb2RhbCBoYXMgbm8gYm90dG9tIGJ1dHRvbnMuIFVzZSB0aGUgWCBidXR0b24gb3IgY2xpY2sgb3V0c2lkZSB0byBjbG9zZS48L3A+CiAgICAgICAgICAgICAgPHAgc3R5bGU9Im1hcmdpbi10b3A6IDE2cHg7IGNvbG9yOiAke2guYmRUaGVtZSgiIzY2NiIsIiM5OTkiKX07Ij5UaGlzIGlzIHVzZWZ1bCBmb3IgaW5mb3JtYXRpb25hbCBtb2RhbHMgdGhhdCBkb24ndCByZXF1aXJlIHVzZXIgYWN0aW9uLjwvcD4KICAgICAgICAgICAgYCxtZW51T3B0aW9uczpbXX0pfX0+Tm8gQnV0dG9uczwvZGVlcy1idXR0b24+CiAgICAgICAgCiAgICAgICAgPGRlZXMtYnV0dG9uIEBjbGljaz0keygpPT57aXMuY3JlYXRlQW5kU2hvdyh7aGVhZGluZzoiTG9uZyBCdXR0b24gTGFiZWxzIixjb250ZW50OndgCiAgICAgICAgICAgICAgPHA+VGVzdGluZyBidXR0b24gbGF5b3V0IHdpdGggbG9uZ2VyIGxhYmVscy48L3A+CiAgICAgICAgICAgIGAsbWVudU9wdGlvbnM6W3tuYW1lOiJEaXNjYXJkIEFsbCBDaGFuZ2VzIixhY3Rpb246aShhc3luYyBzPT5zLmRlc3Ryb3koKSwiYWN0aW9uIil9LHtuYW1lOiJTYXZlIGFuZCBDb250aW51ZSBFZGl0aW5nIixhY3Rpb246aShhc3luYyBzPT5zLmRlc3Ryb3koKSwiYWN0aW9uIil9XX0pfX0+TG9uZyBMYWJlbHM8L2RlZXMtYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgCiAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICA8aDM+UmVzcG9uc2l2ZSBCZWhhdmlvcjwvaDM+CiAgICAgIDxwPkFsbCBtb2RhbHMgYXV0b21hdGljYWxseSBiZWNvbWUgZnVsbC13aWR0aCBvbiBtb2JpbGUgZGV2aWNlcyAoPCA3NjhweCB2aWV3cG9ydCB3aWR0aCkgZm9yIGJldHRlciB1c2FiaWxpdHkuPC9wPgogICAgICA8ZGVlcy1idXR0b24gQGNsaWNrPSR7KCk9Pntpcy5jcmVhdGVBbmRTaG93KHtoZWFkaW5nOiJSZXNwb25zaXZlIE1vZGFsIix3aWR0aDoibGFyZ2UiLHNob3dIZWxwQnV0dG9uOiEwLG9uSGVscDppKCgpPT5jb25zb2xlLmxvZygiSGVscCByZXF1ZXN0ZWQgZm9yIHJlc3BvbnNpdmUgbW9kYWwiKSwib25IZWxwIiksY29udGVudDp3YAogICAgICAgICAgICA8cD5SZXNpemUgeW91ciBicm93c2VyIHdpbmRvdyB0byBzZWUgaG93IHRoaXMgbW9kYWwgYWRhcHRzLiBPbiBtb2JpbGUgdmlld3BvcnRzLCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgdGFrZSB0aGUgZnVsbCB3aWR0aCBtaW51cyBtYXJnaW5zLjwvcD4KICAgICAgICAgICAgPHA+VGhlIGhlYWRlciBidXR0b25zIHJlbWFpbiBhY2Nlc3NpYmxlIGF0IGFsbCB2aWV3cG9ydCBzaXplcy48L3A+CiAgICAgICAgICBgLG1lbnVPcHRpb25zOlt7bmFtZToiQ2xvc2UiLGFjdGlvbjppKGFzeW5jIHM9PnMuZGVzdHJveSgpLCJhY3Rpb24iKX1dfSl9fT5UZXN0IFJlc3BvbnNpdmU8L2RlZXMtYnV0dG9uPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgPGgzPlNjcm9sbGFibGUgQ29udGVudDwvaDM+CiAgICAgIDxwPldoZW4gY29udGVudCBleGNlZWRzIHRoZSBtb2RhbCdzIG1heC1oZWlnaHQgKDxjb2RlPmNhbGMoMTAwdmggLSA4MHB4KTwvY29kZT4pLCB0aGUgdGlsZSBjYXBzIGF0IHRoYXQgaGVpZ2h0IGFuZCB0aGUgY29udGVudCBhcmVhIHNjcm9sbHMgaW5zaWRlLiBUaGUgaGVhZGluZyBhbmQgYm90dG9tIGJ1dHRvbnMgc3RheSBwaW5uZWQuPC9wPgogICAgICA8ZGl2IGNsYXNzPSJidXR0b24tZ3JpZCI+CiAgICAgICAgPGRlZXMtYnV0dG9uIEBjbGljaz0keygpPT57aXMuY3JlYXRlQW5kU2hvdyh7aGVhZGluZzoiTG9uZyBBcnRpY2xlIix3aWR0aDoibWVkaXVtIixjb250ZW50OndgCiAgICAgICAgICAgICAgPGg0IHN0eWxlPSJtYXJnaW4tdG9wOiAwOyI+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ8L2g0PgogICAgICAgICAgICAgICR7QXJyYXkuZnJvbSh7bGVuZ3RoOjQwfSwocyxlKT0+d2AKICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgICA8c3Ryb25nPsKnICR7ZSsxfS48L3N0cm9uZz4KICAgICAgICAgICAgICAgICAgTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gU2VkIGRvCiAgICAgICAgICAgICAgICAgIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0CiAgICAgICAgICAgICAgICAgIGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcwogICAgICAgICAgICAgICAgICBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvcgogICAgICAgICAgICAgICAgICBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0CiAgICAgICAgICAgICAgICAgIG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LAogICAgICAgICAgICAgICAgICBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLgogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgIGApfQogICAgICAgICAgICBgLG1lbnVPcHRpb25zOlt7bmFtZToiQ2FuY2VsIixhY3Rpb246aShhc3luYyBzPT5zLmRlc3Ryb3koKSwiYWN0aW9uIil9LHtuYW1lOiJBY2NlcHQiLGFjdGlvbjppKGFzeW5jIHM9PnMuZGVzdHJveSgpLCJhY3Rpb24iKX1dfSl9fT5Mb25nIEFydGljbGU8L2RlZXMtYnV0dG9uPgoKICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrPSR7KCk9Pntpcy5jcmVhdGVBbmRTaG93KHtoZWFkaW5nOiJMb25nIExpc3QiLHdpZHRoOiJzbWFsbCIsY29udGVudDp3YAogICAgICAgICAgICAgIDxwPlNlbGVjdGVkIGl0ZW1zOjwvcD4KICAgICAgICAgICAgICA8dWwgc3R5bGU9InBhZGRpbmctbGVmdDogMjBweDsgbWFyZ2luOiAwOyI+CiAgICAgICAgICAgICAgICAke0FycmF5LmZyb20oe2xlbmd0aDo4MH0sKHMsZSk9PndgCiAgICAgICAgICAgICAgICAgIDxsaSBzdHlsZT0icGFkZGluZzogNHB4IDA7Ij5JdGVtICR7ZSsxfSDigJQgb3B0aW9uIGxhYmVsPC9saT4KICAgICAgICAgICAgICAgIGApfQogICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIGAsbWVudU9wdGlvbnM6W3tuYW1lOiJEb25lIixhY3Rpb246aShhc3luYyBzPT5zLmRlc3Ryb3koKSwiYWN0aW9uIil9XX0pfX0+TG9uZyBMaXN0PC9kZWVzLWJ1dHRvbj4KCiAgICAgICAgPGRlZXMtYnV0dG9uIEBjbGljaz0keygpPT57aXMuY3JlYXRlQW5kU2hvdyh7aGVhZGluZzoiVGFsbCBGb3JtIix3aWR0aDoibWVkaXVtIixjb250ZW50OndgCiAgICAgICAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgICAgICAgICR7QXJyYXkuZnJvbSh7bGVuZ3RoOjI1fSwocyxlKT0+d2AKICAgICAgICAgICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dCAubGFiZWw9JHtgRmllbGQgJHtlKzF9YH0+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgICAgICAgICBgKX0KICAgICAgICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgICAgICAgYCxtZW51T3B0aW9uczpbe25hbWU6IkNhbmNlbCIsYWN0aW9uOmkoYXN5bmMgcz0+cy5kZXN0cm95KCksImFjdGlvbiIpfSx7bmFtZToiU3VibWl0IixhY3Rpb246aShhc3luYyBzPT5zLmRlc3Ryb3koKSwiYWN0aW9uIil9XX0pfX0+VGFsbCBGb3JtPC9kZWVzLWJ1dHRvbj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KYCwiZGVtb0Z1bmMiKX0pO3ZhciBuYmEsbGJhPWcoKCk9PntwZSgpO21yKCk7bmJhPWkoKCk9PndgCiAgICA8ZGVlcy1kZW1vd3JhcHBlcj4KICAgICAgPHN0eWxlPgogICAgICAgICR7SmAKICAgICAgICAgIC5kZW1vQm94IHsKICAgICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk1JSkiLCJoc2woMCAwJSA5JSkiKX07CiAgICAgICAgICAgIHBhZGRpbmc6IDQwcHg7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIGdhcDogMjRweDsKICAgICAgICAgIH0KICAgICAgICAgIC50aWxlLWRlbW8tY29udGVudCB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgaW5zZXQ6IDA7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDQ1JSkiLCJoc2woMCAwJSA1NSUpIil9OwogICAgICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgICB9CiAgICAgICAgICAuZm9vdGVyLXN0YXRzIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgfQogICAgICAgICAgLmZvb3Rlci1zdGF0cyAuc3RhdCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogNnB4OwogICAgICAgICAgfQogICAgICAgICAgLmZvb3Rlci1zdGF0cyAuc3RhdCBzdHJvbmcgewogICAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDE1JSkiLCJoc2woMCAwJSA5MCUpIil9OwogICAgICAgICAgfQogICAgICAgIGB9CiAgICAgIDwvc3R5bGU+CiAgICAgIDxkaXYgY2xhc3M9ImRlbW9Cb3giPgogICAgICAgIDxkZWVzLXRpbGUgaGVhZGluZz0iU2ltcGxlIFRpbGUiIHN0eWxlPSJoZWlnaHQ6IDIwMHB4OyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aWxlLWRlbW8tY29udGVudCI+Q29udGVudCBhcmVhIHdpdGggcm91bmRlZCBjb3JuZXJzPC9kaXY+CiAgICAgICAgPC9kZWVzLXRpbGU+CgogICAgICAgIDxkZWVzLXRpbGUgaGVhZGluZz0iVGlsZSB3aXRoIEZvb3RlciIgc3R5bGU9ImhlaWdodDogMjAwcHg7Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpbGUtZGVtby1jb250ZW50Ij5Db250ZW50IGdvZXMgaGVyZTwvZGl2PgogICAgICAgICAgPGRpdiBzbG90PSJmb290ZXIiIGNsYXNzPSJmb290ZXItc3RhdHMiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3RhdCI+bGF0ZXN0IDxzdHJvbmc+NDI8L3N0cm9uZz48L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzdGF0Ij5taW4gPHN0cm9uZz4xMjwvc3Ryb25nPjwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN0YXQiPm1heCA8c3Ryb25nPjg3PC9zdHJvbmc+PC9zcGFuPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3RhdCI+YXZnIDxzdHJvbmc+NDUuMzwvc3Ryb25nPjwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGVlcy10aWxlPgoKICAgICAgICA8ZGVlcy10aWxlIHN0eWxlPSJoZWlnaHQ6IDIwMHB4OyI+CiAgICAgICAgICA8ZGl2IHNsb3Q9ImhlYWRlciIgc3R5bGU9ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEycHg7d2lkdGg6MTAwJTsiPgogICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6NTAwOyI+Q3VzdG9tIEhlYWRlcjwvc3Bhbj4KICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIHBsYWNlaG9sZGVyPSJTZWFyY2guLi4iIHN0eWxlPSJmbGV4OjE7bWF4LXdpZHRoOjIwMHB4O3BhZGRpbmc6MnB4IDhweDtib3JkZXI6MXB4IHNvbGlkO2JvcmRlci1yYWRpdXM6NHB4O2ZvbnQtc2l6ZToxMnB4O2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6aW5oZXJpdDtib3JkZXItY29sb3I6aW5oZXJpdDsiPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aWxlLWRlbW8tY29udGVudCI+Q3VzdG9tIGhlYWRlciBzbG90IHdpdGggc2VhcmNoIGlucHV0PC9kaXY+CiAgICAgICAgPC9kZWVzLXRpbGU+CiAgICAgIDwvZGl2PgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgogIGAsImRlbW9GdW5jIil9KTt2YXIgRTFlLHFnLEJKYSxtcj1nKCgpPT57cGUoKTtsYmEoKTtFcigpO2h0KCk7RTFlPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxxZz1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sQkphPSgoKT0+e2xldCBzPVtuZSgiZGVlcy10aWxlIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W107dmFyIHg9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNUaWxlIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IG09dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpTdHJpbmd9KV0scD1bTCh7dHlwZTpTdHJpbmcscmVmbGVjdDohMH0pXSxjPVtZKCldLEUxZSh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImhlYWRpbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+ImhlYWRpbmciaW4gZiwiaGFzIiksZ2V0OmkoZj0+Zi5oZWFkaW5nLCJnZXQiKSxzZXQ6aSgoZix5KT0+e2YuaGVhZGluZz15fSwic2V0Iil9LG1ldGFkYXRhOm19LG8sbCksRTFlKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToib3ZlcnNjcm9sbCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShmPT4ib3ZlcnNjcm9sbCJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLm92ZXJzY3JvbGwsImdldCIpLHNldDppKChmLHkpPT57Zi5vdmVyc2Nyb2xsPXl9LCJzZXQiKX0sbWV0YWRhdGE6bX0sZCx1KSxFMWUodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJoYXNGb290ZXIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+Imhhc0Zvb3RlciJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLmhhc0Zvb3RlciwiZ2V0Iiksc2V0OmkoKGYseSk9PntmLmhhc0Zvb3Rlcj15fSwic2V0Iil9LG1ldGFkYXRhOm19LGIsdiksRTFlKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOm19LG51bGwsdCkseD1hPWUudmFsdWUsbSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTptfSl9c3RhdGljIGRlbW89bmJhO3N0YXRpYyBkZW1vR3JvdXBzPVsiTGF5b3V0Il07I2U9cWcodGhpcyxvLCIiKTtnZXQgaGVhZGluZygpe3JldHVybiB0aGlzLiNlfXNldCBoZWFkaW5nKG0pe3RoaXMuI2U9bX0jdD0ocWcodGhpcyxsKSxxZyh0aGlzLGQsImF1dG8iKSk7Z2V0IG92ZXJzY3JvbGwoKXtyZXR1cm4gdGhpcy4jdH1zZXQgb3ZlcnNjcm9sbChtKXt0aGlzLiN0PW19I2E9KHFnKHRoaXMsdSkscWcodGhpcyxiLCExKSk7Z2V0IGhhc0Zvb3Rlcigpe3JldHVybiB0aGlzLiNhfXNldCBoYXNGb290ZXIobSl7dGhpcy4jYT1tfXN0YXRpYyBzdHlsZXM9W3FlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGZvbnQtZmFtaWx5OiAke0JhfTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICB9CgogICAgICAvKiAtLS0gVGhlIGZyYW1lIC0tLSAqLwogICAgICAudGlsZS1vdXRlciB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGZsZXg6IDE7CiAgICAgICAgbWluLWhlaWdodDogMDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXByaW1hcnkpOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgfQoKICAgICAgLyogLS0tIEhlYWRlcjogYmFyZSBjb250YWluZXIsIG9ubHkgdGhlIGRlZmF1bHQgaGVhZGluZyBnZXRzIHN0eWxlZCAtLS0gKi8KICAgICAgLnRpbGUtaGVhZGVyIHsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQoKICAgICAgLnRpbGUtaGVhZGluZyB7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAzMnB4OwogICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXNlY29uZGFyeSk7CiAgICAgIH0KCiAgICAgIC8qIC0tLSBDb250ZW50OiB0aGUgcm91bmRlZCBpbnNldCAtLS0KICAgICAgICAgVXNlcyBvdmVyZmxvdy15OiBhdXRvIHNvIHRoYXQgd2hlbiBhIGNvbnN1bWVyIChlLmcuIGRlZXMtbW9kYWwpIGNhcHMKICAgICAgICAgdGhlIHRpbGUgd2l0aCBtYXgtaGVpZ2h0LCBsb25nIGNvbnRlbnQgc2Nyb2xscyBpbnNpZGUgdGhlIHRpbGUKICAgICAgICAgaW5zdGVhZCBvZiBiZWluZyBjbGlwcGVkLiBGb3IgY29uc3VtZXJzIHdpdGhvdXQgbWF4LWhlaWdodAogICAgICAgICAoZS5nLiBkZWVzLXN0ZXBwZXIpLCB0aGUgdGlsZSBncm93cyB3aXRoIGNvbnRlbnQgYW5kIHRoZSBzY3JvbGwKICAgICAgICAgbmV2ZXIgYWN0aXZhdGVzLiBIb3Jpem9udGFsIG92ZXJmbG93IHN0YXlzIGNsaXBwZWQgdG8gcHJlc2VydmUgdGhlCiAgICAgICAgIHJvdW5kZWQgY29ybmVycy4gKi8KICAgICAgLnRpbGUtY29udGVudCB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1zdWJ0bGUpOwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1zdWJ0bGUpOwogICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIHNjcm9sbGJhci13aWR0aDogdGhpbjsKICAgICAgICBzY3JvbGxiYXItY29sb3I6IHZhcigtLWRlZXMtY29sb3Itc2Nyb2xsYmFyLXRodW1iKSB0cmFuc3BhcmVudDsKICAgICAgfQoKICAgICAgOmhvc3QoW292ZXJzY3JvbGw9ImNvbnRhaW4iXSkgLnRpbGUtY29udGVudCB7CiAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbjsKICAgICAgfQoKICAgICAgLnRpbGUtY29udGVudC5uby1mb290ZXIgewogICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7CiAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKICAgICAgfQoKICAgICAgLyogLS0tIEZvb3RlcjogYmFyZSBjb250YWluZXIsIGNvbnN1bWVyIHN0eWxlcyB0aGUgc2xvdHRlZCBjb250ZW50IC0tLSAqLwogICAgICAudGlsZS1mb290ZXIgewogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAudGlsZS1mb290ZXIuaGlkZGVuIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0idGlsZS1vdXRlciIgcGFydD0ib3V0ZXIiPgogICAgICAgIDxkaXYgY2xhc3M9InRpbGUtaGVhZGVyIiBwYXJ0PSJoZWFkZXIiPgogICAgICAgICAgPHNsb3QgbmFtZT0iaGVhZGVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGlsZS1oZWFkaW5nIj4ke3RoaXMuaGVhZGluZ308L2Rpdj4KICAgICAgICAgIDwvc2xvdD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0aWxlLWNvbnRlbnQgJHt0aGlzLmhhc0Zvb3Rlcj8iIjoibm8tZm9vdGVyIn0iIHBhcnQ9ImNvbnRlbnQiPgogICAgICAgICAgPHNsb3Q+PC9zbG90PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InRpbGUtZm9vdGVyICR7dGhpcy5oYXNGb290ZXI/IiI6ImhpZGRlbiJ9IiBwYXJ0PSJmb290ZXIiPgogICAgICAgICAgPHNsb3QgbmFtZT0iZm9vdGVyIiBAc2xvdGNoYW5nZT0ke3RoaXMub25Gb290ZXJTbG90Q2hhbmdlfT48L3Nsb3Q+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1vbkZvb3RlclNsb3RDaGFuZ2UobSl7bGV0IGY9bS50YXJnZXQ7dGhpcy5oYXNGb290ZXI9Zi5hc3NpZ25lZE5vZGVzKHtmbGF0dGVuOiEwfSkubGVuZ3RoPjB9Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHFnKHRoaXMsdil9c3RhdGlje3FnKGEsdCl9fTtyZXR1cm4geD1hfSkoKX0pO3ZhciByYyxtaSxpcyxQdT1nKCgpPT57dzIoKTt2bygpO0duKCk7RXIoKTtvYmEoKTtwZSgpO2t0KCk7djIoKTtHYSgpO21yKCk7aHQoKTtyYz1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sbWk9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LGlzPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1tb2RhbCIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdLEgsaz1bXSxTPVtdLEksUD1bXSxSPVtdLEssVj1bXSxXPVtdLG1lLEI9W10sVT1bXSxoZSxGPVtdLGo9W107dmFyIHVlPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzTW9kYWwiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgbGU9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpTdHJpbmd9KV0scD1bWSh7fSldLGM9W1koe30pXSx4PVtMKHt0eXBlOlN0cmluZ30pXSx5PVtMKHt0eXBlOk51bWJlcn0pXSxOPVtMKHt0eXBlOk51bWJlcn0pXSxPPVtMKHt0eXBlOkJvb2xlYW59KV0sSD1bTCh7dHlwZTpCb29sZWFufSldLEk9W0woe2F0dHJpYnV0ZTohMX0pXSxLPVtMKHt0eXBlOkJvb2xlYW59KV0sbWU9W0woe3R5cGU6TnVtYmVyfSldLGhlPVtZKCldLHJjKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaGVhZGluZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShRPT4iaGVhZGluZyJpbiBRLCJoYXMiKSxnZXQ6aShRPT5RLmhlYWRpbmcsImdldCIpLHNldDppKChRLGllKT0+e1EuaGVhZGluZz1pZX0sInNldCIpfSxtZXRhZGF0YTpsZX0sbyxsKSxyYyh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNvbnRlbnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUT0+ImNvbnRlbnQiaW4gUSwiaGFzIiksZ2V0OmkoUT0+US5jb250ZW50LCJnZXQiKSxzZXQ6aSgoUSxpZSk9PntRLmNvbnRlbnQ9aWV9LCJzZXQiKX0sbWV0YWRhdGE6bGV9LGQsdSkscmModGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtZW51T3B0aW9ucyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShRPT4ibWVudU9wdGlvbnMiaW4gUSwiaGFzIiksZ2V0OmkoUT0+US5tZW51T3B0aW9ucywiZ2V0Iiksc2V0OmkoKFEsaWUpPT57US5tZW51T3B0aW9ucz1pZX0sInNldCIpfSxtZXRhZGF0YTpsZX0sYix2KSxyYyh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6IndpZHRoIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFE9PiJ3aWR0aCJpbiBRLCJoYXMiKSxnZXQ6aShRPT5RLndpZHRoLCJnZXQiKSxzZXQ6aSgoUSxpZSk9PntRLndpZHRoPWllfSwic2V0Iil9LG1ldGFkYXRhOmxlfSxtLGYpLHJjKHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWF4V2lkdGgiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUT0+Im1heFdpZHRoImluIFEsImhhcyIpLGdldDppKFE9PlEubWF4V2lkdGgsImdldCIpLHNldDppKChRLGllKT0+e1EubWF4V2lkdGg9aWV9LCJzZXQiKX0sbWV0YWRhdGE6bGV9LE0seikscmModGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtaW5XaWR0aCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShRPT4ibWluV2lkdGgiaW4gUSwiaGFzIiksZ2V0OmkoUT0+US5taW5XaWR0aCwiZ2V0Iiksc2V0OmkoKFEsaWUpPT57US5taW5XaWR0aD1pZX0sInNldCIpfSxtZXRhZGF0YTpsZX0sQyxfKSxyYyh0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dDbG9zZUJ1dHRvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShRPT4ic2hvd0Nsb3NlQnV0dG9uImluIFEsImhhcyIpLGdldDppKFE9PlEuc2hvd0Nsb3NlQnV0dG9uLCJnZXQiKSxzZXQ6aSgoUSxpZSk9PntRLnNob3dDbG9zZUJ1dHRvbj1pZX0sInNldCIpfSxtZXRhZGF0YTpsZX0sJCxFKSxyYyh0aGlzLG51bGwsSCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dIZWxwQnV0dG9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFE9PiJzaG93SGVscEJ1dHRvbiJpbiBRLCJoYXMiKSxnZXQ6aShRPT5RLnNob3dIZWxwQnV0dG9uLCJnZXQiKSxzZXQ6aSgoUSxpZSk9PntRLnNob3dIZWxwQnV0dG9uPWllfSwic2V0Iil9LG1ldGFkYXRhOmxlfSxrLFMpLHJjKHRoaXMsbnVsbCxJLHtraW5kOiJhY2Nlc3NvciIsbmFtZToib25IZWxwIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFE9PiJvbkhlbHAiaW4gUSwiaGFzIiksZ2V0OmkoUT0+US5vbkhlbHAsImdldCIpLHNldDppKChRLGllKT0+e1Eub25IZWxwPWllfSwic2V0Iil9LG1ldGFkYXRhOmxlfSxQLFIpLHJjKHRoaXMsbnVsbCxLLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibW9iaWxlRnVsbHNjcmVlbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShRPT4ibW9iaWxlRnVsbHNjcmVlbiJpbiBRLCJoYXMiKSxnZXQ6aShRPT5RLm1vYmlsZUZ1bGxzY3JlZW4sImdldCIpLHNldDppKChRLGllKT0+e1EubW9iaWxlRnVsbHNjcmVlbj1pZX0sInNldCIpfSxtZXRhZGF0YTpsZX0sVixXKSxyYyh0aGlzLG51bGwsbWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjb250ZW50UGFkZGluZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShRPT4iY29udGVudFBhZGRpbmciaW4gUSwiaGFzIiksZ2V0OmkoUT0+US5jb250ZW50UGFkZGluZywiZ2V0Iiksc2V0OmkoKFEsaWUpPT57US5jb250ZW50UGFkZGluZz1pZX0sInNldCIpfSxtZXRhZGF0YTpsZX0sQixVKSxyYyh0aGlzLG51bGwsaGUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtb2RhbFpJbmRleCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShRPT4ibW9kYWxaSW5kZXgiaW4gUSwiaGFzIiksZ2V0OmkoUT0+US5tb2RhbFpJbmRleCwiZ2V0Iiksc2V0OmkoKFEsaWUpPT57US5tb2RhbFpJbmRleD1pZX0sInNldCIpfSxtZXRhZGF0YTpsZX0sRixqKSxyYyhudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpsZX0sbnVsbCx0KSx1ZT1hPWUudmFsdWUsbGUmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6bGV9KX1zdGF0aWMgZGVtbz1yYmE7c3RhdGljIGRlbW9Hcm91cHM9WyJPdmVybGF5Il07c3RhdGljIGFzeW5jIGNyZWF0ZUFuZFNob3cobGUpe2xldCBRPWRvY3VtZW50LmJvZHksaWU9bmV3IHVlO3JldHVybiBpZS5oZWFkaW5nPWxlLmhlYWRpbmcsaWUuY29udGVudD1sZS5jb250ZW50LGllLm1lbnVPcHRpb25zPWxlLm1lbnVPcHRpb25zLGxlLndpZHRoJiYoaWUud2lkdGg9bGUud2lkdGgpLGxlLm1heFdpZHRoJiYoaWUubWF4V2lkdGg9bGUubWF4V2lkdGgpLGxlLm1pbldpZHRoJiYoaWUubWluV2lkdGg9bGUubWluV2lkdGgpLGxlLnNob3dDbG9zZUJ1dHRvbiE9PXZvaWQgMCYmKGllLnNob3dDbG9zZUJ1dHRvbj1sZS5zaG93Q2xvc2VCdXR0b24pLGxlLnNob3dIZWxwQnV0dG9uIT09dm9pZCAwJiYoaWUuc2hvd0hlbHBCdXR0b249bGUuc2hvd0hlbHBCdXR0b24pLGxlLm9uSGVscCYmKGllLm9uSGVscD1sZS5vbkhlbHApLGxlLm1vYmlsZUZ1bGxzY3JlZW4hPT12b2lkIDAmJihpZS5tb2JpbGVGdWxsc2NyZWVuPWxlLm1vYmlsZUZ1bGxzY3JlZW4pLGxlLmNvbnRlbnRQYWRkaW5nIT09dm9pZCAwJiYoaWUuY29udGVudFBhZGRpbmc9bGUuY29udGVudFBhZGRpbmcpLGllLndpbmRvd0xheWVyPWF3YWl0IFJvLmNyZWF0ZUFuZFNob3coe2JsdXI6ITB9KSxpZS53aW5kb3dMYXllci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsYXN5bmMoKT0+e2F3YWl0IGllLmRlc3Ryb3koKX0pLFEuYXBwZW5kKGllLndpbmRvd0xheWVyKSxRLmFwcGVuZChpZSksaWUubW9kYWxaSW5kZXg9X2EuZ2V0TmV4dFpJbmRleCgpLF9hLnJlZ2lzdGVyKGllLGllLm1vZGFsWkluZGV4KSxpZX0jZT1taSh0aGlzLG8sIiIpO2dldCBoZWFkaW5nKCl7cmV0dXJuIHRoaXMuI2V9c2V0IGhlYWRpbmcobGUpe3RoaXMuI2U9bGV9I3Q9KG1pKHRoaXMsbCksbWkodGhpcyxkLHZvaWQgMCkpO2dldCBjb250ZW50KCl7cmV0dXJuIHRoaXMuI3R9c2V0IGNvbnRlbnQobGUpe3RoaXMuI3Q9bGV9I2E9KG1pKHRoaXMsdSksbWkodGhpcyxiLFtdKSk7Z2V0IG1lbnVPcHRpb25zKCl7cmV0dXJuIHRoaXMuI2F9c2V0IG1lbnVPcHRpb25zKGxlKXt0aGlzLiNhPWxlfSNzPShtaSh0aGlzLHYpLG1pKHRoaXMsbSwibWVkaXVtIikpO2dldCB3aWR0aCgpe3JldHVybiB0aGlzLiNzfXNldCB3aWR0aChsZSl7dGhpcy4jcz1sZX0jaT0obWkodGhpcyxmKSxtaSh0aGlzLE0sdm9pZCAwKSk7Z2V0IG1heFdpZHRoKCl7cmV0dXJuIHRoaXMuI2l9c2V0IG1heFdpZHRoKGxlKXt0aGlzLiNpPWxlfSNyPShtaSh0aGlzLHopLG1pKHRoaXMsQyx2b2lkIDApKTtnZXQgbWluV2lkdGgoKXtyZXR1cm4gdGhpcy4jcn1zZXQgbWluV2lkdGgobGUpe3RoaXMuI3I9bGV9I289KG1pKHRoaXMsXyksbWkodGhpcywkLCEwKSk7Z2V0IHNob3dDbG9zZUJ1dHRvbigpe3JldHVybiB0aGlzLiNvfXNldCBzaG93Q2xvc2VCdXR0b24obGUpe3RoaXMuI289bGV9I249KG1pKHRoaXMsRSksbWkodGhpcyxrLCExKSk7Z2V0IHNob3dIZWxwQnV0dG9uKCl7cmV0dXJuIHRoaXMuI259c2V0IHNob3dIZWxwQnV0dG9uKGxlKXt0aGlzLiNuPWxlfSNsPShtaSh0aGlzLFMpLG1pKHRoaXMsUCx2b2lkIDApKTtnZXQgb25IZWxwKCl7cmV0dXJuIHRoaXMuI2x9c2V0IG9uSGVscChsZSl7dGhpcy4jbD1sZX0jYz0obWkodGhpcyxSKSxtaSh0aGlzLFYsITEpKTtnZXQgbW9iaWxlRnVsbHNjcmVlbigpe3JldHVybiB0aGlzLiNjfXNldCBtb2JpbGVGdWxsc2NyZWVuKGxlKXt0aGlzLiNjPWxlfSNkPShtaSh0aGlzLFcpLG1pKHRoaXMsQiwxNikpO2dldCBjb250ZW50UGFkZGluZygpe3JldHVybiB0aGlzLiNkfXNldCBjb250ZW50UGFkZGluZyhsZSl7dGhpcy4jZD1sZX0jdT0obWkodGhpcyxVKSxtaSh0aGlzLEYsMWUzKSk7Z2V0IG1vZGFsWkluZGV4KCl7cmV0dXJuIHRoaXMuI3V9c2V0IG1vZGFsWkluZGV4KGxlKXt0aGlzLiN1PWxlfWNvbnN0cnVjdG9yKCl7c3VwZXIoKX1zdGF0aWMgc3R5bGVzPVtxZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgLyogVE9ETzogTWlncmF0ZSBoYXJkY29kZWQgdmFsdWVzIHRvIC0tZGVlcy0qIENTUyB2YXJpYWJsZXMgKi8KICAgICAgOmhvc3QgewogICAgICAgIGZvbnQtZmFtaWx5OiAke0JhfTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICB9CiAgICAgIC5tb2RhbENvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgdG9wOiAwcHg7CiAgICAgICAgbGVmdDogMHB4OwogICAgICAgIHdpZHRoOiAxMDB2dzsKICAgICAgICBoZWlnaHQ6IDEwMHZoOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgfQogICAgICBkZWVzLXRpbGUgewogICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm0sIG9wYWNpdHk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDhweCkgc2NhbGUoMC45OCk7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBtaW4taGVpZ2h0OiAxMjBweDsKICAgICAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gODBweCk7CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMjVzIGN1YmljLWJlemllcigwLjE2LCAxLCAwLjMsIDEpLCBvcGFjaXR5IDAuMnMgZWFzZTsKICAgICAgICBtYXJnaW46IDQwcHg7CiAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbjsKICAgICAgfQoKICAgICAgZGVlcy10aWxlOjpwYXJ0KG91dGVyKSB7CiAgICAgICAgYm94LXNoYWRvdzoKICAgICAgICAgIDAgMCAwIDFweCAke2guYmRUaGVtZSgiaHNsKDAgMCUgMCUgLyAwLjAzKSIsImhzbCgwIDAlIDEwMCUgLyAwLjAzKSIpfSwKICAgICAgICAgIDAgOHB4IDQwcHggJHtoLmJkVGhlbWUoImhzbCgwIDAlIDAlIC8gMC4xMikiLCJoc2woMCAwJSAwJSAvIDAuNSkiKX0sCiAgICAgICAgICAwIDJweCA4cHggJHtoLmJkVGhlbWUoImhzbCgwIDAlIDAlIC8gMC4wNikiLCJoc2woMCAwJSAwJSAvIDAuMjUpIil9OwogICAgICB9CgogICAgICAvKiBXaWR0aCB2YXJpYXRpb25zICovCiAgICAgIGRlZXMtdGlsZS53aWR0aC1zbWFsbCB7CiAgICAgICAgd2lkdGg6IDM4MHB4OwogICAgICB9CgogICAgICBkZWVzLXRpbGUud2lkdGgtbWVkaXVtIHsKICAgICAgICB3aWR0aDogNTYwcHg7CiAgICAgIH0KCiAgICAgIGRlZXMtdGlsZS53aWR0aC1sYXJnZSB7CiAgICAgICAgd2lkdGg6IDgwMHB4OwogICAgICB9CgogICAgICBkZWVzLXRpbGUud2lkdGgtZnVsbHNjcmVlbiB7CiAgICAgICAgd2lkdGg6IGNhbGMoMTAwdncgLSA0MHB4KTsKICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwdmggLSA0MHB4KTsKICAgICAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNDBweCk7CiAgICAgIH0KCiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgewogICAgICAgIGRlZXMtdGlsZSB7CiAgICAgICAgICB3aWR0aDogY2FsYygxMDB2dyAtIDQwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICBtYXgtd2lkdGg6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5tb2RhbENvbnRhaW5lciB7CiAgICAgICAgICBwYWRkaW5nOiAxMHB4OwogICAgICAgIH0KCiAgICAgICAgZGVlcy10aWxlIHsKICAgICAgICAgIG1hcmdpbjogMTBweDsKICAgICAgICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSAyMHB4KTsKICAgICAgICB9CgogICAgICAgIGRlZXMtdGlsZS5tb2JpbGUtZnVsbHNjcmVlbiB7CiAgICAgICAgICB3aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICAgIGhlaWdodDogMTAwdmggIWltcG9ydGFudDsKICAgICAgICAgIG1heC1oZWlnaHQ6IDEwMHZoICFpbXBvcnRhbnQ7CiAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgfQoKICAgICAgICBkZWVzLXRpbGUubW9iaWxlLWZ1bGxzY3JlZW46OnBhcnQob3V0ZXIpIHsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgfQogICAgICB9CgogICAgICBkZWVzLXRpbGUuc2hvdyB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7CiAgICAgIH0KCiAgICAgIGRlZXMtdGlsZS5zaG93LnByZWRlc3Ryb3kgewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDZweCkgc2NhbGUoMC45OCk7CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTVzIGVhc2UtaW4sIG9wYWNpdHkgMC4xNXMgZWFzZS1pbjsKICAgICAgfQoKICAgICAgLmhlYWRpbmcgewogICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgcGFkZGluZzogMCA4cHggMCAxNnB4OwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgLmhlYWRpbmcgLmhlYWRpbmctdGV4dCB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXNlY29uZGFyeSk7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICB9CgogICAgICAuaGVhZGluZyAuaGVhZGVyLWJ1dHRvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDJweDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICBtYXJnaW4tbGVmdDogOHB4OwogICAgICB9CgogICAgICAuaGVhZGluZyAuaGVhZGVyLWJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IDI0cHg7CiAgICAgICAgaGVpZ2h0OiAyNHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICB9CgogICAgICAuaGVhZGluZyAuaGVhZGVyLWJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1ob3Zlcik7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOwogICAgICB9CgogICAgICAuaGVhZGluZyAuaGVhZGVyLWJ1dHRvbjphY3RpdmUgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5MCUpIiwiaHNsKDAgMCUgMTUlKSIpfTsKICAgICAgfQoKICAgICAgLmhlYWRpbmcgLmhlYWRlci1idXR0b24gZGVlcy1pY29uIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIH0KCiAgICAgIC5ib3R0b21CdXR0b25zIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMDsKICAgICAgICBoZWlnaHQ6IDM2cHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLmJvdHRvbUJ1dHRvbnMgLmJvdHRvbUJ1dHRvbiB7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLXN1YnRsZSk7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5ib3R0b21CdXR0b25zIC5ib3R0b21CdXR0b246Zmlyc3QtY2hpbGQgewogICAgICAgIGJvcmRlci1sZWZ0OiBub25lOwogICAgICB9CgogICAgICAuYm90dG9tQnV0dG9ucyAuYm90dG9tQnV0dG9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWhvdmVyKTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICB9CgogICAgICAuYm90dG9tQnV0dG9ucyAuYm90dG9tQnV0dG9uOmFjdGl2ZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDkyJSkiLCJoc2woMCAwJSAxMyUpIil9OwogICAgICB9CgogICAgICAuYm90dG9tQnV0dG9ucyAuYm90dG9tQnV0dG9uLnByaW1hcnkgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNy4yIDkxLjIlIDU5LjglKSIsImhzbCgyMTMuMSA5My45JSA2Ny44JSkiKX07CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgfQoKICAgICAgLmJvdHRvbUJ1dHRvbnMgLmJvdHRvbUJ1dHRvbi5wcmltYXJ5OmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxNy4yIDkxLjIlIDU5LjglIC8gMC4wOCkiLCJoc2woMjEzLjEgOTMuOSUgNjcuOCUgLyAwLjA4KSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTcuMiA5MS4yJSA1MCUpIiwiaHNsKDIxMy4xIDkzLjklIDc1JSkiKX07CiAgICAgIH0KCiAgICAgIC5ib3R0b21CdXR0b25zIC5ib3R0b21CdXR0b24ucHJpbWFyeTphY3RpdmUgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjE3LjIgOTEuMiUgNTkuOCUgLyAwLjEyKSIsImhzbCgyMTMuMSA5My45JSA2Ny44JSAvIDAuMTIpIil9OwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtsZXQgbGU9dHlwZW9mIHRoaXMud2lkdGg9PSJzdHJpbmciP2B3aWR0aC0ke3RoaXMud2lkdGh9YDoiIixRPXR5cGVvZiB0aGlzLndpZHRoPT0ibnVtYmVyIj9gJHt0aGlzLndpZHRofXB4YDoiIixpZT10aGlzLm1heFdpZHRoP2Ake3RoaXMubWF4V2lkdGh9cHhgOiIiLHRlPXRoaXMubWluV2lkdGg/YCR7dGhpcy5taW5XaWR0aH1weGA6IiIsZWU9dGhpcy5tb2JpbGVGdWxsc2NyZWVuPyJtb2JpbGUtZnVsbHNjcmVlbiI6IiI7cmV0dXJuIHdgCiAgICAgIDxzdHlsZT4KICAgICAgICAke1E/YGRlZXMtdGlsZSB7IHdpZHRoOiAke1F9OyB9YDoiIn0KICAgICAgICAke2llP2BkZWVzLXRpbGUgeyBtYXgtd2lkdGg6ICR7aWV9OyB9YDoiIn0KICAgICAgICAke3RlP2BkZWVzLXRpbGUgeyBtaW4td2lkdGg6ICR7dGV9OyB9YDoiIn0KICAgICAgPC9zdHlsZT4KICAgICAgPGRpdiBjbGFzcz0ibW9kYWxDb250YWluZXIiIEBjbGljaz0ke3RoaXMuaGFuZGxlT3V0c2lkZUNsaWNrfSBzdHlsZT0iei1pbmRleDogJHt0aGlzLm1vZGFsWkluZGV4fSI+CiAgICAgICAgPGRlZXMtdGlsZSBjbGFzcz0iJHtsZX0gJHtlZX0iIC5vdmVyc2Nyb2xsPSR7ImNvbnRhaW4ifT4KICAgICAgICAgIDxkaXYgc2xvdD0iaGVhZGVyIiBjbGFzcz0iaGVhZGluZyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRpbmctdGV4dCI+JHt0aGlzLmhlYWRpbmd9PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlci1idXR0b25zIj4KICAgICAgICAgICAgICAke3RoaXMuc2hvd0hlbHBCdXR0b24/d2AKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlci1idXR0b24iIEBjbGljaz0ke3RoaXMuaGFuZGxlSGVscH0gdGl0bGU9IkhlbHAiPgogICAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7Imx1Y2lkZTpoZWxwQ2lyY2xlIn0+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICBgOiIifQogICAgICAgICAgICAgICR7dGhpcy5zaG93Q2xvc2VCdXR0b24/d2AKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlci1idXR0b24iIEBjbGljaz0keygpPT50aGlzLmRlc3Ryb3koKX0gdGl0bGU9IkNsb3NlIj4KICAgICAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6eCJ9PjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiIHN0eWxlPSJwYWRkaW5nOiAke3RoaXMuY29udGVudFBhZGRpbmd9cHg7Ij4ke3RoaXMuY29udGVudH08L2Rpdj4KICAgICAgICAgICR7dGhpcy5tZW51T3B0aW9ucy5sZW5ndGg+MD93YAogICAgICAgICAgICA8ZGl2IHNsb3Q9ImZvb3RlciIgY2xhc3M9ImJvdHRvbUJ1dHRvbnMiPgogICAgICAgICAgICAgICR7dGhpcy5tZW51T3B0aW9ucy5tYXAoKGtlLFgpPT53YAogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3R0b21CdXR0b24gJHtYPT09dGhpcy5tZW51T3B0aW9ucy5sZW5ndGgtMT8icHJpbWFyeSI6IiJ9ICR7a2UubmFtZT09PSJPSyI/Im9rIjoiIn0iIEBjbGljaz0keygpPT57a2UuYWN0aW9uKHRoaXMpfX0+JHtrZS5uYW1lfTwvZGl2PgogICAgICAgICAgICAgICAgYCl9CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYDoiIn0KICAgICAgICA8L2RlZXMtdGlsZT4KICAgICAgPC9kaXY+CiAgICBgfXdpbmRvd0xheWVyPW1pKHRoaXMsaik7YXN5bmMgZmlyc3RVcGRhdGVkKGxlKXtzdXBlci5maXJzdFVwZGF0ZWQobGUpLGF3YWl0KGF3YWl0IHRoaXMuZG9tdG9vbHNQcm9taXNlKS5jb252ZW5pZW5jZS5zbWFydGRlbGF5LmRlbGF5Rm9yKDMwKSx0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiZGVlcy10aWxlIikuY2xhc3NMaXN0LmFkZCgic2hvdyIpfWFzeW5jIGhhbmRsZU91dHNpZGVDbGljayhsZSl7bGUuc3RvcFByb3BhZ2F0aW9uKCk7bGV0IFE9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5tb2RhbENvbnRhaW5lciIpO2xlLnRhcmdldD09PVEmJmF3YWl0IHRoaXMuZGVzdHJveSgpfWFzeW5jIGRlc3Ryb3koKXtsZXQgbGU9YXdhaXQgdGhpcy5kb210b29sc1Byb21pc2U7dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoImRlZXMtdGlsZSIpLmNsYXNzTGlzdC5hZGQoInByZWRlc3Ryb3kiKSxhd2FpdCBsZS5jb252ZW5pZW5jZS5zbWFydGRlbGF5LmRlbGF5Rm9yKDIwMCksZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0aGlzKSxhd2FpdCB0aGlzLndpbmRvd0xheWVyLmRlc3Ryb3koKSxfYS51bnJlZ2lzdGVyKHRoaXMpfWFzeW5jIGhhbmRsZUhlbHAoKXt0aGlzLm9uSGVscCYmYXdhaXQgdGhpcy5vbkhlbHAoKX1zdGF0aWN7bWkoYSx0KX19O3JldHVybiB1ZT1hfSkoKX0pO3ZhciBjYmEsZGJhPWcoKCk9PntwZSgpO2NiYT1pKCgpPT53YAogIDxzdHlsZT4KICAgICR7SmAKICAgICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgbWF4LXdpZHRoOiA4MDBweDsKICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgfQoKICAgICAgLmRlbW8tc2VjdGlvbiB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmOGY5ZmEiLCIjMWExYTFhIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTBlMGUwIiwiIzMzMyIpfTsKICAgICAgfQoKICAgICAgLmRlbW8tc2VjdGlvbiBoMyB7CiAgICAgICAgbWFyZ2luLXRvcDogMDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzMzMyIsIiNmZmYiKX07CiAgICAgIH0KCiAgICAgIC5kZW1vLXNlY3Rpb24gcCB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNjY2IiwiIzk5OSIpfTsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgfQoKICAgICAgLmxhYmVsLWdyaWQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDI0cHg7CiAgICAgIH0KCiAgICAgIC5sYWJlbC1yb3cgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lOwogICAgICAgIGdhcDogMTZweDsKICAgICAgfQoKICAgICAgLmxhYmVsLXJvdyAuYW5ub3RhdGlvbiB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjODg4IiwiIzY2NiIpfTsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICBtaW4td2lkdGg6IDIwMHB4OwogICAgICB9CiAgICBgfQogIDwvc3R5bGU+CgogIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgIDxoMz5CYXNpYyBMYWJlbDwvaDM+CiAgICAgIDxwPkEgc2ltcGxlIHRleHQgbGFiZWwgd2l0aCBubyBhZGRpdGlvbmFsIGluZGljYXRvcnMuPC9wPgogICAgICA8ZGl2IGNsYXNzPSJsYWJlbC1ncmlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbC1yb3ciPgogICAgICAgICAgPHNwYW4gY2xhc3M9ImFubm90YXRpb24iPmxhYmVsPSJVc2VybmFtZSI8L3NwYW4+CiAgICAgICAgICA8ZGVlcy1sYWJlbCAubGFiZWw9JHsiVXNlcm5hbWUifT48L2RlZXMtbGFiZWw+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwtcm93Ij4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5sYWJlbD0iRW1haWwgQWRkcmVzcyI8L3NwYW4+CiAgICAgICAgICA8ZGVlcy1sYWJlbCAubGFiZWw9JHsiRW1haWwgQWRkcmVzcyJ9PjwvZGVlcy1sYWJlbD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICA8aDM+UmVxdWlyZWQgSW5kaWNhdG9yPC9oMz4KICAgICAgPHA+V2hlbiA8Y29kZT5yZXF1aXJlZDwvY29kZT4gaXMgc2V0LCBhIHJlZCBhc3RlcmlzayBhcHBlYXJzIGFmdGVyIHRoZSBsYWJlbCB0ZXh0LjwvcD4KICAgICAgPGRpdiBjbGFzcz0ibGFiZWwtZ3JpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwtcm93Ij4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5yZXF1aXJlZD0keyJ7dHJ1ZX0ifTwvc3Bhbj4KICAgICAgICAgIDxkZWVzLWxhYmVsIC5sYWJlbD0keyJGdWxsIE5hbWUifSAucmVxdWlyZWQ9JHshMH0+PC9kZWVzLWxhYmVsPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImxhYmVsLXJvdyI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+cmVxdWlyZWQ9JHsie2ZhbHNlfSJ9IChkZWZhdWx0KTwvc3Bhbj4KICAgICAgICAgIDxkZWVzLWxhYmVsIC5sYWJlbD0keyJOaWNrbmFtZSJ9IC5yZXF1aXJlZD0keyExfT48L2RlZXMtbGFiZWw+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgPGgzPkluZm8gVGV4dCAoSW5mbyBJY29uKTwvaDM+CiAgICAgIDxwPldoZW4gPGNvZGU+aW5mb1RleHQ8L2NvZGU+IGlzIHNldCwgYW4gaW5mbyBpY29uIGFwcGVhcnMgbmV4dCB0byB0aGUgbGFiZWwuIEhvdmVyIG92ZXIgaXQgdG8gc2VlIHRoZSB0b29sdGlwLjwvcD4KICAgICAgPGRpdiBjbGFzcz0ibGFiZWwtZ3JpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwtcm93Ij4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5pbmZvVGV4dD0iLi4uIjwvc3Bhbj4KICAgICAgICAgIDxkZWVzLWxhYmVsIC5sYWJlbD0keyJBUEkgS2V5In0gLmluZm9UZXh0PSR7IllvdXIgQVBJIGtleSBjYW4gYmUgZm91bmQgaW4gdGhlIGRldmVsb3BlciBzZXR0aW5ncyBkYXNoYm9hcmQuIn0+PC9kZWVzLWxhYmVsPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImxhYmVsLXJvdyI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+c2hvcnQgaW5mb1RleHQ8L3NwYW4+CiAgICAgICAgICA8ZGVlcy1sYWJlbCAubGFiZWw9JHsiUmVnaW9uIn0gLmluZm9UZXh0PSR7IlNlbGVjdCB5b3VyIG5lYXJlc3QgZGF0YWNlbnRlci4ifT48L2RlZXMtbGFiZWw+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgPGgzPlJlcXVpcmVkICsgSW5mbyBUZXh0PC9oMz4KICAgICAgPHA+Qm90aCBpbmRpY2F0b3JzIGNhbiBiZSBjb21iaW5lZC4gVGhlIGFzdGVyaXNrIGFwcGVhcnMgZmlyc3QsIHRoZW4gdGhlIGluZm8gaWNvbi48L3A+CiAgICAgIDxkaXYgY2xhc3M9ImxhYmVsLWdyaWQiPgogICAgICAgIDxkaXYgY2xhc3M9ImxhYmVsLXJvdyI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+cmVxdWlyZWQgKyBpbmZvVGV4dDwvc3Bhbj4KICAgICAgICAgIDxkZWVzLWxhYmVsIC5sYWJlbD0keyJQYXNzd29yZCJ9IC5yZXF1aXJlZD0keyEwfSAuaW5mb1RleHQ9JHsiTXVzdCBiZSBhdCBsZWFzdCA4IGNoYXJhY3RlcnMgd2l0aCBvbmUgdXBwZXJjYXNlIGxldHRlciBhbmQgb25lIG51bWJlci4ifT48L2RlZXMtbGFiZWw+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwtcm93Ij4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5yZXF1aXJlZCArIGluZm9UZXh0PC9zcGFuPgogICAgICAgICAgPGRlZXMtbGFiZWwgLmxhYmVsPSR7IkVtYWlsIEFkZHJlc3MifSAucmVxdWlyZWQ9JHshMH0gLmluZm9UZXh0PSR7IldlIHdpbGwgc2VuZCBhIHZlcmlmaWNhdGlvbiBsaW5rIHRvIHRoaXMgYWRkcmVzcy4ifT48L2RlZXMtbGFiZWw+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgPGgzPkVtcHR5IExhYmVsPC9oMz4KICAgICAgPHA+V2hlbiA8Y29kZT5sYWJlbDwvY29kZT4gaXMgZW1wdHkgb3Igbm90IHNldCwgbm90aGluZyBpcyByZW5kZXJlZC4gVGhlIGVsZW1lbnQgYmVsb3cgaGFzIG5vIGxhYmVsIHRleHQ6PC9wPgogICAgICA8ZGl2IGNsYXNzPSJsYWJlbC1ncmlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbC1yb3ciPgogICAgICAgICAgPHNwYW4gY2xhc3M9ImFubm90YXRpb24iPmxhYmVsPSIiIChlbXB0eSk8L3NwYW4+CiAgICAgICAgICA8ZGVlcy1sYWJlbCAubGFiZWw9JHsiIn0+PC9kZWVzLWxhYmVsPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2PgpgLCJkZW1vRnVuYyIpfSk7dmFyIFAxZSxqZyxISmEsYng9ZygoKT0+e3ZvKCk7dzIoKTtwZSgpO2RiYSgpO2h0KCk7UDFlPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxqZz1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sSEphPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1sYWJlbCIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdO3ZhciB4PWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzTGFiZWwiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgbT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZyxyZWZsZWN0OiEwfSldLHA9W0woe3R5cGU6U3RyaW5nLHJlZmxlY3Q6ITB9KV0sYz1bTCh7dHlwZTpCb29sZWFuLHJlZmxlY3Q6ITB9KV0sUDFlKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibGFiZWwiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+ImxhYmVsImluIGYsImhhcyIpLGdldDppKGY9PmYubGFiZWwsImdldCIpLHNldDppKChmLHkpPT57Zi5sYWJlbD15fSwic2V0Iil9LG1ldGFkYXRhOm19LG8sbCksUDFlKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaW5mb1RleHQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+ImluZm9UZXh0ImluIGYsImhhcyIpLGdldDppKGY9PmYuaW5mb1RleHQsImdldCIpLHNldDppKChmLHkpPT57Zi5pbmZvVGV4dD15fSwic2V0Iil9LG1ldGFkYXRhOm19LGQsdSksUDFlKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicmVxdWlyZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+InJlcXVpcmVkImluIGYsImhhcyIpLGdldDppKGY9PmYucmVxdWlyZWQsImdldCIpLHNldDppKChmLHkpPT57Zi5yZXF1aXJlZD15fSwic2V0Iil9LG1ldGFkYXRhOm19LGIsdiksUDFlKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOm19LG51bGwsdCkseD1hPWUudmFsdWUsbSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTptfSl9c3RhdGljIGRlbW89Y2JhO3N0YXRpYyBkZW1vR3JvdXBzPVsiTGF5b3V0IiwiSW5wdXQiXTsjZT1qZyh0aGlzLG8sIiIpO2dldCBsYWJlbCgpe3JldHVybiB0aGlzLiNlfXNldCBsYWJlbChtKXt0aGlzLiNlPW19I3Q9KGpnKHRoaXMsbCksamcodGhpcyxkLHZvaWQgMCkpO2dldCBpbmZvVGV4dCgpe3JldHVybiB0aGlzLiN0fXNldCBpbmZvVGV4dChtKXt0aGlzLiN0PW19I2E9KGpnKHRoaXMsdSksamcodGhpcyxiLCExKSk7Z2V0IHJlcXVpcmVkKCl7cmV0dXJuIHRoaXMuI2F9c2V0IHJlcXVpcmVkKG0pe3RoaXMuI2E9bX1zdGF0aWMgc3R5bGVzPVtxZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgLyogVE9ETzogTWlncmF0ZSBoYXJkY29kZWQgdmFsdWVzIHRvIC0tZGVlcy0qIENTUyB2YXJpYWJsZXMgKi8KICAgICAgOmhvc3QgewogICAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsICdSb2JvdG8nLCBzYW5zLXNlcmlmOwogICAgICB9CgogICAgICAubGFiZWwgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxNSUpIiwiaHNsKDAgMCUgOTAlKSIpfTsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBsaW5lLWhlaWdodDogMS41OwogICAgICAgIG1hcmdpbi1ib3R0b206IDZweDsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICAgIH0KCiAgICAgIC5yZXF1aXJlZCB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCA4NC4yJSA2MC4yJSkiLCJoc2woMCA3Mi4yJSA1MC42JSkiKX07CiAgICAgICAgbWFyZ2luLWxlZnQ6IDJweDsKICAgICAgfQoKICAgICAgLmRlc2NyaXB0aW9uLWljb24gewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgd2lkdGg6IDI0cHg7CiAgICAgICAgaGVpZ2h0OiAyNHB4OwogICAgICAgIG1hcmdpbjogLTZweCAwIC02cHggMnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cyBlYXNlLCBjb2xvciAwLjE1cyBlYXNlOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNDUuMSUpIiwiaHNsKDAgMCUgNjMuOSUpIil9OwogICAgICB9CgogICAgICAuZGVzY3JpcHRpb24taWNvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDAlIC8gMC4wNikiLCJoc2woMCAwJSAxMDAlIC8gMC4wOCkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAyNSUpIiwiaHNsKDAgMCUgODAlKSIpfTsKICAgICAgfQoKICAgICAgLmRlc2NyaXB0aW9uLWljb24gZGVlcy1pY29uIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICAke3RoaXMubGFiZWw/d2AKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwiPgogICAgICAgICAgICAgICR7dGhpcy5sYWJlbH0KICAgICAgICAgICAgICAke3RoaXMucmVxdWlyZWQ/d2A8c3BhbiBjbGFzcz0icmVxdWlyZWQiPio8L3NwYW4+YDoiIn0KICAgICAgICAgICAgICAke3RoaXMuaW5mb1RleHQ/d2AKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXNjcmlwdGlvbi1pY29uIj4KICAgICAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHsibHVjaWRlOmluZm8ifT48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGVlcy1zcGVlY2hidWJibGUgLnRleHQ9JHt0aGlzLmluZm9UZXh0fT48L2RlZXMtc3BlZWNoYnViYmxlPgogICAgICAgICAgICAgICAgICBgOndgYH0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgOndgYH0KICAgIGB9Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLGpnKHRoaXMsdil9c3RhdGlje2pnKGEsdCl9fTtyZXR1cm4geD1hfSkoKX0pO3ZhciBJMWUsRm90PWcoKCk9PntJMWU9IjAuNTUuMSJ9KTt2YXIgdngsazIscUphLFZnPWcoKCk9PntwZSgpO2t0KCk7Rm90KCk7aHQoKTt2eD1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sazI9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LHFKYT0oKCk9PntsZXQgcz1bbmUoImRlZXMtd29ya3NwYWNlLW1vbmFjbyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdO3ZhciBOPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzV29ya3NwYWNlTW9uYWNvIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IEM9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpTdHJpbmd9KV0scD1bTCh7dHlwZTpTdHJpbmd9KV0sYz1bTCh7dHlwZTpTdHJpbmd9KV0seD1bTCh7dHlwZTpPYmplY3R9KV0seT1bTCh7dHlwZTpCb29sZWFufSldLHZ4KHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY29udGVudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4iY29udGVudCJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLmNvbnRlbnQsImdldCIpLHNldDppKChfLE8pPT57Xy5jb250ZW50PU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sbyxsKSx2eCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Imxhbmd1YWdlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJsYW5ndWFnZSJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLmxhbmd1YWdlLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18ubGFuZ3VhZ2U9T30sInNldCIpfSxtZXRhZGF0YTpDfSxkLHUpLHZ4KHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZmlsZVBhdGgiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+ImZpbGVQYXRoImluIF8sImhhcyIpLGdldDppKF89Pl8uZmlsZVBhdGgsImdldCIpLHNldDppKChfLE8pPT57Xy5maWxlUGF0aD1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LGIsdiksdngodGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjb250ZW50U3ViamVjdCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4iY29udGVudFN1YmplY3QiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5jb250ZW50U3ViamVjdCwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLmNvbnRlbnRTdWJqZWN0PU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sbSxmKSx2eCh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6IndvcmRXcmFwIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJ3b3JkV3JhcCJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLndvcmRXcmFwLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18ud29yZFdyYXA9T30sInNldCIpfSxtZXRhZGF0YTpDfSxNLHopLHZ4KG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOkN9LG51bGwsdCksTj1hPWUudmFsdWUsQyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpDfSl9c3RhdGljIGRlbW89aSgoKT0+d2A8ZGVlcy13b3Jrc3BhY2UtbW9uYWNvPjwvZGVlcy13b3Jrc3BhY2UtbW9uYWNvPmAsImRlbW8iKTtzdGF0aWMgZGVtb0dyb3Vwcz1bIldvcmtzcGFjZSJdO3N0YXRpYyBtb25hY29EZWZlcnJlZDtlZGl0b3JEZWZlcnJlZD11dC5zbWFydHByb21pc2UuZGVmZXIoKTsjZT1rMih0aGlzLG8sYGZ1bmN0aW9uIGhlbGxvKCkgewoJYWxlcnQoJ0hlbGxvIHdvcmxkIScpOwp9YCk7Z2V0IGNvbnRlbnQoKXtyZXR1cm4gdGhpcy4jZX1zZXQgY29udGVudChDKXt0aGlzLiNlPUN9I3Q9KGsyKHRoaXMsbCksazIodGhpcyxkLCJ0eXBlc2NyaXB0IikpO2dldCBsYW5ndWFnZSgpe3JldHVybiB0aGlzLiN0fXNldCBsYW5ndWFnZShDKXt0aGlzLiN0PUN9I2E9KGsyKHRoaXMsdSksazIodGhpcyxiLCIiKSk7Z2V0IGZpbGVQYXRoKCl7cmV0dXJuIHRoaXMuI2F9c2V0IGZpbGVQYXRoKEMpe3RoaXMuI2E9Q30jcz0oazIodGhpcyx2KSxrMih0aGlzLG0sbmV3IHV0LnNtYXJ0cngucnhqcy5TdWJqZWN0KSk7Z2V0IGNvbnRlbnRTdWJqZWN0KCl7cmV0dXJuIHRoaXMuI3N9c2V0IGNvbnRlbnRTdWJqZWN0KEMpe3RoaXMuI3M9Q30jaT0oazIodGhpcyxmKSxrMih0aGlzLE0sIm9mZiIpKTtnZXQgd29yZFdyYXAoKXtyZXR1cm4gdGhpcy4jaX1zZXQgd29yZFdyYXAoQyl7dGhpcy4jaT1DfW1vbmFjb1RoZW1lU3Vic2NyaXB0aW9uPShrMih0aGlzLHopLG51bGwpO2lzVXBkYXRpbmdGcm9tRXh0ZXJuYWw9ITE7Y29uc3RydWN0b3IoKXtzdXBlcigpLGppLnNldHVwRG9tVG9vbHMoKX1zdGF0aWMgc3R5bGVzPVtxZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgLyogVE9ETzogTWlncmF0ZSBoYXJkY29kZWQgdmFsdWVzIHRvIC0tZGVlcy0qIENTUyB2YXJpYWJsZXMgKi8KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgICogewogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgIC5tYWluYm94IHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAjY29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0ibWFpbmJveCI+CiAgICAgICAgPGRpdiBpZD0iY29udGFpbmVyIj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfWFzeW5jIGZpcnN0VXBkYXRlZChDKXtzdXBlci5maXJzdFVwZGF0ZWQoQyk7bGV0IF89dGhpcy5zaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjb250YWluZXIiKSxPPWBodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL21vbmFjby1lZGl0b3JAJHtJMWV9YDtpZighTi5tb25hY29EZWZlcnJlZCl7Ti5tb25hY29EZWZlcnJlZD11dC5zbWFydHByb21pc2UuZGVmZXIoKTtsZXQgaz1gJHtPfS9taW4vdnMvbG9hZGVyLmpzYCxTPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO1Muc3JjPWssUy5vbmxvYWQ9KCk9PntOLm1vbmFjb0RlZmVycmVkLnJlc29sdmUoKX0sZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChTKX1hd2FpdCBOLm1vbmFjb0RlZmVycmVkLnByb21pc2Usd2luZG93LnJlcXVpcmUuY29uZmlnKHtwYXRoczp7dnM6YCR7T30vbWluL3ZzYH19KSx3aW5kb3cucmVxdWlyZShbInZzL2VkaXRvci9lZGl0b3IubWFpbiJdLGFzeW5jKCk9PntsZXQgaz1hd2FpdCB0aGlzLmRvbXRvb2xzUHJvbWlzZSxJPWsudGhlbWVNYW5hZ2VyLmdvQnJpZ2h0Qm9vbGVhbj8idnMiOiJ2cy1kYXJrIixQPXdpbmRvdy5tb25hY28sUj1udWxsO2lmKHRoaXMuZmlsZVBhdGgpe2xldCBWPVAuVXJpLnBhcnNlKGBmaWxlOi8vJHt0aGlzLmZpbGVQYXRofWApO1I9UC5lZGl0b3IuZ2V0TW9kZWwoViksUj9SLnNldFZhbHVlKHRoaXMuY29udGVudCk6Uj1QLmVkaXRvci5jcmVhdGVNb2RlbCh0aGlzLmNvbnRlbnQsdGhpcy5sYW5ndWFnZSxWKX1sZXQgSz1QLmVkaXRvci5jcmVhdGUoXyx7bW9kZWw6Unx8dm9pZCAwLHZhbHVlOlI/dm9pZCAwOnRoaXMuY29udGVudCxsYW5ndWFnZTpSP3ZvaWQgMDp0aGlzLmxhbmd1YWdlLHRoZW1lOkksdXNlU2hhZG93RE9NOiEwLGZvbnRTaXplOjE2LGF1dG9tYXRpY0xheW91dDohMCx3b3JkV3JhcDp0aGlzLndvcmRXcmFwLGhvdmVyOntlbmFibGVkOiEwLGRlbGF5OjMwMCxzdGlja3k6ITAsYWJvdmU6ITF9fSk7dGhpcy5tb25hY29UaGVtZVN1YnNjcmlwdGlvbj1rLnRoZW1lTWFuYWdlci50aGVtZU9ic2VydmFibGUuc3Vic2NyaWJlKFY9PntsZXQgVz1WPyJ2cyI6InZzLWRhcmsiO0sudXBkYXRlT3B0aW9ucyh7dGhlbWU6V30pfSksdGhpcy5lZGl0b3JEZWZlcnJlZC5yZXNvbHZlKEspfSk7bGV0ICQ9YXdhaXQoYXdhaXQgZmV0Y2goYCR7T30vbWluL3ZzL2VkaXRvci9lZGl0b3IubWFpbi5jc3NgKSkudGV4dCgpLEU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtFLnRleHRDb250ZW50PSQsdGhpcy5zaGFkb3dSb290LmFwcGVuZChFKTtsZXQgSD1hd2FpdCB0aGlzLmVkaXRvckRlZmVycmVkLnByb21pc2U7SC5vbkRpZENoYW5nZU1vZGVsQ29udGVudChhc3luYyBrPT57aWYodGhpcy5pc1VwZGF0aW5nRnJvbUV4dGVybmFsKXJldHVybjtsZXQgUz1ILmdldFZhbHVlKCk7dGhpcy5jb250ZW50U3ViamVjdC5uZXh0KFMpLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNvbnRlbnQtY2hhbmdlIix7ZGV0YWlsOlMsYnViYmxlczohMCxjb21wb3NlZDohMH0pKX0pLHRoaXMuY29udGVudFN1YmplY3QubmV4dChILmdldFZhbHVlKCkpfWFzeW5jIHVwZGF0ZWQoQyl7c3VwZXIudXBkYXRlZChDKTtsZXQgXz13aW5kb3cubW9uYWNvO2lmKF8pe2lmKEMuaGFzKCJmaWxlUGF0aCIpJiZ0aGlzLmZpbGVQYXRoKXtsZXQgTz1hd2FpdCB0aGlzLmVkaXRvckRlZmVycmVkLnByb21pc2UsJD1fLlVyaS5wYXJzZShgZmlsZTovLyR7dGhpcy5maWxlUGF0aH1gKSxFPV8uZWRpdG9yLmdldE1vZGVsKCQpO0U/RS5nZXRWYWx1ZSgpIT09dGhpcy5jb250ZW50JiYodGhpcy5pc1VwZGF0aW5nRnJvbUV4dGVybmFsPSEwLEUuc2V0VmFsdWUodGhpcy5jb250ZW50KSx0aGlzLmlzVXBkYXRpbmdGcm9tRXh0ZXJuYWw9ITEpOkU9Xy5lZGl0b3IuY3JlYXRlTW9kZWwodGhpcy5jb250ZW50LHRoaXMubGFuZ3VhZ2UsJCksTy5nZXRNb2RlbCgpPy51cmkudG9TdHJpbmcoKSE9PSQudG9TdHJpbmcoKSYmTy5zZXRNb2RlbChFKTtyZXR1cm59aWYoQy5oYXMoImNvbnRlbnQiKSl7bGV0IE89YXdhaXQgdGhpcy5lZGl0b3JEZWZlcnJlZC5wcm9taXNlO08uZ2V0VmFsdWUoKSE9PXRoaXMuY29udGVudCYmKHRoaXMuaXNVcGRhdGluZ0Zyb21FeHRlcm5hbD0hMCxPLnNldFZhbHVlKHRoaXMuY29udGVudCksdGhpcy5pc1VwZGF0aW5nRnJvbUV4dGVybmFsPSExKX1pZihDLmhhcygibGFuZ3VhZ2UiKSl7bGV0ICQ9KGF3YWl0IHRoaXMuZWRpdG9yRGVmZXJyZWQucHJvbWlzZSkuZ2V0TW9kZWwoKTskJiZfLmVkaXRvci5zZXRNb2RlbExhbmd1YWdlKCQsdGhpcy5sYW5ndWFnZSl9fX1hc3luYyBkaXNjb25uZWN0ZWRDYWxsYmFjaygpe2F3YWl0IHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5tb25hY29UaGVtZVN1YnNjcmlwdGlvbiYmKHRoaXMubW9uYWNvVGhlbWVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLm1vbmFjb1RoZW1lU3Vic2NyaXB0aW9uPW51bGwpfWFzeW5jIHNldENvbnRlbnRFeHRlcm5hbChDLF89ITApe2xldCBPPWF3YWl0IHRoaXMuZWRpdG9yRGVmZXJyZWQucHJvbWlzZTtpZihPLmdldFZhbHVlKCk9PT1DKXJldHVybjtsZXQgRT1fP08uZ2V0UG9zaXRpb24oKTpudWxsLEg9Xz9PLmdldFNlbGVjdGlvbnMoKTpudWxsLGs9Xz9PLmdldFNjcm9sbFRvcCgpOjAsUz1fP08uZ2V0U2Nyb2xsTGVmdCgpOjA7aWYodGhpcy5pc1VwZGF0aW5nRnJvbUV4dGVybmFsPSEwLE8uc2V0VmFsdWUoQyksdGhpcy5pc1VwZGF0aW5nRnJvbUV4dGVybmFsPSExLF8pe2lmKEUpe2xldCBJPU8uZ2V0TW9kZWwoKSxQPUk/LmdldExpbmVDb3VudCgpfHwxLFI9TWF0aC5taW4oRS5saW5lTnVtYmVyLFApLEs9ST8uZ2V0TGluZU1heENvbHVtbihSKXx8MSxWPU1hdGgubWluKEUuY29sdW1uLEspO08uc2V0UG9zaXRpb24oe2xpbmVOdW1iZXI6Uixjb2x1bW46Vn0pfWlmKEgmJkgubGVuZ3RoPjApdHJ5e08uc2V0U2VsZWN0aW9ucyhIKX1jYXRjaHt9Ty5zZXRTY3JvbGxQb3NpdGlvbih7c2Nyb2xsVG9wOmssc2Nyb2xsTGVmdDpTfSl9fXN0YXRpY3trMihhLHQpfX07cmV0dXJuIE49YX0pKCl9KTt2YXIgWWQsSnIsVWcsQm90LEhvdD1nKCgpPT57RWkoKTtwZSgpO2h0KCk7UHUoKTtHYSgpO2J4KCk7bXIoKTtWZygpO1ZnKCk7WWQ9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LEpyPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxVZz1be2tleToidHlwZXNjcmlwdCIsbGFiZWw6IlR5cGVTY3JpcHQifSx7a2V5OiJqYXZhc2NyaXB0IixsYWJlbDoiSmF2YVNjcmlwdCJ9LHtrZXk6Impzb24iLGxhYmVsOiJKU09OIn0se2tleToiaHRtbCIsbGFiZWw6IkhUTUwifSx7a2V5OiJjc3MiLGxhYmVsOiJDU1MifSx7a2V5OiJzY3NzIixsYWJlbDoiU0NTUyJ9LHtrZXk6Im1hcmtkb3duIixsYWJlbDoiTWFya2Rvd24ifSx7a2V5OiJ5YW1sIixsYWJlbDoiWUFNTCJ9LHtrZXk6InhtbCIsbGFiZWw6IlhNTCJ9LHtrZXk6InNxbCIsbGFiZWw6IlNRTCJ9LHtrZXk6InB5dGhvbiIsbGFiZWw6IlB5dGhvbiJ9LHtrZXk6ImphdmEiLGxhYmVsOiJKYXZhIn0se2tleToiY3NoYXJwIixsYWJlbDoiQyMifSx7a2V5OiJjcHAiLGxhYmVsOiJDKysifSx7a2V5OiJnbyIsbGFiZWw6IkdvIn0se2tleToicnVzdCIsbGFiZWw6IlJ1c3QifSx7a2V5OiJzaGVsbCIsbGFiZWw6IlNoZWxsIn0se2tleToicGxhaW50ZXh0IixsYWJlbDoiUGxhaW4gVGV4dCJ9XSxCb3Q9KCgpPT57bGV0IHM9W25lKCJkZWVzLWlucHV0LWNvZGUiKV0sZSx0PVtdLGEscj1CdCxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXSxPLCQ9W10sRT1bXSxILGs9W10sUz1bXSxJLFA9W10sUj1bXTt2YXIgSz1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0lucHV0Q29kZSIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBWPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6U3RyaW5nfSldLHA9W0woe3R5cGU6U3RyaW5nfSldLGM9W0woe3R5cGU6U3RyaW5nfSldLHg9W0woe3R5cGU6U3RyaW5nfSldLHk9W0woe3R5cGU6Qm9vbGVhbn0pXSxOPVtZKCldLE89W1koKV0sSD1bWSgpXSxJPVtZKCldLFlkKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidmFsdWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVz0+InZhbHVlImluIFcsImhhcyIpLGdldDppKFc9PlcudmFsdWUsImdldCIpLHNldDppKChXLG1lKT0+e1cudmFsdWU9bWV9LCJzZXQiKX0sbWV0YWRhdGE6Vn0sbyxsKSxZZCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Imxhbmd1YWdlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFc9PiJsYW5ndWFnZSJpbiBXLCJoYXMiKSxnZXQ6aShXPT5XLmxhbmd1YWdlLCJnZXQiKSxzZXQ6aSgoVyxtZSk9PntXLmxhbmd1YWdlPW1lfSwic2V0Iil9LG1ldGFkYXRhOlZ9LGQsdSksWWQodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJoZWlnaHQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVz0+ImhlaWdodCJpbiBXLCJoYXMiKSxnZXQ6aShXPT5XLmhlaWdodCwiZ2V0Iiksc2V0OmkoKFcsbWUpPT57Vy5oZWlnaHQ9bWV9LCJzZXQiKX0sbWV0YWRhdGE6Vn0sYix2KSxZZCh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6IndvcmRXcmFwIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFc9PiJ3b3JkV3JhcCJpbiBXLCJoYXMiKSxnZXQ6aShXPT5XLndvcmRXcmFwLCJnZXQiKSxzZXQ6aSgoVyxtZSk9PntXLndvcmRXcmFwPW1lfSwic2V0Iil9LG1ldGFkYXRhOlZ9LG0sZiksWWQodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93TGluZU51bWJlcnMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVz0+InNob3dMaW5lTnVtYmVycyJpbiBXLCJoYXMiKSxnZXQ6aShXPT5XLnNob3dMaW5lTnVtYmVycywiZ2V0Iiksc2V0OmkoKFcsbWUpPT57Vy5zaG93TGluZU51bWJlcnM9bWV9LCJzZXQiKX0sbWV0YWRhdGE6Vn0sTSx6KSxZZCh0aGlzLG51bGwsTix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImlzTGFuZ3VhZ2VEcm9wZG93bk9wZW4iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVz0+ImlzTGFuZ3VhZ2VEcm9wZG93bk9wZW4iaW4gVywiaGFzIiksZ2V0OmkoVz0+Vy5pc0xhbmd1YWdlRHJvcGRvd25PcGVuLCJnZXQiKSxzZXQ6aSgoVyxtZSk9PntXLmlzTGFuZ3VhZ2VEcm9wZG93bk9wZW49bWV9LCJzZXQiKX0sbWV0YWRhdGE6Vn0sQyxfKSxZZCh0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNvcHlTdWNjZXNzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFc9PiJjb3B5U3VjY2VzcyJpbiBXLCJoYXMiKSxnZXQ6aShXPT5XLmNvcHlTdWNjZXNzLCJnZXQiKSxzZXQ6aSgoVyxtZSk9PntXLmNvcHlTdWNjZXNzPW1lfSwic2V0Iil9LG1ldGFkYXRhOlZ9LCQsRSksWWQodGhpcyxudWxsLEgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJsaW5lQ291bnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVz0+ImxpbmVDb3VudCJpbiBXLCJoYXMiKSxnZXQ6aShXPT5XLmxpbmVDb3VudCwiZ2V0Iiksc2V0OmkoKFcsbWUpPT57Vy5saW5lQ291bnQ9bWV9LCJzZXQiKX0sbWV0YWRhdGE6Vn0sayxTKSxZZCh0aGlzLG51bGwsSSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImN1cnNvclBvc2l0aW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFc9PiJjdXJzb3JQb3NpdGlvbiJpbiBXLCJoYXMiKSxnZXQ6aShXPT5XLmN1cnNvclBvc2l0aW9uLCJnZXQiKSxzZXQ6aSgoVyxtZSk9PntXLmN1cnNvclBvc2l0aW9uPW1lfSwic2V0Iil9LG1ldGFkYXRhOlZ9LFAsUiksWWQobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6Vn0sbnVsbCx0KSxLPWE9ZS52YWx1ZSxWJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOlZ9KX1zdGF0aWMgZGVtbz1pKCgpPT53YAogICAgPGRlZXMtaW5wdXQtY29kZQogICAgICBsYWJlbD0iVHlwZVNjcmlwdCBDb2RlIgogICAgICBrZXk9ImNvZGUiCiAgICAgIGxhbmd1YWdlPSJ0eXBlc2NyaXB0IgogICAgICBoZWlnaHQ9IjMwMHB4IgogICAgICAudmFsdWU9JHtgY29uc3QgZ3JlZXRpbmc6IHN0cmluZyA9ICJIZWxsbyBXb3JsZCI7CmNvbnNvbGUubG9nKGdyZWV0aW5nKTtgfQogICAgPjwvZGVlcy1pbnB1dC1jb2RlPgogIGAsImRlbW8iKTtzdGF0aWMgZGVtb0dyb3Vwcz1bIklucHV0IiwiV29ya3NwYWNlIl07I2U9SnIodGhpcyxvLCIiKTtnZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy4jZX1zZXQgdmFsdWUoVil7dGhpcy4jZT1WfSN0PShKcih0aGlzLGwpLEpyKHRoaXMsZCwidHlwZXNjcmlwdCIpKTtnZXQgbGFuZ3VhZ2UoKXtyZXR1cm4gdGhpcy4jdH1zZXQgbGFuZ3VhZ2UoVil7dGhpcy4jdD1WfSNhPShKcih0aGlzLHUpLEpyKHRoaXMsYiwiMjAwcHgiKSk7Z2V0IGhlaWdodCgpe3JldHVybiB0aGlzLiNhfXNldCBoZWlnaHQoVil7dGhpcy4jYT1WfSNzPShKcih0aGlzLHYpLEpyKHRoaXMsbSwib2ZmIikpO2dldCB3b3JkV3JhcCgpe3JldHVybiB0aGlzLiNzfXNldCB3b3JkV3JhcChWKXt0aGlzLiNzPVZ9I2k9KEpyKHRoaXMsZiksSnIodGhpcyxNLCEwKSk7Z2V0IHNob3dMaW5lTnVtYmVycygpe3JldHVybiB0aGlzLiNpfXNldCBzaG93TGluZU51bWJlcnMoVil7dGhpcy4jaT1WfSNyPShKcih0aGlzLHopLEpyKHRoaXMsQywhMSkpO2dldCBpc0xhbmd1YWdlRHJvcGRvd25PcGVuKCl7cmV0dXJuIHRoaXMuI3J9c2V0IGlzTGFuZ3VhZ2VEcm9wZG93bk9wZW4oVil7dGhpcy4jcj1WfSNvPShKcih0aGlzLF8pLEpyKHRoaXMsJCwhMSkpO2dldCBjb3B5U3VjY2Vzcygpe3JldHVybiB0aGlzLiNvfXNldCBjb3B5U3VjY2VzcyhWKXt0aGlzLiNvPVZ9I249KEpyKHRoaXMsRSksSnIodGhpcyxrLDApKTtnZXQgbGluZUNvdW50KCl7cmV0dXJuIHRoaXMuI259c2V0IGxpbmVDb3VudChWKXt0aGlzLiNuPVZ9I2w9KEpyKHRoaXMsUyksSnIodGhpcyxQLHtsaW5lOjEsY29sdW1uOjF9KSk7Z2V0IGN1cnNvclBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuI2x9c2V0IGN1cnNvclBvc2l0aW9uKFYpe3RoaXMuI2w9Vn1lZGl0b3JFbGVtZW50PShKcih0aGlzLFIpLG51bGwpO3N0YXRpYyBzdHlsZXM9W3FlLC4uLkJ0LmJhc2VTdHlsZXMsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgICogewogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgbWluLWhlaWdodDogMDsKICAgICAgfQoKICAgICAgLmlucHV0LXdyYXBwZXIsCiAgICAgIDpob3N0KFtsYWJlbC1wb3NpdGlvbj0idG9wIl0pIC5pbnB1dC13cmFwcGVyLAogICAgICA6aG9zdChbbGFiZWwtcG9zaXRpb249ImxlZnQiXSkgLmlucHV0LXdyYXBwZXIsCiAgICAgIDpob3N0KFtsYWJlbC1wb3NpdGlvbj0icmlnaHQiXSkgLmlucHV0LXdyYXBwZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG1pbi1oZWlnaHQ6IDA7CiAgICAgIH0KCiAgICAgIGRlZXMtdGlsZSB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBtaW4taGVpZ2h0OiAwOwogICAgICB9CgogICAgICAudG9vbGJhciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBwYWRkaW5nOiA0cHggMTJweDsKICAgICAgICBnYXA6IDhweDsKICAgICAgfQoKICAgICAgLnRvb2xiYXItbGVmdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICB9CgogICAgICAudG9vbGJhci1yaWdodCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNHB4OwogICAgICB9CgogICAgICAubGFuZ3VhZ2Utc2VsZWN0b3IgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgLmxhbmd1YWdlLWJ1dHRvbiB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4OwogICAgICAgIHBhZGRpbmc6IDRweCAxMHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYmctcHJpbWFyeSk7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXNlY29uZGFyeSk7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5sYW5ndWFnZS1idXR0b246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItaG92ZXIpOwogICAgICB9CgogICAgICAubGFuZ3VhZ2UtZHJvcGRvd24gewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDEwMCU7CiAgICAgICAgbGVmdDogMDsKICAgICAgICBtYXJnaW4tdG9wOiA0cHg7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1iZy1wcmltYXJ5KTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpOwogICAgICAgIHotaW5kZXg6IDEwMDsKICAgICAgICBtYXgtaGVpZ2h0OiAyNTBweDsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIG1pbi13aWR0aDogMTQwcHg7CiAgICAgIH0KCiAgICAgIC5sYW5ndWFnZS1vcHRpb24gewogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOwogICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xNXMgZWFzZTsKICAgICAgfQoKICAgICAgLmxhbmd1YWdlLW9wdGlvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1ob3Zlcik7CiAgICAgIH0KCiAgICAgIC5sYW5ndWFnZS1vcHRpb24uc2VsZWN0ZWQgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYWN0aXZlKTsKICAgICAgfQoKICAgICAgLnRvb2xiYXItYnV0dG9uIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICB9CgogICAgICAudG9vbGJhci1idXR0b246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItaG92ZXIpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTsKICAgICAgfQoKICAgICAgLnRvb2xiYXItYnV0dG9uLmFjdGl2ZSB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1hY3RpdmUpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTsKICAgICAgfQoKICAgICAgLnRvb2xiYXItYnV0dG9uLnN1Y2Nlc3MgewogICAgICAgIGNvbG9yOiBoc2woMTQyLjEgNzYuMiUgMzYuMyUpOwogICAgICB9CgogICAgICAuZWRpdG9yLXdyYXBwZXIgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBpbnNldDogMDsKICAgICAgfQoKICAgICAgZGVlcy13b3Jrc3BhY2UtbW9uYWNvIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgIC8qIE1hdGNoIE1vbmFjbyBiYWNrZ3JvdW5kIHRvIHRpbGUgKi8KICAgICAgZGVlcy13b3Jrc3BhY2UtbW9uYWNvOjpwYXJ0KGNvbnRhaW5lcikgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYmctcHJpbWFyeSk7CiAgICAgIH0KCiAgICAgIC50b29sYmFyLWRpdmlkZXIgewogICAgICAgIHdpZHRoOiAxcHg7CiAgICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIG1hcmdpbjogMCA0cHg7CiAgICAgIH0KCiAgICAgIC8qIEZvb3RlciAqLwogICAgICAuZWRpdG9yLWZvb3RlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBwYWRkaW5nOiAwIDEycHg7CiAgICAgICAgaGVpZ2h0OiAyOHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAuZm9vdGVyLWxlZnQsCiAgICAgIC5mb290ZXItcmlnaHQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDEycHg7CiAgICAgIH0KCiAgICAgIC5mb290ZXItc2VwYXJhdG9yIHsKICAgICAgICB3aWR0aDogMXB4OwogICAgICAgIGhlaWdodDogMTJweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgfQoKICAgICAgOmhvc3QoW2Rpc2FibGVkXSkgLmNvZGUtY29udGFpbmVyIHsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe2xldCBWPVVnLmZpbmQoVz0+Vy5rZXk9PT10aGlzLmxhbmd1YWdlKXx8VWdbMF07cmV0dXJuIHdgCiAgICAgIDxzdHlsZT4KICAgICAgICA6aG9zdCB7CiAgICAgICAgICBoZWlnaHQ6ICR7dGhpcy5oZWlnaHR9OwogICAgICAgIH0KICAgICAgPC9zdHlsZT4KICAgICAgPGRpdiBjbGFzcz0iaW5wdXQtd3JhcHBlciI+CiAgICAgICAgPGRlZXMtbGFiZWwgLmxhYmVsPSR7dGhpcy5sYWJlbH0gLmluZm9UZXh0PSR7dGhpcy5pbmZvVGV4dH0gLnJlcXVpcmVkPSR7dGhpcy5yZXF1aXJlZH0+PC9kZWVzLWxhYmVsPgogICAgICAgIDxkZWVzLXRpbGU+CiAgICAgICAgICA8ZGl2IHNsb3Q9ImhlYWRlciIgY2xhc3M9InRvb2xiYXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b29sYmFyLWxlZnQiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imxhbmd1YWdlLXNlbGVjdG9yIj4KICAgICAgICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgICAgICAgY2xhc3M9Imxhbmd1YWdlLWJ1dHRvbiIKICAgICAgICAgICAgICAgICAgQGNsaWNrPSR7dGhpcy50b2dnbGVMYW5ndWFnZURyb3Bkb3dufQogICAgICAgICAgICAgICAgICBAYmx1cj0ke3RoaXMuaGFuZGxlTGFuZ3VhZ2VCbHVyfQogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAke1YubGFiZWx9CiAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHsibHVjaWRlOkNoZXZyb25Eb3duIn0gaWNvblNpemU9IjE0Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgJHt0aGlzLmlzTGFuZ3VhZ2VEcm9wZG93bk9wZW4/d2AKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ3VhZ2UtZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICR7VWcubWFwKFc9PndgCiAgICAgICAgICAgICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJsYW5ndWFnZS1vcHRpb24gJHtXLmtleT09PXRoaXMubGFuZ3VhZ2U/InNlbGVjdGVkIjoiIn0iCiAgICAgICAgICAgICAgICAgICAgICAgIEBtb3VzZWRvd249JHttZT0+dGhpcy5zZWxlY3RMYW5ndWFnZShtZSxXLmtleSl9CiAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICR7Vy5sYWJlbH0KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIGApfQogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b29sYmFyLXJpZ2h0Ij4KICAgICAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgICAgICBjbGFzcz0idG9vbGJhci1idXR0b24gJHt0aGlzLndvcmRXcmFwPT09Im9uIj8iYWN0aXZlIjoiIn0iCiAgICAgICAgICAgICAgICB0aXRsZT0iV29yZCBXcmFwIgogICAgICAgICAgICAgICAgQGNsaWNrPSR7dGhpcy50b2dnbGVXb3JkV3JhcH0KICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7Imx1Y2lkZTpXcmFwVGV4dCJ9IGljb25TaXplPSIxNiI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgPGJ1dHRvbgogICAgICAgICAgICAgICAgY2xhc3M9InRvb2xiYXItYnV0dG9uICR7dGhpcy5zaG93TGluZU51bWJlcnM/ImFjdGl2ZSI6IiJ9IgogICAgICAgICAgICAgICAgdGl0bGU9IkxpbmUgTnVtYmVycyIKICAgICAgICAgICAgICAgIEBjbGljaz0ke3RoaXMudG9nZ2xlTGluZU51bWJlcnN9CiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6SGFzaCJ9IGljb25TaXplPSIxNiI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9vbGJhci1kaXZpZGVyIj48L2Rpdj4KICAgICAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgICAgICBjbGFzcz0idG9vbGJhci1idXR0b24gJHt0aGlzLmNvcHlTdWNjZXNzPyJzdWNjZXNzIjoiIn0iCiAgICAgICAgICAgICAgICB0aXRsZT0iQ29weSBDb2RlIgogICAgICAgICAgICAgICAgQGNsaWNrPSR7dGhpcy5jb3B5Q29kZX0KICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7dGhpcy5jb3B5U3VjY2Vzcz8ibHVjaWRlOkNoZWNrIjoibHVjaWRlOkNvcHkifSBpY29uU2l6ZT0iMTYiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgICAgIGNsYXNzPSJ0b29sYmFyLWJ1dHRvbiIKICAgICAgICAgICAgICAgIHRpdGxlPSJFeHBhbmQiCiAgICAgICAgICAgICAgICBAY2xpY2s9JHt0aGlzLm9wZW5GdWxsc2NyZWVufQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHsibHVjaWRlOk1heGltaXplMiJ9IGljb25TaXplPSIxNiI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJlZGl0b3Itd3JhcHBlciI+CiAgICAgICAgICAgIDxkZWVzLXdvcmtzcGFjZS1tb25hY28KICAgICAgICAgICAgICAuY29udGVudD0ke3RoaXMudmFsdWV9CiAgICAgICAgICAgICAgLmxhbmd1YWdlPSR7dGhpcy5sYW5ndWFnZX0KICAgICAgICAgICAgICAud29yZFdyYXA9JHt0aGlzLndvcmRXcmFwfQogICAgICAgICAgICAgIEBjb250ZW50LWNoYW5nZT0ke3RoaXMuaGFuZGxlQ29udGVudENoYW5nZX0KICAgICAgICAgICAgPjwvZGVlcy13b3Jrc3BhY2UtbW9uYWNvPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IHNsb3Q9ImZvb3RlciIgY2xhc3M9ImVkaXRvci1mb290ZXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItbGVmdCI+CiAgICAgICAgICAgICAgPHNwYW4+TG4gJHt0aGlzLmN1cnNvclBvc2l0aW9uLmxpbmV9LCBDb2wgJHt0aGlzLmN1cnNvclBvc2l0aW9uLmNvbHVtbn08L3NwYW4+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLXNlcGFyYXRvciI+PC9kaXY+CiAgICAgICAgICAgICAgPHNwYW4+JHt0aGlzLmxpbmVDb3VudH0gbGluZSR7dGhpcy5saW5lQ291bnQhPT0xPyJzIjoiIn08L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItcmlnaHQiPgogICAgICAgICAgICAgIDxzcGFuPiR7KFVnLmZpbmQoVz0+Vy5rZXk9PT10aGlzLmxhbmd1YWdlKXx8VWdbMF0pLmxhYmVsfTwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2RlZXMtdGlsZT4KICAgICAgICAke3RoaXMucmVuZGVyRGVzY3JpcHRpb24oKX0KICAgICAgPC9kaXY+CiAgICBgfWFzeW5jIGZpcnN0VXBkYXRlZCgpe2lmKHRoaXMuZWRpdG9yRWxlbWVudD10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoImRlZXMtd29ya3NwYWNlLW1vbmFjbyIpLHRoaXMuZWRpdG9yRWxlbWVudCl7dGhpcy5lZGl0b3JFbGVtZW50LmNvbnRlbnRTdWJqZWN0LnN1YnNjcmliZShVPT57dGhpcy52YWx1ZSE9PVUmJih0aGlzLnZhbHVlPVUsdGhpcy5jaGFuZ2VTdWJqZWN0Lm5leHQodGhpcykpfSk7bGV0IFY9YXdhaXQgdGhpcy5lZGl0b3JFbGVtZW50LmVkaXRvckRlZmVycmVkLnByb21pc2UsVz1WLmdldE1vZGVsKCk7VyYmKHRoaXMubGluZUNvdW50PVcuZ2V0TGluZUNvdW50KCksVy5vbkRpZENoYW5nZUNvbnRlbnQoKCk9Pnt0aGlzLmxpbmVDb3VudD1XLmdldExpbmVDb3VudCgpfSkpLFYub25EaWRDaGFuZ2VDdXJzb3JQb3NpdGlvbihVPT57dGhpcy5jdXJzb3JQb3NpdGlvbj17bGluZTpVLnBvc2l0aW9uLmxpbmVOdW1iZXIsY29sdW1uOlUucG9zaXRpb24uY29sdW1ufX0pO2xldCBtZT1hd2FpdCB0aGlzLmVkaXRvckVsZW1lbnQuZG9tdG9vbHNQcm9taXNlLEI9aShVPT57bGV0IGhlPVU/IiNmZmZmZmYiOiIjMGEwYTBhIjtWLnVwZGF0ZU9wdGlvbnMoe30pLHdpbmRvdy5tb25hY28/LmVkaXRvcj8uZGVmaW5lVGhlbWU/LigiZGVlcy1saWdodCIse2Jhc2U6InZzIixpbmhlcml0OiEwLHJ1bGVzOltdLGNvbG9yczp7ImVkaXRvci5iYWNrZ3JvdW5kIjpoZX19KSx3aW5kb3cubW9uYWNvPy5lZGl0b3I/LmRlZmluZVRoZW1lPy4oImRlZXMtZGFyayIse2Jhc2U6InZzLWRhcmsiLGluaGVyaXQ6ITAscnVsZXM6W10sY29sb3JzOnsiZWRpdG9yLmJhY2tncm91bmQiOmhlfX0pLFYudXBkYXRlT3B0aW9ucyh7dGhlbWU6VT8iZGVlcy1saWdodCI6ImRlZXMtZGFyayJ9KX0sInVwZGF0ZUVkaXRvckJnIik7QihtZS50aGVtZU1hbmFnZXIuZ29CcmlnaHRCb29sZWFuKSxtZS50aGVtZU1hbmFnZXIudGhlbWVPYnNlcnZhYmxlLnN1YnNjcmliZShVPT57QihVKX0pfX10b2dnbGVMYW5ndWFnZURyb3Bkb3duKCl7dGhpcy5pc0xhbmd1YWdlRHJvcGRvd25PcGVuPSF0aGlzLmlzTGFuZ3VhZ2VEcm9wZG93bk9wZW59aGFuZGxlTGFuZ3VhZ2VCbHVyKCl7c2V0VGltZW91dCgoKT0+e3RoaXMuaXNMYW5ndWFnZURyb3Bkb3duT3Blbj0hMX0sMTUwKX1hc3luYyBzZWxlY3RMYW5ndWFnZShWLFcpe2lmKFYucHJldmVudERlZmF1bHQoKSx0aGlzLmxhbmd1YWdlPVcsdGhpcy5pc0xhbmd1YWdlRHJvcGRvd25PcGVuPSExLHRoaXMuZWRpdG9yRWxlbWVudCl7dGhpcy5lZGl0b3JFbGVtZW50Lmxhbmd1YWdlPVc7bGV0IEI9KGF3YWl0IHRoaXMuZWRpdG9yRWxlbWVudC5lZGl0b3JEZWZlcnJlZC5wcm9taXNlKS5nZXRNb2RlbCgpO0ImJndpbmRvdy5tb25hY28uZWRpdG9yLnNldE1vZGVsTGFuZ3VhZ2UoQixXKX19dG9nZ2xlV29yZFdyYXAoKXt0aGlzLndvcmRXcmFwPXRoaXMud29yZFdyYXA9PT0ib24iPyJvZmYiOiJvbiIsdGhpcy51cGRhdGVFZGl0b3JPcHRpb24oIndvcmRXcmFwIix0aGlzLndvcmRXcmFwKX10b2dnbGVMaW5lTnVtYmVycygpe3RoaXMuc2hvd0xpbmVOdW1iZXJzPSF0aGlzLnNob3dMaW5lTnVtYmVycyx0aGlzLnVwZGF0ZUVkaXRvck9wdGlvbigibGluZU51bWJlcnMiLHRoaXMuc2hvd0xpbmVOdW1iZXJzPyJvbiI6Im9mZiIpfWFzeW5jIHVwZGF0ZUVkaXRvck9wdGlvbihWLFcpe3RoaXMuZWRpdG9yRWxlbWVudCYmKGF3YWl0IHRoaXMuZWRpdG9yRWxlbWVudC5lZGl0b3JEZWZlcnJlZC5wcm9taXNlKS51cGRhdGVPcHRpb25zKHtbVl06V30pfWFzeW5jIGNvcHlDb2RlKCl7dHJ5e2F3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRoaXMudmFsdWUpLHRoaXMuY29weVN1Y2Nlc3M9ITAsc2V0VGltZW91dCgoKT0+e3RoaXMuY29weVN1Y2Nlc3M9ITF9LDJlMyl9Y2F0Y2goVil7Y29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGNvcHkgY29kZToiLFYpfX1oYW5kbGVDb250ZW50Q2hhbmdlKFYpe2xldCBXPVYuZGV0YWlsO3RoaXMudmFsdWUhPT1XJiYodGhpcy52YWx1ZT1XLHRoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMpKX1hc3luYyBvcGVuRnVsbHNjcmVlbigpe2xldCBWPXRoaXMudmFsdWUsVz1udWxsLG1lPXRoaXMubGFuZ3VhZ2UsQj10aGlzLndvcmRXcmFwLFU9dGhpcy5zaG93TGluZU51bWJlcnMsaGU9ITEsRj0hMSxqPWkoKCk9PntsZXQgWD1VZy5maW5kKFo9Ploua2V5PT09bWUpO3JldHVybiBYP1gubGFiZWw6IlR5cGVTY3JpcHQifSwiZ2V0TGFuZ3VhZ2VMYWJlbCIpLHVlPWkoWD0+e2xldCBaPVguc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLm1vZGFsLXRvb2xiYXIiKTtpZighWilyZXR1cm47bGV0IHllPVoucXVlcnlTZWxlY3RvcigiLmxhbmd1YWdlLWJ1dHRvbiBzcGFuIik7eWUmJih5ZS50ZXh0Q29udGVudD1qKCkpO2xldCBxPVoucXVlcnlTZWxlY3RvcigiLndyYXAtYnRuIik7cSYmcS5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiLEI9PT0ib24iKTtsZXQgQT1aLnF1ZXJ5U2VsZWN0b3IoIi5saW5lcy1idG4iKTtBJiZBLmNsYXNzTGlzdC50b2dnbGUoImFjdGl2ZSIsVSk7bGV0IHNlPVoucXVlcnlTZWxlY3RvcigiLmNvcHktYnRuIiksb2U9c2U/LnF1ZXJ5U2VsZWN0b3IoImRlZXMtaWNvbiIpO3NlJiZvZSYmKHNlLmNsYXNzTGlzdC50b2dnbGUoInN1Y2Nlc3MiLEYpLG9lLmljb249Rj8ibHVjaWRlOkNoZWNrIjoibHVjaWRlOkNvcHkiKTtsZXQgYWU9Wi5xdWVyeVNlbGVjdG9yKCIubGFuZ3VhZ2UtZHJvcGRvd24iKTthZSYmKGFlLnN0eWxlLmRpc3BsYXk9aGU/ImJsb2NrIjoibm9uZSIpfSwidXBkYXRlVG9vbGJhclVJIiksbGU9aShYPT57bGV0IFo9WC5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIubW9kYWwtZm9vdGVyIik7aWYoIVopcmV0dXJuO2xldCB5ZT1aLnF1ZXJ5U2VsZWN0b3IoIi5mb290ZXItY3Vyc29yIikscT1aLnF1ZXJ5U2VsZWN0b3IoIi5mb290ZXItbGluZXMiKSxBPVoucXVlcnlTZWxlY3RvcigiLmZvb3Rlci1sYW5nIik7eWUmJih5ZS50ZXh0Q29udGVudD1gTG4gJHtRfSwgQ29sICR7aWV9YCkscSYmKHEudGV4dENvbnRlbnQ9YCR7dGV9IGxpbmUke3RlIT09MT8icyI6IiJ9YCksQSYmKEEudGV4dENvbnRlbnQ9aigpKX0sInVwZGF0ZUZvb3RlclVJIiksUT0xLGllPTEsdGU9Vi5zcGxpdChgCmApLmxlbmd0aCxlZT1hd2FpdCBpcy5jcmVhdGVBbmRTaG93KHtoZWFkaW5nOnRoaXMubGFiZWx8fCJDb2RlIEVkaXRvciIsd2lkdGg6ImZ1bGxzY3JlZW4iLGNvbnRlbnRQYWRkaW5nOjAsY29udGVudDp3YAogICAgICAgIDxzdHlsZT4KICAgICAgICAgIC5tb2RhbC10b29sYmFyIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgICAgICBwYWRkaW5nOiA0cHggMTJweDsKICAgICAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgICB9CiAgICAgICAgICAubW9kYWwtdG9vbGJhciAudG9vbGJhci1sZWZ0IHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgICB9CiAgICAgICAgICAubW9kYWwtdG9vbGJhciAudG9vbGJhci1yaWdodCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogNHB4OwogICAgICAgICAgfQogICAgICAgICAgLm1vZGFsLXRvb2xiYXIgLmxhbmd1YWdlLXNlbGVjdG9yIHsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgfQogICAgICAgICAgLm1vZGFsLXRvb2xiYXIgLmxhbmd1YWdlLWJ1dHRvbiB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogNnB4OwogICAgICAgICAgICBwYWRkaW5nOiA0cHggMTBweDsKICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTAwJSkiLCJoc2woMCAwJSAxMiUpIil9OwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDAgMCUgODkuOCUpIiwiaHNsKDAgMCUgMjAlKSIpfTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMjAlKSIsImhzbCgwIDAlIDkwJSkiKX07CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgICAgfQogICAgICAgICAgLm1vZGFsLXRvb2xiYXIgLmxhbmd1YWdlLWJ1dHRvbjpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5NSUpIiwiaHNsKDAgMCUgMTUlKSIpfTsKICAgICAgICAgIH0KICAgICAgICAgIC5tb2RhbC10b29sYmFyIC5sYW5ndWFnZS1kcm9wZG93biB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiAxMDAlOwogICAgICAgICAgICBsZWZ0OiAwOwogICAgICAgICAgICBtYXJnaW4tdG9wOiA0cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxMDAlKSIsImhzbCgwIDAlIDklKSIpfTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgwIDAlIDg5LjglKSIsImhzbCgwIDAlIDIwJSkiKX07CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpOwogICAgICAgICAgICB6LWluZGV4OiAxMDA7CiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDI1MHB4OwogICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgICAgICBtaW4td2lkdGg6IDE0MHB4OwogICAgICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICAgICAgfQogICAgICAgICAgLm1vZGFsLXRvb2xiYXIgLmxhbmd1YWdlLW9wdGlvbiB7CiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAyMCUpIiwiaHNsKDAgMCUgOTAlKSIpfTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cyBlYXNlOwogICAgICAgICAgfQogICAgICAgICAgLm1vZGFsLXRvb2xiYXIgLmxhbmd1YWdlLW9wdGlvbjpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5NSUpIiwiaHNsKDAgMCUgMTUlKSIpfTsKICAgICAgICAgIH0KICAgICAgICAgIC5tb2RhbC10b29sYmFyIC5sYW5ndWFnZS1vcHRpb24uc2VsZWN0ZWQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTAlKSIsImhzbCgwIDAlIDIwJSkiKX07CiAgICAgICAgICB9CiAgICAgICAgICAubW9kYWwtdG9vbGJhciAudG9vbGJhci1idXR0b24gewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgICAgIGhlaWdodDogMzJweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNDUlKSIsImhzbCgwIDAlIDYwJSkiKX07CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgICAgfQogICAgICAgICAgLm1vZGFsLXRvb2xiYXIgLnRvb2xiYXItYnV0dG9uOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDkwJSkiLCJoc2woMCAwJSAxNSUpIil9OwogICAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDIwJSkiLCJoc2woMCAwJSA5MCUpIil9OwogICAgICAgICAgfQogICAgICAgICAgLm1vZGFsLXRvb2xiYXIgLnRvb2xiYXItYnV0dG9uLmFjdGl2ZSB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4NSUpIiwiaHNsKDAgMCUgMjAlKSIpfTsKICAgICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAyMCUpIiwiaHNsKDAgMCUgOTAlKSIpfTsKICAgICAgICAgIH0KICAgICAgICAgIC5tb2RhbC10b29sYmFyIC50b29sYmFyLWJ1dHRvbi5zdWNjZXNzIHsKICAgICAgICAgICAgY29sb3I6IGhzbCgxNDIuMSA3Ni4yJSAzNi4zJSk7CiAgICAgICAgICB9CiAgICAgICAgICAubW9kYWwtdG9vbGJhciAudG9vbGJhci1kaXZpZGVyIHsKICAgICAgICAgICAgd2lkdGg6IDFweDsKICAgICAgICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgODUlKSIsImhzbCgwIDAlIDIwJSkiKX07CiAgICAgICAgICAgIG1hcmdpbjogMCA0cHg7CiAgICAgICAgICB9CiAgICAgICAgICAubW9kYWwtZWRpdG9yLXdyYXBwZXIgewogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIGhlaWdodDogY2FsYygxMDB2aCAtIDIwMHB4KTsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICB9CiAgICAgICAgICAubW9kYWwtZm9vdGVyIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgICAgICBwYWRkaW5nOiAwIDEycHg7CiAgICAgICAgICAgIGhlaWdodDogMjhweDsKICAgICAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDQ1JSkiLCJoc2woMCAwJSA1NSUpIil9OwogICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgwIDAlIDg5LjglKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgICAgIH0KICAgICAgICAgIC5tb2RhbC1mb290ZXIgLmZvb3Rlci1sZWZ0LAogICAgICAgICAgLm1vZGFsLWZvb3RlciAuZm9vdGVyLXJpZ2h0IHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgICAgfQogICAgICAgICAgLm1vZGFsLWZvb3RlciAuZm9vdGVyLXNlcGFyYXRvciB7CiAgICAgICAgICAgIHdpZHRoOiAxcHg7CiAgICAgICAgICAgIGhlaWdodDogMTJweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDg1JSkiLCJoc2woMCAwJSAyMCUpIil9OwogICAgICAgICAgfQogICAgICAgIDwvc3R5bGU+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtdG9vbGJhciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b29sYmFyLWxlZnQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5ndWFnZS1zZWxlY3RvciI+CiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibGFuZ3VhZ2UtYnV0dG9uIj4KICAgICAgICAgICAgICAgIDxzcGFuPiR7aigpfTwvc3Bhbj4KICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHsibHVjaWRlOkNoZXZyb25Eb3duIn0gaWNvblNpemU9IjE0Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5ndWFnZS1kcm9wZG93biI+CiAgICAgICAgICAgICAgICAke1VnLm1hcChYPT53YAogICAgICAgICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgICAgY2xhc3M9Imxhbmd1YWdlLW9wdGlvbiAke1gua2V5PT09bWU/InNlbGVjdGVkIjoiIn0iCiAgICAgICAgICAgICAgICAgICAgZGF0YS1sYW5nPSIke1gua2V5fSIKICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICR7WC5sYWJlbH0KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICBgKX0KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRvb2xiYXItcmlnaHQiPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJ0b29sYmFyLWJ1dHRvbiB3cmFwLWJ0biAke0I9PT0ib24iPyJhY3RpdmUiOiIifSIgdGl0bGU9IldvcmQgV3JhcCI+CiAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6V3JhcFRleHQifSBpY29uU2l6ZT0iMTYiPjwvZGVlcy1pY29uPgogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idG9vbGJhci1idXR0b24gbGluZXMtYnRuICR7VT8iYWN0aXZlIjoiIn0iIHRpdGxlPSJMaW5lIE51bWJlcnMiPgogICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHsibHVjaWRlOkhhc2gifSBpY29uU2l6ZT0iMTYiPjwvZGVlcy1pY29uPgogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9vbGJhci1kaXZpZGVyIj48L2Rpdj4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idG9vbGJhci1idXR0b24gY29weS1idG4iIHRpdGxlPSJDb3B5IENvZGUiPgogICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHsibHVjaWRlOkNvcHkifSBpY29uU2l6ZT0iMTYiPjwvZGVlcy1pY29uPgogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWVkaXRvci13cmFwcGVyIj4KICAgICAgICAgIDxkZWVzLXdvcmtzcGFjZS1tb25hY28KICAgICAgICAgICAgLmNvbnRlbnQ9JHtWfQogICAgICAgICAgICAubGFuZ3VhZ2U9JHttZX0KICAgICAgICAgICAgLndvcmRXcmFwPSR7Qn0KICAgICAgICAgID48L2RlZXMtd29ya3NwYWNlLW1vbmFjbz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLWxlZnQiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iZm9vdGVyLWN1cnNvciI+TG4gJHtRfSwgQ29sICR7aWV9PC9zcGFuPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItc2VwYXJhdG9yIj48L2Rpdj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZvb3Rlci1saW5lcyI+JHt0ZX0gbGluZSR7dGUhPT0xPyJzIjoiIn08L3NwYW4+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlci1yaWdodCI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmb290ZXItbGFuZyI+JHtqKCl9PC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIGAsbWVudU9wdGlvbnM6W3tuYW1lOiJDYW5jZWwiLGFjdGlvbjppKGFzeW5jIFg9Pnthd2FpdCBYLmRlc3Ryb3koKX0sImFjdGlvbiIpfSx7bmFtZToiU2F2ZSAmIENsb3NlIixhY3Rpb246aShhc3luYyBYPT57aWYoVz1YLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoImRlZXMtd29ya3NwYWNlLW1vbmFjbyIpLFcpe2xldCB5ZT0oYXdhaXQgVy5lZGl0b3JEZWZlcnJlZC5wcm9taXNlKS5nZXRWYWx1ZSgpO3RoaXMuc2V0VmFsdWUoeWUpfWF3YWl0IFguZGVzdHJveSgpfSwiYWN0aW9uIil9XX0pO2lmKGF3YWl0IG5ldyBQcm9taXNlKFg9PnNldFRpbWVvdXQoWCwxMDApKSxXPWVlLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoImRlZXMtd29ya3NwYWNlLW1vbmFjbyIpLFcpe2xldCBYPWF3YWl0IFcuZWRpdG9yRGVmZXJyZWQucHJvbWlzZSxaPWF3YWl0IFcuZG9tdG9vbHNQcm9taXNlLHllPWkoQT0+e2xldCBzZT1BPyIjZmZmZmZmIjoiIzBhMGEwYSI7d2luZG93Lm1vbmFjbz8uZWRpdG9yPy5kZWZpbmVUaGVtZT8uKCJkZWVzLWxpZ2h0Iix7YmFzZToidnMiLGluaGVyaXQ6ITAscnVsZXM6W10sY29sb3JzOnsiZWRpdG9yLmJhY2tncm91bmQiOnNlfX0pLHdpbmRvdy5tb25hY28/LmVkaXRvcj8uZGVmaW5lVGhlbWU/LigiZGVlcy1kYXJrIix7YmFzZToidnMtZGFyayIsaW5oZXJpdDohMCxydWxlczpbXSxjb2xvcnM6eyJlZGl0b3IuYmFja2dyb3VuZCI6c2V9fSksWC51cGRhdGVPcHRpb25zKHt0aGVtZTpBPyJkZWVzLWxpZ2h0IjoiZGVlcy1kYXJrIn0pfSwiYXBwbHlNb2RhbFRoZW1lIik7eWUoWi50aGVtZU1hbmFnZXIuZ29CcmlnaHRCb29sZWFuKSxaLnRoZW1lTWFuYWdlci50aGVtZU9ic2VydmFibGUuc3Vic2NyaWJlKEE9Pnt5ZShBKX0pLFgub25EaWRDaGFuZ2VDdXJzb3JQb3NpdGlvbihBPT57UT1BLnBvc2l0aW9uLmxpbmVOdW1iZXIsaWU9QS5wb3NpdGlvbi5jb2x1bW4sbGUoZWUpfSk7bGV0IHE9WC5nZXRNb2RlbCgpO3EmJih0ZT1xLmdldExpbmVDb3VudCgpLGxlKGVlKSxxLm9uRGlkQ2hhbmdlQ29udGVudCgoKT0+e3RlPXEuZ2V0TGluZUNvdW50KCksbGUoZWUpfSkpfWxldCBrZT1lZS5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIubW9kYWwtdG9vbGJhciIpO2lmKGtlKXtsZXQgWD1rZS5xdWVyeVNlbGVjdG9yKCIubGFuZ3VhZ2UtYnV0dG9uIik7WD8uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57aGU9IWhlLHVlKGVlKX0pO2xldCBaPWtlLnF1ZXJ5U2VsZWN0b3JBbGwoIi5sYW5ndWFnZS1vcHRpb24iKTtaLmZvckVhY2goc2U9PntzZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsYXN5bmMoKT0+e2xldCBvZT1zZS5kYXRhc2V0Lmxhbmc7aWYob2UmJlcpe21lPW9lLGhlPSExO2xldCBUZT0oYXdhaXQgVy5lZGl0b3JEZWZlcnJlZC5wcm9taXNlKS5nZXRNb2RlbCgpO1RlJiZ3aW5kb3cubW9uYWNvLmVkaXRvci5zZXRNb2RlbExhbmd1YWdlKFRlLG9lKSxaLmZvckVhY2goUmU9PlJlLmNsYXNzTGlzdC5yZW1vdmUoInNlbGVjdGVkIikpLHNlLmNsYXNzTGlzdC5hZGQoInNlbGVjdGVkIiksdWUoZWUpLGxlKGVlKX19KX0pLGtlLnF1ZXJ5U2VsZWN0b3IoIi53cmFwLWJ0biIpPy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsYXN5bmMoKT0+e0I9Qj09PSJvbiI/Im9mZiI6Im9uIixXJiYoYXdhaXQgVy5lZGl0b3JEZWZlcnJlZC5wcm9taXNlKS51cGRhdGVPcHRpb25zKHt3b3JkV3JhcDpCfSksdWUoZWUpfSksa2UucXVlcnlTZWxlY3RvcigiLmxpbmVzLWJ0biIpPy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsYXN5bmMoKT0+e1U9IVUsVyYmKGF3YWl0IFcuZWRpdG9yRGVmZXJyZWQucHJvbWlzZSkudXBkYXRlT3B0aW9ucyh7bGluZU51bWJlcnM6VT8ib24iOiJvZmYifSksdWUoZWUpfSksa2UucXVlcnlTZWxlY3RvcigiLmNvcHktYnRuIik/LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixhc3luYygpPT57aWYoVyl7bGV0IG9lPShhd2FpdCBXLmVkaXRvckRlZmVycmVkLnByb21pc2UpLmdldFZhbHVlKCk7dHJ5e2F3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KG9lKSxGPSEwLHVlKGVlKSxzZXRUaW1lb3V0KCgpPT57Rj0hMSx1ZShlZSl9LDJlMyl9Y2F0Y2goYWUpe2NvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBjb3B5IGNvZGU6IixhZSl9fX0pLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixzZT0+e2hlJiYhWD8uY29udGFpbnMoc2UudGFyZ2V0KSYmKGhlPSExLHVlKGVlKSl9LHtvbmNlOiEwfSl9fWdldFZhbHVlKCl7cmV0dXJuIHRoaXMudmFsdWV9c2V0VmFsdWUoVil7dGhpcy52YWx1ZT1WLHRoaXMuZWRpdG9yRWxlbWVudCYmKHRoaXMuZWRpdG9yRWxlbWVudC5jb250ZW50PVYsdGhpcy5lZGl0b3JFbGVtZW50LmVkaXRvckRlZmVycmVkLnByb21pc2UudGhlbihXPT57Vy5nZXRWYWx1ZSgpIT09ViYmVy5zZXRWYWx1ZShWKX0pKSx0aGlzLmNoYW5nZVN1YmplY3QubmV4dCh0aGlzKX1zdGF0aWN7SnIoYSx0KX19O3JldHVybiBLPWF9KSgpfSk7dmFyIHViYSxwYmE9ZygoKT0+e3BlKCk7SXQoKTt4bygpO3FvdCgpO3ViYT1pKCgpPT53YAogIDxzdHlsZT4KICAgICR7SmAKICAgICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHg7CiAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgIH0KICAgICAgCiAgICAgIGRlZXMtcGFuZWwgewogICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgIH0KICAgICAgCiAgICAgIGRlZXMtcGFuZWw6bGFzdC1jaGlsZCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgfQogICAgICAKICAgICAgLmRlbW8tb3V0cHV0IHsKICAgICAgICBtYXJnaW4tdG9wOiAxNnB4OwogICAgICAgIHBhZGRpbmc6IDEycHg7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAxMDUsIDI0MiwgMC4xKTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgICAgIH0KICAgICAgCiAgICAgIC5kYXRlLWdyb3VwIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGdhcDogMTZweDsKICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgIH0KICAgIGB9CiAgPC9zdHlsZT4KICAKICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57bGV0IGU9cy5xdWVyeVNlbGVjdG9yKCJkZWVzLWlucHV0LWRhdGVwaWNrZXIiKTtlJiZlLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsKHQ9Pntjb25zb2xlLmxvZygiQmFzaWMgZGF0ZSBzZWxlY3RlZDoiLHQudGFyZ2V0LnZhbHVlKX0pKX19PgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiQmFzaWMgRGF0ZSBQaWNrZXIifSAuc3VidGl0bGU9JHsiU2ltcGxlIGRhdGUgc2VsZWN0aW9uIHdpdGhvdXQgdGltZSJ9PgogICAgICAgIDxkZWVzLWlucHV0LWRhdGVwaWNrZXIKICAgICAgICAgIGxhYmVsPSJTZWxlY3QgRGF0ZSIKICAgICAgICAgIGRlc2NyaXB0aW9uPSJDaG9vc2UgYSBkYXRlIGZyb20gdGhlIGNhbGVuZGFyIgogICAgICAgID48L2RlZXMtaW5wdXQtZGF0ZXBpY2tlcj4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgoKICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntsZXQgZT1zLnF1ZXJ5U2VsZWN0b3IoJ2RlZXMtaW5wdXQtZGF0ZXBpY2tlcltsYWJlbD0iRXZlbnQgRGF0ZSAmIFRpbWUiXScpLHQ9cy5xdWVyeVNlbGVjdG9yKCdkZWVzLWlucHV0LWRhdGVwaWNrZXJbbGFiZWw9IkFwcG9pbnRtZW50Il0nKTtlJiZlLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsKGE9PntsZXQgcj1hLnRhcmdldC52YWx1ZTtjb25zb2xlLmxvZygiMjRoIGZvcm1hdCBkYXRldGltZToiLHIpfSkpLHQmJnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwoYT0+e2xldCByPWEudGFyZ2V0LnZhbHVlO2NvbnNvbGUubG9nKCIxMmggZm9ybWF0IGRhdGV0aW1lOiIscil9KSl9fT4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IkRhdGUgYW5kIFRpbWUgU2VsZWN0aW9uIn0gLnN1YnRpdGxlPSR7IkRhdGUgcGlja2VycyB3aXRoIHRpbWUgc2VsZWN0aW9uIGluIGRpZmZlcmVudCBmb3JtYXRzIn0+CiAgICAgICAgPGRlZXMtaW5wdXQtZGF0ZXBpY2tlcgogICAgICAgICAgbGFiZWw9IkV2ZW50IERhdGUgJiBUaW1lIgogICAgICAgICAgZGVzY3JpcHRpb249IlNlbGVjdCBib3RoIGRhdGUgYW5kIHRpbWUgKDI0LWhvdXIgZm9ybWF0KSIKICAgICAgICAgIC5lbmFibGVUaW1lPSR7ITB9CiAgICAgICAgICB0aW1lRm9ybWF0PSIyNGgiCiAgICAgICAgPjwvZGVlcy1pbnB1dC1kYXRlcGlja2VyPgogICAgICAgIAogICAgICAgIDxkZWVzLWlucHV0LWRhdGVwaWNrZXIKICAgICAgICAgIGxhYmVsPSJBcHBvaW50bWVudCIKICAgICAgICAgIGRlc2NyaXB0aW9uPSJEYXRlIGFuZCB0aW1lIHdpdGggQU0vUE0gc2VsZWN0b3IgKDE1LW1pbnV0ZSBpbmNyZW1lbnRzKSIKICAgICAgICAgIC5lbmFibGVUaW1lPSR7ITB9CiAgICAgICAgICB0aW1lRm9ybWF0PSIxMmgiCiAgICAgICAgICAubWludXRlSW5jcmVtZW50PSR7MTV9CiAgICAgICAgPjwvZGVlcy1pbnB1dC1kYXRlcGlja2VyPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CgogICAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e3MucXVlcnlTZWxlY3RvckFsbCgiZGVlcy1pbnB1dC1kYXRlcGlja2VyIikuZm9yRWFjaCh0PT57dC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLChhPT57bGV0IHI9YS50YXJnZXQ7Y29uc29sZS5sb2coYCR7ci5sYWJlbH0gdmFsdWU6YCxyLnZhbHVlKTtsZXQgbj1yLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5kYXRlLWlucHV0Iik7biYmY29uc29sZS5sb2coYCR7ci5sYWJlbH0gZm9ybWF0dGVkOmAsbi52YWx1ZSl9KSl9KX19PgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiVGltZXpvbmUgU3VwcG9ydCJ9IC5zdWJ0aXRsZT0keyJEYXRlIGFuZCB0aW1lIHNlbGVjdGlvbiB3aXRoIHRpbWV6b25lIGF3YXJlbmVzcyJ9PgogICAgICAgIDxkZWVzLWlucHV0LWRhdGVwaWNrZXIKICAgICAgICAgIGxhYmVsPSJNZWV0aW5nIFRpbWUgKHdpdGggVGltZXpvbmUpIgogICAgICAgICAgZGVzY3JpcHRpb249IlNlbGVjdCBhIGRhdGUvdGltZSBhbmQgdGltZXpvbmUgZm9yIHRoZSBtZWV0aW5nIgogICAgICAgICAgLmVuYWJsZVRpbWU9JHshMH0KICAgICAgICAgIC5lbmFibGVUaW1lem9uZT0keyEwfQogICAgICAgICAgdGltZUZvcm1hdD0iMjRoIgogICAgICAgICAgdGltZXpvbmU9IkFtZXJpY2EvTmV3X1lvcmsiCiAgICAgICAgPjwvZGVlcy1pbnB1dC1kYXRlcGlja2VyPgogICAgICAgIAogICAgICAgIDxkZWVzLWlucHV0LWRhdGVwaWNrZXIKICAgICAgICAgIGxhYmVsPSJHbG9iYWwgRXZlbnQgU2NoZWR1bGUiCiAgICAgICAgICBkZXNjcmlwdGlvbj0iU2NoZWR1bGUgYW4gZXZlbnQgYWNyb3NzIGRpZmZlcmVudCB0aW1lem9uZXMiCiAgICAgICAgICAuZW5hYmxlVGltZT0keyEwfQogICAgICAgICAgLmVuYWJsZVRpbWV6b25lPSR7ITB9CiAgICAgICAgICB0aW1lRm9ybWF0PSIxMmgiCiAgICAgICAgICB0aW1lem9uZT0iRXVyb3BlL0xvbmRvbiIKICAgICAgICAgIC5taW51dGVJbmNyZW1lbnQ9JHszMH0KICAgICAgICA+PC9kZWVzLWlucHV0LWRhdGVwaWNrZXI+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57bGV0IGU9cy5xdWVyeVNlbGVjdG9yKCJkZWVzLWlucHV0LWRhdGVwaWNrZXIiKTtlJiZlLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsKHQ9PntsZXQgYT10LnRhcmdldC52YWx1ZTtpZihhKXtsZXQgcj1uZXcgRGF0ZShhKSxuPW5ldyBEYXRlLG89TWF0aC5mbG9vcigoci5nZXRUaW1lKCktbi5nZXRUaW1lKCkpLygxZTMqNjAqNjAqMjQpKTtjb25zb2xlLmxvZyhgU2VsZWN0ZWQgZGF0ZSBpcyAke299IGRheXMgZnJvbSB0b2RheWApfX0pKX19PgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiRGF0ZSBSYW5nZSBDb25zdHJhaW50cyJ9IC5zdWJ0aXRsZT0keyJMaW1pdCBzZWxlY3RhYmxlIGRhdGVzIHdpdGggbWluIGFuZCBtYXggdmFsdWVzIn0+CiAgICAgICAgPGRlZXMtaW5wdXQtZGF0ZXBpY2tlcgogICAgICAgICAgbGFiZWw9IkZ1dHVyZSBEYXRlIE9ubHkiCiAgICAgICAgICBkZXNjcmlwdGlvbj0iQ2FuIG9ubHkgc2VsZWN0IGRhdGVzIGZyb20gdG9kYXkgdG8gOTAgZGF5cyBpbiB0aGUgZnV0dXJlIgogICAgICAgICAgLm1pbkRhdGU9JHtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCl9CiAgICAgICAgICAubWF4RGF0ZT0ke25ldyBEYXRlKERhdGUubm93KCkrMjE2MCo2MCo2MCoxZTMpLnRvSVNPU3RyaW5nKCl9CiAgICAgICAgPjwvZGVlcy1pbnB1dC1kYXRlcGlja2VyPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CgogICAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e2xldCBlPXsiREQvTU0vWVlZWSI6IkV1cm9wZWFuIiwiTU0vREQvWVlZWSI6IlVTIiwiWVlZWS1NTS1ERCI6IklTTyJ9O3MucXVlcnlTZWxlY3RvckFsbCgiZGVlcy1pbnB1dC1kYXRlcGlja2VyIikuZm9yRWFjaChhPT57YS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLChyPT57bGV0IG49ci50YXJnZXQsbz1uLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5kYXRlLWlucHV0Iik7byYmY29uc29sZS5sb2coYCR7bi5sYWJlbH0gZm9ybWF0OmAsby52YWx1ZSl9KSl9KX19PgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiRGF0ZSBGb3JtYXRzIn0gLnN1YnRpdGxlPSR7IkRpZmZlcmVudCBkYXRlIGRpc3BsYXkgZm9ybWF0cyBmb3IgdmFyaW91cyByZWdpb25zIn0+CiAgICAgICAgPGRpdiBjbGFzcz0iZGF0ZS1ncm91cCI+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1kYXRlcGlja2VyCiAgICAgICAgICAgIGxhYmVsPSJFdXJvcGVhbiBGb3JtYXQiCiAgICAgICAgICAgIGRhdGVGb3JtYXQ9IkREL01NL1lZWVkiCiAgICAgICAgICAgIC52YWx1ZT0ke25ldyBEYXRlKCkudG9JU09TdHJpbmcoKX0KICAgICAgICAgID48L2RlZXMtaW5wdXQtZGF0ZXBpY2tlcj4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtaW5wdXQtZGF0ZXBpY2tlcgogICAgICAgICAgICBsYWJlbD0iVVMgRm9ybWF0IgogICAgICAgICAgICBkYXRlRm9ybWF0PSJNTS9ERC9ZWVlZIgogICAgICAgICAgICAudmFsdWU9JHtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCl9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LWRhdGVwaWNrZXI+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWlucHV0LWRhdGVwaWNrZXIKICAgICAgICAgICAgbGFiZWw9IklTTyBGb3JtYXQiCiAgICAgICAgICAgIGRhdGVGb3JtYXQ9IllZWVktTU0tREQiCiAgICAgICAgICAgIC52YWx1ZT0ke25ldyBEYXRlKCkudG9JU09TdHJpbmcoKX0KICAgICAgICAgID48L2RlZXMtaW5wdXQtZGF0ZXBpY2tlcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgoKICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntsZXQgZT1zLnF1ZXJ5U2VsZWN0b3IoImRlZXMtaW5wdXQtZGF0ZXBpY2tlcltyZXF1aXJlZF0iKTtlJiZlLmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCgpPT57ZS5nZXRWYWx1ZSgpfHxjb25zb2xlLmxvZygiUmVxdWlyZWQgZGF0ZSBmaWVsZCBpcyBlbXB0eSIpfSl9fT4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IkZvcm0gU3RhdGVzIn0gLnN1YnRpdGxlPSR7IlJlcXVpcmVkIGFuZCBkaXNhYmxlZCBzdGF0ZXMifT4KICAgICAgICA8ZGVlcy1pbnB1dC1kYXRlcGlja2VyCiAgICAgICAgICBsYWJlbD0iQmlydGggRGF0ZSIKICAgICAgICAgIGRlc2NyaXB0aW9uPSJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkIgogICAgICAgICAgLnJlcXVpcmVkPSR7ITB9CiAgICAgICAgICBwbGFjZWhvbGRlcj0iU2VsZWN0IHlvdXIgYmlydGggZGF0ZSIKICAgICAgICA+PC9kZWVzLWlucHV0LWRhdGVwaWNrZXI+CiAgICAgICAgCiAgICAgICAgPGRlZXMtaW5wdXQtZGF0ZXBpY2tlcgogICAgICAgICAgbGFiZWw9IkRpc2FibGVkIERhdGUiCiAgICAgICAgICBkZXNjcmlwdGlvbj0iVGhpcyBmaWVsZCBjYW5ub3QgYmUgZWRpdGVkIgogICAgICAgICAgLmRpc2FibGVkPSR7ITB9CiAgICAgICAgICAudmFsdWU9JHtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCl9CiAgICAgICAgPjwvZGVlcy1pbnB1dC1kYXRlcGlja2VyPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CgogICAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e2xldCBlPXMucXVlcnlTZWxlY3RvcignZGVlcy1pbnB1dC1kYXRlcGlja2VyW2xhYmVsPSJVUyBDYWxlbmRhciJdJyksdD1zLnF1ZXJ5U2VsZWN0b3IoJ2RlZXMtaW5wdXQtZGF0ZXBpY2tlcltsYWJlbD0iRVUgQ2FsZW5kYXIiXScpO2UmJmNvbnNvbGUubG9nKCJVUyBDYWxlbmRhciBzdGFydHMgb24gU3VuZGF5ICgwKSIpLHQmJmNvbnNvbGUubG9nKCJFVSBDYWxlbmRhciBzdGFydHMgb24gTW9uZGF5ICgxKSIpfX0+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJDYWxlbmRhciBDdXN0b21pemF0aW9uIn0gLnN1YnRpdGxlPSR7IkRpZmZlcmVudCB3ZWVrIHN0YXJ0IGRheXMgZm9yIHZhcmlvdXMgcmVnaW9ucyJ9PgogICAgICAgIDxkaXYgY2xhc3M9ImRhdGUtZ3JvdXAiPgogICAgICAgICAgPGRlZXMtaW5wdXQtZGF0ZXBpY2tlcgogICAgICAgICAgICBsYWJlbD0iVVMgQ2FsZW5kYXIiCiAgICAgICAgICAgIGRlc2NyaXB0aW9uPSJXZWVrIHN0YXJ0cyBvbiBTdW5kYXkiCiAgICAgICAgICAgIC53ZWVrU3RhcnRzT249JHswfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1kYXRlcGlja2VyPgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1pbnB1dC1kYXRlcGlja2VyCiAgICAgICAgICAgIGxhYmVsPSJFVSBDYWxlbmRhciIKICAgICAgICAgICAgZGVzY3JpcHRpb249IldlZWsgc3RhcnRzIG9uIE1vbmRheSIKICAgICAgICAgICAgLndlZWtTdGFydHNPbj0kezF9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LWRhdGVwaWNrZXI+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57bGV0IGU9aSgoKT0+e2xldCBhPVtdLHI9bmV3IERhdGUsbj1yLmdldEZ1bGxZZWFyKCksbz1yLmdldE1vbnRoKCksbD1uZXcgRGF0ZShuLG8sMSk7Zm9yKDtsLmdldE1vbnRoKCk9PT1vOykobC5nZXREYXkoKT09PTB8fGwuZ2V0RGF5KCk9PT02KSYmYS5wdXNoKG5ldyBEYXRlKGwpLnRvSVNPU3RyaW5nKCkpLGwuc2V0RGF0ZShsLmdldERhdGUoKSsxKTtyZXR1cm4gYX0sImdlbmVyYXRlV2Vla2VuZHMiKSx0PXMucXVlcnlTZWxlY3RvcigiZGVlcy1pbnB1dC1kYXRlcGlja2VyIik7dCYmKHQuZGlzYWJsZWREYXRlcz1lKCksY29uc29sZS5sb2coIkRpc2FibGVkIHdlZWtlbmQgZGF0ZXMgZm9yIGN1cnJlbnQgbW9udGgiKSl9fT4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IkRpc2FibGVkIERhdGVzIn0gLnN1YnRpdGxlPSR7IkNhbGVuZGFyIHdpdGggc3BlY2lmaWMgZGF0ZXMgZGlzYWJsZWQgKHdlZWtlbmRzIGluIGN1cnJlbnQgbW9udGgpIn0+CiAgICAgICAgPGRlZXMtaW5wdXQtZGF0ZXBpY2tlcgogICAgICAgICAgbGFiZWw9IkF2YWlsYWJpbGl0eSBDYWxlbmRhciIKICAgICAgICAgIGRlc2NyaXB0aW9uPSJXZWVrZW5kcyBhcmUgZGlzYWJsZWQgZm9yIHRoZSBjdXJyZW50IG1vbnRoIgogICAgICAgID48L2RlZXMtaW5wdXQtZGF0ZXBpY2tlcj4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgoKICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntsZXQgZT1uZXcgRGF0ZSx0PWUuZ2V0TW9udGgoKSxhPWUuZ2V0RnVsbFllYXIoKSxyPVt7ZGF0ZTpgJHthfS0keyh0KzEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfS0ke2UuZ2V0RGF0ZSgpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfWAsdGl0bGU6IlRlYW0gTWVldGluZyIsdHlwZToiaW5mbyIsY291bnQ6Mn0se2RhdGU6YCR7YX0tJHsodCsxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX0tJHsoZS5nZXREYXRlKCkrMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9YCx0aXRsZToiUHJvamVjdCBEZWFkbGluZSIsdHlwZToid2FybmluZyJ9LHtkYXRlOmAke2F9LSR7KHQrMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9LSR7KGUuZ2V0RGF0ZSgpKzIpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfWAsdGl0bGU6IlJlbGVhc2UgRGF5Iix0eXBlOiJzdWNjZXNzIn0se2RhdGU6YCR7YX0tJHsodCsxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX0tJHsoZS5nZXREYXRlKCkrNSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9YCx0aXRsZToiVXJnZW50IEZpeCBSZXF1aXJlZCIsdHlwZToiZXJyb3IifSx7ZGF0ZTpgJHthfS0keyh0KzEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfS0keyhlLmdldERhdGUoKSs3KS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX1gLHRpdGxlOiJNdWx0aXBsZSBFdmVudHMgVG9kYXkiLHR5cGU6ImluZm8iLGNvdW50OjV9LHtkYXRlOmAke2F9LSR7KHQrMikudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9LTE1YCx0aXRsZToiRnV0dXJlIFBsYW5uaW5nIFNlc3Npb24iLHR5cGU6ImluZm8ifV0sbj1zLnF1ZXJ5U2VsZWN0b3IoImRlZXMtaW5wdXQtZGF0ZXBpY2tlciIpO24mJihuLmV2ZW50cz1yLGNvbnNvbGUubG9nKCJDYWxlbmRhciBldmVudHMgbG9hZGVkOiIscikpfX0+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJDYWxlbmRhciB3aXRoIEV2ZW50cyJ9IC5zdWJ0aXRsZT0keyJWaXN1YWwgZmVlZGJhY2sgZm9yIHNjaGVkdWxlZCBldmVudHMifT4KICAgICAgICA8ZGVlcy1pbnB1dC1kYXRlcGlja2VyCiAgICAgICAgICBsYWJlbD0iRXZlbnQgQ2FsZW5kYXIiCiAgICAgICAgICBkZXNjcmlwdGlvbj0iRGF5cyB3aXRoIGNvbG9yZWQgZG90cyBoYXZlIGV2ZW50cy4gSG92ZXIgdG8gc2VlIGRldGFpbHMuIgogICAgICAgID48L2RlZXMtaW5wdXQtZGF0ZXBpY2tlcj4KICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJkZW1vLW91dHB1dCIgc3R5bGU9Im1hcmdpbi10b3A6IDE2cHg7Ij4KICAgICAgICAgIDxzdHJvbmc+RXZlbnQgTGVnZW5kOjwvc3Ryb25nPjxicj4KICAgICAgICAgIDxzcGFuIHN0eWxlPSJjb2xvcjogIzA5NjlkYTsiPuKXjyBJbmZvPC9zcGFuPiB8IAogICAgICAgICAgPHNwYW4gc3R5bGU9ImNvbG9yOiAjZDI5OTIyOyI+4pePIFdhcm5pbmc8L3NwYW4+IHwgCiAgICAgICAgICA8c3BhbiBzdHlsZT0iY29sb3I6ICMyZWEwNDM7Ij7il48gU3VjY2Vzczwvc3Bhbj4gfCAKICAgICAgICAgIDxzcGFuIHN0eWxlPSJjb2xvcjogI2NmMjIyZTsiPuKXjyBFcnJvcjwvc3Bhbj48YnI+CiAgICAgICAgICA8ZW0+RGF5cyB3aXRoIG1vcmUgdGhhbiAzIGV2ZW50cyBzaG93IGEgY291bnQgYmFkZ2U8L2VtPgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CgogICAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e2xldCBlPXMucXVlcnlTZWxlY3RvcigiZGVlcy1pbnB1dC1kYXRlcGlja2VyIiksdD1zLnF1ZXJ5U2VsZWN0b3IoIiNldmVudC1vdXRwdXQiKTtlJiZ0JiYoZS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLChhPT57bGV0IHI9YS50YXJnZXQsbj1yLnZhbHVlO2lmKG4pe2xldCBvPW5ldyBEYXRlKG4pLHA9ci5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIuZGF0ZS1pbnB1dCIpPy52YWx1ZXx8Ik4vQSI7dC5pbm5lckhUTUw9YAogICAgICAgICAgICAgIDxzdHJvbmc+RXZlbnQgdHJpZ2dlcmVkITwvc3Ryb25nPjxicj4KICAgICAgICAgICAgICBJU08gVmFsdWU6ICR7bn08YnI+CiAgICAgICAgICAgICAgRm9ybWF0dGVkOiAke3B9PGJyPgogICAgICAgICAgICAgIERhdGUgb2JqZWN0OiAke28udG9Mb2NhbGVTdHJpbmcoKX0KICAgICAgICAgICAgYH1lbHNlIHQuaW5uZXJIVE1MPSI8ZW0+RGF0ZSBjbGVhcmVkPC9lbT4ifSkpLGUuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsKCk9Pntjb25zb2xlLmxvZygiRGF0ZXBpY2tlciBsb3N0IGZvY3VzIil9KSl9fT4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IkV2ZW50IEhhbmRsaW5nIn0gLnN1YnRpdGxlPSR7IkludGVyYWN0aXZlIGRlbW9uc3RyYXRpb24gb2YgY2hhbmdlIGV2ZW50cyJ9PgogICAgICAgIDxkZWVzLWlucHV0LWRhdGVwaWNrZXIKICAgICAgICAgIGxhYmVsPSJFdmVudCBEZW1vIgogICAgICAgICAgZGVzY3JpcHRpb249IlNlbGVjdCBhIGRhdGUgdG8gc2VlIHRoZSBldmVudCBkZXRhaWxzIgogICAgICAgID48L2RlZXMtaW5wdXQtZGF0ZXBpY2tlcj4KICAgICAgICAKICAgICAgICA8ZGl2IGlkPSJldmVudC1vdXRwdXQiIGNsYXNzPSJkZW1vLW91dHB1dCI+CiAgICAgICAgICA8ZW0+U2VsZWN0IGEgZGF0ZSB0byBzZWUgZXZlbnQgZGV0YWlscy4uLjwvZW0+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KICA8L2Rpdj4KYCwiZGVtb0Z1bmMiKX0pO3ZhciBoYmEsZmJhPWcoKCk9PntwZSgpO0VpKCk7aGJhPVsuLi5CdC5iYXNlU3R5bGVzLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAuaW5wdXQtY29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5kYXRlLWlucHV0IHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDQwcHg7CiAgICAgICAgcGFkZGluZzogMCAxMnB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxMDAlKSIsImhzbCgyMjQgNzEuNCUgNC4xJSkiKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgyMTQuMyAzMS44JSA5MS40JSkiLCJoc2woMjE3LjIgMzIuNiUgMTcuNSUpIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMjQgNzEuNCUgNC4xJSkiLCJoc2woMjEwIDIwJSA5OCUpIil9OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlOwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgICAgIH0KCiAgICAgIC5kYXRlLWlucHV0OjpwbGFjZWhvbGRlciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjIwIDguOSUgNDYuMSUpIiwiaHNsKDIxNSAyMC4yJSA2NS4xJSkiKX07CiAgICAgIH0KCiAgICAgIC5kYXRlLWlucHV0OmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE0LjMgMzEuOCUgOTEuNCUpIiwiaHNsKDIxNy4yIDMyLjYlIDE3LjUlKSIpfTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxMCAyMCUgOTglKSIsImhzbCgyMTUgMjcuOSUgMTYuOSUpIil9OwogICAgICB9CgogICAgICAuZGF0ZS1pbnB1dDpmb2N1cywKICAgICAgLmRhdGUtaW5wdXQub3BlbiB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDExLjIlKSIsImhzbCgyMTAgMjAlIDk4JSkiKX07CiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7CiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxMDAlKSIsImhzbCgyMjQgNzEuNCUgNC4xJSkiKX0sCiAgICAgICAgICAgICAgICAgICAgMCAwIDAgNHB4ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgMTEuMiUgLyAwLjEpIiwiaHNsKDIxMCAyMCUgOTglIC8gMC4xKSIpfTsKICAgICAgfQoKICAgICAgLmRhdGUtaW5wdXQ6ZGlzYWJsZWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDIwJSA5OCUpIiwiaHNsKDIxNSAyNy45JSAxNi45JSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjIwIDguOSUgNDYuMSUpIiwiaHNsKDIxNSAyMC4yJSA2NS4xJSkiKX07CiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgIH0KCiAgICAgIC5pY29uLWNvbnRhaW5lciB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIHRvcDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNHB4OwogICAgICAgIHBhZGRpbmc6IDAgMTJweDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgLmljb24tY29udGFpbmVyID4gKiB7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87CiAgICAgIH0KCiAgICAgIC5jYWxlbmRhci1pY29uIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMjAgOC45JSA0Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDY1LjElKSIpfTsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5jbGVhci1idXR0b24gewogICAgICAgIHdpZHRoOiAyMHB4OwogICAgICAgIGhlaWdodDogMjBweDsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjIwIDguOSUgNDYuMSUpIiwiaHNsKDIxNSAyMC4yJSA2NS4xJSkiKX07CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2UsIGJhY2tncm91bmQtY29sb3IgMC4ycyBlYXNlOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC5jbGVhci1idXR0b246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDIwJSA5OCUpIiwiaHNsKDIxNSAyNy45JSAxNi45JSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjI0IDcxLjQlIDQuMSUpIiwiaHNsKDIxMCAyMCUgOTglKSIpfTsKICAgICAgfQogICAgYF19KTt2YXIgbWJhLGdiYT1nKCgpPT57cGUoKTttYmE9aShzPT53YAogICAgICAgIDxkaXYgY2xhc3M9ImlucHV0LXdyYXBwZXIiPgogICAgICAgICAgPGRlZXMtbGFiZWwgLmxhYmVsPSR7cy5sYWJlbH0gLmluZm9UZXh0PSR7cy5pbmZvVGV4dH0gLnJlcXVpcmVkPSR7cy5yZXF1aXJlZH0+PC9kZWVzLWxhYmVsPgogICAgICAgICAgPGRpdiBjbGFzcz0iaW5wdXQtY29udGFpbmVyIj4KICAgICAgICAgICAgPGlucHV0CiAgICAgICAgICAgICAgdHlwZT0idGV4dCIKICAgICAgICAgICAgICBjbGFzcz0iZGF0ZS1pbnB1dCAke3MuaXNPcGVuZWQ/Im9wZW4iOiIifSIKICAgICAgICAgICAgICAudmFsdWU9JHtzLmZvcm1hdERhdGUocy52YWx1ZSl9CiAgICAgICAgICAgICAgLnBsYWNlaG9sZGVyPSR7cy5wbGFjZWhvbGRlcn0KICAgICAgICAgICAgICA/ZGlzYWJsZWQ9JHtzLmRpc2FibGVkfQogICAgICAgICAgICAgIEBjbGljaz0ke3MudG9nZ2xlQ2FsZW5kYXJ9CiAgICAgICAgICAgICAgQGtleWRvd249JHtzLmhhbmRsZUtleWRvd259CiAgICAgICAgICAgICAgQGlucHV0PSR7cy5oYW5kbGVNYW51YWxJbnB1dH0KICAgICAgICAgICAgICBAYmx1cj0ke3MuaGFuZGxlSW5wdXRCbHVyfQogICAgICAgICAgICAgIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OiAke3MudmFsdWU/IjY0cHgiOiI0MHB4In0iCiAgICAgICAgICAgIC8+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Imljb24tY29udGFpbmVyIj4KICAgICAgICAgICAgICAke3MudmFsdWUmJiFzLmRpc2FibGVkP3dgCiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjbGVhci1idXR0b24iIEBjbGljaz0ke3MuY2xlYXJWYWx1ZX0gdGl0bGU9IkNsZWFyIj4KICAgICAgICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6eCIgaWNvblNpemU9IjE0Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAgICAgPGRlZXMtaWNvbiBjbGFzcz0iY2FsZW5kYXItaWNvbiIgaWNvbj0ibHVjaWRlOmNhbGVuZGFyIiBpY29uU2l6ZT0iMTYiPjwvZGVlcy1pY29uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgJHtzLnJlbmRlckRlc2NyaXB0aW9uKCl9CiAgICAgICAgPC9kaXY+CiAgICAgIGAsInJlbmRlckRhdGVwaWNrZXIiKX0pO3ZhciBQcixEYSxqb3QsVm90PWcoKCk9PntwZSgpO2t0KCk7R24oKTtodCgpO3YyKCk7R2EoKTtQcj1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sRGE9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LGpvdD0oKCk9PntsZXQgcz1bbmUoImRlZXMtaW5wdXQtZGF0ZXBpY2tlci1wb3B1cCIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdLEgsaz1bXSxTPVtdLEksUD1bXSxSPVtdLEssVj1bXSxXPVtdLG1lLEI9W10sVT1bXSxoZSxGPVtdLGo9W10sdWUsbGU9W10sUT1bXSxpZSx0ZT1bXSxlZT1bXSxrZSxYPVtdLFo9W10seWUscT1bXSxBPVtdLHNlLG9lPVtdLGFlPVtdLFRlLFJlPVtdLEJlPVtdLEdlLERlPVtdLF9lPVtdO3ZhciBDZT1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0lucHV0RGF0ZXBpY2tlclBvcHVwIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IHZlPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe2F0dHJpYnV0ZTohMX0pXSxwPVtMKHthdHRyaWJ1dGU6ITF9KV0sYz1bTCh7dHlwZTpCb29sZWFufSldLHg9W0woe3R5cGU6U3RyaW5nfSldLHk9W0woe3R5cGU6TnVtYmVyfSldLE49W0woe3R5cGU6TnVtYmVyfSldLE89W0woe3R5cGU6U3RyaW5nfSldLEg9W0woe3R5cGU6U3RyaW5nfSldLEk9W0woe3R5cGU6QXJyYXl9KV0sSz1bTCh7dHlwZTpCb29sZWFufSldLG1lPVtMKHt0eXBlOlN0cmluZ30pXSxoZT1bTCh7dHlwZTpBcnJheX0pXSx1ZT1bTCh7dHlwZTpCb29sZWFufSldLGllPVtZKCldLGtlPVtZKCldLHllPVtZKCldLHNlPVtZKCldLFRlPVtZKCldLEdlPVtZKCldLFByKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidHJpZ2dlclJlY3QiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYmU9PiJ0cmlnZ2VyUmVjdCJpbiBiZSwiaGFzIiksZ2V0OmkoYmU9PmJlLnRyaWdnZXJSZWN0LCJnZXQiKSxzZXQ6aSgoYmUsRWUpPT57YmUudHJpZ2dlclJlY3Q9RWV9LCJzZXQiKX0sbWV0YWRhdGE6dmV9LG8sbCksUHIodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJvd25lckNvbXBvbmVudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShiZT0+Im93bmVyQ29tcG9uZW50ImluIGJlLCJoYXMiKSxnZXQ6aShiZT0+YmUub3duZXJDb21wb25lbnQsImdldCIpLHNldDppKChiZSxFZSk9PntiZS5vd25lckNvbXBvbmVudD1FZX0sInNldCIpfSxtZXRhZGF0YTp2ZX0sZCx1KSxQcih0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImVuYWJsZVRpbWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYmU9PiJlbmFibGVUaW1lImluIGJlLCJoYXMiKSxnZXQ6aShiZT0+YmUuZW5hYmxlVGltZSwiZ2V0Iiksc2V0OmkoKGJlLEVlKT0+e2JlLmVuYWJsZVRpbWU9RWV9LCJzZXQiKX0sbWV0YWRhdGE6dmV9LGIsdiksUHIodGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0aW1lRm9ybWF0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGJlPT4idGltZUZvcm1hdCJpbiBiZSwiaGFzIiksZ2V0OmkoYmU9PmJlLnRpbWVGb3JtYXQsImdldCIpLHNldDppKChiZSxFZSk9PntiZS50aW1lRm9ybWF0PUVlfSwic2V0Iil9LG1ldGFkYXRhOnZlfSxtLGYpLFByKHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWludXRlSW5jcmVtZW50IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGJlPT4ibWludXRlSW5jcmVtZW50ImluIGJlLCJoYXMiKSxnZXQ6aShiZT0+YmUubWludXRlSW5jcmVtZW50LCJnZXQiKSxzZXQ6aSgoYmUsRWUpPT57YmUubWludXRlSW5jcmVtZW50PUVlfSwic2V0Iil9LG1ldGFkYXRhOnZlfSxNLHopLFByKHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToid2Vla1N0YXJ0c09uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGJlPT4id2Vla1N0YXJ0c09uImluIGJlLCJoYXMiKSxnZXQ6aShiZT0+YmUud2Vla1N0YXJ0c09uLCJnZXQiKSxzZXQ6aSgoYmUsRWUpPT57YmUud2Vla1N0YXJ0c09uPUVlfSwic2V0Iil9LG1ldGFkYXRhOnZlfSxDLF8pLFByKHRoaXMsbnVsbCxPLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWluRGF0ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShiZT0+Im1pbkRhdGUiaW4gYmUsImhhcyIpLGdldDppKGJlPT5iZS5taW5EYXRlLCJnZXQiKSxzZXQ6aSgoYmUsRWUpPT57YmUubWluRGF0ZT1FZX0sInNldCIpfSxtZXRhZGF0YTp2ZX0sJCxFKSxQcih0aGlzLG51bGwsSCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1heERhdGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYmU9PiJtYXhEYXRlImluIGJlLCJoYXMiKSxnZXQ6aShiZT0+YmUubWF4RGF0ZSwiZ2V0Iiksc2V0OmkoKGJlLEVlKT0+e2JlLm1heERhdGU9RWV9LCJzZXQiKX0sbWV0YWRhdGE6dmV9LGssUyksUHIodGhpcyxudWxsLEkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJkaXNhYmxlZERhdGVzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGJlPT4iZGlzYWJsZWREYXRlcyJpbiBiZSwiaGFzIiksZ2V0OmkoYmU9PmJlLmRpc2FibGVkRGF0ZXMsImdldCIpLHNldDppKChiZSxFZSk9PntiZS5kaXNhYmxlZERhdGVzPUVlfSwic2V0Iil9LG1ldGFkYXRhOnZlfSxQLFIpLFByKHRoaXMsbnVsbCxLLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZW5hYmxlVGltZXpvbmUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYmU9PiJlbmFibGVUaW1lem9uZSJpbiBiZSwiaGFzIiksZ2V0OmkoYmU9PmJlLmVuYWJsZVRpbWV6b25lLCJnZXQiKSxzZXQ6aSgoYmUsRWUpPT57YmUuZW5hYmxlVGltZXpvbmU9RWV9LCJzZXQiKX0sbWV0YWRhdGE6dmV9LFYsVyksUHIodGhpcyxudWxsLG1lLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidGltZXpvbmUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYmU9PiJ0aW1lem9uZSJpbiBiZSwiaGFzIiksZ2V0OmkoYmU9PmJlLnRpbWV6b25lLCJnZXQiKSxzZXQ6aSgoYmUsRWUpPT57YmUudGltZXpvbmU9RWV9LCJzZXQiKX0sbWV0YWRhdGE6dmV9LEIsVSksUHIodGhpcyxudWxsLGhlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZXZlbnRzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGJlPT4iZXZlbnRzImluIGJlLCJoYXMiKSxnZXQ6aShiZT0+YmUuZXZlbnRzLCJnZXQiKSxzZXQ6aSgoYmUsRWUpPT57YmUuZXZlbnRzPUVlfSwic2V0Iil9LG1ldGFkYXRhOnZlfSxGLGopLFByKHRoaXMsbnVsbCx1ZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im9wZW5zVG9Ub3AiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYmU9PiJvcGVuc1RvVG9wImluIGJlLCJoYXMiKSxnZXQ6aShiZT0+YmUub3BlbnNUb1RvcCwiZ2V0Iiksc2V0OmkoKGJlLEVlKT0+e2JlLm9wZW5zVG9Ub3A9RWV9LCJzZXQiKX0sbWV0YWRhdGE6dmV9LGxlLFEpLFByKHRoaXMsbnVsbCxpZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlbGVjdGVkRGF0ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShiZT0+InNlbGVjdGVkRGF0ZSJpbiBiZSwiaGFzIiksZ2V0OmkoYmU9PmJlLnNlbGVjdGVkRGF0ZSwiZ2V0Iiksc2V0OmkoKGJlLEVlKT0+e2JlLnNlbGVjdGVkRGF0ZT1FZX0sInNldCIpfSxtZXRhZGF0YTp2ZX0sdGUsZWUpLFByKHRoaXMsbnVsbCxrZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InZpZXdEYXRlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGJlPT4idmlld0RhdGUiaW4gYmUsImhhcyIpLGdldDppKGJlPT5iZS52aWV3RGF0ZSwiZ2V0Iiksc2V0OmkoKGJlLEVlKT0+e2JlLnZpZXdEYXRlPUVlfSwic2V0Iil9LG1ldGFkYXRhOnZlfSxYLFopLFByKHRoaXMsbnVsbCx5ZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlbGVjdGVkSG91ciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShiZT0+InNlbGVjdGVkSG91ciJpbiBiZSwiaGFzIiksZ2V0OmkoYmU9PmJlLnNlbGVjdGVkSG91ciwiZ2V0Iiksc2V0OmkoKGJlLEVlKT0+e2JlLnNlbGVjdGVkSG91cj1FZX0sInNldCIpfSxtZXRhZGF0YTp2ZX0scSxBKSxQcih0aGlzLG51bGwsc2Use2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWxlY3RlZE1pbnV0ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShiZT0+InNlbGVjdGVkTWludXRlImluIGJlLCJoYXMiKSxnZXQ6aShiZT0+YmUuc2VsZWN0ZWRNaW51dGUsImdldCIpLHNldDppKChiZSxFZSk9PntiZS5zZWxlY3RlZE1pbnV0ZT1FZX0sInNldCIpfSxtZXRhZGF0YTp2ZX0sb2UsYWUpLFByKHRoaXMsbnVsbCxUZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1lbnVaSW5kZXgiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYmU9PiJtZW51WkluZGV4ImluIGJlLCJoYXMiKSxnZXQ6aShiZT0+YmUubWVudVpJbmRleCwiZ2V0Iiksc2V0OmkoKGJlLEVlKT0+e2JlLm1lbnVaSW5kZXg9RWV9LCJzZXQiKX0sbWV0YWRhdGE6dmV9LFJlLEJlKSxQcih0aGlzLG51bGwsR2Use2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2aXNpYmxlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGJlPT4idmlzaWJsZSJpbiBiZSwiaGFzIiksZ2V0OmkoYmU9PmJlLnZpc2libGUsImdldCIpLHNldDppKChiZSxFZSk9PntiZS52aXNpYmxlPUVlfSwic2V0Iil9LG1ldGFkYXRhOnZlfSxEZSxfZSksUHIobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6dmV9LG51bGwsdCksQ2U9YT1lLnZhbHVlLHZlJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZlfSl9I2U9RGEodGhpcyxvLG51bGwpO2dldCB0cmlnZ2VyUmVjdCgpe3JldHVybiB0aGlzLiNlfXNldCB0cmlnZ2VyUmVjdCh2ZSl7dGhpcy4jZT12ZX0jdD0oRGEodGhpcyxsKSxEYSh0aGlzLGQsbnVsbCkpO2dldCBvd25lckNvbXBvbmVudCgpe3JldHVybiB0aGlzLiN0fXNldCBvd25lckNvbXBvbmVudCh2ZSl7dGhpcy4jdD12ZX0jYT0oRGEodGhpcyx1KSxEYSh0aGlzLGIsITEpKTtnZXQgZW5hYmxlVGltZSgpe3JldHVybiB0aGlzLiNhfXNldCBlbmFibGVUaW1lKHZlKXt0aGlzLiNhPXZlfSNzPShEYSh0aGlzLHYpLERhKHRoaXMsbSwiMjRoIikpO2dldCB0aW1lRm9ybWF0KCl7cmV0dXJuIHRoaXMuI3N9c2V0IHRpbWVGb3JtYXQodmUpe3RoaXMuI3M9dmV9I2k9KERhKHRoaXMsZiksRGEodGhpcyxNLDEpKTtnZXQgbWludXRlSW5jcmVtZW50KCl7cmV0dXJuIHRoaXMuI2l9c2V0IG1pbnV0ZUluY3JlbWVudCh2ZSl7dGhpcy4jaT12ZX0jcj0oRGEodGhpcyx6KSxEYSh0aGlzLEMsMSkpO2dldCB3ZWVrU3RhcnRzT24oKXtyZXR1cm4gdGhpcy4jcn1zZXQgd2Vla1N0YXJ0c09uKHZlKXt0aGlzLiNyPXZlfSNvPShEYSh0aGlzLF8pLERhKHRoaXMsJCwiIikpO2dldCBtaW5EYXRlKCl7cmV0dXJuIHRoaXMuI299c2V0IG1pbkRhdGUodmUpe3RoaXMuI289dmV9I249KERhKHRoaXMsRSksRGEodGhpcyxrLCIiKSk7Z2V0IG1heERhdGUoKXtyZXR1cm4gdGhpcy4jbn1zZXQgbWF4RGF0ZSh2ZSl7dGhpcy4jbj12ZX0jbD0oRGEodGhpcyxTKSxEYSh0aGlzLFAsW10pKTtnZXQgZGlzYWJsZWREYXRlcygpe3JldHVybiB0aGlzLiNsfXNldCBkaXNhYmxlZERhdGVzKHZlKXt0aGlzLiNsPXZlfSNjPShEYSh0aGlzLFIpLERhKHRoaXMsViwhMSkpO2dldCBlbmFibGVUaW1lem9uZSgpe3JldHVybiB0aGlzLiNjfXNldCBlbmFibGVUaW1lem9uZSh2ZSl7dGhpcy4jYz12ZX0jZD0oRGEodGhpcyxXKSxEYSh0aGlzLEIsSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lKSk7Z2V0IHRpbWV6b25lKCl7cmV0dXJuIHRoaXMuI2R9c2V0IHRpbWV6b25lKHZlKXt0aGlzLiNkPXZlfSN1PShEYSh0aGlzLFUpLERhKHRoaXMsRixbXSkpO2dldCBldmVudHMoKXtyZXR1cm4gdGhpcy4jdX1zZXQgZXZlbnRzKHZlKXt0aGlzLiN1PXZlfSNwPShEYSh0aGlzLGopLERhKHRoaXMsbGUsITEpKTtnZXQgb3BlbnNUb1RvcCgpe3JldHVybiB0aGlzLiNwfXNldCBvcGVuc1RvVG9wKHZlKXt0aGlzLiNwPXZlfSNoPShEYSh0aGlzLFEpLERhKHRoaXMsdGUsbnVsbCkpO2dldCBzZWxlY3RlZERhdGUoKXtyZXR1cm4gdGhpcy4jaH1zZXQgc2VsZWN0ZWREYXRlKHZlKXt0aGlzLiNoPXZlfSNmPShEYSh0aGlzLGVlKSxEYSh0aGlzLFgsbmV3IERhdGUpKTtnZXQgdmlld0RhdGUoKXtyZXR1cm4gdGhpcy4jZn1zZXQgdmlld0RhdGUodmUpe3RoaXMuI2Y9dmV9I209KERhKHRoaXMsWiksRGEodGhpcyxxLDApKTtnZXQgc2VsZWN0ZWRIb3VyKCl7cmV0dXJuIHRoaXMuI219c2V0IHNlbGVjdGVkSG91cih2ZSl7dGhpcy4jbT12ZX0jZz0oRGEodGhpcyxBKSxEYSh0aGlzLG9lLDApKTtnZXQgc2VsZWN0ZWRNaW51dGUoKXtyZXR1cm4gdGhpcy4jZ31zZXQgc2VsZWN0ZWRNaW51dGUodmUpe3RoaXMuI2c9dmV9I2I9KERhKHRoaXMsYWUpLERhKHRoaXMsUmUsMWUzKSk7Z2V0IG1lbnVaSW5kZXgoKXtyZXR1cm4gdGhpcy4jYn1zZXQgbWVudVpJbmRleCh2ZSl7dGhpcy4jYj12ZX0jdj0oRGEodGhpcyxCZSksRGEodGhpcyxEZSwhMSkpO2dldCB2aXNpYmxlKCl7cmV0dXJuIHRoaXMuI3Z9c2V0IHZpc2libGUodmUpe3RoaXMuI3Y9dmV9d2luZG93TGF5ZXI9KERhKHRoaXMsX2UpLG51bGwpO2lzRGVzdHJveWluZz0hMTtzdGF0aWMgc3R5bGVzPVtxZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB3aWR0aDogMDsKICAgICAgICBoZWlnaHQ6IDA7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICAgICogewogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgIC5jYWxlbmRhci1wb3B1cCB7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOwogICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm0sIG9wYWNpdHk7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTRweCk7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDEwMCUpIiwiaHNsKDIyNCA3MS40JSA0LjElKSIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDIxNC4zIDMxLjglIDkxLjQlKSIsImhzbCgyMTcuMiAzMi42JSAxNy41JSkiKX07CiAgICAgICAgYm94LXNoYWRvdzogJHtoLmJkVGhlbWUoIjAgMTBweCAxNXB4IC0zcHggaHNsKDAgMCUgMCUgLyAwLjEpLCAwIDRweCA2cHggLTRweCBoc2woMCAwJSAwJSAvIDAuMSkiLCIwIDEwcHggMTVweCAtM3B4IGhzbCgwIDAlIDAlIC8gMC4yKSwgMCA0cHggNnB4IC00cHggaHNsKDAgMCUgMCUgLyAwLjIpIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBwYWRkaW5nOiAxMnB4OwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICAgIG1pbi13aWR0aDogMjgwcHg7CiAgICAgIH0KCiAgICAgIC5jYWxlbmRhci1wb3B1cC50b3AgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg0cHgpOwogICAgICB9CgogICAgICAuY2FsZW5kYXItcG9wdXAuc2hvdyB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC8qIENhbGVuZGFyIEhlYWRlciAqLwogICAgICAuY2FsZW5kYXItaGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgIH0KCiAgICAgIC5tb250aC15ZWFyLWRpc3BsYXkgewogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIyNCA3MS40JSA0LjElKSIsImhzbCgyMTAgMjAlIDk4JSkiKX07CiAgICAgICAgZmxleDogMTsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5uYXYtYnV0dG9uIHsKICAgICAgICB3aWR0aDogMjhweDsKICAgICAgICBoZWlnaHQ6IDI4cHg7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIyMCA4LjklIDQ2LjElKSIsImhzbCgyMTUgMjAuMiUgNjUuMSUpIil9OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5uYXYtYnV0dG9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxMCAyMCUgOTglKSIsImhzbCgyMTUgMjcuOSUgMTYuOSUpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIyNCA3MS40JSA0LjElKSIsImhzbCgyMTAgMjAlIDk4JSkiKX07CiAgICAgIH0KCiAgICAgIC8qIFdlZWtkYXkgaGVhZGVycyAqLwogICAgICAud2Vla2RheXMgewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNywgMWZyKTsKICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7CiAgICAgIH0KCiAgICAgIC53ZWVrZGF5IHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjIwIDguOSUgNDYuMSUpIiwiaHNsKDIxNSAyMC4yJSA2NS4xJSkiKX07CiAgICAgICAgcGFkZGluZzogMCAwIDhweCAwOwogICAgICB9CgogICAgICAvKiBEYXlzIGdyaWQgKi8KICAgICAgLmRheXMtZ3JpZCB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg3LCAxZnIpOwogICAgICAgIGdhcDogMnB4OwogICAgICB9CgogICAgICAuZGF5IHsKICAgICAgICBhc3BlY3QtcmF0aW86IDE7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjI0IDcxLjQlIDQuMSUpIiwiaHNsKDIxMCAyMCUgOTglKSIpfTsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgd2lkdGg6IDM2cHg7CiAgICAgICAgaGVpZ2h0OiAzNnB4OwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgLmRheTpob3Zlcjpub3QoLmRpc2FibGVkKSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgMjAlIDk4JSkiLCJoc2woMjE1IDI3LjklIDE2LjklKSIpfTsKICAgICAgfQoKICAgICAgLmRheS5vdGhlci1tb250aCB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjIwIDguOSUgNDYuMSUpIiwiaHNsKDIxNSAyMC4yJSA2NS4xJSkiKX07CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICB9CgogICAgICAuZGF5LnRvZGF5IHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxMCAyMCUgOTglKSIsImhzbCgyMTUgMjcuOSUgMTYuOSUpIil9OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIH0KCiAgICAgIC5kYXkuc2VsZWN0ZWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgMTEuMiUpIiwiaHNsKDIxMCAyMCUgOTglKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTAgMjAlIDk4JSkiLCJoc2woMjIyLjIgNDcuNCUgMTEuMiUpIil9OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIH0KCiAgICAgIC5kYXkuZGlzYWJsZWQgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIyMCA4LjklIDQ2LjElKSIsImhzbCgyMTUgMjAuMiUgNjUuMSUpIil9OwogICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAgICAgb3BhY2l0eTogMC4zOwogICAgICB9CgogICAgICAvKiBFdmVudCBpbmRpY2F0b3JzICovCiAgICAgIC5ldmVudC1pbmRpY2F0b3IgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBib3R0b206IDRweDsKICAgICAgICBsZWZ0OiA1MCU7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiAycHg7CiAgICAgIH0KCiAgICAgIC5ldmVudC1kb3QgewogICAgICAgIHdpZHRoOiA0cHg7CiAgICAgICAgaGVpZ2h0OiA0cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjIwIDguOSUgNDYuMSUpIiwiaHNsKDIxNSAyMC4yJSA2NS4xJSkiKX07CiAgICAgIH0KCiAgICAgIC5ldmVudC1kb3QuaW5mbyB7IGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjExIDcwJSA1MiUpIiwiaHNsKDIxMSA3MCUgNjIlKSIpfTsgfQogICAgICAuZXZlbnQtZG90Lndhcm5pbmcgeyBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDQ1IDkwJSA0NSUpIiwiaHNsKDQ1IDkwJSA1NSUpIil9OyB9CiAgICAgIC5ldmVudC1kb3Quc3VjY2VzcyB7IGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMTQyIDY5JSA0NSUpIiwiaHNsKDE0MiA2OSUgNTUlKSIpfTsgfQogICAgICAuZXZlbnQtZG90LmVycm9yIHsgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDcyJSA1MSUpIiwiaHNsKDAgNzIlIDYxJSkiKX07IH0KCiAgICAgIC5ldmVudC1jb3VudCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMnB4OwogICAgICAgIHJpZ2h0OiAycHg7CiAgICAgICAgbWluLXdpZHRoOiAxNnB4OwogICAgICAgIGhlaWdodDogMTZweDsKICAgICAgICBwYWRkaW5nOiAwIDRweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgNzIlIDUxJSkiLCJoc2woMCA3MiUgNjElKSIpfTsKICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgfQoKICAgICAgLmV2ZW50LXRvb2x0aXAgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBib3R0b206IGNhbGMoMTAwJSArIDhweCk7CiAgICAgICAgbGVmdDogNTAlOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMjAlKSIsImhzbCgwIDAlIDkwJSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxMDAlKSIsImhzbCgwIDAlIDAlKSIpfTsKICAgICAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZTsKICAgICAgICB6LWluZGV4OiAxMDsKICAgICAgfQoKICAgICAgLmRheS5oYXMtZXZlbnQ6aG92ZXIgLmV2ZW50LXRvb2x0aXAgeyBvcGFjaXR5OiAxOyB9CgogICAgICAvKiBUaW1lIHNlbGVjdG9yICovCiAgICAgIC50aW1lLXNlbGVjdG9yIHsKICAgICAgICBtYXJnaW4tdG9wOiAxMnB4OwogICAgICAgIHBhZGRpbmctdG9wOiAxMnB4OwogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDIxNC4zIDMxLjglIDkxLjQlKSIsImhzbCgyMTcuMiAzMi42JSAxNy41JSkiKX07CiAgICAgIH0KCiAgICAgIC50aW1lLXNlbGVjdG9yLXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjIwIDguOSUgNDYuMSUpIiwiaHNsKDIxNSAyMC4yJSA2NS4xJSkiKX07CiAgICAgIH0KCiAgICAgIC50aW1lLWlucHV0cyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICB9CgogICAgICAudGltZS1pbnB1dCB7CiAgICAgICAgd2lkdGg6IDY1cHg7CiAgICAgICAgaGVpZ2h0OiAzNnB4OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMjE0LjMgMzEuOCUgOTEuNCUpIiwiaHNsKDIxNy4yIDMyLjYlIDE3LjUlKSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgcGFkZGluZzogMCAxMnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDEwMCUpIiwiaHNsKDIyNCA3MS40JSA0LjElKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMjQgNzEuNCUgNC4xJSkiLCJoc2woMjEwIDIwJSA5OCUpIil9OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7CiAgICAgIH0KCiAgICAgIC50aW1lLWlucHV0OmZvY3VzIHsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMjIuMiA0Ny40JSAxMS4yJSkiLCJoc2woMjEwIDIwJSA5OCUpIil9OwogICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDExLjIlIC8gMC4xKSIsImhzbCgyMTAgMjAlIDk4JSAvIDAuMSkiKX07CiAgICAgIH0KCiAgICAgIC50aW1lLXNlcGFyYXRvciB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjIwIDguOSUgNDYuMSUpIiwiaHNsKDIxNSAyMC4yJSA2NS4xJSkiKX07CiAgICAgIH0KCiAgICAgIC5hbS1wbS1zZWxlY3RvciB7IGRpc3BsYXk6IGZsZXg7IGdhcDogNHB4OyBtYXJnaW4tbGVmdDogOHB4OyB9CgogICAgICAuYW0tcG0tYnV0dG9uIHsKICAgICAgICBwYWRkaW5nOiA2cHggMTJweDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDIxNC4zIDMxLjglIDkxLjQlKSIsImhzbCgyMTcuMiAzMi42JSAxNy41JSkiKX07CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDEwMCUpIiwiaHNsKDIyNCA3MS40JSA0LjElKSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjIwIDguOSUgNDYuMSUpIiwiaHNsKDIxNSAyMC4yJSA2NS4xJSkiKX07CiAgICAgIH0KCiAgICAgIC5hbS1wbS1idXR0b24uc2VsZWN0ZWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgMTEuMiUpIiwiaHNsKDIxMCAyMCUgOTglKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTAgMjAlIDk4JSkiLCJoc2woMjIyLjIgNDcuNCUgMTEuMiUpIil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMjIuMiA0Ny40JSAxMS4yJSkiLCJoc2woMjEwIDIwJSA5OCUpIil9OwogICAgICB9CgogICAgICAuYW0tcG0tYnV0dG9uOmhvdmVyOm5vdCguc2VsZWN0ZWQpIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxMCAyMCUgOTglKSIsImhzbCgyMTUgMjcuOSUgMTYuOSUpIil9OwogICAgICB9CgogICAgICAvKiBUaW1lem9uZSBzZWxlY3RvciAqLwogICAgICAudGltZXpvbmUtc2VsZWN0b3IgewogICAgICAgIG1hcmdpbi10b3A6IDEycHg7CiAgICAgICAgcGFkZGluZy10b3A6IDEycHg7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMjE0LjMgMzEuOCUgOTEuNCUpIiwiaHNsKDIxNy4yIDMyLjYlIDE3LjUlKSIpfTsKICAgICAgfQoKICAgICAgLnRpbWV6b25lLXNlbGVjdG9yLXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjIwIDguOSUgNDYuMSUpIiwiaHNsKDIxNSAyMC4yJSA2NS4xJSkiKX07CiAgICAgIH0KCiAgICAgIC50aW1lem9uZS1zZWxlY3QgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDIxNC4zIDMxLjglIDkxLjQlKSIsImhzbCgyMTcuMiAzMi42JSAxNy41JSkiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIHBhZGRpbmc6IDAgMTJweDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDEwMCUpIiwiaHNsKDIyNCA3MS40JSA0LjElKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMjQgNzEuNCUgNC4xJSkiLCJoc2woMjEwIDIwJSA5OCUpIil9OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQoKICAgICAgLyogQWN0aW9uIGJ1dHRvbnMgKi8KICAgICAgLmNhbGVuZGFyLWFjdGlvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgbWFyZ2luLXRvcDogMTJweDsKICAgICAgICBwYWRkaW5nLXRvcDogMTJweDsKICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgyMTQuMyAzMS44JSA5MS40JSkiLCJoc2woMjE3LjIgMzIuNiUgMTcuNSUpIil9OwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbiB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBoZWlnaHQ6IDM2cHg7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC50b2RheS1idXR0b24gewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxMDAlKSIsImhzbCgyMjQgNzEuNCUgNC4xJSkiKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgyMTQuMyAzMS44JSA5MS40JSkiLCJoc2woMjE3LjIgMzIuNiUgMTcuNSUpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIyNCA3MS40JSA0LjElKSIsImhzbCgyMTAgMjAlIDk4JSkiKX07CiAgICAgIH0KCiAgICAgIC50b2RheS1idXR0b246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDIwJSA5OCUpIiwiaHNsKDIxNSAyNy45JSAxNi45JSkiKX07CiAgICAgIH0KCiAgICAgIC5jbGVhci1hY3Rpb24tYnV0dG9uIHsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMjAgOC45JSA0Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDY1LjElKSIpfTsKICAgICAgfQoKICAgICAgLmNsZWFyLWFjdGlvbi1idXR0b246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCA3Mi4yJSA1MC42JSAvIDAuMSkiLCJoc2woMCA2Mi44JSAzMC42JSAvIDAuMSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCA3Mi4yJSA1MC42JSkiLCJoc2woMCA2Mi44JSAzMC42JSkiKX07CiAgICAgIH0KICAgIGBdO3N0YXRpYyBNT05USF9OQU1FUz1bIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl07c3RhdGljIFRJTUVaT05FUz1be3ZhbHVlOiJVVEMiLGxhYmVsOiJVVEMgKENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lKSJ9LHt2YWx1ZToiQW1lcmljYS9OZXdfWW9yayIsbGFiZWw6IkVhc3Rlcm4gVGltZSAoVVMgJiBDYW5hZGEpIn0se3ZhbHVlOiJBbWVyaWNhL0NoaWNhZ28iLGxhYmVsOiJDZW50cmFsIFRpbWUgKFVTICYgQ2FuYWRhKSJ9LHt2YWx1ZToiQW1lcmljYS9EZW52ZXIiLGxhYmVsOiJNb3VudGFpbiBUaW1lIChVUyAmIENhbmFkYSkifSx7dmFsdWU6IkFtZXJpY2EvTG9zX0FuZ2VsZXMiLGxhYmVsOiJQYWNpZmljIFRpbWUgKFVTICYgQ2FuYWRhKSJ9LHt2YWx1ZToiRXVyb3BlL0xvbmRvbiIsbGFiZWw6IkxvbmRvbiJ9LHt2YWx1ZToiRXVyb3BlL1BhcmlzIixsYWJlbDoiUGFyaXMifSx7dmFsdWU6IkV1cm9wZS9CZXJsaW4iLGxhYmVsOiJCZXJsaW4ifSx7dmFsdWU6IkV1cm9wZS9Nb3Njb3ciLGxhYmVsOiJNb3Njb3cifSx7dmFsdWU6IkFzaWEvRHViYWkiLGxhYmVsOiJEdWJhaSJ9LHt2YWx1ZToiQXNpYS9Lb2xrYXRhIixsYWJlbDoiSW5kaWEgU3RhbmRhcmQgVGltZSJ9LHt2YWx1ZToiQXNpYS9TaGFuZ2hhaSIsbGFiZWw6IkNoaW5hIFN0YW5kYXJkIFRpbWUifSx7dmFsdWU6IkFzaWEvVG9reW8iLGxhYmVsOiJUb2t5byJ9LHt2YWx1ZToiQXVzdHJhbGlhL1N5ZG5leSIsbGFiZWw6IlN5ZG5leSJ9LHt2YWx1ZToiUGFjaWZpYy9BdWNrbGFuZCIsbGFiZWw6IkF1Y2tsYW5kIn1dO3JlbmRlcigpe2lmKCF0aGlzLnRyaWdnZXJSZWN0KXJldHVybiB3YGA7bGV0IHZlPXRoaXMuY29tcHV0ZVBvc2l0aW9uU3R5bGUoKSxiZT10aGlzLndlZWtTdGFydHNPbj09PTE/WyJNbyIsIlR1IiwiV2UiLCJUaCIsIkZyIiwiU2EiLCJTdSJdOlsiU3UiLCJNbyIsIlR1IiwiV2UiLCJUaCIsIkZyIiwiU2EiXSxFZT10aGlzLmdldERheXNJbk1vbnRoKCksamU9dGhpcy5zZWxlY3RlZEhvdXI8MTI7cmV0dXJuIHdgCiAgICAgIDxkaXYKICAgICAgICBjbGFzcz0iY2FsZW5kYXItcG9wdXAgJHt0aGlzLnZpc2libGU/InNob3ciOiIifSAke3RoaXMub3BlbnNUb1RvcD8idG9wIjoiYm90dG9tIn0iCiAgICAgICAgc3R5bGU9IiR7dmV9OyB6LWluZGV4OiAke3RoaXMubWVudVpJbmRleH07IgogICAgICA+CiAgICAgICAgPGRpdiBjbGFzcz0iY2FsZW5kYXItaGVhZGVyIj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9Im5hdi1idXR0b24iIEBjbGljaz0ke3RoaXMucHJldmlvdXNNb250aH0+CiAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOmNoZXZyb25MZWZ0IiBpY29uU2l6ZT0iMTYiPjwvZGVlcy1pY29uPgogICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJtb250aC15ZWFyLWRpc3BsYXkiPgogICAgICAgICAgICAke0NlLk1PTlRIX05BTUVTW3RoaXMudmlld0RhdGUuZ2V0TW9udGgoKV19ICR7dGhpcy52aWV3RGF0ZS5nZXRGdWxsWWVhcigpfQogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJuYXYtYnV0dG9uIiBAY2xpY2s9JHt0aGlzLm5leHRNb250aH0+CiAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOmNoZXZyb25SaWdodCIgaWNvblNpemU9IjE2Ij48L2RlZXMtaWNvbj4KICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJ3ZWVrZGF5cyI+CiAgICAgICAgICAke2JlLm1hcChXZT0+d2A8ZGl2IGNsYXNzPSJ3ZWVrZGF5Ij4ke1dlfTwvZGl2PmApfQogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJkYXlzLWdyaWQiPgogICAgICAgICAgJHtFZS5tYXAoV2U9PntsZXQgc3Q9dGhpcy5pc1RvZGF5KFdlKSxNZT10aGlzLmlzU2VsZWN0ZWQoV2UpLGdlPVdlLmdldE1vbnRoKCkhPT10aGlzLnZpZXdEYXRlLmdldE1vbnRoKCksSWU9dGhpcy5pc0RheURpc2FibGVkKFdlKSxjZT10aGlzLmdldEV2ZW50c0ZvckRhdGUoV2UpLGRlPWNlLmxlbmd0aD4wLExlPWNlLnJlZHVjZSgoS2UsWWUpPT5LZSsoWWUuY291bnR8fDEpLDApO3JldHVybiB3YAogICAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSJkYXkgJHtnZT8ib3RoZXItbW9udGgiOiIifSAke3N0PyJ0b2RheSI6IiJ9ICR7TWU/InNlbGVjdGVkIjoiIn0gJHtJZT8iZGlzYWJsZWQiOiIifSAke2RlPyJoYXMtZXZlbnQiOiIifSIKICAgICAgICAgICAgICAgIEBjbGljaz0keygpPT4hSWUmJnRoaXMuaGFuZGxlU2VsZWN0RGF0ZShXZSl9CiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgJHtXZS5nZXREYXRlKCl9CiAgICAgICAgICAgICAgICAke2RlP3dgCiAgICAgICAgICAgICAgICAgICR7TGU+Mz93YAogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImV2ZW50LWNvdW50Ij4ke0xlfTwvZGl2PgogICAgICAgICAgICAgICAgICBgOndgCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZXZlbnQtaW5kaWNhdG9yIj4KICAgICAgICAgICAgICAgICAgICAgICR7Y2Uuc2xpY2UoMCwzKS5tYXAoS2U9PndgCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImV2ZW50LWRvdCAke0tlLnR5cGV8fCJpbmZvIn0iPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgYCl9CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIGB9CiAgICAgICAgICAgICAgICAgICR7Y2VbMF0udGl0bGU/d2AKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJldmVudC10b29sdGlwIj4KICAgICAgICAgICAgICAgICAgICAgICR7Y2VbMF0udGl0bGV9CiAgICAgICAgICAgICAgICAgICAgICAke0xlPjE/d2AgKCske0xlLTF9IG1vcmUpYDoiIn0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGB9KX0KICAgICAgICA8L2Rpdj4KCiAgICAgICAgJHt0aGlzLmVuYWJsZVRpbWU/d2AKICAgICAgICAgIDxkaXYgY2xhc3M9InRpbWUtc2VsZWN0b3IiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aW1lLXNlbGVjdG9yLXRpdGxlIj5UaW1lPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpbWUtaW5wdXRzIj4KICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBjbGFzcz0idGltZS1pbnB1dCIKICAgICAgICAgICAgICAgIC52YWx1ZT0ke3RoaXMudGltZUZvcm1hdD09PSIxMmgiPyh0aGlzLnNlbGVjdGVkSG91cj09PTA/MTI6dGhpcy5zZWxlY3RlZEhvdXI+MTI/dGhpcy5zZWxlY3RlZEhvdXItMTI6dGhpcy5zZWxlY3RlZEhvdXIpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpOnRoaXMuc2VsZWN0ZWRIb3VyLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfQogICAgICAgICAgICAgICAgQGlucHV0PSR7dGhpcy5oYW5kbGVIb3VySW5wdXR9CiAgICAgICAgICAgICAgICBtaW49IiR7dGhpcy50aW1lRm9ybWF0PT09IjEyaCI/MTowfSIKICAgICAgICAgICAgICAgIG1heD0iJHt0aGlzLnRpbWVGb3JtYXQ9PT0iMTJoIj8xMjoyM30iCiAgICAgICAgICAgICAgLz4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGltZS1zZXBhcmF0b3IiPjo8L3NwYW4+CiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgY2xhc3M9InRpbWUtaW5wdXQiCiAgICAgICAgICAgICAgICAudmFsdWU9JHt0aGlzLnNlbGVjdGVkTWludXRlLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfQogICAgICAgICAgICAgICAgQGlucHV0PSR7dGhpcy5oYW5kbGVNaW51dGVJbnB1dH0KICAgICAgICAgICAgICAgIG1pbj0iMCIgbWF4PSI1OSIgc3RlcD0iJHt0aGlzLm1pbnV0ZUluY3JlbWVudHx8MX0iCiAgICAgICAgICAgICAgLz4KICAgICAgICAgICAgICAke3RoaXMudGltZUZvcm1hdD09PSIxMmgiP3dgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhbS1wbS1zZWxlY3RvciI+CiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImFtLXBtLWJ1dHRvbiAke2plPyJzZWxlY3RlZCI6IiJ9IiBAY2xpY2s9JHsoKT0+dGhpcy5zZXRBTVBNKCJhbSIpfT5BTTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJhbS1wbS1idXR0b24gJHtqZT8iIjoic2VsZWN0ZWQifSIgQGNsaWNrPSR7KCk9PnRoaXMuc2V0QU1QTSgicG0iKX0+UE08L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgYDoiIn0KCiAgICAgICAgJHt0aGlzLmVuYWJsZVRpbWV6b25lP3dgCiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aW1lem9uZS1zZWxlY3RvciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpbWV6b25lLXNlbGVjdG9yLXRpdGxlIj5UaW1lem9uZTwvZGl2PgogICAgICAgICAgICA8c2VsZWN0IGNsYXNzPSJ0aW1lem9uZS1zZWxlY3QiIC52YWx1ZT0ke3RoaXMudGltZXpvbmV9IEBjaGFuZ2U9JHt0aGlzLmhhbmRsZVRpbWV6b25lQ2hhbmdlfT4KICAgICAgICAgICAgICAke0NlLlRJTUVaT05FUy5tYXAoV2U9PndgCiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIke1dlLnZhbHVlfSIgP3NlbGVjdGVkPSR7V2UudmFsdWU9PT10aGlzLnRpbWV6b25lfT4ke1dlLmxhYmVsfTwvb3B0aW9uPgogICAgICAgICAgICAgIGApfQogICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIGA6IiJ9CgogICAgICAgIDxkaXYgY2xhc3M9ImNhbGVuZGFyLWFjdGlvbnMiPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiB0b2RheS1idXR0b24iIEBjbGljaz0ke3RoaXMuaGFuZGxlU2VsZWN0VG9kYXl9PlRvZGF5PC9idXR0b24+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJhY3Rpb24tYnV0dG9uIGNsZWFyLWFjdGlvbi1idXR0b24iIEBjbGljaz0ke3RoaXMuaGFuZGxlQ2xlYXJ9PkNsZWFyPC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1jb21wdXRlUG9zaXRpb25TdHlsZSgpe2xldCB2ZT10aGlzLnRyaWdnZXJSZWN0LGJlPXZlLmxlZnQ7aWYodGhpcy5vcGVuc1RvVG9wKXtsZXQgRWU9d2luZG93LmlubmVySGVpZ2h0LXZlLnRvcCs0O3JldHVybmBsZWZ0OiAke2JlfXB4OyBib3R0b206ICR7RWV9cHg7IHRvcDogYXV0b2B9ZWxzZXtsZXQgRWU9dmUuYm90dG9tKzQ7cmV0dXJuYGxlZnQ6ICR7YmV9cHg7IHRvcDogJHtFZX1weGB9fWdldERheXNJbk1vbnRoKCl7bGV0IHZlPXRoaXMudmlld0RhdGUuZ2V0RnVsbFllYXIoKSxiZT10aGlzLnZpZXdEYXRlLmdldE1vbnRoKCksRWU9bmV3IERhdGUodmUsYmUsMSksamU9bmV3IERhdGUodmUsYmUrMSwwKSxXZT1bXSxzdD10aGlzLndlZWtTdGFydHNPbj09PTE/RWUuZ2V0RGF5KCk9PT0wPzY6RWUuZ2V0RGF5KCktMTpFZS5nZXREYXkoKTtmb3IobGV0IGdlPXN0O2dlPjA7Z2UtLSlXZS5wdXNoKG5ldyBEYXRlKHZlLGJlLDEtZ2UpKTtmb3IobGV0IGdlPTE7Z2U8PWplLmdldERhdGUoKTtnZSsrKVdlLnB1c2gobmV3IERhdGUodmUsYmUsZ2UpKTtsZXQgTWU9NDItV2UubGVuZ3RoO2ZvcihsZXQgZ2U9MTtnZTw9TWU7Z2UrKylXZS5wdXNoKG5ldyBEYXRlKHZlLGJlKzEsZ2UpKTtyZXR1cm4gV2V9aXNUb2RheSh2ZSl7bGV0IGJlPW5ldyBEYXRlO3JldHVybiB2ZS5nZXREYXRlKCk9PT1iZS5nZXREYXRlKCkmJnZlLmdldE1vbnRoKCk9PT1iZS5nZXRNb250aCgpJiZ2ZS5nZXRGdWxsWWVhcigpPT09YmUuZ2V0RnVsbFllYXIoKX1pc1NlbGVjdGVkKHZlKXtyZXR1cm4gdGhpcy5zZWxlY3RlZERhdGU/dmUuZ2V0RGF0ZSgpPT09dGhpcy5zZWxlY3RlZERhdGUuZ2V0RGF0ZSgpJiZ2ZS5nZXRNb250aCgpPT09dGhpcy5zZWxlY3RlZERhdGUuZ2V0TW9udGgoKSYmdmUuZ2V0RnVsbFllYXIoKT09PXRoaXMuc2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKCk6ITF9aXNEYXlEaXNhYmxlZCh2ZSl7aWYodGhpcy5taW5EYXRlKXtsZXQgYmU9bmV3IERhdGUodGhpcy5taW5EYXRlKTtpZih2ZTxiZSlyZXR1cm4hMH1pZih0aGlzLm1heERhdGUpe2xldCBiZT1uZXcgRGF0ZSh0aGlzLm1heERhdGUpO2lmKHZlPmJlKXJldHVybiEwfXJldHVybiB0aGlzLmRpc2FibGVkRGF0ZXM/Lmxlbmd0aD90aGlzLmRpc2FibGVkRGF0ZXMuc29tZShiZT0+e3RyeXtsZXQgRWU9bmV3IERhdGUoYmUpO3JldHVybiB2ZS5nZXREYXRlKCk9PT1FZS5nZXREYXRlKCkmJnZlLmdldE1vbnRoKCk9PT1FZS5nZXRNb250aCgpJiZ2ZS5nZXRGdWxsWWVhcigpPT09RWUuZ2V0RnVsbFllYXIoKX1jYXRjaHtyZXR1cm4hMX19KTohMX1nZXRFdmVudHNGb3JEYXRlKHZlKXtpZighdGhpcy5ldmVudHM/Lmxlbmd0aClyZXR1cm5bXTtsZXQgYmU9YCR7dmUuZ2V0RnVsbFllYXIoKX0tJHsodmUuZ2V0TW9udGgoKSsxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX0tJHt2ZS5nZXREYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9YDtyZXR1cm4gdGhpcy5ldmVudHMuZmlsdGVyKEVlPT5FZS5kYXRlPT09YmUpfXByZXZpb3VzTW9udGgoKXt0aGlzLnZpZXdEYXRlPW5ldyBEYXRlKHRoaXMudmlld0RhdGUuZ2V0RnVsbFllYXIoKSx0aGlzLnZpZXdEYXRlLmdldE1vbnRoKCktMSwxKX1uZXh0TW9udGgoKXt0aGlzLnZpZXdEYXRlPW5ldyBEYXRlKHRoaXMudmlld0RhdGUuZ2V0RnVsbFllYXIoKSx0aGlzLnZpZXdEYXRlLmdldE1vbnRoKCkrMSwxKX1oYW5kbGVTZWxlY3REYXRlKHZlKXt0aGlzLnNlbGVjdGVkRGF0ZT1uZXcgRGF0ZSh2ZS5nZXRGdWxsWWVhcigpLHZlLmdldE1vbnRoKCksdmUuZ2V0RGF0ZSgpLHRoaXMuc2VsZWN0ZWRIb3VyLHRoaXMuc2VsZWN0ZWRNaW51dGUpLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImRhdGUtc2VsZWN0ZWQiLHtkZXRhaWw6dGhpcy5zZWxlY3RlZERhdGV9KSksdGhpcy5lbmFibGVUaW1lfHx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjbG9zZS1yZXF1ZXN0IikpfWhhbmRsZVNlbGVjdFRvZGF5KCl7bGV0IHZlPW5ldyBEYXRlO3RoaXMuc2VsZWN0ZWREYXRlPXZlLHRoaXMudmlld0RhdGU9bmV3IERhdGUodmUpLHRoaXMuc2VsZWN0ZWRIb3VyPXZlLmdldEhvdXJzKCksdGhpcy5zZWxlY3RlZE1pbnV0ZT12ZS5nZXRNaW51dGVzKCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiZGF0ZS1zZWxlY3RlZCIse2RldGFpbDp0aGlzLnNlbGVjdGVkRGF0ZX0pKSx0aGlzLmVuYWJsZVRpbWV8fHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNsb3NlLXJlcXVlc3QiKSl9aGFuZGxlQ2xlYXIoKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJkYXRlLWNsZWFyZWQiKSksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY2xvc2UtcmVxdWVzdCIpKX1oYW5kbGVIb3VySW5wdXQ9aSh2ZT0+e2xldCBiZT12ZS50YXJnZXQsRWU9cGFyc2VJbnQoYmUudmFsdWUpfHwwO3RoaXMudGltZUZvcm1hdD09PSIxMmgiPyhFZT1NYXRoLm1heCgxLE1hdGgubWluKDEyLEVlKSksdGhpcy5zZWxlY3RlZEhvdXI+PTEyJiZFZSE9PTEyP3RoaXMuc2VsZWN0ZWRIb3VyPUVlKzEyOnRoaXMuc2VsZWN0ZWRIb3VyPDEyJiZFZT09PTEyP3RoaXMuc2VsZWN0ZWRIb3VyPTA6dGhpcy5zZWxlY3RlZEhvdXI9RWUpOnRoaXMuc2VsZWN0ZWRIb3VyPU1hdGgubWF4KDAsTWF0aC5taW4oMjMsRWUpKSx0aGlzLmVtaXRUaW1lVXBkYXRlKCl9LCJoYW5kbGVIb3VySW5wdXQiKTtoYW5kbGVNaW51dGVJbnB1dD1pKHZlPT57bGV0IGJlPXZlLnRhcmdldCxFZT1wYXJzZUludChiZS52YWx1ZSl8fDA7RWU9TWF0aC5tYXgoMCxNYXRoLm1pbig1OSxFZSkpLHRoaXMubWludXRlSW5jcmVtZW50PjEmJihFZT1NYXRoLnJvdW5kKEVlL3RoaXMubWludXRlSW5jcmVtZW50KSp0aGlzLm1pbnV0ZUluY3JlbWVudCksdGhpcy5zZWxlY3RlZE1pbnV0ZT1FZSx0aGlzLmVtaXRUaW1lVXBkYXRlKCl9LCJoYW5kbGVNaW51dGVJbnB1dCIpO3NldEFNUE0odmUpe3ZlPT09ImFtIiYmdGhpcy5zZWxlY3RlZEhvdXI+PTEyP3RoaXMuc2VsZWN0ZWRIb3VyLT0xMjp2ZT09PSJwbSImJnRoaXMuc2VsZWN0ZWRIb3VyPDEyJiYodGhpcy5zZWxlY3RlZEhvdXIrPTEyKSx0aGlzLmVtaXRUaW1lVXBkYXRlKCl9aGFuZGxlVGltZXpvbmVDaGFuZ2U9aSh2ZT0+e3RoaXMudGltZXpvbmU9dmUudGFyZ2V0LnZhbHVlLHRoaXMuZW1pdFRpbWVVcGRhdGUoKX0sImhhbmRsZVRpbWV6b25lQ2hhbmdlIik7ZW1pdFRpbWVVcGRhdGUoKXt0aGlzLnNlbGVjdGVkRGF0ZSYmKHRoaXMuc2VsZWN0ZWREYXRlPW5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKCksdGhpcy5zZWxlY3RlZERhdGUuZ2V0TW9udGgoKSx0aGlzLnNlbGVjdGVkRGF0ZS5nZXREYXRlKCksdGhpcy5zZWxlY3RlZEhvdXIsdGhpcy5zZWxlY3RlZE1pbnV0ZSksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiZGF0ZS1zZWxlY3RlZCIse2RldGFpbDp0aGlzLnNlbGVjdGVkRGF0ZX0pKSl9YXN5bmMgc2hvdygpe3RoaXMud2luZG93TGF5ZXI9YXdhaXQgUm8uY3JlYXRlQW5kU2hvdygpLHRoaXMud2luZG93TGF5ZXIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY2xvc2UtcmVxdWVzdCIpKX0pLHRoaXMubWVudVpJbmRleD1fYS5nZXROZXh0WkluZGV4KCksX2EucmVnaXN0ZXIodGhpcyx0aGlzLm1lbnVaSW5kZXgpLHRoaXMuc3R5bGUuekluZGV4PXRoaXMubWVudVpJbmRleC50b1N0cmluZygpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcyksYXdhaXQgdXQuc21hcnRkZWxheS5kZWxheUZvcigwKSx0aGlzLnZpc2libGU9ITAsd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5oYW5kbGVTY3JvbGxPclJlc2l6ZSx7Y2FwdHVyZTohMCxwYXNzaXZlOiEwfSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5oYW5kbGVTY3JvbGxPclJlc2l6ZSx7cGFzc2l2ZTohMH0pfWFzeW5jIGhpZGUoKXt0aGlzLmlzRGVzdHJveWluZ3x8KHRoaXMuaXNEZXN0cm95aW5nPSEwLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMuaGFuZGxlU2Nyb2xsT3JSZXNpemUse2NhcHR1cmU6ITB9KSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLmhhbmRsZVNjcm9sbE9yUmVzaXplKSxfYS51bnJlZ2lzdGVyKHRoaXMpLHRoaXMud2luZG93TGF5ZXImJih0aGlzLndpbmRvd0xheWVyLmRlc3Ryb3koKSx0aGlzLndpbmRvd0xheWVyPW51bGwpLHRoaXMudmlzaWJsZT0hMSxhd2FpdCB1dC5zbWFydGRlbGF5LmRlbGF5Rm9yKDE1MCksdGhpcy5wYXJlbnRFbGVtZW50JiZ0aGlzLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcyksdGhpcy5pc0Rlc3Ryb3lpbmc9ITEpfWhhbmRsZVNjcm9sbE9yUmVzaXplPWkoKCk9Pnt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJyZXBvc2l0aW9uLXJlcXVlc3QiKSl9LCJoYW5kbGVTY3JvbGxPclJlc2l6ZSIpO2FzeW5jIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLmhhbmRsZVNjcm9sbE9yUmVzaXplLHtjYXB0dXJlOiEwfSksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5oYW5kbGVTY3JvbGxPclJlc2l6ZSksX2EudW5yZWdpc3Rlcih0aGlzKX1zdGF0aWN7RGEoYSx0KX19O3JldHVybiBDZT1hfSkoKX0pO3ZhciBlbyxLYSxVb3QscW90PWcoKCk9PntwZSgpO0VpKCk7cGJhKCk7ZmJhKCk7Z2JhKCk7Vm90KCk7R2EoKTtieCgpO2VvPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxLYT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sVW90PSgoKT0+e2xldCBzPVtuZSgiZGVlcy1pbnB1dC1kYXRlcGlja2VyIildLGUsdD1bXSxhLHI9QnQsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W10sSCxrPVtdLFM9W10sSSxQPVtdLFI9W10sSyxWPVtdLFc9W10sbWUsQj1bXSxVPVtdLGhlLEY9W10saj1bXSx1ZSxsZT1bXSxRPVtdLGllLHRlPVtdLGVlPVtdLGtlLFg9W10sWj1bXSx5ZSxxPVtdLEE9W10sc2Usb2U9W10sYWU9W10sVGUsUmU9W10sQmU9W107dmFyIEdlPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzSW5wdXREYXRlcGlja2VyIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IERlPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6U3RyaW5nfSldLHA9W0woe3R5cGU6Qm9vbGVhbn0pXSxjPVtMKHt0eXBlOlN0cmluZ30pXSx4PVtMKHt0eXBlOk51bWJlcn0pXSx5PVtMKHt0eXBlOlN0cmluZ30pXSxOPVtMKHt0eXBlOlN0cmluZ30pXSxPPVtMKHt0eXBlOlN0cmluZ30pXSxIPVtMKHt0eXBlOkFycmF5fSldLEk9W0woe3R5cGU6TnVtYmVyfSldLEs9W0woe3R5cGU6U3RyaW5nfSldLG1lPVtMKHt0eXBlOkJvb2xlYW59KV0saGU9W0woe3R5cGU6U3RyaW5nfSldLHVlPVtMKHt0eXBlOkFycmF5fSldLGllPVtZKCldLGtlPVtZKCldLHllPVtZKCldLHNlPVtZKCldLFRlPVtZKCldLGVvKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidmFsdWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoX2U9PiJ2YWx1ZSJpbiBfZSwiaGFzIiksZ2V0OmkoX2U9Pl9lLnZhbHVlLCJnZXQiKSxzZXQ6aSgoX2UsQ2UpPT57X2UudmFsdWU9Q2V9LCJzZXQiKX0sbWV0YWRhdGE6RGV9LG8sbCksZW8odGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJlbmFibGVUaW1lIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF9lPT4iZW5hYmxlVGltZSJpbiBfZSwiaGFzIiksZ2V0OmkoX2U9Pl9lLmVuYWJsZVRpbWUsImdldCIpLHNldDppKChfZSxDZSk9PntfZS5lbmFibGVUaW1lPUNlfSwic2V0Iil9LG1ldGFkYXRhOkRlfSxkLHUpLGVvKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidGltZUZvcm1hdCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfZT0+InRpbWVGb3JtYXQiaW4gX2UsImhhcyIpLGdldDppKF9lPT5fZS50aW1lRm9ybWF0LCJnZXQiKSxzZXQ6aSgoX2UsQ2UpPT57X2UudGltZUZvcm1hdD1DZX0sInNldCIpfSxtZXRhZGF0YTpEZX0sYix2KSxlbyh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1pbnV0ZUluY3JlbWVudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfZT0+Im1pbnV0ZUluY3JlbWVudCJpbiBfZSwiaGFzIiksZ2V0OmkoX2U9Pl9lLm1pbnV0ZUluY3JlbWVudCwiZ2V0Iiksc2V0OmkoKF9lLENlKT0+e19lLm1pbnV0ZUluY3JlbWVudD1DZX0sInNldCIpfSxtZXRhZGF0YTpEZX0sbSxmKSxlbyh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImRhdGVGb3JtYXQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoX2U9PiJkYXRlRm9ybWF0ImluIF9lLCJoYXMiKSxnZXQ6aShfZT0+X2UuZGF0ZUZvcm1hdCwiZ2V0Iiksc2V0OmkoKF9lLENlKT0+e19lLmRhdGVGb3JtYXQ9Q2V9LCJzZXQiKX0sbWV0YWRhdGE6RGV9LE0seiksZW8odGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtaW5EYXRlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF9lPT4ibWluRGF0ZSJpbiBfZSwiaGFzIiksZ2V0OmkoX2U9Pl9lLm1pbkRhdGUsImdldCIpLHNldDppKChfZSxDZSk9PntfZS5taW5EYXRlPUNlfSwic2V0Iil9LG1ldGFkYXRhOkRlfSxDLF8pLGVvKHRoaXMsbnVsbCxPLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWF4RGF0ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfZT0+Im1heERhdGUiaW4gX2UsImhhcyIpLGdldDppKF9lPT5fZS5tYXhEYXRlLCJnZXQiKSxzZXQ6aSgoX2UsQ2UpPT57X2UubWF4RGF0ZT1DZX0sInNldCIpfSxtZXRhZGF0YTpEZX0sJCxFKSxlbyh0aGlzLG51bGwsSCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImRpc2FibGVkRGF0ZXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoX2U9PiJkaXNhYmxlZERhdGVzImluIF9lLCJoYXMiKSxnZXQ6aShfZT0+X2UuZGlzYWJsZWREYXRlcywiZ2V0Iiksc2V0OmkoKF9lLENlKT0+e19lLmRpc2FibGVkRGF0ZXM9Q2V9LCJzZXQiKX0sbWV0YWRhdGE6RGV9LGssUyksZW8odGhpcyxudWxsLEkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ3ZWVrU3RhcnRzT24iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoX2U9PiJ3ZWVrU3RhcnRzT24iaW4gX2UsImhhcyIpLGdldDppKF9lPT5fZS53ZWVrU3RhcnRzT24sImdldCIpLHNldDppKChfZSxDZSk9PntfZS53ZWVrU3RhcnRzT249Q2V9LCJzZXQiKX0sbWV0YWRhdGE6RGV9LFAsUiksZW8odGhpcyxudWxsLEsse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJwbGFjZWhvbGRlciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfZT0+InBsYWNlaG9sZGVyImluIF9lLCJoYXMiKSxnZXQ6aShfZT0+X2UucGxhY2Vob2xkZXIsImdldCIpLHNldDppKChfZSxDZSk9PntfZS5wbGFjZWhvbGRlcj1DZX0sInNldCIpfSxtZXRhZGF0YTpEZX0sVixXKSxlbyh0aGlzLG51bGwsbWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJlbmFibGVUaW1lem9uZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfZT0+ImVuYWJsZVRpbWV6b25lImluIF9lLCJoYXMiKSxnZXQ6aShfZT0+X2UuZW5hYmxlVGltZXpvbmUsImdldCIpLHNldDppKChfZSxDZSk9PntfZS5lbmFibGVUaW1lem9uZT1DZX0sInNldCIpfSxtZXRhZGF0YTpEZX0sQixVKSxlbyh0aGlzLG51bGwsaGUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0aW1lem9uZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfZT0+InRpbWV6b25lImluIF9lLCJoYXMiKSxnZXQ6aShfZT0+X2UudGltZXpvbmUsImdldCIpLHNldDppKChfZSxDZSk9PntfZS50aW1lem9uZT1DZX0sInNldCIpfSxtZXRhZGF0YTpEZX0sRixqKSxlbyh0aGlzLG51bGwsdWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJldmVudHMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoX2U9PiJldmVudHMiaW4gX2UsImhhcyIpLGdldDppKF9lPT5fZS5ldmVudHMsImdldCIpLHNldDppKChfZSxDZSk9PntfZS5ldmVudHM9Q2V9LCJzZXQiKX0sbWV0YWRhdGE6RGV9LGxlLFEpLGVvKHRoaXMsbnVsbCxpZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImlzT3BlbmVkIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF9lPT4iaXNPcGVuZWQiaW4gX2UsImhhcyIpLGdldDppKF9lPT5fZS5pc09wZW5lZCwiZ2V0Iiksc2V0OmkoKF9lLENlKT0+e19lLmlzT3BlbmVkPUNlfSwic2V0Iil9LG1ldGFkYXRhOkRlfSx0ZSxlZSksZW8odGhpcyxudWxsLGtlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VsZWN0ZWREYXRlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF9lPT4ic2VsZWN0ZWREYXRlImluIF9lLCJoYXMiKSxnZXQ6aShfZT0+X2Uuc2VsZWN0ZWREYXRlLCJnZXQiKSxzZXQ6aSgoX2UsQ2UpPT57X2Uuc2VsZWN0ZWREYXRlPUNlfSwic2V0Iil9LG1ldGFkYXRhOkRlfSxYLFopLGVvKHRoaXMsbnVsbCx5ZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InZpZXdEYXRlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF9lPT4idmlld0RhdGUiaW4gX2UsImhhcyIpLGdldDppKF9lPT5fZS52aWV3RGF0ZSwiZ2V0Iiksc2V0OmkoKF9lLENlKT0+e19lLnZpZXdEYXRlPUNlfSwic2V0Iil9LG1ldGFkYXRhOkRlfSxxLEEpLGVvKHRoaXMsbnVsbCxzZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlbGVjdGVkSG91ciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfZT0+InNlbGVjdGVkSG91ciJpbiBfZSwiaGFzIiksZ2V0OmkoX2U9Pl9lLnNlbGVjdGVkSG91ciwiZ2V0Iiksc2V0OmkoKF9lLENlKT0+e19lLnNlbGVjdGVkSG91cj1DZX0sInNldCIpfSxtZXRhZGF0YTpEZX0sb2UsYWUpLGVvKHRoaXMsbnVsbCxUZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlbGVjdGVkTWludXRlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF9lPT4ic2VsZWN0ZWRNaW51dGUiaW4gX2UsImhhcyIpLGdldDppKF9lPT5fZS5zZWxlY3RlZE1pbnV0ZSwiZ2V0Iiksc2V0OmkoKF9lLENlKT0+e19lLnNlbGVjdGVkTWludXRlPUNlfSwic2V0Iil9LG1ldGFkYXRhOkRlfSxSZSxCZSksZW8obnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6RGV9LG51bGwsdCksR2U9YT1lLnZhbHVlLERlJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOkRlfSl9c3RhdGljIGRlbW89dWJhO3N0YXRpYyBkZW1vR3JvdXBzPVsiSW5wdXQiXTsjZT1LYSh0aGlzLG8sIiIpO2dldCB2YWx1ZSgpe3JldHVybiB0aGlzLiNlfXNldCB2YWx1ZShEZSl7dGhpcy4jZT1EZX0jdD0oS2EodGhpcyxsKSxLYSh0aGlzLGQsITEpKTtnZXQgZW5hYmxlVGltZSgpe3JldHVybiB0aGlzLiN0fXNldCBlbmFibGVUaW1lKERlKXt0aGlzLiN0PURlfSNhPShLYSh0aGlzLHUpLEthKHRoaXMsYiwiMjRoIikpO2dldCB0aW1lRm9ybWF0KCl7cmV0dXJuIHRoaXMuI2F9c2V0IHRpbWVGb3JtYXQoRGUpe3RoaXMuI2E9RGV9I3M9KEthKHRoaXMsdiksS2EodGhpcyxtLDEpKTtnZXQgbWludXRlSW5jcmVtZW50KCl7cmV0dXJuIHRoaXMuI3N9c2V0IG1pbnV0ZUluY3JlbWVudChEZSl7dGhpcy4jcz1EZX0jaT0oS2EodGhpcyxmKSxLYSh0aGlzLE0sIllZWVktTU0tREQiKSk7Z2V0IGRhdGVGb3JtYXQoKXtyZXR1cm4gdGhpcy4jaX1zZXQgZGF0ZUZvcm1hdChEZSl7dGhpcy4jaT1EZX0jcj0oS2EodGhpcyx6KSxLYSh0aGlzLEMsIiIpKTtnZXQgbWluRGF0ZSgpe3JldHVybiB0aGlzLiNyfXNldCBtaW5EYXRlKERlKXt0aGlzLiNyPURlfSNvPShLYSh0aGlzLF8pLEthKHRoaXMsJCwiIikpO2dldCBtYXhEYXRlKCl7cmV0dXJuIHRoaXMuI299c2V0IG1heERhdGUoRGUpe3RoaXMuI289RGV9I249KEthKHRoaXMsRSksS2EodGhpcyxrLFtdKSk7Z2V0IGRpc2FibGVkRGF0ZXMoKXtyZXR1cm4gdGhpcy4jbn1zZXQgZGlzYWJsZWREYXRlcyhEZSl7dGhpcy4jbj1EZX0jbD0oS2EodGhpcyxTKSxLYSh0aGlzLFAsMSkpO2dldCB3ZWVrU3RhcnRzT24oKXtyZXR1cm4gdGhpcy4jbH1zZXQgd2Vla1N0YXJ0c09uKERlKXt0aGlzLiNsPURlfSNjPShLYSh0aGlzLFIpLEthKHRoaXMsViwiWVlZWS1NTS1ERCIpKTtnZXQgcGxhY2Vob2xkZXIoKXtyZXR1cm4gdGhpcy4jY31zZXQgcGxhY2Vob2xkZXIoRGUpe3RoaXMuI2M9RGV9I2Q9KEthKHRoaXMsVyksS2EodGhpcyxCLCExKSk7Z2V0IGVuYWJsZVRpbWV6b25lKCl7cmV0dXJuIHRoaXMuI2R9c2V0IGVuYWJsZVRpbWV6b25lKERlKXt0aGlzLiNkPURlfSN1PShLYSh0aGlzLFUpLEthKHRoaXMsRixJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmUpKTtnZXQgdGltZXpvbmUoKXtyZXR1cm4gdGhpcy4jdX1zZXQgdGltZXpvbmUoRGUpe3RoaXMuI3U9RGV9I3A9KEthKHRoaXMsaiksS2EodGhpcyxsZSxbXSkpO2dldCBldmVudHMoKXtyZXR1cm4gdGhpcy4jcH1zZXQgZXZlbnRzKERlKXt0aGlzLiNwPURlfSNoPShLYSh0aGlzLFEpLEthKHRoaXMsdGUsITEpKTtnZXQgaXNPcGVuZWQoKXtyZXR1cm4gdGhpcy4jaH1zZXQgaXNPcGVuZWQoRGUpe3RoaXMuI2g9RGV9I2Y9KEthKHRoaXMsZWUpLEthKHRoaXMsWCxudWxsKSk7Z2V0IHNlbGVjdGVkRGF0ZSgpe3JldHVybiB0aGlzLiNmfXNldCBzZWxlY3RlZERhdGUoRGUpe3RoaXMuI2Y9RGV9I209KEthKHRoaXMsWiksS2EodGhpcyxxLG5ldyBEYXRlKSk7Z2V0IHZpZXdEYXRlKCl7cmV0dXJuIHRoaXMuI219c2V0IHZpZXdEYXRlKERlKXt0aGlzLiNtPURlfSNnPShLYSh0aGlzLEEpLEthKHRoaXMsb2UsMCkpO2dldCBzZWxlY3RlZEhvdXIoKXtyZXR1cm4gdGhpcy4jZ31zZXQgc2VsZWN0ZWRIb3VyKERlKXt0aGlzLiNnPURlfSNiPShLYSh0aGlzLGFlKSxLYSh0aGlzLFJlLDApKTtnZXQgc2VsZWN0ZWRNaW51dGUoKXtyZXR1cm4gdGhpcy4jYn1zZXQgc2VsZWN0ZWRNaW51dGUoRGUpe3RoaXMuI2I9RGV9cG9wdXBJbnN0YW5jZT0oS2EodGhpcyxCZSksbnVsbCk7c3RhdGljIHN0eWxlcz1oYmE7cmVuZGVyKCl7cmV0dXJuIG1iYSh0aGlzKX1hc3luYyBmaXJzdFVwZGF0ZWQoKXtpZih0aGlzLnZhbHVlfHwodGhpcy52YWx1ZT0iIiksdGhpcy52YWx1ZSl0cnl7bGV0IERlPW5ldyBEYXRlKHRoaXMudmFsdWUpO2lzTmFOKERlLmdldFRpbWUoKSl8fCh0aGlzLnNlbGVjdGVkRGF0ZT1EZSx0aGlzLnZpZXdEYXRlPW5ldyBEYXRlKERlKSx0aGlzLnNlbGVjdGVkSG91cj1EZS5nZXRIb3VycygpLHRoaXMuc2VsZWN0ZWRNaW51dGU9RGUuZ2V0TWludXRlcygpKX1jYXRjaHt9ZWxzZXtsZXQgRGU9bmV3IERhdGU7dGhpcy52aWV3RGF0ZT1uZXcgRGF0ZShEZSksdGhpcy5zZWxlY3RlZEhvdXI9RGUuZ2V0SG91cnMoKSx0aGlzLnNlbGVjdGVkTWludXRlPTB9fWZvcm1hdERhdGUoRGUpe2lmKCFEZSlyZXR1cm4iIjt0cnl7bGV0IF9lPW5ldyBEYXRlKERlKTtpZihpc05hTihfZS5nZXRUaW1lKCkpKXJldHVybiIiO2xldCBDZT10aGlzLmRhdGVGb3JtYXQsdmU9X2UuZ2V0RGF0ZSgpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLGJlPShfZS5nZXRNb250aCgpKzEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLEVlPV9lLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKTtpZihDZT1DZS5yZXBsYWNlKCJZWVlZIixFZSksQ2U9Q2UucmVwbGFjZSgiWVkiLEVlLnNsaWNlKC0yKSksQ2U9Q2UucmVwbGFjZSgiTU0iLGJlKSxDZT1DZS5yZXBsYWNlKCJERCIsdmUpLHRoaXMuZW5hYmxlVGltZSl7bGV0IGplPV9lLmdldEhvdXJzKCksV2U9amU9PT0wPzEyOmplPjEyP2plLTEyOmplLHN0PV9lLmdldE1pbnV0ZXMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxNZT1qZT49MTI/IlBNIjoiQU0iO3RoaXMudGltZUZvcm1hdD09PSIxMmgiP0NlKz1gICR7V2V9OiR7c3R9ICR7TWV9YDpDZSs9YCAke2plLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfToke3N0fWB9aWYodGhpcy5lbmFibGVUaW1lem9uZSl7bGV0IHN0PW5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCJlbi1VUyIse3RpbWVab25lTmFtZToic2hvcnQiLHRpbWVab25lOnRoaXMudGltZXpvbmV9KS5mb3JtYXRUb1BhcnRzKF9lKS5maW5kKE1lPT5NZS50eXBlPT09InRpbWVab25lTmFtZSIpO3N0JiYoQ2UrPWAgJHtzdC52YWx1ZX1gKX1yZXR1cm4gQ2V9Y2F0Y2h7cmV0dXJuIiJ9fWFzeW5jIHRvZ2dsZUNhbGVuZGFyKCl7aWYodGhpcy5kaXNhYmxlZClyZXR1cm47aWYodGhpcy5pc09wZW5lZCl7dGhpcy5jbG9zZVBvcHVwKCk7cmV0dXJufXRoaXMuaXNPcGVuZWQ9ITA7bGV0IF9lPXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIuaW5wdXQtY29udGFpbmVyIikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksQ2U9d2luZG93LmlubmVySGVpZ2h0LV9lLmJvdHRvbSx2ZT1fZS50b3AsYmU9Q2U8NDAwJiZ2ZT5DZTt0aGlzLnBvcHVwSW5zdGFuY2V8fCh0aGlzLnBvcHVwSW5zdGFuY2U9bmV3IGpvdCksdGhpcy5wb3B1cEluc3RhbmNlLnRyaWdnZXJSZWN0PV9lLHRoaXMucG9wdXBJbnN0YW5jZS5vd25lckNvbXBvbmVudD10aGlzLHRoaXMucG9wdXBJbnN0YW5jZS5vcGVuc1RvVG9wPWJlLHRoaXMucG9wdXBJbnN0YW5jZS5lbmFibGVUaW1lPXRoaXMuZW5hYmxlVGltZSx0aGlzLnBvcHVwSW5zdGFuY2UudGltZUZvcm1hdD10aGlzLnRpbWVGb3JtYXQsdGhpcy5wb3B1cEluc3RhbmNlLm1pbnV0ZUluY3JlbWVudD10aGlzLm1pbnV0ZUluY3JlbWVudCx0aGlzLnBvcHVwSW5zdGFuY2Uud2Vla1N0YXJ0c09uPXRoaXMud2Vla1N0YXJ0c09uLHRoaXMucG9wdXBJbnN0YW5jZS5taW5EYXRlPXRoaXMubWluRGF0ZSx0aGlzLnBvcHVwSW5zdGFuY2UubWF4RGF0ZT10aGlzLm1heERhdGUsdGhpcy5wb3B1cEluc3RhbmNlLmRpc2FibGVkRGF0ZXM9dGhpcy5kaXNhYmxlZERhdGVzLHRoaXMucG9wdXBJbnN0YW5jZS5lbmFibGVUaW1lem9uZT10aGlzLmVuYWJsZVRpbWV6b25lLHRoaXMucG9wdXBJbnN0YW5jZS50aW1lem9uZT10aGlzLnRpbWV6b25lLHRoaXMucG9wdXBJbnN0YW5jZS5ldmVudHM9dGhpcy5ldmVudHMsdGhpcy5wb3B1cEluc3RhbmNlLnNlbGVjdGVkRGF0ZT10aGlzLnNlbGVjdGVkRGF0ZSx0aGlzLnBvcHVwSW5zdGFuY2Uudmlld0RhdGU9bmV3IERhdGUodGhpcy52aWV3RGF0ZSksdGhpcy5wb3B1cEluc3RhbmNlLnNlbGVjdGVkSG91cj10aGlzLnNlbGVjdGVkSG91cix0aGlzLnBvcHVwSW5zdGFuY2Uuc2VsZWN0ZWRNaW51dGU9dGhpcy5zZWxlY3RlZE1pbnV0ZSx0aGlzLnBvcHVwSW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcigiZGF0ZS1zZWxlY3RlZCIsdGhpcy5oYW5kbGVEYXRlU2VsZWN0ZWQpLHRoaXMucG9wdXBJbnN0YW5jZS5hZGRFdmVudExpc3RlbmVyKCJkYXRlLWNsZWFyZWQiLHRoaXMuaGFuZGxlRGF0ZUNsZWFyZWQpLHRoaXMucG9wdXBJbnN0YW5jZS5hZGRFdmVudExpc3RlbmVyKCJjbG9zZS1yZXF1ZXN0Iix0aGlzLmhhbmRsZUNsb3NlUmVxdWVzdCksdGhpcy5wb3B1cEluc3RhbmNlLmFkZEV2ZW50TGlzdGVuZXIoInJlcG9zaXRpb24tcmVxdWVzdCIsdGhpcy5oYW5kbGVSZXBvc2l0aW9uUmVxdWVzdCksYXdhaXQgdGhpcy5wb3B1cEluc3RhbmNlLnNob3coKX1jbG9zZVBvcHVwKCl7dGhpcy5pc09wZW5lZD0hMSx0aGlzLnBvcHVwSW5zdGFuY2UmJih0aGlzLnBvcHVwSW5zdGFuY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGF0ZS1zZWxlY3RlZCIsdGhpcy5oYW5kbGVEYXRlU2VsZWN0ZWQpLHRoaXMucG9wdXBJbnN0YW5jZS5yZW1vdmVFdmVudExpc3RlbmVyKCJkYXRlLWNsZWFyZWQiLHRoaXMuaGFuZGxlRGF0ZUNsZWFyZWQpLHRoaXMucG9wdXBJbnN0YW5jZS5yZW1vdmVFdmVudExpc3RlbmVyKCJjbG9zZS1yZXF1ZXN0Iix0aGlzLmhhbmRsZUNsb3NlUmVxdWVzdCksdGhpcy5wb3B1cEluc3RhbmNlLnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlcG9zaXRpb24tcmVxdWVzdCIsdGhpcy5oYW5kbGVSZXBvc2l0aW9uUmVxdWVzdCksdGhpcy5wb3B1cEluc3RhbmNlLmhpZGUoKSl9aGFuZGxlRGF0ZVNlbGVjdGVkPWkoRGU9PntsZXQgX2U9RGUuZGV0YWlsO3RoaXMuc2VsZWN0ZWREYXRlPV9lLHRoaXMuc2VsZWN0ZWRIb3VyPV9lLmdldEhvdXJzKCksdGhpcy5zZWxlY3RlZE1pbnV0ZT1fZS5nZXRNaW51dGVzKCksdGhpcy52aWV3RGF0ZT1uZXcgRGF0ZShfZSksdGhpcy52YWx1ZT10aGlzLmZvcm1hdFZhbHVlV2l0aFRpbWV6b25lKF9lKSx0aGlzLmNoYW5nZVN1YmplY3QubmV4dCh0aGlzKX0sImhhbmRsZURhdGVTZWxlY3RlZCIpO2hhbmRsZURhdGVDbGVhcmVkPWkoKCk9Pnt0aGlzLnZhbHVlPSIiLHRoaXMuc2VsZWN0ZWREYXRlPW51bGwsdGhpcy5jaGFuZ2VTdWJqZWN0Lm5leHQodGhpcyl9LCJoYW5kbGVEYXRlQ2xlYXJlZCIpO2hhbmRsZUNsb3NlUmVxdWVzdD1pKCgpPT57dGhpcy5jbG9zZVBvcHVwKCl9LCJoYW5kbGVDbG9zZVJlcXVlc3QiKTtoYW5kbGVSZXBvc2l0aW9uUmVxdWVzdD1pKCgpPT57aWYoIXRoaXMucG9wdXBJbnN0YW5jZXx8IXRoaXMuaXNPcGVuZWQpcmV0dXJuO2xldCBEZT10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLmlucHV0LWNvbnRhaW5lciIpO2lmKCFEZSlyZXR1cm47bGV0IF9lPURlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKF9lLmJvdHRvbTwwfHxfZS50b3A+d2luZG93LmlubmVySGVpZ2h0KXt0aGlzLmNsb3NlUG9wdXAoKTtyZXR1cm59bGV0IENlPXdpbmRvdy5pbm5lckhlaWdodC1fZS5ib3R0b20sdmU9X2UudG9wO3RoaXMucG9wdXBJbnN0YW5jZS5vcGVuc1RvVG9wPUNlPDQwMCYmdmU+Q2UsdGhpcy5wb3B1cEluc3RhbmNlLnRyaWdnZXJSZWN0PV9lfSwiaGFuZGxlUmVwb3NpdGlvblJlcXVlc3QiKTtoYW5kbGVLZXlkb3duKERlKXtEZS5rZXk9PT0iRW50ZXIifHxEZS5rZXk9PT0iICI/KERlLnByZXZlbnREZWZhdWx0KCksdGhpcy50b2dnbGVDYWxlbmRhcigpKTpEZS5rZXk9PT0iRXNjYXBlIiYmdGhpcy5pc09wZW5lZCYmKERlLnByZXZlbnREZWZhdWx0KCksdGhpcy5jbG9zZVBvcHVwKCkpfWNsZWFyVmFsdWUoRGUpe0RlLnN0b3BQcm9wYWdhdGlvbigpLHRoaXMudmFsdWU9IiIsdGhpcy5zZWxlY3RlZERhdGU9bnVsbCx0aGlzLmNoYW5nZVN1YmplY3QubmV4dCh0aGlzKX1oYW5kbGVNYW51YWxJbnB1dChEZSl7bGV0IENlPURlLnRhcmdldC52YWx1ZS50cmltKCk7aWYoIUNlKXt0aGlzLnZhbHVlPSIiLHRoaXMuc2VsZWN0ZWREYXRlPW51bGw7cmV0dXJufWxldCB2ZT10aGlzLnBhcnNlTWFudWFsRGF0ZShDZSk7dmUmJiFpc05hTih2ZS5nZXRUaW1lKCkpJiYodGhpcy52YWx1ZT12ZS50b0lTT1N0cmluZygpLHRoaXMuc2VsZWN0ZWREYXRlPXZlLHRoaXMudmlld0RhdGU9bmV3IERhdGUodmUpLHRoaXMuc2VsZWN0ZWRIb3VyPXZlLmdldEhvdXJzKCksdGhpcy5zZWxlY3RlZE1pbnV0ZT12ZS5nZXRNaW51dGVzKCksdGhpcy5jaGFuZ2VTdWJqZWN0Lm5leHQodGhpcykpfWhhbmRsZUlucHV0Qmx1cihEZSl7bGV0IF9lPURlLnRhcmdldCxDZT1fZS52YWx1ZS50cmltKCk7aWYoIUNlKXt0aGlzLnZhbHVlPSIiLHRoaXMuc2VsZWN0ZWREYXRlPW51bGwsdGhpcy5jaGFuZ2VTdWJqZWN0Lm5leHQodGhpcyk7cmV0dXJufWxldCB2ZT10aGlzLnBhcnNlTWFudWFsRGF0ZShDZSk7dmUmJiFpc05hTih2ZS5nZXRUaW1lKCkpPyh0aGlzLnZhbHVlPXZlLnRvSVNPU3RyaW5nKCksdGhpcy5zZWxlY3RlZERhdGU9dmUsdGhpcy52aWV3RGF0ZT1uZXcgRGF0ZSh2ZSksdGhpcy5zZWxlY3RlZEhvdXI9dmUuZ2V0SG91cnMoKSx0aGlzLnNlbGVjdGVkTWludXRlPXZlLmdldE1pbnV0ZXMoKSx0aGlzLmNoYW5nZVN1YmplY3QubmV4dCh0aGlzKSxfZS52YWx1ZT10aGlzLmZvcm1hdERhdGUodGhpcy52YWx1ZSkpOl9lLnZhbHVlPXRoaXMuZm9ybWF0RGF0ZSh0aGlzLnZhbHVlKX1wYXJzZU1hbnVhbERhdGUoRGUpe2lmKCFEZSlyZXR1cm4gbnVsbDtsZXQgX2U9RGUuc3BsaXQoIiAiKSxDZT1fZVswXSx2ZT1fZVsxXXx8IiIsYmU9bnVsbCxFZT1DZS5tYXRjaCgvXihcZHs0fSktKFxkezEsMn0pLShcZHsxLDJ9KSQvKTtpZihFZSl7bGV0W2plLFdlLHN0LE1lXT1FZTtiZT1uZXcgRGF0ZShwYXJzZUludChXZSkscGFyc2VJbnQoc3QpLTEscGFyc2VJbnQoTWUpKX1pZighYmUpe2xldCBqZT1DZS5tYXRjaCgvXihcZHsxLDJ9KVwuKFxkezEsMn0pXC4oXGR7NH0pJC8pO2lmKGplKXtsZXRbV2Usc3QsTWUsZ2VdPWplO2JlPW5ldyBEYXRlKHBhcnNlSW50KGdlKSxwYXJzZUludChNZSktMSxwYXJzZUludChzdCkpfX1pZighYmUpe2xldCBqZT1DZS5tYXRjaCgvXihcZHsxLDJ9KVwvKFxkezEsMn0pXC8oXGR7NH0pJC8pO2lmKGplKXtsZXRbV2Usc3QsTWUsZ2VdPWplO2JlPW5ldyBEYXRlKHBhcnNlSW50KGdlKSxwYXJzZUludChzdCktMSxwYXJzZUludChNZSkpfX1pZighYmV8fGlzTmFOKGJlLmdldFRpbWUoKSkpcmV0dXJuIG51bGw7aWYodmUpe2xldCBqZT12ZS5tYXRjaCgvXihcZHsxLDJ9KTooXGR7Mn0pJC8pO2lmKGplKXtsZXRbV2Usc3QsTWVdPWplO2JlLnNldEhvdXJzKHBhcnNlSW50KHN0KSksYmUuc2V0TWludXRlcyhwYXJzZUludChNZSkpfX1lbHNlIGlmKCF0aGlzLmVuYWJsZVRpbWUpe2xldCBqZT1uZXcgRGF0ZTtiZS5zZXRIb3VycyhqZS5nZXRIb3VycygpKSxiZS5zZXRNaW51dGVzKGplLmdldE1pbnV0ZXMoKSksYmUuc2V0U2Vjb25kcygwKSxiZS5zZXRNaWxsaXNlY29uZHMoMCl9cmV0dXJuIGJlfWZvcm1hdFZhbHVlV2l0aFRpbWV6b25lKERlKXtpZighdGhpcy5lbmFibGVUaW1lem9uZSlyZXR1cm4gRGUudG9JU09TdHJpbmcoKTtsZXQgQ2U9bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoImVuLVVTIix7eWVhcjoibnVtZXJpYyIsbW9udGg6IjItZGlnaXQiLGRheToiMi1kaWdpdCIsaG91cjoiMi1kaWdpdCIsbWludXRlOiIyLWRpZ2l0IixzZWNvbmQ6IjItZGlnaXQiLGhvdXIxMjohMSx0aW1lWm9uZTp0aGlzLnRpbWV6b25lLHRpbWVab25lTmFtZToic2hvcnQifSkuZm9ybWF0VG9QYXJ0cyhEZSksdmU9e307Q2UuZm9yRWFjaChqZT0+e3ZlW2plLnR5cGVdPWplLnZhbHVlfSk7bGV0IGJlPWAke3ZlLnllYXJ9LSR7dmUubW9udGh9LSR7dmUuZGF5fVQke3ZlLmhvdXJ9OiR7dmUubWludXRlfToke3ZlLnNlY29uZH1gLEVlPXRoaXMuZ2V0VGltZXpvbmVPZmZzZXQoRGUsdGhpcy50aW1lem9uZSk7cmV0dXJuYCR7YmV9JHtFZX1gfWdldFRpbWV6b25lT2Zmc2V0KERlLF9lKXtsZXQgQ2U9bmV3IERhdGUoRGUudG9Mb2NhbGVTdHJpbmcoImVuLVVTIix7dGltZVpvbmU6X2V9KSksdmU9bmV3IERhdGUoRGUudG9Mb2NhbGVTdHJpbmcoImVuLVVTIix7dGltZVpvbmU6IlVUQyJ9KSksYmU9KENlLmdldFRpbWUoKS12ZS5nZXRUaW1lKCkpLygxZTMqNjApLEVlPU1hdGguZmxvb3IoTWF0aC5hYnMoYmUpLzYwKSxqZT1NYXRoLmFicyhiZSklNjA7cmV0dXJuYCR7YmU+PTA/IisiOiItIn0ke0VlLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfToke2plLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfWB9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy52YWx1ZX1zZXRWYWx1ZShEZSl7aWYodGhpcy52YWx1ZT1EZSxEZSl0cnl7bGV0IF9lPW5ldyBEYXRlKERlKTtpc05hTihfZS5nZXRUaW1lKCkpfHwodGhpcy5zZWxlY3RlZERhdGU9X2UsdGhpcy52aWV3RGF0ZT1uZXcgRGF0ZShfZSksdGhpcy5zZWxlY3RlZEhvdXI9X2UuZ2V0SG91cnMoKSx0aGlzLnNlbGVjdGVkTWludXRlPV9lLmdldE1pbnV0ZXMoKSl9Y2F0Y2h7fX1hc3luYyBkaXNjb25uZWN0ZWRDYWxsYmFjaygpe2F3YWl0IHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5wb3B1cEluc3RhbmNlJiYodGhpcy5wb3B1cEluc3RhbmNlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRhdGUtc2VsZWN0ZWQiLHRoaXMuaGFuZGxlRGF0ZVNlbGVjdGVkKSx0aGlzLnBvcHVwSW5zdGFuY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGF0ZS1jbGVhcmVkIix0aGlzLmhhbmRsZURhdGVDbGVhcmVkKSx0aGlzLnBvcHVwSW5zdGFuY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xvc2UtcmVxdWVzdCIsdGhpcy5oYW5kbGVDbG9zZVJlcXVlc3QpLHRoaXMucG9wdXBJbnN0YW5jZS5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXBvc2l0aW9uLXJlcXVlc3QiLHRoaXMuaGFuZGxlUmVwb3NpdGlvblJlcXVlc3QpLHRoaXMucG9wdXBJbnN0YW5jZS5oaWRlKCksdGhpcy5wb3B1cEluc3RhbmNlPW51bGwpfXN0YXRpY3tLYShhLHQpfX07cmV0dXJuIEdlPWF9KSgpfSk7dmFyIEExZT1nKCgpPT57cW90KCk7Vm90KCl9KTt2YXIgYmJhLHZiYT1nKCgpPT57cGUoKTtJdCgpO3hvKCk7YmJhPWkoKCk9PndgCiAgPHN0eWxlPgogICAgJHtKYAogICAgICAuZGVtby1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDI0cHg7CiAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICBtYXgtd2lkdGg6IDEyMDBweDsKICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgfQogICAgICAKICAgICAgZGVlcy1wYW5lbCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgICAgfQogICAgICAKICAgICAgZGVlcy1wYW5lbDpsYXN0LWNoaWxkIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICB9CiAgICAgIAogICAgICAuaG9yaXpvbnRhbC1ncm91cCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMTZweDsKICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgIH0KICAgICAgCiAgICAgIC5ncmlkLWxheW91dCB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7CiAgICAgICAgZ2FwOiAxNnB4OwogICAgICB9CiAgICAgIAogICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsKICAgICAgICAuZ3JpZC1sYXlvdXQgewogICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CiAgICAgICAgfQogICAgICB9CiAgICAgIAogICAgICAuaW50ZXJhY3RpdmUtc2VjdGlvbiB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgNDAlIDk2LjElKSIsImhzbCgyMTUgMjAuMiUgMTYuOCUpIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICAgIH0KICAgICAgCiAgICAgIC5vdXRwdXQtdGV4dCB7CiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjMgMjUlIDI2LjclKSIsImhzbCgyMTAgNDAlIDgwJSkiKX07CiAgICAgICAgcGFkZGluZzogOHB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDQwJSA5OCUpIiwiaHNsKDIxNSAyMC4yJSAxMS44JSkiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIG1pbi1oZWlnaHQ6IDI0cHg7CiAgICAgIH0KICAgIGB9CiAgPC9zdHlsZT4KICAKICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57cy5xdWVyeVNlbGVjdG9yQWxsKCJkZWVzLWlucHV0LXRleHQiKS5mb3JFYWNoKGE9PnthLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZVN1YmplY3QiLChyPT57Y29uc29sZS5sb2coYElucHV0ICIke2EubGFiZWx9IiBjaGFuZ2VkIHRvOmAsYS5nZXRWYWx1ZSgpKX0pKSxhLmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCgpPT57Y29uc29sZS5sb2coYElucHV0ICIke2EubGFiZWx9IiBsb3N0IGZvY3VzYCl9KX0pLHMucXVlcnlTZWxlY3RvcignZGVlcy1pbnB1dC10ZXh0W2tleT0icGFzc3dvcmQiXScpJiZjb25zb2xlLmxvZygiUGFzc3dvcmQgaW5wdXQgaW5jbHVkZXMgdmlzaWJpbGl0eSB0b2dnbGUiKX19PgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiQmFzaWMgVGV4dCBJbnB1dHMifSAuc3VidGl0bGU9JHsiU3RhbmRhcmQgdGV4dCBpbnB1dHMgd2l0aCBsYWJlbHMgYW5kIGRlc2NyaXB0aW9ucyJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0CiAgICAgICAgICAgIC5sYWJlbD0keyJVc2VybmFtZSJ9CiAgICAgICAgICAgIC52YWx1ZT0keyJqb2huZG9lIn0KICAgICAgICAgICAgLmtleT0keyJ1c2VybmFtZSJ9CiAgICAgICAgICAgIC5kZXNjcmlwdGlvbj0keyJZb3VyIHVzZXJuYW1lIHdpbGwgYmUgdmlzaWJsZSB0byBvdGhlciB1c2VycyJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+CgogICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dAogICAgICAgICAgICAubGFiZWw9JHsiRW1haWwgQWRkcmVzcyJ9CiAgICAgICAgICAgIC52YWx1ZT0keyJqb2huQGV4YW1wbGUuY29tIn0KICAgICAgICAgICAgLmluZm9UZXh0PSR7IldlIHdpbGwgbmV2ZXIgc2hhcmUgeW91ciBlbWFpbCB3aXRoIGFueW9uZSJ9CiAgICAgICAgICAgIC5rZXk9JHsiZW1haWwifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgoKICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQKICAgICAgICAgICAgLmxhYmVsPSR7IlBhc3N3b3JkIn0KICAgICAgICAgICAgLmlzUGFzc3dvcmRCb29sPSR7ITB9CiAgICAgICAgICAgIC52YWx1ZT0keyJzZWNyZXQxMjMifQogICAgICAgICAgICAua2V5PSR7InBhc3N3b3JkIn0KICAgICAgICAgID48L2RlZXMtaW5wdXQtdGV4dD4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgogICAgCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57cy5xdWVyeVNlbGVjdG9yQWxsKCJkZWVzLWlucHV0LXRleHQiKS5mb3JFYWNoKHI9PntsZXQgbj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShyKTtjb25zb2xlLmxvZyhgSG9yaXpvbnRhbCBpbnB1dCAiJHtyLmxhYmVsfSIgZGlzcGxheTpgLG4uZGlzcGxheSl9KTtsZXQgdD1zLnF1ZXJ5U2VsZWN0b3IoJ2RlZXMtaW5wdXQtdGV4dFtrZXk9ImZpcnN0TmFtZSJdJyksYT1zLnF1ZXJ5U2VsZWN0b3IoJ2RlZXMtaW5wdXQtdGV4dFtrZXk9Imxhc3ROYW1lIl0nKTtpZih0JiZhKXtsZXQgcj1pKCgpPT57bGV0IG49dC5nZXRWYWx1ZSgpLG89YS5nZXRWYWx1ZSgpO2NvbnNvbGUubG9nKGBGdWxsIG5hbWU6ICR7bn0gJHtvfWApfSwidXBkYXRlRnVsbE5hbWUiKTt0LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZVN1YmplY3QiLHIpLGEuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlU3ViamVjdCIscil9fX0+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJIb3Jpem9udGFsIExheW91dCJ9IC5zdWJ0aXRsZT0keyJNdWx0aXBsZSBpbnB1dHMgYXJyYW5nZWQgaG9yaXpvbnRhbGx5IGZvciBjb21wYWN0IGZvcm1zIn0+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkaXYgY2xhc3M9Imhvcml6b250YWwtZ3JvdXAiPgogICAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0CiAgICAgICAgICAgICAgLmxhYmVsPSR7IkZpcnN0IE5hbWUifQogICAgICAgICAgICAgIC52YWx1ZT0keyJKb2huIn0KICAgICAgICAgICAgICAubGF5b3V0TW9kZT0keyJob3Jpem9udGFsIn0KICAgICAgICAgICAgICAua2V5PSR7ImZpcnN0TmFtZSJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtdGV4dD4KCiAgICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQKICAgICAgICAgICAgICAubGFiZWw9JHsiTGFzdCBOYW1lIn0KICAgICAgICAgICAgICAudmFsdWU9JHsiRG9lIn0KICAgICAgICAgICAgICAubGF5b3V0TW9kZT0keyJob3Jpem9udGFsIn0KICAgICAgICAgICAgICAua2V5PSR7Imxhc3ROYW1lIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgoKICAgICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dAogICAgICAgICAgICAgIC5sYWJlbD0keyJBZ2UifQogICAgICAgICAgICAgIC52YWx1ZT0keyIyOCJ9CiAgICAgICAgICAgICAgLmxheW91dE1vZGU9JHsiaG9yaXpvbnRhbCJ9CiAgICAgICAgICAgICAgLmtleT0keyJhZ2UifQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgogICAgCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57cy5xdWVyeVNlbGVjdG9yQWxsKCJkZWVzLWlucHV0LXRleHQiKS5mb3JFYWNoKGE9PntsZXQgcj1hLmxhYmVsUG9zaXRpb247Y29uc29sZS5sb2coYElucHV0ICIke2EubGFiZWx9IiBoYXMgbGFiZWwgcG9zaXRpb246ICR7cn1gKX0pO2xldCB0PXMucXVlcnlTZWxlY3RvckFsbCgnZGVlcy1pbnB1dC10ZXh0W2xhYmVsUG9zaXRpb249ImxlZnQiXScpO3QubGVuZ3RoPjAmJmNvbnNvbGUubG9nKGAke3QubGVuZ3RofSBpbnB1dHMgaGF2ZSBsZWZ0LWFsaWduZWQgbGFiZWxzIGZvciBpbmxpbmUgbGF5b3V0YCl9fT4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IkxhYmVsIFBvc2l0aW9ucyJ9IC5zdWJ0aXRsZT0keyJEaWZmZXJlbnQgbGFiZWwgcG9zaXRpb25pbmcgb3B0aW9ucyBmb3IgdmFyaW91cyBsYXlvdXRzIn0+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQKICAgICAgICAgICAgLmxhYmVsPSR7IkxhYmVsIG9uIFRvcCAoRGVmYXVsdCkifQogICAgICAgICAgICAudmFsdWU9JHsiU3RhbmRhcmQgbGF5b3V0In0KICAgICAgICAgICAgLmxhYmVsUG9zaXRpb249JHsidG9wIn0KICAgICAgICAgID48L2RlZXMtaW5wdXQtdGV4dD4KCiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0CiAgICAgICAgICAgIC5sYWJlbD0keyJMYWJlbCBvbiBMZWZ0In0KICAgICAgICAgICAgLnZhbHVlPSR7IklubGluZSBsYWJlbCJ9CiAgICAgICAgICAgIC5sYWJlbFBvc2l0aW9uPSR7ImxlZnQifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgoKICAgICAgICAgIDxkaXYgY2xhc3M9ImdyaWQtbGF5b3V0Ij4KICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQKICAgICAgICAgICAgLmxhYmVsPSR7IkNpdHkifQogICAgICAgICAgICAudmFsdWU9JHsiTmV3IFlvcmsifQogICAgICAgICAgICAubGFiZWxQb3NpdGlvbj0keyJsZWZ0In0KICAgICAgICAgID48L2RlZXMtaW5wdXQtdGV4dD4KCiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0CiAgICAgICAgICAgIC5sYWJlbD0keyJaSVAgQ29kZSJ9CiAgICAgICAgICAgIC52YWx1ZT0keyIxMDAwMSJ9CiAgICAgICAgICAgIC5sYWJlbFBvc2l0aW9uPSR7ImxlZnQifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgIDwvZGl2PgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CiAgICAKICAgIDxkZWVzLWRlbW93cmFwcGVyPgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiVmFsaWRhdGlvbiAmIFN0YXRlcyJ9IC5zdWJ0aXRsZT0keyJEaWZmZXJlbnQgdmFsaWRhdGlvbiBzdGF0ZXMgYW5kIGlucHV0IGNvbmZpZ3VyYXRpb25zIn0+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQKICAgICAgICAgICAgLmxhYmVsPSR7IlJlcXVpcmVkIEZpZWxkIn0KICAgICAgICAgICAgLnJlcXVpcmVkPSR7ITB9CiAgICAgICAgICAgIC5rZXk9JHsicmVxdWlyZWRGaWVsZCJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+CgogICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dAogICAgICAgICAgICAubGFiZWw9JHsiRGlzYWJsZWQgRmllbGQifQogICAgICAgICAgICAudmFsdWU9JHsiQ2Fubm90IGVkaXQgdGhpcyJ9CiAgICAgICAgICAgIC5kaXNhYmxlZD0keyEwfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgoKICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQKICAgICAgICAgICAgLmxhYmVsPSR7IkVtYWlsIHdpdGggVmFsaWRhdGlvbiJ9CiAgICAgICAgICAgIC52YWx1ZT0keyJpbnZhbGlkQCJ9CiAgICAgICAgICAgIC52YWxpZGF0aW9uRnVuY3Rpb249JHtzPT4vXlteXHNAXStAW15cc0BdK1wuW15cc0BdKyQvLnRlc3Qocyk/e3ZhbGlkOiEwLG1lc3NhZ2U6IkVtYWlsIGFkZHJlc3MgaXMgdmFsaWQifTp7dmFsaWQ6ITEsbWVzc2FnZToiUGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcyJ9fQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CiAgICAKICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntzLnF1ZXJ5U2VsZWN0b3JBbGwoImRlZXMtaW5wdXQtdGV4dFtpc1Bhc3N3b3JkQm9vbF0iKS5mb3JFYWNoKHQ9PntsZXQgYT10LHI9aSgoKT0+e2xldCBuPWEuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiaW5wdXQiKTtuJiZjb25zb2xlLmxvZyhgUGFzc3dvcmQgZmllbGQgIiR7YS5sYWJlbH0iIHR5cGU6YCxuLnR5cGUpfSwiY2hlY2tUb2dnbGUiKTtpZihhLnNoYWRvd1Jvb3Qpe2xldCBuPW5ldyBNdXRhdGlvbk9ic2VydmVyKHIpLG89YS5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoImlucHV0Iik7byYmbi5vYnNlcnZlKG8se2F0dHJpYnV0ZXM6ITAsYXR0cmlidXRlRmlsdGVyOlsidHlwZSJdfSl9fSl9fT4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IkFkdmFuY2VkIEZlYXR1cmVzIn0gLnN1YnRpdGxlPSR7IlBhc3N3b3JkIHZpc2liaWxpdHkgdG9nZ2xlIGFuZCBvdGhlciBhZHZhbmNlZCBmZWF0dXJlcyJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0CiAgICAgICAgICAgIC5sYWJlbD0keyJQYXNzd29yZCB3aXRoIFRvZ2dsZSJ9CiAgICAgICAgICAgIC5pc1Bhc3N3b3JkQm9vbD0keyEwfQogICAgICAgICAgICAudmFsdWU9JHsibXlTZWN1cmVQYXNzd29yZDEyMyJ9CiAgICAgICAgICAgIC5pbmZvVGV4dD0keyJDbGljayB0aGUgZXllIGljb24gdG8gc2hvdy9oaWRlIHBhc3N3b3JkIn0KICAgICAgICAgID48L2RlZXMtaW5wdXQtdGV4dD4KCiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0CiAgICAgICAgICAgIC5sYWJlbD0keyJBUEkgS2V5In0KICAgICAgICAgICAgLmlzUGFzc3dvcmRCb29sPSR7ITB9CiAgICAgICAgICAgIC52YWx1ZT0keyJzay0xMjM0NTY3ODkwYWJjZGVmIn0KICAgICAgICAgICAgLmluZm9UZXh0PSR7IktlZXAgdGhpcyBrZXkgc2VjdXJlIGFuZCBuZXZlciBzaGFyZSBpdCJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KICAgIAogICAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e2xldCBlPXMucXVlcnlTZWxlY3RvcigiZGVlcy1pbnB1dC10ZXh0IiksdD1zLnF1ZXJ5U2VsZWN0b3IoIiN0ZXh0LWlucHV0LW91dHB1dCIpO2UmJnQmJmUuY2hhbmdlU3ViamVjdC5zdWJzY3JpYmUoKCk9Pnt0LnRleHRDb250ZW50PWBDdXJyZW50IHZhbHVlOiAiJHtlLmdldFZhbHVlKCl9ImB9KX19PgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiSW50ZXJhY3RpdmUgRXhhbXBsZSJ9IC5zdWJ0aXRsZT0keyJUcnkgdHlwaW5nIGluIHRoZSBpbnB1dCB0byBzZWUgcmVhbC10aW1lIHZhbHVlIGNoYW5nZXMifT4KICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0CiAgICAgICAgICAubGFiZWw9JHsiRHluYW1pYyBJbnB1dCJ9CiAgICAgICAgICAucGxhY2Vob2xkZXI9JHsiVHlwZSBzb21ldGhpbmcgaGVyZS4uLiJ9CiAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgoKICAgICAgICA8ZGl2IGNsYXNzPSJpbnRlcmFjdGl2ZS1zZWN0aW9uIj4KICAgICAgICAgIDxkaXYgaWQ9InRleHQtaW5wdXQtb3V0cHV0IiBjbGFzcz0ib3V0cHV0LXRleHQiPkN1cnJlbnQgdmFsdWU6ICIiPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KICA8L2Rpdj4KYCwiZGVtb0Z1bmMiKX0pO3ZhciBJdSxPbyxXb3QsbzQ9ZygoKT0+e3cyKCk7RWkoKTt2YmEoKTtFcigpO3BlKCk7aHQoKTtmcigpO0l1PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxPbz1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sV290PSgoKT0+e2xldCBzPVtuZSgiZGVlcy1pbnB1dC10ZXh0IildLGUsdD1bXSxhLHI9QnQsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W10sSCxrPVtdLFM9W107dmFyIEk9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNJbnB1dFRleHQiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgUD10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZyxyZWZsZWN0OiEwfSldLHA9W0woe3R5cGU6Qm9vbGVhbixyZWZsZWN0OiEwfSldLGM9W0woe3R5cGU6Qm9vbGVhbixyZWZsZWN0OiEwfSldLHg9W0woe3R5cGU6U3RyaW5nLHJlZmxlY3Q6ITB9KV0seT1bTCh7cmVmbGVjdDohMH0pXSxOPVtMKHthdHRyaWJ1dGU6ITF9KV0sTz1bTCh7dHlwZTpCb29sZWFuLHJlZmxlY3Q6ITB9KV0sSD1bTCh7YXR0cmlidXRlOiExfSldLEl1KHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidmFsdWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUj0+InZhbHVlImluIFIsImhhcyIpLGdldDppKFI9PlIudmFsdWUsImdldCIpLHNldDppKChSLEspPT57Ui52YWx1ZT1LfSwic2V0Iil9LG1ldGFkYXRhOlB9LG8sbCksSXUodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpc1Bhc3N3b3JkQm9vbCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShSPT4iaXNQYXNzd29yZEJvb2wiaW4gUiwiaGFzIiksZ2V0OmkoUj0+Ui5pc1Bhc3N3b3JkQm9vbCwiZ2V0Iiksc2V0OmkoKFIsSyk9PntSLmlzUGFzc3dvcmRCb29sPUt9LCJzZXQiKX0sbWV0YWRhdGE6UH0sZCx1KSxJdSh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dQYXNzd29yZEJvb2wiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUj0+InNob3dQYXNzd29yZEJvb2wiaW4gUiwiaGFzIiksZ2V0OmkoUj0+Ui5zaG93UGFzc3dvcmRCb29sLCJnZXQiKSxzZXQ6aSgoUixLKT0+e1Iuc2hvd1Bhc3N3b3JkQm9vbD1LfSwic2V0Iil9LG1ldGFkYXRhOlB9LGIsdiksSXUodGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2YWxpZGF0aW9uU3RhdGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUj0+InZhbGlkYXRpb25TdGF0ZSJpbiBSLCJoYXMiKSxnZXQ6aShSPT5SLnZhbGlkYXRpb25TdGF0ZSwiZ2V0Iiksc2V0OmkoKFIsSyk9PntSLnZhbGlkYXRpb25TdGF0ZT1LfSwic2V0Iil9LG1ldGFkYXRhOlB9LG0sZiksSXUodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2YWxpZGF0aW9uVGV4dCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShSPT4idmFsaWRhdGlvblRleHQiaW4gUiwiaGFzIiksZ2V0OmkoUj0+Ui52YWxpZGF0aW9uVGV4dCwiZ2V0Iiksc2V0OmkoKFIsSyk9PntSLnZhbGlkYXRpb25UZXh0PUt9LCJzZXQiKX0sbWV0YWRhdGE6UH0sTSx6KSxJdSh0aGlzLG51bGwsTix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InZhbGlkYXRpb25GdW5jdGlvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShSPT4idmFsaWRhdGlvbkZ1bmN0aW9uImluIFIsImhhcyIpLGdldDppKFI9PlIudmFsaWRhdGlvbkZ1bmN0aW9uLCJnZXQiKSxzZXQ6aSgoUixLKT0+e1IudmFsaWRhdGlvbkZ1bmN0aW9uPUt9LCJzZXQiKX0sbWV0YWRhdGE6UH0sQyxfKSxJdSh0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InZpbnRlZ3JhdGVkIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFI9PiJ2aW50ZWdyYXRlZCJpbiBSLCJoYXMiKSxnZXQ6aShSPT5SLnZpbnRlZ3JhdGVkLCJnZXQiKSxzZXQ6aSgoUixLKT0+e1IudmludGVncmF0ZWQ9S30sInNldCIpfSxtZXRhZGF0YTpQfSwkLEUpLEl1KHRoaXMsbnVsbCxILHtraW5kOiJhY2Nlc3NvciIsbmFtZToidmFsaWRDb25maXJtZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUj0+InZhbGlkQ29uZmlybWVkImluIFIsImhhcyIpLGdldDppKFI9PlIudmFsaWRDb25maXJtZWQsImdldCIpLHNldDppKChSLEspPT57Ui52YWxpZENvbmZpcm1lZD1LfSwic2V0Iil9LG1ldGFkYXRhOlB9LGssUyksSXUobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6UH0sbnVsbCx0KSxJPWE9ZS52YWx1ZSxQJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOlB9KX1zdGF0aWMgZGVtbz1iYmE7c3RhdGljIGRlbW9Hcm91cHM9WyJJbnB1dCJdOyNlPU9vKHRoaXMsbywiIik7Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHZhbHVlKFApe3RoaXMuI2U9UH0jdD0oT28odGhpcyxsKSxPbyh0aGlzLGQsITEpKTtnZXQgaXNQYXNzd29yZEJvb2woKXtyZXR1cm4gdGhpcy4jdH1zZXQgaXNQYXNzd29yZEJvb2woUCl7dGhpcy4jdD1QfSNhPShPbyh0aGlzLHUpLE9vKHRoaXMsYiwhMSkpO2dldCBzaG93UGFzc3dvcmRCb29sKCl7cmV0dXJuIHRoaXMuI2F9c2V0IHNob3dQYXNzd29yZEJvb2woUCl7dGhpcy4jYT1QfSNzPShPbyh0aGlzLHYpLE9vKHRoaXMsbSx2b2lkIDApKTtnZXQgdmFsaWRhdGlvblN0YXRlKCl7cmV0dXJuIHRoaXMuI3N9c2V0IHZhbGlkYXRpb25TdGF0ZShQKXt0aGlzLiNzPVB9I2k9KE9vKHRoaXMsZiksT28odGhpcyxNLCIiKSk7Z2V0IHZhbGlkYXRpb25UZXh0KCl7cmV0dXJuIHRoaXMuI2l9c2V0IHZhbGlkYXRpb25UZXh0KFApe3RoaXMuI2k9UH0jcj0oT28odGhpcyx6KSxPbyh0aGlzLEMsdm9pZCAwKSk7Z2V0IHZhbGlkYXRpb25GdW5jdGlvbigpe3JldHVybiB0aGlzLiNyfXNldCB2YWxpZGF0aW9uRnVuY3Rpb24oUCl7dGhpcy4jcj1QfSNvPShPbyh0aGlzLF8pLE9vKHRoaXMsJCwhMSkpO2dldCB2aW50ZWdyYXRlZCgpe3JldHVybiB0aGlzLiNvfXNldCB2aW50ZWdyYXRlZChQKXt0aGlzLiNvPVB9I249KE9vKHRoaXMsRSksT28odGhpcyxrLCExKSk7Z2V0IHZhbGlkQ29uZmlybWVkKCl7cmV0dXJuIHRoaXMuI259c2V0IHZhbGlkQ29uZmlybWVkKFApe3RoaXMuI249UH12YWxpZFRpbWVvdXQ9T28odGhpcyxTKTtzdGF0aWMgc3R5bGVzPVtxZSwuLi5CdC5iYXNlU3R5bGVzLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICAvKiBUT0RPOiBNaWdyYXRlIGhhcmRjb2RlZCB2YWx1ZXMgdG8gLS1kZWVzLSogQ1NTIHZhcmlhYmxlcyAqLwogICAgICAqIHsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICA6aG9zdCB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHotaW5kZXg6IGF1dG87CiAgICAgICAgZm9udC1mYW1pbHk6ICR7QmF9OwogICAgICB9CgogICAgICAubWFpbmNvbnRhaW5lciB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTUlKSIsImhzbCgwIDAlIDkwJSkiKX07CiAgICAgIH0KCiAgICAgIGlucHV0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGhlaWdodDogNDBweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBwYWRkaW5nOiAwIDEycHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiA0MHB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxMDAlKSIsImhzbCgwIDAlIDklKSIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDAgMCUgODkuOCUpIiwiaHNsKDAgMCUgMTQuOSUpIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgY3Vyc29yOiB0ZXh0OwogICAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMy45JSkiLCJoc2woMCAwJSA5OCUpIil9OwogICAgICB9CgogICAgICBpbnB1dDo6cGxhY2Vob2xkZXIgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNDUuMSUpIiwiaHNsKDAgMCUgNjMuOSUpIil9OwogICAgICB9CgogICAgICBpbnB1dDpob3Zlcjpub3QoOmRpc2FibGVkKTpub3QoOmZvY3VzKSB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNzkuOCUpIiwiaHNsKDAgMCUgMjAuOSUpIil9OwogICAgICB9CgogICAgICBpbnB1dDpmb2N1cyB7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5JSkiLCJoc2woMCAwJSA5OCUpIil9OwogICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCAke2guYmRUaGVtZSgiaHNsKDAgMCUgOSUgLyAwLjA1KSIsImhzbCgwIDAlIDk4JSAvIDAuMDUpIil9OwogICAgICB9CgogICAgICBpbnB1dDpkaXNhYmxlZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk1LjElKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4OS44JSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA0NS4xJSkiLCJoc2woMCAwJSA2My45JSkiKX07CiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgIH0KCiAgICAgIC8qIFBhc3N3b3JkIHRvZ2dsZSBidXR0b24gKi8KICAgICAgLnNob3dQYXNzd29yZCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHJpZ2h0OiAxcHg7CiAgICAgICAgdG9wOiAyMHB4OwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgd2lkdGg6IDM4cHg7CiAgICAgICAgaGVpZ2h0OiAzOHB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDQ1LjElKSIsImhzbCgwIDAlIDYzLjklKSIpfTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBib3JkZXItcmFkaXVzOiAwIDVweCA1cHggMDsKICAgICAgfQoKICAgICAgLnNob3dQYXNzd29yZDpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk1LjElKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDE1JSkiLCJoc2woMCAwJSA5My45JSkiKX07CiAgICAgIH0KCiAgICAgIC8qIFZhbGlkIGNoZWNrbWFyayBpY29uICovCiAgICAgIC52YWxpZEljb24gewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICByaWdodDogMTBweDsKICAgICAgICB0b3A6IDIwcHg7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDE0Mi4xIDc2LjIlIDM2LjMlKSIsImhzbCgxNDIuMSA3MC42JSA0NS4zJSkiKX07CiAgICAgIH0KCiAgICAgIC52YWxpZEljb24uc2hvdyB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgLnZhbGlkSWNvbiBkZWVzLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgfQoKICAgICAgLyogVmFsaWRhdGlvbiBzdHlsZXMgKi8KICAgICAgLnZhbGlkYXRpb25Db250YWluZXIgewogICAgICAgIG1hcmdpbi10b3A6IDRweDsKICAgICAgICBwYWRkaW5nOiA0cHggOHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC52YWxpZGF0aW9uQ29udGFpbmVyLmludmFsaWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCA4NC4yJSA2MC4yJSAvIDAuMSkiLCJoc2woMCA3Mi4yJSA1MC42JSAvIDAuMSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCA4NC4yJSA2MC4yJSkiLCJoc2woMCA3Mi4yJSA1MC42JSkiKX07CiAgICAgIH0KCiAgICAgIC52YWxpZGF0aW9uQ29udGFpbmVyLndhcm4gewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjUgOTUlIDUzJSAvIDAuMSkiLCJoc2woMjUgOTUlIDYzJSAvIDAuMSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjUgOTUlIDUzJSkiLCJoc2woMjUgOTUlIDYzJSkiKX07CiAgICAgIH0KCiAgICAgIC52YWxpZGF0aW9uQ29udGFpbmVyLnZhbGlkIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDE0Mi4xIDc2LjIlIDM2LjMlIC8gMC4xKSIsImhzbCgxNDIuMSA3MC42JSA0NS4zJSAvIDAuMSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMTQyLjEgNzYuMiUgMzYuMyUpIiwiaHNsKDE0Mi4xIDcwLjYlIDQ1LjMlKSIpfTsKICAgICAgfQoKICAgICAgLyogRXJyb3Igc3RhdGUgZm9yIGlucHV0ICovCiAgICAgIDpob3N0KFt2YWxpZGF0aW9uc3RhdGU9ImludmFsaWQiXSkgaW5wdXQgewogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDg0LjIlIDYwLjIlKSIsImhzbCgwIDcyLjIlIDUwLjYlKSIpfTsKICAgICAgfQoKICAgICAgOmhvc3QoW3ZhbGlkYXRpb25zdGF0ZT0iaW52YWxpZCJdKSBpbnB1dDpmb2N1cyB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgODQuMiUgNjAuMiUpIiwiaHNsKDAgNzIuMiUgNTAuNiUpIil9OwogICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCAke2guYmRUaGVtZSgiaHNsKDAgODQuMiUgNjAuMiUgLyAwLjA1KSIsImhzbCgwIDcyLjIlIDUwLjYlIC8gMC4wNSkiKX07CiAgICAgIH0KCiAgICAgIC8qIFdhcm5pbmcgc3RhdGUgZm9yIGlucHV0ICovCiAgICAgIDpob3N0KFt2YWxpZGF0aW9uc3RhdGU9Indhcm4iXSkgaW5wdXQgewogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyNSA5NSUgNTMlKSIsImhzbCgyNSA5NSUgNjMlKSIpfTsKICAgICAgfQoKICAgICAgOmhvc3QoW3ZhbGlkYXRpb25zdGF0ZT0id2FybiJdKSBpbnB1dDpmb2N1cyB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDI1IDk1JSA1MyUpIiwiaHNsKDI1IDk1JSA2MyUpIil9OwogICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCAke2guYmRUaGVtZSgiaHNsKDI1IDk1JSA1MyUgLyAwLjA1KSIsImhzbCgyNSA5NSUgNjMlIC8gMC4wNSkiKX07CiAgICAgIH0KCiAgICAgIC8qIFZhbGlkIHN0YXRlIGZvciBpbnB1dCAqLwogICAgICA6aG9zdChbdmFsaWRhdGlvbnN0YXRlPSJ2YWxpZCJdKSBpbnB1dCB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDE0Mi4xIDc2LjIlIDM2LjMlKSIsImhzbCgxNDIuMSA3MC42JSA0NS4zJSkiKX07CiAgICAgIH0KCiAgICAgIDpob3N0KFt2YWxpZGF0aW9uc3RhdGU9InZhbGlkIl0pIGlucHV0OmZvY3VzIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMTQyLjEgNzYuMiUgMzYuMyUpIiwiaHNsKDE0Mi4xIDcwLjYlIDQ1LjMlKSIpfTsKICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggJHtoLmJkVGhlbWUoImhzbCgxNDIuMSA3Ni4yJSAzNi4zJSAvIDAuMDUpIiwiaHNsKDE0Mi4xIDcwLjYlIDQ1LjMlIC8gMC4wNSkiKX07CiAgICAgIH0KCiAgICAgIC8qIFZpc3VhbGx5IGludGVncmF0ZWQgbW9kZTogc2hlZCBjaHJvbWUgdG8gYmxlbmQgaW50byBhIGhvc3QgY29tcG9uZW50CiAgICAgICAgIChlLmcuIGEgZGVlcy10YWJsZSBjZWxsIGluIGVkaXQgbW9kZSkuICovCiAgICAgIDpob3N0KFt2aW50ZWdyYXRlZF0pIGRlZXMtbGFiZWwsCiAgICAgIDpob3N0KFt2aW50ZWdyYXRlZF0pIC52YWxpZGF0aW9uQ29udGFpbmVyIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CiAgICAgIDpob3N0KFt2aW50ZWdyYXRlZF0pIC5tYWluY29udGFpbmVyIHsKICAgICAgICBoZWlnaHQ6IDQwcHg7CiAgICAgIH0KICAgICAgOmhvc3QoW3ZpbnRlZ3JhdGVkXSkgaW5wdXQgewogICAgICAgIGhlaWdodDogNDBweDsKICAgICAgICBsaW5lLWhlaWdodDogMjRweDsKICAgICAgICBwYWRkaW5nOiAwIDE2cHg7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBib3JkZXItcmFkaXVzOiAwOwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTsKICAgICAgfQogICAgICA6aG9zdChbdmludGVncmF0ZWRdKSBpbnB1dDpob3Zlcjpub3QoOmRpc2FibGVkKTpub3QoOmZvY3VzKSwKICAgICAgOmhvc3QoW3ZpbnRlZ3JhdGVkXSkgaW5wdXQ6Zm9jdXMgewogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBib3gtc2hhZG93OiBub25lOwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICB9CiAgICAgIDpob3N0KFt2aW50ZWdyYXRlZF0pIC5zaG93UGFzc3dvcmQgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8c3R5bGU+CiAgICAgICAgaW5wdXQgewogICAgICAgICAgZm9udC1mYW1pbHk6ICR7dGhpcy5pc1Bhc3N3b3JkQm9vbD9CZzoiaW5oZXJpdCJ9OwogICAgICAgICAgbGV0dGVyLXNwYWNpbmc6ICR7dGhpcy5pc1Bhc3N3b3JkQm9vbD8iMC41cHgiOiJub3JtYWwifTsKICAgICAgICAgIHBhZGRpbmctcmlnaHQ6ICR7dGhpcy5pc1Bhc3N3b3JkQm9vbD8iNDhweCI6dGhpcy52YWxpZENvbmZpcm1lZD8iNDBweCI6IjEycHgifTsKICAgICAgICB9CiAgICAgICAgJHt0aGlzLnZhbGlkYXRpb25UZXh0JiYhdGhpcy52YWxpZENvbmZpcm1lZD9KYAogICAgICAgICAgICAgIC52YWxpZGF0aW9uQ29udGFpbmVyIHsKICAgICAgICAgICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICBgOkpgCiAgICAgICAgICAgICAgLnZhbGlkYXRpb25Db250YWluZXIgewogICAgICAgICAgICAgICAgaGVpZ2h0OiAwOwogICAgICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNHB4KTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGB9CiAgICAgIDwvc3R5bGU+CiAgICAgIDxkaXYgY2xhc3M9ImlucHV0LXdyYXBwZXIiPgogICAgICAgIDxkZWVzLWxhYmVsIC5sYWJlbD0ke3RoaXMubGFiZWx9IC5pbmZvVGV4dD0ke3RoaXMuaW5mb1RleHR9IC5yZXF1aXJlZD0ke3RoaXMucmVxdWlyZWR9PjwvZGVlcy1sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJtYWluY29udGFpbmVyIj4KICAgICAgICAgIDxpbnB1dAogICAgICAgICAgICB0eXBlPSIke3RoaXMuaXNQYXNzd29yZEJvb2wmJiF0aGlzLnNob3dQYXNzd29yZEJvb2w/InBhc3N3b3JkIjoidGV4dCJ9IgogICAgICAgICAgICAudmFsdWU9JHt0aGlzLnZhbHVlfQogICAgICAgICAgICBAaW5wdXQ9IiR7dGhpcy51cGRhdGVWYWx1ZX0iCiAgICAgICAgICAgIC5kaXNhYmxlZD0ke3RoaXMuZGlzYWJsZWR9CiAgICAgICAgICAgIHBsYWNlaG9sZGVyPSIke3RoaXMubGFiZWw/IiI6IkVudGVyIHRleHQuLi4ifSIKICAgICAgICAgIC8+CiAgICAgICAgICAke3RoaXMuaXNQYXNzd29yZEJvb2w/d2AKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNob3dQYXNzd29yZCIgQGNsaWNrPSR7dGhpcy50b2dnbGVQYXNzd29yZFZpZXd9PgogICAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7dGhpcy5zaG93UGFzc3dvcmRCb29sPyJsdWNpZGU6RXllIjoibHVjaWRlOkV5ZU9mZiJ9PjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgYDp3YGB9CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ2YWxpZEljb24gJHt0aGlzLnZhbGlkQ29uZmlybWVkPyJzaG93IjoiIn0iPgogICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7Imx1Y2lkZTpDaGVjayJ9PjwvZGVlcy1pY29uPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICAke3RoaXMudmFsaWRhdGlvblRleHQ/d2AKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InZhbGlkYXRpb25Db250YWluZXIgJHt0aGlzLnZhbGlkYXRpb25TdGF0ZXx8ImludmFsaWQifSI+CiAgICAgICAgICAgICAgICAgICR7dGhpcy52YWxpZGF0aW9uVGV4dH0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIGA6d2A8ZGl2IGNsYXNzPSJ2YWxpZGF0aW9uQ29udGFpbmVyIj48L2Rpdj5gfQogICAgICAgICAgJHt0aGlzLnJlbmRlckRlc2NyaXB0aW9uKCl9CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1maXJzdFVwZGF0ZWQoKXtpZih0aGlzLnZhbGlkYXRpb25GdW5jdGlvbiYmdGhpcy52YWx1ZSl7bGV0IFA9dGhpcy52YWxpZGF0aW9uRnVuY3Rpb24odGhpcy52YWx1ZSk7dGhpcy52YWxpZGF0aW9uU3RhdGU9UC52YWxpZD8idmFsaWQiOiJpbnZhbGlkIix0aGlzLnZhbGlkYXRpb25UZXh0PVAubWVzc2FnZXx8IiIsUC52YWxpZCYmKHRoaXMudmFsaWRDb25maXJtZWQ9ITEsdGhpcy52YWxpZFRpbWVvdXQ9c2V0VGltZW91dCgoKT0+e3RoaXMudmFsaWRDb25maXJtZWQ9ITAsdGhpcy52YWxpZGF0aW9uU3RhdGU9dm9pZCAwfSw1MDApKX19YXN5bmMgdXBkYXRlVmFsdWUoUCl7bGV0IFI9UC50YXJnZXQ7aWYodGhpcy52YWx1ZT1SLnZhbHVlLHRoaXMudmFsaWRhdGlvbkZ1bmN0aW9uKXtsZXQgSz10aGlzLnZhbGlkYXRpb25GdW5jdGlvbih0aGlzLnZhbHVlKTt0aGlzLnZhbGlkYXRpb25TdGF0ZT1LLnZhbGlkPyJ2YWxpZCI6ImludmFsaWQiLHRoaXMudmFsaWRhdGlvblRleHQ9Sy5tZXNzYWdlfHwiIixLLnZhbGlkPyh0aGlzLnZhbGlkQ29uZmlybWVkPSExLGNsZWFyVGltZW91dCh0aGlzLnZhbGlkVGltZW91dCksdGhpcy52YWxpZFRpbWVvdXQ9c2V0VGltZW91dCgoKT0+e3RoaXMudmFsaWRDb25maXJtZWQ9ITAsdGhpcy52YWxpZGF0aW9uU3RhdGU9dm9pZCAwfSw1MDApKTooY2xlYXJUaW1lb3V0KHRoaXMudmFsaWRUaW1lb3V0KSx0aGlzLnZhbGlkQ29uZmlybWVkPSExKX10aGlzLmNoYW5nZVN1YmplY3QubmV4dCh0aGlzKX1nZXRDb250ZXh0TWVudUl0ZW1zKCl7bGV0IFA9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoImlucHV0IiksUj1QLnNlbGVjdGlvblN0YXJ0IT09UC5zZWxlY3Rpb25FbmQ7cmV0dXJuW3tuYW1lOiJDdXQiLGljb25OYW1lOiJsdWNpZGU6U2Npc3NvcnMiLHNob3J0Y3V0OiJDbWQrWCIsZGlzYWJsZWQ6IVIsYWN0aW9uOmkoYXN5bmMoKT0+e2xldCBLPXRoaXMudmFsdWUuc3Vic3RyaW5nKFAuc2VsZWN0aW9uU3RhcnQsUC5zZWxlY3Rpb25FbmQpO2F3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KEspO2xldCBWPVAuc2VsZWN0aW9uU3RhcnQ7dGhpcy52YWx1ZT10aGlzLnZhbHVlLnN1YnN0cmluZygwLFYpK3RoaXMudmFsdWUuc3Vic3RyaW5nKFAuc2VsZWN0aW9uRW5kKSxQLnZhbHVlPXRoaXMudmFsdWUsUC5zZXRTZWxlY3Rpb25SYW5nZShWLFYpLHRoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMpfSwiYWN0aW9uIil9LHtuYW1lOiJDb3B5IixpY29uTmFtZToibHVjaWRlOkNvcHkiLHNob3J0Y3V0OiJDbWQrQyIsZGlzYWJsZWQ6IVIsYWN0aW9uOmkoYXN5bmMoKT0+e2xldCBLPXRoaXMudmFsdWUuc3Vic3RyaW5nKFAuc2VsZWN0aW9uU3RhcnQsUC5zZWxlY3Rpb25FbmQpO2F3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KEspfSwiYWN0aW9uIil9LHtuYW1lOiJQYXN0ZSIsaWNvbk5hbWU6Imx1Y2lkZTpDbGlwYm9hcmRQYXN0ZSIsc2hvcnRjdXQ6IkNtZCtWIixhY3Rpb246aShhc3luYygpPT57bGV0IEs9YXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC5yZWFkVGV4dCgpLFY9UC5zZWxlY3Rpb25TdGFydCxXPVAuc2VsZWN0aW9uRW5kO3RoaXMudmFsdWU9dGhpcy52YWx1ZS5zdWJzdHJpbmcoMCxWKStLK3RoaXMudmFsdWUuc3Vic3RyaW5nKFcpLFAudmFsdWU9dGhpcy52YWx1ZSxQLnNldFNlbGVjdGlvblJhbmdlKFYrSy5sZW5ndGgsVitLLmxlbmd0aCksdGhpcy5jaGFuZ2VTdWJqZWN0Lm5leHQodGhpcyl9LCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJTZWxlY3QgQWxsIixpY29uTmFtZToibHVjaWRlOlRleHRDdXJzb3JJbnB1dCIsc2hvcnRjdXQ6IkNtZCtBIixhY3Rpb246aShhc3luYygpPT57UC5zZWxlY3QoKX0sImFjdGlvbiIpfV19Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy52YWx1ZX1zZXRWYWx1ZShQKXt0aGlzLnZhbHVlPVB9YXN5bmMgdG9nZ2xlUGFzc3dvcmRWaWV3KCl7dGhpcy5zaG93UGFzc3dvcmRCb29sPSF0aGlzLnNob3dQYXNzd29yZEJvb2x9YXN5bmMgZm9jdXMoKXt0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiaW5wdXQiKS5mb2N1cygpfWFzeW5jIGJsdXIoKXt0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiaW5wdXQiKS5ibHVyKCl9c3RhdGlje09vKGEsdCl9fTtyZXR1cm4gST1hfSkoKX0pO3ZhciB4YmEseWJhPWcoKCk9PntwZSgpO0l0KCk7eG8oKTt4YmE9aSgoKT0+d2AKICA8ZGVlcy1kZW1vd3JhcHBlcj4KICAgIDxzdHlsZT4KICAgICAgJHtKYAogICAgICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgIGdhcDogMjRweDsKICAgICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgICBtYXgtd2lkdGg6IDEyMDBweDsKICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAucHJvZHVjdC1ncmlkIHsKICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgyODBweCwgMWZyKSk7CiAgICAgICAgICBnYXA6IDIwcHg7CiAgICAgICAgfQoKICAgICAgICAuY2FydC1zdW1tYXJ5IHsKICAgICAgICAgIG1hcmdpbi10b3A6IDI0cHg7CiAgICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgNDAlIDk2LjElKSIsImhzbCgyMTUgMjAuMiUgMTYuOCUpIil9OwogICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgyMTQuMyAzMS44JSA5MS40JSkiLCJoc2woMjE1IDIwLjIlIDIxLjglKSIpfTsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICB9CgogICAgICAgIC5jYXJ0LXN1bW1hcnktdGl0bGUgewogICAgICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDklKSIsImhzbCgwIDAlIDk1JSkiKX07CiAgICAgICAgfQoKICAgICAgICAuY2FydC1pdGVtIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgcGFkZGluZzogOHB4IDA7CiAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuMyAyNSUgMjYuNyUpIiwiaHNsKDIxNy45IDEwLjYlIDc0LjklKSIpfTsKICAgICAgICB9CgogICAgICAgIC5jYXJ0LXRvdGFsIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgcGFkZGluZy10b3A6IDE2cHg7CiAgICAgICAgICBtYXJnaW4tdG9wOiAxNnB4OwogICAgICAgICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4OS44JSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5JSkiLCJoc2woMCAwJSA5NSUpIil9OwogICAgICAgIH0KCiAgICAgICAgLnNlbGVjdGVkLXByb2R1Y3RzIHsKICAgICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxMCA0MCUgOTYuMSUpIiwiaHNsKDIxNSAyMC4yJSAxNi44JSkiKX07CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuMyAyNSUgMjYuNyUpIiwiaHNsKDIxNy45IDEwLjYlIDc0LjklKSIpfTsKICAgICAgICB9CiAgICAgIGB9CiAgICA8L3N0eWxlPgogICAgCiAgICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJCYXNpYyBQcm9kdWN0IENhcmRzIn0gLnN1YnRpdGxlPSR7IlNpbXBsZSBwcm9kdWN0IGRpc3BsYXkgd2l0aCB2YXJpb3VzIGNvbmZpZ3VyYXRpb25zIn0+CiAgICAgICAgPGRpdiBjbGFzcz0icHJvZHVjdC1ncmlkIj4KICAgICAgICAgIDxkZWVzLXNob3BwaW5nLXByb2R1Y3RjYXJkCiAgICAgICAgICAgIC5wcm9kdWN0RGF0YT0ke3tuYW1lOiJXaXJlbGVzcyBCbHVldG9vdGggSGVhZHBob25lcyIsY2F0ZWdvcnk6IkF1ZGlvIixkZXNjcmlwdGlvbjoiUHJlbWl1bSBzb3VuZCBxdWFsaXR5IHdpdGggYWN0aXZlIG5vaXNlIGNhbmNlbGxhdGlvbiIscHJpY2U6MTQ5Ljk5LG9yaWdpbmFsUHJpY2U6MTk5Ljk5LGljb25OYW1lOiJsdWNpZGU6aGVhZHBob25lcyJ9fQogICAgICAgICAgICAucXVhbnRpdHk9JHsxfQogICAgICAgICAgPjwvZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZD4KCiAgICAgICAgICA8ZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZAogICAgICAgICAgICAucHJvZHVjdERhdGE9JHt7bmFtZToiU21hcnQgV2F0Y2ggU2VyaWVzIDciLGNhdGVnb3J5OiJXZWFyYWJsZXMiLGRlc2NyaXB0aW9uOiJUcmFjayB5b3VyIGZpdG5lc3MgYW5kIHN0YXkgY29ubmVjdGVkIG9uIHRoZSBnbyIscHJpY2U6Mzk5LGljb25OYW1lOiJsdWNpZGU6d2F0Y2gifX0KICAgICAgICAgICAgLnF1YW50aXR5PSR7MX0KICAgICAgICAgID48L2RlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmQ+CgogICAgICAgICAgPGRlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmQKICAgICAgICAgICAgLnByb2R1Y3REYXRhPSR7e25hbWU6IlVTQi1DIEh1YiIsY2F0ZWdvcnk6IkFjY2Vzc29yaWVzIixwcmljZTo0OS45OSxpY29uTmFtZToibHVjaWRlOnVzYiIsaW5TdG9jazohMX19CiAgICAgICAgICAgIC5xdWFudGl0eT0kezB9CiAgICAgICAgICA+PC9kZWVzLXNob3BwaW5nLXByb2R1Y3RjYXJkPgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiSW50ZXJhY3RpdmUgU2hvcHBpbmcgQ2FydCJ9IC5zdWJ0aXRsZT0keyJQcm9kdWN0IGNhcmRzIHdpdGggZHluYW1pYyBjYXJ0IGNhbGN1bGF0aW9uIn0gLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e2xldCBlPVt7aWQ6ImxhcHRvcCIsZWxlbWVudDpudWxsLGRhdGE6e25hbWU6J01hY0Jvb2sgUHJvIDE0IicsY2F0ZWdvcnk6IkNvbXB1dGVycyIsZGVzY3JpcHRpb246Ik0zIFBybyBjaGlwIHdpdGggMThHQiBSQU0iLHByaWNlOjE5OTksb3JpZ2luYWxQcmljZToyMTk5LGljb25OYW1lOiJsdWNpZGU6bGFwdG9wIn19LHtpZDoiaXBhZCIsZWxlbWVudDpudWxsLGRhdGE6e25hbWU6ImlQYWQgQWlyIixjYXRlZ29yeToiVGFibGV0cyIsZGVzY3JpcHRpb246JzEwLjkiIExpcXVpZCBSZXRpbmEgZGlzcGxheScscHJpY2U6NTk5LGljb25OYW1lOiJsdWNpZGU6dGFibGV0In19LHtpZDoia2V5Ym9hcmQiLGVsZW1lbnQ6bnVsbCxkYXRhOntuYW1lOiJNYWdpYyBLZXlib2FyZCIsY2F0ZWdvcnk6IkFjY2Vzc29yaWVzIixkZXNjcmlwdGlvbjoiV2lyZWxlc3Mga2V5Ym9hcmQgd2l0aCBUb3VjaCBJRCIscHJpY2U6MTQ5LGljb25OYW1lOiJsdWNpZGU6a2V5Ym9hcmQifX1dLHQ9aSgoKT0+e2xldCBhPTAscj1bXTtlLmZvckVhY2gobz0+e2xldCBsPXMucXVlcnlTZWxlY3RvcihgIyR7by5pZH1gKTtpZihsJiZsLnF1YW50aXR5PjApe2xldCBwPW8uZGF0YS5wcmljZSpsLnF1YW50aXR5O2ErPXAsci5wdXNoKGAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcnQtaXRlbSI+CiAgICAgICAgICAgICAgICAgIDxzcGFuPiR7by5kYXRhLm5hbWV9ICgke2wucXVhbnRpdHl9KTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPHNwYW4+JCR7cC50b0ZpeGVkKDIpfTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIGApfX0pO2xldCBuPXMucXVlcnlTZWxlY3RvcigiI2ludGVyYWN0aXZlLWNhcnQtc3VtbWFyeSIpO24mJihuLmlubmVySFRNTD1gCiAgICAgICAgICAgICAgJHtyLmpvaW4oIiIpfQogICAgICAgICAgICAgICR7ci5sZW5ndGg9PT0wPyc8ZGl2IGNsYXNzPSJjYXJ0LWl0ZW0iIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7IGNvbG9yOiAjOTk5OyI+WW91ciBjYXJ0IGlzIGVtcHR5PC9kaXY+JzoiIn0KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJ0LXRvdGFsIj4KICAgICAgICAgICAgICAgIDxzcGFuPlRvdGFsPC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4+JCR7YS50b0ZpeGVkKDIpfTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYCl9LCJ1cGRhdGVDYXJ0U3VtbWFyeSIpO3NldFRpbWVvdXQodCwxMDApLHMucXVlcnlTZWxlY3RvckFsbCgiZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZCIpLmZvckVhY2goYT0+e2EuYWRkRXZlbnRMaXN0ZW5lcigicXVhbnRpdHlDaGFuZ2UiLHQpfSl9fT4KICAgICAgICA8ZGl2IGNsYXNzPSJwcm9kdWN0LWdyaWQiPgogICAgICAgICAgPGRlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmQKICAgICAgICAgICAgaWQ9ImxhcHRvcCIKICAgICAgICAgICAgLnByb2R1Y3REYXRhPSR7e25hbWU6J01hY0Jvb2sgUHJvIDE0IicsY2F0ZWdvcnk6IkNvbXB1dGVycyIsZGVzY3JpcHRpb246Ik0zIFBybyBjaGlwIHdpdGggMThHQiBSQU0iLHByaWNlOjE5OTksb3JpZ2luYWxQcmljZToyMTk5LGljb25OYW1lOiJsdWNpZGU6bGFwdG9wIn19CiAgICAgICAgICAgIC5xdWFudGl0eT0kezF9CiAgICAgICAgICA+PC9kZWVzLXNob3BwaW5nLXByb2R1Y3RjYXJkPgoKICAgICAgICAgIDxkZWVzLXNob3BwaW5nLXByb2R1Y3RjYXJkCiAgICAgICAgICAgIGlkPSJpcGFkIgogICAgICAgICAgICAucHJvZHVjdERhdGE9JHt7bmFtZToiaVBhZCBBaXIiLGNhdGVnb3J5OiJUYWJsZXRzIixkZXNjcmlwdGlvbjonMTAuOSIgTGlxdWlkIFJldGluYSBkaXNwbGF5JyxwcmljZTo1OTksaWNvbk5hbWU6Imx1Y2lkZTp0YWJsZXQifX0KICAgICAgICAgICAgLnF1YW50aXR5PSR7MH0KICAgICAgICAgID48L2RlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmQ+CgogICAgICAgICAgPGRlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmQKICAgICAgICAgICAgaWQ9ImtleWJvYXJkIgogICAgICAgICAgICAucHJvZHVjdERhdGE9JHt7bmFtZToiTWFnaWMgS2V5Ym9hcmQiLGNhdGVnb3J5OiJBY2Nlc3NvcmllcyIsZGVzY3JpcHRpb246IldpcmVsZXNzIGtleWJvYXJkIHdpdGggVG91Y2ggSUQiLHByaWNlOjE0OSxpY29uTmFtZToibHVjaWRlOmtleWJvYXJkIn19CiAgICAgICAgICAgIC5xdWFudGl0eT0kezJ9CiAgICAgICAgICA+PC9kZWVzLXNob3BwaW5nLXByb2R1Y3RjYXJkPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJjYXJ0LXN1bW1hcnkiPgogICAgICAgICAgPGgzIGNsYXNzPSJjYXJ0LXN1bW1hcnktdGl0bGUiPlNob3BwaW5nIENhcnQ8L2gzPgogICAgICAgICAgPGRpdiBpZD0iaW50ZXJhY3RpdmUtY2FydC1zdW1tYXJ5Ij4KICAgICAgICAgICAgPCEtLSBEeW5hbWljYWxseSB1cGRhdGVkIC0tPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJTZWxlY3RhYmxlIFByb2R1Y3QgQ2FyZHMifSAuc3VidGl0bGU9JHsiQ2xpY2sgY2FyZHMgb3IgY2hlY2tib3hlcyB0byBzZWxlY3QgcHJvZHVjdHMifT4KICAgICAgICA8ZGl2IGNsYXNzPSJwcm9kdWN0LWdyaWQiPgogICAgICAgICAgPGRlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmQKICAgICAgICAgICAgLnByb2R1Y3REYXRhPSR7e25hbWU6IlNvbnkgQWxwaGEgNyBJViIsY2F0ZWdvcnk6IkNhbWVyYXMiLGRlc2NyaXB0aW9uOiJGdWxsLWZyYW1lIG1pcnJvcmxlc3MgY2FtZXJhIixwcmljZToyNDk4LGljb25OYW1lOiJsdWNpZGU6Y2FtZXJhIn19CiAgICAgICAgICAgIC5zZWxlY3RhYmxlPSR7ITB9CiAgICAgICAgICAgIC5zaG93UXVhbnRpdHlTZWxlY3Rvcj0keyExfQogICAgICAgICAgICBAc2VsZWN0aW9uQ2hhbmdlPSR7cz0+e2xldCBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNzZWxlY3Rpb24tb3V0cHV0Iik7aWYoZSl7bGV0IHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZFtzZWxlY3RhYmxlXSIpLGE9W107dC5mb3JFYWNoKHI9PntyLnNlbGVjdGVkJiZhLnB1c2goci5wcm9kdWN0RGF0YS5uYW1lKX0pLGUudGV4dENvbnRlbnQ9YS5sZW5ndGg+MD9gU2VsZWN0ZWQ6ICR7YS5qb2luKCIsICIpfWA6Ik5vIHByb2R1Y3RzIHNlbGVjdGVkIn19fQogICAgICAgICAgPjwvZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZD4KCiAgICAgICAgICA8ZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZAogICAgICAgICAgICAucHJvZHVjdERhdGE9JHt7bmFtZToiREpJIE1pbmkgMyBQcm8iLGNhdGVnb3J5OiJEcm9uZXMiLGRlc2NyaXB0aW9uOiJMaWdodHdlaWdodCBkcm9uZSB3aXRoIDRLIGNhbWVyYSIscHJpY2U6NzU5LGljb25OYW1lOiJsdWNpZGU6cGxhbmUifX0KICAgICAgICAgICAgLnNlbGVjdGFibGU9JHshMH0KICAgICAgICAgICAgLnNob3dRdWFudGl0eVNlbGVjdG9yPSR7ITF9CiAgICAgICAgICAgIEBzZWxlY3Rpb25DaGFuZ2U9JHtzPT57bGV0IGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3NlbGVjdGlvbi1vdXRwdXQiKTtpZihlKXtsZXQgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJkZWVzLXNob3BwaW5nLXByb2R1Y3RjYXJkW3NlbGVjdGFibGVdIiksYT1bXTt0LmZvckVhY2gocj0+e3Iuc2VsZWN0ZWQmJmEucHVzaChyLnByb2R1Y3REYXRhLm5hbWUpfSksZS50ZXh0Q29udGVudD1hLmxlbmd0aD4wP2BTZWxlY3RlZDogJHthLmpvaW4oIiwgIil9YDoiTm8gcHJvZHVjdHMgc2VsZWN0ZWQifX19CiAgICAgICAgICA+PC9kZWVzLXNob3BwaW5nLXByb2R1Y3RjYXJkPgoKICAgICAgICAgIDxkZWVzLXNob3BwaW5nLXByb2R1Y3RjYXJkCiAgICAgICAgICAgIC5wcm9kdWN0RGF0YT0ke3tuYW1lOiJHb1BybyBIRVJPMTIiLGNhdGVnb3J5OiJBY3Rpb24gQ2FtZXJhcyIsZGVzY3JpcHRpb246IjUuM0sgdmlkZW8gd2l0aCBIeXBlclNtb290aCA2LjAiLHByaWNlOjM5OSxvcmlnaW5hbFByaWNlOjQ0OSxpY29uTmFtZToibHVjaWRlOnZpZGVvIn19CiAgICAgICAgICAgIC5zZWxlY3RhYmxlPSR7ITB9CiAgICAgICAgICAgIC5zaG93UXVhbnRpdHlTZWxlY3Rvcj0keyExfQogICAgICAgICAgICBAc2VsZWN0aW9uQ2hhbmdlPSR7cz0+e2xldCBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNzZWxlY3Rpb24tb3V0cHV0Iik7aWYoZSl7bGV0IHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZFtzZWxlY3RhYmxlXSIpLGE9W107dC5mb3JFYWNoKHI9PntyLnNlbGVjdGVkJiZhLnB1c2goci5wcm9kdWN0RGF0YS5uYW1lKX0pLGUudGV4dENvbnRlbnQ9YS5sZW5ndGg+MD9gU2VsZWN0ZWQ6ICR7YS5qb2luKCIsICIpfWA6Ik5vIHByb2R1Y3RzIHNlbGVjdGVkIn19fQogICAgICAgICAgPjwvZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZD4KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3RlZC1wcm9kdWN0cyIgaWQ9InNlbGVjdGlvbi1vdXRwdXQiIHN0eWxlPSJtYXJnaW4tdG9wOiAxNnB4OyI+CiAgICAgICAgICBObyBwcm9kdWN0cyBzZWxlY3RlZAogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiUHJvZHVjdCBWYXJpYXRpb25zIn0gLnN1YnRpdGxlPSR7IkRpZmZlcmVudCBzdGF0ZXMgYW5kIGNvbmZpZ3VyYXRpb25zIn0+CiAgICAgICAgPGRpdiBjbGFzcz0icHJvZHVjdC1ncmlkIj4KICAgICAgICAgIDxkZWVzLXNob3BwaW5nLXByb2R1Y3RjYXJkCiAgICAgICAgICAgIC5wcm9kdWN0RGF0YT0ke3tuYW1lOiJMaW1pdGVkIEVkaXRpb24gU25lYWtlcnMiLGNhdGVnb3J5OiJGb290d2VhciIsZGVzY3JpcHRpb246IkV4Y2x1c2l2ZSBjb2xvcndheSAtIE9ubHkgNTAwIHBhaXJzIixwcmljZToyOTksaWNvbk5hbWU6Imx1Y2lkZTpmb290cHJpbnRzIixpblN0b2NrOiExLHN0b2NrVGV4dDoiU29sZCBPdXQifX0KICAgICAgICAgICAgLnF1YW50aXR5PSR7MH0KICAgICAgICAgID48L2RlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmQ+CgogICAgICAgICAgPGRlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmQKICAgICAgICAgICAgLnByb2R1Y3REYXRhPSR7e25hbWU6Ik1pbmltYWxpc3QgV2FsbGV0IixwcmljZTozOS45OSxpY29uTmFtZToibHVjaWRlOndhbGxldCJ9fQogICAgICAgICAgICAucXVhbnRpdHk9JHsxfQogICAgICAgICAgPjwvZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZD4KCiAgICAgICAgICA8ZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZAogICAgICAgICAgICAucHJvZHVjdERhdGE9JHt7bmFtZToiUHJlbWl1bSBDb2ZmZWUgQmVhbnMiLGNhdGVnb3J5OiJGb29kICYgQmV2ZXJhZ2UiLGRlc2NyaXB0aW9uOiJTaW5nbGUgb3JpZ2luLCBtZWRpdW0gcm9hc3QiLHByaWNlOjE4LjUsaWNvbk5hbWU6Imx1Y2lkZTpjb2ZmZWUiLGN1cnJlbmN5OiJcdTIwQUMifX0KICAgICAgICAgICAgLnF1YW50aXR5PSR7Mn0KICAgICAgICAgID48L2RlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmQ+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGl2PgogIDwvZGVlcy1kZW1vd3JhcHBlcj4KYCwiZGVtb0Z1bmMiKX0pO3ZhciB4eCxTMixqSmEsR290PWcoKCk9PntwZSgpO3liYSgpO2h0KCk7bXIoKTt4eD1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sUzI9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LGpKYT0oKCk9PntsZXQgcz1bbmUoImRlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmQiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXTt2YXIgTj1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1Nob3BwaW5nUHJvZHVjdGNhcmQiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgQz10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOk9iamVjdH0pXSxwPVtMKHt0eXBlOk51bWJlcn0pXSxjPVtMKHt0eXBlOkJvb2xlYW59KV0seD1bTCh7dHlwZTpCb29sZWFufSldLHk9W0woe3R5cGU6Qm9vbGVhbn0pXSx4eCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InByb2R1Y3REYXRhIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJwcm9kdWN0RGF0YSJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLnByb2R1Y3REYXRhLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18ucHJvZHVjdERhdGE9T30sInNldCIpfSxtZXRhZGF0YTpDfSxvLGwpLHh4KHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicXVhbnRpdHkiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+InF1YW50aXR5ImluIF8sImhhcyIpLGdldDppKF89Pl8ucXVhbnRpdHksImdldCIpLHNldDppKChfLE8pPT57Xy5xdWFudGl0eT1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LGQsdSkseHgodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93UXVhbnRpdHlTZWxlY3RvciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4ic2hvd1F1YW50aXR5U2VsZWN0b3IiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5zaG93UXVhbnRpdHlTZWxlY3RvciwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLnNob3dRdWFudGl0eVNlbGVjdG9yPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sYix2KSx4eCh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlbGVjdGFibGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+InNlbGVjdGFibGUiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5zZWxlY3RhYmxlLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uc2VsZWN0YWJsZT1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LG0sZikseHgodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWxlY3RlZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4ic2VsZWN0ZWQiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5zZWxlY3RlZCwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLnNlbGVjdGVkPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sTSx6KSx4eChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpDfSxudWxsLHQpLE49YT1lLnZhbHVlLEMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Q30pfXN0YXRpYyBkZW1vPXhiYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIlNpbXBsZSJdOyNlPVMyKHRoaXMsbyx7bmFtZToiUHJvZHVjdCBOYW1lIixwcmljZTowfSk7Z2V0IHByb2R1Y3REYXRhKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHByb2R1Y3REYXRhKEMpe3RoaXMuI2U9Q30jdD0oUzIodGhpcyxsKSxTMih0aGlzLGQsMCkpO2dldCBxdWFudGl0eSgpe3JldHVybiB0aGlzLiN0fXNldCBxdWFudGl0eShDKXt0aGlzLiN0PUN9I2E9KFMyKHRoaXMsdSksUzIodGhpcyxiLCEwKSk7Z2V0IHNob3dRdWFudGl0eVNlbGVjdG9yKCl7cmV0dXJuIHRoaXMuI2F9c2V0IHNob3dRdWFudGl0eVNlbGVjdG9yKEMpe3RoaXMuI2E9Q30jcz0oUzIodGhpcyx2KSxTMih0aGlzLG0sITEpKTtnZXQgc2VsZWN0YWJsZSgpe3JldHVybiB0aGlzLiNzfXNldCBzZWxlY3RhYmxlKEMpe3RoaXMuI3M9Q30jaT0oUzIodGhpcyxmKSxTMih0aGlzLE0sITEpKTtnZXQgc2VsZWN0ZWQoKXtyZXR1cm4gdGhpcy4jaX1zZXQgc2VsZWN0ZWQoQyl7dGhpcy4jaT1DfXN0YXRpYyBzdHlsZXM9W3FlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICAvKiBUT0RPOiBNaWdyYXRlIGhhcmRjb2RlZCB2YWx1ZXMgdG8gLS1kZWVzLSogQ1NTIHZhcmlhYmxlcyAqLwogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KCiAgICAgIGRlZXMtdGlsZSB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CgogICAgICBkZWVzLXRpbGU6aG92ZXI6OnBhcnQob3V0ZXIpIHsKICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLXN0cm9uZyk7CiAgICAgICAgYm94LXNoYWRvdzogMCA0cHggNnB4IC0xcHggaHNsKDAgMCUgMCUgLyAwLjEpLCAwIDJweCA0cHggLTJweCBoc2woMCAwJSAwJSAvIDAuMSk7CiAgICAgIH0KCiAgICAgIGRlZXMtdGlsZS5zZWxlY3RhYmxlIHsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KCiAgICAgIGRlZXMtdGlsZS5zZWxlY3RlZDo6cGFydChvdXRlcikgewogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTcuMiA5MS4yJSA1OS44JSkiLCJoc2woMjEzLjEgOTMuOSUgNjcuOCUpIil9OwogICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCAke2guYmRUaGVtZSgiaHNsKDIxNy4yIDkxLjIlIDU5LjglIC8gMC4xKSIsImhzbCgyMTMuMSA5My45JSA2Ny44JSAvIDAuMSkiKX07CiAgICAgIH0KCiAgICAgIC5wcm9kdWN0LWltYWdlIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDE4MHB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDQwJSA5Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDE2LjglKSIpfTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC5wcm9kdWN0LWltYWdlIGltZyB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG9iamVjdC1maXQ6IGNvdmVyOwogICAgICB9CgogICAgICAucHJvZHVjdC1pbWFnZSBkZWVzLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogNDhweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUgMjAuMiUgNjUuMSUpIiwiaHNsKDIxNSAyMC4yJSAzNS4xJSkiKX07CiAgICAgIH0KCiAgICAgIC5zZWxlY3Rpb24tY2hlY2tib3ggewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDEycHg7CiAgICAgICAgcmlnaHQ6IDEycHg7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxMDAlKSIsImhzbCgyMTUgMzAlIDYuOCUpIil9OwogICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMjE1IDIwLjIlIDY1LjElKSIsImhzbCgyMTUgMjAuMiUgMzUuMSUpIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KCiAgICAgIC5zZWxlY3Rpb24tY2hlY2tib3guY2hlY2tlZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTcuMiA5MS4yJSA1OS44JSkiLCJoc2woMjEzLjEgOTMuOSUgNjcuOCUpIil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTcuMiA5MS4yJSA1OS44JSkiLCJoc2woMjEzLjEgOTMuOSUgNjcuOCUpIil9OwogICAgICB9CgogICAgICAuc2VsZWN0aW9uLWNoZWNrYm94IGRlZXMtaWNvbiB7CiAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTsKICAgICAgfQoKICAgICAgLnNlbGVjdGlvbi1jaGVja2JveC5jaGVja2VkIGRlZXMtaWNvbiB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgICB9CgogICAgICAucHJvZHVjdC1oZWFkZXItYmFyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGhlaWdodDogMzJweDsKICAgICAgICBwYWRkaW5nOiAwIDE2cHg7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgIH0KCiAgICAgIC5wcm9kdWN0LW5hbWUgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgIH0KCiAgICAgIC5wcm9kdWN0LWNhdGVnb3J5IHsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuNCAxNi4zJSA1Ni45JSkiLCJoc2woMjE1IDIwLjIlIDU1LjElKSIpfTsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQoKICAgICAgLnByb2R1Y3QtYm9keSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgLnByb2R1Y3QtY29udGVudCB7CiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBmbGV4OiAxOwogICAgICB9CiAgICAgIAogICAgICAucHJvZHVjdC1kZXNjcmlwdGlvbiB7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDQ2LjklKSIsImhzbCgyMTUgMjAuMiUgNjUuMSUpIil9OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICAgICAgZmxleDogMTsKICAgICAgfQogICAgICAKICAgICAgLnByb2R1Y3QtZm9vdGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGdhcDogMTZweDsKICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLnByb2R1Y3QtcHJpY2UgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDJweDsKICAgICAgfQoKICAgICAgLnByaWNlLWN1cnJlbnQgewogICAgICAgIGZvbnQtc2l6ZTogMjBweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIH0KCiAgICAgIC5wcmljZS1vcmlnaW5hbCB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDU2LjklKSIsImhzbCgyMTUgMjAuMiUgNTUuMSUpIil9OwogICAgICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoOwogICAgICB9CgogICAgICAuc3RvY2stc3RhdHVzIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBtYXJnaW4tdG9wOiA4cHg7CiAgICAgIH0KCiAgICAgIC5zdG9jay1zdGF0dXMuaW4tc3RvY2sgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDE0Mi4xIDcwLjYlIDQ1LjMlKSIsImhzbCgxNDIuMSA3Ni4yJSAzNi4zJSkiKX07CiAgICAgIH0KCiAgICAgIC5zdG9jay1zdGF0dXMub3V0LW9mLXN0b2NrIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDcyLjIlIDUwLjYlKSIsImhzbCgwIDYyLjglIDMwLjYlKSIpfTsKICAgICAgfQoKICAgICAgLnN0b2NrLXN0YXR1cyBkZWVzLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgfQogICAgYF07cmVuZGVyKCl7bGV0e25hbWU6QyxjYXRlZ29yeTpfLGRlc2NyaXB0aW9uOk8scHJpY2U6JCxvcmlnaW5hbFByaWNlOkUsY3VycmVuY3k6SD0iJCIsaW5TdG9jazprPSEwLHN0b2NrVGV4dDpTPWs/IkluIFN0b2NrIjoiT3V0IG9mIFN0b2NrIixpbWFnZVVybDpJLGljb25OYW1lOlA9Imx1Y2lkZTpwYWNrYWdlIn09dGhpcy5wcm9kdWN0RGF0YSxSPWkoSz0+YCR7SH0ke0sudG9GaXhlZCgyKX1gLCJmb3JtYXRQcmljZSIpO3JldHVybiB3YAogICAgICA8ZGVlcy10aWxlCiAgICAgICAgY2xhc3M9IiR7dGhpcy5zZWxlY3RhYmxlPyJzZWxlY3RhYmxlIjoiIn0gJHt0aGlzLnNlbGVjdGVkPyJzZWxlY3RlZCI6IiJ9IgogICAgICAgIEBjbGljaz0ke3RoaXMuaGFuZGxlQ2FyZENsaWNrfQogICAgICA+CiAgICAgICAgPGRpdiBzbG90PSJoZWFkZXIiIGNsYXNzPSJwcm9kdWN0LWhlYWRlci1iYXIiPgogICAgICAgICAgPHNwYW4gY2xhc3M9InByb2R1Y3QtbmFtZSI+JHtDfTwvc3Bhbj4KICAgICAgICAgICR7Xz93YDxzcGFuIGNsYXNzPSJwcm9kdWN0LWNhdGVnb3J5Ij4ke199PC9zcGFuPmA6IiJ9CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icHJvZHVjdC1ib2R5Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9InByb2R1Y3QtaW1hZ2UiPgogICAgICAgICAgICAke0k/d2AKICAgICAgICAgICAgICA8aW1nIHNyYz0iJHtJfSIgYWx0PSIke0N9Ij4KICAgICAgICAgICAgYDp3YAogICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHtQfT48L2RlZXMtaWNvbj4KICAgICAgICAgICAgYH0KICAgICAgICAgICAgJHt0aGlzLnNlbGVjdGFibGU/d2AKICAgICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICBjbGFzcz0ic2VsZWN0aW9uLWNoZWNrYm94ICR7dGhpcy5zZWxlY3RlZD8iY2hlY2tlZCI6IiJ9IgogICAgICAgICAgICAgICAgQGNsaWNrPSR7Sz0+e0suc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5oYW5kbGVTZWxlY3Rpb25Ub2dnbGUoKX19CiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6Y2hlY2sifT48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYDoiIn0KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icHJvZHVjdC1jb250ZW50Ij4KICAgICAgICAgICAgJHtPP3dgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvZHVjdC1kZXNjcmlwdGlvbiI+JHtPfTwvZGl2PgogICAgICAgICAgICBgOiIifQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdG9jay1zdGF0dXMgJHtrPyJpbi1zdG9jayI6Im91dC1vZi1zdG9jayJ9Ij4KICAgICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7az8ibHVjaWRlOmNoZWNrLWNpcmNsZSI6Imx1Y2lkZTp4LWNpcmNsZSJ9PjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICR7U30KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IHNsb3Q9ImZvb3RlciIgY2xhc3M9InByb2R1Y3QtZm9vdGVyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InByb2R1Y3QtcHJpY2UiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0icHJpY2UtY3VycmVudCI+JHtSKCQpfTwvc3Bhbj4KICAgICAgICAgICAgJHtFJiZFPiQ/d2AKICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHJpY2Utb3JpZ2luYWwiPiR7UihFKX08L3NwYW4+CiAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICR7dGhpcy5zaG93UXVhbnRpdHlTZWxlY3Rvcj93YAogICAgICAgICAgICA8ZGVlcy1pbnB1dC1xdWFudGl0eXNlbGVjdG9yCiAgICAgICAgICAgICAgLnZhbHVlPSR7dGhpcy5xdWFudGl0eX0KICAgICAgICAgICAgICBAY2hhbmdlU3ViamVjdD0ke0s9Pnt0aGlzLnF1YW50aXR5PUsuZGV0YWlsLmdldFZhbHVlKCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgicXVhbnRpdHlDaGFuZ2UiLHtkZXRhaWw6e3F1YW50aXR5OnRoaXMucXVhbnRpdHkscHJvZHVjdERhdGE6dGhpcy5wcm9kdWN0RGF0YX0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKX19CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtcXVhbnRpdHlzZWxlY3Rvcj4KICAgICAgICAgIGA6IiJ9CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy10aWxlPgogICAgYH1oYW5kbGVDYXJkQ2xpY2soKXt0aGlzLnNlbGVjdGFibGUmJih0aGlzLnNlbGVjdGVkPSF0aGlzLnNlbGVjdGVkLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInNlbGVjdGlvbkNoYW5nZSIse2RldGFpbDp7c2VsZWN0ZWQ6dGhpcy5zZWxlY3RlZCxwcm9kdWN0RGF0YTp0aGlzLnByb2R1Y3REYXRhfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpKX1oYW5kbGVTZWxlY3Rpb25Ub2dnbGUoKXt0aGlzLnNlbGVjdGVkPSF0aGlzLnNlbGVjdGVkLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInNlbGVjdGlvbkNoYW5nZSIse2RldGFpbDp7c2VsZWN0ZWQ6dGhpcy5zZWxlY3RlZCxwcm9kdWN0RGF0YTp0aGlzLnByb2R1Y3REYXRhfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWNvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSxTMih0aGlzLHopfXN0YXRpY3tTMihhLHQpfX07cmV0dXJuIE49YX0pKCl9KTt2YXIgd2JhLGtiYT1nKCgpPT57cGUoKTtHb3QoKTt3YmE9aSgoKT0+d2AKICA8ZGVlcy1kZW1vd3JhcHBlcj4KICAgIDxzdHlsZT4KICAgICAgJHtKYAogICAgICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgIGdhcDogMjRweDsKICAgICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgICBtYXgtd2lkdGg6IDEyMDBweDsKICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuc2hvcHBpbmctZ3JpZCB7CiAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMjgwcHgsIDFmcikpOwogICAgICAgICAgZ2FwOiAyMHB4OwogICAgICAgIH0KCiAgICAgICAgLmNhcnQtc3VtbWFyeSB7CiAgICAgICAgICBtYXJnaW4tdG9wOiAyNHB4OwogICAgICAgICAgcGFkZGluZzogMjBweDsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDQwJSA5Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDE2LjglKSIpfTsKICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMjE0LjMgMzEuOCUgOTEuNCUpIiwiaHNsKDIxNSAyMC4yJSAyMS44JSkiKX07CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgfQoKICAgICAgICAuY2FydC1zdW1tYXJ5LXRpdGxlIHsKICAgICAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5JSkiLCJoc2woMCAwJSA5NSUpIil9OwogICAgICAgIH0KCiAgICAgICAgLmNhcnQtaXRlbSB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgIHBhZGRpbmc6IDhweCAwOwogICAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjMgMjUlIDI2LjclKSIsImhzbCgyMTcuOSAxMC42JSA3NC45JSkiKX07CiAgICAgICAgfQoKICAgICAgICAuY2FydC10b3RhbCB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgIHBhZGRpbmctdG9wOiAxNnB4OwogICAgICAgICAgbWFyZ2luLXRvcDogMTZweDsKICAgICAgICAgIGJvcmRlci10b3A6IDJweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDAgMCUgODkuOCUpIiwiaHNsKDAgMCUgMTQuOSUpIil9OwogICAgICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOSUpIiwiaHNsKDAgMCUgOTUlKSIpfTsKICAgICAgICB9CiAgICAgIGB9CiAgICA8L3N0eWxlPgogICAgCiAgICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJCYXNpYyBRdWFudGl0eSBTZWxlY3RvciJ9IC5zdWJ0aXRsZT0keyJTaW1wbGUgcXVhbnRpdHkgaW5wdXQgd2l0aCBpbmNyZW1lbnQvZGVjcmVtZW50IGJ1dHRvbnMifT4KICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRlZXMtaW5wdXQtcXVhbnRpdHlzZWxlY3RvcgogICAgICAgICAgICAubGFiZWw9JHsiUXVhbnRpdHkifQogICAgICAgICAgICAuaW5mb1RleHQ9JHsiU2VsZWN0IHRoZSBkZXNpcmVkIHF1YW50aXR5In0KICAgICAgICAgICAgLmRlc2NyaXB0aW9uPSR7Ik1pbmltdW0gb3JkZXIgcXVhbnRpdHkgaXMgMSBpdGVtIn0KICAgICAgICAgICAgLnZhbHVlPSR7MX0KICAgICAgICAgID48L2RlZXMtaW5wdXQtcXVhbnRpdHlzZWxlY3Rvcj4KCiAgICAgICAgICA8ZGVlcy1pbnB1dC1xdWFudGl0eXNlbGVjdG9yCiAgICAgICAgICAgIC5sYWJlbD0keyJJdGVtcyBpbiBDYXJ0In0KICAgICAgICAgICAgLmluZm9UZXh0PSR7IkFkanVzdCB0aGUgcXVhbnRpdHkgb2YgaXRlbXMifQogICAgICAgICAgICAudmFsdWU9JHszfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1xdWFudGl0eXNlbGVjdG9yPgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICAgIAogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiU2hvcHBpbmcgQ2FydCJ9IC5zdWJ0aXRsZT0keyJNb2Rlcm4gZS1jb21tZXJjZSBwcm9kdWN0IGNhcmRzIHdpdGggaW50ZXJhY3RpdmUgcXVhbnRpdHkgc2VsZWN0b3JzIn0gLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e2xldCBlPWkoKCk9PntsZXQgdD1zLnF1ZXJ5U2VsZWN0b3IoIiNoZWFkcGhvbmVzLXF0eSIpLGE9cy5xdWVyeVNlbGVjdG9yKCIjbW91c2UtcXR5Iikscj1zLnF1ZXJ5U2VsZWN0b3IoIiNrZXlib2FyZC1xdHkiKSxuPXQ/LnF1YW50aXR5fHwwLG89YT8ucXVhbnRpdHl8fDAsbD1yPy5xdWFudGl0eXx8MCxwPTM0OS45OSpuLGQ9OTkuOTkqbyx1PTc5Ljk5KmwsYz1wK2QrdSxiPXMucXVlcnlTZWxlY3RvcigiI2NhcnQtc3VtbWFyeS1jb250ZW50Iik7YiYmKGIuaW5uZXJIVE1MPWAKICAgICAgICAgICAgICAke24+MD9gPGRpdiBjbGFzcz0iY2FydC1pdGVtIj4KICAgICAgICAgICAgICAgIDxzcGFuPlNvbnkgV0gtMTAwMFhNNSAoJHtufSk8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3Bhbj4kJHtwLnRvRml4ZWQoMil9PC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PmA6IiJ9CiAgICAgICAgICAgICAgJHtvPjA/YDxkaXYgY2xhc3M9ImNhcnQtaXRlbSI+CiAgICAgICAgICAgICAgICA8c3Bhbj5Mb2dpdGVjaCBNWCBNYXN0ZXIgM1MgKCR7b30pPC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4+JCR7ZC50b0ZpeGVkKDIpfTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj5gOiIifQogICAgICAgICAgICAgICR7bD4wP2A8ZGl2IGNsYXNzPSJjYXJ0LWl0ZW0iPgogICAgICAgICAgICAgICAgPHNwYW4+S2V5Y2hyb24gSzIgKCR7bH0pPC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4+JCR7dS50b0ZpeGVkKDIpfTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj5gOiIifQogICAgICAgICAgICAgICR7Yz09PTA/JzxkaXYgY2xhc3M9ImNhcnQtaXRlbSIgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgY29sb3I6ICM5OTk7Ij5Zb3VyIGNhcnQgaXMgZW1wdHk8L2Rpdj4nOiIifQogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcnQtdG90YWwiPgogICAgICAgICAgICAgICAgPHNwYW4+VG90YWw8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3Bhbj4kJHtjLnRvRml4ZWQoMil9PC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICBgKX0sInVwZGF0ZUNhcnRTdW1tYXJ5Iik7c2V0VGltZW91dChlLDEwMCkscy5xdWVyeVNlbGVjdG9yQWxsKCJkZWVzLXNob3BwaW5nLXByb2R1Y3RjYXJkIikuZm9yRWFjaCh0PT57dC5hZGRFdmVudExpc3RlbmVyKCJxdWFudGl0eUNoYW5nZSIsZSl9KX19PgogICAgICAgIDxkaXYgY2xhc3M9InNob3BwaW5nLWdyaWQiPgogICAgICAgICAgPGRlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmQKICAgICAgICAgICAgaWQ9ImhlYWRwaG9uZXMtcXR5IgogICAgICAgICAgICAucHJvZHVjdERhdGE9JHt7bmFtZToiU29ueSBXSC0xMDAwWE01IFdpcmVsZXNzIEhlYWRwaG9uZXMiLGNhdGVnb3J5OiJBdWRpbyIsZGVzY3JpcHRpb246IkluZHVzdHJ5LWxlYWRpbmcgbm9pc2UgY2FuY2VsaW5nIHdpdGggQXV0byBOQyBPcHRpbWl6ZXIiLHByaWNlOjM0OS45OSxvcmlnaW5hbFByaWNlOjM5OS45OSxpY29uTmFtZToibHVjaWRlOmhlYWRwaG9uZXMifX0KICAgICAgICAgICAgLnF1YW50aXR5PSR7MX0KICAgICAgICAgID48L2RlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmQ+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLXNob3BwaW5nLXByb2R1Y3RjYXJkCiAgICAgICAgICAgIGlkPSJtb3VzZS1xdHkiCiAgICAgICAgICAgIC5wcm9kdWN0RGF0YT0ke3tuYW1lOiJMb2dpdGVjaCBNWCBNYXN0ZXIgM1MiLGNhdGVnb3J5OiJBY2Nlc3NvcmllcyIsZGVzY3JpcHRpb246IlBlcmZvcm1hbmNlIHdpcmVsZXNzIG1vdXNlIHdpdGggdWx0cmEtZmFzdCBzY3JvbGxpbmciLHByaWNlOjk5Ljk5LGljb25OYW1lOiJsdWNpZGU6bW91c2UtcG9pbnRlciJ9fQogICAgICAgICAgICAucXVhbnRpdHk9JHsyfQogICAgICAgICAgPjwvZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZD4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmQKICAgICAgICAgICAgaWQ9ImtleWJvYXJkLXF0eSIKICAgICAgICAgICAgLnByb2R1Y3REYXRhPSR7e25hbWU6IktleWNocm9uIEsyIFdpcmVsZXNzIE1lY2hhbmljYWwgS2V5Ym9hcmQiLGNhdGVnb3J5OiJLZXlib2FyZHMiLGRlc2NyaXB0aW9uOiJDb21wYWN0IDc1JSBsYXlvdXQgd2l0aCBob3Qtc3dhcHBhYmxlIHN3aXRjaGVzIixwcmljZTo3OS45OSxvcmlnaW5hbFByaWNlOjk0Ljk5LGljb25OYW1lOiJsdWNpZGU6a2V5Ym9hcmQifX0KICAgICAgICAgICAgLnF1YW50aXR5PSR7MX0KICAgICAgICAgID48L2RlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmQ+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9ImNhcnQtc3VtbWFyeSI+CiAgICAgICAgICA8aDMgY2xhc3M9ImNhcnQtc3VtbWFyeS10aXRsZSI+T3JkZXIgU3VtbWFyeTwvaDM+CiAgICAgICAgICA8ZGl2IGlkPSJjYXJ0LXN1bW1hcnktY29udGVudCI+CiAgICAgICAgICAgIDwhLS0gQ29udGVudCB3aWxsIGJlIGR5bmFtaWNhbGx5IHVwZGF0ZWQgLS0+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IlJlcXVpcmVkICYgRGlzYWJsZWQgU3RhdGVzIn0gLnN1YnRpdGxlPSR7IkRpZmZlcmVudCBzdGF0ZXMgZm9yIHZhbGlkYXRpb24gYW5kIHJlc3RyaWN0aW9ucyJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1xdWFudGl0eXNlbGVjdG9yCiAgICAgICAgICAgIC5sYWJlbD0keyJOdW1iZXIgb2YgTGljZW5zZXMifQogICAgICAgICAgICAuaW5mb1RleHQ9JHsiU2VsZWN0IGhvdyBtYW55IGxpY2Vuc2VzIHlvdSBuZWVkIn0KICAgICAgICAgICAgLnJlcXVpcmVkPSR7ITB9CiAgICAgICAgICAgIC52YWx1ZT0kezF9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXF1YW50aXR5c2VsZWN0b3I+CgogICAgICAgICAgPGRlZXMtaW5wdXQtcXVhbnRpdHlzZWxlY3RvcgogICAgICAgICAgICAubGFiZWw9JHsiRml4ZWQgUXVhbnRpdHkifQogICAgICAgICAgICAuaW5mb1RleHQ9JHsiVGhpcyBxdWFudGl0eSBjYW5ub3QgYmUgY2hhbmdlZCJ9CiAgICAgICAgICAgIC5kaXNhYmxlZD0keyEwfQogICAgICAgICAgICAudmFsdWU9JHs1fQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1xdWFudGl0eXNlbGVjdG9yPgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICAgIAogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiT3JkZXIgRm9ybSJ9IC5zdWJ0aXRsZT0keyJDb21wbGV0ZSBvcmRlciBmb3JtIHdpdGggcXVhbnRpdHkgc2VsZWN0aW9uIn0+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQgLmxhYmVsPSR7IkN1c3RvbWVyIE5hbWUifSAucmVxdWlyZWQ9JHshMH0+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1kcm9wZG93bgogICAgICAgICAgICAubGFiZWw9JHsiUHJvZHVjdCJ9CiAgICAgICAgICAgIC5vcHRpb25zPSR7WyJCYXNpYyBQbGFuIiwiUHJvIFBsYW4iLCJFbnRlcnByaXNlIFBsYW4iXX0KICAgICAgICAgICAgLnJlcXVpcmVkPSR7ITB9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LWRyb3Bkb3duPgogICAgICAgICAgPGRlZXMtaW5wdXQtcXVhbnRpdHlzZWxlY3RvcgogICAgICAgICAgICAubGFiZWw9JHsiUXVhbnRpdHkifQogICAgICAgICAgICAuaW5mb1RleHQ9JHsiTnVtYmVyIG9mIGxpY2Vuc2VzIn0KICAgICAgICAgICAgLnZhbHVlPSR7MX0KICAgICAgICAgID48L2RlZXMtaW5wdXQtcXVhbnRpdHlzZWxlY3Rvcj4KICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQKICAgICAgICAgICAgLmxhYmVsPSR7IlNwZWNpYWwgSW5zdHJ1Y3Rpb25zIn0KICAgICAgICAgICAgLmlucHV0VHlwZT0keyJ0ZXh0YXJlYSJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGl2PgogIDwvZGVlcy1kZW1vd3JhcHBlcj4KYCwiZGVtb0Z1bmMiKX0pO3ZhciBTYmEsS290LFlvdCxab3Q9ZygoKT0+e3BlKCk7a3QoKTtFaSgpO2tiYSgpO2h0KCk7U2JhPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxLb3Q9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LFlvdD0oKCk9PntsZXQgcz1bbmUoImRlZXMtaW5wdXQtcXVhbnRpdHlzZWxlY3RvciIpXSxlLHQ9W10sYSxyPUJ0LG4sbz1bXSxsPVtdO3ZhciBwPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzSW5wdXRRdWFudGl0eVNlbGVjdG9yIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpOdW1iZXJ9KV0sU2JhKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidmFsdWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkodT0+InZhbHVlImluIHUsImhhcyIpLGdldDppKHU9PnUudmFsdWUsImdldCIpLHNldDppKCh1LGMpPT57dS52YWx1ZT1jfSwic2V0Iil9LG1ldGFkYXRhOmR9LG8sbCksU2JhKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOmR9LG51bGwsdCkscD1hPWUudmFsdWUsZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpkfSl9c3RhdGljIGRlbW89d2JhO3N0YXRpYyBkZW1vR3JvdXBzPVsiSW5wdXQiXTsjZT1Lb3QodGhpcyxvLDEpO2dldCB2YWx1ZSgpe3JldHVybiB0aGlzLiNlfXNldCB2YWx1ZShkKXt0aGlzLiNlPWR9c3RhdGljIHN0eWxlcz1bcWUsLi4uQnQuYmFzZVN0eWxlcyxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgICAvKiBUT0RPOiBNaWdyYXRlIGhhcmRjb2RlZCB2YWx1ZXMgdG8gLS1kZWVzLSogQ1NTIHZhcmlhYmxlcyAqLwogICAgICAgIDpob3N0IHsKICAgICAgICAgIHdpZHRoOiBhdXRvOwogICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgfQoKICAgICAgICAucXVhbnRpdHktY29udGFpbmVyIHsKICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgICBoZWlnaHQ6IDQwcHg7CiAgICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgICAgbWluLXdpZHRoOiAxMjBweDsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOSUpIiwiaHNsKDAgMCUgOTUlKSIpfTsKICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4OS44JSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAucXVhbnRpdHktY29udGFpbmVyLmRpc2FibGVkIHsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5NS4xJSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4OS44JSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICB9CgogICAgICAgIC5xdWFudGl0eS1jb250YWluZXI6aG92ZXI6bm90KC5kaXNhYmxlZCkgewogICAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNzkuOCUpIiwiaHNsKDAgMCUgMjAuOSUpIil9OwogICAgICAgIH0KCiAgICAgICAgLnF1YW50aXR5LWNvbnRhaW5lcjpmb2N1cy13aXRoaW4gewogICAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDUxLjIlKSIsImhzbCgyMTcuMiA5MS4yJSA1OS44JSkiKX07CiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggJHtoLmJkVGhlbWUoImhzbCgyMjIuMiA0Ny40JSA1MS4yJSAvIDAuMSkiLCJoc2woMjE3LjIgOTEuMiUgNTkuOCUgLyAwLjEpIil9OwogICAgICAgIH0KCiAgICAgICAgLnNlbGVjdG9yIHsKICAgICAgICAgIGZsZXg6IDAgMCA0MHB4OwogICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDU2LjklKSIsImhzbCgyMTUgMjAuMiUgNTUuMSUpIil9OwogICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIH0KCiAgICAgICAgLnNlbGVjdG9yOmhvdmVyIHsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5NS4xJSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDklKSIsImhzbCgwIDAlIDk1JSkiKX07CiAgICAgICAgfQoKICAgICAgICAuc2VsZWN0b3I6YWN0aXZlIHsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5MSUpIiwiaHNsKDAgMCUgMTElKSIpfTsKICAgICAgICB9CgogICAgICAgIC5zZWxlY3Rvci5taW51cyB7CiAgICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDAgMCUgODkuOCUpIiwiaHNsKDAgMCUgMTQuOSUpIil9OwogICAgICAgIH0KCiAgICAgICAgLnNlbGVjdG9yLnBsdXMgewogICAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDAgMCUgODkuOCUpIiwiaHNsKDAgMCUgMTQuOSUpIil9OwogICAgICAgIH0KCiAgICAgICAgLnF1YW50aXR5IHsKICAgICAgICAgIGZsZXg6IDE7CiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtczsKICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMDZlbTsKICAgICAgICB9CgogICAgICAgIC8qIEtleWJvYXJkIG5hdmlnYXRpb24gZm9jdXMgc3R5bGVzICovCiAgICAgICAgLnNlbGVjdG9yOmZvY3VzIHsKICAgICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxMCA0MCUgOTYuMSUpIiwiaHNsKDIxNSAyMC4yJSAxNi44JSkiKX07CiAgICAgICAgICB6LWluZGV4OiAxOwogICAgICAgIH0KCiAgICAgICAgLyogTWluIHZhbHVlIHN0YXRlICovCiAgICAgICAgLnF1YW50aXR5LWNvbnRhaW5lcltkYXRhLW1pbj0idHJ1ZSJdIC5zZWxlY3Rvci5taW51cyB7CiAgICAgICAgICBvcGFjaXR5OiAwLjM7CiAgICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICAgIH0KCiAgICAgICAgLnF1YW50aXR5LWNvbnRhaW5lcltkYXRhLW1pbj0idHJ1ZSJdIC5zZWxlY3Rvci5taW51czpob3ZlciB7CiAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDU2LjklKSIsImhzbCgyMTUgMjAuMiUgNTUuMSUpIil9OwogICAgICAgIH0KCiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iaW5wdXQtd3JhcHBlciI+CiAgICAgICAgJHt0aGlzLmxhYmVsP3dgPGRlZXMtbGFiZWwgLmxhYmVsPSR7dGhpcy5sYWJlbH0gLmluZm9UZXh0PSR7dGhpcy5pbmZvVGV4dH0gLnJlcXVpcmVkPSR7dGhpcy5yZXF1aXJlZH0+PC9kZWVzLWxhYmVsPmA6IiJ9CiAgICAgICAgPGRpdiAKICAgICAgICAgIGNsYXNzPSJxdWFudGl0eS1jb250YWluZXIgJHt0aGlzLmRpc2FibGVkPyJkaXNhYmxlZCI6IiJ9IgogICAgICAgICAgZGF0YS1taW49IiR7dGhpcy52YWx1ZTw9MH0iCiAgICAgICAgPgogICAgICAgICAgPGRpdiAKICAgICAgICAgICAgY2xhc3M9InNlbGVjdG9yIG1pbnVzIiAKICAgICAgICAgICAgQGNsaWNrPSIkeygpPT57dGhpcy5kZWNyZWFzZSgpfX0iCiAgICAgICAgICAgIHRhYmluZGV4PSIke3RoaXMuZGlzYWJsZWQ/Ii0xIjoiMCJ9IgogICAgICAgICAgICBAa2V5ZG93bj0iJHtkPT57KGQua2V5PT09IkVudGVyInx8ZC5rZXk9PT0iICIpJiYoZC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuZGVjcmVhc2UoKSl9fSIKICAgICAgICAgICAgcm9sZT0iYnV0dG9uIgogICAgICAgICAgICBhcmlhLWxhYmVsPSJEZWNyZWFzZSBxdWFudGl0eSIKICAgICAgICAgID7iiJI8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InF1YW50aXR5IiBhcmlhLWxpdmU9InBvbGl0ZSIgYXJpYS1hdG9taWM9InRydWUiPiR7dGhpcy52YWx1ZX08L2Rpdj4KICAgICAgICAgIDxkaXYgCiAgICAgICAgICAgIGNsYXNzPSJzZWxlY3RvciBwbHVzIiAKICAgICAgICAgICAgQGNsaWNrPSIkeygpPT57dGhpcy5pbmNyZWFzZSgpfX0iCiAgICAgICAgICAgIHRhYmluZGV4PSIke3RoaXMuZGlzYWJsZWQ/Ii0xIjoiMCJ9IgogICAgICAgICAgICBAa2V5ZG93bj0iJHtkPT57KGQua2V5PT09IkVudGVyInx8ZC5rZXk9PT0iICIpJiYoZC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuaW5jcmVhc2UoKSl9fSIKICAgICAgICAgICAgcm9sZT0iYnV0dG9uIgogICAgICAgICAgICBhcmlhLWxhYmVsPSJJbmNyZWFzZSBxdWFudGl0eSIKICAgICAgICAgID4rPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgJHt0aGlzLnJlbmRlckRlc2NyaXB0aW9uKCl9CiAgICAgIDwvZGl2PgogICAgYH1pbmNyZWFzZSgpe3RoaXMuZGlzYWJsZWR8fCh0aGlzLnZhbHVlKyssdGhpcy5jaGFuZ2VTdWJqZWN0Lm5leHQodGhpcykpfWRlY3JlYXNlKCl7IXRoaXMuZGlzYWJsZWQmJnRoaXMudmFsdWU+MCYmKHRoaXMudmFsdWUtLSx0aGlzLmNoYW5nZVN1YmplY3QubmV4dCh0aGlzKSl9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy52YWx1ZX1zZXRWYWx1ZShkKXt0aGlzLnZhbHVlPWR9Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLEtvdCh0aGlzLGwpfXN0YXRpY3tLb3QoYSx0KX19O3JldHVybiBwPWF9KSgpfSk7dmFyIF9iYSxNYmE9ZygoKT0+e3BlKCk7SXQoKTt4bygpO19iYT1pKCgpPT53YAogIDxkZWVzLWRlbW93cmFwcGVyPgogICAgPHN0eWxlPgogICAgICAke0pgCiAgICAgICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICAgIG1heC13aWR0aDogMTIwMHB4OwogICAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGRlZXMtcGFuZWwgewogICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZGVlcy1wYW5lbDpsYXN0LWNoaWxkIHsKICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5kZW1vLWdyaWQgewogICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMzAwcHgsIDFmcikpOwogICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAucmVzdWx0LWRpc3BsYXkgewogICAgICAgICAgbWFyZ2luLXRvcDogMTZweDsKICAgICAgICAgIHBhZGRpbmc6IDEycHg7CiAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDEwNSwgMjQyLCAwLjEpOwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICB9CiAgICAgIGB9CiAgICA8L3N0eWxlPgogICAgCiAgICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyIxLiBCYXNpYyBSYWRpbyBHcm91cHMifSAuc3VidGl0bGU9JHsiU2ltcGxlIHN0cmluZyBvcHRpb25zIGZvciBjb21tb24gdXNlIGNhc2VzIn0+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkaXYgY2xhc3M9ImRlbW8tZ3JpZCI+CiAgICAgICAgICAgIDxkZWVzLWlucHV0LXJhZGlvZ3JvdXAKICAgICAgICAgICAgICAubGFiZWw9JHsiU3Vic2NyaXB0aW9uIFBsYW4ifQogICAgICAgICAgICAgIC5vcHRpb25zPSR7WyJCYXNpYyAtICQ5L21vbnRoIiwiUHJvIC0gJDI5L21vbnRoIiwiRW50ZXJwcmlzZSAtICQ5OS9tb250aCJdfQogICAgICAgICAgICAgIC5zZWxlY3RlZE9wdGlvbj0keyJQcm8gLSAkMjkvbW9udGgifQogICAgICAgICAgICAgIC5kZXNjcmlwdGlvbj0keyJDaG9vc2UgeW91ciBzdWJzY3JpcHRpb24gdGllciJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtcmFkaW9ncm91cD4KCiAgICAgICAgICAgIDxkZWVzLWlucHV0LXJhZGlvZ3JvdXAKICAgICAgICAgICAgICAubGFiZWw9JHsiUHJpb3JpdHkgTGV2ZWwifQogICAgICAgICAgICAgIC5vcHRpb25zPSR7WyJIaWdoIiwiTWVkaXVtIiwiTG93Il19CiAgICAgICAgICAgICAgLnNlbGVjdGVkT3B0aW9uPSR7Ik1lZGl1bSJ9CiAgICAgICAgICAgICAgLnJlcXVpcmVkPSR7ITB9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtcmFkaW9ncm91cD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICAgIAogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiMi4gSG9yaXpvbnRhbCBMYXlvdXQifSAuc3VidGl0bGU9JHsiUmFkaW8gZ3JvdXBzIHdpdGggaG9yaXpvbnRhbCBhcnJhbmdlbWVudCJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1yYWRpb2dyb3VwCiAgICAgICAgICAgIC5sYWJlbD0keyJEbyB5b3UgYWdyZWUgd2l0aCB0aGUgdGVybXM/In0KICAgICAgICAgICAgLm9wdGlvbnM9JHtbIlllcyIsIk5vIiwiTWF5YmUiXX0KICAgICAgICAgICAgLmRpcmVjdGlvbj0keyJob3Jpem9udGFsIn0KICAgICAgICAgICAgLnNlbGVjdGVkT3B0aW9uPSR7IlllcyJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXJhZGlvZ3JvdXA+CgogICAgICAgICAgPGRlZXMtaW5wdXQtcmFkaW9ncm91cAogICAgICAgICAgICAubGFiZWw9JHsiRXhwZXJpZW5jZSBMZXZlbCJ9CiAgICAgICAgICAgIC5vcHRpb25zPSR7WyJCZWdpbm5lciIsIkludGVybWVkaWF0ZSIsIkV4cGVydCJdfQogICAgICAgICAgICAuZGlyZWN0aW9uPSR7Imhvcml6b250YWwifQogICAgICAgICAgICAuc2VsZWN0ZWRPcHRpb249JHsiSW50ZXJtZWRpYXRlIn0KICAgICAgICAgICAgLmRlc2NyaXB0aW9uPSR7IlNlbGVjdCB5b3VyIGV4cGVyaWVuY2UgbGV2ZWwgd2l0aCB3ZWIgZGV2ZWxvcG1lbnQifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1yYWRpb2dyb3VwPgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICAgIAogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiMy4gQWR2YW5jZWQgT3B0aW9ucyJ9IC5zdWJ0aXRsZT0keyJVc2luZyBvYmplY3QgZm9ybWF0IHdpdGgga2V5cyBhbmQgcGF5bG9hZHMifT4KICAgICAgICA8ZGVlcy1pbnB1dC1yYWRpb2dyb3VwCiAgICAgICAgICBpZD0iYWR2YW5jZWQtcmFkaW8iCiAgICAgICAgICAubGFiZWw9JHsiU2VsZWN0IFJlZ2lvbiJ9CiAgICAgICAgICAub3B0aW9ucz0ke1t7b3B0aW9uOiJVbml0ZWQgU3RhdGVzIChVUyBFYXN0KSIsa2V5OiJ1cy1lYXN0IixwYXlsb2FkOntyZWdpb246InVzLWVhc3QtMSIsbGF0ZW5jeToyMH19LHtvcHRpb246IkV1cm9wZSAoRnJhbmtmdXJ0KSIsa2V5OiJldS1jZW50cmFsIixwYXlsb2FkOntyZWdpb246ImV1LWNlbnRyYWwtMSIsbGF0ZW5jeTo1MH19LHtvcHRpb246IkFzaWEgUGFjaWZpYyAoU2luZ2Fwb3JlKSIsa2V5OiJhcC1zb3V0aGVhc3QiLHBheWxvYWQ6e3JlZ2lvbjoiYXAtc291dGhlYXN0LTEiLGxhdGVuY3k6MTIwfX1dfQogICAgICAgICAgLnNlbGVjdGVkT3B0aW9uPSR7ImV1LWNlbnRyYWwifQogICAgICAgICAgLmRlc2NyaXB0aW9uPSR7IkNob29zZSB0aGUgY2xvc2VzdCByZWdpb24gZm9yIG9wdGltYWwgcGVyZm9ybWFuY2UifQogICAgICAgICAgQGNoYW5nZT0ke3M9PntsZXQgZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcmVnaW9uLXJlc3VsdCIpO2UmJihlLnRleHRDb250ZW50PSJTZWxlY3RlZDogIitKU09OLnN0cmluZ2lmeShzLmRldGFpbC52YWx1ZSxudWxsLDIpKX19CiAgICAgICAgPjwvZGVlcy1pbnB1dC1yYWRpb2dyb3VwPgogICAgICAgIDxkaXYgaWQ9InJlZ2lvbi1yZXN1bHQiIGNsYXNzPSJyZXN1bHQtZGlzcGxheSI+U2VsZWN0ZWQ6IHsgInJlZ2lvbiI6ICJldS1jZW50cmFsLTEiLCAibGF0ZW5jeSI6IDUwIH08L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjQuIFN1cnZleSBFeGFtcGxlIn0gLnN1YnRpdGxlPSR7Ik11bHRpcGxlIHJhZGlvIGdyb3VwcyBmb3Igc3VydmV5cyBhbmQgZm9ybXMifT4KICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRpdiBjbGFzcz0iZGVtby1ncmlkIj4KICAgICAgICAgICAgPGRlZXMtaW5wdXQtcmFkaW9ncm91cAogICAgICAgICAgICAgIC5sYWJlbD0keyJIb3cgc2F0aXNmaWVkIGFyZSB5b3U/In0KICAgICAgICAgICAgICAub3B0aW9ucz0ke1siVmVyeSBTYXRpc2ZpZWQiLCJTYXRpc2ZpZWQiLCJOZXV0cmFsIiwiRGlzc2F0aXNmaWVkIiwiVmVyeSBEaXNzYXRpc2ZpZWQiXX0KICAgICAgICAgICAgICAuc2VsZWN0ZWRPcHRpb249JHsiU2F0aXNmaWVkIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1yYWRpb2dyb3VwPgoKICAgICAgICAgICAgPGRlZXMtaW5wdXQtcmFkaW9ncm91cAogICAgICAgICAgICAgIC5sYWJlbD0keyJXb3VsZCB5b3UgcmVjb21tZW5kIHVzPyJ9CiAgICAgICAgICAgICAgLm9wdGlvbnM9JHtbIkRlZmluaXRlbHkiLCJQcm9iYWJseSIsIk5vdCBTdXJlIiwiUHJvYmFibHkgTm90IiwiRGVmaW5pdGVseSBOb3QiXX0KICAgICAgICAgICAgICAuc2VsZWN0ZWRPcHRpb249JHsiUHJvYmFibHkifQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LXJhZGlvZ3JvdXA+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjUuIFN0YXRlcyAmIFZhbGlkYXRpb24ifSAuc3VidGl0bGU9JHsiRGlmZmVyZW50IHN0YXRlcyBhbmQgdmFsaWRhdGlvbiBleGFtcGxlcyJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkZW1vLWdyaWQiPgogICAgICAgICAgICA8ZGVlcy1pbnB1dC1yYWRpb2dyb3VwCiAgICAgICAgICAgICAgLmxhYmVsPSR7IlJlcXVpcmVkIFNlbGVjdGlvbiJ9CiAgICAgICAgICAgICAgLm9wdGlvbnM9JHtbIk9wdGlvbiBBIiwiT3B0aW9uIEIiLCJPcHRpb24gQyJdfQogICAgICAgICAgICAgIC5yZXF1aXJlZD0keyEwfQogICAgICAgICAgICAgIC5kZXNjcmlwdGlvbj0keyJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1yYWRpb2dyb3VwPgoKICAgICAgICAgICAgPGRlZXMtaW5wdXQtcmFkaW9ncm91cAogICAgICAgICAgICAgIC5sYWJlbD0keyJEaXNhYmxlZCBTdGF0ZSJ9CiAgICAgICAgICAgICAgLm9wdGlvbnM9JHtbIkRpc2FibGVkIE9wdGlvbiAxIiwiRGlzYWJsZWQgT3B0aW9uIDIiLCJEaXNhYmxlZCBPcHRpb24gMyJdfQogICAgICAgICAgICAgIC5zZWxlY3RlZE9wdGlvbj0keyJEaXNhYmxlZCBPcHRpb24gMiJ9CiAgICAgICAgICAgICAgLmRpc2FibGVkPSR7ITB9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtcmFkaW9ncm91cD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICAgIAogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiNi4gU2V0dGluZ3MgRXhhbXBsZSJ9IC5zdWJ0aXRsZT0keyJDb21tb24gcGF0dGVybnMgaW4gYXBwbGljYXRpb24gc2V0dGluZ3MifT4KICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRlZXMtaW5wdXQtcmFkaW9ncm91cAogICAgICAgICAgICAubGFiZWw9JHsiVGhlbWUgUHJlZmVyZW5jZSJ9CiAgICAgICAgICAgIC5vcHRpb25zPSR7W3tvcHRpb246IkxpZ2h0IFRoZW1lIixrZXk6ImxpZ2h0IixwYXlsb2FkOiJsaWdodCJ9LHtvcHRpb246IkRhcmsgVGhlbWUiLGtleToiZGFyayIscGF5bG9hZDoiZGFyayJ9LHtvcHRpb246IlN5c3RlbSBEZWZhdWx0IixrZXk6InN5c3RlbSIscGF5bG9hZDoiYXV0byJ9XX0KICAgICAgICAgICAgLnNlbGVjdGVkT3B0aW9uPSR7ImRhcmsifQogICAgICAgICAgICAuZGVzY3JpcHRpb249JHsiQ2hvb3NlIGhvdyB0aGUgYXBwbGljYXRpb24gc2hvdWxkIGFwcGVhciJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXJhZGlvZ3JvdXA+CgogICAgICAgICAgPGRlZXMtaW5wdXQtcmFkaW9ncm91cAogICAgICAgICAgICAubGFiZWw9JHsiTm90aWZpY2F0aW9uIEZyZXF1ZW5jeSJ9CiAgICAgICAgICAgIC5vcHRpb25zPSR7WyJBbGwgTm90aWZpY2F0aW9ucyIsIkltcG9ydGFudCBPbmx5IiwiTm9uZSJdfQogICAgICAgICAgICAuc2VsZWN0ZWRPcHRpb249JHsiSW1wb3J0YW50IE9ubHkifQogICAgICAgICAgICAuZGVzY3JpcHRpb249JHsiQ29udHJvbCBob3cgb2Z0ZW4geW91IHJlY2VpdmUgbm90aWZpY2F0aW9ucyJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXJhZGlvZ3JvdXA+CgogICAgICAgICAgPGRlZXMtaW5wdXQtcmFkaW9ncm91cAogICAgICAgICAgICAubGFiZWw9JHsiTGFuZ3VhZ2UifQogICAgICAgICAgICAub3B0aW9ucz0ke1siRW5nbGlzaCIsIkdlcm1hbiIsIkZyZW5jaCIsIlNwYW5pc2giLCJKYXBhbmVzZSJdfQogICAgICAgICAgICAuc2VsZWN0ZWRPcHRpb249JHsiRW5nbGlzaCJ9CiAgICAgICAgICAgIC5kaXJlY3Rpb249JHsiaG9yaXpvbnRhbCJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXJhZGlvZ3JvdXA+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyI3LiBGb3JtIEludGVncmF0aW9uIn0gLnN1YnRpdGxlPSR7IldvcmtzIHNlYW1sZXNzbHkgd2l0aCBkZWVzLWZvcm0ifT4KICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dAogICAgICAgICAgICAubGFiZWw9JHsiUHJvZHVjdCBOYW1lIn0KICAgICAgICAgICAgLnJlcXVpcmVkPSR7ITB9CiAgICAgICAgICAgIC5rZXk9JHsicHJvZHVjdE5hbWUifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1pbnB1dC1yYWRpb2dyb3VwCiAgICAgICAgICAgIC5sYWJlbD0keyJQcm9kdWN0IENhdGVnb3J5In0KICAgICAgICAgICAgLm9wdGlvbnM9JHtbIkVsZWN0cm9uaWNzIiwiQ2xvdGhpbmciLCJCb29rcyIsIkhvbWUgJiBHYXJkZW4iLCJTcG9ydHMiXX0KICAgICAgICAgICAgLnJlcXVpcmVkPSR7ITB9CiAgICAgICAgICAgIC5rZXk9JHsiY2F0ZWdvcnkifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1yYWRpb2dyb3VwPgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1pbnB1dC1yYWRpb2dyb3VwCiAgICAgICAgICAgIC5sYWJlbD0keyJDb25kaXRpb24ifQogICAgICAgICAgICAub3B0aW9ucz0ke1siTmV3IiwiTGlrZSBOZXciLCJHb29kIiwiRmFpciIsIlBvb3IiXX0KICAgICAgICAgICAgLmRpcmVjdGlvbj0keyJob3Jpem9udGFsIn0KICAgICAgICAgICAgLmtleT0keyJjb25kaXRpb24ifQogICAgICAgICAgICAuc2VsZWN0ZWRPcHRpb249JHsiTmV3In0KICAgICAgICAgID48L2RlZXMtaW5wdXQtcmFkaW9ncm91cD4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtaW5wdXQtcmFkaW9ncm91cAogICAgICAgICAgICAubGFiZWw9JHsiU2hpcHBpbmcgU3BlZWQifQogICAgICAgICAgICAub3B0aW9ucz0ke1t7b3B0aW9uOiJTdGFuZGFyZCAoNS03IGRheXMpIixrZXk6InN0YW5kYXJkIixwYXlsb2FkOntkYXlzOjcscHJpY2U6MH19LHtvcHRpb246IkV4cHJlc3MgKDItMyBkYXlzKSIsa2V5OiJleHByZXNzIixwYXlsb2FkOntkYXlzOjMscHJpY2U6MTB9fSx7b3B0aW9uOiJPdmVybmlnaHQiLGtleToib3Zlcm5pZ2h0IixwYXlsb2FkOntkYXlzOjEscHJpY2U6MjV9fV19CiAgICAgICAgICAgIC5zZWxlY3RlZE9wdGlvbj0keyJzdGFuZGFyZCJ9CiAgICAgICAgICAgIC5rZXk9JHsic2hpcHBpbmcifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1yYWRpb2dyb3VwPgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1mb3JtLXN1Ym1pdCAudGV4dD0keyJTdWJtaXQgUHJvZHVjdCJ9PjwvZGVlcy1mb3JtLXN1Ym1pdD4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kaXY+CiAgPC9kZWVzLWRlbW93cmFwcGVyPgpgLCJkZW1vRnVuYyIpfSk7dmFyIExRLEF1LFhvdCxOMWU9ZygoKT0+e3BlKCk7RWkoKTtNYmEoKTtodCgpO0xRPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxBdT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sWG90PSgoKT0+e2xldCBzPVtuZSgiZGVlcy1pbnB1dC1yYWRpb2dyb3VwIildLGUsdD1bXSxhLHI9QnQsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W107dmFyIHk9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNJbnB1dFJhZGlvZ3JvdXAiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgTT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOkFycmF5fSldLHA9W0woKV0sYz1bTCh7dHlwZTpTdHJpbmd9KV0seD1bTCh7dHlwZTpTdHJpbmcscmVmbGVjdDohMH0pXSxMUSh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im9wdGlvbnMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoej0+Im9wdGlvbnMiaW4geiwiaGFzIiksZ2V0Omkoej0+ei5vcHRpb25zLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3oub3B0aW9ucz1OfSwic2V0Iil9LG1ldGFkYXRhOk19LG8sbCksTFEodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWxlY3RlZE9wdGlvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4ic2VsZWN0ZWRPcHRpb24iaW4geiwiaGFzIiksZ2V0Omkoej0+ei5zZWxlY3RlZE9wdGlvbiwiZ2V0Iiksc2V0OmkoKHosTik9Pnt6LnNlbGVjdGVkT3B0aW9uPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sZCx1KSxMUSh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImRpcmVjdGlvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4iZGlyZWN0aW9uImluIHosImhhcyIpLGdldDppKHo9PnouZGlyZWN0aW9uLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3ouZGlyZWN0aW9uPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sYix2KSxMUSh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InZhbGlkYXRpb25TdGF0ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4idmFsaWRhdGlvblN0YXRlImluIHosImhhcyIpLGdldDppKHo9PnoudmFsaWRhdGlvblN0YXRlLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3oudmFsaWRhdGlvblN0YXRlPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sbSxmKSxMUShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpNfSxudWxsLHQpLHk9YT1lLnZhbHVlLE0mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6TX0pfXN0YXRpYyBkZW1vPV9iYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIklucHV0Il07I2U9QXUodGhpcyxvLFtdKTtnZXQgb3B0aW9ucygpe3JldHVybiB0aGlzLiNlfXNldCBvcHRpb25zKE0pe3RoaXMuI2U9TX0jdD0oQXUodGhpcyxsKSxBdSh0aGlzLGQsIiIpKTtnZXQgc2VsZWN0ZWRPcHRpb24oKXtyZXR1cm4gdGhpcy4jdH1zZXQgc2VsZWN0ZWRPcHRpb24oTSl7dGhpcy4jdD1NfSNhPShBdSh0aGlzLHUpLEF1KHRoaXMsYiwidmVydGljYWwiKSk7Z2V0IGRpcmVjdGlvbigpe3JldHVybiB0aGlzLiNhfXNldCBkaXJlY3Rpb24oTSl7dGhpcy4jYT1NfSNzPShBdSh0aGlzLHYpLEF1KHRoaXMsbSxudWxsKSk7Z2V0IHZhbGlkYXRpb25TdGF0ZSgpe3JldHVybiB0aGlzLiNzfXNldCB2YWxpZGF0aW9uU3RhdGUoTSl7dGhpcy4jcz1NfWdldCB2YWx1ZSgpe2xldCBNPXRoaXMuZ2V0T3B0aW9uQnlLZXkodGhpcy5zZWxlY3RlZE9wdGlvbik7cmV0dXJuIHR5cGVvZiBNPT0ib2JqZWN0IiYmTS5wYXlsb2FkIT09dm9pZCAwP00ucGF5bG9hZDp0aGlzLnNlbGVjdGVkT3B0aW9ufXNldCB2YWx1ZShNKXtpZih0eXBlb2YgTT09InN0cmluZyIpdGhpcy5zZWxlY3RlZE9wdGlvbj1NO2Vsc2V7bGV0IHo9dGhpcy5vcHRpb25zLmZpbmQoTj0+dHlwZW9mIE49PSJvYmplY3QiJiZOLnBheWxvYWQ9PT1NKTt6JiZ0eXBlb2Ygej09Im9iamVjdCImJih0aGlzLnNlbGVjdGVkT3B0aW9uPXoua2V5KX19c3RhdGljIHN0eWxlcz1bcWUsLi4uQnQuYmFzZVN0eWxlcyxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgLyogVE9ETzogTWlncmF0ZSBoYXJkY29kZWQgdmFsdWVzIHRvIC0tZGVlcy0qIENTUyB2YXJpYWJsZXMgKi8KICAgICAgKiB7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCAnUm9ib3RvJywgc2Fucy1zZXJpZjsKICAgICAgfQoKICAgICAgLm1haW5jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDEwcHg7CiAgICAgIH0KCiAgICAgIC5tYWluY29udGFpbmVyLmhvcml6b250YWwgewogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgIGdhcDogMjBweDsKICAgICAgfQoKICAgICAgLnJhZGlvLW9wdGlvbiB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMTBweDsKICAgICAgICBwYWRkaW5nOiA2cHggMDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICB9CgogICAgICAubWFpbmNvbnRhaW5lci5ob3Jpem9udGFsIC5yYWRpby1vcHRpb24gewogICAgICAgIHBhZGRpbmc6IDZweCAyMHB4IDZweCAwOwogICAgICB9CgogICAgICAucmFkaW8tb3B0aW9uOmhvdmVyIC5yYWRpby1jaXJjbGUgewogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUgMjAuMiUgNjUuMSUpIiwiaHNsKDIxNSAyMC4yJSAzNS4xJSkiKX07CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgNDAlIDk2LjElKSIsImhzbCgyMTUgMjAuMiUgMTEuOCUpIil9OwogICAgICB9CgogICAgICAucmFkaW8tb3B0aW9uOmhvdmVyIC5yYWRpby1sYWJlbCB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjMgMjUlIDguOCUpIiwiaHNsKDIxMCA0MCUgOTglKSIpfTsKICAgICAgfQoKICAgICAgLnJhZGlvLWNpcmNsZSB7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDIxNSAyMC4yJSA2NS4xJSkiLCJoc2woMjE1IDIwLjIlIDM1LjElKSIpfTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTAwJSkiLCJoc2woMjE1IDMwJSA2LjglKSIpfTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5yYWRpby1vcHRpb24uc2VsZWN0ZWQgLnJhZGlvLWNpcmNsZSB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNy4yIDkxLjIlIDU5LjglKSIsImhzbCgyMTMuMSA5My45JSA2Ny44JSkiKX07CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTcuMiA5MS4yJSA1OS44JSkiLCJoc2woMjEzLjEgOTMuOSUgNjcuOCUpIil9OwogICAgICB9CgogICAgICAucmFkaW8tb3B0aW9uLnNlbGVjdGVkIC5yYWRpby1jaXJjbGU6OmFmdGVyIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgd2lkdGg6IDhweDsKICAgICAgICBoZWlnaHQ6IDhweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDEwMCUpIiwiaHNsKDIxNSAzMCUgNi44JSkiKX07CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwogICAgICB9CgogICAgICAucmFkaW8tb3B0aW9uLnNlbGVjdGVkIC5yYWRpby1jaXJjbGU6OmFmdGVyIHsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgICB9CgogICAgICAucmFkaW8tY2lyY2xlOmZvY3VzLXZpc2libGUgewogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxMDAlKSIsImhzbCgyMTUgMzAlIDMuOSUpIil9LAogICAgICAgICAgICAgICAgICAgIDAgMCAwIDRweCAke2guYmRUaGVtZSgiaHNsKDIxNy4yIDkxLjIlIDU5LjglKSIsImhzbCgyMTMuMSA5My45JSA2Ny44JSkiKX07CiAgICAgIH0KCiAgICAgIC5yYWRpby1sYWJlbCB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjMgMjUlIDI2LjclKSIsImhzbCgyMTcuOSAxMC42JSA3NC45JSkiKX07CiAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMDZlbTsKICAgICAgICBsaW5lLWhlaWdodDogMjBweDsKICAgICAgfQoKICAgICAgLnJhZGlvLW9wdGlvbi5zZWxlY3RlZCAucmFkaW8tbGFiZWwgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS4zIDI1JSA4LjglKSIsImhzbCgyMTAgNDAlIDk4JSkiKX07CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIC5yYWRpby1vcHRpb24gewogICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSAucmFkaW8tb3B0aW9uOmhvdmVyIC5yYWRpby1jaXJjbGUgewogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUgMjAuMiUgNjUuMSUpIiwiaHNsKDIxNSAyMC4yJSAzNS4xJSkiKX07CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDEwMCUpIiwiaHNsKDIxNSAzMCUgNi44JSkiKX07CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIC5yYWRpby1vcHRpb246aG92ZXIgLnJhZGlvLWxhYmVsIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuMyAyNSUgMjYuNyUpIiwiaHNsKDIxNy45IDEwLjYlIDc0LjklKSIpfTsKICAgICAgfQoKICAgICAgLmxhYmVsLXRleHQgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS4zIDI1JSA4LjglKSIsImhzbCgyMTAgNDAlIDk4JSkiKX07CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDA2ZW07CiAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgICAgIH0KCiAgICAgIC8qIFZhbGlkYXRpb24gc3R5bGVzICovCiAgICAgIDpob3N0KFt2YWxpZGF0aW9uU3RhdGU9ImludmFsaWQiXSkgLnJhZGlvLWNpcmNsZSB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgNzIuMiUgNTAuNiUpIiwiaHNsKDAgNjIuOCUgMzAuNiUpIil9OwogICAgICB9CgogICAgICA6aG9zdChbdmFsaWRhdGlvblN0YXRlPSJpbnZhbGlkIl0pIC5yYWRpby1vcHRpb24uc2VsZWN0ZWQgLnJhZGlvLWNpcmNsZSB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgNzIuMiUgNTAuNiUpIiwiaHNsKDAgNjIuOCUgMzAuNiUpIil9OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCA3Mi4yJSA1MC42JSkiLCJoc2woMCA2Mi44JSAzMC42JSkiKX07CiAgICAgIH0KCiAgICAgIDpob3N0KFt2YWxpZGF0aW9uU3RhdGU9InZhbGlkIl0pIC5yYWRpby1vcHRpb24uc2VsZWN0ZWQgLnJhZGlvLWNpcmNsZSB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDE0Mi4xIDcwLjYlIDQ1LjMlKSIsImhzbCgxNDIuMSA3Ni4yJSAzNi4zJSkiKX07CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgxNDIuMSA3MC42JSA0NS4zJSkiLCJoc2woMTQyLjEgNzYuMiUgMzYuMyUpIil9OwogICAgICB9CgogICAgICA6aG9zdChbdmFsaWRhdGlvblN0YXRlPSJ3YXJuIl0pIC5yYWRpby1vcHRpb24uc2VsZWN0ZWQgLnJhZGlvLWNpcmNsZSB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDQ1LjQgOTMuNCUgNDcuNSUpIiwiaHNsKDQ1LjQgOTMuNCUgNDcuNSUpIil9OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woNDUuNCA5My40JSA0Ny41JSkiLCJoc2woNDUuNCA5My40JSA0Ny41JSkiKX07CiAgICAgIH0KCiAgICAgIC8qIE92ZXJyaWRlIGJhc2UgZ3JpZCBsYXlvdXQgZm9yIHJhZGlvZ3JvdXAgdG8gcHJldmVudCBsYXJnZSBnYXBzICovCiAgICAgIDpob3N0KFtsYWJlbC1wb3NpdGlvbj0ibGVmdCJdKSAuaW5wdXQtd3JhcHBlciB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIGF1dG87CiAgICAgIH0KCiAgICAgIDpob3N0KFtsYWJlbC1wb3NpdGlvbj0icmlnaHQiXSkgLmlucHV0LXdyYXBwZXIgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBhdXRvOwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iaW5wdXQtd3JhcHBlciI+CiAgICAgICAgJHt0aGlzLmxhYmVsP3dgPGRpdiBjbGFzcz0ibGFiZWwtdGV4dCI+JHt0aGlzLmxhYmVsfTwvZGl2PmA6IiJ9CiAgICAgICAgPGRpdiBjbGFzcz0ibWFpbmNvbnRhaW5lciAke3RoaXMuZGlyZWN0aW9ufSI+CiAgICAgICAgICAke3RoaXMub3B0aW9ucy5tYXAoTT0+e2xldCB6PXRoaXMuZ2V0T3B0aW9uS2V5KE0pLE49dGhpcy5nZXRPcHRpb25MYWJlbChNKSxDPXRoaXMuc2VsZWN0ZWRPcHRpb249PT16O3JldHVybiB3YAogICAgICAgICAgICAgIDxkaXYgCiAgICAgICAgICAgICAgICBjbGFzcz0icmFkaW8tb3B0aW9uICR7Qz8ic2VsZWN0ZWQiOiIifSIKICAgICAgICAgICAgICAgIEBjbGljaz0iJHsoKT0+dGhpcy5zZWxlY3RPcHRpb24oeil9IgogICAgICAgICAgICAgICAgQGtleWRvd249IiR7Xz0+dGhpcy5oYW5kbGVLZXlkb3duKF8seil9IgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxkaXYgCiAgICAgICAgICAgICAgICAgIGNsYXNzPSJyYWRpby1jaXJjbGUiIAogICAgICAgICAgICAgICAgICB0YWJpbmRleD0iJHt0aGlzLmRpc2FibGVkPyItMSI6IjAifSIKICAgICAgICAgICAgICAgICAgcm9sZT0icmFkaW8iCiAgICAgICAgICAgICAgICAgIGFyaWEtY2hlY2tlZD0iJHtDfSIKICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD0iJHtOfSIKICAgICAgICAgICAgICAgID48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJhZGlvLWxhYmVsIj4ke059PC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGB9KX0KICAgICAgICA8L2Rpdj4KICAgICAgICAke3RoaXMucmVuZGVyRGVzY3JpcHRpb24oKX0KICAgICAgPC9kaXY+CiAgICBgfWdldE9wdGlvbktleShNKXtyZXR1cm4gdHlwZW9mIE09PSJzdHJpbmciP006TS5rZXl9Z2V0T3B0aW9uTGFiZWwoTSl7cmV0dXJuIHR5cGVvZiBNPT0ic3RyaW5nIj9NOk0ub3B0aW9ufWdldE9wdGlvbkJ5S2V5KE0pe3JldHVybiB0aGlzLm9wdGlvbnMuZmluZCh6PT50aGlzLmdldE9wdGlvbktleSh6KT09PU0pfXNlbGVjdE9wdGlvbihNKXtpZih0aGlzLmRpc2FibGVkKXJldHVybjtsZXQgej10aGlzLnNlbGVjdGVkT3B0aW9uO3RoaXMuc2VsZWN0ZWRPcHRpb249TSx6IT09TSYmKHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNoYW5nZSIse2RldGFpbDp7dmFsdWU6dGhpcy52YWx1ZX0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJpbnB1dCIse2RldGFpbDp7dmFsdWU6dGhpcy52YWx1ZX0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKSx0aGlzLmNoYW5nZVN1YmplY3QubmV4dCh0aGlzKSl9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy52YWx1ZX1zZXRWYWx1ZShNKXt0aGlzLnZhbHVlPU19YXN5bmMgdmFsaWRhdGUoKXtyZXR1cm4gdGhpcy5yZXF1aXJlZCYmIXRoaXMuc2VsZWN0ZWRPcHRpb24/KHRoaXMudmFsaWRhdGlvblN0YXRlPSJpbnZhbGlkIiwhMSk6KHRoaXMudmFsaWRhdGlvblN0YXRlPSJ2YWxpZCIsITApfWFzeW5jIGZpcnN0VXBkYXRlZCgpe2lmKCF0aGlzLnNlbGVjdGVkT3B0aW9uJiZ0aGlzLm9wdGlvbnMubGVuZ3RoPjAmJiF0aGlzLnJlcXVpcmVkKXtsZXQgTT10aGlzLm9wdGlvbnNbMF07dGhpcy5zZWxlY3RlZE9wdGlvbj10aGlzLmdldE9wdGlvbktleShNKX19aGFuZGxlS2V5ZG93bihNLHope3RoaXMuZGlzYWJsZWR8fChNLmtleT09PSIgInx8TS5rZXk9PT0iRW50ZXIiPyhNLnByZXZlbnREZWZhdWx0KCksdGhpcy5zZWxlY3RPcHRpb24oeikpOk0ua2V5PT09IkFycm93RG93biJ8fE0ua2V5PT09IkFycm93UmlnaHQiPyhNLnByZXZlbnREZWZhdWx0KCksdGhpcy5mb2N1c05leHRPcHRpb24oKSk6KE0ua2V5PT09IkFycm93VXAifHxNLmtleT09PSJBcnJvd0xlZnQiKSYmKE0ucHJldmVudERlZmF1bHQoKSx0aGlzLmZvY3VzUHJldmlvdXNPcHRpb24oKSkpfWZvY3VzTmV4dE9wdGlvbigpe2xldCBNPUFycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoIi5yYWRpby1jaXJjbGUiKSksTj0oTS5maW5kSW5kZXgoQz0+Qz09PXRoaXMuc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50KSsxKSVNLmxlbmd0aDtNW05dLmZvY3VzKCl9Zm9jdXNQcmV2aW91c09wdGlvbigpe2xldCBNPUFycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoIi5yYWRpby1jaXJjbGUiKSksej1NLmZpbmRJbmRleChDPT5DPT09dGhpcy5zaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQpLE49ejw9MD9NLmxlbmd0aC0xOnotMTtNW05dLmZvY3VzKCl9Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLEF1KHRoaXMsZil9c3RhdGlje0F1KGEsdCl9fTtyZXR1cm4geT1hfSkoKX0pO3ZhciB6YmEsQ2JhPWcoKCk9PntwZSgpO3piYT1pKCgpPT53YAogIDxzdHlsZT4KICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgIGdhcDogMjRweDsKICAgICAgcGFkZGluZzogMjRweDsKICAgIH0KICAgIC5kZW1vLXNlY3Rpb24gewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICBnYXA6IDEycHg7CiAgICB9CiAgICAuZGVtby1zZWN0aW9uIGgzIHsKICAgICAgbWFyZ2luOiAwIDAgOHB4IDA7CiAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgY29sb3I6ICM4ODg7CiAgICB9CiAgICAuZGVtby1yb3cgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBnYXA6IDEycHg7CiAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIH0KICA8L3N0eWxlPgogIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgIDxoMz5CYXNpYyBVc2FnZTwvaDM+CiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tcm93Ij4KICAgICAgICA8ZGVlcy1mb3JtLXN1Ym1pdD5TdWJtaXQgRm9ybTwvZGVlcy1mb3JtLXN1Ym1pdD4KICAgICAgICA8ZGVlcy1mb3JtLXN1Ym1pdCB0ZXh0PSJXaXRoIFRleHQgUHJvcGVydHkiPjwvZGVlcy1mb3JtLXN1Ym1pdD4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICA8aDM+V2l0aCBJY29ucyAoaW5oZXJpdGVkIGZyb20gRGVlc0J1dHRvbik8L2gzPgogICAgICA8ZGl2IGNsYXNzPSJkZW1vLXJvdyI+CiAgICAgICAgPGRlZXMtZm9ybS1zdWJtaXQgaWNvbj0ibHVjaWRlOnNlbmQiPlN1Ym1pdDwvZGVlcy1mb3JtLXN1Ym1pdD4KICAgICAgICA8ZGVlcy1mb3JtLXN1Ym1pdCBpY29uPSJsdWNpZGU6c2F2ZSIgaWNvblBvc2l0aW9uPSJsZWZ0Ij5TYXZlIEZvcm08L2RlZXMtZm9ybS1zdWJtaXQ+CiAgICAgICAgPGRlZXMtZm9ybS1zdWJtaXQgaWNvbj0ibHVjaWRlOmFycm93LXJpZ2h0IiBpY29uUG9zaXRpb249InJpZ2h0Ij5Db250aW51ZTwvZGVlcy1mb3JtLXN1Ym1pdD4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICA8aDM+QnV0dG9uIFR5cGVzPC9oMz4KICAgICAgPGRpdiBjbGFzcz0iZGVtby1yb3ciPgogICAgICAgIDxkZWVzLWZvcm0tc3VibWl0IHR5cGU9ImhpZ2hsaWdodGVkIiBpY29uPSJsdWNpZGU6c2VuZCI+SGlnaGxpZ2h0ZWQ8L2RlZXMtZm9ybS1zdWJtaXQ+CiAgICAgICAgPGRlZXMtZm9ybS1zdWJtaXQgdHlwZT0ibm9ybWFsIiBpY29uPSJsdWNpZGU6c2VuZCI+Tm9ybWFsPC9kZWVzLWZvcm0tc3VibWl0PgogICAgICAgIDxkZWVzLWZvcm0tc3VibWl0IHR5cGU9ImRpc2NyZWV0IiBpY29uPSJsdWNpZGU6c2VuZCI+RGlzY3JlZXQ8L2RlZXMtZm9ybS1zdWJtaXQ+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgPGgzPlNpemVzPC9oMz4KICAgICAgPGRpdiBjbGFzcz0iZGVtby1yb3ciPgogICAgICAgIDxkZWVzLWZvcm0tc3VibWl0IHNpemU9InNtYWxsIiBpY29uPSJsdWNpZGU6c2VuZCI+U21hbGw8L2RlZXMtZm9ybS1zdWJtaXQ+CiAgICAgICAgPGRlZXMtZm9ybS1zdWJtaXQgc2l6ZT0ibm9ybWFsIiBpY29uPSJsdWNpZGU6c2VuZCI+Tm9ybWFsPC9kZWVzLWZvcm0tc3VibWl0PgogICAgICAgIDxkZWVzLWZvcm0tc3VibWl0IHNpemU9ImxhcmdlIiBpY29uPSJsdWNpZGU6c2VuZCI+TGFyZ2U8L2RlZXMtZm9ybS1zdWJtaXQ+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgPGgzPlN0YXRlczwvaDM+CiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tcm93Ij4KICAgICAgICA8ZGVlcy1mb3JtLXN1Ym1pdCBzdGF0dXM9Im5vcm1hbCIgaWNvbj0ibHVjaWRlOnNlbmQiPk5vcm1hbDwvZGVlcy1mb3JtLXN1Ym1pdD4KICAgICAgICA8ZGVlcy1mb3JtLXN1Ym1pdCBzdGF0dXM9InBlbmRpbmciIGljb249Imx1Y2lkZTpzZW5kIj5QZW5kaW5nPC9kZWVzLWZvcm0tc3VibWl0PgogICAgICAgIDxkZWVzLWZvcm0tc3VibWl0IHN0YXR1cz0ic3VjY2VzcyIgaWNvbj0ibHVjaWRlOmNoZWNrIj5TdWNjZXNzPC9kZWVzLWZvcm0tc3VibWl0PgogICAgICAgIDxkZWVzLWZvcm0tc3VibWl0IHN0YXR1cz0iZXJyb3IiIGljb249Imx1Y2lkZTp4Ij5FcnJvcjwvZGVlcy1mb3JtLXN1Ym1pdD4KICAgICAgICA8ZGVlcy1mb3JtLXN1Ym1pdCBkaXNhYmxlZCBpY29uPSJsdWNpZGU6c2VuZCI+RGlzYWJsZWQ8L2RlZXMtZm9ybS1zdWJtaXQ+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgPGgzPkluIGEgRm9ybSBDb250ZXh0PC9oMz4KICAgICAgPGRlZXMtZm9ybT4KICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0IGxhYmVsPSJOYW1lIiBrZXk9Im5hbWUiPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgIDxkZWVzLWlucHV0LXRleHQgbGFiZWw9IkVtYWlsIiBrZXk9ImVtYWlsIj48L2RlZXMtaW5wdXQtdGV4dD4KICAgICAgICA8ZGVlcy1mb3JtLXN1Ym1pdCBpY29uPSJsdWNpZGU6c2VuZCIgdHlwZT0iaGlnaGxpZ2h0ZWQiPlN1Ym1pdCBGb3JtPC9kZWVzLWZvcm0tc3VibWl0PgogICAgICA8L2RlZXMtZm9ybT4KICAgIDwvZGl2PgogIDwvZGl2PgpgLCJkZW1vRnVuYyIpfSk7dmFyIG40LEtuLFFvdCxXZz1nKCgpPT57Q2JhKCk7cGUoKTtodCgpO240PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxLbj1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sUW90PSgoKT0+e2xldCBzPVtuZSgiZGVlcy1mb3JtLXN1Ym1pdCIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdO3ZhciBIPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzRm9ybVN1Ym1pdCIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBrPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6Qm9vbGVhbixyZWZsZWN0OiEwfSldLHA9W0woe3R5cGU6U3RyaW5nfSldLGM9W0woe3R5cGU6U3RyaW5nfSldLHg9W0woe3R5cGU6U3RyaW5nLHJlZmxlY3Q6ITB9KV0seT1bTCh7dHlwZTpTdHJpbmcscmVmbGVjdDohMH0pXSxOPVtMKHt0eXBlOlN0cmluZ30pXSxPPVtMKHt0eXBlOlN0cmluZ30pXSxuNCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImRpc2FibGVkIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJkaXNhYmxlZCJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLmRpc2FibGVkLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MuZGlzYWJsZWQ9SX0sInNldCIpfSxtZXRhZGF0YTprfSxvLGwpLG40KHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidGV4dCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4idGV4dCJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLnRleHQsImdldCIpLHNldDppKChTLEkpPT57Uy50ZXh0PUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sZCx1KSxuNCh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InN0YXR1cyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4ic3RhdHVzImluIFMsImhhcyIpLGdldDppKFM9PlMuc3RhdHVzLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1Muc3RhdHVzPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sYix2KSxuNCh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InR5cGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+InR5cGUiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy50eXBlLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MudHlwZT1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LG0sZiksbjQodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaXplIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJzaXplImluIFMsImhhcyIpLGdldDppKFM9PlMuc2l6ZSwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLnNpemU9SX0sInNldCIpfSxtZXRhZGF0YTprfSxNLHopLG40KHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaWNvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4iaWNvbiJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLmljb24sImdldCIpLHNldDppKChTLEkpPT57Uy5pY29uPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sQyxfKSxuNCh0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Imljb25Qb3NpdGlvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4iaWNvblBvc2l0aW9uImluIFMsImhhcyIpLGdldDppKFM9PlMuaWNvblBvc2l0aW9uLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MuaWNvblBvc2l0aW9uPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sJCxFKSxuNChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTprfSxudWxsLHQpLEg9YT1lLnZhbHVlLGsmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6a30pfXN0YXRpYyBkZW1vPXpiYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIkZvcm0iLCJCdXR0b24iXTsjZT1Lbih0aGlzLG8sITEpO2dldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLiNlfXNldCBkaXNhYmxlZChrKXt0aGlzLiNlPWt9I3Q9KEtuKHRoaXMsbCksS24odGhpcyxkLHZvaWQgMCkpO2dldCB0ZXh0KCl7cmV0dXJuIHRoaXMuI3R9c2V0IHRleHQoayl7dGhpcy4jdD1rfSNhPShLbih0aGlzLHUpLEtuKHRoaXMsYiwibm9ybWFsIikpO2dldCBzdGF0dXMoKXtyZXR1cm4gdGhpcy4jYX1zZXQgc3RhdHVzKGspe3RoaXMuI2E9a30jcz0oS24odGhpcyx2KSxLbih0aGlzLG0sImRlZmF1bHQiKSk7Z2V0IHR5cGUoKXtyZXR1cm4gdGhpcy4jc31zZXQgdHlwZShrKXt0aGlzLiNzPWt9I2k9KEtuKHRoaXMsZiksS24odGhpcyxNLCJkZWZhdWx0IikpO2dldCBzaXplKCl7cmV0dXJuIHRoaXMuI2l9c2V0IHNpemUoayl7dGhpcy4jaT1rfSNyPShLbih0aGlzLHopLEtuKHRoaXMsQyx2b2lkIDApKTtnZXQgaWNvbigpe3JldHVybiB0aGlzLiNyfXNldCBpY29uKGspe3RoaXMuI3I9a30jbz0oS24odGhpcyxfKSxLbih0aGlzLCQsImxlZnQiKSk7Z2V0IGljb25Qb3NpdGlvbigpe3JldHVybiB0aGlzLiNvfXNldCBpY29uUG9zaXRpb24oayl7dGhpcy4jbz1rfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSxLbih0aGlzLEUpfXN0YXRpYyBzdHlsZXM9W3FlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CiAgICAgIGRlZXMtYnV0dG9uIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkZWVzLWJ1dHRvbgogICAgICAgIC5zdGF0dXM9JHt0aGlzLnN0YXR1c30KICAgICAgICAudHlwZT0ke3RoaXMudHlwZX0KICAgICAgICAuc2l6ZT0ke3RoaXMuc2l6ZX0KICAgICAgICAuaWNvbj0ke3RoaXMuaWNvbn0KICAgICAgICAuaWNvblBvc2l0aW9uPSR7dGhpcy5pY29uUG9zaXRpb259CiAgICAgICAgLnRleHQ9JHt0aGlzLnRleHR9CiAgICAgICAgP2Rpc2FibGVkPSR7dGhpcy5kaXNhYmxlZH0KICAgICAgICBAY2xpY2tlZD0ke3RoaXMuc3VibWl0fQogICAgICA+PC9kZWVzLWJ1dHRvbj4KICAgIGB9YXN5bmMgZmlyc3RVcGRhdGVkKCl7aWYoIXRoaXMudGV4dCl7bGV0IGs9dGhpcy50ZXh0Q29udGVudD8udHJpbSgpO2smJih0aGlzLnRleHQ9ayl9fWFzeW5jIHN1Ym1pdCgpe2lmKHRoaXMuZGlzYWJsZWQpcmV0dXJuO2xldCBrPXRoaXMuY2xvc2VzdCgiZGVlcy1mb3JtIik7ayYmay5nYXRoZXJBbmREaXNwYXRjaCYmay5nYXRoZXJBbmREaXNwYXRjaCgpfWFzeW5jIGZvY3VzKCl7bGV0IGs9YXdhaXQgdGhpcy5kb210b29sc1Byb21pc2U7dGhpcy5kaXNhYmxlZHx8KGF3YWl0IGsuY29udmVuaWVuY2Uuc21hcnRkZWxheS5kZWxheUZvcigwKSx0aGlzLnN1Ym1pdCgpKX1zdGF0aWN7S24oYSx0KX19O3JldHVybiBIPWF9KSgpfSk7dmFyIFRiYSwkYmE9ZygoKT0+e3BlKCk7SXQoKTt4bygpO3l4KCk7V2coKTtUYmE9aSgoKT0+d2AKICA8c3R5bGU+CiAgICAke0pgCiAgICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMjRweDsKICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgIG1heC13aWR0aDogMTIwMHB4OwogICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICB9CiAgICAgIAogICAgICBkZWVzLXBhbmVsIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgICB9CiAgICAgIAogICAgICBkZWVzLXBhbmVsOmxhc3QtY2hpbGQgewogICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgIH0KICAgICAgCiAgICAgIC5ob3Jpem9udGFsLWdyb3VwIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgfQogICAgICAKICAgICAgLnNwYWNlciB7CiAgICAgICAgaGVpZ2h0OiAyMDBweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgY29sb3I6ICM5OTk7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICB9CiAgICBgfQogIDwvc3R5bGU+CiAgCiAgPGRpdiBjbGFzcz0iZGVtby1jb250YWluZXIiPgogICAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e2xldCBlPXMucXVlcnlTZWxlY3RvcignZGVlcy1pbnB1dC1kcm9wZG93bltsYWJlbD0iU2VsZWN0IENvdW50cnkiXScpLHQ9cy5xdWVyeVNlbGVjdG9yKCdkZWVzLWlucHV0LWRyb3Bkb3duW2xhYmVsPSJTZWxlY3QgUm9sZSJdJyk7ZSYmZS5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3RlZE9wdGlvbiIsKGE9Pntjb25zb2xlLmxvZygiQ291bnRyeSBzZWxlY3RlZDoiLGEuZGV0YWlsKX0pKSx0JiZ0LmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdGVkT3B0aW9uIiwoYT0+e2NvbnNvbGUubG9nKCJSb2xlIHNlbGVjdGVkOiIsYS5kZXRhaWwpfSkpfX0+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyIxLiBCYXNpYyBEcm9wZG93bnMifSAuc3VidGl0bGU9JHsiU3RhbmRhcmQgZHJvcGRvd24gd2l0aCBzZWFyY2ggZnVuY3Rpb25hbGl0eSBhbmQgdmFyaW91cyBvcHRpb25zIn0+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkZWVzLWlucHV0LWRyb3Bkb3duCiAgICAgICAgICAgIC5sYWJlbD0keyJTZWxlY3QgQ291bnRyeSJ9CiAgICAgICAgICAgIC5kZXNjcmlwdGlvbj0keyJDaG9vc2UgdGhlIGNvdW50cnkgd2hlcmUgeW91ciBidXNpbmVzcyBpcyByZWdpc3RlcmVkIn0KICAgICAgICAgICAgLm9wdGlvbnM9JHtbe29wdGlvbjoiVW5pdGVkIFN0YXRlcyIsa2V5OiJ1cyJ9LHtvcHRpb246IkNhbmFkYSIsa2V5OiJjYSJ9LHtvcHRpb246Ikdlcm1hbnkiLGtleToiZGUifSx7b3B0aW9uOiJGcmFuY2UiLGtleToiZnIifSx7b3B0aW9uOiJVbml0ZWQgS2luZ2RvbSIsa2V5OiJ1ayJ9LHtvcHRpb246IkF1c3RyYWxpYSIsa2V5OiJhdSJ9LHtvcHRpb246IkphcGFuIixrZXk6ImpwIn0se29wdGlvbjoiQnJhemlsIixrZXk6ImJyIn1dfQogICAgICAgICAgICAuc2VsZWN0ZWRPcHRpb249JHt7b3B0aW9uOiJVbml0ZWQgU3RhdGVzIixrZXk6InVzIn19CiAgICAgICAgICA+PC9kZWVzLWlucHV0LWRyb3Bkb3duPgoKICAgICAgICAgIDxkZWVzLWlucHV0LWRyb3Bkb3duCiAgICAgICAgICAgIC5sYWJlbD0keyJTZWxlY3QgUm9sZSJ9CiAgICAgICAgICAgIC5vcHRpb25zPSR7W3tvcHRpb246IkFkbWluaXN0cmF0b3IiLGtleToiYWRtaW4ifSx7b3B0aW9uOiJFZGl0b3IiLGtleToiZWRpdG9yIn0se29wdGlvbjoiVmlld2VyIixrZXk6InZpZXdlciJ9LHtvcHRpb246Ikd1ZXN0IixrZXk6Imd1ZXN0In1dfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1kcm9wZG93bj4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgogICAgCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57bGV0IGU9cy5xdWVyeVNlbGVjdG9yKCJkZWVzLWlucHV0LWRyb3Bkb3duIik7ZSYmZS5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3RlZE9wdGlvbiIsKHQ9Pntjb25zb2xlLmxvZyhgUHJpb3JpdHkgY2hhbmdlZCB0bzogJHt0LmRldGFpbC5vcHRpb259YCl9KSl9fT4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjIuIFdpdGhvdXQgU2VhcmNoIn0gLnN1YnRpdGxlPSR7IkRyb3Bkb3duIHdpdGggc2VhcmNoIGZ1bmN0aW9uYWxpdHkgZGlzYWJsZWQgZm9yIHNpbXBsZXIgc2VsZWN0aW9uIn0+CiAgICAgICAgPGRlZXMtaW5wdXQtZHJvcGRvd24KICAgICAgICAgIC5sYWJlbD0keyJQcmlvcml0eSBMZXZlbCJ9CiAgICAgICAgICAuZW5hYmxlU2VhcmNoPSR7ITF9CiAgICAgICAgICAub3B0aW9ucz0ke1t7b3B0aW9uOiJIaWdoIixrZXk6ImhpZ2gifSx7b3B0aW9uOiJNZWRpdW0iLGtleToibWVkaXVtIn0se29wdGlvbjoiTG93IixrZXk6ImxvdyJ9XX0KICAgICAgICAgIC5zZWxlY3RlZE9wdGlvbj0ke3tvcHRpb246Ik1lZGl1bSIsa2V5OiJtZWRpdW0ifX0KICAgICAgICA+PC9kZWVzLWlucHV0LWRyb3Bkb3duPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CiAgICAKICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntzLnF1ZXJ5U2VsZWN0b3JBbGwoImRlZXMtaW5wdXQtZHJvcGRvd24iKS5mb3JFYWNoKHQ9Pnt0LmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdGVkT3B0aW9uIiwoYT0+e2xldCByPXQuZ2V0QXR0cmlidXRlKCJsYWJlbCIpO2NvbnNvbGUubG9nKGAke3J9OiAke2EuZGV0YWlsLm9wdGlvbn1gKX0pKX0pfX0+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyIzLiBIb3Jpem9udGFsIExheW91dCJ9IC5zdWJ0aXRsZT0keyJNdWx0aXBsZSBkcm9wZG93bnMgaW4gYSBob3Jpem9udGFsIGxheW91dCBmb3IgY29tcGFjdCBmb3JtcyJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJob3Jpem9udGFsLWdyb3VwIj4KICAgICAgICAgICAgPGRlZXMtaW5wdXQtZHJvcGRvd24KICAgICAgICAgICAgICAubGFiZWw9JHsiRGVwYXJ0bWVudCJ9CiAgICAgICAgICAgICAgLmxheW91dE1vZGU9JHsiaG9yaXpvbnRhbCJ9CiAgICAgICAgICAgICAgLm9wdGlvbnM9JHtbe29wdGlvbjoiRW5naW5lZXJpbmciLGtleToiZW5nIn0se29wdGlvbjoiRGVzaWduIixrZXk6ImRlc2lnbiJ9LHtvcHRpb246Ik1hcmtldGluZyIsa2V5OiJtYXJrZXRpbmcifSx7b3B0aW9uOiJTYWxlcyIsa2V5OiJzYWxlcyJ9XX0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1kcm9wZG93bj4KCiAgICAgICAgICAgIDxkZWVzLWlucHV0LWRyb3Bkb3duCiAgICAgICAgICAgICAgLmxhYmVsPSR7IlRlYW0gU2l6ZSJ9CiAgICAgICAgICAgICAgLmxheW91dE1vZGU9JHsiaG9yaXpvbnRhbCJ9CiAgICAgICAgICAgICAgLmVuYWJsZVNlYXJjaD0keyExfQogICAgICAgICAgICAgIC5vcHRpb25zPSR7W3tvcHRpb246IjEtNSIsa2V5OiJzbWFsbCJ9LHtvcHRpb246IjYtMjAiLGtleToibWVkaXVtIn0se29wdGlvbjoiMjEtNTAiLGtleToibGFyZ2UifSx7b3B0aW9uOiI1MCsiLGtleToieGxhcmdlIn1dfQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LWRyb3Bkb3duPgoKICAgICAgICAgICAgPGRlZXMtaW5wdXQtZHJvcGRvd24KICAgICAgICAgICAgICAubGFiZWw9JHsiTG9jYXRpb24ifQogICAgICAgICAgICAgIC5sYXlvdXRNb2RlPSR7Imhvcml6b250YWwifQogICAgICAgICAgICAgIC5vcHRpb25zPSR7W3tvcHRpb246IlJlbW90ZSIsa2V5OiJyZW1vdGUifSx7b3B0aW9uOiJPbi1zaXRlIixrZXk6Im9uc2l0ZSJ9LHtvcHRpb246Ikh5YnJpZCIsa2V5OiJoeWJyaWQifV19CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtZHJvcGRvd24+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgogICAgCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57bGV0IGU9cy5xdWVyeVNlbGVjdG9yKCJkZWVzLWlucHV0LWRyb3Bkb3duW3JlcXVpcmVkXSIpO2UmJmUuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsKCk9Pntjb25zb2xlLmxvZygiUmVxdWlyZWQgZHJvcGRvd24gbG9zdCBmb2N1cyIpfSl9fT4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjQuIFN0YXRlcyJ9IC5zdWJ0aXRsZT0keyJEaWZmZXJlbnQgc3RhdGVzIGFuZCBjb25maWd1cmF0aW9ucyJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1kcm9wZG93bgogICAgICAgICAgICAubGFiZWw9JHsiUmVxdWlyZWQgRmllbGQifQogICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0KICAgICAgICAgICAgLm9wdGlvbnM9JHtbe29wdGlvbjoiT3B0aW9uIEEiLGtleToiYSJ9LHtvcHRpb246Ik9wdGlvbiBCIixrZXk6ImIifSx7b3B0aW9uOiJPcHRpb24gQyIsa2V5OiJjIn1dfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1kcm9wZG93bj4KCiAgICAgICAgICA8ZGVlcy1pbnB1dC1kcm9wZG93bgogICAgICAgICAgICAubGFiZWw9JHsiRGlzYWJsZWQgRHJvcGRvd24ifQogICAgICAgICAgICAuZGlzYWJsZWQ9JHshMH0KICAgICAgICAgICAgLm9wdGlvbnM9JHtbe29wdGlvbjoiQ2Fubm90IFNlbGVjdCIsa2V5OiJkaXNhYmxlZCJ9XX0KICAgICAgICAgICAgLnNlbGVjdGVkT3B0aW9uPSR7e29wdGlvbjoiQ2Fubm90IFNlbGVjdCIsa2V5OiJkaXNhYmxlZCJ9fQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1kcm9wZG93bj4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgogICAgCiAgICA8ZGl2IGNsYXNzPSJzcGFjZXIiPgogICAgICAoU3BhY2VyIHRvIHRlc3QgZHJvcGRvd24gcG9zaXRpb25pbmcpCiAgICA8L2Rpdj4KICAgIAogICAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e2xldCBlPXMucXVlcnlTZWxlY3RvcigiZGVlcy1pbnB1dC1kcm9wZG93biIpO2UmJmUuYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0ZWRPcHRpb24iLCh0PT57Y29uc29sZS5sb2coIkJvdHRvbSBkcm9wZG93biBzZWxlY3RlZDoiLHQuZGV0YWlsKX0pKX19PgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiNS4gQm90dG9tIFBvc2l0aW9uaW5nIn0gLnN1YnRpdGxlPSR7IkRyb3Bkb3duIHRoYXQgb3BlbnMgdXB3YXJkIHdoZW4gbmVhciBib3R0b20gb2Ygdmlld3BvcnQifT4KICAgICAgICA8ZGVlcy1pbnB1dC1kcm9wZG93bgogICAgICAgICAgLmxhYmVsPSR7Ik9wZW5zIFVwd2FyZCJ9CiAgICAgICAgICAub3B0aW9ucz0ke1t7b3B0aW9uOiJGaXJzdCBPcHRpb24iLGtleToiZmlyc3QifSx7b3B0aW9uOiJTZWNvbmQgT3B0aW9uIixrZXk6InNlY29uZCJ9LHtvcHRpb246IlRoaXJkIE9wdGlvbiIsa2V5OiJ0aGlyZCJ9LHtvcHRpb246IkZvdXJ0aCBPcHRpb24iLGtleToiZm91cnRoIn0se29wdGlvbjoiRmlmdGggT3B0aW9uIixrZXk6ImZpZnRoIn1dfQogICAgICAgID48L2RlZXMtaW5wdXQtZHJvcGRvd24+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57bGV0IGU9cy5xdWVyeVNlbGVjdG9yKCJkZWVzLWlucHV0LWRyb3Bkb3duIiksdD1zLnF1ZXJ5U2VsZWN0b3IoIiNzZWxlY3Rpb24tb3V0cHV0Iik7ZSYmdCYmKHQuaW5uZXJIVE1MPSI8ZW0+U2VsZWN0IGEgcHJvZHVjdCB0byBzZWUgZGV0YWlscy4uLjwvZW0+IixlLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsKGE9PnthLmRldGFpbC52YWx1ZSYmKHQuaW5uZXJIVE1MPWAKICAgICAgICAgICAgICA8c3Ryb25nPlNlbGVjdGVkOjwvc3Ryb25nPiAke2EuZGV0YWlsLnZhbHVlLm9wdGlvbn08YnI+CiAgICAgICAgICAgICAgPHN0cm9uZz5LZXk6PC9zdHJvbmc+ICR7YS5kZXRhaWwudmFsdWUua2V5fTxicj4KICAgICAgICAgICAgICA8c3Ryb25nPlByaWNlOjwvc3Ryb25nPiAkJHthLmRldGFpbC52YWx1ZS5wYXlsb2FkPy5wcmljZXx8Ik4vQSJ9PGJyPgogICAgICAgICAgICAgIDxzdHJvbmc+RmVhdHVyZXM6PC9zdHJvbmc+ICR7YS5kZXRhaWwudmFsdWUucGF5bG9hZD8uZmVhdHVyZXM/LmpvaW4oIiwgIil8fCJOL0EifQogICAgICAgICAgICBgKX0pKSl9fT4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjYuIEV2ZW50IEhhbmRsaW5nICYgUGF5bG9hZCJ9IC5zdWJ0aXRsZT0keyJEcm9wZG93biB3aXRoIHBheWxvYWQgZGF0YSBhbmQgY2hhbmdlIGV2ZW50IGhhbmRsaW5nIn0+CiAgICAgICAgPGRlZXMtaW5wdXQtZHJvcGRvd24KICAgICAgICAgIC5sYWJlbD0keyJTZWxlY3QgUHJvZHVjdCJ9CiAgICAgICAgICAub3B0aW9ucz0ke1t7b3B0aW9uOiJCYXNpYyBQbGFuIixrZXk6ImJhc2ljIixwYXlsb2FkOntwcmljZTo5Ljk5LGZlYXR1cmVzOlsiRmVhdHVyZSBBIl19fSx7b3B0aW9uOiJQcm8gUGxhbiIsa2V5OiJwcm8iLHBheWxvYWQ6e3ByaWNlOjE5Ljk5LGZlYXR1cmVzOlsiRmVhdHVyZSBBIiwiRmVhdHVyZSBCIl19fSx7b3B0aW9uOiJFbnRlcnByaXNlIFBsYW4iLGtleToiZW50ZXJwcmlzZSIscGF5bG9hZDp7cHJpY2U6NDkuOTksZmVhdHVyZXM6WyJGZWF0dXJlIEEiLCJGZWF0dXJlIEIiLCJGZWF0dXJlIEMiXX19XX0KICAgICAgICA+PC9kZWVzLWlucHV0LWRyb3Bkb3duPgogICAgICAgIAogICAgICAgIDxkaXYgaWQ9InNlbGVjdGlvbi1vdXRwdXQiIHN0eWxlPSJtYXJnaW4tdG9wOiAxNnB4OyBwYWRkaW5nOiAxMnB4OyBiYWNrZ3JvdW5kOiByZ2JhKDAsIDEwNSwgMjQyLCAwLjEpOyBib3JkZXItcmFkaXVzOiA0cHg7IGZvbnQtc2l6ZTogMTRweDsiPjwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CgogICAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e2xldCBlPXMucXVlcnlTZWxlY3RvcigiZGVlcy1mb3JtIiksdD1zLnF1ZXJ5U2VsZWN0b3IoJ2RlZXMtaW5wdXQtZHJvcGRvd25ba2V5PSJwcm9qZWN0VHlwZSJdJyksYT1zLnF1ZXJ5U2VsZWN0b3IoJ2RlZXMtaW5wdXQtZHJvcGRvd25ba2V5PSJmcmFtZXdvcmsiXScpO2UmJmUuYWRkRXZlbnRMaXN0ZW5lcigiZm9ybURhdGEiLChyPT57Y29uc29sZS5sb2coIkZvcm0gc3VibWl0dGVkIHdpdGggZGF0YToiLHIuZGV0YWlsLmRhdGEpfSkpLHQmJmEmJnQuYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0ZWRPcHRpb24iLChyPT57bGV0IG49ci5kZXRhaWwua2V5O2NvbnNvbGUubG9nKGBQcm9qZWN0IHR5cGUgY2hhbmdlZCB0bzogJHtufWApfSkpfX0+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyI3LiBGb3JtIEludGVncmF0aW9uIn0gLnN1YnRpdGxlPSR7IkRyb3Bkb3duIHdvcmtpbmcgd2l0aGluIGEgZm9ybSB3aXRoIHZhbGlkYXRpb24ifT4KICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRlZXMtaW5wdXQtZHJvcGRvd24KICAgICAgICAgICAgLmxhYmVsPSR7IlByb2plY3QgVHlwZSJ9CiAgICAgICAgICAgIC5rZXk9JHsicHJvamVjdFR5cGUifQogICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0KICAgICAgICAgICAgLm9wdGlvbnM9JHtbe29wdGlvbjoiV2ViIEFwcGxpY2F0aW9uIixrZXk6IndlYiJ9LHtvcHRpb246Ik1vYmlsZSBBcHBsaWNhdGlvbiIsa2V5OiJtb2JpbGUifSx7b3B0aW9uOiJEZXNrdG9wIEFwcGxpY2F0aW9uIixrZXk6ImRlc2t0b3AifSx7b3B0aW9uOiJBUEkgU2VydmljZSIsa2V5OiJhcGkifV19CiAgICAgICAgICA+PC9kZWVzLWlucHV0LWRyb3Bkb3duPgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1pbnB1dC1kcm9wZG93bgogICAgICAgICAgICAubGFiZWw9JHsiRGV2ZWxvcG1lbnQgRnJhbWV3b3JrIn0KICAgICAgICAgICAgLmtleT0keyJmcmFtZXdvcmsifQogICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0KICAgICAgICAgICAgLm9wdGlvbnM9JHtbe29wdGlvbjoiUmVhY3QiLGtleToicmVhY3QiLHBheWxvYWQ6e3R5cGU6IndlYiJ9fSx7b3B0aW9uOiJWdWUuanMiLGtleToidnVlIixwYXlsb2FkOnt0eXBlOiJ3ZWIifX0se29wdGlvbjoiQW5ndWxhciIsa2V5OiJhbmd1bGFyIixwYXlsb2FkOnt0eXBlOiJ3ZWIifX0se29wdGlvbjoiUmVhY3QgTmF0aXZlIixrZXk6InJlYWN0LW5hdGl2ZSIscGF5bG9hZDp7dHlwZToibW9iaWxlIn19LHtvcHRpb246IkZsdXR0ZXIiLGtleToiZmx1dHRlciIscGF5bG9hZDp7dHlwZToibW9iaWxlIn19LHtvcHRpb246IkVsZWN0cm9uIixrZXk6ImVsZWN0cm9uIixwYXlsb2FkOnt0eXBlOiJkZXNrdG9wIn19XX0KICAgICAgICAgID48L2RlZXMtaW5wdXQtZHJvcGRvd24+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWZvcm0tc3VibWl0IC50ZXh0PSR7IkNyZWF0ZSBQcm9qZWN0In0+PC9kZWVzLWZvcm0tc3VibWl0PgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CiAgPC9kaXY+CmAsImRlbW9GdW5jIil9KTt2YXIgXzIsZ3IsSm90LGVudD1nKCgpPT57cGUoKTtrdCgpO0duKCk7RXIoKTtodCgpO3YyKCk7XzI9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LGdyPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxKb3Q9KCgpPT57bGV0IHM9W25lKCJkZWVzLWlucHV0LWRyb3Bkb3duLXBvcHVwIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W10sSCxrPVtdLFM9W10sSSxQPVtdLFI9W10sSyxWPVtdLFc9W107dmFyIG1lPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzSW5wdXREcm9wZG93blBvcHVwIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IEI9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpBcnJheX0pXSxwPVtMKHt0eXBlOkJvb2xlYW59KV0sYz1bTCh7dHlwZTpCb29sZWFufSldLHg9W0woe2F0dHJpYnV0ZTohMX0pXSx5PVtMKHthdHRyaWJ1dGU6ITF9KV0sTj1bWSgpXSxPPVtZKCldLEg9W1koKV0sST1bWSgpXSxLPVtZKCldLF8yKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToib3B0aW9ucyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4ib3B0aW9ucyJpbiBVLCJoYXMiKSxnZXQ6aShVPT5VLm9wdGlvbnMsImdldCIpLHNldDppKChVLGhlKT0+e1Uub3B0aW9ucz1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxvLGwpLF8yKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZW5hYmxlU2VhcmNoIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFU9PiJlbmFibGVTZWFyY2giaW4gVSwiaGFzIiksZ2V0OmkoVT0+VS5lbmFibGVTZWFyY2gsImdldCIpLHNldDppKChVLGhlKT0+e1UuZW5hYmxlU2VhcmNoPWhlfSwic2V0Iil9LG1ldGFkYXRhOkJ9LGQsdSksXzIodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJvcGVuc1RvVG9wIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFU9PiJvcGVuc1RvVG9wImluIFUsImhhcyIpLGdldDppKFU9PlUub3BlbnNUb1RvcCwiZ2V0Iiksc2V0OmkoKFUsaGUpPT57VS5vcGVuc1RvVG9wPWhlfSwic2V0Iil9LG1ldGFkYXRhOkJ9LGIsdiksXzIodGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0cmlnZ2VyUmVjdCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4idHJpZ2dlclJlY3QiaW4gVSwiaGFzIiksZ2V0OmkoVT0+VS50cmlnZ2VyUmVjdCwiZ2V0Iiksc2V0OmkoKFUsaGUpPT57VS50cmlnZ2VyUmVjdD1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxtLGYpLF8yKHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToib3duZXJDb21wb25lbnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVT0+Im93bmVyQ29tcG9uZW50ImluIFUsImhhcyIpLGdldDppKFU9PlUub3duZXJDb21wb25lbnQsImdldCIpLHNldDppKChVLGhlKT0+e1Uub3duZXJDb21wb25lbnQ9aGV9LCJzZXQiKX0sbWV0YWRhdGE6Qn0sTSx6KSxfMih0aGlzLG51bGwsTix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImZpbHRlcmVkT3B0aW9ucyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4iZmlsdGVyZWRPcHRpb25zImluIFUsImhhcyIpLGdldDppKFU9PlUuZmlsdGVyZWRPcHRpb25zLCJnZXQiKSxzZXQ6aSgoVSxoZSk9PntVLmZpbHRlcmVkT3B0aW9ucz1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxDLF8pLF8yKHRoaXMsbnVsbCxPLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaGlnaGxpZ2h0ZWRJbmRleCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4iaGlnaGxpZ2h0ZWRJbmRleCJpbiBVLCJoYXMiKSxnZXQ6aShVPT5VLmhpZ2hsaWdodGVkSW5kZXgsImdldCIpLHNldDppKChVLGhlKT0+e1UuaGlnaGxpZ2h0ZWRJbmRleD1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSwkLEUpLF8yKHRoaXMsbnVsbCxILHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VhcmNoVmFsdWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVT0+InNlYXJjaFZhbHVlImluIFUsImhhcyIpLGdldDppKFU9PlUuc2VhcmNoVmFsdWUsImdldCIpLHNldDppKChVLGhlKT0+e1Uuc2VhcmNoVmFsdWU9aGV9LCJzZXQiKX0sbWV0YWRhdGE6Qn0sayxTKSxfMih0aGlzLG51bGwsSSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1lbnVaSW5kZXgiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVT0+Im1lbnVaSW5kZXgiaW4gVSwiaGFzIiksZ2V0OmkoVT0+VS5tZW51WkluZGV4LCJnZXQiKSxzZXQ6aSgoVSxoZSk9PntVLm1lbnVaSW5kZXg9aGV9LCJzZXQiKX0sbWV0YWRhdGE6Qn0sUCxSKSxfMih0aGlzLG51bGwsSyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InZpc2libGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVT0+InZpc2libGUiaW4gVSwiaGFzIiksZ2V0OmkoVT0+VS52aXNpYmxlLCJnZXQiKSxzZXQ6aSgoVSxoZSk9PntVLnZpc2libGU9aGV9LCJzZXQiKX0sbWV0YWRhdGE6Qn0sVixXKSxfMihudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpCfSxudWxsLHQpLG1lPWE9ZS52YWx1ZSxCJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOkJ9KX0jZT1ncih0aGlzLG8sW10pO2dldCBvcHRpb25zKCl7cmV0dXJuIHRoaXMuI2V9c2V0IG9wdGlvbnMoQil7dGhpcy4jZT1CfSN0PShncih0aGlzLGwpLGdyKHRoaXMsZCwhMCkpO2dldCBlbmFibGVTZWFyY2goKXtyZXR1cm4gdGhpcy4jdH1zZXQgZW5hYmxlU2VhcmNoKEIpe3RoaXMuI3Q9Qn0jYT0oZ3IodGhpcyx1KSxncih0aGlzLGIsITEpKTtnZXQgb3BlbnNUb1RvcCgpe3JldHVybiB0aGlzLiNhfXNldCBvcGVuc1RvVG9wKEIpe3RoaXMuI2E9Qn0jcz0oZ3IodGhpcyx2KSxncih0aGlzLG0sbnVsbCkpO2dldCB0cmlnZ2VyUmVjdCgpe3JldHVybiB0aGlzLiNzfXNldCB0cmlnZ2VyUmVjdChCKXt0aGlzLiNzPUJ9I2k9KGdyKHRoaXMsZiksZ3IodGhpcyxNLG51bGwpKTtnZXQgb3duZXJDb21wb25lbnQoKXtyZXR1cm4gdGhpcy4jaX1zZXQgb3duZXJDb21wb25lbnQoQil7dGhpcy4jaT1CfSNyPShncih0aGlzLHopLGdyKHRoaXMsQyxbXSkpO2dldCBmaWx0ZXJlZE9wdGlvbnMoKXtyZXR1cm4gdGhpcy4jcn1zZXQgZmlsdGVyZWRPcHRpb25zKEIpe3RoaXMuI3I9Qn0jbz0oZ3IodGhpcyxfKSxncih0aGlzLCQsMCkpO2dldCBoaWdobGlnaHRlZEluZGV4KCl7cmV0dXJuIHRoaXMuI299c2V0IGhpZ2hsaWdodGVkSW5kZXgoQil7dGhpcy4jbz1CfSNuPShncih0aGlzLEUpLGdyKHRoaXMsaywiIikpO2dldCBzZWFyY2hWYWx1ZSgpe3JldHVybiB0aGlzLiNufXNldCBzZWFyY2hWYWx1ZShCKXt0aGlzLiNuPUJ9I2w9KGdyKHRoaXMsUyksZ3IodGhpcyxQLDFlMykpO2dldCBtZW51WkluZGV4KCl7cmV0dXJuIHRoaXMuI2x9c2V0IG1lbnVaSW5kZXgoQil7dGhpcy4jbD1CfSNjPShncih0aGlzLFIpLGdyKHRoaXMsViwhMSkpO2dldCB2aXNpYmxlKCl7cmV0dXJuIHRoaXMuI2N9c2V0IHZpc2libGUoQil7dGhpcy4jYz1CfXdpbmRvd0xheWVyPShncih0aGlzLFcpLG51bGwpO2lzRGVzdHJveWluZz0hMTtzdGF0aWMgc3R5bGVzPVtxZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB3aWR0aDogMDsKICAgICAgICBoZWlnaHQ6IDA7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgZm9udC1mYW1pbHk6ICR7QmF9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTUlKSIsImhzbCgwIDAlIDkwJSkiKX07CiAgICAgIH0KCiAgICAgICogewogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgIC5zZWxlY3Rpb25Cb3ggewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0bzsKICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtLCBvcGFjaXR5OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC04cHgpIHNjYWxlKDAuOTgpOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxMDAlKSIsImhzbCgwIDAlIDMuOSUpIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4OS44JSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgYm94LXNoYWRvdzogMCA0cHggNnB4IC0xcHggaHNsKDAgMCUgMCUgLyAwLjEpLCAwIDJweCA0cHggLTJweCBoc2woMCAwJSAwJSAvIDAuMSk7CiAgICAgICAgbWluLWhlaWdodDogNDBweDsKICAgICAgICBtYXgtaGVpZ2h0OiAzMDBweDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgfQoKICAgICAgLnNlbGVjdGlvbkJveC50b3AgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg4cHgpIHNjYWxlKDAuOTgpOwogICAgICB9CgogICAgICAuc2VsZWN0aW9uQm94LnNob3cgewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CgogICAgICAub3B0aW9ucy1jb250YWluZXIgewogICAgICAgIG1heC1oZWlnaHQ6IDI1MHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgcGFkZGluZzogNHB4OwogICAgICB9CgogICAgICAub3B0aW9uIHsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBsaW5lLWhlaWdodDogMzJweDsKICAgICAgICBwYWRkaW5nOiAwIDhweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgbWFyZ2luOiAycHggMDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTUlKSIsImhzbCgwIDAlIDkwJSkiKX07CiAgICAgIH0KCiAgICAgIC5vcHRpb24uaGlnaGxpZ2h0ZWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5NS4xJSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgIH0KCiAgICAgIC5vcHRpb246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5NS4xJSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5JSkiLCJoc2woMCAwJSA5NSUpIil9OwogICAgICB9CgogICAgICAubm8tb3B0aW9ucyB7CiAgICAgICAgcGFkZGluZzogOHB4OwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA0NS4xJSkiLCJoc2woMCAwJSA2My45JSkiKX07CiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgICB9CgogICAgICAuc2VhcmNoIHsKICAgICAgICBwYWRkaW5nOiA0cHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4OS44JSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4OwogICAgICB9CgogICAgICAuc2VhcmNoIGlucHV0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgcGFkZGluZzogMCA4cHg7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgwIDAlIDg5LjglKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgY29sb3I6IGluaGVyaXQ7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5zZWFyY2ggaW5wdXQ6OnBsYWNlaG9sZGVyIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDYzLjklKSIsImhzbCgwIDAlIDQ1LjElKSIpfTsKICAgICAgfQoKICAgICAgLnNlYXJjaCBpbnB1dDpmb2N1cyB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDUxLjIlKSIsImhzbCgyMTcuMiA5MS4yJSA1OS44JSkiKX07CiAgICAgIH0KCiAgICAgIC5vcHRpb25zLWNvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXIgewogICAgICAgIHdpZHRoOiA4cHg7CiAgICAgIH0KCiAgICAgIC5vcHRpb25zLWNvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sgewogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICB9CgogICAgICAub3B0aW9ucy1jb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgODkuOCUpIiwiaHNsKDAgMCUgMTQuOSUpIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgfQoKICAgICAgLm9wdGlvbnMtY29udGFpbmVyOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDc5LjglKSIsImhzbCgwIDAlIDIwLjklKSIpfTsKICAgICAgfQogICAgYF07cmVuZGVyKCl7aWYoIXRoaXMudHJpZ2dlclJlY3QpcmV0dXJuIHdgYDtsZXQgQj10aGlzLmNvbXB1dGVQb3NpdGlvblN0eWxlKCk7cmV0dXJuIHdgCiAgICAgIDxkaXYKICAgICAgICBjbGFzcz0ic2VsZWN0aW9uQm94ICR7dGhpcy52aXNpYmxlPyJzaG93IjoiIn0gJHt0aGlzLm9wZW5zVG9Ub3A/InRvcCI6ImJvdHRvbSJ9IgogICAgICAgIHN0eWxlPSIke0J9OyB6LWluZGV4OiAke3RoaXMubWVudVpJbmRleH07IgogICAgICA+CiAgICAgICAgJHt0aGlzLmVuYWJsZVNlYXJjaD93YAogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlYXJjaCI+CiAgICAgICAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgICAgICAgdHlwZT0idGV4dCIKICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9IlNlYXJjaCBvcHRpb25zLi4uIgogICAgICAgICAgICAgICAgICAudmFsdWU9IiR7dGhpcy5zZWFyY2hWYWx1ZX0iCiAgICAgICAgICAgICAgICAgIEBpbnB1dD0iJHt0aGlzLmhhbmRsZVNlYXJjaH0iCiAgICAgICAgICAgICAgICAgIEBjbGljaz0iJHtVPT5VLnN0b3BQcm9wYWdhdGlvbigpfSIKICAgICAgICAgICAgICAgICAgQGtleWRvd249IiR7dGhpcy5oYW5kbGVTZWFyY2hLZXlkb3dufSIKICAgICAgICAgICAgICAgIC8+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGA6bnVsbH0KICAgICAgICA8ZGl2IGNsYXNzPSJvcHRpb25zLWNvbnRhaW5lciI+CiAgICAgICAgICAke3RoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aD09PTA/d2A8ZGl2IGNsYXNzPSJuby1vcHRpb25zIj5ObyBvcHRpb25zIGZvdW5kPC9kaXY+YDp0aGlzLmZpbHRlcmVkT3B0aW9ucy5tYXAoKFUsaGUpPT57bGV0IEY9dGhpcy5oaWdobGlnaHRlZEluZGV4PT09aGU7cmV0dXJuIHdgCiAgICAgICAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgICAgICBjbGFzcz0ib3B0aW9uICR7Rj8iaGlnaGxpZ2h0ZWQiOiIifSIKICAgICAgICAgICAgICAgICAgICBAY2xpY2s9IiR7KCk9PnRoaXMuc2VsZWN0T3B0aW9uKFUpfSIKICAgICAgICAgICAgICAgICAgICBAbW91c2VlbnRlcj0iJHsoKT0+dGhpcy5oaWdobGlnaHRlZEluZGV4PWhlfSIKICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICR7VS5vcHRpb259CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgYH0pfQogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9Y29tcHV0ZVBvc2l0aW9uU3R5bGUoKXtsZXQgQj10aGlzLnRyaWdnZXJSZWN0LFU9Qi5sZWZ0LGhlPUIud2lkdGg7aWYodGhpcy5vcGVuc1RvVG9wKXtsZXQgRj13aW5kb3cuaW5uZXJIZWlnaHQtQi50b3ArNDtyZXR1cm5gbGVmdDogJHtVfXB4OyB3aWR0aDogJHtoZX1weDsgYm90dG9tOiAke0Z9cHg7IHRvcDogYXV0b2B9ZWxzZXtsZXQgRj1CLmJvdHRvbSs0O3JldHVybmBsZWZ0OiAke1V9cHg7IHdpZHRoOiAke2hlfXB4OyB0b3A6ICR7Rn1weGB9fWFzeW5jIHNob3coKXt0aGlzLmZpbHRlcmVkT3B0aW9ucz10aGlzLm9wdGlvbnMsdGhpcy5oaWdobGlnaHRlZEluZGV4PTAsdGhpcy5zZWFyY2hWYWx1ZT0iIix0aGlzLndpbmRvd0xheWVyPWF3YWl0IFJvLmNyZWF0ZUFuZFNob3coKSx0aGlzLndpbmRvd0xheWVyLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNsb3NlLXJlcXVlc3QiKSl9KSx0aGlzLm1lbnVaSW5kZXg9X2EuZ2V0TmV4dFpJbmRleCgpLF9hLnJlZ2lzdGVyKHRoaXMsdGhpcy5tZW51WkluZGV4KSx0aGlzLnN0eWxlLnpJbmRleD10aGlzLm1lbnVaSW5kZXgudG9TdHJpbmcoKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMpLGF3YWl0IHV0LnNtYXJ0ZGVsYXkuZGVsYXlGb3IoMCksdGhpcy52aXNpYmxlPSEwLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMuaGFuZGxlU2Nyb2xsT3JSZXNpemUse2NhcHR1cmU6ITAscGFzc2l2ZTohMH0pLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMuaGFuZGxlU2Nyb2xsT3JSZXNpemUse3Bhc3NpdmU6ITB9KX1hc3luYyBoaWRlKCl7dGhpcy5pc0Rlc3Ryb3lpbmd8fCh0aGlzLmlzRGVzdHJveWluZz0hMCx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLmhhbmRsZVNjcm9sbE9yUmVzaXplLHtjYXB0dXJlOiEwfSksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5oYW5kbGVTY3JvbGxPclJlc2l6ZSksX2EudW5yZWdpc3Rlcih0aGlzKSx0aGlzLnNlYXJjaFZhbHVlPSIiLHRoaXMuZmlsdGVyZWRPcHRpb25zPXRoaXMub3B0aW9ucyx0aGlzLmhpZ2hsaWdodGVkSW5kZXg9MCx0aGlzLndpbmRvd0xheWVyJiYodGhpcy53aW5kb3dMYXllci5kZXN0cm95KCksdGhpcy53aW5kb3dMYXllcj1udWxsKSx0aGlzLnZpc2libGU9ITEsYXdhaXQgdXQuc21hcnRkZWxheS5kZWxheUZvcigxNTApLHRoaXMucGFyZW50RWxlbWVudCYmdGhpcy5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMpLHRoaXMuaXNEZXN0cm95aW5nPSExKX1hc3luYyBmb2N1c1NlYXJjaElucHV0KCl7YXdhaXQgdGhpcy51cGRhdGVDb21wbGV0ZTtsZXQgQj10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLnNlYXJjaCBpbnB1dCIpO0ImJkIuZm9jdXMoKX11cGRhdGVPcHRpb25zKEIpe2lmKHRoaXMub3B0aW9ucz1CLHRoaXMuc2VhcmNoVmFsdWUpe2xldCBVPXRoaXMuc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKTt0aGlzLmZpbHRlcmVkT3B0aW9ucz10aGlzLm9wdGlvbnMuZmlsdGVyKGhlPT5oZS5vcHRpb24udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhVKSl9ZWxzZSB0aGlzLmZpbHRlcmVkT3B0aW9ucz10aGlzLm9wdGlvbnM7dGhpcy5oaWdobGlnaHRlZEluZGV4PTB9c2VsZWN0T3B0aW9uKEIpe3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoIm9wdGlvbi1zZWxlY3RlZCIse2RldGFpbDpCfSkpfWhhbmRsZVNlYXJjaD1pKEI9PntsZXQgVT1CLnRhcmdldC52YWx1ZTt0aGlzLnNlYXJjaFZhbHVlPVU7bGV0IGhlPVUudG9Mb3dlckNhc2UoKTt0aGlzLmZpbHRlcmVkT3B0aW9ucz10aGlzLm9wdGlvbnMuZmlsdGVyKEY9PkYub3B0aW9uLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoaGUpKSx0aGlzLmhpZ2hsaWdodGVkSW5kZXg9MH0sImhhbmRsZVNlYXJjaCIpO2hhbmRsZVNlYXJjaEtleWRvd249aShCPT57bGV0IFU9Qi5rZXksaGU9dGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoLTE7VT09PSJBcnJvd0Rvd24iPyhCLnByZXZlbnREZWZhdWx0KCksdGhpcy5oaWdobGlnaHRlZEluZGV4PXRoaXMuaGlnaGxpZ2h0ZWRJbmRleCsxPmhlPzA6dGhpcy5oaWdobGlnaHRlZEluZGV4KzEpOlU9PT0iQXJyb3dVcCI/KEIucHJldmVudERlZmF1bHQoKSx0aGlzLmhpZ2hsaWdodGVkSW5kZXg9dGhpcy5oaWdobGlnaHRlZEluZGV4LTE8MD9oZTp0aGlzLmhpZ2hsaWdodGVkSW5kZXgtMSk6VT09PSJFbnRlciI/KEIucHJldmVudERlZmF1bHQoKSx0aGlzLmZpbHRlcmVkT3B0aW9uc1t0aGlzLmhpZ2hsaWdodGVkSW5kZXhdJiZ0aGlzLnNlbGVjdE9wdGlvbih0aGlzLmZpbHRlcmVkT3B0aW9uc1t0aGlzLmhpZ2hsaWdodGVkSW5kZXhdKSk6VT09PSJFc2NhcGUiJiYoQi5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNsb3NlLXJlcXVlc3QiKSkpfSwiaGFuZGxlU2VhcmNoS2V5ZG93biIpO2hhbmRsZVNjcm9sbE9yUmVzaXplPWkoKCk9Pnt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJyZXBvc2l0aW9uLXJlcXVlc3QiKSl9LCJoYW5kbGVTY3JvbGxPclJlc2l6ZSIpO2FzeW5jIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLmhhbmRsZVNjcm9sbE9yUmVzaXplLHtjYXB0dXJlOiEwfSksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5oYW5kbGVTY3JvbGxPclJlc2l6ZSksX2EudW5yZWdpc3Rlcih0aGlzKX1zdGF0aWN7Z3IoYSx0KX19O3JldHVybiBtZT1hfSkoKX0pO3ZhciB3eCxNMix0bnQsUjFlPWcoKCk9PntwZSgpOyRiYSgpO0VpKCk7RXIoKTtodCgpO2VudCgpO3d4PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxNMj1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sdG50PSgoKT0+e2xldCBzPVtuZSgiZGVlcy1pbnB1dC1kcm9wZG93biIpXSxlLHQ9W10sYSxyPUJ0LG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdO3ZhciBOPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzSW5wdXREcm9wZG93biIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBDPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woKV0scD1bTCgpXSxjPVtMKHt0eXBlOkJvb2xlYW59KV0seD1bTCh7dHlwZTpCb29sZWFuLHJlZmxlY3Q6ITB9KV0seT1bWSgpXSx3eCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im9wdGlvbnMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+Im9wdGlvbnMiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5vcHRpb25zLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18ub3B0aW9ucz1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LG8sbCksd3godGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWxlY3RlZE9wdGlvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4ic2VsZWN0ZWRPcHRpb24iaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5zZWxlY3RlZE9wdGlvbiwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLnNlbGVjdGVkT3B0aW9uPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sZCx1KSx3eCh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImVuYWJsZVNlYXJjaCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4iZW5hYmxlU2VhcmNoImluIF8sImhhcyIpLGdldDppKF89Pl8uZW5hYmxlU2VhcmNoLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uZW5hYmxlU2VhcmNoPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sYix2KSx3eCh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InZpbnRlZ3JhdGVkIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJ2aW50ZWdyYXRlZCJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLnZpbnRlZ3JhdGVkLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18udmludGVncmF0ZWQ9T30sInNldCIpfSxtZXRhZGF0YTpDfSxtLGYpLHd4KHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNPcGVuZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+ImlzT3BlbmVkImluIF8sImhhcyIpLGdldDppKF89Pl8uaXNPcGVuZWQsImdldCIpLHNldDppKChfLE8pPT57Xy5pc09wZW5lZD1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LE0seiksd3gobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6Q30sbnVsbCx0KSxOPWE9ZS52YWx1ZSxDJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOkN9KX1zdGF0aWMgZGVtbz1UYmE7c3RhdGljIGRlbW9Hcm91cHM9WyJJbnB1dCJdOyNlPU0yKHRoaXMsbyxbXSk7Z2V0IG9wdGlvbnMoKXtyZXR1cm4gdGhpcy4jZX1zZXQgb3B0aW9ucyhDKXt0aGlzLiNlPUN9I3Q9KE0yKHRoaXMsbCksTTIodGhpcyxkLG51bGwpKTtnZXQgc2VsZWN0ZWRPcHRpb24oKXtyZXR1cm4gdGhpcy4jdH1zZXQgc2VsZWN0ZWRPcHRpb24oQyl7dGhpcy4jdD1DfWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLnNlbGVjdGVkT3B0aW9ufXNldCB2YWx1ZShDKXt0aGlzLnNlbGVjdGVkT3B0aW9uPUN9I2E9KE0yKHRoaXMsdSksTTIodGhpcyxiLCEwKSk7Z2V0IGVuYWJsZVNlYXJjaCgpe3JldHVybiB0aGlzLiNhfXNldCBlbmFibGVTZWFyY2goQyl7dGhpcy4jYT1DfSNzPShNMih0aGlzLHYpLE0yKHRoaXMsbSwhMSkpO2dldCB2aW50ZWdyYXRlZCgpe3JldHVybiB0aGlzLiNzfXNldCB2aW50ZWdyYXRlZChDKXt0aGlzLiNzPUN9I2k9KE0yKHRoaXMsZiksTTIodGhpcyxNLCExKSk7Z2V0IGlzT3BlbmVkKCl7cmV0dXJuIHRoaXMuI2l9c2V0IGlzT3BlbmVkKEMpe3RoaXMuI2k9Q31wb3B1cEluc3RhbmNlPShNMih0aGlzLHopLG51bGwpO3N0YXRpYyBzdHlsZXM9W3FlLC4uLkJ0LmJhc2VTdHlsZXMsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgICogewogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgIDpob3N0IHsKICAgICAgICBmb250LWZhbWlseTogJHtCYX07CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTUlKSIsImhzbCgwIDAlIDkwJSkiKX07CiAgICAgIH0KCiAgICAgIC5tYWluY29udGFpbmVyIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIC5zZWxlY3RlZEJveCB7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogNDBweDsKICAgICAgICBsaW5lLWhlaWdodDogMzhweDsKICAgICAgICBwYWRkaW5nOiAwIDQwcHggMCAxMnB4OwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4OS44JSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDklKSIsImhzbCgwIDAlIDk1JSkiKX07CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgLnNlbGVjdGVkQm94OmhvdmVyOm5vdCguZGlzYWJsZWQpIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA3OS44JSkiLCJoc2woMCAwJSAyMC45JSkiKX07CiAgICAgIH0KCiAgICAgIC5zZWxlY3RlZEJveDpmb2N1cy12aXNpYmxlIHsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMjIuMiA0Ny40JSA1MS4yJSkiLCJoc2woMjE3LjIgOTEuMiUgNTkuOCUpIil9OwogICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDUxLjIlIC8gMC4xKSIsImhzbCgyMTcuMiA5MS4yJSA1OS44JSAvIDAuMSkiKX07CiAgICAgIH0KCiAgICAgIC5zZWxlY3RlZEJveC5kaXNhYmxlZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk1LjElKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4OS44JSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA2My45JSkiLCJoc2woMCAwJSA0NS4xJSkiKX07CiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgIH0KCiAgICAgIC8qIERyb3Bkb3duIGFycm93ICovCiAgICAgIC5zZWxlY3RlZEJveDo6YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICByaWdodDogMTJweDsKICAgICAgICB0b3A6IDUwJTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICAgICAgd2lkdGg6IDA7CiAgICAgICAgaGVpZ2h0OiAwOwogICAgICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyLXJpZ2h0OiA0cHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyLXRvcDogNHB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMCAwJSA0NS4xJSkiLCJoc2woMCAwJSA2My45JSkiKX07CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5zZWxlY3RlZEJveC5vcGVuOjphZnRlciB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSgxODBkZWcpOwogICAgICB9CgogICAgICAvKiBWaXN1YWxseSBpbnRlZ3JhdGVkIG1vZGU6IHNoZWQgY2hyb21lIHRvIGJsZW5kIGludG8gYSBob3N0IGNvbXBvbmVudAogICAgICAgICAoZS5nLiBhIGRlZXMtdGFibGUgY2VsbCBpbiBlZGl0IG1vZGUpLiAqLwogICAgICA6aG9zdChbdmludGVncmF0ZWRdKSBkZWVzLWxhYmVsIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CiAgICAgIDpob3N0KFt2aW50ZWdyYXRlZF0pIC5tYWluY29udGFpbmVyIHsKICAgICAgICBoZWlnaHQ6IDQwcHg7CiAgICAgIH0KICAgICAgOmhvc3QoW3ZpbnRlZ3JhdGVkXSkgLnNlbGVjdGVkQm94IHsKICAgICAgICBoZWlnaHQ6IDQwcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDQwcHg7CiAgICAgICAgcGFkZGluZzogMCAzMnB4IDAgMTZweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm94LXNoYWRvdzogbm9uZTsKICAgICAgICB0cmFuc2l0aW9uOiBub25lOwogICAgICB9CiAgICAgIDpob3N0KFt2aW50ZWdyYXRlZF0pIC5zZWxlY3RlZEJveDpob3Zlcjpub3QoLmRpc2FibGVkKSwKICAgICAgOmhvc3QoW3ZpbnRlZ3JhdGVkXSkgLnNlbGVjdGVkQm94OmZvY3VzLXZpc2libGUgewogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBib3gtc2hhZG93OiBub25lOwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICB9CiAgICAgIDpob3N0KFt2aW50ZWdyYXRlZF0pIC5zZWxlY3RlZEJveDo6YWZ0ZXIgewogICAgICAgIHJpZ2h0OiAxMnB4OwogICAgICAgIG9wYWNpdHk6IDAuNjsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImlucHV0LXdyYXBwZXIiPgogICAgICAgIDxkZWVzLWxhYmVsIC5sYWJlbD0ke3RoaXMubGFiZWx9IC5pbmZvVGV4dD0ke3RoaXMuaW5mb1RleHR9IC5yZXF1aXJlZD0ke3RoaXMucmVxdWlyZWR9PjwvZGVlcy1sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJtYWluY29udGFpbmVyIj4KICAgICAgICAgIDxkaXYKICAgICAgICAgICAgY2xhc3M9InNlbGVjdGVkQm94ICR7dGhpcy5pc09wZW5lZD8ib3BlbiI6IiJ9ICR7dGhpcy5kaXNhYmxlZD8iZGlzYWJsZWQiOiIifSIKICAgICAgICAgICAgQGNsaWNrPSIkeygpPT4hdGhpcy5kaXNhYmxlZCYmdGhpcy50b2dnbGVTZWxlY3Rpb25Cb3goKX0iCiAgICAgICAgICAgIHRhYmluZGV4PSIke3RoaXMuZGlzYWJsZWQ/Ii0xIjoiMCJ9IgogICAgICAgICAgICBAa2V5ZG93bj0iJHt0aGlzLmhhbmRsZVNlbGVjdGVkQm94S2V5ZG93bn0iCiAgICAgICAgICA+CiAgICAgICAgICAgICR7dGhpcy5zZWxlY3RlZE9wdGlvbj8ub3B0aW9ufHwiU2VsZWN0IGFuIG9wdGlvbiJ9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICAke3RoaXMucmVuZGVyRGVzY3JpcHRpb24oKX0KICAgICAgPC9kaXY+CiAgICBgfWZpcnN0VXBkYXRlZCgpe3RoaXMuc2VsZWN0ZWRPcHRpb249dGhpcy5zZWxlY3RlZE9wdGlvbnx8bnVsbH11cGRhdGVkKEMpe3N1cGVyLnVwZGF0ZWQoQyksQy5oYXMoIm9wdGlvbnMiKSYmdGhpcy5wb3B1cEluc3RhbmNlJiZ0aGlzLmlzT3BlbmVkJiZ0aGlzLnBvcHVwSW5zdGFuY2UudXBkYXRlT3B0aW9ucyh0aGlzLm9wdGlvbnMpfWFzeW5jIHVwZGF0ZVNlbGVjdGlvbihDKXt0aGlzLnNlbGVjdGVkT3B0aW9uPUMsdGhpcy5jbG9zZVBvcHVwKCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgic2VsZWN0ZWRPcHRpb24iLHtkZXRhaWw6QyxidWJibGVzOiEwfSkpLHRoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMpfWFzeW5jIHRvZ2dsZVNlbGVjdGlvbkJveCgpe2lmKHRoaXMuaXNPcGVuZWQpe3RoaXMuY2xvc2VQb3B1cCgpO3JldHVybn10aGlzLmlzT3BlbmVkPSEwO2xldCBfPXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIuc2VsZWN0ZWRCb3giKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxPPXdpbmRvdy5pbm5lckhlaWdodC1fLmJvdHRvbSwkPV8udG9wLEU9TzwzMDAmJiQ+Tzt0aGlzLnBvcHVwSW5zdGFuY2V8fCh0aGlzLnBvcHVwSW5zdGFuY2U9bmV3IEpvdCksdGhpcy5wb3B1cEluc3RhbmNlLm9wdGlvbnM9dGhpcy5vcHRpb25zLHRoaXMucG9wdXBJbnN0YW5jZS5lbmFibGVTZWFyY2g9dGhpcy5lbmFibGVTZWFyY2gsdGhpcy5wb3B1cEluc3RhbmNlLm9wZW5zVG9Ub3A9RSx0aGlzLnBvcHVwSW5zdGFuY2UudHJpZ2dlclJlY3Q9Xyx0aGlzLnBvcHVwSW5zdGFuY2Uub3duZXJDb21wb25lbnQ9dGhpcyx0aGlzLnBvcHVwSW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcigib3B0aW9uLXNlbGVjdGVkIix0aGlzLmhhbmRsZU9wdGlvblNlbGVjdGVkKSx0aGlzLnBvcHVwSW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcigiY2xvc2UtcmVxdWVzdCIsdGhpcy5oYW5kbGVDbG9zZVJlcXVlc3QpLHRoaXMucG9wdXBJbnN0YW5jZS5hZGRFdmVudExpc3RlbmVyKCJyZXBvc2l0aW9uLXJlcXVlc3QiLHRoaXMuaGFuZGxlUmVwb3NpdGlvblJlcXVlc3QpLGF3YWl0IHRoaXMucG9wdXBJbnN0YW5jZS5zaG93KCksdGhpcy5lbmFibGVTZWFyY2gmJmF3YWl0IHRoaXMucG9wdXBJbnN0YW5jZS5mb2N1c1NlYXJjaElucHV0KCl9Y2xvc2VQb3B1cCgpe3RoaXMuaXNPcGVuZWQ9ITEsdGhpcy5wb3B1cEluc3RhbmNlJiYodGhpcy5wb3B1cEluc3RhbmNlLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm9wdGlvbi1zZWxlY3RlZCIsdGhpcy5oYW5kbGVPcHRpb25TZWxlY3RlZCksdGhpcy5wb3B1cEluc3RhbmNlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsb3NlLXJlcXVlc3QiLHRoaXMuaGFuZGxlQ2xvc2VSZXF1ZXN0KSx0aGlzLnBvcHVwSW5zdGFuY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVwb3NpdGlvbi1yZXF1ZXN0Iix0aGlzLmhhbmRsZVJlcG9zaXRpb25SZXF1ZXN0KSx0aGlzLnBvcHVwSW5zdGFuY2UuaGlkZSgpKX1oYW5kbGVPcHRpb25TZWxlY3RlZD1pKEM9PntsZXQgXz1DLmRldGFpbDt0aGlzLnVwZGF0ZVNlbGVjdGlvbihfKX0sImhhbmRsZU9wdGlvblNlbGVjdGVkIik7aGFuZGxlQ2xvc2VSZXF1ZXN0PWkoKCk9Pnt0aGlzLmNsb3NlUG9wdXAoKX0sImhhbmRsZUNsb3NlUmVxdWVzdCIpO2hhbmRsZVJlcG9zaXRpb25SZXF1ZXN0PWkoKCk9PntpZighdGhpcy5wb3B1cEluc3RhbmNlfHwhdGhpcy5pc09wZW5lZClyZXR1cm47bGV0IEM9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5zZWxlY3RlZEJveCIpO2lmKCFDKXJldHVybjtsZXQgXz1DLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKF8uYm90dG9tPDB8fF8udG9wPndpbmRvdy5pbm5lckhlaWdodCl7dGhpcy5jbG9zZVBvcHVwKCk7cmV0dXJufWxldCBPPXdpbmRvdy5pbm5lckhlaWdodC1fLmJvdHRvbSwkPV8udG9wO3RoaXMucG9wdXBJbnN0YW5jZS5vcGVuc1RvVG9wPU88MzAwJiYkPk8sdGhpcy5wb3B1cEluc3RhbmNlLnRyaWdnZXJSZWN0PV99LCJoYW5kbGVSZXBvc2l0aW9uUmVxdWVzdCIpO2hhbmRsZVNlbGVjdGVkQm94S2V5ZG93bihDKXt0aGlzLmRpc2FibGVkfHwoQy5rZXk9PT0iRW50ZXIifHxDLmtleT09PSIgIj8oQy5wcmV2ZW50RGVmYXVsdCgpLHRoaXMudG9nZ2xlU2VsZWN0aW9uQm94KCkpOkMua2V5PT09IkFycm93RG93biJ8fEMua2V5PT09IkFycm93VXAiPyhDLnByZXZlbnREZWZhdWx0KCksdGhpcy5pc09wZW5lZHx8dGhpcy50b2dnbGVTZWxlY3Rpb25Cb3goKSk6Qy5rZXk9PT0iRXNjYXBlIiYmKEMucHJldmVudERlZmF1bHQoKSx0aGlzLmlzT3BlbmVkJiZ0aGlzLmNsb3NlUG9wdXAoKSkpfWdldFZhbHVlKCl7cmV0dXJuIHRoaXMuc2VsZWN0ZWRPcHRpb259c2V0VmFsdWUoQyl7dGhpcy5zZWxlY3RlZE9wdGlvbj1DfWFzeW5jIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLnBvcHVwSW5zdGFuY2UmJih0aGlzLnBvcHVwSW5zdGFuY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigib3B0aW9uLXNlbGVjdGVkIix0aGlzLmhhbmRsZU9wdGlvblNlbGVjdGVkKSx0aGlzLnBvcHVwSW5zdGFuY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xvc2UtcmVxdWVzdCIsdGhpcy5oYW5kbGVDbG9zZVJlcXVlc3QpLHRoaXMucG9wdXBJbnN0YW5jZS5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXBvc2l0aW9uLXJlcXVlc3QiLHRoaXMuaGFuZGxlUmVwb3NpdGlvblJlcXVlc3QpLHRoaXMucG9wdXBJbnN0YW5jZS5oaWRlKCksdGhpcy5wb3B1cEluc3RhbmNlPW51bGwpfXN0YXRpY3tNMihhLHQpfX07cmV0dXJuIE49YX0pKCl9KTt2YXIgRGJhLExiYT1nKCgpPT57cGUoKTthbnQoKTt4bygpO0RiYT1pKCgpPT53YAogIDxkZWVzLWRlbW93cmFwcGVyPgogICAgPHN0eWxlPgogICAgICAke0pgCiAgICAgICAgLmRlbW8tc2hlbGwgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICBnYXA6IDMycHg7CiAgICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgICAgbWF4LXdpZHRoOiAxMTYwcHg7CiAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICB9CgogICAgICAgIC5kZW1vLWdyaWQgewogICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgIGdhcDogMjRweDsKICAgICAgICB9CgogICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA5NjBweCkgewogICAgICAgICAgLmRlbW8tZ3JpZC0tdHdvIHsKICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLmRlbW8tc3RhY2sgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICBnYXA6IDE4cHg7CiAgICAgICAgfQoKICAgICAgICAuZGVtby1ub3RlIHsKICAgICAgICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMjE3IDkxJSA5MCUpIiwiaHNsKDIxNSAyMCUgMjYlKSIpfTsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEzIDEwMCUgOTclKSIsImhzbCgyMTUgMjAlIDEyJSkiKX07CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUgMjUlIDMyJSkiLCJoc2woMjE1IDIwJSA4MiUpIil9OwogICAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTU7CiAgICAgICAgfQoKICAgICAgICAuZGVtby1ub3RlIHN0cm9uZyB7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTcgOTElIDQ1JSkiLCJoc2woMjEzIDkzJSA2OCUpIil9OwogICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICB9CiAgICAgIGB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgY2xhc3M9ImRlbW8tc2hlbGwiPgogICAgICA8ZGVlcy1wYW5lbAogICAgICAgIC50aXRsZT0keyJNb2Rlcm4gZmlsZSB1cGxvYWRlciJ9CiAgICAgICAgLnN1YnRpdGxlPSR7IlNoYWRjbi1pbnNwaXJlZCBsYXlvdXQgd2l0aCBkcmFnICYgZHJvcCwgcHJldmlld3MgYW5kIHZhbGlkYXRpb24ifQogICAgICA+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkaXYgY2xhc3M9ImRlbW8tZ3JpZCBkZW1vLWdyaWQtLXR3byI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc3RhY2siPgogICAgICAgICAgICAgIDxkZWVzLWlucHV0LWZpbGV1cGxvYWQKICAgICAgICAgICAgICAgIC5sYWJlbD0keyJBdHRhY2htZW50cyJ9CiAgICAgICAgICAgICAgICAuaW5mb1RleHQ9JHsiVXBsb2FkIHN1cHBvcnRpbmcgZG9jdW1lbnRzIGZvciB5b3VyIHJlcXVlc3QifQogICAgICAgICAgICAgICAgLmRlc2NyaXB0aW9uPSR7IkFjY2VwdGVkIGZvcm1hdHM6IGltYWdlcywgUERGLCBhbmQgWklQIGFyY2hpdmVzIHVwIHRvIDEwTUIifQogICAgICAgICAgICAgICAgLmFjY2VwdD0keyJpbWFnZS8qLC5wZGYsLnppcCJ9CiAgICAgICAgICAgICAgICAubWF4U2l6ZT0kezEwKjEwMjQqMTAyNH0KICAgICAgICAgICAgICA+PC9kZWVzLWlucHV0LWZpbGV1cGxvYWQ+CgogICAgICAgICAgICAgIDxkZWVzLWlucHV0LWZpbGV1cGxvYWQKICAgICAgICAgICAgICAgIC5sYWJlbD0keyJCcmFuZCBhc3NldHMifQogICAgICAgICAgICAgICAgLmluZm9UZXh0PSR7IlVwbG9hZCBoaWdoLXJlc29sdXRpb24gaW1hZ2VyeSAoSlBHL1BORykifQogICAgICAgICAgICAgICAgLmFjY2VwdD0keyJpbWFnZS9qcGVnLGltYWdlL3BuZyJ9CiAgICAgICAgICAgICAgICAubXVsdGlwbGU9JHshMX0KICAgICAgICAgICAgICAgIC5tYXhTaXplPSR7NSoxMDI0KjEwMjR9CiAgICAgICAgICAgICAgICAuYnV0dG9uVGV4dD0keyJTZWxlY3QgY292ZXIgaW1hZ2UifQogICAgICAgICAgICAgID48L2RlZXMtaW5wdXQtZmlsZXVwbG9hZD4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZW1vLXN0YWNrIj4KICAgICAgICAgICAgICA8ZGVlcy1pbnB1dC1maWxldXBsb2FkCiAgICAgICAgICAgICAgICAubGFiZWw9JHsiQXVkaW8gdXBsb2FkcyJ9CiAgICAgICAgICAgICAgICAuaW5mb1RleHQ9JHsiU2hhcmUgcG9kY2FzdCBkcmFmdHMgKE1QMy9XQVYsIG1heCAyNU1CIGVhY2gpIn0KICAgICAgICAgICAgICAgIC5hY2NlcHQ9JHsiYXVkaW8vKiJ9CiAgICAgICAgICAgICAgICAubWF4U2l6ZT0kezI1KjEwMjQqMTAyNH0KICAgICAgICAgICAgICA+PC9kZWVzLWlucHV0LWZpbGV1cGxvYWQ+CgogICAgICAgICAgICAgIDxkZWVzLWlucHV0LWZpbGV1cGxvYWQKICAgICAgICAgICAgICAgIC5sYWJlbD0keyJEaXNhYmxlZCBleGFtcGxlIn0KICAgICAgICAgICAgICAgIC5pbmZvVGV4dD0keyJVcGxvYWRlciBpcyBkaXNhYmxlZCB3aGlsZSBtb2RlcmF0aW9uIGlzIHBlbmRpbmcifQogICAgICAgICAgICAgICAgLmRpc2FibGVkPSR7ITB9CiAgICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1maWxldXBsb2FkPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2RlZXMtcGFuZWw+CgogICAgICA8ZGVlcy1wYW5lbAogICAgICAgIC50aXRsZT0keyJGb3JtIGludGVncmF0aW9uIn0KICAgICAgICAuc3VidGl0bGU9JHsiQ29tYmluZSBmaWxlIHVwbG9hZHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgREVFUyBmb3JtIGVjb3N5c3RlbSJ9CiAgICAgID4KICAgICAgICA8ZGl2IGNsYXNzPSJkZW1vLWdyaWQiPgogICAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0CiAgICAgICAgICAgICAgICAubGFiZWw9JHsiUHJvamVjdCBuYW1lIn0KICAgICAgICAgICAgICAgIC5pbmZvVGV4dD0keyJIb3cgc2hvdWxkIHdlIHJlZmVyIHRvIHRoaXMgcHJvamVjdCBpbnRlcm5hbGx5PyJ9CiAgICAgICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0KICAgICAgICAgICAgICAgIC5rZXk9JHsicHJvamVjdE5hbWUifQogICAgICAgICAgICAgID48L2RlZXMtaW5wdXQtdGV4dD4KCiAgICAgICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dAogICAgICAgICAgICAgICAgLmxhYmVsPSR7IkNvbnRhY3QgZW1haWwifQogICAgICAgICAgICAgICAgLmlucHV0VHlwZT0keyJlbWFpbCJ9CiAgICAgICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0KICAgICAgICAgICAgICAgIC5rZXk9JHsiY29udGFjdEVtYWlsIn0KICAgICAgICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+CgogICAgICAgICAgICAgIDxkZWVzLWlucHV0LWZpbGV1cGxvYWQKICAgICAgICAgICAgICAgIC5sYWJlbD0keyJTdGF0ZW1lbnQgb2Ygd29yayJ9CiAgICAgICAgICAgICAgICAuaW5mb1RleHQ9JHsiVXBsb2FkIGEgc2lnbmVkIHN0YXRlbWVudCBvZiB3b3JrIChQREYsIG1heCAxNU1CKSJ9CiAgICAgICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0KICAgICAgICAgICAgICAgIC5hY2NlcHQ9JHsiYXBwbGljYXRpb24vcGRmIn0KICAgICAgICAgICAgICAgIC5tYXhTaXplPSR7MTUqMTAyNCoxMDI0fQogICAgICAgICAgICAgICAgLm11bHRpcGxlPSR7ITF9CiAgICAgICAgICAgICAgICAua2V5PSR7InNvdyJ9CiAgICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1maWxldXBsb2FkPgoKICAgICAgICAgICAgICA8ZGVlcy1pbnB1dC1maWxldXBsb2FkCiAgICAgICAgICAgICAgICAubGFiZWw9JHsiQ3JlYXRpdmUgcmVmZXJlbmNlcyJ9CiAgICAgICAgICAgICAgICAuaW5mb1RleHQ9JHsiT3B0aW9uYWwuIFVwbG9hZCB1cCB0byBmaXZlIHZpc3VhbCByZWZlcmVuY2VzIn0KICAgICAgICAgICAgICAgIC5hY2NlcHQ9JHsiaW1hZ2UvKiJ9CiAgICAgICAgICAgICAgICAubWF4RmlsZXM9JHs1fQogICAgICAgICAgICAgICAgLm1heFNpemU9JHs4KjEwMjQqMTAyNH0KICAgICAgICAgICAgICAgIC5rZXk9JHsicmVmZXJlbmNlcyJ9CiAgICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1maWxldXBsb2FkPgoKICAgICAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0CiAgICAgICAgICAgICAgICAubGFiZWw9JHsiTm90ZXMifQogICAgICAgICAgICAgICAgLmluZm9UZXh0PSR7IkFkZCBvcHRpb25hbCBjb250ZXh0IGZvciByZXZpZXdlcnMifQogICAgICAgICAgICAgICAgLmlucHV0VHlwZT0keyJ0ZXh0YXJlYSJ9CiAgICAgICAgICAgICAgICAua2V5PSR7Im5vdGVzIn0KICAgICAgICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+CgogICAgICAgICAgICAgIDxkZWVzLWZvcm0tc3VibWl0IC50ZXh0PSR7IlN1Ym1pdCBicmllZmluZyJ9PjwvZGVlcy1mb3JtLXN1Ym1pdD4KICAgICAgICAgIDwvZGVlcy1mb3JtPgoKICAgICAgICAgIDxkaXYgY2xhc3M9ImRlbW8tbm90ZSI+CiAgICAgICAgICAgIDxzdHJvbmc+R29vZCB0byBrbm93Ojwvc3Ryb25nPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgPGxpPkRyYWcgJiBkcm9wIGhpZ2hsaWdodHMgdGhlIGRyb3B6b25lIGFuZCBzdXBwb3J0cyBrZXlib2FyZCBhY3RpdmF0aW9uLjwvbGk+CiAgICAgICAgICAgICAgPGxpPkFjY2VwdGVkIGZpbGUgdHlwZXMgYXJlIHN1bW1hcmlzZWQgYXV0b21hdGljYWxseSBmcm9tIHRoZSA8Y29kZT5hY2NlcHQ8L2NvZGU+IGF0dHJpYnV0ZS48L2xpPgogICAgICAgICAgICAgIDxsaT5JbWFnZSB1cGxvYWRzIHNob3cgbGl2ZSBwcmV2aWV3cyBnZW5lcmF0ZWQgdmlhIDxjb2RlPlVSTC5jcmVhdGVPYmplY3RVUkw8L2NvZGU+LjwvbGk+CiAgICAgICAgICAgICAgPGxpPkZpbGUgc2l6ZSBhbmQgZmlsZS1jb3VudCBsaW1pdHMgc3VyZmFjZSBpbmxpbmUgdmFsaWRhdGlvbiBtZXNzYWdlcy48L2xpPgogICAgICAgICAgICAgIDxsaT5UaGUgY29tcG9uZW50IHN0YXlzIGNvbXBhdGlibGUgd2l0aCA8Y29kZT5kZWVzLWZvcm08L2NvZGU+IHZhbHVlIGFjY2Vzc29ycy48L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGl2PgogIDwvZGVlcy1kZW1vd3JhcHBlcj4KYCwiZGVtb0Z1bmMiKX0pO3ZhciBFYmEsUGJhPWcoKCk9PntwZSgpO0VpKCk7aHQoKTtFYmE9W3FlLC4uLkJ0LmJhc2VTdHlsZXMsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICA6aG9zdCB7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICB9CgogICAgLmlucHV0LXdyYXBwZXIgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICBnYXA6IDEycHg7CiAgICB9CgogICAgLyog4pSA4pSAIFRpbGUgaW50ZWdyYXRpb24g4pSA4pSAICovCiAgICBkZWVzLXRpbGUgewogICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICB9CgogICAgZGVlcy10aWxlOmhvdmVyOjpwYXJ0KG91dGVyKSB7CiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItc3Ryb25nKTsKICAgIH0KCiAgICBkZWVzLXRpbGUuZHJhZ292ZXI6OnBhcnQob3V0ZXIpIHsKICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLWFjY2VudC1wcmltYXJ5KTsKICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4ICR7aC5iZFRoZW1lKCJoc2woMjE3IDkxJSA2MCUgLyAwLjE1KSIsImhzbCgyMTMgOTMlIDY4JSAvIDAuMTUpIil9OwogICAgfQoKICAgIDpob3N0KFtkaXNhYmxlZF0pIGRlZXMtdGlsZSB7CiAgICAgIG9wYWNpdHk6IDAuNjsKICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICB9CgogICAgLyog4pSA4pSAIEhlYWRlciBzbG90OiBzbGVlayB0b29sYmFyIOKUgOKUgCAqLwogICAgLmRyb3B6b25lLWhlYWRlciB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGdhcDogOHB4OwogICAgICBoZWlnaHQ6IDMycHg7CiAgICAgIHBhZGRpbmc6IDAgMTJweDsKICAgIH0KCiAgICAuZHJvcHpvbmUtaGVhZGVyIGRlZXMtaWNvbiB7CiAgICAgIHdpZHRoOiAxNHB4OwogICAgICBoZWlnaHQ6IDE0cHg7CiAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgfQoKICAgIC5kcm9wem9uZS1sb2FkZXIgewogICAgICB3aWR0aDogMTRweDsKICAgICAgaGVpZ2h0OiAxNHB4OwogICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1kZWVzLXJhZGl1cy1mdWxsKTsKICAgICAgYm9yZGVyOiAycHggc29saWQgJHtoLmJkVGhlbWUoInJnYmEoMTUsIDIzLCA0MiwgMC4xNSkiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIil9OwogICAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLWFjY2VudC1wcmltYXJ5KTsKICAgICAgYW5pbWF0aW9uOiBsb2FkZXItc3BpbiAwLjZzIGxpbmVhciBpbmZpbml0ZTsKICAgIH0KCiAgICAuZHJvcHpvbmUtdGl0bGUgewogICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgfQoKICAgIC5kcm9wem9uZS1icm93c2UgewogICAgICBhcHBlYXJhbmNlOiBub25lOwogICAgICBib3JkZXI6IG5vbmU7CiAgICAgIGJhY2tncm91bmQ6IG5vbmU7CiAgICAgIHBhZGRpbmc6IDA7CiAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLWFjY2VudC1wcmltYXJ5KTsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgfQoKICAgIC5kcm9wem9uZS1icm93c2U6aG92ZXIgewogICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgIH0KCiAgICAuZHJvcHpvbmUtYnJvd3NlOmRpc2FibGVkIHsKICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgICAgb3BhY2l0eTogMC41OwogICAgfQoKICAgIC8qIOKUgOKUgCBDb250ZW50IHNsb3Q6IGZpbGUgbGlzdCBpbiByb3VuZGVkIGluc2V0IOKUgOKUgCAqLwogICAgLmZpbGUtbGlzdC1lbXB0eSB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICBnYXA6IDhweDsKICAgICAgcGFkZGluZzogMjRweCAxNnB4OwogICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgfQoKICAgIC5maWxlLWxpc3QtZW1wdHkgZGVlcy1pY29uIHsKICAgICAgZm9udC1zaXplOiAyNHB4OwogICAgICBvcGFjaXR5OiAwLjQ7CiAgICB9CgogICAgLmZpbGUtbGlzdCB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICB9CgogICAgLmZpbGUtbGlzdC1oZWFkZXIgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICBmb250LXNpemU6IDEycHg7CiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgfQoKICAgIC5maWxlLWxpc3QtY2xlYXIgewogICAgICBhcHBlYXJhbmNlOiBub25lOwogICAgICBib3JkZXI6IG5vbmU7CiAgICAgIGJhY2tncm91bmQ6IG5vbmU7CiAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLWFjY2VudC1wcmltYXJ5KTsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICBmb250LXdlaWdodDogNTAwOwogICAgICBmb250LXNpemU6IDEycHg7CiAgICAgIHBhZGRpbmc6IDA7CiAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogICAgfQoKICAgIC5maWxlLWxpc3QtY2xlYXI6aG92ZXIgewogICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgIH0KCiAgICAuZmlsZS1yb3cgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICBnYXA6IDEycHg7CiAgICAgIHBhZGRpbmc6IDZweCAxMnB4OwogICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLWRlZXMtdHJhbnNpdGlvbi1mYXN0KSBlYXNlOwogICAgfQoKICAgIC5maWxlLXJvdzpob3ZlciB7CiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3Itcm93LWhvdmVyKTsKICAgIH0KCiAgICAuZmlsZS10aHVtYiB7CiAgICAgIHdpZHRoOiAzMnB4OwogICAgICBoZWlnaHQ6IDMycHg7CiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWRlZXMtcmFkaXVzLXNtKTsKICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1iZy10ZXJ0aWFyeSk7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICBmbGV4LXNocmluazogMDsKICAgIH0KCiAgICAuZmlsZS10aHVtYiBkZWVzLWljb24gewogICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgd2lkdGg6IDE2cHg7CiAgICAgIGhlaWdodDogMTZweDsKICAgICAgbGluZS1oZWlnaHQ6IDE7CiAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgfQoKICAgIC50aHVtYi1pbWFnZSB7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIG9iamVjdC1maXQ6IGNvdmVyOwogICAgfQoKICAgIC5maWxlLW1ldGEgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICBnYXA6IDJweDsKICAgICAgbWluLXdpZHRoOiAwOwogICAgfQoKICAgIC5maWxlLW5hbWUgewogICAgICBmb250LXdlaWdodDogNTAwOwogICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgfQoKICAgIC5maWxlLWRldGFpbHMgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICBnYXA6IDhweDsKICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICBmb250LXNpemU6IDExcHg7CiAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgfQoKICAgIC5maWxlLXNpemUgewogICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zOwogICAgfQoKICAgIC5maWxlLXR5cGUgewogICAgICBwYWRkaW5nOiAxcHggNnB4OwogICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1kZWVzLXJhZGl1cy1mdWxsKTsKICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtOwogICAgICBsaW5lLWhlaWdodDogMTsKICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgfQoKICAgIC5maWxlLWFjdGlvbnMgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIH0KCiAgICAucmVtb3ZlLWJ1dHRvbiB7CiAgICAgIHdpZHRoOiAyNHB4OwogICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWRlZXMtcmFkaXVzLXhzKTsKICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS1kZWVzLXRyYW5zaXRpb24tZmFzdCkgZWFzZSwKICAgICAgICAgICAgICAgICAgY29sb3IgdmFyKC0tZGVlcy10cmFuc2l0aW9uLWZhc3QpIGVhc2U7CiAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgfQoKICAgIC5yZW1vdmUtYnV0dG9uOmhvdmVyIHsKICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDcyJSA1MCUgLyAwLjA4KSIsImhzbCgwIDYyJSAzMiUgLyAwLjE1KSIpfTsKICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItYWNjZW50LWVycm9yKTsKICAgIH0KCiAgICAucmVtb3ZlLWJ1dHRvbjphY3RpdmUgewogICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTYpOwogICAgfQoKICAgIC5yZW1vdmUtYnV0dG9uIGRlZXMtaWNvbiB7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB3aWR0aDogMTRweDsKICAgICAgaGVpZ2h0OiAxNHB4OwogICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgICBmbGV4LXNocmluazogMDsKICAgIH0KCiAgICAvKiDilIDilIAgRm9vdGVyIHNsb3Q6IG1ldGEgY2hpcHMg4pSA4pSAICovCiAgICAuZHJvcHpvbmUtZm9vdGVyIHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICBnYXA6IDZweDsKICAgICAgcGFkZGluZzogNnB4IDEycHg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICB9CgogICAgLm1ldGEtY2hpcCB7CiAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgcGFkZGluZzogMnB4IDhweDsKICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tZGVlcy1yYWRpdXMtZnVsbCk7CiAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXRlcnRpYXJ5KTsKICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItc3VidGxlKTsKICAgIH0KCiAgICAvKiDilIDilIAgVmFsaWRhdGlvbiDilIDilIAgKi8KICAgIC52YWxpZGF0aW9uLW1lc3NhZ2UgewogICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLWFjY2VudC1lcnJvcik7CiAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICB9CgogICAgQGtleWZyYW1lcyBsb2FkZXItc3BpbiB7CiAgICAgIHRvIHsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgICB9CiAgICB9CiAgYF19KTt2YXIgWmQsdG8sc250LGFudD1nKCgpPT57RWkoKTtMYmEoKTtQYmEoKTtHYSgpO2J4KCk7bXIoKTtwZSgpO1pkPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSx0bz1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sc250PSgoKT0+e2xldCBzPVtuZSgiZGVlcy1pbnB1dC1maWxldXBsb2FkIildLGUsdD1bXSxhLHI9QnQsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W10sSCxrPVtdLFM9W10sSSxQPVtdLFI9W107dmFyIEs9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNJbnB1dEZpbGV1cGxvYWQiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgVj10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHthdHRyaWJ1dGU6ITF9KV0scD1bWSgpXSxjPVtZKCldLHg9W0woe3R5cGU6U3RyaW5nfSldLHk9W0woe3R5cGU6U3RyaW5nfSldLE49W0woe3R5cGU6Qm9vbGVhbn0pXSxPPVtMKHt0eXBlOk51bWJlcn0pXSxIPVtMKHt0eXBlOk51bWJlcn0pXSxJPVtMKHt0eXBlOlN0cmluZyxyZWZsZWN0OiEwfSldLFpkKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidmFsdWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVz0+InZhbHVlImluIFcsImhhcyIpLGdldDppKFc9PlcudmFsdWUsImdldCIpLHNldDppKChXLG1lKT0+e1cudmFsdWU9bWV9LCJzZXQiKX0sbWV0YWRhdGE6Vn0sbyxsKSxaZCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InN0YXRlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFc9PiJzdGF0ZSJpbiBXLCJoYXMiKSxnZXQ6aShXPT5XLnN0YXRlLCJnZXQiKSxzZXQ6aSgoVyxtZSk9PntXLnN0YXRlPW1lfSwic2V0Iil9LG1ldGFkYXRhOlZ9LGQsdSksWmQodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpc0xvYWRpbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVz0+ImlzTG9hZGluZyJpbiBXLCJoYXMiKSxnZXQ6aShXPT5XLmlzTG9hZGluZywiZ2V0Iiksc2V0OmkoKFcsbWUpPT57Vy5pc0xvYWRpbmc9bWV9LCJzZXQiKX0sbWV0YWRhdGE6Vn0sYix2KSxaZCh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImJ1dHRvblRleHQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVz0+ImJ1dHRvblRleHQiaW4gVywiaGFzIiksZ2V0OmkoVz0+Vy5idXR0b25UZXh0LCJnZXQiKSxzZXQ6aSgoVyxtZSk9PntXLmJ1dHRvblRleHQ9bWV9LCJzZXQiKX0sbWV0YWRhdGE6Vn0sbSxmKSxaZCh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImFjY2VwdCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShXPT4iYWNjZXB0ImluIFcsImhhcyIpLGdldDppKFc9PlcuYWNjZXB0LCJnZXQiKSxzZXQ6aSgoVyxtZSk9PntXLmFjY2VwdD1tZX0sInNldCIpfSxtZXRhZGF0YTpWfSxNLHopLFpkKHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibXVsdGlwbGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVz0+Im11bHRpcGxlImluIFcsImhhcyIpLGdldDppKFc9PlcubXVsdGlwbGUsImdldCIpLHNldDppKChXLG1lKT0+e1cubXVsdGlwbGU9bWV9LCJzZXQiKX0sbWV0YWRhdGE6Vn0sQyxfKSxaZCh0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1heFNpemUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVz0+Im1heFNpemUiaW4gVywiaGFzIiksZ2V0OmkoVz0+Vy5tYXhTaXplLCJnZXQiKSxzZXQ6aSgoVyxtZSk9PntXLm1heFNpemU9bWV9LCJzZXQiKX0sbWV0YWRhdGE6Vn0sJCxFKSxaZCh0aGlzLG51bGwsSCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1heEZpbGVzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFc9PiJtYXhGaWxlcyJpbiBXLCJoYXMiKSxnZXQ6aShXPT5XLm1heEZpbGVzLCJnZXQiKSxzZXQ6aSgoVyxtZSk9PntXLm1heEZpbGVzPW1lfSwic2V0Iil9LG1ldGFkYXRhOlZ9LGssUyksWmQodGhpcyxudWxsLEkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2YWxpZGF0aW9uU3RhdGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVz0+InZhbGlkYXRpb25TdGF0ZSJpbiBXLCJoYXMiKSxnZXQ6aShXPT5XLnZhbGlkYXRpb25TdGF0ZSwiZ2V0Iiksc2V0OmkoKFcsbWUpPT57Vy52YWxpZGF0aW9uU3RhdGU9bWV9LCJzZXQiKX0sbWV0YWRhdGE6Vn0sUCxSKSxaZChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpWfSxudWxsLHQpLEs9YT1lLnZhbHVlLFYmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Vn0pfXN0YXRpYyBkZW1vPURiYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIklucHV0Il07I2U9dG8odGhpcyxvLFtdKTtnZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy4jZX1zZXQgdmFsdWUoVil7dGhpcy4jZT1WfSN0PSh0byh0aGlzLGwpLHRvKHRoaXMsZCwiaWRsZSIpKTtnZXQgc3RhdGUoKXtyZXR1cm4gdGhpcy4jdH1zZXQgc3RhdGUoVil7dGhpcy4jdD1WfSNhPSh0byh0aGlzLHUpLHRvKHRoaXMsYiwhMSkpO2dldCBpc0xvYWRpbmcoKXtyZXR1cm4gdGhpcy4jYX1zZXQgaXNMb2FkaW5nKFYpe3RoaXMuI2E9Vn0jcz0odG8odGhpcyx2KSx0byh0aGlzLG0sIlNlbGVjdCBmaWxlcyIpKTtnZXQgYnV0dG9uVGV4dCgpe3JldHVybiB0aGlzLiNzfXNldCBidXR0b25UZXh0KFYpe3RoaXMuI3M9Vn0jaT0odG8odGhpcyxmKSx0byh0aGlzLE0sIiIpKTtnZXQgYWNjZXB0KCl7cmV0dXJuIHRoaXMuI2l9c2V0IGFjY2VwdChWKXt0aGlzLiNpPVZ9I3I9KHRvKHRoaXMseiksdG8odGhpcyxDLCEwKSk7Z2V0IG11bHRpcGxlKCl7cmV0dXJuIHRoaXMuI3J9c2V0IG11bHRpcGxlKFYpe3RoaXMuI3I9Vn0jbz0odG8odGhpcyxfKSx0byh0aGlzLCQsMCkpO2dldCBtYXhTaXplKCl7cmV0dXJuIHRoaXMuI299c2V0IG1heFNpemUoVil7dGhpcy4jbz1WfSNuPSh0byh0aGlzLEUpLHRvKHRoaXMsaywwKSk7Z2V0IG1heEZpbGVzKCl7cmV0dXJuIHRoaXMuI259c2V0IG1heEZpbGVzKFYpe3RoaXMuI249Vn0jbD0odG8odGhpcyxTKSx0byh0aGlzLFAsbnVsbCkpO2dldCB2YWxpZGF0aW9uU3RhdGUoKXtyZXR1cm4gdGhpcy4jbH1zZXQgdmFsaWRhdGlvblN0YXRlKFYpe3RoaXMuI2w9Vn0jYz0odG8odGhpcyxSKSwiIik7Z2V0IHZhbGlkYXRpb25NZXNzYWdlKCl7cmV0dXJuIHRoaXMuI2N9c2V0IHZhbGlkYXRpb25NZXNzYWdlKFYpe3RoaXMuI2M9Vn1wcmV2aWV3VXJsTWFwPW5ldyBXZWFrTWFwO2Ryb3BBcmVhPW51bGw7c3RhdGljIHN0eWxlcz1FYmE7cmVuZGVyKCl7bGV0IFY9dGhpcy5nZXRBY2NlcHRlZFN1bW1hcnkoKSxXPVt0aGlzLm11bHRpcGxlPyJNdWx0aXBsZSBmaWxlcyBzdXBwb3J0ZWQiOiJTaW5nbGUgZmlsZSBvbmx5Iix0aGlzLm1heFNpemU+MD9gTWF4ICR7dGhpcy5mb3JtYXRGaWxlU2l6ZSh0aGlzLm1heFNpemUpfWA6Ik5vIHNpemUgbGltaXQiXTtyZXR1cm4gViYmVy5wdXNoKGBBY2NlcHRzICR7Vn1gKSx3YAogICAgICA8ZGl2IGNsYXNzPSJpbnB1dC13cmFwcGVyIj4KICAgICAgICA8ZGVlcy1sYWJlbAogICAgICAgICAgLmxhYmVsPSR7dGhpcy5sYWJlbH0KICAgICAgICAgIC5pbmZvVGV4dD0ke3RoaXMuaW5mb1RleHR9CiAgICAgICAgICAucmVxdWlyZWQ9JHt0aGlzLnJlcXVpcmVkfQogICAgICAgID48L2RlZXMtbGFiZWw+CiAgICAgICAgPGRlZXMtdGlsZQogICAgICAgICAgY2xhc3M9IiR7dGhpcy5zdGF0ZT09PSJkcmFnT3ZlciI/ImRyYWdvdmVyIjoiIn0iCiAgICAgICAgICBAY2xpY2s9JHt0aGlzLmhhbmRsZURyb3B6b25lQ2xpY2t9CiAgICAgICAgICBAa2V5ZG93bj0ke3RoaXMuaGFuZGxlRHJvcHpvbmVLZXlkb3dufQogICAgICAgICAgdGFiaW5kZXg9JHt0aGlzLmRpc2FibGVkPy0xOjB9CiAgICAgICAgICBhcmlhLWRpc2FibGVkPSR7dGhpcy5kaXNhYmxlZH0KICAgICAgICAgIGFyaWEtbGFiZWw9JHtgU2VsZWN0IGZpbGVzJHtWP2AgKCR7Vn0pYDoiIn1gfQogICAgICAgID4KICAgICAgICAgIDxpbnB1dAogICAgICAgICAgICBjbGFzcz0iZmlsZS1pbnB1dCIKICAgICAgICAgICAgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgb3BhY2l0eTogMDsgcG9pbnRlci1ldmVudHM6IG5vbmU7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyB0b3A6IDA7IGxlZnQ6IDA7IG92ZXJmbG93OiBoaWRkZW47IgogICAgICAgICAgICB0eXBlPSJmaWxlIgogICAgICAgICAgICA/bXVsdGlwbGU9JHt0aGlzLm11bHRpcGxlfQogICAgICAgICAgICBhY2NlcHQ9JHt0aGlzLmFjY2VwdHx8IiJ9CiAgICAgICAgICAgID9kaXNhYmxlZD0ke3RoaXMuZGlzYWJsZWR9CiAgICAgICAgICAgIEBjaGFuZ2U9JHt0aGlzLmhhbmRsZUZpbGVJbnB1dENoYW5nZX0KICAgICAgICAgICAgdGFiaW5kZXg9Ii0xIgogICAgICAgICAgLz4KICAgICAgICAgIDxkaXYgc2xvdD0iaGVhZGVyIiBjbGFzcz0iZHJvcHpvbmUtaGVhZGVyIj4KICAgICAgICAgICAgJHt0aGlzLmlzTG9hZGluZz93YDxzcGFuIGNsYXNzPSJkcm9wem9uZS1sb2FkZXIiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L3NwYW4+YDp3YDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOlVwbG9hZCI+PC9kZWVzLWljb24+YH0KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRyb3B6b25lLXRpdGxlIj5Ecm9wIGZpbGVzIGhlcmUgb3I8L3NwYW4+CiAgICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgICB0eXBlPSJidXR0b24iCiAgICAgICAgICAgICAgY2xhc3M9ImRyb3B6b25lLWJyb3dzZSIKICAgICAgICAgICAgICBAY2xpY2s9JHttZT0+e21lLnN0b3BQcm9wYWdhdGlvbigpLHRoaXMub3BlbkZpbGVTZWxlY3RvcigpfX0KICAgICAgICAgICAgICA/ZGlzYWJsZWQ9JHt0aGlzLmRpc2FibGVkfQogICAgICAgICAgICA+YnJvd3NlPC9idXR0b24+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICR7dGhpcy5yZW5kZXJGaWxlTGlzdCgpfQogICAgICAgICAgPGRpdiBzbG90PSJmb290ZXIiIGNsYXNzPSJkcm9wem9uZS1mb290ZXIiPgogICAgICAgICAgICAke1cubWFwKG1lPT53YDxzcGFuIGNsYXNzPSJtZXRhLWNoaXAiPiR7bWV9PC9zcGFuPmApfQogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kZWVzLXRpbGU+CiAgICAgICAgJHt0aGlzLnZhbGlkYXRpb25NZXNzYWdlP3dgPGRpdiBjbGFzcz0idmFsaWRhdGlvbi1tZXNzYWdlIiBhcmlhLWxpdmU9InBvbGl0ZSI+JHt0aGlzLnZhbGlkYXRpb25NZXNzYWdlfTwvZGl2PmA6d2BgfQogICAgICAgICR7dGhpcy5yZW5kZXJEZXNjcmlwdGlvbigpfQogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyRmlsZUxpc3QoKXtyZXR1cm4gdGhpcy52YWx1ZS5sZW5ndGg9PT0wP3dgCiAgICAgICAgPGRpdiBjbGFzcz0iZmlsZS1saXN0LWVtcHR5Ij4KICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOkZpbGVTdGFjayI+PC9kZWVzLWljb24+CiAgICAgICAgICA8c3Bhbj5ObyBmaWxlcyBzZWxlY3RlZDwvc3Bhbj4KICAgICAgICA8L2Rpdj4KICAgICAgYDp3YAogICAgICA8ZGl2IGNsYXNzPSJmaWxlLWxpc3QiPgogICAgICAgIDxkaXYgY2xhc3M9ImZpbGUtbGlzdC1oZWFkZXIiPgogICAgICAgICAgPHNwYW4+JHt0aGlzLnZhbHVlLmxlbmd0aH0gZmlsZSR7dGhpcy52YWx1ZS5sZW5ndGg9PT0xPyIiOiJzIn0gc2VsZWN0ZWQ8L3NwYW4+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImZpbGUtbGlzdC1jbGVhciIgQGNsaWNrPSR7dGhpcy5oYW5kbGVDbGVhckFsbH0+Q2xlYXIgJHt0aGlzLnZhbHVlLmxlbmd0aD4xPyJhbGwiOiIifTwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICAgICR7dGhpcy52YWx1ZS5tYXAoVj0+dGhpcy5yZW5kZXJGaWxlUm93KFYpKX0KICAgICAgPC9kaXY+CiAgICBgfXJlbmRlckZpbGVSb3coVil7bGV0IFc9dGhpcy5nZXRGaWxlVHlwZShWKSxtZT10aGlzLmNhblNob3dQcmV2aWV3KFYpP3RoaXMuZ2V0UHJldmlld1VybChWKTpudWxsO3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJmaWxlLXJvdyAke1d9LWZpbGUiPgogICAgICAgIDxkaXYgY2xhc3M9ImZpbGUtdGh1bWIiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICAgICR7bWU/d2A8aW1nIGNsYXNzPSJ0aHVtYi1pbWFnZSIgc3JjPSR7bWV9IGFsdD0ke2BQcmV2aWV3IG9mICR7Vi5uYW1lfWB9PmA6d2A8ZGVlcy1pY29uIGljb249JHt0aGlzLmdldEZpbGVJY29uKFYpfT48L2RlZXMtaWNvbj5gfQogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImZpbGUtbWV0YSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWxlLW5hbWUiIHRpdGxlPSR7Vi5uYW1lfT4ke1YubmFtZX08L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImZpbGUtZGV0YWlscyI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmaWxlLXNpemUiPiR7dGhpcy5mb3JtYXRGaWxlU2l6ZShWLnNpemUpfTwvc3Bhbj4KICAgICAgICAgICAgJHtXIT09ImZpbGUiP3dgPHNwYW4gY2xhc3M9ImZpbGUtdHlwZSI+JHtXfTwvc3Bhbj5gOndgYH0KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImZpbGUtYWN0aW9ucyI+CiAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgIHR5cGU9ImJ1dHRvbiIKICAgICAgICAgICAgY2xhc3M9InJlbW92ZS1idXR0b24iCiAgICAgICAgICAgIEBjbGljaz0keygpPT50aGlzLnJlbW92ZUZpbGUoVil9CiAgICAgICAgICAgIGFyaWEtbGFiZWw9JHtgUmVtb3ZlICR7Vi5uYW1lfWB9CiAgICAgICAgICA+CiAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOlgiPjwvZGVlcy1pY29uPgogICAgICAgICAgPC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1oYW5kbGVGaWxlSW5wdXRDaGFuZ2U9aShhc3luYyBWPT57dGhpcy5pc0xvYWRpbmc9ITE7bGV0IFc9Vi50YXJnZXQsbWU9QXJyYXkuZnJvbShXLmZpbGVzPz9bXSk7bWUubGVuZ3RoPjAmJmF3YWl0IHRoaXMuYWRkRmlsZXMobWUpLFcudmFsdWU9IiJ9LCJoYW5kbGVGaWxlSW5wdXRDaGFuZ2UiKTtoYW5kbGVEcm9wem9uZUNsaWNrPWkoVj0+e3RoaXMuZGlzYWJsZWR8fFYudGFyZ2V0LmNsb3Nlc3QoIi5maWxlLWxpc3QsIC5kcm9wem9uZS1oZWFkZXIsIC5kcm9wem9uZS1mb290ZXIiKXx8dGhpcy5vcGVuRmlsZVNlbGVjdG9yKCl9LCJoYW5kbGVEcm9wem9uZUNsaWNrIik7aGFuZGxlRHJvcHpvbmVLZXlkb3duPWkoVj0+e3RoaXMuZGlzYWJsZWR8fChWLmtleT09PSJFbnRlciJ8fFYua2V5PT09IiAiKSYmKFYucHJldmVudERlZmF1bHQoKSx0aGlzLm9wZW5GaWxlU2VsZWN0b3IoKSl9LCJoYW5kbGVEcm9wem9uZUtleWRvd24iKTtoYW5kbGVDbGVhckFsbD1pKFY9PntWLnByZXZlbnREZWZhdWx0KCksdGhpcy5jbGVhckFsbCgpfSwiaGFuZGxlQ2xlYXJBbGwiKTtoYW5kbGVEcmFnRXZlbnQ9aShhc3luYyBWPT57aWYoVi5wcmV2ZW50RGVmYXVsdCgpLFYuc3RvcFByb3BhZ2F0aW9uKCksIXRoaXMuZGlzYWJsZWQpe2lmKFYudHlwZT09PSJkcmFnZW50ZXIifHxWLnR5cGU9PT0iZHJhZ292ZXIiKXtWLmRhdGFUcmFuc2ZlciYmKFYuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Q9ImNvcHkiKSx0aGlzLnN0YXRlPSJkcmFnT3ZlciI7cmV0dXJufWlmKFYudHlwZT09PSJkcmFnbGVhdmUiKXtpZighdGhpcy5kcm9wQXJlYSl7dGhpcy5zdGF0ZT0iaWRsZSI7cmV0dXJufWxldCBXPXRoaXMuZHJvcEFyZWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkse2NsaWVudFg6bWU9MCxjbGllbnRZOkI9MH09VjsobWU8PVcubGVmdHx8bWU+PVcucmlnaHR8fEI8PVcudG9wfHxCPj1XLmJvdHRvbSkmJih0aGlzLnN0YXRlPSJpZGxlIik7cmV0dXJufWlmKFYudHlwZT09PSJkcm9wIil7dGhpcy5zdGF0ZT0iaWRsZSI7bGV0IFc9QXJyYXkuZnJvbShWLmRhdGFUcmFuc2Zlcj8uZmlsZXM/P1tdKTtXLmxlbmd0aD4wJiZhd2FpdCB0aGlzLmFkZEZpbGVzKFcpfX19LCJoYW5kbGVEcmFnRXZlbnQiKTthdHRhY2hEcm9wTGlzdGVuZXJzKCl7dGhpcy5kcm9wQXJlYSYmWyJkcmFnZW50ZXIiLCJkcmFnb3ZlciIsImRyYWdsZWF2ZSIsImRyb3AiXS5mb3JFYWNoKFY9Pnt0aGlzLmRyb3BBcmVhLmFkZEV2ZW50TGlzdGVuZXIoVix0aGlzLmhhbmRsZURyYWdFdmVudCl9KX1kZXRhY2hEcm9wTGlzdGVuZXJzKCl7dGhpcy5kcm9wQXJlYSYmWyJkcmFnZW50ZXIiLCJkcmFnb3ZlciIsImRyYWdsZWF2ZSIsImRyb3AiXS5mb3JFYWNoKFY9Pnt0aGlzLmRyb3BBcmVhLnJlbW92ZUV2ZW50TGlzdGVuZXIoVix0aGlzLmhhbmRsZURyYWdFdmVudCl9KX1yZWJpbmRJbnRlcmFjdGl2ZUVsZW1lbnRzKCl7bGV0IFY9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCJkZWVzLXRpbGUiKTtWIT09dGhpcy5kcm9wQXJlYSYmKHRoaXMuZGV0YWNoRHJvcExpc3RlbmVycygpLHRoaXMuZHJvcEFyZWE9Vix0aGlzLmF0dGFjaERyb3BMaXN0ZW5lcnMoKSl9Zm9ybWF0RmlsZVNpemUoVil7bGV0IFc9WyJCeXRlcyIsIktCIiwiTUIiLCJHQiJdO2lmKFY9PT0wKXJldHVybiIwIEJ5dGVzIjtsZXQgbWU9TWF0aC5taW4oTWF0aC5mbG9vcihNYXRoLmxvZyhWKS9NYXRoLmxvZygxMDI0KSksVy5sZW5ndGgtMSksQj1WL01hdGgucG93KDEwMjQsbWUpO3JldHVybmAke01hdGgucm91bmQoQioxMDApLzEwMH0gJHtXW21lXX1gfWdldEZpbGVUeXBlKFYpe2xldCBXPVYudHlwZS50b0xvd2VyQ2FzZSgpO3JldHVybiBXLnN0YXJ0c1dpdGgoImltYWdlLyIpPyJpbWFnZSI6Vz09PSJhcHBsaWNhdGlvbi9wZGYiPyJwZGYiOlcuaW5jbHVkZXMoIndvcmQiKXx8Vy5pbmNsdWRlcygiZG9jdW1lbnQiKT8iZG9jIjpXLmluY2x1ZGVzKCJzaGVldCIpfHxXLmluY2x1ZGVzKCJleGNlbCIpPyJzcHJlYWRzaGVldCI6Vy5pbmNsdWRlcygicHJlc2VudGF0aW9uIil8fFcuaW5jbHVkZXMoInBvd2VycG9pbnQiKT8icHJlc2VudGF0aW9uIjpXLnN0YXJ0c1dpdGgoInZpZGVvLyIpPyJ2aWRlbyI6Vy5zdGFydHNXaXRoKCJhdWRpby8iKT8iYXVkaW8iOlcuaW5jbHVkZXMoInppcCIpfHxXLmluY2x1ZGVzKCJjb21wcmVzc2VkIik/ImFyY2hpdmUiOiJmaWxlIn1nZXRGaWxlSWNvbihWKXtsZXQgVz10aGlzLmdldEZpbGVUeXBlKFYpO3JldHVybntpbWFnZToibHVjaWRlOkZpbGVJbWFnZSIscGRmOiJsdWNpZGU6RmlsZVRleHQiLGRvYzoibHVjaWRlOkZpbGVUZXh0IixzcHJlYWRzaGVldDoibHVjaWRlOkZpbGVTcHJlYWRzaGVldCIscHJlc2VudGF0aW9uOiJsdWNpZGU6RmlsZUJhckNoYXJ0Iix2aWRlbzoibHVjaWRlOkZpbGVWaWRlbyIsYXVkaW86Imx1Y2lkZTpGaWxlQXVkaW8iLGFyY2hpdmU6Imx1Y2lkZTpGaWxlQXJjaGl2ZSIsZmlsZToibHVjaWRlOkZpbGUifVtXXT8/Imx1Y2lkZTpGaWxlIn1jYW5TaG93UHJldmlldyhWKXtyZXR1cm4gVi50eXBlLnN0YXJ0c1dpdGgoImltYWdlLyIpJiZWLnNpemU8NSoxMDI0KjEwMjR9dmFsaWRhdGVGaWxlKFYpe2lmKHRoaXMubWF4U2l6ZT4wJiZWLnNpemU+dGhpcy5tYXhTaXplKXJldHVybiB0aGlzLnZhbGlkYXRpb25NZXNzYWdlPWBGaWxlICIke1YubmFtZX0iIGV4Y2VlZHMgdGhlIG1heGltdW0gc2l6ZSBvZiAke3RoaXMuZm9ybWF0RmlsZVNpemUodGhpcy5tYXhTaXplKX1gLHRoaXMudmFsaWRhdGlvblN0YXRlPSJpbnZhbGlkIiwhMTtpZih0aGlzLmFjY2VwdCl7bGV0IFc9dGhpcy5hY2NlcHQuc3BsaXQoIiwiKS5tYXAobWU9Pm1lLnRyaW0oKSkuZmlsdGVyKG1lPT5tZS5sZW5ndGg+MCk7aWYoVy5sZW5ndGg+MCl7bGV0IG1lPSExO2ZvcihsZXQgQiBvZiBXKWlmKEIuc3RhcnRzV2l0aCgiLiIpKXtpZihWLm5hbWUudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChCLnRvTG93ZXJDYXNlKCkpKXttZT0hMDticmVha319ZWxzZSBpZihCLmVuZHNXaXRoKCIvKiIpKXtsZXQgVT1CLnNsaWNlKDAsLTIpO2lmKFYudHlwZS5zdGFydHNXaXRoKFUpKXttZT0hMDticmVha319ZWxzZSBpZihWLnR5cGU9PT1CKXttZT0hMDticmVha31pZighbWUpcmV0dXJuIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2U9YEZpbGUgdHlwZSBub3QgYWNjZXB0ZWQuIEFsbG93ZWQ6ICR7Vy5qb2luKCIsICIpfWAsdGhpcy52YWxpZGF0aW9uU3RhdGU9ImludmFsaWQiLCExfX1yZXR1cm4hMH1nZXRQcmV2aWV3VXJsKFYpe2xldCBXPXRoaXMucHJldmlld1VybE1hcC5nZXQoVik7cmV0dXJuIFd8fChXPVVSTC5jcmVhdGVPYmplY3RVUkwoViksdGhpcy5wcmV2aWV3VXJsTWFwLnNldChWLFcpKSxXfXJlbGVhc2VQcmV2aWV3KFYpe2xldCBXPXRoaXMucHJldmlld1VybE1hcC5nZXQoVik7VyYmKFVSTC5yZXZva2VPYmplY3RVUkwoVyksdGhpcy5wcmV2aWV3VXJsTWFwLmRlbGV0ZShWKSl9Z2V0QWNjZXB0ZWRTdW1tYXJ5KCl7aWYoIXRoaXMuYWNjZXB0KXJldHVybiBudWxsO2xldCBWPUFycmF5LmZyb20obmV3IFNldCh0aGlzLmFjY2VwdC5zcGxpdCgiLCIpLm1hcChXPT5XLnRyaW0oKSkuZmlsdGVyKFc9PlcubGVuZ3RoPjApLm1hcChXPT50aGlzLmZvcm1hdEFjY2VwdFRva2VuKFcpKSkpLmZpbHRlcihCb29sZWFuKTtyZXR1cm4gVi5sZW5ndGg9PT0wP251bGw6Vi5sZW5ndGg9PT0xP1ZbMF06Vi5sZW5ndGg9PT0yP2Ake1ZbMF19LCAke1ZbMV19YDpgJHtWLnNsaWNlKDAsMikuam9pbigiLCAiKX1cdTIwMjZgfWZvcm1hdEFjY2VwdFRva2VuKFYpe2lmKFY9PT0iKi8qIilyZXR1cm4iQWxsIGZpbGVzIjtpZihWLmVuZHNXaXRoKCIvKiIpKXtsZXQgQj1WLnNwbGl0KCIvIilbMF07cmV0dXJuIEI/YCR7Qi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKX0ke0Iuc2xpY2UoMSl9IGZpbGVzYDoiQWxsIGZpbGVzIn1yZXR1cm4gVi5zdGFydHNXaXRoKCIuIik/Vi5zbGljZSgxKS50b1VwcGVyQ2FzZSgpOlYuaW5jbHVkZXMoInBkZiIpPyJQREYiOlYuaW5jbHVkZXMoInppcCIpPyJaSVAiOlYuaW5jbHVkZXMoImpzb24iKT8iSlNPTiI6Vi5pbmNsdWRlcygibXN3b3JkIik/IkRPQyI6Vi5pbmNsdWRlcygid29yZHByb2Nlc3NpbmdtbCIpPyJET0NYIjpWLmluY2x1ZGVzKCJleGNlbCIpPyJYTFMiOlYuaW5jbHVkZXMoInByZXNlbnRhdGlvbiIpPyJQUFQiOihWLnNwbGl0KCIvIikucG9wKCk/P1YpLnRvVXBwZXJDYXNlKCl9YXR0YWNoTGlmZWN5Y2xlTGlzdGVuZXJzKCl7dGhpcy5yZWJpbmRJbnRlcmFjdGl2ZUVsZW1lbnRzKCl9Zmlyc3RVcGRhdGVkKFYpe3N1cGVyLmZpcnN0VXBkYXRlZChWKSx0aGlzLmF0dGFjaExpZmVjeWNsZUxpc3RlbmVycygpfXVwZGF0ZWQoVil7c3VwZXIudXBkYXRlZChWKSxWLmhhcygidmFsdWUiKSYmdGhpcy52YWxpZGF0ZSgpLHRoaXMucmViaW5kSW50ZXJhY3RpdmVFbGVtZW50cygpfWFzeW5jIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7dGhpcy5kZXRhY2hEcm9wTGlzdGVuZXJzKCksdGhpcy52YWx1ZS5mb3JFYWNoKFY9PnRoaXMucmVsZWFzZVByZXZpZXcoVikpLHRoaXMucHJldmlld1VybE1hcD1uZXcgV2Vha01hcCxhd2FpdCBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpfWFzeW5jIG9wZW5GaWxlU2VsZWN0b3IoKXtpZih0aGlzLmRpc2FibGVkfHx0aGlzLmlzTG9hZGluZylyZXR1cm47dGhpcy5pc0xvYWRpbmc9ITA7bGV0IFY9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIuZmlsZS1pbnB1dCIpO2lmKCFWKXt0aGlzLmlzTG9hZGluZz0hMTtyZXR1cm59bGV0IFc9aSgoKT0+e3NldFRpbWVvdXQoKCk9PnsoIVYuZmlsZXN8fFYuZmlsZXMubGVuZ3RoPT09MCkmJih0aGlzLmlzTG9hZGluZz0hMSksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIixXKX0sMzAwKX0sImhhbmRsZUZvY3VzIik7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIixXKSxWLmNsaWNrKCl9cmVtb3ZlRmlsZShWKXtsZXQgVz10aGlzLnZhbHVlLmluZGV4T2YoVik7Vz4tMSYmKHRoaXMucmVsZWFzZVByZXZpZXcoViksdGhpcy52YWx1ZS5zcGxpY2UoVywxKSx0aGlzLnJlcXVlc3RVcGRhdGUoInZhbHVlIiksdGhpcy52YWxpZGF0ZSgpLHRoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMpKX1jbGVhckFsbCgpe2xldCBWPVsuLi50aGlzLnZhbHVlXTt0aGlzLnZhbHVlPVtdLFYuZm9yRWFjaChXPT50aGlzLnJlbGVhc2VQcmV2aWV3KFcpKSx0aGlzLnJlcXVlc3RVcGRhdGUoInZhbHVlIiksdGhpcy52YWxpZGF0ZSgpLHRoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMpLHRoaXMuYnV0dG9uVGV4dD0iU2VsZWN0IGZpbGVzIn1hc3luYyB1cGRhdGVWYWx1ZShWKXtsZXQgVz1WLnRhcmdldDt0aGlzLnZhbHVlPUFycmF5LmZyb20oVy5maWxlcz8/W10pLHRoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMpfXNldFZhbHVlKFYpe3RoaXMudmFsdWUuZm9yRWFjaChXPT50aGlzLnJlbGVhc2VQcmV2aWV3KFcpKSx0aGlzLnZhbHVlPVYsVi5sZW5ndGg+MD90aGlzLmJ1dHRvblRleHQ9dGhpcy5tdWx0aXBsZT8iQWRkIG1vcmUgZmlsZXMiOiJSZXBsYWNlIGZpbGUiOnRoaXMuYnV0dG9uVGV4dD0iU2VsZWN0IGZpbGVzIix0aGlzLnJlcXVlc3RVcGRhdGUoInZhbHVlIiksdGhpcy52YWxpZGF0ZSgpfWdldFZhbHVlKCl7cmV0dXJuIHRoaXMudmFsdWV9YXN5bmMgYWRkRmlsZXMoVil7bGV0IFc9W107Zm9yKGxldCBtZSBvZiBWKXRoaXMudmFsaWRhdGVGaWxlKG1lKSYmVy5wdXNoKG1lKTtpZihXLmxlbmd0aD09PTApe3RoaXMuaXNMb2FkaW5nPSExO3JldHVybn1pZih0aGlzLm1heEZpbGVzPjAmJnRoaXMudmFsdWUubGVuZ3RoK1cubGVuZ3RoPnRoaXMubWF4RmlsZXMpe2xldCBCPXRoaXMubWF4RmlsZXMtdGhpcy52YWx1ZS5sZW5ndGg7aWYoQjw9MCl7dGhpcy52YWxpZGF0aW9uTWVzc2FnZT1gTWF4aW11bSAke3RoaXMubWF4RmlsZXN9IGZpbGVzIGFsbG93ZWRgLHRoaXMudmFsaWRhdGlvblN0YXRlPSJpbnZhbGlkIix0aGlzLmlzTG9hZGluZz0hMTtyZXR1cm59Vy5zcGxpY2UoQiksdGhpcy52YWxpZGF0aW9uTWVzc2FnZT1gT25seSAke0J9IG1vcmUgZmlsZShzKSBjYW4gYmUgYWRkZWRgLHRoaXMudmFsaWRhdGlvblN0YXRlPSJ3YXJuIn0hdGhpcy5tdWx0aXBsZSYmVy5sZW5ndGg+MD8odGhpcy52YWx1ZS5mb3JFYWNoKG1lPT50aGlzLnJlbGVhc2VQcmV2aWV3KG1lKSksdGhpcy52YWx1ZT1bV1swXV0pOnRoaXMudmFsdWUucHVzaCguLi5XKSx0aGlzLnZhbGlkYXRpb25NZXNzYWdlPSIiLHRoaXMudmFsaWRhdGlvblN0YXRlPW51bGwsdGhpcy5yZXF1ZXN0VXBkYXRlKCJ2YWx1ZSIpLGF3YWl0IHRoaXMudmFsaWRhdGUoKSx0aGlzLmNoYW5nZVN1YmplY3QubmV4dCh0aGlzKSx0aGlzLmlzTG9hZGluZz0hMSx0aGlzLnZhbHVlLmxlbmd0aD4wP3RoaXMuYnV0dG9uVGV4dD10aGlzLm11bHRpcGxlPyJBZGQgbW9yZSBmaWxlcyI6IlJlcGxhY2UgZmlsZSI6dGhpcy5idXR0b25UZXh0PSJTZWxlY3QgZmlsZXMifWFzeW5jIHZhbGlkYXRlKCl7aWYodGhpcy52YWxpZGF0aW9uTWVzc2FnZT0iIix0aGlzLnJlcXVpcmVkJiZ0aGlzLnZhbHVlLmxlbmd0aD09PTApcmV0dXJuIHRoaXMudmFsaWRhdGlvblN0YXRlPSJpbnZhbGlkIix0aGlzLnZhbGlkYXRpb25NZXNzYWdlPSJQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBmaWxlIiwhMTtmb3IobGV0IFYgb2YgdGhpcy52YWx1ZSlpZighdGhpcy52YWxpZGF0ZUZpbGUoVikpcmV0dXJuITE7cmV0dXJuIHRoaXMudmFsaWRhdGlvblN0YXRlPXRoaXMudmFsdWUubGVuZ3RoPjA/InZhbGlkIjpudWxsLCEwfXN0YXRpY3t0byhhLHQpfX07cmV0dXJuIEs9YX0pKCl9KTt2YXIgaW50PWcoKCk9PnthbnQoKX0pO3ZhciBJYmEsQWJhPWcoKCk9PntwZSgpO0liYT1pKCgpPT53YAogIDxkZWVzLWRlbW93cmFwcGVyPgogICAgPHN0eWxlPgogICAgICAke0pgCiAgICAgICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICAgIG1heC13aWR0aDogMTIwMHB4OwogICAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5wYXltZW50LWdyb3VwIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgIH0KICAgICAgYH0KICAgIDwvc3R5bGU+CiAgICAKICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IkJhc2ljIElCQU4gSW5wdXQifSAuc3VidGl0bGU9JHsiSW50ZXJuYXRpb25hbCBCYW5rIEFjY291bnQgTnVtYmVyIHdpdGggYXV0b21hdGljIGZvcm1hdHRpbmcifT4KICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRlZXMtaW5wdXQtaWJhbgogICAgICAgICAgICAubGFiZWw9JHsiQmFuayBBY2NvdW50IElCQU4ifQogICAgICAgICAgICAuaW5mb1RleHQ9JHsiRW50ZXIgeW91ciBJbnRlcm5hdGlvbmFsIEJhbmsgQWNjb3VudCBOdW1iZXIifQogICAgICAgICAgICAuZGVzY3JpcHRpb249JHsiWW91ciBJQkFOIGNhbiBiZSBmb3VuZCBvbiB5b3VyIGJhbmsgc3RhdGVtZW50In0KICAgICAgICAgID48L2RlZXMtaW5wdXQtaWJhbj4KCiAgICAgICAgICA8ZGVlcy1pbnB1dC1pYmFuCiAgICAgICAgICAgIC5sYWJlbD0keyJWZXJpZmllZCBJQkFOIn0KICAgICAgICAgICAgLmluZm9UZXh0PSR7IlRoaXMgSUJBTiBoYXMgYmVlbiB2ZXJpZmllZCJ9CiAgICAgICAgICAgIC52YWx1ZT0keyJERTg5MzcwNDAwNDQwNTMyMDEzMDAwIn0KICAgICAgICAgID48L2RlZXMtaW5wdXQtaWJhbj4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IlBheW1lbnQgSW5mb3JtYXRpb24ifSAuc3VidGl0bGU9JHsiSUJBTiBpbnB1dCB3aXRoIGhvcml6b250YWwgbGF5b3V0IGZvciBwYXltZW50IGZvcm1zIn0+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkaXYgY2xhc3M9InBheW1lbnQtZ3JvdXAiPgogICAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0CiAgICAgICAgICAgICAgLmxhYmVsPSR7IkFjY291bnQgSG9sZGVyIn0KICAgICAgICAgICAgICAubGF5b3V0TW9kZT0keyJob3Jpem9udGFsIn0KICAgICAgICAgICAgICAudmFsdWU9JHsiSm9obiBEb2UifQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+CgogICAgICAgICAgICA8ZGVlcy1pbnB1dC1pYmFuCiAgICAgICAgICAgICAgLmxhYmVsPSR7IklCQU4ifQogICAgICAgICAgICAgIC5sYXlvdXRNb2RlPSR7Imhvcml6b250YWwifQogICAgICAgICAgICAgIC52YWx1ZT0keyJHQjgyV0VTVDEyMzQ1Njk4NzY1NDMyIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1pYmFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJWYWxpZGF0aW9uICYgU3RhdGVzIn0gLnN1YnRpdGxlPSR7IlJlcXVpcmVkIGZpZWxkcyBhbmQgZGlzYWJsZWQgc3RhdGVzIn0+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkZWVzLWlucHV0LWliYW4KICAgICAgICAgICAgLmxhYmVsPSR7IlBheW1lbnQgQWNjb3VudCJ9CiAgICAgICAgICAgIC5pbmZvVGV4dD0keyJSZXF1aXJlZCBmb3IgcHJvY2Vzc2luZyBwYXltZW50cyJ9CiAgICAgICAgICAgIC5yZXF1aXJlZD0keyEwfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1pYmFuPgoKICAgICAgICAgIDxkZWVzLWlucHV0LWliYW4KICAgICAgICAgICAgLmxhYmVsPSR7IkxvY2tlZCBJQkFOIn0KICAgICAgICAgICAgLmluZm9UZXh0PSR7IlRoaXMgSUJBTiBjYW5ub3QgYmUgY2hhbmdlZCJ9CiAgICAgICAgICAgIC52YWx1ZT0keyJGUjE0MjAwNDEwMTAwNTA1MDAwMTNNMDI2MDYifQogICAgICAgICAgICAuZGlzYWJsZWQ9JHshMH0KICAgICAgICAgID48L2RlZXMtaW5wdXQtaWJhbj4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IkJhbmsgVHJhbnNmZXIgRm9ybSJ9IC5zdWJ0aXRsZT0keyJDb21wbGV0ZSBmb3JtIGV4YW1wbGUgd2l0aCBJQkFOIHZhbGlkYXRpb24ifT4KICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dCAubGFiZWw9JHsiUmVjaXBpZW50IE5hbWUifSAucmVxdWlyZWQ9JHshMH0+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1pYmFuIC5sYWJlbD0keyJSZWNpcGllbnQgSUJBTiJ9IC5yZXF1aXJlZD0keyEwfT48L2RlZXMtaW5wdXQtaWJhbj4KICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQgLmxhYmVsPSR7IlRyYW5zZmVyIFJlZmVyZW5jZSJ9IC5pbmZvVGV4dD0keyJPcHRpb25hbCByZWZlcmVuY2UgZm9yIHRoZSB0cmFuc2ZlciJ9PjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dCAubGFiZWw9JHsiQW1vdW50In0gLmlucHV0VHlwZT0keyJudW1iZXIifSAucmVxdWlyZWQ9JHshMH0+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGl2PgogIDwvZGVlcy1kZW1vd3JhcHBlcj4KYCwiZGVtb0Z1bmMiKX0pO3ZhciBPMWUsR2cscm50LG9udD1nKCgpPT57cGUoKTtrdCgpO0VpKCk7S2V0KCk7QWJhKCk7aHQoKTtPMWU9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LEdnPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxybnQ9KCgpPT57bGV0IHM9W25lKCJkZWVzLWlucHV0LWliYW4iKV0sZSx0PVtdLGEscj1CdCxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXTt2YXIgeD1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0lucHV0SWJhbiIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBtPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W1koKV0scD1bWSgpXSxjPVtMKHt0eXBlOlN0cmluZ30pXSxPMWUodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJlbnRlcmVkU3RyaW5nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGY9PiJlbnRlcmVkU3RyaW5nImluIGYsImhhcyIpLGdldDppKGY9PmYuZW50ZXJlZFN0cmluZywiZ2V0Iiksc2V0OmkoKGYseSk9PntmLmVudGVyZWRTdHJpbmc9eX0sInNldCIpfSxtZXRhZGF0YTptfSxvLGwpLE8xZSh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImVudGVyZWRJYmFuSXNWYWxpZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShmPT4iZW50ZXJlZEliYW5Jc1ZhbGlkImluIGYsImhhcyIpLGdldDppKGY9PmYuZW50ZXJlZEliYW5Jc1ZhbGlkLCJnZXQiKSxzZXQ6aSgoZix5KT0+e2YuZW50ZXJlZEliYW5Jc1ZhbGlkPXl9LCJzZXQiKX0sbWV0YWRhdGE6bX0sZCx1KSxPMWUodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2YWx1ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShmPT4idmFsdWUiaW4gZiwiaGFzIiksZ2V0OmkoZj0+Zi52YWx1ZSwiZ2V0Iiksc2V0OmkoKGYseSk9PntmLnZhbHVlPXl9LCJzZXQiKX0sbWV0YWRhdGE6bX0sYix2KSxPMWUobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6bX0sbnVsbCx0KSx4PWE9ZS52YWx1ZSxtJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm19KX1zdGF0aWMgZGVtbz1JYmE7c3RhdGljIGRlbW9Hcm91cHM9WyJJbnB1dCJdOyNlPUdnKHRoaXMsbywiIik7Z2V0IGVudGVyZWRTdHJpbmcoKXtyZXR1cm4gdGhpcy4jZX1zZXQgZW50ZXJlZFN0cmluZyhtKXt0aGlzLiNlPW19I3Q9KEdnKHRoaXMsbCksR2codGhpcyxkLCExKSk7Z2V0IGVudGVyZWRJYmFuSXNWYWxpZCgpe3JldHVybiB0aGlzLiN0fXNldCBlbnRlcmVkSWJhbklzVmFsaWQobSl7dGhpcy4jdD1tfSNhPShHZyh0aGlzLHUpLEdnKHRoaXMsYiwiIikpO2dldCB2YWx1ZSgpe3JldHVybiB0aGlzLiNhfXNldCB2YWx1ZShtKXt0aGlzLiNhPW19c3RhdGljIHN0eWxlcz1bcWUsLi4uQnQuYmFzZVN0eWxlcyxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgLyogVE9ETzogTWlncmF0ZSBoYXJkY29kZWQgdmFsdWVzIHRvIC0tZGVlcy0qIENTUyB2YXJpYWJsZXMgKi8KICAgICAgLyogSUJBTiBpbnB1dCBzcGVjaWZpYyBzdHlsZXMgY2FuIGdvIGhlcmUgKi8KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJpbnB1dC13cmFwcGVyIj4KICAgICAgICA8ZGVlcy1sYWJlbCAubGFiZWw9JHt0aGlzLmxhYmVsfHwiSUJBTiJ9IC5pbmZvVGV4dD0ke3RoaXMuaW5mb1RleHR9PjwvZGVlcy1sYWJlbD4KICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0CiAgICAgICAgICAudmFsdWU9JHt0aGlzLnZhbHVlfQogICAgICAgICAgLmRpc2FibGVkPSR7dGhpcy5kaXNhYmxlZH0KICAgICAgICAgIC5yZXF1aXJlZD0ke3RoaXMucmVxdWlyZWR9CiAgICAgICAgICAucGxhY2Vob2xkZXI9JHsiREU4OSAzNzA0IDAwNDQgMDUzMiAwMTMwIDAwIn0KICAgICAgICAgIC52YWxpZGF0aW9uRnVuY3Rpb249JHttPT57bGV0IGY9bS5yZXBsYWNlKC8gL2csIiIpO3JldHVybiBmLmxlbmd0aD09PTA/e3ZhbGlkOiEwLG1lc3NhZ2U6IiJ9Ok44KGYpP3t2YWxpZDohMCxtZXNzYWdlOiJJQkFOIGlzIHZhbGlkIn06e3ZhbGlkOiExLG1lc3NhZ2U6IlBsZWFzZSBlbnRlciBhIHZhbGlkIElCQU4ifX19CiAgICAgICAgICBAaW5wdXQ9JHttPT57dGhpcy52YWxpZGF0ZUliYW4obSl9fQogICAgICAgID48L2RlZXMtaW5wdXQtdGV4dD4KICAgICAgICAke3RoaXMucmVuZGVyRGVzY3JpcHRpb24oKX0KICAgICAgPC9kaXY+CiAgICBgfWZpcnN0VXBkYXRlZChtKXtzdXBlci5maXJzdFVwZGF0ZWQobSk7bGV0IGY9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoImRlZXMtaW5wdXQtdGV4dCIpO2YmJmYuY2hhbmdlU3ViamVjdCYmZi5jaGFuZ2VTdWJqZWN0LnN1YnNjcmliZSgoKT0+e3RoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMpfSl9YXN5bmMgdmFsaWRhdGVJYmFuKG0pe2xldCBmPW0udGFyZ2V0LHk9Zj8udmFsdWU7eT15fHwiIix0aGlzLmVudGVyZWRTdHJpbmchPT15JiYodGhpcy5lbnRlcmVkU3RyaW5nPWZ2KHkpfHwiIixmJiYoZi52YWx1ZT10aGlzLmVudGVyZWRTdHJpbmcsdGhpcy52YWx1ZT10aGlzLmVudGVyZWRTdHJpbmcsdGhpcy5jaGFuZ2VTdWJqZWN0Lm5leHQodGhpcykpKSx0aGlzLmVudGVyZWRJYmFuSXNWYWxpZD1OOCh0aGlzLmVudGVyZWRTdHJpbmcucmVwbGFjZSgvIC9nLCIiKSl9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy52YWx1ZX1zZXRWYWx1ZShtKXt0aGlzLnZhbHVlPW0sdGhpcy5lbnRlcmVkU3RyaW5nPWZ2KG0pfHwiIn1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksR2codGhpcyx2KX1zdGF0aWN7R2coYSx0KX19O3JldHVybiB4PWF9KSgpfSk7dmFyIE5iYSxSYmE9ZygoKT0+e3BlKCk7TmJhPWkoKCk9PndgCiAgPGRlZXMtZGVtb3dyYXBwZXI+CiAgICA8c3R5bGU+CiAgICAgICR7SmAKICAgICAgICAuZGVtby1jb250YWluZXIgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICBnYXA6IDMycHg7CiAgICAgICAgICBwYWRkaW5nOiA0OHB4OwogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmOGY5ZmEiLCIjMGEwYTBhIil9OwogICAgICAgICAgbWluLWhlaWdodDogMTAwdmg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5zZWN0aW9uIHsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzE4MTgxYiIpfTsKICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzI3MjcyYSIpfTsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuc2VjdGlvbi10aXRsZSB7CiAgICAgICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnNlY3Rpb24tZGVzY3JpcHRpb24gewogICAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5zZXR0aW5ncy1ncmlkIHsKICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7CiAgICAgICAgICBnYXA6IDI0cHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgewogICAgICAgICAgLnNldHRpbmdzLWdyaWQgewogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIGB9CiAgICA8L3N0eWxlPgogICAgCiAgICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPk11bHRpLU9wdGlvbiBUb2dnbGU8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj5TZWxlY3QgZnJvbSBtdWx0aXBsZSBvcHRpb25zIHdpdGggYSBzbW9vdGggc2xpZGluZyBpbmRpY2F0b3IgYW5pbWF0aW9uLjwvZGl2PgoKICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRlZXMtaW5wdXQtbXVsdGl0b2dnbGUKICAgICAgICAgICAgLmxhYmVsPSR7IkRpc3BsYXkgTW9kZSJ9CiAgICAgICAgICAgIC5pbmZvVGV4dD0keyJDaG9vc2UgaG93IGNvbnRlbnQgaXMgZGlzcGxheWVkIn0KICAgICAgICAgICAgLmRlc2NyaXB0aW9uPSR7IlRoaXMgc2V0dGluZyBhZmZlY3RzIGhvdyBpdGVtcyBhcHBlYXIgb24geW91ciBkYXNoYm9hcmQifQogICAgICAgICAgICAub3B0aW9ucz0ke1siTGlzdCBWaWV3IiwiR3JpZCBWaWV3IiwiQ29tcGFjdCJdfQogICAgICAgICAgICAuc2VsZWN0ZWRPcHRpb249JHsiR3JpZCBWaWV3In0KICAgICAgICAgID48L2RlZXMtaW5wdXQtbXVsdGl0b2dnbGU+CgogICAgICAgICAgPGRlZXMtaW5wdXQtbXVsdGl0b2dnbGUKICAgICAgICAgICAgLmxhYmVsPSR7IlQtU2hpcnQgU2l6ZSJ9CiAgICAgICAgICAgIC5pbmZvVGV4dD0keyJTZWxlY3QgeW91ciBwcmVmZXJyZWQgc2l6ZSJ9CiAgICAgICAgICAgIC5vcHRpb25zPSR7WyJYUyIsIlMiLCJNIiwiTCIsIlhMIiwiWFhMIl19CiAgICAgICAgICAgIC5zZWxlY3RlZE9wdGlvbj0keyJNIn0KICAgICAgICAgID48L2RlZXMtaW5wdXQtbXVsdGl0b2dnbGU+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGl2PgogICAgICAKICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+Qm9vbGVhbiBUb2dnbGU8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj5TaW1wbGUgb24vb2ZmIHN3aXRjaGVzIHdpdGggY3VzdG9taXphYmxlIGxhYmVscyBmb3IgY2xlYXJlciBjb250ZXh0LjwvZGl2PgoKICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRlZXMtaW5wdXQtbXVsdGl0b2dnbGUKICAgICAgICAgICAgLmxhYmVsPSR7Ik5vdGlmaWNhdGlvbnMifQogICAgICAgICAgICAuaW5mb1RleHQ9JHsiRW5hYmxlIG9yIGRpc2FibGUgcHVzaCBub3RpZmljYXRpb25zIn0KICAgICAgICAgICAgLnR5cGU9JHsiYm9vbGVhbiJ9CiAgICAgICAgICAgIC5zZWxlY3RlZE9wdGlvbj0keyJ0cnVlIn0KICAgICAgICAgID48L2RlZXMtaW5wdXQtbXVsdGl0b2dnbGU+CgogICAgICAgICAgPGRlZXMtaW5wdXQtbXVsdGl0b2dnbGUKICAgICAgICAgICAgLmxhYmVsPSR7IlRoZW1lIE1vZGUifQogICAgICAgICAgICAuaW5mb1RleHQ9JHsiU3dpdGNoIGJldHdlZW4gbGlnaHQgYW5kIGRhcmsgdGhlbWUifQogICAgICAgICAgICAudHlwZT0keyJib29sZWFuIn0KICAgICAgICAgICAgLmJvb2xlYW5UcnVlTmFtZT0keyJEYXJrIn0KICAgICAgICAgICAgLmJvb2xlYW5GYWxzZU5hbWU9JHsiTGlnaHQifQogICAgICAgICAgICAuc2VsZWN0ZWRPcHRpb249JHsiRGFyayJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LW11bHRpdG9nZ2xlPgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2Rpdj4KICAgICAgCiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPlNldHRpbmdzIEdyaWQ8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj5Db25maWd1cmF0aW9uIG9wdGlvbnMgYXJyYW5nZWQgaW4gYSByZXNwb25zaXZlIGdyaWQgbGF5b3V0LjwvZGl2PgoKICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2V0dGluZ3MtZ3JpZCI+CiAgICAgICAgICAgIDxkZWVzLWlucHV0LW11bHRpdG9nZ2xlCiAgICAgICAgICAgICAgLmxhYmVsPSR7IkF1dG8tU2F2ZSJ9CiAgICAgICAgICAgICAgLnR5cGU9JHsiYm9vbGVhbiJ9CiAgICAgICAgICAgICAgLmJvb2xlYW5UcnVlTmFtZT0keyJFbmFibGVkIn0KICAgICAgICAgICAgICAuYm9vbGVhbkZhbHNlTmFtZT0keyJEaXNhYmxlZCJ9CiAgICAgICAgICAgICAgLnNlbGVjdGVkT3B0aW9uPSR7IkVuYWJsZWQifQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LW11bHRpdG9nZ2xlPgoKICAgICAgICAgICAgPGRlZXMtaW5wdXQtbXVsdGl0b2dnbGUKICAgICAgICAgICAgICAubGFiZWw9JHsiTGFuZ3VhZ2UifQogICAgICAgICAgICAgIC5vcHRpb25zPSR7WyJFbmdsaXNoIiwiR2VybWFuIiwiRnJlbmNoIiwiU3BhbmlzaCJdfQogICAgICAgICAgICAgIC5zZWxlY3RlZE9wdGlvbj0keyJFbmdsaXNoIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1tdWx0aXRvZ2dsZT4KCiAgICAgICAgICAgIDxkZWVzLWlucHV0LW11bHRpdG9nZ2xlCiAgICAgICAgICAgICAgLmxhYmVsPSR7IlF1YWxpdHkifQogICAgICAgICAgICAgIC5vcHRpb25zPSR7WyJMb3ciLCJNZWRpdW0iLCJIaWdoIiwiVWx0cmEiXX0KICAgICAgICAgICAgICAuc2VsZWN0ZWRPcHRpb249JHsiSGlnaCJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtbXVsdGl0b2dnbGU+CgogICAgICAgICAgICA8ZGVlcy1pbnB1dC1tdWx0aXRvZ2dsZQogICAgICAgICAgICAgIC5sYWJlbD0keyJQcml2YWN5In0KICAgICAgICAgICAgICAudHlwZT0keyJib29sZWFuIn0KICAgICAgICAgICAgICAuYm9vbGVhblRydWVOYW1lPSR7IlByaXZhdGUifQogICAgICAgICAgICAgIC5ib29sZWFuRmFsc2VOYW1lPSR7IlB1YmxpYyJ9CiAgICAgICAgICAgICAgLnNlbGVjdGVkT3B0aW9uPSR7IlByaXZhdGUifQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LW11bHRpdG9nZ2xlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGl2PgogICAgICAKICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+U3RhdGVzICYgRm9ybSBJbnRlZ3JhdGlvbjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tZGVzY3JpcHRpb24iPkV4YW1wbGVzIG9mIGRpc2FibGVkIHN0YXRlcyBhbmQgaW50ZWdyYXRpb24gd2l0aGluIGZvcm1zLjwvZGl2PgogICAgICAgIAogICAgICAgIDxkZWVzLWlucHV0LW11bHRpdG9nZ2xlCiAgICAgICAgICAubGFiZWw9JHsiQWNjb3VudCBUeXBlIn0KICAgICAgICAgIC5pbmZvVGV4dD0keyJUaGlzIHNldHRpbmcgaXMgbG9ja2VkIn0KICAgICAgICAgIC5vcHRpb25zPSR7WyJGcmVlIiwiUHJvIiwiRW50ZXJwcmlzZSJdfQogICAgICAgICAgLnNlbGVjdGVkT3B0aW9uPSR7IkVudGVycHJpc2UifQogICAgICAgICAgLmRpc2FibGVkPSR7ITB9CiAgICAgICAgPjwvZGVlcy1pbnB1dC1tdWx0aXRvZ2dsZT4KICAgICAgICAKICAgICAgICA8YnI+PGJyPgogICAgICAgIAogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0IC5sYWJlbD0keyJQcm9qZWN0IE5hbWUifSAucmVxdWlyZWQ9JHshMH0+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1tdWx0aXRvZ2dsZQogICAgICAgICAgICAubGFiZWw9JHsiVmlzaWJpbGl0eSJ9CiAgICAgICAgICAgIC50eXBlPSR7ImJvb2xlYW4ifQogICAgICAgICAgICAuYm9vbGVhblRydWVOYW1lPSR7IlB1YmxpYyJ9CiAgICAgICAgICAgIC5ib29sZWFuRmFsc2VOYW1lPSR7IlByaXZhdGUifQogICAgICAgICAgICAuc2VsZWN0ZWRPcHRpb249JHsiUHJpdmF0ZSJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LW11bHRpdG9nZ2xlPgogICAgICAgICAgPGRlZXMtaW5wdXQtbXVsdGl0b2dnbGUKICAgICAgICAgICAgLmxhYmVsPSR7IkxpY2Vuc2UifQogICAgICAgICAgICAub3B0aW9ucz0ke1siTUlUIiwiQXBhY2hlIDIuMCIsIkdQTCB2MyIsIlByb3ByaWV0YXJ5Il19CiAgICAgICAgICAgIC5zZWxlY3RlZE9wdGlvbj0keyJNSVQifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1tdWx0aXRvZ2dsZT4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2RlZXMtZGVtb3dyYXBwZXI+CmAsImRlbW9GdW5jIil9KTt2YXIgS2csb2Msbm50LGxudD1nKCgpPT57cGUoKTtFaSgpO3cyKCk7UmJhKCk7aHQoKTtLZz1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sb2M9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LG5udD0oKCk9PntsZXQgcz1bbmUoImRlZXMtaW5wdXQtbXVsdGl0b2dnbGUiKV0sZSx0PVtdLGEscj1CdCxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXTt2YXIgTz1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0lucHV0TXVsdGl0b2dnbGUiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgJD10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKCldLHA9W0woKV0sYz1bTCgpXSx4PVtMKHt0eXBlOkFycmF5fSldLHk9W0woKV0sTj1bTCh7dHlwZTpCb29sZWFufSldLEtnKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidHlwZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShFPT4idHlwZSJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLnR5cGUsImdldCIpLHNldDppKChFLEgpPT57RS50eXBlPUh9LCJzZXQiKX0sbWV0YWRhdGE6JH0sbyxsKSxLZyh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImJvb2xlYW5UcnVlTmFtZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShFPT4iYm9vbGVhblRydWVOYW1lImluIEUsImhhcyIpLGdldDppKEU9PkUuYm9vbGVhblRydWVOYW1lLCJnZXQiKSxzZXQ6aSgoRSxIKT0+e0UuYm9vbGVhblRydWVOYW1lPUh9LCJzZXQiKX0sbWV0YWRhdGE6JH0sZCx1KSxLZyh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImJvb2xlYW5GYWxzZU5hbWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+ImJvb2xlYW5GYWxzZU5hbWUiaW4gRSwiaGFzIiksZ2V0OmkoRT0+RS5ib29sZWFuRmFsc2VOYW1lLCJnZXQiKSxzZXQ6aSgoRSxIKT0+e0UuYm9vbGVhbkZhbHNlTmFtZT1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LGIsdiksS2codGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJvcHRpb25zIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEU9PiJvcHRpb25zImluIEUsImhhcyIpLGdldDppKEU9PkUub3B0aW9ucywiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLm9wdGlvbnM9SH0sInNldCIpfSxtZXRhZGF0YTokfSxtLGYpLEtnKHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VsZWN0ZWRPcHRpb24iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+InNlbGVjdGVkT3B0aW9uImluIEUsImhhcyIpLGdldDppKEU9PkUuc2VsZWN0ZWRPcHRpb24sImdldCIpLHNldDppKChFLEgpPT57RS5zZWxlY3RlZE9wdGlvbj1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LE0seiksS2codGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJib29sVmFsdWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+ImJvb2xWYWx1ZSJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLmJvb2xWYWx1ZSwiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLmJvb2xWYWx1ZT1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LEMsXyksS2cobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6JH0sbnVsbCx0KSxPPWE9ZS52YWx1ZSwkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOiR9KX1zdGF0aWMgZGVtbz1OYmE7c3RhdGljIGRlbW9Hcm91cHM9WyJJbnB1dCJdOyNlPW9jKHRoaXMsbywibXVsdGkiKTtnZXQgdHlwZSgpe3JldHVybiB0aGlzLiNlfXNldCB0eXBlKCQpe3RoaXMuI2U9JH0jdD0ob2ModGhpcyxsKSxvYyh0aGlzLGQsInRydWUiKSk7Z2V0IGJvb2xlYW5UcnVlTmFtZSgpe3JldHVybiB0aGlzLiN0fXNldCBib29sZWFuVHJ1ZU5hbWUoJCl7dGhpcy4jdD0kfSNhPShvYyh0aGlzLHUpLG9jKHRoaXMsYiwiZmFsc2UiKSk7Z2V0IGJvb2xlYW5GYWxzZU5hbWUoKXtyZXR1cm4gdGhpcy4jYX1zZXQgYm9vbGVhbkZhbHNlTmFtZSgkKXt0aGlzLiNhPSR9I3M9KG9jKHRoaXMsdiksb2ModGhpcyxtLFtdKSk7Z2V0IG9wdGlvbnMoKXtyZXR1cm4gdGhpcy4jc31zZXQgb3B0aW9ucygkKXt0aGlzLiNzPSR9I2k9KG9jKHRoaXMsZiksb2ModGhpcyxNLCIiKSk7Z2V0IHNlbGVjdGVkT3B0aW9uKCl7cmV0dXJuIHRoaXMuI2l9c2V0IHNlbGVjdGVkT3B0aW9uKCQpe3RoaXMuI2k9JH0jcj0ob2ModGhpcyx6KSxvYyh0aGlzLEMsITEpKTtnZXQgYm9vbFZhbHVlKCl7cmV0dXJuIHRoaXMuI3J9c2V0IGJvb2xWYWx1ZSgkKXt0aGlzLiNyPSR9Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMudHlwZT09PSJib29sZWFuIj90aGlzLnNlbGVjdGVkT3B0aW9uPT09dGhpcy5ib29sZWFuVHJ1ZU5hbWU6dGhpcy5zZWxlY3RlZE9wdGlvbn1zZXQgdmFsdWUoJCl7dGhpcy50eXBlPT09ImJvb2xlYW4iJiZ0eXBlb2YgJD09ImJvb2xlYW4iP3RoaXMuc2VsZWN0ZWRPcHRpb249JD90aGlzLmJvb2xlYW5UcnVlTmFtZTp0aGlzLmJvb2xlYW5GYWxzZU5hbWU6dGhpcy5zZWxlY3RlZE9wdGlvbj0kLHRoaXMucmVxdWVzdFVwZGF0ZSgpLHRoaXMuaGFzVXBkYXRlZCYmcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dGhpcy5zZXRJbmRpY2F0b3IoKX0pfXN0YXRpYyBzdHlsZXM9W3FlLC4uLkJ0LmJhc2VTdHlsZXMsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICAgIDpob3N0IHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTA5MGIiLCIjZmFmYWZhIil9OwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICB9CgogICAgICAuc2VsZWN0aW9ucyB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMTgxODFiIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzI3MjcyYSIpfTsKICAgICAgICBwYWRkaW5nOiA0cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4wNSk7CiAgICAgIH0KCiAgICAgIC5vcHRpb24gewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBwYWRkaW5nOiA4cHggMjBweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgMC4ycyBlYXNlOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiM3MTcxN2EiKX07CiAgICAgICAgbGluZS1oZWlnaHQ6IDE7CiAgICAgICAgei1pbmRleDogMjsKICAgICAgfQoKICAgICAgLm9wdGlvbjpob3ZlciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2U0ZTRlNyIpfTsKICAgICAgfQoKICAgICAgLm9wdGlvbi5zZWxlY3RlZCB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzYwYTVmYSIpfTsKICAgICAgfQoKICAgICAgLmluZGljYXRvciB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA4cHgpOwogICAgICAgIHRvcDogNHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSg1OSwgMTMwLCAyNDYsIDAuMTUpIiwicmdiYSg1OSwgMTMwLCAyNDYsIDAuMTUpIil9OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CiAgICAgICAgei1pbmRleDogMTsKICAgICAgfQogICAgICAKICAgICAgLmluZGljYXRvci5uby10cmFuc2l0aW9uIHsKICAgICAgICB0cmFuc2l0aW9uOiBub25lOwogICAgICB9CiAgICAgIAogICAgICA6aG9zdChbZGlzYWJsZWRdKSAuc2VsZWN0aW9ucyB7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIC5vcHRpb24gewogICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIC5pbmRpY2F0b3IgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDExMywgMTEzLCAxMjIsIDAuMTUpIiwicmdiYSgxMTMsIDExMywgMTIyLCAwLjE1KSIpfTsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImlucHV0LXdyYXBwZXIiPgogICAgICAgIDxkZWVzLWxhYmVsIC5sYWJlbD0ke3RoaXMubGFiZWx9IC5pbmZvVGV4dD0ke3RoaXMuaW5mb1RleHR9PjwvZGVlcy1sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJtYWluYm94Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlbGVjdGlvbnMiPgogICAgICAgICAgPGRpdiBjbGFzcz0iaW5kaWNhdG9yIj48L2Rpdj4KICAgICAgICAgICR7dGhpcy5vcHRpb25zLm1hcCgkPT53YDxkaXYgY2xhc3M9Im9wdGlvbiAkeyQ9PT10aGlzLnNlbGVjdGVkT3B0aW9uPyJzZWxlY3RlZCI6IiJ9IiBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVTZWxlY3Rpb24oJCl9PgogICAgICAgICAgICAgICAgJHskfQogICAgICAgICAgICAgIDwvZGl2PiBgKX0KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgICR7dGhpcy5yZW5kZXJEZXNjcmlwdGlvbigpfQogICAgICA8L2Rpdj4KICAgIGB9YXN5bmMgY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMudHlwZT09PSJib29sZWFuIiYmdGhpcy5vcHRpb25zLmxlbmd0aD09PTAmJih0aGlzLm9wdGlvbnM9W3RoaXMuYm9vbGVhblRydWVOYW1lfHwidHJ1ZSIsdGhpcy5ib29sZWFuRmFsc2VOYW1lfHwiZmFsc2UiXSx0aGlzLnNlbGVjdGVkT3B0aW9ufHwodGhpcy5zZWxlY3RlZE9wdGlvbj10aGlzLmJvb2xlYW5GYWxzZU5hbWV8fCJmYWxzZSIpKSwhdGhpcy5zZWxlY3RlZE9wdGlvbiYmdGhpcy5vcHRpb25zLmxlbmd0aD4wJiYodGhpcy5zZWxlY3RlZE9wdGlvbj10aGlzLm9wdGlvbnNbMF0pfWFzeW5jIGZpcnN0VXBkYXRlZCgkKXtzdXBlci5maXJzdFVwZGF0ZWQoJCksdGhpcy50eXBlPT09ImJvb2xlYW4iJiYodGhpcy5vcHRpb25zPVt0aGlzLmJvb2xlYW5UcnVlTmFtZXx8InRydWUiLHRoaXMuYm9vbGVhbkZhbHNlTmFtZXx8ImZhbHNlIl0pLGF3YWl0IHRoaXMudXBkYXRlQ29tcGxldGUsZG9jdW1lbnQuZm9udHMmJmF3YWl0IGRvY3VtZW50LmZvbnRzLnJlYWR5LGF3YWl0IG5ldyBQcm9taXNlKEU9PnJlcXVlc3RBbmltYXRpb25GcmFtZShFKSksdGhpcy5zZXRJbmRpY2F0b3IoKX1hc3luYyBoYW5kbGVTZWxlY3Rpb24oJCl7dGhpcy5kaXNhYmxlZHx8KHRoaXMuc2VsZWN0ZWRPcHRpb249JCx0aGlzLnJlcXVlc3RVcGRhdGUoKSx0aGlzLmNoYW5nZVN1YmplY3QubmV4dCh0aGlzKSxhd2FpdCB0aGlzLnVwZGF0ZUNvbXBsZXRlLHRoaXMuc2V0SW5kaWNhdG9yKCkpfWluZGljYXRvckluaXRpYWxpemVkPShvYyh0aGlzLF8pLCExKTthc3luYyBzZXRJbmRpY2F0b3IoKXtsZXQgJD10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLmluZGljYXRvciIpLEU9dGhpcy5vcHRpb25zLmluZGV4T2YodGhpcy5zZWxlY3RlZE9wdGlvbik7aWYoRT09PS0xfHwhJCl7JCYmKCQuc3R5bGUub3BhY2l0eT0iMCIpO3JldHVybn1sZXQgSD10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgLm9wdGlvbjpudGgtY2hpbGQoJHtFKzJ9KWApOyQmJkgmJih0aGlzLmluZGljYXRvckluaXRpYWxpemVkfHwoJC5jbGFzc0xpc3QuYWRkKCJuby10cmFuc2l0aW9uIiksdGhpcy5pbmRpY2F0b3JJbml0aWFsaXplZD0hMCxzZXRUaW1lb3V0KCgpPT57JC5jbGFzc0xpc3QucmVtb3ZlKCJuby10cmFuc2l0aW9uIil9LDUwKSksJC5zdHlsZS53aWR0aD1gJHtILmNsaWVudFdpZHRofXB4YCwkLnN0eWxlLmxlZnQ9YCR7SC5vZmZzZXRMZWZ0fXB4YCwkLnN0eWxlLm9wYWNpdHk9IjEiKX1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLnR5cGU9PT0iYm9vbGVhbiI/dGhpcy5zZWxlY3RlZE9wdGlvbj09PXRoaXMuYm9vbGVhblRydWVOYW1lOnRoaXMuc2VsZWN0ZWRPcHRpb259c2V0VmFsdWUoJCl7dGhpcy50eXBlPT09ImJvb2xlYW4iJiZ0eXBlb2YgJD09ImJvb2xlYW4iP3RoaXMuc2VsZWN0ZWRPcHRpb249JD90aGlzLmJvb2xlYW5UcnVlTmFtZXx8InRydWUiOnRoaXMuYm9vbGVhbkZhbHNlTmFtZXx8ImZhbHNlIjp0aGlzLnNlbGVjdGVkT3B0aW9uPSQsdGhpcy5yZXF1ZXN0VXBkYXRlKCksdGhpcy5oYXNVcGRhdGVkJiZyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pnt0aGlzLnNldEluZGljYXRvcigpfSl9c3RhdGlje29jKGEsdCl9fTtyZXR1cm4gTz1hfSkoKX0pO3ZhciBPYmEsRmJhPWcoKCk9PntwZSgpO09iYT1pKCgpPT53YAogIDxkZWVzLWRlbW93cmFwcGVyPgogICAgPHN0eWxlPgogICAgICAke0pgCiAgICAgICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICAgIG1heC13aWR0aDogMTIwMHB4OwogICAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5ob3Jpem9udGFsLWdyb3VwIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgIH0KICAgICAgYH0KICAgIDwvc3R5bGU+CiAgICAKICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IkJhc2ljIFBob25lIElucHV0In0gLnN1YnRpdGxlPSR7IkF1dG9tYXRpYyBmb3JtYXR0aW5nIGZvciBwaG9uZSBudW1iZXJzIn0+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkZWVzLWlucHV0LXBob25lCiAgICAgICAgICAgIC5sYWJlbD0keyJQaG9uZSBOdW1iZXIifQogICAgICAgICAgICAuaW5mb1RleHQ9JHsiRW50ZXIgeW91ciBwaG9uZSBudW1iZXIgd2l0aCBjb3VudHJ5IGNvZGUifQogICAgICAgICAgICAuZGVzY3JpcHRpb249JHsiSW5jbHVkZSBjb3VudHJ5IGNvZGUgZm9yIGludGVybmF0aW9uYWwgbnVtYmVycyJ9CiAgICAgICAgICAgIC52YWx1ZT0keyI1NTUxMjM0NTY3In0KICAgICAgICAgID48L2RlZXMtaW5wdXQtcGhvbmU+CgogICAgICAgICAgPGRlZXMtaW5wdXQtcGhvbmUKICAgICAgICAgICAgLmxhYmVsPSR7IkNvbnRhY3QgUGhvbmUifQogICAgICAgICAgICAuaW5mb1RleHQ9JHsiUmVxdWlyZWQgZm9yIGFjY291bnQgdmVyaWZpY2F0aW9uIn0KICAgICAgICAgICAgLnJlcXVpcmVkPSR7ITB9CiAgICAgICAgICAgIC5wbGFjZWhvbGRlcj0keyIrMSAoNTU1KSAwMDAtMDAwMCJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXBob25lPgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICAgIAogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiSG9yaXpvbnRhbCBMYXlvdXQifSAuc3VidGl0bGU9JHsiUGhvbmUgaW5wdXRzIGFycmFuZ2VkIGhvcml6b250YWxseSJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJob3Jpem9udGFsLWdyb3VwIj4KICAgICAgICAgICAgPGRlZXMtaW5wdXQtcGhvbmUKICAgICAgICAgICAgICAubGFiZWw9JHsiTW9iaWxlIn0KICAgICAgICAgICAgICAubGF5b3V0TW9kZT0keyJob3Jpem9udGFsIn0KICAgICAgICAgICAgICAudmFsdWU9JHsiNDE1NTU1MTIzNCJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtcGhvbmU+CgogICAgICAgICAgICA8ZGVlcy1pbnB1dC1waG9uZQogICAgICAgICAgICAgIC5sYWJlbD0keyJPZmZpY2UifQogICAgICAgICAgICAgIC5sYXlvdXRNb2RlPSR7Imhvcml6b250YWwifQogICAgICAgICAgICAgIC5wbGFjZWhvbGRlcj0keyIrMSAoODAwKSA1NTUtMDAwMCJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtcGhvbmU+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IkludGVybmF0aW9uYWwgTnVtYmVycyJ9IC5zdWJ0aXRsZT0keyJTdXBwb3J0cyBmb3JtYXR0aW5nIGZvciBudW1iZXJzIHdpdGggY291bnRyeSBjb2RlcyJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1waG9uZQogICAgICAgICAgICAubGFiZWw9JHsiSW50ZXJuYXRpb25hbCBDb250YWN0In0KICAgICAgICAgICAgLmluZm9UZXh0PSR7IkF1dG9tYXRpY2FsbHkgZm9ybWF0cyBpbnRlcm5hdGlvbmFsIG51bWJlcnMifQogICAgICAgICAgICAudmFsdWU9JHsiNDQxMjM0NTY3ODkwIn0KICAgICAgICAgID48L2RlZXMtaW5wdXQtcGhvbmU+CgogICAgICAgICAgPGRlZXMtaW5wdXQtcGhvbmUKICAgICAgICAgICAgLmxhYmVsPSR7IkVtZXJnZW5jeSBDb250YWN0In0KICAgICAgICAgICAgLnZhbHVlPSR7IjkxMSJ9CiAgICAgICAgICAgIC5kaXNhYmxlZD0keyEwfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1waG9uZT4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IkZvcm0gSW50ZWdyYXRpb24ifSAuc3VidGl0bGU9JHsiUGhvbmUgaW5wdXQgYXMgcGFydCBvZiBhIGNvbnRhY3QgZm9ybSJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0IC5sYWJlbD0keyJGdWxsIE5hbWUifSAucmVxdWlyZWQ9JHshMH0+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1waG9uZSAubGFiZWw9JHsiUGhvbmUgTnVtYmVyIn0gLnJlcXVpcmVkPSR7ITB9PjwvZGVlcy1pbnB1dC1waG9uZT4KICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQgLmxhYmVsPSR7IkVtYWlsIn0gLmlucHV0VHlwZT0keyJlbWFpbCJ9PjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2Rpdj4KICA8L2RlZXMtZGVtb3dyYXBwZXI+CmAsImRlbW9GdW5jIil9KTt2YXIgRjFlLFlnLGNudCxkbnQ9ZygoKT0+e3BlKCk7a3QoKTtFaSgpO0ZiYSgpO2h0KCk7RjFlPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxZZz1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sY250PSgoKT0+e2xldCBzPVtuZSgiZGVlcy1pbnB1dC1waG9uZSIpXSxlLHQ9W10sYSxyPUJ0LG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdO3ZhciB4PWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzSW5wdXRQaG9uZSIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBtPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W1koKV0scD1bTCh7dHlwZTpTdHJpbmd9KV0sYz1bTCh7dHlwZTpTdHJpbmd9KV0sRjFlKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZm9ybWF0dGVkUGhvbmUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+ImZvcm1hdHRlZFBob25lImluIGYsImhhcyIpLGdldDppKGY9PmYuZm9ybWF0dGVkUGhvbmUsImdldCIpLHNldDppKChmLHkpPT57Zi5mb3JtYXR0ZWRQaG9uZT15fSwic2V0Iil9LG1ldGFkYXRhOm19LG8sbCksRjFlKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidmFsdWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+InZhbHVlImluIGYsImhhcyIpLGdldDppKGY9PmYudmFsdWUsImdldCIpLHNldDppKChmLHkpPT57Zi52YWx1ZT15fSwic2V0Iil9LG1ldGFkYXRhOm19LGQsdSksRjFlKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicGxhY2Vob2xkZXIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+InBsYWNlaG9sZGVyImluIGYsImhhcyIpLGdldDppKGY9PmYucGxhY2Vob2xkZXIsImdldCIpLHNldDppKChmLHkpPT57Zi5wbGFjZWhvbGRlcj15fSwic2V0Iil9LG1ldGFkYXRhOm19LGIsdiksRjFlKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOm19LG51bGwsdCkseD1hPWUudmFsdWUsbSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTptfSl9c3RhdGljIGRlbW89T2JhO3N0YXRpYyBkZW1vR3JvdXBzPVsiSW5wdXQiXTsjZT1ZZyh0aGlzLG8sIiIpO2dldCBmb3JtYXR0ZWRQaG9uZSgpe3JldHVybiB0aGlzLiNlfXNldCBmb3JtYXR0ZWRQaG9uZShtKXt0aGlzLiNlPW19I3Q9KFlnKHRoaXMsbCksWWcodGhpcyxkLCIiKSk7Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuI3R9c2V0IHZhbHVlKG0pe3RoaXMuI3Q9bX0jYT0oWWcodGhpcyx1KSxZZyh0aGlzLGIsIisxICg1NTUpIDEyMy00NTY3IikpO2dldCBwbGFjZWhvbGRlcigpe3JldHVybiB0aGlzLiNhfXNldCBwbGFjZWhvbGRlcihtKXt0aGlzLiNhPW19c3RhdGljIHN0eWxlcz1bcWUsLi4uQnQuYmFzZVN0eWxlcyxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgLyogVE9ETzogTWlncmF0ZSBoYXJkY29kZWQgdmFsdWVzIHRvIC0tZGVlcy0qIENTUyB2YXJpYWJsZXMgKi8KICAgICAgLyogUGhvbmUgaW5wdXQgc3BlY2lmaWMgc3R5bGVzIGNhbiBnbyBoZXJlICovCiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iaW5wdXQtd3JhcHBlciI+CiAgICAgICAgPGRlZXMtbGFiZWwgLmxhYmVsPSR7dGhpcy5sYWJlbH0gLmluZm9UZXh0PSR7dGhpcy5pbmZvVGV4dH0+PC9kZWVzLWxhYmVsPgogICAgICAgIDxkZWVzLWlucHV0LXRleHQKICAgICAgICAgIC52YWx1ZT0ke3RoaXMuZm9ybWF0dGVkUGhvbmV9CiAgICAgICAgICAuZGlzYWJsZWQ9JHt0aGlzLmRpc2FibGVkfQogICAgICAgICAgLnJlcXVpcmVkPSR7dGhpcy5yZXF1aXJlZH0KICAgICAgICAgIC5wbGFjZWhvbGRlcj0ke3RoaXMucGxhY2Vob2xkZXJ9CiAgICAgICAgICBAaW5wdXQ9JHttPT50aGlzLmhhbmRsZVBob25lSW5wdXQobSl9CiAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICR7dGhpcy5yZW5kZXJEZXNjcmlwdGlvbigpfQogICAgICA8L2Rpdj4KICAgIGB9Zmlyc3RVcGRhdGVkKG0pe3N1cGVyLmZpcnN0VXBkYXRlZChtKSx0aGlzLnZhbHVlJiYodGhpcy5mb3JtYXR0ZWRQaG9uZT10aGlzLmZvcm1hdFBob25lTnVtYmVyKHRoaXMudmFsdWUpKTtsZXQgZj10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiZGVlcy1pbnB1dC10ZXh0Iik7ZiYmZi5jaGFuZ2VTdWJqZWN0JiZmLmNoYW5nZVN1YmplY3Quc3Vic2NyaWJlKCgpPT57dGhpcy5jaGFuZ2VTdWJqZWN0Lm5leHQodGhpcyl9KX1oYW5kbGVQaG9uZUlucHV0KG0pe2xldCBmPW0udGFyZ2V0LHk9dGhpcy5jbGVhblBob25lTnVtYmVyKGYudmFsdWUpLE09dGhpcy5mb3JtYXRQaG9uZU51bWJlcih5KTtpZihmLnZhbHVlIT09TSl7bGV0IHo9Zi5zZWxlY3Rpb25TdGFydHx8MDtmLnZhbHVlPU07bGV0IE49dGhpcy5jYWxjdWxhdGVDdXJzb3JQb3NpdGlvbih5LE0seik7Zi5zZXRTZWxlY3Rpb25SYW5nZShOLE4pfXRoaXMuZm9ybWF0dGVkUGhvbmU9TSx0aGlzLnZhbHVlPXksdGhpcy5jaGFuZ2VTdWJqZWN0Lm5leHQodGhpcyl9Y2xlYW5QaG9uZU51bWJlcihtKXtyZXR1cm4gbS5yZXBsYWNlKC9cRC9nLCIiKX1mb3JtYXRQaG9uZU51bWJlcihtKXtsZXQgZj10aGlzLmNsZWFuUGhvbmVOdW1iZXIobSk7cmV0dXJuIGYubGVuZ3RoPT09MD8iIjpmLmxlbmd0aDw9Mz9mOmYubGVuZ3RoPD02P2AoJHtmLnNsaWNlKDAsMyl9KSAke2Yuc2xpY2UoMyl9YDpmLmxlbmd0aDw9MTA/YCgke2Yuc2xpY2UoMCwzKX0pICR7Zi5zbGljZSgzLDYpfS0ke2Yuc2xpY2UoNil9YDpgKyR7Zi5zbGljZSgwLGYubGVuZ3RoLTEwKX0gKCR7Zi5zbGljZSgtMTAsLTcpfSkgJHtmLnNsaWNlKC03LC00KX0tJHtmLnNsaWNlKC00KX1gfWNhbGN1bGF0ZUN1cnNvclBvc2l0aW9uKG0sZix5KXtsZXQgTT0wO2ZvcihsZXQgej0wO3o8eSYmejxmLmxlbmd0aDt6KyspL1xkLy50ZXN0KGZbel0pfHxNKys7cmV0dXJuIE1hdGgubWluKHkrTSxmLmxlbmd0aCl9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy52YWx1ZX1zZXRWYWx1ZShtKXt0aGlzLnZhbHVlPW0sdGhpcy5mb3JtYXR0ZWRQaG9uZT10aGlzLmZvcm1hdFBob25lTnVtYmVyKG0pfWNvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSxZZyh0aGlzLHYpfXN0YXRpY3tZZyhhLHQpfX07cmV0dXJuIHg9YX0pKCl9KTt2YXIgQmJhLEhiYT1nKCgpPT57cGUoKTtJdCgpO3hvKCk7QmJhPWkoKCk9PndgCiAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e2xldCBlPXMucXVlcnlTZWxlY3RvcigiI3RvZ2dsZS1hbGwtb24iKSx0PXMucXVlcnlTZWxlY3RvcigiI3RvZ2dsZS1hbGwtb2ZmIiksYT1zLnF1ZXJ5U2VsZWN0b3JBbGwoIi5mZWF0dXJlLXRvZ2dsZXMgZGVlcy1pbnB1dC10b2dnbGUiKTtlJiZ0JiYoZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PnthLmZvckVhY2gocj0+e2xldCBuPXI7IW4uZGlzYWJsZWQmJiFuLnJlcXVpcmVkJiYobi52YWx1ZT0hMCl9KX0pLHQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57YS5mb3JFYWNoKHI9PntsZXQgbj1yOyFuLmRpc2FibGVkJiYhbi5yZXF1aXJlZCYmKG4udmFsdWU9ITEpfSl9KSl9fT4KICAgIDxzdHlsZT4KICAgICAgJHtKYAogICAgICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgIGdhcDogMjRweDsKICAgICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgICBtYXgtd2lkdGg6IDEyMDBweDsKICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgIH0KCiAgICAgICAgZGVlcy1wYW5lbCB7CiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgICAgIH0KCiAgICAgICAgZGVlcy1wYW5lbDpsYXN0LWNoaWxkIHsKICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgICAgfQoKICAgICAgICAudG9nZ2xlLWdyb3VwIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgIH0KCiAgICAgICAgLmhvcml6b250YWwtdG9nZ2xlcyB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZ2FwOiAzMnB4OwogICAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgIH0KCiAgICAgICAgLmludGVyYWN0aXZlLXNlY3Rpb24gewogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgNDAlIDk2LjElKSIsImhzbCgyMTUgMjAuMiUgMTYuOCUpIil9OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICAgICAgfQoKICAgICAgICAub3V0cHV0LXRleHQgewogICAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS4zIDI1JSAyNi43JSkiLCJoc2woMjEwIDQwJSA4MCUpIil9OwogICAgICAgICAgcGFkZGluZzogOHB4OwogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgNDAlIDk4JSkiLCJoc2woMjE1IDIwLjIlIDExLjglKSIpfTsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICAgIG1pbi1oZWlnaHQ6IDI0cHg7CiAgICAgICAgfQoKICAgICAgICAuc2V0dGluZ3Mtc2VjdGlvbiB7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTclKSIsImhzbCgwIDAlIDclKSIpfTsKICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4OS44JSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgICAgIH0KCiAgICAgICAgLmJ1dHRvbi1ncm91cCB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICAgIH0KCiAgICAgICAgLmZlYXR1cmUtdG9nZ2xlcyB7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxMCA0MCUgOTYuMSUpIiwiaHNsKDIxNSAyMC4yJSAxMS44JSkiKX07CiAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDIxNC4zIDMxLjglIDkxLjQlKSIsImhzbCgyMTUgMjAuMiUgMTYuOCUpIil9OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgICB9CgogICAgICAgIC5zZWN0aW9uLXRpdGxlIHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjMgMjUlIDguOCUpIiwiaHNsKDIxMCA0MCUgOTglKSIpfTsKICAgICAgICB9CgogICAgICAgIC5kcmFnLWhpbnQgewogICAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA0NS4xJSkiLCJoc2woMCAwJSA2My45JSkiKX07CiAgICAgICAgICBtYXJnaW4tdG9wOiA4cHg7CiAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgICAgfQogICAgICBgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJCYXNpYyBUb2dnbGUifSAuc3VidGl0bGU9JHsiU2ltcGxlIG9uL29mZiB0b2dnbGUgc3dpdGNoIHdpdGggZHJhZyBzdXBwb3J0In0+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkZWVzLWlucHV0LXRvZ2dsZQogICAgICAgICAgICAubGFiZWw9JHsiRW5hYmxlIGZlYXR1cmUifQogICAgICAgICAgICAudmFsdWU9JHshMX0KICAgICAgICAgICAgLmtleT0keyJiYXNpYyJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXRvZ2dsZT4KCiAgICAgICAgICA8ZGVlcy1pbnB1dC10b2dnbGUKICAgICAgICAgICAgLmxhYmVsPSR7IkFjdGl2ZSB0b2dnbGUifQogICAgICAgICAgICAudmFsdWU9JHshMH0KICAgICAgICAgICAgLmtleT0keyJhY3RpdmUifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10b2dnbGU+CgogICAgICAgICAgPGRlZXMtaW5wdXQtdG9nZ2xlCiAgICAgICAgICAgIC5sYWJlbD0keyJXaXRoIGRlc2NyaXB0aW9uIn0KICAgICAgICAgICAgLnZhbHVlPSR7ITF9CiAgICAgICAgICAgIC5kZXNjcmlwdGlvbj0keyJUaGlzIHRvZ2dsZSBoYXMgYWRkaXRpb25hbCBoZWxwZXIgdGV4dCBleHBsYWluaW5nIGl0cyBwdXJwb3NlIn0KICAgICAgICAgICAgLmtleT0keyJ3aXRoRGVzYyJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXRvZ2dsZT4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgICA8cCBjbGFzcz0iZHJhZy1oaW50Ij5UaXA6IFlvdSBjYW4gZHJhZyB0aGUgdG9nZ2xlIGtub2IgdG8gc3dpdGNoIHN0YXRlczwvcD4KICAgICAgPC9kZWVzLXBhbmVsPgoKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IlRvZ2dsZSBTdGF0ZXMifSAuc3VidGl0bGU9JHsiRGlmZmVyZW50IHRvZ2dsZSBzdGF0ZXMgYW5kIGNvbmZpZ3VyYXRpb25zIn0+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkZWVzLWlucHV0LXRvZ2dsZQogICAgICAgICAgICAubGFiZWw9JHsiRGVmYXVsdCAob2ZmKSJ9CiAgICAgICAgICAgIC52YWx1ZT0keyExfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10b2dnbGU+CgogICAgICAgICAgPGRlZXMtaW5wdXQtdG9nZ2xlCiAgICAgICAgICAgIC5sYWJlbD0keyJFbmFibGVkIChvbikifQogICAgICAgICAgICAudmFsdWU9JHshMH0KICAgICAgICAgID48L2RlZXMtaW5wdXQtdG9nZ2xlPgoKICAgICAgICAgIDxkZWVzLWlucHV0LXRvZ2dsZQogICAgICAgICAgICAubGFiZWw9JHsiRGlzYWJsZWQgKG9mZikifQogICAgICAgICAgICAudmFsdWU9JHshMX0KICAgICAgICAgICAgLmRpc2FibGVkPSR7ITB9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXRvZ2dsZT4KCiAgICAgICAgICA8ZGVlcy1pbnB1dC10b2dnbGUKICAgICAgICAgICAgLmxhYmVsPSR7IkRpc2FibGVkIChvbikifQogICAgICAgICAgICAudmFsdWU9JHshMH0KICAgICAgICAgICAgLmRpc2FibGVkPSR7ITB9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXRvZ2dsZT4KCiAgICAgICAgICA8ZGVlcy1pbnB1dC10b2dnbGUKICAgICAgICAgICAgLmxhYmVsPSR7IlJlcXVpcmVkIChhbHdheXMgb24pIn0KICAgICAgICAgICAgLnZhbHVlPSR7ITB9CiAgICAgICAgICAgIC5yZXF1aXJlZD0keyEwfQogICAgICAgICAgICAuZGVzY3JpcHRpb249JHsiVGhpcyB0b2dnbGUgY2Fubm90IGJlIHR1cm5lZCBvZmYifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10b2dnbGU+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJIb3Jpem9udGFsIExheW91dCJ9IC5zdWJ0aXRsZT0keyJUb2dnbGVzIGFycmFuZ2VkIGhvcml6b250YWxseSBmb3IgY29tcGFjdCBpbnRlcmZhY2VzIn0+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkaXYgY2xhc3M9Imhvcml6b250YWwtdG9nZ2xlcyI+CiAgICAgICAgICAgIDxkZWVzLWlucHV0LXRvZ2dsZQogICAgICAgICAgICAgIC5sYWJlbD0keyJXaUZpIn0KICAgICAgICAgICAgICAudmFsdWU9JHshMH0KICAgICAgICAgICAgICAubGF5b3V0TW9kZT0keyJob3Jpem9udGFsIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC10b2dnbGU+CgogICAgICAgICAgICA8ZGVlcy1pbnB1dC10b2dnbGUKICAgICAgICAgICAgICAubGFiZWw9JHsiQmx1ZXRvb3RoIn0KICAgICAgICAgICAgICAudmFsdWU9JHshMX0KICAgICAgICAgICAgICAubGF5b3V0TW9kZT0keyJob3Jpem9udGFsIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC10b2dnbGU+CgogICAgICAgICAgICA8ZGVlcy1pbnB1dC10b2dnbGUKICAgICAgICAgICAgICAubGFiZWw9JHsiR1BTIn0KICAgICAgICAgICAgICAudmFsdWU9JHshMH0KICAgICAgICAgICAgICAubGF5b3V0TW9kZT0keyJob3Jpem9udGFsIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC10b2dnbGU+CgogICAgICAgICAgICA8ZGVlcy1pbnB1dC10b2dnbGUKICAgICAgICAgICAgICAubGFiZWw9JHsiTkZDIn0KICAgICAgICAgICAgICAudmFsdWU9JHshMX0KICAgICAgICAgICAgICAubGF5b3V0TW9kZT0keyJob3Jpem9udGFsIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC10b2dnbGU+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kZWVzLXBhbmVsPgoKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IlNldHRpbmdzIEV4YW1wbGUifSAuc3VidGl0bGU9JHsiVG9nZ2xlcyBpbiBhIHR5cGljYWwgc2V0dGluZ3MgY29udGV4dCJ9PgogICAgICAgIDxkaXYgY2xhc3M9InNldHRpbmdzLXNlY3Rpb24iPgogICAgICAgICAgPGg0IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5Ob3RpZmljYXRpb24gU2V0dGluZ3M8L2g0PgoKICAgICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICAgIDxkZWVzLWlucHV0LXRvZ2dsZQogICAgICAgICAgICAgIC5sYWJlbD0keyJQdXNoIG5vdGlmaWNhdGlvbnMifQogICAgICAgICAgICAgIC52YWx1ZT0keyEwfQogICAgICAgICAgICAgIC5kZXNjcmlwdGlvbj0keyJSZWNlaXZlIHB1c2ggbm90aWZpY2F0aW9ucyBvbiB5b3VyIGRldmljZSJ9CiAgICAgICAgICAgICAgLmtleT0keyJwdXNoIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC10b2dnbGU+CgogICAgICAgICAgICA8ZGVlcy1pbnB1dC10b2dnbGUKICAgICAgICAgICAgICAubGFiZWw9JHsiRW1haWwgbm90aWZpY2F0aW9ucyJ9CiAgICAgICAgICAgICAgLnZhbHVlPSR7ITB9CiAgICAgICAgICAgICAgLmRlc2NyaXB0aW9uPSR7IkdldCBpbXBvcnRhbnQgdXBkYXRlcyB2aWEgZW1haWwifQogICAgICAgICAgICAgIC5rZXk9JHsiZW1haWwifQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LXRvZ2dsZT4KCiAgICAgICAgICAgIDxkZWVzLWlucHV0LXRvZ2dsZQogICAgICAgICAgICAgIC5sYWJlbD0keyJTb3VuZCJ9CiAgICAgICAgICAgICAgLnZhbHVlPSR7ITF9CiAgICAgICAgICAgICAgLmRlc2NyaXB0aW9uPSR7IlBsYXkgYSBzb3VuZCBmb3Igbm90aWZpY2F0aW9ucyJ9CiAgICAgICAgICAgICAgLmtleT0keyJzb3VuZCJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtdG9nZ2xlPgoKICAgICAgICAgICAgPGRlZXMtaW5wdXQtdG9nZ2xlCiAgICAgICAgICAgICAgLmxhYmVsPSR7IlZpYnJhdGlvbiJ9CiAgICAgICAgICAgICAgLnZhbHVlPSR7ITB9CiAgICAgICAgICAgICAgLmRlc2NyaXB0aW9uPSR7IlZpYnJhdGUgZm9yIG5vdGlmaWNhdGlvbnMifQogICAgICAgICAgICAgIC5rZXk9JHsidmlicmF0aW9uIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC10b2dnbGU+CiAgICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgoKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IkZlYXR1cmUgVG9nZ2xlcyJ9IC5zdWJ0aXRsZT0keyJCYXRjaCBvcGVyYXRpb25zIG9uIG11bHRpcGxlIHRvZ2dsZXMifT4KICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tZ3JvdXAiPgogICAgICAgICAgPGRlZXMtYnV0dG9uIGlkPSJ0b2dnbGUtYWxsLW9uIiB0eXBlPSJzZWNvbmRhcnkiPkVuYWJsZSBBbGw8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIGlkPSJ0b2dnbGUtYWxsLW9mZiIgdHlwZT0ic2Vjb25kYXJ5Ij5EaXNhYmxlIEFsbDwvZGVlcy1idXR0b24+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmUtdG9nZ2xlcyI+CiAgICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgICA8ZGVlcy1pbnB1dC10b2dnbGUKICAgICAgICAgICAgICAubGFiZWw9JHsiRGFyayBNb2RlIn0KICAgICAgICAgICAgICAudmFsdWU9JHshMH0KICAgICAgICAgICAgICAua2V5PSR7ImRhcmtNb2RlIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC10b2dnbGU+CgogICAgICAgICAgICA8ZGVlcy1pbnB1dC10b2dnbGUKICAgICAgICAgICAgICAubGFiZWw9JHsiQXV0by1zYXZlIn0KICAgICAgICAgICAgICAudmFsdWU9JHshMH0KICAgICAgICAgICAgICAua2V5PSR7ImF1dG9TYXZlIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC10b2dnbGU+CgogICAgICAgICAgICA8ZGVlcy1pbnB1dC10b2dnbGUKICAgICAgICAgICAgICAubGFiZWw9JHsiU3BlbGwgY2hlY2sifQogICAgICAgICAgICAgIC52YWx1ZT0keyExfQogICAgICAgICAgICAgIC5rZXk9JHsic3BlbGxDaGVjayJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtdG9nZ2xlPgoKICAgICAgICAgICAgPGRlZXMtaW5wdXQtdG9nZ2xlCiAgICAgICAgICAgICAgLmxhYmVsPSR7IkRldmVsb3BlciBtb2RlIn0KICAgICAgICAgICAgICAudmFsdWU9JHshMX0KICAgICAgICAgICAgICAua2V5PSR7ImRldk1vZGUifQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LXRvZ2dsZT4KCiAgICAgICAgICAgIDxkZWVzLWlucHV0LXRvZ2dsZQogICAgICAgICAgICAgIC5sYWJlbD0keyJCZXRhIGZlYXR1cmVzIn0KICAgICAgICAgICAgICAudmFsdWU9JHshMX0KICAgICAgICAgICAgICAua2V5PSR7ImJldGEifQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LXRvZ2dsZT4KICAgICAgICAgIDwvZGVlcy1mb3JtPgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiSW50ZXJhY3RpdmUgRXhhbXBsZSJ9IC5zdWJ0aXRsZT0keyJUb2dnbGUgdG8gc2VlIHZhbHVlIGNoYW5nZXMgaW4gcmVhbC10aW1lIn0+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkZWVzLWlucHV0LXRvZ2dsZQogICAgICAgICAgICAubGFiZWw9JHsiQWlycGxhbmUgbW9kZSJ9CiAgICAgICAgICAgIC52YWx1ZT0keyExfQogICAgICAgICAgICBAbmV3VmFsdWU9JHtzPT57bGV0IGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2FpcnBsYW5lLW91dHB1dCIpO2UmJihlLnRleHRDb250ZW50PWBBaXJwbGFuZSBtb2RlOiAke3MuZGV0YWlsPyJPTiI6Ik9GRiJ9YCl9fQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10b2dnbGU+CgogICAgICAgICAgPGRlZXMtaW5wdXQtdG9nZ2xlCiAgICAgICAgICAgIC5sYWJlbD0keyJEbyBub3QgZGlzdHVyYiJ9CiAgICAgICAgICAgIC52YWx1ZT0keyExfQogICAgICAgICAgICBAbmV3VmFsdWU9JHtzPT57bGV0IGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2RuZC1vdXRwdXQiKTtlJiYoZS50ZXh0Q29udGVudD1gRG8gbm90IGRpc3R1cmI6ICR7cy5kZXRhaWw/IkVOQUJMRUQiOiJESVNBQkxFRCJ9YCl9fQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10b2dnbGU+CiAgICAgICAgPC9kZWVzLWZvcm0+CgogICAgICAgIDxkaXYgY2xhc3M9ImludGVyYWN0aXZlLXNlY3Rpb24iPgogICAgICAgICAgPGRpdiBpZD0iYWlycGxhbmUtb3V0cHV0IiBjbGFzcz0ib3V0cHV0LXRleHQiPkFpcnBsYW5lIG1vZGU6IE9GRjwvZGl2PgogICAgICAgICAgPGRpdiBpZD0iZG5kLW91dHB1dCIgY2xhc3M9Im91dHB1dC10ZXh0IiBzdHlsZT0ibWFyZ2luLXRvcDogOHB4OyI+RG8gbm90IGRpc3R1cmI6IERJU0FCTEVEPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGl2PgogIDwvZGVlcy1kZW1vd3JhcHBlcj4KYCwiZGVtb0Z1bmMiKX0pO3ZhciBxYmEsdW50LHBudCxobnQ9ZygoKT0+e3BlKCk7a3QoKTtFaSgpO0hiYSgpO0VyKCk7aHQoKTtxYmE9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LHVudD1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0scG50PSgoKT0+e2xldCBzPVtuZSgiZGVlcy1pbnB1dC10b2dnbGUiKV0sZSx0PVtdLGEscj1CdCxuLG89W10sbD1bXTt2YXIgcD1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0lucHV0VG9nZ2xlIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpCb29sZWFuLHJlZmxlY3Q6ITB9KV0scWJhKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidmFsdWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkodT0+InZhbHVlImluIHUsImhhcyIpLGdldDppKHU9PnUudmFsdWUsImdldCIpLHNldDppKCh1LGMpPT57dS52YWx1ZT1jfSwic2V0Iil9LG1ldGFkYXRhOmR9LG8sbCkscWJhKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOmR9LG51bGwsdCkscD1hPWUudmFsdWUsZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpkfSl9c3RhdGljIGRlbW89QmJhO3N0YXRpYyBkZW1vR3JvdXBzPVsiSW5wdXQiXTsjZT11bnQodGhpcyxvLCExKTtnZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy4jZX1zZXQgdmFsdWUoZCl7dGhpcy4jZT1kfWN1cnJlbnRYPSh1bnQodGhpcyxsKSwwKTtpc0RyYWdnaW5nPSExO2hhc0RyYWdnZWQ9ITE7c3RhcnRYPTA7dHJhY2tXaWR0aD0zNjt0cmFja0hlaWdodD0yMDtrbm9iU2l6ZT0xNDtwYWRkaW5nPTI7bWF4VHJhdmVsPTE2O2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLmxhYmVsUG9zaXRpb249InJpZ2h0In1zdGF0aWMgc3R5bGVzPVtxZSwuLi5CdC5iYXNlU3R5bGVzLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICAqIHsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICA6aG9zdCB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgICBmb250LWZhbWlseTogJHtCYX07CiAgICAgIH0KCiAgICAgIC5tYWluY29udGFpbmVyIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtdHJhY2sgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICBoZWlnaHQ6IDIwcHg7CiAgICAgICAgd2lkdGg6IDM2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTAwJSkiLCJoc2woMCAwJSAzLjklKSIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDAgMCUgODkuOCUpIiwiaHNsKDAgMCUgMTQuOSUpIil9OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgbWFyZ2luLXRvcDogMXB4OwogICAgICB9CgogICAgICAubWFpbmNvbnRhaW5lcjpob3ZlciAudG9nZ2xlLXRyYWNrIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA3OS44JSkiLCJoc2woMCAwJSAyMC45JSkiKX07CiAgICAgIH0KCiAgICAgIDpob3N0KFt2YWx1ZV0pIC50b2dnbGUtdHJhY2sgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUpIiwiaHNsKDIxNy4yIDkxLjIlIDU5LjglKSIpfTsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUpIiwiaHNsKDIxNy4yIDkxLjIlIDU5LjglKSIpfTsKICAgICAgfQoKICAgICAgLnRvZ2dsZS10cmFjazpmb2N1cy12aXNpYmxlIHsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDUxLjIlIC8gMC4xKSIsImhzbCgyMTcuMiA5MS4yJSA1OS44JSAvIDAuMSkiKX07CiAgICAgIH0KCiAgICAgIC50b2dnbGUta25vYiB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMnB4OwogICAgICAgIHdpZHRoOiAxNHB4OwogICAgICAgIGhlaWdodDogMTRweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA3cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDYzLjklKSIsImhzbCgwIDAlIDQ1LjElKSIpfTsKICAgICAgICB0cmFuc2l0aW9uOiBsZWZ0IDAuMTVzIGVhc2UsIGJhY2tncm91bmQgMC4xNXMgZWFzZTsKICAgICAgICB0b3VjaC1hY3Rpb246IG5vbmU7CiAgICAgIH0KCiAgICAgIC50b2dnbGUta25vYi5kcmFnZ2luZyB7CiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cyBlYXNlOwogICAgICB9CgogICAgICA6aG9zdChbdmFsdWVdKSAudG9nZ2xlLWtub2IgewogICAgICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgICB9CgogICAgICAvKiBEaXNhYmxlZCBzdGF0ZSAqLwogICAgICAubWFpbmNvbnRhaW5lci5kaXNhYmxlZCB7CiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtdHJhY2suZGlzYWJsZWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5NS4xJSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgODkuOCUpIiwiaHNsKDAgMCUgMTQuOSUpIil9OwogICAgICB9CgogICAgICAvKiBSZXF1aXJlZCBzdGF0ZSAobG9ja2VkIG9uKSAqLwogICAgICA6aG9zdChbcmVxdWlyZWRdW3ZhbHVlXSkgLnRvZ2dsZS10cmFjayB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMjIuMiA0Ny40JSA2MS4yJSkiLCJoc2woMjE3LjIgOTEuMiUgNDkuOCUpIil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMjIuMiA0Ny40JSA2MS4yJSkiLCJoc2woMjE3LjIgOTEuMiUgNDkuOCUpIil9OwogICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAgIH0KCiAgICAgIDpob3N0KFtyZXF1aXJlZF1bdmFsdWVdKSAudG9nZ2xlLWtub2IgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4NSUpIiwiaHNsKDAgMCUgNzAlKSIpfTsKICAgICAgfQoKICAgICAgLyogTGFiZWwgKi8KICAgICAgLmxhYmVsLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMnB4OwogICAgICAgIGZsZXg6IDE7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtbGFiZWwgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTUlKSIsImhzbCgwIDAlIDkwJSkiKX07CiAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgMC4xNXMgZWFzZTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTsKICAgICAgfQoKICAgICAgLm1haW5jb250YWluZXI6aG92ZXIgLnRvZ2dsZS1sYWJlbCB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5JSkiLCJoc2woMCAwJSA5NSUpIil9OwogICAgICB9CgogICAgICAubWFpbmNvbnRhaW5lci5kaXNhYmxlZDpob3ZlciAudG9nZ2xlLWxhYmVsIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDE1JSkiLCJoc2woMCAwJSA5MCUpIil9OwogICAgICB9CgogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImlucHV0LXdyYXBwZXIiPgogICAgICAgIDxkaXYgY2xhc3M9Im1haW5jb250YWluZXIgJHt0aGlzLmRpc2FibGVkPyJkaXNhYmxlZCI6IiJ9IiBAY2xpY2s9IiR7dGhpcy5oYW5kbGVDbGlja30iPgogICAgICAgICAgPGRpdgogICAgICAgICAgICBjbGFzcz0idG9nZ2xlLXRyYWNrICR7dGhpcy5kaXNhYmxlZD8iZGlzYWJsZWQiOiIifSIKICAgICAgICAgICAgdGFiaW5kZXg9IiR7dGhpcy5kaXNhYmxlZD8iLTEiOiIwIn0iCiAgICAgICAgICAgIEBrZXlkb3duPSIke3RoaXMuaGFuZGxlS2V5ZG93bn0iCiAgICAgICAgICA+CiAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICBjbGFzcz0idG9nZ2xlLWtub2IiCiAgICAgICAgICAgICAgc3R5bGU9ImxlZnQ6ICR7dGhpcy5wYWRkaW5nK3RoaXMuY3VycmVudFh9cHg7IgogICAgICAgICAgICAgIEBwb2ludGVyZG93bj0iJHt0aGlzLm9uUG9pbnRlckRvd259IgogICAgICAgICAgICAgIEBwb2ludGVybW92ZT0iJHt0aGlzLm9uUG9pbnRlck1vdmV9IgogICAgICAgICAgICAgIEBwb2ludGVydXA9IiR7dGhpcy5vblBvaW50ZXJVcH0iCiAgICAgICAgICAgICAgQHBvaW50ZXJjYW5jZWw9IiR7dGhpcy5vblBvaW50ZXJVcH0iCiAgICAgICAgICAgID48L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwtY29udGFpbmVyIj4KICAgICAgICAgICAgJHt0aGlzLmxhYmVsP3dgPGRpdiBjbGFzcz0idG9nZ2xlLWxhYmVsIj4ke3RoaXMubGFiZWx9PC9kaXY+YDoiIn0KICAgICAgICAgICAgJHt0aGlzLnJlbmRlckRlc2NyaXB0aW9uKCl9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfWFzeW5jIGZpcnN0VXBkYXRlZChkKXthd2FpdCBzdXBlci5maXJzdFVwZGF0ZWQoZCksdGhpcy5yZXF1aXJlZCYmIXRoaXMudmFsdWUmJih0aGlzLnZhbHVlPSEwKSx0aGlzLmN1cnJlbnRYPXRoaXMudmFsdWU/dGhpcy5tYXhUcmF2ZWw6MCx0aGlzLnJlcXVlc3RVcGRhdGUoKX1hc3luYyBoYW5kbGVDbGljayhkKXtpZih0aGlzLmlzRHJhZ2dpbmd8fHRoaXMuaGFzRHJhZ2dlZCl7ZC5zdG9wUHJvcGFnYXRpb24oKSxkLnByZXZlbnREZWZhdWx0KCk7cmV0dXJufWlmKCF0aGlzLmRpc2FibGVkKXtpZih0aGlzLnJlcXVpcmVkKXt0aGlzLmN1cnJlbnRYPXRoaXMubWF4VHJhdmVsLHRoaXMucmVxdWVzdFVwZGF0ZSgpLGF3YWl0IG5ldyBQcm9taXNlKHU9PnNldFRpbWVvdXQodSwxMCkpLHRoaXMuY3VycmVudFg9dGhpcy5tYXhUcmF2ZWwtMyx0aGlzLnJlcXVlc3RVcGRhdGUoKSxhd2FpdCB1dC5zbWFydGRlbGF5LmRlbGF5Rm9yKDE1MCksdGhpcy5jdXJyZW50WD10aGlzLm1heFRyYXZlbCx0aGlzLnJlcXVlc3RVcGRhdGUoKTtyZXR1cm59ZC5zdG9wUHJvcGFnYXRpb24oKSxkLnByZXZlbnREZWZhdWx0KCksdGhpcy52YWx1ZT0hdGhpcy52YWx1ZSx0aGlzLmN1cnJlbnRYPXRoaXMudmFsdWU/dGhpcy5tYXhUcmF2ZWw6MCx0aGlzLnJlcXVlc3RVcGRhdGUoKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJuZXdWYWx1ZSIse2RldGFpbDp0aGlzLnZhbHVlLGJ1YmJsZXM6ITB9KSksdGhpcy5jaGFuZ2VTdWJqZWN0Lm5leHQodGhpcyksdXQuc21hcnRkZWxheS5kZWxheUZvcigwKS50aGVuKCgpPT57dGhpcy5oYXNEcmFnZ2VkPSExfSl9fW9uUG9pbnRlckRvd24oZCl7dGhpcy5yZXF1aXJlZHx8dGhpcy5kaXNhYmxlZHx8KHRoaXMuaXNEcmFnZ2luZz0hMCx0aGlzLnN0YXJ0WD1kLmNsaWVudFgtdGhpcy5jdXJyZW50WCxkLnRhcmdldC5zZXRQb2ludGVyQ2FwdHVyZShkLnBvaW50ZXJJZCkpfW9uUG9pbnRlck1vdmUoZCl7aWYoIXRoaXMuaXNEcmFnZ2luZylyZXR1cm47bGV0IHU9ZC5jbGllbnRYLXRoaXMuc3RhcnRYO3RoaXMuaGFzRHJhZ2dlZD0hMDtsZXQgYz10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi50b2dnbGUta25vYiIpO2MmJmMuY2xhc3NMaXN0LmFkZCgiZHJhZ2dpbmciKSx0aGlzLmN1cnJlbnRYPU1hdGgubWF4KDAsTWF0aC5taW4odSx0aGlzLm1heFRyYXZlbCkpLHRoaXMucmVxdWVzdFVwZGF0ZSgpfW9uUG9pbnRlclVwKGQpe2lmKCF0aGlzLmlzRHJhZ2dpbmd8fChkLnRhcmdldC5yZWxlYXNlUG9pbnRlckNhcHR1cmUoZC5wb2ludGVySWQpLHRoaXMuaXNEcmFnZ2luZz0hMSwhdGhpcy5oYXNEcmFnZ2VkKSlyZXR1cm47bGV0IHU9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIudG9nZ2xlLWtub2IiKTt1JiZ1LmNsYXNzTGlzdC5yZW1vdmUoImRyYWdnaW5nIik7bGV0IGM9dGhpcy5tYXhUcmF2ZWwvMjt0aGlzLnZhbHVlPXRoaXMuY3VycmVudFg+Yyx0aGlzLmN1cnJlbnRYPXRoaXMudmFsdWU/dGhpcy5tYXhUcmF2ZWw6MCx0aGlzLnJlcXVlc3RVcGRhdGUoKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJuZXdWYWx1ZSIse2RldGFpbDp0aGlzLnZhbHVlLGJ1YmJsZXM6ITB9KSksdGhpcy5jaGFuZ2VTdWJqZWN0Lm5leHQodGhpcyksdXQuc21hcnRkZWxheS5kZWxheUZvcigwKS50aGVuKCgpPT57dGhpcy5oYXNEcmFnZ2VkPSExfSl9dXBkYXRlZChkKXtzdXBlci51cGRhdGVkKGQpLGQuaGFzKCJ2YWx1ZSIpJiYhdGhpcy5pc0RyYWdnaW5nJiYhdGhpcy5oYXNEcmFnZ2VkJiYodGhpcy5jdXJyZW50WD10aGlzLnZhbHVlP3RoaXMubWF4VHJhdmVsOjAsdGhpcy5yZXF1ZXN0VXBkYXRlKCkpfWhhbmRsZUtleWRvd24oZCl7KGQua2V5PT09IiAifHxkLmtleT09PSJFbnRlciIpJiYoZC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuaGFuZGxlQ2xpY2soZCkpfWdldFZhbHVlKCl7cmV0dXJuIHRoaXMudmFsdWV9c2V0VmFsdWUoZCl7dGhpcy52YWx1ZT1kfWZvY3VzKCl7bGV0IGQ9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIudG9nZ2xlLXRyYWNrIik7ZCYmZC5mb2N1cygpfXN0YXRpY3t1bnQoYSx0KX19O3JldHVybiBwPWF9KSgpfSk7dmFyIGpiYSxWYmE9ZygoKT0+e3BlKCk7amJhPWkoKCk9PndgCiAgPGRlZXMtZGVtb3dyYXBwZXI+CiAgICA8c3R5bGU+CiAgICAgICR7SmAKICAgICAgICAuZGVtby1jb250YWluZXIgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICBnYXA6IDI0cHg7CiAgICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHg7CiAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmhvcml6b250YWwtZ3JvdXAgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGdhcDogMjRweDsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuaW5mby1ib3ggewogICAgICAgICAgbWFyZ2luLXRvcDogMTZweDsKICAgICAgICAgIHBhZGRpbmc6IDEycHg7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAjZTNmMmZkOwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgICAgY29sb3I6ICMxOTc2ZDI7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKICAgICAgICAgIC5pbmZvLWJveCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMxZTNhNWY7CiAgICAgICAgICAgIGNvbG9yOiAjOTBjYWY5OwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgYH0KICAgIDwvc3R5bGU+CiAgICAKICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IkJhc2ljIFR5cGUgTGlzdCJ9IC5zdWJ0aXRsZT0keyJBZGQgYW5kIHJlbW92ZSBpdGVtcyBmcm9tIGEgbGlzdCJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC10eXBlbGlzdAogICAgICAgICAgICAubGFiZWw9JHsiVGFncyJ9CiAgICAgICAgICAgIC5pbmZvVGV4dD0keyJBZGQgdGFncyBieSB0eXBpbmcgYW5kIHByZXNzaW5nIEVudGVyIn0KICAgICAgICAgICAgLmRlc2NyaXB0aW9uPSR7IlRhZ3MgaGVscCBjYXRlZ29yaXplIGFuZCBmaWx0ZXIgeW91ciBjb250ZW50In0KICAgICAgICAgICAgLnZhbHVlPSR7WyJqYXZhc2NyaXB0IiwidHlwZXNjcmlwdCIsIndlYi1jb21wb25lbnRzIl19CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXR5cGVsaXN0PgoKICAgICAgICAgIDxkZWVzLWlucHV0LXR5cGVsaXN0CiAgICAgICAgICAgIC5sYWJlbD0keyJUZWFtIE1lbWJlcnMifQogICAgICAgICAgICAuaW5mb1RleHQ9JHsiQWRkIGVtYWlsIGFkZHJlc3NlcyBvZiB0ZWFtIG1lbWJlcnMifQogICAgICAgICAgICAudmFsdWU9JHtbImFsaWNlQGV4YW1wbGUuY29tIiwiYm9iQGV4YW1wbGUuY29tIl19CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXR5cGVsaXN0PgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICAgIAogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiU2tpbGxzICYgS2V5d29yZHMifSAuc3VidGl0bGU9JHsiTWFuYWdlIGxpc3RzIG9mIHNraWxscyBhbmQga2V5d29yZHMifT4KICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRlZXMtaW5wdXQtdHlwZWxpc3QKICAgICAgICAgICAgLmxhYmVsPSR7IllvdXIgU2tpbGxzIn0KICAgICAgICAgICAgLmluZm9UZXh0PSR7Ikxpc3QgeW91ciBwcm9mZXNzaW9uYWwgc2tpbGxzIn0KICAgICAgICAgICAgLnZhbHVlPSR7WyJIVE1MIiwiQ1NTIiwiSmF2YVNjcmlwdCIsIk5vZGUuanMiLCJSZWFjdCJdfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10eXBlbGlzdD4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJob3Jpem9udGFsLWdyb3VwIj4KICAgICAgICAgICAgPGRlZXMtaW5wdXQtdHlwZWxpc3QKICAgICAgICAgICAgICAubGFiZWw9JHsiQ2F0ZWdvcmllcyJ9CiAgICAgICAgICAgICAgLmxheW91dE1vZGU9JHsiaG9yaXpvbnRhbCJ9CiAgICAgICAgICAgICAgLnZhbHVlPSR7WyJUZWNobm9sb2d5IiwiRGVzaWduIiwiQnVzaW5lc3MiXX0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC10eXBlbGlzdD4KCiAgICAgICAgICAgIDxkZWVzLWlucHV0LXR5cGVsaXN0CiAgICAgICAgICAgICAgLmxhYmVsPSR7IktleXdvcmRzIn0KICAgICAgICAgICAgICAubGF5b3V0TW9kZT0keyJob3Jpem9udGFsIn0KICAgICAgICAgICAgICAudmFsdWU9JHtbImlubm92YXRpb24iLCJzdGFydHVwIiwiZ3Jvd3RoIl19CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtdHlwZWxpc3Q+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IlJlcXVpcmVkICYgRGlzYWJsZWQgU3RhdGVzIn0gLnN1YnRpdGxlPSR7IkRpZmZlcmVudCBpbnB1dCBzdGF0ZXMgZm9yIHZhbGlkYXRpb24ifT4KICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRlZXMtaW5wdXQtdHlwZWxpc3QKICAgICAgICAgICAgLmxhYmVsPSR7IlByb2plY3QgRGVwZW5kZW5jaWVzIn0KICAgICAgICAgICAgLmluZm9UZXh0PSR7Ikxpc3QgYWxsIHJlcXVpcmVkIG5wbSBwYWNrYWdlcyJ9CiAgICAgICAgICAgIC5yZXF1aXJlZD0keyEwfQogICAgICAgICAgICAudmFsdWU9JHtbIkBkZXNpZ24uZXN0YXRlL2RlZXMtZWxlbWVudCIsIkBkZXNpZ24uZXN0YXRlL2RlZXMtZG9tdG9vbHMiXX0KICAgICAgICAgID48L2RlZXMtaW5wdXQtdHlwZWxpc3Q+CgogICAgICAgICAgPGRlZXMtaW5wdXQtdHlwZWxpc3QKICAgICAgICAgICAgLmxhYmVsPSR7IlN5c3RlbSBUYWdzIn0KICAgICAgICAgICAgLmluZm9UZXh0PSR7IlRoZXNlIHRhZ3MgYXJlIG1hbmFnZWQgYnkgdGhlIHN5c3RlbSJ9CiAgICAgICAgICAgIC5kaXNhYmxlZD0keyEwfQogICAgICAgICAgICAudmFsdWU9JHtbInN5c3RlbSIsInByb3RlY3RlZCIsInJlYWRvbmx5Il19CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXR5cGVsaXN0PgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICAgIAogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiQXJ0aWNsZSBQdWJsaXNoaW5nIEZvcm0ifSAuc3VidGl0bGU9JHsiQ29tcGxldGUgZm9ybSB3aXRoIHRhZyBtYW5hZ2VtZW50In0+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQgLmxhYmVsPSR7IkFydGljbGUgVGl0bGUifSAucmVxdWlyZWQ9JHshMH0+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0IAogICAgICAgICAgICAubGFiZWw9JHsiU3VtbWFyeSJ9IAogICAgICAgICAgICAuaW5wdXRUeXBlPSR7InRleHRhcmVhIn0KICAgICAgICAgICAgLmluZm9UZXh0PSR7IkJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBhcnRpY2xlIn0KICAgICAgICAgID48L2RlZXMtaW5wdXQtdGV4dD4KICAgICAgICAgIDxkZWVzLWlucHV0LXR5cGVsaXN0CiAgICAgICAgICAgIC5sYWJlbD0keyJUYWdzIn0KICAgICAgICAgICAgLmluZm9UZXh0PSR7IkFkZCByZWxldmFudCB0YWdzIGZvciBiZXR0ZXIgZGlzY292ZXJhYmlsaXR5In0KICAgICAgICAgICAgLnZhbHVlPSR7WyJ0dXRvcmlhbCIsIndlYi1kZXZlbG9wbWVudCJdfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10eXBlbGlzdD4KICAgICAgICAgIDxkZWVzLWlucHV0LXR5cGVsaXN0CiAgICAgICAgICAgIC5sYWJlbD0keyJDby1BdXRob3JzIn0KICAgICAgICAgICAgLmluZm9UZXh0PSR7IkFkZCBlbWFpbCBhZGRyZXNzZXMgb2YgY28tYXV0aG9ycyJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXR5cGVsaXN0PgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICAgIAogICAgICAgIDxkaXYgY2xhc3M9ImluZm8tYm94Ij4KICAgICAgICAgIDxzdHJvbmc+VGlwOjwvc3Ryb25nPiBUeXBlIGEgdmFsdWUgYW5kIHByZXNzIEVudGVyIHRvIGFkZCBpdCB0byB0aGUgbGlzdC4gQ2xpY2sgb24gYW55IGl0ZW0gdG8gcmVtb3ZlIGl0LgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2Rpdj4KICA8L2RlZXMtZGVtb3dyYXBwZXI+CmAsImRlbW9GdW5jIil9KTt2YXIgZm50LEVRLG1udCxnbnQ9ZygoKT0+e3BlKCk7a3QoKTtFaSgpO1ZiYSgpO2h0KCk7Zm50PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxFUT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sbW50PSgoKT0+e2xldCBzPVtuZSgiZGVlcy1pbnB1dC10eXBlbGlzdCIpXSxlLHQ9W10sYSxyPUJ0LG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdO3ZhciBjPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzSW5wdXRUeXBlbGlzdCIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBiPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6QXJyYXl9KV0scD1bWSgpXSxmbnQodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2YWx1ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh2PT4idmFsdWUiaW4gdiwiaGFzIiksZ2V0Omkodj0+di52YWx1ZSwiZ2V0Iiksc2V0OmkoKHYseCk9Pnt2LnZhbHVlPXh9LCJzZXQiKX0sbWV0YWRhdGE6Yn0sbyxsKSxmbnQodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpbnB1dFZhbHVlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHY9PiJpbnB1dFZhbHVlImluIHYsImhhcyIpLGdldDppKHY9PnYuaW5wdXRWYWx1ZSwiZ2V0Iiksc2V0OmkoKHYseCk9Pnt2LmlucHV0VmFsdWU9eH0sInNldCIpfSxtZXRhZGF0YTpifSxkLHUpLGZudChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpifSxudWxsLHQpLGM9YT1lLnZhbHVlLGImJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pfXN0YXRpYyBkZW1vPWpiYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIklucHV0Il07I2U9RVEodGhpcyxvLFtdKTtnZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy4jZX1zZXQgdmFsdWUoYil7dGhpcy4jZT1ifSN0PShFUSh0aGlzLGwpLEVRKHRoaXMsZCwiIikpO2dldCBpbnB1dFZhbHVlKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGlucHV0VmFsdWUoYil7dGhpcy4jdD1ifXN0YXRpYyBzdHlsZXM9W3FlLC4uLkJ0LmJhc2VTdHlsZXMsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICAgIDpob3N0IHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzMzMiLCIjZmZmIil9OwogICAgICB9CiAgICAgIC5tYWluYm94IHsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmYWZhZmEiLCIjMjIyMjIyIil9OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgYm9yZGVyLXRvcDogJHtoLmJkVGhlbWUoIjFweCBzb2xpZCAjQ0NDIiwiMXB4IHNvbGlkICNmZmZmZmYxMCIpfTsKICAgICAgICBib3JkZXItYm90dG9tOiAke2guYmRUaGVtZSgiMXB4IHNvbGlkICNDQ0MiLCIxcHggc29saWQgIzIyMiIpfTsKICAgICAgICBib3JkZXItcmlnaHQ6ICR7aC5iZFRoZW1lKCIxcHggc29saWQgI0NDQyIsIjFweCBzb2xpZCAjZmZmZmZmMTAiKX07CiAgICAgICAgYm9yZGVyLWxlZnQ6ICR7aC5iZFRoZW1lKCIxcHggc29saWQgI0NDQyIsIjFweCBzb2xpZCAjZmZmZmZmMTAiKX07CiAgICAgICAgYm94LXNoYWRvdzogJHtoLmJkVGhlbWUoIjBweCAxcHggNHB4IHJnYmEoMCwwLDAsMC4zKSIsIm5vbmUiKX07CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CiAgICAgIAogICAgICAubWFpbmJveDpob3ZlciB7CiAgICAgICAgZmlsdGVyOiAke2guYmRUaGVtZSgiYnJpZ2h0bmVzcygwLjk4KSIsImJyaWdodG5lc3MoMS4wNSkiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5tYWluYm94OmZvY3VzLXdpdGhpbiB7CiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICR7aC5iZFRoZW1lKCIjMDA2OWYyIiwiIzAwODRmZiIpfTsKICAgICAgICBvdXRsaW5lLW9mZnNldDogLTJweDsKICAgICAgfQoKICAgICAgLnRhZ3MgewogICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICB9CgogICAgICAubm90YWdzIHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjOTk5IiwiIzY2NiIpfTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgICB9CgogICAgICBpbnB1dCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y1ZjVmNSIsIiMxODE4MTgiKX07CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgY29sb3I6IGluaGVyaXQ7CiAgICAgICAgcGFkZGluZzogMHB4IDE2cHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBsaW5lLWhlaWdodDogMzJweDsKICAgICAgICBoZWlnaHQ6IDBweDsKICAgICAgICB0cmFuc2l0aW9uOiBoZWlnaHQgMC4yczsKICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlMGUwZTAiLCIjMzMzIil9OwogICAgICB9CgogICAgICBpbnB1dDpmb2N1cyB7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmFmYWZhIiwiIzFhMWExYSIpfTsKICAgICAgfQogICAgICAKICAgICAgaW5wdXQ6OnBsYWNlaG9sZGVyIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM5OTkiLCIjNjY2Iil9OwogICAgICB9CgogICAgICAudGFnIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNlOGY1ZTkiLCIjMmQzYTJkIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzJlN2QzMiIsIiM4MWM3ODQiKX07CiAgICAgICAgcGFkZGluZzogNHB4IDEwcHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIG1hcmdpbjogM3B4OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjYzhlNmM5IiwiIzFiNWUyMCIpfTsKICAgICAgfQogICAgICAKICAgICAgLnRhZzpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNjOGU2YzkiLCIjM2Q0ZjNkIil9OwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsKICAgICAgfQoKICAgICAgLnRhZyAucmVtb3ZlIHsKICAgICAgICBtYXJnaW4tbGVmdDogOHB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBvcGFjaXR5OiAwLjc7CiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzOwogICAgICB9CgogICAgICAudGFnIC5yZW1vdmU6aG92ZXIgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjYzYyODI4IiwiI2VmNTM1MCIpfTsKICAgICAgfQogICAgICAKICAgICAgLyogRGlzYWJsZWQgc3RhdGUgKi8KICAgICAgOmhvc3QoW2Rpc2FibGVkXSkgLm1haW5ib3ggewogICAgICAgIG9wYWNpdHk6IDAuNjsKICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICB9CiAgICAgIAogICAgICA6aG9zdChbZGlzYWJsZWRdKSAudGFncyB7CiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgICAgfQogICAgICAKICAgICAgOmhvc3QoW2Rpc2FibGVkXSkgLnRhZyB7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KICAgICAgCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIGlucHV0IHsKICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjBmMGYwIiwiIzFhMWExYSIpfTsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImlucHV0LXdyYXBwZXIiPgogICAgICAgIDxkZWVzLWxhYmVsIC5sYWJlbD0ke3RoaXMubGFiZWx9IC5pbmZvVGV4dD0ke3RoaXMuaW5mb1RleHR9PjwvZGVlcy1sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJtYWluYm94Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9InRhZ3MiIEBjbGljaz0keygpPT57dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoImlucHV0IikuZm9jdXMoKX19PgogICAgICAgICAgICAke3RoaXMudmFsdWUubGVuZ3RoPT09MD93YDxkaXYgY2xhc3M9Im5vdGFncyI+Tm8gdGFncyB5ZXQ8L2Rpdj5gOnRoaXMudmFsdWUubWFwKGI9PndgCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRhZyI+CiAgICAgICAgICAgICAgICAgICAgICAke2J9CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icmVtb3ZlIiBAY2xpY2s9JHt2PT57di5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLnJlbW92ZVRhZyhiKX19PsOXPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgYCl9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxpbnB1dAogICAgICAgICAgICB0eXBlPSJ0ZXh0IgogICAgICAgICAgICBwbGFjZWhvbGRlcj0iVHlwZSwgcHJlc3MgRW50ZXIgdG8gYWRkIGl0Li4uIgogICAgICAgICAgICAudmFsdWU9JHt0aGlzLmlucHV0VmFsdWV9CiAgICAgICAgICAgIEBpbnB1dD0ke2I9Pnt0aGlzLmlucHV0VmFsdWU9Yi50YXJnZXQudmFsdWV9fQogICAgICAgICAgICBAa2V5ZG93bj0ke2I9PntiLmtleT09PSJFbnRlciImJnRoaXMuaW5wdXRWYWx1ZS50cmltKCkmJihiLnByZXZlbnREZWZhdWx0KCksdGhpcy5hZGRUYWcodGhpcy5pbnB1dFZhbHVlLnRyaW0oKSkpfX0KICAgICAgICAgICAgLmRpc2FibGVkPSR7dGhpcy5kaXNhYmxlZH0KICAgICAgICAgIC8+CiAgICAgICAgPC9kaXY+CiAgICAgICAgJHt0aGlzLnJlbmRlckRlc2NyaXB0aW9uKCl9CiAgICAgIDwvZGl2PgogICAgYH1hZGRUYWcoYil7dGhpcy52YWx1ZS5pbmNsdWRlcyhiKXx8KHRoaXMudmFsdWU9Wy4uLnRoaXMudmFsdWUsYl0sdGhpcy5pbnB1dFZhbHVlPSIiLHRoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMpKX1yZW1vdmVUYWcoYil7dGhpcy52YWx1ZT10aGlzLnZhbHVlLmZpbHRlcih2PT52IT09YiksdGhpcy5jaGFuZ2VTdWJqZWN0Lm5leHQodGhpcyl9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy52YWx1ZX1zZXRWYWx1ZShiKXt0aGlzLnZhbHVlPWJ9Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLEVRKHRoaXMsdSl9c3RhdGlje0VRKGEsdCl9fTtyZXR1cm4gYz1hfSkoKX0pO3ZhciBVYmEsV2JhLEdiYT1nKCgpPT57cGUoKTtJdCgpO3hvKCk7V2JhPWkoKCk9PncoVWJhfHwoVWJhPWJjKFtgCiAgPGRlZXMtZGVtb3dyYXBwZXI+CiAgICA8c3R5bGU+CiAgICAgIGAsYAogICAgPC9zdHlsZT4KICAgIAogICAgPGRpdiBjbGFzcz0iZGVtby1jb250YWluZXIiPgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9YCwiIC5zdWJ0aXRsZT0iLGA+CiAgICAgICAgPGRlZXMtaW5wdXQtdGFncwogICAgICAgICAgLmxhYmVsPWAsYAogICAgICAgICAgLnBsYWNlaG9sZGVyPWAsYAogICAgICAgICAgLnZhbHVlPWAsYAogICAgICAgICAgLmRlc2NyaXB0aW9uPWAsYAogICAgICAgID48L2RlZXMtaW5wdXQtdGFncz4KICAgICAgPC9kZWVzLXBhbmVsPgoKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPWAsIiAuc3VidGl0bGU9IixgPgogICAgICAgIDxkZWVzLWlucHV0LXRhZ3MKICAgICAgICAgIC5sYWJlbD1gLGAKICAgICAgICAgIC5wbGFjZWhvbGRlcj1gLGAKICAgICAgICAgIC5zdWdnZXN0aW9ucz1gLGAKICAgICAgICAgIC52YWx1ZT1gLGAKICAgICAgICAgIC5kZXNjcmlwdGlvbj1gLGAKICAgICAgICA+PC9kZWVzLWlucHV0LXRhZ3M+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT1gLCIgLnN1YnRpdGxlPSIsYD4KICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZC1sYXlvdXQiPgogICAgICAgICAgICA8ZGVlcy1pbnB1dC10YWdzCiAgICAgICAgICAgICAgLmxhYmVsPWAsYAogICAgICAgICAgICAgIC5wbGFjZWhvbGRlcj1gLGAKICAgICAgICAgICAgICAubWF4VGFncz1gLGAKICAgICAgICAgICAgICAudmFsdWU9YCxgCiAgICAgICAgICAgICAgLmRlc2NyaXB0aW9uPWAsYAogICAgICAgICAgICA+PC9kZWVzLWlucHV0LXRhZ3M+CgogICAgICAgICAgICA8ZGVlcy1pbnB1dC10YWdzCiAgICAgICAgICAgICAgLmxhYmVsPWAsYAogICAgICAgICAgICAgIC5wbGFjZWhvbGRlcj1gLGAKICAgICAgICAgICAgICAubWF4VGFncz1gLGAKICAgICAgICAgICAgICAuc3VnZ2VzdGlvbnM9YCxgCiAgICAgICAgICAgICAgLnZhbHVlPWAsYAogICAgICAgICAgICAgIC5kZXNjcmlwdGlvbj1gLGAKICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC10YWdzPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT1gLCIgLnN1YnRpdGxlPSIsYD4KICAgICAgICA8ZGVlcy1pbnB1dC10YWdzCiAgICAgICAgICAubGFiZWw9YCxgCiAgICAgICAgICAucGxhY2Vob2xkZXI9YCxgCiAgICAgICAgICAucmVxdWlyZWQ9YCxgCiAgICAgICAgICAuZGVzY3JpcHRpb249YCxgCiAgICAgICAgPjwvZGVlcy1pbnB1dC10YWdzPgogICAgICA8L2RlZXMtcGFuZWw+CgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9YCwiIC5zdWJ0aXRsZT0iLGA+CiAgICAgICAgPGRlZXMtaW5wdXQtdGFncwogICAgICAgICAgLmxhYmVsPWAsYAogICAgICAgICAgLnZhbHVlPWAsYAogICAgICAgICAgLmRpc2FibGVkPWAsYAogICAgICAgICAgLmRlc2NyaXB0aW9uPWAsYAogICAgICAgID48L2RlZXMtaW5wdXQtdGFncz4KICAgICAgPC9kZWVzLXBhbmVsPgoKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPWAsIiAuc3VidGl0bGU9IixgPgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0CiAgICAgICAgICAgIC5sYWJlbD1gLGAKICAgICAgICAgICAgLnBsYWNlaG9sZGVyPWAsYAogICAgICAgICAgICAucmVxdWlyZWQ9YCxgCiAgICAgICAgICAgIC5rZXk9YCxgCiAgICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgICAKICAgICAgICAgIDxkaXYgY2xhc3M9ImdyaWQtbGF5b3V0Ij4KICAgICAgICAgICAgPGRlZXMtaW5wdXQtdGFncwogICAgICAgICAgICAgIC5sYWJlbD1gLGAKICAgICAgICAgICAgICAucGxhY2Vob2xkZXI9YCxgCiAgICAgICAgICAgICAgLnJlcXVpcmVkPWAsYAogICAgICAgICAgICAgIC5rZXk9YCxgCiAgICAgICAgICAgICAgLnN1Z2dlc3Rpb25zPWAsYAogICAgICAgICAgICA+PC9kZWVzLWlucHV0LXRhZ3M+CiAgICAgICAgICAgIAogICAgICAgICAgICA8ZGVlcy1pbnB1dC10YWdzCiAgICAgICAgICAgICAgLmxhYmVsPWAsYAogICAgICAgICAgICAgIC5wbGFjZWhvbGRlcj1gLGAKICAgICAgICAgICAgICAua2V5PWAsYAogICAgICAgICAgICAgIC5tYXhUYWdzPWAsYAogICAgICAgICAgICAgIC5zdWdnZXN0aW9ucz1gLGAKICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC10YWdzPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQKICAgICAgICAgICAgLmxhYmVsPWAsYAogICAgICAgICAgICAuaW5wdXRUeXBlPWAsYAogICAgICAgICAgICAucGxhY2Vob2xkZXI9YCxgCiAgICAgICAgICAgIC5rZXk9YCxgCiAgICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWZvcm0tc3VibWl0IC50ZXh0PWAsYD48L2RlZXMtZm9ybS1zdWJtaXQ+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT1gLCIgLnN1YnRpdGxlPSIsYD4KICAgICAgICA8ZGVlcy1pbnB1dC10YWdzCiAgICAgICAgICBpZD0iaW50ZXJhY3RpdmUtdGFncyIKICAgICAgICAgIC5sYWJlbD1gLGAKICAgICAgICAgIC5wbGFjZWhvbGRlcj1gLGAKICAgICAgICAgIC5zdWdnZXN0aW9ucz1gLGAKICAgICAgICAgIEBjaGFuZ2U9YCxgCiAgICAgICAgPjwvZGVlcy1pbnB1dC10YWdzPgogICAgICAgIAogICAgICAgIDxkaXYgY2xhc3M9InRhZy1wcmV2aWV3IiBpZD0idGFncy1wcmV2aWV3Ij4KICAgICAgICAgIDxlbSBzdHlsZT0iY29sb3I6ICM5OTk7Ij5ObyB0YWdzIGFkZGVkIHlldC4uLjwvZW0+CiAgICAgICAgPC9kaXY+CiAgICAgICAgCiAgICAgICAgPGRpdiBjbGFzcz0ib3V0cHV0LXByZXZpZXciIGlkPSJ0YWdzLWpzb24iPgogICAgICAgICAgPGVtPkpTT04gb3V0cHV0IHdpbGwgYXBwZWFyIGhlcmUuLi48L2VtPgogICAgICAgIDwvZGl2PgogICAgICAgIAogICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAvLyBVcGRhdGUgSlNPTiBwcmV2aWV3CiAgICAgICAgICBjb25zdCB0YWdzSW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjaW50ZXJhY3RpdmUtdGFncycpOwogICAgICAgICAgdGFnc0lucHV0Py5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoZSkgPT4gewogICAgICAgICAgICBjb25zdCBqc29uUHJldmlldyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN0YWdzLWpzb24nKTsKICAgICAgICAgICAgaWYgKGpzb25QcmV2aWV3KSB7CiAgICAgICAgICAgICAganNvblByZXZpZXcudGV4dENvbnRlbnQgPSBKU09OLnN0cmluZ2lmeShlLmRldGFpbC52YWx1ZSwgbnVsbCwgMik7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIDxcL3NjcmlwdD4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kaXY+CiAgPC9kZWVzLWRlbW93cmFwcGVyPgpgXSkpLEpgCiAgICAgICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICAgIG1heC13aWR0aDogMTIwMHB4OwogICAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGRlZXMtcGFuZWwgewogICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZGVlcy1wYW5lbDpsYXN0LWNoaWxkIHsKICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5ncmlkLWxheW91dCB7CiAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOwogICAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsKICAgICAgICAgIC5ncmlkLWxheW91dCB7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAub3V0cHV0LXByZXZpZXcgewogICAgICAgICAgbWFyZ2luLXRvcDogMTZweDsKICAgICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAjZjNmNGY2OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgICAgY29sb3I6ICMzNzQxNTE7CiAgICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7CiAgICAgICAgICBtYXgtaGVpZ2h0OiAyMDBweDsKICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgfQogICAgICAgIAogICAgICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKICAgICAgICAgIC5vdXRwdXQtcHJldmlldyB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMyYzJjMmM7CiAgICAgICAgICAgIGNvbG9yOiAjZTRlNGU3OwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAudGFnLXByZXZpZXcgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICAgIGdhcDogOHB4OwogICAgICAgICAgcGFkZGluZzogMTJweDsKICAgICAgICAgIGJhY2tncm91bmQ6ICNmOWZhZmI7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgICBtaW4taGVpZ2h0OiA0MHB4OwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewogICAgICAgICAgLnRhZy1wcmV2aWV3IHsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzFmMjkzNzsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnRhZy1wcmV2aWV3LWl0ZW0gewogICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgICAgcGFkZGluZzogNHB4IDEycHg7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAjZTBlN2ZmOwogICAgICAgICAgY29sb3I6ICM0MzM4Y2E7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7CiAgICAgICAgICAudGFnLXByZXZpZXctaXRlbSB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMzMTJlODE7CiAgICAgICAgICAgIGNvbG9yOiAjYzdkMmZlOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgYCwiMS4gQmFzaWMgVGFncyBJbnB1dCIsIlNpbXBsZSB0YWcgaW5wdXQgd2l0aCBjb21tb24gcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIiwiUHJvZ3JhbW1pbmcgTGFuZ3VhZ2VzIiwiQWRkIGEgbGFuZ3VhZ2UuLi4iLFsiSmF2YVNjcmlwdCIsIlR5cGVTY3JpcHQiLCJQeXRob24iLCJHbyJdLCJQcmVzcyBFbnRlciBvciBjb21tYSB0byBhZGQgdGFncyIsIjIuIFRhZ3Mgd2l0aCBTdWdnZXN0aW9ucyIsIkF1dG8tY29tcGxldGUgc3VnZ2VzdGlvbnMgZm9yIGZhc3RlciBpbnB1dCIsIlRlY2ggU3RhY2siLCJUeXBlIHRvIHNlZSBzdWdnZXN0aW9ucy4uLiIsWyJSZWFjdCIsIlZ1ZSIsIkFuZ3VsYXIiLCJTdmVsdGUiLCJMaXQiLCJOZXh0LmpzIiwiTnV4dCIsIlN2ZWx0ZUtpdCIsIk5vZGUuanMiLCJEZW5vIiwiQnVuIiwiRXhwcmVzcyIsIkZhc3RpZnkiLCJOZXN0LmpzIiwiS29hIiwiTW9uZ29EQiIsIlBvc3RncmVTUUwiLCJSZWRpcyIsIk15U1FMIiwiU1FMaXRlIiwiQ2Fzc2FuZHJhIiwiRG9ja2VyIiwiS3ViZXJuZXRlcyIsIkFXUyIsIkF6dXJlIiwiR0NQIiwiVmVyY2VsIiwiTmV0bGlmeSJdLFsiUmVhY3QiLCJOb2RlLmpzIiwiUG9zdGdyZVNRTCIsIkRvY2tlciJdLCJTdGFydCB0eXBpbmcgdG8gc2VlIHN1Z2dlc3Rpb25zIGZyb20gcG9wdWxhciB0ZWNobm9sb2dpZXMiLCIzLiBMaW1pdGVkIFRhZ3MiLCJSZXN0cmljdCB0aGUgbnVtYmVyIG9mIHRhZ3MgdXNlcnMgY2FuIGFkZCIsIlRvcCAzIFNraWxscyIsIkFkZCB1cCB0byAzIHNraWxscy4uLiIsMyxbIkRlc2lnbiIsIkRldmVsb3BtZW50Il0sIk1heGltdW0gMyB0YWdzIGFsbG93ZWQiLCJDYXRlZ29yaWVzIChNYXggNSkiLCJTZWxlY3QgY2F0ZWdvcmllcy4uLiIsNSxbIkJsb2ciLCJUdXRvcmlhbCIsIk5ld3MiLCJSZXZpZXciLCJHdWlkZSIsIkNhc2UgU3R1ZHkiLCJJbnRlcnZpZXciXSxbIlR1dG9yaWFsIiwiR3VpZGUiXSwiQ2hvb3NlIHVwIHRvIDUgY2F0ZWdvcmllcyIsIjQuIFJlcXVpcmVkICYgVmFsaWRhdGlvbiIsIlRhZ3MgaW5wdXQgd2l0aCB2YWxpZGF0aW9uIHJlcXVpcmVtZW50cyIsIlByb2plY3QgVGFncyIsIkFkZCBhdCBsZWFzdCBvbmUgdGFnLi4uIiwhMCwiVGhpcyBmaWVsZCBpcyByZXF1aXJlZCAtIGFkZCBhdCBsZWFzdCBvbmUgdGFnIiwiNS4gRGlzYWJsZWQgU3RhdGUiLCJSZWFkLW9ubHkgdGFncyBkaXNwbGF5IiwiU3lzdGVtIFRhZ3MiLFsiU3lzdGVtIiwiUHJvdGVjdGVkIiwiUmVhZC1Pbmx5IiwiQXJjaGl2ZSJdLCEwLCJUaGVzZSB0YWdzIGNhbm5vdCBiZSBtb2RpZmllZCIsIjYuIEZvcm0gSW50ZWdyYXRpb24iLCJUYWdzIGlucHV0IHdvcmtpbmcgd2l0aGluIGEgZm9ybSBjb250ZXh0IiwiUHJvamVjdCBOYW1lIiwiTXkgQXdlc29tZSBQcm9qZWN0IiwhMCwibmFtZSIsIlRlY2hub2xvZ2llcyBVc2VkIiwiQWRkIHRlY2hub2xvZ2llcy4uLiIsITAsInRlY2hub2xvZ2llcyIsWyJUeXBlU2NyaXB0IiwiSmF2YVNjcmlwdCIsIlB5dGhvbiIsIkdvIiwiUnVzdCIsIlJlYWN0IiwiVnVlIiwiQW5ndWxhciIsIlN2ZWx0ZSIsIk5vZGUuanMiLCJEZW5vIiwiRXhwcmVzcyIsIkZhc3RBUEkiXSwiUHJvamVjdCBUYWdzIiwiQWRkIGRlc2NyaXB0aXZlIHRhZ3MuLi4iLCJ0YWdzIiwxMCxbImZyb250ZW5kIiwiYmFja2VuZCIsImZ1bGxzdGFjayIsIm1vYmlsZSIsImRlc2t0b3AiLCJ3ZWIiLCJhcGkiLCJkYXRhYmFzZSIsImRldm9wcyIsInVpL3V4Iiwib3BlbnNvdXJjZSIsInNhYXMiLCJlbnRlcnByaXNlIiwic3RhcnR1cCJdLCJEZXNjcmlwdGlvbiIsInRleHRhcmVhIiwiRGVzY3JpYmUgeW91ciBwcm9qZWN0Li4uIiwiZGVzY3JpcHRpb24iLCJDcmVhdGUgUHJvamVjdCIsIjcuIEludGVyYWN0aXZlIERlbW8iLCJBZGQgdGFncyBhbmQgc2VlIHRoZW0gY29sbGVjdGVkIGluIHJlYWwtdGltZSIsIllvdXIgSW50ZXJlc3RzIiwiVHlwZSB5b3VyIGludGVyZXN0cy4uLiIsWyJNdXNpYyIsIk1vdmllcyIsIkJvb2tzIiwiVHJhdmVsIiwiUGhvdG9ncmFwaHkiLCJDb29raW5nIiwiR2FtaW5nIiwiU3BvcnRzIiwiQXJ0IiwiVGVjaG5vbG9neSIsIkZhc2hpb24iLCJGaXRuZXNzIiwiTmF0dXJlIiwiU2NpZW5jZSIsIkhpc3RvcnkiXSxzPT57bGV0IGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3RhZ3MtcHJldmlldyIpLHQ9cy5kZXRhaWwudmFsdWU7ZSYmKHQubGVuZ3RoPT09MD9lLmlubmVySFRNTD0nPGVtIHN0eWxlPSJjb2xvcjogIzk5OTsiPk5vIHRhZ3MgYWRkZWQgeWV0Li4uPC9lbT4nOmUuaW5uZXJIVE1MPXQubWFwKGE9PmA8c3BhbiBjbGFzcz0idGFnLXByZXZpZXctaXRlbSI+JHthfTwvc3Bhbj5gKS5qb2luKCIiKSl9KSwiZGVtb0Z1bmMiKX0pO3ZhciBOdSxGbyxibnQsdm50PWcoKCk9PntwZSgpO0VpKCk7R2EoKTtHYmEoKTtodCgpO051PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxGbz1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sYm50PSgoKT0+e2xldCBzPVtuZSgiZGVlcy1pbnB1dC10YWdzIildLGUsdD1bXSxhLHI9QnQsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W10sSCxrPVtdLFM9W107dmFyIEk9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNJbnB1dFRhZ3MiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgUD10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOkFycmF5fSldLHA9W0woe3R5cGU6U3RyaW5nfSldLGM9W0woe3R5cGU6TnVtYmVyfSldLHg9W0woe3R5cGU6QXJyYXl9KV0seT1bWSgpXSxOPVtZKCldLE89W1koKV0sSD1bTCh7dHlwZTpTdHJpbmd9KV0sTnUodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2YWx1ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShSPT4idmFsdWUiaW4gUiwiaGFzIiksZ2V0OmkoUj0+Ui52YWx1ZSwiZ2V0Iiksc2V0OmkoKFIsSyk9PntSLnZhbHVlPUt9LCJzZXQiKX0sbWV0YWRhdGE6UH0sbyxsKSxOdSh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InBsYWNlaG9sZGVyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFI9PiJwbGFjZWhvbGRlciJpbiBSLCJoYXMiKSxnZXQ6aShSPT5SLnBsYWNlaG9sZGVyLCJnZXQiKSxzZXQ6aSgoUixLKT0+e1IucGxhY2Vob2xkZXI9S30sInNldCIpfSxtZXRhZGF0YTpQfSxkLHUpLE51KHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWF4VGFncyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShSPT4ibWF4VGFncyJpbiBSLCJoYXMiKSxnZXQ6aShSPT5SLm1heFRhZ3MsImdldCIpLHNldDppKChSLEspPT57Ui5tYXhUYWdzPUt9LCJzZXQiKX0sbWV0YWRhdGE6UH0sYix2KSxOdSh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InN1Z2dlc3Rpb25zIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFI9PiJzdWdnZXN0aW9ucyJpbiBSLCJoYXMiKSxnZXQ6aShSPT5SLnN1Z2dlc3Rpb25zLCJnZXQiKSxzZXQ6aSgoUixLKT0+e1Iuc3VnZ2VzdGlvbnM9S30sInNldCIpfSxtZXRhZGF0YTpQfSxtLGYpLE51KHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaW5wdXRWYWx1ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShSPT4iaW5wdXRWYWx1ZSJpbiBSLCJoYXMiKSxnZXQ6aShSPT5SLmlucHV0VmFsdWUsImdldCIpLHNldDppKChSLEspPT57Ui5pbnB1dFZhbHVlPUt9LCJzZXQiKX0sbWV0YWRhdGE6UH0sTSx6KSxOdSh0aGlzLG51bGwsTix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dTdWdnZXN0aW9ucyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShSPT4ic2hvd1N1Z2dlc3Rpb25zImluIFIsImhhcyIpLGdldDppKFI9PlIuc2hvd1N1Z2dlc3Rpb25zLCJnZXQiKSxzZXQ6aSgoUixLKT0+e1Iuc2hvd1N1Z2dlc3Rpb25zPUt9LCJzZXQiKX0sbWV0YWRhdGE6UH0sQyxfKSxOdSh0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImhpZ2hsaWdodGVkU3VnZ2VzdGlvbkluZGV4IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFI9PiJoaWdobGlnaHRlZFN1Z2dlc3Rpb25JbmRleCJpbiBSLCJoYXMiKSxnZXQ6aShSPT5SLmhpZ2hsaWdodGVkU3VnZ2VzdGlvbkluZGV4LCJnZXQiKSxzZXQ6aSgoUixLKT0+e1IuaGlnaGxpZ2h0ZWRTdWdnZXN0aW9uSW5kZXg9S30sInNldCIpfSxtZXRhZGF0YTpQfSwkLEUpLE51KHRoaXMsbnVsbCxILHtraW5kOiJhY2Nlc3NvciIsbmFtZToidmFsaWRhdGlvblRleHQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUj0+InZhbGlkYXRpb25UZXh0ImluIFIsImhhcyIpLGdldDppKFI9PlIudmFsaWRhdGlvblRleHQsImdldCIpLHNldDppKChSLEspPT57Ui52YWxpZGF0aW9uVGV4dD1LfSwic2V0Iil9LG1ldGFkYXRhOlB9LGssUyksTnUobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6UH0sbnVsbCx0KSxJPWE9ZS52YWx1ZSxQJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOlB9KX1zdGF0aWMgZGVtbz1XYmE7c3RhdGljIGRlbW9Hcm91cHM9WyJJbnB1dCJdOyNlPUZvKHRoaXMsbyxbXSk7Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHZhbHVlKFApe3RoaXMuI2U9UH0jdD0oRm8odGhpcyxsKSxGbyh0aGlzLGQsIkFkZCB0YWdzLi4uIikpO2dldCBwbGFjZWhvbGRlcigpe3JldHVybiB0aGlzLiN0fXNldCBwbGFjZWhvbGRlcihQKXt0aGlzLiN0PVB9I2E9KEZvKHRoaXMsdSksRm8odGhpcyxiLDApKTtnZXQgbWF4VGFncygpe3JldHVybiB0aGlzLiNhfXNldCBtYXhUYWdzKFApe3RoaXMuI2E9UH0jcz0oRm8odGhpcyx2KSxGbyh0aGlzLG0sW10pKTtnZXQgc3VnZ2VzdGlvbnMoKXtyZXR1cm4gdGhpcy4jc31zZXQgc3VnZ2VzdGlvbnMoUCl7dGhpcy4jcz1QfSNpPShGbyh0aGlzLGYpLEZvKHRoaXMsTSwiIikpO2dldCBpbnB1dFZhbHVlKCl7cmV0dXJuIHRoaXMuI2l9c2V0IGlucHV0VmFsdWUoUCl7dGhpcy4jaT1QfSNyPShGbyh0aGlzLHopLEZvKHRoaXMsQywhMSkpO2dldCBzaG93U3VnZ2VzdGlvbnMoKXtyZXR1cm4gdGhpcy4jcn1zZXQgc2hvd1N1Z2dlc3Rpb25zKFApe3RoaXMuI3I9UH0jbz0oRm8odGhpcyxfKSxGbyh0aGlzLCQsLTEpKTtnZXQgaGlnaGxpZ2h0ZWRTdWdnZXN0aW9uSW5kZXgoKXtyZXR1cm4gdGhpcy4jb31zZXQgaGlnaGxpZ2h0ZWRTdWdnZXN0aW9uSW5kZXgoUCl7dGhpcy4jbz1QfSNuPShGbyh0aGlzLEUpLEZvKHRoaXMsaywiIikpO2dldCB2YWxpZGF0aW9uVGV4dCgpe3JldHVybiB0aGlzLiNufXNldCB2YWxpZGF0aW9uVGV4dChQKXt0aGlzLiNuPVB9c3RhdGljIHN0eWxlcz1bcWUsLi4uQnQuYmFzZVN0eWxlcyxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgLyogVE9ETzogTWlncmF0ZSBoYXJkY29kZWQgdmFsdWVzIHRvIC0tZGVlcy0qIENTUyB2YXJpYWJsZXMgKi8KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsICdSb2JvdG8nLCBzYW5zLXNlcmlmOwogICAgICB9CgogICAgICAuaW5wdXQtd3JhcHBlciB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIC50YWdzLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDZweDsKICAgICAgICBwYWRkaW5nOiA2cHggMTBweDsKICAgICAgICBtaW4taGVpZ2h0OiA0MHB4OwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4OS44JSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIGN1cnNvcjogdGV4dDsKICAgICAgfQoKICAgICAgLnRhZ3MtY29udGFpbmVyOmhvdmVyOm5vdCguZGlzYWJsZWQpIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA3OS44JSkiLCJoc2woMCAwJSAyMC45JSkiKX07CiAgICAgIH0KCiAgICAgIC50YWdzLWNvbnRhaW5lcjpmb2N1cy13aXRoaW4gewogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMjIuMiA0Ny40JSA1MS4yJSkiLCJoc2woMjE3LjIgOTEuMiUgNTkuOCUpIil9OwogICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDUxLjIlIC8gMC4xKSIsImhzbCgyMTcuMiA5MS4yJSA1OS44JSAvIDAuMSkiKX07CiAgICAgIH0KCiAgICAgIC50YWdzLWNvbnRhaW5lci5kaXNhYmxlZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk1LjElKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4OS44JSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgIH0KCiAgICAgIC50YWcgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA0cHg7CiAgICAgICAgcGFkZGluZzogMnB4IDhweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxNSAyMC4yJSA2NS4xJSAvIDAuMikiLCJoc2woMjE1IDIwLjIlIDM1LjElIC8gMC4yKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuMyAyNSUgMjYuNyUpIiwiaHNsKDIxNy45IDEwLjYlIDc0LjklKSIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDIxNSAyMC4yJSA2NS4xJSAvIDAuMykiLCJoc2woMjE1IDIwLjIlIDM1LjElIC8gMC4zKSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE4cHg7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgYW5pbWF0aW9uOiB0YWdBcHBlYXIgMC4xNXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTsKICAgICAgfQoKICAgICAgQGtleWZyYW1lcyB0YWdBcHBlYXIgewogICAgICAgIGZyb20gewogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk1KTsKICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgfQogICAgICAgIHRvIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLnRhZy1yZW1vdmUgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICB3aWR0aDogMTRweDsKICAgICAgICBoZWlnaHQ6IDE0cHg7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDJweDsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS4zIDI1JSA0Ni43JSkiLCJoc2woMjE3LjkgMTAuNiUgNTQuOSUpIil9OwogICAgICB9CgogICAgICAudGFnLXJlbW92ZTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDAlIC8gMC4wOCkiLCJoc2woMCAwJSAxMDAlIC8gMC4wOCkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjMgMjUlIDI2LjclKSIsImhzbCgyMTcuOSAxMC42JSA3NC45JSkiKX07CiAgICAgIH0KCiAgICAgIC50YWctcmVtb3ZlIGRlZXMtaWNvbiB7CiAgICAgICAgd2lkdGg6IDEwcHg7CiAgICAgICAgaGVpZ2h0OiAxMHB4OwogICAgICB9CgogICAgICAudGFnLWlucHV0IHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG1pbi13aWR0aDogMTIwcHg7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOSUpIiwiaHNsKDAgMCUgOTUlKSIpfTsKICAgICAgICBwYWRkaW5nOiAycHggNHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICB9CgogICAgICAudGFnLWlucHV0OjpwbGFjZWhvbGRlciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA2My45JSkiLCJoc2woMCAwJSA0NS4xJSkiKX07CiAgICAgIH0KCiAgICAgIC50YWctaW5wdXQ6ZGlzYWJsZWQgewogICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAgIH0KCiAgICAgIC8qIFN1Z2dlc3Rpb25zIGRyb3Bkb3duICovCiAgICAgIC5zdWdnZXN0aW9ucy1jb250YWluZXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgLnN1Z2dlc3Rpb25zLWRyb3Bkb3duIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAxMDAlOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgbWFyZ2luLXRvcDogNHB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxMDAlKSIsImhzbCgwIDAlIDMuOSUpIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4OS44JSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDZweCAtMXB4IGhzbCgwIDAlIDAlIC8gMC4xKSwgMCAycHggNHB4IC0ycHggaHNsKDAgMCUgMCUgLyAwLjEpOwogICAgICAgIG1heC1oZWlnaHQ6IDIwMHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgei1pbmRleDogMTAwMDsKICAgICAgfQoKICAgICAgLnN1Z2dlc3Rpb24gewogICAgICAgIHBhZGRpbmc6IDZweCAxMHB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxNSUpIiwiaHNsKDAgMCUgOTAlKSIpfTsKICAgICAgfQoKICAgICAgLnN1Z2dlc3Rpb246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5NS4xJSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgIH0KCiAgICAgIC5zdWdnZXN0aW9uLmhpZ2hsaWdodGVkIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxMCA0MCUgOTYuMSUpIiwiaHNsKDIxNSAyMC4yJSAxNi44JSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5JSkiLCJoc2woMCAwJSA5NSUpIil9OwogICAgICB9CgogICAgICAvKiBWYWxpZGF0aW9uIHN0eWxlcyAqLwogICAgICAudmFsaWRhdGlvbi1tZXNzYWdlIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDcyLjIlIDUwLjYlKSIsImhzbCgwIDYyLjglIDMwLjYlKSIpfTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgbWFyZ2luLXRvcDogNnB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICAgIH0KCiAgICAgIC8qIFNjcm9sbGJhciBzdHlsaW5nICovCiAgICAgIC5zdWdnZXN0aW9ucy1kcm9wZG93bjo6LXdlYmtpdC1zY3JvbGxiYXIgewogICAgICAgIHdpZHRoOiA4cHg7CiAgICAgIH0KCiAgICAgIC5zdWdnZXN0aW9ucy1kcm9wZG93bjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sgewogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICB9CgogICAgICAuc3VnZ2VzdGlvbnMtZHJvcGRvd246Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgODkuOCUpIiwiaHNsKDAgMCUgMTQuOSUpIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgfQoKICAgICAgLnN1Z2dlc3Rpb25zLWRyb3Bkb3duOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDc5LjglKSIsImhzbCgwIDAlIDIwLjklKSIpfTsKICAgICAgfQogICAgYF07cmVuZGVyKCl7bGV0IFA9dGhpcy5zdWdnZXN0aW9ucy5maWx0ZXIoUj0+IXRoaXMudmFsdWUuaW5jbHVkZXMoUikmJlIudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLmlucHV0VmFsdWUudG9Mb3dlckNhc2UoKSkpO3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJpbnB1dC13cmFwcGVyIj4KICAgICAgICAke3RoaXMubGFiZWw/d2A8ZGVlcy1sYWJlbCAubGFiZWw9JHt0aGlzLmxhYmVsfSAucmVxdWlyZWQ9JHt0aGlzLnJlcXVpcmVkfT48L2RlZXMtbGFiZWw+YDoiIn0KICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJzdWdnZXN0aW9ucy1jb250YWluZXIiPgogICAgICAgICAgPGRpdgogICAgICAgICAgICBjbGFzcz0idGFncy1jb250YWluZXIgJHt0aGlzLmRpc2FibGVkPyJkaXNhYmxlZCI6IiJ9IgogICAgICAgICAgICBAY2xpY2s9JHt0aGlzLmhhbmRsZUNvbnRhaW5lckNsaWNrfQogICAgICAgICAgPgogICAgICAgICAgICAke3RoaXMudmFsdWUubWFwKFI9PndgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFnIj4KICAgICAgICAgICAgICAgIDxzcGFuPiR7Un08L3NwYW4+CiAgICAgICAgICAgICAgICAke3RoaXMuZGlzYWJsZWQ/IiI6d2AKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFnLXJlbW92ZSIgQGNsaWNrPSR7Sz0+dGhpcy5yZW1vdmVUYWcoSyxSKX0+CiAgICAgICAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6eCJ9PjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIGB9CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGApfQogICAgICAgICAgICAKICAgICAgICAgICAgJHshdGhpcy5kaXNhYmxlZCYmKCF0aGlzLm1heFRhZ3N8fHRoaXMudmFsdWUubGVuZ3RoPHRoaXMubWF4VGFncyk/d2AKICAgICAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgICAgIHR5cGU9InRleHQiCiAgICAgICAgICAgICAgICBjbGFzcz0idGFnLWlucHV0IgogICAgICAgICAgICAgICAgLnBsYWNlaG9sZGVyPSR7dGhpcy5wbGFjZWhvbGRlcn0KICAgICAgICAgICAgICAgIC52YWx1ZT0ke3RoaXMuaW5wdXRWYWx1ZX0KICAgICAgICAgICAgICAgIEBpbnB1dD0ke3RoaXMuaGFuZGxlSW5wdXR9CiAgICAgICAgICAgICAgICBAa2V5ZG93bj0ke3RoaXMuaGFuZGxlS2V5RG93bn0KICAgICAgICAgICAgICAgIEBmb2N1cz0ke3RoaXMuaGFuZGxlRm9jdXN9CiAgICAgICAgICAgICAgICBAYmx1cj0ke3RoaXMuaGFuZGxlQmx1cn0KICAgICAgICAgICAgICAgID9kaXNhYmxlZD0ke3RoaXMuZGlzYWJsZWR9CiAgICAgICAgICAgICAgLz4KICAgICAgICAgICAgYDoiIn0KICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICR7dGhpcy5zaG93U3VnZ2VzdGlvbnMmJlAubGVuZ3RoPjA/d2AKICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3VnZ2VzdGlvbnMtZHJvcGRvd24iPgogICAgICAgICAgICAgICR7UC5tYXAoKFIsSyk9PndgCiAgICAgICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgIGNsYXNzPSJzdWdnZXN0aW9uICR7Sz09PXRoaXMuaGlnaGxpZ2h0ZWRTdWdnZXN0aW9uSW5kZXg/ImhpZ2hsaWdodGVkIjoiIn0iCiAgICAgICAgICAgICAgICAgIEBtb3VzZWRvd249JHtWPT57Vi5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuYWRkVGFnKFIpfX0KICAgICAgICAgICAgICAgICAgQG1vdXNlZW50ZXI9JHsoKT0+dGhpcy5oaWdobGlnaHRlZFN1Z2dlc3Rpb25JbmRleD1LfQogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAke1J9CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICBgKX0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgOiIifQogICAgICAgIDwvZGl2PgoKICAgICAgICAke3RoaXMudmFsaWRhdGlvblRleHQ/d2AKICAgICAgICAgIDxkaXYgY2xhc3M9InZhbGlkYXRpb24tbWVzc2FnZSI+JHt0aGlzLnZhbGlkYXRpb25UZXh0fTwvZGl2PgogICAgICAgIGA6IiJ9CiAgICAgICAgCiAgICAgICAgJHt0aGlzLnJlbmRlckRlc2NyaXB0aW9uKCl9CiAgICAgIDwvZGl2PgogICAgYH1oYW5kbGVDb250YWluZXJDbGljayhQKXtpZih0aGlzLmRpc2FibGVkKXJldHVybjtsZXQgUj10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi50YWctaW5wdXQiKTtSJiZQLnRhcmdldCE9PVImJlIuZm9jdXMoKX1oYW5kbGVJbnB1dChQKXtsZXQgUj1QLnRhcmdldDtpZih0aGlzLmlucHV0VmFsdWU9Ui52YWx1ZSx0aGlzLmlucHV0VmFsdWUuaW5jbHVkZXMoIiwiKXx8dGhpcy5pbnB1dFZhbHVlLmluY2x1ZGVzKCI7Iikpe2xldCBLPXRoaXMuaW5wdXRWYWx1ZS5yZXBsYWNlKC9bLDtdL2csIiIpLnRyaW0oKTtLJiZ0aGlzLmFkZFRhZyhLKX19aGFuZGxlS2V5RG93bihQKXtsZXQgUj1QLnRhcmdldDtpZihQLmtleT09PSJFbnRlciIpaWYoUC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuaGlnaGxpZ2h0ZWRTdWdnZXN0aW9uSW5kZXg+PTAmJnRoaXMuc2hvd1N1Z2dlc3Rpb25zKXtsZXQgSz10aGlzLnN1Z2dlc3Rpb25zLmZpbHRlcihWPT4hdGhpcy52YWx1ZS5pbmNsdWRlcyhWKSYmVi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuaW5wdXRWYWx1ZS50b0xvd2VyQ2FzZSgpKSk7S1t0aGlzLmhpZ2hsaWdodGVkU3VnZ2VzdGlvbkluZGV4XSYmdGhpcy5hZGRUYWcoS1t0aGlzLmhpZ2hsaWdodGVkU3VnZ2VzdGlvbkluZGV4XSl9ZWxzZSB0aGlzLmlucHV0VmFsdWUudHJpbSgpJiZ0aGlzLmFkZFRhZyh0aGlzLmlucHV0VmFsdWUudHJpbSgpKTtlbHNlIGlmKFAua2V5PT09IkJhY2tzcGFjZSImJiF0aGlzLmlucHV0VmFsdWUmJnRoaXMudmFsdWUubGVuZ3RoPjApdGhpcy5yZW1vdmVUYWcoUCx0aGlzLnZhbHVlW3RoaXMudmFsdWUubGVuZ3RoLTFdKTtlbHNlIGlmKFAua2V5PT09IkFycm93RG93biImJnRoaXMuc2hvd1N1Z2dlc3Rpb25zKXtQLnByZXZlbnREZWZhdWx0KCk7bGV0IEs9dGhpcy5zdWdnZXN0aW9ucy5maWx0ZXIoVj0+IXRoaXMudmFsdWUuaW5jbHVkZXMoVikmJlYudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLmlucHV0VmFsdWUudG9Mb3dlckNhc2UoKSkpLmxlbmd0aDt0aGlzLmhpZ2hsaWdodGVkU3VnZ2VzdGlvbkluZGV4PU1hdGgubWluKHRoaXMuaGlnaGxpZ2h0ZWRTdWdnZXN0aW9uSW5kZXgrMSxLLTEpfWVsc2UgUC5rZXk9PT0iQXJyb3dVcCImJnRoaXMuc2hvd1N1Z2dlc3Rpb25zPyhQLnByZXZlbnREZWZhdWx0KCksdGhpcy5oaWdobGlnaHRlZFN1Z2dlc3Rpb25JbmRleD1NYXRoLm1heCh0aGlzLmhpZ2hsaWdodGVkU3VnZ2VzdGlvbkluZGV4LTEsMCkpOlAua2V5PT09IkVzY2FwZSImJih0aGlzLnNob3dTdWdnZXN0aW9ucz0hMSx0aGlzLmhpZ2hsaWdodGVkU3VnZ2VzdGlvbkluZGV4PS0xKX1oYW5kbGVGb2N1cygpe3RoaXMuc3VnZ2VzdGlvbnMubGVuZ3RoPjAmJih0aGlzLnNob3dTdWdnZXN0aW9ucz0hMCl9aGFuZGxlQmx1cigpe3NldFRpbWVvdXQoKCk9Pnt0aGlzLnNob3dTdWdnZXN0aW9ucz0hMSx0aGlzLmhpZ2hsaWdodGVkU3VnZ2VzdGlvbkluZGV4PS0xfSwyMDApfWFkZFRhZyhQKXtpZighUHx8dGhpcy52YWx1ZS5pbmNsdWRlcyhQKXx8dGhpcy5tYXhUYWdzJiZ0aGlzLnZhbHVlLmxlbmd0aD49dGhpcy5tYXhUYWdzKXJldHVybjt0aGlzLnZhbHVlPVsuLi50aGlzLnZhbHVlLFBdLHRoaXMuaW5wdXRWYWx1ZT0iIix0aGlzLnNob3dTdWdnZXN0aW9ucz0hMSx0aGlzLmhpZ2hsaWdodGVkU3VnZ2VzdGlvbkluZGV4PS0xO2xldCBSPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLnRhZy1pbnB1dCIpO1ImJihSLnZhbHVlPSIiKSx0aGlzLmVtaXRDaGFuZ2UoKX1yZW1vdmVUYWcoUCxSKXtQLnN0b3BQcm9wYWdhdGlvbigpLHRoaXMudmFsdWU9dGhpcy52YWx1ZS5maWx0ZXIoSz0+SyE9PVIpLHRoaXMuZW1pdENoYW5nZSgpfWVtaXRDaGFuZ2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjaGFuZ2UiLHtkZXRhaWw6e3ZhbHVlOnRoaXMudmFsdWV9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSksdGhpcy5jaGFuZ2VTdWJqZWN0Lm5leHQodGhpcyl9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy52YWx1ZX1zZXRWYWx1ZShQKXt0aGlzLnZhbHVlPVB8fFtdfWFzeW5jIHZhbGlkYXRlKCl7cmV0dXJuIHRoaXMucmVxdWlyZWQmJighdGhpcy52YWx1ZXx8dGhpcy52YWx1ZS5sZW5ndGg9PT0wKT8odGhpcy52YWxpZGF0aW9uVGV4dD0iQXQgbGVhc3Qgb25lIHRhZyBpcyByZXF1aXJlZCIsITEpOih0aGlzLnZhbGlkYXRpb25UZXh0PSIiLCEwKX1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksRm8odGhpcyxTKX1zdGF0aWN7Rm8oYSx0KX19O3JldHVybiBJPWF9KSgpfSk7dmFyIEtiYSxZYmE9ZygoKT0+e3BlKCk7SXQoKTt4bygpO3l4KCk7bzQoKTtXZygpO0tiYT1pKCgpPT53YAogIDxkZWVzLWRlbW93cmFwcGVyPgogICAgPHN0eWxlPgogICAgICAke0pgCiAgICAgICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICAgIG1heC13aWR0aDogMTIwMHB4OwogICAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGRlZXMtcGFuZWwgewogICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZGVlcy1wYW5lbDpsYXN0LWNoaWxkIHsKICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5ncmlkLWxheW91dCB7CiAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOwogICAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsKICAgICAgICAgIC5ncmlkLWxheW91dCB7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAub3V0cHV0LXByZXZpZXcgewogICAgICAgICAgbWFyZ2luLXRvcDogMTZweDsKICAgICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAjZjNmNGY2OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgICAgY29sb3I6ICMzNzQxNTE7CiAgICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7CiAgICAgICAgICBtYXgtaGVpZ2h0OiAyMDBweDsKICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgfQogICAgICAgIAogICAgICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKICAgICAgICAgIC5vdXRwdXQtcHJldmlldyB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMyYzJjMmM7CiAgICAgICAgICAgIGNvbG9yOiAjZTRlNGU3OwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAuZmVhdHVyZS1ub3RlIHsKICAgICAgICAgIG1hcmdpbi10b3A6IDEycHg7CiAgICAgICAgICBwYWRkaW5nOiAxMnB4OwogICAgICAgICAgYmFja2dyb3VuZDogI2VmZjZmZjsKICAgICAgICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgIzNiODJmNjsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICAgIGNvbG9yOiAjMWU0MGFmOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7CiAgICAgICAgICAuZmVhdHVyZS1ub3RlIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzFlM2E1ZjsKICAgICAgICAgICAgY29sb3I6ICM5M2M1ZmQ7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBgfQogICAgPC9zdHlsZT4KICAgIAogICAgPGRpdiBjbGFzcz0iZGVtby1jb250YWluZXIiPgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiMS4gQmFzaWMgTGlzdCBJbnB1dCJ9IC5zdWJ0aXRsZT0keyJTaW1wbGUgbGlzdCBtYW5hZ2VtZW50IHdpdGggYWRkLCBlZGl0LCBhbmQgZGVsZXRlIn0+CiAgICAgICAgPGRlZXMtaW5wdXQtbGlzdAogICAgICAgICAgLmxhYmVsPSR7IlNob3BwaW5nIExpc3QifQogICAgICAgICAgLnBsYWNlaG9sZGVyPSR7IkFkZCBpdGVtIHRvIHlvdXIgbGlzdC4uLiJ9CiAgICAgICAgICAudmFsdWU9JHtbIk1pbGsiLCJCcmVhZCIsIkVnZ3MiLCJDaGVlc2UiXX0KICAgICAgICAgIC5kZXNjcmlwdGlvbj0keyJEb3VibGUtY2xpY2sgdG8gZWRpdCBpdGVtcywgb3IgdXNlIHRoZSBlZGl0IGJ1dHRvbiJ9CiAgICAgICAgPjwvZGVlcy1pbnB1dC1saXN0PgogICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmUtbm90ZSI+CiAgICAgICAgICDwn5KhIERvdWJsZS1jbGljayBhbnkgaXRlbSB0byBxdWlja2x5IGVkaXQgaXQgaW5saW5lCiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyIyLiBTb3J0YWJsZSBMaXN0In0gLnN1YnRpdGxlPSR7IkRyYWcgYW5kIGRyb3AgdG8gcmVvcmRlciBpdGVtcyJ9PgogICAgICAgIDxkZWVzLWlucHV0LWxpc3QKICAgICAgICAgIC5sYWJlbD0keyJUYXNrIFByaW9yaXR5In0KICAgICAgICAgIC5wbGFjZWhvbGRlcj0keyJBZGQgYSB0YXNrLi4uIn0KICAgICAgICAgIC5zb3J0YWJsZT0keyEwfQogICAgICAgICAgLnZhbHVlPSR7WyJSZXZpZXcgcHVsbCByZXF1ZXN0cyIsIkZpeCBjcml0aWNhbCBidWciLCJVcGRhdGUgZG9jdW1lbnRhdGlvbiIsIkRlcGxveSB0byBwcm9kdWN0aW9uIiwiVGVhbSBzdGFuZHVwIG1lZXRpbmciXX0KICAgICAgICAgIC5kZXNjcmlwdGlvbj0keyJEcmFnIGl0ZW1zIHVzaW5nIHRoZSBoYW5kbGUgdG8gcmVvcmRlciB0aGVtIn0KICAgICAgICA+PC9kZWVzLWlucHV0LWxpc3Q+CiAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZS1ub3RlIj4KICAgICAgICAgIPCflIQgRHJhZyB0aGUgZ3JpcCBoYW5kbGUgdG8gcmVvcmRlciB0YXNrcyBieSBwcmlvcml0eQogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiMy4gVmFsaWRhdGlvbiAmIENvbnN0cmFpbnRzIn0gLnN1YnRpdGxlPSR7Ikxpc3RzIHdpdGggbWluaW11bS9tYXhpbXVtIGl0ZW1zIGFuZCBkdXBsaWNhdGUgcHJldmVudGlvbiJ9PgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJncmlkLWxheW91dCI+CiAgICAgICAgICAgIDxkZWVzLWlucHV0LWxpc3QKICAgICAgICAgICAgICAubGFiZWw9JHsiVGVhbSBNZW1iZXJzIChNaW4gMiwgTWF4IDUpIn0KICAgICAgICAgICAgICAucGxhY2Vob2xkZXI9JHsiQWRkIHRlYW0gbWVtYmVyLi4uIn0KICAgICAgICAgICAgICAubWluSXRlbXM9JHsyfQogICAgICAgICAgICAgIC5tYXhJdGVtcz0kezV9CiAgICAgICAgICAgICAgLnZhbHVlPSR7WyJBbGljZSIsIkJvYiJdfQogICAgICAgICAgICAgIC5yZXF1aXJlZD0keyEwfQogICAgICAgICAgICAgIC5kZXNjcmlwdGlvbj0keyJBZGQgMi01IHRlYW0gbWVtYmVycyJ9CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtbGlzdD4KCiAgICAgICAgICAgIDxkZWVzLWlucHV0LWxpc3QKICAgICAgICAgICAgICAubGFiZWw9JHsiVW5pcXVlIFRhZ3MgKE5vIER1cGxpY2F0ZXMpIn0KICAgICAgICAgICAgICAucGxhY2Vob2xkZXI9JHsiQWRkIHVuaXF1ZSB0YWcuLi4ifQogICAgICAgICAgICAgIC5hbGxvd0R1cGxpY2F0ZXM9JHshMX0KICAgICAgICAgICAgICAudmFsdWU9JHtbImZyb250ZW5kIiwiYmFja2VuZCIsImRhdGFiYXNlIl19CiAgICAgICAgICAgICAgLmRlc2NyaXB0aW9uPSR7IkR1cGxpY2F0ZSBpdGVtcyBhcmUgbm90IGFsbG93ZWQifQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LWxpc3Q+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kZWVzLXBhbmVsPgoKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjQuIERlbGV0ZSBDb25maXJtYXRpb24ifSAuc3VidGl0bGU9JHsiUmVxdWlyZSBjb25maXJtYXRpb24gYmVmb3JlIGRlbGV0aW5nIGl0ZW1zIn0+CiAgICAgICAgPGRlZXMtaW5wdXQtbGlzdAogICAgICAgICAgLmxhYmVsPSR7IkltcG9ydGFudCBEb2N1bWVudHMifQogICAgICAgICAgLnBsYWNlaG9sZGVyPSR7IkFkZCBkb2N1bWVudCBuYW1lLi4uIn0KICAgICAgICAgIC5jb25maXJtRGVsZXRlPSR7ITB9CiAgICAgICAgICAudmFsdWU9JHtbIkNvbnRyYWN0XzIwMjQucGRmIiwiRmluYW5jaWFsX1JlcG9ydF9RMy54bHN4IiwiUHJvamVjdF9Qcm9wb3NhbC5kb2N4IiwiTWVldGluZ19Ob3Rlcy50eHQiXX0KICAgICAgICAgIC5kZXNjcmlwdGlvbj0keyJEZWxldGlvbiByZXF1aXJlcyBjb25maXJtYXRpb24gZm9yIHNhZmV0eSJ9CiAgICAgICAgPjwvZGVlcy1pbnB1dC1saXN0PgogICAgICA8L2RlZXMtcGFuZWw+CgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiNS4gRGlzYWJsZWQgU3RhdGUifSAuc3VidGl0bGU9JHsiUmVhZC1vbmx5IGxpc3QgZGlzcGxheSJ9PgogICAgICAgIDxkZWVzLWlucHV0LWxpc3QKICAgICAgICAgIC5sYWJlbD0keyJTeXN0ZW0gRGVmYXVsdHMifQogICAgICAgICAgLnZhbHVlPSR7WyJEZWZhdWx0IFNldHRpbmcgMSIsIkRlZmF1bHQgU2V0dGluZyAyIiwiRGVmYXVsdCBTZXR0aW5nIDMiXX0KICAgICAgICAgIC5kaXNhYmxlZD0keyEwfQogICAgICAgICAgLmRlc2NyaXB0aW9uPSR7IlRoZXNlIGl0ZW1zIGNhbm5vdCBiZSBtb2RpZmllZCJ9CiAgICAgICAgPjwvZGVlcy1pbnB1dC1saXN0PgogICAgICA8L2RlZXMtcGFuZWw+CgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiNi4gRm9ybSBJbnRlZ3JhdGlvbiJ9IC5zdWJ0aXRsZT0keyJMaXN0IGlucHV0IHdvcmtpbmcgd2l0aGluIGEgZm9ybSBjb250ZXh0In0+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQKICAgICAgICAgICAgLmxhYmVsPSR7IlJlY2lwZSBOYW1lIn0KICAgICAgICAgICAgLnBsYWNlaG9sZGVyPSR7Ik15IEFtYXppbmcgUmVjaXBlIn0KICAgICAgICAgICAgLnJlcXVpcmVkPSR7ITB9CiAgICAgICAgICAgIC5rZXk9JHsibmFtZSJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgICAKICAgICAgICAgIDxkaXYgY2xhc3M9ImdyaWQtbGF5b3V0Ij4KICAgICAgICAgICAgPGRlZXMtaW5wdXQtbGlzdAogICAgICAgICAgICAgIC5sYWJlbD0keyJJbmdyZWRpZW50cyJ9CiAgICAgICAgICAgICAgLnBsYWNlaG9sZGVyPSR7IkFkZCBpbmdyZWRpZW50Li4uIn0KICAgICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0KICAgICAgICAgICAgICAubWluSXRlbXM9JHszfQogICAgICAgICAgICAgIC5rZXk9JHsiaW5ncmVkaWVudHMifQogICAgICAgICAgICAgIC5zb3J0YWJsZT0keyEwfQogICAgICAgICAgICAgIC52YWx1ZT0ke1siMiBjdXBzIGZsb3VyIiwiMSBjdXAgc3VnYXIiLCIzIGVnZ3MiXX0KICAgICAgICAgICAgICAuZGVzY3JpcHRpb249JHsiQWRkIGF0IGxlYXN0IDMgaW5ncmVkaWVudHMifQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LWxpc3Q+CiAgICAgICAgICAgIAogICAgICAgICAgICA8ZGVlcy1pbnB1dC1saXN0CiAgICAgICAgICAgICAgLmxhYmVsPSR7Ikluc3RydWN0aW9ucyJ9CiAgICAgICAgICAgICAgLnBsYWNlaG9sZGVyPSR7IkFkZCBpbnN0cnVjdGlvbiBzdGVwLi4uIn0KICAgICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0KICAgICAgICAgICAgICAubWluSXRlbXM9JHsyfQogICAgICAgICAgICAgIC5rZXk9JHsiaW5zdHJ1Y3Rpb25zIn0KICAgICAgICAgICAgICAuc29ydGFibGU9JHshMH0KICAgICAgICAgICAgICAudmFsdWU9JHtbIlByZWhlYXQgb3ZlbiB0byAzNTBceEIwRiIsIk1peCBkcnkgaW5ncmVkaWVudHMiXX0KICAgICAgICAgICAgICAuZGVzY3JpcHRpb249JHsiQWRkIGNvb2tpbmcgaW5zdHJ1Y3Rpb25zIGluIG9yZGVyIn0KICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1saXN0PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQKICAgICAgICAgICAgLmxhYmVsPSR7Ik5vdGVzIn0KICAgICAgICAgICAgLmlucHV0VHlwZT0keyJ0ZXh0YXJlYSJ9CiAgICAgICAgICAgIC5wbGFjZWhvbGRlcj0keyJBbnkgc3BlY2lhbCBub3RlcyBvciB0aXBzLi4uIn0KICAgICAgICAgICAgLmtleT0keyJub3RlcyJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWZvcm0tc3VibWl0IC50ZXh0PSR7IlNhdmUgUmVjaXBlIn0+PC9kZWVzLWZvcm0tc3VibWl0PgogICAgICAgIDwvZGVlcy1mb3JtPgogICAgICA8L2RlZXMtcGFuZWw+CgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiNy4gSW50ZXJhY3RpdmUgRGVtbyJ9IC5zdWJ0aXRsZT0keyJCdWlsZCB5b3VyIG93biBmZWF0dXJlIGxpc3QgYW5kIHNlZSB0aGUgZGF0YSJ9PgogICAgICAgIDxkZWVzLWlucHV0LWxpc3QKICAgICAgICAgIGlkPSJpbnRlcmFjdGl2ZS1saXN0IgogICAgICAgICAgLmxhYmVsPSR7IlByb2R1Y3QgRmVhdHVyZXMifQogICAgICAgICAgLnBsYWNlaG9sZGVyPSR7IkFkZCBhIGZlYXR1cmUuLi4ifQogICAgICAgICAgLnNvcnRhYmxlPSR7ITB9CiAgICAgICAgICAuY29uZmlybURlbGV0ZT0keyExfQogICAgICAgICAgLmFsbG93RHVwbGljYXRlcz0keyExfQogICAgICAgICAgLm1heEl0ZW1zPSR7MTB9CiAgICAgICAgICBAY2hhbmdlPSR7cz0+e2xldCBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNsaXN0LWpzb24iKTtpZihlKXtsZXQgdD17aXRlbXM6cy5kZXRhaWwudmFsdWUsY291bnQ6cy5kZXRhaWwudmFsdWUubGVuZ3RoLHRpbWVzdGFtcDpuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCl9O2UudGV4dENvbnRlbnQ9SlNPTi5zdHJpbmdpZnkodCxudWxsLDIpfX19CiAgICAgICAgPjwvZGVlcy1pbnB1dC1saXN0PgogICAgICAgIAogICAgICAgIDxkaXYgY2xhc3M9Im91dHB1dC1wcmV2aWV3IiBpZD0ibGlzdC1qc29uIj4KICAgICAgICAgIHsKICAgICAgICAgICAgIml0ZW1zIjogW10sCiAgICAgICAgICAgICJjb3VudCI6IDAsCiAgICAgICAgICAgICJ0aW1lc3RhbXAiOiAiJHtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCl9IgogICAgICAgICAgfQogICAgICAgIDwvZGl2PgogICAgICAgIAogICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmUtbm90ZSI+CiAgICAgICAgICDinKggQWRkLCBlZGl0LCByZW1vdmUsIGFuZCByZW9yZGVyIGl0ZW1zIHRvIHNlZSB0aGUgSlNPTiBvdXRwdXQgdXBkYXRlIGluIHJlYWwtdGltZQogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiOC4gQWR2YW5jZWQgQ29uZmlndXJhdGlvbiJ9IC5zdWJ0aXRsZT0keyJDb21iaW5lIGFsbCBmZWF0dXJlcyBmb3IgY29tcGxleCB1c2UgY2FzZXMifT4KICAgICAgICA8ZGVlcy1pbnB1dC1saXN0CiAgICAgICAgICAubGFiZWw9JHsiUHJvamVjdCBNaWxlc3RvbmVzIn0KICAgICAgICAgIC5wbGFjZWhvbGRlcj0keyJBZGQgbWlsZXN0b25lLi4uIn0KICAgICAgICAgIC52YWx1ZT0ke1siUHJvamVjdCBLaWNrb2ZmIC0gV2VlayAxIiwiUmVxdWlyZW1lbnRzIEdhdGhlcmluZyAtIFdlZWsgMi0zIiwiRGVzaWduIFBoYXNlIC0gV2VlayA0LTYiLCJEZXZlbG9wbWVudCBTcHJpbnQgMSAtIFdlZWsgNy05IiwiVGVzdGluZyAmIFFBIC0gV2VlayAxMC0xMSIsIkRlcGxveW1lbnQgLSBXZWVrIDEyIl19CiAgICAgICAgICAuc29ydGFibGU9JHshMH0KICAgICAgICAgIC5jb25maXJtRGVsZXRlPSR7ITB9CiAgICAgICAgICAuYWxsb3dEdXBsaWNhdGVzPSR7ITF9CiAgICAgICAgICAubWluSXRlbXM9JHszfQogICAgICAgICAgLm1heEl0ZW1zPSR7MTJ9CiAgICAgICAgICAucmVxdWlyZWQ9JHshMH0KICAgICAgICAgIC5kZXNjcmlwdGlvbj0keyJNYW5hZ2UgcHJvamVjdCBtaWxlc3RvbmVzICgzLTEyIGl0ZW1zLCBzb3J0YWJsZSwgbm8gZHVwbGljYXRlcykifQogICAgICAgID48L2RlZXMtaW5wdXQtbGlzdD4KICAgICAgPC9kZWVzLXBhbmVsPgoKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjkuIENhbmRpZGF0ZXMgd2l0aCBUYWIgQ29tcGxldGlvbiJ9IC5zdWJ0aXRsZT0keyJUZXJtaW5hbC1zdHlsZSBhdXRvY29tcGxldGUgXHUyMDE0IFRhYiBhY2NlcHRzLCBTaGlmdCtUYWIgY3ljbGVzIn0+CiAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZC1sYXlvdXQiPgogICAgICAgICAgPGRlZXMtaW5wdXQtbGlzdAogICAgICAgICAgICBpZD0iY2FuZGlkYXRlLWxpc3QiCiAgICAgICAgICAgIC5sYWJlbD0keyJBc3NpZ24gVGVhbSBNZW1iZXJzIn0KICAgICAgICAgICAgLnBsYWNlaG9sZGVyPSR7IlR5cGUgYSBuYW1lLi4uIChUYWIgdG8gY29tcGxldGUpIn0KICAgICAgICAgICAgLmNhbmRpZGF0ZXM9JHtbe3ZpZXdLZXk6IkFsaWNlIFNtaXRoIixwYXlsb2FkOntpZDoxLHJvbGU6IkVuZ2luZWVyIixkZXBhcnRtZW50OiJGcm9udGVuZCJ9fSx7dmlld0tleToiQm9iIEpvaG5zb24iLHBheWxvYWQ6e2lkOjIscm9sZToiRGVzaWduZXIiLGRlcGFydG1lbnQ6IlVYIn19LHt2aWV3S2V5OiJDYXJvbCBXaWxsaWFtcyIscGF5bG9hZDp7aWQ6Myxyb2xlOiJQcm9kdWN0IE1hbmFnZXIiLGRlcGFydG1lbnQ6IlByb2R1Y3QifX0se3ZpZXdLZXk6IkRhdmlkIEJyb3duIixwYXlsb2FkOntpZDo0LHJvbGU6IkVuZ2luZWVyIixkZXBhcnRtZW50OiJCYWNrZW5kIn19LHt2aWV3S2V5OiJFdmUgRGF2aXMiLHBheWxvYWQ6e2lkOjUscm9sZToiUUEgRW5naW5lZXIiLGRlcGFydG1lbnQ6IlF1YWxpdHkifX0se3ZpZXdLZXk6IkZyYW5rIE1pbGxlciIscGF5bG9hZDp7aWQ6Nixyb2xlOiJEZXZPcHMiLGRlcGFydG1lbnQ6IkluZnJhc3RydWN0dXJlIn19LHt2aWV3S2V5OiJHcmFjZSBXaWxzb24iLHBheWxvYWQ6e2lkOjcscm9sZToiRGVzaWduZXIiLGRlcGFydG1lbnQ6IlVYIn19LHt2aWV3S2V5OiJIZW5yeSBNb29yZSIscGF5bG9hZDp7aWQ6OCxyb2xlOiJFbmdpbmVlciIsZGVwYXJ0bWVudDoiRnJvbnRlbmQifX1dfQogICAgICAgICAgICAudmFsdWU9JHtbIkFsaWNlIFNtaXRoIiwiQ2Fyb2wgV2lsbGlhbXMiXX0KICAgICAgICAgICAgLm1heEl0ZW1zPSR7NX0KICAgICAgICAgICAgLmRlc2NyaXB0aW9uPSR7IlR5cGUgdG8gc2VlIGdob3N0IGNvbXBsZXRpb24uIFRhYiB0byBhY2NlcHQsIFNoaWZ0K1RhYiB0byBjeWNsZSwgRW50ZXIgdG8gYWRkLiJ9CiAgICAgICAgICAgIEBjaGFuZ2U9JHtzPT57bGV0IGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2NhbmRpZGF0ZS1qc29uIik7aWYoZSl7bGV0IGE9cy50YXJnZXQuZ2V0QWRkZWRDYW5kaWRhdGVzKCk7ZS50ZXh0Q29udGVudD1KU09OLnN0cmluZ2lmeShhLG51bGwsMil9fX0KICAgICAgICAgID48L2RlZXMtaW5wdXQtbGlzdD4KCiAgICAgICAgICA8ZGl2PgogICAgICAgICAgICA8ZGl2IHN0eWxlPSJmb250LXNpemU6IDEzcHg7IGZvbnQtd2VpZ2h0OiA1MDA7IG1hcmdpbi1ib3R0b206IDhweDsgY29sb3I6IGluaGVyaXQ7Ij5TZWxlY3RlZCBDYW5kaWRhdGVzICh3aXRoIHBheWxvYWRzKTwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJvdXRwdXQtcHJldmlldyIgaWQ9ImNhbmRpZGF0ZS1qc29uIj5bXTwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlLW5vdGUiPgogICAgICAgICAgICAgIFRyeSB0eXBpbmcgIkQiIOKAlCBnaG9zdCB0ZXh0IHNob3dzICJhdmlkIEJyb3duIi4gUHJlc3MgU2hpZnQrVGFiIHRvIGN5Y2xlIHRvIG90aGVyIEQtbWF0Y2hlcy4gVGFiIGFjY2VwdHMsIEVudGVyIGFkZHMuCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyIxMC4gVGVjaG5vbG9neSBTdGFjayJ9IC5zdWJ0aXRsZT0keyJMYXJnZXIgY2FuZGlkYXRlIHBvb2wgd2l0aCBTaGlmdCtUYWIgY3ljbGluZyJ9PgogICAgICAgIDxkZWVzLWlucHV0LWxpc3QKICAgICAgICAgIC5sYWJlbD0keyJTZWxlY3QgVGVjaG5vbG9naWVzIn0KICAgICAgICAgIC5wbGFjZWhvbGRlcj0keyJUeXBlIHRvIGF1dG9jb21wbGV0ZS4uLiJ9CiAgICAgICAgICAuY2FuZGlkYXRlcz0ke1t7dmlld0tleToiVHlwZVNjcmlwdCIscGF5bG9hZDp7Y2F0ZWdvcnk6Imxhbmd1YWdlIn19LHt2aWV3S2V5OiJSZWFjdCIscGF5bG9hZDp7Y2F0ZWdvcnk6ImZyYW1ld29yayJ9fSx7dmlld0tleToiVnVlLmpzIixwYXlsb2FkOntjYXRlZ29yeToiZnJhbWV3b3JrIn19LHt2aWV3S2V5OiJBbmd1bGFyIixwYXlsb2FkOntjYXRlZ29yeToiZnJhbWV3b3JrIn19LHt2aWV3S2V5OiJOb2RlLmpzIixwYXlsb2FkOntjYXRlZ29yeToicnVudGltZSJ9fSx7dmlld0tleToiRGVubyIscGF5bG9hZDp7Y2F0ZWdvcnk6InJ1bnRpbWUifX0se3ZpZXdLZXk6IkRvY2tlciIscGF5bG9hZDp7Y2F0ZWdvcnk6ImRldm9wcyJ9fSx7dmlld0tleToiUG9zdGdyZVNRTCIscGF5bG9hZDp7Y2F0ZWdvcnk6ImRhdGFiYXNlIn19LHt2aWV3S2V5OiJNb25nb0RCIixwYXlsb2FkOntjYXRlZ29yeToiZGF0YWJhc2UifX0se3ZpZXdLZXk6IlJlZGlzIixwYXlsb2FkOntjYXRlZ29yeToiZGF0YWJhc2UifX0se3ZpZXdLZXk6Ikt1YmVybmV0ZXMiLHBheWxvYWQ6e2NhdGVnb3J5OiJkZXZvcHMifX1dfQogICAgICAgICAgLmRlc2NyaXB0aW9uPSR7J1RyeSAiRCIgXHUyMDE0IGN5Y2xlcyB0aHJvdWdoIERlbm8vRG9ja2VyLiAiUiIgXHUyMDE0IGN5Y2xlcyB0aHJvdWdoIFJlYWN0L1JlZGlzLid9CiAgICAgICAgPjwvZGVlcy1pbnB1dC1saXN0PgogICAgICA8L2RlZXMtcGFuZWw+CgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiMTEuIEZyZWVmb3JtICsgQ2FuZGlkYXRlcyJ9IC5zdWJ0aXRsZT0keyJBbGxvdyBhZGRpbmcgaXRlbXMgbm90IGluIHRoZSBjYW5kaWRhdGUgbGlzdCAoc2hvd24gd2l0aCBhIHF1ZXN0aW9uIG1hcmspIn0+CiAgICAgICAgPGRlZXMtaW5wdXQtbGlzdAogICAgICAgICAgLmxhYmVsPSR7IlRhZ3MifQogICAgICAgICAgLnBsYWNlaG9sZGVyPSR7IlR5cGUgYSB0YWcuLi4gKGZyZWVmb3JtIGFsbG93ZWQpIn0KICAgICAgICAgIC5hbGxvd0ZyZWVmb3JtPSR7ITB9CiAgICAgICAgICAuY2FuZGlkYXRlcz0ke1t7dmlld0tleToiYnVnIixwYXlsb2FkOntjb2xvcjoicmVkIn19LHt2aWV3S2V5OiJmZWF0dXJlIixwYXlsb2FkOntjb2xvcjoiYmx1ZSJ9fSx7dmlld0tleToiZG9jcyIscGF5bG9hZDp7Y29sb3I6ImdyZWVuIn19LHt2aWV3S2V5OiJyZWZhY3RvciIscGF5bG9hZDp7Y29sb3I6InB1cnBsZSJ9fSx7dmlld0tleToicGVyZm9ybWFuY2UiLHBheWxvYWQ6e2NvbG9yOiJvcmFuZ2UifX0se3ZpZXdLZXk6InNlY3VyaXR5IixwYXlsb2FkOntjb2xvcjoicmVkIn19XX0KICAgICAgICAgIC52YWx1ZT0ke1siYnVnIiwibXktY3VzdG9tLXRhZyIsImZlYXR1cmUiXX0KICAgICAgICAgIC5kZXNjcmlwdGlvbj0keyJLbm93biB0YWdzIGdldCBhIGNoZWNrbWFyaywgY3VzdG9tIHRhZ3MgZ2V0IGEgcXVlc3Rpb24gbWFyay4gVGFiIHRvIGNvbXBsZXRlLCBFbnRlciB0byBhZGQgZnJlZWZvcm0uIn0KICAgICAgICA+PC9kZWVzLWlucHV0LWxpc3Q+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyIxMi4gRW1wdHkgU3RhdGUifSAuc3VidGl0bGU9JHsiSG93IHRoZSBjb21wb25lbnQgbG9va3Mgd2l0aCBubyBpdGVtcyJ9PgogICAgICAgIDxkZWVzLWlucHV0LWxpc3QKICAgICAgICAgIC5sYWJlbD0keyJZb3VyIElkZWFzIn0KICAgICAgICAgIC5wbGFjZWhvbGRlcj0keyJTaGFyZSB5b3VyIGlkZWFzLi4uIn0KICAgICAgICAgIC52YWx1ZT0ke1tdfQogICAgICAgICAgLmRlc2NyaXB0aW9uPSR7IlN0YXJ0IGFkZGluZyBpdGVtcyB0byBidWlsZCB5b3VyIGxpc3QifQogICAgICAgID48L2RlZXMtaW5wdXQtbGlzdD4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kaXY+CiAgPC9kZWVzLWRlbW93cmFwcGVyPgpgLCJkZW1vRnVuYyIpfSk7dmFyIFhpLG1hLHhudCx5bnQ9ZygoKT0+e3BlKCk7RWkoKTtHYSgpO21yKCk7WWJhKCk7aHQoKTtYaT1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sbWE9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LHhudD0oKCk9PntsZXQgcz1bbmUoImRlZXMtaW5wdXQtbGlzdCIpXSxlLHQ9W10sYSxyPUJ0LG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdLEgsaz1bXSxTPVtdLEksUD1bXSxSPVtdLEssVj1bXSxXPVtdLG1lLEI9W10sVT1bXSxoZSxGPVtdLGo9W10sdWUsbGU9W10sUT1bXSxpZSx0ZT1bXSxlZT1bXSxrZSxYPVtdLFo9W10seWUscT1bXSxBPVtdLHNlLG9lPVtdLGFlPVtdLFRlLFJlPVtdLEJlPVtdLEdlLERlPVtdLF9lPVtdLENlLHZlPVtdLGJlPVtdLEVlLGplPVtdLFdlPVtdO3ZhciBzdD1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0lucHV0TGlzdCIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBNZT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOkFycmF5fSldLHA9W0woe3R5cGU6U3RyaW5nfSldLGM9W0woe3R5cGU6TnVtYmVyfSldLHg9W0woe3R5cGU6TnVtYmVyfSldLHk9W0woe3R5cGU6Qm9vbGVhbn0pXSxOPVtMKHt0eXBlOkJvb2xlYW59KV0sTz1bTCh7dHlwZTpCb29sZWFufSldLEg9W0woe3R5cGU6QXJyYXl9KV0sST1bTCh7dHlwZTpCb29sZWFufSldLEs9W0woe3R5cGU6U3RyaW5nfSldLG1lPVtZKCldLGhlPVtZKCldLHVlPVtZKCldLGllPVtZKCldLGtlPVtZKCldLHllPVtZKCldLHNlPVtZKCldLFRlPVtZKCldLEdlPVtZKCldLENlPVtZKCldLEVlPVtZKCldLFhpKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidmFsdWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZ2U9PiJ2YWx1ZSJpbiBnZSwiaGFzIiksZ2V0OmkoZ2U9PmdlLnZhbHVlLCJnZXQiKSxzZXQ6aSgoZ2UsSWUpPT57Z2UudmFsdWU9SWV9LCJzZXQiKX0sbWV0YWRhdGE6TWV9LG8sbCksWGkodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJwbGFjZWhvbGRlciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShnZT0+InBsYWNlaG9sZGVyImluIGdlLCJoYXMiKSxnZXQ6aShnZT0+Z2UucGxhY2Vob2xkZXIsImdldCIpLHNldDppKChnZSxJZSk9PntnZS5wbGFjZWhvbGRlcj1JZX0sInNldCIpfSxtZXRhZGF0YTpNZX0sZCx1KSxYaSh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1heEl0ZW1zIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGdlPT4ibWF4SXRlbXMiaW4gZ2UsImhhcyIpLGdldDppKGdlPT5nZS5tYXhJdGVtcywiZ2V0Iiksc2V0OmkoKGdlLEllKT0+e2dlLm1heEl0ZW1zPUllfSwic2V0Iil9LG1ldGFkYXRhOk1lfSxiLHYpLFhpKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWluSXRlbXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZ2U9PiJtaW5JdGVtcyJpbiBnZSwiaGFzIiksZ2V0OmkoZ2U9PmdlLm1pbkl0ZW1zLCJnZXQiKSxzZXQ6aSgoZ2UsSWUpPT57Z2UubWluSXRlbXM9SWV9LCJzZXQiKX0sbWV0YWRhdGE6TWV9LG0sZiksWGkodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJhbGxvd0R1cGxpY2F0ZXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZ2U9PiJhbGxvd0R1cGxpY2F0ZXMiaW4gZ2UsImhhcyIpLGdldDppKGdlPT5nZS5hbGxvd0R1cGxpY2F0ZXMsImdldCIpLHNldDppKChnZSxJZSk9PntnZS5hbGxvd0R1cGxpY2F0ZXM9SWV9LCJzZXQiKX0sbWV0YWRhdGE6TWV9LE0seiksWGkodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzb3J0YWJsZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShnZT0+InNvcnRhYmxlImluIGdlLCJoYXMiKSxnZXQ6aShnZT0+Z2Uuc29ydGFibGUsImdldCIpLHNldDppKChnZSxJZSk9PntnZS5zb3J0YWJsZT1JZX0sInNldCIpfSxtZXRhZGF0YTpNZX0sQyxfKSxYaSh0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNvbmZpcm1EZWxldGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZ2U9PiJjb25maXJtRGVsZXRlImluIGdlLCJoYXMiKSxnZXQ6aShnZT0+Z2UuY29uZmlybURlbGV0ZSwiZ2V0Iiksc2V0OmkoKGdlLEllKT0+e2dlLmNvbmZpcm1EZWxldGU9SWV9LCJzZXQiKX0sbWV0YWRhdGE6TWV9LCQsRSksWGkodGhpcyxudWxsLEgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjYW5kaWRhdGVzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGdlPT4iY2FuZGlkYXRlcyJpbiBnZSwiaGFzIiksZ2V0OmkoZ2U9PmdlLmNhbmRpZGF0ZXMsImdldCIpLHNldDppKChnZSxJZSk9PntnZS5jYW5kaWRhdGVzPUllfSwic2V0Iil9LG1ldGFkYXRhOk1lfSxrLFMpLFhpKHRoaXMsbnVsbCxJLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYWxsb3dGcmVlZm9ybSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShnZT0+ImFsbG93RnJlZWZvcm0iaW4gZ2UsImhhcyIpLGdldDppKGdlPT5nZS5hbGxvd0ZyZWVmb3JtLCJnZXQiKSxzZXQ6aSgoZ2UsSWUpPT57Z2UuYWxsb3dGcmVlZm9ybT1JZX0sInNldCIpfSxtZXRhZGF0YTpNZX0sUCxSKSxYaSh0aGlzLG51bGwsSyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InZhbGlkYXRpb25UZXh0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGdlPT4idmFsaWRhdGlvblRleHQiaW4gZ2UsImhhcyIpLGdldDppKGdlPT5nZS52YWxpZGF0aW9uVGV4dCwiZ2V0Iiksc2V0OmkoKGdlLEllKT0+e2dlLnZhbGlkYXRpb25UZXh0PUllfSwic2V0Iil9LG1ldGFkYXRhOk1lfSxWLFcpLFhpKHRoaXMsbnVsbCxtZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImlucHV0VmFsdWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZ2U9PiJpbnB1dFZhbHVlImluIGdlLCJoYXMiKSxnZXQ6aShnZT0+Z2UuaW5wdXRWYWx1ZSwiZ2V0Iiksc2V0OmkoKGdlLEllKT0+e2dlLmlucHV0VmFsdWU9SWV9LCJzZXQiKX0sbWV0YWRhdGE6TWV9LEIsVSksWGkodGhpcyxudWxsLGhlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZ2hvc3RUZXh0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGdlPT4iZ2hvc3RUZXh0ImluIGdlLCJoYXMiKSxnZXQ6aShnZT0+Z2UuZ2hvc3RUZXh0LCJnZXQiKSxzZXQ6aSgoZ2UsSWUpPT57Z2UuZ2hvc3RUZXh0PUllfSwic2V0Iil9LG1ldGFkYXRhOk1lfSxGLGopLFhpKHRoaXMsbnVsbCx1ZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImN1cnJlbnRDYW5kaWRhdGVJbmRleCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShnZT0+ImN1cnJlbnRDYW5kaWRhdGVJbmRleCJpbiBnZSwiaGFzIiksZ2V0OmkoZ2U9PmdlLmN1cnJlbnRDYW5kaWRhdGVJbmRleCwiZ2V0Iiksc2V0OmkoKGdlLEllKT0+e2dlLmN1cnJlbnRDYW5kaWRhdGVJbmRleD1JZX0sInNldCIpfSxtZXRhZGF0YTpNZX0sbGUsUSksWGkodGhpcyxudWxsLGllLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZWRpdGluZ0luZGV4IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGdlPT4iZWRpdGluZ0luZGV4ImluIGdlLCJoYXMiKSxnZXQ6aShnZT0+Z2UuZWRpdGluZ0luZGV4LCJnZXQiKSxzZXQ6aSgoZ2UsSWUpPT57Z2UuZWRpdGluZ0luZGV4PUllfSwic2V0Iil9LG1ldGFkYXRhOk1lfSx0ZSxlZSksWGkodGhpcyxudWxsLGtlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZWRpdGluZ1ZhbHVlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGdlPT4iZWRpdGluZ1ZhbHVlImluIGdlLCJoYXMiKSxnZXQ6aShnZT0+Z2UuZWRpdGluZ1ZhbHVlLCJnZXQiKSxzZXQ6aSgoZ2UsSWUpPT57Z2UuZWRpdGluZ1ZhbHVlPUllfSwic2V0Iil9LG1ldGFkYXRhOk1lfSxYLFopLFhpKHRoaXMsbnVsbCx5ZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImRyYWdnZWRJbmRleCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShnZT0+ImRyYWdnZWRJbmRleCJpbiBnZSwiaGFzIiksZ2V0OmkoZ2U9PmdlLmRyYWdnZWRJbmRleCwiZ2V0Iiksc2V0OmkoKGdlLEllKT0+e2dlLmRyYWdnZWRJbmRleD1JZX0sInNldCIpfSxtZXRhZGF0YTpNZX0scSxBKSxYaSh0aGlzLG51bGwsc2Use2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJkcmFnT3ZlckluZGV4IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGdlPT4iZHJhZ092ZXJJbmRleCJpbiBnZSwiaGFzIiksZ2V0OmkoZ2U9PmdlLmRyYWdPdmVySW5kZXgsImdldCIpLHNldDppKChnZSxJZSk9PntnZS5kcmFnT3ZlckluZGV4PUllfSwic2V0Iil9LG1ldGFkYXRhOk1lfSxvZSxhZSksWGkodGhpcyxudWxsLFRlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZHJhZ1N0YXJ0WSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShnZT0+ImRyYWdTdGFydFkiaW4gZ2UsImhhcyIpLGdldDppKGdlPT5nZS5kcmFnU3RhcnRZLCJnZXQiKSxzZXQ6aSgoZ2UsSWUpPT57Z2UuZHJhZ1N0YXJ0WT1JZX0sInNldCIpfSxtZXRhZGF0YTpNZX0sUmUsQmUpLFhpKHRoaXMsbnVsbCxHZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImRyYWdDdXJyZW50WSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShnZT0+ImRyYWdDdXJyZW50WSJpbiBnZSwiaGFzIiksZ2V0OmkoZ2U9PmdlLmRyYWdDdXJyZW50WSwiZ2V0Iiksc2V0OmkoKGdlLEllKT0+e2dlLmRyYWdDdXJyZW50WT1JZX0sInNldCIpfSxtZXRhZGF0YTpNZX0sRGUsX2UpLFhpKHRoaXMsbnVsbCxDZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InRhcmdldEluZGV4IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGdlPT4idGFyZ2V0SW5kZXgiaW4gZ2UsImhhcyIpLGdldDppKGdlPT5nZS50YXJnZXRJbmRleCwiZ2V0Iiksc2V0OmkoKGdlLEllKT0+e2dlLnRhcmdldEluZGV4PUllfSwic2V0Iil9LG1ldGFkYXRhOk1lfSx2ZSxiZSksWGkodGhpcyxudWxsLEVlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXRlbUhlaWdodCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShnZT0+Iml0ZW1IZWlnaHQiaW4gZ2UsImhhcyIpLGdldDppKGdlPT5nZS5pdGVtSGVpZ2h0LCJnZXQiKSxzZXQ6aSgoZ2UsSWUpPT57Z2UuaXRlbUhlaWdodD1JZX0sInNldCIpfSxtZXRhZGF0YTpNZX0samUsV2UpLFhpKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOk1lfSxudWxsLHQpLHN0PWE9ZS52YWx1ZSxNZSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpNZX0pfXN0YXRpYyBkZW1vPUtiYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIklucHV0Il07I2U9bWEodGhpcyxvLFtdKTtnZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy4jZX1zZXQgdmFsdWUoTWUpe3RoaXMuI2U9TWV9I3Q9KG1hKHRoaXMsbCksbWEodGhpcyxkLCJBZGQgbmV3IGl0ZW0uLi4iKSk7Z2V0IHBsYWNlaG9sZGVyKCl7cmV0dXJuIHRoaXMuI3R9c2V0IHBsYWNlaG9sZGVyKE1lKXt0aGlzLiN0PU1lfSNhPShtYSh0aGlzLHUpLG1hKHRoaXMsYiwwKSk7Z2V0IG1heEl0ZW1zKCl7cmV0dXJuIHRoaXMuI2F9c2V0IG1heEl0ZW1zKE1lKXt0aGlzLiNhPU1lfSNzPShtYSh0aGlzLHYpLG1hKHRoaXMsbSwwKSk7Z2V0IG1pbkl0ZW1zKCl7cmV0dXJuIHRoaXMuI3N9c2V0IG1pbkl0ZW1zKE1lKXt0aGlzLiNzPU1lfSNpPShtYSh0aGlzLGYpLG1hKHRoaXMsTSwhMSkpO2dldCBhbGxvd0R1cGxpY2F0ZXMoKXtyZXR1cm4gdGhpcy4jaX1zZXQgYWxsb3dEdXBsaWNhdGVzKE1lKXt0aGlzLiNpPU1lfSNyPShtYSh0aGlzLHopLG1hKHRoaXMsQywhMSkpO2dldCBzb3J0YWJsZSgpe3JldHVybiB0aGlzLiNyfXNldCBzb3J0YWJsZShNZSl7dGhpcy4jcj1NZX0jbz0obWEodGhpcyxfKSxtYSh0aGlzLCQsITEpKTtnZXQgY29uZmlybURlbGV0ZSgpe3JldHVybiB0aGlzLiNvfXNldCBjb25maXJtRGVsZXRlKE1lKXt0aGlzLiNvPU1lfSNuPShtYSh0aGlzLEUpLG1hKHRoaXMsayxbXSkpO2dldCBjYW5kaWRhdGVzKCl7cmV0dXJuIHRoaXMuI259c2V0IGNhbmRpZGF0ZXMoTWUpe3RoaXMuI249TWV9I2w9KG1hKHRoaXMsUyksbWEodGhpcyxQLCExKSk7Z2V0IGFsbG93RnJlZWZvcm0oKXtyZXR1cm4gdGhpcy4jbH1zZXQgYWxsb3dGcmVlZm9ybShNZSl7dGhpcy4jbD1NZX0jYz0obWEodGhpcyxSKSxtYSh0aGlzLFYsIiIpKTtnZXQgdmFsaWRhdGlvblRleHQoKXtyZXR1cm4gdGhpcy4jY31zZXQgdmFsaWRhdGlvblRleHQoTWUpe3RoaXMuI2M9TWV9YWRkZWRDYW5kaWRhdGVzTWFwPShtYSh0aGlzLFcpLG5ldyBNYXApO21hdGNoaW5nQ2FuZGlkYXRlcz1bXTsjZD1tYSh0aGlzLEIsIiIpO2dldCBpbnB1dFZhbHVlKCl7cmV0dXJuIHRoaXMuI2R9c2V0IGlucHV0VmFsdWUoTWUpe3RoaXMuI2Q9TWV9I3U9KG1hKHRoaXMsVSksbWEodGhpcyxGLCIiKSk7Z2V0IGdob3N0VGV4dCgpe3JldHVybiB0aGlzLiN1fXNldCBnaG9zdFRleHQoTWUpe3RoaXMuI3U9TWV9I3A9KG1hKHRoaXMsaiksbWEodGhpcyxsZSwtMSkpO2dldCBjdXJyZW50Q2FuZGlkYXRlSW5kZXgoKXtyZXR1cm4gdGhpcy4jcH1zZXQgY3VycmVudENhbmRpZGF0ZUluZGV4KE1lKXt0aGlzLiNwPU1lfSNoPShtYSh0aGlzLFEpLG1hKHRoaXMsdGUsLTEpKTtnZXQgZWRpdGluZ0luZGV4KCl7cmV0dXJuIHRoaXMuI2h9c2V0IGVkaXRpbmdJbmRleChNZSl7dGhpcy4jaD1NZX0jZj0obWEodGhpcyxlZSksbWEodGhpcyxYLCIiKSk7Z2V0IGVkaXRpbmdWYWx1ZSgpe3JldHVybiB0aGlzLiNmfXNldCBlZGl0aW5nVmFsdWUoTWUpe3RoaXMuI2Y9TWV9I209KG1hKHRoaXMsWiksbWEodGhpcyxxLC0xKSk7Z2V0IGRyYWdnZWRJbmRleCgpe3JldHVybiB0aGlzLiNtfXNldCBkcmFnZ2VkSW5kZXgoTWUpe3RoaXMuI209TWV9I2c9KG1hKHRoaXMsQSksbWEodGhpcyxvZSwtMSkpO2dldCBkcmFnT3ZlckluZGV4KCl7cmV0dXJuIHRoaXMuI2d9c2V0IGRyYWdPdmVySW5kZXgoTWUpe3RoaXMuI2c9TWV9I2I9KG1hKHRoaXMsYWUpLG1hKHRoaXMsUmUsMCkpO2dldCBkcmFnU3RhcnRZKCl7cmV0dXJuIHRoaXMuI2J9c2V0IGRyYWdTdGFydFkoTWUpe3RoaXMuI2I9TWV9I3Y9KG1hKHRoaXMsQmUpLG1hKHRoaXMsRGUsMCkpO2dldCBkcmFnQ3VycmVudFkoKXtyZXR1cm4gdGhpcy4jdn1zZXQgZHJhZ0N1cnJlbnRZKE1lKXt0aGlzLiN2PU1lfSN4PShtYSh0aGlzLF9lKSxtYSh0aGlzLHZlLC0xKSk7Z2V0IHRhcmdldEluZGV4KCl7cmV0dXJuIHRoaXMuI3h9c2V0IHRhcmdldEluZGV4KE1lKXt0aGlzLiN4PU1lfSN5PShtYSh0aGlzLGJlKSxtYSh0aGlzLGplLDApKTtnZXQgaXRlbUhlaWdodCgpe3JldHVybiB0aGlzLiN5fXNldCBpdGVtSGVpZ2h0KE1lKXt0aGlzLiN5PU1lfWJvdW5kSGFuZGxlR2xvYmFsRHJhZ092ZXI9KG1hKHRoaXMsV2UpLG51bGwpO2JvdW5kSGFuZGxlR2xvYmFsRHJhZ0VuZD1udWxsO29yaWdpbmFsSXRlbVJlY3RzPVtdO3N0YXRpYyBzdHlsZXM9W3FlLC4uLkJ0LmJhc2VTdHlsZXMsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCAnUm9ib3RvJywgc2Fucy1zZXJpZjsKICAgICAgfQoKICAgICAgLmlucHV0LXdyYXBwZXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICBkZWVzLXRpbGU6aG92ZXI6OnBhcnQob3V0ZXIpIHsKICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLXN0cm9uZyk7CiAgICAgIH0KCiAgICAgIGRlZXMtdGlsZTpmb2N1cy13aXRoaW46OnBhcnQob3V0ZXIpIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUpIiwiaHNsKDIxNy4yIDkxLjIlIDU5LjglKSIpfTsKICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggJHtoLmJkVGhlbWUoImhzbCgyMjIuMiA0Ny40JSA1MS4yJSAvIDAuMSkiLCJoc2woMjE3LjIgOTEuMiUgNTkuOCUgLyAwLjEpIil9OwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSBkZWVzLXRpbGUgewogICAgICAgIG9wYWNpdHk6IDAuNjsKICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICAubGlzdC1pdGVtcyB7CiAgICAgICAgbWF4LWhlaWdodDogNDAwcHg7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgfQoKICAgICAgLmxpc3QtaXRlbSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4OwogICAgICAgIHBhZGRpbmc6IDZweCAxMHB4OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1zdWJ0bGUpOwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2UsIGJhY2tncm91bmQgMC4xNXMgZWFzZSwgYm94LXNoYWRvdyAwLjE1cyBlYXNlOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAubGlzdC1pdGVtOmxhc3Qtb2YtdHlwZSB7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgICAgfQoKICAgICAgLmxpc3QtaXRlbXM6bm90KC5pcy1kcmFnZ2luZykgLmxpc3QtaXRlbTpob3Zlcjpub3QoLmRpc2FibGVkKSB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1yb3ctaG92ZXIpOwogICAgICB9CgogICAgICAvKiBEcmFnZ2luZyBpdGVtIC0gZm9sbG93cyBjdXJzb3IgKi8KICAgICAgLmxpc3QtaXRlbS5kcmFnZ2luZyB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHotaW5kZXg6IDEwMDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxMCA0MCUgOTglKSIsImhzbCgyMTUgMjAuMiUgMTIlKSIpfTsKICAgICAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMTUpIiwicmdiYSgwLCAwLCAwLCAwLjQpIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuMTVzIGVhc2UsIGJhY2tncm91bmQgMC4xNXMgZWFzZTsKICAgICAgfQoKICAgICAgLyogSXRlbXMgdGhhdCBuZWVkIHRvIG1vdmUgdXAgdG8gbWFrZSBzcGFjZSAqLwogICAgICAubGlzdC1pdGVtLm1vdmUtdXAgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWShjYWxjKC0xICogdmFyKC0taXRlbS1oZWlnaHQsIDQ4cHgpKSk7CiAgICAgIH0KCiAgICAgIC8qIEl0ZW1zIHRoYXQgbmVlZCB0byBtb3ZlIGRvd24gdG8gbWFrZSBzcGFjZSAqLwogICAgICAubGlzdC1pdGVtLm1vdmUtZG93biB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKHZhcigtLWl0ZW0taGVpZ2h0LCA0OHB4KSk7CiAgICAgIH0KCgogICAgICAuY2FuZGlkYXRlLWNoZWNrIHsKICAgICAgICB3aWR0aDogMTRweDsKICAgICAgICBoZWlnaHQ6IDE0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMTQyLjEgNzYuMiUgMzYuMyUpIiwiaHNsKDE0Mi4xIDcwLjYlIDQ1LjMlKSIpfTsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQoKICAgICAgLmNhbmRpZGF0ZS11bmtub3duIHsKICAgICAgICB3aWR0aDogMTRweDsKICAgICAgICBoZWlnaHQ6IDE0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woNDUgOTMlIDQ3JSkiLCJoc2woNDUgOTMlIDU4JSkiKX07CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC5pdGVtLWJ1bGxldCB7CiAgICAgICAgd2lkdGg6IDE0cHg7CiAgICAgICAgaGVpZ2h0OiAxNHB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgfQoKICAgICAgLmRyYWctaGFuZGxlIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgY3Vyc29yOiBtb3ZlOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNjMuOSUpIiwiaHNsKDAgMCUgNDUuMSUpIil9OwogICAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5kcmFnLWhhbmRsZTpob3ZlciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA0NS4xJSkiLCJoc2woMCAwJSA2My45JSkiKX07CiAgICAgIH0KCiAgICAgIC5kcmFnLWhhbmRsZSBkZWVzLWljb24gewogICAgICAgIHdpZHRoOiAxNHB4OwogICAgICAgIGhlaWdodDogMTRweDsKICAgICAgfQoKICAgICAgLml0ZW0tY29udGVudCB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgbWluLXdpZHRoOiAwOwogICAgICB9CgogICAgICAuaXRlbS10ZXh0IHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOSUpIiwiaHNsKDAgMCUgOTUlKSIpfTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE4cHg7CiAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDsKICAgICAgfQoKICAgICAgLml0ZW0tZWRpdC1pbnB1dCB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBwYWRkaW5nOiAzcHggNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTAwJSkiLCJoc2woMCAwJSA5JSkiKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgyMjIuMiA0Ny40JSA1MS4yJSkiLCJoc2woMjE3LjIgOTEuMiUgNTkuOCUpIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOSUpIiwiaHNsKDAgMCUgOTUlKSIpfTsKICAgICAgfQoKICAgICAgLml0ZW0tYWN0aW9ucyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBnYXA6IDRweDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbiB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIHdpZHRoOiAyNHB4OwogICAgICAgIGhlaWdodDogMjRweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDQ1LjElKSIsImhzbCgwIDAlIDYzLjklKSIpfTsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idXR0b246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5NS4xJSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5JSkiLCJoc2woMCAwJSA5NSUpIil9OwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbi5zYXZlIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgxNDIuMSA3Ni4yJSAzNi4zJSkiLCJoc2woMTQyLjEgNzAuNiUgNDUuMyUpIil9OwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbi5zYXZlOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDE0Mi4xIDc2LjIlIDM2LjMlIC8gMC4xKSIsImhzbCgxNDIuMSA3MC42JSA0NS4zJSAvIDAuMSkiKX07CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uLmNhbmNlbCB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCA3Mi4yJSA1MC42JSkiLCJoc2woMCA2Mi44JSA1MC42JSkiKX07CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uLmNhbmNlbDpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDcyLjIlIDUwLjYlIC8gMC4xKSIsImhzbCgwIDYyLjglIDUwLjYlIC8gMC4xKSIpfTsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idXR0b24uZGVsZXRlIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDcyLjIlIDUwLjYlKSIsImhzbCgwIDYyLjglIDUwLjYlKSIpfTsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idXR0b24uZGVsZXRlOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgNzIuMiUgNTAuNiUgLyAwLjEpIiwiaHNsKDAgNjIuOCUgNTAuNiUgLyAwLjEpIil9OwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbiBkZWVzLWljb24gewogICAgICAgIHdpZHRoOiAxM3B4OwogICAgICAgIGhlaWdodDogMTNweDsKICAgICAgfQoKICAgICAgLmFkZC1pdGVtLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBnYXA6IDZweDsKICAgICAgICBwYWRkaW5nOiA2cHggMTBweDsKICAgICAgfQoKICAgICAgLmFkZC1pbnB1dCB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgcGFkZGluZzogNHB4IDhweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE4cHg7CiAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5JSkiLCJoc2woMCAwJSA5NSUpIil9OwogICAgICAgIG1pbi13aWR0aDogMDsKICAgICAgfQoKICAgICAgLmFkZC1pbnB1dDo6cGxhY2Vob2xkZXIgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNjMuOSUpIiwiaHNsKDAgMCUgNDUuMSUpIil9OwogICAgICB9CgogICAgICAuYWRkLWlucHV0OmRpc2FibGVkIHsKICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgfQoKICAgICAgLmFkZC1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICB3aWR0aDogMjRweDsKICAgICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA0NS4xJSkiLCJoc2woMCAwJSA2My45JSkiKX07CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC5hZGQtYnV0dG9uOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTUuMSUpIiwiaHNsKDAgMCUgMTQuOSUpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOSUpIiwiaHNsKDAgMCUgOTUlKSIpfTsKICAgICAgfQoKICAgICAgLmFkZC1idXR0b246ZGlzYWJsZWQgewogICAgICAgIG9wYWNpdHk6IDAuMzsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgIH0KCiAgICAgIC5hZGQtYnV0dG9uIGRlZXMtaWNvbiB7CiAgICAgICAgd2lkdGg6IDE0cHg7CiAgICAgICAgaGVpZ2h0OiAxNHB4OwogICAgICB9CgogICAgICAuZW1wdHktc3RhdGUgewogICAgICAgIHBhZGRpbmc6IDE2cHggMTBweDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA2My45JSkiLCJoc2woMCAwJSA0NS4xJSkiKX07CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICB9CgogICAgICAudmFsaWRhdGlvbi1tZXNzYWdlIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDcyLjIlIDUwLjYlKSIsImhzbCgwIDYyLjglIDMwLjYlKSIpfTsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgbWFyZ2luLXRvcDogNHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7CiAgICAgIH0KCiAgICAgIC8qIFNjcm9sbGJhciBzdHlsaW5nICovCiAgICAgIC5saXN0LWl0ZW1zOjotd2Via2l0LXNjcm9sbGJhciB7CiAgICAgICAgd2lkdGg6IDhweDsKICAgICAgfQoKICAgICAgLmxpc3QtaXRlbXM6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgfQoKICAgICAgLmxpc3QtaXRlbXM6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgODkuOCUpIiwiaHNsKDAgMCUgMjQuOSUpIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgfQoKICAgICAgLmxpc3QtaXRlbXM6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNzkuOCUpIiwiaHNsKDAgMCUgMzQuOSUpIil9OwogICAgICB9CgogICAgICAvKiBEaXNhYmxlIHRyYW5zaXRpb25zIGR1cmluZyBkcm9wIHRvIHByZXZlbnQgZmxhc2ggKi8KICAgICAgLmxpc3QtaXRlbXMuZHJvcHBpbmcgLmxpc3QtaXRlbSB7CiAgICAgICAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAvKiDilIDilIAgVGVybWluYWwtc3R5bGUgaW5saW5lIGF1dG9jb21wbGV0ZSDilIDilIAgKi8KICAgICAgLmF1dG9jb21wbGV0ZS13cmFwcGVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZmxleDogMTsKICAgICAgICBtaW4td2lkdGg6IDA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLmdob3N0LXRleHQgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgcGFkZGluZzogNHB4IDhweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE4cHg7CiAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAuZ2hvc3QtdHlwZWQgewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLmdob3N0LWNvbXBsZXRpb24gewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNjMuOSUpIiwiaHNsKDAgMCUgNDUuMSUpIil9OwogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImlucHV0LXdyYXBwZXIiPgogICAgICAgICR7dGhpcy5sYWJlbD93YDxkZWVzLWxhYmVsIC5sYWJlbD0ke3RoaXMubGFiZWx9IC5yZXF1aXJlZD0ke3RoaXMucmVxdWlyZWR9PjwvZGVlcy1sYWJlbD5gOiIifQogICAgICAgIAogICAgICAgIDxkZWVzLXRpbGUgLmhlYWRpbmc9IiR7dGhpcy52YWx1ZS5sZW5ndGh9IGl0ZW0ke3RoaXMudmFsdWUubGVuZ3RoIT09MT8icyI6IiJ9Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9Imxpc3QtaXRlbXMiPgogICAgICAgICAgICAke3RoaXMudmFsdWUubGVuZ3RoPjA/dGhpcy52YWx1ZS5tYXAoKE1lLGdlKT0+d2AKICAgICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICBjbGFzcz0ibGlzdC1pdGVtICR7dGhpcy5kcmFnZ2VkSW5kZXg9PT1nZT8iZHJhZ2dpbmciOiIifSIKICAgICAgICAgICAgICAgIGRyYWdnYWJsZT0iJHt0aGlzLnNvcnRhYmxlJiYhdGhpcy5kaXNhYmxlZH0iCiAgICAgICAgICAgICAgICBAZHJhZ3N0YXJ0PSR7SWU9PnRoaXMuaGFuZGxlRHJhZ1N0YXJ0KEllLGdlKX0KICAgICAgICAgICAgICAgIEBkcmFnZW5kPSR7dGhpcy5oYW5kbGVEcmFnRW5kfQogICAgICAgICAgICAgICAgQGRyYWdvdmVyPSR7SWU9PnRoaXMuaGFuZGxlRHJhZ092ZXIoSWUsZ2UpfQogICAgICAgICAgICAgICAgQGRyb3A9JHtJZT0+dGhpcy5oYW5kbGVEcm9wKEllLGdlKX0KICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAke3RoaXMuc29ydGFibGUmJiF0aGlzLmRpc2FibGVkP3dgCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRyYWctaGFuZGxlIj4KICAgICAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7Imx1Y2lkZTpncmlwVmVydGljYWwifT48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICBgOiIifQoKICAgICAgICAgICAgICAgICR7dGhpcy5jYW5kaWRhdGVzLmxlbmd0aD4wP3dgCiAgICAgICAgICAgICAgICAgICR7dGhpcy5jYW5kaWRhdGVzLnNvbWUoSWU9PkllLnZpZXdLZXk9PT1NZSk/d2AKICAgICAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIGNsYXNzPSJjYW5kaWRhdGUtY2hlY2siIC5pY29uPSR7Imx1Y2lkZTpjaGVjayJ9PjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgICBgOndgCiAgICAgICAgICAgICAgICAgICAgPGRlZXMtaWNvbiBjbGFzcz0iY2FuZGlkYXRlLXVua25vd24iIC5pY29uPSR7Imx1Y2lkZTpoZWxwQ2lyY2xlIn0+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICAgIGB9CiAgICAgICAgICAgICAgICBgOiF0aGlzLnNvcnRhYmxlfHx0aGlzLmRpc2FibGVkP3dgCiAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gY2xhc3M9Iml0ZW0tYnVsbGV0IiAuaWNvbj0keyJsdWNpZGU6ZG90In0+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICBgOiIifQoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0tY29udGVudCI+CiAgICAgICAgICAgICAgICAgICR7dGhpcy5lZGl0aW5nSW5kZXg9PT1nZT93YAogICAgICAgICAgICAgICAgICAgIDxpbnB1dAogICAgICAgICAgICAgICAgICAgICAgdHlwZT0idGV4dCIKICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpdGVtLWVkaXQtaW5wdXQiCiAgICAgICAgICAgICAgICAgICAgICAudmFsdWU9JHt0aGlzLmVkaXRpbmdWYWx1ZX0KICAgICAgICAgICAgICAgICAgICAgIEBpbnB1dD0ke0llPT50aGlzLmVkaXRpbmdWYWx1ZT1JZS50YXJnZXQudmFsdWV9CiAgICAgICAgICAgICAgICAgICAgICBAa2V5ZG93bj0ke0llPT50aGlzLmhhbmRsZUVkaXRLZXlEb3duKEllLGdlKX0KICAgICAgICAgICAgICAgICAgICAgIEBibHVyPSR7KCk9PnRoaXMuc2F2ZUVkaXQoZ2UpfQogICAgICAgICAgICAgICAgICAgIC8+CiAgICAgICAgICAgICAgICAgIGA6d2AKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtLXRleHQiIEBkYmxjbGljaz0keygpPT4hdGhpcy5kaXNhYmxlZCYmdGhpcy5zdGFydEVkaXQoZ2UpfT4KICAgICAgICAgICAgICAgICAgICAgICR7TWV9CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIGB9CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbS1hY3Rpb25zIj4KICAgICAgICAgICAgICAgICAgJHt0aGlzLmVkaXRpbmdJbmRleD09PWdlP3dgCiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiBzYXZlIiBAY2xpY2s9JHsoKT0+dGhpcy5zYXZlRWRpdChnZSl9PgogICAgICAgICAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6Y2hlY2sifT48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJhY3Rpb24tYnV0dG9uIGNhbmNlbCIgQGNsaWNrPSR7KCk9PnRoaXMuY2FuY2VsRWRpdCgpfT4KICAgICAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHsibHVjaWRlOngifT48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgYDp3YAogICAgICAgICAgICAgICAgICAgICR7dGhpcy5kaXNhYmxlZD8iIjp3YAogICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiIgQGNsaWNrPSR7KCk9PnRoaXMuc3RhcnRFZGl0KGdlKX0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHsibHVjaWRlOnBlbmNpbCJ9PjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJhY3Rpb24tYnV0dG9uIGRlbGV0ZSIgQGNsaWNrPSR7KCk9PnRoaXMucmVtb3ZlSXRlbShnZSl9PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7Imx1Y2lkZTp0cmFzaDIifT48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIGB9CiAgICAgICAgICAgICAgICAgIGB9CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYCk6d2AKICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbXB0eS1zdGF0ZSI+CiAgICAgICAgICAgICAgICBObyBpdGVtcyBhZGRlZCB5ZXQKICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYH0KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgCiAgICAgICAgICAkeyF0aGlzLmRpc2FibGVkJiYoIXRoaXMubWF4SXRlbXN8fHRoaXMudmFsdWUubGVuZ3RoPHRoaXMubWF4SXRlbXMpP3dgCiAgICAgICAgICAgIDxkaXYgc2xvdD0iZm9vdGVyIiBjbGFzcz0iYWRkLWl0ZW0tY29udGFpbmVyIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhdXRvY29tcGxldGUtd3JhcHBlciI+CiAgICAgICAgICAgICAgICAke3RoaXMuZ2hvc3RUZXh0P3dgCiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnaG9zdC10ZXh0Ij4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2hvc3QtdHlwZWQiPiR7dGhpcy5pbnB1dFZhbHVlfTwvc3Bhbj48c3BhbiBjbGFzcz0iZ2hvc3QtY29tcGxldGlvbiI+JHt0aGlzLmdob3N0VGV4dH08L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgICAgICAgdHlwZT0idGV4dCIKICAgICAgICAgICAgICAgICAgY2xhc3M9ImFkZC1pbnB1dCIKICAgICAgICAgICAgICAgICAgLnBsYWNlaG9sZGVyPSR7dGhpcy5wbGFjZWhvbGRlcn0KICAgICAgICAgICAgICAgICAgLnZhbHVlPSR7dGhpcy5pbnB1dFZhbHVlfQogICAgICAgICAgICAgICAgICBAaW5wdXQ9JHt0aGlzLmhhbmRsZUlucHV0fQogICAgICAgICAgICAgICAgICBAa2V5ZG93bj0ke3RoaXMuaGFuZGxlQWRkS2V5RG93bn0KICAgICAgICAgICAgICAgICAgP2Rpc2FibGVkPSR7dGhpcy5kaXNhYmxlZH0KICAgICAgICAgICAgICAgIC8+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGJ1dHRvbgogICAgICAgICAgICAgICAgY2xhc3M9ImFkZC1idXR0b24iCiAgICAgICAgICAgICAgICBAY2xpY2s9JHt0aGlzLmFkZEl0ZW19CiAgICAgICAgICAgICAgICA/ZGlzYWJsZWQ9JHshdGhpcy5pbnB1dFZhbHVlLnRyaW0oKX0KICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7Imx1Y2lkZTpwbHVzIn0+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYDoiIn0KICAgICAgICA8L2RlZXMtdGlsZT4KCiAgICAgICAgJHt0aGlzLnZhbGlkYXRpb25UZXh0P3dgCiAgICAgICAgICA8ZGl2IGNsYXNzPSJ2YWxpZGF0aW9uLW1lc3NhZ2UiPiR7dGhpcy52YWxpZGF0aW9uVGV4dH08L2Rpdj4KICAgICAgICBgOiIifQogICAgICAgIAogICAgICAgICR7dGhpcy5yZW5kZXJEZXNjcmlwdGlvbigpfQogICAgICA8L2Rpdj4KICAgIGB9aGFuZGxlSW5wdXQoTWUpe3RoaXMuaW5wdXRWYWx1ZT1NZS50YXJnZXQudmFsdWUsdGhpcy51cGRhdGVHaG9zdFRleHQoKX11cGRhdGVHaG9zdFRleHQoKXtpZih0aGlzLmNhbmRpZGF0ZXMubGVuZ3RoPT09MHx8IXRoaXMuaW5wdXRWYWx1ZSl7dGhpcy5naG9zdFRleHQ9IiIsdGhpcy5jdXJyZW50Q2FuZGlkYXRlSW5kZXg9LTEsdGhpcy5tYXRjaGluZ0NhbmRpZGF0ZXM9W107cmV0dXJufWxldCBNZT10aGlzLmlucHV0VmFsdWUudG9Mb3dlckNhc2UoKTt0aGlzLm1hdGNoaW5nQ2FuZGlkYXRlcz10aGlzLmNhbmRpZGF0ZXMuZmlsdGVyKGdlPT50aGlzLnZhbHVlLmluY2x1ZGVzKGdlLnZpZXdLZXkpPyExOmdlLnZpZXdLZXkudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKE1lKSkuc29ydCgoZ2UsSWUpPT5nZS52aWV3S2V5Lmxlbmd0aC1JZS52aWV3S2V5Lmxlbmd0aCksdGhpcy5tYXRjaGluZ0NhbmRpZGF0ZXMubGVuZ3RoPjA/KHRoaXMuY3VycmVudENhbmRpZGF0ZUluZGV4PTAsdGhpcy5naG9zdFRleHQ9dGhpcy5tYXRjaGluZ0NhbmRpZGF0ZXNbMF0udmlld0tleS5zbGljZSh0aGlzLmlucHV0VmFsdWUubGVuZ3RoKSk6KHRoaXMuY3VycmVudENhbmRpZGF0ZUluZGV4PS0xLHRoaXMuZ2hvc3RUZXh0PSIiKX1oYW5kbGVBZGRLZXlEb3duKE1lKXtpZihNZS5rZXk9PT0iVGFiIiYmdGhpcy5jYW5kaWRhdGVzLmxlbmd0aD4wJiZ0aGlzLmlucHV0VmFsdWUpe2lmKE1lLnByZXZlbnREZWZhdWx0KCksTWUuc2hpZnRLZXkmJnRoaXMubWF0Y2hpbmdDYW5kaWRhdGVzLmxlbmd0aD4wKXt0aGlzLmN1cnJlbnRDYW5kaWRhdGVJbmRleD0odGhpcy5jdXJyZW50Q2FuZGlkYXRlSW5kZXgrMSkldGhpcy5tYXRjaGluZ0NhbmRpZGF0ZXMubGVuZ3RoO2xldCBnZT10aGlzLm1hdGNoaW5nQ2FuZGlkYXRlc1t0aGlzLmN1cnJlbnRDYW5kaWRhdGVJbmRleF07dGhpcy5naG9zdFRleHQ9Z2Uudmlld0tleS5zbGljZSh0aGlzLmlucHV0VmFsdWUubGVuZ3RoKX1lbHNlIGlmKCFNZS5zaGlmdEtleSYmdGhpcy5naG9zdFRleHQmJnRoaXMubWF0Y2hpbmdDYW5kaWRhdGVzLmxlbmd0aD4wKXtsZXQgZ2U9dGhpcy5tYXRjaGluZ0NhbmRpZGF0ZXNbdGhpcy5jdXJyZW50Q2FuZGlkYXRlSW5kZXhdO3RoaXMuaW5wdXRWYWx1ZT1nZS52aWV3S2V5LHRoaXMuZ2hvc3RUZXh0PSIiO2xldCBJZT10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5hZGQtaW5wdXQiKTtJZSYmKEllLnZhbHVlPWdlLnZpZXdLZXkpfXJldHVybn1pZihNZS5rZXk9PT0iRXNjYXBlIiYmdGhpcy5naG9zdFRleHQpe01lLnByZXZlbnREZWZhdWx0KCksdGhpcy5naG9zdFRleHQ9IiIsdGhpcy5jdXJyZW50Q2FuZGlkYXRlSW5kZXg9LTEsdGhpcy5tYXRjaGluZ0NhbmRpZGF0ZXM9W107cmV0dXJufWlmKE1lLmtleT09PSJFbnRlciImJnRoaXMuaW5wdXRWYWx1ZS50cmltKCkpe2lmKE1lLnByZXZlbnREZWZhdWx0KCksdGhpcy5jYW5kaWRhdGVzLmxlbmd0aD4wKXtsZXQgZ2U9dGhpcy5jYW5kaWRhdGVzLmZpbmQoSWU9PkllLnZpZXdLZXkudG9Mb3dlckNhc2UoKT09PXRoaXMuaW5wdXRWYWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKSk7Z2U/dGhpcy5zZWxlY3RDYW5kaWRhdGUoZ2UpOnRoaXMuYWxsb3dGcmVlZm9ybSYmKHRoaXMuZ2hvc3RUZXh0PSIiLHRoaXMuY3VycmVudENhbmRpZGF0ZUluZGV4PS0xLHRoaXMubWF0Y2hpbmdDYW5kaWRhdGVzPVtdLHRoaXMuYWRkSXRlbSgpKTtyZXR1cm59dGhpcy5hZGRJdGVtKCl9fWhhbmRsZUVkaXRLZXlEb3duKE1lLGdlKXtNZS5rZXk9PT0iRW50ZXIiPyhNZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuc2F2ZUVkaXQoZ2UpKTpNZS5rZXk9PT0iRXNjYXBlIiYmKE1lLnByZXZlbnREZWZhdWx0KCksdGhpcy5jYW5jZWxFZGl0KCkpfXNlbGVjdENhbmRpZGF0ZShNZSl7aWYodGhpcy5tYXhJdGVtcyYmdGhpcy52YWx1ZS5sZW5ndGg+PXRoaXMubWF4SXRlbXMpe3RoaXMudmFsaWRhdGlvblRleHQ9YE1heGltdW0gJHt0aGlzLm1heEl0ZW1zfSBpdGVtcyBhbGxvd2VkYCxzZXRUaW1lb3V0KCgpPT50aGlzLnZhbGlkYXRpb25UZXh0PSIiLDNlMyk7cmV0dXJufWlmKCF0aGlzLmFsbG93RHVwbGljYXRlcyYmdGhpcy52YWx1ZS5pbmNsdWRlcyhNZS52aWV3S2V5KSl7dGhpcy52YWxpZGF0aW9uVGV4dD0iVGhpcyBpdGVtIGFscmVhZHkgZXhpc3RzIGluIHRoZSBsaXN0IixzZXRUaW1lb3V0KCgpPT50aGlzLnZhbGlkYXRpb25UZXh0PSIiLDNlMyk7cmV0dXJufXRoaXMuYWRkZWRDYW5kaWRhdGVzTWFwLnNldChNZS52aWV3S2V5LE1lKSx0aGlzLnZhbHVlPVsuLi50aGlzLnZhbHVlLE1lLnZpZXdLZXldLHRoaXMuaW5wdXRWYWx1ZT0iIix0aGlzLmdob3N0VGV4dD0iIix0aGlzLmN1cnJlbnRDYW5kaWRhdGVJbmRleD0tMSx0aGlzLm1hdGNoaW5nQ2FuZGlkYXRlcz1bXSx0aGlzLnZhbGlkYXRpb25UZXh0PSIiLHRoaXMuZW1pdENoYW5nZSgpLHRoaXMudXBkYXRlQ29tcGxldGUudGhlbigoKT0+e2xldCBnZT10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5hZGQtaW5wdXQiKTtnZSYmKGdlLnZhbHVlPSIiLGdlLmZvY3VzKCkpfSl9Z2V0Q2FuZGlkYXRlRm9ySXRlbShNZSl7cmV0dXJuIHRoaXMuYWRkZWRDYW5kaWRhdGVzTWFwLmdldChNZSl9Z2V0QWRkZWRDYW5kaWRhdGVzKCl7cmV0dXJuIHRoaXMudmFsdWUubWFwKE1lPT50aGlzLmFkZGVkQ2FuZGlkYXRlc01hcC5nZXQoTWUpKS5maWx0ZXIoTWU9Pk1lIT09dm9pZCAwKX1hZGRJdGVtKCl7bGV0IE1lPXRoaXMuaW5wdXRWYWx1ZS50cmltKCk7aWYoTWUpe2lmKCF0aGlzLmFsbG93RHVwbGljYXRlcyYmdGhpcy52YWx1ZS5pbmNsdWRlcyhNZSkpe3RoaXMudmFsaWRhdGlvblRleHQ9IlRoaXMgaXRlbSBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgbGlzdCIsc2V0VGltZW91dCgoKT0+dGhpcy52YWxpZGF0aW9uVGV4dD0iIiwzZTMpO3JldHVybn1pZih0aGlzLm1heEl0ZW1zJiZ0aGlzLnZhbHVlLmxlbmd0aD49dGhpcy5tYXhJdGVtcyl7dGhpcy52YWxpZGF0aW9uVGV4dD1gTWF4aW11bSAke3RoaXMubWF4SXRlbXN9IGl0ZW1zIGFsbG93ZWRgLHNldFRpbWVvdXQoKCk9PnRoaXMudmFsaWRhdGlvblRleHQ9IiIsM2UzKTtyZXR1cm59dGhpcy52YWx1ZT1bLi4udGhpcy52YWx1ZSxNZV0sdGhpcy5pbnB1dFZhbHVlPSIiLHRoaXMudmFsaWRhdGlvblRleHQ9IiIsdGhpcy5lbWl0Q2hhbmdlKCksdGhpcy51cGRhdGVDb21wbGV0ZS50aGVuKCgpPT57bGV0IGdlPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLmFkZC1pbnB1dCIpO2dlJiYoZ2UudmFsdWU9IiIsZ2UuZm9jdXMoKSl9KX19c3RhcnRFZGl0KE1lKXt0aGlzLmVkaXRpbmdJbmRleD1NZSx0aGlzLmVkaXRpbmdWYWx1ZT10aGlzLnZhbHVlW01lXSx0aGlzLnVwZGF0ZUNvbXBsZXRlLnRoZW4oKCk9PntsZXQgZ2U9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIuaXRlbS1lZGl0LWlucHV0Iik7Z2UmJihnZS5mb2N1cygpLGdlLnNlbGVjdCgpKX0pfXNhdmVFZGl0KE1lKXtsZXQgZ2U9dGhpcy5lZGl0aW5nVmFsdWUudHJpbSgpO2lmKCFnZSl7dGhpcy5jYW5jZWxFZGl0KCk7cmV0dXJufWlmKCF0aGlzLmFsbG93RHVwbGljYXRlcyYmZ2UhPT10aGlzLnZhbHVlW01lXSYmdGhpcy52YWx1ZS5pbmNsdWRlcyhnZSkpe3RoaXMudmFsaWRhdGlvblRleHQ9IlRoaXMgaXRlbSBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgbGlzdCIsc2V0VGltZW91dCgoKT0+dGhpcy52YWxpZGF0aW9uVGV4dD0iIiwzZTMpO3JldHVybn1sZXQgSWU9Wy4uLnRoaXMudmFsdWVdO0llW01lXT1nZSx0aGlzLnZhbHVlPUllLHRoaXMuZWRpdGluZ0luZGV4PS0xLHRoaXMuZWRpdGluZ1ZhbHVlPSIiLHRoaXMudmFsaWRhdGlvblRleHQ9IiIsdGhpcy5lbWl0Q2hhbmdlKCl9Y2FuY2VsRWRpdCgpe3RoaXMuZWRpdGluZ0luZGV4PS0xLHRoaXMuZWRpdGluZ1ZhbHVlPSIifWFzeW5jIHJlbW92ZUl0ZW0oTWUpe2lmKHRoaXMuY29uZmlybURlbGV0ZSYmIWF3YWl0IHRoaXMuc2hvd0NvbmZpcm1EaWFsb2coYERlbGV0ZSAiJHt0aGlzLnZhbHVlW01lXX0iP2ApKXJldHVybjtsZXQgZ2U9dGhpcy52YWx1ZVtNZV07dGhpcy5hZGRlZENhbmRpZGF0ZXNNYXAuZGVsZXRlKGdlKSx0aGlzLnZhbHVlPXRoaXMudmFsdWUuZmlsdGVyKChJZSxjZSk9PmNlIT09TWUpLHRoaXMuZW1pdENoYW5nZSgpfWFzeW5jIHNob3dDb25maXJtRGlhbG9nKE1lKXtyZXR1cm4gY29uZmlybShNZSl9aGFuZGxlRHJhZ1N0YXJ0KE1lLGdlKXtpZighdGhpcy5zb3J0YWJsZXx8dGhpcy5kaXNhYmxlZClyZXR1cm47dGhpcy5kcmFnZ2VkSW5kZXg9Z2UsdGhpcy50YXJnZXRJbmRleD1nZSxNZS5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZD0ibW92ZSIsTWUuZGF0YVRyYW5zZmVyLnNldERhdGEoInRleHQvcGxhaW4iLGdlLnRvU3RyaW5nKCkpO2xldCBJZT1uZXcgSW1hZ2U7SWUuc3JjPSJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUlBQUFBVUVCQUFBQUN3QUFBQUFBUUFCQUFBQ0FrUUJBRHM9IixNZS5kYXRhVHJhbnNmZXIuc2V0RHJhZ0ltYWdlKEllLDAsMCksdGhpcy5kcmFnU3RhcnRZPU1lLmNsaWVudFksdGhpcy5kcmFnQ3VycmVudFk9TWUuY2xpZW50WTtsZXQgY2U9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIubGlzdC1pdGVtcyIpLGRlPUFycmF5LmZyb20oY2U/LnF1ZXJ5U2VsZWN0b3JBbGwoIi5saXN0LWl0ZW0iKXx8W10pO2RlW2dlXSYmKHRoaXMuaXRlbUhlaWdodD1kZVtnZV0ub2Zmc2V0SGVpZ2h0KSx0aGlzLm9yaWdpbmFsSXRlbVJlY3RzPWRlLm1hcChMZT0+TGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLGNlPy5jbGFzc0xpc3QuYWRkKCJpcy1kcmFnZ2luZyIpLHRoaXMuYm91bmRIYW5kbGVHbG9iYWxEcmFnT3Zlcj10aGlzLmhhbmRsZUdsb2JhbERyYWdPdmVyLmJpbmQodGhpcyksdGhpcy5ib3VuZEhhbmRsZUdsb2JhbERyYWdFbmQ9dGhpcy5oYW5kbGVHbG9iYWxEcmFnRW5kLmJpbmQodGhpcyksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ292ZXIiLHRoaXMuYm91bmRIYW5kbGVHbG9iYWxEcmFnT3ZlciksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ2VuZCIsdGhpcy5ib3VuZEhhbmRsZUdsb2JhbERyYWdFbmQpfWhhbmRsZUdsb2JhbERyYWdPdmVyKE1lKXtpZihNZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuZHJhZ2dlZEluZGV4PT09LTEpcmV0dXJuO3RoaXMuZHJhZ0N1cnJlbnRZPU1lLmNsaWVudFk7bGV0IGdlPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLmxpc3QtaXRlbXMiKTtpZighZ2UpcmV0dXJuO2xldCBJZT1BcnJheS5mcm9tKGdlLnF1ZXJ5U2VsZWN0b3JBbGwoIi5saXN0LWl0ZW0iKSksY2U9SWVbdGhpcy5kcmFnZ2VkSW5kZXhdO2lmKCFjZSlyZXR1cm47bGV0IGRlPXRoaXMuZHJhZ0N1cnJlbnRZLXRoaXMuZHJhZ1N0YXJ0WTtjZS5zdHlsZS50cmFuc2Zvcm09YHRyYW5zbGF0ZVkoJHtkZX1weClgO2xldCBMZT10aGlzLm9yaWdpbmFsSXRlbVJlY3RzW3RoaXMuZHJhZ2dlZEluZGV4XTtpZighTGUpcmV0dXJuO2xldCBLZT1MZS50b3ArTGUuaGVpZ2h0LzIrZGUsWWU9dGhpcy5kcmFnZ2VkSW5kZXg7Zm9yKGxldCBvdD0wO290PEllLmxlbmd0aDtvdCsrKXtpZihvdD09PXRoaXMuZHJhZ2dlZEluZGV4KWNvbnRpbnVlO2xldCBVdD10aGlzLm9yaWdpbmFsSXRlbVJlY3RzW290XTtpZighVXQpY29udGludWU7bGV0IFp0PVV0LnRvcCtVdC5oZWlnaHQvMjtpZihJZVtvdF0uY2xhc3NMaXN0LmNvbnRhaW5zKCJtb3ZlLXVwIik/WnQtPXRoaXMuaXRlbUhlaWdodDpJZVtvdF0uY2xhc3NMaXN0LmNvbnRhaW5zKCJtb3ZlLWRvd24iKSYmKFp0Kz10aGlzLml0ZW1IZWlnaHQpLEtlPFp0JiZvdDx0aGlzLmRyYWdnZWRJbmRleCl7WWU9b3Q7YnJlYWt9ZWxzZSBLZT5adCYmb3Q+dGhpcy5kcmFnZ2VkSW5kZXgmJihZZT1vdCl9WWUhPT10aGlzLnRhcmdldEluZGV4JiYodGhpcy50YXJnZXRJbmRleD1ZZSx0aGlzLnVwZGF0ZUl0ZW1Qb3NpdGlvbnMoSWUpKX11cGRhdGVJdGVtUG9zaXRpb25zKE1lKXtsZXQgZ2U9dGhpcy5kcmFnZ2VkSW5kZXgsSWU9dGhpcy50YXJnZXRJbmRleCxjZT10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5saXN0LWl0ZW1zIik7Y2UmJmNlLnN0eWxlLnNldFByb3BlcnR5KCItLWl0ZW0taGVpZ2h0IixgJHt0aGlzLml0ZW1IZWlnaHR9cHhgKSxNZS5mb3JFYWNoKChkZSxMZSk9PntMZSE9PWdlJiYoZGUuY2xhc3NMaXN0LnJlbW92ZSgibW92ZS11cCIsIm1vdmUtZG93biIpLGRlLnN0eWxlLnNldFByb3BlcnR5KCItLWl0ZW0taGVpZ2h0IixgJHt0aGlzLml0ZW1IZWlnaHR9cHhgKSxnZTxJZT9MZT5nZSYmTGU8PUllJiZkZS5jbGFzc0xpc3QuYWRkKCJtb3ZlLXVwIik6Z2U+SWUmJkxlPj1JZSYmTGU8Z2UmJmRlLmNsYXNzTGlzdC5hZGQoIm1vdmUtZG93biIpKX0pfWhhbmRsZUdsb2JhbERyYWdFbmQoKXt0aGlzLmJvdW5kSGFuZGxlR2xvYmFsRHJhZ092ZXImJihkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJkcmFnb3ZlciIsdGhpcy5ib3VuZEhhbmRsZUdsb2JhbERyYWdPdmVyKSx0aGlzLmJvdW5kSGFuZGxlR2xvYmFsRHJhZ092ZXI9bnVsbCksdGhpcy5ib3VuZEhhbmRsZUdsb2JhbERyYWdFbmQmJihkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJkcmFnZW5kIix0aGlzLmJvdW5kSGFuZGxlR2xvYmFsRHJhZ0VuZCksdGhpcy5ib3VuZEhhbmRsZUdsb2JhbERyYWdFbmQ9bnVsbCk7bGV0IE1lPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLmxpc3QtaXRlbXMiKSxnZT1NZT8ucXVlcnlTZWxlY3RvckFsbCgiLmxpc3QtaXRlbSIpLEllPWdlPy5bdGhpcy5kcmFnZ2VkSW5kZXhdO2lmKHRoaXMuZHJhZ2dlZEluZGV4PT09LTF8fHRoaXMudGFyZ2V0SW5kZXg9PT0tMXx8dGhpcy5kcmFnZ2VkSW5kZXg9PT10aGlzLnRhcmdldEluZGV4KXtpZihJZSYmdGhpcy5kcmFnZ2VkSW5kZXghPT0tMSl7SWUuc3R5bGUudHJhbnNpdGlvbj0idHJhbnNmb3JtIDAuMTVzIGVhc2UiLEllLnN0eWxlLnRyYW5zZm9ybT0idHJhbnNsYXRlWSgwKSI7bGV0IG90PSExLFV0PWkoKCk9PntvdHx8KG90PSEwLEllLnJlbW92ZUV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLFV0KSx0aGlzLmNsZWFudXBEcmFnU3RhdGUoTWUsZ2UpKX0sIm9uUmV0dXJuIik7SWUuYWRkRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbmVuZCIsVXQse29uY2U6ITB9KSxzZXRUaW1lb3V0KFV0LDIwMCl9ZWxzZSB0aGlzLmNsZWFudXBEcmFnU3RhdGUoTWUsZ2UpO3JldHVybn1sZXQgY2U9dGhpcy5vcmlnaW5hbEl0ZW1SZWN0c1t0aGlzLmRyYWdnZWRJbmRleF0sZGU9dGhpcy5vcmlnaW5hbEl0ZW1SZWN0c1t0aGlzLnRhcmdldEluZGV4XTtpZighY2V8fCFkZXx8IUllKXt0aGlzLmNsZWFudXBEcmFnU3RhdGUoTWUsZ2UpO3JldHVybn1sZXQgTGU7dGhpcy50YXJnZXRJbmRleD50aGlzLmRyYWdnZWRJbmRleD9MZT1kZS5ib3R0b20tY2UuYm90dG9tOkxlPWRlLnRvcC1jZS50b3AsSWUuc3R5bGUudHJhbnNpdGlvbj0idHJhbnNmb3JtIDAuMTVzIGVhc2UiLEllLnN0eWxlLnRyYW5zZm9ybT1gdHJhbnNsYXRlWSgke0xlfXB4KWA7bGV0IEtlPSExLFllPWkoKCk9PntpZihLZSlyZXR1cm47S2U9ITAsSWUucmVtb3ZlRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbmVuZCIsWWUpLE1lPy5jbGFzc0xpc3QuYWRkKCJkcm9wcGluZyIpLE1lPy5vZmZzZXRIZWlnaHQsZ2U/LmZvckVhY2goWnQ9PntadC5jbGFzc0xpc3QucmVtb3ZlKCJtb3ZlLXVwIiwibW92ZS1kb3duIiwiZHJhZ2dpbmciKSxadC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgidHJhbnNmb3JtIiksWnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoInRyYW5zaXRpb24iKX0pO2xldCBvdD1bLi4udGhpcy52YWx1ZV0sW1V0XT1vdC5zcGxpY2UodGhpcy5kcmFnZ2VkSW5kZXgsMSk7b3Quc3BsaWNlKHRoaXMudGFyZ2V0SW5kZXgsMCxVdCksdGhpcy52YWx1ZT1vdCx0aGlzLmVtaXRDaGFuZ2UoKSx0aGlzLmRyYWdnZWRJbmRleD0tMSx0aGlzLmRyYWdPdmVySW5kZXg9LTEsdGhpcy50YXJnZXRJbmRleD0tMSx0aGlzLmRyYWdTdGFydFk9MCx0aGlzLmRyYWdDdXJyZW50WT0wLHRoaXMub3JpZ2luYWxJdGVtUmVjdHM9W10sdGhpcy51cGRhdGVDb21wbGV0ZS50aGVuKCgpPT57bGV0IFp0PXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvckFsbCgiLmxpc3QtaXRlbSIpO1p0Py5mb3JFYWNoKGphPT57amEuc3R5bGUudHJhbnNpdGlvbj0ibm9uZSJ9KSx0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5saXN0LWl0ZW1zIik/Lm9mZnNldEhlaWdodCxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntadD8uZm9yRWFjaChqYT0+e2phLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJ0cmFuc2l0aW9uIil9KSxNZT8uY2xhc3NMaXN0LnJlbW92ZSgiZHJvcHBpbmciLCJpcy1kcmFnZ2luZyIpfSl9KX0sIm9uVHJhbnNpdGlvbkVuZCIpO0llLmFkZEV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLFllLHtvbmNlOiEwfSksc2V0VGltZW91dChZZSwyMDApfWNsZWFudXBEcmFnU3RhdGUoTWUsZ2Upe01lPy5jbGFzc0xpc3QuYWRkKCJkcm9wcGluZyIpLE1lPy5vZmZzZXRIZWlnaHQsZ2U/LmZvckVhY2goSWU9PntJZS5jbGFzc0xpc3QucmVtb3ZlKCJtb3ZlLXVwIiwibW92ZS1kb3duIiwiZHJhZ2dpbmciKSxJZS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgidHJhbnNmb3JtIiksSWUuc3R5bGUucmVtb3ZlUHJvcGVydHkoInRyYW5zaXRpb24iKX0pLHRoaXMuZHJhZ2dlZEluZGV4PS0xLHRoaXMuZHJhZ092ZXJJbmRleD0tMSx0aGlzLnRhcmdldEluZGV4PS0xLHRoaXMuZHJhZ1N0YXJ0WT0wLHRoaXMuZHJhZ0N1cnJlbnRZPTAsdGhpcy5vcmlnaW5hbEl0ZW1SZWN0cz1bXSx0aGlzLnVwZGF0ZUNvbXBsZXRlLnRoZW4oKCk9PntsZXQgSWU9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yQWxsKCIubGlzdC1pdGVtIik7SWU/LmZvckVhY2goY2U9PntjZS5zdHlsZS50cmFuc2l0aW9uPSJub25lIn0pLHRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLmxpc3QtaXRlbXMiKT8ub2Zmc2V0SGVpZ2h0LHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e0llPy5mb3JFYWNoKGNlPT57Y2Uuc3R5bGUucmVtb3ZlUHJvcGVydHkoInRyYW5zaXRpb24iKX0pLE1lPy5jbGFzc0xpc3QucmVtb3ZlKCJkcm9wcGluZyIsImlzLWRyYWdnaW5nIil9KX0pfWhhbmRsZURyYWdFbmQoKXt0aGlzLmhhbmRsZUdsb2JhbERyYWdFbmQoKX1oYW5kbGVEcmFnT3ZlcihNZSxnZSl7IXRoaXMuc29ydGFibGV8fHRoaXMuZGlzYWJsZWR8fChNZS5wcmV2ZW50RGVmYXVsdCgpLE1lLmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0PSJtb3ZlIil9aGFuZGxlRHJhZ0xlYXZlKCl7fWhhbmRsZURyb3AoTWUsZ2UpeyF0aGlzLnNvcnRhYmxlfHx0aGlzLmRpc2FibGVkfHxNZS5wcmV2ZW50RGVmYXVsdCgpfWVtaXRDaGFuZ2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjaGFuZ2UiLHtkZXRhaWw6e3ZhbHVlOnRoaXMudmFsdWV9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSksdGhpcy5jaGFuZ2VTdWJqZWN0Lm5leHQodGhpcyl9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy52YWx1ZX1zZXRWYWx1ZShNZSl7dGhpcy52YWx1ZT1NZXx8W119YXN5bmMgdmFsaWRhdGUoKXtyZXR1cm4gdGhpcy5yZXF1aXJlZCYmKCF0aGlzLnZhbHVlfHx0aGlzLnZhbHVlLmxlbmd0aD09PTApPyh0aGlzLnZhbGlkYXRpb25UZXh0PSJBdCBsZWFzdCBvbmUgaXRlbSBpcyByZXF1aXJlZCIsITEpOnRoaXMubWluSXRlbXMmJnRoaXMudmFsdWUubGVuZ3RoPHRoaXMubWluSXRlbXM/KHRoaXMudmFsaWRhdGlvblRleHQ9YEF0IGxlYXN0ICR7dGhpcy5taW5JdGVtc30gaXRlbXMgcmVxdWlyZWRgLCExKToodGhpcy52YWxpZGF0aW9uVGV4dD0iIiwhMCl9c3RhdGlje21hKGEsdCl9fTtyZXR1cm4gc3Q9YX0pKCl9KTt2YXIgVkphLFVKYSxXSmEsR0phLEtKYSxZSmEsWkphLFpiYSxYYmE9ZygoKT0+e3BlKCk7SXQoKTt4bygpO1ZKYT1pKCgpPT57bGV0IHM9RGF0ZS5ub3coKTtyZXR1cm5be2lkOmB0aXRsZS0ke3N9YCx0eXBlOiJoZWFkaW5nLTEiLGNvbnRlbnQ6IlN5c3RlbSBQZXJmb3JtYW5jZSBSZXBvcnQifSx7aWQ6YGRhdGUtJHtzKzF9YCx0eXBlOiJwYXJhZ3JhcGgiLGNvbnRlbnQ6YEdlbmVyYXRlZCBvbjogJHtuZXcgRGF0ZSgpLnRvTG9jYWxlU3RyaW5nKCl9YH0se2lkOmBzdW1tYXJ5LWhlYWRpbmctJHtzKzJ9YCx0eXBlOiJoZWFkaW5nLTIiLGNvbnRlbnQ6IkV4ZWN1dGl2ZSBTdW1tYXJ5In0se2lkOmBzdW1tYXJ5LSR7cyszfWAsdHlwZToicGFyYWdyYXBoIixjb250ZW50OiJUaGlzIHJlcG9ydCBwcm92aWRlcyBhbiBhbmFseXNpcyBvZiBzeXN0ZW0gcGVyZm9ybWFuY2UgbWV0cmljcyBvdmVyIHRoZSBsYXN0IDMwIGRheXMuIn0se2lkOmBtZXRyaWNzLWhlYWRpbmctJHtzKzR9YCx0eXBlOiJoZWFkaW5nLTIiLGNvbnRlbnQ6IktleSBNZXRyaWNzIn0se2lkOmBtZXRyaWNzLWxpc3QtJHtzKzV9YCx0eXBlOiJsaXN0Iixjb250ZW50OmBBdmVyYWdlIHJlc3BvbnNlIHRpbWU6IDEyNG1zClVwdGltZTogOTkuOTclCkNQVSB1dGlsaXphdGlvbjogNDUlCk1lbW9yeSB1c2FnZTogMi4zR0IgLyA4R0JgLG1ldGFkYXRhOntsaXN0VHlwZToiYnVsbGV0In19LHtpZDpgYW5hbHlzaXMtaGVhZGluZy0ke3MrNn1gLHR5cGU6ImhlYWRpbmctMiIsY29udGVudDoiUGVyZm9ybWFuY2UgQW5hbHlzaXMifSx7aWQ6YGFuYWx5c2lzLXF1b3RlLSR7cys3fWAsdHlwZToicXVvdGUiLGNvbnRlbnQ6IlN5c3RlbSBwZXJmb3JtYW5jZSByZW1haW5zIHdpdGhpbiBhY2NlcHRhYmxlIHBhcmFtZXRlcnMgd2l0aCByb29tIGZvciBvcHRpbWl6YXRpb24gaW4gbWVtb3J5IG1hbmFnZW1lbnQuIn0se2lkOmBjb2RlLWhlYWRpbmctJHtzKzh9YCx0eXBlOiJoZWFkaW5nLTMiLGNvbnRlbnQ6IlNhbXBsZSBRdWVyeSBQZXJmb3JtYW5jZSJ9LHtpZDpgY29kZS1ibG9jay0ke3MrOX1gLHR5cGU6ImNvZGUiLGNvbnRlbnQ6YFNFTEVDVCBBVkcocmVzcG9uc2VfdGltZSkgYXMgYXZnX3RpbWUsCiAgICAgICBDT1VOVCgqKSBhcyB0b3RhbF9yZXF1ZXN0cywKICAgICAgIERBVEUoY3JlYXRlZF9hdCkgYXMgZGF0ZQpGUk9NIHBlcmZvcm1hbmNlX2xvZ3MKV0hFUkUgY3JlYXRlZF9hdCA+PSBOT1coKSAtIElOVEVSVkFMIDMwIERBWQpHUk9VUCBCWSBEQVRFKGNyZWF0ZWRfYXQpCk9SREVSIEJZIGRhdGUgREVTQztgLG1ldGFkYXRhOntsYW5ndWFnZToic3FsIn19LHtpZDpgZGl2aWRlci0ke3MrMTB9YCx0eXBlOiJkaXZpZGVyIixjb250ZW50OiIifSx7aWQ6YGZvb3Rlci0ke3MrMTF9YCx0eXBlOiJwYXJhZ3JhcGgiLGNvbnRlbnQ6IlJlcG9ydCBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBTeXN0ZW0gTW9uaXRvciB2Mi41LjAifV19LCJnZW5lcmF0ZVJlcG9ydEJsb2NrcyIpLFVKYT1pKCgpPT57bGV0IHM9RGF0ZS5ub3coKTtyZXR1cm5be2lkOmByZWNpcGUtdGl0bGUtJHtzfWAsdHlwZToiaGVhZGluZy0xIixjb250ZW50OiJDbGFzc2ljIE1hcmdoZXJpdGEgUGl6emEifSx7aWQ6YHJlY2lwZS1pbnRyby0ke3MrMX1gLHR5cGU6InBhcmFncmFwaCIsY29udGVudDoiQSB0cmFkaXRpb25hbCBJdGFsaWFuIHBpenphIHdpdGggZnJlc2ggYmFzaWwsIG1venphcmVsbGEsIGFuZCB0b21hdG8gc2F1Y2UuIn0se2lkOmBpbmdyZWRpZW50cy1oZWFkaW5nLSR7cysyfWAsdHlwZToiaGVhZGluZy0yIixjb250ZW50OiJcdXsxRjM1NX0gSW5ncmVkaWVudHMifSx7aWQ6YGRvdWdoLWhlYWRpbmctJHtzKzN9YCx0eXBlOiJoZWFkaW5nLTMiLGNvbnRlbnQ6IkZvciB0aGUgRG91Z2g6In0se2lkOmBkb3VnaC1saXN0LSR7cys0fWAsdHlwZToibGlzdCIsY29udGVudDpgNTAwZyB0aXBvICIwMCIgZmxvdXIKMzI1bWwgd2FybSB3YXRlcgoxMGcgc2FsdAo3ZyBhY3RpdmUgZHJ5IHllYXN0CjIgdGJzcCBvbGl2ZSBvaWxgLG1ldGFkYXRhOntsaXN0VHlwZToiYnVsbGV0In19LHtpZDpgdG9wcGluZ3MtaGVhZGluZy0ke3MrNX1gLHR5cGU6ImhlYWRpbmctMyIsY29udGVudDoiRm9yIHRoZSBUb3BwaW5nczoifSx7aWQ6YHRvcHBpbmdzLWxpc3QtJHtzKzZ9YCx0eXBlOiJsaXN0Iixjb250ZW50OmA0MDBnIGNhbm5lZCBTYW4gTWFyemFubyB0b21hdG9lcwoyNTBnIGZyZXNoIG1venphcmVsbGEKRnJlc2ggYmFzaWwgbGVhdmVzCkV4dHJhIHZpcmdpbiBvbGl2ZSBvaWwKU2FsdCBhbmQgcGVwcGVyIHRvIHRhc3RlYCxtZXRhZGF0YTp7bGlzdFR5cGU6ImJ1bGxldCJ9fSx7aWQ6YGluc3RydWN0aW9ucy1oZWFkaW5nLSR7cys3fWAsdHlwZToiaGVhZGluZy0yIixjb250ZW50OiJcdXsxRjQ2OH1cdTIwMERcdXsxRjM3M30gSW5zdHJ1Y3Rpb25zIn0se2lkOmBzdGVwcy1saXN0LSR7cys4fWAsdHlwZToibGlzdCIsY29udGVudDpgRGlzc29sdmUgeWVhc3QgaW4gd2FybSB3YXRlciBhbmQgbGV0IHN0YW5kIGZvciA1IG1pbnV0ZXMKTWl4IGZsb3VyIGFuZCBzYWx0LCBjcmVhdGUgYSB3ZWxsIGluIGNlbnRlcgpBZGQgeWVhc3QgbWl4dHVyZSBhbmQgb2xpdmUgb2lsCktuZWFkIGZvciAxMCBtaW51dGVzIHVudGlsIHNtb290aApMZXQgcmlzZSBmb3IgMS0yIGhvdXJzIHVudGlsIGRvdWJsZWQKUHVuY2ggZG93biBhbmQgZGl2aWRlIGludG8gcG9ydGlvbnMKUm9sbCBvdXQgZWFjaCBwb3J0aW9uIHRvIDEyLWluY2ggY2lyY2xlcwpUb3Agd2l0aCBjcnVzaGVkIHRvbWF0b2VzLCBtb3p6YXJlbGxhLCBhbmQgYmFzaWwKQmFrZSBhdCA0NzVceEIwRiAoMjQ1XHhCMEMpIGZvciAxMC0xMiBtaW51dGVzYCxtZXRhZGF0YTp7bGlzdFR5cGU6Im9yZGVyZWQifX0se2lkOmB0aXAtJHtzKzl9YCx0eXBlOiJxdW90ZSIsY29udGVudDoiUHJvIHRpcDogRm9yIGFuIGF1dGhlbnRpYyB0YXN0ZSwgdXNlIGEgcGl6emEgc3RvbmUgYW5kIHByZWhlYXQgaXQgaW4gdGhlIG92ZW4gZm9yIGF0IGxlYXN0IDMwIG1pbnV0ZXMgYmVmb3JlIGJha2luZy4ifSx7aWQ6YGRpdmlkZXItJHtzKzEwfWAsdHlwZToiZGl2aWRlciIsY29udGVudDoiIn0se2lkOmBzZXJ2aW5ncy0ke3MrMTF9YCx0eXBlOiJwYXJhZ3JhcGgiLGNvbnRlbnQ6IlNlcnZpbmdzOiA0IHBpenphcyB8IFByZXAgdGltZTogMiBob3VycyB8IENvb2sgdGltZTogMTIgbWludXRlcyJ9XX0sImdlbmVyYXRlUmVjaXBlQmxvY2tzIiksV0phPWkocz0+e2xldCBlPXt9O3JldHVybiBlLmJhc2ljPXMucXVlcnlTZWxlY3RvcigiI2VkaXRvci1iYXNpYyIpLGUuYXJ0aWNsZT1zLnF1ZXJ5U2VsZWN0b3IoIiNlZGl0b3ItYXJ0aWNsZSIpLGUuZHJhZ0Ryb3A9cy5xdWVyeVNlbGVjdG9yKCIjZWRpdG9yLWRyYWdkcm9wIiksZS50dXRvcmlhbD1zLnF1ZXJ5U2VsZWN0b3IoIiNlZGl0b3ItdHV0b3JpYWwiKSxlLm1lZXRpbmc9cy5xdWVyeVNlbGVjdG9yKCIjZWRpdG9yLW1lZXRpbmciKSxlLnJlY2lwZT1zLnF1ZXJ5U2VsZWN0b3IoIiNlZGl0b3ItcmVjaXBlIiksZS50ZWNobmljYWw9cy5xdWVyeVNlbGVjdG9yKCIjZWRpdG9yLXRlY2huaWNhbCIpLGUuZm9ybUludGVncmF0aW9uPXMucXVlcnlTZWxlY3RvcigiI2VkaXRvci1mb3JtLWludGVncmF0aW9uIiksZS5wcm9ncmFtbWF0aWM9cy5xdWVyeVNlbGVjdG9yKCIjZWRpdG9yLXByb2dyYW1tYXRpYyIpLGUuZXhwb3J0RGVtbz1zLnF1ZXJ5U2VsZWN0b3IoIiNlZGl0b3ItZXhwb3J0IiksZX0sImluaXRpYWxpemVFZGl0b3JzIiksR0phPWkoKHMsZSk9PntsZXQgdD1zLnF1ZXJ5U2VsZWN0b3IoIiNidG4tZ2VuZXJhdGUtcmVwb3J0IiksYT1zLnF1ZXJ5U2VsZWN0b3IoIiNidG4tZ2VuZXJhdGUtcmVjaXBlIikscj1zLnF1ZXJ5U2VsZWN0b3IoIiNidG4tY2xlYXItZWRpdG9yIik7dCYmdC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PntlLmltcG9ydEJsb2NrcyhWSmEoKSl9KSxhJiZhLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e2UuaW1wb3J0QmxvY2tzKFVKYSgpKX0pLHImJnIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57ZS5pbXBvcnRCbG9ja3MoW10pfSl9LCJzZXR1cFByb2dyYW1tYXRpY0RlbW8iKSxLSmE9aSgocyxlKT0+e2xldCB0PXMucXVlcnlTZWxlY3RvcigiI2J0bi1leHBvcnQtYmxvY2tzIiksYT1zLnF1ZXJ5U2VsZWN0b3IoIiNidG4tZXhwb3J0LWh0bWwiKSxyPXMucXVlcnlTZWxlY3RvcigiI2J0bi1leHBvcnQtbWFya2Rvd24iKSxuPXMucXVlcnlTZWxlY3RvcigiI2J0bi1zYXZlLXN0YXRlIiksbz1zLnF1ZXJ5U2VsZWN0b3IoIiNidG4tcmVzdG9yZS1zdGF0ZSIpLGw9bnVsbDt0JiZ0LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e2xldCBwPWUuZXhwb3J0QmxvY2tzKCk7Y29uc29sZS5sb2coIkV4cG9ydGVkIGJsb2NrczoiLHApLGFsZXJ0KGBFeHBvcnRlZCAke3AubGVuZ3RofSBibG9ja3MgdG8gY29uc29sZS4gQ2hlY2sgZGV2ZWxvcGVyIHRvb2xzLmApfSksYSYmYS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PntsZXQgcD1lLmV4cG9ydEFzSHRtbCgpO2NvbnNvbGUubG9nKCJIVE1MIEV4cG9ydDoiLHApLGFsZXJ0KCJIVE1MIGV4cG9ydGVkIHRvIGNvbnNvbGUuIENoZWNrIGRldmVsb3BlciB0b29scy4iKX0pLHImJnIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57bGV0IHA9ZS5leHBvcnRBc01hcmtkb3duKCk7Y29uc29sZS5sb2coIk1hcmtkb3duIEV4cG9ydDoiLHApLGFsZXJ0KCJNYXJrZG93biBleHBvcnRlZCB0byBjb25zb2xlLiBDaGVjayBkZXZlbG9wZXIgdG9vbHMuIil9KSxuJiZuLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e2w9ZS5leHBvcnRTdGF0ZSgpLGNvbnNvbGUubG9nKCJTYXZlZCBzdGF0ZToiLGwpLGFsZXJ0KCJFZGl0b3Igc3RhdGUgc2F2ZWQhIil9KSxvJiZvLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e2w/KGUuaW1wb3J0U3RhdGUobCksYWxlcnQoIkVkaXRvciBzdGF0ZSByZXN0b3JlZCEiKSk6YWxlcnQoIk5vIHNhdmVkIHN0YXRlIGZvdW5kLiBTYXZlIHN0YXRlIGZpcnN0ISIpfSl9LCJzZXR1cEV4cG9ydERlbW8iKSxZSmE9aSgocyxlLHQpPT57bGV0IGE9cy5xdWVyeVNlbGVjdG9yKCIjYnRuLXNob3ctaHRtbC1vdXRwdXQiKSxyPXMucXVlcnlTZWxlY3RvcigiI291dHB1dC1wcmV2aWV3LWh0bWwiKTthJiZyJiZlJiZhLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e3IudGV4dENvbnRlbnQ9ZS5nZXRWYWx1ZSgpLHIuY2xhc3NMaXN0LmFkZCgidmlzaWJsZSIpfSk7bGV0IG49cy5xdWVyeVNlbGVjdG9yKCIjYnRuLXNob3ctbWFya2Rvd24tb3V0cHV0Iiksbz1zLnF1ZXJ5U2VsZWN0b3IoIiNvdXRwdXQtcHJldmlldy1tYXJrZG93biIpO24mJm8mJnQmJm4uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57by50ZXh0Q29udGVudD10LmdldFZhbHVlKCksby5jbGFzc0xpc3QuYWRkKCJ2aXNpYmxlIil9KX0sInNldHVwT3V0cHV0Rm9ybWF0RGVtbyIpLFpKYT1pKHM9PntzLmFydGljbGUmJnNldFRpbWVvdXQoKCk9PntsZXQgZT1be2lkOiJpbnRyby1oZWFkaW5nLSIrRGF0ZS5ub3coKSx0eXBlOiJoZWFkaW5nLTIiLGNvbnRlbnQ6IkludHJvZHVjdGlvbiB0byBNb2Rlcm4gV2ViIERldmVsb3BtZW50In0se2lkOiJpbnRyby1wYXJhLSIrRGF0ZS5ub3coKSx0eXBlOiJwYXJhZ3JhcGgiLGNvbnRlbnQ6Ik1vZGVybiB3ZWIgZGV2ZWxvcG1lbnQgaGFzIGV2b2x2ZWQgc2lnbmlmaWNhbnRseSBvdmVyIHRoZSBwYXN0IGRlY2FkZS4gSW4gdGhpcyBhcnRpY2xlLCB3ZSdsbCBleHBsb3JlIHRoZSBrZXkgdGVjaG5vbG9naWVzIGFuZCBiZXN0IHByYWN0aWNlcyB0aGF0IGRlZmluZSB3ZWIgZGV2ZWxvcG1lbnQgaW4gMjAyNC4ifSx7aWQ6InRlY2gtaGVhZGluZy0iK0RhdGUubm93KCksdHlwZToiaGVhZGluZy0zIixjb250ZW50OiJLZXkgVGVjaG5vbG9naWVzIn0se2lkOiJ0ZWNoLWxpc3QtIitEYXRlLm5vdygpLHR5cGU6Imxpc3QiLGNvbnRlbnQ6YFR5cGVTY3JpcHQgLSBUeXBlLXNhZmUgSmF2YVNjcmlwdCBkZXZlbG9wbWVudApXZWIgQ29tcG9uZW50cyAtIE5hdGl2ZSBjb21wb25lbnQgbW9kZWwKRVMgTW9kdWxlcyAtIE1vZGVybiBtb2R1bGUgc3lzdGVtCldlYkFzc2VtYmx5IC0gSGlnaC1wZXJmb3JtYW5jZSBjb21wdXRpbmdgLG1ldGFkYXRhOntsaXN0VHlwZToib3JkZXJlZCJ9fSx7aWQ6InF1b3RlLSIrRGF0ZS5ub3coKSx0eXBlOiJxdW90ZSIsY29udGVudDoiVGhlIGJlc3Qgd2F5IHRvIHByZWRpY3QgdGhlIGZ1dHVyZSBpcyB0byBpbnZlbnQgaXQuIC0gQWxhbiBLYXkifSx7aWQ6ImV4YW1wbGUtaGVhZGluZy0iK0RhdGUubm93KCksdHlwZToiaGVhZGluZy0zIixjb250ZW50OiJDb2RlIEV4YW1wbGUifSx7aWQ6ImNvZGUtZXhhbXBsZS0iK0RhdGUubm93KCksdHlwZToiY29kZSIsY29udGVudDpgY2xhc3MgTW9kZXJuV2ViQXBwIGV4dGVuZHMgSFRNTEVsZW1lbnQgewogIGNvbnN0cnVjdG9yKCkgewogICAgc3VwZXIoKTsKICAgIHRoaXMuYXR0YWNoU2hhZG93KHsgbW9kZTogJ29wZW4nIH0pOwogIH0KICAKICBjb25uZWN0ZWRDYWxsYmFjaygpIHsKICAgIHRoaXMucmVuZGVyKCk7CiAgfQp9YCxtZXRhZGF0YTp7bGFuZ3VhZ2U6ImphdmFzY3JpcHQifX1dO3MuYXJ0aWNsZS5pbXBvcnRCbG9ja3MoZSl9LDUwMCkscy5kcmFnRHJvcCYmc2V0VGltZW91dCgoKT0+e2xldCBlPVt7aWQ6ImRyYWctdGl0bGUtIitEYXRlLm5vdygpLHR5cGU6ImhlYWRpbmctMSIsY29udGVudDoiRHJhZyAmIERyb3AgRGVtbyJ9LHtpZDoiZHJhZy1pbnRyby0iK0RhdGUubm93KCksdHlwZToicGFyYWdyYXBoIixjb250ZW50OiJUaGlzIGVkaXRvciBkZW1vbnN0cmF0ZXMgZHJhZyBhbmQgZHJvcCBmdW5jdGlvbmFsaXR5LiBUcnkgZHJhZ2dpbmcgdGhlc2UgYmxvY2tzIGFyb3VuZCEifSx7aWQ6ImRyYWctaGVhZGluZy0iK0RhdGUubm93KCksdHlwZToiaGVhZGluZy0yIixjb250ZW50OiJIb3cgSXQgV29ya3MifSx7aWQ6ImRyYWctbGlzdC0iK0RhdGUubm93KCksdHlwZToibGlzdCIsY29udGVudDpgSG92ZXIgb3ZlciBhbnkgYmxvY2sgdG8gc2VlIHRoZSBkcmFnIGhhbmRsZQpDbGljayBhbmQgaG9sZCB0aGUgaGFuZGxlIHRvIHN0YXJ0IGRyYWdnaW5nCkRyYWcgdG8gcmVvcmRlciBibG9ja3MKUmVsZWFzZSB0byBkcm9wIGluIHRoZSBuZXcgcG9zaXRpb25gLG1ldGFkYXRhOntsaXN0VHlwZToib3JkZXJlZCJ9fSx7aWQ6ImRyYWctcXVvdGUtIitEYXRlLm5vdygpLHR5cGU6InF1b3RlIixjb250ZW50OiJUaGUgZHJhZyBhbmQgZHJvcCBmZWF0dXJlIG1ha2VzIGl0IGVhc3kgdG8gcmVvcmdhbml6ZSB5b3VyIGNvbnRlbnQgd2l0aG91dCBjdXR0aW5nIGFuZCBwYXN0aW5nLiJ9LHtpZDoiZHJhZy1kaXZpZGVyLSIrRGF0ZS5ub3coKSx0eXBlOiJkaXZpZGVyIixjb250ZW50OiIifSx7aWQ6ImRyYWctZm9vdGVyLSIrRGF0ZS5ub3coKSx0eXBlOiJwYXJhZ3JhcGgiLGNvbnRlbnQ6Ik5vdGU6IERpdmlkZXIgYmxvY2tzIGNhbm5vdCBiZSBkcmFnZ2VkLCBidXQgb3RoZXIgYmxvY2tzIGNhbiBiZSBtb3ZlZCBhcm91bmQgdGhlbS4ifV07cy5kcmFnRHJvcC5pbXBvcnRCbG9ja3MoZSl9LDYwMCl9LCJwb3B1bGF0ZUluaXRpYWxDb250ZW50IiksWmJhPWkoKCk9PndgCiAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e2F3YWl0IG5ldyBQcm9taXNlKHQ9PnNldFRpbWVvdXQodCw1MDApKTtsZXQgZT1XSmEocyk7ZS5wcm9ncmFtbWF0aWMmJkdKYShzLGUucHJvZ3JhbW1hdGljKSxlLmV4cG9ydERlbW8mJktKYShzLGUuZXhwb3J0RGVtbyksWUphKHMsZS5tZWV0aW5nLGUucmVjaXBlKSxaSmEoZSksY29uc29sZS5sb2coIldZU0lXWUcgRGVtbyBpbml0aWFsaXplZCB3aXRoIGVkaXRvcnM6IixPYmplY3Qua2V5cyhlKSl9fT4KICA8c3R5bGU+CiAgICAke0pgCiAgICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMzJweDsKICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgIG1heC13aWR0aDogMTIwMHB4OwogICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICB9CiAgICAgIAogICAgICBkZWVzLXBhbmVsIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAzMnB4OwogICAgICB9CiAgICAgIAogICAgICAucGFuZWwtZGVzY3JpcHRpb24gewogICAgICAgIG1hcmdpbi10b3A6IDA7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgICAgICBjb2xvcjogIzY2NjsKICAgICAgICBmb250LXNpemU6IDE1cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgfQogICAgICAKICAgICAgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewogICAgICAgIC5wYW5lbC1kZXNjcmlwdGlvbiB7CiAgICAgICAgICBjb2xvcjogIzk5OTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC5mZWF0dXJlLWdyaWQgewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyMDBweCwgMWZyKSk7CiAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgIH0KCiAgICAgIC5mZWF0dXJlLWl0ZW0gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBjb2xvcjogIzU1NTsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIH0KCiAgICAgIC5mZWF0dXJlLWljb24gewogICAgICAgIGNvbG9yOiAjMDA2NmNjOwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIH0KCiAgICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKICAgICAgICAuZmVhdHVyZS1pdGVtIHsKICAgICAgICAgIGNvbG9yOiAjYWFhOwogICAgICAgIH0KICAgICAgICAuZmVhdHVyZS1pY29uIHsKICAgICAgICAgIGNvbG9yOiAjNGQ5NGZmOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLnNob3J0Y3V0cy1ib3ggewogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMTAyLCAyMDQsIDAuMDUpOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMTAyLCAyMDQsIDAuMik7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgbWFyZ2luLXRvcDogMTZweDsKICAgICAgfQoKICAgICAgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewogICAgICAgIC5zaG9ydGN1dHMtYm94IHsKICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoNzcsIDE0OCwgMjU1LCAwLjEpOwogICAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDc3LCAxNDgsIDI1NSwgMC4zKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC5zaG9ydGN1dHMtdGl0bGUgewogICAgICAgIG1hcmdpbjogMCAwIDEycHggMDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogIzAwNjZjYzsKICAgICAgfQoKICAgICAgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewogICAgICAgIC5zaG9ydGN1dHMtdGl0bGUgewogICAgICAgICAgY29sb3I6ICM0ZDk0ZmY7CiAgICAgICAgfQogICAgICB9CgogICAgICAuc2hvcnRjdXRzLWdyaWQgewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMTgwcHgsIDFmcikpOwogICAgICAgIGdhcDogOHB4OwogICAgICB9CgogICAgICAuc2hvcnRjdXQtaXRlbSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBjb2xvcjogIzU1NTsKICAgICAgfQoKICAgICAgLnNob3J0Y3V0LWtleSB7CiAgICAgICAgYmFja2dyb3VuZDogI2YwZjBmMDsKICAgICAgICBwYWRkaW5nOiAycHggNnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogIzMzMzsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CgogICAgICBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7CiAgICAgICAgLnNob3J0Y3V0LWl0ZW0gewogICAgICAgICAgY29sb3I6ICNiYmI7CiAgICAgICAgfQogICAgICAgIC5zaG9ydGN1dC1rZXkgewogICAgICAgICAgYmFja2dyb3VuZDogIzMzMzsKICAgICAgICAgIGNvbG9yOiAjZGRkOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLm91dHB1dC1ncmlkIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMzIwcHgsIDFmcikpOwogICAgICAgIGdhcDogMjRweDsKICAgICAgICBtYXJnaW4tdG9wOiAyNHB4OwogICAgICB9CgogICAgICAub3V0cHV0LWNhcmQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDEycHg7CiAgICAgIH0KCiAgICAgIC5vdXRwdXQtYWN0aW9ucyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICB9CgogICAgICAub3V0cHV0LXByZXZpZXcgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgxNSwgMjMsIDQyLCAwLjA0KTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LCAjMGYxNzJhKTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDE1LCAyMywgNDIsIDAuMSk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogICAgICAgIGZvbnQtZmFtaWx5OiAnR2Vpc3QgTW9ubycsICdGaXJhIENvZGUnLCBtb25vc3BhY2U7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIG1heC1oZWlnaHQ6IDI4MHB4OwogICAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICB9CgogICAgICA6aG9zdChbdGhlbWU9J2RhcmsnXSkgLm91dHB1dC1wcmV2aWV3IHsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1MCwgMjUwLCAyNTAsIDAuMDYpOwogICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgyNTAsIDI1MCwgMjUwLCAwLjE1KTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LCAjZjRmNGY1KTsKICAgICAgfQoKICAgICAgLm91dHB1dC1wcmV2aWV3LnZpc2libGUgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsKICAgICAgICAub3V0cHV0LWdyaWQgewogICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CiAgICAgICAgfQogICAgICB9CiAgICAgIAogICAgICAudGlwcy1ib3ggewogICAgICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICAgICAgcGFkZGluZzogMTJweDsKICAgICAgICBiYWNrZ3JvdW5kOiAjZjBmOGZmOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgfQogICAgICAKICAgICAgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewogICAgICAgIC50aXBzLWJveCB7CiAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDc3LCAxNDgsIDI1NSwgMC4xKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgCiAgICAgIC50aXBzLWJveCBzdHJvbmcgewogICAgICAgIGNvbG9yOiAjMDA2NmNjOwogICAgICB9CiAgICAgIAogICAgICBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7CiAgICAgICAgLnRpcHMtYm94IHN0cm9uZyB7CiAgICAgICAgICBjb2xvcjogIzRkOTRmZjsKICAgICAgICB9CiAgICAgIH0KICAgICAgCiAgICAgIC50aXBzLWxpc3QgewogICAgICAgIG1hcmdpbjogOHB4IDAgMCAwOwogICAgICAgIHBhZGRpbmctbGVmdDogMjRweDsKICAgICAgfQogICAgICAKICAgICAgLnRpcHMtbGlzdCBsaSB7CiAgICAgICAgbWFyZ2luOiA0cHggMDsKICAgICAgfQogICAgICAKICAgICAgLmJ1dHRvbi1ncm91cCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgbWFyZ2luLXRvcDogMTZweDsKICAgICAgfQogICAgICAKICAgICAgLmRlbW8tYnV0dG9uIHsKICAgICAgICBwYWRkaW5nOiA4cHggMTZweDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBiYWNrZ3JvdW5kOiAjZjhmOGY4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTsKICAgICAgfQogICAgICAKICAgICAgLmRlbW8tYnV0dG9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAjZThlOGU4OwogICAgICAgIGJvcmRlci1jb2xvcjogI2NjYzsKICAgICAgfQogICAgICAKICAgICAgLmRlbW8tYnV0dG9uOmFjdGl2ZSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDFweCk7CiAgICAgIH0KICAgICAgCiAgICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKICAgICAgICAuZGVtby1idXR0b24gewogICAgICAgICAgYmFja2dyb3VuZDogIzMzMzsKICAgICAgICAgIGJvcmRlci1jb2xvcjogIzU1NTsKICAgICAgICAgIGNvbG9yOiAjZGRkOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuZGVtby1idXR0b246aG92ZXIgewogICAgICAgICAgYmFja2dyb3VuZDogIzQ0NDsKICAgICAgICAgIGJvcmRlci1jb2xvcjogIzY2NjsKICAgICAgICB9CiAgICAgIH0KICAgICAgCiAgICAgIC5leHBvcnQtaW5mby1ncmlkIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjUwcHgsIDFmcikpOwogICAgICAgIGdhcDogMTZweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgICB9CiAgICAgIAogICAgICAuZXhwb3J0LWluZm8tY2FyZCB7CiAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgIH0KICAgICAgCiAgICAgIC5leHBvcnQtaW5mby1jYXJkLmJsb2NrcyB7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAxMDIsIDIwNCwgMC4xKTsKICAgICAgfQogICAgICAKICAgICAgLmV4cG9ydC1pbmZvLWNhcmQuaHRtbCB7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSg3NiwgMTc1LCA4MCwgMC4xKTsKICAgICAgfQogICAgICAKICAgICAgLmV4cG9ydC1pbmZvLWNhcmQubWFya2Rvd24gewogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAxNTIsIDAsIDAuMSk7CiAgICAgIH0KICAgICAgCiAgICAgIC5leHBvcnQtaW5mby1jYXJkLnN0YXRlIHsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDE1NiwgMzksIDE3NiwgMC4xKTsKICAgICAgfQogICAgICAKICAgICAgLmV4cG9ydC1pbmZvLWNhcmQgc3Ryb25nIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgIH0KICAgICAgCiAgICAgIC5leHBvcnQtaW5mby1jYXJkLmJsb2NrcyBzdHJvbmcgewogICAgICAgIGNvbG9yOiAjMDA2NmNjOwogICAgICB9CiAgICAgIAogICAgICAuZXhwb3J0LWluZm8tY2FyZC5odG1sIHN0cm9uZyB7CiAgICAgICAgY29sb3I6ICM0Q0FGNTA7CiAgICAgIH0KICAgICAgCiAgICAgIC5leHBvcnQtaW5mby1jYXJkLm1hcmtkb3duIHN0cm9uZyB7CiAgICAgICAgY29sb3I6ICNGRjk4MDA7CiAgICAgIH0KICAgICAgCiAgICAgIC5leHBvcnQtaW5mby1jYXJkLnN0YXRlIHN0cm9uZyB7CiAgICAgICAgY29sb3I6ICM5QzI3QjA7CiAgICAgIH0KICAgICAgCiAgICAgIC5leHBvcnQtaW5mby1jYXJkIHAgewogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTsKICAgICAgfQogICAgYH0KICA8L3N0eWxlPgogIAogICAgPGRpdiBjbGFzcz0iZGVtby1jb250YWluZXIiPgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiMS4gXHV7MUY2ODB9IE1vZGVybiBXWVNJV1lHIEVkaXRvciJ9PgogICAgICAgIDxwIGNsYXNzPSJwYW5lbC1kZXNjcmlwdGlvbiI+CiAgICAgICAgICBBIHBvd2VyZnVsIGJsb2NrLWJhc2VkIGVkaXRvciB3aXRoIHNsYXNoIGNvbW1hbmRzLCBrZXlib2FyZCBzaG9ydGN1dHMsIGFuZCBtdWx0aXBsZSBvdXRwdXQgZm9ybWF0cy4gCiAgICAgICAgICBQZXJmZWN0IGZvciBjb250ZW50IGNyZWF0aW9uLCBibG9nIHBvc3RzLCBkb2N1bWVudGF0aW9uLCBhbmQgbW9yZS4KICAgICAgICA8L3A+CiAgICAgICAgCiAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZS1ncmlkIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmUtaXRlbSI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmZWF0dXJlLWljb24iPuKckzwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4+U2xhc2ggY29tbWFuZHMgKC8pPC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlLWl0ZW0iPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmVhdHVyZS1pY29uIj7inJM8L3NwYW4+CiAgICAgICAgICAgIDxzcGFuPktleWJvYXJkIHNob3J0Y3V0czwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZS1pdGVtIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZlYXR1cmUtaWNvbiI+4pyTPC9zcGFuPgogICAgICAgICAgICA8c3Bhbj5CbG9jay1iYXNlZCBlZGl0aW5nPC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlLWl0ZW0iPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmVhdHVyZS1pY29uIj7inJM8L3NwYW4+CiAgICAgICAgICAgIDxzcGFuPkRyYWcgJiBkcm9wIHJlb3JkZXJpbmc8L3NwYW4+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmUtaXRlbSI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmZWF0dXJlLWljb24iPuKckzwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4+SFRNTCAmIE1hcmtkb3duIG91dHB1dDwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZS1pdGVtIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZlYXR1cmUtaWNvbiI+4pyTPC9zcGFuPgogICAgICAgICAgICA8c3Bhbj5EYXJrIG1vZGUgc3VwcG9ydDwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZS1pdGVtIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZlYXR1cmUtaWNvbiI+4pyTPC9zcGFuPgogICAgICAgICAgICA8c3Bhbj5Nb2JpbGUgcmVzcG9uc2l2ZTwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIAogICAgICAgIDxkZWVzLWlucHV0LXd5c2l3eWcgCiAgICAgICAgICBpZD0iZWRpdG9yLWJhc2ljIgogICAgICAgICAgbGFiZWw9IlJpY2ggVGV4dCBFZGl0b3IiIAogICAgICAgICAgZGVzY3JpcHRpb249IlN0YXJ0IHR5cGluZyBvciB1c2UgJy8nIHRvIGluc2VydCBkaWZmZXJlbnQgYmxvY2sgdHlwZXMiCiAgICAgICAgICBvdXRwdXRGb3JtYXQ9Imh0bWwiCiAgICAgICAgPjwvZGVlcy1pbnB1dC13eXNpd3lnPgoKICAgICAgICA8ZGl2IGNsYXNzPSJzaG9ydGN1dHMtYm94Ij4KICAgICAgICAgIDxoNCBjbGFzcz0ic2hvcnRjdXRzLXRpdGxlIj7ijKjvuI8gS2V5Ym9hcmQgU2hvcnRjdXRzPC9oND4KICAgICAgICAgIDxkaXYgY2xhc3M9InNob3J0Y3V0cy1ncmlkIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2hvcnRjdXQtaXRlbSI+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNob3J0Y3V0LWtleSI+Lzwvc3Bhbj4gU2xhc2ggY29tbWFuZHMKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNob3J0Y3V0LWl0ZW0iPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzaG9ydGN1dC1rZXkiPiM8L3NwYW4+IEhlYWRpbmcgMQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2hvcnRjdXQtaXRlbSI+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNob3J0Y3V0LWtleSI+IyM8L3NwYW4+IEhlYWRpbmcgMgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2hvcnRjdXQtaXRlbSI+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNob3J0Y3V0LWtleSI+IyMjPC9zcGFuPiBIZWFkaW5nIDMKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNob3J0Y3V0LWl0ZW0iPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzaG9ydGN1dC1rZXkiPj48L3NwYW4+IFF1b3RlCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaG9ydGN1dC1pdGVtIj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2hvcnRjdXQta2V5Ij5cYFxgXGA8L3NwYW4+IENvZGUgYmxvY2sKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNob3J0Y3V0LWl0ZW0iPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzaG9ydGN1dC1rZXkiPio8L3NwYW4+IG9yIDxzcGFuIGNsYXNzPSJzaG9ydGN1dC1rZXkiPi08L3NwYW4+IEJ1bGxldCBsaXN0CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaG9ydGN1dC1pdGVtIj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2hvcnRjdXQta2V5Ij4xLjwvc3Bhbj4gTnVtYmVyZWQgbGlzdAogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2hvcnRjdXQtaXRlbSI+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNob3J0Y3V0LWtleSI+LS0tPC9zcGFuPiBEaXZpZGVyCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyIyLiBcdXsxRjRERH0gQmxvZyBQb3N0IEV4YW1wbGUifT4KICAgICAgICA8cCBjbGFzcz0icGFuZWwtZGVzY3JpcHRpb24iPgogICAgICAgICAgUGVyZmVjdCBmb3IgY3JlYXRpbmcgcmljaCBjb250ZW50IHdpdGggbXVsdGlwbGUgYmxvY2sgdHlwZXMuIAogICAgICAgICAgVGhlIGVkaXRvciBwcmVzZXJ2ZXMgZm9ybWF0dGluZyBhbmQgcHJvdmlkZXMgYSBjbGVhbiBlZGl0aW5nIGV4cGVyaWVuY2UuCiAgICAgICAgPC9wPgogICAgICAgIAogICAgICAgIDxkZWVzLWlucHV0LXd5c2l3eWcgCiAgICAgICAgICBpZD0iZWRpdG9yLWFydGljbGUiCiAgICAgICAgICBsYWJlbD0iQmxvZyBQb3N0IENvbnRlbnQiIAogICAgICAgICAgZGVzY3JpcHRpb249IldyaXRlIHlvdXIgYXJ0aWNsZSB1c2luZyB2YXJpb3VzIGZvcm1hdHRpbmcgb3B0aW9ucyIKICAgICAgICAgIG91dHB1dEZvcm1hdD0iaHRtbCIKICAgICAgICA+PC9kZWVzLWlucHV0LXd5c2l3eWc+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyIzLiBcdXsxRjUwMH0gRHJhZyAmIERyb3AgUmVvcmRlcmluZyJ9PgogICAgICAgIDxwIGNsYXNzPSJwYW5lbC1kZXNjcmlwdGlvbiI+CiAgICAgICAgICBFYXNpbHkgcmVhcnJhbmdlIHlvdXIgY29udGVudCBibG9ja3MgYnkgZHJhZ2dpbmcgdGhlbS4gCiAgICAgICAgICBIb3ZlciBvdmVyIGFueSBibG9jayB0byByZXZlYWwgdGhlIGRyYWcgaGFuZGxlIG9uIHRoZSBsZWZ0IHNpZGUuCiAgICAgICAgPC9wPgogICAgICAgIAogICAgICAgIDxkZWVzLWlucHV0LXd5c2l3eWcgCiAgICAgICAgICBpZD0iZWRpdG9yLWRyYWdkcm9wIgogICAgICAgICAgbGFiZWw9IkRyYWcgJiBEcm9wIERlbW8iIAogICAgICAgICAgZGVzY3JpcHRpb249IlRyeSBkcmFnZ2luZyBibG9ja3MgdG8gcmVvcmRlciB0aGVtIC0gaG92ZXIgdG8gc2VlIGRyYWcgaGFuZGxlcyIKICAgICAgICA+PC9kZWVzLWlucHV0LXd5c2l3eWc+CiAgICAgICAgCiAgICAgICAgPGRpdiBjbGFzcz0idGlwcy1ib3giPgogICAgICAgICAgPHN0cm9uZz7wn5KhIFRpcHM6PC9zdHJvbmc+CiAgICAgICAgICA8dWwgY2xhc3M9InRpcHMtbGlzdCI+CiAgICAgICAgICAgIDxsaT5Ib3ZlciBvdmVyIGFueSBibG9jayB0byBzZWUgdGhlIGRyYWcgaGFuZGxlICjii67ii64pIG9uIHRoZSBsZWZ0PC9saT4KICAgICAgICAgICAgPGxpPkNsaWNrIGFuZCBob2xkIHRoZSBkcmFnIGhhbmRsZSB0byBzdGFydCBkcmFnZ2luZzwvbGk+CiAgICAgICAgICAgIDxsaT5CbHVlIGluZGljYXRvcnMgc2hvdyB3aGVyZSB0aGUgYmxvY2sgd2lsbCBiZSBkcm9wcGVkPC9saT4KICAgICAgICAgICAgPGxpPkRpdmlkZXIgYmxvY2tzIGNhbm5vdCBiZSBkcmFnZ2VkPC9saT4KICAgICAgICAgICAgPGxpPlRoZSBlZGl0b3IgbWFpbnRhaW5zIGZvY3VzIG9uIHRoZSBtb3ZlZCBibG9jayBhZnRlciBkcm9wcGluZzwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiNC4gXHV7MUY0REF9IFR1dG9yaWFsICYgRG9jdW1lbnRhdGlvbiJ9PgogICAgICAgIDxwIGNsYXNzPSJwYW5lbC1kZXNjcmlwdGlvbiI+CiAgICAgICAgICBDcmVhdGUgY29tcHJlaGVuc2l2ZSB0dXRvcmlhbHMgYW5kIGRvY3VtZW50YXRpb24gd2l0aCBjb2RlIGV4YW1wbGVzLCBsaXN0cywgYW5kIHN0cnVjdHVyZWQgY29udGVudC4KICAgICAgICA8L3A+CiAgICAgICAgCiAgICAgICAgPGRlZXMtaW5wdXQtd3lzaXd5ZyAKICAgICAgICAgIGlkPSJlZGl0b3ItdHV0b3JpYWwiCiAgICAgICAgICBsYWJlbD0iR2l0IFR1dG9yaWFsIiAKICAgICAgICAgIGRlc2NyaXB0aW9uPSJTdGVwLWJ5LXN0ZXAgZ3VpZGUgd2l0aCBjb21tYW5kcyBhbmQgZXhwbGFuYXRpb25zIgogICAgICAgICAgb3V0cHV0Rm9ybWF0PSJtYXJrZG93biIKICAgICAgICAgIHZhbHVlPSIjIEdpdCBUdXRvcmlhbCBmb3IgQmVnaW5uZXJzCgpHaXQgaXMgYSBkaXN0cmlidXRlZCB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtIHRoYXQgaGVscHMgeW91IHRyYWNrIGNoYW5nZXMgaW4geW91ciBjb2RlIG92ZXIgdGltZS4gVGhpcyB0dXRvcmlhbCB3aWxsIGd1aWRlIHlvdSB0aHJvdWdoIHRoZSBiYXNpY3MuCgojIyBQcmVyZXF1aXNpdGVzCgpCZWZvcmUgc3RhcnRpbmcsIGVuc3VyZSB5b3UgaGF2ZToKCi0gR2l0IGluc3RhbGxlZCBvbiB5b3VyIHN5c3RlbQotIEEgdGV4dCBlZGl0b3Igb3IgSURFCi0gQmFzaWMgY29tbWFuZCBsaW5lIGtub3dsZWRnZQoKIyMgR2V0dGluZyBTdGFydGVkCgojIyMgMS4gQ29uZmlndXJlIEdpdAoKRmlyc3QsIHNldCB1cCB5b3VyIGlkZW50aXR5OgoKXGBcYFxgYmFzaApnaXQgY29uZmlnIC0tZ2xvYmFsIHVzZXIubmFtZSAmcXVvdDtZb3VyIE5hbWUmcXVvdDsKZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLmVtYWlsICZxdW90O3lvdXIuZW1haWxAZXhhbXBsZS5jb20mcXVvdDsKXGBcYFxgCgojIyMgMi4gSW5pdGlhbGl6ZSBhIFJlcG9zaXRvcnkKCkNyZWF0ZSBhIG5ldyBHaXQgcmVwb3NpdG9yeToKClxgXGBcYGJhc2gKbWtkaXIgbXktcHJvamVjdApjZCBteS1wcm9qZWN0CmdpdCBpbml0ClxgXGBcYAoKIyMjIDMuIEJhc2ljIEdpdCBXb3JrZmxvdwoKIyMjIyBBZGRpbmcgRmlsZXMKCkNyZWF0ZSBhIGZpbGUgYW5kIGFkZCBpdCB0byBzdGFnaW5nOgoKXGBcYFxgYmFzaAplY2hvICZxdW90OyMgTXkgUHJvamVjdCZxdW90OyA+IFJFQURNRS5tZApnaXQgYWRkIFJFQURNRS5tZApcYFxgXGAKCiMjIyMgQ29tbWl0dGluZyBDaGFuZ2VzCgpcYFxgXGBiYXNoCmdpdCBjb21taXQgLW0gJnF1b3Q7SW5pdGlhbCBjb21taXQmcXVvdDsKXGBcYFxgCgo+ICoqQmVzdCBQcmFjdGljZToqKiBXcml0ZSBjbGVhciwgZGVzY3JpcHRpdmUgY29tbWl0IG1lc3NhZ2VzIHRoYXQgZXhwbGFpbiB3aGF0IGNoYW5nZXMgd2VyZSBtYWRlIGFuZCB3aHkuCgojIyMgNC4gV29ya2luZyB3aXRoIEJyYW5jaGVzCgpCcmFuY2hlcyBhbGxvdyB5b3UgdG8gd29yayBvbiBmZWF0dXJlcyBpbmRlcGVuZGVudGx5OgoKXGBcYFxgYmFzaAojIENyZWF0ZSBhbmQgc3dpdGNoIHRvIGEgbmV3IGJyYW5jaApnaXQgY2hlY2tvdXQgLWIgZmVhdHVyZS1icmFuY2gKCiMgTWFrZSBjaGFuZ2VzIGFuZCBjb21taXQKZ2l0IGFkZCAuCmdpdCBjb21taXQgLW0gJnF1b3Q7QWRkIG5ldyBmZWF0dXJlJnF1b3Q7CgojIFN3aXRjaCBiYWNrIHRvIG1haW4KZ2l0IGNoZWNrb3V0IG1haW4KCiMgTWVyZ2UgdGhlIGZlYXR1cmUKZ2l0IG1lcmdlIGZlYXR1cmUtYnJhbmNoClxgXGBcYAoKLS0tCgojIyBDb21tb24gQ29tbWFuZHMgUmVmZXJlbmNlCgp8IENvbW1hbmQgfCBEZXNjcmlwdGlvbiB8CnwtLS0tLS0tLS18LS0tLS0tLS0tLS0tLXwKfCBcYGdpdCBzdGF0dXNcYCB8IENoZWNrIHJlcG9zaXRvcnkgc3RhdHVzIHwKfCBcYGdpdCBsb2dcYCB8IFZpZXcgY29tbWl0IGhpc3RvcnkgfAp8IFxgZ2l0IGRpZmZcYCB8IFNob3cgY2hhbmdlcyB8CnwgXGBnaXQgcHVsbFxgIHwgRmV0Y2ggYW5kIG1lcmdlIGNoYW5nZXMgfAp8IFxgZ2l0IHB1c2hcYCB8IFVwbG9hZCBjaGFuZ2VzIHRvIHJlbW90ZSB8CgojIyBOZXh0IFN0ZXBzCgoxLiBMZWFybiBhYm91dCByZW1vdGUgcmVwb3NpdG9yaWVzCjIuIEV4cGxvcmUgYWR2YW5jZWQgR2l0IGZlYXR1cmVzCjMuIFByYWN0aWNlIHdpdGggcmVhbCBwcm9qZWN0cwo0LiBDb250cmlidXRlIHRvIG9wZW4gc291cmNlCgoqKkhhcHB5IGNvZGluZyEqKiDwn5qAIgogICAgICAgID48L2RlZXMtaW5wdXQtd3lzaXd5Zz4KICAgICAgPC9kZWVzLXBhbmVsPgoKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjUuIFx1ezFGNTA0fSBPdXRwdXQgRm9ybWF0cyJ9PgogICAgICAgIDxwIGNsYXNzPSJwYW5lbC1kZXNjcmlwdGlvbiI+CiAgICAgICAgICBDaG9vc2UgYmV0d2VlbiBIVE1MIGFuZCBNYXJrZG93biBvdXRwdXQgZm9ybWF0cyBkZXBlbmRpbmcgb24geW91ciBuZWVkcy4gCiAgICAgICAgICBQZXJmZWN0IGZvciBzdGF0aWMgc2l0ZSBnZW5lcmF0b3JzLCBkb2N1bWVudGF0aW9uIHN5c3RlbXMsIG9yIGFueSBjb250ZW50IG1hbmFnZW1lbnQgd29ya2Zsb3cuCiAgICAgICAgPC9wPgogICAgICAgIAogICAgICAgIDxkaXYgY2xhc3M9Im91dHB1dC1ncmlkIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im91dHB1dC1jYXJkIj4KICAgICAgICAgICAgPGRlZXMtaW5wdXQtd3lzaXd5ZyAKICAgICAgICAgICAgICBpZD0iZWRpdG9yLW1lZXRpbmciCiAgICAgICAgICAgICAgbGFiZWw9Ik1lZXRpbmcgTm90ZXMiIAogICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSJTdHJ1Y3R1cmVkIG1lZXRpbmcgZG9jdW1lbnRhdGlvbiIKICAgICAgICAgICAgICBvdXRwdXRGb3JtYXQ9Imh0bWwiCiAgICAgICAgICAgICAgdmFsdWU9IjxoMj5RNCBQbGFubmluZyBNZWV0aW5nPC9oMj48cD48c3Ryb25nPkRhdGU6PC9zdHJvbmc+IERlY2VtYmVyIDE1LCAyMDI0PGJyPjxzdHJvbmc+QXR0ZW5kZWVzOjwvc3Ryb25nPiBQcm9kdWN0IFRlYW0sIEVuZ2luZWVyaW5nLCBEZXNpZ248L3A+PGgzPkFnZW5kYSBJdGVtczwvaDM+PG9sPjxsaT5SZXZpZXcgUTMgYWNoaWV2ZW1lbnRzPC9saT48bGk+U2V0IFE0IG9iamVjdGl2ZXM8L2xpPjxsaT5SZXNvdXJjZSBhbGxvY2F0aW9uPC9saT48bGk+VGltZWxpbmUgZGlzY3Vzc2lvbjwvbGk+PC9vbD48aDM+S2V5IERlY2lzaW9uczwvaDM+PHVsPjxsaT5MYXVuY2ggbmV3IGRhc2hib2FyZCBmZWF0dXJlIGJ5IGVuZCBvZiBKYW51YXJ5PC9saT48bGk+SW5jcmVhc2UgZW5naW5lZXJpbmcgdGVhbSBieSAyIGRldmVsb3BlcnM8L2xpPjxsaT5JbXBsZW1lbnQgd2Vla2x5IGRlc2lnbiByZXZpZXdzPC9saT48L3VsPjxibG9ja3F1b3RlPiZxdW90O0ZvY3VzIG9uIHVzZXIgZXhwZXJpZW5jZSBpbXByb3ZlbWVudHMgYmFzZWQgb24gUTMgZmVlZGJhY2smcXVvdDsgLSBQcm9kdWN0IE1hbmFnZXI8L2Jsb2NrcXVvdGU+PGgzPkFjdGlvbiBJdGVtczwvaDM+PHVsPjxsaT5TYXJhaDogQ3JlYXRlIGRldGFpbGVkIHByb2plY3QgdGltZWxpbmU8L2xpPjxsaT5NaWtlOiBEcmFmdCB0ZWNobmljYWwgcmVxdWlyZW1lbnRzPC9saT48bGk+TGlzYTogU2NoZWR1bGUgdXNlciByZXNlYXJjaCBzZXNzaW9uczwvbGk+PC91bD48aHI+PHA+TmV4dCBtZWV0aW5nOiBKYW51YXJ5IDUsIDIwMjU8L3A+IgogICAgICAgICAgICA+PC9kZWVzLWlucHV0LXd5c2l3eWc+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im91dHB1dC1hY3Rpb25zIj4KICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJidG4tc2hvdy1odG1sLW91dHB1dCIgY2xhc3M9ImRlbW8tYnV0dG9uIj5TaG93IEhUTUwgT3V0cHV0PC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cHJlIGlkPSJvdXRwdXQtcHJldmlldy1odG1sIiBjbGFzcz0ib3V0cHV0LXByZXZpZXciIGFyaWEtbGl2ZT0icG9saXRlIj48L3ByZT4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgCiAgICAgICAgICA8ZGl2IGNsYXNzPSJvdXRwdXQtY2FyZCI+CiAgICAgICAgICAgIDxkZWVzLWlucHV0LXd5c2l3eWcgCiAgICAgICAgICAgICAgaWQ9ImVkaXRvci1yZWNpcGUiCiAgICAgICAgICAgICAgbGFiZWw9IlJlY2lwZSBCbG9nIFBvc3QiIAogICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSJGb29kIGJsb2cgd2l0aCBtaXhlZCBjb250ZW50IgogICAgICAgICAgICAgIG91dHB1dEZvcm1hdD0ibWFya2Rvd24iCiAgICAgICAgICAgICAgdmFsdWU9IiMgVWx0aW1hdGUgQ2hvY29sYXRlIENoaXAgQ29va2llcwoKVGhlcmUncyBub3RoaW5nIHF1aXRlIGxpa2UgdGhlIHNtZWxsIG9mIGZyZXNobHkgYmFrZWQgY2hvY29sYXRlIGNoaXAgY29va2llcy4gVGhpcyByZWNpcGUgaGFzIGJlZW4gcGVyZmVjdGVkIG92ZXIgeWVhcnMgb2YgdGVzdGluZyEKCiMjIEluZ3JlZGllbnRzCgotIDLCvCBjdXBzIGFsbC1wdXJwb3NlIGZsb3VyCi0gMSB0c3AgYmFraW5nIHNvZGEKLSAxIHRzcCBzYWx0Ci0gMSBjdXAgYnV0dGVyLCBzb2Z0ZW5lZAotIMK+IGN1cCBncmFudWxhdGVkIHN1Z2FyCi0gwr4gY3VwIHBhY2tlZCBicm93biBzdWdhcgotIDIgbGFyZ2UgZWdncwotIDIgdHNwIHZhbmlsbGEgZXh0cmFjdAotIDIgY3VwcyBjaG9jb2xhdGUgY2hpcHMKCiMjIEluc3RydWN0aW9ucwoKIyMjIFN0ZXAgMTogUHJlcGFyYXRpb24KClByZWhlYXQgeW91ciBvdmVuIHRvICoqMzc1wrBGICgxOTDCsEMpKiouIFRoaXMgdGVtcGVyYXR1cmUgaXMgY3J1Y2lhbCBmb3IgYWNoaWV2aW5nIHRoZSBwZXJmZWN0IHRleHR1cmUuCgojIyMgU3RlcCAyOiBNaXggRHJ5IEluZ3JlZGllbnRzCgpJbiBhIG1lZGl1bSBib3dsLCB3aGlzayB0b2dldGhlcjoKCjEuIEZsb3VyCjIuIEJha2luZyBzb2RhCjMuIFNhbHQKCiMjIyBTdGVwIDM6IENyZWFtIEJ1dHRlciBhbmQgU3VnYXJzCgpcYFxgXGAKQ3JlYW0gYnV0dGVyIGFuZCBzdWdhcnMgZm9yIDMtNCBtaW51dGVzCnVudGlsIGxpZ2h0IGFuZCBmbHVmZnkKXGBcYFxgCgo+ICoqUHJvIHRpcDoqKiBSb29tIHRlbXBlcmF0dXJlIGluZ3JlZGllbnRzIG1peCBiZXR0ZXIgYW5kIGNyZWF0ZSBhIG1vcmUgdW5pZm9ybSBkb3VnaC4KCiMjIyBTdGVwIDQ6IEFkZCBXZXQgSW5ncmVkaWVudHMKCkJlYXQgaW4gZWdncyBvbmUgYXQgYSB0aW1lLCB0aGVuIGFkZCB2YW5pbGxhIGV4dHJhY3QuCgojIyMgU3RlcCA1OiBDb21iaW5lIGFuZCBCYWtlCgpHcmFkdWFsbHkgYmxlbmQgaW4gZmxvdXIgbWl4dHVyZSwgdGhlbiBzdGlyIGluIGNob2NvbGF0ZSBjaGlwcy4gRHJvcCByb3VuZGVkIHRhYmxlc3Bvb25zIG9udG8gdW5ncmVhc2VkIGNvb2tpZSBzaGVldHMuCgotLS0KCioqQmFraW5nIHRpbWU6KiogOS0xMSBtaW51dGVzIG9yIHVudGlsIGdvbGRlbiBicm93bgoKKipZaWVsZDoqKiBBYm91dCA1IGRvemVuIGNvb2tpZXMiCiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtd3lzaXd5Zz4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ib3V0cHV0LWFjdGlvbnMiPgogICAgICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1zaG93LW1hcmtkb3duLW91dHB1dCIgY2xhc3M9ImRlbW8tYnV0dG9uIj5TaG93IE1hcmtkb3duIE91dHB1dDwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHByZSBpZD0ib3V0cHV0LXByZXZpZXctbWFya2Rvd24iIGNsYXNzPSJvdXRwdXQtcHJldmlldyIgYXJpYS1saXZlPSJwb2xpdGUiPjwvcHJlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyI2LiBcdXsxRjNBOH0gQWR2YW5jZWQgRWRpdGluZyJ9PgogICAgICAgIDxwIGNsYXNzPSJwYW5lbC1kZXNjcmlwdGlvbiI+CiAgICAgICAgICBDcmVhdGUgY29tcGxleCBkb2N1bWVudHMgd2l0aCBtaXhlZCBjb250ZW50IHR5cGVzLiBUaGUgZWRpdG9yIGhhbmRsZXMgYWxsIGZvcm1hdHRpbmcgc2VhbWxlc3NseS4KICAgICAgICA8L3A+CiAgICAgICAgCiAgICAgICAgPGRlZXMtaW5wdXQtd3lzaXd5ZyAKICAgICAgICAgIGlkPSJlZGl0b3ItdGVjaG5pY2FsIgogICAgICAgICAgbGFiZWw9IlRlY2huaWNhbCBEb2N1bWVudGF0aW9uIiAKICAgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgdGVjaG5pY2FsIGRvY3Mgd2l0aCBjb2RlIGV4YW1wbGVzIGFuZCBzdHJ1Y3R1cmVkIGNvbnRlbnQiCiAgICAgICAgICB2YWx1ZT0iPGgxPkFQSSBEb2N1bWVudGF0aW9uPC9oMT48cD5XZWxjb21lIHRvIG91ciBBUEkgZG9jdW1lbnRhdGlvbi4gQmVsb3cgeW91J2xsIGZpbmQgZXhhbXBsZXMgb2YgaG93IHRvIHVzZSBvdXIgZW5kcG9pbnRzLjwvcD48aDI+QXV0aGVudGljYXRpb248L2gyPjxwPkFsbCBBUEkgcmVxdWVzdHMgcmVxdWlyZSBhdXRoZW50aWNhdGlvbiB1c2luZyBhbiBBUEkga2V5OjwvcD48cHJlPjxjb2RlPkF1dGhvcml6YXRpb246IEJlYXJlciBZT1VSX0FQSV9LRVk8L2NvZGU+PC9wcmU+PGgyPkVuZHBvaW50czwvaDI+PGgzPkdFVCAvdXNlcnM8L2gzPjxwPlJldHJpZXZlIGEgbGlzdCBvZiB1c2VycyBmcm9tIHRoZSBzeXN0ZW0uPC9wPjxwcmU+PGNvZGU+Y3VybCAtWCBHRVQgaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vdXNlcnMgXFwKICAtSCAmcXVvdDtBdXRob3JpemF0aW9uOiBCZWFyZXIgWU9VUl9BUElfS0VZJnF1b3Q7PC9jb2RlPjwvcHJlPjxibG9ja3F1b3RlPk5vdGU6IFJhdGUgbGltaXRpbmcgYXBwbGllcyB0byBhbGwgZW5kcG9pbnRzLiBZb3UgY2FuIG1ha2UgdXAgdG8gMTAwIHJlcXVlc3RzIHBlciBtaW51dGUuPC9ibG9ja3F1b3RlPjxoMz5QT1NUIC91c2VyczwvaDM+PHA+Q3JlYXRlIGEgbmV3IHVzZXIgaW4gdGhlIHN5c3RlbS48L3A+PHByZT48Y29kZT57CiAgJnF1b3Q7bmFtZSZxdW90OzogJnF1b3Q7Sm9obiBEb2UmcXVvdDssCiAgJnF1b3Q7ZW1haWwmcXVvdDs6ICZxdW90O2pvaG5AZXhhbXBsZS5jb20mcXVvdDssCiAgJnF1b3Q7cm9sZSZxdW90OzogJnF1b3Q7dXNlciZxdW90Owp9PC9jb2RlPjwvcHJlPjxocj48cD5Gb3IgbW9yZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHJlZmVyIHRvIG91ciBjb21wbGV0ZSBkb2N1bWVudGF0aW9uLjwvcD4iCiAgICAgICAgICBvdXRwdXRGb3JtYXQ9Imh0bWwiCiAgICAgICAgPjwvZGVlcy1pbnB1dC13eXNpd3lnPgogICAgICA8L2RlZXMtcGFuZWw+CgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiNy4gXHUyNjk5XHVGRTBGIEZvcm0gSW50ZWdyYXRpb24ifT4KICAgICAgICA8cCBjbGFzcz0icGFuZWwtZGVzY3JpcHRpb24iPgogICAgICAgICAgU2VhbWxlc3NseSBpbnRlZ3JhdGVzIHdpdGggZGVlcy1mb3JtIGZvciBjb21wbGV0ZSBmb3JtIHNvbHV0aW9ucy4gCiAgICAgICAgICBBbGwgc3RhbmRhcmQgZm9ybSBmZWF0dXJlcyBsaWtlIHZhbGlkYXRpb24sIHJlcXVpcmVkIGZpZWxkcywgYW5kIGRhdGEgYmluZGluZyB3b3JrIG91dCBvZiB0aGUgYm94LgogICAgICAgIDwvcD4KICAgICAgICAKICAgICAgICA8ZGVlcy1mb3JtPgogICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dCAKICAgICAgICAgICAgbGFiZWw9IkFydGljbGUgVGl0bGUiIAogICAgICAgICAgICByZXF1aXJlZD0idHJ1ZSIKICAgICAgICAgICAgdmFsdWU9IkhvdyB0byBCdWlsZCBNb2Rlcm4gV2ViIEFwcGxpY2F0aW9ucyIKICAgICAgICAgID48L2RlZXMtaW5wdXQtdGV4dD4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtaW5wdXQtd3lzaXd5ZyAKICAgICAgICAgICAgaWQ9ImVkaXRvci1mb3JtLWludGVncmF0aW9uIgogICAgICAgICAgICBsYWJlbD0iQXJ0aWNsZSBDb250ZW50IiAKICAgICAgICAgICAgZGVzY3JpcHRpb249IldyaXRlIHlvdXIgYXJ0aWNsZSBjb250ZW50IGhlcmUiCiAgICAgICAgICAgIHJlcXVpcmVkPSJ0cnVlIgogICAgICAgICAgICBvdXRwdXRGb3JtYXQ9Im1hcmtkb3duIgogICAgICAgICAgPjwvZGVlcy1pbnB1dC13eXNpd3lnPgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1pbnB1dC10YWdzCiAgICAgICAgICAgIGxhYmVsPSJUYWdzIgogICAgICAgICAgICBkZXNjcmlwdGlvbj0iQWRkIHJlbGV2YW50IHRhZ3MgZm9yIHlvdXIgYXJ0aWNsZSIKICAgICAgICAgID48L2RlZXMtaW5wdXQtdGFncz4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kZWVzLXBhbmVsPgoKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjguIFx1ezFGOUU5fSBQcm9ncmFtbWF0aWMgQmxvY2sgQ3JlYXRpb24ifT4KICAgICAgICA8cCBjbGFzcz0icGFuZWwtZGVzY3JpcHRpb24iPgogICAgICAgICAgQ3JlYXRlIGNvbnRlbnQgcHJvZ3JhbW1hdGljYWxseSB1c2luZyB0aGUgYmxvY2sgQVBJIGZvciBkeW5hbWljIGRvY3VtZW50IGdlbmVyYXRpb24uCiAgICAgICAgPC9wPgogICAgICAgIAogICAgICAgIDxkZWVzLWlucHV0LXd5c2l3eWcKICAgICAgICAgIGlkPSJlZGl0b3ItcHJvZ3JhbW1hdGljIgogICAgICAgICAgbGFiZWw9IlByb2dyYW1tYXRpY2FsbHkgR2VuZXJhdGVkIENvbnRlbnQiCiAgICAgICAgICBkZXNjcmlwdGlvbj0iVGhpcyBjb250ZW50IHdhcyBjcmVhdGVkIHVzaW5nIHRoZSBpbXBvcnRCbG9ja3MgQVBJIgogICAgICAgID48L2RlZXMtaW5wdXQtd3lzaXd5Zz4KICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tZ3JvdXAiPgogICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLWdlbmVyYXRlLXJlcG9ydCIgY2xhc3M9ImRlbW8tYnV0dG9uIj4KICAgICAgICAgICAgR2VuZXJhdGUgUmVwb3J0CiAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgIAogICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLWdlbmVyYXRlLXJlY2lwZSIgY2xhc3M9ImRlbW8tYnV0dG9uIj4KICAgICAgICAgICAgR2VuZXJhdGUgUmVjaXBlCiAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgIAogICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLWNsZWFyLWVkaXRvciIgY2xhc3M9ImRlbW8tYnV0dG9uIj4KICAgICAgICAgICAgQ2xlYXIgRWRpdG9yCiAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgoKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjkuIFx1ezFGNEU0fSBFeHBvcnQvSW1wb3J0IEZlYXR1cmVzIn0+CiAgICAgICAgPHAgY2xhc3M9InBhbmVsLWRlc2NyaXB0aW9uIj4KICAgICAgICAgIFRoZSBXWVNJV1lHIGVkaXRvciBwcm92aWRlcyBtdWx0aXBsZSBleHBvcnQgZm9ybWF0cyBhbmQgbG9zc2xlc3Mgc2F2ZS9yZXN0b3JlIGNhcGFiaWxpdGllcyBmb3IgbWF4aW11bSBmbGV4aWJpbGl0eS4KICAgICAgICA8L3A+CiAgICAgICAgCiAgICAgICAgPGRpdiBjbGFzcz0iZXhwb3J0LWluZm8tZ3JpZCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJleHBvcnQtaW5mby1jYXJkIGJsb2NrcyI+CiAgICAgICAgICAgIDxzdHJvbmc+TG9zc2xlc3MgQmxvY2tzPC9zdHJvbmc+CiAgICAgICAgICAgIDxwPkV4cG9ydCBhbmQgaW1wb3J0IHJhdyBibG9jayBzdHJ1Y3R1cmUgZm9yIHBlcmZlY3Qgcm91bmQtdHJpcCBlZGl0aW5nPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJleHBvcnQtaW5mby1jYXJkIGh0bWwiPgogICAgICAgICAgICA8c3Ryb25nPkhUTUwgRXhwb3J0PC9zdHJvbmc+CiAgICAgICAgICAgIDxwPkdldCBjbGVhbiwgc2VtYW50aWMgSFRNTCByZWdhcmRsZXNzIG9mIG91dHB1dCBmb3JtYXQgc2V0dGluZzwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZXhwb3J0LWluZm8tY2FyZCBtYXJrZG93biI+CiAgICAgICAgICAgIDxzdHJvbmc+TWFya2Rvd24gRXhwb3J0PC9zdHJvbmc+CiAgICAgICAgICAgIDxwPkV4cG9ydCBhcyBNYXJrZG93biBmb3IgZG9jcywgUkVBRE1FcywgYW5kIHN0YXRpYyBzaXRlczwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZXhwb3J0LWluZm8tY2FyZCBzdGF0ZSI+CiAgICAgICAgICAgIDxzdHJvbmc+U3RhdGUgTWFuYWdlbWVudDwvc3Ryb25nPgogICAgICAgICAgICA8cD5TYXZlIGFuZCByZXN0b3JlIGNvbXBsZXRlIGVkaXRvciBzdGF0ZSBpbmNsdWRpbmcgc2V0dGluZ3M8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICA8ZGVlcy1pbnB1dC13eXNpd3lnCiAgICAgICAgICBpZD0iZWRpdG9yLWV4cG9ydCIKICAgICAgICAgIGxhYmVsPSJFeHBvcnQgRGVtbyBFZGl0b3IiCiAgICAgICAgICBkZXNjcmlwdGlvbj0iVHJ5IHRoZSBleHBvcnQgYnV0dG9ucyBiZWxvdyB0byBzZWUgZGlmZmVyZW50IG91dHB1dCBmb3JtYXRzIgogICAgICAgICAgdmFsdWU9IjxoMT5Tb2Z0d2FyZSBSZWxlYXNlIE5vdGVzPC9oMT48cD48c3Ryb25nPlZlcnNpb24gMi41LjA8L3N0cm9uZz4gLSBSZWxlYXNlZCBEZWNlbWJlciAxNSwgMjAyNDwvcD48aDI+8J+OiSBOZXcgRmVhdHVyZXM8L2gyPjx1bD48bGk+QWRkZWQgZGFyayBtb2RlIHN1cHBvcnQgYWNyb3NzIGFsbCBjb21wb25lbnRzPC9saT48bGk+SW1wbGVtZW50ZWQgcmVhbC10aW1lIGNvbGxhYm9yYXRpb24gZmVhdHVyZXM8L2xpPjxsaT5OZXcgZGFzaGJvYXJkIGFuYWx5dGljcyB3aWRnZXRzPC9saT48bGk+RXhwb3J0IGZ1bmN0aW9uYWxpdHkgZm9yIGFsbCByZXBvcnQgdHlwZXM8L2xpPjwvdWw+PGgyPvCfkJsgQnVnIEZpeGVzPC9oMj48dWw+PGxpPkZpeGVkIG1lbW9yeSBsZWFrIGluIGRhdGEgcHJvY2Vzc2luZyBtb2R1bGU8L2xpPjxsaT5SZXNvbHZlZCBhdXRoZW50aWNhdGlvbiB0aW1lb3V0IGlzc3VlczwvbGk+PGxpPkNvcnJlY3RlZCB0aW1lem9uZSBoYW5kbGluZyBpbiBzY2hlZHVsZWQgdGFza3M8L2xpPjwvdWw+PGgyPuKaoSBQZXJmb3JtYW5jZSBJbXByb3ZlbWVudHM8L2gyPjxibG9ja3F1b3RlPlBhZ2UgbG9hZCB0aW1lcyByZWR1Y2VkIGJ5IDQwJSB0aHJvdWdoIGxhenkgbG9hZGluZyBhbmQgY29kZSBzcGxpdHRpbmc8L2Jsb2NrcXVvdGU+PGgyPvCflKcgVGVjaG5pY2FsIERldGFpbHM8L2gyPjxwcmU+PGNvZGU+Ly8gTmV3IEFQSSBlbmRwb2ludCBmb3IgYmF0Y2ggb3BlcmF0aW9ucwpQT1NUIC9hcGkvdjIvYmF0Y2gKewogICZxdW90O29wZXJhdGlvbnMmcXVvdDs6IFsKICAgIHsgJnF1b3Q7bWV0aG9kJnF1b3Q7OiAmcXVvdDtHRVQmcXVvdDssICZxdW90O3BhdGgmcXVvdDs6ICZxdW90Oy91c2Vycy8xMjMmcXVvdDsgfSwKICAgIHsgJnF1b3Q7bWV0aG9kJnF1b3Q7OiAmcXVvdDtQVVQmcXVvdDssICZxdW90O3BhdGgmcXVvdDs6ICZxdW90Oy9zZXR0aW5ncyZxdW90OywgJnF1b3Q7Ym9keSZxdW90Ozogey4uLn0gfQogIF0KfTwvY29kZT48L3ByZT48aDI+8J+SoSBNaWdyYXRpb24gR3VpZGU8L2gyPjxvbD48bGk+VXBkYXRlIHlvdXIgZGVwZW5kZW5jaWVzIHRvIHRoZSBsYXRlc3QgdmVyc2lvbnM8L2xpPjxsaT5SdW4gZGF0YWJhc2UgbWlncmF0aW9uczogPGNvZGU+bnBtIHJ1biBtaWdyYXRlPC9jb2RlPjwvbGk+PGxpPkNsZWFyIGNhY2hlOiA8Y29kZT5ucG0gcnVuIGNhY2hlOmNsZWFyPC9jb2RlPjwvbGk+PGxpPlJlc3RhcnQgYWxsIHNlcnZpY2VzPC9saT48L29sPjxocj48cD5Gb3IgcXVlc3Rpb25zIG9yIGlzc3VlcywgcGxlYXNlIGNvbnRhY3QgdGhlIGRldmVsb3BtZW50IHRlYW0gb3IgZmlsZSBhIHRpY2tldCBpbiBvdXIgaXNzdWUgdHJhY2tlci48L3A+IgogICAgICAgID48L2RlZXMtaW5wdXQtd3lzaXd5Zz4KICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tZ3JvdXAiPgogICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLWV4cG9ydC1ibG9ja3MiIGNsYXNzPSJkZW1vLWJ1dHRvbiI+CiAgICAgICAgICAgIEV4cG9ydCBCbG9ja3MKICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgCiAgICAgICAgICA8YnV0dG9uIGlkPSJidG4tZXhwb3J0LWh0bWwiIGNsYXNzPSJkZW1vLWJ1dHRvbiI+CiAgICAgICAgICAgIEV4cG9ydCBhcyBIVE1MCiAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgIAogICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLWV4cG9ydC1tYXJrZG93biIgY2xhc3M9ImRlbW8tYnV0dG9uIj4KICAgICAgICAgICAgRXhwb3J0IGFzIE1hcmtkb3duCiAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgIAogICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLXNhdmUtc3RhdGUiIGNsYXNzPSJkZW1vLWJ1dHRvbiI+CiAgICAgICAgICAgIFNhdmUgU3RhdGUKICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgCiAgICAgICAgICA8YnV0dG9uIGlkPSJidG4tcmVzdG9yZS1zdGF0ZSIgY2xhc3M9ImRlbW8tYnV0dG9uIj4KICAgICAgICAgICAgUmVzdG9yZSBTdGF0ZQogICAgICAgICAgPC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGl2PgogIDwvZGVlcy1kZW1vd3JhcHBlcj4KYCwiZGVtb0Z1bmMiKX0pO3ZhciBMbD1nKCgpPT57fSk7dmFyIElyLFpnPWcoKCk9PntMbCgpO0lyPWNsYXNze3N0YXRpY3tpKHRoaXMsIld5c2l3eWdTaG9ydGN1dHMiKX1zdGF0aWMgSEVBRElOR19QQVRURVJOUz1be3BhdHRlcm46L14jW1xzXHUwMEEwXSQvLHR5cGU6ImhlYWRpbmctMSJ9LHtwYXR0ZXJuOi9eIyNbXHNcdTAwQTBdJC8sdHlwZToiaGVhZGluZy0yIn0se3BhdHRlcm46L14jIyNbXHNcdTAwQTBdJC8sdHlwZToiaGVhZGluZy0zIn1dO3N0YXRpYyBMSVNUX1BBVFRFUk5TPVt7cGF0dGVybjovXlsqLV1bXHNcdTAwQTBdJC8sdHlwZToiYnVsbGV0In0se3BhdHRlcm46L14oXGQrKVwuW1xzXHUwMEEwXSQvLHR5cGU6Im9yZGVyZWQifSx7cGF0dGVybjovXihcZCspXClbXHNcdTAwQTBdJC8sdHlwZToib3JkZXJlZCJ9XTtzdGF0aWMgUVVPVEVfUEFUVEVSTj0vXj5bXHNcdTAwQTBdJC87c3RhdGljIENPREVfUEFUVEVSTj0vXmBgYCQvO3N0YXRpYyBESVZJREVSX1BBVFRFUk5TPVsiLS0tIiwiKioqIiwiX19fIl07c3RhdGljIGNoZWNrSGVhZGluZ1Nob3J0Y3V0KGUpe2ZvcihsZXR7cGF0dGVybjp0LHR5cGU6YX1vZiB0aGlzLkhFQURJTkdfUEFUVEVSTlMpaWYodC50ZXN0KGUpKXJldHVybnt0eXBlOmF9O3JldHVybiBudWxsfXN0YXRpYyBjaGVja0xpc3RTaG9ydGN1dChlKXtmb3IobGV0e3BhdHRlcm46dCx0eXBlOmF9b2YgdGhpcy5MSVNUX1BBVFRFUk5TKWlmKHQudGVzdChlKSlyZXR1cm57dHlwZToibGlzdCIsbGlzdFR5cGU6YX07cmV0dXJuIG51bGx9c3RhdGljIGNoZWNrUXVvdGVTaG9ydGN1dChlKXtyZXR1cm4gdGhpcy5RVU9URV9QQVRURVJOLnRlc3QoZSl9c3RhdGljIGNoZWNrQ29kZVNob3J0Y3V0KGUpe3JldHVybiB0aGlzLkNPREVfUEFUVEVSTi50ZXN0KGUpfXN0YXRpYyBjaGVja0RpdmlkZXJTaG9ydGN1dChlKXtyZXR1cm4gdGhpcy5ESVZJREVSX1BBVFRFUk5TLmluY2x1ZGVzKGUpfXN0YXRpYyBnZXRTbGFzaE1lbnVJdGVtcygpe3JldHVyblt7dHlwZToicGFyYWdyYXBoIixsYWJlbDoiUGFyYWdyYXBoIixpY29uOiJsdWNpZGU6cGlsY3JvdyJ9LHt0eXBlOiJoZWFkaW5nLTEiLGxhYmVsOiJIZWFkaW5nIDEiLGljb246Imx1Y2lkZTpoZWFkaW5nMSJ9LHt0eXBlOiJoZWFkaW5nLTIiLGxhYmVsOiJIZWFkaW5nIDIiLGljb246Imx1Y2lkZTpoZWFkaW5nMiJ9LHt0eXBlOiJoZWFkaW5nLTMiLGxhYmVsOiJIZWFkaW5nIDMiLGljb246Imx1Y2lkZTpoZWFkaW5nMyJ9LHt0eXBlOiJxdW90ZSIsbGFiZWw6IlF1b3RlIixpY29uOiJsdWNpZGU6cXVvdGUifSx7dHlwZToiY29kZSIsbGFiZWw6IkNvZGUgQmxvY2siLGljb246Imx1Y2lkZTpmaWxlQ29kZSJ9LHt0eXBlOiJsaXN0IixsYWJlbDoiQnVsbGV0IExpc3QiLGljb246Imx1Y2lkZTpsaXN0In0se3R5cGU6ImltYWdlIixsYWJlbDoiSW1hZ2UiLGljb246Imx1Y2lkZTppbWFnZSJ9LHt0eXBlOiJkaXZpZGVyIixsYWJlbDoiRGl2aWRlciIsaWNvbjoibHVjaWRlOm1pbnVzIn0se3R5cGU6InlvdXR1YmUiLGxhYmVsOiJZb3VUdWJlIixpY29uOiJsdWNpZGU6eW91dHViZSJ9LHt0eXBlOiJtYXJrZG93biIsbGFiZWw6Ik1hcmtkb3duIixpY29uOiJsdWNpZGU6ZmlsZVRleHQifSx7dHlwZToiaHRtbCIsbGFiZWw6IkhUTUwiLGljb246Imx1Y2lkZTpjb2RlIn0se3R5cGU6ImF0dGFjaG1lbnQiLGxhYmVsOiJGaWxlIEF0dGFjaG1lbnQiLGljb246Imx1Y2lkZTpwYXBlcmNsaXAifV19c3RhdGljIGdlbmVyYXRlQmxvY2tJZCgpe3JldHVybmBibG9jay0ke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsOSl9YH19fSk7dmFyIGt4LHoyLHdudCxrbnQ9ZygoKT0+e3BlKCk7R24oKTtHYSgpO0xsKCk7WmcoKTtodCgpO2t4PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSx6Mj1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sd250PSgoKT0+e2xldCBzPVtuZSgiZGVlcy1zbGFzaC1tZW51IildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W107dmFyIE49Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNTbGFzaE1lbnUiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgQz10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtZKCldLHA9W1koKV0sYz1bWSgpXSx4PVtZKCldLHk9W1koKV0sa3godGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2aXNpYmxlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJ2aXNpYmxlImluIF8sImhhcyIpLGdldDppKF89Pl8udmlzaWJsZSwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLnZpc2libGU9T30sInNldCIpfSxtZXRhZGF0YTpDfSxvLGwpLGt4KHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicG9zaXRpb24iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+InBvc2l0aW9uImluIF8sImhhcyIpLGdldDppKF89Pl8ucG9zaXRpb24sImdldCIpLHNldDppKChfLE8pPT57Xy5wb3NpdGlvbj1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LGQsdSksa3godGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJmaWx0ZXIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+ImZpbHRlciJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLmZpbHRlciwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLmZpbHRlcj1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LGIsdiksa3godGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWxlY3RlZEluZGV4IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJzZWxlY3RlZEluZGV4ImluIF8sImhhcyIpLGdldDppKF89Pl8uc2VsZWN0ZWRJbmRleCwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLnNlbGVjdGVkSW5kZXg9T30sInNldCIpfSxtZXRhZGF0YTpDfSxtLGYpLGt4KHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWVudVpJbmRleCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4ibWVudVpJbmRleCJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLm1lbnVaSW5kZXgsImdldCIpLHNldDppKChfLE8pPT57Xy5tZW51WkluZGV4PU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sTSx6KSxreChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpDfSxudWxsLHQpLE49YT1lLnZhbHVlLEMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Q30pfXN0YXRpYyBpbnN0YW5jZTtzdGF0aWMgZ2V0SW5zdGFuY2UoKXtyZXR1cm4gTi5pbnN0YW5jZXx8KE4uaW5zdGFuY2U9bmV3IE4sZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChOLmluc3RhbmNlKSksTi5pbnN0YW5jZX0jZT16Mih0aGlzLG8sITEpO2dldCB2aXNpYmxlKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHZpc2libGUoQyl7dGhpcy4jZT1DfSN0PSh6Mih0aGlzLGwpLHoyKHRoaXMsZCx7eDowLHk6MH0pKTtnZXQgcG9zaXRpb24oKXtyZXR1cm4gdGhpcy4jdH1zZXQgcG9zaXRpb24oQyl7dGhpcy4jdD1DfSNhPSh6Mih0aGlzLHUpLHoyKHRoaXMsYiwiIikpO2dldCBmaWx0ZXIoKXtyZXR1cm4gdGhpcy4jYX1zZXQgZmlsdGVyKEMpe3RoaXMuI2E9Q30jcz0oejIodGhpcyx2KSx6Mih0aGlzLG0sMCkpO2dldCBzZWxlY3RlZEluZGV4KCl7cmV0dXJuIHRoaXMuI3N9c2V0IHNlbGVjdGVkSW5kZXgoQyl7dGhpcy4jcz1DfSNpPSh6Mih0aGlzLGYpLHoyKHRoaXMsTSwxZTMpKTtnZXQgbWVudVpJbmRleCgpe3JldHVybiB0aGlzLiNpfXNldCBtZW51WkluZGV4KEMpe3RoaXMuI2k9Q31jYWxsYmFjaz0oejIodGhpcyx6KSxudWxsKTtzdGF0aWMgc3R5bGVzPVtxZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgLyogVE9ETzogTWlncmF0ZSBoYXJkY29kZWQgdmFsdWVzIHRvIC0tZGVlcy0qIENTUyB2YXJpYWJsZXMgKi8KICAgICAgOmhvc3QgewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB3aWR0aDogMDsKICAgICAgICBoZWlnaHQ6IDA7CiAgICAgIH0KCiAgICAgIC5zbGFzaC1tZW51IHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDkwOTBiIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzI3MjcyYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xKSwgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNik7CiAgICAgICAgcGFkZGluZzogNHB4OwogICAgICAgIG1pbi13aWR0aDogMjIwcHg7CiAgICAgICAgbWF4LWhlaWdodDogMzAwcHg7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0bzsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICBhbmltYXRpb246IGZhZGVJblNjYWxlIDAuMTVzIGVhc2Utb3V0OwogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGZhZGVJblNjYWxlIHsKICAgICAgICBmcm9tIHsKICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTgpIHRyYW5zbGF0ZVkoLTJweCk7CiAgICAgICAgfQogICAgICAgIHRvIHsKICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpIHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgfQogICAgICB9CgogICAgICAuc2xhc2gtbWVudS1pdGVtIHsKICAgICAgICBwYWRkaW5nOiA4cHggMTBweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMTJweDsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIH0KCiAgICAgIC5zbGFzaC1tZW51LWl0ZW06aG92ZXIsCiAgICAgIC5zbGFzaC1tZW51LWl0ZW0uc2VsZWN0ZWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzI3MjcyYSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTA5MGIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAuc2xhc2gtbWVudS1pdGVtIC5pY29uIHsKICAgICAgICB3aWR0aDogMjBweDsKICAgICAgICBoZWlnaHQ6IDIwcHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgIH0KCiAgICAgIC5zbGFzaC1tZW51LWl0ZW06aG92ZXIgLmljb24sCiAgICAgIC5zbGFzaC1tZW51LWl0ZW0uc2VsZWN0ZWQgLmljb24gewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzNiODJmNiIsIiMzYjgyZjYiKX07CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe2lmKCF0aGlzLnZpc2libGUpcmV0dXJuIHdgYDt0aGlzLnN0eWxlLnpJbmRleD10aGlzLm1lbnVaSW5kZXgudG9TdHJpbmcoKTtsZXQgQz10aGlzLmdldEZpbHRlcmVkTWVudUl0ZW1zKCk7cmV0dXJuIHdgCiAgICAgIDxkaXYgCiAgICAgICAgY2xhc3M9InNsYXNoLW1lbnUiIAogICAgICAgIHN0eWxlPSJsZWZ0OiAke3RoaXMucG9zaXRpb24ueH1weDsgdG9wOiAke3RoaXMucG9zaXRpb24ueX1weDsiCiAgICAgICAgdGFiaW5kZXg9Ii0xIgogICAgICAgIGRhdGEtbWVudS10eXBlPSJzbGFzaCIKICAgICAgPgogICAgICAgICR7Qy5tYXAoKF8sTyk9PndgCiAgICAgICAgICA8ZGl2IAogICAgICAgICAgICBjbGFzcz0ic2xhc2gtbWVudS1pdGVtICR7Tz09PXRoaXMuc2VsZWN0ZWRJbmRleD8ic2VsZWN0ZWQiOiIifSIKICAgICAgICAgICAgZGF0YS1pdGVtLXR5cGU9IiR7Xy50eXBlfSIKICAgICAgICAgICAgZGF0YS1pdGVtLWluZGV4PSIke099IgogICAgICAgICAgPgogICAgICAgICAgICA8ZGVlcy1pY29uIGNsYXNzPSJpY29uIiAuaWNvbj0iJHtfLmljb259IiBpY29uU2l6ZT0iMTYiPjwvZGVlcy1pY29uPgogICAgICAgICAgICA8c3Bhbj4ke18ubGFiZWx9PC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgYCl9CiAgICAgIDwvZGl2PgogICAgYH1nZXRGaWx0ZXJlZE1lbnVJdGVtcygpe3JldHVybiBJci5nZXRTbGFzaE1lbnVJdGVtcygpLmZpbHRlcihfPT50aGlzLmZpbHRlcj09PSIifHxfLmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5maWx0ZXIudG9Mb3dlckNhc2UoKSkpfXNlbGVjdEl0ZW0oQyl7dGhpcy5jYWxsYmFjayYmdGhpcy5jYWxsYmFjayhDKSx0aGlzLmhpZGUoKX1zaG93KEMsXyl7dGhpcy5wb3NpdGlvbj1DLHRoaXMuY2FsbGJhY2s9Xyx0aGlzLmZpbHRlcj0iIix0aGlzLnNlbGVjdGVkSW5kZXg9MCx0aGlzLm1lbnVaSW5kZXg9X2EuZ2V0TmV4dFpJbmRleCgpLF9hLnJlZ2lzdGVyKHRoaXMsdGhpcy5tZW51WkluZGV4KSx0aGlzLnN0eWxlLnpJbmRleD10aGlzLm1lbnVaSW5kZXgudG9TdHJpbmcoKSx0aGlzLnZpc2libGU9ITB9aGlkZSgpe3RoaXMudmlzaWJsZT0hMSx0aGlzLmNhbGxiYWNrPW51bGwsdGhpcy5maWx0ZXI9IiIsdGhpcy5zZWxlY3RlZEluZGV4PTAsX2EudW5yZWdpc3Rlcih0aGlzKX11cGRhdGVGaWx0ZXIoQyl7dGhpcy5maWx0ZXI9Qyx0aGlzLnNlbGVjdGVkSW5kZXg9MH1uYXZpZ2F0ZShDKXtsZXQgXz10aGlzLmdldEZpbHRlcmVkTWVudUl0ZW1zKCk7Qz09PSJkb3duIj90aGlzLnNlbGVjdGVkSW5kZXg9KHRoaXMuc2VsZWN0ZWRJbmRleCsxKSVfLmxlbmd0aDp0aGlzLnNlbGVjdGVkSW5kZXg9dGhpcy5zZWxlY3RlZEluZGV4PT09MD9fLmxlbmd0aC0xOnRoaXMuc2VsZWN0ZWRJbmRleC0xfXNlbGVjdEN1cnJlbnQoKXtsZXQgQz10aGlzLmdldEZpbHRlcmVkTWVudUl0ZW1zKCk7Q1t0aGlzLnNlbGVjdGVkSW5kZXhdJiZ0aGlzLnNlbGVjdEl0ZW0oQ1t0aGlzLnNlbGVjdGVkSW5kZXhdLnR5cGUpfWZpcnN0VXBkYXRlZCgpe3RoaXMuc2hhZG93Um9vdC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLEM9PntsZXQgXz1DLE89dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIuc2xhc2gtbWVudSIpO08mJk8uY29udGFpbnMoXy50YXJnZXQpJiYoXy5wcmV2ZW50RGVmYXVsdCgpLF8uc3RvcFByb3BhZ2F0aW9uKCkpfSksdGhpcy5zaGFkb3dSb290LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixDPT57bGV0IF89QywkPV8udGFyZ2V0LmNsb3Nlc3QoIi5zbGFzaC1tZW51LWl0ZW0iKTtpZigkKXtfLnByZXZlbnREZWZhdWx0KCksXy5zdG9wUHJvcGFnYXRpb24oKTtsZXQgRT0kLmdldEF0dHJpYnV0ZSgiZGF0YS1pdGVtLXR5cGUiKTtFJiZ0aGlzLnNlbGVjdEl0ZW0oRSl9fSksdGhpcy5zaGFkb3dSb290LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZW50ZXIiLEM9PntsZXQgJD1DLnRhcmdldC5jbG9zZXN0KCIuc2xhc2gtbWVudS1pdGVtIik7aWYoJCl7bGV0IEU9cGFyc2VJbnQoJC5nZXRBdHRyaWJ1dGUoImRhdGEtaXRlbS1pbmRleCIpfHwiMCIsMTApO3RoaXMuc2VsZWN0ZWRJbmRleD1FfX0sITApLHRoaXMuc2hhZG93Um9vdC5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsQz0+e2xldCBfPUMsTz10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5zbGFzaC1tZW51Iik7TyYmTy5jb250YWlucyhfLnRhcmdldCkmJihfLnByZXZlbnREZWZhdWx0KCksXy5zdG9wUHJvcGFnYXRpb24oKSl9LCEwKX1zdGF0aWN7ejIoYSx0KX19O3JldHVybiBOPWF9KSgpfSk7dmFyICR0LFhkPWcoKCk9PnskdD1jbGFzc3tzdGF0aWN7aSh0aGlzLCJXeXNpd3lnU2VsZWN0aW9uIil9c3RhdGljIGdldFNlbGVjdGlvbkluZm8oLi4uZSl7bGV0IHQ9d2luZG93LmdldFNlbGVjdGlvbigpO2lmKGNvbnNvbGUubG9nKCJXeXNpd3lnU2VsZWN0aW9uLmdldFNlbGVjdGlvbkluZm8gLSBzZWxlY3Rpb246Iix0LCJyYW5nZUNvdW50OiIsdD8ucmFuZ2VDb3VudCksIXQpcmV0dXJuIG51bGw7aWYoImdldENvbXBvc2VkUmFuZ2VzImluIHQmJnR5cGVvZiB0LmdldENvbXBvc2VkUmFuZ2VzPT0iZnVuY3Rpb24iKXtjb25zb2xlLmxvZygiVXNpbmcgZ2V0Q29tcG9zZWRSYW5nZXMgd2l0aCIsZS5sZW5ndGgsInNoYWRvdyByb290cyIpO3RyeXtsZXQgYT10LmdldENvbXBvc2VkUmFuZ2VzKHtzaGFkb3dSb290czplfSk7aWYoY29uc29sZS5sb2coImdldENvbXBvc2VkUmFuZ2VzIHJldHVybmVkIixhLmxlbmd0aCwicmFuZ2VzIiksYS5sZW5ndGg+MCl7bGV0IHI9YVswXTtyZXR1cm57c3RhcnRDb250YWluZXI6ci5zdGFydENvbnRhaW5lcixzdGFydE9mZnNldDpyLnN0YXJ0T2Zmc2V0LGVuZENvbnRhaW5lcjpyLmVuZENvbnRhaW5lcixlbmRPZmZzZXQ6ci5lbmRPZmZzZXQsY29sbGFwc2VkOnIuY29sbGFwc2VkfX19Y2F0Y2goYSl7Y29uc29sZS53YXJuKCJnZXRDb21wb3NlZFJhbmdlcyBmYWlsZWQsIGZhbGxpbmcgYmFjayB0byBnZXRSYW5nZUF0OiIsYSl9fWVsc2UgY29uc29sZS5sb2coImdldENvbXBvc2VkUmFuZ2VzIG5vdCBhdmFpbGFibGUsIHVzaW5nIGZhbGxiYWNrIik7aWYodC5yYW5nZUNvdW50PjApe2xldCBhPXQuZ2V0UmFuZ2VBdCgwKTtyZXR1cm57c3RhcnRDb250YWluZXI6YS5zdGFydENvbnRhaW5lcixzdGFydE9mZnNldDphLnN0YXJ0T2Zmc2V0LGVuZENvbnRhaW5lcjphLmVuZENvbnRhaW5lcixlbmRPZmZzZXQ6YS5lbmRPZmZzZXQsY29sbGFwc2VkOmEuY29sbGFwc2VkfX1yZXR1cm4gbnVsbH1zdGF0aWMgaXNTZWxlY3Rpb25JbkVsZW1lbnQoZSx0KXtsZXQgYT10P3RoaXMuZ2V0U2VsZWN0aW9uSW5mbyh0KTp0aGlzLmdldFNlbGVjdGlvbkluZm8oKTtyZXR1cm4gYT9lLmNvbnRhaW5zKGEuc3RhcnRDb250YWluZXIpfHxlLmNvbnRhaW5zKGEuZW5kQ29udGFpbmVyKTohMX1zdGF0aWMgZ2V0U2VsZWN0ZWRUZXh0KCl7bGV0IGU9d2luZG93LmdldFNlbGVjdGlvbigpO3JldHVybiBlP2UudG9TdHJpbmcoKToiIn1zdGF0aWMgY3JlYXRlUmFuZ2VGcm9tSW5mbyhlKXtsZXQgdD1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO3JldHVybiB0LnNldFN0YXJ0KGUuc3RhcnRDb250YWluZXIsZS5zdGFydE9mZnNldCksdC5zZXRFbmQoZS5lbmRDb250YWluZXIsZS5lbmRPZmZzZXQpLHR9c3RhdGljIHNldFNlbGVjdGlvbkZyb21SYW5nZShlKXtsZXQgdD13aW5kb3cuZ2V0U2VsZWN0aW9uKCk7dCYmKHQucmVtb3ZlQWxsUmFuZ2VzKCksdC5hZGRSYW5nZShlKSl9c3RhdGljIGdldEN1cnNvclBvc2l0aW9uSW5FbGVtZW50KGUsLi4udCl7bGV0IGE9dC5sZW5ndGg+MD90aGlzLmdldFNlbGVjdGlvbkluZm8oLi4udCk6dGhpcy5nZXRTZWxlY3Rpb25JbmZvKCk7aWYoIWF8fCFhLmNvbGxhcHNlZClyZXR1cm4gbnVsbDt0cnl7bGV0IHI9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtpZihyLnNlbGVjdE5vZGVDb250ZW50cyhlKSx0aGlzLmNvbnRhaW5zQWNyb3NzU2hhZG93RE9NKGUsYS5zdGFydENvbnRhaW5lcikpcmV0dXJuIHIuc2V0RW5kKGEuc3RhcnRDb250YWluZXIsYS5zdGFydE9mZnNldCksci50b1N0cmluZygpLmxlbmd0aDt7bGV0IG89ZS50ZXh0Q29udGVudHx8IiIsbD1hLnN0YXJ0Q29udGFpbmVyLnRleHRDb250ZW50fHwiIjtyZXR1cm4gYS5zdGFydE9mZnNldD09PTA/MDphLnN0YXJ0T2Zmc2V0PT09bC5sZW5ndGg/by5sZW5ndGg6KGNvbnNvbGUud2FybigiU2VsZWN0aW9uIGNvbnRhaW5lciBub3Qgd2l0aGluIGVsZW1lbnQsIHVzaW5nIHRleHQgbWF0Y2hpbmcgZmFsbGJhY2siKSxhLnN0YXJ0T2Zmc2V0KX19Y2F0Y2gocil7cmV0dXJuIGNvbnNvbGUud2FybigiRmFpbGVkIHRvIGdldCBjdXJzb3IgcG9zaXRpb246IixyKSxudWxsfX1zdGF0aWMgZ2V0Q3Vyc29yUG9zaXRpb25Gcm9tUG9pbnQoZSx0LGEsLi4ucil7aWYoImNhcmV0UG9zaXRpb25Gcm9tUG9pbnQiaW4gZG9jdW1lbnQmJmRvY3VtZW50LmNhcmV0UG9zaXRpb25Gcm9tUG9pbnQpe2xldCBuPW51bGw7dHJ5e249ZG9jdW1lbnQuY2FyZXRQb3NpdGlvbkZyb21Qb2ludChlLHQsLi4ucil9Y2F0Y2h7bj1kb2N1bWVudC5jYXJldFBvc2l0aW9uRnJvbVBvaW50KGUsdCl9aWYobiYmYS5jb250YWlucyhuLm9mZnNldE5vZGUpKXJldHVybiB0aGlzLmdldE9mZnNldEluRWxlbWVudChuLm9mZnNldE5vZGUsbi5vZmZzZXQsYSl9aWYoImNhcmV0UmFuZ2VGcm9tUG9pbnQiaW4gZG9jdW1lbnQpe2xldCBuPWRvY3VtZW50LmNhcmV0UmFuZ2VGcm9tUG9pbnQoZSx0KTtpZihuJiZhLmNvbnRhaW5zKG4uc3RhcnRDb250YWluZXIpKXJldHVybiB0aGlzLmdldE9mZnNldEluRWxlbWVudChuLnN0YXJ0Q29udGFpbmVyLG4uc3RhcnRPZmZzZXQsYSl9cmV0dXJuIG51bGx9c3RhdGljIGdldE9mZnNldEluRWxlbWVudChlLHQsYSl7bGV0IHI9MCxuPSExLG89ZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihhLE5vZGVGaWx0ZXIuU0hPV19URVhULG51bGwpLGw7Zm9yKDtsPW8ubmV4dE5vZGUoKTspaWYobD09PWUpe3IrPXQsbj0hMDticmVha31lbHNlIHIrPWwudGV4dENvbnRlbnQ/Lmxlbmd0aHx8MDtyZXR1cm4gbj9yOjB9c3RhdGljIHNldEN1cnNvclBvc2l0aW9uKGUsdCl7bGV0IGE9ZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihlLE5vZGVGaWx0ZXIuU0hPV19URVhULG51bGwpLHI9MCxuPW51bGwsbz0wO2Zvcig7YS5uZXh0Tm9kZSgpOyl7bGV0IGw9YS5jdXJyZW50Tm9kZSxwPWwudGV4dENvbnRlbnQ/Lmxlbmd0aHx8MDtpZihyK3A+PXQpe249bCxvPXQtcjticmVha31yKz1wfWlmKG4pe2xldCBsPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7bC5zZXRTdGFydChuLG8pLGwuY29sbGFwc2UoITApLHRoaXMuc2V0U2VsZWN0aW9uRnJvbVJhbmdlKGwpfX1zdGF0aWMgY29udGFpbnNBY3Jvc3NTaGFkb3dET00oZSx0KXtpZighZXx8IXQpcmV0dXJuITE7bGV0IGE9dDtmb3IoO2E7KXtpZihhPT09ZSlyZXR1cm4hMDtpZihhLm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFJiZhLmhvc3Qpe2xldCByPWE7aWYoci5jb250YWlucyhlKSlyZXR1cm4hMTthPXIuaG9zdH1lbHNlIGE9YS5wYXJlbnROb2RlfXJldHVybiExfX19KTt2YXIgbDQsU250PWcoKCk9PntwZSgpO1hkKCk7bDQ9Y2xhc3N7c3RhdGlje2kodGhpcywiV3lzaXd5Z0Zvcm1hdHRpbmciKX1zdGF0aWMgZm9ybWF0QnV0dG9ucz1be2NvbW1hbmQ6ImJvbGQiLGljb246IkIiLGxhYmVsOiJCb2xkIixzaG9ydGN1dDoiXHUyMzE4QiJ9LHtjb21tYW5kOiJpdGFsaWMiLGljb246IkkiLGxhYmVsOiJJdGFsaWMiLHNob3J0Y3V0OiJcdTIzMThJIn0se2NvbW1hbmQ6InVuZGVybGluZSIsaWNvbjoiVSIsbGFiZWw6IlVuZGVybGluZSIsc2hvcnRjdXQ6Ilx1MjMxOFUifSx7Y29tbWFuZDoic3RyaWtlVGhyb3VnaCIsaWNvbjoiU1x1MDMzNiIsbGFiZWw6IlN0cmlrZXRocm91Z2gifSx7Y29tbWFuZDoiY29kZSIsaWNvbjoieyB9IixsYWJlbDoiSW5saW5lIENvZGUifSx7Y29tbWFuZDoibGluayIsaWNvbjoiXHV7MUY1MTd9IixsYWJlbDoiTGluayIsc2hvcnRjdXQ6Ilx1MjMxOEsifV07c3RhdGljIHJlbmRlckZvcm1hdHRpbmdNZW51KGUsdCl7cmV0dXJuIHdgCiAgICAgIDxkaXYgCiAgICAgICAgY2xhc3M9ImZvcm1hdHRpbmctbWVudSIgCiAgICAgICAgc3R5bGU9InRvcDogJHtlLnl9cHg7IGxlZnQ6ICR7ZS54fXB4OyIKICAgICAgICBAbW91c2Vkb3duPSIke2E9PnthLnByZXZlbnREZWZhdWx0KCksYS5zdG9wUHJvcGFnYXRpb24oKX19IgogICAgICAgIEBjbGljaz0iJHthPT5hLnN0b3BQcm9wYWdhdGlvbigpfSIKICAgICAgPgogICAgICAgICR7dGhpcy5mb3JtYXRCdXR0b25zLm1hcChhPT53YAogICAgICAgICAgPGJ1dHRvbiAKICAgICAgICAgICAgY2xhc3M9ImZvcm1hdC1idXR0b24gJHthLmNvbW1hbmR9IgogICAgICAgICAgICBAY2xpY2s9IiR7KCk9PnQoYS5jb21tYW5kKX0iCiAgICAgICAgICAgIHRpdGxlPSIke2EubGFiZWx9JHthLnNob3J0Y3V0P2AgKCR7YS5zaG9ydGN1dH0pYDoiIn0iCiAgICAgICAgICA+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSIke2EuY29tbWFuZD09PSJjb2RlIj8iY29kZS1pY29uIjoiIn0iPiR7YS5pY29ufTwvc3Bhbj4KICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgIGApfQogICAgICA8L2Rpdj4KICAgIGB9c3RhdGljIGFwcGx5Rm9ybWF0KGUsdCxhLHIpe2xldCBuO2lmKGEpbj1hO2Vsc2V7bGV0IG89d2luZG93LmdldFNlbGVjdGlvbigpO2lmKCFvfHxvLnJhbmdlQ291bnQ9PT0wKXJldHVybiExO249by5nZXRSYW5nZUF0KDApfXN3aXRjaChlKXtjYXNlImJvbGQiOnRoaXMud3JhcFNlbGVjdGlvbihuLCJzdHJvbmciKTticmVhaztjYXNlIml0YWxpYyI6dGhpcy53cmFwU2VsZWN0aW9uKG4sImVtIik7YnJlYWs7Y2FzZSJ1bmRlcmxpbmUiOnRoaXMud3JhcFNlbGVjdGlvbihuLCJ1Iik7YnJlYWs7Y2FzZSJzdHJpa2VUaHJvdWdoIjp0aGlzLndyYXBTZWxlY3Rpb24obiwicyIpO2JyZWFrO2Nhc2UiY29kZSI6dGhpcy53cmFwU2VsZWN0aW9uKG4sImNvZGUiKTticmVhaztjYXNlImxpbmsiOmlmKCF0KXJldHVybiExO3RoaXMud3JhcFNlbGVjdGlvbldpdGhMaW5rKG4sdCk7YnJlYWt9aWYociYmci5sZW5ndGg+MCkkdC5zZXRTZWxlY3Rpb25Gcm9tUmFuZ2Uobik7ZWxzZXtsZXQgbz13aW5kb3cuZ2V0U2VsZWN0aW9uKCk7byYmKG8ucmVtb3ZlQWxsUmFuZ2VzKCksby5hZGRSYW5nZShuKSl9cmV0dXJuITB9c3RhdGljIHdyYXBTZWxlY3Rpb24oZSx0KXtsZXQgYT13aW5kb3cuZ2V0U2VsZWN0aW9uKCk7aWYoIWEpcmV0dXJuO2lmKHRoaXMuc2VsZWN0aW9uQ29udGFpbnNUYWcoZSx0KSl0aGlzLnJlbW92ZVRhZ0Zyb21TZWxlY3Rpb24oZSx0KTtlbHNle2xldCBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodCk7dHJ5e2xldCBvPWUuZXh0cmFjdENvbnRlbnRzKCk7bi5hcHBlbmRDaGlsZChvKSxlLmluc2VydE5vZGUobiksZS5zZWxlY3ROb2RlQ29udGVudHMobiksYS5yZW1vdmVBbGxSYW5nZXMoKSxhLmFkZFJhbmdlKGUpfWNhdGNoKG8pe2NvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byB3cmFwIHNlbGVjdGlvbjoiLG8pfX19c3RhdGljIHNlbGVjdGlvbkNvbnRhaW5zVGFnKGUsdCl7bGV0IGE9ZS5zdGFydENvbnRhaW5lcjtmb3IoO2EmJmEhPT1lLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyLm93bmVyRG9jdW1lbnQ7KXtpZihhLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJmEudGFnTmFtZS50b0xvd2VyQ2FzZSgpPT09dClyZXR1cm4hMDthPWEucGFyZW50Tm9kZX1mb3IoYT1lLmVuZENvbnRhaW5lcjthJiZhIT09ZS5jb21tb25BbmNlc3RvckNvbnRhaW5lci5vd25lckRvY3VtZW50Oyl7aWYoYS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiZhLnRhZ05hbWUudG9Mb3dlckNhc2UoKT09PXQpcmV0dXJuITA7YT1hLnBhcmVudE5vZGV9bGV0IHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iiksbj1lLmNsb25lQ29udGVudHMoKTtyZXR1cm4gci5hcHBlbmRDaGlsZChuKSxyLmdldEVsZW1lbnRzQnlUYWdOYW1lKHQpLmxlbmd0aD4wfXN0YXRpYyByZW1vdmVUYWdGcm9tU2VsZWN0aW9uKGUsdCl7bGV0IGE9d2luZG93LmdldFNlbGVjdGlvbigpO2lmKCFhKXJldHVybjtsZXQgcj1lLmNsb25lUmFuZ2UoKSxuPWUuc3RhcnRDb250YWluZXIsbz1udWxsO2Zvcig7biYmbiE9PWUuY29tbW9uQW5jZXN0b3JDb250YWluZXIub3duZXJEb2N1bWVudDspe2lmKG4ubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmbi50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PT10KXtvPW47YnJlYWt9bj1uLnBhcmVudE5vZGV9bGV0IGw9ZS5lbmRDb250YWluZXIscD1udWxsO2Zvcig7bCYmbCE9PWUuY29tbW9uQW5jZXN0b3JDb250YWluZXIub3duZXJEb2N1bWVudDspe2lmKGwubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmbC50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PT10KXtwPWw7YnJlYWt9bD1sLnBhcmVudE5vZGV9byYmci5zZXRTdGFydEJlZm9yZShvKSxwJiZyLnNldEVuZEFmdGVyKHApO2xldCBkPXIuZXh0cmFjdENvbnRlbnRzKCksdT10aGlzLnJlbW92ZVRhZ3NGcm9tRnJhZ21lbnQoZCx0KTtyLmluc2VydE5vZGUodSk7bGV0IGM9W10sYj1kb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKHUsTm9kZUZpbHRlci5TSE9XX1RFWFQsbnVsbCksdjtmb3IoO3Y9Yi5uZXh0Tm9kZSgpOyljLnB1c2godik7aWYoYy5sZW5ndGg+MCl7bGV0IHg9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTt4LnNldFN0YXJ0KGNbMF0sMCkseC5zZXRFbmQoY1tjLmxlbmd0aC0xXSxjW2MubGVuZ3RoLTFdLnRleHRDb250ZW50Py5sZW5ndGh8fDApLGEucmVtb3ZlQWxsUmFuZ2VzKCksYS5hZGRSYW5nZSh4KX19c3RhdGljIHJlbW92ZVRhZ3NGcm9tRnJhZ21lbnQoZSx0KXtsZXQgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTthLmFwcGVuZENoaWxkKGUpO2xldCByPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUodCk7QXJyYXkuZnJvbShyKS5mb3JFYWNoKGw9PntsZXQgcD1sLnBhcmVudE5vZGU7aWYocCl7Zm9yKDtsLmZpcnN0Q2hpbGQ7KXAuaW5zZXJ0QmVmb3JlKGwuZmlyc3RDaGlsZCxsKTtwLnJlbW92ZUNoaWxkKGwpfX0pO2xldCBvPWRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtmb3IoO2EuZmlyc3RDaGlsZDspby5hcHBlbmRDaGlsZChhLmZpcnN0Q2hpbGQpO3JldHVybiBvfXN0YXRpYyB3cmFwU2VsZWN0aW9uV2l0aExpbmsoZSx0KXtsZXQgYT13aW5kb3cuZ2V0U2VsZWN0aW9uKCk7aWYoIWEpcmV0dXJuO3RoaXMuc2VsZWN0aW9uQ29udGFpbnNUYWcoZSwiYSIpJiYodGhpcy5yZW1vdmVUYWdGcm9tU2VsZWN0aW9uKGUsImEiKSxhLnJhbmdlQ291bnQ+MCYmKGU9YS5nZXRSYW5nZUF0KDApKSk7bGV0IHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO3IuaHJlZj10LHIudGFyZ2V0PSJfYmxhbmsiLHIucmVsPSJub29wZW5lciBub3JlZmVycmVyIjt0cnl7bGV0IG49ZS5leHRyYWN0Q29udGVudHMoKTtyLmFwcGVuZENoaWxkKG4pLGUuaW5zZXJ0Tm9kZShyKSxlLnNlbGVjdE5vZGVDb250ZW50cyhyKSxhLnJlbW92ZUFsbFJhbmdlcygpLGEuYWRkUmFuZ2UoZSl9Y2F0Y2gobil7Y29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGNyZWF0ZSBsaW5rOiIsbil9fXN0YXRpYyBnZXRTZWxlY3Rpb25Db29yZGluYXRlcyguLi5lKXtsZXQgdD0kdC5nZXRTZWxlY3Rpb25JbmZvKC4uLmUpO2lmKGNvbnNvbGUubG9nKCJnZXRTZWxlY3Rpb25Db29yZGluYXRlcyAtIHNlbGVjdGlvbkluZm86Iix0KSwhdClyZXR1cm4gY29uc29sZS5sb2coIk5vIHNlbGVjdGlvbiBpbmZvIGF2YWlsYWJsZSIpLG51bGw7bGV0IHI9JHQuY3JlYXRlUmFuZ2VGcm9tSW5mbyh0KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZihjb25zb2xlLmxvZygiUmFuZ2UgcmVjdDoiLHIpLHIud2lkdGg9PT0wJiZyLmhlaWdodD09PTApe2lmKGNvbnNvbGUubG9nKCJSZWN0IHdpZHRoIGFuZCBoZWlnaHQgYXJlIDAsIHRyeWluZyBkaWZmZXJlbnQgYXBwcm9hY2giKSwiY2FyZXRQb3NpdGlvbkZyb21Qb2ludCJpbiBkb2N1bWVudCl7bGV0IG89d2luZG93LmdldFNlbGVjdGlvbigpO2lmKG8mJm8ucmFuZ2VDb3VudD4wKXtsZXQgbD1vLmdldFJhbmdlQXQoMCkscD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7cC50ZXh0Q29udGVudD0iXHUyMDBCIixsLmluc2VydE5vZGUocCk7bGV0IGQ9cC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZihwLnJlbW92ZSgpLGQud2lkdGg+MHx8ZC5oZWlnaHQ+MCl7bGV0IHU9e3g6ZC5sZWZ0LHk6TWF0aC5tYXgoNDUsZC50b3AtNDUpfTtyZXR1cm4gY29uc29sZS5sb2coIlVzZWQgc3BhbiB0cmljayBmb3IgY29vcmRzOiIsdSksdX19fXJldHVybiBudWxsfWxldCBuPXt4OnIubGVmdCtyLndpZHRoLzIseTpNYXRoLm1heCg0NSxyLnRvcC00NSl9O3JldHVybiBjb25zb2xlLmxvZygiUmV0dXJuaW5nIGNvb3JkczoiLG4pLG59fX0pO3ZhciBCMWUsWGcsX250LE1udD1nKCgpPT57cGUoKTtHbigpO1NudCgpO2h0KCk7QjFlPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxYZz1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sX250PSgoKT0+e2xldCBzPVtuZSgiZGVlcy1mb3JtYXR0aW5nLW1lbnUiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXTt2YXIgeD1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0Zvcm1hdHRpbmdNZW51Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IG09dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bWSgpXSxwPVtZKCldLGM9W1koKV0sQjFlKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidmlzaWJsZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShmPT4idmlzaWJsZSJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLnZpc2libGUsImdldCIpLHNldDppKChmLHkpPT57Zi52aXNpYmxlPXl9LCJzZXQiKX0sbWV0YWRhdGE6bX0sbyxsKSxCMWUodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJwb3NpdGlvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShmPT4icG9zaXRpb24iaW4gZiwiaGFzIiksZ2V0OmkoZj0+Zi5wb3NpdGlvbiwiZ2V0Iiksc2V0OmkoKGYseSk9PntmLnBvc2l0aW9uPXl9LCJzZXQiKX0sbWV0YWRhdGE6bX0sZCx1KSxCMWUodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtZW51WkluZGV4IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGY9PiJtZW51WkluZGV4ImluIGYsImhhcyIpLGdldDppKGY9PmYubWVudVpJbmRleCwiZ2V0Iiksc2V0OmkoKGYseSk9PntmLm1lbnVaSW5kZXg9eX0sInNldCIpfSxtZXRhZGF0YTptfSxiLHYpLEIxZShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTptfSxudWxsLHQpLHg9YT1lLnZhbHVlLG0mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6bX0pfXN0YXRpYyBpbnN0YW5jZTtzdGF0aWMgZ2V0SW5zdGFuY2UoKXtyZXR1cm4geC5pbnN0YW5jZXx8KHguaW5zdGFuY2U9bmV3IHgsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh4Lmluc3RhbmNlKSkseC5pbnN0YW5jZX0jZT1YZyh0aGlzLG8sITEpO2dldCB2aXNpYmxlKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHZpc2libGUobSl7dGhpcy4jZT1tfSN0PShYZyh0aGlzLGwpLFhnKHRoaXMsZCx7eDowLHk6MH0pKTtnZXQgcG9zaXRpb24oKXtyZXR1cm4gdGhpcy4jdH1zZXQgcG9zaXRpb24obSl7dGhpcy4jdD1tfSNhPShYZyh0aGlzLHUpLFhnKHRoaXMsYiwxZTMpKTtnZXQgbWVudVpJbmRleCgpe3JldHVybiB0aGlzLiNhfXNldCBtZW51WkluZGV4KG0pe3RoaXMuI2E9bX1jYWxsYmFjaz0oWGcodGhpcyx2KSxudWxsKTtzdGF0aWMgc3R5bGVzPVtxZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgLyogVE9ETzogTWlncmF0ZSBoYXJkY29kZWQgdmFsdWVzIHRvIC0tZGVlcy0qIENTUyB2YXJpYWJsZXMgKi8KICAgICAgOmhvc3QgewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB3aWR0aDogMDsKICAgICAgICBoZWlnaHQ6IDA7CiAgICAgIH0KCiAgICAgIC5mb3JtYXR0aW5nLW1lbnUgewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMyNjI2MjYiKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlMGUwZTAiLCIjNDA0MDQwIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBib3gtc2hhZG93OiAwIDJweCAxNnB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7CiAgICAgICAgcGFkZGluZzogNHB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiAycHg7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgYW5pbWF0aW9uOiBmYWRlSW5TY2FsZSAwLjE1cyBlYXNlLW91dDsKICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBmYWRlSW5TY2FsZSB7CiAgICAgICAgZnJvbSB7CiAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk1KSB0cmFuc2xhdGVZKDVweCk7CiAgICAgICAgfQogICAgICAgIHRvIHsKICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpIHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgfQogICAgICB9CgogICAgICAuZm9ybWF0LWJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwMDAwMDAiLCIjZTBlMGUwIil9OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgLmZvcm1hdC1idXR0b246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjBmMGYwIiwiIzMzMzMzMyIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwMDY2Y2MiLCIjNGQ5NGZmIil9OwogICAgICB9CgogICAgICAuZm9ybWF0LWJ1dHRvbjphY3RpdmUgewogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45NSk7CiAgICAgIH0KCiAgICAgIC5mb3JtYXQtYnV0dG9uLmJvbGQgewogICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgIH0KCiAgICAgIC5mb3JtYXQtYnV0dG9uLml0YWxpYyB7CiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgICB9CgogICAgICAuZm9ybWF0LWJ1dHRvbi51bmRlcmxpbmUgewogICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogICAgICB9CgogICAgICAuZm9ybWF0LWJ1dHRvbiAuY29kZS1pY29uIHsKICAgICAgICBmb250LWZhbWlseTogJ1NGIE1vbm8nLCAnTW9uYWNvJywgJ0luY29uc29sYXRhJywgJ0ZpcmEgQ29kZScsIG1vbm9zcGFjZTsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB0aGlzLnZpc2libGU/KHRoaXMuc3R5bGUuekluZGV4PXRoaXMubWVudVpJbmRleC50b1N0cmluZygpLHdgCiAgICAgIDxkaXYgCiAgICAgICAgY2xhc3M9ImZvcm1hdHRpbmctbWVudSIgCiAgICAgICAgc3R5bGU9ImxlZnQ6ICR7dGhpcy5wb3NpdGlvbi54fXB4OyB0b3A6ICR7dGhpcy5wb3NpdGlvbi55fXB4OyIKICAgICAgICB0YWJpbmRleD0iLTEiCiAgICAgICAgZGF0YS1tZW51LXR5cGU9ImZvcm1hdHRpbmciCiAgICAgID4KICAgICAgICAke2w0LmZvcm1hdEJ1dHRvbnMubWFwKG09PndgCiAgICAgICAgICA8YnV0dG9uIAogICAgICAgICAgICBjbGFzcz0iZm9ybWF0LWJ1dHRvbiAke20uY29tbWFuZH0iCiAgICAgICAgICAgIGRhdGEtY29tbWFuZD0iJHttLmNvbW1hbmR9IgogICAgICAgICAgICB0aXRsZT0iJHttLmxhYmVsfSR7bS5zaG9ydGN1dD9gICgke20uc2hvcnRjdXR9KWA6IiJ9IgogICAgICAgICAgPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iJHttLmNvbW1hbmQ9PT0iY29kZSI/ImNvZGUtaWNvbiI6IiJ9Ij4ke20uaWNvbn08L3NwYW4+CiAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICBgKX0KICAgICAgPC9kaXY+CiAgICBgKTp3YGB9YXBwbHlGb3JtYXQobSl7dGhpcy5jYWxsYmFjayYmdGhpcy5jYWxsYmFjayhtKSxtPT09ImxpbmsiJiZ0aGlzLmhpZGUoKX1zaG93KG0sZil7Y29uc29sZS5sb2coIkZvcm1hdHRpbmdNZW51LnNob3cgY2FsbGVkOiIse3Bvc2l0aW9uOm0sdmlzaWJsZTp0aGlzLnZpc2libGV9KSx0aGlzLnBvc2l0aW9uPW0sdGhpcy5jYWxsYmFjaz1mLHRoaXMubWVudVpJbmRleD1fYS5nZXROZXh0WkluZGV4KCksX2EucmVnaXN0ZXIodGhpcyx0aGlzLm1lbnVaSW5kZXgpLHRoaXMuc3R5bGUuekluZGV4PXRoaXMubWVudVpJbmRleC50b1N0cmluZygpLHRoaXMudmlzaWJsZT0hMH1oaWRlKCl7dGhpcy52aXNpYmxlPSExLHRoaXMuY2FsbGJhY2s9bnVsbCxfYS51bnJlZ2lzdGVyKHRoaXMpfXVwZGF0ZVBvc2l0aW9uKG0pe3RoaXMucG9zaXRpb249bX1maXJzdFVwZGF0ZWQoKXt0aGlzLnNoYWRvd1Jvb3QuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIixtPT57bGV0IGY9bSx5PXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLmZvcm1hdHRpbmctbWVudSIpO3kmJnkuY29udGFpbnMoZi50YXJnZXQpJiYoZi5wcmV2ZW50RGVmYXVsdCgpLGYuc3RvcFByb3BhZ2F0aW9uKCkpfSksdGhpcy5zaGFkb3dSb290LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixtPT57bGV0IGY9bSxNPWYudGFyZ2V0LmNsb3Nlc3QoIi5mb3JtYXQtYnV0dG9uIik7aWYoTSl7Zi5wcmV2ZW50RGVmYXVsdCgpLGYuc3RvcFByb3BhZ2F0aW9uKCk7bGV0IHo9TS5nZXRBdHRyaWJ1dGUoImRhdGEtY29tbWFuZCIpO3omJnRoaXMuYXBwbHlGb3JtYXQoeil9fSksdGhpcy5zaGFkb3dSb290LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIixtPT57bGV0IGY9bSx5PXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLmZvcm1hdHRpbmctbWVudSIpO3kmJnkuY29udGFpbnMoZi50YXJnZXQpJiYoZi5wcmV2ZW50RGVmYXVsdCgpLGYuc3RvcFByb3BhZ2F0aW9uKCkpfSwhMCl9c3RhdGlje1hnKGEsdCl9fTtyZXR1cm4geD1hfSkoKX0pO3ZhciBTeD1nKCgpPT57cGUoKTtMbCgpO2tudCgpO01udCgpfSk7dmFyIEgxZSxxMWU9ZygoKT0+e0gxZT1bIkphdmFTY3JpcHQiLCJUeXBlU2NyaXB0IiwiUHl0aG9uIiwiSmF2YSIsIkMrKyIsIkMjIiwiR28iLCJSdXN0IiwiSFRNTCIsIkNTUyIsIlNRTCIsIlNoZWxsIiwiSlNPTiIsIllBTUwiLCJNYXJrZG93biIsIlBsYWluIFRleHQiXX0pO3ZhciBRYmEsSmJhPWcoKCk9PntwZSgpO1FiYT1KYAogIDpob3N0IHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogIH0KCiAgLnd5c2l3eWctY29udGFpbmVyIHsKICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzA5MDkwYiIpfTsKICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzI3MjcyYSIpfTsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIG1pbi1oZWlnaHQ6IDIwMHB4OwogICAgcGFkZGluZzogMjRweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7CiAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTA5MGIiLCIjZmFmYWZhIil9OwogIH0KCiAgLnd5c2l3eWctY29udGFpbmVyOmhvdmVyIHsKICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiNkMWQ1ZGIiLCIjM2YzZjQ2Iil9OwogIH0KCiAgLnd5c2l3eWctY29udGFpbmVyOmZvY3VzLXdpdGhpbiB7CiAgICBvdXRsaW5lOiAycHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICBvdXRsaW5lLW9mZnNldDogMnB4OwogICAgYm94LXNoYWRvdzogMCAwIDAgMnB4ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzE4MTgxYiIpfSwgMCAwIDAgNHB4ICR7aC5iZFRoZW1lKCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC41KSIsInJnYmEoNTksIDEzMCwgMjQ2LCAwLjUpIil9OwogICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiIzNiODJmNiIsIiMzYjgyZjYiKX07CiAgfQoKICAvKiBWaXN1YWwgaGludCBmb3IgdGV4dCBzZWxlY3Rpb24gKi8KICAuZWRpdG9yLWNvbnRlbnQ6aG92ZXIgewogICAgY3Vyc29yOiB0ZXh0OwogIH0KCiAgLmVkaXRvci1jb250ZW50IHsKICAgIG91dGxpbmU6IG5vbmU7CiAgICBtaW4taGVpZ2h0OiAxNjBweDsKICAgIG1hcmdpbjogMCAtOHB4OwogICAgcGFkZGluZzogMCA4cHg7CiAgfQoKICAuYmxvY2sgewogICAgbWFyZ2luOiAwOwogICAgcGFkZGluZzogNHB4IDA7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgIG1pbi1oZWlnaHQ6IDEuNmVtOwogICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICB9CgogIC8qIEZpcnN0IGFuZCBsYXN0IGJsb2NrcyBkb24ndCBuZWVkIGV4dHJhIHNwYWNpbmcgKi8KICAuYmxvY2std3JhcHBlcjpmaXJzdC1jaGlsZCAuYmxvY2sgewogICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwogIH0KCiAgLmJsb2NrLXdyYXBwZXI6bGFzdC1jaGlsZCAuYmxvY2sgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICB9CgogIC5ibG9jay5zZWxlY3RlZCB7CiAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSg1OSwgMTMwLCAyNDYsIDAuMDUpIiwicmdiYSg1OSwgMTMwLCAyNDYsIDAuMDUpIil9OwogICAgb3V0bGluZTogMnB4IHNvbGlkICR7aC5iZFRoZW1lKCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC4yKSIsInJnYmEoNTksIDEzMCwgMjQ2LCAwLjIpIil9OwogICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICBtYXJnaW4tbGVmdDogLThweDsKICAgIG1hcmdpbi1yaWdodDogLThweDsKICAgIHBhZGRpbmctbGVmdDogOHB4OwogICAgcGFkZGluZy1yaWdodDogOHB4OwogIH0KCiAgLmJsb2NrW2NvbnRlbnRlZGl0YWJsZV0gewogICAgb3V0bGluZTogbm9uZTsKICB9CgogIC5ibG9jay5wYXJhZ3JhcGggewogICAgZm9udC1zaXplOiAxNnB4OwogICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgfQoKICAuYmxvY2sucGFyYWdyYXBoOmVtcHR5OjpiZWZvcmUgewogICAgY29udGVudDogIlR5cGUgJy8nIGZvciBjb21tYW5kcy4uLiI7CiAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjNzE3MTdhIil9OwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBsaW5lLWhlaWdodDogMS42OwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICB9CgogIC5ibG9jay5oZWFkaW5nLTEgewogICAgZm9udC1zaXplOiAzMnB4OwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGxpbmUtaGVpZ2h0OiAxLjI7CiAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTA5MGIiLCIjZmFmYWZhIil9OwogIH0KCiAgLmJsb2NrLmhlYWRpbmctMTplbXB0eTo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJIZWFkaW5nIDEiOwogICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiIzcxNzE3YSIpfTsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgZm9udC1zaXplOiAzMnB4OwogICAgbGluZS1oZWlnaHQ6IDEuMjsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgfQoKICAuYmxvY2suaGVhZGluZy0yIHsKICAgIGZvbnQtc2l6ZTogMjRweDsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBsaW5lLWhlaWdodDogMS4zOwogICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICB9CgogIC5ibG9jay5oZWFkaW5nLTI6ZW1wdHk6OmJlZm9yZSB7CiAgICBjb250ZW50OiAiSGVhZGluZyAyIjsKICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiM3MTcxN2EiKX07CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIGZvbnQtc2l6ZTogMjRweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjM7CiAgICBmb250LXdlaWdodDogNjAwOwogIH0KCiAgLmJsb2NrLmhlYWRpbmctMyB7CiAgICBmb250LXNpemU6IDIwcHg7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgbGluZS1oZWlnaHQ6IDEuNDsKICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07CiAgfQoKICAuYmxvY2suaGVhZGluZy0zOmVtcHR5OjpiZWZvcmUgewogICAgY29udGVudDogIkhlYWRpbmcgMyI7CiAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjNzE3MTdhIil9OwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICBmb250LXNpemU6IDIwcHg7CiAgICBsaW5lLWhlaWdodDogMS40OwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICB9CgogIC5ibG9jay5xdW90ZSB7CiAgICBib3JkZXItbGVmdDogMnB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzI3MjcyYSIpfTsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICBtYXJnaW4tbGVmdDogMDsKICAgIG1hcmdpbi1yaWdodDogMDsKICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgfQoKICAuYmxvY2sucXVvdGU6ZW1wdHk6OmJlZm9yZSB7CiAgICBjb250ZW50OiAiUXVvdGUiOwogICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiIzcxNzE3YSIpfTsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgZm9udC1zaXplOiAxNnB4OwogICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgfQoKICAuY29kZS1ibG9jay1jb250YWluZXIgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgbWFyZ2luOiAyMHB4IDA7CiAgfQoKICAuY29kZS1sYW5ndWFnZSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICByaWdodDogMDsKICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzI3MjcyYSIpfTsKICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICBwYWRkaW5nOiA0cHggMTJweDsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGJvcmRlci1yYWRpdXM6IDAgNHB4IDAgNHB4OwogICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBzYW5zLXNlcmlmOwogICAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZTsKICAgIHotaW5kZXg6IDE7CiAgfQoKICAuYmxvY2suY29kZSB7CiAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMxODE4MWIiKX07CiAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMyNzI3MmEiKX07CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICBwYWRkaW5nOiAxNnB4OwogICAgcGFkZGluZy10b3A6IDMycHg7IC8qIE1ha2Ugcm9vbSBmb3IgbGFuZ3VhZ2UgaW5kaWNhdG9yICovCiAgICBmb250LWZhbWlseTogJ1NGIE1vbm8nLCAnTW9uYWNvJywgJ0luY29uc29sYXRhJywgJ0ZpcmEgQ29kZScsIG1vbm9zcGFjZTsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CiAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTA5MGIiLCIjZmFmYWZhIil9OwogICAgb3ZlcmZsb3cteDogYXV0bzsKICB9CgogIC5ibG9jay5jb2RlOmVtcHR5OjpiZWZvcmUgewogICAgY29udGVudDogIi8vIENvZGUgYmxvY2siOwogICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiIzcxNzE3YSIpfTsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgZm9udC1mYW1pbHk6ICdTRiBNb25vJywgJ01vbmFjbycsICdJbmNvbnNvbGF0YScsICdGaXJhIENvZGUnLCBtb25vc3BhY2U7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBsaW5lLWhlaWdodDogMS42OwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICB9CgogIC5ibG9jay5saXN0IHsKICAgIHBhZGRpbmctbGVmdDogMDsKICB9CgogIC5ibG9jay5saXN0IHVsLAogIC5ibG9jay5saXN0IG9sIHsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDAgMCAwIDI0cHg7CiAgICBsaXN0LXN0eWxlLXBvc2l0aW9uOiBvdXRzaWRlOwogIH0KCiAgLmJsb2NrLmxpc3QgdWwgewogICAgbGlzdC1zdHlsZTogZGlzYzsKICB9CgogIC5ibG9jay5saXN0IG9sIHsKICAgIGxpc3Qtc3R5bGU6IGRlY2ltYWw7CiAgfQoKICAuYmxvY2subGlzdCBsaSB7CiAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICBsaW5lLWhlaWdodDogMS42OwogIH0KCiAgLmJsb2NrLmxpc3QgbGk6bGFzdC1jaGlsZCB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogIH0KCiAgLmJsb2NrLmRpdmlkZXIgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgcGFkZGluZzogMjBweCAwOwogICAgY3Vyc29yOiBkZWZhdWx0OwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgfQoKICAuYmxvY2suZGl2aWRlciBociB7CiAgICBib3JkZXI6IG5vbmU7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMjcyNzJhIil9OwogICAgbWFyZ2luOiAwOwogIH0KCiAgLnNsYXNoLW1lbnUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDkwOTBiIil9OwogICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMjcyNzJhIil9OwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xKSwgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNik7CiAgICBwYWRkaW5nOiA0cHg7CiAgICB6LWluZGV4OiAxMDAwOwogICAgbWluLXdpZHRoOiAyMjBweDsKICAgIG1heC1oZWlnaHQ6IDMwMHB4OwogICAgb3ZlcmZsb3cteTogYXV0bzsKICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOwogICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgfQoKICAuc2xhc2gtbWVudS1pdGVtIHsKICAgIHBhZGRpbmc6IDhweCAxMHB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMTJweDsKICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07CiAgICBmb250LXNpemU6IDE0cHg7CiAgfQoKICAuc2xhc2gtbWVudS1pdGVtOmhvdmVyLAogIC5zbGFzaC1tZW51LWl0ZW0uc2VsZWN0ZWQgewogICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMjcyNzJhIil9OwogICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICB9CgogIC5zbGFzaC1tZW51LWl0ZW0gLmljb24gewogICAgd2lkdGg6IDI0cHg7CiAgICBoZWlnaHQ6IDI0cHg7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgZm9udC1zaXplOiAxNnB4OwogICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgfQoKICAuc2xhc2gtbWVudS1pdGVtOmhvdmVyIC5pY29uLAogIC5zbGFzaC1tZW51LWl0ZW0uc2VsZWN0ZWQgLmljb24gewogICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzNiODJmNiIpfTsKICB9CgogIC50b29sYmFyIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogLTQwcHg7CiAgICBsZWZ0OiAwOwogICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDkwOTBiIil9OwogICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMjcyNzJhIil9OwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xKSwgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNik7CiAgICBwYWRkaW5nOiA0cHg7CiAgICBkaXNwbGF5OiBub25lOwogICAgZ2FwOiA0cHg7CiAgICB6LWluZGV4OiAxMDAwOwogIH0KCiAgLnRvb2xiYXIudmlzaWJsZSB7CiAgICBkaXNwbGF5OiBmbGV4OwogIH0KCiAgLnRvb2xiYXItYnV0dG9uIHsKICAgIHdpZHRoOiAzMnB4OwogICAgaGVpZ2h0OiAzMnB4OwogICAgYm9yZGVyOiBub25lOwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTA5MGIiLCIjZmFmYWZhIil9OwogIH0KCiAgLnRvb2xiYXItYnV0dG9uOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzI3MjcyYSIpfTsKICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzNiODJmNiIsIiMzYjgyZjYiKX07CiAgfQoKICAvKiBEcmFnIGFuZCBEcm9wIFN0eWxlcyAqLwogIC5ibG9jay13cmFwcGVyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2UsIG9wYWNpdHkgMC4ycyBlYXNlOwogIH0KCiAgLyogRW5zdXJlIHByb3BlciBzcGFjaW5nIGNvbnRleHQgZm9yIGJsb2NrcyAqLwogIC5ibG9jay13cmFwcGVyICsgLmJsb2NrLXdyYXBwZXIgLmJsb2NrIHsKICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgfQoKICAvKiBPdmVycmlkZSBmb3IgaGVhZGluZ3MgZm9sbG93aW5nIG90aGVyIGJsb2NrcyAqLwogIC5ibG9jay13cmFwcGVyICsgLmJsb2NrLXdyYXBwZXIgLmJsb2NrLmhlYWRpbmctMSwKICAuYmxvY2std3JhcHBlciArIC5ibG9jay13cmFwcGVyIC5ibG9jay5oZWFkaW5nLTIsCiAgLmJsb2NrLXdyYXBwZXIgKyAuYmxvY2std3JhcHBlciAuYmxvY2suaGVhZGluZy0zIHsKICAgIG1hcmdpbi10b3A6IDI0cHg7CiAgfQoKICAvKiBDb2RlIGFuZCBxdW90ZSBibG9ja3MgbmVlZCBjb25zaXN0ZW50IHNwYWNpbmcgKi8KICAuYmxvY2std3JhcHBlciArIC5ibG9jay13cmFwcGVyIC5ibG9jay5jb2RlLAogIC5ibG9jay13cmFwcGVyICsgLmJsb2NrLXdyYXBwZXIgLmJsb2NrLnF1b3RlIHsKICAgIG1hcmdpbi10b3A6IDIwcHg7CiAgfQoKICAuZHJhZy1oYW5kbGUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogLTI4cHg7CiAgICB0b3A6IDUwJTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgIHdpZHRoOiAyNHB4OwogICAgaGVpZ2h0OiAyNHB4OwogICAgY3Vyc29yOiBncmFiOwogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiM3MTcxN2EiKX07CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgfQoKICAuZHJhZy1oYW5kbGU6OmJlZm9yZSB7CiAgICBjb250ZW50OiAi4ouu4ouuIjsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGxldHRlci1zcGFjaW5nOiAtMnB4OwogIH0KCiAgLmJsb2NrLXdyYXBwZXI6aG92ZXIgLmRyYWctaGFuZGxlIHsKICAgIG9wYWNpdHk6IDE7CiAgfQoKICAuZHJhZy1oYW5kbGU6aG92ZXIgewogICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzI3MjcyYSIpfTsKICB9CgogIC5kcmFnLWhhbmRsZTphY3RpdmUgewogICAgY3Vyc29yOiBncmFiYmluZzsKICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzNmM2Y0NiIpfTsKICB9CgogIC5ibG9jay13cmFwcGVyLmRyYWdnaW5nIHsKICAgIG9wYWNpdHk6IDAuODsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogMjAwMTsKICAgIHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDsKICB9CgoKICAvKiBCbG9ja3MgdGhhdCBzaG91bGQgbW92ZSBvdXQgb2YgdGhlIHdheSAqLwogIC5ibG9jay13cmFwcGVyLm1vdmUtZG93biB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkodmFyKC0tZHJhZy1vZmZzZXQsIDBweCkpOwogIH0KCiAgLmJsb2NrLXdyYXBwZXIubW92ZS11cCB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoY2FsYygtMSAqIHZhcigtLWRyYWctb2Zmc2V0LCAwcHgpKSk7CiAgfQoKICAvKiBEcm9wIGluZGljYXRvciAqLwogIC5kcm9wLWluZGljYXRvciB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBsZWZ0OiAwOwogICAgcmlnaHQ6IDA7CiAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSg1OSwgMTMwLCAyNDYsIDAuMDUpIiwicmdiYSg1OSwgMTMwLCAyNDYsIDAuMDUpIil9OwogICAgYm9yZGVyOiAycHggZGFzaGVkICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzNiODJmNiIpfTsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIHRyYW5zaXRpb246IHRvcCAwLjJzIGVhc2UsIGhlaWdodCAwLjJzIGVhc2U7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIHotaW5kZXg6IDE5OTk7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIH0KCiAgLyogUmVtb3ZlIG9sZCBkcmFnLW92ZXIgc3R5bGVzICovCiAgLmJsb2NrLXdyYXBwZXIuZHJhZy1vdmVyLWJlZm9yZSwKICAuYmxvY2std3JhcHBlci5kcmFnLW92ZXItYWZ0ZXIgewogICAgLyogTm8gbG9uZ2VyIG5lZWRlZCwgdXNpbmcgZHJvcCBpbmRpY2F0b3IgaW5zdGVhZCAqLwogIH0KCiAgLmVkaXRvci1jb250ZW50LmRyYWdnaW5nICogewogICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgfQoKICAvKiBCbG9jayBTZXR0aW5ncyBCdXR0b24gLSBSZW1vdmVkIGluIGZhdm9yIG9mIGNvbnRleHQgbWVudSAqLwoKICAvKiBUZXh0IFNlbGVjdGlvbiBTdHlsZXMgKi8KICAuYmxvY2sgOjpzZWxlY3Rpb24gewogICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoNTksIDEzMCwgMjQ2LCAwLjIpIiwicmdiYSg1OSwgMTMwLCAyNDYsIDAuMikiKX07CiAgICBjb2xvcjogaW5oZXJpdDsKICB9CgogIC8qIEZvcm1hdHRpbmcgTWVudSAqLwogIC5mb3JtYXR0aW5nLW1lbnUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDkwOTBiIil9OwogICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMjcyNzJhIil9OwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xKSwgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNik7CiAgICBwYWRkaW5nOiA0cHg7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZ2FwOiAycHg7CiAgICB6LWluZGV4OiAxMDAxOwogICAgYW5pbWF0aW9uOiBmYWRlSW5TY2FsZSAwLjE1cyBlYXNlLW91dDsKICB9CgogIEBrZXlmcmFtZXMgZmFkZUluU2NhbGUgewogICAgZnJvbSB7CiAgICAgIG9wYWNpdHk6IDA7CiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45OCkgdHJhbnNsYXRlWSgycHgpOwogICAgfQogICAgdG8gewogICAgICBvcGFjaXR5OiAxOwogICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpIHRyYW5zbGF0ZVkoMCk7CiAgICB9CiAgfQoKICAuZm9ybWF0LWJ1dHRvbiB7CiAgICB3aWR0aDogMzJweDsKICAgIGhlaWdodDogMzJweDsKICAgIGJvcmRlcjogbm9uZTsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgfQoKICAuZm9ybWF0LWJ1dHRvbjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMyNzI3MmEiKX07CiAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzYjgyZjYiLCIjM2I4MmY2Iil9OwogIH0KCiAgLmZvcm1hdC1idXR0b246YWN0aXZlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMC45NSk7CiAgfQoKICAuZm9ybWF0LWJ1dHRvbi5ib2xkIHsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgfQoKICAuZm9ybWF0LWJ1dHRvbi5pdGFsaWMgewogICAgZm9udC1zdHlsZTogaXRhbGljOwogIH0KCiAgLmZvcm1hdC1idXR0b24udW5kZXJsaW5lIHsKICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogIH0KCiAgLmZvcm1hdC1idXR0b24gLmNvZGUtaWNvbiB7CiAgICBmb250LWZhbWlseTogJ1NGIE1vbm8nLCAnTW9uYWNvJywgJ0luY29uc29sYXRhJywgJ0ZpcmEgQ29kZScsIG1vbm9zcGFjZTsKICAgIGZvbnQtc2l6ZTogMTJweDsKICB9CgogIC8qIEFwcGxpZWQgZm9ybWF0IHN0eWxlcyBpbiBjb250ZW50ICovCiAgLmJsb2NrIHN0cm9uZywKICAuYmxvY2sgYiB7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICB9CgogIC5ibG9jayBlbSwKICAuYmxvY2sgaSB7CiAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgfQoKICAuYmxvY2sgdSB7CiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICB9CgogIC5ibG9jayBzdHJpa2UsCiAgLmJsb2NrIHMgewogICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7CiAgICBvcGFjaXR5OiAwLjc7CiAgfQoKICAuYmxvY2sgY29kZSB7CiAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMyNzI3MmEiKX07CiAgICBwYWRkaW5nOiAycHggNnB4OwogICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgZm9udC1mYW1pbHk6ICdTRiBNb25vJywgJ01vbmFjbycsICdJbmNvbnNvbGF0YScsICdGaXJhIENvZGUnLCBtb25vc3BhY2U7CiAgICBmb250LXNpemU6IDAuOWVtOwogICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICB9CgogIC5ibG9jayBhIHsKICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzNiODJmNiIsIiMzYjgyZjYiKX07CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXMgZWFzZTsKICB9CgogIC5ibG9jayBhOmhvdmVyIHsKICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzNiODJmNiIpfTsKICB9CmB9KTt2YXIgQzIsem50PWcoKCk9PntMbCgpO0MyPWNsYXNze3N0YXRpY3tpKHRoaXMsIld5c2l3eWdDb252ZXJ0ZXJzIil9c3RhdGljIGVzY2FwZUh0bWwoZSl7bGV0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIHQudGV4dENvbnRlbnQ9ZSx0LmlubmVySFRNTH1zdGF0aWMgZm9ybWF0RmlsZVNpemUoZSl7aWYoZT09PTApcmV0dXJuIjAgQnl0ZXMiO2xldCB0PTEwMjQsYT1bIkJ5dGVzIiwiS0IiLCJNQiIsIkdCIl0scj1NYXRoLmZsb29yKE1hdGgubG9nKGUpL01hdGgubG9nKHQpKTtyZXR1cm4gcGFyc2VGbG9hdCgoZS9NYXRoLnBvdyh0LHIpKS50b0ZpeGVkKDIpKSsiICIrYVtyXX1zdGF0aWMgZ2V0SHRtbE91dHB1dChlKXtyZXR1cm4gZS5tYXAodD0+e2xldCBhPXQuY29udGVudC5pbmNsdWRlcygiPCIpJiZ0LmNvbnRlbnQuaW5jbHVkZXMoIj4iKT90LmNvbnRlbnQ6dGhpcy5lc2NhcGVIdG1sKHQuY29udGVudCk7c3dpdGNoKHQudHlwZSl7Y2FzZSJwYXJhZ3JhcGgiOnJldHVybiB0LmNvbnRlbnQ/YDxwPiR7YX08L3A+YDoiIjtjYXNlImhlYWRpbmctMSI6cmV0dXJuYDxoMT4ke2F9PC9oMT5gO2Nhc2UiaGVhZGluZy0yIjpyZXR1cm5gPGgyPiR7YX08L2gyPmA7Y2FzZSJoZWFkaW5nLTMiOnJldHVybmA8aDM+JHthfTwvaDM+YDtjYXNlInF1b3RlIjpyZXR1cm5gPGJsb2NrcXVvdGU+JHthfTwvYmxvY2txdW90ZT5gO2Nhc2UiY29kZSI6cmV0dXJuYDxwcmU+PGNvZGU+JHt0aGlzLmVzY2FwZUh0bWwodC5jb250ZW50KX08L2NvZGU+PC9wcmU+YDtjYXNlImxpc3QiOmxldCByPXQuY29udGVudC5zcGxpdChgCmApLmZpbHRlcihwPT5wLnRyaW0oKSk7aWYoci5sZW5ndGg+MCl7bGV0IHA9dC5tZXRhZGF0YT8ubGlzdFR5cGU9PT0ib3JkZXJlZCI/Im9sIjoidWwiO3JldHVybmA8JHtwfT4ke3IubWFwKGQ9PmA8bGk+JHtkfTwvbGk+YCkuam9pbigiIil9PC8ke3B9PmB9cmV0dXJuIiI7Y2FzZSJkaXZpZGVyIjpyZXR1cm4iPGhyPiI7Y2FzZSJpbWFnZSI6bGV0IG49dC5tZXRhZGF0YT8udXJsO2lmKG4pe2xldCBwPXRoaXMuZXNjYXBlSHRtbCh0LmNvbnRlbnR8fCJJbWFnZSIpO3JldHVybmA8aW1nIHNyYz0iJHtufSIgYWx0PSIke3B9IiAvPmB9cmV0dXJuIiI7Y2FzZSJ5b3V0dWJlIjpsZXQgbz10Lm1ldGFkYXRhPy52aWRlb0lkO3JldHVybiBvP2A8aWZyYW1lIHdpZHRoPSI1NjAiIGhlaWdodD0iMzE1IiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLyR7b30iIGZyYW1lYm9yZGVyPSIwIiBhbGxvdz0iYWNjZWxlcm9tZXRlcjsgYXV0b3BsYXk7IGNsaXBib2FyZC13cml0ZTsgZW5jcnlwdGVkLW1lZGlhOyBneXJvc2NvcGU7IHBpY3R1cmUtaW4tcGljdHVyZSIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPmA6IiI7Y2FzZSJtYXJrZG93biI6cmV0dXJuYDxkaXYgY2xhc3M9Im1hcmtkb3duLWNvbnRlbnQiPiR7dGhpcy5lc2NhcGVIdG1sKHQuY29udGVudCl9PC9kaXY+YDtjYXNlImh0bWwiOnJldHVybiB0LmNvbnRlbnQ7Y2FzZSJhdHRhY2htZW50IjpsZXQgbD10Lm1ldGFkYXRhPy5maWxlc3x8W107cmV0dXJuIGwubGVuZ3RoPjA/YDxkaXYgY2xhc3M9ImF0dGFjaG1lbnRzIj4ke2wubWFwKHA9PmA8ZGl2IGNsYXNzPSJhdHRhY2htZW50LWl0ZW0iIGRhdGEtZmlsZS1pZD0iJHtwLmlkfSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIke3AuZGF0YX0iIGRvd25sb2FkPSIke3AubmFtZX0iPiR7dGhpcy5lc2NhcGVIdG1sKHAubmFtZSl9PC9hPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZpbGUtc2l6ZSI+KCR7dGhpcy5mb3JtYXRGaWxlU2l6ZShwLnNpemUpfSk8L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+YCkuam9pbigiIil9PC9kaXY+YDoiIjtkZWZhdWx0OnJldHVybmA8cD4ke2F9PC9wPmB9fSkuZmlsdGVyKHQ9PnQhPT0iIikuam9pbihgCmApfXN0YXRpYyBnZXRNYXJrZG93bk91dHB1dChlKXtyZXR1cm4gZS5tYXAodD0+e3N3aXRjaCh0LnR5cGUpe2Nhc2UicGFyYWdyYXBoIjpyZXR1cm4gdC5jb250ZW50O2Nhc2UiaGVhZGluZy0xIjpyZXR1cm5gIyAke3QuY29udGVudH1gO2Nhc2UiaGVhZGluZy0yIjpyZXR1cm5gIyMgJHt0LmNvbnRlbnR9YDtjYXNlImhlYWRpbmctMyI6cmV0dXJuYCMjIyAke3QuY29udGVudH1gO2Nhc2UicXVvdGUiOnJldHVybmA+ICR7dC5jb250ZW50fWA7Y2FzZSJjb2RlIjpyZXR1cm5gXGBcYFxgCiR7dC5jb250ZW50fQpcYFxgXGBgO2Nhc2UibGlzdCI6bGV0IGE9dC5jb250ZW50LnNwbGl0KGAKYCkuZmlsdGVyKGQ9PmQudHJpbSgpKTtyZXR1cm4gdC5tZXRhZGF0YT8ubGlzdFR5cGU9PT0ib3JkZXJlZCI/YS5tYXAoKGQsdSk9PmAke3UrMX0uICR7ZH1gKS5qb2luKGAKYCk6YS5tYXAoZD0+YC0gJHtkfWApLmpvaW4oYApgKTtjYXNlImRpdmlkZXIiOnJldHVybiItLS0iO2Nhc2UiaW1hZ2UiOmxldCByPXQubWV0YWRhdGE/LnVybCxuPXQuY29udGVudHx8IkltYWdlIjtyZXR1cm4gcj9gIVske259XSgke3J9KWA6IiI7Y2FzZSJ5b3V0dWJlIjpsZXQgbz10Lm1ldGFkYXRhPy52aWRlb0lkLGw9dC5tZXRhZGF0YT8udXJsfHwobz9gaHR0cHM6Ly95b3V0dWJlLmNvbS93YXRjaD92PSR7b31gOiIiKTtyZXR1cm4gbD9gW1lvdVR1YmUgVmlkZW9dKCR7bH0pYDoiIjtjYXNlIm1hcmtkb3duIjpyZXR1cm4gdC5jb250ZW50O2Nhc2UiaHRtbCI6cmV0dXJuYDwhLS0gSFRNTCBCbG9jawoke3QuY29udGVudH0KLS0+YDtjYXNlImF0dGFjaG1lbnQiOmxldCBwPXQubWV0YWRhdGE/LmZpbGVzfHxbXTtyZXR1cm4gcC5sZW5ndGg+MD9wLm1hcChkPT5gLSBbJHtkLm5hbWV9XSgke2QuZGF0YX0pYCkuam9pbihgCmApOiIiO2RlZmF1bHQ6cmV0dXJuIHQuY29udGVudH19KS5maWx0ZXIodD0+dCE9PSIiKS5qb2luKGAKCmApfXN0YXRpYyBwYXJzZUh0bWxUb0Jsb2NrcyhlKXtsZXQgYT1uZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKGUsInRleHQvaHRtbCIpLHI9W10sbj1pKG89PntpZihvLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREUmJm8udGV4dENvbnRlbnQ/LnRyaW0oKSlyLnB1c2goe2lkOmBibG9jay0ke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsOSl9YCx0eXBlOiJwYXJhZ3JhcGgiLGNvbnRlbnQ6by50ZXh0Q29udGVudC50cmltKCl9KTtlbHNlIGlmKG8ubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSl7bGV0IGw9byxwPWwudGFnTmFtZS50b0xvd2VyQ2FzZSgpO3N3aXRjaChwKXtjYXNlInAiOnIucHVzaCh7aWQ6YGJsb2NrLSR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiw5KX1gLHR5cGU6InBhcmFncmFwaCIsY29udGVudDpsLmlubmVySFRNTHx8IiJ9KTticmVhaztjYXNlImgxIjpyLnB1c2goe2lkOmBibG9jay0ke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsOSl9YCx0eXBlOiJoZWFkaW5nLTEiLGNvbnRlbnQ6bC5pbm5lckhUTUx8fCIifSk7YnJlYWs7Y2FzZSJoMiI6ci5wdXNoKHtpZDpgYmxvY2stJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLDkpfWAsdHlwZToiaGVhZGluZy0yIixjb250ZW50OmwuaW5uZXJIVE1MfHwiIn0pO2JyZWFrO2Nhc2UiaDMiOnIucHVzaCh7aWQ6YGJsb2NrLSR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiw5KX1gLHR5cGU6ImhlYWRpbmctMyIsY29udGVudDpsLmlubmVySFRNTHx8IiJ9KTticmVhaztjYXNlImJsb2NrcXVvdGUiOnIucHVzaCh7aWQ6YGJsb2NrLSR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiw5KX1gLHR5cGU6InF1b3RlIixjb250ZW50OmwuaW5uZXJIVE1MfHwiIn0pO2JyZWFrO2Nhc2UicHJlIjpjYXNlImNvZGUiOnIucHVzaCh7aWQ6YGJsb2NrLSR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiw5KX1gLHR5cGU6ImNvZGUiLGNvbnRlbnQ6bC50ZXh0Q29udGVudHx8IiJ9KTticmVhaztjYXNlInVsIjpjYXNlIm9sIjpsZXQgdT1BcnJheS5mcm9tKGwucXVlcnlTZWxlY3RvckFsbCgibGkiKSkubWFwKGI9PmIuaW5uZXJIVE1MfHwiIikuam9pbihgCmApO3IucHVzaCh7aWQ6YGJsb2NrLSR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiw5KX1gLHR5cGU6Imxpc3QiLGNvbnRlbnQ6dSxtZXRhZGF0YTp7bGlzdFR5cGU6cD09PSJvbCI/Im9yZGVyZWQiOiJidWxsZXQifX0pO2JyZWFrO2Nhc2UiaHIiOnIucHVzaCh7aWQ6YGJsb2NrLSR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiw5KX1gLHR5cGU6ImRpdmlkZXIiLGNvbnRlbnQ6IiAifSk7YnJlYWs7Y2FzZSJpbWciOmxldCBjPWw7ci5wdXNoKHtpZDpgYmxvY2stJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLDkpfWAsdHlwZToiaW1hZ2UiLGNvbnRlbnQ6Yy5hbHR8fCIiLG1ldGFkYXRhOnt1cmw6Yy5zcmN9fSk7YnJlYWs7ZGVmYXVsdDpsLmNoaWxkTm9kZXMuZm9yRWFjaChiPT5uKGIpKX19fSwicHJvY2Vzc05vZGUiKTtyZXR1cm4gYS5ib2R5LmNoaWxkTm9kZXMuZm9yRWFjaChvPT5uKG8pKSxyfXN0YXRpYyBwYXJzZU1hcmtkb3duVG9CbG9ja3MoZSl7bGV0IHQ9ZS5zcGxpdChgCmApLGE9W10scj1bXTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7bGV0IG89dFtuXTtpZihvLnN0YXJ0c1dpdGgoIiMgIikpYS5wdXNoKHtpZDpgYmxvY2stJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLDkpfWAsdHlwZToiaGVhZGluZy0xIixjb250ZW50Om8uc3Vic3RyaW5nKDIpfSk7ZWxzZSBpZihvLnN0YXJ0c1dpdGgoIiMjICIpKWEucHVzaCh7aWQ6YGJsb2NrLSR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiw5KX1gLHR5cGU6ImhlYWRpbmctMiIsY29udGVudDpvLnN1YnN0cmluZygzKX0pO2Vsc2UgaWYoby5zdGFydHNXaXRoKCIjIyMgIikpYS5wdXNoKHtpZDpgYmxvY2stJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLDkpfWAsdHlwZToiaGVhZGluZy0zIixjb250ZW50Om8uc3Vic3RyaW5nKDQpfSk7ZWxzZSBpZihvLnN0YXJ0c1dpdGgoIj4gIikpYS5wdXNoKHtpZDpgYmxvY2stJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLDkpfWAsdHlwZToicXVvdGUiLGNvbnRlbnQ6by5zdWJzdHJpbmcoMil9KTtlbHNlIGlmKG8uc3RhcnRzV2l0aCgiYGBgIikpe2xldCBsPVtdO2ZvcihuKys7bjx0Lmxlbmd0aCYmIXRbbl0uc3RhcnRzV2l0aCgiYGBgIik7KWwucHVzaCh0W25dKSxuKys7YS5wdXNoKHtpZDpgYmxvY2stJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLDkpfWAsdHlwZToiY29kZSIsY29udGVudDpsLmpvaW4oYApgKX0pfWVsc2UgaWYoby5tYXRjaCgvXihcKnwtKSAvKSlyLnB1c2goby5zdWJzdHJpbmcoMikpLChuPT09dC5sZW5ndGgtMXx8IXRbbisxXS5tYXRjaCgvXihcKnwtKSAvKSkmJihhLnB1c2goe2lkOmBibG9jay0ke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsOSl9YCx0eXBlOiJsaXN0Iixjb250ZW50OnIuam9pbihgCmApLG1ldGFkYXRhOntsaXN0VHlwZToiYnVsbGV0In19KSxyPVtdKTtlbHNlIGlmKG8ubWF0Y2goL15cZCtcLiAvKSlyLnB1c2goby5yZXBsYWNlKC9eXGQrXC4gLywiIikpLChuPT09dC5sZW5ndGgtMXx8IXRbbisxXS5tYXRjaCgvXlxkK1wuIC8pKSYmKGEucHVzaCh7aWQ6YGJsb2NrLSR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiw5KX1gLHR5cGU6Imxpc3QiLGNvbnRlbnQ6ci5qb2luKGAKYCksbWV0YWRhdGE6e2xpc3RUeXBlOiJvcmRlcmVkIn19KSxyPVtdKTtlbHNlIGlmKG89PT0iLS0tInx8bz09PSIqKioifHxvPT09Il9fXyIpYS5wdXNoKHtpZDpgYmxvY2stJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLDkpfWAsdHlwZToiZGl2aWRlciIsY29udGVudDoiICJ9KTtlbHNlIGlmKG8ubWF0Y2goL14hXFsoW15cXV0qKVxdXCgoW15cKV0rKVwpJC8pKXtsZXQgbD1vLm1hdGNoKC9eIVxbKFteXF1dKilcXVwoKFteXCldKylcKSQvKTtsJiZhLnB1c2goe2lkOmBibG9jay0ke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsOSl9YCx0eXBlOiJpbWFnZSIsY29udGVudDpsWzFdfHwiIixtZXRhZGF0YTp7dXJsOmxbMl19fSl9ZWxzZSBvLnRyaW0oKSYmYS5wdXNoKHtpZDpgYmxvY2stJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLDkpfWAsdHlwZToicGFyYWdyYXBoIixjb250ZW50Om99KX1yZXR1cm4gYX19fSk7dmFyIG1uLFJ1PWcoKCk9PntwZSgpO0xsKCk7em50KCk7bW49Y2xhc3N7c3RhdGlje2kodGhpcywiV3lzaXd5Z0Jsb2NrcyIpfXN0YXRpYyByZW5kZXJMaXN0Q29udGVudChlLHQpe2xldCBhPWUuc3BsaXQoYApgKS5maWx0ZXIobj0+bi50cmltKCkpO2lmKGEubGVuZ3RoPT09MClyZXR1cm4iIjtsZXQgcj10Py5saXN0VHlwZT09PSJvcmRlcmVkIj8ib2wiOiJ1bCI7cmV0dXJuYDwke3J9PiR7YS5tYXAobj0+YDxsaT4ke259PC9saT5gKS5qb2luKCIiKX08LyR7cn0+YH1zdGF0aWMgcmVuZGVyQmxvY2soZSx0LGEpe2lmKGUudHlwZT09PSJkaXZpZGVyIilyZXR1cm4gd2AKICAgICAgICA8ZGl2CiAgICAgICAgICBjbGFzcz0iYmxvY2sgZGl2aWRlciIKICAgICAgICAgIGRhdGEtYmxvY2staWQ9IiR7ZS5pZH0iCiAgICAgICAgPgogICAgICAgICAgPGhyPgogICAgICAgIDwvZGl2PgogICAgICBgO2lmKGUudHlwZT09PSJsaXN0IilyZXR1cm4gd2AKICAgICAgICA8ZGl2CiAgICAgICAgICBjbGFzcz0iYmxvY2sgbGlzdCAke3Q/InNlbGVjdGVkIjoiIn0iCiAgICAgICAgICBkYXRhLWJsb2NrLWlkPSIke2UuaWR9IgogICAgICAgICAgY29udGVudGVkaXRhYmxlPSJ0cnVlIgogICAgICAgICAgQGlucHV0PSIke2Eub25JbnB1dH0iCiAgICAgICAgICBAa2V5ZG93bj0iJHthLm9uS2V5RG93bn0iCiAgICAgICAgICBAZm9jdXM9IiR7YS5vbkZvY3VzfSIKICAgICAgICAgIEBibHVyPSIke2Eub25CbHVyfSIKICAgICAgICAgIEBjb21wb3NpdGlvbnN0YXJ0PSIke2Eub25Db21wb3NpdGlvblN0YXJ0fSIKICAgICAgICAgIEBjb21wb3NpdGlvbmVuZD0iJHthLm9uQ29tcG9zaXRpb25FbmR9IgogICAgICAgICAgQG1vdXNldXA9IiR7bj0+e2NvbnNvbGUubG9nKCJCbG9jayBtb3VzZXVwIGV2ZW50IGZpcmVkIiksYS5vbk1vdXNlVXAmJmEub25Nb3VzZVVwKG4pfX0iCiAgICAgICAgICAuaW5uZXJIVE1MPSIke3RoaXMucmVuZGVyTGlzdENvbnRlbnQoZS5jb250ZW50LGUubWV0YWRhdGEpfSIKICAgICAgICA+PC9kaXY+CiAgICAgIGA7aWYoZS50eXBlPT09ImNvZGUiKXtsZXQgbj1lLm1ldGFkYXRhPy5sYW5ndWFnZXx8InBsYWluIHRleHQiO3JldHVybiB3YAogICAgICAgIDxkaXYgY2xhc3M9ImNvZGUtYmxvY2stY29udGFpbmVyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvZGUtbGFuZ3VhZ2UiPiR7bn08L2Rpdj4KICAgICAgICAgIDxkaXYKICAgICAgICAgICAgY2xhc3M9ImJsb2NrICR7ZS50eXBlfSAke3Q/InNlbGVjdGVkIjoiIn0iCiAgICAgICAgICAgIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIKICAgICAgICAgICAgQGlucHV0PSIke2Eub25JbnB1dH0iCiAgICAgICAgICAgIEBrZXlkb3duPSIke2Eub25LZXlEb3dufSIKICAgICAgICAgICAgQGZvY3VzPSIke2Eub25Gb2N1c30iCiAgICAgICAgICAgIEBibHVyPSIke2Eub25CbHVyfSIKICAgICAgICAgICAgQGNvbXBvc2l0aW9uc3RhcnQ9IiR7YS5vbkNvbXBvc2l0aW9uU3RhcnR9IgogICAgICAgICAgICBAY29tcG9zaXRpb25lbmQ9IiR7YS5vbkNvbXBvc2l0aW9uRW5kfSIKICAgICAgICAgICAgQG1vdXNldXA9IiR7bz0+e2NvbnNvbGUubG9nKCJCbG9jayBtb3VzZXVwIGV2ZW50IGZpcmVkIiksYS5vbk1vdXNlVXAmJmEub25Nb3VzZVVwKG8pfX0iCiAgICAgICAgICAgIC50ZXh0Q29udGVudD0iJHtlLmNvbnRlbnR8fCIifSIKICAgICAgICAgID48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgYH1yZXR1cm4gd2AKICAgICAgPGRpdgogICAgICAgIGNsYXNzPSJibG9jayAke2UudHlwZX0gJHt0PyJzZWxlY3RlZCI6IiJ9IgogICAgICAgIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIKICAgICAgICBAaW5wdXQ9IiR7YS5vbklucHV0fSIKICAgICAgICBAa2V5ZG93bj0iJHthLm9uS2V5RG93bn0iCiAgICAgICAgQGZvY3VzPSIke2Eub25Gb2N1c30iCiAgICAgICAgQGJsdXI9IiR7YS5vbkJsdXJ9IgogICAgICAgIEBjb21wb3NpdGlvbnN0YXJ0PSIke2Eub25Db21wb3NpdGlvblN0YXJ0fSIKICAgICAgICBAY29tcG9zaXRpb25lbmQ9IiR7YS5vbkNvbXBvc2l0aW9uRW5kfSIKICAgICAgICBAbW91c2V1cD0iJHtuPT57Y29uc29sZS5sb2coIkJsb2NrIG1vdXNldXAgZXZlbnQgZmlyZWQiKSxhLm9uTW91c2VVcCYmYS5vbk1vdXNlVXAobil9fSIKICAgICAgICAuaW5uZXJIVE1MPSIke2UuY29udGVudHx8IiJ9IgogICAgICA+PC9kaXY+CiAgICBgfXN0YXRpYyBzZXRDdXJzb3JUb0VuZChlKXtsZXQgdD13aW5kb3cuZ2V0U2VsZWN0aW9uKCk7aWYoIXQpcmV0dXJuO2xldCBhPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7aWYoZS5jaGlsZE5vZGVzLmxlbmd0aD09PTApe2xldCByPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJcdTIwMEIiKTtlLmFwcGVuZENoaWxkKHIpLGEuc2V0U3RhcnQociwxKSxhLmNvbGxhcHNlKCEwKX1lbHNle2xldCByPXRoaXMuZ2V0TGFzdE5vZGUoZSk7ci5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFP2Euc2V0U3RhcnQocixyLnRleHRDb250ZW50Py5sZW5ndGh8fDApOmEuc2V0U3RhcnRBZnRlcihyKSxhLmNvbGxhcHNlKCEwKX10LnJlbW92ZUFsbFJhbmdlcygpLHQuYWRkUmFuZ2UoYSksZS50ZXh0Q29udGVudD09PSJcdTIwMEIiJiYoZS50ZXh0Q29udGVudD0iIil9c3RhdGljIHNldEN1cnNvclRvU3RhcnQoZSl7bGV0IHQ9d2luZG93LmdldFNlbGVjdGlvbigpO2lmKCF0KXJldHVybjtsZXQgYT1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO2lmKGUuY2hpbGROb2Rlcy5sZW5ndGg9PT0wKWEuc2V0U3RhcnQoZSwwKSxhLmNvbGxhcHNlKCEwKTtlbHNle2xldCByPXRoaXMuZ2V0Rmlyc3ROb2RlKGUpO3Iubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERT9hLnNldFN0YXJ0KHIsMCk6YS5zZXRTdGFydEJlZm9yZShyKSxhLmNvbGxhcHNlKCEwKX10LnJlbW92ZUFsbFJhbmdlcygpLHQuYWRkUmFuZ2UoYSl9c3RhdGljIGdldExhc3ROb2RlKGUpe2lmKGUuY2hpbGROb2Rlcy5sZW5ndGg9PT0wKXJldHVybiBlO2xldCB0PWUuY2hpbGROb2Rlc1tlLmNoaWxkTm9kZXMubGVuZ3RoLTFdO3JldHVybiB0Lm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREV8fHQuY2hpbGROb2Rlcy5sZW5ndGg9PT0wP3Q6dGhpcy5nZXRMYXN0Tm9kZSh0KX1zdGF0aWMgZ2V0Rmlyc3ROb2RlKGUpe2lmKGUuY2hpbGROb2Rlcy5sZW5ndGg9PT0wKXJldHVybiBlO2xldCB0PWUuY2hpbGROb2Rlc1swXTtyZXR1cm4gdC5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFfHx0LmNoaWxkTm9kZXMubGVuZ3RoPT09MD90OnRoaXMuZ2V0Rmlyc3ROb2RlKHQpfXN0YXRpYyBmb2N1c0xpc3RJdGVtKGUpe2xldCB0PWUucXVlcnlTZWxlY3RvcigibGkiKTtpZih0KXt0LmZvY3VzKCk7bGV0IGE9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKSxyPXdpbmRvdy5nZXRTZWxlY3Rpb24oKTthLnNlbGVjdE5vZGVDb250ZW50cyh0KSxhLmNvbGxhcHNlKCEwKSxyLnJlbW92ZUFsbFJhbmdlcygpLHIuYWRkUmFuZ2UoYSl9fX19KTt2YXIgajFlLENudD1nKCgpPT57TGwoKTtTeCgpO1pnKCk7UnUoKTtqMWU9Y2xhc3N7c3RhdGlje2kodGhpcywiV3lzaXd5Z0Jsb2NrT3BlcmF0aW9ucyIpfWNvbXBvbmVudDtjb25zdHJ1Y3RvcihlKXt0aGlzLmNvbXBvbmVudD1lfWNyZWF0ZUJsb2NrKGU9InBhcmFncmFwaCIsdD0iIixhKXtyZXR1cm57aWQ6SXIuZ2VuZXJhdGVCbG9ja0lkKCksdHlwZTplLGNvbnRlbnQ6dCwuLi5hJiZ7bWV0YWRhdGE6YX19fWFzeW5jIGluc2VydEJsb2NrQWZ0ZXIoZSx0LGE9ITApe2xldCByPXRoaXMuY29tcG9uZW50LmJsb2NrcyxuPXIuZmluZEluZGV4KG89Pm8uaWQ9PT1lLmlkKTtpZih0aGlzLmNvbXBvbmVudC5ibG9ja3M9Wy4uLnIuc2xpY2UoMCxuKzEpLHQsLi4uci5zbGljZShuKzEpXSx0aGlzLmNvbXBvbmVudC5lZGl0b3JDb250ZW50UmVmKXtsZXQgbz10aGlzLmNvbXBvbmVudC5lZGl0b3JDb250ZW50UmVmLnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWJsb2NrLWlkPSIke2UuaWR9Il1gKTtpZihvKXtsZXQgbD10aGlzLmNvbXBvbmVudC5jcmVhdGVCbG9ja0VsZW1lbnQodCk7by5pbnNlcnRBZGphY2VudEVsZW1lbnQoImFmdGVyZW5kIixsKX19dGhpcy5jb21wb25lbnQudXBkYXRlVmFsdWUoKSxhJiZ0LnR5cGUhPT0iZGl2aWRlciImJihhd2FpdCBuZXcgUHJvbWlzZShvPT5zZXRUaW1lb3V0KG8sMCkpLGF3YWl0IHRoaXMuZm9jdXNCbG9jayh0LmlkLCJzdGFydCIpKX1yZW1vdmVCbG9jayhlKXtpZih0aGlzLmNvbXBvbmVudC5zYXZlVG9IaXN0b3J5KCExKSx0aGlzLmNvbXBvbmVudC5ibG9ja3M9dGhpcy5jb21wb25lbnQuYmxvY2tzLmZpbHRlcih0PT50LmlkIT09ZSksdGhpcy5jb21wb25lbnQuZWRpdG9yQ29udGVudFJlZil7bGV0IHQ9dGhpcy5jb21wb25lbnQuZWRpdG9yQ29udGVudFJlZi5xdWVyeVNlbGVjdG9yKGBbZGF0YS1ibG9jay1pZD0iJHtlfSJdYCk7dCYmdC5yZW1vdmUoKX10aGlzLmNvbXBvbmVudC51cGRhdGVWYWx1ZSgpfWZpbmRCbG9jayhlKXtyZXR1cm4gdGhpcy5jb21wb25lbnQuYmxvY2tzLmZpbmQodD0+dC5pZD09PWUpfWdldEJsb2NrSW5kZXgoZSl7cmV0dXJuIHRoaXMuY29tcG9uZW50LmJsb2Nrcy5maW5kSW5kZXgodD0+dC5pZD09PWUpfWFzeW5jIGZvY3VzQmxvY2soZSx0PSJzdGFydCIpe2xldCBhPXRoaXMuY29tcG9uZW50LnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgW2RhdGEtYmxvY2staWQ9IiR7ZX0iXWApO2lmKGEpe2xldCByPWEucXVlcnlTZWxlY3RvcigiZGVlcy13eXNpd3lnLWJsb2NrIik7ciYmKGF3YWl0IG5ldyBQcm9taXNlKG49PnJlcXVlc3RBbmltYXRpb25GcmFtZShuKSksci5mb2N1c1dpdGhDdXJzb3IodCkpfX11cGRhdGVCbG9ja0NvbnRlbnQoZSx0KXtsZXQgYT10aGlzLmZpbmRCbG9jayhlKTthJiYoYS5jb250ZW50PXQsdGhpcy5jb21wb25lbnQudXBkYXRlVmFsdWUoKSl9dHJhbnNmb3JtQmxvY2soZSx0LGEpe2xldCByPXRoaXMuZmluZEJsb2NrKGUpO3ImJih0aGlzLmNvbXBvbmVudC5zYXZlVG9IaXN0b3J5KCExKSxyLnR5cGU9dCxyLmNvbnRlbnQ9IiIsYSYmKHIubWV0YWRhdGE9YSksdGhpcy5jb21wb25lbnQuZWRpdG9yQ29udGVudFJlZiYmdGhpcy5jb21wb25lbnQudXBkYXRlQmxvY2tFbGVtZW50KGUpLHRoaXMuY29tcG9uZW50LnVwZGF0ZVZhbHVlKCkpfW1vdmVCbG9jayhlLHQpe2xldCBhPVsuLi50aGlzLmNvbXBvbmVudC5ibG9ja3NdLHI9dGhpcy5nZXRCbG9ja0luZGV4KGUpO2lmKHI9PT0tMXx8dDwwfHx0Pj1hLmxlbmd0aClyZXR1cm47bGV0W25dPWEuc3BsaWNlKHIsMSk7YS5zcGxpY2UodCwwLG4pLHRoaXMuY29tcG9uZW50LmJsb2Nrcz1hLHRoaXMuY29tcG9uZW50LnVwZGF0ZVZhbHVlKCl9Z2V0UHJldmlvdXNCbG9jayhlKXtsZXQgdD10aGlzLmdldEJsb2NrSW5kZXgoZSk7cmV0dXJuIHQ+MD90aGlzLmNvbXBvbmVudC5ibG9ja3NbdC0xXTpudWxsfWdldE5leHRCbG9jayhlKXtsZXQgdD10aGlzLmdldEJsb2NrSW5kZXgoZSk7cmV0dXJuIHQ8dGhpcy5jb21wb25lbnQuYmxvY2tzLmxlbmd0aC0xP3RoaXMuY29tcG9uZW50LmJsb2Nrc1t0KzFdOm51bGx9fX0pO3ZhciBnaSxuYz1nKCgpPT57Z2k9Y2xhc3N7c3RhdGlje2kodGhpcywiQmFzZUJsb2NrSGFuZGxlciIpfXNldHVwKGUsdCxhKXt9Z2V0U3R5bGVzKCl7cmV0dXJuIiJ9fX0pO3ZhciBBcyxldmE9ZygoKT0+e0FzPWNsYXNze3N0YXRpY3tpKHRoaXMsIkJsb2NrUmVnaXN0cnkiKX1zdGF0aWMgaGFuZGxlcnM9bmV3IE1hcDtzdGF0aWMgcmVnaXN0ZXIoZSx0KXt0aGlzLmhhbmRsZXJzLnNldChlLHQpfXN0YXRpYyBnZXRIYW5kbGVyKGUpe3JldHVybiB0aGlzLmhhbmRsZXJzLmdldChlKX1zdGF0aWMgZ2V0QWxsVHlwZXMoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmhhbmRsZXJzLmtleXMoKSl9fX0pO3ZhciB0dmE9ZygoKT0+e30pO3ZhciBQUSxhdmE9ZygoKT0+e25jKCk7cGUoKTtSdSgpO1hkKCk7UFE9Y2xhc3MgZXh0ZW5kcyBnaXtzdGF0aWN7aSh0aGlzLCJQYXJhZ3JhcGhCbG9ja0hhbmRsZXIiKX10eXBlPSJwYXJhZ3JhcGgiO2xhc3RLbm93bkN1cnNvclBvc2l0aW9uPTA7bGFzdFNlbGVjdGVkVGV4dD0iIjtzZWxlY3Rpb25IYW5kbGVyPW51bGw7cmVuZGVyKGUsdCl7bGV0IGE9dD8iIHNlbGVjdGVkIjoiIixyPXRoaXMuZ2V0UGxhY2Vob2xkZXIoKTtyZXR1cm5gCiAgICAgIDxkaXYKICAgICAgICBjbGFzcz0iYmxvY2sgcGFyYWdyYXBoJHthfSIKICAgICAgICBjb250ZW50ZWRpdGFibGU9InRydWUiCiAgICAgICAgZGF0YS1wbGFjZWhvbGRlcj0iJHtyfSIKICAgICAgICBkYXRhLWJsb2NrLWlkPSIke2UuaWR9IgogICAgICAgIGRhdGEtYmxvY2stdHlwZT0iJHtlLnR5cGV9IgogICAgICA+PC9kaXY+CiAgICBgfXNldHVwKGUsdCxhKXtsZXQgcj1lLnF1ZXJ5U2VsZWN0b3IoIi5ibG9jay5wYXJhZ3JhcGgiKTtpZighcil7Y29uc29sZS5lcnJvcigiUGFyYWdyYXBoQmxvY2tIYW5kbGVyLnNldHVwOiBObyBwYXJhZ3JhcGggYmxvY2sgZWxlbWVudCBmb3VuZCIpO3JldHVybn10LmNvbnRlbnQmJiFyLmlubmVySFRNTCYmKHIuaW5uZXJIVE1MPXQuY29udGVudCksci5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsbj0+e2Eub25JbnB1dChuKTtsZXQgbz10aGlzLmdldEN1cnNvclBvc2l0aW9uKGUpO28hPT1udWxsJiYodGhpcy5sYXN0S25vd25DdXJzb3JQb3NpdGlvbj1vKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsbj0+e2xldCBvPXRoaXMuZ2V0Q3Vyc29yUG9zaXRpb24oZSk7byE9PW51bGwmJih0aGlzLmxhc3RLbm93bkN1cnNvclBvc2l0aW9uPW8pLGEub25LZXlEb3duKG4pfSksci5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsKCk9PnthLm9uRm9jdXMoKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsKCk9PnthLm9uQmx1cigpfSksci5hZGRFdmVudExpc3RlbmVyKCJjb21wb3NpdGlvbnN0YXJ0IiwoKT0+e2Eub25Db21wb3NpdGlvblN0YXJ0KCl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoImNvbXBvc2l0aW9uZW5kIiwoKT0+e2Eub25Db21wb3NpdGlvbkVuZCgpfSksci5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIixuPT57bGV0IG89dGhpcy5nZXRDdXJzb3JQb3NpdGlvbihlKTtvIT09bnVsbCYmKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb249byksYS5vbk1vdXNlVXA/LihuKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLG49PntzZXRUaW1lb3V0KCgpPT57bGV0IG89dGhpcy5nZXRDdXJzb3JQb3NpdGlvbihlKTtvIT09bnVsbCYmKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb249byl9LDApfSksci5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsbj0+e2xldCBvPXRoaXMuZ2V0Q3Vyc29yUG9zaXRpb24oZSk7byE9PW51bGwmJih0aGlzLmxhc3RLbm93bkN1cnNvclBvc2l0aW9uPW8pfSksdGhpcy5zZXR1cFNlbGVjdGlvbkhhbmRsZXIoZSxyLHQpfXNldHVwU2VsZWN0aW9uSGFuZGxlcihlLHQsYSl7bGV0IHI9aSgoKT0+e2xldCBvPXdpbmRvdy5nZXRTZWxlY3Rpb24oKTtpZighb3x8by5yYW5nZUNvdW50PT09MClyZXR1cm47bGV0IGw9by50b1N0cmluZygpO2lmKGwubGVuZ3RoPT09MCl7dGhpcy5sYXN0U2VsZWN0ZWRUZXh0JiYodGhpcy5sYXN0U2VsZWN0ZWRUZXh0PSIiLHRoaXMuZGlzcGF0Y2hTZWxlY3Rpb25FdmVudChlLHt0ZXh0OiIiLGJsb2NrSWQ6YS5pZCxoYXNTZWxlY3Rpb246ITF9KSk7cmV0dXJufWxldCBwPXQuZ2V0Um9vdE5vZGUoKS5ob3N0LHU9cD8uY2xvc2VzdCgiZGVlcy1pbnB1dC13eXNpd3lnIik/LnNoYWRvd1Jvb3QsYz1wPy5zaGFkb3dSb290LGI9W107dSYmYi5wdXNoKHUpLGMmJmIucHVzaChjKTtsZXQgdj0kdC5nZXRTZWxlY3Rpb25JbmZvKC4uLmIpO2lmKCF2KXJldHVybjtsZXQgeD0kdC5jb250YWluc0Fjcm9zc1NoYWRvd0RPTSh0LHYuc3RhcnRDb250YWluZXIpLG09JHQuY29udGFpbnNBY3Jvc3NTaGFkb3dET00odCx2LmVuZENvbnRhaW5lcik7aWYoeHx8bSl7aWYobCE9PXRoaXMubGFzdFNlbGVjdGVkVGV4dCl7dGhpcy5sYXN0U2VsZWN0ZWRUZXh0PWw7bGV0IGY9JHQuY3JlYXRlUmFuZ2VGcm9tSW5mbyh2KSx5PWYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dGhpcy5kaXNwYXRjaFNlbGVjdGlvbkV2ZW50KGUse3RleHQ6bC50cmltKCksYmxvY2tJZDphLmlkLHJhbmdlOmYscmVjdDp5LGhhc1NlbGVjdGlvbjohMH0pfX1lbHNlIHRoaXMubGFzdFNlbGVjdGVkVGV4dCYmKHRoaXMubGFzdFNlbGVjdGVkVGV4dD0iIix0aGlzLmRpc3BhdGNoU2VsZWN0aW9uRXZlbnQoZSx7dGV4dDoiIixibG9ja0lkOmEuaWQsaGFzU2VsZWN0aW9uOiExfSkpfSwiY2hlY2tTZWxlY3Rpb24iKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3Rpb25jaGFuZ2UiLHIpLHRoaXMuc2VsZWN0aW9uSGFuZGxlcj1yO2xldCBuPWUuY2xvc2VzdCgiZGVlcy13eXNpd3lnLWJsb2NrIik7aWYobil7bGV0IG89bi5kaXNjb25uZWN0ZWRDYWxsYmFjayxsPXRoaXM7bi5kaXNjb25uZWN0ZWRDYWxsYmFjaz1hc3luYyBmdW5jdGlvbigpe2wuc2VsZWN0aW9uSGFuZGxlciYmKGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlbGVjdGlvbmNoYW5nZSIsbC5zZWxlY3Rpb25IYW5kbGVyKSxsLnNlbGVjdGlvbkhhbmRsZXI9bnVsbCksbyYmYXdhaXQgby5jYWxsKG4pfX19ZGlzcGF0Y2hTZWxlY3Rpb25FdmVudChlLHQpe2xldCBhPW5ldyBDdXN0b21FdmVudCgiYmxvY2stdGV4dC1zZWxlY3RlZCIse2RldGFpbDp0LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KTtlLmRpc3BhdGNoRXZlbnQoYSl9Z2V0U3R5bGVzKCl7cmV0dXJuYAogICAgICAvKiBQYXJhZ3JhcGggc3BlY2lmaWMgc3R5bGVzICovCiAgICAgIC5ibG9jay5wYXJhZ3JhcGggewogICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgIH0KICAgIGB9Z2V0UGxhY2Vob2xkZXIoKXtyZXR1cm4iVHlwZSAnLycgZm9yIGNvbW1hbmRzLi4uIn1nZXRMYXN0VGV4dE5vZGUoZSl7aWYoZS5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFKXJldHVybiBlO2ZvcihsZXQgdD1lLmNoaWxkTm9kZXMubGVuZ3RoLTE7dD49MDt0LS0pe2xldCBhPXRoaXMuZ2V0TGFzdFRleHROb2RlKGUuY2hpbGROb2Rlc1t0XSk7aWYoYSlyZXR1cm4gYX1yZXR1cm4gbnVsbH1nZXRDdXJzb3JQb3NpdGlvbihlLHQpe2xldCBhPWUucXVlcnlTZWxlY3RvcigiLmJsb2NrLnBhcmFncmFwaCIpO2lmKCFhKXJldHVybiBudWxsO2xldCBvPXQ/LmNvbXBvbmVudD8uY2xvc2VzdCgiZGVlcy1pbnB1dC13eXNpd3lnIik/LnNoYWRvd1Jvb3QsbD10Py5zaGFkb3dSb290LHA9W107byYmcC5wdXNoKG8pLGwmJnAucHVzaChsKTtsZXQgZD0kdC5nZXRTZWxlY3Rpb25JbmZvKC4uLnApO2lmKCFkfHwhJHQuY29udGFpbnNBY3Jvc3NTaGFkb3dET00oYSxkLnN0YXJ0Q29udGFpbmVyKSlyZXR1cm4gbnVsbDtsZXQgdT1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO3JldHVybiB1LnNlbGVjdE5vZGVDb250ZW50cyhhKSx1LnNldEVuZChkLnN0YXJ0Q29udGFpbmVyLGQuc3RhcnRPZmZzZXQpLHUudG9TdHJpbmcoKS5sZW5ndGh9Z2V0Q29udGVudChlLHQpe2xldCBhPWUucXVlcnlTZWxlY3RvcigiLmJsb2NrLnBhcmFncmFwaCIpO3JldHVybiBhJiZhLmlubmVySFRNTHx8IiJ9c2V0Q29udGVudChlLHQsYSl7bGV0IHI9ZS5xdWVyeVNlbGVjdG9yKCIuYmxvY2sucGFyYWdyYXBoIik7aWYoIXIpcmV0dXJuO2xldCBuPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT1yfHxlLnNoYWRvd1Jvb3Q/LmFjdGl2ZUVsZW1lbnQ9PT1yO3IuaW5uZXJIVE1MPXQsbiYmci5mb2N1cygpfXNldEN1cnNvclRvU3RhcnQoZSx0KXtsZXQgYT1lLnF1ZXJ5U2VsZWN0b3IoIi5ibG9jay5wYXJhZ3JhcGgiKTthJiZtbi5zZXRDdXJzb3JUb1N0YXJ0KGEpfXNldEN1cnNvclRvRW5kKGUsdCl7bGV0IGE9ZS5xdWVyeVNlbGVjdG9yKCIuYmxvY2sucGFyYWdyYXBoIik7YSYmbW4uc2V0Q3Vyc29yVG9FbmQoYSl9Zm9jdXMoZSx0KXtsZXQgYT1lLnF1ZXJ5U2VsZWN0b3IoIi5ibG9jay5wYXJhZ3JhcGgiKTthJiYoYS5oYXNBdHRyaWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIpfHxhLnNldEF0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIiwidHJ1ZSIpLGEuZm9jdXMoKSxkb2N1bWVudC5hY3RpdmVFbGVtZW50IT09YSYmZS5zaGFkb3dSb290Py5hY3RpdmVFbGVtZW50IT09YSYmUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e2EuZm9jdXMoKX0pKX1mb2N1c1dpdGhDdXJzb3IoZSx0PSJlbmQiLGEpe2xldCByPWUucXVlcnlTZWxlY3RvcigiLmJsb2NrLnBhcmFncmFwaCIpO2lmKCFyKXJldHVybjtpZihyLmhhc0F0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIil8fHIuc2V0QXR0cmlidXRlKCJjb250ZW50ZWRpdGFibGUiLCJ0cnVlIiksdD09PSJlbmQiJiZyLnRleHRDb250ZW50JiZyLnRleHRDb250ZW50Lmxlbmd0aD4wKXtsZXQgbz13aW5kb3cuZ2V0U2VsZWN0aW9uKCk7aWYobyl7bGV0IGw9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKSxwPXRoaXMuZ2V0TGFzdFRleHROb2RlKHIpfHxyO3Aubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERT8obC5zZXRTdGFydChwLHAudGV4dENvbnRlbnQ/Lmxlbmd0aHx8MCksbC5zZXRFbmQocCxwLnRleHRDb250ZW50Py5sZW5ndGh8fDApKToobC5zZWxlY3ROb2RlQ29udGVudHMocCksbC5jb2xsYXBzZSghMSkpLG8ucmVtb3ZlQWxsUmFuZ2VzKCksby5hZGRSYW5nZShsKX19ci5mb2N1cygpO2xldCBuPWkoKCk9Pnt0PT09InN0YXJ0Ij90aGlzLnNldEN1cnNvclRvU3RhcnQoZSxhKTp0PT09ImVuZCImJighci50ZXh0Q29udGVudHx8ci50ZXh0Q29udGVudC5sZW5ndGg9PT0wKT90aGlzLnNldEN1cnNvclRvRW5kKGUsYSk6dHlwZW9mIHQ9PSJudW1iZXIiJiYkdC5zZXRDdXJzb3JQb3NpdGlvbihyLHQpfSwic2V0Q3Vyc29yIik7ZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PXJ8fGUuc2hhZG93Um9vdD8uYWN0aXZlRWxlbWVudD09PXI/bigpOlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pntkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09cnx8ZS5zaGFkb3dSb290Py5hY3RpdmVFbGVtZW50PT09cj9uKCk6c2V0VGltZW91dCgoKT0+eyhkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09cnx8ZS5zaGFkb3dSb290Py5hY3RpdmVFbGVtZW50PT09cikmJm4oKX0sMTApfSl9Z2V0U3BsaXRDb250ZW50KGUsdCl7bGV0IGE9ZS5xdWVyeVNlbGVjdG9yKCIuYmxvY2sucGFyYWdyYXBoIik7aWYoIWEpcmV0dXJuIG51bGw7bGV0IG89dD8uY29tcG9uZW50Py5jbG9zZXN0KCJkZWVzLWlucHV0LXd5c2l3eWciKT8uc2hhZG93Um9vdCxsPXQ/LnNoYWRvd1Jvb3QscD1bXTtvJiZwLnB1c2gobyksbCYmcC5wdXNoKGwpO2xldCBkPSR0LmdldFNlbGVjdGlvbkluZm8oLi4ucCk7aWYoIWQpe2lmKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb24hPT1udWxsKXtsZXQgTT1hLnRleHRDb250ZW50fHwiIix6PU1hdGgubWluKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb24sTS5sZW5ndGgpO3JldHVybntiZWZvcmU6TS5zdWJzdHJpbmcoMCx6KSxhZnRlcjpNLnN1YnN0cmluZyh6KX19cmV0dXJuIG51bGx9aWYoISR0LmNvbnRhaW5zQWNyb3NzU2hhZG93RE9NKGEsZC5zdGFydENvbnRhaW5lcikpe2lmKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb24hPT1udWxsKXtsZXQgTT1hLnRleHRDb250ZW50fHwiIix6PU1hdGgubWluKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb24sTS5sZW5ndGgpO3JldHVybntiZWZvcmU6TS5zdWJzdHJpbmcoMCx6KSxhZnRlcjpNLnN1YnN0cmluZyh6KX19cmV0dXJuIG51bGx9bGV0IHU9dGhpcy5nZXRDdXJzb3JQb3NpdGlvbihlLHQpO2lmKHU9PT1udWxsfHx1PT09MClyZXR1cm57YmVmb3JlOiIiLGFmdGVyOmEuaW5uZXJIVE1MfTtsZXQgYz1kb2N1bWVudC5jcmVhdGVSYW5nZSgpLGI9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtjLnNldFN0YXJ0KGEsMCksYy5zZXRFbmQoZC5zdGFydENvbnRhaW5lcixkLnN0YXJ0T2Zmc2V0KSxiLnNldFN0YXJ0KGQuc3RhcnRDb250YWluZXIsZC5zdGFydE9mZnNldCksYi5zZXRFbmQoYSxhLmNoaWxkTm9kZXMubGVuZ3RoKTtsZXQgdj1jLmNsb25lQ29udGVudHMoKSx4PWIuY2xvbmVDb250ZW50cygpLG09ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7bS5hcHBlbmRDaGlsZCh2KTtsZXQgZj1tLmlubmVySFRNTDttLmlubmVySFRNTD0iIixtLmFwcGVuZENoaWxkKHgpO2xldCB5PW0uaW5uZXJIVE1MO3JldHVybntiZWZvcmU6ZixhZnRlcjp5fX19fSk7dmFyIFFnLHN2YT1nKCgpPT57bmMoKTtwZSgpO1J1KCk7WGQoKTtRZz1jbGFzcyBleHRlbmRzIGdpe3N0YXRpY3tpKHRoaXMsIkhlYWRpbmdCbG9ja0hhbmRsZXIiKX10eXBlO2xldmVsO2xhc3RLbm93bkN1cnNvclBvc2l0aW9uPTA7bGFzdFNlbGVjdGVkVGV4dD0iIjtzZWxlY3Rpb25IYW5kbGVyPW51bGw7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLnR5cGU9ZSx0aGlzLmxldmVsPXBhcnNlSW50KGUuc3BsaXQoIi0iKVsxXSl9cmVuZGVyKGUsdCl7bGV0IGE9dD8iIHNlbGVjdGVkIjoiIixyPXRoaXMuZ2V0UGxhY2Vob2xkZXIoKTtyZXR1cm5gCiAgICAgIDxkaXYKICAgICAgICBjbGFzcz0iYmxvY2sgaGVhZGluZy0ke3RoaXMubGV2ZWx9JHthfSIKICAgICAgICBjb250ZW50ZWRpdGFibGU9InRydWUiCiAgICAgICAgZGF0YS1wbGFjZWhvbGRlcj0iJHtyfSIKICAgICAgICBkYXRhLWJsb2NrLWlkPSIke2UuaWR9IgogICAgICAgIGRhdGEtYmxvY2stdHlwZT0iJHtlLnR5cGV9IgogICAgICA+PC9kaXY+CiAgICBgfXNldHVwKGUsdCxhKXtsZXQgcj1lLnF1ZXJ5U2VsZWN0b3IoYC5ibG9jay5oZWFkaW5nLSR7dGhpcy5sZXZlbH1gKTtpZighcil7Y29uc29sZS5lcnJvcigiSGVhZGluZ0Jsb2NrSGFuZGxlci5zZXR1cDogTm8gaGVhZGluZyBibG9jayBlbGVtZW50IGZvdW5kIik7cmV0dXJufXQuY29udGVudCYmIXIuaW5uZXJIVE1MJiYoci5pbm5lckhUTUw9dC5jb250ZW50KSxyLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IixuPT57YS5vbklucHV0KG4pO2xldCBvPXRoaXMuZ2V0Q3Vyc29yUG9zaXRpb24oZSk7byE9PW51bGwmJih0aGlzLmxhc3RLbm93bkN1cnNvclBvc2l0aW9uPW8pfSksci5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixuPT57bGV0IG89dGhpcy5nZXRDdXJzb3JQb3NpdGlvbihlKTtvIT09bnVsbCYmKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb249byksYS5vbktleURvd24obil9KSxyLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwoKT0+e2Eub25Gb2N1cygpfSksci5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwoKT0+e2Eub25CbHVyKCl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoImNvbXBvc2l0aW9uc3RhcnQiLCgpPT57YS5vbkNvbXBvc2l0aW9uU3RhcnQoKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigiY29tcG9zaXRpb25lbmQiLCgpPT57YS5vbkNvbXBvc2l0aW9uRW5kKCl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLG49PntsZXQgbz10aGlzLmdldEN1cnNvclBvc2l0aW9uKGUpO28hPT1udWxsJiYodGhpcy5sYXN0S25vd25DdXJzb3JQb3NpdGlvbj1vKSxhLm9uTW91c2VVcD8uKG4pfSksci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsbj0+e3NldFRpbWVvdXQoKCk9PntsZXQgbz10aGlzLmdldEN1cnNvclBvc2l0aW9uKGUpO28hPT1udWxsJiYodGhpcy5sYXN0S25vd25DdXJzb3JQb3NpdGlvbj1vKX0sMCl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIixuPT57bGV0IG89dGhpcy5nZXRDdXJzb3JQb3NpdGlvbihlKTtvIT09bnVsbCYmKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb249byl9KSx0aGlzLnNldHVwU2VsZWN0aW9uSGFuZGxlcihlLHIsdCl9c2V0dXBTZWxlY3Rpb25IYW5kbGVyKGUsdCxhKXtsZXQgcj1pKCgpPT57bGV0IG89d2luZG93LmdldFNlbGVjdGlvbigpO2lmKCFvfHxvLnJhbmdlQ291bnQ9PT0wKXJldHVybjtsZXQgbD1vLnRvU3RyaW5nKCk7aWYobC5sZW5ndGg9PT0wKXt0aGlzLmxhc3RTZWxlY3RlZFRleHQmJih0aGlzLmxhc3RTZWxlY3RlZFRleHQ9IiIsdGhpcy5kaXNwYXRjaFNlbGVjdGlvbkV2ZW50KGUse3RleHQ6IiIsYmxvY2tJZDphLmlkLGhhc1NlbGVjdGlvbjohMX0pKTtyZXR1cm59bGV0IHA9dC5nZXRSb290Tm9kZSgpLmhvc3QsdT1wPy5jbG9zZXN0KCJkZWVzLWlucHV0LXd5c2l3eWciKT8uc2hhZG93Um9vdCxjPXA/LnNoYWRvd1Jvb3QsYj1bXTt1JiZiLnB1c2godSksYyYmYi5wdXNoKGMpO2xldCB2PSR0LmdldFNlbGVjdGlvbkluZm8oLi4uYik7aWYoIXYpcmV0dXJuO2xldCB4PSR0LmNvbnRhaW5zQWNyb3NzU2hhZG93RE9NKHQsdi5zdGFydENvbnRhaW5lciksbT0kdC5jb250YWluc0Fjcm9zc1NoYWRvd0RPTSh0LHYuZW5kQ29udGFpbmVyKTtpZih4fHxtKXtpZihsIT09dGhpcy5sYXN0U2VsZWN0ZWRUZXh0KXt0aGlzLmxhc3RTZWxlY3RlZFRleHQ9bDtsZXQgZj0kdC5jcmVhdGVSYW5nZUZyb21JbmZvKHYpLHk9Zi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0aGlzLmRpc3BhdGNoU2VsZWN0aW9uRXZlbnQoZSx7dGV4dDpsLnRyaW0oKSxibG9ja0lkOmEuaWQscmFuZ2U6ZixyZWN0OnksaGFzU2VsZWN0aW9uOiEwfSl9fWVsc2UgdGhpcy5sYXN0U2VsZWN0ZWRUZXh0JiYodGhpcy5sYXN0U2VsZWN0ZWRUZXh0PSIiLHRoaXMuZGlzcGF0Y2hTZWxlY3Rpb25FdmVudChlLHt0ZXh0OiIiLGJsb2NrSWQ6YS5pZCxoYXNTZWxlY3Rpb246ITF9KSl9LCJjaGVja1NlbGVjdGlvbiIpO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdGlvbmNoYW5nZSIsciksdGhpcy5zZWxlY3Rpb25IYW5kbGVyPXI7bGV0IG49dC5nZXRSb290Tm9kZSgpLmhvc3Q7aWYobil7bGV0IG89bi5kaXNjb25uZWN0ZWRDYWxsYmFjayxsPXRoaXM7bi5kaXNjb25uZWN0ZWRDYWxsYmFjaz1hc3luYyBmdW5jdGlvbigpe2wuc2VsZWN0aW9uSGFuZGxlciYmKGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlbGVjdGlvbmNoYW5nZSIsbC5zZWxlY3Rpb25IYW5kbGVyKSxsLnNlbGVjdGlvbkhhbmRsZXI9bnVsbCksbyYmYXdhaXQgby5jYWxsKG4pfX19ZGlzcGF0Y2hTZWxlY3Rpb25FdmVudChlLHQpe2xldCBhPW5ldyBDdXN0b21FdmVudCgiYmxvY2stdGV4dC1zZWxlY3RlZCIse2RldGFpbDp0LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KTtlLmRpc3BhdGNoRXZlbnQoYSl9Z2V0U3R5bGVzKCl7cmV0dXJuYAogICAgICAuYmxvY2suaGVhZGluZy0xIHsKICAgICAgICBmb250LXNpemU6IDMycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICBsaW5lLWhlaWdodDogMS4yOwogICAgICAgIG1hcmdpbjogMjRweCAwIDhweCAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzAwMDAwMCIsIiNmZmZmZmYiKX07CiAgICAgIH0KCiAgICAgIC5ibG9jay5oZWFkaW5nLTIgewogICAgICAgIGZvbnQtc2l6ZTogMjRweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM7CiAgICAgICAgbWFyZ2luOiAyMHB4IDAgNnB4IDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDAwMDAwIiwiI2ZmZmZmZiIpfTsKICAgICAgfQoKICAgICAgLmJsb2NrLmhlYWRpbmctMyB7CiAgICAgICAgZm9udC1zaXplOiAyMHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDsKICAgICAgICBtYXJnaW46IDE2cHggMCA0cHggMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwMDAwMDAiLCIjZmZmZmZmIil9OwogICAgICB9CiAgICBgfWdldFBsYWNlaG9sZGVyKCl7c3dpdGNoKHRoaXMubGV2ZWwpe2Nhc2UgMTpyZXR1cm4iSGVhZGluZyAxIjtjYXNlIDI6cmV0dXJuIkhlYWRpbmcgMiI7Y2FzZSAzOnJldHVybiJIZWFkaW5nIDMiO2RlZmF1bHQ6cmV0dXJuIkhlYWRpbmcifX1nZXRMYXN0VGV4dE5vZGUoZSl7aWYoZS5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFKXJldHVybiBlO2ZvcihsZXQgdD1lLmNoaWxkTm9kZXMubGVuZ3RoLTE7dD49MDt0LS0pe2xldCBhPXRoaXMuZ2V0TGFzdFRleHROb2RlKGUuY2hpbGROb2Rlc1t0XSk7aWYoYSlyZXR1cm4gYX1yZXR1cm4gbnVsbH1nZXRDdXJzb3JQb3NpdGlvbihlLHQpe2xldCBhPWUucXVlcnlTZWxlY3RvcihgLmJsb2NrLmhlYWRpbmctJHt0aGlzLmxldmVsfWApO2lmKCFhKXJldHVybiBudWxsO2xldCBvPXQ/LmNvbXBvbmVudD8uY2xvc2VzdCgiZGVlcy1pbnB1dC13eXNpd3lnIik/LnNoYWRvd1Jvb3QsbD10Py5zaGFkb3dSb290LHA9W107byYmcC5wdXNoKG8pLGwmJnAucHVzaChsKTtsZXQgZD0kdC5nZXRTZWxlY3Rpb25JbmZvKC4uLnApO2lmKCFkfHwhJHQuY29udGFpbnNBY3Jvc3NTaGFkb3dET00oYSxkLnN0YXJ0Q29udGFpbmVyKSlyZXR1cm4gbnVsbDtsZXQgdT1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO3JldHVybiB1LnNlbGVjdE5vZGVDb250ZW50cyhhKSx1LnNldEVuZChkLnN0YXJ0Q29udGFpbmVyLGQuc3RhcnRPZmZzZXQpLHUudG9TdHJpbmcoKS5sZW5ndGh9Z2V0Q29udGVudChlLHQpe2xldCBhPWUucXVlcnlTZWxlY3RvcihgLmJsb2NrLmhlYWRpbmctJHt0aGlzLmxldmVsfWApO3JldHVybiBhJiZhLmlubmVySFRNTHx8IiJ9c2V0Q29udGVudChlLHQsYSl7bGV0IHI9ZS5xdWVyeVNlbGVjdG9yKGAuYmxvY2suaGVhZGluZy0ke3RoaXMubGV2ZWx9YCk7aWYoIXIpcmV0dXJuO2xldCBuPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT1yfHxlLnNoYWRvd1Jvb3Q/LmFjdGl2ZUVsZW1lbnQ9PT1yO3IuaW5uZXJIVE1MPXQsbiYmci5mb2N1cygpfXNldEN1cnNvclRvU3RhcnQoZSx0KXtsZXQgYT1lLnF1ZXJ5U2VsZWN0b3IoYC5ibG9jay5oZWFkaW5nLSR7dGhpcy5sZXZlbH1gKTthJiZtbi5zZXRDdXJzb3JUb1N0YXJ0KGEpfXNldEN1cnNvclRvRW5kKGUsdCl7bGV0IGE9ZS5xdWVyeVNlbGVjdG9yKGAuYmxvY2suaGVhZGluZy0ke3RoaXMubGV2ZWx9YCk7YSYmbW4uc2V0Q3Vyc29yVG9FbmQoYSl9Zm9jdXMoZSx0KXtsZXQgYT1lLnF1ZXJ5U2VsZWN0b3IoYC5ibG9jay5oZWFkaW5nLSR7dGhpcy5sZXZlbH1gKTthJiYoYS5oYXNBdHRyaWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIpfHxhLnNldEF0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIiwidHJ1ZSIpLGEuZm9jdXMoKSxkb2N1bWVudC5hY3RpdmVFbGVtZW50IT09YSYmZS5zaGFkb3dSb290Py5hY3RpdmVFbGVtZW50IT09YSYmUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e2EuZm9jdXMoKX0pKX1mb2N1c1dpdGhDdXJzb3IoZSx0PSJlbmQiLGEpe2xldCByPWUucXVlcnlTZWxlY3RvcihgLmJsb2NrLmhlYWRpbmctJHt0aGlzLmxldmVsfWApO2lmKCFyKXJldHVybjtpZihyLmhhc0F0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIil8fHIuc2V0QXR0cmlidXRlKCJjb250ZW50ZWRpdGFibGUiLCJ0cnVlIiksdD09PSJlbmQiJiZyLnRleHRDb250ZW50JiZyLnRleHRDb250ZW50Lmxlbmd0aD4wKXtsZXQgbz13aW5kb3cuZ2V0U2VsZWN0aW9uKCk7aWYobyl7bGV0IGw9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKSxwPXRoaXMuZ2V0TGFzdFRleHROb2RlKHIpfHxyO3Aubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERT8obC5zZXRTdGFydChwLHAudGV4dENvbnRlbnQ/Lmxlbmd0aHx8MCksbC5zZXRFbmQocCxwLnRleHRDb250ZW50Py5sZW5ndGh8fDApKToobC5zZWxlY3ROb2RlQ29udGVudHMocCksbC5jb2xsYXBzZSghMSkpLG8ucmVtb3ZlQWxsUmFuZ2VzKCksby5hZGRSYW5nZShsKX19ci5mb2N1cygpO2xldCBuPWkoKCk9Pnt0PT09InN0YXJ0Ij90aGlzLnNldEN1cnNvclRvU3RhcnQoZSxhKTp0PT09ImVuZCImJighci50ZXh0Q29udGVudHx8ci50ZXh0Q29udGVudC5sZW5ndGg9PT0wKT90aGlzLnNldEN1cnNvclRvRW5kKGUsYSk6dHlwZW9mIHQ9PSJudW1iZXIiJiYkdC5zZXRDdXJzb3JQb3NpdGlvbihyLHQpfSwic2V0Q3Vyc29yIik7ZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PXJ8fGUuc2hhZG93Um9vdD8uYWN0aXZlRWxlbWVudD09PXI/bigpOlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pntkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09cnx8ZS5zaGFkb3dSb290Py5hY3RpdmVFbGVtZW50PT09cj9uKCk6c2V0VGltZW91dCgoKT0+eyhkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09cnx8ZS5zaGFkb3dSb290Py5hY3RpdmVFbGVtZW50PT09cikmJm4oKX0sMTApfSl9Z2V0U3BsaXRDb250ZW50KGUsdCl7bGV0IGE9ZS5xdWVyeVNlbGVjdG9yKGAuYmxvY2suaGVhZGluZy0ke3RoaXMubGV2ZWx9YCk7aWYoIWEpcmV0dXJuIG51bGw7bGV0IG89dD8uY29tcG9uZW50Py5jbG9zZXN0KCJkZWVzLWlucHV0LXd5c2l3eWciKT8uc2hhZG93Um9vdCxsPXQ/LnNoYWRvd1Jvb3QscD1bXTtvJiZwLnB1c2gobyksbCYmcC5wdXNoKGwpO2xldCBkPSR0LmdldFNlbGVjdGlvbkluZm8oLi4ucCk7aWYoIWQpe2lmKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb24hPT1udWxsKXtsZXQgTT1hLnRleHRDb250ZW50fHwiIix6PU1hdGgubWluKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb24sTS5sZW5ndGgpO3JldHVybntiZWZvcmU6TS5zdWJzdHJpbmcoMCx6KSxhZnRlcjpNLnN1YnN0cmluZyh6KX19cmV0dXJuIG51bGx9aWYoISR0LmNvbnRhaW5zQWNyb3NzU2hhZG93RE9NKGEsZC5zdGFydENvbnRhaW5lcikpe2lmKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb24hPT1udWxsKXtsZXQgTT1hLnRleHRDb250ZW50fHwiIix6PU1hdGgubWluKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb24sTS5sZW5ndGgpO3JldHVybntiZWZvcmU6TS5zdWJzdHJpbmcoMCx6KSxhZnRlcjpNLnN1YnN0cmluZyh6KX19cmV0dXJuIG51bGx9bGV0IHU9dGhpcy5nZXRDdXJzb3JQb3NpdGlvbihlLHQpO2lmKHU9PT1udWxsfHx1PT09MClyZXR1cm57YmVmb3JlOiIiLGFmdGVyOmEuaW5uZXJIVE1MfTtsZXQgYz1kb2N1bWVudC5jcmVhdGVSYW5nZSgpLGI9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtjLnNldFN0YXJ0KGEsMCksYy5zZXRFbmQoZC5zdGFydENvbnRhaW5lcixkLnN0YXJ0T2Zmc2V0KSxiLnNldFN0YXJ0KGQuc3RhcnRDb250YWluZXIsZC5zdGFydE9mZnNldCksYi5zZXRFbmQoYSxhLmNoaWxkTm9kZXMubGVuZ3RoKTtsZXQgdj1jLmNsb25lQ29udGVudHMoKSx4PWIuY2xvbmVDb250ZW50cygpLG09ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7bS5hcHBlbmRDaGlsZCh2KTtsZXQgZj1tLmlubmVySFRNTDttLmlubmVySFRNTD0iIixtLmFwcGVuZENoaWxkKHgpO2xldCB5PW0uaW5uZXJIVE1MO3JldHVybntiZWZvcmU6ZixhZnRlcjp5fX19fSk7dmFyIElRLGl2YT1nKCgpPT57bmMoKTtwZSgpO1J1KCk7WGQoKTtJUT1jbGFzcyBleHRlbmRzIGdpe3N0YXRpY3tpKHRoaXMsIlF1b3RlQmxvY2tIYW5kbGVyIil9dHlwZT0icXVvdGUiO2xhc3RLbm93bkN1cnNvclBvc2l0aW9uPTA7bGFzdFNlbGVjdGVkVGV4dD0iIjtzZWxlY3Rpb25IYW5kbGVyPW51bGw7cmVuZGVyKGUsdCl7bGV0IGE9dD8iIHNlbGVjdGVkIjoiIixyPXRoaXMuZ2V0UGxhY2Vob2xkZXIoKTtyZXR1cm5gCiAgICAgIDxkaXYKICAgICAgICBjbGFzcz0iYmxvY2sgcXVvdGUke2F9IgogICAgICAgIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIKICAgICAgICBkYXRhLXBsYWNlaG9sZGVyPSIke3J9IgogICAgICAgIGRhdGEtYmxvY2staWQ9IiR7ZS5pZH0iCiAgICAgICAgZGF0YS1ibG9jay10eXBlPSIke2UudHlwZX0iCiAgICAgID48L2Rpdj4KICAgIGB9c2V0dXAoZSx0LGEpe2xldCByPWUucXVlcnlTZWxlY3RvcigiLmJsb2NrLnF1b3RlIik7aWYoIXIpe2NvbnNvbGUuZXJyb3IoIlF1b3RlQmxvY2tIYW5kbGVyLnNldHVwOiBObyBxdW90ZSBibG9jayBlbGVtZW50IGZvdW5kIik7cmV0dXJufXQuY29udGVudCYmIXIuaW5uZXJIVE1MJiYoci5pbm5lckhUTUw9dC5jb250ZW50KSxyLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IixuPT57YS5vbklucHV0KG4pO2xldCBvPXRoaXMuZ2V0Q3Vyc29yUG9zaXRpb24oZSk7byE9PW51bGwmJih0aGlzLmxhc3RLbm93bkN1cnNvclBvc2l0aW9uPW8pfSksci5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixuPT57bGV0IG89dGhpcy5nZXRDdXJzb3JQb3NpdGlvbihlKTtvIT09bnVsbCYmKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb249byksYS5vbktleURvd24obil9KSxyLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwoKT0+e2Eub25Gb2N1cygpfSksci5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwoKT0+e2Eub25CbHVyKCl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoImNvbXBvc2l0aW9uc3RhcnQiLCgpPT57YS5vbkNvbXBvc2l0aW9uU3RhcnQoKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigiY29tcG9zaXRpb25lbmQiLCgpPT57YS5vbkNvbXBvc2l0aW9uRW5kKCl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLG49PntsZXQgbz10aGlzLmdldEN1cnNvclBvc2l0aW9uKGUpO28hPT1udWxsJiYodGhpcy5sYXN0S25vd25DdXJzb3JQb3NpdGlvbj1vKSxhLm9uTW91c2VVcD8uKG4pfSksci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsbj0+e3NldFRpbWVvdXQoKCk9PntsZXQgbz10aGlzLmdldEN1cnNvclBvc2l0aW9uKGUpO28hPT1udWxsJiYodGhpcy5sYXN0S25vd25DdXJzb3JQb3NpdGlvbj1vKX0sMCl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIixuPT57bGV0IG89dGhpcy5nZXRDdXJzb3JQb3NpdGlvbihlKTtvIT09bnVsbCYmKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb249byl9KSx0aGlzLnNldHVwU2VsZWN0aW9uSGFuZGxlcihlLHIsdCl9c2V0dXBTZWxlY3Rpb25IYW5kbGVyKGUsdCxhKXtsZXQgcj1pKCgpPT57bGV0IG89d2luZG93LmdldFNlbGVjdGlvbigpO2lmKCFvfHxvLnJhbmdlQ291bnQ9PT0wKXJldHVybjtsZXQgbD1vLnRvU3RyaW5nKCk7aWYobC5sZW5ndGg9PT0wKXt0aGlzLmxhc3RTZWxlY3RlZFRleHQmJih0aGlzLmxhc3RTZWxlY3RlZFRleHQ9IiIsdGhpcy5kaXNwYXRjaFNlbGVjdGlvbkV2ZW50KGUse3RleHQ6IiIsYmxvY2tJZDphLmlkLGhhc1NlbGVjdGlvbjohMX0pKTtyZXR1cm59bGV0IHA9dC5nZXRSb290Tm9kZSgpLmhvc3QsdT1wPy5jbG9zZXN0KCJkZWVzLWlucHV0LXd5c2l3eWciKT8uc2hhZG93Um9vdCxjPXA/LnNoYWRvd1Jvb3QsYj1bXTt1JiZiLnB1c2godSksYyYmYi5wdXNoKGMpO2xldCB2PSR0LmdldFNlbGVjdGlvbkluZm8oLi4uYik7aWYoIXYpcmV0dXJuO2xldCB4PSR0LmNvbnRhaW5zQWNyb3NzU2hhZG93RE9NKHQsdi5zdGFydENvbnRhaW5lciksbT0kdC5jb250YWluc0Fjcm9zc1NoYWRvd0RPTSh0LHYuZW5kQ29udGFpbmVyKTtpZih4fHxtKXtpZihsIT09dGhpcy5sYXN0U2VsZWN0ZWRUZXh0KXt0aGlzLmxhc3RTZWxlY3RlZFRleHQ9bDtsZXQgZj0kdC5jcmVhdGVSYW5nZUZyb21JbmZvKHYpLHk9Zi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0aGlzLmRpc3BhdGNoU2VsZWN0aW9uRXZlbnQoZSx7dGV4dDpsLnRyaW0oKSxibG9ja0lkOmEuaWQscmFuZ2U6ZixyZWN0OnksaGFzU2VsZWN0aW9uOiEwfSl9fWVsc2UgdGhpcy5sYXN0U2VsZWN0ZWRUZXh0JiYodGhpcy5sYXN0U2VsZWN0ZWRUZXh0PSIiLHRoaXMuZGlzcGF0Y2hTZWxlY3Rpb25FdmVudChlLHt0ZXh0OiIiLGJsb2NrSWQ6YS5pZCxoYXNTZWxlY3Rpb246ITF9KSl9LCJjaGVja1NlbGVjdGlvbiIpO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdGlvbmNoYW5nZSIsciksdGhpcy5zZWxlY3Rpb25IYW5kbGVyPXI7bGV0IG49dC5nZXRSb290Tm9kZSgpLmhvc3Q7aWYobil7bGV0IG89bi5kaXNjb25uZWN0ZWRDYWxsYmFjayxsPXRoaXM7bi5kaXNjb25uZWN0ZWRDYWxsYmFjaz1hc3luYyBmdW5jdGlvbigpe2wuc2VsZWN0aW9uSGFuZGxlciYmKGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlbGVjdGlvbmNoYW5nZSIsbC5zZWxlY3Rpb25IYW5kbGVyKSxsLnNlbGVjdGlvbkhhbmRsZXI9bnVsbCksbyYmYXdhaXQgby5jYWxsKG4pfX19ZGlzcGF0Y2hTZWxlY3Rpb25FdmVudChlLHQpe2xldCBhPW5ldyBDdXN0b21FdmVudCgiYmxvY2stdGV4dC1zZWxlY3RlZCIse2RldGFpbDp0LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KTtlLmRpc3BhdGNoRXZlbnQoYSl9Z2V0U3R5bGVzKCl7cmV0dXJuYAogICAgICAvKiBRdW90ZSBzcGVjaWZpYyBzdHlsZXMgKi8KICAgICAgLmJsb2NrLnF1b3RlIHsKICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkICR7aC5iZFRoZW1lKCIjMDA2NmNjIiwiIzRkOTRmZiIpfTsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNTU1IiwiI2IwYjBiMCIpfTsKICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICBtYXJnaW46IDE2cHggMDsKICAgICAgfQogICAgYH1nZXRQbGFjZWhvbGRlcigpe3JldHVybiJBZGQgYSBxdW90ZS4uLiJ9Z2V0Q3Vyc29yUG9zaXRpb24oZSx0KXtsZXQgYT1lLnF1ZXJ5U2VsZWN0b3IoIi5ibG9jay5xdW90ZSIpO2lmKCFhKXJldHVybiBudWxsO2xldCBvPXQ/LmNvbXBvbmVudD8uY2xvc2VzdCgiZGVlcy1pbnB1dC13eXNpd3lnIik/LnNoYWRvd1Jvb3QsbD10Py5zaGFkb3dSb290LHA9W107byYmcC5wdXNoKG8pLGwmJnAucHVzaChsKTtsZXQgZD0kdC5nZXRTZWxlY3Rpb25JbmZvKC4uLnApO2lmKCFkfHwhJHQuY29udGFpbnNBY3Jvc3NTaGFkb3dET00oYSxkLnN0YXJ0Q29udGFpbmVyKSlyZXR1cm4gbnVsbDtsZXQgdT1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO3JldHVybiB1LnNlbGVjdE5vZGVDb250ZW50cyhhKSx1LnNldEVuZChkLnN0YXJ0Q29udGFpbmVyLGQuc3RhcnRPZmZzZXQpLHUudG9TdHJpbmcoKS5sZW5ndGh9Z2V0Q29udGVudChlLHQpe2xldCBhPWUucXVlcnlTZWxlY3RvcigiLmJsb2NrLnF1b3RlIik7cmV0dXJuIGEmJmEuaW5uZXJIVE1MfHwiIn1zZXRDb250ZW50KGUsdCxhKXtsZXQgcj1lLnF1ZXJ5U2VsZWN0b3IoIi5ibG9jay5xdW90ZSIpO2lmKCFyKXJldHVybjtsZXQgbj1kb2N1bWVudC5hY3RpdmVFbGVtZW50PT09cnx8ZS5zaGFkb3dSb290Py5hY3RpdmVFbGVtZW50PT09cjtyLmlubmVySFRNTD10LG4mJnIuZm9jdXMoKX1zZXRDdXJzb3JUb1N0YXJ0KGUsdCl7bGV0IGE9ZS5xdWVyeVNlbGVjdG9yKCIuYmxvY2sucXVvdGUiKTthJiZtbi5zZXRDdXJzb3JUb1N0YXJ0KGEpfXNldEN1cnNvclRvRW5kKGUsdCl7bGV0IGE9ZS5xdWVyeVNlbGVjdG9yKCIuYmxvY2sucXVvdGUiKTthJiZtbi5zZXRDdXJzb3JUb0VuZChhKX1mb2N1cyhlLHQpe2xldCBhPWUucXVlcnlTZWxlY3RvcigiLmJsb2NrLnF1b3RlIik7YSYmKGEuaGFzQXR0cmlidXRlKCJjb250ZW50ZWRpdGFibGUiKXx8YS5zZXRBdHRyaWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIsInRydWUiKSxhLmZvY3VzKCksZG9jdW1lbnQuYWN0aXZlRWxlbWVudCE9PWEmJmUuc2hhZG93Um9vdD8uYWN0aXZlRWxlbWVudCE9PWEmJlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnthLmZvY3VzKCl9KSl9Zm9jdXNXaXRoQ3Vyc29yKGUsdD0iZW5kIixhKXtsZXQgcj1lLnF1ZXJ5U2VsZWN0b3IoIi5ibG9jay5xdW90ZSIpO2lmKCFyKXJldHVybjtyLmhhc0F0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIil8fHIuc2V0QXR0cmlidXRlKCJjb250ZW50ZWRpdGFibGUiLCJ0cnVlIiksci5mb2N1cygpO2xldCBuPWkoKCk9Pnt0PT09InN0YXJ0Ij90aGlzLnNldEN1cnNvclRvU3RhcnQoZSxhKTp0PT09ImVuZCI/dGhpcy5zZXRDdXJzb3JUb0VuZChlLGEpOnR5cGVvZiB0PT0ibnVtYmVyIiYmJHQuc2V0Q3Vyc29yUG9zaXRpb24ocix0KX0sInNldEN1cnNvciIpO2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT1yfHxlLnNoYWRvd1Jvb3Q/LmFjdGl2ZUVsZW1lbnQ9PT1yP24oKTpQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT57KGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT1yfHxlLnNoYWRvd1Jvb3Q/LmFjdGl2ZUVsZW1lbnQ9PT1yKSYmbigpfSl9Z2V0U3BsaXRDb250ZW50KGUsdCl7bGV0IGE9ZS5xdWVyeVNlbGVjdG9yKCIuYmxvY2sucXVvdGUiKTtpZighYSlyZXR1cm4gbnVsbDtsZXQgbz10Py5jb21wb25lbnQ/LmNsb3Nlc3QoImRlZXMtaW5wdXQtd3lzaXd5ZyIpPy5zaGFkb3dSb290LGw9dD8uc2hhZG93Um9vdCxwPVtdO28mJnAucHVzaChvKSxsJiZwLnB1c2gobCk7bGV0IGQ9JHQuZ2V0U2VsZWN0aW9uSW5mbyguLi5wKTtpZighZCl7aWYodGhpcy5sYXN0S25vd25DdXJzb3JQb3NpdGlvbiE9PW51bGwpe2xldCBNPWEudGV4dENvbnRlbnR8fCIiLHo9TWF0aC5taW4odGhpcy5sYXN0S25vd25DdXJzb3JQb3NpdGlvbixNLmxlbmd0aCk7cmV0dXJue2JlZm9yZTpNLnN1YnN0cmluZygwLHopLGFmdGVyOk0uc3Vic3RyaW5nKHopfX1yZXR1cm4gbnVsbH1pZighJHQuY29udGFpbnNBY3Jvc3NTaGFkb3dET00oYSxkLnN0YXJ0Q29udGFpbmVyKSl7aWYodGhpcy5sYXN0S25vd25DdXJzb3JQb3NpdGlvbiE9PW51bGwpe2xldCBNPWEudGV4dENvbnRlbnR8fCIiLHo9TWF0aC5taW4odGhpcy5sYXN0S25vd25DdXJzb3JQb3NpdGlvbixNLmxlbmd0aCk7cmV0dXJue2JlZm9yZTpNLnN1YnN0cmluZygwLHopLGFmdGVyOk0uc3Vic3RyaW5nKHopfX1yZXR1cm4gbnVsbH1sZXQgdT10aGlzLmdldEN1cnNvclBvc2l0aW9uKGUsdCk7aWYodT09PW51bGx8fHU9PT0wKXJldHVybntiZWZvcmU6IiIsYWZ0ZXI6YS5pbm5lckhUTUx9O2xldCBjPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCksYj1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO2Muc2V0U3RhcnQoYSwwKSxjLnNldEVuZChkLnN0YXJ0Q29udGFpbmVyLGQuc3RhcnRPZmZzZXQpLGIuc2V0U3RhcnQoZC5zdGFydENvbnRhaW5lcixkLnN0YXJ0T2Zmc2V0KSxiLnNldEVuZChhLGEuY2hpbGROb2Rlcy5sZW5ndGgpO2xldCB2PWMuY2xvbmVDb250ZW50cygpLHg9Yi5jbG9uZUNvbnRlbnRzKCksbT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTttLmFwcGVuZENoaWxkKHYpO2xldCBmPW0uaW5uZXJIVE1MO20uaW5uZXJIVE1MPSIiLG0uYXBwZW5kQ2hpbGQoeCk7bGV0IHk9bS5pbm5lckhUTUw7cmV0dXJue2JlZm9yZTpmLGFmdGVyOnl9fX19KTt2YXIgVDIsJDIsVG50PWcoKCk9PntUMj17eHRlcm06IjUuMy4wIix4dGVybUFkZG9uRml0OiIwLjguMCIseHRlcm1BZGRvblNlYXJjaDoiMC4xMy4wIixoaWdobGlnaHRKczoiMTEuMTEuMSIsZWNoYXJ0czoiNS42LjAiLGxpZ2h0d2VpZ2h0Q2hhcnRzOiI1LjEuMCIsdGlwdGFwOiIyLjI3LjIiLGZvbnRhd2Vzb21lOiI3LjIuMCJ9LCQyPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtIn0pO3ZhciBhbyxydmE9ZygoKT0+e1RudCgpO2FvPWNsYXNzIHN7c3RhdGlje2kodGhpcywiRGVlc1NlcnZpY2VMaWJMb2FkZXIiKX1zdGF0aWMgaW5zdGFuY2U7eHRlcm1MaWI9bnVsbDt4dGVybUZpdEFkZG9uTGliPW51bGw7eHRlcm1TZWFyY2hBZGRvbkxpYj1udWxsO2hpZ2hsaWdodEpzTGliPW51bGw7bGlnaHR3ZWlnaHRDaGFydHNMaWI9bnVsbDtlY2hhcnRzTGliPW51bGw7dGlwdGFwTGliPW51bGw7eHRlcm1Mb2FkaW5nUHJvbWlzZT1udWxsO3h0ZXJtRml0QWRkb25Mb2FkaW5nUHJvbWlzZT1udWxsO3h0ZXJtU2VhcmNoQWRkb25Mb2FkaW5nUHJvbWlzZT1udWxsO2hpZ2hsaWdodEpzTG9hZGluZ1Byb21pc2U9bnVsbDtsaWdodHdlaWdodENoYXJ0c0xvYWRpbmdQcm9taXNlPW51bGw7ZWNoYXJ0c0xvYWRpbmdQcm9taXNlPW51bGw7dGlwdGFwTG9hZGluZ1Byb21pc2U9bnVsbDtjb25zdHJ1Y3Rvcigpe31zdGF0aWMgZ2V0SW5zdGFuY2UoKXtyZXR1cm4gcy5pbnN0YW5jZXx8KHMuaW5zdGFuY2U9bmV3IHMpLHMuaW5zdGFuY2V9YXN5bmMgbG9hZFh0ZXJtKCl7cmV0dXJuIHRoaXMueHRlcm1MaWI/dGhpcy54dGVybUxpYjp0aGlzLnh0ZXJtTG9hZGluZ1Byb21pc2U/dGhpcy54dGVybUxvYWRpbmdQcm9taXNlOih0aGlzLnh0ZXJtTG9hZGluZ1Byb21pc2U9KGFzeW5jKCk9PntsZXQgdD1hd2FpdCBpbXBvcnQoYCR7JDJ9L3h0ZXJtQCR7VDIueHRlcm19Lytlc21gKTtyZXR1cm4gYXdhaXQgdGhpcy5pbmplY3RYdGVybVN0eWxlcygpLHRoaXMueHRlcm1MaWI9e1Rlcm1pbmFsOnQuVGVybWluYWx9LHRoaXMueHRlcm1MaWJ9KSgpLHRoaXMueHRlcm1Mb2FkaW5nUHJvbWlzZSl9YXN5bmMgbG9hZFh0ZXJtRml0QWRkb24oKXtyZXR1cm4gdGhpcy54dGVybUZpdEFkZG9uTGliP3RoaXMueHRlcm1GaXRBZGRvbkxpYjp0aGlzLnh0ZXJtRml0QWRkb25Mb2FkaW5nUHJvbWlzZT90aGlzLnh0ZXJtRml0QWRkb25Mb2FkaW5nUHJvbWlzZToodGhpcy54dGVybUZpdEFkZG9uTG9hZGluZ1Byb21pc2U9KGFzeW5jKCk9PntsZXQgdD1hd2FpdCBpbXBvcnQoYCR7JDJ9L3h0ZXJtLWFkZG9uLWZpdEAke1QyLnh0ZXJtQWRkb25GaXR9Lytlc21gKTtyZXR1cm4gdGhpcy54dGVybUZpdEFkZG9uTGliPXtGaXRBZGRvbjp0LkZpdEFkZG9ufSx0aGlzLnh0ZXJtRml0QWRkb25MaWJ9KSgpLHRoaXMueHRlcm1GaXRBZGRvbkxvYWRpbmdQcm9taXNlKX1hc3luYyBsb2FkWHRlcm1TZWFyY2hBZGRvbigpe3JldHVybiB0aGlzLnh0ZXJtU2VhcmNoQWRkb25MaWI/dGhpcy54dGVybVNlYXJjaEFkZG9uTGliOnRoaXMueHRlcm1TZWFyY2hBZGRvbkxvYWRpbmdQcm9taXNlP3RoaXMueHRlcm1TZWFyY2hBZGRvbkxvYWRpbmdQcm9taXNlOih0aGlzLnh0ZXJtU2VhcmNoQWRkb25Mb2FkaW5nUHJvbWlzZT0oYXN5bmMoKT0+e2xldCB0PWF3YWl0IGltcG9ydChgJHskMn0veHRlcm0tYWRkb24tc2VhcmNoQCR7VDIueHRlcm1BZGRvblNlYXJjaH0vK2VzbWApO3JldHVybiB0aGlzLnh0ZXJtU2VhcmNoQWRkb25MaWI9e1NlYXJjaEFkZG9uOnQuU2VhcmNoQWRkb259LHRoaXMueHRlcm1TZWFyY2hBZGRvbkxpYn0pKCksdGhpcy54dGVybVNlYXJjaEFkZG9uTG9hZGluZ1Byb21pc2UpfWFzeW5jIGluamVjdFh0ZXJtU3R5bGVzKCl7bGV0IGU9Inh0ZXJtLWNkbi1zdHlsZXMiO2lmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGUpKXJldHVybjtsZXQgdD1gJHskMn0veHRlcm1AJHtUMi54dGVybX0vY3NzL3h0ZXJtLmNzc2Ascj1hd2FpdChhd2FpdCBmZXRjaCh0KSkudGV4dCgpLG49YAovKiBGaXggeHRlcm0uanMgV2lkdGhDYWNoZSBtZWFzdXJlbWVudCBjb250YWluZXIgY2F1c2luZyBob3Jpem9udGFsIHNjcm9sbGJhciAqLwovKiB4dGVybSBjcmVhdGVzIHRoaXMgb24gZG9jdW1lbnQuYm9keSAtIG1vdmUgaXQgb2ZmLXNjcmVlbiBob3Jpem9udGFsbHkgdG9vICovCmJvZHkgPiBkaXZbc3R5bGUqPSJ0b3A6IC01MDAwMHB4Il1bc3R5bGUqPSJ3aWR0aDogNTAwMDBweCJdIHsKICBsZWZ0OiAtNTAwMDBweCAhaW1wb3J0YW50Owp9CmAsbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO28uaWQ9ZSxvLnRleHRDb250ZW50PXIrbixkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKG8pfWFzeW5jIGxvYWRIaWdobGlnaHRKcygpe3JldHVybiB0aGlzLmhpZ2hsaWdodEpzTGliP3RoaXMuaGlnaGxpZ2h0SnNMaWI6dGhpcy5oaWdobGlnaHRKc0xvYWRpbmdQcm9taXNlP3RoaXMuaGlnaGxpZ2h0SnNMb2FkaW5nUHJvbWlzZToodGhpcy5oaWdobGlnaHRKc0xvYWRpbmdQcm9taXNlPShhc3luYygpPT57bGV0IHQ9YXdhaXQgaW1wb3J0KGAkeyQyfS9oaWdobGlnaHQuanNAJHtUMi5oaWdobGlnaHRKc30vK2VzbWApO3JldHVybiB0aGlzLmhpZ2hsaWdodEpzTGliPXQuZGVmYXVsdCx0aGlzLmhpZ2hsaWdodEpzTGlifSkoKSx0aGlzLmhpZ2hsaWdodEpzTG9hZGluZ1Byb21pc2UpfWFzeW5jIGxvYWRMaWdodHdlaWdodENoYXJ0cygpe3JldHVybiB0aGlzLmxpZ2h0d2VpZ2h0Q2hhcnRzTGliP3RoaXMubGlnaHR3ZWlnaHRDaGFydHNMaWI6dGhpcy5saWdodHdlaWdodENoYXJ0c0xvYWRpbmdQcm9taXNlP3RoaXMubGlnaHR3ZWlnaHRDaGFydHNMb2FkaW5nUHJvbWlzZToodGhpcy5saWdodHdlaWdodENoYXJ0c0xvYWRpbmdQcm9taXNlPShhc3luYygpPT57bGV0IHQ9YXdhaXQgaW1wb3J0KGAkeyQyfS9saWdodHdlaWdodC1jaGFydHNAJHtUMi5saWdodHdlaWdodENoYXJ0c30vK2VzbWApO3JldHVybiB0aGlzLmxpZ2h0d2VpZ2h0Q2hhcnRzTGliPXtjcmVhdGVDaGFydDp0LmNyZWF0ZUNoYXJ0LEFyZWFTZXJpZXM6dC5BcmVhU2VyaWVzLExpbmVTZXJpZXM6dC5MaW5lU2VyaWVzLENvbG9yVHlwZTp0LkNvbG9yVHlwZSxMaW5lVHlwZTp0LkxpbmVUeXBlLENyb3NzaGFpck1vZGU6dC5Dcm9zc2hhaXJNb2RlfSx0aGlzLmxpZ2h0d2VpZ2h0Q2hhcnRzTGlifSkoKSx0aGlzLmxpZ2h0d2VpZ2h0Q2hhcnRzTG9hZGluZ1Byb21pc2UpfWFzeW5jIGxvYWRFY2hhcnRzKCl7cmV0dXJuIHRoaXMuZWNoYXJ0c0xpYj90aGlzLmVjaGFydHNMaWI6dGhpcy5lY2hhcnRzTG9hZGluZ1Byb21pc2U/dGhpcy5lY2hhcnRzTG9hZGluZ1Byb21pc2U6KHRoaXMuZWNoYXJ0c0xvYWRpbmdQcm9taXNlPShhc3luYygpPT57bGV0IHQ9YXdhaXQgaW1wb3J0KGAkeyQyfS9lY2hhcnRzQCR7VDIuZWNoYXJ0c30vZGlzdC9lY2hhcnRzLmVzbS5taW4uanNgKTtyZXR1cm4gdGhpcy5lY2hhcnRzTGliPXtpbml0OnQuaW5pdCxkaXNwb3NlOnQuZGlzcG9zZSxnZXRJbnN0YW5jZUJ5RG9tOnQuZ2V0SW5zdGFuY2VCeURvbX0sdGhpcy5lY2hhcnRzTGlifSkoKSx0aGlzLmVjaGFydHNMb2FkaW5nUHJvbWlzZSl9YXN5bmMgbG9hZFRpcHRhcCgpe3JldHVybiB0aGlzLnRpcHRhcExpYj90aGlzLnRpcHRhcExpYjp0aGlzLnRpcHRhcExvYWRpbmdQcm9taXNlP3RoaXMudGlwdGFwTG9hZGluZ1Byb21pc2U6KHRoaXMudGlwdGFwTG9hZGluZ1Byb21pc2U9KGFzeW5jKCk9PntsZXRbZSx0LGEscixuLG9dPWF3YWl0IFByb21pc2UuYWxsKFtQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oaWkoKSxLYXQpKSxQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4obnN0KCksb3N0KSksUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KGRzdCgpLGNzdCkpLFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pihoc3QoKSxwc3QpKSxQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oRnN0KCksT3N0KSksUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KGRpdCgpLGNpdCkpXSk7cmV0dXJuIHRoaXMudGlwdGFwTGliPXtFZGl0b3I6ZS5FZGl0b3IsU3RhcnRlcktpdDp0LmRlZmF1bHR8fHQuU3RhcnRlcktpdCxVbmRlcmxpbmU6YS5kZWZhdWx0fHxhLlVuZGVybGluZSxUZXh0QWxpZ246ci5kZWZhdWx0fHxyLlRleHRBbGlnbixMaW5rOm4uZGVmYXVsdHx8bi5MaW5rLFR5cG9ncmFwaHk6by5kZWZhdWx0fHxvLlR5cG9ncmFwaHl9LHRoaXMudGlwdGFwTGlifSkoKSx0aGlzLnRpcHRhcExvYWRpbmdQcm9taXNlKX1hc3luYyBwcmVsb2FkQWxsKCl7YXdhaXQgUHJvbWlzZS5hbGwoW3RoaXMubG9hZFh0ZXJtKCksdGhpcy5sb2FkWHRlcm1GaXRBZGRvbigpLHRoaXMubG9hZFh0ZXJtU2VhcmNoQWRkb24oKSx0aGlzLmxvYWRIaWdobGlnaHRKcygpLHRoaXMubG9hZExpZ2h0d2VpZ2h0Q2hhcnRzKCksdGhpcy5sb2FkRWNoYXJ0cygpLHRoaXMubG9hZFRpcHRhcCgpXSl9aXNMb2FkZWQoZSl7c3dpdGNoKGUpe2Nhc2UieHRlcm0iOnJldHVybiB0aGlzLnh0ZXJtTGliIT09bnVsbDtjYXNlInh0ZXJtRml0QWRkb24iOnJldHVybiB0aGlzLnh0ZXJtRml0QWRkb25MaWIhPT1udWxsO2Nhc2UieHRlcm1TZWFyY2hBZGRvbiI6cmV0dXJuIHRoaXMueHRlcm1TZWFyY2hBZGRvbkxpYiE9PW51bGw7Y2FzZSJoaWdobGlnaHRKcyI6cmV0dXJuIHRoaXMuaGlnaGxpZ2h0SnNMaWIhPT1udWxsO2Nhc2UibGlnaHR3ZWlnaHRDaGFydHMiOnJldHVybiB0aGlzLmxpZ2h0d2VpZ2h0Q2hhcnRzTGliIT09bnVsbDtjYXNlImVjaGFydHMiOnJldHVybiB0aGlzLmVjaGFydHNMaWIhPT1udWxsO2Nhc2UidGlwdGFwIjpyZXR1cm4gdGhpcy50aXB0YXBMaWIhPT1udWxsO2RlZmF1bHQ6cmV0dXJuITF9fX19KTt2YXIgT3U9ZygoKT0+e3J2YSgpO1RudCgpfSk7dmFyIEFRLG92YT1nKCgpPT57bmMoKTtwZSgpO1hkKCk7RXIoKTtxMWUoKTtPdSgpO0FRPWNsYXNzIGV4dGVuZHMgZ2l7c3RhdGlje2kodGhpcywiQ29kZUJsb2NrSGFuZGxlciIpfXR5cGU9ImNvZGUiO2hpZ2hsaWdodFRpbWVyPW51bGw7aGlnaGxpZ2h0SnM9bnVsbDtyZW5kZXIoZSx0KXtsZXQgYT1lLm1ldGFkYXRhPy5sYW5ndWFnZXx8InR5cGVzY3JpcHQiLHI9ZS5jb250ZW50fHwiIixuPXIuc3BsaXQoYApgKS5sZW5ndGgsbz0iIjtmb3IobGV0IHA9MTtwPD1uO3ArKylvKz1gPGRpdiBjbGFzcz0ibGluZS1udW1iZXIiPiR7cH08L2Rpdj5gO2xldCBsPUgxZS5tYXAocD0+e2xldCBkPXAudG9Mb3dlckNhc2UoKTtyZXR1cm5gPG9wdGlvbiB2YWx1ZT0iJHtkfSIgJHtkPT09YT8ic2VsZWN0ZWQiOiIifT4ke3B9PC9vcHRpb24+YH0pLmpvaW4oIiIpO3JldHVybmAKICAgICAgPGRpdiBjbGFzcz0iY29kZS1ibG9jay1jb250YWluZXIke3Q/IiBzZWxlY3RlZCI6IiJ9IiBkYXRhLWxhbmd1YWdlPSIke2F9Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjb2RlLWhlYWRlciI+CiAgICAgICAgICA8c2VsZWN0IGNsYXNzPSJsYW5ndWFnZS1zZWxlY3RvciIgZGF0YS1ibG9jay1pZD0iJHtlLmlkfSI+CiAgICAgICAgICAgICR7bH0KICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY29weS1idXR0b24iIHRpdGxlPSJDb3B5IGNvZGUiPgogICAgICAgICAgICA8c3ZnIGNsYXNzPSJjb3B5LWljb24iIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2IiBmaWxsPSJjdXJyZW50Q29sb3IiPgogICAgICAgICAgICAgIDxwYXRoIGQ9Ik0wIDYuNzVDMCA1Ljc4NC43ODQgNSAxLjc1IDVoMS41YS43NS43NSAwIDAxMCAxLjVoLTEuNWEuMjUuMjUgMCAwMC0uMjUuMjV2Ny41YzAgLjEzOC4xMTIuMjUuMjUuMjVoNy41YS4yNS4yNSAwIDAwLjI1LS4yNXYtMS41YS43NS43NSAwIDAxMS41IDB2MS41QTEuNzUgMS43NSAwIDAxOS4yNSAxNmgtNy41QTEuNzUgMS43NSAwIDAxMCAxNC4yNXYtNy41eiI+PC9wYXRoPgogICAgICAgICAgICAgIDxwYXRoIGQ9Ik01IDEuNzVDNSAuNzg0IDUuNzg0IDAgNi43NSAwaDcuNUMxNS4yMTYgMCAxNiAuNzg0IDE2IDEuNzV2Ny41QTEuNzUgMS43NSAwIDAxMTQuMjUgMTFoLTcuNUExLjc1IDEuNzUgMCAwMTUgOS4yNXYtNy41em0xLjc1LS4yNWEuMjUuMjUgMCAwMC0uMjUuMjV2Ny41YzAgLjEzOC4xMTIuMjUuMjUuMjVoNy41YS4yNS4yNSAwIDAwLjI1LS4yNXYtNy41YS4yNS4yNSAwIDAwLS4yNS0uMjVoLTcuNXoiPjwvcGF0aD4KICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb3B5LXRleHQiPkNvcHk8L3NwYW4+CiAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb2RlLWJvZHkiPgogICAgICAgICAgPGRpdiBjbGFzcz0ibGluZS1udW1iZXJzIj4ke299PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2RlLWNvbnRlbnQiPgogICAgICAgICAgICA8cHJlIGNsYXNzPSJjb2RlLXByZSI+PGNvZGUgY2xhc3M9ImNvZGUtZWRpdG9yIiAKICAgICAgICAgICAgICAgICBjb250ZW50ZWRpdGFibGU9InRydWUiCiAgICAgICAgICAgICAgICAgZGF0YS1ibG9jay1pZD0iJHtlLmlkfSIKICAgICAgICAgICAgICAgICBkYXRhLWJsb2NrLXR5cGU9IiR7ZS50eXBlfSIKICAgICAgICAgICAgICAgICBzcGVsbGNoZWNrPSJmYWxzZSI+JHt0aGlzLmVzY2FwZUh0bWwocil9PC9jb2RlPjwvcHJlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1zZXR1cChlLHQsYSl7bGV0IHI9ZS5xdWVyeVNlbGVjdG9yKCIuY29kZS1lZGl0b3IiKSxuPWUucXVlcnlTZWxlY3RvcigiLmNvZGUtYmxvY2stY29udGFpbmVyIiksbz1lLnF1ZXJ5U2VsZWN0b3IoIi5jb3B5LWJ1dHRvbiIpLGw9ZS5xdWVyeVNlbGVjdG9yKCIubGFuZ3VhZ2Utc2VsZWN0b3IiKTtpZighcnx8IW4pcmV0dXJuO2wmJmwuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixkPT57bGV0IHU9ZC50YXJnZXQudmFsdWU7dC5tZXRhZGF0YT17Li4udC5tZXRhZGF0YSxsYW5ndWFnZTp1fSxuLnNldEF0dHJpYnV0ZSgiZGF0YS1sYW5ndWFnZSIsdSksdC5jb250ZW50JiZkb2N1bWVudC5hY3RpdmVFbGVtZW50IT09ciYmdGhpcy5hcHBseUhpZ2hsaWdodGluZyhlLHQpLGEub25JbnB1dCYmYS5vbklucHV0KG5ldyBJbnB1dEV2ZW50KCJpbnB1dCIpKX0pLG8mJm8uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGFzeW5jKCk9PntsZXQgZD1yLnRleHRDb250ZW50fHwiIjt0cnl7YXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoZCk7bGV0IHU9by5xdWVyeVNlbGVjdG9yKCIuY29weS10ZXh0IiksYz11LnRleHRDb250ZW50O3UudGV4dENvbnRlbnQ9IkNvcGllZCEiLG8uY2xhc3NMaXN0LmFkZCgiY29waWVkIiksc2V0VGltZW91dCgoKT0+e3UudGV4dENvbnRlbnQ9YyxvLmNsYXNzTGlzdC5yZW1vdmUoImNvcGllZCIpfSwyZTMpfWNhdGNoKHUpe2NvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBjb3B5OiIsdSk7bGV0IGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKTtjLnZhbHVlPWQsYy5zdHlsZS5wb3NpdGlvbj0iZml4ZWQiLGMuc3R5bGUub3BhY2l0eT0iMCIsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjKSxjLnNlbGVjdCgpO3RyeXtkb2N1bWVudC5leGVjQ29tbWFuZCgiY29weSIpO2xldCBiPW8ucXVlcnlTZWxlY3RvcigiLmNvcHktdGV4dCIpLHY9Yi50ZXh0Q29udGVudDtiLnRleHRDb250ZW50PSJDb3BpZWQhIixvLmNsYXNzTGlzdC5hZGQoImNvcGllZCIpLHNldFRpbWVvdXQoKCk9PntiLnRleHRDb250ZW50PXYsby5jbGFzc0xpc3QucmVtb3ZlKCJjb3BpZWQiKX0sMmUzKX1jYXRjaChiKXtjb25zb2xlLmVycm9yKCJGYWxsYmFjayBjb3B5IGZhaWxlZDoiLGIpfWRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYyl9fSk7bGV0IHA9ITE7ci5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsKCk9PntwPSEwLG4uY2xhc3NMaXN0LmFkZCgiZWRpdGluZyIpO2xldCBkPXIudGV4dENvbnRlbnR8fCIiO3IudGV4dENvbnRlbnQ9ZCxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntsZXQgdT1kb2N1bWVudC5jcmVhdGVSYW5nZSgpLGM9d2luZG93LmdldFNlbGVjdGlvbigpO3IuZmlyc3RDaGlsZCYmKHUuc2V0U3RhcnQoci5maXJzdENoaWxkLDApLHUuY29sbGFwc2UoITApLGM/LnJlbW92ZUFsbFJhbmdlcygpLGM/LmFkZFJhbmdlKHUpKX0pLGEub25Gb2N1cygpfSksci5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwoKT0+e3A9ITEsbi5jbGFzc0xpc3QucmVtb3ZlKCJlZGl0aW5nIiksdGhpcy5hcHBseUhpZ2hsaWdodGluZyhlLHQpLGEub25CbHVyKCl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IixkPT57YS5vbklucHV0KGQpLHRoaXMudXBkYXRlTGluZU51bWJlcnMoZSksY2xlYXJUaW1lb3V0KHRoaXMuaGlnaGxpZ2h0VGltZXIpfSksci5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixkPT57aWYoZC5rZXk9PT0iVGFiIil7ZC5wcmV2ZW50RGVmYXVsdCgpO2xldCB1PXdpbmRvdy5nZXRTZWxlY3Rpb24oKTtpZih1JiZ1LnJhbmdlQ291bnQ+MCl7bGV0IGM9dS5nZXRSYW5nZUF0KDApLGI9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiAgIik7Yy5pbnNlcnROb2RlKGIpLGMuc2V0U3RhcnRBZnRlcihiKSxjLnNldEVuZEFmdGVyKGIpLHUucmVtb3ZlQWxsUmFuZ2VzKCksdS5hZGRSYW5nZShjKSxhLm9uSW5wdXQobmV3IElucHV0RXZlbnQoImlucHV0IikpLHRoaXMudXBkYXRlTGluZU51bWJlcnMoZSl9cmV0dXJufWlmKFsiQXJyb3dMZWZ0IiwiQXJyb3dSaWdodCIsIkFycm93VXAiLCJBcnJvd0Rvd24iXS5pbmNsdWRlcyhkLmtleSkpe2xldCB1PXRoaXMuZ2V0Q3Vyc29yUG9zaXRpb24oZSksYz1yLnRleHRDb250ZW50Py5sZW5ndGh8fDA7aWYoZC5rZXk9PT0iQXJyb3dMZWZ0IiYmdT09PTB8fGQua2V5PT09IkFycm93UmlnaHQiJiZ1PT09Yyl7YS5vbktleURvd24oZCk7cmV0dXJufWlmKGQua2V5PT09IkFycm93VXAifHxkLmtleT09PSJBcnJvd0Rvd24iKXtsZXQgYj0oci50ZXh0Q29udGVudHx8IiIpLnNwbGl0KGAKYCksdj10aGlzLmdldEN1cnJlbnRMaW5lSW5kZXgocik7aWYoZC5rZXk9PT0iQXJyb3dVcCImJnY9PT0wfHxkLmtleT09PSJBcnJvd0Rvd24iJiZ2PT09Yi5sZW5ndGgtMSl7YS5vbktleURvd24oZCk7cmV0dXJufX19YS5vbktleURvd24oZCl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoInBhc3RlIixkPT57ZC5wcmV2ZW50RGVmYXVsdCgpO2xldCB1PWQuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgidGV4dC9wbGFpbiIpO2lmKHUpe2xldCBjPXdpbmRvdy5nZXRTZWxlY3Rpb24oKTtpZihjJiZjLnJhbmdlQ291bnQ+MCl7bGV0IGI9Yy5nZXRSYW5nZUF0KDApO2IuZGVsZXRlQ29udGVudHMoKTtsZXQgdj1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh1KTtiLmluc2VydE5vZGUodiksYi5zZXRTdGFydEFmdGVyKHYpLGIuc2V0RW5kQWZ0ZXIodiksYy5yZW1vdmVBbGxSYW5nZXMoKSxjLmFkZFJhbmdlKGIpLGEub25JbnB1dChuZXcgSW5wdXRFdmVudCgiaW5wdXQiKSksdGhpcy51cGRhdGVMaW5lTnVtYmVycyhlKX19fSksci5hZGRFdmVudExpc3RlbmVyKCJjb21wb3NpdGlvbnN0YXJ0IiwoKT0+YS5vbkNvbXBvc2l0aW9uU3RhcnQoKSksci5hZGRFdmVudExpc3RlbmVyKCJjb21wb3NpdGlvbmVuZCIsKCk9PmEub25Db21wb3NpdGlvbkVuZCgpKSx0LmNvbnRlbnQmJmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQhPT1yJiZyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pnt0aGlzLmFwcGx5SGlnaGxpZ2h0aW5nKGUsdCl9KX11cGRhdGVMaW5lTnVtYmVycyhlKXtsZXQgdD1lLnF1ZXJ5U2VsZWN0b3IoIi5jb2RlLWVkaXRvciIpLGE9ZS5xdWVyeVNlbGVjdG9yKCIubGluZS1udW1iZXJzIik7aWYoIXR8fCFhKXJldHVybjtsZXQgbz0odC50ZXh0Q29udGVudHx8IiIpLnNwbGl0KGAKYCkubGVuZ3RofHwxLGw9IiI7Zm9yKGxldCBwPTE7cDw9bztwKyspbCs9YDxkaXYgY2xhc3M9ImxpbmUtbnVtYmVyIj4ke3B9PC9kaXY+YDthLmlubmVySFRNTD1sfWdldEN1cnJlbnRMaW5lSW5kZXgoZSl7bGV0IHQ9d2luZG93LmdldFNlbGVjdGlvbigpO2lmKCF0fHx0LnJhbmdlQ291bnQ9PT0wKXJldHVybiAwO2xldCBhPXQuZ2V0UmFuZ2VBdCgwKSxyPWEuY2xvbmVSYW5nZSgpO3JldHVybiByLnNlbGVjdE5vZGVDb250ZW50cyhlKSxyLnNldEVuZChhLnN0YXJ0Q29udGFpbmVyLGEuc3RhcnRPZmZzZXQpLHIudG9TdHJpbmcoKS5zcGxpdChgCmApLmxlbmd0aC0xfWFzeW5jIGFwcGx5SGlnaGxpZ2h0aW5nKGUsdCl7bGV0IGE9ZS5xdWVyeVNlbGVjdG9yKCIuY29kZS1lZGl0b3IiKTtpZighYSlyZXR1cm47dGhpcy5oaWdobGlnaHRKc3x8KHRoaXMuaGlnaGxpZ2h0SnM9YXdhaXQgYW8uZ2V0SW5zdGFuY2UoKS5sb2FkSGlnaGxpZ2h0SnMoKSk7bGV0IHI9dGhpcy5nZXRDdXJzb3JQb3NpdGlvbihlKSxuPWEudGV4dENvbnRlbnR8fCIiLG89dC5tZXRhZGF0YT8ubGFuZ3VhZ2V8fCJ0eXBlc2NyaXB0Ijt0cnl7bGV0IGw9dGhpcy5oaWdobGlnaHRKcy5oaWdobGlnaHQobix7bGFuZ3VhZ2U6byxpZ25vcmVJbGxlZ2FsczohMH0pO2wudmFsdWUmJihhLmlubmVySFRNTD1sLnZhbHVlLGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT1hJiZyIT09bnVsbCYmcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57JHQuc2V0Q3Vyc29yUG9zaXRpb24oYSxyKX0pKX1jYXRjaChsKXtjb25zb2xlLndhcm4oIlN5bnRheCBoaWdobGlnaHRpbmcgZmFpbGVkOiIsbCl9fWVzY2FwZUh0bWwoZSl7bGV0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIHQudGV4dENvbnRlbnQ9ZSx0LmlubmVySFRNTH1nZXRDb250ZW50KGUpe3JldHVybiBlLnF1ZXJ5U2VsZWN0b3IoIi5jb2RlLWVkaXRvciIpPy50ZXh0Q29udGVudHx8IiJ9c2V0Q29udGVudChlLHQpe2xldCBhPWUucXVlcnlTZWxlY3RvcigiLmNvZGUtZWRpdG9yIik7aWYoYSYmKGEudGV4dENvbnRlbnQ9dCx0aGlzLnVwZGF0ZUxpbmVOdW1iZXJzKGUpLGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQhPT1hKSl7bGV0IHI9e2lkOmEuZGF0YXNldC5ibG9ja0lkfHwiIix0eXBlOiJjb2RlIixjb250ZW50OnQsbWV0YWRhdGE6e2xhbmd1YWdlOmUucXVlcnlTZWxlY3RvcigiLmNvZGUtYmxvY2stY29udGFpbmVyIik/LmdldEF0dHJpYnV0ZSgiZGF0YS1sYW5ndWFnZSIpfHwidHlwZXNjcmlwdCJ9fTt0aGlzLmFwcGx5SGlnaGxpZ2h0aW5nKGUscil9fWdldEN1cnNvclBvc2l0aW9uKGUpe2xldCB0PWUucXVlcnlTZWxlY3RvcigiLmNvZGUtZWRpdG9yIik7aWYoIXQpcmV0dXJuIG51bGw7bGV0IGE9d2luZG93LmdldFNlbGVjdGlvbigpO2lmKCFhfHxhLnJhbmdlQ291bnQ9PT0wKXJldHVybiBudWxsO2xldCByPWEuZ2V0UmFuZ2VBdCgwKTtpZighdC5jb250YWlucyhyLnN0YXJ0Q29udGFpbmVyKSlyZXR1cm4gbnVsbDtsZXQgbj1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO3JldHVybiBuLnNlbGVjdE5vZGVDb250ZW50cyh0KSxuLnNldEVuZChyLnN0YXJ0Q29udGFpbmVyLHIuc3RhcnRPZmZzZXQpLG4udG9TdHJpbmcoKS5sZW5ndGh9c2V0Q3Vyc29yVG9TdGFydChlKXtsZXQgdD1lLnF1ZXJ5U2VsZWN0b3IoIi5jb2RlLWVkaXRvciIpO3QmJiR0LnNldEN1cnNvclBvc2l0aW9uKHQsMCl9c2V0Q3Vyc29yVG9FbmQoZSl7bGV0IHQ9ZS5xdWVyeVNlbGVjdG9yKCIuY29kZS1lZGl0b3IiKTtpZih0KXtsZXQgYT10LnRleHRDb250ZW50Py5sZW5ndGh8fDA7JHQuc2V0Q3Vyc29yUG9zaXRpb24odCxhKX19Zm9jdXMoZSl7ZS5xdWVyeVNlbGVjdG9yKCIuY29kZS1lZGl0b3IiKT8uZm9jdXMoKX1mb2N1c1dpdGhDdXJzb3IoZSx0PSJlbmQiKXtsZXQgYT1lLnF1ZXJ5U2VsZWN0b3IoIi5jb2RlLWVkaXRvciIpO2EmJihhLmZvY3VzKCkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dD09PSJzdGFydCI/dGhpcy5zZXRDdXJzb3JUb1N0YXJ0KGUpOnQ9PT0iZW5kIj90aGlzLnNldEN1cnNvclRvRW5kKGUpOnR5cGVvZiB0PT0ibnVtYmVyIiYmJHQuc2V0Q3Vyc29yUG9zaXRpb24oYSx0KX0pKX1nZXRTcGxpdENvbnRlbnQoZSl7bGV0IHQ9dGhpcy5nZXRDdXJzb3JQb3NpdGlvbihlKTtpZih0PT09bnVsbClyZXR1cm4gbnVsbDtsZXQgYT10aGlzLmdldENvbnRlbnQoZSk7cmV0dXJue2JlZm9yZTphLnN1YnN0cmluZygwLHQpLGFmdGVyOmEuc3Vic3RyaW5nKHQpfX1nZXRTdHlsZXMoKXtyZXR1cm5gCiAgICAgIC8qIENvZGUgQmxvY2sgQ29udGFpbmVyIC0gTWluaW1hbGlzdCBzaGFkY24gc3R5bGUgKi8KICAgICAgLmNvZGUtYmxvY2stY29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgbWFyZ2luOiAxMnB4IDA7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMzc0MTUxIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICB9CiAgICAgIAogICAgICAuY29kZS1ibG9jay1jb250YWluZXIuc2VsZWN0ZWQgewogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiM5Y2EzYWYiLCIjNmI3MjgwIil9OwogICAgICB9CiAgICAgIAogICAgICAuY29kZS1ibG9jay1jb250YWluZXIuZWRpdGluZyB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiIzZiNzI4MCIsIiM5Y2EzYWYiKX07CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmYWZhZmEiLCIjMGEwYTBhIil9OwogICAgICB9CiAgICAgIAogICAgICAvKiBIZWFkZXIgLSBTaW1wbGlmaWVkICovCiAgICAgIC5jb2RlLWhlYWRlciB7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzM3NDE1MSIpfTsKICAgICAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICB9CiAgICAgIAogICAgICAubGFuZ3VhZ2Utc2VsZWN0b3IgewogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM2YjcyODAiLCIjOWNhM2FmIil9OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtOwogICAgICAgIGZvbnQtZmFtaWx5OiAke0JhfTsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgcGFkZGluZzogNHB4IDhweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgfQogICAgICAKICAgICAgLmxhbmd1YWdlLXNlbGVjdG9yOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y5ZmFmYiIsIiMxZjI5MzciKX07CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMzNzQxNTEiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMzc0MTUxIiwiI2U1ZTdlYiIpfTsKICAgICAgfQogICAgICAKICAgICAgLmxhbmd1YWdlLXNlbGVjdG9yOmZvY3VzIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjOWNhM2FmIiwiIzZiNzI4MCIpfTsKICAgICAgfQogICAgICAKICAgICAgLyogQ29weSBCdXR0b24gLSBNaW5pbWFsICovCiAgICAgIC5jb3B5LWJ1dHRvbiB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNHB4OwogICAgICAgIHBhZGRpbmc6IDRweCA4cHg7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzZiNzI4MCIsIiM5Y2EzYWYiKX07CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtZmFtaWx5OiAke0JhfTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgfQogICAgICAKICAgICAgLmNvcHktYnV0dG9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y5ZmFmYiIsIiMxZjI5MzciKX07CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMzNzQxNTEiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMzc0MTUxIiwiI2U1ZTdlYiIpfTsKICAgICAgfQogICAgICAKICAgICAgLmNvcHktYnV0dG9uOmFjdGl2ZSB7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk4KTsKICAgICAgfQogICAgICAKICAgICAgLmNvcHktYnV0dG9uLmNvcGllZCB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDU5NjY5IiwiIzEwYjk4MSIpfTsKICAgICAgfQogICAgICAKICAgICAgLmNvcHktaWNvbiB7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgb3BhY2l0eTogMC43OwogICAgICB9CiAgICAgIAogICAgICAuY29weS1idXR0b246aG92ZXIgLmNvcHktaWNvbiB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQogICAgICAKICAgICAgLmNvcHktdGV4dCB7CiAgICAgICAgbWluLXdpZHRoOiA0MHB4OwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgfQogICAgICAKICAgICAgLyogQ29kZSBCb2R5ICovCiAgICAgIC5jb2RlLWJvZHkgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmFmYWZhIiwiIzBhMGEwYSIpfTsKICAgICAgfQogICAgICAKICAgICAgLyogTGluZSBOdW1iZXJzIC0gU3VidGxlICovCiAgICAgIC5saW5lLW51bWJlcnMgewogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIHBhZGRpbmc6IDEycHggMDsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICBtaW4td2lkdGg6IDQwcHg7CiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMzc0MTUxIil9OwogICAgICB9CiAgICAgIAogICAgICAubGluZS1udW1iZXIgewogICAgICAgIHBhZGRpbmc6IDAgMTJweCAwIDhweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM5Y2EzYWYiLCIjNGI1NTYzIil9OwogICAgICAgIGZvbnQtZmFtaWx5OiAke0JnfTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICB9CiAgICAgIAogICAgICAvKiBDb2RlIENvbnRlbnQgKi8KICAgICAgLmNvZGUtY29udGVudCB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQogICAgICAKICAgICAgLmNvZGUtcHJlIHsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgfQogICAgICAKICAgICAgLmNvZGUtZWRpdG9yIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIGZvbnQtZmFtaWx5OiAke0JnfTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTExODI3IiwiI2Y5ZmFmYiIpfTsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CiAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgICAgIG1pbi1oZWlnaHQ6IDYwcHg7CiAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CiAgICAgIH0KICAgICAgCiAgICAgIC8qIFBsYWNlaG9sZGVyICovCiAgICAgIC5jb2RlLWVkaXRvcjplbXB0eTo6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAiLy8gVHlwZSBvciBwYXN0ZSBjb2RlIGhlcmUuLi4iOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzljYTNhZiIsIiM0YjU1NjMiKX07CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KICAgICAgCiAgICAgIC8qIFdoZW4gZWRpdGluZyAoZm9jdXNlZCksIHNob3cgZ3JleSB0ZXh0IHdpdGhvdXQgaGlnaGxpZ2h0aW5nICovCiAgICAgIC5jb2RlLWJsb2NrLWNvbnRhaW5lci5lZGl0aW5nIC5jb2RlLWVkaXRvciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNmI3MjgwIiwiIzljYTNhZiIpfSAhaW1wb3J0YW50OwogICAgICB9CiAgICAgIAogICAgICAuY29kZS1ibG9jay1jb250YWluZXIuZWRpdGluZyAuY29kZS1lZGl0b3IgKiB7CiAgICAgICAgY29sb3I6IGluaGVyaXQgIWltcG9ydGFudDsKICAgICAgfQogICAgICAKICAgICAgLyogU3ludGF4IEhpZ2hsaWdodGluZyAtIE11dGVkIGNvbG9ycyAqLwogICAgICAuY29kZS1lZGl0b3IgLmhsanMta2V5d29yZCB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZGMyNjI2IiwiI2Y4NzE3MSIpfTsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICB9CiAgICAgIAogICAgICAuY29kZS1lZGl0b3IgLmhsanMtc3RyaW5nIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwNTk2NjkiLCIjMTBiOTgxIil9OwogICAgICB9CiAgICAgIAogICAgICAuY29kZS1lZGl0b3IgLmhsanMtbnVtYmVyIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3YzNhZWQiLCIjYTc4YmZhIil9OwogICAgICB9CiAgICAgIAogICAgICAuY29kZS1lZGl0b3IgLmhsanMtZnVuY3Rpb24gewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzI1NjNlYiIsIiM2MGE1ZmEiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5jb2RlLWVkaXRvciAuaGxqcy1jb21tZW50IHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM2YjcyODAiLCIjNmI3MjgwIil9OwogICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgICAgfQogICAgICAKICAgICAgLmNvZGUtZWRpdG9yIC5obGpzLXZhcmlhYmxlLAogICAgICAuY29kZS1lZGl0b3IgLmhsanMtYXR0ciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZWE1ODBjIiwiI2ZiOTIzYyIpfTsKICAgICAgfQogICAgICAKICAgICAgLmNvZGUtZWRpdG9yIC5obGpzLWNsYXNzLAogICAgICAuY29kZS1lZGl0b3IgLmhsanMtdGl0bGUgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzI1NjNlYiIsIiM2MGE1ZmEiKX07CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgfQogICAgICAKICAgICAgLmNvZGUtZWRpdG9yIC5obGpzLXBhcmFtcyB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMzc0MTUxIiwiI2U1ZTdlYiIpfTsKICAgICAgfQogICAgICAKICAgICAgLmNvZGUtZWRpdG9yIC5obGpzLWJ1aWx0X2luIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3YzNhZWQiLCIjYTc4YmZhIil9OwogICAgICB9CiAgICAgIAogICAgICAuY29kZS1lZGl0b3IgLmhsanMtbGl0ZXJhbCB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjN2MzYWVkIiwiI2E3OGJmYSIpfTsKICAgICAgfQogICAgICAKICAgICAgLmNvZGUtZWRpdG9yIC5obGpzLW1ldGEgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzZiNzI4MCIsIiM5Y2EzYWYiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5jb2RlLWVkaXRvciAuaGxqcy1wdW5jdHVhdGlvbiB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMzc0MTUxIiwiI2QxZDVkYiIpfTsKICAgICAgfQogICAgICAKICAgICAgLmNvZGUtZWRpdG9yIC5obGpzLXRhZyB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZGMyNjI2IiwiI2Y4NzE3MSIpfTsKICAgICAgfQogICAgICAKICAgICAgLmNvZGUtZWRpdG9yIC5obGpzLWF0dHJpYnV0ZSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMjU2M2ViIiwiIzYwYTVmYSIpfTsKICAgICAgfQogICAgICAKICAgICAgLmNvZGUtZWRpdG9yIC5obGpzLXNlbGVjdG9yLXRhZyB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZGMyNjI2IiwiI2Y4NzE3MSIpfTsKICAgICAgfQogICAgICAKICAgICAgLmNvZGUtZWRpdG9yIC5obGpzLXNlbGVjdG9yLWNsYXNzIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMyNTYzZWIiLCIjNjBhNWZhIil9OwogICAgICB9CiAgICAgIAogICAgICAuY29kZS1lZGl0b3IgLmhsanMtc2VsZWN0b3ItaWQgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzdjM2FlZCIsIiNhNzhiZmEiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC8qIFNlbGVjdGlvbiAqLwogICAgICAuY29kZS1lZGl0b3I6OnNlbGVjdGlvbiwKICAgICAgLmNvZGUtZWRpdG9yICo6OnNlbGVjdGlvbiB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoOTksIDEwMiwgMjQxLCAwLjIpIiwicmdiYSg5OSwgMTAyLCAyNDEsIDAuMykiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC8qIFNjcm9sbGJhciBzdHlsaW5nIC0gTWluaW1hbCAqLwogICAgICAuY29kZS1jb250ZW50Ojotd2Via2l0LXNjcm9sbGJhciB7CiAgICAgICAgaGVpZ2h0OiA2cHg7CiAgICAgIH0KICAgICAgCiAgICAgIC5jb2RlLWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgfQogICAgICAKICAgICAgLmNvZGUtY29udGVudDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZDFkNWRiIiwiIzRiNTU2MyIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgIH0KICAgICAgCiAgICAgIC5jb2RlLWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiIzljYTNhZiIsIiM2YjcyODAiKX07CiAgICAgIH0KICAgIGB9fX0pO3ZhciBOUSxudmE9ZygoKT0+e25jKCk7cGUoKTtSdSgpO1hkKCk7TlE9Y2xhc3MgZXh0ZW5kcyBnaXtzdGF0aWN7aSh0aGlzLCJMaXN0QmxvY2tIYW5kbGVyIil9dHlwZT0ibGlzdCI7bGFzdEtub3duQ3Vyc29yUG9zaXRpb249MDtsYXN0U2VsZWN0ZWRUZXh0PSIiO3NlbGVjdGlvbkhhbmRsZXI9bnVsbDtyZW5kZXIoZSx0KXtsZXQgYT10PyIgc2VsZWN0ZWQiOiIiLG49KGUubWV0YWRhdGE/Lmxpc3RUeXBlfHwidW5vcmRlcmVkIik9PT0ib3JkZXJlZCI/Im9sIjoidWwiLG89dGhpcy5yZW5kZXJMaXN0Q29udGVudChlLmNvbnRlbnQsZS5tZXRhZGF0YSk7cmV0dXJuYAogICAgICA8ZGl2CiAgICAgICAgY2xhc3M9ImJsb2NrIGxpc3Qke2F9IgogICAgICAgIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIKICAgICAgICBkYXRhLWJsb2NrLWlkPSIke2UuaWR9IgogICAgICAgIGRhdGEtYmxvY2stdHlwZT0iJHtlLnR5cGV9IgogICAgICA+JHtvfTwvZGl2PgogICAgYH1yZW5kZXJMaXN0Q29udGVudChlLHQpe2lmKCFlKXJldHVybiI8dWw+PGxpPjwvbGk+PC91bD4iO2xldCByPSh0Py5saXN0VHlwZXx8InVub3JkZXJlZCIpPT09Im9yZGVyZWQiPyJvbCI6InVsIixuPWUuc3BsaXQoYApgKS5maWx0ZXIobD0+bC50cmltKCkpO2lmKG4ubGVuZ3RoPT09MClyZXR1cm5gPCR7cn0+PGxpPjwvbGk+PC8ke3J9PmA7bGV0IG89bi5tYXAobD0+YDxsaT4ke2x9PC9saT5gKS5qb2luKCIiKTtyZXR1cm5gPCR7cn0+JHtvfTwvJHtyfT5gfXNldHVwKGUsdCxhKXtsZXQgcj1lLnF1ZXJ5U2VsZWN0b3IoIi5ibG9jay5saXN0Iik7aWYoIXIpe2NvbnNvbGUuZXJyb3IoIkxpc3RCbG9ja0hhbmRsZXIuc2V0dXA6IE5vIGxpc3QgYmxvY2sgZWxlbWVudCBmb3VuZCIpO3JldHVybn10LmNvbnRlbnQmJiFyLmlubmVySFRNTCYmKHIuaW5uZXJIVE1MPXRoaXMucmVuZGVyTGlzdENvbnRlbnQodC5jb250ZW50LHQubWV0YWRhdGEpKSxyLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IixuPT57YS5vbklucHV0KG4pO2xldCBvPXRoaXMuZ2V0Q3Vyc29yUG9zaXRpb24oZSk7byE9PW51bGwmJih0aGlzLmxhc3RLbm93bkN1cnNvclBvc2l0aW9uPW8pfSksci5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixuPT57bGV0IG89dGhpcy5nZXRDdXJzb3JQb3NpdGlvbihlKTtpZihvIT09bnVsbCYmKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb249byksbi5rZXk9PT0iRW50ZXIiJiYhbi5zaGlmdEtleSl7bGV0IGw9d2luZG93LmdldFNlbGVjdGlvbigpO2lmKGwmJmwucmFuZ2VDb3VudD4wKXtsZXQgZD1sLmdldFJhbmdlQXQoMCkuc3RhcnRDb250YWluZXIucGFyZW50RWxlbWVudD8uY2xvc2VzdCgibGkiKTtpZihkJiZkLnRleHRDb250ZW50PT09IiIpe24ucHJldmVudERlZmF1bHQoKSxhLm9uS2V5RG93bihuKTtyZXR1cm59fX1hLm9uS2V5RG93bihuKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCgpPT57YS5vbkZvY3VzKCl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCgpPT57YS5vbkJsdXIoKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigiY29tcG9zaXRpb25zdGFydCIsKCk9PnthLm9uQ29tcG9zaXRpb25TdGFydCgpfSksci5hZGRFdmVudExpc3RlbmVyKCJjb21wb3NpdGlvbmVuZCIsKCk9PnthLm9uQ29tcG9zaXRpb25FbmQoKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsbj0+e2xldCBvPXRoaXMuZ2V0Q3Vyc29yUG9zaXRpb24oZSk7byE9PW51bGwmJih0aGlzLmxhc3RLbm93bkN1cnNvclBvc2l0aW9uPW8pLGEub25Nb3VzZVVwPy4obil9KSxyLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixuPT57c2V0VGltZW91dCgoKT0+e2xldCBvPXRoaXMuZ2V0Q3Vyc29yUG9zaXRpb24oZSk7byE9PW51bGwmJih0aGlzLmxhc3RLbm93bkN1cnNvclBvc2l0aW9uPW8pfSwwKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLG49PntsZXQgbz10aGlzLmdldEN1cnNvclBvc2l0aW9uKGUpO28hPT1udWxsJiYodGhpcy5sYXN0S25vd25DdXJzb3JQb3NpdGlvbj1vKX0pLHRoaXMuc2V0dXBTZWxlY3Rpb25IYW5kbGVyKGUscix0KX1zZXR1cFNlbGVjdGlvbkhhbmRsZXIoZSx0LGEpe2xldCByPWkoKCk9PntsZXQgbz13aW5kb3cuZ2V0U2VsZWN0aW9uKCk7aWYoIW98fG8ucmFuZ2VDb3VudD09PTApcmV0dXJuO2xldCBsPW8udG9TdHJpbmcoKTtpZihsLmxlbmd0aD09PTApe3RoaXMubGFzdFNlbGVjdGVkVGV4dCYmKHRoaXMubGFzdFNlbGVjdGVkVGV4dD0iIix0aGlzLmRpc3BhdGNoU2VsZWN0aW9uRXZlbnQoZSx7dGV4dDoiIixibG9ja0lkOmEuaWQsaGFzU2VsZWN0aW9uOiExfSkpO3JldHVybn1sZXQgcD10LmdldFJvb3ROb2RlKCkuaG9zdCx1PXA/LmNsb3Nlc3QoImRlZXMtaW5wdXQtd3lzaXd5ZyIpPy5zaGFkb3dSb290LGM9cD8uc2hhZG93Um9vdCxiPVtdO3UmJmIucHVzaCh1KSxjJiZiLnB1c2goYyk7bGV0IHY9JHQuZ2V0U2VsZWN0aW9uSW5mbyguLi5iKTtpZighdilyZXR1cm47bGV0IHg9JHQuY29udGFpbnNBY3Jvc3NTaGFkb3dET00odCx2LnN0YXJ0Q29udGFpbmVyKSxtPSR0LmNvbnRhaW5zQWNyb3NzU2hhZG93RE9NKHQsdi5lbmRDb250YWluZXIpO2lmKHh8fG0pe2lmKGwhPT10aGlzLmxhc3RTZWxlY3RlZFRleHQpe3RoaXMubGFzdFNlbGVjdGVkVGV4dD1sO2xldCBmPSR0LmNyZWF0ZVJhbmdlRnJvbUluZm8odikseT1mLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMuZGlzcGF0Y2hTZWxlY3Rpb25FdmVudChlLHt0ZXh0OmwudHJpbSgpLGJsb2NrSWQ6YS5pZCxyYW5nZTpmLHJlY3Q6eSxoYXNTZWxlY3Rpb246ITB9KX19ZWxzZSB0aGlzLmxhc3RTZWxlY3RlZFRleHQmJih0aGlzLmxhc3RTZWxlY3RlZFRleHQ9IiIsdGhpcy5kaXNwYXRjaFNlbGVjdGlvbkV2ZW50KGUse3RleHQ6IiIsYmxvY2tJZDphLmlkLGhhc1NlbGVjdGlvbjohMX0pKX0sImNoZWNrU2VsZWN0aW9uIik7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0aW9uY2hhbmdlIixyKSx0aGlzLnNlbGVjdGlvbkhhbmRsZXI9cjtsZXQgbj10LmdldFJvb3ROb2RlKCkuaG9zdDtpZihuKXtsZXQgbz1uLmRpc2Nvbm5lY3RlZENhbGxiYWNrLGw9dGhpcztuLmRpc2Nvbm5lY3RlZENhbGxiYWNrPWFzeW5jIGZ1bmN0aW9uKCl7bC5zZWxlY3Rpb25IYW5kbGVyJiYoZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2VsZWN0aW9uY2hhbmdlIixsLnNlbGVjdGlvbkhhbmRsZXIpLGwuc2VsZWN0aW9uSGFuZGxlcj1udWxsKSxvJiZhd2FpdCBvLmNhbGwobil9fX1kaXNwYXRjaFNlbGVjdGlvbkV2ZW50KGUsdCl7bGV0IGE9bmV3IEN1c3RvbUV2ZW50KCJibG9jay10ZXh0LXNlbGVjdGVkIix7ZGV0YWlsOnQsYnViYmxlczohMCxjb21wb3NlZDohMH0pO2UuZGlzcGF0Y2hFdmVudChhKX1nZXRTdHlsZXMoKXtyZXR1cm5gCiAgICAgIC8qIExpc3Qgc3BlY2lmaWMgc3R5bGVzICovCiAgICAgIC5ibG9jay5saXN0IHsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICB9CiAgICAgIAogICAgICAuYmxvY2subGlzdCB1bCwKICAgICAgLmJsb2NrLmxpc3Qgb2wgewogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7CiAgICAgIH0KICAgICAgCiAgICAgIC5ibG9jay5saXN0IGxpIHsKICAgICAgICBtYXJnaW46IDRweCAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgIH0KICAgICAgCiAgICAgIC5ibG9jay5saXN0IGxpOmxhc3QtY2hpbGQgewogICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgIH0KICAgIGB9Z2V0UGxhY2Vob2xkZXIoKXtyZXR1cm4iIn1nZXRDdXJzb3JQb3NpdGlvbihlLHQpe2xldCBhPWUucXVlcnlTZWxlY3RvcigiLmJsb2NrLmxpc3QiKTtpZighYSlyZXR1cm4gbnVsbDtsZXQgbz10Py5jb21wb25lbnQ/LmNsb3Nlc3QoImRlZXMtaW5wdXQtd3lzaXd5ZyIpPy5zaGFkb3dSb290LGw9dD8uc2hhZG93Um9vdCxwPVtdO28mJnAucHVzaChvKSxsJiZwLnB1c2gobCk7bGV0IGQ9JHQuZ2V0U2VsZWN0aW9uSW5mbyguLi5wKTtpZighZHx8ISR0LmNvbnRhaW5zQWNyb3NzU2hhZG93RE9NKGEsZC5zdGFydENvbnRhaW5lcikpcmV0dXJuIG51bGw7bGV0IHU9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtyZXR1cm4gdS5zZWxlY3ROb2RlQ29udGVudHMoYSksdS5zZXRFbmQoZC5zdGFydENvbnRhaW5lcixkLnN0YXJ0T2Zmc2V0KSx1LnRvU3RyaW5nKCkubGVuZ3RofWdldENvbnRlbnQoZSx0KXtsZXQgYT1lLnF1ZXJ5U2VsZWN0b3IoIi5ibG9jay5saXN0Iik7aWYoIWEpcmV0dXJuIiI7bGV0IHI9YS5xdWVyeVNlbGVjdG9yQWxsKCJsaSIpO3JldHVybiBBcnJheS5mcm9tKHIpLm1hcChvPT5vLnRleHRDb250ZW50fHwiIikuam9pbihgCmApfXNldENvbnRlbnQoZSx0LGEpe2xldCByPWUucXVlcnlTZWxlY3RvcigiLmJsb2NrLmxpc3QiKTtpZighcilyZXR1cm47bGV0IG49ZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PXJ8fGUuc2hhZG93Um9vdD8uYWN0aXZlRWxlbWVudD09PXIsbD1yLnF1ZXJ5U2VsZWN0b3IoInVsLCBvbCIpPy50YWdOYW1lPT09Ik9MIjtyLmlubmVySFRNTD10aGlzLnJlbmRlckxpc3RDb250ZW50KHQse2xpc3RUeXBlOmw/Im9yZGVyZWQiOiJ1bm9yZGVyZWQifSksbiYmci5mb2N1cygpfXNldEN1cnNvclRvU3RhcnQoZSx0KXtsZXQgYT1lLnF1ZXJ5U2VsZWN0b3IoIi5ibG9jay5saXN0Iik7aWYoIWEpcmV0dXJuO2xldCByPWEucXVlcnlTZWxlY3RvcigibGkiKTtpZihyKXtsZXQgbj10aGlzLmdldEZpcnN0VGV4dE5vZGUocik7aWYobil7bGV0IG89ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKSxsPXdpbmRvdy5nZXRTZWxlY3Rpb24oKTtvLnNldFN0YXJ0KG4sMCksby5zZXRFbmQobiwwKSxsPy5yZW1vdmVBbGxSYW5nZXMoKSxsPy5hZGRSYW5nZShvKX19fXNldEN1cnNvclRvRW5kKGUsdCl7bGV0IGE9ZS5xdWVyeVNlbGVjdG9yKCIuYmxvY2subGlzdCIpO2lmKCFhKXJldHVybjtsZXQgcj1hLnF1ZXJ5U2VsZWN0b3IoImxpOmxhc3QtY2hpbGQiKTtpZihyKXtsZXQgbj10aGlzLmdldExhc3RUZXh0Tm9kZShyKTtpZihuKXtsZXQgbz1kb2N1bWVudC5jcmVhdGVSYW5nZSgpLGw9d2luZG93LmdldFNlbGVjdGlvbigpLHA9bi50ZXh0Q29udGVudD8ubGVuZ3RofHwwO28uc2V0U3RhcnQobixwKSxvLnNldEVuZChuLHApLGw/LnJlbW92ZUFsbFJhbmdlcygpLGw/LmFkZFJhbmdlKG8pfX19Z2V0Rmlyc3RUZXh0Tm9kZShlKXtpZihlLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREUpcmV0dXJuIGU7Zm9yKGxldCB0PTA7dDxlLmNoaWxkTm9kZXMubGVuZ3RoO3QrKyl7bGV0IGE9dGhpcy5nZXRGaXJzdFRleHROb2RlKGUuY2hpbGROb2Rlc1t0XSk7aWYoYSlyZXR1cm4gYX1yZXR1cm4gbnVsbH1nZXRMYXN0VGV4dE5vZGUoZSl7aWYoZS5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFKXJldHVybiBlO2ZvcihsZXQgdD1lLmNoaWxkTm9kZXMubGVuZ3RoLTE7dD49MDt0LS0pe2xldCBhPXRoaXMuZ2V0TGFzdFRleHROb2RlKGUuY2hpbGROb2Rlc1t0XSk7aWYoYSlyZXR1cm4gYX1yZXR1cm4gbnVsbH1mb2N1cyhlLHQpe2xldCBhPWUucXVlcnlTZWxlY3RvcigiLmJsb2NrLmxpc3QiKTthJiYoYS5oYXNBdHRyaWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIpfHxhLnNldEF0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIiwidHJ1ZSIpLGEuZm9jdXMoKSxkb2N1bWVudC5hY3RpdmVFbGVtZW50IT09YSYmZS5zaGFkb3dSb290Py5hY3RpdmVFbGVtZW50IT09YSYmUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e2EuZm9jdXMoKX0pKX1mb2N1c1dpdGhDdXJzb3IoZSx0PSJlbmQiLGEpe2xldCByPWUucXVlcnlTZWxlY3RvcigiLmJsb2NrLmxpc3QiKTtpZighcilyZXR1cm47ci5oYXNBdHRyaWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIpfHxyLnNldEF0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIiwidHJ1ZSIpLHIuZm9jdXMoKTtsZXQgbj1pKCgpPT57dD09PSJzdGFydCI/dGhpcy5zZXRDdXJzb3JUb1N0YXJ0KGUsYSk6dD09PSJlbmQiP3RoaXMuc2V0Q3Vyc29yVG9FbmQoZSxhKTp0eXBlb2YgdD09Im51bWJlciImJnRoaXMuc2V0Q3Vyc29yVG9FbmQoZSxhKX0sInNldEN1cnNvciIpO2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT1yfHxlLnNoYWRvd1Jvb3Q/LmFjdGl2ZUVsZW1lbnQ9PT1yP24oKTpQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT57KGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT1yfHxlLnNoYWRvd1Jvb3Q/LmFjdGl2ZUVsZW1lbnQ9PT1yKSYmbigpfSl9Z2V0U3BsaXRDb250ZW50KGUsdCl7cmV0dXJuIGUucXVlcnlTZWxlY3RvcigiLmJsb2NrLmxpc3QiKSxudWxsfX19KTt2YXIgUlEsbHZhPWcoKCk9PntuYygpO3BlKCk7UlE9Y2xhc3MgZXh0ZW5kcyBnaXtzdGF0aWN7aSh0aGlzLCJJbWFnZUJsb2NrSGFuZGxlciIpfXR5cGU9ImltYWdlIjtyZW5kZXIoZSx0KXtsZXQgYT1lLm1ldGFkYXRhPy51cmwscj1lLmNvbnRlbnR8fCJJbWFnZSIsbj1lLm1ldGFkYXRhPy5sb2FkaW5nO3JldHVybmAKICAgICAgPGRpdiBjbGFzcz0iaW1hZ2UtYmxvY2stY29udGFpbmVyJHt0PyIgc2VsZWN0ZWQiOiIifSIgCiAgICAgICAgICAgZGF0YS1ibG9jay1pZD0iJHtlLmlkfSIKICAgICAgICAgICBkYXRhLWhhcy1pbWFnZT0iJHshIWF9IgogICAgICAgICAgIHRhYmluZGV4PSIwIj4KICAgICAgICAke24/dGhpcy5yZW5kZXJMb2FkaW5nKCk6YT90aGlzLnJlbmRlckltYWdlKGEscik6dGhpcy5yZW5kZXJQbGFjZWhvbGRlcigpfQogICAgICAgIDxpbnB1dCB0eXBlPSJmaWxlIiAKICAgICAgICAgICAgICAgY2xhc3M9ImltYWdlLWZpbGUtaW5wdXQiIAogICAgICAgICAgICAgICBhY2NlcHQ9ImltYWdlLyoiIAogICAgICAgICAgICAgICBzdHlsZT0iZGlzcGxheTogbm9uZTsiIC8+CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJQbGFjZWhvbGRlcigpe3JldHVybmAKICAgICAgPGRpdiBjbGFzcz0iaW1hZ2UtdXBsb2FkLXBsYWNlaG9sZGVyIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyI+CiAgICAgICAgPGRpdiBjbGFzcz0idXBsb2FkLWljb24iIHN0eWxlPSJwb2ludGVyLWV2ZW50czogbm9uZTsiPgogICAgICAgICAgPHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS41Ij4KICAgICAgICAgICAgPHJlY3QgeD0iMyIgeT0iMyIgd2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiByeD0iMiIgcnk9IjIiLz4KICAgICAgICAgICAgPGNpcmNsZSBjeD0iOC41IiBjeT0iOC41IiByPSIxLjUiLz4KICAgICAgICAgICAgPHBvbHlsaW5lIHBvaW50cz0iMjEgMTUgMTYgMTAgNSAyMSIvPgogICAgICAgICAgPC9zdmc+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0idXBsb2FkLXRleHQiIHN0eWxlPSJwb2ludGVyLWV2ZW50czogbm9uZTsiPkNsaWNrIHRvIHVwbG9hZCBhbiBpbWFnZTwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InVwbG9hZC1oaW50IiBzdHlsZT0icG9pbnRlci1ldmVudHM6IG5vbmU7Ij5vciBkcmFnIGFuZCBkcm9wPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJJbWFnZShlLHQpe3JldHVybmAKICAgICAgPGRpdiBjbGFzcz0iaW1hZ2UtY29udGFpbmVyIj4KICAgICAgICA8aW1nIHNyYz0iJHtlfSIgYWx0PSIke3RoaXMuZXNjYXBlSHRtbCh0KX0iIC8+CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJMb2FkaW5nKCl7cmV0dXJuYAogICAgICA8ZGl2IGNsYXNzPSJpbWFnZS1sb2FkaW5nIj4KICAgICAgICA8ZGl2IGNsYXNzPSJsb2FkaW5nLXNwaW5uZXIiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImxvYWRpbmctdGV4dCI+VXBsb2FkaW5nIGltYWdlLi4uPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1zZXR1cChlLHQsYSl7bGV0IHI9ZS5xdWVyeVNlbGVjdG9yKCIuaW1hZ2UtYmxvY2stY29udGFpbmVyIiksbj1lLnF1ZXJ5U2VsZWN0b3IoIi5pbWFnZS1maWxlLWlucHV0Iik7aWYoIXIpe2NvbnNvbGUuZXJyb3IoIkltYWdlQmxvY2tIYW5kbGVyOiBDb3VsZCBub3QgZmluZCBjb250YWluZXIiKTtyZXR1cm59aWYoIW4pe2NvbnNvbGUuZXJyb3IoIkltYWdlQmxvY2tIYW5kbGVyOiBDb3VsZCBub3QgZmluZCBmaWxlIGlucHV0Iik7cmV0dXJufWxldCBvPXIucXVlcnlTZWxlY3RvcigiLmltYWdlLXVwbG9hZC1wbGFjZWhvbGRlciIpO28mJm8uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGw9PntsLnByZXZlbnREZWZhdWx0KCksbC5zdG9wUHJvcGFnYXRpb24oKSxjb25zb2xlLmxvZygiSW1hZ2VCbG9ja0hhbmRsZXI6IFBsYWNlaG9sZGVyIGNsaWNrZWQsIG9wZW5pbmcgZmlsZSBzZWxlY3RvciIpLG4uY2xpY2soKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57YS5vbkZvY3VzKCl9KSxuLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsYXN5bmMgbD0+e2xldCBkPWwudGFyZ2V0LmZpbGVzPy5bMF07ZCYmKGNvbnNvbGUubG9nKCJJbWFnZUJsb2NrSGFuZGxlcjogRmlsZSBzZWxlY3RlZDoiLGQubmFtZSksYXdhaXQgdGhpcy5oYW5kbGVGaWxlVXBsb2FkKGQsdCxhKSl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoImRyYWdvdmVyIixsPT57bC5wcmV2ZW50RGVmYXVsdCgpLGwuc3RvcFByb3BhZ2F0aW9uKCksdC5tZXRhZGF0YT8udXJsfHxyLmNsYXNzTGlzdC5hZGQoImRyYWctb3ZlciIpfSksci5hZGRFdmVudExpc3RlbmVyKCJkcmFnbGVhdmUiLGw9PntsLnByZXZlbnREZWZhdWx0KCksbC5zdG9wUHJvcGFnYXRpb24oKSxyLmNsYXNzTGlzdC5yZW1vdmUoImRyYWctb3ZlciIpfSksci5hZGRFdmVudExpc3RlbmVyKCJkcm9wIixhc3luYyBsPT57bC5wcmV2ZW50RGVmYXVsdCgpLGwuc3RvcFByb3BhZ2F0aW9uKCksci5jbGFzc0xpc3QucmVtb3ZlKCJkcmFnLW92ZXIiKTtsZXQgcD1sLmRhdGFUcmFuc2Zlcj8uZmlsZXNbMF07cCYmcC50eXBlLnN0YXJ0c1dpdGgoImltYWdlLyIpJiYhdC5tZXRhZGF0YT8udXJsJiZhd2FpdCB0aGlzLmhhbmRsZUZpbGVVcGxvYWQocCx0LGEpfSksci5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsKCk9PmEub25Gb2N1cygpKSxyLmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCgpPT5hLm9uQmx1cigpKSxyLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLGw9PntpZigobC5rZXk9PT0iRGVsZXRlInx8bC5rZXk9PT0iQmFja3NwYWNlIikmJnQubWV0YWRhdGE/LnVybCl7dC5tZXRhZGF0YS51cmw9dm9pZCAwLHQubWV0YWRhdGEubG9hZGluZz0hMSx0LmNvbnRlbnQ9IiIsYS5vbklucHV0KG5ldyBJbnB1dEV2ZW50KCJpbnB1dCIpKTtyZXR1cm59YS5vbktleURvd24obCl9KX1hc3luYyBoYW5kbGVGaWxlVXBsb2FkKGUsdCxhKXtpZihjb25zb2xlLmxvZygiSW1hZ2VCbG9ja0hhbmRsZXI6IFN0YXJ0aW5nIGZpbGUgdXBsb2FkIix7ZmlsZU5hbWU6ZS5uYW1lLGZpbGVTaXplOmUuc2l6ZSxibG9ja0lkOnQuaWR9KSwhZS50eXBlLnN0YXJ0c1dpdGgoImltYWdlLyIpKXtjb25zb2xlLmVycm9yKCJJbnZhbGlkIGZpbGUgdHlwZToiLGUudHlwZSk7cmV0dXJufWxldCByPTEwKjEwMjQqMTAyNDtpZihlLnNpemU+cil7Y29uc29sZS5lcnJvcigiRmlsZSB0b28gbGFyZ2UuIE1heGltdW0gc2l6ZSBpcyAxME1CIik7cmV0dXJufXQubWV0YWRhdGF8fCh0Lm1ldGFkYXRhPXt9KSx0Lm1ldGFkYXRhLmxvYWRpbmc9ITAsdC5tZXRhZGF0YS5maWxlTmFtZT1lLm5hbWUsdC5tZXRhZGF0YS5maWxlU2l6ZT1lLnNpemUsdC5tZXRhZGF0YS5taW1lVHlwZT1lLnR5cGUsY29uc29sZS5sb2coIkltYWdlQmxvY2tIYW5kbGVyOiBTZXQgbG9hZGluZyBzdGF0ZSwgcmVxdWVzdGluZyB1cGRhdGUiKSxhLm9uUmVxdWVzdFVwZGF0ZT8uKCk7dHJ5e2xldCBuPWF3YWl0IHRoaXMuZmlsZVRvRGF0YVVybChlKTt0Lm1ldGFkYXRhLnVybD1uLHQubWV0YWRhdGEubG9hZGluZz0hMTtsZXQgbz1lLm5hbWUucmVwbGFjZSgvXC5bXi8uXSskLywiIik7dC5jb250ZW50PW8sY29uc29sZS5sb2coIkltYWdlQmxvY2tIYW5kbGVyOiBVcGxvYWQgY29tcGxldGUsIHJlcXVlc3RpbmcgdXBkYXRlIix7aGFzVXJsOiEhdC5tZXRhZGF0YS51cmwsdXJsTGVuZ3RoOm4ubGVuZ3RoLGFsdFRleHQ6dC5jb250ZW50fSksYS5vblJlcXVlc3RVcGRhdGU/LigpfWNhdGNoKG4pe2NvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byB1cGxvYWQgaW1hZ2U6IixuKSx0Lm1ldGFkYXRhLmxvYWRpbmc9ITEsYS5vblJlcXVlc3RVcGRhdGU/LigpfX1maWxlVG9EYXRhVXJsKGUpe3JldHVybiBuZXcgUHJvbWlzZSgodCxhKT0+e2xldCByPW5ldyBGaWxlUmVhZGVyO3Iub25sb2FkPW49PntsZXQgbz1uLnRhcmdldD8ucmVzdWx0O3R5cGVvZiBvPT0ic3RyaW5nIj90KG8pOmEobmV3IEVycm9yKCJGYWlsZWQgdG8gcmVhZCBmaWxlIikpfSxyLm9uZXJyb3I9YSxyLnJlYWRBc0RhdGFVUkwoZSl9KX1lc2NhcGVIdG1sKGUpe2xldCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0LnRleHRDb250ZW50PWUsdC5pbm5lckhUTUx9Z2V0Q29udGVudChlKXtyZXR1cm4gdGhpcy5nZXRCbG9ja0Zyb21FbGVtZW50KGUpPy5jb250ZW50fHwiIn1zZXRDb250ZW50KGUsdCl7bGV0IGE9dGhpcy5nZXRCbG9ja0Zyb21FbGVtZW50KGUpO2EmJihhLmNvbnRlbnQ9dCl9Z2V0QmxvY2tGcm9tRWxlbWVudChlKXtsZXQgYT1lLnF1ZXJ5U2VsZWN0b3IoIi5pbWFnZS1ibG9jay1jb250YWluZXIiKT8uZ2V0QXR0cmlidXRlKCJkYXRhLWJsb2NrLWlkIik7cmV0dXJuIGE/e2lkOmEsdHlwZToiaW1hZ2UiLGNvbnRlbnQ6IiIsbWV0YWRhdGE6e319Om51bGx9Z2V0Q3Vyc29yUG9zaXRpb24oZSl7cmV0dXJuIG51bGx9c2V0Q3Vyc29yVG9TdGFydChlKXt0aGlzLmZvY3VzKGUpfXNldEN1cnNvclRvRW5kKGUpe3RoaXMuZm9jdXMoZSl9Zm9jdXMoZSl7ZS5xdWVyeVNlbGVjdG9yKCIuaW1hZ2UtYmxvY2stY29udGFpbmVyIik/LmZvY3VzKCl9Zm9jdXNXaXRoQ3Vyc29yKGUsdD0iZW5kIil7dGhpcy5mb2N1cyhlKX1nZXRTcGxpdENvbnRlbnQoZSl7cmV0dXJuIG51bGx9Z2V0U3R5bGVzKCl7cmV0dXJuYAogICAgICAvKiBJbWFnZSBCbG9jayBDb250YWluZXIgKi8KICAgICAgLmltYWdlLWJsb2NrLWNvbnRhaW5lciB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG1hcmdpbjogMTJweCAwOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICB9CiAgICAgIAogICAgICAuaW1hZ2UtYmxvY2stY29udGFpbmVyLnNlbGVjdGVkIHsKICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggJHtoLmJkVGhlbWUoIiM2MzY2ZjEiLCIjODE4Y2Y4Iil9OwogICAgICB9CiAgICAgIAogICAgICAvKiBVcGxvYWQgUGxhY2Vob2xkZXIgKi8KICAgICAgLmltYWdlLXVwbG9hZC1wbGFjZWhvbGRlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgcGFkZGluZzogNDhweCAyNHB4OwogICAgICAgIGJvcmRlcjogMnB4IGRhc2hlZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMzNzQxNTEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmFmYWZhIiwiIzBhMGEwYSIpfTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgfQogICAgICAKICAgICAgLmltYWdlLWJsb2NrLWNvbnRhaW5lcjpob3ZlciAuaW1hZ2UtdXBsb2FkLXBsYWNlaG9sZGVyIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjOWNhM2FmIiwiIzZiNzI4MCIpfTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y5ZmFmYiIsIiMxMTE4MjciKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5pbWFnZS1ibG9jay1jb250YWluZXIuZHJhZy1vdmVyIC5pbWFnZS11cGxvYWQtcGxhY2Vob2xkZXIgewogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiM2MzY2ZjEiLCIjODE4Y2Y4Iil9OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZWZmNmZmIiwiIzFlMWI0YiIpfTsKICAgICAgfQogICAgICAKICAgICAgLnVwbG9hZC1pY29uIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzljYTNhZiIsIiM0YjU1NjMiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC51cGxvYWQtdGV4dCB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMzc0MTUxIiwiI2U1ZTdlYiIpfTsKICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7CiAgICAgIH0KICAgICAgCiAgICAgIC51cGxvYWQtaGludCB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzljYTNhZiIsIiM2YjcyODAiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC8qIEltYWdlIENvbnRhaW5lciAqLwogICAgICAuaW1hZ2UtY29udGFpbmVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgbWluLWhlaWdodDogMjAwcHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmOWZhZmIiLCIjMTExODI3Iil9OwogICAgICB9CiAgICAgIAogICAgICAuaW1hZ2UtY29udGFpbmVyIGltZyB7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgIH0KICAgICAgCiAgICAgIC8qIExvYWRpbmcgU3RhdGUgKi8KICAgICAgLmltYWdlLWxvYWRpbmcgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDQ4cHggMjRweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZhZmFmYSIsIiMwYTBhMGEiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5sb2FkaW5nLXNwaW5uZXIgewogICAgICAgIHdpZHRoOiAzMnB4OwogICAgICAgIGhlaWdodDogMzJweDsKICAgICAgICBib3JkZXI6IDNweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMzNzQxNTEiKX07CiAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJHtoLmJkVGhlbWUoIiM2MzY2ZjEiLCIjODE4Y2Y4Iil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICBhbmltYXRpb246IHNwaW4gMC44cyBsaW5lYXIgaW5maW5pdGU7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDsKICAgICAgfQogICAgICAKICAgICAgQGtleWZyYW1lcyBzcGluIHsKICAgICAgICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0KICAgICAgfQogICAgICAKICAgICAgLmxvYWRpbmctdGV4dCB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzZiNzI4MCIsIiM5Y2EzYWYiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC8qIEZpbGUgaW5wdXQgaGlkZGVuICovCiAgICAgIC5pbWFnZS1maWxlLWlucHV0IHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgIH0KICAgIGB9fX0pO3ZhciBPUSxjdmE9ZygoKT0+e25jKCk7cGUoKTtPUT1jbGFzcyBleHRlbmRzIGdpe3N0YXRpY3tpKHRoaXMsIllvdVR1YmVCbG9ja0hhbmRsZXIiKX10eXBlPSJ5b3V0dWJlIjtyZW5kZXIoZSx0KXtsZXQgYT1lLm1ldGFkYXRhPy52aWRlb0lkLHI9ZS5tZXRhZGF0YT8udXJsfHwiIjtyZXR1cm5gCiAgICAgIDxkaXYgY2xhc3M9InlvdXR1YmUtYmxvY2stY29udGFpbmVyJHt0PyIgc2VsZWN0ZWQiOiIifSIgCiAgICAgICAgICAgZGF0YS1ibG9jay1pZD0iJHtlLmlkfSIKICAgICAgICAgICBkYXRhLWhhcy12aWRlbz0iJHshIWF9Ij4KICAgICAgICAke2E/dGhpcy5yZW5kZXJWaWRlbyhhKTp0aGlzLnJlbmRlclBsYWNlaG9sZGVyKHIpfQogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyUGxhY2Vob2xkZXIoZSl7cmV0dXJuYAogICAgICA8ZGl2IGNsYXNzPSJ5b3V0dWJlLXBsYWNlaG9sZGVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJwbGFjZWhvbGRlci1pY29uIj4KICAgICAgICAgIDxzdmcgd2lkdGg9IjQ4IiBoZWlnaHQ9IjQ4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9ImN1cnJlbnRDb2xvciI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS42MTUgMy4xODRjLTMuNjA0LS4yNDYtMTEuNjMxLS4yNDUtMTUuMjMgMC0zLjg5Ny4yNjYtNC4zNTYgMi42Mi00LjM4NSA4LjgxNi4wMjkgNi4xODUuNDg0IDguNTQ5IDQuMzg1IDguODE2IDMuNi4yNDUgMTEuNjI2LjI0NiAxNS4yMyAwIDMuODk3LS4yNjYgNC4zNTYtMi42MiA0LjM4NS04LjgxNi0uMDI5LTYuMTg1LS40ODQtOC41NDktNC4zODUtOC44MTZ6bS0xMC42MTUgMTIuODE2di04bDggMy45OTMtOCA0LjAwN3oiLz4KICAgICAgICAgIDwvc3ZnPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyLXRleHQiPkVudGVyIFlvdVR1YmUgVVJMPC9kaXY+CiAgICAgICAgPGlucHV0IHR5cGU9InVybCIgCiAgICAgICAgICAgICAgIGNsYXNzPSJ5b3V0dWJlLXVybC1pbnB1dCIgCiAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSJodHRwczovL3lvdXR1YmUuY29tL3dhdGNoP3Y9Li4uIiAKICAgICAgICAgICAgICAgdmFsdWU9IiR7dGhpcy5lc2NhcGVIdG1sKGUpfSIgLz4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJ5b3V0dWJlLWVtYmVkLWJ0biI+RW1iZWQgVmlkZW88L2J1dHRvbj4KICAgICAgPC9kaXY+CiAgICBgfXJlbmRlclZpZGVvKGUpe3JldHVybmAKICAgICAgPGRpdiBjbGFzcz0ieW91dHViZS1jb250YWluZXIiPgogICAgICAgIDxpZnJhbWUgCiAgICAgICAgICBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLyR7ZX0iCiAgICAgICAgICBmcmFtZWJvcmRlcj0iMCIKICAgICAgICAgIGFsbG93PSJhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgY2xpcGJvYXJkLXdyaXRlOyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIgogICAgICAgICAgYWxsb3dmdWxsc2NyZWVuCiAgICAgICAgPjwvaWZyYW1lPgogICAgICA8L2Rpdj4KICAgIGB9c2V0dXAoZSx0LGEpe2xldCByPWUucXVlcnlTZWxlY3RvcigiLnlvdXR1YmUtYmxvY2stY29udGFpbmVyIik7aWYoIXIpcmV0dXJuO2lmKHQubWV0YWRhdGE/LnZpZGVvSWQpe3Iuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIjAiKSxyLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwoKT0+YS5vbkZvY3VzKCkpLHIuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsKCk9PmEub25CbHVyKCkpLHIuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsbD0+eyhsLmtleT09PSJEZWxldGUifHxsLmtleT09PSJCYWNrc3BhY2UiKSYmbC5wcmV2ZW50RGVmYXVsdCgpLGEub25LZXlEb3duKGwpfSk7cmV0dXJufWxldCBuPWUucXVlcnlTZWxlY3RvcigiLnlvdXR1YmUtdXJsLWlucHV0Iiksbz1lLnF1ZXJ5U2VsZWN0b3IoIi55b3V0dWJlLWVtYmVkLWJ0biIpOyFufHwhb3x8KG4uYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCgpPT5hLm9uRm9jdXMoKSksbi5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwoKT0+YS5vbkJsdXIoKSksby5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9Pnt0aGlzLmVtYmVkVmlkZW8obi52YWx1ZSx0LGEpfSksbi5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixsPT57bC5rZXk9PT0iRW50ZXIiPyhsLnByZXZlbnREZWZhdWx0KCksdGhpcy5lbWJlZFZpZGVvKG4udmFsdWUsdCxhKSk6bC5rZXk9PT0iRXNjYXBlIiYmKGwucHJldmVudERlZmF1bHQoKSxuLmJsdXIoKSl9KSxuLmFkZEV2ZW50TGlzdGVuZXIoInBhc3RlIixsPT57c2V0VGltZW91dCgoKT0+e2xldCBwPW4udmFsdWU7dGhpcy5leHRyYWN0WW91VHViZVZpZGVvSWQocCkmJnRoaXMuZW1iZWRWaWRlbyhwLHQsYSl9LDApfSksbi5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsKCk9Pnt0Lm1ldGFkYXRhfHwodC5tZXRhZGF0YT17fSksdC5tZXRhZGF0YS51cmw9bi52YWx1ZX0pKX1lbWJlZFZpZGVvKGUsdCxhKXtsZXQgcj10aGlzLmV4dHJhY3RZb3VUdWJlVmlkZW9JZChlKTtpZighcil7Y29uc29sZS5lcnJvcigiSW52YWxpZCBZb3VUdWJlIFVSTCIpO3JldHVybn10Lm1ldGFkYXRhfHwodC5tZXRhZGF0YT17fSksdC5tZXRhZGF0YS52aWRlb0lkPXIsdC5tZXRhZGF0YS51cmw9ZSx0LmNvbnRlbnQ9YFlvdVR1YmUgVmlkZW86ICR7cn1gLGEub25SZXF1ZXN0VXBkYXRlPy4oKX1leHRyYWN0WW91VHViZVZpZGVvSWQoZSl7bGV0IHQ9Wy8oPzp5b3V0dWJlXC5jb21cLyg/OlteXC9dK1wvLitcL3woPzp2fGUoPzptYmVkKT8pXC98LipbPyZddj0pfHlvdXR1XC5iZVwvKShbXiImP1wvIF17MTF9KS8sL3lvdXR1YmVcLmNvbVwvZW1iZWRcLyhbXiImP1wvIF17MTF9KS8sL3lvdXR1YmVcLmNvbVwvd2F0Y2hcP3Y9KFteIiY/XC8gXXsxMX0pLywveW91dHVcLmJlXC8oW14iJj9cLyBdezExfSkvXTtmb3IobGV0IGEgb2YgdCl7bGV0IHI9ZS5tYXRjaChhKTtpZihyKXJldHVybiByWzFdfXJldHVybiBudWxsfWVzY2FwZUh0bWwoZSl7bGV0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIHQudGV4dENvbnRlbnQ9ZSx0LmlubmVySFRNTH1nZXRDb250ZW50KGUpe3JldHVybiB0aGlzLmdldEJsb2NrRnJvbUVsZW1lbnQoZSk/LmNvbnRlbnR8fCIifXNldENvbnRlbnQoZSx0KXtsZXQgYT10aGlzLmdldEJsb2NrRnJvbUVsZW1lbnQoZSk7YSYmKGEuY29udGVudD10KX1nZXRCbG9ja0Zyb21FbGVtZW50KGUpe2xldCBhPWUucXVlcnlTZWxlY3RvcigiLnlvdXR1YmUtYmxvY2stY29udGFpbmVyIik/LmdldEF0dHJpYnV0ZSgiZGF0YS1ibG9jay1pZCIpO3JldHVybiBhP3tpZDphLHR5cGU6InlvdXR1YmUiLGNvbnRlbnQ6IiIsbWV0YWRhdGE6e319Om51bGx9Z2V0Q3Vyc29yUG9zaXRpb24oZSl7cmV0dXJuIG51bGx9c2V0Q3Vyc29yVG9TdGFydChlKXt0aGlzLmZvY3VzKGUpfXNldEN1cnNvclRvRW5kKGUpe3RoaXMuZm9jdXMoZSl9Zm9jdXMoZSl7bGV0IHQ9ZS5xdWVyeVNlbGVjdG9yKCIueW91dHViZS1ibG9jay1jb250YWluZXIiKSxhPWUucXVlcnlTZWxlY3RvcigiLnlvdXR1YmUtdXJsLWlucHV0Iik7YT9hLmZvY3VzKCk6dCYmdC5mb2N1cygpfWZvY3VzV2l0aEN1cnNvcihlLHQ9ImVuZCIpe3RoaXMuZm9jdXMoZSl9Z2V0U3BsaXRDb250ZW50KGUpe3JldHVybiBudWxsfWdldFN0eWxlcygpe3JldHVybmAKICAgICAgLyogWW91VHViZSBCbG9jayBDb250YWluZXIgKi8KICAgICAgLnlvdXR1YmUtYmxvY2stY29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgbWFyZ2luOiAxMnB4IDA7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgfQogICAgICAKICAgICAgLnlvdXR1YmUtYmxvY2stY29udGFpbmVyLnNlbGVjdGVkIHsKICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggJHtoLmJkVGhlbWUoIiM2MzY2ZjEiLCIjODE4Y2Y4Iil9OwogICAgICB9CiAgICAgIAogICAgICAvKiBZb3VUdWJlIFBsYWNlaG9sZGVyICovCiAgICAgIC55b3V0dWJlLXBsYWNlaG9sZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiAzMnB4IDI0cHg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMzc0MTUxIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZhZmFmYSIsIiMwYTBhMGEiKX07CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICB9CiAgICAgIAogICAgICAucGxhY2Vob2xkZXItaWNvbiB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZGMyNjI2IiwiI2VmNDQ0NCIpfTsKICAgICAgICBvcGFjaXR5OiAwLjg7CiAgICAgIH0KICAgICAgCiAgICAgIC5wbGFjZWhvbGRlci10ZXh0IHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzNzQxNTEiLCIjZTVlN2ViIil9OwogICAgICB9CiAgICAgIAogICAgICAueW91dHViZS11cmwtaW5wdXQgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1heC13aWR0aDogNDAwcHg7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMzc0MTUxIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMxMTE4MjciKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTExODI3IiwiI2Y5ZmFmYiIpfTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgc2Fucy1zZXJpZjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICB9CiAgICAgIAogICAgICAueW91dHViZS11cmwtaW5wdXQ6Zm9jdXMgewogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiM2YjcyODAiLCIjOWNhM2FmIil9OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzFmMjkzNyIpfTsKICAgICAgfQogICAgICAKICAgICAgLnlvdXR1YmUtdXJsLWlucHV0OjpwbGFjZWhvbGRlciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjOWNhM2FmIiwiIzRiNTU2MyIpfTsKICAgICAgfQogICAgICAKICAgICAgLnlvdXR1YmUtZW1iZWQtYnRuIHsKICAgICAgICBwYWRkaW5nOiA2cHggMTZweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiIzExMTgyNyIsIiNmOWZhZmIiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZjlmYWZiIiwiIzExMTgyNyIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgc2Fucy1zZXJpZjsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgfQogICAgICAKICAgICAgLnlvdXR1YmUtZW1iZWQtYnRuOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiIzM3NDE1MSIsIiNlNWU3ZWIiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC55b3V0dWJlLWVtYmVkLWJ0bjphY3RpdmUgewogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45OCk7CiAgICAgIH0KICAgICAgCiAgICAgIC8qIFlvdVR1YmUgQ29udGFpbmVyICovCiAgICAgIC55b3V0dWJlLWNvbnRhaW5lciB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHBhZGRpbmctYm90dG9tOiA1Ni4yNSU7IC8qIDE2OjkgYXNwZWN0IHJhdGlvICovCiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiMwMDAwMDAiLCIjMDAwMDAwIil9OwogICAgICB9CiAgICAgIAogICAgICAueW91dHViZS1jb250YWluZXIgaWZyYW1lIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGJvcmRlcjogMDsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgIH0KICAgIGB9fX0pO3ZhciBGUSxkdmE9ZygoKT0+e25jKCk7cGUoKTtGUT1jbGFzcyBleHRlbmRzIGdpe3N0YXRpY3tpKHRoaXMsIkF0dGFjaG1lbnRCbG9ja0hhbmRsZXIiKX10eXBlPSJhdHRhY2htZW50IjtyZW5kZXIoZSx0KXtsZXQgYT1lLm1ldGFkYXRhPy5maWxlc3x8W107cmV0dXJuYAogICAgICA8ZGl2IGNsYXNzPSJhdHRhY2htZW50LWJsb2NrLWNvbnRhaW5lciR7dD8iIHNlbGVjdGVkIjoiIn0iIAogICAgICAgICAgIGRhdGEtYmxvY2staWQ9IiR7ZS5pZH0iCiAgICAgICAgICAgdGFiaW5kZXg9IjAiPgogICAgICAgIDxkaXYgY2xhc3M9ImF0dGFjaG1lbnQtaGVhZGVyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImF0dGFjaG1lbnQtaWNvbiI+XHV7MUY0Q0V9PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJhdHRhY2htZW50LXRpdGxlIj5GaWxlIEF0dGFjaG1lbnRzPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYXR0YWNobWVudC1saXN0Ij4KICAgICAgICAgICR7YS5sZW5ndGg+MD90aGlzLnJlbmRlckZpbGVzKGEpOnRoaXMucmVuZGVyUGxhY2Vob2xkZXIoKX0KICAgICAgICA8L2Rpdj4KICAgICAgICA8aW5wdXQgdHlwZT0iZmlsZSIgCiAgICAgICAgICAgICAgIGNsYXNzPSJhdHRhY2htZW50LWZpbGUtaW5wdXQiIAogICAgICAgICAgICAgICBtdWx0aXBsZSAKICAgICAgICAgICAgICAgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiAvPgogICAgICAgICR7YS5sZW5ndGg+MD8nPGJ1dHRvbiBjbGFzcz0iYWRkLW1vcmUtZmlsZXMiPkFkZCBNb3JlIEZpbGVzPC9idXR0b24+JzoiIn0KICAgICAgPC9kaXY+CiAgICBgfXJlbmRlclBsYWNlaG9sZGVyKCl7cmV0dXJuYAogICAgICA8ZGl2IGNsYXNzPSJhdHRhY2htZW50LXBsYWNlaG9sZGVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJwbGFjZWhvbGRlci10ZXh0Ij5DbGljayB0byBhZGQgZmlsZXM8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJwbGFjZWhvbGRlci1oaW50Ij5vciBkcmFnIGFuZCBkcm9wPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJGaWxlcyhlKXtyZXR1cm4gZS5tYXAodD0+YAogICAgICA8ZGl2IGNsYXNzPSJhdHRhY2htZW50LWl0ZW0iIGRhdGEtZmlsZS1pZD0iJHt0LmlkfSI+CiAgICAgICAgPGRpdiBjbGFzcz0iZmlsZS1pY29uIj4ke3RoaXMuZ2V0RmlsZUljb24odC50eXBlKX08L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJmaWxlLWluZm8iPgogICAgICAgICAgPGRpdiBjbGFzcz0iZmlsZS1uYW1lIj4ke3RoaXMuZXNjYXBlSHRtbCh0Lm5hbWUpfTwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZmlsZS1zaXplIj4ke3RoaXMuZm9ybWF0RmlsZVNpemUodC5zaXplKX08L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJyZW1vdmUtZmlsZSIgZGF0YS1maWxlLWlkPSIke3QuaWR9Ij5ceEQ3PC9idXR0b24+CiAgICAgIDwvZGl2PgogICAgYCkuam9pbigiIil9c2V0dXAoZSx0LGEpe2xldCByPWUucXVlcnlTZWxlY3RvcigiLmF0dGFjaG1lbnQtYmxvY2stY29udGFpbmVyIiksbj1lLnF1ZXJ5U2VsZWN0b3IoIi5hdHRhY2htZW50LWZpbGUtaW5wdXQiKTtpZighcnx8IW4pe2NvbnNvbGUuZXJyb3IoIkF0dGFjaG1lbnRCbG9ja0hhbmRsZXI6IENvdWxkIG5vdCBmaW5kIHJlcXVpcmVkIGVsZW1lbnRzIik7cmV0dXJufXQubWV0YWRhdGF8fCh0Lm1ldGFkYXRhPXt9KSx0Lm1ldGFkYXRhLmZpbGVzfHwodC5tZXRhZGF0YS5maWxlcz1bXSk7bGV0IG89ci5xdWVyeVNlbGVjdG9yKCIuYXR0YWNobWVudC1wbGFjZWhvbGRlciIpO28mJm8uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLHA9PntwLnByZXZlbnREZWZhdWx0KCkscC5zdG9wUHJvcGFnYXRpb24oKSxuLmNsaWNrKCl9KTtsZXQgbD1yLnF1ZXJ5U2VsZWN0b3IoIi5hZGQtbW9yZS1maWxlcyIpO2wmJmwuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLHA9PntwLnByZXZlbnREZWZhdWx0KCkscC5zdG9wUHJvcGFnYXRpb24oKSxuLmNsaWNrKCl9KSxuLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsYXN5bmMgcD0+e2xldCBkPXAudGFyZ2V0LHU9ZC5maWxlczt1JiZ1Lmxlbmd0aD4wJiYoYXdhaXQgdGhpcy5oYW5kbGVGaWxlQXR0YWNobWVudHModSx0LGEpLGQudmFsdWU9IiIpfSksci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIscD0+e2xldCBkPXAudGFyZ2V0O2lmKGQuY2xhc3NMaXN0LmNvbnRhaW5zKCJyZW1vdmUtZmlsZSIpKXtwLnByZXZlbnREZWZhdWx0KCkscC5zdG9wUHJvcGFnYXRpb24oKTtsZXQgdT1kLmdldEF0dHJpYnV0ZSgiZGF0YS1maWxlLWlkIik7dSYmdGhpcy5yZW1vdmVGaWxlKHUsdCxhKX19KSxyLmFkZEV2ZW50TGlzdGVuZXIoImRyYWdvdmVyIixwPT57cC5wcmV2ZW50RGVmYXVsdCgpLHAuc3RvcFByb3BhZ2F0aW9uKCksci5jbGFzc0xpc3QuYWRkKCJkcmFnLW92ZXIiKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ2xlYXZlIixwPT57cC5wcmV2ZW50RGVmYXVsdCgpLHAuc3RvcFByb3BhZ2F0aW9uKCksci5jbGFzc0xpc3QucmVtb3ZlKCJkcmFnLW92ZXIiKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigiZHJvcCIsYXN5bmMgcD0+e3AucHJldmVudERlZmF1bHQoKSxwLnN0b3BQcm9wYWdhdGlvbigpLHIuY2xhc3NMaXN0LnJlbW92ZSgiZHJhZy1vdmVyIik7bGV0IGQ9cC5kYXRhVHJhbnNmZXI/LmZpbGVzO2QmJmQubGVuZ3RoPjAmJmF3YWl0IHRoaXMuaGFuZGxlRmlsZUF0dGFjaG1lbnRzKGQsdCxhKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCgpPT5hLm9uRm9jdXMoKSksci5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwoKT0+YS5vbkJsdXIoKSksci5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixwPT57aWYoKHAua2V5PT09IkRlbGV0ZSJ8fHAua2V5PT09IkJhY2tzcGFjZSIpJiZkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09ciYmdC5tZXRhZGF0YT8uZmlsZXM/Lmxlbmd0aD4wKXtwLnByZXZlbnREZWZhdWx0KCksdC5tZXRhZGF0YS5maWxlcz1bXSxhLm9uUmVxdWVzdFVwZGF0ZT8uKCk7cmV0dXJufWEub25LZXlEb3duKHApfSl9YXN5bmMgaGFuZGxlRmlsZUF0dGFjaG1lbnRzKGUsdCxhKXt0Lm1ldGFkYXRhfHwodC5tZXRhZGF0YT17fSksdC5tZXRhZGF0YS5maWxlc3x8KHQubWV0YWRhdGEuZmlsZXM9W10pO2ZvcihsZXQgciBvZiBBcnJheS5mcm9tKGUpKXRyeXtsZXQgbj1hd2FpdCB0aGlzLmZpbGVUb0RhdGFVcmwociksbz17aWQ6dGhpcy5nZW5lcmF0ZUlkKCksbmFtZTpyLm5hbWUsc2l6ZTpyLnNpemUsdHlwZTpyLnR5cGUsZGF0YTpufTt0Lm1ldGFkYXRhLmZpbGVzLnB1c2gobyl9Y2F0Y2gobil7Y29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGF0dGFjaCBmaWxlOiIsci5uYW1lLG4pfXQuY29udGVudD1gJHt0Lm1ldGFkYXRhLmZpbGVzLmxlbmd0aH0gZmlsZSR7dC5tZXRhZGF0YS5maWxlcy5sZW5ndGghPT0xPyJzIjoiIn0gYXR0YWNoZWRgLGEub25SZXF1ZXN0VXBkYXRlPy4oKX1yZW1vdmVGaWxlKGUsdCxhKXt0Lm1ldGFkYXRhPy5maWxlcyYmKHQubWV0YWRhdGEuZmlsZXM9dC5tZXRhZGF0YS5maWxlcy5maWx0ZXIocj0+ci5pZCE9PWUpLHQuY29udGVudD10Lm1ldGFkYXRhLmZpbGVzLmxlbmd0aD4wP2Ake3QubWV0YWRhdGEuZmlsZXMubGVuZ3RofSBmaWxlJHt0Lm1ldGFkYXRhLmZpbGVzLmxlbmd0aCE9PTE/InMiOiIifSBhdHRhY2hlZGA6IiIsYS5vblJlcXVlc3RVcGRhdGU/LigpKX1maWxlVG9EYXRhVXJsKGUpe3JldHVybiBuZXcgUHJvbWlzZSgodCxhKT0+e2xldCByPW5ldyBGaWxlUmVhZGVyO3Iub25sb2FkPW49PntsZXQgbz1uLnRhcmdldD8ucmVzdWx0O3R5cGVvZiBvPT0ic3RyaW5nIj90KG8pOmEobmV3IEVycm9yKCJGYWlsZWQgdG8gcmVhZCBmaWxlIikpfSxyLm9uZXJyb3I9YSxyLnJlYWRBc0RhdGFVUkwoZSl9KX1nZXRGaWxlSWNvbihlKXtyZXR1cm4gZS5zdGFydHNXaXRoKCJpbWFnZS8iKT8iXHV7MUY1QkN9XHVGRTBGIjplLnN0YXJ0c1dpdGgoInZpZGVvLyIpPyJcdXsxRjNBNX0iOmUuc3RhcnRzV2l0aCgiYXVkaW8vIik/Ilx1ezFGM0I1fSI6ZS5pbmNsdWRlcygicGRmIik/Ilx1ezFGNEM0fSI6ZS5pbmNsdWRlcygiemlwIil8fGUuaW5jbHVkZXMoInJhciIpfHxlLmluY2x1ZGVzKCJ0YXIiKT8iXHV7MUY1QzR9XHVGRTBGIjplLmluY2x1ZGVzKCJzaGVldCIpPyJcdXsxRjRDQX0iOmUuaW5jbHVkZXMoImRvY3VtZW50Iil8fGUuaW5jbHVkZXMoIm1zd29yZCIpPyJcdXsxRjRERH0iOmUuaW5jbHVkZXMoInByZXNlbnRhdGlvbiIpPyJcdXsxRjRDQn0iOmUuaW5jbHVkZXMoInRleHQiKT8iXHV7MUY0QzN9IjoiXHV7MUY0QzF9In1mb3JtYXRGaWxlU2l6ZShlKXtpZihlPT09MClyZXR1cm4iMCBCeXRlcyI7bGV0IHQ9MTAyNCxhPVsiQnl0ZXMiLCJLQiIsIk1CIiwiR0IiXSxyPU1hdGguZmxvb3IoTWF0aC5sb2coZSkvTWF0aC5sb2codCkpO3JldHVybiBwYXJzZUZsb2F0KChlL01hdGgucG93KHQscikpLnRvRml4ZWQoMikpKyIgIithW3JdfWdlbmVyYXRlSWQoKXtyZXR1cm5gZmlsZS0ke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsOSl9YH1lc2NhcGVIdG1sKGUpe2xldCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0LnRleHRDb250ZW50PWUsdC5pbm5lckhUTUx9Z2V0Q29udGVudChlKXtyZXR1cm4gdGhpcy5nZXRCbG9ja0Zyb21FbGVtZW50KGUpPy5jb250ZW50fHwiIn1zZXRDb250ZW50KGUsdCl7bGV0IGE9dGhpcy5nZXRCbG9ja0Zyb21FbGVtZW50KGUpO2EmJihhLmNvbnRlbnQ9dCl9Z2V0QmxvY2tGcm9tRWxlbWVudChlKXtsZXQgYT1lLnF1ZXJ5U2VsZWN0b3IoIi5hdHRhY2htZW50LWJsb2NrLWNvbnRhaW5lciIpPy5nZXRBdHRyaWJ1dGUoImRhdGEtYmxvY2staWQiKTtyZXR1cm4gYT97aWQ6YSx0eXBlOiJhdHRhY2htZW50Iixjb250ZW50OiIiLG1ldGFkYXRhOnt9fTpudWxsfWdldEN1cnNvclBvc2l0aW9uKGUpe3JldHVybiBudWxsfXNldEN1cnNvclRvU3RhcnQoZSl7dGhpcy5mb2N1cyhlKX1zZXRDdXJzb3JUb0VuZChlKXt0aGlzLmZvY3VzKGUpfWZvY3VzKGUpe2UucXVlcnlTZWxlY3RvcigiLmF0dGFjaG1lbnQtYmxvY2stY29udGFpbmVyIik/LmZvY3VzKCl9Zm9jdXNXaXRoQ3Vyc29yKGUsdD0iZW5kIil7dGhpcy5mb2N1cyhlKX1nZXRTcGxpdENvbnRlbnQoZSl7cmV0dXJuIG51bGx9Z2V0U3R5bGVzKCl7cmV0dXJuYAogICAgICAvKiBBdHRhY2htZW50IEJsb2NrIENvbnRhaW5lciAqLwogICAgICAuYXR0YWNobWVudC1ibG9jay1jb250YWluZXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBtYXJnaW46IDEycHggMDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMzNzQxNTEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMxMTE4MjciKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5hdHRhY2htZW50LWJsb2NrLWNvbnRhaW5lci5zZWxlY3RlZCB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiIzljYTNhZiIsIiM2YjcyODAiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5hdHRhY2htZW50LWJsb2NrLWNvbnRhaW5lci5kcmFnLW92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjlmYWZiIiwiIzFmMjkzNyIpfTsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjNjM2NmYxIiwiIzgxOGNmOCIpfTsKICAgICAgfQogICAgICAKICAgICAgLyogSGVhZGVyICovCiAgICAgIC5hdHRhY2htZW50LWhlYWRlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIHBhZGRpbmc6IDEycHggMTZweDsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMzc0MTUxIil9OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjlmYWZiIiwiIzBhMGEwYSIpfTsKICAgICAgfQogICAgICAKICAgICAgLmF0dGFjaG1lbnQtaWNvbiB7CiAgICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICAgIG9wYWNpdHk6IDAuODsKICAgICAgfQogICAgICAKICAgICAgLmF0dGFjaG1lbnQtdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzM3NDE1MSIsIiNlNWU3ZWIiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC8qIEZpbGUgTGlzdCAqLwogICAgICAuYXR0YWNobWVudC1saXN0IHsKICAgICAgICBwYWRkaW5nOiA4cHg7CiAgICAgICAgbWluLWhlaWdodDogODBweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiA0cHg7CiAgICAgIH0KICAgICAgCiAgICAgIC8qIFBsYWNlaG9sZGVyICovCiAgICAgIC5hdHRhY2htZW50LXBsYWNlaG9sZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgfQogICAgICAKICAgICAgLmF0dGFjaG1lbnQtcGxhY2Vob2xkZXI6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjlmYWZiIiwiIzFmMjkzNyIpfTsKICAgICAgfQogICAgICAKICAgICAgLnBsYWNlaG9sZGVyLXRleHQgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM2YjcyODAiLCIjOWNhM2FmIil9OwogICAgICAgIG1hcmdpbi1ib3R0b206IDRweDsKICAgICAgfQogICAgICAKICAgICAgLnBsYWNlaG9sZGVyLWhpbnQgewogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM5Y2EzYWYiLCIjNmI3MjgwIil9OwogICAgICB9CiAgICAgIAogICAgICAvKiBGaWxlIEl0ZW1zICovCiAgICAgIC5hdHRhY2htZW50LWl0ZW0gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmOWZhZmIiLCIjMWYyOTM3Iil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzM3NDE1MSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgIH0KICAgICAgCiAgICAgIC5hdHRhY2htZW50LWl0ZW06aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjNmNGY2IiwiIzM3NDE1MSIpfTsKICAgICAgfQogICAgICAKICAgICAgLmZpbGUtaWNvbiB7CiAgICAgICAgZm9udC1zaXplOiAyMHB4OwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CiAgICAgIAogICAgICAuZmlsZS1pbmZvIHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG1pbi13aWR0aDogMDsKICAgICAgfQogICAgICAKICAgICAgLmZpbGUtbmFtZSB7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTExODI3IiwiI2Y5ZmFmYiIpfTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgIH0KICAgICAgCiAgICAgIC5maWxlLXNpemUgewogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM2YjcyODAiLCIjOWNhM2FmIil9OwogICAgICAgIG1hcmdpbi10b3A6IDJweDsKICAgICAgfQogICAgICAKICAgICAgLnJlbW92ZS1maWxlIHsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICB3aWR0aDogMjRweDsKICAgICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM2YjcyODAiLCIjOWNhM2FmIil9OwogICAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgICBsaW5lLWhlaWdodDogMTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgfQogICAgICAKICAgICAgLnJlbW92ZS1maWxlOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZlZTJlMiIsIiM5OTFiMWIiKX07CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiI2ZjYTVhNSIsIiNkYzI2MjYiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZGMyNjI2IiwiI2ZjYTVhNSIpfTsKICAgICAgfQogICAgICAKICAgICAgLyogQWRkIE1vcmUgRmlsZXMgQnV0dG9uICovCiAgICAgIC5hZGQtbW9yZS1maWxlcyB7CiAgICAgICAgbWFyZ2luOiA4cHg7CiAgICAgICAgcGFkZGluZzogNnB4IDEycHg7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMzc0MTUxIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMzc0MTUxIiwiI2U1ZTdlYiIpfTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgc2Fucy1zZXJpZjsKICAgICAgfQogICAgICAKICAgICAgLmFkZC1tb3JlLWZpbGVzOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y5ZmFmYiIsIiMxZjI5MzciKX07CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiI2QxZDVkYiIsIiM0YjU1NjMiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC8qIEhpZGRlbiBmaWxlIGlucHV0ICovCiAgICAgIC5hdHRhY2htZW50LWZpbGUtaW5wdXQgewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgfQogICAgYH19fSk7dmFyIEJRLHV2YT1nKCgpPT57bmMoKTtwZSgpO0JRPWNsYXNzIGV4dGVuZHMgZ2l7c3RhdGlje2kodGhpcywiRGl2aWRlckJsb2NrSGFuZGxlciIpfXR5cGU9ImRpdmlkZXIiO3JlbmRlcihlLHQpe3JldHVybmAKICAgICAgPGRpdiBjbGFzcz0iYmxvY2sgZGl2aWRlciR7dD8iIHNlbGVjdGVkIjoiIn0iIGRhdGEtYmxvY2staWQ9IiR7ZS5pZH0iIGRhdGEtYmxvY2stdHlwZT0iJHtlLnR5cGV9IiB0YWJpbmRleD0iMCI+CiAgICAgICAgPGhyPgogICAgICA8L2Rpdj4KICAgIGB9c2V0dXAoZSx0LGEpe2xldCByPWUucXVlcnlTZWxlY3RvcigiLmJsb2NrLmRpdmlkZXIiKTtyJiYoci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsbj0+e24uc3RvcFByb3BhZ2F0aW9uKCksci5mb2N1cygpLGEub25Gb2N1cz8uKCl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwoKT0+e2Eub25Gb2N1cz8uKCl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCgpPT57YS5vbkJsdXI/LigpfSksci5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixuPT57KG4ua2V5PT09IkJhY2tzcGFjZSJ8fG4ua2V5PT09IkRlbGV0ZSIpJiZuLnByZXZlbnREZWZhdWx0KCksYS5vbktleURvd24/LihuKX0pKX1nZXRTdHlsZXMoKXtyZXR1cm5gCiAgICAgIC5ibG9jay5kaXZpZGVyIHsKICAgICAgICBwYWRkaW5nOiA4cHggMDsKICAgICAgICBtYXJnaW46IDE2cHggMDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgfQoKICAgICAgLmJsb2NrLmRpdmlkZXI6Zm9jdXMgewogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5ibG9jay5kaXZpZGVyLnNlbGVjdGVkIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLCAxMDIsIDIwNCwgMC4wNSkiLCJyZ2JhKDc3LCAxNDgsIDI1NSwgMC4wOCkiKX07CiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMnB4ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDEwMiwgMjA0LCAwLjIpIiwicmdiYSg3NywgMTQ4LCAyNTUsIDAuMikiKX07CiAgICAgIH0KCiAgICAgIC5ibG9jay5kaXZpZGVyIGhyIHsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTBlMGUwIiwiIzMzMyIpfTsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KICAgIGB9fX0pO3ZhciBIUSxwdmE9ZygoKT0+e25jKCk7cGUoKTtIUT1jbGFzcyBleHRlbmRzIGdpe3N0YXRpY3tpKHRoaXMsIk1hcmtkb3duQmxvY2tIYW5kbGVyIil9dHlwZT0ibWFya2Rvd24iO3JlbmRlcihlLHQpe2xldCBhPWUubWV0YWRhdGE/LmlzRWRpdE1vZGU/PyEwLHI9ZS5jb250ZW50fHwiIjtyZXR1cm5gCiAgICAgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWJsb2NrLWNvbnRhaW5lciR7dD8iIHNlbGVjdGVkIjoiIn0iIAogICAgICAgICAgIGRhdGEtYmxvY2staWQ9IiR7ZS5pZH0iCiAgICAgICAgICAgZGF0YS1lZGl0LW1vZGU9IiR7YX0iPgogICAgICAgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWhlYWRlciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJtYXJrZG93bi1pY29uIj5NXHUyMTkzPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJtYXJrZG93bi10aXRsZSI+TWFya2Rvd248L2Rpdj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9Im1hcmtkb3duLXRvZ2dsZS1tb2RlIiB0aXRsZT0iJHthPyJQcmV2aWV3IjoiRWRpdCJ9Ij4KICAgICAgICAgICAgJHthPyJcdXsxRjQ0MX1cdUZFMEYiOiJcdTI3MEZcdUZFMEYifQogICAgICAgICAgPC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibWFya2Rvd24tY29udGVudCI+CiAgICAgICAgICAke2E/dGhpcy5yZW5kZXJFZGl0b3Iocik6dGhpcy5yZW5kZXJQcmV2aWV3KHIpfQogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyRWRpdG9yKGUpe3JldHVybmAKICAgICAgPHRleHRhcmVhIGNsYXNzPSJtYXJrZG93bi1lZGl0b3IiIAogICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9IkVudGVyIG1hcmtkb3duIGNvbnRlbnQuLi4iCiAgICAgICAgICAgICAgICBzcGVsbGNoZWNrPSJmYWxzZSI+JHt0aGlzLmVzY2FwZUh0bWwoZSl9PC90ZXh0YXJlYT4KICAgIGB9cmVuZGVyUHJldmlldyhlKXtyZXR1cm5gCiAgICAgIDxkaXYgY2xhc3M9Im1hcmtkb3duLXByZXZpZXciPgogICAgICAgICR7dGhpcy5wYXJzZU1hcmtkb3duKGUpfHwnPGRpdiBjbGFzcz0icHJldmlldy1lbXB0eSI+Tm8gY29udGVudCB0byBwcmV2aWV3PC9kaXY+J30KICAgICAgPC9kaXY+CiAgICBgfXNldHVwKGUsdCxhKXtsZXQgcj1lLnF1ZXJ5U2VsZWN0b3IoIi5tYXJrZG93bi1ibG9jay1jb250YWluZXIiKSxuPWUucXVlcnlTZWxlY3RvcigiLm1hcmtkb3duLXRvZ2dsZS1tb2RlIik7aWYoIXJ8fCFuKXtjb25zb2xlLmVycm9yKCJNYXJrZG93bkJsb2NrSGFuZGxlcjogQ291bGQgbm90IGZpbmQgcmVxdWlyZWQgZWxlbWVudHMiKTtyZXR1cm59dC5tZXRhZGF0YXx8KHQubWV0YWRhdGE9e30pLHQubWV0YWRhdGEuaXNFZGl0TW9kZT09PXZvaWQgMCYmKHQubWV0YWRhdGEuaXNFZGl0TW9kZT0hMCksbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsbz0+e2lmKG8ucHJldmVudERlZmF1bHQoKSxvLnN0b3BQcm9wYWdhdGlvbigpLHQubWV0YWRhdGEuaXNFZGl0TW9kZSl7bGV0IGw9ci5xdWVyeVNlbGVjdG9yKCIubWFya2Rvd24tZWRpdG9yIik7bCYmKHQuY29udGVudD1sLnZhbHVlKX10Lm1ldGFkYXRhLmlzRWRpdE1vZGU9IXQubWV0YWRhdGEuaXNFZGl0TW9kZSxhLm9uUmVxdWVzdFVwZGF0ZT8uKCl9KSx0Lm1ldGFkYXRhLmlzRWRpdE1vZGU/dGhpcy5zZXR1cEVkaXRvcihlLHQsYSk6dGhpcy5zZXR1cFByZXZpZXcoZSx0LGEpfXNldHVwRWRpdG9yKGUsdCxhKXtsZXQgcj1lLnF1ZXJ5U2VsZWN0b3IoIi5tYXJrZG93bi1lZGl0b3IiKTtyJiYoci5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsKCk9PmEub25Gb2N1cygpKSxyLmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCgpPT5hLm9uQmx1cigpKSxyLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwoKT0+e3QuY29udGVudD1yLnZhbHVlfSksci5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixuPT57aWYobi5rZXk9PT0iVGFiIil7bi5wcmV2ZW50RGVmYXVsdCgpO2xldCBvPXIuc2VsZWN0aW9uU3RhcnQsbD1yLnNlbGVjdGlvbkVuZCxwPXIudmFsdWU7aWYobi5zaGlmdEtleSl7bGV0IGM9cC5zdWJzdHJpbmcoMCxvKS5sYXN0SW5kZXhPZihgCmApKzEsYj1wLnN1YnN0cmluZyhjLG8pO2Iuc3RhcnRzV2l0aCgiICAiKSYmKHIudmFsdWU9cC5zdWJzdHJpbmcoMCxjKStiLnN1YnN0cmluZygyKStwLnN1YnN0cmluZyhvKSxyLnNlbGVjdGlvblN0YXJ0PXIuc2VsZWN0aW9uRW5kPW8tMil9ZWxzZSByLnZhbHVlPXAuc3Vic3RyaW5nKDAsbykrIiAgIitwLnN1YnN0cmluZyhsKSxyLnNlbGVjdGlvblN0YXJ0PXIuc2VsZWN0aW9uRW5kPW8rMjt0LmNvbnRlbnQ9ci52YWx1ZTtyZXR1cm59aWYoKG4uY3RybEtleXx8bi5tZXRhS2V5KSYmbi5rZXk9PT0iYiIpe24ucHJldmVudERlZmF1bHQoKSx0aGlzLndyYXBTZWxlY3Rpb24ociwiKioiLCIqKiIpLHQuY29udGVudD1yLnZhbHVlO3JldHVybn1pZigobi5jdHJsS2V5fHxuLm1ldGFLZXkpJiZuLmtleT09PSJpIil7bi5wcmV2ZW50RGVmYXVsdCgpLHRoaXMud3JhcFNlbGVjdGlvbihyLCJfIiwiXyIpLHQuY29udGVudD1yLnZhbHVlO3JldHVybn1pZigobi5jdHJsS2V5fHxuLm1ldGFLZXkpJiZuLmtleT09PSJrIil7bi5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuaW5zZXJ0TGluayhyKSx0LmNvbnRlbnQ9ci52YWx1ZTtyZXR1cm59YS5vbktleURvd24obil9KSx0aGlzLmF1dG9SZXNpemUociksci5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsKCk9PnRoaXMuYXV0b1Jlc2l6ZShyKSkpfXNldHVwUHJldmlldyhlLHQsYSl7bGV0IHI9ZS5xdWVyeVNlbGVjdG9yKCIubWFya2Rvd24tYmxvY2stY29udGFpbmVyIiksbj1lLnF1ZXJ5U2VsZWN0b3IoIi5tYXJrZG93bi1wcmV2aWV3Iik7IXJ8fCFufHwobi5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiMCIpLG4uYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCgpPT5hLm9uRm9jdXMoKSksbi5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwoKT0+YS5vbkJsdXIoKSksbi5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixvPT57aWYoby5rZXk9PT0iRW50ZXIiJiYhby5zaGlmdEtleSl7by5wcmV2ZW50RGVmYXVsdCgpLHQubWV0YWRhdGEuaXNFZGl0TW9kZT0hMCxhLm9uUmVxdWVzdFVwZGF0ZT8uKCk7cmV0dXJufWEub25LZXlEb3duKG8pfSkpfXdyYXBTZWxlY3Rpb24oZSx0LGEpe2xldCByPWUuc2VsZWN0aW9uU3RhcnQsbj1lLnNlbGVjdGlvbkVuZCxvPWUudmFsdWUuc3Vic3RyaW5nKHIsbiksbD10KyhvfHwidGV4dCIpK2E7ZS52YWx1ZT1lLnZhbHVlLnN1YnN0cmluZygwLHIpK2wrZS52YWx1ZS5zdWJzdHJpbmcobiksbz8oZS5zZWxlY3Rpb25TdGFydD1yLGUuc2VsZWN0aW9uRW5kPXIrbC5sZW5ndGgpOihlLnNlbGVjdGlvblN0YXJ0PXIrdC5sZW5ndGgsZS5zZWxlY3Rpb25FbmQ9cit0Lmxlbmd0aCs0KSxlLmZvY3VzKCl9aW5zZXJ0TGluayhlKXtsZXQgdD1lLnNlbGVjdGlvblN0YXJ0LGE9ZS5zZWxlY3Rpb25FbmQsbj1lLnZhbHVlLnN1YnN0cmluZyh0LGEpfHwibGluayB0ZXh0IixvPWBbJHtufV0odXJsKWA7ZS52YWx1ZT1lLnZhbHVlLnN1YnN0cmluZygwLHQpK28rZS52YWx1ZS5zdWJzdHJpbmcoYSksZS5zZWxlY3Rpb25TdGFydD10K24ubGVuZ3RoKzMsZS5zZWxlY3Rpb25FbmQ9dCtuLmxlbmd0aCs2LGUuZm9jdXMoKX1hdXRvUmVzaXplKGUpe2Uuc3R5bGUuaGVpZ2h0PSJhdXRvIixlLnN0eWxlLmhlaWdodD1lLnNjcm9sbEhlaWdodCsicHgifXBhcnNlTWFya2Rvd24oZSl7bGV0IHQ9dGhpcy5lc2NhcGVIdG1sKGUpO3JldHVybiB0PXQucmVwbGFjZSgvXiMjIyAoLispJC9nbSwiPGgzPiQxPC9oMz4iKSx0PXQucmVwbGFjZSgvXiMjICguKykkL2dtLCI8aDI+JDE8L2gyPiIpLHQ9dC5yZXBsYWNlKC9eIyAoLispJC9nbSwiPGgxPiQxPC9oMT4iKSx0PXQucmVwbGFjZSgvXCpcKiguKz8pXCpcKi9nLCI8c3Ryb25nPiQxPC9zdHJvbmc+IiksdD10LnJlcGxhY2UoL19fKC4rPylfXy9nLCI8c3Ryb25nPiQxPC9zdHJvbmc+IiksdD10LnJlcGxhY2UoL1wqKC4rPylcKi9nLCI8ZW0+JDE8L2VtPiIpLHQ9dC5yZXBsYWNlKC9fKC4rPylfL2csIjxlbT4kMTwvZW0+IiksdD10LnJlcGxhY2UoL2BgYChbXHNcU10qPylgYGAvZywiPHByZT48Y29kZT4kMTwvY29kZT48L3ByZT4iKSx0PXQucmVwbGFjZSgvYCguKz8pYC9nLCI8Y29kZT4kMTwvY29kZT4iKSx0PXQucmVwbGFjZSgvXFsoW15cXV0rKVxdXCgoW14pXSspXCkvZywnPGEgaHJlZj0iJDIiPiQxPC9hPicpLHQ9dC5yZXBsYWNlKC9eXCogKC4rKSQvZ20sIjxsaT4kMTwvbGk+IiksdD10LnJlcGxhY2UoL14tICguKykkL2dtLCI8bGk+JDE8L2xpPiIpLHQ9dC5yZXBsYWNlKC9eXGQrXC4gKC4rKSQvZ20sIjxsaT4kMTwvbGk+IiksdD10LnJlcGxhY2UoLyg8bGk+Lio8XC9saT5cbj8pKy9nLGE9PiI8dWw+IithKyI8L3VsPiIpLHQ9dC5yZXBsYWNlKC9cblxuL2csIjwvcD48cD4iKSx0PSI8cD4iK3QrIjwvcD4iLHQ9dC5yZXBsYWNlKC88cD48XC9wPi9nLCIiKSx0PXQucmVwbGFjZSgvPHA+KDxoWzEtM10+KS9nLCIkMSIpLHQ9dC5yZXBsYWNlKC8oPFwvaFsxLTNdPik8XC9wPi9nLCIkMSIpLHQ9dC5yZXBsYWNlKC88cD4oPHVsPikvZywiJDEiKSx0PXQucmVwbGFjZSgvKDxcL3VsPik8XC9wPi9nLCIkMSIpLHQ9dC5yZXBsYWNlKC88cD4oPHByZT4pL2csIiQxIiksdD10LnJlcGxhY2UoLyg8XC9wcmU+KTxcL3A+L2csIiQxIiksdH1lc2NhcGVIdG1sKGUpe2xldCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0LnRleHRDb250ZW50PWUsdC5pbm5lckhUTUx9Z2V0Q29udGVudChlKXtsZXQgdD1lLnF1ZXJ5U2VsZWN0b3IoIi5tYXJrZG93bi1lZGl0b3IiKTtpZih0KXJldHVybiB0LnZhbHVlO2xldCByPWUucXVlcnlTZWxlY3RvcigiLm1hcmtkb3duLWJsb2NrLWNvbnRhaW5lciIpPy5nZXRBdHRyaWJ1dGUoImRhdGEtYmxvY2staWQiKTtyZXR1cm4iIn1zZXRDb250ZW50KGUsdCl7bGV0IGE9ZS5xdWVyeVNlbGVjdG9yKCIubWFya2Rvd24tZWRpdG9yIik7YSYmKGEudmFsdWU9dCx0aGlzLmF1dG9SZXNpemUoYSkpfWdldEN1cnNvclBvc2l0aW9uKGUpe2xldCB0PWUucXVlcnlTZWxlY3RvcigiLm1hcmtkb3duLWVkaXRvciIpO3JldHVybiB0P3Quc2VsZWN0aW9uU3RhcnQ6bnVsbH1zZXRDdXJzb3JUb1N0YXJ0KGUpe2xldCB0PWUucXVlcnlTZWxlY3RvcigiLm1hcmtkb3duLWVkaXRvciIpO3Q/KHQuc2VsZWN0aW9uU3RhcnQ9dC5zZWxlY3Rpb25FbmQ9MCx0LmZvY3VzKCkpOnRoaXMuZm9jdXMoZSl9c2V0Q3Vyc29yVG9FbmQoZSl7bGV0IHQ9ZS5xdWVyeVNlbGVjdG9yKCIubWFya2Rvd24tZWRpdG9yIik7aWYodCl7bGV0IGE9dC52YWx1ZS5sZW5ndGg7dC5zZWxlY3Rpb25TdGFydD10LnNlbGVjdGlvbkVuZD1hLHQuZm9jdXMoKX1lbHNlIHRoaXMuZm9jdXMoZSl9Zm9jdXMoZSl7bGV0IHQ9ZS5xdWVyeVNlbGVjdG9yKCIubWFya2Rvd24tZWRpdG9yIik7dD90LmZvY3VzKCk6ZS5xdWVyeVNlbGVjdG9yKCIubWFya2Rvd24tcHJldmlldyIpPy5mb2N1cygpfWZvY3VzV2l0aEN1cnNvcihlLHQ9ImVuZCIpe2xldCBhPWUucXVlcnlTZWxlY3RvcigiLm1hcmtkb3duLWVkaXRvciIpO2E/dD09PSJzdGFydCI/dGhpcy5zZXRDdXJzb3JUb1N0YXJ0KGUpOnQ9PT0iZW5kIj90aGlzLnNldEN1cnNvclRvRW5kKGUpOnR5cGVvZiB0PT0ibnVtYmVyIiYmKGEuc2VsZWN0aW9uU3RhcnQ9YS5zZWxlY3Rpb25FbmQ9dCxhLmZvY3VzKCkpOnRoaXMuZm9jdXMoZSl9Z2V0U3BsaXRDb250ZW50KGUpe2xldCB0PWUucXVlcnlTZWxlY3RvcigiLm1hcmtkb3duLWVkaXRvciIpO2lmKCF0KXJldHVybiBudWxsO2xldCBhPXQuc2VsZWN0aW9uU3RhcnQ7cmV0dXJue2JlZm9yZTp0LnZhbHVlLnN1YnN0cmluZygwLGEpLGFmdGVyOnQudmFsdWUuc3Vic3RyaW5nKGEpfX1nZXRTdHlsZXMoKXtyZXR1cm5gCiAgICAgIC8qIE1hcmtkb3duIEJsb2NrIENvbnRhaW5lciAqLwogICAgICAubWFya2Rvd24tYmxvY2stY29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgbWFyZ2luOiAxMnB4IDA7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMzc0MTUxIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzExMTgyNyIpfTsKICAgICAgfQogICAgICAKICAgICAgLm1hcmtkb3duLWJsb2NrLWNvbnRhaW5lci5zZWxlY3RlZCB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiIzljYTNhZiIsIiM2YjcyODAiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC8qIEhlYWRlciAqLwogICAgICAubWFya2Rvd24taGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzM3NDE1MSIpfTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y5ZmFmYiIsIiMwYTBhMGEiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5tYXJrZG93bi1pY29uIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBvcGFjaXR5OiAwLjg7CiAgICAgIH0KICAgICAgCiAgICAgIC5tYXJrZG93bi10aXRsZSB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzNzQxNTEiLCIjZTVlN2ViIil9OwogICAgICB9CiAgICAgIAogICAgICAubWFya2Rvd24tdG9nZ2xlLW1vZGUgewogICAgICAgIHBhZGRpbmc6IDRweCA4cHg7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMzc0MTUxIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICB9CiAgICAgIAogICAgICAubWFya2Rvd24tdG9nZ2xlLW1vZGU6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjNmNGY2IiwiIzFmMjkzNyIpfTsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjZDFkNWRiIiwiIzRiNTU2MyIpfTsKICAgICAgfQogICAgICAKICAgICAgLyogQ29udGVudCAqLwogICAgICAubWFya2Rvd24tY29udGVudCB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG1pbi1oZWlnaHQ6IDEyMHB4OwogICAgICB9CiAgICAgIAogICAgICAvKiBFZGl0b3IgKi8KICAgICAgLm1hcmtkb3duLWVkaXRvciB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWluLWhlaWdodDogMTIwcHg7CiAgICAgICAgcGFkZGluZzogMTJweDsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICByZXNpemU6IG5vbmU7CiAgICAgICAgZm9udC1mYW1pbHk6ICdNb25hY28nLCAnQ29uc29sYXMnLCAnQ291cmllciBOZXcnLCBtb25vc3BhY2U7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMWYyOTM3IiwiI2YzZjRmNiIpfTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CiAgICAgIAogICAgICAubWFya2Rvd24tZWRpdG9yOjpwbGFjZWhvbGRlciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjOWNhM2FmIiwiIzZiNzI4MCIpfTsKICAgICAgfQogICAgICAKICAgICAgLyogUHJldmlldyAqLwogICAgICAubWFya2Rvd24tcHJldmlldyB7CiAgICAgICAgcGFkZGluZzogMTJweDsKICAgICAgICBtaW4taGVpZ2h0OiA5NnB4OwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMWYyOTM3IiwiI2YzZjRmNiIpfTsKICAgICAgfQogICAgICAKICAgICAgLnByZXZpZXctZW1wdHkgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzljYTNhZiIsIiM2YjcyODAiKX07CiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgICB9CiAgICAgIAogICAgICAvKiBNYXJrZG93biBwcmV2aWV3IHN0eWxlcyAqLwogICAgICAubWFya2Rvd24tcHJldmlldyBoMSB7CiAgICAgICAgZm9udC1zaXplOiAyNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgbWFyZ2luOiAxNnB4IDAgOHB4IDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTExODI3IiwiI2Y5ZmFmYiIpfTsKICAgICAgfQogICAgICAKICAgICAgLm1hcmtkb3duLXByZXZpZXcgaDIgewogICAgICAgIGZvbnQtc2l6ZTogMjBweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIG1hcmdpbjogMTRweCAwIDZweCAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzExMTgyNyIsIiNmOWZhZmIiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5tYXJrZG93bi1wcmV2aWV3IGgzIHsKICAgICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBtYXJnaW46IDEycHggMCA0cHggMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxMTE4MjciLCIjZjlmYWZiIil9OwogICAgICB9CiAgICAgIAogICAgICAubWFya2Rvd24tcHJldmlldyBwIHsKICAgICAgICBtYXJnaW46IDhweCAwOwogICAgICB9CiAgICAgIAogICAgICAubWFya2Rvd24tcHJldmlldyB1bCwKICAgICAgLm1hcmtkb3duLXByZXZpZXcgb2wgewogICAgICAgIG1hcmdpbjogOHB4IDA7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAyNHB4OwogICAgICB9CiAgICAgIAogICAgICAubWFya2Rvd24tcHJldmlldyBsaSB7CiAgICAgICAgbWFyZ2luOiA0cHggMDsKICAgICAgfQogICAgICAKICAgICAgLm1hcmtkb3duLXByZXZpZXcgY29kZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmM2Y0ZjYiLCIjMWYyOTM3Iil9OwogICAgICAgIHBhZGRpbmc6IDJweCA0cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgIGZvbnQtZmFtaWx5OiAnTW9uYWNvJywgJ0NvbnNvbGFzJywgJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlOwogICAgICAgIGZvbnQtc2l6ZTogMC45ZW07CiAgICAgIH0KICAgICAgCiAgICAgIC5tYXJrZG93bi1wcmV2aWV3IHByZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmM2Y0ZjYiLCIjMWYyOTM3Iil9OwogICAgICAgIHBhZGRpbmc6IDEycHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICAgICAgbWFyZ2luOiA4cHggMDsKICAgICAgfQogICAgICAKICAgICAgLm1hcmtkb3duLXByZXZpZXcgcHJlIGNvZGUgewogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KICAgICAgCiAgICAgIC5tYXJrZG93bi1wcmV2aWV3IHN0cm9uZyB7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxMTE4MjciLCIjZjlmYWZiIil9OwogICAgICB9CiAgICAgIAogICAgICAubWFya2Rvd24tcHJldmlldyBlbSB7CiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgICB9CiAgICAgIAogICAgICAubWFya2Rvd24tcHJldmlldyBhIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzYjgyZjYiLCIjNjBhNWZhIil9OwogICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgfQogICAgICAKICAgICAgLm1hcmtkb3duLXByZXZpZXcgYTpob3ZlciB7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICAgIH0KICAgICAgCiAgICAgIC5tYXJrZG93bi1wcmV2aWV3IGJsb2NrcXVvdGUgewogICAgICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMzc0MTUxIil9OwogICAgICAgIHBhZGRpbmctbGVmdDogMTJweDsKICAgICAgICBtYXJnaW46IDhweCAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzZiNzI4MCIsIiM5Y2EzYWYiKX07CiAgICAgIH0KICAgIGB9fX0pO3ZhciBxUSxodmE9ZygoKT0+e25jKCk7cGUoKTtxUT1jbGFzcyBleHRlbmRzIGdpe3N0YXRpY3tpKHRoaXMsIkh0bWxCbG9ja0hhbmRsZXIiKX10eXBlPSJodG1sIjtyZW5kZXIoZSx0KXtsZXQgYT1lLm1ldGFkYXRhPy5pc0VkaXRNb2RlPz8hMCxyPWUuY29udGVudHx8IiI7cmV0dXJuYAogICAgICA8ZGl2IGNsYXNzPSJodG1sLWJsb2NrLWNvbnRhaW5lciR7dD8iIHNlbGVjdGVkIjoiIn0iIAogICAgICAgICAgIGRhdGEtYmxvY2staWQ9IiR7ZS5pZH0iCiAgICAgICAgICAgZGF0YS1lZGl0LW1vZGU9IiR7YX0iPgogICAgICAgIDxkaXYgY2xhc3M9Imh0bWwtaGVhZGVyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Imh0bWwtaWNvbiI+Jmx0Oy8mZ3Q7PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJodG1sLXRpdGxlIj5IVE1MPC9kaXY+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJodG1sLXRvZ2dsZS1tb2RlIiB0aXRsZT0iJHthPyJQcmV2aWV3IjoiRWRpdCJ9Ij4KICAgICAgICAgICAgJHthPyJcdXsxRjQ0MX1cdUZFMEYiOiJcdTI3MEZcdUZFMEYifQogICAgICAgICAgPC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iaHRtbC1jb250ZW50Ij4KICAgICAgICAgICR7YT90aGlzLnJlbmRlckVkaXRvcihyKTp0aGlzLnJlbmRlclByZXZpZXcocil9CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJFZGl0b3IoZSl7cmV0dXJuYAogICAgICA8dGV4dGFyZWEgY2xhc3M9Imh0bWwtZWRpdG9yIiAKICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSJFbnRlciBIVE1MIGNvbnRlbnQuLi4iCiAgICAgICAgICAgICAgICBzcGVsbGNoZWNrPSJmYWxzZSI+JHt0aGlzLmVzY2FwZUh0bWwoZSl9PC90ZXh0YXJlYT4KICAgIGB9cmVuZGVyUHJldmlldyhlKXtyZXR1cm5gCiAgICAgIDxkaXYgY2xhc3M9Imh0bWwtcHJldmlldyI+CiAgICAgICAgJHtlfHwnPGRpdiBjbGFzcz0icHJldmlldy1lbXB0eSI+Tm8gY29udGVudCB0byBwcmV2aWV3PC9kaXY+J30KICAgICAgPC9kaXY+CiAgICBgfXNldHVwKGUsdCxhKXtsZXQgcj1lLnF1ZXJ5U2VsZWN0b3IoIi5odG1sLWJsb2NrLWNvbnRhaW5lciIpLG49ZS5xdWVyeVNlbGVjdG9yKCIuaHRtbC10b2dnbGUtbW9kZSIpO2lmKCFyfHwhbil7Y29uc29sZS5lcnJvcigiSHRtbEJsb2NrSGFuZGxlcjogQ291bGQgbm90IGZpbmQgcmVxdWlyZWQgZWxlbWVudHMiKTtyZXR1cm59dC5tZXRhZGF0YXx8KHQubWV0YWRhdGE9e30pLHQubWV0YWRhdGEuaXNFZGl0TW9kZT09PXZvaWQgMCYmKHQubWV0YWRhdGEuaXNFZGl0TW9kZT0hMCksbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsbz0+e2lmKG8ucHJldmVudERlZmF1bHQoKSxvLnN0b3BQcm9wYWdhdGlvbigpLHQubWV0YWRhdGEuaXNFZGl0TW9kZSl7bGV0IGw9ci5xdWVyeVNlbGVjdG9yKCIuaHRtbC1lZGl0b3IiKTtsJiYodC5jb250ZW50PWwudmFsdWUpfXQubWV0YWRhdGEuaXNFZGl0TW9kZT0hdC5tZXRhZGF0YS5pc0VkaXRNb2RlLGEub25SZXF1ZXN0VXBkYXRlPy4oKX0pLHQubWV0YWRhdGEuaXNFZGl0TW9kZT90aGlzLnNldHVwRWRpdG9yKGUsdCxhKTp0aGlzLnNldHVwUHJldmlldyhlLHQsYSl9c2V0dXBFZGl0b3IoZSx0LGEpe2xldCByPWUucXVlcnlTZWxlY3RvcigiLmh0bWwtZWRpdG9yIik7ciYmKHIuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCgpPT5hLm9uRm9jdXMoKSksci5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwoKT0+YS5vbkJsdXIoKSksci5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsKCk9Pnt0LmNvbnRlbnQ9ci52YWx1ZSx0aGlzLnZhbGlkYXRlSHRtbChyLnZhbHVlKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsbj0+e2lmKG4ua2V5PT09IlRhYiIpe24ucHJldmVudERlZmF1bHQoKTtsZXQgbz1yLnNlbGVjdGlvblN0YXJ0LGw9ci5zZWxlY3Rpb25FbmQscD1yLnZhbHVlO2lmKG4uc2hpZnRLZXkpe2xldCBjPXAuc3Vic3RyaW5nKDAsbykubGFzdEluZGV4T2YoYApgKSsxLGI9cC5zdWJzdHJpbmcoYyxvKTtiLnN0YXJ0c1dpdGgoIiAgIikmJihyLnZhbHVlPXAuc3Vic3RyaW5nKDAsYykrYi5zdWJzdHJpbmcoMikrcC5zdWJzdHJpbmcobyksci5zZWxlY3Rpb25TdGFydD1yLnNlbGVjdGlvbkVuZD1vLTIpfWVsc2Ugci52YWx1ZT1wLnN1YnN0cmluZygwLG8pKyIgICIrcC5zdWJzdHJpbmcobCksci5zZWxlY3Rpb25TdGFydD1yLnNlbGVjdGlvbkVuZD1vKzI7dC5jb250ZW50PXIudmFsdWU7cmV0dXJufWlmKChuLmN0cmxLZXl8fG4ubWV0YUtleSkmJm4ua2V5PT09Ii8iKXtuLnByZXZlbnREZWZhdWx0KCksdGhpcy5hdXRvQ2xvc2VUYWcociksdC5jb250ZW50PXIudmFsdWU7cmV0dXJufWEub25LZXlEb3duKG4pfSksdGhpcy5hdXRvUmVzaXplKHIpLHIuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCgpPT50aGlzLmF1dG9SZXNpemUocikpKX1zZXR1cFByZXZpZXcoZSx0LGEpe2xldCByPWUucXVlcnlTZWxlY3RvcigiLmh0bWwtYmxvY2stY29udGFpbmVyIiksbj1lLnF1ZXJ5U2VsZWN0b3IoIi5odG1sLXByZXZpZXciKTshcnx8IW58fChuLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCIwIiksbi5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsKCk9PmEub25Gb2N1cygpKSxuLmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCgpPT5hLm9uQmx1cigpKSxuLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLG89PntpZihvLmtleT09PSJFbnRlciImJiFvLnNoaWZ0S2V5KXtvLnByZXZlbnREZWZhdWx0KCksdC5tZXRhZGF0YS5pc0VkaXRNb2RlPSEwLGEub25SZXF1ZXN0VXBkYXRlPy4oKTtyZXR1cm59YS5vbktleURvd24obyl9KSx0aGlzLnNhbmRib3hDb250ZW50KG4pKX1hdXRvQ2xvc2VUYWcoZSl7bGV0IHQ9ZS5zZWxlY3Rpb25TdGFydCxhPWUudmFsdWUscj10O2Zvcig7cj4wJiZhW3ItMV0hPT0iPCI7KXItLTtpZihyPjApe2xldCBvPWEuc3Vic3RyaW5nKHIsdCkubWF0Y2goL14oXHcrKS8pO2lmKG8pe2xldCBwPWA8LyR7b1sxXX0+YDtlLnZhbHVlPWEuc3Vic3RyaW5nKDAsdCkrIj4iK3ArYS5zdWJzdHJpbmcodCksZS5zZWxlY3Rpb25TdGFydD1lLnNlbGVjdGlvbkVuZD10KzF9fX1hdXRvUmVzaXplKGUpe2Uuc3R5bGUuaGVpZ2h0PSJhdXRvIixlLnN0eWxlLmhlaWdodD1lLnNjcm9sbEhlaWdodCsicHgifXZhbGlkYXRlSHRtbChlKXtsZXQgdD1bXSxhPS88XC8/KFthLXpBLVpdW2EtekEtWjAtOV0qKVxiW14+XSo+L2cscjtmb3IoOyhyPWEuZXhlYyhlKSkhPT1udWxsOyl7bGV0IG49clswXS5zdGFydHNXaXRoKCI8LyIpLG89clsxXS50b0xvd2VyQ2FzZSgpO2lmKG4pe2lmKHQubGVuZ3RoPT09MHx8dFt0Lmxlbmd0aC0xXSE9PW8pcmV0dXJuIGNvbnNvbGUud2FybihgTWlzbWF0Y2hlZCBjbG9zaW5nIHRhZzogJHtvfWApLCExO3QucG9wKCl9ZWxzZSByWzBdLmVuZHNXaXRoKCIvPiIpfHx0LnB1c2gobyl9cmV0dXJuIHQubGVuZ3RoPjA/KGNvbnNvbGUud2FybihgVW5jbG9zZWQgdGFnczogJHt0LmpvaW4oIiwgIil9YCksITEpOiEwfXNhbmRib3hDb250ZW50KGUpe2UucXVlcnlTZWxlY3RvckFsbCgic2NyaXB0IikuZm9yRWFjaChuPT5uLnJlbW92ZSgpKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIioiKS5mb3JFYWNoKG49PntBcnJheS5mcm9tKG4uYXR0cmlidXRlcykuZm9yRWFjaChvPT57by5uYW1lLnN0YXJ0c1dpdGgoIm9uIikmJm4ucmVtb3ZlQXR0cmlidXRlKG8ubmFtZSl9KX0pLGUucXVlcnlTZWxlY3RvckFsbCgiZm9ybSIpLmZvckVhY2gobj0+e24uYWRkRXZlbnRMaXN0ZW5lcigic3VibWl0IixvPT57by5wcmV2ZW50RGVmYXVsdCgpLG8uc3RvcFByb3BhZ2F0aW9uKCl9KX0pfWVzY2FwZUh0bWwoZSl7bGV0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIHQudGV4dENvbnRlbnQ9ZSx0LmlubmVySFRNTH1nZXRDb250ZW50KGUpe2xldCB0PWUucXVlcnlTZWxlY3RvcigiLmh0bWwtZWRpdG9yIik7aWYodClyZXR1cm4gdC52YWx1ZTtsZXQgcj1lLnF1ZXJ5U2VsZWN0b3IoIi5odG1sLWJsb2NrLWNvbnRhaW5lciIpPy5nZXRBdHRyaWJ1dGUoImRhdGEtYmxvY2staWQiKTtyZXR1cm4iIn1zZXRDb250ZW50KGUsdCl7bGV0IGE9ZS5xdWVyeVNlbGVjdG9yKCIuaHRtbC1lZGl0b3IiKTthJiYoYS52YWx1ZT10LHRoaXMuYXV0b1Jlc2l6ZShhKSl9Z2V0Q3Vyc29yUG9zaXRpb24oZSl7bGV0IHQ9ZS5xdWVyeVNlbGVjdG9yKCIuaHRtbC1lZGl0b3IiKTtyZXR1cm4gdD90LnNlbGVjdGlvblN0YXJ0Om51bGx9c2V0Q3Vyc29yVG9TdGFydChlKXtsZXQgdD1lLnF1ZXJ5U2VsZWN0b3IoIi5odG1sLWVkaXRvciIpO3Q/KHQuc2VsZWN0aW9uU3RhcnQ9dC5zZWxlY3Rpb25FbmQ9MCx0LmZvY3VzKCkpOnRoaXMuZm9jdXMoZSl9c2V0Q3Vyc29yVG9FbmQoZSl7bGV0IHQ9ZS5xdWVyeVNlbGVjdG9yKCIuaHRtbC1lZGl0b3IiKTtpZih0KXtsZXQgYT10LnZhbHVlLmxlbmd0aDt0LnNlbGVjdGlvblN0YXJ0PXQuc2VsZWN0aW9uRW5kPWEsdC5mb2N1cygpfWVsc2UgdGhpcy5mb2N1cyhlKX1mb2N1cyhlKXtsZXQgdD1lLnF1ZXJ5U2VsZWN0b3IoIi5odG1sLWVkaXRvciIpO3Q/dC5mb2N1cygpOmUucXVlcnlTZWxlY3RvcigiLmh0bWwtcHJldmlldyIpPy5mb2N1cygpfWZvY3VzV2l0aEN1cnNvcihlLHQ9ImVuZCIpe2xldCBhPWUucXVlcnlTZWxlY3RvcigiLmh0bWwtZWRpdG9yIik7YT90PT09InN0YXJ0Ij90aGlzLnNldEN1cnNvclRvU3RhcnQoZSk6dD09PSJlbmQiP3RoaXMuc2V0Q3Vyc29yVG9FbmQoZSk6dHlwZW9mIHQ9PSJudW1iZXIiJiYoYS5zZWxlY3Rpb25TdGFydD1hLnNlbGVjdGlvbkVuZD10LGEuZm9jdXMoKSk6dGhpcy5mb2N1cyhlKX1nZXRTcGxpdENvbnRlbnQoZSl7bGV0IHQ9ZS5xdWVyeVNlbGVjdG9yKCIuaHRtbC1lZGl0b3IiKTtpZighdClyZXR1cm4gbnVsbDtsZXQgYT10LnNlbGVjdGlvblN0YXJ0O3JldHVybntiZWZvcmU6dC52YWx1ZS5zdWJzdHJpbmcoMCxhKSxhZnRlcjp0LnZhbHVlLnN1YnN0cmluZyhhKX19Z2V0U3R5bGVzKCl7cmV0dXJuYAogICAgICAvKiBIVE1MIEJsb2NrIENvbnRhaW5lciAqLwogICAgICAuaHRtbC1ibG9jay1jb250YWluZXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBtYXJnaW46IDEycHggMDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMzNzQxNTEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMTExODI3Iil9OwogICAgICB9CiAgICAgIAogICAgICAuaHRtbC1ibG9jay1jb250YWluZXIuc2VsZWN0ZWQgewogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiM5Y2EzYWYiLCIjNmI3MjgwIil9OwogICAgICB9CiAgICAgIAogICAgICAvKiBIZWFkZXIgKi8KICAgICAgLmh0bWwtaGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzM3NDE1MSIpfTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y5ZmFmYiIsIiMwYTBhMGEiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5odG1sLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIG9wYWNpdHk6IDAuODsKICAgICAgICBmb250LWZhbWlseTogJ01vbmFjbycsICdDb25zb2xhcycsICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTsKICAgICAgfQogICAgICAKICAgICAgLmh0bWwtdGl0bGUgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMzc0MTUxIiwiI2U1ZTdlYiIpfTsKICAgICAgfQogICAgICAKICAgICAgLmh0bWwtdG9nZ2xlLW1vZGUgewogICAgICAgIHBhZGRpbmc6IDRweCA4cHg7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMzc0MTUxIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICB9CiAgICAgIAogICAgICAuaHRtbC10b2dnbGUtbW9kZTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmM2Y0ZjYiLCIjMWYyOTM3Iil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiNkMWQ1ZGIiLCIjNGI1NTYzIil9OwogICAgICB9CiAgICAgIAogICAgICAvKiBDb250ZW50ICovCiAgICAgIC5odG1sLWNvbnRlbnQgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBtaW4taGVpZ2h0OiAxMjBweDsKICAgICAgfQogICAgICAKICAgICAgLyogRWRpdG9yICovCiAgICAgIC5odG1sLWVkaXRvciB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWluLWhlaWdodDogMTIwcHg7CiAgICAgICAgcGFkZGluZzogMTJweDsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICByZXNpemU6IG5vbmU7CiAgICAgICAgZm9udC1mYW1pbHk6ICdNb25hY28nLCAnQ29uc29sYXMnLCAnQ291cmllciBOZXcnLCBtb25vc3BhY2U7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMWYyOTM3IiwiI2YzZjRmNiIpfTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CiAgICAgIAogICAgICAuaHRtbC1lZGl0b3I6OnBsYWNlaG9sZGVyIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM5Y2EzYWYiLCIjNmI3MjgwIil9OwogICAgICB9CiAgICAgIAogICAgICAvKiBQcmV2aWV3ICovCiAgICAgIC5odG1sLXByZXZpZXcgewogICAgICAgIHBhZGRpbmc6IDEycHg7CiAgICAgICAgbWluLWhlaWdodDogOTZweDsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzFmMjkzNyIsIiNmM2Y0ZjYiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5wcmV2aWV3LWVtcHR5IHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM5Y2EzYWYiLCIjNmI3MjgwIil9OwogICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgICAgfQogICAgICAKICAgICAgLyogU2FuZGJveGVkIEhUTUwgcHJldmlldyBzdHlsZXMgKi8KICAgICAgLmh0bWwtcHJldmlldyAqIHsKICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgIH0KICAgICAgCiAgICAgIC5odG1sLXByZXZpZXcgaW1nIHsKICAgICAgICBoZWlnaHQ6IGF1dG87CiAgICAgIH0KICAgICAgCiAgICAgIC5odG1sLXByZXZpZXcgYSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzYwYTVmYSIpfTsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgIH0KICAgICAgCiAgICAgIC5odG1sLXByZXZpZXcgYTpob3ZlciB7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICAgIH0KICAgICAgCiAgICAgIC5odG1sLXByZXZpZXcgdGFibGUgewogICAgICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWFyZ2luOiA4cHggMDsKICAgICAgfQogICAgICAKICAgICAgLmh0bWwtcHJldmlldyB0aCwKICAgICAgLmh0bWwtcHJldmlldyB0ZCB7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMzc0MTUxIil9OwogICAgICAgIHBhZGRpbmc6IDhweDsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICB9CiAgICAgIAogICAgICAuaHRtbC1wcmV2aWV3IHRoIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y5ZmFmYiIsIiMxZjI5MzciKX07CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgfQogICAgICAKICAgICAgLmh0bWwtcHJldmlldyBwcmUgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjNmNGY2IiwiIzFmMjkzNyIpfTsKICAgICAgICBwYWRkaW5nOiAxMnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwogICAgICAgIG1hcmdpbjogOHB4IDA7CiAgICAgIH0KICAgICAgCiAgICAgIC5odG1sLXByZXZpZXcgY29kZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmM2Y0ZjYiLCIjMWYyOTM3Iil9OwogICAgICAgIHBhZGRpbmc6IDJweCA0cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgIGZvbnQtZmFtaWx5OiAnTW9uYWNvJywgJ0NvbnNvbGFzJywgJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlOwogICAgICAgIGZvbnQtc2l6ZTogMC45ZW07CiAgICAgIH0KICAgICAgCiAgICAgIC5odG1sLXByZXZpZXcgcHJlIGNvZGUgewogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KICAgIGB9fX0pO3ZhciAkbnQ9ZygoKT0+e25jKCk7ZXZhKCk7dHZhKCk7YXZhKCk7c3ZhKCk7aXZhKCk7b3ZhKCk7bnZhKCk7bHZhKCk7Y3ZhKCk7ZHZhKCk7dXZhKCk7cHZhKCk7aHZhKCl9KTtmdW5jdGlvbiBYSmEoKXtBcy5yZWdpc3RlcigiZGl2aWRlciIsbmV3IEJRKSxBcy5yZWdpc3RlcigicGFyYWdyYXBoIixuZXcgUFEpLEFzLnJlZ2lzdGVyKCJoZWFkaW5nLTEiLG5ldyBRZygiaGVhZGluZy0xIikpLEFzLnJlZ2lzdGVyKCJoZWFkaW5nLTIiLG5ldyBRZygiaGVhZGluZy0yIikpLEFzLnJlZ2lzdGVyKCJoZWFkaW5nLTMiLG5ldyBRZygiaGVhZGluZy0zIikpLEFzLnJlZ2lzdGVyKCJxdW90ZSIsbmV3IElRKSxBcy5yZWdpc3RlcigiY29kZSIsbmV3IEFRKSxBcy5yZWdpc3RlcigibGlzdCIsbmV3IE5RKSxBcy5yZWdpc3RlcigiaW1hZ2UiLG5ldyBSUSksQXMucmVnaXN0ZXIoInlvdXR1YmUiLG5ldyBPUSksQXMucmVnaXN0ZXIoImF0dGFjaG1lbnQiLG5ldyBGUSksQXMucmVnaXN0ZXIoIm1hcmtkb3duIixuZXcgSFEpLEFzLnJlZ2lzdGVyKCJodG1sIixuZXcgcVEpfXZhciBEbnQ9ZygoKT0+eyRudCgpO2koWEphLCJyZWdpc3RlckFsbEJsb2NrSGFuZGxlcnMiKSxYSmEoKX0pO3ZhciBWMWUsTG50PWcoKCk9PntwZSgpO1B1KCk7TGwoKTtaZygpO3ExZSgpO1YxZT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJXeXNpd3lnTW9kYWxNYW5hZ2VyIil9c3RhdGljIGFzeW5jIHNob3dMYW5ndWFnZVNlbGVjdGlvbk1vZGFsKCl7cmV0dXJuIG5ldyBQcm9taXNlKGU9PntsZXQgdD1udWxsO2lzLmNyZWF0ZUFuZFNob3coe2hlYWRpbmc6IlNlbGVjdCBQcm9ncmFtbWluZyBMYW5ndWFnZSIsY29udGVudDp3YAogICAgICAgICAgPHN0eWxlPgogICAgICAgICAgICAubGFuZ3VhZ2UtY29udGFpbmVyIHsKICAgICAgICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICAgICAgICAgIG1heC1oZWlnaHQ6IDQwMHB4OwogICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLmxhbmd1YWdlLWdyaWQgewogICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMTIwcHgsIDFmcikpOwogICAgICAgICAgICAgIGdhcDogOHB4OwogICAgICAgICAgICB9CiAgICAgICAgICAgIC5sYW5ndWFnZS1idXR0b24gewogICAgICAgICAgICAgIHBhZGRpbmc6IDEycHggOHB4OwogICAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzM3NDE1MSIpfTsKICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzNzQxNTEiLCIjZTVlN2ViIil9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIC5sYW5ndWFnZS1idXR0b246aG92ZXIgewogICAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjlmYWZiIiwiIzFmMjkzNyIpfTsKICAgICAgICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjZDFkNWRiIiwiIzRiNTU2MyIpfTsKICAgICAgICAgICAgfQogICAgICAgICAgICAubGFuZ3VhZ2UtYnV0dG9uLnNlbGVjdGVkIHsKICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2YzZjRmNiIsIiMzNzQxNTEiKX07CiAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiIzljYTNhZiIsIiM2YjcyODAiKX07CiAgICAgICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTExODI3IiwiI2Y5ZmFmYiIpfTsKICAgICAgICAgICAgfQogICAgICAgICAgPC9zdHlsZT4KICAgICAgICAgIDxkaXYgY2xhc3M9Imxhbmd1YWdlLWNvbnRhaW5lciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Imxhbmd1YWdlLWdyaWQiPgogICAgICAgICAgICAgICR7dGhpcy5nZXRMYW5ndWFnZXMoKS5tYXAoYT0+d2AKICAgICAgICAgICAgICAgIDxkaXYgCiAgICAgICAgICAgICAgICAgIGNsYXNzPSJsYW5ndWFnZS1idXR0b24gJHt0PT09YS50b0xvd2VyQ2FzZSgpPyJzZWxlY3RlZCI6IiJ9IiAKICAgICAgICAgICAgICAgICAgQGNsaWNrPSIkeygpPT57dD1hLnRvTG93ZXJDYXNlKCk7bGV0IHI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGVlcy1tb2RhbCIpO3ImJnR5cGVvZiByLmRlc3Ryb3k9PSJmdW5jdGlvbiImJnIuZGVzdHJveSgpLGUodCl9fSI+CiAgICAgICAgICAgICAgICAgICR7YX0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIGApfQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIGAsbWVudU9wdGlvbnM6W3tuYW1lOiJDYW5jZWwiLGFjdGlvbjppKGFzeW5jIGE9PnthLmRlc3Ryb3koKSxlKG51bGwpfSwiYWN0aW9uIil9XX0pfSl9c3RhdGljIGFzeW5jIHNob3dCbG9ja1NldHRpbmdzTW9kYWwoZSx0KXtsZXQgYT13YAogICAgICA8c3R5bGU+CiAgICAgICAgLnNldHRpbmdzLWNvbnRhaW5lciB7CiAgICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICAgIH0KICAgICAgICAuc2V0dGluZ3Mtc2VjdGlvbiB7CiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgICAgIH0KICAgICAgICAuc2V0dGluZ3Mtc2VjdGlvbjpsYXN0LWNoaWxkIHsKICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgICAgfQogICAgICAgIC5zZXR0aW5ncy1sYWJlbCB7CiAgICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNmI3MjgwIiwiIzljYTNhZiIpfTsKICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtOwogICAgICAgIH0KICAgICAgICAuYmxvY2stdHlwZS1ncmlkIHsKICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgxNjBweCwgMWZyKSk7CiAgICAgICAgICBnYXA6IDhweDsKICAgICAgICB9CiAgICAgICAgLmJsb2NrLXR5cGUtYnV0dG9uIHsKICAgICAgICAgIHBhZGRpbmc6IDEycHg7CiAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzM3NDE1MSIpfTsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzNzQxNTEiLCIjZTVlN2ViIil9OwogICAgICAgIH0KICAgICAgICAuYmxvY2stdHlwZS1idXR0b246aG92ZXIgewogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmOWZhZmIiLCIjMWYyOTM3Iil9OwogICAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiI2QxZDVkYiIsIiM0YjU1NjMiKX07CiAgICAgICAgfQogICAgICAgIC5ibG9jay10eXBlLWJ1dHRvbi5zZWxlY3RlZCB7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2YzZjRmNiIsIiMzNzQxNTEiKX07CiAgICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjOWNhM2FmIiwiIzZiNzI4MCIpfTsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzExMTgyNyIsIiNmOWZhZmIiKX07CiAgICAgICAgfQogICAgICAgIC5ibG9jay10eXBlLWljb24gewogICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICAgIHdpZHRoOiAyMHB4OwogICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgICBvcGFjaXR5OiAwLjc7CiAgICAgICAgfQogICAgICA8L3N0eWxlPgogICAgICA8ZGl2IGNsYXNzPSJzZXR0aW5ncy1jb250YWluZXIiPgogICAgICAgICR7dGhpcy5nZXRCbG9ja1R5cGVTZWxlY3RvcihlLHQpfQogICAgICAgICR7ZS50eXBlPT09ImNvZGUiP3RoaXMuZ2V0Q29kZUJsb2NrU2V0dGluZ3MoZSx0KToiIn0KICAgICAgPC9kaXY+CiAgICBgO2lzLmNyZWF0ZUFuZFNob3coe2hlYWRpbmc6IkJsb2NrIFNldHRpbmdzIixjb250ZW50OmEsbWVudU9wdGlvbnM6W3tuYW1lOiJEb25lIixhY3Rpb246aShhc3luYyByPT57ci5kZXN0cm95KCl9LCJhY3Rpb24iKX1dfSl9c3RhdGljIGdldENvZGVCbG9ja1NldHRpbmdzKGUsdCl7bGV0IGE9ZS5tZXRhZGF0YT8ubGFuZ3VhZ2V8fCJqYXZhc2NyaXB0IjtyZXR1cm4gd2AKICAgICAgPHN0eWxlPgogICAgICAgIC5sYW5ndWFnZS1ncmlkIHsKICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgxMDBweCwgMWZyKSk7CiAgICAgICAgICBnYXA6IDZweDsKICAgICAgICB9CiAgICAgICAgLmxhbmd1YWdlLWJ1dHRvbiB7CiAgICAgICAgICBwYWRkaW5nOiA4cHggNHB4OwogICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMzNzQxNTEiKX07CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzM3NDE1MSIsIiNlNWU3ZWIiKX07CiAgICAgICAgfQogICAgICAgIC5sYW5ndWFnZS1idXR0b246aG92ZXIgewogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmOWZhZmIiLCIjMWYyOTM3Iil9OwogICAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiI2QxZDVkYiIsIiM0YjU1NjMiKX07CiAgICAgICAgfQogICAgICAgIC5sYW5ndWFnZS1idXR0b24uc2VsZWN0ZWQgewogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmM2Y0ZjYiLCIjMzc0MTUxIil9OwogICAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiIzljYTNhZiIsIiM2YjcyODAiKX07CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxMTE4MjciLCIjZjlmYWZiIil9OwogICAgICAgIH0KICAgICAgPC9zdHlsZT4KICAgICAgPGRpdiBjbGFzcz0ic2V0dGluZ3Mtc2VjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2V0dGluZ3MtbGFiZWwiPlByb2dyYW1taW5nIExhbmd1YWdlPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ3VhZ2UtZ3JpZCI+CiAgICAgICAgICAke3RoaXMuZ2V0TGFuZ3VhZ2VzKCkubWFwKHI9PndgCiAgICAgICAgICAgIDxkaXYgCiAgICAgICAgICAgICAgY2xhc3M9Imxhbmd1YWdlLWJ1dHRvbiAke2E9PT1yLnRvTG93ZXJDYXNlKCk/InNlbGVjdGVkIjoiIn0iIAogICAgICAgICAgICAgIEBjbGljaz0iJHsoKT0+e2UubWV0YWRhdGF8fChlLm1ldGFkYXRhPXt9KSxlLm1ldGFkYXRhLmxhbmd1YWdlPXIudG9Mb3dlckNhc2UoKSx0KGUpO2xldCBuPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRlZXMtbW9kYWwiKTtuJiZ0eXBlb2Ygbi5kZXN0cm95PT0iZnVuY3Rpb24iJiZuLmRlc3Ryb3koKX19IgogICAgICAgICAgICAgIGRhdGEtbGFuZz0iJHtyfSIKICAgICAgICAgICAgPiR7cn08L2Rpdj4KICAgICAgICAgIGApfQogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9c3RhdGljIGdldExhbmd1YWdlcygpe3JldHVyblsuLi5IMWVdfXN0YXRpYyBnZXRCbG9ja1R5cGVTZWxlY3RvcihlLHQpe2xldCBhPUlyLmdldFNsYXNoTWVudUl0ZW1zKCkuZmlsdGVyKHI9PnIudHlwZSE9PSJkaXZpZGVyIik7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9InNldHRpbmdzLXNlY3Rpb24iPgogICAgICAgIDxkaXYgY2xhc3M9InNldHRpbmdzLWxhYmVsIj5CbG9jayBUeXBlPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2stdHlwZS1ncmlkIj4KICAgICAgICAgICR7YS5tYXAocj0+d2AKICAgICAgICAgICAgPGRpdiAKICAgICAgICAgICAgICBjbGFzcz0iYmxvY2stdHlwZS1idXR0b24gJHtlLnR5cGU9PT1yLnR5cGU/InNlbGVjdGVkIjoiIn0iCiAgICAgICAgICAgICAgQGNsaWNrPSIke2FzeW5jIG49PntsZXQgbz1uLmN1cnJlbnRUYXJnZXQsbD1lLnR5cGU7aWYoZS50eXBlPXIudHlwZSxsPT09ImNvZGUiJiZlLnR5cGUhPT0iY29kZSIpZGVsZXRlIGUubWV0YWRhdGE/Lmxhbmd1YWdlO2Vsc2UgaWYobD09PSJsaXN0IiYmZS50eXBlIT09Imxpc3QiKWRlbGV0ZSBlLm1ldGFkYXRhPy5saXN0VHlwZTtlbHNlIGlmKGUudHlwZT09PSJsaXN0IiYmIWUubWV0YWRhdGE/Lmxpc3RUeXBlKWUubWV0YWRhdGE9e2xpc3RUeXBlOiJidWxsZXQifTtlbHNlIGlmKGUudHlwZT09PSJjb2RlIiYmIWUubWV0YWRhdGE/Lmxhbmd1YWdlKXtsZXQgZD1hd2FpdCB0aGlzLnNob3dMYW5ndWFnZVNlbGVjdGlvbk1vZGFsKCk7aWYoZCllLm1ldGFkYXRhPXtsYW5ndWFnZTpkfTtlbHNle2UudHlwZT1sO3JldHVybn19dChlKTtsZXQgcD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkZWVzLW1vZGFsIik7cCYmdHlwZW9mIHAuZGVzdHJveT09ImZ1bmN0aW9uIiYmcC5kZXN0cm95KCl9fSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJibG9jay10eXBlLWljb24iPiR7ci5pY29ufTwvc3Bhbj4KICAgICAgICAgICAgICA8c3Bhbj4ke3IubGFiZWx9PC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIGApfQogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9fX0pO3ZhciBVMWUsZnZhPWcoKCk9PntMbCgpO1N4KCk7WmcoKTtSdSgpO0NudCgpO0xudCgpO1UxZT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJXeXNpd3lnSW5wdXRIYW5kbGVyIil9Y29tcG9uZW50O3NhdmVUaW1lb3V0PW51bGw7Y29uc3RydWN0b3IoZSl7dGhpcy5jb21wb25lbnQ9ZX1oYW5kbGVCbG9ja0lucHV0KGUsdCl7aWYodGhpcy5jb21wb25lbnQuaXNDb21wb3NpbmcpcmV0dXJuO2xldCBhPWUudGFyZ2V0LHI9YS50ZXh0Q29udGVudHx8IiIsbj10aGlzLmRldGVjdEJsb2NrVHlwZUludGVudChyKTtpZihuJiZuLnR5cGUhPT10LnR5cGUpe2UucHJldmVudERlZmF1bHQoKSx0aGlzLmhhbmRsZUJsb2NrVHJhbnNmb3JtYXRpb24odCxuLGEpO3JldHVybn10aGlzLmhhbmRsZVNsYXNoQ29tbWFuZChyLGEpLHRoaXMuc2NoZWR1bGVBdXRvU2F2ZSgpfXVwZGF0ZUJsb2NrQ29udGVudChlLHQpe2xldCByPXQuY2xvc2VzdCgiLmJsb2NrLXdyYXBwZXIiKT8ucXVlcnlTZWxlY3RvcigiZGVlcy13eXNpd3lnLWJsb2NrIik7aWYocil7bGV0IG49ci5nZXRDb250ZW50KCk7aWYoZS5jb250ZW50IT09biYmKGUuY29udGVudD1uKSxlLnR5cGU9PT0ibGlzdCIpe2xldCBvPXQucXVlcnlTZWxlY3Rvcigib2wsIHVsIik7byYmKGUubWV0YWRhdGE9e2xpc3RUeXBlOm8udGFnTmFtZS50b0xvd2VyQ2FzZSgpPT09Im9sIj8ib3JkZXJlZCI6ImJ1bGxldCJ9KX19ZWxzZSBpZihlLnR5cGU9PT0ibGlzdCIpe2xldCBuPXQucXVlcnlTZWxlY3RvckFsbCgibGkiKTtlLmNvbnRlbnQ9QXJyYXkuZnJvbShuKS5tYXAobD0+bC5pbm5lckhUTUx8fCIiKS5qb2luKGAKYCk7bGV0IG89dC5xdWVyeVNlbGVjdG9yKCJvbCwgdWwiKTtvJiYoZS5tZXRhZGF0YT17bGlzdFR5cGU6by50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PT0ib2wiPyJvcmRlcmVkIjoiYnVsbGV0In0pfWVsc2UgZS50eXBlPT09ImNvZGUiP2UuY29udGVudD10LnRleHRDb250ZW50fHwiIjplLmNvbnRlbnQ9dC5pbm5lckhUTUx8fCIifWRldGVjdEJsb2NrVHlwZUludGVudChlKXtsZXQgdD1Jci5jaGVja0hlYWRpbmdTaG9ydGN1dChlKTtpZih0KXJldHVybiB0O2xldCBhPUlyLmNoZWNrTGlzdFNob3J0Y3V0KGUpO3JldHVybiBhfHwoSXIuY2hlY2tRdW90ZVNob3J0Y3V0KGUpP3t0eXBlOiJxdW90ZSJ9OklyLmNoZWNrQ29kZVNob3J0Y3V0KGUpP3t0eXBlOiJjb2RlIn06SXIuY2hlY2tEaXZpZGVyU2hvcnRjdXQoZSk/e3R5cGU6ImRpdmlkZXIifTpudWxsKX1hc3luYyBoYW5kbGVCbG9ja1RyYW5zZm9ybWF0aW9uKGUsdCxhKXtsZXQgcj10aGlzLmNvbXBvbmVudC5ibG9ja09wZXJhdGlvbnM7aWYodC50eXBlPT09Imxpc3QiKXtlLnR5cGU9Imxpc3QiLGUuY29udGVudD0iIixlLm1ldGFkYXRhPXtsaXN0VHlwZTp0Lmxpc3RUeXBlfTtsZXQgbj10Lmxpc3RUeXBlPT09Im9yZGVyZWQiPyJvbCI6InVsIjthLmlubmVySFRNTD1gPCR7bn0+PGxpPjwvbGk+PC8ke259PmAsdGhpcy5jb21wb25lbnQudXBkYXRlVmFsdWUoKSx0aGlzLmNvbXBvbmVudC5lZGl0b3JDb250ZW50UmVmJiZ0aGlzLmNvbXBvbmVudC51cGRhdGVCbG9ja0VsZW1lbnQoZS5pZCksc2V0VGltZW91dCgoKT0+e21uLmZvY3VzTGlzdEl0ZW0oYSl9LDApfWVsc2UgaWYodC50eXBlPT09ImRpdmlkZXIiKXtlLnR5cGU9ImRpdmlkZXIiLGUuY29udGVudD0iICIsdGhpcy5jb21wb25lbnQuZWRpdG9yQ29udGVudFJlZiYmdGhpcy5jb21wb25lbnQudXBkYXRlQmxvY2tFbGVtZW50KGUuaWQpO2xldCBuPXIuY3JlYXRlQmxvY2soKTtyLmluc2VydEJsb2NrQWZ0ZXIoZSxuKSx0aGlzLmNvbXBvbmVudC51cGRhdGVWYWx1ZSgpfWVsc2UgaWYodC50eXBlPT09ImNvZGUiKXtsZXQgbj1hd2FpdCBWMWUuc2hvd0xhbmd1YWdlU2VsZWN0aW9uTW9kYWwoKTtuJiYoZS50eXBlPSJjb2RlIixlLmNvbnRlbnQ9IiIsZS5tZXRhZGF0YT17bGFuZ3VhZ2U6bn0sYS50ZXh0Q29udGVudD0iIix0aGlzLmNvbXBvbmVudC51cGRhdGVWYWx1ZSgpLHRoaXMuY29tcG9uZW50LmVkaXRvckNvbnRlbnRSZWYmJnRoaXMuY29tcG9uZW50LnVwZGF0ZUJsb2NrRWxlbWVudChlLmlkKSxzZXRUaW1lb3V0KGFzeW5jKCk9Pnthd2FpdCByLmZvY3VzQmxvY2soZS5pZCwic3RhcnQiKX0sNTApKX1lbHNlIGUudHlwZT10LnR5cGUsZS5jb250ZW50PSIiLGEudGV4dENvbnRlbnQ9IiIsdGhpcy5jb21wb25lbnQudXBkYXRlVmFsdWUoKSx0aGlzLmNvbXBvbmVudC5lZGl0b3JDb250ZW50UmVmJiZ0aGlzLmNvbXBvbmVudC51cGRhdGVCbG9ja0VsZW1lbnQoZS5pZCksc2V0VGltZW91dChhc3luYygpPT57YXdhaXQgci5mb2N1c0Jsb2NrKGUuaWQsInN0YXJ0Iil9LDUwKX1oYW5kbGVTbGFzaENvbW1hbmQoZSx0KXtsZXQgYT10aGlzLmNvbXBvbmVudC5zbGFzaE1lbnUscj1hJiZhLnZpc2libGU7aWYoZT09PSIvInx8ZS5zdGFydHNXaXRoKCIvIikmJnIpe2lmKCFyJiZlPT09Ii8iKXtsZXQgbj10aGlzLmdldENhcmV0Q29vcmRpbmF0ZXModCk7YS5zaG93KHt4Om4ubGVmdCx5Om4uYm90dG9tKzR9LG89Pnt0aGlzLmNvbXBvbmVudC5pbnNlcnRCbG9jayhvKX0pLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQhPT10JiZ0LmZvY3VzKCl9KX1hJiZhLnVwZGF0ZUZpbHRlcihlLnNsaWNlKDEpKX1lbHNlIGUuc3RhcnRzV2l0aCgiLyIpfHx0aGlzLmNvbXBvbmVudC5jbG9zZVNsYXNoTWVudSgpfWdldENhcmV0Q29vcmRpbmF0ZXMoZSl7bGV0IHQ9d2luZG93LmdldFNlbGVjdGlvbigpO2lmKHQmJnQucmFuZ2VDb3VudD4wKXtsZXQgcj10LmdldFJhbmdlQXQoMCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoci53aWR0aD4wfHxyLmhlaWdodD4wKXJldHVybiByfXJldHVybiBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfXNjaGVkdWxlQXV0b1NhdmUoKXt0aGlzLnNhdmVUaW1lb3V0JiZjbGVhclRpbWVvdXQodGhpcy5zYXZlVGltZW91dCksISh0aGlzLmNvbXBvbmVudC5zbGFzaE1lbnUmJnRoaXMuY29tcG9uZW50LnNsYXNoTWVudS52aXNpYmxlKSYmKHRoaXMuc2F2ZVRpbWVvdXQ9c2V0VGltZW91dCgoKT0+e3RoaXMuc3luY0FsbEJsb2NrQ29udGVudCgpLHRoaXMuY29tcG9uZW50LnVwZGF0ZVZhbHVlKCl9LDJlMykpfXN5bmNBbGxCbG9ja0NvbnRlbnQoKXt0aGlzLmNvbXBvbmVudC5ibG9ja3MuZm9yRWFjaChlPT57bGV0IGE9dGhpcy5jb21wb25lbnQuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihgW2RhdGEtYmxvY2staWQ9IiR7ZS5pZH0iXWApPy5xdWVyeVNlbGVjdG9yKCJkZWVzLXd5c2l3eWctYmxvY2siKTtpZihhJiZhLmdldENvbnRlbnQpe2xldCByPWEuZ2V0Q29udGVudCgpO2UuY29udGVudCE9PXImJihlLmNvbnRlbnQ9cil9fSl9ZGVzdHJveSgpe3RoaXMuc2F2ZVRpbWVvdXQmJmNsZWFyVGltZW91dCh0aGlzLnNhdmVUaW1lb3V0KX19fSk7dmFyIFcxZSxtdmE9ZygoKT0+e0xsKCk7U3goKTtYZCgpO1cxZT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJXeXNpd3lnS2V5Ym9hcmRIYW5kbGVyIil9Y29tcG9uZW50O2NvbnN0cnVjdG9yKGUpe3RoaXMuY29tcG9uZW50PWV9YXN5bmMgaGFuZGxlQmxvY2tLZXlEb3duKGUsdCl7aWYodGhpcy5jb21wb25lbnQuc2xhc2hNZW51LnZpc2libGUmJnRoaXMuaXNTbGFzaE1lbnVLZXkoZS5rZXkpKXt0aGlzLmNvbXBvbmVudC5oYW5kbGVTbGFzaE1lbnVLZXlib2FyZChlKTtyZXR1cm59aWYoIXRoaXMuaGFuZGxlRm9ybWF0dGluZ1Nob3J0Y3V0cyhlKSlzd2l0Y2goZS5rZXkpe2Nhc2UiVGFiIjp0aGlzLmhhbmRsZVRhYihlLHQpO2JyZWFrO2Nhc2UiRW50ZXIiOmF3YWl0IHRoaXMuaGFuZGxlRW50ZXIoZSx0KTticmVhaztjYXNlIkJhY2tzcGFjZSI6YXdhaXQgdGhpcy5oYW5kbGVCYWNrc3BhY2UoZSx0KTticmVhaztjYXNlIkRlbGV0ZSI6YXdhaXQgdGhpcy5oYW5kbGVEZWxldGUoZSx0KTticmVhaztjYXNlIkFycm93VXAiOmF3YWl0IHRoaXMuaGFuZGxlQXJyb3dVcChlLHQpO2JyZWFrO2Nhc2UiQXJyb3dEb3duIjphd2FpdCB0aGlzLmhhbmRsZUFycm93RG93bihlLHQpO2JyZWFrO2Nhc2UiQXJyb3dMZWZ0Ijphd2FpdCB0aGlzLmhhbmRsZUFycm93TGVmdChlLHQpO2JyZWFrO2Nhc2UiQXJyb3dSaWdodCI6YXdhaXQgdGhpcy5oYW5kbGVBcnJvd1JpZ2h0KGUsdCk7YnJlYWt9fWlzU2xhc2hNZW51S2V5KGUpe3JldHVyblsiQXJyb3dEb3duIiwiQXJyb3dVcCIsIkVudGVyIiwiRXNjYXBlIl0uaW5jbHVkZXMoZSl9aGFuZGxlRm9ybWF0dGluZ1Nob3J0Y3V0cyhlKXtpZighKGUubWV0YUtleXx8ZS5jdHJsS2V5KSlyZXR1cm4hMTtzd2l0Y2goZS5rZXkudG9Mb3dlckNhc2UoKSl7Y2FzZSJiIjpyZXR1cm4gZS5wcmV2ZW50RGVmYXVsdCgpLFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnRoaXMuY29tcG9uZW50LmFwcGx5Rm9ybWF0KCJib2xkIikpLCEwO2Nhc2UiaSI6cmV0dXJuIGUucHJldmVudERlZmF1bHQoKSxQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT50aGlzLmNvbXBvbmVudC5hcHBseUZvcm1hdCgiaXRhbGljIikpLCEwO2Nhc2UidSI6cmV0dXJuIGUucHJldmVudERlZmF1bHQoKSxQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT50aGlzLmNvbXBvbmVudC5hcHBseUZvcm1hdCgidW5kZXJsaW5lIikpLCEwO2Nhc2UiayI6cmV0dXJuIGUucHJldmVudERlZmF1bHQoKSxQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT50aGlzLmNvbXBvbmVudC5hcHBseUZvcm1hdCgibGluayIpKSwhMH1yZXR1cm4hMX1oYW5kbGVUYWIoZSx0KXt0LnR5cGUhPT0iY29kZSImJnQudHlwZT09PSJsaXN0IiYmZS5wcmV2ZW50RGVmYXVsdCgpfWFzeW5jIGhhbmRsZUVudGVyKGUsdCl7bGV0IGE9dGhpcy5jb21wb25lbnQuYmxvY2tPcGVyYXRpb25zO2lmKFsiZGl2aWRlciIsImltYWdlIiwieW91dHViZSIsImF0dGFjaG1lbnQiXS5pbmNsdWRlcyh0LnR5cGUpKXtlLnByZXZlbnREZWZhdWx0KCk7bGV0IG49YS5jcmVhdGVCbG9jaygpO2F3YWl0IGEuaW5zZXJ0QmxvY2tBZnRlcih0LG4pO3JldHVybn1pZih0LnR5cGU9PT0iY29kZSIpe2lmKGUuc2hpZnRLZXkpe2UucHJldmVudERlZmF1bHQoKTtsZXQgbj1hLmNyZWF0ZUJsb2NrKCk7YXdhaXQgYS5pbnNlcnRCbG9ja0FmdGVyKHQsbil9cmV0dXJufWlmKCFlLnNoaWZ0S2V5KWlmKHQudHlwZT09PSJsaXN0Iilhd2FpdCB0aGlzLmhhbmRsZUVudGVySW5MaXN0KGUsdCk7ZWxzZXtlLnByZXZlbnREZWZhdWx0KCk7bGV0IG89dGhpcy5jb21wb25lbnQuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihgW2RhdGEtYmxvY2staWQ9IiR7dC5pZH0iXWApPy5xdWVyeVNlbGVjdG9yKCJkZWVzLXd5c2l3eWctYmxvY2siKTtpZihvJiZvLmdldFNwbGl0Q29udGVudCl7bGV0IGw9by5nZXRTcGxpdENvbnRlbnQoKTtpZihsKXtvLnNldENvbnRlbnQobC5iZWZvcmUpLHQuY29udGVudD1sLmJlZm9yZTtsZXQgcD1hLmNyZWF0ZUJsb2NrKCJwYXJhZ3JhcGgiLGwuYWZ0ZXIpO2F3YWl0IGEuaW5zZXJ0QmxvY2tBZnRlcih0LHApLHRoaXMuY29tcG9uZW50LnVwZGF0ZVZhbHVlKCl9ZWxzZXtsZXQgcD1hLmNyZWF0ZUJsb2NrKCk7YXdhaXQgYS5pbnNlcnRCbG9ja0FmdGVyKHQscCl9fWVsc2V7bGV0IGw9YS5jcmVhdGVCbG9jaygpO2F3YWl0IGEuaW5zZXJ0QmxvY2tBZnRlcih0LGwpfX19YXN5bmMgaGFuZGxlRW50ZXJJbkxpc3QoZSx0KXtsZXQgYT13aW5kb3cuZ2V0U2VsZWN0aW9uKCk7aWYoYSYmYS5yYW5nZUNvdW50PjApe2xldCBuPWEuZ2V0UmFuZ2VBdCgwKS5zdGFydENvbnRhaW5lci5wYXJlbnRFbGVtZW50Py5jbG9zZXN0KCJsaSIpO2lmKG4mJm4udGV4dENvbnRlbnQ9PT0iIil7ZS5wcmV2ZW50RGVmYXVsdCgpO2xldCBvPXRoaXMuY29tcG9uZW50LmJsb2NrT3BlcmF0aW9ucyxsPW8uY3JlYXRlQmxvY2soKTthd2FpdCBvLmluc2VydEJsb2NrQWZ0ZXIodCxsKX19fWFzeW5jIGhhbmRsZUJhY2tzcGFjZShlLHQpe2xldCBhPXRoaXMuY29tcG9uZW50LmJsb2NrT3BlcmF0aW9ucztpZihbImRpdmlkZXIiLCJpbWFnZSIsInlvdXR1YmUiLCJhdHRhY2htZW50Il0uaW5jbHVkZXModC50eXBlKSl7aWYoZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuY29tcG9uZW50LmJsb2Nrcy5sZW5ndGg9PT0xKXt0aGlzLmNvbXBvbmVudC5zYXZlVG9IaXN0b3J5KCExKSxhLnJlbW92ZUJsb2NrKHQuaWQpO2xldCB4PWEuY3JlYXRlQmxvY2soInBhcmFncmFwaCIsIiIpO3RoaXMuY29tcG9uZW50LmJsb2Nrcz1beF0sdGhpcy5jb21wb25lbnQucmVuZGVyQmxvY2tzUHJvZ3JhbW1hdGljYWxseSgpLGF3YWl0IGEuZm9jdXNCbG9jayh4LmlkLCJzdGFydCIpLHRoaXMuY29tcG9uZW50LnVwZGF0ZVZhbHVlKCk7cmV0dXJufXRoaXMuY29tcG9uZW50LnNhdmVUb0hpc3RvcnkoITEpO2xldCBiPWEuZ2V0UHJldmlvdXNCbG9jayh0LmlkKSx2PWEuZ2V0TmV4dEJsb2NrKHQuaWQpO2EucmVtb3ZlQmxvY2sodC5pZCksYiYmYi50eXBlIT09ImRpdmlkZXIiJiZiLnR5cGUhPT0iaW1hZ2UiP2F3YWl0IGEuZm9jdXNCbG9jayhiLmlkLCJlbmQiKTp2JiZ2LnR5cGUhPT0iZGl2aWRlciImJnYudHlwZSE9PSJpbWFnZSI/YXdhaXQgYS5mb2N1c0Jsb2NrKHYuaWQsInN0YXJ0Iik6Yj9hd2FpdCBhLmZvY3VzQmxvY2soYi5pZCk6diYmYXdhaXQgYS5mb2N1c0Jsb2NrKHYuaWQpO3JldHVybn1sZXQgbz10aGlzLmNvbXBvbmVudC5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKGBbZGF0YS1ibG9jay1pZD0iJHt0LmlkfSJdYCk/LnF1ZXJ5U2VsZWN0b3IoImRlZXMtd3lzaXd5Zy1ibG9jayIpO2lmKCFvfHwhby5zaGFkb3dSb290KXJldHVybjtsZXQgbD10LnR5cGU9PT0iY29kZSI/by5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5jb2RlLWVkaXRvciIpOm8uc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIuYmxvY2siKTtpZighbClyZXR1cm47bGV0IHA9by5jbG9zZXN0KCJkZWVzLWlucHV0LXd5c2l3eWciKSxkPVtdO3A/LnNoYWRvd1Jvb3QmJmQucHVzaChwLnNoYWRvd1Jvb3QpLGQucHVzaChvLnNoYWRvd1Jvb3QpO2xldCB1PSR0LmdldEN1cnNvclBvc2l0aW9uSW5FbGVtZW50KGwsLi4uZCksYz1vLmdldENvbnRlbnQ/by5nZXRDb250ZW50KCk6bC50ZXh0Q29udGVudDtpZih1PT09MCl7ZS5wcmV2ZW50RGVmYXVsdCgpO2xldCBiPWEuZ2V0UHJldmlvdXNCbG9jayh0LmlkKTtpZihiKXtpZihbImRpdmlkZXIiLCJpbWFnZSIsInlvdXR1YmUiLCJhdHRhY2htZW50Il0uaW5jbHVkZXMoYi50eXBlKSl7YXdhaXQgYS5mb2N1c0Jsb2NrKGIuaWQpO3JldHVybn1pZih0aGlzLmNvbXBvbmVudC5zYXZlVG9IaXN0b3J5KCExKSxiLnR5cGU9PT0iY29kZSImJnQudHlwZSE9PSJjb2RlIil7dC5jb250ZW50PT09IiImJihhLnJlbW92ZUJsb2NrKHQuaWQpLGF3YWl0IGEuZm9jdXNCbG9jayhiLmlkLCJlbmQiKSk7cmV0dXJufWlmKHQudHlwZT09PSJjb2RlIiYmYi50eXBlIT09ImNvZGUiKXtsZXQgTj1vLmdldENvbnRlbnQ/by5nZXRDb250ZW50KCk6dC5jb250ZW50OyhOPT09IiJ8fE4udHJpbSgpPT09IiIpJiYoYS5yZW1vdmVCbG9jayh0LmlkKSxhd2FpdCBhLmZvY3VzQmxvY2soYi5pZCwiZW5kIikpO3JldHVybn1sZXQgbT10aGlzLmNvbXBvbmVudC5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKGBbZGF0YS1ibG9jay1pZD0iJHtiLmlkfSJdYCk/LnF1ZXJ5U2VsZWN0b3IoImRlZXMtd3lzaXd5Zy1ibG9jayIpLGY9bT8uZ2V0Q29udGVudCgpfHxiLmNvbnRlbnR8fCIiLHk9by5nZXRDb250ZW50KCl8fHQuY29udGVudHx8IiIsTT0iIjtiLnR5cGU9PT0iY29kZSImJnQudHlwZT09PSJjb2RlInx8Yi50eXBlPT09Imxpc3QiJiZ0LnR5cGU9PT0ibGlzdCI/TT1mKyhmJiZ5P2AKYDoiIikreTpNPWYrKGYmJnk/IiAiOiIiKSt5O2xldCB6PWYubGVuZ3RoO2EudXBkYXRlQmxvY2tDb250ZW50KGIuaWQsTSksbSYmbS5zZXRDb250ZW50KE0pLGEucmVtb3ZlQmxvY2sodC5pZCksYXdhaXQgYS5mb2N1c0Jsb2NrKGIuaWQseil9fWVsc2UgaWYodGhpcy5jb21wb25lbnQuYmxvY2tzLmxlbmd0aD4xKXtsZXQgYj1vLmdldENvbnRlbnQ/by5nZXRDb250ZW50KCk6dC5jb250ZW50O2lmKGI9PT0iInx8Yi50cmltKCk9PT0iIil7ZS5wcmV2ZW50RGVmYXVsdCgpO2xldCB2PWEuZ2V0UHJldmlvdXNCbG9jayh0LmlkKTt2JiYoYS5yZW1vdmVCbG9jayh0LmlkKSx2LnR5cGUhPT0iZGl2aWRlciImJmF3YWl0IGEuZm9jdXNCbG9jayh2LmlkLCJlbmQiKSl9fX1hc3luYyBoYW5kbGVEZWxldGUoZSx0KXtsZXQgYT10aGlzLmNvbXBvbmVudC5ibG9ja09wZXJhdGlvbnM7aWYoWyJkaXZpZGVyIiwiaW1hZ2UiLCJ5b3V0dWJlIiwiYXR0YWNobWVudCJdLmluY2x1ZGVzKHQudHlwZSkpe2lmKGUucHJldmVudERlZmF1bHQoKSx0aGlzLmNvbXBvbmVudC5ibG9ja3MubGVuZ3RoPT09MSl7dGhpcy5jb21wb25lbnQuc2F2ZVRvSGlzdG9yeSghMSksYS5yZW1vdmVCbG9jayh0LmlkKTtsZXQgbT1hLmNyZWF0ZUJsb2NrKCJwYXJhZ3JhcGgiLCIiKTt0aGlzLmNvbXBvbmVudC5ibG9ja3M9W21dLHRoaXMuY29tcG9uZW50LnJlbmRlckJsb2Nrc1Byb2dyYW1tYXRpY2FsbHkoKSxhd2FpdCBhLmZvY3VzQmxvY2sobS5pZCwic3RhcnQiKSx0aGlzLmNvbXBvbmVudC51cGRhdGVWYWx1ZSgpO3JldHVybn10aGlzLmNvbXBvbmVudC5zYXZlVG9IaXN0b3J5KCExKTtsZXQgYj1hLmdldFByZXZpb3VzQmxvY2sodC5pZCksdj1hLmdldE5leHRCbG9jayh0LmlkKTthLnJlbW92ZUJsb2NrKHQuaWQpO2xldCB4PVsiZGl2aWRlciIsImltYWdlIiwieW91dHViZSIsImF0dGFjaG1lbnQiXTt2JiYheC5pbmNsdWRlcyh2LnR5cGUpP2F3YWl0IGEuZm9jdXNCbG9jayh2LmlkLCJzdGFydCIpOmImJiF4LmluY2x1ZGVzKGIudHlwZSk/YXdhaXQgYS5mb2N1c0Jsb2NrKGIuaWQsImVuZCIpOnY/YXdhaXQgYS5mb2N1c0Jsb2NrKHYuaWQpOmImJmF3YWl0IGEuZm9jdXNCbG9jayhiLmlkKTtyZXR1cm59bGV0IG89dGhpcy5jb21wb25lbnQuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihgW2RhdGEtYmxvY2staWQ9IiR7dC5pZH0iXWApPy5xdWVyeVNlbGVjdG9yKCJkZWVzLXd5c2l3eWctYmxvY2siKTtpZighb3x8IW8uc2hhZG93Um9vdClyZXR1cm47bGV0IGw9dC50eXBlPT09ImNvZGUiP28uc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIuY29kZS1lZGl0b3IiKTpvLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLmJsb2NrIik7aWYoIWwpcmV0dXJuO2xldCBwPW8uY2xvc2VzdCgiZGVlcy1pbnB1dC13eXNpd3lnIiksZD1bXTtwPy5zaGFkb3dSb290JiZkLnB1c2gocC5zaGFkb3dSb290KSxkLnB1c2goby5zaGFkb3dSb290KTtsZXQgdT0kdC5nZXRDdXJzb3JQb3NpdGlvbkluRWxlbWVudChsLC4uLmQpLGM9bC50ZXh0Q29udGVudD8ubGVuZ3RofHwwO2lmKHU9PT1jKXtsZXQgYj1hLmdldE5leHRCbG9jayh0LmlkKTtpZihiJiZbImRpdmlkZXIiLCJpbWFnZSIsInlvdXR1YmUiLCJhdHRhY2htZW50Il0uaW5jbHVkZXMoYi50eXBlKSl7ZS5wcmV2ZW50RGVmYXVsdCgpLGF3YWl0IGEuZm9jdXNCbG9jayhiLmlkKTtyZXR1cm59fX1hc3luYyBoYW5kbGVBcnJvd1VwKGUsdCl7bGV0IGE9WyJkaXZpZGVyIiwiaW1hZ2UiLCJ5b3V0dWJlIiwiYXR0YWNobWVudCJdO2lmKGEuaW5jbHVkZXModC50eXBlKSl7ZS5wcmV2ZW50RGVmYXVsdCgpO2xldCB1PXRoaXMuY29tcG9uZW50LmJsb2NrT3BlcmF0aW9ucyxjPXUuZ2V0UHJldmlvdXNCbG9jayh0LmlkKTtjJiZhd2FpdCB1LmZvY3VzQmxvY2soYy5pZCxhLmluY2x1ZGVzKGMudHlwZSk/dm9pZCAwOiJlbmQiKTtyZXR1cm59bGV0IG49dGhpcy5jb21wb25lbnQuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihgW2RhdGEtYmxvY2staWQ9IiR7dC5pZH0iXWApPy5xdWVyeVNlbGVjdG9yKCJkZWVzLXd5c2l3eWctYmxvY2siKTtpZighbnx8IW4uc2hhZG93Um9vdClyZXR1cm47bGV0IG89dC50eXBlPT09ImNvZGUiP24uc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIuY29kZS1lZGl0b3IiKTpuLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLmJsb2NrIik7aWYoIW8pcmV0dXJuO2xldCBsPW4uY2xvc2VzdCgiZGVlcy1pbnB1dC13eXNpd3lnIikscD1bXTtsPy5zaGFkb3dSb290JiZwLnB1c2gobC5zaGFkb3dSb290KSxwLnB1c2gobi5zaGFkb3dSb290KTtsZXQgZD0kdC5nZXRTZWxlY3Rpb25JbmZvKC4uLnApO2lmKCEoIWR8fCFkLmNvbGxhcHNlZCkmJnRoaXMuaXNPbkZpcnN0TGluZShkLG8sLi4ucCkpe2UucHJldmVudERlZmF1bHQoKTtsZXQgdT10aGlzLmNvbXBvbmVudC5ibG9ja09wZXJhdGlvbnMsYz11LmdldFByZXZpb3VzQmxvY2sodC5pZCk7aWYoYyl7bGV0IGI9WyJkaXZpZGVyIiwiaW1hZ2UiLCJ5b3V0dWJlIiwiYXR0YWNobWVudCJdO2F3YWl0IHUuZm9jdXNCbG9jayhjLmlkLGIuaW5jbHVkZXMoYy50eXBlKT92b2lkIDA6ImVuZCIpfX19YXN5bmMgaGFuZGxlQXJyb3dEb3duKGUsdCl7aWYoWyJkaXZpZGVyIiwiaW1hZ2UiLCJ5b3V0dWJlIiwiYXR0YWNobWVudCJdLmluY2x1ZGVzKHQudHlwZSkpe2UucHJldmVudERlZmF1bHQoKTtsZXQgdT10aGlzLmNvbXBvbmVudC5ibG9ja09wZXJhdGlvbnMsYz11LmdldE5leHRCbG9jayh0LmlkKTtpZihjKXtsZXQgYj1bImRpdmlkZXIiLCJpbWFnZSIsInlvdXR1YmUiLCJhdHRhY2htZW50Il07YXdhaXQgdS5mb2N1c0Jsb2NrKGMuaWQsYi5pbmNsdWRlcyhjLnR5cGUpP3ZvaWQgMDoic3RhcnQiKX1yZXR1cm59bGV0IG49dGhpcy5jb21wb25lbnQuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihgW2RhdGEtYmxvY2staWQ9IiR7dC5pZH0iXWApPy5xdWVyeVNlbGVjdG9yKCJkZWVzLXd5c2l3eWctYmxvY2siKTtpZighbnx8IW4uc2hhZG93Um9vdClyZXR1cm47bGV0IG89dC50eXBlPT09ImNvZGUiP24uc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIuY29kZS1lZGl0b3IiKTpuLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLmJsb2NrIik7aWYoIW8pcmV0dXJuO2xldCBsPW4uY2xvc2VzdCgiZGVlcy1pbnB1dC13eXNpd3lnIikscD1bXTtsPy5zaGFkb3dSb290JiZwLnB1c2gobC5zaGFkb3dSb290KSxwLnB1c2gobi5zaGFkb3dSb290KTtsZXQgZD0kdC5nZXRTZWxlY3Rpb25JbmZvKC4uLnApO2lmKCEoIWR8fCFkLmNvbGxhcHNlZCkmJnRoaXMuaXNPbkxhc3RMaW5lKGQsbywuLi5wKSl7ZS5wcmV2ZW50RGVmYXVsdCgpO2xldCB1PXRoaXMuY29tcG9uZW50LmJsb2NrT3BlcmF0aW9ucyxjPXUuZ2V0TmV4dEJsb2NrKHQuaWQpO2lmKGMpe2xldCBiPVsiZGl2aWRlciIsImltYWdlIiwieW91dHViZSIsImF0dGFjaG1lbnQiXTthd2FpdCB1LmZvY3VzQmxvY2soYy5pZCxiLmluY2x1ZGVzKGMudHlwZSk/dm9pZCAwOiJzdGFydCIpfX19Z2V0TGFzdFRleHROb2RlKGUpe2lmKGUubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERSlyZXR1cm4gZTtmb3IobGV0IHQ9ZS5jaGlsZE5vZGVzLmxlbmd0aC0xO3Q+PTA7dC0tKXtsZXQgYT10aGlzLmdldExhc3RUZXh0Tm9kZShlLmNoaWxkTm9kZXNbdF0pO2lmKGEpcmV0dXJuIGF9cmV0dXJuIG51bGx9YXN5bmMgaGFuZGxlQXJyb3dMZWZ0KGUsdCl7aWYoWyJkaXZpZGVyIiwiaW1hZ2UiLCJ5b3V0dWJlIiwiYXR0YWNobWVudCJdLmluY2x1ZGVzKHQudHlwZSkpe2UucHJldmVudERlZmF1bHQoKTtsZXQgYz10aGlzLmNvbXBvbmVudC5ibG9ja09wZXJhdGlvbnMsYj1jLmdldFByZXZpb3VzQmxvY2sodC5pZCk7aWYoYil7bGV0IHY9WyJkaXZpZGVyIiwiaW1hZ2UiLCJ5b3V0dWJlIiwiYXR0YWNobWVudCJdO2F3YWl0IGMuZm9jdXNCbG9jayhiLmlkLHYuaW5jbHVkZXMoYi50eXBlKT92b2lkIDA6ImVuZCIpfXJldHVybn1sZXQgbj10aGlzLmNvbXBvbmVudC5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKGBbZGF0YS1ibG9jay1pZD0iJHt0LmlkfSJdYCk/LnF1ZXJ5U2VsZWN0b3IoImRlZXMtd3lzaXd5Zy1ibG9jayIpO2lmKCFufHwhbi5zaGFkb3dSb290KXJldHVybjtsZXQgbz10LnR5cGU9PT0iY29kZSI/bi5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5jb2RlLWVkaXRvciIpOm4uc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIuYmxvY2siKTtpZighbylyZXR1cm47bGV0IGw9bi5jbG9zZXN0KCJkZWVzLWlucHV0LXd5c2l3eWciKSxwPVtdO2w/LnNoYWRvd1Jvb3QmJnAucHVzaChsLnNoYWRvd1Jvb3QpLHAucHVzaChuLnNoYWRvd1Jvb3QpO2xldCBkPSR0LmdldFNlbGVjdGlvbkluZm8oLi4ucCk7aWYoIWR8fCFkLmNvbGxhcHNlZClyZXR1cm47aWYoJHQuZ2V0Q3Vyc29yUG9zaXRpb25JbkVsZW1lbnQobywuLi5wKT09PTApe2xldCBjPXRoaXMuY29tcG9uZW50LmJsb2NrT3BlcmF0aW9ucyxiPWMuZ2V0UHJldmlvdXNCbG9jayh0LmlkKTtpZihiKXtlLnByZXZlbnREZWZhdWx0KCk7bGV0IHg9WyJkaXZpZGVyIiwiaW1hZ2UiLCJ5b3V0dWJlIiwiYXR0YWNobWVudCJdLmluY2x1ZGVzKGIudHlwZSk/dm9pZCAwOiJlbmQiO2F3YWl0IGMuZm9jdXNCbG9jayhiLmlkLHgpfX19YXN5bmMgaGFuZGxlQXJyb3dSaWdodChlLHQpe2lmKFsiZGl2aWRlciIsImltYWdlIiwieW91dHViZSIsImF0dGFjaG1lbnQiXS5pbmNsdWRlcyh0LnR5cGUpKXtlLnByZXZlbnREZWZhdWx0KCk7bGV0IGI9dGhpcy5jb21wb25lbnQuYmxvY2tPcGVyYXRpb25zLHY9Yi5nZXROZXh0QmxvY2sodC5pZCk7aWYodil7bGV0IHg9WyJkaXZpZGVyIiwiaW1hZ2UiLCJ5b3V0dWJlIiwiYXR0YWNobWVudCJdO2F3YWl0IGIuZm9jdXNCbG9jayh2LmlkLHguaW5jbHVkZXModi50eXBlKT92b2lkIDA6InN0YXJ0Iil9cmV0dXJufWxldCBuPXRoaXMuY29tcG9uZW50LnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWJsb2NrLWlkPSIke3QuaWR9Il1gKT8ucXVlcnlTZWxlY3RvcigiZGVlcy13eXNpd3lnLWJsb2NrIik7aWYoIW58fCFuLnNoYWRvd1Jvb3QpcmV0dXJuO2xldCBvPXQudHlwZT09PSJjb2RlIj9uLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLmNvZGUtZWRpdG9yIik6bi5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5ibG9jayIpO2lmKCFvKXJldHVybjtsZXQgbD1uLmNsb3Nlc3QoImRlZXMtaW5wdXQtd3lzaXd5ZyIpLHA9W107bD8uc2hhZG93Um9vdCYmcC5wdXNoKGwuc2hhZG93Um9vdCkscC5wdXNoKG4uc2hhZG93Um9vdCk7bGV0IGQ9JHQuZ2V0U2VsZWN0aW9uSW5mbyguLi5wKTtpZighZHx8IWQuY29sbGFwc2VkKXJldHVybjtsZXQgdT0kdC5nZXRDdXJzb3JQb3NpdGlvbkluRWxlbWVudChvLC4uLnApLGM9by50ZXh0Q29udGVudD8ubGVuZ3RofHwwO2lmKHU9PT1jKXtsZXQgYj10aGlzLmNvbXBvbmVudC5ibG9ja09wZXJhdGlvbnMsdj1iLmdldE5leHRCbG9jayh0LmlkKTtpZih2KXtlLnByZXZlbnREZWZhdWx0KCk7bGV0IHg9WyJkaXZpZGVyIiwiaW1hZ2UiLCJ5b3V0dWJlIiwiYXR0YWNobWVudCJdO2F3YWl0IGIuZm9jdXNCbG9jayh2LmlkLHguaW5jbHVkZXModi50eXBlKT92b2lkIDA6InN0YXJ0Iil9fX1pc09uRmlyc3RMaW5lKGUsdCwuLi5hKXt0cnl7bGV0IHI9JHQuY3JlYXRlUmFuZ2VGcm9tSW5mbyhlKSxuPXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbz1yLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyO28ubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERSYmKG89by5wYXJlbnRFbGVtZW50KTtsZXQgbD1vLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHA9bi50b3AtbC50b3A8NTtyZXR1cm4gby50ZXh0Q29udGVudCYmIW8udGV4dENvbnRlbnQuaW5jbHVkZXMoYApgKT8kdC5nZXRDdXJzb3JQb3NpdGlvbkluRWxlbWVudChvLC4uLmEpPT09MDpwfWNhdGNoKHIpe3JldHVybiBjb25zb2xlLndhcm4oIkVycm9yIGNoZWNraW5nIGZpcnN0IGxpbmU6IixyKSxlLnN0YXJ0T2Zmc2V0PT09MH19aXNPbkxhc3RMaW5lKGUsdCwuLi5hKXt0cnl7bGV0IHI9JHQuY3JlYXRlUmFuZ2VGcm9tSW5mbyhlKSxuPXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbz1yLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyO28ubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERSYmKG89by5wYXJlbnRFbGVtZW50KTtsZXQgcD1vLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbS1uLmJvdHRvbTw1O2lmKG8udGV4dENvbnRlbnQmJiFvLnRleHRDb250ZW50LmluY2x1ZGVzKGAKYCkpe2xldCBkPXQudGV4dENvbnRlbnQ/Lmxlbmd0aHx8MDtyZXR1cm4gJHQuZ2V0Q3Vyc29yUG9zaXRpb25JbkVsZW1lbnQodCwuLi5hKT09PWR9cmV0dXJuIHB9Y2F0Y2gocil7Y29uc29sZS53YXJuKCJFcnJvciBjaGVja2luZyBsYXN0IGxpbmU6IixyKTtsZXQgbj10LnRleHRDb250ZW50Py5sZW5ndGh8fDA7cmV0dXJuICR0LmdldEN1cnNvclBvc2l0aW9uSW5FbGVtZW50KHQsLi4uYSk9PT1ufX19fSk7dmFyIEcxZSxndmE9ZygoKT0+e0xsKCk7U3goKTtHMWU9Y2xhc3N7c3RhdGlje2kodGhpcywiV3lzaXd5Z0RyYWdEcm9wSGFuZGxlciIpfWNvbXBvbmVudDtkcmFnZ2VkQmxvY2tJZD1udWxsO2RyYWdPdmVyQmxvY2tJZD1udWxsO2RyYWdPdmVyUG9zaXRpb249bnVsbDtkcm9wSW5kaWNhdG9yPW51bGw7aW5pdGlhbE1vdXNlWT0wO2luaXRpYWxCbG9ja1k9MDtkcmFnZ2VkQmxvY2tFbGVtZW50PW51bGw7ZHJhZ2dlZEJsb2NrSGVpZ2h0PTA7ZHJhZ2dlZEJsb2NrQ29udGVudEhlaWdodD0wO2RyYWdnZWRCbG9ja01hcmdpblRvcD0wO2xhc3RVcGRhdGVUaW1lPTA7dXBkYXRlVGhyb3R0bGU9ODA7Y29uc3RydWN0b3IoZSl7dGhpcy5jb21wb25lbnQ9ZX1nZXQgZHJhZ1N0YXRlKCl7cmV0dXJue2RyYWdnZWRCbG9ja0lkOnRoaXMuZHJhZ2dlZEJsb2NrSWQsZHJhZ092ZXJCbG9ja0lkOnRoaXMuZHJhZ092ZXJCbG9ja0lkLGRyYWdPdmVyUG9zaXRpb246dGhpcy5kcmFnT3ZlclBvc2l0aW9ufX1oYW5kbGVEcmFnU3RhcnQoZSx0KXtpZighZS5kYXRhVHJhbnNmZXIpcmV0dXJuO3RoaXMuZHJhZ2dlZEJsb2NrSWQ9dC5pZCxlLmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkPSJtb3ZlIixlLmRhdGFUcmFuc2Zlci5zZXREYXRhKCJ0ZXh0L3BsYWluIix0LmlkKTtsZXQgYT1uZXcgSW1hZ2U7aWYoYS5zcmM9ImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEFRQUJBSUFBQUFVRUJBQUFBQ3dBQUFBQUFRQUJBQUFDQWtRQkFEcz0iLGUuZGF0YVRyYW5zZmVyLnNldERyYWdJbWFnZShhLDAsMCksdGhpcy5pbml0aWFsTW91c2VZPWUuY2xpZW50WSx0aGlzLmRyYWdnZWRCbG9ja0VsZW1lbnQ9dGhpcy5jb21wb25lbnQuZWRpdG9yQ29udGVudFJlZi5xdWVyeVNlbGVjdG9yKGBbZGF0YS1ibG9jay1pZD0iJHt0LmlkfSJdYCksdGhpcy5kcmFnZ2VkQmxvY2tFbGVtZW50KXtsZXQgcj10aGlzLmRyYWdnZWRCbG9ja0VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dGhpcy5pbml0aWFsQmxvY2tZPXIudG9wO2xldCBuPXRoaXMuZHJhZ2dlZEJsb2NrRWxlbWVudC5xdWVyeVNlbGVjdG9yKCIuYmxvY2siKTtpZihuKXtsZXQgbz1uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGw9d2luZG93LmdldENvbXB1dGVkU3R5bGUobik7dGhpcy5kcmFnZ2VkQmxvY2tNYXJnaW5Ub3A9cGFyc2VJbnQobC5tYXJnaW5Ub3ApfHwwLHRoaXMuZHJhZ2dlZEJsb2NrQ29udGVudEhlaWdodD1vLmhlaWdodH10aGlzLmRyYWdnZWRCbG9ja0hlaWdodD1yLmhlaWdodCxjb25zb2xlLmxvZygiRHJhZyBtZWFzdXJlbWVudHM6Iix7d3JhcHBlckhlaWdodDpyLmhlaWdodCxtYXJnaW5Ub3A6dGhpcy5kcmFnZ2VkQmxvY2tNYXJnaW5Ub3AsZHJvcEluZGljYXRvckhlaWdodDp0aGlzLmRyYWdnZWRCbG9ja0hlaWdodCxjb250ZW50SGVpZ2h0OnRoaXMuZHJhZ2dlZEJsb2NrQ29udGVudEhlaWdodCxibG9ja0lkOnQuaWR9KSx0aGlzLmNyZWF0ZURyb3BJbmRpY2F0b3IoKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJkcmFnb3ZlciIsdGhpcy5oYW5kbGVHbG9iYWxEcmFnT3ZlciksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ2VuZCIsdGhpcy5oYW5kbGVHbG9iYWxEcmFnRW5kKX10aGlzLmNvbXBvbmVudC5kcmFnZ2VkQmxvY2tJZD10aGlzLmRyYWdnZWRCbG9ja0lkLHNldFRpbWVvdXQoKCk9Pnt0aGlzLmRyYWdnZWRCbG9ja0VsZW1lbnQmJnRoaXMuZHJhZ2dlZEJsb2NrRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJkcmFnZ2luZyIpLHRoaXMuY29tcG9uZW50LmVkaXRvckNvbnRlbnRSZWYmJnRoaXMuY29tcG9uZW50LmVkaXRvckNvbnRlbnRSZWYuY2xhc3NMaXN0LmFkZCgiZHJhZ2dpbmciKX0sMTApfWhhbmRsZURyYWdFbmQoKXt0aGlzLmNvbXBvbmVudC5lZGl0b3JDb250ZW50UmVmLnF1ZXJ5U2VsZWN0b3JBbGwoIi5ibG9jay13cmFwcGVyIikuZm9yRWFjaCh0PT57dC5jbGFzc0xpc3QucmVtb3ZlKCJkcmFnZ2luZyIsIm1vdmUtdXAiLCJtb3ZlLWRvd24iKSx0LnN0eWxlLnJlbW92ZVByb3BlcnR5KCItLWRyYWctb2Zmc2V0IiksdC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgidHJhbnNmb3JtIil9KSx0aGlzLmNvbXBvbmVudC5lZGl0b3JDb250ZW50UmVmJiZ0aGlzLmNvbXBvbmVudC5lZGl0b3JDb250ZW50UmVmLmNsYXNzTGlzdC5yZW1vdmUoImRyYWdnaW5nIiksdGhpcy5kcmFnZ2VkQmxvY2tJZD1udWxsLHRoaXMuZHJhZ092ZXJCbG9ja0lkPW51bGwsdGhpcy5kcmFnT3ZlclBvc2l0aW9uPW51bGwsdGhpcy5kcmFnZ2VkQmxvY2tFbGVtZW50PW51bGwsdGhpcy5kcmFnZ2VkQmxvY2tIZWlnaHQ9MCx0aGlzLmRyYWdnZWRCbG9ja0NvbnRlbnRIZWlnaHQ9MCx0aGlzLmRyYWdnZWRCbG9ja01hcmdpblRvcD0wLHRoaXMuaW5pdGlhbEJsb2NrWT0wLHRoaXMuY29tcG9uZW50LmRyYWdnZWRCbG9ja0lkPW51bGwsdGhpcy5jb21wb25lbnQuZHJhZ092ZXJCbG9ja0lkPW51bGwsdGhpcy5jb21wb25lbnQuZHJhZ092ZXJQb3NpdGlvbj1udWxsfWhhbmRsZURyYWdPdmVyKGUsdCl7aWYoZS5wcmV2ZW50RGVmYXVsdCgpLCFlLmRhdGFUcmFuc2Zlcnx8IXRoaXMuZHJhZ2dlZEJsb2NrSWR8fHRoaXMuZHJhZ2dlZEJsb2NrSWQ9PT10LmlkKXJldHVybjtlLmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0PSJtb3ZlIjtsZXQgYT1lLmN1cnJlbnRUYXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscj1hLnRvcCthLmhlaWdodC8yO3RoaXMuZHJhZ092ZXJCbG9ja0lkPXQuaWQsdGhpcy5kcmFnT3ZlclBvc2l0aW9uPWUuY2xpZW50WTxyPyJiZWZvcmUiOiJhZnRlciIsdGhpcy5jb21wb25lbnQuZHJhZ092ZXJCbG9ja0lkPXRoaXMuZHJhZ092ZXJCbG9ja0lkLHRoaXMuY29tcG9uZW50LmRyYWdPdmVyUG9zaXRpb249dGhpcy5kcmFnT3ZlclBvc2l0aW9ufWhhbmRsZURyYWdMZWF2ZShlKXt0aGlzLmRyYWdPdmVyQmxvY2tJZD09PWUuaWQmJih0aGlzLmRyYWdPdmVyQmxvY2tJZD1udWxsLHRoaXMuZHJhZ092ZXJQb3NpdGlvbj1udWxsLHRoaXMuY29tcG9uZW50LmRyYWdPdmVyQmxvY2tJZD1udWxsLHRoaXMuY29tcG9uZW50LmRyYWdPdmVyUG9zaXRpb249bnVsbCl9aGFuZGxlRHJvcChlLHQpe2UucHJldmVudERlZmF1bHQoKSwhKCF0aGlzLmRyYWdnZWRCbG9ja0lkfHx0aGlzLmRyYWdnZWRCbG9ja0lkPT09dC5pZCkmJnRoaXMuY29tcG9uZW50LmhhbmRsZURyb3AoZSx0KX1pc0RyYWdnaW5nKGUpe3JldHVybiB0aGlzLmRyYWdnZWRCbG9ja0lkPT09ZX1pc0RyYWdPdmVyKGUpe3JldHVybiB0aGlzLmRyYWdPdmVyQmxvY2tJZD09PWV9Z2V0RHJhZ092ZXJDbGFzc2VzKGUpe3JldHVybiB0aGlzLmlzRHJhZ092ZXIoZSk/dGhpcy5kcmFnT3ZlclBvc2l0aW9uPT09ImJlZm9yZSI/ImRyYWctb3Zlci1iZWZvcmUiOiJkcmFnLW92ZXItYWZ0ZXIiOiIifWNyZWF0ZURyb3BJbmRpY2F0b3IoKXt0aGlzLmRyb3BJbmRpY2F0b3I9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5kcm9wSW5kaWNhdG9yLmNsYXNzTmFtZT0iZHJvcC1pbmRpY2F0b3IiLHRoaXMuZHJvcEluZGljYXRvci5zdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLmNvbXBvbmVudC5lZGl0b3JDb250ZW50UmVmLmFwcGVuZENoaWxkKHRoaXMuZHJvcEluZGljYXRvcil9aGFuZGxlR2xvYmFsRHJhZ092ZXI9aShlPT57aWYoZS5wcmV2ZW50RGVmYXVsdCgpLCF0aGlzLmRyYWdnZWRCbG9ja0VsZW1lbnQpcmV0dXJuO2xldCB0PWUuY2xpZW50WS10aGlzLmluaXRpYWxNb3VzZVk7dGhpcy5kcmFnZ2VkQmxvY2tFbGVtZW50LnN0eWxlLnRyYW5zZm9ybT1gdHJhbnNsYXRlWSgke3R9cHgpYDtsZXQgYT1EYXRlLm5vdygpO2EtdGhpcy5sYXN0VXBkYXRlVGltZTx0aGlzLnVwZGF0ZVRocm90dGxlfHwodGhpcy5sYXN0VXBkYXRlVGltZT1hLHRoaXMudXBkYXRlQmxvY2tQb3NpdGlvbnMoZS5jbGllbnRZKSl9LCJoYW5kbGVHbG9iYWxEcmFnT3ZlciIpO3VwZGF0ZUJsb2NrUG9zaXRpb25zKGUpe2xldCB0PUFycmF5LmZyb20odGhpcy5jb21wb25lbnQuZWRpdG9yQ29udGVudFJlZi5xdWVyeVNlbGVjdG9yQWxsKCIuYmxvY2std3JhcHBlciIpKSxhPXQuZmluZEluZGV4KG49Pm4uZ2V0QXR0cmlidXRlKCJkYXRhLWJsb2NrLWlkIik9PT10aGlzLmRyYWdnZWRCbG9ja0lkKTtpZihhPT09LTEpcmV0dXJuO3QuZm9yRWFjaChuPT57bi5nZXRBdHRyaWJ1dGUoImRhdGEtYmxvY2staWQiKSE9PXRoaXMuZHJhZ2dlZEJsb2NrSWQmJihuLmNsYXNzTGlzdC5yZW1vdmUoIm1vdmUtdXAiLCJtb3ZlLWRvd24iKSxuLnN0eWxlLnJlbW92ZVByb3BlcnR5KCItLWRyYWctb2Zmc2V0IikpfSk7bGV0IHI9dC5sZW5ndGg7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2lmKG49PT1hKWNvbnRpbnVlO2xldCBsPXRbbl0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscD1sLnRvcDtpZihlPHArbC5oZWlnaHQqLjUpe3I9bjticmVha319Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2lmKG49PT1hKWNvbnRpbnVlO2xldCBvPXRbbl07YTxyP24+YSYmbjxyJiYoby5jbGFzc0xpc3QuYWRkKCJtb3ZlLXVwIiksby5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1kcmFnLW9mZnNldCIsYCR7dGhpcy5kcmFnZ2VkQmxvY2tIZWlnaHR9cHhgKSk6YT5yJiZuPj1yJiZuPGEmJihvLmNsYXNzTGlzdC5hZGQoIm1vdmUtZG93biIpLG8uc3R5bGUuc2V0UHJvcGVydHkoIi0tZHJhZy1vZmZzZXQiLGAke3RoaXMuZHJhZ2dlZEJsb2NrSGVpZ2h0fXB4YCkpfXRoaXMudXBkYXRlRHJvcEluZGljYXRvcih0LHIsYSl9dXBkYXRlRHJvcEluZGljYXRvcihlLHQsYSl7aWYoIXRoaXMuZHJvcEluZGljYXRvcnx8IXRoaXMuZHJhZ2dlZEJsb2NrRWxlbWVudClyZXR1cm47dGhpcy5kcm9wSW5kaWNhdG9yLnN0eWxlLmRpc3BsYXk9ImJsb2NrIjtsZXQgcj10aGlzLmNvbXBvbmVudC5lZGl0b3JDb250ZW50UmVmLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49MCxvPVtdO2ZvcihsZXQgZD0wO2Q8ZS5sZW5ndGg7ZCsrKXtpZihkPT09YSljb250aW51ZTtsZXQgdT1lW2RdLGM9dS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxiPWMudG9wLXIudG9wLHY9Yy5ib3R0b20tci50b3AseD13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh1KS50cmFuc2Zvcm07aWYoeCYmeCE9PSJub25lIil7bGV0IGY9bmV3IERPTU1hdHJpeCh4KS5tNDI7Yis9Zix2Kz1mfW8ucHVzaCh7aW5kZXg6ZCx0b3A6Yixib3R0b206dn0pfW8uc29ydCgoZCx1KT0+ZC50b3AtdS50b3ApO2xldCBsPXQ7dD5hJiZsLS07bGV0IHA9MTY7aWYodGhpcy5kcmFnZ2VkQmxvY2tFbGVtZW50KXtsZXQgZD10aGlzLmNvbXBvbmVudC5ibG9ja3MuZmluZCh1PT51LmlkPT09dGhpcy5kcmFnZ2VkQmxvY2tJZCk7aWYoZCl7bGV0IHU9ZC50eXBlO3U9PT0iaGVhZGluZy0xInx8dT09PSJoZWFkaW5nLTIifHx1PT09ImhlYWRpbmctMyI/cD0yNDoodT09PSJjb2RlInx8dT09PSJxdW90ZSIpJiYocD0yMCl9fWlmKGw9PT0wKW49MDtlbHNlIGlmKGw+PW8ubGVuZ3RoKXtsZXQgZD1vW28ubGVuZ3RoLTFdO2QmJihuPWQuYm90dG9tLG4rPXApfWVsc2V7bGV0IGQ9b1tsLTFdO2QmJihuPWQuYm90dG9tLG4rPXApfXRoaXMuZHJvcEluZGljYXRvci5zdHlsZS5oZWlnaHQ9YCR7dGhpcy5kcmFnZ2VkQmxvY2tIZWlnaHR9cHhgLHRoaXMuZHJvcEluZGljYXRvci5zdHlsZS50b3A9YCR7TWF0aC5tYXgoMCxuKX1weGAsY29uc29sZS5sb2coIkRyb3AgaW5kaWNhdG9yIHVwZGF0ZToiLHt0YXJnZXRJbmRleDp0LGFkanVzdGVkVGFyZ2V0SW5kZXg6bCxkcmFnZ2VkSW5kZXg6YSx0b3BQb3NpdGlvbjpuLGhlaWdodDp0aGlzLmRyYWdnZWRCbG9ja0hlaWdodCxibG9ja01hcmdpbjpwLHZpc3VhbEJsb2NrczpvLm1hcChkPT4oe2luZGV4OmQuaW5kZXgsdG9wOmQudG9wLGJvdHRvbTpkLmJvdHRvbX0pKX0pfWhhbmRsZUdsb2JhbERyYWdFbmQ9aSgoKT0+e2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImRyYWdvdmVyIix0aGlzLmhhbmRsZUdsb2JhbERyYWdPdmVyKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJkcmFnZW5kIix0aGlzLmhhbmRsZUdsb2JhbERyYWdFbmQpLHRoaXMuZHJvcEluZGljYXRvciYmKHRoaXMuZHJvcEluZGljYXRvci5yZW1vdmUoKSx0aGlzLmRyb3BJbmRpY2F0b3I9bnVsbCksdGhpcy5kcmFnZ2VkQmxvY2tJZD9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pnt0aGlzLnBlcmZvcm1Ecm9wKCksdGhpcy5oYW5kbGVEcmFnRW5kKCl9KTp0aGlzLmhhbmRsZURyYWdFbmQoKX0sImhhbmRsZUdsb2JhbERyYWdFbmQiKTtwZXJmb3JtRHJvcCgpe2lmKCF0aGlzLmRyYWdnZWRCbG9ja0lkKXJldHVybjtsZXQgZT1BcnJheS5mcm9tKHRoaXMuY29tcG9uZW50LmVkaXRvckNvbnRlbnRSZWYucXVlcnlTZWxlY3RvckFsbCgiLmJsb2NrLXdyYXBwZXIiKSk7aWYoIWUuZmluZCh1PT51LmdldEF0dHJpYnV0ZSgiZGF0YS1ibG9jay1pZCIpPT09dGhpcy5kcmFnZ2VkQmxvY2tJZCkpcmV0dXJuO2xldCBhPWUubWFwKHU9PntsZXQgYz11LmdldEF0dHJpYnV0ZSgiZGF0YS1ibG9jay1pZCIpLGI9dS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx2PWIudG9wK2IuaGVpZ2h0LzI7cmV0dXJue2lkOmMsY2VudGVyWTp2LGVsZW1lbnQ6dX19KTthLnNvcnQoKHUsYyk9PnUuY2VudGVyWS1jLmNlbnRlclkpO2xldCByPWEubWFwKHU9PnUuaWQpLmZpbHRlcih1PT51IT09bnVsbCksbj1bLi4udGhpcy5jb21wb25lbnQuYmxvY2tzXSxvPW4uZmluZCh1PT51LmlkPT09dGhpcy5kcmFnZ2VkQmxvY2tJZCk7aWYoIW8pcmV0dXJuO2xldCBsPW4ubWFwKHU9PnUuaWQpO2lmKCEhci5ldmVyeSgodSxjKT0+dT09PWxbY10pKXJldHVybjtsZXQgZD1yLm1hcCh1PT5uLmZpbmQoYz0+Yy5pZD09PXUpKS5maWx0ZXIoQm9vbGVhbik7dGhpcy5jb21wb25lbnQuYmxvY2tzPWQsdGhpcy5jb21wb25lbnQucmVuZGVyQmxvY2tzUHJvZ3JhbW1hdGljYWxseSgpLHRoaXMuY29tcG9uZW50LnVwZGF0ZVZhbHVlKCksc2V0VGltZW91dCgoKT0+e28udHlwZSE9PSJkaXZpZGVyIiYmdGhpcy5jb21wb25lbnQuYmxvY2tPcGVyYXRpb25zLmZvY3VzQmxvY2soby5pZCl9LDEwMCl9fX0pO3ZhciBLMWUsYnZhPWcoKCk9PntMbCgpO0sxZT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJXeXNpd3lnSGlzdG9yeSIpfWhpc3Rvcnk9W107Y3VycmVudEluZGV4PS0xO21heEhpc3RvcnlTaXplPTUwO2xhc3RTYXZlVGltZT0wO3NhdmVEZWJvdW5jZU1zPTUwMDtjb25zdHJ1Y3Rvcigpe3RoaXMuaGlzdG9yeT1bXSx0aGlzLmN1cnJlbnRJbmRleD0tMX1zYXZlU3RhdGUoZSx0LGEpe2xldCByPURhdGUubm93KCk7aWYoci10aGlzLmxhc3RTYXZlVGltZTx0aGlzLnNhdmVEZWJvdW5jZU1zJiZ0aGlzLmN1cnJlbnRJbmRleD49MCl7dGhpcy5oaXN0b3J5W3RoaXMuY3VycmVudEluZGV4XT17YmxvY2tzOnRoaXMuY2xvbmVCbG9ja3MoZSksc2VsZWN0ZWRCbG9ja0lkOnQsY3Vyc29yUG9zaXRpb246YT97Li4uYX06dm9pZCAwLHRpbWVzdGFtcDpyfTtyZXR1cm59dGhpcy5jdXJyZW50SW5kZXg8dGhpcy5oaXN0b3J5Lmxlbmd0aC0xJiYodGhpcy5oaXN0b3J5PXRoaXMuaGlzdG9yeS5zbGljZSgwLHRoaXMuY3VycmVudEluZGV4KzEpKTtsZXQgbj17YmxvY2tzOnRoaXMuY2xvbmVCbG9ja3MoZSksc2VsZWN0ZWRCbG9ja0lkOnQsY3Vyc29yUG9zaXRpb246YT97Li4uYX06dm9pZCAwLHRpbWVzdGFtcDpyfTt0aGlzLmhpc3RvcnkucHVzaChuKSx0aGlzLmN1cnJlbnRJbmRleCsrLHRoaXMuaGlzdG9yeS5sZW5ndGg+dGhpcy5tYXhIaXN0b3J5U2l6ZSYmKHRoaXMuaGlzdG9yeS5zaGlmdCgpLHRoaXMuY3VycmVudEluZGV4LS0pLHRoaXMubGFzdFNhdmVUaW1lPXJ9c2F2ZUNoZWNrcG9pbnQoZSx0LGEpe3RoaXMubGFzdFNhdmVUaW1lPTAsdGhpcy5zYXZlU3RhdGUoZSx0LGEpfXVuZG8oKXtyZXR1cm4gdGhpcy5jYW5VbmRvKCk/KHRoaXMuY3VycmVudEluZGV4LS0sdGhpcy5jbG9uZVN0YXRlKHRoaXMuaGlzdG9yeVt0aGlzLmN1cnJlbnRJbmRleF0pKTpudWxsfXJlZG8oKXtyZXR1cm4gdGhpcy5jYW5SZWRvKCk/KHRoaXMuY3VycmVudEluZGV4KyssdGhpcy5jbG9uZVN0YXRlKHRoaXMuaGlzdG9yeVt0aGlzLmN1cnJlbnRJbmRleF0pKTpudWxsfWNhblVuZG8oKXtyZXR1cm4gdGhpcy5jdXJyZW50SW5kZXg+MH1jYW5SZWRvKCl7cmV0dXJuIHRoaXMuY3VycmVudEluZGV4PHRoaXMuaGlzdG9yeS5sZW5ndGgtMX1nZXRDdXJyZW50U3RhdGUoKXtyZXR1cm4gdGhpcy5jdXJyZW50SW5kZXg+PTAmJnRoaXMuY3VycmVudEluZGV4PHRoaXMuaGlzdG9yeS5sZW5ndGg/dGhpcy5jbG9uZVN0YXRlKHRoaXMuaGlzdG9yeVt0aGlzLmN1cnJlbnRJbmRleF0pOm51bGx9Y2xlYXIoKXt0aGlzLmhpc3Rvcnk9W10sdGhpcy5jdXJyZW50SW5kZXg9LTEsdGhpcy5sYXN0U2F2ZVRpbWU9MH1jbG9uZUJsb2NrcyhlKXtyZXR1cm4gZS5tYXAodD0+KHsuLi50LG1ldGFkYXRhOnQubWV0YWRhdGE/ey4uLnQubWV0YWRhdGF9OnZvaWQgMH0pKX1jbG9uZVN0YXRlKGUpe3JldHVybntibG9ja3M6dGhpcy5jbG9uZUJsb2NrcyhlLmJsb2Nrcyksc2VsZWN0ZWRCbG9ja0lkOmUuc2VsZWN0ZWRCbG9ja0lkLGN1cnNvclBvc2l0aW9uOmUuY3Vyc29yUG9zaXRpb24/ey4uLmUuY3Vyc29yUG9zaXRpb259OnZvaWQgMCx0aW1lc3RhbXA6ZS50aW1lc3RhbXB9fWdldEhpc3RvcnlJbmZvKCl7cmV0dXJue3NpemU6dGhpcy5oaXN0b3J5Lmxlbmd0aCxjdXJyZW50SW5kZXg6dGhpcy5jdXJyZW50SW5kZXgsY2FuVW5kbzp0aGlzLmNhblVuZG8oKSxjYW5SZWRvOnRoaXMuY2FuUmVkbygpfX19fSk7dmFyIGpRLEZ1LFFKYSx2dmE9ZygoKT0+e3BlKCk7TGwoKTtSdSgpO1hkKCk7JG50KCk7RG50KCk7WmcoKTtmcigpO2h0KCk7alE9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LEZ1PWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxRSmE9KCgpPT57bGV0IHM9W25lKCJkZWVzLXd5c2l3eWctYmxvY2siKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXTt2YXIgeT1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1d5c2l3eWdCbG9jayIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBNPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6T2JqZWN0fSldLHA9W0woe3R5cGU6Qm9vbGVhbn0pXSxjPVtMKHt0eXBlOk9iamVjdH0pXSx4PVtMKHt0eXBlOk9iamVjdH0pXSxqUSh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImJsb2NrIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJibG9jayJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LmJsb2NrLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3ouYmxvY2s9Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxvLGwpLGpRKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNTZWxlY3RlZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4iaXNTZWxlY3RlZCJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LmlzU2VsZWN0ZWQsImdldCIpLHNldDppKCh6LE4pPT57ei5pc1NlbGVjdGVkPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sZCx1KSxqUSh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImhhbmRsZXJzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJoYW5kbGVycyJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LmhhbmRsZXJzLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3ouaGFuZGxlcnM9Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxiLHYpLGpRKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToid3lzaXd5Z0NvbXBvbmVudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4id3lzaXd5Z0NvbXBvbmVudCJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56Lnd5c2l3eWdDb21wb25lbnQsImdldCIpLHNldDppKCh6LE4pPT57ei53eXNpd3lnQ29tcG9uZW50PU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sbSxmKSxqUShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpNfSxudWxsLHQpLHk9YT1lLnZhbHVlLE0mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6TX0pfWFzeW5jIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLl9zZWxlY3Rpb25IYW5kbGVyJiZkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJzZWxlY3Rpb25jaGFuZ2UiLHRoaXMuX3NlbGVjdGlvbkhhbmRsZXIpfSNlPUZ1KHRoaXMsbyx2b2lkIDApO2dldCBibG9jaygpe3JldHVybiB0aGlzLiNlfXNldCBibG9jayhNKXt0aGlzLiNlPU19I3Q9KEZ1KHRoaXMsbCksRnUodGhpcyxkLCExKSk7Z2V0IGlzU2VsZWN0ZWQoKXtyZXR1cm4gdGhpcy4jdH1zZXQgaXNTZWxlY3RlZChNKXt0aGlzLiN0PU19I2E9KEZ1KHRoaXMsdSksRnUodGhpcyxiLHZvaWQgMCkpO2dldCBoYW5kbGVycygpe3JldHVybiB0aGlzLiNhfXNldCBoYW5kbGVycyhNKXt0aGlzLiNhPU19I3M9KEZ1KHRoaXMsdiksRnUodGhpcyxtLHZvaWQgMCkpO2dldCB3eXNpd3lnQ29tcG9uZW50KCl7cmV0dXJuIHRoaXMuI3N9c2V0IHd5c2l3eWdDb21wb25lbnQoTSl7dGhpcy4jcz1NfWJsb2NrRWxlbWVudD0oRnUodGhpcyxmKSxudWxsKTtjb250ZW50SW5pdGlhbGl6ZWQ9ITE7bGFzdEtub3duQ3Vyc29yUG9zaXRpb249MDtsYXN0U2VsZWN0ZWRUZXh0PSIiO2hhbmRsZXJTdHlsZXNJbmplY3RlZD0hMTtzdGF0aWMgTk9OX0VESVRBQkxFX1RZUEVTPVsiaW1hZ2UiLCJkaXZpZGVyIiwieW91dHViZSJdO2luamVjdEhhbmRsZXJTdHlsZXMoKXtpZih0aGlzLmhhbmRsZXJTdHlsZXNJbmplY3RlZClyZXR1cm47dGhpcy5oYW5kbGVyU3R5bGVzSW5qZWN0ZWQ9ITA7bGV0IE09IiIsej1Bcy5nZXRBbGxUeXBlcygpO2ZvcihsZXQgTiBvZiB6KXtsZXQgQz1Bcy5nZXRIYW5kbGVyKE4pO0MmJihNKz1DLmdldFN0eWxlcygpKX1pZihNKXtsZXQgTj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO04udGV4dENvbnRlbnQ9TSx0aGlzLnNoYWRvd1Jvb3Q/LmFwcGVuZENoaWxkKE4pfX1zdGF0aWMgc3R5bGVzPVtxZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgLyogVE9ETzogTWlncmF0ZSBoYXJkY29kZWQgdmFsdWVzIHRvIC0tZGVlcy0qIENTUyB2YXJpYWJsZXMgKi8KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICAuYmxvY2sgewogICAgICAgIHBhZGRpbmc6IDRweCAwOwogICAgICAgIG1pbi1oZWlnaHQ6IDEuNmVtOwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwMDAwMDAiLCIjZTBlMGUwIil9OwogICAgICB9CgogICAgICAuYmxvY2s6ZW1wdHk6bm90KDpmb2N1cyk6OmJlZm9yZSB7CiAgICAgICAgY29udGVudDogYXR0cihkYXRhLXBsYWNlaG9sZGVyKTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM5OTkiLCIjNjY2Iil9OwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgLyogQmxvY2stc3BlY2lmaWMgc3R5bGVzIG1vdmVkIHRvIGhhbmRsZXJzICovCgoKICAgICAgLyogRm9ybWF0dGluZyBzdHlsZXMgKi8KICAgICAgLmJsb2NrIDppcyhiLCBzdHJvbmcpIHsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzAwMDAwMCIsIiNmZmZmZmYiKX07CiAgICAgIH0KCiAgICAgIC5ibG9jayA6aXMoaSwgZW0pIHsKICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgIH0KCiAgICAgIC5ibG9jayB1IHsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgICAgfQoKICAgICAgLmJsb2NrIHMgewogICAgICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoOwogICAgICB9CgogICAgICAuYmxvY2sgY29kZSB7CiAgICAgICAgZm9udC1mYW1pbHk6ICdTRiBNb25vJywgJ01vbmFjbycsICdJbmNvbnNvbGF0YScsICdGaXJhIENvZGUnLCBtb25vc3BhY2U7CiAgICAgICAgZm9udC1zaXplOiAwLjllbTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjA2KSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSIpfTsKICAgICAgICBwYWRkaW5nOiAycHggNnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNkMTQiLCIjZmY2YjZiIil9OwogICAgICB9CgogICAgICAuYmxvY2sgYSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDA2NmNjIiwiIzRkOTRmZiIpfTsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cyBlYXNlOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQoKICAgICAgLmJsb2NrIGE6aG92ZXIgewogICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICR7aC5iZFRoZW1lKCIjMDA2NmNjIiwiIzRkOTRmZiIpfTsKICAgICAgfQoKICAgICAgLyogQ29kZSBibG9jayBjb250YWluZXIgYW5kIGxhbmd1YWdlIHN0eWxlcyBtb3ZlZCB0byBoYW5kbGVyICovCgogICAgICAvKiBTZWxlY3Rpb24gc3R5bGVzICovCiAgICAgIC5ibG9jayA6OnNlbGVjdGlvbiB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMTAyLCAyMDQsIDAuMykiLCJyZ2JhKDc3LCAxNDgsIDI1NSwgMC4zKSIpfTsKICAgICAgICBjb2xvcjogaW5oZXJpdDsKICAgICAgfQoKCiAgICAgIC8qIFN0cmlrZSB0aHJvdWdoICovCiAgICAgIC5ibG9jayA6aXMocywgc3RyaWtlKSB7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7CiAgICAgICAgb3BhY2l0eTogMC43OwogICAgICB9CgoKICAgICAgLyogQmxvY2sgbWFyZ2luIGFkanVzdG1lbnRzIGJhc2VkIG9uIHR5cGUgKi8KICAgICAgOmhvc3QtY29udGV4dCguYmxvY2std3JhcHBlcjpmaXJzdC1jaGlsZCkgLmJsb2NrIHsKICAgICAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIDpob3N0LWNvbnRleHQoLmJsb2NrLXdyYXBwZXI6bGFzdC1jaGlsZCkgLmJsb2NrIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICB9CgogICAgICAvKiBTZWxlY3RlZCBzdGF0ZSAqLwogICAgICAuYmxvY2suc2VsZWN0ZWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDEwMiwgMjA0LCAwLjA1KSIsInJnYmEoNzcsIDE0OCwgMjU1LCAwLjA4KSIpfTsKICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAycHggJHtoLmJkVGhlbWUoInJnYmEoMCwgMTAyLCAyMDQsIDAuMikiLCJyZ2JhKDc3LCAxNDgsIDI1NSwgMC4yKSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgbWFyZ2luLWxlZnQ6IC04cHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAtOHB4OwogICAgICAgIHBhZGRpbmctbGVmdDogOHB4OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDhweDsKICAgICAgfQoKCgoKICAgIGBdO3Nob3VsZFVwZGF0ZShNKXtpZihNLmhhcygiaXNTZWxlY3RlZCIpJiZ0aGlzLmJsb2NrKXtsZXQgej1udWxsLEM9YC5ibG9jay4ke3RoaXMuYmxvY2sudHlwZX1gO3JldHVybiB6PXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihDKSx6JiYodGhpcy5pc1NlbGVjdGVkP3ouY2xhc3NMaXN0LmFkZCgic2VsZWN0ZWQiKTp6LmNsYXNzTGlzdC5yZW1vdmUoInNlbGVjdGVkIikpLCExfWlmKE0uaGFzKCJibG9jayIpJiZ0aGlzLmJsb2NrKXtsZXQgej1NLmdldCgiYmxvY2siKTtpZih6JiZ6LmlkJiZ6LnR5cGUmJnouaWQ9PT10aGlzLmJsb2NrLmlkJiZ6LnR5cGU9PT10aGlzLmJsb2NrLnR5cGUpcmV0dXJuITF9cmV0dXJuIXRoaXMuYmxvY2tFbGVtZW50fHx0aGlzLmJsb2NrPy50eXBlIT09dGhpcy5ibG9ja0VsZW1lbnQuZGF0YXNldC5ibG9ja1R5cGV9Zmlyc3RVcGRhdGVkKCl7dGhpcy5jb250ZW50SW5pdGlhbGl6ZWQ9ITAsdGhpcy5pbmplY3RIYW5kbGVyU3R5bGVzKCk7bGV0IE09dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIud3lzaXd5Zy1ibG9jay1jb250YWluZXIiKTtpZihNJiZ0aGlzLmJsb2NrJiYoTS5pbm5lckhUTUw9dGhpcy5yZW5kZXJCbG9ja0NvbnRlbnQoKSksdGhpcy5ibG9jayl7bGV0IE49QXMuZ2V0SGFuZGxlcih0aGlzLmJsb2NrLnR5cGUpO2lmKE4pe2xldCBDPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLnd5c2l3eWctYmxvY2stY29udGFpbmVyIik7QyYmTi5zZXR1cChDLHRoaXMuYmxvY2ssdGhpcy5oYW5kbGVycyk7cmV0dXJufX1sZXQgej10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5ibG9jayIpO2lmKHope3ouc2V0QXR0cmlidXRlKCJkYXRhLWJsb2NrLWlkIix0aGlzLmJsb2NrLmlkKSx6LnNldEF0dHJpYnV0ZSgiZGF0YS1ibG9jay10eXBlIix0aGlzLmJsb2NrLnR5cGUpLHouYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLEM9Pnt0aGlzLmhhbmRsZXJzPy5vbklucHV0Py4oQyk7bGV0IF89dGhpcy5nZXRDdXJzb3JQb3NpdGlvbih6KTtfIT09bnVsbCYmKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb249Xyl9KSx6LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLEM9PntsZXQgXz10aGlzLmdldEN1cnNvclBvc2l0aW9uKHopO18hPT1udWxsJiYodGhpcy5sYXN0S25vd25DdXJzb3JQb3NpdGlvbj1fKSx0aGlzLmhhbmRsZXJzPy5vbktleURvd24/LihDKX0pLHouYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCgpPT57dGhpcy5oYW5kbGVycz8ub25Gb2N1cz8uKCl9KSx6LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCgpPT57dGhpcy5oYW5kbGVycz8ub25CbHVyPy4oKX0pLHouYWRkRXZlbnRMaXN0ZW5lcigiY29tcG9zaXRpb25zdGFydCIsKCk9Pnt0aGlzLmhhbmRsZXJzPy5vbkNvbXBvc2l0aW9uU3RhcnQ/LigpfSksei5hZGRFdmVudExpc3RlbmVyKCJjb21wb3NpdGlvbmVuZCIsKCk9Pnt0aGlzLmhhbmRsZXJzPy5vbkNvbXBvc2l0aW9uRW5kPy4oKX0pLHouYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsQz0+e2xldCBfPXRoaXMuZ2V0Q3Vyc29yUG9zaXRpb24oeik7XyE9PW51bGwmJih0aGlzLmxhc3RLbm93bkN1cnNvclBvc2l0aW9uPV8pLHRoaXMuaGFuZGxlcnM/Lm9uTW91c2VVcD8uKEMpfSksei5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PntzZXRUaW1lb3V0KCgpPT57bGV0IEM9dGhpcy5nZXRDdXJzb3JQb3NpdGlvbih6KTtDIT09bnVsbCYmKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb249Qyl9LDApfSk7bGV0IE49aSgoKT0+e2xldCBDPXdpbmRvdy5nZXRTZWxlY3Rpb24oKTtpZighQ3x8Qy5yYW5nZUNvdW50PT09MClyZXR1cm47bGV0IF89Qy50b1N0cmluZygpO2lmKF8ubGVuZ3RoPT09MCl7dGhpcy5sYXN0U2VsZWN0ZWRUZXh0JiYodGhpcy5sYXN0U2VsZWN0ZWRUZXh0PSIiLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImJsb2NrLXRleHQtc2VsZWN0ZWQiLHtkZXRhaWw6e3RleHQ6IiIsYmxvY2tJZDp0aGlzLmJsb2NrLmlkLGhhc1NlbGVjdGlvbjohMX0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKSk7cmV0dXJufWxldCBPPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLmJsb2NrIik7aWYoIU8pcmV0dXJuO2xldCBFPXRoaXMuY2xvc2VzdCgiZGVlcy1pbnB1dC13eXNpd3lnIik/LnNoYWRvd1Jvb3QsSD1bXTtFJiZILnB1c2goRSksdGhpcy5zaGFkb3dSb290JiZILnB1c2godGhpcy5zaGFkb3dSb290KTtsZXQgaz0kdC5nZXRTZWxlY3Rpb25JbmZvKC4uLkgpO2lmKCFrKXJldHVybjtsZXQgUz0kdC5jb250YWluc0Fjcm9zc1NoYWRvd0RPTShPLGsuc3RhcnRDb250YWluZXIpLEk9JHQuY29udGFpbnNBY3Jvc3NTaGFkb3dET00oTyxrLmVuZENvbnRhaW5lcik7aWYoU3x8SSl7aWYoXyE9PXRoaXMubGFzdFNlbGVjdGVkVGV4dCl7dGhpcy5sYXN0U2VsZWN0ZWRUZXh0PV87bGV0IFA9JHQuY3JlYXRlUmFuZ2VGcm9tSW5mbyhrKSxSPVAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiYmxvY2stdGV4dC1zZWxlY3RlZCIse2RldGFpbDp7dGV4dDpfLnRyaW0oKSxibG9ja0lkOnRoaXMuYmxvY2suaWQscmFuZ2U6UCxyZWN0OlIsaGFzU2VsZWN0aW9uOiEwfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfX1lbHNlIHRoaXMubGFzdFNlbGVjdGVkVGV4dCYmKHRoaXMubGFzdFNlbGVjdGVkVGV4dD0iIix0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJibG9jay10ZXh0LXNlbGVjdGVkIix7ZGV0YWlsOnt0ZXh0OiIiLGJsb2NrSWQ6dGhpcy5ibG9jay5pZCxoYXNTZWxlY3Rpb246ITF9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSkpfSwiY2hlY2tTZWxlY3Rpb24iKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3Rpb25jaGFuZ2UiLE4pLHRoaXMuX3NlbGVjdGlvbkhhbmRsZXI9Tix6LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIiwoKT0+e2xldCBDPXRoaXMuZ2V0Q3Vyc29yUG9zaXRpb24oeik7QyE9PW51bGwmJih0aGlzLmxhc3RLbm93bkN1cnNvclBvc2l0aW9uPUMpfSksdGhpcy5ibG9jay5jb250ZW50JiYoei5pbm5lckhUTUw9dGhpcy5ibG9jay5jb250ZW50KX10aGlzLmJsb2NrRWxlbWVudD16fXJlbmRlcigpe3JldHVybiB0aGlzLmJsb2NrP01uYDxkaXYgY2xhc3M9Ind5c2l3eWctYmxvY2stY29udGFpbmVyIj48L2Rpdj5gOk1uYGB9cmVuZGVyQmxvY2tDb250ZW50KCl7aWYoIXRoaXMuYmxvY2spcmV0dXJuIiI7bGV0IE09QXMuZ2V0SGFuZGxlcih0aGlzLmJsb2NrLnR5cGUpO2lmKE0pcmV0dXJuIE0ucmVuZGVyKHRoaXMuYmxvY2ssdGhpcy5pc1NlbGVjdGVkKTtsZXQgej10aGlzLmlzU2VsZWN0ZWQ/IiBzZWxlY3RlZCI6IiI7cmV0dXJuYAogICAgICA8ZGl2CiAgICAgICAgY2xhc3M9ImJsb2NrICR7dGhpcy5ibG9jay50eXBlfSR7en0iCiAgICAgICAgY29udGVudGVkaXRhYmxlPSJ0cnVlIgogICAgICA+PC9kaXY+CiAgICBgfWZvY3VzKCl7bGV0IE09QXMuZ2V0SGFuZGxlcih0aGlzLmJsb2NrLnR5cGUpO2lmKE0mJk0uZm9jdXMpe2xldCBOPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLnd5c2l3eWctYmxvY2stY29udGFpbmVyIiksQz17c2hhZG93Um9vdDp0aGlzLnNoYWRvd1Jvb3QsY29tcG9uZW50OnRoaXN9O3JldHVybiBNLmZvY3VzKE4sQyl9aWYodGhpcy5ibG9jayYmeS5OT05fRURJVEFCTEVfVFlQRVMuaW5jbHVkZXModGhpcy5ibG9jay50eXBlKSl7bGV0IE49dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKGAuYmxvY2suJHt0aGlzLmJsb2NrLnR5cGV9YCk7TiYmTi5mb2N1cygpO3JldHVybn1sZXQgej10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5ibG9jayIpO3omJih6Lmhhc0F0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIil8fHouc2V0QXR0cmlidXRlKCJjb250ZW50ZWRpdGFibGUiLCJ0cnVlIiksei5mb2N1cygpLGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQhPT16JiZ0aGlzLnNoYWRvd1Jvb3Q/LmFjdGl2ZUVsZW1lbnQhPT16JiZQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT57ei5mb2N1cygpfSkpfWZvY3VzV2l0aEN1cnNvcihNPSJlbmQiKXtsZXQgej1Bcy5nZXRIYW5kbGVyKHRoaXMuYmxvY2sudHlwZSk7aWYoeiYmei5mb2N1c1dpdGhDdXJzb3Ipe2xldCBfPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLnd5c2l3eWctYmxvY2stY29udGFpbmVyIiksTz17c2hhZG93Um9vdDp0aGlzLnNoYWRvd1Jvb3QsY29tcG9uZW50OnRoaXN9O3JldHVybiB6LmZvY3VzV2l0aEN1cnNvcihfLE0sTyl9aWYodGhpcy5ibG9jayYmeS5OT05fRURJVEFCTEVfVFlQRVMuaW5jbHVkZXModGhpcy5ibG9jay50eXBlKSl7dGhpcy5mb2N1cygpO3JldHVybn1sZXQgTj10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5ibG9jayIpO2lmKCFOKXJldHVybjtOLmhhc0F0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIil8fE4uc2V0QXR0cmlidXRlKCJjb250ZW50ZWRpdGFibGUiLCJ0cnVlIiksTi5mb2N1cygpO2xldCBDPWkoKCk9PntNPT09InN0YXJ0Ij90aGlzLnNldEN1cnNvclRvU3RhcnQoKTpNPT09ImVuZCI/dGhpcy5zZXRDdXJzb3JUb0VuZCgpOnR5cGVvZiBNPT0ibnVtYmVyIiYmJHQuc2V0Q3Vyc29yUG9zaXRpb24oTixNKX0sInNldEN1cnNvciIpO2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT1OfHx0aGlzLnNoYWRvd1Jvb3Q/LmFjdGl2ZUVsZW1lbnQ9PT1OP0MoKTpQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT57KGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT1OfHx0aGlzLnNoYWRvd1Jvb3Q/LmFjdGl2ZUVsZW1lbnQ9PT1OKSYmQygpfSl9Z2V0Q3Vyc29yUG9zaXRpb24oTSl7bGV0IHo9QXMuZ2V0SGFuZGxlcih0aGlzLmJsb2NrLnR5cGUpO2lmKHomJnouZ2V0Q3Vyc29yUG9zaXRpb24pe2xldCBIPXtzaGFkb3dSb290OnRoaXMuc2hhZG93Um9vdCxjb21wb25lbnQ6dGhpc307cmV0dXJuIHouZ2V0Q3Vyc29yUG9zaXRpb24oTSxIKX1sZXQgQz10aGlzLmNsb3Nlc3QoImRlZXMtaW5wdXQtd3lzaXd5ZyIpPy5zaGFkb3dSb290LF89W107QyYmXy5wdXNoKEMpLHRoaXMuc2hhZG93Um9vdCYmXy5wdXNoKHRoaXMuc2hhZG93Um9vdCk7bGV0IE89JHQuZ2V0U2VsZWN0aW9uSW5mbyguLi5fKTtpZihjb25zb2xlLmxvZygiZ2V0Q3Vyc29yUG9zaXRpb246IFNlbGVjdGlvbiBpbmZvIGZyb20gc2hhZG93IERPTXM6Iix7c2VsZWN0aW9uSW5mbzpPLHNoYWRvd1Jvb3RzQ291bnQ6Xy5sZW5ndGh9KSwhTylyZXR1cm4gY29uc29sZS5sb2coImdldEN1cnNvclBvc2l0aW9uOiBObyBzZWxlY3Rpb24gZm91bmQiKSxudWxsO2lmKGNvbnNvbGUubG9nKCJnZXRDdXJzb3JQb3NpdGlvbjogUmFuZ2UgaW5mbzoiLHtzdGFydENvbnRhaW5lcjpPLnN0YXJ0Q29udGFpbmVyLHN0YXJ0T2Zmc2V0Ok8uc3RhcnRPZmZzZXQsY29sbGFwc2VkOk8uY29sbGFwc2VkLHN0YXJ0Q29udGFpbmVyVGV4dDpPLnN0YXJ0Q29udGFpbmVyLnRleHRDb250ZW50fSksIU0uY29udGFpbnMoTy5zdGFydENvbnRhaW5lcikpcmV0dXJuIGNvbnNvbGUubG9nKCJnZXRDdXJzb3JQb3NpdGlvbjogUmFuZ2Ugbm90IGluIGVsZW1lbnQiKSxudWxsO2xldCAkPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7JC5zZWxlY3ROb2RlQ29udGVudHMoTSksJC5zZXRFbmQoTy5zdGFydENvbnRhaW5lcixPLnN0YXJ0T2Zmc2V0KTtsZXQgRT0kLnRvU3RyaW5nKCkubGVuZ3RoO3JldHVybiBjb25zb2xlLmxvZygiZ2V0Q3Vyc29yUG9zaXRpb246IENhbGN1bGF0ZWQgcG9zaXRpb246Iix7cG9zaXRpb246RSxwcmVDYXJldFRleHQ6JC50b1N0cmluZygpLGVsZW1lbnRUZXh0Ok0udGV4dENvbnRlbnQsZWxlbWVudFRleHRMZW5ndGg6TS50ZXh0Q29udGVudD8ubGVuZ3RofSksRX1nZXRDb250ZW50KCl7bGV0IE09QXMuZ2V0SGFuZGxlcih0aGlzLmJsb2NrLnR5cGUpO2lmKE0mJk0uZ2V0Q29udGVudCl7bGV0IEM9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIud3lzaXd5Zy1ibG9jay1jb250YWluZXIiKSxfPXtzaGFkb3dSb290OnRoaXMuc2hhZG93Um9vdCxjb21wb25lbnQ6dGhpc307cmV0dXJuIE0uZ2V0Q29udGVudChDLF8pfWxldCB6PXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLmJsb2NrIik7aWYoIXopcmV0dXJuIiI7bGV0IE49ei5pbm5lckhUTUx8fCIiO3JldHVybiBjb25zb2xlLmxvZygiR2V0dGluZyBjb250ZW50IGZyb20gYmxvY2s6IixOKSxOfXNldENvbnRlbnQoTSl7bGV0IHo9QXMuZ2V0SGFuZGxlcih0aGlzLmJsb2NrLnR5cGUpO2lmKHomJnouc2V0Q29udGVudCl7bGV0IF89dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIud3lzaXd5Zy1ibG9jay1jb250YWluZXIiKSxPPXtzaGFkb3dSb290OnRoaXMuc2hhZG93Um9vdCxjb21wb25lbnQ6dGhpc307cmV0dXJuIHouc2V0Q29udGVudChfLE0sTyl9bGV0IE49dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIuYmxvY2siKTtpZighTilyZXR1cm47bGV0IEM9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PU58fHRoaXMuc2hhZG93Um9vdD8uYWN0aXZlRWxlbWVudD09PU47Ti5pbm5lckhUTUw9TSxDJiZOLmZvY3VzKCl9c2V0Q3Vyc29yVG9TdGFydCgpe2xldCBNPUFzLmdldEhhbmRsZXIodGhpcy5ibG9jay50eXBlKTtpZihNJiZNLnNldEN1cnNvclRvU3RhcnQpe2xldCBOPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLnd5c2l3eWctYmxvY2stY29udGFpbmVyIiksQz17c2hhZG93Um9vdDp0aGlzLnNoYWRvd1Jvb3QsY29tcG9uZW50OnRoaXN9O3JldHVybiBNLnNldEN1cnNvclRvU3RhcnQoTixDKX1sZXQgej10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5ibG9jayIpO3omJm1uLnNldEN1cnNvclRvU3RhcnQoeil9c2V0Q3Vyc29yVG9FbmQoKXtsZXQgTT1Bcy5nZXRIYW5kbGVyKHRoaXMuYmxvY2sudHlwZSk7aWYoTSYmTS5zZXRDdXJzb3JUb0VuZCl7bGV0IE49dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIud3lzaXd5Zy1ibG9jay1jb250YWluZXIiKSxDPXtzaGFkb3dSb290OnRoaXMuc2hhZG93Um9vdCxjb21wb25lbnQ6dGhpc307cmV0dXJuIE0uc2V0Q3Vyc29yVG9FbmQoTixDKX1sZXQgej10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5ibG9jayIpO3omJm1uLnNldEN1cnNvclRvRW5kKHopfWdldENvbnRleHRNZW51SXRlbXMoKXtpZighdGhpcy5ibG9ja3x8dGhpcy5ibG9jay50eXBlPT09ImRpdmlkZXIiKXJldHVybltdO2xldCBNPUlyLmdldFNsYXNoTWVudUl0ZW1zKCksej10aGlzLmJsb2NrLnR5cGUsTj10aGlzLnd5c2l3eWdDb21wb25lbnQsQz10aGlzLmJsb2NrLmlkLE89W3tuYW1lOiJDaGFuZ2UgVHlwZSIsaWNvbk5hbWU6InR5cGUiLHN1Ym1lbnU6TS5maWx0ZXIoJD0+JC50eXBlIT09eiYmJC50eXBlIT09ImRpdmlkZXIiKS5tYXAoJD0+KHtuYW1lOiQubGFiZWwsaWNvbk5hbWU6JC5pY29uLnJlcGxhY2UoImx1Y2lkZToiLCIiKSxhY3Rpb246aShhc3luYygpPT57aWYoTiYmTi5ibG9ja09wZXJhdGlvbnMpe2xldCBFPU4uYmxvY2tzLmZpbmQoSD0+SC5pZD09PUMpO0UmJihFLnR5cGU9JC50eXBlLEUuY29udGVudD1FLmNvbnRlbnR8fCIiLCQudHlwZT09PSJjb2RlIj9FLm1ldGFkYXRhPXtsYW5ndWFnZToidHlwZXNjcmlwdCJ9OiQudHlwZT09PSJsaXN0Ij9FLm1ldGFkYXRhPXtsaXN0VHlwZToiYnVsbGV0In06JC50eXBlPT09ImltYWdlIj8oRS5jb250ZW50PSIiLEUubWV0YWRhdGE9e3VybDoiIixsb2FkaW5nOiExfSk6JC50eXBlPT09InlvdXR1YmUiPyhFLmNvbnRlbnQ9IiIsRS5tZXRhZGF0YT17dmlkZW9JZDoiIix1cmw6IiJ9KTokLnR5cGU9PT0ibWFya2Rvd24iP0UubWV0YWRhdGE9e3Nob3dQcmV2aWV3OiExfTokLnR5cGU9PT0iaHRtbCI/RS5tZXRhZGF0YT17c2hvd1ByZXZpZXc6ITF9OiQudHlwZT09PSJhdHRhY2htZW50IiYmKEUuY29udGVudD0iIixFLm1ldGFkYXRhPXtmaWxlczpbXX0pLE4udXBkYXRlQmxvY2tFbGVtZW50KEMpLE4udXBkYXRlVmFsdWUoKSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntOLmJsb2NrT3BlcmF0aW9ucy5mb2N1c0Jsb2NrKEMpfSkpfX0sImFjdGlvbiIpfSkpfV07cmV0dXJuWyJpbWFnZSIsImRpdmlkZXIiLCJ5b3V0dWJlIiwiYXR0YWNobWVudCJdLmluY2x1ZGVzKHRoaXMuYmxvY2sudHlwZSl8fE8ucHVzaCh7ZGl2aWRlcjohMH0se25hbWU6IkN1dCIsaWNvbk5hbWU6InNjaXNzb3JzIixzaG9ydGN1dDoiQ21kK1giLGFjdGlvbjppKGFzeW5jKCk9Pntkb2N1bWVudC5leGVjQ29tbWFuZCgiY3V0Iil9LCJhY3Rpb24iKX0se25hbWU6IkNvcHkiLGljb25OYW1lOiJjb3B5IixzaG9ydGN1dDoiQ21kK0MiLGFjdGlvbjppKGFzeW5jKCk9Pntkb2N1bWVudC5leGVjQ29tbWFuZCgiY29weSIpfSwiYWN0aW9uIil9LHtuYW1lOiJQYXN0ZSIsaWNvbk5hbWU6ImNsaXBib2FyZCIsc2hvcnRjdXQ6IkNtZCtWIixhY3Rpb246aShhc3luYygpPT57ZG9jdW1lbnQuZXhlY0NvbW1hbmQoInBhc3RlIil9LCJhY3Rpb24iKX0pLE8ucHVzaCh7ZGl2aWRlcjohMH0se25hbWU6IkRlbGV0ZSBCbG9jayIsaWNvbk5hbWU6InRyYXNoMiIsYWN0aW9uOmkoYXN5bmMoKT0+e04mJk4uYmxvY2tPcGVyYXRpb25zJiZOLmJsb2NrT3BlcmF0aW9ucy5kZWxldGVCbG9jayhDKX0sImFjdGlvbiIpfSksT31nZXRTcGxpdENvbnRlbnQoKXtjb25zb2xlLmxvZygiZ2V0U3BsaXRDb250ZW50OiBTdGFydGluZy4uLiIpO2xldCBNPUFzLmdldEhhbmRsZXIodGhpcy5ibG9jay50eXBlKTtpZihjb25zb2xlLmxvZygiZ2V0U3BsaXRDb250ZW50OiBDaGVja2luZyBmb3IgaGFuZGxlciIse2Jsb2NrVHlwZTp0aGlzLmJsb2NrLnR5cGUsaGFzSGFuZGxlcjohIU0saGFzU3BsaXRNZXRob2Q6ISEoTSYmTS5nZXRTcGxpdENvbnRlbnQpfSksTSYmTS5nZXRTcGxpdENvbnRlbnQpe2xldCBLPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLnd5c2l3eWctYmxvY2stY29udGFpbmVyIik7Y29uc29sZS5sb2coImdldFNwbGl0Q29udGVudDogRm91bmQgY29udGFpbmVyIix7Y29udGFpbmVyOiEhSyxjb250YWluZXJIVE1MOks/LmlubmVySFRNTD8uc3Vic3RyaW5nKDAsMTAwKX0pO2xldCBWPXtzaGFkb3dSb290OnRoaXMuc2hhZG93Um9vdCxjb21wb25lbnQ6dGhpc307cmV0dXJuIE0uZ2V0U3BsaXRDb250ZW50KEssVil9bGV0IHo9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIuYmxvY2siKTtpZigheilyZXR1cm4gY29uc29sZS5sb2coImdldFNwbGl0Q29udGVudDogTm8gZWRpdGFibGUgZWxlbWVudCBmb3VuZCIpLG51bGw7Y29uc29sZS5sb2coImdldFNwbGl0Q29udGVudDogRWxlbWVudCBpbmZvOiIse2Jsb2NrVHlwZTp0aGlzLmJsb2NrLnR5cGUsaW5uZXJIVE1MOnouaW5uZXJIVE1MLHRleHRDb250ZW50OnoudGV4dENvbnRlbnQsdGV4dExlbmd0aDp6LnRleHRDb250ZW50Py5sZW5ndGh9KTtsZXQgQz10aGlzLmNsb3Nlc3QoImRlZXMtaW5wdXQtd3lzaXd5ZyIpPy5zaGFkb3dSb290LF89W107QyYmXy5wdXNoKEMpLHRoaXMuc2hhZG93Um9vdCYmXy5wdXNoKHRoaXMuc2hhZG93Um9vdCk7bGV0IE89JHQuZ2V0U2VsZWN0aW9uSW5mbyguLi5fKTtpZihjb25zb2xlLmxvZygiZ2V0U3BsaXRDb250ZW50OiBTZWxlY3Rpb24gaW5mbyBmcm9tIHNoYWRvdyBET01zOiIse3NlbGVjdGlvbkluZm86TyxzaGFkb3dSb290c0NvdW50Ol8ubGVuZ3RofSksIU8pe2lmKGNvbnNvbGUubG9nKCJnZXRTcGxpdENvbnRlbnQ6IE5vIHNlbGVjdGlvbiwgdXNpbmcgbGFzdCBrbm93biBwb3NpdGlvbjoiLHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb24pLHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb24hPT1udWxsKXtsZXQgSz16LnRleHRDb250ZW50fHwiIixWPU1hdGgubWluKHRoaXMubGFzdEtub3duQ3Vyc29yUG9zaXRpb24sSy5sZW5ndGgpO3JldHVybiBjb25zb2xlLmxvZygiZ2V0U3BsaXRDb250ZW50OiBTcGxpdHRpbmcgd2l0aCBsYXN0IGtub3duIHBvc2l0aW9uOiIse3BvczpWLGZ1bGxUZXh0TGVuZ3RoOksubGVuZ3RoLGJlZm9yZTpLLnN1YnN0cmluZygwLFYpLGFmdGVyOksuc3Vic3RyaW5nKFYpfSkse2JlZm9yZTpLLnN1YnN0cmluZygwLFYpLGFmdGVyOksuc3Vic3RyaW5nKFYpfX1yZXR1cm4gbnVsbH1pZihjb25zb2xlLmxvZygiZ2V0U3BsaXRDb250ZW50OiBTZWxlY3Rpb24gcmFuZ2U6Iix7c3RhcnRDb250YWluZXI6Ty5zdGFydENvbnRhaW5lcixzdGFydE9mZnNldDpPLnN0YXJ0T2Zmc2V0LHN0YXJ0Q29udGFpbmVySW5FbGVtZW50OnouY29udGFpbnMoTy5zdGFydENvbnRhaW5lcil9KSwhJHQuY29udGFpbnNBY3Jvc3NTaGFkb3dET00oeixPLnN0YXJ0Q29udGFpbmVyKSl7aWYoY29uc29sZS5sb2coImdldFNwbGl0Q29udGVudDogU2VsZWN0aW9uIG5vdCBpbiB0aGlzIGJsb2NrLCB1c2luZyBsYXN0IGtub3duIHBvc2l0aW9uOiIsdGhpcy5sYXN0S25vd25DdXJzb3JQb3NpdGlvbiksdGhpcy5sYXN0S25vd25DdXJzb3JQb3NpdGlvbiE9PW51bGwpe2xldCBLPXoudGV4dENvbnRlbnR8fCIiLFY9TWF0aC5taW4odGhpcy5sYXN0S25vd25DdXJzb3JQb3NpdGlvbixLLmxlbmd0aCk7cmV0dXJue2JlZm9yZTpLLnN1YnN0cmluZygwLFYpLGFmdGVyOksuc3Vic3RyaW5nKFYpfX1yZXR1cm4gbnVsbH1sZXQgJD10aGlzLmdldEN1cnNvclBvc2l0aW9uKHopO2lmKGNvbnNvbGUubG9nKCJnZXRTcGxpdENvbnRlbnQ6IEN1cnNvciBwb3NpdGlvbiBmb3IgSFRNTCBzcGxpdDoiLCQpLCQ9PT1udWxsfHwkPT09MClyZXR1cm4gY29uc29sZS5sb2coImdldFNwbGl0Q29udGVudDogQ3Vyc29yIGF0IHN0YXJ0IG9yIG51bGwsIG1vdmluZyBhbGwgY29udGVudCIpLHtiZWZvcmU6IiIsYWZ0ZXI6ei5pbm5lckhUTUx9O2xldCBFPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCksSD1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO0Uuc2V0U3RhcnQoeiwwKSxFLnNldEVuZChPLnN0YXJ0Q29udGFpbmVyLE8uc3RhcnRPZmZzZXQpLEguc2V0U3RhcnQoTy5zdGFydENvbnRhaW5lcixPLnN0YXJ0T2Zmc2V0KSxILnNldEVuZCh6LHouY2hpbGROb2Rlcy5sZW5ndGgpO2xldCBrPUUuY2xvbmVDb250ZW50cygpLFM9SC5jbG9uZUNvbnRlbnRzKCksST1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtJLmFwcGVuZENoaWxkKGspO2xldCBQPUkuaW5uZXJIVE1MO0kuaW5uZXJIVE1MPSIiLEkuYXBwZW5kQ2hpbGQoUyk7bGV0IFI9SS5pbm5lckhUTUw7cmV0dXJuIGNvbnNvbGUubG9nKCJnZXRTcGxpdENvbnRlbnQ6IEZpbmFsIHNwbGl0IHJlc3VsdDoiLHtjdXJzb3JQb3M6JCxiZWZvcmVIdG1sOlAsYmVmb3JlTGVuZ3RoOlAubGVuZ3RoLGJlZm9yZUh0bWxQcmV2aWV3OlAuc3Vic3RyaW5nKDAsMTAwKSsoUC5sZW5ndGg+MTAwPyIuLi4iOiIiKSxhZnRlckh0bWw6UixhZnRlckxlbmd0aDpSLmxlbmd0aCxhZnRlckh0bWxQcmV2aWV3OlIuc3Vic3RyaW5nKDAsMTAwKSsoUi5sZW5ndGg+MTAwPyIuLi4iOiIiKX0pLHtiZWZvcmU6UCxhZnRlcjpSfX1zdGF0aWN7RnUoYSx0KX19O3JldHVybiB5PWF9KSgpfSk7dmFyIEVudD1nKCgpPT57WTFlKCk7TGwoKTtTeCgpO3ExZSgpO0piYSgpO3pudCgpO1pnKCk7U250KCk7WGQoKTtSdSgpO0NudCgpO0RudCgpO2Z2YSgpO212YSgpO2d2YSgpO0xudCgpO2J2YSgpO2tudCgpO01udCgpO3Z2YSgpfSk7dmFyIGM0LFluLFoxZSxZMWU9ZygoKT0+e0VpKCk7WGJhKCk7UHUoKTtwZSgpO0VudCgpO2h0KCk7YzQ9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LFluPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxaMWU9KCgpPT57bGV0IHM9W25lKCJkZWVzLWlucHV0LXd5c2l3eWciKV0sZSx0PVtdLGEscj1CdCxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXSxPLCQ9W10sRT1bXTt2YXIgSD1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0lucHV0V3lzaXd5ZyIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBrPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6U3RyaW5nfSldLHA9W0woe3R5cGU6U3RyaW5nfSldLGM9W1koKV0seD1bWSgpXSx5PVtZKCldLE49W1koKV0sTz1bWSgpXSxjNCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InZhbHVlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJ2YWx1ZSJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLnZhbHVlLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MudmFsdWU9SX0sInNldCIpfSxtZXRhZGF0YTprfSxvLGwpLGM0KHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToib3V0cHV0Rm9ybWF0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJvdXRwdXRGb3JtYXQiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5vdXRwdXRGb3JtYXQsImdldCIpLHNldDppKChTLEkpPT57Uy5vdXRwdXRGb3JtYXQ9SX0sInNldCIpfSxtZXRhZGF0YTprfSxkLHUpLGM0KHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYmxvY2tzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJibG9ja3MiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5ibG9ja3MsImdldCIpLHNldDppKChTLEkpPT57Uy5ibG9ja3M9SX0sInNldCIpfSxtZXRhZGF0YTprfSxiLHYpLGM0KHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZHJhZ2dlZEJsb2NrSWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+ImRyYWdnZWRCbG9ja0lkImluIFMsImhhcyIpLGdldDppKFM9PlMuZHJhZ2dlZEJsb2NrSWQsImdldCIpLHNldDppKChTLEkpPT57Uy5kcmFnZ2VkQmxvY2tJZD1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LG0sZiksYzQodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJkcmFnT3ZlckJsb2NrSWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+ImRyYWdPdmVyQmxvY2tJZCJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLmRyYWdPdmVyQmxvY2tJZCwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLmRyYWdPdmVyQmxvY2tJZD1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LE0seiksYzQodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJkcmFnT3ZlclBvc2l0aW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJkcmFnT3ZlclBvc2l0aW9uImluIFMsImhhcyIpLGdldDppKFM9PlMuZHJhZ092ZXJQb3NpdGlvbiwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLmRyYWdPdmVyUG9zaXRpb249SX0sInNldCIpfSxtZXRhZGF0YTprfSxDLF8pLGM0KHRoaXMsbnVsbCxPLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VsZWN0ZWRUZXh0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJzZWxlY3RlZFRleHQiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5zZWxlY3RlZFRleHQsImdldCIpLHNldDppKChTLEkpPT57Uy5zZWxlY3RlZFRleHQ9SX0sInNldCIpfSxtZXRhZGF0YTprfSwkLEUpLGM0KG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOmt9LG51bGwsdCksSD1hPWUudmFsdWUsayYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTprfSl9c3RhdGljIGRlbW89WmJhO3N0YXRpYyBkZW1vR3JvdXBzPVsiSW5wdXQiLCJXb3Jrc3BhY2UiXTsjZT1Zbih0aGlzLG8sIiIpO2dldCB2YWx1ZSgpe3JldHVybiB0aGlzLiNlfXNldCB2YWx1ZShrKXt0aGlzLiNlPWt9I3Q9KFluKHRoaXMsbCksWW4odGhpcyxkLCJodG1sIikpO2dldCBvdXRwdXRGb3JtYXQoKXtyZXR1cm4gdGhpcy4jdH1zZXQgb3V0cHV0Rm9ybWF0KGspe3RoaXMuI3Q9a30jYT0oWW4odGhpcyx1KSxZbih0aGlzLGIsW3tpZDpJci5nZW5lcmF0ZUJsb2NrSWQoKSx0eXBlOiJwYXJhZ3JhcGgiLGNvbnRlbnQ6IiJ9XSkpO2dldCBibG9ja3MoKXtyZXR1cm4gdGhpcy4jYX1zZXQgYmxvY2tzKGspe3RoaXMuI2E9a31zZWxlY3RlZEJsb2NrSWQ9KFluKHRoaXMsdiksbnVsbCk7c2xhc2hNZW51PXdudC5nZXRJbnN0YW5jZSgpOyNzPVluKHRoaXMsbSxudWxsKTtnZXQgZHJhZ2dlZEJsb2NrSWQoKXtyZXR1cm4gdGhpcy4jc31zZXQgZHJhZ2dlZEJsb2NrSWQoayl7dGhpcy4jcz1rfSNpPShZbih0aGlzLGYpLFluKHRoaXMsTSxudWxsKSk7Z2V0IGRyYWdPdmVyQmxvY2tJZCgpe3JldHVybiB0aGlzLiNpfXNldCBkcmFnT3ZlckJsb2NrSWQoayl7dGhpcy4jaT1rfSNyPShZbih0aGlzLHopLFluKHRoaXMsQyxudWxsKSk7Z2V0IGRyYWdPdmVyUG9zaXRpb24oKXtyZXR1cm4gdGhpcy4jcn1zZXQgZHJhZ092ZXJQb3NpdGlvbihrKXt0aGlzLiNyPWt9Zm9ybWF0dGluZ01lbnU9KFluKHRoaXMsXyksX250LmdldEluc3RhbmNlKCkpOyNvPVluKHRoaXMsJCwiIik7Z2V0IHNlbGVjdGVkVGV4dCgpe3JldHVybiB0aGlzLiNvfXNldCBzZWxlY3RlZFRleHQoayl7dGhpcy4jbz1rfWVkaXRvckNvbnRlbnRSZWY9WW4odGhpcyxFKTtpc0NvbXBvc2luZz0hMTtibG9ja09wZXJhdGlvbnM7aW5wdXRIYW5kbGVyO2tleWJvYXJkSGFuZGxlcjtkcmFnRHJvcEhhbmRsZXI7aGlzdG9yeTtzdGF0aWMgc3R5bGVzPVtxZSwuLi5CdC5iYXNlU3R5bGVzLGguZGVmYXVsdFN0eWxlcyxRYmFdO2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLmJsb2NrT3BlcmF0aW9ucz1uZXcgajFlKHRoaXMpLHRoaXMuaW5wdXRIYW5kbGVyPW5ldyBVMWUodGhpcyksdGhpcy5rZXlib2FyZEhhbmRsZXI9bmV3IFcxZSh0aGlzKSx0aGlzLmRyYWdEcm9wSGFuZGxlcj1uZXcgRzFlKHRoaXMpLHRoaXMuaGlzdG9yeT1uZXcgSzFlfWFzeW5jIGNvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKX1hc3luYyBkaXNjb25uZWN0ZWRDYWxsYmFjaygpe2F3YWl0IHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5pbnB1dEhhbmRsZXI/LmRlc3Ryb3koKSx0aGlzLmJsdXJUaW1lb3V0JiYoY2xlYXJUaW1lb3V0KHRoaXMuYmx1clRpbWVvdXQpLHRoaXMuYmx1clRpbWVvdXQ9bnVsbCl9YXN5bmMgZmlyc3RVcGRhdGVkKCl7aWYodGhpcy52YWx1ZSYmdGhpcy52YWx1ZS50cmltKCkubGVuZ3RoPjApe2xldCBrPXRoaXMub3V0cHV0Rm9ybWF0PT09Imh0bWwiP0MyLnBhcnNlSHRtbFRvQmxvY2tzKHRoaXMudmFsdWUpOkMyLnBhcnNlTWFya2Rvd25Ub0Jsb2Nrcyh0aGlzLnZhbHVlKTtrLmxlbmd0aD4wJiYodGhpcy5ibG9ja3M9ayl9dGhpcy51cGRhdGVWYWx1ZSgpLHRoaXMuZWRpdG9yQ29udGVudFJlZj10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLmVkaXRvci1jb250ZW50IiksdGhpcy5lZGl0b3JDb250ZW50UmVmJiZ0aGlzLmVkaXRvckNvbnRlbnRSZWYuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGs9PnRoaXMuaGFuZGxlRWRpdG9yQ2xpY2soaykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiYmxvY2stdGV4dC1zZWxlY3RlZCIsKGs9PntpZighdGhpcy5zbGFzaE1lbnUudmlzaWJsZSYmay5kZXRhaWwuaGFzU2VsZWN0aW9uJiZrLmRldGFpbC50ZXh0Lmxlbmd0aD4wJiYodGhpcy5zZWxlY3RlZFRleHQ9ay5kZXRhaWwudGV4dCxrLmRldGFpbC5yZWN0KSl7bGV0IFM9e3g6ay5kZXRhaWwucmVjdC5sZWZ0K2suZGV0YWlsLnJlY3Qud2lkdGgvMix5Ok1hdGgubWF4KDQ1LGsuZGV0YWlsLnJlY3QudG9wLTQ1KX07dGhpcy5mb3JtYXR0aW5nTWVudS5zaG93KFMsYXN5bmMgST0+YXdhaXQgdGhpcy5hcHBseUZvcm1hdChJKSl9fSkpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsaz0+e2xldCBTPXRoaXMuZm9ybWF0dGluZ01lbnUuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLmZvcm1hdHRpbmctbWVudSIpO2lmKFMmJlMuY29udGFpbnMoay50YXJnZXQpKXJldHVybjtsZXQgST13aW5kb3cuZ2V0U2VsZWN0aW9uKCk7SSYmSS50b1N0cmluZygpLnRyaW0oKS5sZW5ndGg+MHx8dGhpcy5mb3JtYXR0aW5nTWVudS52aXNpYmxlJiZ0aGlzLmhpZGVGb3JtYXR0aW5nTWVudSgpfSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixrPT57bGV0IFM9ay50YXJnZXQ7IXRoaXMuY29udGFpbnMoUykmJiF0aGlzLnNoYWRvd1Jvb3Q/LmNvbnRhaW5zKFMpfHwoKGsubWV0YUtleXx8ay5jdHJsS2V5KSYmIWsuc2hpZnRLZXkmJmsua2V5PT09InoiPyhrLnByZXZlbnREZWZhdWx0KCksdGhpcy51bmRvKCkpOihrLm1ldGFLZXl8fGsuY3RybEtleSkmJmsuc2hpZnRLZXkmJmsua2V5PT09InoiJiYoay5wcmV2ZW50RGVmYXVsdCgpLHRoaXMucmVkbygpKSl9KSx0aGlzLmhpc3Rvcnkuc2F2ZVN0YXRlKHRoaXMuYmxvY2tzLHRoaXMuc2VsZWN0ZWRCbG9ja0lkKSx0aGlzLnJlbmRlckJsb2Nrc1Byb2dyYW1tYXRpY2FsbHkoKX1yZW5kZXJCbG9ja3NQcm9ncmFtbWF0aWNhbGx5KCl7dGhpcy5lZGl0b3JDb250ZW50UmVmJiYodGhpcy5lZGl0b3JDb250ZW50UmVmLmlubmVySFRNTD0iIix0aGlzLmJsb2Nrcy5mb3JFYWNoKGs9PntsZXQgUz10aGlzLmNyZWF0ZUJsb2NrRWxlbWVudChrKTt0aGlzLmVkaXRvckNvbnRlbnRSZWYuYXBwZW5kQ2hpbGQoUyl9KSl9Y3JlYXRlQmxvY2tFbGVtZW50KGspe2xldCBTPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2lmKFMuY2xhc3NOYW1lPSJibG9jay13cmFwcGVyIixTLnNldEF0dHJpYnV0ZSgiZGF0YS1ibG9jay1pZCIsay5pZCksay50eXBlIT09ImRpdmlkZXIiKXtsZXQgUD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtQLmNsYXNzTmFtZT0iZHJhZy1oYW5kbGUiLFAuZHJhZ2dhYmxlPSEwLFAuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0IixSPT50aGlzLmRyYWdEcm9wSGFuZGxlci5oYW5kbGVEcmFnU3RhcnQoUixrKSksUy5hcHBlbmRDaGlsZChQKX1sZXQgST1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkZWVzLXd5c2l3eWctYmxvY2siKTtyZXR1cm4gSS5ibG9jaz1rLEkuaXNTZWxlY3RlZD10aGlzLnNlbGVjdGVkQmxvY2tJZD09PWsuaWQsSS53eXNpd3lnQ29tcG9uZW50PXRoaXMsSS5oYW5kbGVycz17b25JbnB1dDppKFA9PnRoaXMuaW5wdXRIYW5kbGVyLmhhbmRsZUJsb2NrSW5wdXQoUCxrKSwib25JbnB1dCIpLG9uS2V5RG93bjppKFA9PnRoaXMua2V5Ym9hcmRIYW5kbGVyLmhhbmRsZUJsb2NrS2V5RG93bihQLGspLCJvbktleURvd24iKSxvbkZvY3VzOmkoKCk9PnRoaXMuaGFuZGxlQmxvY2tGb2N1cyhrKSwib25Gb2N1cyIpLG9uQmx1cjppKCgpPT50aGlzLmhhbmRsZUJsb2NrQmx1cihrKSwib25CbHVyIiksb25Db21wb3NpdGlvblN0YXJ0OmkoKCk9PnRoaXMuaXNDb21wb3Npbmc9ITAsIm9uQ29tcG9zaXRpb25TdGFydCIpLG9uQ29tcG9zaXRpb25FbmQ6aSgoKT0+dGhpcy5pc0NvbXBvc2luZz0hMSwib25Db21wb3NpdGlvbkVuZCIpLG9uTW91c2VVcDppKFA9PnRoaXMuaGFuZGxlVGV4dFNlbGVjdGlvbihQKSwib25Nb3VzZVVwIiksb25SZXF1ZXN0VXBkYXRlOmkoKCk9PnRoaXMudXBkYXRlQmxvY2tFbGVtZW50KGsuaWQpLCJvblJlcXVlc3RVcGRhdGUiKX0sUy5hcHBlbmRDaGlsZChJKSxTLmFkZEV2ZW50TGlzdGVuZXIoImRyYWdvdmVyIixQPT50aGlzLmRyYWdEcm9wSGFuZGxlci5oYW5kbGVEcmFnT3ZlcihQLGspKSxTLmFkZEV2ZW50TGlzdGVuZXIoImRyb3AiLFA9PnRoaXMuZHJhZ0Ryb3BIYW5kbGVyLmhhbmRsZURyb3AoUCxrKSksUy5hZGRFdmVudExpc3RlbmVyKCJkcmFnbGVhdmUiLCgpPT50aGlzLmRyYWdEcm9wSGFuZGxlci5oYW5kbGVEcmFnTGVhdmUoaykpLFN9dXBkYXRlQmxvY2tFbGVtZW50KGspe2xldCBTPXRoaXMuYmxvY2tzLmZpbmQoUj0+Ui5pZD09PWspO2lmKCFTKXJldHVybjtsZXQgST10aGlzLmVkaXRvckNvbnRlbnRSZWYucXVlcnlTZWxlY3RvcihgW2RhdGEtYmxvY2staWQ9IiR7a30iXWApO2lmKCFJKXJldHVybjtsZXQgUD10aGlzLmNyZWF0ZUJsb2NrRWxlbWVudChTKTtJLnJlcGxhY2VXaXRoKFApfXJlbmRlcigpe3JldHVybiBNbmAKICAgICAgPGRlZXMtbGFiZWwKICAgICAgICAubGFiZWw9IiR7dGhpcy5sYWJlbH0iCiAgICAgICAgLmluZm9UZXh0PSIke3RoaXMuaW5mb1RleHR9IgogICAgICAgIC5yZXF1aXJlZD0iJHt0aGlzLnJlcXVpcmVkfSIKICAgICAgPjwvZGVlcy1sYWJlbD4KICAgICAgPGRpdiBjbGFzcz0id3lzaXd5Zy1jb250YWluZXIiPgogICAgICAgIDxkaXYKICAgICAgICAgIGNsYXNzPSJlZGl0b3ItY29udGVudCAke3RoaXMuZHJhZ2dlZEJsb2NrSWQ/ImRyYWdnaW5nIjoiIn0iCiAgICAgICAgICBpZD0iZWRpdG9yLWNvbnRlbnQiCiAgICAgICAgPgogICAgICAgICAgPCEtLSBCbG9ja3Mgd2lsbCBiZSByZW5kZXJlZCBwcm9ncmFtbWF0aWNhbGx5IC0tPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgJHt0aGlzLnJlbmRlckRlc2NyaXB0aW9uKCl9CiAgICBgfWhhbmRsZVNsYXNoTWVudUtleWJvYXJkKGspe3N3aXRjaChrLmtleSl7Y2FzZSJBcnJvd0Rvd24iOmsucHJldmVudERlZmF1bHQoKSx0aGlzLnNsYXNoTWVudS5uYXZpZ2F0ZSgiZG93biIpO2JyZWFrO2Nhc2UiQXJyb3dVcCI6ay5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuc2xhc2hNZW51Lm5hdmlnYXRlKCJ1cCIpO2JyZWFrO2Nhc2UiRW50ZXIiOmsucHJldmVudERlZmF1bHQoKSx0aGlzLnNsYXNoTWVudS5zZWxlY3RDdXJyZW50KCk7YnJlYWs7Y2FzZSJFc2NhcGUiOmsucHJldmVudERlZmF1bHQoKSx0aGlzLmNsb3NlU2xhc2hNZW51KCEwKTticmVha319Y2xvc2VTbGFzaE1lbnUoaz0hMSl7aWYoayYmdGhpcy5zZWxlY3RlZEJsb2NrSWQpe2xldCBTPXRoaXMuYmxvY2tzLmZpbmQoST0+SS5pZD09PXRoaXMuc2VsZWN0ZWRCbG9ja0lkKTtpZihTKXtsZXQgUD10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgW2RhdGEtYmxvY2staWQ9IiR7Uy5pZH0iXWApPy5xdWVyeVNlbGVjdG9yKCJkZWVzLXd5c2l3eWctYmxvY2siKTtpZihQKXtsZXQgUj1QLmdldENvbnRlbnQoKTtpZihSLnN0YXJ0c1dpdGgoIi8iKSl7bGV0IEs9Ui5yZXBsYWNlKC9eXC9bXlxzXSpccyovLCIiKS50cmltKCk7UC5zZXRDb250ZW50KEspLFMuY29udGVudD1LLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e1AuZm9jdXNXaXRoQ3Vyc29yKDApfSl9fX19dGhpcy5zbGFzaE1lbnUuaGlkZSgpfWhhbmRsZUJsb2NrRm9jdXMoayl7dGhpcy5ibHVyVGltZW91dCYmKGNsZWFyVGltZW91dCh0aGlzLmJsdXJUaW1lb3V0KSx0aGlzLmJsdXJUaW1lb3V0PW51bGwpO2xldCBTPXRoaXMuc2VsZWN0ZWRCbG9ja0lkO2lmKHRoaXMuc2VsZWN0ZWRCbG9ja0lkPWsuaWQsUyE9PWsuaWQpe2lmKFMpe2xldCBLPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihgW2RhdGEtYmxvY2staWQ9IiR7U30iXWApPy5xdWVyeVNlbGVjdG9yKCJkZWVzLXd5c2l3eWctYmxvY2siKTtLJiYoSy5pc1NlbGVjdGVkPSExKX1sZXQgUD10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWJsb2NrLWlkPSIke2suaWR9Il1gKT8ucXVlcnlTZWxlY3RvcigiZGVlcy13eXNpd3lnLWJsb2NrIik7UCYmKFAuaXNTZWxlY3RlZD0hMCl9fWJsdXJUaW1lb3V0PW51bGw7aGFuZGxlQmxvY2tCbHVyKGspe2lmKHRoaXMuYmx1clRpbWVvdXQmJmNsZWFyVGltZW91dCh0aGlzLmJsdXJUaW1lb3V0KSx0aGlzLnNsYXNoTWVudS52aXNpYmxlKXJldHVybjtsZXQgST10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWJsb2NrLWlkPSIke2suaWR9Il1gKT8ucXVlcnlTZWxlY3RvcigiZGVlcy13eXNpd3lnLWJsb2NrIik7aWYoSSYmSS5nZXRDb250ZW50KXtsZXQgUD1JLmdldENvbnRlbnQoKTtrLmNvbnRlbnQhPT1QJiYoay5jb250ZW50PVApfXRoaXMuYmx1clRpbWVvdXQ9c2V0VGltZW91dCgoKT0+e3RoaXMuc2hhZG93Um9vdD8uYWN0aXZlRWxlbWVudD8uY2xhc3NMaXN0LmNvbnRhaW5zKCJibG9jayIpfHx0aGlzLnVwZGF0ZVZhbHVlKCl9LDEwMCl9aGFuZGxlRWRpdG9yQ2xpY2soayl7bGV0IFM9ay50YXJnZXQ7aWYodGhpcy5zbGFzaE1lbnUudmlzaWJsZSYmdGhpcy5jbG9zZVNsYXNoTWVudSghMCksUy5jbGFzc0xpc3QuY29udGFpbnMoImVkaXRvci1jb250ZW50Iikpe2xldCBJPXRoaXMuYmxvY2tzW3RoaXMuYmxvY2tzLmxlbmd0aC0xXTt0aGlzLmJsb2NrT3BlcmF0aW9ucy5mb2N1c0Jsb2NrKEkuaWQsSS50eXBlPT09ImRpdmlkZXIifHxJLnR5cGU9PT0iaW1hZ2UiP3ZvaWQgMDoiZW5kIil9fWNyZWF0ZU5ld0Jsb2NrKGs9InBhcmFncmFwaCIsUz0iIixJKXtyZXR1cm57aWQ6SXIuZ2VuZXJhdGVCbG9ja0lkKCksdHlwZTprLGNvbnRlbnQ6UywuLi5JJiZ7bWV0YWRhdGE6SX19fWFzeW5jIGluc2VydEJsb2NrQWZ0ZXIoayxTLEk9ITApe2xldCBQPXRoaXMuYmxvY2tzLmZpbmRJbmRleChLPT5LLmlkPT09ay5pZCk7dGhpcy5ibG9ja3M9Wy4uLnRoaXMuYmxvY2tzLnNsaWNlKDAsUCsxKSxTLC4uLnRoaXMuYmxvY2tzLnNsaWNlKFArMSldO2xldCBSPXRoaXMuZWRpdG9yQ29udGVudFJlZi5xdWVyeVNlbGVjdG9yKGBbZGF0YS1ibG9jay1pZD0iJHtrLmlkfSJdYCk7aWYoUil7bGV0IEs9dGhpcy5jcmVhdGVCbG9ja0VsZW1lbnQoUyk7Ui5pbnNlcnRBZGphY2VudEVsZW1lbnQoImFmdGVyZW5kIixLKX10aGlzLnVwZGF0ZVZhbHVlKCksSSYmUy50eXBlIT09ImRpdmlkZXIiJiYoYXdhaXQgbmV3IFByb21pc2UoSz0+c2V0VGltZW91dChLLDApKSxhd2FpdCB0aGlzLmJsb2NrT3BlcmF0aW9ucy5mb2N1c0Jsb2NrKFMuaWQsInN0YXJ0IikpfWFzeW5jIGluc2VydEJsb2NrKGspe2xldCBTPXRoaXMuYmxvY2tzLmZpbmQoUj0+Ui5pZD09PXRoaXMuc2VsZWN0ZWRCbG9ja0lkKTtpZighUyl7dGhpcy5jbG9zZVNsYXNoTWVudSgpO3JldHVybn1sZXQgUD10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgW2RhdGEtYmxvY2staWQ9IiR7Uy5pZH0iXWApPy5xdWVyeVNlbGVjdG9yKCJkZWVzLXd5c2l3eWctYmxvY2siKTtpZihQKXtsZXQgUj1QLmdldENvbnRlbnQoKTtpZihSLnN0YXJ0c1dpdGgoIi8iKSl7bGV0IEs9Ui5yZXBsYWNlKC9eXC9bXlxzXSpccyovLCIiKS50cmltKCk7UC5zZXRDb250ZW50KEspLFMuY29udGVudD1LfX1pZih0aGlzLmNsb3NlU2xhc2hNZW51KCExKSxrPT09ImNvZGUiJiYoUy5tZXRhZGF0YT17bGFuZ3VhZ2U6InR5cGVzY3JpcHQifSksUy50eXBlPWssUy5jb250ZW50PVMuY29udGVudHx8IiIsaz09PSJkaXZpZGVyIil7Uy5jb250ZW50PSIgIjtsZXQgUj10aGlzLmNyZWF0ZU5ld0Jsb2NrKCk7dGhpcy5pbnNlcnRCbG9ja0FmdGVyKFMsUil9ZWxzZSBrPT09Imxpc3QiPyhTLm1ldGFkYXRhPXtsaXN0VHlwZToiYnVsbGV0In0sUy5jb250ZW50PSIiKTprPT09ImltYWdlIj8oUy5jb250ZW50PSIiLFMubWV0YWRhdGE9e3VybDoiIixsb2FkaW5nOiExfSk6az09PSJ5b3V0dWJlIj8oUy5jb250ZW50PSIiLFMubWV0YWRhdGE9e3ZpZGVvSWQ6IiIsdXJsOiIifSk6az09PSJtYXJrZG93biI/Uy5tZXRhZGF0YT17c2hvd1ByZXZpZXc6ITF9Oms9PT0iaHRtbCI/Uy5tZXRhZGF0YT17c2hvd1ByZXZpZXc6ITF9Oms9PT0iYXR0YWNobWVudCI/KFMuY29udGVudD0iIixTLm1ldGFkYXRhPXtmaWxlczpbXX0pOlMuY29udGVudD1TLmNvbnRlbnR8fCIiO3RoaXMudXBkYXRlQmxvY2tFbGVtZW50KFMuaWQpLHRoaXMudXBkYXRlVmFsdWUoKSxhd2FpdCBuZXcgUHJvbWlzZShSPT5zZXRUaW1lb3V0KFIsMCkpLGs9PT0ibGlzdCI/KHRoaXMuYmxvY2tPcGVyYXRpb25zLmZvY3VzQmxvY2soUy5pZCwic3RhcnQiKSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntsZXQgSz10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWJsb2NrLWlkPSIke1MuaWR9Il1gKT8ucXVlcnlTZWxlY3RvcigiZGVlcy13eXNpd3lnLWJsb2NrIik7SyYmSy5mb2N1c0xpc3RJdGVtKCl9KSk6ayE9PSJkaXZpZGVyIiYmayE9PSJpbWFnZSImJmshPT0ieW91dHViZSImJmshPT0ibWFya2Rvd24iJiZrIT09Imh0bWwiJiZrIT09ImF0dGFjaG1lbnQiP3RoaXMuYmxvY2tPcGVyYXRpb25zLmZvY3VzQmxvY2soUy5pZCwic3RhcnQiKTooaz09PSJpbWFnZSJ8fGs9PT0ieW91dHViZSJ8fGs9PT0ibWFya2Rvd24ifHxrPT09Imh0bWwifHxrPT09ImF0dGFjaG1lbnQiKSYmdGhpcy5ibG9ja09wZXJhdGlvbnMuZm9jdXNCbG9jayhTLmlkKX11cGRhdGVWYWx1ZSgpe3RoaXMub3V0cHV0Rm9ybWF0PT09Imh0bWwiP3RoaXMudmFsdWU9QzIuZ2V0SHRtbE91dHB1dCh0aGlzLmJsb2Nrcyk6dGhpcy52YWx1ZT1DMi5nZXRNYXJrZG93bk91dHB1dCh0aGlzLmJsb2NrcyksdGhpcy5jaGFuZ2VTdWJqZWN0Lm5leHQodGhpcy52YWx1ZSksdGhpcy5zYXZlVG9IaXN0b3J5KCEwKX1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLnZhbHVlfXNldFZhbHVlKGspe3RoaXMudmFsdWU9ayx0aGlzLm91dHB1dEZvcm1hdD09PSJodG1sIj90aGlzLmJsb2Nrcz1DMi5wYXJzZUh0bWxUb0Jsb2NrcyhrKTp0aGlzLmJsb2Nrcz1DMi5wYXJzZU1hcmtkb3duVG9CbG9ja3MoayksdGhpcy5ibG9ja3MubGVuZ3RoPT09MCYmKHRoaXMuYmxvY2tzPVt7aWQ6SXIuZ2VuZXJhdGVCbG9ja0lkKCksdHlwZToicGFyYWdyYXBoIixjb250ZW50OiIifV0pLHRoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMudmFsdWUpLHRoaXMuZWRpdG9yQ29udGVudFJlZiYmdGhpcy5yZW5kZXJCbG9ja3NQcm9ncmFtbWF0aWNhbGx5KCl9ZXhwb3J0QmxvY2tzKCl7cmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5ibG9ja3MpKX1pbXBvcnRCbG9ja3Moayl7dGhpcy5ibG9ja3M9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShrKSksdGhpcy51cGRhdGVWYWx1ZSgpLHRoaXMuZWRpdG9yQ29udGVudFJlZiYmdGhpcy5yZW5kZXJCbG9ja3NQcm9ncmFtbWF0aWNhbGx5KCl9ZXhwb3J0QXNIdG1sKCl7cmV0dXJuIEMyLmdldEh0bWxPdXRwdXQodGhpcy5ibG9ja3MpfWV4cG9ydEFzTWFya2Rvd24oKXtyZXR1cm4gQzIuZ2V0TWFya2Rvd25PdXRwdXQodGhpcy5ibG9ja3MpfWV4cG9ydFN0YXRlKCl7cmV0dXJue2Jsb2Nrczp0aGlzLmV4cG9ydEJsb2NrcygpLG91dHB1dEZvcm1hdDp0aGlzLm91dHB1dEZvcm1hdH19aW1wb3J0U3RhdGUoayl7ay5vdXRwdXRGb3JtYXQmJih0aGlzLm91dHB1dEZvcm1hdD1rLm91dHB1dEZvcm1hdCksdGhpcy5pbXBvcnRCbG9ja3Moay5ibG9ja3MpfWhhbmRsZURyYWdFbmQoKXtpZih0aGlzLmRyYWdnZWRCbG9ja0lkKXtsZXQgUz10aGlzLmVkaXRvckNvbnRlbnRSZWYucXVlcnlTZWxlY3RvcihgW2RhdGEtYmxvY2staWQ9IiR7dGhpcy5kcmFnZ2VkQmxvY2tJZH0iXWApO1MmJlMuY2xhc3NMaXN0LnJlbW92ZSgiZHJhZ2dpbmciKX10aGlzLmVkaXRvckNvbnRlbnRSZWYucXVlcnlTZWxlY3RvckFsbCgiLmJsb2NrLXdyYXBwZXIiKS5mb3JFYWNoKFM9PntTLmNsYXNzTGlzdC5yZW1vdmUoImRyYWctb3Zlci1iZWZvcmUiLCJkcmFnLW92ZXItYWZ0ZXIiKX0pLHRoaXMuZWRpdG9yQ29udGVudFJlZi5jbGFzc0xpc3QucmVtb3ZlKCJkcmFnZ2luZyIpLHRoaXMuZHJhZ2dlZEJsb2NrSWQ9bnVsbCx0aGlzLmRyYWdPdmVyQmxvY2tJZD1udWxsLHRoaXMuZHJhZ092ZXJQb3NpdGlvbj1udWxsfWhhbmRsZURyb3AoayxTKXtpZihrLnByZXZlbnREZWZhdWx0KCksIXRoaXMuZHJhZ2dlZEJsb2NrSWR8fHRoaXMuZHJhZ2dlZEJsb2NrSWQ9PT1TLmlkKXJldHVybjtsZXQgST10aGlzLmJsb2Nrcy5maW5kSW5kZXgoVj0+Vi5pZD09PXRoaXMuZHJhZ2dlZEJsb2NrSWQpLFA9dGhpcy5ibG9ja3MuZmluZEluZGV4KFY9PlYuaWQ9PT1TLmlkKTtpZihJPT09LTF8fFA9PT0tMSlyZXR1cm47bGV0W1JdPXRoaXMuYmxvY2tzLnNwbGljZShJLDEpLEs9UDt0aGlzLmRyYWdPdmVyUG9zaXRpb249PT0iYWZ0ZXIiP0s9STxQP1A6UCsxOks9STxQP1AtMTpQLHRoaXMuYmxvY2tzLnNwbGljZShLLDAsUiksdGhpcy5yZW5kZXJCbG9ja3NQcm9ncmFtbWF0aWNhbGx5KCksdGhpcy51cGRhdGVWYWx1ZSgpLHRoaXMuaGFuZGxlRHJhZ0VuZCgpLHNldFRpbWVvdXQoKCk9PntsZXQgVj10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgW2RhdGEtYmxvY2staWQ9IiR7Ui5pZH0iXSAuYmxvY2tgKTtWJiZSLnR5cGUhPT0iZGl2aWRlciImJlYuZm9jdXMoKX0sMTAwKX1oYW5kbGVUZXh0U2VsZWN0aW9uKGspe3RoaXMuc2xhc2hNZW51LnZpc2libGV9dXBkYXRlRm9ybWF0dGluZ01lbnVQb3NpdGlvbigpe2xldCBrPVtdO3RoaXMuc2hhZG93Um9vdCYmay5wdXNoKHRoaXMuc2hhZG93Um9vdCksdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yQWxsKCIuYmxvY2std3JhcHBlciIpPy5mb3JFYWNoKFA9PntsZXQgUj1QLnF1ZXJ5U2VsZWN0b3IoImRlZXMtd3lzaXd5Zy1ibG9jayIpO1I/LnNoYWRvd1Jvb3QmJmsucHVzaChSLnNoYWRvd1Jvb3QpfSk7bGV0IEk9bDQuZ2V0U2VsZWN0aW9uQ29vcmRpbmF0ZXMoLi4uayk7SSYmdGhpcy5mb3JtYXR0aW5nTWVudS5zaG93KHt4OkkueCx5OkkueX0sYXN5bmMgUD0+YXdhaXQgdGhpcy5hcHBseUZvcm1hdChQKSl9aGlkZUZvcm1hdHRpbmdNZW51KCl7dGhpcy5mb3JtYXR0aW5nTWVudS5oaWRlKCksdGhpcy5zZWxlY3RlZFRleHQ9IiJ9YXN5bmMgYXBwbHlGb3JtYXQoayl7bGV0IFM9W107dGhpcy5zaGFkb3dSb290JiZTLnB1c2godGhpcy5zaGFkb3dSb290KSx0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3JBbGwoIi5ibG9jay13cmFwcGVyIik/LmZvckVhY2gobWU9PntsZXQgQj1tZS5xdWVyeVNlbGVjdG9yKCJkZWVzLXd5c2l3eWctYmxvY2siKTtCPy5zaGFkb3dSb290JiZTLnB1c2goQi5zaGFkb3dSb290KX0pO2xldCBQPSR0LmdldFNlbGVjdGlvbkluZm8oLi4uUyk7aWYoIVApcmV0dXJuO2xldCBSLEssVj10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgiLmJsb2NrLXdyYXBwZXIiKTtmb3IobGV0IG1lPTA7bWU8Vi5sZW5ndGg7bWUrKyl7bGV0IEI9VlttZV0sVT1CLnF1ZXJ5U2VsZWN0b3IoImRlZXMtd3lzaXd5Zy1ibG9jayIpO2lmKFU/LnNoYWRvd1Jvb3Qpe2xldCBoZT1VLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLmJsb2NrIik7aWYoaGUmJihoZS5jb250YWlucyhQLnN0YXJ0Q29udGFpbmVyKXx8aGUuY29udGFpbnMoUC5lbmRDb250YWluZXIpKSl7bGV0IEY9Qi5nZXRBdHRyaWJ1dGUoImRhdGEtYmxvY2staWQiKTtSPXRoaXMuYmxvY2tzLmZpbmQoaj0+ai5pZD09PUYpLEs9VTticmVha319fWlmKCFSfHwhSylyZXR1cm47bGV0IFc9JHQuY3JlYXRlUmFuZ2VGcm9tSW5mbyhQKTtpZihrPT09ImxpbmsiKXtsZXQgbWU9YXdhaXQgdGhpcy5zaG93TGlua0RpYWxvZygpO2lmKCFtZSl7Sy5mb2N1cygpO3JldHVybn1sNC5hcHBseUZvcm1hdChrLG1lLFcsUyl9ZWxzZSBsNC5hcHBseUZvcm1hdChrLHZvaWQgMCxXLFMpO2F3YWl0IG5ldyBQcm9taXNlKG1lPT5zZXRUaW1lb3V0KG1lLDEwKSksUi5jb250ZW50PUsuZ2V0Q29udGVudCgpLHRoaXMudXBkYXRlVmFsdWUoKSxLLmZvY3VzKCksaz09PSJsaW5rIj90aGlzLmhpZGVGb3JtYXR0aW5nTWVudSgpOnRoaXMuc2VsZWN0ZWRUZXh0PSIifWFzeW5jIHNob3dMaW5rRGlhbG9nKCl7cmV0dXJuIG5ldyBQcm9taXNlKGs9PntsZXQgUz1udWxsO2lzLmNyZWF0ZUFuZFNob3coe2hlYWRpbmc6IkFkZCBMaW5rIixjb250ZW50Ok1uYAogICAgICAgICAgPHN0eWxlPgogICAgICAgICAgICAubGluay1pbnB1dCB7CiAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgICAgcGFkZGluZzogMTJweDsKICAgICAgICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1saW5lLWJyaWdodCk7CiAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItaW5wdXQpOwogICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQpOwogICAgICAgICAgICAgIG1hcmdpbjogMTZweCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC5saW5rLWlucHV0OmZvY3VzIHsKICAgICAgICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZGVlcy1jb2xvci1wcmltYXJ5KTsKICAgICAgICAgICAgfQogICAgICAgICAgPC9zdHlsZT4KICAgICAgICAgIDxpbnB1dCAKICAgICAgICAgICAgY2xhc3M9ImxpbmstaW5wdXQiIAogICAgICAgICAgICB0eXBlPSJ1cmwiIAogICAgICAgICAgICBwbGFjZWhvbGRlcj0iaHR0cHM6Ly9leGFtcGxlLmNvbSIgCiAgICAgICAgICAgIEBrZXlkb3duPSIke0k9PntpZihJLmtleT09PSJFbnRlciIpe2xldCBQPUkudGFyZ2V0O1M9UC52YWx1ZTtsZXQgUj1QLmNsb3Nlc3QoImRlZXMtbW9kYWwiKTtpZihSKXtsZXQgSz1SLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5ib3R0b21CdXR0b246bGFzdC1jaGlsZCIpO0smJksuY2xpY2soKX19fX0iCiAgICAgICAgICAgIEBpbnB1dD0iJHtJPT57Uz1JLnRhcmdldC52YWx1ZX19IgogICAgICAgICAgLz4KICAgICAgICBgLG1lbnVPcHRpb25zOlt7bmFtZToiQ2FuY2VsIixhY3Rpb246aShhc3luYyBJPT57SS5kZXN0cm95KCksayhudWxsKX0sImFjdGlvbiIpfSx7bmFtZToiQWRkIExpbmsiLGFjdGlvbjppKGFzeW5jIEk9PntJLmRlc3Ryb3koKSxrKFMpfSwiYWN0aW9uIil9XX0pLHNldFRpbWVvdXQoKCk9PntsZXQgST1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkZWVzLW1vZGFsIC5saW5rLWlucHV0Iik7SSYmSS5mb2N1cygpfSwxMDApfSl9dW5kbygpe2xldCBrPXRoaXMuaGlzdG9yeS51bmRvKCk7ayYmdGhpcy5yZXN0b3JlU3RhdGUoayl9cmVkbygpe2xldCBrPXRoaXMuaGlzdG9yeS5yZWRvKCk7ayYmdGhpcy5yZXN0b3JlU3RhdGUoayl9cmVzdG9yZVN0YXRlKGspe3RoaXMuYmxvY2tzPWsuYmxvY2tzLHRoaXMuc2VsZWN0ZWRCbG9ja0lkPWsuc2VsZWN0ZWRCbG9ja0lkLHRoaXMucmVuZGVyQmxvY2tzUHJvZ3JhbW1hdGljYWxseSgpLGsuY3Vyc29yUG9zaXRpb24/c2V0VGltZW91dCgoKT0+e2xldCBJPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihgW2RhdGEtYmxvY2staWQ9IiR7ay5jdXJzb3JQb3NpdGlvbi5ibG9ja0lkfSJdYCk/LnF1ZXJ5U2VsZWN0b3IoImRlZXMtd3lzaXd5Zy1ibG9jayIpO0kmJkkuZm9jdXNXaXRoQ3Vyc29yKGsuY3Vyc29yUG9zaXRpb24ub2Zmc2V0KX0sNTApOmsuc2VsZWN0ZWRCbG9ja0lkJiZzZXRUaW1lb3V0KCgpPT57dGhpcy5ibG9ja09wZXJhdGlvbnMuZm9jdXNCbG9jayhrLnNlbGVjdGVkQmxvY2tJZCl9LDUwKSx0aGlzLnVwZGF0ZVZhbHVlKCl9c2F2ZVRvSGlzdG9yeShrPSEwKXtsZXQgUztpZih0aGlzLnNlbGVjdGVkQmxvY2tJZCl7bGV0IFA9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKGBbZGF0YS1ibG9jay1pZD0iJHt0aGlzLnNlbGVjdGVkQmxvY2tJZH0iXWApPy5xdWVyeVNlbGVjdG9yKCJkZWVzLXd5c2l3eWctYmxvY2siKTtpZihQJiZ0eXBlb2YgUC5nZXRDdXJzb3JQb3NpdGlvbj09ImZ1bmN0aW9uIil7bGV0IFI9UC5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIuYmxvY2siKTtpZihSKXtsZXQgSz1QLmdldEN1cnNvclBvc2l0aW9uKFIpO0shPT1udWxsJiYoUz17YmxvY2tJZDp0aGlzLnNlbGVjdGVkQmxvY2tJZCxvZmZzZXQ6S30pfX19az90aGlzLmhpc3Rvcnkuc2F2ZVN0YXRlKHRoaXMuYmxvY2tzLHRoaXMuc2VsZWN0ZWRCbG9ja0lkLFMpOnRoaXMuaGlzdG9yeS5zYXZlQ2hlY2twb2ludCh0aGlzLmJsb2Nrcyx0aGlzLnNlbGVjdGVkQmxvY2tJZCxTKX1zdGF0aWN7WW4oYSx0KX19O3JldHVybiBIPWF9KSgpfSk7dmFyIHh2YSx5dmE9ZygoKT0+e3BlKCk7SXQoKTtYMWUoKTt4bygpO3h2YT1pKCgpPT53YAogIDxkZWVzLWRlbW93cmFwcGVyPgogICAgPHN0eWxlPgogICAgICAke0pgCiAgICAgICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICAgIG1heC13aWR0aDogMTIwMHB4OwogICAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGRlZXMtcGFuZWwgewogICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZGVlcy1wYW5lbDpsYXN0LWNoaWxkIHsKICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5ncmlkLWxheW91dCB7CiAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOwogICAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsKICAgICAgICAgIC5ncmlkLWxheW91dCB7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAub3V0cHV0LXByZXZpZXcgewogICAgICAgICAgbWFyZ2luLXRvcDogMTZweDsKICAgICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAjZjNmNGY2OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgICAgY29sb3I6ICMzNzQxNTE7CiAgICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7CiAgICAgICAgICBtYXgtaGVpZ2h0OiAyMDBweDsKICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgfQogICAgICAgIAogICAgICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKICAgICAgICAgIC5vdXRwdXQtcHJldmlldyB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMyYzJjMmM7CiAgICAgICAgICAgIGNvbG9yOiAjZTRlNGU3OwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgYH0KICAgIDwvc3R5bGU+CiAgICAKICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjEuIEJhc2ljIFJpY2ggVGV4dCBFZGl0b3IifSAuc3VidGl0bGU9JHsiQSBmdWxsLWZlYXR1cmVkIHJpY2ggdGV4dCBlZGl0b3Igd2l0aCBmb3JtYXR0aW5nIHRvb2xiYXIifT4KICAgICAgICA8ZGVlcy1pbnB1dC1yaWNodGV4dCAKICAgICAgICAgIC5sYWJlbD0keyJBcnRpY2xlIENvbnRlbnQifSAKICAgICAgICAgIC52YWx1ZT0keyc8aDE+V2VsY29tZSB0byB0aGUgUmljaCBUZXh0IEVkaXRvciE8L2gxPjxwPlRoaXMgaXMgYSBmZWF0dXJlLXJpY2ggZWRpdG9yIGJ1aWx0IHdpdGggVGlwVGFwLiBZb3UgY2FuOjwvcD48dWw+PGxpPjxzdHJvbmc+Rm9ybWF0IHRleHQ8L3N0cm9uZz4gd2l0aCA8ZW0+dmFyaW91czwvZW0+IDx1PnN0eWxlczwvdT48L2xpPjxsaT5DcmVhdGUgZGlmZmVyZW50IGhlYWRpbmcgbGV2ZWxzPC9saT48bGk+QWRkIDxhIGhyZWY9Imh0dHBzOi8vZXhhbXBsZS5jb20iPmxpbmtzPC9hPiB0byBleHRlcm5hbCByZXNvdXJjZXM8L2xpPjxsaT5Xcml0ZSA8Y29kZT5pbmxpbmUgY29kZTwvY29kZT4gb3IgY29kZSBibG9ja3M8L2xpPjwvdWw+PGJsb2NrcXVvdGU+PHA+VXNlIHRoZSB0b29sYmFyIGFib3ZlIHRvIGV4cGxvcmUgYWxsIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnMgYXZhaWxhYmxlITwvcD48L2Jsb2NrcXVvdGU+PHA+U3RhcnQgdHlwaW5nIHRvIHNlZSB0aGUgbWFnaWMgaGFwcGVuLi4uPC9wPid9CiAgICAgICAgICAuZGVzY3JpcHRpb249JHsiVXNlIHRoZSB0b29sYmFyIHRvIGZvcm1hdCB5b3VyIGNvbnRlbnQgd2l0aCBoZWFkaW5ncywgbGlzdHMsIGxpbmtzLCBhbmQgbW9yZSJ9CiAgICAgICAgICAuc2hvd1dvcmRDb3VudD0keyEwfQogICAgICAgID48L2RlZXMtaW5wdXQtcmljaHRleHQ+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgICAgCiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyIyLiBXaXRoIFBsYWNlaG9sZGVyIn0gLnN1YnRpdGxlPSR7IkVtcHR5IGVkaXRvciB3aXRoIHBsYWNlaG9sZGVyIHRleHQifT4KICAgICAgICA8ZGVlcy1pbnB1dC1yaWNodGV4dCAKICAgICAgICAgIC5sYWJlbD0keyJCbG9nIFBvc3QifSAKICAgICAgICAgIC5wbGFjZWhvbGRlcj0keyJTdGFydCB3cml0aW5nIHlvdXIgYmxvZyBwb3N0IGhlcmUuLi4ifQogICAgICAgICAgLnNob3dXb3JkQ291bnQ9JHshMH0KICAgICAgICA+PC9kZWVzLWlucHV0LXJpY2h0ZXh0PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICAgIAogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiMy4gRGlmZmVyZW50IEhlaWdodHMifSAuc3VidGl0bGU9JHsiRWRpdG9ycyB3aXRoIGRpZmZlcmVudCBtaW5pbXVtIGhlaWdodHMgZm9yIHZhcmlvdXMgdXNlIGNhc2VzIn0+CiAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZC1sYXlvdXQiPgogICAgICAgICAgPGRlZXMtaW5wdXQtcmljaHRleHQgCiAgICAgICAgICAgIC5sYWJlbD0keyJTaG9ydCBOb3RlIn0gCiAgICAgICAgICAgIC5taW5IZWlnaHQ9JHsxNTB9CiAgICAgICAgICAgIC5wbGFjZWhvbGRlcj0keyJRdWljayBub3RlLi4uIn0KICAgICAgICAgICAgLnNob3dXb3JkQ291bnQ9JHshMX0KICAgICAgICAgID48L2RlZXMtaW5wdXQtcmljaHRleHQ+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWlucHV0LXJpY2h0ZXh0IAogICAgICAgICAgICAubGFiZWw9JHsiRXh0ZW5kZWQgQ29udGVudCJ9IAogICAgICAgICAgICAubWluSGVpZ2h0PSR7MzAwfQogICAgICAgICAgICAucGxhY2Vob2xkZXI9JHsiV3JpdGUgeW91ciBleHRlbmRlZCBjb250ZW50IGhlcmUuLi4ifQogICAgICAgICAgICAuc2hvd1dvcmRDb3VudD0keyEwfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1yaWNodGV4dD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjQuIENvZGUgRXhhbXBsZXMifSAuc3VidGl0bGU9JHsiRWRpdG9yIHByZS1maWxsZWQgd2l0aCBjb2RlIGV4YW1wbGVzIn0+CiAgICAgICAgPGRlZXMtaW5wdXQtcmljaHRleHQgCiAgICAgICAgICAubGFiZWw9JHsiVGVjaG5pY2FsIERvY3VtZW50YXRpb24ifSAKICAgICAgICAgIC52YWx1ZT0keyc8aDI+SW5zdGFsbGF0aW9uIEd1aWRlPC9oMj48cD5UbyBpbnN0YWxsIHRoZSBwYWNrYWdlLCBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOjwvcD48cHJlPjxjb2RlPm5wbSBpbnN0YWxsIEBkZXNpZ24uZXN0YXRlL2RlZXMtY2F0YWxvZzwvY29kZT48L3ByZT48cD5UaGVuIGltcG9ydCB0aGUgY29tcG9uZW50IGluIHlvdXIgVHlwZVNjcmlwdCBmaWxlOjwvcD48cHJlPjxjb2RlPmltcG9ydCB7IERlZXNJbnB1dFJpY2h0ZXh0IH0gZnJvbSAiQGRlc2lnbi5lc3RhdGUvZGVlcy1jYXRhbG9nIjs8L2NvZGU+PC9wcmU+PHA+WW91IGNhbiBub3cgdXNlIHRoZSA8Y29kZT4mbHQ7ZGVlcy1pbnB1dC1yaWNodGV4dCZndDs8L2NvZGU+IGVsZW1lbnQgaW4geW91ciB0ZW1wbGF0ZXMuPC9wPid9CiAgICAgICAgICAubWluSGVpZ2h0PSR7MjUwfQogICAgICAgICAgLnNob3dXb3JkQ291bnQ9JHshMH0KICAgICAgICA+PC9kZWVzLWlucHV0LXJpY2h0ZXh0PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICAgIAogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiNS4gRGlzYWJsZWQgU3RhdGUifSAuc3VidGl0bGU9JHsiUmVhZC1vbmx5IHJpY2ggdGV4dCBjb250ZW50In0+CiAgICAgICAgPGRlZXMtaW5wdXQtcmljaHRleHQgCiAgICAgICAgICAubGFiZWw9JHsiUHVibGlzaGVkIEFydGljbGUgKFJlYWQgT25seSkifSAKICAgICAgICAgIC52YWx1ZT0keyc8aDI+VGhlIEZ1dHVyZSBvZiBXZWIgQ29tcG9uZW50czwvaDI+PHA+V2ViIENvbXBvbmVudHMgaGF2ZSByZXZvbHV0aW9uaXplZCBob3cgd2UgYnVpbGQgbW9kZXJuIHdlYiBhcHBsaWNhdGlvbnMuLi48L3A+PGJsb2NrcXVvdGU+PHA+IlRoZSBmdXR1cmUgb2Ygd2ViIGRldmVsb3BtZW50IGxpZXMgaW4gcmV1c2FibGUsIGVuY2Fwc3VsYXRlZCBjb21wb25lbnRzLiI8L3A+PC9ibG9ja3F1b3RlPid9CiAgICAgICAgICAuZGlzYWJsZWQ9JHshMH0KICAgICAgICAgIC5zaG93V29yZENvdW50PSR7ITB9CiAgICAgICAgPjwvZGVlcy1pbnB1dC1yaWNodGV4dD4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgICAKICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjYuIEludGVyYWN0aXZlIERlbW8ifSAuc3VidGl0bGU9JHsiVHlwZSBpbiB0aGUgZWRpdG9yIGJlbG93IGFuZCBzZWUgdGhlIEhUTUwgb3V0cHV0In0+CiAgICAgICAgPGRlZXMtaW5wdXQtcmljaHRleHQgCiAgICAgICAgICBpZD0iaW50ZXJhY3RpdmUtZWRpdG9yIgogICAgICAgICAgLmxhYmVsPSR7IlRyeSBpdCB5b3Vyc2VsZiJ9IAogICAgICAgICAgLnBsYWNlaG9sZGVyPSR7IlR5cGUgc29tZXRoaW5nIGhlcmUuLi4ifQogICAgICAgICAgLnNob3dXb3JkQ291bnQ9JHshMH0KICAgICAgICAgIEBjaGFuZ2U9JHtzPT57bGV0IGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI291dHB1dC1wcmV2aWV3Iik7ZSYmKGUudGV4dENvbnRlbnQ9cy5kZXRhaWwudmFsdWUpfX0KICAgICAgICA+PC9kZWVzLWlucHV0LXJpY2h0ZXh0PgogICAgICAgIAogICAgICAgIDxkaXYgY2xhc3M9Im91dHB1dC1wcmV2aWV3IiBpZD0ib3V0cHV0LXByZXZpZXciPgogICAgICAgICAgPGVtPkhUTUwgb3V0cHV0IHdpbGwgYXBwZWFyIGhlcmUuLi48L2VtPgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2Rpdj4KICA8L2RlZXMtZGVtb3dyYXBwZXI+CmAsImRlbW9GdW5jIil9KTt2YXIgd3ZhLGt2YT1nKCgpPT57cGUoKTtFaSgpO2h0KCk7d3ZhPVtxZSwuLi5CdC5iYXNlU3R5bGVzLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGZvbnQtZmFtaWx5OiBJbnRlciwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIHNhbnMtc2VyaWY7CiAgICAgIH0KCiAgICAgIC5pbnB1dC13cmFwcGVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIC5sYWJlbCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIH0KCiAgICAgIGRlZXMtdGlsZSB7CiAgICAgICAgbWluLWhlaWdodDogMjAwcHg7CiAgICAgIH0KCiAgICAgIGRlZXMtdGlsZTpob3Zlcjo6cGFydChvdXRlcikgewogICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItc3Ryb25nKTsKICAgICAgfQoKICAgICAgZGVlcy10aWxlLmZvY3VzZWQ6OnBhcnQob3V0ZXIpIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5JSkiLCJoc2woMCAwJSA5OCUpIil9OwogICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCAke2guYmRUaGVtZSgiaHNsKDAgMCUgOSUgLyAwLjA1KSIsImhzbCgwIDAlIDk4JSAvIDAuMDUpIil9OwogICAgICB9CgogICAgICAuZWRpdG9yLXRvb2xiYXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgIGdhcDogNHB4OwogICAgICAgIHBhZGRpbmc6IDRweCAxMnB4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAudG9vbGJhci1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICB3aWR0aDogMzJweDsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNDYuOSUpIiwiaHNsKDIxNSAyMC4yJSA2NS4xJSkiKX07CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIH0KCiAgICAgIC50b29sYmFyLWJ1dHRvbiBkZWVzLWljb24gewogICAgICAgIHdpZHRoOiAxNnB4OwogICAgICAgIGhlaWdodDogMTZweDsKICAgICAgfQoKICAgICAgLnRvb2xiYXItYnV0dG9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWhvdmVyKTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICB9CgogICAgICAudG9vbGJhci1idXR0b24uYWN0aXZlIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOSUpIiwiaHNsKDAgMCUgOTglKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDEwMCUpIiwiaHNsKDAgMCUgMy45JSkiKX07CiAgICAgIH0KCiAgICAgIC50b29sYmFyLWJ1dHRvbjpkaXNhYmxlZCB7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAgIH0KCiAgICAgIC50b29sYmFyLWRpdmlkZXIgewogICAgICAgIHdpZHRoOiAxcHg7CiAgICAgICAgaGVpZ2h0OiAyNHB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIG1hcmdpbjogMCA0cHg7CiAgICAgIH0KCiAgICAgIC5lZGl0b3ItY29udGVudCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGluc2V0OiAwOwogICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgfQoKICAgICAgLmVkaXRvci1jb250ZW50IC5Qcm9zZU1pcnJvciB7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgICAgbWluLWhlaWdodDogMTAwJTsKICAgICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CiAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgICB9CgogICAgICAuZWRpdG9yLWNvbnRlbnQgLlByb3NlTWlycm9yIHAgewogICAgICAgIG1hcmdpbjogMC41ZW0gMDsKICAgICAgfQoKICAgICAgLmVkaXRvci1jb250ZW50IC5Qcm9zZU1pcnJvciBwOmZpcnN0LWNoaWxkIHsKICAgICAgICBtYXJnaW4tdG9wOiAwOwogICAgICB9CgogICAgICAuZWRpdG9yLWNvbnRlbnQgLlByb3NlTWlycm9yIHA6bGFzdC1jaGlsZCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgfQoKICAgICAgLmVkaXRvci1jb250ZW50IC5Qcm9zZU1pcnJvciBoMSB7CiAgICAgICAgZm9udC1zaXplOiAyZW07CiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgICAgbWFyZ2luOiAxZW0gMCAwLjVlbSAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7CiAgICAgIH0KCiAgICAgIC5lZGl0b3ItY29udGVudCAuUHJvc2VNaXJyb3IgaDIgewogICAgICAgIGZvbnQtc2l6ZTogMS41ZW07CiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgICAgbWFyZ2luOiAxZW0gMCAwLjVlbSAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM7CiAgICAgIH0KCiAgICAgIC5lZGl0b3ItY29udGVudCAuUHJvc2VNaXJyb3IgaDMgewogICAgICAgIGZvbnQtc2l6ZTogMS4yNWVtOwogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgIG1hcmdpbjogMWVtIDAgMC41ZW0gMDsKICAgICAgICBsaW5lLWhlaWdodDogMS40OwogICAgICB9CgogICAgICAuZWRpdG9yLWNvbnRlbnQgLlByb3NlTWlycm9yIHVsLAogICAgICAuZWRpdG9yLWNvbnRlbnQgLlByb3NlTWlycm9yIG9sIHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDEuNWVtOwogICAgICAgIG1hcmdpbjogMC41ZW0gMDsKICAgICAgfQoKICAgICAgLmVkaXRvci1jb250ZW50IC5Qcm9zZU1pcnJvciBsaSB7CiAgICAgICAgbWFyZ2luOiAwLjI1ZW0gMDsKICAgICAgfQoKICAgICAgLmVkaXRvci1jb250ZW50IC5Qcm9zZU1pcnJvciBibG9ja3F1b3RlIHsKICAgICAgICBib3JkZXItbGVmdDogNHB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIG1hcmdpbjogMWVtIDA7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAxZW07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNDYuOSUpIiwiaHNsKDIxNSAyMC4yJSA2NS4xJSkiKX07CiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgICB9CgogICAgICAuZWRpdG9yLWNvbnRlbnQgLlByb3NlTWlycm9yIGNvZGUgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYmctdGVydGlhcnkpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICBwYWRkaW5nOiAwLjJlbSAwLjRlbTsKICAgICAgICBmb250LWZhbWlseTogJ0ludGVsIE9uZSBNb25vJywgJ0ZpcmEgQ29kZScsICdTRiBNb25vJywgTW9uYWNvLCAnQ2FzY2FkaWEgQ29kZScsICdSb2JvdG8gTW9ubycsIENvbnNvbGFzLCAnQ291cmllciBOZXcnLCBtb25vc3BhY2U7CiAgICAgICAgZm9udC1zaXplOiAwLjllbTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICB9CgogICAgICAuZWRpdG9yLWNvbnRlbnQgLlByb3NlTWlycm9yIHByZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDMuOSUpIiwiaHNsKDAgMCUgOTglKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk4JSkiLCJoc2woMCAwJSAzLjklKSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgcGFkZGluZzogMWVtOwogICAgICAgIG1hcmdpbjogMWVtIDA7CiAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKICAgICAgfQoKICAgICAgLmVkaXRvci1jb250ZW50IC5Qcm9zZU1pcnJvciBwcmUgY29kZSB7CiAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgICBjb2xvcjogaW5oZXJpdDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgICAgIH0KCiAgICAgIC5lZGl0b3ItY29udGVudCAuUHJvc2VNaXJyb3IgYSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUpIiwiaHNsKDIxNy4yIDkxLjIlIDU5LjglKSIpfTsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KCiAgICAgIC5lZGl0b3ItY29udGVudCAuUHJvc2VNaXJyb3IgYTpob3ZlciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNDEuMiUpIiwiaHNsKDIxNy4yIDkxLjIlIDY5LjglKSIpfTsKICAgICAgfQoKICAgICAgLmVkaXRvci1mb290ZXIgewogICAgICAgIHBhZGRpbmc6IDAgMTJweDsKICAgICAgICBoZWlnaHQ6IDI4cHg7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLndvcmQtY291bnQgewogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIH0KCiAgICAgIC5saW5rLWlucHV0IHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDEwMCU7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXByaW1hcnkpOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBib3gtc2hhZG93OiAwIDRweCA2cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgICAgICAgcGFkZGluZzogMTJweDsKICAgICAgICB6LWluZGV4OiAxMDAwOwogICAgICB9CgogICAgICAubGluay1pbnB1dC5zaG93IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgLmxpbmstaW5wdXQgaW5wdXQgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXByaW1hcnkpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTsKICAgICAgfQoKICAgICAgLmxpbmstaW5wdXQgaW5wdXQ6Zm9jdXMgewogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDklKSIsImhzbCgwIDAlIDk4JSkiKX07CiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5JSAvIDAuMDUpIiwiaHNsKDAgMCUgOTglIC8gMC4wNSkiKX07CiAgICAgIH0KCiAgICAgIC5saW5rLWlucHV0LWJ1dHRvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgbWFyZ2luLXRvcDogOHB4OwogICAgICB9CgogICAgICAubGluay1pbnB1dC1idXR0b25zIGJ1dHRvbiB7CiAgICAgICAgcGFkZGluZzogNnB4IDEycHg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYmctcHJpbWFyeSk7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICB9CgogICAgICAubGluay1pbnB1dC1idXR0b25zIGJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1ob3Zlcik7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgfQoKICAgICAgLmxpbmstaW5wdXQtYnV0dG9ucyBidXR0b24ucHJpbWFyeSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDklKSIsImhzbCgwIDAlIDk4JSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxMDAlKSIsImhzbCgwIDAlIDMuOSUpIil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDklKSIsImhzbCgwIDAlIDk4JSkiKX07CiAgICAgIH0KCiAgICAgIC5saW5rLWlucHV0LWJ1dHRvbnMgYnV0dG9uLnByaW1hcnk6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxNSUpIiwiaHNsKDAgMCUgOTMuOSUpIil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDE1JSkiLCJoc2woMCAwJSA5My45JSkiKX07CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIGRlZXMtdGlsZSB7CiAgICAgICAgb3BhY2l0eTogMC42OwogICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIC50b29sYmFyLWJ1dHRvbiwKICAgICAgOmhvc3QoW2Rpc2FibGVkXSkgLmVkaXRvci1jb250ZW50IHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQogICAgYF19KTt2YXIgU3ZhLF92YT1nKCgpPT57cGUoKTtTdmE9aShzPT53YAogICAgICAgIDxkaXYgY2xhc3M9ImlucHV0LXdyYXBwZXIiPgogICAgICAgICAgJHtzLmxhYmVsP3dgPGxhYmVsIGNsYXNzPSJsYWJlbCI+JHtzLmxhYmVsfTwvbGFiZWw+YDoiIn0KICAgICAgICAgIDxkZWVzLXRpbGUgY2xhc3M9IiR7cy5lZGl0b3I/LmlzRm9jdXNlZD8iZm9jdXNlZCI6IiJ9IiBzdHlsZT0iLS1taW4taGVpZ2h0OiAke3MubWluSGVpZ2h0fXB4Ij4KICAgICAgICAgICAgPGRpdiBzbG90PSJoZWFkZXIiIGNsYXNzPSJlZGl0b3ItdG9vbGJhciI+CiAgICAgICAgICAgICAgJHtzLnJlbmRlclRvb2xiYXIoKX0KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5rLWlucHV0ICR7cy5zaG93TGlua0lucHV0PyJzaG93IjoiIn0iPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InVybCIgcGxhY2Vob2xkZXI9IkVudGVyIFVSTC4uLiIgQGtleWRvd249JHtzLmhhbmRsZUxpbmtJbnB1dEtleWRvd259IC8+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5rLWlucHV0LWJ1dHRvbnMiPgogICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJwcmltYXJ5IiBAY2xpY2s9JHtzLnNhdmVMaW5rfT5TYXZlPC9idXR0b24+CiAgICAgICAgICAgICAgICAgIDxidXR0b24gQGNsaWNrPSR7cy5yZW1vdmVMaW5rfT5SZW1vdmU8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9JHtzLmhpZGVMaW5rSW5wdXR9PkNhbmNlbDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJlZGl0b3ItY29udGVudCI+PC9kaXY+CiAgICAgICAgICAgICR7cy5zaG93V29yZENvdW50P3dgCiAgICAgICAgICAgICAgICAgIDxkaXYgc2xvdD0iZm9vdGVyIiBjbGFzcz0iZWRpdG9yLWZvb3RlciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IndvcmQtY291bnQiPiR7cy53b3JkQ291bnR9IHdvcmQke3Mud29yZENvdW50IT09MT8icyI6IiJ9PC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICA8L2RlZXMtdGlsZT4KICAgICAgICAgICR7cy5yZW5kZXJEZXNjcmlwdGlvbigpfQogICAgICAgIDwvZGl2PgogICAgICBgLCJyZW5kZXJSaWNodGV4dCIpfSk7dmFyIEpnLGxjLFBudCxYMWU9ZygoKT0+e0VpKCk7eXZhKCk7a3ZhKCk7X3ZhKCk7R2EoKTtwZSgpO091KCk7bXIoKTtKZz1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sbGM9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LFBudD0oKCk9PntsZXQgcz1bbmUoImRlZXMtaW5wdXQtcmljaHRleHQiKV0sZSx0PVtdLGEscj1CdCxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXTt2YXIgTz1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0lucHV0UmljaHRleHQiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgJD10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZyxyZWZsZWN0OiEwfSldLHA9W0woe3R5cGU6U3RyaW5nfSldLGM9W0woe3R5cGU6Qm9vbGVhbn0pXSx4PVtMKHt0eXBlOk51bWJlcn0pXSx5PVtZKCldLE49W1koKV0sSmcodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2YWx1ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShFPT4idmFsdWUiaW4gRSwiaGFzIiksZ2V0OmkoRT0+RS52YWx1ZSwiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLnZhbHVlPUh9LCJzZXQiKX0sbWV0YWRhdGE6JH0sbyxsKSxKZyh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InBsYWNlaG9sZGVyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEU9PiJwbGFjZWhvbGRlciJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLnBsYWNlaG9sZGVyLCJnZXQiKSxzZXQ6aSgoRSxIKT0+e0UucGxhY2Vob2xkZXI9SH0sInNldCIpfSxtZXRhZGF0YTokfSxkLHUpLEpnKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2hvd1dvcmRDb3VudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShFPT4ic2hvd1dvcmRDb3VudCJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLnNob3dXb3JkQ291bnQsImdldCIpLHNldDppKChFLEgpPT57RS5zaG93V29yZENvdW50PUh9LCJzZXQiKX0sbWV0YWRhdGE6JH0sYix2KSxKZyh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1pbkhlaWdodCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShFPT4ibWluSGVpZ2h0ImluIEUsImhhcyIpLGdldDppKEU9PkUubWluSGVpZ2h0LCJnZXQiKSxzZXQ6aSgoRSxIKT0+e0UubWluSGVpZ2h0PUh9LCJzZXQiKX0sbWV0YWRhdGE6JH0sbSxmKSxKZyh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dMaW5rSW5wdXQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+InNob3dMaW5rSW5wdXQiaW4gRSwiaGFzIiksZ2V0OmkoRT0+RS5zaG93TGlua0lucHV0LCJnZXQiKSxzZXQ6aSgoRSxIKT0+e0Uuc2hvd0xpbmtJbnB1dD1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LE0seiksSmcodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ3b3JkQ291bnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+IndvcmRDb3VudCJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLndvcmRDb3VudCwiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLndvcmRDb3VudD1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LEMsXyksSmcobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6JH0sbnVsbCx0KSxPPWE9ZS52YWx1ZSwkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOiR9KX1zdGF0aWMgZGVtbz14dmE7c3RhdGljIGRlbW9Hcm91cHM9WyJJbnB1dCJdOyNlPWxjKHRoaXMsbywiIik7Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHZhbHVlKCQpe3RoaXMuI2U9JH0jdD0obGModGhpcyxsKSxsYyh0aGlzLGQsIiIpKTtnZXQgcGxhY2Vob2xkZXIoKXtyZXR1cm4gdGhpcy4jdH1zZXQgcGxhY2Vob2xkZXIoJCl7dGhpcy4jdD0kfSNhPShsYyh0aGlzLHUpLGxjKHRoaXMsYiwhMCkpO2dldCBzaG93V29yZENvdW50KCl7cmV0dXJuIHRoaXMuI2F9c2V0IHNob3dXb3JkQ291bnQoJCl7dGhpcy4jYT0kfSNzPShsYyh0aGlzLHYpLGxjKHRoaXMsbSwyMDApKTtnZXQgbWluSGVpZ2h0KCl7cmV0dXJuIHRoaXMuI3N9c2V0IG1pbkhlaWdodCgkKXt0aGlzLiNzPSR9I2k9KGxjKHRoaXMsZiksbGModGhpcyxNLCExKSk7Z2V0IHNob3dMaW5rSW5wdXQoKXtyZXR1cm4gdGhpcy4jaX1zZXQgc2hvd0xpbmtJbnB1dCgkKXt0aGlzLiNpPSR9I3I9KGxjKHRoaXMseiksbGModGhpcyxDLDApKTtnZXQgd29yZENvdW50KCl7cmV0dXJuIHRoaXMuI3J9c2V0IHdvcmRDb3VudCgkKXt0aGlzLiNyPSR9ZWRpdG9yRWxlbWVudD1sYyh0aGlzLF8pO2xpbmtJbnB1dEVsZW1lbnQ7dGlwdGFwQnVuZGxlPW51bGw7ZWRpdG9yO3N0YXRpYyBzdHlsZXM9d3ZhO3JlbmRlcigpe3JldHVybiBTdmEodGhpcyl9cmVuZGVyVG9vbGJhcigpe2xldCAkPXRoaXMuZ2V0VG9vbGJhckJ1dHRvbnMoKTtyZXR1cm4gd2AKICAgICAgJHskLm1hcChFPT5FLmlzRGl2aWRlcj93YDxkaXYgY2xhc3M9InRvb2xiYXItZGl2aWRlciI+PC9kaXY+YDp3YAogICAgICAgICAgPGJ1dHRvbgogICAgICAgICAgICBjbGFzcz0idG9vbGJhci1idXR0b24gJHtFLmlzQWN0aXZlPy4oKT8iYWN0aXZlIjoiIn0iCiAgICAgICAgICAgIEBjbGljaz0ke0UuYWN0aW9ufQogICAgICAgICAgICB0aXRsZT0ke0UudGl0bGV9CiAgICAgICAgICAgID9kaXNhYmxlZD0ke3RoaXMuZGlzYWJsZWR8fCF0aGlzLmVkaXRvcn0KICAgICAgICAgID4KICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0ke0UuaWNvbn0+PC9kZWVzLWljb24+CiAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICBgKX0KICAgIGB9Z2V0VG9vbGJhckJ1dHRvbnMoKXtyZXR1cm4gdGhpcy5lZGl0b3I/W3tuYW1lOiJib2xkIixpY29uOiJsdWNpZGU6Ym9sZCIsdGl0bGU6IkJvbGQgKEN0cmwrQikiLGFjdGlvbjppKCgpPT50aGlzLmVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlQm9sZCgpLnJ1bigpLCJhY3Rpb24iKSxpc0FjdGl2ZTppKCgpPT50aGlzLmVkaXRvci5pc0FjdGl2ZSgiYm9sZCIpLCJpc0FjdGl2ZSIpfSx7bmFtZToiaXRhbGljIixpY29uOiJsdWNpZGU6aXRhbGljIix0aXRsZToiSXRhbGljIChDdHJsK0kpIixhY3Rpb246aSgoKT0+dGhpcy5lZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZUl0YWxpYygpLnJ1bigpLCJhY3Rpb24iKSxpc0FjdGl2ZTppKCgpPT50aGlzLmVkaXRvci5pc0FjdGl2ZSgiaXRhbGljIiksImlzQWN0aXZlIil9LHtuYW1lOiJ1bmRlcmxpbmUiLGljb246Imx1Y2lkZTp1bmRlcmxpbmUiLHRpdGxlOiJVbmRlcmxpbmUgKEN0cmwrVSkiLGFjdGlvbjppKCgpPT50aGlzLmVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlVW5kZXJsaW5lKCkucnVuKCksImFjdGlvbiIpLGlzQWN0aXZlOmkoKCk9PnRoaXMuZWRpdG9yLmlzQWN0aXZlKCJ1bmRlcmxpbmUiKSwiaXNBY3RpdmUiKX0se25hbWU6InN0cmlrZSIsaWNvbjoibHVjaWRlOnN0cmlrZXRocm91Z2giLHRpdGxlOiJTdHJpa2V0aHJvdWdoIixhY3Rpb246aSgoKT0+dGhpcy5lZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZVN0cmlrZSgpLnJ1bigpLCJhY3Rpb24iKSxpc0FjdGl2ZTppKCgpPT50aGlzLmVkaXRvci5pc0FjdGl2ZSgic3RyaWtlIiksImlzQWN0aXZlIil9LHtuYW1lOiJkaXZpZGVyMSIsdGl0bGU6IiIsaXNEaXZpZGVyOiEwfSx7bmFtZToiaDEiLGljb246Imx1Y2lkZTpoZWFkaW5nMSIsdGl0bGU6IkhlYWRpbmcgMSIsYWN0aW9uOmkoKCk9PnRoaXMuZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVIZWFkaW5nKHtsZXZlbDoxfSkucnVuKCksImFjdGlvbiIpLGlzQWN0aXZlOmkoKCk9PnRoaXMuZWRpdG9yLmlzQWN0aXZlKCJoZWFkaW5nIix7bGV2ZWw6MX0pLCJpc0FjdGl2ZSIpfSx7bmFtZToiaDIiLGljb246Imx1Y2lkZTpoZWFkaW5nMiIsdGl0bGU6IkhlYWRpbmcgMiIsYWN0aW9uOmkoKCk9PnRoaXMuZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVIZWFkaW5nKHtsZXZlbDoyfSkucnVuKCksImFjdGlvbiIpLGlzQWN0aXZlOmkoKCk9PnRoaXMuZWRpdG9yLmlzQWN0aXZlKCJoZWFkaW5nIix7bGV2ZWw6Mn0pLCJpc0FjdGl2ZSIpfSx7bmFtZToiaDMiLGljb246Imx1Y2lkZTpoZWFkaW5nMyIsdGl0bGU6IkhlYWRpbmcgMyIsYWN0aW9uOmkoKCk9PnRoaXMuZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVIZWFkaW5nKHtsZXZlbDozfSkucnVuKCksImFjdGlvbiIpLGlzQWN0aXZlOmkoKCk9PnRoaXMuZWRpdG9yLmlzQWN0aXZlKCJoZWFkaW5nIix7bGV2ZWw6M30pLCJpc0FjdGl2ZSIpfSx7bmFtZToiZGl2aWRlcjIiLHRpdGxlOiIiLGlzRGl2aWRlcjohMH0se25hbWU6ImJ1bGxldExpc3QiLGljb246Imx1Y2lkZTpsaXN0Iix0aXRsZToiQnVsbGV0IExpc3QiLGFjdGlvbjppKCgpPT50aGlzLmVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlQnVsbGV0TGlzdCgpLnJ1bigpLCJhY3Rpb24iKSxpc0FjdGl2ZTppKCgpPT50aGlzLmVkaXRvci5pc0FjdGl2ZSgiYnVsbGV0TGlzdCIpLCJpc0FjdGl2ZSIpfSx7bmFtZToib3JkZXJlZExpc3QiLGljb246Imx1Y2lkZTpsaXN0T3JkZXJlZCIsdGl0bGU6Ik51bWJlcmVkIExpc3QiLGFjdGlvbjppKCgpPT50aGlzLmVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlT3JkZXJlZExpc3QoKS5ydW4oKSwiYWN0aW9uIiksaXNBY3RpdmU6aSgoKT0+dGhpcy5lZGl0b3IuaXNBY3RpdmUoIm9yZGVyZWRMaXN0IiksImlzQWN0aXZlIil9LHtuYW1lOiJibG9ja3F1b3RlIixpY29uOiJsdWNpZGU6cXVvdGUiLHRpdGxlOiJRdW90ZSIsYWN0aW9uOmkoKCk9PnRoaXMuZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVCbG9ja3F1b3RlKCkucnVuKCksImFjdGlvbiIpLGlzQWN0aXZlOmkoKCk9PnRoaXMuZWRpdG9yLmlzQWN0aXZlKCJibG9ja3F1b3RlIiksImlzQWN0aXZlIil9LHtuYW1lOiJjb2RlIixpY29uOiJsdWNpZGU6Y29kZSIsdGl0bGU6IkNvZGUiLGFjdGlvbjppKCgpPT50aGlzLmVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlQ29kZSgpLnJ1bigpLCJhY3Rpb24iKSxpc0FjdGl2ZTppKCgpPT50aGlzLmVkaXRvci5pc0FjdGl2ZSgiY29kZSIpLCJpc0FjdGl2ZSIpfSx7bmFtZToiY29kZUJsb2NrIixpY29uOiJsdWNpZGU6ZmlsZUNvZGUiLHRpdGxlOiJDb2RlIEJsb2NrIixhY3Rpb246aSgoKT0+dGhpcy5lZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZUNvZGVCbG9jaygpLnJ1bigpLCJhY3Rpb24iKSxpc0FjdGl2ZTppKCgpPT50aGlzLmVkaXRvci5pc0FjdGl2ZSgiY29kZUJsb2NrIiksImlzQWN0aXZlIil9LHtuYW1lOiJkaXZpZGVyMyIsdGl0bGU6IiIsaXNEaXZpZGVyOiEwfSx7bmFtZToibGluayIsaWNvbjoibHVjaWRlOmxpbmsiLHRpdGxlOiJBZGQgTGluayIsYWN0aW9uOmkoKCk9PnRoaXMudG9nZ2xlTGluaygpLCJhY3Rpb24iKSxpc0FjdGl2ZTppKCgpPT50aGlzLmVkaXRvci5pc0FjdGl2ZSgibGluayIpLCJpc0FjdGl2ZSIpfSx7bmFtZToiYWxpZ25MZWZ0IixpY29uOiJsdWNpZGU6YWxpZ25MZWZ0Iix0aXRsZToiQWxpZ24gTGVmdCIsYWN0aW9uOmkoKCk9PnRoaXMuZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5zZXRUZXh0QWxpZ24oImxlZnQiKS5ydW4oKSwiYWN0aW9uIiksaXNBY3RpdmU6aSgoKT0+dGhpcy5lZGl0b3IuaXNBY3RpdmUoe3RleHRBbGlnbjoibGVmdCJ9KSwiaXNBY3RpdmUiKX0se25hbWU6ImFsaWduQ2VudGVyIixpY29uOiJsdWNpZGU6YWxpZ25DZW50ZXIiLHRpdGxlOiJBbGlnbiBDZW50ZXIiLGFjdGlvbjppKCgpPT50aGlzLmVkaXRvci5jaGFpbigpLmZvY3VzKCkuc2V0VGV4dEFsaWduKCJjZW50ZXIiKS5ydW4oKSwiYWN0aW9uIiksaXNBY3RpdmU6aSgoKT0+dGhpcy5lZGl0b3IuaXNBY3RpdmUoe3RleHRBbGlnbjoiY2VudGVyIn0pLCJpc0FjdGl2ZSIpfSx7bmFtZToiYWxpZ25SaWdodCIsaWNvbjoibHVjaWRlOmFsaWduUmlnaHQiLHRpdGxlOiJBbGlnbiBSaWdodCIsYWN0aW9uOmkoKCk9PnRoaXMuZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5zZXRUZXh0QWxpZ24oInJpZ2h0IikucnVuKCksImFjdGlvbiIpLGlzQWN0aXZlOmkoKCk9PnRoaXMuZWRpdG9yLmlzQWN0aXZlKHt0ZXh0QWxpZ246InJpZ2h0In0pLCJpc0FjdGl2ZSIpfSx7bmFtZToiZGl2aWRlcjQiLHRpdGxlOiIiLGlzRGl2aWRlcjohMH0se25hbWU6InVuZG8iLGljb246Imx1Y2lkZTp1bmRvIix0aXRsZToiVW5kbyAoQ3RybCtaKSIsYWN0aW9uOmkoKCk9PnRoaXMuZWRpdG9yLmNoYWluKCkuZm9jdXMoKS51bmRvKCkucnVuKCksImFjdGlvbiIpfSx7bmFtZToicmVkbyIsaWNvbjoibHVjaWRlOnJlZG8iLHRpdGxlOiJSZWRvIChDdHJsK1kpIixhY3Rpb246aSgoKT0+dGhpcy5lZGl0b3IuY2hhaW4oKS5mb2N1cygpLnJlZG8oKS5ydW4oKSwiYWN0aW9uIil9XTpbXX1hc3luYyBmaXJzdFVwZGF0ZWQoKXthd2FpdCB0aGlzLnVwZGF0ZUNvbXBsZXRlLHRoaXMudGlwdGFwQnVuZGxlPWF3YWl0IGFvLmdldEluc3RhbmNlKCkubG9hZFRpcHRhcCgpLHRoaXMuZWRpdG9yRWxlbWVudD10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLmVkaXRvci1jb250ZW50IiksdGhpcy5saW5rSW5wdXRFbGVtZW50PXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIubGluay1pbnB1dCBpbnB1dCIpLHRoaXMuaW5pdGlhbGl6ZUVkaXRvcigpLHRoaXMucmVxdWVzdFVwZGF0ZSgpfWluaXRpYWxpemVFZGl0b3IoKXtpZih0aGlzLmRpc2FibGVkfHwhdGhpcy50aXB0YXBCdW5kbGUpcmV0dXJuO2xldHtFZGl0b3I6JCxTdGFydGVyS2l0OkUsVW5kZXJsaW5lOkgsVGV4dEFsaWduOmssTGluazpTLFR5cG9ncmFwaHk6SX09dGhpcy50aXB0YXBCdW5kbGU7dGhpcy5lZGl0b3I9bmV3ICQoe2VsZW1lbnQ6dGhpcy5lZGl0b3JFbGVtZW50LGV4dGVuc2lvbnM6W0UuY29uZmlndXJlKHtoZWFkaW5nOntsZXZlbHM6WzEsMiwzXX19KSxILmNvbmZpZ3VyZSh7fSksay5jb25maWd1cmUoe3R5cGVzOlsiaGVhZGluZyIsInBhcmFncmFwaCJdfSksUy5jb25maWd1cmUoe29wZW5PbkNsaWNrOiExLEhUTUxBdHRyaWJ1dGVzOntjbGFzczoiZWRpdG9yLWxpbmsifX0pLEkuY29uZmlndXJlKHt9KV0sY29udGVudDp0aGlzLnZhbHVlfHwodGhpcy5wbGFjZWhvbGRlcj9gPHA+JHt0aGlzLnBsYWNlaG9sZGVyfTwvcD5gOiIiKSxvblVwZGF0ZTppKCh7ZWRpdG9yOlB9KT0+e3RoaXMudmFsdWU9UC5nZXRIVE1MKCksdGhpcy51cGRhdGVXb3JkQ291bnQoKSx0aGlzLmNoYW5nZVN1YmplY3QubmV4dCh0aGlzLnZhbHVlKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJpbnB1dCIse2RldGFpbDp7dmFsdWU6dGhpcy52YWx1ZX0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjaGFuZ2UiLHtkZXRhaWw6e3ZhbHVlOnRoaXMudmFsdWV9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9LCJvblVwZGF0ZSIpLG9uU2VsZWN0aW9uVXBkYXRlOmkoKCk9Pnt0aGlzLnJlcXVlc3RVcGRhdGUoKX0sIm9uU2VsZWN0aW9uVXBkYXRlIiksb25Gb2N1czppKCgpPT57dGhpcy5yZXF1ZXN0VXBkYXRlKCl9LCJvbkZvY3VzIiksb25CbHVyOmkoKCk9Pnt0aGlzLnJlcXVlc3RVcGRhdGUoKX0sIm9uQmx1ciIpfSksdGhpcy51cGRhdGVXb3JkQ291bnQoKX11cGRhdGVXb3JkQ291bnQoKXtpZighdGhpcy5lZGl0b3IpcmV0dXJuO2xldCAkPXRoaXMuZWRpdG9yLmdldFRleHQoKTt0aGlzLndvcmRDb3VudD0kLnRyaW0oKT8kLnRyaW0oKS5zcGxpdCgvXHMrLykubGVuZ3RoOjB9dG9nZ2xlTGluaygpe2lmKHRoaXMuZWRpdG9yKWlmKHRoaXMuZWRpdG9yLmlzQWN0aXZlKCJsaW5rIikpe2xldCAkPXRoaXMuZWRpdG9yLmdldEF0dHJpYnV0ZXMoImxpbmsiKS5ocmVmO3RoaXMuc2hvd0xpbmtJbnB1dD0hMCxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pnt0aGlzLmxpbmtJbnB1dEVsZW1lbnQmJih0aGlzLmxpbmtJbnB1dEVsZW1lbnQudmFsdWU9JHx8IiIsdGhpcy5saW5rSW5wdXRFbGVtZW50LmZvY3VzKCksdGhpcy5saW5rSW5wdXRFbGVtZW50LnNlbGVjdCgpKX0pfWVsc2UgdGhpcy5zaG93TGlua0lucHV0PSEwLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3RoaXMubGlua0lucHV0RWxlbWVudCYmKHRoaXMubGlua0lucHV0RWxlbWVudC52YWx1ZT0iIix0aGlzLmxpbmtJbnB1dEVsZW1lbnQuZm9jdXMoKSl9KX1zYXZlTGluaygpe2lmKCF0aGlzLmVkaXRvcnx8IXRoaXMubGlua0lucHV0RWxlbWVudClyZXR1cm47bGV0ICQ9dGhpcy5saW5rSW5wdXRFbGVtZW50LnZhbHVlOyQmJnRoaXMuZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5zZXRMaW5rKHtocmVmOiR9KS5ydW4oKSx0aGlzLmhpZGVMaW5rSW5wdXQoKX1yZW1vdmVMaW5rKCl7dGhpcy5lZGl0b3ImJih0aGlzLmVkaXRvci5jaGFpbigpLmZvY3VzKCkudW5zZXRMaW5rKCkucnVuKCksdGhpcy5oaWRlTGlua0lucHV0KCkpfWhpZGVMaW5rSW5wdXQoKXt0aGlzLnNob3dMaW5rSW5wdXQ9ITEsdGhpcy5lZGl0b3I/LmNvbW1hbmRzLmZvY3VzKCl9aGFuZGxlTGlua0lucHV0S2V5ZG93bigkKXskLmtleT09PSJFbnRlciI/KCQucHJldmVudERlZmF1bHQoKSx0aGlzLnNhdmVMaW5rKCkpOiQua2V5PT09IkVzY2FwZSImJigkLnByZXZlbnREZWZhdWx0KCksdGhpcy5oaWRlTGlua0lucHV0KCkpfXNldFZhbHVlKCQpe3RoaXMudmFsdWU9JCx0aGlzLmVkaXRvciYmJCE9PXRoaXMuZWRpdG9yLmdldEhUTUwoKSYmdGhpcy5lZGl0b3IuY29tbWFuZHMuc2V0Q29udGVudCgkKX1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLnZhbHVlfWNsZWFyKCl7dGhpcy5zZXRWYWx1ZSgiIil9Zm9jdXMoKXt0aGlzLmVkaXRvcj8uY29tbWFuZHMuZm9jdXMoKX1hc3luYyBkaXNjb25uZWN0ZWRDYWxsYmFjaygpe2F3YWl0IHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5lZGl0b3ImJnRoaXMuZWRpdG9yLmRlc3Ryb3koKX1zdGF0aWN7bGMoYSx0KX19O3JldHVybiBPPWF9KSgpfSk7dmFyIE12YSx6dmE9ZygoKT0+e0ludCgpO3ZvKCk7cGUoKTtJdCgpO012YT1pKCgpPT53YAogIDxzdHlsZT4KICAgICR7SmAKICAgICAgLmRlbW9XcmFwcGVyIHsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgcGFkZGluZzogMzJweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTUlKSIsImhzbCgwIDAlIDUlKSIpfTsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICB9CiAgICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHg7CiAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgIH0KICAgICAgLmRlbW8tc2VjdGlvbiB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNDhweDsKICAgICAgfQogICAgICAuZGVtby10aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAyNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOSUpIiwiaHNsKDAgMCUgOTUlKSIpfTsKICAgICAgfQogICAgICAuZGVtby1kZXNjcmlwdGlvbiB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDQ2LjklKSIsImhzbCgyMTUgMjAuMiUgNjUuMSUpIil9OwogICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgIH0KICAgICAgLnRoZW1lLXRvZ2dsZSB7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIHRvcDogMTZweDsKICAgICAgICByaWdodDogMTZweDsKICAgICAgICB6LWluZGV4OiAxMDAwOwogICAgICB9CiAgICBgfQogIDwvc3R5bGU+CiAgPGRpdiBjbGFzcz0iZGVtb1dyYXBwZXIiPgogICAgPGRlZXMtYnV0dG9uIGNsYXNzPSJ0aGVtZS10b2dnbGUiIEBjbGljaz0keygpPT57ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCJicmlnaHQiKSxkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoImRhcmsiKX19PlRvZ2dsZSBUaGVtZTwvZGVlcy1idXR0b24+CiAgICAKICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgICA8aDIgY2xhc3M9ImRlbW8tdGl0bGUiPkJhc2ljIFRhYmxlIHdpdGggQWN0aW9uczwvaDI+CiAgICAgICAgPHAgY2xhc3M9ImRlbW8tZGVzY3JpcHRpb24iPkEgc3RhbmRhcmQgdGFibGUgd2l0aCByb3cgYWN0aW9ucywgZWRpdGFibGUgY2VsbHMsIGFuZCBjb250ZXh0IG1lbnUgc3VwcG9ydC4gRG91YmxlLWNsaWNrIGFueSBjZWxsIHRvIGVkaXQuIFRhYiBtb3ZlcyB0byB0aGUgbmV4dCBlZGl0YWJsZSBjZWxsLCBFbnRlciB0byB0aGUgcm93IGJlbG93LCBFc2MgY2FuY2Vscy48L3A+CiAgICAgICAgPGRlZXMtdGFibGUKICAgICAgICAgIGhlYWRpbmcxPSJDdXJyZW50IEFjY291bnQgU3RhdGVtZW50IgogICAgICAgICAgaGVhZGluZzI9IkJ1bnEgLSBQYXltZW50IEFjY291bnQgMiAtIEFwcmlsIDIwMjEiCiAgICAgICAgICAuY29sdW1ucz0ke1t7a2V5OiJkYXRlIixoZWFkZXI6IkRhdGUiLHNvcnRhYmxlOiEwLGVkaXRhYmxlOiEwLGVkaXRvcjoiZGF0ZSJ9LHtrZXk6ImFtb3VudCIsaGVhZGVyOiJBbW91bnQiLGVkaXRhYmxlOiEwLGVkaXRvcjoidGV4dCJ9LHtrZXk6ImNhdGVnb3J5IixoZWFkZXI6IkNhdGVnb3J5IixlZGl0YWJsZTohMCxlZGl0b3I6ImRyb3Bkb3duIixlZGl0b3JPcHRpb25zOntvcHRpb25zOlt7b3B0aW9uOiJPZmZpY2UgU3VwcGxpZXMiLGtleToib2ZmaWNlIn0se29wdGlvbjoiSGFyZHdhcmUiLGtleToiaGFyZHdhcmUifSx7b3B0aW9uOiJTb2Z0d2FyZSIsa2V5OiJzb2Z0d2FyZSJ9LHtvcHRpb246IlRyYXZlbCIsa2V5OiJ0cmF2ZWwifV19fSx7a2V5OiJkZXNjcmlwdGlvbiIsaGVhZGVyOiJEZXNjcmlwdGlvbiIsZWRpdGFibGU6ITB9LHtrZXk6InJlY29uY2lsZWQiLGhlYWRlcjoiT0siLGVkaXRhYmxlOiEwLGVkaXRvcjoiY2hlY2tib3gifV19CiAgICAgICAgICBAY2VsbEVkaXQ9JHtzPT5jb25zb2xlLmxvZygiY2VsbEVkaXQiLHMuZGV0YWlsKX0KICAgICAgICAgIC5kYXRhPSR7W3tkYXRlOiIyMDIxLTA0LTAxIixhbW91bnQ6IjI0NjQuNjUgXHUyMEFDIixjYXRlZ29yeToib2ZmaWNlIixkZXNjcmlwdGlvbjoiUHJpbnRpbmcgUGFwZXIgLSBTVEFQTEVTIEJSRU1FTiIscmVjb25jaWxlZDohMH0se2RhdGU6IjIwMjEtMDQtMDIiLGFtb3VudDoiMTY1LjY1IFx1MjBBQyIsY2F0ZWdvcnk6ImhhcmR3YXJlIixkZXNjcmlwdGlvbjoiTG9naXRlY2ggTW91c2UgLSBsb2dpLmNvbSBPbmxpbmVTaG9wIixyZWNvbmNpbGVkOiExfSx7ZGF0ZToiMjAyMS0wNC0wMyIsYW1vdW50OiIyOTk5LDAwIFx1MjBBQyIsY2F0ZWdvcnk6ImhhcmR3YXJlIixkZXNjcmlwdGlvbjoiTWFjYm9vayBQcm8gMTZpbmNoIC0gQXBwbGUuZGUgT25saW5lU2hvcCIscmVjb25jaWxlZDohMX0se2RhdGU6IjIwMjEtMDQtMDEiLGFtb3VudDoiMjQ2NC42NSBcdTIwQUMiLGNhdGVnb3J5OiJvZmZpY2UiLGRlc2NyaXB0aW9uOiJPZmZpY2UtU3VwcGxpZXMgLSBTVEFQTEVTIEJSRU1FTiIscmVjb25jaWxlZDohMH0se2RhdGU6IjIwMjEtMDQtMDEiLGFtb3VudDoiMjQ2NC42NSBcdTIwQUMiLGNhdGVnb3J5OiJvZmZpY2UiLGRlc2NyaXB0aW9uOiJPZmZpY2UtU3VwcGxpZXMgLSBTVEFQTEVTIEJSRU1FTiIscmVjb25jaWxlZDohMH1dfQogICAgICAgICAgZGF0YU5hbWU9InRyYW5zYWN0aW9ucyIKICAgICAgICAgIC5kYXRhQWN0aW9ucz0iJHtbe25hbWU6InVwbG9hZCIsaWNvbk5hbWU6ImJlbGwiLHVzZVRhYmxlQmVoYXZpb3VyOiJ1cGxvYWQiLHR5cGU6WyJpblJvdyJdLGFjdGlvbkZ1bmM6aShhc3luYyBzPT57YWxlcnQocy5pdGVtLmFtb3VudCl9LCJhY3Rpb25GdW5jIil9LHtuYW1lOiJ2aXNpYmlsaXR5IixpY29uTmFtZToiY29weSIsdHlwZTpbImluUm93Il0sdXNlVGFibGVCZWhhdmlvdXI6InByZXZpZXciLGFjdGlvbkZ1bmM6aShhc3luYyBzPT57fSwiYWN0aW9uRnVuYyIpfSx7bmFtZToiY3JlYXRlIG5ldyIsaWNvbk5hbWU6Imluc3RhZ3JhbSIsdHlwZTpbImhlYWRlciJdLHVzZVRhYmxlQmVoYXZpb3VyOiJwcmV2aWV3IixhY3Rpb25GdW5jOmkoYXN5bmMgcz0+e30sImFjdGlvbkZ1bmMiKX0se25hbWU6InRvIGdhbGxlcnkiLGljb25OYW1lOiJtZXNzYWdlIix0eXBlOlsiZm9vdGVyIl0sdXNlVGFibGVCZWhhdmlvdXI6InByZXZpZXciLGFjdGlvbkZ1bmM6aShhc3luYyBzPT57fSwiYWN0aW9uRnVuYyIpfSx7bmFtZToiY29weSIsaWNvbk5hbWU6ImNvcHlTb2xpZCIsdHlwZTpbImNvbnRleHRtZW51IiwiaW5Sb3ciXSxhY3Rpb246aShhc3luYygpPT5udWxsLCJhY3Rpb24iKX0se25hbWU6ImVkaXQgKGZyb20gZGVtbykiLGljb25OYW1lOiJwZW5Ub1NxdWFyZSIsdHlwZTpbImNvbnRleHRtZW51Il0sYWN0aW9uOmkoYXN5bmMoKT0+bnVsbCwiYWN0aW9uIil9LHtuYW1lOiJwYXN0ZSIsaWNvbk5hbWU6InBhc3RlU29saWQiLHR5cGU6WyJjb250ZXh0bWVudSJdLGFjdGlvbjppKGFzeW5jKCk9Pm51bGwsImFjdGlvbiIpfSx7bmFtZToicHJldmlldyIsdHlwZTpbImRvdWJsZUNsaWNrIiwiY29udGV4dG1lbnUiXSxpY29uTmFtZToiZXllIixhY3Rpb25GdW5jOmkoYXN5bmMgcz0+KGFsZXJ0KHMuaXRlbS5hbW91bnQpLG51bGwpLCJhY3Rpb25GdW5jIil9XX0iCiAgICAgICAgPjwvZGVlcy10YWJsZT4KICAgICAgPC9kaXY+CiAgICAgIAogICAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICAgIDxoMiBjbGFzcz0iZGVtby10aXRsZSI+VGFibGUgd2l0aCBWZXJ0aWNhbCBMaW5lczwvaDI+CiAgICAgICAgPHAgY2xhc3M9ImRlbW8tZGVzY3JpcHRpb24iPkVuaGFuY2VkIGNvbHVtbiBzZXBhcmF0aW9uIGZvciBiZXR0ZXIgZGF0YSB0cmFja2luZy48L3A+CiAgICAgICAgPGRlZXMtdGFibGUKICAgICAgICAgIGhlYWRpbmcxPSJQcm9kdWN0IEludmVudG9yeSIKICAgICAgICAgIGhlYWRpbmcyPSJDdXJyZW50IHN0b2NrIGxldmVscyBhY3Jvc3Mgd2FyZWhvdXNlcyIKICAgICAgICAgIC5zaG93VmVydGljYWxMaW5lcz0keyEwfQogICAgICAgICAgLmRhdGE9JHtbe3Byb2R1Y3Q6J01hY0Jvb2sgUHJvIDE2Iicsd2FyZWhvdXNlX2E6IjQ1Iix3YXJlaG91c2VfYjoiMzIiLHdhcmVob3VzZV9jOiIyOCIsdG90YWw6IjEwNSIsc3RhdHVzOiJcdTI3MTMgSW4gU3RvY2sifSx7cHJvZHVjdDoiaVBob25lIDE1IFBybyIsd2FyZWhvdXNlX2E6IjEyMCIsd2FyZWhvdXNlX2I6Ijg5Iix3YXJlaG91c2VfYzoiMTU2Iix0b3RhbDoiMzY1IixzdGF0dXM6Ilx1MjcxMyBJbiBTdG9jayJ9LHtwcm9kdWN0OiJBaXJQb2RzIFBybyIsd2FyZWhvdXNlX2E6IjAiLHdhcmVob3VzZV9iOiIxMiIsd2FyZWhvdXNlX2M6IjUiLHRvdGFsOiIxNyIsc3RhdHVzOiJcdTI2QTAgTG93IFN0b2NrIn0se3Byb2R1Y3Q6ImlQYWQgQWlyIix3YXJlaG91c2VfYToiMjMiLHdhcmVob3VzZV9iOiI0NSIsd2FyZWhvdXNlX2M6IjY3Iix0b3RhbDoiMTM1IixzdGF0dXM6Ilx1MjcxMyBJbiBTdG9jayJ9XX0KICAgICAgICAgIGRhdGFOYW1lPSJwcm9kdWN0cyIKICAgICAgICA+PC9kZWVzLXRhYmxlPgogICAgICA8L2Rpdj4KICAgICAgCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgyIGNsYXNzPSJkZW1vLXRpdGxlIj5UYWJsZSB3aXRoIEZ1bGwgR3JpZDwvaDI+CiAgICAgICAgPHAgY2xhc3M9ImRlbW8tZGVzY3JpcHRpb24iPkNvbXBsZXRlIGdyaWQgbGluZXMgZm9yIG1heGltdW0gcmVhZGFiaWxpdHkgYW5kIHN0cnVjdHVyZS48L3A+CiAgICAgICAgPGRlZXMtdGFibGUKICAgICAgICAgIGhlYWRpbmcxPSJTZXJ2ZXIgTW9uaXRvcmluZyBEYXNoYm9hcmQiCiAgICAgICAgICBoZWFkaW5nMj0iUmVhbC10aW1lIG1ldHJpY3MgYWNyb3NzIHJlZ2lvbnMiCiAgICAgICAgICAuc2hvd0dyaWQ9JHshMH0KICAgICAgICAgIC5kYXRhPSR7W3tzZXJ2ZXI6IkFQSS0xIixyZWdpb246IlVTLUVhc3QiLGNwdToiNDUlIixtZW1vcnk6IjYyJSIsZGlzazoiNzglIixsYXRlbmN5OiIxMm1zIix1cHRpbWU6Ijk5LjklIixzdGF0dXM6Ilx1ezFGN0UyfSBIZWFsdGh5In0se3NlcnZlcjoiQVBJLTIiLHJlZ2lvbjoiRVUtV2VzdCIsY3B1OiIzOCUiLG1lbW9yeToiNTUlIixkaXNrOiI0NSUiLGxhdGVuY3k6IjI1bXMiLHVwdGltZToiOTkuOCUiLHN0YXR1czoiXHV7MUY3RTJ9IEhlYWx0aHkifSx7c2VydmVyOiJEQi1NYXN0ZXIiLHJlZ2lvbjoiVVMtRWFzdCIsY3B1OiI3MiUiLG1lbW9yeToiODElIixkaXNrOiI5MiUiLGxhdGVuY3k6IjhtcyIsdXB0aW1lOiIxMDAlIixzdGF0dXM6Ilx1ezFGN0UxfSBXYXJuaW5nIn0se3NlcnZlcjoiREItUmVwbGljYSIscmVnaW9uOiJFVS1XZXN0IixjcHU6IjIzJSIsbWVtb3J5OiIzNCUiLGRpc2s6IjQ1JSIsbGF0ZW5jeToiMTVtcyIsdXB0aW1lOiI5OS43JSIsc3RhdHVzOiJcdXsxRjdFMn0gSGVhbHRoeSJ9LHtzZXJ2ZXI6IkNhY2hlLTEiLHJlZ2lvbjoiQVAtU291dGgiLGNwdToiODklIixtZW1vcnk6IjkyJSIsZGlzazoiMTIlIixsYXRlbmN5OiIxMjBtcyIsdXB0aW1lOiI5OC41JSIsc3RhdHVzOiJcdXsxRjUzNH0gQ3JpdGljYWwifV19CiAgICAgICAgICBkYXRhTmFtZT0ic2VydmVycyIKICAgICAgICAgIC5kYXRhQWN0aW9ucz0iJHtbe25hbWU6IlNTSCBDb25uZWN0IixpY29uTmFtZToibHVjaWRlOnRlcm1pbmFsIix0eXBlOlsiaW5Sb3ciXSxhY3Rpb25GdW5jOmkoYXN5bmMgcz0+e2NvbnNvbGUubG9nKCJDb25uZWN0aW5nIHRvOiIscy5pdGVtLnNlcnZlcil9LCJhY3Rpb25GdW5jIil9LHtuYW1lOiJWaWV3IExvZ3MiLGljb25OYW1lOiJsdWNpZGU6ZmlsZS10ZXh0Iix0eXBlOlsiaW5Sb3ciLCJjb250ZXh0bWVudSJdLGFjdGlvbkZ1bmM6aShhc3luYyBzPT57Y29uc29sZS5sb2coIlZpZXdpbmcgbG9ncyBmb3I6IixzLml0ZW0uc2VydmVyKX0sImFjdGlvbkZ1bmMiKX0se25hbWU6IlJlc3RhcnQgU2VydmVyIixpY29uTmFtZToibHVjaWRlOnJlZnJlc2gtY3ciLHR5cGU6WyJjb250ZXh0bWVudSJdLGFjdGlvbkZ1bmM6aShhc3luYyBzPT57Y29uc29sZS5sb2coIlJlc3RhcnRpbmc6IixzLml0ZW0uc2VydmVyKX0sImFjdGlvbkZ1bmMiKX1dfSIKICAgICAgICA+PC9kZWVzLXRhYmxlPgogICAgICA8L2Rpdj4KICAgICAgCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgyIGNsYXNzPSJkZW1vLXRpdGxlIj5UYWJsZSB3aXRoIEhvcml6b250YWwgTGluZXMgT25seTwvaDI+CiAgICAgICAgPHAgY2xhc3M9ImRlbW8tZGVzY3JpcHRpb24iPkVtcGhhc2lzIG9uIHJvdyBzZXBhcmF0aW9uIHdpdGhvdXQgY29sdW1uIGRpdmlkZXJzLjwvcD4KICAgICAgICA8ZGVlcy10YWJsZQogICAgICAgICAgaGVhZGluZzE9IlNhbGVzIFBlcmZvcm1hbmNlIgogICAgICAgICAgaGVhZGluZzI9IlRvcCBwZXJmb3JtZXJzIHRoaXMgcXVhcnRlciIKICAgICAgICAgIC5zaG93SG9yaXpvbnRhbExpbmVzPSR7ITB9CiAgICAgICAgICAuc2hvd1ZlcnRpY2FsTGluZXM9JHshMX0KICAgICAgICAgIC5kYXRhPSR7W3tzYWxlc3BlcnNvbjoiRW1pbHkgSm9obnNvbiIscmVnaW9uOiJOb3J0aCBBbWVyaWNhIixkZWFsc19jbG9zZWQ6IjQyIixyZXZlbnVlOiIkMS4yTSIscXVvdGFfYWNoaWV2ZW1lbnQ6IjEyOCUiLHJhdGluZzoiXHUyQjUwXHUyQjUwXHUyQjUwXHUyQjUwXHUyQjUwIn0se3NhbGVzcGVyc29uOiJNaWNoYWVsIENoZW4iLHJlZ2lvbjoiQXNpYSBQYWNpZmljIixkZWFsc19jbG9zZWQ6IjM4IixyZXZlbnVlOiIkOTgwSyIscXVvdGFfYWNoaWV2ZW1lbnQ6IjExNSUiLHJhdGluZzoiXHUyQjUwXHUyQjUwXHUyQjUwXHUyQjUwXHUyQjUwIn0se3NhbGVzcGVyc29uOiJTYXJhaCBXaWxsaWFtcyIscmVnaW9uOiJFdXJvcGUiLGRlYWxzX2Nsb3NlZDoiMzUiLHJldmVudWU6IiQ4NzVLIixxdW90YV9hY2hpZXZlbWVudDoiMTA4JSIscmF0aW5nOiJcdTJCNTBcdTJCNTBcdTJCNTBcdTJCNTAifSx7c2FsZXNwZXJzb246IkRhdmlkIEdhcmNpYSIscmVnaW9uOiJMYXRpbiBBbWVyaWNhIixkZWFsc19jbG9zZWQ6IjMxIixyZXZlbnVlOiIkNzUwSyIscXVvdGFfYWNoaWV2ZW1lbnQ6Ijk1JSIscmF0aW5nOiJcdTJCNTBcdTJCNTBcdTJCNTBcdTJCNTAifV19CiAgICAgICAgICBkYXRhTmFtZT0ic2FsZXMgcmVwcyIKICAgICAgICA+PC9kZWVzLXRhYmxlPgogICAgICA8L2Rpdj4KICAgICAgCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgyIGNsYXNzPSJkZW1vLXRpdGxlIj5TaW1wbGUgVGFibGUgKE5vIEdyaWQpPC9oMj4KICAgICAgICA8cCBjbGFzcz0iZGVtby1kZXNjcmlwdGlvbiI+Q2xlYW4sIG1pbmltYWwgZGVzaWduIHdpdGhvdXQgZ3JpZCBsaW5lcy4gU2V0IHNob3dHcmlkIHRvIGZhbHNlIHRvIGRpc2FibGUgdGhlIGRlZmF1bHQgZ3JpZC48L3A+CiAgICAgICAgPGRlZXMtdGFibGUKICAgICAgICAgIGhlYWRpbmcxPSJUZWFtIE1lbWJlcnMiCiAgICAgICAgICBoZWFkaW5nMj0iRW5naW5lZXJpbmcgRGVwYXJ0bWVudCIKICAgICAgICAgIC5zaG93R3JpZD0keyExfQogICAgICAgICAgLmRhdGE9JHtbe25hbWU6IkFsaWNlIEpvaG5zb24iLHJvbGU6IkxlYWQgRW5naW5lZXIiLGVtYWlsOiJhbGljZUBjb21wYW55LmNvbSIsbG9jYXRpb246IlNhbiBGcmFuY2lzY28iLGpvaW5lZDoiMjAyMC0wMy0xNSJ9LHtuYW1lOiJCb2IgU21pdGgiLHJvbGU6IlNlbmlvciBEZXZlbG9wZXIiLGVtYWlsOiJib2JAY29tcGFueS5jb20iLGxvY2F0aW9uOiJOZXcgWW9yayIsam9pbmVkOiIyMDE5LTA3LTIyIn0se25hbWU6IkNoYXJsaWUgRGF2aXMiLHJvbGU6IkRldk9wcyBFbmdpbmVlciIsZW1haWw6ImNoYXJsaWVAY29tcGFueS5jb20iLGxvY2F0aW9uOiJMb25kb24iLGpvaW5lZDoiMjAyMS0wMS0xMCJ9LHtuYW1lOiJEaWFuYSBNYXJ0aW5leiIscm9sZToiRnJvbnRlbmQgRGV2ZWxvcGVyIixlbWFpbDoiZGlhbmFAY29tcGFueS5jb20iLGxvY2F0aW9uOiJCYXJjZWxvbmEiLGpvaW5lZDoiMjAyMi0wNS0xOCJ9XX0KICAgICAgICAgIGRhdGFOYW1lPSJ0ZWFtIG1lbWJlcnMiCiAgICAgICAgPjwvZGVlcy10YWJsZT4KICAgICAgPC9kaXY+CiAgICAgIAogICAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICAgIDxoMiBjbGFzcz0iZGVtby10aXRsZSI+VGFibGUgd2l0aCBDdXN0b20gRGlzcGxheSBGdW5jdGlvbjwvaDI+CiAgICAgICAgPHAgY2xhc3M9ImRlbW8tZGVzY3JpcHRpb24iPlRyYW5zZm9ybSBkYXRhIGZvciBkaXNwbGF5IHVzaW5nIGN1c3RvbSBmb3JtYXR0aW5nLjwvcD4KICAgICAgICA8ZGVlcy10YWJsZQogICAgICAgICAgaGVhZGluZzE9IlNhbGVzIFJlcG9ydCIKICAgICAgICAgIGhlYWRpbmcyPSJRNCAyMDIzIFBlcmZvcm1hbmNlIgogICAgICAgICAgLmRhdGE9JHtbe3Byb2R1Y3Q6IkVudGVycHJpc2UgTGljZW5zZSIsdW5pdHM6NDUscmV2ZW51ZToyMjVlMyxncm93dGg6LjIzLGZvcmVjYXN0OjI4ZTR9LHtwcm9kdWN0OiJQcm9mZXNzaW9uYWwgTGljZW5zZSIsdW5pdHM6MTI4LHJldmVudWU6MTI4ZTMsZ3Jvd3RoOi4xNSxmb3JlY2FzdDoxNDdlM30se3Byb2R1Y3Q6IlN0YXJ0ZXIgTGljZW5zZSIsdW5pdHM6MzQyLHJldmVudWU6Njg0MDAsZ3Jvd3RoOi40Mixmb3JlY2FzdDo5N2UzfV19CiAgICAgICAgICAuZGlzcGxheUZ1bmN0aW9uPSR7cz0+KHtQcm9kdWN0OnMucHJvZHVjdCwiVW5pdHMgU29sZCI6cy51bml0cy50b0xvY2FsZVN0cmluZygpLFJldmVudWU6IiQiK3MucmV2ZW51ZS50b0xvY2FsZVN0cmluZygpLEdyb3d0aDoocy5ncm93dGgqMTAwKS50b0ZpeGVkKDEpKyIlIiwiUTEgMjAyNCBGb3JlY2FzdCI6IiQiK3MuZm9yZWNhc3QudG9Mb2NhbGVTdHJpbmcoKX0pfQogICAgICAgICAgZGF0YU5hbWU9InByb2R1Y3RzIgogICAgICAgID48L2RlZXMtdGFibGU+CiAgICAgIDwvZGl2PgogICAgICAKICAgICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgICA8aDIgY2xhc3M9ImRlbW8tdGl0bGUiPkVtcHR5IFRhYmxlIFN0YXRlPC9oMj4KICAgICAgICA8cCBjbGFzcz0iZGVtby1kZXNjcmlwdGlvbiI+SG93IHRoZSB0YWJsZSBsb29rcyB3aGVuIG5vIGRhdGEgaXMgYXZhaWxhYmxlLjwvcD4KICAgICAgICA8ZGVlcy10YWJsZQogICAgICAgICAgaGVhZGluZzE9Ik5vIERhdGEgQXZhaWxhYmxlIgogICAgICAgICAgaGVhZGluZzI9IlRoaXMgdGFibGUgaXMgY3VycmVudGx5IGVtcHR5IgogICAgICAgICAgLmRhdGE9JHtbXX0KICAgICAgICAgIGRhdGFOYW1lPSJpdGVtcyIKICAgICAgICA+PC9kZWVzLXRhYmxlPgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgyIGNsYXNzPSJkZW1vLXRpdGxlIj5TY2hlbWEtRmlyc3QgQ29sdW1ucyAoTmV3KTwvaDI+CiAgICAgICAgPHAgY2xhc3M9ImRlbW8tZGVzY3JpcHRpb24iPkRlZmluZXMgY29sdW1ucyBleHBsaWNpdGx5IGFuZCByZW5kZXJzIHZpYSBzY2hlbWEuIE5vIGRpc3BsYXlGdW5jdGlvbiBuZWVkZWQuPC9wPgogICAgICAgIDxkZWVzLXRhYmxlCiAgICAgICAgICBoZWFkaW5nMT0iVXNlcnMgKFNjaGVtYS1GaXJzdCkiCiAgICAgICAgICBoZWFkaW5nMj0iQ29sdW1ucyBkZWZpbmUgcmVuZGVyaW5nIGFuZCBvcmRlciIKICAgICAgICAgIC5jb2x1bW5zPSR7W3trZXk6Im5hbWUiLGhlYWRlcjoiTmFtZSIsc29ydGFibGU6ITB9LHtrZXk6ImVtYWlsIixoZWFkZXI6IkVtYWlsIixyZW5kZXJlcjppKHM9PndgPGRlZXMtYmFkZ2U+JHtzfTwvZGVlcy1iYWRnZT5gLCJyZW5kZXJlciIpfSx7a2V5OiJqb2luZWRBdCIsaGVhZGVyOiJKb2luZWQiLHJlbmRlcmVyOmkocz0+bmV3IERhdGUocykudG9Mb2NhbGVEYXRlU3RyaW5nKCksInJlbmRlcmVyIil9XX0KICAgICAgICAgIC5kYXRhPSR7W3tuYW1lOiJBbGljZSIsZW1haWw6ImFsaWNlQGV4YW1wbGUuY29tIixqb2luZWRBdDoiMjAyMi0wOC0wMSJ9LHtuYW1lOiJCb2IiLGVtYWlsOiJib2JAZXhhbXBsZS5jb20iLGpvaW5lZEF0OiIyMDIxLTEyLTExIn0se25hbWU6IkNhcm9sIixlbWFpbDoiY2Fyb2xAZXhhbXBsZS5jb20iLGpvaW5lZEF0OiIyMDIzLTAzLTIyIn1dfQogICAgICAgICAgZGF0YU5hbWU9InVzZXJzIgogICAgICAgID48L2RlZXMtdGFibGU+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgICA8aDIgY2xhc3M9ImRlbW8tdGl0bGUiPlBhcnRpYWwgU2NoZW1hICsgQXVnbWVudCAoTmV3KTwvaDI+CiAgICAgICAgPHAgY2xhc3M9ImRlbW8tZGVzY3JpcHRpb24iPlByb3ZpZGVzIG9ubHkgdGhlIGltcG9ydGFudCBjb2x1bW5zOyB0aGUgcmVzdCBhcmUgbWVyZ2VkIGluIGZyb20gZGlzcGxheUZ1bmN0aW9uLjwvcD4KICAgICAgICA8ZGVlcy10YWJsZQogICAgICAgICAgaGVhZGluZzE9IlVzZXJzIChQYXJ0aWFsICsgQXVnbWVudCkiCiAgICAgICAgICBoZWFkaW5nMj0iTWlzc2luZyBjb2x1bW5zIGFyZSBkZXJpdmVkIgogICAgICAgICAgLmNvbHVtbnM9JHtbe2tleToibmFtZSIsaGVhZGVyOiJOYW1lIixzb3J0YWJsZTohMH1dfQogICAgICAgICAgLmRpc3BsYXlGdW5jdGlvbj0ke3M9Pih7bmFtZTpzLm5hbWUsZW1haWw6cy5lbWFpbCxyb2xlOnMucm9sZX0pfQogICAgICAgICAgLmF1Z21lbnRGcm9tRGlzcGxheUZ1bmN0aW9uPSR7ITB9CiAgICAgICAgICAuZGF0YT0ke1t7bmFtZToiRXJpbiIsZW1haWw6ImVyaW5AZXhhbXBsZS5jb20iLHJvbGU6IkFkbWluIn0se25hbWU6IkZpbm4iLGVtYWlsOiJmaW5uQGV4YW1wbGUuY29tIixyb2xlOiJVc2VyIn0se25hbWU6IkdpbmEiLGVtYWlsOiJnaW5hQGV4YW1wbGUuY29tIixyb2xlOiJVc2VyIn1dfQogICAgICAgICAgZGF0YU5hbWU9InVzZXJzIgogICAgICAgID48L2RlZXMtdGFibGU+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIiAKICAgICAgICAgICBAc2VsZWN0aW9uQ2hhbmdlPSR7cz0+e2NvbnNvbGUubG9nKCJTZWxlY3Rpb24gY2hhbmdlZCIscy5kZXRhaWwpfX0KICAgICAgICAgICBAc2VhcmNoLWNoYW5nZWQ9JHtzPT57bGV0IGU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhYmxlRmlsdGVyU2VsZWN0RGVtbyIpO2UmJmUuc2V0RmlsdGVyVGV4dChzLmRldGFpbC52YWx1ZSl9fQogICAgICAgICAgIEBzZWFyY2gtc3VibWl0PSR7cz0+e2xldCBlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YWJsZUZpbHRlclNlbGVjdERlbW8iKTtlJiZlLnNldEZpbHRlclRleHQocy5kZXRhaWwudmFsdWUpfX0KICAgICAgPgogICAgICAgIDxoMiBjbGFzcz0iZGVtby10aXRsZSI+RmlsdGVyaW5nICsgTXVsdGktU2VsZWN0aW9uIChOZXcpPC9oMj4KICAgICAgICA8cCBjbGFzcz0iZGVtby1kZXNjcmlwdGlvbiI+VXNlIHRoZSBzZWFyY2ggYmFyIHRvIGZpbHRlciByb3dzOyB0b2dnbGUgc2VsZWN0aW9uIHZpYSBjaGVja2JveGVzLiBDbGljayBoZWFkZXJzIHRvIHNvcnQuPC9wPgogICAgICAgIDxkZWVzLXNlYXJjaGJhcj48L2RlZXMtc2VhcmNoYmFyPgogICAgICAgIDxkaXYgc3R5bGU9ImhlaWdodDogMTJweCI+PC9kaXY+CiAgICAgICAgPGRlZXMtdGFibGUKICAgICAgICAgIGlkPSJ0YWJsZUZpbHRlclNlbGVjdERlbW8iCiAgICAgICAgICBoZWFkaW5nMT0iSW52ZW50b3J5IChGaWx0ZXIgKyBTZWxlY3QpIgogICAgICAgICAgaGVhZGluZzI9IlRyeSB0eXBpbmcgdG8gZmlsdGVyIGFuZCBzZWxlY3RpbmcgbXVsdGlwbGUgcm93cyIKICAgICAgICAgIC5zZWxlY3Rpb25Nb2RlPSR7Im11bHRpIn0KICAgICAgICAgIC5yb3dLZXk9JHsic2t1In0KICAgICAgICAgIC5jb2x1bW5zPSR7W3trZXk6InNrdSIsaGVhZGVyOiJTS1UiLHNvcnRhYmxlOiEwfSx7a2V5OiJuYW1lIixoZWFkZXI6Ik5hbWUiLHNvcnRhYmxlOiEwfSx7a2V5OiJzdG9jayIsaGVhZGVyOiJTdG9jayIsc29ydGFibGU6ITB9XX0KICAgICAgICAgIC5kYXRhPSR7W3tza3U6IkEtMTAwIixuYW1lOiJVU0ItQyBDYWJsZSIsc3RvY2s6MTIwfSx7c2t1OiJBLTEwMSIsbmFtZToiV2lyZWxlc3MgTW91c2UiLHN0b2NrOjU1fSx7c2t1OiJBLTEwMiIsbmFtZToiTGFwdG9wIFN0YW5kIixzdG9jazoxOH0se3NrdToiQi0yMDAiLG5hbWU6IktleWJvYXJkIChJU08pIixzdG9jazo4OX0se3NrdToiQi0yMDEiLG5hbWU6IkhETUkgQWRhcHRlciIsc3RvY2s6MH0se3NrdToiQy0zMDAiLG5hbWU6IldlYmNhbSAxMDgwcCIsc3RvY2s6NDJ9XX0KICAgICAgICAgIGRhdGFOYW1lPSJpdGVtcyIKICAgICAgICA+PC9kZWVzLXRhYmxlPgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgyIGNsYXNzPSJkZW1vLXRpdGxlIj5Db2x1bW4gRmlsdGVycyArIFN0aWNreSBIZWFkZXIgKE5ldyk8L2gyPgogICAgICAgIDxwIGNsYXNzPSJkZW1vLWRlc2NyaXB0aW9uIj5QZXItY29sdW1uIHF1aWNrIGZpbHRlcnMgYW5kIHN0aWNreSBoZWFkZXIgd2l0aCBpbnRlcm5hbCBzY3JvbGwuIFRyeSBmaWx0ZXJpbmcgdGhlIE5hbWUgY29sdW1uLiBVc2VzIC0tdGFibGUtbWF4LWhlaWdodCB2YXIuPC9wPgogICAgICAgIDxzdHlsZT4KICAgICAgICAgIGRlZXMtdGFibGVbZml4ZWQtaGVpZ2h0XSB7IC0tdGFibGUtbWF4LWhlaWdodDogMjIwcHg7IH0KICAgICAgICA8L3N0eWxlPgogICAgICAgIDxkZWVzLXRhYmxlCiAgICAgICAgICBoZWFkaW5nMT0iRW1wbG95ZWVzIgogICAgICAgICAgaGVhZGluZzI9IlF1aWNrIGZpbHRlciBwZXIgY29sdW1uICsgc3RpY2t5IGhlYWRlciIKICAgICAgICAgIC5zaG93Q29sdW1uRmlsdGVycz0keyEwfQogICAgICAgICAgLmZpeGVkSGVpZ2h0PSR7ITB9CiAgICAgICAgICAuY29sdW1ucz0ke1t7a2V5OiJuYW1lIixoZWFkZXI6Ik5hbWUiLHNvcnRhYmxlOiEwfSx7a2V5OiJlbWFpbCIsaGVhZGVyOiJFbWFpbCIsc29ydGFibGU6ITB9LHtrZXk6ImRlcGFydG1lbnQiLGhlYWRlcjoiRGVwYXJ0bWVudCIsc29ydGFibGU6ITB9XX0KICAgICAgICAgIC5kYXRhPSR7W3tuYW1lOiJBbGljZSBKb2huc29uIixlbWFpbDoiYWxpY2VAY29ycC5jb20iLGRlcGFydG1lbnQ6IkVuZ2luZWVyaW5nIn0se25hbWU6IkJvYiBTbWl0aCIsZW1haWw6ImJvYkBjb3JwLmNvbSIsZGVwYXJ0bWVudDoiU2FsZXMifSx7bmFtZToiQ2hhcmxpZSBEYXZpcyIsZW1haWw6ImNoYXJsaWVAY29ycC5jb20iLGRlcGFydG1lbnQ6IkhSIn0se25hbWU6IkRpYW5hIE1hcnRpbmV6IixlbWFpbDoiZGlhbmFAY29ycC5jb20iLGRlcGFydG1lbnQ6IkVuZ2luZWVyaW5nIn0se25hbWU6IkV0aGFuIEJyb3duIixlbWFpbDoiZXRoYW5AY29ycC5jb20iLGRlcGFydG1lbnQ6IkZpbmFuY2UifSx7bmFtZToiRmlvbmEgQ2xhcmsiLGVtYWlsOiJmaW9uYUBjb3JwLmNvbSIsZGVwYXJ0bWVudDoiU2FsZXMifSx7bmFtZToiR3JhY2UgTGVlIixlbWFpbDoiZ3JhY2VAY29ycC5jb20iLGRlcGFydG1lbnQ6IkVuZ2luZWVyaW5nIn0se25hbWU6IkhlbnJ5IFdpbHNvbiIsZW1haWw6ImhlbnJ5QGNvcnAuY29tIixkZXBhcnRtZW50OiJNYXJrZXRpbmcifSx7bmFtZToiSXJlbmUgV2Fsa2VyIixlbWFpbDoiaXJlbmVAY29ycC5jb20iLGRlcGFydG1lbnQ6IkZpbmFuY2UifSx7bmFtZToiSmFjayBUdXJuZXIiLGVtYWlsOiJqYWNrQGNvcnAuY29tIixkZXBhcnRtZW50OiJTdXBwb3J0In1dfQogICAgICAgICAgZGF0YU5hbWU9ImVtcGxveWVlcyIKICAgICAgICA+PC9kZWVzLXRhYmxlPgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiIKICAgICAgICBAc2VhcmNoUmVxdWVzdD0ke2FzeW5jIHM9PntsZXR7cXVlcnk6ZX09cy5kZXRhaWx8fHtxdWVyeToiIn0sdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VydmVyU2VhcmNoRGVtbyIpLGE9W3tpZDoxLG5hbWU6IkFsaWNlIixjaXR5OiJCZXJsaW4iLHRpdGxlOiJFbmdpbmVlciJ9LHtpZDoyLG5hbWU6IkJvYiIsY2l0eToiUGFyaXMiLHRpdGxlOiJEZXNpZ25lciJ9LHtpZDozLG5hbWU6IkNoYXJsaWUiLGNpdHk6IkxvbmRvbiIsdGl0bGU6Ik1hbmFnZXIifSx7aWQ6NCxuYW1lOiJEaWFuYSIsY2l0eToiTWFkcmlkIix0aXRsZToiRW5naW5lZXIifSx7aWQ6NSxuYW1lOiJFdGhhbiIsY2l0eToiUm9tZSIsdGl0bGU6IlN1cHBvcnQifV07YXdhaXQgbmV3IFByb21pc2Uobz0+c2V0VGltZW91dChvLDMwMCkpO2xldCByPVN0cmluZyhlfHwiIikudG9Mb3dlckNhc2UoKSxuPXI/YS5maWx0ZXIobz0+T2JqZWN0LnZhbHVlcyhvKS5zb21lKGw9PlN0cmluZyhsKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHIpKSk6YTt0LmRhdGE9bn19CiAgICAgID4KICAgICAgICA8aDIgY2xhc3M9ImRlbW8tdGl0bGUiPlNlcnZlciBTZWFyY2ggKE5ldyk8L2gyPgogICAgICAgIDxwIGNsYXNzPSJkZW1vLWRlc2NyaXB0aW9uIj5TZWxlY3QgU2VydmVyIG1vZGUsIHR5cGUgYSBxdWVyeSwgYW5kIHdhdGNoIHRoZSB0YWJsZSBmZXRjaCBzaW11bGF0ZWQgcmVzdWx0cy48L3A+CiAgICAgICAgPGRlZXMtdGFibGUKICAgICAgICAgIGlkPSJzZXJ2ZXJTZWFyY2hEZW1vIgogICAgICAgICAgaGVhZGluZzE9IlBlb3BsZSAoU2VydmVyIFNlYXJjaCkiCiAgICAgICAgICBoZWFkaW5nMj0iQ2xpY2sgU2VhcmNoLCBjaG9vc2UgU2VydmVyIG1vZGUsIGFuZCB0eXBlIgogICAgICAgICAgLmNvbHVtbnM9JHtbe2tleToibmFtZSIsaGVhZGVyOiJOYW1lIn0se2tleToiY2l0eSIsaGVhZGVyOiJDaXR5In0se2tleToidGl0bGUiLGhlYWRlcjoiVGl0bGUifV19CiAgICAgICAgICAuZGF0YT0ke1t7aWQ6MSxuYW1lOiJBbGljZSIsY2l0eToiQmVybGluIix0aXRsZToiRW5naW5lZXIifSx7aWQ6MixuYW1lOiJCb2IiLGNpdHk6IlBhcmlzIix0aXRsZToiRGVzaWduZXIifSx7aWQ6MyxuYW1lOiJDaGFybGllIixjaXR5OiJMb25kb24iLHRpdGxlOiJNYW5hZ2VyIn0se2lkOjQsbmFtZToiRGlhbmEiLGNpdHk6Ik1hZHJpZCIsdGl0bGU6IkVuZ2luZWVyIn0se2lkOjUsbmFtZToiRXRoYW4iLGNpdHk6IlJvbWUiLHRpdGxlOiJTdXBwb3J0In1dfQogICAgICAgICAgZGF0YU5hbWU9InBlb3BsZSIKICAgICAgICA+PC9kZWVzLXRhYmxlPgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgyIGNsYXNzPSJkZW1vLXRpdGxlIj5NdWx0aS1Db2x1bW4gU29ydDwvaDI+CiAgICAgICAgPHAgY2xhc3M9ImRlbW8tZGVzY3JpcHRpb24iPgogICAgICAgICAgQ2xpY2sgYW55IGNvbHVtbiBoZWFkZXIgZm9yIGEgc2luZ2xlLWNvbHVtbiBzb3J0LiBIb2xkIFNoaWZ0IHdoaWxlIGNsaWNraW5nIHRvIGFkZCB0aGUKICAgICAgICAgIGNvbHVtbiB0byBhIG11bHRpLXNvcnQgY2FzY2FkZSAob3IgY3ljbGUgaXRzIGRpcmVjdGlvbikuIFJpZ2h0LWNsaWNrIGFueSBzb3J0YWJsZSBoZWFkZXIKICAgICAgICAgIHRvIG9wZW4gYSBtZW51IHdoZXJlIHlvdSBjYW4gcGluIGEgY29sdW1uIHRvIGEgc3BlY2lmaWMgcHJpb3JpdHkgc2xvdCwgcmVtb3ZlIGl0LCBvcgogICAgICAgICAgY2xlYXIgdGhlIGNhc2NhZGUuCiAgICAgICAgPC9wPgogICAgICAgIDxkZWVzLXRhYmxlCiAgICAgICAgICBoZWFkaW5nMT0iUGVvcGxlIERpcmVjdG9yeSIKICAgICAgICAgIGhlYWRpbmcyPSJQcmUtc2VlZGVkIHdpdGggZGVwYXJ0bWVudCDilrIgMSwgbmFtZSDilrIgMiIKICAgICAgICAgIC5zb3J0Qnk9JHtbe2tleToiZGVwYXJ0bWVudCIsZGlyOiJhc2MifSx7a2V5OiJuYW1lIixkaXI6ImFzYyJ9XX0KICAgICAgICAgIC5jb2x1bW5zPSR7W3trZXk6ImRlcGFydG1lbnQiLGhlYWRlcjoiRGVwYXJ0bWVudCIsc29ydGFibGU6ITB9LHtrZXk6Im5hbWUiLGhlYWRlcjoiTmFtZSIsc29ydGFibGU6ITB9LHtrZXk6InJvbGUiLGhlYWRlcjoiUm9sZSIsc29ydGFibGU6ITB9LHtrZXk6ImNyZWF0ZWRBdCIsaGVhZGVyOiJDcmVhdGVkIixzb3J0YWJsZTohMH0se2tleToibG9jYXRpb24iLGhlYWRlcjoiTG9jYXRpb24iLHNvcnRhYmxlOiEwfSx7a2V5OiJzdGF0dXMiLGhlYWRlcjoiU3RhdHVzIixzb3J0YWJsZTohMH1dfQogICAgICAgICAgLmRhdGE9JHtbe2RlcGFydG1lbnQ6IlImRCIsbmFtZToiQWxpY2UgSm9obnNvbiIscm9sZToiRW5naW5lZXIiLGNyZWF0ZWRBdDoiMjAyMy0wMS0xMiIsbG9jYXRpb246IkJlcmxpbiIsc3RhdHVzOiJBY3RpdmUifSx7ZGVwYXJ0bWVudDoiUiZEIixuYW1lOiJEaWFuYSBNYXJ0aW5leiIscm9sZToiRW5naW5lZXIiLGNyZWF0ZWRBdDoiMjAyMC0wNi0zMCIsbG9jYXRpb246Ik1hZHJpZCIsc3RhdHVzOiJBY3RpdmUifSx7ZGVwYXJ0bWVudDoiUiZEIixuYW1lOiJNYXJrIExlZSIscm9sZToiRW5naW5lZXIiLGNyZWF0ZWRBdDoiMjAyNC0wMy0wNCIsbG9jYXRpb246IkJlcmxpbiIsc3RhdHVzOiJBY3RpdmUifSx7ZGVwYXJ0bWVudDoiRGVzaWduIixuYW1lOiJCb2IgU21pdGgiLHJvbGU6IkRlc2lnbmVyIixjcmVhdGVkQXQ6IjIwMjItMTEtMDUiLGxvY2F0aW9uOiJQYXJpcyIsc3RhdHVzOiJBY3RpdmUifSx7ZGVwYXJ0bWVudDoiRGVzaWduIixuYW1lOiJTYXJhIEtpbSIscm9sZToiRGVzaWduZXIiLGNyZWF0ZWRBdDoiMjAyMS0wOC0xOSIsbG9jYXRpb246IlBhcmlzIixzdGF0dXM6Ik9uIExlYXZlIn0se2RlcGFydG1lbnQ6Ik9wcyIsbmFtZToiQ2hhcmxpZSBEYXZpcyIscm9sZToiTWFuYWdlciIsY3JlYXRlZEF0OiIyMDIxLTA0LTIxIixsb2NhdGlvbjoiTG9uZG9uIixzdGF0dXM6Ik9uIExlYXZlIn0se2RlcGFydG1lbnQ6Ik9wcyIsbmFtZToiSGVsZW5hIFZvc3MiLHJvbGU6IlNSRSIsY3JlYXRlZEF0OiIyMDIzLTA3LTIyIixsb2NhdGlvbjoiTG9uZG9uIixzdGF0dXM6IkFjdGl2ZSJ9LHtkZXBhcnRtZW50OiJRQSIsbmFtZToiRmlvbmEgQ2xhcmsiLHJvbGU6IlFBIixjcmVhdGVkQXQ6IjIwMjItMDMtMTQiLGxvY2F0aW9uOiJWaWVubmEiLHN0YXR1czoiQWN0aXZlIn0se2RlcGFydG1lbnQ6IlFBIixuYW1lOiJUb21ceEUxcyBSaXZlcmEiLHJvbGU6IlFBIixjcmVhdGVkQXQ6IjIwMjQtMDEtMDkiLGxvY2F0aW9uOiJNYWRyaWQiLHN0YXR1czoiQWN0aXZlIn0se2RlcGFydG1lbnQ6IkNTIixuYW1lOiJFdGhhbiBCcm93biIscm9sZToiU3VwcG9ydCIsY3JlYXRlZEF0OiIyMDE5LTA5LTE4Iixsb2NhdGlvbjoiUm9tZSIsc3RhdHVzOiJJbmFjdGl2ZSJ9XX0KICAgICAgICA+PC9kZWVzLXRhYmxlPgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgyIGNsYXNzPSJkZW1vLXRpdGxlIj5XaWRlIFByb3BlcnRpZXMgKyBNYW55IEFjdGlvbnM8L2gyPgogICAgICAgIDxwIGNsYXNzPSJkZW1vLWRlc2NyaXB0aW9uIj5BIHRhYmxlIHdpdGggbWFueSBjb2x1bW5zIGFuZCByaWNoIGFjdGlvbnMgdG8gc3RyZXNzIHRlc3QgbGF5b3V0IGFuZCBzdGlja3kgQWN0aW9ucy48L3A+CiAgICAgICAgPGRlZXMtdGFibGUKICAgICAgICAgIGhlYWRpbmcxPSJQZW9wbGUgRGlyZWN0b3J5IgogICAgICAgICAgaGVhZGluZzI9Ik1hbnkgcHJvcGVydGllcyBhbmQgYWN0aW9ucyIKICAgICAgICAgIC5jb2x1bW5zPSR7W3trZXk6ImlkIixoZWFkZXI6IklEIixzb3J0YWJsZTohMH0se2tleToibmFtZSIsaGVhZGVyOiJOYW1lIixzb3J0YWJsZTohMH0se2tleToicm9sZSIsaGVhZGVyOiJSb2xlIixzb3J0YWJsZTohMH0se2tleToiZGVwYXJ0bWVudCIsaGVhZGVyOiJEZXBhcnRtZW50Iixzb3J0YWJsZTohMH0se2tleToiZW1haWwiLGhlYWRlcjoiRW1haWwifSx7a2V5OiJwaG9uZSIsaGVhZGVyOiJQaG9uZSJ9LHtrZXk6ImxvY2F0aW9uIixoZWFkZXI6IkxvY2F0aW9uIixzb3J0YWJsZTohMH0se2tleToic3RhdHVzIixoZWFkZXI6IlN0YXR1cyIsc29ydGFibGU6ITB9LHtrZXk6ImNyZWF0ZWRBdCIsaGVhZGVyOiJDcmVhdGVkIixzb3J0YWJsZTohMH0se2tleToidXBkYXRlZEF0IixoZWFkZXI6IlVwZGF0ZWQiLHNvcnRhYmxlOiEwfSx7a2V5OiJsYXN0TG9naW4iLGhlYWRlcjoiTGFzdCBMb2dpbiIsc29ydGFibGU6ITB9LHtrZXk6InByb2plY3RzIixoZWFkZXI6IlByb2plY3RzIn0se2tleToidGFncyIsaGVhZGVyOiJUYWdzIn0se2tleToibm90ZXMiLGhlYWRlcjoiTm90ZXMifV19CiAgICAgICAgICAuZGF0YT0ke1t7aWQ6MSxuYW1lOiJBbGljZSBKb2huc29uIixyb2xlOiJFbmdpbmVlciIsZGVwYXJ0bWVudDoiUiZEIixlbWFpbDoiYWxpY2VAY29ycC5jb20iLHBob25lOiIrMSAyMDIgNTU1IDAxMTEiLGxvY2F0aW9uOiJCZXJsaW4iLHN0YXR1czoiQWN0aXZlIixjcmVhdGVkQXQ6IjIwMjMtMDEtMTIiLHVwZGF0ZWRBdDoiMjAyNC0wNS0wMyIsbGFzdExvZ2luOiIyMDI0LTEwLTAxIixwcm9qZWN0czo1LHRhZ3M6InR5cGVzY3JpcHQsIHVpIixub3RlczoiTWVudG9yIn0se2lkOjIsbmFtZToiQm9iIFNtaXRoIixyb2xlOiJEZXNpZ25lciIsZGVwYXJ0bWVudDoiRGVzaWduIixlbWFpbDoiYm9iQGNvcnAuY29tIixwaG9uZToiKzEgMjAyIDU1NSAwMTEyIixsb2NhdGlvbjoiUGFyaXMiLHN0YXR1czoiQWN0aXZlIixjcmVhdGVkQXQ6IjIwMjItMTEtMDUiLHVwZGF0ZWRBdDoiMjAyNC0wNC0xMCIsbGFzdExvZ2luOiIyMDI0LTA5LTI4Iixwcm9qZWN0czo4LHRhZ3M6ImZpZ21hLCBicmFuZCIsbm90ZXM6IlBhcnQtdGltZSJ9LHtpZDozLG5hbWU6IkNoYXJsaWUgRGF2aXMiLHJvbGU6Ik1hbmFnZXIiLGRlcGFydG1lbnQ6Ik9wcyIsZW1haWw6ImNoYXJsaWVAY29ycC5jb20iLHBob25lOiIrMSAyMDIgNTU1IDAxMTMiLGxvY2F0aW9uOiJMb25kb24iLHN0YXR1czoiT24gTGVhdmUiLGNyZWF0ZWRBdDoiMjAyMS0wNC0yMSIsdXBkYXRlZEF0OiIyMDI0LTAyLTE1IixsYXN0TG9naW46IjIwMjQtMDgtMTIiLHByb2plY3RzOjMsdGFnczoic3JlLCBsZWFkZXJzaGlwIixub3RlczoiIn0se2lkOjQsbmFtZToiRGlhbmEgTWFydGluZXoiLHJvbGU6IkVuZ2luZWVyIixkZXBhcnRtZW50OiJQbGF0Zm9ybSIsZW1haWw6ImRpYW5hQGNvcnAuY29tIixwaG9uZToiKzEgMjAyIDU1NSAwMTE0Iixsb2NhdGlvbjoiTWFkcmlkIixzdGF0dXM6IkFjdGl2ZSIsY3JlYXRlZEF0OiIyMDIwLTA2LTMwIix1cGRhdGVkQXQ6IjIwMjQtMDYtMjUiLGxhc3RMb2dpbjoiMjAyNC0xMC0wMiIscHJvamVjdHM6Nix0YWdzOiJub2RlLCBhcGkiLG5vdGVzOiJPbi1jYWxsIn0se2lkOjUsbmFtZToiRXRoYW4gQnJvd24iLHJvbGU6IlN1cHBvcnQiLGRlcGFydG1lbnQ6IkNTIixlbWFpbDoiZXRoYW5AY29ycC5jb20iLHBob25lOiIrMSAyMDIgNTU1IDAxMTUiLGxvY2F0aW9uOiJSb21lIixzdGF0dXM6IkluYWN0aXZlIixjcmVhdGVkQXQ6IjIwMTktMDktMTgiLHVwZGF0ZWRBdDoiMjAyNC0wMy0wOSIsbGFzdExvZ2luOiIyMDI0LTA2LTE5Iixwcm9qZWN0czoyLHRhZ3M6InplbmRlc2siLG5vdGVzOiJSZWhpcmUifSx7aWQ6NixuYW1lOiJGaW9uYSBDbGFyayIscm9sZToiUUEiLGRlcGFydG1lbnQ6IlFBIixlbWFpbDoiZmlvbmFAY29ycC5jb20iLHBob25lOiIrMSAyMDIgNTU1IDAxMTYiLGxvY2F0aW9uOiJWaWVubmEiLHN0YXR1czoiQWN0aXZlIixjcmVhdGVkQXQ6IjIwMjItMDMtMTQiLHVwZGF0ZWRBdDoiMjAyNC0wMy0wMSIsbGFzdExvZ2luOiIyMDI0LTA5LTA3Iixwcm9qZWN0czo3LHRhZ3M6InBsYXl3cmlnaHQiLG5vdGVzOiIifV19CiAgICAgICAgICAuZGF0YUFjdGlvbnM9JHtbe25hbWU6IlZpZXciLGljb25OYW1lOiJsdWNpZGU6ZXllIix0eXBlOlsiaW5Sb3ciLCJjb250ZXh0bWVudSJdLGFjdGlvbkZ1bmM6aShhc3luYyh7aXRlbTpzfSk9Pntjb25zb2xlLmxvZygidmlldyIscyl9LCJhY3Rpb25GdW5jIil9LHtuYW1lOiJFZGl0IixpY29uTmFtZToibHVjaWRlOmVkaXQiLHR5cGU6WyJpblJvdyIsImNvbnRleHRtZW51Il0sYWN0aW9uRnVuYzppKGFzeW5jKHtpdGVtOnN9KT0+e2NvbnNvbGUubG9nKCJlZGl0IixzKX0sImFjdGlvbkZ1bmMiKX0se25hbWU6IkRlbGV0ZSIsaWNvbk5hbWU6Imx1Y2lkZTp0cmFzaCIsdHlwZTpbImluUm93IiwiY29udGV4dG1lbnUiXSxhY3Rpb25GdW5jOmkoYXN5bmMoe2l0ZW06c30pPT57Y29uc29sZS5sb2coImRlbGV0ZSIscyl9LCJhY3Rpb25GdW5jIil9LHtuYW1lOiJNZXNzYWdlIixpY29uTmFtZToibHVjaWRlOm1lc3NhZ2Utc3F1YXJlIix0eXBlOlsiaW5Sb3ciXSxhY3Rpb25GdW5jOmkoYXN5bmMoe2l0ZW06c30pPT57Y29uc29sZS5sb2coIm1lc3NhZ2UiLHMpfSwiYWN0aW9uRnVuYyIpfSx7bmFtZToiSGlzdG9yeSIsaWNvbk5hbWU6Imx1Y2lkZTpjbG9jayIsdHlwZTpbImluUm93Il0sYWN0aW9uRnVuYzppKGFzeW5jKHtpdGVtOnN9KT0+e2NvbnNvbGUubG9nKCJoaXN0b3J5IixzKX0sImFjdGlvbkZ1bmMiKX0se25hbWU6IkFkZCBOZXciLGljb25OYW1lOiJsdWNpZGU6cGx1cyIsdHlwZTpbImhlYWRlciJdLGFjdGlvbkZ1bmM6aShhc3luYyh7dGFibGU6c30pPT57Y29uc29sZS5sb2coImFkZCIpfSwiYWN0aW9uRnVuYyIpfSx7bmFtZToiRXhwb3J0IENTViIsaWNvbk5hbWU6Imx1Y2lkZTpkb3dubG9hZCIsdHlwZTpbImhlYWRlciJdLGFjdGlvbkZ1bmM6aShhc3luYyh7dGFibGU6c30pPT57Y29uc29sZS5sb2coImV4cG9ydCIpfSwiYWN0aW9uRnVuYyIpfSx7bmFtZToiQnVsayBEZWxldGUiLGljb25OYW1lOiJsdWNpZGU6dHJhc2gtMiIsdHlwZTpbImZvb3RlciJdLGFjdGlvbkZ1bmM6aShhc3luYyh7dGFibGU6c30pPT57Y29uc29sZS5sb2coImJ1bGsgZGVsZXRlIil9LCJhY3Rpb25GdW5jIil9XX0KICAgICAgICA+PC9kZWVzLXRhYmxlPgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgyIGNsYXNzPSJkZW1vLXRpdGxlIj5TY3JvbGxhYmxlIFNtYWxsIEhlaWdodDwvaDI+CiAgICAgICAgPHAgY2xhc3M9ImRlbW8tZGVzY3JpcHRpb24iPlNhbWUgYXMgYWJvdmUsIGJ1dCB3aXRoIG1hbnkgaXRlbXMgYW5kIGEgc21hbGwgZml4ZWQgaGVpZ2h0IHRvIGZvcmNlIHZlcnRpY2FsIHNjcm9sbGluZyBpbnNpZGUgdGhlIHRhYmxlLiBBY3Rpb25zIHJlbWFpbiB2aXNpYmxlIG9uIHRoZSByaWdodDsgaG9yaXpvbnRhbCBzY3JvbGwgYXBwZWFycyBpZiBuZWVkZWQuPC9wPgogICAgICAgIDxzdHlsZT4KICAgICAgICAgICNzY3JvbGxTbWFsbEhlaWdodCB7IC0tdGFibGUtbWF4LWhlaWdodDogMjQwcHg7IH0KICAgICAgICA8L3N0eWxlPgogICAgICAgIDxkZWVzLXRhYmxlCiAgICAgICAgICBpZD0ic2Nyb2xsU21hbGxIZWlnaHQiCiAgICAgICAgICAuZml4ZWRIZWlnaHQ9JHshMH0KICAgICAgICAgIC52aXJ0dWFsaXplZD0keyEwfQogICAgICAgICAgaGVhZGluZzE9IlBlb3BsZSBEaXJlY3RvcnkgKFNjcm9sbGFibGUsIFZpcnR1YWxpemVkKSIKICAgICAgICAgIGhlYWRpbmcyPSJGb3JjZWQgc2Nyb2xsaW5nIHdpdGggbWFueSBpdGVtcyIKICAgICAgICAgIC5jb2x1bW5zPSR7W3trZXk6ImlkIixoZWFkZXI6IklEIixzb3J0YWJsZTohMH0se2tleToibmFtZSIsaGVhZGVyOiJOYW1lIixzb3J0YWJsZTohMH0se2tleToicm9sZSIsaGVhZGVyOiJSb2xlIixzb3J0YWJsZTohMH0se2tleToiZGVwYXJ0bWVudCIsaGVhZGVyOiJEZXBhcnRtZW50Iixzb3J0YWJsZTohMH0se2tleToiZW1haWwiLGhlYWRlcjoiRW1haWwifSx7a2V5OiJwaG9uZSIsaGVhZGVyOiJQaG9uZSJ9LHtrZXk6ImxvY2F0aW9uIixoZWFkZXI6IkxvY2F0aW9uIixzb3J0YWJsZTohMH0se2tleToic3RhdHVzIixoZWFkZXI6IlN0YXR1cyIsc29ydGFibGU6ITB9LHtrZXk6ImNyZWF0ZWRBdCIsaGVhZGVyOiJDcmVhdGVkIixzb3J0YWJsZTohMH0se2tleToidXBkYXRlZEF0IixoZWFkZXI6IlVwZGF0ZWQiLHNvcnRhYmxlOiEwfSx7a2V5OiJsYXN0TG9naW4iLGhlYWRlcjoiTGFzdCBMb2dpbiIsc29ydGFibGU6ITB9LHtrZXk6InByb2plY3RzIixoZWFkZXI6IlByb2plY3RzIn0se2tleToidGFncyIsaGVhZGVyOiJUYWdzIn0se2tleToibm90ZXMiLGhlYWRlcjoiTm90ZXMifV19CiAgICAgICAgICAuZGF0YT0ke0FycmF5LmZyb20oe2xlbmd0aDoxMDB9LChzLGUpPT4oe2lkOmUrMSxuYW1lOmBVc2VyICR7ZSsxfWAscm9sZTpbIkVuZ2luZWVyIiwiRGVzaWduZXIiLCJNYW5hZ2VyIiwiUUEiLCJTdXBwb3J0Il1bZSU1XSxkZXBhcnRtZW50OlsiUiZEIiwiRGVzaWduIiwiT3BzIiwiUUEiLCJDUyJdW2UlNV0sZW1haWw6YHVzZXIke2UrMX1AY29ycC5jb21gLHBob25lOmArMSAyMDIgNTU1ICR7U3RyaW5nKDFlMytlKS5zbGljZSgtNCl9YCxsb2NhdGlvbjpbIkJlcmxpbiIsIlBhcmlzIiwiTG9uZG9uIiwiTWFkcmlkIiwiUm9tZSJdW2UlNV0sc3RhdHVzOlsiQWN0aXZlIiwiSW5hY3RpdmUiLCJPbiBMZWF2ZSJdW2UlM10sY3JlYXRlZEF0OmAyMDIzLSR7U3RyaW5nKGUlMTIrMSkucGFkU3RhcnQoMiwiMCIpfS0ke1N0cmluZyhlJTI4KzEpLnBhZFN0YXJ0KDIsIjAiKX1gLHVwZGF0ZWRBdDpgMjAyNC0ke1N0cmluZygoZSszKSUxMisxKS5wYWRTdGFydCgyLCIwIil9LSR7U3RyaW5nKChlKzcpJTI4KzEpLnBhZFN0YXJ0KDIsIjAiKX1gLGxhc3RMb2dpbjpgMjAyNC0ke1N0cmluZygoZSs2KSUxMisxKS5wYWRTdGFydCgyLCIwIil9LSR7U3RyaW5nKChlKzEwKSUyOCsxKS5wYWRTdGFydCgyLCIwIil9YCxwcm9qZWN0czplJTEyLHRhZ3M6ZSUyPyJ0eXBlc2NyaXB0IjoiZGVzaWduIixub3RlczplJTM/IiI6Ik5vdGUifSkpfQogICAgICAgICAgLmRhdGFBY3Rpb25zPSR7W3tuYW1lOiJWaWV3IixpY29uTmFtZToibHVjaWRlOmV5ZSIsdHlwZTpbImluUm93Il0sYWN0aW9uRnVuYzppKGFzeW5jKHtpdGVtOnN9KT0+e30sImFjdGlvbkZ1bmMiKX0se25hbWU6IkVkaXQiLGljb25OYW1lOiJsdWNpZGU6ZWRpdCIsdHlwZTpbImluUm93Il0sYWN0aW9uRnVuYzppKGFzeW5jKHtpdGVtOnN9KT0+e30sImFjdGlvbkZ1bmMiKX0se25hbWU6IkRlbGV0ZSIsaWNvbk5hbWU6Imx1Y2lkZTp0cmFzaCIsdHlwZTpbImluUm93Il0sYWN0aW9uRnVuYzppKGFzeW5jKHtpdGVtOnN9KT0+e30sImFjdGlvbkZ1bmMiKX1dfQogICAgICAgID48L2RlZXMtdGFibGU+CiAgICAgIDwvZGl2PgoKICAgICAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e2xldCBlPXMucXVlcnlTZWxlY3RvcigiI2RlbW9MaXZlRmxhc2giKTtpZighZSlyZXR1cm47ZS5fX2xpdmVGbGFzaFRpbWVySWQmJndpbmRvdy5jbGVhckludGVydmFsKGUuX19saXZlRmxhc2hUaW1lcklkKTtsZXQgdD1pKCgpPT57aWYoIUFycmF5LmlzQXJyYXkoZS5kYXRhKXx8ZS5kYXRhLmxlbmd0aD09PTApcmV0dXJuO2xldCBhPWUuZGF0YS5tYXAobj0+KHsuLi5ufSkpLHI9MStNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMyk7Zm9yKGxldCBuPTA7bjxyO24rKyl7bGV0IG89TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmEubGVuZ3RoKSxsPSsoKE1hdGgucmFuZG9tKCkqMi0xKSozKS50b0ZpeGVkKDIpLHA9TWF0aC5tYXgoMSwrKGFbb10ucHJpY2UrbCkudG9GaXhlZCgyKSk7YVtvXT17Li4uYVtvXSxwcmljZTpwLGNoYW5nZTpsLHVwZGF0ZWRBdDpuZXcgRGF0ZSgpLnRvTG9jYWxlVGltZVN0cmluZygpfX1lLmRhdGE9YX0sInRpY2siKTtlLl9fbGl2ZUZsYXNoVGltZXJJZD13aW5kb3cuc2V0SW50ZXJ2YWwodCwxNTAwKX19PgogICAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgICA8aDIgY2xhc3M9ImRlbW8tdGl0bGUiPkxpdmUgVXBkYXRlcyB3aXRoIEZsYXNoIEhpZ2hsaWdodGluZzwvaDI+CiAgICAgICAgICA8cCBjbGFzcz0iZGVtby1kZXNjcmlwdGlvbiI+CiAgICAgICAgICAgIE9wdC1pbiBjZWxsLWZsYXNoIHZpYSA8Y29kZT5oaWdobGlnaHQtdXBkYXRlcz0iZmxhc2giPC9jb2RlPi4gVGhlIHRpY2tlciBiZWxvdyBtdXRhdGVzCiAgICAgICAgICAgIHJhbmRvbSByb3dzIGV2ZXJ5IDEuNXMgYW5kIHJlYXNzaWducyA8Y29kZT4uZGF0YTwvY29kZT4uIFVwZGF0ZWQgY2VsbHMgYnJpZWZseSBmbGFzaAogICAgICAgICAgICBhbWJlciBhbmQgZmFkZSBvdXQuIFJlcXVpcmVzIDxjb2RlPnJvd0tleTwvY29kZT4gKGhlcmUgPGNvZGU+InN5bWJvbCI8L2NvZGU+KS4gSG9ub3JzCiAgICAgICAgICAgIDxjb2RlPnByZWZlcnMtcmVkdWNlZC1tb3Rpb248L2NvZGU+LiBSb3cgc2VsZWN0aW9uIHBlcnNpc3RzIGFjcm9zcyB1cGRhdGVzIOKAlCBjbGljayBhCiAgICAgICAgICAgIHJvdywgdGhlbiB3YXRjaCBpdCBzdGF5IHNlbGVjdGVkIGFzIHRoZSBkYXRhIGNodXJucy4KICAgICAgICAgIDwvcD4KICAgICAgICAgIDxkZWVzLXRhYmxlCiAgICAgICAgICAgIGlkPSJkZW1vTGl2ZUZsYXNoIgogICAgICAgICAgICAucm93S2V5PSR7InN5bWJvbCJ9CiAgICAgICAgICAgIGhpZ2hsaWdodC11cGRhdGVzPSJmbGFzaCIKICAgICAgICAgICAgLnNlbGVjdGlvbk1vZGU9JHsibXVsdGkifQogICAgICAgICAgICBoZWFkaW5nMT0iTGl2ZSBNYXJrZXQgRmVlZCIKICAgICAgICAgICAgaGVhZGluZzI9IkZsYXNoaW5nIGNlbGxzIGluZGljYXRlIHVwZGF0ZWQgdmFsdWVzIgogICAgICAgICAgICAuY29sdW1ucz0ke1t7a2V5OiJzeW1ib2wiLGhlYWRlcjoiU3ltYm9sIixzb3J0YWJsZTohMH0se2tleToicHJpY2UiLGhlYWRlcjoiUHJpY2UiLHNvcnRhYmxlOiEwfSx7a2V5OiJjaGFuZ2UiLGhlYWRlcjoiXHUwMzk0Iixzb3J0YWJsZTohMH0se2tleToidXBkYXRlZEF0IixoZWFkZXI6IlVwZGF0ZWQifV19CiAgICAgICAgICAgIC5kYXRhPSR7W3tzeW1ib2w6IkFBUEwiLHByaWNlOjE4Mi41MixjaGFuZ2U6MCx1cGRhdGVkQXQ6Ilx1MjAxNCJ9LHtzeW1ib2w6Ik1TRlQiLHByaWNlOjQxNC4xOCxjaGFuZ2U6MCx1cGRhdGVkQXQ6Ilx1MjAxNCJ9LHtzeW1ib2w6IkdPT0ciLHByaWNlOjE2OC43NCxjaGFuZ2U6MCx1cGRhdGVkQXQ6Ilx1MjAxNCJ9LHtzeW1ib2w6IkFNWk4iLHByaWNlOjE4Ni4xMyxjaGFuZ2U6MCx1cGRhdGVkQXQ6Ilx1MjAxNCJ9LHtzeW1ib2w6IlRTTEEiLHByaWNlOjI0OC41LGNoYW5nZTowLHVwZGF0ZWRBdDoiXHUyMDE0In0se3N5bWJvbDoiTlZEQSIscHJpY2U6ODc3LjM1LGNoYW5nZTowLHVwZGF0ZWRBdDoiXHUyMDE0In0se3N5bWJvbDoiTUVUQSIscHJpY2U6NDkyLjk2LGNoYW5nZTowLHVwZGF0ZWRBdDoiXHUyMDE0In0se3N5bWJvbDoiTkZMWCIscHJpY2U6NjA1Ljg4LGNoYW5nZTowLHVwZGF0ZWRBdDoiXHUyMDE0In0se3N5bWJvbDoiQU1EIixwcmljZToxNjUuMjQsY2hhbmdlOjAsdXBkYXRlZEF0OiJcdTIwMTQifSx7c3ltYm9sOiJJTlRDIixwcmljZTo0Mi4xNSxjaGFuZ2U6MCx1cGRhdGVkQXQ6Ilx1MjAxNCJ9XX0KICAgICAgICAgID48L2RlZXMtdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KICAgIDwvZGl2PgogIDwvZGl2PgpgLCJkZW1vRnVuYyIpfSk7dmFyIEN2YSxUdmE9ZygoKT0+e3BlKCk7RXIoKTtodCgpO0N2YT1bcWUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgZGVlcy10aWxlIHsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICAgIGZvbnQtZmFtaWx5OiAke0JhfTsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgIH0KCiAgICAgIC5oZWFkZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgIGhlaWdodDogNDBweDsKICAgICAgfQoKICAgICAgLmhlYWRpbmdDb250YWluZXIgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgIH0KCiAgICAgIC5oZWFkaW5nIHsKICAgICAgICBsaW5lLWhlaWdodDogMTsKICAgICAgfQoKICAgICAgLmhlYWRpbmcxIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXNlY29uZGFyeSk7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICAgIH0KCiAgICAgIC5oZWFkaW5nMiB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDU2LjklKSIsImhzbCgyMTUgMjAuMiUgNTUuMSUpIil9OwogICAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7CiAgICAgIH0KCiAgICAgIC5oZWFkaW5nU2VwYXJhdGlvbiB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgLmhlYWRlckFjdGlvbnMgewogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBnYXA6IDhweDsKICAgICAgfQogICAgICAKICAgICAgLmhlYWRlckFjdGlvbiB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNHB4OwogICAgICAgIHBhZGRpbmc6IDRweCAxMHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5oZWFkZXJBY3Rpb246aG92ZXIgewogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1ob3Zlcik7CiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1zdHJvbmcpOwogICAgICB9CgogICAgICAuaGVhZGVyQWN0aW9uIGRlZXMtaWNvbiB7CiAgICAgICAgd2lkdGg6IDE0cHg7CiAgICAgICAgaGVpZ2h0OiAxNHB4OwogICAgICB9CgogICAgICAuc2VhcmNoR3JpZCB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLWdhcDogMTZweDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciBtYXgtY29udGVudDsKICAgICAgICBwYWRkaW5nOiAxNnB4IDI0cHg7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1iZy1zZWNvbmRhcnkpOwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlOwogICAgICB9CgogICAgICBAbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHsKICAgICAgICAuc2VhcmNoR3JpZCB7CiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8qIGxldCBzZWFyY2ggbW9kZSBzaXplIHRvIGNvbnRlbnQgKG5vIGZvcmNlZCB3aWR0aCkgKi8KCiAgICAgIC5zZWFyY2hHcmlkLmhpZGRlbiB7CiAgICAgICAgaGVpZ2h0OiAwcHg7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHBhZGRpbmc6IDBweCAyNHB4OwogICAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDBweDsKICAgICAgfQoKICAgICAgLyogRGVmYXVsdCBtb2RlIChNb2RlIEIsIHBhZ2Ugc3RpY2t5KTogaG9yaXpvbnRhbCBzY3JvbGwgbGl2ZXMgb24KICAgICAgICAgLnRhYmxlU2Nyb2xsIChzbyB3aWRlIHRhYmxlcyBkb24ndCBnZXQgY2xpcHBlZCBieSBhbiBhbmNlc3RvcgogICAgICAgICBvdmVyZmxvdzpoaWRkZW4gc3VjaCBhcyBkZWVzLXRpbGUpLiBWZXJ0aWNhbCBzdGlja3kgaXMgaGFuZGxlZCBieQogICAgICAgICBhIEpTLW1hbmFnZWQgZmxvYXRpbmcgaGVhZGVyICguZmxvYXRpbmdIZWFkZXIsIHBvc2l0aW9uOmZpeGVkKSwKICAgICAgICAgd2hpY2ggaXMgdW5hZmZlY3RlZCBieSBhbmNlc3RvciBvdmVyZmxvdy4gKi8KICAgICAgLnRhYmxlU2Nyb2xsIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKICAgICAgICBvdmVyZmxvdy15OiB2aXNpYmxlOwogICAgICAgIHNjcm9sbGJhci1ndXR0ZXI6IHN0YWJsZTsKICAgICAgfQogICAgICAvKiBNb2RlIEEsIGludGVybmFsIHNjcm9sbDogb3B0LWluIHZpYSBmaXhlZC1oZWlnaHQgYXR0cmlidXRlLgogICAgICAgICBUaGUgdGFibGUgc2Nyb2xscyBpbnNpZGUgaXRzIG93biBib3ggYW5kIHRoZSBoZWFkZXIgc3RpY2tzIHZpYSBwbGFpbiBDU1Mgc3RpY2t5LiAqLwogICAgICA6aG9zdChbZml4ZWQtaGVpZ2h0XSkgLnRhYmxlU2Nyb2xsIHsKICAgICAgICBtYXgtaGVpZ2h0OiB2YXIoLS10YWJsZS1tYXgtaGVpZ2h0LCAzNjBweCk7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgICAgc2Nyb2xsYmFyLWd1dHRlcjogc3RhYmxlIGJvdGgtZWRnZXM7CiAgICAgIH0KICAgICAgOmhvc3QoW2ZpeGVkLWhlaWdodF0pIC50YWJsZVNjcm9sbDo6LXdlYmtpdC1zY3JvbGxiYXI6aG9yaXpvbnRhbCB7CiAgICAgICAgaGVpZ2h0OiAwcHg7CiAgICAgIH0KCiAgICAgIC8qIEZsb2F0aW5nIGhlYWRlciBvdmVybGF5IChNb2RlIEIpLiBQb3NpdGlvbiBpcyBtYW5hZ2VkIGJ5IEpTIHNvIGl0CiAgICAgICAgIGVzY2FwZXMgYW55IGFuY2VzdG9yIG92ZXJmbG93OmhpZGRlbiAocG9zaXRpb246Zml4ZWQgaXMgbm90IGNsaXBwZWQKICAgICAgICAgYnkgb3ZlcmZsb3cgYW5jZXN0b3JzKS4gKi8KICAgICAgLmZsb2F0aW5nSGVhZGVyIHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgei1pbmRleDogMTAwOwogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CiAgICAgIC5mbG9hdGluZ0hlYWRlci5hY3RpdmUgewogICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgICAgIH0KICAgICAgLmZsb2F0aW5nSGVhZGVyIHRhYmxlIHsKICAgICAgICBtYXJnaW46IDA7CiAgICAgIH0KICAgICAgLmZsb2F0aW5nSGVhZGVyIHRoIHsKICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0bzsKICAgICAgfQoKICAgICAgdGFibGUgewogICAgICAgIC8qIGFsbG93IHRhYmxlIHRvIGdyb3cgd2lkZXIgdGhhbiBjb250YWluZXIgc28gYWN0aW9ucyBjb2x1bW4gY2FuIHN0aWNrICovCiAgICAgICAgd2lkdGg6IG1heC1jb250ZW50OwogICAgICAgIG1pbi13aWR0aDogMTAwJTsKICAgICAgICBjYXB0aW9uLXNpZGU6IGJvdHRvbTsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTsKICAgICAgICBib3JkZXItc3BhY2luZzogMDsKICAgICAgfQogICAgICAKICAgICAgLm5vRGF0YVNldCB7CiAgICAgICAgcGFkZGluZzogNDhweCAyNHB4OwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuNCAxNi4zJSA1Ni45JSkiLCJoc2woMjE1IDIwLjIlIDU1LjElKSIpfTsKICAgICAgfQogICAgICAKICAgICAgdGhlYWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDQwJSA5Ni4xJSkiLCJoc2woMCAwJSA5JSkiKX07CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLXN0cm9uZyk7CiAgICAgIH0KICAgICAgLyogdGggbmVlZHMgaXRzIG93biBiYWNrZ3JvdW5kIHNvIHN0aWNreSBjZWxscyBwYWludCBvdmVyIHNjcm9sbGVkIHJvd3MKICAgICAgICAgKGJyb3dzZXJzIGRvbid0IHBhaW50IHRoZSA8dGhlYWQ+IGJveCBiZWhpbmQgYSBzdGlja3kgPHRoPikuICovCiAgICAgIHRoIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxMCA0MCUgOTYuMSUpIiwiaHNsKDAgMCUgOSUpIil9OwogICAgICB9CiAgICAgIC8qIE1vZGUgQSDigJQgaW50ZXJuYWwgc2Nyb2xsIHN0aWNreSAqLwogICAgICA6aG9zdChbZml4ZWQtaGVpZ2h0XSkgdGhlYWQgdGggewogICAgICAgIHBvc2l0aW9uOiBzdGlja3k7CiAgICAgICAgdG9wOiAwOwogICAgICAgIHotaW5kZXg6IDI7CiAgICAgIH0KICAgICAgOmhvc3QoW2ZpeGVkLWhlaWdodF0pIHRoZWFkIHRyLmZpbHRlcnNSb3cgdGggewogICAgICAgIHRvcDogMzZweDsgLyogbWF0Y2hlcyB0aCB7IGhlaWdodDogMzZweCB9IGJlbG93ICovCiAgICAgIH0KICAgICAgCiAgICAgIHRib2R5IHRyIHsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2U7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICB9CiAgICAgIAogICAgICAvKiBEZWZhdWx0IGhvcml6b250YWwgbGluZXMgKGJvdHRvbSBib3JkZXIgb25seSkgKi8KICAgICAgdGJvZHkgdHIgewogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgfQogICAgICAKICAgICAgdGJvZHkgdHI6bGFzdC1jaGlsZCB7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgICAgfQogICAgICAKICAgICAgLyogRnVsbCBob3Jpem9udGFsIGxpbmVzIHdoZW4gZW5hYmxlZCAqLwogICAgICA6aG9zdChbc2hvdy1ob3Jpem9udGFsLWxpbmVzXSkgdGJvZHkgdHIgewogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICAgIH0KICAgICAgCiAgICAgIDpob3N0KFtzaG93LWhvcml6b250YWwtbGluZXNdKSB0Ym9keSB0cjpmaXJzdC1jaGlsZCB7CiAgICAgICAgYm9yZGVyLXRvcDogbm9uZTsKICAgICAgfQogICAgICAKICAgICAgOmhvc3QoW3Nob3ctaG9yaXpvbnRhbC1saW5lc10pIHRib2R5IHRyOmxhc3QtY2hpbGQgewogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgfQogICAgICAKICAgICAgdGJvZHkgdHI6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUgLyAwLjA2KSIsImhzbCgyMTcuMiA5MS4yJSA1OS44JSAvIDAuMDgpIil9OwogICAgICB9CiAgICAgIAogICAgICAvKiBDb2x1bW4gaG92ZXIgZWZmZWN0IGZvciBiZXR0ZXIgdHJhY2VhYmlsaXR5ICovCiAgICAgIHRkIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KICAgICAgCiAgICAgIHRkOjphZnRlciB7CiAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDUxLjIlIC8gMC4wNCkiLCJoc2woMjE3LjIgOTEuMiUgNTkuOCUgLyAwLjA1KSIpfTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgZWFzZTsKICAgICAgICB6LWluZGV4OiAtMTsKICAgICAgfQogICAgICAKICAgICAgdGQ6aG92ZXI6OmFmdGVyIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CiAgICAgIAogICAgICAvKiBHcmlkIG1vZGUgLSBzaG93cyBib3RoIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIGxpbmVzICovCiAgICAgIDpob3N0KFtzaG93LWdyaWRdKSB0aCB7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7CiAgICAgICAgYm9yZGVyLXRvcDogbm9uZTsKICAgICAgfQogICAgICAKICAgICAgOmhvc3QoW3Nob3ctZ3JpZF0pIHRkIHsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgICBib3JkZXItbGVmdDogbm9uZTsKICAgICAgICBib3JkZXItdG9wOiBub25lOwogICAgICB9CiAgICAgIAogICAgICA6aG9zdChbc2hvdy1ncmlkXSkgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGQgewogICAgICAgIGJvcmRlci10b3A6IG5vbmU7CiAgICAgIH0KCiAgICAgIC8qIFJlbW92ZSBlZGdlIGJvcmRlcnMgdGhhdCB3b3VsZCBkb3VibGUgd2l0aCB0aWxlIGZyYW1lICovCiAgICAgIDpob3N0KFtzaG93LWdyaWRdKSB0aDpsYXN0LWNoaWxkLAogICAgICA6aG9zdChbc2hvdy1ncmlkXSkgdGQ6bGFzdC1jaGlsZCB7CiAgICAgICAgYm9yZGVyLXJpZ2h0OiBub25lOwogICAgICB9CiAgICAgIDpob3N0KFtzaG93LWdyaWRdKSB0Ym9keSB0cjpsYXN0LWNoaWxkIHRkIHsKICAgICAgICBib3JkZXItYm90dG9tOiBub25lOwogICAgICB9CgogICAgICAvKiBTdGlja3kgQWN0aW9ucyBjb2x1bW4gKHJpZ2h0IHBpbm5lZCkgKi8KICAgICAgdGhlYWQgdGguYWN0aW9uc0NvbCwKICAgICAgdGJvZHkgdGQuYWN0aW9uc0NvbCB7CiAgICAgICAgcG9zaXRpb246IHN0aWNreTsKICAgICAgICByaWdodDogMDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXByaW1hcnkpOwogICAgICB9CiAgICAgIHRoZWFkIHRoLmFjdGlvbnNDb2wgeyB6LWluZGV4OiAzOyB9CiAgICAgIHRib2R5IHRkLmFjdGlvbnNDb2wgewogICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgYm94LXNoYWRvdzogLTFweCAwIDAgMCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgfQogICAgICAKICAgICAgdGJvZHkgdHIuc2VsZWN0ZWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUgLyAwLjEpIiwiaHNsKDIxNy4yIDkxLjIlIDU5LjglIC8gMC4xMikiKX07CiAgICAgIH0KCiAgICAgIHRib2R5IHRyLmhhc0F0dGFjaG1lbnQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMTQyLjEgNzYuMiUgMzYuMyUgLyAwLjEpIiwiaHNsKDE0Mi4xIDc2LjIlIDM2LjMlIC8gMC4xKSIpfTsKICAgICAgfQoKICAgICAgdGggewogICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICBwYWRkaW5nOiA4cHggMTZweDsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDQ2LjklKSIsImhzbCgyMTUgMjAuMiUgNjUuMSUpIil9OwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICB9CgogICAgICB0aFtyb2xlPSdjb2x1bW5oZWFkZXInXTpob3ZlciB7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgfQoKICAgICAgdGggLnNvcnRBcnJvdyB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIG1hcmdpbi1sZWZ0OiA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgICAgIG9wYWNpdHk6IDAuNzsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgICB9CgogICAgICB0aCAuc29ydEJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDNweDsKICAgICAgICBwYWRkaW5nOiAxcHggNXB4OwogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDMwJSkiLCJoc2woMjE3LjIgOTEuMiUgNzUlKSIpfTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDUxLjIlIC8gMC4xMikiLCJoc2woMjE3LjIgOTEuMiUgNTkuOCUgLyAwLjE4KSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgICB9CiAgICAgIAogICAgICA6aG9zdChbc2hvdy12ZXJ0aWNhbC1saW5lc10pIHRoIHsKICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgfQogICAgICAKICAgICAgdGQgewogICAgICAgIHBhZGRpbmc6IDhweCAxNnB4OwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIH0KICAgICAgCiAgICAgIDpob3N0KFtzaG93LXZlcnRpY2FsLWxpbmVzXSkgdGQgewogICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICB9CiAgICAgIAogICAgICB0aDpmaXJzdC1jaGlsZCwKICAgICAgdGQ6Zmlyc3QtY2hpbGQgewogICAgICAgIHBhZGRpbmctbGVmdDogMTZweDsKICAgICAgfQogICAgICAKICAgICAgdGg6bGFzdC1jaGlsZCwKICAgICAgdGQ6bGFzdC1jaGlsZCB7CiAgICAgICAgcGFkZGluZy1yaWdodDogMTZweDsKICAgICAgfQogICAgICAKICAgICAgOmhvc3QoW3Nob3ctdmVydGljYWwtbGluZXNdKSB0aDpsYXN0LWNoaWxkLAogICAgICA6aG9zdChbc2hvdy12ZXJ0aWNhbC1saW5lc10pIHRkOmxhc3QtY2hpbGQgewogICAgICAgIGJvcmRlci1yaWdodDogbm9uZTsKICAgICAgfQoKICAgICAgLyogRGVmYXVsdCBib3R0b20gYm9yZGVyIG9uIGxhc3Qgcm93IHJlbW92ZWQg4oCUIHRpbGUgZnJhbWUgaGFuZGxlcyBpdCAqLwogICAgICA6aG9zdCg6bm90KFtzaG93LWhvcml6b250YWwtbGluZXNdKSkgdGJvZHkgdHI6bGFzdC1jaGlsZCB7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgICAgfQogICAgICAKICAgICAgLmlubmVyQ2VsbENvbnRhaW5lciB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG1pbi1oZWlnaHQ6IDI0cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICAgIH0KCiAgICAgIC8qIC0tLS0gQ2VsbCBmbGFzaCBoaWdobGlnaHRpbmcgKG9wdC1pbiB2aWEgaGlnaGxpZ2h0LXVwZGF0ZXM9ImZsYXNoIikgLS0tLQogICAgICAgICBCbG9vbWJlcmcvVHJhZGluZ1ZpZXctc3R5bGU6IHRoZSB0ZXh0IGl0c2VsZiBicmllZmx5IHRha2VzIGFuIGFjY2VudAogICAgICAgICBjb2xvciB0aGVuIGZhZGVzIGJhY2sgdG8gdGhlIGRlZmF1bHQuIE5vIGJhY2tncm91bmQgdGludCwgbm8gbGF5b3V0CiAgICAgICAgIHNoaWZ0LCBubyB3ZWlnaHQgY2hhbmdlLiBSZWFkYWJsZSwgbW9kZXJuLCBzdWJ0bGUuCiAgICAgICAgIENvbnN1bWVycyBjYW4gb3ZlcnJpZGUgcGVyIGluc3RhbmNlOgogICAgICAgICAgIGRlZXMtdGFibGUjbXlUYWJsZSB7IC0tZGVlcy10YWJsZS1mbGFzaC1jb2xvcjogaHNsKDE0MiA3NiUgNDAlKTsgfQogICAgICAqLwogICAgICA6aG9zdCB7CiAgICAgICAgLS1kZWVzLXRhYmxlLWZsYXNoLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDMyIDk1JSA0NCUpIiwiaHNsKDQ1IDkzJSA2MiUpIil9OwogICAgICAgIC0tZGVlcy10YWJsZS1mbGFzaC1lYXNpbmc6IGN1YmljLWJlemllcigwLjIyLCAwLjYxLCAwLjM2LCAxKTsKICAgICAgfQoKICAgICAgLmlubmVyQ2VsbENvbnRhaW5lci5mbGFzaGluZyB7CiAgICAgICAgYW5pbWF0aW9uOiBkZWVzLXRhYmxlLWNlbGwtZmxhc2gKICAgICAgICAgICAgICAgICAgIHZhcigtLWRlZXMtdGFibGUtZmxhc2gtZHVyYXRpb24sIDkwMG1zKQogICAgICAgICAgICAgICAgICAgdmFyKC0tZGVlcy10YWJsZS1mbGFzaC1lYXNpbmcpOwogICAgICB9CgogICAgICAvKiBIb2xkIHRoZSBhY2NlbnQgY29sb3IgYnJpZWZseSwgdGhlbiBmYWRlIGJhY2sgdG8gdGhlIHRoZW1lJ3MgZGVmYXVsdAogICAgICAgICB0ZXh0IGNvbG9yLiBJbmhlcml0cyB0byBjaGlsZCB0ZXh0IGFuZCB0byBTVkcgaWNvbnMgdGhhdCB1c2UKICAgICAgICAgY3VycmVudENvbG9yLiBDZWxscyB3aXRoIGV4cGxpY2l0IGNvbG9yIG92ZXJyaWRlcyBpbiByZW5kZXJlcnMgYXJlCiAgICAgICAgIGludGVudGlvbmFsbHkgdW5hZmZlY3RlZC4gKi8KICAgICAgQGtleWZyYW1lcyBkZWVzLXRhYmxlLWNlbGwtZmxhc2ggewogICAgICAgIDAlLAogICAgICAgIDM1JSB7IGNvbG9yOiB2YXIoLS1kZWVzLXRhYmxlLWZsYXNoLWNvbG9yKTsgfQogICAgICAgIDEwMCUgeyBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOyB9CiAgICAgIH0KCiAgICAgIC8qIEJvcmRlci9iYWNrZ3JvdW5kIGZsYXNoIHZhcmlhbnQgZm9yIGNlbGxzIHdpdGggc3R5bGVkIGNvbnRlbnQKICAgICAgICAgKGJhZGdlcywgaWNvbnMsIGN1c3RvbSBjb21wb25lbnRzKSB3aGVyZSBhIHRleHQtY29sb3IgYW5pbWF0aW9uCiAgICAgICAgIHdvdWxkIGJlIGludmlzaWJsZS4gQWN0aXZhdGVkIHZpYSBmbGFzaEJvcmRlciBvbiBDb2x1bW4uICovCiAgICAgIC5pbm5lckNlbGxDb250YWluZXIuZmxhc2hpbmctYm9yZGVyIHsKICAgICAgICBhbmltYXRpb246IGRlZXMtdGFibGUtY2VsbC1mbGFzaC1ib3JkZXIKICAgICAgICAgICAgICAgICAgIHZhcigtLWRlZXMtdGFibGUtZmxhc2gtZHVyYXRpb24sIDkwMG1zKQogICAgICAgICAgICAgICAgICAgdmFyKC0tZGVlcy10YWJsZS1mbGFzaC1lYXNpbmcpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBkZWVzLXRhYmxlLWNlbGwtZmxhc2gtYm9yZGVyIHsKICAgICAgICAwJSwKICAgICAgICAzNSUgewogICAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMS41cHggdmFyKC0tZGVlcy10YWJsZS1mbGFzaC1jb2xvcik7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDQ1IDkzJSA2MiUgLyAwLjEwKSIsImhzbCg0NSA5MyUgNjIlIC8gMC4wOCkiKX07CiAgICAgICAgfQogICAgICAgIDEwMCUgewogICAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMS41cHggdHJhbnNwYXJlbnQ7CiAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CiAgICAgICAgLmlubmVyQ2VsbENvbnRhaW5lci5mbGFzaGluZyB7CiAgICAgICAgICBhbmltYXRpb246IG5vbmU7CiAgICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy10YWJsZS1mbGFzaC1jb2xvcik7CiAgICAgICAgfQogICAgICAgIC5pbm5lckNlbGxDb250YWluZXIuZmxhc2hpbmctYm9yZGVyIHsKICAgICAgICAgIGFuaW1hdGlvbjogbm9uZTsKICAgICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDEuNXB4IHZhcigtLWRlZXMtdGFibGUtZmxhc2gtY29sb3IpOwogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCg0NSA5MyUgNjIlIC8gMC4xMCkiLCJoc2woNDUgOTMlIDYyJSAvIDAuMDgpIil9OwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyogRGV2LXRpbWUgd2FybmluZyBiYW5uZXIgc2hvd24gd2hlbiBoaWdobGlnaHQtdXBkYXRlcz0iZmxhc2giIGJ1dAogICAgICAgICByb3dLZXkgaXMgbWlzc2luZy4gQ29uc3VtZXJzIHNob3VsZCBuZXZlciBzaGlwIHRoaXMgdG8gcHJvZHVjdGlvbi4gKi8KICAgICAgLmZsYXNoQ29uZmlnV2FybmluZyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIG1hcmdpbjogOHB4IDE2cHggMDsKICAgICAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMzggOTIlIDUwJSkiLCJoc2woNDggOTYlIDYzJSkiKX07CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCg0OCA5NiUgODklIC8gMC42KSIsImhzbCg0OCA5NiUgMzAlIC8gMC4xNSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMzIgODElIDI5JSkiLCJoc2woNDggOTYlIDgwJSkiKX07CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICB9CiAgICAgIC5mbGFzaENvbmZpZ1dhcm5pbmcgZGVlcy1pY29uIHsKICAgICAgICB3aWR0aDogMTRweDsKICAgICAgICBoZWlnaHQ6IDE0cHg7CiAgICAgICAgZmxleDogMCAwIGF1dG87CiAgICAgIH0KICAgICAgLmZsYXNoQ29uZmlnV2FybmluZyBjb2RlIHsKICAgICAgICBwYWRkaW5nOiAxcHggNHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTAwJSAvIDAuNikiLCJoc2woMCAwJSAwJSAvIDAuMykiKX07CiAgICAgICAgZm9udC1mYW1pbHk6ICR7QmF9OwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgfQoKICAgICAgLyogRWRpdGFibGUgY2VsbCBhZmZvcmRhbmNlcyAqLwogICAgICB0ZC5lZGl0YWJsZSB7CiAgICAgICAgY3Vyc29yOiB0ZXh0OwogICAgICB9CiAgICAgIHRkLmZvY3VzZWQgewogICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDUxLjIlIC8gMC42KSIsImhzbCgyMTcuMiA5MS4yJSA1OS44JSAvIDAuNikiKX07CiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7CiAgICAgIH0KICAgICAgdGQuZWRpdGluZ0NlbGwgewogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUgLyAwLjYpIiwiaHNsKDIxNy4yIDkxLjIlIDU5LjglIC8gMC42KSIpfTsKICAgICAgICBvdXRsaW5lLW9mZnNldDogLTJweDsKICAgICAgfQogICAgICB0ZC5lZGl0aW5nQ2VsbCAuaW5uZXJDZWxsQ29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7CiAgICAgIH0KICAgICAgdGQuZWRpdGluZ0NlbGwgZGVlcy1pbnB1dC10ZXh0LAogICAgICB0ZC5lZGl0aW5nQ2VsbCBkZWVzLWlucHV0LWNoZWNrYm94LAogICAgICB0ZC5lZGl0aW5nQ2VsbCBkZWVzLWlucHV0LWRyb3Bkb3duLAogICAgICB0ZC5lZGl0aW5nQ2VsbCBkZWVzLWlucHV0LWRhdGVwaWNrZXIsCiAgICAgIHRkLmVkaXRpbmdDZWxsIGRlZXMtaW5wdXQtdGFncyB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIC8qIGZpbHRlciByb3cgKi8KICAgICAgdGhlYWQgdHIuZmlsdGVyc1JvdyB0aCB7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHggMTJweCAxMnB4OwogICAgICB9CiAgICAgIHRoZWFkIHRyLmZpbHRlcnNSb3cgdGggaW5wdXRbdHlwZT0ndGV4dCddIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIHBhZGRpbmc6IDZweCA4cHg7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTAwJSkiLCJoc2woMCAwJSA5JSkiKX07CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgfQogICAgICAuYWN0aW9uc0NvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGdhcDogNHB4OwogICAgICB9CiAgICAgIAogICAgICAuYWN0aW9uIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuNCAxNi4zJSA0Ni45JSkiLCJoc2woMjE1IDIwLjIlIDY1LjElKSIpfTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5hY3Rpb246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDQwJSA5Ni4xJSkiLCJoc2woMCAwJSAxNC45JSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5JSkiLCJoc2woMCAwJSA5NSUpIil9OwogICAgICB9CgogICAgICAuYWN0aW9uOmFjdGl2ZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgNDAlIDk2LjElKSIsImhzbCgwIDAlIDExLjglKSIpfTsKICAgICAgfQogICAgICAKICAgICAgLmFjdGlvbiBkZWVzLWljb24gewogICAgICAgIHdpZHRoOiAxNnB4OwogICAgICAgIGhlaWdodDogMTZweDsKICAgICAgfQoKICAgICAgLmZvb3RlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAudGFibGVTdGF0aXN0aWNzIHsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICB9CgogICAgICAuZm9vdGVyQWN0aW9ucyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBnYXA6IDhweDsKICAgICAgfQoKICAgICAgLmZvb3RlckFjdGlvbnMgLmZvb3RlckFjdGlvbiB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNHB4OwogICAgICAgIHBhZGRpbmc6IDJweCA4cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNDYuOSUpIiwiaHNsKDIxNSAyMC4yJSA2NS4xJSkiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgfQoKICAgICAgLmZvb3RlckFjdGlvbnMgLmZvb3RlckFjdGlvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk1LjElKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDklKSIsImhzbCgwIDAlIDk1JSkiKX07CiAgICAgIH0KCiAgICAgIC5mb290ZXJBY3Rpb25zIC5mb290ZXJBY3Rpb24gZGVlcy1pY29uIHsKICAgICAgICB3aWR0aDogMTRweDsKICAgICAgICBoZWlnaHQ6IDE0cHg7CiAgICAgIH0KICBgXX0pO3ZhciBBbnQ9ZygoKT0+e280KCl9KTt2YXIgTm50PWcoKCk9PntMMWUoKX0pO3ZhciBSbnQ9ZygoKT0+e1IxZSgpO2VudCgpfSk7dmFyIE9udD1nKCgpPT57dm50KCl9KTtmdW5jdGlvbiBGbnQocyxlKXtpZighZXx8ZS5sZW5ndGg9PT0wKXJldHVybltdO2xldCB0PXMoZVswXSk7cmV0dXJuIE9iamVjdC5rZXlzKHQpLm1hcChyPT4oe2tleTpyLGhlYWRlcjpyLHZhbHVlOmkobj0+cyhuKVtyXSwidmFsdWUiKX0pKX1mdW5jdGlvbiAkdmEocyxlLHQsYSl7bGV0IHI9KHN8fFtdKS5zbGljZSgpO2lmKCFlKXJldHVybiByO2xldCBuPUZudCh0LGEpLG89bmV3IFNldChyLm1hcChsPT5TdHJpbmcobC5rZXkpKSk7Zm9yKGxldCBsIG9mIG4pby5oYXMoU3RyaW5nKGwua2V5KSl8fHIucHVzaChsKTtyZXR1cm4gcn1mdW5jdGlvbiBkNChzLGUsdCl7cmV0dXJuIGUudmFsdWU/ZS52YWx1ZShzKTpzW2Uua2V5XX1mdW5jdGlvbiBKSmEocyxlKXtpZihzPT1udWxsJiZlPT1udWxsKXJldHVybiAwO2lmKHM9PW51bGwpcmV0dXJuLTE7aWYoZT09bnVsbClyZXR1cm4gMTtpZih0eXBlb2Ygcz09Im51bWJlciImJnR5cGVvZiBlPT0ibnVtYmVyIilyZXR1cm4gczxlPy0xOnM+ZT8xOjA7bGV0IHQ9U3RyaW5nKHMpLnRvTG93ZXJDYXNlKCksYT1TdHJpbmcoZSkudG9Mb3dlckNhc2UoKTtyZXR1cm4gdDxhPy0xOnQ+YT8xOjB9ZnVuY3Rpb24gRHZhKHMsZSx0LGEscixuPSJ0YWJsZSIsbyl7bGV0IGw9cy5zbGljZSgpLHA9KGF8fCIiKS50cmltKCkudG9Mb3dlckNhc2UoKSxkPXJ8fHt9LHU9T2JqZWN0LmtleXMoZCkuZmlsdGVyKGI9PihkW2JdPz8iIikudHJpbSgpLmxlbmd0aD4wKTtpZigocHx8dS5sZW5ndGg+MCkmJihsPWwuZmlsdGVyKGI9Pntmb3IobGV0IHYgb2YgdSlpZihuPT09ImRhdGEiKXtsZXQgeD1iW3ZdLG09U3RyaW5nKHg/PyIiKS50b0xvd2VyQ2FzZSgpLGY9U3RyaW5nKGRbdl0pLnRvTG93ZXJDYXNlKCk7aWYoIW0uaW5jbHVkZXMoZikpcmV0dXJuITF9ZWxzZXtsZXQgeD1lLmZpbmQoTT0+U3RyaW5nKE0ua2V5KT09PXYpO2lmKCF4fHx4LmhpZGRlbnx8eC5maWx0ZXJhYmxlPT09ITEpY29udGludWU7bGV0IG09ZDQoYix4KSxmPVN0cmluZyhtPz8iIikudG9Mb3dlckNhc2UoKSx5PVN0cmluZyhkW3ZdKS50b0xvd2VyQ2FzZSgpO2lmKCFmLmluY2x1ZGVzKHkpKXJldHVybiExfWlmKHApe2lmKG8pcmV0dXJuISFvKGIpO2xldCB2PSExO2lmKG49PT0iZGF0YSIpe2ZvcihsZXQgeCBvZiBPYmplY3QudmFsdWVzKGIpKWlmKFN0cmluZyh4Pz8iIikudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhwKSl7dj0hMDticmVha319ZWxzZSBmb3IobGV0IHggb2YgZSl7aWYoeC5oaWRkZW4pY29udGludWU7bGV0IG09ZDQoYix4KTtpZihTdHJpbmcobT8/IiIpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocCkpe3Y9ITA7YnJlYWt9fWlmKCF2KXJldHVybiExfXJldHVybiEwfSkpLCF0fHx0Lmxlbmd0aD09PTApcmV0dXJuIGw7bGV0IGM9dC5tYXAoYj0+KHtkZXNjOmIsY29sOmUuZmluZCh2PT5TdHJpbmcodi5rZXkpPT09Yi5rZXkpfSkpLmZpbHRlcihiPT4hIWIuY29sKTtyZXR1cm4gYy5sZW5ndGg9PT0wfHxsLnNvcnQoKGIsdik9Pntmb3IobGV0e2Rlc2M6eCxjb2w6bX1vZiBjKXtsZXQgZj1KSmEoZDQoYixtKSxkNCh2LG0pKTtpZihmIT09MClyZXR1cm4geC5kaXI9PT0iYXNjIj9mOi1mfXJldHVybiAwfSksbH12YXIgTHZhPWcoKCk9PntpKEZudCwiY29tcHV0ZUNvbHVtbnNGcm9tRGlzcGxheUZ1bmN0aW9uIik7aSgkdmEsImNvbXB1dGVFZmZlY3RpdmVDb2x1bW5zIik7aShkNCwiZ2V0Q2VsbFZhbHVlIik7aShKSmEsImNvbXBhcmVDZWxsVmFsdWVzIik7aShEdmEsImdldFZpZXdEYXRhIil9KTtmdW5jdGlvbiBRMWUocyl7cmV0dXJuIHMuc3RhcnRzV2l0aCgnIicpJiZzLmVuZHNXaXRoKCciJyl8fHMuc3RhcnRzV2l0aCgiJyIpJiZzLmVuZHNXaXRoKCInIik/cy5zbGljZSgxLC0xKTpzfWZ1bmN0aW9uIGVlcyhzKXtyZXR1cm4gcy5zcGxpdCgvXHMrT1JccysvaSkubWFwKGU9PmUudHJpbSgpKS5maWx0ZXIoQm9vbGVhbil9ZnVuY3Rpb24gdGVzKHMpe3JldHVybiBzLnNwbGl0KC9ccytBTkRccysvaSkubWFwKGU9PmUudHJpbSgpKS5maWx0ZXIoQm9vbGVhbil9ZnVuY3Rpb24gYWVzKHMpe2lmKCFzKXJldHVybiBudWxsO2xldCBlPSExLHQ9cy5tYXRjaCgvXlxzKihOT1Rccyt8LSlccyooLiopJC9pKTt0JiYoZT0hMCxzPXRbMl0pO2xldCBhPXMubWF0Y2goL14oW146XHNdKylccyo6XHMqXFsoLio/KVxzK1RPXHMrKC4qPylcXSQvaSk7aWYoYSlyZXR1cm57ZmllbGQ6YVsxXSxuZWdhdGU6ZSxyYW5nZTp7bG93ZXI6UTFlKGFbMl0pLnRvTG93ZXJDYXNlKCksdXBwZXI6UTFlKGFbM10pLnRvTG93ZXJDYXNlKCksaW5jbHVzaXZlOiEwfX07bGV0IHI9cy5tYXRjaCgvXihbXjpcc10rKVxzKjpccyooIlteIl0qInwnW14nXSonfFteIidcc10rKSQvKTtyZXR1cm4gcj97ZmllbGQ6clsxXSx2YWx1ZTpRMWUoclsyXSkudG9Mb3dlckNhc2UoKSxuZWdhdGU6ZX06cy5sZW5ndGg+MD97dmFsdWU6UTFlKHMpLnRvTG93ZXJDYXNlKCksbmVnYXRlOmV9Om51bGx9ZnVuY3Rpb24gc2VzKHMpe2lmKCFzKXJldHVybiBudWxsO2xldCBlPWVlcyhzKS5tYXAodD0+KHt0ZXJtczp0ZXModCkubWFwKGFlcykuZmlsdGVyKHI9PiEhciYmISFyLnZhbHVlKX0pKS5maWx0ZXIodD0+dC50ZXJtcy5sZW5ndGg+MCk7cmV0dXJuIGUubGVuZ3RoPT09MD9udWxsOntjbGF1c2VzOmV9fWZ1bmN0aW9uIEV2YShzLGUsdCl7bGV0IGE9c2VzKHMpO2lmKCFhKXJldHVybiBudWxsO2xldCByPW5ldyBNYXAodC5tYXAocD0+W1N0cmluZyhwLmtleSkscF0pKSxuPWkoKHAsZCk9PnA8ZD8tMTpwPmQ/MTowLCJjbXAiKSxvPWkocD0+e2xldCBkPVN0cmluZyhwPz8iIikudG9Mb3dlckNhc2UoKSx1PU51bWJlcihkKSxjPURhdGUucGFyc2UoZCk7cmV0dXJuIU51bWJlci5pc05hTih1KSYmZC50cmltKCkhPT0iIj97dDoibiIsdjp1fTpOdW1iZXIuaXNOYU4oYyk/e3Q6InMiLHY6ZH06e3Q6ImQiLHY6Y319LCJjb2VyY2UiKSxsPWkoKHAsZCx1KT0+e2xldCBjPW8ocCksYj1vKGQpLHY9byh1KTtpZihjLnQ9PT0icyImJmIudD09PSJzIiYmdi50PT09InMiKXtsZXQgbT1jLnY7cmV0dXJuIG4obSxiLnYpPj0wJiZuKG0sdi52KTw9MH1pZihjLnQ9PT0ibiImJmIudD09PSJuIiYmdi50PT09Im4iKXtsZXQgbT1jLnY7cmV0dXJuIG0+PWIudiYmbTw9di52fWlmKGMudD09PSJkIiYmYi50PT09ImQiJiZ2LnQ9PT0iZCIpe2xldCBtPWMudjtyZXR1cm4gbT49Yi52JiZtPD12LnZ9bGV0IHg9U3RyaW5nKHA/PyIiKS50b0xvd2VyQ2FzZSgpO3JldHVybiBuKHgsZCk+PTAmJm4oeCx1KTw9MH0sImluUmFuZ2UiKTtyZXR1cm4gcD0+e2ZvcihsZXQgZCBvZiBhLmNsYXVzZXMpe2xldCB1PSEwO2ZvcihsZXQgYyBvZiBkLnRlcm1zKXtsZXQgYj0hMTtpZihjLnJhbmdlJiZjLmZpZWxkKWlmKGU9PT0iZGF0YSIpYj1sKHBbYy5maWVsZF0sYy5yYW5nZS5sb3dlcixjLnJhbmdlLnVwcGVyKTtlbHNle2xldCB2PXIuZ2V0KGMuZmllbGQpO2lmKCF2fHx2LmhpZGRlbiliPSExO2Vsc2V7bGV0IHg9di52YWx1ZT92LnZhbHVlKHApOnBbdi5rZXldO2I9bCh4LGMucmFuZ2UubG93ZXIsYy5yYW5nZS51cHBlcil9fWVsc2UgaWYoYy5maWVsZCYmYy52YWx1ZSE9bnVsbClpZihlPT09ImRhdGEiKWI9U3RyaW5nKHBbYy5maWVsZF0/PyIiKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGMudmFsdWUpO2Vsc2V7bGV0IHY9ci5nZXQoYy5maWVsZCk7aWYoIXZ8fHYuaGlkZGVuPT09ITApYj0hMTtlbHNle2xldCB4PXYudmFsdWU/di52YWx1ZShwKTpwW3Yua2V5XTtiPVN0cmluZyh4Pz8iIikudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhjLnZhbHVlKX19ZWxzZSBjLnZhbHVlIT1udWxsJiYoZT09PSJkYXRhIj9iPU9iamVjdC52YWx1ZXMocCkuc29tZSh2PT5TdHJpbmcodj8/IiIpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoYy52YWx1ZSkpOmI9dC5zb21lKHY9PntpZih2LmhpZGRlbilyZXR1cm4hMTtsZXQgeD12LnZhbHVlP3YudmFsdWUocCk6cFt2LmtleV07cmV0dXJuIFN0cmluZyh4Pz8iIikudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhjLnZhbHVlKX0pKTtpZihjLm5lZ2F0ZSYmKGI9IWIpLCFiKXt1PSExO2JyZWFrfX1pZih1KXJldHVybiEwfXJldHVybiExfX12YXIgUHZhPWcoKCk9PntpKFExZSwic3RyaXBRdW90ZXMiKTtpKGVlcywic3BsaXRCeU9yIik7aSh0ZXMsInNwbGl0QnlBbmQiKTtpKGFlcywicGFyc2VUZXJtIik7aShzZXMsInBhcnNlTHVjZW5lIik7aShFdmEsImNvbXBpbGVMdWNlbmVQcmVkaWNhdGUiKX0pO2Z1bmN0aW9uIGllcyhzKXtsZXQgZT1bInRoIiwic3QiLCJuZCIsInJkIl0sdD1zJTEwMDtyZXR1cm4gcysoZVsodC0yMCklMTBdfHxlW3RdfHxlWzBdKX12YXIgSGEsQ3QsQm50LEludD1nKCgpPT57dm8oKTt6dmEoKTtwZSgpO2ZyKCk7UHUoKTtrdCgpO0dhKCk7VHZhKCk7QW50KCk7Tm50KCk7Um50KCk7QTFlKCk7T250KCk7THZhKCk7UHZhKCk7aHQoKTttcigpO0hhPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxDdD1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH07aShpZXMsIm9yZGluYWxMYWJlbCIpO0JudD0oKCk9PntsZXQgcz1bbmUoImRlZXMtdGFibGUiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXSxPLCQ9W10sRT1bXSxILGs9W10sUz1bXSxJLFA9W10sUj1bXSxLLFY9W10sVz1bXSxtZSxCPVtdLFU9W10saGUsRj1bXSxqPVtdLHVlLGxlPVtdLFE9W10saWUsdGU9W10sZWU9W10sa2UsWD1bXSxaPVtdLHllLHE9W10sQT1bXSxzZSxvZT1bXSxhZT1bXSxUZSxSZT1bXSxCZT1bXSxHZSxEZT1bXSxfZT1bXSxDZSx2ZT1bXSxiZT1bXSxFZSxqZT1bXSxXZT1bXSxzdCxNZT1bXSxnZT1bXSxJZSxjZT1bXSxkZT1bXSxMZSxLZT1bXSxZZT1bXSxvdCxVdD1bXSxadD1bXSxqYSxldD1bXSxidD1bXSx5YSxlcz1bXSxycz1bXSxwcyxucz1bXSx0aT1bXSxhaSx6ZT1bXSx4ZT1bXSxOZSx4dD1bXSxNYT1bXSxOcixmZT1bXSxyZT1bXSxTZSxPZT1bXSxKZT1bXSx6YSxkYT1bXSx3cz1bXSxraSxKaT1bXSxScj1bXSxTaSx2bj1bXSxyMT1bXSxvMSxuMT1bXSxsMT1bXSxjMSxkMT1bXSx1MT1bXTt2YXIgcDE9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNUYWJsZSIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBEPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6U3RyaW5nfSldLHA9W0woe3R5cGU6U3RyaW5nfSldLGM9W0woe3R5cGU6QXJyYXl9KV0seD1bTCh7dHlwZTpTdHJpbmd9KV0seT1bTCh7dHlwZTpTdHJpbmd9KV0sTj1bTCh7dHlwZTpCb29sZWFufSldLE89W0woe3R5cGU6Qm9vbGVhbn0pXSxIPVtMKHt0eXBlOlN0cmluZyxyZWZsZWN0OiEwfSldLEk9W0woe3R5cGU6Qm9vbGVhbn0pXSxLPVtMKHt0eXBlOkFycmF5fSldLG1lPVtMKHthdHRyaWJ1dGU6ITF9KV0saGU9W0woe2F0dHJpYnV0ZTohMX0pXSx1ZT1bTCh7dHlwZTpCb29sZWFufSldLGllPVtMKHthdHRyaWJ1dGU6ITF9KV0sa2U9W0woe2F0dHJpYnV0ZTohMX0pXSx5ZT1bTCh7dHlwZTpPYmplY3R9KV0sc2U9W0woe3R5cGU6Qm9vbGVhbixyZWZsZWN0OiEwLGF0dHJpYnV0ZToic2hvdy12ZXJ0aWNhbC1saW5lcyJ9KV0sVGU9W0woe3R5cGU6Qm9vbGVhbixyZWZsZWN0OiEwLGF0dHJpYnV0ZToic2hvdy1ob3Jpem9udGFsLWxpbmVzIn0pXSxHZT1bTCh7dHlwZTpCb29sZWFuLHJlZmxlY3Q6ITAsYXR0cmlidXRlOiJzaG93LWdyaWQifSldLENlPVtMKHthdHRyaWJ1dGU6ITF9KV0sRWU9W0woe3R5cGU6U3RyaW5nfSldLHN0PVtMKHthdHRyaWJ1dGU6ITF9KV0sSWU9W0woe3R5cGU6Qm9vbGVhbixhdHRyaWJ1dGU6InNob3ctY29sdW1uLWZpbHRlcnMifSldLExlPVtMKHt0eXBlOkJvb2xlYW4scmVmbGVjdDohMCxhdHRyaWJ1dGU6InNob3ctc2VsZWN0aW9uLWNoZWNrYm94In0pXSxvdD1bTCh7dHlwZTpCb29sZWFuLHJlZmxlY3Q6ITAsYXR0cmlidXRlOiJ2aXJ0dWFsaXplZCJ9KV0samE9W0woe3R5cGU6TnVtYmVyLGF0dHJpYnV0ZToidmlydHVhbC1vdmVyc2NhbiJ9KV0seWE9W0woe3R5cGU6U3RyaW5nLGF0dHJpYnV0ZToiaGlnaGxpZ2h0LXVwZGF0ZXMifSldLHBzPVtMKHt0eXBlOk51bWJlcixhdHRyaWJ1dGU6ImhpZ2hsaWdodC1kdXJhdGlvbiJ9KV0sYWk9W0woe3R5cGU6Qm9vbGVhbixyZWZsZWN0OiEwLGF0dHJpYnV0ZToiZml4ZWQtaGVpZ2h0In0pXSxOZT1bTCh7dHlwZTpTdHJpbmd9KV0sTnI9W0woe3R5cGU6U3RyaW5nfSldLFNlPVtMKHthdHRyaWJ1dGU6ITF9KV0semE9W1koKV0sa2k9W1koKV0sU2k9W1koKV0sbzE9W1koKV0sYzE9W1koKV0sSGEodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJoZWFkaW5nMSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4iaGVhZGluZzEiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5oZWFkaW5nMSwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULmhlYWRpbmcxPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sbyxsKSxIYSh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImhlYWRpbmcyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJoZWFkaW5nMiJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULmhlYWRpbmcyLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QuaGVhZGluZzI9R30sInNldCIpfSxtZXRhZGF0YTpEfSxkLHUpLEhhKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZGF0YSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4iZGF0YSJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULmRhdGEsImdldCIpLHNldDppKChULEcpPT57VC5kYXRhPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sYix2KSxIYSh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImtleSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ia2V5ImluIFQsImhhcyIpLGdldDppKFQ9PlQua2V5LCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1Qua2V5PUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sbSxmKSxIYSh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImxhYmVsIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJsYWJlbCJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULmxhYmVsLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QubGFiZWw9R30sInNldCIpfSxtZXRhZGF0YTpEfSxNLHopLEhhKHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZGlzYWJsZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+ImRpc2FibGVkImluIFQsImhhcyIpLGdldDppKFQ9PlQuZGlzYWJsZWQsImdldCIpLHNldDppKChULEcpPT57VC5kaXNhYmxlZD1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LEMsXyksSGEodGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJyZXF1aXJlZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4icmVxdWlyZWQiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5yZXF1aXJlZCwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULnJlcXVpcmVkPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sJCxFKSxIYSh0aGlzLG51bGwsSCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImRhdGFOYW1lIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJkYXRhTmFtZSJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULmRhdGFOYW1lLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QuZGF0YU5hbWU9R30sInNldCIpfSxtZXRhZGF0YTpEfSxrLFMpLEhhKHRoaXMsbnVsbCxJLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VhcmNoYWJsZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ic2VhcmNoYWJsZSJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULnNlYXJjaGFibGUsImdldCIpLHNldDppKChULEcpPT57VC5zZWFyY2hhYmxlPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sUCxSKSxIYSh0aGlzLG51bGwsSyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImRhdGFBY3Rpb25zIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJkYXRhQWN0aW9ucyJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULmRhdGFBY3Rpb25zLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QuZGF0YUFjdGlvbnM9R30sInNldCIpfSxtZXRhZGF0YTpEfSxWLFcpLEhhKHRoaXMsbnVsbCxtZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNvbHVtbnMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+ImNvbHVtbnMiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5jb2x1bW5zLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QuY29sdW1ucz1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LEIsVSksSGEodGhpcyxudWxsLGhlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicm93S2V5IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJyb3dLZXkiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5yb3dLZXksImdldCIpLHNldDppKChULEcpPT57VC5yb3dLZXk9R30sInNldCIpfSxtZXRhZGF0YTpEfSxGLGopLEhhKHRoaXMsbnVsbCx1ZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImF1Z21lbnRGcm9tRGlzcGxheUZ1bmN0aW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJhdWdtZW50RnJvbURpc3BsYXlGdW5jdGlvbiJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULmF1Z21lbnRGcm9tRGlzcGxheUZ1bmN0aW9uLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QuYXVnbWVudEZyb21EaXNwbGF5RnVuY3Rpb249R30sInNldCIpfSxtZXRhZGF0YTpEfSxsZSxRKSxIYSh0aGlzLG51bGwsaWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJkaXNwbGF5RnVuY3Rpb24iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+ImRpc3BsYXlGdW5jdGlvbiJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULmRpc3BsYXlGdW5jdGlvbiwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULmRpc3BsYXlGdW5jdGlvbj1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LHRlLGVlKSxIYSh0aGlzLG51bGwsa2Use2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJyZXZlcnNlRGlzcGxheUZ1bmN0aW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJyZXZlcnNlRGlzcGxheUZ1bmN0aW9uImluIFQsImhhcyIpLGdldDppKFQ9PlQucmV2ZXJzZURpc3BsYXlGdW5jdGlvbiwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULnJldmVyc2VEaXNwbGF5RnVuY3Rpb249R30sInNldCIpfSxtZXRhZGF0YTpEfSxYLFopLEhhKHRoaXMsbnVsbCx5ZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlbGVjdGVkRGF0YVJvdyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ic2VsZWN0ZWREYXRhUm93ImluIFQsImhhcyIpLGdldDppKFQ9PlQuc2VsZWN0ZWREYXRhUm93LCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1Quc2VsZWN0ZWREYXRhUm93PUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0scSxBKSxIYSh0aGlzLG51bGwsc2Use2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93VmVydGljYWxMaW5lcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ic2hvd1ZlcnRpY2FsTGluZXMiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5zaG93VmVydGljYWxMaW5lcywiZ2V0Iiksc2V0OmkoKFQsRyk9PntULnNob3dWZXJ0aWNhbExpbmVzPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sb2UsYWUpLEhhKHRoaXMsbnVsbCxUZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dIb3Jpem9udGFsTGluZXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+InNob3dIb3Jpem9udGFsTGluZXMiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5zaG93SG9yaXpvbnRhbExpbmVzLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1Quc2hvd0hvcml6b250YWxMaW5lcz1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LFJlLEJlKSxIYSh0aGlzLG51bGwsR2Use2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93R3JpZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ic2hvd0dyaWQiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5zaG93R3JpZCwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULnNob3dHcmlkPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sRGUsX2UpLEhhKHRoaXMsbnVsbCxDZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNvcnRCeSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ic29ydEJ5ImluIFQsImhhcyIpLGdldDppKFQ9PlQuc29ydEJ5LCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1Quc29ydEJ5PUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sdmUsYmUpLEhhKHRoaXMsbnVsbCxFZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImZpbHRlclRleHQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+ImZpbHRlclRleHQiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5maWx0ZXJUZXh0LCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QuZmlsdGVyVGV4dD1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LGplLFdlKSxIYSh0aGlzLG51bGwsc3Qse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjb2x1bW5GaWx0ZXJzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJjb2x1bW5GaWx0ZXJzImluIFQsImhhcyIpLGdldDppKFQ9PlQuY29sdW1uRmlsdGVycywiZ2V0Iiksc2V0OmkoKFQsRyk9PntULmNvbHVtbkZpbHRlcnM9R30sInNldCIpfSxtZXRhZGF0YTpEfSxNZSxnZSksSGEodGhpcyxudWxsLEllLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2hvd0NvbHVtbkZpbHRlcnMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+InNob3dDb2x1bW5GaWx0ZXJzImluIFQsImhhcyIpLGdldDppKFQ9PlQuc2hvd0NvbHVtbkZpbHRlcnMsImdldCIpLHNldDppKChULEcpPT57VC5zaG93Q29sdW1uRmlsdGVycz1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LGNlLGRlKSxIYSh0aGlzLG51bGwsTGUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93U2VsZWN0aW9uQ2hlY2tib3giLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+InNob3dTZWxlY3Rpb25DaGVja2JveCJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULnNob3dTZWxlY3Rpb25DaGVja2JveCwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULnNob3dTZWxlY3Rpb25DaGVja2JveD1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LEtlLFllKSxIYSh0aGlzLG51bGwsb3Qse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2aXJ0dWFsaXplZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4idmlydHVhbGl6ZWQiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC52aXJ0dWFsaXplZCwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULnZpcnR1YWxpemVkPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sVXQsWnQpLEhhKHRoaXMsbnVsbCxqYSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InZpcnR1YWxPdmVyc2NhbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4idmlydHVhbE92ZXJzY2FuImluIFQsImhhcyIpLGdldDppKFQ9PlQudmlydHVhbE92ZXJzY2FuLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QudmlydHVhbE92ZXJzY2FuPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sZXQsYnQpLEhhKHRoaXMsbnVsbCx5YSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImhpZ2hsaWdodFVwZGF0ZXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+ImhpZ2hsaWdodFVwZGF0ZXMiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5oaWdobGlnaHRVcGRhdGVzLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QuaGlnaGxpZ2h0VXBkYXRlcz1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LGVzLHJzKSxIYSh0aGlzLG51bGwscHMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJoaWdobGlnaHREdXJhdGlvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4iaGlnaGxpZ2h0RHVyYXRpb24iaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5oaWdobGlnaHREdXJhdGlvbiwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULmhpZ2hsaWdodER1cmF0aW9uPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sbnMsdGkpLEhhKHRoaXMsbnVsbCxhaSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImZpeGVkSGVpZ2h0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJmaXhlZEhlaWdodCJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULmZpeGVkSGVpZ2h0LCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QuZml4ZWRIZWlnaHQ9R30sInNldCIpfSxtZXRhZGF0YTpEfSx6ZSx4ZSksSGEodGhpcyxudWxsLE5lLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VhcmNoTW9kZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ic2VhcmNoTW9kZSJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULnNlYXJjaE1vZGUsImdldCIpLHNldDppKChULEcpPT57VC5zZWFyY2hNb2RlPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0seHQsTWEpLEhhKHRoaXMsbnVsbCxOcix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlbGVjdGlvbk1vZGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+InNlbGVjdGlvbk1vZGUiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5zZWxlY3Rpb25Nb2RlLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1Quc2VsZWN0aW9uTW9kZT1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LGZlLHJlKSxIYSh0aGlzLG51bGwsU2Use2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWxlY3RlZElkcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ic2VsZWN0ZWRJZHMiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5zZWxlY3RlZElkcywiZ2V0Iiksc2V0OmkoKFQsRyk9PntULnNlbGVjdGVkSWRzPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sT2UsSmUpLEhhKHRoaXMsbnVsbCx6YSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Il9fZm9jdXNlZENlbGwiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+Il9fZm9jdXNlZENlbGwiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5fX2ZvY3VzZWRDZWxsLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QuX19mb2N1c2VkQ2VsbD1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LGRhLHdzKSxIYSh0aGlzLG51bGwsa2kse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJfX2VkaXRpbmdDZWxsIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJfX2VkaXRpbmdDZWxsImluIFQsImhhcyIpLGdldDppKFQ9PlQuX19lZGl0aW5nQ2VsbCwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULl9fZWRpdGluZ0NlbGw9R30sInNldCIpfSxtZXRhZGF0YTpEfSxKaSxSciksSGEodGhpcyxudWxsLFNpLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiX19mbG9hdGluZ0FjdGl2ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4iX19mbG9hdGluZ0FjdGl2ZSJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULl9fZmxvYXRpbmdBY3RpdmUsImdldCIpLHNldDppKChULEcpPT57VC5fX2Zsb2F0aW5nQWN0aXZlPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sdm4scjEpLEhhKHRoaXMsbnVsbCxvMSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Il9fZmxhc2hpbmdDZWxscyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4iX19mbGFzaGluZ0NlbGxzImluIFQsImhhcyIpLGdldDppKFQ9PlQuX19mbGFzaGluZ0NlbGxzLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QuX19mbGFzaGluZ0NlbGxzPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sbjEsbDEpLEhhKHRoaXMsbnVsbCxjMSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Il9fdmlydHVhbFJhbmdlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJfX3ZpcnR1YWxSYW5nZSJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULl9fdmlydHVhbFJhbmdlLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QuX192aXJ0dWFsUmFuZ2U9R30sInNldCIpfSxtZXRhZGF0YTpEfSxkMSx1MSksSGEobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6RH0sbnVsbCx0KSxwMT1hPWUudmFsdWUsRCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpEfSl9c3RhdGljIGRlbW89TXZhO3N0YXRpYyBkZW1vR3JvdXBzPVsiRGF0YSBWaWV3Il07I2U9Q3QodGhpcyxvLCJoZWFkaW5nIDEiKTtnZXQgaGVhZGluZzEoKXtyZXR1cm4gdGhpcy4jZX1zZXQgaGVhZGluZzEoRCl7dGhpcy4jZT1EfSN0PShDdCh0aGlzLGwpLEN0KHRoaXMsZCwiaGVhZGluZyAyIikpO2dldCBoZWFkaW5nMigpe3JldHVybiB0aGlzLiN0fXNldCBoZWFkaW5nMihEKXt0aGlzLiN0PUR9I2E9KEN0KHRoaXMsdSksQ3QodGhpcyxiLFtdKSk7Z2V0IGRhdGEoKXtyZXR1cm4gdGhpcy4jYX1zZXQgZGF0YShEKXt0aGlzLiNhPUR9I3M9KEN0KHRoaXMsdiksQ3QodGhpcyxtLHZvaWQgMCkpO2dldCBrZXkoKXtyZXR1cm4gdGhpcy4jc31zZXQga2V5KEQpe3RoaXMuI3M9RH0jaT0oQ3QodGhpcyxmKSxDdCh0aGlzLE0sdm9pZCAwKSk7Z2V0IGxhYmVsKCl7cmV0dXJuIHRoaXMuI2l9c2V0IGxhYmVsKEQpe3RoaXMuI2k9RH0jcj0oQ3QodGhpcyx6KSxDdCh0aGlzLEMsITEpKTtnZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy4jcn1zZXQgZGlzYWJsZWQoRCl7dGhpcy4jcj1EfSNvPShDdCh0aGlzLF8pLEN0KHRoaXMsJCwhMSkpO2dldCByZXF1aXJlZCgpe3JldHVybiB0aGlzLiNvfXNldCByZXF1aXJlZChEKXt0aGlzLiNvPUR9Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuZGF0YX1zZXQgdmFsdWUoRCl7fWNoYW5nZVN1YmplY3Q9KEN0KHRoaXMsRSksbmV3IHV0LnNtYXJ0cngucnhqcy5TdWJqZWN0KTsjbj1DdCh0aGlzLGssdm9pZCAwKTtnZXQgZGF0YU5hbWUoKXtyZXR1cm4gdGhpcy4jbn1zZXQgZGF0YU5hbWUoRCl7dGhpcy4jbj1EfSNsPShDdCh0aGlzLFMpLEN0KHRoaXMsUCwhMCkpO2dldCBzZWFyY2hhYmxlKCl7cmV0dXJuIHRoaXMuI2x9c2V0IHNlYXJjaGFibGUoRCl7dGhpcy4jbD1EfSNjPShDdCh0aGlzLFIpLEN0KHRoaXMsVixbXSkpO2dldCBkYXRhQWN0aW9ucygpe3JldHVybiB0aGlzLiNjfXNldCBkYXRhQWN0aW9ucyhEKXt0aGlzLiNjPUR9I2Q9KEN0KHRoaXMsVyksQ3QodGhpcyxCLFtdKSk7Z2V0IGNvbHVtbnMoKXtyZXR1cm4gdGhpcy4jZH1zZXQgY29sdW1ucyhEKXt0aGlzLiNkPUR9I3U9KEN0KHRoaXMsVSksQ3QodGhpcyxGLHZvaWQgMCkpO2dldCByb3dLZXkoKXtyZXR1cm4gdGhpcy4jdX1zZXQgcm93S2V5KEQpe3RoaXMuI3U9RH0jcD0oQ3QodGhpcyxqKSxDdCh0aGlzLGxlLCExKSk7Z2V0IGF1Z21lbnRGcm9tRGlzcGxheUZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuI3B9c2V0IGF1Z21lbnRGcm9tRGlzcGxheUZ1bmN0aW9uKEQpe3RoaXMuI3A9RH0jaD0oQ3QodGhpcyxRKSxDdCh0aGlzLHRlLEQ9PkQpKTtnZXQgZGlzcGxheUZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuI2h9c2V0IGRpc3BsYXlGdW5jdGlvbihEKXt0aGlzLiNoPUR9I2Y9KEN0KHRoaXMsZWUpLEN0KHRoaXMsWCxEPT5EKSk7Z2V0IHJldmVyc2VEaXNwbGF5RnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4jZn1zZXQgcmV2ZXJzZURpc3BsYXlGdW5jdGlvbihEKXt0aGlzLiNmPUR9I209KEN0KHRoaXMsWiksQ3QodGhpcyxxLHZvaWQgMCkpO2dldCBzZWxlY3RlZERhdGFSb3coKXtyZXR1cm4gdGhpcy4jbX1zZXQgc2VsZWN0ZWREYXRhUm93KEQpe3RoaXMuI209RH0jZz0oQ3QodGhpcyxBKSxDdCh0aGlzLG9lLCExKSk7Z2V0IHNob3dWZXJ0aWNhbExpbmVzKCl7cmV0dXJuIHRoaXMuI2d9c2V0IHNob3dWZXJ0aWNhbExpbmVzKEQpe3RoaXMuI2c9RH0jYj0oQ3QodGhpcyxhZSksQ3QodGhpcyxSZSwhMSkpO2dldCBzaG93SG9yaXpvbnRhbExpbmVzKCl7cmV0dXJuIHRoaXMuI2J9c2V0IHNob3dIb3Jpem9udGFsTGluZXMoRCl7dGhpcy4jYj1EfSN2PShDdCh0aGlzLEJlKSxDdCh0aGlzLERlLCEwKSk7Z2V0IHNob3dHcmlkKCl7cmV0dXJuIHRoaXMuI3Z9c2V0IHNob3dHcmlkKEQpe3RoaXMuI3Y9RH1maWxlcz0oQ3QodGhpcyxfZSksW10pO2ZpbGVXZWFrTWFwPW5ldyBXZWFrTWFwO2RhdGFDaGFuZ2VTdWJqZWN0PW5ldyB1dC5zbWFydHJ4LnJ4anMuU3ViamVjdDsjeD1DdCh0aGlzLHZlLFtdKTtnZXQgc29ydEJ5KCl7cmV0dXJuIHRoaXMuI3h9c2V0IHNvcnRCeShEKXt0aGlzLiN4PUR9I3k9KEN0KHRoaXMsYmUpLEN0KHRoaXMsamUsIiIpKTtnZXQgZmlsdGVyVGV4dCgpe3JldHVybiB0aGlzLiN5fXNldCBmaWx0ZXJUZXh0KEQpe3RoaXMuI3k9RH0jdz0oQ3QodGhpcyxXZSksQ3QodGhpcyxNZSx7fSkpO2dldCBjb2x1bW5GaWx0ZXJzKCl7cmV0dXJuIHRoaXMuI3d9c2V0IGNvbHVtbkZpbHRlcnMoRCl7dGhpcy4jdz1EfSNrPShDdCh0aGlzLGdlKSxDdCh0aGlzLGNlLCExKSk7Z2V0IHNob3dDb2x1bW5GaWx0ZXJzKCl7cmV0dXJuIHRoaXMuI2t9c2V0IHNob3dDb2x1bW5GaWx0ZXJzKEQpe3RoaXMuI2s9RH0jUz0oQ3QodGhpcyxkZSksQ3QodGhpcyxLZSwhMSkpO2dldCBzaG93U2VsZWN0aW9uQ2hlY2tib3goKXtyZXR1cm4gdGhpcy4jU31zZXQgc2hvd1NlbGVjdGlvbkNoZWNrYm94KEQpe3RoaXMuI1M9RH0jXz0oQ3QodGhpcyxZZSksQ3QodGhpcyxVdCwhMSkpO2dldCB2aXJ0dWFsaXplZCgpe3JldHVybiB0aGlzLiNffXNldCB2aXJ0dWFsaXplZChEKXt0aGlzLiNfPUR9I009KEN0KHRoaXMsWnQpLEN0KHRoaXMsZXQsOCkpO2dldCB2aXJ0dWFsT3ZlcnNjYW4oKXtyZXR1cm4gdGhpcy4jTX1zZXQgdmlydHVhbE92ZXJzY2FuKEQpe3RoaXMuI009RH0jej0oQ3QodGhpcyxidCksQ3QodGhpcyxlcywibm9uZSIpKTtnZXQgaGlnaGxpZ2h0VXBkYXRlcygpe3JldHVybiB0aGlzLiN6fXNldCBoaWdobGlnaHRVcGRhdGVzKEQpe3RoaXMuI3o9RH0jQz0oQ3QodGhpcyxycyksQ3QodGhpcyxucyw5MDApKTtnZXQgaGlnaGxpZ2h0RHVyYXRpb24oKXtyZXR1cm4gdGhpcy4jQ31zZXQgaGlnaGxpZ2h0RHVyYXRpb24oRCl7dGhpcy4jQz1EfSNUPShDdCh0aGlzLHRpKSxDdCh0aGlzLHplLCExKSk7Z2V0IGZpeGVkSGVpZ2h0KCl7cmV0dXJuIHRoaXMuI1R9c2V0IGZpeGVkSGVpZ2h0KEQpe3RoaXMuI1Q9RH0jJD0oQ3QodGhpcyx4ZSksQ3QodGhpcyx4dCwidGFibGUiKSk7Z2V0IHNlYXJjaE1vZGUoKXtyZXR1cm4gdGhpcy4jJH1zZXQgc2VhcmNoTW9kZShEKXt0aGlzLiMkPUR9X19zZWFyY2hUZXh0U3ViPUN0KHRoaXMsTWEpO19fc2VhcmNoTW9kZVN1YjsjRD1DdCh0aGlzLGZlLCJub25lIik7Z2V0IHNlbGVjdGlvbk1vZGUoKXtyZXR1cm4gdGhpcy4jRH1zZXQgc2VsZWN0aW9uTW9kZShEKXt0aGlzLiNEPUR9I0w9KEN0KHRoaXMscmUpLEN0KHRoaXMsT2UsbmV3IFNldCkpO2dldCBzZWxlY3RlZElkcygpe3JldHVybiB0aGlzLiNMfXNldCBzZWxlY3RlZElkcyhEKXt0aGlzLiNMPUR9X3Jvd0lkTWFwPShDdCh0aGlzLEplKSxuZXcgV2Vha01hcCk7X3Jvd0lkQ291bnRlcj0wO19fc2VsZWN0aW9uQW5jaG9ySWQ7I0U9Q3QodGhpcyxkYSx2b2lkIDApO2dldCBfX2ZvY3VzZWRDZWxsKCl7cmV0dXJuIHRoaXMuI0V9c2V0IF9fZm9jdXNlZENlbGwoRCl7dGhpcy4jRT1EfSNQPShDdCh0aGlzLHdzKSxDdCh0aGlzLEppLHZvaWQgMCkpO2dldCBfX2VkaXRpbmdDZWxsKCl7cmV0dXJuIHRoaXMuI1B9c2V0IF9fZWRpdGluZ0NlbGwoRCl7dGhpcy4jUD1EfSNJPShDdCh0aGlzLFJyKSxDdCh0aGlzLHZuLCExKSk7Z2V0IF9fZmxvYXRpbmdBY3RpdmUoKXtyZXR1cm4gdGhpcy4jSX1zZXQgX19mbG9hdGluZ0FjdGl2ZShEKXt0aGlzLiNJPUR9I0E9KEN0KHRoaXMscjEpLEN0KHRoaXMsbjEsbmV3IE1hcCkpO2dldCBfX2ZsYXNoaW5nQ2VsbHMoKXtyZXR1cm4gdGhpcy4jQX1zZXQgX19mbGFzaGluZ0NlbGxzKEQpe3RoaXMuI0E9RH1fX3ByZXZTbmFwc2hvdD1DdCh0aGlzLGwxKTtfX2ZsYXNoQ2xlYXJUaW1lcjtfX2ZsYXNoVGljaz0wO19fZmxhc2hXYXJuZWROb1Jvd0tleT0hMTtfX21lbW9FZmZlY3RpdmVDb2xzO19fbWVtb1ZpZXdEYXRhO19fY29sdW1uc1NpemVkRm9yO19fcm93SGVpZ2h0PTM2O19fcm93SGVpZ2h0TWVhc3VyZWQ9ITE7I049Q3QodGhpcyxkMSx7c3RhcnQ6MCxlbmQ6MH0pO2dldCBfX3ZpcnR1YWxSYW5nZSgpe3JldHVybiB0aGlzLiNOfXNldCBfX3ZpcnR1YWxSYW5nZShEKXt0aGlzLiNOPUR9Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuaGFzQXR0cmlidXRlKCJ0YWJpbmRleCIpfHx0aGlzLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCIwIiksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLl9faGFuZGxlSG9zdEtleWRvd24pfV9faGFuZGxlSG9zdEtleWRvd249KEN0KHRoaXMsdTEpLEQ9PntsZXQgVD1ELmNvbXBvc2VkUGF0aD8uKCl8fFtdLEc9ITE7Zm9yKGxldCBQZSBvZiBUKXtsZXQgRmU9UGU/LnRhZ05hbWU7aWYoRmU9PT0iSU5QVVQifHxGZT09PSJURVhUQVJFQSJ8fFBlPy5pc0NvbnRlbnRFZGl0YWJsZSl7Rz0hMDticmVha319aWYoKEQubWV0YUtleXx8RC5jdHJsS2V5KSYmKEQua2V5PT09ImMifHxELmtleT09PSJDIikpe2lmKEcpcmV0dXJuO2xldCBQZT1bXTtpZih0aGlzLnNlbGVjdGVkSWRzLnNpemU+MClmb3IobGV0IEZlIG9mIHRoaXMuZGF0YSl0aGlzLnNlbGVjdGVkSWRzLmhhcyh0aGlzLmdldFJvd0lkKEZlKSkmJlBlLnB1c2goRmUpO2Vsc2UgdGhpcy5zZWxlY3RlZERhdGFSb3cmJlBlLnB1c2godGhpcy5zZWxlY3RlZERhdGFSb3cpO2lmKFBlLmxlbmd0aD09PTApcmV0dXJuO0QucHJldmVudERlZmF1bHQoKSx0aGlzLl9fd3JpdGVSb3dzQXNKc29uKFBlKTtyZXR1cm59aWYoIShHfHx0aGlzLl9fZWRpdGluZ0NlbGwpKXN3aXRjaChELmtleSl7Y2FzZSJBcnJvd0xlZnQiOkQucHJldmVudERlZmF1bHQoKSx0aGlzLm1vdmVGb2N1c2VkQ2VsbCgtMSwwLCExKTtyZXR1cm47Y2FzZSJBcnJvd1JpZ2h0IjpELnByZXZlbnREZWZhdWx0KCksdGhpcy5tb3ZlRm9jdXNlZENlbGwoMSwwLCExKTtyZXR1cm47Y2FzZSJBcnJvd1VwIjpELnByZXZlbnREZWZhdWx0KCksdGhpcy5tb3ZlRm9jdXNlZENlbGwoMCwtMSwhMSk7cmV0dXJuO2Nhc2UiQXJyb3dEb3duIjpELnByZXZlbnREZWZhdWx0KCksdGhpcy5tb3ZlRm9jdXNlZENlbGwoMCwxLCExKTtyZXR1cm47Y2FzZSJFbnRlciI6Y2FzZSJGMiI6e2lmKCF0aGlzLl9fZm9jdXNlZENlbGwpcmV0dXJuO2xldCBGZT0odGhpcy5fbGFzdFZpZXdEYXRhPz9bXSkuZmluZChYZT0+dGhpcy5nZXRSb3dJZChYZSk9PT10aGlzLl9fZm9jdXNlZENlbGwucm93SWQpO2lmKCFGZSlyZXR1cm47bGV0IFVlPXRoaXMuX19nZXRFZmZlY3RpdmVDb2x1bW5zKCkuZmluZChYZT0+U3RyaW5nKFhlLmtleSk9PT10aGlzLl9fZm9jdXNlZENlbGwuY29sS2V5KTtpZighVWV8fCF0aGlzLl9faXNDb2x1bW5FZGl0YWJsZShVZSkpcmV0dXJuO0QucHJldmVudERlZmF1bHQoKSx0aGlzLnN0YXJ0RWRpdGluZyhGZSxVZSk7cmV0dXJufWNhc2UiRXNjYXBlIjp0aGlzLl9fZm9jdXNlZENlbGwmJih0aGlzLl9fZm9jdXNlZENlbGw9dm9pZCAwLHRoaXMucmVxdWVzdFVwZGF0ZSgpKTtyZXR1cm47ZGVmYXVsdDpyZXR1cm59fSk7Y29weVNlbGVjdGlvbkFzSnNvbihEKXtsZXQgVD1bXTtpZih0aGlzLnNlbGVjdGVkSWRzLnNpemU+MClmb3IobGV0IEcgb2YgdGhpcy5kYXRhKXRoaXMuc2VsZWN0ZWRJZHMuaGFzKHRoaXMuZ2V0Um93SWQoRykpJiZULnB1c2goRyk7ZWxzZSBEP1QucHVzaChEKTp0aGlzLnNlbGVjdGVkRGF0YVJvdyYmVC5wdXNoKHRoaXMuc2VsZWN0ZWREYXRhUm93KTtULmxlbmd0aCE9PTAmJnRoaXMuX193cml0ZVJvd3NBc0pzb24oVCl9X193cml0ZVJvd3NBc0pzb24oRCl7dHJ5e2xldCBUPUpTT04uc3RyaW5naWZ5KEQsbnVsbCwyKTtuYXZpZ2F0b3IuY2xpcGJvYXJkPy53cml0ZVRleHQoVCl9Y2F0Y2h7fX1zdGF0aWMgc3R5bGVzPUN2YTtfX2dldERpc3BsYXlGdW5jdGlvblNoYXBlS2V5KCl7aWYoIXRoaXMuZGF0YXx8dGhpcy5kYXRhLmxlbmd0aD09PTApcmV0dXJuIiI7bGV0IEQ9dGhpcy5kaXNwbGF5RnVuY3Rpb24odGhpcy5kYXRhWzBdKT8/e307cmV0dXJuIE9iamVjdC5rZXlzKEQpLmpvaW4oIlwwIil9X19nZXRFZmZlY3RpdmVDb2x1bW5zKCl7bGV0IEQ9QXJyYXkuaXNBcnJheSh0aGlzLmNvbHVtbnMpJiZ0aGlzLmNvbHVtbnMubGVuZ3RoPjAsVD0hRHx8dGhpcy5hdWdtZW50RnJvbURpc3BsYXlGdW5jdGlvbj90aGlzLl9fZ2V0RGlzcGxheUZ1bmN0aW9uU2hhcGVLZXkoKToiIixHPXRoaXMuX19tZW1vRWZmZWN0aXZlQ29scztpZihHJiZHLmNvbHVtbnM9PT10aGlzLmNvbHVtbnMmJkcuYXVnbWVudD09PXRoaXMuYXVnbWVudEZyb21EaXNwbGF5RnVuY3Rpb24mJkcuZGlzcGxheUZ1bmN0aW9uPT09dGhpcy5kaXNwbGF5RnVuY3Rpb24mJkcuZGlzcGxheVNoYXBlS2V5PT09VClyZXR1cm4gRy5vdXQ7bGV0ICRlPUQ/JHZhKHRoaXMuY29sdW1ucyx0aGlzLmF1Z21lbnRGcm9tRGlzcGxheUZ1bmN0aW9uLHRoaXMuZGlzcGxheUZ1bmN0aW9uLHRoaXMuZGF0YSk6Rm50KHRoaXMuZGlzcGxheUZ1bmN0aW9uLHRoaXMuZGF0YSk7cmV0dXJuIHRoaXMuX19tZW1vRWZmZWN0aXZlQ29scz17Y29sdW1uczp0aGlzLmNvbHVtbnMsYXVnbWVudDp0aGlzLmF1Z21lbnRGcm9tRGlzcGxheUZ1bmN0aW9uLGRpc3BsYXlGdW5jdGlvbjp0aGlzLmRpc3BsYXlGdW5jdGlvbixkaXNwbGF5U2hhcGVLZXk6VCxvdXQ6JGV9LCRlfV9fZ2V0Vmlld0RhdGEoRCl7bGV0IFQ9dGhpcy5zZWFyY2hNb2RlPT09ImRhdGEiPyJkYXRhIjoidGFibGUiLEc9dGhpcy5fX21lbW9WaWV3RGF0YTtpZihHJiZHLmRhdGE9PT10aGlzLmRhdGEmJkcuc29ydEJ5PT09dGhpcy5zb3J0QnkmJkcuZmlsdGVyVGV4dD09PXRoaXMuZmlsdGVyVGV4dCYmRy5jb2x1bW5GaWx0ZXJzPT09dGhpcy5jb2x1bW5GaWx0ZXJzJiZHLnNlYXJjaE1vZGU9PT1UJiZHLmVmZmVjdGl2ZUNvbHVtbnM9PT1EKXJldHVybiBHLm91dDtsZXQgJGU9RXZhKHRoaXMuZmlsdGVyVGV4dCxULEQpLFBlPUR2YSh0aGlzLmRhdGEsRCx0aGlzLnNvcnRCeSx0aGlzLmZpbHRlclRleHQsdGhpcy5jb2x1bW5GaWx0ZXJzLFQsJGV8fHZvaWQgMCk7cmV0dXJuIHRoaXMuX19tZW1vVmlld0RhdGE9e2RhdGE6dGhpcy5kYXRhLHNvcnRCeTp0aGlzLnNvcnRCeSxmaWx0ZXJUZXh0OnRoaXMuZmlsdGVyVGV4dCxjb2x1bW5GaWx0ZXJzOnRoaXMuY29sdW1uRmlsdGVycyxzZWFyY2hNb2RlOlQsZWZmZWN0aXZlQ29sdW1uczpELG91dDpQZX0sUGV9cmVuZGVyKCl7bGV0IEQ9dGhpcy5fX2dldEVmZmVjdGl2ZUNvbHVtbnMoKSxUPXRoaXMuX19nZXRWaWV3RGF0YShEKSxHPXRoaXMuZ2V0QWN0aW9uc0ZvclR5cGUoImhlYWRlciIpLCRlPXRoaXMuZ2V0QWN0aW9uc0ZvclR5cGUoImZvb3RlciIpLFBlPXRoaXMuZ2V0QWN0aW9uc0ZvclR5cGUoImluUm93Iik7dGhpcy5fbGFzdFZpZXdEYXRhPVQ7bGV0IEZlPXRoaXMudmlydHVhbGl6ZWQmJlQubGVuZ3RoPjAsVmU9VCxVZT0wLFhlPTAsd3Q9MDtpZihGZSl7bGV0IFFlPXRoaXMuX192aXJ0dWFsUmFuZ2UsdmE9TWF0aC5tYXgoMCxRZS5zdGFydCksTnM9TWF0aC5taW4oVC5sZW5ndGgsUWUuZW5kfHwwKSx1YT1Ocz4wP05zOk1hdGgubWluKFQubGVuZ3RoLHRoaXMudmlydHVhbE92ZXJzY2FuKjIrMTYpO1VlPXZhLFZlPVQuc2xpY2UodmEsdWEpLFhlPXZhKnRoaXMuX19yb3dIZWlnaHQsd3Q9TWF0aC5tYXgoMCxULmxlbmd0aC11YSkqdGhpcy5fX3Jvd0hlaWdodH1yZXR1cm4gd2AKICAgICAgPGRlZXMtdGlsZT4KICAgICAgICA8ZGl2IHNsb3Q9ImhlYWRlciIgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nQ29udGFpbmVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZyBoZWFkaW5nMSI+JHt0aGlzLmxhYmVsfHx0aGlzLmhlYWRpbmcxfTwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nIGhlYWRpbmcyIj4ke3RoaXMuaGVhZGluZzJ9PC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlckFjdGlvbnMiPgogICAgICAgICAgICAke0cubWFwKFFlPT53YDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSJoZWFkZXJBY3Rpb24iCiAgICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+e1FlLmFjdGlvbkZ1bmMoe2l0ZW06dGhpcy5zZWxlY3RlZERhdGFSb3csdGFibGU6dGhpc30pfX0KICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAke1FlLmljb25OYW1lP3dgPGRlZXMtaWNvbiAuaWNvblNpemU9JHsxNH0gLmljb249JHtRZS5pY29uTmFtZX0+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICAgICAgICAke1FlLm5hbWV9YDpRZS5uYW1lfQogICAgICAgICAgICAgIDwvZGl2PmApfQogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZ1NlcGFyYXRpb24iPjwvZGl2PgogICAgICAgICR7dGhpcy5oaWdobGlnaHRVcGRhdGVzPT09ImZsYXNoIiYmIXRoaXMucm93S2V5P3dgPGRpdiBjbGFzcz0iZmxhc2hDb25maWdXYXJuaW5nIiByb2xlPSJhbGVydCI+CiAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6dHJpYW5nbGVBbGVydCJ9PjwvZGVlcy1pY29uPgogICAgICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICAgICAgPGNvZGU+aGlnaGxpZ2h0LXVwZGF0ZXM9ImZsYXNoIjwvY29kZT4gcmVxdWlyZXMKICAgICAgICAgICAgICAgIDxjb2RlPnJvd0tleTwvY29kZT4gdG8gYmUgc2V0LiBGbGFzaCBpcyBkaXNhYmxlZC4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PmA6d2BgfQogICAgICAgIDxkaXYgY2xhc3M9InNlYXJjaEdyaWQgaGlkZGVuIj4KICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQKICAgICAgICAgICAgLmxhYmVsPSR7Imx1Y2VuZSBzeW50YXggc2VhcmNoIn0KICAgICAgICAgICAgLmluZm9UZXh0PSR7YAogICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSBsdWNlbmUgc3ludGF4IHRvIHNlYXJjaCBmb3IgZGF0YSwgZS5nLjoKCiAgICAgICAgICAgICAgXGBcYFxgCiAgICAgICAgICAgICAgbmFtZTogImpvaG4iIEFORCBhZ2U6IDE4CiAgICAgICAgICAgICAgXGBcYFxgCgogICAgICAgICAgICBgfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgPGRlZXMtaW5wdXQtbXVsdGl0b2dnbGUKICAgICAgICAgICAgLmxhYmVsPSR7InNlYXJjaCBtb2RlIn0KICAgICAgICAgICAgLm9wdGlvbnM9JHtbInRhYmxlIiwiZGF0YSIsInNlcnZlciJdfQogICAgICAgICAgICAuc2VsZWN0ZWRPcHRpb249JHsidGFibGUifQogICAgICAgICAgICAuaW5mb1RleHQ9JHtgCiAgICAgICAgICAgICAgVGhlcmUgYXJlIHRocmVlIGJhc2ljIG1vZGVzOgoKICAgICAgICAgICAgICAqIHRhYmxlOiBvbmx5IHNlYXJjaGVzIGRhdGEgYWxyZWFkeSBpbiB0aGUgdGFibGUKICAgICAgICAgICAgICAqIGRhdGE6IHNlYXJjaGVzIG9yaWdpbmFsIGRhdGEsIGlnbm9yaW5nIHRhYmxlIHRyYW5zZm9ybXMKICAgICAgICAgICAgICAqIHNlcnZlcjogc2VhcmNoZXMgZGF0YSBvbiB0aGUgc2VydmVyCgogICAgICAgICAgICBgfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1tdWx0aXRvZ2dsZT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPCEtLSB0aGUgYWN0dWFsIHRhYmxlIC0tPgogICAgICAgIDxzdHlsZT48L3N0eWxlPgogICAgICAgICR7dGhpcy5kYXRhLmxlbmd0aD4wP3dgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFibGVTY3JvbGwiPgogICAgICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgJHt0aGlzLnJlbmRlckhlYWRlclJvd3MoRCl9CiAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgPHRib2R5CiAgICAgICAgICAgICAgICAgIEBjbGljaz0ke3RoaXMuX19vblRib2R5Q2xpY2t9CiAgICAgICAgICAgICAgICAgIEBkYmxjbGljaz0ke3RoaXMuX19vblRib2R5RGJsY2xpY2t9CiAgICAgICAgICAgICAgICAgIEBtb3VzZWRvd249JHt0aGlzLl9fb25UYm9keU1vdXNlZG93bn0KICAgICAgICAgICAgICAgICAgQGNvbnRleHRtZW51PSR7dGhpcy5fX29uVGJvZHlDb250ZXh0bWVudX0KICAgICAgICAgICAgICAgICAgQGRyYWdlbnRlcj0ke3RoaXMuX19vblRib2R5RHJhZ2VudGVyfQogICAgICAgICAgICAgICAgICBAZHJhZ2xlYXZlPSR7dGhpcy5fX29uVGJvZHlEcmFnbGVhdmV9CiAgICAgICAgICAgICAgICAgIEBkcmFnb3Zlcj0ke3RoaXMuX19vblRib2R5RHJhZ292ZXJ9CiAgICAgICAgICAgICAgICAgIEBkcm9wPSR7dGhpcy5fX29uVGJvZHlEcm9wfQogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAke0ZlJiZYZT4wP3dgPHRyIGFyaWEtaGlkZGVuPSJ0cnVlIiBzdHlsZT0iaGVpZ2h0OiR7WGV9cHgiPjx0ZD48L3RkPjwvdHI+YDp3YGB9CiAgICAgICAgICAgICAgICAgICR7VmkucmVwZWF0KFZlLFFlPT50aGlzLmdldFJvd0lkKFFlKSwoUWUsdmEpPT57bGV0IE5zPVVlK3ZhLHVhPXRoaXMuZ2V0Um93SWQoUWUpLEdzPXRoaXMuX19mbGFzaGluZ0NlbGxzLmdldCh1YSk7cmV0dXJuIHdgCiAgICAgICAgICAgICAgICAgICAgICA8dHIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1yb3ctaWR4PSR7TnN9CiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSIke1FlPT09dGhpcy5zZWxlY3RlZERhdGFSb3d8fHRoaXMuaXNSb3dTZWxlY3RlZChRZSk/InNlbGVjdGVkIjoiIn0iCiAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICR7dGhpcy5zaG93U2VsZWN0aW9uQ2hlY2tib3g/d2A8dGQgc3R5bGU9IndpZHRoOjQycHg7IHRleHQtYWxpZ246Y2VudGVyOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWVzLWlucHV0LWNoZWNrYm94CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPSR7dGhpcy5pc1Jvd1NlbGVjdGVkKFFlKX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbmV3VmFsdWU9JHtmdD0+e2Z0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuc2V0Um93U2VsZWN0ZWQoUWUsZnQuZGV0YWlsPT09ITApfX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1jaGVja2JveD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+YDp3YGB9CiAgICAgICAgICAgICAgICAgICAgICAgICR7RC5maWx0ZXIoZnQ9PiFmdC5oaWRkZW4pLm1hcCgoZnQsZXIpPT57bGV0IGtzPWQ0KFFlLGZ0LHRoaXMuZGlzcGxheUZ1bmN0aW9uKSxocz1mdC5yZW5kZXJlcj9mdC5yZW5kZXJlcihrcyxRZSx7cm93SW5kZXg6TnMsY29sSW5kZXg6ZXIsY29sdW1uOmZ0fSk6a3MsX2k9U3RyaW5nKGZ0LmtleSksQTJlPSEhKGZ0LmVkaXRhYmxlfHxmdC5lZGl0b3IpLE4yZT10aGlzLl9fZm9jdXNlZENlbGw/LnJvd0lkPT09dWEmJnRoaXMuX19mb2N1c2VkQ2VsbD8uY29sS2V5PT09X2ksRDQ9dGhpcy5fX2VkaXRpbmdDZWxsPy5yb3dJZD09PXVhJiZ0aGlzLl9fZWRpdGluZ0NlbGw/LmNvbEtleT09PV9pLFd4PUdzPy5nZXQoX2kpLEw0PVd4IT09dm9pZCAwLFIyZT1MNCYmISFmdC5mbGFzaEJvcmRlcixPMmU9W0EyZT8iZWRpdGFibGUiOiIiLE4yZSYmIUQ0PyJmb2N1c2VkIjoiIixEND8iZWRpdGluZ0NlbGwiOiIiXS5maWx0ZXIoQm9vbGVhbikuam9pbigiICIpLEd4PXdgPGRpdgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ke0w0P1IyZT8iaW5uZXJDZWxsQ29udGFpbmVyIGZsYXNoaW5nLWJvcmRlciI6ImlubmVyQ2VsbENvbnRhaW5lciBmbGFzaGluZyI6ImlubmVyQ2VsbENvbnRhaW5lciJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7RDQ/dGhpcy5yZW5kZXJDZWxsRWRpdG9yKFFlLGZ0KTpoc30KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PmA7cmV0dXJuIHdgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSR7TzJlfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtY29sLWtleT0ke19pfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtMND9WaS5rZXllZChgJHt1YX06JHtfaX06JHtXeH1gLEd4KTpHeH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9KX0KICAgICAgICAgICAgICAgICAgICAgICAgJHsoKCk9PntpZihQZS5sZW5ndGg+MClyZXR1cm4gd2AKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJhY3Rpb25zQ29sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb25zQ29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7UGUubWFwKGZ0PT53YAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJhY3Rpb24iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+ZnQuYWN0aW9uRnVuYyh7aXRlbTpRZSx0YWJsZTp0aGlzfSl9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtmdC5pY29uTmFtZT93YCA8ZGVlcy1pY29uIC5pY29uPSR7ZnQuaWNvbk5hbWV9PjwvZGVlcy1pY29uPiBgOmZ0Lm5hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGApfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYH0pKCl9CiAgICAgICAgICAgICAgICAgICAgICA8L3RyPmB9KX0KICAgICAgICAgICAgICAgICAgJHtGZSYmd3Q+MD93YDx0ciBhcmlhLWhpZGRlbj0idHJ1ZSIgc3R5bGU9ImhlaWdodDoke3d0fXB4Ij48dGQ+PC90ZD48L3RyPmA6d2BgfQogICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsb2F0aW5nSGVhZGVyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgICAgICAgICAke3RoaXMuX19mbG9hdGluZ0FjdGl2ZT93YDx0YWJsZT4KICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgJHt0aGlzLnJlbmRlckhlYWRlclJvd3MoRCl9CiAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+YDp3YGB9CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGA6d2AgPGRpdiBjbGFzcz0ibm9EYXRhU2V0Ij5ObyBkYXRhIHNldCE8L2Rpdj4gYH0KICAgICAgICA8ZGl2IHNsb3Q9ImZvb3RlciIgY2xhc3M9ImZvb3RlciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWJsZVN0YXRpc3RpY3MiPgogICAgICAgICAgICAke3RoaXMuZGF0YS5sZW5ndGh9ICR7dGhpcy5kYXRhTmFtZXx8ImRhdGEgcm93cyJ9ICh0b3RhbCkgfAogICAgICAgICAgICAke3RoaXMuc2VsZWN0ZWREYXRhUm93P2AjICR7dGhpcy5kYXRhLmluZGV4T2YodGhpcy5zZWxlY3RlZERhdGFSb3cpKzF9YDoiTm8ifQogICAgICAgICAgICBzZWxlY3RlZAogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJBY3Rpb25zIj4KICAgICAgICAgICAgJHskZS5tYXAoUWU9PndgPGRpdgogICAgICAgICAgICAgICAgY2xhc3M9ImZvb3RlckFjdGlvbiIKICAgICAgICAgICAgICAgIEBjbGljaz0keygpPT57UWUuYWN0aW9uRnVuYyh7aXRlbTp0aGlzLnNlbGVjdGVkRGF0YVJvdyx0YWJsZTp0aGlzfSl9fQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICR7UWUuaWNvbk5hbWU/d2A8ZGVlcy1pY29uIC5pY29uU2l6ZT0kezE0fSAuaWNvbj0ke1FlLmljb25OYW1lfT48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgICAgICAgICR7UWUubmFtZX1gOlFlLm5hbWV9CiAgICAgICAgICAgICAgPC9kaXY+YCl9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXRpbGU+CiAgICBgfXJlbmRlckhlYWRlclJvd3MoRCl7cmV0dXJuIHdgCiAgICAgIDx0cj4KICAgICAgICAke3RoaXMuc2hvd1NlbGVjdGlvbkNoZWNrYm94P3dgCiAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDo0MnB4OyB0ZXh0LWFsaWduOmNlbnRlcjsiPgogICAgICAgICAgICAgICAgJHt0aGlzLnNlbGVjdGlvbk1vZGU9PT0ibXVsdGkiP3dgCiAgICAgICAgICAgICAgICAgICAgICA8ZGVlcy1pbnB1dC1jaGVja2JveAogICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU9JHt0aGlzLmFyZUFsbFZpc2libGVTZWxlY3RlZCgpfQogICAgICAgICAgICAgICAgICAgICAgICAuaW5kZXRlcm1pbmF0ZT0ke3RoaXMuaXNWaXNpYmxlU2VsZWN0aW9uSW5kZXRlcm1pbmF0ZSgpfQogICAgICAgICAgICAgICAgICAgICAgICBAbmV3VmFsdWU9JHtUPT57VC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLnNldFNlbGVjdFZpc2libGUoVC5kZXRhaWw9PT0hMCl9fQogICAgICAgICAgICAgICAgICAgICAgPjwvZGVlcy1pbnB1dC1jaGVja2JveD4KICAgICAgICAgICAgICAgICAgICBgOndgYH0KICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICBgOndgYH0KICAgICAgICAke0QuZmlsdGVyKFQ9PiFULmhpZGRlbikubWFwKFQ9PntsZXQgRz1ULnNvcnRhYmxlIT09ITEsJGU9dGhpcy5nZXRBcmlhU29ydChUKTtyZXR1cm4gd2AKICAgICAgICAgICAgICA8dGgKICAgICAgICAgICAgICAgIHJvbGU9ImNvbHVtbmhlYWRlciIKICAgICAgICAgICAgICAgIGFyaWEtc29ydD0keyRlfQogICAgICAgICAgICAgICAgc3R5bGU9IiR7Rz8iY3Vyc29yOiBwb2ludGVyOyI6IiJ9IgogICAgICAgICAgICAgICAgQGNsaWNrPSR7UGU9Pkc/dGhpcy5oYW5kbGVIZWFkZXJDbGljayhQZSxULEQpOm51bGx9CiAgICAgICAgICAgICAgICBAY29udGV4dG1lbnU9JHtQZT0+Rz90aGlzLm9wZW5IZWFkZXJDb250ZXh0TWVudShQZSxULEQpOm51bGx9CiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgJHtULmhlYWRlcj8/VC5rZXl9CiAgICAgICAgICAgICAgICAke3RoaXMucmVuZGVyU29ydEluZGljYXRvcihUKX0KICAgICAgICAgICAgICA8L3RoPmB9KX0KICAgICAgICAke3RoaXMuZGF0YUFjdGlvbnMmJnRoaXMuZGF0YUFjdGlvbnMubGVuZ3RoPjA/d2A8dGggY2xhc3M9ImFjdGlvbnNDb2wiPkFjdGlvbnM8L3RoPmA6d2BgfQogICAgICA8L3RyPgogICAgICAke3RoaXMuc2hvd0NvbHVtbkZpbHRlcnM/d2A8dHIgY2xhc3M9ImZpbHRlcnNSb3ciPgogICAgICAgICAgICAke3RoaXMuc2hvd1NlbGVjdGlvbkNoZWNrYm94P3dgPHRoIHN0eWxlPSJ3aWR0aDo0MnB4OyI+PC90aD5gOndgYH0KICAgICAgICAgICAgJHtELmZpbHRlcihUPT4hVC5oaWRkZW4pLm1hcChUPT57bGV0IEc9U3RyaW5nKFQua2V5KTtyZXR1cm4gVC5maWx0ZXJhYmxlPT09ITE/d2A8dGg+PC90aD5gOndgPHRoPgogICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IkZpbHRlci4uLiIgZGF0YS1jb2wta2V5PSR7R30gLnZhbHVlPSR7dGhpcy5jb2x1bW5GaWx0ZXJzW0ddfHwiIn0KICAgICAgICAgICAgICAgICAgICBAaW5wdXQ9JHskZT0+dGhpcy5zZXRDb2x1bW5GaWx0ZXIoRywkZS50YXJnZXQudmFsdWUpfSAvPgogICAgICAgICAgICAgICAgPC90aD5gfSl9CiAgICAgICAgICAgICR7dGhpcy5kYXRhQWN0aW9ucyYmdGhpcy5kYXRhQWN0aW9ucy5sZW5ndGg+MD93YDx0aD48L3RoPmA6d2BgfQogICAgICAgICAgPC90cj5gOndgYH0KICAgIGB9X19mbG9hdGluZ1Jlc2l6ZU9ic2VydmVyO19fZmxvYXRpbmdTY3JvbGxIYW5kbGVyO19fc2Nyb2xsQW5jZXN0b3JzPVtdO2dldCBfX2Zsb2F0aW5nSGVhZGVyRWwoKXtyZXR1cm4gdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIuZmxvYXRpbmdIZWFkZXIiKT8/bnVsbH1nZXQgX19yZWFsVGFibGVFbCgpe3JldHVybiB0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi50YWJsZVNjcm9sbCA+IHRhYmxlIik/P251bGx9Z2V0IF9fZmxvYXRpbmdUYWJsZUVsKCl7cmV0dXJuIHRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLmZsb2F0aW5nSGVhZGVyID4gdGFibGUiKT8/bnVsbH1fX2NvbGxlY3RTY3JvbGxBbmNlc3RvcnMoKXtsZXQgRD1bXSxUPXRoaXMsRz1pKCRlPT4kZT09PSJhdXRvInx8JGU9PT0ic2Nyb2xsInx8JGU9PT0ib3ZlcmxheSIsInNjcm9sbGlzaCIpO2Zvcig7VDspe2lmKFQgaW5zdGFuY2VvZiBFbGVtZW50KXtsZXQgUGU9Z2V0Q29tcHV0ZWRTdHlsZShUKSxGZT1HKFBlLm92ZXJmbG93WSksVmU9RyhQZS5vdmVyZmxvd1gpOyhGZXx8VmUpJiZELnB1c2goe3RhcmdldDpULHNjcm9sbHNZOkZlLHNjcm9sbHNYOlZlfSl9bGV0ICRlPVQuYXNzaWduZWRTbG90P1QuYXNzaWduZWRTbG90OlQucGFyZW50Tm9kZTskZT9UPSRlOlQuaG9zdD9UPVQuaG9zdDpUPW51bGx9cmV0dXJuIEQucHVzaCh7dGFyZ2V0OndpbmRvdyxzY3JvbGxzWTohMCxzY3JvbGxzWDohMH0pLER9X19nZXRTdGlja0NvbnRleHQoKXtsZXQgRD0wLFQ9MCxHPXdpbmRvdy5pbm5lcldpZHRoO2ZvcihsZXQgJGUgb2YgdGhpcy5fX3Njcm9sbEFuY2VzdG9ycyl7aWYoJGUudGFyZ2V0PT09d2luZG93KWNvbnRpbnVlO2xldCBQZT0kZS50YXJnZXQsRmU9UGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksVmU9Z2V0Q29tcHV0ZWRTdHlsZShQZSk7aWYoJGUuc2Nyb2xsc1kpe2xldCBVZT1wYXJzZUZsb2F0KFZlLmJvcmRlclRvcFdpZHRoKXx8MDtEPU1hdGgubWF4KEQsRmUudG9wK1VlKX1pZigkZS5zY3JvbGxzWCl7bGV0IFVlPXBhcnNlRmxvYXQoVmUuYm9yZGVyTGVmdFdpZHRoKXx8MCxYZT1wYXJzZUZsb2F0KFZlLmJvcmRlclJpZ2h0V2lkdGgpfHwwO1Q9TWF0aC5tYXgoVCxGZS5sZWZ0K1VlKSxHPU1hdGgubWluKEcsRmUucmlnaHQtWGUpfX1yZXR1cm57dG9wOkQsbGVmdDpULHJpZ2h0Okd9fXNldHVwRmxvYXRpbmdIZWFkZXIoKXtpZih0aGlzLnRlYXJkb3duRmxvYXRpbmdIZWFkZXIoKSx0aGlzLmZpeGVkSGVpZ2h0JiYhdGhpcy52aXJ0dWFsaXplZClyZXR1cm47bGV0IEQ9dGhpcy5fX3JlYWxUYWJsZUVsO2lmKCFEKXJldHVybjt0aGlzLl9fc2Nyb2xsQW5jZXN0b3JzPXRoaXMuX19jb2xsZWN0U2Nyb2xsQW5jZXN0b3JzKCk7bGV0IFQ9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIudGFibGVTY3JvbGwiKTtUJiZ0aGlzLl9fc2Nyb2xsQW5jZXN0b3JzLnVuc2hpZnQoe3RhcmdldDpULHNjcm9sbHNZOnRoaXMuZml4ZWRIZWlnaHQsc2Nyb2xsc1g6ITB9KSx0aGlzLl9fZmxvYXRpbmdSZXNpemVPYnNlcnZlcj1uZXcgUmVzaXplT2JzZXJ2ZXIoKCk9Pnt0aGlzLmZpeGVkSGVpZ2h0fHx0aGlzLl9fc3luY0Zsb2F0aW5nSGVhZGVyKCksdGhpcy52aXJ0dWFsaXplZCYmdGhpcy5fX2NvbXB1dGVWaXJ0dWFsUmFuZ2UoKX0pLHRoaXMuX19mbG9hdGluZ1Jlc2l6ZU9ic2VydmVyLm9ic2VydmUoRCksdGhpcy5fX2Zsb2F0aW5nU2Nyb2xsSGFuZGxlcj0oKT0+e3RoaXMuZml4ZWRIZWlnaHR8fHRoaXMuX19zeW5jRmxvYXRpbmdIZWFkZXIoKSx0aGlzLnZpcnR1YWxpemVkJiZ0aGlzLl9fY29tcHV0ZVZpcnR1YWxSYW5nZSgpfTtmb3IobGV0IEcgb2YgdGhpcy5fX3Njcm9sbEFuY2VzdG9ycylHLnRhcmdldC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMuX19mbG9hdGluZ1Njcm9sbEhhbmRsZXIse3Bhc3NpdmU6ITB9KTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLl9fZmxvYXRpbmdTY3JvbGxIYW5kbGVyLHtwYXNzaXZlOiEwfSksdGhpcy5maXhlZEhlaWdodHx8dGhpcy5fX3N5bmNGbG9hdGluZ0hlYWRlcigpLHRoaXMudmlydHVhbGl6ZWQmJnRoaXMuX19jb21wdXRlVmlydHVhbFJhbmdlKCl9dGVhcmRvd25GbG9hdGluZ0hlYWRlcigpe2lmKHRoaXMuX19mbG9hdGluZ1Jlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCksdGhpcy5fX2Zsb2F0aW5nUmVzaXplT2JzZXJ2ZXI9dm9pZCAwLHRoaXMuX19mbG9hdGluZ1Njcm9sbEhhbmRsZXIpe2ZvcihsZXQgVCBvZiB0aGlzLl9fc2Nyb2xsQW5jZXN0b3JzKVQudGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5fX2Zsb2F0aW5nU2Nyb2xsSGFuZGxlcik7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5fX2Zsb2F0aW5nU2Nyb2xsSGFuZGxlciksdGhpcy5fX2Zsb2F0aW5nU2Nyb2xsSGFuZGxlcj12b2lkIDB9dGhpcy5fX3Njcm9sbEFuY2VzdG9ycz1bXSx0aGlzLl9fZmxvYXRpbmdBY3RpdmU9ITE7bGV0IEQ9dGhpcy5fX2Zsb2F0aW5nSGVhZGVyRWw7RCYmRC5jbGFzc0xpc3QucmVtb3ZlKCJhY3RpdmUiKX1fX3RyYW5zZmVyRm9jdXNUb1JlYWxIZWFkZXIoKXtsZXQgRD10aGlzLl9fZmxvYXRpbmdIZWFkZXJFbDtpZighRClyZXR1cm47bGV0IFQ9dGhpcy5zaGFkb3dSb290Py5hY3RpdmVFbGVtZW50O2lmKCFUfHwhRC5jb250YWlucyhUKSlyZXR1cm47bGV0IEc9VC5nZXRBdHRyaWJ1dGUoImRhdGEtY29sLWtleSIpO2lmKCFHKXJldHVybjtsZXQgJGU9VCxQZT10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoYC50YWJsZVNjcm9sbCA+IHRhYmxlID4gdGhlYWQgaW5wdXRbZGF0YS1jb2wta2V5PSIke0NTUy5lc2NhcGUoRyl9Il1gKTtpZighUGV8fFBlPT09JGUpcmV0dXJuO2xldCBGZT0kZS5zZWxlY3Rpb25TdGFydCxWZT0kZS5zZWxlY3Rpb25FbmQsVWU9JGUuc2VsZWN0aW9uRGlyZWN0aW9uO1BlLmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSk7dHJ5e0ZlIT1udWxsJiZWZSE9bnVsbCYmUGUuc2V0U2VsZWN0aW9uUmFuZ2UoRmUsVmUsVWV8fHZvaWQgMCl9Y2F0Y2h7fX1fX3RyYW5zZmVyRm9jdXNUb0Zsb2F0aW5nSGVhZGVyKCl7bGV0IEQ9dGhpcy5fX2Zsb2F0aW5nSGVhZGVyRWw7aWYoIUR8fCF0aGlzLl9fZmxvYXRpbmdBY3RpdmUpcmV0dXJuO2xldCBUPXRoaXMuc2hhZG93Um9vdD8uYWN0aXZlRWxlbWVudDtpZighVClyZXR1cm47bGV0IEc9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIudGFibGVTY3JvbGwgPiB0YWJsZSA+IHRoZWFkIik7aWYoIUd8fCFHLmNvbnRhaW5zKFQpKXJldHVybjtsZXQgJGU9VC5nZXRBdHRyaWJ1dGUoImRhdGEtY29sLWtleSIpO2lmKCEkZSlyZXR1cm47bGV0IFBlPVQsRmU9RC5xdWVyeVNlbGVjdG9yKGBpbnB1dFtkYXRhLWNvbC1rZXk9IiR7Q1NTLmVzY2FwZSgkZSl9Il1gKTtpZighRmV8fEZlPT09UGUpcmV0dXJuO2xldCBWZT1QZS5zZWxlY3Rpb25TdGFydCxVZT1QZS5zZWxlY3Rpb25FbmQsWGU9UGUuc2VsZWN0aW9uRGlyZWN0aW9uO0ZlLmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSk7dHJ5e1ZlIT1udWxsJiZVZSE9bnVsbCYmRmUuc2V0U2VsZWN0aW9uUmFuZ2UoVmUsVWUsWGV8fHZvaWQgMCl9Y2F0Y2h7fX1fX2NvbXB1dGVWaXJ0dWFsUmFuZ2UoKXtpZighdGhpcy52aXJ0dWFsaXplZClyZXR1cm47bGV0IFQ9KHRoaXMuX2xhc3RWaWV3RGF0YT8/W10pLmxlbmd0aDtpZihUPT09MCl7KHRoaXMuX192aXJ0dWFsUmFuZ2Uuc3RhcnQhPT0wfHx0aGlzLl9fdmlydHVhbFJhbmdlLmVuZCE9PTApJiYodGhpcy5fX3ZpcnR1YWxSYW5nZT17c3RhcnQ6MCxlbmQ6MH0pO3JldHVybn1sZXQgRz10aGlzLl9fcmVhbFRhYmxlRWw7aWYoIUcpcmV0dXJuO2xldCAkZT1HLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFBlPTAsRmU9d2luZG93LmlubmVySGVpZ2h0O2ZvcihsZXQgZnQgb2YgdGhpcy5fX3Njcm9sbEFuY2VzdG9ycyl7aWYoZnQudGFyZ2V0PT09d2luZG93fHwhZnQuc2Nyb2xsc1kpY29udGludWU7bGV0IGVyPWZ0LnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxrcz1nZXRDb21wdXRlZFN0eWxlKGZ0LnRhcmdldCksaHM9cGFyc2VGbG9hdChrcy5ib3JkZXJUb3BXaWR0aCl8fDAsX2k9cGFyc2VGbG9hdChrcy5ib3JkZXJCb3R0b21XaWR0aCl8fDA7UGU9TWF0aC5tYXgoUGUsZXIudG9wK2hzKSxGZT1NYXRoLm1pbihGZSxlci5ib3R0b20tX2kpfWxldCBWZT1NYXRoLm1heCgxLHRoaXMuX19yb3dIZWlnaHQpLFVlPUcudEhlYWQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodD8/MCxYZT0kZS50b3ArVWUsd3Q9TWF0aC5tYXgoMCxQZS1YZSksUWU9TWF0aC5tYXgoMCxGZS1NYXRoLm1heChQZSxYZSkpLHZhPU1hdGguZmxvb3Iod3QvVmUpLE5zPU1hdGguY2VpbChRZS9WZSkrMSx1YT1NYXRoLm1heCgwLHZhLXRoaXMudmlydHVhbE92ZXJzY2FuKSxHcz1NYXRoLm1pbihULHZhK05zK3RoaXMudmlydHVhbE92ZXJzY2FuKTsodWEhPT10aGlzLl9fdmlydHVhbFJhbmdlLnN0YXJ0fHxHcyE9PXRoaXMuX192aXJ0dWFsUmFuZ2UuZW5kKSYmKHRoaXMuX192aXJ0dWFsUmFuZ2U9e3N0YXJ0OnVhLGVuZDpHc30pfV9fbWVhc3VyZVJvd0hlaWdodCgpe2lmKCF0aGlzLnZpcnR1YWxpemVkfHx0aGlzLl9fcm93SGVpZ2h0TWVhc3VyZWQpcmV0dXJuO2xldCBEPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigidGJvZHkiKTtpZighRClyZXR1cm47bGV0IFQ9QXJyYXkuZnJvbShELnJvd3MpLmZpbmQoJGU9PiRlLmhhc0F0dHJpYnV0ZSgiZGF0YS1yb3ctaWR4IikpO2lmKCFUKXJldHVybjtsZXQgRz1ULmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtHPjAmJih0aGlzLl9fcm93SGVpZ2h0PUcsdGhpcy5fX3Jvd0hlaWdodE1lYXN1cmVkPSEwKX1fX3N5bmNGbG9hdGluZ0hlYWRlcigpe2xldCBEPXRoaXMuX19mbG9hdGluZ0hlYWRlckVsLFQ9dGhpcy5fX3JlYWxUYWJsZUVsO2lmKCFEfHwhVClyZXR1cm47bGV0IEc9VC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwkZT10aGlzLl9fZ2V0U3RpY2tDb250ZXh0KCksUGU9VC50SGVhZD8ucm93cyxGZT0wO2lmKFBlKWZvcihsZXQgZnQ9MDtmdDxQZS5sZW5ndGg7ZnQrKylGZSs9UGVbZnRdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtsZXQgVmU9Ry5ib3R0b20tJGUudG9wLFVlPUcudG9wPCRlLnRvcCYmVmU+MDtpZihVZSE9PXRoaXMuX19mbG9hdGluZ0FjdGl2ZSl7aWYoVWV8fHRoaXMuX190cmFuc2ZlckZvY3VzVG9SZWFsSGVhZGVyKCksdGhpcy5fX2Zsb2F0aW5nQWN0aXZlPVVlLEQuY2xhc3NMaXN0LnRvZ2dsZSgiYWN0aXZlIixVZSksIVVlKXtELnN0eWxlLmhlaWdodD0iIjtsZXQgZnQ9dGhpcy5fX2Zsb2F0aW5nVGFibGVFbDtmdCYmKGZ0LnN0eWxlLnRyYW5zZm9ybT0iIil9aWYoVWUpe3RoaXMudXBkYXRlQ29tcGxldGUudGhlbigoKT0+e3RoaXMuX19zeW5jRmxvYXRpbmdIZWFkZXIoKSx0aGlzLl9fdHJhbnNmZXJGb2N1c1RvRmxvYXRpbmdIZWFkZXIoKX0pO3JldHVybn19aWYoIVVlKXJldHVybjtsZXQgWGU9dGhpcy5fX2Zsb2F0aW5nVGFibGVFbDtpZighWGUpcmV0dXJuO1hlLnN0eWxlLnRhYmxlTGF5b3V0PVQuc3R5bGUudGFibGVMYXlvdXR8fCJhdXRvIjtsZXQgd3Q9WGUudEhlYWQ/LnJvd3M7aWYoUGUmJnd0KWZvcihsZXQgZnQ9MDtmdDxQZS5sZW5ndGgmJmZ0PHd0Lmxlbmd0aDtmdCsrKXtsZXQgZXI9UGVbZnRdLmNlbGxzLGtzPXd0W2Z0XS5jZWxscztmb3IobGV0IGhzPTA7aHM8ZXIubGVuZ3RoJiZoczxrcy5sZW5ndGg7aHMrKyl7bGV0IF9pPWVyW2hzXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtrc1toc10uc3R5bGUud2lkdGg9YCR7X2l9cHhgLGtzW2hzXS5zdHlsZS5taW5XaWR0aD1gJHtfaX1weGAsa3NbaHNdLnN0eWxlLm1heFdpZHRoPWAke19pfXB4YH19bGV0IFFlPU1hdGgubWF4KEcubGVmdCwkZS5sZWZ0KSx2YT1NYXRoLm1pbihHLnJpZ2h0LCRlLnJpZ2h0KSxOcz1NYXRoLm1heCgwLHZhLVFlKTtELnN0eWxlLnRvcD1gJHskZS50b3B9cHhgLEQuc3R5bGUubGVmdD1gJHtRZX1weGAsRC5zdHlsZS53aWR0aD1gJHtOc31weGA7bGV0IHVhPU1hdGgubWluKEZlLFZlKSxHcz1GZS11YTtELnN0eWxlLmhlaWdodD1gJHt1YX1weGAsWGUuc3R5bGUud2lkdGg9YCR7Ry53aWR0aH1weGAsWGUuc3R5bGUubWFyZ2luTGVmdD1gJHtHLmxlZnQtUWV9cHhgLFhlLnN0eWxlLnRyYW5zZm9ybT1Hcz4wP2B0cmFuc2xhdGVZKC0ke0dzfXB4KWA6IiJ9YXN5bmMgZGlzY29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMudGVhcmRvd25GbG9hdGluZ0hlYWRlcigpLHRoaXMuX19mbGFzaENsZWFyVGltZXImJihjbGVhclRpbWVvdXQodGhpcy5fX2ZsYXNoQ2xlYXJUaW1lciksdGhpcy5fX2ZsYXNoQ2xlYXJUaW1lcj12b2lkIDApfWFzeW5jIGZpcnN0VXBkYXRlZCgpe313aWxsVXBkYXRlKEQpe2lmKEQuaGFzKCJkYXRhIikmJnRoaXMuc2VsZWN0ZWREYXRhUm93JiZ0aGlzLnJvd0tleSl7bGV0IHd0PXRoaXMuZ2V0Um93SWQodGhpcy5zZWxlY3RlZERhdGFSb3cpLFFlO2ZvcihsZXQgdmEgb2YgdGhpcy5kYXRhKWlmKHRoaXMuZ2V0Um93SWQodmEpPT09d3Qpe1FlPXZhO2JyZWFrfVFlP1FlIT09dGhpcy5zZWxlY3RlZERhdGFSb3cmJih0aGlzLnNlbGVjdGVkRGF0YVJvdz1RZSk6dGhpcy5zZWxlY3RlZERhdGFSb3c9dm9pZCAwfWlmKHRoaXMuaGlnaGxpZ2h0VXBkYXRlcyE9PSJmbGFzaCIpeyh0aGlzLl9fcHJldlNuYXBzaG90fHx0aGlzLl9fZmxhc2hpbmdDZWxscy5zaXplPjApJiYodGhpcy5fX3ByZXZTbmFwc2hvdD12b2lkIDAsdGhpcy5fX2ZsYXNoaW5nQ2VsbHMuc2l6ZT4wJiYodGhpcy5fX2ZsYXNoaW5nQ2VsbHM9bmV3IE1hcCksdGhpcy5fX2ZsYXNoQ2xlYXJUaW1lciYmKGNsZWFyVGltZW91dCh0aGlzLl9fZmxhc2hDbGVhclRpbWVyKSx0aGlzLl9fZmxhc2hDbGVhclRpbWVyPXZvaWQgMCkpO3JldHVybn1pZighdGhpcy5yb3dLZXkpe3RoaXMuX19mbGFzaFdhcm5lZE5vUm93S2V5fHwodGhpcy5fX2ZsYXNoV2FybmVkTm9Sb3dLZXk9ITAsY29uc29sZS53YXJuKCdbZGVlcy10YWJsZV0gaGlnaGxpZ2h0VXBkYXRlcz0iZmxhc2giIHJlcXVpcmVzIGByb3dLZXlgIHRvIGJlIHNldC4gRmxhc2ggaXMgZGlzYWJsZWQuIFNldCB0aGUgcm93S2V5IHByb3BlcnR5L2F0dHJpYnV0ZSB0byBhIHN0YWJsZSBpZGVudGlmaWVyIG9uIHlvdXIgcm93IGRhdGEgKGUuZy4gYHJvd0tleT0iaWQiYCkuJykpO3JldHVybn1pZighRC5oYXMoImRhdGEiKSlyZXR1cm47bGV0IEc9dGhpcy5fX2dldEVmZmVjdGl2ZUNvbHVtbnMoKS5maWx0ZXIod3Q9PiF3dC5oaWRkZW4pLCRlPW5ldyBNYXAoRy5tYXAod3Q9PltTdHJpbmcod3Qua2V5KSx3dF0pKSxQZT1uZXcgTWFwLEZlPW5ldyBNYXA7Zm9yKGxldCB3dCBvZiB0aGlzLmRhdGEpe2xldCBRZT10aGlzLmdldFJvd0lkKHd0KSx2YT1uZXcgTWFwO2ZvcihsZXQgdWEgb2YgRyl2YS5zZXQoU3RyaW5nKHVhLmtleSksZDQod3QsdWEsdGhpcy5kaXNwbGF5RnVuY3Rpb24pKTtQZS5zZXQoUWUsdmEpO2xldCBOcz10aGlzLl9fcHJldlNuYXBzaG90Py5nZXQoUWUpO2lmKE5zKWZvcihsZXRbdWEsR3Ndb2YgdmEpe2xldCBmdD1Ocy5nZXQodWEpLGVyPSRlLmdldCh1YSksa3M7aWYoZXI/LmZsYXNoQ29tcGFyZT9rcz1lci5mbGFzaENvbXBhcmUoZnQsR3MpOkdzIT1udWxsJiZ0eXBlb2YgR3M9PSJvYmplY3QiP2tzPSExOmtzPWZ0IT09R3Msa3Mpe2lmKHRoaXMuX19lZGl0aW5nQ2VsbCYmdGhpcy5fX2VkaXRpbmdDZWxsLnJvd0lkPT09UWUmJnRoaXMuX19lZGl0aW5nQ2VsbC5jb2xLZXk9PT11YSljb250aW51ZTtsZXQgaHM9RmUuZ2V0KFFlKTtoc3x8KGhzPW5ldyBTZXQsRmUuc2V0KFFlLGhzKSksaHMuYWRkKHVhKX19fWxldCBWZT0hIXRoaXMuX19wcmV2U25hcHNob3Q7aWYodGhpcy5fX3ByZXZTbmFwc2hvdD1QZSwhVmV8fEZlLnNpemU9PT0wKXJldHVybjtsZXQgVWU9Kyt0aGlzLl9fZmxhc2hUaWNrLFhlPW5ldyBNYXAodGhpcy5fX2ZsYXNoaW5nQ2VsbHMpO2ZvcihsZXRbd3QsUWVdb2YgRmUpe2xldCB2YT1uZXcgTWFwKFhlLmdldCh3dCk/P1tdKTtmb3IobGV0IE5zIG9mIFFlKXZhLnNldChOcyxVZSk7WGUuc2V0KHd0LHZhKX10aGlzLl9fZmxhc2hpbmdDZWxscz1YZSx0aGlzLl9fZmxhc2hDbGVhclRpbWVyJiZjbGVhclRpbWVvdXQodGhpcy5fX2ZsYXNoQ2xlYXJUaW1lciksdGhpcy5fX2ZsYXNoQ2xlYXJUaW1lcj1zZXRUaW1lb3V0KCgpPT57dGhpcy5fX2ZsYXNoaW5nQ2VsbHM9bmV3IE1hcCx0aGlzLl9fZmxhc2hDbGVhclRpbWVyPXZvaWQgMH0sTWF0aC5tYXgoMCx0aGlzLmhpZ2hsaWdodER1cmF0aW9uKSl9YXN5bmMgdXBkYXRlZChEKXtzdXBlci51cGRhdGVkKEQpO2xldCBUPXRoaXMuX19nZXRFZmZlY3RpdmVDb2x1bW5zKCksRz10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoInRhYmxlIik/P251bGwsJGU9dGhpcy5nZXRBY3Rpb25zRm9yVHlwZSgiaW5Sb3ciKS5sZW5ndGg7RC5oYXMoImhpZ2hsaWdodER1cmF0aW9uIikmJnRoaXMuc3R5bGUuc2V0UHJvcGVydHkoIi0tZGVlcy10YWJsZS1mbGFzaC1kdXJhdGlvbiIsYCR7dGhpcy5oaWdobGlnaHREdXJhdGlvbn1tc2ApO2xldCBQZT0hIUcmJighdGhpcy5fX2NvbHVtbnNTaXplZEZvcnx8dGhpcy5fX2NvbHVtbnNTaXplZEZvci5lZmZlY3RpdmVDb2x1bW5zIT09VHx8dGhpcy5fX2NvbHVtbnNTaXplZEZvci5zaG93U2VsZWN0aW9uQ2hlY2tib3ghPT10aGlzLnNob3dTZWxlY3Rpb25DaGVja2JveHx8dGhpcy5fX2NvbHVtbnNTaXplZEZvci5pblJvd0FjdGlvbkNvdW50IT09JGV8fHRoaXMuX19jb2x1bW5zU2l6ZWRGb3IudGFibGUhPT1HKTtHJiZQZSYmKHRoaXMuX19jb2x1bW5zU2l6ZWRGb3I9e2VmZmVjdGl2ZUNvbHVtbnM6VCxzaG93U2VsZWN0aW9uQ2hlY2tib3g6dGhpcy5zaG93U2VsZWN0aW9uQ2hlY2tib3gsaW5Sb3dBY3Rpb25Db3VudDokZSx0YWJsZTpHfSx0aGlzLmRldGVybWluZUNvbHVtbldpZHRocygpLHRoaXMuX19yb3dIZWlnaHRNZWFzdXJlZD0hMSksdGhpcy52aXJ0dWFsaXplZCYmKHRoaXMuX19tZWFzdXJlUm93SGVpZ2h0KCksdGhpcy5fX2NvbXB1dGVWaXJ0dWFsUmFuZ2UoKSksKEQuaGFzKCJmaXhlZEhlaWdodCIpfHxELmhhcygidmlydHVhbGl6ZWQiKXx8RC5oYXMoImRhdGEiKXx8RC5oYXMoImNvbHVtbnMiKXx8IXRoaXMuX19mbG9hdGluZ1Njcm9sbEhhbmRsZXIpJiYoKCF0aGlzLmZpeGVkSGVpZ2h0fHx0aGlzLnZpcnR1YWxpemVkKSYmdGhpcy5kYXRhLmxlbmd0aD4wP3RoaXMuc2V0dXBGbG9hdGluZ0hlYWRlcigpOnRoaXMudGVhcmRvd25GbG9hdGluZ0hlYWRlcigpKSwhdGhpcy5maXhlZEhlaWdodCYmdGhpcy5kYXRhLmxlbmd0aD4wJiYodGhpcy5fX2Zsb2F0aW5nQWN0aXZlfHxQZSkmJnRoaXMuX19zeW5jRmxvYXRpbmdIZWFkZXIoKSx0aGlzLnNlYXJjaGFibGUmJih0aGlzLmRhdGFBY3Rpb25zLmZpbmQoVmU9PlZlLnR5cGU/LmluY2x1ZGVzKCJoZWFkZXIiKSYmVmUubmFtZT09PSJTZWFyY2giKXx8KHRoaXMuZGF0YUFjdGlvbnMudW5zaGlmdCh7bmFtZToiU2VhcmNoIixpY29uTmFtZToibHVjaWRlOlNlYXJjaCIsdHlwZTpbImhlYWRlciJdLGFjdGlvbkZ1bmM6aShhc3luYygpPT57Y29uc29sZS5sb2coIm9wZW4gc2VhcmNoIiksdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5zZWFyY2hHcmlkIikuY2xhc3NMaXN0LnRvZ2dsZSgiaGlkZGVuIil9LCJhY3Rpb25GdW5jIil9KSxjb25zb2xlLmxvZyh0aGlzLmRhdGFBY3Rpb25zKSx0aGlzLnJlcXVlc3RVcGRhdGUoKSksdGhpcy53aXJlU2VhcmNoSW5wdXRzKCkpfV9fZGVib3VuY2VUaW1lcjtkZWJvdW5jZVJ1bihELFQ9MjAwKXt0aGlzLl9fZGVib3VuY2VUaW1lciYmY2xlYXJUaW1lb3V0KHRoaXMuX19kZWJvdW5jZVRpbWVyKSx0aGlzLl9fZGVib3VuY2VUaW1lcj1zZXRUaW1lb3V0KEQsVCl9d2lyZVNlYXJjaElucHV0cygpe2xldCBEPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLnNlYXJjaEdyaWQgZGVlcy1pbnB1dC10ZXh0IiksVD10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5zZWFyY2hHcmlkIGRlZXMtaW5wdXQtbXVsdGl0b2dnbGUiKTtEJiYhdGhpcy5fX3NlYXJjaFRleHRTdWImJih0aGlzLl9fc2VhcmNoVGV4dFN1Yj1ELmNoYW5nZVN1YmplY3Quc3Vic2NyaWJlKEc9PntsZXQgJGU9Rz8udmFsdWU/PyIiO3RoaXMuZGVib3VuY2VSdW4oKCk9Pnt0aGlzLnNlYXJjaE1vZGU9PT0ic2VydmVyIj90aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJzZWFyY2hSZXF1ZXN0Iix7ZGV0YWlsOntxdWVyeTokZSxtb2RlOiJzZXJ2ZXIifSxidWJibGVzOiEwfSkpOnRoaXMuc2V0RmlsdGVyVGV4dCgkZSl9KX0pKSxUJiYhdGhpcy5fX3NlYXJjaE1vZGVTdWImJih0aGlzLl9fc2VhcmNoTW9kZVN1Yj1ULmNoYW5nZVN1YmplY3Quc3Vic2NyaWJlKEc9PntsZXQgJGU9Rz8uc2VsZWN0ZWRPcHRpb258fEc/LnZhbHVlfHwidGFibGUiO2lmKCRlPT09InRhYmxlInx8JGU9PT0iZGF0YSJ8fCRlPT09InNlcnZlciIpe3RoaXMuc2VhcmNoTW9kZT0kZTtsZXQgUGU9RD8udmFsdWU/PyIiO3RoaXMuZGVib3VuY2VSdW4oKCk9Pnt0aGlzLnNlYXJjaE1vZGU9PT0ic2VydmVyIj90aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJzZWFyY2hSZXF1ZXN0Iix7ZGV0YWlsOntxdWVyeTpQZSxtb2RlOiJzZXJ2ZXIifSxidWJibGVzOiEwfSkpOnRoaXMuc2V0RmlsdGVyVGV4dChQZSl9KX19KSl9YXN5bmMgZGV0ZXJtaW5lQ29sdW1uV2lkdGhzKCl7YXdhaXQoYXdhaXQgdGhpcy5kb210b29sc1Byb21pc2UpLmNvbnZlbmllbmNlLnNtYXJ0ZGVsYXkuZGVsYXlGb3IoMCk7bGV0IFQ9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoInRhYmxlIik7aWYoIVQpcmV0dXJuO2xldCBHPVQucm93c1swXS5jZWxscywkZT1pKGFzeW5jKFBlLEZlPSExKT0+e2xldCBWZT1tdC5kZWZlcigpLFVlPUdbUGVdLFhlPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKFVlKS53aWR0aDtpZihVZS50ZXh0Q29udGVudC5pbmNsdWRlcygiQWN0aW9ucyIpKXtsZXQgd3Q9dGhpcy5kYXRhQWN0aW9ucy5maWx0ZXIoUWU9PlFlLnR5cGU/LmluY2x1ZGVzKCJpblJvdyIpKS5sZW5ndGgqMzY7VWUuc3R5bGUud2lkdGg9YCR7TWF0aC5tYXgod3QsNjgpfXB4YH1lbHNlIFVlLnN0eWxlLndpZHRoPVhlO0ZlJiYocmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57VmUucmVzb2x2ZSgpfSksYXdhaXQgVmUucHJvbWlzZSl9LCJoYW5kbGVDb2x1bW5CeUluZGV4Iik7R1tHLmxlbmd0aC0xXS50ZXh0Q29udGVudC5pbmNsdWRlcygiQWN0aW9ucyIpJiZhd2FpdCAkZShHLmxlbmd0aC0xLCEwKTtmb3IobGV0IFBlPTA7UGU8Ry5sZW5ndGg7UGUrKylHW1BlXS50ZXh0Q29udGVudC5pbmNsdWRlcygiQWN0aW9ucyIpfHxhd2FpdCAkZShQZSk7VC5zdHlsZS50YWJsZUxheW91dD0iZml4ZWQifWdldFNvcnREZXNjcmlwdG9yKEQpe3JldHVybiB0aGlzLnNvcnRCeS5maW5kKFQ9PlQua2V5PT09RCl9Z2V0U29ydFByaW9yaXR5KEQpe3JldHVybiB0aGlzLnNvcnRCeS5maW5kSW5kZXgoVD0+VC5rZXk9PT1EKX1zZXRTb3J0KEQsVCl7dGhpcy5zb3J0Qnk9W3trZXk6RCxkaXI6VH1dLHRoaXMuZW1pdFNvcnRDaGFuZ2UoKSx0aGlzLnJlcXVlc3RVcGRhdGUoKX1hZGRTb3J0QXQoRCxULEcpe2xldCAkZT10aGlzLnNvcnRCeS5maWx0ZXIoRmU9PkZlLmtleSE9PUQpLFBlPU1hdGgubWF4KDAsTWF0aC5taW4oVCwkZS5sZW5ndGgpKTskZS5zcGxpY2UoUGUsMCx7a2V5OkQsZGlyOkd9KSx0aGlzLnNvcnRCeT0kZSx0aGlzLmVtaXRTb3J0Q2hhbmdlKCksdGhpcy5yZXF1ZXN0VXBkYXRlKCl9YXBwZW5kU29ydChELFQpe2xldCBHPXRoaXMuc29ydEJ5LmZpbHRlcigkZT0+JGUua2V5IT09RCk7Ry5wdXNoKHtrZXk6RCxkaXI6VH0pLHRoaXMuc29ydEJ5PUcsdGhpcy5lbWl0U29ydENoYW5nZSgpLHRoaXMucmVxdWVzdFVwZGF0ZSgpfXJlbW92ZVNvcnQoRCl7dGhpcy5zb3J0Qnkuc29tZShUPT5ULmtleT09PUQpJiYodGhpcy5zb3J0Qnk9dGhpcy5zb3J0QnkuZmlsdGVyKFQ9PlQua2V5IT09RCksdGhpcy5lbWl0U29ydENoYW5nZSgpLHRoaXMucmVxdWVzdFVwZGF0ZSgpKX1jbGVhclNvcnRzKCl7dGhpcy5zb3J0QnkubGVuZ3RoIT09MCYmKHRoaXMuc29ydEJ5PVtdLHRoaXMuZW1pdFNvcnRDaGFuZ2UoKSx0aGlzLnJlcXVlc3RVcGRhdGUoKSl9ZW1pdFNvcnRDaGFuZ2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJzb3J0Q2hhbmdlIix7ZGV0YWlsOntzb3J0Qnk6dGhpcy5zb3J0QnkubWFwKEQ9Pih7Li4uRH0pKX0sYnViYmxlczohMH0pKX1hc3luYyBoYW5kbGVIZWFkZXJDbGljayhELFQsRyl7aWYoRC5zaGlmdEtleSl7dGhpcy5oYW5kbGVIZWFkZXJTaGlmdENsaWNrKFQpO3JldHVybn1hd2FpdCB0aGlzLmNvbmZpcm1SZXBsYWNlQ2FzY2FkZShUKSYmdGhpcy5jeWNsZVNpbmdsZVNvcnQoVCl9Y3ljbGVTaW5nbGVTb3J0KEQpe2xldCBUPVN0cmluZyhELmtleSksRz10aGlzLnNvcnRCeS5sZW5ndGg9PT0xJiZ0aGlzLnNvcnRCeVswXS5rZXk9PT1UP3RoaXMuc29ydEJ5WzBdLmRpcjpudWxsO0c9PT0iYXNjIj90aGlzLnNldFNvcnQoVCwiZGVzYyIpOkc9PT0iZGVzYyI/dGhpcy5jbGVhclNvcnRzKCk6dGhpcy5zZXRTb3J0KFQsImFzYyIpfWhhbmRsZUhlYWRlclNoaWZ0Q2xpY2soRCl7bGV0IFQ9U3RyaW5nKEQua2V5KSxHPXRoaXMuZ2V0U29ydERlc2NyaXB0b3IoVCk7Rz9HLmRpcj09PSJhc2MiPyh0aGlzLnNvcnRCeT10aGlzLnNvcnRCeS5tYXAoJGU9PiRlLmtleT09PVQ/e2tleTpULGRpcjoiZGVzYyJ9OiRlKSx0aGlzLmVtaXRTb3J0Q2hhbmdlKCksdGhpcy5yZXF1ZXN0VXBkYXRlKCkpOnRoaXMucmVtb3ZlU29ydChUKTp0aGlzLmFwcGVuZFNvcnQoVCwiYXNjIil9Y29uZmlybVJlcGxhY2VDYXNjYWRlKEQpe3JldHVybiB0aGlzLnNvcnRCeS5sZW5ndGg8PTE/UHJvbWlzZS5yZXNvbHZlKCEwKTpuZXcgUHJvbWlzZShUPT57bGV0IEc9ITEsJGU9aShGZT0+e0d8fChHPSEwLFQoRmUpKX0sInNldHRsZSIpLFBlPXRoaXMuc29ydEJ5Lm1hcCgoRmUsVmUpPT57bGV0IFhlPXRoaXMuX2xvb2t1cENvbHVtbkJ5S2V5Py4oRmUua2V5KT8uaGVhZGVyPz9GZS5rZXk7cmV0dXJuIHdgPGxpPiR7VmUrMX0uICR7WGV9ICR7RmUuZGlyPT09ImFzYyI/Ilx1MjVCMiI6Ilx1MjVCQyJ9PC9saT5gfSk7aXMuY3JlYXRlQW5kU2hvdyh7aGVhZGluZzoiUmVwbGFjZSBtdWx0aS1jb2x1bW4gc29ydD8iLHdpZHRoOiJzbWFsbCIsc2hvd0Nsb3NlQnV0dG9uOiEwLGNvbnRlbnQ6d2AKICAgICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxM3B4OyBsaW5lLWhlaWdodDoxLjU1OyI+CiAgICAgICAgICAgIDxwIHN0eWxlPSJtYXJnaW46MCAwIDhweDsiPgogICAgICAgICAgICAgIFlvdSBjdXJyZW50bHkgaGF2ZSBhICR7dGhpcy5zb3J0QnkubGVuZ3RofS1jb2x1bW4gc29ydCBhY3RpdmU6CiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW46MCAwIDEycHg7IHBhZGRpbmctbGVmdDoxOHB4OyI+JHtQZX08L3VsPgogICAgICAgICAgICA8cCBzdHlsZT0ibWFyZ2luOjA7Ij4KICAgICAgICAgICAgICBDb250aW51aW5nIHdpbGwgZGlzY2FyZCB0aGUgY2FzY2FkZSBhbmQgcmVwbGFjZSBpdCB3aXRoIGEgc2luZ2xlIHNvcnQgb24KICAgICAgICAgICAgICA8c3Ryb25nPiR7RC5oZWFkZXI/P1N0cmluZyhELmtleSl9PC9zdHJvbmc+LgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgLG1lbnVPcHRpb25zOlt7bmFtZToiQ2FuY2VsIixpY29uTmFtZToibHVjaWRlOngiLGFjdGlvbjppKGFzeW5jIEZlPT4oJGUoITEpLGF3YWl0IEZlLmRlc3Ryb3koKSxudWxsKSwiYWN0aW9uIil9LHtuYW1lOiJSZXBsYWNlIixpY29uTmFtZToibHVjaWRlOmNoZWNrIixhY3Rpb246aShhc3luYyBGZT0+KCRlKCEwKSxhd2FpdCBGZS5kZXN0cm95KCksbnVsbCksImFjdGlvbiIpfV19KX0pfV9sb29rdXBDb2x1bW5CeUtleShEKXtyZXR1cm4gdGhpcy5fX2dldEVmZmVjdGl2ZUNvbHVtbnMoKS5maW5kKEc9PlN0cmluZyhHLmtleSk9PT1EKX1vcGVuSGVhZGVyQ29udGV4dE1lbnUoRCxULEcpe2xldCAkZT10aGlzLmJ1aWxkSGVhZGVyTWVudUl0ZW1zKFQsRyk7JGEub3BlbkNvbnRleHRNZW51V2l0aE9wdGlvbnMoRCwkZSl9YnVpbGRIZWFkZXJNZW51SXRlbXMoRCxUKXtsZXQgRz1TdHJpbmcoRC5rZXkpLCRlPXRoaXMuZ2V0U29ydERlc2NyaXB0b3IoRyksUGU9dGhpcy5zb3J0QnkubGVuZ3RoLEZlPVQuZmlsdGVyKFhlPT5YZS5zb3J0YWJsZSE9PSExKS5sZW5ndGgsVmU9TWF0aC5taW4oTWF0aC5tYXgoUGUrKCRlPzA6MSksMSksTWF0aC5tYXgoRmUsMSkpLFVlPVtdO1VlLnB1c2goe25hbWU6IlNvcnQgQXNjZW5kaW5nIixpY29uTmFtZTpQZT09PTEmJiRlPy5kaXI9PT0iYXNjIj8ibHVjaWRlOmNoZWNrIjoibHVjaWRlOmFycm93VXAiLGFjdGlvbjppKGFzeW5jKCk9Pihhd2FpdCB0aGlzLmNvbmZpcm1SZXBsYWNlQ2FzY2FkZShEKSYmdGhpcy5zZXRTb3J0KEcsImFzYyIpLG51bGwpLCJhY3Rpb24iKX0pLFVlLnB1c2goe25hbWU6IlNvcnQgRGVzY2VuZGluZyIsaWNvbk5hbWU6UGU9PT0xJiYkZT8uZGlyPT09ImRlc2MiPyJsdWNpZGU6Y2hlY2siOiJsdWNpZGU6YXJyb3dEb3duIixhY3Rpb246aShhc3luYygpPT4oYXdhaXQgdGhpcy5jb25maXJtUmVwbGFjZUNhc2NhZGUoRCkmJnRoaXMuc2V0U29ydChHLCJkZXNjIiksbnVsbCksImFjdGlvbiIpfSksVWUucHVzaCh7ZGl2aWRlcjohMH0pO2ZvcihsZXQgWGU9MTtYZTw9VmU7WGUrKyl7bGV0IHd0PWllcyhYZSksUWU9JGUmJnRoaXMuZ2V0U29ydFByaW9yaXR5KEcpPT09WGUtMTtVZS5wdXNoKHtuYW1lOmBTZXQgYXMgJHt3dH0gc29ydGAsaWNvbk5hbWU6UWU/Imx1Y2lkZTpjaGVjayI6Imx1Y2lkZTpsaXN0T3JkZXJlZCIsc3VibWVudTpbe25hbWU6IkFzY2VuZGluZyIsaWNvbk5hbWU6Imx1Y2lkZTphcnJvd1VwIixhY3Rpb246aShhc3luYygpPT4odGhpcy5hZGRTb3J0QXQoRyxYZS0xLCJhc2MiKSxudWxsKSwiYWN0aW9uIil9LHtuYW1lOiJEZXNjZW5kaW5nIixpY29uTmFtZToibHVjaWRlOmFycm93RG93biIsYWN0aW9uOmkoYXN5bmMoKT0+KHRoaXMuYWRkU29ydEF0KEcsWGUtMSwiZGVzYyIpLG51bGwpLCJhY3Rpb24iKX1dfSl9cmV0dXJuIFVlLnB1c2goe2RpdmlkZXI6ITB9KSxVZS5wdXNoKHtuYW1lOiJBcHBlbmQgdG8gc29ydCIsaWNvbk5hbWU6Imx1Y2lkZTpwbHVzIixzdWJtZW51Olt7bmFtZToiQXNjZW5kaW5nIixpY29uTmFtZToibHVjaWRlOmFycm93VXAiLGFjdGlvbjppKGFzeW5jKCk9Pih0aGlzLmFwcGVuZFNvcnQoRywiYXNjIiksbnVsbCksImFjdGlvbiIpfSx7bmFtZToiRGVzY2VuZGluZyIsaWNvbk5hbWU6Imx1Y2lkZTphcnJvd0Rvd24iLGFjdGlvbjppKGFzeW5jKCk9Pih0aGlzLmFwcGVuZFNvcnQoRywiZGVzYyIpLG51bGwpLCJhY3Rpb24iKX1dfSksJGUmJihVZS5wdXNoKHtkaXZpZGVyOiEwfSksVWUucHVzaCh7bmFtZToiUmVtb3ZlIGZyb20gc29ydCIsaWNvbk5hbWU6Imx1Y2lkZTptaW51cyIsYWN0aW9uOmkoYXN5bmMoKT0+KHRoaXMucmVtb3ZlU29ydChHKSxudWxsKSwiYWN0aW9uIil9KSksUGU+MCYmKCRlfHxVZS5wdXNoKHtkaXZpZGVyOiEwfSksVWUucHVzaCh7bmFtZToiQ2xlYXIgYWxsIHNvcnRzIixpY29uTmFtZToibHVjaWRlOnRyYXNoIixhY3Rpb246aShhc3luYygpPT4odGhpcy5jbGVhclNvcnRzKCksbnVsbCksImFjdGlvbiIpfSkpLFVlLnB1c2goe2RpdmlkZXI6ITB9KSxVZS5wdXNoKHtuYW1lOnRoaXMuc2hvd0NvbHVtbkZpbHRlcnM/IkhpZGUgY29sdW1uIGZpbHRlcnMiOiJTaG93IGNvbHVtbiBmaWx0ZXJzIixpY29uTmFtZTp0aGlzLnNob3dDb2x1bW5GaWx0ZXJzPyJsdWNpZGU6ZmlsdGVyWCI6Imx1Y2lkZTpmaWx0ZXIiLGFjdGlvbjppKGFzeW5jKCk9Pih0aGlzLnNob3dDb2x1bW5GaWx0ZXJzPSF0aGlzLnNob3dDb2x1bW5GaWx0ZXJzLHRoaXMucmVxdWVzdFVwZGF0ZSgpLG51bGwpLCJhY3Rpb24iKX0pLFVlfWdldEFyaWFTb3J0KEQpe2xldCBUPXRoaXMuc29ydEJ5WzBdO3JldHVybiFUfHxULmtleSE9PVN0cmluZyhELmtleSk/Im5vbmUiOlQuZGlyPT09ImFzYyI/ImFzY2VuZGluZyI6ImRlc2NlbmRpbmcifXJlbmRlclNvcnRJbmRpY2F0b3IoRCl7bGV0IFQ9dGhpcy5nZXRTb3J0UHJpb3JpdHkoU3RyaW5nKEQua2V5KSk7aWYoVDwwKXJldHVybiB3YGA7bGV0ICRlPXRoaXMuc29ydEJ5W1RdLmRpcj09PSJhc2MiPyJcdTI1QjIiOiJcdTI1QkMiO3JldHVybiB0aGlzLnNvcnRCeS5sZW5ndGg9PT0xP3dgPHNwYW4gY2xhc3M9InNvcnRBcnJvdyI+JHskZX08L3NwYW4+YDp3YDxzcGFuIGNsYXNzPSJzb3J0QXJyb3ciPiR7JGV9PC9zcGFuPjxzcGFuIGNsYXNzPSJzb3J0QmFkZ2UiPiR7VCsxfTwvc3Bhbj5gfXNldEZpbHRlclRleHQoRCl7bGV0IFQ9dGhpcy5maWx0ZXJUZXh0O3RoaXMuZmlsdGVyVGV4dD1EPz8iIixUIT09dGhpcy5maWx0ZXJUZXh0JiYodGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiZmlsdGVyQ2hhbmdlIix7ZGV0YWlsOnt0ZXh0OnRoaXMuZmlsdGVyVGV4dCxjb2x1bW5zOnsuLi50aGlzLmNvbHVtbkZpbHRlcnN9fSxidWJibGVzOiEwfSkpLHRoaXMucmVxdWVzdFVwZGF0ZSgpKX1zZXRDb2x1bW5GaWx0ZXIoRCxUKXt0aGlzLmNvbHVtbkZpbHRlcnM9ey4uLnRoaXMuY29sdW1uRmlsdGVycyxbRF06VH0sdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiZmlsdGVyQ2hhbmdlIix7ZGV0YWlsOnt0ZXh0OnRoaXMuZmlsdGVyVGV4dCxjb2x1bW5zOnsuLi50aGlzLmNvbHVtbkZpbHRlcnN9fSxidWJibGVzOiEwfSkpLHRoaXMucmVxdWVzdFVwZGF0ZSgpfWdldFJvd0lkKEQpe2lmKHRoaXMucm93S2V5KXJldHVybiB0eXBlb2YgdGhpcy5yb3dLZXk9PSJmdW5jdGlvbiI/dGhpcy5yb3dLZXkoRCk6U3RyaW5nKERbdGhpcy5yb3dLZXldKTtsZXQgVD1EO3JldHVybiB0aGlzLl9yb3dJZE1hcC5oYXMoVCl8fHRoaXMuX3Jvd0lkTWFwLnNldChULFN0cmluZygrK3RoaXMuX3Jvd0lkQ291bnRlcikpLHRoaXMuX3Jvd0lkTWFwLmdldChUKX1pc1Jvd1NlbGVjdGVkKEQpe3JldHVybiB0aGlzLnNlbGVjdGVkSWRzLmhhcyh0aGlzLmdldFJvd0lkKEQpKX10b2dnbGVSb3dTZWxlY3RlZChEKXtsZXQgVD10aGlzLmdldFJvd0lkKEQpO3RoaXMuc2VsZWN0aW9uTW9kZT09PSJzaW5nbGUiPyh0aGlzLnNlbGVjdGVkSWRzLmNsZWFyKCksdGhpcy5zZWxlY3RlZElkcy5hZGQoVCkpOnRoaXMuc2VsZWN0aW9uTW9kZT09PSJtdWx0aSImJih0aGlzLnNlbGVjdGVkSWRzLmhhcyhUKT90aGlzLnNlbGVjdGVkSWRzLmRlbGV0ZShUKTp0aGlzLnNlbGVjdGVkSWRzLmFkZChUKSksdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlKCksdGhpcy5yZXF1ZXN0VXBkYXRlKCl9X19yZXNvbHZlUm93KEQpe2xldCBUPUQuY29tcG9zZWRQYXRoPy4oKXx8W10sRz1udWxsO2ZvcihsZXQgVmUgb2YgVCl7bGV0IFVlPVZlO2lmKFVlPy50YWdOYW1lPT09IlRSIiYmVWUuaGFzQXR0cmlidXRlKCJkYXRhLXJvdy1pZHgiKSl7Rz1VZTticmVha319aWYoIUcpcmV0dXJuIG51bGw7bGV0ICRlPU51bWJlcihHLmdldEF0dHJpYnV0ZSgiZGF0YS1yb3ctaWR4IikpLEZlPSh0aGlzLl9sYXN0Vmlld0RhdGE/P1tdKVskZV07cmV0dXJuIEZlP3tpdGVtOkZlLHJvd0lkeDokZX06bnVsbH1fX3Jlc29sdmVDZWxsKEQpe2xldCBUPXRoaXMuX19yZXNvbHZlUm93KEQpO2lmKCFUKXJldHVybiBudWxsO2xldCBHPUQuY29tcG9zZWRQYXRoPy4oKXx8W10sJGU9bnVsbDtmb3IobGV0IFVlIG9mIEcpe2xldCBYZT1VZTtpZihYZT8udGFnTmFtZT09PSJURCImJlhlLmhhc0F0dHJpYnV0ZSgiZGF0YS1jb2wta2V5IikpeyRlPVhlO2JyZWFrfX1pZighJGUpcmV0dXJuIG51bGw7bGV0IFBlPSRlLmdldEF0dHJpYnV0ZSgiZGF0YS1jb2wta2V5IiksVmU9dGhpcy5fX2dldEVmZmVjdGl2ZUNvbHVtbnMoKS5maW5kKFVlPT5TdHJpbmcoVWUua2V5KT09PVBlKTtyZXR1cm4gVmU/e2l0ZW06VC5pdGVtLHJvd0lkeDpULnJvd0lkeCxjb2w6VmV9Om51bGx9X19pc0luQWN0aW9uc0NvbChEKXtsZXQgVD1ELmNvbXBvc2VkUGF0aD8uKCl8fFtdO2ZvcihsZXQgRyBvZiBUKWlmKEc/LmNsYXNzTGlzdD8uY29udGFpbnMoImFjdGlvbnNDb2wiKSlyZXR1cm4hMDtyZXR1cm4hMX1fX2lzSW5FZGl0b3IoRCl7bGV0IFQ9RC5jb21wb3NlZFBhdGg/LigpfHxbXTtmb3IobGV0IEcgb2YgVCl7bGV0ICRlPUcsUGU9JGU/LnRhZ05hbWU7aWYoUGU9PT0iSU5QVVQifHxQZT09PSJURVhUQVJFQSJ8fCRlPy5pc0NvbnRlbnRFZGl0YWJsZXx8UGUmJlBlLnN0YXJ0c1dpdGgoIkRFRVMtSU5QVVQtIikpcmV0dXJuITB9cmV0dXJuITF9X19vblRib2R5Q2xpY2s9aShEPT57aWYodGhpcy5fX2lzSW5FZGl0b3IoRCl8fHRoaXMuX19pc0luQWN0aW9uc0NvbChEKSlyZXR1cm47bGV0IFQ9dGhpcy5fX3Jlc29sdmVDZWxsKEQpO2lmKCFUKXJldHVybjtsZXQgRz10aGlzLl9sYXN0Vmlld0RhdGE/P1tdOyhULmNvbC5lZGl0YWJsZXx8VC5jb2wuZWRpdG9yKSYmKHRoaXMuX19mb2N1c2VkQ2VsbD17cm93SWQ6dGhpcy5nZXRSb3dJZChULml0ZW0pLGNvbEtleTpTdHJpbmcoVC5jb2wua2V5KX0pLHRoaXMuaGFuZGxlUm93Q2xpY2soRCxULml0ZW0sVC5yb3dJZHgsRyl9LCJfX29uVGJvZHlDbGljayIpO19fb25UYm9keURibGNsaWNrPWkoRD0+e2lmKHRoaXMuX19pc0luRWRpdG9yKEQpfHx0aGlzLl9faXNJbkFjdGlvbnNDb2woRCkpcmV0dXJuO2xldCBUPXRoaXMuX19yZXNvbHZlQ2VsbChEKTtpZighVClyZXR1cm47aWYoISEoVC5jb2wuZWRpdGFibGV8fFQuY29sLmVkaXRvcikpe0Quc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5zdGFydEVkaXRpbmcoVC5pdGVtLFQuY29sKTtyZXR1cm59bGV0ICRlPXRoaXMuZGF0YUFjdGlvbnMuZmluZChQZT0+UGUudHlwZT8uaW5jbHVkZXMoImRvdWJsZUNsaWNrIikpOyRlJiYkZS5hY3Rpb25GdW5jKHtpdGVtOlQuaXRlbSx0YWJsZTp0aGlzfSl9LCJfX29uVGJvZHlEYmxjbGljayIpO19fb25UYm9keU1vdXNlZG93bj1pKEQ9PntELnNoaWZ0S2V5JiZ0aGlzLnNlbGVjdGlvbk1vZGUhPT0ic2luZ2xlIiYmRC5wcmV2ZW50RGVmYXVsdCgpfSwiX19vblRib2R5TW91c2Vkb3duIik7X19vblRib2R5Q29udGV4dG1lbnU9aShEPT57aWYodGhpcy5fX2lzSW5BY3Rpb25zQ29sKEQpKXJldHVybjtsZXQgVD10aGlzLl9fcmVzb2x2ZVJvdyhEKTtpZighVClyZXR1cm47bGV0IEc9VC5pdGVtO3RoaXMuaXNSb3dTZWxlY3RlZChHKXx8KHRoaXMuc2VsZWN0ZWREYXRhUm93PUcsdGhpcy5zZWxlY3RlZElkcy5jbGVhcigpLHRoaXMuc2VsZWN0ZWRJZHMuYWRkKHRoaXMuZ2V0Um93SWQoRykpLHRoaXMuX19zZWxlY3Rpb25BbmNob3JJZD10aGlzLmdldFJvd0lkKEcpLHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZSgpLHRoaXMucmVxdWVzdFVwZGF0ZSgpKTtsZXQgJGU9dGhpcy5nZXRBY3Rpb25zRm9yVHlwZSgiY29udGV4dG1lbnUiKS5tYXAoRmU9Pih7bmFtZTpGZS5uYW1lLGljb25OYW1lOkZlLmljb25OYW1lLGFjdGlvbjppKGFzeW5jKCk9Pihhd2FpdCBGZS5hY3Rpb25GdW5jKHtpdGVtOkcsdGFibGU6dGhpc30pLG51bGwpLCJhY3Rpb24iKX0pKSxQZT1be25hbWU6dGhpcy5zZWxlY3RlZElkcy5zaXplPjE/YENvcHkgJHt0aGlzLnNlbGVjdGVkSWRzLnNpemV9IHJvd3MgYXMgSlNPTmA6IkNvcHkgcm93IGFzIEpTT04iLGljb25OYW1lOiJsdWNpZGU6Q29weSIsYWN0aW9uOmkoYXN5bmMoKT0+KHRoaXMuY29weVNlbGVjdGlvbkFzSnNvbihHKSxudWxsKSwiYWN0aW9uIil9XTskYS5vcGVuQ29udGV4dE1lbnVXaXRoT3B0aW9ucyhELFsuLi4kZSwuLi5QZV0pfSwiX19vblRib2R5Q29udGV4dG1lbnUiKTtfX29uVGJvZHlEcmFnZW50ZXI9aShEPT57aWYoRC5wcmV2ZW50RGVmYXVsdCgpLEQuc3RvcFByb3BhZ2F0aW9uKCksIXRoaXMuX19yZXNvbHZlUm93KEQpKXJldHVybjtsZXQgRz0oRC5jb21wb3NlZFBhdGg/LigpfHxbXSkuZmluZCgkZT0+JGU/LnRhZ05hbWU9PT0iVFIiKTtHJiZzZXRUaW1lb3V0KCgpPT5HLmNsYXNzTGlzdC5hZGQoImhhc0F0dGFjaG1lbnQiKSwwKX0sIl9fb25UYm9keURyYWdlbnRlciIpO19fb25UYm9keURyYWdsZWF2ZT1pKEQ9PntELnByZXZlbnREZWZhdWx0KCksRC5zdG9wUHJvcGFnYXRpb24oKTtsZXQgVD0oRC5jb21wb3NlZFBhdGg/LigpfHxbXSkuZmluZChHPT5HPy50YWdOYW1lPT09IlRSIik7VCYmVC5jbGFzc0xpc3QucmVtb3ZlKCJoYXNBdHRhY2htZW50Iil9LCJfX29uVGJvZHlEcmFnbGVhdmUiKTtfX29uVGJvZHlEcmFnb3Zlcj1pKEQ9PntELnByZXZlbnREZWZhdWx0KCl9LCJfX29uVGJvZHlEcmFnb3ZlciIpO19fb25UYm9keURyb3A9aShhc3luYyBEPT57RC5wcmV2ZW50RGVmYXVsdCgpO2xldCBUPXRoaXMuX19yZXNvbHZlUm93KEQpO2lmKCFUKXJldHVybjtsZXQgRz1ULml0ZW0sJGU9W107Zm9yKGxldCBGZSBvZiBBcnJheS5mcm9tKEQuZGF0YVRyYW5zZmVyLmZpbGVzKSl0aGlzLmZpbGVzLnB1c2goRmUpLCRlLnB1c2goRmUpLHRoaXMucmVxdWVzdFVwZGF0ZSgpO2xldCBQZT10aGlzLmZpbGVXZWFrTWFwLmdldChHKTtQZT9QZS5wdXNoKC4uLiRlKTp0aGlzLmZpbGVXZWFrTWFwLnNldChHLCRlKX0sIl9fb25UYm9keURyb3AiKTtoYW5kbGVSb3dDbGljayhELFQsRywkZSl7bGV0IFBlPXRoaXMuZ2V0Um93SWQoVCk7aWYodGhpcy5zZWxlY3Rpb25Nb2RlPT09InNpbmdsZSIpe3RoaXMuc2VsZWN0ZWREYXRhUm93PVQsdGhpcy5zZWxlY3RlZElkcy5jbGVhcigpLHRoaXMuc2VsZWN0ZWRJZHMuYWRkKFBlKSx0aGlzLl9fc2VsZWN0aW9uQW5jaG9ySWQ9UGUsdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlKCksdGhpcy5yZXF1ZXN0VXBkYXRlKCk7cmV0dXJufWxldCBGZT1ELm1ldGFLZXl8fEQuY3RybEtleTtpZihELnNoaWZ0S2V5JiZ0aGlzLl9fc2VsZWN0aW9uQW5jaG9ySWQhPT12b2lkIDApe3dpbmRvdy5nZXRTZWxlY3Rpb24/LigpPy5yZW1vdmVBbGxSYW5nZXMoKTtsZXQgVWU9JGUuZmluZEluZGV4KFhlPT50aGlzLmdldFJvd0lkKFhlKT09PXRoaXMuX19zZWxlY3Rpb25BbmNob3JJZCk7aWYoVWU+PTApe2xldFtYZSx3dF09VWU8PUc/W1VlLEddOltHLFVlXTt0aGlzLnNlbGVjdGVkSWRzLmNsZWFyKCk7Zm9yKGxldCBRZT1YZTtRZTw9d3Q7UWUrKyl0aGlzLnNlbGVjdGVkSWRzLmFkZCh0aGlzLmdldFJvd0lkKCRlW1FlXSkpfWVsc2UgdGhpcy5zZWxlY3RlZElkcy5jbGVhcigpLHRoaXMuc2VsZWN0ZWRJZHMuYWRkKFBlKSx0aGlzLl9fc2VsZWN0aW9uQW5jaG9ySWQ9UGU7dGhpcy5zZWxlY3RlZERhdGFSb3c9VH1lbHNlIGlmKEZlKXtpZih0aGlzLnNlbGVjdGVkSWRzLmhhcyhQZSkpe2lmKHRoaXMuc2VsZWN0ZWRJZHMuZGVsZXRlKFBlKSx0aGlzLnNlbGVjdGVkRGF0YVJvdz09PVQpe2xldCBYZT0kZS5maW5kKHd0PT50aGlzLnNlbGVjdGVkSWRzLmhhcyh0aGlzLmdldFJvd0lkKHd0KSkpO3RoaXMuc2VsZWN0ZWREYXRhUm93PVhlfX1lbHNlIHRoaXMuc2VsZWN0ZWRJZHMuYWRkKFBlKSx0aGlzLnNlbGVjdGVkRGF0YVJvdz1UO3RoaXMuX19zZWxlY3Rpb25BbmNob3JJZD1QZX1lbHNlIHRoaXMuc2VsZWN0ZWREYXRhUm93PVQsdGhpcy5zZWxlY3RlZElkcy5jbGVhcigpLHRoaXMuc2VsZWN0ZWRJZHMuYWRkKFBlKSx0aGlzLl9fc2VsZWN0aW9uQW5jaG9ySWQ9UGU7dGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlKCksdGhpcy5yZXF1ZXN0VXBkYXRlKCl9c2V0Um93U2VsZWN0ZWQoRCxUKXtsZXQgRz10aGlzLmdldFJvd0lkKEQpO3RoaXMuc2VsZWN0aW9uTW9kZT09PSJzaW5nbGUiPyh0aGlzLnNlbGVjdGVkSWRzLmNsZWFyKCksVCYmdGhpcy5zZWxlY3RlZElkcy5hZGQoRykpOnRoaXMuc2VsZWN0aW9uTW9kZT09PSJtdWx0aSImJihUP3RoaXMuc2VsZWN0ZWRJZHMuYWRkKEcpOnRoaXMuc2VsZWN0ZWRJZHMuZGVsZXRlKEcpKSx0aGlzLmVtaXRTZWxlY3Rpb25DaGFuZ2UoKSx0aGlzLnJlcXVlc3RVcGRhdGUoKX1hcmVBbGxWaXNpYmxlU2VsZWN0ZWQoKXtsZXQgRD10aGlzLl9sYXN0Vmlld0RhdGF8fFtdO2lmKEQubGVuZ3RoPT09MClyZXR1cm4hMTtmb3IobGV0IFQgb2YgRClpZighdGhpcy5zZWxlY3RlZElkcy5oYXModGhpcy5nZXRSb3dJZChUKSkpcmV0dXJuITE7cmV0dXJuITB9aXNWaXNpYmxlU2VsZWN0aW9uSW5kZXRlcm1pbmF0ZSgpe2xldCBEPXRoaXMuX2xhc3RWaWV3RGF0YXx8W107aWYoRC5sZW5ndGg9PT0wKXJldHVybiExO2xldCBUPTA7Zm9yKGxldCBHIG9mIEQpdGhpcy5zZWxlY3RlZElkcy5oYXModGhpcy5nZXRSb3dJZChHKSkmJlQrKztyZXR1cm4gVD4wJiZUPEQubGVuZ3RofXNldFNlbGVjdFZpc2libGUoRCl7bGV0IFQ9dGhpcy5fbGFzdFZpZXdEYXRhfHxbXTtpZihEKWZvcihsZXQgRyBvZiBUKXRoaXMuc2VsZWN0ZWRJZHMuYWRkKHRoaXMuZ2V0Um93SWQoRykpO2Vsc2UgZm9yKGxldCBHIG9mIFQpdGhpcy5zZWxlY3RlZElkcy5kZWxldGUodGhpcy5nZXRSb3dJZChHKSk7dGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlKCksdGhpcy5yZXF1ZXN0VXBkYXRlKCl9ZW1pdFNlbGVjdGlvbkNoYW5nZSgpe2xldCBEPUFycmF5LmZyb20odGhpcy5zZWxlY3RlZElkcyksVD10aGlzLmRhdGEuZmlsdGVyKEc9PnRoaXMuc2VsZWN0ZWRJZHMuaGFzKHRoaXMuZ2V0Um93SWQoRykpKTt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJzZWxlY3Rpb25DaGFuZ2UiLHtkZXRhaWw6e3NlbGVjdGVkSWRzOkQsc2VsZWN0ZWRSb3dzOlR9LGJ1YmJsZXM6ITB9KSl9Z2V0QWN0aW9uc0ZvclR5cGUoRCl7bGV0IFQ9W107Zm9yKGxldCBHIG9mIHRoaXMuZGF0YUFjdGlvbnMpRy50eXBlPy5pbmNsdWRlcyhEKSYmVC5wdXNoKEcpO3JldHVybiBUfV9faXNDb2x1bW5FZGl0YWJsZShEKXtyZXR1cm4hIShELmVkaXRhYmxlfHxELmVkaXRvcil9X19lZGl0YWJsZUNvbHVtbnMoRCl7cmV0dXJuIEQuZmlsdGVyKFQ9PiFULmhpZGRlbiYmdGhpcy5fX2lzQ29sdW1uRWRpdGFibGUoVCkpfXN0YXJ0RWRpdGluZyhELFQpe2lmKCF0aGlzLl9faXNDb2x1bW5FZGl0YWJsZShUKSlyZXR1cm47bGV0IEc9dGhpcy5nZXRSb3dJZChEKSwkZT1TdHJpbmcoVC5rZXkpO3RoaXMuX19mb2N1c2VkQ2VsbD17cm93SWQ6Ryxjb2xLZXk6JGV9LHRoaXMuX19lZGl0aW5nQ2VsbD17cm93SWQ6Ryxjb2xLZXk6JGV9LHRoaXMucmVxdWVzdFVwZGF0ZSgpLHRoaXMudXBkYXRlQ29tcGxldGUudGhlbigoKT0+e2xldCBQZT10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5lZGl0aW5nQ2VsbCBkZWVzLWlucHV0LXRleHQsIC5lZGl0aW5nQ2VsbCBkZWVzLWlucHV0LWNoZWNrYm94LCAuZWRpdGluZ0NlbGwgZGVlcy1pbnB1dC1kcm9wZG93biwgLmVkaXRpbmdDZWxsIGRlZXMtaW5wdXQtZGF0ZXBpY2tlciwgLmVkaXRpbmdDZWxsIGRlZXMtaW5wdXQtdGFncyIpO1BlPy5mb2N1cz8uKCksUGU/LnRhZ05hbWU9PT0iREVFUy1JTlBVVC1EUk9QRE9XTiImJlBlLnVwZGF0ZUNvbXBsZXRlPy50aGVuKCgpPT5QZS50b2dnbGVTZWxlY3Rpb25Cb3g/LigpKX0pfWNhbmNlbENlbGxFZGl0KCl7dGhpcy5fX2VkaXRpbmdDZWxsPXZvaWQgMCx0aGlzLnJlcXVlc3RVcGRhdGUoKX1jb21taXRDZWxsRWRpdChELFQsRyl7bGV0ICRlPVN0cmluZyhULmtleSksUGU9RFtULmtleV0sRmU9VC5wYXJzZT9ULnBhcnNlKEcsRCk6RztpZihULnZhbGlkYXRlKXtsZXQgVmU9VC52YWxpZGF0ZShGZSxEKTtpZih0eXBlb2YgVmU9PSJzdHJpbmciKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjZWxsRWRpdEVycm9yIix7ZGV0YWlsOntyb3c6RCxrZXk6JGUsdmFsdWU6RmUsbWVzc2FnZTpWZX0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKTtyZXR1cm59fUZlIT09UGUmJihEW1Qua2V5XT1GZSx0aGlzLl9fcmVjb3JkQ2VsbEluU25hcHNob3QoRCxUKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjZWxsRWRpdCIse2RldGFpbDp7cm93OkQsa2V5OiRlLG9sZFZhbHVlOlBlLG5ld1ZhbHVlOkZlfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpLHRoaXMuY2hhbmdlU3ViamVjdC5uZXh0KHRoaXMpKSx0aGlzLl9fZWRpdGluZ0NlbGw9dm9pZCAwLHRoaXMucmVxdWVzdFVwZGF0ZSgpfV9fcmVjb3JkQ2VsbEluU25hcHNob3QoRCxUKXtpZih0aGlzLmhpZ2hsaWdodFVwZGF0ZXMhPT0iZmxhc2gifHwhdGhpcy5fX3ByZXZTbmFwc2hvdHx8IXRoaXMucm93S2V5KXJldHVybjtsZXQgRz10aGlzLmdldFJvd0lkKEQpLCRlPXRoaXMuX19wcmV2U25hcHNob3QuZ2V0KEcpOyRlfHwoJGU9bmV3IE1hcCx0aGlzLl9fcHJldlNuYXBzaG90LnNldChHLCRlKSksJGUuc2V0KFN0cmluZyhULmtleSksZDQoRCxULHRoaXMuZGlzcGxheUZ1bmN0aW9uKSl9cmVuZGVyQ2VsbEVkaXRvcihELFQpe2xldCBHPURbVC5rZXldLCRlPVQuZm9ybWF0P1QuZm9ybWF0KEcsRCk6RyxQZT1ULmVkaXRvcj8/InRleHQiLEZlPWkoVmU9PnRoaXMuY29tbWl0Q2VsbEVkaXQoRCxULFZlLnZhbHVlKSwib25UZXh0Q29tbWl0Iik7c3dpdGNoKFBlKXtjYXNlImNoZWNrYm94IjpyZXR1cm4gd2A8ZGVlcy1pbnB1dC1jaGVja2JveAogICAgICAgICAgLnZhbHVlPSR7ISEkZX0KICAgICAgICAgIEBuZXdWYWx1ZT0ke1ZlPT57VmUuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5jb21taXRDZWxsRWRpdChELFQsVmUuZGV0YWlsKX19CiAgICAgICAgPjwvZGVlcy1pbnB1dC1jaGVja2JveD5gO2Nhc2UiZHJvcGRvd24iOntsZXQgVmU9VC5lZGl0b3JPcHRpb25zPy5vcHRpb25zPz9bXSxVZT1WZS5maW5kKFhlPT5YZT09bnVsbD8hMTp0eXBlb2YgWGU9PSJzdHJpbmciP1hlPT09RzpYZS5rZXk9PT1HfHxYZS5vcHRpb249PT1HKT8/bnVsbDtyZXR1cm4gd2A8ZGVlcy1pbnB1dC1kcm9wZG93bgogICAgICAgICAgLnZpbnRlZ3JhdGVkPSR7ITB9CiAgICAgICAgICAub3B0aW9ucz0ke1ZlfQogICAgICAgICAgLnNlbGVjdGVkT3B0aW9uPSR7VWV9CiAgICAgICAgICBAc2VsZWN0ZWRPcHRpb249JHtYZT0+e1hlLnN0b3BQcm9wYWdhdGlvbigpO2xldCB3dD1YZS5kZXRhaWwsUWU9d3Q/Lm9wdGlvbj8/d3Q/LmtleT8/d3Q7dGhpcy5jb21taXRDZWxsRWRpdChELFQsUWUpfX0KICAgICAgICA+PC9kZWVzLWlucHV0LWRyb3Bkb3duPmB9Y2FzZSJkYXRlIjpyZXR1cm4gd2A8ZGVlcy1pbnB1dC1kYXRlcGlja2VyCiAgICAgICAgICAudmFsdWU9JHskZX0KICAgICAgICAgIEBmb2N1c291dD0ke1ZlPT5GZShWZS50YXJnZXQpfQogICAgICAgICAgQGtleWRvd249JHtWZT0+dGhpcy5fX2hhbmRsZUVkaXRvcktleShWZSxELFQpfQogICAgICAgID48L2RlZXMtaW5wdXQtZGF0ZXBpY2tlcj5gO2Nhc2UidGFncyI6cmV0dXJuIHdgPGRlZXMtaW5wdXQtdGFncwogICAgICAgICAgLnZhbHVlPSR7JGU/P1tdfQogICAgICAgICAgQGZvY3Vzb3V0PSR7VmU9PkZlKFZlLnRhcmdldCl9CiAgICAgICAgICBAa2V5ZG93bj0ke1ZlPT50aGlzLl9faGFuZGxlRWRpdG9yS2V5KFZlLEQsVCl9CiAgICAgICAgPjwvZGVlcy1pbnB1dC10YWdzPmA7ZGVmYXVsdDpyZXR1cm4gd2A8ZGVlcy1pbnB1dC10ZXh0CiAgICAgICAgICAudmludGVncmF0ZWQ9JHshMH0KICAgICAgICAgIC52YWx1ZT0keyRlPT1udWxsPyIiOlN0cmluZygkZSl9CiAgICAgICAgICBAZm9jdXNvdXQ9JHtWZT0+RmUoVmUudGFyZ2V0KX0KICAgICAgICAgIEBrZXlkb3duPSR7VmU9PnRoaXMuX19oYW5kbGVFZGl0b3JLZXkoVmUsRCxUKX0KICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+YH19X19oYW5kbGVFZGl0b3JLZXkoRCxULEcpe2lmKEQua2V5PT09IkVzY2FwZSIpRC5wcmV2ZW50RGVmYXVsdCgpLEQuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5jYW5jZWxDZWxsRWRpdCgpLHRoaXMuZm9jdXMoKTtlbHNlIGlmKEQua2V5PT09IkVudGVyIil7RC5wcmV2ZW50RGVmYXVsdCgpLEQuc3RvcFByb3BhZ2F0aW9uKCk7bGV0ICRlPUQudGFyZ2V0O3RoaXMuY29tbWl0Q2VsbEVkaXQoVCxHLCRlLnZhbHVlKSx0aGlzLm1vdmVGb2N1c2VkQ2VsbCgwLDEsITApfWVsc2UgaWYoRC5rZXk9PT0iVGFiIil7RC5wcmV2ZW50RGVmYXVsdCgpLEQuc3RvcFByb3BhZ2F0aW9uKCk7bGV0ICRlPUQudGFyZ2V0O3RoaXMuY29tbWl0Q2VsbEVkaXQoVCxHLCRlLnZhbHVlKSx0aGlzLm1vdmVGb2N1c2VkQ2VsbChELnNoaWZ0S2V5Py0xOjEsMCwhMCl9fW1vdmVGb2N1c2VkQ2VsbChELFQsRyl7bGV0ICRlPXRoaXMuX2xhc3RWaWV3RGF0YT8/W107aWYoJGUubGVuZ3RoPT09MClyZXR1cm47bGV0IFBlPXRoaXMuX19nZXRFZmZlY3RpdmVDb2x1bW5zKCksRmU9dGhpcy5fX2VkaXRhYmxlQ29sdW1ucyhQZSk7aWYoRmUubGVuZ3RoPT09MClyZXR1cm47bGV0IFZlPTAsVWU9MDtpZih0aGlzLl9fZm9jdXNlZENlbGwmJihWZT0kZS5maW5kSW5kZXgoUWU9PnRoaXMuZ2V0Um93SWQoUWUpPT09dGhpcy5fX2ZvY3VzZWRDZWxsLnJvd0lkKSxVZT1GZS5maW5kSW5kZXgoUWU9PlN0cmluZyhRZS5rZXkpPT09dGhpcy5fX2ZvY3VzZWRDZWxsLmNvbEtleSksVmU8MCYmKFZlPTApLFVlPDAmJihVZT0wKSksRCE9PTApe2ZvcihVZSs9RDtVZT49RmUubGVuZ3RoOylVZS09RmUubGVuZ3RoLFZlKz0xO2Zvcig7VWU8MDspVWUrPUZlLmxlbmd0aCxWZS09MX1pZihUIT09MCYmKFZlKz1UKSxWZTwwfHxWZT49JGUubGVuZ3RoKXt0aGlzLmNhbmNlbENlbGxFZGl0KCk7cmV0dXJufWxldCBYZT0kZVtWZV0sd3Q9RmVbVWVdO3RoaXMuX19mb2N1c2VkQ2VsbD17cm93SWQ6dGhpcy5nZXRSb3dJZChYZSksY29sS2V5OlN0cmluZyh3dC5rZXkpfSxHP3RoaXMuc3RhcnRFZGl0aW5nKFhlLHd0KTp0aGlzLnJlcXVlc3RVcGRhdGUoKX1zdGF0aWN7Q3QoYSx0KX19O3JldHVybiBwMT1hfSkoKX0pO3ZhciBIbnQ9ZygoKT0+e0ludCgpfSk7dmFyIEl2YSxBdmE9ZygoKT0+e3BlKCk7SXQoKTtJdmE9aSgoKT0+d2AKICA8c3R5bGU+CiAgICAke0pgCiAgICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMjRweDsKICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgIG1heC13aWR0aDogMTIwMHB4OwogICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICB9CiAgICAgIAogICAgICBkZWVzLXBhbmVsIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgICB9CiAgICAgIAogICAgICBkZWVzLXBhbmVsOmxhc3QtY2hpbGQgewogICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgIH0KICAgICAgCiAgICAgIC5mb3JtLW91dHB1dCB7CiAgICAgICAgbWFyZ2luLXRvcDogMTZweDsKICAgICAgICBwYWRkaW5nOiAxMnB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDQwJSA5Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDE2LjglKSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogICAgICB9CiAgICAgIAogICAgICAuc3RhdHVzLW1lc3NhZ2UgewogICAgICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICAgICAgcGFkZGluZzogMTJweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICB9CiAgICAgIAogICAgICAuc3RhdHVzLW1lc3NhZ2Uuc3VjY2VzcyB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgxNDIuMSA3MC42JSA0NS4zJSAvIDAuMSkiLCJoc2woMTQyLjEgNzAuNiUgNDUuMyUgLyAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDE0Mi4xIDcwLjYlIDM1LjMlKSIsImhzbCgxNDIuMSA3MC42JSA2NS4zJSkiKX07CiAgICAgIH0KICAgICAgCiAgICAgIC5zdGF0dXMtbWVzc2FnZS5lcnJvciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDcyLjIlIDUwLjYlIC8gMC4xKSIsImhzbCgwIDcyLjIlIDUwLjYlIC8gMC4yKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDcyLjIlIDQwLjYlKSIsImhzbCgwIDcyLjIlIDYwLjYlKSIpfTsKICAgICAgfQogICAgYH0KICA8L3N0eWxlPgogIAogIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntsZXQgZT1zLnF1ZXJ5U2VsZWN0b3IoImRlZXMtZm9ybSIpLHQ9cy5xdWVyeVNlbGVjdG9yKCIuZm9ybS1vdXRwdXQiKTtlJiZ0JiYoZS5hZGRFdmVudExpc3RlbmVyKCJmb3JtRGF0YSIsKGFzeW5jIHI9PntsZXQgbj1yLmRldGFpbC5kYXRhO2NvbnNvbGUubG9nKCJGb3JtIHN1Ym1pdHRlZCB3aXRoIGRhdGE6IixuKSxlLnNldFN0YXR1cygicGVuZGluZyIsIlByb2Nlc3NpbmcgeW91ciByZWdpc3RyYXRpb24uLi4iKSx0LmlubmVySFRNTD1gPHN0cm9uZz5TdWJtaXR0ZWQgRGF0YTo8L3N0cm9uZz4KJHtKU09OLnN0cmluZ2lmeShuLG51bGwsMil9YCxhd2FpdCBsdC5wbHVnaW5zLnNtYXJ0ZGVsYXkuZGVsYXlGb3IoMmUzKSxlLnNldFN0YXR1cygic3VjY2VzcyIsIlJlZ2lzdHJhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5ISIpLGF3YWl0IGx0LnBsdWdpbnMuc21hcnRkZWxheS5kZWxheUZvcigyZTMpLGUucmVzZXQoKSx0LmlubmVySFRNTD0iPGVtPkZvcm0gaGFzIGJlZW4gcmVzZXQ8L2VtPiJ9KSksZS5xdWVyeVNlbGVjdG9yQWxsKCJkZWVzLWlucHV0LXRleHQsIGRlZXMtaW5wdXQtZHJvcGRvd24sIGRlZXMtaW5wdXQtY2hlY2tib3giKS5mb3JFYWNoKHI9PntyLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZVN1YmplY3QiLCgpPT57Y29uc29sZS5sb2coIkZpZWxkIGNoYW5nZWQ6IixyLmdldEF0dHJpYnV0ZSgia2V5IikpfSl9KSl9fT4KICAgICAgPGRlZXMtcGFuZWwgLmhlYWRpbmc9IkNvbXBsZXRlIEZvcm0gRXhhbXBsZSIgLmRlc2NyaXB0aW9uPSJBIGNvbXByZWhlbnNpdmUgZm9ybSB3aXRoIHZhcmlvdXMgaW5wdXQgdHlwZXMsIHZhbGlkYXRpb24sIGFuZCBmb3JtIHN1Ym1pc3Npb24gaGFuZGxpbmciPgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0IAogICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0gCiAgICAgICAgICAgIGtleT0iZmlyc3ROYW1lIiAKICAgICAgICAgICAgbGFiZWw9IkZpcnN0IE5hbWUiCiAgICAgICAgICAgIC5pbmZvVGV4dD0keyJZb3VyIGdpdmVuIG5hbWUifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0IAogICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0gCiAgICAgICAgICAgIGtleT0ibGFzdE5hbWUiIAogICAgICAgICAgICBsYWJlbD0iTGFzdCBOYW1lIgogICAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0IAogICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0gCiAgICAgICAgICAgIGtleT0iZW1haWwiIAogICAgICAgICAgICBsYWJlbD0iRW1haWwgQWRkcmVzcyIKICAgICAgICAgICAgLmluZm9UZXh0PSR7IldlIHdpbGwgdXNlIHRoaXMgdG8gY29udGFjdCB5b3UifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1pbnB1dC1kcm9wZG93bgogICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0KICAgICAgICAgICAga2V5PSJjb3VudHJ5IgogICAgICAgICAgICAubGFiZWw9JHsiQ291bnRyeSJ9CiAgICAgICAgICAgIC5vcHRpb25zPSR7W3tvcHRpb246IlVuaXRlZCBTdGF0ZXMiLGtleToidXMifSx7b3B0aW9uOiJDYW5hZGEiLGtleToiY2EifSx7b3B0aW9uOiJHZXJtYW55IixrZXk6ImRlIn0se29wdGlvbjoiRnJhbmNlIixrZXk6ImZyIn0se29wdGlvbjoiVW5pdGVkIEtpbmdkb20iLGtleToidWsifV19CiAgICAgICAgICA+PC9kZWVzLWlucHV0LWRyb3Bkb3duPgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0CiAgICAgICAgICAgIC5yZXF1aXJlZD0keyEwfQogICAgICAgICAgICBrZXk9InBhc3N3b3JkIgogICAgICAgICAgICBsYWJlbD0iUGFzc3dvcmQiCiAgICAgICAgICAgIGlzUGFzc3dvcmRCb29sCiAgICAgICAgICAgIC5pbmZvVGV4dD0keyJNaW5pbXVtIDggY2hhcmFjdGVycyJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWlucHV0LWNoZWNrYm94CiAgICAgICAgICAgIC5yZXF1aXJlZD0keyEwfQogICAgICAgICAgICBrZXk9InRlcm1zIgogICAgICAgICAgICBsYWJlbD0iSSBhZ3JlZSB0byB0aGUgVGVybXMgYW5kIENvbmRpdGlvbnMiCiAgICAgICAgICA+PC9kZWVzLWlucHV0LWNoZWNrYm94PgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1pbnB1dC1jaGVja2JveAogICAgICAgICAgICBrZXk9Im5ld3NsZXR0ZXIiCiAgICAgICAgICAgIGxhYmVsPSJTZW5kIG1lIHByb21vdGlvbmFsIGVtYWlscyIKICAgICAgICAgICAgLnZhbHVlPSR7ITB9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LWNoZWNrYm94PgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1mb3JtLXN1Ym1pdD5DcmVhdGUgQWNjb3VudDwvZGVlcy1mb3JtLXN1Ym1pdD4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLW91dHB1dCI+CiAgICAgICAgICA8ZW0+U3VibWl0IHRoZSBmb3JtIHRvIHNlZSB0aGUgY29sbGVjdGVkIGRhdGEuLi48L2VtPgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CiAgICAKICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntsZXQgZT1zLnF1ZXJ5U2VsZWN0b3IoImRlZXMtZm9ybSIpO2UmJihjb25zb2xlLmxvZygiSG9yaXpvbnRhbCBmb3JtIGxheW91dCBhY3RpdmUiKSxlLmFkZEV2ZW50TGlzdGVuZXIoImZvcm1EYXRhIiwoYT0+e2xldCByPWEuZGV0YWlsLmRhdGE7Y29uc29sZS5sb2coIkZpbHRlciBhcHBsaWVkOiIscik7bGV0IG49TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjEwMCkrMTtjb25zb2xlLmxvZyhgRm91bmQgJHtufSByZXN1bHRzIHdpdGggZmlsdGVyczpgLHIpfSkpLGUucXVlcnlTZWxlY3RvckFsbCgiW2tleV0iKS5mb3JFYWNoKGE9PnthLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZVN1YmplY3QiLGFzeW5jKCk9PntsZXQgcj1hd2FpdCBlLmNvbGxlY3RGb3JtRGF0YSgpO2NvbnNvbGUubG9nKCJMaXZlIGZpbHRlciB1cGRhdGU6IixyKX0pfSkpfX0+CiAgICAgIDxkZWVzLXBhbmVsIC5oZWFkaW5nPSJIb3Jpem9udGFsIEZvcm0gTGF5b3V0IiAuZGVzY3JpcHRpb249IkNvbXBhY3QgZm9ybSB3aXRoIGlucHV0cyBhcnJhbmdlZCBob3Jpem9udGFsbHkgLSBwZXJmZWN0IGZvciBmaWx0ZXJzIGFuZCBxdWljayBmb3JtcyI+CiAgICAgICAgPGRlZXMtZm9ybSBob3Jpem9udGFsLWxheW91dD4KICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQgCiAgICAgICAgICAgIGtleT0ic2VhcmNoIiAKICAgICAgICAgICAgbGFiZWw9IlNlYXJjaCIKICAgICAgICAgICAgcGxhY2Vob2xkZXI9IkVudGVyIGtleXdvcmRzLi4uIgogICAgICAgICAgPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1pbnB1dC1kcm9wZG93bgogICAgICAgICAgICBrZXk9ImNhdGVnb3J5IgogICAgICAgICAgICAubGFiZWw9JHsiQ2F0ZWdvcnkifQogICAgICAgICAgICAuZW5hYmxlU2VhcmNoPSR7ITF9CiAgICAgICAgICAgIC5vcHRpb25zPSR7W3tvcHRpb246IkFsbCIsa2V5OiJhbGwifSx7b3B0aW9uOiJQcm9kdWN0cyIsa2V5OiJwcm9kdWN0cyJ9LHtvcHRpb246IlNlcnZpY2VzIixrZXk6InNlcnZpY2VzIn0se29wdGlvbjoiU3VwcG9ydCIsa2V5OiJzdXBwb3J0In1dfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1kcm9wZG93bj4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtaW5wdXQtZHJvcGRvd24KICAgICAgICAgICAga2V5PSJzb3J0IgogICAgICAgICAgICAubGFiZWw9JHsiU29ydCBCeSJ9CiAgICAgICAgICAgIC5lbmFibGVTZWFyY2g9JHshMX0KICAgICAgICAgICAgLm9wdGlvbnM9JHtbe29wdGlvbjoiTmV3ZXN0IixrZXk6Im5ld2VzdCJ9LHtvcHRpb246IlBvcHVsYXIiLGtleToicG9wdWxhciJ9LHtvcHRpb246IlByaWNlOiBMb3cgdG8gSGlnaCIsa2V5OiJwcmljZV9hc2MifSx7b3B0aW9uOiJQcmljZTogSGlnaCB0byBMb3ciLGtleToicHJpY2VfZGVzYyJ9XX0KICAgICAgICAgID48L2RlZXMtaW5wdXQtZHJvcGRvd24+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWlucHV0LWNoZWNrYm94CiAgICAgICAgICAgIGtleT0iaW5TdG9jayIKICAgICAgICAgICAgbGFiZWw9IkluIFN0b2NrIE9ubHkiCiAgICAgICAgICAgIC52YWx1ZT0keyEwfQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1jaGVja2JveD4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgogICAgCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57bGV0IGU9cy5xdWVyeVNlbGVjdG9yKCJkZWVzLWZvcm0iKSx0PXMucXVlcnlTZWxlY3RvcigiI3N0YXR1cy1kaXNwbGF5Iik7aWYoZSl7ZS5hZGRFdmVudExpc3RlbmVyKCJmb3JtRGF0YSIsKGFzeW5jIHI9PntsZXQgbj1yLmRldGFpbC5kYXRhO2NvbnNvbGUubG9nKCJBZHZhbmNlZCBmb3JtIGRhdGE6IixuKSxlLnNldFN0YXR1cygicGVuZGluZyIsIlZhbGlkYXRpbmcgeW91ciBpbmZvcm1hdGlvbi4uLiIpLGF3YWl0IGx0LnBsdWdpbnMuc21hcnRkZWxheS5kZWxheUZvcigxNTAwKSxuLmliYW4mJm4uaWJhbi5sZW5ndGg+MTU/KGUuc2V0U3RhdHVzKCJzdWNjZXNzIiwiQXBwbGljYXRpb24gc3VibWl0dGVkIHN1Y2Nlc3NmdWxseSEiKSx0JiYodC5jbGFzc05hbWU9InN0YXR1cy1tZXNzYWdlIHN1Y2Nlc3MiLHQudGV4dENvbnRlbnQ9Ilx1MjcxMyBZb3VyIGFwcGxpY2F0aW9uIGhhcyBiZWVuIHN1Ym1pdHRlZC4gV2Ugd2lsbCBjb250YWN0IHlvdSBzb29uLiIpKTooZS5zZXRTdGF0dXMoImVycm9yIiwiUGxlYXNlIGNoZWNrIHlvdXIgSUJBTiIpLHQmJih0LmNsYXNzTmFtZT0ic3RhdHVzLW1lc3NhZ2UgZXJyb3IiLHQudGV4dENvbnRlbnQ9Ilx1MjcxNyBJbnZhbGlkIElCQU4gZm9ybWF0LiBQbGVhc2UgY2hlY2sgYW5kIHRyeSBhZ2Fpbi4iKSksY29uc29sZS5sb2coIkZvcm0gZGF0YSBsb2dnZWQ6IixuKX0pKTtsZXQgYT1lLnF1ZXJ5U2VsZWN0b3IoImRlZXMtaW5wdXQtZmlsZXVwbG9hZCIpO2EmJmEuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixyPT57bGV0IG49ci5kZXRhaWw/LmZpbGVzfHxbXTtjb25zb2xlLmxvZyhgJHtuLmxlbmd0aH0gZmlsZShzKSBzZWxlY3RlZCBmb3IgdXBsb2FkYCl9KX19fT4KICAgICAgPGRlZXMtcGFuZWwgLmhlYWRpbmc9IkFkdmFuY2VkIEZvcm0gRmVhdHVyZXMiIC5kZXNjcmlwdGlvbj0iRm9ybSB3aXRoIHNwZWNpYWxpemVkIGlucHV0IHR5cGVzIGFuZCBjb21wbGV4IHZhbGlkYXRpb24iPgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1pYmFuIAogICAgICAgICAgICBrZXk9ImliYW4iCiAgICAgICAgICAgIGxhYmVsPSJJQkFOIgogICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0KICAgICAgICAgID48L2RlZXMtaW5wdXQtaWJhbj4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtaW5wdXQtcGhvbmUKICAgICAgICAgICAga2V5PSJwaG9uZSIKICAgICAgICAgICAgbGFiZWw9IlBob25lIE51bWJlciIKICAgICAgICAgICAgLnJlcXVpcmVkPSR7ITB9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXBob25lPgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1pbnB1dC1tdWx0aXRvZ2dsZQogICAgICAgICAgICBrZXk9InByZWZlcmVuY2VzIgogICAgICAgICAgICAubGFiZWw9JHsiTm90aWZpY2F0aW9uIFByZWZlcmVuY2VzIn0KICAgICAgICAgICAgLm9wdGlvbnM9JHtbIkVtYWlsIiwiU01TIiwiUHVzaCIsIkluLUFwcCJdfQogICAgICAgICAgICAuc2VsZWN0ZWRPcHRpb249JHsiRW1haWwifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1tdWx0aXRvZ2dsZT4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtaW5wdXQtbXVsdGlzZWxlY3QKICAgICAgICAgICAga2V5PSJpbnRlcmVzdHMiCiAgICAgICAgICAgIC5sYWJlbD0keyJBcmVhcyBvZiBJbnRlcmVzdCJ9CiAgICAgICAgICAgIC5vcHRpb25zPSR7W3tvcHRpb246IlRlY2hub2xvZ3kiLGtleToidGVjaCJ9LHtvcHRpb246IkRlc2lnbiIsa2V5OiJkZXNpZ24ifSx7b3B0aW9uOiJCdXNpbmVzcyIsa2V5OiJidXNpbmVzcyJ9LHtvcHRpb246Ik1hcmtldGluZyIsa2V5OiJtYXJrZXRpbmcifSx7b3B0aW9uOiJTYWxlcyIsa2V5OiJzYWxlcyJ9XX0KICAgICAgICAgID48L2RlZXMtaW5wdXQtbXVsdGlzZWxlY3Q+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWlucHV0LWZpbGV1cGxvYWQKICAgICAgICAgICAga2V5PSJkb2N1bWVudHMiCiAgICAgICAgICAgIC5sYWJlbD0keyJVcGxvYWQgRG9jdW1lbnRzIn0KICAgICAgICAgICAgLmluZm9UZXh0PSR7IlBERiwgRE9DLCBvciBET0NYIGZpbGVzIHVwIHRvIDEwTUIifQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1maWxldXBsb2FkPgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1mb3JtLXN1Ym1pdD5TdWJtaXQgQXBwbGljYXRpb248L2RlZXMtZm9ybS1zdWJtaXQ+CiAgICAgICAgPC9kZWVzLWZvcm0+CiAgICAgICAgCiAgICAgICAgPGRpdiBpZD0ic3RhdHVzLWRpc3BsYXkiPjwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CiAgPC9kaXY+CmAsImRlbW9GdW5jIil9KTt2YXIgTnZhLHFudCxSdmEscmVzLHl4PWcoKCk9PntwZSgpO2t0KCk7TDFlKCk7SG90KCk7QTFlKCk7bzQoKTtab3QoKTtOMWUoKTtSMWUoKTtpbnQoKTtvbnQoKTtsbnQoKTtkbnQoKTtobnQoKTtnbnQoKTt2bnQoKTt5bnQoKTtZMWUoKTtYMWUoKTtXZygpO0hudCgpO0F2YSgpO052YT1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0scW50PWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxSdmE9W09vdCxCb3QsVW90LHRudCxzbnQscm50LG5udCxjbnQsWW90LFhvdCxXb3QscG50LG1udCxibnQseG50LFoxZSxQbnQsQm50XSxyZXM9KCgpPT57bGV0IHM9W25lKCJkZWVzLWZvcm0iKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXTt2YXIgcD1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0Zvcm0iKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgZD10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOkJvb2xlYW4scmVmbGVjdDohMCxhdHRyaWJ1dGU6Imhvcml6b250YWwtbGF5b3V0In0pXSxOdmEodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJob3Jpem9udGFsTGF5b3V0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHU9PiJob3Jpem9udGFsTGF5b3V0ImluIHUsImhhcyIpLGdldDppKHU9PnUuaG9yaXpvbnRhbExheW91dCwiZ2V0Iiksc2V0OmkoKHUsYyk9Pnt1Lmhvcml6b250YWxMYXlvdXQ9Y30sInNldCIpfSxtZXRhZGF0YTpkfSxvLGwpLE52YShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpkfSxudWxsLHQpLHA9YT1lLnZhbHVlLGQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZH0pfXN0YXRpYyBkZW1vPUl2YTtzdGF0aWMgZGVtb0dyb3Vwcz1bIkZvcm0iXTtuYW1lPSJteWZvcm0iO2NoYW5nZVN1YmplY3Q9bmV3IHV0LnNtYXJ0cngucnhqcy5TdWJqZWN0O3JlYWR5RGVmZXJyZWQ9dXQuc21hcnRwcm9taXNlLmRlZmVyKCk7I2U9cW50KHRoaXMsbywhMSk7Z2V0IGhvcml6b250YWxMYXlvdXQoKXtyZXR1cm4gdGhpcy4jZX1zZXQgaG9yaXpvbnRhbExheW91dChkKXt0aGlzLiNlPWR9c3RhdGljIHN0eWxlcz1bSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDE2cHg7CiAgICAgIH0KCiAgICAgIDpob3N0KFtob3Jpem9udGFsLWxheW91dF0pIHsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgICBnYXA6IDE2cHg7CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8c2xvdD48L3Nsb3Q+CiAgICBgfWFzeW5jIGZpcnN0VXBkYXRlZCgpe2xldCBkPXRoaXMuZ2V0Rm9ybUVsZW1lbnRzKCk7dGhpcy51cGRhdGVSZXF1aXJlZFN0YXR1cygpLHRoaXMudXBkYXRlQ2hpbGRyZW5MYXlvdXRNb2RlKCk7Zm9yKGxldCB1IG9mIGQpdS5jaGFuZ2VTdWJqZWN0LnN1YnNjcmliZShhc3luYygpPT57bGV0IGM9YXdhaXQgdGhpcy5jb2xsZWN0Rm9ybURhdGEoKTt0aGlzLmNoYW5nZVN1YmplY3QubmV4dChjKSxjb25zb2xlLmxvZyhjKSx0aGlzLnVwZGF0ZVJlcXVpcmVkU3RhdHVzKCl9KTthd2FpdCB0aGlzLmFkZEJlaGF2aW91cnMoKSx0aGlzLnJlYWR5RGVmZXJyZWQucmVzb2x2ZSgpfWdldEZvcm1FbGVtZW50cygpe3JldHVybiBBcnJheS5mcm9tKHRoaXMucXVlcnlTZWxlY3RvckFsbCgiKiIpKS5maWx0ZXIoZD0+UnZhLmluY2x1ZGVzKGQuY29uc3RydWN0b3IpKX1nZXRTdWJtaXRCdXR0b24oKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoIioiKSkuZmluZChkPT5kIGluc3RhbmNlb2YgUW90KX1hc3luYyB1cGRhdGVSZXF1aXJlZFN0YXR1cygpe2NvbnNvbGUubG9nKCJjaGVja2luZyB0aGUgcmVxdWlyZWQgc3RhdHVzLiIpO2xldCBkPSEwO2ZvcihsZXQgYyBvZiB0aGlzLmdldEZvcm1FbGVtZW50cygpKWMucmVxdWlyZWQmJiFjLnZhbHVlJiYoZD0hMSk7bGV0IHU9dGhpcy5nZXRTdWJtaXRCdXR0b24oKTt1JiYodS5kaXNhYmxlZD0hZCl9YXN5bmMgY29sbGVjdEZvcm1EYXRhKCl7bGV0IGQ9dGhpcy5nZXRGb3JtRWxlbWVudHMoKSx1PXt9O2ZvcihsZXQgYyBvZiBkKXtpZighYy5rZXkpe2NvbnNvbGUubG9nKGBmb3JtIGVsZW1lbnQgd2l0aCBsYWJlbCAiJHtjLmxhYmVsfSIgaGFzIG5vIGtleS4gc2tpcHBpbmcuYCk7Y29udGludWV9dVtjLmtleV09Yy52YWx1ZX1yZXR1cm4gdX1hc3luYyBnYXRoZXJBbmREaXNwYXRjaCgpe2xldCBkPWF3YWl0IHRoaXMuY29sbGVjdEZvcm1EYXRhKCksdT1uZXcgQ3VzdG9tRXZlbnQoImZvcm1EYXRhIix7ZGV0YWlsOntkYXRhOmR9LGJ1YmJsZXM6ITB9KTt0aGlzLmRpc3BhdGNoRXZlbnQodSksY29uc29sZS5sb2coImRpc3BhdGNoZWQgZGF0YToiKSxjb25zb2xlLmxvZyhkKX1zZXRTdGF0dXMoZCx1KXtsZXQgYz10aGlzLmdldEZvcm1FbGVtZW50cygpLGI9dGhpcy5nZXRTdWJtaXRCdXR0b24oKTtpZihiKXtzd2l0Y2goZCl7Y2FzZSJub3JtYWwiOmIuZGlzYWJsZWQ9ITEsYi5zdGF0dXM9Im5vcm1hbCI7Zm9yKGxldCB2IG9mIGMpdi5kaXNhYmxlZD0hMTticmVhaztjYXNlInBlbmRpbmciOmIuZGlzYWJsZWQ9ITAsYi5zdGF0dXM9InBlbmRpbmciO2ZvcihsZXQgdiBvZiBjKXYuZGlzYWJsZWQ9ITA7YnJlYWs7Y2FzZSJzdWNjZXNzIjpiLmRpc2FibGVkPSEwLGIuc3RhdHVzPSJzdWNjZXNzIjtmb3IobGV0IHYgb2YgYyl2LmRpc2FibGVkPSEwO2JyZWFrO2Nhc2UiZXJyb3IiOmIuZGlzYWJsZWQ9ITAsYi5zdGF0dXM9ImVycm9yIjtmb3IobGV0IHYgb2YgYyl2LmRpc2FibGVkPSEwO2JyZWFrfWIudGV4dD11fX1yZXNldCgpe2xldCBkPXRoaXMuZ2V0Rm9ybUVsZW1lbnRzKCk7Zm9yKGxldCB1IG9mIGQpdS52YWx1ZT1udWxsO3RoaXMuc2V0U3RhdHVzKCJub3JtYWwiLCJTdWJtaXQiKX1hc3luYyBhZGRCZWhhdmlvdXJzKCl7dGhpcy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixkPT57bGV0IHU9ZC50YXJnZXQ7aWYoUnZhLmluY2x1ZGVzKHUuY29uc3RydWN0b3IpJiZkLmtleT09PSJFbnRlciIpe2xldCBjPXRoaXMuZ2V0Rm9ybUVsZW1lbnRzKCksYj1jLmluZGV4T2YodSk7YjxjLmxlbmd0aC0xP2NbYisxXS5mb2N1cygpOih1LmJsdXIoKSx0aGlzLmdldFN1Ym1pdEJ1dHRvbigpPy5mb2N1cygpKX19KX11cGRhdGVDaGlsZHJlbkxheW91dE1vZGUoKXtsZXQgZD10aGlzLmdldEZvcm1FbGVtZW50cygpO2ZvcihsZXQgdSBvZiBkKSJsYXlvdXRNb2RlImluIHUmJih1LmxheW91dE1vZGU9ImF1dG8iKX11cGRhdGVkKGQpe3N1cGVyLnVwZGF0ZWQoZCksZC5oYXMoImhvcml6b250YWxMYXlvdXQiKSYmdGhpcy51cGRhdGVDaGlsZHJlbkxheW91dE1vZGUoKX1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cykscW50KHRoaXMsbCl9c3RhdGlje3FudChhLHQpfX07cmV0dXJuIHA9YX0pKCl9KTt2YXIgT3ZhLEZ2YT1nKCgpPT57cGUoKTtJdCgpO3hvKCk7eXgoKTtXZygpO280KCk7R2EoKTtPdmE9aSgoKT0+d2AKICA8c3R5bGU+CiAgICAke0pgCiAgICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMjRweDsKICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgIG1heC13aWR0aDogMTIwMHB4OwogICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICB9CiAgICAgIAogICAgICBkZWVzLXBhbmVsIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgICB9CiAgICAgIAogICAgICBkZWVzLXBhbmVsOmxhc3QtY2hpbGQgewogICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgIH0KICAgICAgCiAgICAgIC5idXR0b24tZ3JvdXAgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICB9CiAgICAgIAogICAgICAudmVydGljYWwtZ3JvdXAgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBtYXgtd2lkdGg6IDMwMHB4OwogICAgICB9CiAgICAgIAogICAgICAuaG9yaXpvbnRhbC1ncm91cCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMTZweDsKICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgIH0KICAgICAgCiAgICAgIC5kZW1vLW91dHB1dCB7CiAgICAgICAgbWFyZ2luLXRvcDogMTZweDsKICAgICAgICBwYWRkaW5nOiAxMnB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDQwJSA5Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDE2LjglKSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjMgMjUlIDguOCUpIiwiaHNsKDIxMCA0MCUgOTglKSIpfTsKICAgICAgfQogICAgICAKICAgICAgLmljb24tcm93IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgIG1hcmdpbjogOHB4IDA7CiAgICAgIH0KICAgICAgCiAgICAgIC5jb2RlLXNuaXBwZXQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDQwJSA5Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDExLjglKSIpfTsKICAgICAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIG1hcmdpbjogNHB4IDA7CiAgICAgIH0KICAgIGB9CiAgPC9zdHlsZT4KICAKICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57cy5xdWVyeVNlbGVjdG9yQWxsKCJkZWVzLWJ1dHRvbiIpLmZvckVhY2godD0+e3QuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2tlZCIsKCk9PntsZXQgYT10LmdldEF0dHJpYnV0ZSgidHlwZSIpfHwiZGVmYXVsdCI7Y29uc29sZS5sb2coYEJ1dHRvbiB2YXJpYW50IGNsaWNrZWQ6ICR7YX1gKX0pfSl9fT4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjEuIEJ1dHRvbiBWYXJpYW50cyJ9IC5zdWJ0aXRsZT0keyJEaWZmZXJlbnQgdmlzdWFsIHN0eWxlcyBmb3IgdmFyaW91cyB1c2UgY2FzZXMifT4KICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tZ3JvdXAiPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9ImRlZmF1bHQiPkRlZmF1bHQ8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9InNlY29uZGFyeSI+U2Vjb25kYXJ5PC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiB0eXBlPSJkZXN0cnVjdGl2ZSI+RGVzdHJ1Y3RpdmU8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9Im91dGxpbmUiPk91dGxpbmU8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9Imdob3N0Ij5HaG9zdDwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gdHlwZT0ibGluayI+TGluayBCdXR0b248L2RlZXMtYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CiAgICAKICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntzLnF1ZXJ5U2VsZWN0b3JBbGwoImRlZXMtYnV0dG9uIikuZm9yRWFjaCh0PT57dC5hZGRFdmVudExpc3RlbmVyKCJjbGlja2VkIiwoKT0+e2xldCBhPXQuZ2V0QXR0cmlidXRlKCJzaXplIil8fCJkZWZhdWx0Ijtjb25zb2xlLmxvZyhgQnV0dG9uIHNpemU6ICR7YX1gKX0pfSl9fT4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjIuIEJ1dHRvbiBTaXplcyJ9IC5zdWJ0aXRsZT0keyJNdWx0aXBsZSBzaXplcyBmb3IgZGlmZmVyZW50IGNvbnRleHRzIGFuZCB1c2UgY2FzZXMifT4KICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tZ3JvdXAiPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHNpemU9InNtIj5TbWFsbCBCdXR0b248L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHNpemU9ImRlZmF1bHQiPkRlZmF1bHQgU2l6ZTwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gc2l6ZT0ibGciPkxhcmdlIEJ1dHRvbjwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gc2l6ZT0iaWNvbiIgdHlwZT0ib3V0bGluZSIgLnRleHQ9JHsiXHV7MUY2ODB9In0+PC9kZWVzLWJ1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tZ3JvdXAiIHN0eWxlPSJtYXJnaW4tdG9wOiAxNnB4OyI+CiAgICAgICAgICA8ZGVlcy1idXR0b24gc2l6ZT0ic20iIHR5cGU9InNlY29uZGFyeSI+U21hbGwgU2Vjb25kYXJ5PC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiBzaXplPSJkZWZhdWx0IiB0eXBlPSJkZXN0cnVjdGl2ZSI+RGVmYXVsdCBEZXN0cnVjdGl2ZTwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gc2l6ZT0ibGciIHR5cGU9Im91dGxpbmUiPkxhcmdlIE91dGxpbmU8L2RlZXMtYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CiAgICAKICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntzLnF1ZXJ5U2VsZWN0b3JBbGwoImRlZXMtYnV0dG9uIikuZm9yRWFjaCh0PT57dC5hZGRFdmVudExpc3RlbmVyKCJjbGlja2VkIiwoKT0+e2xldCBhPXQucXVlcnlTZWxlY3RvcigiZGVlcy1pY29uIik7aWYoYSl7bGV0IHI9YS5nZXRBdHRyaWJ1dGUoImljb25GQSIpfHwidW5rbm93biI7Y29uc29sZS5sb2coYEljb24gYnV0dG9uIGNsaWNrZWQ6ICR7cn1gKX19KX0pfX0+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyIzLiBCdXR0b25zIHdpdGggSWNvbnMifSAuc3VidGl0bGU9JHsiQ29tYmluaW5nIGljb25zIHdpdGggdGV4dCBmb3IgZW5oYW5jZWQgdmlzdWFsIGNvbW11bmljYXRpb24ifT4KICAgICAgICA8ZGl2IGNsYXNzPSJpY29uLXJvdyI+CiAgICAgICAgICA8ZGVlcy1idXR0b24+CiAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0iZmE6cGx1cyI+PC9kZWVzLWljb24+CiAgICAgICAgICAgIEFkZCBJdGVtCiAgICAgICAgICA8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9ImRlc3RydWN0aXZlIj4KICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJmYTp0cmFzaCI+PC9kZWVzLWljb24+CiAgICAgICAgICAgIERlbGV0ZQogICAgICAgICAgPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiB0eXBlPSJvdXRsaW5lIj4KICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6RG93bmxvYWQiPjwvZGVlcy1pY29uPgogICAgICAgICAgICBEb3dubG9hZAogICAgICAgICAgPC9kZWVzLWJ1dHRvbj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iaWNvbi1yb3ciPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9InNlY29uZGFyeSIgc2l6ZT0ic20iPgogICAgICAgICAgICA8ZGVlcy1pY29uIGljb249ImZhOmdlYXIiPjwvZGVlcy1pY29uPgogICAgICAgICAgICBTZXR0aW5ncwogICAgICAgICAgPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiB0eXBlPSJnaG9zdCI+CiAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0iZmE6Y2FyZXRMZWZ0Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgQmFjawogICAgICAgICAgPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiB0eXBlPSJnaG9zdCI+CiAgICAgICAgICAgIE5leHQKICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJmYTpjYXJldFJpZ2h0Ij48L2RlZXMtaWNvbj4KICAgICAgICAgIDwvZGVlcy1idXR0b24+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9Imljb24tcm93Ij4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiBzaXplPSJpY29uIiB0eXBlPSJkZWZhdWx0Ij4KICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJmYTpwbHVzIj48L2RlZXMtaWNvbj4KICAgICAgICAgIDwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gc2l6ZT0iaWNvbiIgdHlwZT0ic2Vjb25kYXJ5Ij4KICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJmYTpnZWFyIj48L2RlZXMtaWNvbj4KICAgICAgICAgIDwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gc2l6ZT0iaWNvbiIgdHlwZT0ib3V0bGluZSI+CiAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOlNlYXJjaCI+PC9kZWVzLWljb24+CiAgICAgICAgICA8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHNpemU9Imljb24iIHR5cGU9Imdob3N0Ij4KICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6TW9yZVZlcnRpY2FsIj48L2RlZXMtaWNvbj4KICAgICAgICAgIDwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gc2l6ZT0iaWNvbiIgdHlwZT0iZGVzdHJ1Y3RpdmUiPgogICAgICAgICAgICA8ZGVlcy1pY29uIGljb249ImZhOnRyYXNoIj48L2RlZXMtaWNvbj4KICAgICAgICAgIDwvZGVlcy1idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57cy5xdWVyeVNlbGVjdG9yQWxsKCJkZWVzLWJ1dHRvbiIpLmZvckVhY2godD0+e3QuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2tlZCIsKCk9PntsZXQgYT10LmdldEF0dHJpYnV0ZSgiaWNvbiIpfHwibm9uZSIscj10LmdldEF0dHJpYnV0ZSgiaWNvblBvc2l0aW9uIil8fCJsZWZ0Ijtjb25zb2xlLmxvZyhgSWNvbiBwcm9wZXJ0eSBidXR0b246IGljb249JHthfSwgcG9zaXRpb249JHtyfWApfSl9KX19PgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiNC4gSWNvbnMgdmlhIFByb3BlcnR5In0gLnN1YnRpdGxlPSR7IlNpbXBsaWZpZWQgaWNvbiBzeW50YXggdXNpbmcgdGhlIGljb24gcHJvcGVydHkifT4KICAgICAgICA8ZGl2IGNsYXNzPSJpY29uLXJvdyI+CiAgICAgICAgICA8ZGVlcy1idXR0b24gaWNvbj0iZmE6cGx1cyI+QWRkIEl0ZW08L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9ImRlc3RydWN0aXZlIiBpY29uPSJmYTp0cmFzaCI+RGVsZXRlPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiB0eXBlPSJvdXRsaW5lIiBpY29uPSJsdWNpZGU6RG93bmxvYWQiPkRvd25sb2FkPC9kZWVzLWJ1dHRvbj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iaWNvbi1yb3ciPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9InNlY29uZGFyeSIgc2l6ZT0ic20iIGljb249ImZhOmdlYXIiPlNldHRpbmdzPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiB0eXBlPSJnaG9zdCIgaWNvbj0iZmE6Y2FyZXRMZWZ0Ij5CYWNrPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiB0eXBlPSJnaG9zdCIgaWNvbj0iZmE6Y2FyZXRSaWdodCIgaWNvblBvc2l0aW9uPSJyaWdodCI+TmV4dDwvZGVlcy1idXR0b24+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9Imljb24tcm93Ij4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiBzaXplPSJpY29uIiB0eXBlPSJkZWZhdWx0IiBpY29uPSJmYTpwbHVzIj48L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHNpemU9Imljb24iIHR5cGU9InNlY29uZGFyeSIgaWNvbj0ibHVjaWRlOlNldHRpbmdzIj48L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHNpemU9Imljb24iIHR5cGU9Im91dGxpbmUiIGljb249Imx1Y2lkZTpTZWFyY2giPjwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gc2l6ZT0iaWNvbiIgdHlwZT0iZ2hvc3QiIGljb249Imx1Y2lkZTpNb3JlVmVydGljYWwiPjwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gc2l6ZT0iaWNvbiIgdHlwZT0iZGVzdHJ1Y3RpdmUiIGljb249ImZhOnRyYXNoIj48L2RlZXMtYnV0dG9uPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOiAxNnB4OyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2RlLXNuaXBwZXQiPgogICAgICAgICAgICAmbHQ7ZGVlcy1idXR0b24gaWNvbj0iZmE6cGx1cyImZ3Q7QWRkIEl0ZW0mbHQ7L2RlZXMtYnV0dG9uJmd0Ozxicj4KICAgICAgICAgICAgJmx0O2RlZXMtYnV0dG9uIGljb249ImZhOmNhcmV0UmlnaHQiIGljb25Qb3NpdGlvbj0icmlnaHQiJmd0O05leHQmbHQ7L2RlZXMtYnV0dG9uJmd0OwogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57bGV0IGU9cy5xdWVyeVNlbGVjdG9yKCdkZWVzLWJ1dHRvbltzdGF0dXM9InBlbmRpbmciXScpLHQ9cy5xdWVyeVNlbGVjdG9yKCdkZWVzLWJ1dHRvbltzdGF0dXM9InN1Y2Nlc3MiXScpLGE9cy5xdWVyeVNlbGVjdG9yKCdkZWVzLWJ1dHRvbltzdGF0dXM9ImVycm9yIl0nKTtlJiZzZXRUaW1lb3V0KCgpPT57Y29uc29sZS5sb2coIlBlbmRpbmcgYnV0dG9uIGlzIHNob3dpbmcgbG9hZGluZyBzdGF0ZSIpfSwxZTMpLHQmJnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2tlZCIsKCk9Pntjb25zb2xlLmxvZygiU3VjY2VzcyBzdGF0ZSBidXR0b24gY2xpY2tlZCIpfSksYSYmYS5hZGRFdmVudExpc3RlbmVyKCJjbGlja2VkIiwoKT0+e2NvbnNvbGUubG9nKCJFcnJvciBzdGF0ZSBidXR0b24gY2xpY2tlZCIpfSl9fT4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjUuIEJ1dHRvbiBTdGF0ZXMifSAuc3VidGl0bGU9JHsiRGlmZmVyZW50IHN0YXRlcyB0byBpbmRpY2F0ZSBidXR0b24gc3RhdHVzIGFuZCBsb2FkaW5nIGNvbmRpdGlvbnMifT4KICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tZ3JvdXAiPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHN0YXR1cz0ibm9ybWFsIj5Ob3JtYWw8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHN0YXR1cz0icGVuZGluZyI+UHJvY2Vzc2luZy4uLjwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gc3RhdHVzPSJzdWNjZXNzIj5TdWNjZXNzITwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gc3RhdHVzPSJlcnJvciI+RXJyb3IhPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiBkaXNhYmxlZD5EaXNhYmxlZDwvZGVlcy1idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgICAgCiAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWdyb3VwIiBzdHlsZT0ibWFyZ2luLXRvcDogMTZweDsiPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9InNlY29uZGFyeSIgc3RhdHVzPSJwZW5kaW5nIiBzaXplPSJzbSI+U21hbGwgTG9hZGluZzwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gdHlwZT0ib3V0bGluZSIgc3RhdHVzPSJwZW5kaW5nIj5EZWZhdWx0IExvYWRpbmc8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9ImRlc3RydWN0aXZlIiBzdGF0dXM9InBlbmRpbmciIHNpemU9ImxnIj5MYXJnZSBMb2FkaW5nPC9kZWVzLWJ1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgogICAgCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57bGV0IGU9cy5xdWVyeVNlbGVjdG9yKCIjY2xpY2stb3V0cHV0IiksdD1zLnF1ZXJ5U2VsZWN0b3IoImRlZXMtYnV0dG9uOmZpcnN0LW9mLXR5cGUiKSxhPXMucXVlcnlTZWxlY3RvcignZGVlcy1idXR0b25bdHlwZT0ic2Vjb25kYXJ5Il0nKSxyPXMucXVlcnlTZWxlY3RvcignZGVlcy1idXR0b25bdHlwZT0iZGVzdHJ1Y3RpdmUiXScpO3QmJmUmJnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2tlZCIsKCk9PntlLnRleHRDb250ZW50PWBDbGlja2VkOiBEZWZhdWx0IGJ1dHRvbiBhdCAke25ldyBEYXRlKCkudG9Mb2NhbGVUaW1lU3RyaW5nKCl9YH0pLGEmJmUmJmEuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2tlZCIsbj0+e2UudGV4dENvbnRlbnQ9YENsaWNrZWQ6IFNlY29uZGFyeSBidXR0b24gd2l0aCBkYXRhOiAke24uZGV0YWlsLmRhdGF9YH0pLHImJmUmJnIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2tlZCIsYXN5bmMoKT0+e2UudGV4dENvbnRlbnQ9IlByb2Nlc3NpbmcuLi4iLGF3YWl0IGx0LnBsdWdpbnMuc21hcnRkZWxheS5kZWxheUZvcigyZTMpLGUudGV4dENvbnRlbnQ9IkFjdGlvbiBjb21wbGV0ZWQhIn0pfX0+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyI2LiBFdmVudCBIYW5kbGluZyJ9IC5zdWJ0aXRsZT0keyJJbnRlcmFjdGl2ZSBleGFtcGxlcyB3aXRoIGNsaWNrIGV2ZW50IGhhbmRsaW5nIn0+CiAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWdyb3VwIj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbj5DbGljayBNZTwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gdHlwZT0ic2Vjb25kYXJ5IiAuZXZlbnREZXRhaWxEYXRhPSR7ImN1c3RvbS1kYXRhLTEyMyJ9PgogICAgICAgICAgICBDbGljayB3aXRoIERhdGEKICAgICAgICAgIDwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gdHlwZT0iZGVzdHJ1Y3RpdmUiPkFzeW5jIEFjdGlvbjwvZGVlcy1idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgICAgCiAgICAgICAgPGRpdiBpZD0iY2xpY2stb3V0cHV0IiBjbGFzcz0iZGVtby1vdXRwdXQiPgogICAgICAgICAgPGVtPkNsaWNrIGEgYnV0dG9uIHRvIHNlZSB0aGUgcmVzdWx0Li4uPC9lbT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgogICAgCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57bGV0IGU9cy5xdWVyeVNlbGVjdG9yKCJkZWVzLWZvcm0iKSx0PXMucXVlcnlTZWxlY3RvcigiI2Zvcm0tb3V0cHV0Iik7ZSYmdCYmZS5hZGRFdmVudExpc3RlbmVyKCJmb3JtRGF0YSIsbj0+e3QuaW5uZXJIVE1MPSI8c3Ryb25nPkZvcm0gc3VibWl0dGVkIHdpdGggZGF0YTo8L3N0cm9uZz48YnI+IitKU09OLnN0cmluZ2lmeShuLmRldGFpbC5kYXRhLG51bGwsMil9KTtsZXQgYT1zLnF1ZXJ5U2VsZWN0b3IoJ2RlZXMtYnV0dG9uW3R5cGU9InNlY29uZGFyeSJdJykscj1zLnF1ZXJ5U2VsZWN0b3IoJ2RlZXMtYnV0dG9uW3R5cGU9Imdob3N0Il0nKTthJiZhLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrZWQiLCgpPT57Y29uc29sZS5sb2coIlNhdmUgRHJhZnQgY2xpY2tlZCIpfSksciYmci5hZGRFdmVudExpc3RlbmVyKCJjbGlja2VkIiwoKT0+e2NvbnNvbGUubG9nKCJDYW5jZWwgY2xpY2tlZCIpfSl9fT4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjcuIEZvcm0gSW50ZWdyYXRpb24ifSAuc3VidGl0bGU9JHsiQnV0dG9ucyB3b3JraW5nIHdpdGhpbiBmb3JtcyB3aXRoIGF1dG9tYXRpYyBzcGFjaW5nIn0+CiAgICAgICAgPGRlZXMtZm9ybT4KICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQgbGFiZWw9Ik5hbWUiIGtleT0ibmFtZSIgcmVxdWlyZWQ+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0IGxhYmVsPSJFbWFpbCIga2V5PSJlbWFpbCIgdHlwZT0iZW1haWwiIHJlcXVpcmVkPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dCBsYWJlbD0iTWVzc2FnZSIga2V5PSJtZXNzYWdlIiBpc011bHRpbGluZT48L2RlZXMtaW5wdXQtdGV4dD4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9InNlY29uZGFyeSI+U2F2ZSBEcmFmdDwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24gdHlwZT0iZ2hvc3QiPkNhbmNlbDwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1mb3JtLXN1Ym1pdD5TdWJtaXQgRm9ybTwvZGVlcy1mb3JtLXN1Ym1pdD4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgICAKICAgICAgICA8ZGl2IGlkPSJmb3JtLW91dHB1dCIgY2xhc3M9ImRlbW8tb3V0cHV0IiBzdHlsZT0id2hpdGUtc3BhY2U6IHByZS13cmFwOyI+CiAgICAgICAgICA8ZW0+U3VibWl0IHRoZSBmb3JtIHRvIHNlZSB0aGUgZGF0YS4uLjwvZW0+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KICAgIAogICAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e3MucXVlcnlTZWxlY3RvckFsbCgiZGVlcy1idXR0b24iKS5mb3JFYWNoKHQ9PntsZXQgYT10LmdldEF0dHJpYnV0ZSgidHlwZSIpO2EmJmNvbnNvbGUubG9nKGBMZWdhY3kgdHlwZSAiJHthfSIgaXMgc3VwcG9ydGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5YCl9KX19PgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiOC4gQmFja3dhcmQgQ29tcGF0aWJpbGl0eSJ9IC5zdWJ0aXRsZT0keyJPbGQgYnV0dG9uIHR5cGVzIGFyZSBhdXRvbWF0aWNhbGx5IG1hcHBlZCB0byBuZXcgdmFyaWFudHMifT4KICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tZ3JvdXAiPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9Im5vcm1hbCI+Tm9ybWFsIOKGkiBEZWZhdWx0PC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiB0eXBlPSJoaWdobGlnaHRlZCI+SGlnaGxpZ2h0ZWQg4oaSIERlc3RydWN0aXZlPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiB0eXBlPSJkaXNjcmVldCI+RGlzY3JlZXQg4oaSIE91dGxpbmU8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9ImJpZyI+QmlnIOKGkiBMYXJnZSBTaXplPC9kZWVzLWJ1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICA8cCBzdHlsZT0ibWFyZ2luLXRvcDogMTZweDsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuNCAxNi4zJSA1Ni45JSkiLCJoc2woMjE1IDIwLjIlIDU1LjElKSIpfTsiPgogICAgICAgICAgVGhlc2UgbGVnYWN5IHR5cGUgdmFsdWVzIGFyZSBtYWludGFpbmVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGJ1dCB3ZSByZWNvbW1lbmQgdXNpbmcgdGhlIG5ldyB2YXJpYW50IHN5c3RlbS4KICAgICAgICA8L3A+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KICAgIAogICAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e2xldCBlPXMucXVlcnlTZWxlY3RvckFsbCgiLnZlcnRpY2FsLWdyb3VwIilbMF0sdD1zLnF1ZXJ5U2VsZWN0b3JBbGwoIi52ZXJ0aWNhbC1ncm91cCIpWzFdO2UmJmUucXVlcnlTZWxlY3RvckFsbCgiZGVlcy1idXR0b24iKS5mb3JFYWNoKChyLG4pPT57ci5hZGRFdmVudExpc3RlbmVyKCJjbGlja2VkIiwoKT0+e2xldCBvPVsiU2F2ZSBDaGFuZ2VzIiwiRGlzY2FyZCIsIkhlbHAiXVtuXTtjb25zb2xlLmxvZyhgQWN0aW9uIGdyb3VwOiAke299IGNsaWNrZWRgKX0pfSksdCYmdC5xdWVyeVNlbGVjdG9yQWxsKCJkZWVzLWJ1dHRvbiIpLmZvckVhY2goKHIsbik9PntyLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrZWQiLCgpPT57bGV0IG89WyJEZWxldGUgQWNjb3VudCIsIkFyY2hpdmUgRGF0YSIsIk5vdCBBdmFpbGFibGUiXVtuXTtuIT09MiYmY29uc29sZS5sb2coYERhbmdlciB6b25lOiAke299IGNsaWNrZWRgKX0pfSl9fT4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IjkuIEFkdmFuY2VkIEV4YW1wbGVzIn0gLnN1YnRpdGxlPSR7IkNvbXBsZXggYnV0dG9uIGNvbmZpZ3VyYXRpb25zIGFuZCByZWFsLXdvcmxkIHVzZSBjYXNlcyJ9PgogICAgICAgIDxkaXYgY2xhc3M9Imhvcml6b250YWwtZ3JvdXAiPgogICAgICAgICAgPGRpdiBjbGFzcz0idmVydGljYWwtZ3JvdXAiPgogICAgICAgICAgICA8aDQgc3R5bGU9Im1hcmdpbjogMCAwIDhweCAwOyBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiA1MDA7Ij5BY3Rpb24gR3JvdXA8L2g0PgogICAgICAgICAgICA8ZGVlcy1idXR0b24gdHlwZT0iZGVmYXVsdCIgc2l6ZT0ic20iPgogICAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOlNhdmUiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgIFNhdmUgQ2hhbmdlcwogICAgICAgICAgICA8L2RlZXMtYnV0dG9uPgogICAgICAgICAgICA8ZGVlcy1idXR0b24gdHlwZT0ic2Vjb25kYXJ5IiBzaXplPSJzbSI+CiAgICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6VW5kbzIiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgIERpc2NhcmQKICAgICAgICAgICAgPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9Imdob3N0IiBzaXplPSJzbSI+CiAgICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6SGVscENpcmNsZSI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgSGVscAogICAgICAgICAgICA8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPC9kaXY+CgogICAgICAgICAgPGRpdiBjbGFzcz0idmVydGljYWwtZ3JvdXAiPgogICAgICAgICAgICA8aDQgc3R5bGU9Im1hcmdpbjogMCAwIDhweCAwOyBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiA1MDA7Ij5EYW5nZXIgWm9uZTwvaDQ+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbiB0eXBlPSJkZXN0cnVjdGl2ZSIgc2l6ZT0ic20iPgogICAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0iZmE6dHJhc2giPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgIERlbGV0ZSBBY2NvdW50CiAgICAgICAgICAgIDwvZGVlcy1idXR0b24+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbiB0eXBlPSJvdXRsaW5lIiBzaXplPSJzbSI+CiAgICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6QXJjaGl2ZSI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgQXJjaGl2ZSBEYXRhCiAgICAgICAgICAgIDwvZGVlcy1idXR0b24+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbiB0eXBlPSJnaG9zdCIgc2l6ZT0ic20iIGRpc2FibGVkPgogICAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOkJhbiI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgTm90IEF2YWlsYWJsZQogICAgICAgICAgICA8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgCiAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDogMjRweDsiPgogICAgICAgICAgPGg0IHN0eWxlPSJtYXJnaW46IDAgMCA4cHggMDsgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogNTAwOyI+Q29kZSBFeGFtcGxlOjwvaDQ+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2RlLXNuaXBwZXQiPgogICAgICAgICAgICAmbHQ7ZGVlcy1idXR0b24gdHlwZT0iZGVmYXVsdCIgc2l6ZT0ic20iIGljb249Imx1Y2lkZTpTYXZlIiBAY2xpY2tlZD0iXCR7aGFuZGxlQ2xpY2t9IiZndDs8YnI+CiAgICAgICAgICAgICZuYnNwOyZuYnNwO1NhdmUgQ2hhbmdlczxicj4KICAgICAgICAgICAgJmx0Oy9kZWVzLWJ1dHRvbiZndDsKICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CiAgPC9kaXY+CmAsImRlbW9GdW5jIil9KTt2YXIgRDIsYnIsb2VzLEhnPWcoKCk9PntwZSgpO2t0KCk7RnZhKCk7aHQoKTtEMj1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sYnI9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LG9lcz0oKCk9PntsZXQgcz1bbmUoImRlZXMtYnV0dG9uIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W10sSCxrPVtdLFM9W10sSSxQPVtdLFI9W10sSyxWPVtdLFc9W107dmFyIG1lPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzQnV0dG9uIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IEI9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7cmVmbGVjdDohMCxoYXNDaGFuZ2VkKCl7cmV0dXJuITB9fSldLHA9W0woKV0sYz1bTCh7dHlwZTpCb29sZWFuLHJlZmxlY3Q6ITB9KV0seD1bTCh7dHlwZTpCb29sZWFufSldLHk9W0woe3R5cGU6U3RyaW5nfSldLE49W0woe3R5cGU6U3RyaW5nfSldLE89W0woe3R5cGU6U3RyaW5nfSldLEg9W0woe3R5cGU6Qm9vbGVhbixyZWZsZWN0OiEwfSldLEk9W0woe3R5cGU6U3RyaW5nLHJlZmxlY3Q6ITB9KV0sSz1bTCh7dHlwZTpTdHJpbmcscmVmbGVjdDohMH0pXSxEMih0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InRleHQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVT0+InRleHQiaW4gVSwiaGFzIiksZ2V0OmkoVT0+VS50ZXh0LCJnZXQiKSxzZXQ6aSgoVSxoZSk9PntVLnRleHQ9aGV9LCJzZXQiKX0sbWV0YWRhdGE6Qn0sbyxsKSxEMih0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImV2ZW50RGV0YWlsRGF0YSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4iZXZlbnREZXRhaWxEYXRhImluIFUsImhhcyIpLGdldDppKFU9PlUuZXZlbnREZXRhaWxEYXRhLCJnZXQiKSxzZXQ6aSgoVSxoZSk9PntVLmV2ZW50RGV0YWlsRGF0YT1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxkLHUpLEQyKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZGlzYWJsZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVT0+ImRpc2FibGVkImluIFUsImhhcyIpLGdldDppKFU9PlUuZGlzYWJsZWQsImdldCIpLHNldDppKChVLGhlKT0+e1UuZGlzYWJsZWQ9aGV9LCJzZXQiKX0sbWV0YWRhdGE6Qn0sYix2KSxEMih0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImlzSGlkZGVuIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFU9PiJpc0hpZGRlbiJpbiBVLCJoYXMiKSxnZXQ6aShVPT5VLmlzSGlkZGVuLCJnZXQiKSxzZXQ6aSgoVSxoZSk9PntVLmlzSGlkZGVuPWhlfSwic2V0Iil9LG1ldGFkYXRhOkJ9LG0sZiksRDIodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0eXBlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFU9PiJ0eXBlImluIFUsImhhcyIpLGdldDppKFU9PlUudHlwZSwiZ2V0Iiksc2V0OmkoKFUsaGUpPT57VS50eXBlPWhlfSwic2V0Iil9LG1ldGFkYXRhOkJ9LE0seiksRDIodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaXplIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFU9PiJzaXplImluIFUsImhhcyIpLGdldDppKFU9PlUuc2l6ZSwiZ2V0Iiksc2V0OmkoKFUsaGUpPT57VS5zaXplPWhlfSwic2V0Iil9LG1ldGFkYXRhOkJ9LEMsXyksRDIodGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzdGF0dXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVT0+InN0YXR1cyJpbiBVLCJoYXMiKSxnZXQ6aShVPT5VLnN0YXR1cywiZ2V0Iiksc2V0OmkoKFUsaGUpPT57VS5zdGF0dXM9aGV9LCJzZXQiKX0sbWV0YWRhdGE6Qn0sJCxFKSxEMih0aGlzLG51bGwsSCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Imluc2lkZUZvcm0iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVT0+Imluc2lkZUZvcm0iaW4gVSwiaGFzIiksZ2V0OmkoVT0+VS5pbnNpZGVGb3JtLCJnZXQiKSxzZXQ6aSgoVSxoZSk9PntVLmluc2lkZUZvcm09aGV9LCJzZXQiKX0sbWV0YWRhdGE6Qn0sayxTKSxEMih0aGlzLG51bGwsSSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Imljb24iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVT0+Imljb24iaW4gVSwiaGFzIiksZ2V0OmkoVT0+VS5pY29uLCJnZXQiKSxzZXQ6aSgoVSxoZSk9PntVLmljb249aGV9LCJzZXQiKX0sbWV0YWRhdGE6Qn0sUCxSKSxEMih0aGlzLG51bGwsSyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Imljb25Qb3NpdGlvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4iaWNvblBvc2l0aW9uImluIFUsImhhcyIpLGdldDppKFU9PlUuaWNvblBvc2l0aW9uLCJnZXQiKSxzZXQ6aSgoVSxoZSk9PntVLmljb25Qb3NpdGlvbj1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxWLFcpLEQyKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOkJ9LG51bGwsdCksbWU9YT1lLnZhbHVlLEImJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Qn0pfXN0YXRpYyBkZW1vPU92YTtzdGF0aWMgZGVtb0dyb3Vwcz1bIkJ1dHRvbiJdOyNlPWJyKHRoaXMsbyx2b2lkIDApO2dldCB0ZXh0KCl7cmV0dXJuIHRoaXMuI2V9c2V0IHRleHQoQil7dGhpcy4jZT1CfSN0PShicih0aGlzLGwpLGJyKHRoaXMsZCx2b2lkIDApKTtnZXQgZXZlbnREZXRhaWxEYXRhKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGV2ZW50RGV0YWlsRGF0YShCKXt0aGlzLiN0PUJ9I2E9KGJyKHRoaXMsdSksYnIodGhpcyxiLCExKSk7Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuI2F9c2V0IGRpc2FibGVkKEIpe3RoaXMuI2E9Qn0jcz0oYnIodGhpcyx2KSxicih0aGlzLG0sITEpKTtnZXQgaXNIaWRkZW4oKXtyZXR1cm4gdGhpcy4jc31zZXQgaXNIaWRkZW4oQil7dGhpcy4jcz1CfSNpPShicih0aGlzLGYpLGJyKHRoaXMsTSwiZGVmYXVsdCIpKTtnZXQgdHlwZSgpe3JldHVybiB0aGlzLiNpfXNldCB0eXBlKEIpe3RoaXMuI2k9Qn0jcj0oYnIodGhpcyx6KSxicih0aGlzLEMsImRlZmF1bHQiKSk7Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy4jcn1zZXQgc2l6ZShCKXt0aGlzLiNyPUJ9I289KGJyKHRoaXMsXyksYnIodGhpcywkLCJub3JtYWwiKSk7Z2V0IHN0YXR1cygpe3JldHVybiB0aGlzLiNvfXNldCBzdGF0dXMoQil7dGhpcy4jbz1CfSNuPShicih0aGlzLEUpLGJyKHRoaXMsaywhMSkpO2dldCBpbnNpZGVGb3JtKCl7cmV0dXJuIHRoaXMuI259c2V0IGluc2lkZUZvcm0oQil7dGhpcy4jbj1CfSNsPShicih0aGlzLFMpLGJyKHRoaXMsUCx2b2lkIDApKTtnZXQgaWNvbigpe3JldHVybiB0aGlzLiNsfXNldCBpY29uKEIpe3RoaXMuI2w9Qn0jYz0oYnIodGhpcyxSKSxicih0aGlzLFYsImxlZnQiKSk7Z2V0IGljb25Qb3NpdGlvbigpe3JldHVybiB0aGlzLiNjfXNldCBpY29uUG9zaXRpb24oQil7dGhpcy4jYz1CfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSxicih0aGlzLFcpfWFzeW5jIGNvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSwhdGhpcy5pbnNpZGVGb3JtJiZ0aGlzLmNsb3Nlc3QoImRlZXMtZm9ybSIpJiYodGhpcy5pbnNpZGVGb3JtPSEwKX1zdGF0aWMgc3R5bGVzPVtxZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgLyogVE9ETzogTWlncmF0ZSBoYXJkY29kZWQgdmFsdWVzIHRvIC0tZGVlcy0qIENTUyB2YXJpYWJsZXMgKi8KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogICAgICB9CiAgICAgIDpob3N0KFtoaWRkZW5dKSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgLyogRm9ybSBzcGFjaW5nIHN0eWxlcyAqLwogICAgICA6aG9zdChbaW5zaWRlLWZvcm1dKSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgfQogICAgICAKICAgICAgOmhvc3QoW2luc2lkZS1mb3JtXTpsYXN0LWNoaWxkKSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgfQogICAgICAKICAgICAgZGVlcy1mb3JtW2hvcml6b250YWwtbGF5b3V0XSA6aG9zdChbaW5zaWRlLWZvcm1dKSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIG1hcmdpbi1yaWdodDogMTZweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICB9CiAgICAgIAogICAgICBkZWVzLWZvcm1baG9yaXpvbnRhbC1sYXlvdXRdIDpob3N0KFtpbnNpZGUtZm9ybV06bGFzdC1jaGlsZCkgewogICAgICAgIG1hcmdpbi1yaWdodDogMDsKICAgICAgfQoKICAgICAgLmJ1dHRvbiB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTsKICAgICAgICBnYXA6IDhweDsKICAgICAgfQoKICAgICAgLyogU2l6ZSB2YXJpYW50cyAqLwogICAgICAuYnV0dG9uLnNpemUtZGVmYXVsdCB7CiAgICAgICAgaGVpZ2h0OiAzNnB4OwogICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIH0KCiAgICAgIC5idXR0b24uc2l6ZS1zbSB7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIHBhZGRpbmc6IDAgMTJweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgIH0KCiAgICAgIC5idXR0b24uc2l6ZS1sZyB7CiAgICAgICAgaGVpZ2h0OiA0NHB4OwogICAgICAgIHBhZGRpbmc6IDAgMjRweDsKICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgIH0KCiAgICAgIC5idXR0b24uc2l6ZS1pY29uIHsKICAgICAgICBoZWlnaHQ6IDM2cHg7CiAgICAgICAgd2lkdGg6IDM2cHg7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgfQoKICAgICAgLyogRGVmYXVsdCB2YXJpYW50ICovCiAgICAgIC5idXR0b24uZGVmYXVsdCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDEwMCUpIiwiaHNsKDIxNSAyMC4yJSAxMS44JSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjMgMjUlIDguOCUpIiwiaHNsKDIxMCA0MCUgOTglKSIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDIxNC4zIDMxLjglIDkxLjQlKSIsImhzbCgyMTUgMjAuMiUgMTYuOCUpIil9OwogICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDJweCAwIHJnYigwIDAgMCAvIDAuMDUpOwogICAgICB9CgogICAgICAuYnV0dG9uLmRlZmF1bHQ6aG92ZXI6bm90KC5kaXNhYmxlZCkgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDQwJSA5Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDEwLjIlKSIpfTsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE0LjMgMzEuOCUgODUlKSIsImhzbCgyMTUgMjAuMiUgMjAlKSIpfTsKICAgICAgfQoKICAgICAgLmJ1dHRvbi5kZWZhdWx0OmFjdGl2ZTpub3QoLmRpc2FibGVkKSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTQuMyAzMS44JSA5MS40JSkiLCJoc2woMjE1IDIwLjIlIDklKSIpfTsKICAgICAgfQoKICAgICAgLyogRGVzdHJ1Y3RpdmUgdmFyaWFudCAqLwogICAgICAuYnV0dG9uLmRlc3RydWN0aXZlIHsKICAgICAgICBiYWNrZ3JvdW5kOiBoc2woMCA4NC4yJSA2MC4yJSk7CiAgICAgICAgY29sb3I6IGhzbCgwIDAlIDk4JSk7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgIH0KCiAgICAgIC5idXR0b24uZGVzdHJ1Y3RpdmU6aG92ZXI6bm90KC5kaXNhYmxlZCkgewogICAgICAgIGJhY2tncm91bmQ6IGhzbCgwIDg0LjIlIDU2LjIlKTsKICAgICAgfQoKICAgICAgLmJ1dHRvbi5kZXN0cnVjdGl2ZTphY3RpdmU6bm90KC5kaXNhYmxlZCkgewogICAgICAgIGJhY2tncm91bmQ6IGhzbCgwIDg0LjIlIDUyLjIlKTsKICAgICAgfQoKICAgICAgLyogT3V0bGluZSB2YXJpYW50ICovCiAgICAgIC5idXR0b24ub3V0bGluZSB7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjMgMjUlIDguOCUpIiwiaHNsKDIxMCA0MCUgOTglKSIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDIxNC4zIDMxLjglIDkxLjQlKSIsImhzbCgyMTUgMjAuMiUgMjEuOCUpIil9OwogICAgICB9CgogICAgICAuYnV0dG9uLm91dGxpbmU6aG92ZXI6bm90KC5kaXNhYmxlZCkgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDQwJSA5Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDE2LjglKSIpfTsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE0LjMgMzEuOCUgODUlKSIsImhzbCgyMTUgMjAuMiUgMjYuOCUpIil9OwogICAgICB9CgogICAgICAuYnV0dG9uLm91dGxpbmU6YWN0aXZlOm5vdCguZGlzYWJsZWQpIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxNC4zIDMxLjglIDkxLjQlKSIsImhzbCgyMTUgMjAuMiUgMTMuOCUpIil9OwogICAgICB9CgogICAgICAvKiBTZWNvbmRhcnkgdmFyaWFudCAqLwogICAgICAuYnV0dG9uLnNlY29uZGFyeSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgNDAlIDk2LjElKSIsImhzbCgyMTUgMjAuMiUgMTYuOCUpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS4zIDI1JSA4LjglKSIsImhzbCgyMTAgNDAlIDk4JSkiKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgIH0KCiAgICAgIC5idXR0b24uc2Vjb25kYXJ5OmhvdmVyOm5vdCguZGlzYWJsZWQpIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxNC4zIDMxLjglIDkxLjQlKSIsImhzbCgyMTUgMjAuMiUgMTMuOCUpIil9OwogICAgICB9CgogICAgICAuYnV0dG9uLnNlY29uZGFyeTphY3RpdmU6bm90KC5kaXNhYmxlZCkgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjE0LjMgMzEuOCUgODUlKSIsImhzbCgyMTUgMjAuMiUgMTEuOCUpIil9OwogICAgICB9CgogICAgICAvKiBHaG9zdCB2YXJpYW50ICovCiAgICAgIC5idXR0b24uZ2hvc3QgewogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS4zIDI1JSA4LjglKSIsImhzbCgyMTAgNDAlIDk4JSkiKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgIH0KCiAgICAgIC5idXR0b24uZ2hvc3Q6aG92ZXI6bm90KC5kaXNhYmxlZCkgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDQwJSA5Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDE2LjglKSIpfTsKICAgICAgfQoKICAgICAgLmJ1dHRvbi5naG9zdDphY3RpdmU6bm90KC5kaXNhYmxlZCkgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjE0LjMgMzEuOCUgOTEuNCUpIiwiaHNsKDIxNSAyMC4yJSAxMy44JSkiKX07CiAgICAgIH0KCiAgICAgIC8qIExpbmsgdmFyaWFudCAqLwogICAgICAuYnV0dG9uLmxpbmsgewogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDUxLjIlKSIsImhzbCgyMTMuMSA5My45JSA2Ny44JSkiKX07CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogICAgICAgIHRleHQtZGVjb3JhdGlvbi1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KCiAgICAgIC5idXR0b24ubGluazpob3Zlcjpub3QoLmRpc2FibGVkKSB7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBjdXJyZW50Q29sb3I7CiAgICAgIH0KCiAgICAgIC8qIFN0YXR1cyBzdGF0ZXMgKi8KICAgICAgLmJ1dHRvbi5wZW5kaW5nLAogICAgICAuYnV0dG9uLnN1Y2Nlc3MsCiAgICAgIC5idXR0b24uZXJyb3IgewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIHBhZGRpbmctbGVmdDogMzZweDsgLyogU3BhY2UgZm9yIHNwaW5uZXIgKi8KICAgICAgfQogICAgICAKICAgICAgLmJ1dHRvbi5zaXplLXNtLnBlbmRpbmcsCiAgICAgIC5idXR0b24uc2l6ZS1zbS5zdWNjZXNzLAogICAgICAuYnV0dG9uLnNpemUtc20uZXJyb3IgewogICAgICAgIHBhZGRpbmctbGVmdDogMzJweDsKICAgICAgfQogICAgICAKICAgICAgLmJ1dHRvbi5zaXplLWxnLnBlbmRpbmcsCiAgICAgIC5idXR0b24uc2l6ZS1sZy5zdWNjZXNzLAogICAgICAuYnV0dG9uLnNpemUtbGcuZXJyb3IgewogICAgICAgIHBhZGRpbmctbGVmdDogNDRweDsKICAgICAgfQoKICAgICAgLmJ1dHRvbi5wZW5kaW5nIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDUxLjIlKSIsImhzbCgyMTMuMSA5My45JSA2Ny44JSAvIDAuMikiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxMDAlKSIsImhzbCgyMTMuMSA5My45JSA2Ny44JSkiKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgIH0KCiAgICAgIC5idXR0b24uc3VjY2VzcyB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgxNDIuMSA3Ni4yJSAzNi4zJSkiLCJoc2woMTQyLjEgNzAuNiUgNDUuMyUgLyAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTAwJSkiLCJoc2woMTQyLjEgNzAuNiUgNDUuMyUpIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgICB9CgogICAgICAuYnV0dG9uLmVycm9yIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgODQuMiUgNjAuMiUpIiwiaHNsKDAgNjIuOCUgNzAuNiUgLyAwLjIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTAwJSkiLCJoc2woMCA2Mi44JSA3MC42JSkiKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgIH0KCiAgICAgIC8qIERpc2FibGVkIHN0YXRlICovCiAgICAgIC5idXR0b24uZGlzYWJsZWQgewogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICAvKiBIaWRkZW4gc3RhdGUgKi8KICAgICAgLmJ1dHRvbi5oaWRkZW4gewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KCiAgICAgIC8qIEZvY3VzIHN0YXRlICovCiAgICAgIC5idXR0b246Zm9jdXMtdmlzaWJsZSB7CiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUpIiwiaHNsKDIxMy4xIDkzLjklIDY3LjglKSIpfTsKICAgICAgICBvdXRsaW5lLW9mZnNldDogMnB4OwogICAgICB9CgogICAgICAvKiBMb2FkaW5nIHNwaW5uZXIgKi8KICAgICAgZGVlcy1zcGlubmVyIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgbGVmdDogMTBweDsKICAgICAgICB3aWR0aDogMTZweDsKICAgICAgICBoZWlnaHQ6IDE2cHg7CiAgICAgIH0KICAgICAgCiAgICAgIC5idXR0b24uc2l6ZS1zbSBkZWVzLXNwaW5uZXIgewogICAgICAgIGxlZnQ6IDhweDsKICAgICAgICB3aWR0aDogMTRweDsKICAgICAgICBoZWlnaHQ6IDE0cHg7CiAgICAgIH0KICAgICAgCiAgICAgIC5idXR0b24uc2l6ZS1sZyBkZWVzLXNwaW5uZXIgewogICAgICAgIGxlZnQ6IDE0cHg7CiAgICAgICAgd2lkdGg6IDE4cHg7CiAgICAgICAgaGVpZ2h0OiAxOHB4OwogICAgICB9CiAgICAgIAogICAgICAvKiBJY29uIHNpemluZyB3aXRoaW4gYnV0dG9ucyAqLwogICAgICAuYnV0dG9uIGRlZXMtaWNvbiB7CiAgICAgICAgd2lkdGg6IDE2cHg7CiAgICAgICAgaGVpZ2h0OiAxNnB4OwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CiAgICAgIAogICAgICAuYnV0dG9uLnNpemUtc20gZGVlcy1pY29uIHsKICAgICAgICB3aWR0aDogMTRweDsKICAgICAgICBoZWlnaHQ6IDE0cHg7CiAgICAgIH0KICAgICAgCiAgICAgIC5idXR0b24uc2l6ZS1sZyBkZWVzLWljb24gewogICAgICAgIHdpZHRoOiAxOHB4OwogICAgICAgIGhlaWdodDogMThweDsKICAgICAgfQoKICAgICAgLyogVGV4dCBhbGlnbm1lbnQgKi8KICAgICAgLnRleHRib3ggewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgfQoKICAgIGBdO2V4dHJhY3RMaWdodERvbSgpe2xldCBCPXRoaXMucXVlcnlTZWxlY3RvcigiZGVlcy1pY29uIiksVT1BcnJheS5mcm9tKHRoaXMuY2hpbGROb2RlcykuZmlsdGVyKGhlPT5oZS5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFKS5tYXAoaGU9PmhlLnRleHRDb250ZW50Py50cmltKCkpLmZpbHRlcihCb29sZWFuKS5qb2luKCIgIik7aWYoVSYmIXRoaXMudGV4dCYmKHRoaXMudGV4dD1VKSxCKXtsZXQgaGU9Qi5pY29ufHxCLmdldEF0dHJpYnV0ZSgiaWNvbiIpfHwoQi5pY29uRkE/YGZhOiR7Qi5pY29uRkF9YDpudWxsKTtpZihoZSl7bGV0IEY9QXJyYXkuZnJvbSh0aGlzLmNoaWxkTm9kZXMpLGo9Ri5pbmRleE9mKEIpLHVlPUYuZmlsdGVyKGxlPT5sZS5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFJiZsZS50ZXh0Q29udGVudD8udHJpbSgpKTtpZih1ZS5sZW5ndGg+MCl7bGV0IGxlPUYuaW5kZXhPZih1ZVswXSk7dGhpcy5pY29uUG9zaXRpb249ajxsZT8ibGVmdCI6InJpZ2h0In10aGlzLmljb249aGV9Qi5yZW1vdmUoKX10aGlzLmlubmVySFRNTD0iIn1yZW5kZXIoKXtsZXQgVT17bm9ybWFsOiJkZWZhdWx0IixoaWdobGlnaHRlZDoiZGVzdHJ1Y3RpdmUiLGRpc2NyZWV0OiJvdXRsaW5lIixiaWc6ImRlZmF1bHQifVt0aGlzLnR5cGVdfHx0aGlzLnR5cGUsaGU9dGhpcy50eXBlPT09ImJpZyI/ImxnIjp0aGlzLnNpemUsRj10aGlzLmljb25Qb3NpdGlvbj09PSJsZWZ0IiYmdGhpcy5pY29uP3dgPGRlZXMtaWNvbiAuaWNvbj0ke3RoaXMuaWNvbn0+PC9kZWVzLWljb24+YDoiIixqPXRoaXMuaWNvblBvc2l0aW9uPT09InJpZ2h0IiYmdGhpcy5pY29uP3dgPGRlZXMtaWNvbiAuaWNvbj0ke3RoaXMuaWNvbn0+PC9kZWVzLWljb24+YDoiIix1ZT1oZT09PSJpY29uIiYmdGhpcy5pY29uO3JldHVybiB3YAogICAgICA8ZGl2CiAgICAgICAgY2xhc3M9ImJ1dHRvbiAke3RoaXMuaXNIaWRkZW4/ImhpZGRlbiI6IiJ9ICR7VX0gc2l6ZS0ke2hlfSAke3RoaXMuc3RhdHVzfSAke3RoaXMuZGlzYWJsZWQ/ImRpc2FibGVkIjoiIn0iCiAgICAgICAgQGNsaWNrPSIke3RoaXMuZGlzcGF0Y2hDbGlja30iCiAgICAgID4KICAgICAgICAke3RoaXMuc3RhdHVzPT09Im5vcm1hbCI/d2BgOndgCiAgICAgICAgICA8ZGVlcy1zcGlubmVyCiAgICAgICAgICAgIC5ibnc9JHshMH0KICAgICAgICAgICAgc3RhdHVzPSIke3RoaXMuc3RhdHVzfSIKICAgICAgICAgICAgc2l6ZT0iJHtoZT09PSJzbSI/MTQ6aGU9PT0ibGciPzE4OjE2fSIKICAgICAgICAgID48L2RlZXMtc3Bpbm5lcj4KICAgICAgICBgfQogICAgICAgICR7Rn0KICAgICAgICAke3VlPyIiOndgPGRpdiBjbGFzcz0idGV4dGJveCI+JHt0aGlzLnRleHR8fCJCdXR0b24ifTwvZGl2PmB9CiAgICAgICAgJHtqfQogICAgICA8L2Rpdj4KICAgIGB9YXN5bmMgZGlzcGF0Y2hDbGljaygpe3RoaXMuZGlzYWJsZWR8fHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNsaWNrZWQiLHtkZXRhaWw6e2RhdGE6dGhpcy5ldmVudERldGFpbERhdGF9LGJ1YmJsZXM6ITB9KSl9YXN5bmMgZmlyc3RVcGRhdGVkKCl7dGhpcy5leHRyYWN0TGlnaHREb20oKX1zdGF0aWN7YnIoYSx0KX19O3JldHVybiBtZT1hfSkoKX0pO3ZhciB1NCxabixuZXMsSjFlPWcoKCk9PnthYmEoKTt2bygpO0VyKCk7cGUoKTtHYSgpO2ZyKCk7SGcoKTtodCgpO21yKCk7dTQ9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LFpuPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxuZXM9KCgpPT57bGV0IHM9W3ZiKCksbmUoImRlZXMtc3RhdHNncmlkIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W107dmFyIEg9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNTdGF0c0dyaWQiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgaz10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOkFycmF5fSldLHA9W0woe3R5cGU6TnVtYmVyfSldLGM9W0woe3R5cGU6TnVtYmVyfSldLHg9W0woe3R5cGU6QXJyYXl9KV0seT1bWSgpXSxOPVtZKCldLE89W1koKV0sdTQodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0aWxlcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4idGlsZXMiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy50aWxlcywiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLnRpbGVzPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sbyxsKSx1NCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1pblRpbGVXaWR0aCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4ibWluVGlsZVdpZHRoImluIFMsImhhcyIpLGdldDppKFM9PlMubWluVGlsZVdpZHRoLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MubWluVGlsZVdpZHRoPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sZCx1KSx1NCh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImdhcCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4iZ2FwImluIFMsImhhcyIpLGdldDppKFM9PlMuZ2FwLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MuZ2FwPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sYix2KSx1NCh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImdyaWRBY3Rpb25zIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJncmlkQWN0aW9ucyJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLmdyaWRBY3Rpb25zLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MuZ3JpZEFjdGlvbnM9SX0sInNldCIpfSxtZXRhZGF0YTprfSxtLGYpLHU0KHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY29udGV4dE1lbnVWaXNpYmxlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJjb250ZXh0TWVudVZpc2libGUiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5jb250ZXh0TWVudVZpc2libGUsImdldCIpLHNldDppKChTLEkpPT57Uy5jb250ZXh0TWVudVZpc2libGU9SX0sInNldCIpfSxtZXRhZGF0YTprfSxNLHopLHU0KHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY29udGV4dE1lbnVQb3NpdGlvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4iY29udGV4dE1lbnVQb3NpdGlvbiJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLmNvbnRleHRNZW51UG9zaXRpb24sImdldCIpLHNldDppKChTLEkpPT57Uy5jb250ZXh0TWVudVBvc2l0aW9uPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sQyxfKSx1NCh0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNvbnRleHRNZW51QWN0aW9ucyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4iY29udGV4dE1lbnVBY3Rpb25zImluIFMsImhhcyIpLGdldDppKFM9PlMuY29udGV4dE1lbnVBY3Rpb25zLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MuY29udGV4dE1lbnVBY3Rpb25zPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sJCxFKSx1NChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTprfSxudWxsLHQpLEg9YT1lLnZhbHVlLGsmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6a30pfXN0YXRpYyBkZW1vPXRiYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIkRhdGEgVmlldyJdOyNlPVpuKHRoaXMsbyxbXSk7Z2V0IHRpbGVzKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHRpbGVzKGspe3RoaXMuI2U9a30jdD0oWm4odGhpcyxsKSxabih0aGlzLGQsMjUwKSk7Z2V0IG1pblRpbGVXaWR0aCgpe3JldHVybiB0aGlzLiN0fXNldCBtaW5UaWxlV2lkdGgoayl7dGhpcy4jdD1rfSNhPShabih0aGlzLHUpLFpuKHRoaXMsYiwxNikpO2dldCBnYXAoKXtyZXR1cm4gdGhpcy4jYX1zZXQgZ2FwKGspe3RoaXMuI2E9a30jcz0oWm4odGhpcyx2KSxabih0aGlzLG0sW10pKTtnZXQgZ3JpZEFjdGlvbnMoKXtyZXR1cm4gdGhpcy4jc31zZXQgZ3JpZEFjdGlvbnMoayl7dGhpcy4jcz1rfSNpPShabih0aGlzLGYpLFpuKHRoaXMsTSwhMSkpO2dldCBjb250ZXh0TWVudVZpc2libGUoKXtyZXR1cm4gdGhpcy4jaX1zZXQgY29udGV4dE1lbnVWaXNpYmxlKGspe3RoaXMuI2k9a30jcj0oWm4odGhpcyx6KSxabih0aGlzLEMse3g6MCx5OjB9KSk7Z2V0IGNvbnRleHRNZW51UG9zaXRpb24oKXtyZXR1cm4gdGhpcy4jcn1zZXQgY29udGV4dE1lbnVQb3NpdGlvbihrKXt0aGlzLiNyPWt9I289KFpuKHRoaXMsXyksWm4odGhpcywkLFtdKSk7Z2V0IGNvbnRleHRNZW51QWN0aW9ucygpe3JldHVybiB0aGlzLiNvfXNldCBjb250ZXh0TWVudUFjdGlvbnMoayl7dGhpcy4jbz1rfXN0YXRpYyBzdHlsZXM9W3FlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICAvKiBUT0RPOiBNaWdyYXRlIGhhcmRjb2RlZCB2YWx1ZXMgdG8gLS1kZWVzLSogQ1NTIHZhcmlhYmxlcyAqLwogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZm9udC1mYW1pbHk6ICR7QmF9OwogICAgICB9CgogICAgICAvKiBDU1MgVmFyaWFibGVzIGZvciBjb25zaXN0ZW50IHNwYWNpbmcgYW5kIHNpemluZyAqLwogICAgICA6aG9zdCB7CiAgICAgICAgLS1ncmlkLWdhcDogMTJweDsKICAgICAgICAtLXRpbGUtcGFkZGluZzogMTZweDsKICAgICAgICAtLWhlYWRlci1zcGFjaW5nOiAxMnB4OwogICAgICAgIC0tY29udGVudC1taW4taGVpZ2h0OiA0MHB4OwogICAgICAgIC0tdmFsdWUtZm9udC1zaXplOiAyNnB4OwogICAgICAgIC0tdW5pdC1mb250LXNpemU6IDE0cHg7CiAgICAgICAgLS1sYWJlbC1mb250LXNpemU6IDEycHg7CiAgICAgICAgLS10aXRsZS1mb250LXNpemU6IDEzcHg7CiAgICAgICAgLS1kZXNjcmlwdGlvbi1zcGFjaW5nOiA4cHg7CiAgICAgICAgLS1ib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgLS10cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjE1czsKICAgICAgfQoKICAgICAgLyogR3JpZCBMYXlvdXQgKi8KICAgICAgLmdyaWQtaGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIG1hcmdpbi1ib3R0b206IGNhbGModmFyKC0tZ3JpZC1nYXApICogMS41KTsKICAgICAgICBtaW4taGVpZ2h0OiA0MHB4OwogICAgICB9CgogICAgICAuZ3JpZC10aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTsKICAgICAgfQoKICAgICAgLmdyaWQtYWN0aW9ucyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBnYXA6IDZweDsKICAgICAgfQoKICAgICAgLmdyaWQtYWN0aW9ucyBkZWVzLWJ1dHRvbiB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1sYWJlbC1mb250LXNpemUpOwogICAgICB9CgogICAgICAuc3RhdHMtZ3JpZCB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KCR7YWEoMjUwKX1weCwgMWZyKSk7CiAgICAgICAgZ2FwOiAke2FhKDE2KX1weDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgLyogVGlsZSBCYXNlIFN0eWxlcyDigJQgZnJhbWUgcHJvdmlkZWQgYnkgZGVlcy10aWxlLCBob3ZlciB2aWEgOjpwYXJ0ICovCiAgICAgIC5zdGF0cy10aWxlOjpwYXJ0KG91dGVyKSB7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRyYW5zaXRpb24tZHVyYXRpb24pIGVhc2U7CiAgICAgIH0KCiAgICAgIC5zdGF0cy10aWxlOmhvdmVyOjpwYXJ0KG91dGVyKSB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1zdHJvbmcpOwogICAgICB9CgogICAgICAuc3RhdHMtdGlsZS5jbGlja2FibGUgewogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQoKICAgICAgLnN0YXRzLXRpbGUuY2xpY2thYmxlOmhvdmVyOjpwYXJ0KG91dGVyKSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOwogICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDZweCAke2guYmRUaGVtZSgicmdiYSgwLDAsMCwwLjAzKSIsInJnYmEoMCwwLDAsMC4xNSkiKX07CiAgICAgIH0KCiAgICAgIC8qIFRpbGUgSGVhZGVyIOKAlCBzbG90dGVkIGludG8gZGVlcy10aWxlIGhlYWRlciAqLwogICAgICAudGlsZS1oZWFkZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgcGFkZGluZzogMCAxMnB4OwogICAgICAgIGhlaWdodDogMjhweDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQoKICAgICAgLnRpbGUtdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGl0bGUtZm9udC1zaXplKTsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDQ2LjklKSIsImhzbCgyMTUgMjAuMiUgNjUuMSUpIil9OwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTsKICAgICAgICBsaW5lLWhlaWdodDogMS4yOwogICAgICB9CgogICAgICAudGlsZS1pY29uIHsKICAgICAgICBvcGFjaXR5OiAwLjc7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNDYuOSUpIiwiaHNsKDIxNSAyMC4yJSA2NS4xJSkiKX07CiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAvKiBUaWxlIENvbnRlbnQg4oCUIHNsb3R0ZWQgaW50byBkZWVzLXRpbGUgY29udGVudCBhcmVhICovCiAgICAgIC50aWxlLWNvbnRlbnQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBwYWRkaW5nOiAxMnB4OwogICAgICAgIG1pbi1oZWlnaHQ6IHZhcigtLWNvbnRlbnQtbWluLWhlaWdodCk7CiAgICAgIH0KCiAgICAgIC50aWxlLXZhbHVlIHsKICAgICAgICBmb250LXNpemU6IHZhcigtLXZhbHVlLWZvbnQtc2l6ZSk7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuMyAyNSUgOC44JSkiLCJoc2woMjEwIDQwJSA5OCUpIil9OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgICAgZ2FwOiA0cHg7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyNWVtOwogICAgICB9CgogICAgICAudGlsZS11bml0IHsKICAgICAgICBmb250LXNpemU6IHZhcigtLXVuaXQtZm9udC1zaXplKTsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDQ2LjklKSIsImhzbCgyMTUgMjAuMiUgNjUuMSUpIil9OwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICB9CgogICAgICAudGlsZS1kZXNjcmlwdGlvbiB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1sYWJlbC1mb250LXNpemUpOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDU2LjklKSIsImhzbCgyMTUgMjAuMiUgNTUuMSUpIil9OwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICAgIHBhZGRpbmc6IDAgMTJweDsKICAgICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICAgIH0KCiAgICAgIC8qIEdhdWdlIFN0eWxlcyAqLwogICAgICAuZ2F1Z2Utd3JhcHBlciB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICB9CgogICAgICAuZ2F1Z2UtY29udGFpbmVyIHsKICAgICAgICB3aWR0aDogMTIwcHg7CiAgICAgICAgaGVpZ2h0OiA3MHB4OwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBtYXJnaW4tdG9wOiAtOHB4OwogICAgICB9CgogICAgICAuZ2F1Z2Utc3ZnIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5nYXVnZS1iYWNrZ3JvdW5kIHsKICAgICAgICBmaWxsOiBub25lOwogICAgICAgIHN0cm9rZTogdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiA2OwogICAgICB9CgogICAgICAuZ2F1Z2UtZmlsbCB7CiAgICAgICAgZmlsbDogbm9uZTsKICAgICAgICBzdHJva2Utd2lkdGg6IDY7CiAgICAgICAgc3Ryb2tlLWxpbmVjYXA6IHJvdW5kOwogICAgICAgIHRyYW5zaXRpb246IHN0cm9rZS1kYXNob2Zmc2V0IDAuNnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTsKICAgICAgfQoKICAgICAgLmdhdWdlLXRleHQgewogICAgICAgIGZpbGw6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjMgMjUlIDguOCUpIiwiaHNsKDIxMCA0MCUgOTglKSIpfTsKICAgICAgICBmb250LWZhbWlseTogJHtCYX07CiAgICAgICAgZm9udC1zaXplOiB2YXIoLS12YWx1ZS1mb250LXNpemUpOwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgdGV4dC1hbmNob3I6IG1pZGRsZTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDI1ZW07CiAgICAgIH0KICAgICAgCiAgICAgIC5nYXVnZS11bml0IHsKICAgICAgICBmb250LXNpemU6IHZhcigtLXVuaXQtZm9udC1zaXplKTsKICAgICAgICBmaWxsOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDQ2LjklKSIsImhzbCgyMTUgMjAuMiUgNjUuMSUpIil9OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgZm9udC1mYW1pbHk6ICR7QmF9OwogICAgICB9CgogICAgICAvKiBQZXJjZW50YWdlIFN0eWxlcyAqLwogICAgICAucGVyY2VudGFnZS13cmFwcGVyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGZsZXg6IDE7CiAgICAgIH0KCiAgICAgIC5wZXJjZW50YWdlLXZhbHVlIHsKICAgICAgICBmb250LXNpemU6IHZhcigtLXZhbHVlLWZvbnQtc2l6ZSk7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuMyAyNSUgOC44JSkiLCJoc2woMjEwIDQwJSA5OCUpIil9OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyNWVtOwogICAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgfQoKICAgICAgLnBlcmNlbnRhZ2UtYmFyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDZweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBtYXJnaW4tdG9wOiBhdXRvOwogICAgICB9CgogICAgICAucGVyY2VudGFnZS1maWxsIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjZzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICB9CgogICAgICAvKiBNdWx0aSBQZXJjZW50YWdlIFN0eWxlcyAqLwogICAgICAubXVsdGktcGVyY2VudGFnZS13cmFwcGVyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZmxleDogMTsKICAgICAgfQoKICAgICAgLm11bHRpLXBlcmNlbnRhZ2UtaXRlbXMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgbWFyZ2luLXRvcDogYXV0bzsKICAgICAgfQoKICAgICAgLm11bHRpLXBlcmNlbnRhZ2UtaXRlbSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogNHB4OwogICAgICB9CgogICAgICAubXVsdGktcGVyY2VudGFnZS1oZWFkZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTsKICAgICAgfQoKICAgICAgLm11bHRpLXBlcmNlbnRhZ2UtbGFiZWwgewogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDQ2LjklKSIsImhzbCgyMTUgMjAuMiUgNjUuMSUpIil9OwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICB9CgogICAgICAubXVsdGktcGVyY2VudGFnZS12YWx1ZSB7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjMgMjUlIDguOCUpIiwiaHNsKDIxMCA0MCUgOTglKSIpfTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTsKICAgICAgfQoKICAgICAgLm11bHRpLXBlcmNlbnRhZ2UtYmFyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDRweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLm11bHRpLXBlcmNlbnRhZ2UtZmlsbCB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgICAgdHJhbnNpdGlvbjogd2lkdGggMC42cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgICAgfQoKICAgICAgLyogQ1BVIENvcmVzIFN0eWxlcyAqLwogICAgICAuY3B1LWNvcmVzLXdyYXBwZXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG1pbi1oZWlnaHQ6IDgwcHg7CiAgICAgIH0KCiAgICAgIC5jcHUtY29yZXMtaGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4OwogICAgICB9CgogICAgICAuY3B1LWNvcmVzLXZhbHVlIHsKICAgICAgICBmb250LXNpemU6IHZhcigtLXZhbHVlLWZvbnQtc2l6ZSk7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuMyAyNSUgOC44JSkiLCJoc2woMjEwIDQwJSA5OCUpIil9OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyNWVtOwogICAgICB9CgogICAgICAuY3B1LWNvcmVzLXVuaXQgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdW5pdC1mb250LXNpemUpOwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNDYuOSUpIiwiaHNsKDIxNSAyMC4yJSA2NS4xJSkiKX07CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICAgIH0KCiAgICAgIC5jcHUtY29yZXMtbGFiZWwgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tbGFiZWwtZm9udC1zaXplKTsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDU2LjklKSIsImhzbCgyMTUgMjAuMiUgNTUuMSUpIil9OwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICB9CgogICAgICAuY3B1LWNvcmVzLWJhcnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kOwogICAgICAgIGdhcDogM3B4OwogICAgICAgIGZsZXg6IDE7CiAgICAgICAgbWluLWhlaWdodDogNjBweDsKICAgICAgICBwYWRkaW5nOiA0cHggMDsKICAgICAgfQoKICAgICAgLmNwdS1jb3Jlcy1iYXJzLmNlbnRlcmVkIHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgfQoKICAgICAgLmNwdS1jb3JlLWJhci1jb250YWluZXIgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgbWluLXdpZHRoOiA2cHg7CiAgICAgICAgbWF4LXdpZHRoOiAyNHB4OwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDRweDsKICAgICAgfQoKICAgICAgLmNwdS1jb3JlLWJhci13cmFwcGVyIHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBtaW4taGVpZ2h0OiA0MHB4OwogICAgICB9CgogICAgICAuY3B1LWNvcmUtYmFyLWZpbGwgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIHRyYW5zaXRpb246IGhlaWdodCAwLjNzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSksIGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDJweCAycHggMCAwOwogICAgICB9CgogICAgICAuY3B1LWNvcmUtYmFyLWZpbGwubG93IHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWFjY2VudC1zdWNjZXNzKTsKICAgICAgfQoKICAgICAgLmNwdS1jb3JlLWJhci1maWxsLm1lZGl1bSB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1hY2NlbnQtd2FybmluZyk7CiAgICAgIH0KCiAgICAgIC5jcHUtY29yZS1iYXItZmlsbC5oaWdoIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWFjY2VudC1lcnJvcik7CiAgICAgIH0KCiAgICAgIC5jcHUtY29yZS1sYWJlbCB7CiAgICAgICAgZm9udC1zaXplOiA5cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuNCAxNi4zJSA1Ni45JSkiLCJoc2woMjE1IDIwLjIlIDU1LjElKSIpfTsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgLyogUGFydGl0aW9uIFN0eWxlcyAqLwogICAgICAucGFydGl0aW9uLXdyYXBwZXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBmbGV4OiAxOwogICAgICAgIGdhcDogOHB4OwogICAgICB9CgogICAgICAucGFydGl0aW9uLWhlYWRlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgIH0KCiAgICAgIC5wYXJ0aXRpb24tcGVyY2VudGFnZSB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoLS12YWx1ZS1mb250LXNpemUpOwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjMgMjUlIDguOCUpIiwiaHNsKDIxMCA0MCUgOTglKSIpfTsKICAgICAgICBsaW5lLWhlaWdodDogMS4xOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMjVlbTsKICAgICAgfQoKICAgICAgLnBhcnRpdGlvbi1iYXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogNnB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAucGFydGl0aW9uLWJhci1maWxsIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjZzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICB9CgogICAgICAucGFydGl0aW9uLWJhci1maWxsLndhcm5pbmcgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYWNjZW50LXdhcm5pbmcpOwogICAgICB9CgogICAgICAucGFydGl0aW9uLWJhci1maWxsLmNyaXRpY2FsIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWFjY2VudC1lcnJvcik7CiAgICAgIH0KCiAgICAgIC5wYXJ0aXRpb24tc3RhdHMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgbWFyZ2luLXRvcDogYXV0bzsKICAgICAgfQoKICAgICAgLnBhcnRpdGlvbi1zdGF0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiAycHg7CiAgICAgIH0KCiAgICAgIC5wYXJ0aXRpb24tc3RhdC1sYWJlbCB7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNTYuOSUpIiwiaHNsKDIxNSAyMC4yJSA1NS4xJSkiKX07CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wMmVtOwogICAgICB9CgogICAgICAucGFydGl0aW9uLXN0YXQtdmFsdWUgewogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS4zIDI1JSA4LjglKSIsImhzbCgyMTAgNDAlIDk4JSkiKX07CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICAgIH0KCiAgICAgIC5wYXJ0aXRpb24tbWV0YSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4OwogICAgICAgIG1hcmdpbi10b3A6IDRweDsKICAgICAgfQoKICAgICAgLnBhcnRpdGlvbi1maWxlc3lzdGVtIHsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuNCAxNi4zJSA0Ni45JSkiLCJoc2woMjE1IDIwLjIlIDY1LjElKSIpfTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxMCA0MCUgOTYuMSUpIiwiaHNsKDIxNSAyMC4yJSAxNi44JSkiKX07CiAgICAgICAgcGFkZGluZzogMnB4IDZweDsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgIH0KCiAgICAgIC5wYXJ0aXRpb24tbW91bnRwb2ludCB7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDU2LjklKSIsImhzbCgyMTUgMjAuMiUgNTUuMSUpIil9OwogICAgICB9CgogICAgICAvKiBEaXNrIFN0eWxlcyAqLwogICAgICAuZGlzay13cmFwcGVyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZmxleDogMTsKICAgICAgICBnYXA6IDhweDsKICAgICAgfQoKICAgICAgLmRpc2stY2FwYWNpdHkgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdmFsdWUtZm9udC1zaXplKTsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS4zIDI1JSA4LjglKSIsImhzbCgyMTAgNDAlIDk4JSkiKX07CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDI1ZW07CiAgICAgIH0KCiAgICAgIC5kaXNrLW1vZGVsIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNDYuOSUpIiwiaHNsKDIxNSAyMC4yJSA2NS4xJSkiKX07CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4OwogICAgICB9CgogICAgICAuZGlzay10eXBlLWJhZGdlIHsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDQ2LjklKSIsImhzbCgyMTUgMjAuMiUgNjUuMSUpIil9OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDQwJSA5Ni4xJSkiLCJoc2woMjE1IDIwLjIlIDE2LjglKSIpfTsKICAgICAgICBwYWRkaW5nOiAycHggNnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgfQoKICAgICAgLmRpc2stbWV0cmljcyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIG1hcmdpbi10b3A6IGF1dG87CiAgICAgIH0KCiAgICAgIC5kaXNrLWlvcHMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDEycHg7CiAgICAgIH0KCiAgICAgIC5kaXNrLWlvcHMtaXRlbSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgICAgZ2FwOiA0cHg7CiAgICAgIH0KCiAgICAgIC5kaXNrLWlvcHMtbGFiZWwgewogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDU2LjklKSIsImhzbCgyMTUgMjAuMiUgNTUuMSUpIil9OwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgIH0KCiAgICAgIC5kaXNrLWlvcHMtdmFsdWUgewogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS4zIDI1JSA4LjglKSIsImhzbCgyMTAgNDAlIDk4JSkiKX07CiAgICAgIH0KCiAgICAgIC5kaXNrLWhlYWx0aCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogNHB4OwogICAgICB9CgogICAgICAuZGlzay1oZWFsdGgtaGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgIH0KCiAgICAgIC5kaXNrLWhlYWx0aC1sYWJlbCB7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNTYuOSUpIiwiaHNsKDIxNSAyMC4yJSA1NS4xJSkiKX07CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgfQoKICAgICAgLmRpc2staGVhbHRoLXZhbHVlIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuMyAyNSUgOC44JSkiLCJoc2woMjEwIDQwJSA5OCUpIil9OwogICAgICB9CgogICAgICAuZGlzay1oZWFsdGgtYmFyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDRweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLmRpc2staGVhbHRoLWZpbGwgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjZzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgICB9CgogICAgICAuZGlzay1oZWFsdGgtZmlsbC5nb29kIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDE0Mi4xIDc2LjIlIDM2LjMlKSIsImhzbCgxNDIuMSA3MC42JSA0NS4zJSkiKX07CiAgICAgIH0KCiAgICAgIC5kaXNrLWhlYWx0aC1maWxsLndhcm5pbmcgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woNDUuNCA5My40JSA0Ny41JSkiLCJoc2woNDUuNCA5My40JSA0Ny41JSkiKX07CiAgICAgIH0KCiAgICAgIC5kaXNrLWhlYWx0aC1maWxsLmNyaXRpY2FsIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgODQuMiUgNjAuMiUpIiwiaHNsKDAgODQuMiUgNjAuMiUpIil9OwogICAgICB9CgogICAgICAvKiBUcmVuZCBTdHlsZXMgKi8KICAgICAgLnRyZW5kLWNvbnRhaW5lciB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIGZsZXg6IDE7CiAgICAgIH0KCiAgICAgIC50cmVuZC1oZWFkZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lOwogICAgICAgIGdhcDogOHB4OwogICAgICB9CgogICAgICAudHJlbmQtdmFsdWUgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdmFsdWUtZm9udC1zaXplKTsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS4zIDI1JSA4LjglKSIsImhzbCgyMTAgNDAlIDk4JSkiKX07CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDI1ZW07CiAgICAgIH0KCiAgICAgIC50cmVuZC11bml0IHsKICAgICAgICBmb250LXNpemU6IHZhcigtLXVuaXQtZm9udC1zaXplKTsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDQ2LjklKSIsImhzbCgyMTUgMjAuMiUgNjUuMSUpIil9OwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICB9CgogICAgICAudHJlbmQtbGFiZWwgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tbGFiZWwtZm9udC1zaXplKTsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDU2LjklKSIsImhzbCgyMTUgMjAuMiUgNTUuMSUpIil9OwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICB9CgogICAgICAudHJlbmQtZ3JhcGggewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMjhweDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgbWFyZ2luLXRvcDogYXV0bzsKICAgICAgfQoKICAgICAgLnRyZW5kLXN2ZyB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICAudHJlbmQtbGluZSB7CiAgICAgICAgZmlsbDogbm9uZTsKICAgICAgICBzdHJva2U6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAxLjU7CiAgICAgICAgc3Ryb2tlLWxpbmVqb2luOiByb3VuZDsKICAgICAgICBzdHJva2UtbGluZWNhcDogcm91bmQ7CiAgICAgIH0KCiAgICAgIC50cmVuZC1hcmVhIHsKICAgICAgICBmaWxsOiAke2guYmRUaGVtZSgicmdiYSgxNTAsIDE1MCwgMTUwLCAwLjA4KSIsInJnYmEoMTAwLCAxMDAsIDEwMCwgMC4wOCkiKX07CiAgICAgIH0KCiAgICAgIC8qIFRleHQgVmFsdWUgU3R5bGVzICovCiAgICAgIC50ZXh0LXZhbHVlIHsKICAgICAgICBmb250LXNpemU6IHZhcigtLXZhbHVlLWZvbnQtc2l6ZSk7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuMyAyNSUgOC44JSkiLCJoc2woMjEwIDQwJSA5OCUpIil9OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyNWVtOwogICAgICB9CgogICAgICAvKiBDb250ZXh0IE1lbnUgKi8KICAgICAgZGVlcy1jb250ZXh0bWVudSB7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIHotaW5kZXg6IDEwMDA7CiAgICAgIH0KICAgIGAsaC5jc3NGb3JUYWJsZXQoSmAKICAgICAgLnN0YXRzLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7CiAgICAgIH0KICAgIGAsYSksaC5jc3NGb3JQaGFibGV0KEpgCiAgICAgIDpob3N0IHsKICAgICAgICAtLXRpbGUtcGFkZGluZzogMTJweDsKICAgICAgICAtLXZhbHVlLWZvbnQtc2l6ZTogMjJweDsKICAgICAgICAtLXRpdGxlLWZvbnQtc2l6ZTogMTJweDsKICAgICAgICAtLWdyaWQtZ2FwOiA4cHg7CiAgICAgIH0KICAgICAgLnN0YXRzLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjAwcHgsIDFmcikpOwogICAgICAgIGdhcDogOHB4OwogICAgICB9CiAgICAgIC5zdGF0cy10aWxlIHsKICAgICAgICBncmlkLWNvbHVtbjogc3BhbiAxICFpbXBvcnRhbnQ7CiAgICAgIH0KICAgIGAsYSksaC5jc3NGb3JQaG9uZShKYAogICAgICA6aG9zdCB7CiAgICAgICAgLS10aWxlLXBhZGRpbmc6IDEwcHg7CiAgICAgICAgLS12YWx1ZS1mb250LXNpemU6IDIwcHg7CiAgICAgICAgLS1oZWFkZXItc3BhY2luZzogOHB4OwogICAgICB9CiAgICAgIC5zdGF0cy1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKICAgICAgICBnYXA6IDZweDsKICAgICAgfQogICAgYCxhKV07Y29uc3RydWN0b3IoKXtzdXBlcigpLFpuKHRoaXMsRSl9cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgICR7dGhpcy5ncmlkQWN0aW9ucy5sZW5ndGg+MD93YAogICAgICAgIDxkaXYgY2xhc3M9ImdyaWQtaGVhZGVyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImdyaWQtdGl0bGUiPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZC1hY3Rpb25zIj4KICAgICAgICAgICAgJHt0aGlzLmdyaWRBY3Rpb25zLm1hcChrPT53YAogICAgICAgICAgICAgIDxkZWVzLWJ1dHRvbiAKICAgICAgICAgICAgICAgIEBjbGlja2VkPSR7KCk9PnRoaXMuaGFuZGxlR3JpZEFjdGlvbihrKX0KICAgICAgICAgICAgICAgIHR5cGU9Im91dGxpbmUiCiAgICAgICAgICAgICAgICBzaXplPSJzbSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAke2suaWNvbk5hbWU/d2A8ZGVlcy1pY29uIC5pY29uPSR7ay5pY29uTmFtZX0gc2l6ZT0ic21hbGwiPjwvZGVlcy1pY29uPmA6IiJ9CiAgICAgICAgICAgICAgICAke2submFtZX0KICAgICAgICAgICAgICA8L2RlZXMtYnV0dG9uPgogICAgICAgICAgICBgKX0KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICBgOiIifQogICAgICAKICAgICAgPGRpdiBjbGFzcz0ic3RhdHMtZ3JpZCIgc3R5bGU9ImdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoJHt0aGlzLm1pblRpbGVXaWR0aH1weCwgMWZyKSk7IGdhcDogJHt0aGlzLmdhcH1weDsiPgogICAgICAgICR7dGhpcy50aWxlcy5tYXAoaz0+dGhpcy5yZW5kZXJUaWxlKGspKX0KICAgICAgPC9kaXY+CgogICAgICAke3RoaXMuY29udGV4dE1lbnVWaXNpYmxlP3dgCiAgICAgICAgPGRlZXMtY29udGV4dG1lbnUKICAgICAgICAgIC54PSR7dGhpcy5jb250ZXh0TWVudVBvc2l0aW9uLnh9CiAgICAgICAgICAueT0ke3RoaXMuY29udGV4dE1lbnVQb3NpdGlvbi55fQogICAgICAgICAgLm1lbnVJdGVtcz0ke3RoaXMuY29udGV4dE1lbnVBY3Rpb25zfQogICAgICAgICAgQGNsaWNrZWQ9JHsoKT0+dGhpcy5jb250ZXh0TWVudVZpc2libGU9ITF9CiAgICAgICAgPjwvZGVlcy1jb250ZXh0bWVudT4KICAgICAgYDoiIn0KICAgIGB9cmVuZGVyVGlsZShrKXtsZXQgUz1rLmFjdGlvbnMmJmsuYWN0aW9ucy5sZW5ndGg+MCxJPVMmJmsuYWN0aW9ucy5sZW5ndGg9PT0xLFA9ay5jb2x1bW5TcGFuJiZrLmNvbHVtblNwYW4+MT9rLmNvbHVtblNwYW46dm9pZCAwO3JldHVybiB3YAogICAgICA8ZGVlcy10aWxlCiAgICAgICAgY2xhc3M9InN0YXRzLXRpbGUgJHtJPyJjbGlja2FibGUiOiIifSIKICAgICAgICBzdHlsZT0iJHtQP2BncmlkLWNvbHVtbjogc3BhbiAke1B9YDoiIn0iCiAgICAgICAgQGNsaWNrPSR7ST8oKT0+dGhpcy5oYW5kbGVUaWxlQWN0aW9uKGsuYWN0aW9uc1swXSxrKTp2b2lkIDB9CiAgICAgICAgQGNvbnRleHRtZW51PSR7Uz9SPT50aGlzLnNob3dDb250ZXh0TWVudShSLGspOnZvaWQgMH0KICAgICAgPgogICAgICAgIDxkaXYgc2xvdD0iaGVhZGVyIiBjbGFzcz0idGlsZS1oZWFkZXIiPgogICAgICAgICAgPGgzIGNsYXNzPSJ0aWxlLXRpdGxlIj4ke2sudGl0bGV9PC9oMz4KICAgICAgICAgICR7ay5pY29uP3dgCiAgICAgICAgICAgIDxkZWVzLWljb24gY2xhc3M9InRpbGUtaWNvbiIgLmljb249JHtrLmljb259IHNpemU9InNtYWxsIj48L2RlZXMtaWNvbj4KICAgICAgICAgIGA6IiJ9CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9InRpbGUtY29udGVudCI+CiAgICAgICAgICAke3RoaXMucmVuZGVyVGlsZUNvbnRlbnQoayl9CiAgICAgICAgPC9kaXY+CgogICAgICAgICR7ay5kZXNjcmlwdGlvbiYmay50eXBlIT09InRyZW5kIj93YAogICAgICAgICAgPGRpdiBzbG90PSJmb290ZXIiIGNsYXNzPSJ0aWxlLWRlc2NyaXB0aW9uIj4ke2suZGVzY3JpcHRpb259PC9kaXY+CiAgICAgICAgYDoiIn0KICAgICAgPC9kZWVzLXRpbGU+CiAgICBgfXJlbmRlclRpbGVDb250ZW50KGspe3N3aXRjaChrLnR5cGUpe2Nhc2UibnVtYmVyIjpyZXR1cm4gd2AKICAgICAgICAgIDxkaXYgY2xhc3M9InRpbGUtdmFsdWUiIHN0eWxlPSIke2suY29sb3I/YGNvbG9yOiAke2suY29sb3J9YDoiIn0iPgogICAgICAgICAgICA8c3Bhbj4ke2sudmFsdWV9PC9zcGFuPgogICAgICAgICAgICAke2sudW5pdD93YDxzcGFuIGNsYXNzPSJ0aWxlLXVuaXQiPiR7ay51bml0fTwvc3Bhbj5gOiIifQogICAgICAgICAgPC9kaXY+CiAgICAgICAgYDtjYXNlImdhdWdlIjpyZXR1cm4gdGhpcy5yZW5kZXJHYXVnZShrKTtjYXNlInBlcmNlbnRhZ2UiOnJldHVybiB0aGlzLnJlbmRlclBlcmNlbnRhZ2Uoayk7Y2FzZSJ0cmVuZCI6cmV0dXJuIHRoaXMucmVuZGVyVHJlbmQoayk7Y2FzZSJtdWx0aVBlcmNlbnRhZ2UiOnJldHVybiB0aGlzLnJlbmRlck11bHRpUGVyY2VudGFnZShrKTtjYXNlImNwdUNvcmVzIjpyZXR1cm4gdGhpcy5yZW5kZXJDcHVDb3JlcyhrKTtjYXNlInBhcnRpdGlvbiI6cmV0dXJuIHRoaXMucmVuZGVyUGFydGl0aW9uKGspO2Nhc2UiZGlzayI6cmV0dXJuIHRoaXMucmVuZGVyRGlzayhrKTtjYXNlInRleHQiOnJldHVybiB3YAogICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC12YWx1ZSIgc3R5bGU9IiR7ay5jb2xvcj9gY29sb3I6ICR7ay5jb2xvcn1gOiIifSI+CiAgICAgICAgICAgICR7ay52YWx1ZX0KICAgICAgICAgIDwvZGl2PgogICAgICAgIGA7ZGVmYXVsdDpyZXR1cm4gd2A8ZGl2IGNsYXNzPSJ0aWxlLXZhbHVlIj4ke2sudmFsdWV9PC9kaXY+YH19cmVuZGVyR2F1Z2Uoayl7bGV0IFM9dHlwZW9mIGsudmFsdWU9PSJudW1iZXIiP2sudmFsdWU6cGFyc2VGbG9hdChrLnZhbHVlKSxJPWsuZ2F1Z2VPcHRpb25zfHx7bWluOjAsbWF4OjEwMH0sUD0oUy1JLm1pbikvKEkubWF4LUkubWluKSoxMDAsUj0xMjAsSz03MCxXPTYvMisyLG1lPTQwLEI9Ui8yLFU9Sy1XLGhlPUItbWUsRj1VLGo9QittZSxsZT1gTSAke2hlfSAke0Z9IEEgJHttZX0gJHttZX0gMCAwIDEgJHtqfSAke1V9YCxRPU1hdGguUEkqbWUsaWU9US1RKlAvMTAwLHRlPWsuY29sb3J8fGguYmRUaGVtZSgiaHNsKDIxNS4zIDI1JSAyOC44JSkiLCJoc2woMjEwIDQwJSA3OCUpIik7aWYoSS50aHJlc2hvbGRzKXtsZXQgZWU9Wy4uLkkudGhyZXNob2xkc10uc29ydCgoa2UsWCk9PlgudmFsdWUta2UudmFsdWUpO2ZvcihsZXQga2Ugb2YgZWUpaWYoUz49a2UudmFsdWUpe3RlPWtlLmNvbG9yO2JyZWFrfX1yZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iZ2F1Z2Utd3JhcHBlciI+CiAgICAgICAgPGRpdiBjbGFzcz0iZ2F1Z2UtY29udGFpbmVyIj4KICAgICAgICAgIDxzdmcgY2xhc3M9ImdhdWdlLXN2ZyIgdmlld0JveD0iMCAwICR7Un0gJHtLfSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCI+CiAgICAgICAgICAgIDwhLS0gQmFja2dyb3VuZCBhcmMgLS0+CiAgICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICAgY2xhc3M9ImdhdWdlLWJhY2tncm91bmQiCiAgICAgICAgICAgICAgZD0iJHtsZX0iCiAgICAgICAgICAgIC8+CiAgICAgICAgICAgIDwhLS0gRmlsbGVkIGFyYyAtLT4KICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICBjbGFzcz0iZ2F1Z2UtZmlsbCIKICAgICAgICAgICAgICBkPSIke2xlfSIKICAgICAgICAgICAgICBzdHJva2U9IiR7dGV9IgogICAgICAgICAgICAgIHN0cm9rZS1kYXNoYXJyYXk9IiR7UX0iCiAgICAgICAgICAgICAgc3Ryb2tlLWRhc2hvZmZzZXQ9IiR7aWV9IgogICAgICAgICAgICAvPgogICAgICAgICAgICA8IS0tIFZhbHVlIHRleHQgLS0+CiAgICAgICAgICAgIDx0ZXh0IGNsYXNzPSJnYXVnZS10ZXh0IiB4PSIke0J9IiB5PSIke1UtOH0iIGRvbWluYW50LWJhc2VsaW5lPSJtaWRkbGUiPgogICAgICAgICAgICAgIDx0c3Bhbj4ke1N9PC90c3Bhbj4ke2sudW5pdD93YDx0c3BhbiBjbGFzcz0iZ2F1Z2UtdW5pdCIgZHg9IjIiIGR5PSIwIj4ke2sudW5pdH08L3RzcGFuPmA6IiJ9CiAgICAgICAgICAgIDwvdGV4dD4KICAgICAgICAgIDwvc3ZnPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyUGVyY2VudGFnZShrKXtsZXQgUz10eXBlb2Ygay52YWx1ZT09Im51bWJlciI/ay52YWx1ZTpwYXJzZUZsb2F0KGsudmFsdWUpLEk9TWF0aC5taW4oMTAwLE1hdGgubWF4KDAsUykpO3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJwZXJjZW50YWdlLXdyYXBwZXIiPgogICAgICAgIDxkaXYgY2xhc3M9InBlcmNlbnRhZ2UtdmFsdWUiPiR7SX0lPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icGVyY2VudGFnZS1iYXIiPgogICAgICAgICAgPGRpdiAKICAgICAgICAgICAgY2xhc3M9InBlcmNlbnRhZ2UtZmlsbCIgCiAgICAgICAgICAgIHN0eWxlPSJ3aWR0aDogJHtJfSU7ICR7ay5jb2xvcj9gYmFja2dyb3VuZDogJHtrLmNvbG9yfWA6IiJ9IgogICAgICAgICAgPjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyVHJlbmQoayl7aWYoIWsudHJlbmREYXRhfHxrLnRyZW5kRGF0YS5sZW5ndGg8MilyZXR1cm4gd2A8ZGl2IGNsYXNzPSJ0aWxlLXZhbHVlIj4ke2sudmFsdWV9PC9kaXY+YDtsZXQgUz1rLnRyZW5kRGF0YSxJPU1hdGgubWF4KC4uLlMpLFA9TWF0aC5taW4oLi4uUyksUj1JLVB8fDEsSz0zMDAsVj0zMixXPTIsbWU9Uy5tYXAoKFUsaGUpPT57bGV0IEY9aGUvKFMubGVuZ3RoLTEpKkssaj1XKyhWLTIqVyktKFUtUCkvUiooVi0yKlcpO3JldHVybmAke0Z9LCR7an1gfSkuam9pbigiICIpLEI9YDAsJHtWfSAke21lfSAke0t9LCR7Vn1gO3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJ0cmVuZC1jb250YWluZXIiPgogICAgICAgIDxkaXYgY2xhc3M9InRyZW5kLWhlYWRlciI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0idHJlbmQtdmFsdWUiPiR7ay52YWx1ZX08L3NwYW4+CiAgICAgICAgICAke2sudW5pdD93YDxzcGFuIGNsYXNzPSJ0cmVuZC11bml0Ij4ke2sudW5pdH08L3NwYW4+YDoiIn0KICAgICAgICAgICR7ay5kZXNjcmlwdGlvbj93YDxzcGFuIGNsYXNzPSJ0cmVuZC1sYWJlbCI+JHtrLmRlc2NyaXB0aW9ufTwvc3Bhbj5gOiIifQogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InRyZW5kLWdyYXBoIj4KICAgICAgICAgIDxzdmcgY2xhc3M9InRyZW5kLXN2ZyIgdmlld0JveD0iMCAwICR7S30gJHtWfSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJ0cmVuZC1hcmVhIiBwb2ludHM9IiR7Qn0iIC8+CiAgICAgICAgICAgIDxwb2x5bGluZSBjbGFzcz0idHJlbmQtbGluZSIgcG9pbnRzPSIke21lfSIgLz4KICAgICAgICAgIDwvc3ZnPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyTXVsdGlQZXJjZW50YWdlKGspe2lmKCFrLnBlcmNlbnRhZ2VzfHxrLnBlcmNlbnRhZ2VzLmxlbmd0aD09PTApcmV0dXJuIHdgPGRpdiBjbGFzcz0idGlsZS12YWx1ZSI+JHtrLnZhbHVlfTwvZGl2PmA7bGV0IFM9ay5wZXJjZW50YWdlcy5zbGljZSgwLDMpO3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJtdWx0aS1wZXJjZW50YWdlLXdyYXBwZXIiPgogICAgICAgIDxkaXYgY2xhc3M9Im11bHRpLXBlcmNlbnRhZ2UtaXRlbXMiPgogICAgICAgICAgJHtTLm1hcChJPT57bGV0IFA9TWF0aC5taW4oMTAwLE1hdGgubWF4KDAsSS52YWx1ZSkpO3JldHVybiB3YAogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im11bHRpLXBlcmNlbnRhZ2UtaXRlbSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtdWx0aS1wZXJjZW50YWdlLWhlYWRlciI+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJtdWx0aS1wZXJjZW50YWdlLWxhYmVsIj4ke0kubGFiZWx9PC9zcGFuPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibXVsdGktcGVyY2VudGFnZS12YWx1ZSI+JHtQfSU8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im11bHRpLXBlcmNlbnRhZ2UtYmFyIj4KICAgICAgICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJtdWx0aS1wZXJjZW50YWdlLWZpbGwiCiAgICAgICAgICAgICAgICAgICAgc3R5bGU9IndpZHRoOiAke1B9JTsgJHtJLmNvbG9yP2BiYWNrZ3JvdW5kOiAke0kuY29sb3J9YDoiIn0iCiAgICAgICAgICAgICAgICAgID48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICBgfSl9CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJDcHVDb3JlcyhrKXtpZighay5jb3Jlc0RhdGF8fGsuY29yZXNEYXRhLmxlbmd0aD09PTApcmV0dXJuIHdgPGRpdiBjbGFzcz0idGlsZS12YWx1ZSI+JHtrLnZhbHVlfTwvZGl2PmA7bGV0IFM9ay5jb3Jlc0RhdGEsST1NYXRoLnJvdW5kKFMucmVkdWNlKChtZSxCKT0+bWUrQi51c2FnZSwwKS9TLmxlbmd0aCksUD1pKG1lPT5tZTw1MD8ibG93IjptZTw4MD8ibWVkaXVtIjoiaGlnaCIsImdldENvbG9yQ2xhc3MiKSxSPVMubGVuZ3RoKjI0KyhTLmxlbmd0aC0xKSozLEs9ay5jb2x1bW5TcGFufHwxLFY9dGhpcy5taW5UaWxlV2lkdGgqSysoSy0xKSp0aGlzLmdhcC0zMixXPVI8ViouNjY2O3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJjcHUtY29yZXMtd3JhcHBlciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY3B1LWNvcmVzLWhlYWRlciI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iY3B1LWNvcmVzLXZhbHVlIj4ke0l9PC9zcGFuPgogICAgICAgICAgPHNwYW4gY2xhc3M9ImNwdS1jb3Jlcy11bml0Ij4lPC9zcGFuPgogICAgICAgICAgPHNwYW4gY2xhc3M9ImNwdS1jb3Jlcy1sYWJlbCI+JHtTLmxlbmd0aH0gY29yZXM8L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY3B1LWNvcmVzLWJhcnMgJHtXPyJjZW50ZXJlZCI6IiJ9Ij4KICAgICAgICAgICR7Uy5tYXAobWU9PntsZXQgQj1NYXRoLm1pbigxMDAsTWF0aC5tYXgoMCxtZS51c2FnZSkpLFU9UChCKTtyZXR1cm4gd2AKICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjcHUtY29yZS1iYXItY29udGFpbmVyIiB0aXRsZT0iQ29yZSAke21lLmxhYmVsfHxtZS5pZH06ICR7Qn0lIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNwdS1jb3JlLWJhci13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJjcHUtY29yZS1iYXItZmlsbCAke1V9IgogICAgICAgICAgICAgICAgICAgIHN0eWxlPSJoZWlnaHQ6ICR7Qn0lIgogICAgICAgICAgICAgICAgICA+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICR7Uy5sZW5ndGg8PTE2P3dgCiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjcHUtY29yZS1sYWJlbCI+JHttZS5sYWJlbHx8bWUuaWR9PC9zcGFuPgogICAgICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYH0pfQogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9Zm9ybWF0Qnl0ZXMoayl7aWYoaz09PTApcmV0dXJuIjAgQiI7bGV0IFM9MTAyNCxJPVsiQiIsIktCIiwiTUIiLCJHQiIsIlRCIiwiUEIiXSxQPU1hdGguZmxvb3IoTWF0aC5sb2coaykvTWF0aC5sb2coUykpO3JldHVybiBwYXJzZUZsb2F0KChrL01hdGgucG93KFMsUCkpLnRvRml4ZWQoMSkpKyIgIitJW1BdfXJlbmRlclBhcnRpdGlvbihrKXtpZighay5wYXJ0aXRpb25EYXRhKXJldHVybiB3YDxkaXYgY2xhc3M9InRpbGUtdmFsdWUiPiR7ay52YWx1ZX08L2Rpdj5gO2xldHt1c2VkOlMsdG90YWw6SSxmaWxlc3lzdGVtOlAsbW91bnRQb2ludDpSfT1rLnBhcnRpdGlvbkRhdGEsSz1NYXRoLm1pbigxMDAsTWF0aC5tYXgoMCxTL0kqMTAwKSksVj1JLVMsVz1pKCgpPT5LPj05MD8iY3JpdGljYWwiOks+PTc1PyJ3YXJuaW5nIjoiIiwiZ2V0Q29sb3JDbGFzcyIpO3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJwYXJ0aXRpb24td3JhcHBlciI+CiAgICAgICAgPGRpdiBjbGFzcz0icGFydGl0aW9uLWhlYWRlciI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0icGFydGl0aW9uLXBlcmNlbnRhZ2UiPiR7TWF0aC5yb3VuZChLKX0lPC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InBhcnRpdGlvbi1iYXIiPgogICAgICAgICAgPGRpdgogICAgICAgICAgICBjbGFzcz0icGFydGl0aW9uLWJhci1maWxsICR7VygpfSIKICAgICAgICAgICAgc3R5bGU9IndpZHRoOiAke0t9JSIKICAgICAgICAgID48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJwYXJ0aXRpb24tc3RhdHMiPgogICAgICAgICAgPGRpdiBjbGFzcz0icGFydGl0aW9uLXN0YXQiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0icGFydGl0aW9uLXN0YXQtbGFiZWwiPlVzZWQ8L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwYXJ0aXRpb24tc3RhdC12YWx1ZSI+JHt0aGlzLmZvcm1hdEJ5dGVzKFMpfTwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icGFydGl0aW9uLXN0YXQiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0icGFydGl0aW9uLXN0YXQtbGFiZWwiPkZyZWU8L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwYXJ0aXRpb24tc3RhdC12YWx1ZSI+JHt0aGlzLmZvcm1hdEJ5dGVzKFYpfTwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InBhcnRpdGlvbi1tZXRhIj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJwYXJ0aXRpb24tZmlsZXN5c3RlbSI+JHtQfTwvc3Bhbj4KICAgICAgICAgICR7Uj93YDxzcGFuIGNsYXNzPSJwYXJ0aXRpb24tbW91bnRwb2ludCI+JHtSfTwvc3Bhbj5gOiIifQogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyRGlzayhrKXtpZighay5kaXNrRGF0YSlyZXR1cm4gd2A8ZGl2IGNsYXNzPSJ0aWxlLXZhbHVlIj4ke2sudmFsdWV9PC9kaXY+YDtsZXR7Y2FwYWNpdHk6Uyxtb2RlbDpJLHR5cGU6UCxpb3BzOlIsaGVhbHRoOkt9PWsuZGlza0RhdGEsVj1pKFc9Plc+PTcwPyJnb29kIjpXPj0zMD8id2FybmluZyI6ImNyaXRpY2FsIiwiZ2V0SGVhbHRoQ2xhc3MiKTtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iZGlzay13cmFwcGVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJkaXNrLWNhcGFjaXR5Ij4ke3RoaXMuZm9ybWF0Qnl0ZXMoUyl9PC9kaXY+CiAgICAgICAgJHtJfHxQP3dgCiAgICAgICAgICA8ZGl2IGNsYXNzPSJkaXNrLW1vZGVsIj4KICAgICAgICAgICAgJHtJP3dgPHNwYW4+JHtJfTwvc3Bhbj5gOiIifQogICAgICAgICAgICAke1A/d2A8c3BhbiBjbGFzcz0iZGlzay10eXBlLWJhZGdlIj4ke1B9PC9zcGFuPmA6IiJ9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgOiIifQogICAgICAgIDxkaXYgY2xhc3M9ImRpc2stbWV0cmljcyI+CiAgICAgICAgICAke1I/d2AKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGlzay1pb3BzIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkaXNrLWlvcHMtaXRlbSI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZGlzay1pb3BzLWxhYmVsIj5SZWFkPC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRpc2staW9wcy12YWx1ZSI+JHtSLnJlYWQudG9Mb2NhbGVTdHJpbmcoKX08L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGlzay1pb3BzLWl0ZW0iPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRpc2staW9wcy1sYWJlbCI+V3JpdGU8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZGlzay1pb3BzLXZhbHVlIj4ke1Iud3JpdGUudG9Mb2NhbGVTdHJpbmcoKX08L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYDoiIn0KICAgICAgICAgICR7SyE9PXZvaWQgMD93YAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkaXNrLWhlYWx0aCI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGlzay1oZWFsdGgtaGVhZGVyIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkaXNrLWhlYWx0aC1sYWJlbCI+SGVhbHRoPC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRpc2staGVhbHRoLXZhbHVlIj4ke0t9JTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkaXNrLWhlYWx0aC1iYXIiPgogICAgICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICBjbGFzcz0iZGlzay1oZWFsdGgtZmlsbCAke1YoSyl9IgogICAgICAgICAgICAgICAgICBzdHlsZT0id2lkdGg6ICR7S30lIgogICAgICAgICAgICAgICAgPjwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIGA6IiJ9CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1hc3luYyBoYW5kbGVHcmlkQWN0aW9uKGspe2suYWN0aW9uJiZhd2FpdCBrLmFjdGlvbigpfWFzeW5jIGhhbmRsZVRpbGVBY3Rpb24oayxTKXtrLmFjdGlvbiYmYXdhaXQgay5hY3Rpb24oKX1zaG93Q29udGV4dE1lbnUoayxTKXtpZighUy5hY3Rpb25zfHxTLmFjdGlvbnMubGVuZ3RoPT09MClyZXR1cm47ay5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuY29udGV4dE1lbnVQb3NpdGlvbj17eDprLmNsaWVudFgseTprLmNsaWVudFl9LHRoaXMuY29udGV4dE1lbnVBY3Rpb25zPVMuYWN0aW9ucyx0aGlzLmNvbnRleHRNZW51VmlzaWJsZT0hMDtsZXQgST1pKCgpPT57dGhpcy5jb250ZXh0TWVudVZpc2libGU9ITEsZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLEkpfSwiY2xvc2VIYW5kbGVyIik7c2V0VGltZW91dCgoKT0+e2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixJKX0sMTAwKX1zdGF0aWN7Wm4oYSx0KX19O3JldHVybiBIPWF9KSgpfSk7dmFyIGU3LFFkLGxWbyxjVm8sZFZvLHVWbyxCdmEsSHZhPWcoKCk9PntwZSgpO0l0KCk7SjFlKCk7ZTc9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LFFkPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxsVm89KCgpPT57bGV0IHM9W25lKCJkZW1vLWRhc2hib2FyZC12aWV3IildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W107dmFyIHA9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlbW9EYXNoYm9hcmRWaWV3Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bWSgpXSxlNyh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImFjdGl2YXRlZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh1PT4iYWN0aXZhdGVkImluIHUsImhhcyIpLGdldDppKHU9PnUuYWN0aXZhdGVkLCJnZXQiKSxzZXQ6aSgodSxjKT0+e3UuYWN0aXZhdGVkPWN9LCJzZXQiKX0sbWV0YWRhdGE6ZH0sbyxsKSxlNyhudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpkfSxudWxsLHQpLHA9YT1lLnZhbHVlLGQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZH0pLFFkKGEsdCl9I2U9UWQodGhpcyxvLCExKTtnZXQgYWN0aXZhdGVkKCl7cmV0dXJuIHRoaXMuI2V9c2V0IGFjdGl2YXRlZChkKXt0aGlzLiNlPWR9Y3R4PVFkKHRoaXMsbCk7c3RhdHNUaWxlcz1be2lkOiJ1c2VycyIsdGl0bGU6IkFjdGl2ZSBVc2VycyIsdmFsdWU6MTIzNCx0eXBlOiJudW1iZXIiLGljb246Imx1Y2lkZTp1c2VycyIsZGVzY3JpcHRpb246Ik9ubGluZSBub3ciLGNvbG9yOiIjMjJjNTVlIn0se2lkOiJhcGktY2FsbHMiLHRpdGxlOiJBUEkgQ2FsbHMiLHZhbHVlOjQ1MjAwLHR5cGU6InRyZW5kIixpY29uOiJsdWNpZGU6YWN0aXZpdHkiLGRlc2NyaXB0aW9uOiIrMTIlIGZyb20gbGFzdCBob3VyIixjb2xvcjoiIzNiODJmNiIsdHJlbmREYXRhOlszMmUzLDM1ZTMsMzhlMyw0MWUzLDM5ZTMsNDJlMyw0NTIwMF19LHtpZDoiaGVhbHRoIix0aXRsZToiU3lzdGVtIEhlYWx0aCIsdmFsdWU6OTkuOSx1bml0OiIlIix0eXBlOiJnYXVnZSIsaWNvbjoibHVjaWRlOmhlYXJ0LXB1bHNlIixkZXNjcmlwdGlvbjoiQWxsIHN5c3RlbXMgb3BlcmF0aW9uYWwiLGNvbG9yOiIjMTBiOTgxIixnYXVnZU9wdGlvbnM6e21pbjowLG1heDoxMDAsdGhyZXNob2xkczpbe3ZhbHVlOjgwLGNvbG9yOiIjZWY0NDQ0In0se3ZhbHVlOjk1LGNvbG9yOiIjZjU5ZTBiIn0se3ZhbHVlOjEwMCxjb2xvcjoiIzEwYjk4MSJ9XX19LHtpZDoicmVzcG9uc2UiLHRpdGxlOiJBdmcgUmVzcG9uc2UiLHZhbHVlOjEyNyx1bml0OiJtcyIsdHlwZToibnVtYmVyIixpY29uOiJsdWNpZGU6dGltZXIiLGRlc2NyaXB0aW9uOiItMTVtcyBmcm9tIHllc3RlcmRheSIsY29sb3I6IiM4YjVjZjYifSx7aWQ6InJlc291cmNlcyIsdGl0bGU6IlJlc291cmNlIFVzYWdlIix2YWx1ZToiIix0eXBlOiJtdWx0aVBlcmNlbnRhZ2UiLGljb246Imx1Y2lkZTpzZXJ2ZXIiLHBlcmNlbnRhZ2VzOlt7bGFiZWw6IkNQVSIsdmFsdWU6NjcsY29sb3I6IiMzYjgyZjYifSx7bGFiZWw6Ik1lbW9yeSIsdmFsdWU6ODQsY29sb3I6IiM4YjVjZjYifSx7bGFiZWw6IkRpc2siLHZhbHVlOjQ1LGNvbG9yOiIjMTBiOTgxIn1dfSx7aWQ6InJlcXVlc3RzIix0aXRsZToiUmVxdWVzdHMvc2VjIix2YWx1ZToxODUwLHR5cGU6InRyZW5kIixpY29uOiJsdWNpZGU6emFwIixkZXNjcmlwdGlvbjoiQ3VycmVudCB0aHJvdWdocHV0Iixjb2xvcjoiIzA2YjZkNCIsdHJlbmREYXRhOlsxMjAwLDE0MDAsMTM1MCwxNjAwLDE3NTAsMTY4MCwxODUwXX1dO29uQWN0aXZhdGUoZCl7dGhpcy5jdHg9ZCx0aGlzLmFjdGl2YXRlZD0hMCxjb25zb2xlLmxvZygiRGFzaGJvYXJkIGFjdGl2YXRlZCB3aXRoIGNvbnRleHQ6IixkKSxkLmFwcHVpLnNldFNlY29uZGFyeU1lbnUoe2hlYWRpbmc6IkRhc2hib2FyZCIsZ3JvdXBzOlt7bmFtZToiUXVpY2sgQWNjZXNzIixpY29uTmFtZToibHVjaWRlOnphcCIsaXRlbXM6W3trZXk6Ik92ZXJ2aWV3IixpY29uTmFtZToibGF5b3V0RGFzaGJvYXJkIixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIk92ZXJ2aWV3IiksImFjdGlvbiIpfSx7a2V5OiJSZWNlbnQiLGljb25OYW1lOiJjbG9jayIsYmFkZ2U6NSxhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIlJlY2VudCIpLCJhY3Rpb24iKX0se3R5cGU6ImRpdmlkZXIifSx7dHlwZToiYWN0aW9uIixrZXk6IlJlZnJlc2ggRGF0YSIsaWNvbk5hbWU6Imx1Y2lkZTpyZWZyZXNoQ3ciLGFjdGlvbjppKCgpPT5hbGVydCgiUmVmcmVzaGluZyBkYXNoYm9hcmQgZGF0YS4uLiIpLCJhY3Rpb24iKX1dfSx7bmFtZToiRmlsdGVycyIsaWNvbk5hbWU6Imx1Y2lkZTpmaWx0ZXIiLGl0ZW1zOlt7dHlwZToiaGVhZGVyIixsYWJlbDoiVGltZSBSYW5nZSJ9LHt0eXBlOiJmaWx0ZXIiLGtleToiTGl2ZSBVcGRhdGVzIixpY29uTmFtZToibHVjaWRlOnJhZGlvIixhY3RpdmU6ITAsb25Ub2dnbGU6aSh1PT5jb25zb2xlLmxvZygiTGl2ZSB1cGRhdGVzOiIsdSksIm9uVG9nZ2xlIil9LHt0eXBlOiJmaWx0ZXIiLGtleToiU2hvdyBBcmNoaXZlZCIsaWNvbk5hbWU6Imx1Y2lkZTphcmNoaXZlIixhY3RpdmU6ITEsb25Ub2dnbGU6aSh1PT5jb25zb2xlLmxvZygiU2hvdyBhcmNoaXZlZDoiLHUpLCJvblRvZ2dsZSIpfSx7dHlwZToiZGl2aWRlciJ9LHt0eXBlOiJtdWx0aUZpbHRlciIsa2V5OiJEYXRhIFNvdXJjZXMiLGljb25OYW1lOiJsdWNpZGU6ZGF0YWJhc2UiLG9wdGlvbnM6W3trZXk6ImFwaSIsbGFiZWw6IkFQSSBTZXJ2ZXIiLGNoZWNrZWQ6ITAsaWNvbk5hbWU6Imx1Y2lkZTpzZXJ2ZXIifSx7a2V5OiJ3ZWIiLGxhYmVsOiJXZWIgVHJhZmZpYyIsY2hlY2tlZDohMCxpY29uTmFtZToibHVjaWRlOmdsb2JlIn0se2tleToibW9iaWxlIixsYWJlbDoiTW9iaWxlIEFwcCIsY2hlY2tlZDohMSxpY29uTmFtZToibHVjaWRlOnNtYXJ0cGhvbmUifV0sb25DaGFuZ2U6aSh1PT5jb25zb2xlLmxvZygiRGF0YSBzb3VyY2VzOiIsdSksIm9uQ2hhbmdlIil9XX0se25hbWU6IkFuYWx5dGljcyIsaWNvbk5hbWU6Imx1Y2lkZTpiYXJDaGFydDMiLGl0ZW1zOlt7a2V5OiJNZXRyaWNzIixpY29uTmFtZToiYWN0aXZpdHkiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiTWV0cmljcyIpLCJhY3Rpb24iKX0se2tleToiUmVwb3J0cyIsaWNvbk5hbWU6ImZpbGVUZXh0IixiYWRnZToibmV3IixiYWRnZVZhcmlhbnQ6InN1Y2Nlc3MiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiUmVwb3J0cyIpLCJhY3Rpb24iKX0se3R5cGU6ImRpdmlkZXIifSx7dHlwZToibGluayIsa2V5OiJBbmFseXRpY3MgRG9jcyIsaWNvbk5hbWU6Imx1Y2lkZTpleHRlcm5hbExpbmsiLGhyZWY6Imh0dHBzOi8vZG9jcy5leGFtcGxlLmNvbS9hbmFseXRpY3MifV19XX0pLGQuYXBwdWkuc2V0Q29udGVudFRhYnMoW3trZXk6Ik92ZXJ2aWV3IixpY29uTmFtZToibHVjaWRlOmxheW91dERhc2hib2FyZCIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJPdmVydmlldyB0YWIiKSwiYWN0aW9uIil9LHtrZXk6IkFuYWx5dGljcyIsaWNvbk5hbWU6Imx1Y2lkZTpiYXJDaGFydCIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJBbmFseXRpY3MgdGFiIiksImFjdGlvbiIpfSx7a2V5OiJSZXBvcnRzIixpY29uTmFtZToibHVjaWRlOmZpbGVUZXh0IixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIlJlcG9ydHMgdGFiIiksImFjdGlvbiIpfV0pfW9uRGVhY3RpdmF0ZSgpe3RoaXMuYWN0aXZhdGVkPSExLGNvbnNvbGUubG9nKCJEYXNoYm9hcmQgZGVhY3RpdmF0ZWQiKX1yZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPHN0eWxlPgogICAgICAgIDpob3N0IHsKICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgcGFkZGluZzogNDBweDsKICAgICAgICAgIGNvbG9yOiAjYTNhM2EzOwogICAgICAgICAgZm9udC1mYW1pbHk6ICdHZWlzdCBTYW5zJywgJ0ludGVyJywgLWFwcGxlLXN5c3RlbSwgc2Fucy1zZXJpZjsKICAgICAgICB9CiAgICAgICAgaDEgeyBjb2xvcjogI2ZhZmFmYTsgZm9udC13ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiAyNHB4OyBtYXJnaW4tYm90dG9tOiA4cHg7IH0KICAgICAgICBwIHsgY29sb3I6ICM3MzczNzM7IG1hcmdpbi1ib3R0b206IDMycHg7IH0KICAgICAgICBkZWVzLXN0YXRzZ3JpZCB7CiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzMnB4OwogICAgICAgIH0KCiAgICAgICAgLmN0eC1hY3Rpb25zIHsKICAgICAgICAgIG1hcmdpbi10b3A6IDMycHg7CiAgICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjAyKTsKICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4wOCk7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgfQogICAgICAgIC5jdHgtYWN0aW9ucyBoMiB7IGNvbG9yOiAjZmFmYWZhOyBmb250LXNpemU6IDE2cHg7IGZvbnQtd2VpZ2h0OiA2MDA7IG1hcmdpbi1ib3R0b206IDE2cHg7IH0KICAgICAgICAuYnV0dG9uLWdyaWQgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICAgIGdhcDogOHB4OwogICAgICAgIH0KICAgICAgICAuY3R4LWJ0biB7CiAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDU5LCAxMzAsIDI0NiwgMC4xKTsKICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNTksIDEzMCwgMjQ2LCAwLjMpOwogICAgICAgICAgY29sb3I6ICM2MGE1ZmE7CiAgICAgICAgICBwYWRkaW5nOiA4cHggMTZweDsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIH0KICAgICAgICAuY3R4LWJ0bjpob3ZlciB7CiAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDU5LCAxMzAsIDI0NiwgMC4yKTsKICAgICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSg1OSwgMTMwLCAyNDYsIDAuNSk7CiAgICAgICAgfQogICAgICAgIC5jdHgtYnRuLmRhbmdlciB7CiAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDIzOSwgNjgsIDY4LCAwLjEpOwogICAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDIzOSwgNjgsIDY4LCAwLjMpOwogICAgICAgICAgY29sb3I6ICNmODcxNzE7CiAgICAgICAgfQogICAgICAgIC5jdHgtYnRuLmRhbmdlcjpob3ZlciB7CiAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDIzOSwgNjgsIDY4LCAwLjIpOwogICAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDIzOSwgNjgsIDY4LCAwLjUpOwogICAgICAgIH0KICAgICAgICAuY3R4LWJ0bi5zdWNjZXNzIHsKICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMzQsIDE5NywgOTQsIDAuMSk7CiAgICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoMzQsIDE5NywgOTQsIDAuMyk7CiAgICAgICAgICBjb2xvcjogIzRhZGU4MDsKICAgICAgICB9CiAgICAgICAgLmN0eC1idG4uc3VjY2Vzczpob3ZlciB7CiAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDM0LCAxOTcsIDk0LCAwLjIpOwogICAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDM0LCAxOTcsIDk0LCAwLjUpOwogICAgICAgIH0KICAgICAgPC9zdHlsZT4KICAgICAgPGgxPkRhc2hib2FyZDwvaDE+CiAgICAgIDxwPldlbGNvbWUgYmFjayEgSGVyZSdzIGFuIG92ZXJ2aWV3IG9mIHlvdXIgc3lzdGVtLjwvcD4KICAgICAgPGRlZXMtc3RhdHNncmlkCiAgICAgICAgLnRpbGVzPSR7dGhpcy5zdGF0c1RpbGVzfQogICAgICAgIEB0aWxlLWFjdGlvbj0ke2Q9PmNvbnNvbGUubG9nKCJUaWxlIGFjdGlvbjoiLGQuZGV0YWlsKX0KICAgICAgPjwvZGVlcy1zdGF0c2dyaWQ+CgogICAgICA8ZGl2IGNsYXNzPSJjdHgtYWN0aW9ucyI+CiAgICAgICAgPGgyPkNvbnRleHQgQWN0aW9ucyAoY3R4LmFwcHVpKTwvaDI+CiAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWdyaWQiPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY3R4LWJ0biIgQGNsaWNrPSR7KCk9PnRoaXMuY3R4Py5hcHB1aS5zZXRNYWluTWVudVZpc2libGUoITEpfT5IaWRlIE1haW4gTWVudTwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY3R4LWJ0biBzdWNjZXNzIiBAY2xpY2s9JHsoKT0+dGhpcy5jdHg/LmFwcHVpLnNldE1haW5NZW51VmlzaWJsZSghMCl9PlNob3cgTWFpbiBNZW51PC9idXR0b24+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjdHgtYnRuIiBAY2xpY2s9JHsoKT0+dGhpcy5jdHg/LmFwcHVpLnNldFNlY29uZGFyeU1lbnVWaXNpYmxlKCExKX0+SGlkZSBTZWNvbmRhcnkgTWVudTwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY3R4LWJ0biBzdWNjZXNzIiBAY2xpY2s9JHsoKT0+dGhpcy5jdHg/LmFwcHVpLnNldFNlY29uZGFyeU1lbnVWaXNpYmxlKCEwKX0+U2hvdyBTZWNvbmRhcnkgTWVudTwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY3R4LWJ0biIgQGNsaWNrPSR7KCk9PnRoaXMuY3R4Py5hcHB1aS5zZXRDb250ZW50VGFic1Zpc2libGUoITEpfT5IaWRlIENvbnRlbnQgVGFiczwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY3R4LWJ0biBzdWNjZXNzIiBAY2xpY2s9JHsoKT0+dGhpcy5jdHg/LmFwcHVpLnNldENvbnRlbnRUYWJzVmlzaWJsZSghMCl9PlNob3cgQ29udGVudCBUYWJzPC9idXR0b24+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjdHgtYnRuIiBAY2xpY2s9JHsoKT0+dGhpcy5jdHg/LmFwcHVpLnNldE1haW5NZW51Q29sbGFwc2VkKCEwKX0+Q29sbGFwc2UgTWFpbiBNZW51PC9idXR0b24+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjdHgtYnRuIHN1Y2Nlc3MiIEBjbGljaz0keygpPT50aGlzLmN0eD8uYXBwdWkuc2V0TWFpbk1lbnVDb2xsYXBzZWQoITEpfT5FeHBhbmQgTWFpbiBNZW51PC9idXR0b24+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjdHgtYnRuIiBAY2xpY2s9JHsoKT0+dGhpcy5jdHg/LmFwcHVpLnNldEJyZWFkY3J1bWJzKFsiRGFzaGJvYXJkIiwiT3ZlcnZpZXciLCJTdGF0cyJdKX0+U2V0IEJyZWFkY3J1bWJzPC9idXR0b24+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjdHgtYnRuIiBAY2xpY2s9JHsoKT0+dGhpcy5jdHg/LmFwcHVpLm5hdmlnYXRlVG9WaWV3KCJwcm9qZWN0cyIpfT5HbyB0byBQcm9qZWN0czwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY3R4LWJ0biIgQGNsaWNrPSR7KCk9PnRoaXMuY3R4Py5hcHB1aS5uYXZpZ2F0ZVRvVmlldygic2V0dGluZ3MiLHtzZWN0aW9uOiJzZWN1cml0eSJ9KX0+R28gdG8gU2V0dGluZ3MvU2VjdXJpdHk8L2J1dHRvbj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9ImN0eC1idG4iIEBjbGljaz0keygpPT50aGlzLmN0eD8uYXBwdWkuYWN0aXZpdHlMb2cuYWRkKHt0eXBlOiJjdXN0b20iLHVzZXI6IkRlbW8gVXNlciIsbWVzc2FnZToiQnV0dG9uIGNsaWNrZWQgZnJvbSBjdHghIixpY29uTmFtZToibHVjaWRlOm1vdXNlLXBvaW50ZXItY2xpY2sifSl9PkFkZCBBY3Rpdml0eSBFbnRyeTwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY3R4LWJ0biIgQGNsaWNrPSR7KCk9PnRoaXMuY3R4Py5hcHB1aS5zZXRNYWluTWVudUJhZGdlKCJ0YXNrcyIsOTkpfT5TZXQgVGFza3MgQmFkZ2UgdG8gOTk8L2J1dHRvbj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9ImN0eC1idG4gZGFuZ2VyIiBAY2xpY2s9JHsoKT0+dGhpcy5jdHg/LmFwcHVpLmNsZWFyTWFpbk1lbnVCYWRnZSgidGFza3MiKX0+Q2xlYXIgVGFza3MgQmFkZ2U8L2J1dHRvbj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9ImN0eC1idG4iIEBjbGljaz0keygpPT50aGlzLmN0eD8uYXBwdWkuc2V0Q29udGVudFRhYnNBdXRvSGlkZSghMCwxKX0+QXV0by1oaWRlIFRhYnMgKOKJpDEpPC9idXR0b24+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjdHgtYnRuIGRhbmdlciIgQGNsaWNrPSR7KCk9PnRoaXMuY3R4Py5hcHB1aS5zZXRDb250ZW50VGFic0F1dG9IaWRlKCExKX0+RGlzYWJsZSBBdXRvLWhpZGU8L2J1dHRvbj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9ImN0eC1idG4gc3VjY2VzcyIgQGNsaWNrPSR7KCk9PnRoaXMuYWRkQ2xvc2VhYmxlVGFiKCl9PkFkZCBDbG9zZWFibGUgVGFiPC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH10YWJDb3VudGVyPTA7YWRkQ2xvc2VhYmxlVGFiKCl7aWYoIXRoaXMuY3R4KXJldHVybjt0aGlzLnRhYkNvdW50ZXIrKztsZXQgZD1gVGFiICR7dGhpcy50YWJDb3VudGVyfWA7dGhpcy5jdHguYXBwdWkuYWRkQ29udGVudFRhYih7a2V5OmQsaWNvbk5hbWU6Imx1Y2lkZTpmaWxlIixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coYFNlbGVjdGVkICR7ZH1gKSwiYWN0aW9uIiksY2xvc2VhYmxlOiEwLG9uQ2xvc2U6aSgoKT0+e3RoaXMuY3R4Py5hcHB1aS5yZW1vdmVDb250ZW50VGFiKGQpfSwib25DbG9zZSIpfSl9fTtyZXR1cm4gcD1hfSkoKSxjVm89KCgpPT57bGV0IHM9W25lKCJkZW1vLXNldHRpbmdzLXZpZXciKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXTt2YXIgYz1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVtb1NldHRpbmdzVmlldyIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBiPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W1koKV0scD1bWSgpXSxlNyh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlY3Rpb24iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkodj0+InNlY3Rpb24iaW4gdiwiaGFzIiksZ2V0Omkodj0+di5zZWN0aW9uLCJnZXQiKSxzZXQ6aSgodix4KT0+e3Yuc2VjdGlvbj14fSwic2V0Iil9LG1ldGFkYXRhOmJ9LG8sbCksZTcodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJoYXNDaGFuZ2VzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHY9PiJoYXNDaGFuZ2VzImluIHYsImhhcyIpLGdldDppKHY9PnYuaGFzQ2hhbmdlcywiZ2V0Iiksc2V0OmkoKHYseCk9Pnt2Lmhhc0NoYW5nZXM9eH0sInNldCIpfSxtZXRhZGF0YTpifSxkLHUpLGU3KG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOmJ9LG51bGwsdCksYz1hPWUudmFsdWUsYiYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSksUWQoYSx0KX0jZT1RZCh0aGlzLG8sImdlbmVyYWwiKTtnZXQgc2VjdGlvbigpe3JldHVybiB0aGlzLiNlfXNldCBzZWN0aW9uKGIpe3RoaXMuI2U9Yn0jdD0oUWQodGhpcyxsKSxRZCh0aGlzLGQsITEpKTtnZXQgaGFzQ2hhbmdlcygpe3JldHVybiB0aGlzLiN0fXNldCBoYXNDaGFuZ2VzKGIpe3RoaXMuI3Q9Yn1hcHB1aT1RZCh0aGlzLHUpO29uQWN0aXZhdGUoYil7dGhpcy5hcHB1aT1iLmFwcHVpLGNvbnNvbGUubG9nKCJTZXR0aW5ncyBhY3RpdmF0ZWQgd2l0aCBwYXJhbXM6IixiLnBhcmFtcyksYi5wYXJhbXM/LnNlY3Rpb24mJih0aGlzLnNlY3Rpb249Yi5wYXJhbXMuc2VjdGlvbiksYi5hcHB1aS5zZXRTZWNvbmRhcnlNZW51KHtoZWFkaW5nOiJTZXR0aW5ncyIsZ3JvdXBzOlt7bmFtZToiQWNjb3VudCIsaWNvbk5hbWU6Imx1Y2lkZTp1c2VyIixpdGVtczpbe2tleToiZ2VuZXJhbCIsaWNvbk5hbWU6InNldHRpbmdzIixhY3Rpb246aSgoKT0+dGhpcy5zaG93U2VjdGlvbigiZ2VuZXJhbCIpLCJhY3Rpb24iKX0se2tleToicHJvZmlsZSIsaWNvbk5hbWU6InVzZXIiLGFjdGlvbjppKCgpPT50aGlzLnNob3dTZWN0aW9uKCJwcm9maWxlIiksImFjdGlvbiIpfSx7a2V5OiJzZWN1cml0eSIsaWNvbk5hbWU6InNoaWVsZCIsYWN0aW9uOmkoKCk9PnRoaXMuc2hvd1NlY3Rpb24oInNlY3VyaXR5IiksImFjdGlvbiIpfV19LHtuYW1lOiJQcmVmZXJlbmNlcyIsaWNvbk5hbWU6Imx1Y2lkZTpzbGlkZXJzIixpdGVtczpbe2tleToibm90aWZpY2F0aW9ucyIsaWNvbk5hbWU6ImJlbGwiLGJhZGdlOjMsYWN0aW9uOmkoKCk9PnRoaXMuc2hvd1NlY3Rpb24oIm5vdGlmaWNhdGlvbnMiKSwiYWN0aW9uIil9LHtrZXk6ImFwcGVhcmFuY2UiLGljb25OYW1lOiJwYWxldHRlIixhY3Rpb246aSgoKT0+dGhpcy5zaG93U2VjdGlvbigiYXBwZWFyYW5jZSIpLCJhY3Rpb24iKX1dfV19KSxiLmFwcHVpLnNldFNlY29uZGFyeU1lbnVTZWxlY3Rpb24odGhpcy5zZWN0aW9uKSxiLmFwcHVpLnNldENvbnRlbnRUYWJzKFtdKX1vbkRlYWN0aXZhdGUoKXtjb25zb2xlLmxvZygiU2V0dGluZ3MgZGVhY3RpdmF0ZWQiKSx0aGlzLmhhc0NoYW5nZXM9ITF9Y2FuRGVhY3RpdmF0ZSgpe3JldHVybiB0aGlzLmhhc0NoYW5nZXM/IllvdSBoYXZlIHVuc2F2ZWQgY2hhbmdlcy4gTGVhdmUgYW55d2F5PyI6ITB9c2hvd1NlY3Rpb24oYil7dGhpcy5zZWN0aW9uPWIsdGhpcy5hcHB1aT8uc2V0U2Vjb25kYXJ5TWVudVNlbGVjdGlvbihiKX1zaW11bGF0ZUNoYW5nZSgpe3RoaXMuaGFzQ2hhbmdlcz0hMH1yZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPHN0eWxlPgogICAgICAgIDpob3N0IHsKICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgcGFkZGluZzogNDBweDsKICAgICAgICAgIGNvbG9yOiAjYTNhM2EzOwogICAgICAgICAgZm9udC1mYW1pbHk6ICdHZWlzdCBTYW5zJywgJ0ludGVyJywgLWFwcGxlLXN5c3RlbSwgc2Fucy1zZXJpZjsKICAgICAgICB9CiAgICAgICAgaDEgeyBjb2xvcjogI2ZhZmFmYTsgZm9udC13ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiAyNHB4OyBtYXJnaW4tYm90dG9tOiA4cHg7IH0KICAgICAgICBwIHsgY29sb3I6ICM3MzczNzM7IG1hcmdpbi1ib3R0b206IDI0cHg7IH0KICAgICAgICAuc2VjdGlvbi1uYW1lIHsKICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4wNSk7CiAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMSk7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICAgICAgY29sb3I6ICNmYWZhZmE7CiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICAgIH0KICAgICAgICAuYWN0aW9ucyB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgIH0KICAgICAgICBidXR0b24gewogICAgICAgICAgYmFja2dyb3VuZDogIzNiODJmNjsKICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICAgIHBhZGRpbmc6IDhweCAxNnB4OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIH0KICAgICAgICBidXR0b246aG92ZXIgewogICAgICAgICAgYmFja2dyb3VuZDogIzI1NjNlYjsKICAgICAgICB9CiAgICAgICAgLndhcm5pbmcgewogICAgICAgICAgY29sb3I6ICNmYmJmMjQ7CiAgICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgICBtYXJnaW4tdG9wOiAxNnB4OwogICAgICAgIH0KICAgICAgPC9zdHlsZT4KICAgICAgPGgxPlNldHRpbmdzPC9oMT4KICAgICAgPHA+TWFuYWdlIHlvdXIgYWNjb3VudCBhbmQgYXBwbGljYXRpb24gcHJlZmVyZW5jZXMuPC9wPgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLW5hbWUiPgogICAgICAgIEN1cnJlbnQgc2VjdGlvbjogPHN0cm9uZz4ke3RoaXMuc2VjdGlvbn08L3N0cm9uZz4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMiPgogICAgICAgIDxidXR0b24gQGNsaWNrPSR7KCk9PnRoaXMuc2ltdWxhdGVDaGFuZ2UoKX0+TWFrZSBDaGFuZ2VzPC9idXR0b24+CiAgICAgIDwvZGl2PgogICAgICAke3RoaXMuaGFzQ2hhbmdlcz93YDxwIGNsYXNzPSJ3YXJuaW5nIj5Zb3UgaGF2ZSB1bnNhdmVkIGNoYW5nZXMuIE5hdmlnYXRpb24gd2lsbCBwcm9tcHQgZm9yIGNvbmZpcm1hdGlvbi48L3A+YDoiIn0KICAgIGB9fTtyZXR1cm4gYz1hfSkoKSxkVm89KCgpPT57bGV0IHM9W25lKCJkZW1vLXByb2plY3RzLXZpZXciKV0sZSx0PVtdLGEscj13ZTt2YXIgbj1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVtb1Byb2plY3RzVmlldyIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBvPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO2U3KG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOm99LG51bGwsdCksbj1hPWUudmFsdWUsbyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpvfSksUWQoYSx0KX1vbkFjdGl2YXRlKG8pe28uYXBwdWkuc2V0U2Vjb25kYXJ5TWVudSh7aGVhZGluZzoiUHJvamVjdHMiLGdyb3Vwczpbe25hbWU6Ik15IFByb2plY3RzIixpY29uTmFtZToibHVjaWRlOmZvbGRlciIsaXRlbXM6W3trZXk6IkFjdGl2ZSIsaWNvbk5hbWU6ImZvbGRlciIsYmFkZ2U6MyxhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIkFjdGl2ZSIpLCJhY3Rpb24iKX0se2tleToiQXJjaGl2ZWQiLGljb25OYW1lOiJhcmNoaXZlIixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIkFyY2hpdmVkIiksImFjdGlvbiIpfSx7a2V5OiJTaGFyZWQiLGljb25OYW1lOiJ1c2VycyIsYmFkZ2U6MixiYWRnZVZhcmlhbnQ6Indhcm5pbmciLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiU2hhcmVkIiksImFjdGlvbiIpfV19LHtuYW1lOiJRdWljayBBY3Rpb25zIixpY29uTmFtZToibHVjaWRlOnphcCIsaXRlbXM6W3t0eXBlOiJhY3Rpb24iLGtleToiTmV3IFByb2plY3QiLGljb25OYW1lOiJsdWNpZGU6Zm9sZGVyUGx1cyIsYWN0aW9uOmkoKCk9PmFsZXJ0KCJDcmVhdGUgbmV3IHByb2plY3QiKSwiYWN0aW9uIil9LHt0eXBlOiJhY3Rpb24iLGtleToiSW1wb3J0IixpY29uTmFtZToibHVjaWRlOmRvd25sb2FkIixhY3Rpb246aSgoKT0+YWxlcnQoIkltcG9ydCBwcm9qZWN0IiksImFjdGlvbiIpfSx7dHlwZToiZGl2aWRlciJ9LHt0eXBlOiJsaW5rIixrZXk6IlRlbXBsYXRlcyIsaWNvbk5hbWU6Imx1Y2lkZTpsYXlvdXRUZW1wbGF0ZSIsaHJlZjoiaHR0cHM6Ly90ZW1wbGF0ZXMuZXhhbXBsZS5jb20ifV19XX0pLG8uYXBwdWkuc2V0Q29udGVudFRhYnMoW3trZXk6IkdyaWQiLGljb25OYW1lOiJsdWNpZGU6Z3JpZCIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJHcmlkIHZpZXciKSwiYWN0aW9uIil9LHtrZXk6Ikxpc3QiLGljb25OYW1lOiJsdWNpZGU6bGlzdCIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJMaXN0IHZpZXciKSwiYWN0aW9uIil9LHtrZXk6IkJvYXJkIixpY29uTmFtZToibHVjaWRlOmthbmJhbiIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJCb2FyZCB2aWV3IiksImFjdGlvbiIpfV0pfXJlbmRlcigpe3JldHVybiB3YAogICAgICA8c3R5bGU+CiAgICAgICAgOmhvc3QgewogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICBwYWRkaW5nOiA0MHB4OwogICAgICAgICAgY29sb3I6ICNhM2EzYTM7CiAgICAgICAgICBmb250LWZhbWlseTogJ0dlaXN0IFNhbnMnLCAnSW50ZXInLCAtYXBwbGUtc3lzdGVtLCBzYW5zLXNlcmlmOwogICAgICAgIH0KICAgICAgICBoMSB7IGNvbG9yOiAjZmFmYWZhOyBmb250LXdlaWdodDogNjAwOyBmb250LXNpemU6IDI0cHg7IG1hcmdpbi1ib3R0b206IDI0cHg7IH0KICAgICAgICAucHJvamVjdHMgewogICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7CiAgICAgICAgICBnYXA6IDE2cHg7CiAgICAgICAgfQogICAgICAgIC5wcm9qZWN0IHsKICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4wMyk7CiAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMDgpOwogICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgICAgcGFkZGluZzogMjBweDsKICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjJzOwogICAgICAgIH0KICAgICAgICAucHJvamVjdDpob3ZlciB7CiAgICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsMC4yKTsKICAgICAgICB9CiAgICAgICAgLnByb2plY3QgaDMgeyBjb2xvcjogI2ZhZmFmYTsgbWFyZ2luOiAwIDAgOHB4IDA7IGZvbnQtc2l6ZTogMTZweDsgfQogICAgICAgIC5wcm9qZWN0IHAgeyBjb2xvcjogIzczNzM3MzsgbWFyZ2luOiAwOyBmb250LXNpemU6IDEzcHg7IH0KICAgICAgICAuYmFkZ2UgewogICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgICAgYmFja2dyb3VuZDogIzE0NTMyZDsKICAgICAgICAgIGNvbG9yOiAjNGFkZTgwOwogICAgICAgICAgcGFkZGluZzogMnB4IDhweDsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDlweDsKICAgICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7CiAgICAgICAgfQogICAgICA8L3N0eWxlPgogICAgICA8aDE+UHJvamVjdHM8L2gxPgogICAgICA8ZGl2IGNsYXNzPSJwcm9qZWN0cyI+CiAgICAgICAgPGRpdiBjbGFzcz0icHJvamVjdCI+CiAgICAgICAgICA8aDM+RnJvbnRlbmQgQXBwIDxzcGFuIGNsYXNzPSJiYWRnZSI+QWN0aXZlPC9zcGFuPjwvaDM+CiAgICAgICAgICA8cD5SZWFjdC1iYXNlZCBkYXNoYm9hcmQgYXBwbGljYXRpb248L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icHJvamVjdCI+CiAgICAgICAgICA8aDM+QVBJIFNlcnZlciA8c3BhbiBjbGFzcz0iYmFkZ2UiPkFjdGl2ZTwvc3Bhbj48L2gzPgogICAgICAgICAgPHA+Tm9kZS5qcyBSRVNUIEFQSSBiYWNrZW5kPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InByb2plY3QiPgogICAgICAgICAgPGgzPk1vYmlsZSBBcHAgPHNwYW4gY2xhc3M9ImJhZGdlIj5BY3RpdmU8L3NwYW4+PC9oMz4KICAgICAgICAgIDxwPlJlYWN0IE5hdGl2ZSBpT1MvQW5kcm9pZCBhcHA8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icHJvamVjdCI+CiAgICAgICAgICA8aDM+RG9jdW1lbnRhdGlvbjwvaDM+CiAgICAgICAgICA8cD5UZWNobmljYWwgZG9jdW1lbnRhdGlvbiBzaXRlPC9wPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9fTtyZXR1cm4gbj1hfSkoKSx1Vm89KCgpPT57bGV0IHM9W25lKCJkZW1vLXRhc2tzLXZpZXciKV0sZSx0PVtdLGEscj13ZTt2YXIgbj1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVtb1Rhc2tzVmlldyIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBvPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO2U3KG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOm99LG51bGwsdCksbj1hPWUudmFsdWUsbyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpvfSksUWQoYSx0KX1vbkFjdGl2YXRlKG8pe28uYXBwdWkuc2V0U2Vjb25kYXJ5TWVudSh7aGVhZGluZzoiVGFza3MiLGdyb3Vwczpbe25hbWU6IlZpZXdzIixpY29uTmFtZToibHVjaWRlOmV5ZSIsaXRlbXM6W3trZXk6IkFsbCBUYXNrcyIsaWNvbk5hbWU6Imxpc3QiLGJhZGdlOjEyLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiQWxsIiksImFjdGlvbiIpfSx7a2V5OiJUb2RheSIsaWNvbk5hbWU6ImNhbGVuZGFyIixiYWRnZTozLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiVG9kYXkiKSwiYWN0aW9uIil9LHtrZXk6IlVwY29taW5nIixpY29uTmFtZToiY2xvY2siLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiVXBjb21pbmciKSwiYWN0aW9uIil9LHtrZXk6IkNvbXBsZXRlZCIsaWNvbk5hbWU6ImNoZWNrQ2lyY2xlIixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIkNvbXBsZXRlZCIpLCJhY3Rpb24iKX1dfSx7bmFtZToiRmlsdGVycyIsaWNvbk5hbWU6Imx1Y2lkZTpmaWx0ZXIiLGl0ZW1zOlt7dHlwZToiaGVhZGVyIixsYWJlbDoiUHJpb3JpdHkifSx7dHlwZToibXVsdGlGaWx0ZXIiLGtleToiUHJpb3JpdHkiLGljb25OYW1lOiJsdWNpZGU6ZmxhZyIsb3B0aW9uczpbe2tleToiaGlnaCIsbGFiZWw6IkhpZ2giLGNoZWNrZWQ6ITAsaWNvbk5hbWU6Imx1Y2lkZTphbGVydENpcmNsZSJ9LHtrZXk6Im1lZGl1bSIsbGFiZWw6Ik1lZGl1bSIsY2hlY2tlZDohMCxpY29uTmFtZToibHVjaWRlOm1pbnVzQ2lyY2xlIn0se2tleToibG93IixsYWJlbDoiTG93IixjaGVja2VkOiExLGljb25OYW1lOiJsdWNpZGU6Y2lyY2xlIn1dLG9uQ2hhbmdlOmkobD0+Y29uc29sZS5sb2coIlByaW9yaXR5IGZpbHRlcjoiLGwpLCJvbkNoYW5nZSIpfSx7dHlwZToiZGl2aWRlciJ9LHt0eXBlOiJoZWFkZXIiLGxhYmVsOiJPcHRpb25zIn0se3R5cGU6ImZpbHRlciIsa2V5OiJTaG93IFN1YnRhc2tzIixpY29uTmFtZToibHVjaWRlOmxpc3RUcmVlIixhY3RpdmU6ITAsb25Ub2dnbGU6aShsPT5jb25zb2xlLmxvZygiU2hvdyBzdWJ0YXNrczoiLGwpLCJvblRvZ2dsZSIpfSx7dHlwZToiZmlsdGVyIixrZXk6IlNob3cgQ29tcGxldGVkIixpY29uTmFtZToibHVjaWRlOmNoZWNrU3F1YXJlIixhY3RpdmU6ITEsb25Ub2dnbGU6aShsPT5jb25zb2xlLmxvZygiU2hvdyBjb21wbGV0ZWQ6IixsKSwib25Ub2dnbGUiKX1dfSx7bmFtZToiQWN0aW9ucyIsaWNvbk5hbWU6Imx1Y2lkZTp6YXAiLGl0ZW1zOlt7dHlwZToiYWN0aW9uIixrZXk6IkFkZCBUYXNrIixpY29uTmFtZToibHVjaWRlOnBsdXMiLGFjdGlvbjppKCgpPT5hbGVydCgiQWRkIG5ldyB0YXNrIiksImFjdGlvbiIpfSx7dHlwZToiYWN0aW9uIixrZXk6IkltcG9ydCBUYXNrcyIsaWNvbk5hbWU6Imx1Y2lkZTp1cGxvYWQiLGFjdGlvbjppKCgpPT5hbGVydCgiSW1wb3J0IHRhc2tzIiksImFjdGlvbiIpfSx7dHlwZToiZGl2aWRlciJ9LHt0eXBlOiJhY3Rpb24iLGtleToiQ2xlYXIgQ29tcGxldGVkIixpY29uTmFtZToibHVjaWRlOnRyYXNoMiIsdmFyaWFudDoiZGFuZ2VyIixjb25maXJtTWVzc2FnZToiRGVsZXRlIGFsbCBjb21wbGV0ZWQgdGFza3M/IixhY3Rpb246aSgoKT0+YWxlcnQoIkNsZWFyZWQgY29tcGxldGVkIHRhc2tzIiksImFjdGlvbiIpfV19XX0pLG8uYXBwdWkuc2V0Q29udGVudFRhYnMoW3trZXk6Ikxpc3QiLGljb25OYW1lOiJsdWNpZGU6bGlzdCIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJMaXN0IiksImFjdGlvbiIpfSx7a2V5OiJDYWxlbmRhciIsaWNvbk5hbWU6Imx1Y2lkZTpjYWxlbmRhciIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJDYWxlbmRhciIpLCJhY3Rpb24iKX1dKX1yZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPHN0eWxlPgogICAgICAgIDpob3N0IHsKICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgcGFkZGluZzogNDBweDsKICAgICAgICAgIGNvbG9yOiAjYTNhM2EzOwogICAgICAgICAgZm9udC1mYW1pbHk6ICdHZWlzdCBTYW5zJywgJ0ludGVyJywgLWFwcGxlLXN5c3RlbSwgc2Fucy1zZXJpZjsKICAgICAgICB9CiAgICAgICAgaDEgeyBjb2xvcjogI2ZhZmFmYTsgZm9udC13ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiAyNHB4OyBtYXJnaW4tYm90dG9tOiAyNHB4OyB9CiAgICAgICAgLnRhc2stbGlzdCB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgIGdhcDogOHB4OwogICAgICAgIH0KICAgICAgICAudGFzayB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgIGdhcDogMTJweDsKICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4wMyk7CiAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMDgpOwogICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgICAgcGFkZGluZzogMTJweCAxNnB4OwogICAgICAgIH0KICAgICAgICAuY2hlY2tib3ggewogICAgICAgICAgd2lkdGg6IDE4cHg7CiAgICAgICAgICBoZWlnaHQ6IDE4cHg7CiAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAjNTI1MjUyOwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIH0KICAgICAgICAudGFzay10ZXh0IHsgY29sb3I6ICNmYWZhZmE7IGZsZXg6IDE7IH0KICAgICAgICAuZHVlLWRhdGUgeyBjb2xvcjogIzczNzM3MzsgZm9udC1zaXplOiAxMnB4OyB9CiAgICAgICAgLnByaW9yaXR5IHsKICAgICAgICAgIHBhZGRpbmc6IDJweCA4cHg7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgfQogICAgICAgIC5wcmlvcml0eS5oaWdoIHsgYmFja2dyb3VuZDogIzQ1MGEwYTsgY29sb3I6ICNmODcxNzE7IH0KICAgICAgICAucHJpb3JpdHkubWVkaXVtIHsgYmFja2dyb3VuZDogIzQ1MWEwMzsgY29sb3I6ICNmYmJmMjQ7IH0KICAgICAgPC9zdHlsZT4KICAgICAgPGgxPlRhc2tzPC9oMT4KICAgICAgPGRpdiBjbGFzcz0idGFzay1saXN0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJ0YXNrIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNoZWNrYm94Ij48L2Rpdj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0YXNrLXRleHQiPlJldmlldyBwdWxsIHJlcXVlc3QgIzQyPC9zcGFuPgogICAgICAgICAgPHNwYW4gY2xhc3M9ImR1ZS1kYXRlIj5Ub2RheTwvc3Bhbj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcmlvcml0eSBoaWdoIj5IaWdoPC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InRhc2siPgogICAgICAgICAgPGRpdiBjbGFzcz0iY2hlY2tib3giPjwvZGl2PgogICAgICAgICAgPHNwYW4gY2xhc3M9InRhc2stdGV4dCI+VXBkYXRlIGRvY3VtZW50YXRpb248L3NwYW4+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iZHVlLWRhdGUiPlRvbW9ycm93PC9zcGFuPgogICAgICAgICAgPHNwYW4gY2xhc3M9InByaW9yaXR5IG1lZGl1bSI+TWVkaXVtPC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InRhc2siPgogICAgICAgICAgPGRpdiBjbGFzcz0iY2hlY2tib3giPjwvZGl2PgogICAgICAgICAgPHNwYW4gY2xhc3M9InRhc2stdGV4dCI+V3JpdGUgdW5pdCB0ZXN0czwvc3Bhbj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJkdWUtZGF0ZSI+RGVjIDIwPC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9fTtyZXR1cm4gbj1hfSkoKSxCdmE9aSgoKT0+e2xldCBzPXticmFuZGluZzp7bG9nb0ljb246Imx1Y2lkZTpib3giLGxvZ29UZXh0OiJBY21lIEFwcCJ9LGFwcEJhcjp7bWVudUl0ZW1zOlt7bmFtZToiRmlsZSIsYWN0aW9uOmkoYXN5bmMoKT0+e30sImFjdGlvbiIpLHN1Ym1lbnU6W3tuYW1lOiJOZXcgUHJvamVjdCIsc2hvcnRjdXQ6IkNtZCtOIixpY29uTmFtZToiZmlsZVBsdXMiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJOZXciKSwiYWN0aW9uIil9LHtuYW1lOiJPcGVuLi4uIixzaG9ydGN1dDoiQ21kK08iLGljb25OYW1lOiJmb2xkZXJPcGVuIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiT3BlbiIpLCJhY3Rpb24iKX0se25hbWU6IlJlY2VudCBQcm9qZWN0cyIsYWN0aW9uOmkoYXN5bmMoKT0+e30sImFjdGlvbiIpLHN1Ym1lbnU6W3tuYW1lOiJteS1hcHAiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJPcGVuIG15LWFwcCIpLCJhY3Rpb24iKX0se25hbWU6ImNvbXBvbmVudC1saWIiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJPcGVuIGNvbXBvbmVudC1saWIiKSwiYWN0aW9uIil9XX0se2RpdmlkZXI6ITB9LHtuYW1lOiJTYXZlIEFsbCIsc2hvcnRjdXQ6IkNtZCtTIixpY29uTmFtZToic2F2ZSIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIlNhdmUiKSwiYWN0aW9uIil9XX0se25hbWU6IkVkaXQiLGFjdGlvbjppKGFzeW5jKCk9Pnt9LCJhY3Rpb24iKSxzdWJtZW51Olt7bmFtZToiVW5kbyIsc2hvcnRjdXQ6IkNtZCtaIixpY29uTmFtZToidW5kbyIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIlVuZG8iKSwiYWN0aW9uIil9LHtuYW1lOiJSZWRvIixzaG9ydGN1dDoiQ21kK1NoaWZ0K1oiLGljb25OYW1lOiJyZWRvIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiUmVkbyIpLCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJDdXQiLHNob3J0Y3V0OiJDbWQrWCIsaWNvbk5hbWU6InNjaXNzb3JzIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiQ3V0IiksImFjdGlvbiIpfSx7bmFtZToiQ29weSIsc2hvcnRjdXQ6IkNtZCtDIixpY29uTmFtZToiY29weSIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIkNvcHkiKSwiYWN0aW9uIil9LHtuYW1lOiJQYXN0ZSIsc2hvcnRjdXQ6IkNtZCtWIixpY29uTmFtZToiY2xpcGJvYXJkIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiUGFzdGUiKSwiYWN0aW9uIil9XX0se25hbWU6IlZpZXciLGFjdGlvbjppKGFzeW5jKCk9Pnt9LCJhY3Rpb24iKSxzdWJtZW51Olt7bmFtZToiVG9nZ2xlIFNpZGViYXIiLHNob3J0Y3V0OiJDbWQrQiIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIlRvZ2dsZSBzaWRlYmFyIiksImFjdGlvbiIpfSx7bmFtZToiVG9nZ2xlIEFjdGl2aXR5IExvZyIsc2hvcnRjdXQ6IkNtZCtTaGlmdCtBIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiVG9nZ2xlIGFjdGl2aXR5IiksImFjdGlvbiIpfV19LHtuYW1lOiJIZWxwIixhY3Rpb246aShhc3luYygpPT57fSwiYWN0aW9uIiksc3VibWVudTpbe25hbWU6IkRvY3VtZW50YXRpb24iLGljb25OYW1lOiJib29rIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiRG9jcyIpLCJhY3Rpb24iKX0se25hbWU6IktleWJvYXJkIFNob3J0Y3V0cyIsaWNvbk5hbWU6ImtleWJvYXJkIixzaG9ydGN1dDoiQ21kKy8iLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJTaG9ydGN1dHMiKSwiYWN0aW9uIil9LHtkaXZpZGVyOiEwfSx7bmFtZToiQWJvdXQiLGljb25OYW1lOiJpbmZvIixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiQWJvdXQiKSwiYWN0aW9uIil9XX1dLGJyZWFkY3J1bWJzOiJEYXNoYm9hcmQiLHNob3dXaW5kb3dDb250cm9sczohMCxzaG93U2VhcmNoOiEwLHVzZXI6e25hbWU6IkphbmUgU21pdGgiLGVtYWlsOiJqYW5lLnNtaXRoQGV4YW1wbGUuY29tIixzdGF0dXM6Im9ubGluZSJ9LHByb2ZpbGVNZW51SXRlbXM6W3tuYW1lOiJQcm9maWxlIixpY29uTmFtZToidXNlciIsYWN0aW9uOmkoYXN5bmMoKT0+Y29uc29sZS5sb2coIlByb2ZpbGUiKSwiYWN0aW9uIil9LHtuYW1lOiJBY2NvdW50IFNldHRpbmdzIixpY29uTmFtZToic2V0dGluZ3MiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJTZXR0aW5ncyIpLCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJIZWxwICYgU3VwcG9ydCIsaWNvbk5hbWU6ImhlbHBDaXJjbGUiLGFjdGlvbjppKGFzeW5jKCk9PmNvbnNvbGUubG9nKCJIZWxwIiksImFjdGlvbiIpfSx7ZGl2aWRlcjohMH0se25hbWU6IlNpZ24gT3V0IixpY29uTmFtZToibG9nT3V0IixhY3Rpb246aShhc3luYygpPT5jb25zb2xlLmxvZygiU2lnbiBvdXQiKSwiYWN0aW9uIil9XX0sdmlld3M6W3tpZDoiZGFzaGJvYXJkIixuYW1lOiJEYXNoYm9hcmQiLGljb25OYW1lOiJsdWNpZGU6aG9tZSIsY29udGVudDoiZGVtby1kYXNoYm9hcmQtdmlldyIscm91dGU6ImRhc2hib2FyZCJ9LHtpZDoicHJvamVjdHMiLG5hbWU6IlByb2plY3RzIixpY29uTmFtZToibHVjaWRlOmZvbGRlciIsY29udGVudDoiZGVtby1wcm9qZWN0cy12aWV3Iixyb3V0ZToicHJvamVjdHMiLGJhZGdlOjN9LHtpZDoidGFza3MiLG5hbWU6IlRhc2tzIixpY29uTmFtZToibHVjaWRlOmNoZWNrU3F1YXJlIixjb250ZW50OiJkZW1vLXRhc2tzLXZpZXciLHJvdXRlOiJ0YXNrcyIsYmFkZ2U6MTJ9LHtpZDoic2V0dGluZ3MiLG5hbWU6IlNldHRpbmdzIixpY29uTmFtZToibHVjaWRlOnNldHRpbmdzIixjb250ZW50OiJkZW1vLXNldHRpbmdzLXZpZXciLHJvdXRlOiJzZXR0aW5ncy86c2VjdGlvbj8ifV0sbWFpbk1lbnU6e3NlY3Rpb25zOlt7bmFtZToiTWFpbiIsdmlld3M6WyJkYXNoYm9hcmQiXX0se25hbWU6IldvcmtzcGFjZSIsdmlld3M6WyJwcm9qZWN0cyIsInRhc2tzIl19XSxib3R0b21JdGVtczpbInNldHRpbmdzIl19LGRlZmF1bHRWaWV3OiJkYXNoYm9hcmQiLGJvdHRvbUJhcjp7dmlzaWJsZTohMCx3aWRnZXRzOlt7aWQ6InN0YXR1cyIsaWNvbk5hbWU6Imx1Y2lkZTphY3Rpdml0eSIsbGFiZWw6IlN5c3RlbSBPbmxpbmUiLHN0YXR1czoic3VjY2VzcyIsdG9vbHRpcDoiQWxsIHN5c3RlbXMgb3BlcmF0aW9uYWwiLG9uQ2xpY2s6aSgoKT0+Y29uc29sZS5sb2coIlN0YXR1cyBjbGlja2VkIiksIm9uQ2xpY2siKX0se2lkOiJub3RpZmljYXRpb25zIixpY29uTmFtZToibHVjaWRlOmJlbGwiLGxhYmVsOiIzIG5vdGlmaWNhdGlvbnMiLHN0YXR1czoid2FybmluZyIsdG9vbHRpcDoiWW91IGhhdmUgdW5yZWFkIG5vdGlmaWNhdGlvbnMiLG9uQ2xpY2s6aSgoKT0+Y29uc29sZS5sb2coIk5vdGlmaWNhdGlvbnMgY2xpY2tlZCIpLCJvbkNsaWNrIil9LHtpZDoidmVyc2lvbiIsaWNvbk5hbWU6Imx1Y2lkZTpnaXRCcmFuY2giLGxhYmVsOiJ2MS4yLjMiLHBvc2l0aW9uOiJyaWdodCIsdG9vbHRpcDoiQ3VycmVudCB2ZXJzaW9uIn1dLGFjdGlvbnM6W3tpZDoidGVybWluYWwiLGljb25OYW1lOiJsdWNpZGU6dGVybWluYWwiLHRvb2x0aXA6Ik9wZW4gVGVybWluYWwiLHBvc2l0aW9uOiJyaWdodCIsb25DbGljazppKCgpPT5jb25zb2xlLmxvZygiVGVybWluYWwgY2xpY2tlZCIpLCJvbkNsaWNrIil9XX0sb25WaWV3Q2hhbmdlOmkoKGEscik9Pntjb25zb2xlLmxvZyhgVmlldyBjaGFuZ2VkIHRvOiAke2F9ICgke3IubmFtZX0pYCl9LCJvblZpZXdDaGFuZ2UiKSxvblNlYXJjaDppKGE9Pntjb25zb2xlLmxvZygiU2VhcmNoIHF1ZXJ5OiIsYSl9LCJvblNlYXJjaCIpfSxlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2UuY2xhc3NOYW1lPSJkZW1vLWNvbnRhaW5lciIsZS5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDsgaGVpZ2h0OiAxMDAlOyB3aWR0aDogMTAwJTsgb3ZlcmZsb3c6IGhpZGRlbjsiO2xldCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRlZXMtYXBwdWkiKTtyZXR1cm4gZS5hcHBlbmRDaGlsZCh0KSxzZXRUaW1lb3V0KGFzeW5jKCk9Pnthd2FpdCB0LnVwZGF0ZUNvbXBsZXRlLHQuY29uZmlndXJlKHMpLHNldFRpbWVvdXQoKCk9Pnt0LmFjdGl2aXR5TG9nLmFkZE1hbnkoW3t0eXBlOiJsb2dpbiIsdXNlcjoiSmFuZSBTbWl0aCIsbWVzc2FnZToibG9nZ2VkIGluIGZyb20gQ2hyb21lIG9uIG1hY09TIn0se3R5cGU6ImNyZWF0ZSIsdXNlcjoiSmFuZSBTbWl0aCIsbWVzc2FnZTonY3JlYXRlZCBwcm9qZWN0ICJGcm9udGVuZCBBcHAiJ30se3R5cGU6InVwZGF0ZSIsdXNlcjoiSm9obiBEb2UiLG1lc3NhZ2U6InVwZGF0ZWQgQVBJIGRvY3VtZW50YXRpb24ifSx7dHlwZToidmlldyIsdXNlcjoiSmFuZSBTbWl0aCIsbWVzc2FnZToidmlld2VkIGRhc2hib2FyZCBhbmFseXRpY3MifSx7dHlwZToiZGVsZXRlIix1c2VyOiJBZG1pbiIsbWVzc2FnZToicmVtb3ZlZCBkZXByZWNhdGVkIGVuZHBvaW50In0se3R5cGU6ImN1c3RvbSIsdXNlcjoiU3lzdGVtIixtZXNzYWdlOiJzY2hlZHVsZWQgYmFja3VwIGNvbXBsZXRlZCIsaWNvbk5hbWU6Imx1Y2lkZTpkYXRhYmFzZSJ9XSl9LDUwMCksdC52aWV3Q2hhbmdlZCQuc3Vic2NyaWJlKGE9Pntjb25zb2xlLmxvZygiVmlldyBjaGFuZ2VkIGV2ZW50OiIsYSksdC5zZXRCcmVhZGNydW1icyhhLnZpZXcubmFtZSl9KSx0LnZpZXdMaWZlY3ljbGUkLnN1YnNjcmliZShhPT57Y29uc29sZS5sb2coIkxpZmVjeWNsZSBldmVudDoiLGEudHlwZSxhLnZpZXdJZCl9KSxzZXRUaW1lb3V0KCgpPT57dC5zZXRNYWluTWVudUJhZGdlKCJ0YXNrcyIsMTUpLHQuYWN0aXZpdHlMb2cuYWRkKHt0eXBlOiJ1cGRhdGUiLHVzZXI6IlN5c3RlbSIsbWVzc2FnZToibmV3IHRhc2tzIGFkZGVkIn0pfSw1ZTMpfSwwKSx3YAogICAgPGRlZXMtZGVtb3dyYXBwZXI+CiAgICAgICR7ZX0KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KICBgfSwiZGVtb0Z1bmMiKX0pO3ZhciBlMmUsam50PWcoKCk9PntwZSgpO2UyZT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJWaWV3UmVnaXN0cnkiKX12aWV3cz1uZXcgTWFwO2luc3RhbmNlcz1uZXcgTWFwO2N1cnJlbnRWaWV3SWQ9bnVsbDthcHB1aT1udWxsO3NldEFwcHVpUmVmKGUpe3RoaXMuYXBwdWk9ZX1yZWdpc3RlcihlKXt0aGlzLnZpZXdzLmhhcyhlLmlkKSYmY29uc29sZS53YXJuKGBWaWV3IHdpdGggaWQgIiR7ZS5pZH0iIGFscmVhZHkgcmVnaXN0ZXJlZC4gT3ZlcndyaXRpbmcuYCksdGhpcy52aWV3cy5zZXQoZS5pZCxlKX1yZWdpc3RlckFsbChlKXtlLmZvckVhY2godD0+dGhpcy5yZWdpc3Rlcih0KSl9Z2V0KGUpe3JldHVybiB0aGlzLnZpZXdzLmdldChlKX1nZXRWaWV3SWRzKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy52aWV3cy5rZXlzKCkpfWdldEFsbCgpe3JldHVybiBBcnJheS5mcm9tKHRoaXMudmlld3MudmFsdWVzKCkpfWdldFJvdXRlKGUpe2xldCB0PXRoaXMudmlld3MuZ2V0KGUpO3JldHVybiB0Py5yb3V0ZXx8dD8uaWR8fCIifWZpbmRCeVJvdXRlKGUpe2ZvcihsZXQgdCBvZiB0aGlzLnZpZXdzLnZhbHVlcygpKXtsZXQgYT10LnJvdXRlfHx0LmlkLHI9dGhpcy5tYXRjaFJvdXRlKGEsZSk7aWYociE9PW51bGwpcmV0dXJue3ZpZXc6dCxwYXJhbXM6cn19fW1hdGNoUm91dGUoZSx0KXtsZXQgYT1lLnNwbGl0KCIvIikscj10LnNwbGl0KCIvIik7aWYoYS5sZW5ndGg+MCYmYVthLmxlbmd0aC0xXS5lbmRzV2l0aCgiPyIpKXtpZihyLmxlbmd0aDxhLmxlbmd0aC0xfHxyLmxlbmd0aD5hLmxlbmd0aClyZXR1cm4gbnVsbH1lbHNlIGlmKGEubGVuZ3RoIT09ci5sZW5ndGgpcmV0dXJuIG51bGw7bGV0IG89e307Zm9yKGxldCBsPTA7bDxhLmxlbmd0aDtsKyspe2xldCBwPWFbbF0sZD1wLmVuZHNXaXRoKCI/Iik7aWYoZCYmKHA9cC5zbGljZSgwLC0xKSkscC5zdGFydHNXaXRoKCI6Iikpe2xldCB1PXAuc2xpY2UoMSk7aWYocltsXSE9PXZvaWQgMClvW3VdPXJbbF07ZWxzZSBpZighZClyZXR1cm4gbnVsbH1lbHNlIGlmKHJbbF0hPT1wKXJldHVybiBudWxsfXJldHVybiBvfWFzeW5jIGNhbkxlYXZlQ3VycmVudFZpZXcoKXtpZighdGhpcy5jdXJyZW50Vmlld0lkKXJldHVybiEwO2xldCBlPXRoaXMuaW5zdGFuY2VzLmdldCh0aGlzLmN1cnJlbnRWaWV3SWQpO2lmKCFlKXJldHVybiEwO2xldCB0PWU7cmV0dXJuIHR5cGVvZiB0LmNhbkRlYWN0aXZhdGU9PSJmdW5jdGlvbiI/YXdhaXQgdC5jYW5EZWFjdGl2YXRlKCk6ITB9YXN5bmMgYWN0aXZhdGVWaWV3KGUsdCxhKXtsZXQgcj10aGlzLnZpZXdzLmdldChlKTtpZighcilyZXR1cm4gY29uc29sZS5lcnJvcihgVmlldyAiJHtlfSIgbm90IGZvdW5kIGluIHJlZ2lzdHJ5YCksbnVsbDtsZXQgbj1yLmNhY2hlIT09ITE7dGhpcy5jdXJyZW50Vmlld0lkJiZ0aGlzLmN1cnJlbnRWaWV3SWQhPT1lJiZhd2FpdCB0aGlzLmRlYWN0aXZhdGVWaWV3KHRoaXMuY3VycmVudFZpZXdJZCk7bGV0IG89bj90aGlzLmluc3RhbmNlcy5nZXQoZSk6dm9pZCAwO2lmKG8pby5zdHlsZS5kaXNwbGF5PSIiO2Vsc2V7aWYobz1hd2FpdCB0aGlzLmNyZWF0ZVZpZXdFbGVtZW50KHIpLCFvKXJldHVybiBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gY3JlYXRlIGVsZW1lbnQgZm9yIHZpZXcgIiR7ZX0iYCksbnVsbDt0LmFwcGVuZENoaWxkKG8pLG4mJnRoaXMuaW5zdGFuY2VzLnNldChlLG8pfXJldHVybiB0aGlzLmN1cnJlbnRWaWV3SWQ9ZSxhd2FpdCB0aGlzLmNhbGxPbkFjdGl2YXRlKG8sZSxhKSxvfWFzeW5jIGRlYWN0aXZhdGVWaWV3KGUpe2xldCB0PXRoaXMuaW5zdGFuY2VzLmdldChlKTtpZighdClyZXR1cm47bGV0IGE9dDt0eXBlb2YgYS5vbkRlYWN0aXZhdGU9PSJmdW5jdGlvbiImJmF3YWl0IGEub25EZWFjdGl2YXRlKCksdC5zdHlsZS5kaXNwbGF5PSJub25lIn1hc3luYyBjcmVhdGVWaWV3RWxlbWVudChlKXtsZXQgdD1lLmNvbnRlbnQ7aWYodHlwZW9mIHQ9PSJmdW5jdGlvbiImJiEodC5wcm90b3R5cGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkmJnQuY29uc3RydWN0b3IubmFtZT09PSJBc3luY0Z1bmN0aW9uIil0cnl7dD1hd2FpdCB0KCl9Y2F0Y2gocil7cmV0dXJuIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBsb2FkIGFzeW5jIGNvbnRlbnQgZm9yIHZpZXcgIiR7ZS5pZH0iOmAsciksbnVsbH1sZXQgYTtpZih0eXBlb2YgdD09InN0cmluZyIpYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KHQpO2Vsc2UgaWYodHlwZW9mIHQ9PSJmdW5jdGlvbiIpaWYodC5wcm90b3R5cGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudClhPW5ldyB0O2Vsc2V7bGV0IHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ci5jbGFzc05hbWU9InZpZXctY29udGVudC13cmFwcGVyIixyLnN0eWxlLmNzc1RleHQ9ImRpc3BsYXk6IGNvbnRlbnRzOyI7bGV0IG49dCgpO2gxKG4sciksYT1yfWVsc2UgcmV0dXJuIGNvbnNvbGUuZXJyb3IoYEludmFsaWQgY29udGVudCB0eXBlIGZvciB2aWV3ICIke2UuaWR9ImApLG51bGw7cmV0dXJuIGEuZGF0YXNldC52aWV3SWQ9ZS5pZCxhfWFzeW5jIGNhbGxPbkFjdGl2YXRlKGUsdCxhKXtsZXQgcj1lO2lmKHR5cGVvZiByLm9uQWN0aXZhdGU9PSJmdW5jdGlvbiIpe2xldCBuPXthcHB1aTp0aGlzLmFwcHVpLHZpZXdJZDp0LHBhcmFtczphfTthd2FpdCByLm9uQWN0aXZhdGUobil9fXJlbmRlclZpZXcoZSx0KXtsZXQgYT10aGlzLnZpZXdzLmdldChlKTtpZighYSlyZXR1cm4gY29uc29sZS5lcnJvcihgVmlldyAiJHtlfSIgbm90IGZvdW5kIGluIHJlZ2lzdHJ5YCksbnVsbDt0LmlubmVySFRNTD0iIjtsZXQgcixuPWEuY29udGVudDtpZih0eXBlb2Ygbj09InN0cmluZyIpcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KG4pO2Vsc2UgaWYodHlwZW9mIG49PSJmdW5jdGlvbiIpaWYobi5wcm90b3R5cGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudClyPW5ldyBuO2Vsc2V7bGV0IG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7by5jbGFzc05hbWU9InZpZXctY29udGVudC13cmFwcGVyIixvLnN0eWxlLmNzc1RleHQ9ImRpc3BsYXk6IGNvbnRlbnRzOyI7bGV0IGw9bigpO2gxKGwsbykscj1vfWVsc2UgcmV0dXJuIGNvbnNvbGUuZXJyb3IoYEludmFsaWQgY29udGVudCB0eXBlIGZvciB2aWV3ICIke2V9ImApLG51bGw7cmV0dXJuIHQuYXBwZW5kQ2hpbGQociksdGhpcy5pbnN0YW5jZXMuc2V0KGUsciksdGhpcy5jdXJyZW50Vmlld0lkPWUscn1nZXRDdXJyZW50Vmlld0lkKCl7cmV0dXJuIHRoaXMuY3VycmVudFZpZXdJZH1nZXRJbnN0YW5jZShlKXtyZXR1cm4gdGhpcy5pbnN0YW5jZXMuZ2V0KGUpfWNsZWFySW5zdGFuY2UoZSl7bGV0IHQ9dGhpcy5pbnN0YW5jZXMuZ2V0KGUpO3QmJnQucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpLHRoaXMuaW5zdGFuY2VzLmRlbGV0ZShlKSx0aGlzLmN1cnJlbnRWaWV3SWQ9PT1lJiYodGhpcy5jdXJyZW50Vmlld0lkPW51bGwpfWNsZWFySW5zdGFuY2VzKCl7Zm9yKGxldFtlLHRdb2YgdGhpcy5pbnN0YW5jZXMpdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCk7dGhpcy5pbnN0YW5jZXMuY2xlYXIoKSx0aGlzLmN1cnJlbnRWaWV3SWQ9bnVsbH11bnJlZ2lzdGVyKGUpe3JldHVybiB0aGlzLmNsZWFySW5zdGFuY2UoZSksdGhpcy52aWV3cy5kZWxldGUoZSl9Y2xlYXIoKXt0aGlzLnZpZXdzLmNsZWFyKCksdGhpcy5jbGVhckluc3RhbmNlcygpfWhhcyhlKXtyZXR1cm4gdGhpcy52aWV3cy5oYXMoZSl9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy52aWV3cy5zaXplfX19KTt2YXIgcXZhLGp2YT1nKCgpPT57cGUoKTtxdmE9aSgoKT0+d2AKICA8c3R5bGU+CiAgICAuZGVtby1tYWlubWVudS1jb250YWluZXIgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIGJhY2tncm91bmQ6ICMxYTFhMWE7CiAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgIH0KICAgIC5kZW1vLW1haW5tZW51LWNvbnRhaW5lciAuc3BhY2VyIHsKICAgICAgZmxleDogMTsKICAgICAgYmFja2dyb3VuZDogIzBmMGYwZjsKICAgIH0KICA8L3N0eWxlPgogIDxkaXYgY2xhc3M9ImRlbW8tbWFpbm1lbnUtY29udGFpbmVyIj4KICAgIDxkZWVzLWFwcHVpLW1haW5tZW51CiAgICAgIC5sb2dvSWNvbj0keyJsdWNpZGU6Ym94In0KICAgICAgLmxvZ29UZXh0PSR7IkFjbWUgQXBwIn0KICAgICAgLm1lbnVHcm91cHM9JHtbe3RhYnM6W3trZXk6IkRhc2hib2FyZCIsaWNvbk5hbWU6Imx1Y2lkZTpob21lIixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIkRhc2hib2FyZCIpLCJhY3Rpb24iKX0se2tleToiSW5ib3giLGljb25OYW1lOiJsdWNpZGU6aW5ib3giLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiSW5ib3giKSwiYWN0aW9uIil9XX0se25hbWU6IldvcmtzcGFjZSIsdGFiczpbe2tleToiUHJvamVjdHMiLGljb25OYW1lOiJsdWNpZGU6Zm9sZGVyIixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIlByb2plY3RzIiksImFjdGlvbiIpfSx7a2V5OiJUYXNrcyIsaWNvbk5hbWU6Imx1Y2lkZTpjaGVja1NxdWFyZSIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJUYXNrcyIpLCJhY3Rpb24iKX0se2tleToiRG9jdW1lbnRzIixpY29uTmFtZToibHVjaWRlOmZpbGVUZXh0IixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIkRvY3VtZW50cyIpLCJhY3Rpb24iKX1dfSx7bmFtZToiQW5hbHl0aWNzIix0YWJzOlt7a2V5OiJSZXBvcnRzIixpY29uTmFtZToibHVjaWRlOmJhckNoYXJ0MyIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJSZXBvcnRzIiksImFjdGlvbiIpfSx7a2V5OiJJbnNpZ2h0cyIsaWNvbk5hbWU6Imx1Y2lkZTpsaWdodGJ1bGIiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiSW5zaWdodHMiKSwiYWN0aW9uIil9XX1dfQogICAgICAuYm90dG9tVGFicz0ke1t7a2V5OiJTZXR0aW5ncyIsaWNvbk5hbWU6Imx1Y2lkZTpzZXR0aW5ncyIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJTZXR0aW5ncyIpLCJhY3Rpb24iKX0se2tleToiSGVscCIsaWNvbk5hbWU6Imx1Y2lkZTpoZWxwQ2lyY2xlIixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIkhlbHAiKSwiYWN0aW9uIil9XX0KICAgID48L2RlZXMtYXBwdWktbWFpbm1lbnU+CiAgICA8ZGl2IGNsYXNzPSJzcGFjZXIiPjwvZGl2PgogIDwvZGl2PgpgLCJkZW1vRnVuYyIpfSk7dmFyIHA0LFhuLGxlcyxWbnQ9ZygoKT0+e3ZvKCk7YTQoKTtHbigpO3BlKCk7ZnIoKTtqdmEoKTtodCgpO3A0PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxYbj1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sbGVzPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1hcHB1aS1tYWlubWVudSIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdO3ZhciBIPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzQXBwdWlNYWlubWVudSIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBrPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6U3RyaW5nfSldLHA9W0woe3R5cGU6U3RyaW5nfSldLGM9W0woe3R5cGU6QXJyYXl9KV0seD1bTCh7dHlwZTpBcnJheX0pXSx5PVtMKHt0eXBlOkFycmF5fSldLE49W0woKV0sTz1bTCh7dHlwZTpCb29sZWFuLHJlZmxlY3Q6ITB9KV0scDQodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJsb2dvSWNvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4ibG9nb0ljb24iaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5sb2dvSWNvbiwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLmxvZ29JY29uPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sbyxsKSxwNCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImxvZ29UZXh0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJsb2dvVGV4dCJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLmxvZ29UZXh0LCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MubG9nb1RleHQ9SX0sInNldCIpfSxtZXRhZGF0YTprfSxkLHUpLHA0KHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWVudUdyb3VwcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4ibWVudUdyb3VwcyJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLm1lbnVHcm91cHMsImdldCIpLHNldDppKChTLEkpPT57Uy5tZW51R3JvdXBzPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sYix2KSxwNCh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImJvdHRvbVRhYnMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+ImJvdHRvbVRhYnMiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5ib3R0b21UYWJzLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MuYm90dG9tVGFicz1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LG0sZikscDQodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0YWJzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJ0YWJzImluIFMsImhhcyIpLGdldDppKFM9PlMudGFicywiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLnRhYnM9SX0sInNldCIpfSxtZXRhZGF0YTprfSxNLHopLHA0KHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VsZWN0ZWRUYWIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+InNlbGVjdGVkVGFiImluIFMsImhhcyIpLGdldDppKFM9PlMuc2VsZWN0ZWRUYWIsImdldCIpLHNldDppKChTLEkpPT57Uy5zZWxlY3RlZFRhYj1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LEMsXykscDQodGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjb2xsYXBzZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+ImNvbGxhcHNlZCJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLmNvbGxhcHNlZCwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLmNvbGxhcHNlZD1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LCQsRSkscDQobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6a30sbnVsbCx0KSxIPWE9ZS52YWx1ZSxrJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmt9KX1zdGF0aWMgZGVtbz1xdmE7c3RhdGljIGRlbW9Hcm91cHM9WyJBcHAgVUkiXTsjZT1Ybih0aGlzLG8sIiIpO2dldCBsb2dvSWNvbigpe3JldHVybiB0aGlzLiNlfXNldCBsb2dvSWNvbihrKXt0aGlzLiNlPWt9I3Q9KFhuKHRoaXMsbCksWG4odGhpcyxkLCIiKSk7Z2V0IGxvZ29UZXh0KCl7cmV0dXJuIHRoaXMuI3R9c2V0IGxvZ29UZXh0KGspe3RoaXMuI3Q9a30jYT0oWG4odGhpcyx1KSxYbih0aGlzLGIsW10pKTtnZXQgbWVudUdyb3Vwcygpe3JldHVybiB0aGlzLiNhfXNldCBtZW51R3JvdXBzKGspe3RoaXMuI2E9a30jcz0oWG4odGhpcyx2KSxYbih0aGlzLG0sW10pKTtnZXQgYm90dG9tVGFicygpe3JldHVybiB0aGlzLiNzfXNldCBib3R0b21UYWJzKGspe3RoaXMuI3M9a30jaT0oWG4odGhpcyxmKSxYbih0aGlzLE0sW10pKTtnZXQgdGFicygpe3JldHVybiB0aGlzLiNpfXNldCB0YWJzKGspe3RoaXMuI2k9a30jcj0oWG4odGhpcyx6KSxYbih0aGlzLEMsdm9pZCAwKSk7Z2V0IHNlbGVjdGVkVGFiKCl7cmV0dXJuIHRoaXMuI3J9c2V0IHNlbGVjdGVkVGFiKGspe3RoaXMuI3I9a30jbz0oWG4odGhpcyxfKSxYbih0aGlzLCQsITEpKTtnZXQgY29sbGFwc2VkKCl7cmV0dXJuIHRoaXMuI299c2V0IGNvbGxhcHNlZChrKXt0aGlzLiNvPWt9c3RhdGljIHN0eWxlcz1bcWUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICAtLW1lbnUtd2lkdGgtZXhwYW5kZWQ6IDIwMHB4OwogICAgICAgIC0tbWVudS13aWR0aC1jb2xsYXBzZWQ6IDU2cHg7CiAgICAgICAgLS10b29sdGlwLWJnOiB2YXIoLS1kZWVzLWNvbG9yLXRvb2x0aXAtYmcpOwogICAgICAgIC0tdG9vbHRpcC1mZzogdmFyKC0tZGVlcy1jb2xvci10b29sdGlwLWZnKTsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CgogICAgICAubWFpbkNvbnRhaW5lciB7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOwogICAgICAgIHotaW5kZXg6ICR7Ym8uZml4ZWQuYXBwQmFyfTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHdpZHRoOiB2YXIoLS1tZW51LXdpZHRoLWV4cGFuZGVkKTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1iZy1zZWNvbmRhcnkpOwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLXN1YnRsZSk7CiAgICAgICAgZm9udC1mYW1pbHk6ICdHZWlzdCBTYW5zJywgJ0ludGVyJywgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBzYW5zLXNlcmlmOwogICAgICAgIHRyYW5zaXRpb246IHdpZHRoIDAuMjVzIGVhc2U7CiAgICAgIH0KCiAgICAgIDpob3N0KFtjb2xsYXBzZWRdKSAubWFpbkNvbnRhaW5lciB7CiAgICAgICAgd2lkdGg6IHZhcigtLW1lbnUtd2lkdGgtY29sbGFwc2VkKTsKICAgICAgfQoKICAgICAgLyogRmxvYXRpbmcgY29sbGFwc2UgdG9nZ2xlIGJ1dHRvbiAqLwogICAgICAuY29sbGFwc2UtdG9nZ2xlIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgcmlnaHQ6IC0xMnB4OwogICAgICAgIHRvcDogMjRweDsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICAgICAgd2lkdGg6IDI0cHg7CiAgICAgICAgaGVpZ2h0OiAyNHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXByaW1hcnkpOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLXN0cm9uZyk7CiAgICAgICAgYm94LXNoYWRvdzogMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgei1pbmRleDogMTA7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2UsIGJhY2tncm91bmQgMC4xNXMgZWFzZTsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICB9CgogICAgICAuY29sbGFwc2UtdG9nZ2xlOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXRlcnRpYXJ5KTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICB9CgogICAgICA6aG9zdCg6aG92ZXIpIC5jb2xsYXBzZS10b2dnbGUgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC5jb2xsYXBzZS10b2dnbGUgZGVlcy1pY29uIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIH0KCiAgICAgIC8qIExvZ28gU2VjdGlvbiAqLwogICAgICAubG9nb1NlY3Rpb24gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDEwcHg7CiAgICAgICAgaGVpZ2h0OiA0OHB4OwogICAgICAgIHBhZGRpbmc6IDAgMTRweDsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItc3VidGxlKTsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAubG9nb1NlY3Rpb24gLmxvZ29JY29uIHsKICAgICAgICBmb250LXNpemU6IDIycHg7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQoKICAgICAgLmxvZ29TZWN0aW9uIC5sb2dvVGV4dCB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBmb250LXNpemU6IDE1cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZSwgd2lkdGggMC4yNXMgZWFzZTsKICAgICAgfQoKICAgICAgOmhvc3QoW2NvbGxhcHNlZF0pIC5sb2dvU2VjdGlvbiB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBnYXA6IDA7CiAgICAgIH0KCiAgICAgIDpob3N0KFtjb2xsYXBzZWRdKSAubG9nb1NlY3Rpb24gLmxvZ29UZXh0IHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CgogICAgICAvKiBNaWRkbGUgU2VjdGlvbiAoc2Nyb2xsYWJsZSkgKi8KICAgICAgLm1lbnVTZWN0aW9uIHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW47CiAgICAgICAgcGFkZGluZzogOHB4IDA7CiAgICAgIH0KCiAgICAgIC5tZW51U2VjdGlvbjo6LXdlYmtpdC1zY3JvbGxiYXIgewogICAgICAgIHdpZHRoOiA2cHg7CiAgICAgIH0KCiAgICAgIC5tZW51U2VjdGlvbjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sgewogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICB9CgogICAgICAubWVudVNlY3Rpb246Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLXNjcm9sbGJhci10aHVtYik7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICB9CgogICAgICAubWVudVNlY3Rpb246Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLXNjcm9sbGJhci10aHVtYi1ob3Zlcik7CiAgICAgIH0KCiAgICAgIC8qIE1lbnUgR3JvdXAgKi8KICAgICAgLm1lbnVHcm91cCB7CiAgICAgICAgcGFkZGluZzogMCA4cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICB9CgogICAgICAubWVudUdyb3VwOmxhc3QtY2hpbGQgewogICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgIH0KCiAgICAgIC5ncm91cEhlYWRlciB7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHggNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4OwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZSwgbWF4LWhlaWdodCAwLjI1cyBlYXNlOwogICAgICAgIG1heC1oZWlnaHQ6IDMwcHg7CiAgICAgIH0KCiAgICAgIDpob3N0KFtjb2xsYXBzZWRdKSAuZ3JvdXBIZWFkZXIgewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgbWF4LWhlaWdodDogMDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgfQoKICAgICAgLmdyb3VwVGFicyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMnB4OwogICAgICB9CgogICAgICA6aG9zdChbY29sbGFwc2VkXSkgLm1lbnVHcm91cCB7CiAgICAgICAgcGFkZGluZzogMCA0cHg7CiAgICAgIH0KCiAgICAgIC8qIFRhYiBJdGVtICovCiAgICAgIC50YWIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgIHBhZGRpbmc6IDEwcHggMTJweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTsKICAgICAgfQoKICAgICAgLnRhYjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1ob3Zlcik7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMjYyNjI2IiwiI2U1ZTVlNSIpfTsKICAgICAgfQoKICAgICAgLnRhYjphY3RpdmUgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYWN0aXZlKTsKICAgICAgfQoKICAgICAgLnRhYi5zZWxlY3RlZFRhYiB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1hY3RpdmUpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIH0KCiAgICAgIC50YWIuc2VsZWN0ZWRUYWI6OmJlZm9yZSB7CiAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgdG9wOiA1MCU7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgICAgIHdpZHRoOiAzcHg7CiAgICAgICAgaGVpZ2h0OiAxNnB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgICBib3JkZXItcmFkaXVzOiAwIDJweCAycHggMDsKICAgICAgfQoKICAgICAgLnRhYiBkZWVzLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgICBvcGFjaXR5OiAwLjg1OwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAudGFiLnNlbGVjdGVkVGFiIGRlZXMtaWNvbiB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgLnRhYiAudGFiTGFiZWwgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlLCB3aWR0aCAwLjI1cyBlYXNlOwogICAgICB9CgogICAgICAvKiBDb2xsYXBzZWQgdGFiIHN0eWxlcyAqLwogICAgICA6aG9zdChbY29sbGFwc2VkXSkgLnRhYiB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgcGFkZGluZzogMTBweDsKICAgICAgICBnYXA6IDA7CiAgICAgIH0KCiAgICAgIDpob3N0KFtjb2xsYXBzZWRdKSAudGFiIC50YWJMYWJlbCB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB3aWR0aDogMDsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIH0KCiAgICAgIDpob3N0KFtjb2xsYXBzZWRdKSAudGFiLnNlbGVjdGVkVGFiOjpiZWZvcmUgewogICAgICAgIGxlZnQ6IC00cHg7CiAgICAgIH0KCiAgICAgIC8qIFRvb2x0aXAgZm9yIGNvbGxhcHNlZCBzdGF0ZSAqLwogICAgICAudGFiLXRvb2x0aXAgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBsZWZ0OiAxMDAlOwogICAgICAgIHRvcDogNTAlOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgICAgICBtYXJnaW4tbGVmdDogMTJweDsKICAgICAgICBwYWRkaW5nOiA2cHggMTJweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10b29sdGlwLWJnKTsKICAgICAgICBjb2xvcjogdmFyKC0tdG9vbHRpcC1mZyk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGVhc2U7CiAgICAgICAgei1pbmRleDogMTAwMDsKICAgICAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjE1KTsKICAgICAgfQoKICAgICAgLnRhYi10b29sdGlwOjpiZWZvcmUgewogICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBsZWZ0OiAtNHB4OwogICAgICAgIHRvcDogNTAlOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgICAgICBib3JkZXI6IDRweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXItcmlnaHQtY29sb3I6IHZhcigtLXRvb2x0aXAtYmcpOwogICAgICB9CgogICAgICA6aG9zdChbY29sbGFwc2VkXSkgLnRhYjpob3ZlciAudGFiLXRvb2x0aXAgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMXM7CiAgICAgIH0KCiAgICAgIC8qIEJhZGdlIHN0eWxlcyAqLwogICAgICAuYmFkZ2UgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgbWluLXdpZHRoOiAxOHB4OwogICAgICAgIGhlaWdodDogMThweDsKICAgICAgICBwYWRkaW5nOiAwIDZweDsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBib3JkZXItcmFkaXVzOiA5cHg7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgIH0KCiAgICAgIC5iYWRnZS5kZWZhdWx0IHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJhZGdlLWRlZmF1bHQtYmcpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLWJhZGdlLWRlZmF1bHQtZmcpOwogICAgICB9CgogICAgICAuYmFkZ2Uuc3VjY2VzcyB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1iYWRnZS1zdWNjZXNzLWJnKTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci1iYWRnZS1zdWNjZXNzLWZnKTsKICAgICAgfQoKICAgICAgLmJhZGdlLndhcm5pbmcgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYmFkZ2Utd2FybmluZy1iZyk7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItYmFkZ2Utd2FybmluZy1mZyk7CiAgICAgIH0KCiAgICAgIC5iYWRnZS5lcnJvciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1iYWRnZS1lcnJvci1iZyk7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItYmFkZ2UtZXJyb3ItZmcpOwogICAgICB9CgogICAgICA6aG9zdChbY29sbGFwc2VkXSkgLmJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CgogICAgICAvKiBCb3R0b20gU2VjdGlvbiAqLwogICAgICAuYm90dG9tU2VjdGlvbiB7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgcGFkZGluZzogOHB4OwogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1zdWJ0bGUpOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDJweDsKICAgICAgfQoKICAgICAgOmhvc3QoW2NvbGxhcHNlZF0pIC5ib3R0b21TZWN0aW9uIHsKICAgICAgICBwYWRkaW5nOiA4cHggNHB4OwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtsZXQgaz10aGlzLmdldEFsbFRhYnMoKTtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0ibWFpbkNvbnRhaW5lciIgQGNvbnRleHRtZW51PSR7Uz0+eyRhLm9wZW5Db250ZXh0TWVudVdpdGhPcHRpb25zKFMsW3tuYW1lOiJhcHAgc2V0dGluZ3MiLGFjdGlvbjppKGFzeW5jKCk9Pnt9LCJhY3Rpb24iKSxpY29uTmFtZToiZ2VhciJ9XSl9fT4KICAgICAgICAke3RoaXMubG9nb0ljb258fHRoaXMubG9nb1RleHQ/d2AKICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ29TZWN0aW9uIj4KICAgICAgICAgICAgJHt0aGlzLmxvZ29JY29uP3dgPGRlZXMtaWNvbiBjbGFzcz0ibG9nb0ljb24iIC5pY29uPSIke3RoaXMubG9nb0ljb259Ij48L2RlZXMtaWNvbj5gOiIifQogICAgICAgICAgICAke3RoaXMubG9nb1RleHQ/d2A8c3BhbiBjbGFzcz0ibG9nb1RleHQiPiR7dGhpcy5sb2dvVGV4dH08L3NwYW4+YDoiIn0KICAgICAgICAgIDwvZGl2PgogICAgICAgIGA6IiJ9CgogICAgICAgIDxkaXYgY2xhc3M9Im1lbnVTZWN0aW9uIj4KICAgICAgICAgICR7dGhpcy5tZW51R3JvdXBzLmxlbmd0aD4wP3RoaXMucmVuZGVyTWVudUdyb3VwcygpOnRoaXMucmVuZGVyTGVnYWN5VGFicygpfQogICAgICAgIDwvZGl2PgoKICAgICAgICAke3RoaXMuYm90dG9tVGFicy5sZW5ndGg+MD93YAogICAgICAgICAgPGRpdiBjbGFzcz0iYm90dG9tU2VjdGlvbiI+CiAgICAgICAgICAgICR7dGhpcy5ib3R0b21UYWJzLm1hcChTPT50aGlzLnJlbmRlclRhYihTKSl9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgOiIifQogICAgICA8L2Rpdj4KICAgICAgPGJ1dHRvbiBjbGFzcz0iY29sbGFwc2UtdG9nZ2xlIiBAY2xpY2s9IiR7KCk9PnRoaXMudG9nZ2xlQ29sbGFwc2UoKX0iPgogICAgICAgIDxkZWVzLWljb24gLmljb249IiR7dGhpcy5jb2xsYXBzZWQ/Imx1Y2lkZTpjaGV2cm9uUmlnaHQiOiJsdWNpZGU6Y2hldnJvbkxlZnQifSI+PC9kZWVzLWljb24+CiAgICAgIDwvYnV0dG9uPgogICAgYH1yZW5kZXJNZW51R3JvdXBzKCl7cmV0dXJuIHdgCiAgICAgICR7dGhpcy5tZW51R3JvdXBzLm1hcChrPT53YAogICAgICAgIDxkaXYgY2xhc3M9Im1lbnVHcm91cCI+CiAgICAgICAgICAke2submFtZT93YDxkaXYgY2xhc3M9Imdyb3VwSGVhZGVyIj4ke2submFtZX08L2Rpdj5gOiIifQogICAgICAgICAgPGRpdiBjbGFzcz0iZ3JvdXBUYWJzIj4KICAgICAgICAgICAgJHtrLml0ZW1zLm1hcChTPT50aGlzLnJlbmRlclRhYihTKSl9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgYCl9CiAgICBgfXJlbmRlckxlZ2FjeVRhYnMoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0ibWVudUdyb3VwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJncm91cFRhYnMiPgogICAgICAgICAgJHt0aGlzLnRhYnMubWFwKGs9PnRoaXMucmVuZGVyVGFiKGspKX0KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfXJlbmRlclRhYihrKXtyZXR1cm4gd2AKICAgICAgPGRpdgogICAgICAgIGNsYXNzPSJ0YWIgJHtrPT09dGhpcy5zZWxlY3RlZFRhYj8ic2VsZWN0ZWRUYWIiOiIifSIKICAgICAgICBAY2xpY2s9IiR7KCk9Pnt0aGlzLnVwZGF0ZVRhYihrKX19IgogICAgICA+CiAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0iJHtrLmljb25OYW1lfHwiIn0iPjwvZGVlcy1pY29uPgogICAgICAgIDxzcGFuIGNsYXNzPSJ0YWJMYWJlbCI+JHtrLmtleX08L3NwYW4+CiAgICAgICAgJHtrLmJhZGdlIT09dm9pZCAwP3dgCiAgICAgICAgICA8c3BhbiBjbGFzcz0iYmFkZ2UgJHtrLmJhZGdlVmFyaWFudHx8ImRlZmF1bHQifSI+JHtrLmJhZGdlfTwvc3Bhbj4KICAgICAgICBgOiIifQogICAgICAgIDxzcGFuIGNsYXNzPSJ0YWItdG9vbHRpcCI+JHtrLmtleX08L3NwYW4+CiAgICAgIDwvZGl2PgogICAgYH1nZXRBbGxUYWJzKCl7cmV0dXJuIHRoaXMubWVudUdyb3Vwcy5sZW5ndGg+MD9bLi4udGhpcy5tZW51R3JvdXBzLmZsYXRNYXAoUz0+Uy5pdGVtcyksLi4udGhpcy5ib3R0b21UYWJzXTpbLi4udGhpcy50YWJzLC4uLnRoaXMuYm90dG9tVGFic119dXBkYXRlVGFiKGspe3RoaXMuc2VsZWN0ZWRUYWI9ayx0aGlzLnNlbGVjdGVkVGFiLmFjdGlvbigpLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInRhYi1zZWxlY3QiLHtkZXRhaWw6e3RhYjprfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWZpcnN0VXBkYXRlZCgpe2xldCBrPXRoaXMuZ2V0QWxsVGFicygpO2subGVuZ3RoPjAmJnRoaXMudXBkYXRlVGFiKGtbMF0pfXRvZ2dsZUNvbGxhcHNlKCl7dGhpcy5jb2xsYXBzZWQ9IXRoaXMuY29sbGFwc2VkLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNvbGxhcHNlLWNoYW5nZSIse2RldGFpbDp7Y29sbGFwc2VkOnRoaXMuY29sbGFwc2VkfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWNvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSxYbih0aGlzLEUpfXN0YXRpY3tYbihhLHQpfX07cmV0dXJuIEg9YX0pKCl9KTt2YXIgVnZhLFV2YT1nKCgpPT57cGUoKTtWdmE9aSgoKT0+d2AKICA8c3R5bGU+CiAgICAuZGVtby1zZWNvbmRhcnltZW51LWNvbnRhaW5lciB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGhlaWdodDogMTAwJTsKICAgICAgYmFja2dyb3VuZDogIzFhMWExYTsKICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgfQogICAgLmRlbW8tc2Vjb25kYXJ5bWVudS1jb250YWluZXIgLnNwYWNlciB7CiAgICAgIGZsZXg6IDE7CiAgICAgIGJhY2tncm91bmQ6ICMwZjBmMGY7CiAgICAgIHBhZGRpbmc6IDIwcHg7CiAgICAgIGNvbG9yOiAjYTNhM2EzOwogICAgICBmb250LWZhbWlseTogJ0dlaXN0IFNhbnMnLCBzYW5zLXNlcmlmOwogICAgfQogICAgLmRlbW8tc2Vjb25kYXJ5bWVudS1jb250YWluZXIgLnNwYWNlciBoMyB7CiAgICAgIGNvbG9yOiAjZmFmYWZhOwogICAgICBtYXJnaW4tdG9wOiAwOwogICAgfQogICAgLmRlbW8tc2Vjb25kYXJ5bWVudS1jb250YWluZXIgLnNwYWNlciBjb2RlIHsKICAgICAgYmFja2dyb3VuZDogIzI3MjcyYTsKICAgICAgcGFkZGluZzogMnB4IDZweDsKICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICBmb250LXNpemU6IDEycHg7CiAgICB9CiAgICAuZGVtby1zZWNvbmRhcnltZW51LWNvbnRhaW5lciAuc3BhY2VyIHVsIHsKICAgICAgbGluZS1oZWlnaHQ6IDEuODsKICAgIH0KICA8L3N0eWxlPgogIDxkaXYgY2xhc3M9ImRlbW8tc2Vjb25kYXJ5bWVudS1jb250YWluZXIiPgogICAgPGRlZXMtYXBwdWktc2Vjb25kYXJ5bWVudQogICAgICAuaGVhZGluZz0keyJQcm9qZWN0cyJ9CiAgICAgIC5ncm91cHM9JHtbe25hbWU6Ik5hdmlnYXRpb24iLGljb25OYW1lOiJsdWNpZGU6Y29tcGFzcyIsaXRlbXM6W3trZXk6IkRhc2hib2FyZCIsaWNvbk5hbWU6Imx1Y2lkZTpsYXlvdXREYXNoYm9hcmQiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiRGFzaGJvYXJkIGNsaWNrZWQiKSwiYWN0aW9uIiksYmFkZ2U6MyxiYWRnZVZhcmlhbnQ6Indhcm5pbmcifSx7a2V5OiJQcm9qZWN0cyIsaWNvbk5hbWU6Imx1Y2lkZTpmb2xkZXIiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiUHJvamVjdHMgY2xpY2tlZCIpLCJhY3Rpb24iKSxiYWRnZToibmV3IixiYWRnZVZhcmlhbnQ6InN1Y2Nlc3MifSx7a2V5OiJBbmFseXRpY3MiLGljb25OYW1lOiJsdWNpZGU6YmFyQ2hhcnQyIixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIkFuYWx5dGljcyBjbGlja2VkIiksImFjdGlvbiIpfV19LHtuYW1lOiJBY3Rpb25zIixpY29uTmFtZToibHVjaWRlOnphcCIsaXRlbXM6W3t0eXBlOiJhY3Rpb24iLGtleToiQ3JlYXRlIE5ldyIsaWNvbk5hbWU6Imx1Y2lkZTpwbHVzIixhY3Rpb246aSgoKT0+YWxlcnQoIkNyZWF0ZSBOZXcgY2xpY2tlZCEiKSwiYWN0aW9uIil9LHt0eXBlOiJhY3Rpb24iLGtleToiSW1wb3J0IERhdGEiLGljb25OYW1lOiJsdWNpZGU6dXBsb2FkIixhY3Rpb246aSgoKT0+YWxlcnQoIkltcG9ydCBEYXRhIGNsaWNrZWQhIiksImFjdGlvbiIpfSx7dHlwZToiZGl2aWRlciJ9LHt0eXBlOiJhY3Rpb24iLGtleToiRGVsZXRlIEFsbCIsaWNvbk5hbWU6Imx1Y2lkZTp0cmFzaDIiLHZhcmlhbnQ6ImRhbmdlciIsY29uZmlybU1lc3NhZ2U6IkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgYWxsIGl0ZW1zPyIsYWN0aW9uOmkoKCk9PmFsZXJ0KCJEZWxldGVkISIpLCJhY3Rpb24iKX1dfSx7bmFtZToiRmlsdGVycyIsaWNvbk5hbWU6Imx1Y2lkZTpmaWx0ZXIiLGl0ZW1zOlt7dHlwZToiaGVhZGVyIixsYWJlbDoiU3RhdHVzIn0se3R5cGU6ImZpbHRlciIsa2V5OiJTaG93IEFjdGl2ZSIsaWNvbk5hbWU6Imx1Y2lkZTpjaGVja0NpcmNsZSIsYWN0aXZlOiEwLG9uVG9nZ2xlOmkocz0+Y29uc29sZS5sb2coIlNob3cgQWN0aXZlOiIscyksIm9uVG9nZ2xlIil9LHt0eXBlOiJmaWx0ZXIiLGtleToiU2hvdyBBcmNoaXZlZCIsaWNvbk5hbWU6Imx1Y2lkZTphcmNoaXZlIixhY3RpdmU6ITEsb25Ub2dnbGU6aShzPT5jb25zb2xlLmxvZygiU2hvdyBBcmNoaXZlZDoiLHMpLCJvblRvZ2dsZSIpfSx7dHlwZToiZGl2aWRlciJ9LHt0eXBlOiJtdWx0aUZpbHRlciIsa2V5OiJDYXRlZ29yaWVzIixpY29uTmFtZToibHVjaWRlOnRhZyIsY29sbGFwc2VkOiExLG9wdGlvbnM6W3trZXk6ImZyb250ZW5kIixsYWJlbDoiRnJvbnRlbmQiLGNoZWNrZWQ6ITAsaWNvbk5hbWU6Imx1Y2lkZTptb25pdG9yIn0se2tleToiYmFja2VuZCIsbGFiZWw6IkJhY2tlbmQiLGNoZWNrZWQ6ITAsaWNvbk5hbWU6Imx1Y2lkZTpzZXJ2ZXIifSx7a2V5OiJkZXZvcHMiLGxhYmVsOiJEZXZPcHMiLGNoZWNrZWQ6ITEsaWNvbk5hbWU6Imx1Y2lkZTpjbG91ZCJ9LHtrZXk6ImRlc2lnbiIsbGFiZWw6IkRlc2lnbiIsY2hlY2tlZDohMSxpY29uTmFtZToibHVjaWRlOnBhbGV0dGUifV0sb25DaGFuZ2U6aShzPT5jb25zb2xlLmxvZygiU2VsZWN0ZWQgY2F0ZWdvcmllczoiLHMpLCJvbkNoYW5nZSIpfV19LHtuYW1lOiJSZXNvdXJjZXMiLGljb25OYW1lOiJsdWNpZGU6Ym9va09wZW4iLGNvbGxhcHNlZDohMCxpdGVtczpbe3R5cGU6ImhlYWRlciIsbGFiZWw6IkRvY3VtZW50YXRpb24ifSx7dHlwZToibGluayIsa2V5OiJBUEkgUmVmZXJlbmNlIixpY29uTmFtZToibHVjaWRlOmZpbGVUZXh0IixocmVmOiJodHRwczovL2FwaS5leGFtcGxlLmNvbS9kb2NzIn0se3R5cGU6ImxpbmsiLGtleToiVXNlciBHdWlkZSIsaWNvbk5hbWU6Imx1Y2lkZTpib29rIixocmVmOiJodHRwczovL2RvY3MuZXhhbXBsZS5jb20vZ3VpZGUifSx7dHlwZToiZGl2aWRlciJ9LHt0eXBlOiJoZWFkZXIiLGxhYmVsOiJTdXBwb3J0In0se3R5cGU6ImxpbmsiLGtleToiSGVscCBDZW50ZXIiLGljb25OYW1lOiJsdWNpZGU6aGVscENpcmNsZSIsaHJlZjoiL2hlbHAiLGV4dGVybmFsOiExfSx7dHlwZToibGluayIsa2V5OiJHaXRIdWIgSXNzdWVzIixpY29uTmFtZToibHVjaWRlOmdpdGh1YiIsaHJlZjoiaHR0cHM6Ly9naXRodWIuY29tL2V4YW1wbGUvaXNzdWVzIn1dfV19CiAgICAgIEBpdGVtLXNlbGVjdD0ke3M9PmNvbnNvbGUubG9nKCJUYWIgc2VsZWN0ZWQ6IixzLmRldGFpbCl9CiAgICAgIEBhY3Rpb24tY2xpY2s9JHtzPT5jb25zb2xlLmxvZygiQWN0aW9uIGNsaWNrZWQ6IixzLmRldGFpbCl9CiAgICAgIEBmaWx0ZXItdG9nZ2xlPSR7cz0+Y29uc29sZS5sb2coIkZpbHRlciB0b2dnbGVkOiIscy5kZXRhaWwpfQogICAgICBAbXVsdGlmaWx0ZXItY2hhbmdlPSR7cz0+Y29uc29sZS5sb2coIk11bHRpLWZpbHRlciBjaGFuZ2VkOiIscy5kZXRhaWwpfQogICAgICBAbGluay1jbGljaz0ke3M9PmNvbnNvbGUubG9nKCJMaW5rIGNsaWNrZWQ6IixzLmRldGFpbCl9CiAgICA+PC9kZWVzLWFwcHVpLXNlY29uZGFyeW1lbnU+CiAgICA8ZGl2IGNsYXNzPSJzcGFjZXIiPgogICAgICA8aDM+U2Vjb25kYXJ5IE1lbnUgRGVtbzwvaDM+CiAgICAgIDxwPlRoaXMgZGVtbyBzaG93Y2FzZXMgYWxsIDggaXRlbSB0eXBlczo8L3A+CiAgICAgIDx1bD4KICAgICAgICA8bGk+PGNvZGU+dGFiPC9jb2RlPiAtIFNlbGVjdGFibGUgaXRlbXMgKE5hdmlnYXRpb24gZ3JvdXApPC9saT4KICAgICAgICA8bGk+PGNvZGU+YWN0aW9uPC9jb2RlPiAtIEJsdWUgYWN0aW9ucyAoQWN0aW9ucyBncm91cCk8L2xpPgogICAgICAgIDxsaT48Y29kZT5hY3Rpb248L2NvZGU+IHdpdGggPGNvZGU+dmFyaWFudDogJ2Rhbmdlcic8L2NvZGU+IC0gUmVkIGRhbmdlciBhY3Rpb248L2xpPgogICAgICAgIDxsaT48Y29kZT5maWx0ZXI8L2NvZGU+IC0gQ2hlY2tib3ggdG9nZ2xlcyAoRmlsdGVycyBncm91cCk8L2xpPgogICAgICAgIDxsaT48Y29kZT5tdWx0aUZpbHRlcjwvY29kZT4gLSBDb2xsYXBzaWJsZSBtdWx0aS1zZWxlY3QgKENhdGVnb3JpZXMpPC9saT4KICAgICAgICA8bGk+PGNvZGU+ZGl2aWRlcjwvY29kZT4gLSBWaXN1YWwgc2VwYXJhdG9yczwvbGk+CiAgICAgICAgPGxpPjxjb2RlPmhlYWRlcjwvY29kZT4gLSBTZWN0aW9uIGxhYmVsczwvbGk+CiAgICAgICAgPGxpPjxjb2RlPmxpbms8L2NvZGU+IC0gRXh0ZXJuYWwvaW50ZXJuYWwgbGlua3MgKFJlc291cmNlcyBncm91cCk8L2xpPgogICAgICA8L3VsPgogICAgICA8cD5UcnkgdGhlIGNvbGxhcHNlIHRvZ2dsZSBvbiB0aGUgbGVmdCBlZGdlITwvcD4KICAgIDwvZGl2PgogIDwvZGl2PgpgLCJkZW1vRnVuYyIpfSk7dmFyIEJ1LEJvLGNlcyxVbnQ9ZygoKT0+e3ZvKCk7YTQoKTtmcigpO0dhKCk7cGUoKTtVdmEoKTtodCgpO0J1PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxCbz1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sY2VzPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1hcHB1aS1zZWNvbmRhcnltZW51IildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W10sSCxrPVtdLFM9W107dmFyIEk9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNBcHB1aVNlY29uZGFyeW1lbnUiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgUD10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZ30pXSxwPVtMKHt0eXBlOkFycmF5fSldLGM9W0woe3R5cGU6QXJyYXl9KV0seD1bTCh7dHlwZTpPYmplY3R9KV0seT1bWSgpXSxOPVtZKCldLE89W1koKV0sSD1bTCh7dHlwZTpCb29sZWFuLHJlZmxlY3Q6ITB9KV0sQnUodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJoZWFkaW5nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFI9PiJoZWFkaW5nImluIFIsImhhcyIpLGdldDppKFI9PlIuaGVhZGluZywiZ2V0Iiksc2V0OmkoKFIsSyk9PntSLmhlYWRpbmc9S30sInNldCIpfSxtZXRhZGF0YTpQfSxvLGwpLEJ1KHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZ3JvdXBzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFI9PiJncm91cHMiaW4gUiwiaGFzIiksZ2V0OmkoUj0+Ui5ncm91cHMsImdldCIpLHNldDppKChSLEspPT57Ui5ncm91cHM9S30sInNldCIpfSxtZXRhZGF0YTpQfSxkLHUpLEJ1KHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VsZWN0aW9uT3B0aW9ucyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShSPT4ic2VsZWN0aW9uT3B0aW9ucyJpbiBSLCJoYXMiKSxnZXQ6aShSPT5SLnNlbGVjdGlvbk9wdGlvbnMsImdldCIpLHNldDppKChSLEspPT57Ui5zZWxlY3Rpb25PcHRpb25zPUt9LCJzZXQiKX0sbWV0YWRhdGE6UH0sYix2KSxCdSh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlbGVjdGVkSXRlbSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShSPT4ic2VsZWN0ZWRJdGVtImluIFIsImhhcyIpLGdldDppKFI9PlIuc2VsZWN0ZWRJdGVtLCJnZXQiKSxzZXQ6aSgoUixLKT0+e1Iuc2VsZWN0ZWRJdGVtPUt9LCJzZXQiKX0sbWV0YWRhdGE6UH0sbSxmKSxCdSh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNvbGxhcHNlZEdyb3VwcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShSPT4iY29sbGFwc2VkR3JvdXBzImluIFIsImhhcyIpLGdldDppKFI9PlIuY29sbGFwc2VkR3JvdXBzLCJnZXQiKSxzZXQ6aSgoUixLKT0+e1IuY29sbGFwc2VkR3JvdXBzPUt9LCJzZXQiKX0sbWV0YWRhdGE6UH0sTSx6KSxCdSh0aGlzLG51bGwsTix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNvbGxhcHNlZE11bHRpRmlsdGVycyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShSPT4iY29sbGFwc2VkTXVsdGlGaWx0ZXJzImluIFIsImhhcyIpLGdldDppKFI9PlIuY29sbGFwc2VkTXVsdGlGaWx0ZXJzLCJnZXQiKSxzZXQ6aSgoUixLKT0+e1IuY29sbGFwc2VkTXVsdGlGaWx0ZXJzPUt9LCJzZXQiKX0sbWV0YWRhdGE6UH0sQyxfKSxCdSh0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InJlbmRlckNvdW50ZXIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUj0+InJlbmRlckNvdW50ZXIiaW4gUiwiaGFzIiksZ2V0OmkoUj0+Ui5yZW5kZXJDb3VudGVyLCJnZXQiKSxzZXQ6aSgoUixLKT0+e1IucmVuZGVyQ291bnRlcj1LfSwic2V0Iil9LG1ldGFkYXRhOlB9LCQsRSksQnUodGhpcyxudWxsLEgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjb2xsYXBzZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUj0+ImNvbGxhcHNlZCJpbiBSLCJoYXMiKSxnZXQ6aShSPT5SLmNvbGxhcHNlZCwiZ2V0Iiksc2V0OmkoKFIsSyk9PntSLmNvbGxhcHNlZD1LfSwic2V0Iil9LG1ldGFkYXRhOlB9LGssUyksQnUobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6UH0sbnVsbCx0KSxJPWE9ZS52YWx1ZSxQJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOlB9KX1zdGF0aWMgZGVtbz1WdmE7c3RhdGljIGRlbW9Hcm91cHM9WyJBcHAgVUkiXTsjZT1Cbyh0aGlzLG8sIk1lbnUiKTtnZXQgaGVhZGluZygpe3JldHVybiB0aGlzLiNlfXNldCBoZWFkaW5nKFApe3RoaXMuI2U9UH0jdD0oQm8odGhpcyxsKSxCbyh0aGlzLGQsW10pKTtnZXQgZ3JvdXBzKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGdyb3VwcyhQKXt0aGlzLiN0PVB9I2E9KEJvKHRoaXMsdSksQm8odGhpcyxiLFtdKSk7Z2V0IHNlbGVjdGlvbk9wdGlvbnMoKXtyZXR1cm4gdGhpcy4jYX1zZXQgc2VsZWN0aW9uT3B0aW9ucyhQKXt0aGlzLiNhPVB9I3M9KEJvKHRoaXMsdiksQm8odGhpcyxtLG51bGwpKTtnZXQgc2VsZWN0ZWRJdGVtKCl7cmV0dXJuIHRoaXMuI3N9c2V0IHNlbGVjdGVkSXRlbShQKXt0aGlzLiNzPVB9I2k9KEJvKHRoaXMsZiksQm8odGhpcyxNLG5ldyBTZXQpKTtnZXQgY29sbGFwc2VkR3JvdXBzKCl7cmV0dXJuIHRoaXMuI2l9c2V0IGNvbGxhcHNlZEdyb3VwcyhQKXt0aGlzLiNpPVB9I3I9KEJvKHRoaXMseiksQm8odGhpcyxDLG5ldyBTZXQpKTtnZXQgY29sbGFwc2VkTXVsdGlGaWx0ZXJzKCl7cmV0dXJuIHRoaXMuI3J9c2V0IGNvbGxhcHNlZE11bHRpRmlsdGVycyhQKXt0aGlzLiNyPVB9I289KEJvKHRoaXMsXyksQm8odGhpcywkLDApKTtnZXQgcmVuZGVyQ291bnRlcigpe3JldHVybiB0aGlzLiNvfXNldCByZW5kZXJDb3VudGVyKFApe3RoaXMuI289UH0jbj0oQm8odGhpcyxFKSxCbyh0aGlzLGssITEpKTtnZXQgY29sbGFwc2VkKCl7cmV0dXJuIHRoaXMuI259c2V0IGNvbGxhcHNlZChQKXt0aGlzLiNuPVB9c3RhdGljIHN0eWxlcz1bcWUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICAtLXNpZGViYXItd2lkdGgtZXhwYW5kZWQ6IDI0MHB4OwogICAgICAgIC0tc2lkZWJhci13aWR0aC1jb2xsYXBzZWQ6IDU2cHg7CiAgICAgICAgLS1zaWRlYmFyLWJnOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXNlY29uZGFyeSk7CiAgICAgICAgLS1zaWRlYmFyLWZnOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTsKICAgICAgICAtLXNpZGViYXItZmctbXV0ZWQ6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgICAgLS1zaWRlYmFyLWZnLWFjdGl2ZTogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICAgIC0tc2lkZWJhci1ib3JkZXI6IHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLXN1YnRsZSk7CiAgICAgICAgLS1zaWRlYmFyLWhvdmVyOiB2YXIoLS1kZWVzLWNvbG9yLWhvdmVyKTsKICAgICAgICAtLXNpZGViYXItYWN0aXZlOiB2YXIoLS1kZWVzLWNvbG9yLWFjdGl2ZSk7CiAgICAgICAgLS1zaWRlYmFyLWFjY2VudDogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICAgIC0tdG9vbHRpcC1iZzogdmFyKC0tZGVlcy1jb2xvci10b29sdGlwLWJnKTsKICAgICAgICAtLXRvb2x0aXAtZmc6IHZhcigtLWRlZXMtY29sb3ItdG9vbHRpcC1mZyk7CgogICAgICAgIC8qIEJhZGdlIGNvbG9ycyAqLwogICAgICAgIC0tYmFkZ2UtZGVmYXVsdC1iZzogdmFyKC0tZGVlcy1jb2xvci1iYWRnZS1kZWZhdWx0LWJnKTsKICAgICAgICAtLWJhZGdlLWRlZmF1bHQtZmc6IHZhcigtLWRlZXMtY29sb3ItYmFkZ2UtZGVmYXVsdC1mZyk7CiAgICAgICAgLS1iYWRnZS1zdWNjZXNzLWJnOiB2YXIoLS1kZWVzLWNvbG9yLWJhZGdlLXN1Y2Nlc3MtYmcpOwogICAgICAgIC0tYmFkZ2Utc3VjY2Vzcy1mZzogdmFyKC0tZGVlcy1jb2xvci1iYWRnZS1zdWNjZXNzLWZnKTsKICAgICAgICAtLWJhZGdlLXdhcm5pbmctYmc6IHZhcigtLWRlZXMtY29sb3ItYmFkZ2Utd2FybmluZy1iZyk7CiAgICAgICAgLS1iYWRnZS13YXJuaW5nLWZnOiB2YXIoLS1kZWVzLWNvbG9yLWJhZGdlLXdhcm5pbmctZmcpOwogICAgICAgIC0tYmFkZ2UtZXJyb3ItYmc6IHZhcigtLWRlZXMtY29sb3ItYmFkZ2UtZXJyb3ItYmcpOwogICAgICAgIC0tYmFkZ2UtZXJyb3ItZmc6IHZhcigtLWRlZXMtY29sb3ItYmFkZ2UtZXJyb3ItZmcpOwoKICAgICAgICAvKiBBY3Rpb24gY29sb3JzICovCiAgICAgICAgLS1hY3Rpb24tcHJpbWFyeTogJHtoLmJkVGhlbWUoIiMyNTYzZWIiLCIjM2I4MmY2Iil9OwogICAgICAgIC0tYWN0aW9uLXByaW1hcnktaG92ZXI6ICR7aC5iZFRoZW1lKCIjMWQ0ZWQ4IiwiIzYwYTVmYSIpfTsKICAgICAgICAtLWFjdGlvbi1kYW5nZXI6ICR7aC5iZFRoZW1lKCIjZGMyNjI2IiwiI2VmNDQ0NCIpfTsKICAgICAgICAtLWFjdGlvbi1kYW5nZXItaG92ZXI6ICR7aC5iZFRoZW1lKCIjYjkxYzFjIiwiI2Y4NzE3MSIpfTsKCiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB3aWR0aDogdmFyKC0tc2lkZWJhci13aWR0aC1leHBhbmRlZCk7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc2lkZWJhci1iZyk7CiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgdmFyKC0tc2lkZWJhci1ib3JkZXIpOwogICAgICAgIGZvbnQtZmFtaWx5OiAnR2Vpc3QgU2FucycsICdJbnRlcicsIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgc2Fucy1zZXJpZjsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjI1cyBlYXNlOwogICAgICB9CgogICAgICA6aG9zdChbY29sbGFwc2VkXSkgewogICAgICAgIHdpZHRoOiB2YXIoLS1zaWRlYmFyLXdpZHRoLWNvbGxhcHNlZCk7CiAgICAgIH0KCiAgICAgIC5tYWluY29udGFpbmVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAvKiBGbG9hdGluZyBjb2xsYXBzZSB0b2dnbGUgYnV0dG9uICovCiAgICAgIC5jb2xsYXBzZS10b2dnbGUgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICByaWdodDogLTEycHg7CiAgICAgICAgdG9wOiAyNHB4OwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgICAgICB3aWR0aDogMjRweDsKICAgICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYmctcHJpbWFyeSk7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItc3Ryb25nKTsKICAgICAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEpOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB6LWluZGV4OiAxMDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZSwgYmFja2dyb3VuZCAwLjE1cyBlYXNlOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KCiAgICAgIC5jb2xsYXBzZS10b2dnbGU6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYmctdGVydGlhcnkpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIH0KCiAgICAgIDpob3N0KDpob3ZlcikgLmNvbGxhcHNlLXRvZ2dsZSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgLmNvbGxhcHNlLXRvZ2dsZSBkZWVzLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgfQoKICAgICAgLyogSGVhZGVyIFNlY3Rpb24gKi8KICAgICAgLmhlYWRlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBoZWlnaHQ6IDQ4cHg7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zaWRlYmFyLWJvcmRlcik7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLmhlYWRlciAuaGVhZGluZyB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogdmFyKC0tc2lkZWJhci1mZy1hY3RpdmUpOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZSwgd2lkdGggMC4yNXMgZWFzZTsKICAgICAgfQoKICAgICAgOmhvc3QoW2NvbGxhcHNlZF0pIC5oZWFkZXIgewogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDAgOHB4OwogICAgICB9CgogICAgICA6aG9zdChbY29sbGFwc2VkXSkgLmhlYWRlciAuaGVhZGluZyB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB3aWR0aDogMDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAvKiBTY3JvbGxhYmxlIE1lbnUgU2VjdGlvbiAqLwogICAgICAubWVudVNlY3Rpb24gewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbjsKICAgICAgICBwYWRkaW5nOiA4cHggMDsKICAgICAgfQoKICAgICAgLm1lbnVTZWN0aW9uOjotd2Via2l0LXNjcm9sbGJhciB7CiAgICAgICAgd2lkdGg6IDZweDsKICAgICAgfQoKICAgICAgLm1lbnVTZWN0aW9uOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgIH0KCiAgICAgIC5tZW51U2VjdGlvbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3Itc2Nyb2xsYmFyLXRodW1iKTsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgIH0KCiAgICAgIC5tZW51U2VjdGlvbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3Itc2Nyb2xsYmFyLXRodW1iLWhvdmVyKTsKICAgICAgfQoKICAgICAgLyogTWVudSBHcm91cCAqLwogICAgICAubWVudUdyb3VwIHsKICAgICAgICBwYWRkaW5nOiAwIDhweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7CiAgICAgIH0KCiAgICAgIDpob3N0KFtjb2xsYXBzZWRdKSAubWVudUdyb3VwIHsKICAgICAgICBwYWRkaW5nOiAwIDRweDsKICAgICAgfQoKICAgICAgLmdyb3VwSGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cyBlYXNlLCBvcGFjaXR5IDAuMnMgZWFzZSwgbWF4LWhlaWdodCAwLjI1cyBlYXNlOwogICAgICAgIG1heC1oZWlnaHQ6IDQwcHg7CiAgICAgIH0KCiAgICAgIC5ncm91cEhlYWRlcjpob3ZlciB7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoInJnYmEoMTQwLCAxMjAsIDEwMCwgMC4wNikiLCJyZ2JhKDE4MCwgMTYwLCAxNDAsIDAuMDgpIil9OwogICAgICAgIHBhZGRpbmc6IDdweCAxMXB4OwogICAgICB9CgogICAgICAuZ3JvdXBIZWFkZXI6bm90KC5jb2xsYXBzZWQpIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgxNDAsIDEyMCwgMTAwLCAwLjA2KSIsInJnYmEoMTgwLCAxNjAsIDE0MCwgMC4wOCkiKX07CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICB9CgogICAgICAuZ3JvdXBIZWFkZXIgLmdyb3VwVGl0bGUgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXdhcm0pOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4OwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLmdyb3VwSGVhZGVyIC5ncm91cFRpdGxlIGRlZXMtaWNvbiB7CiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtd2FybSk7CiAgICAgIH0KCiAgICAgIC5ncm91cEhlYWRlciAuY2hldnJvbiB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2U7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC13YXJtKTsKICAgICAgfQoKICAgICAgLmdyb3VwSGVhZGVyLmNvbGxhcHNlZCAuY2hldnJvbiB7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTsKICAgICAgfQoKICAgICAgLyogSGlkZSBncm91cCBoZWFkZXJzIHdoZW4gaG9yaXpvbnRhbGx5IGNvbGxhcHNlZCAqLwogICAgICA6aG9zdChbY29sbGFwc2VkXSkgLmdyb3VwSGVhZGVyIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIG1heC1oZWlnaHQ6IDA7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICAgIC8qIEdyb3VwIEl0ZW1zIENvbnRhaW5lciAqLwogICAgICAuZ3JvdXBJdGVtcyB7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDAuMjVzIGVhc2UsIG9wYWNpdHkgMC4ycyBlYXNlLCBtYXJnaW4gMC4yNXMgZWFzZTsKICAgICAgICBtYXgtaGVpZ2h0OiAxMDAwcHg7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4OwogICAgICB9CgogICAgICAuZ3JvdXBJdGVtcy5jb2xsYXBzZWQgewogICAgICAgIG1heC1oZWlnaHQ6IDA7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICB9CgogICAgICAvKiBBbHdheXMgc2hvdyBpdGVtcyB3aGVuIGhvcml6b250YWxseSBjb2xsYXBzZWQgKHJlZ2FyZGxlc3Mgb2YgZ3JvdXAgY29sbGFwc2Ugc3RhdGUpICovCiAgICAgIDpob3N0KFtjb2xsYXBzZWRdKSAuZ3JvdXBJdGVtcyB7CiAgICAgICAgbWF4LWhlaWdodDogbm9uZTsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CgogICAgICAvKiBNZW51IEl0ZW0gQmFzZSAqLwogICAgICAubWVudUl0ZW0gewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAxMHB4OwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgIG1hcmdpbjogMnB4IDA7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0NTA7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBjb2xvcjogdmFyKC0tc2lkZWJhci1mZyk7CiAgICAgIH0KCiAgICAgIC5tZW51SXRlbTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc2lkZWJhci1ob3Zlcik7CiAgICAgICAgY29sb3I6IHZhcigtLXNpZGViYXItZmctYWN0aXZlKTsKICAgICAgfQoKICAgICAgLm1lbnVJdGVtOmFjdGl2ZSB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc2lkZWJhci1hY3RpdmUpOwogICAgICB9CgogICAgICAubWVudUl0ZW0uZGlzYWJsZWQgewogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICAubWVudUl0ZW0uc2VsZWN0ZWQgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXNpZGViYXItYWN0aXZlKTsKICAgICAgICBjb2xvcjogdmFyKC0tc2lkZWJhci1mZy1hY3RpdmUpOwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIH0KCiAgICAgIC5tZW51SXRlbS5zZWxlY3RlZDo6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB0b3A6IDUwJTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICAgICAgd2lkdGg6IDNweDsKICAgICAgICBoZWlnaHQ6IDE2cHg7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc2lkZWJhci1hY2NlbnQpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDAgMnB4IDJweCAwOwogICAgICB9CgogICAgICAubWVudUl0ZW0gZGVlcy1pY29uIHsKICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgb3BhY2l0eTogMC43OwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAubWVudUl0ZW0uc2VsZWN0ZWQgZGVlcy1pY29uIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CgogICAgICAubWVudUl0ZW0gLml0ZW1MYWJlbCB7CiAgICAgICAgZmxleDogMTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2UsIHdpZHRoIDAuMjVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC8qIEFjdGlvbiBJdGVtIFN0eWxlcyAqLwogICAgICAubWVudUl0ZW0uYWN0aW9uLXByaW1hcnkgewogICAgICAgIGNvbG9yOiB2YXIoLS1hY3Rpb24tcHJpbWFyeSk7CiAgICAgIH0KCiAgICAgIC5tZW51SXRlbS5hY3Rpb24tcHJpbWFyeTpob3ZlciB7CiAgICAgICAgY29sb3I6IHZhcigtLWFjdGlvbi1wcmltYXJ5LWhvdmVyKTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgzNywgOTksIDIzNSwgMC4wOCkiLCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC4xMikiKX07CiAgICAgIH0KCiAgICAgIC5tZW51SXRlbS5hY3Rpb24tcHJpbWFyeSBkZWVzLWljb24gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC5tZW51SXRlbS5hY3Rpb24tZGFuZ2VyIHsKICAgICAgICBjb2xvcjogdmFyKC0tYWN0aW9uLWRhbmdlcik7CiAgICAgIH0KCiAgICAgIC5tZW51SXRlbS5hY3Rpb24tZGFuZ2VyOmhvdmVyIHsKICAgICAgICBjb2xvcjogdmFyKC0tYWN0aW9uLWRhbmdlci1ob3Zlcik7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMjIwLCAzOCwgMzgsIDAuMDgpIiwicmdiYSgyMzksIDY4LCA2OCwgMC4xMikiKX07CiAgICAgIH0KCiAgICAgIC5tZW51SXRlbS5hY3Rpb24tZGFuZ2VyIGRlZXMtaWNvbiB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgLyogRmlsdGVyIEl0ZW0gU3R5bGVzICovCiAgICAgIC5tZW51SXRlbS5maWx0ZXIgewogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgfQoKICAgICAgLm1lbnVJdGVtLmZpbHRlciAuZmlsdGVyLWNoZWNrYm94IHsKICAgICAgICB3aWR0aDogMTZweDsKICAgICAgICBoZWlnaHQ6IDE2cHg7CiAgICAgICAgYm9yZGVyOiAycHggc29saWQgJHtoLmJkVGhlbWUoIiNkNGQ0ZDQiLCIjNTI1MjUyIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC5tZW51SXRlbS5maWx0ZXIgLmZpbHRlci1jaGVja2JveC5jaGVja2VkIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaWRlYmFyLWFjY2VudCk7CiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zaWRlYmFyLWFjY2VudCk7CiAgICAgIH0KCiAgICAgIC5tZW51SXRlbS5maWx0ZXIgLmZpbHRlci1jaGVja2JveCBkZWVzLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNmYWZhZmEiLCIjMGEwYTBhIil9OwogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC5tZW51SXRlbS5maWx0ZXIuYWN0aXZlIHsKICAgICAgICBjb2xvcjogdmFyKC0tc2lkZWJhci1mZy1hY3RpdmUpOwogICAgICB9CgogICAgICAvKiBNdWx0aS1GaWx0ZXIgQ29udGFpbmVyICovCiAgICAgIC5tdWx0aUZpbHRlciB7CiAgICAgICAgbWFyZ2luOiA0cHggMDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zaWRlYmFyLWJvcmRlcik7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wMikiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDIpIil9OwogICAgICB9CgogICAgICAubXVsdGlGaWx0ZXItaGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIHBhZGRpbmc6IDEwcHggMTJweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cyBlYXNlOwogICAgICB9CgogICAgICAubXVsdGlGaWx0ZXItaGVhZGVyOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaWRlYmFyLWhvdmVyKTsKICAgICAgfQoKICAgICAgLm11bHRpRmlsdGVyLWhlYWRlciAubXVsdGlGaWx0ZXItdGl0bGUgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjb2xvcjogdmFyKC0tc2lkZWJhci1mZy1hY3RpdmUpOwogICAgICB9CgogICAgICAubXVsdGlGaWx0ZXItaGVhZGVyIC5tdWx0aUZpbHRlci10aXRsZSBkZWVzLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICBvcGFjaXR5OiAwLjc7CiAgICAgIH0KCiAgICAgIC5tdWx0aUZpbHRlci1oZWFkZXIgLm11bHRpRmlsdGVyLWNvdW50IHsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgY29sb3I6IHZhcigtLXNpZGViYXItZmctbXV0ZWQpOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJhZGdlLWRlZmF1bHQtYmcpOwogICAgICAgIHBhZGRpbmc6IDJweCA2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICB9CgogICAgICAubXVsdGlGaWx0ZXItaGVhZGVyIC5jaGV2cm9uIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZTsKICAgICAgICBjb2xvcjogdmFyKC0tc2lkZWJhci1mZy1tdXRlZCk7CiAgICAgIH0KCiAgICAgIC5tdWx0aUZpbHRlci1oZWFkZXIuY29sbGFwc2VkIC5jaGV2cm9uIHsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpOwogICAgICB9CgogICAgICAubXVsdGlGaWx0ZXItb3B0aW9ucyB7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXNpZGViYXItYm9yZGVyKTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRyYW5zaXRpb246IG1heC1oZWlnaHQgMC4yNXMgZWFzZSwgb3BhY2l0eSAwLjJzIGVhc2U7CiAgICAgICAgbWF4LWhlaWdodDogNTAwcHg7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgLm11bHRpRmlsdGVyLW9wdGlvbnMuY29sbGFwc2VkIHsKICAgICAgICBtYXgtaGVpZ2h0OiAwOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgYm9yZGVyLXRvcDogbm9uZTsKICAgICAgfQoKICAgICAgLm11bHRpRmlsdGVyLW9wdGlvbiB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMTBweDsKICAgICAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cyBlYXNlOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBjb2xvcjogdmFyKC0tc2lkZWJhci1mZyk7CiAgICAgIH0KCiAgICAgIC5tdWx0aUZpbHRlci1vcHRpb246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXNpZGViYXItaG92ZXIpOwogICAgICAgIGNvbG9yOiB2YXIoLS1zaWRlYmFyLWZnLWFjdGl2ZSk7CiAgICAgIH0KCiAgICAgIC5tdWx0aUZpbHRlci1vcHRpb24gLm9wdGlvbi1jaGVja2JveCB7CiAgICAgICAgd2lkdGg6IDE2cHg7CiAgICAgICAgaGVpZ2h0OiAxNnB4OwogICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZDRkNGQ0IiwiIzUyNTI1MiIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAubXVsdGlGaWx0ZXItb3B0aW9uIC5vcHRpb24tY2hlY2tib3guY2hlY2tlZCB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc2lkZWJhci1hY2NlbnQpOwogICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc2lkZWJhci1hY2NlbnQpOwogICAgICB9CgogICAgICAubXVsdGlGaWx0ZXItb3B0aW9uIC5vcHRpb24tY2hlY2tib3ggZGVlcy1pY29uIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZmFmYWZhIiwiIzBhMGEwYSIpfTsKICAgICAgfQoKICAgICAgLm11bHRpRmlsdGVyLW9wdGlvbiBkZWVzLWljb24ub3B0aW9uLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBvcGFjaXR5OiAwLjc7CiAgICAgIH0KCiAgICAgIC8qIERpdmlkZXIgKi8KICAgICAgLm1lbnVEaXZpZGVyIHsKICAgICAgICBoZWlnaHQ6IDFweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaWRlYmFyLWJvcmRlcik7CiAgICAgICAgbWFyZ2luOiA4cHggMTJweDsKICAgICAgfQoKICAgICAgOmhvc3QoW2NvbGxhcHNlZF0pIC5tZW51RGl2aWRlciB7CiAgICAgICAgbWFyZ2luOiA4cHggNHB4OwogICAgICB9CgogICAgICAvKiBIZWFkZXIvTGFiZWwgKi8KICAgICAgLm1lbnVIZWFkZXIgewogICAgICAgIHBhZGRpbmc6IDEycHggMTJweCA0cHggMTJweDsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogdmFyKC0tc2lkZWJhci1mZy1tdXRlZCk7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7CiAgICAgIH0KCiAgICAgIDpob3N0KFtjb2xsYXBzZWRdKSAubWVudUhlYWRlciB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgLyogTGluayBJdGVtICovCiAgICAgIC5tZW51SXRlbS5saW5rIC5leHRlcm5hbC1pY29uIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICB9CgogICAgICAvKiBDb2xsYXBzZWQgbWVudSBpdGVtIHN0eWxlcyAqLwogICAgICA6aG9zdChbY29sbGFwc2VkXSkgLm1lbnVJdGVtIHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiA4cHg7CiAgICAgICAgZ2FwOiAwOwogICAgICB9CgogICAgICA6aG9zdChbY29sbGFwc2VkXSkgLm1lbnVJdGVtIC5pdGVtTGFiZWwgewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgd2lkdGg6IDA7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB9CgogICAgICA6aG9zdChbY29sbGFwc2VkXSkgLm1lbnVJdGVtLnNlbGVjdGVkOjpiZWZvcmUgewogICAgICAgIGxlZnQ6IC00cHg7CiAgICAgIH0KCiAgICAgIDpob3N0KFtjb2xsYXBzZWRdKSAubWVudUl0ZW0gLmZpbHRlci1jaGVja2JveCwKICAgICAgOmhvc3QoW2NvbGxhcHNlZF0pIC5tZW51SXRlbSAuZXh0ZXJuYWwtaWNvbiB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgOmhvc3QoW2NvbGxhcHNlZF0pIC5tdWx0aUZpbHRlciB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgLyogVG9vbHRpcCBmb3IgY29sbGFwc2VkIHN0YXRlICovCiAgICAgIC5pdGVtLXRvb2x0aXAgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBsZWZ0OiAxMDAlOwogICAgICAgIHRvcDogNTAlOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgICAgICBtYXJnaW4tbGVmdDogMTJweDsKICAgICAgICBwYWRkaW5nOiA2cHggMTJweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10b29sdGlwLWJnKTsKICAgICAgICBjb2xvcjogdmFyKC0tdG9vbHRpcC1mZyk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGVhc2U7CiAgICAgICAgei1pbmRleDogMTAwMDsKICAgICAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjE1KTsKICAgICAgfQoKICAgICAgLml0ZW0tdG9vbHRpcDo6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgbGVmdDogLTRweDsKICAgICAgICB0b3A6IDUwJTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICAgICAgYm9yZGVyOiA0cHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB2YXIoLS10b29sdGlwLWJnKTsKICAgICAgfQoKICAgICAgOmhvc3QoW2NvbGxhcHNlZF0pIC5tZW51SXRlbTpob3ZlciAuaXRlbS10b29sdGlwIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIHRyYW5zaXRpb24tZGVsYXk6IDFzOwogICAgICB9CgogICAgICAvKiBCYWRnZSBTdHlsZXMgKi8KICAgICAgLmJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIG1pbi13aWR0aDogMThweDsKICAgICAgICBoZWlnaHQ6IDE4cHg7CiAgICAgICAgcGFkZGluZzogMCA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOXB4OwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAuYmFkZ2UuZGVmYXVsdCB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYmFkZ2UtZGVmYXVsdC1iZyk7CiAgICAgICAgY29sb3I6IHZhcigtLWJhZGdlLWRlZmF1bHQtZmcpOwogICAgICB9CgogICAgICAuYmFkZ2Uuc3VjY2VzcyB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYmFkZ2Utc3VjY2Vzcy1iZyk7CiAgICAgICAgY29sb3I6IHZhcigtLWJhZGdlLXN1Y2Nlc3MtZmcpOwogICAgICB9CgogICAgICAuYmFkZ2Uud2FybmluZyB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYmFkZ2Utd2FybmluZy1iZyk7CiAgICAgICAgY29sb3I6IHZhcigtLWJhZGdlLXdhcm5pbmctZmcpOwogICAgICB9CgogICAgICAuYmFkZ2UuZXJyb3IgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJhZGdlLWVycm9yLWJnKTsKICAgICAgICBjb2xvcjogdmFyKC0tYmFkZ2UtZXJyb3ItZmcpOwogICAgICB9CgogICAgICA6aG9zdChbY29sbGFwc2VkXSkgLmJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CgogICAgICAvKiBMZWdhY3kgb3B0aW9ucyBjb250YWluZXIgKi8KICAgICAgLmxlZ2FjeU9wdGlvbnMgewogICAgICAgIHBhZGRpbmc6IDAgOHB4OwogICAgICB9CgogICAgICAvKiBEaXZpZGVyIChsZWdhY3kpICovCiAgICAgIC5kaXZpZGVyIHsKICAgICAgICBoZWlnaHQ6IDFweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaWRlYmFyLWJvcmRlcik7CiAgICAgICAgbWFyZ2luOiA4cHggMTJweDsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9Im1haW5jb250YWluZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iaGVhZGluZyI+JHt0aGlzLmhlYWRpbmd9PC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1lbnVTZWN0aW9uIj4KICAgICAgICAgICR7dGhpcy5ncm91cHMubGVuZ3RoPjA/dGhpcy5yZW5kZXJHcm91cHMoKTp0aGlzLnJlbmRlckxlZ2FjeU9wdGlvbnMoKX0KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxidXR0b24gY2xhc3M9ImNvbGxhcHNlLXRvZ2dsZSIgQGNsaWNrPSIkeygpPT50aGlzLnRvZ2dsZUNvbGxhcHNlKCl9Ij4KICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSIke3RoaXMuY29sbGFwc2VkPyJsdWNpZGU6Y2hldnJvblJpZ2h0IjoibHVjaWRlOmNoZXZyb25MZWZ0In0iPjwvZGVlcy1pY29uPgogICAgICA8L2J1dHRvbj4KICAgIGB9cmVuZGVyR3JvdXBzKCl7cmV0dXJuIHdgCiAgICAgICR7dGhpcy5ncm91cHMubWFwKFA9PndgCiAgICAgICAgPGRpdiBjbGFzcz0ibWVudUdyb3VwIj4KICAgICAgICAgIDxkaXYKICAgICAgICAgICAgY2xhc3M9Imdyb3VwSGVhZGVyICR7dGhpcy5jb2xsYXBzZWRHcm91cHMuaGFzKFAubmFtZSk/ImNvbGxhcHNlZCI6IiJ9IgogICAgICAgICAgICBAY2xpY2s9IiR7KCk9PnRoaXMudG9nZ2xlR3JvdXAoUC5uYW1lKX0iCiAgICAgICAgICA+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJncm91cFRpdGxlIj4KICAgICAgICAgICAgICAke1AuaWNvbk5hbWU/d2A8ZGVlcy1pY29uIC5pY29uPSIke3RoaXMubm9ybWFsaXplSWNvbihQLmljb25OYW1lKX0iPjwvZGVlcy1pY29uPmA6IiJ9CiAgICAgICAgICAgICAgJHtQLm5hbWV9CiAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPGRlZXMtaWNvbiBjbGFzcz0iY2hldnJvbiIgLmljb249IiR7Imx1Y2lkZTpjaGV2cm9uRG93biJ9Ij48L2RlZXMtaWNvbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZ3JvdXBJdGVtcyAke3RoaXMuY29sbGFwc2VkR3JvdXBzLmhhcyhQLm5hbWUpPyJjb2xsYXBzZWQiOiIifSI+CiAgICAgICAgICAgICR7UC5pdGVtcy5tYXAoUj0+dGhpcy5yZW5kZXJJdGVtKFIsUCkpfQogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIGApfQogICAgYH1yZW5kZXJJdGVtKFAsUil7aWYoImhpZGRlbiJpbiBQJiZQLmhpZGRlbilyZXR1cm4gd2BgO3N3aXRjaCgidHlwZSJpbiBQP1AudHlwZToidGFiIil7Y2FzZSJhY3Rpb24iOnJldHVybiB0aGlzLnJlbmRlckFjdGlvbkl0ZW0oUCk7Y2FzZSJmaWx0ZXIiOnJldHVybiB0aGlzLnJlbmRlckZpbHRlckl0ZW0oUCk7Y2FzZSJtdWx0aUZpbHRlciI6cmV0dXJuIHRoaXMucmVuZGVyTXVsdGlGaWx0ZXJJdGVtKFApO2Nhc2UiZGl2aWRlciI6cmV0dXJuIHRoaXMucmVuZGVyRGl2aWRlcigpO2Nhc2UiaGVhZGVyIjpyZXR1cm4gdGhpcy5yZW5kZXJIZWFkZXIoUCk7Y2FzZSJsaW5rIjpyZXR1cm4gdGhpcy5yZW5kZXJMaW5rSXRlbShQKTtkZWZhdWx0OnJldHVybiB0aGlzLnJlbmRlclRhYkl0ZW0oUCxSKX19cmVuZGVyVGFiSXRlbShQLFIpe2xldCBLPXRoaXMuc2VsZWN0ZWRJdGVtPy5rZXk9PT1QLmtleSxWPVAuZGlzYWJsZWQ9PT0hMDtyZXR1cm4gd2AKICAgICAgPGRpdgogICAgICAgIGNsYXNzPSJtZW51SXRlbSAke0s/InNlbGVjdGVkIjoiIn0gJHtWPyJkaXNhYmxlZCI6IiJ9IgogICAgICAgIEBjbGljaz0iJHsoKT0+IVYmJnRoaXMuc2VsZWN0VGFiSXRlbShQLFIpfSIKICAgICAgICBAY29udGV4dG1lbnU9IiR7Vz0+dGhpcy5oYW5kbGVDb250ZXh0TWVudShXLFApfSIKICAgICAgPgogICAgICAgICR7UC5pY29uTmFtZT93YDxkZWVzLWljb24gLmljb249IiR7dGhpcy5ub3JtYWxpemVJY29uKFAuaWNvbk5hbWUpfSI+PC9kZWVzLWljb24+YDoiIn0KICAgICAgICA8c3BhbiBjbGFzcz0iaXRlbUxhYmVsIj4ke1Aua2V5fTwvc3Bhbj4KICAgICAgICAke1AuYmFkZ2UhPT12b2lkIDA/d2AKICAgICAgICAgIDxzcGFuIGNsYXNzPSJiYWRnZSAke1AuYmFkZ2VWYXJpYW50fHwiZGVmYXVsdCJ9Ij4ke1AuYmFkZ2V9PC9zcGFuPgogICAgICAgIGA6IiJ9CiAgICAgICAgPHNwYW4gY2xhc3M9Iml0ZW0tdG9vbHRpcCI+JHtQLmtleX08L3NwYW4+CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJBY3Rpb25JdGVtKFApe2xldCBSPVAudmFyaWFudHx8InByaW1hcnkiLEs9UC5kaXNhYmxlZD09PSEwO3JldHVybiB3YAogICAgICA8ZGl2CiAgICAgICAgY2xhc3M9Im1lbnVJdGVtIGFjdGlvbi0ke1J9ICR7Sz8iZGlzYWJsZWQiOiIifSIKICAgICAgICBAY2xpY2s9IiR7KCk9PiFLJiZ0aGlzLmhhbmRsZUFjdGlvbkNsaWNrKFApfSIKICAgICAgPgogICAgICAgICR7UC5pY29uTmFtZT93YDxkZWVzLWljb24gLmljb249IiR7dGhpcy5ub3JtYWxpemVJY29uKFAuaWNvbk5hbWUpfSI+PC9kZWVzLWljb24+YDoiIn0KICAgICAgICA8c3BhbiBjbGFzcz0iaXRlbUxhYmVsIj4ke1Aua2V5fTwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iaXRlbS10b29sdGlwIj4ke1Aua2V5fTwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICBgfXJlbmRlckZpbHRlckl0ZW0oUCl7bGV0IFI9UC5kaXNhYmxlZD09PSEwO3JldHVybiB3YAogICAgICA8ZGl2CiAgICAgICAgY2xhc3M9Im1lbnVJdGVtIGZpbHRlciAke1AuYWN0aXZlPyJhY3RpdmUiOiIifSAke1I/ImRpc2FibGVkIjoiIn0iCiAgICAgICAgQGNsaWNrPSIkeygpPT4hUiYmdGhpcy5oYW5kbGVGaWx0ZXJUb2dnbGUoUCl9IgogICAgICA+CiAgICAgICAgJHtQLmljb25OYW1lP3dgPGRlZXMtaWNvbiAuaWNvbj0iJHt0aGlzLm5vcm1hbGl6ZUljb24oUC5pY29uTmFtZSl9Ij48L2RlZXMtaWNvbj5gOiIifQogICAgICAgIDxzcGFuIGNsYXNzPSJpdGVtTGFiZWwiPiR7UC5rZXl9PC9zcGFuPgogICAgICAgIDxkaXYgY2xhc3M9ImZpbHRlci1jaGVja2JveCAke1AuYWN0aXZlPyJjaGVja2VkIjoiIn0iPgogICAgICAgICAgJHtQLmFjdGl2ZT93YDxkZWVzLWljb24gLmljb249IiR7Imx1Y2lkZTpjaGVjayJ9Ij48L2RlZXMtaWNvbj5gOiIifQogICAgICAgIDwvZGl2PgogICAgICAgIDxzcGFuIGNsYXNzPSJpdGVtLXRvb2x0aXAiPiR7UC5rZXl9PC9zcGFuPgogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyTXVsdGlGaWx0ZXJJdGVtKFApe2xldCBSPXRoaXMuY29sbGFwc2VkTXVsdGlGaWx0ZXJzLmhhcyhQLmtleSksSz1QLm9wdGlvbnMuZmlsdGVyKFY9PlYuY2hlY2tlZCkubGVuZ3RoO3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJtdWx0aUZpbHRlciI+CiAgICAgICAgPGRpdgogICAgICAgICAgY2xhc3M9Im11bHRpRmlsdGVyLWhlYWRlciAke1I/ImNvbGxhcHNlZCI6IiJ9IgogICAgICAgICAgQGNsaWNrPSIkeygpPT50aGlzLnRvZ2dsZU11bHRpRmlsdGVyKFAua2V5KX0iCiAgICAgICAgPgogICAgICAgICAgPHNwYW4gY2xhc3M9Im11bHRpRmlsdGVyLXRpdGxlIj4KICAgICAgICAgICAgJHtQLmljb25OYW1lP3dgPGRlZXMtaWNvbiAuaWNvbj0iJHt0aGlzLm5vcm1hbGl6ZUljb24oUC5pY29uTmFtZSl9Ij48L2RlZXMtaWNvbj5gOiIifQogICAgICAgICAgICAke1Aua2V5fQogICAgICAgICAgPC9zcGFuPgogICAgICAgICAgJHtLPjA/d2A8c3BhbiBjbGFzcz0ibXVsdGlGaWx0ZXItY291bnQiPiR7S308L3NwYW4+YDoiIn0KICAgICAgICAgIDxkZWVzLWljb24gY2xhc3M9ImNoZXZyb24iIC5pY29uPSIkeyJsdWNpZGU6Y2hldnJvbkRvd24ifSI+PC9kZWVzLWljb24+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibXVsdGlGaWx0ZXItb3B0aW9ucyAke1I/ImNvbGxhcHNlZCI6IiJ9Ij4KICAgICAgICAgICR7UC5vcHRpb25zLm1hcChWPT53YAogICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgY2xhc3M9Im11bHRpRmlsdGVyLW9wdGlvbiIKICAgICAgICAgICAgICBAY2xpY2s9IiR7KCk9PnRoaXMuaGFuZGxlTXVsdGlGaWx0ZXJPcHRpb25Ub2dnbGUoUCxWLmtleSl9IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ib3B0aW9uLWNoZWNrYm94ICR7Vi5jaGVja2VkPyJjaGVja2VkIjoiIn0iPgogICAgICAgICAgICAgICAgJHtWLmNoZWNrZWQ/d2A8ZGVlcy1pY29uIC5pY29uPSIkeyJsdWNpZGU6Y2hlY2sifSI+PC9kZWVzLWljb24+YDoiIn0KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAke1YuaWNvbk5hbWU/d2A8ZGVlcy1pY29uIGNsYXNzPSJvcHRpb24taWNvbiIgLmljb249IiR7dGhpcy5ub3JtYWxpemVJY29uKFYuaWNvbk5hbWUpfSI+PC9kZWVzLWljb24+YDoiIn0KICAgICAgICAgICAgICA8c3Bhbj4ke1YubGFiZWx9PC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIGApfQogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyRGl2aWRlcigpe3JldHVybiB3YDxkaXYgY2xhc3M9Im1lbnVEaXZpZGVyIj48L2Rpdj5gfXJlbmRlckhlYWRlcihQKXtyZXR1cm4gd2A8ZGl2IGNsYXNzPSJtZW51SGVhZGVyIj4ke1AubGFiZWx9PC9kaXY+YH1yZW5kZXJMaW5rSXRlbShQKXtsZXQgUj1QLmV4dGVybmFsPz9QLmhyZWYuc3RhcnRzV2l0aCgiaHR0cCIpLEs9UC5kaXNhYmxlZD09PSEwO3JldHVybiB3YAogICAgICA8ZGl2CiAgICAgICAgY2xhc3M9Im1lbnVJdGVtIGxpbmsgJHtLPyJkaXNhYmxlZCI6IiJ9IgogICAgICAgIEBjbGljaz0iJHsoKT0+IUsmJnRoaXMuaGFuZGxlTGlua0NsaWNrKFApfSIKICAgICAgPgogICAgICAgICR7UC5pY29uTmFtZT93YDxkZWVzLWljb24gLmljb249IiR7dGhpcy5ub3JtYWxpemVJY29uKFAuaWNvbk5hbWUpfSI+PC9kZWVzLWljb24+YDoiIn0KICAgICAgICA8c3BhbiBjbGFzcz0iaXRlbUxhYmVsIj4ke1Aua2V5fTwvc3Bhbj4KICAgICAgICAke1I/d2A8ZGVlcy1pY29uIGNsYXNzPSJleHRlcm5hbC1pY29uIiAuaWNvbj0iJHsibHVjaWRlOmV4dGVybmFsTGluayJ9Ij48L2RlZXMtaWNvbj5gOiIifQogICAgICAgIDxzcGFuIGNsYXNzPSJpdGVtLXRvb2x0aXAiPiR7UC5rZXl9PC9zcGFuPgogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyTGVnYWN5T3B0aW9ucygpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJsZWdhY3lPcHRpb25zIj4KICAgICAgICAke3RoaXMuc2VsZWN0aW9uT3B0aW9ucy5tYXAoUD0+e2lmKCJkaXZpZGVyImluIFAmJlAuZGl2aWRlcilyZXR1cm4gd2A8ZGl2IGNsYXNzPSJkaXZpZGVyIj48L2Rpdj5gO2xldCBSPVAsSz17a2V5OlIua2V5LGljb25OYW1lOlIuaWNvbk5hbWUsYWN0aW9uOlIuYWN0aW9uLGJhZGdlOlIuYmFkZ2UsYmFkZ2VWYXJpYW50OlIuYmFkZ2VWYXJpYW50fTtyZXR1cm4gdGhpcy5yZW5kZXJUYWJJdGVtKEspfSl9CiAgICAgIDwvZGl2PgogICAgYH1ub3JtYWxpemVJY29uKFApe3JldHVybiBQLnN0YXJ0c1dpdGgoImx1Y2lkZToiKT9QOmBsdWNpZGU6JHtQfWB9dG9nZ2xlR3JvdXAoUCl7bGV0IFI9bmV3IFNldCh0aGlzLmNvbGxhcHNlZEdyb3Vwcyk7Ui5oYXMoUCk/Ui5kZWxldGUoUCk6Ui5hZGQoUCksdGhpcy5jb2xsYXBzZWRHcm91cHM9Un10b2dnbGVNdWx0aUZpbHRlcihQKXtsZXQgUj1uZXcgU2V0KHRoaXMuY29sbGFwc2VkTXVsdGlGaWx0ZXJzKTtSLmhhcyhQKT9SLmRlbGV0ZShQKTpSLmFkZChQKSx0aGlzLmNvbGxhcHNlZE11bHRpRmlsdGVycz1SfXRvZ2dsZUNvbGxhcHNlKCl7dGhpcy5jb2xsYXBzZWQ9IXRoaXMuY29sbGFwc2VkLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNvbGxhcHNlLWNoYW5nZSIse2RldGFpbDp7Y29sbGFwc2VkOnRoaXMuY29sbGFwc2VkfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfXNlbGVjdFRhYkl0ZW0oUCxSKXt0aGlzLnNlbGVjdGVkSXRlbT1QLFAuYWN0aW9uKCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiaXRlbS1zZWxlY3QiLHtkZXRhaWw6e2l0ZW06UCxncm91cDpSfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWFzeW5jIGhhbmRsZUFjdGlvbkNsaWNrKFApe1AuY29uZmlybU1lc3NhZ2UmJiF3aW5kb3cuY29uZmlybShQLmNvbmZpcm1NZXNzYWdlKXx8KGF3YWl0IFAuYWN0aW9uKCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiYWN0aW9uLWNsaWNrIix7ZGV0YWlsOntpdGVtOlB9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSkpfWhhbmRsZUZpbHRlclRvZ2dsZShQKXtsZXQgUj0hUC5hY3RpdmU7UC5hY3RpdmU9UixQLm9uVG9nZ2xlKFIpLHRoaXMucmVuZGVyQ291bnRlcisrLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImZpbHRlci10b2dnbGUiLHtkZXRhaWw6e2l0ZW06UCxhY3RpdmU6Un0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1oYW5kbGVNdWx0aUZpbHRlck9wdGlvblRvZ2dsZShQLFIpe2xldCBLPVAub3B0aW9ucy5maW5kKFc9Plcua2V5PT09Uik7SyYmKEsuY2hlY2tlZD0hSy5jaGVja2VkKTtsZXQgVj1QLm9wdGlvbnMuZmlsdGVyKFc9PlcuY2hlY2tlZCkubWFwKFc9Plcua2V5KTtQLm9uQ2hhbmdlKFYpLHRoaXMucmVuZGVyQ291bnRlcisrLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoIm11bHRpZmlsdGVyLWNoYW5nZSIse2RldGFpbDp7aXRlbTpQLHNlbGVjdGVkS2V5czpWfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZUxpbmtDbGljayhQKXtQLmV4dGVybmFsPz9QLmhyZWYuc3RhcnRzV2l0aCgiaHR0cCIpP3dpbmRvdy5vcGVuKFAuaHJlZiwiX2JsYW5rIiwibm9vcGVuZXIsbm9yZWZlcnJlciIpOndpbmRvdy5sb2NhdGlvbi5ocmVmPVAuaHJlZix0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJsaW5rLWNsaWNrIix7ZGV0YWlsOntpdGVtOlB9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9aGFuZGxlQ29udGV4dE1lbnUoUCxSKXskYS5vcGVuQ29udGV4dE1lbnVXaXRoT3B0aW9ucyhQLFt7bmFtZToiVmlldyBkZXRhaWxzIixhY3Rpb246aShhc3luYygpPT57fSwiYWN0aW9uIiksaWNvbk5hbWU6Imx1Y2lkZTpleWUifSx7bmFtZToiRWRpdCIsYWN0aW9uOmkoYXN5bmMoKT0+e30sImFjdGlvbiIpLGljb25OYW1lOiJsdWNpZGU6cGVuY2lsIn1dKX1hc3luYyBmaXJzdFVwZGF0ZWQoUCl7aWYoYXdhaXQgc3VwZXIuZmlyc3RVcGRhdGVkKFApLHRoaXMuZ3JvdXBzLmxlbmd0aD4wKXtsZXQgUj1uZXcgU2V0LEs9bmV3IFNldDtpZih0aGlzLmdyb3Vwcy5mb3JFYWNoKFY9PntWLmNvbGxhcHNlZCYmUi5hZGQoVi5uYW1lKSxWLml0ZW1zLmZvckVhY2goVz0+e2lmKCJ0eXBlImluIFcmJlcudHlwZT09PSJtdWx0aUZpbHRlciIpe2xldCBtZT1XO21lLmNvbGxhcHNlZCYmSy5hZGQobWUua2V5KX19KX0pLHRoaXMuY29sbGFwc2VkR3JvdXBzPVIsdGhpcy5jb2xsYXBzZWRNdWx0aUZpbHRlcnM9SywhdGhpcy5zZWxlY3RlZEl0ZW0pZm9yKGxldCBWIG9mIHRoaXMuZ3JvdXBzKWZvcihsZXQgVyBvZiBWLml0ZW1zKXtsZXQgbWU9InR5cGUiaW4gVz9XLnR5cGU6InRhYiI7aWYobWU9PT0idGFiInx8bWU9PT12b2lkIDApe2xldCBCPVc7aWYoIUIuZGlzYWJsZWQpe3RoaXMuc2VsZWN0VGFiSXRlbShCLFYpO3JldHVybn19fX1lbHNlIGlmKHRoaXMuc2VsZWN0aW9uT3B0aW9ucy5sZW5ndGg+MCl7bGV0IFI9dGhpcy5zZWxlY3Rpb25PcHRpb25zLmZpbmQoSz0+ISgiZGl2aWRlciJpbiBLKSk7aWYoUiYmIXRoaXMuc2VsZWN0ZWRJdGVtKXtsZXQgSz17a2V5OlIua2V5LGljb25OYW1lOlIuaWNvbk5hbWUsYWN0aW9uOlIuYWN0aW9ufTt0aGlzLnNlbGVjdFRhYkl0ZW0oSyl9fX1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksQm8odGhpcyxTKX1zdGF0aWN7Qm8oYSx0KX19O3JldHVybiBJPWF9KSgpfSk7dmFyIHQ3LFFjLFpWbyxYVm8sV3ZhLEd2YT1nKCgpPT57cGUoKTthNCgpO3Q3PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxRYz1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sWlZvPSgoKT0+e2xldCBzPVtuZSgiZGVtby1jbG9zZWFibGUtdGFicyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdO3ZhciBjPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZW1vQ2xvc2VhYmxlVGFicyIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBiPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W1koKV0scD1bWSgpXSx0Nyh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InRhYnMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkodj0+InRhYnMiaW4gdiwiaGFzIiksZ2V0Omkodj0+di50YWJzLCJnZXQiKSxzZXQ6aSgodix4KT0+e3YudGFicz14fSwic2V0Iil9LG1ldGFkYXRhOmJ9LG8sbCksdDcodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0YWJDb3VudGVyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHY9PiJ0YWJDb3VudGVyImluIHYsImhhcyIpLGdldDppKHY9PnYudGFiQ291bnRlciwiZ2V0Iiksc2V0OmkoKHYseCk9Pnt2LnRhYkNvdW50ZXI9eH0sInNldCIpfSxtZXRhZGF0YTpifSxkLHUpLHQ3KG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOmJ9LG51bGwsdCksYz1hPWUudmFsdWUsYiYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSl9I2U9UWModGhpcyxvLFt7a2V5OiJNYWluIixpY29uTmFtZToibHVjaWRlOmhvbWUiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiTWFpbiBjbGlja2VkIiksImFjdGlvbiIpfV0pO2dldCB0YWJzKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHRhYnMoYil7dGhpcy4jZT1ifSN0PShRYyh0aGlzLGwpLFFjKHRoaXMsZCwwKSk7Z2V0IHRhYkNvdW50ZXIoKXtyZXR1cm4gdGhpcy4jdH1zZXQgdGFiQ291bnRlcihiKXt0aGlzLiN0PWJ9c3RhdGljIHN0eWxlcz1bSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICAgIC5pbmZvIHsKICAgICAgICBtYXJnaW4tdG9wOiAxNnB4OwogICAgICAgIHBhZGRpbmc6IDEycHggMTZweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLDAsMCwwLjAyKSIsInJnYmEoMjU1LDI1NSwyNTUsMC4wMikiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICB9CiAgICBgXTthZGRUYWIoKXt0aGlzLnRhYkNvdW50ZXIrKztsZXQgYj1gRG9jdW1lbnQgJHt0aGlzLnRhYkNvdW50ZXJ9YDt0aGlzLnRhYnM9Wy4uLnRoaXMudGFicyx7a2V5OmIsaWNvbk5hbWU6Imx1Y2lkZTpmaWxlIixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coYCR7Yn0gY2xpY2tlZGApLCJhY3Rpb24iKSxjbG9zZWFibGU6ITAsb25DbG9zZTppKCgpPT50aGlzLnJlbW92ZVRhYihiKSwib25DbG9zZSIpfV19cmVtb3ZlVGFiKGIpe3RoaXMudGFicz10aGlzLnRhYnMuZmlsdGVyKHY9PnYua2V5IT09Yil9Y2xlYXJBbGwoKXt0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiZGVlcy1hcHB1aS10YWJzIik/LmNsZWFyKCksdGhpcy50YWJzPVtdLHRoaXMudGFiQ291bnRlcj0wfXJlbmRlcigpe2xldCBiPVt7aWQ6ImFkZCIsaWNvbk5hbWU6Imx1Y2lkZTpwbHVzIixhY3Rpb246aSgoKT0+dGhpcy5hZGRUYWIoKSwiYWN0aW9uIiksdG9vbHRpcDoiTmV3IFRhYiJ9LHtpZDoiY2xlYXIiLGljb25OYW1lOiJsdWNpZGU6dHJhc2gyIixhY3Rpb246aSgoKT0+dGhpcy5jbGVhckFsbCgpLCJhY3Rpb24iKSx0b29sdGlwOiJDbGVhciBBbGwgVGFicyJ9XTtyZXR1cm4gd2AKICAgICAgPGRlZXMtYXBwdWktdGFicwogICAgICAgIC50YWJzPSR7dGhpcy50YWJzfQogICAgICAgIC5hY3Rpb25zUmlnaHQ9JHtifQogICAgICAgIEB0YWItY2xvc2U9JHt2PT50aGlzLnJlbW92ZVRhYih2LmRldGFpbC50YWIua2V5KX0KICAgICAgPjwvZGVlcy1hcHB1aS10YWJzPgogICAgICA8ZGl2IGNsYXNzPSJpbmZvIj4KICAgICAgICBDbGljayB0aGUgWCBidXR0b24gb24gdGFicyB0byBjbG9zZSB0aGVtLiBVc2UgdGhlICsgYnV0dG9uIHRvIGFkZCB0YWJzIGFuZCB0aGUgdHJhc2ggYnV0dG9uIHRvIGNsZWFyIGFsbC4KICAgICAgICA8YnI+Q3VycmVudCB0YWJzOiAke3RoaXMudGFicy5sZW5ndGh9CiAgICAgIDwvZGl2PgogICAgYH1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksUWModGhpcyx1KX1zdGF0aWN7UWMoYSx0KX19O3JldHVybiBjPWF9KSgpLFhWbz0oKCk9PntsZXQgcz1bbmUoImRlbW8tYXV0b2hpZGUtdGFicyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdO3ZhciB4PWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZW1vQXV0b0hpZGVUYWJzIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IG09dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bWSgpXSxwPVtZKCldLGM9W1koKV0sdDcodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0YWJzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGY9PiJ0YWJzImluIGYsImhhcyIpLGdldDppKGY9PmYudGFicywiZ2V0Iiksc2V0OmkoKGYseSk9PntmLnRhYnM9eX0sInNldCIpfSxtZXRhZGF0YTptfSxvLGwpLHQ3KHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYXV0b0hpZGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+ImF1dG9IaWRlImluIGYsImhhcyIpLGdldDppKGY9PmYuYXV0b0hpZGUsImdldCIpLHNldDppKChmLHkpPT57Zi5hdXRvSGlkZT15fSwic2V0Iil9LG1ldGFkYXRhOm19LGQsdSksdDcodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0aHJlc2hvbGQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+InRocmVzaG9sZCJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLnRocmVzaG9sZCwiZ2V0Iiksc2V0OmkoKGYseSk9PntmLnRocmVzaG9sZD15fSwic2V0Iil9LG1ldGFkYXRhOm19LGIsdiksdDcobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6bX0sbnVsbCx0KSx4PWE9ZS52YWx1ZSxtJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm19KX0jZT1RYyh0aGlzLG8sW3trZXk6IlRhYiAxIixpY29uTmFtZToibHVjaWRlOmZpbGUiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiVGFiIDEiKSwiYWN0aW9uIil9LHtrZXk6IlRhYiAyIixpY29uTmFtZToibHVjaWRlOmZpbGUiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiVGFiIDIiKSwiYWN0aW9uIil9XSk7Z2V0IHRhYnMoKXtyZXR1cm4gdGhpcy4jZX1zZXQgdGFicyhtKXt0aGlzLiNlPW19I3Q9KFFjKHRoaXMsbCksUWModGhpcyxkLCEwKSk7Z2V0IGF1dG9IaWRlKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGF1dG9IaWRlKG0pe3RoaXMuI3Q9bX0jYT0oUWModGhpcyx1KSxRYyh0aGlzLGIsMSkpO2dldCB0aHJlc2hvbGQoKXtyZXR1cm4gdGhpcy4jYX1zZXQgdGhyZXNob2xkKG0pe3RoaXMuI2E9bX1zdGF0aWMgc3R5bGVzPVtKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgICAgLnRhYnMtY29udGFpbmVyIHsKICAgICAgICBtaW4taGVpZ2h0OiA2MHB4OwogICAgICAgIGJvcmRlcjogMXB4IGRhc2hlZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMyNzI3MmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgfQogICAgICAudGFicy1jb250YWluZXIgZGVlcy1hcHB1aS10YWJzIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQogICAgICAucGxhY2Vob2xkZXIgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2ExYTFhYSIsIiM3MTcxN2EiKX07CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgICAgfQogICAgICAuY29udHJvbHMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgbWFyZ2luLXRvcDogMTZweDsKICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgIH0KICAgICAgYnV0dG9uIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSg1OSwgMTMwLCAyNDYsIDAuMSkiLCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC4xKSIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgicmdiYSg1OSwgMTMwLCAyNDYsIDAuMykiLCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC4zKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzYjgyZjYiLCIjNjBhNWZhIil9OwogICAgICAgIHBhZGRpbmc6IDhweCAxNnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICB9CiAgICAgIGJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoNTksIDEzMCwgMjQ2LCAwLjIpIiwicmdiYSg1OSwgMTMwLCAyNDYsIDAuMikiKX07CiAgICAgIH0KICAgICAgYnV0dG9uLmRhbmdlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMjM5LCA2OCwgNjgsIDAuMSkiLCJyZ2JhKDIzOSwgNjgsIDY4LCAwLjEpIil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoInJnYmEoMjM5LCA2OCwgNjgsIDAuMykiLCJyZ2JhKDIzOSwgNjgsIDY4LCAwLjMpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2VmNDQ0NCIsIiNmODcxNzEiKX07CiAgICAgIH0KICAgICAgYnV0dG9uLmRhbmdlcjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMjM5LCA2OCwgNjgsIDAuMikiLCJyZ2JhKDIzOSwgNjgsIDY4LCAwLjIpIil9OwogICAgICB9CiAgICAgIC5pbmZvIHsKICAgICAgICBtYXJnaW4tdG9wOiAxNnB4OwogICAgICAgIHBhZGRpbmc6IDEycHggMTZweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLDAsMCwwLjAyKSIsInJnYmEoMjU1LDI1NSwyNTUsMC4wMikiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICB9CiAgICBgXTt0YWJDb3VudGVyPShRYyh0aGlzLHYpLDIpO2FkZFRhYigpe3RoaXMudGFiQ291bnRlcisrLHRoaXMudGFicz1bLi4udGhpcy50YWJzLHtrZXk6YFRhYiAke3RoaXMudGFiQ291bnRlcn1gLGljb25OYW1lOiJsdWNpZGU6ZmlsZSIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKGBUYWIgJHt0aGlzLnRhYkNvdW50ZXJ9YCksImFjdGlvbiIpfV19cmVtb3ZlTGFzdFRhYigpe3RoaXMudGFicy5sZW5ndGg+MCYmKHRoaXMudGFicz10aGlzLnRhYnMuc2xpY2UoMCwtMSkpfWNsZWFyVGFicygpe3RoaXMudGFicz1bXX1yZW5kZXIoKXtsZXQgbT10aGlzLmF1dG9IaWRlJiZ0aGlzLnRhYnMubGVuZ3RoPD10aGlzLnRocmVzaG9sZDtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0idGFicy1jb250YWluZXIiPgogICAgICAgICR7bT93YDxzcGFuIGNsYXNzPSJwbGFjZWhvbGRlciI+VGFicyBoaWRkZW4gKCR7dGhpcy50YWJzLmxlbmd0aH0gdGFicyDiiaQgdGhyZXNob2xkICR7dGhpcy50aHJlc2hvbGR9KTwvc3Bhbj5gOndgPGRlZXMtYXBwdWktdGFicwogICAgICAgICAgICAgIC50YWJzPSR7dGhpcy50YWJzfQogICAgICAgICAgICAgIC5hdXRvSGlkZT0ke3RoaXMuYXV0b0hpZGV9CiAgICAgICAgICAgICAgLmF1dG9IaWRlVGhyZXNob2xkPSR7dGhpcy50aHJlc2hvbGR9CiAgICAgICAgICAgID48L2RlZXMtYXBwdWktdGFicz5gfQogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY29udHJvbHMiPgogICAgICAgIDxidXR0b24gQGNsaWNrPSR7KCk9PnRoaXMuYWRkVGFiKCl9PisgQWRkIFRhYjwvYnV0dG9uPgogICAgICAgIDxidXR0b24gY2xhc3M9ImRhbmdlciIgQGNsaWNrPSR7KCk9PnRoaXMucmVtb3ZlTGFzdFRhYigpfT4tIFJlbW92ZSBUYWI8L2J1dHRvbj4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJkYW5nZXIiIEBjbGljaz0keygpPT50aGlzLmNsZWFyVGFicygpfT5DbGVhciBBbGw8L2J1dHRvbj4KICAgICAgICA8YnV0dG9uIEBjbGljaz0keygpPT57dGhpcy50aHJlc2hvbGQ9MH19PlRocmVzaG9sZDogMDwvYnV0dG9uPgogICAgICAgIDxidXR0b24gQGNsaWNrPSR7KCk9Pnt0aGlzLnRocmVzaG9sZD0xfX0+VGhyZXNob2xkOiAxPC9idXR0b24+CiAgICAgICAgPGJ1dHRvbiBAY2xpY2s9JHsoKT0+e3RoaXMudGhyZXNob2xkPTJ9fT5UaHJlc2hvbGQ6IDI8L2J1dHRvbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImluZm8iPgogICAgICAgIEF1dG8taGlkZTogJHt0aGlzLmF1dG9IaWRlPyJPTiI6Ik9GRiJ9IHwgVGhyZXNob2xkOiAke3RoaXMudGhyZXNob2xkfSB8IFRhYnM6ICR7dGhpcy50YWJzLmxlbmd0aH0KICAgICAgICA8YnI+VGFicyB3aWxsIGhpZGUgd2hlbiBjb3VudCDiiaQgdGhyZXNob2xkLgogICAgICA8L2Rpdj4KICAgIGB9c3RhdGlje1FjKGEsdCl9fTtyZXR1cm4geD1hfSkoKSxXdmE9aSgoKT0+e2xldCBzPVt7a2V5OiJIb21lIixpY29uTmFtZToibHVjaWRlOmhvbWUiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiSG9tZSBjbGlja2VkIiksImFjdGlvbiIpfSx7a2V5OiJBbmFseXRpY3MgRGFzaGJvYXJkIixpY29uTmFtZToibHVjaWRlOmxpbmVDaGFydCIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJBbmFseXRpY3MgY2xpY2tlZCIpLCJhY3Rpb24iKX0se2tleToiUmVwb3J0cyIsaWNvbk5hbWU6Imx1Y2lkZTpmaWxlVGV4dCIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJSZXBvcnRzIGNsaWNrZWQiKSwiYWN0aW9uIil9LHtrZXk6IlVzZXIgU2V0dGluZ3MiLGljb25OYW1lOiJsdWNpZGU6c2V0dGluZ3MiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiU2V0dGluZ3MgY2xpY2tlZCIpLCJhY3Rpb24iKX0se2tleToiSGVscCIsaWNvbk5hbWU6Imx1Y2lkZTpoZWxwQ2lyY2xlIixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIkhlbHAgY2xpY2tlZCIpLCJhY3Rpb24iKX1dLGU9W3trZXk6IlByb2ZpbGUiLGljb25OYW1lOiJsdWNpZGU6dXNlciIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJQcm9maWxlIGNsaWNrZWQiKSwiYWN0aW9uIil9LHtrZXk6IlNlY3VyaXR5IixpY29uTmFtZToibHVjaWRlOnNoaWVsZCIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJTZWN1cml0eSBjbGlja2VkIiksImFjdGlvbiIpfSx7a2V5OiJOb3RpZmljYXRpb25zIixpY29uTmFtZToibHVjaWRlOmJlbGwiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiTm90aWZpY2F0aW9ucyBjbGlja2VkIiksImFjdGlvbiIpfSx7a2V5OiJJbnRlZ3JhdGlvbnMiLGljb25OYW1lOiJsdWNpZGU6bGluayIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJJbnRlZ3JhdGlvbnMgY2xpY2tlZCIpLCJhY3Rpb24iKX0se2tleToiQWR2YW5jZWQiLGljb25OYW1lOiJsdWNpZGU6Y29kZSIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJBZHZhbmNlZCBjbGlja2VkIiksImFjdGlvbiIpfV0sdD1be2tleToiQWxsIixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIkFsbCBjbGlja2VkIiksImFjdGlvbiIpfSx7a2V5OiJBY3RpdmUiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiQWN0aXZlIGNsaWNrZWQiKSwiYWN0aW9uIil9LHtrZXk6IkNvbXBsZXRlZCIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJDb21wbGV0ZWQgY2xpY2tlZCIpLCJhY3Rpb24iKX0se2tleToiQXJjaGl2ZWQiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiQXJjaGl2ZWQgY2xpY2tlZCIpLCJhY3Rpb24iKX1dLGE9W3tpZDoiYmFjayIsaWNvbk5hbWU6Imx1Y2lkZTphcnJvd0xlZnQiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiQmFjayIpLCJhY3Rpb24iKSx0b29sdGlwOiJHbyBCYWNrIn1dLHI9W3tpZDoiYWRkIixpY29uTmFtZToibHVjaWRlOnBsdXMiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiQWRkIHRhYiIpLCJhY3Rpb24iKSx0b29sdGlwOiJOZXcgVGFiIn0se2lkOiJzZWFyY2giLGljb25OYW1lOiJsdWNpZGU6c2VhcmNoIixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIlNlYXJjaCIpLCJhY3Rpb24iKSx0b29sdGlwOiJTZWFyY2ggVGFicyJ9LHtpZDoiZGlzYWJsZWQiLGljb25OYW1lOiJsdWNpZGU6bG9jayIsYWN0aW9uOmkoKCk9Pnt9LCJhY3Rpb24iKSx0b29sdGlwOiJEaXNhYmxlZCBBY3Rpb24iLGRpc2FibGVkOiEwfV0sbj1pKG89PndgCiAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nOiAyNHB4OyBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OyI+CiAgICAgICR7b30KICAgIDwvZGl2PgogIGAsImRlbW9Db250ZW50Iik7cmV0dXJuIHdgCiAgICA8c3R5bGU+CiAgICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMzJweDsKICAgICAgICBwYWRkaW5nOiA0OHB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjhmOWZhIiwiIzBhMGEwYSIpfTsKICAgICAgICBtaW4taGVpZ2h0OiAxMDB2aDsKICAgICAgfQoKICAgICAgLnNlY3Rpb24gewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzE4MTgxYiIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMyNzI3MmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICAgICAgfQoKICAgICAgLnNlY3Rpb24tdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLnR3by1jb2x1bW4gewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAyMDBweCAxZnI7CiAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgIGFsaWduLWl0ZW1zOiBzdGFydDsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+SG9yaXpvbnRhbCBUYWJzIHdpdGggQW5pbWF0ZWQgSW5kaWNhdG9yPC9kaXY+CiAgICAgICAgPGRlZXMtYXBwdWktdGFicyAudGFicz0ke3N9PjwvZGVlcy1hcHB1aS10YWJzPgogICAgICAgICR7bigiU2VsZWN0IGEgdGFiIHRvIHNlZSB0aGUgc21vb3RoIHNsaWRpbmcgYW5pbWF0aW9uIG9mIHRoZSBpbmRpY2F0b3IuIFRoZSBpbmRpY2F0b3IgYXV0b21hdGljYWxseSBhZGp1c3RzIGl0cyB3aWR0aCB0byBtYXRjaCB0aGUgdGFiIGNvbnRlbnQgd2l0aCBtaW5pbWFsIHBhZGRpbmcuIil9CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+VGFicyB3aXRoIEFjdGlvbiBCdXR0b25zPC9kaXY+CiAgICAgICAgPGRlZXMtYXBwdWktdGFicwogICAgICAgICAgLnRhYnM9JHtzfQogICAgICAgICAgLmFjdGlvbnNMZWZ0PSR7YX0KICAgICAgICAgIC5hY3Rpb25zUmlnaHQ9JHtyfQogICAgICAgID48L2RlZXMtYXBwdWktdGFicz4KICAgICAgICAke24oIkFjdGlvbiBidXR0b25zIGNhbiBiZSBwbGFjZWQgb24gZWl0aGVyIHNpZGUgb2YgdGhlIHRhYiBiYXIuIFRoZXkgcmVtYWluIGZpeGVkIHdoaWxlIHRhYnMgc2Nyb2xsLiBUaGUgbG9jayBpY29uIHNob3dzIGEgZGlzYWJsZWQgYWN0aW9uLiIpfQogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPkNsb3NlYWJsZSBUYWJzIHdpdGggQWN0aW9uczwvZGl2PgogICAgICAgIDxkZW1vLWNsb3NlYWJsZS10YWJzPjwvZGVtby1jbG9zZWFibGUtdGFicz4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5BdXRvLWhpZGUgVGFiczwvZGl2PgogICAgICAgIDxkZW1vLWF1dG9oaWRlLXRhYnM+PC9kZW1vLWF1dG9oaWRlLXRhYnM+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+VmVydGljYWwgVGFicyBMYXlvdXQ8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0d28tY29sdW1uIj4KICAgICAgICAgIDxkZWVzLWFwcHVpLXRhYnMgLnRhYlN0eWxlPSR7InZlcnRpY2FsIn0gLnRhYnM9JHtlfT48L2RlZXMtYXBwdWktdGFicz4KICAgICAgICAgICR7bigiVmVydGljYWwgdGFicyB3b3JrIGdyZWF0IGZvciBzZXR0aW5ncyBwYWdlcyBhbmQgbmF2aWdhdGlvbiBtZW51cy4gVGhlIGFuaW1hdGVkIGluZGljYXRvciBzbW9vdGhseSB0cmFuc2l0aW9ucyBiZXR3ZWVuIHNlbGVjdGlvbnMuIil9CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+V2l0aG91dCBJbmRpY2F0b3I8L2Rpdj4KICAgICAgICA8ZGVlcy1hcHB1aS10YWJzIC5zaG93VGFiSW5kaWNhdG9yPSR7ITF9IC50YWJzPSR7dH0+PC9kZWVzLWFwcHVpLXRhYnM+CiAgICAgICAgJHtuKCJUYWJzIGNhbiBhbHNvIGJlIHVzZWQgd2l0aG91dCB0aGUgYW5pbWF0ZWQgaW5kaWNhdG9yIGJ5IHNldHRpbmcgc2hvd1RhYkluZGljYXRvciB0byBmYWxzZS4iKX0KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICBgfSwiZGVtb0Z1bmMiKX0pO3ZhciBMMix2cixkZXMsV250PWcoKCk9PnthNCgpO3BlKCk7a3QoKTtHdmEoKTtodCgpO0wyPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSx2cj1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sZGVzPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1hcHB1aS10YWJzIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W10sSCxrPVtdLFM9W10sSSxQPVtdLFI9W10sSyxWPVtdLFc9W107dmFyIG1lPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzQXBwdWlUYWJzIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IEI9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpBcnJheX0pXSxwPVtMKHt0eXBlOk9iamVjdH0pXSxjPVtMKHt0eXBlOkJvb2xlYW59KV0seD1bTCh7dHlwZTpTdHJpbmd9KV0seT1bTCh7dHlwZTpCb29sZWFufSldLE49W0woe3R5cGU6TnVtYmVyfSldLE89W0woe3R5cGU6QXJyYXl9KV0sSD1bTCh7dHlwZTpBcnJheX0pXSxJPVtZKCldLEs9W1koKV0sTDIodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0YWJzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFU9PiJ0YWJzImluIFUsImhhcyIpLGdldDppKFU9PlUudGFicywiZ2V0Iiksc2V0OmkoKFUsaGUpPT57VS50YWJzPWhlfSwic2V0Iil9LG1ldGFkYXRhOkJ9LG8sbCksTDIodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWxlY3RlZFRhYiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4ic2VsZWN0ZWRUYWIiaW4gVSwiaGFzIiksZ2V0OmkoVT0+VS5zZWxlY3RlZFRhYiwiZ2V0Iiksc2V0OmkoKFUsaGUpPT57VS5zZWxlY3RlZFRhYj1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxkLHUpLEwyKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2hvd1RhYkluZGljYXRvciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4ic2hvd1RhYkluZGljYXRvciJpbiBVLCJoYXMiKSxnZXQ6aShVPT5VLnNob3dUYWJJbmRpY2F0b3IsImdldCIpLHNldDppKChVLGhlKT0+e1Uuc2hvd1RhYkluZGljYXRvcj1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxiLHYpLEwyKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToidGFiU3R5bGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVT0+InRhYlN0eWxlImluIFUsImhhcyIpLGdldDppKFU9PlUudGFiU3R5bGUsImdldCIpLHNldDppKChVLGhlKT0+e1UudGFiU3R5bGU9aGV9LCJzZXQiKX0sbWV0YWRhdGE6Qn0sbSxmKSxMMih0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImF1dG9IaWRlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFU9PiJhdXRvSGlkZSJpbiBVLCJoYXMiKSxnZXQ6aShVPT5VLmF1dG9IaWRlLCJnZXQiKSxzZXQ6aSgoVSxoZSk9PntVLmF1dG9IaWRlPWhlfSwic2V0Iil9LG1ldGFkYXRhOkJ9LE0seiksTDIodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJhdXRvSGlkZVRocmVzaG9sZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4iYXV0b0hpZGVUaHJlc2hvbGQiaW4gVSwiaGFzIiksZ2V0OmkoVT0+VS5hdXRvSGlkZVRocmVzaG9sZCwiZ2V0Iiksc2V0OmkoKFUsaGUpPT57VS5hdXRvSGlkZVRocmVzaG9sZD1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxDLF8pLEwyKHRoaXMsbnVsbCxPLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYWN0aW9uc0xlZnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVT0+ImFjdGlvbnNMZWZ0ImluIFUsImhhcyIpLGdldDppKFU9PlUuYWN0aW9uc0xlZnQsImdldCIpLHNldDppKChVLGhlKT0+e1UuYWN0aW9uc0xlZnQ9aGV9LCJzZXQiKX0sbWV0YWRhdGE6Qn0sJCxFKSxMMih0aGlzLG51bGwsSCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImFjdGlvbnNSaWdodCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4iYWN0aW9uc1JpZ2h0ImluIFUsImhhcyIpLGdldDppKFU9PlUuYWN0aW9uc1JpZ2h0LCJnZXQiKSxzZXQ6aSgoVSxoZSk9PntVLmFjdGlvbnNSaWdodD1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxrLFMpLEwyKHRoaXMsbnVsbCxJLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY2FuU2Nyb2xsTGVmdCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4iY2FuU2Nyb2xsTGVmdCJpbiBVLCJoYXMiKSxnZXQ6aShVPT5VLmNhblNjcm9sbExlZnQsImdldCIpLHNldDppKChVLGhlKT0+e1UuY2FuU2Nyb2xsTGVmdD1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxQLFIpLEwyKHRoaXMsbnVsbCxLLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY2FuU2Nyb2xsUmlnaHQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVT0+ImNhblNjcm9sbFJpZ2h0ImluIFUsImhhcyIpLGdldDppKFU9PlUuY2FuU2Nyb2xsUmlnaHQsImdldCIpLHNldDppKChVLGhlKT0+e1UuY2FuU2Nyb2xsUmlnaHQ9aGV9LCJzZXQiKX0sbWV0YWRhdGE6Qn0sVixXKSxMMihudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpCfSxudWxsLHQpLG1lPWE9ZS52YWx1ZSxCJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOkJ9KX1zdGF0aWMgZGVtbz1XdmE7c3RhdGljIGRlbW9Hcm91cHM9WyJBcHAgVUkiXTsjZT12cih0aGlzLG8sW10pO2dldCB0YWJzKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHRhYnMoQil7dGhpcy4jZT1CfSN0PSh2cih0aGlzLGwpLHZyKHRoaXMsZCxudWxsKSk7Z2V0IHNlbGVjdGVkVGFiKCl7cmV0dXJuIHRoaXMuI3R9c2V0IHNlbGVjdGVkVGFiKEIpe3RoaXMuI3Q9Qn0jYT0odnIodGhpcyx1KSx2cih0aGlzLGIsITApKTtnZXQgc2hvd1RhYkluZGljYXRvcigpe3JldHVybiB0aGlzLiNhfXNldCBzaG93VGFiSW5kaWNhdG9yKEIpe3RoaXMuI2E9Qn0jcz0odnIodGhpcyx2KSx2cih0aGlzLG0sImhvcml6b250YWwiKSk7Z2V0IHRhYlN0eWxlKCl7cmV0dXJuIHRoaXMuI3N9c2V0IHRhYlN0eWxlKEIpe3RoaXMuI3M9Qn0jaT0odnIodGhpcyxmKSx2cih0aGlzLE0sITEpKTtnZXQgYXV0b0hpZGUoKXtyZXR1cm4gdGhpcy4jaX1zZXQgYXV0b0hpZGUoQil7dGhpcy4jaT1CfSNyPSh2cih0aGlzLHopLHZyKHRoaXMsQywwKSk7Z2V0IGF1dG9IaWRlVGhyZXNob2xkKCl7cmV0dXJuIHRoaXMuI3J9c2V0IGF1dG9IaWRlVGhyZXNob2xkKEIpe3RoaXMuI3I9Qn0jbz0odnIodGhpcyxfKSx2cih0aGlzLCQsW10pKTtnZXQgYWN0aW9uc0xlZnQoKXtyZXR1cm4gdGhpcy4jb31zZXQgYWN0aW9uc0xlZnQoQil7dGhpcy4jbz1CfSNuPSh2cih0aGlzLEUpLHZyKHRoaXMsayxbXSkpO2dldCBhY3Rpb25zUmlnaHQoKXtyZXR1cm4gdGhpcy4jbn1zZXQgYWN0aW9uc1JpZ2h0KEIpe3RoaXMuI249Qn0jbD0odnIodGhpcyxTKSx2cih0aGlzLFAsITEpKTtnZXQgY2FuU2Nyb2xsTGVmdCgpe3JldHVybiB0aGlzLiNsfXNldCBjYW5TY3JvbGxMZWZ0KEIpe3RoaXMuI2w9Qn0jYz0odnIodGhpcyxSKSx2cih0aGlzLFYsITEpKTtnZXQgY2FuU2Nyb2xsUmlnaHQoKXtyZXR1cm4gdGhpcy4jY31zZXQgY2FuU2Nyb2xsUmlnaHQoQil7dGhpcy4jYz1CfXJlc2l6ZU9ic2VydmVyPSh2cih0aGlzLFcpLG51bGwpO3N0YXRpYyBzdHlsZXM9W3FlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1pbi13aWR0aDogMDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAudGFicy13cmFwcGVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgbWluLXdpZHRoOiAwOwogICAgICB9CgogICAgICAudGFicy13cmFwcGVyLmhvcml6b250YWwtd3JhcHBlciB7CiAgICAgICAgaGVpZ2h0OiA0OHB4OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDsKICAgICAgfQoKICAgICAgLyogU2Nyb2xsIGZhZGUgaW5kaWNhdG9ycyAqLwogICAgICAuc2Nyb2xsLWZhZGUgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgYm90dG9tOiAxcHg7CiAgICAgICAgd2lkdGg6IDQ4cHg7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZTsKICAgICAgICB6LWluZGV4OiAxMDsKICAgICAgfQoKICAgICAgLnNjcm9sbC1mYWRlLWxlZnQgewogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LAogICAgICAgICAgJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMTYxNjE2Iil9IDAlLAogICAgICAgICAgJHtoLmJkVGhlbWUoInJnYmEoMjU1LDI1NSwyNTUsMCkiLCJyZ2JhKDIyLDIyLDIyLDApIil9IDEwMCUpOwogICAgICB9CgogICAgICAuc2Nyb2xsLWZhZGUtcmlnaHQgewogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBsZWZ0LAogICAgICAgICAgJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMTYxNjE2Iil9IDAlLAogICAgICAgICAgJHtoLmJkVGhlbWUoInJnYmEoMjU1LDI1NSwyNTUsMCkiLCJyZ2JhKDIyLDIyLDIyLDApIil9IDEwMCUpOwogICAgICB9CgogICAgICAuc2Nyb2xsLWZhZGUudmlzaWJsZSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgLnNjcm9sbC1hcmVhIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZmxleDogMTsKICAgICAgICBtaW4td2lkdGg6IDA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB9CgogICAgICAvKiBUYWIgYWN0aW9uIGJ1dHRvbnMgKi8KICAgICAgLnRhYi1hY3Rpb25zIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAycHg7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgcGFkZGluZzogMCA0cHg7CiAgICAgIH0KCiAgICAgIC50YWItYWN0aW9ucy5sZWZ0IHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDEycHg7CiAgICAgICAgcGFkZGluZy1yaWdodDogOHB4OwogICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICB9CgogICAgICAudGFiLWFjdGlvbnMucmlnaHQgewogICAgICAgIHBhZGRpbmctcmlnaHQ6IDEycHg7CiAgICAgICAgcGFkZGluZy1sZWZ0OiA4cHg7CiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgfQoKICAgICAgLnRhYi1hY3Rpb24tYnV0dG9uIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cyBlYXNlLCBjb2xvciAwLjE1cyBlYXNlOwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAudGFiLWFjdGlvbi1idXR0b246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYWN0aXZlKTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICB9CgogICAgICAudGFiLWFjdGlvbi1idXR0b246YWN0aXZlIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLXByZXNzZWQpOwogICAgICB9CgogICAgICAudGFiLWFjdGlvbi1idXR0b24uZGlzYWJsZWQgewogICAgICAgIG9wYWNpdHk6IDAuNDsKICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICB9CgogICAgICAudGFiLWFjdGlvbi1idXR0b24uZGlzYWJsZWQ6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICB9CgogICAgICAudGFiLWFjdGlvbi1idXR0b24gZGVlcy1pY29uIHsKICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgIH0KCiAgICAgIC50YWJzQ29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgbWluLXdpZHRoOiAwOwogICAgICB9CgogICAgICAudGFic0NvbnRhaW5lci5ob3Jpem9udGFsIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOwogICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW47CiAgICAgICAgc2Nyb2xsYmFyLXdpZHRoOiB0aGluOwogICAgICAgIHNjcm9sbGJhci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgICBnYXA6IDRweDsKICAgICAgfQoKICAgICAgLyogU2hvdyBzY3JvbGxiYXIgb24gaG92ZXIgKi8KICAgICAgLnRhYnMtd3JhcHBlcjpob3ZlciAudGFic0NvbnRhaW5lci5ob3Jpem9udGFsLAogICAgICAuc2Nyb2xsLWFyZWE6aG92ZXIgLnRhYnNDb250YWluZXIuaG9yaXpvbnRhbCB7CiAgICAgICAgc2Nyb2xsYmFyLWNvbG9yOiAke2guYmRUaGVtZSgicmdiYSgwLDAsMCwwLjIpIiwicmdiYSgyNTUsMjU1LDI1NSwwLjIpIil9IHRyYW5zcGFyZW50OwogICAgICB9CgogICAgICAudGFic0NvbnRhaW5lci5ob3Jpem9udGFsOjotd2Via2l0LXNjcm9sbGJhciB7CiAgICAgICAgaGVpZ2h0OiA0cHg7CiAgICAgIH0KCiAgICAgIC50YWJzQ29udGFpbmVyLmhvcml6b250YWw6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgfQoKICAgICAgLnRhYnNDb250YWluZXIuaG9yaXpvbnRhbDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIgewogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMnMgZWFzZTsKICAgICAgfQoKICAgICAgLnRhYnMtd3JhcHBlcjpob3ZlciAudGFic0NvbnRhaW5lci5ob3Jpem9udGFsOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiwKICAgICAgLnNjcm9sbC1hcmVhOmhvdmVyIC50YWJzQ29udGFpbmVyLmhvcml6b250YWw6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLDAsMCwwLjIpIiwicmdiYSgyNTUsMjU1LDI1NSwwLjIpIil9OwogICAgICB9CgogICAgICAudGFicy13cmFwcGVyOmhvdmVyIC50YWJzQ29udGFpbmVyLmhvcml6b250YWw6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyLAogICAgICAuc2Nyb2xsLWFyZWE6aG92ZXIgLnRhYnNDb250YWluZXIuaG9yaXpvbnRhbDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsMCwwLDAuMzUpIiwicmdiYSgyNTUsMjU1LDI1NSwwLjM1KSIpfTsKICAgICAgfQoKICAgICAgLnRhYnNDb250YWluZXIudmVydGljYWwgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBwYWRkaW5nOiA4cHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGdhcDogMnB4OwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXRlcnRpYXJ5KTsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgIH0KCiAgICAgIC50YWIgewogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMTVzIGVhc2U7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgei1pbmRleDogMjsKICAgICAgfQoKICAgICAgLmhvcml6b250YWwgLnRhYiB7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHggNnB4IDAgMDsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2U7CiAgICAgIH0KICAgICAgCiAgICAgIC5ob3Jpem9udGFsIC50YWI6bm90KDpsYXN0LWNoaWxkKTo6YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICByaWdodDogLTJweDsKICAgICAgICB0b3A6IDUwJTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICAgIHdpZHRoOiAxcHg7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICB9CiAgICAgIAogICAgICAuaG9yaXpvbnRhbCAudGFiIC50YWItY29udGVudCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDhweDsKICAgICAgfQoKICAgICAgLnZlcnRpY2FsIC50YWIgewogICAgICAgIHBhZGRpbmc6IDEwcHggMTZweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICB9CgogICAgICAudGFiOmhvdmVyIHsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICB9CiAgICAgIAogICAgICAuaG9yaXpvbnRhbCAudGFiOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWhvdmVyKTsKICAgICAgfQogICAgICAKICAgICAgLmhvcml6b250YWwgLnRhYjpob3Zlcjo6YWZ0ZXIsCiAgICAgIC5ob3Jpem9udGFsIC50YWI6aG92ZXIgKyAudGFiOjphZnRlciB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgfQoKICAgICAgLnZlcnRpY2FsIC50YWI6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDI0NCwgMjQ0LCAyNDUsIDAuNSkiLCJyZ2JhKDM5LCAzOSwgNDIsIDAuNSkiKX07CiAgICAgIH0KCiAgICAgIC5ob3Jpem9udGFsIC50YWIuc2VsZWN0ZWRUYWIgewogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIH0KICAgICAgCiAgICAgIC5ob3Jpem9udGFsIC50YWIuc2VsZWN0ZWRUYWI6OmFmdGVyLAogICAgICAuaG9yaXpvbnRhbCAudGFiLnNlbGVjdGVkVGFiICsgLnRhYjo6YWZ0ZXIgewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgIH0KCiAgICAgIC52ZXJ0aWNhbCAudGFiLnNlbGVjdGVkVGFiIHsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICB9CgogICAgICAudGFiIGRlZXMtaWNvbiB7CiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICB9CgogICAgICAudGFiSW5kaWNhdG9yIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICB9CiAgICAgIAogICAgICAudGFiSW5kaWNhdG9yLm5vLXRyYW5zaXRpb24gewogICAgICAgIHRyYW5zaXRpb246IG5vbmU7CiAgICAgIH0KCiAgICAgIC50YWJzLXdyYXBwZXIgLnRhYkluZGljYXRvciB7CiAgICAgICAgaGVpZ2h0OiAzcHg7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYWNjZW50LXByaW1hcnkpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweCAzcHggMCAwOwogICAgICAgIHotaW5kZXg6IDM7CiAgICAgIH0KCiAgICAgIC52ZXJ0aWNhbC13cmFwcGVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIC52ZXJ0aWNhbC13cmFwcGVyIC50YWJJbmRpY2F0b3IgewogICAgICAgIGxlZnQ6IDhweDsKICAgICAgICByaWdodDogOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXByaW1hcnkpOwogICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4wOCk7CiAgICAgIH0KCiAgICAgIC8qIENsb3NlIGJ1dHRvbiAqLwogICAgICAudGFiLWNsb3NlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIHdpZHRoOiAxNnB4OwogICAgICAgIGhlaWdodDogMTZweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDhweDsKICAgICAgICBvcGFjaXR5OiAwLjQ7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cywgYmFja2dyb3VuZCAwLjE1czsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgfQoKICAgICAgLnRhYjpob3ZlciAudGFiLWNsb3NlIHsKICAgICAgICBvcGFjaXR5OiAwLjc7CiAgICAgIH0KCiAgICAgIC50YWItY2xvc2U6aG92ZXIgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1wcmVzc2VkKTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci1hY2NlbnQtZXJyb3IpOwogICAgICB9CgogICAgICAudGFiLnNlbGVjdGVkVGFiIC50YWItY2xvc2UgewogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgfQoKICAgICAgLnRhYi5zZWxlY3RlZFRhYjpob3ZlciAudGFiLWNsb3NlIHsKICAgICAgICBvcGFjaXR5OiAwLjg7CiAgICAgIH0KCiAgICAgIC50YWIuc2VsZWN0ZWRUYWIgLnRhYi1jbG9zZTpob3ZlciB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHRoaXMuYXV0b0hpZGUmJnRoaXMudGFicy5sZW5ndGg8PXRoaXMuYXV0b0hpZGVUaHJlc2hvbGQ/d2BgOndgCiAgICAgICR7dGhpcy5yZW5kZXJUYWJzV3JhcHBlcigpfQogICAgYH1yZW5kZXJUYWJzV3JhcHBlcigpe2xldCBCPXRoaXMudGFiU3R5bGU9PT0iaG9yaXpvbnRhbCIsVT1CPyJ0YWJzLXdyYXBwZXIgaG9yaXpvbnRhbC13cmFwcGVyIjoidmVydGljYWwtd3JhcHBlciIsaGU9YHRhYnNDb250YWluZXIgJHt0aGlzLnRhYlN0eWxlfWA7aWYoQil7bGV0IEY9dGhpcy5hY3Rpb25zTGVmdCYmdGhpcy5hY3Rpb25zTGVmdC5sZW5ndGg+MCxqPXRoaXMuYWN0aW9uc1JpZ2h0JiZ0aGlzLmFjdGlvbnNSaWdodC5sZW5ndGg+MDtyZXR1cm4gd2AKICAgICAgICA8ZGl2IGNsYXNzPSIke1V9Ij4KICAgICAgICAgICR7Rj90aGlzLnJlbmRlckFjdGlvbnModGhpcy5hY3Rpb25zTGVmdCwibGVmdCIpOiIifQogICAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsLWFyZWEiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGwtZmFkZSBzY3JvbGwtZmFkZS1sZWZ0ICR7dGhpcy5jYW5TY3JvbGxMZWZ0PyJ2aXNpYmxlIjoiIn0iPjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSIke2hlfSIgQHNjcm9sbD0ke3RoaXMuaGFuZGxlU2Nyb2xsfT4KICAgICAgICAgICAgICAke3RoaXMudGFicy5tYXAodWU9PnRoaXMucmVuZGVyVGFiKHVlLEIpKX0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbC1mYWRlIHNjcm9sbC1mYWRlLXJpZ2h0ICR7dGhpcy5jYW5TY3JvbGxSaWdodD8idmlzaWJsZSI6IiJ9Ij48L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgJHtqP3RoaXMucmVuZGVyQWN0aW9ucyh0aGlzLmFjdGlvbnNSaWdodCwicmlnaHQiKToiIn0KICAgICAgICAgICR7dGhpcy5zaG93VGFiSW5kaWNhdG9yP3dgPGRpdiBjbGFzcz0idGFiSW5kaWNhdG9yIj48L2Rpdj5gOiIifQogICAgICAgIDwvZGl2PgogICAgICBgfXJldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSIke1V9Ij4KICAgICAgICA8ZGl2IGNsYXNzPSIke2hlfSI+CiAgICAgICAgICAke3RoaXMudGFicy5tYXAoRj0+dGhpcy5yZW5kZXJUYWIoRixCKSl9CiAgICAgICAgPC9kaXY+CiAgICAgICAgJHt0aGlzLnNob3dUYWJJbmRpY2F0b3I/d2A8ZGl2IGNsYXNzPSJ0YWJJbmRpY2F0b3IiPjwvZGl2PmA6IiJ9CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJBY3Rpb25zKEIsVSl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9InRhYi1hY3Rpb25zICR7VX0iPgogICAgICAgICR7Qi5tYXAoaGU9PndgCiAgICAgICAgICA8ZGl2CiAgICAgICAgICAgIGNsYXNzPSJ0YWItYWN0aW9uLWJ1dHRvbiAke2hlLmRpc2FibGVkPyJkaXNhYmxlZCI6IiJ9IgogICAgICAgICAgICB0aXRsZT0iJHtoZS50b29sdGlwfHxoZS5pZH0iCiAgICAgICAgICAgIEBjbGljaz0keygpPT4haGUuZGlzYWJsZWQmJmhlLmFjdGlvbigpfQogICAgICAgICAgPgogICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7aGUuaWNvbk5hbWV9PjwvZGVlcy1pY29uPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgYCl9CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJUYWIoQixVKXtsZXQgRj1gdGFiICR7Qj09PXRoaXMuc2VsZWN0ZWRUYWI/InNlbGVjdGVkVGFiIjoiIn1gLGo9Qi5jbG9zZWFibGU/d2AKICAgICAgPHNwYW4gY2xhc3M9InRhYi1jbG9zZSIgQGNsaWNrPSIke2xlPT50aGlzLmNsb3NlVGFiKGxlLEIpfSI+CiAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6eCJ9IHN0eWxlPSJmb250LXNpemU6IDEycHg7Ij48L2RlZXMtaWNvbj4KICAgICAgPC9zcGFuPgogICAgYDoiIix1ZT1VP3dgCiAgICAgIDxzcGFuIGNsYXNzPSJ0YWItY29udGVudCI+CiAgICAgICAgJHt0aGlzLnJlbmRlclRhYkljb24oQil9CiAgICAgICAgJHtCLmtleX0KICAgICAgPC9zcGFuPgogICAgICAke2p9CiAgICBgOndgCiAgICAgICR7dGhpcy5yZW5kZXJUYWJJY29uKEIpfQogICAgICAke0Iua2V5fQogICAgICAke2p9CiAgICBgO3JldHVybiB3YAogICAgICA8ZGl2CiAgICAgICAgY2xhc3M9IiR7Rn0iCiAgICAgICAgQGNsaWNrPSIkeygpPT50aGlzLnNlbGVjdFRhYihCKX0iCiAgICAgID4KICAgICAgICAke3VlfQogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyVGFiSWNvbihCKXtyZXR1cm4gQi5pY29uTmFtZT93YDxkZWVzLWljb24gLmljb249JHtCLmljb25OYW1lfT48L2RlZXMtaWNvbj5gOiIifXNlbGVjdFRhYihCKXt0aGlzLnNlbGVjdGVkVGFiPUIsQi5hY3Rpb24oKSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pnt0aGlzLnNjcm9sbFRhYkludG9WaWV3KEIpfSksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgidGFiLXNlbGVjdCIse2RldGFpbDp7dGFiOkJ9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9Y2xlYXIoKXt0aGlzLnRhYnM9W10sdGhpcy5zZWxlY3RlZFRhYj1udWxsfWNsb3NlVGFiKEIsVSl7Qi5zdG9wUHJvcGFnYXRpb24oKSxVLm9uQ2xvc2UmJlUub25DbG9zZSgpLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInRhYi1jbG9zZSIse2RldGFpbDp7dGFiOlV9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9Zmlyc3RVcGRhdGVkKCl7dGhpcy5zZXR1cFJlc2l6ZU9ic2VydmVyKCkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dGhpcy51cGRhdGVTY3JvbGxTdGF0ZSgpfSl9YXN5bmMgZGlzY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMucmVzaXplT2JzZXJ2ZXImJih0aGlzLnJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKSx0aGlzLnJlc2l6ZU9ic2VydmVyPW51bGwpfXNldHVwUmVzaXplT2JzZXJ2ZXIoKXtpZih0aGlzLnRhYlN0eWxlIT09Imhvcml6b250YWwiKXJldHVybjt0aGlzLnJlc2l6ZU9ic2VydmVyPW5ldyBSZXNpemVPYnNlcnZlcigoKT0+e3RoaXMudXBkYXRlU2Nyb2xsU3RhdGUoKX0pO2xldCBCPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLnRhYnNDb250YWluZXIuaG9yaXpvbnRhbCIpO0ImJnRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShCKX1oYW5kbGVTY3JvbGw9aSgoKT0+e3RoaXMudXBkYXRlU2Nyb2xsU3RhdGUoKX0sImhhbmRsZVNjcm9sbCIpO3VwZGF0ZVNjcm9sbFN0YXRlKCl7bGV0IEI9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIudGFic0NvbnRhaW5lci5ob3Jpem9udGFsIik7aWYoIUIpcmV0dXJuO2xldCBVPUIuc2Nyb2xsTGVmdCxoZT1CLnNjcm9sbFdpZHRoLEY9Qi5jbGllbnRXaWR0aCxqPTI7dGhpcy5jYW5TY3JvbGxMZWZ0PVU+aix0aGlzLmNhblNjcm9sbFJpZ2h0PVU8aGUtRi1qfXNjcm9sbFRhYkludG9WaWV3KEIpe2lmKHRoaXMudGFiU3R5bGUhPT0iaG9yaXpvbnRhbCIpcmV0dXJuO2xldCBVPXRoaXMudGFicy5pbmRleE9mKEIpO2lmKFU9PT0tMSlyZXR1cm47bGV0IGhlPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLnRhYnNDb250YWluZXIuaG9yaXpvbnRhbCIpLEY9aGU/LnF1ZXJ5U2VsZWN0b3IoYC50YWI6bnRoLWNoaWxkKCR7VSsxfSlgKTtpZihGJiZoZSl7bGV0IGo9aGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdWU9Ri5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt1ZS5sZWZ0Pj1qLmxlZnQmJnVlLnJpZ2h0PD1qLnJpZ2h0fHxGLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjoic21vb3RoIixibG9jazoibmVhcmVzdCIsaW5saW5lOiJuZWFyZXN0In0pfX1hc3luYyB1cGRhdGVkKEIpe3N1cGVyLnVwZGF0ZWQoQiksQi5oYXMoInRhYnMiKSYmKCF0aGlzLnRhYnN8fHRoaXMudGFicy5sZW5ndGg9PT0wP3RoaXMuc2VsZWN0ZWRUYWIhPT1udWxsJiYodGhpcy5zZWxlY3RlZFRhYj1udWxsLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInRhYi1zZWxlY3QiLHtkZXRhaWw6e3RhYjpudWxsfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpKTp0aGlzLnNlbGVjdGVkVGFiJiYhdGhpcy50YWJzLmluY2x1ZGVzKHRoaXMuc2VsZWN0ZWRUYWIpP3RoaXMuc2VsZWN0VGFiKHRoaXMudGFic1swXSk6dGhpcy5zZWxlY3RlZFRhYnx8dGhpcy5zZWxlY3RUYWIodGhpcy50YWJzWzBdKSksKEIuaGFzKCJzZWxlY3RlZFRhYiIpfHxCLmhhcygidGFicyIpKSYmKGF3YWl0IHRoaXMudXBkYXRlQ29tcGxldGUsIXRoaXMuaW5kaWNhdG9ySW5pdGlhbGl6ZWQmJmRvY3VtZW50LmZvbnRzJiZhd2FpdCBkb2N1bWVudC5mb250cy5yZWFkeSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pnt0aGlzLnVwZGF0ZVRhYkluZGljYXRvcigpLHRoaXMudXBkYXRlU2Nyb2xsU3RhdGUoKX0pKX1pbmRpY2F0b3JJbml0aWFsaXplZD0hMTt1cGRhdGVUYWJJbmRpY2F0b3IoKXtpZighdGhpcy5zaG91bGRTaG93SW5kaWNhdG9yKCkpcmV0dXJuO2xldCBCPXRoaXMuZ2V0U2VsZWN0ZWRUYWJFbGVtZW50KCk7aWYoIUIpcmV0dXJuO2xldCBVPXRoaXMuZ2V0SW5kaWNhdG9yRWxlbWVudCgpO1UmJih0aGlzLmhhbmRsZUluaXRpYWxUcmFuc2l0aW9uKFUpLHRoaXMudGFiU3R5bGU9PT0iaG9yaXpvbnRhbCI/dGhpcy51cGRhdGVIb3Jpem9udGFsSW5kaWNhdG9yKFUsQik6dGhpcy51cGRhdGVWZXJ0aWNhbEluZGljYXRvcihVLEIpLFUuc3R5bGUub3BhY2l0eT0iMSIpfXNob3VsZFNob3dJbmRpY2F0b3IoKXtyZXR1cm4hIXRoaXMuc2VsZWN0ZWRUYWImJnRoaXMuc2hvd1RhYkluZGljYXRvciYmdGhpcy50YWJzLmluY2x1ZGVzKHRoaXMuc2VsZWN0ZWRUYWIpfWdldFNlbGVjdGVkVGFiRWxlbWVudCgpe2xldCBCPXRoaXMudGFicy5pbmRleE9mKHRoaXMuc2VsZWN0ZWRUYWIpLGhlPXRoaXMudGFiU3R5bGU9PT0iaG9yaXpvbnRhbCI/YC50YWJzLXdyYXBwZXIgLnRhYnNDb250YWluZXIgLnRhYjpudGgtY2hpbGQoJHtCKzF9KWA6YC52ZXJ0aWNhbC13cmFwcGVyIC50YWJzQ29udGFpbmVyIC50YWI6bnRoLWNoaWxkKCR7QisxfSlgO3JldHVybiB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihoZSl9Z2V0SW5kaWNhdG9yRWxlbWVudCgpe3JldHVybiB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLnRhYkluZGljYXRvciIpfWhhbmRsZUluaXRpYWxUcmFuc2l0aW9uKEIpe3RoaXMuaW5kaWNhdG9ySW5pdGlhbGl6ZWR8fChCLmNsYXNzTGlzdC5hZGQoIm5vLXRyYW5zaXRpb24iKSx0aGlzLmluZGljYXRvckluaXRpYWxpemVkPSEwLHNldFRpbWVvdXQoKCk9PntCLmNsYXNzTGlzdC5yZW1vdmUoIm5vLXRyYW5zaXRpb24iKX0sNTApKX11cGRhdGVIb3Jpem9udGFsSW5kaWNhdG9yKEIsVSl7bGV0IGhlPVUucXVlcnlTZWxlY3RvcigiLnRhYi1jb250ZW50Iik7aWYoIWhlKXJldHVybjtsZXQgRj1CLnBhcmVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaj1oZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx1ZT1qLmxlZnQtRi5sZWZ0LGxlPWoud2lkdGgrOCxRPXVlLTQ7Qi5zdHlsZS53aWR0aD1gJHtsZX1weGAsQi5zdHlsZS5sZWZ0PWAke1F9cHhgfXVwZGF0ZVZlcnRpY2FsSW5kaWNhdG9yKEIsVSl7bGV0IGhlPXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIudmVydGljYWwtd3JhcHBlciAudGFic0NvbnRhaW5lciIpO2hlJiYoQi5zdHlsZS50b3A9YCR7VS5vZmZzZXRUb3AraGUub2Zmc2V0VG9wfXB4YCxCLnN0eWxlLmhlaWdodD1gJHtVLmNsaWVudEhlaWdodH1weGApfXN0YXRpY3t2cihhLHQpfX07cmV0dXJuIG1lPWF9KSgpfSk7dmFyIGg0LFFuLHVlcyxHbnQ9ZygoKT0+e2E0KCk7cGUoKTtrdCgpO1dudCgpO2h0KCk7aDQ9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LFFuPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSx1ZXM9KCgpPT57bGV0IHM9W25lKCJkZWVzLWFwcHVpLW1haW5jb250ZW50IildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W107dmFyIEg9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNBcHB1aU1haW5jb250ZW50Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGs9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpBcnJheX0pXSxwPVtMKHt0eXBlOk9iamVjdH0pXSxjPVtMKHt0eXBlOkJvb2xlYW59KV0seD1bTCh7dHlwZTpCb29sZWFufSldLHk9W0woe3R5cGU6TnVtYmVyfSldLE49W0woe3R5cGU6QXJyYXl9KV0sTz1bTCh7dHlwZTpBcnJheX0pXSxoNCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InRhYnMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+InRhYnMiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy50YWJzLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MudGFicz1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LG8sbCksaDQodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWxlY3RlZFRhYiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4ic2VsZWN0ZWRUYWIiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5zZWxlY3RlZFRhYiwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLnNlbGVjdGVkVGFiPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sZCx1KSxoNCh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dUYWJzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJzaG93VGFicyJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLnNob3dUYWJzLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1Muc2hvd1RhYnM9SX0sInNldCIpfSxtZXRhZGF0YTprfSxiLHYpLGg0KHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToidGFic0F1dG9IaWRlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJ0YWJzQXV0b0hpZGUiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy50YWJzQXV0b0hpZGUsImdldCIpLHNldDppKChTLEkpPT57Uy50YWJzQXV0b0hpZGU9SX0sInNldCIpfSxtZXRhZGF0YTprfSxtLGYpLGg0KHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToidGFic0F1dG9IaWRlVGhyZXNob2xkIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJ0YWJzQXV0b0hpZGVUaHJlc2hvbGQiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy50YWJzQXV0b0hpZGVUaHJlc2hvbGQsImdldCIpLHNldDppKChTLEkpPT57Uy50YWJzQXV0b0hpZGVUaHJlc2hvbGQ9SX0sInNldCIpfSxtZXRhZGF0YTprfSxNLHopLGg0KHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidGFiQWN0aW9uc0xlZnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+InRhYkFjdGlvbnNMZWZ0ImluIFMsImhhcyIpLGdldDppKFM9PlMudGFiQWN0aW9uc0xlZnQsImdldCIpLHNldDppKChTLEkpPT57Uy50YWJBY3Rpb25zTGVmdD1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LEMsXyksaDQodGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0YWJBY3Rpb25zUmlnaHQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+InRhYkFjdGlvbnNSaWdodCJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLnRhYkFjdGlvbnNSaWdodCwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLnRhYkFjdGlvbnNSaWdodD1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LCQsRSksaDQobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6a30sbnVsbCx0KSxIPWE9ZS52YWx1ZSxrJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmt9KX1zdGF0aWMgZGVtbz1pKCgpPT53YAogICAgPGRlZXMtYXBwdWktbWFpbmNvbnRlbnQKICAgICAgLnRhYnM9JHtbe2tleToiT3ZlcnZpZXciLGljb25OYW1lOiJsdWNpZGU6aG9tZSIsYWN0aW9uOmkoKCk9PmNvbnNvbGUubG9nKCJPdmVydmlldyIpLCJhY3Rpb24iKX0se2tleToiRGV0YWlscyIsaWNvbk5hbWU6Imx1Y2lkZTpmaWxlIixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIkRldGFpbHMiKSwiYWN0aW9uIil9LHtrZXk6IlNldHRpbmdzIixpY29uTmFtZToibHVjaWRlOnNldHRpbmdzIixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIlNldHRpbmdzIiksImFjdGlvbiIpfV19CiAgICA+CiAgICAgIDxkaXYgc2xvdD0iY29udGVudCIgc3R5bGU9InBhZGRpbmc6IDQwcHg7IGNvbG9yOiAjY2NjOyI+CiAgICAgICAgPGgxPk1haW4gQ29udGVudCBBcmVhPC9oMT4KICAgICAgICA8cD5UaGlzIGlzIHdoZXJlIHlvdXIgYXBwbGljYXRpb24gY29udGVudCBnb2VzLjwvcD4KICAgICAgPC9kaXY+CiAgICA8L2RlZXMtYXBwdWktbWFpbmNvbnRlbnQ+CiAgYCwiZGVtbyIpO3N0YXRpYyBkZW1vR3JvdXBzPVsiQXBwIFVJIl07I2U9UW4odGhpcyxvLFt7a2V5OiJcdTI2QTBcdUZFMEYgUGxlYXNlIHNldCB0YWJzIixhY3Rpb246aSgoKT0+Y29uc29sZS53YXJuKCJObyB0YWJzIGNvbmZpZ3VyZWQgZm9yIG1haW5jb250ZW50IiksImFjdGlvbiIpfV0pO2dldCB0YWJzKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHRhYnMoayl7dGhpcy4jZT1rfSN0PShRbih0aGlzLGwpLFFuKHRoaXMsZCxudWxsKSk7Z2V0IHNlbGVjdGVkVGFiKCl7cmV0dXJuIHRoaXMuI3R9c2V0IHNlbGVjdGVkVGFiKGspe3RoaXMuI3Q9a30jYT0oUW4odGhpcyx1KSxRbih0aGlzLGIsITApKTtnZXQgc2hvd1RhYnMoKXtyZXR1cm4gdGhpcy4jYX1zZXQgc2hvd1RhYnMoayl7dGhpcy4jYT1rfSNzPShRbih0aGlzLHYpLFFuKHRoaXMsbSwhMSkpO2dldCB0YWJzQXV0b0hpZGUoKXtyZXR1cm4gdGhpcy4jc31zZXQgdGFic0F1dG9IaWRlKGspe3RoaXMuI3M9a30jaT0oUW4odGhpcyxmKSxRbih0aGlzLE0sMCkpO2dldCB0YWJzQXV0b0hpZGVUaHJlc2hvbGQoKXtyZXR1cm4gdGhpcy4jaX1zZXQgdGFic0F1dG9IaWRlVGhyZXNob2xkKGspe3RoaXMuI2k9a30jcj0oUW4odGhpcyx6KSxRbih0aGlzLEMsW10pKTtnZXQgdGFiQWN0aW9uc0xlZnQoKXtyZXR1cm4gdGhpcy4jcn1zZXQgdGFiQWN0aW9uc0xlZnQoayl7dGhpcy4jcj1rfSNvPShRbih0aGlzLF8pLFFuKHRoaXMsJCxbXSkpO2dldCB0YWJBY3Rpb25zUmlnaHQoKXtyZXR1cm4gdGhpcy4jb31zZXQgdGFiQWN0aW9uc1JpZ2h0KGspe3RoaXMuI289a31zdGF0aWMgc3R5bGVzPVtxZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byAxZnI7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYmctc2Vjb25kYXJ5KTsKICAgICAgfQoKICAgICAgLm1haW5jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGNvbnRlbnRzOwogICAgICB9CgogICAgICAudG9wYmFyIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogMWZyOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgdHJhbnNpdGlvbjogZ3JpZC10ZW1wbGF0ZS1yb3dzIDAuM3MgZWFzZTsKICAgICAgfQoKICAgICAgLnRvcGJhciA+ICogewogICAgICAgIG1pbi1oZWlnaHQ6IDA7CiAgICAgIH0KCiAgICAgIC5jb250ZW50LWFyZWEgewogICAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICAgIG1pbi1oZWlnaHQ6IDA7CiAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbjsKICAgICAgfQoKICAgICAgOmhvc3QoW25vdGFic10pIC50b3BiYXIgewogICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogMGZyOwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0ibWFpbmNvbnRhaW5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0idG9wYmFyIj4KICAgICAgICAgIDxkZWVzLWFwcHVpLXRhYnMKICAgICAgICAgICAgLnRhYnM9JHt0aGlzLnRhYnN9CiAgICAgICAgICAgIC5zZWxlY3RlZFRhYj0ke3RoaXMuc2VsZWN0ZWRUYWJ9CiAgICAgICAgICAgIC5zaG93VGFiSW5kaWNhdG9yPSR7ITB9CiAgICAgICAgICAgIC50YWJTdHlsZT0keyJob3Jpem9udGFsIn0KICAgICAgICAgICAgLmF1dG9IaWRlPSR7dGhpcy50YWJzQXV0b0hpZGV9CiAgICAgICAgICAgIC5hdXRvSGlkZVRocmVzaG9sZD0ke3RoaXMudGFic0F1dG9IaWRlVGhyZXNob2xkfQogICAgICAgICAgICAuYWN0aW9uc0xlZnQ9JHt0aGlzLnRhYkFjdGlvbnNMZWZ0fQogICAgICAgICAgICAuYWN0aW9uc1JpZ2h0PSR7dGhpcy50YWJBY3Rpb25zUmlnaHR9CiAgICAgICAgICAgIEB0YWItc2VsZWN0PSR7az0+dGhpcy5oYW5kbGVUYWJTZWxlY3Qoayl9CiAgICAgICAgICAgIEB0YWItY2xvc2U9JHtrPT50aGlzLmhhbmRsZVRhYkNsb3NlKGspfQogICAgICAgICAgPjwvZGVlcy1hcHB1aS10YWJzPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQtYXJlYSI+CiAgICAgICAgICA8c2xvdD48L3Nsb3Q+CiAgICAgICAgICA8c2xvdCBuYW1lPSJjb250ZW50Ij48L3Nsb3Q+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1oYW5kbGVUYWJTZWxlY3Qoayl7dGhpcy5zZWxlY3RlZFRhYj1rLmRldGFpbC50YWIsdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgidGFiLXNlbGVjdCIse2RldGFpbDprLmRldGFpbCxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZVRhYkNsb3NlKGspe3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInRhYi1jbG9zZSIse2RldGFpbDprLmRldGFpbCxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfXVwZGF0ZWQoayl7c3VwZXIudXBkYXRlZChrKSxrLmhhcygic2hvd1RhYnMiKSYmKHRoaXMuc2hvd1RhYnM/dGhpcy5yZW1vdmVBdHRyaWJ1dGUoIm5vdGFicyIpOnRoaXMuc2V0QXR0cmlidXRlKCJub3RhYnMiLCIiKSl9YXN5bmMgZmlyc3RVcGRhdGVkKGspe2F3YWl0IHN1cGVyLmZpcnN0VXBkYXRlZChrKSx0aGlzLnNob3dUYWJzfHx0aGlzLnNldEF0dHJpYnV0ZSgibm90YWJzIiwiIik7bGV0IFM9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoImRlZXMtYXBwdWktdGFicyIpO1MmJmF3YWl0IFMudXBkYXRlQ29tcGxldGV9Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLFFuKHRoaXMsRSl9c3RhdGlje1FuKGEsdCl9fTtyZXR1cm4gSD1hfSkoKX0pO3ZhciBxYSxUdCxwZXMsS3ZhPWcoKCk9PntwZSgpO2t0KCk7YTQoKTtIdmEoKTtodCgpO2pudCgpO0VvdCgpO0lvdCgpO1ZudCgpO1VudCgpO0dudCgpO0NvdCgpO3FhPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxUdD1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0scGVzPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1hcHB1aSIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdLEgsaz1bXSxTPVtdLEksUD1bXSxSPVtdLEssVj1bXSxXPVtdLG1lLEI9W10sVT1bXSxoZSxGPVtdLGo9W10sdWUsbGU9W10sUT1bXSxpZSx0ZT1bXSxlZT1bXSxrZSxYPVtdLFo9W10seWUscT1bXSxBPVtdLHNlLG9lPVtdLGFlPVtdLFRlLFJlPVtdLEJlPVtdLEdlLERlPVtdLF9lPVtdLENlLHZlPVtdLGJlPVtdLEVlLGplPVtdLFdlPVtdLHN0LE1lPVtdLGdlPVtdLEllLGNlPVtdLGRlPVtdLExlLEtlPVtdLFllPVtdLG90LFV0PVtdLFp0PVtdLGphLGV0PVtdLGJ0PVtdLHlhLGVzPVtdLHJzPVtdLHBzLG5zPVtdLHRpPVtdLGFpLHplPVtdLHhlPVtdLE5lLHh0PVtdLE1hPVtdLE5yLGZlPVtdLHJlPVtdLFNlLE9lPVtdLEplPVtdLHphLGRhPVtdLHdzPVtdLGtpLEppPVtdLFJyPVtdLFNpLHZuPVtdLHIxPVtdLG8xLG4xPVtdLGwxPVtdLGMxLGQxPVtdLHUxPVtdO3ZhciBwMT1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0FwcHVpIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IEQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpBcnJheX0pXSxwPVtMKHt0eXBlOlN0cmluZ30pXSxjPVtMKHt0eXBlOlN0cmluZ30pXSx4PVtMKHt0eXBlOkJvb2xlYW59KV0seT1bTCh7dHlwZTpPYmplY3R9KV0sTj1bTCh7dHlwZTpBcnJheX0pXSxPPVtMKHt0eXBlOkJvb2xlYW59KV0sSD1bTCh7dHlwZTpTdHJpbmd9KV0sST1bTCh7dHlwZTpTdHJpbmd9KV0sSz1bTCh7dHlwZTpBcnJheX0pXSxtZT1bTCh7dHlwZTpBcnJheX0pXSxoZT1bTCh7dHlwZTpBcnJheX0pXSx1ZT1bTCh7dHlwZTpPYmplY3R9KV0saWU9W0woe3R5cGU6U3RyaW5nfSldLGtlPVtMKHt0eXBlOkFycmF5fSldLHllPVtMKHt0eXBlOk9iamVjdH0pXSxzZT1bTCh7dHlwZTpCb29sZWFufSldLFRlPVtMKHt0eXBlOkJvb2xlYW59KV0sR2U9W0woe3R5cGU6Qm9vbGVhbn0pXSxDZT1bTCh7dHlwZTpCb29sZWFufSldLEVlPVtMKHt0eXBlOkJvb2xlYW59KV0sc3Q9W0woe3R5cGU6Qm9vbGVhbn0pXSxJZT1bTCh7dHlwZTpOdW1iZXJ9KV0sTGU9W1koKV0sb3Q9W1koKV0samE9W0woe3R5cGU6QXJyYXl9KV0seWE9W0woe3R5cGU6T2JqZWN0fSldLHBzPVtMKHt0eXBlOkFycmF5fSldLGFpPVtMKHt0eXBlOkFycmF5fSldLE5lPVtZKCldLE5yPVtZKCldLFNlPVtZKCldLHphPVtZKCldLGtpPVtZKCldLFNpPVtZKCldLG8xPVtZKCldLGMxPVtZKCldLHFhKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYXBwYmFyTWVudUl0ZW1zIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJhcHBiYXJNZW51SXRlbXMiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5hcHBiYXJNZW51SXRlbXMsImdldCIpLHNldDppKChULEcpPT57VC5hcHBiYXJNZW51SXRlbXM9R30sInNldCIpfSxtZXRhZGF0YTpEfSxvLGwpLHFhKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYXBwYmFyQnJlYWRjcnVtYnMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+ImFwcGJhckJyZWFkY3J1bWJzImluIFQsImhhcyIpLGdldDppKFQ9PlQuYXBwYmFyQnJlYWRjcnVtYnMsImdldCIpLHNldDppKChULEcpPT57VC5hcHBiYXJCcmVhZGNydW1icz1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LGQsdSkscWEodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJhcHBiYXJCcmVhZGNydW1iU2VwYXJhdG9yIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJhcHBiYXJCcmVhZGNydW1iU2VwYXJhdG9yImluIFQsImhhcyIpLGdldDppKFQ9PlQuYXBwYmFyQnJlYWRjcnVtYlNlcGFyYXRvciwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULmFwcGJhckJyZWFkY3J1bWJTZXBhcmF0b3I9R30sInNldCIpfSxtZXRhZGF0YTpEfSxiLHYpLHFhKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYXBwYmFyU2hvd1dpbmRvd0NvbnRyb2xzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJhcHBiYXJTaG93V2luZG93Q29udHJvbHMiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5hcHBiYXJTaG93V2luZG93Q29udHJvbHMsImdldCIpLHNldDppKChULEcpPT57VC5hcHBiYXJTaG93V2luZG93Q29udHJvbHM9R30sInNldCIpfSxtZXRhZGF0YTpEfSxtLGYpLHFhKHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYXBwYmFyVXNlciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4iYXBwYmFyVXNlciJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULmFwcGJhclVzZXIsImdldCIpLHNldDppKChULEcpPT57VC5hcHBiYXJVc2VyPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sTSx6KSxxYSh0aGlzLG51bGwsTix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImFwcGJhclByb2ZpbGVNZW51SXRlbXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+ImFwcGJhclByb2ZpbGVNZW51SXRlbXMiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5hcHBiYXJQcm9maWxlTWVudUl0ZW1zLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QuYXBwYmFyUHJvZmlsZU1lbnVJdGVtcz1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LEMsXykscWEodGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJhcHBiYXJTaG93U2VhcmNoIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJhcHBiYXJTaG93U2VhcmNoImluIFQsImhhcyIpLGdldDppKFQ9PlQuYXBwYmFyU2hvd1NlYXJjaCwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULmFwcGJhclNob3dTZWFyY2g9R30sInNldCIpfSxtZXRhZGF0YTpEfSwkLEUpLHFhKHRoaXMsbnVsbCxILHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWFpbm1lbnVMb2dvSWNvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ibWFpbm1lbnVMb2dvSWNvbiJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULm1haW5tZW51TG9nb0ljb24sImdldCIpLHNldDppKChULEcpPT57VC5tYWlubWVudUxvZ29JY29uPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sayxTKSxxYSh0aGlzLG51bGwsSSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1haW5tZW51TG9nb1RleHQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+Im1haW5tZW51TG9nb1RleHQiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5tYWlubWVudUxvZ29UZXh0LCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QubWFpbm1lbnVMb2dvVGV4dD1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LFAsUikscWEodGhpcyxudWxsLEsse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtYWlubWVudUdyb3VwcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ibWFpbm1lbnVHcm91cHMiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5tYWlubWVudUdyb3VwcywiZ2V0Iiksc2V0OmkoKFQsRyk9PntULm1haW5tZW51R3JvdXBzPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sVixXKSxxYSh0aGlzLG51bGwsbWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtYWlubWVudUJvdHRvbVRhYnMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+Im1haW5tZW51Qm90dG9tVGFicyJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULm1haW5tZW51Qm90dG9tVGFicywiZ2V0Iiksc2V0OmkoKFQsRyk9PntULm1haW5tZW51Qm90dG9tVGFicz1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LEIsVSkscWEodGhpcyxudWxsLGhlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWFpbm1lbnVUYWJzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJtYWlubWVudVRhYnMiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5tYWlubWVudVRhYnMsImdldCIpLHNldDppKChULEcpPT57VC5tYWlubWVudVRhYnM9R30sInNldCIpfSxtZXRhZGF0YTpEfSxGLGopLHFhKHRoaXMsbnVsbCx1ZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1haW5tZW51U2VsZWN0ZWRUYWIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+Im1haW5tZW51U2VsZWN0ZWRUYWIiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5tYWlubWVudVNlbGVjdGVkVGFiLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QubWFpbm1lbnVTZWxlY3RlZFRhYj1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LGxlLFEpLHFhKHRoaXMsbnVsbCxpZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlY29uZGFyeW1lbnVIZWFkaW5nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJzZWNvbmRhcnltZW51SGVhZGluZyJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULnNlY29uZGFyeW1lbnVIZWFkaW5nLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1Quc2Vjb25kYXJ5bWVudUhlYWRpbmc9R30sInNldCIpfSxtZXRhZGF0YTpEfSx0ZSxlZSkscWEodGhpcyxudWxsLGtlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2Vjb25kYXJ5bWVudUdyb3VwcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ic2Vjb25kYXJ5bWVudUdyb3VwcyJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULnNlY29uZGFyeW1lbnVHcm91cHMsImdldCIpLHNldDppKChULEcpPT57VC5zZWNvbmRhcnltZW51R3JvdXBzPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sWCxaKSxxYSh0aGlzLG51bGwseWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWNvbmRhcnltZW51U2VsZWN0ZWRJdGVtIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJzZWNvbmRhcnltZW51U2VsZWN0ZWRJdGVtImluIFQsImhhcyIpLGdldDppKFQ9PlQuc2Vjb25kYXJ5bWVudVNlbGVjdGVkSXRlbSwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULnNlY29uZGFyeW1lbnVTZWxlY3RlZEl0ZW09R30sInNldCIpfSxtZXRhZGF0YTpEfSxxLEEpLHFhKHRoaXMsbnVsbCxzZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1haW5tZW51Q29sbGFwc2VkIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJtYWlubWVudUNvbGxhcHNlZCJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULm1haW5tZW51Q29sbGFwc2VkLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QubWFpbm1lbnVDb2xsYXBzZWQ9R30sInNldCIpfSxtZXRhZGF0YTpEfSxvZSxhZSkscWEodGhpcyxudWxsLFRlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2Vjb25kYXJ5bWVudUNvbGxhcHNlZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ic2Vjb25kYXJ5bWVudUNvbGxhcHNlZCJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULnNlY29uZGFyeW1lbnVDb2xsYXBzZWQsImdldCIpLHNldDppKChULEcpPT57VC5zZWNvbmRhcnltZW51Q29sbGFwc2VkPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sUmUsQmUpLHFhKHRoaXMsbnVsbCxHZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1haW5tZW51VmlzaWJsZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ibWFpbm1lbnVWaXNpYmxlImluIFQsImhhcyIpLGdldDppKFQ9PlQubWFpbm1lbnVWaXNpYmxlLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QubWFpbm1lbnVWaXNpYmxlPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sRGUsX2UpLHFhKHRoaXMsbnVsbCxDZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlY29uZGFyeW1lbnVWaXNpYmxlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJzZWNvbmRhcnltZW51VmlzaWJsZSJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULnNlY29uZGFyeW1lbnVWaXNpYmxlLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1Quc2Vjb25kYXJ5bWVudVZpc2libGU9R30sInNldCIpfSxtZXRhZGF0YTpEfSx2ZSxiZSkscWEodGhpcyxudWxsLEVlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWFpbmNvbnRlbnRUYWJzVmlzaWJsZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ibWFpbmNvbnRlbnRUYWJzVmlzaWJsZSJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULm1haW5jb250ZW50VGFic1Zpc2libGUsImdldCIpLHNldDppKChULEcpPT57VC5tYWluY29udGVudFRhYnNWaXNpYmxlPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0samUsV2UpLHFhKHRoaXMsbnVsbCxzdCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNvbnRlbnRUYWJzQXV0b0hpZGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+ImNvbnRlbnRUYWJzQXV0b0hpZGUiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5jb250ZW50VGFic0F1dG9IaWRlLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QuY29udGVudFRhYnNBdXRvSGlkZT1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LE1lLGdlKSxxYSh0aGlzLG51bGwsSWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjb250ZW50VGFic0F1dG9IaWRlVGhyZXNob2xkIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJjb250ZW50VGFic0F1dG9IaWRlVGhyZXNob2xkImluIFQsImhhcyIpLGdldDppKFQ9PlQuY29udGVudFRhYnNBdXRvSGlkZVRocmVzaG9sZCwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULmNvbnRlbnRUYWJzQXV0b0hpZGVUaHJlc2hvbGQ9R30sInNldCIpfSxtZXRhZGF0YTpEfSxjZSxkZSkscWEodGhpcyxudWxsLExlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYWN0aXZpdHlMb2dWaXNpYmxlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJhY3Rpdml0eUxvZ1Zpc2libGUiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5hY3Rpdml0eUxvZ1Zpc2libGUsImdldCIpLHNldDppKChULEcpPT57VC5hY3Rpdml0eUxvZ1Zpc2libGU9R30sInNldCIpfSxtZXRhZGF0YTpEfSxLZSxZZSkscWEodGhpcyxudWxsLG90LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYWN0aXZpdHlMb2dDb3VudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4iYWN0aXZpdHlMb2dDb3VudCJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULmFjdGl2aXR5TG9nQ291bnQsImdldCIpLHNldDppKChULEcpPT57VC5hY3Rpdml0eUxvZ0NvdW50PUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sVXQsWnQpLHFhKHRoaXMsbnVsbCxqYSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1haW5jb250ZW50VGFicyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4ibWFpbmNvbnRlbnRUYWJzImluIFQsImhhcyIpLGdldDppKFQ9PlQubWFpbmNvbnRlbnRUYWJzLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QubWFpbmNvbnRlbnRUYWJzPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sZXQsYnQpLHFhKHRoaXMsbnVsbCx5YSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1haW5jb250ZW50U2VsZWN0ZWRUYWIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+Im1haW5jb250ZW50U2VsZWN0ZWRUYWIiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5tYWluY29udGVudFNlbGVjdGVkVGFiLCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QubWFpbmNvbnRlbnRTZWxlY3RlZFRhYj1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LGVzLHJzKSxxYSh0aGlzLG51bGwscHMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjb250ZW50VGFiQWN0aW9uc0xlZnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+ImNvbnRlbnRUYWJBY3Rpb25zTGVmdCJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULmNvbnRlbnRUYWJBY3Rpb25zTGVmdCwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULmNvbnRlbnRUYWJBY3Rpb25zTGVmdD1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LG5zLHRpKSxxYSh0aGlzLG51bGwsYWkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjb250ZW50VGFiQWN0aW9uc1JpZ2h0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJjb250ZW50VGFiQWN0aW9uc1JpZ2h0ImluIFQsImhhcyIpLGdldDppKFQ9PlQuY29udGVudFRhYkFjdGlvbnNSaWdodCwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULmNvbnRlbnRUYWJBY3Rpb25zUmlnaHQ9R30sInNldCIpfSxtZXRhZGF0YTpEfSx6ZSx4ZSkscWEodGhpcyxudWxsLE5lLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYXBwYmFyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJhcHBiYXIiaW4gVCwiaGFzIiksZ2V0OmkoVD0+VC5hcHBiYXIsImdldCIpLHNldDppKChULEcpPT57VC5hcHBiYXI9R30sInNldCIpfSxtZXRhZGF0YTpEfSx4dCxNYSkscWEodGhpcyxudWxsLE5yLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWFpbm1lbnUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+Im1haW5tZW51ImluIFQsImhhcyIpLGdldDppKFQ9PlQubWFpbm1lbnUsImdldCIpLHNldDppKChULEcpPT57VC5tYWlubWVudT1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LGZlLHJlKSxxYSh0aGlzLG51bGwsU2Use2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWNvbmRhcnltZW51IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJzZWNvbmRhcnltZW51ImluIFQsImhhcyIpLGdldDppKFQ9PlQuc2Vjb25kYXJ5bWVudSwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULnNlY29uZGFyeW1lbnU9R30sInNldCIpfSxtZXRhZGF0YTpEfSxPZSxKZSkscWEodGhpcyxudWxsLHphLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWFpbmNvbnRlbnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+Im1haW5jb250ZW50ImluIFQsImhhcyIpLGdldDppKFQ9PlQubWFpbmNvbnRlbnQsImdldCIpLHNldDppKChULEcpPT57VC5tYWluY29udGVudD1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LGRhLHdzKSxxYSh0aGlzLG51bGwsa2kse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJhY3Rpdml0eWxvZ0VsZW1lbnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVD0+ImFjdGl2aXR5bG9nRWxlbWVudCJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULmFjdGl2aXR5bG9nRWxlbWVudCwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULmFjdGl2aXR5bG9nRWxlbWVudD1HfSwic2V0Iil9LG1ldGFkYXRhOkR9LEppLFJyKSxxYSh0aGlzLG51bGwsU2kse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJib3R0b21iYXJFbGVtZW50IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJib3R0b21iYXJFbGVtZW50ImluIFQsImhhcyIpLGdldDppKFQ9PlQuYm90dG9tYmFyRWxlbWVudCwiZ2V0Iiksc2V0OmkoKFQsRyk9PntULmJvdHRvbWJhckVsZW1lbnQ9R30sInNldCIpfSxtZXRhZGF0YTpEfSx2bixyMSkscWEodGhpcyxudWxsLG8xLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYm90dG9tYmFyVmlzaWJsZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShUPT4iYm90dG9tYmFyVmlzaWJsZSJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULmJvdHRvbWJhclZpc2libGUsImdldCIpLHNldDppKChULEcpPT57VC5ib3R0b21iYXJWaXNpYmxlPUd9LCJzZXQiKX0sbWV0YWRhdGE6RH0sbjEsbDEpLHFhKHRoaXMsbnVsbCxjMSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImN1cnJlbnRWaWV3IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFQ9PiJjdXJyZW50VmlldyJpbiBULCJoYXMiKSxnZXQ6aShUPT5ULmN1cnJlbnRWaWV3LCJnZXQiKSxzZXQ6aSgoVCxHKT0+e1QuY3VycmVudFZpZXc9R30sInNldCIpfSxtZXRhZGF0YTpEfSxkMSx1MSkscWEobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6RH0sbnVsbCx0KSxwMT1hPWUudmFsdWUsRCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpEfSl9c3RhdGljIGRlbW89QnZhO3N0YXRpYyBkZW1vR3JvdXBzPVsiQXBwIFVJIl07dmlld0xpZmVjeWNsZSQ9bmV3IHV0LnNtYXJ0cngucnhqcy5TdWJqZWN0O3ZpZXdDaGFuZ2VkJD1uZXcgdXQuc21hcnRyeC5yeGpzLlN1YmplY3Q7I2U9VHQodGhpcyxvLFtdKTtnZXQgYXBwYmFyTWVudUl0ZW1zKCl7cmV0dXJuIHRoaXMuI2V9c2V0IGFwcGJhck1lbnVJdGVtcyhEKXt0aGlzLiNlPUR9I3Q9KFR0KHRoaXMsbCksVHQodGhpcyxkLCIiKSk7Z2V0IGFwcGJhckJyZWFkY3J1bWJzKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGFwcGJhckJyZWFkY3J1bWJzKEQpe3RoaXMuI3Q9RH0jYT0oVHQodGhpcyx1KSxUdCh0aGlzLGIsIiA+ICIpKTtnZXQgYXBwYmFyQnJlYWRjcnVtYlNlcGFyYXRvcigpe3JldHVybiB0aGlzLiNhfXNldCBhcHBiYXJCcmVhZGNydW1iU2VwYXJhdG9yKEQpe3RoaXMuI2E9RH0jcz0oVHQodGhpcyx2KSxUdCh0aGlzLG0sITApKTtnZXQgYXBwYmFyU2hvd1dpbmRvd0NvbnRyb2xzKCl7cmV0dXJuIHRoaXMuI3N9c2V0IGFwcGJhclNob3dXaW5kb3dDb250cm9scyhEKXt0aGlzLiNzPUR9I2k9KFR0KHRoaXMsZiksVHQodGhpcyxNLHZvaWQgMCkpO2dldCBhcHBiYXJVc2VyKCl7cmV0dXJuIHRoaXMuI2l9c2V0IGFwcGJhclVzZXIoRCl7dGhpcy4jaT1EfSNyPShUdCh0aGlzLHopLFR0KHRoaXMsQyxbXSkpO2dldCBhcHBiYXJQcm9maWxlTWVudUl0ZW1zKCl7cmV0dXJuIHRoaXMuI3J9c2V0IGFwcGJhclByb2ZpbGVNZW51SXRlbXMoRCl7dGhpcy4jcj1EfSNvPShUdCh0aGlzLF8pLFR0KHRoaXMsJCwhMSkpO2dldCBhcHBiYXJTaG93U2VhcmNoKCl7cmV0dXJuIHRoaXMuI299c2V0IGFwcGJhclNob3dTZWFyY2goRCl7dGhpcy4jbz1EfSNuPShUdCh0aGlzLEUpLFR0KHRoaXMsaywiIikpO2dldCBtYWlubWVudUxvZ29JY29uKCl7cmV0dXJuIHRoaXMuI259c2V0IG1haW5tZW51TG9nb0ljb24oRCl7dGhpcy4jbj1EfSNsPShUdCh0aGlzLFMpLFR0KHRoaXMsUCwiIikpO2dldCBtYWlubWVudUxvZ29UZXh0KCl7cmV0dXJuIHRoaXMuI2x9c2V0IG1haW5tZW51TG9nb1RleHQoRCl7dGhpcy4jbD1EfSNjPShUdCh0aGlzLFIpLFR0KHRoaXMsVixbXSkpO2dldCBtYWlubWVudUdyb3Vwcygpe3JldHVybiB0aGlzLiNjfXNldCBtYWlubWVudUdyb3VwcyhEKXt0aGlzLiNjPUR9I2Q9KFR0KHRoaXMsVyksVHQodGhpcyxCLFtdKSk7Z2V0IG1haW5tZW51Qm90dG9tVGFicygpe3JldHVybiB0aGlzLiNkfXNldCBtYWlubWVudUJvdHRvbVRhYnMoRCl7dGhpcy4jZD1EfSN1PShUdCh0aGlzLFUpLFR0KHRoaXMsRixbXSkpO2dldCBtYWlubWVudVRhYnMoKXtyZXR1cm4gdGhpcy4jdX1zZXQgbWFpbm1lbnVUYWJzKEQpe3RoaXMuI3U9RH0jcD0oVHQodGhpcyxqKSxUdCh0aGlzLGxlLHZvaWQgMCkpO2dldCBtYWlubWVudVNlbGVjdGVkVGFiKCl7cmV0dXJuIHRoaXMuI3B9c2V0IG1haW5tZW51U2VsZWN0ZWRUYWIoRCl7dGhpcy4jcD1EfSNoPShUdCh0aGlzLFEpLFR0KHRoaXMsdGUsIiIpKTtnZXQgc2Vjb25kYXJ5bWVudUhlYWRpbmcoKXtyZXR1cm4gdGhpcy4jaH1zZXQgc2Vjb25kYXJ5bWVudUhlYWRpbmcoRCl7dGhpcy4jaD1EfSNmPShUdCh0aGlzLGVlKSxUdCh0aGlzLFgsW10pKTtnZXQgc2Vjb25kYXJ5bWVudUdyb3Vwcygpe3JldHVybiB0aGlzLiNmfXNldCBzZWNvbmRhcnltZW51R3JvdXBzKEQpe3RoaXMuI2Y9RH0jbT0oVHQodGhpcyxaKSxUdCh0aGlzLHEsdm9pZCAwKSk7Z2V0IHNlY29uZGFyeW1lbnVTZWxlY3RlZEl0ZW0oKXtyZXR1cm4gdGhpcy4jbX1zZXQgc2Vjb25kYXJ5bWVudVNlbGVjdGVkSXRlbShEKXt0aGlzLiNtPUR9I2c9KFR0KHRoaXMsQSksVHQodGhpcyxvZSwhMSkpO2dldCBtYWlubWVudUNvbGxhcHNlZCgpe3JldHVybiB0aGlzLiNnfXNldCBtYWlubWVudUNvbGxhcHNlZChEKXt0aGlzLiNnPUR9I2I9KFR0KHRoaXMsYWUpLFR0KHRoaXMsUmUsITEpKTtnZXQgc2Vjb25kYXJ5bWVudUNvbGxhcHNlZCgpe3JldHVybiB0aGlzLiNifXNldCBzZWNvbmRhcnltZW51Q29sbGFwc2VkKEQpe3RoaXMuI2I9RH0jdj0oVHQodGhpcyxCZSksVHQodGhpcyxEZSwhMCkpO2dldCBtYWlubWVudVZpc2libGUoKXtyZXR1cm4gdGhpcy4jdn1zZXQgbWFpbm1lbnVWaXNpYmxlKEQpe3RoaXMuI3Y9RH0jeD0oVHQodGhpcyxfZSksVHQodGhpcyx2ZSwhMCkpO2dldCBzZWNvbmRhcnltZW51VmlzaWJsZSgpe3JldHVybiB0aGlzLiN4fXNldCBzZWNvbmRhcnltZW51VmlzaWJsZShEKXt0aGlzLiN4PUR9I3k9KFR0KHRoaXMsYmUpLFR0KHRoaXMsamUsITApKTtnZXQgbWFpbmNvbnRlbnRUYWJzVmlzaWJsZSgpe3JldHVybiB0aGlzLiN5fXNldCBtYWluY29udGVudFRhYnNWaXNpYmxlKEQpe3RoaXMuI3k9RH0jdz0oVHQodGhpcyxXZSksVHQodGhpcyxNZSwhMSkpO2dldCBjb250ZW50VGFic0F1dG9IaWRlKCl7cmV0dXJuIHRoaXMuI3d9c2V0IGNvbnRlbnRUYWJzQXV0b0hpZGUoRCl7dGhpcy4jdz1EfSNrPShUdCh0aGlzLGdlKSxUdCh0aGlzLGNlLDApKTtnZXQgY29udGVudFRhYnNBdXRvSGlkZVRocmVzaG9sZCgpe3JldHVybiB0aGlzLiNrfXNldCBjb250ZW50VGFic0F1dG9IaWRlVGhyZXNob2xkKEQpe3RoaXMuI2s9RH0jUz0oVHQodGhpcyxkZSksVHQodGhpcyxLZSwhMSkpO2dldCBhY3Rpdml0eUxvZ1Zpc2libGUoKXtyZXR1cm4gdGhpcy4jU31zZXQgYWN0aXZpdHlMb2dWaXNpYmxlKEQpe3RoaXMuI1M9RH0jXz0oVHQodGhpcyxZZSksVHQodGhpcyxVdCwwKSk7Z2V0IGFjdGl2aXR5TG9nQ291bnQoKXtyZXR1cm4gdGhpcy4jX31zZXQgYWN0aXZpdHlMb2dDb3VudChEKXt0aGlzLiNfPUR9I009KFR0KHRoaXMsWnQpLFR0KHRoaXMsZXQsW10pKTtnZXQgbWFpbmNvbnRlbnRUYWJzKCl7cmV0dXJuIHRoaXMuI019c2V0IG1haW5jb250ZW50VGFicyhEKXt0aGlzLiNNPUR9I3o9KFR0KHRoaXMsYnQpLFR0KHRoaXMsZXMsdm9pZCAwKSk7Z2V0IG1haW5jb250ZW50U2VsZWN0ZWRUYWIoKXtyZXR1cm4gdGhpcy4jen1zZXQgbWFpbmNvbnRlbnRTZWxlY3RlZFRhYihEKXt0aGlzLiN6PUR9I0M9KFR0KHRoaXMscnMpLFR0KHRoaXMsbnMsW10pKTtnZXQgY29udGVudFRhYkFjdGlvbnNMZWZ0KCl7cmV0dXJuIHRoaXMuI0N9c2V0IGNvbnRlbnRUYWJBY3Rpb25zTGVmdChEKXt0aGlzLiNDPUR9I1Q9KFR0KHRoaXMsdGkpLFR0KHRoaXMsemUsW10pKTtnZXQgY29udGVudFRhYkFjdGlvbnNSaWdodCgpe3JldHVybiB0aGlzLiNUfXNldCBjb250ZW50VGFiQWN0aW9uc1JpZ2h0KEQpe3RoaXMuI1Q9RH0jJD0oVHQodGhpcyx4ZSksVHQodGhpcyx4dCx2b2lkIDApKTtnZXQgYXBwYmFyKCl7cmV0dXJuIHRoaXMuIyR9c2V0IGFwcGJhcihEKXt0aGlzLiMkPUR9I0Q9KFR0KHRoaXMsTWEpLFR0KHRoaXMsZmUsdm9pZCAwKSk7Z2V0IG1haW5tZW51KCl7cmV0dXJuIHRoaXMuI0R9c2V0IG1haW5tZW51KEQpe3RoaXMuI0Q9RH0jTD0oVHQodGhpcyxyZSksVHQodGhpcyxPZSx2b2lkIDApKTtnZXQgc2Vjb25kYXJ5bWVudSgpe3JldHVybiB0aGlzLiNMfXNldCBzZWNvbmRhcnltZW51KEQpe3RoaXMuI0w9RH0jRT0oVHQodGhpcyxKZSksVHQodGhpcyxkYSx2b2lkIDApKTtnZXQgbWFpbmNvbnRlbnQoKXtyZXR1cm4gdGhpcy4jRX1zZXQgbWFpbmNvbnRlbnQoRCl7dGhpcy4jRT1EfSNQPShUdCh0aGlzLHdzKSxUdCh0aGlzLEppLHZvaWQgMCkpO2dldCBhY3Rpdml0eWxvZ0VsZW1lbnQoKXtyZXR1cm4gdGhpcy4jUH1zZXQgYWN0aXZpdHlsb2dFbGVtZW50KEQpe3RoaXMuI1A9RH0jST0oVHQodGhpcyxSciksVHQodGhpcyx2bix2b2lkIDApKTtnZXQgYm90dG9tYmFyRWxlbWVudCgpe3JldHVybiB0aGlzLiNJfXNldCBib3R0b21iYXJFbGVtZW50KEQpe3RoaXMuI0k9RH0jQT0oVHQodGhpcyxyMSksVHQodGhpcyxuMSwhMCkpO2dldCBib3R0b21iYXJWaXNpYmxlKCl7cmV0dXJuIHRoaXMuI0F9c2V0IGJvdHRvbWJhclZpc2libGUoRCl7dGhpcy4jQT1EfSNOPShUdCh0aGlzLGwxKSxUdCh0aGlzLGQxLHZvaWQgMCkpO2dldCBjdXJyZW50Vmlldygpe3JldHVybiB0aGlzLiNOfXNldCBjdXJyZW50VmlldyhEKXt0aGlzLiNOPUR9dmlld1JlZ2lzdHJ5PShUdCh0aGlzLHUxKSxuZXcgZTJlKTtyb3V0ZXJDbGVhbnVwPW51bGw7c2VhcmNoQ2FsbGJhY2s9bnVsbDtzdGF0aWMgc3R5bGVzPVtxZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1iZy10ZXJ0aWFyeSk7CiAgICAgIH0KICAgICAgLm1haW5ncmlkIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiA0MHB4OwogICAgICAgIGhlaWdodDogY2FsYygxMDAlIC0gNDBweCAtIDI0cHgpOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgLyogZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHNldCBkeW5hbWljYWxseSBpbiB0ZW1wbGF0ZSAqLwogICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogMWZyOwogICAgICAgIHRyYW5zaXRpb246IGdyaWQtdGVtcGxhdGUtY29sdW1ucyAwLjNzIGVhc2UsIGhlaWdodCAwLjNzIGVhc2U7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgOmhvc3QoW2JvdHRvbWJhci1oaWRkZW5dKSAubWFpbmdyaWQgewogICAgICAgIGhlaWdodDogY2FsYygxMDAlIC0gNDBweCk7CiAgICAgIH0KCiAgICAgIGRlZXMtYXBwdWktYm90dG9tYmFyIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgei1pbmRleDogNDsKICAgICAgfQoKICAgICAgLyogWi1pbmRleCBsYXllcmluZyBmb3IgcHJvcGVyIHN0YWNraW5nICovCiAgICAgIC5tYWluZ3JpZCA+IGRlZXMtYXBwdWktbWFpbm1lbnUgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB6LWluZGV4OiAzOwogICAgICAgIG1pbi1oZWlnaHQ6IDA7CiAgICAgIH0KCiAgICAgIC5tYWluZ3JpZCA+IGRlZXMtYXBwdWktc2Vjb25kYXJ5bWVudSB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHotaW5kZXg6IDI7CiAgICAgICAgbWluLWhlaWdodDogMDsKICAgICAgfQoKICAgICAgLm1haW5ncmlkID4gZGVlcy1hcHB1aS1tYWluY29udGVudCB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgbWluLWhlaWdodDogMDsKICAgICAgfQoKICAgICAgLm1haW5ncmlkID4gZGVlcy1hcHB1aS1hY3Rpdml0eWxvZyB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZSwgdHJhbnNmb3JtIDAuM3MgZWFzZTsKICAgICAgfQoKICAgICAgLm1haW5ncmlkID4gZGVlcy1hcHB1aS1hY3Rpdml0eWxvZy5oaWRkZW4gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwcHgpOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICAubWFpbmdyaWQgPiBkZWVzLWFwcHVpLWFjdGl2aXR5bG9nLnZpc2libGUgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgICB9CgogICAgICAvKiBWaWV3IGNvbnRhaW5lciBmb3IgZHluYW1pY2FsbHkgbG9hZGVkIHZpZXdzICovCiAgICAgIC52aWV3LWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogY29udGVudHM7CiAgICAgIH0KCiAgICAgIC52aWV3LWNvbnRhaW5lcjplbXB0eSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkZWVzLWFwcHVpLWFwcGJhcgogICAgICAgIC5tZW51SXRlbXM9JHt0aGlzLmFwcGJhck1lbnVJdGVtc30KICAgICAgICAuYnJlYWRjcnVtYnM9JHt0aGlzLmFwcGJhckJyZWFkY3J1bWJzfQogICAgICAgIC5icmVhZGNydW1iU2VwYXJhdG9yPSR7dGhpcy5hcHBiYXJCcmVhZGNydW1iU2VwYXJhdG9yfQogICAgICAgIC5zaG93V2luZG93Q29udHJvbHM9JHt0aGlzLmFwcGJhclNob3dXaW5kb3dDb250cm9sc30KICAgICAgICAudXNlcj0ke3RoaXMuYXBwYmFyVXNlcn0KICAgICAgICAucHJvZmlsZU1lbnVJdGVtcz0ke3RoaXMuYXBwYmFyUHJvZmlsZU1lbnVJdGVtc30KICAgICAgICAuc2hvd1NlYXJjaD0ke3RoaXMuYXBwYmFyU2hvd1NlYXJjaH0KICAgICAgICAuc2hvd0FjdGl2aXR5TG9nVG9nZ2xlPSR7ITB9CiAgICAgICAgLmFjdGl2aXR5TG9nQ291bnQ9JHt0aGlzLmFjdGl2aXR5TG9nQ291bnR9CiAgICAgICAgLmFjdGl2aXR5TG9nQWN0aXZlPSR7dGhpcy5hY3Rpdml0eUxvZ1Zpc2libGV9CiAgICAgICAgQG1lbnUtc2VsZWN0PSR7RD0+dGhpcy5oYW5kbGVBcHBiYXJNZW51U2VsZWN0KEQpfQogICAgICAgIEBicmVhZGNydW1iLW5hdmlnYXRlPSR7RD0+dGhpcy5oYW5kbGVBcHBiYXJCcmVhZGNydW1iTmF2aWdhdGUoRCl9CiAgICAgICAgQHNlYXJjaC1jbGljaz0keygpPT50aGlzLmhhbmRsZUFwcGJhclNlYXJjaENsaWNrKCl9CiAgICAgICAgQHNlYXJjaC1xdWVyeT0ke0Q9PnRoaXMuaGFuZGxlQXBwYmFyU2VhcmNoUXVlcnkoRCl9CiAgICAgICAgQHVzZXItbWVudS1vcGVuPSR7KCk9PnRoaXMuaGFuZGxlQXBwYmFyVXNlck1lbnVPcGVuKCl9CiAgICAgICAgQHByb2ZpbGUtbWVudS1zZWxlY3Q9JHtEPT50aGlzLmhhbmRsZUFwcGJhclByb2ZpbGVNZW51U2VsZWN0KEQpfQogICAgICAgIEBhY3Rpdml0eS10b2dnbGU9JHsoKT0+dGhpcy50b2dnbGVBY3Rpdml0eUxvZygpfQogICAgICA+PC9kZWVzLWFwcHVpLWFwcGJhcj4KICAgICAgPGRpdiBjbGFzcz0ibWFpbmdyaWQiIHN0eWxlPSJncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gYXV0byAxZnIgJHt0aGlzLmFjdGl2aXR5TG9nVmlzaWJsZT8iMjgwcHgiOiIwcHgifTsiPgogICAgICAgICR7dGhpcy5tYWlubWVudVZpc2libGU/d2AKICAgICAgICAgIDxkZWVzLWFwcHVpLW1haW5tZW51CiAgICAgICAgICAgIC5sb2dvSWNvbj0ke3RoaXMubWFpbm1lbnVMb2dvSWNvbn0KICAgICAgICAgICAgLmxvZ29UZXh0PSR7dGhpcy5tYWlubWVudUxvZ29UZXh0fQogICAgICAgICAgICAubWVudUdyb3Vwcz0ke3RoaXMubWFpbm1lbnVHcm91cHN9CiAgICAgICAgICAgIC5ib3R0b21UYWJzPSR7dGhpcy5tYWlubWVudUJvdHRvbVRhYnN9CiAgICAgICAgICAgIC50YWJzPSR7dGhpcy5tYWlubWVudVRhYnN9CiAgICAgICAgICAgIC5zZWxlY3RlZFRhYj0ke3RoaXMubWFpbm1lbnVTZWxlY3RlZFRhYn0KICAgICAgICAgICAgLmNvbGxhcHNlZD0ke3RoaXMubWFpbm1lbnVDb2xsYXBzZWR9CiAgICAgICAgICAgIEB0YWItc2VsZWN0PSR7RD0+dGhpcy5oYW5kbGVNYWlubWVudVRhYlNlbGVjdChEKX0KICAgICAgICAgICAgQGNvbGxhcHNlLWNoYW5nZT0ke0Q9PnRoaXMuaGFuZGxlTWFpbm1lbnVDb2xsYXBzZUNoYW5nZShEKX0KICAgICAgICAgID48L2RlZXMtYXBwdWktbWFpbm1lbnU+CiAgICAgICAgYDoiIn0KICAgICAgICAke3RoaXMuc2Vjb25kYXJ5bWVudVZpc2libGU/d2AKICAgICAgICAgIDxkZWVzLWFwcHVpLXNlY29uZGFyeW1lbnUKICAgICAgICAgICAgLmhlYWRpbmc9JHt0aGlzLnNlY29uZGFyeW1lbnVIZWFkaW5nfQogICAgICAgICAgICAuZ3JvdXBzPSR7dGhpcy5zZWNvbmRhcnltZW51R3JvdXBzfQogICAgICAgICAgICAuc2VsZWN0ZWRJdGVtPSR7dGhpcy5zZWNvbmRhcnltZW51U2VsZWN0ZWRJdGVtfQogICAgICAgICAgICAuY29sbGFwc2VkPSR7dGhpcy5zZWNvbmRhcnltZW51Q29sbGFwc2VkfQogICAgICAgICAgICBAaXRlbS1zZWxlY3Q9JHtEPT50aGlzLmhhbmRsZVNlY29uZGFyeW1lbnVJdGVtU2VsZWN0KEQpfQogICAgICAgICAgICBAY29sbGFwc2UtY2hhbmdlPSR7RD0+dGhpcy5oYW5kbGVTZWNvbmRhcnltZW51Q29sbGFwc2VDaGFuZ2UoRCl9CiAgICAgICAgICA+PC9kZWVzLWFwcHVpLXNlY29uZGFyeW1lbnU+CiAgICAgICAgYDoiIn0KICAgICAgICA8ZGVlcy1hcHB1aS1tYWluY29udGVudAogICAgICAgICAgLnRhYnM9JHt0aGlzLm1haW5jb250ZW50VGFic30KICAgICAgICAgIC5zZWxlY3RlZFRhYj0ke3RoaXMubWFpbmNvbnRlbnRTZWxlY3RlZFRhYn0KICAgICAgICAgIC5zaG93VGFicz0ke3RoaXMubWFpbmNvbnRlbnRUYWJzVmlzaWJsZX0KICAgICAgICAgIC50YWJzQXV0b0hpZGU9JHt0aGlzLmNvbnRlbnRUYWJzQXV0b0hpZGV9CiAgICAgICAgICAudGFic0F1dG9IaWRlVGhyZXNob2xkPSR7dGhpcy5jb250ZW50VGFic0F1dG9IaWRlVGhyZXNob2xkfQogICAgICAgICAgLnRhYkFjdGlvbnNMZWZ0PSR7dGhpcy5jb250ZW50VGFiQWN0aW9uc0xlZnR9CiAgICAgICAgICAudGFiQWN0aW9uc1JpZ2h0PSR7dGhpcy5jb250ZW50VGFiQWN0aW9uc1JpZ2h0fQogICAgICAgICAgQHRhYi1zZWxlY3Q9JHtEPT50aGlzLmhhbmRsZUNvbnRlbnRUYWJTZWxlY3QoRCl9CiAgICAgICAgICBAdGFiLWNsb3NlPSR7RD0+dGhpcy5oYW5kbGVDb250ZW50VGFiQ2xvc2UoRCl9CiAgICAgICAgPgogICAgICAgICAgPGRpdiBjbGFzcz0idmlldy1jb250YWluZXIiPjwvZGl2PgogICAgICAgICAgPHNsb3QgbmFtZT0ibWFpbmNvbnRlbnQiPjwvc2xvdD4KICAgICAgICA8L2RlZXMtYXBwdWktbWFpbmNvbnRlbnQ+CiAgICAgICAgPGRlZXMtYXBwdWktYWN0aXZpdHlsb2cKICAgICAgICAgIGNsYXNzPSIke3RoaXMuYWN0aXZpdHlMb2dWaXNpYmxlPyJ2aXNpYmxlIjoiaGlkZGVuIn0iCiAgICAgICAgPjwvZGVlcy1hcHB1aS1hY3Rpdml0eWxvZz4KICAgICAgPC9kaXY+CiAgICAgICR7dGhpcy5ib3R0b21iYXJWaXNpYmxlP3dgCiAgICAgICAgPGRlZXMtYXBwdWktYm90dG9tYmFyPjwvZGVlcy1hcHB1aS1ib3R0b21iYXI+CiAgICAgIGA6IiJ9CiAgICBgfWFzeW5jIGZpcnN0VXBkYXRlZCgpe3RoaXMuYXBwYmFyPXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCJkZWVzLWFwcHVpLWFwcGJhciIpLHRoaXMubWFpbm1lbnU9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoImRlZXMtYXBwdWktbWFpbm1lbnUiKSx0aGlzLnNlY29uZGFyeW1lbnU9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoImRlZXMtYXBwdWktc2Vjb25kYXJ5bWVudSIpLHRoaXMubWFpbmNvbnRlbnQ9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoImRlZXMtYXBwdWktbWFpbmNvbnRlbnQiKSx0aGlzLmFjdGl2aXR5bG9nRWxlbWVudD10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiZGVlcy1hcHB1aS1hY3Rpdml0eWxvZyIpLHRoaXMuYm90dG9tYmFyRWxlbWVudD10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiZGVlcy1hcHB1aS1ib3R0b21iYXIiKSx0aGlzLmFjdGl2aXR5bG9nRWxlbWVudCYmdGhpcy5hY3Rpdml0eWxvZ0VsZW1lbnQuZW50cmllcyQuc3Vic2NyaWJlKEQ9Pnt0aGlzLmFjdGl2aXR5TG9nQ291bnQ9RC5sZW5ndGh9KSx0aGlzLnZpZXdSZWdpc3RyeS5zZXRBcHB1aVJlZih0aGlzKX1hc3luYyBkaXNjb25uZWN0ZWRDYWxsYmFjaygpe2F3YWl0IHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5yb3V0ZXJDbGVhbnVwJiYodGhpcy5yb3V0ZXJDbGVhbnVwKCksdGhpcy5yb3V0ZXJDbGVhbnVwPW51bGwpLHRoaXMudmlld0xpZmVjeWNsZSQuY29tcGxldGUoKSx0aGlzLnZpZXdDaGFuZ2VkJC5jb21wbGV0ZSgpfXNldEFwcEJhck1lbnVzKEQpe3RoaXMuYXBwYmFyTWVudUl0ZW1zPVsuLi5EXX11cGRhdGVBcHBCYXJNZW51KEQsVCl7dGhpcy5hcHBiYXJNZW51SXRlbXM9dGhpcy5hcHBiYXJNZW51SXRlbXMubWFwKEc9PiJuYW1lImluIEcmJkcubmFtZT09PUQ/ey4uLkcsLi4uVH06Ryl9c2V0QnJlYWRjcnVtYnMoRCl7QXJyYXkuaXNBcnJheShEKT90aGlzLmFwcGJhckJyZWFkY3J1bWJzPUQuam9pbih0aGlzLmFwcGJhckJyZWFkY3J1bWJTZXBhcmF0b3IpOnRoaXMuYXBwYmFyQnJlYWRjcnVtYnM9RH1zZXRVc2VyKEQpe3RoaXMuYXBwYmFyVXNlcj1EfXNldFByb2ZpbGVNZW51SXRlbXMoRCl7dGhpcy5hcHBiYXJQcm9maWxlTWVudUl0ZW1zPVsuLi5EXX1zZXRTZWFyY2hWaXNpYmxlKEQpe3RoaXMuYXBwYmFyU2hvd1NlYXJjaD1EfXNldFdpbmRvd0NvbnRyb2xzVmlzaWJsZShEKXt0aGlzLmFwcGJhclNob3dXaW5kb3dDb250cm9scz1EfW9uU2VhcmNoKEQpe3RoaXMuc2VhcmNoQ2FsbGJhY2s9RH1zZXRNYWluTWVudShEKXtELmxvZ29JY29uIT09dm9pZCAwJiYodGhpcy5tYWlubWVudUxvZ29JY29uPUQubG9nb0ljb24pLEQubG9nb1RleHQhPT12b2lkIDAmJih0aGlzLm1haW5tZW51TG9nb1RleHQ9RC5sb2dvVGV4dCksRC5ncm91cHMhPT12b2lkIDAmJih0aGlzLm1haW5tZW51R3JvdXBzPVsuLi5ELmdyb3Vwc10pLEQuYm90dG9tVGFicyE9PXZvaWQgMCYmKHRoaXMubWFpbm1lbnVCb3R0b21UYWJzPVsuLi5ELmJvdHRvbVRhYnNdKX11cGRhdGVNYWluTWVudUdyb3VwKEQsVCl7dGhpcy5tYWlubWVudUdyb3Vwcz10aGlzLm1haW5tZW51R3JvdXBzLm1hcChHPT5HLm5hbWU9PT1EP3suLi5HLC4uLlR9OkcpfWFkZE1haW5NZW51SXRlbShELFQpe3RoaXMubWFpbm1lbnVHcm91cHM9dGhpcy5tYWlubWVudUdyb3Vwcy5tYXAoRz0+Ry5uYW1lPT09RD97Li4uRyxpdGVtczpbLi4uRy5pdGVtc3x8W10sVF19OkcpfXJlbW92ZU1haW5NZW51SXRlbShELFQpe3RoaXMubWFpbm1lbnVHcm91cHM9dGhpcy5tYWlubWVudUdyb3Vwcy5tYXAoRz0+Ry5uYW1lPT09RD97Li4uRyxpdGVtczooRy5pdGVtc3x8W10pLmZpbHRlcigkZT0+JGUua2V5IT09VCl9OkcpfXNldE1haW5NZW51U2VsZWN0aW9uKEQpe2ZvcihsZXQgRyBvZiB0aGlzLm1haW5tZW51R3JvdXBzKXtsZXQgJGU9Ry5pdGVtcz8uZmluZChQZT0+UGUua2V5PT09RCk7aWYoJGUpe3RoaXMubWFpbm1lbnVTZWxlY3RlZFRhYj0kZTtyZXR1cm59fWxldCBUPXRoaXMubWFpbm1lbnVCb3R0b21UYWJzLmZpbmQoRz0+Ry5rZXk9PT1EKTtUJiYodGhpcy5tYWlubWVudVNlbGVjdGVkVGFiPVQpfXNldE1haW5NZW51Q29sbGFwc2VkKEQpe3RoaXMubWFpbm1lbnVDb2xsYXBzZWQ9RH1zZXRNYWluTWVudVZpc2libGUoRCl7dGhpcy5tYWlubWVudVZpc2libGU9RH1zZXRTZWNvbmRhcnlNZW51Q29sbGFwc2VkKEQpe3RoaXMuc2Vjb25kYXJ5bWVudUNvbGxhcHNlZD1EfXNldFNlY29uZGFyeU1lbnVWaXNpYmxlKEQpe3RoaXMuc2Vjb25kYXJ5bWVudVZpc2libGU9RH1zZXRDb250ZW50VGFic1Zpc2libGUoRCl7dGhpcy5tYWluY29udGVudFRhYnNWaXNpYmxlPUR9c2V0Q29udGVudFRhYnNBdXRvSGlkZShELFQ9MCl7dGhpcy5jb250ZW50VGFic0F1dG9IaWRlPUQsdGhpcy5jb250ZW50VGFic0F1dG9IaWRlVGhyZXNob2xkPVR9c2V0TWFpbk1lbnVCYWRnZShELFQpe3RoaXMubWFpbm1lbnVHcm91cHM9dGhpcy5tYWlubWVudUdyb3Vwcy5tYXAoRz0+KHsuLi5HLGl0ZW1zOihHLml0ZW1zfHxbXSkubWFwKCRlPT4kZS5rZXk9PT1EP3suLi4kZSxiYWRnZTpUfTokZSl9KSksdGhpcy5tYWlubWVudUJvdHRvbVRhYnM9dGhpcy5tYWlubWVudUJvdHRvbVRhYnMubWFwKEc9Pkcua2V5PT09RD97Li4uRyxiYWRnZTpUfTpHKX1jbGVhck1haW5NZW51QmFkZ2UoRCl7dGhpcy5tYWlubWVudUdyb3Vwcz10aGlzLm1haW5tZW51R3JvdXBzLm1hcChUPT4oey4uLlQsaXRlbXM6KFQuaXRlbXN8fFtdKS5tYXAoRz0+e2lmKEcua2V5PT09RCl7bGV0e2JhZGdlOiRlLC4uLlBlfT1HO3JldHVybiBQZX1yZXR1cm4gR30pfSkpLHRoaXMubWFpbm1lbnVCb3R0b21UYWJzPXRoaXMubWFpbm1lbnVCb3R0b21UYWJzLm1hcChUPT57aWYoVC5rZXk9PT1EKXtsZXR7YmFkZ2U6RywuLi4kZX09VDtyZXR1cm4gJGV9cmV0dXJuIFR9KX1zZXRTZWNvbmRhcnlNZW51KEQpe0QuaGVhZGluZyE9PXZvaWQgMCYmKHRoaXMuc2Vjb25kYXJ5bWVudUhlYWRpbmc9RC5oZWFkaW5nKSx0aGlzLnNlY29uZGFyeW1lbnVHcm91cHM9Wy4uLkQuZ3JvdXBzXX11cGRhdGVTZWNvbmRhcnlNZW51R3JvdXAoRCxUKXt0aGlzLnNlY29uZGFyeW1lbnVHcm91cHM9dGhpcy5zZWNvbmRhcnltZW51R3JvdXBzLm1hcChHPT5HLm5hbWU9PT1EP3suLi5HLC4uLlR9OkcpfWFkZFNlY29uZGFyeU1lbnVJdGVtKEQsVCl7dGhpcy5zZWNvbmRhcnltZW51R3JvdXBzPXRoaXMuc2Vjb25kYXJ5bWVudUdyb3Vwcy5tYXAoRz0+Ry5uYW1lPT09RD97Li4uRyxpdGVtczpbLi4uRy5pdGVtcyxUXX06Ryl9c2V0U2Vjb25kYXJ5TWVudVNlbGVjdGlvbihEKXtmb3IobGV0IFQgb2YgdGhpcy5zZWNvbmRhcnltZW51R3JvdXBzKXtsZXQgRz1ULml0ZW1zLmZpbmQoJGU9PiJrZXkiaW4gJGUmJiRlLmtleT09PUQpO2lmKEcmJighKCJ0eXBlImluIEcpfHxHLnR5cGU9PT0idGFiInx8Ry50eXBlPT09dm9pZCAwKSl7dGhpcy5zZWNvbmRhcnltZW51U2VsZWN0ZWRJdGVtPUc7cmV0dXJufX19Y2xlYXJTZWNvbmRhcnlNZW51KCl7dGhpcy5zZWNvbmRhcnltZW51SGVhZGluZz0iIix0aGlzLnNlY29uZGFyeW1lbnVHcm91cHM9W10sdGhpcy5zZWNvbmRhcnltZW51U2VsZWN0ZWRJdGVtPXZvaWQgMH1zZXRDb250ZW50VGFicyhEKXt0aGlzLm1haW5jb250ZW50VGFicz1bLi4uRF0sRC5sZW5ndGg+MCYmIXRoaXMubWFpbmNvbnRlbnRTZWxlY3RlZFRhYiYmKHRoaXMubWFpbmNvbnRlbnRTZWxlY3RlZFRhYj1EWzBdKX1hZGRDb250ZW50VGFiKEQpe3RoaXMubWFpbmNvbnRlbnRUYWJzPVsuLi50aGlzLm1haW5jb250ZW50VGFicyxEXX1yZW1vdmVDb250ZW50VGFiKEQpe3RoaXMubWFpbmNvbnRlbnRUYWJzPXRoaXMubWFpbmNvbnRlbnRUYWJzLmZpbHRlcihUPT5ULmtleSE9PUQpLHRoaXMubWFpbmNvbnRlbnRTZWxlY3RlZFRhYj8ua2V5PT09RCYmKHRoaXMubWFpbmNvbnRlbnRTZWxlY3RlZFRhYj10aGlzLm1haW5jb250ZW50VGFic1swXSl9c2VsZWN0Q29udGVudFRhYihEKXtsZXQgVD10aGlzLm1haW5jb250ZW50VGFicy5maW5kKEc9Pkcua2V5PT09RCk7VCYmKHRoaXMubWFpbmNvbnRlbnRTZWxlY3RlZFRhYj1UKX1nZXRTZWxlY3RlZENvbnRlbnRUYWIoKXtyZXR1cm4gdGhpcy5tYWluY29udGVudFNlbGVjdGVkVGFifXNldENvbnRlbnRUYWJBY3Rpb25zTGVmdChEKXt0aGlzLmNvbnRlbnRUYWJBY3Rpb25zTGVmdD1bLi4uRF19c2V0Q29udGVudFRhYkFjdGlvbnNSaWdodChEKXt0aGlzLmNvbnRlbnRUYWJBY3Rpb25zUmlnaHQ9Wy4uLkRdfWdldCBhY3Rpdml0eUxvZygpe3JldHVybiB0aGlzLmFjdGl2aXR5bG9nRWxlbWVudD97YWRkOmkoRD0+dGhpcy5hY3Rpdml0eWxvZ0VsZW1lbnQuYWRkKEQpLCJhZGQiKSxhZGRNYW55OmkoRD0+dGhpcy5hY3Rpdml0eWxvZ0VsZW1lbnQuYWRkTWFueShEKSwiYWRkTWFueSIpLGNsZWFyOmkoKCk9PnRoaXMuYWN0aXZpdHlsb2dFbGVtZW50LmNsZWFyKCksImNsZWFyIiksZ2V0RW50cmllczppKCgpPT50aGlzLmFjdGl2aXR5bG9nRWxlbWVudC5nZXRFbnRyaWVzKCksImdldEVudHJpZXMiKSxmaWx0ZXI6aShEPT50aGlzLmFjdGl2aXR5bG9nRWxlbWVudC5maWx0ZXIoRCksImZpbHRlciIpLHNlYXJjaDppKEQ9PnRoaXMuYWN0aXZpdHlsb2dFbGVtZW50LnNlYXJjaChEKSwic2VhcmNoIil9OnthZGQ6aShEPT57dGhpcy51cGRhdGVDb21wbGV0ZS50aGVuKCgpPT50aGlzLmFjdGl2aXR5bG9nRWxlbWVudD8uYWRkKEQpKX0sImFkZCIpLGFkZE1hbnk6aShEPT57dGhpcy51cGRhdGVDb21wbGV0ZS50aGVuKCgpPT50aGlzLmFjdGl2aXR5bG9nRWxlbWVudD8uYWRkTWFueShEKSl9LCJhZGRNYW55IiksY2xlYXI6aSgoKT0+e3RoaXMudXBkYXRlQ29tcGxldGUudGhlbigoKT0+dGhpcy5hY3Rpdml0eWxvZ0VsZW1lbnQ/LmNsZWFyKCkpfSwiY2xlYXIiKSxnZXRFbnRyaWVzOmkoKCk9PnRoaXMuYWN0aXZpdHlsb2dFbGVtZW50Py5nZXRFbnRyaWVzKCl8fFtdLCJnZXRFbnRyaWVzIiksZmlsdGVyOmkoRD0+dGhpcy5hY3Rpdml0eWxvZ0VsZW1lbnQ/LmZpbHRlcihEKXx8W10sImZpbHRlciIpLHNlYXJjaDppKEQ9PnRoaXMuYWN0aXZpdHlsb2dFbGVtZW50Py5zZWFyY2goRCl8fFtdLCJzZWFyY2giKX19c2V0QWN0aXZpdHlMb2dWaXNpYmxlKEQpe3RoaXMuYWN0aXZpdHlMb2dWaXNpYmxlPUR9dG9nZ2xlQWN0aXZpdHlMb2coKXt0aGlzLmFjdGl2aXR5TG9nVmlzaWJsZT0hdGhpcy5hY3Rpdml0eUxvZ1Zpc2libGV9Z2V0QWN0aXZpdHlMb2dWaXNpYmxlKCl7cmV0dXJuIHRoaXMuYWN0aXZpdHlMb2dWaXNpYmxlfWdldCBib3R0b21CYXIoKXtyZXR1cm4gdGhpcy5ib3R0b21iYXJFbGVtZW50P3thZGRXaWRnZXQ6aShEPT50aGlzLmJvdHRvbWJhckVsZW1lbnQuYWRkV2lkZ2V0KEQpLCJhZGRXaWRnZXQiKSx1cGRhdGVXaWRnZXQ6aSgoRCxUKT0+dGhpcy5ib3R0b21iYXJFbGVtZW50LnVwZGF0ZVdpZGdldChELFQpLCJ1cGRhdGVXaWRnZXQiKSxyZW1vdmVXaWRnZXQ6aShEPT50aGlzLmJvdHRvbWJhckVsZW1lbnQucmVtb3ZlV2lkZ2V0KEQpLCJyZW1vdmVXaWRnZXQiKSxnZXRXaWRnZXQ6aShEPT50aGlzLmJvdHRvbWJhckVsZW1lbnQuZ2V0V2lkZ2V0KEQpLCJnZXRXaWRnZXQiKSxjbGVhcldpZGdldHM6aSgoKT0+dGhpcy5ib3R0b21iYXJFbGVtZW50LmNsZWFyV2lkZ2V0cygpLCJjbGVhcldpZGdldHMiKSxhZGRBY3Rpb246aShEPT50aGlzLmJvdHRvbWJhckVsZW1lbnQuYWRkQWN0aW9uKEQpLCJhZGRBY3Rpb24iKSxyZW1vdmVBY3Rpb246aShEPT50aGlzLmJvdHRvbWJhckVsZW1lbnQucmVtb3ZlQWN0aW9uKEQpLCJyZW1vdmVBY3Rpb24iKSxjbGVhckFjdGlvbnM6aSgoKT0+dGhpcy5ib3R0b21iYXJFbGVtZW50LmNsZWFyQWN0aW9ucygpLCJjbGVhckFjdGlvbnMiKX06e2FkZFdpZGdldDppKEQ9Pnt0aGlzLnVwZGF0ZUNvbXBsZXRlLnRoZW4oKCk9PnRoaXMuYm90dG9tYmFyRWxlbWVudD8uYWRkV2lkZ2V0KEQpKX0sImFkZFdpZGdldCIpLHVwZGF0ZVdpZGdldDppKChELFQpPT57dGhpcy51cGRhdGVDb21wbGV0ZS50aGVuKCgpPT50aGlzLmJvdHRvbWJhckVsZW1lbnQ/LnVwZGF0ZVdpZGdldChELFQpKX0sInVwZGF0ZVdpZGdldCIpLHJlbW92ZVdpZGdldDppKEQ9Pnt0aGlzLnVwZGF0ZUNvbXBsZXRlLnRoZW4oKCk9PnRoaXMuYm90dG9tYmFyRWxlbWVudD8ucmVtb3ZlV2lkZ2V0KEQpKX0sInJlbW92ZVdpZGdldCIpLGdldFdpZGdldDppKEQ9PnRoaXMuYm90dG9tYmFyRWxlbWVudD8uZ2V0V2lkZ2V0KEQpLCJnZXRXaWRnZXQiKSxjbGVhcldpZGdldHM6aSgoKT0+e3RoaXMudXBkYXRlQ29tcGxldGUudGhlbigoKT0+dGhpcy5ib3R0b21iYXJFbGVtZW50Py5jbGVhcldpZGdldHMoKSl9LCJjbGVhcldpZGdldHMiKSxhZGRBY3Rpb246aShEPT57dGhpcy51cGRhdGVDb21wbGV0ZS50aGVuKCgpPT50aGlzLmJvdHRvbWJhckVsZW1lbnQ/LmFkZEFjdGlvbihEKSl9LCJhZGRBY3Rpb24iKSxyZW1vdmVBY3Rpb246aShEPT57dGhpcy51cGRhdGVDb21wbGV0ZS50aGVuKCgpPT50aGlzLmJvdHRvbWJhckVsZW1lbnQ/LnJlbW92ZUFjdGlvbihEKSl9LCJyZW1vdmVBY3Rpb24iKSxjbGVhckFjdGlvbnM6aSgoKT0+e3RoaXMudXBkYXRlQ29tcGxldGUudGhlbigoKT0+dGhpcy5ib3R0b21iYXJFbGVtZW50Py5jbGVhckFjdGlvbnMoKSl9LCJjbGVhckFjdGlvbnMiKX19c2V0Qm90dG9tQmFyVmlzaWJsZShEKXt0aGlzLmJvdHRvbWJhclZpc2libGU9RCxEP3RoaXMucmVtb3ZlQXR0cmlidXRlKCJib3R0b21iYXItaGlkZGVuIik6dGhpcy5zZXRBdHRyaWJ1dGUoImJvdHRvbWJhci1oaWRkZW4iLCIiKX1nZXRCb3R0b21CYXJWaXNpYmxlKCl7cmV0dXJuIHRoaXMuYm90dG9tYmFyVmlzaWJsZX1hc3luYyBuYXZpZ2F0ZVRvVmlldyhELFQpe2xldCBHPXRoaXMudmlld1JlZ2lzdHJ5LmdldChEKTtpZighRylyZXR1cm4gY29uc29sZS53YXJuKGBDYW5ub3QgbmF2aWdhdGUgdG8gdW5rbm93biB2aWV3OiAke0R9YCksITE7bGV0ICRlPWF3YWl0IHRoaXMudmlld1JlZ2lzdHJ5LmNhbkxlYXZlQ3VycmVudFZpZXcoKTtpZigkZSE9PSEwKWlmKHR5cGVvZiAkZT09InN0cmluZyIpe2lmKCF3aW5kb3cuY29uZmlybSgkZSkpcmV0dXJuITF9ZWxzZSByZXR1cm4hMTt0aGlzLnZpZXdMaWZlY3ljbGUkLm5leHQoe3R5cGU6ImxvYWRpbmciLHZpZXdJZDpEfSk7dHJ5e2F3YWl0IHRoaXMubG9hZFZpZXcoRyxUKTtsZXQgUGU9Ry5yb3V0ZXx8RDtpZihUKWZvcihsZXRbVmUsVWVdb2YgT2JqZWN0LmVudHJpZXMoVCkpUGU9UGUucmVwbGFjZShgOiR7VmV9YCxVZSk7bGV0IEZlPWAjJHtQZX1gO3JldHVybiB3aW5kb3cubG9jYXRpb24uaGFzaCE9PUZlJiZ3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoe3ZpZXdJZDpEfSwiIixGZSksITB9Y2F0Y2goUGUpe3JldHVybiB0aGlzLnZpZXdMaWZlY3ljbGUkLm5leHQoe3R5cGU6ImxvYWRFcnJvciIsdmlld0lkOkQsZXJyb3I6UGV9KSwhMX19Z2V0Q3VycmVudFZpZXcoKXtyZXR1cm4gdGhpcy5jdXJyZW50Vmlld31nZXRWaWV3UmVnaXN0cnkoKXtyZXR1cm4gdGhpcy52aWV3UmVnaXN0cnl9Y29uZmlndXJlKEQpe0Qudmlld3MmJih0aGlzLnZpZXdSZWdpc3RyeS5jbGVhcigpLHRoaXMudmlld1JlZ2lzdHJ5LnJlZ2lzdGVyQWxsKEQudmlld3MpKSxELmJyYW5kaW5nJiYodGhpcy5tYWlubWVudUxvZ29JY29uPUQuYnJhbmRpbmcubG9nb0ljb258fCIiLHRoaXMubWFpbm1lbnVMb2dvVGV4dD1ELmJyYW5kaW5nLmxvZ29UZXh0fHwiIiksRC5hcHBCYXImJih0aGlzLmFwcGJhck1lbnVJdGVtcz1ELmFwcEJhci5tZW51SXRlbXN8fFtdLHRoaXMuYXBwYmFyQnJlYWRjcnVtYnM9RC5hcHBCYXIuYnJlYWRjcnVtYnN8fCIiLHRoaXMuYXBwYmFyQnJlYWRjcnVtYlNlcGFyYXRvcj1ELmFwcEJhci5icmVhZGNydW1iU2VwYXJhdG9yfHwiID4gIix0aGlzLmFwcGJhclNob3dXaW5kb3dDb250cm9scz1ELmFwcEJhci5zaG93V2luZG93Q29udHJvbHM/PyEwLHRoaXMuYXBwYmFyU2hvd1NlYXJjaD1ELmFwcEJhci5zaG93U2VhcmNoPz8hMSx0aGlzLmFwcGJhclVzZXI9RC5hcHBCYXIudXNlcix0aGlzLmFwcGJhclByb2ZpbGVNZW51SXRlbXM9RC5hcHBCYXIucHJvZmlsZU1lbnVJdGVtc3x8W10pLEQubWFpbk1lbnUmJihELm1haW5NZW51LnNlY3Rpb25zP3RoaXMubWFpbm1lbnVHcm91cHM9dGhpcy5idWlsZE1haW5NZW51RnJvbVNlY3Rpb25zKEQpOkQubWFpbk1lbnUuZ3JvdXBzJiYodGhpcy5tYWlubWVudUdyb3Vwcz1ELm1haW5NZW51Lmdyb3VwcyksRC5tYWluTWVudS5sb2dvSWNvbiYmKHRoaXMubWFpbm1lbnVMb2dvSWNvbj1ELm1haW5NZW51LmxvZ29JY29uKSxELm1haW5NZW51LmxvZ29UZXh0JiYodGhpcy5tYWlubWVudUxvZ29UZXh0PUQubWFpbk1lbnUubG9nb1RleHQpLEQubWFpbk1lbnUuYm90dG9tVGFicz90aGlzLm1haW5tZW51Qm90dG9tVGFicz1ELm1haW5NZW51LmJvdHRvbVRhYnM6RC5tYWluTWVudS5ib3R0b21JdGVtcyYmKHRoaXMubWFpbm1lbnVCb3R0b21UYWJzPXRoaXMuYnVpbGRCb3R0b21UYWJzRnJvbUl0ZW1zKEQubWFpbk1lbnUuYm90dG9tSXRlbXMpKSksRC5ib3R0b21CYXImJih0aGlzLnNldEJvdHRvbUJhclZpc2libGUoRC5ib3R0b21CYXIudmlzaWJsZT8/ITApLEQuYm90dG9tQmFyLndpZGdldHMmJkQuYm90dG9tQmFyLndpZGdldHMuZm9yRWFjaChUPT57dGhpcy5ib3R0b21CYXIuYWRkV2lkZ2V0KFQpfSksRC5ib3R0b21CYXIuYWN0aW9ucyYmRC5ib3R0b21CYXIuYWN0aW9ucy5mb3JFYWNoKFQ9Pnt0aGlzLmJvdHRvbUJhci5hZGRBY3Rpb24oVCl9KSksdGhpcy5zZXR1cFJvdXRlckludGVncmF0aW9uKEQpLEQub25WaWV3Q2hhbmdlJiZ0aGlzLnZpZXdDaGFuZ2VkJC5zdWJzY3JpYmUoVD0+e0Qub25WaWV3Q2hhbmdlKFQudmlld0lkLFQudmlldyl9KSxELm9uU2VhcmNoJiYodGhpcy5zZWFyY2hDYWxsYmFjaz1ELm9uU2VhcmNoKSxELmRlZmF1bHRWaWV3JiZ0aGlzLm5hdmlnYXRlVG9WaWV3KEQuZGVmYXVsdFZpZXcpfXNldHVwUm91dGVySW50ZWdyYXRpb24oRCl7bGV0IFQ9aSgoKT0+e2xldCAkZT13aW5kb3cubG9jYXRpb24uaGFzaC5zbGljZSgxKTtpZighJGUpcmV0dXJuO2xldCBQZT10aGlzLnZpZXdSZWdpc3RyeS5maW5kQnlSb3V0ZSgkZSk7UGUmJnRoaXMubmF2aWdhdGVUb1ZpZXcoUGUudmlldy5pZCxQZS5wYXJhbXMpfSwiaGFuZGxlSGFzaENoYW5nZSIpO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJoYXNoY2hhbmdlIixUKSx0aGlzLnJvdXRlckNsZWFudXA9KCk9Pnt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaGFzaGNoYW5nZSIsVCl9O2xldCBHPXdpbmRvdy5sb2NhdGlvbi5oYXNoLnNsaWNlKDEpO2lmKEcpe2xldCAkZT10aGlzLnZpZXdSZWdpc3RyeS5maW5kQnlSb3V0ZShHKTskZSYmc2V0VGltZW91dCgoKT0+dGhpcy5uYXZpZ2F0ZVRvVmlldygkZS52aWV3LmlkLCRlLnBhcmFtcyksMCl9fWJ1aWxkTWFpbk1lbnVGcm9tU2VjdGlvbnMoRCl7cmV0dXJuIEQubWFpbk1lbnU/LnNlY3Rpb25zP0QubWFpbk1lbnUuc2VjdGlvbnMubWFwKFQ9Pih7bmFtZTpULm5hbWV8fCIiLGl0ZW1zOlQudmlld3MubWFwKEc9PntsZXQgJGU9dGhpcy52aWV3UmVnaXN0cnkuZ2V0KEcpO3JldHVybiAkZT97a2V5OiRlLmlkLGljb25OYW1lOiRlLmljb25OYW1lLGFjdGlvbjppKCgpPT50aGlzLm5hdmlnYXRlVG9WaWV3KEcpLCJhY3Rpb24iKSxiYWRnZTokZS5iYWRnZX06KGNvbnNvbGUud2FybihgVmlldyAiJHtHfSIgbm90IGZvdW5kIGluIHJlZ2lzdHJ5YCksbnVsbCl9KS5maWx0ZXIoQm9vbGVhbil9KSk6W119YnVpbGRCb3R0b21UYWJzRnJvbUl0ZW1zKEQpe3JldHVybiBELm1hcChUPT57bGV0IEc9dGhpcy52aWV3UmVnaXN0cnkuZ2V0KFQpO3JldHVybiBHP3trZXk6Ry5pZCxpY29uTmFtZTpHLmljb25OYW1lLGFjdGlvbjppKCgpPT50aGlzLm5hdmlnYXRlVG9WaWV3KFQpLCJhY3Rpb24iKX06KGNvbnNvbGUud2FybihgVmlldyAiJHtUfSIgbm90IGZvdW5kIGluIHJlZ2lzdHJ5YCksbnVsbCl9KS5maWx0ZXIoQm9vbGVhbil9YXN5bmMgbG9hZFZpZXcoRCxUKXtsZXQgRz10aGlzLmN1cnJlbnRWaWV3O3RoaXMuY3VycmVudFZpZXc9RDtsZXQgJGU9dGhpcy5tYWluY29udGVudD8ucXVlcnlTZWxlY3RvcigiLnZpZXctY29udGFpbmVyIil8fHRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLnZpZXctY29udGFpbmVyIik7aWYoJGUpe2xldCBGZT1hd2FpdCB0aGlzLnZpZXdSZWdpc3RyeS5hY3RpdmF0ZVZpZXcoRC5pZCwkZSxUKTtGZSYmdGhpcy52aWV3TGlmZWN5Y2xlJC5uZXh0KHt0eXBlOiJhY3RpdmF0ZWQiLHZpZXdJZDpELmlkLGVsZW1lbnQ6RmUscGFyYW1zOlR9KX1ELnNlY29uZGFyeU1lbnUmJih0aGlzLnNlY29uZGFyeW1lbnVHcm91cHM9RC5zZWNvbmRhcnlNZW51LHRoaXMuc2Vjb25kYXJ5bWVudUhlYWRpbmc9RC5uYW1lKSxELmNvbnRlbnRUYWJzJiYodGhpcy5tYWluY29udGVudFRhYnM9RC5jb250ZW50VGFicyksdGhpcy5zZXRNYWluTWVudVNlbGVjdGlvbihELmlkKTtsZXQgUGU9e3ZpZXdJZDpELmlkLHZpZXc6RCxwcmV2aW91c1ZpZXc6RyxwYXJhbXM6VH07dGhpcy52aWV3Q2hhbmdlZCQubmV4dChQZSksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgidmlldy1jaGFuZ2UiLHtkZXRhaWw6UGUsYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1oYW5kbGVBcHBiYXJNZW51U2VsZWN0KEQpe3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImFwcGJhci1tZW51LXNlbGVjdCIse2RldGFpbDpELmRldGFpbCxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZUFwcGJhckJyZWFkY3J1bWJOYXZpZ2F0ZShEKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJhcHBiYXItYnJlYWRjcnVtYi1uYXZpZ2F0ZSIse2RldGFpbDpELmRldGFpbCxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZUFwcGJhclNlYXJjaENsaWNrKCl7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiYXBwYmFyLXNlYXJjaC1jbGljayIse2J1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9aGFuZGxlQXBwYmFyU2VhcmNoUXVlcnkoRCl7dGhpcy5zZWFyY2hDYWxsYmFjayYmdGhpcy5zZWFyY2hDYWxsYmFjayhELmRldGFpbC5xdWVyeSksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgic2VhcmNoLXF1ZXJ5Iix7ZGV0YWlsOkQuZGV0YWlsLGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9aGFuZGxlQXBwYmFyVXNlck1lbnVPcGVuKCl7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiYXBwYmFyLXVzZXItbWVudS1vcGVuIix7YnViYmxlczohMCxjb21wb3NlZDohMH0pKX1oYW5kbGVBcHBiYXJQcm9maWxlTWVudVNlbGVjdChEKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJhcHBiYXItcHJvZmlsZS1tZW51LXNlbGVjdCIse2RldGFpbDpELmRldGFpbCxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZU1haW5tZW51VGFiU2VsZWN0KEQpe3RoaXMubWFpbm1lbnVTZWxlY3RlZFRhYj1ELmRldGFpbC50YWIsdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgibWFpbm1lbnUtdGFiLXNlbGVjdCIse2RldGFpbDpELmRldGFpbCxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZVNlY29uZGFyeW1lbnVJdGVtU2VsZWN0KEQpe3RoaXMuc2Vjb25kYXJ5bWVudVNlbGVjdGVkSXRlbT1ELmRldGFpbC5pdGVtLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInNlY29uZGFyeW1lbnUtaXRlbS1zZWxlY3QiLHtkZXRhaWw6RC5kZXRhaWwsYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1oYW5kbGVNYWlubWVudUNvbGxhcHNlQ2hhbmdlKEQpe3RoaXMubWFpbm1lbnVDb2xsYXBzZWQ9RC5kZXRhaWwuY29sbGFwc2VkLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoIm1haW5tZW51LWNvbGxhcHNlLWNoYW5nZSIse2RldGFpbDpELmRldGFpbCxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZVNlY29uZGFyeW1lbnVDb2xsYXBzZUNoYW5nZShEKXt0aGlzLnNlY29uZGFyeW1lbnVDb2xsYXBzZWQ9RC5kZXRhaWwuY29sbGFwc2VkLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInNlY29uZGFyeW1lbnUtY29sbGFwc2UtY2hhbmdlIix7ZGV0YWlsOkQuZGV0YWlsLGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9aGFuZGxlQ29udGVudFRhYlNlbGVjdChEKXt0aGlzLm1haW5jb250ZW50U2VsZWN0ZWRUYWI9RC5kZXRhaWwudGFiLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNvbnRlbnQtdGFiLXNlbGVjdCIse2RldGFpbDpELmRldGFpbCxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWhhbmRsZUNvbnRlbnRUYWJDbG9zZShEKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjb250ZW50LXRhYi1jbG9zZSIse2RldGFpbDpELmRldGFpbCxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfXN0YXRpY3tUdChhLHQpfX07cmV0dXJuIHAxPWF9KSgpfSk7dmFyIFl2YT1nKCgpPT57S3ZhKCk7am50KCl9KTt2YXIgWnZhPWcoKCk9PntHbnQoKX0pO3ZhciBYdmE9ZygoKT0+e1ZudCgpfSk7dmFyIFF2YT1nKCgpPT57VW50KCl9KTt2YXIgSnZhPWcoKCk9PntMb3QoKX0pO3ZhciBleGE9ZygoKT0+e1dudCgpfSk7dmFyIHQyZSxhNyxoZXMsdHhhPWcoKCk9Pnt2bygpO0duKCk7RXIoKTtwZSgpO3YyKCk7R2EoKTtodCgpO3QyZT1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sYTc9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LGhlcz0oKCk9PntsZXQgcz1bbmUoImRlZXMtbW9iaWxlbmF2aWdhdGlvbiIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdO3ZhciB4PWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzTW9iaWxlbmF2aWdhdGlvbiIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBtPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6U3RyaW5nfSldLHA9W0woe3R5cGU6QXJyYXl9KV0sYz1bWSgpXSx0MmUodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJoZWFkaW5nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGY9PiJoZWFkaW5nImluIGYsImhhcyIpLGdldDppKGY9PmYuaGVhZGluZywiZ2V0Iiksc2V0OmkoKGYseSk9PntmLmhlYWRpbmc9eX0sInNldCIpfSxtZXRhZGF0YTptfSxvLGwpLHQyZSh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1lbnVJdGVtcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShmPT4ibWVudUl0ZW1zImluIGYsImhhcyIpLGdldDppKGY9PmYubWVudUl0ZW1zLCJnZXQiKSxzZXQ6aSgoZix5KT0+e2YubWVudUl0ZW1zPXl9LCJzZXQiKX0sbWV0YWRhdGE6bX0sZCx1KSx0MmUodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtb2JpbGVOYXZaSW5kZXgiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+Im1vYmlsZU5hdlpJbmRleCJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLm1vYmlsZU5hdlpJbmRleCwiZ2V0Iiksc2V0OmkoKGYseSk9PntmLm1vYmlsZU5hdlpJbmRleD15fSwic2V0Iil9LG1ldGFkYXRhOm19LGIsdiksdDJlKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOm19LG51bGwsdCkseD1hPWUudmFsdWUsbSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTptfSl9c3RhdGljIGRlbW9Hcm91cHM9WyJBcHAgVUkiXTtzdGF0aWMgZGVtbz1pKCgpPT53YAogICAgPGRlZXMtYnV0dG9uIEBjbGljaz0keygpPT57eC5jcmVhdGVBbmRTaG93KFt7bmFtZToiRGFzaGJvYXJkIixpY29uTmFtZToibHVjaWRlOmxheW91dC1kYXNoYm9hcmQiLGFjdGlvbjppKGFzeW5jIG09Pihjb25zb2xlLmxvZygiTmF2aWdhdGUgdG8gZGFzaGJvYXJkIiksbnVsbCksImFjdGlvbiIpfSx7bmFtZToiUHJvZmlsZSIsaWNvbk5hbWU6Imx1Y2lkZTp1c2VyIixhY3Rpb246aShhc3luYyBtPT4oY29uc29sZS5sb2coIk5hdmlnYXRlIHRvIHByb2ZpbGUiKSxudWxsKSwiYWN0aW9uIil9LHtuYW1lOiJTZXR0aW5ncyIsaWNvbk5hbWU6Imx1Y2lkZTpzZXR0aW5ncyIsYWN0aW9uOmkoYXN5bmMgbT0+KGNvbnNvbGUubG9nKCJOYXZpZ2F0ZSB0byBzZXR0aW5ncyIpLG51bGwpLCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJIZWxwIixpY29uTmFtZToibHVjaWRlOmhlbHAtY2lyY2xlIixhY3Rpb246aShhc3luYyBtPT4oY29uc29sZS5sb2coIlNob3cgaGVscCIpLG51bGwpLCJhY3Rpb24iKX0se25hbWU6IlNpZ24gT3V0IixpY29uTmFtZToibHVjaWRlOmxvZy1vdXQiLGFjdGlvbjppKGFzeW5jIG09Pihjb25zb2xlLmxvZygiU2lnbiBvdXQiKSxudWxsKSwiYWN0aW9uIil9XSl9fT5PcGVuIE1vYmlsZSBOYXZpZ2F0aW9uPC9kZWVzLWJ1dHRvbj4KICBgLCJkZW1vIik7c3RhdGljIHNpbmdsZXRvblJlZjtzdGF0aWMgYXN5bmMgY3JlYXRlQW5kU2hvdyhtKXtyZXR1cm4gdGhpcy5zaW5nbGV0b25SZWZ8fCh0aGlzLnNpbmdsZXRvblJlZj1uZXcgeCxkb2N1bWVudC5ib2R5LmFwcGVuZCh0aGlzLnNpbmdsZXRvblJlZiksYXdhaXQgdGhpcy5zaW5nbGV0b25SZWYuaW5pdCgpKSx0aGlzLnNpbmdsZXRvblJlZi5tZW51SXRlbXM9bSxhd2FpdCB0aGlzLnNpbmdsZXRvblJlZi5yZWFkeURlZmVycmVkLnByb21pc2UsdGhpcy5zaW5nbGV0b25SZWYuc2hvdygpLHRoaXMuc2luZ2xldG9uUmVmfSNlPWE3KHRoaXMsbywiTWVudSIpO2dldCBoZWFkaW5nKCl7cmV0dXJuIHRoaXMuI2V9c2V0IGhlYWRpbmcobSl7dGhpcy4jZT1tfSN0PShhNyh0aGlzLGwpLGE3KHRoaXMsZCxbXSkpO2dldCBtZW51SXRlbXMoKXtyZXR1cm4gdGhpcy4jdH1zZXQgbWVudUl0ZW1zKG0pe3RoaXMuI3Q9bX0jYT0oYTcodGhpcyx1KSxhNyh0aGlzLGIsMWUzKSk7Z2V0IG1vYmlsZU5hdlpJbmRleCgpe3JldHVybiB0aGlzLiNhfXNldCBtb2JpbGVOYXZaSW5kZXgobSl7dGhpcy4jYT1tfXJlYWR5RGVmZXJyZWQ9KGE3KHRoaXMsdiksbHQucGx1Z2lucy5zbWFydHByb21pc2UuZGVmZXIoKSk7Y29uc3RydWN0b3IoKXtzdXBlcigpfWFzeW5jIGluaXQoKXthd2FpdCB0aGlzLnVwZGF0ZUNvbXBsZXRlLHRoaXMucmVhZHlEZWZlcnJlZC5yZXNvbHZlKCl9c3RhdGljIHN0eWxlcz1bcWUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICAgIDpob3N0IHsKICAgICAgICBmb250LWZhbWlseTogJHtCYX07CiAgICAgIH0KCiAgICAgIC5tYWluIHsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwogICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIGhlaWdodDogMTAwdmg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWF4LXdpZHRoOiAzMjBweDsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICAgICAgICB6LWluZGV4OiB2YXIoLS16LWluZGV4KTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHJpZ2h0OiAwcHg7CiAgICAgICAgdG9wOiAwcHg7CiAgICAgICAgYm90dG9tOiAwcHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDkwOTBiIil9OwogICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMjcyNzJhIil9OwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIGJveC1zaGFkb3c6ICR7aC5iZFRoZW1lKCItMjBweCAwIDI1cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMSksIC0xMHB4IDAgMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4wNCkiLCItMjBweCAwIDI1cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMyksIC0xMHB4IDAgMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSIpfTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgIH0KCiAgICAgIC5tYWluLnNob3cgewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBhbGw7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDBweCk7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgLmhlYWRlciB7CiAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMjcyNzJhIil9OwogICAgICB9CgogICAgICAuaGVhZGluZyB7CiAgICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICAgICAgICBtYXJnaW46IDA7CiAgICAgIH0KCiAgICAgIC5tZW51LWNvbnRhaW5lciB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIHBhZGRpbmc6IDhweDsKICAgICAgfQoKICAgICAgLm1lbnVJdGVtIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgIHBhZGRpbmc6IDEycHggMTZweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAycHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgfQoKICAgICAgLm1lbnVJdGVtOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMyNzI3MmEiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLm1lbnVJdGVtOmFjdGl2ZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjM2YzZjQ2Iil9OwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45OCk7CiAgICAgIH0KCiAgICAgIC5tZW51SXRlbSBkZWVzLWljb24gewogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiM3MTcxN2EiKX07CiAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgMC4xNXMgZWFzZTsKICAgICAgfQoKICAgICAgLm1lbnVJdGVtOmhvdmVyIGRlZXMtaWNvbiB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICAgICAgfQoKICAgICAgLm1lbnVJdGVtLXRleHQgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICAgIH0KCiAgICAgIC5tZW51SXRlbS1kaXZpZGVyIHsKICAgICAgICBoZWlnaHQ6IDFweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMyNzI3MmEiKX07CiAgICAgICAgbWFyZ2luOiA4cHggMTZweDsKICAgICAgfQoKICAgICAgLyogTW9iaWxlIHJlc3BvbnNpdmVuZXNzICovCiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA0MDBweCkgewogICAgICAgIC5tYWluIHsKICAgICAgICAgIG1heC13aWR0aDogMTAwdnc7CiAgICAgICAgICB3aWR0aDogODV2dzsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8qIEFuaW1hdGlvbiBmb3IgbWVudSBpdGVtcyAqLwogICAgICBAa2V5ZnJhbWVzIHNsaWRlSW5SaWdodCB7CiAgICAgICAgZnJvbSB7CiAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwcHgpOwogICAgICAgIH0KICAgICAgICB0byB7CiAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLm1haW4uc2hvdyAubWVudUl0ZW0gewogICAgICAgIGFuaW1hdGlvbjogc2xpZGVJblJpZ2h0IDAuM3MgZWFzZS1vdXQgZm9yd2FyZHM7CiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiBjYWxjKHZhcigtLWl0ZW0taW5kZXgsIDApICogMC4wNXMpOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgIH0KCiAgICAgIC8qIFNjcm9sbGJhciBzdHlsaW5nICovCiAgICAgIC5tZW51LWNvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXIgewogICAgICAgIHdpZHRoOiA2cHg7CiAgICAgIH0KCiAgICAgIC5tZW51LWNvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sgewogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICB9CgogICAgICAubWVudS1jb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMzZjNmNDYiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICB9CgogICAgICAubWVudS1jb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2QxZDVkYiIsIiM1MjUyNWIiKX07CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8c3R5bGU+CiAgICAgICAgLm1haW4gewogICAgICAgICAgLS16LWluZGV4OiAke3RoaXMubW9iaWxlTmF2WkluZGV4fTsKICAgICAgICB9CiAgICAgIDwvc3R5bGU+CiAgICAgIDxkaXYgY2xhc3M9Im1haW4iPgogICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgICA8aDIgY2xhc3M9ImhlYWRpbmciPiR7dGhpcy5oZWFkaW5nfTwvaDI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibWVudS1jb250YWluZXIiPgogICAgICAgICAgJHt0aGlzLm1lbnVJdGVtcy5tYXAoKG0sZik9PiJkaXZpZGVyImluIG0mJm0uZGl2aWRlcj93YDxkaXYgY2xhc3M9Im1lbnVJdGVtLWRpdmlkZXIiPjwvZGl2PmA6d2AKICAgICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICBjbGFzcz0ibWVudUl0ZW0iCiAgICAgICAgICAgICAgICBzdHlsZT0iLS1pdGVtLWluZGV4OiAke2Z9IgogICAgICAgICAgICAgICAgQGNsaWNrPSIkeygpPT57dGhpcy5oaWRlKCksbS5hY3Rpb24odGhpcyl9fSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAke20uaWNvbk5hbWU/d2AKICAgICAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0ke20uaWNvbk5hbWV9IHNpemU9IjIwIj48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibWVudUl0ZW0tdGV4dCI+JHttLm5hbWV9PC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICBgKX0KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfXdpbmRvd0xheWVyO2FzeW5jIHNob3coKXtsZXQgbT1hd2FpdCB0aGlzLmRvbXRvb2xzUHJvbWlzZSxmPXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIubWFpbiIpO3RoaXMud2luZG93TGF5ZXI/KGRvY3VtZW50LmJvZHkuYXBwZW5kKHRoaXMud2luZG93TGF5ZXIpLGF3YWl0IHRoaXMud2luZG93TGF5ZXIuc2hvdygpKToodGhpcy53aW5kb3dMYXllcj1hd2FpdCBSby5jcmVhdGVBbmRTaG93KHtibHVyOiEwfSksdGhpcy53aW5kb3dMYXllci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9Pnt0aGlzLmhpZGUoKX0pKSx0aGlzLm1vYmlsZU5hdlpJbmRleD1fYS5nZXROZXh0WkluZGV4KCksX2EucmVnaXN0ZXIodGhpcyx0aGlzLm1vYmlsZU5hdlpJbmRleCksYXdhaXQgbS5jb252ZW5pZW5jZS5zbWFydGRlbGF5LmRlbGF5Rm9yKDEwKSxmLmNsYXNzTGlzdC5hZGQoInNob3ciKX1hc3luYyBoaWRlKCl7bGV0IG09YXdhaXQgdGhpcy5kb210b29sc1Byb21pc2U7dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5tYWluIikuY2xhc3NMaXN0LnJlbW92ZSgic2hvdyIpLF9hLnVucmVnaXN0ZXIodGhpcyksdGhpcy53aW5kb3dMYXllciYmYXdhaXQgdGhpcy53aW5kb3dMYXllci5kZXN0cm95KCl9YXN5bmMgZGlzY29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLF9hLnVucmVnaXN0ZXIodGhpcyksdGhpcy53aW5kb3dMYXllciYmYXdhaXQgdGhpcy53aW5kb3dMYXllci5kZXN0cm95KCl9c3RhdGlje2E3KGEsdCl9fTtyZXR1cm4geD1hfSkoKX0pO3ZhciBheGE9ZygoKT0+e3R4YSgpfSk7dmFyIHN4YT1nKCgpPT57QTlhKCk7RW90KCk7WjlhKCk7WXZhKCk7WnZhKCk7WHZhKCk7UXZhKCk7SnZhKCk7ZXhhKCk7YXhhKCl9KTt2YXIgaXhhPWcoKCk9PntIZygpfSk7dmFyIHJ4YSxLbnQsZmVzLG94YT1nKCgpPT57cGUoKTtyeGE9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LEtudD1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sZmVzPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1idXR0b24tZXhpdCIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdO3ZhciBwPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzQnV0dG9uRXhpdCIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBkPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6TnVtYmVyfSldLHJ4YSh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNpemUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkodT0+InNpemUiaW4gdSwiaGFzIiksZ2V0OmkodT0+dS5zaXplLCJnZXQiKSxzZXQ6aSgodSxjKT0+e3Uuc2l6ZT1jfSwic2V0Iil9LG1ldGFkYXRhOmR9LG8sbCkscnhhKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOmR9LG51bGwsdCkscD1hPWUudmFsdWUsZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpkfSl9c3RhdGljIGRlbW89aSgoKT0+d2AKICAgIDxkZWVzLWJ1dHRvbi1leGl0PjwvZGVlcy1idXR0b24tZXhpdD4KICBgLCJkZW1vIik7c3RhdGljIGRlbW9Hcm91cHM9WyJCdXR0b24iXTsjZT1LbnQodGhpcyxvLDI0KTtnZXQgc2l6ZSgpe3JldHVybiB0aGlzLiNlfXNldCBzaXplKGQpe3RoaXMuI2U9ZH1zdHlsZXM9KEtudCh0aGlzLGwpLFtoLmRlZmF1bHRTdHlsZXMsSmAKCiAgICBgXSk7cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxzdHlsZT4KICAgICAgICAubWFpbmNvbnRhaW5lciB7CiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICB3aWR0aDogJHt0aGlzLnNpemV9cHg7CiAgICAgICAgICBoZWlnaHQ6ICR7dGhpcy5zaXplfXB4OwogICAgICAgIH0KICAgICAgPC9zdHlsZT4KICAgICAgPGRpdiBjbGFzcz0ibWFpbmNvbnRhaW5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iZmlyc3RMaW5lIj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWNvbmRMaW5lIj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfXN0YXRpY3tLbnQoYSx0KX19O3JldHVybiBwPWF9KSgpfSk7dmFyIG54YT1nKCgpPT57b3hhKCl9KTt2YXIgbHhhLGN4YT1nKCgpPT57cGUoKTtseGE9aSgoKT0+d2AKICAgIDxzdHlsZT4KICAgICAgJHtKYAogICAgICAgIC5kZW1vQm94IHsKICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDA7CiAgICAgICAgICBwYWRkaW5nOiA0MHB4OwogICAgICAgICAgbWluLWhlaWdodDogMTAwdmg7CiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIH0KCiAgICAgICAgLmRlbW8tc2VjdGlvbiB7CiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzMnB4OwogICAgICAgIH0KCiAgICAgICAgLmRlbW8tdGl0bGUgewogICAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgICAgICBmb250LXNpemU6IDIwcHg7CiAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgICAgIGZvbnQtZmFtaWx5OiAnR2Vpc3QgU2FucycsIHNhbnMtc2VyaWY7CiAgICAgICAgfQoKICAgICAgICAuZGVtby1kZXNjcmlwdGlvbiB7CiAgICAgICAgICBjb2xvcjogIzk5OTsKICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgICAgICBmb250LWZhbWlseTogJ0dlaXN0IFNhbnMnLCBzYW5zLXNlcmlmOwogICAgICAgIH0KICAgICAgYH0KICAgIDwvc3R5bGU+CiAgICA8ZGl2IGNsYXNzPSJkZW1vQm94Ij4KICAgICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgICA8aDIgY2xhc3M9ImRlbW8tdGl0bGUiPkJhc2ljIEJ1dHRvbiBHcm91cHM8L2gyPgogICAgICAgIDxwIGNsYXNzPSJkZW1vLWRlc2NyaXB0aW9uIj5CdXR0b24gZ3JvdXBzIHdpdGhvdXQgbGFiZWxzIGZvciBzaW1wbGUgZ3JvdXBpbmc8L3A+CiAgICAgICAgCiAgICAgICAgPGRlZXMtYnV0dG9uLWdyb3VwPgogICAgICAgICAgPGRlZXMtYnV0dG9uPk9wdGlvbiAxPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbj5PcHRpb24gMjwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24+T3B0aW9uIDM8L2RlZXMtYnV0dG9uPgogICAgICAgIDwvZGVlcy1idXR0b24tZ3JvdXA+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgICA8aDIgY2xhc3M9ImRlbW8tdGl0bGUiPkxhYmVsZWQgQnV0dG9uIEdyb3VwczwvaDI+CiAgICAgICAgPHAgY2xhc3M9ImRlbW8tZGVzY3JpcHRpb24iPkJ1dHRvbiBncm91cHMgd2l0aCBkZXNjcmlwdGl2ZSBsYWJlbHM8L3A+CiAgICAgICAgCiAgICAgICAgPGRlZXMtYnV0dG9uLWdyb3VwIGxhYmVsPSJWaWV3IE1vZGU6Ij4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiB0eXBlPSJoaWdobGlnaHRlZCI+R3JpZDwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24+TGlzdDwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24+Q2FyZHM8L2RlZXMtYnV0dG9uPgogICAgICAgIDwvZGVlcy1idXR0b24tZ3JvdXA+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgICA8aDIgY2xhc3M9ImRlbW8tdGl0bGUiPk11bHRpcGxlIEdyb3VwczwvaDI+CiAgICAgICAgPHAgY2xhc3M9ImRlbW8tZGVzY3JpcHRpb24iPk11bHRpcGxlIGJ1dHRvbiBncm91cHMgdXNlZCB0b2dldGhlcjwvcD4KICAgICAgICAKICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBnYXA6IDE2cHg7IGZsZXgtd3JhcDogd3JhcDsiPgogICAgICAgICAgPGRlZXMtYnV0dG9uLWdyb3VwIGxhYmVsPSJEYXRhc2V0OiI+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbiB0eXBlPSJoaWdobGlnaHRlZCI+U3lzdGVtPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uPk5ldHdvcms8L2RlZXMtYnV0dG9uPgogICAgICAgICAgICA8ZGVlcy1idXR0b24+U2FsZXM8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPC9kZWVzLWJ1dHRvbi1ncm91cD4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtYnV0dG9uLWdyb3VwIGxhYmVsPSJUaW1lIFJhbmdlOiI+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbj4xSDwvZGVlcy1idXR0b24+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbiB0eXBlPSJoaWdobGlnaHRlZCI+MjRIPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uPjdEPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uPjMwRDwvZGVlcy1idXR0b24+CiAgICAgICAgICA8L2RlZXMtYnV0dG9uLWdyb3VwPgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1idXR0b24tZ3JvdXAgbGFiZWw9IkFjdGlvbnM6Ij4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uPlJlZnJlc2g8L2RlZXMtYnV0dG9uPgogICAgICAgICAgICA8ZGVlcy1idXR0b24+RXhwb3J0PC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDwvZGVlcy1idXR0b24tZ3JvdXA+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgICA8aDIgY2xhc3M9ImRlbW8tdGl0bGUiPlZlcnRpY2FsIEJ1dHRvbiBHcm91cHM8L2gyPgogICAgICAgIDxwIGNsYXNzPSJkZW1vLWRlc2NyaXB0aW9uIj5CdXR0b24gZ3JvdXBzIHdpdGggdmVydGljYWwgbGF5b3V0PC9wPgogICAgICAgIAogICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGdhcDogMjRweDsiPgogICAgICAgICAgPGRlZXMtYnV0dG9uLWdyb3VwIGRpcmVjdGlvbj0idmVydGljYWwiIGxhYmVsPSJOYXZpZ2F0aW9uOiI+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbj5EYXNoYm9hcmQ8L2RlZXMtYnV0dG9uPgogICAgICAgICAgICA8ZGVlcy1idXR0b24gdHlwZT0iaGlnaGxpZ2h0ZWQiPkFuYWx5dGljczwvZGVlcy1idXR0b24+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbj5SZXBvcnRzPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uPlNldHRpbmdzPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDwvZGVlcy1idXR0b24tZ3JvdXA+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWJ1dHRvbi1ncm91cCBkaXJlY3Rpb249InZlcnRpY2FsIj4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uPkFkZCBJdGVtPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uPkVkaXQgSXRlbTwvZGVlcy1idXR0b24+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbj5EZWxldGUgSXRlbTwvZGVlcy1idXR0b24+CiAgICAgICAgICA8L2RlZXMtYnV0dG9uLWdyb3VwPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgyIGNsYXNzPSJkZW1vLXRpdGxlIj5NaXhlZCBCdXR0b24gVHlwZXM8L2gyPgogICAgICAgIDxwIGNsYXNzPSJkZW1vLWRlc2NyaXB0aW9uIj5EaWZmZXJlbnQgYnV0dG9uIHR5cGVzIHdpdGhpbiBncm91cHM8L3A+CiAgICAgICAgCiAgICAgICAgPGRlZXMtYnV0dG9uLWdyb3VwIGxhYmVsPSJTdGF0dXM6Ij4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiB0eXBlPSJzdWNjZXNzIj5BY3RpdmU8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uPlBlbmRpbmc8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9ImRhbmdlciI+SW5hY3RpdmU8L2RlZXMtYnV0dG9uPgogICAgICAgIDwvZGVlcy1idXR0b24tZ3JvdXA+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgYCwiZGVtb0Z1bmMiKX0pO3ZhciBZbnQsVlEsbWVzLGR4YT1nKCgpPT57cGUoKTtrdCgpO2N4YSgpO2h0KCk7WW50PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxWUT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sbWVzPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1idXR0b24tZ3JvdXAiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXTt2YXIgYz1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0J1dHRvbkdyb3VwIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGI9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCgpXSxwPVtMKCldLFludCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImxhYmVsIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHY9PiJsYWJlbCJpbiB2LCJoYXMiKSxnZXQ6aSh2PT52LmxhYmVsLCJnZXQiKSxzZXQ6aSgodix4KT0+e3YubGFiZWw9eH0sInNldCIpfSxtZXRhZGF0YTpifSxvLGwpLFludCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImRpcmVjdGlvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh2PT4iZGlyZWN0aW9uImluIHYsImhhcyIpLGdldDppKHY9PnYuZGlyZWN0aW9uLCJnZXQiKSxzZXQ6aSgodix4KT0+e3YuZGlyZWN0aW9uPXh9LCJzZXQiKX0sbWV0YWRhdGE6Yn0sZCx1KSxZbnQobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6Yn0sbnVsbCx0KSxjPWE9ZS52YWx1ZSxiJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KX1zdGF0aWMgZGVtbz1seGE7c3RhdGljIGRlbW9Hcm91cHM9WyJCdXR0b24iXTsjZT1WUSh0aGlzLG8sIiIpO2dldCBsYWJlbCgpe3JldHVybiB0aGlzLiNlfXNldCBsYWJlbChiKXt0aGlzLiNlPWJ9I3Q9KFZRKHRoaXMsbCksVlEodGhpcyxkLCJob3Jpem9udGFsIikpO2dldCBkaXJlY3Rpb24oKXtyZXR1cm4gdGhpcy4jdH1zZXQgZGlyZWN0aW9uKGIpe3RoaXMuI3Q9Yn1jb25zdHJ1Y3Rvcigpe3N1cGVyKCksVlEodGhpcyx1KSx0YS5zZXR1cCgpfXN0YXRpYyBzdHlsZXM9W3FlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICAvKiBUT0RPOiBNaWdyYXRlIGhhcmRjb2RlZCB2YWx1ZXMgdG8gLS1kZWVzLSogQ1NTIHZhcmlhYmxlcyAqLwogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CgogICAgICAuYnV0dG9uLWdyb3VwIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGdhcDogOHB4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgcGFkZGluZzogOHB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMDUpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgIH0KCiAgICAgIC5idXR0b24tZ3JvdXAudmVydGljYWwgewogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7CiAgICAgIH0KCiAgICAgIC5sYWJlbCB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNjY2IiwiIzk5OSIpfTsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC1mYW1pbHk6ICdHZWlzdCBTYW5zJywgc2Fucy1zZXJpZjsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDhweDsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CgogICAgICAuYnV0dG9uLWdyb3VwLnZlcnRpY2FsIC5sYWJlbCB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgfQoKICAgICAgOjpzbG90dGVkKCopIHsKICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ncm91cCAke3RoaXMuZGlyZWN0aW9ufSI+CiAgICAgICAgJHt0aGlzLmxhYmVsP3dgPHNwYW4gY2xhc3M9ImxhYmVsIj4ke3RoaXMubGFiZWx9PC9zcGFuPmA6IiJ9CiAgICAgICAgPHNsb3Q+PC9zbG90PgogICAgICA8L2Rpdj4KICAgIGB9c3RhdGlje1ZRKGEsdCl9fTtyZXR1cm4gYz1hfSkoKX0pO3ZhciB1eGE9ZygoKT0+e2R4YSgpfSk7dmFyIHB4YT1nKCgpPT57aXhhKCk7bnhhKCk7dXhhKCl9KTt2YXIgaHhhLGZ4YT1nKCgpPT57cGUoKTtJdCgpO1pudCgpO2h4YT1pKCgpPT57bGV0IHM9e3N5c3RlbTp7bGFiZWw6IlN5c3RlbSBVc2FnZSAoJSkiLHNlcmllczpbe25hbWU6IkNQVSIsZGF0YTpbe3g6bmV3IERhdGUoRGF0ZS5ub3coKS0zZTUpLnRvSVNPU3RyaW5nKCkseToyNX0se3g6bmV3IERhdGUoRGF0ZS5ub3coKS0yNGU0KS50b0lTT1N0cmluZygpLHk6MzB9LHt4Om5ldyBEYXRlKERhdGUubm93KCktMThlNCkudG9JU09TdHJpbmcoKSx5OjI4fSx7eDpuZXcgRGF0ZShEYXRlLm5vdygpLTEyZTQpLnRvSVNPU3RyaW5nKCkseTozNX0se3g6bmV3IERhdGUoRGF0ZS5ub3coKS02ZTQpLnRvSVNPU3RyaW5nKCkseTozMn0se3g6bmV3IERhdGUoKS50b0lTT1N0cmluZygpLHk6Mzh9XX0se25hbWU6Ik1lbW9yeSIsZGF0YTpbe3g6bmV3IERhdGUoRGF0ZS5ub3coKS0zZTUpLnRvSVNPU3RyaW5nKCkseTo0NX0se3g6bmV3IERhdGUoRGF0ZS5ub3coKS0yNGU0KS50b0lTT1N0cmluZygpLHk6NDh9LHt4Om5ldyBEYXRlKERhdGUubm93KCktMThlNCkudG9JU09TdHJpbmcoKSx5OjQ2fSx7eDpuZXcgRGF0ZShEYXRlLm5vdygpLTEyZTQpLnRvSVNPU3RyaW5nKCkseTo1Mn0se3g6bmV3IERhdGUoRGF0ZS5ub3coKS02ZTQpLnRvSVNPU3RyaW5nKCkseTo1MH0se3g6bmV3IERhdGUoKS50b0lTT1N0cmluZygpLHk6NTV9XX1dfX0sZT17c3lzdGVtOmkodD0+YCR7dH0lYCwic3lzdGVtIil9O3JldHVybiB3YAogICAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgdD0+e2xldCBhPXQucXVlcnlTZWxlY3RvcigiI21haW4tY2hhcnQiKSxyPXQucXVlcnlTZWxlY3RvcigiI2Nvbm5lY3Rpb25zLWNoYXJ0IiksbixvLGw9InN5c3RlbSIscD17c3lzdGVtOmkoSD0+YCR7SH0lYCwic3lzdGVtIiksbmV0d29yazppKEg9PmAke0h9IE1icHNgLCJuZXR3b3JrIiksc2FsZXM6aShIPT5gJCR7SC50b0xvY2FsZVN0cmluZygpfWAsInNhbGVzIil9LGQ9MTIwKjFlMyx1PTFlMyxjPTVlMyxiPXtjcHU6MzAsbWVtb3J5OjUwLGRvd25sb2FkOjE1MCx1cGxvYWQ6MzAsY29ubmVjdGlvbnM6MTUwfSx2PWkoKEgsayxTPWMpPT57bGV0IEk9W10sUD1EYXRlLm5vdygpLFI9TWF0aC5mbG9vcihkL1MpO2ZvcihsZXQgSz1SO0s+PTA7Sy0tKXtsZXQgVj1uZXcgRGF0ZShQLUsqUykudG9JU09TdHJpbmcoKSxXPUgrKE1hdGgucmFuZG9tKCktLjUpKms7SS5wdXNoKHt4OlYseTpNYXRoLnJvdW5kKFcpfSl9cmV0dXJuIEl9LCJnZW5lcmF0ZUluaXRpYWxEYXRhIikseD17c3lzdGVtOntsYWJlbDoiU3lzdGVtIFVzYWdlICglKSIsc2VyaWVzOlt7bmFtZToiQ1BVIixkYXRhOnYoYi5jcHUsMTApfSx7bmFtZToiTWVtb3J5IixkYXRhOnYoYi5tZW1vcnksOCl9XX0sbmV0d29yazp7bGFiZWw6Ik5ldHdvcmsgVHJhZmZpYyAoTWJwcykiLHNlcmllczpbe25hbWU6IkRvd25sb2FkIixkYXRhOnYoYi5kb3dubG9hZCwzMCl9LHtuYW1lOiJVcGxvYWQiLGRhdGE6dihiLnVwbG9hZCwxMCl9XX0sc2FsZXM6e2xhYmVsOiJTYWxlcyBBbmFseXRpY3MiLHNlcmllczpbe25hbWU6IlJldmVudWUiLGRhdGE6W3t4OiIyMDI1LTAxLTAxIix5OjQ1ZTN9LHt4OiIyMDI1LTAxLTAyIix5OjUyZTN9LHt4OiIyMDI1LTAxLTAzIix5OjQ4ZTN9LHt4OiIyMDI1LTAxLTA0Iix5OjYxZTN9LHt4OiIyMDI1LTAxLTA1Iix5OjU4ZTN9LHt4OiIyMDI1LTAxLTA2Iix5OjY1ZTN9XX0se25hbWU6IlByb2ZpdCIsZGF0YTpbe3g6IjIwMjUtMDEtMDEiLHk6MTJlM30se3g6IjIwMjUtMDEtMDIiLHk6MTRlM30se3g6IjIwMjUtMDEtMDMiLHk6MTFlM30se3g6IjIwMjUtMDEtMDQiLHk6MThlM30se3g6IjIwMjUtMDEtMDUiLHk6MTZlM30se3g6IjIwMjUtMDEtMDYiLHk6MmU0fV19XX19LG09aSgoSCxrLFMsST01KT0+e2xldCBQPShNYXRoLnJhbmRvbSgpLS41KSpJKjIsUj1IK1AsVj0oKGsrUykvMi1SKSouMTtyZXR1cm4gUis9VixSPU1hdGgubWF4KGssTWF0aC5taW4oUyxSKSksTWF0aC5yb3VuZChSKX0sImdldE5leHRWYWx1ZSIpLGY9RGF0ZS5ub3coKSx5PURhdGUubm93KCksTT1pKCgpPT57aWYoIWEpcmV0dXJuO2xldCBIPURhdGUubm93KCk7aWYoSC1mPj1jKXtmPUg7bGV0IFM9bmV3IERhdGUoSCkudG9JU09TdHJpbmcoKTtpZihsPT09InN5c3RlbSIpe2IuY3B1PW0oYi5jcHUsMjAsNTAsMyksYi5tZW1vcnk9bShiLm1lbW9yeSw0MCw3MCwyKTtsZXQgST1hLmNoYXJ0U2VyaWVzLm1hcCgoUCxSKT0+KHtuYW1lOlAubmFtZSxkYXRhOlsuLi5QLmRhdGEsUj09PTA/e3g6Uyx5OmIuY3B1fTp7eDpTLHk6Yi5tZW1vcnl9XX0pKTthLnVwZGF0ZVNlcmllcyhJLCExKX1lbHNlIGlmKGw9PT0ibmV0d29yayIpe2IuZG93bmxvYWQ9bShiLmRvd25sb2FkLDEwMCwyMDAsMTApLGIudXBsb2FkPW0oYi51cGxvYWQsMjAsNTAsNSk7bGV0IEk9YS5jaGFydFNlcmllcy5tYXAoKFAsUik9Pih7bmFtZTpQLm5hbWUsZGF0YTpbLi4uUC5kYXRhLFI9PT0wP3t4OlMseTpiLmRvd25sb2FkfTp7eDpTLHk6Yi51cGxvYWR9XX0pKTthLnVwZGF0ZVNlcmllcyhJLCExKX19fSwiYWRkUmVhbHRpbWVEYXRhIiksej1pKCgpPT57aWYoIXIpcmV0dXJuO2xldCBIPURhdGUubm93KCksaz1uZXcgRGF0ZShIKS50b0lTT1N0cmluZygpLFM9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjIxKS0xMDtiLmNvbm5lY3Rpb25zPU1hdGgubWF4KDUwLE1hdGgubWluKDMwMCxiLmNvbm5lY3Rpb25zK1MpKTtsZXQgST1yLmNoYXJ0U2VyaWVzLFA9W3tuYW1lOklbMF0/Lm5hbWV8fCJDb25uZWN0aW9ucyIsZGF0YTpbLi4uSVswXT8uZGF0YXx8W10se3g6ayx5OmIuY29ubmVjdGlvbnN9XX1dO3IudXBkYXRlU2VyaWVzKFAsITEpfSwidXBkYXRlQ29ubmVjdGlvbnMiKSxOPWkoSD0+e2w9SDtsZXQgaz14W0hdO2EubGFiZWw9ay5sYWJlbCxhLnNlcmllcz1rLnNlcmllcyxhLnlBeGlzRm9ybWF0dGVyPXBbSF0sSD09PSJzeXN0ZW0iPyhhLnlBeGlzU2NhbGluZz0icGVyY2VudGFnZSIsYS55QXhpc01heD0xMDApOmEueUF4aXNTY2FsaW5nPSJkeW5hbWljIixmPURhdGUubm93KCktY30sInN3aXRjaERhdGFzZXQiKSxDPWkoKCk9PnshbiYmKGw9PT0ic3lzdGVtInx8bD09PSJuZXR3b3JrIikmJihhLnJlYWx0aW1lTW9kZT0hMCxuPXdpbmRvdy5zZXRJbnRlcnZhbCgoKT0+TSgpLGMpKSxvfHwoci5yZWFsdGltZU1vZGU9ITAsbz13aW5kb3cuc2V0SW50ZXJ2YWwoKCk9PnooKSx1KSl9LCJzdGFydFJlYWx0aW1lIiksXz1pKCgpPT57biYmKHdpbmRvdy5jbGVhckludGVydmFsKG4pLG49bnVsbCxhLnJlYWx0aW1lTW9kZT0hMSksbyYmKHdpbmRvdy5jbGVhckludGVydmFsKG8pLG89bnVsbCxyLnJlYWx0aW1lTW9kZT0hMSl9LCJzdG9wUmVhbHRpbWUiKSxPPWkoKCk9PntsPT09InN5c3RlbSI/KGIuY3B1PU1hdGgucmFuZG9tKCk+LjU/ODU6MjUsYi5tZW1vcnk9TWF0aC5yYW5kb20oKT4uNT84MDo0NSk6bD09PSJuZXR3b3JrIiYmKGIuZG93bmxvYWQ9TWF0aC5yYW5kb20oKT4uNT8yNTA6MTAwLGIudXBsb2FkPU1hdGgucmFuZG9tKCk+LjU/ODA6MjApLGIuY29ubmVjdGlvbnM9TWF0aC5yYW5kb20oKT4uNT8yODA6ODAsZj0wLHk9MH0sInJhbmRvbWl6ZURhdGEiKSwkPWkoKCk9Pnt0LnF1ZXJ5U2VsZWN0b3JBbGwoImRlZXMtYnV0dG9uIikuZm9yRWFjaChrPT57bGV0IFM9ay50ZXh0Py50cmltKCk7Uz09PSJTeXN0ZW0gVXNhZ2UiP2sudHlwZT1sPT09InN5c3RlbSI/ImhpZ2hsaWdodGVkIjoibm9ybWFsIjpTPT09Ik5ldHdvcmsgVHJhZmZpYyI/ay50eXBlPWw9PT0ibmV0d29yayI/ImhpZ2hsaWdodGVkIjoibm9ybWFsIjpTPT09IlNhbGVzIERhdGEiJiYoay50eXBlPWw9PT0ic2FsZXMiPyJoaWdobGlnaHRlZCI6Im5vcm1hbCIpfSl9LCJ1cGRhdGVCdXR0b25TdGF0ZXMiKTtpZih0LnF1ZXJ5U2VsZWN0b3JBbGwoImRlZXMtYnV0dG9uIikuZm9yRWFjaChIPT57bGV0IGs9SC50ZXh0Py50cmltKCk7az09PSJTeXN0ZW0gVXNhZ2UiP0guYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57Tigic3lzdGVtIiksJCgpfSk6az09PSJOZXR3b3JrIFRyYWZmaWMiP0guYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57TigibmV0d29yayIpLCQoKX0pOms9PT0iU2FsZXMgRGF0YSI/SC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PntOKCJzYWxlcyIpLCQoKX0pOms9PT0iU3RhcnQgTGl2ZSI/SC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PkMoKSk6az09PSJTdG9wIExpdmUiP0guYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT5fKCkpOms9PT0iU3Bpa2UgVmFsdWVzIiYmSC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9Pk8oKSl9KSxhLnJvbGxpbmdXaW5kb3c9ZCxhLnJlYWx0aW1lTW9kZT0hMSxhLnlBeGlzU2NhbGluZz0icGVyY2VudGFnZSIsYS55QXhpc01heD0xMDAsYS5hdXRvU2Nyb2xsSW50ZXJ2YWw9MWUzLHNldFRpbWVvdXQoKCk9PnthLnVwZGF0ZVRpbWVXaW5kb3coKX0sMTAwKSxyKXtsZXQgSD12KGIuY29ubmVjdGlvbnMsMzAsdSk7ci5zZXJpZXM9W3tuYW1lOiJDb25uZWN0aW9ucyIsZGF0YTpIfV0sci5yb2xsaW5nV2luZG93PWQsci5yZWFsdGltZU1vZGU9ITEsci55QXhpc1NjYWxpbmc9ImZpeGVkIixyLnlBeGlzTWF4PTM1MCxyLmF1dG9TY3JvbGxJbnRlcnZhbD0xZTMsc2V0VGltZW91dCgoKT0+e3IudXBkYXRlVGltZVdpbmRvdygpfSwxMDApfX19PgogICAgICA8c3R5bGU+CiAgICAgICAgJHtKYAogICAgICAgIC5kZW1vQm94IHsKICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5NSUpIiwiaHNsKDAgMCUgOSUpIil9OwogICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICBwYWRkaW5nOiA0MHB4OwogICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuY29udHJvbHMgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICAgIGdhcDogMTJweDsKICAgICAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmNoYXJ0LWNvbnRhaW5lciB7CiAgICAgICAgICBmbGV4OiAxOwogICAgICAgICAgbWluLWhlaWdodDogNDAwcHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5pbmZvIHsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDU2LjklKSIsImhzbCgyMTUgMjAuMiUgNTUuMSUpIil9OwogICAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgJ0dlaXN0IFNhbnMnLCBzYW5zLXNlcmlmOwogICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgbWFyZ2luLXRvcDogOHB4OwogICAgICAgIH0KICAgICAgYH0KICAgIDwvc3R5bGU+CiAgICA8ZGl2IGNsYXNzPSJkZW1vQm94Ij4KICAgICAgPGRpdiBjbGFzcz0iY29udHJvbHMiPgogICAgICAgIDxkZWVzLWJ1dHRvbi1ncm91cCBsYWJlbD0iRGF0YXNldDoiPgogICAgICAgICAgPGRlZXMtYnV0dG9uIHR5cGU9ImhpZ2hsaWdodGVkIj5TeXN0ZW0gVXNhZ2U8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uPk5ldHdvcmsgVHJhZmZpYzwvZGVlcy1idXR0b24+CiAgICAgICAgICA8ZGVlcy1idXR0b24+U2FsZXMgRGF0YTwvZGVlcy1idXR0b24+CiAgICAgICAgPC9kZWVzLWJ1dHRvbi1ncm91cD4KICAgICAgICAKICAgICAgICA8ZGVlcy1idXR0b24tZ3JvdXAgbGFiZWw9IlJlYWwtdGltZToiPgogICAgICAgICAgPGRlZXMtYnV0dG9uPlN0YXJ0IExpdmU8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uPlN0b3AgTGl2ZTwvZGVlcy1idXR0b24+CiAgICAgICAgPC9kZWVzLWJ1dHRvbi1ncm91cD4KICAgICAgICAKICAgICAgICA8ZGVlcy1idXR0b24tZ3JvdXAgbGFiZWw9IkFjdGlvbnM6Ij4KICAgICAgICAgIDxkZWVzLWJ1dHRvbj5TcGlrZSBWYWx1ZXM8L2RlZXMtYnV0dG9uPgogICAgICAgIDwvZGVlcy1idXR0b24tZ3JvdXA+CiAgICAgIDwvZGl2PgogICAgICAKICAgICAgPGRpdiBjbGFzcz0iY2hhcnQtY29udGFpbmVyIj4KICAgICAgICA8ZGVlcy1jaGFydC1hcmVhCiAgICAgICAgICBpZD0ibWFpbi1jaGFydCIKICAgICAgICAgIC5sYWJlbD0ke3Muc3lzdGVtLmxhYmVsfQogICAgICAgICAgLnNlcmllcz0ke3Muc3lzdGVtLnNlcmllc30KICAgICAgICAgIC55QXhpc0Zvcm1hdHRlcj0ke2Uuc3lzdGVtfQogICAgICAgID48L2RlZXMtY2hhcnQtYXJlYT4KICAgICAgPC9kaXY+CiAgICAgIAogICAgICA8ZGl2IGNsYXNzPSJjaGFydC1jb250YWluZXIiIHN0eWxlPSJtYXJnaW4tdG9wOiAyMHB4OyI+CiAgICAgICAgPGRlZXMtY2hhcnQtYXJlYQogICAgICAgICAgaWQ9ImNvbm5lY3Rpb25zLWNoYXJ0IgogICAgICAgICAgLmxhYmVsPSR7IkFjdGl2ZSBDb25uZWN0aW9ucyJ9CiAgICAgICAgICAuc2VyaWVzPSR7W3tuYW1lOiJDb25uZWN0aW9ucyIsZGF0YTpbXX1dfQogICAgICAgICAgLnlBeGlzRm9ybWF0dGVyPSR7dD0+YCR7dH1gfQogICAgICAgID48L2RlZXMtY2hhcnQtYXJlYT4KICAgICAgPC9kaXY+CiAgICAgIAogICAgICA8ZGl2IGNsYXNzPSJpbmZvIj4KICAgICAgICBSZWFsLXRpbWUgbW9uaXRvcmluZyB3aXRoIDItbWludXRlIHJvbGxpbmcgd2luZG93IOKAoiAKICAgICAgICBVcGRhdGVzIGV2ZXJ5IHNlY29uZCB3aXRoIHNtb290aCB2YWx1ZSB0cmFuc2l0aW9ucyDigKIgCiAgICAgICAgQ2xpY2sgJ1NwaWtlIFZhbHVlcycgdG8gc2ltdWxhdGUgbG9hZCBzcGlrZXMKICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KICBgfSwiZGVtb0Z1bmMiKX0pO3ZhciBteGEsZ3hhPWcoKCk9PntwZSgpO2h0KCk7bXhhPVtxZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGhlaWdodDogNDAwcHg7CiAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgJ1JvYm90bycsIHNhbnMtc2VyaWY7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIH0KICAgICAgZGVlcy10aWxlIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KICAgICAgLmNoYXJ0SGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIHBhZGRpbmc6IDAgOHB4IDAgMTZweDsKICAgICAgfQogICAgICAuY2hhcnRMYWJlbCB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXNlY29uZGFyeSk7CiAgICAgIH0KICAgICAgLmV4cGFuZEJ0biB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIHdpZHRoOiAyOHB4OwogICAgICAgIGhlaWdodDogMjhweDsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICB9CiAgICAgIC5leHBhbmRCdG46aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItaG92ZXIpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTsKICAgICAgfQogICAgICAuY2hhcnRDb250YWluZXIgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBpbnNldDogMCAwIDRweCAwOwogICAgICB9CiAgICAgIC5zdGF0c0JhciB7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KICAgICAgLnN0YXRzU2VyaWVzIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgIH0KICAgICAgLnN0YXRzU2VyaWVzICsgLnN0YXRzU2VyaWVzIHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7CiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgfQogICAgICAuc3RhdHNDb2xvciB7CiAgICAgICAgd2lkdGg6IDhweDsKICAgICAgICBoZWlnaHQ6IDhweDsKICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KICAgICAgLnN0YXRzTmFtZSB7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOwogICAgICAgIG1hcmdpbi1yaWdodDogNHB4OwogICAgICB9CiAgICAgIC5zdGF0c0l0ZW0gewogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgfQogICAgICAuc3RhdHNJdGVtIHN0cm9uZyB7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgfQogICAgICAubHctdG9vbHRpcCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHotaW5kZXg6IDEwMDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICBwYWRkaW5nOiAxMnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZDsKICAgICAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBzYW5zLXNlcmlmOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBib3gtc2hhZG93OiAwIDJweCA4cHggMCByZ2JhKDAsIDAsIDAsIDAuMTUpOwogICAgICAgIG1pbi13aWR0aDogMTQwcHg7CiAgICAgIH0KICAgIGBdfSk7dmFyIGJ4YSx2eGE9ZygoKT0+e3BlKCk7R2EoKTtieGE9aShzPT53YAogICAgICAgIDxkZWVzLXRpbGU+CiAgICAgICAgICA8ZGl2IHNsb3Q9ImhlYWRlciIgY2xhc3M9ImNoYXJ0SGVhZGVyIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNoYXJ0TGFiZWwiPiR7cy5sYWJlbH08L3NwYW4+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImV4cGFuZEJ0biIgQGNsaWNrPSR7KCk9PnMudG9nZ2xlRnVsbFBhZ2UoKX0gdGl0bGU9IiR7cy5pc0Z1bGxQYWdlPyJFeGl0IGZ1bGwgcGFnZSI6IkZ1bGwgcGFnZSJ9Ij4KICAgICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7cy5pc0Z1bGxQYWdlPyJsdWNpZGU6TWluaW1pemUyIjoibHVjaWRlOk1heGltaXplMiJ9IC5pY29uU2l6ZT0kezE0fT48L2RlZXMtaWNvbj4KICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNoYXJ0Q29udGFpbmVyIj48L2Rpdj4KICAgICAgICAgICR7cy5zZXJpZXNTdGF0cy5sZW5ndGg+MD93YAogICAgICAgICAgICA8ZGl2IHNsb3Q9ImZvb3RlciIgY2xhc3M9InN0YXRzQmFyIj4KICAgICAgICAgICAgICAke3Muc2VyaWVzU3RhdHMubWFwKGU9PndgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0c1NlcmllcyI+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzdGF0c0NvbG9yIiBzdHlsZT0iYmFja2dyb3VuZDoke2UuY29sb3J9Ij48L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzdGF0c05hbWUiPiR7ZS5uYW1lfTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN0YXRzSXRlbSI+bGF0ZXN0IDxzdHJvbmc+JHtzLnlBeGlzRm9ybWF0dGVyKGUubGF0ZXN0KX08L3N0cm9uZz48L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzdGF0c0l0ZW0iPm1pbiA8c3Ryb25nPiR7cy55QXhpc0Zvcm1hdHRlcihlLm1pbil9PC9zdHJvbmc+PC9zcGFuPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3RhdHNJdGVtIj5tYXggPHN0cm9uZz4ke3MueUF4aXNGb3JtYXR0ZXIoZS5tYXgpfTwvc3Ryb25nPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN0YXRzSXRlbSI+YXZnIDxzdHJvbmc+JHtzLnlBeGlzRm9ybWF0dGVyKGUuYXZnKX08L3N0cm9uZz48L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICBgKX0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgOiIifQogICAgICAgIDwvZGVlcy10aWxlPgogICAgICBgLCJyZW5kZXJDaGFydEFyZWEiKX0pO3ZhciBKYyxQaSxnZXMsWm50PWcoKCk9PntwZSgpO2t0KCk7ZnhhKCk7Z3hhKCk7dnhhKCk7T3UoKTttcigpO0pjPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxQaT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sZ2VzPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1jaGFydC1hcmVhIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W10sSCxrPVtdLFM9W10sSSxQPVtdLFI9W10sSyxWPVtdLFc9W10sbWUsQj1bXSxVPVtdO3ZhciBoZT1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0NoYXJ0QXJlYSIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBGPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W1koKV0scD1bWSgpXSxjPVtZKCldLHg9W0woKV0seT1bTCh7dHlwZTpBcnJheX0pXSxOPVtMKHthdHRyaWJ1dGU6ITF9KV0sTz1bTCh7dHlwZTpOdW1iZXJ9KV0sSD1bTCh7dHlwZTpCb29sZWFufSldLEk9W0woe3R5cGU6U3RyaW5nfSldLEs9W0woe3R5cGU6TnVtYmVyfSldLG1lPVtMKHt0eXBlOk51bWJlcn0pXSxKYyh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNoYXJ0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGo9PiJjaGFydCJpbiBqLCJoYXMiKSxnZXQ6aShqPT5qLmNoYXJ0LCJnZXQiKSxzZXQ6aSgoaix1ZSk9PntqLmNoYXJ0PXVlfSwic2V0Iil9LG1ldGFkYXRhOkZ9LG8sbCksSmModGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZXJpZXNTdGF0cyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4ic2VyaWVzU3RhdHMiaW4gaiwiaGFzIiksZ2V0Omkoaj0+ai5zZXJpZXNTdGF0cywiZ2V0Iiksc2V0OmkoKGosdWUpPT57ai5zZXJpZXNTdGF0cz11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSxkLHUpLEpjKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNGdWxsUGFnZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4iaXNGdWxsUGFnZSJpbiBqLCJoYXMiKSxnZXQ6aShqPT5qLmlzRnVsbFBhZ2UsImdldCIpLHNldDppKChqLHVlKT0+e2ouaXNGdWxsUGFnZT11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSxiLHYpLEpjKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToibGFiZWwiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoaj0+ImxhYmVsImluIGosImhhcyIpLGdldDppKGo9PmoubGFiZWwsImdldCIpLHNldDppKChqLHVlKT0+e2oubGFiZWw9dWV9LCJzZXQiKX0sbWV0YWRhdGE6Rn0sbSxmKSxKYyh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNlcmllcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4ic2VyaWVzImluIGosImhhcyIpLGdldDppKGo9Pmouc2VyaWVzLCJnZXQiKSxzZXQ6aSgoaix1ZSk9PntqLnNlcmllcz11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSxNLHopLEpjKHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToieUF4aXNGb3JtYXR0ZXIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoaj0+InlBeGlzRm9ybWF0dGVyImluIGosImhhcyIpLGdldDppKGo9PmoueUF4aXNGb3JtYXR0ZXIsImdldCIpLHNldDppKChqLHVlKT0+e2oueUF4aXNGb3JtYXR0ZXI9dWV9LCJzZXQiKX0sbWV0YWRhdGE6Rn0sQyxfKSxKYyh0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InJvbGxpbmdXaW5kb3ciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoaj0+InJvbGxpbmdXaW5kb3ciaW4gaiwiaGFzIiksZ2V0Omkoaj0+ai5yb2xsaW5nV2luZG93LCJnZXQiKSxzZXQ6aSgoaix1ZSk9PntqLnJvbGxpbmdXaW5kb3c9dWV9LCJzZXQiKX0sbWV0YWRhdGE6Rn0sJCxFKSxKYyh0aGlzLG51bGwsSCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InJlYWx0aW1lTW9kZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4icmVhbHRpbWVNb2RlImluIGosImhhcyIpLGdldDppKGo9PmoucmVhbHRpbWVNb2RlLCJnZXQiKSxzZXQ6aSgoaix1ZSk9PntqLnJlYWx0aW1lTW9kZT11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSxrLFMpLEpjKHRoaXMsbnVsbCxJLHtraW5kOiJhY2Nlc3NvciIsbmFtZToieUF4aXNTY2FsaW5nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGo9PiJ5QXhpc1NjYWxpbmciaW4gaiwiaGFzIiksZ2V0Omkoaj0+ai55QXhpc1NjYWxpbmcsImdldCIpLHNldDppKChqLHVlKT0+e2oueUF4aXNTY2FsaW5nPXVlfSwic2V0Iil9LG1ldGFkYXRhOkZ9LFAsUiksSmModGhpcyxudWxsLEsse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ5QXhpc01heCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4ieUF4aXNNYXgiaW4gaiwiaGFzIiksZ2V0Omkoaj0+ai55QXhpc01heCwiZ2V0Iiksc2V0OmkoKGosdWUpPT57ai55QXhpc01heD11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSxWLFcpLEpjKHRoaXMsbnVsbCxtZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImF1dG9TY3JvbGxJbnRlcnZhbCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4iYXV0b1Njcm9sbEludGVydmFsImluIGosImhhcyIpLGdldDppKGo9PmouYXV0b1Njcm9sbEludGVydmFsLCJnZXQiKSxzZXQ6aSgoaix1ZSk9PntqLmF1dG9TY3JvbGxJbnRlcnZhbD11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSxCLFUpLEpjKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOkZ9LG51bGwsdCksaGU9YT1lLnZhbHVlLEYmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Rn0pfXN0YXRpYyBkZW1vPWh4YTtzdGF0aWMgZGVtb0dyb3Vwcz1bIkNoYXJ0Il07I2U9UGkodGhpcyxvLG51bGwpO2dldCBjaGFydCgpe3JldHVybiB0aGlzLiNlfXNldCBjaGFydChGKXt0aGlzLiNlPUZ9I3Q9KFBpKHRoaXMsbCksUGkodGhpcyxkLFtdKSk7Z2V0IHNlcmllc1N0YXRzKCl7cmV0dXJuIHRoaXMuI3R9c2V0IHNlcmllc1N0YXRzKEYpe3RoaXMuI3Q9Rn0jYT0oUGkodGhpcyx1KSxQaSh0aGlzLGIsITEpKTtnZXQgaXNGdWxsUGFnZSgpe3JldHVybiB0aGlzLiNhfXNldCBpc0Z1bGxQYWdlKEYpe3RoaXMuI2E9Rn0jcz0oUGkodGhpcyx2KSxQaSh0aGlzLG0sIlVudGl0bGVkIENoYXJ0IikpO2dldCBsYWJlbCgpe3JldHVybiB0aGlzLiNzfXNldCBsYWJlbChGKXt0aGlzLiNzPUZ9I2k9KFBpKHRoaXMsZiksUGkodGhpcyxNLFtdKSk7Z2V0IHNlcmllcygpe3JldHVybiB0aGlzLiNpfXNldCBzZXJpZXMoRil7dGhpcy4jaT1GfWdldCBjaGFydFNlcmllcygpe3JldHVybiB0aGlzLmludGVybmFsQ2hhcnREYXRhLmxlbmd0aD4wP3RoaXMuaW50ZXJuYWxDaGFydERhdGE6dGhpcy5zZXJpZXN9I3I9KFBpKHRoaXMseiksUGkodGhpcyxDLEY9PmAke0Z9IE1icHNgKSk7Z2V0IHlBeGlzRm9ybWF0dGVyKCl7cmV0dXJuIHRoaXMuI3J9c2V0IHlBeGlzRm9ybWF0dGVyKEYpe3RoaXMuI3I9Rn0jbz0oUGkodGhpcyxfKSxQaSh0aGlzLCQsMCkpO2dldCByb2xsaW5nV2luZG93KCl7cmV0dXJuIHRoaXMuI299c2V0IHJvbGxpbmdXaW5kb3coRil7dGhpcy4jbz1GfSNuPShQaSh0aGlzLEUpLFBpKHRoaXMsaywhMSkpO2dldCByZWFsdGltZU1vZGUoKXtyZXR1cm4gdGhpcy4jbn1zZXQgcmVhbHRpbWVNb2RlKEYpe3RoaXMuI249Rn0jbD0oUGkodGhpcyxTKSxQaSh0aGlzLFAsImR5bmFtaWMiKSk7Z2V0IHlBeGlzU2NhbGluZygpe3JldHVybiB0aGlzLiNsfXNldCB5QXhpc1NjYWxpbmcoRil7dGhpcy4jbD1GfSNjPShQaSh0aGlzLFIpLFBpKHRoaXMsViwxMDApKTtnZXQgeUF4aXNNYXgoKXtyZXR1cm4gdGhpcy4jY31zZXQgeUF4aXNNYXgoRil7dGhpcy4jYz1GfSNkPShQaSh0aGlzLFcpLFBpKHRoaXMsQiwxZTMpKTtnZXQgYXV0b1Njcm9sbEludGVydmFsKCl7cmV0dXJuIHRoaXMuI2R9c2V0IGF1dG9TY3JvbGxJbnRlcnZhbChGKXt0aGlzLiNkPUZ9aW50ZXJuYWxDaGFydERhdGE9KFBpKHRoaXMsVSksW10pO2F1dG9TY3JvbGxUaW1lcj1udWxsO2xjQnVuZGxlPW51bGw7c2VyaWVzQXBpcz1uZXcgTWFwO3ByaWNlTGluZXM9bmV3IE1hcDt0b29sdGlwRWw9bnVsbDtDSEFSVF9DT0xPUlM9e2Rhcms6WyJoc2woMjE3LjIgOTEuMiUgNTkuOCUpIiwiaHNsKDE3My40IDgwLjQlIDQwJSkiLCJoc2woMjgwLjMgODcuNCUgNjYuNyUpIiwiaHNsKDI0LjYgOTUlIDUzLjElKSJdLGxpZ2h0OlsiaHNsKDIyMi4yIDQ3LjQlIDUxLjIlKSIsImhzbCgxNDIuMSA3Ni4yJSAzNi4zJSkiLCJoc2woMjgwLjMgNDcuNyUgNTAuMiUpIiwiaHNsKDIwLjUgOTAuMiUgNDguMiUpIl19O2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0YS5zZXR1cCgpLHRoaXMucmVnaXN0ZXJHYXJiYWdlRnVuY3Rpb24oYXN5bmMoKT0+e2lmKHRoaXMuc3RvcEF1dG9TY3JvbGwoKSx0aGlzLmNoYXJ0KXRyeXt0aGlzLmNoYXJ0LnJlbW92ZSgpLHRoaXMuY2hhcnQ9bnVsbCx0aGlzLnNlcmllc0FwaXMuY2xlYXIoKSx0aGlzLnByaWNlTGluZXMuY2xlYXIoKX1jYXRjaChGKXtjb25zb2xlLmVycm9yKCJFcnJvciBkZXN0cm95aW5nIGNoYXJ0OiIsRil9fSl9c3RhdGljIHN0eWxlcz1teGE7cmVuZGVyKCl7cmV0dXJuIGJ4YSh0aGlzKX1jb252ZXJ0RGF0YVRvTEMoRil7cmV0dXJuIEYubWFwKGo9PntsZXQgdWU9dHlwZW9mIGoueD09Im51bWJlciI/ai54Om5ldyBEYXRlKGoueCkuZ2V0VGltZSgpO3JldHVybnt0aW1lOk1hdGguZmxvb3IodWUvMWUzKSx2YWx1ZTpqLnl9fSkuc29ydCgoaix1ZSk9PmoudGltZS11ZS50aW1lKX1oc2xUb1JnYmEoRixqKXtsZXQgdWU9Ri5tYXRjaCgvaHNsXCgoW14pXSspXCkvKTtpZighdWUpcmV0dXJuIEY7bGV0IGxlPXVlWzFdLnRyaW0oKS5zcGxpdCgvXHMrLyk7aWYobGUubGVuZ3RoPDMpcmV0dXJuIEY7bGV0IFE9cGFyc2VGbG9hdChsZVswXSkvMzYwLGllPXBhcnNlRmxvYXQobGVbMV0pLzEwMCx0ZT1wYXJzZUZsb2F0KGxlWzJdKS8xMDAsZWUsa2UsWDtpZihpZT09PTApZWU9a2U9WD10ZTtlbHNle2xldCBaPWkoKEEsc2Usb2UpPT4ob2U8MCYmKG9lKz0xKSxvZT4xJiYob2UtPTEpLG9lPC4xNjY2NjY2NjY2NjY2NjY2Nj9BKyhzZS1BKSo2Km9lOm9lPC41P3NlOm9lPC42NjY2NjY2NjY2NjY2NjY2P0ErKHNlLUEpKiguNjY2NjY2NjY2NjY2NjY2Ni1vZSkqNjpBKSwiaHVlMnJnYiIpLHllPXRlPC41P3RlKigxK2llKTp0ZStpZS10ZSppZSxxPTIqdGUteWU7ZWU9WihxLHllLFErMS8zKSxrZT1aKHEseWUsUSksWD1aKHEseWUsUS0xLzMpfXJldHVybmByZ2JhKCR7TWF0aC5yb3VuZChlZSoyNTUpfSwgJHtNYXRoLnJvdW5kKGtlKjI1NSl9LCAke01hdGgucm91bmQoWCoyNTUpfSwgJHtqfSlgfWdldFNlcmllc0NvbG9ycyhGKXtyZXR1cm4gRj90aGlzLkNIQVJUX0NPTE9SUy5kYXJrOnRoaXMuQ0hBUlRfQ09MT1JTLmxpZ2h0fWFwcGx5VGhlbWUoKXtpZighdGhpcy5jaGFydHx8IXRoaXMubGNCdW5kbGUpcmV0dXJuO2xldCBGPSF0aGlzLmdvQnJpZ2h0LGo9dGhpcy5nZXRTZXJpZXNDb2xvcnMoRik7dGhpcy5jaGFydC5hcHBseU9wdGlvbnMoe2xheW91dDp7YmFja2dyb3VuZDp7dHlwZTp0aGlzLmxjQnVuZGxlLkNvbG9yVHlwZS5Tb2xpZCxjb2xvcjoidHJhbnNwYXJlbnQifSx0ZXh0Q29sb3I6Rj8iaHNsKDAgMCUgNjMuOSUpIjoiaHNsKDAgMCUgMjAlKSIsYXR0cmlidXRpb25Mb2dvOiExfSxncmlkOnt2ZXJ0TGluZXM6e2NvbG9yOkY/ImhzbCgwIDAlIDguNSUpIjoiaHNsKDAgMCUgOTUuNSUpIn0saG9yekxpbmVzOntjb2xvcjpGPyJoc2woMCAwJSA4LjUlKSI6ImhzbCgwIDAlIDk1LjUlKSJ9fX0pO2xldCB1ZT0wO2ZvcihsZXRbLGxlXW9mIHRoaXMuc2VyaWVzQXBpcyl7bGV0IFE9alt1ZSVqLmxlbmd0aF07bGUuYXBwbHlPcHRpb25zKHt0b3BDb2xvcjp0aGlzLmhzbFRvUmdiYShRLEY/LjQ6LjUpLGJvdHRvbUNvbG9yOnRoaXMuaHNsVG9SZ2JhKFEsMCksbGluZUNvbG9yOlF9KSx1ZSsrfX1yZWNyZWF0ZVNlcmllcyhGKXtpZighdGhpcy5jaGFydHx8IXRoaXMubGNCdW5kbGUpcmV0dXJuO2xldCBqPSF0aGlzLmdvQnJpZ2h0LHVlPXRoaXMuZ2V0U2VyaWVzQ29sb3JzKGopO2ZvcihsZXRbLGxlXW9mIHRoaXMuc2VyaWVzQXBpcyl0aGlzLmNoYXJ0LnJlbW92ZVNlcmllcyhsZSk7dGhpcy5zZXJpZXNBcGlzLmNsZWFyKCksdGhpcy5wcmljZUxpbmVzLmNsZWFyKCksRi5mb3JFYWNoKChsZSxRKT0+e2xldCBpZT11ZVtRJXVlLmxlbmd0aF0sdGU9dGhpcy5jaGFydC5hZGRTZXJpZXModGhpcy5sY0J1bmRsZS5BcmVhU2VyaWVzLHt0b3BDb2xvcjp0aGlzLmhzbFRvUmdiYShpZSxqPy40Oi41KSxib3R0b21Db2xvcjp0aGlzLmhzbFRvUmdiYShpZSwwKSxsaW5lQ29sb3I6aWUsbGluZVdpZHRoOjIsbGluZVR5cGU6dGhpcy5sY0J1bmRsZS5MaW5lVHlwZS5DdXJ2ZWQsbGFzdFZhbHVlVmlzaWJsZTohMSxwcmljZUxpbmVWaXNpYmxlOiExLGNyb3NzaGFpck1hcmtlclZpc2libGU6ITAsY3Jvc3NoYWlyTWFya2VyUmFkaXVzOjR9KTt0ZS5zZXREYXRhKHRoaXMuY29udmVydERhdGFUb0xDKGxlLmRhdGEpKSx0aGlzLnVwZGF0ZVByaWNlTGluZXMobGUubmFtZXx8YHNlcmllcy0ke1F9YCx0ZSxsZS5kYXRhLGllKSx0aGlzLnlBeGlzU2NhbGluZyE9PSJkeW5hbWljIiYmdGUuYXBwbHlPcHRpb25zKHthdXRvc2NhbGVJbmZvUHJvdmlkZXI6aSgoKT0+KHtwcmljZVJhbmdlOnttaW5WYWx1ZTowLG1heFZhbHVlOnRoaXMueUF4aXNNYXh9fSksImF1dG9zY2FsZUluZm9Qcm92aWRlciIpfSksdGhpcy5zZXJpZXNBcGlzLnNldChsZS5uYW1lfHxgc2VyaWVzLSR7UX1gLHRlKX0pLHRoaXMuY29tcHV0ZVN0YXRzKEYpfWNvbXB1dGVTdGF0cyhGKXtsZXQgaj0hdGhpcy5nb0JyaWdodCx1ZT10aGlzLmdldFNlcmllc0NvbG9ycyhqKTt0aGlzLnNlcmllc1N0YXRzPUYubWFwKChsZSxRKT0+e2xldCBpZT1sZS5kYXRhLm1hcChaPT5aLnkpO2lmKGllLmxlbmd0aD09PTApcmV0dXJue25hbWU6bGUubmFtZXx8YHNlcmllcy0ke1F9YCxsYXRlc3Q6MCxtaW46MCxtYXg6MCxhdmc6MCxjb2xvcjp1ZVtRJXVlLmxlbmd0aF19O2xldCB0ZT1pZVtpZS5sZW5ndGgtMV0sZWU9TWF0aC5taW4oLi4uaWUpLGtlPU1hdGgubWF4KC4uLmllKSxYPU1hdGgucm91bmQoaWUucmVkdWNlKChaLHllKT0+Wit5ZSwwKS9pZS5sZW5ndGgqMTAwKS8xMDA7cmV0dXJue25hbWU6bGUubmFtZXx8YHNlcmllcy0ke1F9YCxsYXRlc3Q6dGUsbWluOmVlLG1heDprZSxhdmc6WCxjb2xvcjp1ZVtRJXVlLmxlbmd0aF19fSl9dXBkYXRlUHJpY2VMaW5lcyhGLGosdWUsbGUpe2xldCBRPXRoaXMucHJpY2VMaW5lcy5nZXQoRik7aWYoUSlmb3IobGV0IFggb2YgUSlqLnJlbW92ZVByaWNlTGluZShYKTtpZih1ZS5sZW5ndGg9PT0wKXt0aGlzLnByaWNlTGluZXMuc2V0KEYsW10pO3JldHVybn1sZXQgaWU9dWUubWFwKFg9PlgueSksdGU9aWUucmVkdWNlKChYLFopPT5YK1osMCkvaWUubGVuZ3RoLGVlPU1hdGgubWF4KC4uLmllKSxrZT1bXTtrZS5wdXNoKGouY3JlYXRlUHJpY2VMaW5lKHtwcmljZTpNYXRoLnJvdW5kKHRlKjEwMCkvMTAwLGNvbG9yOnRoaXMuaHNsVG9SZ2JhKGxlLC41KSxsaW5lV2lkdGg6MSxsaW5lU3R5bGU6MixheGlzTGFiZWxWaXNpYmxlOiEwLHRpdGxlOiJhdmcifSkpLHRlPjAmJihlZS10ZSkvdGU+LjEmJmtlLnB1c2goai5jcmVhdGVQcmljZUxpbmUoe3ByaWNlOmVlLGNvbG9yOnRoaXMuaHNsVG9SZ2JhKGxlLC44KSxsaW5lV2lkdGg6MSxsaW5lU3R5bGU6MSxheGlzTGFiZWxWaXNpYmxlOiEwLHRpdGxlOiJtYXgifSkpLHRoaXMucHJpY2VMaW5lcy5zZXQoRixrZSl9c2V0dXBUb29sdGlwKCl7dGhpcy5jaGFydCYmKHRoaXMudG9vbHRpcEVsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMudG9vbHRpcEVsLmNsYXNzTmFtZT0ibHctdG9vbHRpcCIsdGhpcy50b29sdGlwRWwuc3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5jaGFydENvbnRhaW5lciIpPy5hcHBlbmRDaGlsZCh0aGlzLnRvb2x0aXBFbCksdGhpcy5jaGFydC5zdWJzY3JpYmVDcm9zc2hhaXJNb3ZlKEY9PntpZighdGhpcy50b29sdGlwRWwpcmV0dXJuO2lmKCFGLnBvaW50fHwhRi50aW1lfHxGLnBvaW50Lng8MHx8Ri5wb2ludC55PDApe3RoaXMudG9vbHRpcEVsLnN0eWxlLmRpc3BsYXk9Im5vbmUiO3JldHVybn1sZXQgaj0hdGhpcy5nb0JyaWdodCx1ZT1qPyJoc2woMCAwJSA5JSkiOiJoc2woMCAwJSAxMDAlKSIsbGU9aj8iaHNsKDAgMCUgOTUlKSI6ImhzbCgwIDAlIDklKSIsUT1qPyJoc2woMCAwJSAxNC45JSkiOiJoc2woMCAwJSA4OS44JSkiLGllPXRoaXMuZ2V0U2VyaWVzQ29sb3JzKGopLHRlPSIiLGVlPTAsa2U9ITE7Zm9yKGxldFt5ZSxxXW9mIHRoaXMuc2VyaWVzQXBpcyl7bGV0IEE9Ri5zZXJpZXNEYXRhLmdldChxKTtpZihBJiYidmFsdWUiaW4gQSYmQS52YWx1ZSE9PXZvaWQgMCl7a2U9ITA7bGV0IHNlPWllW2VlJWllLmxlbmd0aF0sb2U9dGhpcy55QXhpc0Zvcm1hdHRlcihBLnZhbHVlKTt0ZSs9YDxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDttYXJnaW46JHtlZT4wPyI2cHgiOiIwIn0gMDsiPgogICAgICAgICAgICA8c3BhbiBzdHlsZT0iZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTBweDtoZWlnaHQ6MTBweDtiYWNrZ3JvdW5kOiR7c2V9O2JvcmRlci1yYWRpdXM6MnB4OyI+PC9zcGFuPgogICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6NTAwOyI+JHt5ZX06PC9zcGFuPgogICAgICAgICAgICA8c3BhbiBzdHlsZT0ibWFyZ2luLWxlZnQ6YXV0bztmb250LXdlaWdodDo2MDA7Ij4ke29lfTwvc3Bhbj4KICAgICAgICAgIDwvZGl2PmB9ZWUrK31pZigha2Upe3RoaXMudG9vbHRpcEVsLnN0eWxlLmRpc3BsYXk9Im5vbmUiO3JldHVybn10aGlzLnRvb2x0aXBFbC5pbm5lckhUTUw9dGUsT2JqZWN0LmFzc2lnbih0aGlzLnRvb2x0aXBFbC5zdHlsZSx7ZGlzcGxheToiYmxvY2siLGJhY2tncm91bmQ6dWUsY29sb3I6bGUsYm9yZGVyQ29sb3I6UX0pO2xldCBYPXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIuY2hhcnRDb250YWluZXIiKS5jbGllbnRXaWR0aCxaPUYucG9pbnQueCsxNjtaKzIwMD5YJiYoWj1GLnBvaW50LngtMjE2KSx0aGlzLnRvb2x0aXBFbC5zdHlsZS5sZWZ0PWAke1p9cHhgLHRoaXMudG9vbHRpcEVsLnN0eWxlLnRvcD1gJHtGLnBvaW50LnktMTZ9cHhgfSkpfWFzeW5jIGZpcnN0VXBkYXRlZCgpe2F3YWl0IHRoaXMuZG9tdG9vbHNQcm9taXNlLHRoaXMubGNCdW5kbGU9YXdhaXQgYW8uZ2V0SW5zdGFuY2UoKS5sb2FkTGlnaHR3ZWlnaHRDaGFydHMoKSxhd2FpdCBuZXcgUHJvbWlzZSh1ZT0+cmVxdWVzdEFuaW1hdGlvbkZyYW1lKHVlKSk7bGV0IEY9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5jaGFydENvbnRhaW5lciIpO2lmKCFGKXJldHVybjtsZXQgaj0hdGhpcy5nb0JyaWdodDt0cnl7dGhpcy5jaGFydD10aGlzLmxjQnVuZGxlLmNyZWF0ZUNoYXJ0KEYse2F1dG9TaXplOiEwLGxheW91dDp7YmFja2dyb3VuZDp7dHlwZTp0aGlzLmxjQnVuZGxlLkNvbG9yVHlwZS5Tb2xpZCxjb2xvcjoidHJhbnNwYXJlbnQifSx0ZXh0Q29sb3I6aj8iaHNsKDAgMCUgNjMuOSUpIjoiaHNsKDAgMCUgMjAlKSIsZm9udEZhbWlseTonLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAiU2Vnb2UgVUkiLCBzYW5zLXNlcmlmJyxmb250U2l6ZToxMixhdHRyaWJ1dGlvbkxvZ286ITF9LGdyaWQ6e3ZlcnRMaW5lczp7Y29sb3I6aj8iaHNsKDAgMCUgOC41JSkiOiJoc2woMCAwJSA5NS41JSkifSxob3J6TGluZXM6e2NvbG9yOmo/ImhzbCgwIDAlIDguNSUpIjoiaHNsKDAgMCUgOTUuNSUpIn19LHJpZ2h0UHJpY2VTY2FsZTp7Ym9yZGVyVmlzaWJsZTohMSxzY2FsZU1hcmdpbnM6e3RvcDouMSxib3R0b206LjF9fSx0aW1lU2NhbGU6e2JvcmRlclZpc2libGU6ITEsdGltZVZpc2libGU6ITAsc2Vjb25kc1Zpc2libGU6ITB9LGNyb3NzaGFpcjp7bW9kZTp0aGlzLmxjQnVuZGxlLkNyb3NzaGFpck1vZGUuTWFnbmV0fSxoYW5kbGVTY3JvbGw6ITEsaGFuZGxlU2NhbGU6ITF9KTtsZXQgdWU9dGhpcy5zZXJpZXMubGVuZ3RoPjA/dGhpcy5zZXJpZXM6W3tuYW1lOiJjcHUiLGRhdGE6W3t4OiIyMDI1LTAxLTE1VDAzOjAwOjAwIix5OjI1fSx7eDoiMjAyNS0wMS0xNVQwNzowMDowMCIseTozMH0se3g6IjIwMjUtMDEtMTVUMTE6MDA6MDAiLHk6MjB9LHt4OiIyMDI1LTAxLTE1VDE1OjAwOjAwIix5OjM1fSx7eDoiMjAyNS0wMS0xNVQxOTowMDowMCIseToyNX1dfSx7bmFtZToibWVtb3J5IixkYXRhOlt7eDoiMjAyNS0wMS0xNVQwMzowMDowMCIseToxMH0se3g6IjIwMjUtMDEtMTVUMDc6MDA6MDAiLHk6MTJ9LHt4OiIyMDI1LTAxLTE1VDExOjAwOjAwIix5OjEwfSx7eDoiMjAyNS0wMS0xNVQxNTowMDowMCIseTozMH0se3g6IjIwMjUtMDEtMTVUMTk6MDA6MDAiLHk6NDB9XX1dO3RoaXMuaW50ZXJuYWxDaGFydERhdGE9dWUsdGhpcy5yZWNyZWF0ZVNlcmllcyh1ZSksdGhpcy5zZXR1cFRvb2x0aXAoKX1jYXRjaCh1ZSl7Y29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGluaXRpYWxpemUgY2hhcnQ6Iix1ZSl9fWFzeW5jIHVwZGF0ZWQoRil7aWYoc3VwZXIudXBkYXRlZChGKSxGLmhhcygiZ29CcmlnaHQiKSYmdGhpcy5jaGFydCYmdGhpcy5hcHBseVRoZW1lKCksRi5oYXMoInNlcmllcyIpJiZ0aGlzLmNoYXJ0JiZ0aGlzLnNlcmllcy5sZW5ndGg+MCYmYXdhaXQgdGhpcy51cGRhdGVTZXJpZXModGhpcy5zZXJpZXMpLEYuaGFzKCJ5QXhpc0Zvcm1hdHRlciIpJiZ0aGlzLmNoYXJ0LEYuaGFzKCJyZWFsdGltZU1vZGUiKSYmdGhpcy5jaGFydCYmKHRoaXMucmVhbHRpbWVNb2RlJiZ0aGlzLnJvbGxpbmdXaW5kb3c+MCYmdGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWw+MD90aGlzLnN0YXJ0QXV0b1Njcm9sbCgpOnRoaXMuc3RvcEF1dG9TY3JvbGwoKSksRi5oYXMoImF1dG9TY3JvbGxJbnRlcnZhbCIpJiZ0aGlzLmNoYXJ0JiYodGhpcy5zdG9wQXV0b1Njcm9sbCgpLHRoaXMucmVhbHRpbWVNb2RlJiZ0aGlzLnJvbGxpbmdXaW5kb3c+MCYmdGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWw+MCYmdGhpcy5zdGFydEF1dG9TY3JvbGwoKSksKEYuaGFzKCJ5QXhpc1NjYWxpbmciKXx8Ri5oYXMoInlBeGlzTWF4IikpJiZ0aGlzLmNoYXJ0KWZvcihsZXRbLGpdb2YgdGhpcy5zZXJpZXNBcGlzKXRoaXMueUF4aXNTY2FsaW5nPT09ImR5bmFtaWMiP2ouYXBwbHlPcHRpb25zKHthdXRvc2NhbGVJbmZvUHJvdmlkZXI6dm9pZCAwfSk6ai5hcHBseU9wdGlvbnMoe2F1dG9zY2FsZUluZm9Qcm92aWRlcjppKCgpPT4oe3ByaWNlUmFuZ2U6e21pblZhbHVlOjAsbWF4VmFsdWU6dGhpcy55QXhpc01heH19KSwiYXV0b3NjYWxlSW5mb1Byb3ZpZGVyIil9KX1hc3luYyB1cGRhdGVTZXJpZXMoRixqPSEwKXtpZih0aGlzLmNoYXJ0KXRyeXtpZih0aGlzLmludGVybmFsQ2hhcnREYXRhPUYsdGhpcy5yb2xsaW5nV2luZG93PjAmJnRoaXMucmVhbHRpbWVNb2RlKXtsZXQgdWU9RGF0ZS5ub3coKSxsZT11ZS10aGlzLnJvbGxpbmdXaW5kb3c7aWYoRi5sZW5ndGghPT10aGlzLnNlcmllc0FwaXMuc2l6ZSl0aGlzLnJlY3JlYXRlU2VyaWVzKEYpO2Vsc2V7bGV0IFE9dGhpcy5nZXRTZXJpZXNDb2xvcnMoIXRoaXMuZ29CcmlnaHQpO0YuZm9yRWFjaCgoaWUsdGUpPT57bGV0IGVlPWllLm5hbWV8fGBzZXJpZXMtJHt0ZX1gLGtlPXRoaXMuc2VyaWVzQXBpcy5nZXQoZWUpO2lmKCFrZSlyZXR1cm47bGV0IFg9aWUuZGF0YS5maWx0ZXIoWj0+KHR5cGVvZiBaLng9PSJudW1iZXIiP1oueDpuZXcgRGF0ZShaLngpLmdldFRpbWUoKSk+bGUpO2tlLnNldERhdGEodGhpcy5jb252ZXJ0RGF0YVRvTEMoWCkpLHRoaXMudXBkYXRlUHJpY2VMaW5lcyhlZSxrZSxYLFFbdGUlUS5sZW5ndGhdKX0pLHRoaXMuY29tcHV0ZVN0YXRzKEYpfXRyeXt0aGlzLmNoYXJ0LnRpbWVTY2FsZSgpLnNldFZpc2libGVSYW5nZSh7ZnJvbTpNYXRoLmZsb29yKGxlLzFlMyksdG86TWF0aC5mbG9vcih1ZS8xZTMpfSl9Y2F0Y2h7fWlmKHRoaXMueUF4aXNTY2FsaW5nPT09ImR5bmFtaWMiKXtsZXQgUT1GLmZsYXRNYXAoaWU9PmllLmRhdGEuZmlsdGVyKHRlPT4odHlwZW9mIHRlLng9PSJudW1iZXIiP3RlLng6bmV3IERhdGUodGUueCkuZ2V0VGltZSgpKT5sZSkubWFwKHRlPT50ZS55KSk7aWYoUS5sZW5ndGg+MCl7bGV0IGllPU1hdGguY2VpbChNYXRoLm1heCguLi5RKSoxLjEpO2ZvcihsZXRbLHRlXW9mIHRoaXMuc2VyaWVzQXBpcyl0ZS5hcHBseU9wdGlvbnMoe2F1dG9zY2FsZUluZm9Qcm92aWRlcjppKCgpPT4oe3ByaWNlUmFuZ2U6e21pblZhbHVlOjAsbWF4VmFsdWU6aWV9fSksImF1dG9zY2FsZUluZm9Qcm92aWRlciIpfSl9fX1lbHNlIGlmKEYubGVuZ3RoIT09dGhpcy5zZXJpZXNBcGlzLnNpemUpdGhpcy5yZWNyZWF0ZVNlcmllcyhGKTtlbHNle2xldCB1ZT10aGlzLmdldFNlcmllc0NvbG9ycyghdGhpcy5nb0JyaWdodCk7Ri5mb3JFYWNoKChsZSxRKT0+e2xldCBpZT1sZS5uYW1lfHxgc2VyaWVzLSR7UX1gLHRlPXRoaXMuc2VyaWVzQXBpcy5nZXQoaWUpO3RlJiYodGUuc2V0RGF0YSh0aGlzLmNvbnZlcnREYXRhVG9MQyhsZS5kYXRhKSksdGhpcy51cGRhdGVQcmljZUxpbmVzKGllLHRlLGxlLmRhdGEsdWVbUSV1ZS5sZW5ndGhdKSl9KSx0aGlzLmNvbXB1dGVTdGF0cyhGKX19Y2F0Y2godWUpe2NvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byB1cGRhdGUgY2hhcnQgc2VyaWVzOiIsdWUpfX1hc3luYyB1cGRhdGVUaW1lV2luZG93KCl7aWYoIXRoaXMuY2hhcnR8fHRoaXMucm9sbGluZ1dpbmRvdzw9MClyZXR1cm47bGV0IEY9RGF0ZS5ub3coKSxqPUYtdGhpcy5yb2xsaW5nV2luZG93O3RyeXt0aGlzLmNoYXJ0LnRpbWVTY2FsZSgpLnNldFZpc2libGVSYW5nZSh7ZnJvbTpNYXRoLmZsb29yKGovMWUzKSx0bzpNYXRoLmZsb29yKEYvMWUzKX0pfWNhdGNoe319YXN5bmMgYXBwZW5kRGF0YShGKXt0aGlzLmNoYXJ0JiZGLmZvckVhY2goKGosdWUpPT57bGV0IGxlPWoubmFtZXx8YHNlcmllcy0ke3VlfWAsUT10aGlzLnNlcmllc0FwaXMuZ2V0KGxlKTtpZighKCFRfHxqLmRhdGEubGVuZ3RoPT09MCkpZm9yKGxldCBpZSBvZiBqLmRhdGEpe2xldCB0ZT10aGlzLmNvbnZlcnREYXRhVG9MQyhbaWVdKTt0ZS5sZW5ndGg+MCYmUS51cGRhdGUodGVbMF0pfX0pfWFzeW5jIHVwZGF0ZU9wdGlvbnMoRil7dGhpcy5jaGFydCYmdGhpcy5jaGFydC5hcHBseU9wdGlvbnMoRil9YXN5bmMgcmVzaXplQ2hhcnQoKXt0aGlzLmNoYXJ0JiZ0aGlzLmNoYXJ0LnRpbWVTY2FsZSgpLmZpdENvbnRlbnQoKX1hc3luYyBmb3JjZVJlc2l6ZSgpe2F3YWl0IHRoaXMucmVzaXplQ2hhcnQoKX10b2dnbGVGdWxsUGFnZSgpe3RoaXMuaXNGdWxsUGFnZT0hdGhpcy5pc0Z1bGxQYWdlLHRoaXMuaXNGdWxsUGFnZT8odGhpcy5zdHlsZS5wb3NpdGlvbj0iZml4ZWQiLHRoaXMuc3R5bGUuaW5zZXQ9IjAiLHRoaXMuc3R5bGUuekluZGV4PSIxMDAwMCIsdGhpcy5zdHlsZS5oZWlnaHQ9IjEwMHZoIix0aGlzLnN0eWxlLnBhZGRpbmc9IjAiLGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIpOih0aGlzLnN0eWxlLnBvc2l0aW9uPSIiLHRoaXMuc3R5bGUuaW5zZXQ9IiIsdGhpcy5zdHlsZS56SW5kZXg9IiIsdGhpcy5zdHlsZS5oZWlnaHQ9IiIsdGhpcy5zdHlsZS5wYWRkaW5nPSIiLGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3c9IiIpLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3RoaXMuY2hhcnQ/LnRpbWVTY2FsZSgpLmZpdENvbnRlbnQoKX0pfXN0YXJ0QXV0b1Njcm9sbCgpe3RoaXMuYXV0b1Njcm9sbFRpbWVyfHwodGhpcy5hdXRvU2Nyb2xsVGltZXI9d2luZG93LnNldEludGVydmFsKCgpPT57dGhpcy51cGRhdGVUaW1lV2luZG93KCl9LHRoaXMuYXV0b1Njcm9sbEludGVydmFsKSl9c3RvcEF1dG9TY3JvbGwoKXt0aGlzLmF1dG9TY3JvbGxUaW1lciYmKHdpbmRvdy5jbGVhckludGVydmFsKHRoaXMuYXV0b1Njcm9sbFRpbWVyKSx0aGlzLmF1dG9TY3JvbGxUaW1lcj1udWxsKX1zdGF0aWN7UGkoYSx0KX19O3JldHVybiBoZT1hfSkoKX0pO3ZhciB4eGE9ZygoKT0+e1pudCgpfSk7ZnVuY3Rpb24gZjQocyl7cmV0dXJuIHM/a3hhLmxpZ2h0Omt4YS5kYXJrfWZ1bmN0aW9uIG00KHMsZSl7bGV0IHQ9cGFyc2VJbnQocy5zbGljZSgxLDMpLDE2KSxhPXBhcnNlSW50KHMuc2xpY2UoMyw1KSwxNikscj1wYXJzZUludChzLnNsaWNlKDUsNyksMTYpO3JldHVybmByZ2JhKCR7dH0sICR7YX0sICR7cn0sICR7ZX0pYH1mdW5jdGlvbiBTeGEocyl7bGV0IGU9cz95eGE6d3hhO3JldHVybntiYWNrZ3JvdW5kQ29sb3I6InRyYW5zcGFyZW50Iix0ZXh0U3R5bGU6e2NvbG9yOmUudGV4dFNlY29uZGFyeSxmb250RmFtaWx5OictYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIHNhbnMtc2VyaWYnLGZvbnRTaXplOjEyfSx0b29sdGlwOntiYWNrZ3JvdW5kQ29sb3I6ZS5iZ1ByaW1hcnksYm9yZGVyQ29sb3I6ZS5ib3JkZXJEZWZhdWx0LHRleHRTdHlsZTp7Y29sb3I6ZS50ZXh0UHJpbWFyeSxmb250U2l6ZToxMn0sY29uZmluZTohMH0sbGVnZW5kOnt0ZXh0U3R5bGU6e2NvbG9yOmUudGV4dFNlY29uZGFyeSxmb250U2l6ZToxMn19fX1mdW5jdGlvbiBnNChzKXtyZXR1cm4gcz95eGE6d3hhfXZhciB5eGEsd3hhLGt4YSxfeD1nKCgpPT57aHQoKTt5eGE9WGMuY29sb3JzLmxpZ2h0LHd4YT1YYy5jb2xvcnMuZGFyayxreGE9e2Rhcms6WyIjNjBhNWZhIiwiIzJkZDRiZiIsIiNhNzhiZmEiLCIjZmJiZjI0IiwiIzM0ZDM5OSIsIiNmYjcxODUiXSxsaWdodDpbIiMzYjgyZjYiLCIjMTRiOGE2IiwiIzhiNWNmNiIsIiNmNTllMGIiLCIjMTBiOTgxIiwiI2Y0M2Y1ZSJdfTtpKGY0LCJnZXRFY2hhcnRzU2VyaWVzQ29sb3JzIik7aShtNCwiaGV4VG9SZ2JhIik7aShTeGEsImdldEVjaGFydHNUaGVtZU9wdGlvbnMiKTtpKGc0LCJnZXRUaGVtZUNvbG9ycyIpfSk7dmFyIGJlcyxfeGEsSHUsVVE9ZygoKT0+e3BlKCk7a3QoKTtPdSgpO194KCk7bXIoKTtiZXM9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LF94YT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sSHU9KCgpPT57bGV0IHM9d2UsZSx0PVtdLGE9W107cmV0dXJuIGNsYXNzIGV4dGVuZHMgc3tzdGF0aWN7aSh0aGlzLCJEZWVzQ2hhcnRFY2hhcnRzQmFzZSIpfXN0YXRpY3tsZXQgbj10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShzW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtlPVtMKCldLGJlcyh0aGlzLG51bGwsZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImxhYmVsIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKG89PiJsYWJlbCJpbiBvLCJoYXMiKSxnZXQ6aShvPT5vLmxhYmVsLCJnZXQiKSxzZXQ6aSgobyxsKT0+e28ubGFiZWw9bH0sInNldCIpfSxtZXRhZGF0YTpufSx0LGEpLG4mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6bn0pfSNlPV94YSh0aGlzLHQsIlVudGl0bGVkIENoYXJ0Iik7Z2V0IGxhYmVsKCl7cmV0dXJuIHRoaXMuI2V9c2V0IGxhYmVsKG4pe3RoaXMuI2U9bn1jaGFydEluc3RhbmNlPShfeGEodGhpcyxhKSxudWxsKTtlY2hhcnRzQnVuZGxlPW51bGw7cmVzaXplT2JzZXJ2ZXI9bnVsbDtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGEuc2V0dXAoKSx0aGlzLnJlZ2lzdGVyR2FyYmFnZUZ1bmN0aW9uKGFzeW5jKCk9PntpZih0aGlzLnJlc2l6ZU9ic2VydmVyJiYodGhpcy5yZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCksdGhpcy5yZXNpemVPYnNlcnZlcj1udWxsKSx0aGlzLmNoYXJ0SW5zdGFuY2UpdHJ5e3RoaXMuY2hhcnRJbnN0YW5jZS5kaXNwb3NlKCksdGhpcy5jaGFydEluc3RhbmNlPW51bGx9Y2F0Y2gobil7Y29uc29sZS5lcnJvcigiRXJyb3IgZGlzcG9zaW5nIEVDaGFydHMgaW5zdGFuY2U6IixuKX19KX1yZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRlZXMtdGlsZT4KICAgICAgICA8ZGl2IHNsb3Q9ImhlYWRlciIgY2xhc3M9ImNoYXJ0SGVhZGVyIj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJjaGFydExhYmVsIj4ke3RoaXMubGFiZWx9PC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNoYXJ0Q29udGFpbmVyIj48L2Rpdj4KICAgICAgPC9kZWVzLXRpbGU+CiAgICBgfWFzeW5jIGZpcnN0VXBkYXRlZCgpe2F3YWl0IHRoaXMuZG9tdG9vbHNQcm9taXNlLHRoaXMuZWNoYXJ0c0J1bmRsZT1hd2FpdCBhby5nZXRJbnN0YW5jZSgpLmxvYWRFY2hhcnRzKCksYXdhaXQgbmV3IFByb21pc2Uobz0+cmVxdWVzdEFuaW1hdGlvbkZyYW1lKG8pKTtsZXQgbj10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLmNoYXJ0Q29udGFpbmVyIik7aWYobil0cnl7dGhpcy5jaGFydEluc3RhbmNlPXRoaXMuZWNoYXJ0c0J1bmRsZS5pbml0KG4sbnVsbCx7cmVuZGVyZXI6InN2ZyJ9KSx0aGlzLnVwZGF0ZUNoYXJ0KCksdGhpcy5yZXNpemVPYnNlcnZlcj1uZXcgUmVzaXplT2JzZXJ2ZXIoKCk9Pnt0aGlzLmNoYXJ0SW5zdGFuY2U/LnJlc2l6ZSgpfSksdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKG4pfWNhdGNoKG8pe2NvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBpbml0aWFsaXplIEVDaGFydHM6IixvKX19YXN5bmMgdXBkYXRlZChuKXtzdXBlci51cGRhdGVkKG4pLG4uaGFzKCJnb0JyaWdodCIpJiZ0aGlzLmNoYXJ0SW5zdGFuY2UmJnRoaXMuYXBwbHlUaGVtZSgpfXVwZGF0ZUNoYXJ0KCl7aWYoIXRoaXMuY2hhcnRJbnN0YW5jZSlyZXR1cm47bGV0IG49U3hhKHRoaXMuZ29CcmlnaHQpLG89dGhpcy5idWlsZE9wdGlvbigpLGw9ey4uLm4sLi4ubyx0ZXh0U3R5bGU6ey4uLm4udGV4dFN0eWxlLC4uLm8udGV4dFN0eWxlfHx7fX0sdG9vbHRpcDp7Li4ubi50b29sdGlwLC4uLm8udG9vbHRpcHx8e319LGxlZ2VuZDp7Li4ubi5sZWdlbmQsLi4uby5sZWdlbmR8fHt9LHRleHRTdHlsZTp7Li4ubi5sZWdlbmQ/LnRleHRTdHlsZXx8e30sLi4uby5sZWdlbmQ/LnRleHRTdHlsZXx8e319fX07dGhpcy5jaGFydEluc3RhbmNlLnNldE9wdGlvbihsLCEwKX1hcHBseVRoZW1lKCl7dGhpcy51cGRhdGVDaGFydCgpfWFzeW5jIGZvcmNlUmVzaXplKCl7dGhpcy5jaGFydEluc3RhbmNlPy5yZXNpemUoKX19fSkoKX0pO3ZhciBNeGEsenhhPWcoKCk9PntwZSgpO0l0KCk7WG50KCk7TXhhPWkoKCk9PntsZXQgcz1bIi9hcGkvdXNlcnMiLCIvYXBpL29yZGVycyIsIi9hcGkvcHJvZHVjdHMiLCIvYXBpL2F1dGgiLCIvYXBpL3NlYXJjaCJdLGU9W3tuYW1lOiJHRVQiLGRhdGE6WzEyNDAsODkwLDcyMCwyMTAwLDU2MF19LHtuYW1lOiJQT1NUIixkYXRhOlszMjAsNDUwLDE4MCw4OTAsNDBdfSx7bmFtZToiUFVUIixkYXRhOls5MCwyMTAsMTUwLDMwLDEwXX1dLHQ9WyJVUy1FYXN0IiwiVVMtV2VzdCIsIkVVIiwiQXNpYSIsIk90aGVyIl0sYT1be25hbWU6IlJlcXVlc3RzIixkYXRhOls0NTAwLDMyMDAsMjgwMCwxOTAwLDYwMF19XTtyZXR1cm4gd2AKICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHI9PntsZXQgbj1yLnF1ZXJ5U2VsZWN0b3IoIiN2ZXJ0LWNoYXJ0Iiksbz1yLnF1ZXJ5U2VsZWN0b3IoIiNob3Jpei1jaGFydCIpLGw9ci5xdWVyeVNlbGVjdG9yKCIjc3RhY2stY2hhcnQiKTtyLnF1ZXJ5U2VsZWN0b3JBbGwoImRlZXMtYnV0dG9uIikuZm9yRWFjaChkPT57ZC50ZXh0Py50cmltKCk9PT0iUmFuZG9taXplIiYmZC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PntuLnNlcmllcz1lLm1hcChjPT4oey4uLmMsZGF0YTpjLmRhdGEubWFwKGI9Pk1hdGgucm91bmQoYiooLjUrTWF0aC5yYW5kb20oKSkpKX0pKSxvLnNlcmllcz1hLm1hcChjPT4oey4uLmMsZGF0YTpjLmRhdGEubWFwKGI9Pk1hdGgucm91bmQoYiooLjUrTWF0aC5yYW5kb20oKSkpKX0pKSxsLnNlcmllcz1lLm1hcChjPT4oey4uLmMsZGF0YTpjLmRhdGEubWFwKGI9Pk1hdGgucm91bmQoYiooLjUrTWF0aC5yYW5kb20oKSkpKX0pKX0pfSl9fT4KICAgICAgPHN0eWxlPgogICAgICAgICR7SmAKICAgICAgICAgIC5kZW1vQm94IHsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTUlKSIsImhzbCgwIDAlIDklKSIpfTsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgcGFkZGluZzogNDBweDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgICAgfQogICAgICAgICAgLmNoYXJ0Um93IHsKICAgICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOwogICAgICAgICAgICBnYXA6IDI0cHg7CiAgICAgICAgICB9CiAgICAgICAgICAuY29udHJvbHMgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgICAgIH0KICAgICAgICAgIC5pbmZvIHsKICAgICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1LjQgMTYuMyUgNTYuOSUpIiwiaHNsKDIxNSAyMC4yJSA1NS4xJSkiKX07CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgJ0dlaXN0IFNhbnMnLCBzYW5zLXNlcmlmOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDhweDsKICAgICAgICAgIH0KICAgICAgICBgfQogICAgICA8L3N0eWxlPgogICAgICA8ZGl2IGNsYXNzPSJkZW1vQm94Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9scyI+CiAgICAgICAgICA8ZGVlcy1idXR0b24tZ3JvdXAgbGFiZWw9IkFjdGlvbnM6Ij4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uPlJhbmRvbWl6ZTwvZGVlcy1idXR0b24+CiAgICAgICAgICA8L2RlZXMtYnV0dG9uLWdyb3VwPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJjaGFydFJvdyI+CiAgICAgICAgICA8ZGVlcy1jaGFydC1iYXIKICAgICAgICAgICAgaWQ9InZlcnQtY2hhcnQiCiAgICAgICAgICAgIC5sYWJlbD0keyJSZXF1ZXN0cyBieSBFbmRwb2ludCJ9CiAgICAgICAgICAgIC5jYXRlZ29yaWVzPSR7c30KICAgICAgICAgICAgLnNlcmllcz0ke2V9CiAgICAgICAgICAgIC52YWx1ZUZvcm1hdHRlcj0ke3I9PmAke3J9IHJlcWB9CiAgICAgICAgICA+PC9kZWVzLWNoYXJ0LWJhcj4KCiAgICAgICAgICA8ZGVlcy1jaGFydC1iYXIKICAgICAgICAgICAgaWQ9Imhvcml6LWNoYXJ0IgogICAgICAgICAgICAubGFiZWw9JHsiVHJhZmZpYyBieSBSZWdpb24ifQogICAgICAgICAgICAuY2F0ZWdvcmllcz0ke3R9CiAgICAgICAgICAgIC5zZXJpZXM9JHthfQogICAgICAgICAgICAuaG9yaXpvbnRhbD0keyEwfQogICAgICAgICAgICAudmFsdWVGb3JtYXR0ZXI9JHtyPT5gJHsoci8xZTMpLnRvRml4ZWQoMSl9a2B9CiAgICAgICAgICA+PC9kZWVzLWNoYXJ0LWJhcj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRlZXMtY2hhcnQtYmFyCiAgICAgICAgICBpZD0ic3RhY2stY2hhcnQiCiAgICAgICAgICAubGFiZWw9JHsiU3RhY2tlZDogUmVxdWVzdHMgYnkgRW5kcG9pbnQifQogICAgICAgICAgLmNhdGVnb3JpZXM9JHtzfQogICAgICAgICAgLnNlcmllcz0ke2V9CiAgICAgICAgICAuc3RhY2tlZD0keyEwfQogICAgICAgICAgLnZhbHVlRm9ybWF0dGVyPSR7cj0+YCR7cn0gcmVxYH0KICAgICAgICA+PC9kZWVzLWNoYXJ0LWJhcj4KCiAgICAgICAgPGRpdiBjbGFzcz0iaW5mbyI+CiAgICAgICAgICBCYXIgY2hhcnQgd2l0aCB2ZXJ0aWNhbCwgaG9yaXpvbnRhbCwgYW5kIHN0YWNrZWQgbW9kZXMg4oCiCiAgICAgICAgICBDbGljayAnUmFuZG9taXplJyB0byB1cGRhdGUgZGF0YSB3aXRoIGFuaW1hdGlvbgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KICBgfSwiZGVtb0Z1bmMiKX0pO3ZhciBiNCxXUT1nKCgpPT57cGUoKTtodCgpO2I0PVtxZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgIDpob3N0IHsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIGhlaWdodDogNDAwcHg7CiAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsICdSb2JvdG8nLCBzYW5zLXNlcmlmOwogICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICBmb250LXNpemU6IDE0cHg7CiAgICB9CiAgICBkZWVzLXRpbGUgewogICAgICBoZWlnaHQ6IDEwMCU7CiAgICB9CiAgICAuY2hhcnRIZWFkZXIgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICBoZWlnaHQ6IDMycHg7CiAgICAgIHBhZGRpbmc6IDAgOHB4IDAgMTZweDsKICAgIH0KICAgIC5jaGFydExhYmVsIHsKICAgICAgZmxleDogMTsKICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICBmb250LXdlaWdodDogNTAwOwogICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTsKICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOwogICAgfQogICAgLmNoYXJ0Q29udGFpbmVyIHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICBpbnNldDogMDsKICAgIH0KICBgXX0pO3ZhciBDeGEsVHhhPWcoKCk9PntwZSgpO1dRKCk7Q3hhPVsuLi5iNCxKYGBdfSk7dmFyICR4YSxEeGE9ZygoKT0+e3BlKCk7JHhhPWkocz0+d2AKICAgIDxkZWVzLXRpbGU+CiAgICAgIDxkaXYgc2xvdD0iaGVhZGVyIiBjbGFzcz0iY2hhcnRIZWFkZXIiPgogICAgICAgIDxzcGFuIGNsYXNzPSJjaGFydExhYmVsIj4ke3MubGFiZWx9PC9zcGFuPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2hhcnRDb250YWluZXIiPjwvZGl2PgogICAgPC9kZWVzLXRpbGU+CiAgYCwicmVuZGVyQ2hhcnRCYXIiKX0pO3ZhciBzNyxjYyx2ZXMsWG50PWcoKCk9PntwZSgpO1VRKCk7enhhKCk7VHhhKCk7RHhhKCk7X3goKTtzNz1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sY2M9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LHZlcz0oKCk9PntsZXQgcz1bbmUoImRlZXMtY2hhcnQtYmFyIildLGUsdD1bXSxhLHI9SHUsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W107dmFyIE89Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNDaGFydEJhciIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCAkPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6QXJyYXl9KV0scD1bTCh7dHlwZTpBcnJheX0pXSxjPVtMKHt0eXBlOkJvb2xlYW59KV0seD1bTCh7dHlwZTpCb29sZWFufSldLHk9W0woe3R5cGU6Qm9vbGVhbn0pXSxOPVtMKHthdHRyaWJ1dGU6ITF9KV0sczcodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjYXRlZ29yaWVzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEU9PiJjYXRlZ29yaWVzImluIEUsImhhcyIpLGdldDppKEU9PkUuY2F0ZWdvcmllcywiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLmNhdGVnb3JpZXM9SH0sInNldCIpfSxtZXRhZGF0YTokfSxvLGwpLHM3KHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VyaWVzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEU9PiJzZXJpZXMiaW4gRSwiaGFzIiksZ2V0OmkoRT0+RS5zZXJpZXMsImdldCIpLHNldDppKChFLEgpPT57RS5zZXJpZXM9SH0sInNldCIpfSxtZXRhZGF0YTokfSxkLHUpLHM3KHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaG9yaXpvbnRhbCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShFPT4iaG9yaXpvbnRhbCJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLmhvcml6b250YWwsImdldCIpLHNldDppKChFLEgpPT57RS5ob3Jpem9udGFsPUh9LCJzZXQiKX0sbWV0YWRhdGE6JH0sYix2KSxzNyh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InN0YWNrZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+InN0YWNrZWQiaW4gRSwiaGFzIiksZ2V0OmkoRT0+RS5zdGFja2VkLCJnZXQiKSxzZXQ6aSgoRSxIKT0+e0Uuc3RhY2tlZD1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LG0sZiksczcodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93TGVnZW5kIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEU9PiJzaG93TGVnZW5kImluIEUsImhhcyIpLGdldDppKEU9PkUuc2hvd0xlZ2VuZCwiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLnNob3dMZWdlbmQ9SH0sInNldCIpfSxtZXRhZGF0YTokfSxNLHopLHM3KHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidmFsdWVGb3JtYXR0ZXIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+InZhbHVlRm9ybWF0dGVyImluIEUsImhhcyIpLGdldDppKEU9PkUudmFsdWVGb3JtYXR0ZXIsImdldCIpLHNldDppKChFLEgpPT57RS52YWx1ZUZvcm1hdHRlcj1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LEMsXyksczcobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6JH0sbnVsbCx0KSxPPWE9ZS52YWx1ZSwkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOiR9KX1zdGF0aWMgZGVtbz1NeGE7c3RhdGljIGRlbW9Hcm91cHM9WyJDaGFydCJdOyNlPWNjKHRoaXMsbyxbXSk7Z2V0IGNhdGVnb3JpZXMoKXtyZXR1cm4gdGhpcy4jZX1zZXQgY2F0ZWdvcmllcygkKXt0aGlzLiNlPSR9I3Q9KGNjKHRoaXMsbCksY2ModGhpcyxkLFtdKSk7Z2V0IHNlcmllcygpe3JldHVybiB0aGlzLiN0fXNldCBzZXJpZXMoJCl7dGhpcy4jdD0kfSNhPShjYyh0aGlzLHUpLGNjKHRoaXMsYiwhMSkpO2dldCBob3Jpem9udGFsKCl7cmV0dXJuIHRoaXMuI2F9c2V0IGhvcml6b250YWwoJCl7dGhpcy4jYT0kfSNzPShjYyh0aGlzLHYpLGNjKHRoaXMsbSwhMSkpO2dldCBzdGFja2VkKCl7cmV0dXJuIHRoaXMuI3N9c2V0IHN0YWNrZWQoJCl7dGhpcy4jcz0kfSNpPShjYyh0aGlzLGYpLGNjKHRoaXMsTSwhMCkpO2dldCBzaG93TGVnZW5kKCl7cmV0dXJuIHRoaXMuI2l9c2V0IHNob3dMZWdlbmQoJCl7dGhpcy4jaT0kfSNyPShjYyh0aGlzLHopLGNjKHRoaXMsQywkPT5gJHskfWApKTtnZXQgdmFsdWVGb3JtYXR0ZXIoKXtyZXR1cm4gdGhpcy4jcn1zZXQgdmFsdWVGb3JtYXR0ZXIoJCl7dGhpcy4jcj0kfXN0YXRpYyBzdHlsZXM9Q3hhO3JlbmRlcigpe3JldHVybiAkeGEodGhpcyl9YXN5bmMgdXBkYXRlZCgkKXtzdXBlci51cGRhdGVkKCQpLHRoaXMuY2hhcnRJbnN0YW5jZSYmKCQuaGFzKCJjYXRlZ29yaWVzIil8fCQuaGFzKCJzZXJpZXMiKXx8JC5oYXMoImhvcml6b250YWwiKXx8JC5oYXMoInN0YWNrZWQiKXx8JC5oYXMoInNob3dMZWdlbmQiKSkmJnRoaXMudXBkYXRlQ2hhcnQoKX1idWlsZE9wdGlvbigpe2xldCAkPWc0KHRoaXMuZ29CcmlnaHQpLEU9ZjQodGhpcy5nb0JyaWdodCksSD10aGlzLnZhbHVlRm9ybWF0dGVyLGs9e3R5cGU6ImNhdGVnb3J5IixkYXRhOnRoaXMuY2F0ZWdvcmllcyxheGlzTGluZTp7bGluZVN0eWxlOntjb2xvcjokLmJvcmRlclN0cm9uZ319LGF4aXNMYWJlbDp7Y29sb3I6JC50ZXh0TXV0ZWR9fSxTPXt0eXBlOiJ2YWx1ZSIsYXhpc0xpbmU6e3Nob3c6ITF9LGF4aXNMYWJlbDp7Y29sb3I6JC50ZXh0TXV0ZWQsZm9ybWF0dGVyOmkoVz0+SChXKSwiZm9ybWF0dGVyIil9LHNwbGl0TGluZTp7bGluZVN0eWxlOntjb2xvcjokLmJvcmRlclN1YnRsZX19fSxJPXRoaXMuZ29CcmlnaHQ/LjE1Oi4yNSxQPXRoaXMuaG9yaXpvbnRhbD9bMCw0LDQsMF06WzQsNCwwLDBdLFI9WzAsMCwwLDBdLEs9W10sVj10aGlzLnNlcmllcy5tYXAoKFcsbWUpPT57bGV0IEI9Vy5jb2xvcnx8RVttZSVFLmxlbmd0aF07cmV0dXJuIEsucHVzaCh7bmFtZTpXLm5hbWUsaXRlbVN0eWxlOntjb2xvcjpCfX0pLHtuYW1lOlcubmFtZSx0eXBlOiJiYXIiLGRhdGE6Vy5kYXRhLHN0YWNrOnRoaXMuc3RhY2tlZD8idG90YWwiOnZvaWQgMCxpdGVtU3R5bGU6e2NvbG9yOm00KEIsSSksYm9yZGVyQ29sb3I6Qixib3JkZXJXaWR0aDoxLGJvcmRlclJhZGl1czp0aGlzLnN0YWNrZWQ/UjpQfSxiYXJNYXhXaWR0aDo0MCxiYXJHYXA6IjIwJSIsZW1waGFzaXM6e2l0ZW1TdHlsZTp7Y29sb3I6bTQoQixJKy4xNSksYm9yZGVyQ29sb3I6Qixib3JkZXJXaWR0aDoxLjV9fX19KTtpZih0aGlzLnN0YWNrZWQmJlYubGVuZ3RoPjApe2xldCBXPVZbVi5sZW5ndGgtMV07Vy5pdGVtU3R5bGUuYm9yZGVyUmFkaXVzPVB9cmV0dXJue3Rvb2x0aXA6e3RyaWdnZXI6ImF4aXMiLGF4aXNQb2ludGVyOnt0eXBlOiJzaGFkb3cifSxmb3JtYXR0ZXI6aShXPT57bGV0IG1lPUFycmF5LmlzQXJyYXkoVyk/VzpbV10sQj1gPHN0cm9uZz4ke21lWzBdLmF4aXNWYWx1ZUxhYmVsfTwvc3Ryb25nPjxici8+YDtmb3IobGV0IFUgb2YgbWUpe2xldCBGPWA8c3BhbiBzdHlsZT0iZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLXJpZ2h0OjRweDtib3JkZXItcmFkaXVzOjEwcHg7d2lkdGg6MTBweDtoZWlnaHQ6MTBweDtiYWNrZ3JvdW5kLWNvbG9yOiR7VS5ib3JkZXJDb2xvcnx8VS5jb2xvcn07Ij48L3NwYW4+YDtCKz1gJHtGfSR7VS5zZXJpZXNOYW1lfTogPHN0cm9uZz4ke0goVS52YWx1ZSl9PC9zdHJvbmc+PGJyLz5gfXJldHVybiBCfSwiZm9ybWF0dGVyIil9LGxlZ2VuZDp0aGlzLnNob3dMZWdlbmQmJnRoaXMuc2VyaWVzLmxlbmd0aD4xP3tib3R0b206OCxpdGVtV2lkdGg6MTAsaXRlbUhlaWdodDoxMCxkYXRhOkt9OntzaG93OiExfSxncmlkOntsZWZ0OjE2LHJpZ2h0OjE2LHRvcDoxNixib3R0b206dGhpcy5zaG93TGVnZW5kJiZ0aGlzLnNlcmllcy5sZW5ndGg+MT80MDoxNixjb250YWluTGFiZWw6ITB9LHhBeGlzOnRoaXMuaG9yaXpvbnRhbD9TOmsseUF4aXM6dGhpcy5ob3Jpem9udGFsP2s6UyxzZXJpZXM6Vn19Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLGNjKHRoaXMsXyl9c3RhdGlje2NjKGEsdCl9fTtyZXR1cm4gTz1hfSkoKX0pO3ZhciBMeGE9ZygoKT0+e1hudCgpfSk7dmFyIEV4YSxQeGE9ZygoKT0+e3BlKCk7SXQoKTtRbnQoKTtFeGE9aSgoKT0+e2xldCBzPVt7bmFtZToiRG9jdW1lbnRzIix2YWx1ZTo0Mn0se25hbWU6Ik1lZGlhIix2YWx1ZToyOH0se25hbWU6IkFwcGxpY2F0aW9ucyIsdmFsdWU6MTV9LHtuYW1lOiJTeXN0ZW0iLHZhbHVlOjEwfSx7bmFtZToiT3RoZXIiLHZhbHVlOjV9XSxlPVt7bmFtZToiSGVhbHRoeSIsdmFsdWU6MTU2fSx7bmFtZToiV2FybmluZyIsdmFsdWU6MjN9LHtuYW1lOiJDcml0aWNhbCIsdmFsdWU6OH0se25hbWU6IlVua25vd24iLHZhbHVlOjN9XSx0PVt7bmFtZToiQVBJIix2YWx1ZTo0NTIwMH0se25hbWU6IlN0YXRpYyBBc3NldHMiLHZhbHVlOjIzMTAwfSx7bmFtZToiV2ViU29ja2V0Iix2YWx1ZToxMjgwMH0se25hbWU6IkdyYXBoUUwiLHZhbHVlOjg5MDB9XTtyZXR1cm4gd2AKICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIGE9PntsZXQgcj1hLnF1ZXJ5U2VsZWN0b3IoIiNkaXNrLWNoYXJ0Iiksbj1hLnF1ZXJ5U2VsZWN0b3IoIiNzdGF0dXMtY2hhcnQiKSxvPWEucXVlcnlTZWxlY3RvcigiI3RyYWZmaWMtY2hhcnQiKTthLnF1ZXJ5U2VsZWN0b3JBbGwoImRlZXMtYnV0dG9uIikuZm9yRWFjaChwPT57cC50ZXh0Py50cmltKCk9PT0iUmFuZG9taXplIiYmcC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PntyLmRhdGE9cy5tYXAodT0+KHsuLi51LHZhbHVlOk1hdGgucm91bmQodS52YWx1ZSooLjUrTWF0aC5yYW5kb20oKSkpfSkpLG4uZGF0YT1lLm1hcCh1PT4oey4uLnUsdmFsdWU6TWF0aC5yb3VuZCh1LnZhbHVlKiguMytNYXRoLnJhbmRvbSgpKjEuNCkpfSkpLG8uZGF0YT10Lm1hcCh1PT4oey4uLnUsdmFsdWU6TWF0aC5yb3VuZCh1LnZhbHVlKiguNStNYXRoLnJhbmRvbSgpKSl9KSl9KX0pfX0+CiAgICAgIDxzdHlsZT4KICAgICAgICAke0pgCiAgICAgICAgICAuZGVtb0JveCB7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk1JSkiLCJoc2woMCAwJSA5JSkiKX07CiAgICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIHBhZGRpbmc6IDQwcHg7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIGdhcDogMjRweDsKICAgICAgICAgIH0KICAgICAgICAgIC5jaGFydFJvdyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjsKICAgICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgICAgfQogICAgICAgICAgLmNvbnRyb2xzIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgICAgICB9CiAgICAgICAgICAuaW5mbyB7CiAgICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDU2LjklKSIsImhzbCgyMTUgMjAuMiUgNTUuMSUpIil9OwogICAgICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsICdHZWlzdCBTYW5zJywgc2Fucy1zZXJpZjsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBtYXJnaW4tdG9wOiA4cHg7CiAgICAgICAgICB9CiAgICAgICAgYH0KICAgICAgPC9zdHlsZT4KICAgICAgPGRpdiBjbGFzcz0iZGVtb0JveCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbHMiPgogICAgICAgICAgPGRlZXMtYnV0dG9uLWdyb3VwIGxhYmVsPSJBY3Rpb25zOiI+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbj5SYW5kb21pemU8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPC9kZWVzLWJ1dHRvbi1ncm91cD4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iY2hhcnRSb3ciPgogICAgICAgICAgPGRlZXMtY2hhcnQtZG9udXQKICAgICAgICAgICAgaWQ9ImRpc2stY2hhcnQiCiAgICAgICAgICAgIC5sYWJlbD0keyJEaXNrIFVzYWdlIChHQikifQogICAgICAgICAgICAuZGF0YT0ke3N9CiAgICAgICAgICAgIC52YWx1ZUZvcm1hdHRlcj0ke2E9PmAke2F9IEdCYH0KICAgICAgICAgID48L2RlZXMtY2hhcnQtZG9udXQ+CgogICAgICAgICAgPGRlZXMtY2hhcnQtZG9udXQKICAgICAgICAgICAgaWQ9InN0YXR1cy1jaGFydCIKICAgICAgICAgICAgLmxhYmVsPSR7IlNlcnZpY2UgU3RhdHVzIn0KICAgICAgICAgICAgLmRhdGE9JHtlfQogICAgICAgICAgICAudmFsdWVGb3JtYXR0ZXI9JHthPT5gJHthfSBzZXJ2aWNlc2B9CiAgICAgICAgICAgIC5pbm5lclJhZGl1c1BlcmNlbnQ9JHsiMCUifQogICAgICAgICAgPjwvZGVlcy1jaGFydC1kb251dD4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRlZXMtY2hhcnQtZG9udXQKICAgICAgICAgIGlkPSJ0cmFmZmljLWNoYXJ0IgogICAgICAgICAgLmxhYmVsPSR7IlRyYWZmaWMgRGlzdHJpYnV0aW9uIn0KICAgICAgICAgIC5kYXRhPSR7dH0KICAgICAgICAgIC52YWx1ZUZvcm1hdHRlcj0ke2E9PmAkeyhhLzFlMykudG9GaXhlZCgxKX1rIHJlcWB9CiAgICAgICAgPjwvZGVlcy1jaGFydC1kb251dD4KCiAgICAgICAgPGRpdiBjbGFzcz0iaW5mbyI+CiAgICAgICAgICBEb251dCBjaGFydCB3aXRoIGNvbmZpZ3VyYWJsZSBpbm5lciByYWRpdXMgKHNldCB0byAwJSBmb3IgZnVsbCBwaWUpIOKAogogICAgICAgICAgQ2xpY2sgJ1JhbmRvbWl6ZScgdG8gdXBkYXRlIGRhdGEgd2l0aCBhbmltYXRpb24KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CiAgYH0sImRlbW9GdW5jIil9KTt2YXIgSXhhLEF4YT1nKCgpPT57cGUoKTtXUSgpO0l4YT1bLi4uYjQsSmAKICAgIDpob3N0IHsKICAgICAgaGVpZ2h0OiAzNjBweDsKICAgIH0KICAgIC5jaGFydENvbnRhaW5lciB7CiAgICAgIGluc2V0OiAxMnB4IDA7CiAgICB9CiAgYF19KTt2YXIgTnhhLFJ4YT1nKCgpPT57cGUoKTtOeGE9aShzPT53YAogICAgPGRlZXMtdGlsZT4KICAgICAgPGRpdiBzbG90PSJoZWFkZXIiIGNsYXNzPSJjaGFydEhlYWRlciI+CiAgICAgICAgPHNwYW4gY2xhc3M9ImNoYXJ0TGFiZWwiPiR7cy5sYWJlbH08L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjaGFydENvbnRhaW5lciI+PC9kaXY+CiAgICA8L2RlZXMtdGlsZT4KICBgLCJyZW5kZXJDaGFydERvbnV0Iil9KTt2YXIgTXgsRTIseGVzLFFudD1nKCgpPT57cGUoKTtVUSgpO1B4YSgpO0F4YSgpO1J4YSgpO194KCk7TXg9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LEUyPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSx4ZXM9KCgpPT57bGV0IHM9W25lKCJkZWVzLWNoYXJ0LWRvbnV0IildLGUsdD1bXSxhLHI9SHUsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W107dmFyIE49Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNDaGFydERvbnV0Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IEM9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpBcnJheX0pXSxwPVtMKHt0eXBlOkJvb2xlYW59KV0sYz1bTCh7dHlwZTpCb29sZWFufSldLHg9W0woe3R5cGU6U3RyaW5nfSldLHk9W0woe2F0dHJpYnV0ZTohMX0pXSxNeCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImRhdGEiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+ImRhdGEiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5kYXRhLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uZGF0YT1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LG8sbCksTXgodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93TGVnZW5kIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJzaG93TGVnZW5kImluIF8sImhhcyIpLGdldDppKF89Pl8uc2hvd0xlZ2VuZCwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLnNob3dMZWdlbmQ9T30sInNldCIpfSxtZXRhZGF0YTpDfSxkLHUpLE14KHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2hvd0xhYmVscyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4ic2hvd0xhYmVscyJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLnNob3dMYWJlbHMsImdldCIpLHNldDppKChfLE8pPT57Xy5zaG93TGFiZWxzPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sYix2KSxNeCh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImlubmVyUmFkaXVzUGVyY2VudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4iaW5uZXJSYWRpdXNQZXJjZW50ImluIF8sImhhcyIpLGdldDppKF89Pl8uaW5uZXJSYWRpdXNQZXJjZW50LCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uaW5uZXJSYWRpdXNQZXJjZW50PU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sbSxmKSxNeCh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InZhbHVlRm9ybWF0dGVyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJ2YWx1ZUZvcm1hdHRlciJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLnZhbHVlRm9ybWF0dGVyLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18udmFsdWVGb3JtYXR0ZXI9T30sInNldCIpfSxtZXRhZGF0YTpDfSxNLHopLE14KG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOkN9LG51bGwsdCksTj1hPWUudmFsdWUsQyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpDfSl9c3RhdGljIGRlbW89RXhhO3N0YXRpYyBkZW1vR3JvdXBzPVsiQ2hhcnQiXTsjZT1FMih0aGlzLG8sW10pO2dldCBkYXRhKCl7cmV0dXJuIHRoaXMuI2V9c2V0IGRhdGEoQyl7dGhpcy4jZT1DfSN0PShFMih0aGlzLGwpLEUyKHRoaXMsZCwhMCkpO2dldCBzaG93TGVnZW5kKCl7cmV0dXJuIHRoaXMuI3R9c2V0IHNob3dMZWdlbmQoQyl7dGhpcy4jdD1DfSNhPShFMih0aGlzLHUpLEUyKHRoaXMsYiwhMCkpO2dldCBzaG93TGFiZWxzKCl7cmV0dXJuIHRoaXMuI2F9c2V0IHNob3dMYWJlbHMoQyl7dGhpcy4jYT1DfSNzPShFMih0aGlzLHYpLEUyKHRoaXMsbSwiNTUlIikpO2dldCBpbm5lclJhZGl1c1BlcmNlbnQoKXtyZXR1cm4gdGhpcy4jc31zZXQgaW5uZXJSYWRpdXNQZXJjZW50KEMpe3RoaXMuI3M9Q30jaT0oRTIodGhpcyxmKSxFMih0aGlzLE0sQz0+YCR7Q31gKSk7Z2V0IHZhbHVlRm9ybWF0dGVyKCl7cmV0dXJuIHRoaXMuI2l9c2V0IHZhbHVlRm9ybWF0dGVyKEMpe3RoaXMuI2k9Q31zdGF0aWMgc3R5bGVzPUl4YTtyZW5kZXIoKXtyZXR1cm4gTnhhKHRoaXMpfWFzeW5jIHVwZGF0ZWQoQyl7c3VwZXIudXBkYXRlZChDKSx0aGlzLmNoYXJ0SW5zdGFuY2UmJihDLmhhcygiZGF0YSIpfHxDLmhhcygic2hvd0xlZ2VuZCIpfHxDLmhhcygic2hvd0xhYmVscyIpfHxDLmhhcygiaW5uZXJSYWRpdXNQZXJjZW50IikpJiZ0aGlzLnVwZGF0ZUNoYXJ0KCl9YnVpbGRPcHRpb24oKXtsZXQgQz1nNCh0aGlzLmdvQnJpZ2h0KSxfPWY0KHRoaXMuZ29CcmlnaHQpLE89dGhpcy5nb0JyaWdodD8uMTU6LjIsJD1bXSxFPXRoaXMuZGF0YS5tYXAoKGssUyk9PntsZXQgST1rLmNvbG9yfHxfW1MlXy5sZW5ndGhdO3JldHVybiAkLnB1c2goe25hbWU6ay5uYW1lLGl0ZW1TdHlsZTp7Y29sb3I6SX19KSx7bmFtZTprLm5hbWUsdmFsdWU6ay52YWx1ZSxpdGVtU3R5bGU6e2NvbG9yOm00KEksTyksYm9yZGVyQ29sb3I6SSxib3JkZXJXaWR0aDoxfSxlbXBoYXNpczp7aXRlbVN0eWxlOntjb2xvcjptNChJLE8rLjE1KSxib3JkZXJDb2xvcjpJLGJvcmRlcldpZHRoOjEuNX19fX0pLEg9dGhpcy52YWx1ZUZvcm1hdHRlcjtyZXR1cm57dG9vbHRpcDp7dHJpZ2dlcjoiaXRlbSIsZm9ybWF0dGVyOmkoaz0+YCR7YDxzcGFuIHN0eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tcmlnaHQ6NHB4O2JvcmRlci1yYWRpdXM6MTBweDt3aWR0aDoxMHB4O2hlaWdodDoxMHB4O2JhY2tncm91bmQtY29sb3I6JHtrLmRhdGE/Lml0ZW1TdHlsZT8uYm9yZGVyQ29sb3J8fGsuY29sb3J9OyI+PC9zcGFuPmB9JHtrLm5hbWV9OiA8c3Ryb25nPiR7SChrLnZhbHVlKX08L3N0cm9uZz4gKCR7ay5wZXJjZW50fSUpYCwiZm9ybWF0dGVyIil9LGxlZ2VuZDp0aGlzLnNob3dMZWdlbmQ/e29yaWVudDoidmVydGljYWwiLHJpZ2h0OjE2LHRvcDoiY2VudGVyIixpdGVtV2lkdGg6MTAsaXRlbUhlaWdodDoxMCxpdGVtR2FwOjEyLGRhdGE6JCxmb3JtYXR0ZXI6aShrPT57bGV0IFM9dGhpcy5kYXRhLmZpbmQoST0+SS5uYW1lPT09ayk7cmV0dXJuIFM/YCR7a30gICR7SChTLnZhbHVlKX1gOmt9LCJmb3JtYXR0ZXIiKX06e3Nob3c6ITF9LHNlcmllczpbe3R5cGU6InBpZSIscmFkaXVzOlt0aGlzLmlubmVyUmFkaXVzUGVyY2VudCwiODUlIl0sY2VudGVyOnRoaXMuc2hvd0xlZ2VuZD9bIjM1JSIsIjUwJSJdOlsiNTAlIiwiNTAlIl0sYXZvaWRMYWJlbE92ZXJsYXA6ITAscGFkQW5nbGU6MixpdGVtU3R5bGU6e2JvcmRlclJhZGl1czo0fSxsYWJlbDp0aGlzLnNob3dMYWJlbHM/e3Nob3c6ITAsZm9ybWF0dGVyOiJ7Yn06IHtkfSUiLGZvbnRTaXplOjExLGNvbG9yOkMudGV4dFNlY29uZGFyeSx0ZXh0Qm9yZGVyQ29sb3I6InRyYW5zcGFyZW50In06e3Nob3c6ITF9LGRhdGE6RX1dfX1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksRTIodGhpcyx6KX1zdGF0aWN7RTIoYSx0KX19O3JldHVybiBOPWF9KSgpfSk7dmFyIE94YT1nKCgpPT57UW50KCl9KTt2YXIgRnhhLEJ4YT1nKCgpPT57cGUoKTtJdCgpO0pudCgpO0Z4YT1pKCgpPT57bGV0IHM9W3t2YWx1ZTo2MCxjb2xvcjoiaHNsKDE0MiA3NiUgMzYlKSJ9LHt2YWx1ZTo4MCxjb2xvcjoiaHNsKDM4IDkyJSA1MCUpIn0se3ZhbHVlOjEwMCxjb2xvcjoiaHNsKDAgNzIlIDUwJSkifV07cmV0dXJuIHdgCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBlPT57bGV0IHQ9ZS5xdWVyeVNlbGVjdG9yKCIjY3B1LWdhdWdlIiksYT1lLnF1ZXJ5U2VsZWN0b3IoIiNtZW0tZ2F1Z2UiKSxyPWUucXVlcnlTZWxlY3RvcigiI3NsYS1nYXVnZSIpLG49bnVsbDtlLnF1ZXJ5U2VsZWN0b3JBbGwoImRlZXMtYnV0dG9uIikuZm9yRWFjaChsPT57bGV0IHA9bC50ZXh0Py50cmltKCk7cD09PSJBbmltYXRlIj9sLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e258fChuPXdpbmRvdy5zZXRJbnRlcnZhbCgoKT0+e3QudmFsdWU9TWF0aC5yb3VuZCgzMCtNYXRoLnJhbmRvbSgpKjYwKSxhLnZhbHVlPU1hdGgucm91bmQoNDArTWF0aC5yYW5kb20oKSo1MCksci52YWx1ZT1NYXRoLnJvdW5kKCg5NStNYXRoLnJhbmRvbSgpKjUpKjEwMCkvMTAwfSwyZTMpKX0pOnA9PT0iU3RvcCI/bC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PntuJiYod2luZG93LmNsZWFySW50ZXJ2YWwobiksbj1udWxsKX0pOnA9PT0iU3Bpa2UiJiZsLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e3QudmFsdWU9OTUsYS52YWx1ZT04OCxyLnZhbHVlPTk2LjV9KX0pfX0+CiAgICAgIDxzdHlsZT4KICAgICAgICAke0pgCiAgICAgICAgICAuZGVtb0JveCB7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk1JSkiLCJoc2woMCAwJSA5JSkiKX07CiAgICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIHBhZGRpbmc6IDQwcHg7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIGdhcDogMjRweDsKICAgICAgICAgIH0KICAgICAgICAgIC5nYXVnZVJvdyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmciAxZnI7CiAgICAgICAgICAgIGdhcDogMjRweDsKICAgICAgICAgIH0KICAgICAgICAgIC5jb250cm9scyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGdhcDogMTJweDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICAgICAgfQogICAgICAgICAgLmluZm8gewogICAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuNCAxNi4zJSA1Ni45JSkiLCJoc2woMjE1IDIwLjIlIDU1LjElKSIpfTsKICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgICAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCAnR2Vpc3QgU2FucycsIHNhbnMtc2VyaWY7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLXRvcDogOHB4OwogICAgICAgICAgfQogICAgICAgIGB9CiAgICAgIDwvc3R5bGU+CiAgICAgIDxkaXYgY2xhc3M9ImRlbW9Cb3giPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2xzIj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbi1ncm91cCBsYWJlbD0iQWN0aW9uczoiPgogICAgICAgICAgICA8ZGVlcy1idXR0b24+QW5pbWF0ZTwvZGVlcy1idXR0b24+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbj5TdG9wPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgICAgPGRlZXMtYnV0dG9uPlNwaWtlPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDwvZGVlcy1idXR0b24tZ3JvdXA+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9ImdhdWdlUm93Ij4KICAgICAgICAgIDxkZWVzLWNoYXJ0LWdhdWdlCiAgICAgICAgICAgIGlkPSJjcHUtZ2F1Z2UiCiAgICAgICAgICAgIC5sYWJlbD0keyJDUFUgVXNhZ2UifQogICAgICAgICAgICAudmFsdWU9JHs0Mn0KICAgICAgICAgICAgLnVuaXQ9JHsiJSJ9CiAgICAgICAgICAgIC50aHJlc2hvbGRzPSR7c30KICAgICAgICAgID48L2RlZXMtY2hhcnQtZ2F1Z2U+CgogICAgICAgICAgPGRlZXMtY2hhcnQtZ2F1Z2UKICAgICAgICAgICAgaWQ9Im1lbS1nYXVnZSIKICAgICAgICAgICAgLmxhYmVsPSR7Ik1lbW9yeSBVc2FnZSJ9CiAgICAgICAgICAgIC52YWx1ZT0kezY3fQogICAgICAgICAgICAudW5pdD0keyIlIn0KICAgICAgICAgICAgLnRocmVzaG9sZHM9JHtzfQogICAgICAgICAgPjwvZGVlcy1jaGFydC1nYXVnZT4KCiAgICAgICAgICA8ZGVlcy1jaGFydC1nYXVnZQogICAgICAgICAgICBpZD0ic2xhLWdhdWdlIgogICAgICAgICAgICAubGFiZWw9JHsiU0xBIFVwdGltZSJ9CiAgICAgICAgICAgIC52YWx1ZT0kezk5Ljh9CiAgICAgICAgICAgIC5taW49JHs5NX0KICAgICAgICAgICAgLm1heD0kezEwMH0KICAgICAgICAgICAgLnVuaXQ9JHsiJSJ9CiAgICAgICAgICAgIC5zaG93VGlja3M9JHshMH0KICAgICAgICAgID48L2RlZXMtY2hhcnQtZ2F1Z2U+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9ImluZm8iPgogICAgICAgICAgR2F1Z2UgY2hhcnQgd2l0aCBhbmltYXRlZCB2YWx1ZSB0cmFuc2l0aW9ucyBhbmQgdGhyZXNob2xkIGNvbG9yaW5nIOKAogogICAgICAgICAgQ2xpY2sgJ0FuaW1hdGUnIGZvciBsaXZlIHVwZGF0ZXMsICdTcGlrZScgdG8gc2ltdWxhdGUgaGlnaCBsb2FkCiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgogIGB9LCJkZW1vRnVuYyIpfSk7dmFyIEh4YSxxeGE9ZygoKT0+e3BlKCk7V1EoKTtIeGE9Wy4uLmI0LEpgCiAgICA6aG9zdCB7CiAgICAgIGhlaWdodDogMzIwcHg7CiAgICB9CiAgYF19KTt2YXIganhhLFZ4YT1nKCgpPT57cGUoKTtqeGE9aShzPT53YAogICAgPGRlZXMtdGlsZT4KICAgICAgPGRpdiBzbG90PSJoZWFkZXIiIGNsYXNzPSJjaGFydEhlYWRlciI+CiAgICAgICAgPHNwYW4gY2xhc3M9ImNoYXJ0TGFiZWwiPiR7cy5sYWJlbH08L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjaGFydENvbnRhaW5lciI+PC9kaXY+CiAgICA8L2RlZXMtdGlsZT4KICBgLCJyZW5kZXJDaGFydEdhdWdlIil9KTt2YXIgaTcsZGMseWVzLEpudD1nKCgpPT57cGUoKTtVUSgpO0J4YSgpO3F4YSgpO1Z4YSgpO194KCk7aTc9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LGRjPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSx5ZXM9KCgpPT57bGV0IHM9W25lKCJkZWVzLWNoYXJ0LWdhdWdlIildLGUsdD1bXSxhLHI9SHUsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W107dmFyIE89Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNDaGFydEdhdWdlIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0ICQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpOdW1iZXJ9KV0scD1bTCh7dHlwZTpOdW1iZXJ9KV0sYz1bTCh7dHlwZTpOdW1iZXJ9KV0seD1bTCh7dHlwZTpTdHJpbmd9KV0seT1bTCh7dHlwZTpBcnJheX0pXSxOPVtMKHt0eXBlOkJvb2xlYW59KV0saTcodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2YWx1ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShFPT4idmFsdWUiaW4gRSwiaGFzIiksZ2V0OmkoRT0+RS52YWx1ZSwiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLnZhbHVlPUh9LCJzZXQiKX0sbWV0YWRhdGE6JH0sbyxsKSxpNyh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1pbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShFPT4ibWluImluIEUsImhhcyIpLGdldDppKEU9PkUubWluLCJnZXQiKSxzZXQ6aSgoRSxIKT0+e0UubWluPUh9LCJzZXQiKX0sbWV0YWRhdGE6JH0sZCx1KSxpNyh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1heCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShFPT4ibWF4ImluIEUsImhhcyIpLGdldDppKEU9PkUubWF4LCJnZXQiKSxzZXQ6aSgoRSxIKT0+e0UubWF4PUh9LCJzZXQiKX0sbWV0YWRhdGE6JH0sYix2KSxpNyh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InVuaXQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+InVuaXQiaW4gRSwiaGFzIiksZ2V0OmkoRT0+RS51bml0LCJnZXQiKSxzZXQ6aSgoRSxIKT0+e0UudW5pdD1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LG0sZiksaTcodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0aHJlc2hvbGRzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEU9PiJ0aHJlc2hvbGRzImluIEUsImhhcyIpLGdldDppKEU9PkUudGhyZXNob2xkcywiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLnRocmVzaG9sZHM9SH0sInNldCIpfSxtZXRhZGF0YTokfSxNLHopLGk3KHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2hvd1RpY2tzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEU9PiJzaG93VGlja3MiaW4gRSwiaGFzIiksZ2V0OmkoRT0+RS5zaG93VGlja3MsImdldCIpLHNldDppKChFLEgpPT57RS5zaG93VGlja3M9SH0sInNldCIpfSxtZXRhZGF0YTokfSxDLF8pLGk3KG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOiR9LG51bGwsdCksTz1hPWUudmFsdWUsJCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTokfSl9c3RhdGljIGRlbW89RnhhO3N0YXRpYyBkZW1vR3JvdXBzPVsiQ2hhcnQiXTsjZT1kYyh0aGlzLG8sMCk7Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHZhbHVlKCQpe3RoaXMuI2U9JH0jdD0oZGModGhpcyxsKSxkYyh0aGlzLGQsMCkpO2dldCBtaW4oKXtyZXR1cm4gdGhpcy4jdH1zZXQgbWluKCQpe3RoaXMuI3Q9JH0jYT0oZGModGhpcyx1KSxkYyh0aGlzLGIsMTAwKSk7Z2V0IG1heCgpe3JldHVybiB0aGlzLiNhfXNldCBtYXgoJCl7dGhpcy4jYT0kfSNzPShkYyh0aGlzLHYpLGRjKHRoaXMsbSwiJSIpKTtnZXQgdW5pdCgpe3JldHVybiB0aGlzLiNzfXNldCB1bml0KCQpe3RoaXMuI3M9JH0jaT0oZGModGhpcyxmKSxkYyh0aGlzLE0sW10pKTtnZXQgdGhyZXNob2xkcygpe3JldHVybiB0aGlzLiNpfXNldCB0aHJlc2hvbGRzKCQpe3RoaXMuI2k9JH0jcj0oZGModGhpcyx6KSxkYyh0aGlzLEMsITApKTtnZXQgc2hvd1RpY2tzKCl7cmV0dXJuIHRoaXMuI3J9c2V0IHNob3dUaWNrcygkKXt0aGlzLiNyPSR9c3RhdGljIHN0eWxlcz1IeGE7cmVuZGVyKCl7cmV0dXJuIGp4YSh0aGlzKX1hc3luYyB1cGRhdGVkKCQpe3N1cGVyLnVwZGF0ZWQoJCksdGhpcy5jaGFydEluc3RhbmNlJiYoJC5oYXMoInZhbHVlIil8fCQuaGFzKCJtaW4iKXx8JC5oYXMoIm1heCIpfHwkLmhhcygidW5pdCIpfHwkLmhhcygidGhyZXNob2xkcyIpfHwkLmhhcygic2hvd1RpY2tzIikpJiZ0aGlzLnVwZGF0ZUNoYXJ0KCl9YnVpbGRPcHRpb24oKXtsZXQgJD1nNCh0aGlzLmdvQnJpZ2h0KSxIPWY0KHRoaXMuZ29CcmlnaHQpWzBdLGs7aWYodGhpcy50aHJlc2hvbGRzLmxlbmd0aD4wKXtsZXQgUz1bLi4udGhpcy50aHJlc2hvbGRzXS5zb3J0KChJLFApPT5JLnZhbHVlLVAudmFsdWUpO2s9Uy5tYXAoST0+WyhJLnZhbHVlLXRoaXMubWluKS8odGhpcy5tYXgtdGhpcy5taW4pLEkuY29sb3JdKSxrW2subGVuZ3RoLTFdWzBdPDEmJmsucHVzaChbMSxTW1MubGVuZ3RoLTFdLmNvbG9yXSl9ZWxzZSBrPVtbMSxIXV07cmV0dXJue3Nlcmllczpbe3R5cGU6ImdhdWdlIixtaW46dGhpcy5taW4sbWF4OnRoaXMubWF4LHN0YXJ0QW5nbGU6MjIwLGVuZEFuZ2xlOi00MCxwcm9ncmVzczp7c2hvdzohMCx3aWR0aDoxNCxyb3VuZENhcDohMH0scG9pbnRlcjp7c2hvdzohMCxsZW5ndGg6IjYwJSIsd2lkdGg6NSxpdGVtU3R5bGU6e2NvbG9yOiJhdXRvIn19LGF4aXNMaW5lOntsaW5lU3R5bGU6e3dpZHRoOjE0LGNvbG9yOmssb3BhY2l0eTouM319LGF4aXNUaWNrOntzaG93OnRoaXMuc2hvd1RpY2tzLGRpc3RhbmNlOi0yMCxsZW5ndGg6NixsaW5lU3R5bGU6e2NvbG9yOiQuYm9yZGVyU3Ryb25nLHdpZHRoOjF9fSxzcGxpdExpbmU6e3Nob3c6dGhpcy5zaG93VGlja3MsZGlzdGFuY2U6LTI0LGxlbmd0aDoxMCxsaW5lU3R5bGU6e2NvbG9yOiQudGV4dE11dGVkLHdpZHRoOjJ9fSxheGlzTGFiZWw6e3Nob3c6dGhpcy5zaG93VGlja3MsZGlzdGFuY2U6MzAsY29sb3I6JC50ZXh0TXV0ZWQsZm9udFNpemU6MTF9LGRldGFpbDp7dmFsdWVBbmltYXRpb246ITAsZm9udFNpemU6MjgsZm9udFdlaWdodDo2MDAsb2Zmc2V0Q2VudGVyOlswLCI2NSUiXSxjb2xvcjokLnRleHRQcmltYXJ5LGZvcm1hdHRlcjpge3ZhbHVlfSR7dGhpcy51bml0fWB9LHRpdGxlOntzaG93OiExfSxkYXRhOlt7dmFsdWU6dGhpcy52YWx1ZX1dfV19fWNvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSxkYyh0aGlzLF8pfXN0YXRpY3tkYyhhLHQpfX07cmV0dXJuIE89YX0pKCl9KTt2YXIgVXhhPWcoKCk9PntKbnQoKX0pO3ZhciBXeGEsR3hhPWcoKCk9PntwZSgpO0l0KCk7V3hhPWkoKCk9PndgCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57bGV0IGU9cy5xdWVyeVNlbGVjdG9yKCIjc3RydWN0dXJlZC1sb2ciKSx0PXMucXVlcnlTZWxlY3RvcigiI3Jhdy1sb2ciKSxhLHIsbj1bIlNlcnZlciIsIkRhdGFiYXNlIiwiQVBJIiwiQXV0aCIsIkNhY2hlIiwiUXVldWUiLCJXZWJTb2NrZXQiLCJTY2hlZHVsZXIiXSxvPXtkZWJ1ZzpbIkxvYWRpbmcgbW9kdWxlOiB7e21vZHVsZX19IiwiQ2FjaGUgaGl0IGZvciBrZXk6IHt7a2V5fX0iLCJTUUwgcXVlcnkgZXhlY3V0ZWQgaW4ge3t0aW1lfX1tcyIsIlJlcXVlc3QgaGVhZGVyczoge3toZWFkZXJzfX0iLCJFbnZpcm9ubWVudCB2YXJpYWJsZSBsb2FkZWQ6IHt7dmFyfX0iXSxpbmZvOlsiUmVxdWVzdCByZWNlaXZlZDoge3ttZXRob2R9fSB7e3BhdGh9fSIsIlVzZXIge3t1c2VySWR9fSBhdXRoZW50aWNhdGVkIHN1Y2Nlc3NmdWxseSIsIlByb2Nlc3Npbmcgam9iIHt7am9iSWR9fSBmcm9tIHF1ZXVlIiwnU2NoZWR1bGVkIHRhc2sgInt7dGFza319IiBzdGFydGVkJywiV2ViU29ja2V0IGNvbm5lY3Rpb24gZXN0YWJsaXNoZWQgZnJvbSB7e2lwfX0iXSx3YXJuOlsiU2xvdyBxdWVyeSBkZXRlY3RlZDoge3txdWVyeX19ICh7e3RpbWV9fW1zKSIsIk1lbW9yeSB1c2FnZSBhdCB7e3BlcmNlbnR9fSUiLCJSYXRlIGxpbWl0IGFwcHJvYWNoaW5nIGZvciBJUCB7e2lwfX0iLCJEZXByZWNhdGVkIEFQSSBlbmRwb2ludCBjYWxsZWQ6IHt7ZW5kcG9pbnR9fSIsIkNlcnRpZmljYXRlIGV4cGlyZXMgaW4ge3tkYXlzfX0gZGF5cyJdLGVycm9yOlsiRGF0YWJhc2UgY29ubmVjdGlvbiBsb3N0OiB7e2Vycm9yfX0iLCJGYWlsZWQgdG8gcHJvY2VzcyByZXF1ZXN0OiB7e2Vycm9yfX0iLCJBdXRoZW50aWNhdGlvbiBmYWlsZWQgZm9yIHVzZXIge3t1c2VyfX0iLCJGaWxlIG5vdCBmb3VuZDoge3twYXRofX0iLCJTZXJ2aWNlIHVuYXZhaWxhYmxlOiB7e3NlcnZpY2V9fSJdLHN1Y2Nlc3M6WyJTZXJ2ZXIgc3RhcnRlZCBzdWNjZXNzZnVsbHkgb24gcG9ydCB7e3BvcnR9fSIsIkRhdGFiYXNlIG1pZ3JhdGlvbiBjb21wbGV0ZWQiLCJCYWNrdXAgY29tcGxldGVkOiB7e3NpemV9fSBNQiIsIlNTTCBjZXJ0aWZpY2F0ZSByZW5ld2VkIiwiSGVhbHRoIGNoZWNrIHBhc3NlZDogYWxsIHN5c3RlbXMgb3BlcmF0aW9uYWwiXX0sbD1bIlx4MUJbOTBtMjAyNC0wMS0xNVQxMDoyMzo0NS4xMjNaXHgxQlswbSBceDFCWzM2bUlORk9ceDFCWzBtICBbbmdpbnhdIEdFVCAvYXBpL2hlYWx0aCAyMDAgLSAybXMiLCJceDFCWzkwbTIwMjQtMDEtMTVUMTA6MjM6NDUuNDU2Wlx4MUJbMG0gXHgxQlszM21XQVJOXHgxQlswbSAgW3JlZGlzXSBDb25uZWN0aW9uIHBvb2wgcnVubmluZyBsb3c6IDMvMTAiLCJceDFCWzkwbTIwMjQtMDEtMTVUMTA6MjM6NDUuNzg5Wlx4MUJbMG0gXHgxQlszMW1FUlJPUlx4MUJbMG0gW21vbmdvZGJdIFF1ZXJ5IHRpbWVvdXQgYWZ0ZXIgMzAwMDBtcyIsIlx4MUJbOTBtMjAyNC0wMS0xNVQxMDoyMzo0Ni4wMTJaXHgxQlswbSBceDFCWzM2bUlORk9ceDFCWzBtICBbYXBwXSBQcm9jZXNzaW5nIGJhdGNoIGpvYiAje3tqb2JJZH19IiwiXHgxQls5MG0yMDI0LTAxLTE1VDEwOjIzOjQ2LjM0NVpceDFCWzBtIFx4MUJbMzJtT0tceDFCWzBtICAgIFtoZWFsdGhdIEFsbCBzZXJ2aWNlcyBoZWFsdGh5IiwiXHgxQls5MG0yMDI0LTAxLTE1VDEwOjIzOjQ2LjY3OFpceDFCWzBtIFx4MUJbMzZtSU5GT1x4MUJbMG0gIFtrYWZrYV0gTWVzc2FnZSBjb25zdW1lZCBmcm9tIHRvcGljOiBldmVudHMiLCJceDFCWzkwbTIwMjQtMDEtMTVUMTA6MjM6NDcuMDAxWlx4MUJbMG0gXHgxQlszNW1ERUJVR1x4MUJbMG0gW2dycGNdIFJlcXVlc3QgcmVjZWl2ZWQ6IEdldFVzZXIoaWQ9e3t1c2VySWR9fSkiLCJceDFCWzkwbTIwMjQtMDEtMTVUMTA6MjM6NDcuMjM0Wlx4MUJbMG0gXHgxQlszMW1FUlJPUlx4MUJbMG0gW2F1dGhdIFRva2VuIHZhbGlkYXRpb24gZmFpbGVkOiBleHBpcmVkIiwiXHgxQls5MG0yMDI0LTAxLTE1VDEwOjIzOjQ3LjU2N1pceDFCWzBtIFx4MUJbMzNtV0FSTlx4MUJbMG0gIFtyYXRlLWxpbWl0XSBJUCB7e2lwfX0gYXBwcm9hY2hpbmcgcmF0ZSBsaW1pdCIsIlx4MUJbOTBtMjAyNC0wMS0xNVQxMDoyMzo0Ny44OTBaXHgxQlswbSBceDFCWzM2bUlORk9ceDFCWzBtICBbd2Vic29ja2V0XSBDbGllbnQgY29ubmVjdGVkOiBzZXNzaW9uPXt7c2Vzc2lvbn19IixgXHgxQlszMW1FcnJvcjogQ29ubmVjdGlvbiByZWZ1c2VkXHgxQlswbQogICAgYXQgVGNwQ29ubmVjdGlvbi5jb25uZWN0ICgvYXBwL25vZGVfbW9kdWxlcy9wZy9saWIvY29ubmVjdGlvbi5qczoxMjoxNSkKICAgIGF0IFBvb2wuY29ubmVjdCAoL2FwcC9ub2RlX21vZHVsZXMvcGcvbGliL3Bvb2wuanM6NDU6MjMpCiAgICBhdCBhc3luYyBEYXRhYmFzZVNlcnZpY2UucXVlcnkgKC9hcHAvc3JjL2RiL3NlcnZpY2UudHM6ODk6MTIpYF0scD1pKCgpPT57bGV0IG09WyJkZWJ1ZyIsImluZm8iLCJ3YXJuIiwiZXJyb3IiLCJzdWNjZXNzIl0sZj1bLjIsLjUsLjE1LC4xLC4wNV0seT1NYXRoLnJhbmRvbSgpLE09MCx6PSJpbmZvIjtmb3IobGV0ICQ9MDskPGYubGVuZ3RoOyQrKylpZihNKz1mWyRdLHk8TSl7ej1tWyRdO2JyZWFrfWxldCBOPW5bTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKm4ubGVuZ3RoKV0sQz1vW3pdLE89Q1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqQy5sZW5ndGgpXS5yZXBsYWNlKCJ7e21vZHVsZX19IixbImV4cHJlc3MiLCJtb25nb29zZSIsInJlZGlzIiwic29ja2V0LmlvIl1bTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjQpXSkucmVwbGFjZSgie3trZXl9fSIsInVzZXI6IitNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMWUzKSkucmVwbGFjZSgie3t0aW1lfX0iLFN0cmluZyhNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqNTAwKSs1MCkpLnJlcGxhY2UoInt7aGVhZGVyc319IiwiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uLCBBdXRob3JpemF0aW9uOiBCZWFyZXIgLi4uIikucmVwbGFjZSgie3t2YXJ9fSIsWyJOT0RFX0VOViIsIkRBVEFCQVNFX1VSTCIsIkFQSV9LRVkiLCJQT1JUIl1bTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjQpXSkucmVwbGFjZSgie3ttZXRob2R9fSIsWyJHRVQiLCJQT1NUIiwiUFVUIiwiREVMRVRFIl1bTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjQpXSkucmVwbGFjZSgie3twYXRofX0iLFsiL2FwaS91c2VycyIsIi9hcGkvYXV0aC9sb2dpbiIsIi9hcGkvcHJvZHVjdHMiLCIvaGVhbHRoIl1bTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjQpXSkucmVwbGFjZSgie3t1c2VySWR9fSIsU3RyaW5nKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoxZTQpKSkucmVwbGFjZSgie3tqb2JJZH19Iiwiam9iXyIrTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsMTEpKS5yZXBsYWNlKCJ7e3Rhc2t9fSIsWyJjbGVhbnVwIiwiYmFja3VwIiwicmVwb3J0LWdlbmVyYXRpb24iLCJjYWNoZS1yZWZyZXNoIl1bTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjQpXSkucmVwbGFjZSgie3tpcH19IixgMTkyLjE2OC4xLiR7TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjI1NSl9YCkucmVwbGFjZSgie3txdWVyeX19IiwiU0VMRUNUICogRlJPTSB1c2VycyBXSEVSRSAuLi4iKS5yZXBsYWNlKCJ7e3BlcmNlbnR9fSIsU3RyaW5nKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSozMCkrNzApKS5yZXBsYWNlKCJ7e2VuZHBvaW50fX0iLCIvYXBpL3YxL2xlZ2FjeSIpLnJlcGxhY2UoInt7ZGF5c319IixTdHJpbmcoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjMwKSsxKSkucmVwbGFjZSgie3tlcnJvcn19IixbIkVDT05OUkVGVVNFRCIsIkVUSU1FRE9VVCIsIkVOT1RGT1VORCJdW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSozKV0pLnJlcGxhY2UoInt7dXNlcn19IiwidXNlcl8iK01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoxZTMpKS5yZXBsYWNlKCJ7e3NlcnZpY2V9fSIsWyJSZWRpcyIsIk1vbmdvREIiLCJFbGFzdGljU2VhcmNoIl1bTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjMpXSkucmVwbGFjZSgie3twb3J0fX0iLFN0cmluZygzZTMrTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjEwKSkpLnJlcGxhY2UoInt7c2l6ZX19IixTdHJpbmcoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjUwMCkrMTAwKSk7ZS5hZGRMb2coeixPLE4pfSwiZ2VuZXJhdGVSYW5kb21Mb2ciKSxkPWkoKCk9PntsZXQgbT1sW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsLmxlbmd0aCldLGY9bmV3IERhdGUoKS50b0lTT1N0cmluZygpLHk9bS5yZXBsYWNlKC8yMDI0LTAxLTE1VDEwOjIzOlxkezJ9XC5cZHszfVovZyxmKS5yZXBsYWNlKCJ7e2pvYklkfX0iLFN0cmluZyhNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMWU0KSkpLnJlcGxhY2UoInt7dXNlcklkfX0iLFN0cmluZyhNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMWU0KSkpLnJlcGxhY2UoInt7aXB9fSIsYDE5Mi4xNjguMS4ke01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoyNTUpfWApLnJlcGxhY2UoInt7c2Vzc2lvbn19IixNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiwxMSkpO3Qud3JpdGVsblJhdyh5KX0sImdlbmVyYXRlRG9ja2VyTG9nIiksdT1pKCgpPT57aWYoIWEpe2xldCBtPWkoKCk9PntwKCk7bGV0IGY9TWF0aC5yYW5kb20oKSoyZTMrNTAwO2E9d2luZG93LnNldFRpbWVvdXQoKCk9PnthJiZtKCl9LGYpfSwic2NoZWR1bGVOZXh0Iik7bSgpfX0sInN0YXJ0U3RydWN0dXJlZFNpbXVsYXRpb24iKSxjPWkoKCk9PnthJiYod2luZG93LmNsZWFyVGltZW91dChhKSxhPW51bGwpfSwic3RvcFN0cnVjdHVyZWRTaW11bGF0aW9uIiksYj1pKCgpPT57aWYoIXIpe2xldCBtPWkoKCk9PntkKCk7bGV0IGY9TWF0aC5yYW5kb20oKSoxZTMrMjAwO3I9d2luZG93LnNldFRpbWVvdXQoKCk9PntyJiZtKCl9LGYpfSwic2NoZWR1bGVOZXh0Iik7bSgpfX0sInN0YXJ0UmF3U2ltdWxhdGlvbiIpLHY9aSgoKT0+e3ImJih3aW5kb3cuY2xlYXJUaW1lb3V0KHIpLHI9bnVsbCl9LCJzdG9wUmF3U2ltdWxhdGlvbiIpO3MucXVlcnlTZWxlY3RvckFsbCgiZGVlcy1idXR0b24iKS5mb3JFYWNoKG09Pntzd2l0Y2gobS50ZXh0Py50cmltKCkpe2Nhc2UiQWRkIFN0cnVjdHVyZWQgTG9nIjptLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+cCgpKTticmVhaztjYXNlIlN0YXJ0IFN0cnVjdHVyZWQiOm0uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT51KCkpO2JyZWFrO2Nhc2UiU3RvcCBTdHJ1Y3R1cmVkIjptLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+YygpKTticmVhaztjYXNlIkFkZCBEb2NrZXIgTG9nIjptLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+ZCgpKTticmVhaztjYXNlIlN0YXJ0IERvY2tlciI6bS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PmIoKSk7YnJlYWs7Y2FzZSJTdG9wIERvY2tlciI6bS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PnYoKSk7YnJlYWt9fSl9fT4KICAgICAgPHN0eWxlPgogICAgICAgICR7SmAKICAgICAgICAgIC5kZW1vQm94IHsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTUlKSIsImhzbCgwIDAlIDUlKSIpfTsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgcGFkZGluZzogNDBweDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgICAgfQogICAgICAgICAgLnNlY3Rpb24gewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgICB9CiAgICAgICAgICAuc2VjdGlvbi10aXRsZSB7CiAgICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOSUpIiwiaHNsKDAgMCUgOTUlKSIpfTsKICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBmb250LWZhbWlseTogJ0dlaXN0IFNhbnMnLCBzYW5zLXNlcmlmOwogICAgICAgICAgfQogICAgICAgICAgLnNlY3Rpb24tZGVzY3JpcHRpb24gewogICAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUuNCAxNi4zJSA0Ni45JSkiLCJoc2woMjE1IDIwLjIlIDY1LjElKSIpfTsKICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgICAgICBmb250LWZhbWlseTogJ0dlaXN0IFNhbnMnLCBzYW5zLXNlcmlmOwogICAgICAgICAgfQogICAgICAgICAgLmNvbnRyb2xzIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZ2FwOiAxMHB4OwogICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgICB9CiAgICAgICAgYH0KICAgICAgPC9zdHlsZT4KICAgIDxkaXYgY2xhc3M9ImRlbW9Cb3giPgogICAgICA8IS0tIFN0cnVjdHVyZWQgTG9ncyBTZWN0aW9uIC0tPgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5TdHJ1Y3R1cmVkIExvZ3MgKElMb2dFbnRyeSk8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj4KICAgICAgICAgIFN0cnVjdHVyZWQgbG9nIGVudHJpZXMgd2l0aCBsZXZlbCwgbWVzc2FnZSwgYW5kIHNvdXJjZS4gU3VwcG9ydHMgc2VhcmNoIGFuZCBrZXl3b3JkIGhpZ2hsaWdodGluZy4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9scyI+CiAgICAgICAgICA8ZGVlcy1idXR0b24+QWRkIFN0cnVjdHVyZWQgTG9nPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbj5TdGFydCBTdHJ1Y3R1cmVkPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbj5TdG9wIFN0cnVjdHVyZWQ8L2RlZXMtYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkZWVzLWNoYXJ0LWxvZwogICAgICAgICAgaWQ9InN0cnVjdHVyZWQtbG9nIgogICAgICAgICAgLmxhYmVsPSR7IlByb2R1Y3Rpb24gU2VydmVyIExvZ3MifQogICAgICAgICAgLmhpZ2hsaWdodEtleXdvcmRzPSR7WyJlcnJvciIsImZhaWxlZCIsInRpbWVvdXQiXX0KICAgICAgICAgIC5zaG93TWV0cmljcz0keyEwfQogICAgICAgID48L2RlZXMtY2hhcnQtbG9nPgogICAgICA8L2Rpdj4KCiAgICAgIDwhLS0gUmF3IExvZ3MgU2VjdGlvbiAtLT4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+UmF3IExvZ3MgKERvY2tlci9Db250YWluZXIgU3R5bGUpPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1kZXNjcmlwdGlvbiI+CiAgICAgICAgICBSYXcgbG9nIG91dHB1dCB3aXRoIEFOU0kgZXNjYXBlIHNlcXVlbmNlcyBmb3IgcmVhbCBEb2NrZXIvY29udGFpbmVyIGxvZ3MuCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbHMiPgogICAgICAgICAgPGRlZXMtYnV0dG9uPkFkZCBEb2NrZXIgTG9nPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbj5TdGFydCBEb2NrZXI8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uPlN0b3AgRG9ja2VyPC9kZWVzLWJ1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGVlcy1jaGFydC1sb2cKICAgICAgICAgIGlkPSJyYXctbG9nIgogICAgICAgICAgLmxhYmVsPSR7IkRvY2tlciBDb250YWluZXIgTG9ncyJ9CiAgICAgICAgICAubW9kZT0keyJyYXcifQogICAgICAgICAgLnNob3dNZXRyaWNzPSR7ITF9CiAgICAgICAgPjwvZGVlcy1jaGFydC1sb2c+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CiAgYCwiZGVtb0Z1bmMiKX0pO3ZhciBlMSxJaSx3ZXMsS3hhPWcoKCk9PntwZSgpO2t0KCk7R3hhKCk7aHQoKTtPdSgpO21yKCk7ZTE9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LElpPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSx3ZXM9KCgpPT57bGV0IHM9W25lKCJkZWVzLWNoYXJ0LWxvZyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdLEgsaz1bXSxTPVtdLEksUD1bXSxSPVtdLEssVj1bXSxXPVtdLG1lLEI9W10sVT1bXTt2YXIgaGU9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNDaGFydExvZyIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBGPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woKV0scD1bTCh7dHlwZTpTdHJpbmd9KV0sYz1bTCh7dHlwZTpBcnJheX0pXSx4PVtMKHt0eXBlOkJvb2xlYW59KV0seT1bTCh7dHlwZTpOdW1iZXJ9KV0sTj1bTCh7dHlwZTpBcnJheX0pXSxPPVtMKHt0eXBlOkJvb2xlYW59KV0sSD1bWSgpXSxJPVtZKCldLEs9W1koKV0sbWU9W1koKV0sZTEodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJsYWJlbCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4ibGFiZWwiaW4gaiwiaGFzIiksZ2V0Omkoaj0+ai5sYWJlbCwiZ2V0Iiksc2V0OmkoKGosdWUpPT57ai5sYWJlbD11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSxvLGwpLGUxKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibW9kZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4ibW9kZSJpbiBqLCJoYXMiKSxnZXQ6aShqPT5qLm1vZGUsImdldCIpLHNldDppKChqLHVlKT0+e2oubW9kZT11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSxkLHUpLGUxKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibG9nRW50cmllcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4ibG9nRW50cmllcyJpbiBqLCJoYXMiKSxnZXQ6aShqPT5qLmxvZ0VudHJpZXMsImdldCIpLHNldDppKChqLHVlKT0+e2oubG9nRW50cmllcz11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSxiLHYpLGUxKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYXV0b1Njcm9sbCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4iYXV0b1Njcm9sbCJpbiBqLCJoYXMiKSxnZXQ6aShqPT5qLmF1dG9TY3JvbGwsImdldCIpLHNldDppKChqLHVlKT0+e2ouYXV0b1Njcm9sbD11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSxtLGYpLGUxKHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWF4RW50cmllcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4ibWF4RW50cmllcyJpbiBqLCJoYXMiKSxnZXQ6aShqPT5qLm1heEVudHJpZXMsImdldCIpLHNldDppKChqLHVlKT0+e2oubWF4RW50cmllcz11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSxNLHopLGUxKHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaGlnaGxpZ2h0S2V5d29yZHMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoaj0+ImhpZ2hsaWdodEtleXdvcmRzImluIGosImhhcyIpLGdldDppKGo9PmouaGlnaGxpZ2h0S2V5d29yZHMsImdldCIpLHNldDppKChqLHVlKT0+e2ouaGlnaGxpZ2h0S2V5d29yZHM9dWV9LCJzZXQiKX0sbWV0YWRhdGE6Rn0sQyxfKSxlMSh0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dNZXRyaWNzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGo9PiJzaG93TWV0cmljcyJpbiBqLCJoYXMiKSxnZXQ6aShqPT5qLnNob3dNZXRyaWNzLCJnZXQiKSxzZXQ6aSgoaix1ZSk9PntqLnNob3dNZXRyaWNzPXVlfSwic2V0Iil9LG1ldGFkYXRhOkZ9LCQsRSksZTEodGhpcyxudWxsLEgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWFyY2hRdWVyeSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4ic2VhcmNoUXVlcnkiaW4gaiwiaGFzIiksZ2V0Omkoaj0+ai5zZWFyY2hRdWVyeSwiZ2V0Iiksc2V0OmkoKGosdWUpPT57ai5zZWFyY2hRdWVyeT11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSxrLFMpLGUxKHRoaXMsbnVsbCxJLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZmlsdGVyTW9kZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4iZmlsdGVyTW9kZSJpbiBqLCJoYXMiKSxnZXQ6aShqPT5qLmZpbHRlck1vZGUsImdldCIpLHNldDppKChqLHVlKT0+e2ouZmlsdGVyTW9kZT11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSxQLFIpLGUxKHRoaXMsbnVsbCxLLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWV0cmljcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4ibWV0cmljcyJpbiBqLCJoYXMiKSxnZXQ6aShqPT5qLm1ldHJpY3MsImdldCIpLHNldDppKChqLHVlKT0+e2oubWV0cmljcz11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSxWLFcpLGUxKHRoaXMsbnVsbCxtZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InRlcm1pbmFsUmVhZHkiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoaj0+InRlcm1pbmFsUmVhZHkiaW4gaiwiaGFzIiksZ2V0Omkoaj0+ai50ZXJtaW5hbFJlYWR5LCJnZXQiKSxzZXQ6aSgoaix1ZSk9PntqLnRlcm1pbmFsUmVhZHk9dWV9LCJzZXQiKX0sbWV0YWRhdGE6Rn0sQixVKSxlMShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpGfSxudWxsLHQpLGhlPWE9ZS52YWx1ZSxGJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOkZ9KX1zdGF0aWMgZGVtbz1XeGE7c3RhdGljIGRlbW9Hcm91cHM9WyJDaGFydCIsIldvcmtzcGFjZSJdOyNlPUlpKHRoaXMsbywiU2VydmVyIExvZ3MiKTtnZXQgbGFiZWwoKXtyZXR1cm4gdGhpcy4jZX1zZXQgbGFiZWwoRil7dGhpcy4jZT1GfSN0PShJaSh0aGlzLGwpLElpKHRoaXMsZCwic3RydWN0dXJlZCIpKTtnZXQgbW9kZSgpe3JldHVybiB0aGlzLiN0fXNldCBtb2RlKEYpe3RoaXMuI3Q9Rn0jYT0oSWkodGhpcyx1KSxJaSh0aGlzLGIsW10pKTtnZXQgbG9nRW50cmllcygpe3JldHVybiB0aGlzLiNhfXNldCBsb2dFbnRyaWVzKEYpe3RoaXMuI2E9Rn0jcz0oSWkodGhpcyx2KSxJaSh0aGlzLG0sITApKTtnZXQgYXV0b1Njcm9sbCgpe3JldHVybiB0aGlzLiNzfXNldCBhdXRvU2Nyb2xsKEYpe3RoaXMuI3M9Rn0jaT0oSWkodGhpcyxmKSxJaSh0aGlzLE0sMWU0KSk7Z2V0IG1heEVudHJpZXMoKXtyZXR1cm4gdGhpcy4jaX1zZXQgbWF4RW50cmllcyhGKXt0aGlzLiNpPUZ9I3I9KElpKHRoaXMseiksSWkodGhpcyxDLFtdKSk7Z2V0IGhpZ2hsaWdodEtleXdvcmRzKCl7cmV0dXJuIHRoaXMuI3J9c2V0IGhpZ2hsaWdodEtleXdvcmRzKEYpe3RoaXMuI3I9Rn0jbz0oSWkodGhpcyxfKSxJaSh0aGlzLCQsITApKTtnZXQgc2hvd01ldHJpY3MoKXtyZXR1cm4gdGhpcy4jb31zZXQgc2hvd01ldHJpY3MoRil7dGhpcy4jbz1GfSNuPShJaSh0aGlzLEUpLElpKHRoaXMsaywiIikpO2dldCBzZWFyY2hRdWVyeSgpe3JldHVybiB0aGlzLiNufXNldCBzZWFyY2hRdWVyeShGKXt0aGlzLiNuPUZ9I2w9KElpKHRoaXMsUyksSWkodGhpcyxQLCExKSk7Z2V0IGZpbHRlck1vZGUoKXtyZXR1cm4gdGhpcy4jbH1zZXQgZmlsdGVyTW9kZShGKXt0aGlzLiNsPUZ9I2M9KElpKHRoaXMsUiksSWkodGhpcyxWLHtkZWJ1ZzowLGluZm86MCx3YXJuOjAsZXJyb3I6MCxzdWNjZXNzOjAsdG90YWw6MCxyYXRlOjB9KSk7Z2V0IG1ldHJpY3MoKXtyZXR1cm4gdGhpcy4jY31zZXQgbWV0cmljcyhGKXt0aGlzLiNjPUZ9I2Q9KElpKHRoaXMsVyksSWkodGhpcyxCLCExKSk7Z2V0IHRlcm1pbmFsUmVhZHkoKXtyZXR1cm4gdGhpcy4jZH1zZXQgdGVybWluYWxSZWFkeShGKXt0aGlzLiNkPUZ9bG9nQnVmZmVyPShJaSh0aGlzLFUpLFtdKTt0cmFpbGluZ0hpZGRlbkNvdW50PTA7dGVybWluYWw9bnVsbDtmaXRBZGRvbj1udWxsO3NlYXJjaEFkZG9uPW51bGw7cmVzaXplT2JzZXJ2ZXI9bnVsbDt0ZXJtaW5hbFRoZW1lU3Vic2NyaXB0aW9uPW51bGw7ZG9tdG9vbHNJbnN0YW5jZT1udWxsO3JhdGVCdWZmZXI9W107cmF0ZUludGVydmFsPW51bGw7c3RhdGljIHN0eWxlcz1bcWUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBoZWlnaHQ6IDQwMHB4OwogICAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIHNhbnMtc2VyaWY7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgfQoKICAgICAgZGVlcy10aWxlIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5oZWFkZXIgewogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICB9CgogICAgICAudGl0bGUgewogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgLnNlYXJjaC1ib3ggewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDRweDsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG1pbi13aWR0aDogMTUwcHg7CiAgICAgICAgbWF4LXdpZHRoOiAzMDBweDsKICAgICAgfQoKICAgICAgLnNlYXJjaC1ib3ggaW5wdXQgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgcGFkZGluZzogNHB4IDhweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYmctcHJpbWFyeSk7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICB9CgogICAgICAuc2VhcmNoLWJveCBpbnB1dDpmb2N1cyB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDUxLjIlKSIsImhzbCgyMTcuMiA5MS4yJSA1OS44JSkiKX07CiAgICAgIH0KCiAgICAgIC5zZWFyY2gtYm94IGlucHV0OjpwbGFjZWhvbGRlciB7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgIH0KCiAgICAgIC5zZWFyY2gtbmF2IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGdhcDogMnB4OwogICAgICB9CgogICAgICAuc2VhcmNoLW5hdiBidXR0b24gewogICAgICAgIHBhZGRpbmc6IDRweCA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYmctcHJpbWFyeSk7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBsaW5lLWhlaWdodDogMTsKICAgICAgfQoKICAgICAgLnNlYXJjaC1uYXYgYnV0dG9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWhvdmVyKTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICB9CgogICAgICAuZmlsdGVyLXRvZ2dsZSB7CiAgICAgICAgcGFkZGluZzogNHB4IDhweDsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXByaW1hcnkpOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgIH0KCiAgICAgIC5maWx0ZXItdG9nZ2xlOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWhvdmVyKTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICB9CgogICAgICAuZmlsdGVyLXRvZ2dsZS5hY3RpdmUgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woNDUgOTMlIDQ3JSkiLCJoc2woNDUgOTMlIDQ3JSkiKX07CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDQ1IDkzJSA0NyUpIiwiaHNsKDQ1IDkzJSA0NyUpIil9OwogICAgICAgIGNvbG9yOiBoc2woMCAwJSA5JSk7CiAgICAgIH0KCiAgICAgIC5jb250cm9scyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBnYXA6IDZweDsKICAgICAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgICAgfQoKICAgICAgLmNvbnRyb2wtYnV0dG9uIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXByaW1hcnkpOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBwYWRkaW5nOiA0cHggMTBweDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzOwogICAgICB9CgogICAgICAuY29udHJvbC1idXR0b246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItaG92ZXIpOwogICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItc3Ryb25nKTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICB9CgogICAgICAuY29udHJvbC1idXR0b24uYWN0aXZlIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDUxLjIlKSIsImhzbCgyMTcuMiA5MS4yJSA1OS44JSkiKX07CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIyMi4yIDQ3LjQlIDUxLjIlKSIsImhzbCgyMTcuMiA5MS4yJSA1OS44JSkiKX07CiAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICB9CgogICAgICAudGVybWluYWwtY29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgaW5zZXQ6IDA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBwYWRkaW5nOiA4cHg7CiAgICAgIH0KCiAgICAgIC50ZXJtaW5hbC1jb250YWluZXIgLnh0ZXJtIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5sb2FkaW5nLXN0YXRlIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgIH0KCiAgICAgIC5tZXRyaWNzLWJhciB7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIHBhZGRpbmc6IDAgMTJweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgIC5tZXRyaWMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDRweDsKICAgICAgfQoKICAgICAgLm1ldHJpYzo6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICB3aWR0aDogOHB4OwogICAgICAgIGhlaWdodDogOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgfQoKICAgICAgLm1ldHJpYy5lcnJvcjo6YmVmb3JlIHsKICAgICAgICBiYWNrZ3JvdW5kOiBoc2woMCA4NC4yJSA2MC4yJSk7CiAgICAgIH0KCiAgICAgIC5tZXRyaWMud2Fybjo6YmVmb3JlIHsKICAgICAgICBiYWNrZ3JvdW5kOiBoc2woMjUgOTUlIDUzJSk7CiAgICAgIH0KCiAgICAgIC5tZXRyaWMuaW5mbzo6YmVmb3JlIHsKICAgICAgICBiYWNrZ3JvdW5kOiBoc2woMjIyLjIgNDcuNCUgNTEuMiUpOwogICAgICB9CgogICAgICAubWV0cmljLnN1Y2Nlc3M6OmJlZm9yZSB7CiAgICAgICAgYmFja2dyb3VuZDogaHNsKDE0Mi4xIDc2LjIlIDM2LjMlKTsKICAgICAgfQoKICAgICAgLm1ldHJpYy5kZWJ1Zzo6YmVmb3JlIHsKICAgICAgICBiYWNrZ3JvdW5kOiBoc2woMCAwJSA2My45JSk7CiAgICAgIH0KCiAgICAgIC5tZXRyaWMucmF0ZSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgIH0KCiAgICAgIC5tZXRyaWMucmF0ZTo6YmVmb3JlIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CiAgICBgXTtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGEuc2V0dXAoKX1yZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRlZXMtdGlsZSAuaGVhZGluZz0ke3RoaXMubGFiZWx9PgogICAgICAgIDxkaXYgc2xvdD0iaGVhZGVyIiBjbGFzcz0iaGVhZGVyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4ke3RoaXMubGFiZWx9PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWFyY2gtYm94Ij4KICAgICAgICAgICAgPGlucHV0CiAgICAgICAgICAgICAgdHlwZT0idGV4dCIKICAgICAgICAgICAgICBwbGFjZWhvbGRlcj0iU2VhcmNoIGxvZ3MuLi4iCiAgICAgICAgICAgICAgLnZhbHVlPSR7dGhpcy5zZWFyY2hRdWVyeX0KICAgICAgICAgICAgICBAaW5wdXQ9JHtGPT50aGlzLmhhbmRsZVNlYXJjaElucHV0KEYpfQogICAgICAgICAgICAgIEBrZXlkb3duPSR7Rj0+dGhpcy5oYW5kbGVTZWFyY2hLZXlkb3duKEYpfQogICAgICAgICAgICAvPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWFyY2gtbmF2Ij4KICAgICAgICAgICAgICA8YnV0dG9uIEBjbGljaz0keygpPT50aGlzLnNlYXJjaFByZXZpb3VzKCl9IHRpdGxlPSJQcmV2aW91cyBtYXRjaCI+4oaRPC9idXR0b24+CiAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9JHsoKT0+dGhpcy5zZWFyY2hOZXh0KCl9IHRpdGxlPSJOZXh0IG1hdGNoIj7ihpM8L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgICBjbGFzcz0iZmlsdGVyLXRvZ2dsZSAke3RoaXMuZmlsdGVyTW9kZT8iYWN0aXZlIjoiIn0iCiAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMudG9nZ2xlRmlsdGVyTW9kZSgpfQogICAgICAgICAgICAgIHRpdGxlPSIke3RoaXMuZmlsdGVyTW9kZT8iU3dpdGNoIHRvIGhpZ2hsaWdodCBtb2RlIjoiU3dpdGNoIHRvIGZpbHRlciBtb2RlIn0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICAke3RoaXMuZmlsdGVyTW9kZT8iRmlsdGVyIjoiSGlnaGxpZ2h0In0KICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2xzIj4KICAgICAgICAgICAgPGJ1dHRvbgogICAgICAgICAgICAgIGNsYXNzPSJjb250cm9sLWJ1dHRvbiAke3RoaXMuYXV0b1Njcm9sbD8iYWN0aXZlIjoiIn0iCiAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMudG9nZ2xlQXV0b1Njcm9sbCgpfQogICAgICAgICAgICA+CiAgICAgICAgICAgICAgQXV0byBTY3JvbGwKICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImNvbnRyb2wtYnV0dG9uIiBAY2xpY2s9JHsoKT0+dGhpcy5jbGVhckxvZ3MoKX0+CiAgICAgICAgICAgICAgQ2xlYXIKICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0idGVybWluYWwtY29udGFpbmVyIj4KICAgICAgICAgICR7dGhpcy50ZXJtaW5hbFJlYWR5PyIiOndgPGRpdiBjbGFzcz0ibG9hZGluZy1zdGF0ZSI+TG9hZGluZyB0ZXJtaW5hbC4uLjwvZGl2PmB9CiAgICAgICAgPC9kaXY+CgogICAgICAgICR7dGhpcy5zaG93TWV0cmljcz93YAogICAgICAgICAgICAgIDxkaXYgc2xvdD0iZm9vdGVyIiBjbGFzcz0ibWV0cmljcy1iYXIiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1ldHJpYyBlcnJvciI+ZXJyb3JzOiAke3RoaXMubWV0cmljcy5lcnJvcn08L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibWV0cmljIHdhcm4iPndhcm5zOiAke3RoaXMubWV0cmljcy53YXJufTwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJtZXRyaWMgaW5mbyI+aW5mbzogJHt0aGlzLm1ldHJpY3MuaW5mb308L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibWV0cmljIHN1Y2Nlc3MiPnN1Y2Nlc3M6ICR7dGhpcy5tZXRyaWNzLnN1Y2Nlc3N9PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1ldHJpYyBkZWJ1ZyI+ZGVidWc6ICR7dGhpcy5tZXRyaWNzLmRlYnVnfTwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJtZXRyaWMgcmF0ZSI+JHt0aGlzLm1ldHJpY3MucmF0ZS50b0ZpeGVkKDEpfSBsb2dzL3NlYzwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYDoiIn0KICAgICAgPC9kZWVzLXRpbGU+CiAgICBgfWFzeW5jIGZpcnN0VXBkYXRlZCgpe2lmKHRoaXMuZG9tdG9vbHNJbnN0YW5jZT1hd2FpdCB0aGlzLmRvbXRvb2xzUHJvbWlzZSxhd2FpdCB0aGlzLmluaXRpYWxpemVUZXJtaW5hbCgpLHRoaXMubG9nRW50cmllcy5sZW5ndGg+MCYmdGhpcy5sb2dCdWZmZXIubGVuZ3RoPT09MCl7dGhpcy5sb2dCdWZmZXI9Wy4uLnRoaXMubG9nRW50cmllc107Zm9yKGxldCBGIG9mIHRoaXMubG9nRW50cmllcyl0aGlzLnVwZGF0ZU1ldHJpY3MoRi5sZXZlbCksdGhpcy53cml0ZUxvZ0VudHJ5KEYpfWVsc2UgaWYodGhpcy5sb2dFbnRyaWVzLmxlbmd0aD4wJiZ0aGlzLmxvZ0J1ZmZlci5sZW5ndGg+MCl7bGV0IEY9bmV3IFNldCh0aGlzLmxvZ0J1ZmZlci5tYXAoaj0+YCR7ai50aW1lc3RhbXB9fCR7ai5tZXNzYWdlfWApKTtmb3IobGV0IGogb2YgdGhpcy5sb2dFbnRyaWVzKUYuaGFzKGAke2oudGltZXN0YW1wfXwke2oubWVzc2FnZX1gKXx8KHRoaXMubG9nQnVmZmVyLnB1c2goaiksdGhpcy51cGRhdGVNZXRyaWNzKGoubGV2ZWwpLHRoaXMud3JpdGVMb2dFbnRyeShqKSl9fWFzeW5jIGluaXRpYWxpemVUZXJtaW5hbCgpe2xldCBGPWFvLmdldEluc3RhbmNlKCksW2osdWUsbGVdPWF3YWl0IFByb21pc2UuYWxsKFtGLmxvYWRYdGVybSgpLEYubG9hZFh0ZXJtRml0QWRkb24oKSxGLmxvYWRYdGVybVNlYXJjaEFkZG9uKCldKTthd2FpdCB0aGlzLmluamVjdFh0ZXJtU3R5bGVzSW50b1NoYWRvdygpLHRoaXMudGVybWluYWw9bmV3IGouVGVybWluYWwoe2N1cnNvckJsaW5rOiExLGRpc2FibGVTdGRpbjohMCxmb250U2l6ZToxMixmb250RmFtaWx5OiInU0YgTW9ubycsICdNb25hY28nLCAnQ29uc29sYXMnLCAnTGliZXJhdGlvbiBNb25vJywgJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlIix0aGVtZTp0aGlzLmdldFRlcm1pbmFsVGhlbWUoKSxzY3JvbGxiYWNrOnRoaXMubWF4RW50cmllcyxjb252ZXJ0RW9sOiEwfSksdGhpcy5maXRBZGRvbj1uZXcgdWUuRml0QWRkb24sdGhpcy5zZWFyY2hBZGRvbj1uZXcgbGUuU2VhcmNoQWRkb24sdGhpcy50ZXJtaW5hbC5sb2FkQWRkb24odGhpcy5maXRBZGRvbiksdGhpcy50ZXJtaW5hbC5sb2FkQWRkb24odGhpcy5zZWFyY2hBZGRvbik7bGV0IFE9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi50ZXJtaW5hbC1jb250YWluZXIiKTt0aGlzLnRlcm1pbmFsLm9wZW4oUSksYXdhaXQgbmV3IFByb21pc2UoaWU9PnJlcXVlc3RBbmltYXRpb25GcmFtZShpZSkpLHRoaXMuZml0QWRkb24uZml0KCksdGhpcy5yZXNpemVPYnNlcnZlcj1uZXcgUmVzaXplT2JzZXJ2ZXIoKCk9Pnt0aGlzLmZpdEFkZG9uPy5maXQoKX0pLHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShRKSx0aGlzLnRlcm1pbmFsVGhlbWVTdWJzY3JpcHRpb249dGhpcy5kb210b29sc0luc3RhbmNlLnRoZW1lTWFuYWdlci50aGVtZU9ic2VydmFibGUuc3Vic2NyaWJlKCgpPT57dGhpcy50ZXJtaW5hbCYmKHRoaXMudGVybWluYWwub3B0aW9ucy50aGVtZT10aGlzLmdldFRlcm1pbmFsVGhlbWUoKSl9KSx0aGlzLnJhdGVJbnRlcnZhbD1zZXRJbnRlcnZhbCgoKT0+dGhpcy5jYWxjdWxhdGVSYXRlKCksMWUzKSx0aGlzLnRlcm1pbmFsUmVhZHk9ITA7Zm9yKGxldCBpZSBvZiB0aGlzLmxvZ0J1ZmZlcil0aGlzLndyaXRlTG9nRW50cnkoaWUpfXVwZGF0ZWQoRil7aWYoc3VwZXIudXBkYXRlZChGKSxGLmhhcygiZ29CcmlnaHQiKSYmdGhpcy50ZXJtaW5hbCYmKHRoaXMudGVybWluYWwub3B0aW9ucy50aGVtZT10aGlzLmdldFRlcm1pbmFsVGhlbWUoKSksRi5oYXMoImxvZ0VudHJpZXMiKSYmdGhpcy50ZXJtaW5hbFJlYWR5JiZ0aGlzLmxvZ0VudHJpZXMubGVuZ3RoPjApe2xldCBqPUYuZ2V0KCJsb2dFbnRyaWVzIil8fFtdLHVlPXRoaXMubG9nRW50cmllcztpZihqLmxlbmd0aD09PXVlLmxlbmd0aCYmai5sZW5ndGg+MCYmaltqLmxlbmd0aC0xXS50aW1lc3RhbXA9PT11ZVt1ZS5sZW5ndGgtMV0udGltZXN0YW1wJiZqW2oubGVuZ3RoLTFdLm1lc3NhZ2U9PT11ZVt1ZS5sZW5ndGgtMV0ubWVzc2FnZSlyZXR1cm47aWYodWUubGVuZ3RoPmoubGVuZ3RoJiZqLmxlbmd0aD4wJiZqW2oubGVuZ3RoLTFdLnRpbWVzdGFtcD09PXVlW2oubGVuZ3RoLTFdLnRpbWVzdGFtcCYmaltqLmxlbmd0aC0xXS5tZXNzYWdlPT09dWVbai5sZW5ndGgtMV0ubWVzc2FnZSl7bGV0IGxlPXVlLnNsaWNlKGoubGVuZ3RoKTtmb3IobGV0IFEgb2YgbGUpdGhpcy5sb2dCdWZmZXIucHVzaChRKSx0aGlzLnVwZGF0ZU1ldHJpY3MoUS5sZXZlbCksdGhpcy5sb2dCdWZmZXIubGVuZ3RoPnRoaXMubWF4RW50cmllcyYmdGhpcy5sb2dCdWZmZXIuc2hpZnQoKSwoIXRoaXMuZmlsdGVyTW9kZXx8IXRoaXMuc2VhcmNoUXVlcnl8fHRoaXMuZW50cnlNYXRjaGVzRmlsdGVyKFEpKSYmdGhpcy53cml0ZUxvZ0VudHJ5KFEpO3JldHVybn10aGlzLmxvZ0J1ZmZlcj1bLi4udWVdLHRoaXMucmVSZW5kZXJGaWx0ZXJlZExvZ3MoKX19Z2V0VGVybWluYWxUaGVtZSgpe3JldHVybiF0aGlzLmdvQnJpZ2h0P3tiYWNrZ3JvdW5kOiIjMGEwYTBhIixmb3JlZ3JvdW5kOiIjZTBlMGUwIixjdXJzb3I6IiNlMGUwZTAiLHNlbGVjdGlvbkJhY2tncm91bmQ6IiM0MDQwNDAiLGJsYWNrOiIjMDAwMDAwIixyZWQ6IiNmZjU1NTUiLGdyZWVuOiIjNTBmYTdiIix5ZWxsb3c6IiNmMWZhOGMiLGJsdWU6IiM2MjcyYTQiLG1hZ2VudGE6IiNmZjc5YzYiLGN5YW46IiM4YmU5ZmQiLHdoaXRlOiIjZjhmOGYyIixicmlnaHRCbGFjazoiIzYyNzJhNCIsYnJpZ2h0UmVkOiIjZmY2ZTZlIixicmlnaHRHcmVlbjoiIzY5ZmY5NCIsYnJpZ2h0WWVsbG93OiIjZmZmZmE1IixicmlnaHRCbHVlOiIjZDZhY2ZmIixicmlnaHRNYWdlbnRhOiIjZmY5MmRmIixicmlnaHRDeWFuOiIjYTRmZmZmIixicmlnaHRXaGl0ZToiI2ZmZmZmZiJ9OntiYWNrZ3JvdW5kOiIjZmZmZmZmIixmb3JlZ3JvdW5kOiIjMzMzMzMzIixjdXJzb3I6IiMzMzMzMzMiLHNlbGVjdGlvbkJhY2tncm91bmQ6IiNhZGQ2ZmYiLGJsYWNrOiIjMDAwMDAwIixyZWQ6IiNjZDMxMzEiLGdyZWVuOiIjMDBiYzAwIix5ZWxsb3c6IiM5NDk4MDAiLGJsdWU6IiMwNDUxYTUiLG1hZ2VudGE6IiNiYzA1YmMiLGN5YW46IiMwNTk4YmMiLHdoaXRlOiIjNTU1NTU1IixicmlnaHRCbGFjazoiIzY2NjY2NiIsYnJpZ2h0UmVkOiIjY2QzMTMxIixicmlnaHRHcmVlbjoiIzE0Y2UxNCIsYnJpZ2h0WWVsbG93OiIjYjViYTAwIixicmlnaHRCbHVlOiIjMDQ1MWE1IixicmlnaHRNYWdlbnRhOiIjYmMwNWJjIixicmlnaHRDeWFuOiIjMDU5OGJjIixicmlnaHRXaGl0ZToiI2E1YTVhNSJ9fWFzeW5jIGluamVjdFh0ZXJtU3R5bGVzSW50b1NoYWRvdygpe2xldCBGPSJ4dGVybS1zaGFkb3ctc3R5bGVzIjtpZih0aGlzLnNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoRikpcmV0dXJuO2xldCBqPWAkeyQyfS94dGVybUAke1QyLnh0ZXJtfS9jc3MveHRlcm0uY3NzYCxsZT1hd2FpdChhd2FpdCBmZXRjaChqKSkudGV4dCgpLFE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtRLmlkPUYsUS50ZXh0Q29udGVudD1sZSx0aGlzLnNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoUSl9YWRkTG9nKEYsaix1ZSl7bGV0IGxlPXt0aW1lc3RhbXA6bmV3IERhdGUoKS50b0lTT1N0cmluZygpLGxldmVsOkYsbWVzc2FnZTpqLHNvdXJjZTp1ZX07dGhpcy5sb2dCdWZmZXIucHVzaChsZSksdGhpcy5sb2dCdWZmZXIubGVuZ3RoPnRoaXMubWF4RW50cmllcyYmdGhpcy5sb2dCdWZmZXIuc2hpZnQoKSwhdGhpcy5maWx0ZXJNb2RlfHwhdGhpcy5zZWFyY2hRdWVyeT90aGlzLndyaXRlTG9nRW50cnkobGUpOnRoaXMuZW50cnlNYXRjaGVzRmlsdGVyKGxlKT8odGhpcy50cmFpbGluZ0hpZGRlbkNvdW50PTAsdGhpcy53cml0ZUxvZ0VudHJ5KGxlKSk6dGhpcy51cGRhdGVUcmFpbGluZ1BsYWNlaG9sZGVyKCksdGhpcy51cGRhdGVNZXRyaWNzKGxlLmxldmVsKX11cGRhdGVMb2coRil7aWYoRilmb3IobGV0IGogb2YgRil0aGlzLmxvZ0J1ZmZlci5wdXNoKGopLHRoaXMubG9nQnVmZmVyLmxlbmd0aD50aGlzLm1heEVudHJpZXMmJnRoaXMubG9nQnVmZmVyLnNoaWZ0KCksIXRoaXMuZmlsdGVyTW9kZXx8IXRoaXMuc2VhcmNoUXVlcnk/dGhpcy53cml0ZUxvZ0VudHJ5KGopOnRoaXMuZW50cnlNYXRjaGVzRmlsdGVyKGopPyh0aGlzLnRyYWlsaW5nSGlkZGVuQ291bnQ9MCx0aGlzLndyaXRlTG9nRW50cnkoaikpOnRoaXMudXBkYXRlVHJhaWxpbmdQbGFjZWhvbGRlcigpLHRoaXMudXBkYXRlTWV0cmljcyhqLmxldmVsKX11cGRhdGVUcmFpbGluZ1BsYWNlaG9sZGVyKCl7dGhpcy50ZXJtaW5hbCYmKHRoaXMudHJhaWxpbmdIaWRkZW5Db3VudD4wJiZ0aGlzLnRlcm1pbmFsLndyaXRlKCJceDFCWzFBXHgxQlsyS1xyIiksdGhpcy50cmFpbGluZ0hpZGRlbkNvdW50KyssdGhpcy53cml0ZUhpZGRlblBsYWNlaG9sZGVyKHRoaXMudHJhaWxpbmdIaWRkZW5Db3VudCksdGhpcy5hdXRvU2Nyb2xsJiZ0aGlzLnRlcm1pbmFsLnNjcm9sbFRvQm90dG9tKCkpfWVudHJ5TWF0Y2hlc0ZpbHRlcihGKXtpZighdGhpcy5zZWFyY2hRdWVyeSlyZXR1cm4hMDtsZXQgaj10aGlzLnNlYXJjaFF1ZXJ5LnRvTG93ZXJDYXNlKCk7cmV0dXJuIEYubWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGopfHxGLmxldmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoail8fChGLnNvdXJjZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhqKT8/ITEpfXdyaXRlTG9nRW50cnkoRil7aWYoIXRoaXMudGVybWluYWwpcmV0dXJuO2xldCBqPXRoaXMuZm9ybWF0TG9nRW50cnkoRik7dGhpcy50ZXJtaW5hbC53cml0ZWxuKGopLHRoaXMuYXV0b1Njcm9sbCYmdGhpcy50ZXJtaW5hbC5zY3JvbGxUb0JvdHRvbSgpfWZvcm1hdExvZ0VudHJ5KEYpe2xldCBqPXRoaXMuZm9ybWF0VGltZXN0YW1wKEYudGltZXN0YW1wKSx1ZT17ZGVidWc6Ilx4MUJbOTBtIixpbmZvOiJceDFCWzM2bSIsd2FybjoiXHgxQlszM20iLGVycm9yOiJceDFCWzMxbSIsc3VjY2VzczoiXHgxQlszMm0ifSxsZT0iXHgxQlswbSIsUT0iXHgxQlsybSIsaWU9YCR7dWVbRi5sZXZlbF19WyR7Ri5sZXZlbC50b1VwcGVyQ2FzZSgpLnBhZEVuZCg3KX1dJHtsZX1gLHRlPUYuc291cmNlP2Ake1F9WyR7Ri5zb3VyY2V9XSR7bGV9IGA6IiIsZWU9dGhpcy5hcHBseUhpZ2hsaWdodHMoRi5tZXNzYWdlKTtyZXR1cm5gJHtRfSR7an0ke2xlfSAke2llfSAke3RlfSR7ZWV9YH1mb3JtYXRUaW1lc3RhbXAoRil7cmV0dXJuIG5ldyBEYXRlKEYpLnRvTG9jYWxlVGltZVN0cmluZygiZW4tVVMiLHtob3VyMTI6ITEsaG91cjoiMi1kaWdpdCIsbWludXRlOiIyLWRpZ2l0IixzZWNvbmQ6IjItZGlnaXQiLGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6M30pfWFwcGx5SGlnaGxpZ2h0cyhGKXtsZXQgaj1bLi4udGhpcy5oaWdobGlnaHRLZXl3b3Jkc107aWYodGhpcy5maWx0ZXJNb2RlJiZ0aGlzLnNlYXJjaFF1ZXJ5JiZqLnB1c2godGhpcy5zZWFyY2hRdWVyeSksai5sZW5ndGg9PT0wKXJldHVybiBGO2xldCB1ZT1GO2ZvcihsZXQgbGUgb2Ygail7bGV0IFE9bGUucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csIlxcJCYiKSxpZT1uZXcgUmVnRXhwKGAoJHtRfSlgLCJnaSIpO3VlPXVlLnJlcGxhY2UoaWUsIlx4MUJbNDNtXHgxQlszMG0kMVx4MUJbMG0iKX1yZXR1cm4gdWV9d3JpdGVSYXcoRil7dGhpcy50ZXJtaW5hbCYmKHRoaXMudGVybWluYWwud3JpdGUoRiksdGhpcy5yZWNvcmRMb2dFdmVudCgpLHRoaXMuYXV0b1Njcm9sbCYmdGhpcy50ZXJtaW5hbC5zY3JvbGxUb0JvdHRvbSgpKX13cml0ZWxuUmF3KEYpe3RoaXMudGVybWluYWwmJih0aGlzLnRlcm1pbmFsLndyaXRlbG4oRiksdGhpcy5yZWNvcmRMb2dFdmVudCgpLHRoaXMuYXV0b1Njcm9sbCYmdGhpcy50ZXJtaW5hbC5zY3JvbGxUb0JvdHRvbSgpKX1oYW5kbGVTZWFyY2hJbnB1dChGKXtsZXQgdWU9Ri50YXJnZXQudmFsdWUsbGU9dGhpcy5zZWFyY2hRdWVyeSE9PXVlO3RoaXMuc2VhcmNoUXVlcnk9dWUsdGhpcy5maWx0ZXJNb2RlJiZsZT90aGlzLnJlUmVuZGVyRmlsdGVyZWRMb2dzKCk6dGhpcy5zZWFyY2hRdWVyeSYmdGhpcy5zZWFyY2hBZGRvbj8uZmluZE5leHQodGhpcy5zZWFyY2hRdWVyeSl9aGFuZGxlU2VhcmNoS2V5ZG93bihGKXtGLmtleT09PSJFbnRlciI/Ri5zaGlmdEtleT90aGlzLnNlYXJjaFByZXZpb3VzKCk6dGhpcy5zZWFyY2hOZXh0KCk6Ri5rZXk9PT0iRXNjYXBlIiYmKHRoaXMuc2VhcmNoUXVlcnk9IiIsRi50YXJnZXQudmFsdWU9IiIpfXNlYXJjaChGKXt0aGlzLnNlYXJjaFF1ZXJ5PUYsdGhpcy5zZWFyY2hBZGRvbj8uZmluZE5leHQoRil9c2VhcmNoTmV4dCgpe3RoaXMuc2VhcmNoUXVlcnkmJnRoaXMuc2VhcmNoQWRkb24/LmZpbmROZXh0KHRoaXMuc2VhcmNoUXVlcnkpfXNlYXJjaFByZXZpb3VzKCl7dGhpcy5zZWFyY2hRdWVyeSYmdGhpcy5zZWFyY2hBZGRvbj8uZmluZFByZXZpb3VzKHRoaXMuc2VhcmNoUXVlcnkpfXRvZ2dsZUF1dG9TY3JvbGwoKXt0aGlzLmF1dG9TY3JvbGw9IXRoaXMuYXV0b1Njcm9sbCx0aGlzLmF1dG9TY3JvbGwmJnRoaXMudGVybWluYWwmJnRoaXMudGVybWluYWwuc2Nyb2xsVG9Cb3R0b20oKX10b2dnbGVGaWx0ZXJNb2RlKCl7dGhpcy5maWx0ZXJNb2RlPSF0aGlzLmZpbHRlck1vZGUsdGhpcy5yZVJlbmRlckZpbHRlcmVkTG9ncygpfXJlUmVuZGVyRmlsdGVyZWRMb2dzKCl7aWYodGhpcy50ZXJtaW5hbCl7aWYodGhpcy50ZXJtaW5hbC5jbGVhcigpLHRoaXMudHJhaWxpbmdIaWRkZW5Db3VudD0wLCF0aGlzLmZpbHRlck1vZGV8fCF0aGlzLnNlYXJjaFF1ZXJ5KWZvcihsZXQgRiBvZiB0aGlzLmxvZ0J1ZmZlcil7bGV0IGo9dGhpcy5mb3JtYXRMb2dFbnRyeShGKTt0aGlzLnRlcm1pbmFsLndyaXRlbG4oail9ZWxzZXtsZXQgRj0wO2ZvcihsZXQgaiBvZiB0aGlzLmxvZ0J1ZmZlcilpZih0aGlzLmVudHJ5TWF0Y2hlc0ZpbHRlcihqKSl7Rj4wJiYodGhpcy53cml0ZUhpZGRlblBsYWNlaG9sZGVyKEYpLEY9MCk7bGV0IHVlPXRoaXMuZm9ybWF0TG9nRW50cnkoaik7dGhpcy50ZXJtaW5hbC53cml0ZWxuKHVlKX1lbHNlIEYrKztGPjAmJih0aGlzLndyaXRlSGlkZGVuUGxhY2Vob2xkZXIoRiksdGhpcy50cmFpbGluZ0hpZGRlbkNvdW50PUYpfXRoaXMuYXV0b1Njcm9sbCYmdGhpcy50ZXJtaW5hbC5zY3JvbGxUb0JvdHRvbSgpfX13cml0ZUhpZGRlblBsYWNlaG9sZGVyKEYpe2xldCBqPSJceDFCWzJtIix1ZT0iXHgxQlswbSIsbGU9Rj09PTE/IlsxIGxvZyBsaW5lIGhpZGRlbiBieSBmaWx0ZXIgLi4uXSI6YFske0Z9IGxvZyBsaW5lcyBoaWRkZW4gYnkgZmlsdGVyIC4uLl1gO3RoaXMudGVybWluYWw/LndyaXRlbG4oYCR7an0ke2xlfSR7dWV9YCl9Y2xlYXJMb2dzKCl7dGhpcy50ZXJtaW5hbD8uY2xlYXIoKSx0aGlzLmxvZ0J1ZmZlcj1bXSx0aGlzLnRyYWlsaW5nSGlkZGVuQ291bnQ9MCx0aGlzLnJlc2V0TWV0cmljcygpfXNjcm9sbFRvQm90dG9tKCl7dGhpcy50ZXJtaW5hbD8uc2Nyb2xsVG9Cb3R0b20oKX11cGRhdGVNZXRyaWNzKEYpe3RoaXMubWV0cmljcz17Li4udGhpcy5tZXRyaWNzLFtGXTp0aGlzLm1ldHJpY3NbRl0rMSx0b3RhbDp0aGlzLm1ldHJpY3MudG90YWwrMX0sdGhpcy5yZWNvcmRMb2dFdmVudCgpfXJlY29yZExvZ0V2ZW50KCl7dGhpcy5yYXRlQnVmZmVyLnB1c2goRGF0ZS5ub3coKSl9Y2FsY3VsYXRlUmF0ZSgpe2xldCBGPURhdGUubm93KCk7dGhpcy5yYXRlQnVmZmVyPXRoaXMucmF0ZUJ1ZmZlci5maWx0ZXIodWU9PkYtdWU8MWU0KTtsZXQgaj10aGlzLnJhdGVCdWZmZXIubGVuZ3RoLzEwO2ohPT10aGlzLm1ldHJpY3MucmF0ZSYmKHRoaXMubWV0cmljcz17Li4udGhpcy5tZXRyaWNzLHJhdGU6an0pfXJlc2V0TWV0cmljcygpe3RoaXMubWV0cmljcz17ZGVidWc6MCxpbmZvOjAsd2FybjowLGVycm9yOjAsc3VjY2VzczowLHRvdGFsOjAscmF0ZTowfSx0aGlzLnJhdGVCdWZmZXI9W119YXN5bmMgZGlzY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMucmVzaXplT2JzZXJ2ZXImJnRoaXMucmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpLHRoaXMudGVybWluYWxUaGVtZVN1YnNjcmlwdGlvbiYmdGhpcy50ZXJtaW5hbFRoZW1lU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5yYXRlSW50ZXJ2YWwmJmNsZWFySW50ZXJ2YWwodGhpcy5yYXRlSW50ZXJ2YWwpLHRoaXMudGVybWluYWwmJnRoaXMudGVybWluYWwuZGlzcG9zZSgpfXN0YXRpY3tJaShhLHQpfX07cmV0dXJuIGhlPWF9KSgpfSk7dmFyIFl4YT1nKCgpPT57S3hhKCl9KTt2YXIgWnhhLFh4YT1nKCgpPT57cGUoKTtJdCgpO2VsdCgpO1p4YT1pKCgpPT57bGV0IHM9W3tuYW1lOiJMYXRlbmN5IixtYXg6MTAwfSx7bmFtZToiVGhyb3VnaHB1dCIsbWF4OjEwMH0se25hbWU6IkF2YWlsYWJpbGl0eSIsbWF4OjEwMH0se25hbWU6IkVycm9yIFJhdGUiLG1heDoxMDB9LHtuYW1lOiJTYXR1cmF0aW9uIixtYXg6MTAwfSx7bmFtZToiU2VjdXJpdHkiLG1heDoxMDB9XSxlPVt7bmFtZToiU2VydmljZSBBIix2YWx1ZXM6Wzg1LDkwLDk5LDEyLDQ1LDc4XX0se25hbWU6IlNlcnZpY2UgQiIsdmFsdWVzOls3MCw2NSw5NSwyOCw2MCw5MF19XSx0PVt7bmFtZToiU3BlZWQiLG1heDoxMH0se25hbWU6IlJlbGlhYmlsaXR5IixtYXg6MTB9LHtuYW1lOiJDb21mb3J0IixtYXg6MTB9LHtuYW1lOiJTYWZldHkiLG1heDoxMH0se25hbWU6IkNvc3QiLG1heDoxMH1dLGE9W3tuYW1lOiJSYXRpbmciLHZhbHVlczpbOC41LDkuMiw3LDkuNSw2XX1dO3JldHVybiB3YAogICAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcj0+e2xldCBuPXIucXVlcnlTZWxlY3RvcigiI2NvbXBhcmlzb24tY2hhcnQiKSxvPXIucXVlcnlTZWxlY3RvcigiI3NpbmdsZS1jaGFydCIpO3IucXVlcnlTZWxlY3RvckFsbCgiZGVlcy1idXR0b24iKS5mb3JFYWNoKHA9PntwLnRleHQ/LnRyaW0oKT09PSJSYW5kb21pemUiJiZwLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e24uc2VyaWVzPWUubWFwKHU9Pih7Li4udSx2YWx1ZXM6dS52YWx1ZXMubWFwKCgpPT5NYXRoLnJvdW5kKDIwK01hdGgucmFuZG9tKCkqODApKX0pKSxvLnNlcmllcz1hLm1hcCh1PT4oey4uLnUsdmFsdWVzOnUudmFsdWVzLm1hcCgoKT0+TWF0aC5yb3VuZCgoMitNYXRoLnJhbmRvbSgpKjgpKjEwKS8xMCl9KSl9KX0pfX0+CiAgICAgIDxzdHlsZT4KICAgICAgICAke0pgCiAgICAgICAgICAuZGVtb0JveCB7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk1JSkiLCJoc2woMCAwJSA5JSkiKX07CiAgICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIHBhZGRpbmc6IDQwcHg7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIGdhcDogMjRweDsKICAgICAgICAgIH0KICAgICAgICAgIC5jaGFydFJvdyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjsKICAgICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgICAgfQogICAgICAgICAgLmNvbnRyb2xzIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgICAgICB9CiAgICAgICAgICAuaW5mbyB7CiAgICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNS40IDE2LjMlIDU2LjklKSIsImhzbCgyMTUgMjAuMiUgNTUuMSUpIil9OwogICAgICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsICdHZWlzdCBTYW5zJywgc2Fucy1zZXJpZjsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBtYXJnaW4tdG9wOiA4cHg7CiAgICAgICAgICB9CiAgICAgICAgYH0KICAgICAgPC9zdHlsZT4KICAgICAgPGRpdiBjbGFzcz0iZGVtb0JveCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbHMiPgogICAgICAgICAgPGRlZXMtYnV0dG9uLWdyb3VwIGxhYmVsPSJBY3Rpb25zOiI+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbj5SYW5kb21pemU8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPC9kZWVzLWJ1dHRvbi1ncm91cD4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iY2hhcnRSb3ciPgogICAgICAgICAgPGRlZXMtY2hhcnQtcmFkYXIKICAgICAgICAgICAgaWQ9ImNvbXBhcmlzb24tY2hhcnQiCiAgICAgICAgICAgIC5sYWJlbD0keyJTZXJ2aWNlIEhlYWx0aCBDb21wYXJpc29uIn0KICAgICAgICAgICAgLmluZGljYXRvcnM9JHtzfQogICAgICAgICAgICAuc2VyaWVzPSR7ZX0KICAgICAgICAgID48L2RlZXMtY2hhcnQtcmFkYXI+CgogICAgICAgICAgPGRlZXMtY2hhcnQtcmFkYXIKICAgICAgICAgICAgaWQ9InNpbmdsZS1jaGFydCIKICAgICAgICAgICAgLmxhYmVsPSR7IlByb2R1Y3QgUmF0aW5nIn0KICAgICAgICAgICAgLmluZGljYXRvcnM9JHt0fQogICAgICAgICAgICAuc2VyaWVzPSR7YX0KICAgICAgICAgICAgLmZpbGxBcmVhPSR7ITB9CiAgICAgICAgICA+PC9kZWVzLWNoYXJ0LXJhZGFyPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvIj4KICAgICAgICAgIFJhZGFyIGNoYXJ0IGZvciBtdWx0aS1kaW1lbnNpb25hbCBjb21wYXJpc29uIOKAogogICAgICAgICAgU3VwcG9ydHMgbXVsdGlwbGUgb3ZlcmxheSBzZXJpZXMgYW5kIGNvbmZpZ3VyYWJsZSBmaWxsIOKAogogICAgICAgICAgQ2xpY2sgJ1JhbmRvbWl6ZScgdG8gdXBkYXRlIGRhdGEKICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CiAgYH0sImRlbW9GdW5jIil9KTt2YXIgUXhhLEp4YT1nKCgpPT57cGUoKTtXUSgpO1F4YT1bLi4uYjQsSmBgXX0pO3ZhciBleWEsdHlhPWcoKCk9PntwZSgpO2V5YT1pKHM9PndgCiAgICA8ZGVlcy10aWxlPgogICAgICA8ZGl2IHNsb3Q9ImhlYWRlciIgY2xhc3M9ImNoYXJ0SGVhZGVyIj4KICAgICAgICA8c3BhbiBjbGFzcz0iY2hhcnRMYWJlbCI+JHtzLmxhYmVsfTwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNoYXJ0Q29udGFpbmVyIj48L2Rpdj4KICAgIDwvZGVlcy10aWxlPgogIGAsInJlbmRlckNoYXJ0UmFkYXIiKX0pO3ZhciBHUSxxdSxrZXMsZWx0PWcoKCk9PntwZSgpO1VRKCk7WHhhKCk7SnhhKCk7dHlhKCk7X3goKTtHUT1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0scXU9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LGtlcz0oKCk9PntsZXQgcz1bbmUoImRlZXMtY2hhcnQtcmFkYXIiKV0sZSx0PVtdLGEscj1IdSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXTt2YXIgeT1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0NoYXJ0UmFkYXIiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgTT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOkFycmF5fSldLHA9W0woe3R5cGU6QXJyYXl9KV0sYz1bTCh7dHlwZTpCb29sZWFufSldLHg9W0woe3R5cGU6Qm9vbGVhbn0pXSxHUSh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImluZGljYXRvcnMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoej0+ImluZGljYXRvcnMiaW4geiwiaGFzIiksZ2V0Omkoej0+ei5pbmRpY2F0b3JzLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3ouaW5kaWNhdG9ycz1OfSwic2V0Iil9LG1ldGFkYXRhOk19LG8sbCksR1EodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZXJpZXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoej0+InNlcmllcyJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LnNlcmllcywiZ2V0Iiksc2V0OmkoKHosTik9Pnt6LnNlcmllcz1OfSwic2V0Iil9LG1ldGFkYXRhOk19LGQsdSksR1EodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93TGVnZW5kIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJzaG93TGVnZW5kImluIHosImhhcyIpLGdldDppKHo9Pnouc2hvd0xlZ2VuZCwiZ2V0Iiksc2V0OmkoKHosTik9Pnt6LnNob3dMZWdlbmQ9Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxiLHYpLEdRKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZmlsbEFyZWEiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoej0+ImZpbGxBcmVhImluIHosImhhcyIpLGdldDppKHo9PnouZmlsbEFyZWEsImdldCIpLHNldDppKCh6LE4pPT57ei5maWxsQXJlYT1OfSwic2V0Iil9LG1ldGFkYXRhOk19LG0sZiksR1EobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6TX0sbnVsbCx0KSx5PWE9ZS52YWx1ZSxNJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOk19KX1zdGF0aWMgZGVtbz1aeGE7c3RhdGljIGRlbW9Hcm91cHM9WyJDaGFydCJdOyNlPXF1KHRoaXMsbyxbXSk7Z2V0IGluZGljYXRvcnMoKXtyZXR1cm4gdGhpcy4jZX1zZXQgaW5kaWNhdG9ycyhNKXt0aGlzLiNlPU19I3Q9KHF1KHRoaXMsbCkscXUodGhpcyxkLFtdKSk7Z2V0IHNlcmllcygpe3JldHVybiB0aGlzLiN0fXNldCBzZXJpZXMoTSl7dGhpcy4jdD1NfSNhPShxdSh0aGlzLHUpLHF1KHRoaXMsYiwhMCkpO2dldCBzaG93TGVnZW5kKCl7cmV0dXJuIHRoaXMuI2F9c2V0IHNob3dMZWdlbmQoTSl7dGhpcy4jYT1NfSNzPShxdSh0aGlzLHYpLHF1KHRoaXMsbSwhMCkpO2dldCBmaWxsQXJlYSgpe3JldHVybiB0aGlzLiNzfXNldCBmaWxsQXJlYShNKXt0aGlzLiNzPU19c3RhdGljIHN0eWxlcz1ReGE7cmVuZGVyKCl7cmV0dXJuIGV5YSh0aGlzKX1hc3luYyB1cGRhdGVkKE0pe3N1cGVyLnVwZGF0ZWQoTSksdGhpcy5jaGFydEluc3RhbmNlJiYoTS5oYXMoImluZGljYXRvcnMiKXx8TS5oYXMoInNlcmllcyIpfHxNLmhhcygic2hvd0xlZ2VuZCIpfHxNLmhhcygiZmlsbEFyZWEiKSkmJnRoaXMudXBkYXRlQ2hhcnQoKX1idWlsZE9wdGlvbigpe2xldCBNPWc0KHRoaXMuZ29CcmlnaHQpLHo9ZjQodGhpcy5nb0JyaWdodCksTj10aGlzLmdvQnJpZ2h0Py4xOi4xNSxDPXRoaXMuc2VyaWVzLm1hcCgoXyxPKT0+e2xldCAkPV8uY29sb3J8fHpbTyV6Lmxlbmd0aF07cmV0dXJue25hbWU6Xy5uYW1lLHZhbHVlOl8udmFsdWVzLGl0ZW1TdHlsZTp7Y29sb3I6JCxib3JkZXJDb2xvcjokLGJvcmRlcldpZHRoOjF9LGxpbmVTdHlsZTp7Y29sb3I6JCx3aWR0aDoxLjV9LGFyZWFTdHlsZTp0aGlzLmZpbGxBcmVhP3tjb2xvcjptNCgkLE4pfTp2b2lkIDAsc3ltYm9sOiJjaXJjbGUiLHN5bWJvbFNpemU6NX19KTtyZXR1cm57dG9vbHRpcDp7dHJpZ2dlcjoiaXRlbSJ9LGxlZ2VuZDp0aGlzLnNob3dMZWdlbmQmJnRoaXMuc2VyaWVzLmxlbmd0aD4xP3tib3R0b206OCxpdGVtV2lkdGg6MTAsaXRlbUhlaWdodDoxMH06e3Nob3c6ITF9LHJhZGFyOntpbmRpY2F0b3I6dGhpcy5pbmRpY2F0b3JzLm1hcChfPT4oe25hbWU6Xy5uYW1lLG1heDpfLm1heH0pKSxzaGFwZToicG9seWdvbiIsc3BsaXROdW1iZXI6NCxheGlzTmFtZTp7Y29sb3I6TS50ZXh0U2Vjb25kYXJ5LGZvbnRTaXplOjExfSxzcGxpdEFyZWE6e2FyZWFTdHlsZTp7Y29sb3I6W00uYmdUZXJ0aWFyeSxNLmJnU2Vjb25kYXJ5XX19LHNwbGl0TGluZTp7bGluZVN0eWxlOntjb2xvcjpNLmJvcmRlckRlZmF1bHR9fSxheGlzTGluZTp7bGluZVN0eWxlOntjb2xvcjpNLmJvcmRlckRlZmF1bHR9fX0sc2VyaWVzOlt7dHlwZToicmFkYXIiLGRhdGE6QyxlbXBoYXNpczp7bGluZVN0eWxlOnt3aWR0aDozfX19XX19Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHF1KHRoaXMsZil9c3RhdGlje3F1KGEsdCl9fTtyZXR1cm4geT1hfSkoKX0pO3ZhciBheWE9ZygoKT0+e2VsdCgpfSk7dmFyIHN5YT1nKCgpPT57eHhhKCk7THhhKCk7T3hhKCk7VXhhKCk7WXhhKCk7YXlhKCl9KTt2YXIgaXlhLHJ5YT1nKCgpPT57cGUoKTtpeWE9aSgoKT0+d2AKICA8c3R5bGU+CiAgICAuZGVtb1dyYXBwZXIgewogICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBtaW4taGVpZ2h0OiAxMDB2aDsKICAgICAgcGFkZGluZzogNDhweDsKICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmOGY5ZmEiLCIjMGEwYTBhIil9OwogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICBnYXA6IDMycHg7CiAgICB9CiAgICAKICAgIC5zZWN0aW9uIHsKICAgICAgbWF4LXdpZHRoOiA5MDBweDsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgfQogICAgCiAgICAuc2VjdGlvbi10aXRsZSB7CiAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICAgIH0KICAgIAogICAgLnNlY3Rpb24tZGVzY3JpcHRpb24gewogICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICB9CiAgPC9zdHlsZT4KICA8ZGl2IGNsYXNzPSJkZW1vV3JhcHBlciI+CiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+VHlwZVNjcmlwdCBDb2RlIEV4YW1wbGU8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1kZXNjcmlwdGlvbiI+QSBjb21wcmVoZW5zaXZlIFR5cGVTY3JpcHQgY29kZSBleGFtcGxlIHdpdGggdmFyaW91cyBzeW50YXggaGlnaGxpZ2h0aW5nLjwvZGl2PgogICAgICA8ZGVlcy1kYXRhdmlldy1jb2RlYm94IHByb2dsYW5nPSJ0eXBlc2NyaXB0Ij4KaW50ZXJmYWNlIFVzZXIgewogIGlkOiBudW1iZXI7CiAgbmFtZTogc3RyaW5nOwogIGVtYWlsOiBzdHJpbmc7CiAgaXNBY3RpdmU6IGJvb2xlYW47Cn0KCmNsYXNzIFVzZXJTZXJ2aWNlIHsKICBwcml2YXRlIHVzZXJzOiBVc2VyW10gPSBbXTsKICAKICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwaVVybDogc3RyaW5nKSB7CiAgICBjb25zb2xlLmxvZygnVXNlclNlcnZpY2UgaW5pdGlhbGl6ZWQnKTsKICB9CiAgCiAgYXN5bmMgZ2V0VXNlcnMoKTogUHJvbWlzZTxVc2VyW10+IHsKICAgIHRyeSB7CiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godGhpcy5hcGlVcmwpOwogICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpOwogICAgICByZXR1cm4gZGF0YS51c2VyczsKICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBmZXRjaCB1c2VyczonLCBlcnJvcik7CiAgICAgIHJldHVybiBbXTsKICAgIH0KICB9CiAgCiAgYWRkVXNlcih1c2VyOiBVc2VyKTogdm9pZCB7CiAgICB0aGlzLnVzZXJzLnB1c2godXNlcik7CiAgfQp9CgovLyBVc2FnZSBleGFtcGxlCmNvbnN0IHNlcnZpY2UgPSBuZXcgVXNlclNlcnZpY2UoJ2h0dHBzOi8vYXBpLmV4YW1wbGUuY29tL3VzZXJzJyk7CmNvbnN0IHVzZXJzID0gYXdhaXQgc2VydmljZS5nZXRVc2VycygpOwpjb25zb2xlLmxvZygnRm91bmQgdXNlcnM6JywgdXNlcnMubGVuZ3RoKTsKICAgICAgPC9kZWVzLWRhdGF2aWV3LWNvZGVib3g+CiAgICA8L2Rpdj4KICAgIAogICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPkphdmFTY3JpcHQgRXhhbXBsZTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj5Nb2Rlcm4gSmF2YVNjcmlwdCB3aXRoIEVTNisgZmVhdHVyZXMuPC9kaXY+CiAgICAgIDxkZWVzLWRhdGF2aWV3LWNvZGVib3ggcHJvZ2xhbmc9ImphdmFzY3JpcHQiPgovLyBBcnJheSBtYW5pcHVsYXRpb24gZXhhbXBsZXMKY29uc3QgbnVtYmVycyA9IFsxLCAyLCAzLCA0LCA1XTsKY29uc3QgZG91YmxlZCA9IG51bWJlcnMubWFwKG4gPT4gbiAqIDIpOwpjb25zdCBmaWx0ZXJlZCA9IG51bWJlcnMuZmlsdGVyKG4gPT4gbiA+IDMpOwoKLy8gT2JqZWN0IGRlc3RydWN0dXJpbmcKY29uc3QgdXNlciA9IHsgbmFtZTogJ0pvaG4nLCBhZ2U6IDMwLCBjaXR5OiAnTmV3IFlvcmsnIH07CmNvbnN0IHsgbmFtZSwgYWdlIH0gPSB1c2VyOwoKLy8gUHJvbWlzZSBoYW5kbGluZwpjb25zdCBmZXRjaERhdGEgPSBhc3luYyAodXJsKSA9PiB7CiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwpOwogIHJldHVybiByZXNwb25zZS5qc29uKCk7Cn07CgovLyBNb2Rlcm4gc3ludGF4CmNvbnN0IGdyZWV0ID0gKG5hbWUgPSAnV29ybGQnKSA9PiBcYEhlbGxvLCBcJHtuYW1lfSFcYDsKY29uc29sZS5sb2coZ3JlZXQoJ1NoYWRDTicpKTsKICAgICAgPC9kZWVzLWRhdGF2aWV3LWNvZGVib3g+CiAgICA8L2Rpdj4KICAgIAogICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPlB5dGhvbiBFeGFtcGxlPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tZGVzY3JpcHRpb24iPlB5dGhvbiBjb2RlIHdpdGggY2xhc3NlcyBhbmQgdHlwZSBoaW50cy48L2Rpdj4KICAgICAgPGRlZXMtZGF0YXZpZXctY29kZWJveCBwcm9nbGFuZz0icHl0aG9uIj4KZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QsIE9wdGlvbmFsCmltcG9ydCBhc3luY2lvCgpjbGFzcyBEYXRhUHJvY2Vzc29yOgogICAgIiIiQSBzaW1wbGUgZGF0YSBwcm9jZXNzb3IgY2xhc3MiIiIKICAgIAogICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWU6IHN0cik6CiAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogICAgICAgIHNlbGYuZGF0YTogTGlzdFtkaWN0XSA9IFtdCiAgICAKICAgIGFzeW5jIGRlZiBwcm9jZXNzX2RhdGEoc2VsZiwgaXRlbXM6IExpc3RbZGljdF0pIC0+IExpc3RbZGljdF06CiAgICAgICAgIiIiUHJvY2VzcyBkYXRhIGl0ZW1zIGFzeW5jaHJvbm91c2x5IiIiCiAgICAgICAgcmVzdWx0cyA9IFtdCiAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6CiAgICAgICAgICAgICMgU2ltdWxhdGUgYXN5bmMgcHJvY2Vzc2luZwogICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMSkKICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoewogICAgICAgICAgICAgICAgJ2lkJzogaXRlbS5nZXQoJ2lkJyksCiAgICAgICAgICAgICAgICAncHJvY2Vzc2VkJzogVHJ1ZSwKICAgICAgICAgICAgICAgICdwcm9jZXNzb3InOiBzZWxmLm5hbWUKICAgICAgICAgICAgfSkKICAgICAgICByZXR1cm4gcmVzdWx0cwogICAgCiAgICBkZWYgZ2V0X3N1bW1hcnkoc2VsZikgLT4gZGljdDoKICAgICAgICByZXR1cm4gewogICAgICAgICAgICAncHJvY2Vzc29yJzogc2VsZi5uYW1lLAogICAgICAgICAgICAnaXRlbXNfcHJvY2Vzc2VkJzogbGVuKHNlbGYuZGF0YSkKICAgICAgICB9CgojIFVzYWdlCnByb2Nlc3NvciA9IERhdGFQcm9jZXNzb3IoIk1haW4iKQpkYXRhID0gYXdhaXQgcHJvY2Vzc29yLnByb2Nlc3NfZGF0YShbeydpZCc6IDF9LCB7J2lkJzogMn1dKQogICAgICA8L2RlZXMtZGF0YXZpZXctY29kZWJveD4KICAgIDwvZGl2PgogICAgCiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+Q1NTIEV4YW1wbGU8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1kZXNjcmlwdGlvbiI+TW9kZXJuIENTUyB3aXRoIGN1c3RvbSBwcm9wZXJ0aWVzIGFuZCBhbmltYXRpb25zLiBOb3RlIHRoZSBzaG9ydGVyIGxhbmd1YWdlIGxhYmVsLjwvZGl2PgogICAgICA8ZGVlcy1kYXRhdmlldy1jb2RlYm94IHByb2dsYW5nPSJjc3MiPgovKiBNb2Rlcm4gQ1NTIHdpdGggY3VzdG9tIHByb3BlcnRpZXMgKi8KOnJvb3QgewogIC0tcHJpbWFyeS1jb2xvcjogIzNiODJmNjsKICAtLXNlY29uZGFyeS1jb2xvcjogIzEwYjk4MTsKICAtLWJhY2tncm91bmQ6ICNmZmZmZmY7CiAgLS10ZXh0LWNvbG9yOiAjMDkwOTBiOwogIC0tYm9yZGVyLXJhZGl1czogNnB4Owp9CgouY2FyZCB7CiAgYmFja2dyb3VuZDogdmFyKC0tYmFja2dyb3VuZCk7CiAgYm9yZGVyOiAxcHggc29saWQgI2U1ZTdlYjsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKTsKICBwYWRkaW5nOiAyNHB4OwogIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTsKfQoKLmNhcmQ6aG92ZXIgewogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsKICBib3gtc2hhZG93OiAwIDRweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEpOwp9CgpAa2V5ZnJhbWVzIGZhZGVJbiB7CiAgZnJvbSB7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMHB4KTsgfQogIHRvIHsgb3BhY2l0eTogMTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9Cn0KICAgICAgPC9kZWVzLWRhdGF2aWV3LWNvZGVib3g+CiAgICA8L2Rpdj4KICAgIAogICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPkpTT04gRXhhbXBsZTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj5KU09OIGNvbmZpZ3VyYXRpb24gd2l0aCBwcm9wZXIgZm9ybWF0dGluZy48L2Rpdj4KICAgICAgPGRlZXMtZGF0YXZpZXctY29kZWJveCBwcm9nbGFuZz0ianNvbiI+CnsKICAibmFtZSI6ICJAZGVzaWduLmVzdGF0ZS9kZWVzLWNhdGFsb2ciLAogICJ2ZXJzaW9uIjogIjEuMTAuNyIsCiAgImRlc2NyaXB0aW9uIjogIkEgY29tcHJlaGVuc2l2ZSBjYXRhbG9nIG9mIHdlYiBjb21wb25lbnRzIiwKICAibWFpbiI6ICJkaXN0X3RzX3dlYi9pbmRleC5qcyIsCiAgInR5cGUiOiAibW9kdWxlIiwKICAic2NyaXB0cyI6IHsKICAgICJidWlsZCI6ICJ0c2J1aWxkIHRzZm9sZGVycyAtLWFsbG93aW1wbGljaXRhbnkgJiYgdHNidW5kbGUgZWxlbWVudCAtLXByb2R1Y3Rpb24iLAogICAgIndhdGNoIjogInRzd2F0Y2ggZWxlbWVudCIsCiAgICAidGVzdCI6ICJ0c3Rlc3QgdGVzdC8gLS13ZWIgLS12ZXJib3NlIgogIH0sCiAgImRlcGVuZGVuY2llcyI6IHsKICAgICJAZGVzaWduLmVzdGF0ZS9kZWVzLWVsZW1lbnQiOiAiXjIuMC40NSIsCiAgICAiaGlnaGxpZ2h0LmpzIjogIl4xMS45LjAiCiAgfQp9CiAgICAgIDwvZGVlcy1kYXRhdmlldy1jb2RlYm94PgogICAgPC9kaXY+CiAgPC9kaXY+CmAsImRlbW9GdW5jIil9KTt2YXIgdGx0LEtRLFNlcyxhbHQ9ZygoKT0+e3J5YSgpO3BlKCk7RXIoKTtodCgpO28zKCk7a3QoKTtmcigpO091KCk7bXIoKTt0bHQ9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LEtRPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxTZXM9KCgpPT57bGV0IHM9W25lKCJkZWVzLWRhdGF2aWV3LWNvZGVib3giKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXTt2YXIgYz1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0RhdGF2aWV3Q29kZWJveCIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBiPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woKV0scD1bTCh7dHlwZTpTdHJpbmcscmVmbGVjdDohMH0pXSx0bHQodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJwcm9nTGFuZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh2PT4icHJvZ0xhbmciaW4gdiwiaGFzIiksZ2V0Omkodj0+di5wcm9nTGFuZywiZ2V0Iiksc2V0OmkoKHYseCk9Pnt2LnByb2dMYW5nPXh9LCJzZXQiKX0sbWV0YWRhdGE6Yn0sbyxsKSx0bHQodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjb2RlVG9EaXNwbGF5IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHY9PiJjb2RlVG9EaXNwbGF5ImluIHYsImhhcyIpLGdldDppKHY9PnYuY29kZVRvRGlzcGxheSwiZ2V0Iiksc2V0OmkoKHYseCk9Pnt2LmNvZGVUb0Rpc3BsYXk9eH0sInNldCIpfSxtZXRhZGF0YTpifSxkLHUpLHRsdChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpifSxudWxsLHQpLGM9YT1lLnZhbHVlLGImJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pfXN0YXRpYyBkZW1vPWl5YTtzdGF0aWMgZGVtb0dyb3Vwcz1bIkRhdGEgVmlldyIsIldvcmtzcGFjZSJdOyNlPUtRKHRoaXMsbywidHlwZXNjcmlwdCIpO2dldCBwcm9nTGFuZygpe3JldHVybiB0aGlzLiNlfXNldCBwcm9nTGFuZyhiKXt0aGlzLiNlPWJ9I3Q9KEtRKHRoaXMsbCksS1EodGhpcyxkLCIiKSk7Z2V0IGNvZGVUb0Rpc3BsYXkoKXtyZXR1cm4gdGhpcy4jdH1zZXQgY29kZVRvRGlzcGxheShiKXt0aGlzLiN0PWJ9c3RhdGljIHN0eWxlcz1bcWUsaC5kZWZhdWx0U3R5bGVzXTtjb25zdHJ1Y3Rvcigpe3N1cGVyKCl9cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgICR7dGEuc3R5bGVzfQogICAgICA8c3R5bGU+CiAgICAgICAgOmhvc3QgewogICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgICAgZm9udC1mYW1pbHk6ICR7QmF9OwogICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICB9CiAgICAgICAgZGVlcy10aWxlIHsKICAgICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgICAgfQoKICAgICAgICAuYXBwYmFyIHsKICAgICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICAgIGxpbmUtaGVpZ2h0OiAzMnB4OwogICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgIH0KCiAgICAgICAgLmFwcGJhciAuZmlsZU5hbWUgewogICAgICAgICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7CiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICBmbGV4OiAxOwogICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIH0KCiAgICAgICAgLmJvdHRvbUJhciB7CiAgICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICAgIGhlaWdodDogMjhweDsKICAgICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyOHB4OwogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIH0KCiAgICAgICAgLnNwYWNlc0xhYmVsIHsKICAgICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIH0KCiAgICAgICAgLmxhbmd1YWdlTGFiZWwgewogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzNiODJmNiIpfTsKICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyOHB4OwogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoNTksIDEzMCwgMjQ2LCAwLjEpIiwicmdiYSg1OSwgMTMwLCAyNDYsIDAuMSkiKX07CiAgICAgICAgICBwYWRkaW5nOiAwcHggMTZweDsKICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICB9CgogICAgICAgIC5obGpzLWtleXdvcmQgewogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZGMyNjI2IiwiI2Y4NzE3MSIpfTsKICAgICAgICB9CgogICAgICAgIC5jb2RlZ3JpZCB7CiAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiA1MHB4IGF1dG87CiAgICAgICAgICBvdmVyZmxvdzogYXV0bzsKICAgICAgICB9CgogICAgICAgIC5saW5lTnVtYmVycyB7CiAgICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICAgIHBhZGRpbmc6IDI0cHggMTZweCAwcHggMHB4OwogICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgICB9CgogICAgICAgIC5saW5lQ291bnRlcjpsYXN0LWNoaWxkIHsKICAgICAgICAgIG9wYWNpdHk6IDUwJTsKICAgICAgICB9CgogICAgICAgIHByZSB7CiAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwogICAgICAgICAgbWFyZ2luOiAwcHg7CiAgICAgICAgICBwYWRkaW5nOiAyNHB4IDI0cHg7CiAgICAgICAgfQoKICAgICAgICBjb2RlIHsKICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgICBwYWRkaW5nOiAwcHg7CiAgICAgICAgICBtYXJnaW46IDBweDsKICAgICAgICB9CgogICAgICAgIGNvZGUsCiAgICAgICAgY29kZSAqLAogICAgICAgIC5saW5lTnVtYmVycyB7CiAgICAgICAgICBsaW5lLWhlaWdodDogMS40ZW07CiAgICAgICAgICBmb250LXdlaWdodDogMjAwOwogICAgICAgICAgZm9udC1mYW1pbHk6ICR7Qmd9OwogICAgICAgIH0KCiAgICAgICAgLmhsanMtc3RyaW5nIHsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA1OTY2OSIsIiMxMGI5ODEiKX07CiAgICAgICAgfQoKICAgICAgICAuaGxqcy1idWlsdF9pbiB7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM4YjVjZjYiLCIjYTc4YmZhIil9OwogICAgICAgIH0KCiAgICAgICAgLmhsanMtZnVuY3Rpb24gewogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzYwYTVmYSIpfTsKICAgICAgICB9CgogICAgICAgIC5obGpzLXBhcmFtcyB7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwODkxYjIiLCIjMDZiNmQ0Iil9OwogICAgICAgIH0KCiAgICAgICAgLmhsanMtY29tbWVudCB7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjNzE3MTdhIil9OwogICAgICAgIH0KCiAgICAgICAgLmhsanMtbnVtYmVyIHsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2VhNTgwYyIsIiNmYjkyM2MiKX07CiAgICAgICAgfQoKICAgICAgICAuaGxqcy1saXRlcmFsIHsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2RjMjYyNiIsIiNmODcxNzEiKX07CiAgICAgICAgfQoKICAgICAgICAuaGxqcy1hdHRyIHsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzhiNWNmNiIsIiNhNzhiZmEiKX07CiAgICAgICAgfQoKICAgICAgICAuaGxqcy12YXJpYWJsZSB7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTA5MGIiLCIjZmFmYWZhIil9OwogICAgICAgIH0KICAgICAgPC9zdHlsZT4KICAgICAgPGRlZXMtdGlsZQogICAgICAgIEBjb250ZXh0bWVudT0iJHtiPT57JGEub3BlbkNvbnRleHRNZW51V2l0aE9wdGlvbnMoYixbe25hbWU6IkFib3V0IixpY29uTmFtZToiY2lyY2xlSW5mbyIsYWN0aW9uOmkoYXN5bmMoKT0+bnVsbCwiYWN0aW9uIil9XSl9fSIKICAgICAgPgogICAgICAgIDxkaXYgc2xvdD0iaGVhZGVyIiBjbGFzcz0iYXBwYmFyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImZpbGVOYW1lIj5pbmRleC50czwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNvZGVncmlkIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmVOdW1iZXJzIj4KICAgICAgICAgICAgJHsoKCk9PntsZXQgYj0wO3JldHVybiB0aGlzLmNvZGVUb0Rpc3BsYXkuc3BsaXQoYApgKS5tYXAodj0+KGIrKyx3YDxkaXYgY2xhc3M9ImxpbmVDb3VudGVyIj4ke2J9PC9kaXY+YCkpfSkoKX0KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHByZT48Y29kZT48L2NvZGU+PC9wcmU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBzbG90PSJmb290ZXIiIGNsYXNzPSJib3R0b21CYXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0ic3BhY2VzTGFiZWwiPlNwYWNlczogMjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ3VhZ2VMYWJlbCI+JHt0aGlzLnByb2dMYW5nfTwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtdGlsZT4KICAgIGB9Y29kZVRvRGlzcGxheVN0b3JlPShLUSh0aGlzLHUpLCIiKTtoaWdobGlnaHRKcz1udWxsO2FzeW5jIHVwZGF0ZWQoYil7c3VwZXIudXBkYXRlZChiKSxjb25zb2xlLmxvZygiaGlnaGxpZ2h0aW5nIG5vdyIpLGNvbnNvbGUubG9nKHRoaXMuY2hpbGROb2Rlcyk7bGV0IHY9W107dGhpcy5jaGlsZE5vZGVzLmZvckVhY2goZj0+e2Yubm9kZU5hbWU9PT0iI3RleHQiJiZ2LnB1c2goZil9KSx0aGlzLmNvZGVUb0Rpc3BsYXkmJnRoaXMuY29kZVRvRGlzcGxheSE9PXRoaXMuY29kZVRvRGlzcGxheVN0b3JlJiYodGhpcy5jb2RlVG9EaXNwbGF5U3RvcmU9bmQubm9ybWFsaXplKHRoaXMuY29kZVRvRGlzcGxheSkudHJpbVN0YXJ0KCkpLHZbMF0mJnZbMF0ud2hvbGVUZXh0JiYhdGhpcy5jb2RlVG9EaXNwbGF5JiYodGhpcy5jb2RlVG9EaXNwbGF5U3RvcmU9bmQubm9ybWFsaXplKHZbMF0ud2hvbGVUZXh0KS50cmltU3RhcnQoKSx0aGlzLmNvZGVUb0Rpc3BsYXk9dGhpcy5jb2RlVG9EaXNwbGF5U3RvcmUpLGF3YWl0IHV0LnNtYXJ0ZGVsYXkuZGVsYXlGb3IoMCksdGhpcy5oaWdobGlnaHRKc3x8KHRoaXMuaGlnaGxpZ2h0SnM9YXdhaXQgYW8uZ2V0SW5zdGFuY2UoKS5sb2FkSGlnaGxpZ2h0SnMoKSk7bGV0IHg9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoImNvZGUiKSxtPXRoaXMuaGlnaGxpZ2h0SnMuaGlnaGxpZ2h0KHRoaXMuY29kZVRvRGlzcGxheVN0b3JlLHtsYW5ndWFnZTp0aGlzLnByb2dMYW5nLGlnbm9yZUlsbGVnYWxzOiEwfSk7eC5pbm5lckhUTUw9bS52YWx1ZX1zdGF0aWN7S1EoYSx0KX19O3JldHVybiBjPWF9KSgpfSk7dmFyIG95YT1nKCgpPT57YWx0KCl9KTt2YXIgbnlhLGx5YT1nKCgpPT57cGUoKTtTbigpO255YT1pKCgpPT53YCA8c3R5bGU+CiAgICAuZGVtbyB7CiAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjVmNWY1IiwiIzBhMGEwYSIpfTsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIGNvbnRlbnQ6ICcnOwogICAgICBwYWRkaW5nOiA0MHB4OwogICAgfQogICAgCiAgICAuZGVtby1ncmlkIHsKICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgZ2FwOiAyNHB4OwogICAgICBtYXgtd2lkdGg6IDgwMHB4OwogICAgICBtYXJnaW46IDAgYXV0bzsKICAgIH0KICAgIAogICAgLmRlbW8tc2VjdGlvbiB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgIGdhcDogMTZweDsKICAgIH0KICAgIAogICAgLmRlbW8tdGl0bGUgewogICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNDUuMSUpIiwiaHNsKDAgMCUgNjMuOSUpIil9OwogICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIHNhbnMtc2VyaWY7CiAgICB9CiAgICAKICAgIC5kZW1vLW5vdGUgewogICAgICBmb250LXNpemU6IDEycHg7CiAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNDUuMSUpIiwiaHNsKDAgMCUgNjMuOSUpIil9OwogICAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgc2Fucy1zZXJpZjsKICAgIH0KICA8L3N0eWxlPgogIDxkaXYgY2xhc3M9ImRlbW8iPgogICAgPGRpdiBjbGFzcz0iZGVtby1ub3RlIj4KICAgICAgUmlnaHQtY2xpY2sgb24gYW55IGRldGFpbCByb3cgdG8gY29weSB0aGUgdmFsdWUsIGtleSwgb3Iga2V5OnZhbHVlIGNvbWJpbmF0aW9uCiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImRlbW8tZ3JpZCI+CiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0iZGVtby10aXRsZSI+U2VydmljZSBIZWFsdGggU3RhdHVzPC9kaXY+CiAgICAgICAgPGRlZXMtZGF0YXZpZXctc3RhdHVzb2JqZWN0CiAgICAgICAgICAuc3RhdHVzT2JqZWN0PSR7e2lkOiIxIixuYW1lOiJBUEkgR2F0ZXdheSBTZXJ2aWNlIixsYXN0VXBkYXRlZDpEYXRlLm5vdygpLGNvbWJpbmVkU3RhdHVzOiJvayIsY29tYmluZWRTdGF0dXNUZXh0OiJBbGwgc3lzdGVtcyBvcGVyYXRpb25hbCIsZGV0YWlsczpbe25hbWU6IlJlc3BvbnNlIFRpbWUiLHZhbHVlOiI0NW1zIChhdmcpIixzdGF0dXM6Im9rIixzdGF0dXNUZXh0OiJXaXRoaW4gbm9ybWFsIHJhbmdlIn0se25hbWU6IlVwdGltZSIsdmFsdWU6Ijk5Ljk5JSAoMzAgZGF5cykiLHN0YXR1czoib2siLHN0YXR1c1RleHQ6IkV4Y2VsbGVudCB1cHRpbWUifSx7bmFtZToiQWN0aXZlIENvbm5lY3Rpb25zIix2YWx1ZToiMSwyMzQgLyAxMCwwMDAiLHN0YXR1czoib2siLHN0YXR1c1RleHQ6Ik5vcm1hbCBsb2FkIn0se25hbWU6IlNTTCBDZXJ0aWZpY2F0ZSIsdmFsdWU6IlZhbGlkIHVudGlsIDIwMjQtMTItMzEiLHN0YXR1czoib2siLHN0YXR1c1RleHQ6IkNlcnRpZmljYXRlIHZhbGlkIn1dfX0KICAgICAgICA+CiAgICAgICAgPC9kZWVzLWRhdGF2aWV3LXN0YXR1c29iamVjdD4KICAgICAgPC9kaXY+CiAgICAgIAogICAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICAgIDxkaXYgY2xhc3M9ImRlbW8tdGl0bGUiPkRhdGFiYXNlIENsdXN0ZXIgU3RhdHVzPC9kaXY+CiAgICAgICAgPGRlZXMtZGF0YXZpZXctc3RhdHVzb2JqZWN0CiAgICAgICAgICAuc3RhdHVzT2JqZWN0PSR7e2lkOiIyIixuYW1lOiJQb3N0Z3JlU1FMIENsdXN0ZXIiLGxhc3RVcGRhdGVkOkRhdGUubm93KCktMzZlNSxjb21iaW5lZFN0YXR1czoicGFydGx5X29rIixjb21iaW5lZFN0YXR1c1RleHQ6Ik1pbm9yIGlzc3VlcyBkZXRlY3RlZCIsZGV0YWlsczpbe25hbWU6IlByaW1hcnkgTm9kZSIsdmFsdWU6ImRiLXByaW1hcnktMDEgKGhlYWx0aHkpIixzdGF0dXM6Im9rIixzdGF0dXNUZXh0OiJPcGVyYXRpbmcgbm9ybWFsbHkifSx7bmFtZToiUmVwbGljYSBMYWciLHZhbHVlOiIyLjUgc2Vjb25kcyIsc3RhdHVzOiJwYXJ0bHlfb2siLHN0YXR1c1RleHQ6IlNsaWdodGx5IGVsZXZhdGVkIn0se25hbWU6IkRpc2sgVXNhZ2UiLHZhbHVlOiI3OCUgKDMxMkdCIC8gNDAwR0IpIixzdGF0dXM6InBhcnRseV9vayIsc3RhdHVzVGV4dDoiQXBwcm9hY2hpbmcgdGhyZXNob2xkIn0se25hbWU6IkNvbm5lY3Rpb24gUG9vbCIsdmFsdWU6Ijg5IC8gMTAwIGNvbm5lY3Rpb25zIixzdGF0dXM6Im9rIixzdGF0dXNUZXh0OiJXaXRoaW4gbGltaXRzIn1dfX0KICAgICAgICA+CiAgICAgICAgPC9kZWVzLWRhdGF2aWV3LXN0YXR1c29iamVjdD4KICAgICAgPC9kaXY+CiAgICAgIAogICAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICAgIDxkaXYgY2xhc3M9ImRlbW8tdGl0bGUiPkJ1aWxkIFBpcGVsaW5lIFN0YXR1czwvZGl2PgogICAgICAgIDxkZWVzLWRhdGF2aWV3LXN0YXR1c29iamVjdAogICAgICAgICAgLnN0YXR1c09iamVjdD0ke3tpZDoiMyIsbmFtZToiQ0kvQ0QgUGlwZWxpbmUiLGxhc3RVcGRhdGVkOkRhdGUubm93KCktODY0ZTUsY29tYmluZWRTdGF0dXM6Im5vdF9vayIsY29tYmluZWRTdGF0dXNUZXh0OiJCdWlsZCBmYWlsdXJlIixkZXRhaWxzOlt7bmFtZToiTGFzdCBCdWlsZCIsdmFsdWU6IkJ1aWxkICMxMjM0IC0gRmFpbGVkIixzdGF0dXM6Im5vdF9vayIsc3RhdHVzVGV4dDoiVGVzdCBmYWlsdXJlcyJ9LHtuYW1lOiJGYWlsZWQgVGVzdHMiLHZhbHVlOiIzIHRlc3RzIGZhaWxlZDogYXV0aC5zcGVjLnRzLCB1c2VyLnNwZWMudHMsIGFwaS5zcGVjLnRzIixzdGF0dXM6Im5vdF9vayIsc3RhdHVzVGV4dDoiVW5pdCB0ZXN0IGZhaWx1cmVzIn0se25hbWU6IkNvZGUgQ292ZXJhZ2UiLHZhbHVlOiI4Mi41JSAodGFyZ2V0OiA4NSUpIixzdGF0dXM6InBhcnRseV9vayIsc3RhdHVzVGV4dDoiQmVsb3cgdGFyZ2V0In0se25hbWU6IkJ1aWxkIER1cmF0aW9uIix2YWx1ZToiMTJtIDM0cyIsc3RhdHVzOiJvayIsc3RhdHVzVGV4dDoiTm9ybWFsIGR1cmF0aW9uIn1dfX0KICAgICAgICA+CiAgICAgICAgPC9kZWVzLWRhdGF2aWV3LXN0YXR1c29iamVjdD4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj5gLCJkZW1vRnVuYyIpfSk7dmFyIGN5YSxzbHQsX2VzLGR5YT1nKCgpPT57dzIoKTt2bygpO2x5YSgpO3BlKCk7U24oKTtmcigpO2h0KCk7bXIoKTtjeWE9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LHNsdD1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sX2VzPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1kYXRhdmlldy1zdGF0dXNvYmplY3QiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXTt2YXIgcD1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0RhdGF2aWV3U3RhdHVzb2JqZWN0Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpPYmplY3R9KV0sY3lhKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic3RhdHVzT2JqZWN0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHU9PiJzdGF0dXNPYmplY3QiaW4gdSwiaGFzIiksZ2V0OmkodT0+dS5zdGF0dXNPYmplY3QsImdldCIpLHNldDppKCh1LGMpPT57dS5zdGF0dXNPYmplY3Q9Y30sInNldCIpfSxtZXRhZGF0YTpkfSxvLGwpLGN5YShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpkfSxudWxsLHQpLHA9YT1lLnZhbHVlLGQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZH0pfXN0YXRpYyBkZW1vPW55YTtzdGF0aWMgZGVtb0dyb3Vwcz1bIkRhdGEgVmlldyJdOyNlPXNsdCh0aGlzLG8sdm9pZCAwKTtnZXQgc3RhdHVzT2JqZWN0KCl7cmV0dXJuIHRoaXMuI2V9c2V0IHN0YXR1c09iamVjdChkKXt0aGlzLiNlPWR9c3RhdGljIHN0eWxlcz1bcWUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICAgIDpob3N0IHsKICAgICAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCAnUm9ib3RvJywgc2Fucy1zZXJpZjsKICAgICAgfQoKICAgICAgZGVlcy10aWxlIHsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgfQoKICAgICAgLmhlYWRpbmcgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICB9CgogICAgICBoMSB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOwogICAgICAgIGZsZXg6IDE7CiAgICAgIH0KCiAgICAgIC5zdGF0dXNkb3QgewogICAgICAgIGhlaWdodDogMTBweDsKICAgICAgICB3aWR0aDogMTBweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDYzLjklKSIsImhzbCgwIDAlIDQ1LjElKSIpfTsKICAgICAgICBtYXJnaW46IGF1dG87CiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA2My45JSAvIDAuMikiLCJoc2woMCAwJSA0NS4xJSAvIDAuMikiKX07CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTsKICAgICAgfQoKICAgICAgLmNvcHlNYWluIHsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXByaW1hcnkpOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiA0cHggMTBweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICB9CgogICAgICAuY29weU1haW46aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItaG92ZXIpOwogICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItc3Ryb25nKTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICB9CgogICAgICAuY29weU1haW46YWN0aXZlIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTElKSIsImhzbCgwIDAlIDE0LjklKSIpfTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTgpOwogICAgICB9CgogICAgICAuc3RhdHVzZG90Lm9rIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDE0Mi4xIDc2LjIlIDM2LjMlKSIsImhzbCgxNDIuMSA3MC42JSA0NS4zJSkiKX07CiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4ICR7aC5iZFRoZW1lKCJoc2woMTQyLjEgNzYuMiUgMzYuMyUgLyAwLjIpIiwiaHNsKDE0Mi4xIDcwLjYlIDQ1LjMlIC8gMC4yKSIpfTsKICAgICAgfQoKICAgICAgLnN0YXR1c2RvdC5ub3Rfb2sgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCA4NC4yJSA2MC4yJSkiLCJoc2woMCA3Mi4yJSA1MC42JSkiKX07CiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4ICR7aC5iZFRoZW1lKCJoc2woMCA4NC4yJSA2MC4yJSAvIDAuMikiLCJoc2woMCA3Mi4yJSA1MC42JSAvIDAuMikiKX07CiAgICAgIH0KCiAgICAgIC5zdGF0dXNkb3QucGFydGx5X29rIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDI1IDk1JSA1MyUpIiwiaHNsKDI1IDk1JSA2MyUpIil9OwogICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCAke2guYmRUaGVtZSgiaHNsKDI1IDk1JSA1MyUgLyAwLjIpIiwiaHNsKDI1IDk1JSA2MyUgLyAwLjIpIil9OwogICAgICB9CgogICAgICAuZGV0YWlsIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAxMHB4OwogICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICBwYWRkaW5nOiAwIDE2cHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLXN1YnRsZSk7CiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlOwogICAgICAgIGN1cnNvcjogY29udGV4dC1tZW51OwogICAgICB9CgogICAgICAuZGV0YWlsOmxhc3QtY2hpbGQgewogICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7CiAgICAgIH0KCiAgICAgIC5kZXRhaWw6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjIyLjIgNDcuNCUgNTEuMiUgLyAwLjA0KSIsImhzbCgyMTcuMiA5MS4yJSA1OS44JSAvIDAuMDYpIil9OwogICAgICB9CgogICAgICAuZGV0YWlsIC5zdGF0dXNkb3QgewogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQoKICAgICAgLmRldGFpbCAuZGV0YWlsc1RleHQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lOwogICAgICAgIGZsZXg6IDE7CiAgICAgICAgbWluLXdpZHRoOiAwOwogICAgICB9CgogICAgICAuZGV0YWlsIC5kZXRhaWxzVGV4dCAubGFiZWwgewogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC5kZXRhaWwgLmRldGFpbHNUZXh0IC52YWx1ZSB7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtZmFtaWx5OiAnSW50ZWwgT25lIE1vbm8nLCAnR2Vpc3QgTW9ubycsIG1vbm9zcGFjZTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDE1JSkiLCJoc2woMCAwJSA5MCUpIil9OwogICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgfQoKICAgICAgLmJvdHRvbUJhciB7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgICAgaGVpZ2h0OiAyOHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBsaW5lLWhlaWdodDogMjhweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiAwIDE2cHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLmJvdHRvbUJhciAuc3RhdHVzTGFiZWwgewogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGVlcy10aWxlPgogICAgICAgIDxkaXYgc2xvdD0iaGVhZGVyIiBjbGFzcz0iaGVhZGluZyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0dXNkb3QgJHt0aGlzLnN0YXR1c09iamVjdD8uY29tYmluZWRTdGF0dXN9Ij48L2Rpdj4KICAgICAgICAgIDxoMT4ke3RoaXMuc3RhdHVzT2JqZWN0Py5uYW1lfHwiTm8gc3RhdHVzIG9iamVjdCBhc3NpZ25lZCJ9PC9oMT4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvcHlNYWluIiBAY2xpY2s9JHt0aGlzLmhhbmRsZUNvcHlBc0pzb259PkNvcHkgSlNPTjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgICR7dGhpcy5zdGF0dXNPYmplY3Q/LmRldGFpbHM/Lm1hcChkPT53YAogICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgY2xhc3M9ImRldGFpbCIKICAgICAgICAgICAgICBAY29udGV4dG1lbnU9JHt1PT57dS5wcmV2ZW50RGVmYXVsdCgpLCRhLm9wZW5Db250ZXh0TWVudVdpdGhPcHRpb25zKHUsW3tuYW1lOiJDb3B5IFZhbHVlIixpY29uTmFtZToibHVjaWRlOmNvcHkiLGFjdGlvbjppKGFzeW5jKCk9Pnthd2FpdCB0aGlzLmNvcHlUb0NsaXBib2FyZChkLnZhbHVlLCJWYWx1ZSIpfSwiYWN0aW9uIil9LHtuYW1lOiJDb3B5IEtleSIsaWNvbk5hbWU6Imx1Y2lkZTprZXkiLGFjdGlvbjppKGFzeW5jKCk9Pnthd2FpdCB0aGlzLmNvcHlUb0NsaXBib2FyZChkLm5hbWUsIktleSIpfSwiYWN0aW9uIil9LHtuYW1lOiJDb3B5IEtleTpWYWx1ZSIsaWNvbk5hbWU6Imx1Y2lkZTpjb3B5LXBsdXMiLGFjdGlvbjppKGFzeW5jKCk9Pnthd2FpdCB0aGlzLmNvcHlUb0NsaXBib2FyZChgJHtkLm5hbWV9OiAke2QudmFsdWV9YCwiS2V5OlZhbHVlIil9LCJhY3Rpb24iKX1dKX19CiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0dXNkb3QgJHtkLnN0YXR1c30iPjwvZGl2PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkZXRhaWxzVGV4dCI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFiZWwiPiR7ZC5uYW1lfTwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ2YWx1ZSI+JHtkLnZhbHVlfTwvc3Bhbj4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYCl9CiAgICAgICAgPGRpdiBzbG90PSJmb290ZXIiIGNsYXNzPSJib3R0b21CYXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdHVzTGFiZWwiPiR7dGhpcy5zdGF0dXNPYmplY3Q/Lmxhc3RVcGRhdGVkP2BMYXN0IHVwZGF0ZWQ6ICR7bmV3IERhdGUodGhpcy5zdGF0dXNPYmplY3QubGFzdFVwZGF0ZWQpLnRvTG9jYWxlU3RyaW5nKCl9YDoiIn08L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXRpbGU+CiAgICBgfWFzeW5jIGZpcnN0VXBkYXRlZCgpe31hc3luYyBjb3B5VG9DbGlwYm9hcmQoZCx1PSJUZXh0Iil7dHJ5e2F3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGQpLGNvbnNvbGUubG9nKGAke3V9IGNvcGllZCB0byBjbGlwYm9hcmRgKX1jYXRjaChjKXtjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gY29weSAke3V9OmAsYyl9fWFzeW5jIGhhbmRsZUNvcHlBc0pzb24oKXtpZih0aGlzLnN0YXR1c09iamVjdCl0cnl7YXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoSlNPTi5zdHJpbmdpZnkodGhpcy5zdGF0dXNPYmplY3QsbnVsbCwyKSk7bGV0IGQ9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5jb3B5TWFpbiIpLHU9ZC50ZXh0Q29udGVudDtkLnRleHRDb250ZW50PSJDb3BpZWQhIjtsZXQgYz0hdGhpcy5nb0JyaWdodDtkLnN0eWxlLmJhY2tncm91bmQ9Yz8iaHNsKDE0Mi4xIDcwLjYlIDQ1LjMlIC8gMC4xKSI6ImhzbCgxNDIuMSA3Ni4yJSAzNi4zJSAvIDAuMSkiLGQuc3R5bGUuYm9yZGVyQ29sb3I9Yz8iaHNsKDE0Mi4xIDcwLjYlIDQ1LjMlKSI6ImhzbCgxNDIuMSA3Ni4yJSAzNi4zJSkiLGQuc3R5bGUuY29sb3I9Yz8iaHNsKDE0Mi4xIDcwLjYlIDQ1LjMlKSI6ImhzbCgxNDIuMSA3Ni4yJSAzNi4zJSkiLHNldFRpbWVvdXQoKCk9PntkLnRleHRDb250ZW50PXUsZC5zdHlsZS5iYWNrZ3JvdW5kPSIiLGQuc3R5bGUuYm9yZGVyQ29sb3I9IiIsZC5zdHlsZS5jb2xvcj0iIn0sMTUwMCl9Y2F0Y2goZCl7Y29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGNvcHk6IixkKX19Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHNsdCh0aGlzLGwpfXN0YXRpY3tzbHQoYSx0KX19O3JldHVybiBwPWF9KSgpfSk7dmFyIHV5YT1nKCgpPT57ZHlhKCl9KTt2YXIgcHlhPWcoKCk9PntKMWUoKX0pO3ZhciBpbHQsaHlhLGZ5YT1nKCgpPT57cGUoKTtybHQoKTtpbHQ9Y2xhc3N7c3RhdGlje2kodGhpcywiTW9ja1N0b3JhZ2VEYXRhUHJvdmlkZXIiKX1vYmplY3RzPW5ldyBNYXA7Y29uc3RydWN0b3IoKXtsZXQgZT1uZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7dGhpcy5vYmplY3RzLnNldCgiZG9jdW1lbnRzL3JlYWRtZS5tZCIse2NvbnRlbnQ6YnRvYShgIyBXZWxjb21lCgpUaGlzIGlzIGEgZGVtbyBTdG9yYWdlIGJyb3dzZXIuCmApLGNvbnRlbnRUeXBlOiJ0ZXh0L21hcmtkb3duIixzaXplOjQyLGxhc3RNb2RpZmllZDplfSksdGhpcy5vYmplY3RzLnNldCgiZG9jdW1lbnRzL2NvbmZpZy5qc29uIix7Y29udGVudDpidG9hKGB7CiAgIm5hbWUiOiAiZGVtbyIsCiAgInZlcnNpb24iOiAiMS4wLjAiCn1gKSxjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbiIsc2l6ZTo0OCxsYXN0TW9kaWZpZWQ6ZX0pLHRoaXMub2JqZWN0cy5zZXQoImRvY3VtZW50cy9ub3Rlcy90b2RvLnR4dCIse2NvbnRlbnQ6YnRvYShgQnV5IG1pbGsKRml4IGJ1ZyAjNDIKRGVwbG95IHRvIHByb2R1Y3Rpb25gKSxjb250ZW50VHlwZToidGV4dC9wbGFpbiIsc2l6ZTo0NSxsYXN0TW9kaWZpZWQ6ZX0pLHRoaXMub2JqZWN0cy5zZXQoImltYWdlcy9sb2dvLnBuZyIse2NvbnRlbnQ6YnRvYSgiZmFrZS1wbmctZGF0YSIpLGNvbnRlbnRUeXBlOiJpbWFnZS9wbmciLHNpemU6MjQ1MDAsbGFzdE1vZGlmaWVkOmV9KSx0aGlzLm9iamVjdHMuc2V0KCJpbWFnZXMvYmFubmVyLmpwZyIse2NvbnRlbnQ6YnRvYSgiZmFrZS1qcGctZGF0YSIpLGNvbnRlbnRUeXBlOiJpbWFnZS9qcGVnIixzaXplOjE1NmUzLGxhc3RNb2RpZmllZDplfSksdGhpcy5vYmplY3RzLnNldCgic2NyaXB0cy9kZXBsb3kuc2giLHtjb250ZW50OmJ0b2EoYCMhL2Jpbi9iYXNoCmVjaG8gIkRlcGxveWluZy4uLiIKYCksY29udGVudFR5cGU6InRleHQvcGxhaW4iLHNpemU6MzQsbGFzdE1vZGlmaWVkOmV9KSx0aGlzLm9iamVjdHMuc2V0KCJpbmRleC5odG1sIix7Y29udGVudDpidG9hKGA8IURPQ1RZUEUgaHRtbD4KPGh0bWw+Cjxib2R5PgogIDxoMT5IZWxsbyBXb3JsZDwvaDE+CjwvYm9keT4KPC9odG1sPmApLGNvbnRlbnRUeXBlOiJ0ZXh0L2h0bWwiLHNpemU6NzIsbGFzdE1vZGlmaWVkOmV9KSx0aGlzLm9iamVjdHMuc2V0KCJzdHlsZXMuY3NzIix7Y29udGVudDpidG9hKCJib2R5IHsgbWFyZ2luOiAwOyBmb250LWZhbWlseTogc2Fucy1zZXJpZjsgfSIpLGNvbnRlbnRUeXBlOiJ0ZXh0L2NzcyIsc2l6ZTo0NCxsYXN0TW9kaWZpZWQ6ZX0pfWFzeW5jIGxpc3RPYmplY3RzKGUsdCxhKXtsZXQgcj10fHwiIixuPVtdLG89bmV3IFNldDtmb3IobGV0W2wscF1vZiB0aGlzLm9iamVjdHMpe2lmKCFsLnN0YXJ0c1dpdGgocikpY29udGludWU7bGV0IGQ9bC5zbGljZShyLmxlbmd0aCk7aWYoYSl7bGV0IHU9ZC5pbmRleE9mKGEpO3U+PTA/by5hZGQocitkLnNsaWNlKDAsdSsxKSk6bi5wdXNoKHtrZXk6bCxzaXplOnAuc2l6ZSxsYXN0TW9kaWZpZWQ6cC5sYXN0TW9kaWZpZWR9KX1lbHNlIG4ucHVzaCh7a2V5Omwsc2l6ZTpwLnNpemUsbGFzdE1vZGlmaWVkOnAubGFzdE1vZGlmaWVkfSl9cmV0dXJue29iamVjdHM6bixwcmVmaXhlczpBcnJheS5mcm9tKG8pLnNvcnQoKX19YXN5bmMgZ2V0T2JqZWN0KGUsdCl7bGV0IGE9dGhpcy5vYmplY3RzLmdldCh0KTtpZighYSl0aHJvdyBuZXcgRXJyb3IoIk5vdCBmb3VuZCIpO3JldHVybnsuLi5hfX1hc3luYyBwdXRPYmplY3QoZSx0LGEscil7cmV0dXJuIHRoaXMub2JqZWN0cy5zZXQodCx7Y29udGVudDphLGNvbnRlbnRUeXBlOnIsc2l6ZTphdG9iKGEpLmxlbmd0aCxsYXN0TW9kaWZpZWQ6bmV3IERhdGUoKS50b0lTT1N0cmluZygpfSksITB9YXN5bmMgZGVsZXRlT2JqZWN0KGUsdCl7cmV0dXJuIHRoaXMub2JqZWN0cy5kZWxldGUodCl9YXN5bmMgZGVsZXRlUHJlZml4KGUsdCl7Zm9yKGxldCBhIG9mIHRoaXMub2JqZWN0cy5rZXlzKCkpYS5zdGFydHNXaXRoKHQpJiZ0aGlzLm9iamVjdHMuZGVsZXRlKGEpO3JldHVybiEwfWFzeW5jIGdldE9iamVjdFVybChlLHQpe2xldCBhPXRoaXMub2JqZWN0cy5nZXQodCk7aWYoIWEpcmV0dXJuIiI7bGV0IHI9bmV3IEJsb2IoW1VpbnQ4QXJyYXkuZnJvbShhdG9iKGEuY29udGVudCksbj0+bi5jaGFyQ29kZUF0KDApKV0se3R5cGU6YS5jb250ZW50VHlwZX0pO3JldHVybiBVUkwuY3JlYXRlT2JqZWN0VVJMKHIpfWFzeW5jIG1vdmVPYmplY3QoZSx0LGEpe2xldCByPXRoaXMub2JqZWN0cy5nZXQodCk7cmV0dXJuIHI/KHRoaXMub2JqZWN0cy5zZXQoYSx7Li4ucixsYXN0TW9kaWZpZWQ6bmV3IERhdGUoKS50b0lTT1N0cmluZygpfSksdGhpcy5vYmplY3RzLmRlbGV0ZSh0KSx7c3VjY2VzczohMH0pOntzdWNjZXNzOiExLGVycm9yOiJTb3VyY2Ugbm90IGZvdW5kIn19YXN5bmMgbW92ZVByZWZpeChlLHQsYSl7bGV0IHI9MCxuPUFycmF5LmZyb20odGhpcy5vYmplY3RzLmVudHJpZXMoKSkuZmlsdGVyKChbb10pPT5vLnN0YXJ0c1dpdGgodCkpO2ZvcihsZXRbbyxsXW9mIG4pe2xldCBwPWErby5zbGljZSh0Lmxlbmd0aCk7dGhpcy5vYmplY3RzLnNldChwLHsuLi5sLGxhc3RNb2RpZmllZDpuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCl9KSx0aGlzLm9iamVjdHMuZGVsZXRlKG8pLHIrK31yZXR1cm57c3VjY2VzczohMCxtb3ZlZENvdW50OnJ9fX0saHlhPWkoKCk9PndgCiAgPHN0eWxlPgogICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgaGVpZ2h0OiA2MDBweDsKICAgICAgcGFkZGluZzogMTZweDsKICAgIH0KICA8L3N0eWxlPgogIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgIDxkZWVzLXN0b3JhZ2UtYnJvd3NlcgogICAgICAuZGF0YVByb3ZpZGVyPSR7bmV3IGlsdH0KICAgICAgLmJ1Y2tldE5hbWU9JHsiZGVtby1idWNrZXQifQogICAgPjwvZGVlcy1zdG9yYWdlLWJyb3dzZXI+CiAgPC9kaXY+CmAsImRlbW9GdW5jIil9KTtmdW5jdGlvbiBZUShzKXtpZihzPT1udWxsKXJldHVybiItIjtpZihzPT09MClyZXR1cm4iMCBCIjtsZXQgZT1bIkIiLCJLQiIsIk1CIiwiR0IiLCJUQiJdLHQ9cyxhPTA7Zm9yKDt0Pj0xMDI0JiZhPGUubGVuZ3RoLTE7KXQvPTEwMjQsYSsrO3JldHVybmAke3QudG9GaXhlZChhPjA/MTowKX0gJHtlW2FdfWB9ZnVuY3Rpb24gTWVzKHMpe3JldHVybiBzPT1udWxsPyIiOnM+PTFlNj9gJHsocy8xZTYpLnRvRml4ZWQoMSl9TWA6cz49MWUzP2AkeyhzLzFlMykudG9GaXhlZCgxKX1LYDpzLnRvU3RyaW5nKCl9ZnVuY3Rpb24gWWEocyl7bGV0IGU9cy5yZXBsYWNlKC9cLyQvLCIiKS5zcGxpdCgiLyIpO3JldHVybiBlW2UubGVuZ3RoLTFdfHxzfWZ1bmN0aW9uIFpRKHMsZSl7cmV0dXJuIHMuZW5kc1dpdGgoIi8iKSYmZS5zdGFydHNXaXRoKHMpP3t2YWxpZDohMSxlcnJvcjoiQ2Fubm90IG1vdmUgYSBmb2xkZXIgaW50byBpdHNlbGYifTpKZChzKT09PWU/e3ZhbGlkOiExLGVycm9yOiJJdGVtIGlzIGFscmVhZHkgaW4gdGhpcyBsb2NhdGlvbiJ9Ont2YWxpZDohMH19ZnVuY3Rpb24gSmQocyl7bGV0IGU9cy5lbmRzV2l0aCgiLyIpP3Muc2xpY2UoMCwtMSk6cyx0PWUubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4gdD49MD9lLnN1YnN0cmluZygwLHQrMSk6IiJ9ZnVuY3Rpb24gcjcocyl7cmV0dXJue2pzb246ImFwcGxpY2F0aW9uL2pzb24iLHR4dDoidGV4dC9wbGFpbiIsaHRtbDoidGV4dC9odG1sIixjc3M6InRleHQvY3NzIixqczoiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsdHM6InRleHQvdHlwZXNjcmlwdCIsbWQ6InRleHQvbWFya2Rvd24iLHhtbDoiYXBwbGljYXRpb24veG1sIix5YW1sOiJ0ZXh0L3lhbWwiLHltbDoidGV4dC95YW1sIixjc3Y6InRleHQvY3N2In1bc118fCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0ifWZ1bmN0aW9uIFhRKHMpe3JldHVybntqc29uOmB7CiAgCn1gLGh0bWw6YDwhRE9DVFlQRSBodG1sPgo8aHRtbD4KPGhlYWQ+CiAgPHRpdGxlPjwvdGl0bGU+CjwvaGVhZD4KPGJvZHk+CiAgCjwvYm9keT4KPC9odG1sPmAsbWQ6YCMgVGl0bGUKCmAsdHh0OiIifVtzXXx8IiJ9ZnVuY3Rpb24gengocyl7aWYoIXMpcmV0dXJuW107bGV0IGU9cy5zcGxpdCgiLyIpLmZpbHRlcihyPT5yKSx0PVtdLGE9IiI7Zm9yKGxldCByIG9mIGUpYSs9cisiLyIsdC5wdXNoKGEpO3JldHVybiB0fXZhciBRUT1nKCgpPT57aShZUSwiZm9ybWF0U2l6ZSIpO2koTWVzLCJmb3JtYXRDb3VudCIpO2koWWEsImdldEZpbGVOYW1lIik7aShaUSwidmFsaWRhdGVNb3ZlIik7aShKZCwiZ2V0UGFyZW50UHJlZml4Iik7aShyNywiZ2V0Q29udGVudFR5cGUiKTtpKFhRLCJnZXREZWZhdWx0Q29udGVudCIpO2koengsImdldFBhdGhTZWdtZW50cyIpfSk7dmFyIFRzLE50LHplcyxvbHQ9ZygoKT0+e3BlKCk7ZnIoKTtodCgpO1FRKCk7VHM9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LE50PWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSx6ZXM9KCgpPT57bGV0IHM9W25lKCJkZWVzLXN0b3JhZ2UtY29sdW1ucyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdLEgsaz1bXSxTPVtdLEksUD1bXSxSPVtdLEssVj1bXSxXPVtdLG1lLEI9W10sVT1bXSxoZSxGPVtdLGo9W10sdWUsbGU9W10sUT1bXSxpZSx0ZT1bXSxlZT1bXSxrZSxYPVtdLFo9W10seWUscT1bXSxBPVtdLHNlLG9lPVtdLGFlPVtdLFRlLFJlPVtdLEJlPVtdLEdlLERlPVtdLF9lPVtdLENlLHZlPVtdLGJlPVtdLEVlLGplPVtdLFdlPVtdLHN0LE1lPVtdLGdlPVtdLEllLGNlPVtdLGRlPVtdLExlLEtlPVtdLFllPVtdLG90LFV0PVtdLFp0PVtdLGphLGV0PVtdLGJ0PVtdLHlhLGVzPVtdLHJzPVtdLHBzLG5zPVtdLHRpPVtdLGFpLHplPVtdLHhlPVtdLE5lLHh0PVtdLE1hPVtdO3ZhciBOcj1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1N0b3JhZ2VDb2x1bW5zIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGZlPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6T2JqZWN0fSldLHA9W0woe3R5cGU6U3RyaW5nfSldLGM9W0woe3R5cGU6U3RyaW5nfSldLHg9W0woe3R5cGU6TnVtYmVyfSldLHk9W1koKV0sTj1bWSgpXSxPPVtZKCldLEg9W1koKV0sST1bWSgpXSxLPVtZKCldLG1lPVtZKCldLGhlPVtZKCldLHVlPVtZKCldLGllPVtZKCldLGtlPVtZKCldLHllPVtZKCldLHNlPVtZKCldLFRlPVtZKCldLEdlPVtZKCldLENlPVtZKCldLEVlPVtZKCldLHN0PVtZKCldLEllPVtZKCldLExlPVtZKCldLG90PVtZKCldLGphPVtZKCldLHlhPVtZKCldLHBzPVtZKCldLGFpPVtZKCldLE5lPVtZKCldLFRzKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZGF0YVByb3ZpZGVyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHJlPT4iZGF0YVByb3ZpZGVyImluIHJlLCJoYXMiKSxnZXQ6aShyZT0+cmUuZGF0YVByb3ZpZGVyLCJnZXQiKSxzZXQ6aSgocmUsU2UpPT57cmUuZGF0YVByb3ZpZGVyPVNlfSwic2V0Iil9LG1ldGFkYXRhOmZlfSxvLGwpLFRzKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYnVja2V0TmFtZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShyZT0+ImJ1Y2tldE5hbWUiaW4gcmUsImhhcyIpLGdldDppKHJlPT5yZS5idWNrZXROYW1lLCJnZXQiKSxzZXQ6aSgocmUsU2UpPT57cmUuYnVja2V0TmFtZT1TZX0sInNldCIpfSxtZXRhZGF0YTpmZX0sZCx1KSxUcyh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImN1cnJlbnRQcmVmaXgiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkocmU9PiJjdXJyZW50UHJlZml4ImluIHJlLCJoYXMiKSxnZXQ6aShyZT0+cmUuY3VycmVudFByZWZpeCwiZ2V0Iiksc2V0OmkoKHJlLFNlKT0+e3JlLmN1cnJlbnRQcmVmaXg9U2V9LCJzZXQiKX0sbWV0YWRhdGE6ZmV9LGIsdiksVHModGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJyZWZyZXNoS2V5IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHJlPT4icmVmcmVzaEtleSJpbiByZSwiaGFzIiksZ2V0OmkocmU9PnJlLnJlZnJlc2hLZXksImdldCIpLHNldDppKChyZSxTZSk9PntyZS5yZWZyZXNoS2V5PVNlfSwic2V0Iil9LG1ldGFkYXRhOmZlfSxtLGYpLFRzKHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY29sdW1ucyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShyZT0+ImNvbHVtbnMiaW4gcmUsImhhcyIpLGdldDppKHJlPT5yZS5jb2x1bW5zLCJnZXQiKSxzZXQ6aSgocmUsU2UpPT57cmUuY29sdW1ucz1TZX0sInNldCIpfSxtZXRhZGF0YTpmZX0sTSx6KSxUcyh0aGlzLG51bGwsTix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImxvYWRpbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkocmU9PiJsb2FkaW5nImluIHJlLCJoYXMiKSxnZXQ6aShyZT0+cmUubG9hZGluZywiZ2V0Iiksc2V0OmkoKHJlLFNlKT0+e3JlLmxvYWRpbmc9U2V9LCJzZXQiKX0sbWV0YWRhdGE6ZmV9LEMsXyksVHModGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93Q3JlYXRlRGlhbG9nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHJlPT4ic2hvd0NyZWF0ZURpYWxvZyJpbiByZSwiaGFzIiksZ2V0OmkocmU9PnJlLnNob3dDcmVhdGVEaWFsb2csImdldCIpLHNldDppKChyZSxTZSk9PntyZS5zaG93Q3JlYXRlRGlhbG9nPVNlfSwic2V0Iil9LG1ldGFkYXRhOmZlfSwkLEUpLFRzKHRoaXMsbnVsbCxILHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY3JlYXRlRGlhbG9nVHlwZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShyZT0+ImNyZWF0ZURpYWxvZ1R5cGUiaW4gcmUsImhhcyIpLGdldDppKHJlPT5yZS5jcmVhdGVEaWFsb2dUeXBlLCJnZXQiKSxzZXQ6aSgocmUsU2UpPT57cmUuY3JlYXRlRGlhbG9nVHlwZT1TZX0sInNldCIpfSxtZXRhZGF0YTpmZX0sayxTKSxUcyh0aGlzLG51bGwsSSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNyZWF0ZURpYWxvZ1ByZWZpeCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShyZT0+ImNyZWF0ZURpYWxvZ1ByZWZpeCJpbiByZSwiaGFzIiksZ2V0OmkocmU9PnJlLmNyZWF0ZURpYWxvZ1ByZWZpeCwiZ2V0Iiksc2V0OmkoKHJlLFNlKT0+e3JlLmNyZWF0ZURpYWxvZ1ByZWZpeD1TZX0sInNldCIpfSxtZXRhZGF0YTpmZX0sUCxSKSxUcyh0aGlzLG51bGwsSyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNyZWF0ZURpYWxvZ05hbWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkocmU9PiJjcmVhdGVEaWFsb2dOYW1lImluIHJlLCJoYXMiKSxnZXQ6aShyZT0+cmUuY3JlYXRlRGlhbG9nTmFtZSwiZ2V0Iiksc2V0OmkoKHJlLFNlKT0+e3JlLmNyZWF0ZURpYWxvZ05hbWU9U2V9LCJzZXQiKX0sbWV0YWRhdGE6ZmV9LFYsVyksVHModGhpcyxudWxsLG1lLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZHJhZ092ZXJDb2x1bW5JbmRleCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShyZT0+ImRyYWdPdmVyQ29sdW1uSW5kZXgiaW4gcmUsImhhcyIpLGdldDppKHJlPT5yZS5kcmFnT3ZlckNvbHVtbkluZGV4LCJnZXQiKSxzZXQ6aSgocmUsU2UpPT57cmUuZHJhZ092ZXJDb2x1bW5JbmRleD1TZX0sInNldCIpfSxtZXRhZGF0YTpmZX0sQixVKSxUcyh0aGlzLG51bGwsaGUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJkcmFnT3ZlckZvbGRlclByZWZpeCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShyZT0+ImRyYWdPdmVyRm9sZGVyUHJlZml4ImluIHJlLCJoYXMiKSxnZXQ6aShyZT0+cmUuZHJhZ092ZXJGb2xkZXJQcmVmaXgsImdldCIpLHNldDppKChyZSxTZSk9PntyZS5kcmFnT3ZlckZvbGRlclByZWZpeD1TZX0sInNldCIpfSxtZXRhZGF0YTpmZX0sRixqKSxUcyh0aGlzLG51bGwsdWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ1cGxvYWRpbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkocmU9PiJ1cGxvYWRpbmciaW4gcmUsImhhcyIpLGdldDppKHJlPT5yZS51cGxvYWRpbmcsImdldCIpLHNldDppKChyZSxTZSk9PntyZS51cGxvYWRpbmc9U2V9LCJzZXQiKX0sbWV0YWRhdGE6ZmV9LGxlLFEpLFRzKHRoaXMsbnVsbCxpZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InVwbG9hZFByb2dyZXNzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHJlPT4idXBsb2FkUHJvZ3Jlc3MiaW4gcmUsImhhcyIpLGdldDppKHJlPT5yZS51cGxvYWRQcm9ncmVzcywiZ2V0Iiksc2V0OmkoKHJlLFNlKT0+e3JlLnVwbG9hZFByb2dyZXNzPVNlfSwic2V0Iil9LG1ldGFkYXRhOmZlfSx0ZSxlZSksVHModGhpcyxudWxsLGtlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2hvd01vdmVEaWFsb2ciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkocmU9PiJzaG93TW92ZURpYWxvZyJpbiByZSwiaGFzIiksZ2V0OmkocmU9PnJlLnNob3dNb3ZlRGlhbG9nLCJnZXQiKSxzZXQ6aSgocmUsU2UpPT57cmUuc2hvd01vdmVEaWFsb2c9U2V9LCJzZXQiKX0sbWV0YWRhdGE6ZmV9LFgsWiksVHModGhpcyxudWxsLHllLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibW92ZVNvdXJjZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShyZT0+Im1vdmVTb3VyY2UiaW4gcmUsImhhcyIpLGdldDppKHJlPT5yZS5tb3ZlU291cmNlLCJnZXQiKSxzZXQ6aSgocmUsU2UpPT57cmUubW92ZVNvdXJjZT1TZX0sInNldCIpfSxtZXRhZGF0YTpmZX0scSxBKSxUcyh0aGlzLG51bGwsc2Use2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtb3ZlRGVzdGluYXRpb24iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkocmU9PiJtb3ZlRGVzdGluYXRpb24iaW4gcmUsImhhcyIpLGdldDppKHJlPT5yZS5tb3ZlRGVzdGluYXRpb24sImdldCIpLHNldDppKChyZSxTZSk9PntyZS5tb3ZlRGVzdGluYXRpb249U2V9LCJzZXQiKX0sbWV0YWRhdGE6ZmV9LG9lLGFlKSxUcyh0aGlzLG51bGwsVGUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtb3ZlSW5Qcm9ncmVzcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShyZT0+Im1vdmVJblByb2dyZXNzImluIHJlLCJoYXMiKSxnZXQ6aShyZT0+cmUubW92ZUluUHJvZ3Jlc3MsImdldCIpLHNldDppKChyZSxTZSk9PntyZS5tb3ZlSW5Qcm9ncmVzcz1TZX0sInNldCIpfSxtZXRhZGF0YTpmZX0sUmUsQmUpLFRzKHRoaXMsbnVsbCxHZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1vdmVFcnJvciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShyZT0+Im1vdmVFcnJvciJpbiByZSwiaGFzIiksZ2V0OmkocmU9PnJlLm1vdmVFcnJvciwiZ2V0Iiksc2V0OmkoKHJlLFNlKT0+e3JlLm1vdmVFcnJvcj1TZX0sInNldCIpfSxtZXRhZGF0YTpmZX0sRGUsX2UpLFRzKHRoaXMsbnVsbCxDZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dNb3ZlUGlja2VyRGlhbG9nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHJlPT4ic2hvd01vdmVQaWNrZXJEaWFsb2ciaW4gcmUsImhhcyIpLGdldDppKHJlPT5yZS5zaG93TW92ZVBpY2tlckRpYWxvZywiZ2V0Iiksc2V0OmkoKHJlLFNlKT0+e3JlLnNob3dNb3ZlUGlja2VyRGlhbG9nPVNlfSwic2V0Iil9LG1ldGFkYXRhOmZlfSx2ZSxiZSksVHModGhpcyxudWxsLEVlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibW92ZVBpY2tlclNvdXJjZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShyZT0+Im1vdmVQaWNrZXJTb3VyY2UiaW4gcmUsImhhcyIpLGdldDppKHJlPT5yZS5tb3ZlUGlja2VyU291cmNlLCJnZXQiKSxzZXQ6aSgocmUsU2UpPT57cmUubW92ZVBpY2tlclNvdXJjZT1TZX0sInNldCIpfSxtZXRhZGF0YTpmZX0samUsV2UpLFRzKHRoaXMsbnVsbCxzdCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1vdmVQaWNrZXJDdXJyZW50UHJlZml4IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHJlPT4ibW92ZVBpY2tlckN1cnJlbnRQcmVmaXgiaW4gcmUsImhhcyIpLGdldDppKHJlPT5yZS5tb3ZlUGlja2VyQ3VycmVudFByZWZpeCwiZ2V0Iiksc2V0OmkoKHJlLFNlKT0+e3JlLm1vdmVQaWNrZXJDdXJyZW50UHJlZml4PVNlfSwic2V0Iil9LG1ldGFkYXRhOmZlfSxNZSxnZSksVHModGhpcyxudWxsLEllLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibW92ZVBpY2tlclByZWZpeGVzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHJlPT4ibW92ZVBpY2tlclByZWZpeGVzImluIHJlLCJoYXMiKSxnZXQ6aShyZT0+cmUubW92ZVBpY2tlclByZWZpeGVzLCJnZXQiKSxzZXQ6aSgocmUsU2UpPT57cmUubW92ZVBpY2tlclByZWZpeGVzPVNlfSwic2V0Iil9LG1ldGFkYXRhOmZlfSxjZSxkZSksVHModGhpcyxudWxsLExlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibW92ZVBpY2tlckxvYWRpbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkocmU9PiJtb3ZlUGlja2VyTG9hZGluZyJpbiByZSwiaGFzIiksZ2V0OmkocmU9PnJlLm1vdmVQaWNrZXJMb2FkaW5nLCJnZXQiKSxzZXQ6aSgocmUsU2UpPT57cmUubW92ZVBpY2tlckxvYWRpbmc9U2V9LCJzZXQiKX0sbWV0YWRhdGE6ZmV9LEtlLFllKSxUcyh0aGlzLG51bGwsb3Qse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93UmVuYW1lRGlhbG9nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHJlPT4ic2hvd1JlbmFtZURpYWxvZyJpbiByZSwiaGFzIiksZ2V0OmkocmU9PnJlLnNob3dSZW5hbWVEaWFsb2csImdldCIpLHNldDppKChyZSxTZSk9PntyZS5zaG93UmVuYW1lRGlhbG9nPVNlfSwic2V0Iil9LG1ldGFkYXRhOmZlfSxVdCxadCksVHModGhpcyxudWxsLGphLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicmVuYW1lU291cmNlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHJlPT4icmVuYW1lU291cmNlImluIHJlLCJoYXMiKSxnZXQ6aShyZT0+cmUucmVuYW1lU291cmNlLCJnZXQiKSxzZXQ6aSgocmUsU2UpPT57cmUucmVuYW1lU291cmNlPVNlfSwic2V0Iil9LG1ldGFkYXRhOmZlfSxldCxidCksVHModGhpcyxudWxsLHlhLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicmVuYW1lTmFtZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShyZT0+InJlbmFtZU5hbWUiaW4gcmUsImhhcyIpLGdldDppKHJlPT5yZS5yZW5hbWVOYW1lLCJnZXQiKSxzZXQ6aSgocmUsU2UpPT57cmUucmVuYW1lTmFtZT1TZX0sInNldCIpfSxtZXRhZGF0YTpmZX0sZXMscnMpLFRzKHRoaXMsbnVsbCxwcyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InJlbmFtZUluUHJvZ3Jlc3MiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkocmU9PiJyZW5hbWVJblByb2dyZXNzImluIHJlLCJoYXMiKSxnZXQ6aShyZT0+cmUucmVuYW1lSW5Qcm9ncmVzcywiZ2V0Iiksc2V0OmkoKHJlLFNlKT0+e3JlLnJlbmFtZUluUHJvZ3Jlc3M9U2V9LCJzZXQiKX0sbWV0YWRhdGE6ZmV9LG5zLHRpKSxUcyh0aGlzLG51bGwsYWkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJyZW5hbWVFcnJvciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShyZT0+InJlbmFtZUVycm9yImluIHJlLCJoYXMiKSxnZXQ6aShyZT0+cmUucmVuYW1lRXJyb3IsImdldCIpLHNldDppKChyZSxTZSk9PntyZS5yZW5hbWVFcnJvcj1TZX0sInNldCIpfSxtZXRhZGF0YTpmZX0semUseGUpLFRzKHRoaXMsbnVsbCxOZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImRyYWdnZWRJdGVtIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHJlPT4iZHJhZ2dlZEl0ZW0iaW4gcmUsImhhcyIpLGdldDppKHJlPT5yZS5kcmFnZ2VkSXRlbSwiZ2V0Iiksc2V0OmkoKHJlLFNlKT0+e3JlLmRyYWdnZWRJdGVtPVNlfSwic2V0Iil9LG1ldGFkYXRhOmZlfSx4dCxNYSksVHMobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6ZmV9LG51bGwsdCksTnI9YT1lLnZhbHVlLGZlJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmZlfSl9I2U9TnQodGhpcyxvLG51bGwpO2dldCBkYXRhUHJvdmlkZXIoKXtyZXR1cm4gdGhpcy4jZX1zZXQgZGF0YVByb3ZpZGVyKGZlKXt0aGlzLiNlPWZlfSN0PShOdCh0aGlzLGwpLE50KHRoaXMsZCwiIikpO2dldCBidWNrZXROYW1lKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGJ1Y2tldE5hbWUoZmUpe3RoaXMuI3Q9ZmV9I2E9KE50KHRoaXMsdSksTnQodGhpcyxiLCIiKSk7Z2V0IGN1cnJlbnRQcmVmaXgoKXtyZXR1cm4gdGhpcy4jYX1zZXQgY3VycmVudFByZWZpeChmZSl7dGhpcy4jYT1mZX0jcz0oTnQodGhpcyx2KSxOdCh0aGlzLG0sMCkpO2dldCByZWZyZXNoS2V5KCl7cmV0dXJuIHRoaXMuI3N9c2V0IHJlZnJlc2hLZXkoZmUpe3RoaXMuI3M9ZmV9I2k9KE50KHRoaXMsZiksTnQodGhpcyxNLFtdKSk7Z2V0IGNvbHVtbnMoKXtyZXR1cm4gdGhpcy4jaX1zZXQgY29sdW1ucyhmZSl7dGhpcy4jaT1mZX0jcj0oTnQodGhpcyx6KSxOdCh0aGlzLEMsITEpKTtnZXQgbG9hZGluZygpe3JldHVybiB0aGlzLiNyfXNldCBsb2FkaW5nKGZlKXt0aGlzLiNyPWZlfSNvPShOdCh0aGlzLF8pLE50KHRoaXMsJCwhMSkpO2dldCBzaG93Q3JlYXRlRGlhbG9nKCl7cmV0dXJuIHRoaXMuI299c2V0IHNob3dDcmVhdGVEaWFsb2coZmUpe3RoaXMuI289ZmV9I249KE50KHRoaXMsRSksTnQodGhpcyxrLCJmb2xkZXIiKSk7Z2V0IGNyZWF0ZURpYWxvZ1R5cGUoKXtyZXR1cm4gdGhpcy4jbn1zZXQgY3JlYXRlRGlhbG9nVHlwZShmZSl7dGhpcy4jbj1mZX0jbD0oTnQodGhpcyxTKSxOdCh0aGlzLFAsIiIpKTtnZXQgY3JlYXRlRGlhbG9nUHJlZml4KCl7cmV0dXJuIHRoaXMuI2x9c2V0IGNyZWF0ZURpYWxvZ1ByZWZpeChmZSl7dGhpcy4jbD1mZX0jYz0oTnQodGhpcyxSKSxOdCh0aGlzLFYsIiIpKTtnZXQgY3JlYXRlRGlhbG9nTmFtZSgpe3JldHVybiB0aGlzLiNjfXNldCBjcmVhdGVEaWFsb2dOYW1lKGZlKXt0aGlzLiNjPWZlfSNkPShOdCh0aGlzLFcpLE50KHRoaXMsQiwtMSkpO2dldCBkcmFnT3ZlckNvbHVtbkluZGV4KCl7cmV0dXJuIHRoaXMuI2R9c2V0IGRyYWdPdmVyQ29sdW1uSW5kZXgoZmUpe3RoaXMuI2Q9ZmV9I3U9KE50KHRoaXMsVSksTnQodGhpcyxGLG51bGwpKTtnZXQgZHJhZ092ZXJGb2xkZXJQcmVmaXgoKXtyZXR1cm4gdGhpcy4jdX1zZXQgZHJhZ092ZXJGb2xkZXJQcmVmaXgoZmUpe3RoaXMuI3U9ZmV9I3A9KE50KHRoaXMsaiksTnQodGhpcyxsZSwhMSkpO2dldCB1cGxvYWRpbmcoKXtyZXR1cm4gdGhpcy4jcH1zZXQgdXBsb2FkaW5nKGZlKXt0aGlzLiNwPWZlfSNoPShOdCh0aGlzLFEpLE50KHRoaXMsdGUsbnVsbCkpO2dldCB1cGxvYWRQcm9ncmVzcygpe3JldHVybiB0aGlzLiNofXNldCB1cGxvYWRQcm9ncmVzcyhmZSl7dGhpcy4jaD1mZX0jZj0oTnQodGhpcyxlZSksTnQodGhpcyxYLCExKSk7Z2V0IHNob3dNb3ZlRGlhbG9nKCl7cmV0dXJuIHRoaXMuI2Z9c2V0IHNob3dNb3ZlRGlhbG9nKGZlKXt0aGlzLiNmPWZlfSNtPShOdCh0aGlzLFopLE50KHRoaXMscSxudWxsKSk7Z2V0IG1vdmVTb3VyY2UoKXtyZXR1cm4gdGhpcy4jbX1zZXQgbW92ZVNvdXJjZShmZSl7dGhpcy4jbT1mZX0jZz0oTnQodGhpcyxBKSxOdCh0aGlzLG9lLCIiKSk7Z2V0IG1vdmVEZXN0aW5hdGlvbigpe3JldHVybiB0aGlzLiNnfXNldCBtb3ZlRGVzdGluYXRpb24oZmUpe3RoaXMuI2c9ZmV9I2I9KE50KHRoaXMsYWUpLE50KHRoaXMsUmUsITEpKTtnZXQgbW92ZUluUHJvZ3Jlc3MoKXtyZXR1cm4gdGhpcy4jYn1zZXQgbW92ZUluUHJvZ3Jlc3MoZmUpe3RoaXMuI2I9ZmV9I3Y9KE50KHRoaXMsQmUpLE50KHRoaXMsRGUsbnVsbCkpO2dldCBtb3ZlRXJyb3IoKXtyZXR1cm4gdGhpcy4jdn1zZXQgbW92ZUVycm9yKGZlKXt0aGlzLiN2PWZlfSN4PShOdCh0aGlzLF9lKSxOdCh0aGlzLHZlLCExKSk7Z2V0IHNob3dNb3ZlUGlja2VyRGlhbG9nKCl7cmV0dXJuIHRoaXMuI3h9c2V0IHNob3dNb3ZlUGlja2VyRGlhbG9nKGZlKXt0aGlzLiN4PWZlfSN5PShOdCh0aGlzLGJlKSxOdCh0aGlzLGplLG51bGwpKTtnZXQgbW92ZVBpY2tlclNvdXJjZSgpe3JldHVybiB0aGlzLiN5fXNldCBtb3ZlUGlja2VyU291cmNlKGZlKXt0aGlzLiN5PWZlfSN3PShOdCh0aGlzLFdlKSxOdCh0aGlzLE1lLCIiKSk7Z2V0IG1vdmVQaWNrZXJDdXJyZW50UHJlZml4KCl7cmV0dXJuIHRoaXMuI3d9c2V0IG1vdmVQaWNrZXJDdXJyZW50UHJlZml4KGZlKXt0aGlzLiN3PWZlfSNrPShOdCh0aGlzLGdlKSxOdCh0aGlzLGNlLFtdKSk7Z2V0IG1vdmVQaWNrZXJQcmVmaXhlcygpe3JldHVybiB0aGlzLiNrfXNldCBtb3ZlUGlja2VyUHJlZml4ZXMoZmUpe3RoaXMuI2s9ZmV9I1M9KE50KHRoaXMsZGUpLE50KHRoaXMsS2UsITEpKTtnZXQgbW92ZVBpY2tlckxvYWRpbmcoKXtyZXR1cm4gdGhpcy4jU31zZXQgbW92ZVBpY2tlckxvYWRpbmcoZmUpe3RoaXMuI1M9ZmV9I189KE50KHRoaXMsWWUpLE50KHRoaXMsVXQsITEpKTtnZXQgc2hvd1JlbmFtZURpYWxvZygpe3JldHVybiB0aGlzLiNffXNldCBzaG93UmVuYW1lRGlhbG9nKGZlKXt0aGlzLiNfPWZlfSNNPShOdCh0aGlzLFp0KSxOdCh0aGlzLGV0LG51bGwpKTtnZXQgcmVuYW1lU291cmNlKCl7cmV0dXJuIHRoaXMuI019c2V0IHJlbmFtZVNvdXJjZShmZSl7dGhpcy4jTT1mZX0jej0oTnQodGhpcyxidCksTnQodGhpcyxlcywiIikpO2dldCByZW5hbWVOYW1lKCl7cmV0dXJuIHRoaXMuI3p9c2V0IHJlbmFtZU5hbWUoZmUpe3RoaXMuI3o9ZmV9I0M9KE50KHRoaXMscnMpLE50KHRoaXMsbnMsITEpKTtnZXQgcmVuYW1lSW5Qcm9ncmVzcygpe3JldHVybiB0aGlzLiNDfXNldCByZW5hbWVJblByb2dyZXNzKGZlKXt0aGlzLiNDPWZlfSNUPShOdCh0aGlzLHRpKSxOdCh0aGlzLHplLG51bGwpKTtnZXQgcmVuYW1lRXJyb3IoKXtyZXR1cm4gdGhpcy4jVH1zZXQgcmVuYW1lRXJyb3IoZmUpe3RoaXMuI1Q9ZmV9IyQ9KE50KHRoaXMseGUpLE50KHRoaXMseHQsbnVsbCkpO2dldCBkcmFnZ2VkSXRlbSgpe3JldHVybiB0aGlzLiMkfXNldCBkcmFnZ2VkSXRlbShmZSl7dGhpcy4jJD1mZX1yZXNpemluZz0oTnQodGhpcyxNYSksbnVsbCk7REVGQVVMVF9DT0xVTU5fV0lEVEg9MjUwO01JTl9DT0xVTU5fV0lEVEg9MTUwO01BWF9DT0xVTU5fV0lEVEg9NTAwO2RyYWdDb3VudGVycz1uZXcgTWFwO2ZvbGRlckhvdmVyVGltZXI9bnVsbDtmaWxlSW5wdXRFbGVtZW50PW51bGw7Zm9sZGVySW5wdXRFbGVtZW50PW51bGw7c3RhdGljIHN0eWxlcz1baC5kZWZhdWx0U3R5bGVzLHFlLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC5jb2x1bW5zLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgbWluLXdpZHRoOiBtYXgtY29udGVudDsKICAgICAgfQoKICAgICAgLmNvbHVtbi13cmFwcGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQoKICAgICAgLmNvbHVtbiB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgLnJlc2l6ZS1oYW5kbGUgewogICAgICAgIHdpZHRoOiA1cHg7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGN1cnNvcjogY29sLXJlc2l6ZTsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC5yZXNpemUtaGFuZGxlOjphZnRlciB7CiAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAycHg7CiAgICAgICAgd2lkdGg6IDFweDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMzMzIil9OwogICAgICB9CgogICAgICAucmVzaXplLWhhbmRsZTpob3Zlcjo6YWZ0ZXIsCiAgICAgIC5yZXNpemUtaGFuZGxlLmFjdGl2ZTo6YWZ0ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjYTFhMWFhIiwiIzQwNDA0MCIpfTsKICAgICAgICB3aWR0aDogMnB4OwogICAgICAgIGxlZnQ6IDFweDsKICAgICAgfQoKICAgICAgLmNvbHVtbi13cmFwcGVyOmxhc3QtY2hpbGQgLnJlc2l6ZS1oYW5kbGUgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5jb2x1bW4taGVhZGVyIHsKICAgICAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjNjY2Iil9OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMDIpIiwicmdiYSgwLCAwLCAwLCAwLjIpIil9OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMzMzMiKX07CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICB9CgogICAgICAuY29sdW1uLWl0ZW1zIHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgcGFkZGluZzogNHB4OwogICAgICB9CgogICAgICAuY29sdW1uLWl0ZW0gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBwYWRkaW5nOiA2cHggMTBweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMXM7CiAgICAgIH0KCiAgICAgIC5jb2x1bW4taXRlbTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wNCkiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpIil9OwogICAgICB9CgogICAgICAuY29sdW1uLWl0ZW0uc2VsZWN0ZWQgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC4xKSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxZDRlZDgiLCIjZTBlMGUwIil9OwogICAgICB9CgogICAgICAuY29sdW1uLWl0ZW0uZm9sZGVyIHsKICAgICAgICBjb2xvcjogI2ZiYmYyNDsKICAgICAgfQoKICAgICAgLmNvbHVtbi1pdGVtIC5pY29uIHsKICAgICAgICB3aWR0aDogMTZweDsKICAgICAgICBoZWlnaHQ6IDE2cHg7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC5jb2x1bW4taXRlbSAubmFtZSB7CiAgICAgICAgZmxleDogMTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgIH0KCiAgICAgIC5jb2x1bW4taXRlbSAuY2hldnJvbiB7CiAgICAgICAgd2lkdGg6IDE0cHg7CiAgICAgICAgaGVpZ2h0OiAxNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2Q0ZDRkOCIsIiM1NTUiKX07CiAgICAgIH0KCiAgICAgIC5lbXB0eS1zdGF0ZSB7CiAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjYTFhMWFhIiwiIzY2NiIpfTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgIH0KCiAgICAgIC5sb2FkaW5nIHsKICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNhMWExYWEiLCIjNjY2Iil9OwogICAgICB9CgogICAgICAuY29sdW1uLmRyYWctb3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSg1OSwgMTMwLCAyNDYsIDAuMDgpOwogICAgICAgIG91dGxpbmU6IDJweCBkYXNoZWQgcmdiYSg1OSwgMTMwLCAyNDYsIDAuNCk7CiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7CiAgICAgIH0KCiAgICAgIC5jb2x1bW4taXRlbS5mb2xkZXIuZHJhZy10YXJnZXQgewogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoNTksIDEzMCwgMjQ2LCAwLjIpICFpbXBvcnRhbnQ7CiAgICAgICAgb3V0bGluZTogMXB4IHNvbGlkIHJnYmEoNTksIDEzMCwgMjQ2LCAwLjUpOwogICAgICB9CgogICAgICAudXBsb2FkLW92ZXJsYXkgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjYpOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIHotaW5kZXg6IDEwOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgfQoKICAgICAgLnVwbG9hZC1vdmVybGF5IC51cGxvYWQtdGV4dCB7CiAgICAgICAgY29sb3I6ICNlMGUwZTA7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICB9CgogICAgICAudXBsb2FkLW92ZXJsYXkgLnVwbG9hZC1wcm9ncmVzcyB7CiAgICAgICAgY29sb3I6ICM4ODg7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICB9CgogICAgICAuZHJhZy1oaW50IHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgYm90dG9tOiA4cHg7CiAgICAgICAgbGVmdDogNTAlOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDU5LCAxMzAsIDI0NiwgMC45KTsKICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgcGFkZGluZzogNHB4IDEycHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIHotaW5kZXg6IDU7CiAgICAgIH0KCiAgICAgIC5kaWFsb2ctb3ZlcmxheSB7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNyk7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIHotaW5kZXg6IDEwMDA7CiAgICAgIH0KCiAgICAgIC5kaWFsb2cgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzFlMWUxZSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgbWluLXdpZHRoOiA0MDBweDsKICAgICAgICBib3gtc2hhZG93OiAwIDIwcHggNDBweCByZ2JhKDAsIDAsIDAsIDAuNSk7CiAgICAgIH0KCiAgICAgIC5kaWFsb2ctdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZmZiIpfTsKICAgICAgfQoKICAgICAgLmRpYWxvZy1sb2NhdGlvbiB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiM4ODgiKX07CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDsKICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogICAgICB9CgogICAgICAuZGlhbG9nLWlucHV0IHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBwYWRkaW5nOiAxMHB4IDEycHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMTQxNDE0Iil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZDRkNGQ4IiwiIzMzMyIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZmZiIpfTsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgIC5kaWFsb2ctaW5wdXQ6Zm9jdXMgewogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiI2ExYTFhYSIsIiNlMGUwZTAiKX07CiAgICAgIH0KCiAgICAgIC5kaWFsb2ctaGludCB7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2ExYTFhYSIsIiM2NjYiKX07CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgfQoKICAgICAgLmRpYWxvZy1hY3Rpb25zIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGdhcDogMTJweDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICB9CgogICAgICAuZGlhbG9nLWJ0biB7CiAgICAgICAgcGFkZGluZzogOHB4IDE2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7CiAgICAgIH0KCiAgICAgIC5kaWFsb2ctYnRuLWNhbmNlbCB7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNkNGQ0ZDgiLCIjNDQ0Iil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhYWEiKX07CiAgICAgIH0KCiAgICAgIC5kaWFsb2ctYnRuLWNhbmNlbDpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wMykiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmZmYiKX07CiAgICAgIH0KCiAgICAgIC5kaWFsb2ctYnRuLWNyZWF0ZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjNDA0MDQwIil9OwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmZmIil9OwogICAgICB9CgogICAgICAuZGlhbG9nLWJ0bi1jcmVhdGU6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZDRkNGQ4IiwiIzUwNTA1MCIpfTsKICAgICAgfQoKICAgICAgLmRpYWxvZy1idG4tY3JlYXRlOmRpc2FibGVkIHsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgICAgfQoKICAgICAgLyogTW92ZSBkaWFsb2cgc3R5bGVzICovCiAgICAgIC5tb3ZlLXN1bW1hcnkgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMDMpIiwicmdiYSgwLCAwLCAwLCAwLjIpIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgIH0KCiAgICAgIC5tb3ZlLWl0ZW0gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICB9CgogICAgICAubW92ZS1pdGVtOmxhc3QtY2hpbGQgewogICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgIH0KCiAgICAgIC5tb3ZlLWxhYmVsIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjODg4Iil9OwogICAgICAgIG1pbi13aWR0aDogNDBweDsKICAgICAgfQoKICAgICAgLm1vdmUtcGF0aCB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjM2YzZjQ2IiwiI2UwZTBlMCIpfTsKICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7CiAgICAgIH0KCiAgICAgIC5tb3ZlLWVycm9yIHsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDIzOSwgNjgsIDY4LCAwLjE1KTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIzOSwgNjgsIDY4LCAwLjMpOwogICAgICAgIGNvbG9yOiAjZjg3MTcxOwogICAgICAgIHBhZGRpbmc6IDEycHggMTZweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgIH0KCiAgICAgIC8qIE1vdmUgcGlja2VyIGRpYWxvZyBzdHlsZXMgKi8KICAgICAgLm1vdmUtcGlja2VyLWRpYWxvZyB7CiAgICAgICAgbWluLXdpZHRoOiA0NTBweDsKICAgICAgICBtYXgtaGVpZ2h0OiA1MDBweDsKICAgICAgfQoKICAgICAgLnBpY2tlci1icmVhZGNydW1iIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA0cHg7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wMykiLCJyZ2JhKDAsIDAsIDAsIDAuMikiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICAgIH0KCiAgICAgIC5waWNrZXItY3J1bWIgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiM4ODgiKX07CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgIH0KCiAgICAgIC5waWNrZXItY3J1bWI6aG92ZXIgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmZmYiKX07CiAgICAgIH0KCiAgICAgIC5waWNrZXItc2VwYXJhdG9yIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNkNGQ0ZDgiLCIjNTU1Iil9OwogICAgICB9CgogICAgICAucGlja2VyLWxpc3QgewogICAgICAgIG1heC1oZWlnaHQ6IDI4MHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMzMzIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICAgIG1pbi1oZWlnaHQ6IDEwMHB4OwogICAgICB9CgogICAgICAucGlja2VyLWl0ZW0gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgY29sb3I6ICNmYmJmMjQ7CiAgICAgIH0KCiAgICAgIC5waWNrZXItaXRlbTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wMykiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpIil9OwogICAgICB9CgogICAgICAucGlja2VyLWl0ZW0gLmljb24gewogICAgICAgIHdpZHRoOiAxNnB4OwogICAgICAgIGhlaWdodDogMTZweDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQoKICAgICAgLnBpY2tlci1pdGVtIC5uYW1lIHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgLnBpY2tlci1lbXB0eSB7CiAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjYTFhMWFhIiwiIzY2NiIpfTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgIH0KCiAgICAgIC5jb2x1bW4taXRlbS5kcmFnZ2luZyB7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICB9CgogICAgICAuY29sdW1uLWl0ZW0uZHJvcC10YXJnZXQgewogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoNTksIDEzMCwgMjQ2LCAwLjE1KSAhaW1wb3J0YW50OwogICAgICAgIG91dGxpbmU6IDFweCBkYXNoZWQgcmdiYSg1OSwgMTMwLCAyNDYsIDAuNSk7CiAgICAgIH0KCiAgICAgIC5jb2x1bW4taXRlbS5kcm9wLWludmFsaWQgewogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjM5LCA2OCwgNjgsIDAuMSkgIWltcG9ydGFudDsKICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICB9CiAgICBgXTthc3luYyBjb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksYXdhaXQgdGhpcy5sb2FkSW5pdGlhbENvbHVtbigpfWFzeW5jIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLmNsZWFyRm9sZGVySG92ZXIoKSx0aGlzLmRyYWdDb3VudGVycy5jbGVhcigpLHRoaXMuZmlsZUlucHV0RWxlbWVudCYmKHRoaXMuZmlsZUlucHV0RWxlbWVudC5yZW1vdmUoKSx0aGlzLmZpbGVJbnB1dEVsZW1lbnQ9bnVsbCksdGhpcy5mb2xkZXJJbnB1dEVsZW1lbnQmJih0aGlzLmZvbGRlcklucHV0RWxlbWVudC5yZW1vdmUoKSx0aGlzLmZvbGRlcklucHV0RWxlbWVudD1udWxsKX11cGRhdGVkKGZlKXtmZS5oYXMoImJ1Y2tldE5hbWUiKXx8ZmUuaGFzKCJjdXJyZW50UHJlZml4Iik/dGhpcy5sb2FkSW5pdGlhbENvbHVtbigpOmZlLmhhcygicmVmcmVzaEtleSIpJiZ0aGlzLnJlZnJlc2hBbGxDb2x1bW5zKCl9YXN5bmMgbG9hZEluaXRpYWxDb2x1bW4oKXtpZih0aGlzLmRhdGFQcm92aWRlcil7dGhpcy5sb2FkaW5nPSEwO3RyeXtsZXQgZmU9engodGhpcy5jdXJyZW50UHJlZml4KSxyZT1bIiIsLi4uZmVdLFNlPWF3YWl0IFByb21pc2UuYWxsKHJlLm1hcChPZT0+dGhpcy5kYXRhUHJvdmlkZXIubGlzdE9iamVjdHModGhpcy5idWNrZXROYW1lLE9lLCIvIikpKTt0aGlzLmNvbHVtbnM9U2UubWFwKChPZSxKZSk9PntsZXQgemE9cmVbSmVdLGRhPUplPGZlLmxlbmd0aD9mZVtKZV06bnVsbDtyZXR1cm57cHJlZml4OnphLG9iamVjdHM6T2Uub2JqZWN0cyxwcmVmaXhlczpPZS5wcmVmaXhlcyxzZWxlY3RlZEl0ZW06ZGEsd2lkdGg6dGhpcy5ERUZBVUxUX0NPTFVNTl9XSURUSH19KSx0aGlzLnVwZGF0ZUNvbXBsZXRlLnRoZW4oKCk9PnRoaXMuc2Nyb2xsVG9FbmQoKSl9Y2F0Y2goZmUpe2NvbnNvbGUuZXJyb3IoIkVycm9yIGxvYWRpbmcgb2JqZWN0czoiLGZlKSx0aGlzLmNvbHVtbnM9W119dGhpcy5sb2FkaW5nPSExfX1hc3luYyByZWZyZXNoQWxsQ29sdW1ucygpe2lmKCF0aGlzLmRhdGFQcm92aWRlcilyZXR1cm47bGV0IGZlPWF3YWl0IFByb21pc2UuYWxsKHRoaXMuY29sdW1ucy5tYXAoYXN5bmMgcmU9Pnt0cnl7bGV0IFNlPWF3YWl0IHRoaXMuZGF0YVByb3ZpZGVyLmxpc3RPYmplY3RzKHRoaXMuYnVja2V0TmFtZSxyZS5wcmVmaXgsIi8iKTtyZXR1cm57Li4ucmUsb2JqZWN0czpTZS5vYmplY3RzLHByZWZpeGVzOlNlLnByZWZpeGVzfX1jYXRjaHtyZXR1cm4gcmV9fSkpO3RoaXMuY29sdW1ucz1mZX1hc3luYyBzZWxlY3RGb2xkZXIoZmUscmUpe2lmKHRoaXMuZGF0YVByb3ZpZGVyKXt0aGlzLmNvbHVtbnM9dGhpcy5jb2x1bW5zLm1hcCgoU2UsT2UpPT5PZT09PWZlP3suLi5TZSxzZWxlY3RlZEl0ZW06cmV9OlNlKSx0aGlzLmNvbHVtbnM9dGhpcy5jb2x1bW5zLnNsaWNlKDAsZmUrMSk7dHJ5e2xldCBTZT1hd2FpdCB0aGlzLmRhdGFQcm92aWRlci5saXN0T2JqZWN0cyh0aGlzLmJ1Y2tldE5hbWUscmUsIi8iKTt0aGlzLmNvbHVtbnM9Wy4uLnRoaXMuY29sdW1ucyx7cHJlZml4OnJlLG9iamVjdHM6U2Uub2JqZWN0cyxwcmVmaXhlczpTZS5wcmVmaXhlcyxzZWxlY3RlZEl0ZW06bnVsbCx3aWR0aDp0aGlzLkRFRkFVTFRfQ09MVU1OX1dJRFRIfV0sdGhpcy51cGRhdGVDb21wbGV0ZS50aGVuKCgpPT50aGlzLnNjcm9sbFRvRW5kKCkpfWNhdGNoKFNlKXtjb25zb2xlLmVycm9yKCJFcnJvciBsb2FkaW5nIGZvbGRlcjoiLFNlKX19fXNjcm9sbFRvRW5kKCl7dGhpcy5zY3JvbGxMZWZ0PXRoaXMuc2Nyb2xsV2lkdGgtdGhpcy5jbGllbnRXaWR0aH1zdGFydFJlc2l6ZShmZSxyZSl7ZmUucHJldmVudERlZmF1bHQoKSx0aGlzLnJlc2l6aW5nPXtjb2x1bW5JbmRleDpyZSxzdGFydFg6ZmUuY2xpZW50WCxzdGFydFdpZHRoOnRoaXMuY29sdW1uc1tyZV0ud2lkdGh9LGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5oYW5kbGVSZXNpemUpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHRoaXMuc3RvcFJlc2l6ZSksZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3I9ImNvbC1yZXNpemUiLGRvY3VtZW50LmJvZHkuc3R5bGUudXNlclNlbGVjdD0ibm9uZSJ9aGFuZGxlUmVzaXplPWkoZmU9PntpZighdGhpcy5yZXNpemluZylyZXR1cm47bGV0IHJlPWZlLmNsaWVudFgtdGhpcy5yZXNpemluZy5zdGFydFgsU2U9TWF0aC5taW4odGhpcy5NQVhfQ09MVU1OX1dJRFRILE1hdGgubWF4KHRoaXMuTUlOX0NPTFVNTl9XSURUSCx0aGlzLnJlc2l6aW5nLnN0YXJ0V2lkdGgrcmUpKTt0aGlzLmNvbHVtbnM9dGhpcy5jb2x1bW5zLm1hcCgoT2UsSmUpPT5KZT09PXRoaXMucmVzaXppbmcuY29sdW1uSW5kZXg/ey4uLk9lLHdpZHRoOlNlfTpPZSl9LCJoYW5kbGVSZXNpemUiKTtzdG9wUmVzaXplPWkoKCk9Pnt0aGlzLnJlc2l6aW5nPW51bGwsZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLmhhbmRsZVJlc2l6ZSksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdGhpcy5zdG9wUmVzaXplKSxkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvcj0iIixkb2N1bWVudC5ib2R5LnN0eWxlLnVzZXJTZWxlY3Q9IiJ9LCJzdG9wUmVzaXplIik7c2VsZWN0RmlsZShmZSxyZSl7dGhpcy5jb2x1bW5zPXRoaXMuY29sdW1ucy5tYXAoKFNlLE9lKT0+T2U9PT1mZT97Li4uU2Usc2VsZWN0ZWRJdGVtOnJlfTpTZSksdGhpcy5jb2x1bW5zPXRoaXMuY29sdW1ucy5zbGljZSgwLGZlKzEpLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImtleS1zZWxlY3RlZCIse2RldGFpbDp7a2V5OnJlfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWdldEZpbGVJY29uKGZlKXtsZXQgcmU9ZmUuc3BsaXQoIi4iKS5wb3AoKT8udG9Mb3dlckNhc2UoKXx8IiI7cmV0dXJue2pzb246Ik0xNCAySDZhMiAyIDAgMCAwLTIgMnYxNmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWOHoiLHR4dDoiTTE0IDJINmEyIDIgMCAwIDAtMiAydjE2YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlY4eiIscG5nOiJNNSAzaDE0YTIgMiAwIDAgMSAyIDJ2MTRhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yeiIsanBnOiJNNSAzaDE0YTIgMiAwIDAgMSAyIDJ2MTRhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yeiIsanBlZzoiTTUgM2gxNGEyIDIgMCAwIDEgMiAydjE0YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMnoiLGdpZjoiTTUgM2gxNGEyIDIgMCAwIDEgMiAydjE0YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMnoiLHBkZjoiTTE0IDJINmEyIDIgMCAwIDAtMiAydjE2YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlY4eiJ9W3JlXXx8Ik0xNCAySDZhMiAyIDAgMCAwLTIgMnYxNmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWOHoifWhhbmRsZUZvbGRlckNvbnRleHRNZW51KGZlLHJlLFNlKXt0aGlzLmRhdGFQcm92aWRlciYmKGZlLnByZXZlbnREZWZhdWx0KCksJGEub3BlbkNvbnRleHRNZW51V2l0aE9wdGlvbnMoZmUsW3tuYW1lOiJPcGVuIixpY29uTmFtZToibHVjaWRlOmZvbGRlck9wZW4iLGFjdGlvbjppKGFzeW5jKCk9Pnt0aGlzLnNlbGVjdEZvbGRlcihyZSxTZSl9LCJhY3Rpb24iKX0se25hbWU6IkNvcHkgUGF0aCIsaWNvbk5hbWU6Imx1Y2lkZTpjb3B5IixhY3Rpb246aShhc3luYygpPT57YXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoU2UpfSwiYWN0aW9uIil9LHtuYW1lOiJSZW5hbWUiLGljb25OYW1lOiJsdWNpZGU6cGVuY2lsIixhY3Rpb246aShhc3luYygpPT50aGlzLm9wZW5SZW5hbWVEaWFsb2coU2UsITApLCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJNb3ZlIHRvLi4uIixpY29uTmFtZToibHVjaWRlOmZvbGRlcklucHV0IixhY3Rpb246aShhc3luYygpPT50aGlzLm9wZW5Nb3ZlUGlja2VyRGlhbG9nKFNlLCEwKSwiYWN0aW9uIil9LHtkaXZpZGVyOiEwfSx7bmFtZToiTmV3IEZvbGRlciBJbnNpZGUiLGljb25OYW1lOiJsdWNpZGU6Zm9sZGVyUGx1cyIsYWN0aW9uOmkoYXN5bmMoKT0+dGhpcy5vcGVuQ3JlYXRlRGlhbG9nKCJmb2xkZXIiLFNlKSwiYWN0aW9uIil9LHtuYW1lOiJOZXcgRmlsZSBJbnNpZGUiLGljb25OYW1lOiJsdWNpZGU6ZmlsZVBsdXMiLGFjdGlvbjppKGFzeW5jKCk9PnRoaXMub3BlbkNyZWF0ZURpYWxvZygiZmlsZSIsU2UpLCJhY3Rpb24iKX0se25hbWU6IlVwbG9hZCBGaWxlcy4uLiIsaWNvbk5hbWU6Imx1Y2lkZTpmaWxlIixhY3Rpb246aShhc3luYygpPT50aGlzLnRyaWdnZXJGaWxlVXBsb2FkKFNlLCJmaWxlcyIpLCJhY3Rpb24iKX0se25hbWU6IlVwbG9hZCBGb2xkZXIuLi4iLGljb25OYW1lOiJsdWNpZGU6Zm9sZGVyVXAiLGFjdGlvbjppKGFzeW5jKCk9PnRoaXMudHJpZ2dlckZpbGVVcGxvYWQoU2UsImZvbGRlciIpLCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJEZWxldGUgRm9sZGVyIixpY29uTmFtZToibHVjaWRlOnRyYXNoMiIsYWN0aW9uOmkoYXN5bmMoKT0+e2NvbmZpcm0oYERlbGV0ZSBmb2xkZXIgIiR7WWEoU2UpfSIgYW5kIGFsbCBpdHMgY29udGVudHM/YCkmJmF3YWl0IHRoaXMuZGF0YVByb3ZpZGVyLmRlbGV0ZVByZWZpeCh0aGlzLmJ1Y2tldE5hbWUsU2UpJiYodGhpcy5jb2x1bW5zPXRoaXMuY29sdW1ucy5zbGljZSgwLHJlKzEpLHRoaXMuY29sdW1ucz10aGlzLmNvbHVtbnMubWFwKChKZSx6YSk9PnphPT09cmU/ey4uLkplLHNlbGVjdGVkSXRlbTpudWxsfTpKZSksYXdhaXQgdGhpcy5yZWZyZXNoQ29sdW1uQnlQcmVmaXgodGhpcy5jb2x1bW5zW3JlXS5wcmVmaXgpKX0sImFjdGlvbiIpfV0pKX1oYW5kbGVGaWxlQ29udGV4dE1lbnUoZmUscmUsU2Upe3RoaXMuZGF0YVByb3ZpZGVyJiYoZmUucHJldmVudERlZmF1bHQoKSwkYS5vcGVuQ29udGV4dE1lbnVXaXRoT3B0aW9ucyhmZSxbe25hbWU6IlByZXZpZXciLGljb25OYW1lOiJsdWNpZGU6ZXllIixhY3Rpb246aShhc3luYygpPT57dGhpcy5zZWxlY3RGaWxlKHJlLFNlKX0sImFjdGlvbiIpfSx7bmFtZToiRG93bmxvYWQiLGljb25OYW1lOiJsdWNpZGU6ZG93bmxvYWQiLGFjdGlvbjppKGFzeW5jKCk9PntsZXQgT2U9YXdhaXQgdGhpcy5kYXRhUHJvdmlkZXIuZ2V0T2JqZWN0VXJsKHRoaXMuYnVja2V0TmFtZSxTZSksSmU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO0plLmhyZWY9T2UsSmUuZG93bmxvYWQ9WWEoU2UpLEplLmNsaWNrKCl9LCJhY3Rpb24iKX0se25hbWU6IkNvcHkgUGF0aCIsaWNvbk5hbWU6Imx1Y2lkZTpjb3B5IixhY3Rpb246aShhc3luYygpPT57YXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoU2UpfSwiYWN0aW9uIil9LHtuYW1lOiJSZW5hbWUiLGljb25OYW1lOiJsdWNpZGU6cGVuY2lsIixhY3Rpb246aShhc3luYygpPT50aGlzLm9wZW5SZW5hbWVEaWFsb2coU2UsITEpLCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJNb3ZlIHRvLi4uIixpY29uTmFtZToibHVjaWRlOmZvbGRlcklucHV0IixhY3Rpb246aShhc3luYygpPT50aGlzLm9wZW5Nb3ZlUGlja2VyRGlhbG9nKFNlLCExKSwiYWN0aW9uIil9LHtkaXZpZGVyOiEwfSx7bmFtZToiRGVsZXRlIixpY29uTmFtZToibHVjaWRlOnRyYXNoMiIsYWN0aW9uOmkoYXN5bmMoKT0+e2NvbmZpcm0oYERlbGV0ZSBmaWxlICIke1lhKFNlKX0iP2ApJiZhd2FpdCB0aGlzLmRhdGFQcm92aWRlci5kZWxldGVPYmplY3QodGhpcy5idWNrZXROYW1lLFNlKSYmYXdhaXQgdGhpcy5yZWZyZXNoQ29sdW1uQnlQcmVmaXgodGhpcy5jb2x1bW5zW3JlXS5wcmVmaXgpfSwiYWN0aW9uIil9XSkpfWhhbmRsZUVtcHR5U3BhY2VDb250ZXh0TWVudShmZSxyZSl7aWYoZmUudGFyZ2V0IT09ZmUuY3VycmVudFRhcmdldClyZXR1cm47ZmUucHJldmVudERlZmF1bHQoKTtsZXQgU2U9dGhpcy5jb2x1bW5zW3JlXS5wcmVmaXg7JGEub3BlbkNvbnRleHRNZW51V2l0aE9wdGlvbnMoZmUsW3tuYW1lOiJOZXcgRm9sZGVyIixpY29uTmFtZToibHVjaWRlOmZvbGRlclBsdXMiLGFjdGlvbjppKGFzeW5jKCk9PnRoaXMub3BlbkNyZWF0ZURpYWxvZygiZm9sZGVyIixTZSksImFjdGlvbiIpfSx7bmFtZToiTmV3IEZpbGUiLGljb25OYW1lOiJsdWNpZGU6ZmlsZVBsdXMiLGFjdGlvbjppKGFzeW5jKCk9PnRoaXMub3BlbkNyZWF0ZURpYWxvZygiZmlsZSIsU2UpLCJhY3Rpb24iKX0se25hbWU6IlVwbG9hZCBGaWxlcy4uLiIsaWNvbk5hbWU6Imx1Y2lkZTpmaWxlIixhY3Rpb246aShhc3luYygpPT50aGlzLnRyaWdnZXJGaWxlVXBsb2FkKFNlLCJmaWxlcyIpLCJhY3Rpb24iKX0se25hbWU6IlVwbG9hZCBGb2xkZXIuLi4iLGljb25OYW1lOiJsdWNpZGU6Zm9sZGVyVXAiLGFjdGlvbjppKGFzeW5jKCk9PnRoaXMudHJpZ2dlckZpbGVVcGxvYWQoU2UsImZvbGRlciIpLCJhY3Rpb24iKX1dKX1vcGVuQ3JlYXRlRGlhbG9nKGZlLHJlKXt0aGlzLmNyZWF0ZURpYWxvZ1R5cGU9ZmUsdGhpcy5jcmVhdGVEaWFsb2dQcmVmaXg9cmUsdGhpcy5jcmVhdGVEaWFsb2dOYW1lPSIiLHRoaXMuc2hvd0NyZWF0ZURpYWxvZz0hMH1lbnN1cmVGaWxlSW5wdXRzKCl7dGhpcy5maWxlSW5wdXRFbGVtZW50fHwodGhpcy5maWxlSW5wdXRFbGVtZW50PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0IiksdGhpcy5maWxlSW5wdXRFbGVtZW50LnR5cGU9ImZpbGUiLHRoaXMuZmlsZUlucHV0RWxlbWVudC5tdWx0aXBsZT0hMCx0aGlzLmZpbGVJbnB1dEVsZW1lbnQuc3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy5zaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuZmlsZUlucHV0RWxlbWVudCkpLHRoaXMuZm9sZGVySW5wdXRFbGVtZW50fHwodGhpcy5mb2xkZXJJbnB1dEVsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSx0aGlzLmZvbGRlcklucHV0RWxlbWVudC50eXBlPSJmaWxlIix0aGlzLmZvbGRlcklucHV0RWxlbWVudC5tdWx0aXBsZT0hMCx0aGlzLmZvbGRlcklucHV0RWxlbWVudC53ZWJraXRkaXJlY3Rvcnk9ITAsdGhpcy5mb2xkZXJJbnB1dEVsZW1lbnQuc3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy5zaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuZm9sZGVySW5wdXRFbGVtZW50KSl9dHJpZ2dlckZpbGVVcGxvYWQoZmUscmUpe3RoaXMuZW5zdXJlRmlsZUlucHV0cygpO2xldCBTZT1yZT09PSJmb2xkZXIiP3RoaXMuZm9sZGVySW5wdXRFbGVtZW50OnRoaXMuZmlsZUlucHV0RWxlbWVudDtTZS52YWx1ZT0iIjtsZXQgT2U9aShhc3luYygpPT57U2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixPZSksU2UuZmlsZXMmJlNlLmZpbGVzLmxlbmd0aD4wJiZhd2FpdCB0aGlzLnVwbG9hZEZpbGVzKEFycmF5LmZyb20oU2UuZmlsZXMpLGZlKX0sImhhbmRsZXIiKTtTZS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLE9lKSxTZS5jbGljaygpfWFzeW5jIHVwbG9hZEZpbGVzKGZlLHJlKXtpZih0aGlzLmRhdGFQcm92aWRlcil7dGhpcy51cGxvYWRpbmc9ITAsdGhpcy51cGxvYWRQcm9ncmVzcz17Y3VycmVudDowLHRvdGFsOmZlLmxlbmd0aH07Zm9yKGxldCBTZT0wO1NlPGZlLmxlbmd0aDtTZSsrKXtsZXQgT2U9ZmVbU2VdO3RoaXMudXBsb2FkUHJvZ3Jlc3M9e2N1cnJlbnQ6U2UrMSx0b3RhbDpmZS5sZW5ndGh9O3RyeXtsZXQgSmU9YXdhaXQgdGhpcy5yZWFkRmlsZUFzQmFzZTY0KE9lKSx6YT1PZS53ZWJraXRSZWxhdGl2ZVBhdGh8fE9lLm5hbWUsZGE9cmUremEsd3M9T2UudHlwZXx8cjcoT2UubmFtZS5zcGxpdCgiLiIpLnBvcCgpPy50b0xvd2VyQ2FzZSgpfHwiIik7YXdhaXQgdGhpcy5kYXRhUHJvdmlkZXIucHV0T2JqZWN0KHRoaXMuYnVja2V0TmFtZSxkYSxKZSx3cyl9Y2F0Y2goSmUpe2NvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byB1cGxvYWQgJHtPZS5uYW1lfTpgLEplKX19dGhpcy51cGxvYWRpbmc9ITEsdGhpcy51cGxvYWRQcm9ncmVzcz1udWxsLGF3YWl0IHRoaXMucmVmcmVzaENvbHVtbkJ5UHJlZml4KHJlKX19YXN5bmMgdXBsb2FkRmlsZXNXaXRoUGF0aHMoZmUscmUpe2lmKHRoaXMuZGF0YVByb3ZpZGVyKXt0aGlzLnVwbG9hZGluZz0hMCx0aGlzLnVwbG9hZFByb2dyZXNzPXtjdXJyZW50OjAsdG90YWw6ZmUubGVuZ3RofTtmb3IobGV0IFNlPTA7U2U8ZmUubGVuZ3RoO1NlKyspe2xldHtmaWxlOk9lLHJlbGF0aXZlUGF0aDpKZX09ZmVbU2VdO3RoaXMudXBsb2FkUHJvZ3Jlc3M9e2N1cnJlbnQ6U2UrMSx0b3RhbDpmZS5sZW5ndGh9O3RyeXtsZXQgemE9YXdhaXQgdGhpcy5yZWFkRmlsZUFzQmFzZTY0KE9lKSxkYT1yZStKZSx3cz1PZS50eXBlfHxyNyhPZS5uYW1lLnNwbGl0KCIuIikucG9wKCk/LnRvTG93ZXJDYXNlKCl8fCIiKTthd2FpdCB0aGlzLmRhdGFQcm92aWRlci5wdXRPYmplY3QodGhpcy5idWNrZXROYW1lLGRhLHphLHdzKX1jYXRjaCh6YSl7Y29uc29sZS5lcnJvcihgRmFpbGVkIHRvIHVwbG9hZCAke0plfTpgLHphKX19dGhpcy51cGxvYWRpbmc9ITEsdGhpcy51cGxvYWRQcm9ncmVzcz1udWxsLGF3YWl0IHRoaXMucmVmcmVzaENvbHVtbkJ5UHJlZml4KHJlKX19cmVhZEZpbGVBc0Jhc2U2NChmZSl7cmV0dXJuIG5ldyBQcm9taXNlKChyZSxTZSk9PntsZXQgT2U9bmV3IEZpbGVSZWFkZXI7T2Uub25sb2FkPSgpPT57bGV0IEplPU9lLnJlc3VsdDtyZShKZS5zcGxpdCgiLCIpWzFdfHwiIil9LE9lLm9uZXJyb3I9KCk9PlNlKE9lLmVycm9yKSxPZS5yZWFkQXNEYXRhVVJMKGZlKX0pfWFzeW5jIHJlZnJlc2hDb2x1bW5CeVByZWZpeChmZSl7aWYoIXRoaXMuZGF0YVByb3ZpZGVyKXJldHVybjtsZXQgcmU9dGhpcy5jb2x1bW5zLmZpbmRJbmRleChTZT0+U2UucHJlZml4PT09ZmUpO2lmKHJlPT09LTEpe2F3YWl0IHRoaXMucmVmcmVzaEFsbENvbHVtbnMoKTtyZXR1cm59dHJ5e2xldCBTZT1hd2FpdCB0aGlzLmRhdGFQcm92aWRlci5saXN0T2JqZWN0cyh0aGlzLmJ1Y2tldE5hbWUsZmUsIi8iKTt0aGlzLmNvbHVtbnM9dGhpcy5jb2x1bW5zLm1hcCgoT2UsSmUpPT5KZT09PXJlP3suLi5PZSxvYmplY3RzOlNlLm9iamVjdHMscHJlZml4ZXM6U2UucHJlZml4ZXN9Ok9lKX1jYXRjaHthd2FpdCB0aGlzLnJlZnJlc2hBbGxDb2x1bW5zKCl9fWhhbmRsZUNvbHVtbkRyYWdFbnRlcihmZSxyZSl7ZmUucHJldmVudERlZmF1bHQoKSxmZS5zdG9wUHJvcGFnYXRpb24oKTtsZXQgU2U9KHRoaXMuZHJhZ0NvdW50ZXJzLmdldChyZSl8fDApKzE7dGhpcy5kcmFnQ291bnRlcnMuc2V0KHJlLFNlKSx0aGlzLmRyYWdPdmVyQ29sdW1uSW5kZXg9cmV9aGFuZGxlQ29sdW1uRHJhZ092ZXIoZmUpe2ZlLnByZXZlbnREZWZhdWx0KCksZmUuc3RvcFByb3BhZ2F0aW9uKCksZmUuZGF0YVRyYW5zZmVyJiYoZmUuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Q9dGhpcy5kcmFnZ2VkSXRlbT8ibW92ZSI6ImNvcHkiKX1oYW5kbGVDb2x1bW5EcmFnTGVhdmUoZmUscmUpe2ZlLnN0b3BQcm9wYWdhdGlvbigpO2xldCBTZT0odGhpcy5kcmFnQ291bnRlcnMuZ2V0KHJlKXx8MSktMTt0aGlzLmRyYWdDb3VudGVycy5zZXQocmUsU2UpLFNlPD0wJiYodGhpcy5kcmFnQ291bnRlcnMuZGVsZXRlKHJlKSx0aGlzLmRyYWdPdmVyQ29sdW1uSW5kZXg9PT1yZSYmKHRoaXMuZHJhZ092ZXJDb2x1bW5JbmRleD0tMSksdGhpcy5jbGVhckZvbGRlckhvdmVyKCkpfWFzeW5jIGhhbmRsZUNvbHVtbkRyb3AoZmUscmUpe2ZlLnByZXZlbnREZWZhdWx0KCksZmUuc3RvcFByb3BhZ2F0aW9uKCk7bGV0IFNlPXRoaXMuZHJhZ092ZXJGb2xkZXJQcmVmaXg/P3RoaXMuY29sdW1uc1tyZV0ucHJlZml4O2lmKHRoaXMuZHJhZ2dlZEl0ZW0pe3RoaXMuaW5pdGlhdGVNb3ZlKHRoaXMuZHJhZ2dlZEl0ZW0ua2V5LHRoaXMuZHJhZ2dlZEl0ZW0uaXNGb2xkZXIsU2UpLHRoaXMuZHJhZ2dlZEl0ZW09bnVsbCx0aGlzLmNsZWFyRm9sZGVySG92ZXIoKSx0aGlzLmRyYWdDb3VudGVycy5jbGVhcigpLHRoaXMuZHJhZ092ZXJDb2x1bW5JbmRleD0tMTtyZXR1cm59dGhpcy5kcmFnQ291bnRlcnMuY2xlYXIoKSx0aGlzLmRyYWdPdmVyQ29sdW1uSW5kZXg9LTE7bGV0IE9lPWZlLmRhdGFUcmFuc2Zlcj8uaXRlbXM7aWYoIU9lfHxPZS5sZW5ndGg9PT0wKXJldHVybjt0aGlzLmNsZWFyRm9sZGVySG92ZXIoKTtsZXQgSmU9W10semE9aShhc3luYyhkYSx3cyk9PntpZihkYS5pc0ZpbGUpe2xldCBraT1kYSxKaT1hd2FpdCBuZXcgUHJvbWlzZSgoUnIsU2kpPT57a2kuZmlsZShScixTaSl9KTtKZS5wdXNoKHtmaWxlOkppLHJlbGF0aXZlUGF0aDp3cytKaS5uYW1lfSl9ZWxzZSBpZihkYS5pc0RpcmVjdG9yeSl7bGV0IEppPWRhLmNyZWF0ZVJlYWRlcigpLFJyPWF3YWl0IG5ldyBQcm9taXNlKChTaSx2bik9PntKaS5yZWFkRW50cmllcyhTaSx2bil9KTtmb3IobGV0IFNpIG9mIFJyKWF3YWl0IHphKFNpLHdzK2RhLm5hbWUrIi8iKX19LCJwcm9jZXNzRW50cnkiKTtmb3IobGV0IGRhPTA7ZGE8T2UubGVuZ3RoO2RhKyspe2xldCB3cz1PZVtkYV07aWYod3Mua2luZD09PSJmaWxlIil7bGV0IGtpPXdzLndlYmtpdEdldEFzRW50cnkoKTtraSYmYXdhaXQgemEoa2ksIiIpfX1KZS5sZW5ndGg+MCYmYXdhaXQgdGhpcy51cGxvYWRGaWxlc1dpdGhQYXRocyhKZSxTZSl9aGFuZGxlRm9sZGVyRHJhZ0VudGVyKGZlLHJlKXtmZS5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmNsZWFyRm9sZGVySG92ZXIoKSx0aGlzLmZvbGRlckhvdmVyVGltZXI9c2V0VGltZW91dCgoKT0+e3RoaXMuZHJhZ092ZXJGb2xkZXJQcmVmaXg9cmV9LDUwMCl9aGFuZGxlRm9sZGVyRHJhZ0xlYXZlKGZlLHJlKXtmZS5zdG9wUHJvcGFnYXRpb24oKTtsZXQgU2U9ZmUuY3VycmVudFRhcmdldCxPZT1mZS5yZWxhdGVkVGFyZ2V0O09lJiZTZS5jb250YWlucyhPZSl8fCh0aGlzLmRyYWdPdmVyRm9sZGVyUHJlZml4PT09cmUmJih0aGlzLmRyYWdPdmVyRm9sZGVyUHJlZml4PW51bGwpLHRoaXMuZm9sZGVySG92ZXJUaW1lciYmKGNsZWFyVGltZW91dCh0aGlzLmZvbGRlckhvdmVyVGltZXIpLHRoaXMuZm9sZGVySG92ZXJUaW1lcj1udWxsKSl9aGFuZGxlRm9sZGVyRHJhZ092ZXIoZmUpe2ZlLnByZXZlbnREZWZhdWx0KCksZmUuc3RvcFByb3BhZ2F0aW9uKCksZmUuZGF0YVRyYW5zZmVyJiYoZmUuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Q9dGhpcy5kcmFnZ2VkSXRlbT8ibW92ZSI6ImNvcHkiKX1jbGVhckZvbGRlckhvdmVyKCl7dGhpcy5mb2xkZXJIb3ZlclRpbWVyJiYoY2xlYXJUaW1lb3V0KHRoaXMuZm9sZGVySG92ZXJUaW1lciksdGhpcy5mb2xkZXJIb3ZlclRpbWVyPW51bGwpLHRoaXMuZHJhZ092ZXJGb2xkZXJQcmVmaXg9bnVsbH1oYW5kbGVJdGVtRHJhZ1N0YXJ0KGZlLHJlLFNlKXt0aGlzLmRyYWdnZWRJdGVtPXtrZXk6cmUsaXNGb2xkZXI6U2V9LGZlLmRhdGFUcmFuc2Zlcj8uc2V0RGF0YSgidGV4dC9wbGFpbiIscmUpLGZlLmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkPSJjb3B5TW92ZSIsZmUudGFyZ2V0LmNsYXNzTGlzdC5hZGQoImRyYWdnaW5nIil9aGFuZGxlSXRlbURyYWdFbmQoZmUpe3RoaXMuZHJhZ2dlZEl0ZW09bnVsbCxmZS50YXJnZXQuY2xhc3NMaXN0LnJlbW92ZSgiZHJhZ2dpbmciKX1hc3luYyBvcGVuTW92ZVBpY2tlckRpYWxvZyhmZSxyZSl7dGhpcy5tb3ZlUGlja2VyU291cmNlPXtrZXk6ZmUsaXNGb2xkZXI6cmV9LHRoaXMubW92ZVBpY2tlckN1cnJlbnRQcmVmaXg9IiIsdGhpcy5zaG93TW92ZVBpY2tlckRpYWxvZz0hMCxhd2FpdCB0aGlzLmxvYWRNb3ZlUGlja2VyUHJlZml4ZXMoIiIpfWFzeW5jIG5hdmlnYXRlTW92ZVBpY2tlcihmZSl7dGhpcy5tb3ZlUGlja2VyQ3VycmVudFByZWZpeD1mZSxhd2FpdCB0aGlzLmxvYWRNb3ZlUGlja2VyUHJlZml4ZXMoZmUpfWFzeW5jIGxvYWRNb3ZlUGlja2VyUHJlZml4ZXMoZmUpe2lmKHRoaXMuZGF0YVByb3ZpZGVyKXt0aGlzLm1vdmVQaWNrZXJMb2FkaW5nPSEwO3RyeXtsZXQgcmU9YXdhaXQgdGhpcy5kYXRhUHJvdmlkZXIubGlzdE9iamVjdHModGhpcy5idWNrZXROYW1lLGZlLCIvIik7dGhpcy5tb3ZlUGlja2VyUHJlZml4ZXM9cmUucHJlZml4ZXN9Y2F0Y2h7dGhpcy5tb3ZlUGlja2VyUHJlZml4ZXM9W119dGhpcy5tb3ZlUGlja2VyTG9hZGluZz0hMX19c2VsZWN0TW92ZURlc3RpbmF0aW9uKGZlKXt0aGlzLm1vdmVQaWNrZXJTb3VyY2UmJih0aGlzLmNsb3NlTW92ZVBpY2tlckRpYWxvZygpLHRoaXMuaW5pdGlhdGVNb3ZlKHRoaXMubW92ZVBpY2tlclNvdXJjZS5rZXksdGhpcy5tb3ZlUGlja2VyU291cmNlLmlzRm9sZGVyLGZlKSl9Y2xvc2VNb3ZlUGlja2VyRGlhbG9nKCl7dGhpcy5zaG93TW92ZVBpY2tlckRpYWxvZz0hMSx0aGlzLm1vdmVQaWNrZXJTb3VyY2U9bnVsbCx0aGlzLm1vdmVQaWNrZXJDdXJyZW50UHJlZml4PSIiLHRoaXMubW92ZVBpY2tlclByZWZpeGVzPVtdfWluaXRpYXRlTW92ZShmZSxyZSxTZSl7bGV0IE9lPVpRKGZlLFNlKTtpZighT2UudmFsaWQpe3RoaXMubW92ZVNvdXJjZT17a2V5OmZlLGlzRm9sZGVyOnJlfSx0aGlzLm1vdmVEZXN0aW5hdGlvbj1TZSx0aGlzLm1vdmVFcnJvcj1PZS5lcnJvcix0aGlzLnNob3dNb3ZlRGlhbG9nPSEwO3JldHVybn10aGlzLm1vdmVTb3VyY2U9e2tleTpmZSxpc0ZvbGRlcjpyZX0sdGhpcy5tb3ZlRGVzdGluYXRpb249U2UsdGhpcy5tb3ZlRXJyb3I9bnVsbCx0aGlzLnNob3dNb3ZlRGlhbG9nPSEwfWFzeW5jIGV4ZWN1dGVNb3ZlKCl7aWYoISghdGhpcy5tb3ZlU291cmNlfHwhdGhpcy5kYXRhUHJvdmlkZXIpKXt0aGlzLm1vdmVJblByb2dyZXNzPSEwO3RyeXtsZXQgZmU9WWEodGhpcy5tb3ZlU291cmNlLmtleSkscmU9dGhpcy5tb3ZlRGVzdGluYXRpb24rZmUrKHRoaXMubW92ZVNvdXJjZS5pc0ZvbGRlcj8iLyI6IiIpLFNlO3RoaXMubW92ZVNvdXJjZS5pc0ZvbGRlcj9TZT1hd2FpdCB0aGlzLmRhdGFQcm92aWRlci5tb3ZlUHJlZml4KHRoaXMuYnVja2V0TmFtZSx0aGlzLm1vdmVTb3VyY2Uua2V5LHJlKTpTZT1hd2FpdCB0aGlzLmRhdGFQcm92aWRlci5tb3ZlT2JqZWN0KHRoaXMuYnVja2V0TmFtZSx0aGlzLm1vdmVTb3VyY2Uua2V5LHJlKSxTZS5zdWNjZXNzPyh0aGlzLmNsb3NlTW92ZURpYWxvZygpLGF3YWl0IHRoaXMucmVmcmVzaEFsbENvbHVtbnMoKSk6dGhpcy5tb3ZlRXJyb3I9U2UuZXJyb3J8fCJNb3ZlIG9wZXJhdGlvbiBmYWlsZWQifWNhdGNoKGZlKXt0aGlzLm1vdmVFcnJvcj1gRXJyb3I6ICR7ZmV9YH10aGlzLm1vdmVJblByb2dyZXNzPSExfX1jbG9zZU1vdmVEaWFsb2coKXt0aGlzLnNob3dNb3ZlRGlhbG9nPSExLHRoaXMubW92ZVNvdXJjZT1udWxsLHRoaXMubW92ZURlc3RpbmF0aW9uPSIiLHRoaXMubW92ZUVycm9yPW51bGwsdGhpcy5tb3ZlSW5Qcm9ncmVzcz0hMX1vcGVuUmVuYW1lRGlhbG9nKGZlLHJlKXt0aGlzLnJlbmFtZVNvdXJjZT17a2V5OmZlLGlzRm9sZGVyOnJlfSx0aGlzLnJlbmFtZU5hbWU9WWEoZmUpLHRoaXMucmVuYW1lRXJyb3I9bnVsbCx0aGlzLnNob3dSZW5hbWVEaWFsb2c9ITAsdGhpcy51cGRhdGVDb21wbGV0ZS50aGVuKCgpPT57bGV0IFNlPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLnJlbmFtZS1kaWFsb2ctaW5wdXQiKTtpZihTZSlpZihTZS5mb2N1cygpLHJlKVNlLnNlbGVjdCgpO2Vsc2V7bGV0IE9lPXRoaXMucmVuYW1lTmFtZS5sYXN0SW5kZXhPZigiLiIpO09lPjA/U2Uuc2V0U2VsZWN0aW9uUmFuZ2UoMCxPZSk6U2Uuc2VsZWN0KCl9fSl9YXN5bmMgZXhlY3V0ZVJlbmFtZSgpe2lmKCF0aGlzLnJlbmFtZVNvdXJjZXx8IXRoaXMucmVuYW1lTmFtZS50cmltKCl8fCF0aGlzLmRhdGFQcm92aWRlcilyZXR1cm47bGV0IGZlPXRoaXMucmVuYW1lTmFtZS50cmltKCkscmU9WWEodGhpcy5yZW5hbWVTb3VyY2Uua2V5KTtpZihmZT09PXJlKXt0aGlzLnJlbmFtZUVycm9yPSJOYW1lIGlzIHRoZSBzYW1lIGFzIGN1cnJlbnQiO3JldHVybn1pZighZmUpe3RoaXMucmVuYW1lRXJyb3I9Ik5hbWUgY2Fubm90IGJlIGVtcHR5IjtyZXR1cm59aWYoZmUuaW5jbHVkZXMoIi8iKSl7dGhpcy5yZW5hbWVFcnJvcj0nTmFtZSBjYW5ub3QgY29udGFpbiAiLyInO3JldHVybn10aGlzLnJlbmFtZUluUHJvZ3Jlc3M9ITAsdGhpcy5yZW5hbWVFcnJvcj1udWxsO3RyeXtsZXQgT2U9SmQodGhpcy5yZW5hbWVTb3VyY2Uua2V5KStmZSsodGhpcy5yZW5hbWVTb3VyY2UuaXNGb2xkZXI/Ii8iOiIiKSxKZTt0aGlzLnJlbmFtZVNvdXJjZS5pc0ZvbGRlcj9KZT1hd2FpdCB0aGlzLmRhdGFQcm92aWRlci5tb3ZlUHJlZml4KHRoaXMuYnVja2V0TmFtZSx0aGlzLnJlbmFtZVNvdXJjZS5rZXksT2UpOkplPWF3YWl0IHRoaXMuZGF0YVByb3ZpZGVyLm1vdmVPYmplY3QodGhpcy5idWNrZXROYW1lLHRoaXMucmVuYW1lU291cmNlLmtleSxPZSksSmUuc3VjY2Vzcz8odGhpcy5jbG9zZVJlbmFtZURpYWxvZygpLGF3YWl0IHRoaXMucmVmcmVzaEFsbENvbHVtbnMoKSk6dGhpcy5yZW5hbWVFcnJvcj1KZS5lcnJvcnx8IlJlbmFtZSBmYWlsZWQifWNhdGNoKFNlKXt0aGlzLnJlbmFtZUVycm9yPWBFcnJvcjogJHtTZX1gfXRoaXMucmVuYW1lSW5Qcm9ncmVzcz0hMX1jbG9zZVJlbmFtZURpYWxvZygpe3RoaXMuc2hvd1JlbmFtZURpYWxvZz0hMSx0aGlzLnJlbmFtZVNvdXJjZT1udWxsLHRoaXMucmVuYW1lTmFtZT0iIix0aGlzLnJlbmFtZUVycm9yPW51bGwsdGhpcy5yZW5hbWVJblByb2dyZXNzPSExfXJlbmRlclJlbmFtZURpYWxvZygpe2lmKCF0aGlzLnNob3dSZW5hbWVEaWFsb2d8fCF0aGlzLnJlbmFtZVNvdXJjZSlyZXR1cm4iIjtsZXQgZmU9dGhpcy5yZW5hbWVTb3VyY2UuaXNGb2xkZXI7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZy1vdmVybGF5IiBAY2xpY2s9JHsoKT0+dGhpcy5jbG9zZVJlbmFtZURpYWxvZygpfT4KICAgICAgICA8ZGl2IGNsYXNzPSJkaWFsb2ciIEBjbGljaz0ke1NlPT5TZS5zdG9wUHJvcGFnYXRpb24oKX0+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkaWFsb2ctdGl0bGUiPiR7ZmU/IlJlbmFtZSBGb2xkZXIiOiJSZW5hbWUgRmlsZSJ9PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkaWFsb2ctbG9jYXRpb24iPgogICAgICAgICAgICBMb2NhdGlvbjogJHt0aGlzLmJ1Y2tldE5hbWV9LyR7SmQodGhpcy5yZW5hbWVTb3VyY2Uua2V5KX0KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgJHt0aGlzLnJlbmFtZUVycm9yP3dgPGRpdiBjbGFzcz0ibW92ZS1lcnJvciI+JHt0aGlzLnJlbmFtZUVycm9yfTwvZGl2PmA6IiJ9CiAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgdHlwZT0idGV4dCIKICAgICAgICAgICAgY2xhc3M9ImRpYWxvZy1pbnB1dCByZW5hbWUtZGlhbG9nLWlucHV0IgogICAgICAgICAgICBwbGFjZWhvbGRlcj0ke2ZlPyJmb2xkZXItbmFtZSI6ImZpbGVuYW1lLmV4dCJ9CiAgICAgICAgICAgIC52YWx1ZT0ke3RoaXMucmVuYW1lTmFtZX0KICAgICAgICAgICAgQGlucHV0PSR7U2U9Pnt0aGlzLnJlbmFtZU5hbWU9U2UudGFyZ2V0LnZhbHVlLHRoaXMucmVuYW1lRXJyb3I9bnVsbH19CiAgICAgICAgICAgIEBrZXlkb3duPSR7U2U9PntTZS5rZXk9PT0iRW50ZXIiJiZ0aGlzLmV4ZWN1dGVSZW5hbWUoKSxTZS5rZXk9PT0iRXNjYXBlIiYmdGhpcy5jbG9zZVJlbmFtZURpYWxvZygpfX0KICAgICAgICAgIC8+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkaWFsb2ctYWN0aW9ucyI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImRpYWxvZy1idG4gZGlhbG9nLWJ0bi1jYW5jZWwiCiAgICAgICAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMuY2xvc2VSZW5hbWVEaWFsb2coKX0KICAgICAgICAgICAgICAgICAgICA/ZGlzYWJsZWQ9JHt0aGlzLnJlbmFtZUluUHJvZ3Jlc3N9PkNhbmNlbDwvYnV0dG9uPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJkaWFsb2ctYnRuIGRpYWxvZy1idG4tY3JlYXRlIgogICAgICAgICAgICAgICAgICAgIEBjbGljaz0keygpPT50aGlzLmV4ZWN1dGVSZW5hbWUoKX0KICAgICAgICAgICAgICAgICAgICA/ZGlzYWJsZWQ9JHt0aGlzLnJlbmFtZUluUHJvZ3Jlc3N8fCF0aGlzLnJlbmFtZU5hbWUudHJpbSgpfT4KICAgICAgICAgICAgICAke3RoaXMucmVuYW1lSW5Qcm9ncmVzcz8iUmVuYW1pbmcuLi4iOiJSZW5hbWUifQogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyTW92ZURpYWxvZygpe2lmKCF0aGlzLnNob3dNb3ZlRGlhbG9nfHwhdGhpcy5tb3ZlU291cmNlKXJldHVybiIiO2xldCBmZT1ZYSh0aGlzLm1vdmVTb3VyY2Uua2V5KTtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iZGlhbG9nLW92ZXJsYXkiIEBjbGljaz0keygpPT50aGlzLmNsb3NlTW92ZURpYWxvZygpfT4KICAgICAgICA8ZGl2IGNsYXNzPSJkaWFsb2ciIEBjbGljaz0ke3JlPT5yZS5zdG9wUHJvcGFnYXRpb24oKX0+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkaWFsb2ctdGl0bGUiPk1vdmUgJHt0aGlzLm1vdmVTb3VyY2UuaXNGb2xkZXI/IkZvbGRlciI6IkZpbGUifTwvZGl2PgoKICAgICAgICAgICR7dGhpcy5tb3ZlRXJyb3I/d2AKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW92ZS1lcnJvciI+JHt0aGlzLm1vdmVFcnJvcn08L2Rpdj4KICAgICAgICAgIGA6d2AKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW92ZS1zdW1tYXJ5Ij4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb3ZlLWl0ZW0iPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1vdmUtbGFiZWwiPkZyb206PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1vdmUtcGF0aCI+JHt0aGlzLm1vdmVTb3VyY2Uua2V5fTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb3ZlLWl0ZW0iPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1vdmUtbGFiZWwiPlRvOjwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJtb3ZlLXBhdGgiPiR7dGhpcy5tb3ZlRGVzdGluYXRpb259JHtmZX08L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYH0KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJkaWFsb2ctYWN0aW9ucyI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImRpYWxvZy1idG4gZGlhbG9nLWJ0bi1jYW5jZWwiCiAgICAgICAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMuY2xvc2VNb3ZlRGlhbG9nKCl9CiAgICAgICAgICAgICAgICAgICAgP2Rpc2FibGVkPSR7dGhpcy5tb3ZlSW5Qcm9ncmVzc30+CiAgICAgICAgICAgICAgQ2FuY2VsCiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAke3RoaXMubW92ZUVycm9yPyIiOndgCiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZGlhbG9nLWJ0biBkaWFsb2ctYnRuLWNyZWF0ZSIKICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz0keygpPT50aGlzLmV4ZWN1dGVNb3ZlKCl9CiAgICAgICAgICAgICAgICAgICAgICA/ZGlzYWJsZWQ9JHt0aGlzLm1vdmVJblByb2dyZXNzfT4KICAgICAgICAgICAgICAgICR7dGhpcy5tb3ZlSW5Qcm9ncmVzcz8iTW92aW5nLi4uIjoiTW92ZSJ9CiAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgIGB9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfXJlbmRlck1vdmVQaWNrZXJEaWFsb2coKXtpZighdGhpcy5zaG93TW92ZVBpY2tlckRpYWxvZ3x8IXRoaXMubW92ZVBpY2tlclNvdXJjZSlyZXR1cm4iIjtsZXQgZmU9WWEodGhpcy5tb3ZlUGlja2VyU291cmNlLmtleSkscmU9SmQodGhpcy5tb3ZlUGlja2VyU291cmNlLmtleSk7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZy1vdmVybGF5IiBAY2xpY2s9JHsoKT0+dGhpcy5jbG9zZU1vdmVQaWNrZXJEaWFsb2coKX0+CiAgICAgICAgPGRpdiBjbGFzcz0iZGlhbG9nIG1vdmUtcGlja2VyLWRpYWxvZyIgQGNsaWNrPSR7U2U9PlNlLnN0b3BQcm9wYWdhdGlvbigpfT4KICAgICAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZy10aXRsZSI+TW92ZSAiJHtmZX0iIHRvLi4uPC9kaXY+CgogICAgICAgICAgPGRpdiBjbGFzcz0icGlja2VyLWJyZWFkY3J1bWIiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0icGlja2VyLWNydW1iIiBAY2xpY2s9JHsoKT0+dGhpcy5uYXZpZ2F0ZU1vdmVQaWNrZXIoIiIpfT4KICAgICAgICAgICAgICAke3RoaXMuYnVja2V0TmFtZX0KICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAke3p4KHRoaXMubW92ZVBpY2tlckN1cnJlbnRQcmVmaXgpLm1hcChTZT0+d2AKICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGlja2VyLXNlcGFyYXRvciI+Lzwvc3Bhbj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGlja2VyLWNydW1iIiBAY2xpY2s9JHsoKT0+dGhpcy5uYXZpZ2F0ZU1vdmVQaWNrZXIoU2UpfT4KICAgICAgICAgICAgICAgICR7WWEoU2UpfQogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgYCl9CiAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJwaWNrZXItbGlzdCI+CiAgICAgICAgICAgICR7dGhpcy5tb3ZlUGlja2VyTG9hZGluZz93YDxkaXYgY2xhc3M9InBpY2tlci1lbXB0eSI+TG9hZGluZy4uLjwvZGl2PmA6IiJ9CiAgICAgICAgICAgICR7IXRoaXMubW92ZVBpY2tlckxvYWRpbmcmJnRoaXMubW92ZVBpY2tlclByZWZpeGVzLmZpbHRlcihTZT0+U2UhPT10aGlzLm1vdmVQaWNrZXJTb3VyY2Uua2V5KS5sZW5ndGg9PT0wP3dgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGlja2VyLWVtcHR5Ij5ObyBzdWJmb2xkZXJzPC9kaXY+CiAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAgICR7dGhpcy5tb3ZlUGlja2VyUHJlZml4ZXMuZmlsdGVyKFNlPT5TZSE9PXRoaXMubW92ZVBpY2tlclNvdXJjZS5rZXkpLm1hcChTZT0+d2AKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBpY2tlci1pdGVtIgogICAgICAgICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy5uYXZpZ2F0ZU1vdmVQaWNrZXIoU2UpfQogICAgICAgICAgICAgICAgICAgICBAZGJsY2xpY2s9JHsoKT0+dGhpcy5zZWxlY3RNb3ZlRGVzdGluYXRpb24oU2UpfT4KICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMiAxOWEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoNWwyIDNoOWEyIDIgMCAwIDEgMiAyeiIvPgogICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im5hbWUiPiR7WWEoU2UpfTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIGApfQogICAgICAgICAgPC9kaXY+CgogICAgICAgICAgPGRpdiBjbGFzcz0iZGlhbG9nLWFjdGlvbnMiPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJkaWFsb2ctYnRuIGRpYWxvZy1idG4tY2FuY2VsIiBAY2xpY2s9JHsoKT0+dGhpcy5jbG9zZU1vdmVQaWNrZXJEaWFsb2coKX0+CiAgICAgICAgICAgICAgQ2FuY2VsCiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJkaWFsb2ctYnRuIGRpYWxvZy1idG4tY3JlYXRlIgogICAgICAgICAgICAgICAgICAgIEBjbGljaz0keygpPT50aGlzLnNlbGVjdE1vdmVEZXN0aW5hdGlvbih0aGlzLm1vdmVQaWNrZXJDdXJyZW50UHJlZml4KX0KICAgICAgICAgICAgICAgICAgICA/ZGlzYWJsZWQ9JHt0aGlzLm1vdmVQaWNrZXJDdXJyZW50UHJlZml4PT09cmV9PgogICAgICAgICAgICAgIE1vdmUgSGVyZQogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9YXN5bmMgaGFuZGxlQ3JlYXRlKCl7aWYoIXRoaXMuY3JlYXRlRGlhbG9nTmFtZS50cmltKCl8fCF0aGlzLmRhdGFQcm92aWRlcilyZXR1cm47bGV0IGZlPXRoaXMuY3JlYXRlRGlhbG9nTmFtZS50cmltKCkscmU7dGhpcy5jcmVhdGVEaWFsb2dUeXBlPT09ImZvbGRlciI/cmU9dGhpcy5jcmVhdGVEaWFsb2dQcmVmaXgrZmUrIi8ua2VlcCI6cmU9dGhpcy5jcmVhdGVEaWFsb2dQcmVmaXgrZmU7bGV0IFNlPWZlLnNwbGl0KCIuIikucG9wKCk/LnRvTG93ZXJDYXNlKCl8fCIiLE9lPXRoaXMuY3JlYXRlRGlhbG9nVHlwZT09PSJmaWxlIj9yNyhTZSk6ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsSmU9dGhpcy5jcmVhdGVEaWFsb2dUeXBlPT09ImZpbGUiP1hRKFNlKToiIjthd2FpdCB0aGlzLmRhdGFQcm92aWRlci5wdXRPYmplY3QodGhpcy5idWNrZXROYW1lLHJlLGJ0b2EoSmUpLE9lKSYmKHRoaXMuc2hvd0NyZWF0ZURpYWxvZz0hMSxhd2FpdCB0aGlzLnJlZnJlc2hDb2x1bW5CeVByZWZpeCh0aGlzLmNyZWF0ZURpYWxvZ1ByZWZpeCkpfXJlbmRlckNyZWF0ZURpYWxvZygpe2lmKCF0aGlzLnNob3dDcmVhdGVEaWFsb2cpcmV0dXJuIiI7bGV0IGZlPXRoaXMuY3JlYXRlRGlhbG9nVHlwZT09PSJmb2xkZXIiLHJlPWZlPyJDcmVhdGUgTmV3IEZvbGRlciI6IkNyZWF0ZSBOZXcgRmlsZSIsU2U9ZmU/ImZvbGRlci1uYW1lIG9yIHBhdGgvdG8vZm9sZGVyIjoiZmlsZW5hbWUudHh0IG9yIHBhdGgvdG8vZmlsZS50eHQiO3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJkaWFsb2ctb3ZlcmxheSIgQGNsaWNrPSR7KCk9PnRoaXMuc2hvd0NyZWF0ZURpYWxvZz0hMX0+CiAgICAgICAgPGRpdiBjbGFzcz0iZGlhbG9nIiBAY2xpY2s9JHtPZT0+T2Uuc3RvcFByb3BhZ2F0aW9uKCl9PgogICAgICAgICAgPGRpdiBjbGFzcz0iZGlhbG9nLXRpdGxlIj4ke3JlfTwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZGlhbG9nLWxvY2F0aW9uIj4KICAgICAgICAgICAgTG9jYXRpb246ICR7dGhpcy5idWNrZXROYW1lfS8ke3RoaXMuY3JlYXRlRGlhbG9nUHJlZml4fQogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgdHlwZT0idGV4dCIKICAgICAgICAgICAgY2xhc3M9ImRpYWxvZy1pbnB1dCIKICAgICAgICAgICAgcGxhY2Vob2xkZXI9JHtTZX0KICAgICAgICAgICAgLnZhbHVlPSR7dGhpcy5jcmVhdGVEaWFsb2dOYW1lfQogICAgICAgICAgICBAaW5wdXQ9JHtPZT0+dGhpcy5jcmVhdGVEaWFsb2dOYW1lPU9lLnRhcmdldC52YWx1ZX0KICAgICAgICAgICAgQGtleWRvd249JHtPZT0+T2Uua2V5PT09IkVudGVyIiYmdGhpcy5oYW5kbGVDcmVhdGUoKX0KICAgICAgICAgIC8+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkaWFsb2ctaGludCI+CiAgICAgICAgICAgIFVzZSAiLyIgdG8gY3JlYXRlIG5lc3RlZCAke2ZlPyJmb2xkZXJzIjoicGF0aCJ9IChlLmcuLCAke2ZlPyJwYXJlbnQvY2hpbGQiOiJmb2xkZXIvZmlsZS50eHQifSkKICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZGlhbG9nLWFjdGlvbnMiPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJkaWFsb2ctYnRuIGRpYWxvZy1idG4tY2FuY2VsIiBAY2xpY2s9JHsoKT0+dGhpcy5zaG93Q3JlYXRlRGlhbG9nPSExfT4KICAgICAgICAgICAgICBDYW5jZWwKICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgICBjbGFzcz0iZGlhbG9nLWJ0biBkaWFsb2ctYnRuLWNyZWF0ZSIKICAgICAgICAgICAgICA/ZGlzYWJsZWQ9JHshdGhpcy5jcmVhdGVEaWFsb2dOYW1lLnRyaW0oKX0KICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVDcmVhdGUoKX0KICAgICAgICAgICAgPgogICAgICAgICAgICAgIENyZWF0ZQogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyKCl7cmV0dXJuIHRoaXMubG9hZGluZyYmdGhpcy5jb2x1bW5zLmxlbmd0aD09PTA/d2A8ZGl2IGNsYXNzPSJsb2FkaW5nIj5Mb2FkaW5nLi4uPC9kaXY+YDp3YAogICAgICA8ZGl2IGNsYXNzPSJjb2x1bW5zLWNvbnRhaW5lciI+CiAgICAgICAgJHt0aGlzLmNvbHVtbnMubWFwKChmZSxyZSk9PnRoaXMucmVuZGVyQ29sdW1uV3JhcHBlcihmZSxyZSkpfQogICAgICA8L2Rpdj4KICAgICAgJHt0aGlzLnJlbmRlckNyZWF0ZURpYWxvZygpfQogICAgICAke3RoaXMucmVuZGVyTW92ZURpYWxvZygpfQogICAgICAke3RoaXMucmVuZGVyTW92ZVBpY2tlckRpYWxvZygpfQogICAgICAke3RoaXMucmVuZGVyUmVuYW1lRGlhbG9nKCl9CiAgICBgfXJlbmRlckNvbHVtbldyYXBwZXIoZmUscmUpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJjb2x1bW4td3JhcHBlciI+CiAgICAgICAgJHt0aGlzLnJlbmRlckNvbHVtbihmZSxyZSl9CiAgICAgICAgPGRpdgogICAgICAgICAgY2xhc3M9InJlc2l6ZS1oYW5kbGUgJHt0aGlzLnJlc2l6aW5nPy5jb2x1bW5JbmRleD09PXJlPyJhY3RpdmUiOiIifSIKICAgICAgICAgIEBtb3VzZWRvd249JHtTZT0+dGhpcy5zdGFydFJlc2l6ZShTZSxyZSl9CiAgICAgICAgPjwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyQ29sdW1uKGZlLHJlKXtsZXQgU2U9ZmUucHJlZml4P1lhKGZlLnByZWZpeCk6dGhpcy5idWNrZXROYW1lO3JldHVybiB3YAogICAgICA8ZGl2CiAgICAgICAgY2xhc3M9ImNvbHVtbiAke3RoaXMuZHJhZ092ZXJDb2x1bW5JbmRleD09PXJlPyJkcmFnLW92ZXIiOiIifSIKICAgICAgICBzdHlsZT0id2lkdGg6ICR7ZmUud2lkdGh9cHgiCiAgICAgICAgQGRyYWdlbnRlcj0ke09lPT50aGlzLmhhbmRsZUNvbHVtbkRyYWdFbnRlcihPZSxyZSl9CiAgICAgICAgQGRyYWdvdmVyPSR7T2U9PnRoaXMuaGFuZGxlQ29sdW1uRHJhZ092ZXIoT2UpfQogICAgICAgIEBkcmFnbGVhdmU9JHtPZT0+dGhpcy5oYW5kbGVDb2x1bW5EcmFnTGVhdmUoT2UscmUpfQogICAgICAgIEBkcm9wPSR7T2U9PnRoaXMuaGFuZGxlQ29sdW1uRHJvcChPZSxyZSl9CiAgICAgID4KICAgICAgICA8ZGl2IGNsYXNzPSJjb2x1bW4taGVhZGVyIiB0aXRsZT0ke2ZlLnByZWZpeHx8dGhpcy5idWNrZXROYW1lfT4KICAgICAgICAgICR7U2V9CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY29sdW1uLWl0ZW1zIiBAY29udGV4dG1lbnU9JHtPZT0+dGhpcy5oYW5kbGVFbXB0eVNwYWNlQ29udGV4dE1lbnUoT2UscmUpfT4KICAgICAgICAgICR7ZmUucHJlZml4ZXMubGVuZ3RoPT09MCYmZmUub2JqZWN0cy5sZW5ndGg9PT0wP3dgPGRpdiBjbGFzcz0iZW1wdHktc3RhdGUiPkVtcHR5IGZvbGRlcjwvZGl2PmA6IiJ9CiAgICAgICAgICAke2ZlLnByZWZpeGVzLm1hcChPZT0+d2AKICAgICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICBjbGFzcz0iY29sdW1uLWl0ZW0gZm9sZGVyICR7ZmUuc2VsZWN0ZWRJdGVtPT09T2U/InNlbGVjdGVkIjoiIn0gJHt0aGlzLmRyYWdPdmVyRm9sZGVyUHJlZml4PT09T2U/ImRyYWctdGFyZ2V0IjoiIn0iCiAgICAgICAgICAgICAgICBkcmFnZ2FibGU9InRydWUiCiAgICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy5zZWxlY3RGb2xkZXIocmUsT2UpfQogICAgICAgICAgICAgICAgQGNvbnRleHRtZW51PSR7SmU9PnRoaXMuaGFuZGxlRm9sZGVyQ29udGV4dE1lbnUoSmUscmUsT2UpfQogICAgICAgICAgICAgICAgQGRyYWdzdGFydD0ke0plPT50aGlzLmhhbmRsZUl0ZW1EcmFnU3RhcnQoSmUsT2UsITApfQogICAgICAgICAgICAgICAgQGRyYWdlbmQ9JHtKZT0+dGhpcy5oYW5kbGVJdGVtRHJhZ0VuZChKZSl9CiAgICAgICAgICAgICAgICBAZHJhZ2VudGVyPSR7SmU9PnRoaXMuaGFuZGxlRm9sZGVyRHJhZ0VudGVyKEplLE9lKX0KICAgICAgICAgICAgICAgIEBkcmFnb3Zlcj0ke0plPT50aGlzLmhhbmRsZUZvbGRlckRyYWdPdmVyKEplKX0KICAgICAgICAgICAgICAgIEBkcmFnbGVhdmU9JHtKZT0+dGhpcy5oYW5kbGVGb2xkZXJEcmFnTGVhdmUoSmUsT2UpfQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Imljb24iIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIj4KICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTIyIDE5YTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmg1bDIgM2g5YTIgMiAwIDAgMSAyIDJ6IiAvPgogICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibmFtZSI+JHtZYShPZSl9PC9zcGFuPgogICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0iY2hldnJvbiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgICAgICAgPHBvbHlsaW5lIHBvaW50cz0iOSAxOCAxNSAxMiA5IDYiPjwvcG9seWxpbmU+CiAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYCl9CiAgICAgICAgICAke2ZlLm9iamVjdHMubWFwKE9lPT53YAogICAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSJjb2x1bW4taXRlbSAke2ZlLnNlbGVjdGVkSXRlbT09PU9lLmtleT8ic2VsZWN0ZWQiOiIifSIKICAgICAgICAgICAgICAgIGRyYWdnYWJsZT0idHJ1ZSIKICAgICAgICAgICAgICAgIEBjbGljaz0keygpPT50aGlzLnNlbGVjdEZpbGUocmUsT2Uua2V5KX0KICAgICAgICAgICAgICAgIEBjb250ZXh0bWVudT0ke0plPT50aGlzLmhhbmRsZUZpbGVDb250ZXh0TWVudShKZSxyZSxPZS5rZXkpfQogICAgICAgICAgICAgICAgQGRyYWdzdGFydD0ke0plPT50aGlzLmhhbmRsZUl0ZW1EcmFnU3RhcnQoSmUsT2Uua2V5LCExKX0KICAgICAgICAgICAgICAgIEBkcmFnZW5kPSR7SmU9PnRoaXMuaGFuZGxlSXRlbURyYWdFbmQoSmUpfQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Imljb24iIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+CiAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9IiR7dGhpcy5nZXRGaWxlSWNvbihPZS5rZXkpfSIgLz4KICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im5hbWUiPiR7WWEoT2Uua2V5KX08L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGApfQogICAgICAgIDwvZGl2PgogICAgICAgICR7dGhpcy5kcmFnT3ZlckNvbHVtbkluZGV4PT09cmU/d2AKICAgICAgICAgIDxkaXYgY2xhc3M9ImRyYWctaGludCI+CiAgICAgICAgICAgICR7dGhpcy5kcmFnZ2VkSXRlbT90aGlzLmRyYWdPdmVyRm9sZGVyUHJlZml4P2BNb3ZlIHRvICR7WWEodGhpcy5kcmFnT3ZlckZvbGRlclByZWZpeCl9YDoiTW92ZSBoZXJlIjp0aGlzLmRyYWdPdmVyRm9sZGVyUHJlZml4P2BEcm9wIHRvIHVwbG9hZCBpbnRvICR7WWEodGhpcy5kcmFnT3ZlckZvbGRlclByZWZpeCl9YDoiRHJvcCB0byB1cGxvYWQgaGVyZSJ9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgOiIifQogICAgICAgICR7dGhpcy51cGxvYWRpbmc/d2AKICAgICAgICAgIDxkaXYgY2xhc3M9InVwbG9hZC1vdmVybGF5Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idXBsb2FkLXRleHQiPlVwbG9hZGluZy4uLjwvZGl2PgogICAgICAgICAgICAke3RoaXMudXBsb2FkUHJvZ3Jlc3M/d2AKICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ1cGxvYWQtcHJvZ3Jlc3MiPiR7dGhpcy51cGxvYWRQcm9ncmVzcy5jdXJyZW50fSAvICR7dGhpcy51cGxvYWRQcm9ncmVzcy50b3RhbH0gZmlsZXM8L2Rpdj4KICAgICAgICAgICAgYDoiIn0KICAgICAgICAgIDwvZGl2PgogICAgICAgIGA6IiJ9CiAgICAgIDwvZGl2PgogICAgYH1zdGF0aWN7TnQoYSx0KX19O3JldHVybiBOcj1hfSkoKX0pO3ZhciBWcyxqdCxDZXMsbmx0PWcoKCk9PntwZSgpO2ZyKCk7aHQoKTtRUSgpO1ZzPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxqdD1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sQ2VzPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1zdG9yYWdlLWtleXMiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXSxPLCQ9W10sRT1bXSxILGs9W10sUz1bXSxJLFA9W10sUj1bXSxLLFY9W10sVz1bXSxtZSxCPVtdLFU9W10saGUsRj1bXSxqPVtdLHVlLGxlPVtdLFE9W10saWUsdGU9W10sZWU9W10sa2UsWD1bXSxaPVtdLHllLHE9W10sQT1bXSxzZSxvZT1bXSxhZT1bXSxUZSxSZT1bXSxCZT1bXSxHZSxEZT1bXSxfZT1bXSxDZSx2ZT1bXSxiZT1bXSxFZSxqZT1bXSxXZT1bXSxzdCxNZT1bXSxnZT1bXSxJZSxjZT1bXSxkZT1bXSxMZSxLZT1bXSxZZT1bXSxvdCxVdD1bXSxadD1bXSxqYSxldD1bXSxidD1bXSx5YSxlcz1bXSxycz1bXSxwcyxucz1bXSx0aT1bXTt2YXIgYWk9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNTdG9yYWdlS2V5cyIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCB6ZT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOk9iamVjdH0pXSxwPVtMKHt0eXBlOlN0cmluZ30pXSxjPVtMKHt0eXBlOlN0cmluZ30pXSx4PVtMKHt0eXBlOk51bWJlcn0pXSx5PVtZKCldLE49W1koKV0sTz1bWSgpXSxIPVtZKCldLEk9W1koKV0sSz1bWSgpXSxtZT1bWSgpXSxoZT1bWSgpXSx1ZT1bWSgpXSxpZT1bWSgpXSxrZT1bWSgpXSx5ZT1bWSgpXSxzZT1bWSgpXSxUZT1bWSgpXSxHZT1bWSgpXSxDZT1bWSgpXSxFZT1bWSgpXSxzdD1bWSgpXSxJZT1bWSgpXSxMZT1bWSgpXSxvdD1bWSgpXSxqYT1bWSgpXSx5YT1bWSgpXSxwcz1bWSgpXSxWcyh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImRhdGFQcm92aWRlciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh4ZT0+ImRhdGFQcm92aWRlciJpbiB4ZSwiaGFzIiksZ2V0OmkoeGU9PnhlLmRhdGFQcm92aWRlciwiZ2V0Iiksc2V0OmkoKHhlLE5lKT0+e3hlLmRhdGFQcm92aWRlcj1OZX0sInNldCIpfSxtZXRhZGF0YTp6ZX0sbyxsKSxWcyh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImJ1Y2tldE5hbWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoeGU9PiJidWNrZXROYW1lImluIHhlLCJoYXMiKSxnZXQ6aSh4ZT0+eGUuYnVja2V0TmFtZSwiZ2V0Iiksc2V0OmkoKHhlLE5lKT0+e3hlLmJ1Y2tldE5hbWU9TmV9LCJzZXQiKX0sbWV0YWRhdGE6emV9LGQsdSksVnModGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjdXJyZW50UHJlZml4IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHhlPT4iY3VycmVudFByZWZpeCJpbiB4ZSwiaGFzIiksZ2V0OmkoeGU9PnhlLmN1cnJlbnRQcmVmaXgsImdldCIpLHNldDppKCh4ZSxOZSk9Pnt4ZS5jdXJyZW50UHJlZml4PU5lfSwic2V0Iil9LG1ldGFkYXRhOnplfSxiLHYpLFZzKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToicmVmcmVzaEtleSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh4ZT0+InJlZnJlc2hLZXkiaW4geGUsImhhcyIpLGdldDppKHhlPT54ZS5yZWZyZXNoS2V5LCJnZXQiKSxzZXQ6aSgoeGUsTmUpPT57eGUucmVmcmVzaEtleT1OZX0sInNldCIpfSxtZXRhZGF0YTp6ZX0sbSxmKSxWcyh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImFsbEtleXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoeGU9PiJhbGxLZXlzImluIHhlLCJoYXMiKSxnZXQ6aSh4ZT0+eGUuYWxsS2V5cywiZ2V0Iiksc2V0OmkoKHhlLE5lKT0+e3hlLmFsbEtleXM9TmV9LCJzZXQiKX0sbWV0YWRhdGE6emV9LE0seiksVnModGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJwcmVmaXhlcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh4ZT0+InByZWZpeGVzImluIHhlLCJoYXMiKSxnZXQ6aSh4ZT0+eGUucHJlZml4ZXMsImdldCIpLHNldDppKCh4ZSxOZSk9Pnt4ZS5wcmVmaXhlcz1OZX0sInNldCIpfSxtZXRhZGF0YTp6ZX0sQyxfKSxWcyh0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImxvYWRpbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoeGU9PiJsb2FkaW5nImluIHhlLCJoYXMiKSxnZXQ6aSh4ZT0+eGUubG9hZGluZywiZ2V0Iiksc2V0OmkoKHhlLE5lKT0+e3hlLmxvYWRpbmc9TmV9LCJzZXQiKX0sbWV0YWRhdGE6emV9LCQsRSksVnModGhpcyxudWxsLEgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWxlY3RlZEtleSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh4ZT0+InNlbGVjdGVkS2V5ImluIHhlLCJoYXMiKSxnZXQ6aSh4ZT0+eGUuc2VsZWN0ZWRLZXksImdldCIpLHNldDppKCh4ZSxOZSk9Pnt4ZS5zZWxlY3RlZEtleT1OZX0sInNldCIpfSxtZXRhZGF0YTp6ZX0sayxTKSxWcyh0aGlzLG51bGwsSSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImZpbHRlclRleHQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoeGU9PiJmaWx0ZXJUZXh0ImluIHhlLCJoYXMiKSxnZXQ6aSh4ZT0+eGUuZmlsdGVyVGV4dCwiZ2V0Iiksc2V0OmkoKHhlLE5lKT0+e3hlLmZpbHRlclRleHQ9TmV9LCJzZXQiKX0sbWV0YWRhdGE6emV9LFAsUiksVnModGhpcyxudWxsLEsse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93Q3JlYXRlRGlhbG9nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHhlPT4ic2hvd0NyZWF0ZURpYWxvZyJpbiB4ZSwiaGFzIiksZ2V0OmkoeGU9PnhlLnNob3dDcmVhdGVEaWFsb2csImdldCIpLHNldDppKCh4ZSxOZSk9Pnt4ZS5zaG93Q3JlYXRlRGlhbG9nPU5lfSwic2V0Iil9LG1ldGFkYXRhOnplfSxWLFcpLFZzKHRoaXMsbnVsbCxtZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNyZWF0ZURpYWxvZ1R5cGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoeGU9PiJjcmVhdGVEaWFsb2dUeXBlImluIHhlLCJoYXMiKSxnZXQ6aSh4ZT0+eGUuY3JlYXRlRGlhbG9nVHlwZSwiZ2V0Iiksc2V0OmkoKHhlLE5lKT0+e3hlLmNyZWF0ZURpYWxvZ1R5cGU9TmV9LCJzZXQiKX0sbWV0YWRhdGE6emV9LEIsVSksVnModGhpcyxudWxsLGhlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY3JlYXRlRGlhbG9nUHJlZml4IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHhlPT4iY3JlYXRlRGlhbG9nUHJlZml4ImluIHhlLCJoYXMiKSxnZXQ6aSh4ZT0+eGUuY3JlYXRlRGlhbG9nUHJlZml4LCJnZXQiKSxzZXQ6aSgoeGUsTmUpPT57eGUuY3JlYXRlRGlhbG9nUHJlZml4PU5lfSwic2V0Iil9LG1ldGFkYXRhOnplfSxGLGopLFZzKHRoaXMsbnVsbCx1ZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNyZWF0ZURpYWxvZ05hbWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoeGU9PiJjcmVhdGVEaWFsb2dOYW1lImluIHhlLCJoYXMiKSxnZXQ6aSh4ZT0+eGUuY3JlYXRlRGlhbG9nTmFtZSwiZ2V0Iiksc2V0OmkoKHhlLE5lKT0+e3hlLmNyZWF0ZURpYWxvZ05hbWU9TmV9LCJzZXQiKX0sbWV0YWRhdGE6emV9LGxlLFEpLFZzKHRoaXMsbnVsbCxpZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dNb3ZlRGlhbG9nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHhlPT4ic2hvd01vdmVEaWFsb2ciaW4geGUsImhhcyIpLGdldDppKHhlPT54ZS5zaG93TW92ZURpYWxvZywiZ2V0Iiksc2V0OmkoKHhlLE5lKT0+e3hlLnNob3dNb3ZlRGlhbG9nPU5lfSwic2V0Iil9LG1ldGFkYXRhOnplfSx0ZSxlZSksVnModGhpcyxudWxsLGtlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibW92ZVNvdXJjZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh4ZT0+Im1vdmVTb3VyY2UiaW4geGUsImhhcyIpLGdldDppKHhlPT54ZS5tb3ZlU291cmNlLCJnZXQiKSxzZXQ6aSgoeGUsTmUpPT57eGUubW92ZVNvdXJjZT1OZX0sInNldCIpfSxtZXRhZGF0YTp6ZX0sWCxaKSxWcyh0aGlzLG51bGwseWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtb3ZlRGVzdGluYXRpb24iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoeGU9PiJtb3ZlRGVzdGluYXRpb24iaW4geGUsImhhcyIpLGdldDppKHhlPT54ZS5tb3ZlRGVzdGluYXRpb24sImdldCIpLHNldDppKCh4ZSxOZSk9Pnt4ZS5tb3ZlRGVzdGluYXRpb249TmV9LCJzZXQiKX0sbWV0YWRhdGE6emV9LHEsQSksVnModGhpcyxudWxsLHNlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibW92ZUluUHJvZ3Jlc3MiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoeGU9PiJtb3ZlSW5Qcm9ncmVzcyJpbiB4ZSwiaGFzIiksZ2V0OmkoeGU9PnhlLm1vdmVJblByb2dyZXNzLCJnZXQiKSxzZXQ6aSgoeGUsTmUpPT57eGUubW92ZUluUHJvZ3Jlc3M9TmV9LCJzZXQiKX0sbWV0YWRhdGE6emV9LG9lLGFlKSxWcyh0aGlzLG51bGwsVGUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtb3ZlRXJyb3IiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoeGU9PiJtb3ZlRXJyb3IiaW4geGUsImhhcyIpLGdldDppKHhlPT54ZS5tb3ZlRXJyb3IsImdldCIpLHNldDppKCh4ZSxOZSk9Pnt4ZS5tb3ZlRXJyb3I9TmV9LCJzZXQiKX0sbWV0YWRhdGE6emV9LFJlLEJlKSxWcyh0aGlzLG51bGwsR2Use2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93TW92ZVBpY2tlckRpYWxvZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh4ZT0+InNob3dNb3ZlUGlja2VyRGlhbG9nImluIHhlLCJoYXMiKSxnZXQ6aSh4ZT0+eGUuc2hvd01vdmVQaWNrZXJEaWFsb2csImdldCIpLHNldDppKCh4ZSxOZSk9Pnt4ZS5zaG93TW92ZVBpY2tlckRpYWxvZz1OZX0sInNldCIpfSxtZXRhZGF0YTp6ZX0sRGUsX2UpLFZzKHRoaXMsbnVsbCxDZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1vdmVQaWNrZXJTb3VyY2UiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoeGU9PiJtb3ZlUGlja2VyU291cmNlImluIHhlLCJoYXMiKSxnZXQ6aSh4ZT0+eGUubW92ZVBpY2tlclNvdXJjZSwiZ2V0Iiksc2V0OmkoKHhlLE5lKT0+e3hlLm1vdmVQaWNrZXJTb3VyY2U9TmV9LCJzZXQiKX0sbWV0YWRhdGE6emV9LHZlLGJlKSxWcyh0aGlzLG51bGwsRWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtb3ZlUGlja2VyQ3VycmVudFByZWZpeCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh4ZT0+Im1vdmVQaWNrZXJDdXJyZW50UHJlZml4ImluIHhlLCJoYXMiKSxnZXQ6aSh4ZT0+eGUubW92ZVBpY2tlckN1cnJlbnRQcmVmaXgsImdldCIpLHNldDppKCh4ZSxOZSk9Pnt4ZS5tb3ZlUGlja2VyQ3VycmVudFByZWZpeD1OZX0sInNldCIpfSxtZXRhZGF0YTp6ZX0samUsV2UpLFZzKHRoaXMsbnVsbCxzdCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1vdmVQaWNrZXJQcmVmaXhlcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh4ZT0+Im1vdmVQaWNrZXJQcmVmaXhlcyJpbiB4ZSwiaGFzIiksZ2V0OmkoeGU9PnhlLm1vdmVQaWNrZXJQcmVmaXhlcywiZ2V0Iiksc2V0OmkoKHhlLE5lKT0+e3hlLm1vdmVQaWNrZXJQcmVmaXhlcz1OZX0sInNldCIpfSxtZXRhZGF0YTp6ZX0sTWUsZ2UpLFZzKHRoaXMsbnVsbCxJZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1vdmVQaWNrZXJMb2FkaW5nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHhlPT4ibW92ZVBpY2tlckxvYWRpbmciaW4geGUsImhhcyIpLGdldDppKHhlPT54ZS5tb3ZlUGlja2VyTG9hZGluZywiZ2V0Iiksc2V0OmkoKHhlLE5lKT0+e3hlLm1vdmVQaWNrZXJMb2FkaW5nPU5lfSwic2V0Iil9LG1ldGFkYXRhOnplfSxjZSxkZSksVnModGhpcyxudWxsLExlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2hvd1JlbmFtZURpYWxvZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh4ZT0+InNob3dSZW5hbWVEaWFsb2ciaW4geGUsImhhcyIpLGdldDppKHhlPT54ZS5zaG93UmVuYW1lRGlhbG9nLCJnZXQiKSxzZXQ6aSgoeGUsTmUpPT57eGUuc2hvd1JlbmFtZURpYWxvZz1OZX0sInNldCIpfSxtZXRhZGF0YTp6ZX0sS2UsWWUpLFZzKHRoaXMsbnVsbCxvdCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InJlbmFtZVNvdXJjZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh4ZT0+InJlbmFtZVNvdXJjZSJpbiB4ZSwiaGFzIiksZ2V0OmkoeGU9PnhlLnJlbmFtZVNvdXJjZSwiZ2V0Iiksc2V0OmkoKHhlLE5lKT0+e3hlLnJlbmFtZVNvdXJjZT1OZX0sInNldCIpfSxtZXRhZGF0YTp6ZX0sVXQsWnQpLFZzKHRoaXMsbnVsbCxqYSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InJlbmFtZU5hbWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoeGU9PiJyZW5hbWVOYW1lImluIHhlLCJoYXMiKSxnZXQ6aSh4ZT0+eGUucmVuYW1lTmFtZSwiZ2V0Iiksc2V0OmkoKHhlLE5lKT0+e3hlLnJlbmFtZU5hbWU9TmV9LCJzZXQiKX0sbWV0YWRhdGE6emV9LGV0LGJ0KSxWcyh0aGlzLG51bGwseWEse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJyZW5hbWVJblByb2dyZXNzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHhlPT4icmVuYW1lSW5Qcm9ncmVzcyJpbiB4ZSwiaGFzIiksZ2V0OmkoeGU9PnhlLnJlbmFtZUluUHJvZ3Jlc3MsImdldCIpLHNldDppKCh4ZSxOZSk9Pnt4ZS5yZW5hbWVJblByb2dyZXNzPU5lfSwic2V0Iil9LG1ldGFkYXRhOnplfSxlcyxycyksVnModGhpcyxudWxsLHBzLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicmVuYW1lRXJyb3IiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoeGU9PiJyZW5hbWVFcnJvciJpbiB4ZSwiaGFzIiksZ2V0OmkoeGU9PnhlLnJlbmFtZUVycm9yLCJnZXQiKSxzZXQ6aSgoeGUsTmUpPT57eGUucmVuYW1lRXJyb3I9TmV9LCJzZXQiKX0sbWV0YWRhdGE6emV9LG5zLHRpKSxWcyhudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTp6ZX0sbnVsbCx0KSxhaT1hPWUudmFsdWUsemUmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6emV9KX0jZT1qdCh0aGlzLG8sbnVsbCk7Z2V0IGRhdGFQcm92aWRlcigpe3JldHVybiB0aGlzLiNlfXNldCBkYXRhUHJvdmlkZXIoemUpe3RoaXMuI2U9emV9I3Q9KGp0KHRoaXMsbCksanQodGhpcyxkLCIiKSk7Z2V0IGJ1Y2tldE5hbWUoKXtyZXR1cm4gdGhpcy4jdH1zZXQgYnVja2V0TmFtZSh6ZSl7dGhpcy4jdD16ZX0jYT0oanQodGhpcyx1KSxqdCh0aGlzLGIsIiIpKTtnZXQgY3VycmVudFByZWZpeCgpe3JldHVybiB0aGlzLiNhfXNldCBjdXJyZW50UHJlZml4KHplKXt0aGlzLiNhPXplfSNzPShqdCh0aGlzLHYpLGp0KHRoaXMsbSwwKSk7Z2V0IHJlZnJlc2hLZXkoKXtyZXR1cm4gdGhpcy4jc31zZXQgcmVmcmVzaEtleSh6ZSl7dGhpcy4jcz16ZX0jaT0oanQodGhpcyxmKSxqdCh0aGlzLE0sW10pKTtnZXQgYWxsS2V5cygpe3JldHVybiB0aGlzLiNpfXNldCBhbGxLZXlzKHplKXt0aGlzLiNpPXplfSNyPShqdCh0aGlzLHopLGp0KHRoaXMsQyxbXSkpO2dldCBwcmVmaXhlcygpe3JldHVybiB0aGlzLiNyfXNldCBwcmVmaXhlcyh6ZSl7dGhpcy4jcj16ZX0jbz0oanQodGhpcyxfKSxqdCh0aGlzLCQsITEpKTtnZXQgbG9hZGluZygpe3JldHVybiB0aGlzLiNvfXNldCBsb2FkaW5nKHplKXt0aGlzLiNvPXplfSNuPShqdCh0aGlzLEUpLGp0KHRoaXMsaywiIikpO2dldCBzZWxlY3RlZEtleSgpe3JldHVybiB0aGlzLiNufXNldCBzZWxlY3RlZEtleSh6ZSl7dGhpcy4jbj16ZX0jbD0oanQodGhpcyxTKSxqdCh0aGlzLFAsIiIpKTtnZXQgZmlsdGVyVGV4dCgpe3JldHVybiB0aGlzLiNsfXNldCBmaWx0ZXJUZXh0KHplKXt0aGlzLiNsPXplfSNjPShqdCh0aGlzLFIpLGp0KHRoaXMsViwhMSkpO2dldCBzaG93Q3JlYXRlRGlhbG9nKCl7cmV0dXJuIHRoaXMuI2N9c2V0IHNob3dDcmVhdGVEaWFsb2coemUpe3RoaXMuI2M9emV9I2Q9KGp0KHRoaXMsVyksanQodGhpcyxCLCJmb2xkZXIiKSk7Z2V0IGNyZWF0ZURpYWxvZ1R5cGUoKXtyZXR1cm4gdGhpcy4jZH1zZXQgY3JlYXRlRGlhbG9nVHlwZSh6ZSl7dGhpcy4jZD16ZX0jdT0oanQodGhpcyxVKSxqdCh0aGlzLEYsIiIpKTtnZXQgY3JlYXRlRGlhbG9nUHJlZml4KCl7cmV0dXJuIHRoaXMuI3V9c2V0IGNyZWF0ZURpYWxvZ1ByZWZpeCh6ZSl7dGhpcy4jdT16ZX0jcD0oanQodGhpcyxqKSxqdCh0aGlzLGxlLCIiKSk7Z2V0IGNyZWF0ZURpYWxvZ05hbWUoKXtyZXR1cm4gdGhpcy4jcH1zZXQgY3JlYXRlRGlhbG9nTmFtZSh6ZSl7dGhpcy4jcD16ZX0jaD0oanQodGhpcyxRKSxqdCh0aGlzLHRlLCExKSk7Z2V0IHNob3dNb3ZlRGlhbG9nKCl7cmV0dXJuIHRoaXMuI2h9c2V0IHNob3dNb3ZlRGlhbG9nKHplKXt0aGlzLiNoPXplfSNmPShqdCh0aGlzLGVlKSxqdCh0aGlzLFgsbnVsbCkpO2dldCBtb3ZlU291cmNlKCl7cmV0dXJuIHRoaXMuI2Z9c2V0IG1vdmVTb3VyY2UoemUpe3RoaXMuI2Y9emV9I209KGp0KHRoaXMsWiksanQodGhpcyxxLCIiKSk7Z2V0IG1vdmVEZXN0aW5hdGlvbigpe3JldHVybiB0aGlzLiNtfXNldCBtb3ZlRGVzdGluYXRpb24oemUpe3RoaXMuI209emV9I2c9KGp0KHRoaXMsQSksanQodGhpcyxvZSwhMSkpO2dldCBtb3ZlSW5Qcm9ncmVzcygpe3JldHVybiB0aGlzLiNnfXNldCBtb3ZlSW5Qcm9ncmVzcyh6ZSl7dGhpcy4jZz16ZX0jYj0oanQodGhpcyxhZSksanQodGhpcyxSZSxudWxsKSk7Z2V0IG1vdmVFcnJvcigpe3JldHVybiB0aGlzLiNifXNldCBtb3ZlRXJyb3IoemUpe3RoaXMuI2I9emV9I3Y9KGp0KHRoaXMsQmUpLGp0KHRoaXMsRGUsITEpKTtnZXQgc2hvd01vdmVQaWNrZXJEaWFsb2coKXtyZXR1cm4gdGhpcy4jdn1zZXQgc2hvd01vdmVQaWNrZXJEaWFsb2coemUpe3RoaXMuI3Y9emV9I3g9KGp0KHRoaXMsX2UpLGp0KHRoaXMsdmUsbnVsbCkpO2dldCBtb3ZlUGlja2VyU291cmNlKCl7cmV0dXJuIHRoaXMuI3h9c2V0IG1vdmVQaWNrZXJTb3VyY2UoemUpe3RoaXMuI3g9emV9I3k9KGp0KHRoaXMsYmUpLGp0KHRoaXMsamUsIiIpKTtnZXQgbW92ZVBpY2tlckN1cnJlbnRQcmVmaXgoKXtyZXR1cm4gdGhpcy4jeX1zZXQgbW92ZVBpY2tlckN1cnJlbnRQcmVmaXgoemUpe3RoaXMuI3k9emV9I3c9KGp0KHRoaXMsV2UpLGp0KHRoaXMsTWUsW10pKTtnZXQgbW92ZVBpY2tlclByZWZpeGVzKCl7cmV0dXJuIHRoaXMuI3d9c2V0IG1vdmVQaWNrZXJQcmVmaXhlcyh6ZSl7dGhpcy4jdz16ZX0jaz0oanQodGhpcyxnZSksanQodGhpcyxjZSwhMSkpO2dldCBtb3ZlUGlja2VyTG9hZGluZygpe3JldHVybiB0aGlzLiNrfXNldCBtb3ZlUGlja2VyTG9hZGluZyh6ZSl7dGhpcy4jaz16ZX0jUz0oanQodGhpcyxkZSksanQodGhpcyxLZSwhMSkpO2dldCBzaG93UmVuYW1lRGlhbG9nKCl7cmV0dXJuIHRoaXMuI1N9c2V0IHNob3dSZW5hbWVEaWFsb2coemUpe3RoaXMuI1M9emV9I189KGp0KHRoaXMsWWUpLGp0KHRoaXMsVXQsbnVsbCkpO2dldCByZW5hbWVTb3VyY2UoKXtyZXR1cm4gdGhpcy4jX31zZXQgcmVuYW1lU291cmNlKHplKXt0aGlzLiNfPXplfSNNPShqdCh0aGlzLFp0KSxqdCh0aGlzLGV0LCIiKSk7Z2V0IHJlbmFtZU5hbWUoKXtyZXR1cm4gdGhpcy4jTX1zZXQgcmVuYW1lTmFtZSh6ZSl7dGhpcy4jTT16ZX0jej0oanQodGhpcyxidCksanQodGhpcyxlcywhMSkpO2dldCByZW5hbWVJblByb2dyZXNzKCl7cmV0dXJuIHRoaXMuI3p9c2V0IHJlbmFtZUluUHJvZ3Jlc3MoemUpe3RoaXMuI3o9emV9I0M9KGp0KHRoaXMscnMpLGp0KHRoaXMsbnMsbnVsbCkpO2dldCByZW5hbWVFcnJvcigpe3JldHVybiB0aGlzLiNDfXNldCByZW5hbWVFcnJvcih6ZSl7dGhpcy4jQz16ZX1zdGF0aWMgc3R5bGVzPVtoLmRlZmF1bHRTdHlsZXMscWUsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAua2V5cy1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5maWx0ZXItYmFyIHsKICAgICAgICBwYWRkaW5nOiAxMnB4OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMzMzMiKX07CiAgICAgIH0KCiAgICAgIC5maWx0ZXItaW5wdXQgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMDMpIiwicmdiYSgwLCAwLCAwLCAwLjMpIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZDRkNGQ4IiwiIzQ0NCIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZmZiIpfTsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIH0KCiAgICAgIC5maWx0ZXItaW5wdXQ6Zm9jdXMgewogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiI2ExYTFhYSIsIiM0MDQwNDAiKX07CiAgICAgIH0KCiAgICAgIC5maWx0ZXItaW5wdXQ6OnBsYWNlaG9sZGVyIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNhMWExYWEiLCIjNjY2Iil9OwogICAgICB9CgogICAgICAua2V5cy1saXN0IHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgIH0KCiAgICAgIHRhYmxlIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwogICAgICB9CgogICAgICB0aGVhZCB7CiAgICAgICAgcG9zaXRpb246IHN0aWNreTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmYWZhZmEiLCIjMWExYTFhIil9OwogICAgICAgIHotaW5kZXg6IDE7CiAgICAgIH0KCiAgICAgIHRoIHsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICAgIHBhZGRpbmc6IDEwcHggMTJweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjNjY2Iil9OwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzMzMyIpfTsKICAgICAgfQoKICAgICAgdGQgewogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMmEyYTNlIil9OwogICAgICB9CgogICAgICB0cjpob3ZlciB0ZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wMikiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDMpIil9OwogICAgICB9CgogICAgICB0ci5zZWxlY3RlZCB0ZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoNTksIDEzMCwgMjQ2LCAwLjA4KSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCkiKX07CiAgICAgIH0KCiAgICAgIC5rZXktY2VsbCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQoKICAgICAgLmtleS1pY29uIHsKICAgICAgICB3aWR0aDogMTZweDsKICAgICAgICBoZWlnaHQ6IDE2cHg7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC5mb2xkZXItaWNvbiB7CiAgICAgICAgY29sb3I6ICNmYmJmMjQ7CiAgICAgIH0KCiAgICAgIC5rZXktbmFtZSB7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICB9CgogICAgICAuc2l6ZS1jZWxsIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjODg4Iil9OwogICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7CiAgICAgIH0KCiAgICAgIC5lbXB0eS1zdGF0ZSB7CiAgICAgICAgcGFkZGluZzogMzJweDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjYTFhMWFhIiwiIzY2NiIpfTsKICAgICAgfQoKICAgICAgLmRpYWxvZy1vdmVybGF5IHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC43KTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgei1pbmRleDogMTAwMDsKICAgICAgfQoKICAgICAgLmRpYWxvZyB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMWUxZTFlIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICBtaW4td2lkdGg6IDQwMHB4OwogICAgICAgIGJveC1zaGFkb3c6IDAgMjBweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC41KTsKICAgICAgfQoKICAgICAgLmRpYWxvZy10aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmZmIil9OwogICAgICB9CgogICAgICAuZGlhbG9nLWxvY2F0aW9uIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiIzg4OCIpfTsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4OwogICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgICAgIH0KCiAgICAgIC5kaWFsb2ctaW5wdXQgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHBhZGRpbmc6IDEwcHggMTJweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMxNDE0MTQiKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNkNGQ0ZDgiLCIjMzMzIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmZmIil9OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLmRpYWxvZy1pbnB1dDpmb2N1cyB7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjYTFhMWFhIiwiI2UwZTBlMCIpfTsKICAgICAgfQoKICAgICAgLmRpYWxvZy1oaW50IHsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjYTFhMWFhIiwiIzY2NiIpfTsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICB9CgogICAgICAuZGlhbG9nLWFjdGlvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgIH0KCiAgICAgIC5kaWFsb2ctYnRuIHsKICAgICAgICBwYWRkaW5nOiA4cHggMTZweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4yczsKICAgICAgfQoKICAgICAgLmRpYWxvZy1idG4tY2FuY2VsIHsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2Q0ZDRkOCIsIiM0NDQiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2FhYSIpfTsKICAgICAgfQoKICAgICAgLmRpYWxvZy1idG4tY2FuY2VsOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjAzKSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZmZiIpfTsKICAgICAgfQoKICAgICAgLmRpYWxvZy1idG4tY3JlYXRlIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiM0MDQwNDAiKX07CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmZmYiKX07CiAgICAgIH0KCiAgICAgIC5kaWFsb2ctYnRuLWNyZWF0ZTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNkNGQ0ZDgiLCIjNTA1MDUwIil9OwogICAgICB9CgogICAgICAuZGlhbG9nLWJ0bi1jcmVhdGU6ZGlzYWJsZWQgewogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICB9CgogICAgICAvKiBNb3ZlIGRpYWxvZyBzdHlsZXMgKi8KICAgICAgLm1vdmUtc3VtbWFyeSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wMykiLCJyZ2JhKDAsIDAsIDAsIDAuMikiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgfQoKICAgICAgLm1vdmUtaXRlbSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgIH0KCiAgICAgIC5tb3ZlLWl0ZW06bGFzdC1jaGlsZCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgfQoKICAgICAgLm1vdmUtbGFiZWwgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiM4ODgiKX07CiAgICAgICAgbWluLXdpZHRoOiA0MHB4OwogICAgICB9CgogICAgICAubW92ZS1wYXRoIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzZjNmNDYiLCIjZTBlMGUwIil9OwogICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDsKICAgICAgfQoKICAgICAgLm1vdmUtZXJyb3IgewogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjM5LCA2OCwgNjgsIDAuMTUpOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjM5LCA2OCwgNjgsIDAuMyk7CiAgICAgICAgY29sb3I6ICNmODcxNzE7CiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgfQoKICAgICAgLyogTW92ZSBwaWNrZXIgZGlhbG9nIHN0eWxlcyAqLwogICAgICAubW92ZS1waWNrZXItZGlhbG9nIHsKICAgICAgICBtaW4td2lkdGg6IDQ1MHB4OwogICAgICAgIG1heC1oZWlnaHQ6IDUwMHB4OwogICAgICB9CgogICAgICAucGlja2VyLWJyZWFkY3J1bWIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDRweDsKICAgICAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjAzKSIsInJnYmEoMCwgMCwgMCwgMC4yKSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKICAgICAgfQoKICAgICAgLnBpY2tlci1jcnVtYiB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiIzg4OCIpfTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgLnBpY2tlci1jcnVtYjpob3ZlciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZmZiIpfTsKICAgICAgfQoKICAgICAgLnBpY2tlci1zZXBhcmF0b3IgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2Q0ZDRkOCIsIiM1NTUiKX07CiAgICAgIH0KCiAgICAgIC5waWNrZXItbGlzdCB7CiAgICAgICAgbWF4LWhlaWdodDogMjgwcHg7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMzMzMiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgICAgbWluLWhlaWdodDogMTAwcHg7CiAgICAgIH0KCiAgICAgIC5waWNrZXItaXRlbSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBjb2xvcjogI2ZiYmYyNDsKICAgICAgfQoKICAgICAgLnBpY2tlci1pdGVtOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjAzKSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSkiKX07CiAgICAgIH0KCiAgICAgIC5waWNrZXItaXRlbSAuaWNvbiB7CiAgICAgICAgd2lkdGg6IDE2cHg7CiAgICAgICAgaGVpZ2h0OiAxNnB4OwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAucGlja2VyLWl0ZW0gLm5hbWUgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CgogICAgICAucGlja2VyLWVtcHR5IHsKICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNhMWExYWEiLCIjNjY2Iil9OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgfQogICAgYF07YXN5bmMgY29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLGF3YWl0IHRoaXMubG9hZE9iamVjdHMoKX11cGRhdGVkKHplKXsoemUuaGFzKCJidWNrZXROYW1lIil8fHplLmhhcygiY3VycmVudFByZWZpeCIpfHx6ZS5oYXMoInJlZnJlc2hLZXkiKSkmJnRoaXMubG9hZE9iamVjdHMoKX1hc3luYyBsb2FkT2JqZWN0cygpe2lmKHRoaXMuZGF0YVByb3ZpZGVyKXt0aGlzLmxvYWRpbmc9ITA7dHJ5e2xldCB6ZT1hd2FpdCB0aGlzLmRhdGFQcm92aWRlci5saXN0T2JqZWN0cyh0aGlzLmJ1Y2tldE5hbWUsdGhpcy5jdXJyZW50UHJlZml4LCIvIik7dGhpcy5hbGxLZXlzPXplLm9iamVjdHMsdGhpcy5wcmVmaXhlcz16ZS5wcmVmaXhlc31jYXRjaCh6ZSl7Y29uc29sZS5lcnJvcigiRXJyb3IgbG9hZGluZyBvYmplY3RzOiIsemUpLHRoaXMuYWxsS2V5cz1bXSx0aGlzLnByZWZpeGVzPVtdfXRoaXMubG9hZGluZz0hMX19aGFuZGxlRmlsdGVySW5wdXQoemUpe3RoaXMuZmlsdGVyVGV4dD16ZS50YXJnZXQudmFsdWV9c2VsZWN0S2V5KHplLHhlKXt0aGlzLnNlbGVjdGVkS2V5PXplLHhlP3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoIm5hdmlnYXRlIix7ZGV0YWlsOntwcmVmaXg6emV9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSk6dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgia2V5LXNlbGVjdGVkIix7ZGV0YWlsOntrZXk6emV9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9Z2V0IGZpbHRlcmVkSXRlbXMoKXtsZXQgemU9dGhpcy5maWx0ZXJUZXh0LnRvTG93ZXJDYXNlKCkseGU9dGhpcy5wcmVmaXhlcy5maWx0ZXIoeHQ9PiF6ZXx8WWEoeHQpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoemUpKS5tYXAoeHQ9Pih7a2V5Onh0LGlzRm9sZGVyOiEwLHNpemU6dm9pZCAwfSkpLE5lPXRoaXMuYWxsS2V5cy5maWx0ZXIoeHQ9PiF6ZXx8WWEoeHQua2V5KS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHplKSkubWFwKHh0PT4oe2tleTp4dC5rZXksaXNGb2xkZXI6ITEsc2l6ZTp4dC5zaXplfSkpO3JldHVyblsuLi54ZSwuLi5OZV19aGFuZGxlSXRlbUNvbnRleHRNZW51KHplLHhlLE5lKXt0aGlzLmRhdGFQcm92aWRlciYmKHplLnByZXZlbnREZWZhdWx0KCksTmU/JGEub3BlbkNvbnRleHRNZW51V2l0aE9wdGlvbnMoemUsW3tuYW1lOiJPcGVuIixpY29uTmFtZToibHVjaWRlOmZvbGRlck9wZW4iLGFjdGlvbjppKGFzeW5jKCk9Pnt0aGlzLnNlbGVjdEtleSh4ZSwhMCl9LCJhY3Rpb24iKX0se25hbWU6IkNvcHkgUGF0aCIsaWNvbk5hbWU6Imx1Y2lkZTpjb3B5IixhY3Rpb246aShhc3luYygpPT57YXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoeGUpfSwiYWN0aW9uIil9LHtuYW1lOiJSZW5hbWUiLGljb25OYW1lOiJsdWNpZGU6cGVuY2lsIixhY3Rpb246aShhc3luYygpPT50aGlzLm9wZW5SZW5hbWVEaWFsb2coeGUsITApLCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJNb3ZlIHRvLi4uIixpY29uTmFtZToibHVjaWRlOmZvbGRlcklucHV0IixhY3Rpb246aShhc3luYygpPT50aGlzLm9wZW5Nb3ZlUGlja2VyRGlhbG9nKHhlLCEwKSwiYWN0aW9uIil9LHtkaXZpZGVyOiEwfSx7bmFtZToiTmV3IEZvbGRlciBJbnNpZGUiLGljb25OYW1lOiJsdWNpZGU6Zm9sZGVyUGx1cyIsYWN0aW9uOmkoYXN5bmMoKT0+dGhpcy5vcGVuQ3JlYXRlRGlhbG9nKCJmb2xkZXIiLHhlKSwiYWN0aW9uIil9LHtuYW1lOiJOZXcgRmlsZSBJbnNpZGUiLGljb25OYW1lOiJsdWNpZGU6ZmlsZVBsdXMiLGFjdGlvbjppKGFzeW5jKCk9PnRoaXMub3BlbkNyZWF0ZURpYWxvZygiZmlsZSIseGUpLCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJEZWxldGUgRm9sZGVyIixpY29uTmFtZToibHVjaWRlOnRyYXNoMiIsYWN0aW9uOmkoYXN5bmMoKT0+e2NvbmZpcm0oYERlbGV0ZSBmb2xkZXIgIiR7WWEoeGUpfSIgYW5kIGFsbCBpdHMgY29udGVudHM/YCkmJmF3YWl0IHRoaXMuZGF0YVByb3ZpZGVyLmRlbGV0ZVByZWZpeCh0aGlzLmJ1Y2tldE5hbWUseGUpJiZhd2FpdCB0aGlzLmxvYWRPYmplY3RzKCl9LCJhY3Rpb24iKX1dKTokYS5vcGVuQ29udGV4dE1lbnVXaXRoT3B0aW9ucyh6ZSxbe25hbWU6IlByZXZpZXciLGljb25OYW1lOiJsdWNpZGU6ZXllIixhY3Rpb246aShhc3luYygpPT57dGhpcy5zZWxlY3RLZXkoeGUsITEpfSwiYWN0aW9uIil9LHtuYW1lOiJEb3dubG9hZCIsaWNvbk5hbWU6Imx1Y2lkZTpkb3dubG9hZCIsYWN0aW9uOmkoYXN5bmMoKT0+e2xldCB4dD1hd2FpdCB0aGlzLmRhdGFQcm92aWRlci5nZXRPYmplY3RVcmwodGhpcy5idWNrZXROYW1lLHhlKSxNYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7TWEuaHJlZj14dCxNYS5kb3dubG9hZD1ZYSh4ZSksTWEuY2xpY2soKX0sImFjdGlvbiIpfSx7bmFtZToiQ29weSBQYXRoIixpY29uTmFtZToibHVjaWRlOmNvcHkiLGFjdGlvbjppKGFzeW5jKCk9Pnthd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh4ZSl9LCJhY3Rpb24iKX0se25hbWU6IlJlbmFtZSIsaWNvbk5hbWU6Imx1Y2lkZTpwZW5jaWwiLGFjdGlvbjppKGFzeW5jKCk9PnRoaXMub3BlblJlbmFtZURpYWxvZyh4ZSwhMSksImFjdGlvbiIpfSx7ZGl2aWRlcjohMH0se25hbWU6Ik1vdmUgdG8uLi4iLGljb25OYW1lOiJsdWNpZGU6Zm9sZGVySW5wdXQiLGFjdGlvbjppKGFzeW5jKCk9PnRoaXMub3Blbk1vdmVQaWNrZXJEaWFsb2coeGUsITEpLCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJEZWxldGUiLGljb25OYW1lOiJsdWNpZGU6dHJhc2gyIixhY3Rpb246aShhc3luYygpPT57Y29uZmlybShgRGVsZXRlIGZpbGUgIiR7WWEoeGUpfSI/YCkmJmF3YWl0IHRoaXMuZGF0YVByb3ZpZGVyLmRlbGV0ZU9iamVjdCh0aGlzLmJ1Y2tldE5hbWUseGUpJiZhd2FpdCB0aGlzLmxvYWRPYmplY3RzKCl9LCJhY3Rpb24iKX1dKSl9aGFuZGxlRW1wdHlTcGFjZUNvbnRleHRNZW51KHplKXt6ZS50YXJnZXQuY2xvc2VzdCgidHIiKXx8KHplLnByZXZlbnREZWZhdWx0KCksJGEub3BlbkNvbnRleHRNZW51V2l0aE9wdGlvbnMoemUsW3tuYW1lOiJOZXcgRm9sZGVyIixpY29uTmFtZToibHVjaWRlOmZvbGRlclBsdXMiLGFjdGlvbjppKGFzeW5jKCk9PnRoaXMub3BlbkNyZWF0ZURpYWxvZygiZm9sZGVyIix0aGlzLmN1cnJlbnRQcmVmaXgpLCJhY3Rpb24iKX0se25hbWU6Ik5ldyBGaWxlIixpY29uTmFtZToibHVjaWRlOmZpbGVQbHVzIixhY3Rpb246aShhc3luYygpPT50aGlzLm9wZW5DcmVhdGVEaWFsb2coImZpbGUiLHRoaXMuY3VycmVudFByZWZpeCksImFjdGlvbiIpfV0pKX1vcGVuQ3JlYXRlRGlhbG9nKHplLHhlKXt0aGlzLmNyZWF0ZURpYWxvZ1R5cGU9emUsdGhpcy5jcmVhdGVEaWFsb2dQcmVmaXg9eGUsdGhpcy5jcmVhdGVEaWFsb2dOYW1lPSIiLHRoaXMuc2hvd0NyZWF0ZURpYWxvZz0hMH1hc3luYyBoYW5kbGVDcmVhdGUoKXtpZighdGhpcy5jcmVhdGVEaWFsb2dOYW1lLnRyaW0oKXx8IXRoaXMuZGF0YVByb3ZpZGVyKXJldHVybjtsZXQgemU9dGhpcy5jcmVhdGVEaWFsb2dOYW1lLnRyaW0oKSx4ZTt0aGlzLmNyZWF0ZURpYWxvZ1R5cGU9PT0iZm9sZGVyIj94ZT10aGlzLmNyZWF0ZURpYWxvZ1ByZWZpeCt6ZSsiLy5rZWVwIjp4ZT10aGlzLmNyZWF0ZURpYWxvZ1ByZWZpeCt6ZTtsZXQgTmU9emUuc3BsaXQoIi4iKS5wb3AoKT8udG9Mb3dlckNhc2UoKXx8IiIseHQ9dGhpcy5jcmVhdGVEaWFsb2dUeXBlPT09ImZpbGUiP3I3KE5lKToiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIixNYT10aGlzLmNyZWF0ZURpYWxvZ1R5cGU9PT0iZmlsZSI/WFEoTmUpOiIiO2F3YWl0IHRoaXMuZGF0YVByb3ZpZGVyLnB1dE9iamVjdCh0aGlzLmJ1Y2tldE5hbWUseGUsYnRvYShNYSkseHQpJiYodGhpcy5zaG93Q3JlYXRlRGlhbG9nPSExLGF3YWl0IHRoaXMubG9hZE9iamVjdHMoKSl9cmVuZGVyQ3JlYXRlRGlhbG9nKCl7aWYoIXRoaXMuc2hvd0NyZWF0ZURpYWxvZylyZXR1cm4iIjtsZXQgemU9dGhpcy5jcmVhdGVEaWFsb2dUeXBlPT09ImZvbGRlciIseGU9emU/IkNyZWF0ZSBOZXcgRm9sZGVyIjoiQ3JlYXRlIE5ldyBGaWxlIixOZT16ZT8iZm9sZGVyLW5hbWUgb3IgcGF0aC90by9mb2xkZXIiOiJmaWxlbmFtZS50eHQgb3IgcGF0aC90by9maWxlLnR4dCI7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZy1vdmVybGF5IiBAY2xpY2s9JHsoKT0+dGhpcy5zaG93Q3JlYXRlRGlhbG9nPSExfT4KICAgICAgICA8ZGl2IGNsYXNzPSJkaWFsb2ciIEBjbGljaz0ke3h0PT54dC5zdG9wUHJvcGFnYXRpb24oKX0+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkaWFsb2ctdGl0bGUiPiR7eGV9PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkaWFsb2ctbG9jYXRpb24iPgogICAgICAgICAgICBMb2NhdGlvbjogJHt0aGlzLmJ1Y2tldE5hbWV9LyR7dGhpcy5jcmVhdGVEaWFsb2dQcmVmaXh9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxpbnB1dAogICAgICAgICAgICB0eXBlPSJ0ZXh0IgogICAgICAgICAgICBjbGFzcz0iZGlhbG9nLWlucHV0IgogICAgICAgICAgICBwbGFjZWhvbGRlcj0ke05lfQogICAgICAgICAgICAudmFsdWU9JHt0aGlzLmNyZWF0ZURpYWxvZ05hbWV9CiAgICAgICAgICAgIEBpbnB1dD0ke3h0PT50aGlzLmNyZWF0ZURpYWxvZ05hbWU9eHQudGFyZ2V0LnZhbHVlfQogICAgICAgICAgICBAa2V5ZG93bj0ke3h0PT54dC5rZXk9PT0iRW50ZXIiJiZ0aGlzLmhhbmRsZUNyZWF0ZSgpfQogICAgICAgICAgLz4KICAgICAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZy1oaW50Ij4KICAgICAgICAgICAgVXNlICIvIiB0byBjcmVhdGUgbmVzdGVkICR7emU/ImZvbGRlcnMiOiJwYXRoIn0gKGUuZy4sICR7emU/InBhcmVudC9jaGlsZCI6ImZvbGRlci9maWxlLnR4dCJ9KQogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkaWFsb2ctYWN0aW9ucyI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImRpYWxvZy1idG4gZGlhbG9nLWJ0bi1jYW5jZWwiIEBjbGljaz0keygpPT50aGlzLnNob3dDcmVhdGVEaWFsb2c9ITF9PgogICAgICAgICAgICAgIENhbmNlbAogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgPGJ1dHRvbgogICAgICAgICAgICAgIGNsYXNzPSJkaWFsb2ctYnRuIGRpYWxvZy1idG4tY3JlYXRlIgogICAgICAgICAgICAgID9kaXNhYmxlZD0keyF0aGlzLmNyZWF0ZURpYWxvZ05hbWUudHJpbSgpfQogICAgICAgICAgICAgIEBjbGljaz0keygpPT50aGlzLmhhbmRsZUNyZWF0ZSgpfQogICAgICAgICAgICA+CiAgICAgICAgICAgICAgQ3JlYXRlCiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1hc3luYyBvcGVuTW92ZVBpY2tlckRpYWxvZyh6ZSx4ZSl7dGhpcy5tb3ZlUGlja2VyU291cmNlPXtrZXk6emUsaXNGb2xkZXI6eGV9LHRoaXMubW92ZVBpY2tlckN1cnJlbnRQcmVmaXg9IiIsdGhpcy5zaG93TW92ZVBpY2tlckRpYWxvZz0hMCxhd2FpdCB0aGlzLmxvYWRNb3ZlUGlja2VyUHJlZml4ZXMoIiIpfWFzeW5jIG5hdmlnYXRlTW92ZVBpY2tlcih6ZSl7dGhpcy5tb3ZlUGlja2VyQ3VycmVudFByZWZpeD16ZSxhd2FpdCB0aGlzLmxvYWRNb3ZlUGlja2VyUHJlZml4ZXMoemUpfWFzeW5jIGxvYWRNb3ZlUGlja2VyUHJlZml4ZXMoemUpe2lmKHRoaXMuZGF0YVByb3ZpZGVyKXt0aGlzLm1vdmVQaWNrZXJMb2FkaW5nPSEwO3RyeXtsZXQgeGU9YXdhaXQgdGhpcy5kYXRhUHJvdmlkZXIubGlzdE9iamVjdHModGhpcy5idWNrZXROYW1lLHplLCIvIik7dGhpcy5tb3ZlUGlja2VyUHJlZml4ZXM9eGUucHJlZml4ZXN9Y2F0Y2h7dGhpcy5tb3ZlUGlja2VyUHJlZml4ZXM9W119dGhpcy5tb3ZlUGlja2VyTG9hZGluZz0hMX19c2VsZWN0TW92ZURlc3RpbmF0aW9uKHplKXt0aGlzLm1vdmVQaWNrZXJTb3VyY2UmJih0aGlzLmNsb3NlTW92ZVBpY2tlckRpYWxvZygpLHRoaXMuaW5pdGlhdGVNb3ZlKHRoaXMubW92ZVBpY2tlclNvdXJjZS5rZXksdGhpcy5tb3ZlUGlja2VyU291cmNlLmlzRm9sZGVyLHplKSl9Y2xvc2VNb3ZlUGlja2VyRGlhbG9nKCl7dGhpcy5zaG93TW92ZVBpY2tlckRpYWxvZz0hMSx0aGlzLm1vdmVQaWNrZXJTb3VyY2U9bnVsbCx0aGlzLm1vdmVQaWNrZXJDdXJyZW50UHJlZml4PSIiLHRoaXMubW92ZVBpY2tlclByZWZpeGVzPVtdfWluaXRpYXRlTW92ZSh6ZSx4ZSxOZSl7bGV0IHh0PVpRKHplLE5lKTtpZigheHQudmFsaWQpe3RoaXMubW92ZVNvdXJjZT17a2V5OnplLGlzRm9sZGVyOnhlfSx0aGlzLm1vdmVEZXN0aW5hdGlvbj1OZSx0aGlzLm1vdmVFcnJvcj14dC5lcnJvcix0aGlzLnNob3dNb3ZlRGlhbG9nPSEwO3JldHVybn10aGlzLm1vdmVTb3VyY2U9e2tleTp6ZSxpc0ZvbGRlcjp4ZX0sdGhpcy5tb3ZlRGVzdGluYXRpb249TmUsdGhpcy5tb3ZlRXJyb3I9bnVsbCx0aGlzLnNob3dNb3ZlRGlhbG9nPSEwfWFzeW5jIGV4ZWN1dGVNb3ZlKCl7aWYoISghdGhpcy5tb3ZlU291cmNlfHwhdGhpcy5kYXRhUHJvdmlkZXIpKXt0aGlzLm1vdmVJblByb2dyZXNzPSEwO3RyeXtsZXQgemU9WWEodGhpcy5tb3ZlU291cmNlLmtleSkseGU9dGhpcy5tb3ZlRGVzdGluYXRpb24remUsTmU7dGhpcy5tb3ZlU291cmNlLmlzRm9sZGVyP05lPWF3YWl0IHRoaXMuZGF0YVByb3ZpZGVyLm1vdmVQcmVmaXgodGhpcy5idWNrZXROYW1lLHRoaXMubW92ZVNvdXJjZS5rZXkseGUpOk5lPWF3YWl0IHRoaXMuZGF0YVByb3ZpZGVyLm1vdmVPYmplY3QodGhpcy5idWNrZXROYW1lLHRoaXMubW92ZVNvdXJjZS5rZXkseGUpLE5lLnN1Y2Nlc3M/KHRoaXMuY2xvc2VNb3ZlRGlhbG9nKCksYXdhaXQgdGhpcy5sb2FkT2JqZWN0cygpKTp0aGlzLm1vdmVFcnJvcj1OZS5lcnJvcnx8Ik1vdmUgb3BlcmF0aW9uIGZhaWxlZCJ9Y2F0Y2goemUpe3RoaXMubW92ZUVycm9yPWBFcnJvcjogJHt6ZX1gfXRoaXMubW92ZUluUHJvZ3Jlc3M9ITF9fWNsb3NlTW92ZURpYWxvZygpe3RoaXMuc2hvd01vdmVEaWFsb2c9ITEsdGhpcy5tb3ZlU291cmNlPW51bGwsdGhpcy5tb3ZlRGVzdGluYXRpb249IiIsdGhpcy5tb3ZlRXJyb3I9bnVsbCx0aGlzLm1vdmVJblByb2dyZXNzPSExfW9wZW5SZW5hbWVEaWFsb2coemUseGUpe3RoaXMucmVuYW1lU291cmNlPXtrZXk6emUsaXNGb2xkZXI6eGV9LHRoaXMucmVuYW1lTmFtZT1ZYSh6ZSksdGhpcy5yZW5hbWVFcnJvcj1udWxsLHRoaXMuc2hvd1JlbmFtZURpYWxvZz0hMCx0aGlzLnVwZGF0ZUNvbXBsZXRlLnRoZW4oKCk9PntsZXQgTmU9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIucmVuYW1lLWRpYWxvZy1pbnB1dCIpO2lmKE5lKWlmKE5lLmZvY3VzKCkseGUpTmUuc2VsZWN0KCk7ZWxzZXtsZXQgeHQ9dGhpcy5yZW5hbWVOYW1lLmxhc3RJbmRleE9mKCIuIik7eHQ+MD9OZS5zZXRTZWxlY3Rpb25SYW5nZSgwLHh0KTpOZS5zZWxlY3QoKX19KX1hc3luYyBleGVjdXRlUmVuYW1lKCl7aWYoIXRoaXMucmVuYW1lU291cmNlfHwhdGhpcy5yZW5hbWVOYW1lLnRyaW0oKXx8IXRoaXMuZGF0YVByb3ZpZGVyKXJldHVybjtsZXQgemU9dGhpcy5yZW5hbWVOYW1lLnRyaW0oKSx4ZT1ZYSh0aGlzLnJlbmFtZVNvdXJjZS5rZXkpO2lmKHplPT09eGUpe3RoaXMucmVuYW1lRXJyb3I9Ik5hbWUgaXMgdGhlIHNhbWUgYXMgY3VycmVudCI7cmV0dXJufWlmKCF6ZSl7dGhpcy5yZW5hbWVFcnJvcj0iTmFtZSBjYW5ub3QgYmUgZW1wdHkiO3JldHVybn1pZih6ZS5pbmNsdWRlcygiLyIpKXt0aGlzLnJlbmFtZUVycm9yPSdOYW1lIGNhbm5vdCBjb250YWluICIvIic7cmV0dXJufXRoaXMucmVuYW1lSW5Qcm9ncmVzcz0hMCx0aGlzLnJlbmFtZUVycm9yPW51bGw7dHJ5e2xldCB4dD1KZCh0aGlzLnJlbmFtZVNvdXJjZS5rZXkpK3plKyh0aGlzLnJlbmFtZVNvdXJjZS5pc0ZvbGRlcj8iLyI6IiIpLE1hO3RoaXMucmVuYW1lU291cmNlLmlzRm9sZGVyP01hPWF3YWl0IHRoaXMuZGF0YVByb3ZpZGVyLm1vdmVQcmVmaXgodGhpcy5idWNrZXROYW1lLHRoaXMucmVuYW1lU291cmNlLmtleSx4dCk6TWE9YXdhaXQgdGhpcy5kYXRhUHJvdmlkZXIubW92ZU9iamVjdCh0aGlzLmJ1Y2tldE5hbWUsdGhpcy5yZW5hbWVTb3VyY2Uua2V5LHh0KSxNYS5zdWNjZXNzPyh0aGlzLmNsb3NlUmVuYW1lRGlhbG9nKCksYXdhaXQgdGhpcy5sb2FkT2JqZWN0cygpKTp0aGlzLnJlbmFtZUVycm9yPU1hLmVycm9yfHwiUmVuYW1lIGZhaWxlZCJ9Y2F0Y2goTmUpe3RoaXMucmVuYW1lRXJyb3I9YEVycm9yOiAke05lfWB9dGhpcy5yZW5hbWVJblByb2dyZXNzPSExfWNsb3NlUmVuYW1lRGlhbG9nKCl7dGhpcy5zaG93UmVuYW1lRGlhbG9nPSExLHRoaXMucmVuYW1lU291cmNlPW51bGwsdGhpcy5yZW5hbWVOYW1lPSIiLHRoaXMucmVuYW1lRXJyb3I9bnVsbCx0aGlzLnJlbmFtZUluUHJvZ3Jlc3M9ITF9cmVuZGVyUmVuYW1lRGlhbG9nKCl7aWYoIXRoaXMuc2hvd1JlbmFtZURpYWxvZ3x8IXRoaXMucmVuYW1lU291cmNlKXJldHVybiIiO2xldCB6ZT10aGlzLnJlbmFtZVNvdXJjZS5pc0ZvbGRlcjtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iZGlhbG9nLW92ZXJsYXkiIEBjbGljaz0keygpPT50aGlzLmNsb3NlUmVuYW1lRGlhbG9nKCl9PgogICAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZyIgQGNsaWNrPSR7TmU9Pk5lLnN0b3BQcm9wYWdhdGlvbigpfT4KICAgICAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZy10aXRsZSI+JHt6ZT8iUmVuYW1lIEZvbGRlciI6IlJlbmFtZSBGaWxlIn08L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZy1sb2NhdGlvbiI+CiAgICAgICAgICAgIExvY2F0aW9uOiAke3RoaXMuYnVja2V0TmFtZX0vJHtKZCh0aGlzLnJlbmFtZVNvdXJjZS5rZXkpfQogICAgICAgICAgPC9kaXY+CiAgICAgICAgICAke3RoaXMucmVuYW1lRXJyb3I/d2A8ZGl2IGNsYXNzPSJtb3ZlLWVycm9yIj4ke3RoaXMucmVuYW1lRXJyb3J9PC9kaXY+YDoiIn0KICAgICAgICAgIDxpbnB1dAogICAgICAgICAgICB0eXBlPSJ0ZXh0IgogICAgICAgICAgICBjbGFzcz0iZGlhbG9nLWlucHV0IHJlbmFtZS1kaWFsb2ctaW5wdXQiCiAgICAgICAgICAgIHBsYWNlaG9sZGVyPSR7emU/ImZvbGRlci1uYW1lIjoiZmlsZW5hbWUuZXh0In0KICAgICAgICAgICAgLnZhbHVlPSR7dGhpcy5yZW5hbWVOYW1lfQogICAgICAgICAgICBAaW5wdXQ9JHtOZT0+e3RoaXMucmVuYW1lTmFtZT1OZS50YXJnZXQudmFsdWUsdGhpcy5yZW5hbWVFcnJvcj1udWxsfX0KICAgICAgICAgICAgQGtleWRvd249JHtOZT0+e05lLmtleT09PSJFbnRlciImJnRoaXMuZXhlY3V0ZVJlbmFtZSgpLE5lLmtleT09PSJFc2NhcGUiJiZ0aGlzLmNsb3NlUmVuYW1lRGlhbG9nKCl9fQogICAgICAgICAgLz4KICAgICAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZy1hY3Rpb25zIj4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZGlhbG9nLWJ0biBkaWFsb2ctYnRuLWNhbmNlbCIKICAgICAgICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy5jbG9zZVJlbmFtZURpYWxvZygpfQogICAgICAgICAgICAgICAgICAgID9kaXNhYmxlZD0ke3RoaXMucmVuYW1lSW5Qcm9ncmVzc30+Q2FuY2VsPC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImRpYWxvZy1idG4gZGlhbG9nLWJ0bi1jcmVhdGUiCiAgICAgICAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMuZXhlY3V0ZVJlbmFtZSgpfQogICAgICAgICAgICAgICAgICAgID9kaXNhYmxlZD0ke3RoaXMucmVuYW1lSW5Qcm9ncmVzc3x8IXRoaXMucmVuYW1lTmFtZS50cmltKCl9PgogICAgICAgICAgICAgICR7dGhpcy5yZW5hbWVJblByb2dyZXNzPyJSZW5hbWluZy4uLiI6IlJlbmFtZSJ9CiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJNb3ZlRGlhbG9nKCl7aWYoIXRoaXMuc2hvd01vdmVEaWFsb2d8fCF0aGlzLm1vdmVTb3VyY2UpcmV0dXJuIiI7bGV0IHplPVlhKHRoaXMubW92ZVNvdXJjZS5rZXkpO3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJkaWFsb2ctb3ZlcmxheSIgQGNsaWNrPSR7KCk9PnRoaXMuY2xvc2VNb3ZlRGlhbG9nKCl9PgogICAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZyIgQGNsaWNrPSR7eGU9PnhlLnN0b3BQcm9wYWdhdGlvbigpfT4KICAgICAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZy10aXRsZSI+TW92ZSAke3RoaXMubW92ZVNvdXJjZS5pc0ZvbGRlcj8iRm9sZGVyIjoiRmlsZSJ9PC9kaXY+CgogICAgICAgICAgJHt0aGlzLm1vdmVFcnJvcj93YAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb3ZlLWVycm9yIj4ke3RoaXMubW92ZUVycm9yfTwvZGl2PgogICAgICAgICAgYDp3YAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb3ZlLXN1bW1hcnkiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vdmUtaXRlbSI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibW92ZS1sYWJlbCI+RnJvbTo8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibW92ZS1wYXRoIj4ke3RoaXMubW92ZVNvdXJjZS5rZXl9PC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vdmUtaXRlbSI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibW92ZS1sYWJlbCI+VG86PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1vdmUtcGF0aCI+JHt0aGlzLm1vdmVEZXN0aW5hdGlvbn0ke3plfTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgfQoKICAgICAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZy1hY3Rpb25zIj4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZGlhbG9nLWJ0biBkaWFsb2ctYnRuLWNhbmNlbCIKICAgICAgICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy5jbG9zZU1vdmVEaWFsb2coKX0KICAgICAgICAgICAgICAgICAgICA/ZGlzYWJsZWQ9JHt0aGlzLm1vdmVJblByb2dyZXNzfT4KICAgICAgICAgICAgICBDYW5jZWwKICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICR7dGhpcy5tb3ZlRXJyb3I/IiI6d2AKICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJkaWFsb2ctYnRuIGRpYWxvZy1idG4tY3JlYXRlIgogICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMuZXhlY3V0ZU1vdmUoKX0KICAgICAgICAgICAgICAgICAgICAgID9kaXNhYmxlZD0ke3RoaXMubW92ZUluUHJvZ3Jlc3N9PgogICAgICAgICAgICAgICAgJHt0aGlzLm1vdmVJblByb2dyZXNzPyJNb3ZpbmcuLi4iOiJNb3ZlIn0KICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgYH0KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyTW92ZVBpY2tlckRpYWxvZygpe2lmKCF0aGlzLnNob3dNb3ZlUGlja2VyRGlhbG9nfHwhdGhpcy5tb3ZlUGlja2VyU291cmNlKXJldHVybiIiO2xldCB6ZT1ZYSh0aGlzLm1vdmVQaWNrZXJTb3VyY2Uua2V5KSx4ZT1KZCh0aGlzLm1vdmVQaWNrZXJTb3VyY2Uua2V5KTtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iZGlhbG9nLW92ZXJsYXkiIEBjbGljaz0keygpPT50aGlzLmNsb3NlTW92ZVBpY2tlckRpYWxvZygpfT4KICAgICAgICA8ZGl2IGNsYXNzPSJkaWFsb2cgbW92ZS1waWNrZXItZGlhbG9nIiBAY2xpY2s9JHtOZT0+TmUuc3RvcFByb3BhZ2F0aW9uKCl9PgogICAgICAgICAgPGRpdiBjbGFzcz0iZGlhbG9nLXRpdGxlIj5Nb3ZlICIke3plfSIgdG8uLi48L2Rpdj4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJwaWNrZXItYnJlYWRjcnVtYiI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwaWNrZXItY3J1bWIiIEBjbGljaz0keygpPT50aGlzLm5hdmlnYXRlTW92ZVBpY2tlcigiIil9PgogICAgICAgICAgICAgICR7dGhpcy5idWNrZXROYW1lfQogICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICR7engodGhpcy5tb3ZlUGlja2VyQ3VycmVudFByZWZpeCkubWFwKE5lPT53YAogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwaWNrZXItc2VwYXJhdG9yIj4vPC9zcGFuPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwaWNrZXItY3J1bWIiIEBjbGljaz0keygpPT50aGlzLm5hdmlnYXRlTW92ZVBpY2tlcihOZSl9PgogICAgICAgICAgICAgICAgJHtZYShOZSl9CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICBgKX0KICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgIDxkaXYgY2xhc3M9InBpY2tlci1saXN0Ij4KICAgICAgICAgICAgJHt0aGlzLm1vdmVQaWNrZXJMb2FkaW5nP3dgPGRpdiBjbGFzcz0icGlja2VyLWVtcHR5Ij5Mb2FkaW5nLi4uPC9kaXY+YDoiIn0KICAgICAgICAgICAgJHshdGhpcy5tb3ZlUGlja2VyTG9hZGluZyYmdGhpcy5tb3ZlUGlja2VyUHJlZml4ZXMuZmlsdGVyKE5lPT5OZSE9PXRoaXMubW92ZVBpY2tlclNvdXJjZS5rZXkpLmxlbmd0aD09PTA/d2AKICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwaWNrZXItZW1wdHkiPk5vIHN1YmZvbGRlcnM8L2Rpdj4KICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICAgJHt0aGlzLm1vdmVQaWNrZXJQcmVmaXhlcy5maWx0ZXIoTmU9Pk5lIT09dGhpcy5tb3ZlUGlja2VyU291cmNlLmtleSkubWFwKE5lPT53YAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGlja2VyLWl0ZW0iCiAgICAgICAgICAgICAgICAgICAgIEBjbGljaz0keygpPT50aGlzLm5hdmlnYXRlTW92ZVBpY2tlcihOZSl9CiAgICAgICAgICAgICAgICAgICAgIEBkYmxjbGljaz0keygpPT50aGlzLnNlbGVjdE1vdmVEZXN0aW5hdGlvbihOZSl9PgogICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJpY29uIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9ImN1cnJlbnRDb2xvciI+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTIyIDE5YTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmg1bDIgM2g5YTIgMiAwIDAgMSAyIDJ6Ii8+CiAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibmFtZSI+JHtZYShOZSl9PC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgYCl9CiAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJkaWFsb2ctYWN0aW9ucyI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImRpYWxvZy1idG4gZGlhbG9nLWJ0bi1jYW5jZWwiIEBjbGljaz0keygpPT50aGlzLmNsb3NlTW92ZVBpY2tlckRpYWxvZygpfT4KICAgICAgICAgICAgICBDYW5jZWwKICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImRpYWxvZy1idG4gZGlhbG9nLWJ0bi1jcmVhdGUiCiAgICAgICAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMuc2VsZWN0TW92ZURlc3RpbmF0aW9uKHRoaXMubW92ZVBpY2tlckN1cnJlbnRQcmVmaXgpfQogICAgICAgICAgICAgICAgICAgID9kaXNhYmxlZD0ke3RoaXMubW92ZVBpY2tlckN1cnJlbnRQcmVmaXg9PT14ZX0+CiAgICAgICAgICAgICAgTW92ZSBIZXJlCiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0ia2V5cy1jb250YWluZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImZpbHRlci1iYXIiPgogICAgICAgICAgPGlucHV0CiAgICAgICAgICAgIHR5cGU9InRleHQiCiAgICAgICAgICAgIGNsYXNzPSJmaWx0ZXItaW5wdXQiCiAgICAgICAgICAgIHBsYWNlaG9sZGVyPSJGaWx0ZXIgZmlsZXMuLi4iCiAgICAgICAgICAgIC52YWx1ZT0ke3RoaXMuZmlsdGVyVGV4dH0KICAgICAgICAgICAgQGlucHV0PSR7dGhpcy5oYW5kbGVGaWx0ZXJJbnB1dH0KICAgICAgICAgIC8+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9ImtleXMtbGlzdCIgQGNvbnRleHRtZW51PSR7emU9PnRoaXMuaGFuZGxlRW1wdHlTcGFjZUNvbnRleHRNZW51KHplKX0+CiAgICAgICAgICAke3RoaXMubG9hZGluZz93YDxkaXYgY2xhc3M9ImVtcHR5LXN0YXRlIj5Mb2FkaW5nLi4uPC9kaXY+YDp0aGlzLmZpbHRlcmVkSXRlbXMubGVuZ3RoPT09MD93YDxkaXYgY2xhc3M9ImVtcHR5LXN0YXRlIj5ObyBvYmplY3RzIGZvdW5kPC9kaXY+YDp3YAogICAgICAgICAgICAgICAgICA8dGFibGU+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+TmFtZTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6IDEwMHB4OyI+U2l6ZTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgICAgICAgJHt0aGlzLmZpbHRlcmVkSXRlbXMubWFwKHplPT53YAogICAgICAgICAgICAgICAgICAgICAgICAgIDx0cgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9IiR7dGhpcy5zZWxlY3RlZEtleT09PXplLmtleT8ic2VsZWN0ZWQiOiIifSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz0keygpPT50aGlzLnNlbGVjdEtleSh6ZS5rZXksemUuaXNGb2xkZXIpfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNvbnRleHRtZW51PSR7eGU9PnRoaXMuaGFuZGxlSXRlbUNvbnRleHRNZW51KHhlLHplLmtleSx6ZS5pc0ZvbGRlcil9CiAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJrZXktY2VsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHt6ZS5pc0ZvbGRlcj93YAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9ImtleS1pY29uIGZvbGRlci1pY29uIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9ImN1cnJlbnRDb2xvciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjIgMTlhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDVsMiAzaDlhMiAyIDAgMCAxIDIgMnoiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGA6d2AKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJrZXktaWNvbiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNCAySDZhMiAyIDAgMCAwLTIgMnYxNmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWOHoiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImtleS1uYW1lIj4ke1lhKHplLmtleSl9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InNpemUtY2VsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7emUuaXNGb2xkZXI/Ii0iOllRKHplLnNpemUpfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICBgKX0KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgYH0KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgICR7dGhpcy5yZW5kZXJDcmVhdGVEaWFsb2coKX0KICAgICAgJHt0aGlzLnJlbmRlck1vdmVEaWFsb2coKX0KICAgICAgJHt0aGlzLnJlbmRlck1vdmVQaWNrZXJEaWFsb2coKX0KICAgICAgJHt0aGlzLnJlbmRlclJlbmFtZURpYWxvZygpfQogICAgYH1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksanQodGhpcyx0aSl9c3RhdGlje2p0KGEsdCl9fTtyZXR1cm4gYWk9YX0pKCl9KTt2YXIgRWwsUXMsVGVzLGxsdD1nKCgpPT57cGUoKTtodCgpO1FRKCk7RWw9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LFFzPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxUZXM9KCgpPT57bGV0IHM9W25lKCJkZWVzLXN0b3JhZ2UtcHJldmlldyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdLEgsaz1bXSxTPVtdLEksUD1bXSxSPVtdLEssVj1bXSxXPVtdLG1lLEI9W10sVT1bXSxoZSxGPVtdLGo9W10sdWUsbGU9W10sUT1bXTt2YXIgaWU9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNTdG9yYWdlUHJldmlldyIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCB0ZT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOk9iamVjdH0pXSxwPVtMKHt0eXBlOlN0cmluZ30pXSxjPVtMKHt0eXBlOlN0cmluZ30pXSx4PVtZKCldLHk9W1koKV0sTj1bWSgpXSxPPVtZKCldLEg9W1koKV0sST1bWSgpXSxLPVtZKCldLG1lPVtZKCldLGhlPVtZKCldLHVlPVtZKCldLEVsKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZGF0YVByb3ZpZGVyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGVlPT4iZGF0YVByb3ZpZGVyImluIGVlLCJoYXMiKSxnZXQ6aShlZT0+ZWUuZGF0YVByb3ZpZGVyLCJnZXQiKSxzZXQ6aSgoZWUsa2UpPT57ZWUuZGF0YVByb3ZpZGVyPWtlfSwic2V0Iil9LG1ldGFkYXRhOnRlfSxvLGwpLEVsKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYnVja2V0TmFtZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShlZT0+ImJ1Y2tldE5hbWUiaW4gZWUsImhhcyIpLGdldDppKGVlPT5lZS5idWNrZXROYW1lLCJnZXQiKSxzZXQ6aSgoZWUsa2UpPT57ZWUuYnVja2V0TmFtZT1rZX0sInNldCIpfSxtZXRhZGF0YTp0ZX0sZCx1KSxFbCh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im9iamVjdEtleSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShlZT0+Im9iamVjdEtleSJpbiBlZSwiaGFzIiksZ2V0OmkoZWU9PmVlLm9iamVjdEtleSwiZ2V0Iiksc2V0OmkoKGVlLGtlKT0+e2VlLm9iamVjdEtleT1rZX0sInNldCIpfSxtZXRhZGF0YTp0ZX0sYix2KSxFbCh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImxvYWRpbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZWU9PiJsb2FkaW5nImluIGVlLCJoYXMiKSxnZXQ6aShlZT0+ZWUubG9hZGluZywiZ2V0Iiksc2V0OmkoKGVlLGtlKT0+e2VlLmxvYWRpbmc9a2V9LCJzZXQiKX0sbWV0YWRhdGE6dGV9LG0sZiksRWwodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzYXZpbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZWU9PiJzYXZpbmciaW4gZWUsImhhcyIpLGdldDppKGVlPT5lZS5zYXZpbmcsImdldCIpLHNldDppKChlZSxrZSk9PntlZS5zYXZpbmc9a2V9LCJzZXQiKX0sbWV0YWRhdGE6dGV9LE0seiksRWwodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjb250ZW50IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGVlPT4iY29udGVudCJpbiBlZSwiaGFzIiksZ2V0OmkoZWU9PmVlLmNvbnRlbnQsImdldCIpLHNldDppKChlZSxrZSk9PntlZS5jb250ZW50PWtlfSwic2V0Iil9LG1ldGFkYXRhOnRlfSxDLF8pLEVsKHRoaXMsbnVsbCxPLHtraW5kOiJhY2Nlc3NvciIsbmFtZToib3JpZ2luYWxUZXh0Q29udGVudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShlZT0+Im9yaWdpbmFsVGV4dENvbnRlbnQiaW4gZWUsImhhcyIpLGdldDppKGVlPT5lZS5vcmlnaW5hbFRleHRDb250ZW50LCJnZXQiKSxzZXQ6aSgoZWUsa2UpPT57ZWUub3JpZ2luYWxUZXh0Q29udGVudD1rZX0sInNldCIpfSxtZXRhZGF0YTp0ZX0sJCxFKSxFbCh0aGlzLG51bGwsSCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Imhhc0NoYW5nZXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZWU9PiJoYXNDaGFuZ2VzImluIGVlLCJoYXMiKSxnZXQ6aShlZT0+ZWUuaGFzQ2hhbmdlcywiZ2V0Iiksc2V0OmkoKGVlLGtlKT0+e2VlLmhhc0NoYW5nZXM9a2V9LCJzZXQiKX0sbWV0YWRhdGE6dGV9LGssUyksRWwodGhpcyxudWxsLEkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJlZGl0aW5nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGVlPT4iZWRpdGluZyJpbiBlZSwiaGFzIiksZ2V0OmkoZWU9PmVlLmVkaXRpbmcsImdldCIpLHNldDppKChlZSxrZSk9PntlZS5lZGl0aW5nPWtlfSwic2V0Iil9LG1ldGFkYXRhOnRlfSxQLFIpLEVsKHRoaXMsbnVsbCxLLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY29udGVudFR5cGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZWU9PiJjb250ZW50VHlwZSJpbiBlZSwiaGFzIiksZ2V0OmkoZWU9PmVlLmNvbnRlbnRUeXBlLCJnZXQiKSxzZXQ6aSgoZWUsa2UpPT57ZWUuY29udGVudFR5cGU9a2V9LCJzZXQiKX0sbWV0YWRhdGE6dGV9LFYsVyksRWwodGhpcyxudWxsLG1lLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZmlsZVNpemUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZWU9PiJmaWxlU2l6ZSJpbiBlZSwiaGFzIiksZ2V0OmkoZWU9PmVlLmZpbGVTaXplLCJnZXQiKSxzZXQ6aSgoZWUsa2UpPT57ZWUuZmlsZVNpemU9a2V9LCJzZXQiKX0sbWV0YWRhdGE6dGV9LEIsVSksRWwodGhpcyxudWxsLGhlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibGFzdE1vZGlmaWVkIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGVlPT4ibGFzdE1vZGlmaWVkImluIGVlLCJoYXMiKSxnZXQ6aShlZT0+ZWUubGFzdE1vZGlmaWVkLCJnZXQiKSxzZXQ6aSgoZWUsa2UpPT57ZWUubGFzdE1vZGlmaWVkPWtlfSwic2V0Iil9LG1ldGFkYXRhOnRlfSxGLGopLEVsKHRoaXMsbnVsbCx1ZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImVycm9yIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGVlPT4iZXJyb3IiaW4gZWUsImhhcyIpLGdldDppKGVlPT5lZS5lcnJvciwiZ2V0Iiksc2V0OmkoKGVlLGtlKT0+e2VlLmVycm9yPWtlfSwic2V0Iil9LG1ldGFkYXRhOnRlfSxsZSxRKSxFbChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTp0ZX0sbnVsbCx0KSxpZT1hPWUudmFsdWUsdGUmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6dGV9KX0jZT1Rcyh0aGlzLG8sbnVsbCk7Z2V0IGRhdGFQcm92aWRlcigpe3JldHVybiB0aGlzLiNlfXNldCBkYXRhUHJvdmlkZXIodGUpe3RoaXMuI2U9dGV9I3Q9KFFzKHRoaXMsbCksUXModGhpcyxkLCIiKSk7Z2V0IGJ1Y2tldE5hbWUoKXtyZXR1cm4gdGhpcy4jdH1zZXQgYnVja2V0TmFtZSh0ZSl7dGhpcy4jdD10ZX0jYT0oUXModGhpcyx1KSxRcyh0aGlzLGIsIiIpKTtnZXQgb2JqZWN0S2V5KCl7cmV0dXJuIHRoaXMuI2F9c2V0IG9iamVjdEtleSh0ZSl7dGhpcy4jYT10ZX0jcz0oUXModGhpcyx2KSxRcyh0aGlzLG0sITEpKTtnZXQgbG9hZGluZygpe3JldHVybiB0aGlzLiNzfXNldCBsb2FkaW5nKHRlKXt0aGlzLiNzPXRlfSNpPShRcyh0aGlzLGYpLFFzKHRoaXMsTSwhMSkpO2dldCBzYXZpbmcoKXtyZXR1cm4gdGhpcy4jaX1zZXQgc2F2aW5nKHRlKXt0aGlzLiNpPXRlfSNyPShRcyh0aGlzLHopLFFzKHRoaXMsQywiIikpO2dldCBjb250ZW50KCl7cmV0dXJuIHRoaXMuI3J9c2V0IGNvbnRlbnQodGUpe3RoaXMuI3I9dGV9I289KFFzKHRoaXMsXyksUXModGhpcywkLCIiKSk7Z2V0IG9yaWdpbmFsVGV4dENvbnRlbnQoKXtyZXR1cm4gdGhpcy4jb31zZXQgb3JpZ2luYWxUZXh0Q29udGVudCh0ZSl7dGhpcy4jbz10ZX0jbj0oUXModGhpcyxFKSxRcyh0aGlzLGssITEpKTtnZXQgaGFzQ2hhbmdlcygpe3JldHVybiB0aGlzLiNufXNldCBoYXNDaGFuZ2VzKHRlKXt0aGlzLiNuPXRlfSNsPShRcyh0aGlzLFMpLFFzKHRoaXMsUCwhMSkpO2dldCBlZGl0aW5nKCl7cmV0dXJuIHRoaXMuI2x9c2V0IGVkaXRpbmcodGUpe3RoaXMuI2w9dGV9I2M9KFFzKHRoaXMsUiksUXModGhpcyxWLCIiKSk7Z2V0IGNvbnRlbnRUeXBlKCl7cmV0dXJuIHRoaXMuI2N9c2V0IGNvbnRlbnRUeXBlKHRlKXt0aGlzLiNjPXRlfSNkPShRcyh0aGlzLFcpLFFzKHRoaXMsQiwwKSk7Z2V0IGZpbGVTaXplKCl7cmV0dXJuIHRoaXMuI2R9c2V0IGZpbGVTaXplKHRlKXt0aGlzLiNkPXRlfSN1PShRcyh0aGlzLFUpLFFzKHRoaXMsRiwiIikpO2dldCBsYXN0TW9kaWZpZWQoKXtyZXR1cm4gdGhpcy4jdX1zZXQgbGFzdE1vZGlmaWVkKHRlKXt0aGlzLiN1PXRlfSNwPShRcyh0aGlzLGopLFFzKHRoaXMsbGUsIiIpKTtnZXQgZXJyb3IoKXtyZXR1cm4gdGhpcy4jcH1zZXQgZXJyb3IodGUpe3RoaXMuI3A9dGV9c3RhdGljIHN0eWxlcz1baC5kZWZhdWx0U3R5bGVzLHFlLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5wcmV2aWV3LWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgLnByZXZpZXctaGVhZGVyIHsKICAgICAgICBwYWRkaW5nOiAxMnB4OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMzMzMiKX07CiAgICAgIH0KCiAgICAgIC5wcmV2aWV3LXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsOwogICAgICB9CgogICAgICAucHJldmlldy1tZXRhIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICBnYXA6IDE2cHg7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiM4ODgiKX07CiAgICAgIH0KCiAgICAgIC5tZXRhLWl0ZW0gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDRweDsKICAgICAgfQoKICAgICAgLnByZXZpZXctY29udGVudCB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAucHJldmlldy1jb250ZW50IGRlZXMtcHJldmlldyB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CgogICAgICAucHJldmlldy1jb250ZW50LmNvZGUtZWRpdG9yIHsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC5wcmV2aWV3LWNvbnRlbnQuY29kZS1lZGl0b3IgZGVlcy1pbnB1dC1jb2RlIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5wcmV2aWV3LWFjdGlvbnMgewogICAgICAgIHBhZGRpbmc6IDEycHg7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzMzMyIpfTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGdhcDogOHB4OwogICAgICB9CgogICAgICAuYWN0aW9uLWJ0biB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBwYWRkaW5nOiA4cHggMTZweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjA1KSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2Q0ZDRkOCIsIiM0MDQwNDAiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjM2YzZjQ2IiwiI2UwZTBlMCIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXM7CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnRuOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjA4KSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkiKX07CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnRuLmRhbmdlciB7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyMzksIDY4LCA2OCwgMC4yKTsKICAgICAgICBib3JkZXItY29sb3I6ICNlZjQ0NDQ7CiAgICAgICAgY29sb3I6ICNmODcxNzE7CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnRuLmRhbmdlcjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyMzksIDY4LCA2OCwgMC4zKTsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idG4ucHJpbWFyeSB7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSg1OSwgMTMwLCAyNDYsIDAuMyk7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAjM2I4MmY2OwogICAgICAgIGNvbG9yOiAjNjBhNWZhOwogICAgICB9CgogICAgICAuYWN0aW9uLWJ0bi5wcmltYXJ5OmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDU5LCAxMzAsIDI0NiwgMC40KTsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idG4ucHJpbWFyeTpkaXNhYmxlZCB7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnRuLnNlY29uZGFyeSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wMykiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpIil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiNkNGQ0ZDgiLCIjNTU1Iil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhYWEiKX07CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnRuLnNlY29uZGFyeTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wNikiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2ZmZiIpfTsKICAgICAgfQoKICAgICAgLnVuc2F2ZWQtaW5kaWNhdG9yIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgcGFkZGluZzogNnB4IDEwcHg7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTEsIDE5MSwgMzYsIDAuMSk7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTEsIDE5MSwgMzYsIDAuMyk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogI2ZiYmYyNDsKICAgICAgfQoKICAgICAgLnVuc2F2ZWQtZG90IHsKICAgICAgICB3aWR0aDogNnB4OwogICAgICAgIGhlaWdodDogNnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICBiYWNrZ3JvdW5kOiAjZmJiZjI0OwogICAgICB9CgogICAgICAuZW1wdHktc3RhdGUgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNhMWExYWEiLCIjNjY2Iil9OwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICB9CgogICAgICAuZW1wdHktc3RhdGUgc3ZnIHsKICAgICAgICB3aWR0aDogNDhweDsKICAgICAgICBoZWlnaHQ6IDQ4cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgIH0KCiAgICAgIC5sb2FkaW5nLXN0YXRlIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiM4ODgiKX07CiAgICAgIH0KCiAgICAgIC5lcnJvci1zdGF0ZSB7CiAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgICBjb2xvcjogI2Y4NzE3MTsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIH0KICAgIGBdO3VwZGF0ZWQodGUpeyh0ZS5oYXMoIm9iamVjdEtleSIpfHx0ZS5oYXMoImJ1Y2tldE5hbWUiKSkmJih0aGlzLm9iamVjdEtleT90aGlzLmxvYWRPYmplY3QoKToodGhpcy5jb250ZW50PSIiLHRoaXMuY29udGVudFR5cGU9IiIsdGhpcy5lcnJvcj0iIix0aGlzLm9yaWdpbmFsVGV4dENvbnRlbnQ9IiIsdGhpcy5oYXNDaGFuZ2VzPSExLHRoaXMuZWRpdGluZz0hMSkpfWFzeW5jIGxvYWRPYmplY3QoKXtpZighKCF0aGlzLm9iamVjdEtleXx8IXRoaXMuYnVja2V0TmFtZXx8IXRoaXMuZGF0YVByb3ZpZGVyKSl7dGhpcy5sb2FkaW5nPSEwLHRoaXMuZXJyb3I9IiIsdGhpcy5oYXNDaGFuZ2VzPSExLHRoaXMuZWRpdGluZz0hMTt0cnl7bGV0IHRlPWF3YWl0IHRoaXMuZGF0YVByb3ZpZGVyLmdldE9iamVjdCh0aGlzLmJ1Y2tldE5hbWUsdGhpcy5vYmplY3RLZXkpO2lmKCF0ZSl7dGhpcy5lcnJvcj0iT2JqZWN0IG5vdCBmb3VuZCIsdGhpcy5sb2FkaW5nPSExO3JldHVybn10aGlzLmNvbnRlbnQ9dGUuY29udGVudHx8IiIsdGhpcy5jb250ZW50VHlwZT10ZS5jb250ZW50VHlwZXx8IiIsdGhpcy5maWxlU2l6ZT10ZS5zaXplfHwwLHRoaXMubGFzdE1vZGlmaWVkPXRlLmxhc3RNb2RpZmllZHx8IiIsdGhpcy5pc1RleHQoKSYmKHRoaXMub3JpZ2luYWxUZXh0Q29udGVudD10aGlzLmdldFRleHRDb250ZW50KCkpfWNhdGNoKHRlKXtjb25zb2xlLmVycm9yKCJFcnJvciBsb2FkaW5nIG9iamVjdDoiLHRlKSx0aGlzLmVycm9yPSJGYWlsZWQgdG8gbG9hZCBvYmplY3QifXRoaXMubG9hZGluZz0hMX19Zm9ybWF0RGF0ZSh0ZSl7cmV0dXJuIHRlP25ldyBEYXRlKHRlKS50b0xvY2FsZVN0cmluZygpOiItIn1pc0ltYWdlKCl7cmV0dXJuIHRoaXMuY29udGVudFR5cGUuc3RhcnRzV2l0aCgiaW1hZ2UvIil9aXNUZXh0KCl7cmV0dXJuIHRoaXMuY29udGVudFR5cGUuc3RhcnRzV2l0aCgidGV4dC8iKXx8dGhpcy5jb250ZW50VHlwZT09PSJhcHBsaWNhdGlvbi9qc29uInx8dGhpcy5jb250ZW50VHlwZT09PSJhcHBsaWNhdGlvbi94bWwifHx0aGlzLmNvbnRlbnRUeXBlPT09ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQifWdldFRleHRDb250ZW50KCl7dHJ5e2xldCB0ZT1hdG9iKHRoaXMuY29udGVudCksZWU9bmV3IFVpbnQ4QXJyYXkodGUubGVuZ3RoKTtmb3IobGV0IGtlPTA7a2U8dGUubGVuZ3RoO2tlKyspZWVba2VdPXRlLmNoYXJDb2RlQXQoa2UpO3JldHVybiBuZXcgVGV4dERlY29kZXIoInV0Zi04IikuZGVjb2RlKGVlKX1jYXRjaHtyZXR1cm4iVW5hYmxlIHRvIGRlY29kZSBjb250ZW50In19YXN5bmMgaGFuZGxlRG93bmxvYWQoKXt0cnl7bGV0IHRlPW5ldyBCbG9iKFtVaW50OEFycmF5LmZyb20oYXRvYih0aGlzLmNvbnRlbnQpLFg9PlguY2hhckNvZGVBdCgwKSldLHt0eXBlOnRoaXMuY29udGVudFR5cGV9KSxlZT1VUkwuY3JlYXRlT2JqZWN0VVJMKHRlKSxrZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7a2UuaHJlZj1lZSxrZS5kb3dubG9hZD1ZYSh0aGlzLm9iamVjdEtleSksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChrZSksa2UuY2xpY2soKSxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGtlKSxVUkwucmV2b2tlT2JqZWN0VVJMKGVlKX1jYXRjaCh0ZSl7Y29uc29sZS5lcnJvcigiRXJyb3IgZG93bmxvYWRpbmc6Iix0ZSl9fWFzeW5jIGhhbmRsZURlbGV0ZSgpe2lmKHRoaXMuZGF0YVByb3ZpZGVyJiZjb25maXJtKGBEZWxldGUgIiR7WWEodGhpcy5vYmplY3RLZXkpfSI/YCkpdHJ5e2F3YWl0IHRoaXMuZGF0YVByb3ZpZGVyLmRlbGV0ZU9iamVjdCh0aGlzLmJ1Y2tldE5hbWUsdGhpcy5vYmplY3RLZXkpLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoIm9iamVjdC1kZWxldGVkIix7ZGV0YWlsOntrZXk6dGhpcy5vYmplY3RLZXl9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9Y2F0Y2godGUpe2NvbnNvbGUuZXJyb3IoIkVycm9yIGRlbGV0aW5nIG9iamVjdDoiLHRlKX19Z2V0TGFuZ3VhZ2UoKXtsZXQgdGU9dGhpcy5vYmplY3RLZXkuc3BsaXQoIi4iKS5wb3AoKT8udG9Mb3dlckNhc2UoKXx8IiI7cmV0dXJue3RzOiJ0eXBlc2NyaXB0Iix0c3g6InR5cGVzY3JpcHQiLGpzOiJqYXZhc2NyaXB0Iixqc3g6ImphdmFzY3JpcHQiLG1qczoiamF2YXNjcmlwdCIsY2pzOiJqYXZhc2NyaXB0Iixqc29uOiJqc29uIixodG1sOiJodG1sIixodG06Imh0bWwiLGNzczoiY3NzIixzY3NzOiJzY3NzIixzYXNzOiJzY3NzIixsZXNzOiJsZXNzIixtZDoibWFya2Rvd24iLG1hcmtkb3duOiJtYXJrZG93biIseG1sOiJ4bWwiLHlhbWw6InlhbWwiLHltbDoieWFtbCIscHk6InB5dGhvbiIscmI6InJ1YnkiLGdvOiJnbyIscnM6InJ1c3QiLGphdmE6ImphdmEiLGM6ImMiLGNwcDoiY3BwIixoOiJjIixocHA6ImNwcCIsY3M6ImNzaGFycCIscGhwOiJwaHAiLHNoOiJzaGVsbCIsYmFzaDoic2hlbGwiLHpzaDoic2hlbGwiLHNxbDoic3FsIixncmFwaHFsOiJncmFwaHFsIixncWw6ImdyYXBocWwiLGRvY2tlcmZpbGU6ImRvY2tlcmZpbGUiLHR4dDoicGxhaW50ZXh0In1bdGVdfHwicGxhaW50ZXh0In1oYW5kbGVDb250ZW50Q2hhbmdlKHRlKXtsZXQgZWU9dGUuZGV0YWlsO3RoaXMuaGFzQ2hhbmdlcz1lZSE9PXRoaXMub3JpZ2luYWxUZXh0Q29udGVudH1oYW5kbGVFZGl0KCl7dGhpcy5lZGl0aW5nPSEwfWhhbmRsZURpc2NhcmQoKXtsZXQgdGU9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCJkZWVzLWlucHV0LWNvZGUiKTt0ZSYmKHRlLnZhbHVlPXRoaXMub3JpZ2luYWxUZXh0Q29udGVudCksdGhpcy5oYXNDaGFuZ2VzPSExLHRoaXMuZWRpdGluZz0hMX1hc3luYyBoYW5kbGVTYXZlKCl7aWYoISghdGhpcy5oYXNDaGFuZ2VzfHx0aGlzLnNhdmluZ3x8IXRoaXMuZGF0YVByb3ZpZGVyKSl7dGhpcy5zYXZpbmc9ITA7dHJ5e2xldCBlZT10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoImRlZXMtaW5wdXQtY29kZSIpPy52YWx1ZT8/IiIsWD1uZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoZWUpLFo9YnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLlgpKTthd2FpdCB0aGlzLmRhdGFQcm92aWRlci5wdXRPYmplY3QodGhpcy5idWNrZXROYW1lLHRoaXMub2JqZWN0S2V5LFosdGhpcy5jb250ZW50VHlwZSkmJih0aGlzLm9yaWdpbmFsVGV4dENvbnRlbnQ9ZWUsdGhpcy5oYXNDaGFuZ2VzPSExLHRoaXMuZWRpdGluZz0hMSx0aGlzLmNvbnRlbnQ9Wil9Y2F0Y2godGUpe2NvbnNvbGUuZXJyb3IoIkVycm9yIHNhdmluZyBvYmplY3Q6Iix0ZSl9dGhpcy5zYXZpbmc9ITF9fXJlbmRlcigpe3JldHVybiB0aGlzLm9iamVjdEtleT90aGlzLmxvYWRpbmc/d2AKICAgICAgICA8ZGl2IGNsYXNzPSJwcmV2aWV3LWNvbnRhaW5lciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2FkaW5nLXN0YXRlIj5Mb2FkaW5nLi4uPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIGA6dGhpcy5lcnJvcj93YAogICAgICAgIDxkaXYgY2xhc3M9InByZXZpZXctY29udGFpbmVyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImVycm9yLXN0YXRlIj4ke3RoaXMuZXJyb3J9PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIGA6d2AKICAgICAgPGRpdiBjbGFzcz0icHJldmlldy1jb250YWluZXIiPgogICAgICAgIDxkaXYgY2xhc3M9InByZXZpZXctaGVhZGVyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InByZXZpZXctdGl0bGUiPiR7WWEodGhpcy5vYmplY3RLZXkpfTwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icHJldmlldy1tZXRhIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1ldGEtaXRlbSI+JHt0aGlzLmNvbnRlbnRUeXBlfTwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1ldGEtaXRlbSI+JHtZUSh0aGlzLmZpbGVTaXplKX08L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJtZXRhLWl0ZW0iPiR7dGhpcy5mb3JtYXREYXRlKHRoaXMubGFzdE1vZGlmaWVkKX08L3NwYW4+CiAgICAgICAgICAgICR7dGhpcy5oYXNDaGFuZ2VzP3dgCiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InVuc2F2ZWQtaW5kaWNhdG9yIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ1bnNhdmVkLWRvdCI+PC9zcGFuPgogICAgICAgICAgICAgICAgVW5zYXZlZCBjaGFuZ2VzCiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICBgOiIifQogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9InByZXZpZXctY29udGVudCAke3RoaXMuZWRpdGluZz8iY29kZS1lZGl0b3IiOiIifSI+CiAgICAgICAgICAke3RoaXMuZWRpdGluZz93YAogICAgICAgICAgICAgICAgPGRlZXMtaW5wdXQtY29kZQogICAgICAgICAgICAgICAgICAudmFsdWU9JHt0aGlzLm9yaWdpbmFsVGV4dENvbnRlbnR9CiAgICAgICAgICAgICAgICAgIC5sYW5ndWFnZT0ke3RoaXMuZ2V0TGFuZ3VhZ2UoKX0KICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxMDAlIgogICAgICAgICAgICAgICAgICBAY29udGVudC1jaGFuZ2U9JHt0ZT0+dGhpcy5oYW5kbGVDb250ZW50Q2hhbmdlKHRlKX0KICAgICAgICAgICAgICAgID48L2RlZXMtaW5wdXQtY29kZT4KICAgICAgICAgICAgICBgOnRoaXMuaXNUZXh0KCk/d2AKICAgICAgICAgICAgICAgICAgPGRlZXMtcHJldmlldwogICAgICAgICAgICAgICAgICAgIC50ZXh0Q29udGVudD0ke3RoaXMub3JpZ2luYWxUZXh0Q29udGVudH0KICAgICAgICAgICAgICAgICAgICAuZmlsZW5hbWU9JHtZYSh0aGlzLm9iamVjdEtleSl9CiAgICAgICAgICAgICAgICAgICAgLmxhbmd1YWdlPSR7dGhpcy5nZXRMYW5ndWFnZSgpfQogICAgICAgICAgICAgICAgICAgIC5zaG93VG9vbGJhcj0keyEwfQogICAgICAgICAgICAgICAgICAgIC5zaG93RmlsZW5hbWU9JHshMX0KICAgICAgICAgICAgICAgICAgPjwvZGVlcy1wcmV2aWV3PgogICAgICAgICAgICAgICAgYDp3YAogICAgICAgICAgICAgICAgICA8ZGVlcy1wcmV2aWV3CiAgICAgICAgICAgICAgICAgICAgLmJhc2U2ND0ke3RoaXMuY29udGVudH0KICAgICAgICAgICAgICAgICAgICAubWltZVR5cGU9JHt0aGlzLmNvbnRlbnRUeXBlfQogICAgICAgICAgICAgICAgICAgIC5maWxlbmFtZT0ke1lhKHRoaXMub2JqZWN0S2V5KX0KICAgICAgICAgICAgICAgICAgICAuc2hvd1Rvb2xiYXI9JHshMH0KICAgICAgICAgICAgICAgICAgICAuc2hvd0ZpbGVuYW1lPSR7ITF9CiAgICAgICAgICAgICAgICAgID48L2RlZXMtcHJldmlldz4KICAgICAgICAgICAgICAgIGB9CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9InByZXZpZXctYWN0aW9ucyI+CiAgICAgICAgICAke3RoaXMuZWRpdGluZz93YAogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWN0aW9uLWJ0biBzZWNvbmRhcnkiIEBjbGljaz0ke3RoaXMuaGFuZGxlRGlzY2FyZH0+CiAgICAgICAgICAgICAgICAgICR7dGhpcy5oYXNDaGFuZ2VzPyJEaXNjYXJkIjoiQ2FuY2VsIn0KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbgogICAgICAgICAgICAgICAgICBjbGFzcz0iYWN0aW9uLWJ0biBwcmltYXJ5IgogICAgICAgICAgICAgICAgICBAY2xpY2s9JHt0aGlzLmhhbmRsZVNhdmV9CiAgICAgICAgICAgICAgICAgID9kaXNhYmxlZD0ke3RoaXMuc2F2aW5nfHwhdGhpcy5oYXNDaGFuZ2VzfQogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAke3RoaXMuc2F2aW5nPyJTYXZpbmcuLi4iOiJTYXZlIn0KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgIGA6d2AKICAgICAgICAgICAgICAgICR7dGhpcy5pc1RleHQoKT93YDxidXR0b24gY2xhc3M9ImFjdGlvbi1idG4iIEBjbGljaz0ke3RoaXMuaGFuZGxlRWRpdH0+RWRpdDwvYnV0dG9uPmA6IiJ9CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJhY3Rpb24tYnRuIiBAY2xpY2s9JHt0aGlzLmhhbmRsZURvd25sb2FkfT5Eb3dubG9hZDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWN0aW9uLWJ0biBkYW5nZXIiIEBjbGljaz0ke3RoaXMuaGFuZGxlRGVsZXRlfT5EZWxldGU8L2J1dHRvbj4KICAgICAgICAgICAgICBgfQogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGA6d2AKICAgICAgICA8ZGl2IGNsYXNzPSJwcmV2aWV3LWNvbnRhaW5lciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJlbXB0eS1zdGF0ZSI+CiAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgICA8cGF0aCBkPSJNMTQgMkg2YTIgMiAwIDAgMC0yIDJ2MTZhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjh6IiAvPgogICAgICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9IjE0IDIgMTQgOCAyMCA4IiAvPgogICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgPHA+U2VsZWN0IGEgZmlsZSB0byBwcmV2aWV3PC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIGB9Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLFFzKHRoaXMsUSl9c3RhdGlje1FzKGEsdCl9fTtyZXR1cm4gaWU9YX0pKCl9KTt2YXIgdDEsQWksJGVzLHJsdD1nKCgpPT57cGUoKTtodCgpO2Z5YSgpO29sdCgpO25sdCgpO2xsdCgpO3QxPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxBaT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sJGVzPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1zdG9yYWdlLWJyb3dzZXIiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXSxPLCQ9W10sRT1bXSxILGs9W10sUz1bXSxJLFA9W10sUj1bXSxLLFY9W10sVz1bXSxtZSxCPVtdLFU9W107dmFyIGhlPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzU3RvcmFnZUJyb3dzZXIiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgRj10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOk9iamVjdH0pXSxwPVtMKHt0eXBlOlN0cmluZ30pXSxjPVtMKHt0eXBlOk9iamVjdH0pXSx4PVtZKCldLHk9W1koKV0sTj1bWSgpXSxPPVtZKCldLEg9W1koKV0sST1bWSgpXSxLPVtZKCldLG1lPVtZKCldLHQxKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZGF0YVByb3ZpZGVyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGo9PiJkYXRhUHJvdmlkZXIiaW4gaiwiaGFzIiksZ2V0Omkoaj0+ai5kYXRhUHJvdmlkZXIsImdldCIpLHNldDppKChqLHVlKT0+e2ouZGF0YVByb3ZpZGVyPXVlfSwic2V0Iil9LG1ldGFkYXRhOkZ9LG8sbCksdDEodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJidWNrZXROYW1lIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGo9PiJidWNrZXROYW1lImluIGosImhhcyIpLGdldDppKGo9PmouYnVja2V0TmFtZSwiZ2V0Iiksc2V0OmkoKGosdWUpPT57ai5idWNrZXROYW1lPXVlfSwic2V0Iil9LG1ldGFkYXRhOkZ9LGQsdSksdDEodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJvbkNoYW5nZUV2ZW50IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGo9PiJvbkNoYW5nZUV2ZW50ImluIGosImhhcyIpLGdldDppKGo9Pmoub25DaGFuZ2VFdmVudCwiZ2V0Iiksc2V0OmkoKGosdWUpPT57ai5vbkNoYW5nZUV2ZW50PXVlfSwic2V0Iil9LG1ldGFkYXRhOkZ9LGIsdiksdDEodGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2aWV3VHlwZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4idmlld1R5cGUiaW4gaiwiaGFzIiksZ2V0Omkoaj0+ai52aWV3VHlwZSwiZ2V0Iiksc2V0OmkoKGosdWUpPT57ai52aWV3VHlwZT11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSxtLGYpLHQxKHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY3VycmVudFByZWZpeCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4iY3VycmVudFByZWZpeCJpbiBqLCJoYXMiKSxnZXQ6aShqPT5qLmN1cnJlbnRQcmVmaXgsImdldCIpLHNldDppKChqLHVlKT0+e2ouY3VycmVudFByZWZpeD11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSxNLHopLHQxKHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VsZWN0ZWRLZXkiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoaj0+InNlbGVjdGVkS2V5ImluIGosImhhcyIpLGdldDppKGo9Pmouc2VsZWN0ZWRLZXksImdldCIpLHNldDppKChqLHVlKT0+e2ouc2VsZWN0ZWRLZXk9dWV9LCJzZXQiKX0sbWV0YWRhdGE6Rn0sQyxfKSx0MSh0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InJlZnJlc2hLZXkiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoaj0+InJlZnJlc2hLZXkiaW4gaiwiaGFzIiksZ2V0Omkoaj0+ai5yZWZyZXNoS2V5LCJnZXQiKSxzZXQ6aSgoaix1ZSk9PntqLnJlZnJlc2hLZXk9dWV9LCJzZXQiKX0sbWV0YWRhdGE6Rn0sJCxFKSx0MSh0aGlzLG51bGwsSCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InByZXZpZXdXaWR0aCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShqPT4icHJldmlld1dpZHRoImluIGosImhhcyIpLGdldDppKGo9PmoucHJldmlld1dpZHRoLCJnZXQiKSxzZXQ6aSgoaix1ZSk9PntqLnByZXZpZXdXaWR0aD11ZX0sInNldCIpfSxtZXRhZGF0YTpGfSxrLFMpLHQxKHRoaXMsbnVsbCxJLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNSZXNpemluZ1ByZXZpZXciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoaj0+ImlzUmVzaXppbmdQcmV2aWV3ImluIGosImhhcyIpLGdldDppKGo9PmouaXNSZXNpemluZ1ByZXZpZXcsImdldCIpLHNldDppKChqLHVlKT0+e2ouaXNSZXNpemluZ1ByZXZpZXc9dWV9LCJzZXQiKX0sbWV0YWRhdGE6Rn0sUCxSKSx0MSh0aGlzLG51bGwsSyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InJlY2VudENoYW5nZUNvdW50IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGo9PiJyZWNlbnRDaGFuZ2VDb3VudCJpbiBqLCJoYXMiKSxnZXQ6aShqPT5qLnJlY2VudENoYW5nZUNvdW50LCJnZXQiKSxzZXQ6aSgoaix1ZSk9PntqLnJlY2VudENoYW5nZUNvdW50PXVlfSwic2V0Iil9LG1ldGFkYXRhOkZ9LFYsVyksdDEodGhpcyxudWxsLG1lLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNTdHJlYW1Db25uZWN0ZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoaj0+ImlzU3RyZWFtQ29ubmVjdGVkImluIGosImhhcyIpLGdldDppKGo9PmouaXNTdHJlYW1Db25uZWN0ZWQsImdldCIpLHNldDppKChqLHVlKT0+e2ouaXNTdHJlYW1Db25uZWN0ZWQ9dWV9LCJzZXQiKX0sbWV0YWRhdGE6Rn0sQixVKSx0MShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpGfSxudWxsLHQpLGhlPWE9ZS52YWx1ZSxGJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOkZ9KX1zdGF0aWMgZGVtbz1oeWE7c3RhdGljIGRlbW9Hcm91cHM9WyJEYXRhIFZpZXciXTsjZT1BaSh0aGlzLG8sbnVsbCk7Z2V0IGRhdGFQcm92aWRlcigpe3JldHVybiB0aGlzLiNlfXNldCBkYXRhUHJvdmlkZXIoRil7dGhpcy4jZT1GfSN0PShBaSh0aGlzLGwpLEFpKHRoaXMsZCwiIikpO2dldCBidWNrZXROYW1lKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGJ1Y2tldE5hbWUoRil7dGhpcy4jdD1GfSNhPShBaSh0aGlzLHUpLEFpKHRoaXMsYixudWxsKSk7Z2V0IG9uQ2hhbmdlRXZlbnQoKXtyZXR1cm4gdGhpcy4jYX1zZXQgb25DaGFuZ2VFdmVudChGKXt0aGlzLiNhPUZ9I3M9KEFpKHRoaXMsdiksQWkodGhpcyxtLCJjb2x1bW5zIikpO2dldCB2aWV3VHlwZSgpe3JldHVybiB0aGlzLiNzfXNldCB2aWV3VHlwZShGKXt0aGlzLiNzPUZ9I2k9KEFpKHRoaXMsZiksQWkodGhpcyxNLCIiKSk7Z2V0IGN1cnJlbnRQcmVmaXgoKXtyZXR1cm4gdGhpcy4jaX1zZXQgY3VycmVudFByZWZpeChGKXt0aGlzLiNpPUZ9I3I9KEFpKHRoaXMseiksQWkodGhpcyxDLCIiKSk7Z2V0IHNlbGVjdGVkS2V5KCl7cmV0dXJuIHRoaXMuI3J9c2V0IHNlbGVjdGVkS2V5KEYpe3RoaXMuI3I9Rn0jbz0oQWkodGhpcyxfKSxBaSh0aGlzLCQsMCkpO2dldCByZWZyZXNoS2V5KCl7cmV0dXJuIHRoaXMuI299c2V0IHJlZnJlc2hLZXkoRil7dGhpcy4jbz1GfSNuPShBaSh0aGlzLEUpLEFpKHRoaXMsayw3MDApKTtnZXQgcHJldmlld1dpZHRoKCl7cmV0dXJuIHRoaXMuI259c2V0IHByZXZpZXdXaWR0aChGKXt0aGlzLiNuPUZ9I2w9KEFpKHRoaXMsUyksQWkodGhpcyxQLCExKSk7Z2V0IGlzUmVzaXppbmdQcmV2aWV3KCl7cmV0dXJuIHRoaXMuI2x9c2V0IGlzUmVzaXppbmdQcmV2aWV3KEYpe3RoaXMuI2w9Rn0jYz0oQWkodGhpcyxSKSxBaSh0aGlzLFYsMCkpO2dldCByZWNlbnRDaGFuZ2VDb3VudCgpe3JldHVybiB0aGlzLiNjfXNldCByZWNlbnRDaGFuZ2VDb3VudChGKXt0aGlzLiNjPUZ9I2Q9KEFpKHRoaXMsVyksQWkodGhpcyxCLCExKSk7Z2V0IGlzU3RyZWFtQ29ubmVjdGVkKCl7cmV0dXJuIHRoaXMuI2R9c2V0IGlzU3RyZWFtQ29ubmVjdGVkKEYpe3RoaXMuI2Q9Rn1jaGFuZ2VVbnN1YnNjcmliZT0oQWkodGhpcyxVKSxudWxsKTtzdGF0aWMgc3R5bGVzPVtoLmRlZmF1bHRTdHlsZXMscWUsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgLmJyb3dzZXItY29udGFpbmVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CgogICAgICAudG9vbGJhciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMTJweDsKICAgICAgICBwYWRkaW5nOiAxMnB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMDMpIiwicmdiYSgwLCAwLCAwLCAwLjIpIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICB9CgogICAgICAuYnJlYWRjcnVtYiB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNHB4OwogICAgICAgIGZsZXg6IDE7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiM5OTkiKX07CiAgICAgIH0KCiAgICAgIC5icmVhZGNydW1iLWl0ZW0gewogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBwYWRkaW5nOiA0cHggOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzOwogICAgICB9CgogICAgICAuYnJlYWRjcnVtYi1pdGVtOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjA1KSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmZmIil9OwogICAgICB9CgogICAgICAuYnJlYWRjcnVtYi1zZXBhcmF0b3IgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2Q0ZDRkOCIsIiM1NTUiKX07CiAgICAgIH0KCiAgICAgIC52aWV3LXRvZ2dsZSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBnYXA6IDRweDsKICAgICAgfQoKICAgICAgLnZpZXctYnRuIHsKICAgICAgICBwYWRkaW5nOiA2cHggMTJweDsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2Q0ZDRkOCIsIiM0NDQiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiIzg4OCIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXM7CiAgICAgIH0KCiAgICAgIC52aWV3LWJ0bjpob3ZlciB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiI2ExYTFhYSIsIiM2NjYiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjM2YzZjQ2IiwiI2FhYSIpfTsKICAgICAgfQoKICAgICAgLnZpZXctYnRuLmFjdGl2ZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wNSkiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSkiKX07CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiI2ExYTFhYSIsIiM0MDQwNDAiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMTgxODFiIiwiI2UwZTBlMCIpfTsKICAgICAgfQoKICAgICAgLmNvbnRlbnQgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKICAgICAgICBnYXA6IDA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLmNvbnRlbnQuaGFzLXByZXZpZXcgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDRweCB2YXIoLS1wcmV2aWV3LXdpZHRoLCA3MDBweCk7CiAgICAgIH0KCiAgICAgIC5yZXNpemUtZGl2aWRlciB7CiAgICAgICAgd2lkdGg6IDRweDsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBjdXJzb3I6IGNvbC1yZXNpemU7CiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzOwogICAgICB9CgogICAgICAucmVzaXplLWRpdmlkZXI6aG92ZXIsCiAgICAgIC5yZXNpemUtZGl2aWRlci5hY3RpdmUgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMSkiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMikiKX07CiAgICAgIH0KCiAgICAgIC5tYWluLXZpZXcgewogICAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMDIpIiwicmdiYSgwLCAwLCAwLCAwLjIpIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgfQoKICAgICAgLnByZXZpZXctcGFuZWwgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMDIpIiwicmdiYSgwLCAwLCAwLCAwLjIpIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIG1hcmdpbi1sZWZ0OiAxMnB4OwogICAgICB9CgogICAgICBAbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7CiAgICAgICAgLmNvbnRlbnQsCiAgICAgICAgLmNvbnRlbnQuaGFzLXByZXZpZXcgewogICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CiAgICAgICAgfQoKICAgICAgICAucHJldmlldy1wYW5lbCwKICAgICAgICAucmVzaXplLWRpdmlkZXIgewogICAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC5zdHJlYW0tc3RhdHVzIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA0cHg7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiM4ODgiKX07CiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMnB4OwogICAgICB9CgogICAgICAuc3RyZWFtLWRvdCB7CiAgICAgICAgd2lkdGg6IDZweDsKICAgICAgICBoZWlnaHQ6IDZweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNhMWExYWEiLCIjODg4Iil9OwogICAgICB9CgogICAgICAuc3RyZWFtLWRvdC5jb25uZWN0ZWQgewogICAgICAgIGJhY2tncm91bmQ6ICMyMmM1NWU7CiAgICAgIH0KCiAgICAgIC5jaGFuZ2UtaW5kaWNhdG9yIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgcGFkZGluZzogNHB4IDhweDsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI0NSwgMTU4LCAxMSwgMC4yKTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGNvbG9yOiAjZjU5ZTBiOwogICAgICAgIG1hcmdpbi1yaWdodDogMTJweDsKICAgICAgfQoKICAgICAgLmNoYW5nZS1pbmRpY2F0b3IucHVsc2UgewogICAgICAgIGFuaW1hdGlvbjogcHVsc2Utb3JhbmdlIDFzIGVhc2UtaW4tb3V0OwogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIHB1bHNlLW9yYW5nZSB7CiAgICAgICAgMCUgeyBiYWNrZ3JvdW5kOiByZ2JhKDI0NSwgMTU4LCAxMSwgMC40KTsgfQogICAgICAgIDEwMCUgeyBiYWNrZ3JvdW5kOiByZ2JhKDI0NSwgMTU4LCAxMSwgMC4yKTsgfQogICAgICB9CiAgICBgXTthc3luYyBjb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5zdWJzY3JpYmVUb0NoYW5nZXMoKX1hc3luYyBkaXNjb25uZWN0ZWRDYWxsYmFjaygpe2F3YWl0IHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy51bnN1YnNjcmliZUZyb21DaGFuZ2VzKCl9cmVmcmVzaCgpe3RoaXMucmVmcmVzaEtleSsrfXNldFZpZXdUeXBlKEYpe3RoaXMudmlld1R5cGU9Rn1uYXZpZ2F0ZVRvUHJlZml4KEYpe3RoaXMuY3VycmVudFByZWZpeD1GLHRoaXMuc2VsZWN0ZWRLZXk9IiJ9aGFuZGxlS2V5U2VsZWN0ZWQoRil7dGhpcy5zZWxlY3RlZEtleT1GLmRldGFpbC5rZXl9aGFuZGxlTmF2aWdhdGUoRil7dGhpcy5uYXZpZ2F0ZVRvUHJlZml4KEYuZGV0YWlsLnByZWZpeCl9aGFuZGxlT2JqZWN0RGVsZXRlZChGKXt0aGlzLnNlbGVjdGVkS2V5PSIiLHRoaXMucmVmcmVzaEtleSsrfXVwZGF0ZWQoRil7Ri5oYXMoImJ1Y2tldE5hbWUiKSYmKHRoaXMuc2VsZWN0ZWRLZXk9IiIsdGhpcy5jdXJyZW50UHJlZml4PSIiLHRoaXMucmVjZW50Q2hhbmdlQ291bnQ9MCx0aGlzLnVuc3Vic2NyaWJlRnJvbUNoYW5nZXMoKSx0aGlzLnN1YnNjcmliZVRvQ2hhbmdlcygpKSxGLmhhcygib25DaGFuZ2VFdmVudCIpJiYodGhpcy51bnN1YnNjcmliZUZyb21DaGFuZ2VzKCksdGhpcy5zdWJzY3JpYmVUb0NoYW5nZXMoKSl9c3Vic2NyaWJlVG9DaGFuZ2VzKCl7aWYoIXRoaXMub25DaGFuZ2VFdmVudCl7dGhpcy5pc1N0cmVhbUNvbm5lY3RlZD0hMTtyZXR1cm59dHJ5e3RoaXMuY2hhbmdlVW5zdWJzY3JpYmU9dGhpcy5vbkNoYW5nZUV2ZW50KEY9Pnt0aGlzLmhhbmRsZUNoYW5nZShGKX0pLHRoaXMuaXNTdHJlYW1Db25uZWN0ZWQ9ITB9Y2F0Y2goRil7Y29uc29sZS53YXJuKCJbU3RvcmFnZUJyb3dzZXJdIEZhaWxlZCB0byBzdWJzY3JpYmUgdG8gY2hhbmdlczoiLEYpLHRoaXMuaXNTdHJlYW1Db25uZWN0ZWQ9ITF9fXVuc3Vic2NyaWJlRnJvbUNoYW5nZXMoKXt0aGlzLmNoYW5nZVVuc3Vic2NyaWJlJiYodGhpcy5jaGFuZ2VVbnN1YnNjcmliZSgpLHRoaXMuY2hhbmdlVW5zdWJzY3JpYmU9bnVsbCksdGhpcy5pc1N0cmVhbUNvbm5lY3RlZD0hMX1oYW5kbGVDaGFuZ2UoRil7dGhpcy5yZWNlbnRDaGFuZ2VDb3VudCsrLHRoaXMucmVmcmVzaEtleSsrfXN0YXJ0UHJldmlld1Jlc2l6ZT1pKEY9PntGLnByZXZlbnREZWZhdWx0KCksdGhpcy5pc1Jlc2l6aW5nUHJldmlldz0hMCxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMuaGFuZGxlUHJldmlld1Jlc2l6ZSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdGhpcy5lbmRQcmV2aWV3UmVzaXplKX0sInN0YXJ0UHJldmlld1Jlc2l6ZSIpO2hhbmRsZVByZXZpZXdSZXNpemU9aShGPT57aWYoIXRoaXMuaXNSZXNpemluZ1ByZXZpZXcpcmV0dXJuO2xldCBqPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiLmNvbnRlbnQiKTtpZighailyZXR1cm47bGV0IHVlPWouZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbGU9TWF0aC5taW4oTWF0aC5tYXgodWUucmlnaHQtRi5jbGllbnRYLDI1MCksMWUzKTt0aGlzLnByZXZpZXdXaWR0aD1sZX0sImhhbmRsZVByZXZpZXdSZXNpemUiKTtlbmRQcmV2aWV3UmVzaXplPWkoKCk9Pnt0aGlzLmlzUmVzaXppbmdQcmV2aWV3PSExLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5oYW5kbGVQcmV2aWV3UmVzaXplKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLmVuZFByZXZpZXdSZXNpemUpfSwiZW5kUHJldmlld1Jlc2l6ZSIpO3JlbmRlcigpe2xldCBGPXRoaXMuY3VycmVudFByZWZpeD90aGlzLmN1cnJlbnRQcmVmaXguc3BsaXQoIi8iKS5maWx0ZXIoQm9vbGVhbik6W107cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImJyb3dzZXItY29udGFpbmVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0b29sYmFyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImJyZWFkY3J1bWIiPgogICAgICAgICAgICA8c3BhbgogICAgICAgICAgICAgIGNsYXNzPSJicmVhZGNydW1iLWl0ZW0iCiAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMubmF2aWdhdGVUb1ByZWZpeCgiIil9CiAgICAgICAgICAgID4KICAgICAgICAgICAgICAke3RoaXMuYnVja2V0TmFtZX0KICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAke0YubWFwKChqLHVlKT0+e2xldCBsZT1GLnNsaWNlKDAsdWUrMSkuam9pbigiLyIpKyIvIjtyZXR1cm4gd2AKICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJicmVhZGNydW1iLXNlcGFyYXRvciI+Lzwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuCiAgICAgICAgICAgICAgICAgIGNsYXNzPSJicmVhZGNydW1iLWl0ZW0iCiAgICAgICAgICAgICAgICAgIEBjbGljaz0keygpPT50aGlzLm5hdmlnYXRlVG9QcmVmaXgobGUpfQogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAke2p9CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgYH0pfQogICAgICAgICAgPC9kaXY+CgogICAgICAgICAgJHt0aGlzLm9uQ2hhbmdlRXZlbnQ/d2AKICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RyZWFtLXN0YXR1cyI+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN0cmVhbS1kb3QgJHt0aGlzLmlzU3RyZWFtQ29ubmVjdGVkPyJjb25uZWN0ZWQiOiIifSI+PC9zcGFuPgogICAgICAgICAgICAgICR7dGhpcy5pc1N0cmVhbUNvbm5lY3RlZD8iTGl2ZSI6Ik9mZmxpbmUifQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAke3RoaXMucmVjZW50Q2hhbmdlQ291bnQ+MD93YAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2hhbmdlLWluZGljYXRvciBwdWxzZSI+CiAgICAgICAgICAgICAgICAgICR7dGhpcy5yZWNlbnRDaGFuZ2VDb3VudH0gY2hhbmdlJHt0aGlzLnJlY2VudENoYW5nZUNvdW50PjE/InMiOiIifQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgYDoiIn0KICAgICAgICAgIDxkaXYgY2xhc3M9InZpZXctdG9nZ2xlIj4KICAgICAgICAgICAgPGJ1dHRvbgogICAgICAgICAgICAgIGNsYXNzPSJ2aWV3LWJ0biAke3RoaXMudmlld1R5cGU9PT0iY29sdW1ucyI/ImFjdGl2ZSI6IiJ9IgogICAgICAgICAgICAgIEBjbGljaz0keygpPT50aGlzLnNldFZpZXdUeXBlKCJjb2x1bW5zIil9CiAgICAgICAgICAgID4KICAgICAgICAgICAgICBDb2x1bW5zCiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgICAgY2xhc3M9InZpZXctYnRuICR7dGhpcy52aWV3VHlwZT09PSJrZXlzIj8iYWN0aXZlIjoiIn0iCiAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMuc2V0Vmlld1R5cGUoImtleXMiKX0KICAgICAgICAgICAgPgogICAgICAgICAgICAgIExpc3QKICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCAke3RoaXMuc2VsZWN0ZWRLZXk/Imhhcy1wcmV2aWV3IjoiIn0iIHN0eWxlPSItLXByZXZpZXctd2lkdGg6ICR7dGhpcy5wcmV2aWV3V2lkdGh9cHgiPgogICAgICAgICAgPGRpdiBjbGFzcz0ibWFpbi12aWV3Ij4KICAgICAgICAgICAgJHt0aGlzLnZpZXdUeXBlPT09ImNvbHVtbnMiP3dgCiAgICAgICAgICAgICAgICAgIDxkZWVzLXN0b3JhZ2UtY29sdW1ucwogICAgICAgICAgICAgICAgICAgIC5kYXRhUHJvdmlkZXI9JHt0aGlzLmRhdGFQcm92aWRlcn0KICAgICAgICAgICAgICAgICAgICAuYnVja2V0TmFtZT0ke3RoaXMuYnVja2V0TmFtZX0KICAgICAgICAgICAgICAgICAgICAuY3VycmVudFByZWZpeD0ke3RoaXMuY3VycmVudFByZWZpeH0KICAgICAgICAgICAgICAgICAgICAucmVmcmVzaEtleT0ke3RoaXMucmVmcmVzaEtleX0KICAgICAgICAgICAgICAgICAgICBAa2V5LXNlbGVjdGVkPSR7dGhpcy5oYW5kbGVLZXlTZWxlY3RlZH0KICAgICAgICAgICAgICAgICAgICBAbmF2aWdhdGU9JHt0aGlzLmhhbmRsZU5hdmlnYXRlfQogICAgICAgICAgICAgICAgICA+PC9kZWVzLXN0b3JhZ2UtY29sdW1ucz4KICAgICAgICAgICAgICAgIGA6d2AKICAgICAgICAgICAgICAgICAgPGRlZXMtc3RvcmFnZS1rZXlzCiAgICAgICAgICAgICAgICAgICAgLmRhdGFQcm92aWRlcj0ke3RoaXMuZGF0YVByb3ZpZGVyfQogICAgICAgICAgICAgICAgICAgIC5idWNrZXROYW1lPSR7dGhpcy5idWNrZXROYW1lfQogICAgICAgICAgICAgICAgICAgIC5jdXJyZW50UHJlZml4PSR7dGhpcy5jdXJyZW50UHJlZml4fQogICAgICAgICAgICAgICAgICAgIC5yZWZyZXNoS2V5PSR7dGhpcy5yZWZyZXNoS2V5fQogICAgICAgICAgICAgICAgICAgIEBrZXktc2VsZWN0ZWQ9JHt0aGlzLmhhbmRsZUtleVNlbGVjdGVkfQogICAgICAgICAgICAgICAgICAgIEBuYXZpZ2F0ZT0ke3RoaXMuaGFuZGxlTmF2aWdhdGV9CiAgICAgICAgICAgICAgICAgID48L2RlZXMtc3RvcmFnZS1rZXlzPgogICAgICAgICAgICAgICAgYH0KICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICR7dGhpcy5zZWxlY3RlZEtleT93YAogICAgICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICBjbGFzcz0icmVzaXplLWRpdmlkZXIgJHt0aGlzLmlzUmVzaXppbmdQcmV2aWV3PyJhY3RpdmUiOiIifSIKICAgICAgICAgICAgICAgICAgQG1vdXNlZG93bj0ke3RoaXMuc3RhcnRQcmV2aWV3UmVzaXplfQogICAgICAgICAgICAgICAgPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJldmlldy1wYW5lbCI+CiAgICAgICAgICAgICAgICAgIDxkZWVzLXN0b3JhZ2UtcHJldmlldwogICAgICAgICAgICAgICAgICAgIC5kYXRhUHJvdmlkZXI9JHt0aGlzLmRhdGFQcm92aWRlcn0KICAgICAgICAgICAgICAgICAgICAuYnVja2V0TmFtZT0ke3RoaXMuYnVja2V0TmFtZX0KICAgICAgICAgICAgICAgICAgICAub2JqZWN0S2V5PSR7dGhpcy5zZWxlY3RlZEtleX0KICAgICAgICAgICAgICAgICAgICBAb2JqZWN0LWRlbGV0ZWQ9JHt0aGlzLmhhbmRsZU9iamVjdERlbGV0ZWR9CiAgICAgICAgICAgICAgICAgID48L2RlZXMtc3RvcmFnZS1wcmV2aWV3PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgYDoiIn0KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfXN0YXRpY3tBaShhLHQpfX07cmV0dXJuIGhlPWF9KSgpfSk7dmFyIG15YT1nKCgpPT57fSk7dmFyIGd5YT1nKCgpPT57cmx0KCk7b2x0KCk7bmx0KCk7bGx0KCk7bXlhKCk7UVEoKX0pO3ZhciBieWE9ZygoKT0+e295YSgpO3V5YSgpO0hudCgpO3B5YSgpO2d5YSgpfSk7dmFyIEpRLGp1LERlcyxhMmU9ZygoKT0+e3BlKCk7aHQoKTtHYSgpO0pRPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxqdT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sRGVzPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1hY3Rpb25iYXIiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXTt2YXIgeT1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0FjdGlvbmJhciIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBNPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W1koKV0scD1bWSgpXSxjPVtZKCldLHg9W1koKV0sSlEodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjdXJyZW50QmFyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJjdXJyZW50QmFyImluIHosImhhcyIpLGdldDppKHo9PnouY3VycmVudEJhciwiZ2V0Iiksc2V0OmkoKHosTik9Pnt6LmN1cnJlbnRCYXI9Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxvLGwpLEpRKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidGltZVJlbWFpbmluZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4idGltZVJlbWFpbmluZyJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LnRpbWVSZW1haW5pbmcsImdldCIpLHNldDppKCh6LE4pPT57ei50aW1lUmVtYWluaW5nPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sZCx1KSxKUSh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InByb2dyZXNzUGVyY2VudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4icHJvZ3Jlc3NQZXJjZW50ImluIHosImhhcyIpLGdldDppKHo9PnoucHJvZ3Jlc3NQZXJjZW50LCJnZXQiKSxzZXQ6aSgoeixOKT0+e3oucHJvZ3Jlc3NQZXJjZW50PU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sYix2KSxKUSh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImlzVmlzaWJsZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4iaXNWaXNpYmxlImluIHosImhhcyIpLGdldDppKHo9PnouaXNWaXNpYmxlLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3ouaXNWaXNpYmxlPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sbSxmKSxKUShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpNfSxudWxsLHQpLHk9YT1lLnZhbHVlLE0mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6TX0pfXN0YXRpYyBkZW1vR3JvdXBzPVsiRmVlZGJhY2siLCJPdmVybGF5Il07c3RhdGljIGRlbW89aSgoKT0+e2xldCBNPWkoXz0+Xy5jdXJyZW50VGFyZ2V0LmNsb3Nlc3QoIi5kZW1vLWNvbnRhaW5lciIpPy5xdWVyeVNlbGVjdG9yKCJkZWVzLWFjdGlvbmJhciIpLCJnZXRBY3Rpb25iYXIiKTtyZXR1cm4gd2AKICAgICAgPHN0eWxlPgogICAgICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgIGhlaWdodDogMzAwcHg7CiAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjMzMzOwogICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB9CiAgICAgICAgLmRlbW8tY29udGVudCB7CiAgICAgICAgICBmbGV4OiAxOwogICAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBnYXA6IDhweDsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICAgIH0KICAgICAgPC9zdHlsZT4KICAgICAgPGRpdiBjbGFzcz0iZGVtby1jb250YWluZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udGVudCI+CiAgICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrPSR7aShhc3luYyBfPT57bGV0IE89TShfKTtpZighTylyZXR1cm47bGV0ICQ9YXdhaXQgTy5zaG93KHttZXNzYWdlOiJGaWxlIGNoYW5nZWQgZXh0ZXJuYWxseS4gUmVsb2FkPyIsdHlwZToid2FybmluZyIsaWNvbjoibHVjaWRlOmFsZXJ0VHJpYW5nbGUiLGFjdGlvbnM6W3tpZDoicmVsb2FkIixsYWJlbDoiUmVsb2FkIixwcmltYXJ5OiEwfSx7aWQ6Imlnbm9yZSIsbGFiZWw6Iklnbm9yZSJ9XSx0aW1lb3V0OntkdXJhdGlvbjo1ZTMsZGVmYXVsdEFjdGlvbklkOiJyZWxvYWQifSxkaXNtaXNzaWJsZTohMH0pO2NvbnNvbGUubG9nKCJBY3Rpb24gYmFyIHJlc3VsdDoiLCQpfSwic2hvd0FjdGlvbkJhciIpfT5XYXJuaW5nPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiBAY2xpY2s9JHtpKGFzeW5jIF89PntsZXQgTz1NKF8pO2lmKCFPKXJldHVybjtsZXQgJD1hd2FpdCBPLnNob3coe21lc3NhZ2U6IlByb2Nlc3MgZmFpbGVkIHdpdGggZXhpdCBjb2RlIDEiLHR5cGU6ImVycm9yIixpY29uOiJsdWNpZGU6eENpcmNsZSIsYWN0aW9uczpbe2lkOiJyZXRyeSIsbGFiZWw6IlJldHJ5IixwcmltYXJ5OiEwfSx7aWQ6ImRpc21pc3MiLGxhYmVsOiJEaXNtaXNzIn1dLHRpbWVvdXQ6e2R1cmF0aW9uOjFlNCxkZWZhdWx0QWN0aW9uSWQ6ImRpc21pc3MifX0pO2NvbnNvbGUubG9nKCJFcnJvciBiYXIgcmVzdWx0OiIsJCl9LCJzaG93RXJyb3JCYXIiKX0+RXJyb3I8L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIEBjbGljaz0ke2koYXN5bmMgXz0+e2xldCBPPU0oXyk7aWYoIU8pcmV0dXJuO2xldCAkPWF3YWl0IE8uc2hvdyh7bWVzc2FnZToiU2F2ZSBjaGFuZ2VzIGJlZm9yZSBjbG9zaW5nPyIsdHlwZToicXVlc3Rpb24iLGljb246Imx1Y2lkZTpoZWxwQ2lyY2xlIixhY3Rpb25zOlt7aWQ6InNhdmUiLGxhYmVsOiJTYXZlIixwcmltYXJ5OiEwfSx7aWQ6ImRpc2NhcmQiLGxhYmVsOiJEaXNjYXJkIn0se2lkOiJjYW5jZWwiLGxhYmVsOiJDYW5jZWwifV19KTtjb25zb2xlLmxvZygiUXVlc3Rpb24gYmFyIHJlc3VsdDoiLCQpfSwic2hvd1F1ZXN0aW9uQmFyIil9PlF1ZXN0aW9uPC9kZWVzLWJ1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGVlcy1hY3Rpb25iYXI+PC9kZWVzLWFjdGlvbmJhcj4KICAgICAgPC9kaXY+CiAgICBgfSwiZGVtbyIpO3F1ZXVlPVtdOyNlPWp1KHRoaXMsbyxudWxsKTtnZXQgY3VycmVudEJhcigpe3JldHVybiB0aGlzLiNlfXNldCBjdXJyZW50QmFyKE0pe3RoaXMuI2U9TX0jdD0oanUodGhpcyxsKSxqdSh0aGlzLGQsMCkpO2dldCB0aW1lUmVtYWluaW5nKCl7cmV0dXJuIHRoaXMuI3R9c2V0IHRpbWVSZW1haW5pbmcoTSl7dGhpcy4jdD1NfSNhPShqdSh0aGlzLHUpLGp1KHRoaXMsYiwxMDApKTtnZXQgcHJvZ3Jlc3NQZXJjZW50KCl7cmV0dXJuIHRoaXMuI2F9c2V0IHByb2dyZXNzUGVyY2VudChNKXt0aGlzLiNhPU19I3M9KGp1KHRoaXMsdiksanUodGhpcyxtLCExKSk7Z2V0IGlzVmlzaWJsZSgpe3JldHVybiB0aGlzLiNzfXNldCBpc1Zpc2libGUoTSl7dGhpcy4jcz1NfXRpbWVvdXRJbnRlcnZhbD0oanUodGhpcyxmKSxudWxsKTtjdXJyZW50UmVzb2x2ZT1udWxsO3N0YXRpYyBzdHlsZXM9W3FlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KCiAgICAgIC5hY3Rpb25iYXItaXRlbSB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IDBmcjsKICAgICAgICB0cmFuc2l0aW9uOiBncmlkLXRlbXBsYXRlLXJvd3MgMC4ycyBlYXNlLW91dDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTYlKSIsImhzbCgwIDAlIDEyJSkiKX07CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4OCUpIiwiaHNsKDAgMCUgMjAlKSIpfTsKICAgICAgfQoKICAgICAgOmhvc3QoLnZpc2libGUpIC5hY3Rpb25iYXItaXRlbSB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAxZnI7CiAgICAgIH0KCiAgICAgIC5hY3Rpb25iYXItY29udGVudCB7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBtaW4taGVpZ2h0OiAwOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2Utb3V0OwogICAgICB9CgogICAgICA6aG9zdCgudmlzaWJsZSkgLmFjdGlvbmJhci1jb250ZW50IHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CgogICAgICAucHJvZ3Jlc3MtYmFyIHsKICAgICAgICBoZWlnaHQ6IDNweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTAlKSIsImhzbCgwIDAlIDE4JSkiKX07CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLnByb2dyZXNzLWJhci1maWxsIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgMTAwJSA1MCUpIiwiaHNsKDIxMCAxMDAlIDYwJSkiKX07CiAgICAgICAgdHJhbnNpdGlvbjogd2lkdGggMC4xcyBsaW5lYXI7CiAgICAgIH0KCiAgICAgIC5wcm9ncmVzcy1iYXItZmlsbC53YXJuaW5nIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDM4IDkyJSA1MCUpIiwiaHNsKDM4IDkyJSA1NSUpIil9OwogICAgICB9CgogICAgICAucHJvZ3Jlc3MtYmFyLWZpbGwuZXJyb3IgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCA3MCUgNTAlKSIsImhzbCgwIDcwJSA1NSUpIil9OwogICAgICB9CgogICAgICAucHJvZ3Jlc3MtYmFyLWZpbGwucXVlc3Rpb24gewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjcwIDcwJSA1MCUpIiwiaHNsKDI3MCA3MCUgNjAlKSIpfTsKICAgICAgfQoKICAgICAgLmNvbnRlbnQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgbWluLWhlaWdodDogMzJweDsKICAgICAgfQoKICAgICAgLm1lc3NhZ2Utc2VjdGlvbiB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIGZsZXg6IDE7CiAgICAgICAgbWluLXdpZHRoOiAwOwogICAgICB9CgogICAgICAubWVzc2FnZS1pY29uIHsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDQwJSkiLCJoc2woMCAwJSA2MCUpIil9OwogICAgICB9CgogICAgICAubWVzc2FnZS1pY29uLmluZm8gewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxMCAxMDAlIDQ1JSkiLCJoc2woMjEwIDEwMCUgNjAlKSIpfTsKICAgICAgfQoKICAgICAgLm1lc3NhZ2UtaWNvbi53YXJuaW5nIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgzOCA5MiUgNDUlKSIsImhzbCgzOCA5MiUgNTUlKSIpfTsKICAgICAgfQoKICAgICAgLm1lc3NhZ2UtaWNvbi5lcnJvciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCA3MCUgNTAlKSIsImhzbCgwIDcwJSA1NSUpIil9OwogICAgICB9CgogICAgICAubWVzc2FnZS1pY29uLnF1ZXN0aW9uIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyNzAgNzAlIDUwJSkiLCJoc2woMjcwIDcwJSA2MCUpIil9OwogICAgICB9CgogICAgICAubWVzc2FnZS10ZXh0IHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAyMCUpIiwiaHNsKDAgMCUgODUlKSIpfTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgIH0KCiAgICAgIC5hY3Rpb25zLXNlY3Rpb24gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDRweDsKICAgICAgICBwYWRkaW5nOiA0cHggMTBweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uLnNlY29uZGFyeSB7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAzMCUpIiwiaHNsKDAgMCUgNzAlKSIpfTsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4MCUpIiwiaHNsKDAgMCUgMzAlKSIpfTsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idXR0b24uc2Vjb25kYXJ5OmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTIlKSIsImhzbCgwIDAlIDE4JSkiKX07CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uLnByaW1hcnkgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDEwMCUgNTAlKSIsImhzbCgyMTAgMTAwJSA1NSUpIil9OwogICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idXR0b24ucHJpbWFyeTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgMTAwJSA0NSUpIiwiaHNsKDIxMCAxMDAlIDUwJSkiKX07CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uLnByaW1hcnkud2FybmluZyB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgzOCA5MiUgNDUlKSIsImhzbCgzOCA5MiUgNTAlKSIpfTsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idXR0b24ucHJpbWFyeS53YXJuaW5nOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDM4IDkyJSA0MCUpIiwiaHNsKDM4IDkyJSA0NSUpIil9OwogICAgICB9CgogICAgICAuYWN0aW9uLWJ1dHRvbi5wcmltYXJ5LmVycm9yIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgNzAlIDUwJSkiLCJoc2woMCA3MCUgNTUlKSIpfTsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idXR0b24ucHJpbWFyeS5lcnJvcjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDcwJSA0NSUpIiwiaHNsKDAgNzAlIDUwJSkiKX07CiAgICAgIH0KCiAgICAgIC5hY3Rpb24tYnV0dG9uLnByaW1hcnkucXVlc3Rpb24gewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjcwIDcwJSA1MCUpIiwiaHNsKDI3MCA3MCUgNTUlKSIpfTsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idXR0b24ucHJpbWFyeS5xdWVzdGlvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyNzAgNzAlIDQ1JSkiLCJoc2woMjcwIDcwJSA1MCUpIil9OwogICAgICB9CgogICAgICAuY291bnRkb3duIHsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgb3BhY2l0eTogMC44OwogICAgICAgIG1hcmdpbi1sZWZ0OiAycHg7CiAgICAgIH0KCiAgICAgIC5kaXNtaXNzLWJ1dHRvbiB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIHdpZHRoOiAyMHB4OwogICAgICAgIGhlaWdodDogMjBweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNTAlKSIsImhzbCgwIDAlIDUwJSkiKX07CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5kaXNtaXNzLWJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDg4JSkiLCJoc2woMCAwJSAyMiUpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMzAlKSIsImhzbCgwIDAlIDcwJSkiKX07CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe2xldCBNPXRoaXMuY3VycmVudEJhcix6PU0/LnR5cGV8fCJpbmZvIixOPU0/LnRpbWVvdXQmJnRoaXMudGltZVJlbWFpbmluZz4wO3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJhY3Rpb25iYXItaXRlbSI+CiAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uYmFyLWNvbnRlbnQiPgogICAgICAgICAgJHtNP3dgCiAgICAgICAgICAgICR7Tj93YAogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWJhciI+CiAgICAgICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgIGNsYXNzPSJwcm9ncmVzcy1iYXItZmlsbCAke3p9IgogICAgICAgICAgICAgICAgICBzdHlsZT0id2lkdGg6ICR7dGhpcy5wcm9ncmVzc1BlcmNlbnR9JSIKICAgICAgICAgICAgICAgID48L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVzc2FnZS1zZWN0aW9uIj4KICAgICAgICAgICAgICAgICR7TS5pY29uP3dgCiAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24KICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibWVzc2FnZS1pY29uICR7en0iCiAgICAgICAgICAgICAgICAgICAgLmljb249JHtNLmljb259CiAgICAgICAgICAgICAgICAgICAgaWNvblNpemU9IjE2IgogICAgICAgICAgICAgICAgICA+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICBgOiIifQogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1lc3NhZ2UtdGV4dCI+JHtNLm1lc3NhZ2V9PC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMtc2VjdGlvbiI+CiAgICAgICAgICAgICAgICAke00uYWN0aW9ucy5tYXAoQz0+dGhpcy5yZW5kZXJBY3Rpb25CdXR0b24oQyxNLE4pKX0KICAgICAgICAgICAgICAgICR7TS5kaXNtaXNzaWJsZT93YAogICAgICAgICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImRpc21pc3MtYnV0dG9uIgogICAgICAgICAgICAgICAgICAgIEBjbGljaz0keygpPT50aGlzLmhhbmRsZURpc21pc3MoKX0KICAgICAgICAgICAgICAgICAgICB0aXRsZT0iRGlzbWlzcyIKICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHsibHVjaWRlOngifSBpY29uU2l6ZT0iMTQiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYDoiIn0KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfXJlbmRlckFjdGlvbkJ1dHRvbihNLHosTil7bGV0IEM9TS5wcmltYXJ5LF89ei50eXBlfHwiaW5mbyIsTz16LnRpbWVvdXQ/LmRlZmF1bHRBY3Rpb25JZD09PU0uaWQsJD1OJiZPLEU9TWF0aC5jZWlsKHRoaXMudGltZVJlbWFpbmluZy8xZTMpO3JldHVybiB3YAogICAgICA8YnV0dG9uCiAgICAgICAgY2xhc3M9ImFjdGlvbi1idXR0b24gJHtDP2BwcmltYXJ5ICR7X31gOiJzZWNvbmRhcnkifSIKICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVBY3Rpb24oTS5pZCwhMSl9CiAgICAgID4KICAgICAgICAke00uaWNvbj93YAogICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0ke00uaWNvbn0gaWNvblNpemU9IjEyIj48L2RlZXMtaWNvbj4KICAgICAgICBgOiIifQogICAgICAgIDxzcGFuPiR7TS5sYWJlbH08L3NwYW4+CiAgICAgICAgJHskP3dgCiAgICAgICAgICA8c3BhbiBjbGFzcz0iY291bnRkb3duIj4oJHtFfXMpPC9zcGFuPgogICAgICAgIGA6IiJ9CiAgICAgIDwvYnV0dG9uPgogICAgYH1hc3luYyBzaG93KE0pe3JldHVybiBuZXcgUHJvbWlzZSh6PT57dGhpcy5xdWV1ZS5wdXNoKHtvcHRpb25zOk0scmVzb2x2ZTp6fSksdGhpcy5jdXJyZW50QmFyfHx0aGlzLnByb2Nlc3NRdWV1ZSgpfSl9ZGlzbWlzcygpe3RoaXMuaGFuZGxlRGlzbWlzcygpfWNsZWFyUXVldWUoKXtmb3IobGV0IE0gb2YgdGhpcy5xdWV1ZSlNLnJlc29sdmUoe2FjdGlvbklkOiJkaXNtaXNzZWQiLHRpbWVkT3V0OiExfSk7dGhpcy5xdWV1ZT1bXX1hc3luYyBoaWRlQ3VycmVudEJhcigpe3RoaXMuY2xhc3NMaXN0LnJlbW92ZSgidmlzaWJsZSIpLHRoaXMuaXNWaXNpYmxlPSExLGF3YWl0IG5ldyBQcm9taXNlKE09PnNldFRpbWVvdXQoTSwyMjApKSx0aGlzLmN1cnJlbnRCYXI9bnVsbCx0aGlzLmN1cnJlbnRSZXNvbHZlPW51bGx9YXN5bmMgcHJvY2Vzc1F1ZXVlKCl7aWYodGhpcy5xdWV1ZS5sZW5ndGg9PT0wKXt0aGlzLmhpZGVDdXJyZW50QmFyKCk7cmV0dXJufWxldCBNPXRoaXMucXVldWUuc2hpZnQoKTt0aGlzLmN1cnJlbnRCYXI9TS5vcHRpb25zLHRoaXMuY3VycmVudFJlc29sdmU9TS5yZXNvbHZlLHRoaXMuaXNWaXNpYmxlPSEwLGF3YWl0IHRoaXMudXBkYXRlQ29tcGxldGUscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dGhpcy5jbGFzc0xpc3QuYWRkKCJ2aXNpYmxlIil9KSxNLm9wdGlvbnMudGltZW91dCYmdGhpcy5zdGFydFRpbWVvdXQoTS5vcHRpb25zLnRpbWVvdXQuZHVyYXRpb24sTS5vcHRpb25zLnRpbWVvdXQuZGVmYXVsdEFjdGlvbklkKX1zdGFydFRpbWVvdXQoTSx6KXt0aGlzLnRpbWVSZW1haW5pbmc9TSx0aGlzLnByb2dyZXNzUGVyY2VudD0xMDA7bGV0IE49RGF0ZS5ub3coKSxDPTUwO3RoaXMudGltZW91dEludGVydmFsPXNldEludGVydmFsKCgpPT57bGV0IF89RGF0ZS5ub3coKS1OO3RoaXMudGltZVJlbWFpbmluZz1NYXRoLm1heCgwLE0tXyksdGhpcy5wcm9ncmVzc1BlcmNlbnQ9dGhpcy50aW1lUmVtYWluaW5nL00qMTAwLHRoaXMudGltZVJlbWFpbmluZzw9MCYmKHRoaXMuY2xlYXJUaW1lb3V0SW50ZXJ2YWwoKSx0aGlzLmhhbmRsZUFjdGlvbih6LCEwKSl9LEMpfWNsZWFyVGltZW91dEludGVydmFsKCl7dGhpcy50aW1lb3V0SW50ZXJ2YWwmJihjbGVhckludGVydmFsKHRoaXMudGltZW91dEludGVydmFsKSx0aGlzLnRpbWVvdXRJbnRlcnZhbD1udWxsKX1oYW5kbGVBY3Rpb24oTSx6KXt0aGlzLmNsZWFyVGltZW91dEludGVydmFsKCksdGhpcy5jdXJyZW50UmVzb2x2ZSYmdGhpcy5jdXJyZW50UmVzb2x2ZSh7YWN0aW9uSWQ6TSx0aW1lZE91dDp6fSksdGhpcy5wcm9jZXNzUXVldWUoKX1oYW5kbGVEaXNtaXNzKCl7dGhpcy5oYW5kbGVBY3Rpb24oImRpc21pc3NlZCIsITEpfWFzeW5jIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLmNsZWFyVGltZW91dEludGVydmFsKCl9c3RhdGlje2p1KGEsdCl9fTtyZXR1cm4geT1hfSkoKX0pO3ZhciB2eWE9ZygoKT0+e30pO3ZhciB4eWE9ZygoKT0+e2EyZSgpO3Z5YSgpfSk7dmFyIHl5YSx3eWE9ZygoKT0+e3BlKCk7eXlhPWkoKCk9PndgCiAgPGRpdiBzdHlsZT0iZGlzcGxheTogZmxleDsgZ2FwOiA4cHg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7Ij4KICAgIDxkZWVzLWJhZGdlIC50ZXh0PSR7IkRlZmF1bHQifT48L2RlZXMtYmFkZ2U+CiAgICA8ZGVlcy1iYWRnZSAudHlwZT0keyJwcmltYXJ5In0gLnRleHQ9JHsiUHJpbWFyeSJ9PjwvZGVlcy1iYWRnZT4KICAgIDxkZWVzLWJhZGdlIC50eXBlPSR7InN1Y2Nlc3MifSAudGV4dD0keyJTdWNjZXNzIn0+PC9kZWVzLWJhZGdlPgogICAgPGRlZXMtYmFkZ2UgLnR5cGU9JHsid2FybmluZyJ9IC50ZXh0PSR7Ildhcm5pbmcifT48L2RlZXMtYmFkZ2U+CiAgICA8ZGVlcy1iYWRnZSAudHlwZT0keyJlcnJvciJ9IC50ZXh0PSR7IkVycm9yIn0+PC9kZWVzLWJhZGdlPgogICAgPGRlZXMtYmFkZ2UgLnR5cGU9JHsicHJpbWFyeSJ9IC5yb3VuZGVkPSR7ITB9IC50ZXh0PSR7IlJvdW5kZWQifT48L2RlZXMtYmFkZ2U+CiAgPC9kaXY+CmAsImRlbW9GdW5jIil9KTt2YXIgczJlLG83LExlcyxreWE9ZygoKT0+e3BlKCk7a3QoKTt3eWEoKTtodCgpO3MyZT1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sbzc9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LExlcz0oKCk9PntsZXQgcz1bbmUoImRlZXMtYmFkZ2UiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXTt2YXIgeD1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0JhZGdlIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IG09dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpTdHJpbmd9KV0scD1bTCh7dHlwZTpTdHJpbmd9KV0sYz1bTCh7dHlwZTpCb29sZWFufSldLHMyZSh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InR5cGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+InR5cGUiaW4gZiwiaGFzIiksZ2V0OmkoZj0+Zi50eXBlLCJnZXQiKSxzZXQ6aSgoZix5KT0+e2YudHlwZT15fSwic2V0Iil9LG1ldGFkYXRhOm19LG8sbCksczJlKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidGV4dCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShmPT4idGV4dCJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLnRleHQsImdldCIpLHNldDppKChmLHkpPT57Zi50ZXh0PXl9LCJzZXQiKX0sbWV0YWRhdGE6bX0sZCx1KSxzMmUodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJyb3VuZGVkIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGY9PiJyb3VuZGVkImluIGYsImhhcyIpLGdldDppKGY9PmYucm91bmRlZCwiZ2V0Iiksc2V0OmkoKGYseSk9PntmLnJvdW5kZWQ9eX0sInNldCIpfSxtZXRhZGF0YTptfSxiLHYpLHMyZShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTptfSxudWxsLHQpLHg9YT1lLnZhbHVlLG0mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6bX0pfXN0YXRpYyBkZW1vPXl5YTtzdGF0aWMgZGVtb0dyb3Vwcz1bIkZlZWRiYWNrIl07I2U9bzcodGhpcyxvLCJkZWZhdWx0Iik7Z2V0IHR5cGUoKXtyZXR1cm4gdGhpcy4jZX1zZXQgdHlwZShtKXt0aGlzLiNlPW19I3Q9KG83KHRoaXMsbCksbzcodGhpcyxkLCIiKSk7Z2V0IHRleHQoKXtyZXR1cm4gdGhpcy4jdH1zZXQgdGV4dChtKXt0aGlzLiN0PW19I2E9KG83KHRoaXMsdSksbzcodGhpcyxiLCExKSk7Z2V0IHJvdW5kZWQoKXtyZXR1cm4gdGhpcy4jYX1zZXQgcm91bmRlZChtKXt0aGlzLiNhPW19Y29uc3RydWN0b3IoKXtzdXBlcigpLG83KHRoaXMsdiksdGEuc2V0dXAoKX1zdGF0aWMgc3R5bGVzPVtxZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgLyogVE9ETzogTWlncmF0ZSBoYXJkY29kZWQgdmFsdWVzIHRvIC0tZGVlcy0qIENTUyB2YXJpYWJsZXMgKi8KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQoKICAgICAgLmJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDJweCA4cHg7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgLmJhZGdlLnJvdW5kZWQgewogICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICAgIH0KCiAgICAgIC5iYWRnZS5kZWZhdWx0IHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y1ZjVmNSIsIiMzMzMiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNjY2IiwiI2NjYyIpfTsKICAgICAgfQoKICAgICAgLmJhZGdlLnByaW1hcnkgewogICAgICAgIGJhY2tncm91bmQ6ICMwMDUwYjk7CiAgICAgICAgY29sb3I6ICNmZmZmZmY7CiAgICAgIH0KCiAgICAgIC5iYWRnZS5zdWNjZXNzIHsKICAgICAgICBiYWNrZ3JvdW5kOiAjMmU3ZDMyOwogICAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgICB9CgogICAgICAuYmFkZ2Uud2FybmluZyB7CiAgICAgICAgYmFja2dyb3VuZDogI2VkNmMwMjsKICAgICAgICBjb2xvcjogI2ZmZmZmZjsKICAgICAgfQoKICAgICAgLmJhZGdlLmVycm9yIHsKICAgICAgICBiYWNrZ3JvdW5kOiAjZTQwMDJiOwogICAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iYmFkZ2UgJHt0aGlzLnR5cGV9ICR7dGhpcy5yb3VuZGVkPyJyb3VuZGVkIjoiIn0iPgogICAgICAgICR7dGhpcy50ZXh0fQogICAgICA8L2Rpdj4KICAgIGB9c3RhdGlje283KGEsdCl9fTtyZXR1cm4geD1hfSkoKX0pO3ZhciBTeWE9ZygoKT0+e2t5YSgpfSk7dmFyIF95YSxNeWE9ZygoKT0+e3BlKCk7X3lhPWkoKCk9PndgCiAgPGRlZXMtaGludD48L2RlZXMtaGludD4KYCwiZGVtb0Z1bmMiKX0pO3ZhciB6eWEsY2x0LEVlcyxDeWE9ZygoKT0+e3BlKCk7a3QoKTtNeWEoKTtodCgpO3p5YT1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sY2x0PWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxFZXM9KCgpPT57bGV0IHM9W25lKCJkZWVzLWhpbnQiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXTt2YXIgcD1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc0hpbnQiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgZD10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZ30pXSx6eWEodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0eXBlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHU9PiJ0eXBlImluIHUsImhhcyIpLGdldDppKHU9PnUudHlwZSwiZ2V0Iiksc2V0OmkoKHUsYyk9Pnt1LnR5cGU9Y30sInNldCIpfSxtZXRhZGF0YTpkfSxvLGwpLHp5YShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpkfSxudWxsLHQpLHA9YT1lLnZhbHVlLGQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZH0pfXN0YXRpYyBkZW1vPV95YTtzdGF0aWMgZGVtb0dyb3Vwcz1bIkZlZWRiYWNrIl07I2U9Y2x0KHRoaXMsbywiaW5mbyIpO2dldCB0eXBlKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHR5cGUoZCl7dGhpcy4jZT1kfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSxjbHQodGhpcyxsKSx0YS5zZXR1cCgpfXN0YXRpYyBzdHlsZXM9W3FlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICAvKiBUT0RPOiBNaWdyYXRlIGhhcmRjb2RlZCB2YWx1ZXMgdG8gLS1kZWVzLSogQ1NTIHZhcmlhYmxlcyAqLwogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgIDxkaXYgY2xhc3M9Im1haW5ib3giPjwvZGl2PiBgfXN0YXRpY3tjbHQoYSx0KX19O3JldHVybiBwPWF9KSgpfSk7dmFyIFR5YT1nKCgpPT57Q3lhKCl9KTt2YXIgJHlhLER5YT1nKCgpPT57cGUoKTtJdCgpOyR5YT1pKCgpPT57bGV0IHM9W1siUmVzb2x2aW5nIHdvcmtzcGFjZSBwYWNrYWdlcyJdLFsiUmVzb2x2aW5nIHdvcmtzcGFjZSBwYWNrYWdlcyIsIkRvd25sb2FkaW5nIHVpLWFzc2V0cy50YXIuZ3oiXSxbIlJlc29sdmluZyB3b3Jrc3BhY2UgcGFja2FnZXMiLCJEb3dubG9hZGluZyB1aS1hc3NldHMudGFyLmd6IiwiVmVyaWZ5aW5nIGNoZWNrc3VtIl0sWyJSZXNvbHZpbmcgd29ya3NwYWNlIHBhY2thZ2VzIiwiRG93bmxvYWRpbmcgdWktYXNzZXRzLnRhci5neiIsIlZlcmlmeWluZyBjaGVja3N1bSIsIkV4dHJhY3RpbmcgcmVsZWFzZSBidW5kbGUiXSxbIlJlc29sdmluZyB3b3Jrc3BhY2UgcGFja2FnZXMiLCJEb3dubG9hZGluZyB1aS1hc3NldHMudGFyLmd6IiwiVmVyaWZ5aW5nIGNoZWNrc3VtIiwiRXh0cmFjdGluZyByZWxlYXNlIGJ1bmRsZSIsIlJlc3RhcnRpbmcgYXBwbGljYXRpb24iXV0sZT1pKHQ9PnQ+PTEwMD8iVXBsb2FkIGNvbXBsZXRlLiBGaW5hbGl6aW5nIHBhY2thZ2UgbWFuaWZlc3QuLi4iOnQ+PTgyPyJWZXJpZnlpbmcgY2hlY2tzdW1zIGJlZm9yZSBoYW5kb2ZmLi4uIjp0Pj01NT8iVXBsb2FkaW5nIHRodW1ibmFpbHMgdG8gZWRnZSBjYWNoZS4uLiI6dD49MjU/IlN0cmVhbWluZyBzb3VyY2UgZmlsZXMgdG8gdGhlIHJlbW90ZSB3b3JrZXIuLi4iOiJQcmVwYXJpbmcgYXJjaGl2ZSBhbmQgZGVwZW5kZW5jeSBncmFwaC4uLiIsImdldFVwbG9hZFN0YXR1cyIpO3JldHVybiB3YAogICAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgdD0+e2xldCBhPXQucXVlcnlTZWxlY3RvcigiI2xpdmUtcHJvZ3Jlc3MiKSxyPXQucXVlcnlTZWxlY3RvcigiI3Rlcm1pbmFsLXByb2dyZXNzIiksbj10O2lmKCFhfHwhcilyZXR1cm47bi5fX3Byb2dyZXNzYmFyRGVtb0ludGVydmFsSWQmJndpbmRvdy5jbGVhckludGVydmFsKG4uX19wcm9ncmVzc2JhckRlbW9JbnRlcnZhbElkKTtsZXQgbz0xMixsPTAscD1pKCgpPT57YS5wZXJjZW50YWdlPW8sYS5zdGF0dXNUZXh0PWUobyksci50ZXJtaW5hbExpbmVzPVsuLi5zW2xdXSxyLnBlcmNlbnRhZ2U9TWF0aC5taW4oMTAwLChsKzEpKjIwKSxyLmluZGV0ZXJtaW5hdGU9bDxzLmxlbmd0aC0xLG89bz49MTAwPzEyOk1hdGgubWluKDEwMCxvKzExKSxsPWw+PXMubGVuZ3RoLTE/MDpsKzF9LCJ1cGRhdGVEZW1vIik7cCgpLG4uX19wcm9ncmVzc2JhckRlbW9JbnRlcnZhbElkPXdpbmRvdy5zZXRJbnRlcnZhbChwLDE0MDApfX0+CiAgICAgIDxzdHlsZT4KICAgICAgICAke0pgCiAgICAgICAgICAuZGVtb0JveCB7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk1JSkiLCJoc2woMCAwJSA5JSkiKX07CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgICAgIHBhZGRpbmc6IDQwcHg7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIGdhcDogMjRweDsKICAgICAgICAgIH0KCiAgICAgICAgICAuZGVtb0ludHJvIHsKICAgICAgICAgICAgbWF4LXdpZHRoOiA3MjBweDsKICAgICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1IDIwJSAzMCUpIiwiaHNsKDIxNSAxOCUgNzYlKSIpfTsKICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgICAgfQoKICAgICAgICAgIC5zaG93Y2FzZUdyaWQgewogICAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDI4MHB4LCAxZnIpKTsKICAgICAgICAgICAgZ2FwOiAxOHB4OwogICAgICAgICAgfQoKICAgICAgICAgIC5zaG93Y2FzZUNhcmQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgyNTUsMjU1LDI1NSwwLjc4KSIsInJnYmEoMjU1LDI1NSwyNTUsMC4wNCkiKX07CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMjEwIDIyJSA4NiUpIiwiaHNsKDIxMCAxMCUgMTglKSIpfTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDsKICAgICAgICAgICAgcGFkZGluZzogMjBweDsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoOHB4KTsKICAgICAgICAgIH0KCiAgICAgICAgICAuc2hvd2Nhc2VDYXJkLndpZGUgewogICAgICAgICAgICBncmlkLWNvbHVtbjogc3BhbiAyOwogICAgICAgICAgfQoKICAgICAgICAgIC5zaG93Y2FzZUNhcmQgaDMgewogICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTVweDsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgIH0KCiAgICAgICAgICAuc2hvd2Nhc2VDYXJkIHAgewogICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNSAxNCUgNDAlKSIsImhzbCgyMTUgMTAlIDY2JSkiKX07CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTU7CiAgICAgICAgICB9CgogICAgICAgICAgLnByb2dyZXNzU3RhY2sgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICBnYXA6IDE0cHg7CiAgICAgICAgICB9CgogICAgICAgICAgLmNvZGVMYWJlbCB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnU0YgTW9ubycsICdNb25hY28nLCAnSW5jb25zb2xhdGEnLCAnRmlyYSBDb2RlJywgbW9ub3NwYWNlOwogICAgICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNSAxNCUgNDQlKSIsImhzbCgyMTUgMTAlIDcwJSkiKX07CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAzZW07CiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgICB9CgogICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDkwMHB4KSB7CiAgICAgICAgICAgIC5kZW1vQm94IHsKICAgICAgICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuc2hvd2Nhc2VDYXJkLndpZGUgewogICAgICAgICAgICAgIGdyaWQtY29sdW1uOiBzcGFuIDE7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICBgfQogICAgICA8L3N0eWxlPgogICAgICA8ZGl2IGNsYXNzPSJkZW1vQm94Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJkZW1vSW50cm8iPgogICAgICAgICAgPGNvZGU+ZGVlcy1wcm9ncmVzc2JhcjwvY29kZT4gY2FuIG5vdyBwYWlyIGEgY2xhc3NpYyBwcm9ncmVzcyBiYXIgd2l0aCBhIGZpeGVkLWhlaWdodCBzdGF0dXMgYXJlYS4gVXNlIHNpbXBsZSBzdGF0dXMgdGV4dCBmb3IgY2xlYXIgdXNlci1mYWNpbmcgdXBkYXRlcyBvciBzd2l0Y2ggdG8gdGVybWluYWwtbGlrZSBsaW5lcyB3aGVuIHlvdSB3YW50IHJlY2VudCBzdGVwcyB0byBzdGF5IHZpc2libGUgd2l0aG91dCBjYXVzaW5nIGxheW91dCBqdW1wcy4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzaG93Y2FzZUdyaWQiPgogICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNob3djYXNlQ2FyZCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvZGVMYWJlbCI+RGV0ZXJtaW5hdGU8L2Rpdj4KICAgICAgICAgICAgPGgzPlBlcmNlbnRhZ2UgcGx1cyBjdXJyZW50IHRhc2s8L2gzPgogICAgICAgICAgICA8cD5Vc2UgYSBsYWJlbCwgYSBwZXJjZW50YWdlLCBhbmQgb25lIHNob3J0IHN0YXR1cyBsaW5lIHdoZW4gdGhlIHdvcmsgaXMgbWVhc3VyYWJsZS48L3A+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzU3RhY2siPgogICAgICAgICAgICAgIDxkZWVzLXByb2dyZXNzYmFyCiAgICAgICAgICAgICAgICBsYWJlbD0iTWVkaWEgdXBsb2FkIgogICAgICAgICAgICAgICAgLnBlcmNlbnRhZ2U9JHs2OH0KICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ9IlVwbG9hZGluZyB0aHVtYm5haWxzIHRvIGVkZ2UgY2FjaGUuLi4iCiAgICAgICAgICAgICAgICAuc3RhdHVzUm93cz0kezJ9CiAgICAgICAgICAgICAgPjwvZGVlcy1wcm9ncmVzc2Jhcj4KICAgICAgICAgICAgICA8ZGVlcy1wcm9ncmVzc2JhcgogICAgICAgICAgICAgICAgbGFiZWw9IkFzc2V0IHN5bmMiCiAgICAgICAgICAgICAgICAucGVyY2VudGFnZT0kezEwMH0KICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ9IkFsbCBmaWxlcyBhcmUgc3luY2VkIGFuZCBhdmFpbGFibGUuIgogICAgICAgICAgICAgICAgLnN0YXR1c1Jvd3M9JHsyfQogICAgICAgICAgICAgID48L2RlZXMtcHJvZ3Jlc3NiYXI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzaG93Y2FzZUNhcmQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2RlTGFiZWwiPkluZGV0ZXJtaW5hdGU8L2Rpdj4KICAgICAgICAgICAgPGgzPlNwaW5uZXItc3R5bGUgdGV4dCBpbmRpY2F0b3I8L2gzPgogICAgICAgICAgICA8cD5XaGVuIHRoZXJlIGlzIG5vIHRydXN0d29ydGh5IHBlcmNlbnRhZ2UgeWV0LCBrZWVwIHRoZSBiYXIgbW92aW5nIGFuZCBsZXQgdGhlIHRleHQgZXhwbGFpbiB3aGF0IGlzIGhhcHBlbmluZy48L3A+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzU3RhY2siPgogICAgICAgICAgICAgIDxkZWVzLXByb2dyZXNzYmFyCiAgICAgICAgICAgICAgICBsYWJlbD0iRGVwZW5kZW5jeSBpbnN0YWxsIgogICAgICAgICAgICAgICAgLmluZGV0ZXJtaW5hdGU9JHshMH0KICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ9IkRvd25sb2FkaW5nIHBhY2thZ2UgbWV0YWRhdGEuLi4iCiAgICAgICAgICAgICAgICAuc3RhdHVzUm93cz0kezJ9CiAgICAgICAgICAgICAgPjwvZGVlcy1wcm9ncmVzc2Jhcj4KICAgICAgICAgICAgICA8ZGVlcy1wcm9ncmVzc2JhcgogICAgICAgICAgICAgICAgbGFiZWw9IlF1ZXVlZCBqb2IiCiAgICAgICAgICAgICAgICAucGVyY2VudGFnZT0kezMyfQogICAgICAgICAgICAgICAgLnNob3dQZXJjZW50YWdlPSR7ITF9CiAgICAgICAgICAgICAgICBzdGF0dXNUZXh0PSJXYWl0aW5nIGZvciBhIHdvcmtlciBzbG90IHRvIGJlY29tZSBhdmFpbGFibGUuLi4iCiAgICAgICAgICAgICAgICAuc3RhdHVzUm93cz0kezJ9CiAgICAgICAgICAgICAgPjwvZGVlcy1wcm9ncmVzc2Jhcj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNob3djYXNlQ2FyZCB3aWRlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29kZUxhYmVsIj5UZXJtaW5hbCBMaW5lczwvZGl2PgogICAgICAgICAgICA8aDM+Rml4ZWQtaGVpZ2h0IHRlcm1pbmFsLXN0eWxlIHN0YXR1cyBvdXRwdXQ8L2gzPgogICAgICAgICAgICA8cD5UaGUgcGFuZWwgc3RheXMgdGhlIHNhbWUgaGVpZ2h0IHdoaWxlIHRoZSBsYXRlc3Qgc3RlcCBzdGF5cyB2aXNpYmxlLiBUaGlzIGlzIHVzZWZ1bCBmb3IgdXBkYXRlIGZsb3dzLCBkb3dubG9hZHMsIGFuZCBzdGFnZWQgYmFja2dyb3VuZCB3b3JrLjwvcD4KICAgICAgICAgICAgPGRlZXMtcHJvZ3Jlc3NiYXIKICAgICAgICAgICAgICBpZD0idGVybWluYWwtcHJvZ3Jlc3MiCiAgICAgICAgICAgICAgbGFiZWw9IlJlbGVhc2UgYnVuZGxlIgogICAgICAgICAgICAgIC5wZXJjZW50YWdlPSR7MjB9CiAgICAgICAgICAgICAgLmluZGV0ZXJtaW5hdGU9JHshMH0KICAgICAgICAgICAgICAuc3RhdHVzUm93cz0kezR9CiAgICAgICAgICAgICAgLnRlcm1pbmFsTGluZXM9JHtzWzBdfQogICAgICAgICAgICA+PC9kZWVzLXByb2dyZXNzYmFyPgogICAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzaG93Y2FzZUNhcmQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2RlTGFiZWwiPkxpdmUgRGVtbzwvZGl2PgogICAgICAgICAgICA8aDM+VXBkYXRpbmcgcGVyY2VudGFnZSBhbmQgdGV4dCB0b2dldGhlcjwvaDM+CiAgICAgICAgICAgIDxwPkEgc2luZ2xlIGNvbXBvbmVudCBjYW4gZXhwcmVzcyBib3RoIGhvdyBmYXIgdGhlIGpvYiBpcyBhbmQgd2hpY2ggcGhhc2UgaXMgY3VycmVudGx5IGFjdGl2ZS48L3A+CiAgICAgICAgICAgIDxkZWVzLXByb2dyZXNzYmFyCiAgICAgICAgICAgICAgaWQ9ImxpdmUtcHJvZ3Jlc3MiCiAgICAgICAgICAgICAgbGFiZWw9IkN1c3RvbWVyIGV4cG9ydCIKICAgICAgICAgICAgICAucGVyY2VudGFnZT0kezEyfQogICAgICAgICAgICAgIHN0YXR1c1RleHQ9IlByZXBhcmluZyBhcmNoaXZlIGFuZCBkZXBlbmRlbmN5IGdyYXBoLi4uIgogICAgICAgICAgICAgIC5zdGF0dXNSb3dzPSR7Mn0KICAgICAgICAgICAgPjwvZGVlcy1wcm9ncmVzc2Jhcj4KICAgICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic2hvd2Nhc2VDYXJkIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29kZUxhYmVsIj5Db21wYXRpYmlsaXR5PC9kaXY+CiAgICAgICAgICAgIDxoMz5MZWdhY3kgPGNvZGU+dmFsdWU8L2NvZGU+IGFuZCA8Y29kZT5wcm9ncmVzczwvY29kZT4gaW5wdXRzPC9oMz4KICAgICAgICAgICAgPHA+RXhpc3RpbmcgdXNhZ2VzIGNhbiBrZWVwIHBhc3NpbmcgcGVyY2VudGFnZXMgZGlyZWN0bHkgb3Igbm9ybWFsaXplZCBwcm9ncmVzcyB2YWx1ZXMgZnJvbSAwIHRvIDEuPC9wPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzc1N0YWNrIj4KICAgICAgICAgICAgICA8ZGVlcy1wcm9ncmVzc2JhcgogICAgICAgICAgICAgICAgbGFiZWw9IkZyb20gdmFsdWUiCiAgICAgICAgICAgICAgICAudmFsdWU9JHs3NX0KICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ9Ik1pZ3JhdGluZyBleGlzdGluZyByZWFkbWUtc3R5bGUgdXNhZ2UuLi4iCiAgICAgICAgICAgICAgICAuc3RhdHVzUm93cz0kezJ9CiAgICAgICAgICAgICAgPjwvZGVlcy1wcm9ncmVzc2Jhcj4KICAgICAgICAgICAgICA8ZGVlcy1wcm9ncmVzc2JhcgogICAgICAgICAgICAgICAgbGFiZWw9IkZyb20gcHJvZ3Jlc3MiCiAgICAgICAgICAgICAgICAucHJvZ3Jlc3M9JHsuNDJ9CiAgICAgICAgICAgICAgICAuc2hvd1BlcmNlbnRhZ2U9JHshMX0KICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ9IlJlbmRlcmluZyBub3JtYWxpemVkIHByb2dyZXNzIGlucHV0Li4uIgogICAgICAgICAgICAgICAgLnN0YXR1c1Jvd3M9JHsyfQogICAgICAgICAgICAgID48L2RlZXMtcHJvZ3Jlc3NiYXI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KICBgfSwiZGVtb0Z1bmMiKX0pO3ZhciBQMix4cixQZXMsZGx0PWcoKCk9Pnt3MigpO0R5YSgpO3BlKCk7aHQoKTtQMj1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0seHI9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LFBlcz0oKCk9PntsZXQgcz1bbmUoImRlZXMtcHJvZ3Jlc3NiYXIiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXSxPLCQ9W10sRT1bXSxILGs9W10sUz1bXSxJLFA9W10sUj1bXSxLLFY9W10sVz1bXTt2YXIgbWU9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNQcm9ncmVzc2JhciIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBCPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6TnVtYmVyfSldLHA9W0woe3R5cGU6TnVtYmVyfSldLGM9W0woe3R5cGU6TnVtYmVyfSldLHg9W0woe3R5cGU6U3RyaW5nfSldLHk9W0woe3R5cGU6U3RyaW5nfSldLE49W0woe3R5cGU6QXJyYXl9KV0sTz1bTCh7dHlwZTpOdW1iZXJ9KV0sSD1bTCh7dHlwZTpCb29sZWFufSldLEk9W0woe3R5cGU6Qm9vbGVhbn0pXSxLPVtZKCldLFAyKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicGVyY2VudGFnZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4icGVyY2VudGFnZSJpbiBVLCJoYXMiKSxnZXQ6aShVPT5VLnBlcmNlbnRhZ2UsImdldCIpLHNldDppKChVLGhlKT0+e1UucGVyY2VudGFnZT1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxvLGwpLFAyKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidmFsdWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVT0+InZhbHVlImluIFUsImhhcyIpLGdldDppKFU9PlUudmFsdWUsImdldCIpLHNldDppKChVLGhlKT0+e1UudmFsdWU9aGV9LCJzZXQiKX0sbWV0YWRhdGE6Qn0sZCx1KSxQMih0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InByb2dyZXNzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFU9PiJwcm9ncmVzcyJpbiBVLCJoYXMiKSxnZXQ6aShVPT5VLnByb2dyZXNzLCJnZXQiKSxzZXQ6aSgoVSxoZSk9PntVLnByb2dyZXNzPWhlfSwic2V0Iil9LG1ldGFkYXRhOkJ9LGIsdiksUDIodGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJsYWJlbCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4ibGFiZWwiaW4gVSwiaGFzIiksZ2V0OmkoVT0+VS5sYWJlbCwiZ2V0Iiksc2V0OmkoKFUsaGUpPT57VS5sYWJlbD1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxtLGYpLFAyKHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToic3RhdHVzVGV4dCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4ic3RhdHVzVGV4dCJpbiBVLCJoYXMiKSxnZXQ6aShVPT5VLnN0YXR1c1RleHQsImdldCIpLHNldDppKChVLGhlKT0+e1Uuc3RhdHVzVGV4dD1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxNLHopLFAyKHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidGVybWluYWxMaW5lcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4idGVybWluYWxMaW5lcyJpbiBVLCJoYXMiKSxnZXQ6aShVPT5VLnRlcm1pbmFsTGluZXMsImdldCIpLHNldDppKChVLGhlKT0+e1UudGVybWluYWxMaW5lcz1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxDLF8pLFAyKHRoaXMsbnVsbCxPLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic3RhdHVzUm93cyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4ic3RhdHVzUm93cyJpbiBVLCJoYXMiKSxnZXQ6aShVPT5VLnN0YXR1c1Jvd3MsImdldCIpLHNldDppKChVLGhlKT0+e1Uuc3RhdHVzUm93cz1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSwkLEUpLFAyKHRoaXMsbnVsbCxILHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaW5kZXRlcm1pbmF0ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4iaW5kZXRlcm1pbmF0ZSJpbiBVLCJoYXMiKSxnZXQ6aShVPT5VLmluZGV0ZXJtaW5hdGUsImdldCIpLHNldDppKChVLGhlKT0+e1UuaW5kZXRlcm1pbmF0ZT1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxrLFMpLFAyKHRoaXMsbnVsbCxJLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2hvd1BlcmNlbnRhZ2UiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoVT0+InNob3dQZXJjZW50YWdlImluIFUsImhhcyIpLGdldDppKFU9PlUuc2hvd1BlcmNlbnRhZ2UsImdldCIpLHNldDppKChVLGhlKT0+e1Uuc2hvd1BlcmNlbnRhZ2U9aGV9LCJzZXQiKX0sbWV0YWRhdGE6Qn0sUCxSKSxQMih0aGlzLG51bGwsSyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImFjdGl2ZVNwaW5uZXJGcmFtZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShVPT4iYWN0aXZlU3Bpbm5lckZyYW1lImluIFUsImhhcyIpLGdldDppKFU9PlUuYWN0aXZlU3Bpbm5lckZyYW1lLCJnZXQiKSxzZXQ6aSgoVSxoZSk9PntVLmFjdGl2ZVNwaW5uZXJGcmFtZT1oZX0sInNldCIpfSxtZXRhZGF0YTpCfSxWLFcpLFAyKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOkJ9LG51bGwsdCksbWU9YT1lLnZhbHVlLEImJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Qn0pfXN0YXRpYyBkZW1vPSR5YTtzdGF0aWMgZGVtb0dyb3Vwcz1bIkZlZWRiYWNrIl07I2U9eHIodGhpcyxvLDApO2dldCBwZXJjZW50YWdlKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHBlcmNlbnRhZ2UoQil7dGhpcy4jZT1CfSN0PSh4cih0aGlzLGwpLHhyKHRoaXMsZCxudWxsKSk7Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuI3R9c2V0IHZhbHVlKEIpe3RoaXMuI3Q9Qn0jYT0oeHIodGhpcyx1KSx4cih0aGlzLGIsbnVsbCkpO2dldCBwcm9ncmVzcygpe3JldHVybiB0aGlzLiNhfXNldCBwcm9ncmVzcyhCKXt0aGlzLiNhPUJ9I3M9KHhyKHRoaXMsdikseHIodGhpcyxtLCIiKSk7Z2V0IGxhYmVsKCl7cmV0dXJuIHRoaXMuI3N9c2V0IGxhYmVsKEIpe3RoaXMuI3M9Qn0jaT0oeHIodGhpcyxmKSx4cih0aGlzLE0sIiIpKTtnZXQgc3RhdHVzVGV4dCgpe3JldHVybiB0aGlzLiNpfXNldCBzdGF0dXNUZXh0KEIpe3RoaXMuI2k9Qn0jcj0oeHIodGhpcyx6KSx4cih0aGlzLEMsW10pKTtnZXQgdGVybWluYWxMaW5lcygpe3JldHVybiB0aGlzLiNyfXNldCB0ZXJtaW5hbExpbmVzKEIpe3RoaXMuI3I9Qn0jbz0oeHIodGhpcyxfKSx4cih0aGlzLCQsMykpO2dldCBzdGF0dXNSb3dzKCl7cmV0dXJuIHRoaXMuI299c2V0IHN0YXR1c1Jvd3MoQil7dGhpcy4jbz1CfSNuPSh4cih0aGlzLEUpLHhyKHRoaXMsaywhMSkpO2dldCBpbmRldGVybWluYXRlKCl7cmV0dXJuIHRoaXMuI259c2V0IGluZGV0ZXJtaW5hdGUoQil7dGhpcy4jbj1CfSNsPSh4cih0aGlzLFMpLHhyKHRoaXMsUCwhMCkpO2dldCBzaG93UGVyY2VudGFnZSgpe3JldHVybiB0aGlzLiNsfXNldCBzaG93UGVyY2VudGFnZShCKXt0aGlzLiNsPUJ9I2M9KHhyKHRoaXMsUikseHIodGhpcyxWLDApKTtnZXQgYWN0aXZlU3Bpbm5lckZyYW1lKCl7cmV0dXJuIHRoaXMuI2N9c2V0IGFjdGl2ZVNwaW5uZXJGcmFtZShCKXt0aGlzLiNjPUJ9c3Bpbm5lckludGVydmFsSWQ9KHhyKHRoaXMsVyksbnVsbCk7c3Bpbm5lckZyYW1lcz1bInwiLCIvIiwiLSIsIlxcIl07c3RhdGljIHN0eWxlcz1bcWUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUocjQudGV4dCxpNC50ZXh0KX07CiAgICAgIH0KCiAgICAgIC5wcm9ncmVzc0JhckNvbnRhaW5lciB7CiAgICAgICAgbWluLXdpZHRoOiAyMDBweDsKICAgICAgICBwYWRkaW5nOiA4cHg7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLnByb2dyZXNzSGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgfQoKICAgICAgLnByb2dyZXNzTGFiZWwgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM7CiAgICAgIH0KCiAgICAgIC5wcm9ncmVzc1ZhbHVlIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUgMTUlIDQwJSkiLCJoc2woMjE1IDE1JSA3MCUpIil9OwogICAgICAgIGZvbnQtZmFtaWx5OiAnU0YgTW9ubycsICdNb25hY28nLCAnSW5jb25zb2xhdGEnLCAnRmlyYSBDb2RlJywgbW9ub3NwYWNlOwogICAgICB9CgogICAgICAucHJvZ3Jlc3NCYXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZWVlZWViIiwiIzQ0NCIpfTsKICAgICAgICBib3JkZXItdG9wOiAwLjVweCBzb2xpZCAke2guYmRUaGVtZSgidHJhbnNwYXJlbnQiLCIjNTU1Iil9OwogICAgICB9CgogICAgICAucHJvZ3Jlc3NCYXJGaWxsIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZShpNC5ibHVlQWN0aXZlLHI0LmJsdWVBY3RpdmUpfTsKICAgICAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjJzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5wcm9ncmVzc0JhckZpbGwuaW5kZXRlcm1pbmF0ZSB7CiAgICAgICAgd2lkdGg6IDM0JTsKICAgICAgICB0cmFuc2l0aW9uOiBub25lOwogICAgICAgIGFuaW1hdGlvbjogaW5kZXRlcm1pbmF0ZVNsaWRlIDEuMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICAgIH0KCiAgICAgIC5zdGF0dXNQYW5lbCB7CiAgICAgICAgbWFyZ2luLXRvcDogMTBweDsKICAgICAgICBoZWlnaHQ6IGNhbGModmFyKC0tc3RhdHVzLXJvd3MsIDMpICogMS4zNWVtICsgMTZweCk7CiAgICAgICAgbWluLWhlaWdodDogY2FsYyh2YXIoLS1zdGF0dXMtcm93cywgMykgKiAxLjM1ZW0gKyAxNnB4KTsKICAgICAgICBwYWRkaW5nOiA4cHggMTBweDsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDIxMCAyMCUgODYlKSIsImhzbCgyMTAgMTAlIDI2JSkiKX07CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgMzMlIDk4JSkiLCJoc2woMjIwIDIwJSAxMCUpIil9OwogICAgICAgIGZvbnQtZmFtaWx5OiAnU0YgTW9ubycsICdNb25hY28nLCAnSW5jb25zb2xhdGEnLCAnRmlyYSBDb2RlJywgbW9ub3NwYWNlOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBsaW5lLWhlaWdodDogMS4zNTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAuc3RhdHVzVGV4dFJvdywKICAgICAgLnRlcm1pbmFsTGluZSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBtaW4taGVpZ2h0OiAxLjM1ZW07CiAgICAgIH0KCiAgICAgIC50ZXJtaW5hbFNjcm9sbGVyIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgIH0KCiAgICAgIC50ZXJtaW5hbFNjcm9sbGVyOjotd2Via2l0LXNjcm9sbGJhciB7CiAgICAgICAgd2lkdGg6IDZweDsKICAgICAgfQoKICAgICAgLnRlcm1pbmFsU2Nyb2xsZXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxNSAxOCUgNzglKSIsImhzbCgyMTUgMTAlIDM0JSkiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7CiAgICAgIH0KCiAgICAgIC50ZXJtaW5hbFNjcm9sbGVyOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgIH0KCiAgICAgIC5saW5lUHJlZml4IHsKICAgICAgICB3aWR0aDogMWNoOwogICAgICAgIGZsZXg6IDAgMCAxY2g7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKGk0LmJsdWVBY3RpdmUscjQuYmx1ZUFjdGl2ZSl9OwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgfQoKICAgICAgLmxpbmVUZXh0IHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG1pbi13aWR0aDogMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMjAgMTUlIDI1JSkiLCJoc2woMjEwIDE1JSA4NiUpIil9OwogICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkOwogICAgICB9CgogICAgICAudGVybWluYWxMaW5lOm5vdCguY3VycmVudCkgLmxpbmVUZXh0IHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUgMTIlIDQyJSkiLCJoc2woMjE1IDEyJSA2MyUpIil9OwogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGluZGV0ZXJtaW5hdGVTbGlkZSB7CiAgICAgICAgMCUgewogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMjAlKTsKICAgICAgICB9CgogICAgICAgIDEwMCUgewogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDMyMCUpOwogICAgICAgIH0KICAgICAgfQogICAgYF07YXN5bmMgY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuc3luY1NwaW5uZXJTdGF0ZSgpfWFzeW5jIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7dGhpcy5zdG9wU3Bpbm5lcigpLGF3YWl0IHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCl9dXBkYXRlZChCKXtzdXBlci51cGRhdGVkKEIpLHRoaXMuc3luY1NwaW5uZXJTdGF0ZSgpLEIuaGFzKCJ0ZXJtaW5hbExpbmVzIikmJnRoaXMudGVybWluYWxMaW5lcy5sZW5ndGg+MCYmdGhpcy5zY3JvbGxUZXJtaW5hbFRvQm90dG9tKCl9cmVuZGVyKCl7bGV0IEI9dGhpcy5nZXRFZmZlY3RpdmVQZXJjZW50YWdlKCksVT0hIXRoaXMubGFiZWx8fHRoaXMuc2hvd1BlcmNlbnRhZ2UmJiF0aGlzLmluZGV0ZXJtaW5hdGUsaGU9dGhpcy50ZXJtaW5hbExpbmVzLmxlbmd0aD4wLEY9aGV8fHRoaXMuc3RhdHVzVGV4dC50cmltKCkubGVuZ3RoPjAsaj10aGlzLmdldFJlbmRlcmVkU3RhdHVzUm93cygpLHVlPXRoaXMuc3Bpbm5lckZyYW1lc1t0aGlzLmFjdGl2ZVNwaW5uZXJGcmFtZV0/P3RoaXMuc3Bpbm5lckZyYW1lc1swXTtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3NCYXJDb250YWluZXIiPgogICAgICAgICR7VT93YAogICAgICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3NIZWFkZXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzc0xhYmVsIj4ke3RoaXMubGFiZWx9PC9kaXY+CiAgICAgICAgICAgICR7dGhpcy5zaG93UGVyY2VudGFnZSYmIXRoaXMuaW5kZXRlcm1pbmF0ZT93YAogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzVmFsdWUiPiR7dGhpcy5mb3JtYXRQZXJjZW50YWdlKEIpfSU8L2Rpdj4KICAgICAgICAgICAgYDoiIn0KICAgICAgICAgIDwvZGl2PgogICAgICAgIGA6IiJ9CiAgICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3NCYXIiPgogICAgICAgICAgPGRpdgogICAgICAgICAgICBjbGFzcz0icHJvZ3Jlc3NCYXJGaWxsICR7dGhpcy5pbmRldGVybWluYXRlPyJpbmRldGVybWluYXRlIjoiIn0iCiAgICAgICAgICAgIHN0eWxlPSIke3RoaXMuaW5kZXRlcm1pbmF0ZT8iIjpgd2lkdGg6ICR7Qn0lO2B9IgogICAgICAgICAgPjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgICR7Rj93YAogICAgICAgICAgPGRpdgogICAgICAgICAgICBjbGFzcz0ic3RhdHVzUGFuZWwiCiAgICAgICAgICAgIHN0eWxlPSItLXN0YXR1cy1yb3dzOiAke2p9OyIKICAgICAgICAgICAgYXJpYS1saXZlPSJwb2xpdGUiCiAgICAgICAgICAgIGFyaWEtYXRvbWljPSJ0cnVlIgogICAgICAgICAgPgogICAgICAgICAgICAke2hlP3dgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVybWluYWxTY3JvbGxlciI+CiAgICAgICAgICAgICAgICAke3RoaXMudGVybWluYWxMaW5lcy5tYXAoKGxlLFEpPT57bGV0IGllPVE9PT10aGlzLnRlcm1pbmFsTGluZXMubGVuZ3RoLTEsdGU9dGhpcy5pbmRldGVybWluYXRlJiZpZT91ZToiPiI7cmV0dXJuIHdgCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVybWluYWxMaW5lICR7aWU/ImN1cnJlbnQiOiIifSI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZVByZWZpeCI+JHt0ZX08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZVRleHQiPiR7bGV9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICBgfSl9CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGA6d2AKICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0dXNUZXh0Um93Ij4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lUHJlZml4Ij4ke3RoaXMuaW5kZXRlcm1pbmF0ZT91ZToiPiJ9PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVUZXh0Ij4ke3RoaXMuc3RhdHVzVGV4dH08L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGB9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgOiIifQogICAgICA8L2Rpdj4KICAgIGB9Z2V0RWZmZWN0aXZlUGVyY2VudGFnZSgpe2lmKHR5cGVvZiB0aGlzLnZhbHVlPT0ibnVtYmVyIiYmTnVtYmVyLmlzRmluaXRlKHRoaXMudmFsdWUpKXJldHVybiB0aGlzLmNsYW1wUGVyY2VudGFnZSh0aGlzLnZhbHVlKTtpZih0eXBlb2YgdGhpcy5wcm9ncmVzcz09Im51bWJlciImJk51bWJlci5pc0Zpbml0ZSh0aGlzLnByb2dyZXNzKSl7bGV0IEI9dGhpcy5wcm9ncmVzcz49MCYmdGhpcy5wcm9ncmVzczw9MT90aGlzLnByb2dyZXNzKjEwMDp0aGlzLnByb2dyZXNzO3JldHVybiB0aGlzLmNsYW1wUGVyY2VudGFnZShCKX1yZXR1cm4gdGhpcy5jbGFtcFBlcmNlbnRhZ2UodGhpcy5wZXJjZW50YWdlKX1nZXRSZW5kZXJlZFN0YXR1c1Jvd3MoKXtsZXQgQj1OdW1iZXIuaXNGaW5pdGUodGhpcy5zdGF0dXNSb3dzKT9NYXRoLmZsb29yKHRoaXMuc3RhdHVzUm93cyk6MztyZXR1cm4gTWF0aC5tYXgoMSxCKX1jbGFtcFBlcmNlbnRhZ2UoQil7cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5taW4oMTAwLEIpKX1mb3JtYXRQZXJjZW50YWdlKEIpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKEIpP2Ake0J9YDpCLnRvRml4ZWQoMSkucmVwbGFjZSgvXC4wJC8sIiIpfXN5bmNTcGlubmVyU3RhdGUoKXtsZXQgQj10aGlzLmluZGV0ZXJtaW5hdGUmJih0aGlzLnN0YXR1c1RleHQudHJpbSgpLmxlbmd0aD4wfHx0aGlzLnRlcm1pbmFsTGluZXMubGVuZ3RoPjApO2lmKEImJnRoaXMuc3Bpbm5lckludGVydmFsSWQ9PT1udWxsKXt0aGlzLnNwaW5uZXJJbnRlcnZhbElkPXdpbmRvdy5zZXRJbnRlcnZhbCgoKT0+e3RoaXMuYWN0aXZlU3Bpbm5lckZyYW1lPSh0aGlzLmFjdGl2ZVNwaW5uZXJGcmFtZSsxKSV0aGlzLnNwaW5uZXJGcmFtZXMubGVuZ3RofSwxMjApO3JldHVybn1CfHx0aGlzLnN0b3BTcGlubmVyKCl9c3RvcFNwaW5uZXIoKXt0aGlzLnNwaW5uZXJJbnRlcnZhbElkIT09bnVsbCYmKHdpbmRvdy5jbGVhckludGVydmFsKHRoaXMuc3Bpbm5lckludGVydmFsSWQpLHRoaXMuc3Bpbm5lckludGVydmFsSWQ9bnVsbCksdGhpcy5hY3RpdmVTcGlubmVyRnJhbWU9MH1zY3JvbGxUZXJtaW5hbFRvQm90dG9tKCl7bGV0IEI9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIudGVybWluYWxTY3JvbGxlciIpO0ImJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntCLnNjcm9sbFRvcD1CLnNjcm9sbEhlaWdodH0pfXN0YXRpY3t4cihhLHQpfX07cmV0dXJuIG1lPWF9KSgpfSk7dmFyIEx5YT1nKCgpPT57ZGx0KCl9KTt2YXIgaTJlLG43LEllcyxFeWE9ZygoKT0+e3BlKCk7a3QoKTtodCgpO2kyZT1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sbjc9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LEllcz0oKCk9PntsZXQgcz1bbmUoImRlZXMtc3Bpbm5lciIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdO3ZhciB4PWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzU3Bpbm5lciIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBtPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6TnVtYmVyfSldLHA9W0woe3R5cGU6U3RyaW5nfSldLGM9W0woKV0saTJlKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2l6ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShmPT4ic2l6ZSJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLnNpemUsImdldCIpLHNldDppKChmLHkpPT57Zi5zaXplPXl9LCJzZXQiKX0sbWV0YWRhdGE6bX0sbyxsKSxpMmUodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJibnciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZj0+ImJudyJpbiBmLCJoYXMiKSxnZXQ6aShmPT5mLmJudywiZ2V0Iiksc2V0OmkoKGYseSk9PntmLmJudz15fSwic2V0Iil9LG1ldGFkYXRhOm19LGQsdSksaTJlKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic3RhdHVzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGY9PiJzdGF0dXMiaW4gZiwiaGFzIiksZ2V0OmkoZj0+Zi5zdGF0dXMsImdldCIpLHNldDppKChmLHkpPT57Zi5zdGF0dXM9eX0sInNldCIpfSxtZXRhZGF0YTptfSxiLHYpLGkyZShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTptfSxudWxsLHQpLHg9YT1lLnZhbHVlLG0mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6bX0pfXN0YXRpYyBkZW1vR3JvdXBzPVsiRmVlZGJhY2siXTtzdGF0aWMgZGVtbz1pKCgpPT53YAogICAgPGRlZXMtc3Bpbm5lcj48L2RlZXMtc3Bpbm5lcj4KICAgIDxkZWVzLXNwaW5uZXIgc3RhdHVzPSJzdWNjZXNzIj48L2RlZXMtc3Bpbm5lcj4KICAgIDxkZWVzLXNwaW5uZXIgc3RhdHVzPSJlcnJvciI+PC9kZWVzLXNwaW5uZXI+CiAgICA8ZGVlcy1zcGlubmVyIHNpemU9JHs2NH0gc3RhdHVzPSJzdWNjZXNzIj48L2RlZXMtc3Bpbm5lcj4KICAgIDxkZWVzLXNwaW5uZXIgLnNpemU9JHs2NH0gc3RhdHVzPSJlcnJvciI+PC9kZWVzLXNwaW5uZXI+CiAgYCwiZGVtbyIpOyNlPW43KHRoaXMsbywyMCk7Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy4jZX1zZXQgc2l6ZShtKXt0aGlzLiNlPW19I3Q9KG43KHRoaXMsbCksbjcodGhpcyxkLCExKSk7Z2V0IGJudygpe3JldHVybiB0aGlzLiN0fXNldCBibncobSl7dGhpcy4jdD1tfSNhPShuNyh0aGlzLHUpLG43KHRoaXMsYiwibm9ybWFsIikpO2dldCBzdGF0dXMoKXtyZXR1cm4gdGhpcy4jYX1zZXQgc3RhdHVzKG0pe3RoaXMuI2E9bX1jb25zdHJ1Y3Rvcigpe3N1cGVyKCksbjcodGhpcyx2KX1zdGF0aWMgc3R5bGVzPVtxZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgLyogVE9ETzogTWlncmF0ZSBoYXJkY29kZWQgdmFsdWVzIHRvIC0tZGVlcy0qIENTUyB2YXJpYWJsZXMgKi8KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICAjbG9hZGluZyB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHRyYW5zaXRpb246IG5vbmU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgYmFja2dyb3VuZDogIzhiYzM0YTAwOwogICAgICAgIGJvcmRlcjogM3B4IHNvbGlkICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMSkiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMykiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIGJvcmRlci10b3AtY29sb3I6ICR7aC5iZFRoZW1lKCIjMzMzIiwiI2ZmZiIpfTsKICAgICAgICBhbmltYXRpb246IHNwaW4gMXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IHNwaW4gMXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICAgIH0KCiAgICAgICNsb2FkaW5nLnN1Y2Nlc3MgewogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYW5pbWF0aW9uOiBub25lOwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBub25lOwogICAgICB9CgogICAgICAjbG9hZGluZy5lcnJvciB7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICBhbmltYXRpb246IG5vbmU7CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IG5vbmU7CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMgc3BpbiB7CiAgICAgICAgdG8gewogICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgICAgIH0KICAgICAgfQogICAgICBALXdlYmtpdC1rZXlmcmFtZXMgc3BpbiB7CiAgICAgICAgdG8gewogICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgZGVlcy1pY29uIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPHN0eWxlPgogICAgICAgICNsb2FkaW5nIHsKICAgICAgICAgIHdpZHRoOiAke3RoaXMuc2l6ZX1weDsKICAgICAgICAgIGhlaWdodDogJHt0aGlzLnNpemV9cHg7CiAgICAgICAgfQogICAgICAgICNsb2FkaW5nLnN1Y2Nlc3MgewogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKHRoaXMuYm53PyIjMzMzIjoiIzhiYzM0YSIsdGhpcy5ibnc/IiNmZmYiOiIjOGJjMzRhIil9OwogICAgICAgICAgCiAgICAgICAgfQogICAgICAgICNsb2FkaW5nLmVycm9yIHsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSh0aGlzLmJudz8iIzMzMyI6IiNlNjRhMTkiLHRoaXMuYm53PyIjZmZmIjoiI2U2NGExOSIpfTsKICAgICAgICB9CiAgICAgICAgZGVlcy1pY29uIHsKICAgICAgICAgIGZvbnQtc2l6ZTogJHt0aGlzLnNpemV9cHg7CiAgICAgICAgfQogICAgICA8L3N0eWxlPgogICAgICA8ZGl2IGNsYXNzPSIke3RoaXMuc3RhdHVzfSIgaWQ9ImxvYWRpbmciPgogICAgICAgICR7KCgpPT57aWYodGhpcy5zdGF0dXM9PT0ic3VjY2VzcyIpcmV0dXJuIHdgPGRlZXMtaWNvbiBzdHlsZT0idHJhbnNmb3JtOiB0cmFuc2xhdGVYKDElKSB0cmFuc2xhdGVZKDMlKTsiIC5pY29uPSR7ImZhOmNpcmNsZS1jaGVjayJ9PjwvZGVlcy1pY29uPmA7aWYodGhpcy5zdGF0dXM9PT0iZXJyb3IiKXJldHVybiB3YDxkZWVzLWljb24gLmljb249JHsiZmE6Y2lyY2xlLXhtYXJrIn0+PC9kZWVzLWljb24+YH0pKCl9CiAgICAgIDwvZGl2PgogICAgYH1zdGF0aWN7bjcoYSx0KX19O3JldHVybiB4PWF9KSgpfSk7dmFyIFB5YT1nKCgpPT57RXlhKCl9KTt2YXIgSXlhLEF5YT1nKCgpPT57cGUoKTt1bHQoKTtIZygpO0l5YT1pKCgpPT53YAogICAgPHN0eWxlPgogICAgICAuZGVtby1jb250YWluZXIgewogICAgICAgIHBhZGRpbmc6IDMycHg7CiAgICAgICAgbWluLWhlaWdodDogMTAwdmg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmOGY5ZmEiLCIjMGEwYTBhIil9OwogICAgICB9CgogICAgICAuZGVtby1zZWN0aW9uIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiA0OHB4OwogICAgICB9CgogICAgICAuZGVtby10aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAyNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzMzMiLCIjZmZmIil9OwogICAgICB9CgogICAgICAuZGVtby1kZXNjcmlwdGlvbiB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzY2NiIsIiNhYWEiKX07CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgICAgfQoKICAgICAgLmJ1dHRvbi1ncmlkIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjAwcHgsIDFmcikpOwogICAgICAgIGdhcDogMTZweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAzMnB4OwogICAgICB9CgogICAgICAudGhlbWUtdG9nZ2xlIHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgdG9wOiAxNnB4OwogICAgICAgIHJpZ2h0OiAxNnB4OwogICAgICAgIHotaW5kZXg6IDEwMDsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICAgIDxkZWVzLWJ1dHRvbiBjbGFzcz0idGhlbWUtdG9nZ2xlIiBAY2xpY2tlZD0keygpPT57ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCJicmlnaHQiKX19PlRvZ2dsZSBUaGVtZTwvZGVlcy1idXR0b24+CgogICAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICAgIDxoMiBjbGFzcz0iZGVtby10aXRsZSI+VG9hc3QgVHlwZXM8L2gyPgogICAgICAgIDxwIGNsYXNzPSJkZW1vLWRlc2NyaXB0aW9uIj4KICAgICAgICAgIERpZmZlcmVudCB0b2FzdCB0eXBlcyBmb3IgdmFyaW91cyBub3RpZmljYXRpb24gc2NlbmFyaW9zLiBDbGljayBhbnkgYnV0dG9uIHRvIHNob3cgYSB0b2FzdC4KICAgICAgICA8L3A+CiAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLWdyaWQiPgogICAgICAgICAgPGRlZXMtYnV0dG9uIEBjbGlja2VkPSR7KCk9Pnt5cy5pbmZvKCJUaGlzIGlzIGFuIGluZm9ybWF0aW9uYWwgbWVzc2FnZSIpfX0+SW5mbyBUb2FzdDwvZGVlcy1idXR0b24+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWJ1dHRvbiB0eXBlPSJoaWdobGlnaHRlZCIgQGNsaWNrZWQ9JHsoKT0+e3lzLnN1Y2Nlc3MoIk9wZXJhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5ISIpfX0+U3VjY2VzcyBUb2FzdDwvZGVlcy1idXR0b24+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWJ1dHRvbiBAY2xpY2tlZD0keygpPT57eXMud2FybmluZygiUGxlYXNlIHJldmlldyBiZWZvcmUgcHJvY2VlZGluZyIpfX0+V2FybmluZyBUb2FzdDwvZGVlcy1idXR0b24+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWJ1dHRvbiBAY2xpY2tlZD0keygpPT57eXMuZXJyb3IoIkFuIGVycm9yIG9jY3VycmVkIHdoaWxlIHByb2Nlc3NpbmciKX19PkVycm9yIFRvYXN0PC9kZWVzLWJ1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICAgIDxoMiBjbGFzcz0iZGVtby10aXRsZSI+VG9hc3QgUG9zaXRpb25zPC9oMj4KICAgICAgICA8cCBjbGFzcz0iZGVtby1kZXNjcmlwdGlvbiI+CiAgICAgICAgICBUb2FzdHMgY2FuIGFwcGVhciBpbiBkaWZmZXJlbnQgcG9zaXRpb25zIG9uIHRoZSBzY3JlZW4uCiAgICAgICAgPC9wPgogICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ncmlkIj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiBAY2xpY2tlZD0keygpPT57eXMuc2hvdyh7bWVzc2FnZToiVG9wIFJpZ2h0IFBvc2l0aW9uIix0eXBlOiJpbmZvIixwb3NpdGlvbjoidG9wLXJpZ2h0In0pfX0+VG9wIFJpZ2h0PC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtYnV0dG9uIEBjbGlja2VkPSR7KCk9Pnt5cy5zaG93KHttZXNzYWdlOiJUb3AgTGVmdCBQb3NpdGlvbiIsdHlwZToiaW5mbyIscG9zaXRpb246InRvcC1sZWZ0In0pfX0+VG9wIExlZnQ8L2RlZXMtYnV0dG9uPgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrZWQ9JHsoKT0+e3lzLnNob3coe21lc3NhZ2U6IkJvdHRvbSBSaWdodCBQb3NpdGlvbiIsdHlwZToiaW5mbyIscG9zaXRpb246ImJvdHRvbS1yaWdodCJ9KX19PkJvdHRvbSBSaWdodDwvZGVlcy1idXR0b24+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWJ1dHRvbiBAY2xpY2tlZD0keygpPT57eXMuc2hvdyh7bWVzc2FnZToiQm90dG9tIExlZnQgUG9zaXRpb24iLHR5cGU6ImluZm8iLHBvc2l0aW9uOiJib3R0b20tbGVmdCJ9KX19PkJvdHRvbSBMZWZ0PC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtYnV0dG9uIEBjbGlja2VkPSR7KCk9Pnt5cy5zaG93KHttZXNzYWdlOiJUb3AgQ2VudGVyIFBvc2l0aW9uIix0eXBlOiJpbmZvIixwb3NpdGlvbjoidG9wLWNlbnRlciJ9KX19PlRvcCBDZW50ZXI8L2RlZXMtYnV0dG9uPgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrZWQ9JHsoKT0+e3lzLnNob3coe21lc3NhZ2U6IkJvdHRvbSBDZW50ZXIgUG9zaXRpb24iLHR5cGU6ImluZm8iLHBvc2l0aW9uOiJib3R0b20tY2VudGVyIn0pfX0+Qm90dG9tIENlbnRlcjwvZGVlcy1idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgICA8aDIgY2xhc3M9ImRlbW8tdGl0bGUiPkR1cmF0aW9uIE9wdGlvbnM8L2gyPgogICAgICAgIDxwIGNsYXNzPSJkZW1vLWRlc2NyaXB0aW9uIj4KICAgICAgICAgIENvbnRyb2wgaG93IGxvbmcgdG9hc3RzIHN0YXkgdmlzaWJsZS4gRHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzLgogICAgICAgIDwvcD4KICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tZ3JpZCI+CiAgICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrZWQ9JHsoKT0+e3lzLnNob3coe21lc3NhZ2U6IlF1aWNrIHRvYXN0ICgxIHNlY29uZCkiLHR5cGU6ImluZm8iLGR1cmF0aW9uOjFlM30pfX0+MSBTZWNvbmQ8L2RlZXMtYnV0dG9uPgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrZWQ9JHsoKT0+e3lzLnNob3coe21lc3NhZ2U6IlN0YW5kYXJkIHRvYXN0ICgzIHNlY29uZHMpIix0eXBlOiJpbmZvIixkdXJhdGlvbjozZTN9KX19PjMgU2Vjb25kcyAoRGVmYXVsdCk8L2RlZXMtYnV0dG9uPgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrZWQ9JHsoKT0+e3lzLnNob3coe21lc3NhZ2U6IkxvbmcgdG9hc3QgKDUgc2Vjb25kcykiLHR5cGU6ImluZm8iLGR1cmF0aW9uOjVlM30pfX0+NSBTZWNvbmRzPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtYnV0dG9uIEBjbGlja2VkPSR7KCk9Pnt5cy5zaG93KHttZXNzYWdlOiJNYW51YWwgZGlzbWlzcyBvbmx5IChjbGljayB0byBjbG9zZSkiLHR5cGU6Indhcm5pbmciLGR1cmF0aW9uOjB9KX19Pk5vIEF1dG8tRGlzbWlzczwvZGVlcy1idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgICA8aDIgY2xhc3M9ImRlbW8tdGl0bGUiPk11bHRpcGxlIFRvYXN0czwvaDI+CiAgICAgICAgPHAgY2xhc3M9ImRlbW8tZGVzY3JpcHRpb24iPgogICAgICAgICAgTXVsdGlwbGUgdG9hc3RzIHN0YWNrIGF1dG9tYXRpY2FsbHkuIFRoZXkgbWFpbnRhaW4gdGhlaXIgb3JkZXIgYW5kIGFuaW1hdGUgc21vb3RobHkuCiAgICAgICAgPC9wPgogICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1ncmlkIj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiBAY2xpY2tlZD0keygpPT57eXMuaW5mbygiRmlyc3Qgbm90aWZpY2F0aW9uIiksc2V0VGltZW91dCgoKT0+eXMuc3VjY2VzcygiU2Vjb25kIG5vdGlmaWNhdGlvbiIpLDIwMCksc2V0VGltZW91dCgoKT0+eXMud2FybmluZygiVGhpcmQgbm90aWZpY2F0aW9uIiksNDAwKSxzZXRUaW1lb3V0KCgpPT55cy5lcnJvcigiRm91cnRoIG5vdGlmaWNhdGlvbiIpLDYwMCl9fT5TaG93IE11bHRpcGxlPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtYnV0dG9uIEBjbGlja2VkPSR7KCk9Pntmb3IobGV0IHM9MTtzPD01O3MrKylzZXRUaW1lb3V0KCgpPT57eXMuc2hvdyh7bWVzc2FnZTpgTm90aWZpY2F0aW9uICMke3N9YCx0eXBlOnMlMj09PTA/InN1Y2Nlc3MiOiJpbmZvIixkdXJhdGlvbjoyZTMrcyo1MDB9KX0scyoxMDApfX0+UmFwaWQgRmlyZTwvZGVlcy1idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgICA8aDIgY2xhc3M9ImRlbW8tdGl0bGUiPlJlYWwtV29ybGQgRXhhbXBsZXM8L2gyPgogICAgICAgIDxwIGNsYXNzPSJkZW1vLWRlc2NyaXB0aW9uIj4KICAgICAgICAgIENvbW1vbiB1c2UgY2FzZXMgZm9yIHRvYXN0IG5vdGlmaWNhdGlvbnMgaW4gYXBwbGljYXRpb25zLgogICAgICAgIDwvcD4KICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tZ3JpZCI+CiAgICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrZWQ9JHthc3luYygpPT57bGV0IHM9YXdhaXQgeXMuc2hvdyh7bWVzc2FnZToiU2F2aW5nIGNoYW5nZXMuLi4iLHR5cGU6ImluZm8iLGR1cmF0aW9uOjB9KTtzZXRUaW1lb3V0KCgpPT57cy5kaXNtaXNzKCkseXMuc3VjY2VzcygiQ2hhbmdlcyBzYXZlZCBzdWNjZXNzZnVsbHkhIil9LDJlMyl9fT5TYXZlIE9wZXJhdGlvbjwvZGVlcy1idXR0b24+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWJ1dHRvbiBAY2xpY2tlZD0keygpPT57eXMuZXJyb3IoIkZhaWxlZCB0byBjb25uZWN0IHRvIHNlcnZlci4gUGxlYXNlIGNoZWNrIHlvdXIgaW50ZXJuZXQgY29ubmVjdGlvbi4iKX19Pk5ldHdvcmsgRXJyb3I8L2RlZXMtYnV0dG9uPgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrZWQ9JHsoKT0+e3lzLndhcm5pbmcoIllvdXIgc2Vzc2lvbiB3aWxsIGV4cGlyZSBpbiA1IG1pbnV0ZXMiKX19PlNlc3Npb24gV2FybmluZzwvZGVlcy1idXR0b24+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWJ1dHRvbiBAY2xpY2tlZD0keygpPT57eXMuc3VjY2VzcygiRmlsZSB1cGxvYWRlZCBzdWNjZXNzZnVsbHkhIil9fT5VcGxvYWQgQ29tcGxldGU8L2RlZXMtYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgyIGNsYXNzPSJkZW1vLXRpdGxlIj5Qcm9ncmFtbWF0aWMgQ29udHJvbDwvaDI+CiAgICAgICAgPHAgY2xhc3M9ImRlbW8tZGVzY3JpcHRpb24iPgogICAgICAgICAgQWR2YW5jZWQgY29udHJvbCBvdmVyIHRvYXN0IGJlaGF2aW9yLgogICAgICAgIDwvcD4KICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b24tZ3JpZCI+CiAgICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrZWQ9JHthc3luYygpPT57bGV0IHM9YXdhaXQgeXMuc2hvdyh7bWVzc2FnZToiVGhpcyB0b2FzdCBjYW4gYmUgZGlzbWlzc2VkIHByb2dyYW1tYXRpY2FsbHkiLHR5cGU6ImluZm8iLGR1cmF0aW9uOjB9KTtzZXRUaW1lb3V0KCgpPT57cy5kaXNtaXNzKCkseXMuc3VjY2VzcygiVG9hc3QgZGlzbWlzc2VkIGFmdGVyIDIgc2Vjb25kcyIpfSwyZTMpfX0+UHJvZ3JhbW1hdGljIERpc21pc3M8L2RlZXMtYnV0dG9uPgogICAgICAgICAgCiAgICAgICAgICA8ZGVlcy1idXR0b24gQGNsaWNrZWQ9JHsoKT0+e3lzLmluZm8oIkluZm8gbWVzc2FnZSIsMmUzKSxzZXRUaW1lb3V0KCgpPT55cy5zdWNjZXNzKCJTdWNjZXNzIG1lc3NhZ2UiLDJlMyksNTAwKSxzZXRUaW1lb3V0KCgpPT55cy53YXJuaW5nKCJXYXJuaW5nIG1lc3NhZ2UiLDJlMyksMWUzKSxzZXRUaW1lb3V0KCgpPT55cy5lcnJvcigiRXJyb3IgbWVzc2FnZSIsMmUzKSwxNTAwKX19PkNvbnZlbmllbmNlIE1ldGhvZHM8L2RlZXMtYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIGAsImRlbW9GdW5jIil9KTt2YXIgZUosVnUseXMsdWx0PWcoKCk9PntwZSgpO2t0KCk7R24oKTtBeWEoKTtFcigpO2h0KCk7ZUo9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LFZ1PWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSx5cz0oKCk9PntsZXQgcz1bbmUoImRlZXMtdG9hc3QiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXTt2YXIgeT1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1RvYXN0Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IE09dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpTdHJpbmd9KV0scD1bTCh7dHlwZTpTdHJpbmd9KV0sYz1bTCh7dHlwZTpOdW1iZXJ9KV0seD1bTCh7dHlwZTpCb29sZWFuLHJlZmxlY3Q6ITB9KV0sZUoodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtZXNzYWdlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJtZXNzYWdlImluIHosImhhcyIpLGdldDppKHo9PnoubWVzc2FnZSwiZ2V0Iiksc2V0OmkoKHosTik9Pnt6Lm1lc3NhZ2U9Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxvLGwpLGVKKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidHlwZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4idHlwZSJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LnR5cGUsImdldCIpLHNldDppKCh6LE4pPT57ei50eXBlPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sZCx1KSxlSih0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImR1cmF0aW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJkdXJhdGlvbiJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LmR1cmF0aW9uLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3ouZHVyYXRpb249Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxiLHYpLGVKKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNWaXNpYmxlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJpc1Zpc2libGUiaW4geiwiaGFzIiksZ2V0Omkoej0+ei5pc1Zpc2libGUsImdldCIpLHNldDppKCh6LE4pPT57ei5pc1Zpc2libGU9Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxtLGYpLGVKKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOk19LG51bGwsdCkseT1hPWUudmFsdWUsTSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpNfSl9c3RhdGljIGRlbW89SXlhO3N0YXRpYyBkZW1vR3JvdXBzPVsiRmVlZGJhY2siLCJPdmVybGF5Il07c3RhdGljIHRvYXN0Q29udGFpbmVycz1uZXcgTWFwO3N0YXRpYyBnZXRPckNyZWF0ZUNvbnRhaW5lcihNKXtpZighdGhpcy50b2FzdENvbnRhaW5lcnMuaGFzKE0pKXtsZXQgej1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtzd2l0Y2goei5jbGFzc05hbWU9YHRvYXN0LWNvbnRhaW5lciB0b2FzdC1jb250YWluZXItJHtNfWAsei5zdHlsZS5jc3NUZXh0PWAKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgei1pbmRleDogJHtiby5vdmVybGF5LnRvYXN0fTsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDhweDsKICAgICAgYCxNKXtjYXNlInRvcC1yaWdodCI6ei5zdHlsZS50b3A9IjAiLHouc3R5bGUucmlnaHQ9IjAiO2JyZWFrO2Nhc2UidG9wLWxlZnQiOnouc3R5bGUudG9wPSIwIix6LnN0eWxlLmxlZnQ9IjAiO2JyZWFrO2Nhc2UiYm90dG9tLXJpZ2h0Ijp6LnN0eWxlLmJvdHRvbT0iMCIsei5zdHlsZS5yaWdodD0iMCI7YnJlYWs7Y2FzZSJib3R0b20tbGVmdCI6ei5zdHlsZS5ib3R0b209IjAiLHouc3R5bGUubGVmdD0iMCI7YnJlYWs7Y2FzZSJ0b3AtY2VudGVyIjp6LnN0eWxlLnRvcD0iMCIsei5zdHlsZS5sZWZ0PSI1MCUiLHouc3R5bGUudHJhbnNmb3JtPSJ0cmFuc2xhdGVYKC01MCUpIjticmVhaztjYXNlImJvdHRvbS1jZW50ZXIiOnouc3R5bGUuYm90dG9tPSIwIix6LnN0eWxlLmxlZnQ9IjUwJSIsei5zdHlsZS50cmFuc2Zvcm09InRyYW5zbGF0ZVgoLTUwJSkiO2JyZWFrfWRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoeiksdGhpcy50b2FzdENvbnRhaW5lcnMuc2V0KE0seil9cmV0dXJuIHRoaXMudG9hc3RDb250YWluZXJzLmdldChNKX1zdGF0aWMgYXN5bmMgc2hvdyhNKXtsZXQgej10eXBlb2YgTT09InN0cmluZyI/e21lc3NhZ2U6TX06TSxOPW5ldyB5O3JldHVybiBOLm1lc3NhZ2U9ei5tZXNzYWdlLE4udHlwZT16LnR5cGV8fCJpbmZvIixOLmR1cmF0aW9uPXouZHVyYXRpb258fDNlMyx0aGlzLmdldE9yQ3JlYXRlQ29udGFpbmVyKHoucG9zaXRpb258fCJ0b3AtcmlnaHQiKS5hcHBlbmRDaGlsZChOKSxhd2FpdCBOLnVwZGF0ZUNvbXBsZXRlLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e04uaXNWaXNpYmxlPSEwfSksTi5kdXJhdGlvbj4wJiZzZXRUaW1lb3V0KCgpPT57Ti5kaXNtaXNzKCl9LE4uZHVyYXRpb24pLE59c3RhdGljIGFzeW5jIGNyZWF0ZUFuZFNob3coTSl7cmV0dXJuIHRoaXMuc2hvdyhNKX1zdGF0aWMgaW5mbyhNLHope3JldHVybiB0aGlzLnNob3coe21lc3NhZ2U6TSx0eXBlOiJpbmZvIixkdXJhdGlvbjp6fSl9c3RhdGljIHN1Y2Nlc3MoTSx6KXtyZXR1cm4gdGhpcy5zaG93KHttZXNzYWdlOk0sdHlwZToic3VjY2VzcyIsZHVyYXRpb246en0pfXN0YXRpYyB3YXJuaW5nKE0seil7cmV0dXJuIHRoaXMuc2hvdyh7bWVzc2FnZTpNLHR5cGU6Indhcm5pbmciLGR1cmF0aW9uOnp9KX1zdGF0aWMgZXJyb3IoTSx6KXtyZXR1cm4gdGhpcy5zaG93KHttZXNzYWdlOk0sdHlwZToiZXJyb3IiLGR1cmF0aW9uOnp9KX0jZT1WdSh0aGlzLG8sIiIpO2dldCBtZXNzYWdlKCl7cmV0dXJuIHRoaXMuI2V9c2V0IG1lc3NhZ2UoTSl7dGhpcy4jZT1NfSN0PShWdSh0aGlzLGwpLFZ1KHRoaXMsZCwiaW5mbyIpKTtnZXQgdHlwZSgpe3JldHVybiB0aGlzLiN0fXNldCB0eXBlKE0pe3RoaXMuI3Q9TX0jYT0oVnUodGhpcyx1KSxWdSh0aGlzLGIsM2UzKSk7Z2V0IGR1cmF0aW9uKCl7cmV0dXJuIHRoaXMuI2F9c2V0IGR1cmF0aW9uKE0pe3RoaXMuI2E9TX0jcz0oVnUodGhpcyx2KSxWdSh0aGlzLG0sITEpKTtnZXQgaXNWaXNpYmxlKCl7cmV0dXJuIHRoaXMuI3N9c2V0IGlzVmlzaWJsZShNKXt0aGlzLiNzPU19Y29uc3RydWN0b3IoKXtzdXBlcigpLFZ1KHRoaXMsZiksdGEuc2V0dXAoKX1zdGF0aWMgc3R5bGVzPVtxZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgLyogVE9ETzogTWlncmF0ZSBoYXJkY29kZWQgdmFsdWVzIHRvIC0tZGVlcy0qIENTUyB2YXJpYWJsZXMgKi8KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOwogICAgICAgIGZvbnQtZmFtaWx5OiAke0JhfTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTsKICAgICAgfQoKICAgICAgOmhvc3QoW2lzdmlzaWJsZV0pIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgfQoKICAgICAgLnRvYXN0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgIHBhZGRpbmc6IDE2cHggMjBweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmYiLCIjMjIyIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTBlMGUwIiwiIzMzMyIpfTsKICAgICAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4ICR7aC5iZFRoZW1lKCJyZ2JhKDAsMCwwLDAuMSkiLCJyZ2JhKDAsMCwwLDAuMykiKX07CiAgICAgICAgbWluLXdpZHRoOiAzMDBweDsKICAgICAgICBtYXgtd2lkdGg6IDUwMHB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQoKICAgICAgLnRvYXN0OmhvdmVyIHsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDIpOwogICAgICB9CgogICAgICAuaWNvbiB7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgfQoKICAgICAgLmljb24gc3ZnIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5tZXNzYWdlIHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBsaW5lLWhlaWdodDogMS41OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzMzMyIsIiNmZmYiKX07CiAgICAgIH0KCiAgICAgIC5jbG9zZSB7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgd2lkdGg6IDE2cHg7CiAgICAgICAgaGVpZ2h0OiAxNnB4OwogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzOwogICAgICB9CgogICAgICAuY2xvc2U6aG92ZXIgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC5jbG9zZSBzdmcgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBmaWxsOiBjdXJyZW50Q29sb3I7CiAgICAgIH0KCiAgICAgIC8qIFR5cGUtc3BlY2lmaWMgc3R5bGVzICovCiAgICAgIDpob3N0KFt0eXBlPSJpbmZvIl0pIC5pY29uIHsKICAgICAgICBjb2xvcjogIzAwODRmZjsKICAgICAgfQoKICAgICAgOmhvc3QoW3R5cGU9InN1Y2Nlc3MiXSkgLmljb24gewogICAgICAgIGNvbG9yOiAjMjJjNTVlOwogICAgICB9CgogICAgICA6aG9zdChbdHlwZT0id2FybmluZyJdKSAuaWNvbiB7CiAgICAgICAgY29sb3I6ICNmNTllMGI7CiAgICAgIH0KCiAgICAgIDpob3N0KFt0eXBlPSJlcnJvciJdKSAuaWNvbiB7CiAgICAgICAgY29sb3I6ICNlZjQ0NDQ7CiAgICAgIH0KCiAgICAgIC8qIFByb2dyZXNzIGJhciAqLwogICAgICAucHJvZ3Jlc3MgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBoZWlnaHQ6IDNweDsKICAgICAgICBiYWNrZ3JvdW5kOiBjdXJyZW50Q29sb3I7CiAgICAgICAgb3BhY2l0eTogMC4yOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDAgMCA4cHggOHB4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC5wcm9ncmVzcy1iYXIgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBiYWNrZ3JvdW5kOiBjdXJyZW50Q29sb3I7CiAgICAgICAgb3BhY2l0eTogMC44OwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQ7CiAgICAgICAgYW5pbWF0aW9uOiBwcm9ncmVzcyBsaW5lYXIgZm9yd2FyZHM7CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMgcHJvZ3Jlc3MgewogICAgICAgIGZyb20gewogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMSk7CiAgICAgICAgfQogICAgICAgIHRvIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDApOwogICAgICAgIH0KICAgICAgfQogICAgYF07cmVuZGVyKCl7bGV0IE09e2luZm86d2A8c3ZnIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0iY3VycmVudENvbG9yIj4KICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2em0xLTExYTEgMSAwIDEwLTIgMHYySDdhMSAxIDAgMTAwIDJoMnYyYTEgMSAwIDEwMiAwdi0yaDJhMSAxIDAgMTAwLTJoLTJWN3oiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPgogICAgICA8L3N2Zz5gLHN1Y2Nlc3M6d2A8c3ZnIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0iY3VycmVudENvbG9yIj4KICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2em0zLjcwNy05LjI5M2ExIDEgMCAwMC0xLjQxNC0xLjQxNEw5IDEwLjU4NiA3LjcwNyA5LjI5M2ExIDEgMCAwMC0xLjQxNCAxLjQxNGwyIDJhMSAxIDAgMDAxLjQxNCAwbDQtNHoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPgogICAgICA8L3N2Zz5gLHdhcm5pbmc6d2A8c3ZnIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0iY3VycmVudENvbG9yIj4KICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjI1NyAzLjA5OWMuNzY1LTEuMzYgMi43MjItMS4zNiAzLjQ4NiAwbDUuNTggOS45MmMuNzUgMS4zMzQtLjIxMyAyLjk4LTEuNzQyIDIuOThINC40MmMtMS41MyAwLTIuNDkzLTEuNjQ2LTEuNzQzLTIuOThsNS41OC05Ljkyek0xMSAxM2ExIDEgMCAxMS0yIDAgMSAxIDAgMDEyIDB6bS0xLThhMSAxIDAgMDAtMSAxdjNhMSAxIDAgMDAyIDBWNmExIDEgMCAwMC0xLTF6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz4KICAgICAgPC9zdmc+YCxlcnJvcjp3YDxzdmcgdmlld0JveD0iMCAwIDIwIDIwIiBmaWxsPSJjdXJyZW50Q29sb3IiPgogICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDE4YTggOCAwIDEwMC0xNiA4IDggMCAwMDAgMTZ6TTguNzA3IDcuMjkzYTEgMSAwIDAwLTEuNDE0IDEuNDE0TDguNTg2IDEwbC0xLjI5MyAxLjI5M2ExIDEgMCAxMDEuNDE0IDEuNDE0TDEwIDExLjQxNGwxLjI5MyAxLjI5M2ExIDEgMCAwMDEuNDE0LTEuNDE0TDExLjQxNCAxMGwxLjI5My0xLjI5M2ExIDEgMCAwMC0xLjQxNC0xLjQxNEwxMCA4LjU4NiA4LjcwNyA3LjI5M3oiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPgogICAgICA8L3N2Zz5gfTtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0idG9hc3QiIEBjbGljaz0ke3RoaXMuZGlzbWlzc30+CiAgICAgICAgPGRpdiBjbGFzcz0iaWNvbiI+CiAgICAgICAgICAke01bdGhpcy50eXBlXX0KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtZXNzYWdlIj4ke3RoaXMubWVzc2FnZX08L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjbG9zZSI+CiAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0iY3VycmVudENvbG9yIj4KICAgICAgICAgICAgPHBhdGggZD0iTTQuNjQ2IDQuNjQ2YS41LjUgMCAwIDEgLjcwOCAwTDggNy4yOTNsMi42NDYtMi42NDdhLjUuNSAwIDAgMSAuNzA4LjcwOEw4LjcwNyA4bDIuNjQ3IDIuNjQ2YS41LjUgMCAwIDEtLjcwOC43MDhMOCA4LjcwN2wtMi42NDYgMi42NDdhLjUuNSAwIDAgMS0uNzA4LS43MDhMNy4yOTMgOCA0LjY0NiA1LjM1NGEuNS41IDAgMCAxIDAtLjcwOHoiLz4KICAgICAgICAgIDwvc3ZnPgogICAgICAgIDwvZGl2PgogICAgICAgICR7dGhpcy5kdXJhdGlvbj4wP3dgCiAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzcyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWJhciIgc3R5bGU9ImFuaW1hdGlvbi1kdXJhdGlvbjogJHt0aGlzLmR1cmF0aW9ufW1zIj48L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIGA6IiJ9CiAgICAgIDwvZGl2PgogICAgYH1hc3luYyBkaXNtaXNzKCl7dGhpcy5pc1Zpc2libGU9ITEsYXdhaXQgbmV3IFByb21pc2Uoej0+c2V0VGltZW91dCh6LDMwMCkpLHRoaXMucmVtb3ZlKCk7bGV0IE09dGhpcy5wYXJlbnRFbGVtZW50O2lmKE0mJk0uY2hpbGRyZW4ubGVuZ3RoPT09MCl7TS5yZW1vdmUoKTtmb3IobGV0W3osTl1vZiB5LnRvYXN0Q29udGFpbmVycy5lbnRyaWVzKCkpaWYoTj09PU0pe3kudG9hc3RDb250YWluZXJzLmRlbGV0ZSh6KTticmVha319fWZpcnN0VXBkYXRlZCgpe3RoaXMuc2V0QXR0cmlidXRlKCJ0eXBlIix0aGlzLnR5cGUpfXN0YXRpY3tWdShhLHQpfX07cmV0dXJuIHk9YX0pKCl9KTt2YXIgTnlhPWcoKCk9Pnt1bHQoKX0pO3ZhciBSeWE9ZygoKT0+e3h5YSgpO1N5YSgpO1R5YSgpO0x5YSgpO1B5YSgpO055YSgpfSk7dmFyIE95YT1nKCgpPT57eXgoKX0pO3ZhciBGeWE9ZygoKT0+e1dnKCl9KTt2YXIgQnlhPWcoKCk9PntPeWEoKTtGeWEoKX0pO3ZhciBIeWE9ZygoKT0+e0VpKCl9KTt2YXIgcXlhPWcoKCk9PntIb3QoKX0pO3ZhciBqeWE9ZygoKT0+e29udCgpfSk7dmFyIFZ5YT1nKCgpPT57eW50KCl9KTt2YXIgVXlhPWcoKCk9PntsbnQoKX0pO3ZhciBXeWE9ZygoKT0+e2RudCgpfSk7dmFyIEd5YT1nKCgpPT57Wm90KCl9KTt2YXIgS3lhPWcoKCk9PntOMWUoKX0pO3ZhciBZeWE9ZygoKT0+e1gxZSgpfSk7dmFyIFp5YT1nKCgpPT57fSk7dmFyIFh5YT1nKCgpPT57WnlhKCl9KTt2YXIgUXlhPWcoKCk9PntobnQoKX0pO3ZhciBKeWE9ZygoKT0+e2dudCgpfSk7dmFyIGV3YT1nKCgpPT57WTFlKCk7RW50KCl9KTt2YXIgcjJlLHR3YT1nKCgpPT57cjJlPWNsYXNze3N0YXRpY3tpKHRoaXMsIkltYWdlQ3JvcHBlciIpfW9wdGlvbnM7Y2FudmFzO2N0eDtpbWc7b3ZlcmxheUNhbnZhcztvdmVybGF5Q3R4O2Nyb3BYPTA7Y3JvcFk9MDtjcm9wU2l6ZT0yMDA7bWluQ3JvcFNpemU9NTA7aXNEcmFnZ2luZz0hMTtpc1Jlc2l6aW5nPSExO2RyYWdTdGFydFg9MDtkcmFnU3RhcnRZPTA7cmVzaXplSGFuZGxlPSIiO2ltYWdlU2NhbGU9MTtpbWFnZU9mZnNldFg9MDtpbWFnZU9mZnNldFk9MDtjb25zdHJ1Y3RvcihlKXt0aGlzLm9wdGlvbnM9e21pblNpemU6NTAsb3V0cHV0U2l6ZTo4MDAsb3V0cHV0UXVhbGl0eTouOTUsLi4uZX0sdGhpcy5jYW52YXM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksdGhpcy5jdHg9dGhpcy5jYW52YXMuZ2V0Q29udGV4dCgiMmQiKSx0aGlzLm92ZXJsYXlDYW52YXM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksdGhpcy5vdmVybGF5Q3R4PXRoaXMub3ZlcmxheUNhbnZhcy5nZXRDb250ZXh0KCIyZCIpLHRoaXMuaW1nPW5ldyBJbWFnZX1hc3luYyBpbml0aWFsaXplKCl7YXdhaXQgdGhpcy5sb2FkSW1hZ2UoKSx0aGlzLnNldHVwQ2FudmFzZXMoKSx0aGlzLnNldHVwRXZlbnRMaXN0ZW5lcnMoKSx0aGlzLnJlbmRlcigpfWFzeW5jIGxvYWRJbWFnZSgpe3JldHVybiBuZXcgUHJvbWlzZSgoZSx0KT0+e3RoaXMuaW1nLm9ubG9hZD0oKT0+ZSgpLHRoaXMuaW1nLm9uZXJyb3I9dCx0aGlzLmltZy5zcmM9dGhpcy5vcHRpb25zLmltYWdlfSl9c2V0dXBDYW52YXNlcygpe2xldCBlPXRoaXMub3B0aW9ucy5jb250YWluZXIsdD1NYXRoLm1pbihlLmNsaWVudFdpZHRoLGUuY2xpZW50SGVpZ2h0KTt0aGlzLmNhbnZhcy53aWR0aD10LHRoaXMuY2FudmFzLmhlaWdodD10LHRoaXMuY2FudmFzLnN0eWxlLndpZHRoPSIxMDAlIix0aGlzLmNhbnZhcy5zdHlsZS5oZWlnaHQ9IjEwMCUiLHRoaXMuY2FudmFzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdGhpcy5jYW52YXMuc3R5bGUudG9wPSIwIix0aGlzLmNhbnZhcy5zdHlsZS5sZWZ0PSIwIix0aGlzLm92ZXJsYXlDYW52YXMud2lkdGg9dCx0aGlzLm92ZXJsYXlDYW52YXMuaGVpZ2h0PXQsdGhpcy5vdmVybGF5Q2FudmFzLnN0eWxlLndpZHRoPSIxMDAlIix0aGlzLm92ZXJsYXlDYW52YXMuc3R5bGUuaGVpZ2h0PSIxMDAlIix0aGlzLm92ZXJsYXlDYW52YXMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIix0aGlzLm92ZXJsYXlDYW52YXMuc3R5bGUudG9wPSIwIix0aGlzLm92ZXJsYXlDYW52YXMuc3R5bGUubGVmdD0iMCIsdGhpcy5vdmVybGF5Q2FudmFzLnN0eWxlLmN1cnNvcj0ibW92ZSIsZS5hcHBlbmRDaGlsZCh0aGlzLmNhbnZhcyksZS5hcHBlbmRDaGlsZCh0aGlzLm92ZXJsYXlDYW52YXMpO2xldCBhPU1hdGgubWluKHQvdGhpcy5pbWcud2lkdGgsdC90aGlzLmltZy5oZWlnaHQpO3RoaXMuaW1hZ2VTY2FsZT1hLHRoaXMuaW1hZ2VPZmZzZXRYPSh0LXRoaXMuaW1nLndpZHRoKmEpLzIsdGhpcy5pbWFnZU9mZnNldFk9KHQtdGhpcy5pbWcuaGVpZ2h0KmEpLzI7bGV0IHI9dGhpcy5pbWcud2lkdGgqYSxuPXRoaXMuaW1nLmhlaWdodCphLG89TWF0aC5taW4ocixuLHQqLjgpO3RoaXMuY3JvcFNpemU9byouOCx0aGlzLmNyb3BYPSh0LXRoaXMuY3JvcFNpemUpLzIsdGhpcy5jcm9wWT0odC10aGlzLmNyb3BTaXplKS8yfXNldHVwRXZlbnRMaXN0ZW5lcnMoKXt0aGlzLm92ZXJsYXlDYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIix0aGlzLmhhbmRsZU1vdXNlRG93bi5iaW5kKHRoaXMpKSx0aGlzLm92ZXJsYXlDYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLmhhbmRsZU1vdXNlTW92ZS5iaW5kKHRoaXMpKSx0aGlzLm92ZXJsYXlDYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdGhpcy5oYW5kbGVNb3VzZVVwLmJpbmQodGhpcykpLHRoaXMub3ZlcmxheUNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIix0aGlzLmhhbmRsZU1vdXNlVXAuYmluZCh0aGlzKSksdGhpcy5vdmVybGF5Q2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHRoaXMuaGFuZGxlVG91Y2hTdGFydC5iaW5kKHRoaXMpKSx0aGlzLm92ZXJsYXlDYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIix0aGlzLmhhbmRsZVRvdWNoTW92ZS5iaW5kKHRoaXMpKSx0aGlzLm92ZXJsYXlDYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLHRoaXMuaGFuZGxlVG91Y2hFbmQuYmluZCh0aGlzKSl9aGFuZGxlTW91c2VEb3duKGUpe2xldCB0PXRoaXMub3ZlcmxheUNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxhPShlLmNsaWVudFgtdC5sZWZ0KSoodGhpcy5vdmVybGF5Q2FudmFzLndpZHRoL3Qud2lkdGgpLHI9KGUuY2xpZW50WS10LnRvcCkqKHRoaXMub3ZlcmxheUNhbnZhcy5oZWlnaHQvdC5oZWlnaHQpLG49dGhpcy5nZXRSZXNpemVIYW5kbGUoYSxyKTtuPyh0aGlzLmlzUmVzaXppbmc9ITAsdGhpcy5yZXNpemVIYW5kbGU9bik6dGhpcy5pc0luc2lkZUNyb3BBcmVhKGEscikmJih0aGlzLmlzRHJhZ2dpbmc9ITApLHRoaXMuZHJhZ1N0YXJ0WD1hLHRoaXMuZHJhZ1N0YXJ0WT1yfWhhbmRsZU1vdXNlTW92ZShlKXtsZXQgdD10aGlzLm92ZXJsYXlDYW52YXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYT0oZS5jbGllbnRYLXQubGVmdCkqKHRoaXMub3ZlcmxheUNhbnZhcy53aWR0aC90LndpZHRoKSxyPShlLmNsaWVudFktdC50b3ApKih0aGlzLm92ZXJsYXlDYW52YXMuaGVpZ2h0L3QuaGVpZ2h0KSxuPXRoaXMuZ2V0UmVzaXplSGFuZGxlKGEscik7aWYobj90aGlzLm92ZXJsYXlDYW52YXMuc3R5bGUuY3Vyc29yPXRoaXMuZ2V0UmVzaXplQ3Vyc29yKG4pOnRoaXMuaXNJbnNpZGVDcm9wQXJlYShhLHIpP3RoaXMub3ZlcmxheUNhbnZhcy5zdHlsZS5jdXJzb3I9Im1vdmUiOnRoaXMub3ZlcmxheUNhbnZhcy5zdHlsZS5jdXJzb3I9ImRlZmF1bHQiLHRoaXMuaXNEcmFnZ2luZyl7bGV0IG89YS10aGlzLmRyYWdTdGFydFgsbD1yLXRoaXMuZHJhZ1N0YXJ0WSxwPXRoaXMuaW1hZ2VPZmZzZXRYLGQ9dGhpcy5pbWFnZU9mZnNldFgrdGhpcy5pbWcud2lkdGgqdGhpcy5pbWFnZVNjYWxlLXRoaXMuY3JvcFNpemUsdT10aGlzLmltYWdlT2Zmc2V0WSxjPXRoaXMuaW1hZ2VPZmZzZXRZK3RoaXMuaW1nLmhlaWdodCp0aGlzLmltYWdlU2NhbGUtdGhpcy5jcm9wU2l6ZTt0aGlzLmNyb3BYPU1hdGgubWF4KHAsTWF0aC5taW4oZCx0aGlzLmNyb3BYK28pKSx0aGlzLmNyb3BZPU1hdGgubWF4KHUsTWF0aC5taW4oYyx0aGlzLmNyb3BZK2wpKSx0aGlzLmRyYWdTdGFydFg9YSx0aGlzLmRyYWdTdGFydFk9cix0aGlzLnJlbmRlcigpfXRoaXMuaXNSZXNpemluZyYmKHRoaXMuaGFuZGxlUmVzaXplKGEsciksdGhpcy5kcmFnU3RhcnRYPWEsdGhpcy5kcmFnU3RhcnRZPXIsdGhpcy5yZW5kZXIoKSl9aGFuZGxlTW91c2VVcCgpe3RoaXMuaXNEcmFnZ2luZz0hMSx0aGlzLmlzUmVzaXppbmc9ITEsdGhpcy5yZXNpemVIYW5kbGU9IiJ9aGFuZGxlVG91Y2hTdGFydChlKXtlLnByZXZlbnREZWZhdWx0KCk7bGV0IHQ9ZS50b3VjaGVzWzBdLGE9bmV3IE1vdXNlRXZlbnQoIm1vdXNlZG93biIse2NsaWVudFg6dC5jbGllbnRYLGNsaWVudFk6dC5jbGllbnRZfSk7dGhpcy5oYW5kbGVNb3VzZURvd24oYSl9aGFuZGxlVG91Y2hNb3ZlKGUpe2UucHJldmVudERlZmF1bHQoKTtsZXQgdD1lLnRvdWNoZXNbMF0sYT1uZXcgTW91c2VFdmVudCgibW91c2Vtb3ZlIix7Y2xpZW50WDp0LmNsaWVudFgsY2xpZW50WTp0LmNsaWVudFl9KTt0aGlzLmhhbmRsZU1vdXNlTW92ZShhKX1oYW5kbGVUb3VjaEVuZChlKXtlLnByZXZlbnREZWZhdWx0KCksdGhpcy5oYW5kbGVNb3VzZVVwKCl9Z2V0UmVzaXplSGFuZGxlKGUsdCl7bGV0IHI9e253Ont4OnRoaXMuY3JvcFgseTp0aGlzLmNyb3BZfSxuZTp7eDp0aGlzLmNyb3BYK3RoaXMuY3JvcFNpemUseTp0aGlzLmNyb3BZfSxzdzp7eDp0aGlzLmNyb3BYLHk6dGhpcy5jcm9wWSt0aGlzLmNyb3BTaXplfSxzZTp7eDp0aGlzLmNyb3BYK3RoaXMuY3JvcFNpemUseTp0aGlzLmNyb3BZK3RoaXMuY3JvcFNpemV9fTtmb3IobGV0W24sb11vZiBPYmplY3QuZW50cmllcyhyKSlpZihNYXRoLmFicyhlLW8ueCk8MjAmJk1hdGguYWJzKHQtby55KTwyMClyZXR1cm4gbjtyZXR1cm4iIn1nZXRSZXNpemVDdXJzb3IoZSl7cmV0dXJue253OiJudy1yZXNpemUiLG5lOiJuZS1yZXNpemUiLHN3OiJzdy1yZXNpemUiLHNlOiJzZS1yZXNpemUifVtlXXx8ImRlZmF1bHQifWlzSW5zaWRlQ3JvcEFyZWEoZSx0KXtyZXR1cm4gZT49dGhpcy5jcm9wWCYmZTw9dGhpcy5jcm9wWCt0aGlzLmNyb3BTaXplJiZ0Pj10aGlzLmNyb3BZJiZ0PD10aGlzLmNyb3BZK3RoaXMuY3JvcFNpemV9aGFuZGxlUmVzaXplKGUsdCl7bGV0IGE9ZS10aGlzLmRyYWdTdGFydFgscj10LXRoaXMuZHJhZ1N0YXJ0WSxuPXRoaXMuaW1hZ2VPZmZzZXRYLG89dGhpcy5pbWFnZU9mZnNldFksbD10aGlzLmltYWdlT2Zmc2V0WCt0aGlzLmltZy53aWR0aCp0aGlzLmltYWdlU2NhbGUscD10aGlzLmltYWdlT2Zmc2V0WSt0aGlzLmltZy5oZWlnaHQqdGhpcy5pbWFnZVNjYWxlO3N3aXRjaCh0aGlzLnJlc2l6ZUhhbmRsZSl7Y2FzZSJzZSI6dGhpcy5jcm9wU2l6ZT1NYXRoLm1heCh0aGlzLm1pbkNyb3BTaXplLE1hdGgubWluKHRoaXMuY3JvcFNpemUrTWF0aC5tYXgoYSxyKSxNYXRoLm1pbihsLXRoaXMuY3JvcFgscC10aGlzLmNyb3BZKSkpO2JyZWFrO2Nhc2UibnciOmxldCBkPU1hdGgubWF4KHRoaXMubWluQ3JvcFNpemUsdGhpcy5jcm9wU2l6ZS1NYXRoLm1heChhLHIpKSx1PXRoaXMuY3JvcFNpemUtZCxjPXRoaXMuY3JvcFgrdSxiPXRoaXMuY3JvcFkrdTtjPj1uJiZiPj1vJiYodGhpcy5jcm9wWD1jLHRoaXMuY3JvcFk9Yix0aGlzLmNyb3BTaXplPWQpO2JyZWFrO2Nhc2UibmUiOmxldCB2PU1hdGgubWF4KGEsLXIpLHg9TWF0aC5tYXgodGhpcy5taW5Dcm9wU2l6ZSx0aGlzLmNyb3BTaXplK3YpLG09eC10aGlzLmNyb3BTaXplLGY9dGhpcy5jcm9wWS1tO2Y+PW8mJnRoaXMuY3JvcFgreDw9bCYmKHRoaXMuY3JvcFk9Zix0aGlzLmNyb3BTaXplPXgpO2JyZWFrO2Nhc2Uic3ciOmxldCB5PU1hdGgubWF4KC1hLHIpLE09TWF0aC5tYXgodGhpcy5taW5Dcm9wU2l6ZSx0aGlzLmNyb3BTaXplK3kpLHo9TS10aGlzLmNyb3BTaXplLE49dGhpcy5jcm9wWC16O04+PW4mJnRoaXMuY3JvcFkrTTw9cCYmKHRoaXMuY3JvcFg9Tix0aGlzLmNyb3BTaXplPU0pO2JyZWFrfX1yZW5kZXIoKXt0aGlzLmN0eC5jbGVhclJlY3QoMCwwLHRoaXMuY2FudmFzLndpZHRoLHRoaXMuY2FudmFzLmhlaWdodCksdGhpcy5vdmVybGF5Q3R4LmNsZWFyUmVjdCgwLDAsdGhpcy5vdmVybGF5Q2FudmFzLndpZHRoLHRoaXMub3ZlcmxheUNhbnZhcy5oZWlnaHQpLHRoaXMuY3R4LmZpbGxTdHlsZT0iIzAwMDAwMCIsdGhpcy5jdHguZmlsbFJlY3QoMCwwLHRoaXMuY2FudmFzLndpZHRoLHRoaXMuY2FudmFzLmhlaWdodCksdGhpcy5jdHguZHJhd0ltYWdlKHRoaXMuaW1nLHRoaXMuaW1hZ2VPZmZzZXRYLHRoaXMuaW1hZ2VPZmZzZXRZLHRoaXMuaW1nLndpZHRoKnRoaXMuaW1hZ2VTY2FsZSx0aGlzLmltZy5oZWlnaHQqdGhpcy5pbWFnZVNjYWxlKSx0aGlzLm92ZXJsYXlDdHguZmlsbFN0eWxlPSJyZ2JhKDAsIDAsIDAsIDAuNSkiLHRoaXMub3ZlcmxheUN0eC5maWxsUmVjdCh0aGlzLmltYWdlT2Zmc2V0WCx0aGlzLmltYWdlT2Zmc2V0WSx0aGlzLmltZy53aWR0aCp0aGlzLmltYWdlU2NhbGUsdGhpcy5pbWcuaGVpZ2h0KnRoaXMuaW1hZ2VTY2FsZSksdGhpcy5vdmVybGF5Q3R4LnNhdmUoKSx0aGlzLm9wdGlvbnMuc2hhcGU9PT0icm91bmQiPyh0aGlzLm92ZXJsYXlDdHguYmVnaW5QYXRoKCksdGhpcy5vdmVybGF5Q3R4LmFyYyh0aGlzLmNyb3BYK3RoaXMuY3JvcFNpemUvMix0aGlzLmNyb3BZK3RoaXMuY3JvcFNpemUvMix0aGlzLmNyb3BTaXplLzIsMCxNYXRoLlBJKjIpLHRoaXMub3ZlcmxheUN0eC5jbGlwKCkpOih0aGlzLm92ZXJsYXlDdHguYmVnaW5QYXRoKCksdGhpcy5vdmVybGF5Q3R4LnJlY3QodGhpcy5jcm9wWCx0aGlzLmNyb3BZLHRoaXMuY3JvcFNpemUsdGhpcy5jcm9wU2l6ZSksdGhpcy5vdmVybGF5Q3R4LmNsaXAoKSksdGhpcy5vdmVybGF5Q3R4LmNsZWFyUmVjdCgwLDAsdGhpcy5vdmVybGF5Q2FudmFzLndpZHRoLHRoaXMub3ZlcmxheUNhbnZhcy5oZWlnaHQpLHRoaXMub3ZlcmxheUN0eC5yZXN0b3JlKCksdGhpcy5vdmVybGF5Q3R4LnN0cm9rZVN0eWxlPSJ3aGl0ZSIsdGhpcy5vdmVybGF5Q3R4LmxpbmVXaWR0aD0yLHRoaXMub3B0aW9ucy5zaGFwZT09PSJyb3VuZCI/KHRoaXMub3ZlcmxheUN0eC5iZWdpblBhdGgoKSx0aGlzLm92ZXJsYXlDdHguYXJjKHRoaXMuY3JvcFgrdGhpcy5jcm9wU2l6ZS8yLHRoaXMuY3JvcFkrdGhpcy5jcm9wU2l6ZS8yLHRoaXMuY3JvcFNpemUvMiwwLE1hdGguUEkqMiksdGhpcy5vdmVybGF5Q3R4LnN0cm9rZSgpKTp0aGlzLm92ZXJsYXlDdHguc3Ryb2tlUmVjdCh0aGlzLmNyb3BYLHRoaXMuY3JvcFksdGhpcy5jcm9wU2l6ZSx0aGlzLmNyb3BTaXplKSx0aGlzLmRyYXdSZXNpemVIYW5kbGVzKCl9ZHJhd1Jlc2l6ZUhhbmRsZXMoKXtsZXQgdD1be3g6dGhpcy5jcm9wWCx5OnRoaXMuY3JvcFl9LHt4OnRoaXMuY3JvcFgrdGhpcy5jcm9wU2l6ZSx5OnRoaXMuY3JvcFl9LHt4OnRoaXMuY3JvcFgseTp0aGlzLmNyb3BZK3RoaXMuY3JvcFNpemV9LHt4OnRoaXMuY3JvcFgrdGhpcy5jcm9wU2l6ZSx5OnRoaXMuY3JvcFkrdGhpcy5jcm9wU2l6ZX1dO3RoaXMub3ZlcmxheUN0eC5maWxsU3R5bGU9IndoaXRlIix0LmZvckVhY2goYT0+e3RoaXMub3ZlcmxheUN0eC5iZWdpblBhdGgoKSx0aGlzLm92ZXJsYXlDdHguYXJjKGEueCxhLnksOCwwLE1hdGguUEkqMiksdGhpcy5vdmVybGF5Q3R4LmZpbGwoKX0pfWFzeW5jIGdldENyb3BwZWRJbWFnZSgpe2xldCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLHQ9ZS5nZXRDb250ZXh0KCIyZCIpLGE9MS90aGlzLmltYWdlU2NhbGUscj10aGlzLmNyb3BTaXplKmEsbj10aGlzLm9wdGlvbnMub3V0cHV0U2l6ZTtuPnImJmNvbnNvbGUuaW5mbyhgUHJvZmlsZSBwaWN0dXJlOiBVcHNjYWxpbmcgZnJvbSAke01hdGgucm91bmQocil9cHggdG8gJHtufXB4YCksZS53aWR0aD1uLGUuaGVpZ2h0PW47bGV0IG89KHRoaXMuY3JvcFgtdGhpcy5pbWFnZU9mZnNldFgpKmEsbD0odGhpcy5jcm9wWS10aGlzLmltYWdlT2Zmc2V0WSkqYSxwPXRoaXMuY3JvcFNpemUqYTt0aGlzLm9wdGlvbnMuc2hhcGU9PT0icm91bmQiJiYodC5iZWdpblBhdGgoKSx0LmFyYyhuLzIsbi8yLG4vMiwwLE1hdGguUEkqMiksdC5jbGlwKCkpLHQuaW1hZ2VTbW9vdGhpbmdFbmFibGVkPSEwLHQuaW1hZ2VTbW9vdGhpbmdRdWFsaXR5PSJoaWdoIix0LmRyYXdJbWFnZSh0aGlzLmltZyxvLGwscCxwLDAsMCxuLG4pO2xldCB1PXRoaXMub3B0aW9ucy5pbWFnZS5pbmNsdWRlcygiaW1hZ2UvcG5nIik/ImltYWdlL3BuZyI6ImltYWdlL2pwZWciO3JldHVybiBlLnRvRGF0YVVSTCh1LHRoaXMub3B0aW9ucy5vdXRwdXRRdWFsaXR5KX1kZXN0cm95KCl7dGhpcy5jYW52YXMucmVtb3ZlKCksdGhpcy5vdmVybGF5Q2FudmFzLnJlbW92ZSgpfX19KTt2YXIgdjQsSm4scGx0LGF3YT1nKCgpPT57cGUoKTt3MigpO0VyKCk7R24oKTtHYSgpO0hnKCk7djIoKTt2MigpO3R3YSgpO2h0KCk7djQ9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LEpuPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxwbHQ9KCgpPT57bGV0IHM9W25lKCJkZWVzLXByb2ZpbGVwaWN0dXJlLW1vZGFsIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W107dmFyIEg9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIlByb2ZpbGVQaWN0dXJlTW9kYWwiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgaz10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZ30pXSxwPVtMKHt0eXBlOlN0cmluZ30pXSxjPVtMKHt0eXBlOk51bWJlcn0pXSx4PVtMKHt0eXBlOk51bWJlcn0pXSx5PVtZKCldLE49W1koKV0sTz1bWSgpXSx2NCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImluaXRpYWxJbWFnZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4iaW5pdGlhbEltYWdlImluIFMsImhhcyIpLGdldDppKFM9PlMuaW5pdGlhbEltYWdlLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MuaW5pdGlhbEltYWdlPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sbyxsKSx2NCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNoYXBlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJzaGFwZSJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLnNoYXBlLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1Muc2hhcGU9SX0sInNldCIpfSxtZXRhZGF0YTprfSxkLHUpLHY0KHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToib3V0cHV0U2l6ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4ib3V0cHV0U2l6ZSJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLm91dHB1dFNpemUsImdldCIpLHNldDppKChTLEkpPT57Uy5vdXRwdXRTaXplPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sYix2KSx2NCh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im91dHB1dFF1YWxpdHkiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+Im91dHB1dFF1YWxpdHkiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5vdXRwdXRRdWFsaXR5LCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1Mub3V0cHV0UXVhbGl0eT1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LG0sZiksdjQodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjdXJyZW50U3RlcCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4iY3VycmVudFN0ZXAiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5jdXJyZW50U3RlcCwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLmN1cnJlbnRTdGVwPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sTSx6KSx2NCh0aGlzLG51bGwsTix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNyb3BwZWRJbWFnZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4iY3JvcHBlZEltYWdlImluIFMsImhhcyIpLGdldDppKFM9PlMuY3JvcHBlZEltYWdlLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MuY3JvcHBlZEltYWdlPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sQyxfKSx2NCh0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImlzUHJvY2Vzc2luZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4iaXNQcm9jZXNzaW5nImluIFMsImhhcyIpLGdldDppKFM9PlMuaXNQcm9jZXNzaW5nLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MuaXNQcm9jZXNzaW5nPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sJCxFKSx2NChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTprfSxudWxsLHQpLEg9YT1lLnZhbHVlLGsmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6a30pfSNlPUpuKHRoaXMsbywiIik7Z2V0IGluaXRpYWxJbWFnZSgpe3JldHVybiB0aGlzLiNlfXNldCBpbml0aWFsSW1hZ2Uoayl7dGhpcy4jZT1rfSN0PShKbih0aGlzLGwpLEpuKHRoaXMsZCwicm91bmQiKSk7Z2V0IHNoYXBlKCl7cmV0dXJuIHRoaXMuI3R9c2V0IHNoYXBlKGspe3RoaXMuI3Q9a30jYT0oSm4odGhpcyx1KSxKbih0aGlzLGIsODAwKSk7Z2V0IG91dHB1dFNpemUoKXtyZXR1cm4gdGhpcy4jYX1zZXQgb3V0cHV0U2l6ZShrKXt0aGlzLiNhPWt9I3M9KEpuKHRoaXMsdiksSm4odGhpcyxtLC45NSkpO2dldCBvdXRwdXRRdWFsaXR5KCl7cmV0dXJuIHRoaXMuI3N9c2V0IG91dHB1dFF1YWxpdHkoayl7dGhpcy4jcz1rfSNpPShKbih0aGlzLGYpLEpuKHRoaXMsTSwiY3JvcCIpKTtnZXQgY3VycmVudFN0ZXAoKXtyZXR1cm4gdGhpcy4jaX1zZXQgY3VycmVudFN0ZXAoayl7dGhpcy4jaT1rfSNyPShKbih0aGlzLHopLEpuKHRoaXMsQywiIikpO2dldCBjcm9wcGVkSW1hZ2UoKXtyZXR1cm4gdGhpcy4jcn1zZXQgY3JvcHBlZEltYWdlKGspe3RoaXMuI3I9a30jbz0oSm4odGhpcyxfKSxKbih0aGlzLCQsITEpKTtnZXQgaXNQcm9jZXNzaW5nKCl7cmV0dXJuIHRoaXMuI299c2V0IGlzUHJvY2Vzc2luZyhrKXt0aGlzLiNvPWt9Y3JvcHBlcj0oSm4odGhpcyxFKSxudWxsKTt3aW5kb3dMYXllcjt6SW5kZXg9MDtzdGF0aWMgc3R5bGVzPVtxZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgLyogVE9ETzogTWlncmF0ZSBoYXJkY29kZWQgdmFsdWVzIHRvIC0tZGVlcy0qIENTUyB2YXJpYWJsZXMgKi8KICAgICAgOmhvc3QgewogICAgICAgIGZvbnQtZmFtaWx5OiAke0JhfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzMzMiLCIjZmZmIil9OwogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIHotaW5kZXg6IHZhcigtLXotaW5kZXgpOwogICAgICB9CgogICAgICAubW9kYWwtY29udGFpbmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMwYTBhMGEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjA4KSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCkiKX07CiAgICAgICAgYm94LXNoYWRvdzogJHtoLmJkVGhlbWUoIjAgMjBweCAyNXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDEwcHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4wNCkiLCIwIDIwcHggMjVweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4zKSwgMCAxMHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMikiKX07CiAgICAgICAgd2lkdGg6IDQ4MHB4OwogICAgICAgIG1heC13aWR0aDogY2FsYygxMDB2dyAtIDMycHgpOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMHB4KSBzY2FsZSgwLjk4KTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIGFuaW1hdGlvbjogbW9kYWxTaG93IDAuMjVzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgZm9yd2FyZHM7CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMgbW9kYWxTaG93IHsKICAgICAgICB0byB7CiAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCkgc2NhbGUoMSk7CiAgICAgICAgfQogICAgICB9CgogICAgICAubW9kYWwtaGVhZGVyIHsKICAgICAgICBoZWlnaHQ6IDUycHg7CiAgICAgICAgcGFkZGluZzogMCAyMHB4OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjA2KSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNikiKX07CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQoKICAgICAgLm1vZGFsLXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDE1cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTA5MGIiLCIjZmFmYWZhIil9OwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICB9CgogICAgICAuY2xvc2UtYnV0dG9uIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgcmlnaHQ6IDEwcHg7CiAgICAgICAgdG9wOiA1MCU7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgICAgIHdpZHRoOiAzMnB4OwogICAgICAgIGhlaWdodDogMzJweDsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiIzcxNzE3YSIpfTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgfQoKICAgICAgLmNsb3NlLWJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wNSkiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07CiAgICAgIH0KCiAgICAgIC5jbG9zZS1idXR0b246YWN0aXZlIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjA4KSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCkiKX07CiAgICAgIH0KCiAgICAgIC5tb2RhbC1ib2R5IHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDIwcHg7CiAgICAgIH0KCiAgICAgIC5jcm9wcGVyLWNvbnRhaW5lciB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWF4LXdpZHRoOiAzNjBweDsKICAgICAgICBhc3BlY3QtcmF0aW86IDE7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjMDAwMDAwIiwiIzAwMDAwMCIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgYm94LXNoYWRvdzogJHtoLmJkVGhlbWUoImluc2V0IDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMDYpIiwiaW5zZXQgMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSIpfTsKICAgICAgfQoKICAgICAgLnByZXZpZXctY29udGFpbmVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDIwcHg7CiAgICAgIH0KCiAgICAgIC5wcmV2aWV3LWltYWdlIHsKICAgICAgICB3aWR0aDogMTgwcHg7CiAgICAgICAgaGVpZ2h0OiAxODBweDsKICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjsKICAgICAgICBib3JkZXI6IDRweCBzb2xpZCAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMxODE4MWIiKX07CiAgICAgICAgYm94LXNoYWRvdzogJHtoLmJkVGhlbWUoIjAgMTBweCAxNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDRweCA2cHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMDUpIiwiMCAxMHB4IDE1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMyksIDAgNHB4IDZweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSIpfTsKICAgICAgfQoKICAgICAgLnByZXZpZXctaW1hZ2Uucm91bmQgewogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgfQoKICAgICAgLnByZXZpZXctaW1hZ2Uuc3F1YXJlIHsKICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4OwogICAgICB9CgogICAgICAuc3VjY2Vzcy1tZXNzYWdlIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAxMHB4OwogICAgICAgIHBhZGRpbmc6IDEwcHggMjBweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiIzEwYjk4MSIsIiMxMGI5ODEiKX07CiAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGFuaW1hdGlvbjogc3VjY2Vzc1B1bHNlIDAuNHMgZWFzZS1vdXQ7CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMgc3VjY2Vzc1B1bHNlIHsKICAgICAgICAwJSB7IHRyYW5zZm9ybTogc2NhbGUoMC45KTsgb3BhY2l0eTogMDsgfQogICAgICAgIDUwJSB7IHRyYW5zZm9ybTogc2NhbGUoMS4wMik7IH0KICAgICAgICAxMDAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxKTsgb3BhY2l0eTogMTsgfQogICAgICB9CgogICAgICAubW9kYWwtZm9vdGVyIHsKICAgICAgICBwYWRkaW5nOiAyMHB4IDI0cHg7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMDYpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA2KSIpfTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGdhcDogMTBweDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICB9CgogICAgICAuaW5zdHJ1Y3Rpb25zIHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTsKICAgICAgICBtYXgtd2lkdGg6IDMyMHB4OwogICAgICB9CgogICAgICAubG9hZGluZy1zcGlubmVyIHsKICAgICAgICB3aWR0aDogNDBweDsKICAgICAgICBoZWlnaHQ6IDQwcHg7CiAgICAgICAgYm9yZGVyOiAzcHggc29saWQgJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4xKSIsInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSIpfTsKICAgICAgICBib3JkZXItdG9wLWNvbG9yOiAke2guYmRUaGVtZSgiIzNiODJmNiIsIiM2MGE1ZmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIGFuaW1hdGlvbjogc3BpbiAwLjZzIGxpbmVhciBpbmZpbml0ZTsKICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBzcGluIHsKICAgICAgICB0byB7CiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgICAgICAgLm1vZGFsLWNvbnRhaW5lciB7CiAgICAgICAgICB3aWR0aDogY2FsYygxMDB2dyAtIDMycHgpOwogICAgICAgICAgbWFyZ2luOiAxNnB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAubW9kYWwtYm9keSB7CiAgICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgIH0KICAgICAgfQogICAgYF07YXN5bmMgY29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMud2luZG93TGF5ZXI9YXdhaXQgUm8uY3JlYXRlQW5kU2hvdyh7Ymx1cjohMH0pLHRoaXMud2luZG93TGF5ZXIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT50aGlzLmNsb3NlKCkpLHRoaXMuekluZGV4PV9hLmdldE5leHRaSW5kZXgoKSx0aGlzLnN0eWxlLnNldFByb3BlcnR5KCItLXotaW5kZXgiLHRoaXMuekluZGV4LnRvU3RyaW5nKCkpLF9hLnJlZ2lzdGVyKHRoaXMsdGhpcy56SW5kZXgpfWFzeW5jIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLmNyb3BwZXImJnRoaXMuY3JvcHBlci5kZXN0cm95KCksdGhpcy53aW5kb3dMYXllciYmYXdhaXQgdGhpcy53aW5kb3dMYXllci5kZXN0cm95KCksX2EudW5yZWdpc3Rlcih0aGlzKX1yZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGFpbmVyIiBAY2xpY2s9JHtrPT5rLnN0b3BQcm9wYWdhdGlvbigpfT4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgPGgzIGNsYXNzPSJtb2RhbC10aXRsZSI+CiAgICAgICAgICAgICR7dGhpcy5jdXJyZW50U3RlcD09PSJjcm9wIj8iQWRqdXN0IEltYWdlIjoiU3VjY2VzcyJ9CiAgICAgICAgICA8L2gzPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY2xvc2UtYnV0dG9uIiBAY2xpY2s9JHt0aGlzLmNsb3NlfSB0aXRsZT0iQ2xvc2UiPgogICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTp4IiBpY29uU2l6ZT0iMTYiPjwvZGVlcy1pY29uPgogICAgICAgICAgPC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgICAgCiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CiAgICAgICAgICAke3RoaXMuY3VycmVudFN0ZXA9PT0iY3JvcCI/d2AKICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5zdHJ1Y3Rpb25zIj4KICAgICAgICAgICAgICBQb3NpdGlvbiBhbmQgcmVzaXplIHRoZSBzcXVhcmUgdG8gc2VsZWN0IHlvdXIgcHJvZmlsZSBhcmVhCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjcm9wcGVyLWNvbnRhaW5lciIgaWQ9ImNyb3BwZXJDb250YWluZXIiPjwvZGl2PgogICAgICAgICAgYDp3YAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmV2aWV3LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgJHt0aGlzLmlzUHJvY2Vzc2luZz93YAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9hZGluZy1zcGlubmVyIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imluc3RydWN0aW9ucyI+U2F2aW5nLi4uPC9kaXY+CiAgICAgICAgICAgICAgYDp3YAogICAgICAgICAgICAgICAgPGltZyAKICAgICAgICAgICAgICAgICAgY2xhc3M9InByZXZpZXctaW1hZ2UgJHt0aGlzLnNoYXBlfSIgCiAgICAgICAgICAgICAgICAgIHNyYz0iJHt0aGlzLmNyb3BwZWRJbWFnZX0iIAogICAgICAgICAgICAgICAgICBhbHQ9IkNyb3BwZWQgcHJldmlldyIKICAgICAgICAgICAgICAgIC8+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWNjZXNzLW1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpjaGVjayIgaWNvblNpemU9IjE2Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgICAgPHNwYW4+TG9va2luZyBnb29kITwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIGB9CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYH0KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgogICAgICAgICAgJHt0aGlzLmN1cnJlbnRTdGVwPT09ImNyb3AiP3dgCiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbiB0eXBlPSJkZXN0cnVjdGl2ZSIgc2l6ZT0ic20iIEBjbGljaz0ke3RoaXMuY2xvc2V9PgogICAgICAgICAgICAgIENhbmNlbAogICAgICAgICAgICA8L2RlZXMtYnV0dG9uPgogICAgICAgICAgICA8ZGVlcy1idXR0b24gdHlwZT0iZGVmYXVsdCIgc2l6ZT0ic20iIEBjbGljaz0ke3RoaXMuaGFuZGxlQ3JvcH0+CiAgICAgICAgICAgICAgU2F2ZQogICAgICAgICAgICA8L2RlZXMtYnV0dG9uPgogICAgICAgICAgYDoiIn0KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfWFzeW5jIGZpcnN0VXBkYXRlZCgpe3RoaXMuY3VycmVudFN0ZXA9PT0iY3JvcCImJmF3YWl0IHRoaXMuaW5pdGlhbGl6ZUNyb3BwZXIoKX1hc3luYyBpbml0aWFsaXplQ3JvcHBlcigpe2F3YWl0IHRoaXMudXBkYXRlQ29tcGxldGU7bGV0IGs9dGhpcy5zaGFkb3dSb290LmdldEVsZW1lbnRCeUlkKCJjcm9wcGVyQ29udGFpbmVyIik7ayYmKHRoaXMuY3JvcHBlcj1uZXcgcjJlKHtjb250YWluZXI6ayxpbWFnZTp0aGlzLmluaXRpYWxJbWFnZSxzaGFwZTp0aGlzLnNoYXBlLGFzcGVjdFJhdGlvOjEsb3V0cHV0U2l6ZTp0aGlzLm91dHB1dFNpemUsb3V0cHV0UXVhbGl0eTp0aGlzLm91dHB1dFF1YWxpdHl9KSxhd2FpdCB0aGlzLmNyb3BwZXIuaW5pdGlhbGl6ZSgpKX1hc3luYyBoYW5kbGVDcm9wKCl7aWYodGhpcy5jcm9wcGVyKXRyeXt0aGlzLmlzUHJvY2Vzc2luZz0hMCx0aGlzLmN1cnJlbnRTdGVwPSJwcmV2aWV3Iixhd2FpdCB0aGlzLnVwZGF0ZUNvbXBsZXRlO2xldCBrPWF3YWl0IHRoaXMuY3JvcHBlci5nZXRDcm9wcGVkSW1hZ2UoKTt0aGlzLmNyb3BwZWRJbWFnZT1rLGF3YWl0IG5ldyBQcm9taXNlKFM9PnNldFRpbWVvdXQoUyw4MDApKSx0aGlzLmlzUHJvY2Vzc2luZz0hMSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJzYXZlIix7ZGV0YWlsOntjcm9wcGVkSW1hZ2U6dGhpcy5jcm9wcGVkSW1hZ2V9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSksc2V0VGltZW91dCgoKT0+e3RoaXMuY2xvc2UoKX0sMTUwMCl9Y2F0Y2goayl7Y29uc29sZS5lcnJvcigiRXJyb3IgY3JvcHBpbmcgaW1hZ2U6IixrKSx0aGlzLmlzUHJvY2Vzc2luZz0hMX19Y2xvc2UoKXt0aGlzLnJlbW92ZSgpfXN0YXRpY3tKbihhLHQpfX07cmV0dXJuIEg9YX0pKCl9KTt2YXIgc3dhLGl3YT1nKCgpPT57cGUoKTtJdCgpO3hvKCk7aGx0KCk7c3dhPWkoKCk9PndgCiAgPHN0eWxlPgogICAgJHtKYAogICAgICAuZGVtby1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDI0cHg7CiAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICBtYXgtd2lkdGg6IDEyMDBweDsKICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgfQogICAgICAKICAgICAgZGVlcy1wYW5lbCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgICAgfQogICAgICAKICAgICAgLmRlbW8tcm93IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGdhcDogNDhweDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgfQogICAgICAKICAgICAgLmRlbW8tb3V0cHV0IHsKICAgICAgICBtYXJnaW4tdG9wOiAxNnB4OwogICAgICAgIHBhZGRpbmc6IDEycHg7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAxMDUsIDI0MiwgMC4xKTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsOwogICAgICAgIG1heC1oZWlnaHQ6IDEwMHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgIH0KICAgICAgCiAgICAgIC5mZWF0dXJlLWxpc3QgewogICAgICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgICB9CiAgICAgIAogICAgICAuZmVhdHVyZS1saXN0IGxpIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgIH0KICAgIGB9CiAgPC9zdHlsZT4KICAKICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57bGV0IGU9cy5xdWVyeVNlbGVjdG9yKCdkZWVzLWlucHV0LXByb2ZpbGVwaWN0dXJlW3NoYXBlPSJyb3VuZCJdJyk7ZSYmZS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCh0PT57bGV0IGE9dC50YXJnZXQ7Y29uc29sZS5sb2coIlJvdW5kIHByb2ZpbGUgcGljdHVyZSBjaGFuZ2VkOiIsYS52YWx1ZT8uc3Vic3RyaW5nKDAsNTApKyIuLi4iKX0pKX19PgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiUHJvZmlsZSBQaWN0dXJlIElucHV0In0gLnN1YnRpdGxlPSR7IkJhc2ljIHVzYWdlIHdpdGggcm91bmQgYW5kIHNxdWFyZSBzaGFwZXMifT4KICAgICAgICA8ZGl2IGNsYXNzPSJkZW1vLXJvdyI+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1wcm9maWxlcGljdHVyZQogICAgICAgICAgICBsYWJlbD0iUHJvZmlsZSBQaWN0dXJlIChSb3VuZCkiCiAgICAgICAgICAgIGRlc2NyaXB0aW9uPSJDbGljayB0byB1cGxvYWQgb3IgZHJhZyAmIGRyb3AgYW4gaW1hZ2UiCiAgICAgICAgICAgIHNoYXBlPSJyb3VuZCIKICAgICAgICAgICAgc2l6ZT0iMTIwIgogICAgICAgICAgPjwvZGVlcy1pbnB1dC1wcm9maWxlcGljdHVyZT4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtaW5wdXQtcHJvZmlsZXBpY3R1cmUKICAgICAgICAgICAgbGFiZWw9IlByb2ZpbGUgUGljdHVyZSAoU3F1YXJlKSIKICAgICAgICAgICAgZGVzY3JpcHRpb249IlN1cHBvcnRzIEpQRUcsIFBORywgYW5kIFdlYlAgZm9ybWF0cyIKICAgICAgICAgICAgc2hhcGU9InNxdWFyZSIKICAgICAgICAgICAgc2l6ZT0iMTIwIgogICAgICAgICAgPjwvZGVlcy1pbnB1dC1wcm9maWxlcGljdHVyZT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgoKICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntzLnF1ZXJ5U2VsZWN0b3JBbGwoImRlZXMtaW5wdXQtcHJvZmlsZXBpY3R1cmUiKS5mb3JFYWNoKHQ9Pnt0LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsKGE9PntsZXQgcj1hLnRhcmdldDtjb25zb2xlLmxvZyhgUHJvZmlsZSAoc2l6ZSAke3Iuc2l6ZX0pIGNoYW5nZWRgKX0pKX0pfX0+CiAgICAgIDxkZWVzLXBhbmVsIC50aXRsZT0keyJTaXplIFZhcmlhdGlvbnMifSAuc3VidGl0bGU9JHsiUHJvZmlsZSBwaWN0dXJlcyBpbiBkaWZmZXJlbnQgc2l6ZXMifT4KICAgICAgICA8ZGl2IGNsYXNzPSJkZW1vLXJvdyI+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1wcm9maWxlcGljdHVyZQogICAgICAgICAgICBsYWJlbD0iU21hbGwgKDgwcHgpIgogICAgICAgICAgICBzaGFwZT0icm91bmQiCiAgICAgICAgICAgIHNpemU9IjgwIgogICAgICAgICAgPjwvZGVlcy1pbnB1dC1wcm9maWxlcGljdHVyZT4KICAgICAgICAgIAogICAgICAgICAgPGRlZXMtaW5wdXQtcHJvZmlsZXBpY3R1cmUKICAgICAgICAgICAgbGFiZWw9Ik1lZGl1bSAoMTIwcHgpIgogICAgICAgICAgICBzaGFwZT0icm91bmQiCiAgICAgICAgICAgIHNpemU9IjEyMCIKICAgICAgICAgID48L2RlZXMtaW5wdXQtcHJvZmlsZXBpY3R1cmU+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWlucHV0LXByb2ZpbGVwaWN0dXJlCiAgICAgICAgICAgIGxhYmVsPSJMYXJnZSAoMTYwcHgpIgogICAgICAgICAgICBzaGFwZT0icm91bmQiCiAgICAgICAgICAgIHNpemU9IjE2MCIKICAgICAgICAgID48L2RlZXMtaW5wdXQtcHJvZmlsZXBpY3R1cmU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KCiAgICA8ZGVlcy1kZW1vd3JhcHBlciAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57bGV0IGU9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjNhV1IwYUQwaU1qQXdJaUJvWldsbmFIUTlJakl3TUNJZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWo0S0lDQThaR1ZtY3o0S0lDQWdJRHhzYVc1bFlYSkhjbUZrYVdWdWRDQnBaRDBpWjNKaFpHbGxiblFpSUhneFBTSXdKU0lnZVRFOUlqQWxJaUI0TWowaU1UQXdKU0lnZVRJOUlqRXdNQ1VpUGdvZ0lDQWdJQ0E4YzNSdmNDQnZabVp6WlhROUlqQWxJaUJ6ZEc5d0xXTnZiRzl5UFNJak5qWTNaV1ZoSWlBdlBnb2dJQ0FnSUNBOGMzUnZjQ0J2Wm1aelpYUTlJakV3TUNVaUlITjBiM0F0WTI5c2IzSTlJaU0zTmpSaVlUSWlJQzgrQ2lBZ0lDQThMMnhwYm1WaGNrZHlZV1JwWlc1MFBnb2dJRHd2WkdWbWN6NEtJQ0E4Y21WamRDQjNhV1IwYUQwaU1qQXdJaUJvWldsbmFIUTlJakl3TUNJZ1ptbHNiRDBpZFhKc0tDTm5jbUZrYVdWdWRDa2lJQzgrQ2lBZ1BIUmxlSFFnZUQwaU5UQWxJaUI1UFNJMU1DVWlJR1J2YldsdVlXNTBMV0poYzJWc2FXNWxQU0p0YVdSa2JHVWlJSFJsZUhRdFlXNWphRzl5UFNKdGFXUmtiR1VpSUdadmJuUXRabUZ0YVd4NVBTSkJjbWxoYkNJZ1ptOXVkQzF6YVhwbFBTSTRNQ0lnWm1sc2JEMGlkMmhwZEdVaVBrcEVQQzkwWlhoMFBnbzhMM04yWno0PSIsdD1zLnF1ZXJ5U2VsZWN0b3IoIiNwcmVmaWxsZWQtcHJvZmlsZSIpO3QmJih0LnZhbHVlPWUsdC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLChhPT57bGV0IHI9YS50YXJnZXQsbj1zLnF1ZXJ5U2VsZWN0b3IoIiNwcmVmaWxsZWQtb3V0cHV0Iik7biYmKG4udGV4dENvbnRlbnQ9ci52YWx1ZT9gSW1hZ2UgZGF0YTogJHtyLnZhbHVlLnN1YnN0cmluZygwLDgwKX0uLi5gOiJObyBpbWFnZSBzZWxlY3RlZCIpfSkpKX19PgogICAgICA8ZGVlcy1wYW5lbCAudGl0bGU9JHsiUHJlLWZpbGxlZCBhbmQgVmFsdWUgQmluZGluZyJ9IC5zdWJ0aXRsZT0keyJQcm9maWxlIHBpY3R1cmUgd2l0aCBpbml0aWFsIHZhbHVlIGFuZCBjaGFuZ2UgdHJhY2tpbmcifT4KICAgICAgICA8ZGVlcy1pbnB1dC1wcm9maWxlcGljdHVyZQogICAgICAgICAgaWQ9InByZWZpbGxlZC1wcm9maWxlIgogICAgICAgICAgbGFiZWw9IkVkaXQgRXhpc3RpbmcgUHJvZmlsZSIKICAgICAgICAgIGRlc2NyaXB0aW9uPSJDbGljayB0aGUgZWRpdCBidXR0b24gdG8gY2hhbmdlIG9yIGRlbGV0ZSB0byByZW1vdmUiCiAgICAgICAgICBzaGFwZT0icm91bmQiCiAgICAgICAgICBzaXplPSIxNTAiCiAgICAgICAgPjwvZGVlcy1pbnB1dC1wcm9maWxlcGljdHVyZT4KICAgICAgICAKICAgICAgICA8ZGl2IGlkPSJwcmVmaWxsZWQtb3V0cHV0IiBjbGFzcz0iZGVtby1vdXRwdXQiPgogICAgICAgICAgSW1hZ2UgZGF0YSB3aWxsIGFwcGVhciBoZXJlIHdoZW4gY2hhbmdlZAogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CgogICAgPGRlZXMtZGVtb3dyYXBwZXIgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e2xldCBlPXMucXVlcnlTZWxlY3RvcigiI2Rpc2FibGVkLXByb2ZpbGUiKTtlJiYoZS52YWx1ZT0iZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCM2FXUjBhRDBpTWpBd0lpQm9aV2xuYUhROUlqSXdNQ0lnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JajRLSUNBOGNtVmpkQ0IzYVdSMGFEMGlNakF3SWlCb1pXbG5hSFE5SWpJd01DSWdabWxzYkQwaUkyTmpZMk5qWXlJZ0x6NEtJQ0E4ZEdWNGRDQjRQU0kxTUNVaUlIazlJalV3SlNJZ1pHOXRhVzVoYm5RdFltRnpaV3hwYm1VOUltMXBaR1JzWlNJZ2RHVjRkQzFoYm1Ob2IzSTlJbTFwWkdSc1pTSWdabTl1ZEMxbVlXMXBiSGs5SWtGeWFXRnNJaUJtYjI1MExYTnBlbVU5SWpZd0lpQm1hV3hzUFNKM2FHbDBaU0krVGtFOEwzUmxlSFErQ2p3dmMzWm5QZz09Iil9fT4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IkZvcm0gU3RhdGVzIn0gLnN1YnRpdGxlPSR7IkRpZmZlcmVudCBzdGF0ZXMgYW5kIGNvbmZpZ3VyYXRpb25zIn0+CiAgICAgICAgPGRpdiBjbGFzcz0iZGVtby1yb3ciPgogICAgICAgICAgPGRlZXMtaW5wdXQtcHJvZmlsZXBpY3R1cmUKICAgICAgICAgICAgbGFiZWw9IlJlcXVpcmVkIEZpZWxkIgogICAgICAgICAgICBkZXNjcmlwdGlvbj0iVGhpcyBmaWVsZCBpcyByZXF1aXJlZCIKICAgICAgICAgICAgc2hhcGU9InJvdW5kIgogICAgICAgICAgICAucmVxdWlyZWQ9JHshMH0KICAgICAgICAgID48L2RlZXMtaW5wdXQtcHJvZmlsZXBpY3R1cmU+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWlucHV0LXByb2ZpbGVwaWN0dXJlCiAgICAgICAgICAgIGlkPSJkaXNhYmxlZC1wcm9maWxlIgogICAgICAgICAgICBsYWJlbD0iRGlzYWJsZWQgU3RhdGUiCiAgICAgICAgICAgIGRlc2NyaXB0aW9uPSJDYW5ub3QgYmUgZWRpdGVkIgogICAgICAgICAgICBzaGFwZT0ic3F1YXJlIgogICAgICAgICAgICAuZGlzYWJsZWQ9JHshMH0KICAgICAgICAgID48L2RlZXMtaW5wdXQtcHJvZmlsZXBpY3R1cmU+CiAgICAgICAgICAKICAgICAgICAgIDxkZWVzLWlucHV0LXByb2ZpbGVwaWN0dXJlCiAgICAgICAgICAgIGxhYmVsPSJVcGxvYWQgT25seSIKICAgICAgICAgICAgZGVzY3JpcHRpb249IkRlbGV0ZSBub3QgYWxsb3dlZCIKICAgICAgICAgICAgc2hhcGU9InJvdW5kIgogICAgICAgICAgICAuYWxsb3dEZWxldGU9JHshMX0KICAgICAgICAgID48L2RlZXMtaW5wdXQtcHJvZmlsZXBpY3R1cmU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy1wYW5lbD4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KCiAgICA8ZGVlcy1kZW1vd3JhcHBlcj4KICAgICAgPGRlZXMtcGFuZWwgLnRpdGxlPSR7IkZlYXR1cmVzIn0gLnN1YnRpdGxlPSR7IkNvbXBsZXRlIGZlYXR1cmUgc2V0IG9mIHRoZSBwcm9maWxlIHBpY3R1cmUgaW5wdXQifT4KICAgICAgICA8dWwgY2xhc3M9ImZlYXR1cmUtbGlzdCI+CiAgICAgICAgICA8bGk+PHN0cm9uZz5JbWFnZSBVcGxvYWQ6PC9zdHJvbmc+IENsaWNrIHRvIHVwbG9hZCBvciBkcmFnICYgZHJvcCBpbWFnZXM8L2xpPgogICAgICAgICAgPGxpPjxzdHJvbmc+SW1hZ2UgQ3JvcHBpbmc6PC9zdHJvbmc+IEludGVyYWN0aXZlIGNyb3AgdG9vbCB3aXRoIHJlc2l6ZSBoYW5kbGVzPC9saT4KICAgICAgICAgIDxsaT48c3Ryb25nPlNoYXBlIFN1cHBvcnQ6PC9zdHJvbmc+IFJvdW5kIG9yIHNxdWFyZSBwcm9maWxlIHBpY3R1cmVzPC9saT4KICAgICAgICAgIDxsaT48c3Ryb25nPlNpemUgQ3VzdG9taXphdGlvbjo8L3N0cm9uZz4gQWRqdXN0YWJsZSBkaW1lbnNpb25zPC9saT4KICAgICAgICAgIDxsaT48c3Ryb25nPlByZXZpZXcgJiBFZGl0Ojwvc3Ryb25nPiBIb3ZlciBvdmVybGF5IHdpdGggZWRpdCBhbmQgZGVsZXRlIG9wdGlvbnM8L2xpPgogICAgICAgICAgPGxpPjxzdHJvbmc+RmlsZSBWYWxpZGF0aW9uOjwvc3Ryb25nPiBGb3JtYXQgYW5kIHNpemUgcmVzdHJpY3Rpb25zPC9saT4KICAgICAgICAgIDxsaT48c3Ryb25nPlJlc3BvbnNpdmUgRGVzaWduOjwvc3Ryb25nPiBXb3JrcyBvbiBkZXNrdG9wIGFuZCBtb2JpbGUgZGV2aWNlczwvbGk+CiAgICAgICAgICA8bGk+PHN0cm9uZz5Gb3JtIEludGVncmF0aW9uOjwvc3Ryb25nPiBTdGFuZGFyZCBmb3JtIHZhbHVlIGJpbmRpbmcgYW5kIHZhbGlkYXRpb248L2xpPgogICAgICAgICAgPGxpPjxzdHJvbmc+QWNjZXNzaWJpbGl0eTo8L3N0cm9uZz4gS2V5Ym9hcmQgbmF2aWdhdGlvbiBhbmQgc2NyZWVuIHJlYWRlciBzdXBwb3J0PC9saT4KICAgICAgICAgIDxsaT48c3Ryb25nPlotSW5kZXggTWFuYWdlbWVudDo8L3N0cm9uZz4gUHJvcGVyIG1vZGFsIHN0YWNraW5nIHdpdGggcmVnaXN0cnk8L2xpPgogICAgICAgIDwvdWw+CiAgICAgICAgCiAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDogMjRweDsiPgogICAgICAgICAgPHN0cm9uZz5TdXBwb3J0ZWQgRm9ybWF0czo8L3N0cm9uZz4gSlBFRywgUE5HLCBXZWJQPGJyPgogICAgICAgICAgPHN0cm9uZz5NYXggRmlsZSBTaXplOjwvc3Ryb25nPiA1TUIgKGNvbmZpZ3VyYWJsZSk8YnI+CiAgICAgICAgICA8c3Ryb25nPk91dHB1dCBGb3JtYXQ6PC9zdHJvbmc+IEJhc2U2NCBlbmNvZGVkIEpQRUcKICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgPC9kZWVzLWRlbW93cmFwcGVyPgogIDwvZGl2PgpgLCJkZW1vRnVuYyIpfSk7dmFyIFBsLEpzLEFlcyxobHQ9ZygoKT0+e3BlKCk7RWkoKTtHYSgpO2J4KCk7YXdhKCk7aXdhKCk7aHQoKTtQbD1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sSnM9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LEFlcz0oKCk9PntsZXQgcz1bbmUoImRlZXMtaW5wdXQtcHJvZmlsZXBpY3R1cmUiKV0sZSx0PVtdLGEscj1CdCxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXSxPLCQ9W10sRT1bXSxILGs9W10sUz1bXSxJLFA9W10sUj1bXSxLLFY9W10sVz1bXSxtZSxCPVtdLFU9W10saGUsRj1bXSxqPVtdLHVlLGxlPVtdLFE9W107dmFyIGllPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzSW5wdXRQcm9maWxlUGljdHVyZSIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCB0ZT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZ30pXSxwPVtMKHt0eXBlOlN0cmluZ30pXSxjPVtMKHt0eXBlOk51bWJlcn0pXSx4PVtMKHt0eXBlOlN0cmluZ30pXSx5PVtMKHt0eXBlOkJvb2xlYW59KV0sTj1bTCh7dHlwZTpCb29sZWFufSldLE89W0woe3R5cGU6TnVtYmVyfSldLEg9W0woe3R5cGU6QXJyYXl9KV0sST1bTCh7dHlwZTpOdW1iZXJ9KV0sSz1bTCh7dHlwZTpOdW1iZXJ9KV0sbWU9W1koKV0saGU9W1koKV0sdWU9W1koKV0sUGwodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2YWx1ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShlZT0+InZhbHVlImluIGVlLCJoYXMiKSxnZXQ6aShlZT0+ZWUudmFsdWUsImdldCIpLHNldDppKChlZSxrZSk9PntlZS52YWx1ZT1rZX0sInNldCIpfSxtZXRhZGF0YTp0ZX0sbyxsKSxQbCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNoYXBlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGVlPT4ic2hhcGUiaW4gZWUsImhhcyIpLGdldDppKGVlPT5lZS5zaGFwZSwiZ2V0Iiksc2V0OmkoKGVlLGtlKT0+e2VlLnNoYXBlPWtlfSwic2V0Iil9LG1ldGFkYXRhOnRlfSxkLHUpLFBsKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2l6ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShlZT0+InNpemUiaW4gZWUsImhhcyIpLGdldDppKGVlPT5lZS5zaXplLCJnZXQiKSxzZXQ6aSgoZWUsa2UpPT57ZWUuc2l6ZT1rZX0sInNldCIpfSxtZXRhZGF0YTp0ZX0sYix2KSxQbCh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InBsYWNlaG9sZGVyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGVlPT4icGxhY2Vob2xkZXIiaW4gZWUsImhhcyIpLGdldDppKGVlPT5lZS5wbGFjZWhvbGRlciwiZ2V0Iiksc2V0OmkoKGVlLGtlKT0+e2VlLnBsYWNlaG9sZGVyPWtlfSwic2V0Iil9LG1ldGFkYXRhOnRlfSxtLGYpLFBsKHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYWxsb3dVcGxvYWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZWU9PiJhbGxvd1VwbG9hZCJpbiBlZSwiaGFzIiksZ2V0OmkoZWU9PmVlLmFsbG93VXBsb2FkLCJnZXQiKSxzZXQ6aSgoZWUsa2UpPT57ZWUuYWxsb3dVcGxvYWQ9a2V9LCJzZXQiKX0sbWV0YWRhdGE6dGV9LE0seiksUGwodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJhbGxvd0RlbGV0ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShlZT0+ImFsbG93RGVsZXRlImluIGVlLCJoYXMiKSxnZXQ6aShlZT0+ZWUuYWxsb3dEZWxldGUsImdldCIpLHNldDppKChlZSxrZSk9PntlZS5hbGxvd0RlbGV0ZT1rZX0sInNldCIpfSxtZXRhZGF0YTp0ZX0sQyxfKSxQbCh0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1heEZpbGVTaXplIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGVlPT4ibWF4RmlsZVNpemUiaW4gZWUsImhhcyIpLGdldDppKGVlPT5lZS5tYXhGaWxlU2l6ZSwiZ2V0Iiksc2V0OmkoKGVlLGtlKT0+e2VlLm1heEZpbGVTaXplPWtlfSwic2V0Iil9LG1ldGFkYXRhOnRlfSwkLEUpLFBsKHRoaXMsbnVsbCxILHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYWNjZXB0ZWRGb3JtYXRzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGVlPT4iYWNjZXB0ZWRGb3JtYXRzImluIGVlLCJoYXMiKSxnZXQ6aShlZT0+ZWUuYWNjZXB0ZWRGb3JtYXRzLCJnZXQiKSxzZXQ6aSgoZWUsa2UpPT57ZWUuYWNjZXB0ZWRGb3JtYXRzPWtlfSwic2V0Iil9LG1ldGFkYXRhOnRlfSxrLFMpLFBsKHRoaXMsbnVsbCxJLHtraW5kOiJhY2Nlc3NvciIsbmFtZToib3V0cHV0U2l6ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShlZT0+Im91dHB1dFNpemUiaW4gZWUsImhhcyIpLGdldDppKGVlPT5lZS5vdXRwdXRTaXplLCJnZXQiKSxzZXQ6aSgoZWUsa2UpPT57ZWUub3V0cHV0U2l6ZT1rZX0sInNldCIpfSxtZXRhZGF0YTp0ZX0sUCxSKSxQbCh0aGlzLG51bGwsSyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im91dHB1dFF1YWxpdHkiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZWU9PiJvdXRwdXRRdWFsaXR5ImluIGVlLCJoYXMiKSxnZXQ6aShlZT0+ZWUub3V0cHV0UXVhbGl0eSwiZ2V0Iiksc2V0OmkoKGVlLGtlKT0+e2VlLm91dHB1dFF1YWxpdHk9a2V9LCJzZXQiKX0sbWV0YWRhdGE6dGV9LFYsVyksUGwodGhpcyxudWxsLG1lLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNIb3ZlcmVkIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGVlPT4iaXNIb3ZlcmVkImluIGVlLCJoYXMiKSxnZXQ6aShlZT0+ZWUuaXNIb3ZlcmVkLCJnZXQiKSxzZXQ6aSgoZWUsa2UpPT57ZWUuaXNIb3ZlcmVkPWtlfSwic2V0Iil9LG1ldGFkYXRhOnRlfSxCLFUpLFBsKHRoaXMsbnVsbCxoZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImlzRHJhZ2dpbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZWU9PiJpc0RyYWdnaW5nImluIGVlLCJoYXMiKSxnZXQ6aShlZT0+ZWUuaXNEcmFnZ2luZywiZ2V0Iiksc2V0OmkoKGVlLGtlKT0+e2VlLmlzRHJhZ2dpbmc9a2V9LCJzZXQiKX0sbWV0YWRhdGE6dGV9LEYsaiksUGwodGhpcyxudWxsLHVlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNMb2FkaW5nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGVlPT4iaXNMb2FkaW5nImluIGVlLCJoYXMiKSxnZXQ6aShlZT0+ZWUuaXNMb2FkaW5nLCJnZXQiKSxzZXQ6aSgoZWUsa2UpPT57ZWUuaXNMb2FkaW5nPWtlfSwic2V0Iil9LG1ldGFkYXRhOnRlfSxsZSxRKSxQbChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTp0ZX0sbnVsbCx0KSxpZT1hPWUudmFsdWUsdGUmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6dGV9KX1zdGF0aWMgZGVtbz1zd2E7c3RhdGljIGRlbW9Hcm91cHM9WyJJbnB1dCJdOyNlPUpzKHRoaXMsbywiIik7Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHZhbHVlKHRlKXt0aGlzLiNlPXRlfSN0PShKcyh0aGlzLGwpLEpzKHRoaXMsZCwicm91bmQiKSk7Z2V0IHNoYXBlKCl7cmV0dXJuIHRoaXMuI3R9c2V0IHNoYXBlKHRlKXt0aGlzLiN0PXRlfSNhPShKcyh0aGlzLHUpLEpzKHRoaXMsYiwxMjApKTtnZXQgc2l6ZSgpe3JldHVybiB0aGlzLiNhfXNldCBzaXplKHRlKXt0aGlzLiNhPXRlfSNzPShKcyh0aGlzLHYpLEpzKHRoaXMsbSwiIikpO2dldCBwbGFjZWhvbGRlcigpe3JldHVybiB0aGlzLiNzfXNldCBwbGFjZWhvbGRlcih0ZSl7dGhpcy4jcz10ZX0jaT0oSnModGhpcyxmKSxKcyh0aGlzLE0sITApKTtnZXQgYWxsb3dVcGxvYWQoKXtyZXR1cm4gdGhpcy4jaX1zZXQgYWxsb3dVcGxvYWQodGUpe3RoaXMuI2k9dGV9I3I9KEpzKHRoaXMseiksSnModGhpcyxDLCEwKSk7Z2V0IGFsbG93RGVsZXRlKCl7cmV0dXJuIHRoaXMuI3J9c2V0IGFsbG93RGVsZXRlKHRlKXt0aGlzLiNyPXRlfSNvPShKcyh0aGlzLF8pLEpzKHRoaXMsJCw1KjEwMjQqMTAyNCkpO2dldCBtYXhGaWxlU2l6ZSgpe3JldHVybiB0aGlzLiNvfXNldCBtYXhGaWxlU2l6ZSh0ZSl7dGhpcy4jbz10ZX0jbj0oSnModGhpcyxFKSxKcyh0aGlzLGssWyJpbWFnZS9qcGVnIiwiaW1hZ2UvcG5nIiwiaW1hZ2Uvd2VicCJdKSk7Z2V0IGFjY2VwdGVkRm9ybWF0cygpe3JldHVybiB0aGlzLiNufXNldCBhY2NlcHRlZEZvcm1hdHModGUpe3RoaXMuI249dGV9I2w9KEpzKHRoaXMsUyksSnModGhpcyxQLDgwMCkpO2dldCBvdXRwdXRTaXplKCl7cmV0dXJuIHRoaXMuI2x9c2V0IG91dHB1dFNpemUodGUpe3RoaXMuI2w9dGV9I2M9KEpzKHRoaXMsUiksSnModGhpcyxWLC45NSkpO2dldCBvdXRwdXRRdWFsaXR5KCl7cmV0dXJuIHRoaXMuI2N9c2V0IG91dHB1dFF1YWxpdHkodGUpe3RoaXMuI2M9dGV9I2Q9KEpzKHRoaXMsVyksSnModGhpcyxCLCExKSk7Z2V0IGlzSG92ZXJlZCgpe3JldHVybiB0aGlzLiNkfXNldCBpc0hvdmVyZWQodGUpe3RoaXMuI2Q9dGV9I3U9KEpzKHRoaXMsVSksSnModGhpcyxGLCExKSk7Z2V0IGlzRHJhZ2dpbmcoKXtyZXR1cm4gdGhpcy4jdX1zZXQgaXNEcmFnZ2luZyh0ZSl7dGhpcy4jdT10ZX0jcD0oSnModGhpcyxqKSxKcyh0aGlzLGxlLCExKSk7Z2V0IGlzTG9hZGluZygpe3JldHVybiB0aGlzLiNwfXNldCBpc0xvYWRpbmcodGUpe3RoaXMuI3A9dGV9bW9kYWxJbnN0YW5jZT0oSnModGhpcyxRKSxudWxsKTtzdGF0aWMgc3R5bGVzPVtxZSwuLi5CdC5iYXNlU3R5bGVzLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICAvKiBUT0RPOiBNaWdyYXRlIGhhcmRjb2RlZCB2YWx1ZXMgdG8gLS1kZWVzLSogQ1NTIHZhcmlhYmxlcyAqLwogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAuaW5wdXQtd3JhcHBlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMTZweDsKICAgICAgfQoKICAgICAgLnByb2ZpbGUtY29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICB9CgogICAgICAucHJvZmlsZS1jb250YWluZXI6aG92ZXIgewogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wMik7CiAgICAgIH0KCiAgICAgIC5wcm9maWxlLXBpY3R1cmUgewogICAgICAgIHdpZHRoOiB2YXIoLS1zaXplLCAxMjBweCk7CiAgICAgICAgaGVpZ2h0OiB2YXIoLS1zaXplLCAxMjBweCk7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNWY1ZjUiLCIjMTgxODFiIil9OwogICAgICAgIGJvcmRlcjogM3B4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzI3MjcyYSIpfTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgfQoKICAgICAgLnByb2ZpbGUtcGljdHVyZS5yb3VuZCB7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICB9CgogICAgICAucHJvZmlsZS1waWN0dXJlLnNxdWFyZSB7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgICAgfQoKICAgICAgLnByb2ZpbGUtcGljdHVyZS5kcmFnZ2luZyB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiIzNiODJmNiIsIiM2MGE1ZmEiKX07CiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgNHB4ICR7aC5iZFRoZW1lKCJyZ2JhKDU5LCAxMzAsIDI0NiwgMC4xNSkiLCJyZ2JhKDk2LCAxNjUsIDI1MCwgMC4xNSkiKX07CiAgICAgIH0KCiAgICAgIC5wcm9maWxlLXBpY3R1cmU6aG92ZXIgewogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiNkNGQ0ZDgiLCIjM2YzZjQ2Iil9OwogICAgICB9CgogICAgICAucHJvZmlsZS1waWN0dXJlOmRpc2FibGVkIHsKICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgfQoKICAgICAgLnByb2ZpbGUtaW1hZ2UgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjsKICAgICAgfQoKICAgICAgLnBsYWNlaG9sZGVyLWljb24gewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgIH0KCiAgICAgIC5vdmVybGF5IHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC42KTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgLnByb2ZpbGUtY29udGFpbmVyOmhvdmVyIC5vdmVybGF5IHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CgogICAgICAub3ZlcmxheS1jb250ZW50IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGdhcDogMTJweDsKICAgICAgfQoKICAgICAgLm92ZXJsYXktYnV0dG9uIHsKICAgICAgICB3aWR0aDogNDBweDsKICAgICAgICBoZWlnaHQ6IDQwcHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTUpIiwicmdiYSgzOSwgMzksIDQyLCAwLjk1KSIpfTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjEpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOwogICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgICAgIH0KCiAgICAgIC5vdmVybGF5LWJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjM2YzZjQ2Iil9OwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTsKICAgICAgICBib3gtc2hhZG93OiAwIDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjE1KTsKICAgICAgfQoKICAgICAgLm92ZXJsYXktYnV0dG9uLmRlbGV0ZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMjM5LCA2OCwgNjgsIDAuOSkiLCJyZ2JhKDIyMCwgMzgsIDM4LCAwLjkpIil9OwogICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwogICAgICB9CgogICAgICAub3ZlcmxheS1idXR0b24uZGVsZXRlOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2VmNDQ0NCIsIiNkYzI2MjYiKX07CiAgICAgIH0KCiAgICAgIC5kcm9wLXpvbmUtdGV4dCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogNTAlOwogICAgICAgIGxlZnQ6IDUwJTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5oaWRkZW4taW5wdXQgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KCiAgICAgIC8qIExvYWRpbmcgYW5pbWF0aW9uICovCiAgICAgIC5sb2FkaW5nLW92ZXJsYXkgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KSIsInJnYmEoMCwgMCwgMCwgMC44KSIpfTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlOwogICAgICB9CgogICAgICAubG9hZGluZy1vdmVybGF5LnNob3cgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87CiAgICAgIH0KCiAgICAgIC5sb2FkaW5nLXNwaW5uZXIgewogICAgICAgIHdpZHRoOiA0MHB4OwogICAgICAgIGhlaWdodDogNDBweDsKICAgICAgICBib3JkZXI6IDNweCBzb2xpZCAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjEpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpIil9OwogICAgICAgIGJvcmRlci10b3AtY29sb3I6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzYwYTVmYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYW5pbWF0aW9uOiBzcGluIDAuNnMgbGluZWFyIGluZmluaXRlOwogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIHNwaW4gewogICAgICAgIHRvIHsKICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICAgICAgfQogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIHB1bHNlIHsKICAgICAgICAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICB9CiAgICAgICAgNTAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7CiAgICAgICAgICBvcGFjaXR5OiAwLjg7CiAgICAgICAgfQogICAgICAgIDEwMCUgewogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgfQogICAgICB9CgogICAgICAucHJvZmlsZS1waWN0dXJlLmNsaWNraW5nIHsKICAgICAgICBhbmltYXRpb246IHB1bHNlIDAuM3MgZWFzZS1vdXQ7CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJpbnB1dC13cmFwcGVyIj4KICAgICAgICA8ZGVlcy1sYWJlbCAubGFiZWw9JHt0aGlzLmxhYmVsfSAuaW5mb1RleHQ9JHt0aGlzLmluZm9UZXh0fSAucmVxdWlyZWQ9JHt0aGlzLnJlcXVpcmVkfT48L2RlZXMtbGFiZWw+CiAgICAgICAgCiAgICAgICAgPGRpdiAKICAgICAgICAgIGNsYXNzPSJwcm9maWxlLWNvbnRhaW5lciIKICAgICAgICAgIEBjbGljaz0ke3RoaXMuaGFuZGxlQ2xpY2t9CiAgICAgICAgICBAZHJhZ292ZXI9JHt0aGlzLmhhbmRsZURyYWdPdmVyfQogICAgICAgICAgQGRyYWdsZWF2ZT0ke3RoaXMuaGFuZGxlRHJhZ0xlYXZlfQogICAgICAgICAgQGRyb3A9JHt0aGlzLmhhbmRsZURyb3B9CiAgICAgICAgICBzdHlsZT0iLS1zaXplOiAke3RoaXMuc2l6ZX1weCIKICAgICAgICA+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9maWxlLXBpY3R1cmUgJHt0aGlzLnNoYXBlfSAke3RoaXMuaXNEcmFnZ2luZz8iZHJhZ2dpbmciOiIifSAke3RoaXMuaXNMb2FkaW5nJiYhdGhpcy52YWx1ZT8iY2xpY2tpbmciOiIifSI+CiAgICAgICAgICAgICR7dGhpcy52YWx1ZT93YAogICAgICAgICAgICAgIDxpbWcgY2xhc3M9InByb2ZpbGUtaW1hZ2UiIHNyYz0iJHt0aGlzLnZhbHVlfSIgYWx0PSJQcm9maWxlIHBpY3R1cmUiIC8+CiAgICAgICAgICAgIGA6d2AKICAgICAgICAgICAgICA8ZGVlcy1pY29uIGNsYXNzPSJwbGFjZWhvbGRlci1pY29uIiBpY29uPSJsdWNpZGU6dXNlciIgaWNvblNpemU9IiR7dGhpcy5zaXplKi41fSI+PC9kZWVzLWljb24+CiAgICAgICAgICAgIGB9CiAgICAgICAgICAgIAogICAgICAgICAgICAke3RoaXMuaXNEcmFnZ2luZz93YAogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im92ZXJsYXkiIHN0eWxlPSJvcGFjaXR5OiAxIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRyb3Atem9uZS10ZXh0Ij4KICAgICAgICAgICAgICAgICAgRHJvcCBpbWFnZSBoZXJlCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICR7dGhpcy52YWx1ZSYmIXRoaXMuZGlzYWJsZWQ/d2AKICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJvdmVybGF5Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im92ZXJsYXktY29udGVudCI+CiAgICAgICAgICAgICAgICAgICR7dGhpcy5hbGxvd1VwbG9hZD93YAogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9Im92ZXJsYXktYnV0dG9uIiBAY2xpY2s9JHt0ZT0+e3RlLnN0b3BQcm9wYWdhdGlvbigpLHRoaXMub3Blbk1vZGFsKCl9fSB0aXRsZT0iQ2hhbmdlIHBpY3R1cmUiPgogICAgICAgICAgICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6cGVuY2lsIiBpY29uU2l6ZT0iMjAiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICBgOiIifQogICAgICAgICAgICAgICAgICAke3RoaXMuYWxsb3dEZWxldGU/d2AKICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJvdmVybGF5LWJ1dHRvbiBkZWxldGUiIEBjbGljaz0ke3RlPT57dGUuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5kZWxldGVQaWN0dXJlKCl9fSB0aXRsZT0iRGVsZXRlIHBpY3R1cmUiPgogICAgICAgICAgICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6dHJhc2gyIiBpY29uU2l6ZT0iMjAiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICBgOiIifQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICAke3RoaXMuaXNMb2FkaW5nJiYhdGhpcy52YWx1ZT93YAogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvYWRpbmctb3ZlcmxheSBzaG93Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvYWRpbmctc3Bpbm5lciI+PC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICA8aW5wdXQKICAgICAgICAgIHR5cGU9ImZpbGUiCiAgICAgICAgICBjbGFzcz0iaGlkZGVuLWlucHV0IgogICAgICAgICAgYWNjZXB0PSIke3RoaXMuYWNjZXB0ZWRGb3JtYXRzLmpvaW4oIiwiKX0iCiAgICAgICAgICBAY2hhbmdlPSR7dGhpcy5oYW5kbGVGaWxlU2VsZWN0fQogICAgICAgIC8+CiAgICAgICAgJHt0aGlzLnJlbmRlckRlc2NyaXB0aW9uKCl9CiAgICAgIDwvZGl2PgogICAgYH1oYW5kbGVDbGljaygpe2lmKCEodGhpcy5kaXNhYmxlZHx8IXRoaXMuYWxsb3dVcGxvYWQpJiYhdGhpcy52YWx1ZSl7dGhpcy5pc0xvYWRpbmc9ITA7bGV0IHRlPXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIuaGlkZGVuLWlucHV0IiksZWU9aSgoKT0+e3NldFRpbWVvdXQoKCk9PnsoIXRlLmZpbGVzfHx0ZS5maWxlcy5sZW5ndGg9PT0wKSYmKHRoaXMuaXNMb2FkaW5nPSExKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLGVlKX0sMzAwKX0sImhhbmRsZUZvY3VzIik7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIixlZSksdGUuY2xpY2soKX19aGFuZGxlRmlsZVNlbGVjdCh0ZSl7bGV0IGVlPXRlLnRhcmdldCxrZT1lZS5maWxlcz8uWzBdO3RoaXMuaXNMb2FkaW5nPSExLGtlJiZ0aGlzLnByb2Nlc3NGaWxlKGtlKSxlZS52YWx1ZT0iIn1oYW5kbGVEcmFnT3Zlcih0ZSl7dGUucHJldmVudERlZmF1bHQoKSwhdGhpcy5kaXNhYmxlZCYmdGhpcy5hbGxvd1VwbG9hZCYmKHRoaXMuaXNEcmFnZ2luZz0hMCl9aGFuZGxlRHJhZ0xlYXZlKCl7dGhpcy5pc0RyYWdnaW5nPSExfWhhbmRsZURyb3AodGUpe2lmKHRlLnByZXZlbnREZWZhdWx0KCksdGhpcy5pc0RyYWdnaW5nPSExLHRoaXMuZGlzYWJsZWR8fCF0aGlzLmFsbG93VXBsb2FkKXJldHVybjtsZXQgZWU9dGUuZGF0YVRyYW5zZmVyPy5maWxlc1swXTtlZSYmdGhpcy5wcm9jZXNzRmlsZShlZSl9YXN5bmMgcHJvY2Vzc0ZpbGUodGUpe2lmKCF0aGlzLmFjY2VwdGVkRm9ybWF0cy5pbmNsdWRlcyh0ZS50eXBlKSl7Y29uc29sZS5lcnJvcigiSW52YWxpZCBmaWxlIHR5cGU6Iix0ZS50eXBlKTtyZXR1cm59aWYodGUuc2l6ZT50aGlzLm1heEZpbGVTaXplKXtjb25zb2xlLmVycm9yKCJGaWxlIHRvbyBsYXJnZToiLHRlLnNpemUpO3JldHVybn1sZXQgZWU9bmV3IEZpbGVSZWFkZXI7ZWUub25sb2FkPWFzeW5jIGtlPT57bGV0IFg9a2UudGFyZ2V0Py5yZXN1bHQ7YXdhaXQgdGhpcy5vcGVuTW9kYWwoWCl9LGVlLnJlYWRBc0RhdGFVUkwodGUpfWFzeW5jIG9wZW5Nb2RhbCh0ZSl7bGV0IGVlPXRlfHx0aGlzLnZhbHVlO2lmKCFlZSl7dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5oaWRkZW4taW5wdXQiKS5jbGljaygpO3JldHVybn10aGlzLm1vZGFsSW5zdGFuY2U9bmV3IHBsdCx0aGlzLm1vZGFsSW5zdGFuY2Uuc2hhcGU9dGhpcy5zaGFwZSx0aGlzLm1vZGFsSW5zdGFuY2UuaW5pdGlhbEltYWdlPWVlLHRoaXMubW9kYWxJbnN0YW5jZS5vdXRwdXRTaXplPXRoaXMub3V0cHV0U2l6ZSx0aGlzLm1vZGFsSW5zdGFuY2Uub3V0cHV0UXVhbGl0eT10aGlzLm91dHB1dFF1YWxpdHksdGhpcy5tb2RhbEluc3RhbmNlLmFkZEV2ZW50TGlzdGVuZXIoInNhdmUiLChrZT0+e3RoaXMudmFsdWU9a2UuZGV0YWlsLmNyb3BwZWRJbWFnZSx0aGlzLmNoYW5nZVN1YmplY3QubmV4dCh0aGlzKX0pKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMubW9kYWxJbnN0YW5jZSl9ZGVsZXRlUGljdHVyZSgpe3RoaXMudmFsdWU9IiIsdGhpcy5jaGFuZ2VTdWJqZWN0Lm5leHQodGhpcyl9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy52YWx1ZX1zZXRWYWx1ZSh0ZSl7dGhpcy52YWx1ZT10ZX1zdGF0aWN7SnMoYSx0KX19O3JldHVybiBpZT1hfSkoKX0pO3ZhciByd2E9ZygoKT0+e0h5YSgpO05udCgpO3F5YSgpO0ExZSgpO1JudCgpO2ludCgpO2p5YSgpO1Z5YSgpO1V5YSgpO1d5YSgpO0d5YSgpO0t5YSgpO1l5YSgpO1h5YSgpO09udCgpO0FudCgpO1F5YSgpO0p5YSgpO2V3YSgpO2hsdCgpfSk7dmFyIG93YSxud2E9ZygoKT0+e3BlKCk7b3dhPWkoKCk9PndgCiAgPHN0eWxlPgogICAgLmRlbW9Db250YWluZXIgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICBnYXA6IDMycHg7CiAgICAgIHBhZGRpbmc6IDQ4cHg7CiAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjhmOWZhIiwiIzBhMGEwYSIpfTsKICAgICAgbWluLWhlaWdodDogMTAwdmg7CiAgICB9CiAgICAKICAgIC5zZWN0aW9uIHsKICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMTgxODFiIil9OwogICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMyNzI3MmEiKX07CiAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgcGFkZGluZzogMjRweDsKICAgICAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICAgIH0KICAgIAogICAgLnNlY3Rpb24tdGl0bGUgewogICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07CiAgICB9CiAgICAKICAgIC5zZWN0aW9uLWRlc2NyaXB0aW9uIHsKICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgfQogIDwvc3R5bGU+CiAgPGRpdiBjbGFzcz0iZGVtb0NvbnRhaW5lciI+CiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+Tm9uLVNlbGVjdGFibGUgQ2hpcHM8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1kZXNjcmlwdGlvbiI+QmFzaWMgY2hpcHMgd2l0aG91dCBzZWxlY3Rpb24gY2FwYWJpbGl0eS4gVXNlIGZvciBkaXNwbGF5LW9ubHkgdGFncy48L2Rpdj4KICAgICAgPGRlZXMtY2hpcHMKICAgICAgICBzZWxlY3Rpb25Nb2RlPSJub25lIgogICAgICAgIC5zZWxlY3RhYmxlQ2hpcHM9JHtbe2tleToic3RhdHVzIix2YWx1ZToiQWN0aXZlIn0se2tleToidGllciIsdmFsdWU6IlByZW1pdW0ifSx7a2V5OiJyZWdpb24iLHZhbHVlOiJFVS1XZXN0In0se2tleToidHlwZSIsdmFsdWU6IkVudGVycHJpc2UifV19CiAgICAgID48L2RlZXMtY2hpcHM+CiAgICA8L2Rpdj4KICAgIAogICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPlNpbmdsZSBTZWxlY3Rpb24gQ2hpcHM8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1kZXNjcmlwdGlvbiI+Q2xpY2sgdG8gc2VsZWN0IG9uZSBjaGlwIGF0IGEgdGltZS4gVXNlZnVsIGZvciBmaWx0ZXJzIGFuZCBvcHRpb25zLjwvZGl2PgogICAgICA8ZGVlcy1jaGlwcwogICAgICAgIHNlbGVjdGlvbk1vZGU9InNpbmdsZSIKICAgICAgICAuc2VsZWN0YWJsZUNoaXBzPSR7W3trZXk6ImFsbCIsdmFsdWU6IkFsbCBQcm9qZWN0cyJ9LHtrZXk6ImFjdGl2ZSIsdmFsdWU6IkFjdGl2ZSJ9LHtrZXk6ImFyY2hpdmVkIix2YWx1ZToiQXJjaGl2ZWQifSx7a2V5OiJkcmFmdHMiLHZhbHVlOiJEcmFmdHMifV19CiAgICAgID48L2RlZXMtY2hpcHM+CiAgICA8L2Rpdj4KICAgIAogICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPk11bHRpcGxlIFNlbGVjdGlvbiBDaGlwczwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj5TZWxlY3QgbXVsdGlwbGUgY2hpcHMgc2ltdWx0YW5lb3VzbHkuIEdyZWF0IGZvciB0YWcgc2VsZWN0aW9uLjwvZGl2PgogICAgICA8ZGVlcy1jaGlwcwogICAgICAgIHNlbGVjdGlvbk1vZGU9Im11bHRpcGxlIgogICAgICAgIC5zZWxlY3RhYmxlQ2hpcHM9JHtbe2tleToianMiLHZhbHVlOiJKYXZhU2NyaXB0In0se2tleToidHMiLHZhbHVlOiJUeXBlU2NyaXB0In0se2tleToicmVhY3QiLHZhbHVlOiJSZWFjdCJ9LHtrZXk6InZ1ZSIsdmFsdWU6IlZ1ZSJ9LHtrZXk6ImFuZ3VsYXIiLHZhbHVlOiJBbmd1bGFyIn0se2tleToibm9kZSIsdmFsdWU6Ik5vZGUuanMifV19CiAgICAgID48L2RlZXMtY2hpcHM+CiAgICA8L2Rpdj4KICAgIAogICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPlJlbW92YWJsZSBDaGlwcyB3aXRoIEtleXM8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1kZXNjcmlwdGlvbiI+Q2hpcHMgd2l0aCByZW1vdmUgYnV0dG9ucyBhbmQga2V5LXZhbHVlIHBhaXJzLiBQZXJmZWN0IGZvciBkeW5hbWljIGxpc3RzLjwvZGl2PgogICAgICA8ZGVlcy1jaGlwcwogICAgICAgIHNlbGVjdGlvbk1vZGU9InNpbmdsZSIKICAgICAgICBjaGlwc0FyZVJlbW92YWJsZQogICAgICAgIC5zZWxlY3RhYmxlQ2hpcHM9JHtbe2tleToiZW52Iix2YWx1ZToiUHJvZHVjdGlvbiJ9LHtrZXk6InZlcnNpb24iLHZhbHVlOiIyLjQuMSJ9LHtrZXk6ImJyYW5jaCIsdmFsdWU6Im1haW4ifSx7a2V5OiJhdXRob3IiLHZhbHVlOiJKb2huIERvZSJ9XX0KICAgICAgPjwvZGVlcy1jaGlwcz4KICAgIDwvZGl2PgogICAgCiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+TWl4ZWQgQ29udGVudCBFeGFtcGxlPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tZGVzY3JpcHRpb24iPkNvbWJpbmluZyBkaWZmZXJlbnQgY2hpcCB0eXBlcyBmb3IgY29tcGxleCBVSXMuPC9kaXY+CiAgICAgIDxkZWVzLWNoaXBzCiAgICAgICAgc2VsZWN0aW9uTW9kZT0ibXVsdGlwbGUiCiAgICAgICAgY2hpcHNBcmVSZW1vdmFibGUKICAgICAgICAuc2VsZWN0YWJsZUNoaXBzPSR7W3trZXk6InByaW9yaXR5Iix2YWx1ZToiSGlnaCJ9LHtrZXk6InN0YXR1cyIsdmFsdWU6IkluIFByb2dyZXNzIn0se2tleToiYnVnIix2YWx1ZToiQnVnIn0se2tleToiZmVhdHVyZSIsdmFsdWU6IkZlYXR1cmUifSx7a2V5OiJzcHJpbnQiLHZhbHVlOiJTcHJpbnQgMjMifSx7a2V5OiJhc3NpZ25lZSIsdmFsdWU6IkFsaWNlIn1dfQogICAgICA+PC9kZWVzLWNoaXBzPgogICAgPC9kaXY+CiAgPC9kaXY+CmAsImRlbW9GdW5jIil9KTt2YXIgQ3gsSTIsTmVzLGx3YT1nKCgpPT57cGUoKTtrdCgpO253YSgpO2h0KCk7Q3g9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LEkyPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxOZXM9KCgpPT57bGV0IHM9W25lKCJkZWVzLWNoaXBzIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W107dmFyIE49Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNDaGlwcyIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBDPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woKV0scD1bTCh7dHlwZTpCb29sZWFufSldLGM9W0woe3R5cGU6QXJyYXl9KV0seD1bTCgpXSx5PVtMKHt0eXBlOkFycmF5fSldLEN4KHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VsZWN0aW9uTW9kZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4ic2VsZWN0aW9uTW9kZSJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLnNlbGVjdGlvbk1vZGUsImdldCIpLHNldDppKChfLE8pPT57Xy5zZWxlY3Rpb25Nb2RlPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sbyxsKSxDeCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNoaXBzQXJlUmVtb3ZhYmxlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJjaGlwc0FyZVJlbW92YWJsZSJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLmNoaXBzQXJlUmVtb3ZhYmxlLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uY2hpcHNBcmVSZW1vdmFibGU9T30sInNldCIpfSxtZXRhZGF0YTpDfSxkLHUpLEN4KHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VsZWN0YWJsZUNoaXBzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJzZWxlY3RhYmxlQ2hpcHMiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5zZWxlY3RhYmxlQ2hpcHMsImdldCIpLHNldDppKChfLE8pPT57Xy5zZWxlY3RhYmxlQ2hpcHM9T30sInNldCIpfSxtZXRhZGF0YTpDfSxiLHYpLEN4KHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VsZWN0ZWRDaGlwIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJzZWxlY3RlZENoaXAiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5zZWxlY3RlZENoaXAsImdldCIpLHNldDppKChfLE8pPT57Xy5zZWxlY3RlZENoaXA9T30sInNldCIpfSxtZXRhZGF0YTpDfSxtLGYpLEN4KHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VsZWN0ZWRDaGlwcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4ic2VsZWN0ZWRDaGlwcyJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLnNlbGVjdGVkQ2hpcHMsImdldCIpLHNldDppKChfLE8pPT57Xy5zZWxlY3RlZENoaXBzPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sTSx6KSxDeChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpDfSxudWxsLHQpLE49YT1lLnZhbHVlLEMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Q30pfXN0YXRpYyBkZW1vPW93YTtzdGF0aWMgZGVtb0dyb3Vwcz1bIkxheW91dCJdOyNlPUkyKHRoaXMsbywic2luZ2xlIik7Z2V0IHNlbGVjdGlvbk1vZGUoKXtyZXR1cm4gdGhpcy4jZX1zZXQgc2VsZWN0aW9uTW9kZShDKXt0aGlzLiNlPUN9I3Q9KEkyKHRoaXMsbCksSTIodGhpcyxkLCExKSk7Z2V0IGNoaXBzQXJlUmVtb3ZhYmxlKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGNoaXBzQXJlUmVtb3ZhYmxlKEMpe3RoaXMuI3Q9Q30jYT0oSTIodGhpcyx1KSxJMih0aGlzLGIsW10pKTtnZXQgc2VsZWN0YWJsZUNoaXBzKCl7cmV0dXJuIHRoaXMuI2F9c2V0IHNlbGVjdGFibGVDaGlwcyhDKXt0aGlzLiNhPUN9I3M9KEkyKHRoaXMsdiksSTIodGhpcyxtLG51bGwpKTtnZXQgc2VsZWN0ZWRDaGlwKCl7cmV0dXJuIHRoaXMuI3N9c2V0IHNlbGVjdGVkQ2hpcChDKXt0aGlzLiNzPUN9I2k9KEkyKHRoaXMsZiksSTIodGhpcyxNLFtdKSk7Z2V0IHNlbGVjdGVkQ2hpcHMoKXtyZXR1cm4gdGhpcy4jaX1zZXQgc2VsZWN0ZWRDaGlwcyhDKXt0aGlzLiNpPUN9Y29uc3RydWN0b3IoKXtzdXBlcigpLEkyKHRoaXMseil9c3RhdGljIHN0eWxlcz1bcWUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAubWFpbmJveCB7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgIH0KCiAgICAgIC5jaGlwIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y0ZjRmNSIsIiMyNzI3MmEiKX07CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjM2YzZjQ2Iil9OwogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIHBhZGRpbmc6IDBweCAxMnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjA1KTsKICAgICAgfQoKICAgICAgLmNoaXA6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzNmM2Y0NiIpfTsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjZDFkNWRiIiwiIzUyNTI1YiIpfTsKICAgICAgfQoKICAgICAgLmNoaXA6YWN0aXZlIHsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTgpOwogICAgICB9CgogICAgICAuY2hpcC5zZWxlY3RlZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiMzYjgyZjYiLCIjM2I4MmY2Iil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiMzYjgyZjYiLCIjM2I4MmY2Iil9OwogICAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgICB9CgogICAgICAuY2hpcC5zZWxlY3RlZDpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiMyNTYzZWIiLCIjMjU2M2ViIil9OwogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiMyNTYzZWIiLCIjMjU2M2ViIil9OwogICAgICB9CgogICAgICAuY2hpcEtleSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4wNikiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSkiKX07CiAgICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgbWFyZ2luLWxlZnQ6IC04cHg7CiAgICAgICAgcGFkZGluZzogMHB4IDhweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDhweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiI2ExYTFhYSIpfTsKICAgICAgfQoKICAgICAgLmNoaXAuc2VsZWN0ZWQgLmNoaXBLZXkgewogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTsKICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpOwogICAgICB9CgogICAgICBkZWVzLWljb24gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICB3aWR0aDogMTZweDsKICAgICAgICBoZWlnaHQ6IDE2cHg7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDhweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IC02cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgIH0KCiAgICAgIC5jaGlwLnNlbGVjdGVkIGRlZXMtaWNvbiB7CiAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsKICAgICAgfQoKICAgICAgZGVlcy1pY29uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjEpIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2VmNDQ0NCIsIiNlZjQ0NDQiKX07CiAgICAgIH0KCiAgICAgIC5jaGlwLnNlbGVjdGVkIGRlZXMtaWNvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpOwogICAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0ibWFpbmJveCI+CiAgICAgICAgJHt0aGlzLnNlbGVjdGFibGVDaGlwcy5tYXAoQz0+d2AKICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgIEBjbGljaz0keygpPT50aGlzLnNlbGVjdENoaXAoQyl9CiAgICAgICAgICAgICAgY2xhc3M9ImNoaXAgJHt0aGlzLmlzU2VsZWN0ZWQoQyk/InNlbGVjdGVkIjoiIn0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICAke0Mua2V5P3dgPGRpdiBjbGFzcz0iY2hpcEtleSI+JHtDLmtleX08L2Rpdj5gOndgYH0gJHtDLnZhbHVlfQogICAgICAgICAgICAgICR7dGhpcy5jaGlwc0FyZVJlbW92YWJsZT93YAogICAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24KICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz0ke189PntfLnN0b3BQcm9wYWdhdGlvbigpLHRoaXMucmVtb3ZlQ2hpcChDKX19CiAgICAgICAgICAgICAgICAgICAgICAuaWNvbj0keyJmYTp4bWFyayJ9CiAgICAgICAgICAgICAgICAgICAgPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgICBgOndgYH0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgKX0KICAgICAgPC9kaXY+CiAgICBgfWFzeW5jIGZpcnN0VXBkYXRlZCgpe31pc1NlbGVjdGVkKEMpe3JldHVybiB0aGlzLnNlbGVjdGlvbk1vZGU9PT0ic2luZ2xlIj90aGlzLnNlbGVjdGVkQ2hpcD90aGlzLmlzU2FtZUNoaXAodGhpcy5zZWxlY3RlZENoaXAsQyk6ITE6dGhpcy5zZWxlY3RlZENoaXBzLnNvbWUoXz0+dGhpcy5pc1NhbWVDaGlwKF8sQykpfWlzU2FtZUNoaXAoQyxfKXtyZXR1cm4oQy5rZXkmJl8ua2V5fHxDLnZhbHVlPT09Xy52YWx1ZSkmJkMua2V5PT09Xy5rZXl9YXN5bmMgc2VsZWN0Q2hpcChDKXt0aGlzLnNlbGVjdGlvbk1vZGUhPT0ibm9uZSImJih0aGlzLnNlbGVjdGlvbk1vZGU9PT0ic2luZ2xlIj90aGlzLmlzU2VsZWN0ZWQoQyk/KHRoaXMuc2VsZWN0ZWRDaGlwPW51bGwsdGhpcy5zZWxlY3RlZENoaXBzPVtdKToodGhpcy5zZWxlY3RlZENoaXA9Qyx0aGlzLnNlbGVjdGVkQ2hpcHM9W0NdKTp0aGlzLnNlbGVjdGlvbk1vZGU9PT0ibXVsdGlwbGUiJiYodGhpcy5pc1NlbGVjdGVkKEMpP3RoaXMuc2VsZWN0ZWRDaGlwcz10aGlzLnNlbGVjdGVkQ2hpcHMuZmlsdGVyKF89PiF0aGlzLmlzU2FtZUNoaXAoXyxDKSk6dGhpcy5zZWxlY3RlZENoaXBzPVsuLi50aGlzLnNlbGVjdGVkQ2hpcHMsQ10sdGhpcy5yZXF1ZXN0VXBkYXRlKCkpLGNvbnNvbGUubG9nKHRoaXMuc2VsZWN0ZWRDaGlwcykpfXJlbW92ZUNoaXAoQyl7dGhpcy5zZWxlY3RhYmxlQ2hpcHM9dGhpcy5zZWxlY3RhYmxlQ2hpcHMuZmlsdGVyKF89PiF0aGlzLmlzU2FtZUNoaXAoXyxDKSksdGhpcy5zZWxlY3RlZENoaXBzPXRoaXMuc2VsZWN0ZWRDaGlwcy5maWx0ZXIoXz0+IXRoaXMuaXNTYW1lQ2hpcChfLEMpKSx0aGlzLnNlbGVjdGVkQ2hpcCYmdGhpcy5pc1NhbWVDaGlwKHRoaXMuc2VsZWN0ZWRDaGlwLEMpJiYodGhpcy5zZWxlY3RlZENoaXA9bnVsbCksdGhpcy5yZXF1ZXN0VXBkYXRlKCl9c3RhdGlje0kyKGEsdCl9fTtyZXR1cm4gTj1hfSkoKX0pO3ZhciBjd2E9ZygoKT0+e2x3YSgpfSk7dmFyIGR3YSx1d2E9ZygoKT0+e3BlKCk7SXQoKTtkd2E9aSgoKT0+d2AKICAgIDxkZWVzLWRlbW93cmFwcGVyIC5ydW5BZnRlclJlbmRlcj0ke2FzeW5jIHM9PntsZXQgZT1zLnF1ZXJ5U2VsZWN0b3IoIiNkYXNoYm9hcmRHcmlkIiksdD1be2lkOiJtZXRyaWNzMSIseDowLHk6MCx3OjMsaDoyLHRpdGxlOiJSZXZlbnVlIixpY29uOiJsdWNpZGU6ZG9sbGFyU2lnbiIsY29udGVudDp3YAogICAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nOiAyMHB4OyI+CiAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZm9udC1zaXplOiAzMnB4OyBmb250LXdlaWdodDogNzAwOyBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTA5MGIiLCIjZmFmYWZhIil9OyI+JDEyNCw1NjM8L2Rpdj4KICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJjb2xvcjogIzIyYzU1ZTsgZm9udC1zaXplOiAxNHB4OyBtYXJnaW4tdG9wOiA4cHg7Ij7ihpEgMTIuNSUgZnJvbSBsYXN0IG1vbnRoPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYH0se2lkOiJtZXRyaWNzMiIseDozLHk6MCx3OjMsaDoyLHRpdGxlOiJVc2VycyIsaWNvbjoibHVjaWRlOnVzZXJzIixjb250ZW50OndgCiAgICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmc6IDIwcHg7Ij4KICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJmb250LXNpemU6IDMycHg7IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07Ij44LDIzNDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiAjM2I4MmY2OyBmb250LXNpemU6IDE0cHg7IG1hcmdpbi10b3A6IDhweDsiPuKGkSA1LjIlIGZyb20gbGFzdCB3ZWVrPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYH0se2lkOiJjaGFydDEiLHg6Nix5OjAsdzo2LGg6NCx0aXRsZToiQW5hbHl0aWNzIixpY29uOiJsdWNpZGU6bGluZUNoYXJ0Iixjb250ZW50OndgCiAgICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmc6IDIwcHg7IGhlaWdodDogMTAwJTsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Ij4KICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7IGNvbG9yOiAjNzE3MTdhOyI+CiAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7Imx1Y2lkZTpsaW5lQ2hhcnQifSBzdHlsZT0iZm9udC1zaXplOiA0OHB4OyBtYXJnaW4tYm90dG9tOiAxNnB4OyI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICA8ZGl2PkNoYXJ0IHZpc3VhbGl6YXRpb24gYXJlYTwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIGB9XTtlLndpZGdldHM9dC5tYXAoeT0+KHsuLi55fSkpLGUuY2VsbEhlaWdodD04MCxlLm1hcmdpbj17dG9wOjEwLHJpZ2h0OjEwLGJvdHRvbToxMCxsZWZ0OjEwfSxlLmVuYWJsZUFuaW1hdGlvbj0hMCxlLnNob3dHcmlkTGluZXM9ITE7bGV0IGE9ZS5nZXRMYXlvdXQoKS5tYXAoeT0+KHsuLi55fSkpLHI9ZS53aWRnZXRzLm1hcCgoeSxNKT0+KHtpZDp5LmlkLHg6MCx5Ok09PT0wPzA6ZS53aWRnZXRzLnNsaWNlKDAsTSkucmVkdWNlKCh6LE4pPT56K04uaCwwKSx3OmUuY29sdW1ucyxoOnkuaH0pKTtlLmxheW91dHM9e2Jhc2U6YSxtb2JpbGU6cn07bGV0IG49cy5xdWVyeVNlbGVjdG9yKCIjZGFzaGJvYXJkTGF5b3V0U3RhdHVzIiksbz1pKCgpPT57bGV0IHk9ZS5nZXRMYXlvdXQoKTtuLnRleHRDb250ZW50PWBBY3RpdmUgYnJlYWtwb2ludDogJHtlLmFjdGl2ZUJyZWFrcG9pbnR9IFx1MjAyMiBUaWxlczogJHt5Lmxlbmd0aH1gfSwidXBkYXRlU3RhdHVzIiksbD13aW5kb3cubWF0Y2hNZWRpYSgiKG1heC13aWR0aDogNzY4cHgpIikscD1pKCgpPT57bGV0IHk9bC5tYXRjaGVzPyJtb2JpbGUiOiJiYXNlIjtlLmFwcGx5QnJlYWtwb2ludExheW91dCh5KSxvKCl9LCJoYW5kbGVCcmVha3BvaW50Iik7dHlwZW9mIGwuYWRkRXZlbnRMaXN0ZW5lcj09ImZ1bmN0aW9uIj9sLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIscCk6bC5hZGRMaXN0ZW5lcj8uKHApLHAoKTtsZXQgZD00O3MucXVlcnlTZWxlY3RvckFsbCgiZGVlcy1idXR0b24iKS5mb3JFYWNoKHk9Pntzd2l0Y2goeS50ZXh0Py50cmltKCkpe2Nhc2UiVG9nZ2xlIEFuaW1hdGlvbiI6eS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PntlLmVuYWJsZUFuaW1hdGlvbj0hZS5lbmFibGVBbmltYXRpb259KTticmVhaztjYXNlIlRvZ2dsZSBHcmlkIExpbmVzIjp5LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e2Uuc2hvd0dyaWRMaW5lcz0hZS5zaG93R3JpZExpbmVzfSk7YnJlYWs7Y2FzZSJBZGQgV2lkZ2V0Ijp5LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e2xldCB6PXtpZDpgd2lkZ2V0JHtkKyt9YCx4OjAseTowLHc6MyxoOjIsYXV0b1Bvc2l0aW9uOiEwLHRpdGxlOmBXaWRnZXQgJHtkLTF9YCxpY29uOiJsdWNpZGU6cGFja2FnZSIsY29udGVudDp3YAogICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nOiAyMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJjb2xvcjogIzcxNzE3YTsiPk5ldyB3aWRnZXQgY29udGVudDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi10b3A6IDhweDsgZm9udC1zaXplOiAyNHB4OyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTA5MGIiLCIjZmFmYWZhIil9OyI+JHtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMWUzKX08L2Rpdj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICBgfTtlLmFkZFdpZGdldCh6LCEwKX0pO2JyZWFrO2Nhc2UiQ29tcGFjdCBHcmlkIjp5LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e2UuY29tcGFjdCgpfSk7YnJlYWs7Y2FzZSJUb2dnbGUgRWRpdCBNb2RlIjp5LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e2UuZWRpdGFibGU9IWUuZWRpdGFibGUseS50ZXh0PWUuZWRpdGFibGU/IkxvY2sgR3JpZCI6IlVubG9jayBHcmlkIn0pO2JyZWFrO2Nhc2UiUmVzZXQgTGF5b3V0Ijp5LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e2UuYXBwbHlCcmVha3BvaW50TGF5b3V0KGUuYWN0aXZlQnJlYWtwb2ludCl9KTticmVhaztkZWZhdWx0OmJyZWFrfX0pO2xldCBjPW51bGwsYj0wLHY9aSgoeSxNKT0+e2xldCB6PWUuZ2V0TGF5b3V0KCk7Y29uc29sZS5ncm91cChgXHV7MUY1MDR9ICR7eX0gW0V2ZW50ICMkeysrYn1dYCksY29uc29sZS5sb2coIlRpbWVzdGFtcDoiLG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSksY29uc29sZS5sb2coIkdyaWQgQ29uZmlndXJhdGlvbjoiLHtjb2x1bW5zOmUuY29sdW1ucyxjZWxsSGVpZ2h0OmUuY2VsbEhlaWdodCxtYXJnaW46ZS5tYXJnaW4sZWRpdGFibGU6ZS5lZGl0YWJsZSxhY3RpdmVCcmVha3BvaW50OmUuYWN0aXZlQnJlYWtwb2ludH0pLGNvbnNvbGUubG9nKCJDdXJyZW50IExheW91dDoiLHopLGNvbnNvbGUubG9nKCJXaWRnZXQgQ291bnQ6Iix6Lmxlbmd0aCksY29uc29sZS5sb2coIkdyaWQgQm91bmRzOiIse3RvdGFsV2lkZ2V0czplLndpZGdldHMubGVuZ3RoLG1heFk6TWF0aC5tYXgoLi4uei5tYXAoTj0+Ti55K04uaCkpLG9jY3VwaWVkOnoubWFwKE49PmAke04uaWR9OiAoJHtOLnh9LCR7Ti55fSkgJHtOLnd9eCR7Ti5ofWApLmpvaW4oIiwgIil9KSxNJiZjb25zb2xlLmxvZygiRXZlbnQgRGV0YWlsczoiLE0pLGNvbnNvbGUuZ3JvdXBFbmQoKX0sImxvZ0dyaWRTdGF0ZSIpLHg9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCk9PntsZXQgeT1lLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5wbGFjZWhvbGRlciIpO2lmKHkpe2xldCBNPXtsZWZ0Onkuc3R5bGUubGVmdCx0b3A6eS5zdHlsZS50b3Asd2lkdGg6eS5zdHlsZS53aWR0aCxoZWlnaHQ6eS5zdHlsZS5oZWlnaHR9O2lmKEpTT04uc3RyaW5naWZ5KE0pIT09SlNPTi5zdHJpbmdpZnkoYykpe2NvbnNvbGUuZ3JvdXAoIlx1ezFGNENEfSBQbGFjZWhvbGRlciBQb3NpdGlvbiBDaGFuZ2VkIiksY29uc29sZS5sb2coIlByZXZpb3VzOiIsYyksY29uc29sZS5sb2coIkN1cnJlbnQ6IixNKTtsZXQgej1lLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5ncmlkLWNvbnRhaW5lciIpO3omJmNvbnNvbGUubG9nKCJHcmlkIENvbnRhaW5lciBEaW1lbnNpb25zOiIse3dpZHRoOnouY2xpZW50V2lkdGgsaGVpZ2h0OnouY2xpZW50SGVpZ2h0fSksY29uc29sZS5ncm91cEVuZCgpLGM9TX19fSk7ZS5zaGFkb3dSb290JiZ4Lm9ic2VydmUoZS5zaGFkb3dSb290LHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMCxhdHRyaWJ1dGVzOiEwLGF0dHJpYnV0ZUZpbHRlcjpbInN0eWxlIl19KSx2KCJJbml0aWFsIEdyaWQgU3RhdGUiKSxlLmFkZEV2ZW50TGlzdGVuZXIoIndpZGdldC1tb3ZlIix5PT57bGV0IE09eS5kZXRhaWw7digiV2lkZ2V0IE1vdmUiLHt3aWRnZXQ6TS53aWRnZXQsZGlzcGxhY2VkOk0uZGlzcGxhY2VkLHN3YXBwZWRXaXRoOk0uc3dhcHBlZFdpdGh9KX0pLGUuYWRkRXZlbnRMaXN0ZW5lcigid2lkZ2V0LXJlc2l6ZSIseT0+e2xldCBNPXkuZGV0YWlsO3YoIldpZGdldCBSZXNpemUiLHt3aWRnZXQ6TS53aWRnZXQsZGlzcGxhY2VkOk0uZGlzcGxhY2VkLHN3YXBwZWRXaXRoOk0uc3dhcHBlZFdpdGh9KX0pLGUuYWRkRXZlbnRMaXN0ZW5lcigid2lkZ2V0LXJlbW92ZSIseT0+e2xldCBNPXkuZGV0YWlsO3YoIldpZGdldCBSZW1vdmUiLHtyZW1vdmVkV2lkZ2V0Ok0ud2lkZ2V0fSksbygpfSksZS5hZGRFdmVudExpc3RlbmVyKCJsYXlvdXQtY2hhbmdlIiwoKT0+e3YoIkxheW91dCBDaGFuZ2UiKSxvKCl9KSxlLmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIix5PT57bGV0IE09eS50YXJnZXQuY2xvc2VzdCgiLndpZGdldC1oZWFkZXIiKSx6PXkudGFyZ2V0LmNsb3Nlc3QoIi5yZXNpemUtaGFuZGxlIik7aWYoTXx8eil7Y29uc29sZS5ncm91cChgXHV7MUYzQUZ9IEludGVyYWN0aW9uIFN0YXJ0ZWQ6ICR7TT8iRHJhZyI6IlJlc2l6ZSJ9YCksY29uc29sZS5sb2coIlRhcmdldCBXaWRnZXQ6Iix5LnRhcmdldC5jbG9zZXN0KCIud2lkZ2V0Iik/LmdldEF0dHJpYnV0ZSgiZGF0YS13aWRnZXQtaWQiKSksY29uc29sZS5sb2coIlBvaW50ZXIgUG9zaXRpb246Iix7eDp5LmNsaWVudFgseTp5LmNsaWVudFl9KSxjb25zb2xlLmdyb3VwRW5kKCk7bGV0IE49aShfPT57bGV0IE89eS50YXJnZXQuY2xvc2VzdCgiLndpZGdldCIpO08mJmNvbnNvbGUubG9nKCJcdTIxOTRcdUZFMEYgUG9pbnRlciBNb3ZlOiIse3dpZGdldElkOk8uZ2V0QXR0cmlidXRlKCJkYXRhLXdpZGdldC1pZCIpLHBvc2l0aW9uOnt4Ol8uY2xpZW50WCx5Ol8uY2xpZW50WX0sZGVsdGE6e3g6Xy5jbGllbnRYLXkuY2xpZW50WCx5Ol8uY2xpZW50WS15LmNsaWVudFl9fSl9LCJoYW5kbGVQb2ludGVyTW92ZSIpLEM9aSgoKT0+e2NvbnNvbGUuZ3JvdXAoIlx1ezFGM0MxfSBJbnRlcmFjdGlvbiBFbmRlZCIpLHYoIkZpbmFsIFN0YXRlIEFmdGVyIEludGVyYWN0aW9uIiksY29uc29sZS5ncm91cEVuZCgpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIixOKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLEMpfSwiaGFuZGxlUG9pbnRlclVwIik7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLE4pLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsQyl9fSk7bGV0IG09ZS5hZGRXaWRnZXQuYmluZChlKTtlLmFkZFdpZGdldD0oeSxNKT0+e2NvbnNvbGUuZ3JvdXAoIlx1Mjc5NSBBZGRpbmcgV2lkZ2V0IiksY29uc29sZS5sb2coIk5ldyBXaWRnZXQ6Iix5KSxjb25zb2xlLmxvZygiQXV0byBQb3NpdGlvbjoiLE0pO2xldCB6PW0oeSxNKTtyZXR1cm4gdigiQWZ0ZXIgV2lkZ2V0IEFkZGVkIiksY29uc29sZS5ncm91cEVuZCgpLHp9O2xldCBmPWUuY29tcGFjdC5iaW5kKGUpO2UuY29tcGFjdD15PT57Y29uc29sZS5ncm91cCgiXHV7MUY1REN9XHVGRTBGIENvbXBhY3RpbmcgR3JpZCIpLGNvbnNvbGUubG9nKCJEaXJlY3Rpb246Iix5fHwidmVydGljYWwiKSx2KCJCZWZvcmUgQ29tcGFjdCIpO2xldCBNPWYoeSk7cmV0dXJuIHYoIkFmdGVyIENvbXBhY3QiKSxjb25zb2xlLmdyb3VwRW5kKCksTX0sbygpfX0+CiAgICAgIDxzdHlsZT4KICAgICAgICAke0pgCiAgICAgICAgICAuZGVtb0JveCB7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMDkwOTBiIil9OwogICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBwYWRkaW5nOiA0MHB4OwogICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICBnYXA6IDI0cHg7CiAgICAgICAgICB9CgogICAgICAgICAgLmRlbW8tY29udHJvbHMgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgICAgIGdhcDogMTJweDsKICAgICAgICAgIH0KCiAgICAgICAgICAuZGVtby1jb250cm9scyBkZWVzLWJ1dHRvbiB7CiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgICAgfQoKICAgICAgICAgIC5ncmlkLWNvbnRhaW5lci13cmFwcGVyIHsKICAgICAgICAgICAgZmxleDogMTsKICAgICAgICAgICAgbWluLWhlaWdodDogNjAwcHg7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgIH0KCiAgICAgICAgICAuaW5mbyB7CiAgICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiM3MTcxN2EiKX07CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdHZWlzdCBTYW5zJywgc2Fucy1zZXJpZjsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICBnYXA6IDZweDsKICAgICAgICAgIH0KCiAgICAgICAgICAjZGFzaGJvYXJkTGF5b3V0U3RhdHVzIHsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzYwYTVmYSIpfTsKICAgICAgICAgIH0KICAgICAgICBgfQogICAgICA8L3N0eWxlPgogICAgICA8ZGl2IGNsYXNzPSJkZW1vQm94Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRyb2xzIj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbi1ncm91cCBsYWJlbD0iQW5pbWF0aW9uOiI+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbj5Ub2dnbGUgQW5pbWF0aW9uPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDwvZGVlcy1idXR0b24tZ3JvdXA+CgogICAgICAgICAgPGRlZXMtYnV0dG9uLWdyb3VwIGxhYmVsPSJEaXNwbGF5OiI+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbj5Ub2dnbGUgR3JpZCBMaW5lczwvZGVlcy1idXR0b24+CiAgICAgICAgICA8L2RlZXMtYnV0dG9uLWdyb3VwPgoKICAgICAgICAgIDxkZWVzLWJ1dHRvbi1ncm91cCBsYWJlbD0iQWN0aW9uczoiPgogICAgICAgICAgICA8ZGVlcy1idXR0b24+QWRkIFdpZGdldDwvZGVlcy1idXR0b24+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbj5Db21wYWN0IEdyaWQ8L2RlZXMtYnV0dG9uPgogICAgICAgICAgICA8ZGVlcy1idXR0b24+UmVzZXQgTGF5b3V0PC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDwvZGVlcy1idXR0b24tZ3JvdXA+CgogICAgICAgICAgPGRlZXMtYnV0dG9uLWdyb3VwIGxhYmVsPSJNb2RlOiI+CiAgICAgICAgICAgIDxkZWVzLWJ1dHRvbj5Ub2dnbGUgRWRpdCBNb2RlPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDwvZGVlcy1idXR0b24tZ3JvdXA+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9ImdyaWQtY29udGFpbmVyLXdyYXBwZXIiPgogICAgICAgICAgPGRlZXMtZGFzaGJvYXJkZ3JpZCBpZD0iZGFzaGJvYXJkR3JpZCI+PC9kZWVzLWRhc2hib2FyZGdyaWQ+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9ImluZm8iPgogICAgICAgICAgPGRpdj5EcmFnIHRvIHJlcG9zaXRpb24sIHJlc2l6ZSBmcm9tIGhhbmRsZXMsIG9yIHJpZ2h0LWNsaWNrIGEgaGVhZGVyIHRvIGRlbGV0ZSBhIHRpbGUuPC9kaXY+CiAgICAgICAgICA8ZGl2IGlkPSJkYXNoYm9hcmRMYXlvdXRTdGF0dXMiPjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KICBgLCJkZW1vRnVuYyIpfSk7dmFyIHB3YSxod2E9ZygoKT0+e3BlKCk7cHdhPVtoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIC5ncmlkLWNvbnRhaW5lciB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1pbi1oZWlnaHQ6IDQwMHB4OwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgIC5ncmlkLXdpZGdldCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHdpbGwtY2hhbmdlOiBhdXRvOwogICAgICB9CiAgICAgIAogICAgICA6aG9zdChbZW5hYmxlYW5pbWF0aW9uXSkgLmdyaWQtd2lkZ2V0IHsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwogICAgICB9CgogICAgICAuZ3JpZC13aWRnZXQuZHJhZ2dpbmcgewogICAgICAgIHotaW5kZXg6IDEwMDA7CiAgICAgICAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIG9wYWNpdHk6IDAuODsKICAgICAgICBjdXJzb3I6IGdyYWJiaW5nOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07CiAgICAgIH0KICAgICAgCiAgICAgIC5ncmlkLXdpZGdldC5wbGFjZWhvbGRlciB7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgei1pbmRleDogMTsKICAgICAgfQogICAgICAKICAgICAgLmdyaWQtd2lkZ2V0LnBsYWNlaG9sZGVyIC53aWRnZXQtY29udGVudCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoNTksIDEzMCwgMjQ2LCAwLjEpIiwicmdiYSg1OSwgMTMwLCAyNDYsIDAuMSkiKX07CiAgICAgICAgYm9yZGVyOiAycHggZGFzaGVkICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzNiODJmNiIpfTsKICAgICAgICBib3gtc2hhZG93OiBub25lOwogICAgICB9CgogICAgICAuZ3JpZC13aWRnZXQucmVzaXppbmcgewogICAgICAgIHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgLndpZGdldC1jb250ZW50IHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICB0b3A6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDkwOTBiIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzI3MjcyYSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgYm94LXNoYWRvdzogJHtoLmJkVGhlbWUoIjAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMSkiLCIwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjMpIil9OwogICAgICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4ycyBlYXNlOwogICAgICB9CgogICAgICAuZ3JpZC13aWRnZXQ6aG92ZXIgLndpZGdldC1jb250ZW50IHsKICAgICAgICBib3gtc2hhZG93OiAke2guYmRUaGVtZSgiMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpIiwiMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuNCkiKX07CiAgICAgIH0KCiAgICAgIC5ncmlkLXdpZGdldC5kcmFnZ2luZyAud2lkZ2V0LWNvbnRlbnQgewogICAgICAgIGJveC1zaGFkb3c6ICR7aC5iZFRoZW1lKCIwIDE2cHggNDhweCByZ2JhKDAsIDAsIDAsIDAuMjUpIiwiMCAxNnB4IDQ4cHggcmdiYSgwLCAwLCAwLCAwLjYpIil9OwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7CiAgICAgIH0KCiAgICAgIC53aWRnZXQtaGVhZGVyIHsKICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzI3MjcyYSIpfTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y5ZmFmYiIsIiMwYTBhMGEiKX07CiAgICAgICAgY3Vyc29yOiBncmFiOwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICB9CiAgICAgIAogICAgICAud2lkZ2V0LWhlYWRlcjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNGY0ZjUiLCIjMTgxODFiIil9OwogICAgICB9CiAgICAgIAogICAgICAud2lkZ2V0LWhlYWRlcjphY3RpdmUgewogICAgICAgIGN1cnNvcjogZ3JhYmJpbmc7CiAgICAgIH0KCiAgICAgIC53aWRnZXQtaGVhZGVyLmxvY2tlZCB7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICB9CiAgICAgIAogICAgICAud2lkZ2V0LWhlYWRlci5sb2NrZWQ6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjlmYWZiIiwiIzBhMGEwYSIpfTsKICAgICAgfQoKICAgICAgLndpZGdldC1oZWFkZXIgZGVlcy1pY29uIHsKICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiIzcxNzE3YSIpfTsKICAgICAgfQoKICAgICAgLndpZGdldC1ib2R5IHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07CiAgICAgIH0KCiAgICAgIC53aWRnZXQtYm9keS5oYXMtaGVhZGVyIHsKICAgICAgICB0b3A6IDQ1cHg7CiAgICAgIH0KCiAgICAgIC5yZXNpemUtaGFuZGxlIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgei1pbmRleDogMTA7CiAgICAgIH0KCiAgICAgIC5yZXNpemUtaGFuZGxlOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiIzNiODJmNiIsIiMzYjgyZjYiKX07CiAgICAgICAgb3BhY2l0eTogMC4zOwogICAgICB9CgogICAgICAucmVzaXplLWhhbmRsZS1lIHsKICAgICAgICBjdXJzb3I6IGV3LXJlc2l6ZTsKICAgICAgICB3aWR0aDogMTJweDsKICAgICAgICByaWdodDogLTZweDsKICAgICAgICB0b3A6IDEwJTsKICAgICAgICBoZWlnaHQ6IDgwJTsKICAgICAgfQoKICAgICAgLnJlc2l6ZS1oYW5kbGUtcyB7CiAgICAgICAgY3Vyc29yOiBucy1yZXNpemU7CiAgICAgICAgaGVpZ2h0OiAxMnB4OwogICAgICAgIHdpZHRoOiA4MCU7CiAgICAgICAgYm90dG9tOiAtNnB4OwogICAgICAgIGxlZnQ6IDEwJTsKICAgICAgfQoKICAgICAgLnJlc2l6ZS1oYW5kbGUtc2UgewogICAgICAgIGN1cnNvcjogc2UtcmVzaXplOwogICAgICAgIHdpZHRoOiAyMHB4OwogICAgICAgIGhlaWdodDogMjBweDsKICAgICAgICByaWdodDogLTJweDsKICAgICAgICBib3R0b206IC0ycHg7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZTsKICAgICAgfQogICAgICAKICAgICAgLnJlc2l6ZS1oYW5kbGUtc2U6OmFmdGVyIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgcmlnaHQ6IDRweDsKICAgICAgICBib3R0b206IDRweDsKICAgICAgICB3aWR0aDogNnB4OwogICAgICAgIGhlaWdodDogNnB4OwogICAgICAgIGJvcmRlci1yaWdodDogMnB4IHNvbGlkICR7aC5iZFRoZW1lKCIjNzE3MTdhIiwiIzcxNzE3YSIpfTsKICAgICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjNzE3MTdhIil9OwogICAgICB9CgogICAgICAuZ3JpZC13aWRnZXQ6aG92ZXIgLnJlc2l6ZS1oYW5kbGUtc2UgewogICAgICAgIG9wYWNpdHk6IDAuNzsKICAgICAgfQoKICAgICAgLnJlc2l6ZS1oYW5kbGUtc2U6aG92ZXIgewogICAgICAgIG9wYWNpdHk6IDEgIWltcG9ydGFudDsKICAgICAgfQogICAgICAKICAgICAgLnJlc2l6ZS1oYW5kbGUtc2U6aG92ZXI6OmFmdGVyIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzNiODJmNiIpfTsKICAgICAgfQoKICAgICAgLmdyaWQtcGxhY2Vob2xkZXIgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiIzNiODJmNiIsIiMzYjgyZjYiKX07CiAgICAgICAgb3BhY2l0eTogMC4xOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBib3JkZXI6IDJweCBkYXNoZWQgJHtoLmJkVGhlbWUoIiMzYjgyZjYiLCIjM2I4MmY2Iil9OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5lbXB0eS1zdGF0ZSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgaGVpZ2h0OiA0MDBweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjNzE3MTdhIil9OwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiAzMnB4OwogICAgICB9CgogICAgICAuZW1wdHktc3RhdGUgZGVlcy1pY29uIHsKICAgICAgICBmb250LXNpemU6IDQ4cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgIH0KICAgICAgCiAgICAgIC5ncmlkLWxpbmVzIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIHotaW5kZXg6IC0xOwogICAgICB9CiAgICAgIAogICAgICAuZ3JpZC1saW5lLXZlcnRpY2FsIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICB3aWR0aDogMXB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzI3MjcyYSIpfTsKICAgICAgICBvcGFjaXR5OiAwLjM7CiAgICAgIH0KICAgICAgCiAgICAgIC5ncmlkLWxpbmUtaG9yaXpvbnRhbCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgaGVpZ2h0OiAxcHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMjcyNzJhIil9OwogICAgICAgIG9wYWNpdHk6IDAuMzsKICAgICAgfQogIGBdfSk7dmFyIGdlbixmbHQsZ3dhLGJ3YSxmd2EsdEosbXdhLFJlcyxPZXMsbWx0LHg0LHZ3YSx4d2EseXdhPWcoKCk9PntnZW49MTAsZmx0PWkocz0+e2lmKHR5cGVvZiBzPT0ibnVtYmVyIilyZXR1cm57aG9yaXpvbnRhbDpzLHZlcnRpY2FsOnMsdG9wOnMscmlnaHQ6cyxib3R0b206cyxsZWZ0OnN9O2xldCBlPXt0b3A6cy50b3A/PzEwLHJpZ2h0OnMucmlnaHQ/PzEwLGJvdHRvbTpzLmJvdHRvbT8/MTAsbGVmdDpzLmxlZnQ/PzEwfTtyZXR1cm57Li4uZSxob3Jpem9udGFsOihlLmxlZnQrZS5yaWdodCkvMix2ZXJ0aWNhbDooZS50b3ArZS5ib3R0b20pLzJ9fSwicmVzb2x2ZU1hcmdpbnMiKSxnd2E9aSgocyxlLHQsYSxyKT0+e2xldCBuPXQuaG9yaXpvbnRhbCooZSsxKSxvPU1hdGgubWF4KHMtbiwwKSxsPWU+MD9vL2U6MCxwPXI9PT0iYXV0byI/bDphO3JldHVybntjb250YWluZXJXaWR0aDpzLGNlbGxXaWR0aFB4OmwsbWFyZ2luSG9yaXpvbnRhbFB4OnQuaG9yaXpvbnRhbCxjZWxsSGVpZ2h0UHg6cCxtYXJnaW5WZXJ0aWNhbFB4OnQudmVydGljYWx9fSwiY2FsY3VsYXRlQ2VsbE1ldHJpY3MiKSxid2E9aSgocyxlLHQpPT57aWYocy5sZW5ndGg9PT0wKXJldHVybiAwO2xldCBhPU1hdGgubWF4KC4uLnMubWFwKHI9PnIueStyLmgpLDApO3JldHVybiBhKnQrKGErMSkqZS52ZXJ0aWNhbH0sImNhbGN1bGF0ZUdyaWRIZWlnaHQiKSxmd2E9aSgocyxlLHQsYSxyKT0+ZTxzLngrcy53JiZlK2E+cy54JiZ0PHMueStzLmgmJnQrcj5zLnksIm92ZXJsYXBzIiksdEo9aSgocyxlLHQsYSxyPWUudyxuPWUuaCk9PnMuZmlsdGVyKG89Pm8uaWQ9PT1lLmlkPyExOmZ3YShvLHQsYSxyLG4pKSwiY29sbGVjdENvbGxpc2lvbnMiKSxtd2E9aSgocyxlLHQsYSk9PnRKKHMsZSx0LGEpLmxlbmd0aD4wLCJjaGVja0NvbGxpc2lvbiIpLFJlcz1pKHM9Pih7Li4uc30pLCJjbG9uZVdpZGdldCIpLE9lcz1pKHM9PnMubWFwKFJlcyksImNsb25lV2lkZ2V0cyIpLG1sdD1pKChzLGUsdCxhKT0+e2ZvcihsZXQgbj0wO248MjAwO24rKylmb3IobGV0IG89MDtvPD1hLWU7bysrKWlmKCFzLnNvbWUocD0+ZndhKHAsbyxuLGUsdCkpKXJldHVybnt4Om8seTpufTtyZXR1cm57eDowLHk6cy5yZWR1Y2UoKG4sbyk9Pk1hdGgubWF4KG4sby55K28uaCksMCl9fSwiZmluZEF2YWlsYWJsZVBvc2l0aW9uIikseDQ9aSgocyxlLHQsYSxyKT0+e2xldCBuPU9lcyhzKSxvPW4uZmluZChiPT5iLmlkPT09ZSksbD1zLmZpbmQoYj0+Yi5pZD09PWUpO2lmKCFvfHwhbClyZXR1cm4gbnVsbDtsZXQgcD17eDp0LngseTp0Lnksdzp0Lnc/P28udyxoOnQuaD8/by5ofTtvLng9cC54LG8ueT1wLnksby53PXAudyxvLmg9cC5oO2xldCBkPXRKKG4sbyxwLngscC55LHAudyxwLmgpO2lmKGQubGVuZ3RoPT09MClyZXR1cm57d2lkZ2V0czpuLG1vdmVkV2lkZ2V0czpbby5pZF19O2lmKGQubGVuZ3RoPT09MSl7bGV0IGI9ZFswXTtpZighYi5sb2NrZWQmJiFiLm5vTW92ZSYmYi53PT09by53JiZiLmg9PT1vLmgpe2xldCB2PW4uZmluZCh4PT54LmlkPT09Yi5pZCk7aWYodil7bGV0IHg9bCxtPXt4OnYueCx5OnYueX07aWYodi54PXgueCx2Lnk9eC55LHRKKG4sbyxvLngsby55LG8udyxvLmgpLmxlbmd0aD09PTAmJnRKKG4sdix2Lngsdi55LHYudyx2LmgpLmxlbmd0aD09PTApcmV0dXJue3dpZGdldHM6bixtb3ZlZFdpZGdldHM6W28uaWQsdi5pZF0sc3dhcHBlZFdpdGg6di5pZH07di54PW0ueCx2Lnk9bS55fX19bGV0IHU9bmV3IFNldChbby5pZF0pO2ZvcihsZXQgYiBvZiBkKXtpZihiLmxvY2tlZHx8Yi5ub01vdmUpcmV0dXJuIG51bGw7bGV0IHY9bi5maW5kKGY9PmYuaWQ9PT1iLmlkKTtpZighdiljb250aW51ZTtsZXQgeD1uLmZpbHRlcihmPT5mLmlkIT09Yi5pZCksbT1tbHQoeCx2Lncsdi5oLGEpO3YueD1tLngsdi55PW0ueSx1LmFkZCh2LmlkKX1yZXR1cm4gdEoobixvLG8ueCxvLnksby53LG8uaCkubGVuZ3RoPjA/bnVsbDp7d2lkZ2V0czpuLG1vdmVkV2lkZ2V0czpBcnJheS5mcm9tKHUpfX0sInJlc29sdmVXaWRnZXRQbGFjZW1lbnQiKSx2d2E9aSgocyxlPSJ2ZXJ0aWNhbCIpPT57bGV0IHQ9Wy4uLnNdLnNvcnQoKGEscik9PmU9PT0idmVydGljYWwiP2EueSE9PXIueT9hLnktci55OmEueC1yLng6YS54IT09ci54P2EueC1yLng6YS55LXIueSk7Zm9yKGxldCBhIG9mIHQpaWYoIShhLmxvY2tlZHx8YS5ub01vdmUpKWlmKGU9PT0idmVydGljYWwiKWZvcig7YS55PjAmJiFtd2EocyxhLGEueCxhLnktMSk7KWEueS09MTtlbHNlIGZvcig7YS54PjAmJiFtd2EocyxhLGEueC0xLGEueSk7KWEueC09MX0sImNvbXBhY3RMYXlvdXQiKSx4d2E9aSgocyxlKT0+cy5tYXAodD0+e2xldCBhPWUuZmluZChyPT5yLmlkPT09dC5pZCk7cmV0dXJuIGE/ey4uLnQsLi4uYX06dH0pLCJhcHBseUxheW91dCIpfSk7dmFyIHd3YSxrd2EsU3dhPWcoKCk9Pnt3d2E9aSgoe3BvaW50ZXI6cyxjb250YWluZXJSZWN0OmUsbWV0cmljczp0LGNvbHVtbnM6YSx3aWRnZXQ6cixydGw6bixkcmFnT2Zmc2V0WDpvPTAsZHJhZ09mZnNldFk6bD0wfSk9PntsZXQgcD1zLmNsaWVudFgtZS5sZWZ0LW8sZD1zLmNsaWVudFktZS50b3AtbCx1PXQubWFyZ2luSG9yaXpvbnRhbFB4LGM9dC5tYXJnaW5WZXJ0aWNhbFB4LGI9dC5jZWxsV2lkdGhQeCx2PXQuY2VsbEhlaWdodFB4LHg9aSgoQyxfLE8pPT5NYXRoLm1heChfLE1hdGgubWluKE8sQykpLCJjbGFtcCIpLG09eChwLXUsMCxlLndpZHRoLXUpLGY9eChkLWMsMCxOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpLHk9Yit1LE09ditjLHo9TWF0aC5yb3VuZChtL3kpO24mJih6PWEtci53LXopLHo9eCh6LDAsYS1yLncpO2xldCBOPXgoTWF0aC5yb3VuZChmL00pLDAsTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpO3JldHVybnt4OnoseTpOfX0sImNvbXB1dGVHcmlkQ29vcmRpbmF0ZXMiKSxrd2E9aSgoe3BvaW50ZXI6cyxjb250YWluZXJSZWN0OmUsbWV0cmljczp0LHN0YXJ0V2lkdGg6YSxzdGFydEhlaWdodDpyLHN0YXJ0UG9pbnRlcjpuLGhhbmRsZXI6byx3aWRnZXQ6bCxjb2x1bW5zOnB9KT0+e2xldCBkPXMuY2xpZW50WC1uLmNsaWVudFgsdT1zLmNsaWVudFktbi5jbGllbnRZLGM9YSxiPXIsdj10LmNlbGxXaWR0aFB4K3QubWFyZ2luSG9yaXpvbnRhbFB4LHg9dC5jZWxsSGVpZ2h0UHgrdC5tYXJnaW5WZXJ0aWNhbFB4O2lmKG8uaW5jbHVkZXMoImUiKSl7bGV0IHk9TWF0aC5yb3VuZChkL3YpO2M9YSt5fWlmKG8uaW5jbHVkZXMoInMiKSl7bGV0IHk9TWF0aC5yb3VuZCh1L3gpO2I9cit5fWxldCBtPU1hdGgubWF4KGwubWluV3x8MSxNYXRoLm1pbihjLGwubWF4V3x8cC1sLngpKSxmPU1hdGgubWF4KGwubWluSHx8MSxNYXRoLm1pbihiLGwubWF4SHx8TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpKTtyZXR1cm57d2lkdGg6bSxoZWlnaHQ6Zn19LCJjb21wdXRlUmVzaXplRGltZW5zaW9ucyIpfSk7dmFyIF93YSxNd2E9ZygoKT0+e2ZyKCk7dm8oKTtfd2E9aSgoe3dpZGdldDpzLGhvc3Q6ZSxldmVudDp0fSk9PntsZXQgYT1be25hbWU6IkRlbGV0ZSB0aWxlIixpY29uTmFtZToibHVjaWRlOnRyYXNoMiIsYWN0aW9uOmkoYXN5bmMoKT0+KGUucmVtb3ZlV2lkZ2V0KHMuaWQpLG51bGwpLCJhY3Rpb24iKX1dOyRhLm9wZW5Db250ZXh0TWVudVdpdGhPcHRpb25zKHQsYSl9LCJvcGVuV2lkZ2V0Q29udGV4dE1lbnUiKX0pO3ZhciBnbiwkcyxGZXMsendhPWcoKCk9PntwZSgpO0dhKCk7ZnIoKTt1d2EoKTtod2EoKTt5d2EoKTtTd2EoKTtNd2EoKTtnbj1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sJHM9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LEZlcz0oKCk9PntsZXQgcz1bbmUoImRlZXMtZGFzaGJvYXJkZ3JpZCIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdLEgsaz1bXSxTPVtdLEksUD1bXSxSPVtdLEssVj1bXSxXPVtdLG1lLEI9W10sVT1bXSxoZSxGPVtdLGo9W10sdWUsbGU9W10sUT1bXSxpZSx0ZT1bXSxlZT1bXSxrZSxYPVtdLFo9W107dmFyIHllPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzRGFzaGJvYXJkZ3JpZCIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBxPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6QXJyYXl9KV0scD1bTCh7dHlwZTpOdW1iZXJ9KV0sYz1bTCh7dHlwZTpPYmplY3R9KV0seD1bTCh7dHlwZTpOdW1iZXJ9KV0seT1bTCh7dHlwZTpCb29sZWFufSldLE49W0woe3R5cGU6Qm9vbGVhbixyZWZsZWN0OiEwfSldLE89W0woe3R5cGU6U3RyaW5nfSldLEg9W0woe3R5cGU6Qm9vbGVhbn0pXSxJPVtMKHt0eXBlOkJvb2xlYW59KV0sSz1bTCh7YXR0cmlidXRlOiExfSldLG1lPVtMKHt0eXBlOlN0cmluZ30pXSxoZT1bWSgpXSx1ZT1bWSgpXSxpZT1bWSgpXSxrZT1bWSgpXSxnbih0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6IndpZGdldHMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+IndpZGdldHMiaW4gQSwiaGFzIiksZ2V0OmkoQT0+QS53aWRnZXRzLCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLndpZGdldHM9c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sbyxsKSxnbih0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNlbGxIZWlnaHQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+ImNlbGxIZWlnaHQiaW4gQSwiaGFzIiksZ2V0OmkoQT0+QS5jZWxsSGVpZ2h0LCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLmNlbGxIZWlnaHQ9c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sZCx1KSxnbih0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1hcmdpbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4ibWFyZ2luImluIEEsImhhcyIpLGdldDppKEE9PkEubWFyZ2luLCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLm1hcmdpbj1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSxiLHYpLGduKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY29sdW1ucyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4iY29sdW1ucyJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLmNvbHVtbnMsImdldCIpLHNldDppKChBLHNlKT0+e0EuY29sdW1ucz1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSxtLGYpLGduKHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZWRpdGFibGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+ImVkaXRhYmxlImluIEEsImhhcyIpLGdldDppKEE9PkEuZWRpdGFibGUsImdldCIpLHNldDppKChBLHNlKT0+e0EuZWRpdGFibGU9c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sTSx6KSxnbih0aGlzLG51bGwsTix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImVuYWJsZUFuaW1hdGlvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4iZW5hYmxlQW5pbWF0aW9uImluIEEsImhhcyIpLGdldDppKEE9PkEuZW5hYmxlQW5pbWF0aW9uLCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLmVuYWJsZUFuaW1hdGlvbj1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSxDLF8pLGduKHRoaXMsbnVsbCxPLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY2VsbEhlaWdodFVuaXQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+ImNlbGxIZWlnaHRVbml0ImluIEEsImhhcyIpLGdldDppKEE9PkEuY2VsbEhlaWdodFVuaXQsImdldCIpLHNldDppKChBLHNlKT0+e0EuY2VsbEhlaWdodFVuaXQ9c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sJCxFKSxnbih0aGlzLG51bGwsSCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InJ0bCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4icnRsImluIEEsImhhcyIpLGdldDppKEE9PkEucnRsLCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLnJ0bD1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSxrLFMpLGduKHRoaXMsbnVsbCxJLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2hvd0dyaWRMaW5lcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4ic2hvd0dyaWRMaW5lcyJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLnNob3dHcmlkTGluZXMsImdldCIpLHNldDppKChBLHNlKT0+e0Euc2hvd0dyaWRMaW5lcz1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSxQLFIpLGduKHRoaXMsbnVsbCxLLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibGF5b3V0cyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4ibGF5b3V0cyJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLmxheW91dHMsImdldCIpLHNldDppKChBLHNlKT0+e0EubGF5b3V0cz1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSxWLFcpLGduKHRoaXMsbnVsbCxtZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImFjdGl2ZUJyZWFrcG9pbnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+ImFjdGl2ZUJyZWFrcG9pbnQiaW4gQSwiaGFzIiksZ2V0OmkoQT0+QS5hY3RpdmVCcmVha3BvaW50LCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLmFjdGl2ZUJyZWFrcG9pbnQ9c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sQixVKSxnbih0aGlzLG51bGwsaGUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJwbGFjZWhvbGRlclBvc2l0aW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJwbGFjZWhvbGRlclBvc2l0aW9uImluIEEsImhhcyIpLGdldDppKEE9PkEucGxhY2Vob2xkZXJQb3NpdGlvbiwiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS5wbGFjZWhvbGRlclBvc2l0aW9uPXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LEYsaiksZ24odGhpcyxudWxsLHVlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWV0cmljcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4ibWV0cmljcyJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLm1ldHJpY3MsImdldCIpLHNldDppKChBLHNlKT0+e0EubWV0cmljcz1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSxsZSxRKSxnbih0aGlzLG51bGwsaWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJyZXNvbHZlZE1hcmdpbnMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+InJlc29sdmVkTWFyZ2lucyJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLnJlc29sdmVkTWFyZ2lucywiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS5yZXNvbHZlZE1hcmdpbnM9c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sdGUsZWUpLGduKHRoaXMsbnVsbCxrZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InByZXZpZXdXaWRnZXRzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJwcmV2aWV3V2lkZ2V0cyJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLnByZXZpZXdXaWRnZXRzLCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLnByZXZpZXdXaWRnZXRzPXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LFgsWiksZ24obnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6cX0sbnVsbCx0KSx5ZT1hPWUudmFsdWUscSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpxfSl9c3RhdGljIGRlbW89ZHdhO3N0YXRpYyBkZW1vR3JvdXBzPVsiTGF5b3V0Il07c3RhdGljIHN0eWxlcz1wd2E7I2U9JHModGhpcyxvLFtdKTtnZXQgd2lkZ2V0cygpe3JldHVybiB0aGlzLiNlfXNldCB3aWRnZXRzKHEpe3RoaXMuI2U9cX0jdD0oJHModGhpcyxsKSwkcyh0aGlzLGQsODApKTtnZXQgY2VsbEhlaWdodCgpe3JldHVybiB0aGlzLiN0fXNldCBjZWxsSGVpZ2h0KHEpe3RoaXMuI3Q9cX0jYT0oJHModGhpcyx1KSwkcyh0aGlzLGIsMTApKTtnZXQgbWFyZ2luKCl7cmV0dXJuIHRoaXMuI2F9c2V0IG1hcmdpbihxKXt0aGlzLiNhPXF9I3M9KCRzKHRoaXMsdiksJHModGhpcyxtLDEyKSk7Z2V0IGNvbHVtbnMoKXtyZXR1cm4gdGhpcy4jc31zZXQgY29sdW1ucyhxKXt0aGlzLiNzPXF9I2k9KCRzKHRoaXMsZiksJHModGhpcyxNLCEwKSk7Z2V0IGVkaXRhYmxlKCl7cmV0dXJuIHRoaXMuI2l9c2V0IGVkaXRhYmxlKHEpe3RoaXMuI2k9cX0jcj0oJHModGhpcyx6KSwkcyh0aGlzLEMsITApKTtnZXQgZW5hYmxlQW5pbWF0aW9uKCl7cmV0dXJuIHRoaXMuI3J9c2V0IGVuYWJsZUFuaW1hdGlvbihxKXt0aGlzLiNyPXF9I289KCRzKHRoaXMsXyksJHModGhpcywkLCJweCIpKTtnZXQgY2VsbEhlaWdodFVuaXQoKXtyZXR1cm4gdGhpcy4jb31zZXQgY2VsbEhlaWdodFVuaXQocSl7dGhpcy4jbz1xfSNuPSgkcyh0aGlzLEUpLCRzKHRoaXMsaywhMSkpO2dldCBydGwoKXtyZXR1cm4gdGhpcy4jbn1zZXQgcnRsKHEpe3RoaXMuI249cX0jbD0oJHModGhpcyxTKSwkcyh0aGlzLFAsITEpKTtnZXQgc2hvd0dyaWRMaW5lcygpe3JldHVybiB0aGlzLiNsfXNldCBzaG93R3JpZExpbmVzKHEpe3RoaXMuI2w9cX0jYz0oJHModGhpcyxSKSwkcyh0aGlzLFYsdm9pZCAwKSk7Z2V0IGxheW91dHMoKXtyZXR1cm4gdGhpcy4jY31zZXQgbGF5b3V0cyhxKXt0aGlzLiNjPXF9I2Q9KCRzKHRoaXMsVyksJHModGhpcyxCLCJiYXNlIikpO2dldCBhY3RpdmVCcmVha3BvaW50KCl7cmV0dXJuIHRoaXMuI2R9c2V0IGFjdGl2ZUJyZWFrcG9pbnQocSl7dGhpcy4jZD1xfSN1PSgkcyh0aGlzLFUpLCRzKHRoaXMsRixudWxsKSk7Z2V0IHBsYWNlaG9sZGVyUG9zaXRpb24oKXtyZXR1cm4gdGhpcy4jdX1zZXQgcGxhY2Vob2xkZXJQb3NpdGlvbihxKXt0aGlzLiN1PXF9I3A9KCRzKHRoaXMsaiksJHModGhpcyxsZSxudWxsKSk7Z2V0IG1ldHJpY3MoKXtyZXR1cm4gdGhpcy4jcH1zZXQgbWV0cmljcyhxKXt0aGlzLiNwPXF9I2g9KCRzKHRoaXMsUSksJHModGhpcyx0ZSxudWxsKSk7Z2V0IHJlc29sdmVkTWFyZ2lucygpe3JldHVybiB0aGlzLiNofXNldCByZXNvbHZlZE1hcmdpbnMocSl7dGhpcy4jaD1xfSNmPSgkcyh0aGlzLGVlKSwkcyh0aGlzLFgsbnVsbCkpO2dldCBwcmV2aWV3V2lkZ2V0cygpe3JldHVybiB0aGlzLiNmfXNldCBwcmV2aWV3V2lkZ2V0cyhxKXt0aGlzLiNmPXF9Y29udGFpbmVyQm91bmRzPSgkcyh0aGlzLFopLG51bGwpO2RyYWdTdGF0ZT1udWxsO3Jlc2l6ZVN0YXRlPW51bGw7cmVzaXplT2JzZXJ2ZXI7aW50ZXJhY3Rpb25BY3RpdmU9ITE7YXN5bmMgY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuY29tcHV0ZU1ldHJpY3MoKSx0aGlzLm9ic2VydmVSZXNpemUoKX1hc3luYyBkaXNjb25uZWN0ZWRDYWxsYmFjaygpe2F3YWl0IHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5kaXNjb25uZWN0UmVzaXplT2JzZXJ2ZXIoKSx0aGlzLnJlbGVhc2VQb2ludGVyRXZlbnRzKCl9dXBkYXRlZChxKXsocS5oYXMoIm1hcmdpbiIpfHxxLmhhcygiY29sdW1ucyIpfHxxLmhhcygiY2VsbEhlaWdodCIpfHxxLmhhcygiY2VsbEhlaWdodFVuaXQiKSkmJnRoaXMuY29tcHV0ZU1ldHJpY3MoKSxxLmhhcygid2lkZ2V0cyIpJiYhdGhpcy5pbnRlcmFjdGlvbkFjdGl2ZSYmdGhpcy5ub3RpZnlMYXlvdXRDaGFuZ2UoKX1yZW5kZXIoKXtsZXQgcT10aGlzLndpZGdldHM7aWYocS5sZW5ndGg9PT0wKXJldHVybiB3YAogICAgICAgIDxkaXYgY2xhc3M9ImVtcHR5LXN0YXRlIj4KICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHsibHVjaWRlOmxheW91dEdyaWQifT48L2RlZXMtaWNvbj4KICAgICAgICAgIDxkaXY+Tm8gd2lkZ2V0cyBjb25maWd1cmVkPC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJmb250LXNpemU6IDE0cHg7IG1hcmdpbi10b3A6IDhweDsiPkFkZCB3aWRnZXRzIHRvIHBvcHVsYXRlIHRoZSBkYXNoYm9hcmQ8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgYDtsZXQgQT10aGlzLmVuc3VyZU1ldHJpY3MoKSxzZT10aGlzLnJlc29sdmVkTWFyZ2lucz8/Zmx0KHRoaXMubWFyZ2luKSxvZT1BLmNlbGxIZWlnaHRQeCxhZT10aGlzLnByZXZpZXdXaWRnZXRzPz90aGlzLndpZGdldHMsVGU9YndhKGFlLHNlLG9lKSxSZT10aGlzLnByZXZpZXdXaWRnZXRzP25ldyBNYXAodGhpcy5wcmV2aWV3V2lkZ2V0cy5tYXAoQmU9PltCZS5pZCxCZV0pKTpudWxsO3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJncmlkLWNvbnRhaW5lciIgc3R5bGU9ImhlaWdodDogJHtUZX1weDsiPgogICAgICAgICR7dGhpcy5zaG93R3JpZExpbmVzP3RoaXMucmVuZGVyR3JpZExpbmVzKEEsVGUpOm51bGx9CiAgICAgICAgJHtxLm1hcChCZT0+dGhpcy5yZW5kZXJXaWRnZXQoQmUsQSxzZSxSZSkpfQogICAgICAgICR7dGhpcy5wbGFjZWhvbGRlclBvc2l0aW9uP3RoaXMucmVuZGVyUGxhY2Vob2xkZXIoQSxzZSk6bnVsbH0KICAgICAgPC9kaXY+CiAgICBgfXJlbmRlckdyaWRMaW5lcyhxLEEpe2xldCBzZT1bXSxvZT1bXSxhZT1xLmNlbGxXaWR0aFB4K3EubWFyZ2luSG9yaXpvbnRhbFB4LFRlPXEuY2VsbEhlaWdodFB4K3EubWFyZ2luVmVydGljYWxQeDtmb3IobGV0IEJlPTA7QmU8PXRoaXMuY29sdW1ucztCZSsrKXtsZXQgR2U9QmUqYWUrcS5tYXJnaW5Ib3Jpem9udGFsUHgsRGU9dGhpcy5weFRvUGVyY2VudChHZSxxLmNvbnRhaW5lcldpZHRoKTtzZS5wdXNoKHdgPGRpdiBjbGFzcz0iZ3JpZC1saW5lLXZlcnRpY2FsIiBzdHlsZT0ibGVmdDogJHtEZX0lOyI+PC9kaXY+YCl9bGV0IFJlPU1hdGguY2VpbChBL1RlKTtmb3IobGV0IEJlPTA7QmU8PVJlO0JlKyspe2xldCBHZT1CZSpUZTtvZS5wdXNoKHdgPGRpdiBjbGFzcz0iZ3JpZC1saW5lLWhvcml6b250YWwiIHN0eWxlPSJ0b3A6ICR7R2V9cHg7Ij48L2Rpdj5gKX1yZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iZ3JpZC1saW5lcyI+CiAgICAgICAgJHtzZX0KICAgICAgICAke29lfQogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyV2lkZ2V0KHEsQSxzZSxvZSl7bGV0IGFlPXRoaXMuZHJhZ1N0YXRlPy53aWRnZXRJZD09PXEuaWQsVGU9dGhpcy5yZXNpemVTdGF0ZT8ud2lkZ2V0SWQ9PT1xLmlkLFJlPXEubG9ja2VkfHwhdGhpcy5lZGl0YWJsZSxCZT1vZT8uZ2V0KHEuaWQpPz9udWxsLEdlPWFlP3E6QmU/P3EsRGU9dGhpcy5jb21wdXRlV2lkZ2V0UmVjdChHZSxBLHNlKSxfZT10aGlzLnJ0bD8icmlnaHQiOiJsZWZ0IixDZT10aGlzLnB4VG9QZXJjZW50KERlLmxlZnQsQS5jb250YWluZXJXaWR0aCksdmU9dGhpcy5weFRvUGVyY2VudChEZS53aWR0aCxBLmNvbnRhaW5lcldpZHRoKSxiZT0iIjtpZihhZSYmdGhpcy5kcmFnU3RhdGU/LmN1cnJlbnRQb2ludGVyKXtsZXQgRWU9dGhpcy5kcmFnU3RhdGUuY3VycmVudFBvaW50ZXIsamU9dGhpcy5jb250YWluZXJCb3VuZHM/P3RoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksV2U9RWUuY2xpZW50WC1qZS5sZWZ0LXRoaXMuZHJhZ1N0YXRlLm9mZnNldFgtRGUubGVmdCxzdD1FZS5jbGllbnRZLWplLnRvcC10aGlzLmRyYWdTdGF0ZS5vZmZzZXRZLURlLnRvcDtiZT1gdHJhbnNmb3JtOiB0cmFuc2xhdGUoJHtXZX1weCwgJHtzdH1weCk7YH1yZXR1cm4gd2AKICAgICAgPGRpdgogICAgICAgIGNsYXNzPSJncmlkLXdpZGdldCAke2FlPyJkcmFnZ2luZyI6IiJ9ICR7VGU/InJlc2l6aW5nIjoiIn0iCiAgICAgICAgc3R5bGU9IgogICAgICAgICAgJHtfZX06ICR7Q2V9JTsKICAgICAgICAgIHRvcDogJHtEZS50b3B9cHg7CiAgICAgICAgICB3aWR0aDogJHt2ZX0lOwogICAgICAgICAgaGVpZ2h0OiAke0RlLmhlaWdodH1weDsKICAgICAgICAgICR7YmV9CiAgICAgICAgIgogICAgICAgIGRhdGEtd2lkZ2V0LWlkPSR7cS5pZH0KICAgICAgPgogICAgICAgIDxkaXYgY2xhc3M9IndpZGdldC1jb250ZW50Ij4KICAgICAgICAgICR7cS50aXRsZT93YAogICAgICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICBjbGFzcz0id2lkZ2V0LWhlYWRlciAke1JlPyJsb2NrZWQiOiIifSIKICAgICAgICAgICAgICAgICAgQHBvaW50ZXJkb3duPSR7IVJlJiYhcS5ub01vdmU/RWU9PnRoaXMuc3RhcnREcmFnKEVlLHEpOm51bGx9CiAgICAgICAgICAgICAgICAgIEBjb250ZXh0bWVudT0ke0VlPT50aGlzLmhhbmRsZVdpZGdldENvbnRleHRNZW51KEVlLHEpfQogICAgICAgICAgICAgICAgICB0YWJpbmRleD0keyFSZSYmIXEubm9Nb3ZlPzA6LTF9CiAgICAgICAgICAgICAgICAgIEBrZXlkb3duPSR7RWU9PnRoaXMuaGFuZGxlSGVhZGVyS2V5ZG93bihFZSxxKX0KICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgJHtxLmljb24/d2A8ZGVlcy1pY29uIC5pY29uPSR7cS5pY29ufT48L2RlZXMtaWNvbj5gOm51bGx9CiAgICAgICAgICAgICAgICAgICR7cS50aXRsZX0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIGA6bnVsbH0KICAgICAgICAgIDxkaXYgY2xhc3M9IndpZGdldC1ib2R5ICR7cS50aXRsZT8iaGFzLWhlYWRlciI6IiJ9Ij4KICAgICAgICAgICAgJHtxLmNvbnRlbnR9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICR7IVJlJiYhcS5ub1Jlc2l6ZT93YAogICAgICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICBjbGFzcz0icmVzaXplLWhhbmRsZSByZXNpemUtaGFuZGxlLWUiCiAgICAgICAgICAgICAgICAgIEBwb2ludGVyZG93bj0ke0VlPT50aGlzLnN0YXJ0UmVzaXplKEVlLHEsImUiKX0KICAgICAgICAgICAgICAgID48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgICAgY2xhc3M9InJlc2l6ZS1oYW5kbGUgcmVzaXplLWhhbmRsZS1zIgogICAgICAgICAgICAgICAgICBAcG9pbnRlcmRvd249JHtFZT0+dGhpcy5zdGFydFJlc2l6ZShFZSxxLCJzIil9CiAgICAgICAgICAgICAgICA+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgIGNsYXNzPSJyZXNpemUtaGFuZGxlIHJlc2l6ZS1oYW5kbGUtc2UiCiAgICAgICAgICAgICAgICAgIEBwb2ludGVyZG93bj0ke0VlPT50aGlzLnN0YXJ0UmVzaXplKEVlLHEsInNlIil9CiAgICAgICAgICAgICAgICA+PC9kaXY+CiAgICAgICAgICAgICAgYDpudWxsfQogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyUGxhY2Vob2xkZXIocSxBKXtpZighdGhpcy5wbGFjZWhvbGRlclBvc2l0aW9uKXJldHVybiB3YGA7bGV0IHNlPXRoaXMuY29tcHV0ZVdpZGdldFJlY3QodGhpcy5wbGFjZWhvbGRlclBvc2l0aW9uLHEsQSksb2U9dGhpcy5ydGw/InJpZ2h0IjoibGVmdCIsYWU9dGhpcy5weFRvUGVyY2VudChzZS5sZWZ0LHEuY29udGFpbmVyV2lkdGgpLFRlPXRoaXMucHhUb1BlcmNlbnQoc2Uud2lkdGgscS5jb250YWluZXJXaWR0aCk7cmV0dXJuIHdgCiAgICAgIDxkaXYKICAgICAgICBjbGFzcz0iZ3JpZC13aWRnZXQgcGxhY2Vob2xkZXIiCiAgICAgICAgc3R5bGU9IgogICAgICAgICAgJHtvZX06ICR7YWV9JTsKICAgICAgICAgIHRvcDogJHtzZS50b3B9cHg7CiAgICAgICAgICB3aWR0aDogJHtUZX0lOwogICAgICAgICAgaGVpZ2h0OiAke3NlLmhlaWdodH1weDsKICAgICAgICAiCiAgICAgID4KICAgICAgICA8ZGl2IGNsYXNzPSJ3aWRnZXQtY29udGVudCI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1zdGFydERyYWcocSxBKXtpZighdGhpcy5lZGl0YWJsZXx8QS5ub01vdmV8fEEubG9ja2VkKXJldHVybjtxLnByZXZlbnREZWZhdWx0KCkscS5zdG9wUHJvcGFnYXRpb24oKTtsZXQgc2U9cS5jdXJyZW50VGFyZ2V0LmNsb3Nlc3QoIi5ncmlkLXdpZGdldCIpO2lmKCFzZSlyZXR1cm47bGV0IG9lPXNlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMuY29udGFpbmVyQm91bmRzPXRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdGhpcy5lbnN1cmVNZXRyaWNzKCksdGhpcy5kcmFnU3RhdGU9e3dpZGdldElkOkEuaWQscG9pbnRlcklkOnEucG9pbnRlcklkLG9mZnNldFg6cS5jbGllbnRYLW9lLmxlZnQsb2Zmc2V0WTpxLmNsaWVudFktb2UudG9wLHN0YXJ0OntpZDpBLmlkLHg6QS54LHk6QS55LHc6QS53LGg6QS5ofSxwcmV2aW91c1Bvc2l0aW9uOntpZDpBLmlkLHg6QS54LHk6QS55LHc6QS53LGg6QS5ofSxjdXJyZW50UG9pbnRlcjp7Y2xpZW50WDpxLmNsaWVudFgsY2xpZW50WTpxLmNsaWVudFl9LGxhc3RQbGFjZW1lbnQ6bnVsbH0sdGhpcy5pbnRlcmFjdGlvbkFjdGl2ZT0hMCxxLmN1cnJlbnRUYXJnZXQuc2V0UG9pbnRlckNhcHR1cmUocS5wb2ludGVySWQpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIix0aGlzLmhhbmRsZURyYWdNb3ZlKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLHRoaXMuaGFuZGxlRHJhZ0VuZCksdGhpcy5wbGFjZWhvbGRlclBvc2l0aW9uPXtpZDpBLmlkLHg6QS54LHk6QS55LHc6QS53LGg6QS5ofX1oYW5kbGVEcmFnTW92ZT1pKHE9PntpZighdGhpcy5kcmFnU3RhdGUpcmV0dXJuO2xldCBBPXRoaXMuZW5zdXJlTWV0cmljcygpLHNlPXRoaXMud2lkZ2V0cyxvZT1zZS5maW5kKEJlPT5CZS5pZD09PXRoaXMuZHJhZ1N0YXRlLndpZGdldElkKTtpZighb2UpcmV0dXJuO3EucHJldmVudERlZmF1bHQoKTtsZXQgYWU9dGhpcy5kcmFnU3RhdGUucHJldmlvdXNQb3NpdGlvbixUZT13d2Eoe3BvaW50ZXI6e2NsaWVudFg6cS5jbGllbnRYLGNsaWVudFk6cS5jbGllbnRZfSxjb250YWluZXJSZWN0OnRoaXMuY29udGFpbmVyQm91bmRzPz90aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG1ldHJpY3M6QSxjb2x1bW5zOnRoaXMuY29sdW1ucyx3aWRnZXQ6b2UscnRsOnRoaXMucnRsLGRyYWdPZmZzZXRYOnRoaXMuZHJhZ1N0YXRlLm9mZnNldFgsZHJhZ09mZnNldFk6dGhpcy5kcmFnU3RhdGUub2Zmc2V0WX0pLFJlPXg0KHNlLG9lLmlkLHt4OlRlLngseTpUZS55fSx0aGlzLmNvbHVtbnMsYWUpO2lmKFJlKXtsZXQgQmU9UmUud2lkZ2V0cy5maW5kKERlPT5EZS5pZD09PW9lLmlkKTt0aGlzLmRyYWdTdGF0ZT17Li4udGhpcy5kcmFnU3RhdGUsY3VycmVudFBvaW50ZXI6e2NsaWVudFg6cS5jbGllbnRYLGNsaWVudFk6cS5jbGllbnRZfSxsYXN0UGxhY2VtZW50OlJlLHByZXZpb3VzUG9zaXRpb246QmU/e2lkOkJlLmlkLHg6QmUueCx5OkJlLnksdzpCZS53LGg6QmUuaH06e2lkOm9lLmlkLHg6VGUueCx5OlRlLnksdzpvZS53LGg6b2UuaH19LHRoaXMucHJldmlld1dpZGdldHM9UmUud2lkZ2V0cztsZXQgR2U9UmUud2lkZ2V0cy5maW5kKERlPT5EZS5pZD09PW9lLmlkKTtHZT90aGlzLnBsYWNlaG9sZGVyUG9zaXRpb249e2lkOkdlLmlkLHg6R2UueCx5OkdlLnksdzpHZS53LGg6R2UuaH06dGhpcy5wbGFjZWhvbGRlclBvc2l0aW9uPXtpZDpvZS5pZCx4OlRlLngseTpUZS55LHc6b2UudyxoOm9lLmh9fWVsc2UgdGhpcy5wcmV2aWV3V2lkZ2V0cz1udWxsLHRoaXMucGxhY2Vob2xkZXJQb3NpdGlvbj1udWxsO3RoaXMucmVxdWVzdFVwZGF0ZSgpfSwiaGFuZGxlRHJhZ01vdmUiKTtoYW5kbGVEcmFnRW5kPWkocT0+e2xldCBBPXRoaXMuZHJhZ1N0YXRlO2lmKCFBfHxxLnBvaW50ZXJJZCE9PUEucG9pbnRlcklkKXJldHVybjtsZXQgc2U9dGhpcy53aWRnZXRzO3RoaXMucHJldmlld1dpZGdldHM9bnVsbDtsZXQgb2U9dGhpcy5wbGFjZWhvbGRlclBvc2l0aW9uPz9BLnN0YXJ0LGFlPXg0KHNlLEEud2lkZ2V0SWQse3g6b2UueCx5Om9lLnl9LHRoaXMuY29sdW1ucyxBLnByZXZpb3VzUG9zaXRpb24pO2lmKGFlKXtsZXQgVGU9YWUud2lkZ2V0cy5maW5kKFJlPT5SZS5pZD09PUEud2lkZ2V0SWQpO1RlJiYoYWUud2lkZ2V0cy5zb21lKEJlPT5CZS5pZD09PUEud2lkZ2V0SWQ/ITE6VGUueDxCZS54K0JlLncmJlRlLngrVGUudz5CZS54JiZUZS55PEJlLnkrQmUuaCYmVGUueStUZS5oPkJlLnkpP3RoaXMud2lkZ2V0cz10aGlzLndpZGdldHMubWFwKEJlPT5CZS5pZD09PUEud2lkZ2V0SWQ/ey4uLkJlLHg6QS5zdGFydC54LHk6QS5zdGFydC55fTpCZSk6dGhpcy5jb21taXRQbGFjZW1lbnQoYWUsQS53aWRnZXRJZCwid2lkZ2V0LW1vdmUiKSl9ZWxzZSB0aGlzLndpZGdldHM9dGhpcy53aWRnZXRzLm1hcChUZT0+VGUuaWQ9PT1BLndpZGdldElkP3suLi5UZSx4OkEuc3RhcnQueCx5OkEuc3RhcnQueX06VGUpO3RoaXMucGxhY2Vob2xkZXJQb3NpdGlvbj1udWxsLHRoaXMuZHJhZ1N0YXRlPW51bGwsdGhpcy5pbnRlcmFjdGlvbkFjdGl2ZT0hMSx0aGlzLnJlbGVhc2VQb2ludGVyRXZlbnRzKCl9LCJoYW5kbGVEcmFnRW5kIik7c3RhcnRSZXNpemUocSxBLHNlKXshdGhpcy5lZGl0YWJsZXx8QS5ub1Jlc2l6ZXx8QS5sb2NrZWR8fChxLnByZXZlbnREZWZhdWx0KCkscS5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmVuc3VyZU1ldHJpY3MoKSx0aGlzLnJlc2l6ZVN0YXRlPXt3aWRnZXRJZDpBLmlkLHBvaW50ZXJJZDpxLnBvaW50ZXJJZCxoYW5kbGVyOnNlLHN0YXJ0UG9pbnRlcjp7Y2xpZW50WDpxLmNsaWVudFgsY2xpZW50WTpxLmNsaWVudFl9LHN0YXJ0OntpZDpBLmlkLHg6QS54LHk6QS55LHc6QS53LGg6QS5ofSxzdGFydFdpZHRoOkEudyxzdGFydEhlaWdodDpBLmgsbGFzdFBsYWNlbWVudDpudWxsfSx0aGlzLmludGVyYWN0aW9uQWN0aXZlPSEwLHEuY3VycmVudFRhcmdldC5zZXRQb2ludGVyQ2FwdHVyZShxLnBvaW50ZXJJZCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLHRoaXMuaGFuZGxlUmVzaXplTW92ZSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIix0aGlzLmhhbmRsZVJlc2l6ZUVuZCksdGhpcy5wbGFjZWhvbGRlclBvc2l0aW9uPXtpZDpBLmlkLHg6QS54LHk6QS55LHc6QS53LGg6QS5ofSl9aGFuZGxlUmVzaXplTW92ZT1pKHE9PntpZighdGhpcy5yZXNpemVTdGF0ZSlyZXR1cm47bGV0IEE9dGhpcy5lbnN1cmVNZXRyaWNzKCksc2U9dGhpcy53aWRnZXRzLG9lPXNlLmZpbmQoUmU9PlJlLmlkPT09dGhpcy5yZXNpemVTdGF0ZS53aWRnZXRJZCk7aWYoIW9lKXJldHVybjtxLnByZXZlbnREZWZhdWx0KCk7bGV0IGFlPWt3YSh7cG9pbnRlcjp7Y2xpZW50WDpxLmNsaWVudFgsY2xpZW50WTpxLmNsaWVudFl9LGNvbnRhaW5lclJlY3Q6dGhpcy5jb250YWluZXJCb3VuZHM/P3RoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbWV0cmljczpBLHN0YXJ0V2lkdGg6dGhpcy5yZXNpemVTdGF0ZS5zdGFydFdpZHRoLHN0YXJ0SGVpZ2h0OnRoaXMucmVzaXplU3RhdGUuc3RhcnRIZWlnaHQsc3RhcnRQb2ludGVyOnRoaXMucmVzaXplU3RhdGUuc3RhcnRQb2ludGVyLGhhbmRsZXI6dGhpcy5yZXNpemVTdGF0ZS5oYW5kbGVyLHdpZGdldDpvZSxjb2x1bW5zOnRoaXMuY29sdW1uc30pLFRlPXg0KHNlLG9lLmlkLHt4Om9lLngseTpvZS55LHc6YWUud2lkdGgsaDphZS5oZWlnaHR9LHRoaXMuY29sdW1ucyx0aGlzLnJlc2l6ZVN0YXRlLnN0YXJ0KTtpZihUZSl7dGhpcy5yZXNpemVTdGF0ZT17Li4udGhpcy5yZXNpemVTdGF0ZSxsYXN0UGxhY2VtZW50OlRlfSx0aGlzLnByZXZpZXdXaWRnZXRzPVRlLndpZGdldHM7bGV0IFJlPVRlLndpZGdldHMuZmluZChCZT0+QmUuaWQ9PT1vZS5pZCk7UmU/dGhpcy5wbGFjZWhvbGRlclBvc2l0aW9uPXtpZDpSZS5pZCx4OlJlLngseTpSZS55LHc6UmUudyxoOlJlLmh9OnRoaXMucGxhY2Vob2xkZXJQb3NpdGlvbj17aWQ6b2UuaWQseDpvZS54LHk6b2UueSx3OmFlLndpZHRoLGg6YWUuaGVpZ2h0fX1lbHNlIHRoaXMucHJldmlld1dpZGdldHM9bnVsbCx0aGlzLnBsYWNlaG9sZGVyUG9zaXRpb249bnVsbDt0aGlzLnJlcXVlc3RVcGRhdGUoKX0sImhhbmRsZVJlc2l6ZU1vdmUiKTtoYW5kbGVSZXNpemVFbmQ9aShxPT57bGV0IEE9dGhpcy5yZXNpemVTdGF0ZTtpZighQXx8cS5wb2ludGVySWQhPT1BLnBvaW50ZXJJZClyZXR1cm47bGV0IHNlPXRoaXMud2lkZ2V0czt0aGlzLnByZXZpZXdXaWRnZXRzPW51bGw7bGV0IG9lPUEubGFzdFBsYWNlbWVudD8/eDQoc2UsQS53aWRnZXRJZCx7eDp0aGlzLnBsYWNlaG9sZGVyUG9zaXRpb24/Lng/P0Euc3RhcnQueCx5OnRoaXMucGxhY2Vob2xkZXJQb3NpdGlvbj8ueT8/QS5zdGFydC55LHc6dGhpcy5wbGFjZWhvbGRlclBvc2l0aW9uPy53Pz9BLnN0YXJ0LncsaDp0aGlzLnBsYWNlaG9sZGVyUG9zaXRpb24/Lmg/P0Euc3RhcnQuaH0sdGhpcy5jb2x1bW5zLEEuc3RhcnQpO29lP3RoaXMuY29tbWl0UGxhY2VtZW50KG9lLEEud2lkZ2V0SWQsIndpZGdldC1yZXNpemUiKTp0aGlzLndpZGdldHM9dGhpcy53aWRnZXRzLm1hcChhZT0+YWUuaWQ9PT1BLndpZGdldElkP3suLi5hZSx3OkEuc3RhcnQudyxoOkEuc3RhcnQuaH06YWUpLHRoaXMucGxhY2Vob2xkZXJQb3NpdGlvbj1udWxsLHRoaXMucmVzaXplU3RhdGU9bnVsbCx0aGlzLmludGVyYWN0aW9uQWN0aXZlPSExLHRoaXMucmVsZWFzZVBvaW50ZXJFdmVudHMoKX0sImhhbmRsZVJlc2l6ZUVuZCIpO2hhbmRsZUhlYWRlcktleWRvd24ocSxBKXtpZighdGhpcy5lZGl0YWJsZXx8QS5ub01vdmV8fEEubG9ja2VkKXJldHVybjtsZXQgc2U9cS5rZXksb2U9cS5zaGlmdEtleSxhZT1udWxsO2lmKG9lJiZbIkFycm93TGVmdCIsIkFycm93UmlnaHQiLCJBcnJvd1VwIiwiQXJyb3dEb3duIl0uaW5jbHVkZXMoc2UpKXtxLnByZXZlbnREZWZhdWx0KCk7bGV0IERlPXNlPT09IkFycm93UmlnaHQifHxzZT09PSJBcnJvd0Rvd24iPzE6LTE7aWYoc2U9PT0iQXJyb3dMZWZ0Inx8c2U9PT0iQXJyb3dSaWdodCIpe2xldCBfZT1BLm1heFc/P3RoaXMuY29sdW1ucy1BLngsQ2U9TWF0aC5tYXgoQS5taW5XPz8xLE1hdGgubWluKF9lLEEudytEZSkpO2FlPXg0KHRoaXMud2lkZ2V0cyxBLmlkLHt4OkEueCx5OkEueSx3OkNlLGg6QS5ofSx0aGlzLmNvbHVtbnMpfWVsc2V7bGV0IF9lPUEubWF4SD8/TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLENlPU1hdGgubWF4KEEubWluSD8/MSxNYXRoLm1pbihfZSxBLmgrRGUpKTthZT14NCh0aGlzLndpZGdldHMsQS5pZCx7eDpBLngseTpBLnksdzpBLncsaDpDZX0sdGhpcy5jb2x1bW5zKX1hZSYmdGhpcy5jb21taXRQbGFjZW1lbnQoYWUsQS5pZCwid2lkZ2V0LXJlc2l6ZSIpO3JldHVybn1sZXQgUmU9e0Fycm93TGVmdDp7ZHg6LTEsZHk6MH0sQXJyb3dSaWdodDp7ZHg6MSxkeTowfSxBcnJvd1VwOntkeDowLGR5Oi0xfSxBcnJvd0Rvd246e2R4OjAsZHk6MX19W3NlXTtpZighUmUpcmV0dXJuO3EucHJldmVudERlZmF1bHQoKTtsZXQgQmU9TWF0aC5tYXgoMCxNYXRoLm1pbih0aGlzLmNvbHVtbnMtQS53LEEueCtSZS5keCkpLEdlPU1hdGgubWF4KDAsQS55K1JlLmR5KTthZT14NCh0aGlzLndpZGdldHMsQS5pZCx7eDpCZSx5OkdlfSx0aGlzLmNvbHVtbnMpLGFlJiZ0aGlzLmNvbW1pdFBsYWNlbWVudChhZSxBLmlkLCJ3aWRnZXQtbW92ZSIpfWhhbmRsZVdpZGdldENvbnRleHRNZW51KHEsQSl7cS5wcmV2ZW50RGVmYXVsdCgpLHEuc3RvcFByb3BhZ2F0aW9uKCksX3dhKHt3aWRnZXQ6QSxob3N0OnRoaXMsZXZlbnQ6cX0pfWNvbW1pdFBsYWNlbWVudChxLEEsc2Upe3RoaXMucHJldmlld1dpZGdldHM9bnVsbCx0aGlzLndpZGdldHM9cS53aWRnZXRzO2xldCBvZT10aGlzLndpZGdldHMuZmluZChhZT0+YWUuaWQ9PT1BKTtvZSYmdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChzZSx7ZGV0YWlsOnt3aWRnZXQ6b2UsZGlzcGxhY2VkOnEubW92ZWRXaWRnZXRzLmZpbHRlcihhZT0+YWUhPT1BKSxzd2FwcGVkV2l0aDpxLnN3YXBwZWRXaXRofSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfXJlbW92ZVdpZGdldChxKXtsZXQgQT10aGlzLndpZGdldHMuZmluZChzZT0+c2UuaWQ9PT1xKTtBJiYodGhpcy53aWRnZXRzPXRoaXMud2lkZ2V0cy5maWx0ZXIoc2U9PnNlLmlkIT09cSksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgid2lkZ2V0LXJlbW92ZSIse2RldGFpbDp7d2lkZ2V0OkF9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSkpfXVwZGF0ZVdpZGdldChxLEEpe3RoaXMud2lkZ2V0cz10aGlzLndpZGdldHMubWFwKHNlPT5zZS5pZD09PXE/ey4uLnNlLC4uLkF9OnNlKX1nZXRMYXlvdXQoKXtyZXR1cm4gdGhpcy53aWRnZXRzLm1hcCgoe2lkOnEseDpBLHk6c2UsdzpvZSxoOmFlfSk9Pih7aWQ6cSx4OkEseTpzZSx3Om9lLGg6YWV9KSl9c2V0TGF5b3V0KHEpe3RoaXMud2lkZ2V0cz14d2EodGhpcy53aWRnZXRzLHEpfWxvY2tHcmlkKCl7dGhpcy5lZGl0YWJsZT0hMX11bmxvY2tHcmlkKCl7dGhpcy5lZGl0YWJsZT0hMH1hZGRXaWRnZXQocSxBPSExKXtsZXQgc2U9ey4uLnF9O2lmKEF8fHNlLmF1dG9Qb3NpdGlvbil7bGV0IG9lPW1sdCh0aGlzLndpZGdldHMsc2UudyxzZS5oLHRoaXMuY29sdW1ucyk7c2UueD1vZS54LHNlLnk9b2UueX10aGlzLndpZGdldHM9Wy4uLnRoaXMud2lkZ2V0cyxzZV19Y29tcGFjdChxPSJ2ZXJ0aWNhbCIpe2xldCBBPXRoaXMud2lkZ2V0cy5tYXAoc2U9Pih7Li4uc2V9KSk7dndhKEEscSksdGhpcy53aWRnZXRzPUF9YXBwbHlCcmVha3BvaW50TGF5b3V0KHEpe3RoaXMuYWN0aXZlQnJlYWtwb2ludD1xO2xldCBBPXRoaXMubGF5b3V0cz8uW3FdO0EmJnRoaXMuc2V0TGF5b3V0KEEpfW5vdGlmeUxheW91dENoYW5nZSgpe3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImxheW91dC1jaGFuZ2UiLHtkZXRhaWw6e2xheW91dDp0aGlzLmdldExheW91dCgpfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWVuc3VyZU1ldHJpY3MoKXtyZXR1cm4gdGhpcy5tZXRyaWNzfHx0aGlzLmNvbXB1dGVNZXRyaWNzKCksdGhpcy5tZXRyaWNzfWNvbXB1dGVNZXRyaWNzKCl7aWYoIXRoaXMuaXNDb25uZWN0ZWQpcmV0dXJuO2xldCBxPXRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dGhpcy5jb250YWluZXJCb3VuZHM9cTtsZXQgQT1mbHQodGhpcy5tYXJnaW4pO3RoaXMucmVzb2x2ZWRNYXJnaW5zPUEsdGhpcy5tZXRyaWNzPWd3YShxLndpZHRoLHRoaXMuY29sdW1ucyxBLHRoaXMuY2VsbEhlaWdodCx0aGlzLmNlbGxIZWlnaHRVbml0KX1vYnNlcnZlUmVzaXplKCl7dGhpcy5yZXNpemVPYnNlcnZlcnx8KHRoaXMucmVzaXplT2JzZXJ2ZXI9bmV3IFJlc2l6ZU9ic2VydmVyKCgpPT57dGhpcy5jb21wdXRlTWV0cmljcygpfSksdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMpKX1kaXNjb25uZWN0UmVzaXplT2JzZXJ2ZXIoKXt0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCksdGhpcy5yZXNpemVPYnNlcnZlcj12b2lkIDB9cmVsZWFzZVBvaW50ZXJFdmVudHMoKXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsdGhpcy5oYW5kbGVEcmFnTW92ZSksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIix0aGlzLmhhbmRsZURyYWdFbmQpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIix0aGlzLmhhbmRsZVJlc2l6ZU1vdmUpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsdGhpcy5oYW5kbGVSZXNpemVFbmQpfXB4VG9QZXJjZW50KHEsQSl7cmV0dXJuIEE/TnVtYmVyKChxL0EqMTAwKS50b0ZpeGVkKDQpKTowfWNvbXB1dGVXaWRnZXRSZWN0KHEsQSxzZSl7bGV0IG9lPUEuY2VsbFdpZHRoUHgsYWU9QS5jZWxsSGVpZ2h0UHgsVGU9cS54KihvZStzZS5ob3Jpem9udGFsKStzZS5ob3Jpem9udGFsLFJlPXEueSooYWUrc2UudmVydGljYWwpK3NlLnZlcnRpY2FsLEJlPXEudypvZStNYXRoLm1heCgwLHEudy0xKSpzZS5ob3Jpem9udGFsLEdlPXEuaCphZStNYXRoLm1heCgwLHEuaC0xKSpzZS52ZXJ0aWNhbDtyZXR1cm57bGVmdDpUZSx0b3A6UmUsd2lkdGg6QmUsaGVpZ2h0OkdlfX1zdGF0aWN7JHMoYSx0KX19O3JldHVybiB5ZT1hfSkoKX0pO3ZhciBDd2E9ZygoKT0+e3p3YSgpfSk7ZnVuY3Rpb24gVHdhKCl7cmV0dXJuIHdgCiAgICA8ZGVlcy1oZWFkaW5nIGxldmVsPSIxIj5UaGlzIGlzIGEgSDEgaGVhZGluZzwvZGVlcy1oZWFkaW5nPgogICAgPGRlZXMtaGVhZGluZyBsZXZlbD0iMiI+VGhpcyBpcyBhIEgyIGhlYWRpbmc8L2RlZXMtaGVhZGluZz4KICAgIDxkZWVzLWhlYWRpbmcgbGV2ZWw9IjMiPlRoaXMgaXMgYSBIMyBoZWFkaW5nPC9kZWVzLWhlYWRpbmc+CiAgICA8ZGVlcy1oZWFkaW5nIGxldmVsPSI0Ij5UaGlzIGlzIGEgSDQgaGVhZGluZzwvZGVlcy1oZWFkaW5nPgogICAgPGRlZXMtaGVhZGluZyBsZXZlbD0iNSI+VGhpcyBpcyBhIEg1IGhlYWRpbmc8L2RlZXMtaGVhZGluZz4KICAgIDxkZWVzLWhlYWRpbmcgbGV2ZWw9IjYiPlRoaXMgaXMgYSBINiBoZWFkaW5nPC9kZWVzLWhlYWRpbmc+CiAgICA8ZGVlcy1oZWFkaW5nIGxldmVsPSJociI+VGhpcyBpcyBhbiBociBoZWFkaW5nIChsZXZlbD0iaHIiKTwvZGVlcy1oZWFkaW5nPgogICAgPGRlZXMtaGVhZGluZyBsZXZlbD0iNyI+VGhpcyBpcyBhbiBociBoZWFkaW5nIChsZXZlbD0iNyIpPC9kZWVzLWhlYWRpbmc+CiAgICA8ZGVlcy1oZWFkaW5nIGxldmVsPSJoci1zbWFsbCI+VGhpcyBpcyBhbiBoci1zbWFsbCBoZWFkaW5nIChsZXZlbD0iaHItc21hbGwiKTwvZGVlcy1oZWFkaW5nPgogICAgPGRlZXMtaGVhZGluZyBsZXZlbD0iOCI+VGhpcyBpcyBhbiBoci1zbWFsbCBoZWFkaW5nIChsZXZlbD0iOCIpPC9kZWVzLWhlYWRpbmc+CiAgYH12YXIgJHdhPWcoKCk9PntwZSgpO2koVHdhLCJkZW1vRnVuYyIpfSk7dmFyIER3YSxnbHQsQmVzLEx3YT1nKCgpPT57cGUoKTskd2EoKTtFcigpO2h0KCk7RHdhPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxnbHQ9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LEJlcz0oKCk9PntsZXQgcz1bbmUoImRlZXMtaGVhZGluZyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdO3ZhciBwPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzSGVhZGluZyIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBkPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6U3RyaW5nLHJlZmxlY3Q6ITB9KV0sRHdhKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibGV2ZWwiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkodT0+ImxldmVsImluIHUsImhhcyIpLGdldDppKHU9PnUubGV2ZWwsImdldCIpLHNldDppKCh1LGMpPT57dS5sZXZlbD1jfSwic2V0Iil9LG1ldGFkYXRhOmR9LG8sbCksRHdhKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOmR9LG51bGwsdCkscD1hPWUudmFsdWUsZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpkfSl9c3RhdGljIGRlbW89VHdhO3N0YXRpYyBkZW1vR3JvdXBzPVsiTGF5b3V0Il07I2U9Z2x0KHRoaXMsbywiMSIpO2dldCBsZXZlbCgpe3JldHVybiB0aGlzLiNlfXNldCBsZXZlbChkKXt0aGlzLiNlPWR9c3RhdGljIHN0eWxlcz1bcWUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgLyogSGVhZGluZyBzdHlsZXMuCiAgICAgICAqIENvbG9yIGhpZXJhcmNoeTogaDEtaDIgc3RheSBwcm9taW5lbnQgd2l0aCB0ZXh0LXByaW1hcnk7IGgzLWg2IHN0ZXAKICAgICAgICogZG93biB0byB0ZXh0LXNlY29uZGFyeSBzbyB0aGV5IHJlYWQgYXMgc3ViaGVhZGluZ3MgaW5zdGVhZCBvZgogICAgICAgKiBtaW5pLWgxcy4gS2VlcHMgdGhlIHZpc3VhbCBsb3VkbmVzcyBvdXQgb2Ygc21hbGxlciBoZWFkaW5ncy4gKi8KICAgICAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiB7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgfQogICAgICBoMSwgaDIgewogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIH0KICAgICAgaDMsIGg0LCBoNSwgaDYgewogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTsKICAgICAgfQoKICAgICAgLyogUGVyLWxldmVsIHR5cG9ncmFwaHkgKyBzcGFjaW5nLgogICAgICAgKiBNYXJnaW4gc2NhbGVzIHdpdGggaW1wb3J0YW5jZTogaDEgZ2V0cyB0aGUgbW9zdCBicmVhdGhpbmcgcm9vbSwKICAgICAgICogaDYgdGhlIGxlYXN0LiBUb3AgbWFyZ2luID4gYm90dG9tIG1hcmdpbiBzbyBoZWFkaW5ncyBncm91cCB3aXRoCiAgICAgICAqIHRoZSBjb250ZW50IHRoYXQgZm9sbG93cyB0aGVtLiAqLwogICAgICBoMSB7CiAgICAgICAgLyogaDEgdXNlcyB3ZWlnaHQgNTAwLCBub3QgNjAwOiB0aGUgQ2FsIFNhbnMgZGlzcGxheSBmb250IGlzCiAgICAgICAgICogYWxyZWFkeSBzdHlsaXplZCBlbm91Z2ggdGhhdCBib2xkICsgbWF4IGNvbnRyYXN0ICsgMzJweCBzdGFja3MKICAgICAgICAgKiB0b28gbXVjaCBlbXBoYXNpcy4gNTAwIGtlZXBzIHRoZSB0eXBvZ3JhcGhpYyBpbXBhY3Qgd2l0aG91dAogICAgICAgICAqIHNob3V0aW5nLiAqLwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgZm9udC1zaXplOiAzMnB4OwogICAgICAgIGZvbnQtZmFtaWx5OiAke0o5YX07CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDI1ZW07CiAgICAgICAgbWFyZ2luOiB2YXIoLS1kZWVzLXNwYWNpbmctMnhsKSAwIHZhcigtLWRlZXMtc3BhY2luZy1sZyk7CiAgICAgIH0KICAgICAgaDIgewogICAgICAgIGZvbnQtc2l6ZTogMjhweDsKICAgICAgICBtYXJnaW46IHZhcigtLWRlZXMtc3BhY2luZy14bCkgMCB2YXIoLS1kZWVzLXNwYWNpbmctbWQpOwogICAgICB9CiAgICAgIGgzIHsKICAgICAgICBmb250LXNpemU6IDI0cHg7CiAgICAgICAgbWFyZ2luOiB2YXIoLS1kZWVzLXNwYWNpbmcteGwpIDAgdmFyKC0tZGVlcy1zcGFjaW5nLW1kKTsKICAgICAgfQogICAgICBoNCB7CiAgICAgICAgZm9udC1zaXplOiAyMHB4OwogICAgICAgIG1hcmdpbjogdmFyKC0tZGVlcy1zcGFjaW5nLWxnKSAwIHZhcigtLWRlZXMtc3BhY2luZy1zbSk7CiAgICAgIH0KICAgICAgaDUgewogICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICBtYXJnaW46IHZhcigtLWRlZXMtc3BhY2luZy1tZCkgMCB2YXIoLS1kZWVzLXNwYWNpbmctc20pOwogICAgICB9CiAgICAgIGg2IHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbWFyZ2luOiB2YXIoLS1kZWVzLXNwYWNpbmctbWQpIDAgdmFyKC0tZGVlcy1zcGFjaW5nLXhzKTsKICAgICAgfQoKICAgICAgLyogSG9yaXpvbnRhbCBydWxlIHN0eWxlIGhlYWRpbmcgKi8KICAgICAgLmhlYWRpbmctaHIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgbWFyZ2luOiB2YXIoLS1kZWVzLXNwYWNpbmctbGcpIDA7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgIH0KICAgICAgLyogRmFkZSBsaW5lcyB0b3dhcmQgYW5kIGF3YXkgZnJvbSB0ZXh0IGZvciBociBzdHlsZSAqLwogICAgICAuaGVhZGluZy1ocjo6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICBmbGV4OiAxOwogICAgICAgIGhlaWdodDogMXB4OwogICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgdHJhbnNwYXJlbnQsIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLXN0cm9uZykpOwogICAgICAgIG1hcmdpbjogMCB2YXIoLS1kZWVzLXNwYWNpbmctc20pOwogICAgICB9CiAgICAgIC5oZWFkaW5nLWhyOjphZnRlciB7CiAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgZmxleDogMTsKICAgICAgICBoZWlnaHQ6IDFweDsKICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLXN0cm9uZyksIHRyYW5zcGFyZW50KTsKICAgICAgICBtYXJnaW46IDAgdmFyKC0tZGVlcy1zcGFjaW5nLXNtKTsKICAgICAgfQogICAgICAvKiBTbWFsbCBociB2YXJpYW50IHdpdGggcmVkdWNlZCBtYXJnaW5zICovCiAgICAgIC5oZWFkaW5nLWhyLmhlYWRpbmctaHItc21hbGwgewogICAgICAgIG1hcmdpbjogdmFyKC0tZGVlcy1zcGFjaW5nLXNtKSAwOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgfQogICAgICAuaGVhZGluZy1oci5oZWFkaW5nLWhyLXNtYWxsOjpiZWZvcmUsCiAgICAgIC5oZWFkaW5nLWhyLmhlYWRpbmctaHItc21hbGw6OmFmdGVyIHsKICAgICAgICBtYXJnaW46IDAgdmFyKC0tZGVlcy1zcGFjaW5nLXNtKTsKICAgICAgfQogICAgYF07cmVuZGVyKCl7c3dpdGNoKHRoaXMubGV2ZWwpe2Nhc2UiMSI6cmV0dXJuIHdgPGgxPjxzbG90Pjwvc2xvdD48L2gxPmA7Y2FzZSIyIjpyZXR1cm4gd2A8aDI+PHNsb3Q+PC9zbG90PjwvaDI+YDtjYXNlIjMiOnJldHVybiB3YDxoMz48c2xvdD48L3Nsb3Q+PC9oMz5gO2Nhc2UiNCI6cmV0dXJuIHdgPGg0PjxzbG90Pjwvc2xvdD48L2g0PmA7Y2FzZSI1IjpyZXR1cm4gd2A8aDU+PHNsb3Q+PC9zbG90PjwvaDU+YDtjYXNlIjYiOnJldHVybiB3YDxoNj48c2xvdD48L3Nsb3Q+PC9oNj5gO2Nhc2UiNyI6Y2FzZSJociI6cmV0dXJuIHdgPGRpdiBjbGFzcz0iaGVhZGluZy1ociI+PHNsb3Q+PC9zbG90PjwvZGl2PmA7Y2FzZSI4IjpjYXNlImhyLXNtYWxsIjpyZXR1cm4gd2A8ZGl2IGNsYXNzPSJoZWFkaW5nLWhyIGhlYWRpbmctaHItc21hbGwiPjxzbG90Pjwvc2xvdD48L2Rpdj5gO2RlZmF1bHQ6cmV0dXJuIHdgPGgxPjxzbG90Pjwvc2xvdD48L2gxPmB9fWNvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSxnbHQodGhpcyxsKX1zdGF0aWN7Z2x0KGEsdCl9fTtyZXR1cm4gcD1hfSkoKX0pO3ZhciBFd2E9ZygoKT0+e0x3YSgpfSk7dmFyIFB3YT1nKCgpPT57YngoKX0pO3ZhciBJd2EsQXdhPWcoKCk9PntwZSgpO0l3YT1pKCgpPT53YAogIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogMTZweDsiPgogICAgPCEtLSBTbWFsbCBzZXQgb2YgcGFnZXMgLS0+CiAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDRweDsiPgogICAgICA8c3Bhbj41IHBhZ2VzLCBzdGFydGluZyBhdCAxOjwvc3Bhbj4KICAgICAgPGRlZXMtcGFnaW5hdGlvbgogICAgICAgIC50b3RhbD0kezV9CiAgICAgICAgLnBhZ2U9JHsxfQogICAgICAgIEBwYWdlLWNoYW5nZT0ke3M9PmNvbnNvbGUubG9nKCJQYWdlIGNoYW5nZWQgdG8iLHMuZGV0YWlsLnBhZ2UpfQogICAgICA+PC9kZWVzLXBhZ2luYXRpb24+CiAgICA8L2Rpdj4KCiAgICA8IS0tIExhcmdlciBzZXQgb2YgcGFnZXMgLS0+CiAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDRweDsiPgogICAgICA8c3Bhbj4xNSBwYWdlcywgc3RhcnRpbmcgYXQgODo8L3NwYW4+CiAgICAgIDxkZWVzLXBhZ2luYXRpb24KICAgICAgICAudG90YWw9JHsxNX0KICAgICAgICAucGFnZT0kezh9CiAgICAgICAgQHBhZ2UtY2hhbmdlPSR7cz0+Y29uc29sZS5sb2coIlBhZ2UgY2hhbmdlZCB0byIscy5kZXRhaWwucGFnZSl9CiAgICAgID48L2RlZXMtcGFnaW5hdGlvbj4KICAgIDwvZGl2PgogIDwvZGl2PgpgLCJkZW1vRnVuYyIpfSk7dmFyIGJsdCxhSixIZXMsTndhPWcoKCk9PntwZSgpO0F3YSgpO2h0KCk7Ymx0PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxhSj1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sSGVzPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1wYWdpbmF0aW9uIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W107dmFyIGM9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNQYWdpbmF0aW9uIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGI9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpOdW1iZXIscmVmbGVjdDohMH0pXSxwPVtMKHt0eXBlOk51bWJlcixyZWZsZWN0OiEwfSldLGJsdCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InBhZ2UiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkodj0+InBhZ2UiaW4gdiwiaGFzIiksZ2V0Omkodj0+di5wYWdlLCJnZXQiKSxzZXQ6aSgodix4KT0+e3YucGFnZT14fSwic2V0Iil9LG1ldGFkYXRhOmJ9LG8sbCksYmx0KHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidG90YWwiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkodj0+InRvdGFsImluIHYsImhhcyIpLGdldDppKHY9PnYudG90YWwsImdldCIpLHNldDppKCh2LHgpPT57di50b3RhbD14fSwic2V0Iil9LG1ldGFkYXRhOmJ9LGQsdSksYmx0KG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOmJ9LG51bGwsdCksYz1hPWUudmFsdWUsYiYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSl9c3RhdGljIGRlbW89SXdhO3N0YXRpYyBkZW1vR3JvdXBzPVsiTGF5b3V0Il07I2U9YUoodGhpcyxvLDEpO2dldCBwYWdlKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHBhZ2UoYil7dGhpcy4jZT1ifSN0PShhSih0aGlzLGwpLGFKKHRoaXMsZCwxKSk7Z2V0IHRvdGFsKCl7cmV0dXJuIHRoaXMuI3R9c2V0IHRvdGFsKGIpe3RoaXMuI3Q9Yn1zdGF0aWMgc3R5bGVzPVtxZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgLyogVE9ETzogTWlncmF0ZSBoYXJkY29kZWQgdmFsdWVzIHRvIC0tZGVlcy0qIENTUyB2YXJpYWJsZXMgKi8KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIH0KICAgICAgYnV0dG9uIHsKICAgICAgICBiYWNrZ3JvdW5kOiBub25lOwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBtYXJnaW46IDAgMnB4OwogICAgICAgIHBhZGRpbmc6IDZweCAxMHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMzMzIiwiI2NjYyIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzOwogICAgICB9CiAgICAgIGJ1dHRvbjpob3Zlcjpub3QoOmRpc2FibGVkKSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNlZWUiLCIjNDQ0Iil9OwogICAgICB9CiAgICAgIGJ1dHRvbjpkaXNhYmxlZCB7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2FhYSIsIiM2NjYiKX07CiAgICAgIH0KICAgICAgYnV0dG9uLmN1cnJlbnQgewogICAgICAgIGJhY2tncm91bmQ6ICMwMDUwYjk7CiAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICB9CiAgICAgIHNwYW4uZWxsaXBzaXMgewogICAgICAgIG1hcmdpbjogMCA0cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMzMzIiwiI2NjYyIpfTsKICAgICAgfQogICAgYF07Z2V0IHBhZ2VzKCl7bGV0IGI9W10sdj10aGlzLnRvdGFsLHg9dGhpcy5wYWdlO2lmKHY8PTcpZm9yKGxldCBtPTE7bTw9djttKyspYi5wdXNoKG0pO2Vsc2V7Yi5wdXNoKDEpLHg+NCYmYi5wdXNoKCIuLi4iKTtsZXQgbT1NYXRoLm1heCgyLHgtMiksZj1NYXRoLm1pbih2LTEseCsyKTtmb3IobGV0IHk9bTt5PD1mO3krKyliLnB1c2goeSk7eDx2LTMmJmIucHVzaCgiLi4uIiksYi5wdXNoKHYpfXJldHVybiBifXJlbmRlcigpe3JldHVybiB3YAogICAgICA8YnV0dG9uCiAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMuY2hhbmdlUGFnZSh0aGlzLnBhZ2UtMSl9CiAgICAgICAgP2Rpc2FibGVkPSR7dGhpcy5wYWdlPD0xfQogICAgICAgIGFyaWEtbGFiZWw9IlByZXZpb3VzIHBhZ2UiCiAgICAgID4KICAgICAgICDigLkKICAgICAgPC9idXR0b24+CiAgICAgICR7dGhpcy5wYWdlcy5tYXAoYj0+Yj09PSIuLi4iP3dgPHNwYW4gY2xhc3M9ImVsbGlwc2lzIj7igKY8L3NwYW4+YDp3YAogICAgICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgICAgIGNsYXNzPSIke2I9PT10aGlzLnBhZ2U/ImN1cnJlbnQiOiIifSIKICAgICAgICAgICAgICAgIEBjbGljaz0keygpPT50aGlzLmNoYW5nZVBhZ2UoYil9CiAgICAgICAgICAgICAgICA/ZGlzYWJsZWQ9JHtiPT09dGhpcy5wYWdlfQogICAgICAgICAgICAgICAgYXJpYS1sYWJlbD0iUGFnZSAke2J9IgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICR7Yn0KICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgYCl9CiAgICAgIDxidXR0b24KICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy5jaGFuZ2VQYWdlKHRoaXMucGFnZSsxKX0KICAgICAgICA/ZGlzYWJsZWQ9JHt0aGlzLnBhZ2U+PXRoaXMudG90YWx9CiAgICAgICAgYXJpYS1sYWJlbD0iTmV4dCBwYWdlIgogICAgICA+CiAgICAgICAg4oC6CiAgICAgIDwvYnV0dG9uPgogICAgYH1jaGFuZ2VQYWdlKGIpe2I8MXx8Yj50aGlzLnRvdGFsfHxiPT09dGhpcy5wYWdlfHwodGhpcy5wYWdlPWIsdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgicGFnZS1jaGFuZ2UiLHtkZXRhaWw6e3BhZ2U6dGhpcy5wYWdlfSxidWJibGVzOiEwfSkpKX1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksYUoodGhpcyx1KX1zdGF0aWN7YUooYSx0KX19O3JldHVybiBjPWF9KSgpfSk7dmFyIFJ3YT1nKCgpPT57TndhKCl9KTt2YXIgT3dhPWcoKCk9Pnt4bygpfSk7dmFyIEZ3YSxCd2E9ZygoKT0+e3BlKCk7dmx0KCk7RndhPWkoKCk9PntsZXQgcz1be2tleToiZW1haWwiLGxhYmVsOiJBY2NvdW50IGVtYWlsIix2YWx1ZToiYWRtaW5AZXhhbXBsZS5jb20ifSx7a2V5OiJzdGF0dXMiLGxhYmVsOiJTdGF0dXMiLHZhbHVlOiJlbmFibGVkIn0se2tleToibW9kZSIsbGFiZWw6Ik1vZGUiLHZhbHVlOiJwcm9kdWN0aW9uIn0se2tleToiYXV0b1JlbmV3IixsYWJlbDoiQXV0by1yZW5ldyIsdmFsdWU6Im9uIn0se2tleToidGhyZXNob2xkIixsYWJlbDoiUmVuZXdhbCB0aHJlc2hvbGQiLHZhbHVlOiIzMCBkYXlzIn1dLGU9W3tuYW1lOiJFZGl0IixhY3Rpb246aSgoKT0+Y29uc29sZS5sb2coIkVkaXQgY2xpY2tlZCIpLCJhY3Rpb24iKX1dLHQ9W3tuYW1lOiJDb25maWd1cmUiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiQ29uZmlndXJlIGNsaWNrZWQiKSwiYWN0aW9uIil9XSxhPVt7bmFtZToiUmVzZXQiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiUmVzZXQgY2xpY2tlZCIpLCJhY3Rpb24iKX0se25hbWU6IkVkaXQiLGFjdGlvbjppKCgpPT5jb25zb2xlLmxvZygiRWRpdCBjbGlja2VkIiksImFjdGlvbiIpfV07cmV0dXJuIHdgCiAgICA8ZGVlcy1kZW1vd3JhcHBlcj4KICAgICAgPHN0eWxlPgogICAgICAgICR7SmAKICAgICAgICAgIC5kZW1vQm94IHsKICAgICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk1JSkiLCJoc2woMCAwJSA5JSkiKX07CiAgICAgICAgICAgIHBhZGRpbmc6IDQwcHg7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIGdhcDogMjRweDsKICAgICAgICAgICAgbWF4LXdpZHRoOiA2MDBweDsKICAgICAgICAgIH0KICAgICAgICBgfQogICAgICA8L3N0eWxlPgogICAgICA8ZGl2IGNsYXNzPSJkZW1vQm94Ij4KICAgICAgICA8ZGVlcy1zZXR0aW5ncwogICAgICAgICAgLmhlYWRpbmc9JHsiQUNNRSBTZXR0aW5ncyJ9CiAgICAgICAgICAuc2V0dGluZ3NGaWVsZHM9JHtzfQogICAgICAgICAgLmFjdGlvbnM9JHtlfQogICAgICAgID48L2RlZXMtc2V0dGluZ3M+CgogICAgICAgIDxkZWVzLXNldHRpbmdzCiAgICAgICAgICAuaGVhZGluZz0keyJBQ01FIFNldHRpbmdzIn0KICAgICAgICAgIC5kZXNjcmlwdGlvbj0keyJObyBBQ01FIGNvbmZpZ3VyYXRpb24geWV0LiBDbGljayBDb25maWd1cmUgdG8gc2V0IHVwIGF1dG9tYXRlZCBUTFMgY2VydGlmaWNhdGUgaXNzdWFuY2UuIn0KICAgICAgICAgIC5hY3Rpb25zPSR7dH0KICAgICAgICA+PC9kZWVzLXNldHRpbmdzPgoKICAgICAgICA8ZGVlcy1zZXR0aW5ncwogICAgICAgICAgLmhlYWRpbmc9JHsiU2VydmVyIENvbmZpZyJ9CiAgICAgICAgICAuc2V0dGluZ3NGaWVsZHM9JHtbe2tleToiaG9zdCIsbGFiZWw6Ikhvc3RuYW1lIix2YWx1ZToicHJveHkuZXhhbXBsZS5jb20ifSx7a2V5OiJwb3J0IixsYWJlbDoiUG9ydCIsdmFsdWU6IjQ0MyJ9XX0KICAgICAgICAgIC5hY3Rpb25zPSR7YX0KICAgICAgICA+PC9kZWVzLXNldHRpbmdzPgogICAgICA8L2Rpdj4KICAgIDwvZGVlcy1kZW1vd3JhcHBlcj4KICBgfSwiZGVtb0Z1bmMiKX0pO3ZhciBzSixVdSxxZXMsdmx0PWcoKCk9PntwZSgpO0J3YSgpO0VyKCk7aHQoKTttcigpO3NKPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxVdT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0scWVzPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1zZXR0aW5ncyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdO3ZhciB5PWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzU2V0dGluZ3MiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgTT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZ30pXSxwPVtMKHt0eXBlOlN0cmluZ30pXSxjPVtMKHthdHRyaWJ1dGU6ITF9KV0seD1bTCh7YXR0cmlidXRlOiExfSldLHNKKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaGVhZGluZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4iaGVhZGluZyJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LmhlYWRpbmcsImdldCIpLHNldDppKCh6LE4pPT57ei5oZWFkaW5nPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sbyxsKSxzSih0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImRlc2NyaXB0aW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJkZXNjcmlwdGlvbiJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LmRlc2NyaXB0aW9uLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3ouZGVzY3JpcHRpb249Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxkLHUpLHNKKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2V0dGluZ3NGaWVsZHMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoej0+InNldHRpbmdzRmllbGRzImluIHosImhhcyIpLGdldDppKHo9Pnouc2V0dGluZ3NGaWVsZHMsImdldCIpLHNldDppKCh6LE4pPT57ei5zZXR0aW5nc0ZpZWxkcz1OfSwic2V0Iil9LG1ldGFkYXRhOk19LGIsdiksc0oodGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJhY3Rpb25zIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJhY3Rpb25zImluIHosImhhcyIpLGdldDppKHo9PnouYWN0aW9ucywiZ2V0Iiksc2V0OmkoKHosTik9Pnt6LmFjdGlvbnM9Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxtLGYpLHNKKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOk19LG51bGwsdCkseT1hPWUudmFsdWUsTSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpNfSl9c3RhdGljIGRlbW89RndhO3N0YXRpYyBkZW1vR3JvdXBzPVsiTGF5b3V0Il07I2U9VXUodGhpcyxvLCIiKTtnZXQgaGVhZGluZygpe3JldHVybiB0aGlzLiNlfXNldCBoZWFkaW5nKE0pe3RoaXMuI2U9TX0jdD0oVXUodGhpcyxsKSxVdSh0aGlzLGQsIiIpKTtnZXQgZGVzY3JpcHRpb24oKXtyZXR1cm4gdGhpcy4jdH1zZXQgZGVzY3JpcHRpb24oTSl7dGhpcy4jdD1NfSNhPShVdSh0aGlzLHUpLFV1KHRoaXMsYixbXSkpO2dldCBzZXR0aW5nc0ZpZWxkcygpe3JldHVybiB0aGlzLiNhfXNldCBzZXR0aW5nc0ZpZWxkcyhNKXt0aGlzLiNhPU19I3M9KFV1KHRoaXMsdiksVXUodGhpcyxtLFtdKSk7Z2V0IGFjdGlvbnMoKXtyZXR1cm4gdGhpcy4jc31zZXQgYWN0aW9ucyhNKXt0aGlzLiNzPU19c3RhdGljIHN0eWxlcz1bcWUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBmb250LWZhbWlseTogJHtCYX07CiAgICAgIH0KCiAgICAgIC5zZXR0aW5nc0dyaWQgewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgxODBweCwgMWZyKSk7CiAgICAgICAgZ2FwOiAxMnB4IDI0cHg7CiAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgfQoKICAgICAgLnNldHRpbmdzRmllbGQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDJweDsKICAgICAgfQoKICAgICAgLmZpZWxkTGFiZWwgewogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAzZW07CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgIH0KCiAgICAgIC5maWVsZFZhbHVlIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgfQoKICAgICAgLnNldHRpbmdzRGVzY3JpcHRpb24gewogICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgIH0KCiAgICAgIC5ib3R0b21CdXR0b25zIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMDsKICAgICAgICBoZWlnaHQ6IDM2cHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLmJvdHRvbUJ1dHRvbnMgLmJvdHRvbUJ1dHRvbiB7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLXN1YnRsZSk7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5ib3R0b21CdXR0b25zIC5ib3R0b21CdXR0b246Zmlyc3QtY2hpbGQgewogICAgICAgIGJvcmRlci1sZWZ0OiBub25lOwogICAgICB9CgogICAgICAuYm90dG9tQnV0dG9ucyAuYm90dG9tQnV0dG9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWhvdmVyKTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICB9CgogICAgICAuYm90dG9tQnV0dG9ucyAuYm90dG9tQnV0dG9uOmFjdGl2ZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDkyJSkiLCJoc2woMCAwJSAxMyUpIil9OwogICAgICB9CgogICAgICAuYm90dG9tQnV0dG9ucyAuYm90dG9tQnV0dG9uLnByaW1hcnkgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNy4yIDkxLjIlIDU5LjglKSIsImhzbCgyMTMuMSA5My45JSA2Ny44JSkiKX07CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgfQoKICAgICAgLmJvdHRvbUJ1dHRvbnMgLmJvdHRvbUJ1dHRvbi5wcmltYXJ5OmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxNy4yIDkxLjIlIDU5LjglIC8gMC4wOCkiLCJoc2woMjEzLjEgOTMuOSUgNjcuOCUgLyAwLjA4KSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTcuMiA5MS4yJSA1MCUpIiwiaHNsKDIxMy4xIDkzLjklIDc1JSkiKX07CiAgICAgIH0KCiAgICAgIC5ib3R0b21CdXR0b25zIC5ib3R0b21CdXR0b24ucHJpbWFyeTphY3RpdmUgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjE3LjIgOTEuMiUgNTkuOCUgLyAwLjE1KSIsImhzbCgyMTMuMSA5My45JSA2Ny44JSAvIDAuMTUpIil9OwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtsZXQgTT10aGlzLnNldHRpbmdzRmllbGRzLmxlbmd0aD4wLHo9dGhpcy5hY3Rpb25zLmxlbmd0aD4wO3JldHVybiB3YAogICAgICA8ZGVlcy10aWxlIC5oZWFkaW5nPSR7dGhpcy5oZWFkaW5nfT4KICAgICAgICAke00/d2AKICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXR0aW5nc0dyaWQiPgogICAgICAgICAgICAgICAgJHt0aGlzLnNldHRpbmdzRmllbGRzLm1hcChOPT53YAogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNldHRpbmdzRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZpZWxkTGFiZWwiPiR7Ti5sYWJlbH08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmllbGRWYWx1ZSI+JHtOLnZhbHVlfTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgYCl9CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGA6d2AKICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXR0aW5nc0Rlc2NyaXB0aW9uIj4ke3RoaXMuZGVzY3JpcHRpb259PC9kaXY+CiAgICAgICAgICAgIGB9CiAgICAgICAgJHt6P3dgCiAgICAgICAgICAgICAgPGRpdiBzbG90PSJmb290ZXIiIGNsYXNzPSJib3R0b21CdXR0b25zIj4KICAgICAgICAgICAgICAgICR7dGhpcy5hY3Rpb25zLm1hcCgoTixDKT0+d2AKICAgICAgICAgICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iYm90dG9tQnV0dG9uICR7Qz09PXRoaXMuYWN0aW9ucy5sZW5ndGgtMT8icHJpbWFyeSI6IiJ9IgogICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9Pk4uYWN0aW9uKCl9CiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgJHtOLm5hbWV9CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIGApfQogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICBgOiIifQogICAgICA8L2RlZXMtdGlsZT4KICAgIGB9Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLFV1KHRoaXMsZil9c3RhdGlje1V1KGEsdCl9fTtyZXR1cm4geT1hfSkoKX0pO3ZhciBId2E9ZygoKT0+e3ZsdCgpfSk7dmFyIHF3YSxpSixqd2EsVndhLFV3YT1nKCgpPT57cGUoKTtvMmUoKTtxd2E9aShhc3luYyhzLGUpPT5uZXcgUHJvbWlzZSh0PT57bGV0IGE9ITEscj1pKGw9PnthfHwoYT0hMCxlJiZlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixuKSx0KGwpKX0sImZpbmlzaCIpLG49aSgoKT0+e3dpbmRvdy5jbGVhclRpbWVvdXQobykscighMSl9LCJoYW5kbGVBYm9ydCIpLG89d2luZG93LnNldFRpbWVvdXQoKCk9PntyKCEwKX0scyk7ZSYmZS5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsbix7b25jZTohMH0pfSksIndhaXRGb3JQcm9ncmVzc1RpY2siKSxpSj1pKChzPSJDb250aW51ZSIpPT5be25hbWU6cyxhY3Rpb246aShhc3luYyBlPT5lPy5nb05leHQoKSwiYWN0aW9uIil9XSwiY3JlYXRlQ29udGludWVNZW51T3B0aW9ucyIpLGp3YT1pKCgpPT5be3RpdGxlOiJBY2NvdW50IFNldHVwIixjb250ZW50OndgCiAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgPGRlZXMtaW5wdXQtdGV4dCBrZXk9ImVtYWlsIiBsYWJlbD0iV29yayBFbWFpbCIgcmVxdWlyZWQ+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgPGRlZXMtaW5wdXQtdGV4dCBrZXk9InBhc3N3b3JkIiBsYWJlbD0iQ3JlYXRlIFBhc3N3b3JkIiB0eXBlPSJwYXNzd29yZCIgcmVxdWlyZWQ+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgIDwvZGVlcy1mb3JtPgogICAgYCxtZW51T3B0aW9uczppSigpfSx7dGl0bGU6IlByb2ZpbGUgRGV0YWlscyIsY29udGVudDp3YAogICAgICA8ZGVlcy1mb3JtPgogICAgICAgIDxkZWVzLWlucHV0LXRleHQga2V5PSJmaXJzdE5hbWUiIGxhYmVsPSJGaXJzdCBOYW1lIiByZXF1aXJlZD48L2RlZXMtaW5wdXQtdGV4dD4KICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0IGtleT0ibGFzdE5hbWUiIGxhYmVsPSJMYXN0IE5hbWUiIHJlcXVpcmVkPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICA8L2RlZXMtZm9ybT4KICAgIGAsbWVudU9wdGlvbnM6aUooKX0se3RpdGxlOiJDb250YWN0IEluZm9ybWF0aW9uIixjb250ZW50OndgCiAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgPGRlZXMtaW5wdXQtcGhvbmUga2V5PSJwaG9uZSIgbGFiZWw9Ik1vYmlsZSBOdW1iZXIiIHJlcXVpcmVkPjwvZGVlcy1pbnB1dC1waG9uZT4KICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0IGtleT0iY29tcGFueSIgbGFiZWw9IkNvbXBhbnkiPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICA8L2RlZXMtZm9ybT4KICAgIGAsbWVudU9wdGlvbnM6aUooKX0se3RpdGxlOiJQcm92aXNpb24gV29ya3NwYWNlIixjb250ZW50OndgCiAgICAgIDxkZWVzLXBhbmVsPgogICAgICAgIDxwPgogICAgICAgICAgV2UgYXJlIGNyZWF0aW5nIHlvdXIgc3RhcnRlciB3b3Jrc3BhY2UsIGFwcGx5aW5nIHlvdXIgb25ib2FyZGluZyBjaG9pY2VzLAogICAgICAgICAgYW5kIHByZXBhcmluZyBhIGxpdmUgcHJldmlldy4gVGhpcyBzdGVwIG1vdmVzIGZvcndhcmQgYXV0b21hdGljYWxseSB3aGVuCiAgICAgICAgICB0aGUgZW52aXJvbm1lbnQgaXMgcmVhZHkuCiAgICAgICAgPC9wPgogICAgICA8L2RlZXMtcGFuZWw+CiAgICBgLHByb2dyZXNzU3RlcDp7bGFiZWw6IldvcmtzcGFjZSBzZXR1cCIscGVyY2VudGFnZTo4LGluZGV0ZXJtaW5hdGU6ITAsc3RhdHVzUm93czo0LHN0YXR1c1RleHQ6IkFsbG9jYXRpbmcgYSBjbGVhbiB3b3Jrc3BhY2UuLi4iLHRlcm1pbmFsTGluZXM6WyJBbGxvY2F0aW5nIGEgY2xlYW4gd29ya3NwYWNlIl19LHZhbGlkYXRpb25GdW5jOmkoYXN5bmMocyxlLHQpPT57bGV0IGE9W3tsaW5lOiJBbGxvY2F0aW5nIGEgY2xlYW4gd29ya3NwYWNlIixwZXJjZW50YWdlOjgsZGVsYXk6NTAwfSx7bGluZToiU3luY2luZyBhY2NvdW50IHByZWZlcmVuY2VzIixwZXJjZW50YWdlOjI0LGRlbGF5OjY1MH0se2xpbmU6Ikluc3RhbGxpbmcgc2VsZWN0ZWQgaW50ZWdyYXRpb25zIixwZXJjZW50YWdlOjQ3LGRlbGF5OjcwMH0se2xpbmU6IkdlbmVyYXRpbmcgc3RhcnRlciBwcm9qZWN0IGZpbGVzIixwZXJjZW50YWdlOjcxLGRlbGF5OjY1MH0se2xpbmU6IkJvb3RpbmcgdGhlIGxpdmUgcHJldmlldyBlbnZpcm9ubWVudCIscGVyY2VudGFnZTo5MixkZWxheTo3MDB9XTtzLnJlc2V0UHJvZ3Jlc3NTdGVwKCk7Zm9yKGxldFtyLG5db2YgYS5lbnRyaWVzKCkpaWYodD8uYWJvcnRlZHx8KHI9PT0wP3MudXBkYXRlUHJvZ3Jlc3NTdGVwKHtwZXJjZW50YWdlOm4ucGVyY2VudGFnZSxpbmRldGVybWluYXRlOiEwLHN0YXR1c1RleHQ6YCR7bi5saW5lfS4uLmAsdGVybWluYWxMaW5lczpbbi5saW5lXX0pOihzLmFwcGVuZFByb2dyZXNzU3RlcExpbmUobi5saW5lKSxzLnVwZGF0ZVByb2dyZXNzU3RlcCh7cGVyY2VudGFnZTpuLnBlcmNlbnRhZ2UsaW5kZXRlcm1pbmF0ZTohMCxzdGF0dXNUZXh0OmAke24ubGluZX0uLi5gfSkpLCFhd2FpdCBxd2Eobi5kZWxheSx0KSkpcmV0dXJuO3MuYXBwZW5kUHJvZ3Jlc3NTdGVwTGluZSgiV29ya3NwYWNlIHJlYWR5Iikscy51cGRhdGVQcm9ncmVzc1N0ZXAoe3BlcmNlbnRhZ2U6MTAwLGluZGV0ZXJtaW5hdGU6ITEsc3RhdHVzVGV4dDoiV29ya3NwYWNlIHJlYWR5LiJ9KSxhd2FpdCBxd2EoMzUwLHQpfSwidmFsaWRhdGlvbkZ1bmMiKX0se3RpdGxlOiJUZWFtIFNpemUiLGNvbnRlbnQ6d2AKICAgICAgPGRlZXMtZm9ybT4KICAgICAgICA8ZGVlcy1pbnB1dC1kcm9wZG93bgogICAgICAgICAga2V5PSJ0ZWFtU2l6ZSIKICAgICAgICAgIGxhYmVsPSJIb3cgYmlnIGlzIHlvdXIgdGVhbT8iCiAgICAgICAgICAub3B0aW9ucz0ke1t7bGFiZWw6IjEtNSIsdmFsdWU6IjEtNSJ9LHtsYWJlbDoiNi0yMCIsdmFsdWU6IjYtMjAifSx7bGFiZWw6IjIxLTUwIix2YWx1ZToiMjEtNTAifSx7bGFiZWw6IjUxKyIsdmFsdWU6IjUxKyJ9XX0KICAgICAgICAgIHJlcXVpcmVkCiAgICAgICAgPjwvZGVlcy1pbnB1dC1kcm9wZG93bj4KICAgICAgPC9kZWVzLWZvcm0+CiAgICBgLG1lbnVPcHRpb25zOmlKKCl9LHt0aXRsZToiR29hbHMiLGNvbnRlbnQ6d2AKICAgICAgPGRlZXMtZm9ybT4KICAgICAgICA8ZGVlcy1pbnB1dC1tdWx0aXRvZ2dsZQogICAgICAgICAga2V5PSJnb2FsIgogICAgICAgICAgbGFiZWw9Ik1haW4gb2JqZWN0aXZlIgogICAgICAgICAgLm9wdGlvbnM9JHtbe2xhYmVsOiJPbmJvYXJkaW5nIix2YWx1ZToib25ib2FyZGluZyJ9LHtsYWJlbDoiQW5hbHl0aWNzIix2YWx1ZToiYW5hbHl0aWNzIn0se2xhYmVsOiJBdXRvbWF0aW9uIix2YWx1ZToiYXV0b21hdGlvbiJ9XX0KICAgICAgICAgIHJlcXVpcmVkCiAgICAgICAgPjwvZGVlcy1pbnB1dC1tdWx0aXRvZ2dsZT4KICAgICAgPC9kZWVzLWZvcm0+CiAgICBgLG1lbnVPcHRpb25zOmlKKCl9LHt0aXRsZToiUmV2aWV3ICYgTGF1bmNoIixjb250ZW50OndgCiAgICAgIDxkZWVzLXBhbmVsPgogICAgICAgIDxwPgogICAgICAgICAgWW91ciB3b3Jrc3BhY2UgaXMgcmVhZHkuIFJldmlldyB0aGUgY29sbGVjdGVkIGRldGFpbHMgYW5kIGxhdW5jaCB3aGVuCiAgICAgICAgICB5b3UgYXJlIHJlYWR5IHRvIHN0YXJ0LgogICAgICAgIDwvcD4KICAgICAgPC9kZWVzLXBhbmVsPgogICAgYCxtZW51T3B0aW9uczpbe25hbWU6IkxhdW5jaCIsYWN0aW9uOmkoYXN5bmMgcz0+e3M/Lm92ZXJsYXkmJmF3YWl0IHMuZGVzdHJveSgpfSwiYWN0aW9uIil9XX1dLCJjcmVhdGVEZW1vU3RlcHMiKSxWd2E9aSgoKT0+d2AKICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IGluc2V0OiAwOyI+CiAgICA8ZGl2CiAgICAgIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTZweDsgbGVmdDogNTAlOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7IHotaW5kZXg6IDEwOyIKICAgID4KICAgICAgPGRlZXMtYnV0dG9uCiAgICAgICAgQGNsaWNrPSR7YXN5bmMoKT0+e2F3YWl0IHJKLmNyZWF0ZUFuZFNob3coe3N0ZXBzOmp3YSgpfSl9fQogICAgICA+T3BlbiBzdGVwcGVyIGFzIG92ZXJsYXk8L2RlZXMtYnV0dG9uPgogICAgPC9kaXY+CiAgICA8ZGVlcy1zdGVwcGVyIC5zdGVwcz0ke2p3YSgpfT48L2RlZXMtc3RlcHBlcj4KICA8L2Rpdj4KYCwic3RlcHBlckRlbW8iKX0pO3ZhciB5NCxlbCxySixvMmU9ZygoKT0+e3ZvKCk7cGUoKTtrdCgpO1V3YSgpO2h0KCk7RXIoKTtHbigpO3YyKCk7UHUoKTtkbHQoKTttcigpO3k0PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxlbD1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0scko9KCgpPT57bGV0IHM9W25lKCJkZWVzLXN0ZXBwZXIiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXSxPLCQ9W10sRT1bXTt2YXIgSD1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1N0ZXBwZXIiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgaz10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOkFycmF5fSldLHA9W0woe3R5cGU6T2JqZWN0fSldLGM9W0woe3R5cGU6Qm9vbGVhbixyZWZsZWN0OiEwfSldLHg9W0woe3R5cGU6Qm9vbGVhbixyZWZsZWN0OiEwfSldLHk9W0woe3R5cGU6TnVtYmVyLGF0dHJpYnV0ZTohMX0pXSxOPVtMKHt0eXBlOk9iamVjdCxhdHRyaWJ1dGU6ITF9KV0sTz1bTCh7dHlwZTpCb29sZWFuLGF0dHJpYnV0ZTohMX0pXSx5NCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InN0ZXBzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJzdGVwcyJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLnN0ZXBzLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1Muc3RlcHM9SX0sInNldCIpfSxtZXRhZGF0YTprfSxvLGwpLHk0KHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VsZWN0ZWRTdGVwIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJzZWxlY3RlZFN0ZXAiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5zZWxlY3RlZFN0ZXAsImdldCIpLHNldDppKChTLEkpPT57Uy5zZWxlY3RlZFN0ZXA9SX0sInNldCIpfSxtZXRhZGF0YTprfSxkLHUpLHk0KHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToib3ZlcmxheSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4ib3ZlcmxheSJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLm92ZXJsYXksImdldCIpLHNldDppKChTLEkpPT57Uy5vdmVybGF5PUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sYix2KSx5NCh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNhbmNlbGFibGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+ImNhbmNlbGFibGUiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5jYW5jZWxhYmxlLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MuY2FuY2VsYWJsZT1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LG0sZikseTQodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzdGVwcGVyWkluZGV4IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJzdGVwcGVyWkluZGV4ImluIFMsImhhcyIpLGdldDppKFM9PlMuc3RlcHBlclpJbmRleCwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLnN0ZXBwZXJaSW5kZXg9SX0sInNldCIpfSxtZXRhZGF0YTprfSxNLHopLHk0KHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYWN0aXZlRm9ybSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4iYWN0aXZlRm9ybSJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLmFjdGl2ZUZvcm0sImdldCIpLHNldDppKChTLEkpPT57Uy5hY3RpdmVGb3JtPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sQyxfKSx5NCh0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImFjdGl2ZUZvcm1WYWxpZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4iYWN0aXZlRm9ybVZhbGlkImluIFMsImhhcyIpLGdldDppKFM9PlMuYWN0aXZlRm9ybVZhbGlkLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MuYWN0aXZlRm9ybVZhbGlkPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sJCxFKSx5NChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTprfSxudWxsLHQpLEg9YT1lLnZhbHVlLGsmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6a30pfXN0YXRpYyBkZW1vPVZ3YTtzdGF0aWMgZGVtb0dyb3Vwcz1bIkxheW91dCIsIkZvcm0iXTtzdGF0aWMgYXN5bmMgY3JlYXRlQW5kU2hvdyhrKXtsZXQgUz1kb2N1bWVudC5ib2R5LEk9bmV3IEg7cmV0dXJuIEkuc3RlcHM9ay5zdGVwcyxJLm92ZXJsYXk9ITAsay5jYW5jZWxhYmxlIT09dm9pZCAwJiYoSS5jYW5jZWxhYmxlPWsuY2FuY2VsYWJsZSksSS53aW5kb3dMYXllcj1hd2FpdCBSby5jcmVhdGVBbmRTaG93KHtibHVyOiEwfSksUy5hcHBlbmQoSS53aW5kb3dMYXllciksUy5hcHBlbmQoSSksSS5zdGVwcGVyWkluZGV4PV9hLmdldE5leHRaSW5kZXgoKSxfYS5yZWdpc3RlcihJLEkuc3RlcHBlclpJbmRleCksSX0jZT1lbCh0aGlzLG8sW10pO2dldCBzdGVwcygpe3JldHVybiB0aGlzLiNlfXNldCBzdGVwcyhrKXt0aGlzLiNlPWt9I3Q9KGVsKHRoaXMsbCksZWwodGhpcyxkLHZvaWQgMCkpO2dldCBzZWxlY3RlZFN0ZXAoKXtyZXR1cm4gdGhpcy4jdH1zZXQgc2VsZWN0ZWRTdGVwKGspe3RoaXMuI3Q9a30jYT0oZWwodGhpcyx1KSxlbCh0aGlzLGIsITEpKTtnZXQgb3ZlcmxheSgpe3JldHVybiB0aGlzLiNhfXNldCBvdmVybGF5KGspe3RoaXMuI2E9a30jcz0oZWwodGhpcyx2KSxlbCh0aGlzLG0sITApKTtnZXQgY2FuY2VsYWJsZSgpe3JldHVybiB0aGlzLiNzfXNldCBjYW5jZWxhYmxlKGspe3RoaXMuI3M9a30jaT0oZWwodGhpcyxmKSxlbCh0aGlzLE0sMWUzKSk7Z2V0IHN0ZXBwZXJaSW5kZXgoKXtyZXR1cm4gdGhpcy4jaX1zZXQgc3RlcHBlclpJbmRleChrKXt0aGlzLiNpPWt9I3I9KGVsKHRoaXMseiksZWwodGhpcyxDLG51bGwpKTtnZXQgYWN0aXZlRm9ybSgpe3JldHVybiB0aGlzLiNyfXNldCBhY3RpdmVGb3JtKGspe3RoaXMuI3I9a30jbz0oZWwodGhpcyxfKSxlbCh0aGlzLCQsITApKTtnZXQgYWN0aXZlRm9ybVZhbGlkKCl7cmV0dXJuIHRoaXMuI299c2V0IGFjdGl2ZUZvcm1WYWxpZChrKXt0aGlzLiNvPWt9YWN0aXZlRm9ybVN1YnNjcmlwdGlvbj1lbCh0aGlzLEUpO3dpbmRvd0xheWVyO2NvbnN0cnVjdG9yKCl7c3VwZXIoKX1zdGF0aWMgc3R5bGVzPVtxZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgLyogVE9ETzogTWlncmF0ZSBoYXJkY29kZWQgdmFsdWVzIHRvIC0tZGVlcy0qIENTUyB2YXJpYWJsZXMgKi8KICAgICAgOmhvc3QgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgZm9udC1mYW1pbHk6ICR7QmF9OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIH0KCiAgICAgIC8qCiAgICAgICAqIEluIG92ZXJsYXkgbW9kZSB0aGUgaG9zdCBpcyAidHJhbnNwYXJlbnQiIHRvIGxheW91dCDigJQgdGhlIGlubmVyCiAgICAgICAqIC5zdGVwcGVyQ29udGFpbmVyLm92ZXJsYXkgaXMgd2hhdCBwaW5zIHRvIHRoZSB2aWV3cG9ydCBhbmQgY2FycmllcyB0aGUKICAgICAgICogei1pbmRleC4gS2VlcGluZyA6aG9zdCB1bnBvc2l0aW9uZWQgYXZvaWRzIG5lc3RpbmcgdGhlIHN0YWNraW5nIGNvbnRleHQKICAgICAgICogdW5kZXIgYW4gYXV0by16LWluZGV4IHBhcmVudCAod2hpY2ggd2FzIHRyYXBwaW5nIC5zdGVwcGVyQ29udGFpbmVyCiAgICAgICAqIGJlbG93IERlZXNXaW5kb3dMYXllcidzIHNpYmxpbmcgbGF5ZXJzKS4gVGhpcyBtaXJyb3JzIGhvdyBkZWVzLW1vZGFsCiAgICAgICAqIGtlZXBzIGl0cyBvd24gOmhvc3QgdW5wb3NpdGlvbmVkIGFuZCBsZXRzIC5tb2RhbENvbnRhaW5lciBkcml2ZSBsYXlvdXQuCiAgICAgICAqLwogICAgICA6aG9zdChbb3ZlcmxheV0pIHsKICAgICAgICBwb3NpdGlvbjogc3RhdGljOwogICAgICAgIHdpZHRoOiAwOwogICAgICAgIGhlaWdodDogMDsKICAgICAgfQoKICAgICAgLnN0ZXBwZXJDb250YWluZXIgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLnN0ZXBwZXJDb250YWluZXIub3ZlcmxheSB7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHdpZHRoOiAxMDB2dzsKICAgICAgICBoZWlnaHQ6IDEwMHZoOwogICAgICB9CgogICAgICAvKiBFeGl0IGFuaW1hdGlvbiDigJQgcmV2ZXJzZSBvZiB0aGUgZW50cnkuIFRpbGVzIHNsaWRlIERPV04gKyBmYWRlIG91dCwKICAgICAgICAgbWlycm9yaW5nIHRoZSAuZW50cmFuY2Ugc2xpZGUtdXAuIFRoZSB0cmFuc2l0aW9uIG92ZXJyaWRlIGlzIG5lZWRlZAogICAgICAgICBiZWNhdXNlIGRlZXMtdGlsZS5zdGVwIGhhcyBpdHMgb3duIDAuN3MgdHJhbnNpdGlvbiBmb3Igc3RlcCBzZWxlY3Rpb24KICAgICAgICAgd2hpY2ggd291bGQgb3RoZXJ3aXNlIG1ha2UgdGhlIGV4aXQgc2x1Z2dpc2guICovCiAgICAgIC5zdGVwcGVyQ29udGFpbmVyLnByZWRlc3Ryb3kgZGVlcy10aWxlLnN0ZXAgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxNnB4KTsKICAgICAgICBmaWx0ZXI6IG9wYWNpdHkoMCk7CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMjVzLCBmaWx0ZXIgMC4yczsKICAgICAgfQoKICAgICAgZGVlcy10aWxlLnN0ZXAgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICBtYXgtd2lkdGg6IDUwMHB4OwogICAgICAgIG1pbi1oZWlnaHQ6IDMwMHB4OwogICAgICAgIG1hcmdpbjogYXV0bzsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICAgIGZpbHRlcjogb3BhY2l0eSgwLjU1KSBzYXR1cmF0ZSgwLjg1KTsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC43cyBjdWJpYy1iZXppZXIoMC44NywgMCwgMC4xMywgMSksIGZpbHRlciAwLjdzIGN1YmljLWJlemllcigwLjg3LCAwLCAwLjEzLCAxKTsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgfQoKICAgICAgZGVlcy10aWxlLnN0ZXAuc2VsZWN0ZWQgewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBhbGw7CiAgICAgICAgZmlsdGVyOiBvcGFjaXR5KDEpIHNhdHVyYXRlKDEpOwogICAgICAgIHVzZXItc2VsZWN0OiBhdXRvOwogICAgICB9CgogICAgICBkZWVzLXRpbGUuc3RlcC5oaWRkZW5TdGVwIHsKICAgICAgICBmaWx0ZXI6IG9wYWNpdHkoMCk7CiAgICAgIH0KCiAgICAgIGRlZXMtdGlsZS5zdGVwLmVudHJhbmNlIHsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zNXMgZWFzZSwgZmlsdGVyIDAuMzVzIGVhc2U7CiAgICAgIH0KCiAgICAgIGRlZXMtdGlsZS5zdGVwLmVudHJhbmNlLmhpZGRlblN0ZXAgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxNnB4KTsKICAgICAgfQoKICAgICAgZGVlcy10aWxlLnN0ZXA6bGFzdC1jaGlsZCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTAwdmg7CiAgICAgIH0KCiAgICAgIC5zdGVwcGVyQ29udGFpbmVyLm92ZXJsYXkgZGVlcy10aWxlLnN0ZXA6OnBhcnQob3V0ZXIpIHsKICAgICAgICBib3gtc2hhZG93OgogICAgICAgICAgMCAwIDAgMXB4ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAwJSAvIDAuMDMpIiwiaHNsKDAgMCUgMTAwJSAvIDAuMDMpIil9LAogICAgICAgICAgMCA4cHggNDBweCAke2guYmRUaGVtZSgiaHNsKDAgMCUgMCUgLyAwLjEyKSIsImhzbCgwIDAlIDAlIC8gMC41KSIpfSwKICAgICAgICAgIDAgMnB4IDhweCAke2guYmRUaGVtZSgiaHNsKDAgMCUgMCUgLyAwLjA2KSIsImhzbCgwIDAlIDAlIC8gMC4yNSkiKX07CiAgICAgIH0KCiAgICAgIC5zdGVwLWhlYWRlciB7CiAgICAgICAgaGVpZ2h0OiAzNnB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgcGFkZGluZzogMCA4cHggMCAxMnB4OwogICAgICAgIGdhcDogMTJweDsKICAgICAgfQoKICAgICAgLmdvQmFjay1zcGFjZXIgewogICAgICAgIHdpZHRoOiAxcHg7CiAgICAgIH0KCiAgICAgIC5zdGVwLWhlYWRlciAuZ29CYWNrIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4OwogICAgICAgIGhlaWdodDogMjRweDsKICAgICAgICBwYWRkaW5nOiAwIDhweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBsaW5lLWhlaWdodDogMTsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzIGVhc2UsIGNvbG9yIDAuMTVzIGVhc2UsIHRyYW5zZm9ybSAwLjJzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5zdGVwLWhlYWRlciAuZ29CYWNrOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWhvdmVyKTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXNlY29uZGFyeSk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0ycHgpOwogICAgICB9CgogICAgICAuc3RlcC1oZWFkZXIgLmdvQmFjazphY3RpdmUgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5MCUpIiwiaHNsKDAgMCUgMTUlKSIpfTsKICAgICAgfQoKICAgICAgLnN0ZXAtaGVhZGVyIC5nb0JhY2sgc3BhbiB7CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZTsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIH0KCiAgICAgIC5zdGVwLWhlYWRlciAuZ29CYWNrOmhvdmVyIHNwYW4gewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMnB4KTsKICAgICAgfQoKICAgICAgLnN0ZXAtaGVhZGVyIC5zdGVwQ291bnRlciB7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICAgICAgcGFkZGluZzogMCA4cHg7CiAgICAgIH0KCiAgICAgIC5zdGVwLWJvZHkgLnRpdGxlIHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgcGFkZGluZy10b3A6IDMycHg7CiAgICAgICAgZm9udC1mYW1pbHk6ICdHZWlzdCBTYW5zJywgc2Fucy1zZXJpZjsKICAgICAgICBmb250LXNpemU6IDI0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTsKICAgICAgICBjb2xvcjogaW5oZXJpdDsKICAgICAgfQoKICAgICAgLnN0ZXAtYm9keSAuY29udGVudCB7CiAgICAgICAgcGFkZGluZzogMzJweDsKICAgICAgfQoKICAgICAgLnN0ZXAtYm9keSAuY29udGVudC53aXRoUHJvZ3Jlc3NTdGVwIHsKICAgICAgICBwYWRkaW5nLXRvcDogMjBweDsKICAgICAgfQoKICAgICAgLnByb2dyZXNzU3RlcCB7CiAgICAgICAgcGFkZGluZzogMCAyNHB4OwogICAgICB9CgogICAgICAvKiAtLS0gRm9vdGVyOiBtb2RhbC1zdHlsZSBib3R0b20gYnV0dG9ucyAtLS0gKi8KICAgICAgLmJvdHRvbUJ1dHRvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAwOwogICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAuYm90dG9tQnV0dG9ucyAuYm90dG9tQnV0dG9uIHsKICAgICAgICBwYWRkaW5nOiAwIDE2cHg7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICB9CgogICAgICAvKiBCb3JkZXItbGVmdCBzZXBhcmF0b3Igb24gZXZlcnkgYnV0dG9uIEVYQ0VQVCB0aGUgZmlyc3Qgb25lLgogICAgICAgICBVc2VzIGdlbmVyYWwgc2libGluZyBzbyB0aGUgc3RlcEhpbnQgKGlmIHJlbmRlcmVkIG9uIHRoZSBsZWZ0KSBkb2VzCiAgICAgICAgIG5vdCBzaGlmdCB3aGljaCBidXR0b24gY291bnRzIGFzICJmaXJzdCIgYW5kIGNyZWF0ZSBhIHBoYW50b20gYm9yZGVyLiAqLwogICAgICAuYm90dG9tQnV0dG9ucyAuYm90dG9tQnV0dG9uIH4gLmJvdHRvbUJ1dHRvbiB7CiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1zdWJ0bGUpOwogICAgICB9CgogICAgICAuYm90dG9tQnV0dG9ucyAuYm90dG9tQnV0dG9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWhvdmVyKTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICB9CgogICAgICAuYm90dG9tQnV0dG9ucyAuYm90dG9tQnV0dG9uOmFjdGl2ZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDkyJSkiLCJoc2woMCAwJSAxMyUpIil9OwogICAgICB9CgogICAgICAuYm90dG9tQnV0dG9ucyAuYm90dG9tQnV0dG9uLnByaW1hcnkgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNy4yIDkxLjIlIDU5LjglKSIsImhzbCgyMTMuMSA5My45JSA2Ny44JSkiKX07CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgfQoKICAgICAgLmJvdHRvbUJ1dHRvbnMgLmJvdHRvbUJ1dHRvbi5wcmltYXJ5OmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxNy4yIDkxLjIlIDU5LjglIC8gMC4wOCkiLCJoc2woMjEzLjEgOTMuOSUgNjcuOCUgLyAwLjA4KSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTcuMiA5MS4yJSA1MCUpIiwiaHNsKDIxMy4xIDkzLjklIDc1JSkiKX07CiAgICAgIH0KCiAgICAgIC5ib3R0b21CdXR0b25zIC5ib3R0b21CdXR0b24ucHJpbWFyeTphY3RpdmUgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjE3LjIgOTEuMiUgNTkuOCUgLyAwLjEyKSIsImhzbCgyMTMuMSA5My45JSA2Ny44JSAvIDAuMTIpIil9OwogICAgICB9CgogICAgICAuYm90dG9tQnV0dG9ucyAuYm90dG9tQnV0dG9uLmRpc2FibGVkIHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICBvcGFjaXR5OiAwLjQ7CiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgICAgfQoKICAgICAgLmJvdHRvbUJ1dHRvbnMgLmJvdHRvbUJ1dHRvbi5kaXNhYmxlZDpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgIH0KCiAgICAgIC8qIEhpbnQgc2hvd24gb24gdGhlIGxlZnQgb2YgdGhlIGZvb3RlciB3aGVuIHRoZSBhY3RpdmUgc3RlcCdzIGZvcm0gaGFzCiAgICAgICAgIHVuZmlsbGVkIHJlcXVpcmVkIGZpZWxkcy4gVXNlcyBtYXJnaW4tcmlnaHQ6IGF1dG8gdG8gcHVzaCByaWdodC1hbGlnbmVkCiAgICAgICAgIGJ1dHRvbnMgdG8gdGhlIHJpZ2h0IHdoaWxlIGtlZXBpbmcgdGhlIGhpbnQgZmx1c2gtbGVmdC4gKi8KICAgICAgLmJvdHRvbUJ1dHRvbnMgLnN0ZXBIaW50IHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBsaW5lLWhlaWdodDogMTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGl2CiAgICAgICAgY2xhc3M9InN0ZXBwZXJDb250YWluZXIgJHt0aGlzLm92ZXJsYXk/Im92ZXJsYXkiOiIifSIKICAgICAgICBzdHlsZT0ke3RoaXMub3ZlcmxheT9gei1pbmRleDogJHt0aGlzLnN0ZXBwZXJaSW5kZXh9O2A6IiJ9CiAgICAgICAgQGNsaWNrPSR7dGhpcy5oYW5kbGVPdXRzaWRlQ2xpY2t9CiAgICAgID4KICAgICAgICAke3RoaXMuc3RlcHMubWFwKChrLFMpPT57bGV0IEk9az09PXRoaXMuc2VsZWN0ZWRTdGVwLFA9dGhpcy5nZXRJbmRleE9mU3RlcChrKT50aGlzLmdldEluZGV4T2ZTdGVwKHRoaXMuc2VsZWN0ZWRTdGVwKSxSPVM9PT0wLEs9ay5wcm9ncmVzc1N0ZXA/dGhpcy5nZXRQcm9ncmVzc1N0ZXBTdGF0ZShrKTpudWxsO3JldHVybiB3YDxkZWVzLXRpbGUKICAgICAgICAgICAgY2xhc3M9InN0ZXAgJHtJPyJzZWxlY3RlZCI6IiJ9ICR7UD8iaGlkZGVuU3RlcCI6IiJ9ICR7Uj8iZW50cmFuY2UiOiIifSIKICAgICAgICAgID4KICAgICAgICAgICAgPGRpdiBzbG90PSJoZWFkZXIiIGNsYXNzPSJzdGVwLWhlYWRlciI+CiAgICAgICAgICAgICAgJHtSP3dgPGRpdiBjbGFzcz0iZ29CYWNrLXNwYWNlciI+PC9kaXY+YDp3YDxkaXYgY2xhc3M9ImdvQmFjayIgQGNsaWNrPSR7dGhpcy5nb0JhY2t9PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogSW50ZXIiPjwtPC9zcGFuPiBnbyB0byBwcmV2aW91cyBzdGVwCiAgICAgICAgICAgICAgICAgIDwvZGl2PmB9CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RlcENvdW50ZXIiPgogICAgICAgICAgICAgICAgU3RlcCAke1MrMX0gb2YgJHt0aGlzLnN0ZXBzLmxlbmd0aH0KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0ZXAtYm9keSI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPiR7ay50aXRsZX08L2Rpdj4KICAgICAgICAgICAgICAke2sucHJvZ3Jlc3NTdGVwJiZLP3dgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzc1N0ZXAiPgogICAgICAgICAgICAgICAgICA8ZGVlcy1wcm9ncmVzc2JhcgogICAgICAgICAgICAgICAgICAgIC5sYWJlbD0ke0subGFiZWw/P2sudGl0bGV9CiAgICAgICAgICAgICAgICAgICAgLnBlcmNlbnRhZ2U9JHtLLnBlcmNlbnRhZ2U/PzB9CiAgICAgICAgICAgICAgICAgICAgLmluZGV0ZXJtaW5hdGU9JHtLLmluZGV0ZXJtaW5hdGU/PyExfQogICAgICAgICAgICAgICAgICAgIC5zaG93UGVyY2VudGFnZT0ke0suc2hvd1BlcmNlbnRhZ2U/PyEwfQogICAgICAgICAgICAgICAgICAgIC5zdGF0dXNUZXh0PSR7Sy5zdGF0dXNUZXh0Pz8iIn0KICAgICAgICAgICAgICAgICAgICAudGVybWluYWxMaW5lcz0ke0sudGVybWluYWxMaW5lcz8/W119CiAgICAgICAgICAgICAgICAgICAgLnN0YXR1c1Jvd3M9JHtLLnN0YXR1c1Jvd3M/PzN9CiAgICAgICAgICAgICAgICAgID48L2RlZXMtcHJvZ3Jlc3NiYXI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICBgOiIifQogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQgJHtrLnByb2dyZXNzU3RlcD8id2l0aFByb2dyZXNzU3RlcCI6IiJ9Ij4ke2suY29udGVudH08L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgc2xvdD0iZm9vdGVyIiBjbGFzcz0iYm90dG9tQnV0dG9ucyI+CiAgICAgICAgICAgICAgJHtJJiZ0aGlzLmFjdGl2ZUZvcm0hPT1udWxsJiYhdGhpcy5hY3RpdmVGb3JtVmFsaWQ/d2A8ZGl2IGNsYXNzPSJzdGVwSGludCI+Q29tcGxldGUgZm9ybSB0byBjb250aW51ZTwvZGl2PmA6IiJ9CiAgICAgICAgICAgICAgJHt0aGlzLmNhbmNlbGFibGU/d2A8ZGl2CiAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImJvdHRvbUJ1dHRvbiIKICAgICAgICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVDYW5jZWxSZXF1ZXN0KCl9CiAgICAgICAgICAgICAgICAgID5DYW5jZWw8L2Rpdj5gOiIifQogICAgICAgICAgICAgICR7ay5tZW51T3B0aW9ucz8ubWFwKChWLFcpPT57bGV0IG1lPVc9PT1rLm1lbnVPcHRpb25zLmxlbmd0aC0xLEI9bWUmJnRoaXMuYWN0aXZlRm9ybSE9PW51bGwmJiF0aGlzLmFjdGl2ZUZvcm1WYWxpZDtyZXR1cm4gd2AKICAgICAgICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJib3R0b21CdXR0b24gJHttZT8icHJpbWFyeSI6IiJ9ICR7Qj8iZGlzYWJsZWQiOiIifSIKICAgICAgICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy5oYW5kbGVNZW51T3B0aW9uQ2xpY2soVixtZSl9CiAgICAgICAgICAgICAgICAgID4ke1YubmFtZX08L2Rpdj4KICAgICAgICAgICAgICAgIGB9KT8/IiJ9CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kZWVzLXRpbGU+YH0pfQogICAgICA8L2Rpdj4KICAgIGB9Z2V0SW5kZXhPZlN0ZXA9aShrPT50aGlzLnN0ZXBzLmZpbmRJbmRleChTPT5rPT09UyksImdldEluZGV4T2ZTdGVwIik7YXN5bmMgZmlyc3RVcGRhdGVkKCl7YXdhaXQgdGhpcy5kb210b29sc1Byb21pc2UsYXdhaXQgdGhpcy5kb210b29scy5jb252ZW5pZW5jZS5zbWFydGRlbGF5LmRlbGF5Rm9yKDApLHRoaXMuc3RlcHMubGVuZ3RoJiYodGhpcy5wcmVwYXJlU3RlcEZvckFjdGl2YXRpb24odGhpcy5zdGVwc1swXSksdGhpcy5zZWxlY3RlZFN0ZXA9dGhpcy5zdGVwc1swXSxhd2FpdCB0aGlzLnVwZGF0ZUNvbXBsZXRlLGF3YWl0IHRoaXMuc2V0U2Nyb2xsU3RhdHVzKCksYXdhaXQgdGhpcy5kb210b29scy5jb252ZW5pZW5jZS5zbWFydGRlbGF5LmRlbGF5Rm9yKDM1MCksdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5zdGVwLmVudHJhbmNlIik/LmNsYXNzTGlzdC5yZW1vdmUoImVudHJhbmNlIikpfWFzeW5jIHVwZGF0ZWQoayl7IWsuaGFzKCJzZWxlY3RlZFN0ZXAiKSYmIWsuaGFzKCJzdGVwcyIpfHxhd2FpdCB0aGlzLnNldFNjcm9sbFN0YXR1cygpfXNjcm9sbGVyO2FzeW5jIHNldFNjcm9sbFN0YXR1cygpe2xldCBrPXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIuc3RlcHBlckNvbnRhaW5lciIpLFM9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5zZWxlY3RlZCIpO2lmKCFTKXJldHVybjt0aGlzLnNjYW5BY3RpdmVGb3JtKFMpLGsuc3R5bGUucGFkZGluZ1RvcHx8KGsuc3R5bGUucGFkZGluZ1RvcD1gJHtrLm9mZnNldEhlaWdodC8yLVMub2Zmc2V0SGVpZ2h0LzJ9cHhgKTtsZXQgST1TLm9mZnNldFRvcC1rLm9mZnNldEhlaWdodC8yK1Mub2Zmc2V0SGVpZ2h0LzI7YXdhaXQgamkuc2V0dXBEb21Ub29scygpLHRoaXMuc2Nyb2xsZXJ8fCh0aGlzLnNjcm9sbGVyPW5ldyB1dC5Td2VldFNjcm9sbCh7dmVydGljYWw6ITAsaG9yaXpvbnRhbDohMSxlYXNpbmc6ImVhc2VJbk91dEV4cG8iLGR1cmF0aW9uOjcwMH0saykpLCF0aGlzLnNlbGVjdGVkU3RlcC52YWxpZGF0aW9uRnVuY0NhbGxlZCYmdGhpcy5zZWxlY3RlZFN0ZXAudmFsaWRhdGlvbkZ1bmMmJih0aGlzLnNlbGVjdGVkU3RlcC5hYm9ydENvbnRyb2xsZXI9bmV3IEFib3J0Q29udHJvbGxlcix0aGlzLnNlbGVjdGVkU3RlcC52YWxpZGF0aW9uRnVuY0NhbGxlZD0hMCx0aGlzLnJ1blN0ZXBWYWxpZGF0aW9uKHRoaXMuc2VsZWN0ZWRTdGVwLFMsdGhpcy5zZWxlY3RlZFN0ZXAuYWJvcnRDb250cm9sbGVyLnNpZ25hbCkpLHRoaXMuc2Nyb2xsZXIudG8oSSl9YXN5bmMgZ29CYWNrKCl7bGV0IGs9dGhpcy5zdGVwcy5maW5kSW5kZXgoUD0+UD09PXRoaXMuc2VsZWN0ZWRTdGVwKTtpZihrPD0wKXJldHVybjt0aGlzLnNlbGVjdGVkU3RlcC5hYm9ydENvbnRyb2xsZXImJnRoaXMuc2VsZWN0ZWRTdGVwLmFib3J0Q29udHJvbGxlci5hYm9ydCgpO2xldCBTPXRoaXMuc3RlcHNba107Uy52YWxpZGF0aW9uRnVuY0NhbGxlZD0hMTtsZXQgST10aGlzLnN0ZXBzW2stMV07SS52YWxpZGF0aW9uRnVuY0NhbGxlZD0hMSx0aGlzLnByZXBhcmVTdGVwRm9yQWN0aXZhdGlvbihJKSx0aGlzLnNlbGVjdGVkU3RlcD1JLGF3YWl0IHRoaXMuZG9tdG9vbHNQcm9taXNlLGF3YWl0IHRoaXMuZG9tdG9vbHMuY29udmVuaWVuY2Uuc21hcnRkZWxheS5kZWxheUZvcigxMDApLHRoaXMuc2VsZWN0ZWRTdGVwLm9uUmV0dXJuVG9TdGVwRnVuYz8uKHRoaXMsdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5zZWxlY3RlZCIpKX1nb05leHQoKXtsZXQgaz10aGlzLnN0ZXBzLmZpbmRJbmRleChQPT5QPT09dGhpcy5zZWxlY3RlZFN0ZXApO2lmKGs8MHx8az49dGhpcy5zdGVwcy5sZW5ndGgtMSlyZXR1cm47dGhpcy5zZWxlY3RlZFN0ZXAuYWJvcnRDb250cm9sbGVyJiZ0aGlzLnNlbGVjdGVkU3RlcC5hYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtsZXQgUz10aGlzLnN0ZXBzW2tdO1MudmFsaWRhdGlvbkZ1bmNDYWxsZWQ9ITE7bGV0IEk9dGhpcy5zdGVwc1trKzFdO0kudmFsaWRhdGlvbkZ1bmNDYWxsZWQ9ITEsdGhpcy5wcmVwYXJlU3RlcEZvckFjdGl2YXRpb24oSSksdGhpcy5zZWxlY3RlZFN0ZXA9SX1yZXNldFByb2dyZXNzU3RlcChrPXRoaXMuc2VsZWN0ZWRTdGVwKXtrPy5wcm9ncmVzc1N0ZXAmJihrLnByb2dyZXNzU3RlcFN0YXRlPXRoaXMuY3JlYXRlSW5pdGlhbFByb2dyZXNzU3RlcFN0YXRlKGspLHRoaXMucmVxdWVzdFVwZGF0ZSgpKX11cGRhdGVQcm9ncmVzc1N0ZXAoayxTPXRoaXMuc2VsZWN0ZWRTdGVwKXtpZighUz8ucHJvZ3Jlc3NTdGVwKXJldHVybjtsZXQgST10aGlzLmdldFByb2dyZXNzU3RlcFN0YXRlKFMpO1MucHJvZ3Jlc3NTdGVwU3RhdGU9ey4uLkksLi4uayx0ZXJtaW5hbExpbmVzOmsudGVybWluYWxMaW5lcz9bLi4uay50ZXJtaW5hbExpbmVzXTpbLi4uSS50ZXJtaW5hbExpbmVzPz9bXV19LHRoaXMucmVxdWVzdFVwZGF0ZSgpfWFwcGVuZFByb2dyZXNzU3RlcExpbmUoayxTPXRoaXMuc2VsZWN0ZWRTdGVwKXtpZighUz8ucHJvZ3Jlc3NTdGVwKXJldHVybjtsZXQgST10aGlzLmdldFByb2dyZXNzU3RlcFN0YXRlKFMpO3RoaXMudXBkYXRlUHJvZ3Jlc3NTdGVwKHt0ZXJtaW5hbExpbmVzOlsuLi5JLnRlcm1pbmFsTGluZXM/P1tdLGtdfSxTKX1zY2FuQWN0aXZlRm9ybShrKXtsZXQgUz1rLnF1ZXJ5U2VsZWN0b3IoImRlZXMtZm9ybSIpO2lmKFM9PT10aGlzLmFjdGl2ZUZvcm0pe3RoaXMucmVjb21wdXRlRm9ybVZhbGlkKCk7cmV0dXJufWlmKHRoaXMuYWN0aXZlRm9ybVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKSx0aGlzLmFjdGl2ZUZvcm1TdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuYWN0aXZlRm9ybT1TLCFTKXt0aGlzLmFjdGl2ZUZvcm1WYWxpZD0hMDtyZXR1cm59dGhpcy5yZWNvbXB1dGVGb3JtVmFsaWQoKSx0aGlzLmFjdGl2ZUZvcm1TdWJzY3JpcHRpb249Uy5jaGFuZ2VTdWJqZWN0LnN1YnNjcmliZSgoKT0+e3RoaXMucmVjb21wdXRlRm9ybVZhbGlkKCl9KX1yZWNvbXB1dGVGb3JtVmFsaWQoKXtsZXQgaz10aGlzLmFjdGl2ZUZvcm07aWYoIWspe3RoaXMuYWN0aXZlRm9ybVZhbGlkPSEwO3JldHVybn1sZXQgUz1rLmdldEZvcm1FbGVtZW50cygpO3RoaXMuYWN0aXZlRm9ybVZhbGlkPVMuZXZlcnkoST0+IUkucmVxdWlyZWR8fEkudmFsdWUhPT1udWxsJiZJLnZhbHVlIT09dm9pZCAwJiZJLnZhbHVlIT09IiIpfWFzeW5jIGhhbmRsZU1lbnVPcHRpb25DbGljayhrLFMpe2xldCBJPXRoaXMuYWN0aXZlRm9ybTtpZihTJiZJKXtpZighdGhpcy5hY3RpdmVGb3JtVmFsaWQpcmV0dXJuO2F3YWl0IG5ldyBQcm9taXNlKFA9PntJLmFkZEV2ZW50TGlzdGVuZXIoImZvcm1EYXRhIiwoKT0+UCgpLHtvbmNlOiEwfSksSS5nYXRoZXJBbmREaXNwYXRjaCgpfSl9YXdhaXQgay5hY3Rpb24odGhpcyl9Z2V0UHJvZ3Jlc3NTdGVwU3RhdGUoayl7cmV0dXJuIGsucHJvZ3Jlc3NTdGVwPyhrLnByb2dyZXNzU3RlcFN0YXRlfHwoay5wcm9ncmVzc1N0ZXBTdGF0ZT10aGlzLmNyZWF0ZUluaXRpYWxQcm9ncmVzc1N0ZXBTdGF0ZShrKSksay5wcm9ncmVzc1N0ZXBTdGF0ZSk6e319Y3JlYXRlSW5pdGlhbFByb2dyZXNzU3RlcFN0YXRlKGspe3JldHVybntsYWJlbDprLnByb2dyZXNzU3RlcD8ubGFiZWw/P2sudGl0bGUscGVyY2VudGFnZTprLnByb2dyZXNzU3RlcD8ucGVyY2VudGFnZT8/MCxpbmRldGVybWluYXRlOmsucHJvZ3Jlc3NTdGVwPy5pbmRldGVybWluYXRlPz8hMSxzaG93UGVyY2VudGFnZTprLnByb2dyZXNzU3RlcD8uc2hvd1BlcmNlbnRhZ2U/PyEwLHN0YXR1c1RleHQ6ay5wcm9ncmVzc1N0ZXA/LnN0YXR1c1RleHQ/PyIiLHRlcm1pbmFsTGluZXM6Wy4uLmsucHJvZ3Jlc3NTdGVwPy50ZXJtaW5hbExpbmVzPz9bXV0sc3RhdHVzUm93czprLnByb2dyZXNzU3RlcD8uc3RhdHVzUm93cz8/M319cHJlcGFyZVN0ZXBGb3JBY3RpdmF0aW9uKGspe2s/LnByb2dyZXNzU3RlcCYmKGsucHJvZ3Jlc3NTdGVwU3RhdGU9dGhpcy5jcmVhdGVJbml0aWFsUHJvZ3Jlc3NTdGVwU3RhdGUoaykpfWFzeW5jIHJ1blN0ZXBWYWxpZGF0aW9uKGssUyxJKXt0cnl7aWYoYXdhaXQgay52YWxpZGF0aW9uRnVuYz8uKHRoaXMsUyxJKSxJLmFib3J0ZWQpcmV0dXJuO2sucHJvZ3Jlc3NTdGVwJiZrLnByb2dyZXNzU3RlcC5hdXRvQWR2YW5jZSE9PSExJiZ0aGlzLnNlbGVjdGVkU3RlcD09PWsmJnRoaXMuZ29OZXh0KCl9Y2F0Y2goUCl7aWYoSS5hYm9ydGVkKXJldHVybjtpZihrLnByb2dyZXNzU3RlcCl7bGV0IFI9UCBpbnN0YW5jZW9mIEVycm9yP1AubWVzc2FnZToiVW5leHBlY3RlZCBlcnJvciI7dGhpcy5hcHBlbmRQcm9ncmVzc1N0ZXBMaW5lKGBFcnJvcjogJHtSfWAsayksdGhpcy51cGRhdGVQcm9ncmVzc1N0ZXAoe2luZGV0ZXJtaW5hdGU6ITEsc3RhdHVzVGV4dDpSfSxrKX1jb25zb2xlLmVycm9yKFApfX1jYW5jZWxDb25maXJtTW9kYWw7aGFuZGxlT3V0c2lkZUNsaWNrKGspe2lmKCF0aGlzLm92ZXJsYXl8fCF0aGlzLmNhbmNlbGFibGUpcmV0dXJuO2suc3RvcFByb3BhZ2F0aW9uKCk7bGV0IFM9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5zdGVwcGVyQ29udGFpbmVyIik7ay50YXJnZXQ9PT1TJiZ0aGlzLmhhbmRsZUNhbmNlbFJlcXVlc3QoKX1hc3luYyBoYW5kbGVDYW5jZWxSZXF1ZXN0KCl7dGhpcy5jYW5jZWxhYmxlJiYodGhpcy5jYW5jZWxDb25maXJtTW9kYWwmJnRoaXMuY2FuY2VsQ29uZmlybU1vZGFsLmlzQ29ubmVjdGVkfHwodGhpcy5jYW5jZWxDb25maXJtTW9kYWw9dm9pZCAwLHRoaXMuY2FuY2VsQ29uZmlybU1vZGFsPWF3YWl0IGlzLmNyZWF0ZUFuZFNob3coe2hlYWRpbmc6IkNhbmNlbCBzZXR1cD8iLHdpZHRoOiJzbWFsbCIsY29udGVudDp3YAogICAgICAgIDxwIHN0eWxlPSJtYXJnaW46IDA7Ij4KICAgICAgICAgIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjYW5jZWw/IEFueSBwcm9ncmVzcyBvbiB0aGUgY3VycmVudCBzdGVwIHdpbGwgYmUgbG9zdC4KICAgICAgICA8L3A+CiAgICAgIGAsbWVudU9wdGlvbnM6W3tuYW1lOiJDb250aW51ZSBzZXR1cCIsYWN0aW9uOmkoYXN5bmMgaz0+e3RoaXMuY2FuY2VsQ29uZmlybU1vZGFsPXZvaWQgMCxhd2FpdCBrLmRlc3Ryb3koKX0sImFjdGlvbiIpfSx7bmFtZToiWWVzLCBjYW5jZWwiLGFjdGlvbjppKGFzeW5jIGs9Pnt0aGlzLmNhbmNlbENvbmZpcm1Nb2RhbD12b2lkIDAsay5kZXN0cm95KCksYXdhaXQoYXdhaXQgdGhpcy5kb210b29sc1Byb21pc2UpLmNvbnZlbmllbmNlLnNtYXJ0ZGVsYXkuZGVsYXlGb3IoMTAwKSxhd2FpdCB0aGlzLmRlc3Ryb3koKX0sImFjdGlvbiIpfV19KSkpfWFzeW5jIGRlc3Ryb3koKXtsZXQgaz1hd2FpdCB0aGlzLmRvbXRvb2xzUHJvbWlzZSxTPXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIuc3RlcHBlckNvbnRhaW5lciIpO3RoaXMuc2VsZWN0ZWRTdGVwPy5hYm9ydENvbnRyb2xsZXImJnRoaXMuc2VsZWN0ZWRTdGVwLmFib3J0Q29udHJvbGxlci5hYm9ydCgpLFM/LmNsYXNzTGlzdC5hZGQoInByZWRlc3Ryb3kiKSxhd2FpdCBrLmNvbnZlbmllbmNlLnNtYXJ0ZGVsYXkuZGVsYXlGb3IoMjUwKSx0aGlzLnBhcmVudEVsZW1lbnQmJnRoaXMucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzKSx0aGlzLndpbmRvd0xheWVyJiZhd2FpdCB0aGlzLndpbmRvd0xheWVyLmRlc3Ryb3koKSx0aGlzLmFjdGl2ZUZvcm1TdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCksdGhpcy5hY3RpdmVGb3JtU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLmFjdGl2ZUZvcm09bnVsbCxfYS51bnJlZ2lzdGVyKHRoaXMpfXN0YXRpY3tlbChhLHQpfX07cmV0dXJuIEg9YX0pKCl9KTt2YXIgV3dhPWcoKCk9PntvMmUoKX0pO3ZhciBHd2E9ZygoKT0+e21yKCl9KTt2YXIgS3dhPWcoKCk9Pntjd2EoKTtDd2EoKTtFd2EoKTtQd2EoKTtSd2EoKTtPd2EoKTtId2EoKTtXd2EoKTtHd2EoKX0pO3ZhciBZd2EsWndhPWcoKCk9PntwZSgpO1l3YT1pKCgpPT53YAogIDxzdHlsZT4KICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgIHBhZGRpbmc6IDQ4cHg7CiAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjhmOWZhIiwiIzBhMGEwYSIpfTsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgZ2FwOiAzMnB4OwogICAgfQoKICAgIC5zZWN0aW9uIHsKICAgICAgbWF4LXdpZHRoOiA5MDBweDsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgfQoKICAgIC5zZWN0aW9uLXRpdGxlIHsKICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICBmb250LXdlaWdodDogNjAwOwogICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07CiAgICB9CgogICAgLnNlY3Rpb24tZGVzY3JpcHRpb24gewogICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICB9CgogICAgZGVlcy1pbWFnZS12aWV3ZXIgewogICAgICBoZWlnaHQ6IDQwMHB4OwogICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMyNzI3MmEiKX07CiAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIH0KCiAgICAuY29tcGFjdCB7CiAgICAgIGhlaWdodDogMjUwcHg7CiAgICB9CiAgPC9zdHlsZT4KCiAgPGRpdiBjbGFzcz0iZGVtby1jb250YWluZXIiPgogICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPkpQRUcgSW1hZ2Ugd2l0aCBUb29sYmFyPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tZGVzY3JpcHRpb24iPkEgbGFuZHNjYXBlIHBob3RvIHdpdGggem9vbSwgcGFuLCBmaXQsIGFuZCBkb3dubG9hZCBjb250cm9scy48L2Rpdj4KICAgICAgPGRlZXMtaW1hZ2Utdmlld2VyCiAgICAgICAgc3JjPSJodHRwczovL2ltYWdlcy51bnNwbGFzaC5jb20vcGhvdG8tMTUwNjc0NDAzODEzNi00NjI3MzgzNGIzZmI/dz0xMjAwIgogICAgICAgIGFsdD0iTW91bnRhaW4gbGFuZHNjYXBlIgogICAgICA+PC9kZWVzLWltYWdlLXZpZXdlcj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5QTkcgd2l0aCBUcmFuc3BhcmVuY3k8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1kZXNjcmlwdGlvbiI+VHJhbnNwYXJlbnQgUE5HIGRpc3BsYXllZCBvbiBhIGNoZWNrZXJib2FyZCBiYWNrZ3JvdW5kLjwvZGl2PgogICAgICA8ZGVlcy1pbWFnZS12aWV3ZXIKICAgICAgICBzcmM9Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvNC80Ny9QTkdfdHJhbnNwYXJlbmN5X2RlbW9uc3RyYXRpb25fMS5wbmciCiAgICAgICAgYWx0PSJQTkcgdHJhbnNwYXJlbmN5IGRlbW8iCiAgICAgID48L2RlZXMtaW1hZ2Utdmlld2VyPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPlNWRyBJbWFnZTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj5TY2FsYWJsZSB2ZWN0b3IgZ3JhcGhpYy48L2Rpdj4KICAgICAgPGRlZXMtaW1hZ2Utdmlld2VyCiAgICAgICAgc3JjPSJodHRwczovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9jb21tb25zLzAvMDIvU1ZHX2xvZ28uc3ZnIgogICAgICAgIGFsdD0iU1ZHIGxvZ28iCiAgICAgICAgZml0PSJjb250YWluIgogICAgICA+PC9kZWVzLWltYWdlLXZpZXdlcj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5ObyBUb29sYmFyIFZhcmlhbnQ8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1kZXNjcmlwdGlvbiI+SW1hZ2Ugdmlld2VyIHdpdGggdGhlIHRvb2xiYXIgaGlkZGVuLjwvZGl2PgogICAgICA8ZGVlcy1pbWFnZS12aWV3ZXIKICAgICAgICBjbGFzcz0iY29tcGFjdCIKICAgICAgICBzcmM9Imh0dHBzOi8vaW1hZ2VzLnVuc3BsYXNoLmNvbS9waG90by0xNDY5NDc0OTY4MDI4LTU2NjIzZjAyZTQyZT93PTgwMCIKICAgICAgICBhbHQ9Ik5hdHVyZSBzY2VuZSIKICAgICAgICAuc2hvd1Rvb2xiYXI9JHshMX0KICAgICAgPjwvZGVlcy1pbWFnZS12aWV3ZXI+CiAgICA8L2Rpdj4KICA8L2Rpdj4KYCwiZGVtbyIpfSk7dmFyIHVjLGJpLGplcyx4bHQ9ZygoKT0+e3BlKCk7R2EoKTtad2EoKTt1Yz1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sYmk9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LGplcz0oKCk9PntsZXQgcz1bbmUoImRlZXMtaW1hZ2Utdmlld2VyIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W10sSCxrPVtdLFM9W10sSSxQPVtdLFI9W10sSyxWPVtdLFc9W10sbWUsQj1bXSxVPVtdLGhlLEY9W10saj1bXTt2YXIgdWU9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNJbWFnZVZpZXdlciIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBsZT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKCldLHA9W0woKV0sYz1bTCgpXSx4PVtMKHt0eXBlOkJvb2xlYW59KV0seT1bWSgpXSxOPVtZKCldLE89W1koKV0sSD1bWSgpXSxJPVtZKCldLEs9W1koKV0sbWU9W1koKV0saGU9W1koKV0sdWModGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzcmMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUT0+InNyYyJpbiBRLCJoYXMiKSxnZXQ6aShRPT5RLnNyYywiZ2V0Iiksc2V0OmkoKFEsaWUpPT57US5zcmM9aWV9LCJzZXQiKX0sbWV0YWRhdGE6bGV9LG8sbCksdWModGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJhbHQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUT0+ImFsdCJpbiBRLCJoYXMiKSxnZXQ6aShRPT5RLmFsdCwiZ2V0Iiksc2V0OmkoKFEsaWUpPT57US5hbHQ9aWV9LCJzZXQiKX0sbWV0YWRhdGE6bGV9LGQsdSksdWModGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJmaXQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUT0+ImZpdCJpbiBRLCJoYXMiKSxnZXQ6aShRPT5RLmZpdCwiZ2V0Iiksc2V0OmkoKFEsaWUpPT57US5maXQ9aWV9LCJzZXQiKX0sbWV0YWRhdGE6bGV9LGIsdiksdWModGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93VG9vbGJhciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShRPT4ic2hvd1Rvb2xiYXIiaW4gUSwiaGFzIiksZ2V0OmkoUT0+US5zaG93VG9vbGJhciwiZ2V0Iiksc2V0OmkoKFEsaWUpPT57US5zaG93VG9vbGJhcj1pZX0sInNldCIpfSxtZXRhZGF0YTpsZX0sbSxmKSx1Yyh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Inpvb20iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUT0+Inpvb20iaW4gUSwiaGFzIiksZ2V0OmkoUT0+US56b29tLCJnZXQiKSxzZXQ6aSgoUSxpZSk9PntRLnpvb209aWV9LCJzZXQiKX0sbWV0YWRhdGE6bGV9LE0seiksdWModGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJwYW5YIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFE9PiJwYW5YImluIFEsImhhcyIpLGdldDppKFE9PlEucGFuWCwiZ2V0Iiksc2V0OmkoKFEsaWUpPT57US5wYW5YPWllfSwic2V0Iil9LG1ldGFkYXRhOmxlfSxDLF8pLHVjKHRoaXMsbnVsbCxPLHtraW5kOiJhY2Nlc3NvciIsbmFtZToicGFuWSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShRPT4icGFuWSJpbiBRLCJoYXMiKSxnZXQ6aShRPT5RLnBhblksImdldCIpLHNldDppKChRLGllKT0+e1EucGFuWT1pZX0sInNldCIpfSxtZXRhZGF0YTpsZX0sJCxFKSx1Yyh0aGlzLG51bGwsSCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImlzRHJhZ2dpbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUT0+ImlzRHJhZ2dpbmciaW4gUSwiaGFzIiksZ2V0OmkoUT0+US5pc0RyYWdnaW5nLCJnZXQiKSxzZXQ6aSgoUSxpZSk9PntRLmlzRHJhZ2dpbmc9aWV9LCJzZXQiKX0sbWV0YWRhdGE6bGV9LGssUyksdWModGhpcyxudWxsLEkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJsb2FkaW5nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFE9PiJsb2FkaW5nImluIFEsImhhcyIpLGdldDppKFE9PlEubG9hZGluZywiZ2V0Iiksc2V0OmkoKFEsaWUpPT57US5sb2FkaW5nPWllfSwic2V0Iil9LG1ldGFkYXRhOmxlfSxQLFIpLHVjKHRoaXMsbnVsbCxLLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZXJyb3IiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUT0+ImVycm9yImluIFEsImhhcyIpLGdldDppKFE9PlEuZXJyb3IsImdldCIpLHNldDppKChRLGllKT0+e1EuZXJyb3I9aWV9LCJzZXQiKX0sbWV0YWRhdGE6bGV9LFYsVyksdWModGhpcyxudWxsLG1lLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaW1hZ2VOYXR1cmFsV2lkdGgiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUT0+ImltYWdlTmF0dXJhbFdpZHRoImluIFEsImhhcyIpLGdldDppKFE9PlEuaW1hZ2VOYXR1cmFsV2lkdGgsImdldCIpLHNldDppKChRLGllKT0+e1EuaW1hZ2VOYXR1cmFsV2lkdGg9aWV9LCJzZXQiKX0sbWV0YWRhdGE6bGV9LEIsVSksdWModGhpcyxudWxsLGhlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaW1hZ2VOYXR1cmFsSGVpZ2h0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFE9PiJpbWFnZU5hdHVyYWxIZWlnaHQiaW4gUSwiaGFzIiksZ2V0OmkoUT0+US5pbWFnZU5hdHVyYWxIZWlnaHQsImdldCIpLHNldDppKChRLGllKT0+e1EuaW1hZ2VOYXR1cmFsSGVpZ2h0PWllfSwic2V0Iil9LG1ldGFkYXRhOmxlfSxGLGopLHVjKG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOmxlfSxudWxsLHQpLHVlPWE9ZS52YWx1ZSxsZSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpsZX0pfXN0YXRpYyBkZW1vPVl3YTtzdGF0aWMgZGVtb0dyb3Vwcz1bIk1lZGlhIl07I2U9YmkodGhpcyxvLCIiKTtnZXQgc3JjKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHNyYyhsZSl7dGhpcy4jZT1sZX0jdD0oYmkodGhpcyxsKSxiaSh0aGlzLGQsIiIpKTtnZXQgYWx0KCl7cmV0dXJuIHRoaXMuI3R9c2V0IGFsdChsZSl7dGhpcy4jdD1sZX0jYT0oYmkodGhpcyx1KSxiaSh0aGlzLGIsImNvbnRhaW4iKSk7Z2V0IGZpdCgpe3JldHVybiB0aGlzLiNhfXNldCBmaXQobGUpe3RoaXMuI2E9bGV9I3M9KGJpKHRoaXMsdiksYmkodGhpcyxtLCEwKSk7Z2V0IHNob3dUb29sYmFyKCl7cmV0dXJuIHRoaXMuI3N9c2V0IHNob3dUb29sYmFyKGxlKXt0aGlzLiNzPWxlfSNpPShiaSh0aGlzLGYpLGJpKHRoaXMsTSwxKSk7Z2V0IHpvb20oKXtyZXR1cm4gdGhpcy4jaX1zZXQgem9vbShsZSl7dGhpcy4jaT1sZX0jcj0oYmkodGhpcyx6KSxiaSh0aGlzLEMsMCkpO2dldCBwYW5YKCl7cmV0dXJuIHRoaXMuI3J9c2V0IHBhblgobGUpe3RoaXMuI3I9bGV9I289KGJpKHRoaXMsXyksYmkodGhpcywkLDApKTtnZXQgcGFuWSgpe3JldHVybiB0aGlzLiNvfXNldCBwYW5ZKGxlKXt0aGlzLiNvPWxlfSNuPShiaSh0aGlzLEUpLGJpKHRoaXMsaywhMSkpO2dldCBpc0RyYWdnaW5nKCl7cmV0dXJuIHRoaXMuI259c2V0IGlzRHJhZ2dpbmcobGUpe3RoaXMuI249bGV9I2w9KGJpKHRoaXMsUyksYmkodGhpcyxQLCEwKSk7Z2V0IGxvYWRpbmcoKXtyZXR1cm4gdGhpcy4jbH1zZXQgbG9hZGluZyhsZSl7dGhpcy4jbD1sZX0jYz0oYmkodGhpcyxSKSxiaSh0aGlzLFYsIiIpKTtnZXQgZXJyb3IoKXtyZXR1cm4gdGhpcy4jY31zZXQgZXJyb3IobGUpe3RoaXMuI2M9bGV9I2Q9KGJpKHRoaXMsVyksYmkodGhpcyxCLDApKTtnZXQgaW1hZ2VOYXR1cmFsV2lkdGgoKXtyZXR1cm4gdGhpcy4jZH1zZXQgaW1hZ2VOYXR1cmFsV2lkdGgobGUpe3RoaXMuI2Q9bGV9I3U9KGJpKHRoaXMsVSksYmkodGhpcyxGLDApKTtnZXQgaW1hZ2VOYXR1cmFsSGVpZ2h0KCl7cmV0dXJuIHRoaXMuI3V9c2V0IGltYWdlTmF0dXJhbEhlaWdodChsZSl7dGhpcy4jdT1sZX1kcmFnU3RhcnRYPShiaSh0aGlzLGopLDApO2RyYWdTdGFydFk9MDtkcmFnU3RhcnRQYW5YPTA7ZHJhZ1N0YXJ0UGFuWT0wO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8c3R5bGU+CiAgICAgICAgOmhvc3QgewogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIHNhbnMtc2VyaWY7CiAgICAgICAgfQoKICAgICAgICAudmlld2VyLWNvbnRhaW5lciB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5NyUpIiwiaHNsKDIxNSAyMCUgMTAlKSIpfTsKICAgICAgICB9CgogICAgICAgIC50b29sYmFyIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICBnYXA6IDE2cHg7CiAgICAgICAgICBwYWRkaW5nOiAwIDE2cHg7CiAgICAgICAgICBoZWlnaHQ6IDQ4cHg7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsImhzbCgyMTUgMjAlIDE1JSkiKX07CiAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCJoc2woMjE3IDI1JSAyMiUpIil9OwogICAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgfQoKICAgICAgICAudG9vbGJhci1ncm91cCB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgIGdhcDogNHB4OwogICAgICAgIH0KCiAgICAgICAgLnRvb2xiYXItYnV0dG9uIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICB3aWR0aDogMzJweDsKICAgICAgICAgIGhlaWdodDogMzJweDsKICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1IDE2JSA0NSUpIiwiaHNsKDIxNSAxNiUgNzUlKSIpfTsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgLnRvb2xiYXItYnV0dG9uIGRlZXMtaWNvbiB7CiAgICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgfQoKICAgICAgICAudG9vbGJhci1idXR0b246aG92ZXIgewogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTQgMzElIDkyJSkiLCJoc2woMjE3IDI1JSAyMiUpIil9OwogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDkwOTBiIiwiI2ZhZmFmYSIpfTsKICAgICAgICB9CgogICAgICAgIC50b29sYmFyLWJ1dHRvbjphY3RpdmUgewogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjM2YzZjQ2Iil9OwogICAgICAgIH0KCiAgICAgICAgLnpvb20tbGV2ZWwgewogICAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICAgIG1pbi13aWR0aDogNDhweDsKICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNSAxNiUgNDUlKSIsImhzbCgyMTUgMTYlIDc1JSkiKX07CiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgfQoKICAgICAgICAuaW1hZ2UtYXJlYSB7CiAgICAgICAgICBmbGV4OiAxOwogICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICAgIGN1cnNvcjogJHt0aGlzLnpvb20+MT90aGlzLmlzRHJhZ2dpbmc/ImdyYWJiaW5nIjoiZ3JhYiI6ImRlZmF1bHQifTsKICAgICAgICB9CgogICAgICAgIC5jaGVja2VyYm9hcmQgewogICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgaW5zZXQ6IDA7CiAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOgogICAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoNDVkZWcsICR7aC5iZFRoZW1lKCIjZjBmMGYwIiwiIzFhMWExYSIpfSAyNSUsIHRyYW5zcGFyZW50IDI1JSksCiAgICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgtNDVkZWcsICR7aC5iZFRoZW1lKCIjZjBmMGYwIiwiIzFhMWExYSIpfSAyNSUsIHRyYW5zcGFyZW50IDI1JSksCiAgICAgICAgICAgIGxpbmVhci1ncmFkaWVudCg0NWRlZywgdHJhbnNwYXJlbnQgNzUlLCAke2guYmRUaGVtZSgiI2YwZjBmMCIsIiMxYTFhMWEiKX0gNzUlKSwKICAgICAgICAgICAgbGluZWFyLWdyYWRpZW50KC00NWRlZywgdHJhbnNwYXJlbnQgNzUlLCAke2guYmRUaGVtZSgiI2YwZjBmMCIsIiMxYTFhMWEiKX0gNzUlKTsKICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogMTZweCAxNnB4OwogICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwLCAwIDhweCwgOHB4IC04cHgsIC04cHggMHB4OwogICAgICAgICAgb3BhY2l0eTogMC4zOwogICAgICAgIH0KCiAgICAgICAgLmltYWdlLXdyYXBwZXIgewogICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgaW5zZXQ6IDA7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoJHt0aGlzLnBhblh9cHgsICR7dGhpcy5wYW5ZfXB4KSBzY2FsZSgke3RoaXMuem9vbX0pOwogICAgICAgICAgdHJhbnNpdGlvbjogJHt0aGlzLmlzRHJhZ2dpbmc/Im5vbmUiOiJ0cmFuc2Zvcm0gMC4ycyBlYXNlIn07CiAgICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgICAgIH0KCiAgICAgICAgLmltYWdlLXdyYXBwZXIgaW1nIHsKICAgICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICAgIG1heC1oZWlnaHQ6IDEwMCU7CiAgICAgICAgICBvYmplY3QtZml0OiAke3RoaXMuZml0fTsKICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICAgICAgLXdlYmtpdC11c2VyLWRyYWc6IG5vbmU7CiAgICAgICAgfQoKICAgICAgICAuaW1hZ2Utd3JhcHBlciBpbWcuYWN0dWFsIHsKICAgICAgICAgIG1heC13aWR0aDogbm9uZTsKICAgICAgICAgIG1heC1oZWlnaHQ6IG5vbmU7CiAgICAgICAgICBvYmplY3QtZml0OiBub25lOwogICAgICAgIH0KCiAgICAgICAgLmxvYWRpbmctb3ZlcmxheSB7CiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICBpbnNldDogMDsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgyNTUsMjU1LDI1NSwwLjgpIiwicmdiYSgwLDAsMCwwLjYpIil9OwogICAgICAgIH0KCiAgICAgICAgLmxvYWRpbmctc3Bpbm5lciB7CiAgICAgICAgICB3aWR0aDogMzJweDsKICAgICAgICAgIGhlaWdodDogMzJweDsKICAgICAgICAgIGJvcmRlcjogM3B4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzNmM2Y0NiIpfTsKICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzYwYTVmYSIpfTsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgIGFuaW1hdGlvbjogc3BpbiAwLjhzIGxpbmVhciBpbmZpbml0ZTsKICAgICAgICB9CgogICAgICAgIEBrZXlmcmFtZXMgc3BpbiB7CiAgICAgICAgICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0KICAgICAgICB9CgogICAgICAgIC5lcnJvci1vdmVybGF5IHsKICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgIGluc2V0OiAwOwogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICBnYXA6IDhweDsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgICAgfQoKICAgICAgICAuZXJyb3Itb3ZlcmxheSAuZXJyb3ItaWNvbiB7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNkYzI2MjYiLCIjZjg3MTcxIil9OwogICAgICAgICAgZm9udC1zaXplOiAzMnB4OwogICAgICAgIH0KCiAgICAgICAgLmVycm9yLXRleHQgewogICAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIH0KCiAgICAgICAgLmltYWdlLWluZm8gewogICAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjYTFhMWFhIiwiIzcxNzE3YSIpfTsKICAgICAgICAgIHBhZGRpbmc6IDAgNHB4OwogICAgICAgIH0KICAgICAgPC9zdHlsZT4KCiAgICAgIDxkaXYgY2xhc3M9InZpZXdlci1jb250YWluZXIiPgogICAgICAgICR7dGhpcy5zaG93VG9vbGJhcj93YAogICAgICAgICAgPGRpdiBjbGFzcz0idG9vbGJhciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvb2xiYXItZ3JvdXAiPgogICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InRvb2xiYXItYnV0dG9uIiBAY2xpY2s9JHt0aGlzLnpvb21PdXR9IHRpdGxlPSJab29tIG91dCI+CiAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpab29tT3V0Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJ0b29sYmFyLWJ1dHRvbiIgQGNsaWNrPSR7dGhpcy5yZXNldFpvb219PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Inpvb20tbGV2ZWwiPiR7TWF0aC5yb3VuZCh0aGlzLnpvb20qMTAwKX0lPC9zcGFuPgogICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InRvb2xiYXItYnV0dG9uIiBAY2xpY2s9JHt0aGlzLnpvb21Jbn0gdGl0bGU9Ilpvb20gaW4iPgogICAgICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6Wm9vbUluIj48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvb2xiYXItZ3JvdXAiPgogICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InRvb2xiYXItYnV0dG9uIiBAY2xpY2s9JHt0aGlzLmZpdFRvU2NyZWVufSB0aXRsZT0iRml0IHRvIHNjcmVlbiI+CiAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpNYXhpbWl6ZSI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idG9vbGJhci1idXR0b24iIEBjbGljaz0ke3RoaXMuYWN0dWFsU2l6ZX0gdGl0bGU9IkFjdHVhbCBzaXplICgxMDAlKSI+CiAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpTY2FuIj48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvb2xiYXItZ3JvdXAiPgogICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InRvb2xiYXItYnV0dG9uIiBAY2xpY2s9JHt0aGlzLmRvd25sb2FkfSB0aXRsZT0iRG93bmxvYWQiPgogICAgICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6RG93bmxvYWQiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgJHt0aGlzLmltYWdlTmF0dXJhbFdpZHRoPjA/d2AKICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b29sYmFyLWdyb3VwIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpbWFnZS1pbmZvIj4ke3RoaXMuaW1hZ2VOYXR1cmFsV2lkdGh9IHggJHt0aGlzLmltYWdlTmF0dXJhbEhlaWdodH08L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgOiIifQoKICAgICAgICA8ZGl2CiAgICAgICAgICBjbGFzcz0iaW1hZ2UtYXJlYSIKICAgICAgICAgIEB3aGVlbD0ke3RoaXMuaGFuZGxlV2hlZWx9CiAgICAgICAgICBAbW91c2Vkb3duPSR7dGhpcy5oYW5kbGVNb3VzZURvd259CiAgICAgICAgICBAbW91c2Vtb3ZlPSR7dGhpcy5oYW5kbGVNb3VzZU1vdmV9CiAgICAgICAgICBAbW91c2V1cD0ke3RoaXMuaGFuZGxlTW91c2VVcH0KICAgICAgICAgIEBtb3VzZWxlYXZlPSR7dGhpcy5oYW5kbGVNb3VzZVVwfQogICAgICAgICAgQGRibGNsaWNrPSR7dGhpcy5oYW5kbGVEb3VibGVDbGlja30KICAgICAgICA+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjaGVja2VyYm9hcmQiPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iaW1hZ2Utd3JhcHBlciI+CiAgICAgICAgICAgICR7dGhpcy5zcmM/d2AKICAgICAgICAgICAgICA8aW1nCiAgICAgICAgICAgICAgICBjbGFzcz0iJHt0aGlzLmZpdD09PSJhY3R1YWwiPyJhY3R1YWwiOiIifSIKICAgICAgICAgICAgICAgIHNyYz0iJHt0aGlzLnNyY30iCiAgICAgICAgICAgICAgICBhbHQ9IiR7dGhpcy5hbHR9IgogICAgICAgICAgICAgICAgQGxvYWQ9JHt0aGlzLmhhbmRsZUltYWdlTG9hZH0KICAgICAgICAgICAgICAgIEBlcnJvcj0ke3RoaXMuaGFuZGxlSW1hZ2VFcnJvcn0KICAgICAgICAgICAgICAgIGRyYWdnYWJsZT0iZmFsc2UiCiAgICAgICAgICAgICAgLz4KICAgICAgICAgICAgYDoiIn0KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgJHt0aGlzLmxvYWRpbmcmJnRoaXMuc3JjP3dgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvYWRpbmctb3ZlcmxheSI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9hZGluZy1zcGlubmVyIj48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgOiIifQogICAgICAgICAgJHt0aGlzLmVycm9yP3dgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVycm9yLW92ZXJsYXkiPgogICAgICAgICAgICAgIDxkZWVzLWljb24gY2xhc3M9ImVycm9yLWljb24iIGljb249Imx1Y2lkZTpJbWFnZU9mZiI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImVycm9yLXRleHQiPiR7dGhpcy5lcnJvcn08L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYDoiIn0KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfXpvb21Jbigpe3RoaXMuem9vbT1NYXRoLm1pbigxMCx0aGlzLnpvb20qMS4yNSl9em9vbU91dCgpe3RoaXMuem9vbT1NYXRoLm1heCguMSx0aGlzLnpvb20vMS4yNSksdGhpcy56b29tPD0xJiYodGhpcy5wYW5YPTAsdGhpcy5wYW5ZPTApfXJlc2V0Wm9vbSgpe3RoaXMuem9vbT0xLHRoaXMucGFuWD0wLHRoaXMucGFuWT0wfWZpdFRvU2NyZWVuKCl7dGhpcy56b29tPTEsdGhpcy5wYW5YPTAsdGhpcy5wYW5ZPTAsdGhpcy5maXQ9ImNvbnRhaW4ifWFjdHVhbFNpemUoKXt0aGlzLnpvb209MSx0aGlzLnBhblg9MCx0aGlzLnBhblk9MCx0aGlzLmZpdD0iYWN0dWFsIn1kb3dubG9hZCgpe2lmKCF0aGlzLnNyYylyZXR1cm47bGV0IGxlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtsZS5ocmVmPXRoaXMuc3JjLGxlLmRvd25sb2FkPXRoaXMuc3JjLnNwbGl0KCIvIikucG9wKCl8fCJpbWFnZSIsbGUuY2xpY2soKX1oYW5kbGVJbWFnZUxvYWQobGUpe2xldCBRPWxlLnRhcmdldDt0aGlzLmxvYWRpbmc9ITEsdGhpcy5lcnJvcj0iIix0aGlzLmltYWdlTmF0dXJhbFdpZHRoPVEubmF0dXJhbFdpZHRoLHRoaXMuaW1hZ2VOYXR1cmFsSGVpZ2h0PVEubmF0dXJhbEhlaWdodH1oYW5kbGVJbWFnZUVycm9yKCl7dGhpcy5sb2FkaW5nPSExLHRoaXMuZXJyb3I9IkZhaWxlZCB0byBsb2FkIGltYWdlIn1oYW5kbGVXaGVlbChsZSl7bGUucHJldmVudERlZmF1bHQoKTtsZXQgUT1sZS5kZWx0YVk+MD8uOToxLjEsaWU9TWF0aC5taW4oMTAsTWF0aC5tYXgoLjEsdGhpcy56b29tKlEpKTt0aGlzLnpvb209aWUsdGhpcy56b29tPD0xJiYodGhpcy5wYW5YPTAsdGhpcy5wYW5ZPTApfWhhbmRsZU1vdXNlRG93bihsZSl7dGhpcy56b29tPD0xfHwodGhpcy5pc0RyYWdnaW5nPSEwLHRoaXMuZHJhZ1N0YXJ0WD1sZS5jbGllbnRYLHRoaXMuZHJhZ1N0YXJ0WT1sZS5jbGllbnRZLHRoaXMuZHJhZ1N0YXJ0UGFuWD10aGlzLnBhblgsdGhpcy5kcmFnU3RhcnRQYW5ZPXRoaXMucGFuWSl9aGFuZGxlTW91c2VNb3ZlKGxlKXt0aGlzLmlzRHJhZ2dpbmcmJih0aGlzLnBhblg9dGhpcy5kcmFnU3RhcnRQYW5YKyhsZS5jbGllbnRYLXRoaXMuZHJhZ1N0YXJ0WCksdGhpcy5wYW5ZPXRoaXMuZHJhZ1N0YXJ0UGFuWSsobGUuY2xpZW50WS10aGlzLmRyYWdTdGFydFkpKX1oYW5kbGVNb3VzZVVwKCl7dGhpcy5pc0RyYWdnaW5nPSExfWhhbmRsZURvdWJsZUNsaWNrKCl7dGhpcy56b29tPT09MT90aGlzLnpvb209MjoodGhpcy56b29tPTEsdGhpcy5wYW5YPTAsdGhpcy5wYW5ZPTApfXVwZGF0ZWQobGUpe3N1cGVyLnVwZGF0ZWQobGUpLGxlLmhhcygic3JjIikmJih0aGlzLmxvYWRpbmc9ITAsdGhpcy5lcnJvcj0iIix0aGlzLnpvb209MSx0aGlzLnBhblg9MCx0aGlzLnBhblk9MCx0aGlzLmltYWdlTmF0dXJhbFdpZHRoPTAsdGhpcy5pbWFnZU5hdHVyYWxIZWlnaHQ9MCl9c3RhdGlje2JpKGEsdCl9fTtyZXR1cm4gdWU9YX0pKCl9KTt2YXIgWHdhPWcoKCk9Pnt4bHQoKX0pO3ZhciBRd2EsSndhPWcoKCk9PntwZSgpO1F3YT1pKCgpPT53YAogIDxzdHlsZT4KICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgIHBhZGRpbmc6IDQ4cHg7CiAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjhmOWZhIiwiIzBhMGEwYSIpfTsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgZ2FwOiAzMnB4OwogICAgfQoKICAgIC5zZWN0aW9uIHsKICAgICAgbWF4LXdpZHRoOiA2MDBweDsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgfQoKICAgIC5zZWN0aW9uLXRpdGxlIHsKICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICBmb250LXdlaWdodDogNjAwOwogICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07CiAgICB9CgogICAgLnNlY3Rpb24tZGVzY3JpcHRpb24gewogICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICB9CgogICAgZGVlcy1hdWRpby12aWV3ZXIgewogICAgICBoZWlnaHQ6IDIwMHB4OwogICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMyNzI3MmEiKX07CiAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIH0KICA8L3N0eWxlPgoKICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+QXVkaW8gd2l0aCBXYXZlZm9ybTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj5BdWRpbyBwbGF5ZXIgd2l0aCB3YXZlZm9ybSB2aXN1YWxpemF0aW9uIGFuZCBmdWxsIHRyYW5zcG9ydCBjb250cm9scy48L2Rpdj4KICAgICAgPGRlZXMtYXVkaW8tdmlld2VyCiAgICAgICAgc3JjPSJodHRwczovL3d3dy5zb3VuZGhlbGl4LmNvbS9leGFtcGxlcy9tcDMvU291bmRIZWxpeC1Tb25nLTEubXAzIgogICAgICAgIHRpdGxlPSJTb3VuZEhlbGl4IFNvbmcgMSIKICAgICAgICBhcnRpc3Q9IlQuIFNjaHVlcmdlciIKICAgICAgPjwvZGVlcy1hdWRpby12aWV3ZXI+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+QXVkaW8gd2l0aG91dCBXYXZlZm9ybTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj5TaW1wbGUgYXVkaW8gcGxheWVyIHdpdGggYSBzZWVrYmFyIGluc3RlYWQgb2YgYSB3YXZlZm9ybS48L2Rpdj4KICAgICAgPGRlZXMtYXVkaW8tdmlld2VyCiAgICAgICAgc3JjPSJodHRwczovL3d3dy5zb3VuZGhlbGl4LmNvbS9leGFtcGxlcy9tcDMvU291bmRIZWxpeC1Tb25nLTIubXAzIgogICAgICAgIHRpdGxlPSJTb3VuZEhlbGl4IFNvbmcgMiIKICAgICAgICAuc2hvd1dhdmVmb3JtPSR7ITF9CiAgICAgID48L2RlZXMtYXVkaW8tdmlld2VyPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPk1pbmltYWwgQXVkaW8gUGxheWVyPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tZGVzY3JpcHRpb24iPk5vIHRpdGxlIG9yIGFydGlzdCBtZXRhZGF0YSDigJQganVzdCB0aGUgcGxheWVyLjwvZGl2PgogICAgICA8ZGVlcy1hdWRpby12aWV3ZXIKICAgICAgICBzcmM9Imh0dHBzOi8vd3d3LnNvdW5kaGVsaXguY29tL2V4YW1wbGVzL21wMy9Tb3VuZEhlbGl4LVNvbmctMy5tcDMiCiAgICAgID48L2RlZXMtYXVkaW8tdmlld2VyPgogICAgPC9kaXY+CiAgPC9kaXY+CmAsImRlbW8iKX0pO3ZhciBibixEcyxWZXMseWx0PWcoKCk9PntwZSgpO0dhKCk7SndhKCk7Ym49ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LERzPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxWZXM9KCgpPT57bGV0IHM9W25lKCJkZWVzLWF1ZGlvLXZpZXdlciIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdLEgsaz1bXSxTPVtdLEksUD1bXSxSPVtdLEssVj1bXSxXPVtdLG1lLEI9W10sVT1bXSxoZSxGPVtdLGo9W10sdWUsbGU9W10sUT1bXSxpZSx0ZT1bXSxlZT1bXSxrZSxYPVtdLFo9W107dmFyIHllPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzQXVkaW9WaWV3ZXIiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgcT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKCldLHA9W0woKV0sYz1bTCgpXSx4PVtMKHt0eXBlOkJvb2xlYW59KV0seT1bTCh7dHlwZTpCb29sZWFufSldLE49W0woe3R5cGU6Qm9vbGVhbn0pXSxPPVtZKCldLEg9W1koKV0sST1bWSgpXSxLPVtZKCldLG1lPVtZKCldLGhlPVtZKCldLHVlPVtZKCldLGllPVtZKCldLGtlPVtZKCldLGJuKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic3JjIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJzcmMiaW4gQSwiaGFzIiksZ2V0OmkoQT0+QS5zcmMsImdldCIpLHNldDppKChBLHNlKT0+e0Euc3JjPXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LG8sbCksYm4odGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0aXRsZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4idGl0bGUiaW4gQSwiaGFzIiksZ2V0OmkoQT0+QS50aXRsZSwiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS50aXRsZT1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSxkLHUpLGJuKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYXJ0aXN0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJhcnRpc3QiaW4gQSwiaGFzIiksZ2V0OmkoQT0+QS5hcnRpc3QsImdldCIpLHNldDppKChBLHNlKT0+e0EuYXJ0aXN0PXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LGIsdiksYm4odGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93V2F2ZWZvcm0iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+InNob3dXYXZlZm9ybSJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLnNob3dXYXZlZm9ybSwiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS5zaG93V2F2ZWZvcm09c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sbSxmKSxibih0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImF1dG9wbGF5IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJhdXRvcGxheSJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLmF1dG9wbGF5LCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLmF1dG9wbGF5PXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LE0seiksYm4odGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJsb29wIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJsb29wImluIEEsImhhcyIpLGdldDppKEE9PkEubG9vcCwiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS5sb29wPXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LEMsXyksYm4odGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpc1BsYXlpbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+ImlzUGxheWluZyJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLmlzUGxheWluZywiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS5pc1BsYXlpbmc9c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sJCxFKSxibih0aGlzLG51bGwsSCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImN1cnJlbnRUaW1lIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJjdXJyZW50VGltZSJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLmN1cnJlbnRUaW1lLCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLmN1cnJlbnRUaW1lPXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LGssUyksYm4odGhpcyxudWxsLEkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJkdXJhdGlvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4iZHVyYXRpb24iaW4gQSwiaGFzIiksZ2V0OmkoQT0+QS5kdXJhdGlvbiwiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS5kdXJhdGlvbj1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSxQLFIpLGJuKHRoaXMsbnVsbCxLLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidm9sdW1lIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEE9PiJ2b2x1bWUiaW4gQSwiaGFzIiksZ2V0OmkoQT0+QS52b2x1bWUsImdldCIpLHNldDppKChBLHNlKT0+e0Eudm9sdW1lPXNlfSwic2V0Iil9LG1ldGFkYXRhOnF9LFYsVyksYm4odGhpcyxudWxsLG1lLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNNdXRlZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4iaXNNdXRlZCJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLmlzTXV0ZWQsImdldCIpLHNldDppKChBLHNlKT0+e0EuaXNNdXRlZD1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSxCLFUpLGJuKHRoaXMsbnVsbCxoZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImxvYWRpbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+ImxvYWRpbmciaW4gQSwiaGFzIiksZ2V0OmkoQT0+QS5sb2FkaW5nLCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLmxvYWRpbmc9c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sRixqKSxibih0aGlzLG51bGwsdWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJlcnJvciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShBPT4iZXJyb3IiaW4gQSwiaGFzIiksZ2V0OmkoQT0+QS5lcnJvciwiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS5lcnJvcj1zZX0sInNldCIpfSxtZXRhZGF0YTpxfSxsZSxRKSxibih0aGlzLG51bGwsaWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ3YXZlZm9ybURhdGEiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+IndhdmVmb3JtRGF0YSJpbiBBLCJoYXMiKSxnZXQ6aShBPT5BLndhdmVmb3JtRGF0YSwiZ2V0Iiksc2V0OmkoKEEsc2UpPT57QS53YXZlZm9ybURhdGE9c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sdGUsZWUpLGJuKHRoaXMsbnVsbCxrZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6IndhdmVmb3JtUmVhZHkiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoQT0+IndhdmVmb3JtUmVhZHkiaW4gQSwiaGFzIiksZ2V0OmkoQT0+QS53YXZlZm9ybVJlYWR5LCJnZXQiKSxzZXQ6aSgoQSxzZSk9PntBLndhdmVmb3JtUmVhZHk9c2V9LCJzZXQiKX0sbWV0YWRhdGE6cX0sWCxaKSxibihudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpxfSxudWxsLHQpLHllPWE9ZS52YWx1ZSxxJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnF9KX1zdGF0aWMgZGVtbz1Rd2E7c3RhdGljIGRlbW9Hcm91cHM9WyJNZWRpYSJdOyNlPURzKHRoaXMsbywiIik7Z2V0IHNyYygpe3JldHVybiB0aGlzLiNlfXNldCBzcmMocSl7dGhpcy4jZT1xfSN0PShEcyh0aGlzLGwpLERzKHRoaXMsZCwiIikpO2dldCB0aXRsZSgpe3JldHVybiB0aGlzLiN0fXNldCB0aXRsZShxKXt0aGlzLiN0PXF9I2E9KERzKHRoaXMsdSksRHModGhpcyxiLCIiKSk7Z2V0IGFydGlzdCgpe3JldHVybiB0aGlzLiNhfXNldCBhcnRpc3QocSl7dGhpcy4jYT1xfSNzPShEcyh0aGlzLHYpLERzKHRoaXMsbSwhMCkpO2dldCBzaG93V2F2ZWZvcm0oKXtyZXR1cm4gdGhpcy4jc31zZXQgc2hvd1dhdmVmb3JtKHEpe3RoaXMuI3M9cX0jaT0oRHModGhpcyxmKSxEcyh0aGlzLE0sITEpKTtnZXQgYXV0b3BsYXkoKXtyZXR1cm4gdGhpcy4jaX1zZXQgYXV0b3BsYXkocSl7dGhpcy4jaT1xfSNyPShEcyh0aGlzLHopLERzKHRoaXMsQywhMSkpO2dldCBsb29wKCl7cmV0dXJuIHRoaXMuI3J9c2V0IGxvb3AocSl7dGhpcy4jcj1xfSNvPShEcyh0aGlzLF8pLERzKHRoaXMsJCwhMSkpO2dldCBpc1BsYXlpbmcoKXtyZXR1cm4gdGhpcy4jb31zZXQgaXNQbGF5aW5nKHEpe3RoaXMuI289cX0jbj0oRHModGhpcyxFKSxEcyh0aGlzLGssMCkpO2dldCBjdXJyZW50VGltZSgpe3JldHVybiB0aGlzLiNufXNldCBjdXJyZW50VGltZShxKXt0aGlzLiNuPXF9I2w9KERzKHRoaXMsUyksRHModGhpcyxQLDApKTtnZXQgZHVyYXRpb24oKXtyZXR1cm4gdGhpcy4jbH1zZXQgZHVyYXRpb24ocSl7dGhpcy4jbD1xfSNjPShEcyh0aGlzLFIpLERzKHRoaXMsViwxKSk7Z2V0IHZvbHVtZSgpe3JldHVybiB0aGlzLiNjfXNldCB2b2x1bWUocSl7dGhpcy4jYz1xfSNkPShEcyh0aGlzLFcpLERzKHRoaXMsQiwhMSkpO2dldCBpc011dGVkKCl7cmV0dXJuIHRoaXMuI2R9c2V0IGlzTXV0ZWQocSl7dGhpcy4jZD1xfSN1PShEcyh0aGlzLFUpLERzKHRoaXMsRiwhMSkpO2dldCBsb2FkaW5nKCl7cmV0dXJuIHRoaXMuI3V9c2V0IGxvYWRpbmcocSl7dGhpcy4jdT1xfSNwPShEcyh0aGlzLGopLERzKHRoaXMsbGUsIiIpKTtnZXQgZXJyb3IoKXtyZXR1cm4gdGhpcy4jcH1zZXQgZXJyb3IocSl7dGhpcy4jcD1xfSNoPShEcyh0aGlzLFEpLERzKHRoaXMsdGUsW10pKTtnZXQgd2F2ZWZvcm1EYXRhKCl7cmV0dXJuIHRoaXMuI2h9c2V0IHdhdmVmb3JtRGF0YShxKXt0aGlzLiNoPXF9I2Y9KERzKHRoaXMsZWUpLERzKHRoaXMsWCwhMSkpO2dldCB3YXZlZm9ybVJlYWR5KCl7cmV0dXJuIHRoaXMuI2Z9c2V0IHdhdmVmb3JtUmVhZHkocSl7dGhpcy4jZj1xfWF1ZGlvRWxlbWVudD0oRHModGhpcyxaKSxudWxsKTtjYW52YXNFbGVtZW50PW51bGw7YW5pbUZyYW1lSWQ9MDt2b2x1bWVCZWZvcmVNdXRlPTE7cmVuZGVyKCl7bGV0IHE9dGhpcy50aXRsZSYmdGhpcy5hcnRpc3Q/YCR7dGhpcy50aXRsZX0gXHUyMDE0ICR7dGhpcy5hcnRpc3R9YDp0aGlzLnRpdGxlfHx0aGlzLmFydGlzdHx8IiI7cmV0dXJuIHdgCiAgICAgIDxzdHlsZT4KICAgICAgICA6aG9zdCB7CiAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgc2Fucy1zZXJpZjsKICAgICAgICB9CgogICAgICAgIC52aWV3ZXItY29udGFpbmVyIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk3JSkiLCJoc2woMjE1IDIwJSAxMCUpIil9OwogICAgICAgIH0KCiAgICAgICAgLnRvb2xiYXIgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBnYXA6IDE2cHg7CiAgICAgICAgICBwYWRkaW5nOiAwIDE2cHg7CiAgICAgICAgICBoZWlnaHQ6IDQ4cHg7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsImhzbCgyMTUgMjAlIDE1JSkiKX07CiAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCJoc2woMjE3IDI1JSAyMiUpIil9OwogICAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgfQoKICAgICAgICAudG9vbGJhci1ncm91cCB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgIGdhcDogNHB4OwogICAgICAgIH0KCiAgICAgICAgLnRvb2xiYXItZ3JvdXAtLWVuZCB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgIGdhcDogNHB4OwogICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgICAgfQoKICAgICAgICAudG9vbGJhci1idXR0b24gewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgIHdpZHRoOiAzMnB4OwogICAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUgMTYlIDQ1JSkiLCJoc2woMjE1IDE2JSA3NSUpIil9OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICB9CgogICAgICAgIC50b29sYmFyLWJ1dHRvbiBkZWVzLWljb24gewogICAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgIH0KCiAgICAgICAgLnRvb2xiYXItYnV0dG9uOmhvdmVyIHsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjE0IDMxJSA5MiUpIiwiaHNsKDIxNyAyNSUgMjIlKSIpfTsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07CiAgICAgICAgfQoKICAgICAgICAudG9vbGJhci1idXR0b246YWN0aXZlIHsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzNmM2Y0NiIpfTsKICAgICAgICB9CgogICAgICAgIC50b29sYmFyLWJ1dHRvbi5hY3RpdmUgewogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE3IDkxJSA2MCUpIiwiaHNsKDIxMyA5MyUgNjglKSIpfTsKICAgICAgICB9CgogICAgICAgIC50b29sYmFyLXRpdGxlIHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUgMTYlIDQ1JSkiLCJoc2woMjE1IDE2JSA3NSUpIil9OwogICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICAgIG1pbi13aWR0aDogMDsKICAgICAgICB9CgogICAgICAgIC50aW1lLWRpc3BsYXkgewogICAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUgMTYlIDQ1JSkiLCJoc2woMjE1IDE2JSA3NSUpIil9OwogICAgICAgICAgbWluLXdpZHRoOiA5MHB4OwogICAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgfQoKICAgICAgICAudm9sdW1lLWdyb3VwIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgZ2FwOiA0cHg7CiAgICAgICAgfQoKICAgICAgICAudm9sdW1lLXNsaWRlciB7CiAgICAgICAgICB3aWR0aDogNzBweDsKICAgICAgICAgIGhlaWdodDogNHB4OwogICAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwogICAgICAgICAgYXBwZWFyYW5jZTogbm9uZTsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjE0IDMxJSA5MSUpIiwiaHNsKDIxNyAyNSUgMjIlKSIpfTsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgfQoKICAgICAgICAudm9sdW1lLXNsaWRlcjo6LXdlYmtpdC1zbGlkZXItdGh1bWIgewogICAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwogICAgICAgICAgd2lkdGg6IDEycHg7CiAgICAgICAgICBoZWlnaHQ6IDEycHg7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxNyA5MSUgNjAlKSIsImhzbCgyMTMgOTMlIDY4JSkiKX07CiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgfQoKICAgICAgICAudm9sdW1lLXNsaWRlcjo6LW1vei1yYW5nZS10aHVtYiB7CiAgICAgICAgICB3aWR0aDogMTJweDsKICAgICAgICAgIGhlaWdodDogMTJweDsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjE3IDkxJSA2MCUpIiwiaHNsKDIxMyA5MyUgNjglKSIpfTsKICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB9CgogICAgICAgIC5jb250ZW50LWFyZWEgewogICAgICAgICAgZmxleDogMTsKICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIH0KCiAgICAgICAgLndhdmVmb3JtLWNvbnRhaW5lciB7CiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICBpbnNldDogMDsKICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgfQoKICAgICAgICAud2F2ZWZvcm0tY29udGFpbmVyIGNhbnZhcyB7CiAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIH0KCiAgICAgICAgLnNlZWtiYXItY29udGFpbmVyIHsKICAgICAgICAgIHdpZHRoOiA4MCU7CiAgICAgICAgICBtYXgtd2lkdGg6IDYwMHB4OwogICAgICAgICAgaGVpZ2h0OiA2cHg7CiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxNCAzMSUgOTElKSIsImhzbCgyMTcgMjUlIDIyJSkiKX07CiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIH0KCiAgICAgICAgLnNlZWtiYXItZmlsbCB7CiAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxNyA5MSUgNjAlKSIsImhzbCgyMTMgOTMlIDY4JSkiKX07CiAgICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgICAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjFzIGxpbmVhcjsKICAgICAgICB9CgogICAgICAgIC5lcnJvci1vdmVybGF5IHsKICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgIGluc2V0OiAwOwogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICBnYXA6IDhweDsKICAgICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgICAgfQoKICAgICAgICAuZXJyb3Itb3ZlcmxheSAuZXJyb3ItaWNvbiB7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNkYzI2MjYiLCIjZjg3MTcxIil9OwogICAgICAgICAgZm9udC1zaXplOiAzMnB4OwogICAgICAgIH0KCiAgICAgICAgLmVycm9yLXRleHQgewogICAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIH0KCiAgICAgICAgLmxvYWRpbmctb3ZlcmxheSB7CiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICBpbnNldDogMDsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgfQoKICAgICAgICAubG9hZGluZy1zcGlubmVyIHsKICAgICAgICAgIHdpZHRoOiAzMnB4OwogICAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgICAgYm9yZGVyOiAzcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgyMTQgMzElIDg2JSkiLCJoc2woMjE3IDI1JSAyOCUpIil9OwogICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTcgOTElIDYwJSkiLCJoc2woMjEzIDkzJSA2OCUpIil9OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgICAgYW5pbWF0aW9uOiBzcGluIDAuOHMgbGluZWFyIGluZmluaXRlOwogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyBzcGluIHsKICAgICAgICAgIHRvIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfQogICAgICAgIH0KICAgICAgPC9zdHlsZT4KCiAgICAgIDxkaXYgY2xhc3M9InZpZXdlci1jb250YWluZXIiPgogICAgICAgIDxkaXYgY2xhc3M9InRvb2xiYXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0idG9vbGJhci1ncm91cCI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InRvb2xiYXItYnV0dG9uIiBAY2xpY2s9JHt0aGlzLnRvZ2dsZVBsYXl9PgogICAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOiR7dGhpcy5pc1BsYXlpbmc/IlBhdXNlIjoiUGxheSJ9Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0aW1lLWRpc3BsYXkiPgogICAgICAgICAgICAgICR7dGhpcy5mb3JtYXRUaW1lKHRoaXMuY3VycmVudFRpbWUpfSAvICR7dGhpcy5mb3JtYXRUaW1lKHRoaXMuZHVyYXRpb24pfQogICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAke3E/d2AKICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRvb2xiYXItdGl0bGUiPiR7cX08L3NwYW4+CiAgICAgICAgICBgOiIifQoKICAgICAgICAgIDxkaXYgY2xhc3M9InRvb2xiYXItZ3JvdXAtLWVuZCI+CiAgICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgICBjbGFzcz0idG9vbGJhci1idXR0b24gJHt0aGlzLmxvb3A/ImFjdGl2ZSI6IiJ9IgogICAgICAgICAgICAgIEBjbGljaz0ke3RoaXMudG9nZ2xlTG9vcH0KICAgICAgICAgICAgICB0aXRsZT0iTG9vcCIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOlJlcGVhdCI+PC9kZWVzLWljb24+CiAgICAgICAgICAgIDwvYnV0dG9uPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0idm9sdW1lLWdyb3VwIj4KICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJ0b29sYmFyLWJ1dHRvbiIgQGNsaWNrPSR7dGhpcy50b2dnbGVNdXRlfSB0aXRsZT0iJHt0aGlzLmlzTXV0ZWQ/IlVubXV0ZSI6Ik11dGUifSI+CiAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZToke3RoaXMuaXNNdXRlZHx8dGhpcy52b2x1bWU9PT0wPyJWb2x1bWVYIjp0aGlzLnZvbHVtZTwuNT8iVm9sdW1lMSI6IlZvbHVtZTIifSI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgPGlucHV0CiAgICAgICAgICAgICAgICBjbGFzcz0idm9sdW1lLXNsaWRlciIKICAgICAgICAgICAgICAgIHR5cGU9InJhbmdlIgogICAgICAgICAgICAgICAgbWluPSIwIgogICAgICAgICAgICAgICAgbWF4PSIxIgogICAgICAgICAgICAgICAgc3RlcD0iMC4wMSIKICAgICAgICAgICAgICAgIC52YWx1ZT0ke1N0cmluZyh0aGlzLmlzTXV0ZWQ/MDp0aGlzLnZvbHVtZSl9CiAgICAgICAgICAgICAgICBAaW5wdXQ9JHt0aGlzLmhhbmRsZVZvbHVtZUNoYW5nZX0KICAgICAgICAgICAgICAvPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50LWFyZWEiPgogICAgICAgICAgJHt0aGlzLmVycm9yP3dgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVycm9yLW92ZXJsYXkiPgogICAgICAgICAgICAgIDxkZWVzLWljb24gY2xhc3M9ImVycm9yLWljb24iIGljb249Imx1Y2lkZTpNdXNpY09mZiI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImVycm9yLXRleHQiPiR7dGhpcy5lcnJvcn08L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYDp0aGlzLmxvYWRpbmc/d2AKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9hZGluZy1vdmVybGF5Ij4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2FkaW5nLXNwaW5uZXIiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIGA6dGhpcy5zaG93V2F2ZWZvcm0/d2AKICAgICAgICAgICAgPGRpdiBjbGFzcz0id2F2ZWZvcm0tY29udGFpbmVyIiBAY2xpY2s9JHt0aGlzLmhhbmRsZVdhdmVmb3JtQ2xpY2t9PgogICAgICAgICAgICAgIDxjYW52YXM+PC9jYW52YXM+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYDp3YAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWVrYmFyLWNvbnRhaW5lciIgQGNsaWNrPSR7dGhpcy5oYW5kbGVTZWVrYmFyQ2xpY2t9PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlZWtiYXItZmlsbCIgc3R5bGU9IndpZHRoOiAke3RoaXMuZHVyYXRpb24/dGhpcy5jdXJyZW50VGltZS90aGlzLmR1cmF0aW9uKjEwMDowfSUiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIGB9CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1hc3luYyBjb25uZWN0ZWRDYWxsYmFjaygpe2F3YWl0IHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5zcmMmJnRoaXMuaW5pdEF1ZGlvKCl9YXN5bmMgZGlzY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuY2xlYW51cCgpfWFzeW5jIHVwZGF0ZWQocSl7c3VwZXIudXBkYXRlZChxKSxxLmhhcygic3JjIikmJnRoaXMuc3JjJiYodGhpcy5jbGVhbnVwKCksdGhpcy5pbml0QXVkaW8oKSksKHEuaGFzKCJ3YXZlZm9ybURhdGEiKXx8cS5oYXMoImN1cnJlbnRUaW1lIikpJiZ0aGlzLmRyYXdXYXZlZm9ybSgpfXBsYXkoKXt0aGlzLmF1ZGlvRWxlbWVudD8ucGxheSgpfXBhdXNlKCl7dGhpcy5hdWRpb0VsZW1lbnQ/LnBhdXNlKCl9dG9nZ2xlUGxheSgpe3RoaXMuaXNQbGF5aW5nP3RoaXMucGF1c2UoKTp0aGlzLnBsYXkoKX1zZWVrKHEpe3RoaXMuYXVkaW9FbGVtZW50JiYodGhpcy5hdWRpb0VsZW1lbnQuY3VycmVudFRpbWU9cSl9c2V0Vm9sdW1lKHEpe3RoaXMudm9sdW1lPU1hdGgubWF4KDAsTWF0aC5taW4oMSxxKSksdGhpcy5hdWRpb0VsZW1lbnQmJih0aGlzLmF1ZGlvRWxlbWVudC52b2x1bWU9dGhpcy52b2x1bWUpLHRoaXMudm9sdW1lPjAmJih0aGlzLmlzTXV0ZWQ9ITEpfXRvZ2dsZU11dGUoKXt0aGlzLmlzTXV0ZWQ/KHRoaXMuaXNNdXRlZD0hMSx0aGlzLnZvbHVtZT10aGlzLnZvbHVtZUJlZm9yZU11dGV8fC41LHRoaXMuYXVkaW9FbGVtZW50JiYodGhpcy5hdWRpb0VsZW1lbnQudm9sdW1lPXRoaXMudm9sdW1lKSk6KHRoaXMudm9sdW1lQmVmb3JlTXV0ZT10aGlzLnZvbHVtZSx0aGlzLmlzTXV0ZWQ9ITAsdGhpcy5hdWRpb0VsZW1lbnQmJih0aGlzLmF1ZGlvRWxlbWVudC52b2x1bWU9MCkpfXRvZ2dsZUxvb3AoKXt0aGlzLmxvb3A9IXRoaXMubG9vcCx0aGlzLmF1ZGlvRWxlbWVudCYmKHRoaXMuYXVkaW9FbGVtZW50Lmxvb3A9dGhpcy5sb29wKX1pbml0QXVkaW8oKXt0aGlzLmF1ZGlvRWxlbWVudD1uZXcgQXVkaW8sdGhpcy5hdWRpb0VsZW1lbnQuY3Jvc3NPcmlnaW49ImFub255bW91cyIsdGhpcy5hdWRpb0VsZW1lbnQuc3JjPXRoaXMuc3JjLHRoaXMuYXVkaW9FbGVtZW50LnZvbHVtZT10aGlzLmlzTXV0ZWQ/MDp0aGlzLnZvbHVtZSx0aGlzLmF1ZGlvRWxlbWVudC5sb29wPXRoaXMubG9vcCx0aGlzLmF1ZGlvRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJsb2FkZWRtZXRhZGF0YSIsKCk9Pnt0aGlzLmR1cmF0aW9uPXRoaXMuYXVkaW9FbGVtZW50LmR1cmF0aW9uLHRoaXMubG9hZGluZz0hMX0pLHRoaXMuYXVkaW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBsYXkiLCgpPT57dGhpcy5pc1BsYXlpbmc9ITAsdGhpcy5zdGFydFRpbWVVcGRhdGUoKX0pLHRoaXMuYXVkaW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBhdXNlIiwoKT0+e3RoaXMuaXNQbGF5aW5nPSExLHRoaXMuc3RvcFRpbWVVcGRhdGUoKX0pLHRoaXMuYXVkaW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImVuZGVkIiwoKT0+e3RoaXMuaXNQbGF5aW5nPSExLHRoaXMuc3RvcFRpbWVVcGRhdGUoKX0pLHRoaXMuYXVkaW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwoKT0+e3RoaXMuZXJyb3I9IkZhaWxlZCB0byBsb2FkIGF1ZGlvIix0aGlzLmxvYWRpbmc9ITF9KSx0aGlzLmF1ZGlvRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ0aW1ldXBkYXRlIiwoKT0+e3RoaXMuY3VycmVudFRpbWU9dGhpcy5hdWRpb0VsZW1lbnQuY3VycmVudFRpbWV9KSx0aGlzLmF1dG9wbGF5JiZ0aGlzLmF1ZGlvRWxlbWVudC5wbGF5KCkuY2F0Y2goKCk9Pnt9KSx0aGlzLnNob3dXYXZlZm9ybSYmdGhpcy5sb2FkV2F2ZWZvcm0oKX1hc3luYyBsb2FkV2F2ZWZvcm0oKXt0cnl7dGhpcy5sb2FkaW5nPSEwO2xldCBBPWF3YWl0KGF3YWl0IGZldGNoKHRoaXMuc3JjKSkuYXJyYXlCdWZmZXIoKSxzZT1uZXcgQXVkaW9Db250ZXh0LGFlPShhd2FpdCBzZS5kZWNvZGVBdWRpb0RhdGEoQSkpLmdldENoYW5uZWxEYXRhKDApLFRlPTIwMCxSZT1NYXRoLmZsb29yKGFlLmxlbmd0aC9UZSksQmU9W107Zm9yKGxldCBEZT0wO0RlPFRlO0RlKyspe2xldCBfZT0wO2ZvcihsZXQgQ2U9MDtDZTxSZTtDZSsrKV9lKz1NYXRoLmFicyhhZVtEZSpSZStDZV0pO0JlLnB1c2goX2UvUmUpfWxldCBHZT1NYXRoLm1heCguLi5CZSk7dGhpcy53YXZlZm9ybURhdGE9QmUubWFwKERlPT5HZT4wP0RlL0dlOjApLHRoaXMud2F2ZWZvcm1SZWFkeT0hMCx0aGlzLmxvYWRpbmc9ITEsYXdhaXQgc2UuY2xvc2UoKX1jYXRjaHt0aGlzLndhdmVmb3JtUmVhZHk9ITEsdGhpcy5sb2FkaW5nPSExfX1kcmF3V2F2ZWZvcm0oKXtpZighdGhpcy5zaG93V2F2ZWZvcm18fCF0aGlzLndhdmVmb3JtUmVhZHkpcmV0dXJuO2xldCBxPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiY2FudmFzIik7aWYoIXEpcmV0dXJuO3RoaXMuY2FudmFzRWxlbWVudD1xO2xldCBBPXEucGFyZW50RWxlbWVudCxzZT13aW5kb3cuZGV2aWNlUGl4ZWxSYXRpb3x8MSxvZT1BLmNsaWVudFdpZHRoLGFlPUEuY2xpZW50SGVpZ2h0O3Eud2lkdGg9b2Uqc2UscS5oZWlnaHQ9YWUqc2U7bGV0IFRlPXEuZ2V0Q29udGV4dCgiMmQiKTtpZighVGUpcmV0dXJuO1RlLnNjYWxlKHNlLHNlKSxUZS5jbGVhclJlY3QoMCwwLG9lLGFlKTtsZXQgUmU9dGhpcy53YXZlZm9ybURhdGEubGVuZ3RoO2lmKFJlPT09MClyZXR1cm47bGV0IEJlPW9lL1JlLEdlPXRoaXMuZHVyYXRpb24+MD90aGlzLmN1cnJlbnRUaW1lL3RoaXMuZHVyYXRpb246MCxEZT1NYXRoLmZsb29yKEdlKlJlKSxfZT1kb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygidGhlbWUtZGFyayIpfHx3aW5kb3cubWF0Y2hNZWRpYSgiKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSIpLm1hdGNoZXMsQ2U9X2U/ImhzbCgyMTMgOTMlIDY4JSkiOiJoc2woMjE3IDkxJSA2MCUpIix2ZT1fZT8iaHNsKDIxNyAyNSUgMjIlKSI6ImhzbCgyMTQgMzElIDg2JSkiO2ZvcihsZXQgYmU9MDtiZTxSZTtiZSsrKXtsZXQgRWU9dGhpcy53YXZlZm9ybURhdGFbYmVdLGplPU1hdGgubWF4KDIsRWUqKGFlLTQpKSxXZT1iZSpCZSxzdD0oYWUtamUpLzI7VGUuZmlsbFN0eWxlPWJlPERlP0NlOnZlLFRlLmZpbGxSZWN0KFdlKy41LHN0LEJlLTEsamUpfX1oYW5kbGVXYXZlZm9ybUNsaWNrKHEpe2xldCBBPXEuY3VycmVudFRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxzZT0ocS5jbGllbnRYLUEubGVmdCkvQS53aWR0aDt0aGlzLnNlZWsoc2UqdGhpcy5kdXJhdGlvbil9aGFuZGxlU2Vla2JhckNsaWNrKHEpe2xldCBBPXEuY3VycmVudFRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxzZT0ocS5jbGllbnRYLUEubGVmdCkvQS53aWR0aDt0aGlzLnNlZWsoc2UqdGhpcy5kdXJhdGlvbil9aGFuZGxlVm9sdW1lQ2hhbmdlKHEpe2xldCBBPXBhcnNlRmxvYXQocS50YXJnZXQudmFsdWUpO3RoaXMuc2V0Vm9sdW1lKEEpfXN0YXJ0VGltZVVwZGF0ZSgpe3RoaXMuc3RvcFRpbWVVcGRhdGUoKTtsZXQgcT1pKCgpPT57dGhpcy5hdWRpb0VsZW1lbnQmJnRoaXMuaXNQbGF5aW5nJiYodGhpcy5jdXJyZW50VGltZT10aGlzLmF1ZGlvRWxlbWVudC5jdXJyZW50VGltZSx0aGlzLmFuaW1GcmFtZUlkPXJlcXVlc3RBbmltYXRpb25GcmFtZShxKSl9LCJ1cGRhdGUiKTt0aGlzLmFuaW1GcmFtZUlkPXJlcXVlc3RBbmltYXRpb25GcmFtZShxKX1zdG9wVGltZVVwZGF0ZSgpe3RoaXMuYW5pbUZyYW1lSWQmJihjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLmFuaW1GcmFtZUlkKSx0aGlzLmFuaW1GcmFtZUlkPTApfWZvcm1hdFRpbWUocSl7aWYoIWlzRmluaXRlKHEpfHxxPDApcmV0dXJuIjA6MDAiO2xldCBBPU1hdGguZmxvb3IocS82MCksc2U9TWF0aC5mbG9vcihxJTYwKTtyZXR1cm5gJHtBfToke3NlLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfWB9Y2xlYW51cCgpe3RoaXMuc3RvcFRpbWVVcGRhdGUoKSx0aGlzLmF1ZGlvRWxlbWVudCYmKHRoaXMuYXVkaW9FbGVtZW50LnBhdXNlKCksdGhpcy5hdWRpb0VsZW1lbnQuc3JjPSIiLHRoaXMuYXVkaW9FbGVtZW50PW51bGwpLHRoaXMuaXNQbGF5aW5nPSExLHRoaXMuY3VycmVudFRpbWU9MCx0aGlzLmR1cmF0aW9uPTAsdGhpcy53YXZlZm9ybURhdGE9W10sdGhpcy53YXZlZm9ybVJlYWR5PSExfXN0YXRpY3tEcyhhLHQpfX07cmV0dXJuIHllPWF9KSgpfSk7dmFyIGVrYT1nKCgpPT57eWx0KCl9KTt2YXIgdGthLGFrYT1nKCgpPT57cGUoKTt0a2E9aSgoKT0+d2AKICA8c3R5bGU+CiAgICAuZGVtby1jb250YWluZXIgewogICAgICBwYWRkaW5nOiA0OHB4OwogICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y4ZjlmYSIsIiMwYTBhMGEiKX07CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgIGdhcDogMzJweDsKICAgIH0KCiAgICAuc2VjdGlvbiB7CiAgICAgIG1heC13aWR0aDogODAwcHg7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBtYXJnaW46IDAgYXV0bzsKICAgIH0KCiAgICAuc2VjdGlvbi10aXRsZSB7CiAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTA5MGIiLCIjZmFmYWZhIil9OwogICAgfQoKICAgIC5zZWN0aW9uLWRlc2NyaXB0aW9uIHsKICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgfQogIDwvc3R5bGU+CgogIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5WaWRlbyB3aXRoIEN1c3RvbSBDb250cm9sczwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj5BIHZpZGVvIHBsYXllciB3aXRoIG92ZXJsYXkgY29udHJvbHMsIHNlZWtpbmcsIGFuZCB2b2x1bWUgYWRqdXN0bWVudC48L2Rpdj4KICAgICAgPGRlZXMtdmlkZW8tdmlld2VyCiAgICAgICAgc3JjPSJodHRwczovL2NvbW1vbmRhdGFzdG9yYWdlLmdvb2dsZWFwaXMuY29tL2d0di12aWRlb3MtYnVja2V0L3NhbXBsZS9CaWdCdWNrQnVubnkubXA0IgogICAgICAgIHBvc3Rlcj0iaHR0cHM6Ly9jb21tb25kYXRhc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9ndHYtdmlkZW9zLWJ1Y2tldC9zYW1wbGUvaW1hZ2VzL0JpZ0J1Y2tCdW5ueS5qcGciCiAgICAgID48L2RlZXMtdmlkZW8tdmlld2VyPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPkF1dG9wbGF5IE11dGVkPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tZGVzY3JpcHRpb24iPlZpZGVvIHRoYXQgYXV0b3BsYXlzIG11dGVkLCBjb21tb25seSB1c2VkIGZvciBwcmV2aWV3cy48L2Rpdj4KICAgICAgPGRlZXMtdmlkZW8tdmlld2VyCiAgICAgICAgc3JjPSJodHRwczovL2NvbW1vbmRhdGFzdG9yYWdlLmdvb2dsZWFwaXMuY29tL2d0di12aWRlb3MtYnVja2V0L3NhbXBsZS9FbGVwaGFudHNEcmVhbS5tcDQiCiAgICAgICAgcG9zdGVyPSJodHRwczovL2NvbW1vbmRhdGFzdG9yYWdlLmdvb2dsZWFwaXMuY29tL2d0di12aWRlb3MtYnVja2V0L3NhbXBsZS9pbWFnZXMvRWxlcGhhbnRzRHJlYW0uanBnIgogICAgICAgIC5hdXRvcGxheT0keyEwfQogICAgICAgIC5tdXRlZD0keyEwfQogICAgICA+PC9kZWVzLXZpZGVvLXZpZXdlcj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5OYXRpdmUgQ29udHJvbHM8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1kZXNjcmlwdGlvbiI+VmlkZW8gdXNpbmcgYnJvd3Nlci1uYXRpdmUgY29udHJvbHMgaW5zdGVhZCBvZiBjdXN0b20gb3ZlcmxheS48L2Rpdj4KICAgICAgPGRlZXMtdmlkZW8tdmlld2VyCiAgICAgICAgc3JjPSJodHRwczovL2NvbW1vbmRhdGFzdG9yYWdlLmdvb2dsZWFwaXMuY29tL2d0di12aWRlb3MtYnVja2V0L3NhbXBsZS9Gb3JCaWdnZXJCbGF6ZXMubXA0IgogICAgICAgIC5zaG93Q29udHJvbHM9JHshMX0KICAgICAgPjwvZGVlcy12aWRlby12aWV3ZXI+CiAgICA8L2Rpdj4KICA8L2Rpdj4KYCwiZGVtbyIpfSk7dmFyIHRsLFVzLFVlcyx3bHQ9ZygoKT0+e3BlKCk7R2EoKTtha2EoKTt0bD1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sVXM9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LFVlcz0oKCk9PntsZXQgcz1bbmUoImRlZXMtdmlkZW8tdmlld2VyIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W10sSCxrPVtdLFM9W10sSSxQPVtdLFI9W10sSyxWPVtdLFc9W10sbWUsQj1bXSxVPVtdLGhlLEY9W10saj1bXSx1ZSxsZT1bXSxRPVtdLGllLHRlPVtdLGVlPVtdO3ZhciBrZT1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1ZpZGVvVmlld2VyIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IFg9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCgpXSxwPVtMKCldLGM9W0woe3R5cGU6Qm9vbGVhbn0pXSx4PVtMKHt0eXBlOkJvb2xlYW59KV0seT1bTCh7dHlwZTpCb29sZWFufSldLE49W0woe3R5cGU6Qm9vbGVhbn0pXSxPPVtZKCldLEg9W1koKV0sST1bWSgpXSxLPVtZKCldLG1lPVtZKCldLGhlPVtZKCldLHVlPVtZKCldLGllPVtZKCldLHRsKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic3JjIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFo9PiJzcmMiaW4gWiwiaGFzIiksZ2V0OmkoWj0+Wi5zcmMsImdldCIpLHNldDppKChaLHllKT0+e1ouc3JjPXllfSwic2V0Iil9LG1ldGFkYXRhOlh9LG8sbCksdGwodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJwb3N0ZXIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoWj0+InBvc3RlciJpbiBaLCJoYXMiKSxnZXQ6aShaPT5aLnBvc3RlciwiZ2V0Iiksc2V0OmkoKFoseWUpPT57Wi5wb3N0ZXI9eWV9LCJzZXQiKX0sbWV0YWRhdGE6WH0sZCx1KSx0bCh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dDb250cm9scyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShaPT4ic2hvd0NvbnRyb2xzImluIFosImhhcyIpLGdldDppKFo9Plouc2hvd0NvbnRyb2xzLCJnZXQiKSxzZXQ6aSgoWix5ZSk9PntaLnNob3dDb250cm9scz15ZX0sInNldCIpfSxtZXRhZGF0YTpYfSxiLHYpLHRsKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYXV0b3BsYXkiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoWj0+ImF1dG9wbGF5ImluIFosImhhcyIpLGdldDppKFo9PlouYXV0b3BsYXksImdldCIpLHNldDppKChaLHllKT0+e1ouYXV0b3BsYXk9eWV9LCJzZXQiKX0sbWV0YWRhdGE6WH0sbSxmKSx0bCh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Imxvb3AiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoWj0+Imxvb3AiaW4gWiwiaGFzIiksZ2V0OmkoWj0+Wi5sb29wLCJnZXQiKSxzZXQ6aSgoWix5ZSk9PntaLmxvb3A9eWV9LCJzZXQiKX0sbWV0YWRhdGE6WH0sTSx6KSx0bCh0aGlzLG51bGwsTix7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im11dGVkIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFo9PiJtdXRlZCJpbiBaLCJoYXMiKSxnZXQ6aShaPT5aLm11dGVkLCJnZXQiKSxzZXQ6aSgoWix5ZSk9PntaLm11dGVkPXllfSwic2V0Iil9LG1ldGFkYXRhOlh9LEMsXyksdGwodGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpc1BsYXlpbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoWj0+ImlzUGxheWluZyJpbiBaLCJoYXMiKSxnZXQ6aShaPT5aLmlzUGxheWluZywiZ2V0Iiksc2V0OmkoKFoseWUpPT57Wi5pc1BsYXlpbmc9eWV9LCJzZXQiKX0sbWV0YWRhdGE6WH0sJCxFKSx0bCh0aGlzLG51bGwsSCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImN1cnJlbnRUaW1lIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFo9PiJjdXJyZW50VGltZSJpbiBaLCJoYXMiKSxnZXQ6aShaPT5aLmN1cnJlbnRUaW1lLCJnZXQiKSxzZXQ6aSgoWix5ZSk9PntaLmN1cnJlbnRUaW1lPXllfSwic2V0Iil9LG1ldGFkYXRhOlh9LGssUyksdGwodGhpcyxudWxsLEkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJkdXJhdGlvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShaPT4iZHVyYXRpb24iaW4gWiwiaGFzIiksZ2V0OmkoWj0+Wi5kdXJhdGlvbiwiZ2V0Iiksc2V0OmkoKFoseWUpPT57Wi5kdXJhdGlvbj15ZX0sInNldCIpfSxtZXRhZGF0YTpYfSxQLFIpLHRsKHRoaXMsbnVsbCxLLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidm9sdW1lIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFo9PiJ2b2x1bWUiaW4gWiwiaGFzIiksZ2V0OmkoWj0+Wi52b2x1bWUsImdldCIpLHNldDppKChaLHllKT0+e1oudm9sdW1lPXllfSwic2V0Iil9LG1ldGFkYXRhOlh9LFYsVyksdGwodGhpcyxudWxsLG1lLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibG9hZGluZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShaPT4ibG9hZGluZyJpbiBaLCJoYXMiKSxnZXQ6aShaPT5aLmxvYWRpbmcsImdldCIpLHNldDppKChaLHllKT0+e1oubG9hZGluZz15ZX0sInNldCIpfSxtZXRhZGF0YTpYfSxCLFUpLHRsKHRoaXMsbnVsbCxoZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImVycm9yIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFo9PiJlcnJvciJpbiBaLCJoYXMiKSxnZXQ6aShaPT5aLmVycm9yLCJnZXQiKSxzZXQ6aSgoWix5ZSk9PntaLmVycm9yPXllfSwic2V0Iil9LG1ldGFkYXRhOlh9LEYsaiksdGwodGhpcyxudWxsLHVlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNGdWxsc2NyZWVuIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFo9PiJpc0Z1bGxzY3JlZW4iaW4gWiwiaGFzIiksZ2V0OmkoWj0+Wi5pc0Z1bGxzY3JlZW4sImdldCIpLHNldDppKChaLHllKT0+e1ouaXNGdWxsc2NyZWVuPXllfSwic2V0Iil9LG1ldGFkYXRhOlh9LGxlLFEpLHRsKHRoaXMsbnVsbCxpZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNvbnRyb2xzVmlzaWJsZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShaPT4iY29udHJvbHNWaXNpYmxlImluIFosImhhcyIpLGdldDppKFo9PlouY29udHJvbHNWaXNpYmxlLCJnZXQiKSxzZXQ6aSgoWix5ZSk9PntaLmNvbnRyb2xzVmlzaWJsZT15ZX0sInNldCIpfSxtZXRhZGF0YTpYfSx0ZSxlZSksdGwobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6WH0sbnVsbCx0KSxrZT1hPWUudmFsdWUsWCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpYfSl9c3RhdGljIGRlbW89dGthO3N0YXRpYyBkZW1vR3JvdXBzPVsiTWVkaWEiXTsjZT1Vcyh0aGlzLG8sIiIpO2dldCBzcmMoKXtyZXR1cm4gdGhpcy4jZX1zZXQgc3JjKFgpe3RoaXMuI2U9WH0jdD0oVXModGhpcyxsKSxVcyh0aGlzLGQsIiIpKTtnZXQgcG9zdGVyKCl7cmV0dXJuIHRoaXMuI3R9c2V0IHBvc3RlcihYKXt0aGlzLiN0PVh9I2E9KFVzKHRoaXMsdSksVXModGhpcyxiLCEwKSk7Z2V0IHNob3dDb250cm9scygpe3JldHVybiB0aGlzLiNhfXNldCBzaG93Q29udHJvbHMoWCl7dGhpcy4jYT1YfSNzPShVcyh0aGlzLHYpLFVzKHRoaXMsbSwhMSkpO2dldCBhdXRvcGxheSgpe3JldHVybiB0aGlzLiNzfXNldCBhdXRvcGxheShYKXt0aGlzLiNzPVh9I2k9KFVzKHRoaXMsZiksVXModGhpcyxNLCExKSk7Z2V0IGxvb3AoKXtyZXR1cm4gdGhpcy4jaX1zZXQgbG9vcChYKXt0aGlzLiNpPVh9I3I9KFVzKHRoaXMseiksVXModGhpcyxDLCExKSk7Z2V0IG11dGVkKCl7cmV0dXJuIHRoaXMuI3J9c2V0IG11dGVkKFgpe3RoaXMuI3I9WH0jbz0oVXModGhpcyxfKSxVcyh0aGlzLCQsITEpKTtnZXQgaXNQbGF5aW5nKCl7cmV0dXJuIHRoaXMuI299c2V0IGlzUGxheWluZyhYKXt0aGlzLiNvPVh9I249KFVzKHRoaXMsRSksVXModGhpcyxrLDApKTtnZXQgY3VycmVudFRpbWUoKXtyZXR1cm4gdGhpcy4jbn1zZXQgY3VycmVudFRpbWUoWCl7dGhpcy4jbj1YfSNsPShVcyh0aGlzLFMpLFVzKHRoaXMsUCwwKSk7Z2V0IGR1cmF0aW9uKCl7cmV0dXJuIHRoaXMuI2x9c2V0IGR1cmF0aW9uKFgpe3RoaXMuI2w9WH0jYz0oVXModGhpcyxSKSxVcyh0aGlzLFYsMSkpO2dldCB2b2x1bWUoKXtyZXR1cm4gdGhpcy4jY31zZXQgdm9sdW1lKFgpe3RoaXMuI2M9WH0jZD0oVXModGhpcyxXKSxVcyh0aGlzLEIsITApKTtnZXQgbG9hZGluZygpe3JldHVybiB0aGlzLiNkfXNldCBsb2FkaW5nKFgpe3RoaXMuI2Q9WH0jdT0oVXModGhpcyxVKSxVcyh0aGlzLEYsIiIpKTtnZXQgZXJyb3IoKXtyZXR1cm4gdGhpcy4jdX1zZXQgZXJyb3IoWCl7dGhpcy4jdT1YfSNwPShVcyh0aGlzLGopLFVzKHRoaXMsbGUsITEpKTtnZXQgaXNGdWxsc2NyZWVuKCl7cmV0dXJuIHRoaXMuI3B9c2V0IGlzRnVsbHNjcmVlbihYKXt0aGlzLiNwPVh9I2g9KFVzKHRoaXMsUSksVXModGhpcyx0ZSwhMCkpO2dldCBjb250cm9sc1Zpc2libGUoKXtyZXR1cm4gdGhpcy4jaH1zZXQgY29udHJvbHNWaXNpYmxlKFgpe3RoaXMuI2g9WH1oaWRlQ29udHJvbHNUaW1lcj0oVXModGhpcyxlZSksbnVsbCk7dmlkZW9FbGVtZW50PW51bGw7cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxzdHlsZT4KICAgICAgICA6aG9zdCB7CiAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgc2Fucy1zZXJpZjsKICAgICAgICB9CgogICAgICAgIC52aWRlby1jb250YWluZXIgewogICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICBhc3BlY3QtcmF0aW86IDE2IC8gOTsKICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDA7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIH0KCiAgICAgICAgdmlkZW8gewogICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICBvYmplY3QtZml0OiBjb250YWluOwogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgfQoKICAgICAgICAub3ZlcmxheSB7CiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICBpbnNldDogMDsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB9CgogICAgICAgIC5jZW50ZXItcGxheSB7CiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICB0b3A6IDUwJTsKICAgICAgICAgIGxlZnQ6IDUwJTsKICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgICAgICAgd2lkdGg6IDY0cHg7CiAgICAgICAgICBoZWlnaHQ6IDY0cHg7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNik7CiAgICAgICAgICBjb2xvcjogI2ZmZmZmZjsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZSwgdHJhbnNmb3JtIDAuMnMgZWFzZTsKICAgICAgICAgIG9wYWNpdHk6ICR7dGhpcy5pc1BsYXlpbmc/MDoxfTsKICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiAke3RoaXMuaXNQbGF5aW5nPyJub25lIjoiYXV0byJ9OwogICAgICAgIH0KCiAgICAgICAgLmNlbnRlci1wbGF5IGRlZXMtaWNvbiB7CiAgICAgICAgICBmb250LXNpemU6IDI4cHg7CiAgICAgICAgfQoKICAgICAgICAuY2VudGVyLXBsYXk6aG92ZXIgewogICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjgpOwogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgc2NhbGUoMS4xKTsKICAgICAgICB9CgogICAgICAgIC5jb250cm9scy1iYXIgewogICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50LCByZ2JhKDAsIDAsIDAsIDAuNykpOwogICAgICAgICAgcGFkZGluZzogMjRweCAxMnB4IDEycHg7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgIGdhcDogOHB4OwogICAgICAgICAgb3BhY2l0eTogJHt0aGlzLmNvbnRyb2xzVmlzaWJsZXx8IXRoaXMuaXNQbGF5aW5nPzE6MH07CiAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTsKICAgICAgICB9CgogICAgICAgIC5zZWVrYmFyLXJvdyB7CiAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgIGhlaWdodDogNHB4OwogICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpOwogICAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIH0KCiAgICAgICAgLnNlZWtiYXItcm93OmhvdmVyIHsKICAgICAgICAgIGhlaWdodDogNnB4OwogICAgICAgIH0KCiAgICAgICAgLnNlZWtiYXItcHJvZ3Jlc3MgewogICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiMzYjgyZjYiLCIjNjBhNWZhIil9OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgfQoKICAgICAgICAuY29udHJvbHMtcm93IHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgfQoKICAgICAgICAuY3RybC1idXR0b24gewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgIHdpZHRoOiAzMnB4OwogICAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgICBjb2xvcjogI2ZmZmZmZjsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xNXMgZWFzZTsKICAgICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIH0KCiAgICAgICAgLmN0cmwtYnV0dG9uIGRlZXMtaWNvbiB7CiAgICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgfQoKICAgICAgICAuY3RybC1idXR0b246aG92ZXIgewogICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKICAgICAgICB9CgogICAgICAgIC50aW1lLWRpc3BsYXkgewogICAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtczsKICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7CiAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIH0KCiAgICAgICAgLnNwYWNlciB7CiAgICAgICAgICBmbGV4OiAxOwogICAgICAgIH0KCiAgICAgICAgLnZvbHVtZS1ncm91cCB7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgIGdhcDogNHB4OwogICAgICAgIH0KCiAgICAgICAgLnZvbHVtZS1zbGlkZXIgewogICAgICAgICAgd2lkdGg6IDYwcHg7CiAgICAgICAgICBoZWlnaHQ6IDRweDsKICAgICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICAgICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7CiAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIH0KCiAgICAgICAgLnZvbHVtZS1zbGlkZXI6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHsKICAgICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICAgICAgICAgIHdpZHRoOiAxMnB4OwogICAgICAgICAgaGVpZ2h0OiAxMnB4OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjsKICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB9CgogICAgICAgIC52b2x1bWUtc2xpZGVyOjotbW96LXJhbmdlLXRodW1iIHsKICAgICAgICAgIHdpZHRoOiAxMnB4OwogICAgICAgICAgaGVpZ2h0OiAxMnB4OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjsKICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB9CgogICAgICAgIC5sb2FkaW5nLW92ZXJsYXkgewogICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgaW5zZXQ6IDA7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjMpOwogICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgfQoKICAgICAgICAubG9hZGluZy1zcGlubmVyIHsKICAgICAgICAgIHdpZHRoOiA0MHB4OwogICAgICAgICAgaGVpZ2h0OiA0MHB4OwogICAgICAgICAgYm9yZGVyOiAzcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpOwogICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogI2ZmZmZmZjsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgIGFuaW1hdGlvbjogc3BpbiAwLjhzIGxpbmVhciBpbmZpbml0ZTsKICAgICAgICB9CgogICAgICAgIEBrZXlmcmFtZXMgc3BpbiB7CiAgICAgICAgICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0KICAgICAgICB9CgogICAgICAgIC5lcnJvci1vdmVybGF5IHsKICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgIGluc2V0OiAwOwogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICBnYXA6IDhweDsKICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNik7CiAgICAgICAgfQoKICAgICAgICAuZXJyb3Itb3ZlcmxheSBkZWVzLWljb24gewogICAgICAgICAgY29sb3I6ICNmODcxNzE7CiAgICAgICAgICBmb250LXNpemU6IDMycHg7CiAgICAgICAgfQoKICAgICAgICAuZXJyb3ItdGV4dCB7CiAgICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgfQogICAgICA8L3N0eWxlPgoKICAgICAgPGRpdgogICAgICAgIGNsYXNzPSJ2aWRlby1jb250YWluZXIiCiAgICAgICAgQG1vdXNlbW92ZT0ke3RoaXMuaGFuZGxlTW91c2VNb3ZlfQogICAgICAgIEBtb3VzZWxlYXZlPSR7dGhpcy5oYW5kbGVNb3VzZUxlYXZlfQogICAgICA+CiAgICAgICAgPHZpZGVvCiAgICAgICAgICAuc3JjPSR7dGhpcy5zcmN9CiAgICAgICAgICAucG9zdGVyPSR7dGhpcy5wb3N0ZXJ9CiAgICAgICAgICAubXV0ZWQ9JHt0aGlzLm11dGVkfQogICAgICAgICAgLmxvb3A9JHt0aGlzLmxvb3B9CiAgICAgICAgICA/YXV0b3BsYXk9JHt0aGlzLmF1dG9wbGF5fQogICAgICAgICAgP2NvbnRyb2xzPSR7IXRoaXMuc2hvd0NvbnRyb2xzfQogICAgICAgICAgcGxheXNpbmxpbmUKICAgICAgICAgIEBsb2FkZWRtZXRhZGF0YT0ke3RoaXMuaGFuZGxlTG9hZGVkTWV0YWRhdGF9CiAgICAgICAgICBAcGxheT0ke3RoaXMuaGFuZGxlUGxheX0KICAgICAgICAgIEBwYXVzZT0ke3RoaXMuaGFuZGxlUGF1c2V9CiAgICAgICAgICBAZW5kZWQ9JHt0aGlzLmhhbmRsZUVuZGVkfQogICAgICAgICAgQHRpbWV1cGRhdGU9JHt0aGlzLmhhbmRsZVRpbWVVcGRhdGV9CiAgICAgICAgICBAZXJyb3I9JHt0aGlzLmhhbmRsZUVycm9yfQogICAgICAgICAgQHdhaXRpbmc9JHsoKT0+e3RoaXMubG9hZGluZz0hMH19CiAgICAgICAgICBAY2FucGxheT0keygpPT57dGhpcy5sb2FkaW5nPSExfX0KICAgICAgICA+PC92aWRlbz4KCiAgICAgICAgJHt0aGlzLnNob3dDb250cm9scz93YAogICAgICAgICAgPGRpdiBjbGFzcz0ib3ZlcmxheSIgQGNsaWNrPSR7dGhpcy5oYW5kbGVPdmVybGF5Q2xpY2t9PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjZW50ZXItcGxheSI+CiAgICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6UGxheSI+PC9kZWVzLWljb24+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbHMtYmFyIiBAY2xpY2s9JHtYPT5YLnN0b3BQcm9wYWdhdGlvbigpfT4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWVrYmFyLXJvdyIgQGNsaWNrPSR7dGhpcy5oYW5kbGVTZWVrfT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlZWtiYXItcHJvZ3Jlc3MiIHN0eWxlPSJ3aWR0aDogJHt0aGlzLmR1cmF0aW9uP3RoaXMuY3VycmVudFRpbWUvdGhpcy5kdXJhdGlvbioxMDA6MH0lIj48L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbHMtcm93Ij4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImN0cmwtYnV0dG9uIiBAY2xpY2s9JHt0aGlzLnRvZ2dsZVBsYXl9PgogICAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZToke3RoaXMuaXNQbGF5aW5nPyJQYXVzZSI6IlBsYXkifSI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KCiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGltZS1kaXNwbGF5Ij4KICAgICAgICAgICAgICAgICAgJHt0aGlzLmZvcm1hdFRpbWUodGhpcy5jdXJyZW50VGltZSl9IC8gJHt0aGlzLmZvcm1hdFRpbWUodGhpcy5kdXJhdGlvbil9CiAgICAgICAgICAgICAgICA8L3NwYW4+CgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNwYWNlciI+PC9zcGFuPgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InZvbHVtZS1ncm91cCI+CiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImN0cmwtYnV0dG9uIiBAY2xpY2s9JHt0aGlzLnRvZ2dsZU11dGV9PgogICAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOiR7dGhpcy5tdXRlZHx8dGhpcy52b2x1bWU9PT0wPyJWb2x1bWVYIjp0aGlzLnZvbHVtZTwuNT8iVm9sdW1lMSI6IlZvbHVtZTIifSI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgICAgICAgICBjbGFzcz0idm9sdW1lLXNsaWRlciIKICAgICAgICAgICAgICAgICAgICB0eXBlPSJyYW5nZSIKICAgICAgICAgICAgICAgICAgICBtaW49IjAiCiAgICAgICAgICAgICAgICAgICAgbWF4PSIxIgogICAgICAgICAgICAgICAgICAgIHN0ZXA9IjAuMDEiCiAgICAgICAgICAgICAgICAgICAgLnZhbHVlPSR7U3RyaW5nKHRoaXMubXV0ZWQ/MDp0aGlzLnZvbHVtZSl9CiAgICAgICAgICAgICAgICAgICAgQGlucHV0PSR7dGhpcy5oYW5kbGVWb2x1bWVDaGFuZ2V9CiAgICAgICAgICAgICAgICAgIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjdHJsLWJ1dHRvbiIgQGNsaWNrPSR7dGhpcy50b2dnbGVGdWxsc2NyZWVufSB0aXRsZT0iRnVsbHNjcmVlbiI+CiAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOiR7dGhpcy5pc0Z1bGxzY3JlZW4/Ik1pbmltaXplIjoiTWF4aW1pemUifSI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgOiIifQoKICAgICAgICAke3RoaXMubG9hZGluZyYmIXRoaXMuZXJyb3I/d2AKICAgICAgICAgIDxkaXYgY2xhc3M9ImxvYWRpbmctb3ZlcmxheSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvYWRpbmctc3Bpbm5lciI+PC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgOiIifQoKICAgICAgICAke3RoaXMuZXJyb3I/d2AKICAgICAgICAgIDxkaXYgY2xhc3M9ImVycm9yLW92ZXJsYXkiPgogICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpWaWRlb09mZiI+PC9kZWVzLWljb24+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlcnJvci10ZXh0Ij4ke3RoaXMuZXJyb3J9PC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgYDoiIn0KICAgICAgPC9kaXY+CiAgICBgfWFzeW5jIGZpcnN0VXBkYXRlZCgpe3RoaXMudmlkZW9FbGVtZW50PXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigidmlkZW8iKXx8bnVsbCxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJmdWxsc2NyZWVuY2hhbmdlIix0aGlzLmhhbmRsZUZ1bGxzY3JlZW5DaGFuZ2UpfWFzeW5jIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJmdWxsc2NyZWVuY2hhbmdlIix0aGlzLmhhbmRsZUZ1bGxzY3JlZW5DaGFuZ2UpLHRoaXMuaGlkZUNvbnRyb2xzVGltZXImJmNsZWFyVGltZW91dCh0aGlzLmhpZGVDb250cm9sc1RpbWVyKX1wbGF5KCl7dGhpcy52aWRlb0VsZW1lbnQ/LnBsYXkoKX1wYXVzZSgpe3RoaXMudmlkZW9FbGVtZW50Py5wYXVzZSgpfXRvZ2dsZVBsYXkoKXt0aGlzLmlzUGxheWluZz90aGlzLnBhdXNlKCk6dGhpcy5wbGF5KCl9c2VlayhYKXt0aGlzLnZpZGVvRWxlbWVudCYmKHRoaXMudmlkZW9FbGVtZW50LmN1cnJlbnRUaW1lPVgpfXNldFZvbHVtZShYKXt0aGlzLnZvbHVtZT1NYXRoLm1heCgwLE1hdGgubWluKDEsWCkpLHRoaXMudmlkZW9FbGVtZW50JiYodGhpcy52aWRlb0VsZW1lbnQudm9sdW1lPXRoaXMudm9sdW1lKX10b2dnbGVGdWxsc2NyZWVuKCl7bGV0IFg9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIudmlkZW8tY29udGFpbmVyIik7WCYmKHRoaXMuaXNGdWxsc2NyZWVuP2RvY3VtZW50LmV4aXRGdWxsc2NyZWVuPy4oKTpYLnJlcXVlc3RGdWxsc2NyZWVuPy4oKSl9aGFuZGxlTG9hZGVkTWV0YWRhdGEoKXt0aGlzLnZpZGVvRWxlbWVudCYmKHRoaXMuZHVyYXRpb249dGhpcy52aWRlb0VsZW1lbnQuZHVyYXRpb24sdGhpcy5sb2FkaW5nPSExKX1oYW5kbGVQbGF5KCl7dGhpcy5pc1BsYXlpbmc9ITAsdGhpcy5zY2hlZHVsZUhpZGVDb250cm9scygpfWhhbmRsZVBhdXNlKCl7dGhpcy5pc1BsYXlpbmc9ITEsdGhpcy5jb250cm9sc1Zpc2libGU9ITB9aGFuZGxlRW5kZWQoKXt0aGlzLmlzUGxheWluZz0hMSx0aGlzLmNvbnRyb2xzVmlzaWJsZT0hMH1oYW5kbGVUaW1lVXBkYXRlKCl7dGhpcy52aWRlb0VsZW1lbnQmJih0aGlzLmN1cnJlbnRUaW1lPXRoaXMudmlkZW9FbGVtZW50LmN1cnJlbnRUaW1lKX1oYW5kbGVFcnJvcigpe3RoaXMuZXJyb3I9IkZhaWxlZCB0byBsb2FkIHZpZGVvIix0aGlzLmxvYWRpbmc9ITF9aGFuZGxlT3ZlcmxheUNsaWNrKCl7dGhpcy50b2dnbGVQbGF5KCl9aGFuZGxlU2VlayhYKXtsZXQgWj1YLmN1cnJlbnRUYXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkseWU9KFguY2xpZW50WC1aLmxlZnQpL1oud2lkdGg7dGhpcy5zZWVrKHllKnRoaXMuZHVyYXRpb24pfWhhbmRsZVZvbHVtZUNoYW5nZShYKXtsZXQgWj1wYXJzZUZsb2F0KFgudGFyZ2V0LnZhbHVlKTt0aGlzLnNldFZvbHVtZShaKSx0aGlzLm11dGVkPVo9PT0wfXRvZ2dsZU11dGUoKXt0aGlzLm11dGVkPSF0aGlzLm11dGVkLHRoaXMudmlkZW9FbGVtZW50JiYodGhpcy52aWRlb0VsZW1lbnQubXV0ZWQ9dGhpcy5tdXRlZCl9aGFuZGxlTW91c2VNb3ZlKCl7dGhpcy5jb250cm9sc1Zpc2libGU9ITAsdGhpcy5zY2hlZHVsZUhpZGVDb250cm9scygpfWhhbmRsZU1vdXNlTGVhdmUoKXt0aGlzLmlzUGxheWluZyYmKHRoaXMuY29udHJvbHNWaXNpYmxlPSExKX1zY2hlZHVsZUhpZGVDb250cm9scygpe3RoaXMuaGlkZUNvbnRyb2xzVGltZXImJmNsZWFyVGltZW91dCh0aGlzLmhpZGVDb250cm9sc1RpbWVyKSx0aGlzLmlzUGxheWluZyYmKHRoaXMuaGlkZUNvbnRyb2xzVGltZXI9c2V0VGltZW91dCgoKT0+e3RoaXMuY29udHJvbHNWaXNpYmxlPSExfSwzZTMpKX1oYW5kbGVGdWxsc2NyZWVuQ2hhbmdlPWkoKCk9Pnt0aGlzLmlzRnVsbHNjcmVlbj0hIWRvY3VtZW50LmZ1bGxzY3JlZW5FbGVtZW50fSwiaGFuZGxlRnVsbHNjcmVlbkNoYW5nZSIpO2Zvcm1hdFRpbWUoWCl7aWYoIWlzRmluaXRlKFgpfHxYPDApcmV0dXJuIjA6MDAiO2xldCBaPU1hdGguZmxvb3IoWC82MCkseWU9TWF0aC5mbG9vcihYJTYwKTtyZXR1cm5gJHtafToke3llLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfWB9c3RhdGlje1VzKGEsdCl9fTtyZXR1cm4ga2U9YX0pKCl9KTt2YXIgc2thPWcoKCk9Pnt3bHQoKX0pO3ZhciBXdSxuMmU9ZygoKT0+e3BlKCk7V3U9Y2xhc3N7c3RhdGlje2kodGhpcywiUGRmTWFuYWdlciIpfXN0YXRpYyBwZGZqc0xpYjtzdGF0aWMgaW5pdGlhbGl6ZWQ9ITE7c3RhdGljIGFzeW5jIGluaXRpYWxpemUoKXt0aGlzLmluaXRpYWxpemVkfHwodGhpcy5wZGZqc0xpYj1hd2FpdCBpbXBvcnQoImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vcGRmanMtZGlzdEA0LjAuMzc5Lytlc20iKSx0aGlzLnBkZmpzTGliLkdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyU3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL3BkZmpzLWRpc3RANC4wLjM3OS9idWlsZC9wZGYud29ya2VyLm1qcyIsdGhpcy5pbml0aWFsaXplZD0hMCl9c3RhdGljIGFzeW5jIGxvYWREb2N1bWVudChlKXtyZXR1cm4gYXdhaXQgdGhpcy5pbml0aWFsaXplKCksYXdhaXQgdGhpcy5wZGZqc0xpYi5nZXREb2N1bWVudChlKS5wcm9taXNlfXN0YXRpYyByZWxlYXNlRG9jdW1lbnQoZSl7fX19KTt2YXIgaWthLHJrYT1nKCgpPT57cGUoKTtodCgpO2lrYT1bcWUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICA6aG9zdCB7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB3aWR0aDogMTAwJTsKICAgICAgaGVpZ2h0OiA2MDBweDsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICBmb250LWZhbWlseTogJ0dlaXN0IFNhbnMnLCBzYW5zLXNlcmlmOwogICAgICBjb250YWluOiBsYXlvdXQgc3R5bGU7CiAgICB9CgogICAgZGVlcy10aWxlIHsKICAgICAgaGVpZ2h0OiAxMDAlOwogICAgfQoKICAgIC52aWV3ZXItY29udGFpbmVyOjpiZWZvcmUsCiAgICAudmlld2VyLWNvbnRhaW5lcjo6YWZ0ZXIgewogICAgICBjb250ZW50OiAnJzsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICBsZWZ0OiAwOwogICAgICByaWdodDogMDsKICAgICAgaGVpZ2h0OiA4cHg7CiAgICAgIHotaW5kZXg6IDU7CiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgfQoKICAgIC52aWV3ZXItY29udGFpbmVyOjpiZWZvcmUgewogICAgICB0b3A6IDA7CiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgKICAgICAgICB0byBib3R0b20sCiAgICAgICAgJHtoLmJkVGhlbWUoImhzbCgwIDAlIDAlIC8gMC4wOCkiLCJoc2woMCAwJSAwJSAvIDAuNCkiKX0sCiAgICAgICAgJHtoLmJkVGhlbWUoImhzbCgwIDAlIDAlIC8gMC4wMykiLCJoc2woMCAwJSAwJSAvIDAuMTIpIil9LAogICAgICAgIHRyYW5zcGFyZW50CiAgICAgICk7CiAgICB9CgogICAgLnZpZXdlci1jb250YWluZXI6OmFmdGVyIHsKICAgICAgYm90dG9tOiAwOwogICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoCiAgICAgICAgdG8gdG9wLAogICAgICAgICR7aC5iZFRoZW1lKCJoc2woMCAwJSAwJSAvIDAuMDgpIiwiaHNsKDAgMCUgMCUgLyAwLjQpIil9LAogICAgICAgICR7aC5iZFRoZW1lKCJoc2woMCAwJSAwJSAvIDAuMDMpIiwiaHNsKDAgMCUgMCUgLyAwLjEyKSIpfSwKICAgICAgICB0cmFuc3BhcmVudAogICAgICApOwogICAgfQoKICAgIC50b29sYmFyIHsKICAgICAgaGVpZ2h0OiA0MHB4OwogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICBwYWRkaW5nOiAwIDEycHg7CiAgICAgIGdhcDogMTJweDsKICAgIH0KCiAgICAudG9vbGJhci1ncm91cCB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGdhcDogNHB4OwogICAgfQoKICAgIC50b29sYmFyLWdyb3VwLS1lbmQgewogICAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIH0KCiAgICAudG9vbGJhci1idXR0b24gewogICAgICB3aWR0aDogMzJweDsKICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICBib3JkZXI6IG5vbmU7CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xNXMgZWFzZTsKICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1IDE2JSA0NSUpIiwiaHNsKDIxNSAxNiUgNzUlKSIpfTsKICAgIH0KCiAgICAudG9vbGJhci1idXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCkgewogICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxNCAzMSUgOTIlKSIsImhzbCgyMTcgMjUlIDIyJSkiKX07CiAgICB9CgogICAgLnRvb2xiYXItYnV0dG9uOmRpc2FibGVkIHsKICAgICAgb3BhY2l0eTogMC40OwogICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgfQoKICAgIC50b29sYmFyLWJ1dHRvbiBkZWVzLWljb24gewogICAgICBmb250LXNpemU6IDE2cHg7CiAgICB9CgogICAgLnBhZ2UtaW5mbyB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGdhcDogOHB4OwogICAgICBwYWRkaW5nOiAwIDhweDsKICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUgMTYlIDQ1JSkiLCJoc2woMjE1IDE2JSA3NSUpIil9OwogICAgfQoKICAgIC5wYWdlLWlucHV0IHsKICAgICAgd2lkdGg6IDQ4cHg7CiAgICAgIGhlaWdodDogMjhweDsKICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDIxNCAzMSUgODYlKSIsImhzbCgyMTcgMjUlIDI4JSkiKX07CiAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxMDAlKSIsImhzbCgyMTUgMjAlIDEyJSkiKX07CiAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIyMiA0NyUgMTElKSIsImhzbCgyMTAgMjAlIDk2JSkiKX07CiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgICAgb3V0bGluZTogbm9uZTsKICAgIH0KCiAgICAucGFnZS1pbnB1dDpmb2N1cyB7CiAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTcgOTElIDYwJSkiLCJoc2woMjEzIDkzJSA2OCUpIil9OwogICAgfQoKICAgIC5wYWdlLXNlcGFyYXRvciB7CiAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNSAxNiUgNjAlKSIsImhzbCgyMTUgMTYlIDUwJSkiKX07CiAgICB9CgogICAgLnpvb20tbGV2ZWwgewogICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIG1pbi13aWR0aDogNDhweDsKICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgfQoKICAgIC52aWV3ZXItY29udGFpbmVyIHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICBpbnNldDogMDsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIH0KCiAgICAuc2lkZWJhciB7CiAgICAgIHdpZHRoOiAyMDBweDsKICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMjE0IDMxJSA5MSUpIiwiaHNsKDIxNyAyNSUgMjIlKSIpfTsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICBvcmRlcjogMDsKICAgIH0KCiAgICAuc2lkZWJhci1yaWdodCAuc2lkZWJhciB7CiAgICAgIGJvcmRlci1yaWdodDogbm9uZTsKICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDIxNCAzMSUgOTElKSIsImhzbCgyMTcgMjUlIDIyJSkiKX07CiAgICAgIG9yZGVyOiAxOwogICAgfQoKICAgIC5zaWRlYmFyLWhlYWRlciB7CiAgICAgIGhlaWdodDogNDBweDsKICAgICAgcGFkZGluZzogMCAxMnB4OwogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDIxNCAzMSUgOTElKSIsImhzbCgyMTcgMjUlIDIyJSkiKX07CiAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1IDE2JSA0NSUpIiwiaHNsKDIxNSAxNiUgNzUlKSIpfTsKICAgIH0KCiAgICAuc2lkZWJhci1jbG9zZSB7CiAgICAgIHdpZHRoOiAyNHB4OwogICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1IDE2JSA0NSUpIiwiaHNsKDIxNSAxNiUgNzUlKSIpfTsKICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cyBlYXNlOwogICAgfQoKICAgIC5zaWRlYmFyLWNsb3NlOmhvdmVyIHsKICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTQgMzElIDkyJSkiLCJoc2woMjE3IDI1JSAyMiUpIil9OwogICAgfQoKICAgIC5zaWRlYmFyLWNsb3NlIGRlZXMtaWNvbiB7CiAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIH0KCiAgICAuc2lkZWJhci1jb250ZW50IHsKICAgICAgZmxleDogMTsKICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICBwYWRkaW5nOiAxMnB4OwogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbjsKICAgICAgbWluLWhlaWdodDogMDsKICAgIH0KCiAgICAudGh1bWJuYWlsIHsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgYm9yZGVyOiAycHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cyBlYXNlOwogICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTUlKSIsImhzbCgyMTUgMjAlIDE4JSkiKX07CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB3aWR0aDogMTAwJTsKICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDsKICAgICAgLyogRGVmYXVsdCBBNCBhc3BlY3QgcmF0aW8gKDI5N21tIC8gMjEwbW0g4omIIDEuNDE0KSAqLwogICAgICBtaW4taGVpZ2h0OiBjYWxjKDE3NnB4ICogMS40MTQpOwogICAgfQoKICAgIC50aHVtYm5haWw6bGFzdC1jaGlsZCB7CiAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICB9CgogICAgLnRodW1ibmFpbDpob3ZlciB7CiAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTQgMzElIDg2JSkiLCJoc2woMjE3IDI1JSAzNSUpIil9OwogICAgfQoKICAgIC50aHVtYm5haWwuYWN0aXZlIHsKICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNyA5MSUgNjAlKSIsImhzbCgyMTMgOTMlIDY4JSkiKX07CiAgICB9CgogICAgLnRodW1ibmFpbC1jYW52YXMgewogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGhlaWdodDogYXV0bzsKICAgICAgaW1hZ2UtcmVuZGVyaW5nOiAtd2Via2l0LW9wdGltaXplLWNvbnRyYXN0OwogICAgICBpbWFnZS1yZW5kZXJpbmc6IGNyaXNwLWVkZ2VzOwogICAgfQoKICAgIC50aHVtYm5haWwtbnVtYmVyIHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICBib3R0b206IDRweDsKICAgICAgcmlnaHQ6IDRweDsKICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC43KSIsInJnYmEoMCwgMCwgMCwgMC44KSIpfTsKICAgICAgY29sb3I6IHdoaXRlOwogICAgICBmb250LXNpemU6IDExcHg7CiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIHBhZGRpbmc6IDJweCA2cHg7CiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIH0KCiAgICAudmlld2VyLW1haW4gewogICAgICBmbGV4OiAxOwogICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICAgIHBhZGRpbmc6IDIwcHg7CiAgICAgIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoOwogICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluOwogICAgICBtaW4taGVpZ2h0OiAwOwogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB9CgogICAgLmxvYWRpbmctY29udGFpbmVyIHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIGhlaWdodDogMTAwJTsKICAgICAgZ2FwOiAxNnB4OwogICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUgMTYlIDQ1JSkiLCJoc2woMjE1IDE2JSA3NSUpIil9OwogICAgfQoKICAgIC5sb2FkaW5nLXNwaW5uZXIgewogICAgICB3aWR0aDogMzJweDsKICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgIGJvcmRlcjogM3B4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMjE0IDMxJSA4NiUpIiwiaHNsKDIxNyAyNSUgMjglKSIpfTsKICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTcgOTElIDYwJSkiLCJoc2woMjEzIDkzJSA2OCUpIil9OwogICAgICBhbmltYXRpb246IHNwaW4gMC44cyBsaW5lYXIgaW5maW5pdGU7CiAgICB9CgogICAgQGtleWZyYW1lcyBzcGluIHsKICAgICAgdG8gewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICAgIH0KICAgIH0KCiAgICAubG9hZGluZy10ZXh0IHsKICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICBmb250LXdlaWdodDogNTAwOwogICAgfQoKICAgIC5wYWdlcy1jb250YWluZXIgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICBnYXA6IDIwcHg7CiAgICB9CgogICAgLnBhZ2Utd3JhcHBlciB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICB3aWR0aDogMTAwJTsKICAgIH0KCiAgICAuY2FudmFzLWNvbnRhaW5lciB7CiAgICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgICBib3gtc2hhZG93OiAwIDJweCAxMnB4ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMSkiLCJyZ2JhKDAsIDAsIDAsIDAuMykiKX07CiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB9CgogICAgLnBhZ2UtY2FudmFzIHsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIGltYWdlLXJlbmRlcmluZzogLXdlYmtpdC1vcHRpbWl6ZS1jb250cmFzdDsKICAgICAgaW1hZ2UtcmVuZGVyaW5nOiBjcmlzcC1lZGdlczsKICAgIH0KCiAgICAvKiBUZXh0IGxheWVyIGZvciBzZWxlY3Rpb24gKi8KICAgIC50ZXh0LWxheWVyIHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICBpbnNldDogMDsKICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CiAgICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgICB0ZXh0LXNpemUtYWRqdXN0OiBub25lOwogICAgICBmb3JjZWQtY29sb3ItYWRqdXN0OiBub25lOwogICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7CiAgICAgIHotaW5kZXg6IDE7CiAgICAgIHVzZXItc2VsZWN0OiB0ZXh0OwogICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiB0ZXh0OwogICAgfQoKICAgIC50ZXh0LWxheWVyIHNwYW4sCiAgICAudGV4dC1sYXllciBiciB7CiAgICAgIGNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB3aGl0ZS1zcGFjZTogcHJlOwogICAgICBjdXJzb3I6IHRleHQ7CiAgICAgIHRyYW5zZm9ybS1vcmlnaW46IDAlIDAlOwogICAgICB1c2VyLXNlbGVjdDogdGV4dDsKICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogdGV4dDsKICAgIH0KCiAgICAudGV4dC1sYXllciA6OnNlbGVjdGlvbiB7CiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMTAwLCAyMDAsIDAuMyk7CiAgICB9CgogICAgLnRleHQtbGF5ZXIgYnI6OnNlbGVjdGlvbiB7CiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgfQoKICAgIC50ZXh0LWxheWVyIC5lbmRPZkNvbnRlbnQgewogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICBpbnNldDogMTAwJSAwIDA7CiAgICAgIHotaW5kZXg6IDA7CiAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICB9CgogICAgLnRleHQtbGF5ZXIuc2VsZWN0aW5nIC5lbmRPZkNvbnRlbnQgewogICAgICB0b3A6IDA7CiAgICB9CgogICAgLnBkZi12aWV3ZXIud2l0aC1zaWRlYmFyIC52aWV3ZXItbWFpbiB7CiAgICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgfQoKICAgIC5wZGYtZm9vdGVyIHsKICAgICAgaGVpZ2h0OiAyOHB4OwogICAgICBwYWRkaW5nOiAwIDE2cHg7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB9CgogICAgLnBkZi1mb290ZXItbGVmdCB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGdhcDogMTJweDsKICAgIH0KCiAgICAucGRmLWZvb3Rlci1sZWZ0IC5wZGYtZm9vdGVyLWl0ZW0gKyAucGRmLWZvb3Rlci1pdGVtIHsKICAgICAgcGFkZGluZy1sZWZ0OiAxMnB4OwogICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgfQoKICAgIC5wZGYtZm9vdGVyLWNlbnRlciB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgbGVmdDogNTAlOwogICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIHRyYW5zaXRpb246IG1hcmdpbi1sZWZ0IDAuMTVzIGVhc2U7CiAgICB9CgogICAgLnBkZi1mb290ZXItcmlnaHQgewogICAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIH0KCiAgICAucGRmLWZvb3Rlci1pdGVtIHsKICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIH0KCiAgICAucGRmLWZvb3Rlci1maWxlbmFtZSB7CiAgICAgIGZvbnQtZmFtaWx5OiAnSW50ZWwgT25lIE1vbm8nLCAnR2Vpc3QgTW9ubycsIG1vbm9zcGFjZTsKICAgICAgb3BhY2l0eTogMC43OwogICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIH0KICBgXX0pO3ZhciBva2EsbmthPWcoKCk9PntwZSgpO29rYT1pKCgpPT53YAogIDxzdHlsZT4KICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgIHBhZGRpbmc6IDIwcHg7CiAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDA7CiAgICB9CgogICAgLmRlbW8tc2VjdGlvbiB7CiAgICAgIG1hcmdpbi1ib3R0b206IDQwcHg7CiAgICB9CgogICAgaDMgewogICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIGNvbG9yOiAjZmFmYWZhOwogICAgfQoKICAgIGRlZXMtcGRmLXZpZXdlciB7CiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7CiAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIH0KCiAgICAudmlld2VyLXRhbGwgewogICAgICBoZWlnaHQ6IDgwMHB4OwogICAgfQoKICAgIC52aWV3ZXItY29tcGFjdCB7CiAgICAgIGhlaWdodDogNTAwcHg7CiAgICB9CiAgPC9zdHlsZT4KCiAgPGRpdiBjbGFzcz0iZGVtby1jb250YWluZXIiPgogICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgPGgzPkZ1bGwgRmVhdHVyZWQgUERGIFZpZXdlciB3aXRoIFRvb2xiYXI8L2gzPgogICAgICA8ZGVlcy1wZGYtdmlld2VyCiAgICAgICAgY2xhc3M9InZpZXdlci10YWxsIgogICAgICAgIHBkZlVybD0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL21vemlsbGEvcGRmLmpzL2JhMmVkZWFlL3dlYi9jb21wcmVzc2VkLnRyYWNlbW9ua2V5LXBsZGktMDkucGRmIgogICAgICAgIHNob3dUb29sYmFyPSJ0cnVlIgogICAgICAgIHNob3dTaWRlYmFyPSJmYWxzZSIKICAgICAgICBpbml0aWFsWm9vbT0icGFnZS1maXQiCiAgICAgID48L2RlZXMtcGRmLXZpZXdlcj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgIDxoMz5QREYgVmlld2VyIHdpdGggU2lkZWJhciBOYXZpZ2F0aW9uPC9oMz4KICAgICAgPGRlZXMtcGRmLXZpZXdlcgogICAgICAgIGNsYXNzPSJ2aWV3ZXItdGFsbCIKICAgICAgICBwZGZVcmw9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9tb3ppbGxhL3BkZi5qcy9iYTJlZGVhZS93ZWIvY29tcHJlc3NlZC50cmFjZW1vbmtleS1wbGRpLTA5LnBkZiIKICAgICAgICBzaG93VG9vbGJhcj0idHJ1ZSIKICAgICAgICBzaG93U2lkZWJhcj0idHJ1ZSIKICAgICAgICBpbml0aWFsWm9vbT0icGFnZS13aWR0aCIKICAgICAgPjwvZGVlcy1wZGYtdmlld2VyPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgPGgzPkNvbXBhY3QgVmlld2VyIHdpdGhvdXQgQ29udHJvbHM8L2gzPgogICAgICA8ZGVlcy1wZGYtdmlld2VyCiAgICAgICAgY2xhc3M9InZpZXdlci1jb21wYWN0IgogICAgICAgIHBkZlVybD0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL21vemlsbGEvcGRmLmpzL2JhMmVkZWFlL2V4YW1wbGVzL2xlYXJuaW5nL2hlbGxvd29ybGQucGRmIgogICAgICAgIHNob3dUb29sYmFyPSJmYWxzZSIKICAgICAgICBzaG93U2lkZWJhcj0iZmFsc2UiCiAgICAgICAgaW5pdGlhbFpvb209ImF1dG8iCiAgICAgID48L2RlZXMtcGRmLXZpZXdlcj4KICAgIDwvZGl2PgogIDwvZGl2PgpgLCJkZW1vIil9KTt2YXIgYWwsV3MsV2VzLGtsdD1nKCgpPT57cGUoKTtuMmUoKTtya2EoKTtua2EoKTtHYSgpO21yKCk7YWw9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LFdzPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxXZXM9KCgpPT57bGV0IHM9W25lKCJkZWVzLXBkZi12aWV3ZXIiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXSxPLCQ9W10sRT1bXSxILGs9W10sUz1bXSxJLFA9W10sUj1bXSxLLFY9W10sVz1bXSxtZSxCPVtdLFU9W10saGUsRj1bXSxqPVtdLHVlLGxlPVtdLFE9W10saWUsdGU9W10sZWU9W107dmFyIGtlPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzUGRmVmlld2VyIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IFg9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpTdHJpbmd9KV0scD1bTCh7dHlwZTpOdW1iZXJ9KV0sYz1bTCh7dHlwZTpTdHJpbmd9KV0seD1bTCh7dHlwZTpCb29sZWFufSldLHk9W0woe3R5cGU6Qm9vbGVhbn0pXSxOPVtMKHt0eXBlOlN0cmluZ30pXSxPPVtMKHt0eXBlOk51bWJlcn0pXSxIPVtMKHt0eXBlOk51bWJlcn0pXSxJPVtMKHt0eXBlOk51bWJlcn0pXSxLPVtMKHt0eXBlOkJvb2xlYW59KV0sbWU9W0woe3R5cGU6U3RyaW5nfSldLGhlPVtMKHt0eXBlOkFycmF5fSldLHVlPVtMKHt0eXBlOkFycmF5fSldLGllPVtMKHt0eXBlOk51bWJlcn0pXSxhbCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InBkZlVybCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShaPT4icGRmVXJsImluIFosImhhcyIpLGdldDppKFo9PloucGRmVXJsLCJnZXQiKSxzZXQ6aSgoWix5ZSk9PntaLnBkZlVybD15ZX0sInNldCIpfSxtZXRhZGF0YTpYfSxvLGwpLGFsKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaW5pdGlhbFBhZ2UiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoWj0+ImluaXRpYWxQYWdlImluIFosImhhcyIpLGdldDppKFo9PlouaW5pdGlhbFBhZ2UsImdldCIpLHNldDppKChaLHllKT0+e1ouaW5pdGlhbFBhZ2U9eWV9LCJzZXQiKX0sbWV0YWRhdGE6WH0sZCx1KSxhbCh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImluaXRpYWxab29tIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFo9PiJpbml0aWFsWm9vbSJpbiBaLCJoYXMiKSxnZXQ6aShaPT5aLmluaXRpYWxab29tLCJnZXQiKSxzZXQ6aSgoWix5ZSk9PntaLmluaXRpYWxab29tPXllfSwic2V0Iil9LG1ldGFkYXRhOlh9LGIsdiksYWwodGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzaG93VG9vbGJhciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShaPT4ic2hvd1Rvb2xiYXIiaW4gWiwiaGFzIiksZ2V0OmkoWj0+Wi5zaG93VG9vbGJhciwiZ2V0Iiksc2V0OmkoKFoseWUpPT57Wi5zaG93VG9vbGJhcj15ZX0sInNldCIpfSxtZXRhZGF0YTpYfSxtLGYpLGFsKHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2hvd1NpZGViYXIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoWj0+InNob3dTaWRlYmFyImluIFosImhhcyIpLGdldDppKFo9Plouc2hvd1NpZGViYXIsImdldCIpLHNldDppKChaLHllKT0+e1ouc2hvd1NpZGViYXI9eWV9LCJzZXQiKX0sbWV0YWRhdGE6WH0sTSx6KSxhbCh0aGlzLG51bGwsTix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNpZGViYXJQb3NpdGlvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShaPT4ic2lkZWJhclBvc2l0aW9uImluIFosImhhcyIpLGdldDppKFo9Plouc2lkZWJhclBvc2l0aW9uLCJnZXQiKSxzZXQ6aSgoWix5ZSk9PntaLnNpZGViYXJQb3NpdGlvbj15ZX0sInNldCIpfSxtZXRhZGF0YTpYfSxDLF8pLGFsKHRoaXMsbnVsbCxPLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY3VycmVudFBhZ2UiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoWj0+ImN1cnJlbnRQYWdlImluIFosImhhcyIpLGdldDppKFo9PlouY3VycmVudFBhZ2UsImdldCIpLHNldDppKChaLHllKT0+e1ouY3VycmVudFBhZ2U9eWV9LCJzZXQiKX0sbWV0YWRhdGE6WH0sJCxFKSxhbCh0aGlzLG51bGwsSCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InRvdGFsUGFnZXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoWj0+InRvdGFsUGFnZXMiaW4gWiwiaGFzIiksZ2V0OmkoWj0+Wi50b3RhbFBhZ2VzLCJnZXQiKSxzZXQ6aSgoWix5ZSk9PntaLnRvdGFsUGFnZXM9eWV9LCJzZXQiKX0sbWV0YWRhdGE6WH0sayxTKSxhbCh0aGlzLG51bGwsSSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImN1cnJlbnRab29tIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFo9PiJjdXJyZW50Wm9vbSJpbiBaLCJoYXMiKSxnZXQ6aShaPT5aLmN1cnJlbnRab29tLCJnZXQiKSxzZXQ6aSgoWix5ZSk9PntaLmN1cnJlbnRab29tPXllfSwic2V0Iil9LG1ldGFkYXRhOlh9LFAsUiksYWwodGhpcyxudWxsLEsse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJsb2FkaW5nIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFo9PiJsb2FkaW5nImluIFosImhhcyIpLGdldDppKFo9PloubG9hZGluZywiZ2V0Iiksc2V0OmkoKFoseWUpPT57Wi5sb2FkaW5nPXllfSwic2V0Iil9LG1ldGFkYXRhOlh9LFYsVyksYWwodGhpcyxudWxsLG1lLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZG9jdW1lbnRJZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShaPT4iZG9jdW1lbnRJZCJpbiBaLCJoYXMiKSxnZXQ6aShaPT5aLmRvY3VtZW50SWQsImdldCIpLHNldDppKChaLHllKT0+e1ouZG9jdW1lbnRJZD15ZX0sInNldCIpfSxtZXRhZGF0YTpYfSxCLFUpLGFsKHRoaXMsbnVsbCxoZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InRodW1ibmFpbERhdGEiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoWj0+InRodW1ibmFpbERhdGEiaW4gWiwiaGFzIiksZ2V0OmkoWj0+Wi50aHVtYm5haWxEYXRhLCJnZXQiKSxzZXQ6aSgoWix5ZSk9PntaLnRodW1ibmFpbERhdGE9eWV9LCJzZXQiKX0sbWV0YWRhdGE6WH0sRixqKSxhbCh0aGlzLG51bGwsdWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJwYWdlRGF0YSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShaPT4icGFnZURhdGEiaW4gWiwiaGFzIiksZ2V0OmkoWj0+Wi5wYWdlRGF0YSwiZ2V0Iiksc2V0OmkoKFoseWUpPT57Wi5wYWdlRGF0YT15ZX0sInNldCIpfSxtZXRhZGF0YTpYfSxsZSxRKSxhbCh0aGlzLG51bGwsaWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJwZGZGaWxlU2l6ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShaPT4icGRmRmlsZVNpemUiaW4gWiwiaGFzIiksZ2V0OmkoWj0+Wi5wZGZGaWxlU2l6ZSwiZ2V0Iiksc2V0OmkoKFoseWUpPT57Wi5wZGZGaWxlU2l6ZT15ZX0sInNldCIpfSxtZXRhZGF0YTpYfSx0ZSxlZSksYWwobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6WH0sbnVsbCx0KSxrZT1hPWUudmFsdWUsWCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpYfSl9c3RhdGljIGRlbW89b2thO3N0YXRpYyBkZW1vR3JvdXBzPVsiTWVkaWEiLCJQREYiXTtzdGF0aWMgc3R5bGVzPWlrYTsjZT1Xcyh0aGlzLG8sIiIpO2dldCBwZGZVcmwoKXtyZXR1cm4gdGhpcy4jZX1zZXQgcGRmVXJsKFgpe3RoaXMuI2U9WH0jdD0oV3ModGhpcyxsKSxXcyh0aGlzLGQsMSkpO2dldCBpbml0aWFsUGFnZSgpe3JldHVybiB0aGlzLiN0fXNldCBpbml0aWFsUGFnZShYKXt0aGlzLiN0PVh9I2E9KFdzKHRoaXMsdSksV3ModGhpcyxiLCJhdXRvIikpO2dldCBpbml0aWFsWm9vbSgpe3JldHVybiB0aGlzLiNhfXNldCBpbml0aWFsWm9vbShYKXt0aGlzLiNhPVh9I3M9KFdzKHRoaXMsdiksV3ModGhpcyxtLCEwKSk7Z2V0IHNob3dUb29sYmFyKCl7cmV0dXJuIHRoaXMuI3N9c2V0IHNob3dUb29sYmFyKFgpe3RoaXMuI3M9WH0jaT0oV3ModGhpcyxmKSxXcyh0aGlzLE0sITEpKTtnZXQgc2hvd1NpZGViYXIoKXtyZXR1cm4gdGhpcy4jaX1zZXQgc2hvd1NpZGViYXIoWCl7dGhpcy4jaT1YfSNyPShXcyh0aGlzLHopLFdzKHRoaXMsQywibGVmdCIpKTtnZXQgc2lkZWJhclBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuI3J9c2V0IHNpZGViYXJQb3NpdGlvbihYKXt0aGlzLiNyPVh9I289KFdzKHRoaXMsXyksV3ModGhpcywkLDEpKTtnZXQgY3VycmVudFBhZ2UoKXtyZXR1cm4gdGhpcy4jb31zZXQgY3VycmVudFBhZ2UoWCl7dGhpcy4jbz1YfSNuPShXcyh0aGlzLEUpLFdzKHRoaXMsaywxKSk7Z2V0IHRvdGFsUGFnZXMoKXtyZXR1cm4gdGhpcy4jbn1zZXQgdG90YWxQYWdlcyhYKXt0aGlzLiNuPVh9I2w9KFdzKHRoaXMsUyksV3ModGhpcyxQLDEpKTtnZXQgY3VycmVudFpvb20oKXtyZXR1cm4gdGhpcy4jbH1zZXQgY3VycmVudFpvb20oWCl7dGhpcy4jbD1YfSNjPShXcyh0aGlzLFIpLFdzKHRoaXMsViwhMSkpO2dldCBsb2FkaW5nKCl7cmV0dXJuIHRoaXMuI2N9c2V0IGxvYWRpbmcoWCl7dGhpcy4jYz1YfSNkPShXcyh0aGlzLFcpLFdzKHRoaXMsQiwiIikpO2dldCBkb2N1bWVudElkKCl7cmV0dXJuIHRoaXMuI2R9c2V0IGRvY3VtZW50SWQoWCl7dGhpcy4jZD1YfSN1PShXcyh0aGlzLFUpLFdzKHRoaXMsRixbXSkpO2dldCB0aHVtYm5haWxEYXRhKCl7cmV0dXJuIHRoaXMuI3V9c2V0IHRodW1ibmFpbERhdGEoWCl7dGhpcy4jdT1YfSNwPShXcyh0aGlzLGopLFdzKHRoaXMsbGUsW10pKTtnZXQgcGFnZURhdGEoKXtyZXR1cm4gdGhpcy4jcH1zZXQgcGFnZURhdGEoWCl7dGhpcy4jcD1YfSNoPShXcyh0aGlzLFEpLFdzKHRoaXMsdGUsMCkpO2dldCBwZGZGaWxlU2l6ZSgpe3JldHVybiB0aGlzLiNofXNldCBwZGZGaWxlU2l6ZShYKXt0aGlzLiNoPVh9cGRmRG9jdW1lbnQ9V3ModGhpcyxlZSk7cmVuZGVyU3RhdGU9ImlkbGUiO3JlbmRlckFib3J0Q29udHJvbGxlcj1udWxsO3BhZ2VSZW5kZXJpbmc9ITE7cGFnZU51bVBlbmRpbmc9bnVsbDtjdXJyZW50UmVuZGVyVGFzaz1udWxsO2N1cnJlbnRSZW5kZXJQcm9taXNlPW51bGw7dGh1bWJuYWlsUmVuZGVyVGFza3M9W107cGFnZVJlbmRlclRhc2tzPW5ldyBNYXA7dGV4dExheWVyUmVuZGVyVGFza3M9bmV3IE1hcDtjYW52YXM7Y3R4O3ZpZXdlck1haW49bnVsbDtyZXNpemVPYnNlcnZlcjtpbnRlcnNlY3Rpb25PYnNlcnZlcjtzY3JvbGxUaHJvdHRsZVRpbWVvdXQ7dmlld3BvcnREaW1lbnNpb25zPXt3aWR0aDowLGhlaWdodDowfTt2aWV3cG9ydE1vZGU9ImF1dG8iO01BTlVBTF9NSU5fWk9PTT0uNTtNQU5VQUxfTUFYX1pPT009MztBQlNPTFVURV9NSU5fWk9PTT0uMTtBQlNPTFVURV9NQVhfWk9PTT00O1BBR0VfR0FQPTIwO1JFTkRFUl9CVUZGRVI9Mztjb25zdHJ1Y3Rvcigpe3N1cGVyKCl9cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkZWVzLXRpbGUgY2xhc3M9IiR7dGhpcy5zaG93U2lkZWJhcj8id2l0aC1zaWRlYmFyIjoiIn0gc2lkZWJhci0ke3RoaXMuc2lkZWJhclBvc2l0aW9ufSI+CiAgICAgICAgJHt0aGlzLnNob3dUb29sYmFyP3dgCiAgICAgICAgICA8ZGl2IHNsb3Q9ImhlYWRlciIgY2xhc3M9InRvb2xiYXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b29sYmFyLWdyb3VwIj4KICAgICAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgICAgICBjbGFzcz0idG9vbGJhci1idXR0b24iCiAgICAgICAgICAgICAgICBAY2xpY2s9JHt0aGlzLnByZXZpb3VzUGFnZX0KICAgICAgICAgICAgICAgID9kaXNhYmxlZD0ke3RoaXMuY3VycmVudFBhZ2U8PTF9CiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6Q2hldnJvbkxlZnQiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhZ2UtaW5mbyI+CiAgICAgICAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgICAgICAgdHlwZT0ibnVtYmVyIgogICAgICAgICAgICAgICAgICBtaW49IjEiCiAgICAgICAgICAgICAgICAgIG1heD0iJHt0aGlzLnRvdGFsUGFnZXN9IgogICAgICAgICAgICAgICAgICAudmFsdWU9JHtTdHJpbmcodGhpcy5jdXJyZW50UGFnZSl9CiAgICAgICAgICAgICAgICAgIEBjaGFuZ2U9JHt0aGlzLmhhbmRsZVBhZ2VJbnB1dH0KICAgICAgICAgICAgICAgICAgY2xhc3M9InBhZ2UtaW5wdXQiCiAgICAgICAgICAgICAgICAvPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBhZ2Utc2VwYXJhdG9yIj4vPC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBhZ2UtdG90YWwiPiR7dGhpcy50b3RhbFBhZ2VzfTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgICAgICBjbGFzcz0idG9vbGJhci1idXR0b24iCiAgICAgICAgICAgICAgICBAY2xpY2s9JHt0aGlzLm5leHRQYWdlfQogICAgICAgICAgICAgICAgP2Rpc2FibGVkPSR7dGhpcy5jdXJyZW50UGFnZT49dGhpcy50b3RhbFBhZ2VzfQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOkNoZXZyb25SaWdodCI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9vbGJhci1ncm91cCI+CiAgICAgICAgICAgICAgPGJ1dHRvbgogICAgICAgICAgICAgICAgY2xhc3M9InRvb2xiYXItYnV0dG9uIgogICAgICAgICAgICAgICAgQGNsaWNrPSR7dGhpcy56b29tT3V0fQogICAgICAgICAgICAgICAgP2Rpc2FibGVkPSR7IXRoaXMuY2FuWm9vbU91dH0KICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpab29tT3V0Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgICAgICBjbGFzcz0idG9vbGJhci1idXR0b24iCiAgICAgICAgICAgICAgICBAY2xpY2s9JHt0aGlzLnJlc2V0Wm9vbX0KICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iem9vbS1sZXZlbCI+JHtNYXRoLnJvdW5kKHRoaXMuY3VycmVudFpvb20qMTAwKX0lPC9zcGFuPgogICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgICAgIGNsYXNzPSJ0b29sYmFyLWJ1dHRvbiIKICAgICAgICAgICAgICAgIEBjbGljaz0ke3RoaXMuem9vbUlufQogICAgICAgICAgICAgICAgP2Rpc2FibGVkPSR7IXRoaXMuY2FuWm9vbUlufQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOlpvb21JbiI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9vbGJhci1ncm91cCI+CiAgICAgICAgICAgICAgPGJ1dHRvbgogICAgICAgICAgICAgICAgY2xhc3M9InRvb2xiYXItYnV0dG9uIgogICAgICAgICAgICAgICAgQGNsaWNrPSR7dGhpcy5maXRUb1BhZ2V9CiAgICAgICAgICAgICAgICB0aXRsZT0iRml0IHRvIHBhZ2UiCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6TWF4aW1pemUiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgICAgIGNsYXNzPSJ0b29sYmFyLWJ1dHRvbiIKICAgICAgICAgICAgICAgIEBjbGljaz0ke3RoaXMuZml0VG9XaWR0aH0KICAgICAgICAgICAgICAgIHRpdGxlPSJGaXQgdG8gd2lkdGgiCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6QXJyb3dMZWZ0UmlnaHQiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvb2xiYXItZ3JvdXAgdG9vbGJhci1ncm91cC0tZW5kIj4KICAgICAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgICAgICBjbGFzcz0idG9vbGJhci1idXR0b24iCiAgICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy5zaG93U2lkZWJhcj0hdGhpcy5zaG93U2lkZWJhcn0KICAgICAgICAgICAgICAgIHRpdGxlPSIke3RoaXMuc2hvd1NpZGViYXI/IkhpZGUgdGh1bWJuYWlscyI6IlNob3cgdGh1bWJuYWlscyJ9IgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0iJHt0aGlzLnNob3dTaWRlYmFyPyJsdWNpZGU6U2lkZWJhckNsb3NlIjoibHVjaWRlOlNpZGViYXIifSI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgPGJ1dHRvbgogICAgICAgICAgICAgICAgY2xhc3M9InRvb2xiYXItYnV0dG9uIgogICAgICAgICAgICAgICAgQGNsaWNrPSR7dGhpcy5kb3dubG9hZFBkZn0KICAgICAgICAgICAgICAgIHRpdGxlPSJEb3dubG9hZCIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpEb3dubG9hZCI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgPGJ1dHRvbgogICAgICAgICAgICAgICAgY2xhc3M9InRvb2xiYXItYnV0dG9uIgogICAgICAgICAgICAgICAgQGNsaWNrPSR7dGhpcy5wcmludFBkZn0KICAgICAgICAgICAgICAgIHRpdGxlPSJQcmludCIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpQcmludGVyIj48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgOiIifQoKICAgICAgICA8ZGl2IGNsYXNzPSJ2aWV3ZXItY29udGFpbmVyIj4KICAgICAgICAgICR7dGhpcy5zaG93U2lkZWJhcj93YAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLWhlYWRlciI+CiAgICAgICAgICAgICAgICA8c3Bhbj5QYWdlczwvc3Bhbj4KICAgICAgICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgICAgICAgY2xhc3M9InNpZGViYXItY2xvc2UiCiAgICAgICAgICAgICAgICAgIEBjbGljaz0keygpPT50aGlzLnNob3dTaWRlYmFyPSExfQogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpYIj48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItY29udGVudCI+CiAgICAgICAgICAgICAgICAke1ZpLmtleWVkKHRoaXMuZG9jdW1lbnRJZCx3YAogICAgICAgICAgICAgICAgICAke1ZpLnJlcGVhdCh0aGlzLnRodW1ibmFpbERhdGEsWD0+WC5wYWdlLFg9PndgCiAgICAgICAgICAgICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJ0aHVtYm5haWwgJHt0aGlzLmN1cnJlbnRQYWdlPT09WC5wYWdlPyJhY3RpdmUiOiIifSIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1wYWdlPSIke1gucGFnZX0iCiAgICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz0ke3RoaXMuaGFuZGxlVGh1bWJuYWlsQ2xpY2t9CiAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxjYW52YXMgY2xhc3M9InRodW1ibmFpbC1jYW52YXMiIGRhdGEtcGFnZT0iJHtYLnBhZ2V9Ij48L2NhbnZhcz4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRodW1ibmFpbC1udW1iZXIiPiR7WC5wYWdlfTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIGApfQogICAgICAgICAgICAgICAgYCl9CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYDoiIn0KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJ2aWV3ZXItbWFpbiIgQHNjcm9sbD0ke3RoaXMuaGFuZGxlU2Nyb2xsfT4KICAgICAgICAgICAgJHt0aGlzLmxvYWRpbmc/d2AKICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2FkaW5nLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2FkaW5nLXNwaW5uZXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9hZGluZy10ZXh0Ij5Mb2FkaW5nIFBERi4uLjwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICBgOndgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFnZXMtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICR7VmkucmVwZWF0KHRoaXMucGFnZURhdGEsWD0+WC5wYWdlLFg9PndgCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFnZS13cmFwcGVyIiBkYXRhLXBhZ2U9IiR7WC5wYWdlfSI+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYW52YXMtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGNhbnZhcyBjbGFzcz0icGFnZS1jYW52YXMiIGRhdGEtcGFnZT0iJHtYLnBhZ2V9Ij48L2NhbnZhcz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC1sYXllciIgZGF0YS1wYWdlPSIke1gucGFnZX0iPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIGApfQogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICBgfQogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBzbG90PSJmb290ZXIiIGNsYXNzPSJwZGYtZm9vdGVyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InBkZi1mb290ZXItbGVmdCI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwZGYtZm9vdGVyLWl0ZW0iPlpvb20gJHtNYXRoLnJvdW5kKHRoaXMuY3VycmVudFpvb20qMTAwKX0lPC9zcGFuPgogICAgICAgICAgICAke3RoaXMucGRmRmlsZVNpemU+MD93YAogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwZGYtZm9vdGVyLWl0ZW0iPiR7dGhpcy5mb3JtYXRGaWxlU2l6ZSh0aGlzLnBkZkZpbGVTaXplKX08L3NwYW4+CiAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InBkZi1mb290ZXItY2VudGVyIiBzdHlsZT0ibWFyZ2luLWxlZnQ6ICR7dGhpcy5zaG93U2lkZWJhciYmdGhpcy5zaWRlYmFyUG9zaXRpb249PT0ibGVmdCI/IjEwMHB4Ijp0aGlzLnNob3dTaWRlYmFyJiZ0aGlzLnNpZGViYXJQb3NpdGlvbj09PSJyaWdodCI/Ii0xMDBweCI6IjAifSI+CiAgICAgICAgICAgIDxzcGFuPlBhZ2UgJHt0aGlzLmN1cnJlbnRQYWdlfSBvZiAke3RoaXMudG90YWxQYWdlc308L3NwYW4+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InBkZi1mb290ZXItcmlnaHQiPgogICAgICAgICAgICAke3RoaXMucGRmVXJsP3dgCiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBkZi1mb290ZXItZmlsZW5hbWUiPiR7dGhpcy5wZGZVcmwuc3BsaXQoIi8iKS5wb3AoKX08L3NwYW4+CiAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXRpbGU+CiAgICBgfWFzeW5jIGNvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSxhd2FpdCB0aGlzLnVwZGF0ZUNvbXBsZXRlLHRoaXMuZW5zdXJlVmlld2VyUmVmcygpLHRoaXMucGRmVXJsJiYodGhpcy5kb2N1bWVudElkPWAke3RoaXMucGRmVXJsfS0ke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKX1gLGF3YWl0IHRoaXMubG9hZFBkZigpKX1hc3luYyBkaXNjb25uZWN0ZWRDYWxsYmFjaygpe2F3YWl0IHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5yZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpLHRoaXMucmVzaXplT2JzZXJ2ZXI9dm9pZCAwLHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKSx0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyPXZvaWQgMCx0aGlzLnNjcm9sbFRocm90dGxlVGltZW91dCYmKGNsZWFyVGltZW91dCh0aGlzLnNjcm9sbFRocm90dGxlVGltZW91dCksdGhpcy5zY3JvbGxUaHJvdHRsZVRpbWVvdXQ9dm9pZCAwKSx0aGlzLnJlbmRlclN0YXRlPSJkaXNwb3NlZCIsYXdhaXQgdGhpcy5jbGVhbnVwRG9jdW1lbnQoKSx0aGlzLmNhbnZhcz12b2lkIDAsdGhpcy5jdHg9dm9pZCAwfWFzeW5jIHVwZGF0ZWQoWCl7aWYoc3VwZXIudXBkYXRlZChYKSxYLmhhcygicGRmVXJsIikmJnRoaXMucGRmVXJsKXtsZXQgWj1YLmdldCgicGRmVXJsIik7WiYmV3UucmVsZWFzZURvY3VtZW50KFopLHRoaXMuZG9jdW1lbnRJZD1gJHt0aGlzLnBkZlVybH0tJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCl9YCxhd2FpdCB0aGlzLmxvYWRQZGYoKX1YLmhhcygic2hvd1NpZGViYXIiKSYmdGhpcy5zaG93U2lkZWJhciYmdGhpcy5wZGZEb2N1bWVudCYmKGF3YWl0IG5ldyBQcm9taXNlKFo9PnJlcXVlc3RBbmltYXRpb25GcmFtZShaKSksdGhpcy50aHVtYm5haWxEYXRhLmZvckVhY2goWj0+Wi5yZW5kZXJlZD0hMSksYXdhaXQgdGhpcy5yZW5kZXJUaHVtYm5haWxzKCksdGhpcy5zZXR1cEludGVyc2VjdGlvbk9ic2VydmVyKCksdGhpcy5zY3JvbGxUaHVtYm5haWxJbnRvVmlldyh0aGlzLmN1cnJlbnRQYWdlKSl9Zm9ybWF0RmlsZVNpemUoWCl7cmV0dXJuIFg8MTAyND9gJHtYfSBCYDpYPDEwMjQqMTAyND9gJHsoWC8xMDI0KS50b0ZpeGVkKDEpfSBLQmA6YCR7KFgvKDEwMjQqMTAyNCkpLnRvRml4ZWQoMSl9IE1CYH1hc3luYyBsb2FkUGRmKCl7dGhpcy5sb2FkaW5nPSEwLHRoaXMucmVuZGVyU3RhdGU9ImxvYWRpbmciO3RyeXthd2FpdCB0aGlzLmNsZWFudXBEb2N1bWVudCgpLHRoaXMucmVuZGVyQWJvcnRDb250cm9sbGVyPW5ldyBBYm9ydENvbnRyb2xsZXI7bGV0IFg9dGhpcy5yZW5kZXJBYm9ydENvbnRyb2xsZXIuc2lnbmFsO2lmKHRoaXMucGRmRG9jdW1lbnQ9YXdhaXQgV3UubG9hZERvY3VtZW50KHRoaXMucGRmVXJsKSxYLmFib3J0ZWQpcmV0dXJuO3RoaXMudG90YWxQYWdlcz10aGlzLnBkZkRvY3VtZW50Lm51bVBhZ2VzLHRoaXMuY3VycmVudFBhZ2U9dGhpcy5pbml0aWFsUGFnZSx0aGlzLnJlc29sdmVJbml0aWFsVmlld3BvcnRNb2RlKCk7dHJ5e2xldCBaPWF3YWl0IHRoaXMucGRmRG9jdW1lbnQuZ2V0RGF0YSgpO3RoaXMucGRmRmlsZVNpemU9Wi5sZW5ndGh9Y2F0Y2h7dGhpcy5wZGZGaWxlU2l6ZT0wfWlmKHRoaXMudGh1bWJuYWlsRGF0YT1BcnJheS5mcm9tKHtsZW5ndGg6dGhpcy50b3RhbFBhZ2VzfSwoWix5ZSk9Pih7cGFnZTp5ZSsxLHJlbmRlcmVkOiExfSkpLHRoaXMucGFnZURhdGE9QXJyYXkuZnJvbSh7bGVuZ3RoOnRoaXMudG90YWxQYWdlc30sKFoseWUpPT4oe3BhZ2U6eWUrMSxyZW5kZXJlZDohMSxyZW5kZXJpbmc6ITEsdGV4dExheWVyUmVuZGVyZWQ6ITF9KSksdGhpcy5sb2FkaW5nPSExLGF3YWl0IHRoaXMudXBkYXRlQ29tcGxldGUsdGhpcy5lbnN1cmVWaWV3ZXJSZWZzKCksdGhpcy5zZXR1cEludGVyc2VjdGlvbk9ic2VydmVyKCksYXdhaXQgbmV3IFByb21pc2UoWj0+cmVxdWVzdEFuaW1hdGlvbkZyYW1lKFopKSxYLmFib3J0ZWR8fCh0aGlzLnJlbmRlclN0YXRlPSJyZW5kZXJpbmctbWFpbiIsYXdhaXQgdGhpcy5yZW5kZXJWaXNpYmxlUGFnZXMoKSxYLmFib3J0ZWQpfHwodGhpcy5pbml0aWFsUGFnZT4xJiZhd2FpdCB0aGlzLnNjcm9sbFRvUGFnZSh0aGlzLmluaXRpYWxQYWdlLCExKSx0aGlzLnNob3dTaWRlYmFyJiYoYXdhaXQgdGhpcy51cGRhdGVDb21wbGV0ZSxhd2FpdCBuZXcgUHJvbWlzZShaPT5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoWikpLFguYWJvcnRlZHx8KGF3YWl0IHRoaXMucmVuZGVyVGh1bWJuYWlscygpLFguYWJvcnRlZCkpKSlyZXR1cm47dGhpcy5yZW5kZXJTdGF0ZT0icmVuZGVyZWQifWNhdGNoKFgpe2NvbnNvbGUuZXJyb3IoIkVycm9yIGxvYWRpbmcgUERGOiIsWCksdGhpcy5sb2FkaW5nPSExLHRoaXMucmVuZGVyU3RhdGU9ImVycm9yIn19c2V0dXBJbnRlcnNlY3Rpb25PYnNlcnZlcigpe3RoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXImJnRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpLHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXI9bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKFo9Pntmb3IobGV0IHllIG9mIFope2xldCBxPXllLnRhcmdldCxBPXBhcnNlSW50KHEuZGF0YXNldC5wYWdlfHwiMSIpO3llLmlzSW50ZXJzZWN0aW5nJiZ0aGlzLnJlbmRlclBhZ2VJZk5lZWRlZChBKX19LHtyb290OnRoaXMudmlld2VyTWFpbixyb290TWFyZ2luOmAke3RoaXMuUkVOREVSX0JVRkZFUioxMDB9cHggMHB4YCx0aHJlc2hvbGQ6LjAxfSk7bGV0IFg9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yQWxsKCIucGFnZS13cmFwcGVyIik7WCYmWC5mb3JFYWNoKFo9Pnt0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyPy5vYnNlcnZlKFopfSl9YXN5bmMgcmVuZGVyVmlzaWJsZVBhZ2VzKCl7aWYoIXRoaXMudmlld2VyTWFpbilyZXR1cm47bGV0IFg9dGhpcy52aWV3ZXJNYWluLmNsaWVudEhlaWdodDtmb3IobGV0IFogb2YgdGhpcy5wYWdlRGF0YSl7bGV0IHllPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihgLnBhZ2Utd3JhcHBlcltkYXRhLXBhZ2U9IiR7Wi5wYWdlfSJdYCk7aWYoIXllKWNvbnRpbnVlO2xldCBxPXllLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLEE9dGhpcy52aWV3ZXJNYWluLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHNlPXEudG9wLUEudG9wLG9lPXNlK3EuaGVpZ2h0LGFlPXRoaXMuUkVOREVSX0JVRkZFUipYO29lPj0tYWUmJnNlPD1YK2FlJiZhd2FpdCB0aGlzLnJlbmRlclBhZ2VJZk5lZWRlZChaLnBhZ2UpfX1hc3luYyByZW5kZXJQYWdlSWZOZWVkZWQoWCl7bGV0IFo9dGhpcy5wYWdlRGF0YS5maW5kKHllPT55ZS5wYWdlPT09WCk7aWYoISghWnx8Wi5yZW5kZXJlZHx8Wi5yZW5kZXJpbmcpKXtaLnJlbmRlcmluZz0hMDt0cnl7bGV0IHllPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihgLnBhZ2UtY2FudmFzW2RhdGEtcGFnZT0iJHtYfSJdYCk7aWYoIXllKXtaLnJlbmRlcmluZz0hMTtyZXR1cm59bGV0IHE9YXdhaXQgdGhpcy5wZGZEb2N1bWVudC5nZXRQYWdlKFgpLEE9dGhpcy5jb21wdXRlVmlld3BvcnQocSksc2U9d2luZG93LmRldmljZVBpeGVsUmF0aW98fDE7eWUud2lkdGg9TWF0aC5mbG9vcihBLndpZHRoKnNlKSx5ZS5oZWlnaHQ9TWF0aC5mbG9vcihBLmhlaWdodCpzZSkseWUuc3R5bGUud2lkdGg9YCR7QS53aWR0aH1weGAseWUuc3R5bGUuaGVpZ2h0PWAke0EuaGVpZ2h0fXB4YDtsZXQgb2U9eWUuZ2V0Q29udGV4dCgiMmQiKTtpZighb2Upe3EuY2xlYW51cD8uKCksWi5yZW5kZXJpbmc9ITE7cmV0dXJufW9lLnNjYWxlKHNlLHNlKTtsZXQgYWU9e2NhbnZhc0NvbnRleHQ6b2Usdmlld3BvcnQ6QX0sVGU9cS5yZW5kZXIoYWUpO3RoaXMucGFnZVJlbmRlclRhc2tzLnNldChYLFRlKSxhd2FpdCBUZS5wcm9taXNlLHEuY2xlYW51cD8uKCksWi5yZW5kZXJlZD0hMCxaLnJlbmRlcmluZz0hMSx0aGlzLnBhZ2VSZW5kZXJUYXNrcy5kZWxldGUoWCksYXdhaXQgdGhpcy5yZW5kZXJUZXh0TGF5ZXIoWCksdGhpcy5yZXF1ZXN0VXBkYXRlKCJwYWdlRGF0YSIpfWNhdGNoKHllKXt5ZT8ubmFtZSE9PSJSZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24iJiZjb25zb2xlLmVycm9yKGBFcnJvciByZW5kZXJpbmcgcGFnZSAke1h9OmAseWUpLFoucmVuZGVyaW5nPSExLHRoaXMucGFnZVJlbmRlclRhc2tzLmRlbGV0ZShYKX19fWFzeW5jIHJlbmRlclRleHRMYXllcihYKXtsZXQgWj10aGlzLnBhZ2VEYXRhLmZpbmQoeWU9PnllLnBhZ2U9PT1YKTtpZighKCFafHxaLnRleHRMYXllclJlbmRlcmVkKSl0cnl7bGV0IHllPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihgLnRleHQtbGF5ZXJbZGF0YS1wYWdlPSIke1h9Il1gKTtpZigheWUpcmV0dXJuO3llLmlubmVySFRNTD0iIjtsZXQgcT1hd2FpdCB0aGlzLnBkZkRvY3VtZW50LmdldFBhZ2UoWCksQT1hd2FpdCBxLmdldFRleHRDb250ZW50KCksc2U9dGhpcy5jb21wdXRlVmlld3BvcnQocSksb2U9YXdhaXQgaW1wb3J0KCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL3BkZmpzLWRpc3RANC4wLjM3OS8rZXNtIik7eWUuc3R5bGUud2lkdGg9YCR7c2Uud2lkdGh9cHhgLHllLnN0eWxlLmhlaWdodD1gJHtzZS5oZWlnaHR9cHhgLHllLnN0eWxlLnNldFByb3BlcnR5KCItLXNjYWxlLWZhY3RvciIsU3RyaW5nKHNlLnNjYWxlKSk7bGV0IGFlPW9lLnJlbmRlclRleHRMYXllcih7dGV4dENvbnRlbnRTb3VyY2U6QSxjb250YWluZXI6eWUsdmlld3BvcnQ6c2V9KTt0aGlzLnRleHRMYXllclJlbmRlclRhc2tzLnNldChYLGFlKSxhd2FpdCBhZS5wcm9taXNlO2xldCBUZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtUZS5jbGFzc05hbWU9ImVuZE9mQ29udGVudCIseWUuYXBwZW5kQ2hpbGQoVGUpO2xldCBSZT0hMSxCZT1udWxsLEdlPTAsRGU9aSgodmUsYmUpPT57bGV0IEVlPUFycmF5LmZyb20oeWUucXVlcnlTZWxlY3RvckFsbCgic3BhbiIpKTtmb3IobGV0IGplIG9mIEVlKXtsZXQgV2U9amUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYodmU+PVdlLmxlZnQmJnZlPD1XZS5yaWdodCYmYmU+PVdlLnRvcCYmYmU8PVdlLmJvdHRvbSl7bGV0IHN0PWplLmZpcnN0Q2hpbGQ7aWYoc3QmJnN0Lm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREUpe2xldCBNZT1zdC50ZXh0Q29udGVudHx8IiIsZ2U9V2Uud2lkdGgvTWUubGVuZ3RoLEllPXZlLVdlLmxlZnQsY2U9TWF0aC5taW4oTWF0aC5yb3VuZChJZS9nZSksTWUubGVuZ3RoKTtyZXR1cm57bm9kZTpzdCxvZmZzZXQ6Y2V9fX19cmV0dXJuIG51bGx9LCJnZXRUZXh0UG9zaXRpb25Gcm9tUG9pbnQiKSxfZT1pKCgpPT57UmUmJihSZT0hMSxCZT1udWxsLHllLmNsYXNzTGlzdC5yZW1vdmUoInNlbGVjdGluZyIpKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIixfZSksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIixDZSl9LCJoYW5kbGVNb3VzZVVwIiksQ2U9aSh2ZT0+e2lmKCFSZXx8IUJlKXJldHVybjt2ZS5wcmV2ZW50RGVmYXVsdCgpO2xldCBiZT1EZSh2ZS5jbGllbnRYLHZlLmNsaWVudFkpO2lmKGJlKXtsZXQgRWU9d2luZG93LmdldFNlbGVjdGlvbigpO2lmKEVlKXRyeXtFZS5zZXRCYXNlQW5kRXh0ZW50KEJlLEdlLGJlLm5vZGUsYmUub2Zmc2V0KX1jYXRjaHt9fX0sImhhbmRsZU1vdXNlTW92ZSIpO3llLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsdmU9PntpZih2ZS5idXR0b24hPT0wKXJldHVybjtsZXQgYmU9RGUodmUuY2xpZW50WCx2ZS5jbGllbnRZKTtiZSYmKHZlLnByZXZlbnREZWZhdWx0KCksUmU9ITAsQmU9YmUubm9kZSxHZT1iZS5vZmZzZXQseWUuY2xhc3NMaXN0LmFkZCgic2VsZWN0aW5nIiksd2luZG93LmdldFNlbGVjdGlvbigpPy5yZW1vdmVBbGxSYW5nZXMoKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLENlKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIixfZSkpfSksWi50ZXh0TGF5ZXJSZW5kZXJlZD0hMCxxLmNsZWFudXA/LigpLHRoaXMudGV4dExheWVyUmVuZGVyVGFza3MuZGVsZXRlKFgpfWNhdGNoKHllKXt5ZT8ubmFtZSE9PSJSZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24iJiZjb25zb2xlLmVycm9yKGBFcnJvciByZW5kZXJpbmcgdGV4dCBsYXllciBmb3IgcGFnZSAke1h9OmAseWUpLHRoaXMudGV4dExheWVyUmVuZGVyVGFza3MuZGVsZXRlKFgpfX1oYW5kbGVTY3JvbGw9aSgoKT0+e3RoaXMuc2Nyb2xsVGhyb3R0bGVUaW1lb3V0JiZjbGVhclRpbWVvdXQodGhpcy5zY3JvbGxUaHJvdHRsZVRpbWVvdXQpLHRoaXMuc2Nyb2xsVGhyb3R0bGVUaW1lb3V0PXdpbmRvdy5zZXRUaW1lb3V0KCgpPT57dGhpcy51cGRhdGVDdXJyZW50UGFnZSgpLHRoaXMucmVuZGVyVmlzaWJsZVBhZ2VzKCl9LDUwKX0sImhhbmRsZVNjcm9sbCIpO3VwZGF0ZUN1cnJlbnRQYWdlKCl7aWYoIXRoaXMudmlld2VyTWFpbilyZXR1cm47bGV0IFg9dGhpcy52aWV3ZXJNYWluLnNjcm9sbFRvcCxaPXRoaXMudmlld2VyTWFpbi5jbGllbnRIZWlnaHQseWU9WCtaLzI7Zm9yKGxldCBxPTA7cTx0aGlzLnBhZ2VEYXRhLmxlbmd0aDtxKyspe2xldCBBPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihgLnBhZ2Utd3JhcHBlcltkYXRhLXBhZ2U9IiR7cSsxfSJdYCk7aWYoIUEpY29udGludWU7bGV0IHNlPUEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksb2U9dGhpcy52aWV3ZXJNYWluLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGFlPXNlLnRvcC1vZS50b3ArWCxUZT1hZStzZS5oZWlnaHQ7aWYoeWU+PWFlJiZ5ZTw9VGUpe3RoaXMuY3VycmVudFBhZ2UhPT1xKzEmJih0aGlzLmN1cnJlbnRQYWdlPXErMSx0aGlzLnNob3dTaWRlYmFyJiZ0aGlzLnNjcm9sbFRodW1ibmFpbEludG9WaWV3KHErMSkpO2JyZWFrfX19c2Nyb2xsVGh1bWJuYWlsSW50b1ZpZXcoWCl7bGV0IFo9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKGAudGh1bWJuYWlsW2RhdGEtcGFnZT0iJHtYfSJdYCkseWU9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIuc2lkZWJhci1jb250ZW50Iik7aWYoWiYmeWUpe2xldCBxPVouZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksQT15ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxzZT1xLnRvcDxBLnRvcCxvZT1xLmJvdHRvbT5BLmJvdHRvbTtpZihzZXx8b2Upe2xldCBhZT1aLm9mZnNldFRvcCxUZT1aLm9mZnNldEhlaWdodCxSZT15ZS5jbGllbnRIZWlnaHQsQmU9YWUtUmUvMitUZS8yO3llLnNjcm9sbFRvKHt0b3A6TWF0aC5tYXgoMCxCZSksYmVoYXZpb3I6InNtb290aCJ9KX19fWFzeW5jIHNjcm9sbFRvUGFnZShYLFo9ITApe2F3YWl0IHRoaXMudXBkYXRlQ29tcGxldGU7bGV0IHllPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihgLnBhZ2Utd3JhcHBlcltkYXRhLXBhZ2U9IiR7WH0iXWApO2lmKHllJiZ0aGlzLnZpZXdlck1haW4pe2xldCBxPXllLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLEE9dGhpcy52aWV3ZXJNYWluLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG9lPXRoaXMudmlld2VyTWFpbi5zY3JvbGxUb3ArKHEudG9wLUEudG9wKS10aGlzLnZpZXdlck1haW4uY2xpZW50VG9wLTE2O1o/dGhpcy52aWV3ZXJNYWluLnNjcm9sbFRvKHt0b3A6b2UsYmVoYXZpb3I6InNtb290aCJ9KTp0aGlzLnZpZXdlck1haW4uc2Nyb2xsVG9wPW9lLHRoaXMuY3VycmVudFBhZ2U9WCx0aGlzLnNob3dTaWRlYmFyJiZ0aGlzLnNjcm9sbFRodW1ibmFpbEludG9WaWV3KFgpLGF3YWl0IHRoaXMucmVuZGVyUGFnZUlmTmVlZGVkKFgpfX1hc3luYyByZW5kZXJUaHVtYm5haWxzKCl7aWYoIXRoaXMucGRmRG9jdW1lbnR8fHRoaXMudGh1bWJuYWlsRGF0YS5sZW5ndGg+MCYmdGhpcy50aHVtYm5haWxEYXRhLmV2ZXJ5KFo9PloucmVuZGVyZWQpfHx0aGlzLnJlbmRlckFib3J0Q29udHJvbGxlcj8uc2lnbmFsLmFib3J0ZWQpcmV0dXJuO2xldCBYPXRoaXMucmVuZGVyQWJvcnRDb250cm9sbGVyPy5zaWduYWw7dGhpcy5yZW5kZXJTdGF0ZT0icmVuZGVyaW5nLXRodW1icyI7Zm9yKGxldCBaIG9mIHRoaXMudGh1bWJuYWlsUmVuZGVyVGFza3MpdHJ5e1ouY2FuY2VsKCl9Y2F0Y2h7fXRoaXMudGh1bWJuYWlsUmVuZGVyVGFza3M9W107dHJ5e2F3YWl0IHRoaXMudXBkYXRlQ29tcGxldGU7bGV0IFo9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yQWxsKCIudGh1bWJuYWlsIikseWU9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yQWxsKCIudGh1bWJuYWlsLWNhbnZhcyIpLHE9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIuc2lkZWJhci1jb250ZW50IiksQT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShxKSxvZT0yMDAtKHBhcnNlRmxvYXQoQS5wYWRkaW5nTGVmdCkrcGFyc2VGbG9hdChBLnBhZGRpbmdSaWdodCkpLTQ7Zm9yKGxldCBhZSBvZiBBcnJheS5mcm9tKHllKSl7bGV0IFRlPWFlLmdldENvbnRleHQoIjJkIik7VGUmJlRlLmNsZWFyUmVjdCgwLDAsYWUud2lkdGgsYWUuaGVpZ2h0KX1mb3IobGV0IGFlPTA7YWU8eWUubGVuZ3RoO2FlKyspe2lmKFg/LmFib3J0ZWQpcmV0dXJuO2xldCBUZT15ZVthZV0sUmU9WlthZV0sQmU9cGFyc2VJbnQoVGUuZGF0YXNldC5wYWdlfHwiMSIpLEdlPWF3YWl0IHRoaXMucGRmRG9jdW1lbnQuZ2V0UGFnZShCZSksRGU9R2UuZ2V0Vmlld3BvcnQoe3NjYWxlOjF9KSxfZT1vZS9EZS53aWR0aCxDZT1HZS5nZXRWaWV3cG9ydCh7c2NhbGU6X2V9KSx2ZT13aW5kb3cuZGV2aWNlUGl4ZWxSYXRpb3x8MTtUZS53aWR0aD1NYXRoLmZsb29yKENlLndpZHRoKnZlKSxUZS5oZWlnaHQ9TWF0aC5mbG9vcihDZS5oZWlnaHQqdmUpLFRlLnN0eWxlLndpZHRoPWAke0NlLndpZHRofXB4YCxUZS5zdHlsZS5oZWlnaHQ9YCR7Q2UuaGVpZ2h0fXB4YCxSZS5zdHlsZS5oZWlnaHQ9YCR7Q2UuaGVpZ2h0fXB4YCxSZS5zdHlsZS5taW5IZWlnaHQ9YCR7Q2UuaGVpZ2h0fXB4YDtsZXQgYmU9VGUuZ2V0Q29udGV4dCgiMmQiKTtpZighYmUpe0dlLmNsZWFudXA/LigpO2NvbnRpbnVlfWJlLnNjYWxlKHZlLHZlKTtsZXQgRWU9e2NhbnZhc0NvbnRleHQ6YmUsdmlld3BvcnQ6Q2V9LGplPUdlLnJlbmRlcihFZSk7dGhpcy50aHVtYm5haWxSZW5kZXJUYXNrcy5wdXNoKGplKSxhd2FpdCBqZS5wcm9taXNlLEdlLmNsZWFudXA/LigpO2xldCBXZT10aGlzLnRodW1ibmFpbERhdGEuZmluZChzdD0+c3QucGFnZT09PUJlKTtXZSYmKFdlLnJlbmRlcmVkPSEwKX10aGlzLnJlcXVlc3RVcGRhdGUoInRodW1ibmFpbERhdGEiKX1jYXRjaChaKXtaPy5uYW1lIT09IlJlbmRlcmluZ0NhbmNlbGxlZEV4Y2VwdGlvbiImJmNvbnNvbGUuZXJyb3IoIkVycm9yIHJlbmRlcmluZyB0aHVtYm5haWxzOiIsWil9ZmluYWxseXt0aGlzLnRodW1ibmFpbFJlbmRlclRhc2tzPVtdfX1wcmV2aW91c1BhZ2UoKXt0aGlzLmN1cnJlbnRQYWdlPjEmJnRoaXMuc2Nyb2xsVG9QYWdlKHRoaXMuY3VycmVudFBhZ2UtMSl9bmV4dFBhZ2UoKXt0aGlzLmN1cnJlbnRQYWdlPHRoaXMudG90YWxQYWdlcyYmdGhpcy5zY3JvbGxUb1BhZ2UodGhpcy5jdXJyZW50UGFnZSsxKX1oYW5kbGVUaHVtYm5haWxDbGljayhYKXtsZXQgWj1YLmN1cnJlbnRUYXJnZXQseWU9cGFyc2VJbnQoWi5kYXRhc2V0LnBhZ2V8fCIxIik7dGhpcy5zY3JvbGxUb1BhZ2UoeWUpfWhhbmRsZVBhZ2VJbnB1dChYKXtsZXQgWj1YLnRhcmdldCx5ZT1wYXJzZUludChaLnZhbHVlKTt0aGlzLnNjcm9sbFRvUGFnZSh5ZSl9em9vbUluKCl7bGV0IFg9TWF0aC5taW4odGhpcy5NQU5VQUxfTUFYX1pPT00sdGhpcy5jdXJyZW50Wm9vbSoxLjIpO3RoaXMudmlld3BvcnRNb2RlPSJjdXN0b20iLFghPT10aGlzLmN1cnJlbnRab29tJiYodGhpcy5jdXJyZW50Wm9vbT1YLHRoaXMucmVSZW5kZXJBbGxQYWdlcygpKX16b29tT3V0KCl7bGV0IFg9TWF0aC5tYXgodGhpcy5NQU5VQUxfTUlOX1pPT00sdGhpcy5jdXJyZW50Wm9vbS8xLjIpO3RoaXMudmlld3BvcnRNb2RlPSJjdXN0b20iLFghPT10aGlzLmN1cnJlbnRab29tJiYodGhpcy5jdXJyZW50Wm9vbT1YLHRoaXMucmVSZW5kZXJBbGxQYWdlcygpKX1yZXNldFpvb20oKXt0aGlzLnZpZXdwb3J0TW9kZT0iY3VzdG9tIix0aGlzLmN1cnJlbnRab29tPTEsdGhpcy5yZVJlbmRlckFsbFBhZ2VzKCl9Zml0VG9QYWdlKCl7dGhpcy52aWV3cG9ydE1vZGU9InBhZ2UtZml0Iix0aGlzLnJlUmVuZGVyQWxsUGFnZXMoKX1maXRUb1dpZHRoKCl7dGhpcy52aWV3cG9ydE1vZGU9InBhZ2Utd2lkdGgiLHRoaXMucmVSZW5kZXJBbGxQYWdlcygpfXJlUmVuZGVyQWxsUGFnZXMoKXt0aGlzLnBhZ2VEYXRhLmZvckVhY2goWD0+e1gucmVuZGVyZWQ9ITEsWC5yZW5kZXJpbmc9ITEsWC50ZXh0TGF5ZXJSZW5kZXJlZD0hMX0pLHRoaXMucGFnZVJlbmRlclRhc2tzLmZvckVhY2goWD0+e3RyeXtYLmNhbmNlbCgpfWNhdGNoe319KSx0aGlzLnBhZ2VSZW5kZXJUYXNrcy5jbGVhcigpLHRoaXMudGV4dExheWVyUmVuZGVyVGFza3MuZm9yRWFjaChYPT57dHJ5e1guY2FuY2VsPy4oKX1jYXRjaHt9fSksdGhpcy50ZXh0TGF5ZXJSZW5kZXJUYXNrcy5jbGVhcigpLHRoaXMucmVxdWVzdFVwZGF0ZSgpLHRoaXMudXBkYXRlQ29tcGxldGUudGhlbigoKT0+e3RoaXMucmVuZGVyVmlzaWJsZVBhZ2VzKCl9KX1hc3luYyBkb3dubG9hZFBkZigpe2lmKHRoaXMucGRmRG9jdW1lbnQpdHJ5e2xldCBYPWF3YWl0IHRoaXMucGRmRG9jdW1lbnQuZ2V0RGF0YSgpLFo9bmV3IEJsb2IoW1guYnVmZmVyXSx7dHlwZToiYXBwbGljYXRpb24vcGRmIn0pLHllPVVSTC5jcmVhdGVPYmplY3RVUkwoWikscT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7cS5ocmVmPXllLHEuZG93bmxvYWQ9dGhpcy5wZGZVcmwmJnRoaXMucGRmVXJsLnNwbGl0KCIvIikucG9wKCl8fCJkb2N1bWVudC5wZGYiLHEuY2xpY2soKSxzZXRUaW1lb3V0KCgpPT5VUkwucmV2b2tlT2JqZWN0VVJMKHllKSwxZTMpfWNhdGNoKFgpe2NvbnNvbGUuZXJyb3IoIkVycm9yIGRvd25sb2FkaW5nIFBERjoiLFgpfX1hc3luYyBwcmludFBkZigpe2lmKHRoaXMucGRmRG9jdW1lbnQpdHJ5e2xldCBYPWF3YWl0IHRoaXMucGRmRG9jdW1lbnQuZ2V0RGF0YSgpLFo9bmV3IEJsb2IoW1guYnVmZmVyXSx7dHlwZToiYXBwbGljYXRpb24vcGRmIn0pLHllPVVSTC5jcmVhdGVPYmplY3RVUkwoWikscT1gCiAgICAgICAgPCFET0NUWVBFIGh0bWw+CiAgICAgICAgPGh0bWw+CiAgICAgICAgPGhlYWQ+CiAgICAgICAgICA8dGl0bGU+UHJpbnQgUERGPC90aXRsZT4KICAgICAgICAgIDxzdHlsZT4KICAgICAgICAgICAgKiB7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgfQogICAgICAgICAgICBodG1sLCBib2R5IHsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgb3ZlcmZsb3c6IGhpZGRlbjsgfQogICAgICAgICAgICBpZnJhbWUgeyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBib3JkZXI6IG5vbmU7IH0KICAgICAgICAgICAgQG1lZGlhIHByaW50IHsKICAgICAgICAgICAgICBodG1sLCBib2R5LCBpZnJhbWUgeyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyB9CiAgICAgICAgICAgIH0KICAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgPC9oZWFkPgogICAgICAgIDxib2R5PgogICAgICAgICAgPGlmcmFtZSBzcmM9IiR7eWV9IiB0eXBlPSJhcHBsaWNhdGlvbi9wZGYiPjwvaWZyYW1lPgogICAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cuZm9jdXMoKTsKICAgICAgICAgICAgICAgIHdpbmRvdy5wcmludCgpOwogICAgICAgICAgICAgIH0sIDUwMCk7CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHdpbmRvdy5vbmFmdGVycHJpbnQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICB3aW5kb3cuY2xvc2UoKTsKICAgICAgICAgICAgfTsKICAgICAgICAgICAgLy8gU2FmZXR5IGNsb3NlIGFmdGVyIDIgbWludXRlcwogICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB3aW5kb3cuY2xvc2UoKTsgfSwgMTIwMDAwKTsKICAgICAgICAgIDxcL3NjcmlwdD4KICAgICAgICA8L2JvZHk+CiAgICAgICAgPC9odG1sPgogICAgICBgLEE9bmV3IEJsb2IoW3FdLHt0eXBlOiJ0ZXh0L2h0bWwifSksc2U9VVJMLmNyZWF0ZU9iamVjdFVSTChBKSxvZT13aW5kb3cub3BlbihzZSwiX2JsYW5rIiwid2lkdGg9ODAwLGhlaWdodD02MDAiKTtpZihvZSl7bGV0IGFlPXNldEludGVydmFsKCgpPT57b2UuY2xvc2VkJiYoY2xlYXJJbnRlcnZhbChhZSksVVJMLnJldm9rZU9iamVjdFVSTCh5ZSksVVJMLnJldm9rZU9iamVjdFVSTChzZSkpfSw1MDApO3NldFRpbWVvdXQoKCk9PntjbGVhckludGVydmFsKGFlKSxVUkwucmV2b2tlT2JqZWN0VVJMKHllKSxVUkwucmV2b2tlT2JqZWN0VVJMKHNlKX0sMTJlNCl9ZWxzZSB3aW5kb3cub3Blbih5ZSwiX2JsYW5rIiksc2V0VGltZW91dCgoKT0+VVJMLnJldm9rZU9iamVjdFVSTCh5ZSksNmU0KSxVUkwucmV2b2tlT2JqZWN0VVJMKHNlKX1jYXRjaChYKXtjb25zb2xlLmVycm9yKCJFcnJvciBwcmludGluZyBQREY6IixYKX19Z2V0Q29udGV4dE1lbnVJdGVtcygpe2xldCBYPVtdLHllPXdpbmRvdy5nZXRTZWxlY3Rpb24oKT8udG9TdHJpbmcoKXx8IiI7cmV0dXJuIHllJiYoWC5wdXNoKHtuYW1lOiJDb3B5IixpY29uTmFtZToibHVjaWRlOkNvcHkiLGFjdGlvbjppKGFzeW5jKCk9Pnthd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh5ZSl9LCJhY3Rpb24iKX0pLFgucHVzaCh7ZGl2aWRlcjohMH0pKSxYLnB1c2goe25hbWU6IkRvd25sb2FkIFBERiIsaWNvbk5hbWU6Imx1Y2lkZTpEb3dubG9hZCIsYWN0aW9uOmkoYXN5bmMoKT0+e2F3YWl0IHRoaXMuZG93bmxvYWRQZGYoKX0sImFjdGlvbiIpfSx7bmFtZToiUHJpbnQgUERGIixpY29uTmFtZToibHVjaWRlOlByaW50ZXIiLGFjdGlvbjppKGFzeW5jKCk9Pnthd2FpdCB0aGlzLnByaW50UGRmKCl9LCJhY3Rpb24iKX0pLFh9Z2V0IGNhblpvb21Jbigpe3JldHVybiB0aGlzLnZpZXdwb3J0TW9kZSE9PSJjdXN0b20ifHx0aGlzLmN1cnJlbnRab29tPHRoaXMuTUFOVUFMX01BWF9aT09NfWdldCBjYW5ab29tT3V0KCl7cmV0dXJuIHRoaXMudmlld3BvcnRNb2RlIT09ImN1c3RvbSJ8fHRoaXMuY3VycmVudFpvb20+dGhpcy5NQU5VQUxfTUlOX1pPT019ZW5zdXJlVmlld2VyUmVmcygpe3RoaXMudmlld2VyTWFpbnx8KHRoaXMudmlld2VyTWFpbj10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi52aWV3ZXItbWFpbiIpKSx0aGlzLnZpZXdlck1haW4mJiF0aGlzLnJlc2l6ZU9ic2VydmVyJiYodGhpcy5yZXNpemVPYnNlcnZlcj1uZXcgUmVzaXplT2JzZXJ2ZXIoKCk9Pnt0aGlzLm1lYXN1cmVWaWV3cG9ydERpbWVuc2lvbnMoKSx0aGlzLnBkZkRvY3VtZW50JiZ0aGlzLnJlUmVuZGVyQWxsUGFnZXMoKX0pLHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLnZpZXdlck1haW4pLHRoaXMubWVhc3VyZVZpZXdwb3J0RGltZW5zaW9ucygpLHRoaXMudmlld2VyTWFpbi5hZGRFdmVudExpc3RlbmVyKCJ3aGVlbCIsWD0+e2xldCBaPVguY3VycmVudFRhcmdldCx5ZT1aLnNjcm9sbFRvcCxxPVouc2Nyb2xsSGVpZ2h0LEE9Wi5jbGllbnRIZWlnaHQsc2U9WC5kZWx0YVksb2U9eWU9PT0wLGFlPU1hdGguYWJzKHllK0EtcSk8MTtzZTwwJiYhb2V8fHNlPjAmJiFhZT9YLnN0b3BQcm9wYWdhdGlvbigpOihzZTwwJiZvZXx8c2U+MCYmYWUpJiYoWC5wcmV2ZW50RGVmYXVsdCgpLFguc3RvcFByb3BhZ2F0aW9uKCkpfSx7cGFzc2l2ZTohMX0pKX1tZWFzdXJlVmlld3BvcnREaW1lbnNpb25zKCl7aWYoIXRoaXMudmlld2VyTWFpbil7dGhpcy52aWV3cG9ydERpbWVuc2lvbnM9e3dpZHRoOjAsaGVpZ2h0OjB9O3JldHVybn1sZXQgWD1nZXRDb21wdXRlZFN0eWxlKHRoaXMudmlld2VyTWFpbiksWj1wYXJzZUZsb2F0KFgucGFkZGluZ0xlZnR8fCIwIikrcGFyc2VGbG9hdChYLnBhZGRpbmdSaWdodHx8IjAiKSx5ZT1wYXJzZUZsb2F0KFgucGFkZGluZ1RvcHx8IjAiKStwYXJzZUZsb2F0KFgucGFkZGluZ0JvdHRvbXx8IjAiKSxxPU1hdGgubWF4KHRoaXMudmlld2VyTWFpbi5jbGllbnRXaWR0aC1aLDApLEE9TWF0aC5tYXgodGhpcy52aWV3ZXJNYWluLmNsaWVudEhlaWdodC15ZSwwKTt0aGlzLnZpZXdwb3J0RGltZW5zaW9ucz17d2lkdGg6cSxoZWlnaHQ6QX19cmVzb2x2ZUluaXRpYWxWaWV3cG9ydE1vZGUoKXt0eXBlb2YgdGhpcy5pbml0aWFsWm9vbT09Im51bWJlciI/KHRoaXMudmlld3BvcnRNb2RlPSJjdXN0b20iLHRoaXMuY3VycmVudFpvb209dGhpcy5ub3JtYWxpemVab29tKHRoaXMuaW5pdGlhbFpvb20sITApKTp0aGlzLmluaXRpYWxab29tPT09InBhZ2Utd2lkdGgiP3RoaXMudmlld3BvcnRNb2RlPSJwYWdlLXdpZHRoIjp0aGlzLmluaXRpYWxab29tPT09InBhZ2UtZml0Inx8dGhpcy5pbml0aWFsWm9vbT09PSJhdXRvIj90aGlzLnZpZXdwb3J0TW9kZT0icGFnZS1maXQiOnRoaXMudmlld3BvcnRNb2RlPSJhdXRvIix0aGlzLnZpZXdwb3J0TW9kZSE9PSJjdXN0b20iJiYodGhpcy5jdXJyZW50Wm9vbT0xKX1jb21wdXRlVmlld3BvcnQoWCl7dGhpcy5tZWFzdXJlVmlld3BvcnREaW1lbnNpb25zKCk7bGV0IFo9WC5nZXRWaWV3cG9ydCh7c2NhbGU6MX0pLHllO3N3aXRjaCh0aGlzLnZpZXdwb3J0TW9kZSl7Y2FzZSJwYWdlLXdpZHRoIjp7eWU9KHRoaXMudmlld3BvcnREaW1lbnNpb25zLndpZHRofHxaLndpZHRoKS9aLndpZHRoO2JyZWFrfWNhc2UicGFnZS1maXQiOmNhc2UiYXV0byI6e2xldCBBPXRoaXMudmlld3BvcnREaW1lbnNpb25zLndpZHRofHxaLndpZHRoLHNlPXRoaXMudmlld3BvcnREaW1lbnNpb25zLmhlaWdodHx8Wi5oZWlnaHQsb2U9QS9aLndpZHRoLGFlPXNlL1ouaGVpZ2h0O3llPU1hdGgubWluKG9lLGFlKTticmVha31kZWZhdWx0Ont5ZT10aGlzLm5vcm1hbGl6ZVpvb20odGhpcy5jdXJyZW50Wm9vbXx8MSwhMSk7YnJlYWt9fSghTnVtYmVyLmlzRmluaXRlKHllKXx8eWU8PTApJiYoeWU9MSk7bGV0IHE9dGhpcy52aWV3cG9ydE1vZGU9PT0iY3VzdG9tIj90aGlzLm5vcm1hbGl6ZVpvb20oeWUsITApOnRoaXMubm9ybWFsaXplWm9vbSh5ZSwhMSk7cmV0dXJuIHRoaXMudmlld3BvcnRNb2RlIT09ImN1c3RvbSImJih0aGlzLmN1cnJlbnRab29tPXEpLFguZ2V0Vmlld3BvcnQoe3NjYWxlOnF9KX1ub3JtYWxpemVab29tKFgsWil7bGV0IHllPVo/dGhpcy5NQU5VQUxfTUlOX1pPT006dGhpcy5BQlNPTFVURV9NSU5fWk9PTSxxPVo/dGhpcy5NQU5VQUxfTUFYX1pPT006dGhpcy5BQlNPTFVURV9NQVhfWk9PTTtyZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgoWCx5ZSkscSl9YXN5bmMgY2xlYW51cERvY3VtZW50KCl7aWYodGhpcy5yZW5kZXJBYm9ydENvbnRyb2xsZXImJih0aGlzLnJlbmRlckFib3J0Q29udHJvbGxlci5hYm9ydCgpLHRoaXMucmVuZGVyQWJvcnRDb250cm9sbGVyPW51bGwpLHRoaXMuY3VycmVudFJlbmRlclByb21pc2Upe3RyeXthd2FpdCB0aGlzLmN1cnJlbnRSZW5kZXJQcm9taXNlfWNhdGNoe310aGlzLmN1cnJlbnRSZW5kZXJQcm9taXNlPW51bGx9dGhpcy5jdXJyZW50UmVuZGVyVGFzaz1udWxsLHRoaXMucGFnZVJlbmRlclRhc2tzLmZvckVhY2goWD0+e3RyeXtYLmNhbmNlbCgpfWNhdGNoe319KSx0aGlzLnBhZ2VSZW5kZXJUYXNrcy5jbGVhcigpLHRoaXMudGV4dExheWVyUmVuZGVyVGFza3MuZm9yRWFjaChYPT57dHJ5e1guY2FuY2VsPy4oKX1jYXRjaHt9fSksdGhpcy50ZXh0TGF5ZXJSZW5kZXJUYXNrcy5jbGVhcigpO2ZvcihsZXQgWCBvZiB0aGlzLnRodW1ibmFpbFJlbmRlclRhc2tzfHxbXSl0cnl7WC5jYW5jZWwoKX1jYXRjaHt9aWYodGhpcy50aHVtYm5haWxSZW5kZXJUYXNrcz1bXSx0aGlzLnJlbmRlclN0YXRlPSJpZGxlIix0aGlzLnBhZ2VSZW5kZXJpbmc9ITEsdGhpcy5wYWdlTnVtUGVuZGluZz1udWxsLHRoaXMudGh1bWJuYWlsRGF0YT1bXSx0aGlzLnBhZ2VEYXRhPVtdLHRoaXMuZG9jdW1lbnRJZD0iIix0aGlzLmNhbnZhcyYmdGhpcy5jdHgmJnRoaXMuY3R4LmNsZWFyUmVjdCgwLDAsdGhpcy5jYW52YXMud2lkdGgsdGhpcy5jYW52YXMuaGVpZ2h0KSx0aGlzLnBkZkRvY3VtZW50KXRyeXt0aGlzLnBkZkRvY3VtZW50LmRlc3Ryb3koKX1jYXRjaChYKXtjb25zb2xlLmVycm9yKCJFcnJvciBkZXN0cm95aW5nIFBERiBkb2N1bWVudDoiLFgpfXRoaXMucGRmRG9jdW1lbnQ9bnVsbCx0aGlzLnJlcXVlc3RVcGRhdGUoKX1zdGF0aWN7V3MoYSx0KX19O3JldHVybiBrZT1hfSkoKX0pO3ZhciBsa2EsY2thPWcoKCk9PntwZSgpO2xrYT1pKCgpPT53YAogIDxzdHlsZT4KICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgIHBhZGRpbmc6IDQ4cHg7CiAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjhmOWZhIiwiIzBhMGEwYSIpfTsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgZ2FwOiA0MHB4OwogICAgfQoKICAgIC5zZWN0aW9uIHsKICAgICAgbWF4LXdpZHRoOiA5MDBweDsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgfQoKICAgIC5zZWN0aW9uLXRpdGxlIHsKICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICBmb250LXdlaWdodDogNjAwOwogICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07CiAgICB9CgogICAgLnNlY3Rpb24tZGVzY3JpcHRpb24gewogICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICB9CgogICAgLnByZXZpZXctaW1hZ2UgewogICAgICBoZWlnaHQ6IDQwMHB4OwogICAgfQoKICAgIC5wcmV2aWV3LXBkZiB7CiAgICAgIGhlaWdodDogNjAwcHg7CiAgICB9CiAgPC9zdHlsZT4KCiAgPGRpdiBjbGFzcz0iZGVtby1jb250YWluZXIiPgogICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPkltYWdlIFByZXZpZXcgKFVSTCk8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1kZXNjcmlwdGlvbiI+QXV0by1kZXRlY3RzIGltYWdlIGZyb20gVVJMIGV4dGVuc2lvbiBhbmQgcmVuZGVycyB3aXRoIHRoZSBpbWFnZSB2aWV3ZXIuPC9kaXY+CiAgICAgIDxkZWVzLXByZXZpZXcKICAgICAgICBjbGFzcz0icHJldmlldy1pbWFnZSIKICAgICAgICB1cmw9Imh0dHBzOi8vaW1hZ2VzLnVuc3BsYXNoLmNvbS9waG90by0xNTA2NzQ0MDM4MTM2LTQ2MjczODM0YjNmYj93PTEyMDAiCiAgICAgICAgZmlsZW5hbWU9ImxhbmRzY2FwZS5qcGciCiAgICAgID48L2RlZXMtcHJldmlldz4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5QREYgUHJldmlldyAoVVJMKTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj5BdXRvLWRldGVjdHMgUERGIGFuZCBkaXNwbGF5cyB3aXRoIHRoZSBQREYgdmlld2VyIGluY2x1ZGluZyB0b29sYmFyLjwvZGl2PgogICAgICA8ZGVlcy1wcmV2aWV3CiAgICAgICAgY2xhc3M9InByZXZpZXctcGRmIgogICAgICAgIHVybD0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL21vemlsbGEvcGRmLmpzL2JhMmVkZWFlL3dlYi9jb21wcmVzc2VkLnRyYWNlbW9ua2V5LXBsZGktMDkucGRmIgogICAgICAgIGZpbGVuYW1lPSJyZXNlYXJjaC1wYXBlci5wZGYiCiAgICAgID48L2RlZXMtcHJldmlldz4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5Db2RlIFByZXZpZXcgKFRleHQgQ29udGVudCk8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1kZXNjcmlwdGlvbiI+VHlwZVNjcmlwdCBjb2RlIGRpc3BsYXllZCB3aXRoIHN5bnRheCBoaWdobGlnaHRpbmcgdmlhIHRoZSBjb2RlYm94LjwvZGl2PgogICAgICA8ZGVlcy1wcmV2aWV3CiAgICAgICAgZmlsZW5hbWU9ImV4YW1wbGUudHMiCiAgICAgICAgbGFuZ3VhZ2U9InR5cGVzY3JpcHQiCiAgICAgICAgLnRleHRDb250ZW50PSR7YGltcG9ydCB7IGh0bWwsIGNzcyB9IGZyb20gJ2xpdCc7CgpleHBvcnQgY2xhc3MgTXlDb21wb25lbnQgZXh0ZW5kcyBMaXRFbGVtZW50IHsKICBzdGF0aWMgc3R5bGVzID0gY3NzXGAKICAgIDpob3N0IHsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICB9CiAgXGA7CgogIHJlbmRlcigpIHsKICAgIHJldHVybiBodG1sXGA8aDE+SGVsbG8gV29ybGQ8L2gxPlxgOwogIH0KfWB9CiAgICAgID48L2RlZXMtcHJldmlldz4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5BdWRpbyBQcmV2aWV3IChVUkwpPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tZGVzY3JpcHRpb24iPkF1ZGlvIGZpbGUgZGV0ZWN0ZWQgYnkgZXh0ZW5zaW9uLCBzaG93biB3aXRoIHdhdmVmb3JtIHBsYXllci48L2Rpdj4KICAgICAgPGRlZXMtcHJldmlldwogICAgICAgIHVybD0iaHR0cHM6Ly93d3cuc291bmRoZWxpeC5jb20vZXhhbXBsZXMvbXAzL1NvdW5kSGVsaXgtU29uZy0xLm1wMyIKICAgICAgICBmaWxlbmFtZT0ic29uZy5tcDMiCiAgICAgID48L2RlZXMtcHJldmlldz4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5WaWRlbyBQcmV2aWV3IChVUkwpPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tZGVzY3JpcHRpb24iPlZpZGVvIGZpbGUgZGV0ZWN0ZWQgZnJvbSBVUkwsIHJlbmRlcmVkIHdpdGggY3VzdG9tIHZpZGVvIGNvbnRyb2xzLjwvZGl2PgogICAgICA8ZGVlcy1wcmV2aWV3CiAgICAgICAgdXJsPSJodHRwczovL2NvbW1vbmRhdGFzdG9yYWdlLmdvb2dsZWFwaXMuY29tL2d0di12aWRlb3MtYnVja2V0L3NhbXBsZS9CaWdCdWNrQnVubnkubXA0IgogICAgICAgIGZpbGVuYW1lPSJiaWctYnVjay1idW5ueS5tcDQiCiAgICAgID48L2RlZXMtcHJldmlldz4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5FeHBsaWNpdCBUeXBlIE92ZXJyaWRlPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tZGVzY3JpcHRpb24iPkZvcmNlIGNvbnRlbnQgdHlwZSB0byAndGV4dCcgZXZlbiB0aG91Z2ggdGhlIFVSTCBoYXMgbm8gZXh0ZW5zaW9uLjwvZGl2PgogICAgICA8ZGVlcy1wcmV2aWV3CiAgICAgICAgY29udGVudFR5cGU9InRleHQiCiAgICAgICAgLnRleHRDb250ZW50PSR7YFRoaXMgaXMgcGxhaW4gdGV4dCBjb250ZW50LgpJdCBwcmVzZXJ2ZXMgd2hpdGVzcGFjZSBhbmQgbGluZSBicmVha3MuCgpVc2VmdWwgZm9yIGxvZyBmaWxlcywgUkVBRE1FcywgZXRjLmB9CiAgICAgICAgZmlsZW5hbWU9Im5vdGVzLnR4dCIKICAgICAgPjwvZGVlcy1wcmV2aWV3PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPlVua25vd24gVHlwZTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj5XaGVuIGNvbnRlbnQgdHlwZSBjYW5ub3QgYmUgZGV0ZWN0ZWQsIHNob3dzIGEgcGxhY2Vob2xkZXIuPC9kaXY+CiAgICAgIDxkZWVzLXByZXZpZXcKICAgICAgICBmaWxlbmFtZT0iZGF0YS5iaW4iCiAgICAgICAgY29udGVudFR5cGU9InVua25vd24iCiAgICAgID48L2RlZXMtcHJldmlldz4KICAgIDwvZGl2PgogIDwvZGl2PgpgLCJkZW1vRnVuYyIpfSk7dmFyIEhvLHZzLGRrYSxHZXMsS2VzLFllcyxaZXMsdWthPWcoKCk9PntwZSgpO3hsdCgpO3lsdCgpO3dsdCgpO2FsdCgpO2tsdCgpO0dhKCk7Y2thKCk7SG89ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LHZzPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxka2E9e2pwZzoiaW1hZ2UiLGpwZWc6ImltYWdlIixwbmc6ImltYWdlIixnaWY6ImltYWdlIix3ZWJwOiJpbWFnZSIsc3ZnOiJpbWFnZSIsYm1wOiJpbWFnZSIsYXZpZjoiaW1hZ2UiLGljbzoiaW1hZ2UiLHBkZjoicGRmIixtcDM6ImF1ZGlvIix3YXY6ImF1ZGlvIixvZ2c6ImF1ZGlvIixmbGFjOiJhdWRpbyIsYWFjOiJhdWRpbyIsbTRhOiJhdWRpbyIsb3B1czoiYXVkaW8iLHdlYmE6ImF1ZGlvIixtcDQ6InZpZGVvIix3ZWJtOiJ2aWRlbyIsbW92OiJ2aWRlbyIsYXZpOiJ2aWRlbyIsbWt2OiJ2aWRlbyIsb2d2OiJ2aWRlbyIsdHM6ImNvZGUiLGpzOiJjb2RlIixqc3g6ImNvZGUiLHRzeDoiY29kZSIsanNvbjoiY29kZSIsaHRtbDoiY29kZSIsY3NzOiJjb2RlIixzY3NzOiJjb2RlIixsZXNzOiJjb2RlIixweToiY29kZSIsamF2YToiY29kZSIsZ286ImNvZGUiLHJzOiJjb2RlIix5YW1sOiJjb2RlIix5bWw6ImNvZGUiLHhtbDoiY29kZSIsc3FsOiJjb2RlIixzaDoiY29kZSIsYmFzaDoiY29kZSIsenNoOiJjb2RlIixtZDoiY29kZSIsYzoiY29kZSIsY3BwOiJjb2RlIixoOiJjb2RlIixocHA6ImNvZGUiLHJiOiJjb2RlIixwaHA6ImNvZGUiLHN3aWZ0OiJjb2RlIixrdDoiY29kZSIsdHh0OiJ0ZXh0Iixsb2c6InRleHQiLGNzdjoidGV4dCIsZW52OiJ0ZXh0In0sR2VzPXsiaW1hZ2UvIjoiaW1hZ2UiLCJhdWRpby8iOiJhdWRpbyIsInZpZGVvLyI6InZpZGVvIiwiYXBwbGljYXRpb24vcGRmIjoicGRmIn0sS2VzPXt0czoidHlwZXNjcmlwdCIsdHN4OiJ0eXBlc2NyaXB0IixqczoiamF2YXNjcmlwdCIsanN4OiJqYXZhc2NyaXB0Iixqc29uOiJqc29uIixodG1sOiJ4bWwiLHhtbDoieG1sIixjc3M6ImNzcyIsc2Nzczoic2NzcyIsbGVzczoibGVzcyIscHk6InB5dGhvbiIsamF2YToiamF2YSIsZ286ImdvIixyczoicnVzdCIseWFtbDoieWFtbCIseW1sOiJ5YW1sIixzcWw6InNxbCIsc2g6ImJhc2giLGJhc2g6ImJhc2giLHpzaDoiYmFzaCIsYzoiYyIsY3BwOiJjcHAiLGg6ImMiLGhwcDoiY3BwIixyYjoicnVieSIscGhwOiJwaHAiLHN3aWZ0OiJzd2lmdCIsa3Q6ImtvdGxpbiIsbWQ6Im1hcmtkb3duIn0sWWVzPXtpbWFnZToibHVjaWRlOkltYWdlIixwZGY6Imx1Y2lkZTpGaWxlVGV4dCIsYXVkaW86Imx1Y2lkZTpNdXNpYyIsdmlkZW86Imx1Y2lkZTpWaWRlbyIsY29kZToibHVjaWRlOkNvZGUiLHRleHQ6Imx1Y2lkZTpGaWxlVGV4dCIsdW5rbm93bjoibHVjaWRlOkZpbGUifSxaZXM9KCgpPT57bGV0IHM9W25lKCJkZWVzLXByZXZpZXciKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXSxPLCQ9W10sRT1bXSxILGs9W10sUz1bXSxJLFA9W10sUj1bXSxLLFY9W10sVz1bXSxtZSxCPVtdLFU9W10saGUsRj1bXSxqPVtdLHVlLGxlPVtdLFE9W10saWUsdGU9W10sZWU9W10sa2UsWD1bXSxaPVtdLHllLHE9W10sQT1bXTt2YXIgc2U9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNQcmV2aWV3Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IG9lPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woKV0scD1bTCh7YXR0cmlidXRlOiExfSldLGM9W0woKV0seD1bTCgpXSx5PVtMKCldLE49W0woKV0sTz1bTCgpXSxIPVtMKCldLEk9W0woe3R5cGU6Qm9vbGVhbn0pXSxLPVtMKHt0eXBlOkJvb2xlYW59KV0sbWU9W1koKV0saGU9W1koKV0sdWU9W1koKV0saWU9W1koKV0sa2U9W1koKV0seWU9W1koKV0sSG8odGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ1cmwiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYWU9PiJ1cmwiaW4gYWUsImhhcyIpLGdldDppKGFlPT5hZS51cmwsImdldCIpLHNldDppKChhZSxUZSk9PnthZS51cmw9VGV9LCJzZXQiKX0sbWV0YWRhdGE6b2V9LG8sbCksSG8odGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJmaWxlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGFlPT4iZmlsZSJpbiBhZSwiaGFzIiksZ2V0OmkoYWU9PmFlLmZpbGUsImdldCIpLHNldDppKChhZSxUZSk9PnthZS5maWxlPVRlfSwic2V0Iil9LG1ldGFkYXRhOm9lfSxkLHUpLEhvKHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYmFzZTY0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGFlPT4iYmFzZTY0ImluIGFlLCJoYXMiKSxnZXQ6aShhZT0+YWUuYmFzZTY0LCJnZXQiKSxzZXQ6aSgoYWUsVGUpPT57YWUuYmFzZTY0PVRlfSwic2V0Iil9LG1ldGFkYXRhOm9lfSxiLHYpLEhvKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToidGV4dENvbnRlbnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYWU9PiJ0ZXh0Q29udGVudCJpbiBhZSwiaGFzIiksZ2V0OmkoYWU9PmFlLnRleHRDb250ZW50LCJnZXQiKSxzZXQ6aSgoYWUsVGUpPT57YWUudGV4dENvbnRlbnQ9VGV9LCJzZXQiKX0sbWV0YWRhdGE6b2V9LG0sZiksSG8odGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjb250ZW50VHlwZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShhZT0+ImNvbnRlbnRUeXBlImluIGFlLCJoYXMiKSxnZXQ6aShhZT0+YWUuY29udGVudFR5cGUsImdldCIpLHNldDppKChhZSxUZSk9PnthZS5jb250ZW50VHlwZT1UZX0sInNldCIpfSxtZXRhZGF0YTpvZX0sTSx6KSxIbyh0aGlzLG51bGwsTix7a2luZDoiYWNjZXNzb3IiLG5hbWU6Imxhbmd1YWdlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGFlPT4ibGFuZ3VhZ2UiaW4gYWUsImhhcyIpLGdldDppKGFlPT5hZS5sYW5ndWFnZSwiZ2V0Iiksc2V0OmkoKGFlLFRlKT0+e2FlLmxhbmd1YWdlPVRlfSwic2V0Iil9LG1ldGFkYXRhOm9lfSxDLF8pLEhvKHRoaXMsbnVsbCxPLHtraW5kOiJhY2Nlc3NvciIsbmFtZToibWltZVR5cGUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYWU9PiJtaW1lVHlwZSJpbiBhZSwiaGFzIiksZ2V0OmkoYWU9PmFlLm1pbWVUeXBlLCJnZXQiKSxzZXQ6aSgoYWUsVGUpPT57YWUubWltZVR5cGU9VGV9LCJzZXQiKX0sbWV0YWRhdGE6b2V9LCQsRSksSG8odGhpcyxudWxsLEgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJmaWxlbmFtZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShhZT0+ImZpbGVuYW1lImluIGFlLCJoYXMiKSxnZXQ6aShhZT0+YWUuZmlsZW5hbWUsImdldCIpLHNldDppKChhZSxUZSk9PnthZS5maWxlbmFtZT1UZX0sInNldCIpfSxtZXRhZGF0YTpvZX0sayxTKSxIbyh0aGlzLG51bGwsSSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dUb29sYmFyIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGFlPT4ic2hvd1Rvb2xiYXIiaW4gYWUsImhhcyIpLGdldDppKGFlPT5hZS5zaG93VG9vbGJhciwiZ2V0Iiksc2V0OmkoKGFlLFRlKT0+e2FlLnNob3dUb29sYmFyPVRlfSwic2V0Iil9LG1ldGFkYXRhOm9lfSxQLFIpLEhvKHRoaXMsbnVsbCxLLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2hvd0ZpbGVuYW1lIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGFlPT4ic2hvd0ZpbGVuYW1lImluIGFlLCJoYXMiKSxnZXQ6aShhZT0+YWUuc2hvd0ZpbGVuYW1lLCJnZXQiKSxzZXQ6aSgoYWUsVGUpPT57YWUuc2hvd0ZpbGVuYW1lPVRlfSwic2V0Iil9LG1ldGFkYXRhOm9lfSxWLFcpLEhvKHRoaXMsbnVsbCxtZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InJlc29sdmVkVHlwZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShhZT0+InJlc29sdmVkVHlwZSJpbiBhZSwiaGFzIiksZ2V0OmkoYWU9PmFlLnJlc29sdmVkVHlwZSwiZ2V0Iiksc2V0OmkoKGFlLFRlKT0+e2FlLnJlc29sdmVkVHlwZT1UZX0sInNldCIpfSxtZXRhZGF0YTpvZX0sQixVKSxIbyh0aGlzLG51bGwsaGUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJyZXNvbHZlZFNyYyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShhZT0+InJlc29sdmVkU3JjImluIGFlLCJoYXMiKSxnZXQ6aShhZT0+YWUucmVzb2x2ZWRTcmMsImdldCIpLHNldDppKChhZSxUZSk9PnthZS5yZXNvbHZlZFNyYz1UZX0sInNldCIpfSxtZXRhZGF0YTpvZX0sRixqKSxIbyh0aGlzLG51bGwsdWUse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJyZXNvbHZlZFRleHQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYWU9PiJyZXNvbHZlZFRleHQiaW4gYWUsImhhcyIpLGdldDppKGFlPT5hZS5yZXNvbHZlZFRleHQsImdldCIpLHNldDppKChhZSxUZSk9PnthZS5yZXNvbHZlZFRleHQ9VGV9LCJzZXQiKX0sbWV0YWRhdGE6b2V9LGxlLFEpLEhvKHRoaXMsbnVsbCxpZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InJlc29sdmVkTGFuZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShhZT0+InJlc29sdmVkTGFuZyJpbiBhZSwiaGFzIiksZ2V0OmkoYWU9PmFlLnJlc29sdmVkTGFuZywiZ2V0Iiksc2V0OmkoKGFlLFRlKT0+e2FlLnJlc29sdmVkTGFuZz1UZX0sInNldCIpfSxtZXRhZGF0YTpvZX0sdGUsZWUpLEhvKHRoaXMsbnVsbCxrZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImxvYWRpbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYWU9PiJsb2FkaW5nImluIGFlLCJoYXMiKSxnZXQ6aShhZT0+YWUubG9hZGluZywiZ2V0Iiksc2V0OmkoKGFlLFRlKT0+e2FlLmxvYWRpbmc9VGV9LCJzZXQiKX0sbWV0YWRhdGE6b2V9LFgsWiksSG8odGhpcyxudWxsLHllLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZXJyb3IiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoYWU9PiJlcnJvciJpbiBhZSwiaGFzIiksZ2V0OmkoYWU9PmFlLmVycm9yLCJnZXQiKSxzZXQ6aSgoYWUsVGUpPT57YWUuZXJyb3I9VGV9LCJzZXQiKX0sbWV0YWRhdGE6b2V9LHEsQSksSG8obnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6b2V9LG51bGwsdCksc2U9YT1lLnZhbHVlLG9lJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm9lfSl9c3RhdGljIGRlbW89bGthO3N0YXRpYyBkZW1vR3JvdXBzPVsiTWVkaWEiLCJEYXRhIFZpZXciXTsjZT12cyh0aGlzLG8sIiIpO2dldCB1cmwoKXtyZXR1cm4gdGhpcy4jZX1zZXQgdXJsKG9lKXt0aGlzLiNlPW9lfSN0PSh2cyh0aGlzLGwpLHZzKHRoaXMsZCx2b2lkIDApKTtnZXQgZmlsZSgpe3JldHVybiB0aGlzLiN0fXNldCBmaWxlKG9lKXt0aGlzLiN0PW9lfSNhPSh2cyh0aGlzLHUpLHZzKHRoaXMsYiwiIikpO2dldCBiYXNlNjQoKXtyZXR1cm4gdGhpcy4jYX1zZXQgYmFzZTY0KG9lKXt0aGlzLiNhPW9lfSNzPSh2cyh0aGlzLHYpLHZzKHRoaXMsbSwiIikpO2dldCB0ZXh0Q29udGVudCgpe3JldHVybiB0aGlzLiNzfXNldCB0ZXh0Q29udGVudChvZSl7dGhpcy4jcz1vZX0jaT0odnModGhpcyxmKSx2cyh0aGlzLE0sdm9pZCAwKSk7Z2V0IGNvbnRlbnRUeXBlKCl7cmV0dXJuIHRoaXMuI2l9c2V0IGNvbnRlbnRUeXBlKG9lKXt0aGlzLiNpPW9lfSNyPSh2cyh0aGlzLHopLHZzKHRoaXMsQywiIikpO2dldCBsYW5ndWFnZSgpe3JldHVybiB0aGlzLiNyfXNldCBsYW5ndWFnZShvZSl7dGhpcy4jcj1vZX0jbz0odnModGhpcyxfKSx2cyh0aGlzLCQsIiIpKTtnZXQgbWltZVR5cGUoKXtyZXR1cm4gdGhpcy4jb31zZXQgbWltZVR5cGUob2Upe3RoaXMuI289b2V9I249KHZzKHRoaXMsRSksdnModGhpcyxrLCIiKSk7Z2V0IGZpbGVuYW1lKCl7cmV0dXJuIHRoaXMuI259c2V0IGZpbGVuYW1lKG9lKXt0aGlzLiNuPW9lfSNsPSh2cyh0aGlzLFMpLHZzKHRoaXMsUCwhMCkpO2dldCBzaG93VG9vbGJhcigpe3JldHVybiB0aGlzLiNsfXNldCBzaG93VG9vbGJhcihvZSl7dGhpcy4jbD1vZX0jYz0odnModGhpcyxSKSx2cyh0aGlzLFYsITApKTtnZXQgc2hvd0ZpbGVuYW1lKCl7cmV0dXJuIHRoaXMuI2N9c2V0IHNob3dGaWxlbmFtZShvZSl7dGhpcy4jYz1vZX0jZD0odnModGhpcyxXKSx2cyh0aGlzLEIsInVua25vd24iKSk7Z2V0IHJlc29sdmVkVHlwZSgpe3JldHVybiB0aGlzLiNkfXNldCByZXNvbHZlZFR5cGUob2Upe3RoaXMuI2Q9b2V9I3U9KHZzKHRoaXMsVSksdnModGhpcyxGLCIiKSk7Z2V0IHJlc29sdmVkU3JjKCl7cmV0dXJuIHRoaXMuI3V9c2V0IHJlc29sdmVkU3JjKG9lKXt0aGlzLiN1PW9lfSNwPSh2cyh0aGlzLGopLHZzKHRoaXMsbGUsIiIpKTtnZXQgcmVzb2x2ZWRUZXh0KCl7cmV0dXJuIHRoaXMuI3B9c2V0IHJlc29sdmVkVGV4dChvZSl7dGhpcy4jcD1vZX0jaD0odnModGhpcyxRKSx2cyh0aGlzLHRlLCJ0ZXh0IikpO2dldCByZXNvbHZlZExhbmcoKXtyZXR1cm4gdGhpcy4jaH1zZXQgcmVzb2x2ZWRMYW5nKG9lKXt0aGlzLiNoPW9lfSNmPSh2cyh0aGlzLGVlKSx2cyh0aGlzLFgsITEpKTtnZXQgbG9hZGluZygpe3JldHVybiB0aGlzLiNmfXNldCBsb2FkaW5nKG9lKXt0aGlzLiNmPW9lfSNtPSh2cyh0aGlzLFopLHZzKHRoaXMscSwiIikpO2dldCBlcnJvcigpe3JldHVybiB0aGlzLiNtfXNldCBlcnJvcihvZSl7dGhpcy4jbT1vZX1vYmplY3RVcmw9KHZzKHRoaXMsQSksIiIpO3JlbmRlcigpe2xldCBvZT10aGlzLmZpbGVuYW1lfHx0aGlzLmZpbGU/Lm5hbWV8fHRoaXMuZ2V0RmlsZW5hbWVGcm9tVXJsKCl8fCIiO3JldHVybiB3YAogICAgICA8c3R5bGU+CiAgICAgICAgOmhvc3QgewogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIHNhbnMtc2VyaWY7CiAgICAgICAgfQoKICAgICAgICAucHJldmlldy1jb250YWluZXIgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsIiMyNzI3MmEiKX07CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDkwOTBiIil9OwogICAgICAgIH0KCiAgICAgICAgLmhlYWRlci1iYXIgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBnYXA6IDhweDsKICAgICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgICAgIGhlaWdodDogNDBweDsKICAgICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjlmYWZiIiwiaHNsKDIxNSAyMCUgMTUlKSIpfTsKICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2U1ZTdlYiIsImhzbCgyMTcgMjUlIDIyJSkiKX07CiAgICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICB9CgogICAgICAgIC5oZWFkZXItaWNvbiB7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUgMTYlIDQ1JSkiLCJoc2woMjE1IDE2JSA3NSUpIil9OwogICAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgfQoKICAgICAgICAuaGVhZGVyLWZpbGVuYW1lIHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTA5MGIiLCIjZmFmYWZhIil9OwogICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICAgIGZsZXg6IDE7CiAgICAgICAgfQoKICAgICAgICAuaGVhZGVyLWJhZGdlIHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgICBwYWRkaW5nOiAycHggOHB4OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoInJnYmEoNTksIDEzMCwgMjQ2LCAwLjEpIiwicmdiYSg1OSwgMTMwLCAyNDYsIDAuMTUpIil9OwogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzYwYTVmYSIpfTsKICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICB9CgogICAgICAgIC5jb250ZW50LWFyZWEgewogICAgICAgICAgZmxleDogMTsKICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICBtaW4taGVpZ2h0OiAyMDBweDsKICAgICAgICB9CgogICAgICAgIC5jb250ZW50LWFyZWEgPiAqIHsKICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIH0KCiAgICAgICAgZGVlcy1pbWFnZS12aWV3ZXIgewogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgfQoKICAgICAgICBkZWVzLXBkZi12aWV3ZXIgewogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgfQoKICAgICAgICBkZWVzLXZpZGVvLXZpZXdlciB7CiAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB9CgogICAgICAgIGRlZXMtYXVkaW8tdmlld2VyIHsKICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIH0KCiAgICAgICAgZGVlcy1kYXRhdmlldy1jb2RlYm94IHsKICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIH0KCiAgICAgICAgLnRleHQtdmlld2VyIHsKICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgICBmb250LWZhbWlseTogdWktbW9ub3NwYWNlLCBTRk1vbm8tUmVndWxhciwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsIG1vbm9zcGFjZTsKICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTA5MGIiLCIjZmFmYWZhIil9OwogICAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogICAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIH0KCiAgICAgICAgLnBsYWNlaG9sZGVyIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgbWluLWhlaWdodDogMjAwcHg7CiAgICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNhMWExYWEiLCIjNzE3MTdhIil9OwogICAgICAgIH0KCiAgICAgICAgLnBsYWNlaG9sZGVyIGRlZXMtaWNvbiB7CiAgICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgICAgICBmb250LXNpemU6IDMycHg7CiAgICAgICAgfQoKICAgICAgICAucGxhY2Vob2xkZXItdGV4dCB7CiAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgfQoKICAgICAgICAubG9hZGluZy1jb250YWluZXIgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgIG1pbi1oZWlnaHQ6IDIwMHB4OwogICAgICAgIH0KCiAgICAgICAgLmxvYWRpbmctc3Bpbm5lciB7CiAgICAgICAgICB3aWR0aDogMzJweDsKICAgICAgICAgIGhlaWdodDogMzJweDsKICAgICAgICAgIGJvcmRlcjogM3B4IHNvbGlkICR7aC5iZFRoZW1lKCIjZTVlN2ViIiwiIzNmM2Y0NiIpfTsKICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzYwYTVmYSIpfTsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgIGFuaW1hdGlvbjogc3BpbiAwLjhzIGxpbmVhciBpbmZpbml0ZTsKICAgICAgICB9CgogICAgICAgIEBrZXlmcmFtZXMgc3BpbiB7CiAgICAgICAgICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0KICAgICAgICB9CgogICAgICAgIC5lcnJvci1jb250YWluZXIgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICBnYXA6IDhweDsKICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgIG1pbi1oZWlnaHQ6IDIwMHB4OwogICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZGMyNjI2IiwiI2Y4NzE3MSIpfTsKICAgICAgICB9CgogICAgICAgIC5lcnJvci1jb250YWluZXIgZGVlcy1pY29uIHsKICAgICAgICAgIGZvbnQtc2l6ZTogMzJweDsKICAgICAgICB9CgogICAgICAgIC5lcnJvci10ZXh0IHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICB9CiAgICAgIDwvc3R5bGU+CgogICAgICA8ZGl2IGNsYXNzPSJwcmV2aWV3LWNvbnRhaW5lciI+CiAgICAgICAgJHt0aGlzLnNob3dGaWxlbmFtZSYmb2U/d2AKICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlci1iYXIiPgogICAgICAgICAgICA8ZGVlcy1pY29uIGNsYXNzPSJoZWFkZXItaWNvbiIgaWNvbj0iJHtZZXNbdGhpcy5yZXNvbHZlZFR5cGVdfSI+PC9kZWVzLWljb24+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJoZWFkZXItZmlsZW5hbWUiPiR7b2V9PC9zcGFuPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iaGVhZGVyLWJhZGdlIj4ke3RoaXMucmVzb2x2ZWRUeXBlfTwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIGA6IiJ9CgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQtYXJlYSI+CiAgICAgICAgICAke3RoaXMuZXJyb3I/d2AKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZXJyb3ItY29udGFpbmVyIj4KICAgICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpBbGVydFRyaWFuZ2xlIj48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZXJyb3ItdGV4dCI+JHt0aGlzLmVycm9yfTwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgOnRoaXMubG9hZGluZz93YAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2FkaW5nLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9hZGluZy1zcGlubmVyIj48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgOnRoaXMucmVuZGVyQ29udGVudCgpfQogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9cmVuZGVyQ29udGVudCgpe3N3aXRjaCh0aGlzLnJlc29sdmVkVHlwZSl7Y2FzZSJpbWFnZSI6cmV0dXJuIHdgCiAgICAgICAgICA8ZGVlcy1pbWFnZS12aWV3ZXIKICAgICAgICAgICAgLnNyYz0ke3RoaXMucmVzb2x2ZWRTcmN9CiAgICAgICAgICAgIC5zaG93VG9vbGJhcj0ke3RoaXMuc2hvd1Rvb2xiYXJ9CiAgICAgICAgICAgIGFsdD0iJHt0aGlzLmZpbGVuYW1lfHwiIn0iCiAgICAgICAgICA+PC9kZWVzLWltYWdlLXZpZXdlcj4KICAgICAgICBgO2Nhc2UicGRmIjpyZXR1cm4gd2AKICAgICAgICAgIDxkZWVzLXBkZi12aWV3ZXIKICAgICAgICAgICAgLnBkZlVybD0ke3RoaXMucmVzb2x2ZWRTcmN9CiAgICAgICAgICAgIC5zaG93VG9vbGJhcj0ke3RoaXMuc2hvd1Rvb2xiYXJ9CiAgICAgICAgICAgIGluaXRpYWxab29tPSJwYWdlLWZpdCIKICAgICAgICAgID48L2RlZXMtcGRmLXZpZXdlcj4KICAgICAgICBgO2Nhc2UiYXVkaW8iOnJldHVybiB3YAogICAgICAgICAgPGRlZXMtYXVkaW8tdmlld2VyCiAgICAgICAgICAgIC5zcmM9JHt0aGlzLnJlc29sdmVkU3JjfQogICAgICAgICAgICAudGl0bGU9JHt0aGlzLmZpbGVuYW1lfHx0aGlzLmZpbGU/Lm5hbWV8fCIifQogICAgICAgICAgPjwvZGVlcy1hdWRpby12aWV3ZXI+CiAgICAgICAgYDtjYXNlInZpZGVvIjpyZXR1cm4gd2AKICAgICAgICAgIDxkZWVzLXZpZGVvLXZpZXdlcgogICAgICAgICAgICAuc3JjPSR7dGhpcy5yZXNvbHZlZFNyY30KICAgICAgICAgID48L2RlZXMtdmlkZW8tdmlld2VyPgogICAgICAgIGA7Y2FzZSJjb2RlIjpyZXR1cm4gd2AKICAgICAgICAgIDxkZWVzLWRhdGF2aWV3LWNvZGVib3gKICAgICAgICAgICAgLnByb2dMYW5nPSR7dGhpcy5yZXNvbHZlZExhbmd9CiAgICAgICAgICAgIC5jb2RlVG9EaXNwbGF5PSR7dGhpcy5yZXNvbHZlZFRleHR9CiAgICAgICAgICA+PC9kZWVzLWRhdGF2aWV3LWNvZGVib3g+CiAgICAgICAgYDtjYXNlInRleHQiOnJldHVybiB3YDxwcmUgY2xhc3M9InRleHQtdmlld2VyIj4ke3RoaXMucmVzb2x2ZWRUZXh0fTwvcHJlPmA7ZGVmYXVsdDpyZXR1cm4gd2AKICAgICAgICAgIDxkaXYgY2xhc3M9InBsYWNlaG9sZGVyIj4KICAgICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6RmlsZVF1ZXN0aW9uIj48L2RlZXMtaWNvbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsYWNlaG9sZGVyLXRleHQiPlByZXZpZXcgbm90IGF2YWlsYWJsZTwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIGB9fWFzeW5jIHVwZGF0ZWQob2Upe3N1cGVyLnVwZGF0ZWQob2UpLFsidXJsIiwiZmlsZSIsImJhc2U2NCIsInRleHRDb250ZW50IiwiY29udGVudFR5cGUiLCJsYW5ndWFnZSIsIm1pbWVUeXBlIiwiZmlsZW5hbWUiXS5zb21lKFJlPT5vZS5oYXMoUmUpKSYmYXdhaXQgdGhpcy5yZXNvbHZlQ29udGVudCgpfWFzeW5jIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLnJldm9rZU9iamVjdFVybCgpfWFzeW5jIHJlc29sdmVDb250ZW50KCl7dGhpcy5lcnJvcj0iIix0aGlzLnJldm9rZU9iamVjdFVybCgpLHRoaXMucmVzb2x2ZWRUeXBlPXRoaXMuZGV0ZWN0VHlwZSgpO3RyeXtpZih0aGlzLnVybCl7aWYodGhpcy5yZXNvbHZlZFNyYz10aGlzLnVybCx0aGlzLnJlc29sdmVkVHlwZT09PSJjb2RlInx8dGhpcy5yZXNvbHZlZFR5cGU9PT0idGV4dCIpaWYodGhpcy50ZXh0Q29udGVudCl0aGlzLnJlc29sdmVkVGV4dD10aGlzLnRleHRDb250ZW50O2Vsc2V7dGhpcy5sb2FkaW5nPSEwO2xldCBvZT1hd2FpdCBmZXRjaCh0aGlzLnVybCk7dGhpcy5yZXNvbHZlZFRleHQ9YXdhaXQgb2UudGV4dCgpLHRoaXMubG9hZGluZz0hMX19ZWxzZSBpZih0aGlzLmZpbGUpdGhpcy5vYmplY3RVcmw9VVJMLmNyZWF0ZU9iamVjdFVSTCh0aGlzLmZpbGUpLHRoaXMucmVzb2x2ZWRTcmM9dGhpcy5vYmplY3RVcmwsKHRoaXMucmVzb2x2ZWRUeXBlPT09ImNvZGUifHx0aGlzLnJlc29sdmVkVHlwZT09PSJ0ZXh0IikmJih0aGlzLmxvYWRpbmc9ITAsdGhpcy5yZXNvbHZlZFRleHQ9YXdhaXQgdGhpcy5maWxlLnRleHQoKSx0aGlzLmxvYWRpbmc9ITEpO2Vsc2UgaWYodGhpcy5iYXNlNjQpe2xldCBvZT10aGlzLm1pbWVUeXBlfHwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIjt0aGlzLnJlc29sdmVkU3JjPWBkYXRhOiR7b2V9O2Jhc2U2NCwke3RoaXMuYmFzZTY0fWB9ZWxzZSB0aGlzLnRleHRDb250ZW50JiYodGhpcy5yZXNvbHZlZFRleHQ9dGhpcy50ZXh0Q29udGVudCl9Y2F0Y2h7dGhpcy5lcnJvcj0iRmFpbGVkIHRvIGxvYWQgY29udGVudCIsdGhpcy5sb2FkaW5nPSExfXRoaXMucmVzb2x2ZWRMYW5nPXRoaXMucmVzb2x2ZUxhbmd1YWdlKCl9ZGV0ZWN0VHlwZSgpe2lmKHRoaXMuY29udGVudFR5cGUpcmV0dXJuIHRoaXMuY29udGVudFR5cGU7bGV0IG9lPXRoaXMubWltZVR5cGV8fHRoaXMuZmlsZT8udHlwZXx8IiI7aWYob2Upe2lmKG9lPT09ImFwcGxpY2F0aW9uL3BkZiIpcmV0dXJuInBkZiI7Zm9yKGxldFtUZSxSZV1vZiBPYmplY3QuZW50cmllcyhHZXMpKWlmKG9lLnN0YXJ0c1dpdGgoVGUpKXJldHVybiBSZTtpZihvZS5zdGFydHNXaXRoKCJ0ZXh0LyIpKXJldHVybiJ0ZXh0In1sZXQgYWU9dGhpcy5nZXRFeHRlbnNpb24oKTtyZXR1cm4gYWUmJmRrYVthZV0/ZGthW2FlXTp0aGlzLnRleHRDb250ZW50P3RoaXMubGFuZ3VhZ2U/ImNvZGUiOiJ0ZXh0IjoidW5rbm93biJ9Z2V0RXh0ZW5zaW9uKCl7bGV0IG9lPXRoaXMuZmlsZW5hbWV8fHRoaXMuZmlsZT8ubmFtZXx8IiI7aWYob2Upe2xldCBhZT1vZS5zcGxpdCgiLiIpO2lmKGFlLmxlbmd0aD4xKXJldHVybiBhZS5wb3AoKS50b0xvd2VyQ2FzZSgpfWlmKHRoaXMudXJsKXRyeXtsZXQgVGU9bmV3IFVSTCh0aGlzLnVybCwiaHR0cHM6Ly9wbGFjZWhvbGRlci5jb20iKS5wYXRobmFtZS5zcGxpdCgiLiIpO2lmKFRlLmxlbmd0aD4xKXJldHVybiBUZS5wb3AoKS50b0xvd2VyQ2FzZSgpfWNhdGNoe31yZXR1cm4iIn1nZXRGaWxlbmFtZUZyb21VcmwoKXtpZighdGhpcy51cmwpcmV0dXJuIiI7dHJ5e3JldHVybiBuZXcgVVJMKHRoaXMudXJsLCJodHRwczovL3BsYWNlaG9sZGVyLmNvbSIpLnBhdGhuYW1lLnNwbGl0KCIvIikucG9wKCl8fCIifWNhdGNoe3JldHVybiIifX1yZXNvbHZlTGFuZ3VhZ2UoKXtpZih0aGlzLmxhbmd1YWdlKXJldHVybiB0aGlzLmxhbmd1YWdlO2xldCBvZT10aGlzLmdldEV4dGVuc2lvbigpO3JldHVybiBLZXNbb2VdfHwidGV4dCJ9cmV2b2tlT2JqZWN0VXJsKCl7dGhpcy5vYmplY3RVcmwmJihVUkwucmV2b2tlT2JqZWN0VVJMKHRoaXMub2JqZWN0VXJsKSx0aGlzLm9iamVjdFVybD0iIil9c3RhdGlje3ZzKGEsdCl9fTtyZXR1cm4gc2U9YX0pKCl9KTt2YXIgcGthPWcoKCk9Pnt1a2EoKX0pO3ZhciBvSixTbHQ9ZygoKT0+e29KPWNsYXNze3N0YXRpY3tpKHRoaXMsIkNhbnZhc1Bvb2wiKX1zdGF0aWMgcG9vbD1bXTtzdGF0aWMgbWF4UG9vbFNpemU9MjA7c3RhdGljIE1JTl9DQU5WQVNfU0laRT0yNTY7c3RhdGljIE1BWF9DQU5WQVNfU0laRT00MDk2O3N0YXRpYyBhY3F1aXJlKGUsdCl7bGV0IGE9dGhpcy5wb29sLmZpbmQobD0+IWwuaW5Vc2UmJmwuY2FudmFzLndpZHRoPj1lJiZsLmNhbnZhcy5oZWlnaHQ+PXQmJmwuY2FudmFzLndpZHRoPD1lKjEuNSYmbC5jYW52YXMuaGVpZ2h0PD10KjEuNSk7aWYoYSlyZXR1cm4gYS5pblVzZT0hMCxhLmxhc3RVc2VkPURhdGUubm93KCksYS5jYW52YXMud2lkdGg9ZSxhLmNhbnZhcy5oZWlnaHQ9dCxhLmN0eC5jbGVhclJlY3QoMCwwLGUsdCksYTtpZih0aGlzLnBvb2wubGVuZ3RoPHRoaXMubWF4UG9vbFNpemUpe2xldCBsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLHA9bC5nZXRDb250ZXh0KCIyZCIse2FscGhhOiEwLGRlc3luY2hyb25pemVkOiEwfSk7bC53aWR0aD1NYXRoLm1pbihNYXRoLm1heChlLHRoaXMuTUlOX0NBTlZBU19TSVpFKSx0aGlzLk1BWF9DQU5WQVNfU0laRSksbC5oZWlnaHQ9TWF0aC5taW4oTWF0aC5tYXgodCx0aGlzLk1JTl9DQU5WQVNfU0laRSksdGhpcy5NQVhfQ0FOVkFTX1NJWkUpO2xldCBkPXtjYW52YXM6bCxjdHg6cCxpblVzZTohMCxsYXN0VXNlZDpEYXRlLm5vdygpfTtyZXR1cm4gdGhpcy5wb29sLnB1c2goZCksZH1sZXQgcj10aGlzLnBvb2wuZmlsdGVyKGw9PiFsLmluVXNlKS5zb3J0KChsLHApPT5sLmxhc3RVc2VkLXAubGFzdFVzZWQpWzBdO2lmKHIpcmV0dXJuIHIuY2FudmFzLndpZHRoPWUsci5jYW52YXMuaGVpZ2h0PXQsci5jdHguY2xlYXJSZWN0KDAsMCxlLHQpLHIuaW5Vc2U9ITAsci5sYXN0VXNlZD1EYXRlLm5vdygpLHI7bGV0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksbz1uLmdldENvbnRleHQoIjJkIik7cmV0dXJuIG4ud2lkdGg9ZSxuLmhlaWdodD10LHtjYW52YXM6bixjdHg6byxpblVzZTohMCxsYXN0VXNlZDpEYXRlLm5vdygpfX1zdGF0aWMgcmVsZWFzZShlKXt0aGlzLnBvb2wuaW5jbHVkZXMoZSkmJihlLmluVXNlPSExLGUuY3R4LmNsZWFyUmVjdCgwLDAsZS5jYW52YXMud2lkdGgsZS5jYW52YXMuaGVpZ2h0KSl9c3RhdGljIHJlbGVhc2VBbGwoKXtmb3IobGV0IGUgb2YgdGhpcy5wb29sKWUuaW5Vc2U9ITEsZS5jdHguY2xlYXJSZWN0KDAsMCxlLmNhbnZhcy53aWR0aCxlLmNhbnZhcy5oZWlnaHQpfXN0YXRpYyBkZXN0cm95KCl7Zm9yKGxldCBlIG9mIHRoaXMucG9vbCllLmNhbnZhcy53aWR0aD0wLGUuY2FudmFzLmhlaWdodD0wO3RoaXMucG9vbD1bXX1zdGF0aWMgZ2V0U3RhdHMoKXtyZXR1cm57cG9vbFNpemU6dGhpcy5wb29sLmxlbmd0aCxtYXhQb29sU2l6ZTp0aGlzLm1heFBvb2xTaXplLGluVXNlOnRoaXMucG9vbC5maWx0ZXIoZT0+ZS5pblVzZSkubGVuZ3RoLGF2YWlsYWJsZTp0aGlzLnBvb2wuZmlsdGVyKGU9PiFlLmluVXNlKS5sZW5ndGh9fXN0YXRpYyBhZGp1c3RQb29sU2l6ZShlKXtpZihlPHRoaXMucG9vbC5sZW5ndGgpe2xldCB0PXRoaXMucG9vbC5sZW5ndGgtZSxhPXRoaXMucG9vbC5maWx0ZXIocj0+IXIuaW5Vc2UpLnNsaWNlKDAsdCk7Zm9yKGxldCByIG9mIGEpe2xldCBuPXRoaXMucG9vbC5pbmRleE9mKHIpO24+LTEmJnRoaXMucG9vbC5zcGxpY2UobiwxKX19dGhpcy5tYXhQb29sU2l6ZT1lfX19KTtmdW5jdGlvbiB2c24ocyxlKXtsZXQgdDtyZXR1cm4gaShmdW5jdGlvbiguLi5yKXtsZXQgbj1pKCgpPT57Y2xlYXJUaW1lb3V0KHQpLHMoLi4ucil9LCJsYXRlciIpO2NsZWFyVGltZW91dCh0KSx0PXdpbmRvdy5zZXRUaW1lb3V0KG4sZSl9LCJleGVjdXRlZEZ1bmN0aW9uIil9ZnVuY3Rpb24geHNuKHMsZSl7bGV0IHQ7cmV0dXJuKC4uLmEpPT57dHx8KHMoLi4uYSksdD0hMCxzZXRUaW1lb3V0KCgpPT50PSExLGUpKX19ZnVuY3Rpb24gaGthKHMpe2lmKHM9PT0wKXJldHVybiIwIEJ5dGVzIjtsZXQgZT0xMDI0LHQ9WyJCeXRlcyIsIktCIiwiTUIiLCJHQiJdLGE9TWF0aC5mbG9vcihNYXRoLmxvZyhzKS9NYXRoLmxvZyhlKSk7cmV0dXJuIE1hdGgucm91bmQocy9NYXRoLnBvdyhlLGEpKjEwMCkvMTAwKyIgIit0W2FdfWZ1bmN0aW9uIHlzbihzLGU9MCl7bGV0IHQ9cy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4gdC50b3A+PS1lJiZ0LmxlZnQ+PS1lJiZ0LmJvdHRvbTw9KHdpbmRvdy5pbm5lckhlaWdodHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCkrZSYmdC5yaWdodDw9KHdpbmRvdy5pbm5lcldpZHRofHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpK2V9dmFyIG5KLF9sdD1nKCgpPT57aSh2c24sImRlYm91bmNlIik7aSh4c24sInRocm90dGxlIik7aShoa2EsImZvcm1hdEZpbGVTaXplIik7aSh5c24sImlzSW5WaWV3cG9ydCIpO25KPWNsYXNze3N0YXRpY3tpKHRoaXMsIlBlcmZvcm1hbmNlTW9uaXRvciIpfXN0YXRpYyBtYXJrcz1uZXcgTWFwO3N0YXRpYyBtZWFzdXJlcz1bXTtzdGF0aWMgbWFyayhlKXt0aGlzLm1hcmtzLnNldChlLHBlcmZvcm1hbmNlLm5vdygpKX1zdGF0aWMgbWVhc3VyZShlLHQpe2xldCBhPXRoaXMubWFya3MuZ2V0KHQpO2lmKGEpe2xldCByPXBlcmZvcm1hbmNlLm5vdygpLWE7cmV0dXJuIHRoaXMubWVhc3VyZXMucHVzaCh7bmFtZTplLGR1cmF0aW9uOnJ9KSx0aGlzLm1hcmtzLmRlbGV0ZSh0KSxyfXJldHVybiAwfXN0YXRpYyBnZXRSZXBvcnQoKXtsZXQgZT17bWVhc3VyZXM6Wy4uLnRoaXMubWVhc3VyZXNdLGF2ZXJhZ2VzOnt9fSx0PW5ldyBNYXA7Zm9yKGxldCBhIG9mIHRoaXMubWVhc3VyZXMpdC5oYXMoYS5uYW1lKXx8dC5zZXQoYS5uYW1lLFtdKSx0LmdldChhLm5hbWUpLnB1c2goYS5kdXJhdGlvbik7Zm9yKGxldFthLHJdb2YgdCllLmF2ZXJhZ2VzW2FdPXIucmVkdWNlKChuLG8pPT5uK28sMCkvci5sZW5ndGg7cmV0dXJuIGV9c3RhdGljIGNsZWFyKCl7dGhpcy5tYXJrcy5jbGVhcigpLHRoaXMubWVhc3VyZXM9W119fX0pO3ZhciBma2E9ZygoKT0+e1NsdCgpO24yZSgpO19sdCgpfSk7dmFyIG1rYT1nKCgpPT57a2x0KCl9KTt2YXIgc2wsR3U9ZygoKT0+e3BlKCk7c2w9W2guZGVmYXVsdFN0eWxlcyxKYAogICAgOmhvc3QgewogICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIH0KCiAgICAudGlsZS1jb250YWluZXIgewogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIHdpZHRoOiAyMDBweDsKICAgICAgaGVpZ2h0OiAyNjBweDsKICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk4JSkiLCJoc2woMjE1IDIwJSAxNCUpIil9OwogICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4ycyBlYXNlOwogICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4xMikiLCJyZ2JhKDAsIDAsIDAsIDAuMjQpIil9OwoKICAgIH0KCiAgICAudGlsZS1jb250YWluZXIuY2xpY2thYmxlIHsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgfQoKICAgIC50aWxlLWNvbnRhaW5lci5jbGlja2FibGU6aG92ZXIgewogICAgICBib3gtc2hhZG93OiAwIDhweCAyNHB4ICR7aC5iZFRoZW1lKCJyZ2JhKDAsIDAsIDAsIDAuMTIpIiwicmdiYSgwLCAwLCAwLCAwLjMpIil9OwogICAgfQoKICAgIC50aWxlLWNvbnRhaW5lci5jbGlja2FibGU6aG92ZXIgLnRpbGUtb3ZlcmxheSB7CiAgICAgIG9wYWNpdHk6IDE7CiAgICB9CgogICAgLnRpbGUtY29udGVudCB7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGhlaWdodDogMTAwJTsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB9CgogICAgLnRpbGUtb3ZlcmxheSB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgdG9wOiAwOwogICAgICBsZWZ0OiAwOwogICAgICByaWdodDogMDsKICAgICAgYm90dG9tOiAwOwogICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmdiYSgwLCAwLCAwLCAwLjcpIiwicmdiYSgwLCAwLCAwLCAwLjgpIil9OwogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgZ2FwOiA4cHg7CiAgICAgIG9wYWNpdHk6IDA7CiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlOwogICAgICB6LWluZGV4OiAyMDsKICAgIH0KCiAgICAudGlsZS1vdmVybGF5IGRlZXMtaWNvbiB7CiAgICAgIGZvbnQtc2l6ZTogMjRweDsKICAgICAgY29sb3I6IHdoaXRlOwogICAgfQoKICAgIC50aWxlLW92ZXJsYXkgc3BhbiB7CiAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgY29sb3I6IHdoaXRlOwogICAgfQoKICAgIC50aWxlLWluZm8tYmFyIHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICBib3R0b206IDA7CiAgICAgIGxlZnQ6IDA7CiAgICAgIHJpZ2h0OiAwOwogICAgICBwYWRkaW5nOiA0cHggOHB4OwogICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMTAwJSAvIDAuOTUpIiwiaHNsKDIxNSAyMCUgMTIlIC8gMC45NSkiKX07CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGdhcDogNnB4OwogICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNSAxNiUgNDUlKSIsImhzbCgyMTUgMTYlIDc1JSkiKX07CiAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMnB4KTsKICAgICAgei1pbmRleDogMjU7CiAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7CiAgICB9CgogICAgLmluZm8tbGFiZWwgewogICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgbWluLXdpZHRoOiAwOwogICAgfQoKICAgIC5pbmZvLXNwYWNlciB7CiAgICAgIGZsZXg6IDE7CiAgICB9CgogICAgLmluZm8tZGV0YWlsIHsKICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgb3BhY2l0eTogMC43OwogICAgICBmbGV4LXNocmluazogMDsKICAgIH0KCiAgICAudGlsZS1sb2FkaW5nLAogICAgLnRpbGUtZXJyb3IgewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHRvcDogMDsKICAgICAgbGVmdDogMDsKICAgICAgcmlnaHQ6IDA7CiAgICAgIGJvdHRvbTogMDsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIGdhcDogMTJweDsKICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1IDE2JSA0NSUpIiwiaHNsKDIxNSAxNiUgNzUlKSIpfTsKICAgIH0KCiAgICAudGlsZS1sb2FkaW5nIHsKICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk5JSkiLCJoc2woMjE1IDIwJSAxNCUpIil9OwogICAgfQoKICAgIC50aWxlLWVycm9yIHsKICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDcyJSA5OCUpIiwiaHNsKDAgNjIlIDIwJSkiKX07CiAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgNzIlIDQwJSkiLCJoc2woMCA3MCUgNjglKSIpfTsKICAgIH0KCiAgICAudGlsZS1lcnJvciBkZWVzLWljb24gewogICAgICBmb250LXNpemU6IDMycHg7CiAgICB9CgogICAgLnRpbGUtc3Bpbm5lciB7CiAgICAgIHdpZHRoOiAyNHB4OwogICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgYm9yZGVyOiAycHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgyMTQgMzElIDg2JSkiLCJoc2woMjE3IDI1JSAyOCUpIil9OwogICAgICBib3JkZXItdG9wLWNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDIxNyA5MSUgNjAlKSIsImhzbCgyMTMgOTMlIDY4JSkiKX07CiAgICAgIGFuaW1hdGlvbjogc3BpbiAwLjhzIGxpbmVhciBpbmZpbml0ZTsKICAgIH0KCiAgICAudGlsZS1sb2FkaW5nLXRleHQsCiAgICAudGlsZS1lcnJvci10ZXh0IHsKICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICBmb250LXdlaWdodDogNTAwOwogICAgfQoKICAgIEBrZXlmcmFtZXMgc3BpbiB7CiAgICAgIHRvIHsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgICB9CiAgICB9CgogICAgLyogU2l6ZSB2YXJpYW50cyAqLwogICAgOmhvc3QoW3NpemU9InNtYWxsIl0pIC50aWxlLWNvbnRhaW5lciB7CiAgICAgIHdpZHRoOiAxNTBweDsKICAgICAgaGVpZ2h0OiAxOTVweDsKICAgIH0KCiAgICA6aG9zdChbc2l6ZT0ibGFyZ2UiXSkgLnRpbGUtY29udGFpbmVyIHsKICAgICAgd2lkdGg6IDI1MHB4OwogICAgICBoZWlnaHQ6IDMyNXB4OwogICAgfQoKICAgIC8qIEdyaWQgb3B0aW1pemF0aW9ucyAqLwogICAgOmhvc3QoW2dyaWQtbW9kZV0pIC50aWxlLWNvbnRhaW5lciB7CiAgICAgIHdpbGwtY2hhbmdlOiBhdXRvOwogICAgfQogIGBdfSk7dmFyIGxKLGUwLElsLHc0PWcoKCk9PntwZSgpO0d1KCk7R2EoKTtsSj1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sZTA9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LElsPSgoKT0+e2xldCBzPXdlLGUsdD1bXSxhPVtdLHIsbj1bXSxvPVtdLGwscD1bXSxkPVtdLHUsYz1bXSxiPVtdLHYseD1bXSxtPVtdO3JldHVybiBjbGFzcyBleHRlbmRzIHN7c3RhdGlje2kodGhpcywiRGVlc1RodW1ibmFpbEJhc2UiKX1zdGF0aWN7bGV0IHk9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUoc1tTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7ZT1bTCh7dHlwZTpCb29sZWFufSldLHI9W0woe3R5cGU6Qm9vbGVhbn0pXSxsPVtMKHt0eXBlOkJvb2xlYW59KV0sdT1bTCh7dHlwZTpTdHJpbmcscmVmbGVjdDohMH0pXSx2PVtMKHt0eXBlOlN0cmluZ30pXSxsSih0aGlzLG51bGwsZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNsaWNrYWJsZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShNPT4iY2xpY2thYmxlImluIE0sImhhcyIpLGdldDppKE09Pk0uY2xpY2thYmxlLCJnZXQiKSxzZXQ6aSgoTSx6KT0+e00uY2xpY2thYmxlPXp9LCJzZXQiKX0sbWV0YWRhdGE6eX0sdCxhKSxsSih0aGlzLG51bGwscix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImxvYWRpbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoTT0+ImxvYWRpbmciaW4gTSwiaGFzIiksZ2V0OmkoTT0+TS5sb2FkaW5nLCJnZXQiKSxzZXQ6aSgoTSx6KT0+e00ubG9hZGluZz16fSwic2V0Iil9LG1ldGFkYXRhOnl9LG4sbyksbEoodGhpcyxudWxsLGwse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJlcnJvciIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShNPT4iZXJyb3IiaW4gTSwiaGFzIiksZ2V0OmkoTT0+TS5lcnJvciwiZ2V0Iiksc2V0OmkoKE0seik9PntNLmVycm9yPXp9LCJzZXQiKX0sbWV0YWRhdGE6eX0scCxkKSxsSih0aGlzLG51bGwsdSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNpemUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoTT0+InNpemUiaW4gTSwiaGFzIiksZ2V0OmkoTT0+TS5zaXplLCJnZXQiKSxzZXQ6aSgoTSx6KT0+e00uc2l6ZT16fSwic2V0Iil9LG1ldGFkYXRhOnl9LGMsYiksbEoodGhpcyxudWxsLHYse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJsYWJlbCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShNPT4ibGFiZWwiaW4gTSwiaGFzIiksZ2V0OmkoTT0+TS5sYWJlbCwiZ2V0Iiksc2V0OmkoKE0seik9PntNLmxhYmVsPXp9LCJzZXQiKX0sbWV0YWRhdGE6eX0seCxtKSx5JiZPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnl9KX1zdGF0aWMgc3R5bGVzPXNsOyNlPWUwKHRoaXMsdCwhMCk7Z2V0IGNsaWNrYWJsZSgpe3JldHVybiB0aGlzLiNlfXNldCBjbGlja2FibGUoeSl7dGhpcy4jZT15fSN0PShlMCh0aGlzLGEpLGUwKHRoaXMsbiwhMSkpO2dldCBsb2FkaW5nKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGxvYWRpbmcoeSl7dGhpcy4jdD15fSNhPShlMCh0aGlzLG8pLGUwKHRoaXMscCwhMSkpO2dldCBlcnJvcigpe3JldHVybiB0aGlzLiNhfXNldCBlcnJvcih5KXt0aGlzLiNhPXl9I3M9KGUwKHRoaXMsZCksZTAodGhpcyxjLCJkZWZhdWx0IikpO2dldCBzaXplKCl7cmV0dXJuIHRoaXMuI3N9c2V0IHNpemUoeSl7dGhpcy4jcz15fSNpPShlMCh0aGlzLGIpLGUwKHRoaXMseCwiIikpO2dldCBsYWJlbCgpe3JldHVybiB0aGlzLiNpfXNldCBsYWJlbCh5KXt0aGlzLiNpPXl9b2JzZXJ2ZXI9ZTAodGhpcyxtKTtfdmlzaWJsZT0hMTtnZXQgaXNWaXNpYmxlKCl7cmV0dXJuIHRoaXMuX3Zpc2libGV9cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxkaXYKICAgICAgICBjbGFzcz0idGlsZS1jb250YWluZXIgJHt0aGlzLmNsaWNrYWJsZT8iY2xpY2thYmxlIjoiIn0gJHt0aGlzLmxvYWRpbmc/ImxvYWRpbmciOiIifSAke3RoaXMuZXJyb3I/ImVycm9yIjoiIn0iCiAgICAgICAgQGNsaWNrPSR7dGhpcy5oYW5kbGVUaWxlQ2xpY2t9CiAgICAgICAgQG1vdXNlZW50ZXI9JHt0aGlzLm9uVGlsZU1vdXNlRW50ZXJ9CiAgICAgICAgQG1vdXNlbGVhdmU9JHt0aGlzLm9uVGlsZU1vdXNlTGVhdmV9CiAgICAgICAgQG1vdXNlbW92ZT0ke3RoaXMub25UaWxlTW91c2VNb3ZlfQogICAgICA+CiAgICAgICAgJHt0aGlzLmxvYWRpbmc/d2AKICAgICAgICAgIDxkaXYgY2xhc3M9InRpbGUtbG9hZGluZyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpbGUtc3Bpbm5lciI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpbGUtbG9hZGluZy10ZXh0Ij5Mb2FkaW5nLi4uPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgOiIifQoKICAgICAgICAke3RoaXMuZXJyb3I/d2AKICAgICAgICAgIDxkaXYgY2xhc3M9InRpbGUtZXJyb3IiPgogICAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpBbGVydFRyaWFuZ2xlIj48L2RlZXMtaWNvbj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGlsZS1lcnJvci10ZXh0Ij5GYWlsZWQgdG8gbG9hZDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgYDoiIn0KCiAgICAgICAgJHshdGhpcy5sb2FkaW5nJiYhdGhpcy5lcnJvcj90aGlzLnJlbmRlclRpbGVDb250ZW50KCk6IiJ9CgogICAgICAgICR7dGhpcy5yZW5kZXJCb3R0b21CYXIoKX0KICAgICAgPC9kaXY+CiAgICBgfXJlbmRlckJvdHRvbUJhcigpe3JldHVybiIifWFzeW5jIGNvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLnNldHVwSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKX1hc3luYyBkaXNjb25uZWN0ZWRDYWxsYmFjaygpe2F3YWl0IHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5vYnNlcnZlciYmKHRoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpLHRoaXMub2JzZXJ2ZXI9dm9pZCAwKX1zZXR1cEludGVyc2VjdGlvbk9ic2VydmVyKCl7dGhpcy5vYnNlcnZlcj1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoeT0+e2ZvcihsZXQgTSBvZiB5KXtsZXQgej10aGlzLl92aXNpYmxlO3RoaXMuX3Zpc2libGU9TS5pc0ludGVyc2VjdGluZyx0aGlzLl92aXNpYmxlJiYheiYmdGhpcy5vbkJlY2FtZVZpc2libGUoKX19LHtyb290Om51bGwscm9vdE1hcmdpbjoiMjAwcHgiLHRocmVzaG9sZDouMDF9KSx0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcyl9b25CZWNhbWVWaXNpYmxlKCl7fW9uVGlsZU1vdXNlRW50ZXIoKXt9b25UaWxlTW91c2VMZWF2ZSgpe31vblRpbGVNb3VzZU1vdmUoeSl7fWhhbmRsZVRpbGVDbGljaygpe3RoaXMuY2xpY2thYmxlJiZ0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJ0aWxlLWNsaWNrIix7ZGV0YWlsOnRoaXMuZ2V0VGlsZUNsaWNrRGV0YWlsKCksYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1nZXRUaWxlQ2xpY2tEZXRhaWwoKXtyZXR1cm57fX19fSkoKX0pO3ZhciBna2E9ZygoKT0+e3c0KCk7R3UoKX0pO3ZhciBia2EsdmthPWcoKCk9PntwZSgpO2JrYT1KYAogIC5wcmV2aWV3LXN0YWNrIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgcGFkZGluZzogOHB4IDhweCAyOHB4IDhweDsKICB9CgogIC5wcmV2aWV3LXN0YWNrLm5vbi1hNCB7CiAgICBwYWRkaW5nOiAxMnB4IDEycHggMjhweCAxMnB4OwogIH0KCiAgLnByZXZpZXctY2FudmFzIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICBtYXgtaGVpZ2h0OiAxMDAlOwogICAgd2lkdGg6IGF1dG87CiAgICBoZWlnaHQ6IGF1dG87CiAgICBvYmplY3QtZml0OiBjb250YWluOwogICAgaW1hZ2UtcmVuZGVyaW5nOiBhdXRvOwogICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICBib3gtc2hhZG93OiAwIDFweCAzcHggJHtoLmJkVGhlbWUoInJnYmEoMCwgMCwgMCwgMC4xKSIsInJnYmEoMCwgMCwgMCwgMC4zKSIpfTsKICB9CgogIC5ub24tYTQgLnByZXZpZXctY2FudmFzIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMjE0IDMxJSA5MiUpIiwiaHNsKDIxNyAyNSUgMjQlKSIpfTsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICB9CgogIC8qIEdyaWQgb3B0aW1pemF0aW9ucyAqLwogIDpob3N0KFtncmlkLW1vZGVdKSAucHJldmlldy1jYW52YXMgewogICAgaW1hZ2UtcmVuZGVyaW5nOiAtd2Via2l0LW9wdGltaXplLWNvbnRyYXN0OwogICAgaW1hZ2UtcmVuZGVyaW5nOiBjcmlzcC1lZGdlczsKICB9CmB9KTt2YXIgeGthLHlrYT1nKCgpPT57cGUoKTt4a2E9aSgoKT0+e2xldCBzPVsiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL21vemlsbGEvcGRmLmpzL2JhMmVkZWFlL2V4YW1wbGVzL2xlYXJuaW5nL2hlbGxvd29ybGQucGRmIiwiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL21vemlsbGEvcGRmLmpzL2JhMmVkZWFlL3dlYi9jb21wcmVzc2VkLnRyYWNlbW9ua2V5LXBsZGktMDkucGRmIl0sZT1pKHQ9PntsZXQgYT1bXTtmb3IobGV0IHI9MDtyPHQ7cisrKXtsZXQgbj1zW3Ilcy5sZW5ndGhdO2EucHVzaCh3YAogICAgICAgIDxkZWVzLXRodW1ibmFpbC1wZGYKICAgICAgICAgIHBkZlVybD0iJHtufSIKICAgICAgICAgIGNsaWNrYWJsZT0idHJ1ZSIKICAgICAgICAgIGdyaWQtbW9kZQogICAgICAgICAgQHRpbGUtY2xpY2s9JHtvPT57Y29uc29sZS5sb2coIlBERiBUaWxlIGNsaWNrZWQ6IixvLmRldGFpbCksYWxlcnQoYFBERiBjbGlja2VkOiAke28uZGV0YWlsLnBhZ2VDb3VudH0gcGFnZXNgKX19CiAgICAgICAgPjwvZGVlcy10aHVtYm5haWwtcGRmPgogICAgICBgKX1yZXR1cm4gYX0sImdlbmVyYXRlR3JpZEl0ZW1zIik7cmV0dXJuIHdgCiAgICA8c3R5bGU+CiAgICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgICAgcGFkZGluZzogNDBweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2Y1ZjVmNSIsIiMwYTBhMGEiKX07CiAgICAgIH0KCiAgICAgIC5kZW1vLXNlY3Rpb24gewogICAgICAgIG1hcmdpbi1ib3R0b206IDYwcHg7CiAgICAgIH0KCiAgICAgIGgzIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07CiAgICAgIH0KCiAgICAgIC5wcmV2aWV3LWdyaWQgewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMjAwcHgsIDFmcikpOwogICAgICAgIGdhcDogMjRweDsKICAgICAgfQoKICAgICAgLnByZXZpZXctcm93IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGdhcDogMjRweDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgIH0KCiAgICAgIC5wcmV2aWV3LWxhYmVsIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBtaW4td2lkdGg6IDEwMHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdiBjbGFzcz0iZGVtby1jb250YWluZXIiPgogICAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICAgIDxoMz5TaW5nbGUgUERGIFRpbGU8L2gzPgogICAgICAgIDxkZWVzLXRodW1ibmFpbC1wZGYKICAgICAgICAgIHBkZlVybD0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL21vemlsbGEvcGRmLmpzL2JhMmVkZWFlL3dlYi9jb21wcmVzc2VkLnRyYWNlbW9ua2V5LXBsZGktMDkucGRmIgogICAgICAgICAgY2xpY2thYmxlPSJ0cnVlIgogICAgICAgID48L2RlZXMtdGh1bWJuYWlsLXBkZj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICAgIDxoMz5EaWZmZXJlbnQgU2l6ZXM8L2gzPgogICAgICAgIDxkaXYgY2xhc3M9InByZXZpZXctcm93Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9InByZXZpZXctbGFiZWwiPlNtYWxsOjwvZGl2PgogICAgICAgICAgPGRlZXMtdGh1bWJuYWlsLXBkZgogICAgICAgICAgICBzaXplPSJzbWFsbCIKICAgICAgICAgICAgcGRmVXJsPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbW96aWxsYS9wZGYuanMvYmEyZWRlYWUvZXhhbXBsZXMvbGVhcm5pbmcvaGVsbG93b3JsZC5wZGYiCiAgICAgICAgICAgIGNsaWNrYWJsZT0idHJ1ZSIKICAgICAgICAgID48L2RlZXMtdGh1bWJuYWlsLXBkZj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0icHJldmlldy1yb3ciPgogICAgICAgICAgPGRpdiBjbGFzcz0icHJldmlldy1sYWJlbCI+RGVmYXVsdDo8L2Rpdj4KICAgICAgICAgIDxkZWVzLXRodW1ibmFpbC1wZGYKICAgICAgICAgICAgcGRmVXJsPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbW96aWxsYS9wZGYuanMvYmEyZWRlYWUvZXhhbXBsZXMvbGVhcm5pbmcvaGVsbG93b3JsZC5wZGYiCiAgICAgICAgICAgIGNsaWNrYWJsZT0idHJ1ZSIKICAgICAgICAgID48L2RlZXMtdGh1bWJuYWlsLXBkZj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0icHJldmlldy1yb3ciPgogICAgICAgICAgPGRpdiBjbGFzcz0icHJldmlldy1sYWJlbCI+TGFyZ2U6PC9kaXY+CiAgICAgICAgICA8ZGVlcy10aHVtYm5haWwtcGRmCiAgICAgICAgICAgIHNpemU9ImxhcmdlIgogICAgICAgICAgICBwZGZVcmw9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9tb3ppbGxhL3BkZi5qcy9iYTJlZGVhZS9leGFtcGxlcy9sZWFybmluZy9oZWxsb3dvcmxkLnBkZiIKICAgICAgICAgICAgY2xpY2thYmxlPSJ0cnVlIgogICAgICAgICAgPjwvZGVlcy10aHVtYm5haWwtcGRmPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgzPldpdGggTGFiZWw8L2gzPgogICAgICAgIDxkZWVzLXRodW1ibmFpbC1wZGYKICAgICAgICAgIHBkZlVybD0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL21vemlsbGEvcGRmLmpzL2JhMmVkZWFlL3dlYi9jb21wcmVzc2VkLnRyYWNlbW9ua2V5LXBsZGktMDkucGRmIgogICAgICAgICAgY2xpY2thYmxlPSJ0cnVlIgogICAgICAgICAgbGFiZWw9IlJlc2VhcmNoIFBhcGVyLnBkZiIKICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC1wZGY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgICA8aDM+Tm9uLUNsaWNrYWJsZTwvaDM+CiAgICAgICAgPGRlZXMtdGh1bWJuYWlsLXBkZgogICAgICAgICAgcGRmVXJsPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbW96aWxsYS9wZGYuanMvYmEyZWRlYWUvZXhhbXBsZXMvbGVhcm5pbmcvaGVsbG93b3JsZC5wZGYiCiAgICAgICAgICBjbGlja2FibGU9ImZhbHNlIgogICAgICAgID48L2RlZXMtdGh1bWJuYWlsLXBkZj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICAgIDxoMz5HcmlkIC0gMjAgUERGcyB3aXRoIExhenkgTG9hZGluZzwvaDM+CiAgICAgICAgPGRpdiBjbGFzcz0icHJldmlldy1ncmlkIj4KICAgICAgICAgICR7ZSgyMCl9CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgYH0sImRlbW8iKX0pO3ZhciBrNCxpbCxYZXMsd2thPWcoKCk9PntwZSgpO3c0KCk7R3UoKTtuMmUoKTtTbHQoKTtfbHQoKTt2a2EoKTt5a2EoKTtrND1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0saWw9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LFhlcz0oKCk9PntsZXQgcz1bbmUoImRlZXMtdGh1bWJuYWlsLXBkZiIpXSxlLHQ9W10sYSxyPUlsLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdO3ZhciBIPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzVGh1bWJuYWlsUGRmIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGs9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpTdHJpbmd9KV0scD1bTCh7dHlwZTpOdW1iZXJ9KV0sYz1bTCh7dHlwZTpOdW1iZXJ9KV0seD1bTCh7dHlwZTpCb29sZWFufSldLHk9W0woe3R5cGU6Qm9vbGVhbn0pXSxOPVtMKHt0eXBlOkJvb2xlYW59KV0sTz1bWSgpXSxrNCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InBkZlVybCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4icGRmVXJsImluIFMsImhhcyIpLGdldDppKFM9PlMucGRmVXJsLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MucGRmVXJsPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sbyxsKSxrNCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImN1cnJlbnRQcmV2aWV3UGFnZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4iY3VycmVudFByZXZpZXdQYWdlImluIFMsImhhcyIpLGdldDppKFM9PlMuY3VycmVudFByZXZpZXdQYWdlLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MuY3VycmVudFByZXZpZXdQYWdlPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sZCx1KSxrNCh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InBhZ2VDb3VudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4icGFnZUNvdW50ImluIFMsImhhcyIpLGdldDppKFM9PlMucGFnZUNvdW50LCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MucGFnZUNvdW50PUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sYix2KSxrNCh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InJlbmRlcmVkIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJyZW5kZXJlZCJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLnJlbmRlcmVkLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MucmVuZGVyZWQ9SX0sInNldCIpfSxtZXRhZGF0YTprfSxtLGYpLGs0KHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNIb3ZlcmluZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4iaXNIb3ZlcmluZyJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLmlzSG92ZXJpbmcsImdldCIpLHNldDppKChTLEkpPT57Uy5pc0hvdmVyaW5nPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sTSx6KSxrNCh0aGlzLG51bGwsTix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImlzQTRGb3JtYXQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+ImlzQTRGb3JtYXQiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5pc0E0Rm9ybWF0LCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MuaXNBNEZvcm1hdD1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LEMsXyksazQodGhpcyxudWxsLE8se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJmaWxlU2l6ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4iZmlsZVNpemUiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5maWxlU2l6ZSwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLmZpbGVTaXplPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sJCxFKSxrNChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTprfSxudWxsLHQpLEg9YT1lLnZhbHVlLGsmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6a30pfXN0YXRpYyBkZW1vPXhrYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIk1lZGlhIiwiUERGIl07c3RhdGljIHN0eWxlcz1bLi4uc2wsYmthXTsjZT1pbCh0aGlzLG8sIiIpO2dldCBwZGZVcmwoKXtyZXR1cm4gdGhpcy4jZX1zZXQgcGRmVXJsKGspe3RoaXMuI2U9a30jdD0oaWwodGhpcyxsKSxpbCh0aGlzLGQsMSkpO2dldCBjdXJyZW50UHJldmlld1BhZ2UoKXtyZXR1cm4gdGhpcy4jdH1zZXQgY3VycmVudFByZXZpZXdQYWdlKGspe3RoaXMuI3Q9a30jYT0oaWwodGhpcyx1KSxpbCh0aGlzLGIsMCkpO2dldCBwYWdlQ291bnQoKXtyZXR1cm4gdGhpcy4jYX1zZXQgcGFnZUNvdW50KGspe3RoaXMuI2E9a30jcz0oaWwodGhpcyx2KSxpbCh0aGlzLG0sITEpKTtnZXQgcmVuZGVyZWQoKXtyZXR1cm4gdGhpcy4jc31zZXQgcmVuZGVyZWQoayl7dGhpcy4jcz1rfSNpPShpbCh0aGlzLGYpLGlsKHRoaXMsTSwhMSkpO2dldCBpc0hvdmVyaW5nKCl7cmV0dXJuIHRoaXMuI2l9c2V0IGlzSG92ZXJpbmcoayl7dGhpcy4jaT1rfSNyPShpbCh0aGlzLHopLGlsKHRoaXMsQywhMCkpO2dldCBpc0E0Rm9ybWF0KCl7cmV0dXJuIHRoaXMuI3J9c2V0IGlzQTRGb3JtYXQoayl7dGhpcy4jcj1rfSNvPShpbCh0aGlzLF8pLGlsKHRoaXMsJCwwKSk7Z2V0IGZpbGVTaXplKCl7cmV0dXJuIHRoaXMuI299c2V0IGZpbGVTaXplKGspe3RoaXMuI289a31yZW5kZXJQYWdlc1Rhc2s9KGlsKHRoaXMsRSksbnVsbCk7cmVuZGVyUGFnZXNRdWV1ZWQ9ITE7cGRmRG9jdW1lbnQ7Y2FudmFzZXM9W107cmVzaXplT2JzZXJ2ZXI7c3RhY2tFbGVtZW50PW51bGw7bG9hZGVkUGRmVXJsPW51bGw7cmVuZGVyVGlsZUNvbnRlbnQoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0icHJldmlldy1zdGFjayAke3RoaXMuaXNBNEZvcm1hdD8iIjoibm9uLWE0In0iPgogICAgICAgIDxjYW52YXMKICAgICAgICAgIGNsYXNzPSJwcmV2aWV3LWNhbnZhcyIKICAgICAgICAgIGRhdGEtcGFnZT0iJHt0aGlzLmN1cnJlbnRQcmV2aWV3UGFnZX0iCiAgICAgICAgPjwvY2FudmFzPgogICAgICA8L2Rpdj4KCiAgICAgICR7dGhpcy5jbGlja2FibGU/d2AKICAgICAgICA8ZGl2IGNsYXNzPSJ0aWxlLW92ZXJsYXkiPgogICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6RXllIj48L2RlZXMtaWNvbj4KICAgICAgICAgIDxzcGFuPlZpZXcgUERGPC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICBgOiIifQogICAgYH1yZW5kZXJCb3R0b21CYXIoKXtyZXR1cm4hdGhpcy5wYWdlQ291bnQmJiF0aGlzLmxhYmVsPyIiOndgCiAgICAgIDxkaXYgY2xhc3M9InRpbGUtaW5mby1iYXIiPgogICAgICAgICR7dGhpcy5sYWJlbD93YDxzcGFuIGNsYXNzPSJpbmZvLWxhYmVsIiB0aXRsZT0iJHt0aGlzLmxhYmVsfSI+JHt0aGlzLmxhYmVsfTwvc3Bhbj5gOiIifQogICAgICAgIDxzcGFuIGNsYXNzPSJpbmZvLXNwYWNlciI+PC9zcGFuPgogICAgICAgICR7dGhpcy5wYWdlQ291bnQ+MSYmdGhpcy5pc0hvdmVyaW5nP3dgPHNwYW4gY2xhc3M9ImluZm8tZGV0YWlsIj4ke3RoaXMuY3VycmVudFByZXZpZXdQYWdlfS8ke3RoaXMucGFnZUNvdW50fTwvc3Bhbj5gOnRoaXMucGFnZUNvdW50PjA/d2A8c3BhbiBjbGFzcz0iaW5mby1kZXRhaWwiPiR7dGhpcy5wYWdlQ291bnR9IHBnPC9zcGFuPmA6IiJ9CiAgICAgICAgJHt0aGlzLmZpbGVTaXplPjA/d2A8c3BhbiBjbGFzcz0iaW5mby1kZXRhaWwiPiR7aGthKHRoaXMuZmlsZVNpemUpfTwvc3Bhbj5gOiIifQogICAgICA8L2Rpdj4KICAgIGB9Z2V0VGlsZUNsaWNrRGV0YWlsKCl7cmV0dXJue3BkZlVybDp0aGlzLnBkZlVybCxwYWdlQ291bnQ6dGhpcy5wYWdlQ291bnR9fW9uQmVjYW1lVmlzaWJsZSgpeyF0aGlzLnJlbmRlcmVkJiZ0aGlzLnBkZlVybCYmdGhpcy5sb2FkQW5kUmVuZGVyUHJldmlldygpfW9uVGlsZU1vdXNlRW50ZXIoKXt0aGlzLmlzSG92ZXJpbmc9ITB9b25UaWxlTW91c2VMZWF2ZSgpe3RoaXMuaXNIb3ZlcmluZz0hMSx0aGlzLmN1cnJlbnRQcmV2aWV3UGFnZSE9PTEmJih0aGlzLmN1cnJlbnRQcmV2aWV3UGFnZT0xLHRoaXMuc2NoZWR1bGVSZW5kZXJQYWdlcygpKX1vblRpbGVNb3VzZU1vdmUoayl7aWYoIXRoaXMuaXNIb3ZlcmluZ3x8dGhpcy5wYWdlQ291bnQ8PTEpcmV0dXJuO2xldCBTPXRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksST1rLmNsaWVudFgtUy5sZWZ0LFA9Uy53aWR0aCxSPU1hdGgubWF4KDAsTWF0aC5taW4oMSxJL1ApKSxLPU1hdGguY2VpbChSKnRoaXMucGFnZUNvdW50KXx8MTtLIT09dGhpcy5jdXJyZW50UHJldmlld1BhZ2UmJih0aGlzLmN1cnJlbnRQcmV2aWV3UGFnZT1LLHRoaXMuc2NoZWR1bGVSZW5kZXJQYWdlcygpKX1hc3luYyBjb25uZWN0ZWRDYWxsYmFjaygpe2F3YWl0IHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksYXdhaXQgdGhpcy51cGRhdGVDb21wbGV0ZSx0aGlzLmNhY2hlRWxlbWVudHMoKSx0aGlzLnNldHVwUmVzaXplT2JzZXJ2ZXIoKX1hc3luYyBkaXNjb25uZWN0ZWRDYWxsYmFjaygpe2F3YWl0IHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5jbGVhbnVwKCksdGhpcy5yZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpLHRoaXMucmVzaXplT2JzZXJ2ZXI9dm9pZCAwfWFzeW5jIGxvYWRBbmRSZW5kZXJQcmV2aWV3KCl7aWYoISh0aGlzLnJlbmRlcmVkfHx0aGlzLmxvYWRpbmcpKXt0aGlzLmxvYWRpbmc9ITAsdGhpcy5lcnJvcj0hMSxuSi5tYXJrKGBwcmV2aWV3LWxvYWQtJHt0aGlzLnBkZlVybH1gKTt0cnl7dGhpcy5wZGZEb2N1bWVudD1hd2FpdCBXdS5sb2FkRG9jdW1lbnQodGhpcy5wZGZVcmwpLHRoaXMucGFnZUNvdW50PXRoaXMucGRmRG9jdW1lbnQubnVtUGFnZXMsdGhpcy5jdXJyZW50UHJldmlld1BhZ2U9MTt0cnl7bGV0IFM9YXdhaXQgdGhpcy5wZGZEb2N1bWVudC5nZXREb3dubG9hZEluZm8oKTt0aGlzLmZpbGVTaXplPVMubGVuZ3RofWNhdGNoe310aGlzLmxvYWRlZFBkZlVybD10aGlzLnBkZlVybCx0aGlzLmxvYWRpbmc9ITEsYXdhaXQgdGhpcy51cGRhdGVDb21wbGV0ZSx0aGlzLmNhY2hlRWxlbWVudHMoKSxhd2FpdCB0aGlzLnNjaGVkdWxlUmVuZGVyUGFnZXMoKSx0aGlzLnJlbmRlcmVkPSEwO2xldCBrPW5KLm1lYXN1cmUoYHByZXZpZXctcmVuZGVyLSR7dGhpcy5wZGZVcmx9YCxgcHJldmlldy1sb2FkLSR7dGhpcy5wZGZVcmx9YCk7Y29uc29sZS5sb2coYFBERiB0aWxlIHJlbmRlcmVkIGluICR7a31tc2ApfWNhdGNoKGspe2NvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBsb2FkIFBERiB0aWxlOiIsayksdGhpcy5lcnJvcj0hMCx0aGlzLmxvYWRpbmc9ITF9fX1zY2hlZHVsZVJlbmRlclBhZ2VzKCl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQ/dGhpcy5yZW5kZXJQYWdlc1Rhc2s/KHRoaXMucmVuZGVyUGFnZXNRdWV1ZWQ9ITAsdGhpcy5yZW5kZXJQYWdlc1Rhc2spOih0aGlzLnJlbmRlclBhZ2VzVGFzaz0oYXN5bmMoKT0+e3RyeXthd2FpdCB0aGlzLnBlcmZvcm1SZW5kZXJQYWdlcygpfWNhdGNoKGspe2NvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byByZW5kZXIgUERGIHRpbGUgcGFnZXM6IixrKX19KSgpLmZpbmFsbHkoKCk9Pnt0aGlzLnJlbmRlclBhZ2VzVGFzaz1udWxsLHRoaXMucmVuZGVyUGFnZXNRdWV1ZWQmJih0aGlzLnJlbmRlclBhZ2VzUXVldWVkPSExLHRoaXMuc2NoZWR1bGVSZW5kZXJQYWdlcygpKX0pLHRoaXMucmVuZGVyUGFnZXNUYXNrKTpQcm9taXNlLnJlc29sdmUoKX1hc3luYyBwZXJmb3JtUmVuZGVyUGFnZXMoKXtpZighdGhpcy5wZGZEb2N1bWVudClyZXR1cm47YXdhaXQgbmV3IFByb21pc2UoUD0+cmVxdWVzdEFuaW1hdGlvbkZyYW1lKFApKTtsZXQgaz10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5wcmV2aWV3LWNhbnZhcyIpO2lmKCFrKXJldHVybjt0aGlzLmNsZWFyQ2FudmFzZXMoKSx0aGlzLmNhY2hlRWxlbWVudHMoKTtsZXR7YXZhaWxhYmxlV2lkdGg6UyxhdmFpbGFibGVIZWlnaHQ6SX09dGhpcy5nZXRBdmFpbGFibGVTaXplKCk7dHJ5e2xldCBQPXRoaXMuY3VycmVudFByZXZpZXdQYWdlLFI9YXdhaXQgdGhpcy5wZGZEb2N1bWVudC5nZXRQYWdlKFApLEs9Ui5nZXRWaWV3cG9ydCh7c2NhbGU6MX0pLFY9Sy5oZWlnaHQvSy53aWR0aCxXPTEuNDE0LG1lPS43MDcsQj0xLjI5NCxVPS43NzMsaGU9LjA1LEY9TWF0aC5hYnMoVi1XKTxXKmhlLGo9TWF0aC5hYnMoVi1tZSk8bWUqaGUsdWU9TWF0aC5hYnMoVi1CKTxCKmhlLGxlPU1hdGguYWJzKFYtVSk8VSpoZTt0aGlzLmlzQTRGb3JtYXQ9Rnx8anx8dWV8fGxlO2xldCBRPXRoaXMuaXNBNEZvcm1hdD9TOlMtMjQsaWU9dGhpcy5pc0E0Rm9ybWF0P0k6SS0yNCx0ZT1RPjA/US9LLndpZHRoOjAsZWU9aWU+MD9pZS9LLmhlaWdodDowLGtlPU1hdGgubWluKHRlfHwuNSxlZXx8dGV8fC41KSxYPU1hdGgubWluKGtlKjIsMyk7aWYoIU51bWJlci5pc0Zpbml0ZShYKXx8WDw9MCl7Ui5jbGVhbnVwPy4oKTtyZXR1cm59bGV0IFo9Ui5nZXRWaWV3cG9ydCh7c2NhbGU6WH0pLHllPW9KLmFjcXVpcmUoWi53aWR0aCxaLmhlaWdodCk7dGhpcy5jYW52YXNlcy5wdXNoKHllKTtsZXQgcT17Y2FudmFzQ29udGV4dDp5ZS5jdHgsdmlld3BvcnQ6Wn07YXdhaXQgUi5yZW5kZXIocSkucHJvbWlzZSxrLndpZHRoPVoud2lkdGgsay5oZWlnaHQ9Wi5oZWlnaHQ7bGV0IEE9USxzZT1aLmhlaWdodC9aLndpZHRoKlE7aWYoc2U+aWUpe2xldCBhZT1pZSxUZT1aLndpZHRoL1ouaGVpZ2h0KmllO2suc3R5bGUud2lkdGg9YCR7VGV9cHhgLGsuc3R5bGUuaGVpZ2h0PWAke2FlfXB4YH1lbHNlIGsuc3R5bGUud2lkdGg9YCR7QX1weGAsay5zdHlsZS5oZWlnaHQ9YCR7c2V9cHhgO2xldCBvZT1rLmdldENvbnRleHQoIjJkIik7b2UmJihvZS5pbWFnZVNtb290aGluZ0VuYWJsZWQ9ITAsb2UuaW1hZ2VTbW9vdGhpbmdRdWFsaXR5PSJoaWdoIixvZS5kcmF3SW1hZ2UoeWUuY2FudmFzLDAsMCkpLFIuY2xlYW51cCgpfWNhdGNoKFApe2NvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byByZW5kZXIgcGFnZSAke3RoaXMuY3VycmVudFByZXZpZXdQYWdlfTpgLFApfX1jbGVhckNhbnZhc2VzKCl7Zm9yKGxldCBrIG9mIHRoaXMuY2FudmFzZXMpb0oucmVsZWFzZShrKTt0aGlzLmNhbnZhc2VzPVtdfWNsZWFudXAoKXt0aGlzLmNsZWFyQ2FudmFzZXMoKSx0aGlzLnBkZkRvY3VtZW50JiYoV3UucmVsZWFzZURvY3VtZW50KHRoaXMubG9hZGVkUGRmVXJsPz90aGlzLnBkZlVybCksdGhpcy5wZGZEb2N1bWVudD1udWxsKSx0aGlzLnJlbmRlclBhZ2VzUXVldWVkPSExLHRoaXMucGFnZUNvdW50PTAsdGhpcy5jdXJyZW50UHJldmlld1BhZ2U9MSx0aGlzLmlzSG92ZXJpbmc9ITEsdGhpcy5pc0E0Rm9ybWF0PSEwLHRoaXMuc3RhY2tFbGVtZW50PW51bGwsdGhpcy5sb2FkZWRQZGZVcmw9bnVsbCx0aGlzLnJlbmRlcmVkPSExLHRoaXMubG9hZGluZz0hMSx0aGlzLmVycm9yPSExfWFzeW5jIHVwZGF0ZWQoayl7aWYoc3VwZXIudXBkYXRlZChrKSxrLmhhcygicGRmVXJsIikmJnRoaXMucGRmVXJsKXtsZXQgUz1rLmdldCgicGRmVXJsIik7UyYmV3UucmVsZWFzZURvY3VtZW50KFMpLHRoaXMuY2xlYW51cCgpLHRoaXMucmVuZGVyZWQ9ITEsdGhpcy5jdXJyZW50UHJldmlld1BhZ2U9MTtsZXQgST10aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO0kudG9wPHdpbmRvdy5pbm5lckhlaWdodCYmSS5ib3R0b20+MCYmdGhpcy5sb2FkQW5kUmVuZGVyUHJldmlldygpfWsuaGFzKCJjdXJyZW50UHJldmlld1BhZ2UiKSYmdGhpcy5yZW5kZXJlZCYmYXdhaXQgdGhpcy5zY2hlZHVsZVJlbmRlclBhZ2VzKCl9Z2V0Q29udGV4dE1lbnVJdGVtcygpe2xldCBrPVtdO3JldHVybiB0aGlzLmNsaWNrYWJsZSYmKGsucHVzaCh7bmFtZToiVmlldyBQREYiLGljb25OYW1lOiJsdWNpZGU6RXllIixhY3Rpb246aShhc3luYygpPT57dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgidGlsZS1jbGljayIse2RldGFpbDp0aGlzLmdldFRpbGVDbGlja0RldGFpbCgpLGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9LCJhY3Rpb24iKX0pLGsucHVzaCh7ZGl2aWRlcjohMH0pKSxrLnB1c2goe25hbWU6Ik9wZW4gUERGIGluIE5ldyBUYWIiLGljb25OYW1lOiJsdWNpZGU6RXh0ZXJuYWxMaW5rIixhY3Rpb246aShhc3luYygpPT57d2luZG93Lm9wZW4odGhpcy5wZGZVcmwsIl9ibGFuayIpfSwiYWN0aW9uIil9LHtkaXZpZGVyOiEwfSx7bmFtZToiQ29weSBQREYgVVJMIixpY29uTmFtZToibHVjaWRlOkNvcHkiLGFjdGlvbjppKGFzeW5jKCk9Pnthd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0aGlzLnBkZlVybCl9LCJhY3Rpb24iKX0se25hbWU6IkRvd25sb2FkIFBERiIsaWNvbk5hbWU6Imx1Y2lkZTpEb3dubG9hZCIsYWN0aW9uOmkoYXN5bmMoKT0+e2xldCBTPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtTLmhyZWY9dGhpcy5wZGZVcmwsUy5kb3dubG9hZD10aGlzLnBkZlVybC5zcGxpdCgiLyIpLnBvcCgpfHwiZG9jdW1lbnQucGRmIixTLmNsaWNrKCl9LCJhY3Rpb24iKX0pLHRoaXMucGFnZUNvdW50PjAmJmsucHVzaCh7ZGl2aWRlcjohMH0se25hbWU6YCR7dGhpcy5wYWdlQ291bnR9IHBhZ2Uke3RoaXMucGFnZUNvdW50PjE/InMiOiIifWAsaWNvbk5hbWU6Imx1Y2lkZTpGaWxlVGV4dCIsZGlzYWJsZWQ6ITAsYWN0aW9uOmkoYXN5bmMoKT0+e30sImFjdGlvbiIpfSksa31jYWNoZUVsZW1lbnRzKCl7dGhpcy5zdGFja0VsZW1lbnR8fCh0aGlzLnN0YWNrRWxlbWVudD10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5wcmV2aWV3LXN0YWNrIikpfXNldHVwUmVzaXplT2JzZXJ2ZXIoKXt0aGlzLnJlc2l6ZU9ic2VydmVyfHwodGhpcy5yZXNpemVPYnNlcnZlcj1uZXcgUmVzaXplT2JzZXJ2ZXIoKCk9Pnt0aGlzLnJlbmRlcmVkJiZ0aGlzLnBkZkRvY3VtZW50JiYhdGhpcy5sb2FkaW5nJiZ0aGlzLnNjaGVkdWxlUmVuZGVyUGFnZXMoKX0pLHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzKSl9Z2V0QXZhaWxhYmxlU2l6ZSgpe2lmKHRoaXMuc3RhY2tFbGVtZW50fHwodGhpcy5zdGFja0VsZW1lbnQ9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIucHJldmlldy1zdGFjayIpKSwhdGhpcy5zdGFja0VsZW1lbnQpcmV0dXJue2F2YWlsYWJsZVdpZHRoOjIwMCxhdmFpbGFibGVIZWlnaHQ6MjYwfTtsZXQgaz10aGlzLnN0YWNrRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxTPU1hdGgubWF4KGsud2lkdGgsMCl8fDIwMCxJPU1hdGgubWF4KGsuaGVpZ2h0LDApfHwyNjA7cmV0dXJue2F2YWlsYWJsZVdpZHRoOlMsYXZhaWxhYmxlSGVpZ2h0Okl9fXN0YXRpY3tpbChhLHQpfX07cmV0dXJuIEg9YX0pKCl9KTt2YXIga2thPWcoKCk9Pnt3a2EoKX0pO3ZhciBTa2EsX2thPWcoKCk9PntwZSgpO1NrYT1pKCgpPT53YAogIDxzdHlsZT4KICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgIHBhZGRpbmc6IDQwcHg7CiAgICAgIGJhY2tncm91bmQ6ICNmNWY1ZjU7CiAgICB9CiAgICAuZGVtby1zZWN0aW9uIHsKICAgICAgbWFyZ2luLWJvdHRvbTogNjBweDsKICAgIH0KICAgIGgzIHsKICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICBmb250LXdlaWdodDogNjAwOwogICAgfQogICAgLnRpbGUtcm93IHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZ2FwOiAyNHB4OwogICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgfQogIDwvc3R5bGU+CgogIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgIDxoMz5JbWFnZSBUaWxlczwvaDM+CiAgICAgIDxkaXYgY2xhc3M9InRpbGUtcm93Ij4KICAgICAgICA8ZGVlcy10aHVtYm5haWwtaW1hZ2UKICAgICAgICAgIHNyYz0iaHR0cHM6Ly9waWNzdW0ucGhvdG9zLzgwMC82MDAiCiAgICAgICAgICBhbHQ9IkxhbmRzY2FwZSBwaG90byIKICAgICAgICAgIGxhYmVsPSJsYW5kc2NhcGUuanBnIgogICAgICAgICAgQHRpbGUtY2xpY2s9JHtzPT5jb25zb2xlLmxvZygiSW1hZ2UgY2xpY2tlZDoiLHMuZGV0YWlsKX0KICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC1pbWFnZT4KCiAgICAgICAgPGRlZXMtdGh1bWJuYWlsLWltYWdlCiAgICAgICAgICBzcmM9Imh0dHBzOi8vcGljc3VtLnBob3Rvcy80MDAvNDAwIgogICAgICAgICAgYWx0PSJTcXVhcmUgcGhvdG8iCiAgICAgICAgICBsYWJlbD0ic3F1YXJlLnBuZyIKICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC1pbWFnZT4KCiAgICAgICAgPGRlZXMtdGh1bWJuYWlsLWltYWdlCiAgICAgICAgICBzcmM9Imh0dHBzOi8vcGljc3VtLnBob3Rvcy8zMDAvOTAwIgogICAgICAgICAgYWx0PSJQb3J0cmFpdCBwaG90byIKICAgICAgICAgIGxhYmVsPSJwb3J0cmFpdC53ZWJwIgogICAgICAgID48L2RlZXMtdGh1bWJuYWlsLWltYWdlPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgIDxoMz5TaXplIFZhcmlhbnRzPC9oMz4KICAgICAgPGRpdiBjbGFzcz0idGlsZS1yb3ciPgogICAgICAgIDxkZWVzLXRodW1ibmFpbC1pbWFnZQogICAgICAgICAgc2l6ZT0ic21hbGwiCiAgICAgICAgICBzcmM9Imh0dHBzOi8vcGljc3VtLnBob3Rvcy8yMDAvMjAwIgogICAgICAgICAgYWx0PSJTbWFsbCIKICAgICAgICAgIGxhYmVsPSJzbWFsbC5qcGciCiAgICAgICAgPjwvZGVlcy10aHVtYm5haWwtaW1hZ2U+CgogICAgICAgIDxkZWVzLXRodW1ibmFpbC1pbWFnZQogICAgICAgICAgc3JjPSJodHRwczovL3BpY3N1bS5waG90b3MvNjAwLzQwMCIKICAgICAgICAgIGFsdD0iRGVmYXVsdCIKICAgICAgICAgIGxhYmVsPSJkZWZhdWx0LmpwZyIKICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC1pbWFnZT4KCiAgICAgICAgPGRlZXMtdGh1bWJuYWlsLWltYWdlCiAgICAgICAgICBzaXplPSJsYXJnZSIKICAgICAgICAgIHNyYz0iaHR0cHM6Ly9waWNzdW0ucGhvdG9zLzEyMDAvODAwIgogICAgICAgICAgYWx0PSJMYXJnZSIKICAgICAgICAgIGxhYmVsPSJsYXJnZS5qcGciCiAgICAgICAgPjwvZGVlcy10aHVtYm5haWwtaW1hZ2U+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgPGgzPkVycm9yIFN0YXRlIChicm9rZW4gVVJMKTwvaDM+CiAgICAgIDxkZWVzLXRodW1ibmFpbC1pbWFnZQogICAgICAgIHNyYz0iaHR0cHM6Ly9pbnZhbGlkLXVybC10aGF0LWRvZXMtbm90LWV4aXN0LmV4YW1wbGUvaW1hZ2UucG5nIgogICAgICAgIGFsdD0iQnJva2VuIgogICAgICAgIGxhYmVsPSJicm9rZW4ucG5nIgogICAgICA+PC9kZWVzLXRodW1ibmFpbC1pbWFnZT4KICAgIDwvZGl2PgogIDwvZGl2PgpgLCJkZW1vIil9KTt2YXIgVHgsQTIsUWVzLE1rYT1nKCgpPT57cGUoKTt3NCgpO0d1KCk7X2thKCk7VHg9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LEEyPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxRZXM9KCgpPT57bGV0IHM9W25lKCJkZWVzLXRodW1ibmFpbC1pbWFnZSIpXSxlLHQ9W10sYSxyPUlsLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdO3ZhciBOPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzVGh1bWJuYWlsSW1hZ2UiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgQz10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZ30pXSxwPVtMKHt0eXBlOlN0cmluZ30pXSxjPVtZKCldLHg9W1koKV0seT1bWSgpXSxUeCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNyYyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4ic3JjImluIF8sImhhcyIpLGdldDppKF89Pl8uc3JjLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uc3JjPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sbyxsKSxUeCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImFsdCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4iYWx0ImluIF8sImhhcyIpLGdldDppKF89Pl8uYWx0LCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uYWx0PU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sZCx1KSxUeCh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImltYWdlTG9hZGVkIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJpbWFnZUxvYWRlZCJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLmltYWdlTG9hZGVkLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uaW1hZ2VMb2FkZWQ9T30sInNldCIpfSxtZXRhZGF0YTpDfSxiLHYpLFR4KHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaW1hZ2VXaWR0aCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4iaW1hZ2VXaWR0aCJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLmltYWdlV2lkdGgsImdldCIpLHNldDppKChfLE8pPT57Xy5pbWFnZVdpZHRoPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sbSxmKSxUeCh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImltYWdlSGVpZ2h0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJpbWFnZUhlaWdodCJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLmltYWdlSGVpZ2h0LCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uaW1hZ2VIZWlnaHQ9T30sInNldCIpfSxtZXRhZGF0YTpDfSxNLHopLFR4KG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOkN9LG51bGwsdCksTj1hPWUudmFsdWUsQyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpDfSl9c3RhdGljIGRlbW89U2thO3N0YXRpYyBkZW1vR3JvdXBzPVsiTWVkaWEiXTtzdGF0aWMgc3R5bGVzPVsuLi5zbCxKYAogICAgICAuaW1hZ2Utd3JhcHBlciB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgicmVwZWF0aW5nLWNvbmljLWdyYWRpZW50KCNlOGU4ZTggMCUgMjUlLCB3aGl0ZSAwJSA1MCUpIDUwJSAvIDE2cHggMTZweCIsInJlcGVhdGluZy1jb25pYy1ncmFkaWVudChoc2woMjE1IDIwJSAxOCUpIDAlIDI1JSwgaHNsKDIxNSAyMCUgMTQlKSAwJSA1MCUpIDUwJSAvIDE2cHggMTZweCIpfTsKICAgICAgfQoKICAgICAgLmltYWdlLXdyYXBwZXIgaW1nIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5pbWFnZS13cmFwcGVyIGltZy5sb2FkZWQgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC5pbWFnZS13cmFwcGVyIGltZy5sb2FkaW5nIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICB9CgogICAgYF07I2U9QTIodGhpcyxvLCIiKTtnZXQgc3JjKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHNyYyhDKXt0aGlzLiNlPUN9I3Q9KEEyKHRoaXMsbCksQTIodGhpcyxkLCIiKSk7Z2V0IGFsdCgpe3JldHVybiB0aGlzLiN0fXNldCBhbHQoQyl7dGhpcy4jdD1DfSNhPShBMih0aGlzLHUpLEEyKHRoaXMsYiwhMSkpO2dldCBpbWFnZUxvYWRlZCgpe3JldHVybiB0aGlzLiNhfXNldCBpbWFnZUxvYWRlZChDKXt0aGlzLiNhPUN9I3M9KEEyKHRoaXMsdiksQTIodGhpcyxtLDApKTtnZXQgaW1hZ2VXaWR0aCgpe3JldHVybiB0aGlzLiNzfXNldCBpbWFnZVdpZHRoKEMpe3RoaXMuI3M9Q30jaT0oQTIodGhpcyxmKSxBMih0aGlzLE0sMCkpO2dldCBpbWFnZUhlaWdodCgpe3JldHVybiB0aGlzLiNpfXNldCBpbWFnZUhlaWdodChDKXt0aGlzLiNpPUN9aGFzU3RhcnRlZExvYWRpbmc9KEEyKHRoaXMseiksITEpO3JlbmRlclRpbGVDb250ZW50KCl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImltYWdlLXdyYXBwZXIiPgogICAgICAgICR7dGhpcy5oYXNTdGFydGVkTG9hZGluZz93YAogICAgICAgICAgPGltZwogICAgICAgICAgICBjbGFzcz0iJHt0aGlzLmltYWdlTG9hZGVkPyJsb2FkZWQiOiJsb2FkaW5nIn0iCiAgICAgICAgICAgIHNyYz0iJHt0aGlzLnNyY30iCiAgICAgICAgICAgIGFsdD0iJHt0aGlzLmFsdH0iCiAgICAgICAgICAgIEBsb2FkPSR7dGhpcy5oYW5kbGVJbWFnZUxvYWR9CiAgICAgICAgICAgIEBlcnJvcj0ke3RoaXMuaGFuZGxlSW1hZ2VFcnJvcn0KICAgICAgICAgIC8+CiAgICAgICAgYDoiIn0KICAgICAgPC9kaXY+CgogICAgICAke3RoaXMuY2xpY2thYmxlP3dgCiAgICAgICAgPGRpdiBjbGFzcz0idGlsZS1vdmVybGF5Ij4KICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOkV5ZSI+PC9kZWVzLWljb24+CiAgICAgICAgICA8c3Bhbj5WaWV3IEltYWdlPC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICBgOiIifQogICAgYH1yZW5kZXJCb3R0b21CYXIoKXtyZXR1cm4hdGhpcy5sYWJlbCYmISh0aGlzLmltYWdlV2lkdGg+MCk/IiI6d2AKICAgICAgPGRpdiBjbGFzcz0idGlsZS1pbmZvLWJhciI+CiAgICAgICAgJHt0aGlzLmxhYmVsP3dgPHNwYW4gY2xhc3M9ImluZm8tbGFiZWwiIHRpdGxlPSIke3RoaXMubGFiZWx9Ij4ke3RoaXMubGFiZWx9PC9zcGFuPmA6IiJ9CiAgICAgICAgPHNwYW4gY2xhc3M9ImluZm8tc3BhY2VyIj48L3NwYW4+CiAgICAgICAgJHt0aGlzLmltYWdlV2lkdGg+MCYmdGhpcy5pbWFnZUhlaWdodD4wP3dgPHNwYW4gY2xhc3M9ImluZm8tZGV0YWlsIj4ke3RoaXMuaW1hZ2VXaWR0aH0gw5cgJHt0aGlzLmltYWdlSGVpZ2h0fTwvc3Bhbj5gOiIifQogICAgICA8L2Rpdj4KICAgIGB9Z2V0VGlsZUNsaWNrRGV0YWlsKCl7cmV0dXJue3NyYzp0aGlzLnNyYyxhbHQ6dGhpcy5hbHQsd2lkdGg6dGhpcy5pbWFnZVdpZHRoLGhlaWdodDp0aGlzLmltYWdlSGVpZ2h0fX1vbkJlY2FtZVZpc2libGUoKXshdGhpcy5oYXNTdGFydGVkTG9hZGluZyYmdGhpcy5zcmMmJih0aGlzLmhhc1N0YXJ0ZWRMb2FkaW5nPSEwLHRoaXMubG9hZGluZz0hMCx0aGlzLnJlcXVlc3RVcGRhdGUoKSl9aGFuZGxlSW1hZ2VMb2FkKEMpe2xldCBfPUMudGFyZ2V0O3RoaXMuaW1hZ2VXaWR0aD1fLm5hdHVyYWxXaWR0aCx0aGlzLmltYWdlSGVpZ2h0PV8ubmF0dXJhbEhlaWdodCx0aGlzLmltYWdlTG9hZGVkPSEwLHRoaXMubG9hZGluZz0hMX1oYW5kbGVJbWFnZUVycm9yKCl7dGhpcy5lcnJvcj0hMCx0aGlzLmxvYWRpbmc9ITF9YXN5bmMgdXBkYXRlZChDKXtzdXBlci51cGRhdGVkKEMpLEMuaGFzKCJzcmMiKSYmdGhpcy5zcmMmJnRoaXMuaXNWaXNpYmxlJiYodGhpcy5oYXNTdGFydGVkTG9hZGluZz0hMCx0aGlzLmltYWdlTG9hZGVkPSExLHRoaXMubG9hZGluZz0hMCl9c3RhdGlje0EyKGEsdCl9fTtyZXR1cm4gTj1hfSkoKX0pO3ZhciB6a2E9ZygoKT0+e01rYSgpfSk7dmFyIENrYSxUa2E9ZygoKT0+e3BlKCk7Q2thPWkoKCk9PndgCiAgPHN0eWxlPgogICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgcGFkZGluZzogNDBweDsKICAgICAgYmFja2dyb3VuZDogI2Y1ZjVmNTsKICAgIH0KICAgIC5kZW1vLXNlY3Rpb24gewogICAgICBtYXJnaW4tYm90dG9tOiA2MHB4OwogICAgfQogICAgaDMgewogICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICB9CiAgICAudGlsZS1yb3cgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBnYXA6IDI0cHg7CiAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgICB9CiAgPC9zdHlsZT4KCiAgPGRpdiBjbGFzcz0iZGVtby1jb250YWluZXIiPgogICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgPGgzPkF1ZGlvIFRpbGVzPC9oMz4KICAgICAgPGRpdiBjbGFzcz0idGlsZS1yb3ciPgogICAgICAgIDxkZWVzLXRodW1ibmFpbC1hdWRpbwogICAgICAgICAgc3JjPSJodHRwczovL3d3dy5zb3VuZGhlbGl4LmNvbS9leGFtcGxlcy9tcDMvU291bmRIZWxpeC1Tb25nLTEubXAzIgogICAgICAgICAgdGl0bGU9IlNvdW5kSGVsaXggU29uZyAxIgogICAgICAgICAgYXJ0aXN0PSJULiBTY2h1ZXJnZXIiCiAgICAgICAgICBsYWJlbD0ic291bmRoZWxpeC0xLm1wMyIKICAgICAgICAgIEB0aWxlLWNsaWNrPSR7cz0+Y29uc29sZS5sb2coIkF1ZGlvIGNsaWNrZWQ6IixzLmRldGFpbCl9CiAgICAgICAgPjwvZGVlcy10aHVtYm5haWwtYXVkaW8+CgogICAgICAgIDxkZWVzLXRodW1ibmFpbC1hdWRpbwogICAgICAgICAgc3JjPSJodHRwczovL3d3dy5zb3VuZGhlbGl4LmNvbS9leGFtcGxlcy9tcDMvU291bmRIZWxpeC1Tb25nLTIubXAzIgogICAgICAgICAgdGl0bGU9IlNvdW5kSGVsaXggU29uZyAyIgogICAgICAgICAgYXJ0aXN0PSJULiBTY2h1ZXJnZXIiCiAgICAgICAgICBsYWJlbD0ic291bmRoZWxpeC0yLm1wMyIKICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC1hdWRpbz4KCiAgICAgICAgPGRlZXMtdGh1bWJuYWlsLWF1ZGlvCiAgICAgICAgICBzcmM9Imh0dHBzOi8vd3d3LnNvdW5kaGVsaXguY29tL2V4YW1wbGVzL21wMy9Tb3VuZEhlbGl4LVNvbmctMy5tcDMiCiAgICAgICAgICB0aXRsZT0iU291bmRIZWxpeCBTb25nIDMiCiAgICAgICAgICBsYWJlbD0ic291bmRoZWxpeC0zLm1wMyIKICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC1hdWRpbz4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICA8aDM+U2l6ZSBWYXJpYW50czwvaDM+CiAgICAgIDxkaXYgY2xhc3M9InRpbGUtcm93Ij4KICAgICAgICA8ZGVlcy10aHVtYm5haWwtYXVkaW8KICAgICAgICAgIHNpemU9InNtYWxsIgogICAgICAgICAgc3JjPSJodHRwczovL3d3dy5zb3VuZGhlbGl4LmNvbS9leGFtcGxlcy9tcDMvU291bmRIZWxpeC1Tb25nLTEubXAzIgogICAgICAgICAgdGl0bGU9IlNtYWxsIgogICAgICAgICAgbGFiZWw9InNtYWxsLm1wMyIKICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC1hdWRpbz4KCiAgICAgICAgPGRlZXMtdGh1bWJuYWlsLWF1ZGlvCiAgICAgICAgICBzcmM9Imh0dHBzOi8vd3d3LnNvdW5kaGVsaXguY29tL2V4YW1wbGVzL21wMy9Tb3VuZEhlbGl4LVNvbmctMS5tcDMiCiAgICAgICAgICB0aXRsZT0iRGVmYXVsdCIKICAgICAgICAgIGxhYmVsPSJkZWZhdWx0Lm1wMyIKICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC1hdWRpbz4KCiAgICAgICAgPGRlZXMtdGh1bWJuYWlsLWF1ZGlvCiAgICAgICAgICBzaXplPSJsYXJnZSIKICAgICAgICAgIHNyYz0iaHR0cHM6Ly93d3cuc291bmRoZWxpeC5jb20vZXhhbXBsZXMvbXAzL1NvdW5kSGVsaXgtU29uZy0xLm1wMyIKICAgICAgICAgIHRpdGxlPSJMYXJnZSIKICAgICAgICAgIGxhYmVsPSJsYXJnZS5tcDMiCiAgICAgICAgPjwvZGVlcy10aHVtYm5haWwtYXVkaW8+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CmAsImRlbW8iKX0pO3ZhciBTNCxybCxKZXMsJGthPWcoKCk9PntwZSgpO3c0KCk7R3UoKTtUa2EoKTtTND1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0scmw9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LEplcz0oKCk9PntsZXQgcz1bbmUoImRlZXMtdGh1bWJuYWlsLWF1ZGlvIildLGUsdD1bXSxhLHI9SWwsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W107dmFyIEg9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNUaHVtYm5haWxBdWRpbyIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBrPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6U3RyaW5nfSldLHA9W0woe3R5cGU6U3RyaW5nfSldLGM9W0woe3R5cGU6U3RyaW5nfSldLHg9W1koKV0seT1bWSgpXSxOPVtZKCldLE89W1koKV0sUzQodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzcmMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+InNyYyJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLnNyYywiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLnNyYz1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LG8sbCksUzQodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0aXRsZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4idGl0bGUiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy50aXRsZSwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLnRpdGxlPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sZCx1KSxTNCh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImFydGlzdCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4iYXJ0aXN0ImluIFMsImhhcyIpLGdldDppKFM9PlMuYXJ0aXN0LCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MuYXJ0aXN0PUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sYix2KSxTNCh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImR1cmF0aW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJkdXJhdGlvbiJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLmR1cmF0aW9uLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MuZHVyYXRpb249SX0sInNldCIpfSxtZXRhZGF0YTprfSxtLGYpLFM0KHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToid2F2ZWZvcm1EYXRhIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJ3YXZlZm9ybURhdGEiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy53YXZlZm9ybURhdGEsImdldCIpLHNldDppKChTLEkpPT57Uy53YXZlZm9ybURhdGE9SX0sInNldCIpfSxtZXRhZGF0YTprfSxNLHopLFM0KHRoaXMsbnVsbCxOLHtraW5kOiJhY2Nlc3NvciIsbmFtZToid2F2ZWZvcm1SZWFkeSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4id2F2ZWZvcm1SZWFkeSJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLndhdmVmb3JtUmVhZHksImdldCIpLHNldDppKChTLEkpPT57Uy53YXZlZm9ybVJlYWR5PUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sQyxfKSxTNCh0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImlzUHJldmlld1BsYXlpbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+ImlzUHJldmlld1BsYXlpbmciaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5pc1ByZXZpZXdQbGF5aW5nLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MuaXNQcmV2aWV3UGxheWluZz1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LCQsRSksUzQobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6a30sbnVsbCx0KSxIPWE9ZS52YWx1ZSxrJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmt9KX1zdGF0aWMgZGVtbz1Da2E7c3RhdGljIGRlbW9Hcm91cHM9WyJNZWRpYSJdO3N0YXRpYyBzdHlsZXM9Wy4uLnNsLEpgCiAgICAgIC5hdWRpby1jb250ZW50IHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGdhcDogMTZweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgibGluZWFyLWdyYWRpZW50KDEzNWRlZywgaHNsKDI1MCA0MCUgOTYlKSwgaHNsKDI4MCAzMCUgOTQlKSkiLCJsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBoc2woMjUwIDMwJSAxNiUpLCBoc2woMjgwIDI1JSAxNCUpKSIpfTsKICAgICAgfQoKICAgICAgLm11c2ljLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogNDhweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyNTAgNjAlIDY1JSkiLCJoc2woMjUwIDYwJSA3MCUpIil9OwogICAgICAgIG9wYWNpdHk6IDAuODsKICAgICAgfQoKICAgICAgLmF1ZGlvLXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyNTAgMjAlIDM1JSkiLCJoc2woMjUwIDIwJSA4MCUpIil9OwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiAwIDE2cHg7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgLmF1ZGlvLWFydGlzdCB7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjUwIDE1JSA1MCUpIiwiaHNsKDI1MCAxNSUgNjUlKSIpfTsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgIG1hcmdpbi10b3A6IC0xMnB4OwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgIH0KCiAgICAgIC53YXZlZm9ybS1jb250YWluZXIgewogICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAzMnB4KTsKICAgICAgICBoZWlnaHQ6IDQwcHg7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC53YXZlZm9ybS1jb250YWluZXIgY2FudmFzIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KCgogICAgICAucGxheS1vdmVybGF5IHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlOwogICAgICAgIHotaW5kZXg6IDE4OwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICAudGlsZS1jb250YWluZXIuY2xpY2thYmxlOmhvdmVyIC5wbGF5LW92ZXJsYXkgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC5wbGF5LWNpcmNsZSB7CiAgICAgICAgd2lkdGg6IDQ4cHg7CiAgICAgICAgaGVpZ2h0OiA0OHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNik7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig4cHgpOwogICAgICB9CgogICAgICAucGxheS1jaXJjbGUgZGVlcy1pY29uIHsKICAgICAgICBmb250LXNpemU6IDIwcHg7CiAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICB9CiAgICBgXTsjZT1ybCh0aGlzLG8sIiIpO2dldCBzcmMoKXtyZXR1cm4gdGhpcy4jZX1zZXQgc3JjKGspe3RoaXMuI2U9a30jdD0ocmwodGhpcyxsKSxybCh0aGlzLGQsIiIpKTtnZXQgdGl0bGUoKXtyZXR1cm4gdGhpcy4jdH1zZXQgdGl0bGUoayl7dGhpcy4jdD1rfSNhPShybCh0aGlzLHUpLHJsKHRoaXMsYiwiIikpO2dldCBhcnRpc3QoKXtyZXR1cm4gdGhpcy4jYX1zZXQgYXJ0aXN0KGspe3RoaXMuI2E9a30jcz0ocmwodGhpcyx2KSxybCh0aGlzLG0sMCkpO2dldCBkdXJhdGlvbigpe3JldHVybiB0aGlzLiNzfXNldCBkdXJhdGlvbihrKXt0aGlzLiNzPWt9I2k9KHJsKHRoaXMsZikscmwodGhpcyxNLFtdKSk7Z2V0IHdhdmVmb3JtRGF0YSgpe3JldHVybiB0aGlzLiNpfXNldCB3YXZlZm9ybURhdGEoayl7dGhpcy4jaT1rfSNyPShybCh0aGlzLHopLHJsKHRoaXMsQywhMSkpO2dldCB3YXZlZm9ybVJlYWR5KCl7cmV0dXJuIHRoaXMuI3J9c2V0IHdhdmVmb3JtUmVhZHkoayl7dGhpcy4jcj1rfSNvPShybCh0aGlzLF8pLHJsKHRoaXMsJCwhMSkpO2dldCBpc1ByZXZpZXdQbGF5aW5nKCl7cmV0dXJuIHRoaXMuI299c2V0IGlzUHJldmlld1BsYXlpbmcoayl7dGhpcy4jbz1rfWF1ZGlvRWxlbWVudD0ocmwodGhpcyxFKSxudWxsKTtwcmV2aWV3VGltZW91dD1udWxsO2hhc0xvYWRlZFdhdmVmb3JtPSExO3JlbmRlclRpbGVDb250ZW50KCl7cmV0dXJuIHdgCiAgICAgIDxkaXYgY2xhc3M9ImF1ZGlvLWNvbnRlbnQiPgogICAgICAgIDxkZWVzLWljb24gY2xhc3M9Im11c2ljLWljb24iIGljb249Imx1Y2lkZTpNdXNpYyI+PC9kZWVzLWljb24+CgogICAgICAgICR7dGhpcy50aXRsZT93YDxkaXYgY2xhc3M9ImF1ZGlvLXRpdGxlIj4ke3RoaXMudGl0bGV9PC9kaXY+YDoiIn0KICAgICAgICAke3RoaXMuYXJ0aXN0P3dgPGRpdiBjbGFzcz0iYXVkaW8tYXJ0aXN0Ij4ke3RoaXMuYXJ0aXN0fTwvZGl2PmA6IiJ9CgogICAgICAgICR7dGhpcy53YXZlZm9ybVJlYWR5P3dgCiAgICAgICAgICA8ZGl2IGNsYXNzPSJ3YXZlZm9ybS1jb250YWluZXIiPgogICAgICAgICAgICA8Y2FudmFzPjwvY2FudmFzPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgYDoiIn0KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJwbGF5LW92ZXJsYXkiPgogICAgICAgIDxkaXYgY2xhc3M9InBsYXktY2lyY2xlIj4KICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOlBsYXkiPjwvZGVlcy1pY29uPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgICR7dGhpcy5jbGlja2FibGU/d2AKICAgICAgICA8ZGl2IGNsYXNzPSJ0aWxlLW92ZXJsYXkiPgogICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6SGVhZHBob25lcyI+PC9kZWVzLWljb24+CiAgICAgICAgICA8c3Bhbj5QbGF5IEF1ZGlvPC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICBgOiIifQogICAgYH1yZW5kZXJCb3R0b21CYXIoKXtyZXR1cm4hdGhpcy5sYWJlbCYmIXRoaXMuZHVyYXRpb24/IiI6d2AKICAgICAgPGRpdiBjbGFzcz0idGlsZS1pbmZvLWJhciI+CiAgICAgICAgJHt0aGlzLmxhYmVsP3dgPHNwYW4gY2xhc3M9ImluZm8tbGFiZWwiIHRpdGxlPSIke3RoaXMubGFiZWx9Ij4ke3RoaXMubGFiZWx9PC9zcGFuPmA6IiJ9CiAgICAgICAgPHNwYW4gY2xhc3M9ImluZm8tc3BhY2VyIj48L3NwYW4+CiAgICAgICAgJHt0aGlzLmR1cmF0aW9uPjA/d2A8c3BhbiBjbGFzcz0iaW5mby1kZXRhaWwiPiR7dGhpcy5mb3JtYXRUaW1lKHRoaXMuZHVyYXRpb24pfTwvc3Bhbj5gOiIifQogICAgICA8L2Rpdj4KICAgIGB9Z2V0VGlsZUNsaWNrRGV0YWlsKCl7cmV0dXJue3NyYzp0aGlzLnNyYyx0aXRsZTp0aGlzLnRpdGxlLGFydGlzdDp0aGlzLmFydGlzdCxkdXJhdGlvbjp0aGlzLmR1cmF0aW9ufX1vbkJlY2FtZVZpc2libGUoKXshdGhpcy5oYXNMb2FkZWRXYXZlZm9ybSYmdGhpcy5zcmMmJih0aGlzLmhhc0xvYWRlZFdhdmVmb3JtPSEwLHRoaXMubG9hZEF1ZGlvTWV0YSgpKX1hc3luYyBsb2FkQXVkaW9NZXRhKCl7dGhpcy5sb2FkaW5nPSEwO3RyeXtsZXQgaz1uZXcgQXVkaW87ay5jcm9zc09yaWdpbj0iYW5vbnltb3VzIixrLnByZWxvYWQ9Im1ldGFkYXRhIixhd2FpdCBuZXcgUHJvbWlzZSgoUyxJKT0+e2suYWRkRXZlbnRMaXN0ZW5lcigibG9hZGVkbWV0YWRhdGEiLCgpPT57dGhpcy5kdXJhdGlvbj1rLmR1cmF0aW9uLFMoKX0se29uY2U6ITB9KSxrLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwoKT0+SShuZXcgRXJyb3IoIkZhaWxlZCB0byBsb2FkIGF1ZGlvIikpLHtvbmNlOiEwfSksay5zcmM9dGhpcy5zcmN9KSxhd2FpdCB0aGlzLmxvYWRXYXZlZm9ybSgpLHRoaXMubG9hZGluZz0hMX1jYXRjaHt0aGlzLmxvYWRpbmc9ITF9fWFzeW5jIGxvYWRXYXZlZm9ybSgpe3RyeXtsZXQgUz1hd2FpdChhd2FpdCBmZXRjaCh0aGlzLnNyYykpLmFycmF5QnVmZmVyKCksST1uZXcgQXVkaW9Db250ZXh0LFI9KGF3YWl0IEkuZGVjb2RlQXVkaW9EYXRhKFMpKS5nZXRDaGFubmVsRGF0YSgwKSxLPTgwLFY9TWF0aC5mbG9vcihSLmxlbmd0aC9LKSxXPVtdO2ZvcihsZXQgQj0wO0I8SztCKyspe2xldCBVPTA7Zm9yKGxldCBoZT0wO2hlPFY7aGUrKylVKz1NYXRoLmFicyhSW0IqVitoZV0pO1cucHVzaChVL1YpfWxldCBtZT1NYXRoLm1heCguLi5XKTt0aGlzLndhdmVmb3JtRGF0YT1XLm1hcChCPT5tZT4wP0IvbWU6MCksdGhpcy53YXZlZm9ybVJlYWR5PSEwLGF3YWl0IEkuY2xvc2UoKSxhd2FpdCB0aGlzLnVwZGF0ZUNvbXBsZXRlLHRoaXMuZHJhd1dhdmVmb3JtKCl9Y2F0Y2h7dGhpcy53YXZlZm9ybVJlYWR5PSExfX1kcmF3V2F2ZWZvcm0oKXtpZighdGhpcy53YXZlZm9ybVJlYWR5KXJldHVybjtsZXQgaz10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi53YXZlZm9ybS1jb250YWluZXIgY2FudmFzIik7aWYoIWspcmV0dXJuO2xldCBTPWsucGFyZW50RWxlbWVudCxJPXdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvfHwxLFA9Uy5jbGllbnRXaWR0aCxSPVMuY2xpZW50SGVpZ2h0O2sud2lkdGg9UCpJLGsuaGVpZ2h0PVIqSTtsZXQgSz1rLmdldENvbnRleHQoIjJkIik7aWYoIUspcmV0dXJuO0suc2NhbGUoSSxJKSxLLmNsZWFyUmVjdCgwLDAsUCxSKTtsZXQgVj10aGlzLndhdmVmb3JtRGF0YS5sZW5ndGg7aWYoVj09PTApcmV0dXJuO2xldCBXPVAvVixCPWRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCJ0aGVtZS1kYXJrIil8fHdpbmRvdy5tYXRjaE1lZGlhKCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIikubWF0Y2hlcz8iaHNsKDI1MCA1MCUgNjAlKSI6ImhzbCgyNTAgNTAlIDcwJSkiO0suZmlsbFN0eWxlPUI7Zm9yKGxldCBVPTA7VTxWO1UrKyl7bGV0IGhlPXRoaXMud2F2ZWZvcm1EYXRhW1VdLEY9TWF0aC5tYXgoMixoZSooUi00KSksaj1VKlcsdWU9KFItRikvMjtLLmZpbGxSZWN0KGorLjUsdWUsVy0xLEYpfX1hc3luYyB1cGRhdGVkKGspe3N1cGVyLnVwZGF0ZWQoayksay5oYXMoInNyYyIpJiZ0aGlzLnNyYyYmdGhpcy5pc1Zpc2libGUmJih0aGlzLmhhc0xvYWRlZFdhdmVmb3JtPSEwLHRoaXMud2F2ZWZvcm1SZWFkeT0hMSx0aGlzLmR1cmF0aW9uPTAsdGhpcy5sb2FkQXVkaW9NZXRhKCkpLGsuaGFzKCJ3YXZlZm9ybVJlYWR5IikmJnRoaXMud2F2ZWZvcm1SZWFkeSYmKGF3YWl0IHRoaXMudXBkYXRlQ29tcGxldGUsdGhpcy5kcmF3V2F2ZWZvcm0oKSl9YXN5bmMgZGlzY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMucHJldmlld1RpbWVvdXQmJmNsZWFyVGltZW91dCh0aGlzLnByZXZpZXdUaW1lb3V0KSx0aGlzLmF1ZGlvRWxlbWVudCYmKHRoaXMuYXVkaW9FbGVtZW50LnBhdXNlKCksdGhpcy5hdWRpb0VsZW1lbnQuc3JjPSIiLHRoaXMuYXVkaW9FbGVtZW50PW51bGwpfWZvcm1hdFRpbWUoayl7aWYoIWlzRmluaXRlKGspfHxrPDApcmV0dXJuIjA6MDAiO2xldCBTPU1hdGguZmxvb3Ioay82MCksST1NYXRoLmZsb29yKGslNjApO3JldHVybmAke1N9OiR7SS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX1gfXN0YXRpY3tybChhLHQpfX07cmV0dXJuIEg9YX0pKCl9KTt2YXIgRGthPWcoKCk9Pnska2EoKX0pO3ZhciBMa2EsRWthPWcoKCk9PntwZSgpO0xrYT1pKCgpPT53YAogIDxzdHlsZT4KICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgIHBhZGRpbmc6IDQwcHg7CiAgICAgIGJhY2tncm91bmQ6ICNmNWY1ZjU7CiAgICB9CiAgICAuZGVtby1zZWN0aW9uIHsKICAgICAgbWFyZ2luLWJvdHRvbTogNjBweDsKICAgIH0KICAgIGgzIHsKICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICBmb250LXdlaWdodDogNjAwOwogICAgfQogICAgLnRpbGUtcm93IHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZ2FwOiAyNHB4OwogICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgfQogIDwvc3R5bGU+CgogIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgIDxoMz5WaWRlbyBUaWxlczwvaDM+CiAgICAgIDxkaXYgY2xhc3M9InRpbGUtcm93Ij4KICAgICAgICA8ZGVlcy10aHVtYm5haWwtdmlkZW8KICAgICAgICAgIHNyYz0iaHR0cHM6Ly93d3cudzNzY2hvb2xzLmNvbS9odG1sL21vdl9iYmIubXA0IgogICAgICAgICAgbGFiZWw9ImJ1bm55Lm1wNCIKICAgICAgICAgIEB0aWxlLWNsaWNrPSR7cz0+Y29uc29sZS5sb2coIlZpZGVvIGNsaWNrZWQ6IixzLmRldGFpbCl9CiAgICAgICAgPjwvZGVlcy10aHVtYm5haWwtdmlkZW8+CgogICAgICAgIDxkZWVzLXRodW1ibmFpbC12aWRlbwogICAgICAgICAgc3JjPSJodHRwczovL3d3dy53M3NjaG9vbHMuY29tL2h0bWwvbW92aWUubXA0IgogICAgICAgICAgcG9zdGVyPSJodHRwczovL3BpY3N1bS5waG90b3MvNDAwLzMwMCIKICAgICAgICAgIGxhYmVsPSJtb3ZpZS5tcDQiCiAgICAgICAgPjwvZGVlcy10aHVtYm5haWwtdmlkZW8+CgogICAgICAgIDxkZWVzLXRodW1ibmFpbC12aWRlbwogICAgICAgICAgc3JjPSJodHRwczovL3d3dy53M3NjaG9vbHMuY29tL2h0bWwvbW92X2JiYi5tcDQiCiAgICAgICAgICBsYWJlbD0iYW5vdGhlci12aWRlby5tcDQiCiAgICAgICAgPjwvZGVlcy10aHVtYm5haWwtdmlkZW8+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iZGVtby1zZWN0aW9uIj4KICAgICAgPGgzPlNpemUgVmFyaWFudHM8L2gzPgogICAgICA8ZGl2IGNsYXNzPSJ0aWxlLXJvdyI+CiAgICAgICAgPGRlZXMtdGh1bWJuYWlsLXZpZGVvCiAgICAgICAgICBzaXplPSJzbWFsbCIKICAgICAgICAgIHNyYz0iaHR0cHM6Ly93d3cudzNzY2hvb2xzLmNvbS9odG1sL21vdl9iYmIubXA0IgogICAgICAgICAgbGFiZWw9InNtYWxsLm1wNCIKICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC12aWRlbz4KCiAgICAgICAgPGRlZXMtdGh1bWJuYWlsLXZpZGVvCiAgICAgICAgICBzcmM9Imh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vaHRtbC9tb3ZfYmJiLm1wNCIKICAgICAgICAgIGxhYmVsPSJkZWZhdWx0Lm1wNCIKICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC12aWRlbz4KCiAgICAgICAgPGRlZXMtdGh1bWJuYWlsLXZpZGVvCiAgICAgICAgICBzaXplPSJsYXJnZSIKICAgICAgICAgIHNyYz0iaHR0cHM6Ly93d3cudzNzY2hvb2xzLmNvbS9odG1sL21vdl9iYmIubXA0IgogICAgICAgICAgbGFiZWw9ImxhcmdlLm1wNCIKICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC12aWRlbz4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICA8aDM+V2l0aCBQb3N0ZXIgSW1hZ2U8L2gzPgogICAgICA8ZGVlcy10aHVtYm5haWwtdmlkZW8KICAgICAgICBzcmM9Imh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vaHRtbC9tb3ZpZS5tcDQiCiAgICAgICAgcG9zdGVyPSJodHRwczovL3BpY3N1bS5waG90b3MvNjAwLzQwMCIKICAgICAgICBsYWJlbD0icG9zdGVyLXZpZGVvLm1wNCIKICAgICAgPjwvZGVlcy10aHVtYm5haWwtdmlkZW8+CiAgICA8L2Rpdj4KICA8L2Rpdj4KYCwiZGVtbyIpfSk7dmFyICR4LE4yLGV0cyxQa2E9ZygoKT0+e3BlKCk7dzQoKTtHdSgpO0VrYSgpOyR4PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxOMj1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sZXRzPSgoKT0+e2xldCBzPVtuZSgiZGVlcy10aHVtYm5haWwtdmlkZW8iKV0sZSx0PVtdLGEscj1JbCxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXTt2YXIgTj1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1RodW1ibmFpbFZpZGVvIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IEM9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpTdHJpbmd9KV0scD1bTCh7dHlwZTpTdHJpbmd9KV0sYz1bWSgpXSx4PVtZKCldLHk9W1koKV0sJHgodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzcmMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+InNyYyJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLnNyYywiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLnNyYz1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LG8sbCksJHgodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJwb3N0ZXIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+InBvc3RlciJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLnBvc3RlciwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLnBvc3Rlcj1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LGQsdSksJHgodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJkdXJhdGlvbiIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4iZHVyYXRpb24iaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5kdXJhdGlvbiwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLmR1cmF0aW9uPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sYix2KSwkeCh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InRodW1ibmFpbENhcHR1cmVkIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJ0aHVtYm5haWxDYXB0dXJlZCJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLnRodW1ibmFpbENhcHR1cmVkLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18udGh1bWJuYWlsQ2FwdHVyZWQ9T30sInNldCIpfSxtZXRhZGF0YTpDfSxtLGYpLCR4KHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNIb3ZlcmluZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4iaXNIb3ZlcmluZyJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLmlzSG92ZXJpbmcsImdldCIpLHNldDppKChfLE8pPT57Xy5pc0hvdmVyaW5nPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sTSx6KSwkeChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpDfSxudWxsLHQpLE49YT1lLnZhbHVlLEMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Q30pfXN0YXRpYyBkZW1vPUxrYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIk1lZGlhIl07c3RhdGljIHN0eWxlcz1bLi4uc2wsSmAKICAgICAgLnZpZGVvLXdyYXBwZXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwOwogICAgICB9CgogICAgICAudmlkZW8td3JhcHBlciB2aWRlbyB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG9iamVjdC1maXQ6IGNvdmVyOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICAudmlkZW8td3JhcHBlciBjYW52YXMgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgLnBvc3Rlci1pbWFnZSB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG9iamVjdC1maXQ6IGNvdmVyOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgoKICAgICAgLnBsYXktb3ZlcmxheSB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogNTAlOwogICAgICAgIGxlZnQ6IDUwJTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgICAgICB3aWR0aDogNDhweDsKICAgICAgICBoZWlnaHQ6IDQ4cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC42KTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgei1pbmRleDogMTU7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5wbGF5LW92ZXJsYXkgZGVlcy1pY29uIHsKICAgICAgICBmb250LXNpemU6IDIwcHg7CiAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICB9CgogICAgICAudGlsZS1jb250YWluZXIuY2xpY2thYmxlOmhvdmVyIC5wbGF5LW92ZXJsYXkgewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgIH0KCiAgICAgIC52aWRlby1ob3Zlci1wcmV2aWV3IHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG9iamVjdC1maXQ6IGNvdmVyOwogICAgICAgIHotaW5kZXg6IDU7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTsKICAgICAgfQoKICAgICAgLnZpZGVvLWhvdmVyLXByZXZpZXcuYWN0aXZlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CiAgICBgXTsjZT1OMih0aGlzLG8sIiIpO2dldCBzcmMoKXtyZXR1cm4gdGhpcy4jZX1zZXQgc3JjKEMpe3RoaXMuI2U9Q30jdD0oTjIodGhpcyxsKSxOMih0aGlzLGQsIiIpKTtnZXQgcG9zdGVyKCl7cmV0dXJuIHRoaXMuI3R9c2V0IHBvc3RlcihDKXt0aGlzLiN0PUN9I2E9KE4yKHRoaXMsdSksTjIodGhpcyxiLDApKTtnZXQgZHVyYXRpb24oKXtyZXR1cm4gdGhpcy4jYX1zZXQgZHVyYXRpb24oQyl7dGhpcy4jYT1DfSNzPShOMih0aGlzLHYpLE4yKHRoaXMsbSwhMSkpO2dldCB0aHVtYm5haWxDYXB0dXJlZCgpe3JldHVybiB0aGlzLiNzfXNldCB0aHVtYm5haWxDYXB0dXJlZChDKXt0aGlzLiNzPUN9I2k9KE4yKHRoaXMsZiksTjIodGhpcyxNLCExKSk7Z2V0IGlzSG92ZXJpbmcoKXtyZXR1cm4gdGhpcy4jaX1zZXQgaXNIb3ZlcmluZyhDKXt0aGlzLiNpPUN9dGh1bWJuYWlsQ2FudmFzPShOMih0aGlzLHopLG51bGwpO2hvdmVyVmlkZW89bnVsbDtoYXNTdGFydGVkTG9hZGluZz0hMTtyZW5kZXJUaWxlQ29udGVudCgpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJ2aWRlby13cmFwcGVyIj4KICAgICAgICAke3RoaXMucG9zdGVyP3dgCiAgICAgICAgICA8aW1nIGNsYXNzPSJwb3N0ZXItaW1hZ2UiIHNyYz0iJHt0aGlzLnBvc3Rlcn0iIGFsdD0iIiAvPgogICAgICAgIGA6dGhpcy50aHVtYm5haWxDYXB0dXJlZD93YAogICAgICAgICAgPGNhbnZhcz48L2NhbnZhcz4KICAgICAgICBgOndgCiAgICAgICAgICA8ZGl2IHN0eWxlPSJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBiYWNrZ3JvdW5kOiAjMDAwOyI+PC9kaXY+CiAgICAgICAgYH0KCiAgICAgICAgJHt0aGlzLmlzSG92ZXJpbmcmJnRoaXMuc3JjP3dgCiAgICAgICAgICA8dmlkZW8KICAgICAgICAgICAgY2xhc3M9InZpZGVvLWhvdmVyLXByZXZpZXcgJHt0aGlzLmlzSG92ZXJpbmc/ImFjdGl2ZSI6IiJ9IgogICAgICAgICAgICAuc3JjPSR7dGhpcy5zcmN9CiAgICAgICAgICAgIG11dGVkCiAgICAgICAgICAgIHBsYXlzaW5saW5lCiAgICAgICAgICAgIEBsb2FkZWRkYXRhPSR7dGhpcy5oYW5kbGVIb3ZlclZpZGVvTG9hZGVkfQogICAgICAgICAgPjwvdmlkZW8+CiAgICAgICAgYDoiIn0KICAgICAgPC9kaXY+CgogICAgICAke3RoaXMuaXNIb3ZlcmluZz8iIjp3YAogICAgICAgIDxkaXYgY2xhc3M9InBsYXktb3ZlcmxheSI+CiAgICAgICAgICA8ZGVlcy1pY29uIGljb249Imx1Y2lkZTpQbGF5Ij48L2RlZXMtaWNvbj4KICAgICAgICA8L2Rpdj4KICAgICAgYH0KCiAgICAgICR7dGhpcy5jbGlja2FibGU/d2AKICAgICAgICA8ZGl2IGNsYXNzPSJ0aWxlLW92ZXJsYXkiPgogICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6UGxheSI+PC9kZWVzLWljb24+CiAgICAgICAgICA8c3Bhbj5QbGF5IFZpZGVvPC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICBgOiIifQogICAgYH1yZW5kZXJCb3R0b21CYXIoKXtyZXR1cm4hdGhpcy5sYWJlbCYmIXRoaXMuZHVyYXRpb24/IiI6d2AKICAgICAgPGRpdiBjbGFzcz0idGlsZS1pbmZvLWJhciI+CiAgICAgICAgJHt0aGlzLmxhYmVsP3dgPHNwYW4gY2xhc3M9ImluZm8tbGFiZWwiIHRpdGxlPSIke3RoaXMubGFiZWx9Ij4ke3RoaXMubGFiZWx9PC9zcGFuPmA6IiJ9CiAgICAgICAgPHNwYW4gY2xhc3M9ImluZm8tc3BhY2VyIj48L3NwYW4+CiAgICAgICAgJHt0aGlzLmR1cmF0aW9uPjA/d2A8c3BhbiBjbGFzcz0iaW5mby1kZXRhaWwiPiR7dGhpcy5mb3JtYXRUaW1lKHRoaXMuZHVyYXRpb24pfTwvc3Bhbj5gOiIifQogICAgICA8L2Rpdj4KICAgIGB9Z2V0VGlsZUNsaWNrRGV0YWlsKCl7cmV0dXJue3NyYzp0aGlzLnNyYyxwb3N0ZXI6dGhpcy5wb3N0ZXIsZHVyYXRpb246dGhpcy5kdXJhdGlvbn19b25CZWNhbWVWaXNpYmxlKCl7IXRoaXMuaGFzU3RhcnRlZExvYWRpbmcmJnRoaXMuc3JjJiYodGhpcy5oYXNTdGFydGVkTG9hZGluZz0hMCx0aGlzLmNhcHR1cmVGaXJzdEZyYW1lKCkpfWFzeW5jIGNhcHR1cmVGaXJzdEZyYW1lKCl7aWYodGhpcy5wb3N0ZXIpe3RoaXMubG9hZER1cmF0aW9uKCk7cmV0dXJufXRoaXMubG9hZGluZz0hMDt0cnl7bGV0IEM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidmlkZW8iKTtDLmNyb3NzT3JpZ2luPSJhbm9ueW1vdXMiLEMubXV0ZWQ9ITAsQy5wcmVsb2FkPSJtZXRhZGF0YSIsYXdhaXQgbmV3IFByb21pc2UoKF8sTyk9PntDLmFkZEV2ZW50TGlzdGVuZXIoImxvYWRlZGRhdGEiLCgpPT57dGhpcy5kdXJhdGlvbj1DLmR1cmF0aW9uLEMuY3VycmVudFRpbWU9LjEsQy5hZGRFdmVudExpc3RlbmVyKCJzZWVrZWQiLCgpPT57bGV0ICQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7JC53aWR0aD1DLnZpZGVvV2lkdGgsJC5oZWlnaHQ9Qy52aWRlb0hlaWdodDtsZXQgRT0kLmdldENvbnRleHQoIjJkIik7RSYmKEUuZHJhd0ltYWdlKEMsMCwwKSx0aGlzLnRodW1ibmFpbENhbnZhcz0kLHRoaXMudGh1bWJuYWlsQ2FwdHVyZWQ9ITApLEMuc3JjPSIiLEMubG9hZCgpLF8oKX0se29uY2U6ITB9KX0se29uY2U6ITB9KSxDLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwoKT0+TyhuZXcgRXJyb3IoIkZhaWxlZCB0byBsb2FkIHZpZGVvIikpLHtvbmNlOiEwfSksQy5zcmM9dGhpcy5zcmN9KSx0aGlzLmxvYWRpbmc9ITEsYXdhaXQgdGhpcy51cGRhdGVDb21wbGV0ZSx0aGlzLmNvcHlUaHVtYm5haWxUb0NhbnZhcygpfWNhdGNoe3RoaXMubG9hZGluZz0hMSx0aGlzLmxvYWREdXJhdGlvbigpfX1sb2FkRHVyYXRpb24oKXtsZXQgQz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ2aWRlbyIpO0MucHJlbG9hZD0ibWV0YWRhdGEiLEMuYWRkRXZlbnRMaXN0ZW5lcigibG9hZGVkbWV0YWRhdGEiLCgpPT57dGhpcy5kdXJhdGlvbj1DLmR1cmF0aW9uLEMuc3JjPSIiLEMubG9hZCgpfSksQy5zcmM9dGhpcy5zcmN9Y29weVRodW1ibmFpbFRvQ2FudmFzKCl7aWYoIXRoaXMudGh1bWJuYWlsQ2FudmFzKXJldHVybjtsZXQgQz10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi52aWRlby13cmFwcGVyIGNhbnZhcyIpO2lmKCFDKXJldHVybjtDLndpZHRoPXRoaXMudGh1bWJuYWlsQ2FudmFzLndpZHRoLEMuaGVpZ2h0PXRoaXMudGh1bWJuYWlsQ2FudmFzLmhlaWdodDtsZXQgXz1DLmdldENvbnRleHQoIjJkIik7XyYmXy5kcmF3SW1hZ2UodGhpcy50aHVtYm5haWxDYW52YXMsMCwwKX1vblRpbGVNb3VzZUVudGVyKCl7dGhpcy5pc0hvdmVyaW5nPSEwfW9uVGlsZU1vdXNlTGVhdmUoKXt0aGlzLmlzSG92ZXJpbmc9ITEsdGhpcy5ob3ZlclZpZGVvPW51bGx9aGFuZGxlSG92ZXJWaWRlb0xvYWRlZChDKXt0aGlzLmhvdmVyVmlkZW89Qy50YXJnZXQsdGhpcy5ob3ZlclZpZGVvLnBsYXkoKS5jYXRjaCgoKT0+e30pfWFzeW5jIHVwZGF0ZWQoQyl7c3VwZXIudXBkYXRlZChDKSxDLmhhcygic3JjIikmJnRoaXMuc3JjJiZ0aGlzLmlzVmlzaWJsZSYmKHRoaXMuaGFzU3RhcnRlZExvYWRpbmc9ITAsdGhpcy50aHVtYm5haWxDYXB0dXJlZD0hMSx0aGlzLmR1cmF0aW9uPTAsdGhpcy5jYXB0dXJlRmlyc3RGcmFtZSgpKSxDLmhhcygidGh1bWJuYWlsQ2FwdHVyZWQiKSYmdGhpcy50aHVtYm5haWxDYXB0dXJlZCYmKGF3YWl0IHRoaXMudXBkYXRlQ29tcGxldGUsdGhpcy5jb3B5VGh1bWJuYWlsVG9DYW52YXMoKSl9YXN5bmMgZGlzY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuaG92ZXJWaWRlbyYmKHRoaXMuaG92ZXJWaWRlby5wYXVzZSgpLHRoaXMuaG92ZXJWaWRlby5zcmM9IiIsdGhpcy5ob3ZlclZpZGVvPW51bGwpLHRoaXMudGh1bWJuYWlsQ2FudmFzPW51bGx9Zm9ybWF0VGltZShDKXtpZighaXNGaW5pdGUoQyl8fEM8MClyZXR1cm4iMDowMCI7bGV0IF89TWF0aC5mbG9vcihDLzYwKSxPPU1hdGguZmxvb3IoQyU2MCk7cmV0dXJuYCR7X306JHtPLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfWB9c3RhdGlje04yKGEsdCl9fTtyZXR1cm4gTj1hfSkoKX0pO3ZhciBJa2E9ZygoKT0+e1BrYSgpfSk7dmFyIEFrYSxOa2E9ZygoKT0+e3BlKCk7QWthPWkoKCk9PntsZXQgcz1gaW1wb3J0IHsgaHRtbCB9IGZyb20gJ2xpdCc7CgpleHBvcnQgY2xhc3MgTXlDb21wb25lbnQgewogIHByaXZhdGUgaXRlbXM6IHN0cmluZ1tdID0gW107CgogIHJlbmRlcigpIHsKICAgIHJldHVybiBodG1sXGAKICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICBcJHt0aGlzLml0ZW1zLm1hcChpdGVtID0+IGh0bWxcYAogICAgICAgICAgPHNwYW4+XCR7aXRlbX08L3NwYW4+CiAgICAgICAgXGApfQogICAgICA8L2Rpdj4KICAgIFxgOwogIH0KfWAsZT1gTWVldGluZyBOb3RlcyAtIFE0IFBsYW5uaW5nCkRhdGU6IEphbnVhcnkgMTUsIDIwMjYKQXR0ZW5kZWVzOiBBbGljZSwgQm9iLCBDaGFybGllCgpLZXkgRGVjaXNpb25zOgoxLiBMYXVuY2ggbmV3IGZlYXR1cmUgYnkgTWFyY2gKMi4gSGlyZSAyIG1vcmUgZW5naW5lZXJzCjMuIE1pZ3JhdGUgdG8gbmV3IENJL0NEIHBpcGVsaW5lCjQuIFVwZGF0ZSBkZXNpZ24gc3lzdGVtIHRvIHYzCgpBY3Rpb24gSXRlbXM6Ci0gQWxpY2U6IERyYWZ0IFBSRCBieSBuZXh0IHdlZWsKLSBCb2I6IFNldCB1cCBpbnRlcnZpZXcgcGlwZWxpbmUKLSBDaGFybGllOiBFdmFsdWF0ZSBKZW5raW5zIHZzIEdpdEh1YiBBY3Rpb25zYDtyZXR1cm4gd2AKICAgIDxzdHlsZT4KICAgICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nOiA0MHB4OwogICAgICAgIGJhY2tncm91bmQ6ICNmNWY1ZjU7CiAgICAgIH0KICAgICAgLmRlbW8tc2VjdGlvbiB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNjBweDsKICAgICAgfQogICAgICBoMyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgfQogICAgICAudGlsZS1yb3cgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgzPk5vdGUgVGlsZXM8L2gzPgogICAgICAgIDxkaXYgY2xhc3M9InRpbGUtcm93Ij4KICAgICAgICAgIDxkZWVzLXRodW1ibmFpbC1ub3RlCiAgICAgICAgICAgIHRpdGxlPSJjb21wb25lbnQudHMiCiAgICAgICAgICAgIC5jb250ZW50PSR7c30KICAgICAgICAgICAgbGFuZ3VhZ2U9InR5cGVzY3JpcHQiCiAgICAgICAgICAgIGxhYmVsPSJjb21wb25lbnQudHMiCiAgICAgICAgICAgIEB0aWxlLWNsaWNrPSR7YT0+Y29uc29sZS5sb2coIk5vdGUgY2xpY2tlZDoiLGEuZGV0YWlsKX0KICAgICAgICAgID48L2RlZXMtdGh1bWJuYWlsLW5vdGU+CgogICAgICAgICAgPGRlZXMtdGh1bWJuYWlsLW5vdGUKICAgICAgICAgICAgdGl0bGU9Ik1lZXRpbmcgTm90ZXMiCiAgICAgICAgICAgIC5jb250ZW50PSR7ZX0KICAgICAgICAgICAgbGFiZWw9Im1lZXRpbmctbm90ZXMudHh0IgogICAgICAgICAgPjwvZGVlcy10aHVtYm5haWwtbm90ZT4KCiAgICAgICAgICA8ZGVlcy10aHVtYm5haWwtbm90ZQogICAgICAgICAgICB0aXRsZT0icGFja2FnZS5qc29uIgogICAgICAgICAgICAuY29udGVudD0ke2B7CiAgIm5hbWUiOiAiQGRlc2lnbi5lc3RhdGUvZGVlcy1jYXRhbG9nIiwKICAidmVyc2lvbiI6ICIzLjM4LjAiLAogICJkZXNjcmlwdGlvbiI6ICJEZXNpZ24gY29tcG9uZW50IGNhdGFsb2ciLAogICJkZXBlbmRlbmNpZXMiOiB7CiAgICAiQGRlc2lnbi5lc3RhdGUvZGVlcy1lbGVtZW50IjogIl4yLjAuMCIsCiAgICAibGl0IjogIl4zLjEuMCIKICB9LAogICJzY3JpcHRzIjogewogICAgImJ1aWxkIjogInRzYnVpbGQiLAogICAgInRlc3QiOiAidHN0ZXN0IgogIH0KfWB9CiAgICAgICAgICAgIGxhbmd1YWdlPSJqc29uIgogICAgICAgICAgICBsYWJlbD0icGFja2FnZS5qc29uIgogICAgICAgICAgPjwvZGVlcy10aHVtYm5haWwtbm90ZT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICAgIDxoMz5TaXplIFZhcmlhbnRzPC9oMz4KICAgICAgICA8ZGl2IGNsYXNzPSJ0aWxlLXJvdyI+CiAgICAgICAgICA8ZGVlcy10aHVtYm5haWwtbm90ZQogICAgICAgICAgICBzaXplPSJzbWFsbCIKICAgICAgICAgICAgdGl0bGU9InNtYWxsLnRzIgogICAgICAgICAgICAuY29udGVudD0ke3N9CiAgICAgICAgICAgIGxhbmd1YWdlPSJ0cyIKICAgICAgICAgICAgbGFiZWw9InNtYWxsLnRzIgogICAgICAgICAgPjwvZGVlcy10aHVtYm5haWwtbm90ZT4KCiAgICAgICAgICA8ZGVlcy10aHVtYm5haWwtbm90ZQogICAgICAgICAgICB0aXRsZT0iZGVmYXVsdC50cyIKICAgICAgICAgICAgLmNvbnRlbnQ9JHtzfQogICAgICAgICAgICBsYW5ndWFnZT0idHMiCiAgICAgICAgICAgIGxhYmVsPSJkZWZhdWx0LnRzIgogICAgICAgICAgPjwvZGVlcy10aHVtYm5haWwtbm90ZT4KCiAgICAgICAgICA8ZGVlcy10aHVtYm5haWwtbm90ZQogICAgICAgICAgICBzaXplPSJsYXJnZSIKICAgICAgICAgICAgdGl0bGU9ImxhcmdlLnRzIgogICAgICAgICAgICAuY29udGVudD0ke3N9CiAgICAgICAgICAgIGxhbmd1YWdlPSJ0cyIKICAgICAgICAgICAgbGFiZWw9ImxhcmdlLnRzIgogICAgICAgICAgPjwvZGVlcy10aHVtYm5haWwtbm90ZT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICAgIDxoMz5XaXRob3V0IFRpdGxlPC9oMz4KICAgICAgICA8ZGVlcy10aHVtYm5haWwtbm90ZQogICAgICAgICAgLmNvbnRlbnQ9JHtlfQogICAgICAgICAgbGFiZWw9InVudGl0bGVkLnR4dCIKICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC1ub3RlPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIGB9LCJkZW1vIil9KTt2YXIgY0osS3UsdHRzLFJrYT1nKCgpPT57cGUoKTt3NCgpO0d1KCk7TmthKCk7Y0o9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LEt1PWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSx0dHM9KCgpPT57bGV0IHM9W25lKCJkZWVzLXRodW1ibmFpbC1ub3RlIildLGUsdD1bXSxhLHI9SWwsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W107dmFyIHk9Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNUaHVtYm5haWxOb3RlIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IE09dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpTdHJpbmd9KV0scD1bTCh7dHlwZTpTdHJpbmd9KV0sYz1bTCh7dHlwZTpTdHJpbmd9KV0seD1bWSgpXSxjSih0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InRpdGxlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJ0aXRsZSJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LnRpdGxlLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3oudGl0bGU9Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxvLGwpLGNKKHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY29udGVudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4iY29udGVudCJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LmNvbnRlbnQsImdldCIpLHNldDppKCh6LE4pPT57ei5jb250ZW50PU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sZCx1KSxjSih0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Imxhbmd1YWdlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJsYW5ndWFnZSJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56Lmxhbmd1YWdlLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3oubGFuZ3VhZ2U9Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxiLHYpLGNKKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNIb3ZlcmluZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4iaXNIb3ZlcmluZyJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LmlzSG92ZXJpbmcsImdldCIpLHNldDppKCh6LE4pPT57ei5pc0hvdmVyaW5nPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sbSxmKSxjSihudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpNfSxudWxsLHQpLHk9YT1lLnZhbHVlLE0mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6TX0pfXN0YXRpYyBkZW1vPUFrYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIk1lZGlhIl07c3RhdGljIHN0eWxlcz1bLi4uc2wsSmAKICAgICAgLm5vdGUtY29udGVudCB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCJoc2woNjAgNSUgOTYlKSIpfTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAubm90ZS1oZWFkZXIgewogICAgICAgIHBhZGRpbmc6IDEycHggMTRweCA4cHg7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC5ub3RlLXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUgMjAlIDIwJSkiLCJoc2woMjE1IDIwJSAyMCUpIil9OwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICBsaW5lLWhlaWdodDogMS4zOwogICAgICB9CgogICAgICAubm90ZS1ib2R5IHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIHBhZGRpbmc6IDAgMTRweCAxNHB4OwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAubm90ZS10ZXh0IHsKICAgICAgICBmb250LWZhbWlseTogdWktbW9ub3NwYWNlLCBTRk1vbm8tUmVndWxhciwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsIG1vbm9zcGFjZTsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUgMTAlIDQwJSkiLCJoc2woMjE1IDEwJSAzNSUpIil9OwogICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKICAgICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBtYXJnaW46IDA7CiAgICAgIH0KCiAgICAgIC5ub3RlLWZhZGUgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBoZWlnaHQ6IDYwcHg7CiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KAogICAgICAgICAgdHJhbnNwYXJlbnQsCiAgICAgICAgICAke2guYmRUaGVtZSgiI2ZmZmZmZiIsImhzbCg2MCA1JSA5NiUpIil9CiAgICAgICAgKTsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgLm5vdGUtbGluZXMgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgd2lkdGg6IDM0cHg7CiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgwIDcwJSA4NSUpIiwiaHNsKDAgNTAlIDgwJSkiKX07CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIHBhZGRpbmctdG9wOiAxMnB4OwogICAgICB9CgogICAgICAubGluZS1udW1iZXIgewogICAgICAgIGZvbnQtZmFtaWx5OiB1aS1tb25vc3BhY2UsIFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgbW9ub3NwYWNlOwogICAgICAgIGZvbnQtc2l6ZTogOXB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxNXB4OyAvKiBtYXRjaGVzIDEwcHggKiAxLjUgbGluZS1oZWlnaHQgKi8KICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTUgMTAlIDc1JSkiLCJoc2woMjE1IDEwJSA3MCUpIil9OwogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDZweDsKICAgICAgfQoKICAgIGBdOyNlPUt1KHRoaXMsbywiIik7Z2V0IHRpdGxlKCl7cmV0dXJuIHRoaXMuI2V9c2V0IHRpdGxlKE0pe3RoaXMuI2U9TX0jdD0oS3UodGhpcyxsKSxLdSh0aGlzLGQsIiIpKTtnZXQgY29udGVudCgpe3JldHVybiB0aGlzLiN0fXNldCBjb250ZW50KE0pe3RoaXMuI3Q9TX0jYT0oS3UodGhpcyx1KSxLdSh0aGlzLGIsIiIpKTtnZXQgbGFuZ3VhZ2UoKXtyZXR1cm4gdGhpcy4jYX1zZXQgbGFuZ3VhZ2UoTSl7dGhpcy4jYT1NfSNzPShLdSh0aGlzLHYpLEt1KHRoaXMsbSwhMSkpO2dldCBpc0hvdmVyaW5nKCl7cmV0dXJuIHRoaXMuI3N9c2V0IGlzSG92ZXJpbmcoTSl7dGhpcy4jcz1NfW5vdGVCb2R5RWxlbWVudD0oS3UodGhpcyxmKSxudWxsKTtyZW5kZXJUaWxlQ29udGVudCgpe2xldCBNPXRoaXMuY29udGVudC5zcGxpdChgCmApO3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJub3RlLWNvbnRlbnQiPgogICAgICAgICR7dGhpcy50aXRsZT93YAogICAgICAgICAgPGRpdiBjbGFzcz0ibm90ZS1oZWFkZXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJub3RlLXRpdGxlIj4ke3RoaXMudGl0bGV9PC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgOiIifQoKICAgICAgICA8ZGl2IGNsYXNzPSJub3RlLWJvZHkiPgogICAgICAgICAgPHByZSBjbGFzcz0ibm90ZS10ZXh0Ij4ke00uam9pbihgCmApfTwvcHJlPgogICAgICAgICAgJHt0aGlzLmlzSG92ZXJpbmc/IiI6d2A8ZGl2IGNsYXNzPSJub3RlLWZhZGUiPjwvZGl2PmB9CiAgICAgICAgPC9kaXY+CgogICAgICA8L2Rpdj4KCiAgICAgICR7dGhpcy5jbGlja2FibGU/d2AKICAgICAgICA8ZGl2IGNsYXNzPSJ0aWxlLW92ZXJsYXkiPgogICAgICAgICAgPGRlZXMtaWNvbiBpY29uPSJsdWNpZGU6RmlsZVRleHQiPjwvZGVlcy1pY29uPgogICAgICAgICAgPHNwYW4+T3BlbiBOb3RlPC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICBgOiIifQogICAgYH1yZW5kZXJCb3R0b21CYXIoKXtsZXQgTT10aGlzLmNvbnRlbnQuc3BsaXQoYApgKTtyZXR1cm4hdGhpcy5sYWJlbCYmIXRoaXMubGFuZ3VhZ2UmJiFNLmxlbmd0aD8iIjp3YAogICAgICA8ZGl2IGNsYXNzPSJ0aWxlLWluZm8tYmFyIj4KICAgICAgICAke3RoaXMubGFiZWw/d2A8c3BhbiBjbGFzcz0iaW5mby1sYWJlbCIgdGl0bGU9IiR7dGhpcy5sYWJlbH0iPiR7dGhpcy5sYWJlbH08L3NwYW4+YDoiIn0KICAgICAgICA8c3BhbiBjbGFzcz0iaW5mby1zcGFjZXIiPjwvc3Bhbj4KICAgICAgICAke3RoaXMubGFuZ3VhZ2U/d2A8c3BhbiBjbGFzcz0iaW5mby1kZXRhaWwiPiR7dGhpcy5sYW5ndWFnZS50b1VwcGVyQ2FzZSgpfTwvc3Bhbj5gOiIifQogICAgICAgICR7dGhpcy5pc0hvdmVyaW5nJiZNLmxlbmd0aD4xMj93YDxzcGFuIGNsYXNzPSJpbmZvLWRldGFpbCI+TGluZSAke3RoaXMuZ2V0VmlzaWJsZUxpbmVSYW5nZShNLmxlbmd0aCl9PC9zcGFuPmA6d2A8c3BhbiBjbGFzcz0iaW5mby1kZXRhaWwiPiR7TS5sZW5ndGh9IGxpbmVzPC9zcGFuPmB9CiAgICAgIDwvZGl2PgogICAgYH1nZXRUaWxlQ2xpY2tEZXRhaWwoKXtyZXR1cm57dGl0bGU6dGhpcy50aXRsZSxjb250ZW50OnRoaXMuY29udGVudCxsYW5ndWFnZTp0aGlzLmxhbmd1YWdlfX1vblRpbGVNb3VzZUVudGVyKCl7dGhpcy5pc0hvdmVyaW5nPSEwLHRoaXMubm90ZUJvZHlFbGVtZW50fHwodGhpcy5ub3RlQm9keUVsZW1lbnQ9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIubm90ZS1ib2R5IikpfW9uVGlsZU1vdXNlTGVhdmUoKXt0aGlzLmlzSG92ZXJpbmc9ITEsdGhpcy5ub3RlQm9keUVsZW1lbnQmJih0aGlzLm5vdGVCb2R5RWxlbWVudC5zY3JvbGxUb3A9MCl9b25UaWxlTW91c2VNb3ZlKE0pe2lmKCF0aGlzLmlzSG92ZXJpbmd8fCF0aGlzLm5vdGVCb2R5RWxlbWVudHx8dGhpcy5jb250ZW50LnNwbGl0KGAKYCkubGVuZ3RoPD0xMilyZXR1cm47bGV0IE49dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxDPU0uY2xpZW50WC1OLmxlZnQsXz1NYXRoLm1heCgwLE1hdGgubWluKDEsQy9OLndpZHRoKSksTz10aGlzLm5vdGVCb2R5RWxlbWVudC5zY3JvbGxIZWlnaHQtdGhpcy5ub3RlQm9keUVsZW1lbnQuY2xpZW50SGVpZ2h0O3RoaXMubm90ZUJvZHlFbGVtZW50LnNjcm9sbFRvcD1fKk99Z2V0VmlzaWJsZUxpbmVSYW5nZShNKXtpZighdGhpcy5ub3RlQm9keUVsZW1lbnQpcmV0dXJuYDFcdTIwMTMxMiBvZiAke019YDtsZXQgej0xNSxOPU1hdGguZmxvb3IodGhpcy5ub3RlQm9keUVsZW1lbnQuc2Nyb2xsVG9wL3opKzEsQz1NYXRoLmZsb29yKHRoaXMubm90ZUJvZHlFbGVtZW50LmNsaWVudEhlaWdodC96KSxfPU1hdGgubWluKE4rQy0xLE0pO3JldHVybmAke059XHUyMDEzJHtffSBvZiAke019YH1zdGF0aWN7S3UoYSx0KX19O3JldHVybiB5PWF9KSgpfSk7dmFyIE9rYT1nKCgpPT57UmthKCl9KTt2YXIgRmthLEJrYT1nKCgpPT57cGUoKTtGa2E9aSgoKT0+e2xldCBzPVt7dHlwZToiaW1hZ2UiLG5hbWU6InN1bnNldC5qcGciLHRodW1ibmFpbFNyYzoiaHR0cHM6Ly9waWNzdW0ucGhvdG9zLzIwMC8yMDA/cmFuZG9tPTEifSx7dHlwZToiaW1hZ2UiLG5hbWU6Im1vdW50YWluLmpwZyIsdGh1bWJuYWlsU3JjOiJodHRwczovL3BpY3N1bS5waG90b3MvMjAwLzIwMD9yYW5kb209MiJ9LHt0eXBlOiJpbWFnZSIsbmFtZToib2NlYW4uanBnIix0aHVtYm5haWxTcmM6Imh0dHBzOi8vcGljc3VtLnBob3Rvcy8yMDAvMjAwP3JhbmRvbT0zIn0se3R5cGU6ImltYWdlIixuYW1lOiJmb3Jlc3QuanBnIix0aHVtYm5haWxTcmM6Imh0dHBzOi8vcGljc3VtLnBob3Rvcy8yMDAvMjAwP3JhbmRvbT00In0se3R5cGU6ImltYWdlIixuYW1lOiJjaXR5LmpwZyIsdGh1bWJuYWlsU3JjOiJodHRwczovL3BpY3N1bS5waG90b3MvMjAwLzIwMD9yYW5kb209NSJ9LHt0eXBlOiJpbWFnZSIsbmFtZToiZGVzZXJ0LmpwZyIsdGh1bWJuYWlsU3JjOiJodHRwczovL3BpY3N1bS5waG90b3MvMjAwLzIwMD9yYW5kb209NiJ9XTtyZXR1cm4gd2AKICAgIDxzdHlsZT4KICAgICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nOiA0MHB4OwogICAgICAgIGJhY2tncm91bmQ6ICNmNWY1ZjU7CiAgICAgIH0KICAgICAgLmRlbW8tc2VjdGlvbiB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNjBweDsKICAgICAgfQogICAgICBoMyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgfQogICAgICAudGlsZS1yb3cgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgzPkZvbGRlciBUaWxlczwvaDM+CiAgICAgICAgPGRpdiBjbGFzcz0idGlsZS1yb3ciPgogICAgICAgICAgPGRlZXMtdGh1bWJuYWlsLWZvbGRlcgogICAgICAgICAgICBuYW1lPSJQaG90b3MiCiAgICAgICAgICAgIC5pdGVtcz0ke3N9CiAgICAgICAgICAgIGxhYmVsPSI2IHBob3RvcyIKICAgICAgICAgICAgQHRpbGUtY2xpY2s9JHtuPT5jb25zb2xlLmxvZygiRm9sZGVyIGNsaWNrZWQ6IixuLmRldGFpbCl9CiAgICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC1mb2xkZXI+CgogICAgICAgICAgPGRlZXMtdGh1bWJuYWlsLWZvbGRlcgogICAgICAgICAgICBuYW1lPSJteS1wcm9qZWN0IgogICAgICAgICAgICAuaXRlbXM9JHtbe3R5cGU6Im5vdGUiLG5hbWU6IlJFQURNRS5tZCJ9LHt0eXBlOiJub3RlIixuYW1lOiJwYWNrYWdlLmpzb24ifSx7dHlwZToiZm9sZGVyIixuYW1lOiJzcmMifSx7dHlwZToiZm9sZGVyIixuYW1lOiJ0ZXN0In0se3R5cGU6Im5vdGUiLG5hbWU6InRzY29uZmlnLmpzb24ifSx7dHlwZToicGRmIixuYW1lOiJkb2NzLnBkZiJ9LHt0eXBlOiJpbWFnZSIsbmFtZToibG9nby5wbmciLHRodW1ibmFpbFNyYzoiaHR0cHM6Ly9waWNzdW0ucGhvdG9zLzEwMC8xMDA/cmFuZG9tPTEwIn1dfQogICAgICAgICAgICBsYWJlbD0iUHJvamVjdCBmaWxlcyIKICAgICAgICAgID48L2RlZXMtdGh1bWJuYWlsLWZvbGRlcj4KCiAgICAgICAgICA8ZGVlcy10aHVtYm5haWwtZm9sZGVyCiAgICAgICAgICAgIG5hbWU9Ik1lZGlhIEFzc2V0cyIKICAgICAgICAgICAgLml0ZW1zPSR7W3t0eXBlOiJ2aWRlbyIsbmFtZToiaW50cm8ubXA0In0se3R5cGU6ImF1ZGlvIixuYW1lOiJiYWNrZ3JvdW5kLm1wMyJ9LHt0eXBlOiJpbWFnZSIsbmFtZToidGh1bWJuYWlsLmpwZyIsdGh1bWJuYWlsU3JjOiJodHRwczovL3BpY3N1bS5waG90b3MvMjAwLzIwMD9yYW5kb209MjAifSx7dHlwZToicGRmIixuYW1lOiJzdG9yeWJvYXJkLnBkZiJ9XX0KICAgICAgICAgICAgbGFiZWw9Ik1peGVkIG1lZGlhIgogICAgICAgICAgPjwvZGVlcy10aHVtYm5haWwtZm9sZGVyPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImRlbW8tc2VjdGlvbiI+CiAgICAgICAgPGgzPkVkZ2UgQ2FzZXM8L2gzPgogICAgICAgIDxkaXYgY2xhc3M9InRpbGUtcm93Ij4KICAgICAgICAgIDxkZWVzLXRodW1ibmFpbC1mb2xkZXIKICAgICAgICAgICAgbmFtZT0iRW1wdHkgRm9sZGVyIgogICAgICAgICAgICAuaXRlbXM9JHtbXX0KICAgICAgICAgID48L2RlZXMtdGh1bWJuYWlsLWZvbGRlcj4KCiAgICAgICAgICA8ZGVlcy10aHVtYm5haWwtZm9sZGVyCiAgICAgICAgICAgIG5hbWU9IlNpbmdsZSBJdGVtIgogICAgICAgICAgICAuaXRlbXM9JHtbe3R5cGU6InBkZiIsbmFtZToicmVwb3J0LnBkZiJ9XX0KICAgICAgICAgID48L2RlZXMtdGh1bWJuYWlsLWZvbGRlcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJkZW1vLXNlY3Rpb24iPgogICAgICAgIDxoMz5TaXplIFZhcmlhbnRzPC9oMz4KICAgICAgICA8ZGl2IGNsYXNzPSJ0aWxlLXJvdyI+CiAgICAgICAgICA8ZGVlcy10aHVtYm5haWwtZm9sZGVyCiAgICAgICAgICAgIHNpemU9InNtYWxsIgogICAgICAgICAgICBuYW1lPSJTbWFsbCIKICAgICAgICAgICAgLml0ZW1zPSR7c30KICAgICAgICAgID48L2RlZXMtdGh1bWJuYWlsLWZvbGRlcj4KCiAgICAgICAgICA8ZGVlcy10aHVtYm5haWwtZm9sZGVyCiAgICAgICAgICAgIG5hbWU9IkRlZmF1bHQiCiAgICAgICAgICAgIC5pdGVtcz0ke3N9CiAgICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC1mb2xkZXI+CgogICAgICAgICAgPGRlZXMtdGh1bWJuYWlsLWZvbGRlcgogICAgICAgICAgICBzaXplPSJsYXJnZSIKICAgICAgICAgICAgbmFtZT0iTGFyZ2UiCiAgICAgICAgICAgIC5pdGVtcz0ke3N9CiAgICAgICAgICA+PC9kZWVzLXRodW1ibmFpbC1mb2xkZXI+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgYH0sImRlbW8iKX0pO3ZhciBNbHQsZEosSGthLGF0cyxxa2E9ZygoKT0+e3BlKCk7dzQoKTtHdSgpO0JrYSgpO01sdD1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sZEo9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LEhrYT17cGRmOiJsdWNpZGU6RmlsZVRleHQiLGltYWdlOiJsdWNpZGU6SW1hZ2UiLGF1ZGlvOiJsdWNpZGU6TXVzaWMiLHZpZGVvOiJsdWNpZGU6VmlkZW8iLG5vdGU6Imx1Y2lkZTpGaWxlQ29kZSIsZm9sZGVyOiJsdWNpZGU6Rm9sZGVyIix1bmtub3duOiJsdWNpZGU6RmlsZSJ9LGF0cz0oKCk9PntsZXQgcz1bbmUoImRlZXMtdGh1bWJuYWlsLWZvbGRlciIpXSxlLHQ9W10sYSxyPUlsLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdO3ZhciBjPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzVGh1bWJuYWlsRm9sZGVyIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGI9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpTdHJpbmd9KV0scD1bTCh7YXR0cmlidXRlOiExfSldLE1sdCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im5hbWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkodj0+Im5hbWUiaW4gdiwiaGFzIiksZ2V0Omkodj0+di5uYW1lLCJnZXQiKSxzZXQ6aSgodix4KT0+e3YubmFtZT14fSwic2V0Iil9LG1ldGFkYXRhOmJ9LG8sbCksTWx0KHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXRlbXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkodj0+Iml0ZW1zImluIHYsImhhcyIpLGdldDppKHY9PnYuaXRlbXMsImdldCIpLHNldDppKCh2LHgpPT57di5pdGVtcz14fSwic2V0Iil9LG1ldGFkYXRhOmJ9LGQsdSksTWx0KG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOmJ9LG51bGwsdCksYz1hPWUudmFsdWUsYiYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSl9c3RhdGljIGRlbW89RmthO3N0YXRpYyBkZW1vR3JvdXBzPVsiTWVkaWEiXTtzdGF0aWMgc3R5bGVzPVsuLi5zbCxKYAogICAgICAuZm9sZGVyLWNvbnRlbnQgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woNDAgMzAlIDk3JSkiLCJoc2woMjE1IDIwJSAxNCUpIil9OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC5mb2xkZXItaGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgcGFkZGluZzogMTJweCAxNHB4IDhweDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQoKICAgICAgLmZvbGRlci1pY29uIHsKICAgICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woNDAgODAlIDUwJSkiLCJoc2woNDAgNzAlIDYwJSkiKX07CiAgICAgIH0KCiAgICAgIC5mb2xkZXItbmFtZSB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1IDIwJSAyMCUpIiwiaHNsKDIxNSAxNiUgODAlKSIpfTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgZmxleDogMTsKICAgICAgfQoKICAgICAgLnByZXZpZXctZ3JpZCB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjsKICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IDFmciAxZnI7CiAgICAgICAgZ2FwOiA0cHg7CiAgICAgICAgcGFkZGluZzogMCAxNHB4IDE0cHg7CiAgICAgICAgbWluLWhlaWdodDogMDsKICAgICAgfQoKICAgICAgLmdyaWQtY2VsbCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjE1IDIwJSA5NCUpIiwiaHNsKDIxNSAyMCUgMTglKSIpfTsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIC5ncmlkLWNlbGwgaW1nIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KCiAgICAgIC5ncmlkLWNlbGwgZGVlcy1pY29uIHsKICAgICAgICBmb250LXNpemU6IDIwcHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjE1IDE2JSA2MCUpIiwiaHNsKDIxNSAxNiUgNTUlKSIpfTsKICAgICAgfQoKICAgICAgLmdyaWQtY2VsbC1lbXB0eSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTUgMTUlIDk2JSkiLCJoc2woMjE1IDIwJSAxNiUpIil9OwogICAgICB9CgogICAgYF07I2U9ZEoodGhpcyxvLCIiKTtnZXQgbmFtZSgpe3JldHVybiB0aGlzLiNlfXNldCBuYW1lKGIpe3RoaXMuI2U9Yn0jdD0oZEoodGhpcyxsKSxkSih0aGlzLGQsW10pKTtnZXQgaXRlbXMoKXtyZXR1cm4gdGhpcy4jdH1zZXQgaXRlbXMoYil7dGhpcy4jdD1ifXJlbmRlclRpbGVDb250ZW50KCl7bGV0IGI9dGhpcy5pdGVtcy5zbGljZSgwLDQpLHY9NC1iLmxlbmd0aDtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iZm9sZGVyLWNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9ImZvbGRlci1oZWFkZXIiPgogICAgICAgICAgPGRlZXMtaWNvbiBjbGFzcz0iZm9sZGVyLWljb24iIGljb249Imx1Y2lkZTpGb2xkZXIiPjwvZGVlcy1pY29uPgogICAgICAgICAgPGRpdiBjbGFzcz0iZm9sZGVyLW5hbWUiPiR7dGhpcy5uYW1lfHwiVW50aXRsZWQgRm9sZGVyIn08L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0icHJldmlldy1ncmlkIj4KICAgICAgICAgICR7Yi5tYXAoeD0+d2AKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZC1jZWxsIj4KICAgICAgICAgICAgICAke3gudGh1bWJuYWlsU3JjP3dgCiAgICAgICAgICAgICAgICA8aW1nIHNyYz0iJHt4LnRodW1ibmFpbFNyY30iIGFsdD0iJHt4Lm5hbWV9IiAvPgogICAgICAgICAgICAgIGA6d2AKICAgICAgICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0iJHtIa2FbeC50eXBlXXx8SGthLnVua25vd259Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICBgfQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIGApfQogICAgICAgICAgJHtBcnJheS5mcm9tKHtsZW5ndGg6dn0pLm1hcCgoKT0+d2AKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZC1jZWxsIGdyaWQtY2VsbC1lbXB0eSI+PC9kaXY+CiAgICAgICAgICBgKX0KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICAke3RoaXMuY2xpY2thYmxlP3dgCiAgICAgICAgPGRpdiBjbGFzcz0idGlsZS1vdmVybGF5Ij4KICAgICAgICAgIDxkZWVzLWljb24gaWNvbj0ibHVjaWRlOkZvbGRlck9wZW4iPjwvZGVlcy1pY29uPgogICAgICAgICAgPHNwYW4+T3BlbiBGb2xkZXI8L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgIGA6IiJ9CiAgICBgfXJlbmRlckJvdHRvbUJhcigpe3JldHVybiF0aGlzLmxhYmVsJiYhdGhpcy5pdGVtcy5sZW5ndGg/IiI6d2AKICAgICAgPGRpdiBjbGFzcz0idGlsZS1pbmZvLWJhciI+CiAgICAgICAgJHt0aGlzLmxhYmVsP3dgPHNwYW4gY2xhc3M9ImluZm8tbGFiZWwiIHRpdGxlPSIke3RoaXMubGFiZWx9Ij4ke3RoaXMubGFiZWx9PC9zcGFuPmA6IiJ9CiAgICAgICAgPHNwYW4gY2xhc3M9ImluZm8tc3BhY2VyIj48L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9ImluZm8tZGV0YWlsIj4ke3RoaXMuaXRlbXMubGVuZ3RofSBpdGVtJHt0aGlzLml0ZW1zLmxlbmd0aCE9PTE/InMiOiIifTwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICBgfWdldFRpbGVDbGlja0RldGFpbCgpe3JldHVybntuYW1lOnRoaXMubmFtZSxpdGVtQ291bnQ6dGhpcy5pdGVtcy5sZW5ndGgsaXRlbXM6dGhpcy5pdGVtc319Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLGRKKHRoaXMsdSl9c3RhdGlje2RKKGEsdCl9fTtyZXR1cm4gYz1hfSkoKX0pO3ZhciBqa2E9ZygoKT0+e3FrYSgpfSk7dmFyIFZrYT1nKCgpPT57WHdhKCk7ZWthKCk7c2thKCk7cGthKCk7ZmthKCk7bWthKCk7Z2thKCk7a2thKCk7emthKCk7RGthKCk7SWthKCk7T2thKCk7amthKCl9KTt2YXIgVWthPWcoKCk9PntmcigpfSk7dmFyIFdrYT1nKCgpPT57UHUoKX0pO3ZhciBHa2EsS2thPWcoKCk9PntwZSgpO0drYT1pKCgpPT53YAogICAgPHN0eWxlPgogICAgICAucmVmMSB7CiAgICAgICAgbWFyZ2luOiAyMHB4OwogICAgICAgIHdpZHRoOiAxMHB4OwogICAgICAgIGhlaWdodDogMTBweDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8ZGl2IGNsYXNzPSJyZWYxIj48L2Rpdj4KICAgIDxkZWVzLXNwZWVjaGJ1YmJsZSAudGV4dD0ke2AKICAgICAgKipUaGlzIGlzIGEgbG9uZ2VyIG1hcmtkb3duIHRleHQgdGhhdCAgY2FuIGJlIHVzZWQgdGhlIHdyaXRlKiogIAogICAgICBhIGxvbmdlciBkZXNjcmlwdGlvbiBhYm91dCB3aGF0cyBnb2luZyBvbiB0aGUgYXBwICAKICAKICAgICAgKipUaGlzIGlzIGEgc3ViaGVhZGVyKioKICAgICAgYW5kIGFub3RoZXIgdGV4dAogICAgCiAgICBgfT48L2RlZXMtc3BlZWNoYnViYmxlPgogIGAsImRlbW9GdW5jIil9KTt2YXIgRHgsUjIsc3RzLFlrYT1nKCgpPT57dzIoKTt2bygpO0trYSgpO3BlKCk7djIoKTtodCgpO0R4PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxSMj1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sc3RzPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1zcGVlY2hidWJibGUiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXTt2YXIgTj1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1NwZWVjaGJ1YmJsZSIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBDPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6T2JqZWN0fSldLHA9W0woe3R5cGU6U3RyaW5nLHJlZmxlY3Q6ITB9KV0sYz1bTCh7dHlwZTpCb29sZWFufSldLHg9W0woe3R5cGU6Qm9vbGVhbn0pXSx5PVtMKHt0eXBlOlN0cmluZ30pXSxEeCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6InJlZmZlZEVsZW1lbnQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+InJlZmZlZEVsZW1lbnQiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5yZWZmZWRFbGVtZW50LCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18ucmVmZmVkRWxlbWVudD1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LG8sbCksRHgodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0ZXh0IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJ0ZXh0ImluIF8sImhhcyIpLGdldDppKF89Pl8udGV4dCwiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLnRleHQ9T30sInNldCIpfSxtZXRhZGF0YTpDfSxkLHUpLER4KHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToid2F2ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4id2F2ZSJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLndhdmUsImdldCIpLHNldDppKChfLE8pPT57Xy53YXZlPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sYix2KSxEeCh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1hbmlmZXN0ZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+Im1hbmlmZXN0ZWQiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5tYW5pZmVzdGVkLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18ubWFuaWZlc3RlZD1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LG0sZiksRHgodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzdGF0dXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+InN0YXR1cyJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLnN0YXR1cywiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLnN0YXR1cz1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LE0seiksRHgobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6Q30sbnVsbCx0KSxOPWE9ZS52YWx1ZSxDJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOkN9KX1zdGF0aWMgZGVtbz1Ha2E7c3RhdGljIGRlbW9Hcm91cHM9WyJPdmVybGF5Il07c3RhdGljIGFzeW5jIGNyZWF0ZUFuZFNob3coQyxfKXtsZXQgTz1hd2FpdCBSby5jcmVhdGVBbmRTaG93KHtibHVyOiExfSksJD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkZWVzLXNwZWVjaGJ1YmJsZSIpO3JldHVybiAkLndpbmRvd0xheWVyPU8sJC5yZWZmZWRFbGVtZW50PUMsJC50ZXh0PV8sJC5tYW5pZmVzdGVkPSEwLE8uYXBwZW5kQ2hpbGQoJCksTy5zdHlsZS5wb2ludGVyRXZlbnRzPSJub25lIixPLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLndpbmRvd092ZXJsYXkiKS5zdHlsZS5wb2ludGVyRXZlbnRzPSJub25lIiwkfSNlPVIyKHRoaXMsbyx2b2lkIDApO2dldCByZWZmZWRFbGVtZW50KCl7cmV0dXJuIHRoaXMuI2V9c2V0IHJlZmZlZEVsZW1lbnQoQyl7dGhpcy4jZT1DfSN0PShSMih0aGlzLGwpLFIyKHRoaXMsZCx2b2lkIDApKTtnZXQgdGV4dCgpe3JldHVybiB0aGlzLiN0fXNldCB0ZXh0KEMpe3RoaXMuI3Q9Q30jYT0oUjIodGhpcyx1KSxSMih0aGlzLGIsITEpKTtnZXQgd2F2ZSgpe3JldHVybiB0aGlzLiNhfXNldCB3YXZlKEMpe3RoaXMuI2E9Q30jcz0oUjIodGhpcyx2KSxSMih0aGlzLG0sITEpKTtnZXQgbWFuaWZlc3RlZCgpe3JldHVybiB0aGlzLiNzfXNldCBtYW5pZmVzdGVkKEMpe3RoaXMuI3M9Q30jaT0oUjIodGhpcyxmKSxSMih0aGlzLE0sIm5vcm1hbCIpKTtnZXQgc3RhdHVzKCl7cmV0dXJuIHRoaXMuI2l9c2V0IHN0YXR1cyhDKXt0aGlzLiNpPUN9d2luZG93TGF5ZXI9UjIodGhpcyx6KTtjb25zdHJ1Y3Rvcigpe3N1cGVyKCl9c3RhdGljIHN0eWxlcz1bcWUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICAgIDpob3N0IHsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzMzMyIsIiNmZmYiKX07CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5tYWluY29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4yczsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMHB4KTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4yczsKICAgICAgICBtYXJnaW4tbGVmdDogMHB4OwogICAgICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDBweCAycHggcmdiYSgwLCAwLCAwLCAwLjIpKTsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzOwogICAgICB9CgogICAgICAuYXJyb3cgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmYiLCIjMzMzIil9OwogICAgICAgIGhlaWdodDogMTVweDsKICAgICAgICB3aWR0aDogMTVweDsKICAgICAgICBsZWZ0OiAycHg7CiAgICAgICAgdG9wOiAxMnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgfQoKICAgICAgLnNwZWVjaGJ1YmJsZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmYiLCIjMzMzIil9OwogICAgICAgIHBhZGRpbmc6IDBweCAxNnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgbWluLXdpZHRoOiAyNDBweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgdG9wOiAwcHg7CiAgICAgICAgbGVmdDogOHB4OwogICAgICB9CgogICAgICAud2F2ZSB7CiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IHdhdmUtYW5pbWF0aW9uOyAvKiBSZWZlcnMgdG8gdGhlIG5hbWUgb2YgeW91ciBAa2V5ZnJhbWVzIGVsZW1lbnQgYmVsb3cgKi8KICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDIuNXM7IC8qIENoYW5nZSB0byBzcGVlZCB1cCBvciBzbG93IGRvd24gKi8KICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTsgLyogTmV2ZXIgc3RvcCB3YXZpbmcgOikgKi8KICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiA3MCUgNzAlOyAvKiBQaXZvdCBhcm91bmQgdGhlIGJvdHRvbS1sZWZ0IHBhbG0gKi8KICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMgd2F2ZS1hbmltYXRpb24gewogICAgICAgIDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogICAgICAgIH0KICAgICAgICAxMCUgewogICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTRkZWcpOwogICAgICAgIH0gLyogVGhlIGZvbGxvd2luZyBmaXZlIHZhbHVlcyBjYW4gYmUgcGxheWVkIHdpdGggdG8gbWFrZSB0aGUgd2F2aW5nIG1vcmUgb3IgbGVzcyBleHRyZW1lICovCiAgICAgICAgMjAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC04ZGVnKTsKICAgICAgICB9CiAgICAgICAgMzAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE0ZGVnKTsKICAgICAgICB9CiAgICAgICAgNDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00ZGVnKTsKICAgICAgICB9CiAgICAgICAgNTAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDEwZGVnKTsKICAgICAgICB9CiAgICAgICAgNjAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogICAgICAgIH0gLyogUmVzZXQgZm9yIHRoZSBsYXN0IGhhbGYgdG8gcGF1c2UgKi8KICAgICAgICAxMDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogICAgICAgIH0KICAgICAgfQogICAgYF07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgICR7dGhpcy5tYW5pZmVzdGVkP3dgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1haW5jb250YWluZXIiIEBjbGljaz0ke3RoaXMuaGFuZGxlQ2xpY2t9PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFycm93Ij48L2Rpdj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGVlY2hidWJibGUiPgogICAgICAgICAgICAgICAgJHt0aGlzLndhdmU/d2A8c3BhbiBjbGFzcz0id2F2ZSI+8J+Rizwvc3Bhbj5gOndgYH0KICAgICAgICAgICAgICAgICR7VmkucmVzb2x2ZSh0aGlzLmdldEh0bWwoKSl9CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYDp3YGB9CiAgICBgfWFzeW5jIGhhbmRsZUNsaWNrKCl7Y29uc29sZS5sb2coInNwZWVjaGJ1YmJsZSBnb3QgY2xpY2tlZC4iKX1hc3luYyBmaXJzdFVwZGF0ZWQoKXtpZih0aGlzLnJlZmZlZEVsZW1lbnR8fCh0aGlzLnJlZmZlZEVsZW1lbnQ9dGhpcy5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKSx0aGlzLm1hbmlmZXN0ZWQpYXdhaXQgdGhpcy51cGRhdGVQb3NpdGlvbigpLHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIubWFpbmNvbnRhaW5lciIpLnN0eWxlLm9wYWNpdHk9IjEiO2Vsc2V7bGV0IEM7dGhpcy5yZWZmZWRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZW50ZXIiLGFzeW5jKCk9PntDPWF3YWl0IE4uY3JlYXRlQW5kU2hvdyh0aGlzLnJlZmZlZEVsZW1lbnQsdGhpcy50ZXh0KX0pLHRoaXMucmVmZmVkRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIiwoKT0+e0MuZGVzdHJveSgpfSl9fWFzeW5jIHVwZGF0ZVBvc2l0aW9uKCl7bGV0IEM9dGhpcy5yZWZmZWRFbGVtZW50LF89Qy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0aGlzLnN0eWxlLnBvc2l0aW9uPSJmaXhlZCIsdGhpcy5zdHlsZS50b3A9YCR7Xy50b3AtMTN9cHhgLHRoaXMuc3R5bGUubGVmdD1gJHtfLmxlZnQrQy5jbGllbnRXaWR0aCs0fXB4YCxfLnJpZ2h0PjI1MCYmKHRoaXMuc3R5bGUud2lkdGg9IjI1MHB4Iil9YXN5bmMgZ2V0SHRtbCgpe2lmKCF0aGlzLnRleHQpcmV0dXJuIiI7bGV0IEM9bHQucGx1Z2lucy5zbWFydHN0cmluZy5ub3JtYWxpemUuc3RhbmRhcmQodGhpcy50ZXh0KSxfPWF3YWl0IGx0LnBsdWdpbnMuc21hcnRtYXJrZG93bi5TbWFydE1hcmtkb3duLmVhc3lNYXJrZG93blRvSHRtbChDKTtyZXR1cm4gVjMoXyl9YXN5bmMgc2hvdygpe31hc3luYyBkZXN0cm95KCl7dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5tYWluY29udGFpbmVyIikuc3R5bGUub3BhY2l0eT0iMCIsdGhpcy53aW5kb3dMYXllci5kZXN0cm95KCl9c3RhdGlje1IyKGEsdCl9fTtyZXR1cm4gTj1hfSkoKX0pO3ZhciBaa2E9ZygoKT0+e1lrYSgpfSk7dmFyIFhrYT1nKCgpPT57djIoKX0pO3ZhciBRa2E9ZygoKT0+e1VrYSgpO1drYSgpO1prYSgpO1hrYSgpfSk7dmFyIEprYT1nKCgpPT57fSk7dmFyIGVTYT1nKCgpPT57SmthKCl9KTt2YXIgTHgsdFNhPWcoKCk9PntFcnQoKTtMeD1jbGFzcyBze3N0YXRpY3tpKHRoaXMsIldlYkNvbnRhaW5lckVudmlyb25tZW50Iil9c3RhdGljIHNoYXJlZENvbnRhaW5lcj1udWxsO3N0YXRpYyBib290UHJvbWlzZT1udWxsO19yZWFkeT0hMTt0eXBlPSJ3ZWJjb250YWluZXIiO2dldCByZWFkeSgpe3JldHVybiB0aGlzLl9yZWFkeX1nZXQgY29udGFpbmVyKCl7cmV0dXJuIHMuc2hhcmVkQ29udGFpbmVyfWFzeW5jIGluaXQoKXtpZighKHRoaXMuX3JlYWR5JiZzLnNoYXJlZENvbnRhaW5lcikpe2lmKHMuYm9vdFByb21pc2Upe2F3YWl0IHMuYm9vdFByb21pc2UsdGhpcy5fcmVhZHk9ITA7cmV0dXJufWlmKHMuc2hhcmVkQ29udGFpbmVyKXt0aGlzLl9yZWFkeT0hMDtyZXR1cm59aWYodHlwZW9mIFNoYXJlZEFycmF5QnVmZmVyPiJ1Iil0aHJvdyBuZXcgRXJyb3IoYFdlYkNvbnRhaW5lciByZXF1aXJlcyBTaGFyZWRBcnJheUJ1ZmZlciB3aGljaCBpcyBub3QgYXZhaWxhYmxlLiBFbnN1cmUgeW91ciBzZXJ2ZXIgc2VuZHMgdGhlc2UgaGVhZGVyczoKICBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeTogc2FtZS1vcmlnaW4KICBDcm9zcy1PcmlnaW4tRW1iZWRkZXItUG9saWN5OiByZXF1aXJlLWNvcnBgKTtzLmJvb3RQcm9taXNlPUNnLmJvb3QoKTt0cnl7cy5zaGFyZWRDb250YWluZXI9YXdhaXQgcy5ib290UHJvbWlzZSx0aGlzLl9yZWFkeT0hMH1jYXRjaChlKXt0aHJvdyBzLmJvb3RQcm9taXNlPW51bGwsZX19fWFzeW5jIGRlc3Ryb3koKXtzLnNoYXJlZENvbnRhaW5lciYmKHMuc2hhcmVkQ29udGFpbmVyLnRlYXJkb3duKCkscy5zaGFyZWRDb250YWluZXI9bnVsbCxzLmJvb3RQcm9taXNlPW51bGwsdGhpcy5fcmVhZHk9ITEpfWFzeW5jIHJlYWRGaWxlKGUpe3JldHVybiB0aGlzLmVuc3VyZVJlYWR5KCksYXdhaXQgdGhpcy5jb250YWluZXIuZnMucmVhZEZpbGUoZSwidXRmLTgiKX1hc3luYyB3cml0ZUZpbGUoZSx0KXt0aGlzLmVuc3VyZVJlYWR5KCksYXdhaXQgdGhpcy5jb250YWluZXIuZnMud3JpdGVGaWxlKGUsdCwidXRmLTgiKX1hc3luYyByZWFkRGlyKGUpe3JldHVybiB0aGlzLmVuc3VyZVJlYWR5KCksKGF3YWl0IHRoaXMuY29udGFpbmVyLmZzLnJlYWRkaXIoZSx7d2l0aEZpbGVUeXBlczohMH0pKS5tYXAoYT0+KHt0eXBlOmEuaXNEaXJlY3RvcnkoKT8iZGlyZWN0b3J5IjoiZmlsZSIsbmFtZTphLm5hbWUscGF0aDplPT09Ii8iP2AvJHthLm5hbWV9YDpgJHtlfS8ke2EubmFtZX1gfSkpfWFzeW5jIG1rZGlyKGUpe3RoaXMuZW5zdXJlUmVhZHkoKSxhd2FpdCB0aGlzLmNvbnRhaW5lci5mcy5ta2RpcihlLHtyZWN1cnNpdmU6ITB9KX1hc3luYyBybShlLHQpe3RoaXMuZW5zdXJlUmVhZHkoKSxhd2FpdCB0aGlzLmNvbnRhaW5lci5mcy5ybShlLHtyZWN1cnNpdmU6dD8ucmVjdXJzaXZlPz8hMX0pfWFzeW5jIGV4aXN0cyhlKXt0aGlzLmVuc3VyZVJlYWR5KCk7dHJ5e3JldHVybiBhd2FpdCB0aGlzLmNvbnRhaW5lci5mcy5yZWFkRmlsZShlKSwhMH1jYXRjaHt0cnl7cmV0dXJuIGF3YWl0IHRoaXMuY29udGFpbmVyLmZzLnJlYWRkaXIoZSksITB9Y2F0Y2h7cmV0dXJuITF9fX13YXRjaChlLHQsYSl7dGhpcy5lbnN1cmVSZWFkeSgpO2xldCByPXRoaXMuY29udGFpbmVyLmZzLndhdGNoKGUse3JlY3Vyc2l2ZTphPy5yZWN1cnNpdmU/PyExfSx0KTtyZXR1cm57c3RvcDppKCgpPT5yLmNsb3NlKCksInN0b3AiKX19YXN5bmMgc3Bhd24oZSx0PVtdKXt0aGlzLmVuc3VyZVJlYWR5KCk7bGV0IGE9YXdhaXQgdGhpcy5jb250YWluZXIuc3Bhd24oZSx0KTtyZXR1cm57b3V0cHV0OmEub3V0cHV0LGlucHV0OmEuaW5wdXQsZXhpdDphLmV4aXQsa2lsbDppKCgpPT5hLmtpbGwoKSwia2lsbCIpfX1hc3luYyBtb3VudChlKXt0aGlzLmVuc3VyZVJlYWR5KCksYXdhaXQgdGhpcy5jb250YWluZXIubW91bnQoZSl9Z2V0Q29udGFpbmVyKCl7cmV0dXJuIHRoaXMuZW5zdXJlUmVhZHkoKSx0aGlzLmNvbnRhaW5lcn1lbnN1cmVSZWFkeSgpe2lmKCF0aGlzLl9yZWFkeXx8IXRoaXMuY29udGFpbmVyKXRocm93IG5ldyBFcnJvcigiV2ViQ29udGFpbmVyRW52aXJvbm1lbnQgbm90IGluaXRpYWxpemVkLiBDYWxsIGluaXQoKSBmaXJzdC4iKX19fSk7dmFyIGFTYT1nKCgpPT57dFNhKCl9KTt2YXIgbDJlPWcoKCk9PntlU2EoKTthU2EoKX0pO3ZhciBzU2E9ZygoKT0+e0dvdCgpfSk7dmFyIGMyZSx6bHQ9ZygoKT0+e2MyZT1jbGFzc3tzdGF0aWN7aSh0aGlzLCJUZXJtaW5hbFRhYk1hbmFnZXIiKX10YWJzPW5ldyBNYXA7dGFiQ291bnRlcj0wO3h0ZXJtQnVuZGxlPW51bGw7eHRlcm1GaXRBZGRvbkJ1bmRsZT1udWxsO3NldFh0ZXJtTW9kdWxlcyhlLHQpe3RoaXMueHRlcm1CdW5kbGU9ZSx0aGlzLnh0ZXJtRml0QWRkb25CdW5kbGU9dH1nZW5lcmF0ZVRhYklkKCl7cmV0dXJuIHRoaXMudGFiQ291bnRlcisrLGB0ZXJtaW5hbC0ke3RoaXMudGFiQ291bnRlcn0tJHtEYXRlLm5vdygpfWB9Z2V0RGVmYXVsdExhYmVsKGUsdCl7c3dpdGNoKGUpe2Nhc2Uic2hlbGwiOnJldHVybiJiYXNoIjtjYXNlInNjcmlwdCI6cmV0dXJuIHQ/LnNjcmlwdE5hbWV8fCJzY3JpcHQiO2Nhc2UicGFja2FnZS11cGRhdGUiOnJldHVybiB0Py5wYWNrYWdlTmFtZT9gdXBkYXRlICR7dC5wYWNrYWdlTmFtZX1gOiJ1cGRhdGUiO2Nhc2UiY3VzdG9tIjpyZXR1cm4gdD8uY29tbWFuZHx8InByb2Nlc3MiO2RlZmF1bHQ6cmV0dXJuInRlcm1pbmFsIn19Z2V0RGVmYXVsdEljb24oZSl7c3dpdGNoKGUpe2Nhc2Uic2hlbGwiOnJldHVybiJsdWNpZGU6dGVybWluYWwiO2Nhc2Uic2NyaXB0IjpyZXR1cm4ibHVjaWRlOnBsYXkiO2Nhc2UicGFja2FnZS11cGRhdGUiOnJldHVybiJsdWNpZGU6cGFja2FnZUNoZWNrIjtjYXNlImN1c3RvbSI6cmV0dXJuImx1Y2lkZTpjb2RlIjtkZWZhdWx0OnJldHVybiJsdWNpZGU6dGVybWluYWwifX1nZXRUZXJtaW5hbFRoZW1lKGUpe3JldHVybiBlP3tiYWNrZ3JvdW5kOiIjZmZmZmZmIixmb3JlZ3JvdW5kOiIjMzMzMzMzIixjdXJzb3I6IiMzMzMzMzMiLGN1cnNvckFjY2VudDoiI2ZmZmZmZiIsc2VsZWN0aW9uOiJyZ2JhKDAsIDAsIDAsIDAuMikiLGJsYWNrOiIjMDAwMDAwIixyZWQ6IiNjZDMxMzEiLGdyZWVuOiIjMDBiYzAwIix5ZWxsb3c6IiM5NDk4MDAiLGJsdWU6IiMwNDUxYTUiLG1hZ2VudGE6IiNiYzA1YmMiLGN5YW46IiMwNTk4YmMiLHdoaXRlOiIjNTU1NTU1IixicmlnaHRCbGFjazoiIzY2NjY2NiIsYnJpZ2h0UmVkOiIjY2QzMTMxIixicmlnaHRHcmVlbjoiIzE0Y2UxNCIsYnJpZ2h0WWVsbG93OiIjYjViYTAwIixicmlnaHRCbHVlOiIjMDQ1MWE1IixicmlnaHRNYWdlbnRhOiIjYmMwNWJjIixicmlnaHRDeWFuOiIjMDU5OGJjIixicmlnaHRXaGl0ZToiI2E1YTVhNSJ9OntiYWNrZ3JvdW5kOiIjMDAwMDAwIixmb3JlZ3JvdW5kOiIjZmZmZmZmIixjdXJzb3I6IiNmZmZmZmYiLGN1cnNvckFjY2VudDoiIzAwMDAwMCIsc2VsZWN0aW9uOiJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMikifX1jcmVhdGVUYWIoZSx0KXtpZighdGhpcy54dGVybUJ1bmRsZXx8IXRoaXMueHRlcm1GaXRBZGRvbkJ1bmRsZSl0aHJvdyBuZXcgRXJyb3IoIlRlcm1pbmFsVGFiTWFuYWdlcjogeHRlcm0gbW9kdWxlcyBub3QgaW5pdGlhbGl6ZWQuIENhbGwgc2V0WHRlcm1Nb2R1bGVzKCkgZmlyc3QuIik7bGV0IGE9dGhpcy5nZW5lcmF0ZVRhYklkKCkscj1lLnR5cGUsbj1uZXcgdGhpcy54dGVybUJ1bmRsZS5UZXJtaW5hbCh7Y29udmVydEVvbDohMCxjdXJzb3JCbGluazohMCx0aGVtZTp0aGlzLmdldFRlcm1pbmFsVGhlbWUodCksZm9udEZhbWlseTonTWVubG8sIE1vbmFjbywgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlJyxmb250U2l6ZToxMyxsaW5lSGVpZ2h0OjEuMn0pLG89bmV3IHRoaXMueHRlcm1GaXRBZGRvbkJ1bmRsZS5GaXRBZGRvbjtuLmxvYWRBZGRvbihvKTtsZXQgbD17aWQ6YSxsYWJlbDplLmxhYmVsfHx0aGlzLmdldERlZmF1bHRMYWJlbChyLGUubWV0YWRhdGEpLGljb25OYW1lOmUuaWNvbk5hbWV8fHRoaXMuZ2V0RGVmYXVsdEljb24ociksdHlwZTpyLGNsb3NlYWJsZTplLmNsb3NlYWJsZT8/ciE9PSJzaGVsbCIsdGVybWluYWw6bixmaXRBZGRvbjpvLHByb2Nlc3M6bnVsbCxpbnB1dFdyaXRlcjpudWxsLGV4aXRlZDohMSxleGl0Q29kZTpudWxsLGNyZWF0ZWRBdDpEYXRlLm5vdygpLG1ldGFkYXRhOmUubWV0YWRhdGF9O3JldHVybiB0aGlzLnRhYnMuc2V0KGEsbCksbH1nZXRUYWIoZSl7cmV0dXJuIHRoaXMudGFicy5nZXQoZSl9Z2V0QWxsVGFicygpe3JldHVybiBBcnJheS5mcm9tKHRoaXMudGFicy52YWx1ZXMoKSkuc29ydCgoZSx0KT0+ZS5jcmVhdGVkQXQtdC5jcmVhdGVkQXQpfWdldFRhYkNvdW50KCl7cmV0dXJuIHRoaXMudGFicy5zaXplfWhhc1RhYihlKXtyZXR1cm4gdGhpcy50YWJzLmhhcyhlKX1jbG9zZVRhYihlKXtsZXQgdD10aGlzLnRhYnMuZ2V0KGUpO2lmKCF0KXJldHVybiExO2lmKHQucHJvY2VzcyYmIXQuZXhpdGVkKXRyeXt0LnByb2Nlc3Mua2lsbCgpfWNhdGNoKGEpe2NvbnNvbGUud2FybigiRmFpbGVkIHRvIGtpbGwgcHJvY2VzczoiLGEpfXRyeXt0LnRlcm1pbmFsLmRpc3Bvc2UoKX1jYXRjaChhKXtjb25zb2xlLndhcm4oIkZhaWxlZCB0byBkaXNwb3NlIHRlcm1pbmFsOiIsYSl9cmV0dXJuIHRoaXMudGFicy5kZWxldGUoZSksITB9cmVuYW1lVGFiKGUsdCl7bGV0IGE9dGhpcy50YWJzLmdldChlKTtyZXR1cm4gYT8oYS5sYWJlbD10LCEwKTohMX1tYXJrVGFiRXhpdGVkKGUsdCl7bGV0IGE9dGhpcy50YWJzLmdldChlKTthJiYoYS5leGl0ZWQ9ITAsYS5leGl0Q29kZT10KX1zZXRUYWJQcm9jZXNzKGUsdCxhKXtsZXQgcj10aGlzLnRhYnMuZ2V0KGUpO3ImJihyLnByb2Nlc3M9dCxyLmlucHV0V3JpdGVyPWEpfXVwZGF0ZUFsbFRoZW1lcyhlKXtsZXQgdD10aGlzLmdldFRlcm1pbmFsVGhlbWUoZSk7Zm9yKGxldCBhIG9mIHRoaXMudGFicy52YWx1ZXMoKSlhLnRlcm1pbmFsLm9wdGlvbnMudGhlbWU9dH1kaXNwb3NlQWxsKCl7Zm9yKGxldFtlXW9mIHRoaXMudGFicyl0aGlzLmNsb3NlVGFiKGUpO3RoaXMudGFicy5jbGVhcigpfX19KTt2YXIgclNhPXt9O3l0KHJTYSx7RGVlc1dvcmtzcGFjZVRlcm1pbmFsOigpPT5pU2F9KTt2YXIgXzQsb2wsaVNhLHVKPWcoKCk9PntwZSgpO2t0KCk7aHQoKTtsMmUoKTtHYSgpO2EyZSgpO3psdCgpO091KCk7XzQ9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LG9sPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxpU2E9KCgpPT57bGV0IHM9W25lKCJkZWVzLXdvcmtzcGFjZS10ZXJtaW5hbCIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdLE8sJD1bXSxFPVtdO3ZhciBIPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzV29ya3NwYWNlVGVybWluYWwiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgaz10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOk9iamVjdH0pXSxwPVtMKCldLGM9W0woKV0seD1bTCh7dHlwZTpOdW1iZXJ9KV0seT1bTCh7dHlwZTpCb29sZWFufSldLE49W1koKV0sTz1bWSgpXSxfNCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImV4ZWN1dGlvbkVudmlyb25tZW50IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJleGVjdXRpb25FbnZpcm9ubWVudCJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLmV4ZWN1dGlvbkVudmlyb25tZW50LCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MuZXhlY3V0aW9uRW52aXJvbm1lbnQ9SX0sInNldCIpfSxtZXRhZGF0YTprfSxvLGwpLF80KHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2V0dXBDb21tYW5kIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJzZXR1cENvbW1hbmQiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5zZXR1cENvbW1hbmQsImdldCIpLHNldDppKChTLEkpPT57Uy5zZXR1cENvbW1hbmQ9SX0sInNldCIpfSxtZXRhZGF0YTprfSxkLHUpLF80KHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZW52aXJvbm1lbnRWYXJpYWJsZXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+ImVudmlyb25tZW50VmFyaWFibGVzImluIFMsImhhcyIpLGdldDppKFM9PlMuZW52aXJvbm1lbnRWYXJpYWJsZXMsImdldCIpLHNldDppKChTLEkpPT57Uy5lbnZpcm9ubWVudFZhcmlhYmxlcz1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LGIsdiksXzQodGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0YWJCYXJXaWR0aCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4idGFiQmFyV2lkdGgiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy50YWJCYXJXaWR0aCwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLnRhYkJhcldpZHRoPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sbSxmKSxfNCh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dUYWJCYXIiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+InNob3dUYWJCYXIiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5zaG93VGFiQmFyLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1Muc2hvd1RhYkJhcj1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LE0seiksXzQodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0YWJzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJ0YWJzImluIFMsImhhcyIpLGdldDppKFM9PlMudGFicywiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLnRhYnM9SX0sInNldCIpfSxtZXRhZGF0YTprfSxDLF8pLF80KHRoaXMsbnVsbCxPLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYWN0aXZlVGFiSWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+ImFjdGl2ZVRhYklkImluIFMsImhhcyIpLGdldDppKFM9PlMuYWN0aXZlVGFiSWQsImdldCIpLHNldDppKChTLEkpPT57Uy5hY3RpdmVUYWJJZD1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LCQsRSksXzQobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6a30sbnVsbCx0KSxIPWE9ZS52YWx1ZSxrJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmt9KX1zdGF0aWMgZGVtbz1pKCgpPT57bGV0IGs9bmV3IEx4O3JldHVybiB3YDxkZWVzLXdvcmtzcGFjZS10ZXJtaW5hbCAuZXhlY3V0aW9uRW52aXJvbm1lbnQ9JHtrfT48L2RlZXMtd29ya3NwYWNlLXRlcm1pbmFsPmB9LCJkZW1vIik7c3RhdGljIGRlbW9Hcm91cHM9WyJXb3Jrc3BhY2UiXTtyZXNpemVPYnNlcnZlcjt0YWJNYW5hZ2VyOyNlPW9sKHRoaXMsbyxudWxsKTtnZXQgZXhlY3V0aW9uRW52aXJvbm1lbnQoKXtyZXR1cm4gdGhpcy4jZX1zZXQgZXhlY3V0aW9uRW52aXJvbm1lbnQoayl7dGhpcy4jZT1rfSN0PShvbCh0aGlzLGwpLG9sKHRoaXMsZCwiIikpO2dldCBzZXR1cENvbW1hbmQoKXtyZXR1cm4gdGhpcy4jdH1zZXQgc2V0dXBDb21tYW5kKGspe3RoaXMuI3Q9a30jYT0ob2wodGhpcyx1KSxvbCh0aGlzLGIse30pKTtnZXQgZW52aXJvbm1lbnRWYXJpYWJsZXMoKXtyZXR1cm4gdGhpcy4jYX1zZXQgZW52aXJvbm1lbnRWYXJpYWJsZXMoayl7dGhpcy4jYT1rfSNzPShvbCh0aGlzLHYpLG9sKHRoaXMsbSwxNjApKTtnZXQgdGFiQmFyV2lkdGgoKXtyZXR1cm4gdGhpcy4jc31zZXQgdGFiQmFyV2lkdGgoayl7dGhpcy4jcz1rfSNpPShvbCh0aGlzLGYpLG9sKHRoaXMsTSwhMCkpO2dldCBzaG93VGFiQmFyKCl7cmV0dXJuIHRoaXMuI2l9c2V0IHNob3dUYWJCYXIoayl7dGhpcy4jaT1rfSNyPShvbCh0aGlzLHopLG9sKHRoaXMsQyxbXSkpO2dldCB0YWJzKCl7cmV0dXJuIHRoaXMuI3J9c2V0IHRhYnMoayl7dGhpcy4jcj1rfSNvPShvbCh0aGlzLF8pLG9sKHRoaXMsJCxudWxsKSk7Z2V0IGFjdGl2ZVRhYklkKCl7cmV0dXJuIHRoaXMuI299c2V0IGFjdGl2ZVRhYklkKGspe3RoaXMuI289a310ZXJtaW5hbFRoZW1lU3Vic2NyaXB0aW9uPShvbCh0aGlzLEUpLG51bGwpO2lzQnJpZ2h0PSExO3Rlcm1pbmFsQWN0aW9uYmFyPW51bGw7ZW52aXJvbm1lbnREZWZlcnJlZD1uZXcgdXQuc21hcnRwcm9taXNlLkRlZmVycmVkO2Vudmlyb25tZW50UHJvbWlzZT10aGlzLmVudmlyb25tZW50RGVmZXJyZWQucHJvbWlzZTtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy50YWJNYW5hZ2VyPW5ldyBjMmUsdGhpcy5yZXNpemVPYnNlcnZlcj1uZXcgUmVzaXplT2JzZXJ2ZXIoKCk9Pnt0aGlzLmhhbmRsZVJlc2l6ZSgpfSl9c3RhdGljIHN0eWxlcz1bcWUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMwMDAwMDAiKX07CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAqIHsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAudGVybWluYWwtY29udGFpbmVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CgogICAgICAudGVybWluYWwtY29udGVudCB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMwMDAwMDAiKX07CiAgICAgIH0KCiAgICAgICNhY3RpdmUtdGVybWluYWwtY29udGFpbmVyIHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBtaW4taGVpZ2h0OiAwOwogICAgICAgIG1hcmdpbjogMjBweDsKICAgICAgfQoKICAgICAgLnRlcm1pbmFsLWNvbnRlbnQgZGVlcy1hY3Rpb25iYXIgewogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAvKiBUYWIgYmFyIG9uIHRoZSByaWdodCBzaWRlICovCiAgICAgIC50YWItYmFyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk2JSkiLCJoc2woMCAwJSA3JSkiKX07CiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDAgMCUgODUlKSIsImhzbCgwIDAlIDE1JSkiKX07CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLnRhYi1iYXItaGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIHBhZGRpbmc6IDhweCAxMHB4OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDAgMCUgODglKSIsImhzbCgwIDAlIDEyJSkiKX07CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA0NSUpIiwiaHNsKDAgMCUgNTUlKSIpfTsKICAgICAgfQoKICAgICAgLnRhYi1iYXItdGl0bGUgewogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgfQoKICAgICAgLnRhYi1iYXItYWN0aW9ucyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBnYXA6IDJweDsKICAgICAgfQoKICAgICAgLnRhYi1hY3Rpb24gewogICAgICAgIHdpZHRoOiAyMnB4OwogICAgICAgIGhlaWdodDogMjJweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDUwJSkiLCJoc2woMCAwJSA2MCUpIil9OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICB9CgogICAgICAudGFiLWFjdGlvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDg4JSkiLCJoc2woMCAwJSAxNSUpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMzAlKSIsImhzbCgwIDAlIDgwJSkiKX07CiAgICAgIH0KCiAgICAgIC50YWItbGlzdCB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIHBhZGRpbmc6IDRweDsKICAgICAgfQoKICAgICAgLnRlcm1pbmFsLXRhYiB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogOHB4OwogICAgICAgIHBhZGRpbmc6IDhweCAxMHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDJweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDQ1JSkiLCJoc2woMCAwJSA2MCUpIil9OwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICB9CgogICAgICAudGVybWluYWwtdGFiOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTAlKSIsImhzbCgwIDAlIDEyJSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAyNSUpIiwiaHNsKDAgMCUgODAlKSIpfTsKICAgICAgfQoKICAgICAgLnRlcm1pbmFsLXRhYi5hY3RpdmUgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDEwMCUgOTUlKSIsImhzbCgyMTAgMzAlIDE1JSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDEwMCUgNDAlKSIsImhzbCgyMTAgMTAwJSA3MCUpIil9OwogICAgICB9CgogICAgICAudGVybWluYWwtdGFiLmV4aXRlZCB7CiAgICAgICAgb3BhY2l0eTogMC43OwogICAgICB9CgogICAgICAudGFiLWljb24gewogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAudGFiLWljb24ucnVubmluZyB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMTQyIDcwJSA0MCUpIiwiaHNsKDE0MiA3MCUgNTUlKSIpfTsKICAgICAgfQoKICAgICAgLnRhYi1sYWJlbCB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgIH0KCiAgICAgIC5leGl0LWJhZGdlIHsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgcGFkZGluZzogMXB4IDVweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQoKICAgICAgLmV4aXQtYmFkZ2Uuc3VjY2VzcyB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgxNDIgNzAlIDkwJSkiLCJoc2woMTQyIDMwJSAyMCUpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDE0MiA3MCUgMzUlKSIsImhzbCgxNDIgNzAlIDYwJSkiKX07CiAgICAgIH0KCiAgICAgIC5leGl0LWJhZGdlLmVycm9yIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgNzAlIDkzJSkiLCJoc2woMCAzMCUgMjAlKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDcwJSA0NSUpIiwiaHNsKDAgNzAlIDYwJSkiKX07CiAgICAgIH0KCiAgICAgIC50YWItY2xvc2UgewogICAgICAgIHdpZHRoOiAxOHB4OwogICAgICAgIGhlaWdodDogMThweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC50ZXJtaW5hbC10YWI6aG92ZXIgLnRhYi1jbG9zZSB7CiAgICAgICAgb3BhY2l0eTogMC42OwogICAgICB9CgogICAgICAudGFiLWNsb3NlOmhvdmVyIHsKICAgICAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDg1JSkiLCJoc2woMCAwJSAyNSUpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgNzAlIDUwJSkiLCJoc2woMCA3MCUgNjAlKSIpfTsKICAgICAgfQoKICAgICAgLmVtcHR5LXN0YXRlIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA1MCUpIiwiaHNsKDAgMCUgNTAlKSIpfTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgIH0KCiAgICAgIC8qIHh0ZXJtLmpzIHN0eWxlcyAqLwogICAgICAueHRlcm0gewogICAgICAgIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogJ2xpZ2EnIDA7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICB9CgogICAgICAueHRlcm0uZm9jdXMsCiAgICAgIC54dGVybTpmb2N1cyB7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgfQoKICAgICAgLnh0ZXJtIC54dGVybS1oZWxwZXJzIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIHotaW5kZXg6IDU7CiAgICAgIH0KCiAgICAgIC54dGVybSAueHRlcm0taGVscGVyLXRleHRhcmVhIHsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIGJvcmRlcjogMDsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgbGVmdDogLTk5OTllbTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgd2lkdGg6IDA7CiAgICAgICAgaGVpZ2h0OiAwOwogICAgICAgIHotaW5kZXg6IC01OwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICByZXNpemU6IG5vbmU7CiAgICAgIH0KCiAgICAgIC54dGVybSAuY29tcG9zaXRpb24tdmlldyB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDAwMDAwIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzMzMzMzMyIsIiNmZmZmZmYiKX07CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICB6LWluZGV4OiAxOwogICAgICB9CgogICAgICAueHRlcm0gLmNvbXBvc2l0aW9uLXZpZXcuYWN0aXZlIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgLnh0ZXJtIC54dGVybS12aWV3cG9ydCB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMDAwMDAwIil9OwogICAgICAgIG92ZXJmbG93LXk6IHNjcm9sbDsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgfQoKICAgICAgLnh0ZXJtIC54dGVybS1zY3JlZW4gewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgLnh0ZXJtIC54dGVybS1zY3JlZW4gY2FudmFzIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB0b3A6IDA7CiAgICAgIH0KCiAgICAgIC54dGVybSAueHRlcm0tc2Nyb2xsLWFyZWEgewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLnh0ZXJtLWNoYXItbWVhc3VyZS1lbGVtZW50IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogLTk5OTllbTsKICAgICAgICBsaW5lLWhlaWdodDogbm9ybWFsOwogICAgICB9CgogICAgICAueHRlcm0gewogICAgICAgIGN1cnNvcjogdGV4dDsKICAgICAgfQoKICAgICAgLnh0ZXJtLmVuYWJsZS1tb3VzZS1ldmVudHMgewogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgfQoKICAgICAgLnh0ZXJtLnh0ZXJtLWN1cnNvci1wb2ludGVyIHsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KCiAgICAgIC54dGVybS5jb2x1bW4tc2VsZWN0LmZvY3VzIHsKICAgICAgICBjdXJzb3I6IGNyb3NzaGFpcjsKICAgICAgfQoKICAgICAgLnh0ZXJtIC54dGVybS1hY2Nlc3NpYmlsaXR5LAogICAgICAueHRlcm0gLnh0ZXJtLW1lc3NhZ2UgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHRvcDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgei1pbmRleDogMTA7CiAgICAgICAgY29sb3I6IHRyYW5zcGFyZW50OwogICAgICB9CgogICAgICAueHRlcm0gLmxpdmUtcmVnaW9uIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgbGVmdDogLTk5OTlweDsKICAgICAgICB3aWR0aDogMXB4OwogICAgICAgIGhlaWdodDogMXB4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC54dGVybS1kaW0gewogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgfQoKICAgICAgLnh0ZXJtLXVuZGVybGluZSB7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe2xldCBrPXRoaXMuYWN0aXZlVGFiSWQ/dGhpcy50YWJNYW5hZ2VyLmdldFRhYih0aGlzLmFjdGl2ZVRhYklkKTpudWxsO3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbC1jb250YWluZXIiPgogICAgICAgIDwhLS0gTWFpbiB0ZXJtaW5hbCBhcmVhIC0tPgogICAgICAgIDxkaXYgY2xhc3M9InRlcm1pbmFsLWNvbnRlbnQiPgogICAgICAgICAgJHtrP3dgCiAgICAgICAgICAgIDxkaXYgaWQ9ImFjdGl2ZS10ZXJtaW5hbC1jb250YWluZXIiPjwvZGl2PgogICAgICAgICAgYDp3YAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbXB0eS1zdGF0ZSI+CiAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6dGVybWluYWwifSBpY29uU2l6ZT0iMzIiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgIDxzcGFuPk5vIHRlcm1pbmFsIG9wZW48L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYH0KICAgICAgICAgIDxkZWVzLWFjdGlvbmJhcj48L2RlZXMtYWN0aW9uYmFyPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8IS0tIFZlcnRpY2FsIHRhYiBiYXIgb24gdGhlIHJpZ2h0IC0tPgogICAgICAgICR7dGhpcy5zaG93VGFiQmFyP3dgCiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWItYmFyIiBzdHlsZT0id2lkdGg6ICR7dGhpcy50YWJCYXJXaWR0aH1weCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYi1iYXItaGVhZGVyIj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGFiLWJhci10aXRsZSI+VGVybWluYWxzPC9zcGFuPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYi1iYXItYWN0aW9ucyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWItYWN0aW9uIiBAY2xpY2s9JHt0aGlzLmhhbmRsZUFkZFRhYn0gdGl0bGU9Ik5ldyBUZXJtaW5hbCI+CiAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHsibHVjaWRlOnBsdXMifSBpY29uU2l6ZT0iMTQiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFiLWxpc3QiPgogICAgICAgICAgICAgICR7dGhpcy50YWJzLm1hcChTPT53YAogICAgICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICBjbGFzcz0idGVybWluYWwtdGFiICR7Uy5pZD09PXRoaXMuYWN0aXZlVGFiSWQ/ImFjdGl2ZSI6IiJ9ICR7Uy5leGl0ZWQ/ImV4aXRlZCI6IiJ9IgogICAgICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy5zd2l0Y2hUb1RhYihTLmlkKX0KICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgPGRlZXMtaWNvbgogICAgICAgICAgICAgICAgICAgIC5pY29uPSR7Uy5pY29uTmFtZX0KICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZT0iMTQiCiAgICAgICAgICAgICAgICAgICAgY2xhc3M9InRhYi1pY29uICR7Uy5wcm9jZXNzJiYhUy5leGl0ZWQ/InJ1bm5pbmciOiIifSIKICAgICAgICAgICAgICAgICAgPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGFiLWxhYmVsIj4ke1MubGFiZWx9PC9zcGFuPgogICAgICAgICAgICAgICAgICAke1MuZXhpdGVkP3dgCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImV4aXQtYmFkZ2UgJHtTLmV4aXRDb2RlPT09MD8ic3VjY2VzcyI6ImVycm9yIn0iPgogICAgICAgICAgICAgICAgICAgICAgJHtTLmV4aXRDb2RlfQogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICAgICAgICAgJHtTLmNsb3NlYWJsZT93YAogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0YWItY2xvc2UiIEBjbGljaz0ke0k9PnRoaXMuaGFuZGxlVGFiQ2xvc2UoSSxTLmlkKX0+CiAgICAgICAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7Imx1Y2lkZTp4In0gaWNvblNpemU9IjEyIj48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICBgKX0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgOiIifQogICAgICA8L2Rpdj4KICAgIGB9YXN5bmMgZmlyc3RVcGRhdGVkKCl7bGV0IGs9YXdhaXQgdGhpcy5kb210b29sc1Byb21pc2U7dGhpcy5pc0JyaWdodD1rLnRoZW1lTWFuYWdlci5nb0JyaWdodEJvb2xlYW4sdGhpcy50ZXJtaW5hbFRoZW1lU3Vic2NyaXB0aW9uPWsudGhlbWVNYW5hZ2VyLnRoZW1lT2JzZXJ2YWJsZS5zdWJzY3JpYmUoUj0+e3RoaXMuaXNCcmlnaHQ9Uix0aGlzLnRhYk1hbmFnZXIudXBkYXRlQWxsVGhlbWVzKFIpfSk7bGV0IFM9YW8uZ2V0SW5zdGFuY2UoKSxbSSxQXT1hd2FpdCBQcm9taXNlLmFsbChbUy5sb2FkWHRlcm0oKSxTLmxvYWRYdGVybUZpdEFkZG9uKCldKTt0aGlzLnRhYk1hbmFnZXIuc2V0WHRlcm1Nb2R1bGVzKEksUCksYXdhaXQgdGhpcy5jcmVhdGVTaGVsbFRhYigpfWFzeW5jIGNvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKX1hc3luYyBkaXNjb25uZWN0ZWRDYWxsYmFjaygpe2xldCBrPXRoaXMuc2hhZG93Um9vdD8uZ2V0RWxlbWVudEJ5SWQoImFjdGl2ZS10ZXJtaW5hbC1jb250YWluZXIiKTtrJiZ0aGlzLnJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZShrKSx0aGlzLnRlcm1pbmFsVGhlbWVTdWJzY3JpcHRpb24mJih0aGlzLnRlcm1pbmFsVGhlbWVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLnRlcm1pbmFsVGhlbWVTdWJzY3JpcHRpb249bnVsbCksdGhpcy50YWJNYW5hZ2VyLmRpc3Bvc2VBbGwoKSxhd2FpdCBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpfWFzeW5jIGhhbmRsZUFkZFRhYigpe2F3YWl0IHRoaXMuY3JlYXRlU2hlbGxUYWIoKX1oYW5kbGVUYWJDbG9zZShrLFMpe2suc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5jbG9zZVRhYihTKX1zd2l0Y2hUb1RhYihrKXtpZihrPT09dGhpcy5hY3RpdmVUYWJJZClyZXR1cm47bGV0IFM9dGhpcy50YWJNYW5hZ2VyLmdldFRhYihrKTtpZighUylyZXR1cm47bGV0IEk9dGhpcy5hY3RpdmVUYWJJZDt0aGlzLmFjdGl2ZVRhYklkJiZ0aGlzLmRldGFjaEFjdGl2ZVRlcm1pbmFsKCksdGhpcy5hY3RpdmVUYWJJZD1rLHRoaXMudGFicz10aGlzLnRhYk1hbmFnZXIuZ2V0QWxsVGFicygpLHRoaXMudXBkYXRlQ29tcGxldGUudGhlbigoKT0+e3RoaXMuYXR0YWNoVGVybWluYWxUb0NvbnRhaW5lcihTKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJ0YWItc3dpdGNoZWQiLHtidWJibGVzOiEwLGNvbXBvc2VkOiEwLGRldGFpbDp7dGFiSWQ6ayxwcmV2aW91c1RhYklkOkl9fSkpfSl9ZGV0YWNoQWN0aXZlVGVybWluYWwoKXtsZXQgaz10aGlzLnNoYWRvd1Jvb3Q/LmdldEVsZW1lbnRCeUlkKCJhY3RpdmUtdGVybWluYWwtY29udGFpbmVyIik7ayYmKGsuaW5uZXJIVE1MPSIiKX1hdHRhY2hUZXJtaW5hbFRvQ29udGFpbmVyKGspe2xldCBTPXRoaXMuc2hhZG93Um9vdD8uZ2V0RWxlbWVudEJ5SWQoImFjdGl2ZS10ZXJtaW5hbC1jb250YWluZXIiKTtTJiYodGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKFMpLFMuaW5uZXJIVE1MPSIiLGsudGVybWluYWwub3BlbihTKSxrLmZpdEFkZG9uLmZpdCgpLGsudGVybWluYWwuZm9jdXMoKSl9aGFuZGxlUmVzaXplKCl7aWYodGhpcy5hY3RpdmVUYWJJZCl7bGV0IGs9dGhpcy50YWJNYW5hZ2VyLmdldFRhYih0aGlzLmFjdGl2ZVRhYklkKTtrJiZrLmZpdEFkZG9uLmZpdCgpfX1hc3luYyBzcGF3blByb2Nlc3NGb3JUYWIoayxTLEk9W10pe2lmKCF0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50KXtrLnRlcm1pbmFsLndyaXRlKCJceDFCWzMxbSIpLGsudGVybWluYWwud3JpdGUoYFx1Mjc0QyBObyBleGVjdXRpb24gZW52aXJvbm1lbnQgYXZhaWxhYmxlLlxyCmApLGsudGVybWluYWwud3JpdGUoIlx4MUJbMG0iKTtyZXR1cm59dHJ5e3RoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQucmVhZHl8fChrLnRlcm1pbmFsLndyaXRlKGBJbml0aWFsaXppbmcgZW52aXJvbm1lbnQuLi5ccgpgKSxhd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LmluaXQoKSk7bGV0IFA9YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5zcGF3bihTLEkpO1Aub3V0cHV0LnBpcGVUbyhuZXcgV3JpdGFibGVTdHJlYW0oe3dyaXRlOmkoSz0+e2sudGVybWluYWwud3JpdGUoSyl9LCJ3cml0ZSIpfSkpO2xldCBSPVAuaW5wdXQuZ2V0V3JpdGVyKCk7ay50ZXJtaW5hbC5vbkRhdGEoSz0+e1Iud3JpdGUoSyl9KSx0aGlzLnRhYk1hbmFnZXIuc2V0VGFiUHJvY2VzcyhrLmlkLFAsUiksdGhpcy50YWJzPXRoaXMudGFiTWFuYWdlci5nZXRBbGxUYWJzKCksUC5leGl0LnRoZW4oSz0+e3RoaXMuaGFuZGxlUHJvY2Vzc0V4aXQoay5pZCxLKX0pfWNhdGNoKFApe2sudGVybWluYWwud3JpdGUoIlx4MUJbMzFtIiksay50ZXJtaW5hbC53cml0ZShgXHUyNzRDIEZhaWxlZCB0byBzcGF3biBwcm9jZXNzOiAke1B9XHIKYCksay50ZXJtaW5hbC53cml0ZSgiXHgxQlswbSIpLGNvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBzcGF3biBwcm9jZXNzOiIsUCl9fWhhbmRsZVByb2Nlc3NFeGl0KGssUyl7bGV0IEk9dGhpcy50YWJNYW5hZ2VyLmdldFRhYihrKTtpZighSSlyZXR1cm47dGhpcy50YWJNYW5hZ2VyLm1hcmtUYWJFeGl0ZWQoayxTKTtsZXQgUD1TPT09MD9gXHIKXHgxQlszMm1bUHJvY2VzcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5XVx4MUJbMG1ccgpgOmBccgpceDFCWzMxbVtQcm9jZXNzIGV4aXRlZCB3aXRoIGNvZGUgJHtTfV1ceDFCWzBtXHIKYDtJLnRlcm1pbmFsLndyaXRlKFApLHRoaXMudGFicz10aGlzLnRhYk1hbmFnZXIuZ2V0QWxsVGFicygpLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInByb2Nlc3MtY29tcGxldGUiLHtidWJibGVzOiEwLGNvbXBvc2VkOiEwLGRldGFpbDp7dGFiSWQ6ayxleGl0Q29kZTpTfX0pKSxJLmNsb3NlYWJsZSYmdGhpcy5zaG93RXhpdGVkVGFiQWN0aW9uYmFyKGssSS5sYWJlbCxTKX1hc3luYyBzaG93RXhpdGVkVGFiQWN0aW9uYmFyKGssUyxJKXtsZXQgUD1JPT09MDsoYXdhaXQgdGhpcy5zaG93QWN0aW9uYmFyKHttZXNzYWdlOlA/YCIke1N9IiBjb21wbGV0ZWQuIENsb3NlIHRhYj9gOmAiJHtTfSIgZXhpdGVkIChjb2RlICR7SX0pLiBDbG9zZSB0YWI/YCx0eXBlOlA/ImluZm8iOiJ3YXJuaW5nIixpY29uOlA/Imx1Y2lkZTpjaGVja0NpcmNsZSI6Imx1Y2lkZTphbGVydFRyaWFuZ2xlIixhY3Rpb25zOlt7aWQ6ImNsb3NlIixsYWJlbDoiQ2xvc2UgVGFiIixwcmltYXJ5OiEwfSx7aWQ6ImtlZXAiLGxhYmVsOiJLZWVwIE9wZW4ifV0sdGltZW91dDp7ZHVyYXRpb246MWU0LGRlZmF1bHRBY3Rpb25JZDoiY2xvc2UifSxkaXNtaXNzaWJsZTohMH0pKS5hY3Rpb25JZD09PSJjbG9zZSImJnRoaXMuY2xvc2VUYWIoayl9YXN5bmMgY3JlYXRlU2hlbGxUYWIoayl7bGV0IFM9dGhpcy50YWJNYW5hZ2VyLmNyZWF0ZVRhYih7dHlwZToic2hlbGwiLGxhYmVsOmt8fGBiYXNoICR7dGhpcy50YWJNYW5hZ2VyLmdldFRhYkNvdW50KCkrMX1gLGNsb3NlYWJsZTp0aGlzLnRhYk1hbmFnZXIuZ2V0VGFiQ291bnQoKT4wfSx0aGlzLmlzQnJpZ2h0KTtyZXR1cm4gdGhpcy50YWJzPXRoaXMudGFiTWFuYWdlci5nZXRBbGxUYWJzKCksdGhpcy5zd2l0Y2hUb1RhYihTLmlkKSxhd2FpdCB0aGlzLnVwZGF0ZUNvbXBsZXRlLGF3YWl0IHRoaXMuc3Bhd25Qcm9jZXNzRm9yVGFiKFMsImpzaCIpLHRoaXMudGFiTWFuYWdlci5nZXRUYWJDb3VudCgpPT09MSYmdGhpcy5zZXR1cENvbW1hbmQmJihhd2FpdCB0aGlzLndhaXRGb3JQcm9tcHQoUy50ZXJtaW5hbCwifi8iKSxTLmlucHV0V3JpdGVyJiZTLmlucHV0V3JpdGVyLndyaXRlKHRoaXMuc2V0dXBDb21tYW5kKSksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgidGFiLWNyZWF0ZWQiLHtidWJibGVzOiEwLGNvbXBvc2VkOiEwLGRldGFpbDp7dGFiSWQ6Uy5pZH19KSksUy5pZH1hc3luYyBjcmVhdGVQcm9jZXNzVGFiKGspe2xldCBTPXRoaXMudGFiTWFuYWdlci5jcmVhdGVUYWIoayx0aGlzLmlzQnJpZ2h0KTtyZXR1cm4gdGhpcy50YWJzPXRoaXMudGFiTWFuYWdlci5nZXRBbGxUYWJzKCksay5zd2l0Y2hUb1RhYiE9PSExJiZ0aGlzLnN3aXRjaFRvVGFiKFMuaWQpLGF3YWl0IHRoaXMudXBkYXRlQ29tcGxldGUsay5jb21tYW5kJiZhd2FpdCB0aGlzLnNwYXduUHJvY2Vzc0ZvclRhYihTLGsuY29tbWFuZCxrLmFyZ3MpLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInRhYi1jcmVhdGVkIix7YnViYmxlczohMCxjb21wb3NlZDohMCxkZXRhaWw6e3RhYklkOlMuaWR9fSkpLFMuaWR9Z2V0QWN0aXZlVGFiKCl7cmV0dXJuIHRoaXMuYWN0aXZlVGFiSWQmJnRoaXMudGFiTWFuYWdlci5nZXRUYWIodGhpcy5hY3RpdmVUYWJJZCl8fG51bGx9Z2V0VGFicygpe3JldHVybiB0aGlzLnRhYk1hbmFnZXIuZ2V0QWxsVGFicygpfXNlbGVjdFRhYihrKXtyZXR1cm4gdGhpcy50YWJNYW5hZ2VyLmhhc1RhYihrKT8odGhpcy5zd2l0Y2hUb1RhYihrKSwhMCk6ITF9Y2xvc2VUYWIoayl7bGV0IFM9dGhpcy50YWJNYW5hZ2VyLmdldFRhYihrKTtpZighU3x8IVMuY2xvc2VhYmxlKXJldHVybiExO2lmKGs9PT10aGlzLmFjdGl2ZVRhYklkKXtsZXQgST10aGlzLnRhYk1hbmFnZXIuZ2V0QWxsVGFicygpLFA9SS5maW5kSW5kZXgoSz0+Sy5pZD09PWspLFI9SVtQKzFdfHxJW1AtMV07Uj90aGlzLnN3aXRjaFRvVGFiKFIuaWQpOih0aGlzLmFjdGl2ZVRhYklkPW51bGwsdGhpcy5kZXRhY2hBY3RpdmVUZXJtaW5hbCgpKX1yZXR1cm4gdGhpcy50YWJNYW5hZ2VyLmNsb3NlVGFiKGspLHRoaXMudGFicz10aGlzLnRhYk1hbmFnZXIuZ2V0QWxsVGFicygpLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInRhYi1jbG9zZWQiLHtidWJibGVzOiEwLGNvbXBvc2VkOiEwLGRldGFpbDp7dGFiSWQ6a319KSksITB9d3JpdGVUb1RhYihrLFMpe2xldCBJPXRoaXMudGFiTWFuYWdlci5nZXRUYWIoayk7cmV0dXJuIEk/KEkudGVybWluYWwud3JpdGUoUyksITApOiExfXNlbmRJbnB1dFRvVGFiKGssUyl7bGV0IEk9dGhpcy50YWJNYW5hZ2VyLmdldFRhYihrKTtyZXR1cm4hSXx8IUkuaW5wdXRXcml0ZXI/ITE6KEkuaW5wdXRXcml0ZXIud3JpdGUoUyksITApfWFzeW5jIHNob3dBY3Rpb25iYXIoayl7cmV0dXJuIHRoaXMudGVybWluYWxBY3Rpb25iYXJ8fCh0aGlzLnRlcm1pbmFsQWN0aW9uYmFyPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiZGVlcy1hY3Rpb25iYXIiKSksdGhpcy50ZXJtaW5hbEFjdGlvbmJhcj8uc2hvdyhrKX1hc3luYyB3YWl0Rm9yUHJvbXB0KGssUyl7cmV0dXJuIG5ldyBQcm9taXNlKEk9PntsZXQgUD1pKCgpPT57bGV0IFI9ay5idWZmZXIuYWN0aXZlO2ZvcihsZXQgSz0wO0s8Ui5sZW5ndGg7SysrKXtsZXQgVj1SLmdldExpbmUoSyk7aWYoViYmVi50cmFuc2xhdGVUb1N0cmluZygpLmluY2x1ZGVzKFMpKXtzZXRUaW1lb3V0KCgpPT57SSgpfSwxMDApO3JldHVybn19c2V0VGltZW91dChQLDEwMCl9LCJjaGVja1Byb21wdCIpO1AoKX0pfWFzeW5jIHNldEVudmlyb25tZW50VmFyaWFibGVzKGspe2lmKCF0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50KXRocm93IG5ldyBFcnJvcigiTm8gZXhlY3V0aW9uIGVudmlyb25tZW50IGF2YWlsYWJsZSIpO2xldCBTPSIiO2ZvcihsZXQgSSBpbiBrKVMrPWBleHBvcnQgJHtJfT0iJHtrW0ldfSIKYDthd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LndyaXRlRmlsZSgiL3NvdXJjZS5lbnYiLFMpfWdldEV4ZWN1dGlvbkVudmlyb25tZW50KCl7cmV0dXJuIHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnR9c3RhdGlje29sKGEsdCl9fTtyZXR1cm4gSD1hfSkoKX0pO3ZhciBDbHQsVGx0LG9TYSxuU2EsbFNhLGNTYSxkU2E9ZygoKT0+e3BlKCk7eXgoKTtvNCgpO0wxZSgpO1IxZSgpO04xZSgpO1dnKCk7SjFlKCk7Q2x0PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxUbHQ9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LG9TYT0oKCk9PntsZXQgcz1bbmUoImRlbW8tdmlldy1kYXNoYm9hcmQiKV0sZSx0PVtdLGEscj13ZTt2YXIgbj1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVtb1ZpZXdEYXNoYm9hcmQiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgbz10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtDbHQobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6b30sbnVsbCx0KSxuPWE9ZS52YWx1ZSxvJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm99KX1zdGF0aWMgc3R5bGVzPVtoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBhZGRpbmc6IDQwcHg7CiAgICAgIH0KICAgICAgaDEgewogICAgICAgIG1hcmdpbjogMCAwIDIwcHggMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwMDAiLCIjZmZmIil9OwogICAgICB9CiAgICAgIGRlZXMtc3RhdHNncmlkIHsKICAgICAgICBtYXJnaW4tdG9wOiAyMHB4OwogICAgICB9CiAgICBgXTtzdGF0c1RpbGVzPVt7aWQ6InVzZXJzIix0aXRsZToiQWN0aXZlIFVzZXJzIix2YWx1ZToxMjM0LHR5cGU6Im51bWJlciIsaWNvbjoiZmFVc2VycyIsZGVzY3JpcHRpb246IisxNSUgZnJvbSBsYXN0IHdlZWsiLGNvbG9yOiIjMjJjNTVlIn0se2lkOiJwYWdldmlld3MiLHRpdGxlOiJQYWdlIFZpZXdzIix2YWx1ZTo1NjcwMCx0eXBlOiJudW1iZXIiLGljb246ImZhRXllIixkZXNjcmlwdGlvbjoiNTYuN2sgdG90YWwgdmlld3MiLGNvbG9yOiIjM2I4MmY2In0se2lkOiJ1cHRpbWUiLHRpdGxlOiJTeXN0ZW0gVXB0aW1lIix2YWx1ZTo4OSx1bml0OiIlIix0eXBlOiJnYXVnZSIsaWNvbjoiZmFTZXJ2ZXIiLGRlc2NyaXB0aW9uOiJMYXN0IDMwIGRheXMiLGNvbG9yOiIjMTBiOTgxIixnYXVnZU9wdGlvbnM6e21pbjowLG1heDoxMDAsdGhyZXNob2xkczpbe3ZhbHVlOjgwLGNvbG9yOiIjZWY0NDQ0In0se3ZhbHVlOjkwLGNvbG9yOiIjZjU5ZTBiIn0se3ZhbHVlOjEwMCxjb2xvcjoiIzEwYjk4MSJ9XX19LHtpZDoicmVzcG9uc2UiLHRpdGxlOiJBdmcgUmVzcG9uc2UgVGltZSIsdmFsdWU6My4yLHVuaXQ6InMiLHR5cGU6Im51bWJlciIsaWNvbjoiZmFDbG9jayIsZGVzY3JpcHRpb246Ii0wLjVzIGltcHJvdmVtZW50Iixjb2xvcjoiI2Y1OWUwYiJ9LHtpZDoicmV2ZW51ZSIsdGl0bGU6Ik1vbnRobHkgUmV2ZW51ZSIsdmFsdWU6NDg1MjAsdW5pdDoiJCIsdHlwZToidHJlbmQiLGljb246ImZhRG9sbGFyU2lnbiIsZGVzY3JpcHRpb246Iis4LjIlIGdyb3d0aCIsY29sb3I6IiMyMmM1NWUiLHRyZW5kRGF0YTpbMzVlMywzOGUzLDM3NTAwLDQxZTMsMzk4MDAsNDJlMyw0NDEwMCw0MzIwMCw0NTYwMCw0NzEwMCw0NjgwMCw0ODUyMF19LHtpZDoidHJhZmZpYyIsdGl0bGU6IlRyYWZmaWMgVHJlbmQiLHZhbHVlOjE2ODAsdHlwZToidHJlbmQiLGljb246ImZhQ2hhcnRMaW5lIixkZXNjcmlwdGlvbjoiTGFzdCA3IGRheXMiLGNvbG9yOiIjM2I4MmY2Iix0cmVuZERhdGE6WzEyMDAsMTM1MCwxMTAwLDE0NTAsMTYwMCwxNTUwLDE2ODBdfV07cmVuZGVyKCl7cmV0dXJuIHdgCiAgICAgIDxoMT5EYXNoYm9hcmQ8L2gxPgogICAgICA8cD5XZWxjb21lIHRvIHlvdXIgYXBwbGljYXRpb24gZGFzaGJvYXJkLiBIZXJlJ3MgYW4gb3ZlcnZpZXcgb2YgeW91ciBtZXRyaWNzOjwvcD4KICAgICAgPGRlZXMtc3RhdHNncmlkCiAgICAgICAgLnRpbGVzPSR7dGhpcy5zdGF0c1RpbGVzfQogICAgICAgIEB0aWxlLWFjdGlvbj0ke289Pntjb25zb2xlLmxvZygiVGlsZSBhY3Rpb246IixvLmRldGFpbCl9fQogICAgICA+PC9kZWVzLXN0YXRzZ3JpZD4KCiAgICAgIDxoMiBzdHlsZT0ibWFyZ2luLXRvcDogNDBweDsiPlJlY2VudCBBY3Rpdml0eTwvaDI+CiAgICAgIDxwPkJlbG93IGlzIGEgbG9nIG9mIHJlY2VudCBzeXN0ZW0gZXZlbnRzIGFuZCB1c2VyIGFjdGl2aXR5IHRvIGRlbW9uc3RyYXRlIHNjcm9sbGFibGUgY29udGVudC48L3A+CgogICAgICAke1t7dGltZToiMiBtaW4gYWdvIixldmVudDoiVXNlciBqb2huQGV4YW1wbGUuY29tIGxvZ2dlZCBpbiBmcm9tIDE5Mi4xNjguMS40MiIsdHlwZToiaW5mbyJ9LHt0aW1lOiI1IG1pbiBhZ28iLGV2ZW50OiJEZXBsb3ltZW50IHYzLjUyLjEgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSBvbiBwcm9kdWN0aW9uIix0eXBlOiJzdWNjZXNzIn0se3RpbWU6IjEyIG1pbiBhZ28iLGV2ZW50OiJEYXRhYmFzZSBiYWNrdXAgZmluaXNoZWQgXHUyMDE0IDIuNCBHQiBjb21wcmVzc2VkIix0eXBlOiJpbmZvIn0se3RpbWU6IjE4IG1pbiBhZ28iLGV2ZW50OiJTU0wgY2VydGlmaWNhdGUgcmVuZXdlZCBmb3IgYXBpLmV4YW1wbGUuY29tIChleHBpcmVzIDIwMjctMDQtMDMpIix0eXBlOiJzdWNjZXNzIn0se3RpbWU6IjI1IG1pbiBhZ28iLGV2ZW50OiJNZW1vcnkgdXNhZ2Ugc3Bpa2Ugb24gd29ya2VyLTAzICg5MiUpIFx1MjAxNCBhdXRvLXNjYWxlZCB0byA0IGluc3RhbmNlcyIsdHlwZToid2FybmluZyJ9LHt0aW1lOiIzMSBtaW4gYWdvIixldmVudDoiTmV3IHVzZXIgcmVnaXN0cmF0aW9uOiBzYXJhaEBjb21wYW55LmlvIix0eXBlOiJpbmZvIn0se3RpbWU6IjQ1IG1pbiBhZ28iLGV2ZW50OidTY2hlZHVsZWQgam9iICJjbGVhbnVwLXRlbXAtZmlsZXMiIGNvbXBsZXRlZCBcdTIwMTQgcmVtb3ZlZCAxLDI0NyBmaWxlcycsdHlwZToiaW5mbyJ9LHt0aW1lOiIxIGhvdXIgYWdvIixldmVudDoiQVBJIHJhdGUgbGltaXQgcmVhY2hlZCBmb3IgY2xpZW50IGFwcC1tb2JpbGUtaW9zICg0MjkgcmVzcG9uc2VzKSIsdHlwZToid2FybmluZyJ9LHt0aW1lOiIxLjUgaG91cnMgYWdvIixldmVudDoiQ0ROIGNhY2hlIHB1cmdlZCBmb3IgL2Fzc2V0cy8qIFx1MjAxNCAzNDAgb2JqZWN0cyBpbnZhbGlkYXRlZCIsdHlwZToiaW5mbyJ9LHt0aW1lOiIyIGhvdXJzIGFnbyIsZXZlbnQ6IkZhaWxlZCBsb2dpbiBhdHRlbXB0IGZvciBhZG1pbkBleGFtcGxlLmNvbSBmcm9tIDIwMy4wLjExMy41MCAoYmxvY2tlZCkiLHR5cGU6ImVycm9yIn0se3RpbWU6IjIuNSBob3VycyBhZ28iLGV2ZW50OiJXZWJob29rIGRlbGl2ZXJ5IHRvIGh0dHBzOi8vaG9va3Muc2xhY2suY29tIHN1Y2NlZWRlZCAoMjAwIE9LKSIsdHlwZToiaW5mbyJ9LHt0aW1lOiIzIGhvdXJzIGFnbyIsZXZlbnQ6J0Nyb24gam9iICJnZW5lcmF0ZS1yZXBvcnRzIiBzdGFydGVkIFx1MjAxNCBwcm9jZXNzaW5nIFExIDIwMjYgZGF0YScsdHlwZToiaW5mbyJ9LHt0aW1lOiIzLjUgaG91cnMgYWdvIixldmVudDoiTG9hZCBiYWxhbmNlciBoZWFsdGggY2hlY2s6IGFsbCA4IG5vZGVzIGhlYWx0aHkiLHR5cGU6InN1Y2Nlc3MifSx7dGltZToiNCBob3VycyBhZ28iLGV2ZW50OiJETlMgcHJvcGFnYXRpb24gY29tcGxldGUgZm9yIG5ldyBzdWJkb21haW4gc3RhZ2luZy5leGFtcGxlLmNvbSIsdHlwZToic3VjY2VzcyJ9XS5tYXAobz0+d2AKICAgICAgICA8ZGl2IHN0eWxlPSIKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgICBwYWRkaW5nOiAxMHB4IDA7CiAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtoLmJkVGhlbWUoImhzbCgwIDAlIDkwJSkiLCJoc2woMCAwJSAxMiUpIil9OwogICAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgICI+CiAgICAgICAgICA8c3BhbiBzdHlsZT0iCiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgICAgICB3aWR0aDogMTAwcHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA1NSUpIiwiaHNsKDAgMCUgNDUlKSIpfTsKICAgICAgICAgICI+JHtvLnRpbWV9PC9zcGFuPgogICAgICAgICAgPHNwYW4gc3R5bGU9IgogICAgICAgICAgICBjb2xvcjogJHtvLnR5cGU9PT0iZXJyb3IiP2guYmRUaGVtZSgiaHNsKDAgNzIlIDUwJSkiLCJoc2woMCA3MiUgNjUlKSIpOm8udHlwZT09PSJ3YXJuaW5nIj9oLmJkVGhlbWUoImhzbCgyNSA5NSUgNTAlKSIsImhzbCgyNSA5NSUgNjMlKSIpOm8udHlwZT09PSJzdWNjZXNzIj9oLmJkVGhlbWUoImhzbCgxNDIgNzAlIDQwJSkiLCJoc2woMTQyIDcwJSA1NSUpIik6aC5iZFRoZW1lKCJoc2woMCAwJSAzMCUpIiwiaHNsKDAgMCUgNzUlKSIpfTsKICAgICAgICAgICI+JHtvLmV2ZW50fTwvc3Bhbj4KICAgICAgICA8L2Rpdj4KICAgICAgYCl9CiAgICBgfXN0YXRpY3tUbHQoYSx0KX19O3JldHVybiBuPWF9KSgpLG5TYT0oKCk9PntsZXQgcz1bbmUoImRlbW8tdmlldy1hbmFseXRpY3MiKV0sZSx0PVtdLGEscj13ZTt2YXIgbj1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVtb1ZpZXdBbmFseXRpY3MiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgbz10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtDbHQobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6b30sbnVsbCx0KSxuPWE9ZS52YWx1ZSxvJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm99KX1zdGF0aWMgc3R5bGVzPVtoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBhZGRpbmc6IDQwcHg7CiAgICAgIH0KICAgICAgaDEgewogICAgICAgIG1hcmdpbjogMCAwIDIwcHggMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwMDAiLCIjZmZmIil9OwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGgxPkFuYWx5dGljczwvaDE+CiAgICAgIDxwPlRoaXMgaXMgdGhlIGFuYWx5dGljcyB2aWV3LiBZb3UgY2FuIGFkZCBjaGFydHMgYW5kIG1ldHJpY3MgaGVyZS48L3A+CiAgICBgfXN0YXRpY3tUbHQoYSx0KX19O3JldHVybiBuPWF9KSgpLGxTYT0oKCk9PntsZXQgcz1bbmUoImRlbW8tdmlldy1zZXR0aW5ncyIpXSxlLHQ9W10sYSxyPXdlO3ZhciBuPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZW1vVmlld1NldHRpbmdzIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IG89dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7Q2x0KG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOm99LG51bGwsdCksbj1hPWUudmFsdWUsbyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpvfSl9c3RhdGljIHN0eWxlcz1baC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwYWRkaW5nOiA0MHB4OwogICAgICB9CiAgICAgIGgxIHsKICAgICAgICBtYXJnaW46IDAgMCAyMHB4IDA7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDAwIiwiI2ZmZiIpfTsKICAgICAgfQogICAgICAuc2V0dGluZ3Mtc2VjdGlvbiB7CiAgICAgICAgbWFyZ2luLXRvcDogMzBweDsKICAgICAgfQogICAgICAuc2V0dGluZ3Mtc2VjdGlvbiBoMiB7CiAgICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICAgIG1hcmdpbjogMCAwIDE1cHggMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMzMzMiLCIjY2NjIil9OwogICAgICB9CiAgICAgIC5ob3Jpem9udGFsLWZvcm0tc2VjdGlvbiB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmNWY1ZjUiLCIjMWExYTFhIil9OwogICAgICAgIHBhZGRpbmc6IDIwcHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIG1hcmdpbjogMTVweCAwOwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGgxPlNldHRpbmdzPC9oMT4KICAgICAgPHA+Q29uZmlndXJlIHlvdXIgYXBwbGljYXRpb24gc2V0dGluZ3MgYmVsb3c6PC9wPgogICAgICAKICAgICAgPGRpdiBjbGFzcz0ic2V0dGluZ3Mtc2VjdGlvbiI+CiAgICAgICAgPGgyPkdlbmVyYWwgU2V0dGluZ3M8L2gyPgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0IGtleT0iYXBwTmFtZSIgbGFiZWw9IkFwcGxpY2F0aW9uIE5hbWUiIHZhbHVlPSJNeSBBcHAiPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dCBrZXk9ImFwaUVuZHBvaW50IiBsYWJlbD0iQVBJIEVuZHBvaW50IiB2YWx1ZT0iaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20iPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgPGRlZXMtaW5wdXQtZHJvcGRvd24KICAgICAgICAgICAga2V5PSJlbnZpcm9ubWVudCIKICAgICAgICAgICAgbGFiZWw9IkVudmlyb25tZW50IgogICAgICAgICAgICAub3B0aW9ucz0ke1t7b3B0aW9uOiJEZXZlbG9wbWVudCIsa2V5OiJkZXYifSx7b3B0aW9uOiJTdGFnaW5nIixrZXk6InN0YWdpbmcifSx7b3B0aW9uOiJQcm9kdWN0aW9uIixrZXk6InByb2QifV19CiAgICAgICAgICAgIC5zZWxlY3RlZE9wdGlvbj0ke3tvcHRpb246IlByb2R1Y3Rpb24iLGtleToicHJvZCJ9fQogICAgICAgICAgPjwvZGVlcy1pbnB1dC1kcm9wZG93bj4KICAgICAgICAgIDxkZWVzLWlucHV0LWNoZWNrYm94IGtleT0iZW5hYmxlTm90aWZpY2F0aW9ucyIgbGFiZWw9IkVuYWJsZSBOb3RpZmljYXRpb25zIiB2YWx1ZT0idHJ1ZSI+PC9kZWVzLWlucHV0LWNoZWNrYm94PgogICAgICAgICAgPGRlZXMtaW5wdXQtY2hlY2tib3gga2V5PSJlbmFibGVBbmFseXRpY3MiIGxhYmVsPSJFbmFibGUgQW5hbHl0aWNzIiB2YWx1ZT0iZmFsc2UiPjwvZGVlcy1pbnB1dC1jaGVja2JveD4KICAgICAgICAgIDxkZWVzLWZvcm0tc3VibWl0PlNhdmUgR2VuZXJhbCBTZXR0aW5nczwvZGVlcy1mb3JtLXN1Ym1pdD4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kaXY+CiAgICAgIAogICAgICA8ZGl2IGNsYXNzPSJzZXR0aW5ncy1zZWN0aW9uIj4KICAgICAgICA8aDI+RGlzcGxheSBQcmVmZXJlbmNlczwvaDI+CiAgICAgICAgPGRpdiBjbGFzcz0iaG9yaXpvbnRhbC1mb3JtLXNlY3Rpb24iPgogICAgICAgICAgPHAgc3R5bGU9Im1hcmdpbi10b3A6IDA7IG1hcmdpbi1ib3R0b206IDE2cHg7Ij5RdWljayBkaXNwbGF5IHNldHRpbmdzIHVzaW5nIGhvcml6b250YWwgbGF5b3V0OjwvcD4KICAgICAgICAgIDxkZWVzLWZvcm0gaG9yaXpvbnRhbC1sYXlvdXQ+CiAgICAgICAgICAgIDxkZWVzLWlucHV0LWRyb3Bkb3duCiAgICAgICAgICAgICAga2V5PSJ0aGVtZSIKICAgICAgICAgICAgICBsYWJlbD0iVGhlbWUiCiAgICAgICAgICAgICAgLmVuYWJsZVNlYXJjaD0keyExfQogICAgICAgICAgICAgIC5vcHRpb25zPSR7W3tvcHRpb246IkxpZ2h0IixrZXk6ImxpZ2h0In0se29wdGlvbjoiRGFyayIsa2V5OiJkYXJrIn0se29wdGlvbjoiQXV0byIsa2V5OiJhdXRvIn1dfQogICAgICAgICAgICAgIC5zZWxlY3RlZE9wdGlvbj0ke3tvcHRpb246IkRhcmsiLGtleToiZGFyayJ9fQogICAgICAgICAgICA+PC9kZWVzLWlucHV0LWRyb3Bkb3duPgogICAgICAgICAgICA8ZGVlcy1pbnB1dC1kcm9wZG93bgogICAgICAgICAgICAgIGtleT0ibGFuZ3VhZ2UiCiAgICAgICAgICAgICAgbGFiZWw9Ikxhbmd1YWdlIgogICAgICAgICAgICAgIC5lbmFibGVTZWFyY2g9JHshMX0KICAgICAgICAgICAgICAub3B0aW9ucz0ke1t7b3B0aW9uOiJFbmdsaXNoIixrZXk6ImVuIn0se29wdGlvbjoiR2VybWFuIixrZXk6ImRlIn0se29wdGlvbjoiU3BhbmlzaCIsa2V5OiJlcyJ9LHtvcHRpb246IkZyZW5jaCIsa2V5OiJmciJ9XX0KICAgICAgICAgICAgICAuc2VsZWN0ZWRPcHRpb249JHt7b3B0aW9uOiJFbmdsaXNoIixrZXk6ImVuIn19CiAgICAgICAgICAgID48L2RlZXMtaW5wdXQtZHJvcGRvd24+CiAgICAgICAgICAgIDxkZWVzLWlucHV0LWNoZWNrYm94IGtleT0iY29tcGFjdE1vZGUiIGxhYmVsPSJDb21wYWN0IE1vZGUiPjwvZGVlcy1pbnB1dC1jaGVja2JveD4KICAgICAgICAgIDwvZGVlcy1mb3JtPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgCiAgICAgIDxkaXYgY2xhc3M9InNldHRpbmdzLXNlY3Rpb24iPgogICAgICAgIDxoMj5Ob3RpZmljYXRpb24gU2V0dGluZ3M8L2gyPgogICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1yYWRpb2dyb3VwCiAgICAgICAgICAgIC5sYWJlbD0keyJFbWFpbCBGcmVxdWVuY3kifQogICAgICAgICAgICAub3B0aW9ucz0ke1siUmVhbC10aW1lIiwiRGFpbHkgRGlnZXN0IiwiV2Vla2x5IFN1bW1hcnkiLCJOZXZlciJdfQogICAgICAgICAgICAuc2VsZWN0ZWRPcHRpb249JHsiUmVhbC10aW1lIn0KICAgICAgICAgICAgLmtleT0keyJlbWFpbEZyZXF1ZW5jeSJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXJhZGlvZ3JvdXA+CiAgICAgICAgICA8ZGVlcy1pbnB1dC1jaGVja2JveCBrZXk9InB1c2hOb3RpZmljYXRpb25zIiBsYWJlbD0iRW5hYmxlIFB1c2ggTm90aWZpY2F0aW9ucyIgdmFsdWU9InRydWUiPjwvZGVlcy1pbnB1dC1jaGVja2JveD4KICAgICAgICAgIDxkZWVzLWlucHV0LWNoZWNrYm94IGtleT0ic291bmRBbGVydHMiIGxhYmVsPSJQbGF5IFNvdW5kIGZvciBBbGVydHMiIHZhbHVlPSJ0cnVlIj48L2RlZXMtaW5wdXQtY2hlY2tib3g+CiAgICAgICAgICA8ZGVlcy1mb3JtLXN1Ym1pdD5VcGRhdGUgTm90aWZpY2F0aW9uczwvZGVlcy1mb3JtLXN1Ym1pdD4KICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgPC9kaXY+CiAgICBgfXN0YXRpY3tUbHQoYSx0KX19O3JldHVybiBuPWF9KSgpLGNTYT1pKCgpPT53YAogIDxzdHlsZT4KICAgIGJvZHkgewogICAgICBtYXJnaW46IDA7CiAgICAgIHBhZGRpbmc6IDA7CiAgICB9CiAgICAuZGVtby1jb250YWluZXIgewogICAgICB3aWR0aDogMTAwJTsKICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHRvcDogMDsKICAgICAgbGVmdDogMDsKICAgIH0KICA8L3N0eWxlPgogIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgIDxkZWVzLXNpbXBsZS1hcHBkYXNoCiAgICAgIG5hbWU9Ik15IEFwcGxpY2F0aW9uIgogICAgICB0ZXJtaW5hbFNldHVwQ29tbWFuZD0iZWNobyAnV2VsY29tZSB0byB0aGUgdGVybWluYWwhJyIKICAgICAgLmdsb2JhbE1lc3NhZ2VzPSR7W3tpZDoidXBkYXRlIix0eXBlOiJpbmZvIixtZXNzYWdlOiJBIG5ldyB2ZXJzaW9uICh2My41MC4wKSBpcyBhdmFpbGFibGUgd2l0aCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMgYW5kIGJ1ZyBmaXhlcy4iLGRpc21pc3NpYmxlOiEwLGFjdGlvbnM6W3tuYW1lOiJVcGRhdGUgTm93IixpY29uTmFtZToibHVjaWRlOmRvd25sb2FkIixhY3Rpb246aSgoKT0+YWxlcnQoIlVwZGF0aW5nLi4uIiksImFjdGlvbiIpfSx7bmFtZToiUmVsZWFzZSBOb3RlcyIsYWN0aW9uOmkoKCk9PmFsZXJ0KCJPcGVuaW5nIHJlbGVhc2Ugbm90ZXMuLi4iKSwiYWN0aW9uIil9XX0se2lkOiJtYWludGVuYW5jZSIsdHlwZToid2FybmluZyIsbWVzc2FnZToiU2NoZWR1bGVkIG1haW50ZW5hbmNlIHdpbmRvdzogQXByaWwgNSwgMjAyNiAwMjowMFx1MjAxMzA2OjAwIFVUQy4gU29tZSBzZXJ2aWNlcyBtYXkgYmUgdGVtcG9yYXJpbHkgdW5hdmFpbGFibGUuIixkaXNtaXNzaWJsZTohMH0se2lkOiJjcml0aWNhbCIsdHlwZToiZXJyb3IiLG1lc3NhZ2U6IllvdXIgU1NMIGNlcnRpZmljYXRlIGV4cGlyZXMgaW4gMyBkYXlzLiBSZW5ldyBub3cgdG8gYXZvaWQgc2VydmljZSBkaXNydXB0aW9uLiIsZGlzbWlzc2libGU6ITEsYWN0aW9uczpbe25hbWU6IlJlbmV3IENlcnRpZmljYXRlIixpY29uTmFtZToibHVjaWRlOnNoaWVsZENoZWNrIixhY3Rpb246aSgoKT0+YWxlcnQoIlJlbmV3aW5nIGNlcnRpZmljYXRlLi4uIiksImFjdGlvbiIpfV19XX0KICAgICAgLnZpZXdUYWJzPSR7W3tuYW1lOiJEYXNoYm9hcmQiLGljb25OYW1lOiJsdWNpZGU6aG9tZSIsZWxlbWVudDpvU2F9LHtuYW1lOiJBbmFseXRpY3MiLGljb25OYW1lOiJsdWNpZGU6bGluZUNoYXJ0IixlbGVtZW50Om5TYSxzdWJWaWV3czpbe25hbWU6Ik92ZXJ2aWV3IixpY29uTmFtZToibHVjaWRlOmFjdGl2aXR5IixlbGVtZW50Om5TYX0se25hbWU6IlJlcG9ydHMiLGljb25OYW1lOiJsdWNpZGU6ZmlsZVRleHQiLGVsZW1lbnQ6b1NhfV19LHtuYW1lOiJTZXR0aW5ncyIsaWNvbk5hbWU6Imx1Y2lkZTpzZXR0aW5ncyIsc3ViVmlld3M6W3tuYW1lOiJQcm9maWxlIixpY29uTmFtZToibHVjaWRlOnVzZXIiLGVsZW1lbnQ6bFNhfSx7bmFtZToiQmlsbGluZyIsaWNvbk5hbWU6Imx1Y2lkZTpjcmVkaXRDYXJkIixlbGVtZW50OmxTYX1dfV19CiAgICAgIEBsb2dvdXQ9JHsoKT0+e2NvbnNvbGUubG9nKCJMb2dvdXQgZXZlbnQgdHJpZ2dlcmVkIiksYWxlcnQoIkxvZ291dCBjbGlja2VkISIpfX0KICAgICAgQHZpZXctc2VsZWN0PSR7cz0+e2NvbnNvbGUubG9nKCJWaWV3IHNlbGVjdGVkOiIscy5kZXRhaWwudmlldy5uYW1lKX19CiAgICA+PC9kZWVzLXNpbXBsZS1hcHBkYXNoPgogIDwvZGl2PgpgLCJkZW1vRnVuYyIpfSk7dmFyIGw3LHBjLGl0cyx1U2E9ZygoKT0+e2RTYSgpO3BlKCk7R2EoKTtodCgpO2w3PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxwYz1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0saXRzPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1zaW1wbGUtYXBwZGFzaCIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdLE4sQz1bXSxfPVtdO3ZhciBPPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzU2ltcGxlQXBwRGFzaCIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCAkPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woKV0scD1bTCh7dHlwZTpBcnJheX0pXSxjPVtMKHt0eXBlOlN0cmluZ30pXSx4PVtMKHt0eXBlOkFycmF5fSldLHk9W1koKV0sTj1bWSgpXSxsNyh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im5hbWUiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+Im5hbWUiaW4gRSwiaGFzIiksZ2V0OmkoRT0+RS5uYW1lLCJnZXQiKSxzZXQ6aSgoRSxIKT0+e0UubmFtZT1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LG8sbCksbDcodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ2aWV3VGFicyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShFPT4idmlld1RhYnMiaW4gRSwiaGFzIiksZ2V0OmkoRT0+RS52aWV3VGFicywiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLnZpZXdUYWJzPUh9LCJzZXQiKX0sbWV0YWRhdGE6JH0sZCx1KSxsNyh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InRlcm1pbmFsU2V0dXBDb21tYW5kIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEU9PiJ0ZXJtaW5hbFNldHVwQ29tbWFuZCJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLnRlcm1pbmFsU2V0dXBDb21tYW5kLCJnZXQiKSxzZXQ6aSgoRSxIKT0+e0UudGVybWluYWxTZXR1cENvbW1hbmQ9SH0sInNldCIpfSxtZXRhZGF0YTokfSxiLHYpLGw3KHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZ2xvYmFsTWVzc2FnZXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+Imdsb2JhbE1lc3NhZ2VzImluIEUsImhhcyIpLGdldDppKEU9PkUuZ2xvYmFsTWVzc2FnZXMsImdldCIpLHNldDppKChFLEgpPT57RS5nbG9iYWxNZXNzYWdlcz1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LG0sZiksbDcodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzZWxlY3RlZFZpZXciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+InNlbGVjdGVkVmlldyJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLnNlbGVjdGVkVmlldywiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLnNlbGVjdGVkVmlldz1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LE0seiksbDcodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJfYWN0aXZlTWVzc2FnZXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+Il9hY3RpdmVNZXNzYWdlcyJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLl9hY3RpdmVNZXNzYWdlcywiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLl9hY3RpdmVNZXNzYWdlcz1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LEMsXyksbDcobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6JH0sbnVsbCx0KSxPPWE9ZS52YWx1ZSwkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOiR9KX1zdGF0aWMgZGVtbz1jU2E7c3RhdGljIGRlbW9Hcm91cHM9WyJTaW1wbGUiXTsjZT1wYyh0aGlzLG8sIkFwcGxpY2F0aW9uIERhc2hib2FyZCIpO2dldCBuYW1lKCl7cmV0dXJuIHRoaXMuI2V9c2V0IG5hbWUoJCl7dGhpcy4jZT0kfSN0PShwYyh0aGlzLGwpLHBjKHRoaXMsZCxbXSkpO2dldCB2aWV3VGFicygpe3JldHVybiB0aGlzLiN0fXNldCB2aWV3VGFicygkKXt0aGlzLiN0PSR9I2E9KHBjKHRoaXMsdSkscGModGhpcyxiLCdlY2hvICJUZXJtaW5hbCByZWFkeSInKSk7Z2V0IHRlcm1pbmFsU2V0dXBDb21tYW5kKCl7cmV0dXJuIHRoaXMuI2F9c2V0IHRlcm1pbmFsU2V0dXBDb21tYW5kKCQpe3RoaXMuI2E9JH0jcz0ocGModGhpcyx2KSxwYyh0aGlzLG0sW10pKTtnZXQgZ2xvYmFsTWVzc2FnZXMoKXtyZXR1cm4gdGhpcy4jc31zZXQgZ2xvYmFsTWVzc2FnZXMoJCl7dGhpcy4jcz0kfSNpPShwYyh0aGlzLGYpLHBjKHRoaXMsTSx2b2lkIDApKTtnZXQgc2VsZWN0ZWRWaWV3KCl7cmV0dXJuIHRoaXMuI2l9c2V0IHNlbGVjdGVkVmlldygkKXt0aGlzLiNpPSR9I3I9KHBjKHRoaXMseikscGModGhpcyxDLFtdKSk7Z2V0IF9hY3RpdmVNZXNzYWdlcygpe3JldHVybiB0aGlzLiNyfXNldCBfYWN0aXZlTWVzc2FnZXMoJCl7dGhpcy4jcj0kfXN0YXRpYyBzdHlsZXM9W3FlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5tYWluY29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwcHg7CiAgICAgICAgbGVmdDogMHB4OwogICAgICAgIHJpZ2h0OiAwcHg7CiAgICAgICAgYm90dG9tOiAwcHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLmFwcGJhciB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMHB4OwogICAgICAgIGxlZnQ6IDBweDsKICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDI0cHgpOwogICAgICAgIHdpZHRoOiAyNDBweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXNlY29uZGFyeSk7CiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtZmFtaWx5OiAnR2Vpc3QgU2FucycsIHNhbnMtc2VyaWY7CiAgICAgICAgei1pbmRleDogMjsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byAxZnIgbWluLWNvbnRlbnQ7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLnNpZGViYXItaGVhZGVyIHsKICAgICAgICBwYWRkaW5nOiAyMHB4IDE2cHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDEycHg7CiAgICAgIH0KCiAgICAgIC5oZWFkZXItaWNvbi13cmFwcGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgd2lkdGg6IDM2cHg7CiAgICAgICAgaGVpZ2h0OiAzNnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1iZy10ZXJ0aWFyeSk7CiAgICAgICAgYm94LXNoYWRvdzogJHtoLmJkVGhlbWUoIjAgMXB4IDJweCByZ2IoMCAwIDAgLyAwLjA1KSIsIjAgMXB4IDJweCByZ2IoMCAwIDAgLyAwLjIpIil9OwogICAgICB9CgogICAgICAuaGVhZGVyLWljb24td3JhcHBlciBkZWVzLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICB9CgogICAgICAuYXBwTmFtZSB7CiAgICAgICAgZm9udC1zaXplOiAxNXB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07CiAgICAgIH0KCiAgICAgIC52aWV3VGFicy1jb250YWluZXIgewogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgcGFkZGluZzogMTJweCA4cHg7CiAgICAgICAgc2Nyb2xsYmFyLXdpZHRoOiB0aGluOwogICAgICAgIHNjcm9sbGJhci1jb2xvcjogdmFyKC0tZGVlcy1jb2xvci1zY3JvbGxiYXItdGh1bWIpIHRyYW5zcGFyZW50OwogICAgICB9CgogICAgICAudmlld1RhYnMtY29udGFpbmVyOjotd2Via2l0LXNjcm9sbGJhciB7CiAgICAgICAgd2lkdGg6IDZweDsKICAgICAgfQoKICAgICAgLnZpZXdUYWJzLWNvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sgewogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICB9CgogICAgICAudmlld1RhYnMtY29udGFpbmVyOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1zY3JvbGxiYXItdGh1bWIpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgfQoKICAgICAgLnZpZXdUYWJzLWNvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3Itc2Nyb2xsYmFyLXRodW1iLWhvdmVyKTsKICAgICAgfQoKICAgICAgLnNlY3Rpb24tbGFiZWwgewogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICBwYWRkaW5nOiA4cHggMTJweCA4cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4OwogICAgICB9CgogICAgICAudmlld1RhYnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDJweDsKICAgICAgfQoKICAgICAgLnZpZXdUYWIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDEwcHg7CiAgICAgICAgcGFkZGluZzogMTBweCAxMnB4OwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXNlY29uZGFyeSk7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgfQoKICAgICAgLnZpZXdUYWI6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItaG92ZXIpOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzI2MjYyNiIsIiNlNWU1ZTUiKX07CiAgICAgIH0KCiAgICAgIC52aWV3VGFiOmFjdGl2ZSB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1hY3RpdmUpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45OSk7CiAgICAgIH0KCiAgICAgIC52aWV3VGFiLnNlbGVjdGVkIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWFjdGl2ZSk7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICB9CgogICAgICAudmlld1RhYi5zZWxlY3RlZDo6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB0b3A6IDhweDsKICAgICAgICBib3R0b206IDhweDsKICAgICAgICB3aWR0aDogM3B4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDAgMnB4IDJweCAwOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgfQoKICAgICAgLnZpZXdUYWIgZGVlcy1pY29uIHsKICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgb3BhY2l0eTogMC41NTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgfQoKICAgICAgLnZpZXdUYWI6aG92ZXIgZGVlcy1pY29uIHsKICAgICAgICBvcGFjaXR5OiAwLjc1OwogICAgICB9CgogICAgICAudmlld1RhYi5zZWxlY3RlZCBkZWVzLWljb24gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgfQoKICAgICAgLnZpZXdUYWIgc3BhbiB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgIH0KCiAgICAgIC52aWV3VGFiIC5jaGV2cm9uIHsKICAgICAgICBmbGV4OiAwIDAgYXV0bzsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZSwgb3BhY2l0eSAwLjE1cyBlYXNlOwogICAgICB9CgogICAgICAudmlld1RhYi5oYXNTdWJzOmhvdmVyIC5jaGV2cm9uIHsKICAgICAgICBvcGFjaXR5OiAwLjc1OwogICAgICB9CgogICAgICAudmlld1RhYi5oYXNTdWJzLmdyb3VwQWN0aXZlIC5jaGV2cm9uIHsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICAgICAgICBvcGFjaXR5OiAwLjk7CiAgICAgIH0KCiAgICAgIC5zdWJWaWV3cyB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IDBmcjsKICAgICAgICBtYXJnaW4tbGVmdDogMTJweDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgdHJhbnNpdGlvbjoKICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93cyAwLjI1cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpLAogICAgICAgICAgbWFyZ2luLXRvcCAwLjI1cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpLAogICAgICAgICAgbWFyZ2luLWJvdHRvbSAwLjI1cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwogICAgICB9CgogICAgICAuc3ViVmlld3MuZXhwYW5kZWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogMWZyOwogICAgICAgIG1hcmdpbi10b3A6IDJweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7CiAgICAgIH0KCiAgICAgIC5zdWJWaWV3czo6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB0b3A6IDRweDsKICAgICAgICBib3R0b206IDRweDsKICAgICAgICB3aWR0aDogMXB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLWRlZmF1bHQpOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5zdWJWaWV3cy5leHBhbmRlZDo6YmVmb3JlIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CgogICAgICAuc3ViVmlld3MtaW5uZXIgewogICAgICAgIG1pbi1oZWlnaHQ6IDA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiAycHg7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAxMnB4OwogICAgICB9CgogICAgICAudmlld1RhYi5zdWIgewogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgfQoKICAgICAgLnZpZXdUYWIuc3ViIGRlZXMtaWNvbiB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICB9CgogICAgICAudmlld1RhYi5zdWIuc2VsZWN0ZWQ6OmJlZm9yZSB7CiAgICAgICAgbGVmdDogLTEycHg7CiAgICAgIH0KCiAgICAgIC5hcHBBY3Rpb25zIHsKICAgICAgICBwYWRkaW5nOiAxMnB4IDhweDsKICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICAgIH0KCiAgICAgIC5hY3Rpb24gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDEwcHg7CiAgICAgICAgcGFkZGluZzogMTBweCAxMnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOwogICAgICB9CgogICAgICAuYWN0aW9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgODQlIDYwJSAvIDAuMDgpIiwiaHNsKDAgODQlIDYwJSAvIDAuMTIpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgODQlIDQ1JSkiLCJoc2woMCA4NCUgNjUlKSIpfTsKICAgICAgfQoKICAgICAgLmFjdGlvbiBkZWVzLWljb24gewogICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICBvcGFjaXR5OiAwLjY7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5hY3Rpb246aG92ZXIgZGVlcy1pY29uIHsKICAgICAgICBvcGFjaXR5OiAwLjk7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCA4NCUgNDUlKSIsImhzbCgwIDg0JSA2NSUpIil9OwogICAgICB9CgogICAgICAuYXBwY29udGVudCB7CiAgICAgICAgei1pbmRleDogMTsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwcHg7CiAgICAgICAgcmlnaHQ6IDBweDsKICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDI0cHgpOwogICAgICAgIGJvdHRvbTogMjRweDsKICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gMjQwcHgpOwogICAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYmctc2Vjb25kYXJ5KTsKICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluOwogICAgICB9CgogICAgICAuYXBwY29udGVudDo6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICBwb3NpdGlvbjogc3RpY2t5OwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGhlaWdodDogOHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IC04cHg7CiAgICAgICAgei1pbmRleDogMTA7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KAogICAgICAgICAgdG8gYm90dG9tLAogICAgICAgICAgJHtoLmJkVGhlbWUoImhzbCgwIDAlIDAlIC8gMC4wOCkiLCJoc2woMCAwJSAwJSAvIDAuNCkiKX0sCiAgICAgICAgICAke2guYmRUaGVtZSgiaHNsKDAgMCUgMCUgLyAwLjAzKSIsImhzbCgwIDAlIDAlIC8gMC4xMikiKX0sCiAgICAgICAgICB0cmFuc3BhcmVudAogICAgICAgICk7CiAgICAgIH0KCiAgICAgIC5jb250cm9sYmFyOjpiZWZvcmUgewogICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IC04cHg7CiAgICAgICAgbGVmdDogMjQwcHg7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgaGVpZ2h0OiA4cHg7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KAogICAgICAgICAgdG8gdG9wLAogICAgICAgICAgJHtoLmJkVGhlbWUoImhzbCgwIDAlIDAlIC8gMC4wOCkiLCJoc2woMCAwJSAwJSAvIDAuNCkiKX0sCiAgICAgICAgICAke2guYmRUaGVtZSgiaHNsKDAgMCUgMCUgLyAwLjAzKSIsImhzbCgwIDAlIDAlIC8gMC4xMikiKX0sCiAgICAgICAgICB0cmFuc3BhcmVudAogICAgICAgICk7CiAgICAgIH0KCiAgICAgIC5jb250cm9sYmFyIHsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgYm90dG9tOiAwcHg7CiAgICAgICAgbGVmdDogMHB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMjRweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLWJnLXRlcnRpYXJ5KTsKICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tZGVlcy1jb2xvci1ib3JkZXItZGVmYXVsdCk7CiAgICAgICAgei1pbmRleDogMTE7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wMWVtOwogICAgICB9CgogICAgICAuY29udHJvbCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4OwogICAgICAgIHBhZGRpbmc6IDAgMTJweDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1zdHJvbmcpOwoKICAgICAgfQoKICAgICAgLmNvbnRyb2w6Zmlyc3QtY2hpbGQgewogICAgICAgIGJvcmRlci1sZWZ0OiBub25lOwogICAgICB9CgogICAgICAuY29udHJvbDpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1ob3Zlcik7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgfQoKICAgICAgLmNvbnRyb2wgZGVlcy1pY29uIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgIH0KCiAgICAgIC5jb250cm9sLnN0YXR1cy1jb25uZWN0ZWQgZGVlcy1pY29uIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgxNDIgNzAlIDM1JSkiLCJoc2woMTQyIDcwJSA1MCUpIil9OwogICAgICB9CgogICAgICAuY29udHJvbC5zdGF0dXMtdGVybWluYWwgZGVlcy1pY29uIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgzOCA5MiUgNDUlKSIsImhzbCgzOCA5MiUgNTUlKSIpfTsKICAgICAgfQoKICAgICAgLyogR2xvYmFsIE1lc3NhZ2UgQmFubmVycyAqLwogICAgICAubWVzc2FnZUJhbm5lckFyZWEgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMjQwcHg7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgei1pbmRleDogMzsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuMjVzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CiAgICAgIH0KCiAgICAgIC5tZXNzYWdlQmFubmVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgIHBhZGRpbmc6IDEwcHggMTZweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC1mYW1pbHk6ICdHZWlzdCBTYW5zJywgc2Fucy1zZXJpZjsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1kZWZhdWx0KTsKICAgICAgICBhbmltYXRpb246IGJhbm5lclNsaWRlRG93biAwLjI1cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGZvcndhcmRzOwogICAgICB9CgogICAgICAubWVzc2FnZUJhbm5lci5kaXNtaXNzaW5nIHsKICAgICAgICBhbmltYXRpb246IGJhbm5lclNsaWRlVXAgMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGZvcndhcmRzOwogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGJhbm5lclNsaWRlRG93biB7CiAgICAgICAgZnJvbSB7CiAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTsKICAgICAgICB9CiAgICAgICAgdG8gewogICAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMgYmFubmVyU2xpZGVVcCB7CiAgICAgICAgZnJvbSB7CiAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgICAgIH0KICAgICAgICB0byB7CiAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC5tZXNzYWdlQmFubmVyIGRlZXMtaWNvbiB7CiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAubWVzc2FnZUJhbm5lci10ZXh0IHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgLm1lc3NhZ2VCYW5uZXItYWN0aW9ucyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4OwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAubWVzc2FnZUJhbm5lci1hY3Rpb24gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDZweDsKICAgICAgICBwYWRkaW5nOiA0cHggMTJweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAxZW07CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMCUgLyAwLjA4KSIsImhzbCgwIDAlIDEwMCUgLyAwLjEpIil9OwogICAgICAgIGNvbG9yOiBpbmhlcml0OwogICAgICB9CgogICAgICAubWVzc2FnZUJhbm5lci1hY3Rpb246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAwJSAvIDAuMTUpIiwiaHNsKDAgMCUgMTAwJSAvIDAuMTgpIil9OwogICAgICB9CgogICAgICAubWVzc2FnZUJhbm5lci1hY3Rpb246YWN0aXZlIHsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTcpOwogICAgICB9CgogICAgICAubWVzc2FnZUJhbm5lci1hY3Rpb24gZGVlcy1pY29uIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgIH0KCiAgICAgIC5tZXNzYWdlQmFubmVyLWRpc21pc3MgewogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICB3aWR0aDogMjRweDsKICAgICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5tZXNzYWdlQmFubmVyLWRpc21pc3M6aG92ZXIgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgYmFja2dyb3VuZDogaHNsKDAgMCUgMCUgLyAwLjEpOwogICAgICB9CgogICAgICAvKiBNZXNzYWdlIHR5cGU6IGluZm8gKi8KICAgICAgLm1lc3NhZ2VCYW5uZXItaW5mbyB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgMTAwJSA5NyUpIiwiaHNsKDIxMCA1MCUgMTAlKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTAgNzAlIDMwJSkiLCJoc2woMjEwIDcwJSA4MCUpIil9OwogICAgICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgIzAwODRmZjsKICAgICAgfQogICAgICAubWVzc2FnZUJhbm5lci1pbmZvIGRlZXMtaWNvbiB7CiAgICAgICAgY29sb3I6ICMwMDg0ZmY7CiAgICAgIH0KCiAgICAgIC8qIE1lc3NhZ2UgdHlwZTogc3VjY2VzcyAqLwogICAgICAubWVzc2FnZUJhbm5lci1zdWNjZXNzIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDE0MiA3MCUgOTclKSIsImhzbCgxNDIgMzAlIDEwJSkiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMTQyIDUwJSAyNSUpIiwiaHNsKDE0MiA1MCUgODAlKSIpfTsKICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkICMyMmM1NWU7CiAgICAgIH0KICAgICAgLm1lc3NhZ2VCYW5uZXItc3VjY2VzcyBkZWVzLWljb24gewogICAgICAgIGNvbG9yOiAjMjJjNTVlOwogICAgICB9CgogICAgICAvKiBNZXNzYWdlIHR5cGU6IHdhcm5pbmcgKi8KICAgICAgLm1lc3NhZ2VCYW5uZXItd2FybmluZyB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgzOCA5MCUgOTclKSIsImhzbCgzOCA0MCUgMTAlKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgzOCA2MCUgMjUlKSIsImhzbCgzOCA2MCUgODAlKSIpfTsKICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkICNmNTllMGI7CiAgICAgIH0KICAgICAgLm1lc3NhZ2VCYW5uZXItd2FybmluZyBkZWVzLWljb24gewogICAgICAgIGNvbG9yOiAjZjU5ZTBiOwogICAgICB9CgogICAgICAvKiBNZXNzYWdlIHR5cGU6IGVycm9yICovCiAgICAgIC5tZXNzYWdlQmFubmVyLWVycm9yIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgNzAlIDk3JSkiLCJoc2woMCA0MCUgMTAlKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDYwJSAzMCUpIiwiaHNsKDAgNjAlIDgwJSkiKX07CiAgICAgICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCAjZWY0NDQ0OwogICAgICB9CiAgICAgIC5tZXNzYWdlQmFubmVyLWVycm9yIGRlZXMtaWNvbiB7CiAgICAgICAgY29sb3I6ICNlZjQ0NDQ7CiAgICAgIH0KCiAgICAgIC5tZXNzYWdlQmFubmVyLWRpc21pc3M6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAwJSAvIDAuMDgpIiwiaHNsKDAgMCUgMTAwJSAvIDAuMSkiKX07CiAgICAgIH0KCiAgICAgIC5hcHBjb250ZW50IHsKICAgICAgICB0b3A6IHZhcigtLWJhbm5lci1hcmVhLWhlaWdodCwgMHB4KTsKICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDI0cHggLSB2YXIoLS1iYW5uZXItYXJlYS1oZWlnaHQsIDBweCkpOwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0ibWFpbmNvbnRhaW5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iYXBwYmFyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItaGVhZGVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyLWljb24td3JhcHBlciI+CiAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0iJHsibHVjaWRlOmxheW91dEdyaWQifSI+PC9kZWVzLWljb24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhcHBOYW1lIj4ke3RoaXMubmFtZX08L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0idmlld1RhYnMtY29udGFpbmVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1sYWJlbCI+TmF2aWdhdGlvbjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2aWV3VGFicyI+CiAgICAgICAgICAgICAgJHt0aGlzLnZpZXdUYWJzLm1hcCgkPT57bGV0IEU9ISEkLnN1YlZpZXdzPy5sZW5ndGgsSD1FJiZ0aGlzLmlzR3JvdXBBY3RpdmUoJCk7cmV0dXJuIHdgCiAgICAgICAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgICAgICBjbGFzcz0idmlld1RhYiAke3RoaXMuc2VsZWN0ZWRWaWV3PT09JD8ic2VsZWN0ZWQiOiIifSAke0U/Imhhc1N1YnMiOiIifSAke0g/Imdyb3VwQWN0aXZlIjoiIn0iCiAgICAgICAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMubG9hZFZpZXcoJCl9CiAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAkeyQuaWNvbk5hbWU/d2AKICAgICAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249IiR7JC5pY29uTmFtZS5pbmNsdWRlcygiOiIpPyQuaWNvbk5hbWU6YGx1Y2lkZTokeyQuaWNvbk5hbWV9YH0iPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgICAgIGA6d2AKICAgICAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249IiR7Imx1Y2lkZTpmaWxlIn0iPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgICAgIGB9CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+JHskLm5hbWV9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICR7RT93YAogICAgICAgICAgICAgICAgICAgICAgPGRlZXMtaWNvbiBjbGFzcz0iY2hldnJvbiIgLmljb249IiR7Imx1Y2lkZTpjaGV2cm9uRG93biJ9Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgICAgICBgOiIifQogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgJHtFP3dgCiAgICAgICAgICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgICAgY2xhc3M9InN1YlZpZXdzICR7SD8iZXhwYW5kZWQiOiIifSIKICAgICAgICAgICAgICAgICAgICAgID9pbmVydD0keyFIfQogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1YlZpZXdzLWlubmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgJHskLnN1YlZpZXdzLm1hcChrPT53YAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0idmlld1RhYiBzdWIgJHt0aGlzLnNlbGVjdGVkVmlldz09PWs/InNlbGVjdGVkIjoiIn0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz0ke1M9PntTLnN0b3BQcm9wYWdhdGlvbigpLHRoaXMubG9hZFZpZXcoayl9fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2suaWNvbk5hbWU/d2AKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSIke2suaWNvbk5hbWUuaW5jbHVkZXMoIjoiKT9rLmljb25OYW1lOmBsdWNpZGU6JHtrLmljb25OYW1lfWB9Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYDp3YAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249IiR7Imx1Y2lkZTpkb3QifSI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPiR7ay5uYW1lfTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgIGApfQogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAgICAgICBgfSl9CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJhcHBBY3Rpb25zIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uIiBAY2xpY2s9JHsoKT0+e3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImxvZ291dCIse2J1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9fT4KICAgICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSIkeyJsdWNpZGU6bG9nT3V0In0iPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgIDxzcGFuPlNpZ24gb3V0PC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgICR7dGhpcy5fYWN0aXZlTWVzc2FnZXMubGVuZ3RoPjA/d2AKICAgICAgICA8ZGl2IGNsYXNzPSJtZXNzYWdlQmFubmVyQXJlYSI+CiAgICAgICAgICAke3RoaXMuX2FjdGl2ZU1lc3NhZ2VzLm1hcCgkPT53YAogICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgY2xhc3M9Im1lc3NhZ2VCYW5uZXIgbWVzc2FnZUJhbm5lci0keyQudHlwZX0iCiAgICAgICAgICAgICAgZGF0YS1tZXNzYWdlLWlkPSIkeyQuaWR9IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0iJHt0aGlzLmdldE1lc3NhZ2VJY29uKCQpfSI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1lc3NhZ2VCYW5uZXItdGV4dCI+JHskLm1lc3NhZ2V9PC9zcGFuPgogICAgICAgICAgICAgICR7JC5hY3Rpb25zPy5sZW5ndGg/d2AKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lc3NhZ2VCYW5uZXItYWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICR7JC5hY3Rpb25zLm1hcChFPT53YAogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lc3NhZ2VCYW5uZXItYWN0aW9uIiBAY2xpY2s9JHsoKT0+RS5hY3Rpb24oKX0+CiAgICAgICAgICAgICAgICAgICAgICAke0UuaWNvbk5hbWU/d2A8ZGVlcy1pY29uIC5pY29uPSIke0UuaWNvbk5hbWUuaW5jbHVkZXMoIjoiKT9FLmljb25OYW1lOmBsdWNpZGU6JHtFLmljb25OYW1lfWB9Ij48L2RlZXMtaWNvbj5gOiIifQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4+JHtFLm5hbWV9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICBgKX0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAgICAgJHskLmRpc21pc3NpYmxlIT09ITE/d2AKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lc3NhZ2VCYW5uZXItZGlzbWlzcyIgQGNsaWNrPSR7KCk9PnRoaXMucmVtb3ZlTWVzc2FnZSgkLmlkKX0+CiAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249IiR7Imx1Y2lkZTp4In0iPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgYDoiIn0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgKX0KICAgICAgICA8L2Rpdj4KICAgICAgYDoiIn0KICAgICAgICA8ZGl2IGNsYXNzPSJhcHBjb250ZW50Ij4KICAgICAgICAgIDwhLS0gQ29udGVudCBnb2VzIGhlcmUgLS0+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbGJhciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9sIHN0YXR1cy1jb25uZWN0ZWQiPgogICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSIkeyJsdWNpZGU6d2lmaSJ9Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgPHNwYW4+Q29ubmVjdGVkPC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9sIHN0YXR1cy10ZXJtaW5hbCIgQGNsaWNrPSR7dGhpcy5sYXVuY2hUZXJtaW5hbH0+CiAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249IiR7Imx1Y2lkZTp0ZXJtaW5hbCJ9Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgPHNwYW4+VGVybWluYWw8L3NwYW4+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfWFzeW5jIGZpcnN0VXBkYXRlZCgkKXtsZXQgRT1hd2FpdCB0aGlzLmRvbXRvb2xzUHJvbWlzZTtpZihzdXBlci5maXJzdFVwZGF0ZWQoJCksdGhpcy52aWV3VGFicyYmdGhpcy52aWV3VGFicy5sZW5ndGg+MCl7bGV0IEg9dGhpcy5zZWxlY3RlZFZpZXd8fHRoaXMudmlld1RhYnNbMF07YXdhaXQgdGhpcy5sb2FkVmlldyhIKX19d2lsbFVwZGF0ZSgkKXtpZigkLmhhcygiZ2xvYmFsTWVzc2FnZXMiKSl7bGV0IEU9bmV3IFNldCh0aGlzLmdsb2JhbE1lc3NhZ2VzLm1hcChSPT5SLmlkKSksSD1uZXcgU2V0KHRoaXMuX2FjdGl2ZU1lc3NhZ2VzLm1hcChSPT5SLmlkKSksaz10aGlzLmdsb2JhbE1lc3NhZ2VzLmZpbHRlcihSPT4hSC5oYXMoUi5pZCkpLFM9JC5nZXQoImdsb2JhbE1lc3NhZ2VzIil8fFtdLEk9bmV3IFNldChTLm1hcChSPT5SLmlkKSksUD1uZXcgU2V0KFsuLi5JXS5maWx0ZXIoUj0+IUUuaGFzKFIpKSk7dGhpcy5fYWN0aXZlTWVzc2FnZXM9Wy4uLnRoaXMuX2FjdGl2ZU1lc3NhZ2VzLmZpbHRlcihSPT4hUC5oYXMoUi5pZCkpLC4uLmtdfX11cGRhdGVkKCQpe3N1cGVyLnVwZGF0ZWQoJCksdGhpcy51cGRhdGVCYW5uZXJPZmZzZXQoKX11cGRhdGVCYW5uZXJPZmZzZXQoKXtyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntsZXQgJD10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5tZXNzYWdlQmFubmVyQXJlYSIpLEU9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIubWFpbmNvbnRhaW5lciIpLEg9JD8kLm9mZnNldEhlaWdodDowO0U/LnN0eWxlLnNldFByb3BlcnR5KCItLWJhbm5lci1hcmVhLWhlaWdodCIsYCR7SH1weGApfSl9Z2V0TWVzc2FnZUljb24oJCl7cmV0dXJuICQuaWNvbj8kLmljb246e2luZm86Imx1Y2lkZTppbmZvIixzdWNjZXNzOiJsdWNpZGU6Y2lyY2xlQ2hlY2siLHdhcm5pbmc6Imx1Y2lkZTp0cmlhbmdsZUFsZXJ0IixlcnJvcjoibHVjaWRlOmNpcmNsZVgifVskLnR5cGVdfWFkZE1lc3NhZ2UoJCl7bGV0IEU9JC5pZHx8YG1zZy0ke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsOSl9YCxIPXtkaXNtaXNzaWJsZTohMCwuLi4kLGlkOkV9O3JldHVybiB0aGlzLl9hY3RpdmVNZXNzYWdlcz1bLi4udGhpcy5fYWN0aXZlTWVzc2FnZXMsSF0sRX1yZW1vdmVNZXNzYWdlKCQpe2xldCBFPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihgW2RhdGEtbWVzc2FnZS1pZD0iJHskfSJdYCk7RT8oRS5jbGFzc0xpc3QuYWRkKCJkaXNtaXNzaW5nIiksRS5hZGRFdmVudExpc3RlbmVyKCJhbmltYXRpb25lbmQiLCgpPT57dGhpcy5fYWN0aXZlTWVzc2FnZXM9dGhpcy5fYWN0aXZlTWVzc2FnZXMuZmlsdGVyKEg9PkguaWQhPT0kKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJtZXNzYWdlLWRpc21pc3MiLHtkZXRhaWw6e2lkOiR9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9LHtvbmNlOiEwfSkpOnRoaXMuX2FjdGl2ZU1lc3NhZ2VzPXRoaXMuX2FjdGl2ZU1lc3NhZ2VzLmZpbHRlcihIPT5ILmlkIT09JCl9Y2xlYXJNZXNzYWdlcygpe3RoaXMuX2FjdGl2ZU1lc3NhZ2VzPVtdfWN1cnJlbnRUZXJtaW5hbD0ocGModGhpcyxfKSxudWxsKTthc3luYyBsYXVuY2hUZXJtaW5hbCgpe2xldCAkPWF3YWl0IHRoaXMuZG9tdG9vbHNQcm9taXNlO2lmKHRoaXMuY3VycmVudFRlcm1pbmFsKXthd2FpdCB0aGlzLmNsb3NlVGVybWluYWwoKTtyZXR1cm59bGV0IEU9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5tYWluY29udGFpbmVyIikse0RlZXNXb3Jrc3BhY2VUZXJtaW5hbDpIfT1hd2FpdCBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4odUooKSxyU2EpKSxrPW5ldyBIO3JldHVybiBrLnNldHVwQ29tbWFuZD10aGlzLnRlcm1pbmFsU2V0dXBDb21tYW5kLHRoaXMuY3VycmVudFRlcm1pbmFsPWssRS5hcHBlbmRDaGlsZChrKSxrLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsay5zdHlsZS56SW5kZXg9IjEwIixrLnN0eWxlLnRvcD0idmFyKC0tYmFubmVyLWFyZWEtaGVpZ2h0LCAwcHgpIixrLnN0eWxlLmxlZnQ9IjI0MHB4IixrLnN0eWxlLnJpZ2h0PSIwcHgiLGsuc3R5bGUuaGVpZ2h0PSJhdXRvIixrLnN0eWxlLmJvdHRvbT0iMjRweCIsay5zdHlsZS5vcGFjaXR5PSIwIixrLnN0eWxlLnRyYW5zZm9ybT0idHJhbnNsYXRlWSg4cHgpIHNjYWxlKDAuOTkpIixrLnN0eWxlLnRyYW5zaXRpb249ImFsbCAwLjI1cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIixrLnN0eWxlLmJveFNoYWRvdz0iMCAyNXB4IDUwcHggLTEycHggcmdiKDAgMCAwIC8gMC41KSwgMCAwIDAgMXB4IHJnYigyNTUgMjU1IDI1NSAvIDAuMDUpIixrLmFkZEV2ZW50TGlzdGVuZXIoImNsb3NlIiwoKT0+dGhpcy5jbG9zZVRlcm1pbmFsKCkpLGF3YWl0ICQuY29udmVuaWVuY2Uuc21hcnRkZWxheS5kZWxheUZvcigwKSxrLnN0eWxlLm9wYWNpdHk9IjEiLGsuc3R5bGUudHJhbnNmb3JtPSJ0cmFuc2xhdGVZKDApIHNjYWxlKDEpIixrfWFzeW5jIGNsb3NlVGVybWluYWwoKXtsZXQgJD1hd2FpdCB0aGlzLmRvbXRvb2xzUHJvbWlzZTt0aGlzLmN1cnJlbnRUZXJtaW5hbCYmKHRoaXMuY3VycmVudFRlcm1pbmFsLnN0eWxlLm9wYWNpdHk9IjAiLHRoaXMuY3VycmVudFRlcm1pbmFsLnN0eWxlLnRyYW5zZm9ybT0idHJhbnNsYXRlWSg4cHgpIHNjYWxlKDAuOTkpIixhd2FpdCAkLmNvbnZlbmllbmNlLnNtYXJ0ZGVsYXkuZGVsYXlGb3IoMjUwKSx0aGlzLmN1cnJlbnRUZXJtaW5hbC5yZW1vdmUoKSx0aGlzLmN1cnJlbnRUZXJtaW5hbD1udWxsKX1pc0dyb3VwQWN0aXZlKCQpe3JldHVybiB0aGlzLnNlbGVjdGVkVmlldz09PSQ/ITA6JC5zdWJWaWV3cz8uc29tZShFPT5FPT09dGhpcy5zZWxlY3RlZFZpZXcpPz8hMX1jdXJyZW50Vmlldzthc3luYyBsb2FkVmlldygkKXtpZighJC5lbGVtZW50JiYkLnN1YlZpZXdzPy5sZW5ndGgpe2xldCBrPSQuc3ViVmlld3MuZmluZChTPT5TLmVsZW1lbnQpO3JldHVybiBrP3RoaXMubG9hZFZpZXcoayk6dm9pZCAwfWlmKCEkLmVsZW1lbnQpcmV0dXJuO2xldCBFPXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIuYXBwY29udGVudCIpLEg9bmV3ICQuZWxlbWVudDt0aGlzLmN1cnJlbnRWaWV3JiZ0aGlzLmN1cnJlbnRWaWV3LnJlbW92ZSgpLEUuYXBwZW5kQ2hpbGQoSCksdGhpcy5jdXJyZW50Vmlldz1ILHRoaXMuc2VsZWN0ZWRWaWV3PSQsdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgidmlldy1zZWxlY3QiLHtkZXRhaWw6e3ZpZXc6JH0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1zdGF0aWN7cGMoYSx0KX19O3JldHVybiBPPWF9KSgpfSk7dmFyIHBTYT1nKCgpPT57dVNhKCl9KTt2YXIgaFNhLGZTYT1nKCgpPT57cGUoKTtoU2E9aSgoKT0+d2AKICA8c3R5bGU+CiAgICBib2R5IHsKICAgICAgbWFyZ2luOiAwOwogICAgICBwYWRkaW5nOiAwOwogICAgfQogICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGhlaWdodDogMTAwJTsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB0b3A6IDA7CiAgICAgIGxlZnQ6IDA7CiAgICB9CiAgPC9zdHlsZT4KICA8ZGl2IGNsYXNzPSJkZW1vLWNvbnRhaW5lciI+CiAgICA8ZGVlcy1zaW1wbGUtbG9naW4gCiAgICAgIG5hbWU9Ik15IEFwcGxpY2F0aW9uIgogICAgICBAbG9naW49JHtzPT57Y29uc29sZS5sb2coIkxvZ2luIGV2ZW50IHJlY2VpdmVkOiIscy5kZXRhaWwpO2xldCBlPXMuZGV0YWlsPy5kYXRhfHxzLmRldGFpbDtlPy51c2VybmFtZSYmZT8ucGFzc3dvcmQ/YWxlcnQoYExvZ2luIGF0dGVtcHRlZCB3aXRoOgpVc2VybmFtZTogJHtlLnVzZXJuYW1lfQpQYXNzd29yZDogJHtlLnBhc3N3b3JkfWApOmNvbnNvbGUuZXJyb3IoIkludmFsaWQgbG9naW4gZGF0YSBzdHJ1Y3R1cmU6IixzLmRldGFpbCl9fQogICAgPgogICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nOiA0MHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij4KICAgICAgICA8aDE+V2VsY29tZSE8L2gxPgogICAgICAgIDxwPlRoaXMgaXMgdGhlIHNsb3R0ZWQgY29udGVudCB0aGF0IGFwcGVhcnMgYWZ0ZXIgbG9naW4uPC9wPgogICAgICA8L2Rpdj4KICAgIDwvZGVlcy1zaW1wbGUtbG9naW4+CiAgPC9kaXY+CmAsImRlbW9GdW5jIil9KTt2YXIgbVNhLCRsdCxydHMsZ1NhPWcoKCk9PntmU2EoKTtwZSgpO2h0KCk7bXIoKTttU2E9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LCRsdD1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0scnRzPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1zaW1wbGUtbG9naW4iKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXTt2YXIgcD1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1NpbXBsZUxvZ2luIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCgpXSxtU2EodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJuYW1lIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHU9PiJuYW1lImluIHUsImhhcyIpLGdldDppKHU9PnUubmFtZSwiZ2V0Iiksc2V0OmkoKHUsYyk9Pnt1Lm5hbWU9Y30sInNldCIpfSxtZXRhZGF0YTpkfSxvLGwpLG1TYShudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpkfSxudWxsLHQpLHA9YT1lLnZhbHVlLGQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZH0pfXN0YXRpYyBkZW1vPWhTYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIlNpbXBsZSJdOyNlPSRsdCh0aGlzLG8sIkFwcGxpY2F0aW9uIik7Z2V0IG5hbWUoKXtyZXR1cm4gdGhpcy4jZX1zZXQgbmFtZShkKXt0aGlzLiNlPWR9c3RhdGljIHN0eWxlcz1bcWUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBmb250LWZhbWlseTogJ0dlaXN0IFNhbnMnLCBzYW5zLXNlcmlmOwogICAgICB9CgogICAgICAubG9naW5Db250YWluZXIgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItYmctcHJpbWFyeSk7CiAgICAgIH0KCiAgICAgIC5zbG90Q29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2UsIHRyYW5zZm9ybSAwLjJzIGVhc2U7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5sb2dpbiB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWF4LXdpZHRoOiAzNjBweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiAyNHB4OwogICAgICB9CgogICAgICAubG9naW4taGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICB9CgogICAgICAuaGVhZGVyIHsKICAgICAgICBmb250LXNpemU6IDI0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDI1ZW07CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsKICAgICAgfQoKICAgICAgLnN1YmhlYWRlciB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICB9CgogICAgICBkZWVzLXRpbGUgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICBkZWVzLXRpbGU6OnBhcnQoY29udGVudCkgewogICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgIH0KCiAgICAgIGRlZXMtdGlsZSBkZWVzLWZvcm0gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDE2cHg7CiAgICAgIH0KCiAgICAgIGRlZXMtdGlsZSBkZWVzLWlucHV0LXRleHQgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICBkZWVzLXRpbGUgZGVlcy1mb3JtLXN1Ym1pdCB7CiAgICAgICAgbWFyZ2luLXRvcDogOHB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0ibG9naW5Db250YWluZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImxvZ2luIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ2luLWhlYWRlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+U2lnbiBpbjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWJoZWFkZXIiPkVudGVyIHlvdXIgY3JlZGVudGlhbHMgdG8gYWNjZXNzICR7dGhpcy5uYW1lfTwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGVlcy10aWxlIC5oZWFkaW5nPSR7IkNyZWRlbnRpYWxzIn0+CiAgICAgICAgICAgIDxkZWVzLWZvcm0+CiAgICAgICAgICAgICAgPGRlZXMtaW5wdXQtdGV4dCBrZXk9InVzZXJuYW1lIiBsYWJlbD0iVXNlcm5hbWUiIHJlcXVpcmVkPjwvZGVlcy1pbnB1dC10ZXh0PgogICAgICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQga2V5PSJwYXNzd29yZCIgbGFiZWw9IlBhc3N3b3JkIiBpc1Bhc3N3b3JkQm9vbCByZXF1aXJlZD48L2RlZXMtaW5wdXQtdGV4dD4KICAgICAgICAgICAgICA8ZGVlcy1mb3JtLXN1Ym1pdD5TaWduIGluPC9kZWVzLWZvcm0tc3VibWl0PgogICAgICAgICAgICA8L2RlZXMtZm9ybT4KICAgICAgICAgIDwvZGVlcy10aWxlPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ic2xvdENvbnRhaW5lciI+CiAgICAgICAgPHNsb3Q+PC9zbG90PgogICAgICA8L2Rpdj4KICAgIGB9YXN5bmMgZmlyc3RVcGRhdGVkKGQpe3N1cGVyLmZpcnN0VXBkYXRlZChkKTtsZXQgdT10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiZGVlcy1mb3JtIik7dSYmdS5hZGRFdmVudExpc3RlbmVyKCJmb3JtRGF0YSIsKGM9Pnt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJsb2dpbiIse2RldGFpbDpjLmRldGFpbCxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfSkpfWFzeW5jIHN3aXRjaFRvU2xvdHRlZENvbnRlbnQoKXtsZXQgZD1hd2FpdCB0aGlzLmRvbXRvb2xzUHJvbWlzZSx1PXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIubG9naW4iKSxjPXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIubG9naW5Db250YWluZXIiKSxiPXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIuc2xvdENvbnRhaW5lciIpO3Uuc3R5bGUub3BhY2l0eT0iMCIsdS5zdHlsZS50cmFuc2Zvcm09InRyYW5zbGF0ZVkoMjBweCkiLGMuc3R5bGUucG9pbnRlckV2ZW50cz0ibm9uZSIsYi5zdHlsZS50cmFuc2Zvcm09InRyYW5zbGF0ZVkoMjBweCkiLGF3YWl0IGQuY29udmVuaWVuY2Uuc21hcnRkZWxheS5kZWxheUZvcigzMDApLGIuc3R5bGUub3BhY2l0eT0iMSIsYi5zdHlsZS50cmFuc2Zvcm09InRyYW5zbGF0ZVkoMHB4KSIsYXdhaXQgZC5jb252ZW5pZW5jZS5zbWFydGRlbGF5LmRlbGF5Rm9yKDMwMCksYi5zdHlsZS5wb2ludGVyRXZlbnRzPSJhbGwifWNvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSwkbHQodGhpcyxsKX1zdGF0aWN7JGx0KGEsdCl9fTtyZXR1cm4gcD1hfSkoKX0pO3ZhciBiU2E9ZygoKT0+e2dTYSgpfSk7dmFyIHZTYT1nKCgpPT57c1NhKCk7cFNhKCk7YlNhKCl9KTt2YXIgeFNhPWcoKCk9PntHYSgpfSk7dmFyIHlTYSx3U2E9ZygoKT0+e3BlKCk7eVNhPWkoKCk9PndgCiAgICA8c3R5bGU+CiAgICAgIC5kZW1vV3JhcHBlciB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIAogICAgICAgIGJhY2tncm91bmQ6ICM4ODg4ODg7CiAgICAgIH0KICAgICAgLmxvZ3MgewogICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgd2lkdGg6IDYwMHB4OwogICAgICAgIGNvbG9yOiAjZmZmOwogICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgICAgIH0KICAgICAgLmxvZ3MgZGl2IHsKICAgICAgICBtYXJnaW46IDRweCAwOwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPGRpdiBjbGFzcz0iZGVtb1dyYXBwZXIiPgogICAgICA8ZGVlcy1zZWFyY2hiYXIKICAgICAgICBAc2VhcmNoLWNoYW5nZWQ9JHtpKHQ9PntsZXQgcj10LnRhcmdldC5jbG9zZXN0KCIuZGVtb1dyYXBwZXIiKT8ucXVlcnlTZWxlY3RvcigiI2NoYW5nZWQiKTtyJiYoci50ZXh0Q29udGVudD1gc2VhcmNoLWNoYW5nZWQ6ICR7dC5kZXRhaWwudmFsdWV9YCl9LCJvbkNoYW5nZWQiKX0KICAgICAgICBAc2VhcmNoLXN1Ym1pdD0ke2kodD0+e2xldCByPXQudGFyZ2V0LmNsb3Nlc3QoIi5kZW1vV3JhcHBlciIpPy5xdWVyeVNlbGVjdG9yKCIjc3VibWl0dGVkIik7ciYmKHIudGV4dENvbnRlbnQ9YHNlYXJjaC1zdWJtaXQ6ICR7dC5kZXRhaWwudmFsdWV9YCl9LCJvblN1Ym1pdCIpfQogICAgICA+PC9kZWVzLXNlYXJjaGJhcj4KICAgICAgPGRpdiBjbGFzcz0ibG9ncyI+CiAgICAgICAgPGRpdiBpZD0iY2hhbmdlZCI+c2VhcmNoLWNoYW5nZWQ6PC9kaXY+CiAgICAgICAgPGRpdiBpZD0ic3VibWl0dGVkIj5zZWFyY2gtc3VibWl0OjwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIGAsImRlbW9GdW5jIil9KTt2YXIga1NhLERsdCxvdHMsU1NhPWcoKCk9PntwZSgpO3cyKCk7d1NhKCk7aHQoKTtrU2E9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LERsdD1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sb3RzPSgoKT0+e2xldCBzPVtuZSgiZGVlcy1zZWFyY2hiYXIiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXTt2YXIgcD1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1NlYXJjaGJhciIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBkPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woKV0sa1NhKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZmlsdGVycyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh1PT4iZmlsdGVycyJpbiB1LCJoYXMiKSxnZXQ6aSh1PT51LmZpbHRlcnMsImdldCIpLHNldDppKCh1LGMpPT57dS5maWx0ZXJzPWN9LCJzZXQiKX0sbWV0YWRhdGE6ZH0sbyxsKSxrU2EobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6ZH0sbnVsbCx0KSxwPWE9ZS52YWx1ZSxkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmR9KX1zdGF0aWMgZGVtbz15U2E7c3RhdGljIGRlbW9Hcm91cHM9WyJVdGlsaXR5Il07c3RhdGljIHN0eWxlcz1bcWUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIC8qIFRPRE86IE1pZ3JhdGUgaGFyZGNvZGVkIHZhbHVlcyB0byAtLWRlZXMtKiBDU1MgdmFyaWFibGVzICovCiAgICAgIDpob3N0IHsKICAgICAgICBwYWRkaW5nOiA0MHB4OwogICAgICAgIGZvbnQtZmFtaWx5OiBEZWVzIFNhbnM7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNlZWVlZWIiLCIjMDAwMDAwIil9OwogICAgICB9CgogICAgICAuc2VhcmNoYm94Q29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgbWFyZ2luOiBhdXRvOwogICAgICAgIG1heC13aWR0aDogODAwcHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiMwMDAwMDAxNSIsIiNmZmZmZmYxNSIpfTsKICAgICAgICAtLWJveEhlaWdodDogNjBweDsKICAgICAgICBoZWlnaHQ6IHZhcigtLWJveEhlaWdodCk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm94SGVpZ2h0KTsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDE0MHB4OwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjMDAwMDAwMTUiLCIjZmZmZmZmMjAiKX07CiAgICAgIH0KCiAgICAgIGlucHV0IHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGJhY2tncm91bmQ6IG5vbmU7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDAwMDAwIiwiI2VlZWVlYiIpfTsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDI1cHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAtOHB4OwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICB9CgogICAgICAuc2VhcmNoQnV0dG9uIHsKICAgICAgICAtLWJ1dHRvblBhZGRpbmc6IDhweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2VlZWVlYiIsIiMwMDAwMDAiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDAwMDAwIiwiI2VlZWVlYiIpfTsKICAgICAgICBsaW5lLWhlaWdodDogY2FsYyh2YXIoLS1ib3hIZWlnaHQpIC0gKHZhcigtLWJ1dHRvblBhZGRpbmcpICogMikpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJveEhlaWdodCk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKSA7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJTsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgCiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMXMsIGJhY2tncm91bmQgMC4xczsKICAgICAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLWJ1dHRvblBhZGRpbmcpOwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICB9CgogICAgICAuc2VhcmNoQnV0dG9uOmhvdmVyIHsKICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZShyNC5ibHVlLGk0LmJsdWUpfTsKICAgICAgfQoKICAgICAgLnNlYXJjaEJ1dHRvbjphY3RpdmUgewogICAgICAgIGNvbG9yOiAjZmZmOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKHI0LmJsdWVBY3RpdmUsaTQuYmx1ZUFjdGl2ZSl9OwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45OCk7CiAgICAgIH0KCiAgICAgIC5maWx0ZXJzIHsKICAgICAgICBtYXJnaW46IGF1dG87CiAgICAgICAgbWF4LXdpZHRoOiA4MDBweDsKICAgICAgfQogICAgYF07I2U9RGx0KHRoaXMsbyxbXSk7Z2V0IGZpbHRlcnMoKXtyZXR1cm4gdGhpcy4jZX1zZXQgZmlsdGVycyhkKXt0aGlzLiNlPWR9c2VhcmNoSW5wdXQ9RGx0KHRoaXMsbCk7c2VhcmNoQnV0dG9uO2NvbnN0cnVjdG9yKCl7c3VwZXIoKX1yZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0ic2VhcmNoYm94Q29udGFpbmVyIj4KICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IllvdXIgU2tpbGxzIChlLmcuIFR5cGVTY3JpcHQsIFJ1c3QsIFByb2plY3RtYW5hZ2VtZW50KSIgLz4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWFyY2hCdXR0b24iPlNlYXJjaCAtPjwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgJHt0aGlzLmZpbHRlcnMubGVuZ3RoPjA/d2AKICAgICAgICA8ZGl2IGNsYXNzPSJmaWx0ZXJzIj4KICAgICAgICA8ZGVlcy1oZWFkaW5nIGxldmVsPSJoci1zbWFsbCI+RmlsdGVyczwvZGVlcy1oZWFkaW5nPgogICAgICAgIDxkZWVzLWlucHV0LWRyb3Bkb3duIC5sYWJlbD0keyJsb2NhdGlvbiJ9PjwvZGVlcy1pbnB1dC1kcm9wZG93bj4KICAgICAgPC9kaXY+ICAKICAgICAgYDp3YGB9CiAgICBgfWZpcnN0VXBkYXRlZCgpe3RoaXMuc2VhcmNoSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCgpPT57dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgic2VhcmNoLWNoYW5nZWQiLHtidWJibGVzOiEwLGNvbXBvc2VkOiEwLGRldGFpbDp7dmFsdWU6dGhpcy5zZWFyY2hJbnB1dC52YWx1ZX19KSl9KSx0aGlzLnNlYXJjaElucHV0LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLGQ9PntkLmtleT09PSJFbnRlciImJnRoaXMuX2Rpc3BhdGNoU3VibWl0KCl9KSx0aGlzLnNlYXJjaEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PnRoaXMuX2Rpc3BhdGNoU3VibWl0KCkpfV9kaXNwYXRjaFN1Ym1pdCgpe3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInNlYXJjaC1zdWJtaXQiLHtidWJibGVzOiEwLGNvbXBvc2VkOiEwLGRldGFpbDp7dmFsdWU6dGhpcy5zZWFyY2hJbnB1dC52YWx1ZX19KSl9c3RhdGlje0RsdChhLHQpfX07cmV0dXJuIHA9YX0pKCl9KTt2YXIgX1NhPWcoKCk9PntTU2EoKX0pO3ZhciBNU2EselNhPWcoKCk9PntwZSgpO01TYT1pKCgpPT53YAogIDxzdHlsZT4KICAgIC5kZW1vLWNvbnRhaW5lciB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgIGdhcDogMzJweDsKICAgICAgcGFkZGluZzogNDhweDsKICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmOGY5ZmEiLCIjMGEwYTBhIil9OwogICAgICBtaW4taGVpZ2h0OiAxMDB2aDsKICAgIH0KCiAgICAuc2VjdGlvbiB7CiAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzE4MTgxYiIpfTsKICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMjcyNzJhIil9OwogICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICB9CgogICAgLnNlY3Rpb24tdGl0bGUgewogICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzA5MDkwYiIsIiNmYWZhZmEiKX07CiAgICB9CgogICAgLnNlY3Rpb24tZGVzY3JpcHRpb24gewogICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICB9CgogICAgLnRva2VuLWdyaWQgewogICAgICBkaXNwbGF5OiBncmlkOwogICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgyMDBweCwgMWZyKSk7CiAgICAgIGdhcDogMTZweDsKICAgIH0KCiAgICAudG9rZW4taXRlbSB7CiAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzI3MjcyYSIpfTsKICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICBwYWRkaW5nOiAxNnB4OwogICAgfQoKICAgIC50b2tlbi1uYW1lIHsKICAgICAgZm9udC1mYW1pbHk6ICdJbnRlbCBPbmUgTW9ubycsIG1vbm9zcGFjZTsKICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICB9CgogICAgLnRva2VuLXZhbHVlIHsKICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICBmb250LXdlaWdodDogNTAwOwogICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTA5MGIiLCIjZmFmYWZhIil9OwogICAgfQoKICAgIC5zcGFjaW5nLWRlbW8gewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7CiAgICAgIGdhcDogOHB4OwogICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICB9CgogICAgLnNwYWNpbmctYm94IHsKICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiMzYjgyZjYiLCIjM2I4MmY2Iil9OwogICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICB9CgogICAgLnJhZGl1cy1kZW1vIHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZ2FwOiAxNnB4OwogICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICB9CgogICAgLnJhZGl1cy1ib3ggewogICAgICB3aWR0aDogNjBweDsKICAgICAgaGVpZ2h0OiA2MHB4OwogICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiIzNiODJmNiIsIiMzYjgyZjYiKX07CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICBjb2xvcjogd2hpdGU7CiAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIH0KCiAgICAuc2hhZG93LWRlbW8gewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBnYXA6IDI0cHg7CiAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIH0KCiAgICAuc2hhZG93LWJveCB7CiAgICAgIHdpZHRoOiAxMDBweDsKICAgICAgaGVpZ2h0OiAxMDBweDsKICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMjcyNzJhIil9OwogICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICBmb250LXNpemU6IDEycHg7CiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICB9CgogICAgLmhlaWdodC1kZW1vIHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZ2FwOiAxNnB4OwogICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7CiAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIH0KCiAgICAuaGVpZ2h0LWJveCB7CiAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzNiODJmNiIpfTsKICAgICAgd2lkdGg6IDEyMHB4OwogICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICBjb2xvcjogd2hpdGU7CiAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIH0KICA8L3N0eWxlPgogIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgIDxkZWVzLXRoZW1lPgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5TcGFjaW5nIFNjYWxlPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1kZXNjcmlwdGlvbiI+CiAgICAgICAgICBDU1MgdmFyaWFibGVzOiAtLWRlZXMtc3BhY2luZy14cyB0aHJvdWdoIC0tZGVlcy1zcGFjaW5nLTN4bAogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNwYWNpbmctZGVtbyI+CiAgICAgICAgICA8ZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFjaW5nLWJveCIgc3R5bGU9IndpZHRoOiB2YXIoLS1kZWVzLXNwYWNpbmcteHMpOyBoZWlnaHQ6IHZhcigtLWRlZXMtc3BhY2luZy14cyk7Ij48L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9rZW4tbmFtZSI+eHMgKDRweCk8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhY2luZy1ib3giIHN0eWxlPSJ3aWR0aDogdmFyKC0tZGVlcy1zcGFjaW5nLXNtKTsgaGVpZ2h0OiB2YXIoLS1kZWVzLXNwYWNpbmctc20pOyI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRva2VuLW5hbWUiPnNtICg4cHgpPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYWNpbmctYm94IiBzdHlsZT0id2lkdGg6IHZhcigtLWRlZXMtc3BhY2luZy1tZCk7IGhlaWdodDogdmFyKC0tZGVlcy1zcGFjaW5nLW1kKTsiPjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2tlbi1uYW1lIj5tZCAoMTJweCk8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhY2luZy1ib3giIHN0eWxlPSJ3aWR0aDogdmFyKC0tZGVlcy1zcGFjaW5nLWxnKTsgaGVpZ2h0OiB2YXIoLS1kZWVzLXNwYWNpbmctbGcpOyI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRva2VuLW5hbWUiPmxnICgxNnB4KTwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFjaW5nLWJveCIgc3R5bGU9IndpZHRoOiB2YXIoLS1kZWVzLXNwYWNpbmcteGwpOyBoZWlnaHQ6IHZhcigtLWRlZXMtc3BhY2luZy14bCk7Ij48L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9rZW4tbmFtZSI+eGwgKDI0cHgpPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYWNpbmctYm94IiBzdHlsZT0id2lkdGg6IHZhcigtLWRlZXMtc3BhY2luZy0yeGwpOyBoZWlnaHQ6IHZhcigtLWRlZXMtc3BhY2luZy0yeGwpOyI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRva2VuLW5hbWUiPjJ4bCAoMzJweCk8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhY2luZy1ib3giIHN0eWxlPSJ3aWR0aDogdmFyKC0tZGVlcy1zcGFjaW5nLTN4bCk7IGhlaWdodDogdmFyKC0tZGVlcy1zcGFjaW5nLTN4bCk7Ij48L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9rZW4tbmFtZSI+M3hsICg0OHB4KTwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+Qm9yZGVyIFJhZGl1cyBTY2FsZTwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tZGVzY3JpcHRpb24iPgogICAgICAgICAgQ1NTIHZhcmlhYmxlczogLS1kZWVzLXJhZGl1cy14cyB0aHJvdWdoIC0tZGVlcy1yYWRpdXMtZnVsbAogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InJhZGl1cy1kZW1vIj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJhZGl1cy1ib3giIHN0eWxlPSJib3JkZXItcmFkaXVzOiB2YXIoLS1kZWVzLXJhZGl1cy14cyk7Ij54czwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2tlbi1uYW1lIj4ycHg8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icmFkaXVzLWJveCIgc3R5bGU9ImJvcmRlci1yYWRpdXM6IHZhcigtLWRlZXMtcmFkaXVzLXNtKTsiPnNtPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRva2VuLW5hbWUiPjRweDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyYWRpdXMtYm94IiBzdHlsZT0iYm9yZGVyLXJhZGl1czogdmFyKC0tZGVlcy1yYWRpdXMtbWQpOyI+bWQ8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9rZW4tbmFtZSI+NnB4PC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJhZGl1cy1ib3giIHN0eWxlPSJib3JkZXItcmFkaXVzOiB2YXIoLS1kZWVzLXJhZGl1cy1sZyk7Ij5sZzwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2tlbi1uYW1lIj44cHg8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icmFkaXVzLWJveCIgc3R5bGU9ImJvcmRlci1yYWRpdXM6IHZhcigtLWRlZXMtcmFkaXVzLXhsKTsiPnhsPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRva2VuLW5hbWUiPjEycHg8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icmFkaXVzLWJveCIgc3R5bGU9ImJvcmRlci1yYWRpdXM6IHZhcigtLWRlZXMtcmFkaXVzLWZ1bGwpOyI+ZnVsbDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2tlbi1uYW1lIj45OTlweDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+U2hhZG93IEVsZXZhdGlvbiBTY2FsZTwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tZGVzY3JpcHRpb24iPgogICAgICAgICAgQ1NTIHZhcmlhYmxlczogLS1kZWVzLXNoYWRvdy14cyB0aHJvdWdoIC0tZGVlcy1zaGFkb3ctbGcKICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzaGFkb3ctZGVtbyI+CiAgICAgICAgICA8ZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaGFkb3ctYm94IiBzdHlsZT0iYm94LXNoYWRvdzogdmFyKC0tZGVlcy1zaGFkb3cteHMpOyI+eHM8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9rZW4tbmFtZSI+bWluaW1hbDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaGFkb3ctYm94IiBzdHlsZT0iYm94LXNoYWRvdzogdmFyKC0tZGVlcy1zaGFkb3ctc20pOyI+c208L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9rZW4tbmFtZSI+c3VidGxlPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNoYWRvdy1ib3giIHN0eWxlPSJib3gtc2hhZG93OiB2YXIoLS1kZWVzLXNoYWRvdy1tZCk7Ij5tZDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2tlbi1uYW1lIj5tZWRpdW08L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2hhZG93LWJveCIgc3R5bGU9ImJveC1zaGFkb3c6IHZhcigtLWRlZXMtc2hhZG93LWxnKTsiPmxnPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRva2VuLW5hbWUiPnByb21pbmVudDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+Q29udHJvbCBIZWlnaHQgU2NhbGU8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj4KICAgICAgICAgIENTUyB2YXJpYWJsZXM6IC0tZGVlcy1jb250cm9sLWhlaWdodC1zbSB0aHJvdWdoIC0tZGVlcy1jb250cm9sLWhlaWdodC14bAogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImhlaWdodC1kZW1vIj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlaWdodC1ib3giIHN0eWxlPSJoZWlnaHQ6IHZhcigtLWRlZXMtY29udHJvbC1oZWlnaHQtc20pOyI+c208L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9rZW4tbmFtZSI+MzJweDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWlnaHQtYm94IiBzdHlsZT0iaGVpZ2h0OiB2YXIoLS1kZWVzLWNvbnRyb2wtaGVpZ2h0LW1kKTsiPm1kPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRva2VuLW5hbWUiPjM2cHg8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVpZ2h0LWJveCIgc3R5bGU9ImhlaWdodDogdmFyKC0tZGVlcy1jb250cm9sLWhlaWdodC1sZyk7Ij5sZzwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2tlbi1uYW1lIj40MHB4PC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlaWdodC1ib3giIHN0eWxlPSJoZWlnaHQ6IHZhcigtLWRlZXMtY29udHJvbC1oZWlnaHQteGwpOyI+eGw8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9rZW4tbmFtZSI+NDhweDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+VHJhbnNpdGlvbiBEdXJhdGlvbnM8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWRlc2NyaXB0aW9uIj4KICAgICAgICAgIENTUyB2YXJpYWJsZXM6IC0tZGVlcy10cmFuc2l0aW9uLWZhc3QgdGhyb3VnaCAtLWRlZXMtdHJhbnNpdGlvbi1zbG93ZXIKICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0b2tlbi1ncmlkIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRva2VuLWl0ZW0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2tlbi1uYW1lIj4tLWRlZXMtdHJhbnNpdGlvbi1mYXN0PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRva2VuLXZhbHVlIj4wLjFzPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRva2VuLWl0ZW0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2tlbi1uYW1lIj4tLWRlZXMtdHJhbnNpdGlvbi1kZWZhdWx0PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRva2VuLXZhbHVlIj4wLjE1czwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2tlbi1pdGVtIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9rZW4tbmFtZSI+LS1kZWVzLXRyYW5zaXRpb24tc2xvdzwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2tlbi12YWx1ZSI+MC4yczwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2tlbi1pdGVtIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9rZW4tbmFtZSI+LS1kZWVzLXRyYW5zaXRpb24tc2xvd2VyPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRva2VuLXZhbHVlIj4wLjNzPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2RlZXMtdGhlbWU+CiAgPC9kaXY+CmAsImRlbW9GdW5jIil9KTt2YXIgRXgsTzIsbnRzLENTYT1nKCgpPT57cGUoKTtodCgpO3pTYSgpO0V4PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxPMj1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sbnRzPSgoKT0+e2xldCBzPVtuZSgiZGVlcy10aGVtZSIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdO3ZhciBOPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzVGhlbWUiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgQz10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOk9iamVjdH0pXSxwPVtMKHt0eXBlOk9iamVjdH0pXSxjPVtMKHt0eXBlOk9iamVjdH0pXSx4PVtMKHt0eXBlOk9iamVjdH0pXSx5PVtMKHt0eXBlOk9iamVjdH0pXSxFeCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImN1c3RvbVNwYWNpbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+ImN1c3RvbVNwYWNpbmciaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5jdXN0b21TcGFjaW5nLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uY3VzdG9tU3BhY2luZz1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LG8sbCksRXgodGhpcyxudWxsLHAse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjdXN0b21SYWRpdXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+ImN1c3RvbVJhZGl1cyJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLmN1c3RvbVJhZGl1cywiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLmN1c3RvbVJhZGl1cz1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LGQsdSksRXgodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjdXN0b21TaGFkb3dzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJjdXN0b21TaGFkb3dzImluIF8sImhhcyIpLGdldDppKF89Pl8uY3VzdG9tU2hhZG93cywiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLmN1c3RvbVNoYWRvd3M9T30sInNldCIpfSxtZXRhZGF0YTpDfSxiLHYpLEV4KHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiY3VzdG9tVHJhbnNpdGlvbnMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+ImN1c3RvbVRyYW5zaXRpb25zImluIF8sImhhcyIpLGdldDppKF89Pl8uY3VzdG9tVHJhbnNpdGlvbnMsImdldCIpLHNldDppKChfLE8pPT57Xy5jdXN0b21UcmFuc2l0aW9ucz1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LG0sZiksRXgodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjdXN0b21Db250cm9sSGVpZ2h0cyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4iY3VzdG9tQ29udHJvbEhlaWdodHMiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5jdXN0b21Db250cm9sSGVpZ2h0cywiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLmN1c3RvbUNvbnRyb2xIZWlnaHRzPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sTSx6KSxFeChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpDfSxudWxsLHQpLE49YT1lLnZhbHVlLEMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Q30pfXN0YXRpYyBkZW1vPU1TYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIlV0aWxpdHkiXTsjZT1PMih0aGlzLG8sbnVsbCk7Z2V0IGN1c3RvbVNwYWNpbmcoKXtyZXR1cm4gdGhpcy4jZX1zZXQgY3VzdG9tU3BhY2luZyhDKXt0aGlzLiNlPUN9I3Q9KE8yKHRoaXMsbCksTzIodGhpcyxkLG51bGwpKTtnZXQgY3VzdG9tUmFkaXVzKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGN1c3RvbVJhZGl1cyhDKXt0aGlzLiN0PUN9I2E9KE8yKHRoaXMsdSksTzIodGhpcyxiLG51bGwpKTtnZXQgY3VzdG9tU2hhZG93cygpe3JldHVybiB0aGlzLiNhfXNldCBjdXN0b21TaGFkb3dzKEMpe3RoaXMuI2E9Q30jcz0oTzIodGhpcyx2KSxPMih0aGlzLG0sbnVsbCkpO2dldCBjdXN0b21UcmFuc2l0aW9ucygpe3JldHVybiB0aGlzLiNzfXNldCBjdXN0b21UcmFuc2l0aW9ucyhDKXt0aGlzLiNzPUN9I2k9KE8yKHRoaXMsZiksTzIodGhpcyxNLG51bGwpKTtnZXQgY3VzdG9tQ29udHJvbEhlaWdodHMoKXtyZXR1cm4gdGhpcy4jaX1zZXQgY3VzdG9tQ29udHJvbEhlaWdodHMoQyl7dGhpcy4jaT1DfXN0YXRpYyBzdHlsZXM9W3FlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogY29udGVudHM7CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8c3R5bGU+CiAgICAgICAgJHt0aGlzLmdlbmVyYXRlQ3VzdG9tU3R5bGVzKCl9CiAgICAgIDwvc3R5bGU+CiAgICAgIDxzbG90Pjwvc2xvdD4KICAgIGB9Z2VuZXJhdGVDdXN0b21TdHlsZXMoKXtsZXQgQz1bIjpob3N0IHsiXTtpZih0aGlzLmN1c3RvbVNwYWNpbmcpZm9yKGxldFtfLE9db2YgT2JqZWN0LmVudHJpZXModGhpcy5jdXN0b21TcGFjaW5nKSlPJiZDLnB1c2goYCAgLS1kZWVzLXNwYWNpbmctJHtffTogJHtPfTtgKTtpZih0aGlzLmN1c3RvbVJhZGl1cylmb3IobGV0W18sT11vZiBPYmplY3QuZW50cmllcyh0aGlzLmN1c3RvbVJhZGl1cykpTyYmQy5wdXNoKGAgIC0tZGVlcy1yYWRpdXMtJHtffTogJHtPfTtgKTtpZih0aGlzLmN1c3RvbVNoYWRvd3MpZm9yKGxldFtfLE9db2YgT2JqZWN0LmVudHJpZXModGhpcy5jdXN0b21TaGFkb3dzKSlPJiZDLnB1c2goYCAgLS1kZWVzLXNoYWRvdy0ke199OiAke099O2ApO2lmKHRoaXMuY3VzdG9tVHJhbnNpdGlvbnMpe2ZvcihsZXRbXyxPXW9mIE9iamVjdC5lbnRyaWVzKHRoaXMuY3VzdG9tVHJhbnNpdGlvbnMpKWlmKE8pe2xldCAkPV89PT0iZGVmYXVsdCI/ImRlZmF1bHQiOl87Qy5wdXNoKGAgIC0tZGVlcy10cmFuc2l0aW9uLSR7JH06ICR7T307YCl9fWlmKHRoaXMuY3VzdG9tQ29udHJvbEhlaWdodHMpZm9yKGxldFtfLE9db2YgT2JqZWN0LmVudHJpZXModGhpcy5jdXN0b21Db250cm9sSGVpZ2h0cykpTyYmQy5wdXNoKGAgIC0tZGVlcy1jb250cm9sLWhlaWdodC0ke199OiAke099O2ApO3JldHVybiBDLnB1c2goIn0iKSxDLmpvaW4oYApgKX1zZXRTcGFjaW5nKEMsXyl7dGhpcy5jdXN0b21TcGFjaW5nPXsuLi50aGlzLmN1c3RvbVNwYWNpbmcsW0NdOl99fXNldFJhZGl1cyhDLF8pe3RoaXMuY3VzdG9tUmFkaXVzPXsuLi50aGlzLmN1c3RvbVJhZGl1cyxbQ106X319c2V0U2hhZG93KEMsXyl7dGhpcy5jdXN0b21TaGFkb3dzPXsuLi50aGlzLmN1c3RvbVNoYWRvd3MsW0NdOl99fXNldFRyYW5zaXRpb24oQyxfKXt0aGlzLmN1c3RvbVRyYW5zaXRpb25zPXsuLi50aGlzLmN1c3RvbVRyYW5zaXRpb25zLFtDXTpffX1zZXRDb250cm9sSGVpZ2h0KEMsXyl7dGhpcy5jdXN0b21Db250cm9sSGVpZ2h0cz17Li4udGhpcy5jdXN0b21Db250cm9sSGVpZ2h0cyxbQ106X319Z2V0VGhlbWUoKXtyZXR1cm57Y29sb3JzOlhjLmNvbG9ycyxzcGFjaW5nOnsuLi5YYy5zcGFjaW5nLC4uLnRoaXMuY3VzdG9tU3BhY2luZ30scmFkaXVzOnsuLi5YYy5yYWRpdXMsLi4udGhpcy5jdXN0b21SYWRpdXN9LHNoYWRvd3M6ey4uLlhjLnNoYWRvd3MsLi4udGhpcy5jdXN0b21TaGFkb3dzfSx0cmFuc2l0aW9uczp7Li4uWGMudHJhbnNpdGlvbnMsLi4udGhpcy5jdXN0b21UcmFuc2l0aW9uc30sY29udHJvbEhlaWdodHM6ey4uLlhjLmNvbnRyb2xIZWlnaHRzLC4uLnRoaXMuY3VzdG9tQ29udHJvbEhlaWdodHN9fX1yZXNldFRvRGVmYXVsdHMoKXt0aGlzLmN1c3RvbVNwYWNpbmc9bnVsbCx0aGlzLmN1c3RvbVJhZGl1cz1udWxsLHRoaXMuY3VzdG9tU2hhZG93cz1udWxsLHRoaXMuY3VzdG9tVHJhbnNpdGlvbnM9bnVsbCx0aGlzLmN1c3RvbUNvbnRyb2xIZWlnaHRzPW51bGx9YXBwbHlUaGVtZShDKXtDLnNwYWNpbmcmJih0aGlzLmN1c3RvbVNwYWNpbmc9Qy5zcGFjaW5nKSxDLnJhZGl1cyYmKHRoaXMuY3VzdG9tUmFkaXVzPUMucmFkaXVzKSxDLnNoYWRvd3MmJih0aGlzLmN1c3RvbVNoYWRvd3M9Qy5zaGFkb3dzKSxDLnRyYW5zaXRpb25zJiYodGhpcy5jdXN0b21UcmFuc2l0aW9ucz1DLnRyYW5zaXRpb25zKSxDLmNvbnRyb2xIZWlnaHRzJiYodGhpcy5jdXN0b21Db250cm9sSGVpZ2h0cz1DLmNvbnRyb2xIZWlnaHRzKX1jb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksTzIodGhpcyx6KX1zdGF0aWN7TzIoYSx0KX19O3JldHVybiBOPWF9KSgpfSk7dmFyIFRTYT1nKCgpPT57Q1NhKCl9KTt2YXIgJFNhLERTYSxMU2E9ZygoKT0+e3BlKCk7RWx0KCk7JFNhPWkoYXN5bmMgcz0+e2F3YWl0IG5ldyBQcm9taXNlKGU9Pnt3aW5kb3cuc2V0VGltZW91dCgoKT0+ZSgpLHMpfSl9LCJ3YWl0Rm9yRGVtb1N0ZXAiKSxEU2E9aSgoKT0+e2xldCBzPSExO3JldHVybiB3YAogICAgPGRpdiBzdHlsZT0iZGlzcGxheTogZ3JpZDsgZ2FwOiAxNnB4OyBwbGFjZS1pdGVtczogY2VudGVyOyBwYWRkaW5nOiAzMnB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij4KICAgICAgPHAgc3R5bGU9Im1hcmdpbjogMDsgbWF4LXdpZHRoOiA1NDBweDsgbGluZS1oZWlnaHQ6IDEuNjsgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOyI+CiAgICAgICAgTGF1bmNoZXMgdGhlIHVwZGF0ZXIgYXMgYSBzdGVwcGVyIGZsb3cuIFRoZSBmaXJzdCBzdGVwIHN0cmVhbXMgdGVybWluYWwtc3R5bGUKICAgICAgICBwcm9ncmVzcyB1cGRhdGVzIGFuZCB0aGVuIG1vdmVzIGF1dG9tYXRpY2FsbHkgdG8gdGhlIHJlYWR5IHN0ZXAuCiAgICAgIDwvcD4KICAgICAgPGRlZXMtYnV0dG9uCiAgICAgICAgQGNsaWNrPSR7YXN5bmMoKT0+e2lmKCFzKXtzPSEwO3RyeXtsZXQgZT1hd2FpdCBMbHQuY3JlYXRlQW5kU2hvdyh7Y3VycmVudFZlcnNpb246IjMuNzkuMCIsdXBkYXRlZFZlcnNpb246IjMuODAuMCIsbW9yZUluZm9Vcmw6Imh0dHBzOi8vY29kZS5mb3NzLmdsb2JhbC9kZXNpZ24uZXN0YXRlL2RlZXMtY2F0YWxvZyIsY2hhbmdlbG9nVXJsOiJodHRwczovL2NvZGUuZm9zcy5nbG9iYWwvZGVzaWduLmVzdGF0ZS9kZWVzLWNhdGFsb2cvLS9ibG9iL21haW4vY2hhbmdlbG9nLm1kIixzdWNjZXNzQWN0aW9uOiJjbG9zZSIsc3VjY2Vzc0RlbGF5TXM6MWU0fSksdD1be2xpbmU6IkNoZWNraW5nIHJlbGVhc2UgbWFuaWZlc3QiLHBlcmNlbnRhZ2U6MTIsZGVsYXk6NTUwfSx7bGluZToiRG93bmxvYWRpbmcgc2lnbmVkIGJ1bmRsZSIscGVyY2VudGFnZTozMyxkZWxheTo3MDB9LHtsaW5lOiJWZXJpZnlpbmcgY2hlY2tzdW0iLHBlcmNlbnRhZ2U6NTEsZGVsYXk6NjUwfSx7bGluZToiQXBwbHlpbmcgdXBkYXRlIGZpbGVzIixwZXJjZW50YWdlOjc0LGRlbGF5OjgwMH0se2xpbmU6IkNsZWFuaW5nIHVwIHByZXZpb3VzIHJlbGVhc2UiLHBlcmNlbnRhZ2U6OTEsZGVsYXk6NjAwfV07ZS51cGRhdGVQcm9ncmVzcyh7c3RhdHVzVGV4dDoiQ2hlY2tpbmcgcmVsZWFzZSBtYW5pZmVzdC4uLiIsdGVybWluYWxMaW5lczpbIkNoZWNraW5nIHJlbGVhc2UgbWFuaWZlc3QiXSxwZXJjZW50YWdlOjEyLGluZGV0ZXJtaW5hdGU6ITB9KTtmb3IobGV0W2Escl1vZiB0LmVudHJpZXMoKSlhPjAmJihlLmFwcGVuZFByb2dyZXNzTGluZShyLmxpbmUpLGUudXBkYXRlUHJvZ3Jlc3Moe3BlcmNlbnRhZ2U6ci5wZXJjZW50YWdlLHN0YXR1c1RleHQ6YCR7ci5saW5lfS4uLmB9KSksYXdhaXQgJFNhKHIuZGVsYXkpO2F3YWl0IGUubWFya1VwZGF0ZVJlYWR5KCksYXdhaXQgJFNhKDEwNTAwKX1maW5hbGx5e3M9ITF9fX19CiAgICAgID5TaG93IHVwZGF0ZXIgZmxvdzwvZGVlcy1idXR0b24+CiAgICA8L2Rpdj4KICBgfSwiZGVtb0Z1bmMiKX0pO3ZhciBNNCxubCxMbHQsRWx0PWcoKCk9PntwZSgpO0xTYSgpO28yZSgpO0VyKCk7TTQ9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LG5sPWZ1bmN0aW9uKHMsZSx0KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yLHI9MDtyPGUubGVuZ3RoO3IrKyl0PWE/ZVtyXS5jYWxsKHMsdCk6ZVtyXS5jYWxsKHMpO3JldHVybiBhP3Q6dm9pZCAwfSxMbHQ9KCgpPT57bGV0IHM9W25lKCJkZWVzLXVwZGF0ZXIiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXSxPLCQ9W10sRT1bXTt2YXIgSD1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1VwZGF0ZXIiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgaz10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZ30pXSxwPVtMKHt0eXBlOlN0cmluZ30pXSxjPVtMKHt0eXBlOlN0cmluZ30pXSx4PVtMKHt0eXBlOlN0cmluZ30pXSx5PVtMKHt0eXBlOlN0cmluZ30pXSxOPVtMKHt0eXBlOk51bWJlcn0pXSxPPVtMKHt0eXBlOlN0cmluZ30pXSxNNCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImN1cnJlbnRWZXJzaW9uIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKFM9PiJjdXJyZW50VmVyc2lvbiJpbiBTLCJoYXMiKSxnZXQ6aShTPT5TLmN1cnJlbnRWZXJzaW9uLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MuY3VycmVudFZlcnNpb249SX0sInNldCIpfSxtZXRhZGF0YTprfSxvLGwpLE00KHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToidXBkYXRlZFZlcnNpb24iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+InVwZGF0ZWRWZXJzaW9uImluIFMsImhhcyIpLGdldDppKFM9PlMudXBkYXRlZFZlcnNpb24sImdldCIpLHNldDppKChTLEkpPT57Uy51cGRhdGVkVmVyc2lvbj1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LGQsdSksTTQodGhpcyxudWxsLGMse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtb3JlSW5mb1VybCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4ibW9yZUluZm9VcmwiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5tb3JlSW5mb1VybCwiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLm1vcmVJbmZvVXJsPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sYix2KSxNNCh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImNoYW5nZWxvZ1VybCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4iY2hhbmdlbG9nVXJsImluIFMsImhhcyIpLGdldDppKFM9PlMuY2hhbmdlbG9nVXJsLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1MuY2hhbmdlbG9nVXJsPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sbSxmKSxNNCh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InN1Y2Nlc3NBY3Rpb24iLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoUz0+InN1Y2Nlc3NBY3Rpb24iaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5zdWNjZXNzQWN0aW9uLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1Muc3VjY2Vzc0FjdGlvbj1JfSwic2V0Iil9LG1ldGFkYXRhOmt9LE0seiksTTQodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJzdWNjZXNzRGVsYXlNcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4ic3VjY2Vzc0RlbGF5TXMiaW4gUywiaGFzIiksZ2V0OmkoUz0+Uy5zdWNjZXNzRGVsYXlNcywiZ2V0Iiksc2V0OmkoKFMsSSk9PntTLnN1Y2Nlc3NEZWxheU1zPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sQyxfKSxNNCh0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InN1Y2Nlc3NBY3Rpb25MYWJlbCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShTPT4ic3VjY2Vzc0FjdGlvbkxhYmVsImluIFMsImhhcyIpLGdldDppKFM9PlMuc3VjY2Vzc0FjdGlvbkxhYmVsLCJnZXQiKSxzZXQ6aSgoUyxJKT0+e1Muc3VjY2Vzc0FjdGlvbkxhYmVsPUl9LCJzZXQiKX0sbWV0YWRhdGE6a30sJCxFKSxNNChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTprfSxudWxsLHQpLEg9YT1lLnZhbHVlLGsmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6a30pfXN0YXRpYyBkZW1vPURTYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIlV0aWxpdHkiXTtzdGF0aWMgYXN5bmMgY3JlYXRlQW5kU2hvdyhrPXt9KXtsZXQgUz1uZXcgSDtyZXR1cm4gUy5jdXJyZW50VmVyc2lvbj1rLmN1cnJlbnRWZXJzaW9uPz8iIixTLnVwZGF0ZWRWZXJzaW9uPWsudXBkYXRlZFZlcnNpb24/PyIiLFMubW9yZUluZm9Vcmw9ay5tb3JlSW5mb1VybD8/IiIsUy5jaGFuZ2Vsb2dVcmw9ay5jaGFuZ2Vsb2dVcmw/PyIiLFMuc3VjY2Vzc0FjdGlvbj1rLnN1Y2Nlc3NBY3Rpb24/PyJjbG9zZSIsUy5zdWNjZXNzRGVsYXlNcz1rLnN1Y2Nlc3NEZWxheU1zPz8xZTQsUy5zdWNjZXNzQWN0aW9uTGFiZWw9ay5zdWNjZXNzQWN0aW9uTGFiZWw/PyIiLFMub25TdWNjZXNzQWN0aW9uPWsub25TdWNjZXNzQWN0aW9uPz9udWxsLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoUyksYXdhaXQgUy5zaG93KCksU30jZT1ubCh0aGlzLG8sIiIpO2dldCBjdXJyZW50VmVyc2lvbigpe3JldHVybiB0aGlzLiNlfXNldCBjdXJyZW50VmVyc2lvbihrKXt0aGlzLiNlPWt9I3Q9KG5sKHRoaXMsbCksbmwodGhpcyxkLCIiKSk7Z2V0IHVwZGF0ZWRWZXJzaW9uKCl7cmV0dXJuIHRoaXMuI3R9c2V0IHVwZGF0ZWRWZXJzaW9uKGspe3RoaXMuI3Q9a30jYT0obmwodGhpcyx1KSxubCh0aGlzLGIsIiIpKTtnZXQgbW9yZUluZm9VcmwoKXtyZXR1cm4gdGhpcy4jYX1zZXQgbW9yZUluZm9Vcmwoayl7dGhpcy4jYT1rfSNzPShubCh0aGlzLHYpLG5sKHRoaXMsbSwiIikpO2dldCBjaGFuZ2Vsb2dVcmwoKXtyZXR1cm4gdGhpcy4jc31zZXQgY2hhbmdlbG9nVXJsKGspe3RoaXMuI3M9a30jaT0obmwodGhpcyxmKSxubCh0aGlzLE0sImNsb3NlIikpO2dldCBzdWNjZXNzQWN0aW9uKCl7cmV0dXJuIHRoaXMuI2l9c2V0IHN1Y2Nlc3NBY3Rpb24oayl7dGhpcy4jaT1rfSNyPShubCh0aGlzLHopLG5sKHRoaXMsQywxZTQpKTtnZXQgc3VjY2Vzc0RlbGF5TXMoKXtyZXR1cm4gdGhpcy4jcn1zZXQgc3VjY2Vzc0RlbGF5TXMoayl7dGhpcy4jcj1rfSNvPShubCh0aGlzLF8pLG5sKHRoaXMsJCwiIikpO2dldCBzdWNjZXNzQWN0aW9uTGFiZWwoKXtyZXR1cm4gdGhpcy4jb31zZXQgc3VjY2Vzc0FjdGlvbkxhYmVsKGspe3RoaXMuI289a31zdGVwcGVyPShubCh0aGlzLEUpLG51bGwpO3Byb2dyZXNzU3RlcD1udWxsO3Nob3dQcm9taXNlPW51bGw7b25TdWNjZXNzQWN0aW9uPW51bGw7c3RhdGljIHN0eWxlcz1bSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YGB9YXN5bmMgY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuc2hvdygpfWFzeW5jIHNob3coKXtpZighdGhpcy5zdGVwcGVyPy5pc0Nvbm5lY3RlZCl7aWYodGhpcy5zaG93UHJvbWlzZSlyZXR1cm4gdGhpcy5zaG93UHJvbWlzZTt0aGlzLnNob3dQcm9taXNlPXRoaXMub3BlblN0ZXBwZXJGbG93KCk7dHJ5e2F3YWl0IHRoaXMuc2hvd1Byb21pc2V9ZmluYWxseXt0aGlzLnNob3dQcm9taXNlPW51bGx9fX11cGRhdGVQcm9ncmVzcyhrKXshdGhpcy5zdGVwcGVyfHwhdGhpcy5wcm9ncmVzc1N0ZXB8fHRoaXMuc3RlcHBlci51cGRhdGVQcm9ncmVzc1N0ZXAoayx0aGlzLnByb2dyZXNzU3RlcCl9YXBwZW5kUHJvZ3Jlc3NMaW5lKGspeyF0aGlzLnN0ZXBwZXJ8fCF0aGlzLnByb2dyZXNzU3RlcHx8dGhpcy5zdGVwcGVyLmFwcGVuZFByb2dyZXNzU3RlcExpbmUoayx0aGlzLnByb2dyZXNzU3RlcCl9bWFya1VwZGF0ZUVycm9yKGspe3RoaXMuYXBwZW5kUHJvZ3Jlc3NMaW5lKGBFcnJvcjogJHtrfWApLHRoaXMudXBkYXRlUHJvZ3Jlc3Moe2luZGV0ZXJtaW5hdGU6ITEsc3RhdHVzVGV4dDprfSl9YXN5bmMgbWFya1VwZGF0ZVJlYWR5KCl7IXRoaXMuc3RlcHBlcnx8IXRoaXMucHJvZ3Jlc3NTdGVwfHwodGhpcy5zdGVwcGVyLnVwZGF0ZVByb2dyZXNzU3RlcCh7cGVyY2VudGFnZToxMDAsaW5kZXRlcm1pbmF0ZTohMSxzdGF0dXNUZXh0OiJVcGRhdGUgcmVhZHkuIn0sdGhpcy5wcm9ncmVzc1N0ZXApLHRoaXMuc3RlcHBlci5hcHBlbmRQcm9ncmVzc1N0ZXBMaW5lKCJVcGRhdGUgcmVhZHkiLHRoaXMucHJvZ3Jlc3NTdGVwKSx0aGlzLnN0ZXBwZXIuc2VsZWN0ZWRTdGVwPT09dGhpcy5wcm9ncmVzc1N0ZXAmJnRoaXMuc3RlcHBlci5nb05leHQoKSl9YXN5bmMgZGVzdHJveSgpe2xldCBrPXRoaXMuc3RlcHBlcjt0aGlzLnN0ZXBwZXI9bnVsbCx0aGlzLnByb2dyZXNzU3RlcD1udWxsLGs/LmlzQ29ubmVjdGVkJiZhd2FpdCBrLmRlc3Ryb3koKSx0aGlzLnBhcmVudEVsZW1lbnQmJnRoaXMucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzKX1hc3luYyBvcGVuU3RlcHBlckZsb3coKXtsZXR7c3RlcHM6ayxwcm9ncmVzc1N0ZXA6U309dGhpcy5jcmVhdGVVcGRhdGVyU3RlcHMoKTt0aGlzLnByb2dyZXNzU3RlcD1TLHRoaXMuc3RlcHBlcj1hd2FpdCBySi5jcmVhdGVBbmRTaG93KHtzdGVwczprLGNhbmNlbGFibGU6ITF9KX1jcmVhdGVVcGRhdGVyU3RlcHMoKXtsZXQgaz10aGlzLmdldExpbmtNZW51T3B0aW9ucygpLFM9e3RpdGxlOiJVcGRhdGluZyB0aGUgYXBwbGljYXRpb24iLGNvbnRlbnQ6dGhpcy5yZW5kZXJQcm9ncmVzc0NvbnRlbnQoKSxwcm9ncmVzc1N0ZXA6e2xhYmVsOnRoaXMuZ2V0UHJvZ3Jlc3NMYWJlbCgpLHBlcmNlbnRhZ2U6NSxpbmRldGVybWluYXRlOiEwLHN0YXR1c1Jvd3M6NCxzdGF0dXNUZXh0OiJQcmVwYXJpbmcgdXBkYXRlLi4uIix0ZXJtaW5hbExpbmVzOlsiUHJlcGFyaW5nIHVwZGF0ZSJdfSxtZW51T3B0aW9uczprLmxlbmd0aD4wP2s6dm9pZCAwfSxJPXt0aXRsZTp0aGlzLnVwZGF0ZWRWZXJzaW9uP2BWZXJzaW9uICR7dGhpcy51cGRhdGVkVmVyc2lvbn0gcmVhZHlgOiJVcGRhdGUgcmVhZHkiLGNvbnRlbnQ6dGhpcy5yZW5kZXJSZWFkeUNvbnRlbnQoKSxwcm9ncmVzc1N0ZXA6e2xhYmVsOnRoaXMuZ2V0U3VjY2Vzc0NvdW50ZG93bkxhYmVsKHRoaXMuZ2V0U3VjY2Vzc0RlbGF5U2Vjb25kcygpKSxwZXJjZW50YWdlOjAsaW5kZXRlcm1pbmF0ZTohMSxzaG93UGVyY2VudGFnZTohMSxzdGF0dXNSb3dzOjIsc3RhdHVzVGV4dDp0aGlzLmdldFN1Y2Nlc3NDb3VudGRvd25TdGF0dXModGhpcy5nZXRTdWNjZXNzRGVsYXlTZWNvbmRzKCkpfSx2YWxpZGF0aW9uRnVuYzppKGFzeW5jKFAsUixLKT0+e2F3YWl0IHRoaXMucnVuU3VjY2Vzc0NvdW50ZG93bihQLEksSyl9LCJ2YWxpZGF0aW9uRnVuYyIpfTtyZXR1cm57c3RlcHM6W1MsSV0scHJvZ3Jlc3NTdGVwOlN9fWdldFByb2dyZXNzTGFiZWwoKXtyZXR1cm4gdGhpcy5jdXJyZW50VmVyc2lvbiYmdGhpcy51cGRhdGVkVmVyc2lvbj9gJHt0aGlzLmN1cnJlbnRWZXJzaW9ufSAtPiAke3RoaXMudXBkYXRlZFZlcnNpb259YDp0aGlzLnVwZGF0ZWRWZXJzaW9uP2BQcmVwYXJpbmcgJHt0aGlzLnVwZGF0ZWRWZXJzaW9ufWA6IkFwcGxpY2F0aW9uIHVwZGF0ZSJ9Z2V0U3VjY2Vzc0RlbGF5U2Vjb25kcygpe3JldHVybiBNYXRoLm1heCgxLE1hdGguY2VpbCh0aGlzLnN1Y2Nlc3NEZWxheU1zLzFlMykpfWdldFN1Y2Nlc3NBY3Rpb25EaXNwbGF5TGFiZWwoKXtyZXR1cm4gdGhpcy5zdWNjZXNzQWN0aW9uTGFiZWw/dGhpcy5zdWNjZXNzQWN0aW9uTGFiZWw6dGhpcy5vblN1Y2Nlc3NBY3Rpb24/IkNvbnRpbnVpbmcgYXV0b21hdGljYWxseSI6dGhpcy5zdWNjZXNzQWN0aW9uPT09InJlbG9hZCI/IlJlbG9hZGluZyBhcHBsaWNhdGlvbiI6IkNsb3NpbmcgdXBkYXRlciJ9Z2V0U3VjY2Vzc0NvdW50ZG93bkxhYmVsKGspe3JldHVybmAke3RoaXMuZ2V0U3VjY2Vzc0FjdGlvbkRpc3BsYXlMYWJlbCgpfSBpbiAke2t9c2B9Z2V0U3VjY2Vzc0NvdW50ZG93blN0YXR1cyhrKXtsZXQgUz1rPT09MT8ic2Vjb25kIjoic2Vjb25kcyI7cmV0dXJuYCR7dGhpcy5nZXRTdWNjZXNzQWN0aW9uRGlzcGxheUxhYmVsKCl9IGluICR7a30gJHtTfS5gfWdldFN1Y2Nlc3NBY3Rpb25Ob3dMYWJlbCgpe3JldHVybmAke3RoaXMuZ2V0U3VjY2Vzc0FjdGlvbkRpc3BsYXlMYWJlbCgpfSBub3cuLi5gfWdldExpbmtNZW51T3B0aW9ucygpe2xldCBrPVtdO3JldHVybiB0aGlzLm1vcmVJbmZvVXJsJiZrLnB1c2goe25hbWU6Ik1vcmUgaW5mbyIsYWN0aW9uOmkoYXN5bmMoKT0+e3RoaXMub3BlbkV4dGVybmFsVXJsKHRoaXMubW9yZUluZm9VcmwpfSwiYWN0aW9uIil9KSx0aGlzLmNoYW5nZWxvZ1VybCYmay5wdXNoKHtuYW1lOiJDaGFuZ2Vsb2ciLGFjdGlvbjppKGFzeW5jKCk9Pnt0aGlzLm9wZW5FeHRlcm5hbFVybCh0aGlzLmNoYW5nZWxvZ1VybCl9LCJhY3Rpb24iKX0pLGt9cmVuZGVyVmVyc2lvbk1ldGEoayxTKXtyZXR1cm4gd2AKICAgICAgPGRpdgogICAgICAgIHN0eWxlPSJkaXNwbGF5OiBncmlkOyBnYXA6IDRweDsgbWluLXdpZHRoOiAxMzJweDsgcGFkZGluZzogMTJweCAxNHB4OyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1zdWJ0bGUpOyBib3JkZXItcmFkaXVzOiA4cHg7IGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItaG92ZXIpOyIKICAgICAgPgogICAgICAgIDxkaXYKICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDExcHg7IGZvbnQtd2VpZ2h0OiA2MDA7IGxldHRlci1zcGFjaW5nOiAwLjA1ZW07IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOyIKICAgICAgICA+CiAgICAgICAgICAke2t9CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdgogICAgICAgICAgc3R5bGU9JHtgZm9udC1mYW1pbHk6ICR7RDFlfTsgZm9udC1zaXplOiAxM3B4OyBmb250LXdlaWdodDogNjAwOyBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTsgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTtgfQogICAgICAgID4KICAgICAgICAgICR7U30KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfXJlbmRlclByb2dyZXNzQ29udGVudCgpe3JldHVybiB3YAogICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBncmlkOyBnYXA6IDE4cHg7IGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTsiPgogICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGdyaWQ7IGdhcDogNnB4OyI+CiAgICAgICAgICA8ZGl2CiAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDExcHg7IGZvbnQtd2VpZ2h0OiA2MDA7IGxldHRlci1zcGFjaW5nOiAwLjA4ZW07IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOyIKICAgICAgICAgID4KICAgICAgICAgICAgQXBwbGljYXRpb24gdXBkYXRlCiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYKICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMThweDsgbGluZS1oZWlnaHQ6IDEuMzU7IGZvbnQtd2VpZ2h0OiA2MDA7IGxldHRlci1zcGFjaW5nOiAtMC4wMmVtOyBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXByaW1hcnkpOyIKICAgICAgICAgID4KICAgICAgICAgICAgRG93bmxvYWRpbmcgYW5kIGFwcGx5aW5nIHRoZSBsYXRlc3QgcmVsZWFzZS4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHAgc3R5bGU9Im1hcmdpbjogMDsgZm9udC1zaXplOiAxNHB4OyBsaW5lLWhlaWdodDogMS42NTsgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOyI+CiAgICAgICAgICAgICR7dGhpcy5jdXJyZW50VmVyc2lvbiYmdGhpcy51cGRhdGVkVmVyc2lvbj93YE1vdmluZyBmcm9tIDxzdHJvbmc+JHt0aGlzLmN1cnJlbnRWZXJzaW9ufTwvc3Ryb25nPiB0byA8c3Ryb25nPiR7dGhpcy51cGRhdGVkVmVyc2lvbn08L3N0cm9uZz4uYDp0aGlzLnVwZGF0ZWRWZXJzaW9uP3dgUHJlcGFyaW5nIDxzdHJvbmc+JHt0aGlzLnVwZGF0ZWRWZXJzaW9ufTwvc3Ryb25nPiBmb3IgaW5zdGFsbGF0aW9uLmA6IlRoZSB1cGRhdGVyIGlzIGZldGNoaW5nIHRoZSBuZXdlc3QgYnVpbGQgYW5kIHByZXBhcmluZyBpdCBmb3IgaW5zdGFsbGF0aW9uLiJ9CiAgICAgICAgICA8L3A+CiAgICAgICAgPC9kaXY+CgogICAgICAgICR7dGhpcy5jdXJyZW50VmVyc2lvbnx8dGhpcy51cGRhdGVkVmVyc2lvbj93YAogICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsgZ2FwOiAxMHB4OyI+CiAgICAgICAgICAgICAgICAke3RoaXMuY3VycmVudFZlcnNpb24/dGhpcy5yZW5kZXJWZXJzaW9uTWV0YSgiQ3VycmVudCB2ZXJzaW9uIix0aGlzLmN1cnJlbnRWZXJzaW9uKToiIn0KICAgICAgICAgICAgICAgICR7dGhpcy51cGRhdGVkVmVyc2lvbj90aGlzLnJlbmRlclZlcnNpb25NZXRhKCJJbmNvbWluZyB2ZXJzaW9uIix0aGlzLnVwZGF0ZWRWZXJzaW9uKToiIn0KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYDoiIn0KCiAgICAgICAgPGRpdgogICAgICAgICAgc3R5bGU9ImRpc3BsYXk6IGdyaWQ7IGdhcDogNHB4OyBwYWRkaW5nOiAxNHB4IDE2cHg7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLXN1YnRsZSk7IGJvcmRlci1yYWRpdXM6IDhweDsgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1ob3Zlcik7IgogICAgICAgID4KICAgICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsiPgogICAgICAgICAgICBBdXRvbWF0aWMgZmxvdwogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJmb250LXNpemU6IDEzcHg7IGxpbmUtaGVpZ2h0OiAxLjY7IGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOyI+CiAgICAgICAgICAgIFRoZSB1cGRhdGVyIGNvbnRpbnVlcyBvbiBpdHMgb3duIG9uY2UgdGhlIG5ldyBidWlsZCBpcyBpbnN0YWxsZWQgYW5kIHZlcmlmaWVkLgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJSZWFkeUNvbnRlbnQoKXtsZXQgaz10aGlzLmdldFN1Y2Nlc3NEZWxheVNlY29uZHMoKTtyZXR1cm4gd2AKICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTogZ3JpZDsgZ2FwOiAxOHB4OyBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXNlY29uZGFyeSk7Ij4KICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBncmlkOyBnYXA6IDZweDsiPgogICAgICAgICAgPGRpdgogICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMXB4OyBmb250LXdlaWdodDogNjAwOyBsZXR0ZXItc3BhY2luZzogMC4wOGVtOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsiCiAgICAgICAgICA+CiAgICAgICAgICAgIFVwZGF0ZSBjb21wbGV0ZQogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2CiAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDE4cHg7IGxpbmUtaGVpZ2h0OiAxLjM1OyBmb250LXdlaWdodDogNjAwOyBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTsgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsiCiAgICAgICAgICA+CiAgICAgICAgICAgICR7dGhpcy51cGRhdGVkVmVyc2lvbj93YFZlcnNpb24gPHNwYW4gc3R5bGU9JHtgZm9udC1mYW1pbHk6ICR7RDFlfTsgZm9udC1zaXplOiAwLjk1ZW07YH0+JHt0aGlzLnVwZGF0ZWRWZXJzaW9ufTwvc3Bhbj4gaXMgcmVhZHkgdG8gdXNlLmA6IlRoZSBuZXcgdmVyc2lvbiBpcyByZWFkeSB0byB1c2UuIn0KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHAgc3R5bGU9Im1hcmdpbjogMDsgZm9udC1zaXplOiAxNHB4OyBsaW5lLWhlaWdodDogMS42NTsgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOyI+CiAgICAgICAgICAgIFRoZSBuZXcgYnVpbGQgaGFzIGJlZW4gaW5zdGFsbGVkIGFuZCB2ZXJpZmllZC4gWW91IGNhbiByZXZpZXcgcmVsZWFzZSBkZXRhaWxzIGJlbG93IHdoaWxlIHRoZSBuZXh0IGFjdGlvbiBydW5zIGF1dG9tYXRpY2FsbHkuCiAgICAgICAgICA8L3A+CiAgICAgICAgPC9kaXY+CgogICAgICAgICR7dGhpcy51cGRhdGVkVmVyc2lvbj93YAogICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsgZ2FwOiAxMHB4OyI+CiAgICAgICAgICAgICAgICAke3RoaXMucmVuZGVyVmVyc2lvbk1ldGEoIkluc3RhbGxlZCB2ZXJzaW9uIix0aGlzLnVwZGF0ZWRWZXJzaW9uKX0KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYDoiIn0KCiAgICAgICAgPGRpdgogICAgICAgICAgc3R5bGU9ImRpc3BsYXk6IGdyaWQ7IGdhcDogNHB4OyBwYWRkaW5nOiAxNHB4IDE2cHg7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWRlZXMtY29sb3ItYm9yZGVyLXN1YnRsZSk7IGJvcmRlci1yYWRpdXM6IDhweDsgYmFja2dyb3VuZDogdmFyKC0tZGVlcy1jb2xvci1ob3Zlcik7IgogICAgICAgID4KICAgICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1wcmltYXJ5KTsiPgogICAgICAgICAgICBOZXh0IGFjdGlvbgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJmb250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAxLjU7IGZvbnQtd2VpZ2h0OiA2MDA7IGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7Ij4KICAgICAgICAgICAgJHt0aGlzLmdldFN1Y2Nlc3NBY3Rpb25EaXNwbGF5TGFiZWwoKX0KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBzdHlsZT0iZm9udC1zaXplOiAxM3B4OyBsaW5lLWhlaWdodDogMS42OyBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LW11dGVkKTsiPgogICAgICAgICAgICBSdW5zIGF1dG9tYXRpY2FsbHkgaW4gJHtrfSBzZWNvbmRzLgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1hc3luYyBydW5TdWNjZXNzQ291bnRkb3duKGssUyxJKXtsZXQgUD1NYXRoLm1heCgxZTMsdGhpcy5zdWNjZXNzRGVsYXlNcyksUj1EYXRlLm5vdygpO2Zvcig7IUk/LmFib3J0ZWQ7KXtsZXQgSz1NYXRoLm1pbihQLERhdGUubm93KCktUiksVj1NYXRoLm1heCgwLFAtSyksVz1NYXRoLm1heCgwLE1hdGguY2VpbChWLzFlMykpO2lmKGsudXBkYXRlUHJvZ3Jlc3NTdGVwKHtsYWJlbDpWPjA/dGhpcy5nZXRTdWNjZXNzQ291bnRkb3duTGFiZWwoVyk6dGhpcy5nZXRTdWNjZXNzQWN0aW9uTm93TGFiZWwoKSxwZXJjZW50YWdlOksvUCoxMDAsaW5kZXRlcm1pbmF0ZTohMSxzaG93UGVyY2VudGFnZTohMSxzdGF0dXNUZXh0OlY+MD90aGlzLmdldFN1Y2Nlc3NDb3VudGRvd25TdGF0dXMoVyk6dGhpcy5nZXRTdWNjZXNzQWN0aW9uTm93TGFiZWwoKX0sUyksVjw9MClicmVhaztpZighYXdhaXQgdGhpcy53YWl0Rm9yQ291bnRkb3duVGljaygxMDAsSSkpcmV0dXJufWF3YWl0IHRoaXMucnVuQ29uZmlndXJlZFN1Y2Nlc3NBY3Rpb24oKX1hc3luYyB3YWl0Rm9yQ291bnRkb3duVGljayhrLFMpe3JldHVybiBuZXcgUHJvbWlzZShJPT57bGV0IFA9ITEsUj1pKFc9PntQfHwoUD0hMCxTJiZTLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixLKSxJKFcpKX0sImZpbmlzaCIpLEs9aSgoKT0+e3dpbmRvdy5jbGVhclRpbWVvdXQoViksUighMSl9LCJoYW5kbGVBYm9ydCIpLFY9d2luZG93LnNldFRpbWVvdXQoKCk9PntSKCEwKX0sayk7UyYmUy5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsSyx7b25jZTohMH0pfSl9YXN5bmMgcnVuQ29uZmlndXJlZFN1Y2Nlc3NBY3Rpb24oKXtpZih0aGlzLm9uU3VjY2Vzc0FjdGlvbil7YXdhaXQgdGhpcy5vblN1Y2Nlc3NBY3Rpb24oKTtyZXR1cm59aWYodGhpcy5zdWNjZXNzQWN0aW9uPT09InJlbG9hZCIpe2F3YWl0IHRoaXMuZGVzdHJveSgpLHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtyZXR1cm59YXdhaXQgdGhpcy5kZXN0cm95KCl9b3BlbkV4dGVybmFsVXJsKGspe3dpbmRvdy5vcGVuKGssIl9ibGFuayIsIm5vb3BlbmVyLG5vcmVmZXJyZXIiKX1zdGF0aWN7bmwoYSx0KX19O3JldHVybiBIPWF9KSgpfSk7dmFyIEVTYT1nKCgpPT57RWx0KCl9KTt2YXIgUFNhPWcoKCk9PntEb3QoKX0pO3ZhciBJU2E9ZygoKT0+e3hTYSgpO19TYSgpO1RTYSgpO0VTYSgpO1BTYSgpfSk7dmFyIGM3LGhjLGx0cyxkMmU9ZygoKT0+e3BlKCk7a3QoKTtodCgpO0dhKCk7ZnIoKTtmcigpO1B1KCk7bzQoKTtvNCgpO2M3PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxoYz1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sbHRzPSgoKT0+e2xldCBzPVtuZSgiZGVlcy13b3Jrc3BhY2UtZmlsZXRyZWUiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXTt2YXIgTz1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1dvcmtzcGFjZUZpbGV0cmVlIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0ICQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpPYmplY3R9KV0scD1bTCh7dHlwZTpTdHJpbmd9KV0sYz1bTCh7dHlwZTpTdHJpbmd9KV0seD1bWSgpXSx5PVtZKCldLE49W1koKV0sYzcodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJleGVjdXRpb25FbnZpcm9ubWVudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShFPT4iZXhlY3V0aW9uRW52aXJvbm1lbnQiaW4gRSwiaGFzIiksZ2V0OmkoRT0+RS5leGVjdXRpb25FbnZpcm9ubWVudCwiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLmV4ZWN1dGlvbkVudmlyb25tZW50PUh9LCJzZXQiKX0sbWV0YWRhdGE6JH0sbyxsKSxjNyh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InJvb3RQYXRoIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEU9PiJyb290UGF0aCJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLnJvb3RQYXRoLCJnZXQiKSxzZXQ6aSgoRSxIKT0+e0Uucm9vdFBhdGg9SH0sInNldCIpfSxtZXRhZGF0YTokfSxkLHUpLGM3KHRoaXMsbnVsbCxjLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2VsZWN0ZWRQYXRoIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEU9PiJzZWxlY3RlZFBhdGgiaW4gRSwiaGFzIiksZ2V0OmkoRT0+RS5zZWxlY3RlZFBhdGgsImdldCIpLHNldDppKChFLEgpPT57RS5zZWxlY3RlZFBhdGg9SH0sInNldCIpfSxtZXRhZGF0YTokfSxiLHYpLGM3KHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToidHJlZURhdGEiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+InRyZWVEYXRhImluIEUsImhhcyIpLGdldDppKEU9PkUudHJlZURhdGEsImdldCIpLHNldDppKChFLEgpPT57RS50cmVlRGF0YT1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LG0sZiksYzcodGhpcyxudWxsLHkse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJpc0xvYWRpbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+ImlzTG9hZGluZyJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLmlzTG9hZGluZywiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLmlzTG9hZGluZz1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LE0seiksYzcodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJlcnJvck1lc3NhZ2UiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+ImVycm9yTWVzc2FnZSJpbiBFLCJoYXMiKSxnZXQ6aShFPT5FLmVycm9yTWVzc2FnZSwiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLmVycm9yTWVzc2FnZT1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LEMsXyksYzcobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6JH0sbnVsbCx0KSxPPWE9ZS52YWx1ZSwkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOiR9KX1zdGF0aWMgZGVtbz1pKCgpPT53YAogICAgPGRpdiBzdHlsZT0id2lkdGg6IDMwMHB4OyBoZWlnaHQ6IDQwMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij4KICAgICAgPGRlZXMtd29ya3NwYWNlLWZpbGV0cmVlPjwvZGVlcy13b3Jrc3BhY2UtZmlsZXRyZWU+CiAgICA8L2Rpdj4KICBgLCJkZW1vIik7c3RhdGljIGRlbW9Hcm91cHM9WyJXb3Jrc3BhY2UiXTsjZT1oYyh0aGlzLG8sbnVsbCk7Z2V0IGV4ZWN1dGlvbkVudmlyb25tZW50KCl7cmV0dXJuIHRoaXMuI2V9c2V0IGV4ZWN1dGlvbkVudmlyb25tZW50KCQpe3RoaXMuI2U9JH0jdD0oaGModGhpcyxsKSxoYyh0aGlzLGQsIi8iKSk7Z2V0IHJvb3RQYXRoKCl7cmV0dXJuIHRoaXMuI3R9c2V0IHJvb3RQYXRoKCQpe3RoaXMuI3Q9JH0jYT0oaGModGhpcyx1KSxoYyh0aGlzLGIsIiIpKTtnZXQgc2VsZWN0ZWRQYXRoKCl7cmV0dXJuIHRoaXMuI2F9c2V0IHNlbGVjdGVkUGF0aCgkKXt0aGlzLiNhPSR9I3M9KGhjKHRoaXMsdiksaGModGhpcyxtLFtdKSk7Z2V0IHRyZWVEYXRhKCl7cmV0dXJuIHRoaXMuI3N9c2V0IHRyZWVEYXRhKCQpe3RoaXMuI3M9JH0jaT0oaGModGhpcyxmKSxoYyh0aGlzLE0sITEpKTtnZXQgaXNMb2FkaW5nKCl7cmV0dXJuIHRoaXMuI2l9c2V0IGlzTG9hZGluZygkKXt0aGlzLiNpPSR9I3I9KGhjKHRoaXMseiksaGModGhpcyxDLCIiKSk7Z2V0IGVycm9yTWVzc2FnZSgpe3JldHVybiB0aGlzLiNyfXNldCBlcnJvck1lc3NhZ2UoJCl7dGhpcy4jcj0kfWV4cGFuZGVkUGF0aHM9KGhjKHRoaXMsXyksbmV3IFNldCk7bG9hZFRyZWVTdGFydGVkPSExO2NsaXBib2FyZFBhdGg9bnVsbDtjbGlwYm9hcmRPcGVyYXRpb249bnVsbDtmaWxlV2F0Y2hlcj1udWxsO3JlZnJlc2hEZWJvdW5jZVRpbWVvdXQ9bnVsbDtsYXN0RXhlY3V0aW9uRW52aXJvbm1lbnQ9bnVsbDtzdGF0aWMgc3R5bGVzPVtxZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk4JSkiLCJoc2woMCAwJSA5JSkiKX07CiAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBzYW5zLXNlcmlmOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgfQoKICAgICAgLnRyZWUtY29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nOiA4cHggMDsKICAgICAgfQoKICAgICAgLnRyZWUtaXRlbSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDRweCA4cHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBtYXJnaW46IDFweCA0cHg7CiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjFzIGVhc2U7CiAgICAgIH0KCiAgICAgIC50cmVlLWl0ZW06aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5MyUpIiwiaHNsKDAgMCUgMTQlKSIpfTsKICAgICAgfQoKICAgICAgLnRyZWUtaXRlbS5zZWxlY3RlZCB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgyMTAgMTAwJSA5NSUpIiwiaHNsKDIxMCA1MCUgMjAlKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTAgMTAwJSA0MCUpIiwiaHNsKDIxMCAxMDAlIDcwJSkiKX07CiAgICAgIH0KCiAgICAgIC50cmVlLWl0ZW0uc2VsZWN0ZWQ6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDEwMCUgOTIlKSIsImhzbCgyMTAgNTAlIDI1JSkiKX07CiAgICAgIH0KCiAgICAgIC5pbmRlbnQgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB3aWR0aDogMTZweDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgfQoKICAgICAgLmV4cGFuZC1pY29uIHsKICAgICAgICB3aWR0aDogMTZweDsKICAgICAgICBoZWlnaHQ6IDE2cHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNTAlKSIsImhzbCgwIDAlIDYwJSkiKX07CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5leHBhbmQtaWNvbi5leHBhbmRlZCB7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwogICAgICB9CgogICAgICAuZXhwYW5kLWljb24uaGlkZGVuIHsKICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC5maWxlLWljb24gewogICAgICAgIHdpZHRoOiAxNnB4OwogICAgICAgIGhlaWdodDogMTZweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDZweDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5maWxlLWljb24gZGVlcy1pY29uIHsKICAgICAgICB3aWR0aDogMTZweDsKICAgICAgICBoZWlnaHQ6IDE2cHg7CiAgICAgIH0KCiAgICAgIC5maWxlLWljb24uZm9sZGVyIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCg0NSA4MCUgNDUlKSIsImhzbCg0NSA3MCUgNTUlKSIpfTsKICAgICAgfQoKICAgICAgLmZpbGUtaWNvbi5maWxlIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDUwJSkiLCJoc2woMCAwJSA2MCUpIil9OwogICAgICB9CgogICAgICAuZmlsZS1pY29uLnR5cGVzY3JpcHQgewogICAgICAgIGNvbG9yOiBoc2woMjExIDYwJSA0OCUpOwogICAgICB9CgogICAgICAuZmlsZS1pY29uLmphdmFzY3JpcHQgewogICAgICAgIGNvbG9yOiBoc2woNTMgOTMlIDU0JSk7CiAgICAgIH0KCiAgICAgIC5maWxlLWljb24uanNvbiB7CiAgICAgICAgY29sb3I6IGhzbCg0NSA4MCUgNTAlKTsKICAgICAgfQoKICAgICAgLmZpbGUtaWNvbi5odG1sIHsKICAgICAgICBjb2xvcjogaHNsKDE0IDc3JSA1MiUpOwogICAgICB9CgogICAgICAuZmlsZS1pY29uLmNzcyB7CiAgICAgICAgY29sb3I6IGhzbCgyMjggNzclIDU5JSk7CiAgICAgIH0KCiAgICAgIC5maWxlLWljb24ubWFya2Rvd24gewogICAgICAgIGNvbG9yOiBoc2woMCAwJSA1MCUpOwogICAgICB9CgogICAgICAuZmlsZS1uYW1lIHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDIwJSkiLCJoc2woMCAwJSA4NSUpIil9OwogICAgICB9CgogICAgICAubG9hZGluZyB7CiAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA1MCUpIiwiaHNsKDAgMCUgNjAlKSIpfTsKICAgICAgfQoKICAgICAgLmVycm9yIHsKICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBjb2xvcjogaHNsKDAgNzAlIDUwJSk7CiAgICAgIH0KCiAgICAgIC5lbXB0eSB7CiAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA1MCUpIiwiaHNsKDAgMCUgNjAlKSIpfTsKICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgIH0KCiAgICAgIC5maWxldHJlZS10b29sYmFyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICBwYWRkaW5nOiAwIDEycHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4NSUpIiwiaHNsKDAgMCUgMTUlKSIpfTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTYlKSIsImhzbCgwIDAlIDglKSIpfTsKICAgICAgICBwb3NpdGlvbjogc3RpY2t5OwogICAgICAgIHRvcDogMDsKICAgICAgICB6LWluZGV4OiAxOwogICAgICB9CgogICAgICAudG9vbGJhci10aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA0MCUpIiwiaHNsKDAgMCUgNjAlKSIpfTsKICAgICAgfQoKICAgICAgLnRvb2xiYXItYWN0aW9ucyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBnYXA6IDRweDsKICAgICAgfQoKICAgICAgLnRvb2xiYXItYnV0dG9uIHsKICAgICAgICBwYWRkaW5nOiA0cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBvcGFjaXR5OiAwLjc7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cywgYmFja2dyb3VuZCAwLjE1czsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAzMCUpIiwiaHNsKDAgMCUgNzAlKSIpfTsKICAgICAgfQoKICAgICAgLnRvb2xiYXItYnV0dG9uOmhvdmVyIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAwJSAvIDAuMDgpIiwiaHNsKDAgMCUgMTAwJSAvIDAuMSkiKX07CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50P3RoaXMuaXNMb2FkaW5nP3dgCiAgICAgICAgPGRpdiBjbGFzcz0ibG9hZGluZyI+CiAgICAgICAgICBMb2FkaW5nIGZpbGVzLi4uCiAgICAgICAgPC9kaXY+CiAgICAgIGA6dGhpcy5lcnJvck1lc3NhZ2U/d2AKICAgICAgICA8ZGl2IGNsYXNzPSJlcnJvciI+CiAgICAgICAgICAke3RoaXMuZXJyb3JNZXNzYWdlfQogICAgICAgIDwvZGl2PgogICAgICBgOndgCiAgICAgIDxkaXYgY2xhc3M9ImZpbGV0cmVlLXRvb2xiYXIiPgogICAgICAgIDxzcGFuIGNsYXNzPSJ0b29sYmFyLXRpdGxlIj5FeHBsb3Jlcjwvc3Bhbj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0b29sYmFyLWFjdGlvbnMiPgogICAgICAgICAgPGRpdiBjbGFzcz0idG9vbGJhci1idXR0b24iIEBjbGljaz0keygpPT50aGlzLmNyZWF0ZU5ld0ZpbGUoIi8iKX0gdGl0bGU9Ik5ldyBGaWxlIj4KICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6ZmlsZVBsdXMifSBpY29uU2l6ZT0iMTYiPjwvZGVlcy1pY29uPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b29sYmFyLWJ1dHRvbiIgQGNsaWNrPSR7KCk9PnRoaXMuY3JlYXRlTmV3Rm9sZGVyKCIvIil9IHRpdGxlPSJOZXcgRm9sZGVyIj4KICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6Zm9sZGVyUGx1cyJ9IGljb25TaXplPSIxNiI+PC9kZWVzLWljb24+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgICR7dGhpcy50cmVlRGF0YS5sZW5ndGg9PT0wP3dgPGRpdiBjbGFzcz0iZW1wdHkiPk5vIGZpbGVzIGZvdW5kLjwvZGl2PmA6d2AKICAgICAgICAgICAgPGRpdiBjbGFzcz0idHJlZS1jb250YWluZXIiIEBjb250ZXh0bWVudT0ke3RoaXMuaGFuZGxlRW1wdHlTcGFjZUNvbnRleHRNZW51fT4KICAgICAgICAgICAgICAke3RoaXMucmVuZGVyVHJlZSh0aGlzLnRyZWVEYXRhKX0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgfQogICAgYDp3YAogICAgICAgIDxkaXYgY2xhc3M9ImVtcHR5Ij4KICAgICAgICAgIE5vIGV4ZWN1dGlvbiBlbnZpcm9ubWVudCBwcm92aWRlZC4KICAgICAgICA8L2Rpdj4KICAgICAgYH1yZW5kZXJUcmVlKCQpe3JldHVybiAkLm1hcChFPT50aGlzLnJlbmRlck5vZGUoRSkpfXJlbmRlck5vZGUoJCl7bGV0IEU9JC50eXBlPT09ImRpcmVjdG9yeSIsSD10aGlzLmV4cGFuZGVkUGF0aHMuaGFzKCQucGF0aCksaz0kLnBhdGg9PT10aGlzLnNlbGVjdGVkUGF0aCxTPXRoaXMuZ2V0RmlsZUljb25DbGFzcygkKTtyZXR1cm4gd2AKICAgICAgPGRpdgogICAgICAgIGNsYXNzPSJ0cmVlLWl0ZW0gJHtrPyJzZWxlY3RlZCI6IiJ9IgogICAgICAgIHN0eWxlPSJwYWRkaW5nLWxlZnQ6ICR7OCskLmxldmVsKjE2fXB4IgogICAgICAgIEBjbGljaz0ke0k9PnRoaXMuaGFuZGxlSXRlbUNsaWNrKEksJCl9CiAgICAgICAgQGNvbnRleHRtZW51PSR7ST0+dGhpcy5oYW5kbGVDb250ZXh0TWVudShJLCQpfQogICAgICA+CiAgICAgICAgPHNwYW4gY2xhc3M9ImV4cGFuZC1pY29uICR7SD8iZXhwYW5kZWQiOiIifSAke0U/IiI6ImhpZGRlbiJ9Ij4KICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHsibHVjaWRlOmNoZXZyb25SaWdodCJ9IGljb25TaXplPSIxMiI+PC9kZWVzLWljb24+CiAgICAgICAgPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJmaWxlLWljb24gJHtTfSI+CiAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7dGhpcy5nZXRGaWxlSWNvbigkKX0gaWNvblNpemU9IjE2Ij48L2RlZXMtaWNvbj4KICAgICAgICA8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9ImZpbGUtbmFtZSI+JHskLm5hbWV9PC9zcGFuPgogICAgICA8L2Rpdj4KICAgICAgJHtFJiZIJiYkLmNoaWxkcmVuP3RoaXMucmVuZGVyVHJlZSgkLmNoaWxkcmVuKToiIn0KICAgIGB9Z2V0RmlsZUljb24oJCl7aWYoJC50eXBlPT09ImRpcmVjdG9yeSIpcmV0dXJuIHRoaXMuZXhwYW5kZWRQYXRocy5oYXMoJC5wYXRoKT8ibHVjaWRlOmZvbGRlck9wZW4iOiJsdWNpZGU6Zm9sZGVyIjtzd2l0Y2goJC5uYW1lLnNwbGl0KCIuIikucG9wKCk/LnRvTG93ZXJDYXNlKCkpe2Nhc2UidHMiOmNhc2UidHN4IjpyZXR1cm4ibHVjaWRlOmZpbGVDb2RlIjtjYXNlImpzIjpjYXNlImpzeCI6cmV0dXJuImx1Y2lkZTpmaWxlQ29kZSI7Y2FzZSJqc29uIjpyZXR1cm4ibHVjaWRlOmZpbGVKc29uIjtjYXNlImh0bWwiOnJldHVybiJsdWNpZGU6ZmlsZUNvZGUiO2Nhc2UiY3NzIjpjYXNlInNjc3MiOmNhc2UibGVzcyI6cmV0dXJuImx1Y2lkZTpmaWxlQ29kZSI7Y2FzZSJtZCI6cmV0dXJuImx1Y2lkZTpmaWxlVGV4dCI7Y2FzZSJwbmciOmNhc2UianBnIjpjYXNlImpwZWciOmNhc2UiZ2lmIjpjYXNlInN2ZyI6cmV0dXJuImx1Y2lkZTppbWFnZSI7ZGVmYXVsdDpyZXR1cm4ibHVjaWRlOmZpbGUifX1nZXRGaWxlSWNvbkNsYXNzKCQpe2lmKCQudHlwZT09PSJkaXJlY3RvcnkiKXJldHVybiJmb2xkZXIiO3N3aXRjaCgkLm5hbWUuc3BsaXQoIi4iKS5wb3AoKT8udG9Mb3dlckNhc2UoKSl7Y2FzZSJ0cyI6Y2FzZSJ0c3giOnJldHVybiJ0eXBlc2NyaXB0IjtjYXNlImpzIjpjYXNlImpzeCI6cmV0dXJuImphdmFzY3JpcHQiO2Nhc2UianNvbiI6cmV0dXJuImpzb24iO2Nhc2UiaHRtbCI6cmV0dXJuImh0bWwiO2Nhc2UiY3NzIjpjYXNlInNjc3MiOmNhc2UibGVzcyI6cmV0dXJuImNzcyI7Y2FzZSJtZCI6cmV0dXJuIm1hcmtkb3duIjtkZWZhdWx0OnJldHVybiJmaWxlIn19YXN5bmMgaGFuZGxlSXRlbUNsaWNrKCQsRSl7JC5zdG9wUHJvcGFnYXRpb24oKSxFLnR5cGU9PT0iZGlyZWN0b3J5Ij9hd2FpdCB0aGlzLnRvZ2dsZURpcmVjdG9yeShFKToodGhpcy5zZWxlY3RlZFBhdGg9RS5wYXRoLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImZpbGUtc2VsZWN0Iix7ZGV0YWlsOntwYXRoOkUucGF0aCxuYW1lOkUubmFtZX0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKSl9YXN5bmMgdG9nZ2xlRGlyZWN0b3J5KCQpe3RoaXMuZXhwYW5kZWRQYXRocy5oYXMoJC5wYXRoKT90aGlzLmV4cGFuZGVkUGF0aHMuZGVsZXRlKCQucGF0aCk6KHRoaXMuZXhwYW5kZWRQYXRocy5hZGQoJC5wYXRoKSwoISQuY2hpbGRyZW58fCQuY2hpbGRyZW4ubGVuZ3RoPT09MCkmJmF3YWl0IHRoaXMubG9hZERpcmVjdG9yeUNvbnRlbnRzKCQpKSx0aGlzLnJlcXVlc3RVcGRhdGUoKX1hc3luYyBsb2FkRGlyZWN0b3J5Q29udGVudHMoJCl7aWYodGhpcy5leGVjdXRpb25FbnZpcm9ubWVudCl0cnl7bGV0IEU9YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5yZWFkRGlyKCQucGF0aCk7JC5jaGlsZHJlbj10aGlzLnNvcnRFbnRyaWVzKEUpLm1hcChIPT4oey4uLkgsbGV2ZWw6JC5sZXZlbCsxLGV4cGFuZGVkOiExLGNoaWxkcmVuOkgudHlwZT09PSJkaXJlY3RvcnkiP1tdOnZvaWQgMH0pKX1jYXRjaChFKXtjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gbG9hZCBkaXJlY3RvcnkgJHskLnBhdGh9OmAsRSl9fWFzeW5jIGhhbmRsZUNvbnRleHRNZW51KCQsRSl7JC5wcmV2ZW50RGVmYXVsdCgpLCQuc3RvcFByb3BhZ2F0aW9uKCk7bGV0IEg9W107RS50eXBlPT09ImRpcmVjdG9yeSImJkgucHVzaCh7bmFtZToiTmV3IEZpbGUiLGljb25OYW1lOiJmaWxlUGx1cyIsYWN0aW9uOmkoYXN5bmMoKT0+dGhpcy5jcmVhdGVOZXdGaWxlKEUucGF0aCksImFjdGlvbiIpfSx7bmFtZToiTmV3IEZvbGRlciIsaWNvbk5hbWU6ImZvbGRlclBsdXMiLGFjdGlvbjppKGFzeW5jKCk9PnRoaXMuY3JlYXRlTmV3Rm9sZGVyKEUucGF0aCksImFjdGlvbiIpfSx7ZGl2aWRlcjohMH0pLEgucHVzaCh7bmFtZToiUmVuYW1lIixpY29uTmFtZToicGVuY2lsIixhY3Rpb246aShhc3luYygpPT50aGlzLnJlbmFtZUl0ZW0oRSksImFjdGlvbiIpfSx7bmFtZToiRHVwbGljYXRlIixpY29uTmFtZToiZmlsZXMiLGFjdGlvbjppKGFzeW5jKCk9PnRoaXMuZHVwbGljYXRlSXRlbShFKSwiYWN0aW9uIil9LHtuYW1lOiJDb3B5IixpY29uTmFtZToiY29weSIsYWN0aW9uOmkoYXN5bmMoKT0+dGhpcy5jb3B5SXRlbShFKSwiYWN0aW9uIil9KSxFLnR5cGU9PT0iZGlyZWN0b3J5IiYmdGhpcy5jbGlwYm9hcmRQYXRoJiZILnB1c2goe25hbWU6IlBhc3RlIixpY29uTmFtZToiY2xpcGJvYXJkIixhY3Rpb246aShhc3luYygpPT50aGlzLnBhc3RlSXRlbShFLnBhdGgpLCJhY3Rpb24iKX0pLEgucHVzaCh7ZGl2aWRlcjohMH0se25hbWU6IkRlbGV0ZSIsaWNvbk5hbWU6InRyYXNoMiIsYWN0aW9uOmkoYXN5bmMoKT0+dGhpcy5kZWxldGVJdGVtKEUpLCJhY3Rpb24iKX0pLGF3YWl0ICRhLm9wZW5Db250ZXh0TWVudVdpdGhPcHRpb25zKCQsSCl9YXN5bmMgaGFuZGxlRW1wdHlTcGFjZUNvbnRleHRNZW51KCQpe2lmKCQudGFyZ2V0LmNsb3Nlc3QoIi50cmVlLWl0ZW0iKSlyZXR1cm47JC5wcmV2ZW50RGVmYXVsdCgpLCQuc3RvcFByb3BhZ2F0aW9uKCk7bGV0IEg9W3tuYW1lOiJOZXcgRmlsZSIsaWNvbk5hbWU6ImZpbGVQbHVzIixhY3Rpb246aShhc3luYygpPT50aGlzLmNyZWF0ZU5ld0ZpbGUoIi8iKSwiYWN0aW9uIil9LHtuYW1lOiJOZXcgRm9sZGVyIixpY29uTmFtZToiZm9sZGVyUGx1cyIsYWN0aW9uOmkoYXN5bmMoKT0+dGhpcy5jcmVhdGVOZXdGb2xkZXIoIi8iKSwiYWN0aW9uIil9XTt0aGlzLmNsaXBib2FyZFBhdGgmJkgucHVzaCh7ZGl2aWRlcjohMH0se25hbWU6IlBhc3RlIixpY29uTmFtZToiY2xpcGJvYXJkIixhY3Rpb246aShhc3luYygpPT50aGlzLnBhc3RlSXRlbSgiLyIpLCJhY3Rpb24iKX0pLGF3YWl0ICRhLm9wZW5Db250ZXh0TWVudVdpdGhPcHRpb25zKCQsSCl9YXN5bmMgc2hvd0lucHV0TW9kYWwoJCl7cmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIEU9PntsZXQgSD1hd2FpdCBpcy5jcmVhdGVBbmRTaG93KHtoZWFkaW5nOiQuaGVhZGluZyx3aWR0aDoic21hbGwiLGNvbnRlbnQ6d2AKICAgICAgICAgIDxkZWVzLWlucHV0LXRleHQKICAgICAgICAgICAgLmxhYmVsPSR7JC5sYWJlbH0KICAgICAgICAgICAgLnZhbHVlPSR7JC52YWx1ZXx8IiJ9CiAgICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgICAgYCxtZW51T3B0aW9uczpbe25hbWU6IkNhbmNlbCIsYWN0aW9uOmkoYXN5bmMgUz0+e2F3YWl0IFMuZGVzdHJveSgpLEUobnVsbCl9LCJhY3Rpb24iKX0se25hbWU6JC5idXR0b25OYW1lfHwiQ3JlYXRlIixhY3Rpb246aShhc3luYyBTPT57bGV0IFI9Uy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIubW9kYWwgLmNvbnRlbnQiKT8ucXVlcnlTZWxlY3RvcigiZGVlcy1pbnB1dC10ZXh0Iik/LnZhbHVlPy50cmltKCl8fCIiO2F3YWl0IFMuZGVzdHJveSgpLEUoUnx8bnVsbCl9LCJhY3Rpb24iKX1dfSk7YXdhaXQgSC51cGRhdGVDb21wbGV0ZTtsZXQgaz1ILnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5tb2RhbCAuY29udGVudCIpO2lmKGspe2xldCBTPWsucXVlcnlTZWxlY3RvcigiZGVlcy1pbnB1dC10ZXh0Iik7UyYmKGF3YWl0IFMudXBkYXRlQ29tcGxldGUsUy5mb2N1cygpKX19KX1hc3luYyBjcmVhdGVOZXdGaWxlKCQpe2xldCBFPWF3YWl0IHRoaXMuc2hvd0lucHV0TW9kYWwoe2hlYWRpbmc6Ik5ldyBGaWxlIixsYWJlbDoiRmlsZSBuYW1lIn0pO2lmKCFFfHwhdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudClyZXR1cm47bGV0IEg9JD09PSIvIj9gLyR7RX1gOmAkeyR9LyR7RX1gO3RyeXthd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LndyaXRlRmlsZShILCIiKSxhd2FpdCB0aGlzLnJlZnJlc2goKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJmaWxlLWNyZWF0ZWQiLHtkZXRhaWw6e3BhdGg6SH0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1jYXRjaChrKXtjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gY3JlYXRlIGZpbGU6IixrKX19YXN5bmMgY3JlYXRlTmV3Rm9sZGVyKCQpe2xldCBFPWF3YWl0IHRoaXMuc2hvd0lucHV0TW9kYWwoe2hlYWRpbmc6Ik5ldyBGb2xkZXIiLGxhYmVsOiJGb2xkZXIgbmFtZSJ9KTtpZighRXx8IXRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQpcmV0dXJuO2xldCBIPSQ9PT0iLyI/YC8ke0V9YDpgJHskfS8ke0V9YDt0cnl7YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5ta2RpcihIKSxhd2FpdCB0aGlzLnJlZnJlc2goKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJmb2xkZXItY3JlYXRlZCIse2RldGFpbDp7cGF0aDpIfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWNhdGNoKGspe2NvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBjcmVhdGUgZm9sZGVyOiIsayl9fWFzeW5jIGRlbGV0ZUl0ZW0oJCl7aWYoISghdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudHx8IWNvbmZpcm0oYERlbGV0ZSAkeyQubmFtZX0/YCkpKXRyeXthd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LnJtKCQucGF0aCx7cmVjdXJzaXZlOiQudHlwZT09PSJkaXJlY3RvcnkifSksYXdhaXQgdGhpcy5yZWZyZXNoKCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiaXRlbS1kZWxldGVkIix7ZGV0YWlsOntwYXRoOiQucGF0aCx0eXBlOiQudHlwZX0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1jYXRjaChIKXtjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gZGVsZXRlIGl0ZW06IixIKX19YXN5bmMgcmVuYW1lSXRlbSgkKXtpZighdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudClyZXR1cm47bGV0IEU9YXdhaXQgdGhpcy5zaG93SW5wdXRNb2RhbCh7aGVhZGluZzoiUmVuYW1lIixsYWJlbDoiTmV3IG5hbWUiLHZhbHVlOiQubmFtZSxidXR0b25OYW1lOiJSZW5hbWUifSk7aWYoIUV8fEU9PT0kLm5hbWUpcmV0dXJuO2xldCBIPSQucGF0aC5zdWJzdHJpbmcoMCwkLnBhdGgubGFzdEluZGV4T2YoIi8iKSl8fCIvIixrPUg9PT0iLyI/YC8ke0V9YDpgJHtIfS8ke0V9YDt0cnl7aWYoJC50eXBlPT09ImZpbGUiKXtsZXQgUz1hd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LnJlYWRGaWxlKCQucGF0aCk7YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC53cml0ZUZpbGUoayxTKSxhd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LnJtKCQucGF0aCl9ZWxzZSBhd2FpdCB0aGlzLmNvcHlEaXJlY3RvcnlDb250ZW50cygkLnBhdGgsayksYXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5ybSgkLnBhdGgse3JlY3Vyc2l2ZTohMH0pO2F3YWl0IHRoaXMucmVmcmVzaCgpLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoIml0ZW0tcmVuYW1lZCIse2RldGFpbDp7b2xkUGF0aDokLnBhdGgsbmV3UGF0aDprLHR5cGU6JC50eXBlfSxidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfWNhdGNoKFMpe2NvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byByZW5hbWUgaXRlbToiLFMpfX1hc3luYyBkdXBsaWNhdGVJdGVtKCQpe2lmKCF0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50KXJldHVybjtsZXQgRT0kLnBhdGguc3Vic3RyaW5nKDAsJC5wYXRoLmxhc3RJbmRleE9mKCIvIikpfHwiLyIsSDtpZigkLnR5cGU9PT0iZmlsZSIpe2xldCBTPSQubmFtZS5sYXN0SW5kZXhPZigiLiIpO2lmKFM+MCl7bGV0IEk9JC5uYW1lLnN1YnN0cmluZygwLFMpLFA9JC5uYW1lLnN1YnN0cmluZyhTKTtIPWAke0l9X2NvcHkke1B9YH1lbHNlIEg9YCR7JC5uYW1lfV9jb3B5YH1lbHNlIEg9YCR7JC5uYW1lfV9jb3B5YDtsZXQgaz1FPT09Ii8iP2AvJHtIfWA6YCR7RX0vJHtIfWA7dHJ5e2lmKCQudHlwZT09PSJmaWxlIil7bGV0IFM9YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5yZWFkRmlsZSgkLnBhdGgpO2F3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQud3JpdGVGaWxlKGssUyl9ZWxzZSBhd2FpdCB0aGlzLmNvcHlEaXJlY3RvcnlDb250ZW50cygkLnBhdGgsayk7YXdhaXQgdGhpcy5yZWZyZXNoKCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiaXRlbS1kdXBsaWNhdGVkIix7ZGV0YWlsOntzb3VyY2VQYXRoOiQucGF0aCxuZXdQYXRoOmssdHlwZTokLnR5cGV9LGJ1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9Y2F0Y2goUyl7Y29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGR1cGxpY2F0ZSBpdGVtOiIsUyl9fWFzeW5jIGNvcHlJdGVtKCQpe3RoaXMuY2xpcGJvYXJkUGF0aD0kLnBhdGgsdGhpcy5jbGlwYm9hcmRPcGVyYXRpb249ImNvcHkifWFzeW5jIHBhc3RlSXRlbSgkKXtpZighdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudHx8IXRoaXMuY2xpcGJvYXJkUGF0aClyZXR1cm47bGV0IEU9dGhpcy5jbGlwYm9hcmRQYXRoLnNwbGl0KCIvIikucG9wKCl8fCJwYXN0ZWQiLEg9JD09PSIvIj9gLyR7RX1gOmAkeyR9LyR7RX1gO3RyeXtpZighYXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5leGlzdHModGhpcy5jbGlwYm9hcmRQYXRoKSl7Y29uc29sZS5lcnJvcigiU291cmNlIGZpbGUgbm8gbG9uZ2VyIGV4aXN0cyIpLHRoaXMuY2xpcGJvYXJkUGF0aD1udWxsLHRoaXMuY2xpcGJvYXJkT3BlcmF0aW9uPW51bGw7cmV0dXJufXRyeXtsZXQgaz1hd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LnJlYWRGaWxlKHRoaXMuY2xpcGJvYXJkUGF0aCk7YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC53cml0ZUZpbGUoSCxrKX1jYXRjaHthd2FpdCB0aGlzLmNvcHlEaXJlY3RvcnlDb250ZW50cyh0aGlzLmNsaXBib2FyZFBhdGgsSCl9YXdhaXQgdGhpcy5yZWZyZXNoKCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiaXRlbS1wYXN0ZWQiLHtkZXRhaWw6e3NvdXJjZVBhdGg6dGhpcy5jbGlwYm9hcmRQYXRoLHRhcmdldFBhdGg6SH0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKSx0aGlzLmNsaXBib2FyZFBhdGg9bnVsbCx0aGlzLmNsaXBib2FyZE9wZXJhdGlvbj1udWxsfWNhdGNoKGspe2NvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBwYXN0ZSBpdGVtOiIsayl9fWFzeW5jIGNvcHlEaXJlY3RvcnlDb250ZW50cygkLEUpe2lmKCF0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50KXJldHVybjthd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50Lm1rZGlyKEUpO2xldCBIPWF3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQucmVhZERpcigkKTtmb3IobGV0IGsgb2YgSCl7bGV0IFM9JD09PSIvIj9gLyR7ay5uYW1lfWA6YCR7JH0vJHtrLm5hbWV9YCxJPUU9PT0iLyI/YC8ke2submFtZX1gOmAke0V9LyR7ay5uYW1lfWA7aWYoay50eXBlPT09ImRpcmVjdG9yeSIpYXdhaXQgdGhpcy5jb3B5RGlyZWN0b3J5Q29udGVudHMoUyxJKTtlbHNle2xldCBQPWF3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQucmVhZEZpbGUoUyk7YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC53cml0ZUZpbGUoSSxQKX19fWFzeW5jIGZpcnN0VXBkYXRlZCgpe2F3YWl0IHRoaXMubG9hZFRyZWUoKX1hc3luYyB1cGRhdGVkKCQpeyQuaGFzKCJleGVjdXRpb25FbnZpcm9ubWVudCIpJiYodGhpcy5sYXN0RXhlY3V0aW9uRW52aXJvbm1lbnQhPT10aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50JiYodGhpcy5zdG9wRmlsZVdhdGNoZXIoKSx0aGlzLmxhc3RFeGVjdXRpb25FbnZpcm9ubWVudD10aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50KSx0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50JiYoYXdhaXQgdGhpcy5sb2FkVHJlZSgpLHRoaXMuc3RhcnRGaWxlV2F0Y2hlcigpKSl9YXN5bmMgZGlzY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuc3RvcEZpbGVXYXRjaGVyKCksdGhpcy5yZWZyZXNoRGVib3VuY2VUaW1lb3V0JiYoY2xlYXJUaW1lb3V0KHRoaXMucmVmcmVzaERlYm91bmNlVGltZW91dCksdGhpcy5yZWZyZXNoRGVib3VuY2VUaW1lb3V0PW51bGwpfXN0YXJ0RmlsZVdhdGNoZXIoKXtpZighKCF0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50fHx0aGlzLmZpbGVXYXRjaGVyKSl0cnl7dGhpcy5maWxlV2F0Y2hlcj10aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LndhdGNoKCIvIiwoJCxFKT0+e3RoaXMucmVmcmVzaERlYm91bmNlVGltZW91dCYmY2xlYXJUaW1lb3V0KHRoaXMucmVmcmVzaERlYm91bmNlVGltZW91dCksdGhpcy5yZWZyZXNoRGVib3VuY2VUaW1lb3V0PXNldFRpbWVvdXQoKCk9Pnt0aGlzLnJlZnJlc2goKX0sMzAwKX0se3JlY3Vyc2l2ZTohMH0pfWNhdGNoKCQpe2NvbnNvbGUud2FybigiRmlsZSB3YXRjaGluZyBub3Qgc3VwcG9ydGVkOiIsJCl9fXN0b3BGaWxlV2F0Y2hlcigpe3RoaXMuZmlsZVdhdGNoZXImJih0aGlzLmZpbGVXYXRjaGVyLnN0b3AoKSx0aGlzLmZpbGVXYXRjaGVyPW51bGwpfWFzeW5jIGxvYWRUcmVlKCl7aWYodGhpcy5leGVjdXRpb25FbnZpcm9ubWVudCYmIXRoaXMubG9hZFRyZWVTdGFydGVkKXt0aGlzLmxvYWRUcmVlU3RhcnRlZD0hMCx0aGlzLmlzTG9hZGluZz0hMCx0aGlzLmVycm9yTWVzc2FnZT0iIjt0cnl7dGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5yZWFkeXx8YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5pbml0KCk7bGV0ICQ9YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5yZWFkRGlyKHRoaXMucm9vdFBhdGgpO3RoaXMudHJlZURhdGE9dGhpcy5zb3J0RW50cmllcygkKS5tYXAoRT0+KHsuLi5FLGxldmVsOjAsZXhwYW5kZWQ6ITEsY2hpbGRyZW46RS50eXBlPT09ImRpcmVjdG9yeSI/W106dm9pZCAwfSkpfWNhdGNoKCQpe3RoaXMuZXJyb3JNZXNzYWdlPWBGYWlsZWQgdG8gbG9hZCBmaWxlczogJHskfWAsY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGxvYWQgZmlsZSB0cmVlOiIsJCksdGhpcy5sb2FkVHJlZVN0YXJ0ZWQ9ITF9ZmluYWxseXt0aGlzLmlzTG9hZGluZz0hMX19fXNvcnRFbnRyaWVzKCQpe3JldHVybiAkLnNvcnQoKEUsSCk9PkUudHlwZSE9PUgudHlwZT9FLnR5cGU9PT0iZGlyZWN0b3J5Ij8tMToxOkUubmFtZS5sb2NhbGVDb21wYXJlKEgubmFtZSkpfWFzeW5jIHJlZnJlc2goKXt0aGlzLmV4cGFuZGVkUGF0aHMuY2xlYXIoKSx0aGlzLmxvYWRUcmVlU3RhcnRlZD0hMSxhd2FpdCB0aGlzLmxvYWRUcmVlKCl9c2VsZWN0RmlsZSgkKXt0aGlzLnNlbGVjdGVkUGF0aD0kfXN0YXRpY3toYyhhLHQpfX07cmV0dXJuIE89YX0pKCl9KTt2YXIgUGx0LHBKLGN0cyxJbHQ9ZygoKT0+e3BlKCk7aHQoKTtPdSgpO21yKCk7UGx0PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxwSj1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sY3RzPSgoKT0+e2xldCBzPVtuZSgiZGVlcy13b3Jrc3BhY2UtdGVybWluYWwtcHJldmlldyIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdO3ZhciBjPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzV29ya3NwYWNlVGVybWluYWxQcmV2aWV3Iil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGI9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpTdHJpbmd9KV0scD1bTCh7dHlwZTpBcnJheX0pXSxQbHQodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjb21tYW5kIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHY9PiJjb21tYW5kImluIHYsImhhcyIpLGdldDppKHY9PnYuY29tbWFuZCwiZ2V0Iiksc2V0OmkoKHYseCk9Pnt2LmNvbW1hbmQ9eH0sInNldCIpfSxtZXRhZGF0YTpifSxvLGwpLFBsdCh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImxpbmVzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHY9PiJsaW5lcyJpbiB2LCJoYXMiKSxnZXQ6aSh2PT52LmxpbmVzLCJnZXQiKSxzZXQ6aSgodix4KT0+e3YubGluZXM9eH0sInNldCIpfSxtZXRhZGF0YTpifSxkLHUpLFBsdChudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpifSxudWxsLHQpLGM9YT1lLnZhbHVlLGImJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pfXN0YXRpYyBkZW1vPWkoKCk9PndgCiAgICA8ZGVlcy13b3Jrc3BhY2UtdGVybWluYWwtcHJldmlldwogICAgICAuY29tbWFuZD0keyJwbnBtIGluc3RhbGwifQogICAgICAubGluZXM9JHtbIlBhY2thZ2VzOiArNDIiLCJQcm9ncmVzczogcmVzb2x2ZWQgMTQyLCByZXVzZWQgMTQwLCBkb3dubG9hZGVkIDIsIGFkZGVkIDQyLCBkb25lIiwiIiwiZGVwZW5kZW5jaWVzOiIsIisgQHB1c2gucm9ja3Mvc21hcnRwcm9taXNlIDQuMi4zIiwiKyB0eXBlc2NyaXB0IDUuMy4zIiwiIiwiRG9uZSBpbiAyLjNzIl19CiAgICA+PC9kZWVzLXdvcmtzcGFjZS10ZXJtaW5hbC1wcmV2aWV3PgogIGAsImRlbW8iKTtzdGF0aWMgZGVtb0dyb3Vwcz1bIldvcmtzcGFjZSJdOyNlPXBKKHRoaXMsbywiIik7Z2V0IGNvbW1hbmQoKXtyZXR1cm4gdGhpcy4jZX1zZXQgY29tbWFuZChiKXt0aGlzLiNlPWJ9I3Q9KHBKKHRoaXMsbCkscEoodGhpcyxkLFtdKSk7Z2V0IGxpbmVzKCl7cmV0dXJuIHRoaXMuI3R9c2V0IGxpbmVzKGIpe3RoaXMuI3Q9Yn10ZXJtaW5hbD0ocEoodGhpcyx1KSxudWxsKTtmaXRBZGRvbj1udWxsO2xhc3RMaW5lQ291bnQ9MDtyZXNpemVPYnNlcnZlcj1udWxsO3Rlcm1pbmFsVGhlbWVTdWJzY3JpcHRpb249bnVsbDtzdGF0aWMgc3R5bGVzPVtxZSxoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGhlaWdodDogMjAwcHg7CiAgICAgIH0KCiAgICAgIGRlZXMtdGlsZSB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CgogICAgICAudGVybWluYWwtaGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgcGFkZGluZzogMCAxMnB4OwogICAgICAgIGhlaWdodDogMzJweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC1mYW1pbHk6ICdTRiBNb25vJywgJ01vbmFjbycsICdJbmNvbnNvbGF0YScsICdGaXJhIENvZGUnLCBtb25vc3BhY2U7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgIH0KCiAgICAgIC50ZXJtaW5hbC1oZWFkZXItaWNvbiB7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1tdXRlZCk7CiAgICAgIH0KCiAgICAgIC50ZXJtaW5hbC1oZWFkZXItY29tbWFuZCB7CiAgICAgICAgY29sb3I6IHZhcigtLWRlZXMtY29sb3ItdGV4dC1zZWNvbmRhcnkpOwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIH0KCiAgICAgIC50ZXJtaW5hbC1jb250YWluZXIgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBpbnNldDogMDsKICAgICAgICBwYWRkaW5nOiA4cHg7CiAgICAgIH0KCiAgICAgICN4dGVybS1jb250YWluZXIgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDhweDsKICAgICAgICBsZWZ0OiA4cHg7CiAgICAgICAgcmlnaHQ6IDhweDsKICAgICAgICBib3R0b206IDhweDsKICAgICAgfQoKICAgICAgLyogeHRlcm0uanMgc3R5bGVzICovCiAgICAgIC54dGVybSB7CiAgICAgICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiAnbGlnYScgMDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIH0KCiAgICAgIC54dGVybS5mb2N1cywKICAgICAgLnh0ZXJtOmZvY3VzIHsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICB9CgogICAgICAueHRlcm0gLnh0ZXJtLWhlbHBlcnMgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgei1pbmRleDogNTsKICAgICAgfQoKICAgICAgLnh0ZXJtIC54dGVybS1oZWxwZXItdGV4dGFyZWEgewogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgYm9yZGVyOiAwOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBsZWZ0OiAtOTk5OWVtOwogICAgICAgIHRvcDogMDsKICAgICAgICB3aWR0aDogMDsKICAgICAgICBoZWlnaHQ6IDA7CiAgICAgICAgei1pbmRleDogLTU7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHJlc2l6ZTogbm9uZTsKICAgICAgfQoKICAgICAgLnh0ZXJtIC5jb21wb3NpdGlvbi12aWV3IHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMwMDAwMDAiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMzMzMzMzIiwiI2ZmZmZmZiIpfTsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIHotaW5kZXg6IDE7CiAgICAgIH0KCiAgICAgIC54dGVybSAuY29tcG9zaXRpb24tdmlldy5hY3RpdmUgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICAueHRlcm0gLnh0ZXJtLXZpZXdwb3J0IHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMwMDAwMDAiKX07CiAgICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsOwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB0b3A6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICB9CgogICAgICAueHRlcm0gLnh0ZXJtLXNjcmVlbiB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAueHRlcm0gLnh0ZXJtLXNjcmVlbiBjYW52YXMgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHRvcDogMDsKICAgICAgfQoKICAgICAgLnh0ZXJtIC54dGVybS1zY3JvbGwtYXJlYSB7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICB9CgogICAgICAueHRlcm0tY2hhci1tZWFzdXJlLWVsZW1lbnQgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAtOTk5OWVtOwogICAgICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7CiAgICAgIH0KCiAgICAgIC54dGVybSB7CiAgICAgICAgY3Vyc29yOiB0ZXh0OwogICAgICB9CgogICAgICAueHRlcm0uZW5hYmxlLW1vdXNlLWV2ZW50cyB7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICB9CgogICAgICAueHRlcm0ueHRlcm0tY3Vyc29yLXBvaW50ZXIgewogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQoKICAgICAgLnh0ZXJtLmNvbHVtbi1zZWxlY3QuZm9jdXMgewogICAgICAgIGN1cnNvcjogY3Jvc3NoYWlyOwogICAgICB9CgogICAgICAueHRlcm0gLnh0ZXJtLWFjY2Vzc2liaWxpdHksCiAgICAgIC54dGVybSAueHRlcm0tbWVzc2FnZSB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICB6LWluZGV4OiAxMDsKICAgICAgICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgIH0KCiAgICAgIC54dGVybSAubGl2ZS1yZWdpb24gewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBsZWZ0OiAtOTk5OXB4OwogICAgICAgIHdpZHRoOiAxcHg7CiAgICAgICAgaGVpZ2h0OiAxcHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLnh0ZXJtLWRpbSB7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICB9CgogICAgICAueHRlcm0tdW5kZXJsaW5lIHsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgICAgfQoKICAgICAgLyogQ3VzdG9tIHNjcm9sbGJhciBmb3IgeHRlcm0gdmlld3BvcnQgKi8KICAgICAgLnh0ZXJtIC54dGVybS12aWV3cG9ydDo6LXdlYmtpdC1zY3JvbGxiYXIgewogICAgICAgIHdpZHRoOiA4cHg7CiAgICAgIH0KCiAgICAgIC54dGVybSAueHRlcm0tdmlld3BvcnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTYlKSIsImhzbCgwIDAlIDglKSIpfTsKICAgICAgfQoKICAgICAgLnh0ZXJtIC54dGVybS12aWV3cG9ydDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3Itc2Nyb2xsYmFyLXRodW1iKTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgIH0KCiAgICAgIC54dGVybSAueHRlcm0tdmlld3BvcnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZWVzLWNvbG9yLXNjcm9sbGJhci10aHVtYi1ob3Zlcik7CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGVlcy10aWxlPgogICAgICAgIDxkaXYgc2xvdD0iaGVhZGVyIiBjbGFzcz0idGVybWluYWwtaGVhZGVyIj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtaW5hbC1oZWFkZXItaWNvbiI+JDwvc3Bhbj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtaW5hbC1oZWFkZXItY29tbWFuZCI+JHt0aGlzLmNvbW1hbmR8fCJXYWl0aW5nLi4uIn08L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0idGVybWluYWwtY29udGFpbmVyIj4KICAgICAgICAgIDxkaXYgaWQ9Inh0ZXJtLWNvbnRhaW5lciI+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGVlcy10aWxlPgogICAgYH1nZXRUZXJtaW5hbFRoZW1lKGIpe3JldHVybiBiP3tiYWNrZ3JvdW5kOiIjZmZmZmZmIixmb3JlZ3JvdW5kOiIjMzMzMzMzIixjdXJzb3I6IiMzMzMzMzMiLGN1cnNvckFjY2VudDoiI2ZmZmZmZiIsc2VsZWN0aW9uQmFja2dyb3VuZDoicmdiYSgwLCAwLCAwLCAwLjIpIn06e2JhY2tncm91bmQ6IiMwMDAwMDAiLGZvcmVncm91bmQ6IiNjY2NjY2MiLGN1cnNvcjoiI2NjY2NjYyIsY3Vyc29yQWNjZW50OiIjMDAwMDAwIixzZWxlY3Rpb25CYWNrZ3JvdW5kOiJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMikifX1hc3luYyBmaXJzdFVwZGF0ZWQoYil7c3VwZXIuZmlyc3RVcGRhdGVkKGIpO2xldCB2PXRoaXMuc2hhZG93Um9vdD8uZ2V0RWxlbWVudEJ5SWQoInh0ZXJtLWNvbnRhaW5lciIpO2lmKCF2KXJldHVybjtsZXQgeD1hd2FpdCB0aGlzLmRvbXRvb2xzUHJvbWlzZSxtPXgudGhlbWVNYW5hZ2VyLmdvQnJpZ2h0Qm9vbGVhbixmPWFvLmdldEluc3RhbmNlKCksW3ksTV09YXdhaXQgUHJvbWlzZS5hbGwoW2YubG9hZFh0ZXJtKCksZi5sb2FkWHRlcm1GaXRBZGRvbigpXSk7dGhpcy50ZXJtaW5hbD1uZXcgeS5UZXJtaW5hbCh7Y29udmVydEVvbDohMCxjdXJzb3JCbGluazohMSxkaXNhYmxlU3RkaW46ITAsZm9udFNpemU6MTIsZm9udEZhbWlseToiJ1NGIE1vbm8nLCAnTW9uYWNvJywgJ0luY29uc29sYXRhJywgJ0ZpcmEgQ29kZScsIG1vbm9zcGFjZSIsdGhlbWU6dGhpcy5nZXRUZXJtaW5hbFRoZW1lKG0pLHNjcm9sbGJhY2s6MWUzfSksdGhpcy50ZXJtaW5hbFRoZW1lU3Vic2NyaXB0aW9uPXgudGhlbWVNYW5hZ2VyLnRoZW1lT2JzZXJ2YWJsZS5zdWJzY3JpYmUoej0+e3RoaXMudGVybWluYWwmJih0aGlzLnRlcm1pbmFsLm9wdGlvbnMudGhlbWU9dGhpcy5nZXRUZXJtaW5hbFRoZW1lKHopKX0pLHRoaXMuZml0QWRkb249bmV3IE0uRml0QWRkb24sdGhpcy50ZXJtaW5hbC5sb2FkQWRkb24odGhpcy5maXRBZGRvbiksdGhpcy50ZXJtaW5hbC5vcGVuKHYpLHRoaXMuZml0QWRkb24uZml0KCksdGhpcy5yZXNpemVPYnNlcnZlcj1uZXcgUmVzaXplT2JzZXJ2ZXIoKCk9Pnt0aGlzLmZpdEFkZG9uJiZ0aGlzLmZpdEFkZG9uLmZpdCgpfSksdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHYpLHRoaXMud3JpdGVOZXdMaW5lcygpfWFzeW5jIHVwZGF0ZWQoYil7c3VwZXIudXBkYXRlZChiKSxiLmhhcygibGluZXMiKSYmdGhpcy53cml0ZU5ld0xpbmVzKCl9d3JpdGVOZXdMaW5lcygpe2lmKCF0aGlzLnRlcm1pbmFsKXJldHVybjtsZXQgYj10aGlzLmxpbmVzLnNsaWNlKHRoaXMubGFzdExpbmVDb3VudCk7Zm9yKGxldCB2IG9mIGIpdGhpcy50ZXJtaW5hbC53cml0ZWxuKHYpO3RoaXMubGFzdExpbmVDb3VudD10aGlzLmxpbmVzLmxlbmd0aH1hc3luYyBkaXNjb25uZWN0ZWRDYWxsYmFjaygpe3RoaXMucmVzaXplT2JzZXJ2ZXImJih0aGlzLnJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKSx0aGlzLnJlc2l6ZU9ic2VydmVyPW51bGwpLHRoaXMudGVybWluYWxUaGVtZVN1YnNjcmlwdGlvbiYmKHRoaXMudGVybWluYWxUaGVtZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMudGVybWluYWxUaGVtZVN1YnNjcmlwdGlvbj1udWxsKSx0aGlzLnRlcm1pbmFsJiYodGhpcy50ZXJtaW5hbC5kaXNwb3NlKCksdGhpcy50ZXJtaW5hbD1udWxsKSxhd2FpdCBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpfWFkZExpbmUoYil7dGhpcy5saW5lcz1bLi4udGhpcy5saW5lcyxiXX1jbGVhcigpe3RoaXMubGluZXM9W10sdGhpcy5sYXN0TGluZUNvdW50PTAsdGhpcy50ZXJtaW5hbCYmdGhpcy50ZXJtaW5hbC5jbGVhcigpfXN0YXRpY3twSihhLHQpfX07cmV0dXJuIGM9YX0pKCl9KTt2YXIgUHgsRjIsZHRzLEFsdD1nKCgpPT57cGUoKTtodCgpO0dhKCk7ZnIoKTtQeD1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sRjI9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LGR0cz0oKCk9PntsZXQgcz1bbmUoImRlZXMtd29ya3NwYWNlLWJvdHRvbWJhciIpXSxlLHQ9W10sYSxyPXdlLG4sbz1bXSxsPVtdLHAsZD1bXSx1PVtdLGMsYj1bXSx2PVtdLHgsbT1bXSxmPVtdLHksTT1bXSx6PVtdO3ZhciBOPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzV29ya3NwYWNlQm90dG9tYmFyIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IEM9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpPYmplY3R9KV0scD1bWSgpXSxjPVtZKCldLHg9W1koKV0seT1bWSgpXSxQeCh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImV4ZWN1dGlvbkVudmlyb25tZW50IixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJleGVjdXRpb25FbnZpcm9ubWVudCJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLmV4ZWN1dGlvbkVudmlyb25tZW50LCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18uZXhlY3V0aW9uRW52aXJvbm1lbnQ9T30sInNldCIpfSxtZXRhZGF0YTpDfSxvLGwpLFB4KHRoaXMsbnVsbCxwLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic2NyaXB0cyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShfPT4ic2NyaXB0cyJpbiBfLCJoYXMiKSxnZXQ6aShfPT5fLnNjcmlwdHMsImdldCIpLHNldDppKChfLE8pPT57Xy5zY3JpcHRzPU99LCJzZXQiKX0sbWV0YWRhdGE6Q30sZCx1KSxQeCh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InBhY2thZ2VTdGF0dXMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoXz0+InBhY2thZ2VTdGF0dXMiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5wYWNrYWdlU3RhdHVzLCJnZXQiKSxzZXQ6aSgoXyxPKT0+e18ucGFja2FnZVN0YXR1cz1PfSwic2V0Iil9LG1ldGFkYXRhOkN9LGIsdiksUHgodGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJvdXRkYXRlZFBhY2thZ2VzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJvdXRkYXRlZFBhY2thZ2VzImluIF8sImhhcyIpLGdldDppKF89Pl8ub3V0ZGF0ZWRQYWNrYWdlcywiZ2V0Iiksc2V0OmkoKF8sTyk9PntfLm91dGRhdGVkUGFja2FnZXM9T30sInNldCIpfSxtZXRhZGF0YTpDfSxtLGYpLFB4KHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNDaGVja2luZ1BhY2thZ2VzIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKF89PiJpc0NoZWNraW5nUGFja2FnZXMiaW4gXywiaGFzIiksZ2V0OmkoXz0+Xy5pc0NoZWNraW5nUGFja2FnZXMsImdldCIpLHNldDppKChfLE8pPT57Xy5pc0NoZWNraW5nUGFja2FnZXM9T30sInNldCIpfSxtZXRhZGF0YTpDfSxNLHopLFB4KG51bGwsZT17dmFsdWU6YX0scyx7a2luZDoiY2xhc3MiLG5hbWU6YS5uYW1lLG1ldGFkYXRhOkN9LG51bGwsdCksTj1hPWUudmFsdWUsQyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLm1ldGFkYXRhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpDfSl9I2U9RjIodGhpcyxvLG51bGwpO2dldCBleGVjdXRpb25FbnZpcm9ubWVudCgpe3JldHVybiB0aGlzLiNlfXNldCBleGVjdXRpb25FbnZpcm9ubWVudChDKXt0aGlzLiNlPUN9I3Q9KEYyKHRoaXMsbCksRjIodGhpcyxkLHt9KSk7Z2V0IHNjcmlwdHMoKXtyZXR1cm4gdGhpcy4jdH1zZXQgc2NyaXB0cyhDKXt0aGlzLiN0PUN9I2E9KEYyKHRoaXMsdSksRjIodGhpcyxiLCJpZGxlIikpO2dldCBwYWNrYWdlU3RhdHVzKCl7cmV0dXJuIHRoaXMuI2F9c2V0IHBhY2thZ2VTdGF0dXMoQyl7dGhpcy4jYT1DfSNzPShGMih0aGlzLHYpLEYyKHRoaXMsbSxbXSkpO2dldCBvdXRkYXRlZFBhY2thZ2VzKCl7cmV0dXJuIHRoaXMuI3N9c2V0IG91dGRhdGVkUGFja2FnZXMoQyl7dGhpcy4jcz1DfSNpPShGMih0aGlzLGYpLEYyKHRoaXMsTSwhMSkpO2dldCBpc0NoZWNraW5nUGFja2FnZXMoKXtyZXR1cm4gdGhpcy4jaX1zZXQgaXNDaGVja2luZ1BhY2thZ2VzKEMpe3RoaXMuI2k9Q31wZW5kaW5nUGFja2FnZVVwZGF0ZT0oRjIodGhpcyx6KSwhMSk7aGFuZGxlUHJvY2Vzc0NvbXBsZXRlPWkoQz0+e3RoaXMucGVuZGluZ1BhY2thZ2VVcGRhdGUmJih0aGlzLnBlbmRpbmdQYWNrYWdlVXBkYXRlPSExLHNldFRpbWVvdXQoKCk9PnRoaXMuY2hlY2tQYWNrYWdlcygpLDUwMCkpfSwiaGFuZGxlUHJvY2Vzc0NvbXBsZXRlIik7c3RhdGljIHN0eWxlcz1bcWUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC5ib3R0b20tYmFyIHsKICAgICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDAgOHB4OwogICAgICAgIGdhcDogNHB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5NCUpIiwiaHNsKDAgMCUgNiUpIil9OwogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDAgMCUgODUlKSIsImhzbCgwIDAlIDE1JSkiKX07CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNDAlKSIsImhzbCgwIDAlIDYwJSkiKX07CiAgICAgIH0KCiAgICAgIC53aWRnZXQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDRweDsKICAgICAgICBwYWRkaW5nOiAycHggNnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cyBlYXNlLCBjb2xvciAwLjE1cyBlYXNlOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgIH0KCiAgICAgIC53aWRnZXQ6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4OCUpIiwiaHNsKDAgMCUgMTIlKSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDIwJSkiLCJoc2woMCAwJSA4MCUpIil9OwogICAgICB9CgogICAgICAud2lkZ2V0IGRlZXMtaWNvbiB7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC53aWRnZXQtc2VwYXJhdG9yIHsKICAgICAgICB3aWR0aDogMXB4OwogICAgICAgIGhlaWdodDogMTRweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgODAlKSIsImhzbCgwIDAlIDIwJSkiKX07CiAgICAgICAgbWFyZ2luOiAwIDRweDsKICAgICAgfQoKICAgICAgLndpZGdldC5ydW5uaW5nIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTAgMTAwJSA0NSUpIiwiaHNsKDIxMCAxMDAlIDYwJSkiKX07CiAgICAgIH0KCiAgICAgIC53aWRnZXQudXAtdG8tZGF0ZSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMTQyIDcwJSAzNSUpIiwiaHNsKDE0MiA3MCUgNTAlKSIpfTsKICAgICAgfQoKICAgICAgLndpZGdldC51cGRhdGVzLWF2YWlsYWJsZSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMzggOTIlIDQ1JSkiLCJoc2woMzggOTIlIDU1JSkiKX07CiAgICAgIH0KCiAgICAgIC53aWRnZXQuZXJyb3IgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgNzAlIDUwJSkiLCJoc2woMCA3MCUgNjAlKSIpfTsKICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBzcGluIHsKICAgICAgICBmcm9tIHsgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH0KICAgICAgICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0KICAgICAgfQoKICAgICAgLnNwaW5uaW5nIHsKICAgICAgICBhbmltYXRpb246IHNwaW4gMXMgbGluZWFyIGluZmluaXRlOwogICAgICB9CgogICAgICAuc3BhY2VyIHsKICAgICAgICBmbGV4OiAxOwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iYm90dG9tLWJhciI+CiAgICAgICAgPCEtLSBTY3JpcHQgUnVubmVyIFdpZGdldCAtLT4KICAgICAgICA8ZGl2CiAgICAgICAgICBjbGFzcz0id2lkZ2V0IgogICAgICAgICAgQGNsaWNrPSR7dGhpcy5oYW5kbGVTY3JpcHRDbGlja30KICAgICAgICAgIHRpdGxlPSJSdW4gc2NyaXB0IgogICAgICAgID4KICAgICAgICAgIDxkZWVzLWljb24KICAgICAgICAgICAgLmljb249JHsibHVjaWRlOnBsYXkifQogICAgICAgICAgICBpY29uU2l6ZT0iMTIiCiAgICAgICAgICA+PC9kZWVzLWljb24+CiAgICAgICAgICA8c3Bhbj5TY3JpcHRzPC9zcGFuPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJ3aWRnZXQtc2VwYXJhdG9yIj48L2Rpdj4KCiAgICAgICAgPCEtLSBQYWNrYWdlIENoZWNrZXIgV2lkZ2V0IC0tPgogICAgICAgIDxkaXYKICAgICAgICAgIGNsYXNzPSJ3aWRnZXQgJHt0aGlzLmdldFBhY2thZ2VTdGF0dXNDbGFzcygpfSIKICAgICAgICAgIEBjbGljaz0ke3RoaXMuaGFuZGxlUGFja2FnZUNsaWNrfQogICAgICAgICAgdGl0bGU9IiR7dGhpcy5nZXRQYWNrYWdlVG9vbHRpcCgpfSIKICAgICAgICA+CiAgICAgICAgICA8ZGVlcy1pY29uCiAgICAgICAgICAgIC5pY29uPSR7dGhpcy5nZXRQYWNrYWdlSWNvbigpfQogICAgICAgICAgICBpY29uU2l6ZT0iMTIiCiAgICAgICAgICAgIGNsYXNzPSIke3RoaXMuaXNDaGVja2luZ1BhY2thZ2VzPyJzcGlubmluZyI6IiJ9IgogICAgICAgICAgPjwvZGVlcy1pY29uPgogICAgICAgICAgPHNwYW4+JHt0aGlzLmdldFBhY2thZ2VTdGF0dXNUZXh0KCl9PC9zcGFuPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJzcGFjZXIiPjwvZGl2PgoKICAgICAgICA8IS0tIEZ1dHVyZSB3aWRnZXRzIGNhbiBiZSBhZGRlZCBoZXJlIC0tPgogICAgICA8L2Rpdj4KICAgIGB9YXN5bmMgY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwcm9jZXNzLWNvbXBsZXRlIix0aGlzLmhhbmRsZVByb2Nlc3NDb21wbGV0ZSl9YXN5bmMgZGlzY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJwcm9jZXNzLWNvbXBsZXRlIix0aGlzLmhhbmRsZVByb2Nlc3NDb21wbGV0ZSl9YXN5bmMgZmlyc3RVcGRhdGVkKCl7YXdhaXQgdGhpcy5sb2FkU2NyaXB0cygpLGF3YWl0IHRoaXMuY2hlY2tQYWNrYWdlcygpfWFzeW5jIHVwZGF0ZWQoQyl7Qy5oYXMoImV4ZWN1dGlvbkVudmlyb25tZW50IikmJnRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQmJihhd2FpdCB0aGlzLmxvYWRTY3JpcHRzKCksYXdhaXQgdGhpcy5jaGVja1BhY2thZ2VzKCkpfWFzeW5jIGxvYWRTY3JpcHRzKCl7aWYodGhpcy5leGVjdXRpb25FbnZpcm9ubWVudCl0cnl7aWYoIWF3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQuZXhpc3RzKCIvcGFja2FnZS5qc29uIikpe3RoaXMuc2NyaXB0cz17fTtyZXR1cm59bGV0IF89YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5yZWFkRmlsZSgiL3BhY2thZ2UuanNvbiIpLE89SlNPTi5wYXJzZShfKTt0aGlzLnNjcmlwdHM9Ty5zY3JpcHRzfHx7fX1jYXRjaChDKXtjb25zb2xlLndhcm4oIkZhaWxlZCB0byBsb2FkIHNjcmlwdHMgZnJvbSBwYWNrYWdlLmpzb246IixDKSx0aGlzLnNjcmlwdHM9e319fWFzeW5jIGhhbmRsZVNjcmlwdENsaWNrKEMpe0Muc3RvcFByb3BhZ2F0aW9uKCk7bGV0IF89T2JqZWN0LmtleXModGhpcy5zY3JpcHRzKTtpZihfLmxlbmd0aD09PTApcmV0dXJuO2xldCBPPV8ubWFwKCQ9Pih7bmFtZTokLGljb25OYW1lOiJsdWNpZGU6dGVybWluYWwiLGFjdGlvbjppKGFzeW5jKCk9Pnthd2FpdCB0aGlzLnJ1blNjcmlwdCgkKX0sImFjdGlvbiIpfSkpO2F3YWl0ICRhLm9wZW5Db250ZXh0TWVudVdpdGhPcHRpb25zKEMsTyl9YXN5bmMgcnVuU2NyaXB0KEMpe2lmKCF0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50KXJldHVybjtsZXQgXz17dHlwZToic2NyaXB0IixsYWJlbDpDLGNvbW1hbmQ6InBucG0iLGFyZ3M6WyJydW4iLENdLG1ldGFkYXRhOntzY3JpcHROYW1lOkN9fTt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJydW4tcHJvY2VzcyIse2J1YmJsZXM6ITAsY29tcG9zZWQ6ITAsZGV0YWlsOl99KSl9YXN5bmMgY2hlY2tQYWNrYWdlcygpe2lmKCF0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50KXt0aGlzLnBhY2thZ2VTdGF0dXM9ImlkbGUiO3JldHVybn10cnl7aWYoIWF3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQuZXhpc3RzKCIvcGFja2FnZS5qc29uIikpe3RoaXMucGFja2FnZVN0YXR1cz0iaWRsZSI7cmV0dXJufXRoaXMucGFja2FnZVN0YXR1cz0iY2hlY2tpbmciLHRoaXMuaXNDaGVja2luZ1BhY2thZ2VzPSEwO2xldCBfPWF3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQuc3Bhd24oInBucG0iLFsib3V0ZGF0ZWQiLCItLWpzb24iXSksTz0iIiwkPV8ub3V0cHV0LmdldFJlYWRlcigpO2koYXN5bmMoKT0+e3RyeXtmb3IoOzspe2xldHtkb25lOmssdmFsdWU6U309YXdhaXQgJC5yZWFkKCk7aWYoaylicmVhaztPKz1TfX1jYXRjaHt9fSwicmVhZE91dHB1dCIpKCk7bGV0IEg9YXdhaXQgUHJvbWlzZS5yYWNlKFtfLmV4aXQsbmV3IFByb21pc2Uoaz0+c2V0VGltZW91dCgoKT0+aygtMSksMWU0KSldKTt0cnl7YXdhaXQgJC5jYW5jZWwoKX1jYXRjaHt9aWYoSD09PS0xKXtjb25zb2xlLndhcm4oIlBhY2thZ2UgY2hlY2sgdGltZWQgb3V0IiksdGhpcy5wYWNrYWdlU3RhdHVzPSJlcnJvciI7cmV0dXJufWlmKEg9PT0wKXRoaXMucGFja2FnZVN0YXR1cz0idXAtdG8tZGF0ZSIsdGhpcy5vdXRkYXRlZFBhY2thZ2VzPVtdO2Vsc2UgdHJ5e2xldCBrPUpTT04ucGFyc2UoTyk7dGhpcy5vdXRkYXRlZFBhY2thZ2VzPXRoaXMucGFyc2VPdXRkYXRlZFBhY2thZ2VzKGspLHRoaXMucGFja2FnZVN0YXR1cz10aGlzLm91dGRhdGVkUGFja2FnZXMubGVuZ3RoPjA/InVwZGF0ZXMtYXZhaWxhYmxlIjoidXAtdG8tZGF0ZSJ9Y2F0Y2h7dGhpcy5wYWNrYWdlU3RhdHVzPSJ1cGRhdGVzLWF2YWlsYWJsZSIsdGhpcy5vdXRkYXRlZFBhY2thZ2VzPVtdfX1jYXRjaChDKXtjb25zb2xlLndhcm4oIkZhaWxlZCB0byBjaGVjayBmb3IgcGFja2FnZSB1cGRhdGVzOiIsQyksdGhpcy5wYWNrYWdlU3RhdHVzPSJlcnJvciJ9ZmluYWxseXt0aGlzLmlzQ2hlY2tpbmdQYWNrYWdlcz0hMX19cGFyc2VPdXRkYXRlZFBhY2thZ2VzKEMpe2xldCBfPVtdO2lmKHR5cGVvZiBDPT0ib2JqZWN0IiYmQyE9PW51bGwpZm9yKGxldFtPLCRdb2YgT2JqZWN0LmVudHJpZXMoQykpe2xldCBFPSQ7Xy5wdXNoKHtuYW1lOk8sY3VycmVudDpFLmN1cnJlbnR8fCJ1bmtub3duIix3YW50ZWQ6RS53YW50ZWR8fEUuY3VycmVudHx8InVua25vd24iLGxhdGVzdDpFLmxhdGVzdHx8RS53YW50ZWR8fCJ1bmtub3duIix0eXBlOkUuZGVwZW5kZW5jeVR5cGU9PT0iZGV2RGVwZW5kZW5jaWVzIj8iZGV2RGVwZW5kZW5jaWVzIjoiZGVwZW5kZW5jaWVzIn0pfXJldHVybiBffWFzeW5jIGhhbmRsZVBhY2thZ2VDbGljayhDKXtDLnN0b3BQcm9wYWdhdGlvbigpO2xldCBfPVtdO2lmKF8ucHVzaCh7bmFtZTp0aGlzLmlzQ2hlY2tpbmdQYWNrYWdlcz8iQ2hlY2tpbmcuLi4iOiJDaGVjayBmb3IgdXBkYXRlcyIsaWNvbk5hbWU6Imx1Y2lkZTpyZWZyZXNoQ3ciLGFjdGlvbjppKGFzeW5jKCk9PntpZih0aGlzLmlzQ2hlY2tpbmdQYWNrYWdlcylyZXR1cm47bGV0IE89e3R5cGU6InBhY2thZ2UtdXBkYXRlIixsYWJlbDoiY2hlY2sgcGFja2FnZXMiLGNvbW1hbmQ6InBucG0iLGFyZ3M6WyJvdXRkYXRlZCJdfTt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJydW4tcHJvY2VzcyIse2J1YmJsZXM6ITAsY29tcG9zZWQ6ITAsZGV0YWlsOk99KSksc2V0VGltZW91dCgoKT0+dGhpcy5jaGVja1BhY2thZ2VzKCksM2UzKX0sImFjdGlvbiIpfSksdGhpcy5vdXRkYXRlZFBhY2thZ2VzLmxlbmd0aD4wKXtfLnB1c2goe2RpdmlkZXI6ITB9KTtsZXQgTz10aGlzLm91dGRhdGVkUGFja2FnZXMuc2xpY2UoMCwxMCk7Zm9yKGxldCAkIG9mIE8pXy5wdXNoKHtuYW1lOmAkeyQubmFtZX06ICR7JC5jdXJyZW50fSBcdTIxOTIgJHskLmxhdGVzdH1gLGljb25OYW1lOiJsdWNpZGU6cGFja2FnZSIsYWN0aW9uOmkoYXN5bmMoKT0+e2F3YWl0IHRoaXMudXBkYXRlUGFja2FnZSgkLm5hbWUpfSwiYWN0aW9uIil9KTt0aGlzLm91dGRhdGVkUGFja2FnZXMubGVuZ3RoPjEwJiZfLnB1c2goe25hbWU6YC4uLiBhbmQgJHt0aGlzLm91dGRhdGVkUGFja2FnZXMubGVuZ3RoLTEwfSBtb3JlYCxpY29uTmFtZToibHVjaWRlOm1vcmVIb3Jpem9udGFsIixhY3Rpb246aShhc3luYygpPT57fSwiYWN0aW9uIil9KSxfLnB1c2goe2RpdmlkZXI6ITB9KSxfLnB1c2goe25hbWU6IlVwZGF0ZSBhbGwgcGFja2FnZXMiLGljb25OYW1lOiJsdWNpZGU6YXJyb3dVcENpcmNsZSIsYWN0aW9uOmkoYXN5bmMoKT0+e2F3YWl0IHRoaXMudXBkYXRlQWxsUGFja2FnZXMoKX0sImFjdGlvbiIpfSl9YXdhaXQgJGEub3BlbkNvbnRleHRNZW51V2l0aE9wdGlvbnMoQyxfKX1hc3luYyB1cGRhdGVQYWNrYWdlKEMpe2lmKCF0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50KXJldHVybjt0aGlzLnBlbmRpbmdQYWNrYWdlVXBkYXRlPSEwO2xldCBfPXt0eXBlOiJwYWNrYWdlLXVwZGF0ZSIsbGFiZWw6YHVwZGF0ZSAke0N9YCxjb21tYW5kOiJwbnBtIixhcmdzOlsidXBkYXRlIiwiLS1sYXRlc3QiLENdLG1ldGFkYXRhOntwYWNrYWdlTmFtZTpDfX07dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgicnVuLXByb2Nlc3MiLHtidWJibGVzOiEwLGNvbXBvc2VkOiEwLGRldGFpbDpffSkpfWFzeW5jIHVwZGF0ZUFsbFBhY2thZ2VzKCl7aWYoIXRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQpcmV0dXJuO3RoaXMucGVuZGluZ1BhY2thZ2VVcGRhdGU9ITA7bGV0IEM9e3R5cGU6InBhY2thZ2UtdXBkYXRlIixsYWJlbDoidXBkYXRlIGFsbCIsY29tbWFuZDoicG5wbSIsYXJnczpbInVwZGF0ZSIsIi0tbGF0ZXN0Il19O3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInJ1bi1wcm9jZXNzIix7YnViYmxlczohMCxjb21wb3NlZDohMCxkZXRhaWw6Q30pKX1nZXRQYWNrYWdlU3RhdHVzQ2xhc3MoKXtyZXR1cm4gdGhpcy5pc0NoZWNraW5nUGFja2FnZXM/IiI6dGhpcy5wYWNrYWdlU3RhdHVzfWdldFBhY2thZ2VJY29uKCl7aWYodGhpcy5pc0NoZWNraW5nUGFja2FnZXMpcmV0dXJuImx1Y2lkZTpsb2FkZXIyIjtzd2l0Y2godGhpcy5wYWNrYWdlU3RhdHVzKXtjYXNlInVwLXRvLWRhdGUiOnJldHVybiJsdWNpZGU6Y2hlY2tDaXJjbGUiO2Nhc2UidXBkYXRlcy1hdmFpbGFibGUiOnJldHVybiJsdWNpZGU6YWxlcnRDaXJjbGUiO2Nhc2UiZXJyb3IiOnJldHVybiJsdWNpZGU6eENpcmNsZSI7ZGVmYXVsdDpyZXR1cm4ibHVjaWRlOnBhY2thZ2UifX1nZXRQYWNrYWdlU3RhdHVzVGV4dCgpe2lmKHRoaXMuaXNDaGVja2luZ1BhY2thZ2VzKXJldHVybiJDaGVja2luZy4uLiI7c3dpdGNoKHRoaXMucGFja2FnZVN0YXR1cyl7Y2FzZSJ1cC10by1kYXRlIjpyZXR1cm4iVXAgdG8gZGF0ZSI7Y2FzZSJ1cGRhdGVzLWF2YWlsYWJsZSI6cmV0dXJuYCR7dGhpcy5vdXRkYXRlZFBhY2thZ2VzLmxlbmd0aH0gdXBkYXRlJHt0aGlzLm91dGRhdGVkUGFja2FnZXMubGVuZ3RoIT09MT8icyI6IiJ9YDtjYXNlImVycm9yIjpyZXR1cm4iQ2hlY2sgZmFpbGVkIjtkZWZhdWx0OnJldHVybiJQYWNrYWdlcyJ9fWdldFBhY2thZ2VUb29sdGlwKCl7aWYodGhpcy5pc0NoZWNraW5nUGFja2FnZXMpcmV0dXJuIkNoZWNraW5nIGZvciBwYWNrYWdlIHVwZGF0ZXMuLi4iO3N3aXRjaCh0aGlzLnBhY2thZ2VTdGF0dXMpe2Nhc2UidXAtdG8tZGF0ZSI6cmV0dXJuIkFsbCBwYWNrYWdlcyBhcmUgdXAgdG8gZGF0ZSI7Y2FzZSJ1cGRhdGVzLWF2YWlsYWJsZSI6cmV0dXJuYCR7dGhpcy5vdXRkYXRlZFBhY2thZ2VzLmxlbmd0aH0gcGFja2FnZSB1cGRhdGUke3RoaXMub3V0ZGF0ZWRQYWNrYWdlcy5sZW5ndGghPT0xPyJzIjoiIn0gYXZhaWxhYmxlYDtjYXNlImVycm9yIjpyZXR1cm4iRmFpbGVkIHRvIGNoZWNrIGZvciB1cGRhdGVzLiBDbGljayB0byByZXRyeS4iO2RlZmF1bHQ6cmV0dXJuIkNsaWNrIHRvIGNoZWNrIGZvciBwYWNrYWdlIHVwZGF0ZXMifX1hc3luYyByZWZyZXNoUGFja2FnZVN0YXR1cygpe2F3YWl0IHRoaXMuY2hlY2tQYWNrYWdlcygpfWFzeW5jIHJlZnJlc2hTY3JpcHRzKCl7YXdhaXQgdGhpcy5sb2FkU2NyaXB0cygpfXN0YXRpY3tGMihhLHQpfX07cmV0dXJuIE49YX0pKCl9KTt2YXIgdTJlLE5sdD1nKCgpPT57dTJlPWNsYXNze3N0YXRpY3tpKHRoaXMsIlR5cGVTY3JpcHRJbnRlbGxpU2Vuc2VNYW5hZ2VyIil9bG9hZGVkTGlicz1uZXcgU2V0O25vdEZvdW5kUGFja2FnZXM9bmV3IFNldDttb25hY29JbnN0YW5jZT1udWxsO2V4ZWN1dGlvbkVudmlyb25tZW50PW51bGw7ZmlsZUNhY2hlPW5ldyBNYXA7YWRkZWRFeHRyYUxpYnM9bmV3IE1hcDtnZXQgdHNBcGkoKXtyZXR1cm4gdGhpcy5tb25hY29JbnN0YW5jZT90aGlzLm1vbmFjb0luc3RhbmNlLmxhbmd1YWdlcy50eXBlc2NyaXB0Om51bGx9YXN5bmMgaW5pdChlLHQpe3RoaXMubW9uYWNvSW5zdGFuY2U9ZSx0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50PXQsdGhpcy5jb25maWd1cmVDb21waWxlck9wdGlvbnMoKSxhd2FpdCB0aGlzLmxvYWRBbGxQcm9qZWN0RmlsZXMoKX1hc3luYyBsb2FkQWxsUHJvamVjdEZpbGVzKCl7dGhpcy5leGVjdXRpb25FbnZpcm9ubWVudCYmYXdhaXQgdGhpcy5sb2FkRmlsZXNGcm9tRGlyZWN0b3J5KCIvIil9YXN5bmMgbG9hZEZpbGVzRnJvbURpcmVjdG9yeShlKXtpZih0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50KXRyeXtsZXQgdD1hd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LnJlYWREaXIoZSk7Zm9yKGxldCBhIG9mIHQpe2xldCByPWU9PT0iLyI/YC8ke2EubmFtZX1gOmAke2V9LyR7YS5uYW1lfWA7aWYoYS5uYW1lIT09Im5vZGVfbW9kdWxlcyIpe2lmKGEudHlwZT09PSJkaXJlY3RvcnkiKWF3YWl0IHRoaXMubG9hZEZpbGVzRnJvbURpcmVjdG9yeShyKTtlbHNlIGlmKGEudHlwZT09PSJmaWxlIil7bGV0IG49YS5uYW1lLnNwbGl0KCIuIikucG9wKCk/LnRvTG93ZXJDYXNlKCk7aWYobj09PSJ0cyJ8fG49PT0idHN4Inx8bj09PSJqcyJ8fG49PT0ianN4Iil0cnl7bGV0IG89YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5yZWFkRmlsZShyKTt0aGlzLmFkZEZpbGVNb2RlbChyLG8pfWNhdGNoe319fX19Y2F0Y2h7fX1jb25maWd1cmVDb21waWxlck9wdGlvbnMoKXtsZXQgZT10aGlzLnRzQXBpO2UmJihlLnR5cGVzY3JpcHREZWZhdWx0cy5zZXRDb21waWxlck9wdGlvbnMoe3RhcmdldDplLlNjcmlwdFRhcmdldC5FUzIwMjAsbW9kdWxlOmUuTW9kdWxlS2luZC5FU05leHQsbW9kdWxlUmVzb2x1dGlvbjplLk1vZHVsZVJlc29sdXRpb25LaW5kLkJ1bmRsZXI/P2UuTW9kdWxlUmVzb2x1dGlvbktpbmQuTm9kZUpzLGFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHM6ITAsZXNNb2R1bGVJbnRlcm9wOiEwLHN0cmljdDohMCxub0VtaXQ6ITAsYWxsb3dKczohMCxjaGVja0pzOiExLGFsbG93Tm9uVHNFeHRlbnNpb25zOiEwLGxpYjpbImVzMjAyMCIsImRvbSIsImRvbS5pdGVyYWJsZSJdLGJhc2VVcmw6Ii8iLGFsbG93SW1wb3J0aW5nVHNFeHRlbnNpb25zOiEwLHJlc29sdmVKc29uTW9kdWxlOiEwfSksZS50eXBlc2NyaXB0RGVmYXVsdHMuc2V0RGlhZ25vc3RpY3NPcHRpb25zKHtub1NlbWFudGljVmFsaWRhdGlvbjohMSxub1N5bnRheFZhbGlkYXRpb246ITF9KSxlLnR5cGVzY3JpcHREZWZhdWx0cy5zZXRFYWdlck1vZGVsU3luYyghMCkpfXBhcnNlSW1wb3J0cyhlKXtsZXQgdD1bXSxhPS9pbXBvcnRccysoPzpbXHcqe31ccyxdK2Zyb21ccyspP1snIl0oW14nIl0rKVsnIl0vZyxyO2Zvcig7KHI9YS5leGVjKGUpKSE9PW51bGw7KXtsZXQgbz1yWzFdO2lmKCFvLnN0YXJ0c1dpdGgoIi4iKSYmIW8uc3RhcnRzV2l0aCgiLyIpKXtsZXQgbD1vLnN0YXJ0c1dpdGgoIkAiKT9vLnNwbGl0KCIvIikuc2xpY2UoMCwyKS5qb2luKCIvIik6by5zcGxpdCgiLyIpWzBdO3QucHVzaChsKX19bGV0IG49L3JlcXVpcmVccypcKFxzKlsnIl0oW14nIl0rKVsnIl1ccypcKS9nO2Zvcig7KHI9bi5leGVjKGUpKSE9PW51bGw7KXtsZXQgbz1yWzFdO2lmKCFvLnN0YXJ0c1dpdGgoIi4iKSYmIW8uc3RhcnRzV2l0aCgiLyIpKXtsZXQgbD1vLnN0YXJ0c1dpdGgoIkAiKT9vLnNwbGl0KCIvIikuc2xpY2UoMCwyKS5qb2luKCIvIik6by5zcGxpdCgiLyIpWzBdO3QucHVzaChsKX19cmV0dXJuWy4uLm5ldyBTZXQodCldfWFzeW5jIGxvYWRUeXBlc0ZvclBhY2thZ2UoZSl7aWYoISghdGhpcy5tb25hY29JbnN0YW5jZXx8IXRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQpJiYhdGhpcy5sb2FkZWRMaWJzLmhhcyhlKSYmIXRoaXMubm90Rm91bmRQYWNrYWdlcy5oYXMoZSkpdHJ5e2xldCB0PWF3YWl0IHRoaXMudHJ5TG9hZFBhY2thZ2VUeXBlcyhlKTt0fHwodD1hd2FpdCB0aGlzLnRyeUxvYWRBdFR5cGVzUGFja2FnZShlKSksdD90aGlzLmxvYWRlZExpYnMuYWRkKGUpOnRoaXMubm90Rm91bmRQYWNrYWdlcy5hZGQoZSl9Y2F0Y2godCl7Y29uc29sZS53YXJuKGBGYWlsZWQgdG8gbG9hZCB0eXBlcyBmb3IgJHtlfTpgLHQpfX1hc3luYyB0cnlMb2FkUGFja2FnZVR5cGVzKGUpe2xldCB0PXRoaXMudHNBcGk7aWYoIXRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnR8fCF0KXJldHVybiExO2xldCBhPWAvbm9kZV9tb2R1bGVzLyR7ZX1gO3RyeXtsZXQgcj1gJHthfS9wYWNrYWdlLmpzb25gO2lmKGF3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQuZXhpc3RzKHIpKXtsZXQgbD1hd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LnJlYWRGaWxlKHIpLHA9SlNPTi5wYXJzZShsKTtpZih0LnR5cGVzY3JpcHREZWZhdWx0cy5hZGRFeHRyYUxpYihsLGBmaWxlOi8vJHtyfWApLHAudHlwZXN8fHAudHlwaW5ncylyZXR1cm4gYXdhaXQgdGhpcy5sb2FkQWxsRHRzRmlsZXNGcm9tUGFja2FnZShhKSwhMH1sZXQgbz1bYCR7YX0vaW5kZXguZC50c2AsYCR7YX0vZGlzdC9pbmRleC5kLnRzYCxgJHthfS9saWIvaW5kZXguZC50c2BdO2ZvcihsZXQgbCBvZiBvKWlmKGF3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQuZXhpc3RzKGwpKXJldHVybiBhd2FpdCB0aGlzLmxvYWRBbGxEdHNGaWxlc0Zyb21QYWNrYWdlKGEpLCEwO3JldHVybiExfWNhdGNoKHIpe3JldHVybiBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gbG9hZCBwYWNrYWdlIHR5cGVzIGZvciAke2V9OmAsciksITF9fWFzeW5jIGxvYWRBbGxEdHNGaWxlc0Zyb21QYWNrYWdlKGUpe2xldCB0PXRoaXMudHNBcGk7IXRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnR8fCF0fHxhd2FpdCB0aGlzLmxvYWREdHNGaWxlc0Zyb21EaXJlY3RvcnkoZSl9YXN5bmMgbG9hZER0c0ZpbGVzRnJvbURpcmVjdG9yeShlKXtsZXQgdD10aGlzLnRzQXBpO2lmKCEoIXRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnR8fCF0KSl0cnl7bGV0IGE9YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5yZWFkRGlyKGUpO2ZvcihsZXQgciBvZiBhKXtsZXQgbj1lPT09Ii8iP2AvJHtyLm5hbWV9YDpgJHtlfS8ke3IubmFtZX1gO2lmKHIubmFtZSE9PSJub2RlX21vZHVsZXMiKXtpZihyLnR5cGU9PT0iZGlyZWN0b3J5Iilhd2FpdCB0aGlzLmxvYWREdHNGaWxlc0Zyb21EaXJlY3Rvcnkobik7ZWxzZSBpZihyLnR5cGU9PT0iZmlsZSImJnIubmFtZS5lbmRzV2l0aCgiLmQudHMiKSl0cnl7bGV0IG89YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5yZWFkRmlsZShuKTt0LnR5cGVzY3JpcHREZWZhdWx0cy5hZGRFeHRyYUxpYihvLGBmaWxlOi8vJHtufWApfWNhdGNoe319fX1jYXRjaHt9fWFzeW5jIHRyeUxvYWRBdFR5cGVzUGFja2FnZShlKXtpZighdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudClyZXR1cm4hMTtsZXQgYT1gL25vZGVfbW9kdWxlcy8ke2Uuc3RhcnRzV2l0aCgiQCIpP2BAdHlwZXMvJHtlLnNsaWNlKDEpLnJlcGxhY2UoIi8iLCJfXyIpfWA6YEB0eXBlcy8ke2V9YH1gO3RyeXtsZXQgcj1gJHthfS9pbmRleC5kLnRzYDtyZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5leGlzdHMocik/KGF3YWl0IHRoaXMubG9hZEFsbER0c0ZpbGVzRnJvbVBhY2thZ2UoYSksITApOiExfWNhdGNoe3JldHVybiExfX1hc3luYyBwcm9jZXNzQ29udGVudENoYW5nZShlKXtsZXQgdD10aGlzLnBhcnNlSW1wb3J0cyhlKTtmb3IobGV0IGEgb2YgdCl0aGlzLmxvYWRlZExpYnMuaGFzKGEpfHxhd2FpdCB0aGlzLmxvYWRUeXBlc0ZvclBhY2thZ2UoYSl9YXN5bmMgc2NhbkFuZExvYWROZXdQYWNrYWdlVHlwZXMoKXtpZih0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50KXt0aGlzLm5vdEZvdW5kUGFja2FnZXMuY2xlYXIoKTt0cnl7aWYoIWF3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQuZXhpc3RzKCIvbm9kZV9tb2R1bGVzIikpcmV0dXJuO2xldCBlPWF3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQucmVhZERpcigiL25vZGVfbW9kdWxlcyIpO2ZvcihsZXQgdCBvZiBlKWlmKHQudHlwZT09PSJkaXJlY3RvcnkiKWlmKHQubmFtZS5zdGFydHNXaXRoKCJAIikpdHJ5e2xldCBhPWAvbm9kZV9tb2R1bGVzLyR7dC5uYW1lfWAscj1hd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LnJlYWREaXIoYSk7Zm9yKGxldCBuIG9mIHIpaWYobi50eXBlPT09ImRpcmVjdG9yeSIpe2xldCBvPWAke3QubmFtZX0vJHtuLm5hbWV9YDthd2FpdCB0aGlzLmxvYWRUeXBlc0ZvclBhY2thZ2Uobyl9fWNhdGNoe31lbHNlIHQubmFtZS5zdGFydHNXaXRoKCIuIil8fGF3YWl0IHRoaXMubG9hZFR5cGVzRm9yUGFja2FnZSh0Lm5hbWUpfWNhdGNoKGUpe2NvbnNvbGUud2FybigiRmFpbGVkIHRvIHNjYW4gbm9kZV9tb2R1bGVzOiIsZSl9fX1hZGRGaWxlTW9kZWwoZSx0KXtpZighdGhpcy5tb25hY29JbnN0YW5jZSlyZXR1cm47dGhpcy5maWxlQ2FjaGUuc2V0KGUsdCk7bGV0IGE9dGhpcy5tb25hY29JbnN0YW5jZS5VcmkucGFyc2UoYGZpbGU6Ly8ke2V9YCkscj10aGlzLm1vbmFjb0luc3RhbmNlLmVkaXRvci5nZXRNb2RlbChhKTtpZihyKXIuZ2V0VmFsdWUoKSE9PXQmJnIuc2V0VmFsdWUodCk7ZWxzZXtsZXQgbj10aGlzLmdldExhbmd1YWdlRnJvbVBhdGgoZSk7dGhpcy5tb25hY29JbnN0YW5jZS5lZGl0b3IuY3JlYXRlTW9kZWwodCxuLGEpfXRoaXMuYWRkRmlsZUFzRXh0cmFMaWIoZSx0KX1hZGRGaWxlQXNFeHRyYUxpYihlLHQpe2xldCBhPXRoaXMudHNBcGk7aWYoIWEpcmV0dXJuO2xldCByPXRoaXMuYWRkZWRFeHRyYUxpYnMuZ2V0KGUpO3ImJnIuZGlzcG9zZSgpO2xldCBuPWBmaWxlOi8vJHtlfWAsbz1hLnR5cGVzY3JpcHREZWZhdWx0cy5hZGRFeHRyYUxpYih0LG4pO2lmKHRoaXMuYWRkZWRFeHRyYUxpYnMuc2V0KGUsbyksZS5lbmRzV2l0aCgiLnRzIikmJiFlLmVuZHNXaXRoKCIuZC50cyIpKXtsZXQgbD1lLnJlcGxhY2UoL1wudHMkLywiLmpzIikscD1gZmlsZTovLyR7bH1gLGQ9YS50eXBlc2NyaXB0RGVmYXVsdHMuYWRkRXh0cmFMaWIodCxwKTt0aGlzLmFkZGVkRXh0cmFMaWJzLnNldChsLGQpLHRoaXMuZmlsZUNhY2hlLnNldChsLHQpfWVsc2UgaWYoZS5lbmRzV2l0aCgiLnRzeCIpKXtsZXQgbD1lLnJlcGxhY2UoL1wudHN4JC8sIi5qc3giKSxwPWBmaWxlOi8vJHtsfWAsZD1hLnR5cGVzY3JpcHREZWZhdWx0cy5hZGRFeHRyYUxpYih0LHApO3RoaXMuYWRkZWRFeHRyYUxpYnMuc2V0KGwsZCksdGhpcy5maWxlQ2FjaGUuc2V0KGwsdCl9fWdldEZpbGVDb250ZW50KGUpe3JldHVybiB0aGlzLmZpbGVDYWNoZS5nZXQoZSl9Z2V0TGFuZ3VhZ2VGcm9tUGF0aChlKXtzd2l0Y2goZS5zcGxpdCgiLiIpLnBvcCgpPy50b0xvd2VyQ2FzZSgpKXtjYXNlInRzIjpjYXNlInRzeCI6cmV0dXJuInR5cGVzY3JpcHQiO2Nhc2UianMiOmNhc2UianN4IjpyZXR1cm4iamF2YXNjcmlwdCI7Y2FzZSJqc29uIjpyZXR1cm4ianNvbiI7ZGVmYXVsdDpyZXR1cm4icGxhaW50ZXh0In19fX0pO3ZhciBkNyxmYyx1dHMsUmx0PWcoKCk9PntwZSgpO2t0KCk7Rm90KCk7aHQoKTtIZygpO2Q3PWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxmYz1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sdXRzPSgoKT0+e2xldCBzPVtuZSgiZGVlcy13b3Jrc3BhY2UtZGlmZi1lZGl0b3IiKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXSx5LE09W10sej1bXSxOLEM9W10sXz1bXTt2YXIgTz1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1dvcmtzcGFjZURpZmZFZGl0b3IiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgJD10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtuPVtMKHt0eXBlOlN0cmluZ30pXSxwPVtMKHt0eXBlOlN0cmluZ30pXSxjPVtMKHt0eXBlOlN0cmluZ30pXSx4PVtMKHt0eXBlOlN0cmluZ30pXSx5PVtMKHt0eXBlOlN0cmluZ30pXSxOPVtMKHt0eXBlOlN0cmluZ30pXSxkNyh0aGlzLG51bGwsbix7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im9yaWdpbmFsQ29udGVudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShFPT4ib3JpZ2luYWxDb250ZW50ImluIEUsImhhcyIpLGdldDppKEU9PkUub3JpZ2luYWxDb250ZW50LCJnZXQiKSxzZXQ6aSgoRSxIKT0+e0Uub3JpZ2luYWxDb250ZW50PUh9LCJzZXQiKX0sbWV0YWRhdGE6JH0sbyxsKSxkNyh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1vZGlmaWVkQ29udGVudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShFPT4ibW9kaWZpZWRDb250ZW50ImluIEUsImhhcyIpLGdldDppKEU9PkUubW9kaWZpZWRDb250ZW50LCJnZXQiKSxzZXQ6aSgoRSxIKT0+e0UubW9kaWZpZWRDb250ZW50PUh9LCJzZXQiKX0sbWV0YWRhdGE6JH0sZCx1KSxkNyh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im9yaWdpbmFsTGFiZWwiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+Im9yaWdpbmFsTGFiZWwiaW4gRSwiaGFzIiksZ2V0OmkoRT0+RS5vcmlnaW5hbExhYmVsLCJnZXQiKSxzZXQ6aSgoRSxIKT0+e0Uub3JpZ2luYWxMYWJlbD1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LGIsdiksZDcodGhpcyxudWxsLHgse2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJtb2RpZmllZExhYmVsIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKEU9PiJtb2RpZmllZExhYmVsImluIEUsImhhcyIpLGdldDppKEU9PkUubW9kaWZpZWRMYWJlbCwiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLm1vZGlmaWVkTGFiZWw9SH0sInNldCIpfSxtZXRhZGF0YTokfSxtLGYpLGQ3KHRoaXMsbnVsbCx5LHtraW5kOiJhY2Nlc3NvciIsbmFtZToibGFuZ3VhZ2UiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoRT0+Imxhbmd1YWdlImluIEUsImhhcyIpLGdldDppKEU9PkUubGFuZ3VhZ2UsImdldCIpLHNldDppKChFLEgpPT57RS5sYW5ndWFnZT1IfSwic2V0Iil9LG1ldGFkYXRhOiR9LE0seiksZDcodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJmaWxlUGF0aCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShFPT4iZmlsZVBhdGgiaW4gRSwiaGFzIiksZ2V0OmkoRT0+RS5maWxlUGF0aCwiZ2V0Iiksc2V0OmkoKEUsSCk9PntFLmZpbGVQYXRoPUh9LCJzZXQiKX0sbWV0YWRhdGE6JH0sQyxfKSxkNyhudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTokfSxudWxsLHQpLE89YT1lLnZhbHVlLCQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6JH0pfXN0YXRpYyBkZW1vPWkoKCk9PndgCiAgICA8ZGVlcy13b3Jrc3BhY2UtZGlmZi1lZGl0b3IKICAgICAgLm9yaWdpbmFsQ29udGVudD0ke2BmdW5jdGlvbiBoZWxsbygpIHsKICBjb25zb2xlLmxvZygiSGVsbG8iKTsKfWB9CiAgICAgIC5tb2RpZmllZENvbnRlbnQ9JHtgZnVuY3Rpb24gaGVsbG8oKSB7CiAgY29uc29sZS5sb2coIkhlbGxvIFdvcmxkISIpOwogIHJldHVybiB0cnVlOwp9YH0KICAgICAgLmxhbmd1YWdlPSR7InR5cGVzY3JpcHQifQogICAgICAuZmlsZVBhdGg9JHsiL2RlbW8vZXhhbXBsZS50cyJ9CiAgICA+PC9kZWVzLXdvcmtzcGFjZS1kaWZmLWVkaXRvcj4KICBgLCJkZW1vIik7c3RhdGljIGRlbW9Hcm91cHM9WyJXb3Jrc3BhY2UiXTtkaWZmRWRpdG9yRGVmZXJyZWQ9dXQuc21hcnRwcm9taXNlLmRlZmVyKCk7I2U9ZmModGhpcyxvLCIiKTtnZXQgb3JpZ2luYWxDb250ZW50KCl7cmV0dXJuIHRoaXMuI2V9c2V0IG9yaWdpbmFsQ29udGVudCgkKXt0aGlzLiNlPSR9I3Q9KGZjKHRoaXMsbCksZmModGhpcyxkLCIiKSk7Z2V0IG1vZGlmaWVkQ29udGVudCgpe3JldHVybiB0aGlzLiN0fXNldCBtb2RpZmllZENvbnRlbnQoJCl7dGhpcy4jdD0kfSNhPShmYyh0aGlzLHUpLGZjKHRoaXMsYiwiRGlzayBWZXJzaW9uIikpO2dldCBvcmlnaW5hbExhYmVsKCl7cmV0dXJuIHRoaXMuI2F9c2V0IG9yaWdpbmFsTGFiZWwoJCl7dGhpcy4jYT0kfSNzPShmYyh0aGlzLHYpLGZjKHRoaXMsbSwiTG9jYWwgVmVyc2lvbiIpKTtnZXQgbW9kaWZpZWRMYWJlbCgpe3JldHVybiB0aGlzLiNzfXNldCBtb2RpZmllZExhYmVsKCQpe3RoaXMuI3M9JH0jaT0oZmModGhpcyxmKSxmYyh0aGlzLE0sInR5cGVzY3JpcHQiKSk7Z2V0IGxhbmd1YWdlKCl7cmV0dXJuIHRoaXMuI2l9c2V0IGxhbmd1YWdlKCQpe3RoaXMuI2k9JH0jcj0oZmModGhpcyx6KSxmYyh0aGlzLEMsIiIpKTtnZXQgZmlsZVBhdGgoKXtyZXR1cm4gdGhpcy4jcn1zZXQgZmlsZVBhdGgoJCl7dGhpcy4jcj0kfWRpZmZFZGl0b3I9KGZjKHRoaXMsXyksbnVsbCk7bW9uYWNvVGhlbWVTdWJzY3JpcHRpb249bnVsbDtvcmlnaW5hbE1vZGVsPW51bGw7bW9kaWZpZWRNb2RlbD1udWxsO2NvbnN0cnVjdG9yKCl7c3VwZXIoKSxqaS5zZXR1cERvbVRvb2xzKCl9c3RhdGljIHN0eWxlcz1bcWUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICB9CgogICAgICAqIHsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAuZGlmZi13cmFwcGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAuZGlmZi10b29sYmFyIHsKICAgICAgICBoZWlnaHQ6IDQ4cHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBwYWRkaW5nOiAwIDE2cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk2JSkiLCJoc2woMCAwJSAxMiUpIil9OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDAgMCUgODUlKSIsImhzbCgwIDAlIDIwJSkiKX07CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC5kaWZmLWluZm8gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMzAlKSIsImhzbCgwIDAlIDgwJSkiKX07CiAgICAgIH0KCiAgICAgIC5kaWZmLWZpbGVuYW1lIHsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMjAlKSIsImhzbCgwIDAlIDkwJSkiKX07CiAgICAgIH0KCiAgICAgIC5kaWZmLWxhYmVscyB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNTAlKSIsImhzbCgwIDAlIDYwJSkiKX07CiAgICAgIH0KCiAgICAgIC5kaWZmLWFjdGlvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDhweDsKICAgICAgfQoKICAgICAgLmRpZmYtY29udGFpbmVyIHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG1pbi1oZWlnaHQ6IDA7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5uYXYtYnV0dG9ucyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBnYXA6IDRweDsKICAgICAgfQoKICAgICAgLmFjdGlvbi1idXR0b25zIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGdhcDogOHB4OwogICAgICAgIG1hcmdpbi1sZWZ0OiAxNnB4OwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtsZXQgJD10aGlzLmZpbGVQYXRoLnNwbGl0KCIvIikucG9wKCl8fCJmaWxlIjtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iZGlmZi13cmFwcGVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJkaWZmLXRvb2xiYXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZGlmZi1pbmZvIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRpZmYtZmlsZW5hbWUiPiR7JH08L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkaWZmLWxhYmVscyI+JHt0aGlzLm9yaWdpbmFsTGFiZWx9IOKGlCAke3RoaXMubW9kaWZpZWRMYWJlbH08L3NwYW4+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImRpZmYtYWN0aW9ucyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1idXR0b25zIj4KICAgICAgICAgICAgICA8ZGVlcy1idXR0b24KICAgICAgICAgICAgICAgIHR5cGU9Im91dGxpbmUiCiAgICAgICAgICAgICAgICBAY2xpY2s9JHt0aGlzLmdvVG9QcmV2aW91c0RpZmZ9CiAgICAgICAgICAgICAgPlByZXZpb3VzPC9kZWVzLWJ1dHRvbj4KICAgICAgICAgICAgICA8ZGVlcy1idXR0b24KICAgICAgICAgICAgICAgIHR5cGU9Im91dGxpbmUiCiAgICAgICAgICAgICAgICBAY2xpY2s9JHt0aGlzLmdvVG9OZXh0RGlmZn0KICAgICAgICAgICAgICA+TmV4dDwvZGVlcy1idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9ucyI+CiAgICAgICAgICAgICAgPGRlZXMtYnV0dG9uCiAgICAgICAgICAgICAgICB0eXBlPSJoaWdobGlnaHRlZCIKICAgICAgICAgICAgICAgIEBjbGljaz0ke3RoaXMuYWNjZXB0TG9jYWx9CiAgICAgICAgICAgICAgPlVzZSBMb2NhbDwvZGVlcy1idXR0b24+CiAgICAgICAgICAgICAgPGRlZXMtYnV0dG9uCiAgICAgICAgICAgICAgICB0eXBlPSJvdXRsaW5lIgogICAgICAgICAgICAgICAgQGNsaWNrPSR7dGhpcy5hY2NlcHREaXNrfQogICAgICAgICAgICAgID5Vc2UgRGlzazwvZGVlcy1idXR0b24+CiAgICAgICAgICAgICAgPGRlZXMtYnV0dG9uCiAgICAgICAgICAgICAgICB0eXBlPSJvdXRsaW5lIgogICAgICAgICAgICAgICAgQGNsaWNrPSR7dGhpcy5jbG9zZX0KICAgICAgICAgICAgICA+Q2xvc2U8L2RlZXMtYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImRpZmYtY29udGFpbmVyIj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgfWFzeW5jIGZpcnN0VXBkYXRlZCgpe2F3YWl0IHN1cGVyLmZpcnN0VXBkYXRlZChuZXcgTWFwKSxhd2FpdCB0aGlzLmluaXREaWZmRWRpdG9yKCl9YXN5bmMgaW5pdERpZmZFZGl0b3IoKXtsZXQgJD10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoIi5kaWZmLWNvbnRhaW5lciIpO2lmKCEkKXJldHVybjtsZXQgRT1gaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9tb25hY28tZWRpdG9yQCR7STFlfWAsSD13aW5kb3cubW9uYWNvO0h8fChhd2FpdCBuZXcgUHJvbWlzZShXPT57bGV0IG1lPXNldEludGVydmFsKCgpPT57d2luZG93Lm1vbmFjbyYmKGNsZWFySW50ZXJ2YWwobWUpLFcoKSl9LDEwMCl9KSxIPXdpbmRvdy5tb25hY28pO2xldCBrPWF3YWl0IHRoaXMuZG9tdG9vbHNQcm9taXNlLEk9ay50aGVtZU1hbmFnZXIuZ29CcmlnaHRCb29sZWFuPyJ2cyI6InZzLWRhcmsiLFA9RGF0ZS5ub3coKSxSPUguVXJpLnBhcnNlKGBkaWZmOi8vb3JpZ2luYWwvJHtQfSR7dGhpcy5maWxlUGF0aH1gKSxLPUguVXJpLnBhcnNlKGBkaWZmOi8vbW9kaWZpZWQvJHtQfSR7dGhpcy5maWxlUGF0aH1gKTt0aGlzLm9yaWdpbmFsTW9kZWw9SC5lZGl0b3IuY3JlYXRlTW9kZWwodGhpcy5vcmlnaW5hbENvbnRlbnQsdGhpcy5sYW5ndWFnZSxSKSx0aGlzLm1vZGlmaWVkTW9kZWw9SC5lZGl0b3IuY3JlYXRlTW9kZWwodGhpcy5tb2RpZmllZENvbnRlbnQsdGhpcy5sYW5ndWFnZSxLKSx0aGlzLmRpZmZFZGl0b3I9SC5lZGl0b3IuY3JlYXRlRGlmZkVkaXRvcigkLHthdXRvbWF0aWNMYXlvdXQ6ITAscmVhZE9ubHk6ITEsb3JpZ2luYWxFZGl0YWJsZTohMSxyZW5kZXJTaWRlQnlTaWRlOiEwLGlnbm9yZVRyaW1XaGl0ZXNwYWNlOiExLGZvbnRTaXplOjE0LG1pbmltYXA6e2VuYWJsZWQ6ITF9fSksSC5lZGl0b3Iuc2V0VGhlbWUoSSksdGhpcy5kaWZmRWRpdG9yLnNldE1vZGVsKHtvcmlnaW5hbDp0aGlzLm9yaWdpbmFsTW9kZWwsbW9kaWZpZWQ6dGhpcy5tb2RpZmllZE1vZGVsfSksdGhpcy5tb25hY29UaGVtZVN1YnNjcmlwdGlvbj1rLnRoZW1lTWFuYWdlci50aGVtZU9ic2VydmFibGUuc3Vic2NyaWJlKFc9PntsZXQgbWU9Vz8idnMiOiJ2cy1kYXJrIjtILmVkaXRvci5zZXRUaGVtZShtZSl9KTtsZXQgVj0ibW9uYWNvLWRpZmYtZWRpdG9yLWNzcyI7aWYoIXRoaXMuc2hhZG93Um9vdD8uZ2V0RWxlbWVudEJ5SWQoVikpe2xldCBtZT1hd2FpdChhd2FpdCBmZXRjaChgJHtFfS9taW4vdnMvZWRpdG9yL2VkaXRvci5tYWluLmNzc2ApKS50ZXh0KCksQj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO0IuaWQ9VixCLnRleHRDb250ZW50PW1lLHRoaXMuc2hhZG93Um9vdD8uYXBwZW5kKEIpfXNldFRpbWVvdXQoKCk9Pnt0cnl7dGhpcy5kaWZmRWRpdG9yPy5yZXZlYWxGaXJzdERpZmYoKX1jYXRjaHt9fSwxMDApLHRoaXMuZGlmZkVkaXRvckRlZmVycmVkLnJlc29sdmUodGhpcy5kaWZmRWRpdG9yKX1nb1RvTmV4dERpZmYoKXt0cnl7dGhpcy5kaWZmRWRpdG9yPy5nb1RvRGlmZigibmV4dCIpfWNhdGNoe319Z29Ub1ByZXZpb3VzRGlmZigpe3RyeXt0aGlzLmRpZmZFZGl0b3I/LmdvVG9EaWZmKCJwcmV2aW91cyIpfWNhdGNoe319YWNjZXB0TG9jYWwoKXtsZXQgJD10aGlzLmRpZmZFZGl0b3I/LmdldE1vZGlmaWVkRWRpdG9yKCkuZ2V0VmFsdWUoKXx8dGhpcy5tb2RpZmllZENvbnRlbnQ7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiZGlmZi1yZXNvbHZlZCIse2RldGFpbDp7YWN0aW9uOiJ1c2UtbG9jYWwiLGNvbnRlbnQ6JH0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1hY2NlcHREaXNrKCl7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiZGlmZi1yZXNvbHZlZCIse2RldGFpbDp7YWN0aW9uOiJ1c2UtZGlzayIsY29udGVudDp0aGlzLm9yaWdpbmFsQ29udGVudH0sYnViYmxlczohMCxjb21wb3NlZDohMH0pKX1jbG9zZSgpe3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImRpZmYtY2xvc2VkIix7YnViYmxlczohMCxjb21wb3NlZDohMH0pKX1hc3luYyBkaXNjb25uZWN0ZWRDYWxsYmFjaygpe2F3YWl0IHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5tb25hY29UaGVtZVN1YnNjcmlwdGlvbiYmKHRoaXMubW9uYWNvVGhlbWVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLm1vbmFjb1RoZW1lU3Vic2NyaXB0aW9uPW51bGwpLHRoaXMub3JpZ2luYWxNb2RlbCYmKHRoaXMub3JpZ2luYWxNb2RlbC5kaXNwb3NlKCksdGhpcy5vcmlnaW5hbE1vZGVsPW51bGwpLHRoaXMubW9kaWZpZWRNb2RlbCYmKHRoaXMubW9kaWZpZWRNb2RlbC5kaXNwb3NlKCksdGhpcy5tb2RpZmllZE1vZGVsPW51bGwpLHRoaXMuZGlmZkVkaXRvciYmKHRoaXMuZGlmZkVkaXRvci5kaXNwb3NlKCksdGhpcy5kaWZmRWRpdG9yPW51bGwpfXN0YXRpY3tmYyhhLHQpfX07cmV0dXJuIE89YX0pKCl9KTt2YXIgTmksbmEscHRzLEFTYT1nKCgpPT57cGUoKTtrdCgpO2h0KCk7bDJlKCk7VmcoKTtkMmUoKTtkMmUoKTt1SigpO3VKKCk7SWx0KCk7QWx0KCk7R2EoKTtWZygpO05sdCgpO2ZyKCk7SXQoKTthMmUoKTtSbHQoKTtOaT1mdW5jdGlvbihzLGUsdCxhLHIsbil7ZnVuY3Rpb24gbyh5KXtpZih5IT09dm9pZCAwJiZ0eXBlb2YgeSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbiBleHBlY3RlZCIpO3JldHVybiB5fWkobywiYWNjZXB0Iik7Zm9yKHZhciBsPWEua2luZCxwPWw9PT0iZ2V0dGVyIj8iZ2V0IjpsPT09InNldHRlciI/InNldCI6InZhbHVlIixkPSFlJiZzP2Euc3RhdGljP3M6cy5wcm90b3R5cGU6bnVsbCx1PWV8fChkP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhLm5hbWUpOnt9KSxjLGI9ITEsdj10Lmxlbmd0aC0xO3Y+PTA7di0tKXt2YXIgeD17fTtmb3IodmFyIG0gaW4gYSl4W21dPW09PT0iYWNjZXNzIj97fTphW21dO2Zvcih2YXIgbSBpbiBhLmFjY2Vzcyl4LmFjY2Vzc1ttXT1hLmFjY2Vzc1ttXTt4LmFkZEluaXRpYWxpemVyPWZ1bmN0aW9uKHkpe2lmKGIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkIik7bi5wdXNoKG8oeXx8bnVsbCkpfTt2YXIgZj0oMCx0W3ZdKShsPT09ImFjY2Vzc29yIj97Z2V0OnUuZ2V0LHNldDp1LnNldH06dVtwXSx4KTtpZihsPT09ImFjY2Vzc29yIil7aWYoZj09PXZvaWQgMCljb250aW51ZTtpZihmPT09bnVsbHx8dHlwZW9mIGYhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCBleHBlY3RlZCIpOyhjPW8oZi5nZXQpKSYmKHUuZ2V0PWMpLChjPW8oZi5zZXQpKSYmKHUuc2V0PWMpLChjPW8oZi5pbml0KSkmJnIudW5zaGlmdChjKX1lbHNlKGM9byhmKSkmJihsPT09ImZpZWxkIj9yLnVuc2hpZnQoYyk6dVtwXT1jKX1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxhLm5hbWUsdSksYj0hMH0sbmE9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LHB0cz0oKCk9PntsZXQgcz1bbmUoImRlZXMtd29ya3NwYWNlIildLGUsdD1bXSxhLHI9d2UsbixvPVtdLGw9W10scCxkPVtdLHU9W10sYyxiPVtdLHY9W10seCxtPVtdLGY9W10seSxNPVtdLHo9W10sTixDPVtdLF89W10sTywkPVtdLEU9W10sSCxrPVtdLFM9W10sSSxQPVtdLFI9W10sSyxWPVtdLFc9W10sbWUsQj1bXSxVPVtdLGhlLEY9W10saj1bXSx1ZSxsZT1bXSxRPVtdLGllLHRlPVtdLGVlPVtdLGtlLFg9W10sWj1bXSx5ZSxxPVtdLEE9W10sc2Usb2U9W10sYWU9W10sVGUsUmU9W10sQmU9W10sR2UsRGU9W10sX2U9W10sQ2UsdmU9W10sYmU9W10sRWUsamU9W10sV2U9W10sc3QsTWU9W10sZ2U9W107dmFyIEllPWNsYXNzIGV4dGVuZHMgcntzdGF0aWN7aSh0aGlzLCJEZWVzV29ya3NwYWNlIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IGNlPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO249W0woe3R5cGU6T2JqZWN0fSldLHA9W0woe2F0dHJpYnV0ZTohMX0pXSxjPVtMKHt0eXBlOkJvb2xlYW59KV0seD1bTCh7dHlwZTpCb29sZWFufSldLHk9W0woe3R5cGU6TnVtYmVyfSldLE49W0woe3R5cGU6TnVtYmVyfSldLE89W1koKV0sSD1bWSgpXSxJPVtZKCldLEs9W1koKV0sbWU9W1koKV0saGU9W1koKV0sdWU9W1koKV0saWU9W1koKV0sa2U9W1koKV0seWU9W1koKV0sc2U9W1koKV0sVGU9W1koKV0sR2U9W1koKV0sQ2U9W1koKV0sRWU9W1koKV0sc3Q9W1koKV0sTmkodGhpcyxudWxsLG4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJleGVjdXRpb25FbnZpcm9ubWVudCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShkZT0+ImV4ZWN1dGlvbkVudmlyb25tZW50ImluIGRlLCJoYXMiKSxnZXQ6aShkZT0+ZGUuZXhlY3V0aW9uRW52aXJvbm1lbnQsImdldCIpLHNldDppKChkZSxMZSk9PntkZS5leGVjdXRpb25FbnZpcm9ubWVudD1MZX0sInNldCIpfSxtZXRhZGF0YTpjZX0sbyxsKSxOaSh0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImluaXRpYWxpemF0aW9uUHJvbWlzZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShkZT0+ImluaXRpYWxpemF0aW9uUHJvbWlzZSJpbiBkZSwiaGFzIiksZ2V0OmkoZGU9PmRlLmluaXRpYWxpemF0aW9uUHJvbWlzZSwiZ2V0Iiksc2V0OmkoKGRlLExlKT0+e2RlLmluaXRpYWxpemF0aW9uUHJvbWlzZT1MZX0sInNldCIpfSxtZXRhZGF0YTpjZX0sZCx1KSxOaSh0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dGaWxlVHJlZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShkZT0+InNob3dGaWxlVHJlZSJpbiBkZSwiaGFzIiksZ2V0OmkoZGU9PmRlLnNob3dGaWxlVHJlZSwiZ2V0Iiksc2V0OmkoKGRlLExlKT0+e2RlLnNob3dGaWxlVHJlZT1MZX0sInNldCIpfSxtZXRhZGF0YTpjZX0sYix2KSxOaSh0aGlzLG51bGwseCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dUZXJtaW5hbCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShkZT0+InNob3dUZXJtaW5hbCJpbiBkZSwiaGFzIiksZ2V0OmkoZGU9PmRlLnNob3dUZXJtaW5hbCwiZ2V0Iiksc2V0OmkoKGRlLExlKT0+e2RlLnNob3dUZXJtaW5hbD1MZX0sInNldCIpfSxtZXRhZGF0YTpjZX0sbSxmKSxOaSh0aGlzLG51bGwseSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImZpbGVUcmVlV2lkdGgiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZGU9PiJmaWxlVHJlZVdpZHRoImluIGRlLCJoYXMiKSxnZXQ6aShkZT0+ZGUuZmlsZVRyZWVXaWR0aCwiZ2V0Iiksc2V0OmkoKGRlLExlKT0+e2RlLmZpbGVUcmVlV2lkdGg9TGV9LCJzZXQiKX0sbWV0YWRhdGE6Y2V9LE0seiksTmkodGhpcyxudWxsLE4se2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJ0ZXJtaW5hbEhlaWdodCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShkZT0+InRlcm1pbmFsSGVpZ2h0ImluIGRlLCJoYXMiKSxnZXQ6aShkZT0+ZGUudGVybWluYWxIZWlnaHQsImdldCIpLHNldDppKChkZSxMZSk9PntkZS50ZXJtaW5hbEhlaWdodD1MZX0sInNldCIpfSxtZXRhZGF0YTpjZX0sQyxfKSxOaSh0aGlzLG51bGwsTyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im9wZW5GaWxlcyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShkZT0+Im9wZW5GaWxlcyJpbiBkZSwiaGFzIiksZ2V0OmkoZGU9PmRlLm9wZW5GaWxlcywiZ2V0Iiksc2V0OmkoKGRlLExlKT0+e2RlLm9wZW5GaWxlcz1MZX0sInNldCIpfSxtZXRhZGF0YTpjZX0sJCxFKSxOaSh0aGlzLG51bGwsSCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImFjdGl2ZUZpbGVQYXRoIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGRlPT4iYWN0aXZlRmlsZVBhdGgiaW4gZGUsImhhcyIpLGdldDppKGRlPT5kZS5hY3RpdmVGaWxlUGF0aCwiZ2V0Iiksc2V0OmkoKGRlLExlKT0+e2RlLmFjdGl2ZUZpbGVQYXRoPUxlfSwic2V0Iil9LG1ldGFkYXRhOmNlfSxrLFMpLE5pKHRoaXMsbnVsbCxJLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNUZXJtaW5hbENvbGxhcHNlZCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShkZT0+ImlzVGVybWluYWxDb2xsYXBzZWQiaW4gZGUsImhhcyIpLGdldDppKGRlPT5kZS5pc1Rlcm1pbmFsQ29sbGFwc2VkLCJnZXQiKSxzZXQ6aSgoZGUsTGUpPT57ZGUuaXNUZXJtaW5hbENvbGxhcHNlZD1MZX0sInNldCIpfSxtZXRhZGF0YTpjZX0sUCxSKSxOaSh0aGlzLG51bGwsSyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImlzRmlsZVRyZWVDb2xsYXBzZWQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZGU9PiJpc0ZpbGVUcmVlQ29sbGFwc2VkImluIGRlLCJoYXMiKSxnZXQ6aShkZT0+ZGUuaXNGaWxlVHJlZUNvbGxhcHNlZCwiZ2V0Iiksc2V0OmkoKGRlLExlKT0+e2RlLmlzRmlsZVRyZWVDb2xsYXBzZWQ9TGV9LCJzZXQiKX0sbWV0YWRhdGE6Y2V9LFYsVyksTmkodGhpcyxudWxsLG1lLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNJbml0aWFsaXppbmciLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZGU9PiJpc0luaXRpYWxpemluZyJpbiBkZSwiaGFzIiksZ2V0OmkoZGU9PmRlLmlzSW5pdGlhbGl6aW5nLCJnZXQiKSxzZXQ6aSgoZGUsTGUpPT57ZGUuaXNJbml0aWFsaXppbmc9TGV9LCJzZXQiKX0sbWV0YWRhdGE6Y2V9LEIsVSksTmkodGhpcyxudWxsLGhlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiYWN0aXZlQm90dG9tUGFuZWwiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZGU9PiJhY3RpdmVCb3R0b21QYW5lbCJpbiBkZSwiaGFzIiksZ2V0OmkoZGU9PmRlLmFjdGl2ZUJvdHRvbVBhbmVsLCJnZXQiKSxzZXQ6aSgoZGUsTGUpPT57ZGUuYWN0aXZlQm90dG9tUGFuZWw9TGV9LCJzZXQiKX0sbWV0YWRhdGE6Y2V9LEYsaiksTmkodGhpcyxudWxsLHVlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiZGlhZ25vc3RpY01hcmtlcnMiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZGU9PiJkaWFnbm9zdGljTWFya2VycyJpbiBkZSwiaGFzIiksZ2V0OmkoZGU9PmRlLmRpYWdub3N0aWNNYXJrZXJzLCJnZXQiKSxzZXQ6aSgoZGUsTGUpPT57ZGUuZGlhZ25vc3RpY01hcmtlcnM9TGV9LCJzZXQiKX0sbWV0YWRhdGE6Y2V9LGxlLFEpLE5pKHRoaXMsbnVsbCxpZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImF1dG9TYXZlIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGRlPT4iYXV0b1NhdmUiaW4gZGUsImhhcyIpLGdldDppKGRlPT5kZS5hdXRvU2F2ZSwiZ2V0Iiksc2V0OmkoKGRlLExlKT0+e2RlLmF1dG9TYXZlPUxlfSwic2V0Iil9LG1ldGFkYXRhOmNlfSx0ZSxlZSksTmkodGhpcyxudWxsLGtlLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaW5pdENvbW1hbmQiLHN0YXRpYzohMSxwcml2YXRlOiExLGFjY2Vzczp7aGFzOmkoZGU9PiJpbml0Q29tbWFuZCJpbiBkZSwiaGFzIiksZ2V0OmkoZGU9PmRlLmluaXRDb21tYW5kLCJnZXQiKSxzZXQ6aSgoZGUsTGUpPT57ZGUuaW5pdENvbW1hbmQ9TGV9LCJzZXQiKX0sbWV0YWRhdGE6Y2V9LFgsWiksTmkodGhpcyxudWxsLHllLHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaW5pdE91dHB1dCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShkZT0+ImluaXRPdXRwdXQiaW4gZGUsImhhcyIpLGdldDppKGRlPT5kZS5pbml0T3V0cHV0LCJnZXQiKSxzZXQ6aSgoZGUsTGUpPT57ZGUuaW5pdE91dHB1dD1MZX0sInNldCIpfSxtZXRhZGF0YTpjZX0scSxBKSxOaSh0aGlzLG51bGwsc2Use2tpbmQ6ImFjY2Vzc29yIixuYW1lOiJjdXJyZW50RmlsZVRyZWVXaWR0aCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShkZT0+ImN1cnJlbnRGaWxlVHJlZVdpZHRoImluIGRlLCJoYXMiKSxnZXQ6aShkZT0+ZGUuY3VycmVudEZpbGVUcmVlV2lkdGgsImdldCIpLHNldDppKChkZSxMZSk9PntkZS5jdXJyZW50RmlsZVRyZWVXaWR0aD1MZX0sInNldCIpfSxtZXRhZGF0YTpjZX0sb2UsYWUpLE5pKHRoaXMsbnVsbCxUZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImN1cnJlbnRUZXJtaW5hbEhlaWdodCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShkZT0+ImN1cnJlbnRUZXJtaW5hbEhlaWdodCJpbiBkZSwiaGFzIiksZ2V0OmkoZGU9PmRlLmN1cnJlbnRUZXJtaW5hbEhlaWdodCwiZ2V0Iiksc2V0OmkoKGRlLExlKT0+e2RlLmN1cnJlbnRUZXJtaW5hbEhlaWdodD1MZX0sInNldCIpfSxtZXRhZGF0YTpjZX0sUmUsQmUpLE5pKHRoaXMsbnVsbCxHZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImlzRHJhZ2dpbmdGaWxlVHJlZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShkZT0+ImlzRHJhZ2dpbmdGaWxlVHJlZSJpbiBkZSwiaGFzIiksZ2V0OmkoZGU9PmRlLmlzRHJhZ2dpbmdGaWxlVHJlZSwiZ2V0Iiksc2V0OmkoKGRlLExlKT0+e2RlLmlzRHJhZ2dpbmdGaWxlVHJlZT1MZX0sInNldCIpfSxtZXRhZGF0YTpjZX0sRGUsX2UpLE5pKHRoaXMsbnVsbCxDZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImlzRHJhZ2dpbmdUZXJtaW5hbCIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShkZT0+ImlzRHJhZ2dpbmdUZXJtaW5hbCJpbiBkZSwiaGFzIiksZ2V0OmkoZGU9PmRlLmlzRHJhZ2dpbmdUZXJtaW5hbCwiZ2V0Iiksc2V0OmkoKGRlLExlKT0+e2RlLmlzRHJhZ2dpbmdUZXJtaW5hbD1MZX0sInNldCIpfSxtZXRhZGF0YTpjZX0sdmUsYmUpLE5pKHRoaXMsbnVsbCxFZSx7a2luZDoiYWNjZXNzb3IiLG5hbWU6InNob3dEaWZmVmlldyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aShkZT0+InNob3dEaWZmVmlldyJpbiBkZSwiaGFzIiksZ2V0OmkoZGU9PmRlLnNob3dEaWZmVmlldywiZ2V0Iiksc2V0OmkoKGRlLExlKT0+e2RlLnNob3dEaWZmVmlldz1MZX0sInNldCIpfSxtZXRhZGF0YTpjZX0samUsV2UpLE5pKHRoaXMsbnVsbCxzdCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImRpZmZWaWV3Q29uZmlnIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKGRlPT4iZGlmZlZpZXdDb25maWciaW4gZGUsImhhcyIpLGdldDppKGRlPT5kZS5kaWZmVmlld0NvbmZpZywiZ2V0Iiksc2V0OmkoKGRlLExlKT0+e2RlLmRpZmZWaWV3Q29uZmlnPUxlfSwic2V0Iil9LG1ldGFkYXRhOmNlfSxNZSxnZSksTmkobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6Y2V9LG51bGwsdCksSWU9YT1lLnZhbHVlLGNlJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmNlfSl9c3RhdGljIGRlbW89aSgoKT0+e2xldCBjZT1uZXcgTHgsZGU9KGFzeW5jKCk9Pnthd2FpdCBjZS5pbml0KCk7bGV0IFllPXsicGFja2FnZS5qc29uIjp7ZmlsZTp7Y29udGVudHM6SlNPTi5zdHJpbmdpZnkoe25hbWU6ImRlbW8tcHJvamVjdCIsdmVyc2lvbjoiMS4wLjAiLHR5cGU6Im1vZHVsZSIsc2NyaXB0czp7YnVpbGQ6InRzYyIsZGV2OiJ0c2MgLS13YXRjaCJ9LGRlcGVuZGVuY2llczp7IkBwdXNoLnJvY2tzL3NtYXJ0cHJvbWlzZSI6Il40LjIuMyJ9LGRldkRlcGVuZGVuY2llczp7IkB0eXBlcy9ub2RlIjoiXjIyLjAuMCIsdHlwZXNjcmlwdDoiXjUuMC4wIn19LG51bGwsMil9fSwibnBtZXh0cmEuanNvbiI6e2ZpbGU6e2NvbnRlbnRzOkpTT04uc3RyaW5naWZ5KHtkZWVzRWRpdG9yV29ya3NwYWNlOntvbkluaXQ6InBucG0gaW5zdGFsbCJ9fSxudWxsLDIpfX0sInRzY29uZmlnLmpzb24iOntmaWxlOntjb250ZW50czpKU09OLnN0cmluZ2lmeSh7Y29tcGlsZXJPcHRpb25zOnt0YXJnZXQ6IkVTMjAyMiIsbW9kdWxlOiJOb2RlTmV4dCIsbW9kdWxlUmVzb2x1dGlvbjoiTm9kZU5leHQiLHN0cmljdDohMCxvdXREaXI6Ii4vZGlzdCIscm9vdERpcjoiLi9zcmMiLGRlY2xhcmF0aW9uOiEwfSxpbmNsdWRlOlsic3JjLyoqLyoiXX0sbnVsbCwyKX19LHNyYzp7ZGlyZWN0b3J5OnsiaW5kZXgudHMiOntmaWxlOntjb250ZW50czpgLy8gTWFpbiBlbnRyeSBwb2ludAppbXBvcnQgeyBncmVldCwgZm9ybWF0TmFtZSB9IGZyb20gJy4vdXRpbHMuanMnOwoKY29uc3QgbmFtZSA9IGZvcm1hdE5hbWUoJ1dvcmxkJyk7CmNvbnNvbGUubG9nKGdyZWV0KG5hbWUpKTsKCi8vIEV4YW1wbGUgYXN5bmMgZnVuY3Rpb24KYXN5bmMgZnVuY3Rpb24gbWFpbigpIHsKICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLnJlc29sdmUoJ0hlbGxvIGZyb20gYXN5bmMhJyk7CiAgY29uc29sZS5sb2cocmVzdWx0KTsKfQoKbWFpbigpOwpgfX0sInV0aWxzLnRzIjp7ZmlsZTp7Y29udGVudHM6YC8vIFV0aWxpdHkgZnVuY3Rpb25zCgpleHBvcnQgaW50ZXJmYWNlIElVc2VyIHsKICBmaXJzdE5hbWU6IHN0cmluZzsKICBsYXN0TmFtZTogc3RyaW5nOwp9CgpleHBvcnQgZnVuY3Rpb24gZ3JlZXQobmFtZTogc3RyaW5nKTogc3RyaW5nIHsKICByZXR1cm4gXGBIZWxsbywgXCR7bmFtZX0hXGA7Cn0KCmV4cG9ydCBmdW5jdGlvbiBmb3JtYXROYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7CiAgcmV0dXJuIG5hbWUudHJpbSgpLnRvVXBwZXJDYXNlKCk7Cn0KCmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVVc2VyKGZpcnN0TmFtZTogc3RyaW5nLCBsYXN0TmFtZTogc3RyaW5nKTogSVVzZXIgewogIHJldHVybiB7IGZpcnN0TmFtZSwgbGFzdE5hbWUgfTsKfQpgfX0sImltcG9ydHRlc3QudHMiOntmaWxlOntjb250ZW50czpgLy8gVGVzdCBucG0gcGFja2FnZSBpbXBvcnRzCmltcG9ydCAqIGFzIHNtYXJ0cHJvbWlzZSBmcm9tICdAcHVzaC5yb2Nrcy9zbWFydHByb21pc2UnOwoKLy8gVGhpcyBzaG91bGQgaGF2ZSBJbnRlbGxpU2Vuc2Ugc2hvd2luZyBkZWZlcigpIG1ldGhvZApjb25zdCBkZWZlcnJlZCA9IHNtYXJ0cHJvbWlzZS5kZWZlcjxzdHJpbmc+KCk7CgovLyBUZXN0IHVzaW5nIHRoZSBkZWZlcnJlZCBwcm9taXNlCmFzeW5jIGZ1bmN0aW9uIHRlc3RTbWFydFByb21pc2UoKSB7CiAgc2V0VGltZW91dCgoKSA9PiB7CiAgICBkZWZlcnJlZC5yZXNvbHZlKCdIZWxsbyBmcm9tIHNtYXJ0cHJvbWlzZSEnKTsKICB9LCAxMDApOwoKICBjb25zdCByZXN1bHQgPSBhd2FpdCBkZWZlcnJlZC5wcm9taXNlOwogIGNvbnNvbGUubG9nKHJlc3VsdCk7Cn0KCnRlc3RTbWFydFByb21pc2UoKTsKYH19fX19O2F3YWl0IGNlLm1vdW50KFllKX0pKCksTGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7TGUuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IGhlaWdodDogMTAwJTsgd2lkdGg6IDEwMCU7IG92ZXJmbG93OiBoaWRkZW47IjtsZXQgS2U9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGVlcy13b3Jrc3BhY2UiKTtyZXR1cm4gS2UuZXhlY3V0aW9uRW52aXJvbm1lbnQ9Y2UsS2UuaW5pdGlhbGl6YXRpb25Qcm9taXNlPWRlLExlLmFwcGVuZENoaWxkKEtlKSx3YAogICAgICA8ZGVlcy1kZW1vd3JhcHBlcj4KICAgICAgICAke0xlfQogICAgICA8L2RlZXMtZGVtb3dyYXBwZXI+CiAgICBgfSwiZGVtbyIpO3N0YXRpYyBkZW1vR3JvdXBzPVsiV29ya3NwYWNlIl07I2U9bmEodGhpcyxvLG51bGwpO2dldCBleGVjdXRpb25FbnZpcm9ubWVudCgpe3JldHVybiB0aGlzLiNlfXNldCBleGVjdXRpb25FbnZpcm9ubWVudChjZSl7dGhpcy4jZT1jZX0jdD0obmEodGhpcyxsKSxuYSh0aGlzLGQsbnVsbCkpO2dldCBpbml0aWFsaXphdGlvblByb21pc2UoKXtyZXR1cm4gdGhpcy4jdH1zZXQgaW5pdGlhbGl6YXRpb25Qcm9taXNlKGNlKXt0aGlzLiN0PWNlfSNhPShuYSh0aGlzLHUpLG5hKHRoaXMsYiwhMCkpO2dldCBzaG93RmlsZVRyZWUoKXtyZXR1cm4gdGhpcy4jYX1zZXQgc2hvd0ZpbGVUcmVlKGNlKXt0aGlzLiNhPWNlfSNzPShuYSh0aGlzLHYpLG5hKHRoaXMsbSwhMCkpO2dldCBzaG93VGVybWluYWwoKXtyZXR1cm4gdGhpcy4jc31zZXQgc2hvd1Rlcm1pbmFsKGNlKXt0aGlzLiNzPWNlfSNpPShuYSh0aGlzLGYpLG5hKHRoaXMsTSwyNTApKTtnZXQgZmlsZVRyZWVXaWR0aCgpe3JldHVybiB0aGlzLiNpfXNldCBmaWxlVHJlZVdpZHRoKGNlKXt0aGlzLiNpPWNlfSNyPShuYSh0aGlzLHopLG5hKHRoaXMsQywyMDApKTtnZXQgdGVybWluYWxIZWlnaHQoKXtyZXR1cm4gdGhpcy4jcn1zZXQgdGVybWluYWxIZWlnaHQoY2Upe3RoaXMuI3I9Y2V9I289KG5hKHRoaXMsXyksbmEodGhpcywkLFtdKSk7Z2V0IG9wZW5GaWxlcygpe3JldHVybiB0aGlzLiNvfXNldCBvcGVuRmlsZXMoY2Upe3RoaXMuI289Y2V9I249KG5hKHRoaXMsRSksbmEodGhpcyxrLCIiKSk7Z2V0IGFjdGl2ZUZpbGVQYXRoKCl7cmV0dXJuIHRoaXMuI259c2V0IGFjdGl2ZUZpbGVQYXRoKGNlKXt0aGlzLiNuPWNlfSNsPShuYSh0aGlzLFMpLG5hKHRoaXMsUCwhMSkpO2dldCBpc1Rlcm1pbmFsQ29sbGFwc2VkKCl7cmV0dXJuIHRoaXMuI2x9c2V0IGlzVGVybWluYWxDb2xsYXBzZWQoY2Upe3RoaXMuI2w9Y2V9I2M9KG5hKHRoaXMsUiksbmEodGhpcyxWLCExKSk7Z2V0IGlzRmlsZVRyZWVDb2xsYXBzZWQoKXtyZXR1cm4gdGhpcy4jY31zZXQgaXNGaWxlVHJlZUNvbGxhcHNlZChjZSl7dGhpcy4jYz1jZX0jZD0obmEodGhpcyxXKSxuYSh0aGlzLEIsITApKTtnZXQgaXNJbml0aWFsaXppbmcoKXtyZXR1cm4gdGhpcy4jZH1zZXQgaXNJbml0aWFsaXppbmcoY2Upe3RoaXMuI2Q9Y2V9I3U9KG5hKHRoaXMsVSksbmEodGhpcyxGLCJ0ZXJtaW5hbCIpKTtnZXQgYWN0aXZlQm90dG9tUGFuZWwoKXtyZXR1cm4gdGhpcy4jdX1zZXQgYWN0aXZlQm90dG9tUGFuZWwoY2Upe3RoaXMuI3U9Y2V9I3A9KG5hKHRoaXMsaiksbmEodGhpcyxsZSxbXSkpO2dldCBkaWFnbm9zdGljTWFya2Vycygpe3JldHVybiB0aGlzLiNwfXNldCBkaWFnbm9zdGljTWFya2VycyhjZSl7dGhpcy4jcD1jZX1lZGl0b3JFbGVtZW50PShuYSh0aGlzLFEpLG51bGwpO2luaXRpYWxpemF0aW9uU3RhcnRlZD0hMTtpbnRlbGxpU2Vuc2VNYW5hZ2VyPW51bGw7aW50ZWxsaVNlbnNlSW5pdGlhbGl6ZWQ9ITE7bm9kZU1vZHVsZXNXYXRjaGVyPW51bGw7bm9kZU1vZHVsZXNEZWJvdW5jZVRpbWVvdXQ9bnVsbDtpbnRlbGxpU2Vuc2VEZWJvdW5jZVRpbWVvdXQ9bnVsbDtvcGVuRmlsZVdhdGNoZXJzPW5ldyBNYXA7ZmlsZUNoYW5nZURlYm91bmNlPW5ldyBNYXA7YWN0aW9uYmFyRWxlbWVudD1udWxsOyNoPW5hKHRoaXMsdGUsITEpO2dldCBhdXRvU2F2ZSgpe3JldHVybiB0aGlzLiNofXNldCBhdXRvU2F2ZShjZSl7dGhpcy4jaD1jZX1hdXRvU2F2ZUludGVydmFsPShuYSh0aGlzLGVlKSxudWxsKTsjZj1uYSh0aGlzLFgsIiIpO2dldCBpbml0Q29tbWFuZCgpe3JldHVybiB0aGlzLiNmfXNldCBpbml0Q29tbWFuZChjZSl7dGhpcy4jZj1jZX0jbT0obmEodGhpcyxaKSxuYSh0aGlzLHEsW10pKTtnZXQgaW5pdE91dHB1dCgpe3JldHVybiB0aGlzLiNtfXNldCBpbml0T3V0cHV0KGNlKXt0aGlzLiNtPWNlfSNnPShuYSh0aGlzLEEpLG5hKHRoaXMsb2UsMjUwKSk7Z2V0IGN1cnJlbnRGaWxlVHJlZVdpZHRoKCl7cmV0dXJuIHRoaXMuI2d9c2V0IGN1cnJlbnRGaWxlVHJlZVdpZHRoKGNlKXt0aGlzLiNnPWNlfSNiPShuYSh0aGlzLGFlKSxuYSh0aGlzLFJlLDIwMCkpO2dldCBjdXJyZW50VGVybWluYWxIZWlnaHQoKXtyZXR1cm4gdGhpcy4jYn1zZXQgY3VycmVudFRlcm1pbmFsSGVpZ2h0KGNlKXt0aGlzLiNiPWNlfSN2PShuYSh0aGlzLEJlKSxuYSh0aGlzLERlLCExKSk7Z2V0IGlzRHJhZ2dpbmdGaWxlVHJlZSgpe3JldHVybiB0aGlzLiN2fXNldCBpc0RyYWdnaW5nRmlsZVRyZWUoY2Upe3RoaXMuI3Y9Y2V9I3g9KG5hKHRoaXMsX2UpLG5hKHRoaXMsdmUsITEpKTtnZXQgaXNEcmFnZ2luZ1Rlcm1pbmFsKCl7cmV0dXJuIHRoaXMuI3h9c2V0IGlzRHJhZ2dpbmdUZXJtaW5hbChjZSl7dGhpcy4jeD1jZX0jeT0obmEodGhpcyxiZSksbmEodGhpcyxqZSwhMSkpO2dldCBzaG93RGlmZlZpZXcoKXtyZXR1cm4gdGhpcy4jeX1zZXQgc2hvd0RpZmZWaWV3KGNlKXt0aGlzLiN5PWNlfSN3PShuYSh0aGlzLFdlKSxuYSh0aGlzLE1lLG51bGwpKTtnZXQgZGlmZlZpZXdDb25maWcoKXtyZXR1cm4gdGhpcy4jd31zZXQgZGlmZlZpZXdDb25maWcoY2Upe3RoaXMuI3c9Y2V9a2V5ZG93bkhhbmRsZXI9KG5hKHRoaXMsZ2UpLGNlPT57KGNlLm1ldGFLZXl8fGNlLmN0cmxLZXkpJiZjZS5rZXk9PT0icyImJiFjZS5zaGlmdEtleSYmKGNlLnByZXZlbnREZWZhdWx0KCksdGhpcy5zYXZlQWN0aXZlRmlsZSgpKSwoY2UubWV0YUtleXx8Y2UuY3RybEtleSkmJmNlLnNoaWZ0S2V5JiZjZS5rZXkudG9Mb3dlckNhc2UoKT09PSJzIiYmKGNlLnByZXZlbnREZWZhdWx0KCksdGhpcy5zYXZlQWxsRmlsZXMoKSl9KTtoYW5kbGVGaWxlVHJlZU1vdXNlRG93bj1pKGNlPT57Y2UucHJldmVudERlZmF1bHQoKSx0aGlzLmlzRHJhZ2dpbmdGaWxlVHJlZT0hMCxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMuaGFuZGxlRmlsZVRyZWVNb3VzZU1vdmUpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHRoaXMuaGFuZGxlRmlsZVRyZWVNb3VzZVVwKX0sImhhbmRsZUZpbGVUcmVlTW91c2VEb3duIik7aGFuZGxlRmlsZVRyZWVNb3VzZU1vdmU9aShjZT0+e2lmKCF0aGlzLmlzRHJhZ2dpbmdGaWxlVHJlZSlyZXR1cm47bGV0IGRlPXRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksTGU9Y2UuY2xpZW50WC1kZS5sZWZ0LEtlPTE1MCxZZT1kZS53aWR0aCouNSxvdD1NYXRoLm1heChLZSxNYXRoLm1pbihZZSxMZSkpO3RoaXMuY3VycmVudEZpbGVUcmVlV2lkdGg9b3R9LCJoYW5kbGVGaWxlVHJlZU1vdXNlTW92ZSIpO2hhbmRsZUZpbGVUcmVlTW91c2VVcD1pKCgpPT57dGhpcy5pc0RyYWdnaW5nRmlsZVRyZWU9ITEsZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLmhhbmRsZUZpbGVUcmVlTW91c2VNb3ZlKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLmhhbmRsZUZpbGVUcmVlTW91c2VVcCksd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCJyZXNpemUiKSl9LCJoYW5kbGVGaWxlVHJlZU1vdXNlVXAiKTtoYW5kbGVUZXJtaW5hbE1vdXNlRG93bj1pKGNlPT57Y2UucHJldmVudERlZmF1bHQoKSx0aGlzLmlzRHJhZ2dpbmdUZXJtaW5hbD0hMCxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMuaGFuZGxlVGVybWluYWxNb3VzZU1vdmUpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHRoaXMuaGFuZGxlVGVybWluYWxNb3VzZVVwKX0sImhhbmRsZVRlcm1pbmFsTW91c2VEb3duIik7aGFuZGxlVGVybWluYWxNb3VzZU1vdmU9aShjZT0+e2lmKCF0aGlzLmlzRHJhZ2dpbmdUZXJtaW5hbClyZXR1cm47bGV0IGRlPXRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksTGU9Y2UuY2xpZW50WS1kZS50b3AsS2U9ZGUuaGVpZ2h0LUxlLFllPTEwMCxvdD1kZS5oZWlnaHQqLjcsVXQ9TWF0aC5tYXgoWWUsTWF0aC5taW4ob3QsS2UpKTt0aGlzLmN1cnJlbnRUZXJtaW5hbEhlaWdodD1VdH0sImhhbmRsZVRlcm1pbmFsTW91c2VNb3ZlIik7aGFuZGxlVGVybWluYWxNb3VzZVVwPWkoKCk9Pnt0aGlzLmlzRHJhZ2dpbmdUZXJtaW5hbD0hMSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMuaGFuZGxlVGVybWluYWxNb3VzZU1vdmUpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHRoaXMuaGFuZGxlVGVybWluYWxNb3VzZVVwKSx3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoInJlc2l6ZSIpKX0sImhhbmRsZVRlcm1pbmFsTW91c2VVcCIpO3N0YXRpYyBzdHlsZXM9W3FlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTYlKSIsImhzbCgwIDAlIDclKSIpfTsKICAgICAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIHNhbnMtc2VyaWY7CiAgICAgIH0KCiAgICAgIC53b3Jrc3BhY2Utb3V0ZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIC53b3Jrc3BhY2UtY29udGFpbmVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgZmxleDogMTsKICAgICAgICBtaW4taGVpZ2h0OiAwOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAuZWRpdG9yLWFyZWEgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG1pbi13aWR0aDogMDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAuZmlsZXRyZWUtcGFuZWwgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAuZmlsZXRyZWUtcGFuZWwuY29sbGFwc2VkIHsKICAgICAgICB3aWR0aDogMCAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAuZWRpdG9yLXBhbmVsIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDEwMCUpIiwiaHNsKDAgMCUgOSUpIil9OwogICAgICAgIGZsZXg6IDE7CiAgICAgICAgbWluLXdpZHRoOiAyMDBweDsKICAgICAgfQoKICAgICAgLnRlcm1pbmFsLXBhbmVsIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4NSUpIiwiaHNsKDAgMCUgMTUlKSIpfTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICB9CgogICAgICAudGVybWluYWwtcGFuZWwuY29sbGFwc2VkIHsKICAgICAgICBoZWlnaHQ6IDMycHggIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgLnBhbmVsLWhlYWRlciB7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgcGFkZGluZzogMCA4cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk1JSkiLCJoc2woMCAwJSA4JSkiKX07CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4NSUpIiwiaHNsKDAgMCUgMTUlKSIpfTsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDQwJSkiLCJoc2woMCAwJSA2MCUpIil9OwogICAgICB9CgogICAgICAucGFuZWwtaGVhZGVyLXRpdGxlIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA2cHg7CiAgICAgIH0KCiAgICAgIC5wYW5lbC1oZWFkZXItYWN0aW9ucyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNHB4OwogICAgICB9CgogICAgICAucGFuZWwtYWN0aW9uIHsKICAgICAgICB3aWR0aDogMjRweDsKICAgICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA1MCUpIiwiaHNsKDAgMCUgNjAlKSIpfTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgfQoKICAgICAgLnBhbmVsLWFjdGlvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDg4JSkiLCJoc2woMCAwJSAxOCUpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMzAlKSIsImhzbCgwIDAlIDgwJSkiKX07CiAgICAgIH0KCiAgICAgIC50YWJzLWJhciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDsKICAgICAgICBoZWlnaHQ6IDM2cHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk2JSkiLCJoc2woMCAwJSA4JSkiKX07CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4NSUpIiwiaHNsKDAgMCUgMTUlKSIpfTsKICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwogICAgICB9CgogICAgICAudGFiIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgcGFkZGluZzogMCAxMnB4OwogICAgICAgIG1pbi13aWR0aDogMTIwcHg7CiAgICAgICAgbWF4LXdpZHRoOiAyMDBweDsKICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiaHNsKDAgMCUgODglKSIsImhzbCgwIDAlIDEyJSkiKX07CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDUwJSkiLCJoc2woMCAwJSA2MCUpIil9OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA5NCUpIiwiaHNsKDAgMCUgMTAlKSIpfTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgfQoKICAgICAgLnRhYjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDkyJSkiLCJoc2woMCAwJSAxMiUpIil9OwogICAgICB9CgogICAgICAudGFiLmFjdGl2ZSB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDEwMCUpIiwiaHNsKDAgMCUgOSUpIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgMjAlKSIsImhzbCgwIDAlIDkwJSkiKX07CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICR7aC5iZFRoZW1lKCJoc2woMjEwIDEwMCUgNTAlKSIsImhzbCgyMTAgMTAwJSA2MCUpIil9OwogICAgICB9CgogICAgICAudGFiLW5hbWUgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CgogICAgICAudGFiLWNsb3NlIHsKICAgICAgICB3aWR0aDogMTZweDsKICAgICAgICBoZWlnaHQ6IDE2cHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlOwogICAgICB9CgogICAgICAudGFiOmhvdmVyIC50YWItY2xvc2UgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC50YWItY2xvc2U6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSA4NSUpIiwiaHNsKDAgMCUgMjUlKSIpfTsKICAgICAgfQoKICAgICAgLnRhYi1tb2RpZmllZCB7CiAgICAgICAgd2lkdGg6IDhweDsKICAgICAgICBoZWlnaHQ6IDhweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDUwJSkiLCJoc2woMCAwJSA2MCUpIil9OwogICAgICB9CgogICAgICAudGFicy1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleDogMTsKICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwogICAgICB9CgogICAgICAuZWRpdG9yLW1lbnUtYnV0dG9uIHsKICAgICAgICBwYWRkaW5nOiA2cHggOHB4OwogICAgICAgIG1hcmdpbi1yaWdodDogNHB4OwogICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgb3BhY2l0eTogMC42OwogICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMsIGJhY2tncm91bmQgMC4xNXM7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICB9CgogICAgICAuZWRpdG9yLW1lbnUtYnV0dG9uOmhvdmVyIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAwJSAvIDAuMDgpIiwiaHNsKDAgMCUgMTAwJSAvIDAuMSkiKX07CiAgICAgIH0KCiAgICAgIC5lZGl0b3ItY29udGVudCB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIC50ZXJtaW5hbC1jb250ZW50IHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAzMnB4OwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICB9CgogICAgICAucHJvYmxlbXMtY29udGVudCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMzJweDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAxMDAlKSIsImhzbCgwIDAlIDklKSIpfTsKICAgICAgfQoKICAgICAgLnBhbmVsLXRhYnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDA7CiAgICAgIH0KCiAgICAgIC5wYW5lbC10YWIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDZweDsKICAgICAgICBwYWRkaW5nOiAwIDEycHg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDUwJSkiLCJoc2woMCAwJSA1NSUpIil9OwogICAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgfQoKICAgICAgLnBhbmVsLXRhYjpob3ZlciB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAzMCUpIiwiaHNsKDAgMCUgNzUlKSIpfTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgOTAlKSIsImhzbCgwIDAlIDEyJSkiKX07CiAgICAgIH0KCiAgICAgIC5wYW5lbC10YWIuYWN0aXZlIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDIwJSkiLCJoc2woMCAwJSA5MCUpIil9OwogICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMjEwIDEwMCUgNTAlKSIsImhzbCgyMTAgMTAwJSA2MCUpIil9OwogICAgICB9CgogICAgICAucGFuZWwtdGFiLWJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIG1pbi13aWR0aDogMThweDsKICAgICAgICBoZWlnaHQ6IDE4cHg7CiAgICAgICAgcGFkZGluZzogMCA1cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOXB4OwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCJoc2woMCA3MCUgNTAlKSIsImhzbCgwIDcwJSA0NSUpIil9OwogICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgfQoKICAgICAgLnBhbmVsLXRhYi1iYWRnZS53YXJuaW5nIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDQwIDcwJSA1MCUpIiwiaHNsKDQwIDcwJSA0NSUpIil9OwogICAgICB9CgogICAgICAucGFuZWwtdGFiLWJhZGdlLm5vbmUgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5wcm9ibGVtcy1saXN0IHsKICAgICAgICBwYWRkaW5nOiA0cHggMDsKICAgICAgfQoKICAgICAgLnByb2JsZW0taXRlbSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBwYWRkaW5nOiA2cHggMTJweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCJoc2woMCAwJSAzMCUpIiwiaHNsKDAgMCUgODAlKSIpfTsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMXMgZWFzZTsKICAgICAgfQoKICAgICAgLnByb2JsZW0taXRlbTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDk1JSkiLCJoc2woMCAwJSAxNSUpIil9OwogICAgICB9CgogICAgICAucHJvYmxlbS1pY29uIHsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICBtYXJnaW4tdG9wOiAycHg7CiAgICAgIH0KCiAgICAgIC5wcm9ibGVtLWljb24uZXJyb3IgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgNzAlIDUwJSkiLCJoc2woMCA3MCUgNjAlKSIpfTsKICAgICAgfQoKICAgICAgLnByb2JsZW0taWNvbi53YXJuaW5nIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCg0MCA3MCUgNTAlKSIsImhzbCg0MCA3MCUgNjAlKSIpfTsKICAgICAgfQoKICAgICAgLnByb2JsZW0tZGV0YWlscyB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBtaW4td2lkdGg6IDA7CiAgICAgIH0KCiAgICAgIC5wcm9ibGVtLW1lc3NhZ2UgewogICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7CiAgICAgIH0KCiAgICAgIC5wcm9ibGVtLWxvY2F0aW9uIHsKICAgICAgICBtYXJnaW4tdG9wOiAycHg7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNTAlKSIsImhzbCgwIDAlIDU1JSkiKX07CiAgICAgIH0KCiAgICAgIC5wcm9ibGVtcy1lbXB0eSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNTUlKSIsImhzbCgwIDAlIDUwJSkiKX07CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGdhcDogOHB4OwogICAgICB9CgogICAgICAuZW1wdHktc3RhdGUgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgwIDAlIDUwJSkiLCJoc2woMCAwJSA1MCUpIil9OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBnYXA6IDhweDsKICAgICAgfQoKICAgICAgLmVtcHR5LXN0YXRlIGRlZXMtaWNvbiB7CiAgICAgICAgd2lkdGg6IDQ4cHg7CiAgICAgICAgaGVpZ2h0OiA0OHB4OwogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBzcGluIHsKICAgICAgICBmcm9tIHsgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH0KICAgICAgICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0KICAgICAgfQoKICAgICAgLmluaXRpYWxpemluZyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiaHNsKDAgMCUgNTAlKSIsImhzbCgwIDAlIDYwJSkiKX07CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGdhcDogMTJweDsKICAgICAgfQoKICAgICAgLmluaXRpYWxpemluZyBkZWVzLWljb24gewogICAgICAgIGFuaW1hdGlvbjogc3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7CiAgICAgIH0KCiAgICAgIC5pbml0aWFsaXppbmcgZGVlcy13b3Jrc3BhY2UtdGVybWluYWwtcHJldmlldyB7CiAgICAgICAgbWFyZ2luLXRvcDogMjRweDsKICAgICAgICB3aWR0aDogODAlOwogICAgICAgIG1heC13aWR0aDogNjAwcHg7CiAgICAgICAgaGVpZ2h0OiAyMDBweDsKICAgICAgfQoKICAgICAgZGVlcy13b3Jrc3BhY2UtZmlsZXRyZWUgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgIH0KCiAgICAgIGRlZXMtd29ya3NwYWNlLW1vbmFjbyB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgfQoKICAgICAgZGVlcy13b3Jrc3BhY2UtdGVybWluYWwgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgIH0KCiAgICAgIC8qIFJlc2l6ZSBoYW5kbGVzICovCiAgICAgIC5yZXNpemUtaGFuZGxlLXZlcnRpY2FsIHsKICAgICAgICB3aWR0aDogNnB4OwogICAgICAgIGN1cnNvcjogY29sLXJlc2l6ZTsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzIGVhc2U7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIHotaW5kZXg6IDEwOwogICAgICB9CgogICAgICAucmVzaXplLWhhbmRsZS12ZXJ0aWNhbDpob3ZlciwKICAgICAgLnJlc2l6ZS1oYW5kbGUtdmVydGljYWwuZHJhZ2dpbmcgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzU4YTZmZiIpfTsKICAgICAgfQoKICAgICAgLnJlc2l6ZS1oYW5kbGUtdmVydGljYWw6OmFmdGVyIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiA1MCU7CiAgICAgICAgbGVmdDogNTAlOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgICAgIHdpZHRoOiAycHg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjOWNhM2FmIiwiIzZlNzY4MSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiAxcHg7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGVhc2U7CiAgICAgIH0KCiAgICAgIC5yZXNpemUtaGFuZGxlLXZlcnRpY2FsOmhvdmVyOjphZnRlciwKICAgICAgLnJlc2l6ZS1oYW5kbGUtdmVydGljYWwuZHJhZ2dpbmc6OmFmdGVyIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiI2ZmZmZmZiIpfTsKICAgICAgfQoKICAgICAgLnJlc2l6ZS1oYW5kbGUtaG9yaXpvbnRhbCB7CiAgICAgICAgaGVpZ2h0OiA2cHg7CiAgICAgICAgY3Vyc29yOiByb3ctcmVzaXplOwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xNXMgZWFzZTsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgei1pbmRleDogMTA7CiAgICAgIH0KCiAgICAgIC5yZXNpemUtaGFuZGxlLWhvcml6b250YWw6aG92ZXIsCiAgICAgIC5yZXNpemUtaGFuZGxlLWhvcml6b250YWwuZHJhZ2dpbmcgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjM2I4MmY2IiwiIzU4YTZmZiIpfTsKICAgICAgfQoKICAgICAgLnJlc2l6ZS1oYW5kbGUtaG9yaXpvbnRhbDo6YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDUwJTsKICAgICAgICBsZWZ0OiA1MCU7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgaGVpZ2h0OiAycHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiM5Y2EzYWYiLCIjNmU3NjgxIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDFweDsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgZWFzZTsKICAgICAgfQoKICAgICAgLnJlc2l6ZS1oYW5kbGUtaG9yaXpvbnRhbDpob3Zlcjo6YWZ0ZXIsCiAgICAgIC5yZXNpemUtaGFuZGxlLWhvcml6b250YWwuZHJhZ2dpbmc6OmFmdGVyIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiI2ZmZmZmZiIpfTsKICAgICAgfQoKICAgICAgLyogUHJldmVudCB0ZXh0IHNlbGVjdGlvbiB3aGlsZSBkcmFnZ2luZyAqLwogICAgICAud29ya3NwYWNlLWNvbnRhaW5lci5kcmFnZ2luZyB7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIH0KCiAgICAgIC53b3Jrc3BhY2UtY29udGFpbmVyLmRyYWdnaW5nIC5maWxldHJlZS1wYW5lbCwKICAgICAgLndvcmtzcGFjZS1jb250YWluZXIuZHJhZ2dpbmcgLmVkaXRvci1wYW5lbCwKICAgICAgLndvcmtzcGFjZS1jb250YWluZXIuZHJhZ2dpbmcgLnRlcm1pbmFsLXBhbmVsIHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgIGBdO3JlbmRlcigpe2xldCBjZT1bIndvcmtzcGFjZS1jb250YWluZXIiLHRoaXMuaXNEcmFnZ2luZ0ZpbGVUcmVlfHx0aGlzLmlzRHJhZ2dpbmdUZXJtaW5hbD8iZHJhZ2dpbmciOiIiXS5maWx0ZXIoQm9vbGVhbikuam9pbigiICIpO3JldHVybiB0aGlzLmlzSW5pdGlhbGl6aW5nP3dgCiAgICAgICAgPGRpdiBjbGFzcz0iaW5pdGlhbGl6aW5nIj4KICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHsibHVjaWRlOmxvYWRlcjIifSBpY29uU2l6ZT0iMzIiPjwvZGVlcy1pY29uPgogICAgICAgICAgPHNwYW4+SW5pdGlhbGl6aW5nIHdvcmtzcGFjZS4uLjwvc3Bhbj4KICAgICAgICAgIDxkZWVzLXdvcmtzcGFjZS10ZXJtaW5hbC1wcmV2aWV3CiAgICAgICAgICAgIC5jb21tYW5kPSR7dGhpcy5pbml0Q29tbWFuZHx8IiJ9CiAgICAgICAgICAgIC5saW5lcz0ke3RoaXMuaW5pdE91dHB1dH0KICAgICAgICAgID48L2RlZXMtd29ya3NwYWNlLXRlcm1pbmFsLXByZXZpZXc+CiAgICAgICAgPC9kaXY+CiAgICAgIGA6d2AKICAgICAgPGRpdiBjbGFzcz0id29ya3NwYWNlLW91dGVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSIke2NlfSI+CiAgICAgICAgICA8IS0tIEZpbGV0cmVlIHBhbmVsIChmdWxsIGhlaWdodCkgLS0+CiAgICAgICAgICAke3RoaXMuc2hvd0ZpbGVUcmVlP3dgCiAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICBjbGFzcz0iZmlsZXRyZWUtcGFuZWwgJHt0aGlzLmlzRmlsZVRyZWVDb2xsYXBzZWQ/ImNvbGxhcHNlZCI6IiJ9IgogICAgICAgICAgICAgIHN0eWxlPSJ3aWR0aDogJHt0aGlzLmlzRmlsZVRyZWVDb2xsYXBzZWQ/MDp0aGlzLmN1cnJlbnRGaWxlVHJlZVdpZHRofXB4IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPGRlZXMtd29ya3NwYWNlLWZpbGV0cmVlCiAgICAgICAgICAgICAgICAuZXhlY3V0aW9uRW52aXJvbm1lbnQ9JHt0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50fQogICAgICAgICAgICAgICAgLnNlbGVjdGVkUGF0aD0ke3RoaXMuYWN0aXZlRmlsZVBhdGh9CiAgICAgICAgICAgICAgICBAZmlsZS1zZWxlY3Q9JHt0aGlzLmhhbmRsZUZpbGVTZWxlY3R9CiAgICAgICAgICAgICAgPjwvZGVlcy13b3Jrc3BhY2UtZmlsZXRyZWU+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAke3RoaXMuaXNGaWxlVHJlZUNvbGxhcHNlZD8iIjp3YAogICAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSJyZXNpemUtaGFuZGxlLXZlcnRpY2FsICR7dGhpcy5pc0RyYWdnaW5nRmlsZVRyZWU/ImRyYWdnaW5nIjoiIn0iCiAgICAgICAgICAgICAgICBAbW91c2Vkb3duPSR7dGhpcy5oYW5kbGVGaWxlVHJlZU1vdXNlRG93bn0KICAgICAgICAgICAgICA+PC9kaXY+CiAgICAgICAgICAgIGB9CiAgICAgICAgICBgOiIifQoKICAgICAgICAgIDwhLS0gRWRpdG9yICsgVGVybWluYWwgYXJlYSAtLT4KICAgICAgICAgIDxkaXYgY2xhc3M9ImVkaXRvci1hcmVhIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWRpdG9yLXBhbmVsIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWJzLWJhciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWJzLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICR7dGhpcy5vcGVuRmlsZXMubWFwKGRlPT53YAogICAgICAgICAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJ0YWIgJHtkZS5wYXRoPT09dGhpcy5hY3RpdmVGaWxlUGF0aD8iYWN0aXZlIjoiIn0iCiAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy5hY3RpdmF0ZUZpbGUoZGUucGF0aCl9CiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgJHtkZS5tb2RpZmllZD93YDxzcGFuIGNsYXNzPSJ0YWItbW9kaWZpZWQiPjwvc3Bhbj5gOiIifQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRhYi1uYW1lIj4ke2RlLm5hbWV9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRhYi1jbG9zZSIgQGNsaWNrPSR7TGU9PnRoaXMuY2xvc2VGaWxlKExlLGRlLnBhdGgpfT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6eCJ9IGljb25TaXplPSIxMiI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIGApfQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlZGl0b3ItbWVudS1idXR0b24iIEBjbGljaz0ke3RoaXMuc2hvd0VkaXRvck1lbnV9IHRpdGxlPSJFZGl0b3Igb3B0aW9ucyI+CiAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHsibHVjaWRlOm1vcmVWZXJ0aWNhbCJ9IGljb25TaXplPSIxNiI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlZGl0b3ItY29udGVudCI+CiAgICAgICAgICAgICAgICAke3RoaXMuc2hvd0RpZmZWaWV3JiZ0aGlzLmRpZmZWaWV3Q29uZmlnP3dgCiAgICAgICAgICAgICAgICAgIDxkZWVzLXdvcmtzcGFjZS1kaWZmLWVkaXRvcgogICAgICAgICAgICAgICAgICAgIC5maWxlUGF0aD0ke3RoaXMuZGlmZlZpZXdDb25maWcuZmlsZVBhdGh9CiAgICAgICAgICAgICAgICAgICAgLm9yaWdpbmFsQ29udGVudD0ke3RoaXMuZGlmZlZpZXdDb25maWcub3JpZ2luYWxDb250ZW50fQogICAgICAgICAgICAgICAgICAgIC5tb2RpZmllZENvbnRlbnQ9JHt0aGlzLmRpZmZWaWV3Q29uZmlnLm1vZGlmaWVkQ29udGVudH0KICAgICAgICAgICAgICAgICAgICAubGFuZ3VhZ2U9JHt0aGlzLmRpZmZWaWV3Q29uZmlnLmxhbmd1YWdlfQogICAgICAgICAgICAgICAgICAgIEBkaWZmLXJlc29sdmVkPSR7dGhpcy5oYW5kbGVEaWZmUmVzb2x2ZWR9CiAgICAgICAgICAgICAgICAgICAgQGRpZmYtY2xvc2VkPSR7KCk9Pnt0aGlzLnNob3dEaWZmVmlldz0hMSx0aGlzLmRpZmZWaWV3Q29uZmlnPW51bGx9fQogICAgICAgICAgICAgICAgICA+PC9kZWVzLXdvcmtzcGFjZS1kaWZmLWVkaXRvcj4KICAgICAgICAgICAgICAgIGA6dGhpcy5vcGVuRmlsZXMubGVuZ3RoPT09MD93YAogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbXB0eS1zdGF0ZSI+CiAgICAgICAgICAgICAgICAgICAgPGRlZXMtaWNvbiAuaWNvbj0keyJsdWNpZGU6ZmlsZUNvZGUifSBpY29uU2l6ZT0iNDgiPjwvZGVlcy1pY29uPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPlNlbGVjdCBhIGZpbGUgdG8gZWRpdDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICBgOndgCiAgICAgICAgICAgICAgICAgIDxkZWVzLXdvcmtzcGFjZS1tb25hY28KICAgICAgICAgICAgICAgICAgICAuZmlsZVBhdGg9JHt0aGlzLmFjdGl2ZUZpbGVQYXRofQogICAgICAgICAgICAgICAgICAgIC5jb250ZW50PSR7dGhpcy5nZXRBY3RpdmVGaWxlQ29udGVudCgpfQogICAgICAgICAgICAgICAgICAgIC5sYW5ndWFnZT0ke3RoaXMuZ2V0TGFuZ3VhZ2VGcm9tUGF0aCh0aGlzLmFjdGl2ZUZpbGVQYXRoKX0KICAgICAgICAgICAgICAgICAgICBAY29udGVudC1jaGFuZ2U9JHt0aGlzLmhhbmRsZUNvbnRlbnRDaGFuZ2V9CiAgICAgICAgICAgICAgICAgID48L2RlZXMtd29ya3NwYWNlLW1vbmFjbz4KICAgICAgICAgICAgICAgIGB9CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRlZXMtYWN0aW9uYmFyPjwvZGVlcy1hY3Rpb25iYXI+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPCEtLSBIb3Jpem9udGFsIHJlc2l6ZSBoYW5kbGUgZm9yIHRlcm1pbmFsIC0tPgogICAgICAgICAgICAke3RoaXMuc2hvd1Rlcm1pbmFsJiYhdGhpcy5pc1Rlcm1pbmFsQ29sbGFwc2VkP3dgCiAgICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgY2xhc3M9InJlc2l6ZS1oYW5kbGUtaG9yaXpvbnRhbCAke3RoaXMuaXNEcmFnZ2luZ1Rlcm1pbmFsPyJkcmFnZ2luZyI6IiJ9IgogICAgICAgICAgICAgICAgQG1vdXNlZG93bj0ke3RoaXMuaGFuZGxlVGVybWluYWxNb3VzZURvd259CiAgICAgICAgICAgICAgPjwvZGl2PgogICAgICAgICAgICBgOiIifQoKICAgICAgICAgICAgPCEtLSBUZXJtaW5hbCBwYW5lbCAtLT4KICAgICAgICAgICAgJHt0aGlzLnNob3dUZXJtaW5hbD93YAogICAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSJ0ZXJtaW5hbC1wYW5lbCAke3RoaXMuaXNUZXJtaW5hbENvbGxhcHNlZD8iY29sbGFwc2VkIjoiIn0iCiAgICAgICAgICAgICAgICBzdHlsZT0iaGVpZ2h0OiAke3RoaXMuaXNUZXJtaW5hbENvbGxhcHNlZD8zMjp0aGlzLmN1cnJlbnRUZXJtaW5hbEhlaWdodH1weCIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYW5lbC1oZWFkZXIiPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYW5lbC10YWJzIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0icGFuZWwtdGFiICR7dGhpcy5hY3RpdmVCb3R0b21QYW5lbD09PSJ0ZXJtaW5hbCI/ImFjdGl2ZSI6IiJ9IgogICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPSR7KCk9PnRoaXMuYWN0aXZlQm90dG9tUGFuZWw9InRlcm1pbmFsIn0KICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICA8ZGVlcy1pY29uIC5pY29uPSR7Imx1Y2lkZTp0ZXJtaW5hbCJ9IGljb25TaXplPSIxNCI+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICAgICAgICBUZXJtaW5hbAogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJwYW5lbC10YWIgJHt0aGlzLmFjdGl2ZUJvdHRvbVBhbmVsPT09InByb2JsZW1zIj8iYWN0aXZlIjoiIn0iCiAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy5hY3RpdmVCb3R0b21QYW5lbD0icHJvYmxlbXMifQogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHsibHVjaWRlOmNpcmNsZUFsZXJ0In0gaWNvblNpemU9IjE0Ij48L2RlZXMtaWNvbj4KICAgICAgICAgICAgICAgICAgICAgIFByb2JsZW1zCiAgICAgICAgICAgICAgICAgICAgICAke3RoaXMuZGlhZ25vc3RpY01hcmtlcnMubGVuZ3RoPjA/d2AKICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBhbmVsLXRhYi1iYWRnZSAke3RoaXMuZ2V0RXJyb3JDb3VudCgpPT09MD8id2FybmluZyI6IiJ9Ij4ke3RoaXMuZGlhZ25vc3RpY01hcmtlcnMubGVuZ3RofTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgIGA6IiJ9CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYW5lbC1oZWFkZXItYWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFuZWwtYWN0aW9uIiBAY2xpY2s9JHt0aGlzLnRvZ2dsZVRlcm1pbmFsfT4KICAgICAgICAgICAgICAgICAgICAgIDxkZWVzLWljb24KICAgICAgICAgICAgICAgICAgICAgICAgLmljb249JHt0aGlzLmlzVGVybWluYWxDb2xsYXBzZWQ/Imx1Y2lkZTpjaGV2cm9uVXAiOiJsdWNpZGU6Y2hldnJvbkRvd24ifQogICAgICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZT0iMTQiCiAgICAgICAgICAgICAgICAgICAgICA+PC9kZWVzLWljb24+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbC1jb250ZW50IiBzdHlsZT0iZGlzcGxheTogJHt0aGlzLmFjdGl2ZUJvdHRvbVBhbmVsPT09InRlcm1pbmFsIj8iYmxvY2siOiJub25lIn0iPgogICAgICAgICAgICAgICAgICA8ZGVlcy13b3Jrc3BhY2UtdGVybWluYWwKICAgICAgICAgICAgICAgICAgICAuZXhlY3V0aW9uRW52aXJvbm1lbnQ9JHt0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50fQogICAgICAgICAgICAgICAgICAgIC5zZXR1cENvbW1hbmQ9JHsiIn0KICAgICAgICAgICAgICAgICAgPjwvZGVlcy13b3Jrc3BhY2UtdGVybWluYWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2JsZW1zLWNvbnRlbnQiIHN0eWxlPSJkaXNwbGF5OiAke3RoaXMuYWN0aXZlQm90dG9tUGFuZWw9PT0icHJvYmxlbXMiPyJibG9jayI6Im5vbmUifSI+CiAgICAgICAgICAgICAgICAgICR7dGhpcy5yZW5kZXJQcm9ibGVtc1BhbmVsKCl9CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYDoiIn0KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8IS0tIEJvdHRvbSBCYXIgKGZ1bGwgd2lkdGgpIC0tPgogICAgICAgIDxkZWVzLXdvcmtzcGFjZS1ib3R0b21iYXIKICAgICAgICAgIC5leGVjdXRpb25FbnZpcm9ubWVudD0ke3RoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnR9CiAgICAgICAgICBAcnVuLXByb2Nlc3M9JHt0aGlzLmhhbmRsZVJ1blByb2Nlc3N9CiAgICAgICAgPjwvZGVlcy13b3Jrc3BhY2UtYm90dG9tYmFyPgogICAgICA8L2Rpdj4KICAgIGB9YXN5bmMgY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMua2V5ZG93bkhhbmRsZXIpfWFzeW5jIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7YXdhaXQgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLmtleWRvd25IYW5kbGVyKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMuaGFuZGxlRmlsZVRyZWVNb3VzZU1vdmUpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHRoaXMuaGFuZGxlRmlsZVRyZWVNb3VzZVVwKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMuaGFuZGxlVGVybWluYWxNb3VzZU1vdmUpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHRoaXMuaGFuZGxlVGVybWluYWxNb3VzZVVwKSx0aGlzLmF1dG9TYXZlSW50ZXJ2YWwmJihjbGVhckludGVydmFsKHRoaXMuYXV0b1NhdmVJbnRlcnZhbCksdGhpcy5hdXRvU2F2ZUludGVydmFsPW51bGwpLHRoaXMuc3RvcE5vZGVNb2R1bGVzV2F0Y2hlcigpLHRoaXMuc3RvcEFsbEZpbGVXYXRjaGVycygpfWFzeW5jIGZpcnN0VXBkYXRlZCgpe3RoaXMuY3VycmVudEZpbGVUcmVlV2lkdGg9dGhpcy5maWxlVHJlZVdpZHRoLHRoaXMuY3VycmVudFRlcm1pbmFsSGVpZ2h0PXRoaXMudGVybWluYWxIZWlnaHQsdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudCYmYXdhaXQgdGhpcy5pbml0aWFsaXplV29ya3NwYWNlKCl9YXN5bmMgdXBkYXRlZChjZSl7Y2UuaGFzKCJleGVjdXRpb25FbnZpcm9ubWVudCIpJiZ0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50JiZhd2FpdCB0aGlzLmluaXRpYWxpemVXb3Jrc3BhY2UoKSx0aGlzLmFjdGlvbmJhckVsZW1lbnR8fCh0aGlzLmFjdGlvbmJhckVsZW1lbnQ9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCIuZWRpdG9yLXBhbmVsIGRlZXMtYWN0aW9uYmFyIikpfWFzeW5jIGluaXRpYWxpemVXb3Jrc3BhY2UoKXtpZih0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50JiYhdGhpcy5pbml0aWFsaXphdGlvblN0YXJ0ZWQpe3RoaXMuaW5pdGlhbGl6YXRpb25TdGFydGVkPSEwLHRoaXMuaXNJbml0aWFsaXppbmc9ITA7dHJ5e3RoaXMuaW5pdGlhbGl6YXRpb25Qcm9taXNlP2F3YWl0IHRoaXMuaW5pdGlhbGl6YXRpb25Qcm9taXNlOnRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQucmVhZHl8fGF3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQuaW5pdCgpLGF3YWl0IHRoaXMuZXhlY3V0ZU9uSW5pdENvbW1hbmQoKX1jYXRjaChjZSl7Y29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGluaXRpYWxpemUgd29ya3NwYWNlOiIsY2UpLHRoaXMuaW5pdGlhbGl6YXRpb25TdGFydGVkPSExfWZpbmFsbHl7dGhpcy5pc0luaXRpYWxpemluZz0hMX19fWFzeW5jIGV4ZWN1dGVPbkluaXRDb21tYW5kKCl7aWYodGhpcy5leGVjdXRpb25FbnZpcm9ubWVudCl0cnl7aWYoYXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5leGlzdHMoIi9ucG1leHRyYS5qc29uIikpe2xldCBjZT1hd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LnJlYWRGaWxlKCIvbnBtZXh0cmEuanNvbiIpLExlPUpTT04ucGFyc2UoY2UpPy5kZWVzRWRpdG9yV29ya3NwYWNlPy5vbkluaXQ7aWYoTGUmJnR5cGVvZiBMZT09InN0cmluZyIpe2NvbnNvbGUubG9nKCJFeGVjdXRpbmcgb25Jbml0IGNvbW1hbmQ6IixMZSksdGhpcy5pbml0Q29tbWFuZD1MZSx0aGlzLmluaXRPdXRwdXQ9W107bGV0W0tlLC4uLlllXT1MZS5zcGxpdCgiICIpLG90PWF3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQuc3Bhd24oS2UsWWUpO290Lm91dHB1dC5waXBlVG8obmV3IFdyaXRhYmxlU3RyZWFtKHt3cml0ZTppKFp0PT57bGV0IGphPVp0LnNwbGl0KGAKYCk7Zm9yKGxldCBldCBvZiBqYSlldCYmKHRoaXMuaW5pdE91dHB1dD1bLi4udGhpcy5pbml0T3V0cHV0LGV0XSl9LCJ3cml0ZSIpfSkpO2xldCBVdD1hd2FpdCBvdC5leGl0O2NvbnNvbGUubG9nKCJvbkluaXQgY29tbWFuZCBjb21wbGV0ZWQgd2l0aCBleGl0IGNvZGU6IixVdCksdGhpcy5pbml0T3V0cHV0PVsuLi50aGlzLmluaXRPdXRwdXQsIiIsYENvbW1hbmQgY29tcGxldGVkIHdpdGggZXhpdCBjb2RlOiAke1V0fWBdfX19Y2F0Y2goY2Upe2NvbnNvbGUud2FybigiRmFpbGVkIHRvIGV4ZWN1dGUgb25Jbml0IGNvbW1hbmQ6IixjZSl9fWFzeW5jIGluaXRpYWxpemVJbnRlbGxpU2Vuc2UoKXtpZighdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudHx8dGhpcy5pbnRlbGxpU2Vuc2VJbml0aWFsaXplZClyZXR1cm47bGV0IGNlPXdpbmRvdy5tb25hY287aWYoY2V8fChhd2FpdCBuZXcgUHJvbWlzZShkZT0+c2V0VGltZW91dChkZSwxMDApKSxjZT13aW5kb3cubW9uYWNvKSwhY2Upe2NvbnNvbGUud2FybigiTW9uYWNvIG5vdCB5ZXQgbG9hZGVkLCBJbnRlbGxpU2Vuc2Ugd2lsbCBiZSBpbml0aWFsaXplZCBsYXRlciIpO3JldHVybn10aGlzLmludGVsbGlTZW5zZUluaXRpYWxpemVkPSEwLHRoaXMuaW50ZWxsaVNlbnNlTWFuYWdlcj1uZXcgdTJlLGF3YWl0IHRoaXMuaW50ZWxsaVNlbnNlTWFuYWdlci5pbml0KGNlLHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQpLHRoaXMuc2V0dXBNYXJrZXJMaXN0ZW5lcigpLHRoaXMuc3RhcnROb2RlTW9kdWxlc1dhdGNoZXIoKSxhd2FpdCB0aGlzLmludGVsbGlTZW5zZU1hbmFnZXIuc2NhbkFuZExvYWROZXdQYWNrYWdlVHlwZXMoKX1zdGFydE5vZGVNb2R1bGVzV2F0Y2hlcigpe2lmKCEoIXRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnR8fHRoaXMubm9kZU1vZHVsZXNXYXRjaGVyKSl0cnl7dGhpcy5ub2RlTW9kdWxlc1dhdGNoZXI9dGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC53YXRjaCgiL25vZGVfbW9kdWxlcyIsKGNlLGRlKT0+e3RoaXMubm9kZU1vZHVsZXNEZWJvdW5jZVRpbWVvdXQmJmNsZWFyVGltZW91dCh0aGlzLm5vZGVNb2R1bGVzRGVib3VuY2VUaW1lb3V0KSx0aGlzLm5vZGVNb2R1bGVzRGVib3VuY2VUaW1lb3V0PXNldFRpbWVvdXQoYXN5bmMoKT0+e3RoaXMuaW50ZWxsaVNlbnNlTWFuYWdlciYmYXdhaXQgdGhpcy5pbnRlbGxpU2Vuc2VNYW5hZ2VyLnNjYW5BbmRMb2FkTmV3UGFja2FnZVR5cGVzKCl9LDJlMyl9LHtyZWN1cnNpdmU6ITB9KX1jYXRjaChjZSl7Y29uc29sZS53YXJuKCJDb3VsZCBub3Qgd2F0Y2ggbm9kZV9tb2R1bGVzOiIsY2UpfX1zdG9wTm9kZU1vZHVsZXNXYXRjaGVyKCl7dGhpcy5ub2RlTW9kdWxlc1dhdGNoZXImJih0aGlzLm5vZGVNb2R1bGVzV2F0Y2hlci5zdG9wKCksdGhpcy5ub2RlTW9kdWxlc1dhdGNoZXI9bnVsbCksdGhpcy5ub2RlTW9kdWxlc0RlYm91bmNlVGltZW91dCYmKGNsZWFyVGltZW91dCh0aGlzLm5vZGVNb2R1bGVzRGVib3VuY2VUaW1lb3V0KSx0aGlzLm5vZGVNb2R1bGVzRGVib3VuY2VUaW1lb3V0PW51bGwpfXN0YXJ0V2F0Y2hpbmdGaWxlKGNlKXtpZighKCF0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50fHx0aGlzLm9wZW5GaWxlV2F0Y2hlcnMuaGFzKGNlKSkpdHJ5e2xldCBkZT10aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LndhdGNoKGNlLChMZSxLZSk9PntsZXQgWWU9dGhpcy5maWxlQ2hhbmdlRGVib3VuY2UuZ2V0KGNlKTtZZSYmY2xlYXJUaW1lb3V0KFllKTtsZXQgb3Q9c2V0VGltZW91dCgoKT0+e3RoaXMuaGFuZGxlRXh0ZXJuYWxGaWxlQ2hhbmdlKGNlKSx0aGlzLmZpbGVDaGFuZ2VEZWJvdW5jZS5kZWxldGUoY2UpfSwzMDApO3RoaXMuZmlsZUNoYW5nZURlYm91bmNlLnNldChjZSxvdCl9KTt0aGlzLm9wZW5GaWxlV2F0Y2hlcnMuc2V0KGNlLGRlKX1jYXRjaChkZSl7Y29uc29sZS53YXJuKGBDb3VsZCBub3Qgd2F0Y2ggZmlsZSAke2NlfTpgLGRlKX19c3RvcFdhdGNoaW5nRmlsZShjZSl7bGV0IGRlPXRoaXMub3BlbkZpbGVXYXRjaGVycy5nZXQoY2UpO2RlJiYoZGUuc3RvcCgpLHRoaXMub3BlbkZpbGVXYXRjaGVycy5kZWxldGUoY2UpKTtsZXQgTGU9dGhpcy5maWxlQ2hhbmdlRGVib3VuY2UuZ2V0KGNlKTtMZSYmKGNsZWFyVGltZW91dChMZSksdGhpcy5maWxlQ2hhbmdlRGVib3VuY2UuZGVsZXRlKGNlKSl9c3RvcEFsbEZpbGVXYXRjaGVycygpe2ZvcihsZXQgY2Ugb2YgdGhpcy5vcGVuRmlsZVdhdGNoZXJzLnZhbHVlcygpKWNlLnN0b3AoKTt0aGlzLm9wZW5GaWxlV2F0Y2hlcnMuY2xlYXIoKTtmb3IobGV0IGNlIG9mIHRoaXMuZmlsZUNoYW5nZURlYm91bmNlLnZhbHVlcygpKWNsZWFyVGltZW91dChjZSk7dGhpcy5maWxlQ2hhbmdlRGVib3VuY2UuY2xlYXIoKX1hc3luYyBoYW5kbGVFeHRlcm5hbEZpbGVDaGFuZ2UoY2Upe2xldCBkZT10aGlzLm9wZW5GaWxlcy5maW5kKExlPT5MZS5wYXRoPT09Y2UpO2lmKCEoIWRlfHwhdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudCkpdHJ5e2xldCBMZT1hd2FpdCB0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50LnJlYWRGaWxlKGNlKTtpZihMZT09PWRlLmNvbnRlbnQpcmV0dXJuO2lmKGRlLm1vZGlmaWVkKXtsZXQgS2U9YXdhaXQgdGhpcy5hY3Rpb25iYXJFbGVtZW50Py5zaG93KHttZXNzYWdlOmAiJHtkZS5uYW1lfSIgY2hhbmdlZCBvbiBkaXNrLiBXaGF0IGRvIHlvdSB3YW50IHRvIGRvP2AsdHlwZToicXVlc3Rpb24iLGljb246Imx1Y2lkZTpnaXRNZXJnZSIsYWN0aW9uczpbe2lkOiJsb2FkLWRpc2siLGxhYmVsOiJMb2FkIGZyb20gRGlzayIscHJpbWFyeTohMH0se2lkOiJzYXZlLWxvY2FsIixsYWJlbDoiU2F2ZSBMb2NhbCB0byBEaXNrIn0se2lkOiJjb21wYXJlIixsYWJlbDoiQ29tcGFyZSJ9XSx0aW1lb3V0OntkdXJhdGlvbjoxNWUzLGRlZmF1bHRBY3Rpb25JZDoibG9hZC1kaXNrIn0sZGlzbWlzc2libGU6ITB9KTtLZT8uYWN0aW9uSWQ9PT0ibG9hZC1kaXNrIj9hd2FpdCB0aGlzLnVwZGF0ZUZpbGVDb250ZW50KGNlLExlLCExKTpLZT8uYWN0aW9uSWQ9PT0ic2F2ZS1sb2NhbCI/KGF3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQud3JpdGVGaWxlKGNlLGRlLmNvbnRlbnQpLHRoaXMub3BlbkZpbGVzPXRoaXMub3BlbkZpbGVzLm1hcChZZT0+WWUucGF0aD09PWNlP3suLi5ZZSxtb2RpZmllZDohMX06WWUpKTpLZT8uYWN0aW9uSWQ9PT0iY29tcGFyZSImJnRoaXMub3BlbkRpZmZWaWV3KGNlLGRlLmNvbnRlbnQsTGUpfWVsc2UgYXdhaXQgdGhpcy51cGRhdGVGaWxlQ29udGVudChjZSxMZSwhMCl9Y2F0Y2goTGUpe2NvbnNvbGUud2FybihgRmFpbGVkIHRvIGhhbmRsZSBleHRlcm5hbCBjaGFuZ2UgZm9yICR7Y2V9OmAsTGUpfX1hc3luYyB1cGRhdGVGaWxlQ29udGVudChjZSxkZSxMZSl7aWYodGhpcy5vcGVuRmlsZXM9dGhpcy5vcGVuRmlsZXMubWFwKEtlPT5LZS5wYXRoPT09Y2U/ey4uLktlLGNvbnRlbnQ6ZGUsbW9kaWZpZWQ6ITF9OktlKSxjZT09PXRoaXMuYWN0aXZlRmlsZVBhdGgpe2xldCBLZT10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoImRlZXMtd29ya3NwYWNlLW1vbmFjbyIpO0tlJiZhd2FpdCBLZS5zZXRDb250ZW50RXh0ZXJuYWwoZGUsTGUpfX1vcGVuRGlmZlZpZXcoY2UsZGUsTGUpe3RoaXMuZGlmZlZpZXdDb25maWc9e2ZpbGVQYXRoOmNlLG9yaWdpbmFsQ29udGVudDpMZSxtb2RpZmllZENvbnRlbnQ6ZGUsbGFuZ3VhZ2U6dGhpcy5nZXRMYW5ndWFnZUZyb21QYXRoKGNlKX0sdGhpcy5zaG93RGlmZlZpZXc9ITB9YXN5bmMgaGFuZGxlRGlmZlJlc29sdmVkKGNlKXtsZXR7YWN0aW9uOmRlLGNvbnRlbnQ6TGV9PWNlLmRldGFpbCxLZT10aGlzLmRpZmZWaWV3Q29uZmlnPy5maWxlUGF0aDtpZighS2V8fCF0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50KXt0aGlzLnNob3dEaWZmVmlldz0hMSx0aGlzLmRpZmZWaWV3Q29uZmlnPW51bGw7cmV0dXJufWlmKGRlPT09InVzZS1sb2NhbCIpe2lmKGF3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQud3JpdGVGaWxlKEtlLExlKSx0aGlzLm9wZW5GaWxlcz10aGlzLm9wZW5GaWxlcy5tYXAoWWU9PlllLnBhdGg9PT1LZT97Li4uWWUsY29udGVudDpMZSxtb2RpZmllZDohMX06WWUpLEtlPT09dGhpcy5hY3RpdmVGaWxlUGF0aCl7bGV0IFllPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiZGVlcy13b3Jrc3BhY2UtbW9uYWNvIik7WWUmJmF3YWl0IFllLnNldENvbnRlbnRFeHRlcm5hbChMZSwhMSl9fWVsc2UgZGU9PT0idXNlLWRpc2siJiZhd2FpdCB0aGlzLnVwZGF0ZUZpbGVDb250ZW50KEtlLExlLCExKTt0aGlzLnNob3dEaWZmVmlldz0hMSx0aGlzLmRpZmZWaWV3Q29uZmlnPW51bGx9YXN5bmMgaGFuZGxlRmlsZVNlbGVjdChjZSl7bGV0e3BhdGg6ZGUsbmFtZTpMZX09Y2UuZGV0YWlsO2F3YWl0IHRoaXMub3BlbkZpbGUoZGUsTGUpfWFzeW5jIG9wZW5GaWxlKGNlLGRlKXtpZih0aGlzLm9wZW5GaWxlcy5maW5kKEtlPT5LZS5wYXRoPT09Y2UpKXt0aGlzLmFjdGl2ZUZpbGVQYXRoPWNlO3JldHVybn1pZih0aGlzLmV4ZWN1dGlvbkVudmlyb25tZW50KXRyeXtsZXQgS2U9YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC5yZWFkRmlsZShjZSk7aWYodGhpcy5vcGVuRmlsZXM9Wy4uLnRoaXMub3BlbkZpbGVzLHtwYXRoOmNlLG5hbWU6ZGUsY29udGVudDpLZSxtb2RpZmllZDohMX1dLHRoaXMuYWN0aXZlRmlsZVBhdGg9Y2UsdGhpcy5zdGFydFdhdGNoaW5nRmlsZShjZSksIXRoaXMuaW50ZWxsaVNlbnNlSW5pdGlhbGl6ZWQpe2F3YWl0IHRoaXMudXBkYXRlQ29tcGxldGUsYXdhaXQgbmV3IFByb21pc2Uob3Q9PnNldFRpbWVvdXQob3QsNTAwKSksYXdhaXQgdGhpcy5pbml0aWFsaXplSW50ZWxsaVNlbnNlKCk7bGV0IFllPXRoaXMuZ2V0TGFuZ3VhZ2VGcm9tUGF0aChjZSk7dGhpcy5pbnRlbGxpU2Vuc2VNYW5hZ2VyJiYoWWU9PT0idHlwZXNjcmlwdCJ8fFllPT09ImphdmFzY3JpcHQiKSYmYXdhaXQgdGhpcy5pbnRlbGxpU2Vuc2VNYW5hZ2VyLnByb2Nlc3NDb250ZW50Q2hhbmdlKEtlKX19Y2F0Y2goS2Upe2NvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBvcGVuIGZpbGUgJHtjZX06YCxLZSl9fWFjdGl2YXRlRmlsZShjZSl7dGhpcy5hY3RpdmVGaWxlUGF0aD1jZX1jbG9zZUZpbGUoY2UsZGUpe2NlLnN0b3BQcm9wYWdhdGlvbigpO2xldCBMZT10aGlzLm9wZW5GaWxlcy5maW5kSW5kZXgoWWU9PlllLnBhdGg9PT1kZSk7aWYoTGU9PT0tMSlyZXR1cm47bGV0IEtlPXRoaXMub3BlbkZpbGVzW0xlXTtpZighKEtlLm1vZGlmaWVkJiYhY29uZmlybShgJHtLZS5uYW1lfSBoYXMgdW5zYXZlZCBjaGFuZ2VzLiBDbG9zZSBhbnl3YXk/YCkpJiYodGhpcy5zdG9wV2F0Y2hpbmdGaWxlKGRlKSx0aGlzLm9wZW5GaWxlcz10aGlzLm9wZW5GaWxlcy5maWx0ZXIoWWU9PlllLnBhdGghPT1kZSksdGhpcy5hY3RpdmVGaWxlUGF0aD09PWRlKSlpZih0aGlzLm9wZW5GaWxlcy5sZW5ndGg+MCl7bGV0IFllPU1hdGgubWluKExlLHRoaXMub3BlbkZpbGVzLmxlbmd0aC0xKTt0aGlzLmFjdGl2ZUZpbGVQYXRoPXRoaXMub3BlbkZpbGVzW1llXS5wYXRofWVsc2UgdGhpcy5hY3RpdmVGaWxlUGF0aD0iIn1nZXRBY3RpdmVGaWxlQ29udGVudCgpe3JldHVybiB0aGlzLm9wZW5GaWxlcy5maW5kKGRlPT5kZS5wYXRoPT09dGhpcy5hY3RpdmVGaWxlUGF0aCk/LmNvbnRlbnR8fCIifWhhbmRsZUNvbnRlbnRDaGFuZ2UoY2Upe2xldCBkZT1jZS5kZXRhaWwsTGU9dGhpcy5vcGVuRmlsZXMuZmluZEluZGV4KFllPT5ZZS5wYXRoPT09dGhpcy5hY3RpdmVGaWxlUGF0aCk7aWYoTGU9PT0tMSlyZXR1cm47bGV0IEtlPXRoaXMub3BlbkZpbGVzW0xlXTtpZihLZS5jb250ZW50IT09ZGUpe3RoaXMub3BlbkZpbGVzPVsuLi50aGlzLm9wZW5GaWxlcy5zbGljZSgwLExlKSx7Li4uS2UsY29udGVudDpkZSxtb2RpZmllZDohMH0sLi4udGhpcy5vcGVuRmlsZXMuc2xpY2UoTGUrMSldO2xldCBZZT10aGlzLmdldExhbmd1YWdlRnJvbVBhdGgodGhpcy5hY3RpdmVGaWxlUGF0aCk7dGhpcy5pbnRlbGxpU2Vuc2VNYW5hZ2VyJiYoWWU9PT0idHlwZXNjcmlwdCJ8fFllPT09ImphdmFzY3JpcHQiKSYmKHRoaXMuaW50ZWxsaVNlbnNlRGVib3VuY2VUaW1lb3V0JiZjbGVhclRpbWVvdXQodGhpcy5pbnRlbGxpU2Vuc2VEZWJvdW5jZVRpbWVvdXQpLHRoaXMuaW50ZWxsaVNlbnNlRGVib3VuY2VUaW1lb3V0PXNldFRpbWVvdXQoKCk9Pnt0aGlzLmludGVsbGlTZW5zZU1hbmFnZXI/LnByb2Nlc3NDb250ZW50Q2hhbmdlKGRlKX0sNTAwKSl9fWdldExhbmd1YWdlRnJvbVBhdGgoY2Upe2xldCBkZT1jZS5zcGxpdCgiLiIpLnBvcCgpPy50b0xvd2VyQ2FzZSgpO3JldHVybnt0czoidHlwZXNjcmlwdCIsdHN4OiJ0eXBlc2NyaXB0IixqczoiamF2YXNjcmlwdCIsanN4OiJqYXZhc2NyaXB0Iixqc29uOiJqc29uIixodG1sOiJodG1sIixjc3M6ImNzcyIsc2Nzczoic2NzcyIsbGVzczoibGVzcyIsbWQ6Im1hcmtkb3duIix5YW1sOiJ5YW1sIix5bWw6InlhbWwiLHhtbDoieG1sIixzcWw6InNxbCIscHk6InB5dGhvbiIsc2g6InNoZWxsIixiYXNoOiJzaGVsbCJ9W2RlfHwiIl18fCJwbGFpbnRleHQifXRvZ2dsZVRlcm1pbmFsKCl7dGhpcy5pc1Rlcm1pbmFsQ29sbGFwc2VkPSF0aGlzLmlzVGVybWluYWxDb2xsYXBzZWR9YXN5bmMgc2F2ZUFjdGl2ZUZpbGUoKXtsZXQgY2U9dGhpcy5vcGVuRmlsZXMuZmluZChkZT0+ZGUucGF0aD09PXRoaXMuYWN0aXZlRmlsZVBhdGgpO2lmKCEoIWNlfHwhdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudCkpdHJ5e2F3YWl0IHRoaXMuZXhlY3V0aW9uRW52aXJvbm1lbnQud3JpdGVGaWxlKGNlLnBhdGgsY2UuY29udGVudCksdGhpcy5vcGVuRmlsZXM9dGhpcy5vcGVuRmlsZXMubWFwKGRlPT5kZS5wYXRoPT09Y2UucGF0aD97Li4uZGUsbW9kaWZpZWQ6ITF9OmRlKSx0aGlzLmludGVsbGlTZW5zZU1hbmFnZXImJnRoaXMuaW50ZWxsaVNlbnNlTWFuYWdlci5hZGRGaWxlTW9kZWwoY2UucGF0aCxjZS5jb250ZW50KX1jYXRjaChkZSl7Y29uc29sZS5lcnJvcigiRmFpbGVkIHRvIHNhdmUgZmlsZToiLGRlKX19YXN5bmMgc2F2ZUFsbEZpbGVzKCl7aWYodGhpcy5leGVjdXRpb25FbnZpcm9ubWVudCl7Zm9yKGxldCBjZSBvZiB0aGlzLm9wZW5GaWxlcy5maWx0ZXIoZGU9PmRlLm1vZGlmaWVkKSl0cnl7YXdhaXQgdGhpcy5leGVjdXRpb25FbnZpcm9ubWVudC53cml0ZUZpbGUoY2UucGF0aCxjZS5jb250ZW50KSx0aGlzLmludGVsbGlTZW5zZU1hbmFnZXImJnRoaXMuaW50ZWxsaVNlbnNlTWFuYWdlci5hZGRGaWxlTW9kZWwoY2UucGF0aCxjZS5jb250ZW50KX1jYXRjaChkZSl7Y29uc29sZS5lcnJvcihgRmFpbGVkIHRvIHNhdmUgJHtjZS5wYXRofTpgLGRlKX10aGlzLm9wZW5GaWxlcz10aGlzLm9wZW5GaWxlcy5tYXAoY2U9Pih7Li4uY2UsbW9kaWZpZWQ6ITF9KSl9fWFzeW5jIHNob3dFZGl0b3JNZW51KGNlKXtjZS5zdG9wUHJvcGFnYXRpb24oKTtsZXQgZGU9W3tuYW1lOnRoaXMuYXV0b1NhdmU/Ilx1MjcxMyBBdXRvIFNhdmUiOiJBdXRvIFNhdmUiLGljb25OYW1lOiJsdWNpZGU6c2F2ZSIsYWN0aW9uOmkoYXN5bmMoKT0+dGhpcy50b2dnbGVBdXRvU2F2ZSgpLCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJTYXZlIixpY29uTmFtZToibHVjaWRlOnNhdmUiLGFjdGlvbjppKGFzeW5jKCk9PnRoaXMuc2F2ZUFjdGl2ZUZpbGUoKSwiYWN0aW9uIil9LHtuYW1lOiJTYXZlIEFsbCIsaWNvbk5hbWU6Imx1Y2lkZTpzYXZlIixhY3Rpb246aShhc3luYygpPT50aGlzLnNhdmVBbGxGaWxlcygpLCJhY3Rpb24iKX1dO2F3YWl0ICRhLm9wZW5Db250ZXh0TWVudVdpdGhPcHRpb25zKGNlLGRlKX10b2dnbGVBdXRvU2F2ZSgpe3RoaXMuYXV0b1NhdmU9IXRoaXMuYXV0b1NhdmUsdGhpcy5hdXRvU2F2ZT90aGlzLmF1dG9TYXZlSW50ZXJ2YWw9c2V0SW50ZXJ2YWwoKCk9Pnt0aGlzLm9wZW5GaWxlcy5zb21lKGRlPT5kZS5tb2RpZmllZCkmJnRoaXMuc2F2ZUFsbEZpbGVzKCl9LDJlMyk6dGhpcy5hdXRvU2F2ZUludGVydmFsJiYoY2xlYXJJbnRlcnZhbCh0aGlzLmF1dG9TYXZlSW50ZXJ2YWwpLHRoaXMuYXV0b1NhdmVJbnRlcnZhbD1udWxsKX1nZXRFcnJvckNvdW50KCl7cmV0dXJuIHRoaXMuZGlhZ25vc3RpY01hcmtlcnMuZmlsdGVyKGNlPT5jZS5zZXZlcml0eT09PTgpLmxlbmd0aH1yZW5kZXJQcm9ibGVtc1BhbmVsKCl7cmV0dXJuIHRoaXMuZGlhZ25vc3RpY01hcmtlcnMubGVuZ3RoPT09MD93YAogICAgICAgIDxkaXYgY2xhc3M9InByb2JsZW1zLWVtcHR5Ij4KICAgICAgICAgIDxkZWVzLWljb24gLmljb249JHsibHVjaWRlOmNoZWNrQ2lyY2xlIn0gaWNvblNpemU9IjI0Ij48L2RlZXMtaWNvbj4KICAgICAgICAgIDxzcGFuPk5vIHByb2JsZW1zIGRldGVjdGVkPC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICBgOndgCiAgICAgIDxkaXYgY2xhc3M9InByb2JsZW1zLWxpc3QiPgogICAgICAgICR7dGhpcy5kaWFnbm9zdGljTWFya2Vycy5tYXAoY2U9PndgCiAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9ibGVtLWl0ZW0iIEBjbGljaz0keygpPT50aGlzLm5hdmlnYXRlVG9Qcm9ibGVtKGNlKX0+CiAgICAgICAgICAgIDxkZWVzLWljb24KICAgICAgICAgICAgICBjbGFzcz0icHJvYmxlbS1pY29uICR7Y2Uuc2V2ZXJpdHk9PT04PyJlcnJvciI6Indhcm5pbmcifSIKICAgICAgICAgICAgICAuaWNvbj0ke2NlLnNldmVyaXR5PT09OD8ibHVjaWRlOmNpcmNsZVgiOiJsdWNpZGU6dHJpYW5nbGVBbGVydCJ9CiAgICAgICAgICAgICAgaWNvblNpemU9IjE0IgogICAgICAgICAgICA+PC9kZWVzLWljb24+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2JsZW0tZGV0YWlscyI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvYmxlbS1tZXNzYWdlIj4ke2NlLm1lc3NhZ2V9PC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvYmxlbS1sb2NhdGlvbiI+CiAgICAgICAgICAgICAgICAke2NlLnJlc291cmNlLnBhdGguc3BsaXQoIi8iKS5wb3AoKX0gKCR7Y2Uuc3RhcnRMaW5lTnVtYmVyfSwgJHtjZS5zdGFydENvbHVtbn0pCiAgICAgICAgICAgICAgICAke2NlLnNvdXJjZT9gWyR7Y2Uuc291cmNlfV1gOiIifQogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIGApfQogICAgICA8L2Rpdj4KICAgIGB9YXN5bmMgbmF2aWdhdGVUb1Byb2JsZW0oY2Upe2xldCBkZT1jZS5yZXNvdXJjZS5wYXRoLExlPWRlLnNwbGl0KCIvIikucG9wKCl8fCIiO3RoaXMub3BlbkZpbGVzLmZpbmQob3Q9Pm90LnBhdGg9PT1kZSk/dGhpcy5hY3RpdmVGaWxlUGF0aD1kZTphd2FpdCB0aGlzLm9wZW5GaWxlKGRlLExlKSxhd2FpdCB0aGlzLnVwZGF0ZUNvbXBsZXRlO2xldCBZZT10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoImRlZXMtd29ya3NwYWNlLW1vbmFjbyIpO2lmKFllKXtsZXQgb3Q9YXdhaXQgWWUuZWRpdG9yRGVmZXJyZWQucHJvbWlzZTtvdC5yZXZlYWxMaW5lSW5DZW50ZXIoY2Uuc3RhcnRMaW5lTnVtYmVyKSxvdC5zZXRQb3NpdGlvbih7bGluZU51bWJlcjpjZS5zdGFydExpbmVOdW1iZXIsY29sdW1uOmNlLnN0YXJ0Q29sdW1ufSksb3QuZm9jdXMoKX19c2V0dXBNYXJrZXJMaXN0ZW5lcigpe2xldCBjZT13aW5kb3cubW9uYWNvO2NlJiYoY2UuZWRpdG9yLm9uRGlkQ2hhbmdlTWFya2VycyhkZT0+e3RoaXMudXBkYXRlRGlhZ25vc3RpY01hcmtlcnMoKX0pLHRoaXMudXBkYXRlRGlhZ25vc3RpY01hcmtlcnMoKSl9dXBkYXRlRGlhZ25vc3RpY01hcmtlcnMoKXtsZXQgY2U9d2luZG93Lm1vbmFjbztpZighY2UpcmV0dXJuO2xldCBkZT1jZS5lZGl0b3IuZ2V0TW9kZWxNYXJrZXJzKHt9KTt0aGlzLmRpYWdub3N0aWNNYXJrZXJzPWRlLm1hcChMZT0+KHttZXNzYWdlOkxlLm1lc3NhZ2Usc2V2ZXJpdHk6TGUuc2V2ZXJpdHksc3RhcnRMaW5lTnVtYmVyOkxlLnN0YXJ0TGluZU51bWJlcixzdGFydENvbHVtbjpMZS5zdGFydENvbHVtbixlbmRMaW5lTnVtYmVyOkxlLmVuZExpbmVOdW1iZXIsZW5kQ29sdW1uOkxlLmVuZENvbHVtbixzb3VyY2U6TGUuc291cmNlLHJlc291cmNlOntwYXRoOkxlLnJlc291cmNlLnBhdGh9fSkpfWFzeW5jIGhhbmRsZVJ1blByb2Nlc3MoY2Upe2xldCBkZT1jZS5kZXRhaWwsTGU9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCJkZWVzLXdvcmtzcGFjZS10ZXJtaW5hbCIpO2lmKCFMZSl7Y29uc29sZS53YXJuKCJUZXJtaW5hbCBjb21wb25lbnQgbm90IGZvdW5kIik7cmV0dXJufXRoaXMuaXNUZXJtaW5hbENvbGxhcHNlZCYmKHRoaXMuaXNUZXJtaW5hbENvbGxhcHNlZD0hMSksdGhpcy5hY3RpdmVCb3R0b21QYW5lbD0idGVybWluYWwiLGF3YWl0IHRoaXMudXBkYXRlQ29tcGxldGUsYXdhaXQgTGUuY3JlYXRlUHJvY2Vzc1RhYih7dHlwZTpkZS50eXBlLGxhYmVsOmRlLmxhYmVsLGNvbW1hbmQ6ZGUuY29tbWFuZCxhcmdzOmRlLmFyZ3MsbWV0YWRhdGE6ZGUubWV0YWRhdGEsc3dpdGNoVG9UYWI6ITB9KX1zZXRGaWxlVHJlZVdpZHRoKGNlKXtsZXQgTGU9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCouNTt0aGlzLmN1cnJlbnRGaWxlVHJlZVdpZHRoPU1hdGgubWF4KDE1MCxNYXRoLm1pbihMZSxjZSkpLHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgicmVzaXplIikpfXNldFRlcm1pbmFsSGVpZ2h0KGNlKXtsZXQgTGU9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQqLjc7dGhpcy5jdXJyZW50VGVybWluYWxIZWlnaHQ9TWF0aC5tYXgoMTAwLE1hdGgubWluKExlLGNlKSksd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCJyZXNpemUiKSl9cmVzZXRMYXlvdXQoKXt0aGlzLmN1cnJlbnRGaWxlVHJlZVdpZHRoPXRoaXMuZmlsZVRyZWVXaWR0aCx0aGlzLmN1cnJlbnRUZXJtaW5hbEhlaWdodD10aGlzLnRlcm1pbmFsSGVpZ2h0LHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgicmVzaXplIikpfXN0YXRpY3tuYShhLHQpfX07cmV0dXJuIEllPWF9KSgpfSk7dmFyIE5TYT1nKCgpPT57QVNhKCk7Tmx0KCl9KTt2YXIgUlNhPWcoKCk9PntWZygpfSk7dmFyIE9TYT1nKCgpPT57ZDJlKCl9KTt2YXIgRlNhPWcoKCk9Pnt9KTt2YXIgQlNhPWcoKCk9Pnt1SigpO0ZTYSgpO3psdCgpfSk7dmFyIEhTYT1nKCgpPT57SWx0KCl9KTt2YXIgaEosWXUsX2NuLGh0cyxxU2E9ZygoKT0+e3BlKCk7aHQoKTtWZygpO2hKPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxZdT1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0sX2NuPWx0LnBsdWdpbnMuc21hcnRwcm9taXNlLmRlZmVyKCksaHRzPSgoKT0+e2xldCBzPVtuZSgiZGVlcy13b3Jrc3BhY2UtbWFya2Rvd24iKV0sZSx0PVtdLGEscj13ZSxuLG89W10sbD1bXSxwLGQ9W10sdT1bXSxjLGI9W10sdj1bXSx4LG09W10sZj1bXTt2YXIgeT1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiRGVlc1dvcmtzcGFjZU1hcmtkb3duIil9c3RhdGlje2E9dGhpc31zdGF0aWN7bGV0IE09dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLm1ldGFkYXRhP09iamVjdC5jcmVhdGUocltTeW1ib2wubWV0YWRhdGFdPz9udWxsKTp2b2lkIDA7bj1bTCh7dHlwZTpOdW1iZXJ9KV0scD1bTCh7dHlwZTpOdW1iZXJ9KV0sYz1bWSgpXSx4PVtZKCldLGhKKHRoaXMsbnVsbCxuLHtraW5kOiJhY2Nlc3NvciIsbmFtZToic3BsaXRSYXRpbyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4ic3BsaXRSYXRpbyJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LnNwbGl0UmF0aW8sImdldCIpLHNldDppKCh6LE4pPT57ei5zcGxpdFJhdGlvPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sbyxsKSxoSih0aGlzLG51bGwscCx7a2luZDoiYWNjZXNzb3IiLG5hbWU6Im1pblBhbmVsU2l6ZSIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4ibWluUGFuZWxTaXplImluIHosImhhcyIpLGdldDppKHo9PnoubWluUGFuZWxTaXplLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3oubWluUGFuZWxTaXplPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sZCx1KSxoSih0aGlzLG51bGwsYyx7a2luZDoiYWNjZXNzb3IiLG5hbWU6ImN1cnJlbnRTcGxpdFJhdGlvIixzdGF0aWM6ITEscHJpdmF0ZTohMSxhY2Nlc3M6e2hhczppKHo9PiJjdXJyZW50U3BsaXRSYXRpbyJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LmN1cnJlbnRTcGxpdFJhdGlvLCJnZXQiKSxzZXQ6aSgoeixOKT0+e3ouY3VycmVudFNwbGl0UmF0aW89Tn0sInNldCIpfSxtZXRhZGF0YTpNfSxiLHYpLGhKKHRoaXMsbnVsbCx4LHtraW5kOiJhY2Nlc3NvciIsbmFtZToiaXNEcmFnZ2luZyIsc3RhdGljOiExLHByaXZhdGU6ITEsYWNjZXNzOntoYXM6aSh6PT4iaXNEcmFnZ2luZyJpbiB6LCJoYXMiKSxnZXQ6aSh6PT56LmlzRHJhZ2dpbmcsImdldCIpLHNldDppKCh6LE4pPT57ei5pc0RyYWdnaW5nPU59LCJzZXQiKX0sbWV0YWRhdGE6TX0sbSxmKSxoSihudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpNfSxudWxsLHQpLHk9YT1lLnZhbHVlLE0mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6TX0pfXN0YXRpYyBkZW1vPWkoKCk9PndgPGRlZXMtd29ya3NwYWNlLW1hcmtkb3duPjwvZGVlcy13b3Jrc3BhY2UtbWFya2Rvd24+YCwiZGVtbyIpO3N0YXRpYyBkZW1vR3JvdXBzPVsiV29ya3NwYWNlIl07c3RhdGljIHN0eWxlcz1bcWUsaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CgogICAgICAuc3BsaXRDb250YWluZXIgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICB9CgogICAgICAuZWRpdG9yQ29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG1pbi13aWR0aDogMTAwcHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLnJlc2l6ZUhhbmRsZSB7CiAgICAgICAgd2lkdGg6IDZweDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNlNWU3ZWIiLCIjMzAzNjNkIil9OwogICAgICAgIGN1cnNvcjogY29sLXJlc2l6ZTsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzIGVhc2U7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAucmVzaXplSGFuZGxlOmhvdmVyLAogICAgICAucmVzaXplSGFuZGxlLmRyYWdnaW5nIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiIzNiODJmNiIsIiM1OGE2ZmYiKX07CiAgICAgIH0KCiAgICAgIC5yZXNpemVIYW5kbGU6OmFmdGVyIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiA1MCU7CiAgICAgICAgbGVmdDogNTAlOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgICAgIHdpZHRoOiAycHg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjOWNhM2FmIiwiIzZlNzY4MSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiAxcHg7CiAgICAgICAgb3BhY2l0eTogMC42OwogICAgICB9CgogICAgICAucmVzaXplSGFuZGxlOmhvdmVyOjphZnRlciwKICAgICAgLnJlc2l6ZUhhbmRsZS5kcmFnZ2luZzo6YWZ0ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiI2ZmZmZmZiIpfTsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CgogICAgICAub3V0bGV0Q29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG1pbi13aWR0aDogMTAwcHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiNmZmZmZmYiLCIjMGQxMTE3Iil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzI0MjkyZiIsIiNlNmVkZjMiKX07CiAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgJ05vdG8gU2FucycsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgICAgICAgcGFkZGluZzogMjBweDsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgIC8qIFByZXZlbnQgdGV4dCBzZWxlY3Rpb24gd2hpbGUgZHJhZ2dpbmcgKi8KICAgICAgLnNwbGl0Q29udGFpbmVyLmRyYWdnaW5nIHsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgfQoKICAgICAgLnNwbGl0Q29udGFpbmVyLmRyYWdnaW5nIC5lZGl0b3JDb250YWluZXIsCiAgICAgIC5zcGxpdENvbnRhaW5lci5kcmFnZ2luZyAub3V0bGV0Q29udGFpbmVyIHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQogICAgYF07I2U9WXUodGhpcyxvLDUwKTtnZXQgc3BsaXRSYXRpbygpe3JldHVybiB0aGlzLiNlfXNldCBzcGxpdFJhdGlvKE0pe3RoaXMuI2U9TX0jdD0oWXUodGhpcyxsKSxZdSh0aGlzLGQsMTApKTtnZXQgbWluUGFuZWxTaXplKCl7cmV0dXJuIHRoaXMuI3R9c2V0IG1pblBhbmVsU2l6ZShNKXt0aGlzLiN0PU19I2E9KFl1KHRoaXMsdSksWXUodGhpcyxiLDUwKSk7Z2V0IGN1cnJlbnRTcGxpdFJhdGlvKCl7cmV0dXJuIHRoaXMuI2F9c2V0IGN1cnJlbnRTcGxpdFJhdGlvKE0pe3RoaXMuI2E9TX0jcz0oWXUodGhpcyx2KSxZdSh0aGlzLG0sITEpKTtnZXQgaXNEcmFnZ2luZygpe3JldHVybiB0aGlzLiNzfXNldCBpc0RyYWdnaW5nKE0pe3RoaXMuI3M9TX1yZXNpemVIYW5kbGVFbGVtZW50PVl1KHRoaXMsZik7Y29udGFpbmVyRWxlbWVudDtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0ic3BsaXRDb250YWluZXIgJHt0aGlzLmlzRHJhZ2dpbmc/ImRyYWdnaW5nIjoiIn0iPgogICAgICAgIDxkaXYgY2xhc3M9ImVkaXRvckNvbnRhaW5lciIgc3R5bGU9IndpZHRoOiAke3RoaXMuY3VycmVudFNwbGl0UmF0aW99JSI+CiAgICAgICAgICA8ZGVlcy13b3Jrc3BhY2UtbW9uYWNvCiAgICAgICAgICAgIC5sYW5ndWFnZT0keyJtYXJrZG93biJ9CiAgICAgICAgICAgIC5jb250ZW50PSR7YCMgYSB0ZXN0IGNvbnRlbnQKClRoaXMgaXMgdGVzdCBjb250ZW50IHRoYXQgaXMgb2YgbG9uZ2VyIGZvcm0gYW4gaG9wZWZ1bGx5IHN0YXJ0cyB0byB3cmFwIHdoZW4gSSBuZWVkIGl0LiBBbmQgeWVzLCBpdCBkb2VzIHBlcmZlY3RseS4gbmljZS4KClRlc3QgfCBIZWxsbwotLS0gfCAtLS0KWWVhaCB8IFNvIGdvb2QKClRoaXMgaXMgcmVhbCBhc3NldCBJIHRoaW5rLiBXaHkgd291bGQgd2Ugd2FudCB0byBsZWF2ZSB0aGF0IG9uIHRoZSB0YWJsZT8gQ2FuIHlvdSB0ZWxsIG15IHRoYXQ/CgpXaHkgYXJlIHdlIGhlcmU/CgpEbyB5b3Uga25vdz8KCj4gbm90ZToKVGhlcmUgaXMgc29tZXRoaW5nIGdvaW5nIG9uLgoKXGBcYFxgdHlwZXNjcmlwdApjb25zdCBoZWxsbyA9ICd5ZXMnClxgXGBcYApgfQogICAgICAgICAgICB3b3JkV3JhcD0iYm91bmRlZCIKICAgICAgICAgID48L2RlZXMtd29ya3NwYWNlLW1vbmFjbz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2CiAgICAgICAgICBjbGFzcz0icmVzaXplSGFuZGxlICR7dGhpcy5pc0RyYWdnaW5nPyJkcmFnZ2luZyI6IiJ9IgogICAgICAgICAgQG1vdXNlZG93bj0ke3RoaXMuaGFuZGxlTW91c2VEb3dufQogICAgICAgID48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJvdXRsZXRDb250YWluZXIiIHN0eWxlPSJ3aWR0aDogJHsxMDAtdGhpcy5jdXJyZW50U3BsaXRSYXRpb30lIj4KICAgICAgICAgIDxkZWVzLXdvcmtzcGFjZS1tYXJrZG93bm91dGxldD48L2RlZXMtd29ya3NwYWNlLW1hcmtkb3dub3V0bGV0PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9YXN5bmMgZmlyc3RVcGRhdGVkKE0pe2F3YWl0IHN1cGVyLmZpcnN0VXBkYXRlZChNKSx0aGlzLmN1cnJlbnRTcGxpdFJhdGlvPXRoaXMuc3BsaXRSYXRpbyx0aGlzLmNvbnRhaW5lckVsZW1lbnQ9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5zcGxpdENvbnRhaW5lciIpLHRoaXMucmVzaXplSGFuZGxlRWxlbWVudD10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiLnJlc2l6ZUhhbmRsZSIpO2xldCB6PXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCJkZWVzLXdvcmtzcGFjZS1tb25hY28iKSxOPXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCJkZWVzLXdvcmtzcGFjZS1tYXJrZG93bm91dGxldCIpLF89YXdhaXQgbmV3IGx0LnBsdWdpbnMuc21hcnRtYXJrZG93bi5TbWFydE1hcmtkb3duKCkuZ2V0TWRQYXJzZWRSZXN1bHRGcm9tTWFya2Rvd24oImxvYWRpbmcuLi4iKTt6LmNvbnRlbnRTdWJqZWN0LnN1YnNjcmliZShhc3luYyBPPT57YXdhaXQgXy51cGRhdGVGcm9tTWFya2Rvd25TdHJpbmcoTyk7bGV0ICQ9Xy5odG1sO04udXBkYXRlSHRtbFRleHQoJCl9KX1oYW5kbGVNb3VzZURvd249aShNPT57TS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuaXNEcmFnZ2luZz0hMCxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMuaGFuZGxlTW91c2VNb3ZlKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLmhhbmRsZU1vdXNlVXApfSwiaGFuZGxlTW91c2VEb3duIik7aGFuZGxlTW91c2VNb3ZlPWkoTT0+e2lmKCF0aGlzLmlzRHJhZ2dpbmd8fCF0aGlzLmNvbnRhaW5lckVsZW1lbnQpcmV0dXJuO2xldCB6PXRoaXMuY29udGFpbmVyRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxOPXoud2lkdGgsXz0oTS5jbGllbnRYLXoubGVmdCkvTioxMDA7Xz1NYXRoLm1heCh0aGlzLm1pblBhbmVsU2l6ZSxNYXRoLm1pbigxMDAtdGhpcy5taW5QYW5lbFNpemUsXykpLHRoaXMuY3VycmVudFNwbGl0UmF0aW89X30sImhhbmRsZU1vdXNlTW92ZSIpO2hhbmRsZU1vdXNlVXA9aSgoKT0+e3RoaXMuaXNEcmFnZ2luZz0hMSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMuaGFuZGxlTW91c2VNb3ZlKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLmhhbmRsZU1vdXNlVXApLHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCJkZWVzLXdvcmtzcGFjZS1tb25hY28iKSYmd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCJyZXNpemUiKSl9LCJoYW5kbGVNb3VzZVVwIik7YXN5bmMgZGlzY29ubmVjdGVkQ2FsbGJhY2soKXthd2FpdCBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5oYW5kbGVNb3VzZU1vdmUpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHRoaXMuaGFuZGxlTW91c2VVcCl9c2V0U3BsaXRSYXRpbyhNKXt0aGlzLmN1cnJlbnRTcGxpdFJhdGlvPU1hdGgubWF4KHRoaXMubWluUGFuZWxTaXplLE1hdGgubWluKDEwMC10aGlzLm1pblBhbmVsU2l6ZSxNKSl9cmVzZXRTcGxpdFJhdGlvKCl7dGhpcy5jdXJyZW50U3BsaXRSYXRpbz10aGlzLnNwbGl0UmF0aW99c3RhdGlje1l1KGEsdCl9fTtyZXR1cm4geT1hfSkoKX0pO3ZhciBqU2E9ZygoKT0+e3FTYSgpfSk7dmFyIFZTYSxVU2E9ZygoKT0+e3BlKCk7SXQoKTt4bygpO1ZTYT1pKCgpPT53YAogIDxkZWVzLWRlbW93cmFwcGVyPgogICAgPHN0eWxlPgogICAgICAke0pgCiAgICAgICAgLmRlbW8tY29udGFpbmVyIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgZ2FwOiAyNHB4OwogICAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgICAgIG1heC13aWR0aDogOTAwcHg7CiAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICB9CiAgICAgIGB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgY2xhc3M9ImRlbW8tY29udGFpbmVyIj4KICAgICAgPCEtLSBEZW1vIDE6IEhlYWRpbmdzIC0tPgogICAgICA8ZGVlcy1wYW5lbAogICAgICAgIC50aXRsZT0keyJIZWFkaW5ncyJ9CiAgICAgICAgLnN1YnRpdGxlPSR7IkFsbCBoZWFkaW5nIGxldmVscyBmcm9tIEgxIHRvIEg2In0KICAgICAgICAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57YXdhaXQgcy5xdWVyeVNlbGVjdG9yKCJkZWVzLXdvcmtzcGFjZS1tYXJrZG93bm91dGxldCIpPy51cGRhdGVIdG1sVGV4dChgCiAgICAgICAgICAgIDxoMT5IZWFkaW5nIExldmVsIDE8L2gxPgogICAgICAgICAgICA8aDI+SGVhZGluZyBMZXZlbCAyPC9oMj4KICAgICAgICAgICAgPGgzPkhlYWRpbmcgTGV2ZWwgMzwvaDM+CiAgICAgICAgICAgIDxoND5IZWFkaW5nIExldmVsIDQ8L2g0PgogICAgICAgICAgICA8aDU+SGVhZGluZyBMZXZlbCA1PC9oNT4KICAgICAgICAgICAgPGg2PkhlYWRpbmcgTGV2ZWwgNjwvaDY+CiAgICAgICAgICBgKX19CiAgICAgID4KICAgICAgICA8ZGVlcy13b3Jrc3BhY2UtbWFya2Rvd25vdXRsZXQ+PC9kZWVzLXdvcmtzcGFjZS1tYXJrZG93bm91dGxldD4KICAgICAgPC9kZWVzLXBhbmVsPgoKICAgICAgPCEtLSBEZW1vIDI6IFRleHQgRm9ybWF0dGluZyAtLT4KICAgICAgPGRlZXMtcGFuZWwKICAgICAgICAudGl0bGU9JHsiVGV4dCBGb3JtYXR0aW5nIn0KICAgICAgICAuc3VidGl0bGU9JHsiQm9sZCwgaXRhbGljLCBsaW5rcywgY29kZSwgYW5kIGtleWJvYXJkIGlucHV0In0KICAgICAgICAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57YXdhaXQgcy5xdWVyeVNlbGVjdG9yKCJkZWVzLXdvcmtzcGFjZS1tYXJrZG93bm91dGxldCIpPy51cGRhdGVIdG1sVGV4dChgCiAgICAgICAgICAgIDxwPlRoaXMgaXMgYSBwYXJhZ3JhcGggd2l0aCA8c3Ryb25nPmJvbGQgdGV4dDwvc3Ryb25nPiBhbmQgPGVtPml0YWxpYyB0ZXh0PC9lbT4uPC9wPgogICAgICAgICAgICA8cD5Zb3UgY2FuIGFsc28gdXNlIDxzdHJvbmc+PGVtPmJvbGQgaXRhbGljPC9lbT48L3N0cm9uZz4gZm9yIGVtcGhhc2lzLjwvcD4KICAgICAgICAgICAgPHA+SGVyZSdzIGEgPGEgaHJlZj0iIyI+bGluayBleGFtcGxlPC9hPiBhbmQgc29tZSA8Y29kZT5pbmxpbmUgY29kZTwvY29kZT4uPC9wPgogICAgICAgICAgICA8cD5QcmVzcyA8a2JkPkN0cmw8L2tiZD4gKyA8a2JkPkM8L2tiZD4gdG8gY29weSB0ZXh0LjwvcD4KICAgICAgICAgICAgPGhyPgogICAgICAgICAgICA8cD5BYm92ZSBpcyBhIGhvcml6b250YWwgcnVsZSBzZXBhcmF0b3IuPC9wPgogICAgICAgICAgYCl9fQogICAgICA+CiAgICAgICAgPGRlZXMtd29ya3NwYWNlLW1hcmtkb3dub3V0bGV0PjwvZGVlcy13b3Jrc3BhY2UtbWFya2Rvd25vdXRsZXQ+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDwhLS0gRGVtbyAzOiBMaXN0cyAtLT4KICAgICAgPGRlZXMtcGFuZWwKICAgICAgICAudGl0bGU9JHsiTGlzdHMifQogICAgICAgIC5zdWJ0aXRsZT0keyJPcmRlcmVkLCB1bm9yZGVyZWQsIGFuZCB0YXNrIGxpc3RzIn0KICAgICAgICAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57YXdhaXQgcy5xdWVyeVNlbGVjdG9yKCJkZWVzLXdvcmtzcGFjZS1tYXJrZG93bm91dGxldCIpPy51cGRhdGVIdG1sVGV4dChgCiAgICAgICAgICAgIDxoMz5Vbm9yZGVyZWQgTGlzdDwvaDM+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICA8bGk+Rmlyc3QgaXRlbTwvbGk+CiAgICAgICAgICAgICAgPGxpPlNlY29uZCBpdGVtCiAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgIDxsaT5OZXN0ZWQgaXRlbSAxPC9saT4KICAgICAgICAgICAgICAgICAgPGxpPk5lc3RlZCBpdGVtIDI8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaT5UaGlyZCBpdGVtPC9saT4KICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgIDxoMz5PcmRlcmVkIExpc3Q8L2gzPgogICAgICAgICAgICA8b2w+CiAgICAgICAgICAgICAgPGxpPlN0ZXAgb25lPC9saT4KICAgICAgICAgICAgICA8bGk+U3RlcCB0d288L2xpPgogICAgICAgICAgICAgIDxsaT5TdGVwIHRocmVlPC9saT4KICAgICAgICAgICAgPC9vbD4KCiAgICAgICAgICAgIDxoMz5UYXNrIExpc3Q8L2gzPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0YXNrLWxpc3QtaXRlbSI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBjaGVja2VkIGRpc2FibGVkPiBDb21wbGV0ZWQgdGFzazwvbGk+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0YXNrLWxpc3QtaXRlbSI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBkaXNhYmxlZD4gUGVuZGluZyB0YXNrPC9saT4KICAgICAgICAgICAgICA8bGkgY2xhc3M9InRhc2stbGlzdC1pdGVtIj48aW5wdXQgdHlwZT0iY2hlY2tib3giIGRpc2FibGVkPiBBbm90aGVyIHRhc2s8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgICAgYCl9fQogICAgICA+CiAgICAgICAgPGRlZXMtd29ya3NwYWNlLW1hcmtkb3dub3V0bGV0PjwvZGVlcy13b3Jrc3BhY2UtbWFya2Rvd25vdXRsZXQ+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDwhLS0gRGVtbyA0OiBDb2RlIEJsb2NrcyAtLT4KICAgICAgPGRlZXMtcGFuZWwKICAgICAgICAudGl0bGU9JHsiQ29kZSBCbG9ja3MifQogICAgICAgIC5zdWJ0aXRsZT0keyJTeW50YXggaGlnaGxpZ2h0ZWQgY29kZSBleGFtcGxlcyJ9CiAgICAgICAgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e2F3YWl0IHMucXVlcnlTZWxlY3RvcigiZGVlcy13b3Jrc3BhY2UtbWFya2Rvd25vdXRsZXQiKT8udXBkYXRlSHRtbFRleHQoYAogICAgICAgICAgICA8cD5JbmxpbmUgY29kZTogPGNvZGU+Y29uc3QgZ3JlZXRpbmcgPSAiSGVsbG8sIFdvcmxkISI7PC9jb2RlPjwvcD4KCiAgICAgICAgICAgIDxoMz5UeXBlU2NyaXB0IEV4YW1wbGU8L2gzPgogICAgICAgICAgICA8cHJlPjxjb2RlPjxzcGFuIGNsYXNzPSJobGpzLWtleXdvcmQiPmltcG9ydDwvc3Bhbj4geyBodG1sLCBjc3MgfSA8c3BhbiBjbGFzcz0iaGxqcy1rZXl3b3JkIj5mcm9tPC9zcGFuPiA8c3BhbiBjbGFzcz0iaGxqcy1zdHJpbmciPidAZGVzaWduLmVzdGF0ZS9kZWVzLWVsZW1lbnQnPC9zcGFuPjsKCjxzcGFuIGNsYXNzPSJobGpzLWtleXdvcmQiPmludGVyZmFjZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImhsanMtdGl0bGUiPklVc2VyPC9zcGFuPiB7CiAgPHNwYW4gY2xhc3M9ImhsanMtYXR0ciI+bmFtZTwvc3Bhbj46IDxzcGFuIGNsYXNzPSJobGpzLWJ1aWx0X2luIj5zdHJpbmc8L3NwYW4+OwogIDxzcGFuIGNsYXNzPSJobGpzLWF0dHIiPmVtYWlsPC9zcGFuPjogPHNwYW4gY2xhc3M9ImhsanMtYnVpbHRfaW4iPnN0cmluZzwvc3Bhbj47CiAgPHNwYW4gY2xhc3M9ImhsanMtYXR0ciI+YWdlPC9zcGFuPj86IDxzcGFuIGNsYXNzPSJobGpzLWJ1aWx0X2luIj5udW1iZXI8L3NwYW4+Owp9Cgo8c3BhbiBjbGFzcz0iaGxqcy1rZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImhsanMtdGl0bGUiPmdldFVzZXI8L3NwYW4+ID0gPHNwYW4gY2xhc3M9ImhsanMta2V5d29yZCI+YXN5bmM8L3NwYW4+ICg8c3BhbiBjbGFzcz0iaGxqcy1hdHRyIj5pZDwvc3Bhbj46IDxzcGFuIGNsYXNzPSJobGpzLWJ1aWx0X2luIj5zdHJpbmc8L3NwYW4+KTogPHNwYW4gY2xhc3M9ImhsanMtYnVpbHRfaW4iPlByb21pc2U8L3NwYW4+Jmx0O0lVc2VyJmd0OyA9Jmd0OyB7CiAgPHNwYW4gY2xhc3M9ImhsanMta2V5d29yZCI+Y29uc3Q8L3NwYW4+IHJlc3BvbnNlID0gPHNwYW4gY2xhc3M9ImhsanMta2V5d29yZCI+YXdhaXQ8L3NwYW4+IGZldGNoKFxgL2FwaS91c2Vycy9cJHtpZH1cYCk7CiAgPHNwYW4gY2xhc3M9ImhsanMta2V5d29yZCI+cmV0dXJuPC9zcGFuPiByZXNwb25zZS5qc29uKCk7Cn07PC9jb2RlPjwvcHJlPgoKICAgICAgICAgICAgPGgzPkpTT04gRXhhbXBsZTwvaDM+CiAgICAgICAgICAgIDxwcmU+PGNvZGU+ewogIDxzcGFuIGNsYXNzPSJobGpzLWF0dHIiPiJuYW1lIjwvc3Bhbj46IDxzcGFuIGNsYXNzPSJobGpzLXN0cmluZyI+ImRlZXMtY2F0YWxvZyI8L3NwYW4+LAogIDxzcGFuIGNsYXNzPSJobGpzLWF0dHIiPiJ2ZXJzaW9uIjwvc3Bhbj46IDxzcGFuIGNsYXNzPSJobGpzLXN0cmluZyI+IjMuMC4wIjwvc3Bhbj4sCiAgPHNwYW4gY2xhc3M9ImhsanMtYXR0ciI+ImRlcGVuZGVuY2llcyI8L3NwYW4+OiB7CiAgICA8c3BhbiBjbGFzcz0iaGxqcy1hdHRyIj4iQGRlc2lnbi5lc3RhdGUvZGVlcy1lbGVtZW50Ijwvc3Bhbj46IDxzcGFuIGNsYXNzPSJobGpzLXN0cmluZyI+Il4yLjAuMCI8L3NwYW4+CiAgfQp9PC9jb2RlPjwvcHJlPgogICAgICAgICAgYCl9fQogICAgICA+CiAgICAgICAgPGRlZXMtd29ya3NwYWNlLW1hcmtkb3dub3V0bGV0PjwvZGVlcy13b3Jrc3BhY2UtbWFya2Rvd25vdXRsZXQ+CiAgICAgIDwvZGVlcy1wYW5lbD4KCiAgICAgIDwhLS0gRGVtbyA1OiBUYWJsZXMgLS0+CiAgICAgIDxkZWVzLXBhbmVsCiAgICAgICAgLnRpdGxlPSR7IlRhYmxlcyJ9CiAgICAgICAgLnN1YnRpdGxlPSR7IlN0eWxlZCB0YWJsZXMgd2l0aCBhbHRlcm5hdGluZyByb3dzIn0KICAgICAgICAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57YXdhaXQgcy5xdWVyeVNlbGVjdG9yKCJkZWVzLXdvcmtzcGFjZS1tYXJrZG93bm91dGxldCIpPy51cGRhdGVIdG1sVGV4dChgCiAgICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0aD5GZWF0dXJlPC90aD4KICAgICAgICAgICAgICAgICAgPHRoPlN0YXR1czwvdGg+CiAgICAgICAgICAgICAgICAgIDx0aD5Qcmlvcml0eTwvdGg+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+RGFyayBtb2RlIHN1cHBvcnQ8L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+Q29tcGxldGVkPC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPkhpZ2g8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPlJlc3BvbnNpdmUgZGVzaWduPC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPkluIFByb2dyZXNzPC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPk1lZGl1bTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+QWNjZXNzaWJpbGl0eTwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5QbGFubmVkPC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPkhpZ2g8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPkRvY3VtZW50YXRpb248L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+SW4gUHJvZ3Jlc3M8L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+TG93PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIGApfX0KICAgICAgPgogICAgICAgIDxkZWVzLXdvcmtzcGFjZS1tYXJrZG93bm91dGxldD48L2RlZXMtd29ya3NwYWNlLW1hcmtkb3dub3V0bGV0PgogICAgICA8L2RlZXMtcGFuZWw+CgogICAgICA8IS0tIERlbW8gNjogQmxvY2txdW90ZXMgJiBBbGVydHMgLS0+CiAgICAgIDxkZWVzLXBhbmVsCiAgICAgICAgLnRpdGxlPSR7IkJsb2NrcXVvdGVzICYgQWxlcnRzIn0KICAgICAgICAuc3VidGl0bGU9JHsiUXVvdGVzIGFuZCBHaXRIdWItc3R5bGUgYWxlcnRzIn0KICAgICAgICAucnVuQWZ0ZXJSZW5kZXI9JHthc3luYyBzPT57YXdhaXQgcy5xdWVyeVNlbGVjdG9yKCJkZWVzLXdvcmtzcGFjZS1tYXJrZG93bm91dGxldCIpPy51cGRhdGVIdG1sVGV4dChgCiAgICAgICAgICAgIDxibG9ja3F1b3RlPgogICAgICAgICAgICAgIDxwPlRoaXMgaXMgYSBzdGFuZGFyZCBibG9ja3F1b3RlLiBJdCdzIGdyZWF0IGZvciBoaWdobGlnaHRpbmcgaW1wb3J0YW50IGluZm9ybWF0aW9uIG9yIHF1b3RlcyBmcm9tIG90aGVyIHNvdXJjZXMuPC9wPgogICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYXJrZG93bi1hbGVydCBtYXJrZG93bi1hbGVydC1ub3RlIj4KICAgICAgICAgICAgICA8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFRoaXMgaXMgYW4gaW5mb3JtYXRpb25hbCBub3RlIHRvIGRyYXcgYXR0ZW50aW9uIHRvIGltcG9ydGFudCBkZXRhaWxzLjwvcD4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYXJrZG93bi1hbGVydCBtYXJrZG93bi1hbGVydC10aXAiPgogICAgICAgICAgICAgIDxwPjxzdHJvbmc+VGlwOjwvc3Ryb25nPiBIZXJlJ3MgYSBoZWxwZnVsIHRpcCB0byBpbXByb3ZlIHlvdXIgd29ya2Zsb3cuPC9wPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWFsZXJ0IG1hcmtkb3duLWFsZXJ0LWltcG9ydGFudCI+CiAgICAgICAgICAgICAgPHA+PHN0cm9uZz5JbXBvcnRhbnQ6PC9zdHJvbmc+IFRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgdG9waWMuPC9wPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWFsZXJ0IG1hcmtkb3duLWFsZXJ0LXdhcm5pbmciPgogICAgICAgICAgICAgIDxwPjxzdHJvbmc+V2FybmluZzo8L3N0cm9uZz4gQmUgY2FyZWZ1bCB3aGVuIHBlcmZvcm1pbmcgdGhpcyBhY3Rpb24uPC9wPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWFsZXJ0IG1hcmtkb3duLWFsZXJ0LWNhdXRpb24iPgogICAgICAgICAgICAgIDxwPjxzdHJvbmc+Q2F1dGlvbjo8L3N0cm9uZz4gVGhpcyBhY3Rpb24gbWF5IGhhdmUgdW5pbnRlbmRlZCBjb25zZXF1ZW5jZXMuPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIGApfX0KICAgICAgPgogICAgICAgIDxkZWVzLXdvcmtzcGFjZS1tYXJrZG93bm91dGxldD48L2RlZXMtd29ya3NwYWNlLW1hcmtkb3dub3V0bGV0PgogICAgICA8L2RlZXMtcGFuZWw+CgogICAgICA8IS0tIERlbW8gNzogRnVsbCBEb2N1bWVudCAtLT4KICAgICAgPGRlZXMtcGFuZWwKICAgICAgICAudGl0bGU9JHsiRnVsbCBEb2N1bWVudCJ9CiAgICAgICAgLnN1YnRpdGxlPSR7IkEgY29tcGxldGUgbWFya2Rvd24gZG9jdW1lbnQgZXhhbXBsZSJ9CiAgICAgICAgLnJ1bkFmdGVyUmVuZGVyPSR7YXN5bmMgcz0+e2F3YWl0IHMucXVlcnlTZWxlY3RvcigiZGVlcy13b3Jrc3BhY2UtbWFya2Rvd25vdXRsZXQiKT8udXBkYXRlSHRtbFRleHQoYAogICAgICAgICAgICA8aDE+R2V0dGluZyBTdGFydGVkIEd1aWRlPC9oMT4KICAgICAgICAgICAgPHA+V2VsY29tZSB0byB0aGUgPHN0cm9uZz5kZWVzLWNhdGFsb2c8L3N0cm9uZz4gY29tcG9uZW50IGxpYnJhcnkuIFRoaXMgZ3VpZGUgd2lsbCBoZWxwIHlvdSBnZXQgdXAgYW5kIHJ1bm5pbmcgcXVpY2tseS48L3A+CgogICAgICAgICAgICA8aDI+SW5zdGFsbGF0aW9uPC9oMj4KICAgICAgICAgICAgPHA+SW5zdGFsbCB0aGUgcGFja2FnZSB1c2luZyB5b3VyIHByZWZlcnJlZCBwYWNrYWdlIG1hbmFnZXI6PC9wPgogICAgICAgICAgICA8cHJlPjxjb2RlPjxzcGFuIGNsYXNzPSJobGpzLWNvbW1lbnQiPiMgVXNpbmcgcG5wbSAocmVjb21tZW5kZWQpPC9zcGFuPgpwbnBtIGFkZCBAZGVzaWduLmVzdGF0ZS9kZWVzLWNhdGFsb2cKCjxzcGFuIGNsYXNzPSJobGpzLWNvbW1lbnQiPiMgVXNpbmcgbnBtPC9zcGFuPgpucG0gaW5zdGFsbCBAZGVzaWduLmVzdGF0ZS9kZWVzLWNhdGFsb2c8L2NvZGU+PC9wcmU+CgogICAgICAgICAgICA8aDI+QmFzaWMgVXNhZ2U8L2gyPgogICAgICAgICAgICA8cD5JbXBvcnQgYW5kIHVzZSBjb21wb25lbnRzIGluIHlvdXIgVHlwZVNjcmlwdCBmaWxlczo8L3A+CiAgICAgICAgICAgIDxwcmU+PGNvZGU+PHNwYW4gY2xhc3M9ImhsanMta2V5d29yZCI+aW1wb3J0PC9zcGFuPiB7IERlZXNCdXR0b24gfSA8c3BhbiBjbGFzcz0iaGxqcy1rZXl3b3JkIj5mcm9tPC9zcGFuPiA8c3BhbiBjbGFzcz0iaGxqcy1zdHJpbmciPidAZGVzaWduLmVzdGF0ZS9kZWVzLWNhdGFsb2cnPC9zcGFuPjsKCjxzcGFuIGNsYXNzPSJobGpzLWNvbW1lbnQiPi8vIFVzZSBpbiB5b3VyIHRlbXBsYXRlczwvc3Bhbj4KaHRtbFxgJmx0O2RlZXMtYnV0dG9uJmd0O0NsaWNrIG1lJmx0Oy9kZWVzLWJ1dHRvbiZndDtcYDwvY29kZT48L3ByZT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWFsZXJ0IG1hcmtkb3duLWFsZXJ0LXRpcCI+CiAgICAgICAgICAgICAgPHA+PHN0cm9uZz5UaXA6PC9zdHJvbmc+IENoZWNrIHRoZSBkZW1vIHNob3djYXNlIGZvciBsaXZlIGV4YW1wbGVzIG9mIGFsbCBjb21wb25lbnRzLjwvcD4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8aDI+QXZhaWxhYmxlIENvbXBvbmVudHM8L2gyPgogICAgICAgICAgICA8dGFibGU+CiAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGg+Q29tcG9uZW50PC90aD4KICAgICAgICAgICAgICAgICAgPHRoPkRlc2NyaXB0aW9uPC90aD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD48Y29kZT5kZWVzLWJ1dHRvbjwvY29kZT48L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+UHJpbWFyeSBidXR0b24gY29tcG9uZW50PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD48Y29kZT5kZWVzLWlucHV0LXRleHQ8L2NvZGU+PC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPlRleHQgaW5wdXQgZmllbGQ8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPjxjb2RlPmRlZXMtdGFibGU8L2NvZGU+PC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPkRhdGEgdGFibGUgd2l0aCBzb3J0aW5nPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD48Y29kZT5kZWVzLW1vZGFsPC9jb2RlPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5Nb2RhbCBkaWFsb2c8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICA8L3RhYmxlPgoKICAgICAgICAgICAgPGgyPk5leHQgU3RlcHM8L2gyPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgPGxpPkV4cGxvcmUgdGhlIDxhIGhyZWY9IiMiPmNvbXBvbmVudCBkb2N1bWVudGF0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgPGxpPkNoZWNrIG91dCB0aGUgPGEgaHJlZj0iIyI+dGhlbWluZyBndWlkZTwvYT48L2xpPgogICAgICAgICAgICAgIDxsaT5Kb2luIG91ciA8YSBocmVmPSIjIj5jb21tdW5pdHkgRGlzY29yZDwvYT48L2xpPgogICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgPGJsb2NrcXVvdGU+CiAgICAgICAgICAgICAgPHA+IlRoZSBiZXN0IGNvbXBvbmVudCBsaWJyYXJ5IGlzIG9uZSB0aGF0IGdldHMgb3V0IG9mIHlvdXIgd2F5LiIgXHUyMDE0IERlc2lnbiBTeXN0ZW1zIFRlYW08L3A+CiAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KICAgICAgICAgIGApfX0KICAgICAgPgogICAgICAgIDxkZWVzLXdvcmtzcGFjZS1tYXJrZG93bm91dGxldD48L2RlZXMtd29ya3NwYWNlLW1hcmtkb3dub3V0bGV0PgogICAgICA8L2RlZXMtcGFuZWw+CiAgICA8L2Rpdj4KICA8L2RlZXMtZGVtb3dyYXBwZXI+CmAsImRlbW9GdW5jIil9KTt2YXIgZnRzLG10cyxndHMsV1NhPWcoKCk9PntwZSgpO2h0KCk7VVNhKCk7ZnRzPWZ1bmN0aW9uKHMsZSx0LGEscixuKXtmdW5jdGlvbiBvKHkpe2lmKHkhPT12b2lkIDAmJnR5cGVvZiB5IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uIGV4cGVjdGVkIik7cmV0dXJuIHl9aShvLCJhY2NlcHQiKTtmb3IodmFyIGw9YS5raW5kLHA9bD09PSJnZXR0ZXIiPyJnZXQiOmw9PT0ic2V0dGVyIj8ic2V0IjoidmFsdWUiLGQ9IWUmJnM/YS5zdGF0aWM/czpzLnByb3RvdHlwZTpudWxsLHU9ZXx8KGQ/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEubmFtZSk6e30pLGMsYj0hMSx2PXQubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciB4PXt9O2Zvcih2YXIgbSBpbiBhKXhbbV09bT09PSJhY2Nlc3MiP3t9OmFbbV07Zm9yKHZhciBtIGluIGEuYWNjZXNzKXguYWNjZXNzW21dPWEuYWNjZXNzW21dO3guYWRkSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oeSl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWQiKTtuLnB1c2gobyh5fHxudWxsKSl9O3ZhciBmPSgwLHRbdl0pKGw9PT0iYWNjZXNzb3IiP3tnZXQ6dS5nZXQsc2V0OnUuc2V0fTp1W3BdLHgpO2lmKGw9PT0iYWNjZXNzb3IiKXtpZihmPT09dm9pZCAwKWNvbnRpbnVlO2lmKGY9PT1udWxsfHx0eXBlb2YgZiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0IGV4cGVjdGVkIik7KGM9byhmLmdldCkpJiYodS5nZXQ9YyksKGM9byhmLnNldCkpJiYodS5zZXQ9YyksKGM9byhmLmluaXQpKSYmci51bnNoaWZ0KGMpfWVsc2UoYz1vKGYpKSYmKGw9PT0iZmllbGQiP3IudW5zaGlmdChjKTp1W3BdPWMpfWQmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGEubmFtZSx1KSxiPSEwfSxtdHM9ZnVuY3Rpb24ocyxlLHQpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjIscj0wO3I8ZS5sZW5ndGg7cisrKXQ9YT9lW3JdLmNhbGwocyx0KTplW3JdLmNhbGwocyk7cmV0dXJuIGE/dDp2b2lkIDB9LGd0cz0oKCk9PntsZXQgcz1bbmUoImRlZXMtd29ya3NwYWNlLW1hcmtkb3dub3V0bGV0IildLGUsdD1bXSxhLHI9d2U7dmFyIG49Y2xhc3MgZXh0ZW5kcyBye3N0YXRpY3tpKHRoaXMsIkRlZXNXb3Jrc3BhY2VNYXJrZG93bm91dGxldCIpfXN0YXRpY3thPXRoaXN9c3RhdGlje2xldCBvPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5tZXRhZGF0YT9PYmplY3QuY3JlYXRlKHJbU3ltYm9sLm1ldGFkYXRhXT8/bnVsbCk6dm9pZCAwO2Z0cyhudWxsLGU9e3ZhbHVlOmF9LHMse2tpbmQ6ImNsYXNzIixuYW1lOmEubmFtZSxtZXRhZGF0YTpvfSxudWxsLHQpLG49YT1lLnZhbHVlLG8mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5tZXRhZGF0YSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6b30pfXN0YXRpYyBkZW1vPVZTYTtzdGF0aWMgZGVtb0dyb3Vwcz1bIldvcmtzcGFjZSJdO3N0YXRpYyBzdHlsZXM9W3FlLGguZGVmYXVsdFN0eWxlcyxKYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgJ05vdG8gU2FucycsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMjQyOTJmIiwiI2U2ZWRmMyIpfTsKICAgICAgfQoKICAgICAgLm91dGxldCB7CiAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgICB9CgogICAgICAvKiBIZWFkaW5ncyAqLwogICAgICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHsKICAgICAgICBtYXJnaW4tdG9wOiAyNHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBsaW5lLWhlaWdodDogMS4yNTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxZjIzMjgiLCIjZjBmNmZjIil9OwogICAgICB9CgogICAgICBoMSB7CiAgICAgICAgZm9udC1zaXplOiAyZW07CiAgICAgICAgcGFkZGluZy1ib3R0b206IDAuM2VtOwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2QxZDllMCIsIiMzMDM2M2QiKX07CiAgICAgIH0KCiAgICAgIGgyIHsKICAgICAgICBmb250LXNpemU6IDEuNWVtOwogICAgICAgIHBhZGRpbmctYm90dG9tOiAwLjNlbTsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNkMWQ5ZTAiLCIjMzAzNjNkIil9OwogICAgICB9CgogICAgICBoMyB7CiAgICAgICAgZm9udC1zaXplOiAxLjI1ZW07CiAgICAgIH0KCiAgICAgIGg0IHsKICAgICAgICBmb250LXNpemU6IDFlbTsKICAgICAgfQoKICAgICAgaDUgewogICAgICAgIGZvbnQtc2l6ZTogMC44NzVlbTsKICAgICAgfQoKICAgICAgaDYgewogICAgICAgIGZvbnQtc2l6ZTogMC44NWVtOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzY1NmQ3NiIsIiM4Yjk0OWUiKX07CiAgICAgIH0KCiAgICAgIC8qIFBhcmFncmFwaHMgYW5kIHRleHQgKi8KICAgICAgcCB7CiAgICAgICAgbWFyZ2luLXRvcDogMDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICB9CgogICAgICAvKiBMaW5rcyAqLwogICAgICBhIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMwOTY5ZGEiLCIjNThhNmZmIil9OwogICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgfQoKICAgICAgYTpob3ZlciB7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICAgIH0KCiAgICAgIC8qIFN0cm9uZyBhbmQgZW1waGFzaXMgKi8KICAgICAgc3Ryb25nIHsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzFmMjMyOCIsIiNmMGY2ZmMiKX07CiAgICAgIH0KCiAgICAgIGVtIHsKICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgIH0KCiAgICAgIC8qIExpc3RzICovCiAgICAgIHVsLCBvbCB7CiAgICAgICAgbWFyZ2luLXRvcDogMDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICAgIHBhZGRpbmctbGVmdDogMmVtOwogICAgICB9CgogICAgICBsaSB7CiAgICAgICAgbWFyZ2luLXRvcDogNHB4OwogICAgICB9CgogICAgICBsaSArIGxpIHsKICAgICAgICBtYXJnaW4tdG9wOiA0cHg7CiAgICAgIH0KCiAgICAgIHVsIHVsLCB1bCBvbCwgb2wgdWwsIG9sIG9sIHsKICAgICAgICBtYXJnaW4tdG9wOiAwOwogICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgIH0KCiAgICAgIC8qIEJsb2NrcXVvdGVzICovCiAgICAgIGJsb2NrcXVvdGUgewogICAgICAgIG1hcmdpbjogMCAwIDE2cHggMDsKICAgICAgICBwYWRkaW5nOiAwIDFlbTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM2NTZkNzYiLCIjOGI5NDllIil9OwogICAgICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgJHtoLmJkVGhlbWUoIiNkMWQ5ZTAiLCIjMzAzNjNkIil9OwogICAgICB9CgogICAgICBibG9ja3F1b3RlID4gOmZpcnN0LWNoaWxkIHsKICAgICAgICBtYXJnaW4tdG9wOiAwOwogICAgICB9CgogICAgICBibG9ja3F1b3RlID4gOmxhc3QtY2hpbGQgewogICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgIH0KCiAgICAgIC8qIElubGluZSBjb2RlICovCiAgICAgIGNvZGUgewogICAgICAgIHBhZGRpbmc6IDAuMmVtIDAuNGVtOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBmb250LXNpemU6IDg1JTsKICAgICAgICBmb250LWZhbWlseTogdWktbW9ub3NwYWNlLCBTRk1vbm8tUmVndWxhciwgJ1NGIE1vbm8nLCBNZW5sbywgQ29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLCBtb25vc3BhY2U7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtoLmJkVGhlbWUoInJnYmEoMTc1LCAxODQsIDE5MywgMC4yKSIsInJnYmEoMTEwLCAxMTgsIDEyOSwgMC40KSIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgd2hpdGUtc3BhY2U6IGJyZWFrLXNwYWNlczsKICAgICAgfQoKICAgICAgLyogQ29kZSBibG9ja3MgKi8KICAgICAgcHJlIHsKICAgICAgICBtYXJnaW4tdG9wOiAwOwogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgICBvdmVyZmxvdzogYXV0bzsKICAgICAgICBmb250LXNpemU6IDg1JTsKICAgICAgICBsaW5lLWhlaWdodDogMS40NTsKICAgICAgICBmb250LWZhbWlseTogdWktbW9ub3NwYWNlLCBTRk1vbm8tUmVndWxhciwgJ1NGIE1vbm8nLCBNZW5sbywgQ29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLCBtb25vc3BhY2U7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtoLmJkVGhlbWUoIiNmNmY4ZmEiLCIjMTYxYjIyIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICB3b3JkLXdyYXA6IG5vcm1hbDsKICAgICAgfQoKICAgICAgcHJlIGNvZGUgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0OwogICAgICAgIHdvcmQtd3JhcDogbm9ybWFsOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogMDsKICAgICAgICBmb250LXNpemU6IDEwMCU7CiAgICAgICAgd2hpdGUtc3BhY2U6IHByZTsKICAgICAgfQoKICAgICAgLyogVGFibGVzICovCiAgICAgIHRhYmxlIHsKICAgICAgICB3aWR0aDogbWF4LWNvbnRlbnQ7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICAgIG1hcmdpbi10b3A6IDA7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgICBib3JkZXItc3BhY2luZzogMDsKICAgICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwogICAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICB0YWJsZSB0aCB7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBwYWRkaW5nOiA2cHggMTNweDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2QxZDllMCIsIiMzMDM2M2QiKX07CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtoLmJkVGhlbWUoIiNmNmY4ZmEiLCIjMTYxYjIyIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzFmMjMyOCIsIiNlNmVkZjMiKX07CiAgICAgIH0KCiAgICAgIHRhYmxlIHRkIHsKICAgICAgICBwYWRkaW5nOiA2cHggMTNweDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2guYmRUaGVtZSgiI2QxZDllMCIsIiMzMDM2M2QiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMWYyMzI4IiwiI2U2ZWRmMyIpfTsKICAgICAgfQoKICAgICAgdGFibGUgdHIgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7aC5iZFRoZW1lKCIjZmZmZmZmIiwiIzBkMTExNyIpfTsKICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNkMWQ5ZTAiLCIjMjEyNjJkIil9OwogICAgICB9CgogICAgICB0YWJsZSB0cjpudGgtY2hpbGQoMm4pIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke2guYmRUaGVtZSgiI2Y2ZjhmYSIsIiMxNjFiMjIiKX07CiAgICAgIH0KCiAgICAgIC8qIEhvcml6b250YWwgcnVsZXMgKi8KICAgICAgaHIgewogICAgICAgIGhlaWdodDogNHB4OwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgbWFyZ2luOiAyNHB4IDA7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtoLmJkVGhlbWUoIiNkMWQ5ZTAiLCIjMzAzNjNkIil9OwogICAgICAgIGJvcmRlcjogMDsKICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgIH0KCiAgICAgIC8qIEltYWdlcyAqLwogICAgICBpbWcgewogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgfQoKICAgICAgLyogVGFzayBsaXN0cyAqLwogICAgICAudGFzay1saXN0LWl0ZW0gewogICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsKICAgICAgfQoKICAgICAgLnRhc2stbGlzdC1pdGVtIGlucHV0IHsKICAgICAgICBtYXJnaW46IDAgMC4yZW0gMC4yNWVtIC0xLjRlbTsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgICB9CgogICAgICAvKiBEZWZpbml0aW9uIGxpc3RzICovCiAgICAgIGRsIHsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICB9CgogICAgICBkbCBkdCB7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBtYXJnaW4tdG9wOiAxNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMWVtOwogICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICB9CgogICAgICBkbCBkZCB7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgIH0KCiAgICAgIC8qIEtleWJvYXJkIGlucHV0ICovCiAgICAgIGtiZCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHBhZGRpbmc6IDNweCA1cHg7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGZvbnQtZmFtaWx5OiB1aS1tb25vc3BhY2UsIFNGTW9uby1SZWd1bGFyLCAnU0YgTW9ubycsIE1lbmxvLCBDb25zb2xhcywgJ0xpYmVyYXRpb24gTW9ubycsIG1vbm9zcGFjZTsKICAgICAgICBsaW5lLWhlaWdodDogMTBweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxZjIzMjgiLCIjZTZlZGYzIil9OwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtoLmJkVGhlbWUoIiNmNmY4ZmEiLCIjMTYxYjIyIil9OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZDFkOWUwIiwiIzMwMzYzZCIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAtMXB4IDAgJHtoLmJkVGhlbWUoIiNkMWQ5ZTAiLCIjMzAzNjNkIil9OwogICAgICB9CgogICAgICAvKiBGb290bm90ZXMgKi8KICAgICAgLmZvb3Rub3RlcyB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzY1NmQ3NiIsIiM4Yjk0OWUiKX07CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZDFkOWUwIiwiIzMwMzYzZCIpfTsKICAgICAgICBwYWRkaW5nLXRvcDogMTZweDsKICAgICAgICBtYXJnaW4tdG9wOiAzMnB4OwogICAgICB9CgogICAgICAvKiBBbGVydHMvQWRtb25pdGlvbnMgKi8KICAgICAgLm1hcmtkb3duLWFsZXJ0IHsKICAgICAgICBwYWRkaW5nOiA4cHggMTZweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQ7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICB9CgogICAgICAubWFya2Rvd24tYWxlcnQtbm90ZSB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiIzA5NjlkYSIsIiM1OGE2ZmYiKX07CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtoLmJkVGhlbWUoInJnYmEoOSwgMTA1LCAyMTgsIDAuMSkiLCJyZ2JhKDU2LCAxMzksIDI1MywgMC4xKSIpfTsKICAgICAgfQoKICAgICAgLm1hcmtkb3duLWFsZXJ0LXdhcm5pbmcgewogICAgICAgIGJvcmRlci1jb2xvcjogJHtoLmJkVGhlbWUoIiNiZjg3MDAiLCIjZDI5OTIyIil9OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7aC5iZFRoZW1lKCJyZ2JhKDE5MSwgMTM1LCAwLCAwLjEpIiwicmdiYSgxODcsIDEyOCwgOSwgMC4xKSIpfTsKICAgICAgfQoKICAgICAgLm1hcmtkb3duLWFsZXJ0LWltcG9ydGFudCB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiIzgyNTBkZiIsIiNhMzcxZjciKX07CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtoLmJkVGhlbWUoInJnYmEoMTMwLCA4MCwgMjIzLCAwLjEpIiwicmdiYSgxNjMsIDExMywgMjQ3LCAwLjEpIil9OwogICAgICB9CgogICAgICAubWFya2Rvd24tYWxlcnQtY2F1dGlvbiB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2guYmRUaGVtZSgiI2NmMjIyZSIsIiNmODUxNDkiKX07CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtoLmJkVGhlbWUoInJnYmEoMjA3LCAzNCwgNDYsIDAuMSkiLCJyZ2JhKDI0OCwgODEsIDczLCAwLjEpIil9OwogICAgICB9CgogICAgICAubWFya2Rvd24tYWxlcnQtdGlwIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjMWE3ZjM3IiwiIzNmYjk1MCIpfTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke2guYmRUaGVtZSgicmdiYSgyNiwgMTI3LCA1NSwgMC4xKSIsInJnYmEoNDYsIDE2MCwgNjcsIDAuMSkiKX07CiAgICAgIH0KCiAgICAgIC8qIFN5bnRheCBoaWdobGlnaHRpbmcgZm9yIGNvZGUgYmxvY2tzICovCiAgICAgIC5obGpzLWNvbW1lbnQsCiAgICAgIC5obGpzLXF1b3RlIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM2YTczN2QiLCIjOGI5NDllIil9OwogICAgICB9CgogICAgICAuaGxqcy1rZXl3b3JkLAogICAgICAuaGxqcy1zZWxlY3Rvci10YWcsCiAgICAgIC5obGpzLWFkZGl0aW9uIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNkNzNhNDkiLCIjZmY3YjcyIil9OwogICAgICB9CgogICAgICAuaGxqcy1udW1iZXIsCiAgICAgIC5obGpzLXN0cmluZywKICAgICAgLmhsanMtbWV0YSAuaGxqcy1tZXRhLXN0cmluZywKICAgICAgLmhsanMtbGl0ZXJhbCwKICAgICAgLmhsanMtZG9jdGFnLAogICAgICAuaGxqcy1yZWdleHAgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzAzMmY2MiIsIiNhNWQ2ZmYiKX07CiAgICAgIH0KCiAgICAgIC5obGpzLXRpdGxlLAogICAgICAuaGxqcy1zZWN0aW9uLAogICAgICAuaGxqcy1uYW1lLAogICAgICAuaGxqcy1zZWxlY3Rvci1pZCwKICAgICAgLmhsanMtc2VsZWN0b3ItY2xhc3MgewogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzZmNDJjMSIsIiNkMmE4ZmYiKX07CiAgICAgIH0KCiAgICAgIC5obGpzLWF0dHJpYnV0ZSwKICAgICAgLmhsanMtYXR0ciwKICAgICAgLmhsanMtdmFyaWFibGUsCiAgICAgIC5obGpzLXRlbXBsYXRlLXZhcmlhYmxlLAogICAgICAuaGxqcy1jbGFzcyAuaGxqcy10aXRsZSwKICAgICAgLmhsanMtdHlwZSB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMDA1Y2M1IiwiIzc5YzBmZiIpfTsKICAgICAgfQoKICAgICAgLmhsanMtc3ltYm9sLAogICAgICAuaGxqcy1idWxsZXQsCiAgICAgIC5obGpzLXN1YnN0LAogICAgICAuaGxqcy1tZXRhLAogICAgICAuaGxqcy1tZXRhIC5obGpzLWtleXdvcmQsCiAgICAgIC5obGpzLXNlbGVjdG9yLWF0dHIsCiAgICAgIC5obGpzLXNlbGVjdG9yLXBzZXVkbywKICAgICAgLmhsanMtbGluayB7CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjZTM2MjA5IiwiI2ZmYTY1NyIpfTsKICAgICAgfQoKICAgICAgLmhsanMtYnVpbHRfaW4sCiAgICAgIC5obGpzLWRlbGV0aW9uIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNiMzFkMjgiLCIjZmZhMTk4Iil9OwogICAgICB9CgogICAgICAuaGxqcy1mb3JtdWxhIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke2guYmRUaGVtZSgiI2Y2ZjhmYSIsIiMxNjFiMjIiKX07CiAgICAgIH0KCiAgICAgIC5obGpzLWVtcGhhc2lzIHsKICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgIH0KCiAgICAgIC5obGpzLXN0cm9uZyB7CiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgIH0KICAgIGBdO291dGxldDtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0ib3V0bGV0Ij4KICAgICAgICA8aDE+TWFya2Rvd24gUHJldmlldzwvaDE+CiAgICAgICAgPHA+Q29udGVudCB3aWxsIGFwcGVhciBoZXJlIHdoZW4gbWFya2Rvd24gaXMgcGFyc2VkLjwvcD4KICAgICAgPC9kaXY+CiAgICBgfWFzeW5jIGZpcnN0VXBkYXRlZChvKXthd2FpdCBzdXBlci5maXJzdFVwZGF0ZWQobyksdGhpcy5vdXRsZXQ9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5vdXRsZXQiKX1hc3luYyB1cGRhdGVIdG1sVGV4dChvKXthd2FpdCB0aGlzLnVwZGF0ZUNvbXBsZXRlLHRoaXMub3V0bGV0fHwodGhpcy5vdXRsZXQ9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIi5vdXRsZXQiKSksdGhpcy5vdXRsZXQuaW5uZXJIVE1MPW99c3RhdGlje210cyhhLHQpfX07cmV0dXJuIG49YX0pKCl9KTt2YXIgR1NhPWcoKCk9PntXU2EoKX0pO3ZhciBLU2E9ZygoKT0+e0FsdCgpfSk7dmFyIFlTYT1nKCgpPT57Umx0KCl9KTt2YXIgWlNhPWcoKCk9PntOU2EoKTtSU2EoKTtPU2EoKTtCU2EoKTtIU2EoKTtqU2EoKTtHU2EoKTtLU2EoKTtZU2EoKX0pO3ZhciBYU2E9ZygoKT0+e30pO3ZhciBRU2E9ZygoKT0+e1hTYSgpfSk7dmFyIEpTYT1nKCgpPT57cGUoKX0pO3ZhciBlX2E9ZygoKT0+e0pTYSgpfSk7dmFyIHRfYT1nKCgpPT57R24oKTtodCgpO3N4YSgpO3B4YSgpO3N5YSgpO2J5YSgpO1J5YSgpO0J5YSgpO3J3YSgpO0t3YSgpO1ZrYSgpO1FrYSgpO2wyZSgpO3ZTYSgpO0lTYSgpO1pTYSgpO1FTYSgpO2VfYSgpfSk7dmFyIGFfYT1nKCgpPT57fSk7dmFyIHNfYT1nKCgpPT57dF9hKCk7dzIoKTthX2EoKX0pO3ZhciBidHMsdnRzLHh0cyxpX2E9ZygoKT0+e3BlKCk7c19hKCk7aWMoKTtidHM9ZnVuY3Rpb24ocyxlLHQsYSxyLG4pe2Z1bmN0aW9uIG8oeSl7aWYoeSE9PXZvaWQgMCYmdHlwZW9mIHkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24gZXhwZWN0ZWQiKTtyZXR1cm4geX1pKG8sImFjY2VwdCIpO2Zvcih2YXIgbD1hLmtpbmQscD1sPT09ImdldHRlciI/ImdldCI6bD09PSJzZXR0ZXIiPyJzZXQiOiJ2YWx1ZSIsZD0hZSYmcz9hLnN0YXRpYz9zOnMucHJvdG90eXBlOm51bGwsdT1lfHwoZD9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYS5uYW1lKTp7fSksYyxiPSExLHY9dC5sZW5ndGgtMTt2Pj0wO3YtLSl7dmFyIHg9e307Zm9yKHZhciBtIGluIGEpeFttXT1tPT09ImFjY2VzcyI/e306YVttXTtmb3IodmFyIG0gaW4gYS5hY2Nlc3MpeC5hY2Nlc3NbbV09YS5hY2Nlc3NbbV07eC5hZGRJbml0aWFsaXplcj1mdW5jdGlvbih5KXtpZihiKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZCIpO24ucHVzaChvKHl8fG51bGwpKX07dmFyIGY9KDAsdFt2XSkobD09PSJhY2Nlc3NvciI/e2dldDp1LmdldCxzZXQ6dS5zZXR9OnVbcF0seCk7aWYobD09PSJhY2Nlc3NvciIpe2lmKGY9PT12b2lkIDApY29udGludWU7aWYoZj09PW51bGx8fHR5cGVvZiBmIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgZXhwZWN0ZWQiKTsoYz1vKGYuZ2V0KSkmJih1LmdldD1jKSwoYz1vKGYuc2V0KSkmJih1LnNldD1jKSwoYz1vKGYuaW5pdCkpJiZyLnVuc2hpZnQoYyl9ZWxzZShjPW8oZikpJiYobD09PSJmaWVsZCI/ci51bnNoaWZ0KGMpOnVbcF09Yyl9ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsYS5uYW1lLHUpLGI9ITB9LHZ0cz1mdW5jdGlvbihzLGUsdCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MixyPTA7cjxlLmxlbmd0aDtyKyspdD1hP2Vbcl0uY2FsbChzLHQpOmVbcl0uY2FsbChzKTtyZXR1cm4gYT90OnZvaWQgMH0seHRzPSgoKT0+e2xldCBzPVtuZSgic3otZGVtby1hcHAtc2hlbGwiKV0sZSx0PVtdLGEscj13ZTt2YXIgbj1jbGFzcyBleHRlbmRzIHJ7c3RhdGlje2kodGhpcywiU3pEZW1vQXBwU2hlbGwiKX1zdGF0aWN7YT10aGlzfXN0YXRpY3tsZXQgbz10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wubWV0YWRhdGE/T2JqZWN0LmNyZWF0ZShyW1N5bWJvbC5tZXRhZGF0YV0/P251bGwpOnZvaWQgMDtidHMobnVsbCxlPXt2YWx1ZTphfSxzLHtraW5kOiJjbGFzcyIsbmFtZTphLm5hbWUsbWV0YWRhdGE6b30sbnVsbCx0KSxuPWE9ZS52YWx1ZSxvJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wubWV0YWRhdGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm99KX1zdGF0aWMgc3R5bGVzPVtoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgZGVlcy1hcHB1aSB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CiAgICBgXTtyZW5kZXIoKXtyZXR1cm4gd2AKICAgICAgPGRlZXMtYXBwdWk+PC9kZWVzLWFwcHVpPgogICAgYH1hc3luYyBmaXJzdFVwZGF0ZWQoKXtsZXQgbz10aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoImRlZXMtYXBwdWkiKTtvJiYoby5jb25maWd1cmUoe2JyYW5kaW5nOntsb2dvSWNvbjoibHVjaWRlOkJveCIsbG9nb1RleHQ6InNlcnZlLnpvbmUifSxhcHBCYXI6e3Nob3dTZWFyY2g6ITAsYnJlYWRjcnVtYnM6InNlcnZlLnpvbmUiLG1lbnVJdGVtczpbe25hbWU6IkZpbGUiLGFjdGlvbjppKGFzeW5jKCk9Pnt9LCJhY3Rpb24iKSxzdWJtZW51Olt7bmFtZToiTmV3IFNlcnZpY2UiLHNob3J0Y3V0OiJDbWQrTiIsYWN0aW9uOmkoYXN5bmMoKT0+e2NvbnNvbGUubG9nKCJOZXcgU2VydmljZSIpfSwiYWN0aW9uIil9LHtuYW1lOiJJbXBvcnQgQ29uZmlndXJhdGlvbiIsYWN0aW9uOmkoYXN5bmMoKT0+e2NvbnNvbGUubG9nKCJJbXBvcnQiKX0sImFjdGlvbiIpfSx7bmFtZToiRXhwb3J0IENvbmZpZ3VyYXRpb24iLGFjdGlvbjppKGFzeW5jKCk9Pntjb25zb2xlLmxvZygiRXhwb3J0Iil9LCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJQcmVmZXJlbmNlcyIsc2hvcnRjdXQ6IkNtZCssIixhY3Rpb246aShhc3luYygpPT57by5uYXZpZ2F0ZVRvVmlldygic2V0dGluZ3MiKX0sImFjdGlvbiIpfV19LHtuYW1lOiJWaWV3IixhY3Rpb246aShhc3luYygpPT57fSwiYWN0aW9uIiksc3VibWVudTpbe25hbWU6IkRhc2hib2FyZCIsc2hvcnRjdXQ6IkNtZCsxIixhY3Rpb246aShhc3luYygpPT57by5uYXZpZ2F0ZVRvVmlldygiZGFzaGJvYXJkIil9LCJhY3Rpb24iKX0se25hbWU6IlNlcnZpY2VzIixzaG9ydGN1dDoiQ21kKzIiLGFjdGlvbjppKGFzeW5jKCk9PntvLm5hdmlnYXRlVG9WaWV3KCJzZXJ2aWNlcyIpfSwiYWN0aW9uIil9LHtuYW1lOiJOZXR3b3JrIixzaG9ydGN1dDoiQ21kKzMiLGFjdGlvbjppKGFzeW5jKCk9PntvLm5hdmlnYXRlVG9WaWV3KCJuZXR3b3JrIil9LCJhY3Rpb24iKX0se2RpdmlkZXI6ITB9LHtuYW1lOiJBY3Rpdml0eSBMb2ciLHNob3J0Y3V0OiJDbWQrU2hpZnQrQSIsYWN0aW9uOmkoYXN5bmMoKT0+e28udG9nZ2xlQWN0aXZpdHlMb2coKX0sImFjdGlvbiIpfSx7bmFtZToiVG9nZ2xlIFNpZGViYXIiLHNob3J0Y3V0OiJDbWQrQiIsYWN0aW9uOmkoYXN5bmMoKT0+e28uc2V0TWFpbk1lbnVDb2xsYXBzZWQoIW8ubWFpbm1lbnVDb2xsYXBzZWQpfSwiYWN0aW9uIil9XX0se25hbWU6IlNlcnZpY2VzIixhY3Rpb246aShhc3luYygpPT57fSwiYWN0aW9uIiksc3VibWVudTpbe25hbWU6IkRlcGxveSBOZXcgU2VydmljZSIsYWN0aW9uOmkoYXN5bmMoKT0+e2NvbnNvbGUubG9nKCJEZXBsb3kiKX0sImFjdGlvbiIpfSx7bmFtZToiU3RhcnQgQWxsIixhY3Rpb246aShhc3luYygpPT57Y29uc29sZS5sb2coIlN0YXJ0IGFsbCIpfSwiYWN0aW9uIil9LHtuYW1lOiJTdG9wIEFsbCIsYWN0aW9uOmkoYXN5bmMoKT0+e2NvbnNvbGUubG9nKCJTdG9wIGFsbCIpfSwiYWN0aW9uIil9LHtkaXZpZGVyOiEwfSx7bmFtZToiR2FyYmFnZSBDb2xsZWN0IixhY3Rpb246aShhc3luYygpPT57Y29uc29sZS5sb2coIkdDIil9LCJhY3Rpb24iKX1dfSx7bmFtZToiSGVscCIsYWN0aW9uOmkoYXN5bmMoKT0+e30sImFjdGlvbiIpLHN1Ym1lbnU6W3tuYW1lOiJEb2N1bWVudGF0aW9uIixhY3Rpb246aShhc3luYygpPT57d2luZG93Lm9wZW4oImh0dHBzOi8vZG9jcy5zZXJ2ZS56b25lIiwiX2JsYW5rIil9LCJhY3Rpb24iKX0se25hbWU6IlJlbGVhc2UgTm90ZXMiLGFjdGlvbjppKGFzeW5jKCk9Pntjb25zb2xlLmxvZygiUmVsZWFzZSBub3RlcyIpfSwiYWN0aW9uIil9LHtkaXZpZGVyOiEwfSx7bmFtZToiQWJvdXQgc2VydmUuem9uZSIsYWN0aW9uOmkoYXN5bmMoKT0+e2NvbnNvbGUubG9nKCJBYm91dCIpfSwiYWN0aW9uIil9XX1dfSx2aWV3czpbe2lkOiJkYXNoYm9hcmQiLG5hbWU6IkRhc2hib2FyZCIsaWNvbk5hbWU6Imx1Y2lkZTpMYXlvdXREYXNoYm9hcmQiLGNvbnRlbnQ6InN6LWRlbW8tdmlldy1kYXNoYm9hcmQifSx7aWQ6InNlcnZpY2VzIixuYW1lOiJTZXJ2aWNlcyIsaWNvbk5hbWU6Imx1Y2lkZTpTZXJ2ZXIiLGNvbnRlbnQ6InN6LWRlbW8tdmlldy1zZXJ2aWNlcyJ9LHtpZDoibmV0d29yayIsbmFtZToiTmV0d29yayIsaWNvbk5hbWU6Imx1Y2lkZTpOZXR3b3JrIixjb250ZW50OiJzei1kZW1vLXZpZXctbmV0d29yayJ9LHtpZDoicmVnaXN0cmllcyIsbmFtZToiUmVnaXN0cmllcyIsaWNvbk5hbWU6Imx1Y2lkZTpBcmNoaXZlIixjb250ZW50OiJzei1kZW1vLXZpZXctcmVnaXN0cmllcyJ9LHtpZDoidG9rZW5zIixuYW1lOiJUb2tlbnMiLGljb25OYW1lOiJsdWNpZGU6S2V5Iixjb250ZW50OiJzei1kZW1vLXZpZXctdG9rZW5zIn0se2lkOiJtdGEiLG5hbWU6IkVtYWlsIC8gTVRBIixpY29uTmFtZToibHVjaWRlOk1haWwiLGNvbnRlbnQ6InN6LWRlbW8tdmlldy1tdGEifSx7aWQ6InJvdXRlcyIsbmFtZToiUm91dGVzIixpY29uTmFtZToibHVjaWRlOlJvdXRlIixjb250ZW50OiJzei1kZW1vLXZpZXctcm91dGVzIn0se2lkOiJzZXR0aW5ncyIsbmFtZToiU2V0dGluZ3MiLGljb25OYW1lOiJsdWNpZGU6U2V0dGluZ3MiLGNvbnRlbnQ6InN6LWRlbW8tdmlldy1zZXR0aW5ncyJ9XSxtYWluTWVudTp7c2VjdGlvbnM6W3tuYW1lOiJPdmVydmlldyIsdmlld3M6WyJkYXNoYm9hcmQiXX0se25hbWU6IkluZnJhc3RydWN0dXJlIix2aWV3czpbInNlcnZpY2VzIiwibmV0d29yayIsInJlZ2lzdHJpZXMiLCJtdGEiLCJyb3V0ZXMiXX0se25hbWU6IkFkbWluaXN0cmF0aW9uIix2aWV3czpbInRva2VucyIsInNldHRpbmdzIl19XX0sZGVmYXVsdFZpZXc6ImRhc2hib2FyZCIsb25WaWV3Q2hhbmdlOmkoKGwscCk9Pntjb25zb2xlLmxvZygiVmlldyBjaGFuZ2VkIHRvOiIsbCxwKX0sIm9uVmlld0NoYW5nZSIpfSksby5zZXRVc2VyKHtuYW1lOiJBZG1pbiBVc2VyIixlbWFpbDoiYWRtaW5Ac2VydmUuem9uZSIsc3RhdHVzOiJvbmxpbmUifSksby5zZXRQcm9maWxlTWVudUl0ZW1zKFt7bmFtZToiUHJvZmlsZSIsaWNvbk5hbWU6Imx1Y2lkZTpVc2VyIixhY3Rpb246aShhc3luYygpPT57Y29uc29sZS5sb2coIlByb2ZpbGUiKX0sImFjdGlvbiIpfSx7bmFtZToiUHJlZmVyZW5jZXMiLGljb25OYW1lOiJsdWNpZGU6U2xpZGVyc0hvcml6b250YWwiLGFjdGlvbjppKGFzeW5jKCk9Pntjb25zb2xlLmxvZygiUHJlZmVyZW5jZXMiKX0sImFjdGlvbiIpfSx7ZGl2aWRlcjohMH0se25hbWU6IlNpZ24gT3V0IixpY29uTmFtZToibHVjaWRlOkxvZ091dCIsYWN0aW9uOmkoYXN5bmMoKT0+e2NvbnNvbGUubG9nKCJTaWduIE91dCIpfSwiYWN0aW9uIil9XSkpfXN0YXRpY3t2dHMoYSx0KX19O3JldHVybiBuPWF9KSgpfSk7dmFyIHJfYT1nKCgpPT57TTlhKCk7ejlhKCk7aV9hKCl9KTt2YXIgb19hPWcoKCk9PntpYygpO3JfYSgpfSk7dmFyIG5fYT1wbChBcj0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoQXIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEFyLmdldEZpcnN0VHJ1ZU9yRmFsc2U9QXIudGltZW91dEFuZENvbnRpbnVlPUFyLnRpbWVvdXRXcmFwPUFyLm1hcD1Bci5yZWplY3RlZFByb21pc2U9QXIucmVzb2x2ZWRQcm9taXNlPUFyLmRlZmVyPUFyLkRlZmVycmVkPXZvaWQgMDt2YXIgcDJlPWNsYXNze3N0YXRpY3tpKHRoaXMsIkRlZmVycmVkIil9Y29uc3RydWN0b3IoKXt0aGlzLnByb21pc2U9bmV3IFByb21pc2UoKGUsdCk9Pnt0aGlzLnJlc29sdmU9YT0+e3RoaXMuc3RhdHVzPSJmdWxmaWxsZWQiLHRoaXMuc3RvcHBlZEF0PURhdGUubm93KCksZShhKX0sdGhpcy5yZWplY3Q9YT0+e3RoaXMuc3RhdHVzPSJyZWplY3RlZCIsdGhpcy5zdG9wcGVkQXQ9RGF0ZS5ub3coKSx0KGEpfSx0aGlzLnN0YXJ0ZWRBdD1EYXRlLm5vdygpLHRoaXMuc3RhdHVzPSJwZW5kaW5nIn0pfWdldCBkdXJhdGlvbigpe3JldHVybiB0aGlzLnN0b3BwZWRBdD90aGlzLnN0b3BwZWRBdC10aGlzLnN0YXJ0ZWRBdDpEYXRlLm5vdygpLXRoaXMuc3RhcnRlZEF0fX07QXIuRGVmZXJyZWQ9cDJlLEFyLmRlZmVyPSgpPT5uZXcgcDJlLEFyLnJlc29sdmVkUHJvbWlzZT1zPT5Qcm9taXNlLnJlc29sdmUocyksQXIucmVqZWN0ZWRQcm9taXNlPXM9PlByb21pc2UucmVqZWN0KHMpLEFyLm1hcD1hc3luYyhzLGUpPT57bGV0IHQ9W10sYT1bXTtmb3IobGV0IHIgb2Ygcyl7bGV0IG49ZShyKTt0LnB1c2gobiksbi50aGVuKG89PnthLnB1c2gobyl9KX1yZXR1cm4gYXdhaXQgUHJvbWlzZS5hbGwodCksYX0sQXIudGltZW91dFdyYXA9YXN5bmMocyxlLHQ9ITApPT5uZXcgUHJvbWlzZSgoYSxyKT0+e3NldFRpbWVvdXQoKCk9Pnt0P3IobmV3IEVycm9yKCJ0aW1lb3V0IikpOmEobnVsbCl9LGUpLHMudGhlbihhLHIpfSksQXIudGltZW91dEFuZENvbnRpbnVlPWFzeW5jKHMsZT02ZTQpPT5Bci50aW1lb3V0V3JhcChzLGUsITEpLEFyLmdldEZpcnN0VHJ1ZU9yRmFsc2U9YXN5bmMgcz0+e2xldCBlPUFyLmRlZmVyKCk7Zm9yKGxldCB0IG9mIHMpdC50aGVuKGE9PnthPT09ITAmJmUucmVzb2x2ZSghMCl9KTtyZXR1cm4gUHJvbWlzZS5hbGwocykudGhlbigoKT0+e2UucmVzb2x2ZSghMSl9KSxlLnByb21pc2V9fSk7dmFyIE9sdCxsX2E9ZygoKT0+e09sdD14bihuX2EoKSwxKX0pO3ZhciBjX2E9ZygoKT0+e30pO3ZhciBGbHQsZF9hPWcoKCk9PntsX2EoKTtjX2EoKTtGbHQ9Y2xhc3N7c3RhdGlje2kodGhpcywiU21hcnRlbnYiKX1jb25zdHJ1Y3Rvcigpe3RoaXMubG9hZGVkU2NyaXB0cz1bXX1hc3luYyBnZXRFbnZBd2FyZU1vZHVsZShlKXtpZih0aGlzLmlzTm9kZSlyZXR1cm4gYXdhaXQgdGhpcy5nZXRTYWZlTm9kZU1vZHVsZShlLm5vZGVNb2R1bGVOYW1lKTtpZih0aGlzLmlzQnJvd3NlcilyZXR1cm4gYXdhaXQgdGhpcy5nZXRTYWZlV2ViTW9kdWxlKGUud2ViVXJsQXJnLGUuZ2V0RnVuY3Rpb24pO2NvbnNvbGUuZXJyb3IoInBsYXRmb3JtIGZvciBsb2FkaW5nIG5vdCBzdXBwb3J0ZWQgYnkgc21hcnRlbnYiKX1hc3luYyBnZXRTYWZlTm9kZU1vZHVsZShlKXtpZighdGhpcy5pc05vZGUpe2NvbnNvbGUuZXJyb3IoYFlvdSB0cmllZCB0byBsb2FkIGEgbm9kZSBtb2R1bGUgaW4gYSB3cm9uZyBjb250ZXh0OiAke2V9YCk7cmV0dXJufXJldHVybiBuZXcgRnVuY3Rpb24oYHJldHVybiBpbXBvcnQoJyR7ZX0nKWApKCl9YXN5bmMgZ2V0U2FmZVdlYk1vZHVsZShlLHQpe2lmKCF0aGlzLmlzQnJvd3Nlcil7Y29uc29sZS5lcnJvcigiWW91IHRyaWVkIHRvIGxvYWQgYSB3ZWIgbW9kdWxlIGluIGEgd3JvbmcgY29udGV4dCIpO3JldHVybn1pZih0aGlzLmxvYWRlZFNjcmlwdHMuaW5jbHVkZXMoZSkpcmV0dXJuIHQoKTt0aGlzLmxvYWRlZFNjcmlwdHMucHVzaChlKTtsZXQgYT1PbHQuZGVmZXIoKTtpZihnbG9iYWxUaGlzLmltcG9ydFNjcmlwdHMpZ2xvYmFsVGhpcy5pbXBvcnRTY3JpcHRzKGUpLGEucmVzb2x2ZSgpO2Vsc2V7bGV0IHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7ci5vbmxvYWQ9KCk9PnthLnJlc29sdmUoKX0sci5zcmM9ZSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHIpfXJldHVybiBhd2FpdCBhLnByb21pc2UsdCgpfWdldCBydW50aW1lRW52KCl7cmV0dXJuIHR5cGVvZiBwcm9jZXNzPCJ1Ij8ibm9kZSI6ImJyb3dzZXIifWdldCBpc0Jyb3dzZXIoKXtyZXR1cm4hdGhpcy5pc05vZGV9Z2V0IHVzZXJBZ2VudCgpe3JldHVybiB0aGlzLmlzQnJvd3Nlcj9uYXZpZ2F0b3IudXNlckFnZW50OiJ1bmRlZmluZWQifWdldCBpc05vZGUoKXtyZXR1cm4gdGhpcy5ydW50aW1lRW52PT09Im5vZGUifWdldCBub2RlVmVyc2lvbigpe3JldHVybiBwcm9jZXNzLnZlcnNpb259Z2V0IGlzQ0koKXtyZXR1cm4gdGhpcy5pc05vZGU/ISFwcm9jZXNzLmVudi5DSTohMX1hc3luYyBpc01hY0FzeW5jKCl7cmV0dXJuIHRoaXMuaXNOb2RlPyhhd2FpdCB0aGlzLmdldFNhZmVOb2RlTW9kdWxlKCJvcyIpKS5wbGF0Zm9ybSgpPT09ImRhcndpbiI6ITF9YXN5bmMgaXNXaW5kb3dzQXN5bmMoKXtyZXR1cm4gdGhpcy5pc05vZGU/KGF3YWl0IHRoaXMuZ2V0U2FmZU5vZGVNb2R1bGUoIm9zIikpLnBsYXRmb3JtKCk9PT0id2luMzIiOiExfWFzeW5jIGlzTGludXhBc3luYygpe3JldHVybiB0aGlzLmlzTm9kZT8oYXdhaXQgdGhpcy5nZXRTYWZlTm9kZU1vZHVsZSgib3MiKSkucGxhdGZvcm0oKT09PSJsaW51eCI6ITF9YXN5bmMgcHJpbnRFbnYoKXt0aGlzLmlzTm9kZT8oY29uc29sZS5sb2coInJ1bm5pbmcgb24gTk9ERSIpLGNvbnNvbGUubG9nKCJub2RlIHZlcnNpb24gaXMgIit0aGlzLm5vZGVWZXJzaW9uKSk6KGNvbnNvbGUubG9nKCJydW5uaW5nIG9uIEJST1dTRVIiKSxjb25zb2xlLmxvZygiYnJvd3NlciBpcyAiK3RoaXMudXNlckFnZW50KSl9fX0pO3ZhciBmSj17fTt5dChmSix7U21hcnRlbnY6KCk9PkZsdH0pO3ZhciB1X2E9ZygoKT0+e2RfYSgpfSk7dmFyIHBfYT1nKCgpPT57dV9hKCl9KTt2YXIgQmx0PXt9O3l0KEJsdCx7c2hhMjU2RnJvbVN0cmluZzooKT0+U3RzfSk7dmFyIGt0cyxTdHMsaF9hPWcoKCk9PntwX2EoKTtrdHM9aShzPT57bGV0IGU9W10sdD1uZXcgRGF0YVZpZXcocyk7Zm9yKGxldCBhPTA7YTx0LmJ5dGVMZW5ndGg7YSs9NCl7bGV0IG49dC5nZXRVaW50MzIoYSkudG9TdHJpbmcoMTYpLG89IjAwMDAwMDAwIixsPShvK24pLnNsaWNlKC1vLmxlbmd0aCk7ZS5wdXNoKGwpfXJldHVybiBlLmpvaW4oIiIpfSwiaGV4IiksU3RzPWkoYXN5bmMgcz0+e2xldCBlPW5ldyBmSi5TbWFydGVudjtpZihlLmlzQnJvd3Nlcil7bGV0IHQ9bmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHMpLGE9YXdhaXQgY3J5cHRvLnN1YnRsZS5kaWdlc3QoIlNIQS0yNTYiLHQpO3JldHVybiBrdHMoYSl9ZWxzZSBpZihlLmlzTm9kZSlyZXR1cm4gYXdhaXQoYXdhaXQgZS5nZXRTYWZlTm9kZU1vZHVsZSgiQHB1c2hyb2Nrcy9zbWFydGhhc2giKSkuc2hhMjU2RnJvbVN0cmluZyhzKX0sInNoYTI1NkZyb21TdHJpbmciKX0pO3ZhciBmX2E9ZygoKT0+e2lvKCl9KTt2YXIgbV9hPWcoKCk9Pnt9KTt2YXIgSGx0LGdfYT1nKCgpPT57Zl9hKCk7bV9hKCk7SGx0PWNsYXNze3N0YXRpY3tpKHRoaXMsIlNtYXJ0ZW52Iil9Y29uc3RydWN0b3IoKXt0aGlzLmxvYWRlZFNjcmlwdHM9W119YXN5bmMgZ2V0RW52QXdhcmVNb2R1bGUoZSl7aWYodGhpcy5pc05vZGUpcmV0dXJuIGF3YWl0IHRoaXMuZ2V0U2FmZU5vZGVNb2R1bGUoZS5ub2RlTW9kdWxlTmFtZSk7aWYodGhpcy5pc0Jyb3dzZXIpcmV0dXJuIGF3YWl0IHRoaXMuZ2V0U2FmZVdlYk1vZHVsZShlLndlYlVybEFyZyxlLmdldEZ1bmN0aW9uKTtjb25zb2xlLmVycm9yKCJwbGF0Zm9ybSBmb3IgbG9hZGluZyBub3Qgc3VwcG9ydGVkIGJ5IHNtYXJ0ZW52Iil9YXN5bmMgZ2V0U2FmZU5vZGVNb2R1bGUoZSx0KXtpZighdGhpcy5pc05vZGUpe2NvbnNvbGUuZXJyb3IoYFlvdSB0cmllZCB0byBsb2FkIGEgbm9kZSBtb2R1bGUgaW4gYSB3cm9uZyBjb250ZXh0OiAke2V9LiBUaGlzIGRvZXMgbm90IHRocm93LmApO3JldHVybn1sZXQgYT1hd2FpdCBuZXcgRnVuY3Rpb24oYHJldHVybiBpbXBvcnQoJyR7ZX0nKWApKCk7cmV0dXJuIHQmJmF3YWl0IHQoYSksYX1hc3luYyBnZXRTYWZlV2ViTW9kdWxlKGUsdCl7aWYoIXRoaXMuaXNCcm93c2VyKXtjb25zb2xlLmVycm9yKCJZb3UgdHJpZWQgdG8gbG9hZCBhIHdlYiBtb2R1bGUgaW4gYSB3cm9uZyBjb250ZXh0Iik7cmV0dXJufWlmKHRoaXMubG9hZGVkU2NyaXB0cy5pbmNsdWRlcyhlKSlyZXR1cm4gdCgpO3RoaXMubG9hZGVkU2NyaXB0cy5wdXNoKGUpO2xldCBhPW10LmRlZmVyKCk7aWYoZ2xvYmFsVGhpcy5pbXBvcnRTY3JpcHRzKWdsb2JhbFRoaXMuaW1wb3J0U2NyaXB0cyhlKSxhLnJlc29sdmUoKTtlbHNle2xldCByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO3Iub25sb2FkPSgpPT57YS5yZXNvbHZlKCl9LHIuc3JjPWUsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChyKX1yZXR1cm4gYXdhaXQgYS5wcm9taXNlLHQoKX1nZXQgcnVudGltZUVudigpe3JldHVybiB0eXBlb2YgcHJvY2VzczwidSI/Im5vZGUiOiJicm93c2VyIn1nZXQgaXNCcm93c2VyKCl7cmV0dXJuIXRoaXMuaXNOb2RlfWdldCB1c2VyQWdlbnQoKXtyZXR1cm4gdGhpcy5pc0Jyb3dzZXI/bmF2aWdhdG9yLnVzZXJBZ2VudDoidW5kZWZpbmVkIn1nZXQgaXNOb2RlKCl7cmV0dXJuIHRoaXMucnVudGltZUVudj09PSJub2RlIn1nZXQgbm9kZVZlcnNpb24oKXtyZXR1cm4gcHJvY2Vzcy52ZXJzaW9ufWdldCBpc0NJKCl7cmV0dXJuIHRoaXMuaXNOb2RlPyEhcHJvY2Vzcy5lbnYuQ0k6ITF9YXN5bmMgaXNNYWNBc3luYygpe3JldHVybiB0aGlzLmlzTm9kZT8oYXdhaXQgdGhpcy5nZXRTYWZlTm9kZU1vZHVsZSgib3MiKSkucGxhdGZvcm0oKT09PSJkYXJ3aW4iOiExfWFzeW5jIGlzV2luZG93c0FzeW5jKCl7cmV0dXJuIHRoaXMuaXNOb2RlPyhhd2FpdCB0aGlzLmdldFNhZmVOb2RlTW9kdWxlKCJvcyIpKS5wbGF0Zm9ybSgpPT09IndpbjMyIjohMX1hc3luYyBpc0xpbnV4QXN5bmMoKXtyZXR1cm4gdGhpcy5pc05vZGU/KGF3YWl0IHRoaXMuZ2V0U2FmZU5vZGVNb2R1bGUoIm9zIikpLnBsYXRmb3JtKCk9PT0ibGludXgiOiExfWFzeW5jIHByaW50RW52KCl7dGhpcy5pc05vZGU/KGNvbnNvbGUubG9nKCJydW5uaW5nIG9uIE5PREUiKSxjb25zb2xlLmxvZygibm9kZSB2ZXJzaW9uIGlzICIrdGhpcy5ub2RlVmVyc2lvbikpOihjb25zb2xlLmxvZygicnVubmluZyBvbiBCUk9XU0VSIiksY29uc29sZS5sb2coImJyb3dzZXIgaXMgIit0aGlzLnVzZXJBZ2VudCkpfX19KTt2YXIgcWx0PXt9O3l0KHFsdCx7U21hcnRlbnY6KCk9PkhsdH0pO3ZhciBiX2E9ZygoKT0+e2dfYSgpfSk7dmFyIHJNYT1wbCgoYkosUngpPT57dmFyIE10cz0yMDAsdl9hPSJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIix4X2E9OTAwNzE5OTI1NDc0MDk5MSxqbHQ9IltvYmplY3QgQXJndW1lbnRzXSIsenRzPSJbb2JqZWN0IEFycmF5XSIseV9hPSJbb2JqZWN0IEJvb2xlYW5dIix3X2E9IltvYmplY3QgRGF0ZV0iLEN0cz0iW29iamVjdCBFcnJvcl0iLFZsdD0iW29iamVjdCBGdW5jdGlvbl0iLGtfYT0iW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iLGgyZT0iW29iamVjdCBNYXBdIixTX2E9IltvYmplY3QgTnVtYmVyXSIsVWx0PSJbb2JqZWN0IE9iamVjdF0iLF9fYT0iW29iamVjdCBQcm9taXNlXSIsTV9hPSJbb2JqZWN0IFJlZ0V4cF0iLGYyZT0iW29iamVjdCBTZXRdIix6X2E9IltvYmplY3QgU3RyaW5nXSIsQ19hPSJbb2JqZWN0IFN5bWJvbF0iLFdsdD0iW29iamVjdCBXZWFrTWFwXSIsVF9hPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsbTJlPSJbb2JqZWN0IERhdGFWaWV3XSIsJF9hPSJbb2JqZWN0IEZsb2F0MzJBcnJheV0iLERfYT0iW29iamVjdCBGbG9hdDY0QXJyYXldIixMX2E9IltvYmplY3QgSW50OEFycmF5XSIsRV9hPSJbb2JqZWN0IEludDE2QXJyYXldIixQX2E9IltvYmplY3QgSW50MzJBcnJheV0iLElfYT0iW29iamVjdCBVaW50OEFycmF5XSIsQV9hPSJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSIsTl9hPSJbb2JqZWN0IFVpbnQxNkFycmF5XSIsUl9hPSJbb2JqZWN0IFVpbnQzMkFycmF5XSIsVHRzPS9bXFxeJC4qKz8oKVtcXXt9fF0vZywkdHM9L1x3KiQvLER0cz0vXlxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXF0kLyxMdHM9L14oPzowfFsxLTldXGQqKSQvLHJpPXt9O3JpW2psdF09cmlbenRzXT1yaVtUX2FdPXJpW20yZV09cmlbeV9hXT1yaVt3X2FdPXJpWyRfYV09cmlbRF9hXT1yaVtMX2FdPXJpW0VfYV09cmlbUF9hXT1yaVtoMmVdPXJpW1NfYV09cmlbVWx0XT1yaVtNX2FdPXJpW2YyZV09cmlbel9hXT1yaVtDX2FdPXJpW0lfYV09cmlbQV9hXT1yaVtOX2FdPXJpW1JfYV09ITAscmlbQ3RzXT1yaVtWbHRdPXJpW1dsdF09ITE7dmFyIEV0cz10eXBlb2YgZ2xvYmFsPT0ib2JqZWN0IiYmZ2xvYmFsJiZnbG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWwsUHRzPXR5cGVvZiBzZWxmPT0ib2JqZWN0IiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsWnU9RXRzfHxQdHN8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksT19hPXR5cGVvZiBiSj09Im9iamVjdCImJmJKJiYhYkoubm9kZVR5cGUmJmJKLEZfYT1PX2EmJnR5cGVvZiBSeD09Im9iamVjdCImJlJ4JiYhUngubm9kZVR5cGUmJlJ4LEl0cz1GX2EmJkZfYS5leHBvcnRzPT09T19hO2Z1bmN0aW9uIEF0cyhzLGUpe3JldHVybiBzLnNldChlWzBdLGVbMV0pLHN9aShBdHMsImFkZE1hcEVudHJ5Iik7ZnVuY3Rpb24gTnRzKHMsZSl7cmV0dXJuIHMuYWRkKGUpLHN9aShOdHMsImFkZFNldEVudHJ5Iik7ZnVuY3Rpb24gUnRzKHMsZSl7Zm9yKHZhciB0PS0xLGE9cz9zLmxlbmd0aDowOysrdDxhJiZlKHNbdF0sdCxzKSE9PSExOyk7cmV0dXJuIHN9aShSdHMsImFycmF5RWFjaCIpO2Z1bmN0aW9uIE90cyhzLGUpe2Zvcih2YXIgdD0tMSxhPWUubGVuZ3RoLHI9cy5sZW5ndGg7Kyt0PGE7KXNbcit0XT1lW3RdO3JldHVybiBzfWkoT3RzLCJhcnJheVB1c2giKTtmdW5jdGlvbiBCX2EocyxlLHQsYSl7dmFyIHI9LTEsbj1zP3MubGVuZ3RoOjA7Zm9yKGEmJm4mJih0PXNbKytyXSk7KytyPG47KXQ9ZSh0LHNbcl0scixzKTtyZXR1cm4gdH1pKEJfYSwiYXJyYXlSZWR1Y2UiKTtmdW5jdGlvbiBGdHMocyxlKXtmb3IodmFyIHQ9LTEsYT1BcnJheShzKTsrK3Q8czspYVt0XT1lKHQpO3JldHVybiBhfWkoRnRzLCJiYXNlVGltZXMiKTtmdW5jdGlvbiBCdHMocyxlKXtyZXR1cm4gcz8uW2VdfWkoQnRzLCJnZXRWYWx1ZSIpO2Z1bmN0aW9uIEhfYShzKXt2YXIgZT0hMTtpZihzIT1udWxsJiZ0eXBlb2Ygcy50b1N0cmluZyE9ImZ1bmN0aW9uIil0cnl7ZT0hIShzKyIiKX1jYXRjaHt9cmV0dXJuIGV9aShIX2EsImlzSG9zdE9iamVjdCIpO2Z1bmN0aW9uIHFfYShzKXt2YXIgZT0tMSx0PUFycmF5KHMuc2l6ZSk7cmV0dXJuIHMuZm9yRWFjaChmdW5jdGlvbihhLHIpe3RbKytlXT1bcixhXX0pLHR9aShxX2EsIm1hcFRvQXJyYXkiKTtmdW5jdGlvbiBHbHQocyxlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHMoZSh0KSl9fWkoR2x0LCJvdmVyQXJnIik7ZnVuY3Rpb24gal9hKHMpe3ZhciBlPS0xLHQ9QXJyYXkocy5zaXplKTtyZXR1cm4gcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3RbKytlXT1hfSksdH1pKGpfYSwic2V0VG9BcnJheSIpO3ZhciBIdHM9QXJyYXkucHJvdG90eXBlLHF0cz1GdW5jdGlvbi5wcm90b3R5cGUsZzJlPU9iamVjdC5wcm90b3R5cGUsS2x0PVp1WyJfX2NvcmUtanNfc2hhcmVkX18iXSxWX2E9KGZ1bmN0aW9uKCl7dmFyIHM9L1teLl0rJC8uZXhlYyhLbHQmJktsdC5rZXlzJiZLbHQua2V5cy5JRV9QUk9UT3x8IiIpO3JldHVybiBzPyJTeW1ib2woc3JjKV8xLiIrczoiIn0pKCksVV9hPXF0cy50b1N0cmluZyx6ND1nMmUuaGFzT3duUHJvcGVydHksYjJlPWcyZS50b1N0cmluZyxqdHM9UmVnRXhwKCJeIitVX2EuY2FsbCh6NCkucmVwbGFjZShUdHMsIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIiksV19hPUl0cz9adS5CdWZmZXI6dm9pZCAwLEdfYT1adS5TeW1ib2wsS19hPVp1LlVpbnQ4QXJyYXksVnRzPUdsdChPYmplY3QuZ2V0UHJvdG90eXBlT2YsT2JqZWN0KSxVdHM9T2JqZWN0LmNyZWF0ZSxXdHM9ZzJlLnByb3BlcnR5SXNFbnVtZXJhYmxlLEd0cz1IdHMuc3BsaWNlLFlfYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLEt0cz1XX2E/V19hLmlzQnVmZmVyOnZvaWQgMCxZdHM9R2x0KE9iamVjdC5rZXlzLE9iamVjdCksWWx0PU54KFp1LCJEYXRhVmlldyIpLG1KPU54KFp1LCJNYXAiKSxabHQ9TngoWnUsIlByb21pc2UiKSxYbHQ9TngoWnUsIlNldCIpLFFsdD1OeChadSwiV2Vha01hcCIpLGdKPU54KE9iamVjdCwiY3JlYXRlIiksWnRzPWg3KFlsdCksWHRzPWg3KG1KKSxRdHM9aDcoWmx0KSxKdHM9aDcoWGx0KSxlYXM9aDcoUWx0KSxaX2E9R19hP0dfYS5wcm90b3R5cGU6dm9pZCAwLFhfYT1aX2E/Wl9hLnZhbHVlT2Y6dm9pZCAwO2Z1bmN0aW9uIHU3KHMpe3ZhciBlPS0xLHQ9cz9zLmxlbmd0aDowO2Zvcih0aGlzLmNsZWFyKCk7KytlPHQ7KXt2YXIgYT1zW2VdO3RoaXMuc2V0KGFbMF0sYVsxXSl9fWkodTcsIkhhc2giKTtmdW5jdGlvbiB0YXMoKXt0aGlzLl9fZGF0YV9fPWdKP2dKKG51bGwpOnt9fWkodGFzLCJoYXNoQ2xlYXIiKTtmdW5jdGlvbiBhYXMocyl7cmV0dXJuIHRoaXMuaGFzKHMpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1tzXX1pKGFhcywiaGFzaERlbGV0ZSIpO2Z1bmN0aW9uIHNhcyhzKXt2YXIgZT10aGlzLl9fZGF0YV9fO2lmKGdKKXt2YXIgdD1lW3NdO3JldHVybiB0PT09dl9hP3ZvaWQgMDp0fXJldHVybiB6NC5jYWxsKGUscyk/ZVtzXTp2b2lkIDB9aShzYXMsImhhc2hHZXQiKTtmdW5jdGlvbiBpYXMocyl7dmFyIGU9dGhpcy5fX2RhdGFfXztyZXR1cm4gZ0o/ZVtzXSE9PXZvaWQgMDp6NC5jYWxsKGUscyl9aShpYXMsImhhc2hIYXMiKTtmdW5jdGlvbiByYXMocyxlKXt2YXIgdD10aGlzLl9fZGF0YV9fO3JldHVybiB0W3NdPWdKJiZlPT09dm9pZCAwP3ZfYTplLHRoaXN9aShyYXMsImhhc2hTZXQiKSx1Ny5wcm90b3R5cGUuY2xlYXI9dGFzLHU3LnByb3RvdHlwZS5kZWxldGU9YWFzLHU3LnByb3RvdHlwZS5nZXQ9c2FzLHU3LnByb3RvdHlwZS5oYXM9aWFzLHU3LnByb3RvdHlwZS5zZXQ9cmFzO2Z1bmN0aW9uIFh1KHMpe3ZhciBlPS0xLHQ9cz9zLmxlbmd0aDowO2Zvcih0aGlzLmNsZWFyKCk7KytlPHQ7KXt2YXIgYT1zW2VdO3RoaXMuc2V0KGFbMF0sYVsxXSl9fWkoWHUsIkxpc3RDYWNoZSIpO2Z1bmN0aW9uIG9hcygpe3RoaXMuX19kYXRhX189W119aShvYXMsImxpc3RDYWNoZUNsZWFyIik7ZnVuY3Rpb24gbmFzKHMpe3ZhciBlPXRoaXMuX19kYXRhX18sdD12MmUoZSxzKTtpZih0PDApcmV0dXJuITE7dmFyIGE9ZS5sZW5ndGgtMTtyZXR1cm4gdD09YT9lLnBvcCgpOkd0cy5jYWxsKGUsdCwxKSwhMH1pKG5hcywibGlzdENhY2hlRGVsZXRlIik7ZnVuY3Rpb24gbGFzKHMpe3ZhciBlPXRoaXMuX19kYXRhX18sdD12MmUoZSxzKTtyZXR1cm4gdDwwP3ZvaWQgMDplW3RdWzFdfWkobGFzLCJsaXN0Q2FjaGVHZXQiKTtmdW5jdGlvbiBjYXMocyl7cmV0dXJuIHYyZSh0aGlzLl9fZGF0YV9fLHMpPi0xfWkoY2FzLCJsaXN0Q2FjaGVIYXMiKTtmdW5jdGlvbiBkYXMocyxlKXt2YXIgdD10aGlzLl9fZGF0YV9fLGE9djJlKHQscyk7cmV0dXJuIGE8MD90LnB1c2goW3MsZV0pOnRbYV1bMV09ZSx0aGlzfWkoZGFzLCJsaXN0Q2FjaGVTZXQiKSxYdS5wcm90b3R5cGUuY2xlYXI9b2FzLFh1LnByb3RvdHlwZS5kZWxldGU9bmFzLFh1LnByb3RvdHlwZS5nZXQ9bGFzLFh1LnByb3RvdHlwZS5oYXM9Y2FzLFh1LnByb3RvdHlwZS5zZXQ9ZGFzO2Z1bmN0aW9uIEl4KHMpe3ZhciBlPS0xLHQ9cz9zLmxlbmd0aDowO2Zvcih0aGlzLmNsZWFyKCk7KytlPHQ7KXt2YXIgYT1zW2VdO3RoaXMuc2V0KGFbMF0sYVsxXSl9fWkoSXgsIk1hcENhY2hlIik7ZnVuY3Rpb24gdWFzKCl7dGhpcy5fX2RhdGFfXz17aGFzaDpuZXcgdTcsbWFwOm5ldyhtSnx8WHUpLHN0cmluZzpuZXcgdTd9fWkodWFzLCJtYXBDYWNoZUNsZWFyIik7ZnVuY3Rpb24gcGFzKHMpe3JldHVybiB4MmUodGhpcyxzKS5kZWxldGUocyl9aShwYXMsIm1hcENhY2hlRGVsZXRlIik7ZnVuY3Rpb24gaGFzKHMpe3JldHVybiB4MmUodGhpcyxzKS5nZXQocyl9aShoYXMsIm1hcENhY2hlR2V0Iik7ZnVuY3Rpb24gZmFzKHMpe3JldHVybiB4MmUodGhpcyxzKS5oYXMocyl9aShmYXMsIm1hcENhY2hlSGFzIik7ZnVuY3Rpb24gbWFzKHMsZSl7cmV0dXJuIHgyZSh0aGlzLHMpLnNldChzLGUpLHRoaXN9aShtYXMsIm1hcENhY2hlU2V0IiksSXgucHJvdG90eXBlLmNsZWFyPXVhcyxJeC5wcm90b3R5cGUuZGVsZXRlPXBhcyxJeC5wcm90b3R5cGUuZ2V0PWhhcyxJeC5wcm90b3R5cGUuaGFzPWZhcyxJeC5wcm90b3R5cGUuc2V0PW1hcztmdW5jdGlvbiBBeChzKXt0aGlzLl9fZGF0YV9fPW5ldyBYdShzKX1pKEF4LCJTdGFjayIpO2Z1bmN0aW9uIGdhcygpe3RoaXMuX19kYXRhX189bmV3IFh1fWkoZ2FzLCJzdGFja0NsZWFyIik7ZnVuY3Rpb24gYmFzKHMpe3JldHVybiB0aGlzLl9fZGF0YV9fLmRlbGV0ZShzKX1pKGJhcywic3RhY2tEZWxldGUiKTtmdW5jdGlvbiB2YXMocyl7cmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KHMpfWkodmFzLCJzdGFja0dldCIpO2Z1bmN0aW9uIHhhcyhzKXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMocyl9aSh4YXMsInN0YWNrSGFzIik7ZnVuY3Rpb24geWFzKHMsZSl7dmFyIHQ9dGhpcy5fX2RhdGFfXztpZih0IGluc3RhbmNlb2YgWHUpe3ZhciBhPXQuX19kYXRhX187aWYoIW1KfHxhLmxlbmd0aDxNdHMtMSlyZXR1cm4gYS5wdXNoKFtzLGVdKSx0aGlzO3Q9dGhpcy5fX2RhdGFfXz1uZXcgSXgoYSl9cmV0dXJuIHQuc2V0KHMsZSksdGhpc31pKHlhcywic3RhY2tTZXQiKSxBeC5wcm90b3R5cGUuY2xlYXI9Z2FzLEF4LnByb3RvdHlwZS5kZWxldGU9YmFzLEF4LnByb3RvdHlwZS5nZXQ9dmFzLEF4LnByb3RvdHlwZS5oYXM9eGFzLEF4LnByb3RvdHlwZS5zZXQ9eWFzO2Z1bmN0aW9uIHdhcyhzLGUpe3ZhciB0PXRjdChzKXx8VWFzKHMpP0Z0cyhzLmxlbmd0aCxTdHJpbmcpOltdLGE9dC5sZW5ndGgscj0hIWE7Zm9yKHZhciBuIGluIHMpKGV8fHo0LmNhbGwocyxuKSkmJiEociYmKG49PSJsZW5ndGgifHxIYXMobixhKSkpJiZ0LnB1c2gobik7cmV0dXJuIHR9aSh3YXMsImFycmF5TGlrZUtleXMiKTtmdW5jdGlvbiBRX2EocyxlLHQpe3ZhciBhPXNbZV07KCEoejQuY2FsbChzLGUpJiZhTWEoYSx0KSl8fHQ9PT12b2lkIDAmJiEoZSBpbiBzKSkmJihzW2VdPXQpfWkoUV9hLCJhc3NpZ25WYWx1ZSIpO2Z1bmN0aW9uIHYyZShzLGUpe2Zvcih2YXIgdD1zLmxlbmd0aDt0LS07KWlmKGFNYShzW3RdWzBdLGUpKXJldHVybiB0O3JldHVybi0xfWkodjJlLCJhc3NvY0luZGV4T2YiKTtmdW5jdGlvbiBrYXMocyxlKXtyZXR1cm4gcyYmSl9hKGUsYWN0KGUpLHMpfWkoa2FzLCJiYXNlQXNzaWduIik7ZnVuY3Rpb24gSmx0KHMsZSx0LGEscixuLG8pe3ZhciBsO2lmKGEmJihsPW4/YShzLHIsbixvKTphKHMpKSxsIT09dm9pZCAwKXJldHVybiBsO2lmKCF5MmUocykpcmV0dXJuIHM7dmFyIHA9dGN0KHMpO2lmKHApe2lmKGw9T2FzKHMpLCFlKXJldHVybiBBYXMocyxsKX1lbHNle3ZhciBkPXA3KHMpLHU9ZD09Vmx0fHxkPT1rX2E7aWYoR2FzKHMpKXJldHVybiBUYXMocyxlKTtpZihkPT1VbHR8fGQ9PWpsdHx8dSYmIW4pe2lmKEhfYShzKSlyZXR1cm4gbj9zOnt9O2lmKGw9RmFzKHU/e306cyksIWUpcmV0dXJuIE5hcyhzLGthcyhsLHMpKX1lbHNle2lmKCFyaVtkXSlyZXR1cm4gbj9zOnt9O2w9QmFzKHMsZCxKbHQsZSl9fW98fChvPW5ldyBBeCk7dmFyIGM9by5nZXQocyk7aWYoYylyZXR1cm4gYztpZihvLnNldChzLGwpLCFwKXZhciBiPXQ/UmFzKHMpOmFjdChzKTtyZXR1cm4gUnRzKGJ8fHMsZnVuY3Rpb24odix4KXtiJiYoeD12LHY9c1t4XSksUV9hKGwseCxKbHQodixlLHQsYSx4LHMsbykpfSksbH1pKEpsdCwiYmFzZUNsb25lIik7ZnVuY3Rpb24gU2FzKHMpe3JldHVybiB5MmUocyk/VXRzKHMpOnt9fWkoU2FzLCJiYXNlQ3JlYXRlIik7ZnVuY3Rpb24gX2FzKHMsZSx0KXt2YXIgYT1lKHMpO3JldHVybiB0Y3Qocyk/YTpPdHMoYSx0KHMpKX1pKF9hcywiYmFzZUdldEFsbEtleXMiKTtmdW5jdGlvbiBNYXMocyl7cmV0dXJuIGIyZS5jYWxsKHMpfWkoTWFzLCJiYXNlR2V0VGFnIik7ZnVuY3Rpb24gemFzKHMpe2lmKCF5MmUocyl8fGphcyhzKSlyZXR1cm4hMTt2YXIgZT1pTWEocyl8fEhfYShzKT9qdHM6RHRzO3JldHVybiBlLnRlc3QoaDcocykpfWkoemFzLCJiYXNlSXNOYXRpdmUiKTtmdW5jdGlvbiBDYXMocyl7aWYoIXRNYShzKSlyZXR1cm4gWXRzKHMpO3ZhciBlPVtdO2Zvcih2YXIgdCBpbiBPYmplY3QocykpejQuY2FsbChzLHQpJiZ0IT0iY29uc3RydWN0b3IiJiZlLnB1c2godCk7cmV0dXJuIGV9aShDYXMsImJhc2VLZXlzIik7ZnVuY3Rpb24gVGFzKHMsZSl7aWYoZSlyZXR1cm4gcy5zbGljZSgpO3ZhciB0PW5ldyBzLmNvbnN0cnVjdG9yKHMubGVuZ3RoKTtyZXR1cm4gcy5jb3B5KHQpLHR9aShUYXMsImNsb25lQnVmZmVyIik7ZnVuY3Rpb24gZWN0KHMpe3ZhciBlPW5ldyBzLmNvbnN0cnVjdG9yKHMuYnl0ZUxlbmd0aCk7cmV0dXJuIG5ldyBLX2EoZSkuc2V0KG5ldyBLX2EocykpLGV9aShlY3QsImNsb25lQXJyYXlCdWZmZXIiKTtmdW5jdGlvbiAkYXMocyxlKXt2YXIgdD1lP2VjdChzLmJ1ZmZlcik6cy5idWZmZXI7cmV0dXJuIG5ldyBzLmNvbnN0cnVjdG9yKHQscy5ieXRlT2Zmc2V0LHMuYnl0ZUxlbmd0aCl9aSgkYXMsImNsb25lRGF0YVZpZXciKTtmdW5jdGlvbiBEYXMocyxlLHQpe3ZhciBhPWU/dChxX2EocyksITApOnFfYShzKTtyZXR1cm4gQl9hKGEsQXRzLG5ldyBzLmNvbnN0cnVjdG9yKX1pKERhcywiY2xvbmVNYXAiKTtmdW5jdGlvbiBMYXMocyl7dmFyIGU9bmV3IHMuY29uc3RydWN0b3Iocy5zb3VyY2UsJHRzLmV4ZWMocykpO3JldHVybiBlLmxhc3RJbmRleD1zLmxhc3RJbmRleCxlfWkoTGFzLCJjbG9uZVJlZ0V4cCIpO2Z1bmN0aW9uIEVhcyhzLGUsdCl7dmFyIGE9ZT90KGpfYShzKSwhMCk6al9hKHMpO3JldHVybiBCX2EoYSxOdHMsbmV3IHMuY29uc3RydWN0b3IpfWkoRWFzLCJjbG9uZVNldCIpO2Z1bmN0aW9uIFBhcyhzKXtyZXR1cm4gWF9hP09iamVjdChYX2EuY2FsbChzKSk6e319aShQYXMsImNsb25lU3ltYm9sIik7ZnVuY3Rpb24gSWFzKHMsZSl7dmFyIHQ9ZT9lY3Qocy5idWZmZXIpOnMuYnVmZmVyO3JldHVybiBuZXcgcy5jb25zdHJ1Y3Rvcih0LHMuYnl0ZU9mZnNldCxzLmxlbmd0aCl9aShJYXMsImNsb25lVHlwZWRBcnJheSIpO2Z1bmN0aW9uIEFhcyhzLGUpe3ZhciB0PS0xLGE9cy5sZW5ndGg7Zm9yKGV8fChlPUFycmF5KGEpKTsrK3Q8YTspZVt0XT1zW3RdO3JldHVybiBlfWkoQWFzLCJjb3B5QXJyYXkiKTtmdW5jdGlvbiBKX2EocyxlLHQsYSl7dHx8KHQ9e30pO2Zvcih2YXIgcj0tMSxuPWUubGVuZ3RoOysrcjxuOyl7dmFyIG89ZVtyXSxsPWE/YSh0W29dLHNbb10sbyx0LHMpOnZvaWQgMDtRX2EodCxvLGw9PT12b2lkIDA/c1tvXTpsKX1yZXR1cm4gdH1pKEpfYSwiY29weU9iamVjdCIpO2Z1bmN0aW9uIE5hcyhzLGUpe3JldHVybiBKX2EocyxlTWEocyksZSl9aShOYXMsImNvcHlTeW1ib2xzIik7ZnVuY3Rpb24gUmFzKHMpe3JldHVybiBfYXMocyxhY3QsZU1hKX1pKFJhcywiZ2V0QWxsS2V5cyIpO2Z1bmN0aW9uIHgyZShzLGUpe3ZhciB0PXMuX19kYXRhX187cmV0dXJuIHFhcyhlKT90W3R5cGVvZiBlPT0ic3RyaW5nIj8ic3RyaW5nIjoiaGFzaCJdOnQubWFwfWkoeDJlLCJnZXRNYXBEYXRhIik7ZnVuY3Rpb24gTngocyxlKXt2YXIgdD1CdHMocyxlKTtyZXR1cm4gemFzKHQpP3Q6dm9pZCAwfWkoTngsImdldE5hdGl2ZSIpO3ZhciBlTWE9WV9hP0dsdChZX2EsT2JqZWN0KTpaYXMscDc9TWFzOyhZbHQmJnA3KG5ldyBZbHQobmV3IEFycmF5QnVmZmVyKDEpKSkhPW0yZXx8bUomJnA3KG5ldyBtSikhPWgyZXx8Wmx0JiZwNyhabHQucmVzb2x2ZSgpKSE9X19hfHxYbHQmJnA3KG5ldyBYbHQpIT1mMmV8fFFsdCYmcDcobmV3IFFsdCkhPVdsdCkmJihwNz1pKGZ1bmN0aW9uKHMpe3ZhciBlPWIyZS5jYWxsKHMpLHQ9ZT09VWx0P3MuY29uc3RydWN0b3I6dm9pZCAwLGE9dD9oNyh0KTp2b2lkIDA7aWYoYSlzd2l0Y2goYSl7Y2FzZSBadHM6cmV0dXJuIG0yZTtjYXNlIFh0czpyZXR1cm4gaDJlO2Nhc2UgUXRzOnJldHVybiBfX2E7Y2FzZSBKdHM6cmV0dXJuIGYyZTtjYXNlIGVhczpyZXR1cm4gV2x0fXJldHVybiBlfSwiZ2V0VGFnIikpO2Z1bmN0aW9uIE9hcyhzKXt2YXIgZT1zLmxlbmd0aCx0PXMuY29uc3RydWN0b3IoZSk7cmV0dXJuIGUmJnR5cGVvZiBzWzBdPT0ic3RyaW5nIiYmejQuY2FsbChzLCJpbmRleCIpJiYodC5pbmRleD1zLmluZGV4LHQuaW5wdXQ9cy5pbnB1dCksdH1pKE9hcywiaW5pdENsb25lQXJyYXkiKTtmdW5jdGlvbiBGYXMocyl7cmV0dXJuIHR5cGVvZiBzLmNvbnN0cnVjdG9yPT0iZnVuY3Rpb24iJiYhdE1hKHMpP1NhcyhWdHMocykpOnt9fWkoRmFzLCJpbml0Q2xvbmVPYmplY3QiKTtmdW5jdGlvbiBCYXMocyxlLHQsYSl7dmFyIHI9cy5jb25zdHJ1Y3Rvcjtzd2l0Y2goZSl7Y2FzZSBUX2E6cmV0dXJuIGVjdChzKTtjYXNlIHlfYTpjYXNlIHdfYTpyZXR1cm4gbmV3IHIoK3MpO2Nhc2UgbTJlOnJldHVybiAkYXMocyxhKTtjYXNlICRfYTpjYXNlIERfYTpjYXNlIExfYTpjYXNlIEVfYTpjYXNlIFBfYTpjYXNlIElfYTpjYXNlIEFfYTpjYXNlIE5fYTpjYXNlIFJfYTpyZXR1cm4gSWFzKHMsYSk7Y2FzZSBoMmU6cmV0dXJuIERhcyhzLGEsdCk7Y2FzZSBTX2E6Y2FzZSB6X2E6cmV0dXJuIG5ldyByKHMpO2Nhc2UgTV9hOnJldHVybiBMYXMocyk7Y2FzZSBmMmU6cmV0dXJuIEVhcyhzLGEsdCk7Y2FzZSBDX2E6cmV0dXJuIFBhcyhzKX19aShCYXMsImluaXRDbG9uZUJ5VGFnIik7ZnVuY3Rpb24gSGFzKHMsZSl7cmV0dXJuIGU9ZT8/eF9hLCEhZSYmKHR5cGVvZiBzPT0ibnVtYmVyInx8THRzLnRlc3QocykpJiZzPi0xJiZzJTE9PTAmJnM8ZX1pKEhhcywiaXNJbmRleCIpO2Z1bmN0aW9uIHFhcyhzKXt2YXIgZT10eXBlb2YgcztyZXR1cm4gZT09InN0cmluZyJ8fGU9PSJudW1iZXIifHxlPT0ic3ltYm9sInx8ZT09ImJvb2xlYW4iP3MhPT0iX19wcm90b19fIjpzPT09bnVsbH1pKHFhcywiaXNLZXlhYmxlIik7ZnVuY3Rpb24gamFzKHMpe3JldHVybiEhVl9hJiZWX2EgaW4gc31pKGphcywiaXNNYXNrZWQiKTtmdW5jdGlvbiB0TWEocyl7dmFyIGU9cyYmcy5jb25zdHJ1Y3Rvcix0PXR5cGVvZiBlPT0iZnVuY3Rpb24iJiZlLnByb3RvdHlwZXx8ZzJlO3JldHVybiBzPT09dH1pKHRNYSwiaXNQcm90b3R5cGUiKTtmdW5jdGlvbiBoNyhzKXtpZihzIT1udWxsKXt0cnl7cmV0dXJuIFVfYS5jYWxsKHMpfWNhdGNoe310cnl7cmV0dXJuIHMrIiJ9Y2F0Y2h7fX1yZXR1cm4iIn1pKGg3LCJ0b1NvdXJjZSIpO2Z1bmN0aW9uIFZhcyhzKXtyZXR1cm4gSmx0KHMsITAsITApfWkoVmFzLCJjbG9uZURlZXAiKTtmdW5jdGlvbiBhTWEocyxlKXtyZXR1cm4gcz09PWV8fHMhPT1zJiZlIT09ZX1pKGFNYSwiZXEiKTtmdW5jdGlvbiBVYXMocyl7cmV0dXJuIFdhcyhzKSYmejQuY2FsbChzLCJjYWxsZWUiKSYmKCFXdHMuY2FsbChzLCJjYWxsZWUiKXx8YjJlLmNhbGwocyk9PWpsdCl9aShVYXMsImlzQXJndW1lbnRzIik7dmFyIHRjdD1BcnJheS5pc0FycmF5O2Z1bmN0aW9uIHNNYShzKXtyZXR1cm4gcyE9bnVsbCYmS2FzKHMubGVuZ3RoKSYmIWlNYShzKX1pKHNNYSwiaXNBcnJheUxpa2UiKTtmdW5jdGlvbiBXYXMocyl7cmV0dXJuIFlhcyhzKSYmc01hKHMpfWkoV2FzLCJpc0FycmF5TGlrZU9iamVjdCIpO3ZhciBHYXM9S3RzfHxYYXM7ZnVuY3Rpb24gaU1hKHMpe3ZhciBlPXkyZShzKT9iMmUuY2FsbChzKToiIjtyZXR1cm4gZT09Vmx0fHxlPT1rX2F9aShpTWEsImlzRnVuY3Rpb24iKTtmdW5jdGlvbiBLYXMocyl7cmV0dXJuIHR5cGVvZiBzPT0ibnVtYmVyIiYmcz4tMSYmcyUxPT0wJiZzPD14X2F9aShLYXMsImlzTGVuZ3RoIik7ZnVuY3Rpb24geTJlKHMpe3ZhciBlPXR5cGVvZiBzO3JldHVybiEhcyYmKGU9PSJvYmplY3QifHxlPT0iZnVuY3Rpb24iKX1pKHkyZSwiaXNPYmplY3QiKTtmdW5jdGlvbiBZYXMocyl7cmV0dXJuISFzJiZ0eXBlb2Ygcz09Im9iamVjdCJ9aShZYXMsImlzT2JqZWN0TGlrZSIpO2Z1bmN0aW9uIGFjdChzKXtyZXR1cm4gc01hKHMpP3dhcyhzKTpDYXMocyl9aShhY3QsImtleXMiKTtmdW5jdGlvbiBaYXMoKXtyZXR1cm5bXX1pKFphcywic3R1YkFycmF5Iik7ZnVuY3Rpb24gWGFzKCl7cmV0dXJuITF9aShYYXMsInN0dWJGYWxzZSIpLFJ4LmV4cG9ydHM9VmFzfSk7dmFyIHcyZSxvTWEsazJlLHNjdD1nKCgpPT57Yl9hKCk7bzMoKTt3MmU9eG4ock1hKCksMSksb01hPXhuKEJoZSgpLDEpLGsyZT1vTWEuZGVmYXVsdH0pO2Z1bmN0aW9uIEphcyhzKXtyZXR1cm4gdHlwZW9mIEJ1ZmZlcjwidSI/QnVmZmVyLmZyb20ocykudG9TdHJpbmcoImJhc2U2NCIpOmJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZSguLi5zKSl9ZnVuY3Rpb24gZXNzKHMpe2lmKHR5cGVvZiBCdWZmZXI8InUiKXtsZXQgZT1CdWZmZXIuZnJvbShzLCJiYXNlNjQiKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIsZS5ieXRlT2Zmc2V0LGUuYnl0ZUxlbmd0aCl9cmV0dXJuIG5ldyBVaW50OEFycmF5KEFycmF5LmZyb20oYXRvYihzKSkubWFwKGU9PmUuY2hhckNvZGVBdCgwKSkpfWZ1bmN0aW9uIHJjdChzLGUpe3JldHVybiBKU09OLnN0cmluZ2lmeShzLFMyZSxlKX1mdW5jdGlvbiBvY3Qocyl7cmV0dXJuIEpTT04ucGFyc2UocyxuTWEpfWZ1bmN0aW9uIHRzcyhzKXtyZXR1cm4gY01hKHMpJiZzLnR5cGU9PT0iRW5jb2RlZEJ1ZmZlciImJmljdChzLmRhdGEpfWZ1bmN0aW9uIGFzcyhzKXtyZXR1cm4gY01hKHMpJiZzLnR5cGU9PT0iQnVmZmVyIiYmKGxNYShzLmRhdGEpfHxpY3Qocy5kYXRhKSl8fHMgaW5zdGFuY2VvZiBVaW50OEFycmF5fWZ1bmN0aW9uIGxNYShzKXtyZXR1cm4gQXJyYXkuaXNBcnJheShzKX1mdW5jdGlvbiBpY3Qocyl7cmV0dXJuIHR5cGVvZiBzPT0ic3RyaW5nIn1mdW5jdGlvbiBjTWEocyl7cmV0dXJuIHR5cGVvZiBzPT0ib2JqZWN0IiYmcyE9PW51bGx9dmFyIFMyZSxuTWEsZE1hPWcoKCk9PntzY3QoKTtpKEphcywiYmFzZTY0RW5jb2RlIik7aShlc3MsImJhc2U2NERlY29kZSIpO2kocmN0LCJzdHJpbmdpZnkiKTtpKG9jdCwicGFyc2UiKTtTMmU9aSgocyxlKT0+e2lmKGFzcyhlKSl7bGV0IHQ7aWYoImRhdGEiaW4gZSYmbE1hKGUuZGF0YSkpdD1uZXcgVWludDhBcnJheShlLmRhdGEpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpdD1lO2Vsc2UgcmV0dXJuIGU7cmV0dXJue3R5cGU6IkVuY29kZWRCdWZmZXIiLGRhdGE6ImJhc2U2NDoiK0phcyh0KX19cmV0dXJuIGV9LCJyZXBsYWNlciIpLG5NYT1pKChzLGUpPT57aWYodHNzKGUpJiZpY3QoZS5kYXRhKSYmZS5kYXRhLnN0YXJ0c1dpdGgoImJhc2U2NDoiKSl7bGV0IHQ9ZS5kYXRhLnNsaWNlKDcpO3JldHVybiBlc3ModCl9cmV0dXJuIGV9LCJyZXZpdmVyIik7aSh0c3MsImlzRW5jb2RlZEJ1ZmZlciIpO2koYXNzLCJpc0J1ZmZlckxpa2UiKTtpKGxNYSwiaXNBcnJheSIpO2koaWN0LCJpc1N0cmluZyIpO2koY01hLCJpc09iamVjdCIpfSk7dmFyIHQwPXt9O3l0KHQwLHtTbWFydGpzb246KCk9PmxjdCxkZWVwRXF1YWxKc29uTFN0cmluZ3M6KCk9PmRzcyxkZWVwRXF1YWxPYmplY3RzOigpPT51TWEsZm9sZERlYzooKT0+Y3NzLHBhcnNlOigpPT5fMmUscGFyc2VCYXNlNjQ6KCk9PmxzcyxwYXJzZUpzb25MOigpPT5uY3Qsc3RhYmxlT25lV2F5U3RyaW5naWZ5OigpPT5yc3Msc3RyaW5naWZ5OigpPT5mNyxzdHJpbmdpZnlCYXNlNjQ6KCk9Pm5zcyxzdHJpbmdpZnlKc29uTDooKT0+aXNzLHN0cmluZ2lmeVByZXR0eTooKT0+b3NzfSk7dmFyIF8yZSxuY3QsaXNzLHJzcyxmNyxvc3MsbnNzLGxzcyxsY3QsY3NzLHVNYSxkc3MscE1hPWcoKCk9PntzY3QoKTtkTWEoKTtfMmU9b2N0LG5jdD1pKHM9PnMuc3BsaXQoYApgKS5yZWR1Y2UoKGEscik9PntsZXQgbj1yLnRyaW0oKTtyZXR1cm4gbi5sZW5ndGg+MCYmYS5wdXNoKF8yZShuKSksYX0sW10pLCJwYXJzZUpzb25MIiksaXNzPWkocz0+cy5tYXAoZT0+ZjcoZSkpLmpvaW4oYApgKSwic3RyaW5naWZ5SnNvbkwiKSxyc3M9aSgocyxlLHQ9e30pPT57bGV0IGE9bmV3IFdlYWtTZXQscj1pKGw9PntpZihsPT09bnVsbHx8dHlwZW9mIGwhPSJvYmplY3QiKXJldHVybiBsO2xldCBwPVMyZSgiIixsKTtpZihwJiZwLnR5cGU9PT0iRW5jb2RlZEJ1ZmZlciImJnR5cGVvZiBwLmRhdGE9PSJzdHJpbmciKXJldHVybiBwO2lmKGEuaGFzKGwpKXJldHVybiJfX2N5Y2xlX18iO2lmKGEuYWRkKGwpLEFycmF5LmlzQXJyYXkobCkpcmV0dXJuIGwubWFwKHU9PnIodSkpO2xldCBkPXt9O2ZvcihsZXQgdSBvZiBPYmplY3Qua2V5cyhsKSl0cnl7ZFt1XT1yKGxbdV0pfWNhdGNoe2RbdV09Il9fdW5zZXJpYWxpemFibGVfXyJ9cmV0dXJuIGR9LCJzYW5pdGl6ZSIpLG49cihzKSxvPXsuLi50LGN5Y2xlczohMH07aWYoZSYmIW8uY21wKXtsZXQgbD1uZXcgTWFwO2UuZm9yRWFjaCgocCxkKT0+bC5zZXQocCxkKSksby5jbXA9KHAsZCk9PntsZXQgdT1sLmhhcyhwLmtleSk/bC5nZXQocC5rZXkpOk51bWJlci5QT1NJVElWRV9JTkZJTklUWSxjPWwuaGFzKGQua2V5KT9sLmdldChkLmtleSk6TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO3JldHVybiB1IT09Yz91LWM6cC5rZXk8ZC5rZXk/LTE6cC5rZXk+ZC5rZXk/MTowfX1yZXR1cm4gazJlKG4sbyl9LCJzdGFibGVPbmVXYXlTdHJpbmdpZnkiKSxmNz1pKChzLGUsdD17fSk9PntsZXQgYT1yY3Qocyk7cz1KU09OLnBhcnNlKGEpO2xldCByPXsuLi50fTtpZihlJiYhci5jbXApe2xldCBvPW5ldyBNYXA7ZS5mb3JFYWNoKChsLHApPT5vLnNldChsLHApKSxyLmNtcD0obCxwKT0+e2xldCBkPW8uaGFzKGwua2V5KT9vLmdldChsLmtleSk6TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLHU9by5oYXMocC5rZXkpP28uZ2V0KHAua2V5KTpOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7cmV0dXJuIGQhPT11P2QtdTpsLmtleTxwLmtleT8tMTpsLmtleT5wLmtleT8xOjB9fXJldHVybiBrMmUocyxyKX0sInN0cmluZ2lmeSIpLG9zcz1pKHM9PntsZXQgZT1mNyhzKSx0PUpTT04ucGFyc2UoZSk7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQsbnVsbCwyKX0sInN0cmluZ2lmeVByZXR0eSIpLG5zcz1pKCguLi5zKT0+e2xldCBlPWY3KC4uLnMpO3JldHVybiBhci5iYXNlNjQuZW5jb2RlVXJpKGUpfSwic3RyaW5naWZ5QmFzZTY0IiksbHNzPWkocz0+e2xldCBlPWFyLmJhc2U2NCxhPShlLmRlY29kZVVyaXx8ZS5kZWNvZGUpKHMpO3JldHVybiBfMmUoYSl9LCJwYXJzZUJhc2U2NCIpLGxjdD1jbGFzcyBze3N0YXRpY3tpKHRoaXMsIlNtYXJ0anNvbiIpfXN0YXRpYyBlbmZvbGRGcm9tT2JqZWN0KGUpe2xldCB0PW5ldyB0aGlzLGE9dC5zYXZlYWJsZVByb3BlcnRpZXN8fFtdO2ZvcihsZXQgciBpbiBlKWEuaW5kZXhPZihyKSE9PS0xJiYodFtyXT1lW3JdKTtyZXR1cm4gdH1zdGF0aWMgZW5mb2xkRnJvbUpzb24oZSl7bGV0IHQ9XzJlKGUpO3JldHVybiB0aGlzLmVuZm9sZEZyb21PYmplY3QodCl9Zm9sZFRvT2JqZWN0KCl7bGV0IGU9bmV3IFNldDtyZXR1cm4gZS5hZGQodGhpcyksdGhpcy5mb2xkVG9PYmplY3RJbnRlcm5hbChlKX1mb2xkVG9PYmplY3RJbnRlcm5hbChlKXtsZXQgdD17fSxhPWkobj0+e2lmKG4gaW5zdGFuY2VvZiBzKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgRXJyb3IoImN5Y2xlIGRldGVjdGVkIik7cmV0dXJuIGUuYWRkKG4pLG4uZm9sZFRvT2JqZWN0SW50ZXJuYWwoZSl9cmV0dXJuIEFycmF5LmlzQXJyYXkobik/bi5tYXAobz0+YShvKSk6dzJlLmRlZmF1bHQobil9LCJmb2xkVmFsdWUiKSxyPXRoaXMuc2F2ZWFibGVQcm9wZXJ0aWVzfHxbXTtmb3IobGV0IG4gb2Ygcil7bGV0IG89dGhpc1tuXTt0W25dPWEobyl9cmV0dXJuIHR9Zm9sZFRvSnNvbigpe2xldCBlPXRoaXMuZm9sZFRvT2JqZWN0KCk7cmV0dXJuIGY3KGUpfX0sY3NzPWkoKCk9PihzLGUpPT57cy5zYXZlYWJsZVByb3BlcnRpZXN8fChzLnNhdmVhYmxlUHJvcGVydGllcz1bXSkscy5zYXZlYWJsZVByb3BlcnRpZXMucHVzaChlKX0sImZvbGREZWMiKSx1TWE9aSgocyxlKT0+e2xldCB0PWY3KHMpLGE9ZjcoZSk7cmV0dXJuIHQ9PT1hfSwiZGVlcEVxdWFsT2JqZWN0cyIpLGRzcz1pKChzLGUpPT57bGV0IHQ9bmN0KHMpLGE9bmN0KGUpO3JldHVybiB1TWEodCxhKX0sImRlZXBFcXVhbEpzb25MU3RyaW5ncyIpfSk7dmFyIGhNYT1nKCgpPT57cHNlKCk7VTQoKTtoX2EoKTtkMCgpO3BNYSgpO2lvKCk7WjIoKTtvMygpO0c2ZSgpfSk7ZnVuY3Rpb24gcHNzKHMpe3JldHVybntwZWVyOnMsYXN5bmMgZ2V0VGFnQnlJZChlKXtpZighcy50YWdzLmhhcyhlKSlyZXR1cm47bGV0IHQ9cy5kYXRhLmdldChgJHtjY3R9JHtlfWApO3JldHVybntpZDplLHBheWxvYWQ6dH19fX12YXIgY2N0LGRjdCxmTWE9ZygoKT0+e2hNYSgpO2NjdD0iX190eXBlZHNvY2tldF90YWdfXyI7aShwc3MsIndyYXBTbWFydFNlcnZlUGVlciIpO2RjdD1jbGFzcyBze3N0YXRpY3tpKHRoaXMsIlR5cGVkU29ja2V0Iil9c3RhdGljIGFzeW5jIGNyZWF0ZUNsaWVudChlLHQsYT17fSl7bGV0IG49ey4uLnthdXRvUmVjb25uZWN0OiEwLG1heFJldHJpZXM6MTAwLGluaXRpYWxCYWNrb2ZmTXM6MWUzLG1heEJhY2tvZmZNczo2ZTR9LC4uLmF9LG89bmV3IHMoImNsaWVudCIsZSk7cmV0dXJuIG8uY2xpZW50T3B0aW9ucz1uLG8uc2VydmVyVXJsPXQsby5jdXJyZW50QmFja29mZj1uLmluaXRpYWxCYWNrb2ZmTXMsYXdhaXQgby5jb25uZWN0KCksb31zdGF0aWN7dGhpcy51c2VXaW5kb3dMb2NhdGlvbk9yaWdpblVybD0oKT0+UjEuU21hcnR1cmwuY3JlYXRlRnJvbVVybChnbG9iYWxUaGlzLmxvY2F0aW9uLm9yaWdpbikudG9TdHJpbmcoKX1zdGF0aWMgZnJvbVNtYXJ0U2VydmUoZSx0KXtsZXQgYT1uZXcgTWFwO3MucmVnaXN0ZXJUYWdIYW5kbGVycyh0KTtsZXQgcj1uZXcgcygic2VydmVyIix0KTtyZXR1cm4gci5zbWFydFNlcnZlUmVmPWUsci5zbWFydFNlcnZlQ29ubmVjdGlvbldyYXBwZXJzPWEscn1zdGF0aWMgcmVnaXN0ZXJUYWdIYW5kbGVycyhlKXtlLmFkZFR5cGVkSGFuZGxlcihuZXcgZ2wuVHlwZWRIYW5kbGVyKCJfX3R5cGVkc29ja2V0X3NldFRhZyIsYXN5bmModCxhKT0+e2xldCByPWE/LmxvY2FsRGF0YT8ucGVlcjtyZXR1cm4gcj8oci50YWdzLmFkZCh0Lm5hbWUpLHIuZGF0YS5zZXQoYCR7Y2N0fSR7dC5uYW1lfWAsdC5wYXlsb2FkKSx7c3VjY2VzczohMH0pOihjb25zb2xlLndhcm4oInNldFRhZzogTm8gcGVlciBmb3VuZCBpbiByZXF1ZXN0IGNvbnRleHQiKSx7c3VjY2VzczohMX0pfSkpLGUuYWRkVHlwZWRIYW5kbGVyKG5ldyBnbC5UeXBlZEhhbmRsZXIoIl9fdHlwZWRzb2NrZXRfcmVtb3ZlVGFnIixhc3luYyh0LGEpPT57bGV0IHI9YT8ubG9jYWxEYXRhPy5wZWVyO3JldHVybiByPyhyLnRhZ3MuZGVsZXRlKHQubmFtZSksci5kYXRhLmRlbGV0ZShgJHtjY3R9JHt0Lm5hbWV9YCkse3N1Y2Nlc3M6ITB9KTooY29uc29sZS53YXJuKCJyZW1vdmVUYWc6IE5vIHBlZXIgZm91bmQgaW4gcmVxdWVzdCBjb250ZXh0Iikse3N1Y2Nlc3M6ITF9KX0pKX1jb25zdHJ1Y3RvcihlLHQpe3RoaXMuc3RhdHVzU3ViamVjdD1uZXcgbHMucnhqcy5TdWJqZWN0LHRoaXMuY29ubmVjdGlvblN0YXR1cz0ibmV3Iix0aGlzLndlYnNvY2tldD1udWxsLHRoaXMuY2xpZW50T3B0aW9ucz1udWxsLHRoaXMuc2VydmVyVXJsPSIiLHRoaXMucmV0cnlDb3VudD0wLHRoaXMuY3VycmVudEJhY2tvZmY9MWUzLHRoaXMucGVuZGluZ1JlcXVlc3RzPW5ldyBNYXAsdGhpcy5zbWFydFNlcnZlUmVmPW51bGwsdGhpcy5zbWFydFNlcnZlQ29ubmVjdGlvbldyYXBwZXJzPW5ldyBNYXAsdGhpcy5zaWRlPWUsdGhpcy50eXBlZHJvdXRlcj10fWFzeW5jIGNvbm5lY3QoKXtsZXQgZT1tdC5kZWZlcigpO3RoaXMudXBkYXRlU3RhdHVzKCJjb25uZWN0aW5nIik7bGV0IHQ9dGhpcy50b1dlYlNvY2tldFVybCh0aGlzLnNlcnZlclVybCk7Y29uc29sZS5sb2coYFR5cGVkU29ja2V0IGNvbm5lY3RpbmcgdG8gJHt0fS4uLmApLHRoaXMud2Vic29ja2V0PW5ldyBXZWJTb2NrZXQodCk7bGV0IGE9c2V0VGltZW91dCgoKT0+e3RoaXMuY29ubmVjdGlvblN0YXR1cyE9PSJjb25uZWN0ZWQiJiYoY29uc29sZS53YXJuKCJUeXBlZFNvY2tldCBjb25uZWN0aW9uIHRpbWVvdXQiKSx0aGlzLndlYnNvY2tldD8uY2xvc2UoKSxlLnJlamVjdChuZXcgRXJyb3IoIkNvbm5lY3Rpb24gdGltZW91dCIpKSl9LDFlNCk7dGhpcy53ZWJzb2NrZXQub25vcGVuPSgpPT57Y2xlYXJUaW1lb3V0KGEpLGNvbnNvbGUubG9nKCJUeXBlZFNvY2tldCBjb25uZWN0ZWQhIiksdGhpcy51cGRhdGVTdGF0dXMoImNvbm5lY3RlZCIpLHRoaXMucmV0cnlDb3VudD0wLHRoaXMuY3VycmVudEJhY2tvZmY9dGhpcy5jbGllbnRPcHRpb25zPy5pbml0aWFsQmFja29mZk1zPz8xZTMsZS5yZXNvbHZlKCl9LHRoaXMud2Vic29ja2V0Lm9ubWVzc2FnZT1hc3luYyByPT57YXdhaXQgdGhpcy5oYW5kbGVNZXNzYWdlKHIuZGF0YSl9LHRoaXMud2Vic29ja2V0Lm9uY2xvc2U9KCk9PntjbGVhclRpbWVvdXQoYSksdGhpcy5oYW5kbGVEaXNjb25uZWN0KCl9LHRoaXMud2Vic29ja2V0Lm9uZXJyb3I9cj0+e2NvbnNvbGUuZXJyb3IoIlR5cGVkU29ja2V0IFdlYlNvY2tldCBlcnJvcjoiLHIpfTt0cnl7YXdhaXQgZS5wcm9taXNlfWNhdGNoKHIpe2lmKGNsZWFyVGltZW91dChhKSx0aGlzLmNsaWVudE9wdGlvbnM/LmF1dG9SZWNvbm5lY3QpYXdhaXQgdGhpcy5zY2hlZHVsZVJlY29ubmVjdCgpO2Vsc2UgdGhyb3cgcn19dG9XZWJTb2NrZXRVcmwoZSl7bGV0IHQ9bmV3IFVSTChlKTtyZXR1cm5gJHt0LnByb3RvY29sPT09Imh0dHBzOiI/IndzczoiOiJ3czoifS8vJHt0Lmhvc3R9JHt0LnBhdGhuYW1lfWB9YXN5bmMgaGFuZGxlTWVzc2FnZShlKXt0cnl7bGV0IHQ9dHlwZW9mIGU9PSJzdHJpbmciP2U6bmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGUpLGE9dDAucGFyc2UodCk7aWYoYS5jb3JyZWxhdGlvbj8uaWQmJnRoaXMucGVuZGluZ1JlcXVlc3RzLmhhcyhhLmNvcnJlbGF0aW9uLmlkKSl7bGV0IG49dGhpcy5wZW5kaW5nUmVxdWVzdHMuZ2V0KGEuY29ycmVsYXRpb24uaWQpO3RoaXMucGVuZGluZ1JlcXVlc3RzLmRlbGV0ZShhLmNvcnJlbGF0aW9uLmlkKSxuLnJlc29sdmUoYSk7cmV0dXJufWxldCByPWF3YWl0IHRoaXMudHlwZWRyb3V0ZXIucm91dGVBbmRBZGRSZXNwb25zZShhKTtyJiZ0aGlzLndlYnNvY2tldD8ucmVhZHlTdGF0ZT09PVdlYlNvY2tldC5PUEVOJiZ0aGlzLndlYnNvY2tldC5zZW5kKHQwLnN0cmluZ2lmeShyKSl9Y2F0Y2godCl7Y29uc29sZS5lcnJvcigiVHlwZWRTb2NrZXQgZmFpbGVkIHRvIHByb2Nlc3MgbWVzc2FnZToiLHQpfX1oYW5kbGVEaXNjb25uZWN0KCl7aWYodGhpcy5jb25uZWN0aW9uU3RhdHVzIT09ImRpc2Nvbm5lY3RlZCIpe3RoaXMudXBkYXRlU3RhdHVzKCJkaXNjb25uZWN0ZWQiKTtmb3IobGV0W2UsdF1vZiB0aGlzLnBlbmRpbmdSZXF1ZXN0cyl0LnJlamVjdChuZXcgRXJyb3IoIlR5cGVkU29ja2V0IGRpc2Nvbm5lY3RlZCIpKTt0aGlzLnBlbmRpbmdSZXF1ZXN0cy5jbGVhcigpLHRoaXMuY2xpZW50T3B0aW9ucz8uYXV0b1JlY29ubmVjdCYmdGhpcy5yZXRyeUNvdW50PHRoaXMuY2xpZW50T3B0aW9ucy5tYXhSZXRyaWVzJiZ0aGlzLnNjaGVkdWxlUmVjb25uZWN0KCl9fWFzeW5jIHNjaGVkdWxlUmVjb25uZWN0KCl7aWYoIXRoaXMuY2xpZW50T3B0aW9ucylyZXR1cm47dGhpcy51cGRhdGVTdGF0dXMoInJlY29ubmVjdGluZyIpLHRoaXMucmV0cnlDb3VudCsrO2xldCBlPXRoaXMuY3VycmVudEJhY2tvZmYqLjIqKE1hdGgucmFuZG9tKCkqMi0xKSx0PU1hdGgubWluKHRoaXMuY3VycmVudEJhY2tvZmYrZSx0aGlzLmNsaWVudE9wdGlvbnMubWF4QmFja29mZk1zKTtjb25zb2xlLmxvZyhgVHlwZWRTb2NrZXQgcmVjb25uZWN0aW5nIGluICR7TWF0aC5yb3VuZCh0KX1tcyAoYXR0ZW1wdCAke3RoaXMucmV0cnlDb3VudH0vJHt0aGlzLmNsaWVudE9wdGlvbnMubWF4UmV0cmllc30pYCksYXdhaXQgWHQuZGVsYXlGb3IodCksdGhpcy5jdXJyZW50QmFja29mZj1NYXRoLm1pbih0aGlzLmN1cnJlbnRCYWNrb2ZmKjIsdGhpcy5jbGllbnRPcHRpb25zLm1heEJhY2tvZmZNcyk7dHJ5e2F3YWl0IHRoaXMuY29ubmVjdCgpfWNhdGNoKGEpe2NvbnNvbGUuZXJyb3IoIlR5cGVkU29ja2V0IHJlY29ubmVjdGlvbiBmYWlsZWQ6IixhKX19dXBkYXRlU3RhdHVzKGUpe3RoaXMuY29ubmVjdGlvblN0YXR1cyE9PWUmJih0aGlzLmNvbm5lY3Rpb25TdGF0dXM9ZSx0aGlzLnN0YXR1c1N1YmplY3QubmV4dChlKSl9YXN5bmMgc2VuZFJlcXVlc3QoZSl7aWYoIXRoaXMud2Vic29ja2V0fHx0aGlzLndlYnNvY2tldC5yZWFkeVN0YXRlIT09V2ViU29ja2V0Lk9QRU4pdGhyb3cgbmV3IEVycm9yKCJXZWJTb2NrZXQgbm90IGNvbm5lY3RlZCIpO2UuY29ycmVsYXRpb258fD17aWQ6YXIuY3JlYXRlLmNyZWF0ZUNyeXB0b1JhbmRvbVN0cmluZygpLHBoYXNlOiJyZXF1ZXN0In07bGV0IHQ9ZS5jb3JyZWxhdGlvbi5pZDtyZXR1cm4gbmV3IFByb21pc2UoKGEscik9PntsZXQgbj1zZXRUaW1lb3V0KCgpPT57dGhpcy5wZW5kaW5nUmVxdWVzdHMuZGVsZXRlKHQpLHIobmV3IEVycm9yKCJSZXF1ZXN0IHRpbWVvdXQiKSl9LDNlNCk7dGhpcy5wZW5kaW5nUmVxdWVzdHMuc2V0KHQse3Jlc29sdmU6aShvPT57Y2xlYXJUaW1lb3V0KG4pLGEobyl9LCJyZXNvbHZlIikscmVqZWN0Omkobz0+e2NsZWFyVGltZW91dChuKSxyKG8pfSwicmVqZWN0Iil9KSx0aGlzLndlYnNvY2tldC5zZW5kKHQwLnN0cmluZ2lmeShlKSl9KX1jcmVhdGVUeXBlZFJlcXVlc3QoZSx0KXtsZXQgYT1pKGFzeW5jIHI9PntpZih0aGlzLnNpZGU9PT0iY2xpZW50IilyZXR1cm4gdGhpcy5zZW5kUmVxdWVzdChyKTtpZighdGhpcy5zbWFydFNlcnZlUmVmKXRocm93IG5ldyBFcnJvcigiU2VydmVyIG5vdCBpbml0aWFsaXplZCIpO2xldCBuPXQ7aWYoIW4pe2xldCBsPXRoaXMuc21hcnRTZXJ2ZVJlZi5nZXRXZWJTb2NrZXRDb25uZWN0aW9ucygpO2lmKGwubGVuZ3RoPT09MSl7bGV0IHA9bFswXTtuPXRoaXMuZ2V0T3JDcmVhdGVXcmFwcGVyKHApfWVsc2UgdGhyb3cgbC5sZW5ndGg9PT0wP25ldyBFcnJvcigiTm8gV2ViU29ja2V0IGNvbm5lY3Rpb25zIGF2YWlsYWJsZSIpOm5ldyBFcnJvcigiTXVsdGlwbGUgY29ubmVjdGlvbnMgYXZhaWxhYmxlIC0gc3BlY2lmeSB0YXJnZXRDb25uZWN0aW9uIil9bGV0IG89YXdhaXQgdGhpcy50eXBlZHJvdXRlci5maXJlRXZlbnRJbnRlcmVzdE1hcC5hZGRJbnRlcmVzdChyLmNvcnJlbGF0aW9uLmlkLHIpO3JldHVybiBuLnBlZXIuc2VuZCh0MC5zdHJpbmdpZnkocikpLGF3YWl0IG8uaW50ZXJlc3RGdWxsZmlsbGVkfSwicG9zdE1ldGhvZCIpO3JldHVybiBuZXcgZ2wuVHlwZWRSZXF1ZXN0KG5ldyBnbC5UeXBlZFRhcmdldCh7cG9zdE1ldGhvZDphfSksZSl9Z2V0U3RhdHVzKCl7cmV0dXJuIHRoaXMuY29ubmVjdGlvblN0YXR1c31hc3luYyBzdG9wKCl7dGhpcy5zaWRlPT09ImNsaWVudCI/KHRoaXMuY2xpZW50T3B0aW9ucyYmKHRoaXMuY2xpZW50T3B0aW9ucy5hdXRvUmVjb25uZWN0PSExKSx0aGlzLndlYnNvY2tldCYmKHRoaXMud2Vic29ja2V0LmNsb3NlKCksdGhpcy53ZWJzb2NrZXQ9bnVsbCksdGhpcy5wZW5kaW5nUmVxdWVzdHMuY2xlYXIoKSk6dGhpcy5zbWFydFNlcnZlQ29ubmVjdGlvbldyYXBwZXJzLmNsZWFyKCl9YXN5bmMgc2V0VGFnKGUsdCl7aWYodGhpcy5zaWRlIT09ImNsaWVudCIpdGhyb3cgbmV3IEVycm9yKCJzZXRUYWcgaXMgb25seSBhdmFpbGFibGUgb24gY2xpZW50cyIpO2lmKCEoYXdhaXQgdGhpcy5jcmVhdGVUeXBlZFJlcXVlc3QoIl9fdHlwZWRzb2NrZXRfc2V0VGFnIikuZmlyZSh7bmFtZTplLHBheWxvYWQ6dH0pKS5zdWNjZXNzKXRocm93IG5ldyBFcnJvcigiRmFpbGVkIHRvIHNldCB0YWcgb24gc2VydmVyIil9YXN5bmMgcmVtb3ZlVGFnKGUpe2lmKHRoaXMuc2lkZSE9PSJjbGllbnQiKXRocm93IG5ldyBFcnJvcigicmVtb3ZlVGFnIGlzIG9ubHkgYXZhaWxhYmxlIG9uIGNsaWVudHMiKTtpZighKGF3YWl0IHRoaXMuY3JlYXRlVHlwZWRSZXF1ZXN0KCJfX3R5cGVkc29ja2V0X3JlbW92ZVRhZyIpLmZpcmUoe25hbWU6ZX0pKS5zdWNjZXNzKXRocm93IG5ldyBFcnJvcigiRmFpbGVkIHRvIHJlbW92ZSB0YWcgb24gc2VydmVyIil9Z2V0T3JDcmVhdGVXcmFwcGVyKGUpe2xldCB0PXRoaXMuc21hcnRTZXJ2ZUNvbm5lY3Rpb25XcmFwcGVycy5nZXQoZS5pZCk7cmV0dXJuIHR8fCh0PXBzcyhlKSx0aGlzLnNtYXJ0U2VydmVDb25uZWN0aW9uV3JhcHBlcnMuc2V0KGUuaWQsdCkpLHR9YXN5bmMgZmluZEFsbFRhcmdldENvbm5lY3Rpb25zKGUpe2lmKHRoaXMuc2lkZSE9PSJzZXJ2ZXIifHwhdGhpcy5zbWFydFNlcnZlUmVmKXRocm93IG5ldyBFcnJvcigiZmluZEFsbFRhcmdldENvbm5lY3Rpb25zIGlzIG9ubHkgYXZhaWxhYmxlIG9uIHNlcnZlcnMiKTtsZXQgdD1bXTtmb3IobGV0IGEgb2YgdGhpcy5zbWFydFNlcnZlUmVmLmdldFdlYlNvY2tldENvbm5lY3Rpb25zKCkpe2xldCByPXRoaXMuZ2V0T3JDcmVhdGVXcmFwcGVyKGEpO2F3YWl0IGUocikmJnQucHVzaChyKX1yZXR1cm4gdH1hc3luYyBmaW5kVGFyZ2V0Q29ubmVjdGlvbihlKXtyZXR1cm4oYXdhaXQgdGhpcy5maW5kQWxsVGFyZ2V0Q29ubmVjdGlvbnMoZSkpWzBdfWFzeW5jIGZpbmRBbGxUYXJnZXRDb25uZWN0aW9uc0J5VGFnKGUsdCl7aWYodGhpcy5zaWRlIT09InNlcnZlciJ8fCF0aGlzLnNtYXJ0U2VydmVSZWYpdGhyb3cgbmV3IEVycm9yKCJmaW5kQWxsVGFyZ2V0Q29ubmVjdGlvbnNCeVRhZyBpcyBvbmx5IGF2YWlsYWJsZSBvbiBzZXJ2ZXJzIik7bGV0IGE9dGhpcy5zbWFydFNlcnZlUmVmLmdldFdlYlNvY2tldENvbm5lY3Rpb25zQnlUYWcoZSkscj1bXTtmb3IobGV0IG4gb2YgYSl7bGV0IG89dGhpcy5nZXRPckNyZWF0ZVdyYXBwZXIobik7aWYodCE9PXZvaWQgMCl7bGV0IGw9YXdhaXQgby5nZXRUYWdCeUlkKGUpO2lmKHQwLnN0cmluZ2lmeShsPy5wYXlsb2FkKSE9PXQwLnN0cmluZ2lmeSh0KSljb250aW51ZX1yLnB1c2gobyl9cmV0dXJuIHJ9YXN5bmMgZmluZFRhcmdldENvbm5lY3Rpb25CeVRhZyhlLHQpe3JldHVybihhd2FpdCB0aGlzLmZpbmRBbGxUYXJnZXRDb25uZWN0aW9uc0J5VGFnKGUsdCkpWzBdfX19KTt2YXIgUXU9e307eXQoUXUse1R5cGVkU29ja2V0OigpPT5kY3R9KTt2YXIgbU1hPWcoKCk9PntmTWEoKX0pO3ZhciBndCxsbD1nKCgpPT57cGUoKTtON2EoKTtvX2EoKTttTWEoKTtndD1sdH0pO3ZhciB5byxnTWE9ZygoKT0+e3BlKCk7eW89SmAKICA6aG9zdCB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1hcmdpbjogYXV0bzsKICAgIG1heC13aWR0aDogMTI4MHB4OwogICAgcGFkZGluZzogMTZweCAxNnB4OwogIH0KYH0pO3ZhciBiTWEsdWN0LGhzcyx2Six2TWE9ZygoKT0+e3BlKCk7Yk1hPVtuZSgib2Itc2VjdGlvbmhlYWRpbmciKV07dko9Y2xhc3MgZXh0ZW5kcyhoc3M9d2Upe3N0YXRpY3tpKHRoaXMsIk9iU2VjdGlvbkhlYWRpbmciKX1zdGF0aWMgc3R5bGVzPVtoLmRlZmF1bHRTdHlsZXMsSmAKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgIH0KICAgICAgLmhlYWRpbmcgewogICAgICAgIGZvbnQtZmFtaWx5OiAnQ2FsIFNhbnMnLCAnSW50ZXInLCBzYW5zLXNlcmlmOwogICAgICAgIGZvbnQtc2l6ZTogMjhweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzExMSIsIiNmZmYiKX07CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KICAgIGBdO3JlbmRlcigpe3JldHVybiB3YAogICAgICA8aDEgY2xhc3M9ImhlYWRpbmciPgogICAgICAgIDxzbG90Pjwvc2xvdD4KICAgICAgPC9oMT4KICAgIGB9fTt1Y3Q9UmkoaHNzKSx2Sj1SdCh1Y3QsMCwiT2JTZWN0aW9uSGVhZGluZyIsYk1hLHZKKSxpdCh1Y3QsMSx2Sil9KTt2YXIgQjI9ZygoKT0+e2dNYSgpO3ZNYSgpfSk7dmFyIHFvPWcoKCk9PntVNCgpfSk7dmFyIHhNYT1nKCgpPT57fSk7dmFyIHlNYT1nKCgpPT57fSk7dmFyIHdNYT1nKCgpPT57fSk7dmFyIGtNYT1nKCgpPT57fSk7dmFyIFNNYT1nKCgpPT57fSk7dmFyIF9NYT1nKCgpPT57fSk7dmFyIGZzcyxNTWE9ZygoKT0+e2Zzcz17c3RhbmRhcmQ6e2hvdXJseTowLGRhaWx5Ojcsd2Vla2x5OjQsbW9udGhseToxMn0sZnJlcXVlbnQ6e2hvdXJseToyNCxkYWlseTo3LHdlZWtseTo0LG1vbnRobHk6MTJ9LG1pbmltYWw6e2hvdXJseTowLGRhaWx5OjMsd2Vla2x5OjIsbW9udGhseTo2fSxsb25ndGVybTp7aG91cmx5OjAsZGFpbHk6MTQsd2Vla2x5OjgsbW9udGhseToyNH19fSk7dmFyIHpNYT1nKCgpPT57fSk7dmFyIENNYT1nKCgpPT57fSk7dmFyIHBjdD17fTt5dChwY3Qse1JFVEVOVElPTl9QUkVTRVRTOigpPT5mc3N9KTt2YXIgam89ZygoKT0+e3hNYSgpO3lNYSgpO3dNYSgpO2tNYSgpO1NNYSgpO19NYSgpO01NYSgpO3pNYSgpO0NNYSgpfSk7dmFyIFRNYT1nKCgpPT57cW8oKTtqbygpfSk7dmFyICRNYT1nKCgpPT57cW8oKTtqbygpfSk7dmFyIERNYT1nKCgpPT57cW8oKTtqbygpfSk7dmFyIExNYT1nKCgpPT57cW8oKTtqbygpfSk7dmFyIEVNYT1nKCgpPT57cW8oKTtqbygpfSk7dmFyIFBNYT1nKCgpPT57cW8oKTtqbygpfSk7dmFyIElNYT1nKCgpPT57cW8oKTtqbygpfSk7dmFyIEFNYT1nKCgpPT57cW8oKTtqbygpfSk7dmFyIE5NYT1nKCgpPT57cW8oKTtqbygpfSk7dmFyIFJNYT1nKCgpPT57cW8oKTtqbygpfSk7dmFyIE9NYT1nKCgpPT57cW8oKTtqbygpfSk7dmFyIEZNYT1nKCgpPT57cW8oKTtqbygpfSk7dmFyIEJNYT1nKCgpPT57cW8oKTtqbygpfSk7dmFyIEhNYT1nKCgpPT57cW8oKTtqbygpfSk7dmFyIHFNYT1nKCgpPT57cW8oKTtqbygpfSk7dmFyIGpNYT17fTt2YXIgVk1hPWcoKCk9PntUTWEoKTskTWEoKTtETWEoKTtMTWEoKTtFTWEoKTtQTWEoKTtJTWEoKTtBTWEoKTtOTWEoKTtSTWEoKTtPTWEoKTtGTWEoKTtCTWEoKTtITWEoKTtxTWEoKX0pO3ZhciBGeD1nKCgpPT57cW8oKTtqbygpO1ZNYSgpfSk7YXN5bmMgZnVuY3Rpb24gZ3NzKCl7aWYoIW03KXRyeXttNz1hd2FpdCBRdS5UeXBlZFNvY2tldC5jcmVhdGVDbGllbnQoeEosUXUuVHlwZWRTb2NrZXQudXNlV2luZG93TG9jYXRpb25PcmlnaW5VcmwoKSksYXdhaXQgbTcuc2V0VGFnKCJyb2xlIiwib3BzX2Rhc2hib2FyZCIpLGNvbnNvbGUubG9nKCJUeXBlZFNvY2tldCBkYXNoYm9hcmQgY29ubmVjdGlvbiBlc3RhYmxpc2hlZCIpfWNhdGNoKHMpe2NvbnNvbGUuZXJyb3IoIlR5cGVkU29ja2V0IGNvbm5lY3Rpb24gZmFpbGVkOiIscyksbTc9bnVsbH19YXN5bmMgZnVuY3Rpb24gYnNzKCl7aWYobTcpe3RyeXthd2FpdCBtNy5kaXNjb25uZWN0KCl9Y2F0Y2h7fW03PW51bGx9fXZhciBlcCxRaSxhMCxZdCxaYSxxMixIMixzbyxjbCxtYyxpYSxHTWEsTTJlLEh4LHoyZSxLTWEsZmN0LFlNYSxaTWEsWE1hLFFNYSxKTWEsZXphLEMyZSxtY3QsZ2N0LFQyZSx0emEsYmN0LHlKLHdKLGF6YSxzemEsdmN0LHhjdCx5Y3QsJDJlLGl6YSxEMmUscnphLG96YSxrZG4sbnphLFNkbixsemEsX2RuLGN6YSx3Y3Qsa0osZHphLHV6YSxwemEsaHphLE1kbix6ZG4sQ2RuLEJ4LG1zcyxoY3QsbTcseEosVU1hLFdNYSxmemEsbXphLEwyZSxnemEsYTE9Zyhhc3luYygpPT57bGwoKTtGeCgpO2VwPW5ldyBndC5wbHVnaW5zLnNtYXJ0c3RhdGUuU21hcnRzdGF0ZSxRaT1hd2FpdCBlcC5nZXRTdGF0ZVBhcnQoImxvZ2luIix7aWRlbnRpdHk6bnVsbCxpc0xvZ2dlZEluOiExfSwicGVyc2lzdGVudCIpLGEwPWF3YWl0IGVwLmdldFN0YXRlUGFydCgic3lzdGVtIix7c3RhdHVzOm51bGx9LCJzb2Z0IiksWXQ9YXdhaXQgZXAuZ2V0U3RhdGVQYXJ0KCJzZXJ2aWNlcyIse3NlcnZpY2VzOltdLGN1cnJlbnRTZXJ2aWNlOm51bGwsY3VycmVudFNlcnZpY2VMb2dzOltdLGN1cnJlbnRTZXJ2aWNlU3RhdHM6bnVsbCxwbGF0Zm9ybVNlcnZpY2VzOltdLGN1cnJlbnRQbGF0Zm9ybVNlcnZpY2U6bnVsbCxjdXJyZW50UGxhdGZvcm1TZXJ2aWNlU3RhdHM6bnVsbCxjdXJyZW50UGxhdGZvcm1TZXJ2aWNlTG9nczpbXX0sInNvZnQiKSxaYT1hd2FpdCBlcC5nZXRTdGF0ZVBhcnQoIm5ldHdvcmsiLHt0YXJnZXRzOltdLHN0YXRzOm51bGwsdHJhZmZpY1N0YXRzOm51bGwsZG5zUmVjb3JkczpbXSxkb21haW5zOltdLGdhdGV3YXlEb21haW5zOltdLGdhdGV3YXlEbnNSZWNvcmRzOltdLGNlcnRpZmljYXRlczpbXX0sInNvZnQiKSxxMj1hd2FpdCBlcC5nZXRTdGF0ZVBhcnQoInJlZ2lzdHJpZXMiLHt0b2tlbnM6W10scmVnaXN0cnlTdGF0dXM6bnVsbH0sInNvZnQiKSxIMj1hd2FpdCBlcC5nZXRTdGF0ZVBhcnQoImJhY2t1cHMiLHtiYWNrdXBzOltdLHNjaGVkdWxlczpbXX0sInNvZnQiKSxzbz1hd2FpdCBlcC5nZXRTdGF0ZVBhcnQoInNldHRpbmdzIix7c2V0dGluZ3M6bnVsbCxiYWNrdXBQYXNzd29yZENvbmZpZ3VyZWQ6ITEsbWFuYWdlZERjUm91dGVyU3RhdHVzOm51bGx9LCJzb2Z0IiksY2w9YXdhaXQgZXAuZ2V0U3RhdGVQYXJ0KCJhcHBTdG9yZSIse2FwcHM6W10sdXBncmFkZWFibGVTZXJ2aWNlczpbXSx1cGdyYWRlT3BlcmF0aW9uczpbXX0sInNvZnQiKSxtYz1hd2FpdCBlcC5nZXRTdGF0ZVBhcnQoInVpIix7YWN0aXZlVmlldzoiZGFzaGJvYXJkIixhY3RpdmVTdWJ2aWV3Om51bGwsYXV0b1JlZnJlc2g6ITAscmVmcmVzaEludGVydmFsOjNlNH0pLGlhPWkoKCk9Pih7aWRlbnRpdHk6UWkuZ2V0U3RhdGUoKS5pZGVudGl0eX0pLCJnZXRBY3Rpb25Db250ZXh0IiksR01hPVFpLmNyZWF0ZUFjdGlvbihhc3luYyhzLGUpPT57dHJ5e3JldHVybntpZGVudGl0eTooYXdhaXQgbmV3IGd0LnBsdWdpbnMudHlwZWRyZXF1ZXN0LlR5cGVkUmVxdWVzdCgiL3R5cGVkcmVxdWVzdCIsImFkbWluTG9naW5XaXRoVXNlcm5hbWVBbmRQYXNzd29yZCIpLmZpcmUoe3VzZXJuYW1lOmUudXNlcm5hbWUscGFzc3dvcmQ6ZS5wYXNzd29yZH0pKS5pZGVudGl0eSxpc0xvZ2dlZEluOiEwfX1jYXRjaCh0KXtyZXR1cm4gY29uc29sZS5lcnJvcigiTG9naW4gZmFpbGVkOiIsdCkse2lkZW50aXR5Om51bGwsaXNMb2dnZWRJbjohMX19fSksTTJlPVFpLmNyZWF0ZUFjdGlvbihhc3luYyBzPT57bGV0IGU9aWEoKTt0cnl7ZS5pZGVudGl0eSYmYXdhaXQgbmV3IGd0LnBsdWdpbnMudHlwZWRyZXF1ZXN0LlR5cGVkUmVxdWVzdCgiL3R5cGVkcmVxdWVzdCIsImFkbWluTG9nb3V0IikuZmlyZSh7aWRlbnRpdHk6ZS5pZGVudGl0eX0pfWNhdGNoKHQpe2NvbnNvbGUuZXJyb3IoIkxvZ291dCBlcnJvcjoiLHQpfXJldHVybntpZGVudGl0eTpudWxsLGlzTG9nZ2VkSW46ITF9fSksSHg9YTAuY3JlYXRlQWN0aW9uKGFzeW5jIHM9PntsZXQgZT1pYSgpO3RyeXtyZXR1cm57c3RhdHVzOihhd2FpdCBuZXcgZ3QucGx1Z2lucy50eXBlZHJlcXVlc3QuVHlwZWRSZXF1ZXN0KCIvdHlwZWRyZXF1ZXN0IiwiZ2V0U3lzdGVtU3RhdHVzIikuZmlyZSh7aWRlbnRpdHk6ZS5pZGVudGl0eX0pKS5zdGF0dXN9fWNhdGNoKHQpe3JldHVybiBjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gZmV0Y2ggc3lzdGVtIHN0YXR1czoiLHQpLHMuZ2V0U3RhdGUoKX19KSx6MmU9WXQuY3JlYXRlQWN0aW9uKGFzeW5jIHM9PntsZXQgZT1pYSgpO3RyeXtsZXQgYT1hd2FpdCBuZXcgZ3QucGx1Z2lucy50eXBlZHJlcXVlc3QuVHlwZWRSZXF1ZXN0KCIvdHlwZWRyZXF1ZXN0IiwiZ2V0U2VydmljZXMiKS5maXJlKHtpZGVudGl0eTplLmlkZW50aXR5fSk7cmV0dXJuey4uLnMuZ2V0U3RhdGUoKSxzZXJ2aWNlczphLnNlcnZpY2VzfX1jYXRjaCh0KXtyZXR1cm4gY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGZldGNoIHNlcnZpY2VzOiIsdCkscy5nZXRTdGF0ZSgpfX0pLEtNYT1ZdC5jcmVhdGVBY3Rpb24oYXN5bmMocyxlKT0+e2xldCB0PWlhKCk7dHJ5e2xldCByPWF3YWl0IG5ldyBndC5wbHVnaW5zLnR5cGVkcmVxdWVzdC5UeXBlZFJlcXVlc3QoIi90eXBlZHJlcXVlc3QiLCJnZXRTZXJ2aWNlIikuZmlyZSh7aWRlbnRpdHk6dC5pZGVudGl0eSxzZXJ2aWNlTmFtZTplLm5hbWV9KTtyZXR1cm57Li4ucy5nZXRTdGF0ZSgpLGN1cnJlbnRTZXJ2aWNlOnIuc2VydmljZX19Y2F0Y2goYSl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBmZXRjaCBzZXJ2aWNlOiIsYSkscy5nZXRTdGF0ZSgpfX0pLGZjdD1ZdC5jcmVhdGVBY3Rpb24oYXN5bmMocyxlKT0+e2xldCB0PWlhKCk7dHJ5e2F3YWl0IG5ldyBndC5wbHVnaW5zLnR5cGVkcmVxdWVzdC5UeXBlZFJlcXVlc3QoIi90eXBlZHJlcXVlc3QiLCJjcmVhdGVTZXJ2aWNlIikuZmlyZSh7aWRlbnRpdHk6dC5pZGVudGl0eSxzZXJ2aWNlQ29uZmlnOmUuY29uZmlnfSk7bGV0IG49YXdhaXQgbmV3IGd0LnBsdWdpbnMudHlwZWRyZXF1ZXN0LlR5cGVkUmVxdWVzdCgiL3R5cGVkcmVxdWVzdCIsImdldFNlcnZpY2VzIikuZmlyZSh7aWRlbnRpdHk6dC5pZGVudGl0eX0pO3JldHVybnsuLi5zLmdldFN0YXRlKCksc2VydmljZXM6bi5zZXJ2aWNlc319Y2F0Y2goYSl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBjcmVhdGUgc2VydmljZToiLGEpLHMuZ2V0U3RhdGUoKX19KSxZTWE9WXQuY3JlYXRlQWN0aW9uKGFzeW5jKHMsZSk9PntsZXQgdD1pYSgpO3RyeXthd2FpdCBuZXcgZ3QucGx1Z2lucy50eXBlZHJlcXVlc3QuVHlwZWRSZXF1ZXN0KCIvdHlwZWRyZXF1ZXN0IiwiZGVsZXRlU2VydmljZSIpLmZpcmUoe2lkZW50aXR5OnQuaWRlbnRpdHksc2VydmljZU5hbWU6ZS5uYW1lfSk7bGV0IHI9cy5nZXRTdGF0ZSgpO3JldHVybnsuLi5yLHNlcnZpY2VzOnIuc2VydmljZXMuZmlsdGVyKG49Pm4ubmFtZSE9PWUubmFtZSksY3VycmVudFNlcnZpY2U6bnVsbH19Y2F0Y2goYSl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBkZWxldGUgc2VydmljZToiLGEpLHMuZ2V0U3RhdGUoKX19KSxaTWE9WXQuY3JlYXRlQWN0aW9uKGFzeW5jKHMsZSk9PntsZXQgdD1pYSgpO3RyeXthd2FpdCBuZXcgZ3QucGx1Z2lucy50eXBlZHJlcXVlc3QuVHlwZWRSZXF1ZXN0KCIvdHlwZWRyZXF1ZXN0Iiwic3RhcnRTZXJ2aWNlIikuZmlyZSh7aWRlbnRpdHk6dC5pZGVudGl0eSxzZXJ2aWNlTmFtZTplLm5hbWV9KTtsZXQgbj1hd2FpdCBuZXcgZ3QucGx1Z2lucy50eXBlZHJlcXVlc3QuVHlwZWRSZXF1ZXN0KCIvdHlwZWRyZXF1ZXN0IiwiZ2V0U2VydmljZXMiKS5maXJlKHtpZGVudGl0eTp0LmlkZW50aXR5fSk7cmV0dXJuey4uLnMuZ2V0U3RhdGUoKSxzZXJ2aWNlczpuLnNlcnZpY2VzfX1jYXRjaChhKXtyZXR1cm4gY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIHN0YXJ0IHNlcnZpY2U6IixhKSxzLmdldFN0YXRlKCl9fSksWE1hPVl0LmNyZWF0ZUFjdGlvbihhc3luYyhzLGUpPT57bGV0IHQ9aWEoKTt0cnl7YXdhaXQgbmV3IGd0LnBsdWdpbnMudHlwZWRyZXF1ZXN0LlR5cGVkUmVxdWVzdCgiL3R5cGVkcmVxdWVzdCIsInN0b3BTZXJ2aWNlIikuZmlyZSh7aWRlbnRpdHk6dC5pZGVudGl0eSxzZXJ2aWNlTmFtZTplLm5hbWV9KTtsZXQgbj1hd2FpdCBuZXcgZ3QucGx1Z2lucy50eXBlZHJlcXVlc3QuVHlwZWRSZXF1ZXN0KCIvdHlwZWRyZXF1ZXN0IiwiZ2V0U2VydmljZXMiKS5maXJlKHtpZGVudGl0eTp0LmlkZW50aXR5fSk7cmV0dXJuey4uLnMuZ2V0U3RhdGUoKSxzZXJ2aWNlczpuLnNlcnZpY2VzfX1jYXRjaChhKXtyZXR1cm4gY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIHN0b3Agc2VydmljZToiLGEpLHMuZ2V0U3RhdGUoKX19KSxRTWE9WXQuY3JlYXRlQWN0aW9uKGFzeW5jKHMsZSk9PntsZXQgdD1pYSgpO3RyeXthd2FpdCBuZXcgZ3QucGx1Z2lucy50eXBlZHJlcXVlc3QuVHlwZWRSZXF1ZXN0KCIvdHlwZWRyZXF1ZXN0IiwicmVzdGFydFNlcnZpY2UiKS5maXJlKHtpZGVudGl0eTp0LmlkZW50aXR5LHNlcnZpY2VOYW1lOmUubmFtZX0pO2xldCBuPWF3YWl0IG5ldyBndC5wbHVnaW5zLnR5cGVkcmVxdWVzdC5UeXBlZFJlcXVlc3QoIi90eXBlZHJlcXVlc3QiLCJnZXRTZXJ2aWNlcyIpLmZpcmUoe2lkZW50aXR5OnQuaWRlbnRpdHl9KTtyZXR1cm57Li4ucy5nZXRTdGF0ZSgpLHNlcnZpY2VzOm4uc2VydmljZXN9fWNhdGNoKGEpe3JldHVybiBjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gcmVzdGFydCBzZXJ2aWNlOiIsYSkscy5nZXRTdGF0ZSgpfX0pLEpNYT1ZdC5jcmVhdGVBY3Rpb24oYXN5bmMocyxlKT0+e2xldCB0PWlhKCk7dHJ5e2xldCByPWF3YWl0IG5ldyBndC5wbHVnaW5zLnR5cGVkcmVxdWVzdC5UeXBlZFJlcXVlc3QoIi90eXBlZHJlcXVlc3QiLCJnZXRTZXJ2aWNlTG9ncyIpLmZpcmUoe2lkZW50aXR5OnQuaWRlbnRpdHksc2VydmljZU5hbWU6ZS5uYW1lLHRhaWw6ZS5saW5lc3x8MjAwfSk7cmV0dXJuey4uLnMuZ2V0U3RhdGUoKSxjdXJyZW50U2VydmljZUxvZ3M6ci5sb2dzfX1jYXRjaChhKXtyZXR1cm4gY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGZldGNoIHNlcnZpY2UgbG9nczoiLGEpLHMuZ2V0U3RhdGUoKX19KSxlemE9WXQuY3JlYXRlQWN0aW9uKGFzeW5jKHMsZSk9PntsZXQgdD1pYSgpO3RyeXtsZXQgcj1hd2FpdCBuZXcgZ3QucGx1Z2lucy50eXBlZHJlcXVlc3QuVHlwZWRSZXF1ZXN0KCIvdHlwZWRyZXF1ZXN0IiwiZ2V0U2VydmljZVN0YXRzIikuZmlyZSh7aWRlbnRpdHk6dC5pZGVudGl0eSxzZXJ2aWNlTmFtZTplLm5hbWV9KTtyZXR1cm57Li4ucy5nZXRTdGF0ZSgpLGN1cnJlbnRTZXJ2aWNlU3RhdHM6ci5zdGF0c319Y2F0Y2goYSl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBmZXRjaCBzZXJ2aWNlIHN0YXRzOiIsYSkscy5nZXRTdGF0ZSgpfX0pLEMyZT1ZdC5jcmVhdGVBY3Rpb24oYXN5bmMgcz0+e2xldCBlPWlhKCk7dHJ5e2xldCBhPWF3YWl0IG5ldyBndC5wbHVnaW5zLnR5cGVkcmVxdWVzdC5UeXBlZFJlcXVlc3QoIi90eXBlZHJlcXVlc3QiLCJnZXRQbGF0Zm9ybVNlcnZpY2VzIikuZmlyZSh7aWRlbnRpdHk6ZS5pZGVudGl0eX0pO3JldHVybnsuLi5zLmdldFN0YXRlKCkscGxhdGZvcm1TZXJ2aWNlczphLnBsYXRmb3JtU2VydmljZXN9fWNhdGNoKHQpe3JldHVybiBjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gZmV0Y2ggcGxhdGZvcm0gc2VydmljZXM6Iix0KSxzLmdldFN0YXRlKCl9fSksbWN0PVl0LmNyZWF0ZUFjdGlvbihhc3luYyhzLGUpPT57bGV0IHQ9aWEoKTt0cnl7YXdhaXQgbmV3IGd0LnBsdWdpbnMudHlwZWRyZXF1ZXN0LlR5cGVkUmVxdWVzdCgiL3R5cGVkcmVxdWVzdCIsInN0YXJ0UGxhdGZvcm1TZXJ2aWNlIikuZmlyZSh7aWRlbnRpdHk6dC5pZGVudGl0eSxzZXJ2aWNlVHlwZTplLnNlcnZpY2VUeXBlfSk7bGV0IG49YXdhaXQgbmV3IGd0LnBsdWdpbnMudHlwZWRyZXF1ZXN0LlR5cGVkUmVxdWVzdCgiL3R5cGVkcmVxdWVzdCIsImdldFBsYXRmb3JtU2VydmljZXMiKS5maXJlKHtpZGVudGl0eTp0LmlkZW50aXR5fSk7cmV0dXJuey4uLnMuZ2V0U3RhdGUoKSxwbGF0Zm9ybVNlcnZpY2VzOm4ucGxhdGZvcm1TZXJ2aWNlc319Y2F0Y2goYSl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBzdGFydCBwbGF0Zm9ybSBzZXJ2aWNlOiIsYSkscy5nZXRTdGF0ZSgpfX0pLGdjdD1ZdC5jcmVhdGVBY3Rpb24oYXN5bmMocyxlKT0+e2xldCB0PWlhKCk7dHJ5e2F3YWl0IG5ldyBndC5wbHVnaW5zLnR5cGVkcmVxdWVzdC5UeXBlZFJlcXVlc3QoIi90eXBlZHJlcXVlc3QiLCJzdG9wUGxhdGZvcm1TZXJ2aWNlIikuZmlyZSh7aWRlbnRpdHk6dC5pZGVudGl0eSxzZXJ2aWNlVHlwZTplLnNlcnZpY2VUeXBlfSk7bGV0IG49YXdhaXQgbmV3IGd0LnBsdWdpbnMudHlwZWRyZXF1ZXN0LlR5cGVkUmVxdWVzdCgiL3R5cGVkcmVxdWVzdCIsImdldFBsYXRmb3JtU2VydmljZXMiKS5maXJlKHtpZGVudGl0eTp0LmlkZW50aXR5fSk7cmV0dXJuey4uLnMuZ2V0U3RhdGUoKSxwbGF0Zm9ybVNlcnZpY2VzOm4ucGxhdGZvcm1TZXJ2aWNlc319Y2F0Y2goYSl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBzdG9wIHBsYXRmb3JtIHNlcnZpY2U6IixhKSxzLmdldFN0YXRlKCl9fSksVDJlPVl0LmNyZWF0ZUFjdGlvbihhc3luYyhzLGUpPT57bGV0IHQ9aWEoKTt0cnl7bGV0IHI9YXdhaXQgbmV3IGd0LnBsdWdpbnMudHlwZWRyZXF1ZXN0LlR5cGVkUmVxdWVzdCgiL3R5cGVkcmVxdWVzdCIsImdldFBsYXRmb3JtU2VydmljZVN0YXRzIikuZmlyZSh7aWRlbnRpdHk6dC5pZGVudGl0eSxzZXJ2aWNlVHlwZTplLnNlcnZpY2VUeXBlfSk7cmV0dXJuey4uLnMuZ2V0U3RhdGUoKSxjdXJyZW50UGxhdGZvcm1TZXJ2aWNlU3RhdHM6ci5zdGF0c319Y2F0Y2goYSl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBmZXRjaCBwbGF0Zm9ybSBzZXJ2aWNlIHN0YXRzOiIsYSksey4uLnMuZ2V0U3RhdGUoKSxjdXJyZW50UGxhdGZvcm1TZXJ2aWNlU3RhdHM6bnVsbH19fSksdHphPVl0LmNyZWF0ZUFjdGlvbihhc3luYyhzLGUpPT57bGV0IHQ9aWEoKTt0cnl7bGV0IHI9YXdhaXQgbmV3IGd0LnBsdWdpbnMudHlwZWRyZXF1ZXN0LlR5cGVkUmVxdWVzdCgiL3R5cGVkcmVxdWVzdCIsImdldFBsYXRmb3JtU2VydmljZUxvZ3MiKS5maXJlKHtpZGVudGl0eTp0LmlkZW50aXR5LHNlcnZpY2VUeXBlOmUuc2VydmljZVR5cGUsdGFpbDplLnRhaWx8fDEwMH0pO3JldHVybnsuLi5zLmdldFN0YXRlKCksY3VycmVudFBsYXRmb3JtU2VydmljZUxvZ3M6ci5sb2dzfX1jYXRjaChhKXtyZXR1cm4gY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGZldGNoIHBsYXRmb3JtIHNlcnZpY2UgbG9nczoiLGEpLHsuLi5zLmdldFN0YXRlKCksY3VycmVudFBsYXRmb3JtU2VydmljZUxvZ3M6W119fX0pLGJjdD1aYS5jcmVhdGVBY3Rpb24oYXN5bmMgcz0+e2xldCBlPWlhKCk7dHJ5e2xldCBhPWF3YWl0IG5ldyBndC5wbHVnaW5zLnR5cGVkcmVxdWVzdC5UeXBlZFJlcXVlc3QoIi90eXBlZHJlcXVlc3QiLCJnZXROZXR3b3JrVGFyZ2V0cyIpLmZpcmUoe2lkZW50aXR5OmUuaWRlbnRpdHl9KTtyZXR1cm57Li4ucy5nZXRTdGF0ZSgpLHRhcmdldHM6YS50YXJnZXRzfX1jYXRjaCh0KXtyZXR1cm4gY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGZldGNoIG5ldHdvcmsgdGFyZ2V0czoiLHQpLHMuZ2V0U3RhdGUoKX19KSx5Sj1aYS5jcmVhdGVBY3Rpb24oYXN5bmMgcz0+e2xldCBlPWlhKCk7dHJ5e2xldCBhPWF3YWl0IG5ldyBndC5wbHVnaW5zLnR5cGVkcmVxdWVzdC5UeXBlZFJlcXVlc3QoIi90eXBlZHJlcXVlc3QiLCJnZXROZXR3b3JrU3RhdHMiKS5maXJlKHtpZGVudGl0eTplLmlkZW50aXR5fSk7cmV0dXJuey4uLnMuZ2V0U3RhdGUoKSxzdGF0czphLnN0YXRzfX1jYXRjaCh0KXtyZXR1cm4gY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGZldGNoIG5ldHdvcmsgc3RhdHM6Iix0KSxzLmdldFN0YXRlKCl9fSksd0o9WmEuY3JlYXRlQWN0aW9uKGFzeW5jIHM9PntsZXQgZT1pYSgpO3RyeXtsZXQgYT1hd2FpdCBuZXcgZ3QucGx1Z2lucy50eXBlZHJlcXVlc3QuVHlwZWRSZXF1ZXN0KCIvdHlwZWRyZXF1ZXN0IiwiZ2V0VHJhZmZpY1N0YXRzIikuZmlyZSh7aWRlbnRpdHk6ZS5pZGVudGl0eX0pO3JldHVybnsuLi5zLmdldFN0YXRlKCksdHJhZmZpY1N0YXRzOmEuc3RhdHN9fWNhdGNoKHQpe3JldHVybiBjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gZmV0Y2ggdHJhZmZpYyBzdGF0czoiLHQpLHMuZ2V0U3RhdGUoKX19KSxhemE9WmEuY3JlYXRlQWN0aW9uKGFzeW5jIHM9PntsZXQgZT1pYSgpO3RyeXtsZXQgYT1hd2FpdCBuZXcgZ3QucGx1Z2lucy50eXBlZHJlcXVlc3QuVHlwZWRSZXF1ZXN0KCIvdHlwZWRyZXF1ZXN0IiwiZ2V0RG5zUmVjb3JkcyIpLmZpcmUoe2lkZW50aXR5OmUuaWRlbnRpdHl9KTtyZXR1cm57Li4ucy5nZXRTdGF0ZSgpLGRuc1JlY29yZHM6YS5yZWNvcmRzfX1jYXRjaCh0KXtyZXR1cm4gY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGZldGNoIEROUyByZWNvcmRzOiIsdCkscy5nZXRTdGF0ZSgpfX0pLHN6YT1aYS5jcmVhdGVBY3Rpb24oYXN5bmMgcz0+e2xldCBlPWlhKCk7dHJ5e2F3YWl0IG5ldyBndC5wbHVnaW5zLnR5cGVkcmVxdWVzdC5UeXBlZFJlcXVlc3QoIi90eXBlZHJlcXVlc3QiLCJzeW5jRG5zIikuZmlyZSh7aWRlbnRpdHk6ZS5pZGVudGl0eX0pO2xldCByPWF3YWl0IG5ldyBndC5wbHVnaW5zLnR5cGVkcmVxdWVzdC5UeXBlZFJlcXVlc3QoIi90eXBlZHJlcXVlc3QiLCJnZXREbnNSZWNvcmRzIikuZmlyZSh7aWRlbnRpdHk6ZS5pZGVudGl0eX0pO3JldHVybnsuLi5zLmdldFN0YXRlKCksZG5zUmVjb3JkczpyLnJlY29yZHN9fWNhdGNoKHQpe3JldHVybiBjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gc3luYyBETlM6Iix0KSxzLmdldFN0YXRlKCl9fSksdmN0PVphLmNyZWF0ZUFjdGlvbihhc3luYyBzPT57bGV0IGU9aWEoKTt0cnl7bGV0IGE9YXdhaXQgbmV3IGd0LnBsdWdpbnMudHlwZWRyZXF1ZXN0LlR5cGVkUmVxdWVzdCgiL3R5cGVkcmVxdWVzdCIsImdldERvbWFpbnMiKS5maXJlKHtpZGVudGl0eTplLmlkZW50aXR5fSk7cmV0dXJuey4uLnMuZ2V0U3RhdGUoKSxkb21haW5zOmEuZG9tYWluc319Y2F0Y2godCl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBmZXRjaCBkb21haW5zOiIsdCkscy5nZXRTdGF0ZSgpfX0pLHhjdD1aYS5jcmVhdGVBY3Rpb24oYXN5bmMgcz0+e2xldCBlPWlhKCk7dHJ5e2xldCBhPWF3YWl0IG5ldyBndC5wbHVnaW5zLnR5cGVkcmVxdWVzdC5UeXBlZFJlcXVlc3QoIi90eXBlZHJlcXVlc3QiLCJnZXRHYXRld2F5RG9tYWlucyIpLmZpcmUoe2lkZW50aXR5OmUuaWRlbnRpdHl9KTtyZXR1cm57Li4ucy5nZXRTdGF0ZSgpLGdhdGV3YXlEb21haW5zOmEuZG9tYWluc319Y2F0Y2godCl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBmZXRjaCBnYXRld2F5IGRvbWFpbnM6Iix0KSxzLmdldFN0YXRlKCl9fSkseWN0PVphLmNyZWF0ZUFjdGlvbihhc3luYyBzPT57bGV0IGU9aWEoKTt0cnl7bGV0IGE9YXdhaXQgbmV3IGd0LnBsdWdpbnMudHlwZWRyZXF1ZXN0LlR5cGVkUmVxdWVzdCgiL3R5cGVkcmVxdWVzdCIsImdldEdhdGV3YXlEbnNSZWNvcmRzIikuZmlyZSh7aWRlbnRpdHk6ZS5pZGVudGl0eX0pO3JldHVybnsuLi5zLmdldFN0YXRlKCksZ2F0ZXdheURuc1JlY29yZHM6YS5yZWNvcmRzfX1jYXRjaCh0KXtyZXR1cm4gY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGZldGNoIGdhdGV3YXkgRE5TIHJlY29yZHM6Iix0KSxzLmdldFN0YXRlKCl9fSksJDJlPVphLmNyZWF0ZUFjdGlvbihhc3luYyBzPT57bGV0IGU9aWEoKTt0cnl7bGV0IGE9YXdhaXQgbmV3IGd0LnBsdWdpbnMudHlwZWRyZXF1ZXN0LlR5cGVkUmVxdWVzdCgiL3R5cGVkcmVxdWVzdCIsImxpc3RDZXJ0aWZpY2F0ZXMiKS5maXJlKHtpZGVudGl0eTplLmlkZW50aXR5fSk7cmV0dXJuey4uLnMuZ2V0U3RhdGUoKSxjZXJ0aWZpY2F0ZXM6YS5jZXJ0aWZpY2F0ZXN9fWNhdGNoKHQpe3JldHVybiBjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gZmV0Y2ggY2VydGlmaWNhdGVzOiIsdCkscy5nZXRTdGF0ZSgpfX0pLGl6YT1aYS5jcmVhdGVBY3Rpb24oYXN5bmMocyxlKT0+e2xldCB0PWlhKCk7dHJ5e2F3YWl0IG5ldyBndC5wbHVnaW5zLnR5cGVkcmVxdWVzdC5UeXBlZFJlcXVlc3QoIi90eXBlZHJlcXVlc3QiLCJyZW5ld0NlcnRpZmljYXRlIikuZmlyZSh7aWRlbnRpdHk6dC5pZGVudGl0eSxkb21haW46ZS5kb21haW59KTtsZXQgbj1hd2FpdCBuZXcgZ3QucGx1Z2lucy50eXBlZHJlcXVlc3QuVHlwZWRSZXF1ZXN0KCIvdHlwZWRyZXF1ZXN0IiwibGlzdENlcnRpZmljYXRlcyIpLmZpcmUoe2lkZW50aXR5OnQuaWRlbnRpdHl9KTtyZXR1cm57Li4ucy5nZXRTdGF0ZSgpLGNlcnRpZmljYXRlczpuLmNlcnRpZmljYXRlc319Y2F0Y2goYSl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byByZW5ldyBjZXJ0aWZpY2F0ZToiLGEpLHMuZ2V0U3RhdGUoKX19KSxEMmU9cTIuY3JlYXRlQWN0aW9uKGFzeW5jIHM9PntsZXQgZT1pYSgpO3RyeXtsZXQgYT1hd2FpdCBuZXcgZ3QucGx1Z2lucy50eXBlZHJlcXVlc3QuVHlwZWRSZXF1ZXN0KCIvdHlwZWRyZXF1ZXN0IiwiZ2V0UmVnaXN0cnlUb2tlbnMiKS5maXJlKHtpZGVudGl0eTplLmlkZW50aXR5fSk7cmV0dXJuey4uLnMuZ2V0U3RhdGUoKSx0b2tlbnM6YS50b2tlbnN9fWNhdGNoKHQpe3JldHVybiBjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gZmV0Y2ggcmVnaXN0cnkgdG9rZW5zOiIsdCkscy5nZXRTdGF0ZSgpfX0pLHJ6YT1xMi5jcmVhdGVBY3Rpb24oYXN5bmMocyxlKT0+e2xldCB0PWlhKCk7dHJ5e2F3YWl0IG5ldyBndC5wbHVnaW5zLnR5cGVkcmVxdWVzdC5UeXBlZFJlcXVlc3QoIi90eXBlZHJlcXVlc3QiLCJjcmVhdGVSZWdpc3RyeVRva2VuIikuZmlyZSh7aWRlbnRpdHk6dC5pZGVudGl0eSx0b2tlbjplLnRva2VufSk7bGV0IG49YXdhaXQgbmV3IGd0LnBsdWdpbnMudHlwZWRyZXF1ZXN0LlR5cGVkUmVxdWVzdCgiL3R5cGVkcmVxdWVzdCIsImdldFJlZ2lzdHJ5VG9rZW5zIikuZmlyZSh7aWRlbnRpdHk6dC5pZGVudGl0eX0pO3JldHVybnsuLi5zLmdldFN0YXRlKCksdG9rZW5zOm4udG9rZW5zfX1jYXRjaChhKXtyZXR1cm4gY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGNyZWF0ZSByZWdpc3RyeSB0b2tlbjoiLGEpLHMuZ2V0U3RhdGUoKX19KSxvemE9cTIuY3JlYXRlQWN0aW9uKGFzeW5jKHMsZSk9PntsZXQgdD1pYSgpO3RyeXthd2FpdCBuZXcgZ3QucGx1Z2lucy50eXBlZHJlcXVlc3QuVHlwZWRSZXF1ZXN0KCIvdHlwZWRyZXF1ZXN0IiwiZGVsZXRlUmVnaXN0cnlUb2tlbiIpLmZpcmUoe2lkZW50aXR5OnQuaWRlbnRpdHksdG9rZW5JZDplLnRva2VuSWR9KTtsZXQgcj1zLmdldFN0YXRlKCk7cmV0dXJuey4uLnIsdG9rZW5zOnIudG9rZW5zLmZpbHRlcihuPT5uLmlkIT09ZS50b2tlbklkKX19Y2F0Y2goYSl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBkZWxldGUgcmVnaXN0cnkgdG9rZW46IixhKSxzLmdldFN0YXRlKCl9fSksa2RuPUgyLmNyZWF0ZUFjdGlvbihhc3luYyBzPT57bGV0IGU9aWEoKTt0cnl7bGV0IGE9YXdhaXQgbmV3IGd0LnBsdWdpbnMudHlwZWRyZXF1ZXN0LlR5cGVkUmVxdWVzdCgiL3R5cGVkcmVxdWVzdCIsImdldEJhY2t1cHMiKS5maXJlKHtpZGVudGl0eTplLmlkZW50aXR5fSk7cmV0dXJuey4uLnMuZ2V0U3RhdGUoKSxiYWNrdXBzOmEuYmFja3Vwc319Y2F0Y2godCl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBmZXRjaCBiYWNrdXBzOiIsdCkscy5nZXRTdGF0ZSgpfX0pLG56YT1IMi5jcmVhdGVBY3Rpb24oYXN5bmMocyxlKT0+e2xldCB0PWlhKCk7dHJ5e2F3YWl0IG5ldyBndC5wbHVnaW5zLnR5cGVkcmVxdWVzdC5UeXBlZFJlcXVlc3QoIi90eXBlZHJlcXVlc3QiLCJkZWxldGVCYWNrdXAiKS5maXJlKHtpZGVudGl0eTp0LmlkZW50aXR5LGJhY2t1cElkOmUuYmFja3VwSWR9KTtsZXQgcj1zLmdldFN0YXRlKCk7cmV0dXJuey4uLnIsYmFja3VwczpyLmJhY2t1cHMuZmlsdGVyKG49Pm4uaWQhPT1lLmJhY2t1cElkKX19Y2F0Y2goYSl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBkZWxldGUgYmFja3VwOiIsYSkscy5nZXRTdGF0ZSgpfX0pLFNkbj1IMi5jcmVhdGVBY3Rpb24oYXN5bmMgcz0+e2xldCBlPWlhKCk7dHJ5e2xldCBhPWF3YWl0IG5ldyBndC5wbHVnaW5zLnR5cGVkcmVxdWVzdC5UeXBlZFJlcXVlc3QoIi90eXBlZHJlcXVlc3QiLCJnZXRCYWNrdXBTY2hlZHVsZXMiKS5maXJlKHtpZGVudGl0eTplLmlkZW50aXR5fSk7cmV0dXJuey4uLnMuZ2V0U3RhdGUoKSxzY2hlZHVsZXM6YS5zY2hlZHVsZXN9fWNhdGNoKHQpe3JldHVybiBjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gZmV0Y2ggc2NoZWR1bGVzOiIsdCkscy5nZXRTdGF0ZSgpfX0pLGx6YT1IMi5jcmVhdGVBY3Rpb24oYXN5bmMocyxlKT0+e2xldCB0PWlhKCk7dHJ5e2F3YWl0IG5ldyBndC5wbHVnaW5zLnR5cGVkcmVxdWVzdC5UeXBlZFJlcXVlc3QoIi90eXBlZHJlcXVlc3QiLCJjcmVhdGVCYWNrdXBTY2hlZHVsZSIpLmZpcmUoe2lkZW50aXR5OnQuaWRlbnRpdHksc2NoZWR1bGVDb25maWc6ZS5jb25maWd9KTtsZXQgbj1hd2FpdCBuZXcgZ3QucGx1Z2lucy50eXBlZHJlcXVlc3QuVHlwZWRSZXF1ZXN0KCIvdHlwZWRyZXF1ZXN0IiwiZ2V0QmFja3VwU2NoZWR1bGVzIikuZmlyZSh7aWRlbnRpdHk6dC5pZGVudGl0eX0pO3JldHVybnsuLi5zLmdldFN0YXRlKCksc2NoZWR1bGVzOm4uc2NoZWR1bGVzfX1jYXRjaChhKXtyZXR1cm4gY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGNyZWF0ZSBzY2hlZHVsZToiLGEpLHMuZ2V0U3RhdGUoKX19KSxfZG49SDIuY3JlYXRlQWN0aW9uKGFzeW5jKHMsZSk9PntsZXQgdD1pYSgpO3RyeXthd2FpdCBuZXcgZ3QucGx1Z2lucy50eXBlZHJlcXVlc3QuVHlwZWRSZXF1ZXN0KCIvdHlwZWRyZXF1ZXN0IiwiZGVsZXRlQmFja3VwU2NoZWR1bGUiKS5maXJlKHtpZGVudGl0eTp0LmlkZW50aXR5LHNjaGVkdWxlSWQ6ZS5zY2hlZHVsZUlkfSk7bGV0IHI9cy5nZXRTdGF0ZSgpO3JldHVybnsuLi5yLHNjaGVkdWxlczpyLnNjaGVkdWxlcy5maWx0ZXIobj0+bi5pZCE9PWUuc2NoZWR1bGVJZCl9fWNhdGNoKGEpe3JldHVybiBjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gZGVsZXRlIHNjaGVkdWxlOiIsYSkscy5nZXRTdGF0ZSgpfX0pLGN6YT1IMi5jcmVhdGVBY3Rpb24oYXN5bmMocyxlKT0+e2xldCB0PWlhKCk7dHJ5e2F3YWl0IG5ldyBndC5wbHVnaW5zLnR5cGVkcmVxdWVzdC5UeXBlZFJlcXVlc3QoIi90eXBlZHJlcXVlc3QiLCJ0cmlnZ2VyQmFja3VwU2NoZWR1bGUiKS5maXJlKHtpZGVudGl0eTp0LmlkZW50aXR5LHNjaGVkdWxlSWQ6ZS5zY2hlZHVsZUlkfSk7bGV0IG49YXdhaXQgbmV3IGd0LnBsdWdpbnMudHlwZWRyZXF1ZXN0LlR5cGVkUmVxdWVzdCgiL3R5cGVkcmVxdWVzdCIsImdldEJhY2t1cHMiKS5maXJlKHtpZGVudGl0eTp0LmlkZW50aXR5fSk7cmV0dXJuey4uLnMuZ2V0U3RhdGUoKSxiYWNrdXBzOm4uYmFja3Vwc319Y2F0Y2goYSl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byB0cmlnZ2VyIHNjaGVkdWxlOiIsYSkscy5nZXRTdGF0ZSgpfX0pLHdjdD1zby5jcmVhdGVBY3Rpb24oYXN5bmMgcz0+e2xldCBlPWlhKCk7dHJ5e2xldFt0LGEscl09YXdhaXQgUHJvbWlzZS5hbGwoW25ldyBndC5wbHVnaW5zLnR5cGVkcmVxdWVzdC5UeXBlZFJlcXVlc3QoIi90eXBlZHJlcXVlc3QiLCJnZXRTZXR0aW5ncyIpLmZpcmUoe2lkZW50aXR5OmUuaWRlbnRpdHl9KSxuZXcgZ3QucGx1Z2lucy50eXBlZHJlcXVlc3QuVHlwZWRSZXF1ZXN0KCIvdHlwZWRyZXF1ZXN0IiwiZ2V0QmFja3VwUGFzc3dvcmRTdGF0dXMiKS5maXJlKHtpZGVudGl0eTplLmlkZW50aXR5fSksbmV3IGd0LnBsdWdpbnMudHlwZWRyZXF1ZXN0LlR5cGVkUmVxdWVzdCgiL3R5cGVkcmVxdWVzdCIsImdldE1hbmFnZWREY1JvdXRlclN0YXR1cyIpLmZpcmUoe2lkZW50aXR5OmUuaWRlbnRpdHl9KV0pO3JldHVybntzZXR0aW5nczp0LnNldHRpbmdzLGJhY2t1cFBhc3N3b3JkQ29uZmlndXJlZDphLnN0YXR1cy5pc0NvbmZpZ3VyZWQsbWFuYWdlZERjUm91dGVyU3RhdHVzOnIuc3RhdHVzfX1jYXRjaCh0KXtyZXR1cm4gY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGZldGNoIHNldHRpbmdzOiIsdCkscy5nZXRTdGF0ZSgpfX0pLGtKPXNvLmNyZWF0ZUFjdGlvbihhc3luYyhzLGUpPT57bGV0IHQ9aWEoKTt0cnl7bGV0IHI9YXdhaXQgbmV3IGd0LnBsdWdpbnMudHlwZWRyZXF1ZXN0LlR5cGVkUmVxdWVzdCgiL3R5cGVkcmVxdWVzdCIsInVwZGF0ZVNldHRpbmdzIikuZmlyZSh7aWRlbnRpdHk6dC5pZGVudGl0eSxzZXR0aW5nczplLnNldHRpbmdzfSk7cmV0dXJuey4uLnMuZ2V0U3RhdGUoKSxzZXR0aW5nczpyLnNldHRpbmdzfX1jYXRjaChhKXtyZXR1cm4gY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIHVwZGF0ZSBzZXR0aW5nczoiLGEpLHMuZ2V0U3RhdGUoKX19KSxkemE9c28uY3JlYXRlQWN0aW9uKGFzeW5jIHM9PntsZXQgZT1pYSgpO3RyeXtsZXQgdD1hd2FpdCBuZXcgZ3QucGx1Z2lucy50eXBlZHJlcXVlc3QuVHlwZWRSZXF1ZXN0KCIvdHlwZWRyZXF1ZXN0IiwiZ2V0TWFuYWdlZERjUm91dGVyU3RhdHVzIikuZmlyZSh7aWRlbnRpdHk6ZS5pZGVudGl0eX0pO3JldHVybnsuLi5zLmdldFN0YXRlKCksbWFuYWdlZERjUm91dGVyU3RhdHVzOnQuc3RhdHVzfX1jYXRjaCh0KXtyZXR1cm4gY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGZldGNoIG1hbmFnZWQgZGNyb3V0ZXIgc3RhdHVzOiIsdCkscy5nZXRTdGF0ZSgpfX0pLHV6YT1zby5jcmVhdGVBY3Rpb24oYXN5bmMgcz0+e2xldCBlPWlhKCk7dHJ5e2xldCB0PWF3YWl0IG5ldyBndC5wbHVnaW5zLnR5cGVkcmVxdWVzdC5UeXBlZFJlcXVlc3QoIi90eXBlZHJlcXVlc3QiLCJzdGFydE1hbmFnZWREY1JvdXRlciIpLmZpcmUoe2lkZW50aXR5OmUuaWRlbnRpdHl9KTtyZXR1cm57Li4ucy5nZXRTdGF0ZSgpLG1hbmFnZWREY1JvdXRlclN0YXR1czp0LnN0YXR1c319Y2F0Y2godCl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBzdGFydCBtYW5hZ2VkIGRjcm91dGVyOiIsdCkscy5nZXRTdGF0ZSgpfX0pLHB6YT1zby5jcmVhdGVBY3Rpb24oYXN5bmMgcz0+e2xldCBlPWlhKCk7dHJ5e2xldCB0PWF3YWl0IG5ldyBndC5wbHVnaW5zLnR5cGVkcmVxdWVzdC5UeXBlZFJlcXVlc3QoIi90eXBlZHJlcXVlc3QiLCJzdG9wTWFuYWdlZERjUm91dGVyIikuZmlyZSh7aWRlbnRpdHk6ZS5pZGVudGl0eX0pO3JldHVybnsuLi5zLmdldFN0YXRlKCksbWFuYWdlZERjUm91dGVyU3RhdHVzOnQuc3RhdHVzfX1jYXRjaCh0KXtyZXR1cm4gY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIHN0b3AgbWFuYWdlZCBkY3JvdXRlcjoiLHQpLHMuZ2V0U3RhdGUoKX19KSxoemE9c28uY3JlYXRlQWN0aW9uKGFzeW5jIHM9PntsZXQgZT1pYSgpO3RyeXtsZXQgdD1hd2FpdCBuZXcgZ3QucGx1Z2lucy50eXBlZHJlcXVlc3QuVHlwZWRSZXF1ZXN0KCIvdHlwZWRyZXF1ZXN0IiwicmVzdGFydE1hbmFnZWREY1JvdXRlciIpLmZpcmUoe2lkZW50aXR5OmUuaWRlbnRpdHl9KTtyZXR1cm57Li4ucy5nZXRTdGF0ZSgpLG1hbmFnZWREY1JvdXRlclN0YXR1czp0LnN0YXR1c319Y2F0Y2godCl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byByZXN0YXJ0IG1hbmFnZWQgZGNyb3V0ZXI6Iix0KSxzLmdldFN0YXRlKCl9fSksTWRuPXNvLmNyZWF0ZUFjdGlvbihhc3luYyhzLGUpPT57bGV0IHQ9aWEoKTt0cnl7cmV0dXJuIGF3YWl0IG5ldyBndC5wbHVnaW5zLnR5cGVkcmVxdWVzdC5UeXBlZFJlcXVlc3QoIi90eXBlZHJlcXVlc3QiLCJzZXRCYWNrdXBQYXNzd29yZCIpLmZpcmUoe2lkZW50aXR5OnQuaWRlbnRpdHkscGFzc3dvcmQ6ZS5wYXNzd29yZH0pLHsuLi5zLmdldFN0YXRlKCksYmFja3VwUGFzc3dvcmRDb25maWd1cmVkOiEwfX1jYXRjaChhKXtyZXR1cm4gY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIHNldCBiYWNrdXAgcGFzc3dvcmQ6IixhKSxzLmdldFN0YXRlKCl9fSksemRuPW1jLmNyZWF0ZUFjdGlvbihhc3luYyhzLGUpPT57bGV0IHQ9ZS52aWV3LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXHMrL2csIi0iKSxhPWUuc3Vidmlldz9lLnN1YnZpZXcudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9ccysvZywiLSIpOm51bGw7cmV0dXJuey4uLnMuZ2V0U3RhdGUoKSxhY3RpdmVWaWV3OnQsYWN0aXZlU3VidmlldzphfX0pLENkbj1tYy5jcmVhdGVBY3Rpb24oYXN5bmMgcz0+e2xldCBlPXMuZ2V0U3RhdGUoKTtyZXR1cm57Li4uZSxhdXRvUmVmcmVzaDohZS5hdXRvUmVmcmVzaH19KSxCeD1udWxsLG1zcz1pKGFzeW5jKCk9PntpZihRaS5nZXRTdGF0ZSgpLmlzTG9nZ2VkSW4pdHJ5e2F3YWl0IFByb21pc2UuYWxsKFthMC5kaXNwYXRjaEFjdGlvbihIeCxudWxsKSxaYS5kaXNwYXRjaEFjdGlvbih3SixudWxsKV0pfWNhdGNoe319LCJkaXNwYXRjaENvbWJpbmVkUmVmcmVzaEFjdGlvbiIpLGhjdD1pKCgpPT57bGV0IHM9bWMuZ2V0U3RhdGUoKSxlPVFpLmdldFN0YXRlKCk7cy5hdXRvUmVmcmVzaCYmZS5pc0xvZ2dlZEluPyhCeCYmY2xlYXJJbnRlcnZhbChCeCksQng9c2V0SW50ZXJ2YWwoKCk9Pnttc3MoKX0scy5yZWZyZXNoSW50ZXJ2YWwpKTpCeCYmKGNsZWFySW50ZXJ2YWwoQngpLEJ4PW51bGwpfSwic3RhcnRBdXRvUmVmcmVzaCIpO21jLnNlbGVjdChzPT5zKS5zdWJzY3JpYmUoKCk9PmhjdCgpKSxRaS5zZWxlY3Qocz0+cykuc3Vic2NyaWJlKCgpPT5oY3QoKSksaGN0KCk7bTc9bnVsbCx4Sj1uZXcgZ3QucGx1Z2lucy50eXBlZHJlcXVlc3QuVHlwZWRSb3V0ZXIsVU1hPWkoKHMsZSk9PntsZXQgdD1zLmZpbmRJbmRleChyPT5yLm5hbWU9PT1lLm5hbWUpO2lmKHQ9PT0tMSlyZXR1cm5bLi4ucyxlXTtsZXQgYT1bLi4uc107cmV0dXJuIGFbdF09ZSxhfSwidXBzZXJ0U2VydmljZSIpLFdNYT1pKChzLGUpPT4ocy5maW5kSW5kZXgocj0+ci5pZD09PWUuaWQpPT09LTE/W2UsLi4uc106cy5tYXAocj0+ci5pZD09PWUuaWQ/ZTpyKSkuc29ydCgocixuKT0+bi5zdGFydGVkQXQtci5zdGFydGVkQXQpLnNsaWNlKDAsMjUpLCJ1cHNlcnRVcGdyYWRlT3BlcmF0aW9uIik7eEouYWRkVHlwZWRIYW5kbGVyKG5ldyBndC5wbHVnaW5zLnR5cGVkcmVxdWVzdC5UeXBlZEhhbmRsZXIoInB1c2hTZXJ2aWNlVXBkYXRlIixhc3luYyBzPT57bGV0IGU9WXQuZ2V0U3RhdGUoKSx0PWUuc2VydmljZXMsYT1lLmN1cnJlbnRTZXJ2aWNlLHI9ZS5jdXJyZW50U2VydmljZUxvZ3Msbj1lLmN1cnJlbnRTZXJ2aWNlU3RhdHM7cmV0dXJuIHMuYWN0aW9uPT09ImRlbGV0ZWQiPyh0PXQuZmlsdGVyKG89Pm8ubmFtZSE9PXMuc2VydmljZU5hbWUpLGE/Lm5hbWU9PT1zLnNlcnZpY2VOYW1lJiYoYT1udWxsLHI9W10sbj1udWxsKSk6cy5zZXJ2aWNlJiYodD1VTWEodCxzLnNlcnZpY2UpLGE/Lm5hbWU9PT1zLnNlcnZpY2UubmFtZSYmKGE9cy5zZXJ2aWNlKSksWXQuc2V0U3RhdGUoey4uLmUsc2VydmljZXM6dCxjdXJyZW50U2VydmljZTphLGN1cnJlbnRTZXJ2aWNlTG9nczpyLGN1cnJlbnRTZXJ2aWNlU3RhdHM6bn0pLHt9fSkpLHhKLmFkZFR5cGVkSGFuZGxlcihuZXcgZ3QucGx1Z2lucy50eXBlZHJlcXVlc3QuVHlwZWRIYW5kbGVyKCJwdXNoQXBwU3RvcmVVcGdyYWRlUHJvZ3Jlc3MiLGFzeW5jIHM9PntsZXQgZT1jbC5nZXRTdGF0ZSgpO2lmKGNsLnNldFN0YXRlKHsuLi5lLHVwZ3JhZGVPcGVyYXRpb25zOldNYShlLnVwZ3JhZGVPcGVyYXRpb25zLHMub3BlcmF0aW9uKSx1cGdyYWRlYWJsZVNlcnZpY2VzOnMub3BlcmF0aW9uLnN0YXR1cz09PSJzdWNjZXNzIj9lLnVwZ3JhZGVhYmxlU2VydmljZXMuZmlsdGVyKHQ9PnQuc2VydmljZU5hbWUhPT1zLm9wZXJhdGlvbi5zZXJ2aWNlTmFtZSk6ZS51cGdyYWRlYWJsZVNlcnZpY2VzfSkscy5vcGVyYXRpb24uc2VydmljZSl7bGV0IHQ9WXQuZ2V0U3RhdGUoKTtZdC5zZXRTdGF0ZSh7Li4udCxzZXJ2aWNlczpVTWEodC5zZXJ2aWNlcyxzLm9wZXJhdGlvbi5zZXJ2aWNlKSxjdXJyZW50U2VydmljZTp0LmN1cnJlbnRTZXJ2aWNlPy5uYW1lPT09cy5vcGVyYXRpb24uc2VydmljZS5uYW1lP3Mub3BlcmF0aW9uLnNlcnZpY2U6dC5jdXJyZW50U2VydmljZX0pfXJldHVybnt9fSkpLHhKLmFkZFR5cGVkSGFuZGxlcihuZXcgZ3QucGx1Z2lucy50eXBlZHJlcXVlc3QuVHlwZWRIYW5kbGVyKCJwdXNoUGxhdGZvcm1TZXJ2aWNlTG9nIixhc3luYyBzPT57bGV0IGU9WXQuZ2V0U3RhdGUoKSx0PXtpZDplLmN1cnJlbnRQbGF0Zm9ybVNlcnZpY2VMb2dzLmxlbmd0aCxzZXJ2aWNlSWQ6MCx0aW1lc3RhbXA6bmV3IERhdGUocy5lbnRyeS50aW1lc3RhbXApLmdldFRpbWUoKSxtZXNzYWdlOnMuZW50cnkubWVzc2FnZSxsZXZlbDpzLmVudHJ5LmxldmVsLHNvdXJjZToic3Rkb3V0In0sYT1bLi4uZS5jdXJyZW50UGxhdGZvcm1TZXJ2aWNlTG9ncyx0XTtyZXR1cm4gYS5sZW5ndGg+MmUzJiZhLnNwbGljZSgwLGEubGVuZ3RoLTJlMyksWXQuc2V0U3RhdGUoey4uLmUsY3VycmVudFBsYXRmb3JtU2VydmljZUxvZ3M6YX0pLHt9fSkpLHhKLmFkZFR5cGVkSGFuZGxlcihuZXcgZ3QucGx1Z2lucy50eXBlZHJlcXVlc3QuVHlwZWRIYW5kbGVyKCJwdXNoU2VydmljZUxvZyIsYXN5bmMgcz0+e2xldCBlPVl0LmdldFN0YXRlKCk7aWYoIWUuY3VycmVudFNlcnZpY2V8fGUuY3VycmVudFNlcnZpY2UubmFtZSE9PXMuc2VydmljZU5hbWUpcmV0dXJue307bGV0IHQ9e2lkOmUuY3VycmVudFNlcnZpY2VMb2dzLmxlbmd0aCxzZXJ2aWNlSWQ6MCx0aW1lc3RhbXA6bmV3IERhdGUocy5lbnRyeS50aW1lc3RhbXApLmdldFRpbWUoKSxtZXNzYWdlOnMuZW50cnkubWVzc2FnZSxsZXZlbDpzLmVudHJ5LmxldmVsLHNvdXJjZToic3Rkb3V0In0sYT1bLi4uZS5jdXJyZW50U2VydmljZUxvZ3MsdF07cmV0dXJuIGEubGVuZ3RoPjJlMyYmYS5zcGxpY2UoMCxhLmxlbmd0aC0yZTMpLFl0LnNldFN0YXRlKHsuLi5lLGN1cnJlbnRTZXJ2aWNlTG9nczphfSkse319KSk7aShnc3MsImNvbm5lY3RTb2NrZXQiKTtpKGJzcywiZGlzY29ubmVjdFNvY2tldCIpO2Z6YT1jbC5jcmVhdGVBY3Rpb24oYXN5bmMgcz0+e2xldCBlPWlhKCk7dHJ5e2xldCBhPWF3YWl0IG5ldyBndC5wbHVnaW5zLnR5cGVkcmVxdWVzdC5UeXBlZFJlcXVlc3QoIi90eXBlZHJlcXVlc3QiLCJnZXRBcHBTdG9yZVRlbXBsYXRlcyIpLmZpcmUoe2lkZW50aXR5OmUuaWRlbnRpdHl9KTtyZXR1cm57Li4ucy5nZXRTdGF0ZSgpLGFwcHM6YS5hcHBzfX1jYXRjaCh0KXtyZXR1cm4gY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGZldGNoIGFwcCB0ZW1wbGF0ZXM6Iix0KSxzLmdldFN0YXRlKCl9fSksbXphPWNsLmNyZWF0ZUFjdGlvbihhc3luYyBzPT57bGV0IGU9aWEoKTt0cnl7bGV0IGE9YXdhaXQgbmV3IGd0LnBsdWdpbnMudHlwZWRyZXF1ZXN0LlR5cGVkUmVxdWVzdCgiL3R5cGVkcmVxdWVzdCIsImdldFVwZ3JhZGVhYmxlQXBwU3RvcmVTZXJ2aWNlcyIpLmZpcmUoe2lkZW50aXR5OmUuaWRlbnRpdHl9KTtyZXR1cm57Li4ucy5nZXRTdGF0ZSgpLHVwZ3JhZGVhYmxlU2VydmljZXM6YS5zZXJ2aWNlc319Y2F0Y2godCl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBmZXRjaCB1cGdyYWRlYWJsZSBzZXJ2aWNlczoiLHQpLHMuZ2V0U3RhdGUoKX19KSxMMmU9Y2wuY3JlYXRlQWN0aW9uKGFzeW5jIHM9PntsZXQgZT1pYSgpO3RyeXtsZXQgYT1hd2FpdCBuZXcgZ3QucGx1Z2lucy50eXBlZHJlcXVlc3QuVHlwZWRSZXF1ZXN0KCIvdHlwZWRyZXF1ZXN0IiwiZ2V0QXBwU3RvcmVVcGdyYWRlT3BlcmF0aW9ucyIpLmZpcmUoe2lkZW50aXR5OmUuaWRlbnRpdHl9KTtyZXR1cm57Li4ucy5nZXRTdGF0ZSgpLHVwZ3JhZGVPcGVyYXRpb25zOmEub3BlcmF0aW9uc319Y2F0Y2godCl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBmZXRjaCB1cGdyYWRlIG9wZXJhdGlvbnM6Iix0KSxzLmdldFN0YXRlKCl9fSksZ3phPWNsLmNyZWF0ZUFjdGlvbihhc3luYyhzLGUpPT57bGV0IHQ9aWEoKTt0cnl7bGV0IHI9YXdhaXQgbmV3IGd0LnBsdWdpbnMudHlwZWRyZXF1ZXN0LlR5cGVkUmVxdWVzdCgiL3R5cGVkcmVxdWVzdCIsInN0YXJ0QXBwU3RvcmVTZXJ2aWNlVXBncmFkZSIpLmZpcmUoe2lkZW50aXR5OnQuaWRlbnRpdHksc2VydmljZU5hbWU6ZS5zZXJ2aWNlTmFtZSx0YXJnZXRWZXJzaW9uOmUudGFyZ2V0VmVyc2lvbn0pLG49cy5nZXRTdGF0ZSgpO3JldHVybnsuLi5uLHVwZ3JhZGVPcGVyYXRpb25zOldNYShuLnVwZ3JhZGVPcGVyYXRpb25zLHIub3BlcmF0aW9uKX19Y2F0Y2goYSl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byB1cGdyYWRlIHNlcnZpY2U6IixhKSxzLmdldFN0YXRlKCl9fSk7UWkuc2VsZWN0KHM9PnMpLnN1YnNjcmliZShzPT57cy5pc0xvZ2dlZEluP2dzcygpOmJzcygpfSl9KTtmdW5jdGlvbiB2emEocyl7cmV0dXJuIHlzcy5pbmNsdWRlcyhzKX1mdW5jdGlvbiB4emEocyxlKXtyZXR1cm4gcXhbc10/LmluY2x1ZGVzKGUpPz8hMX12YXIgdnNzLGJ6YSxxeCxrY3QseHNzLHlzcyxTY3QsZGwsZzc9Zyhhc3luYygpPT57bGwoKTthd2FpdCBhMSgpO3Zzcz1ndC5wbHVnaW5zLnNtYXJ0cm91dGVyLlNtYXJ0Um91dGVyLGJ6YT1bImRhc2hib2FyZCIsInNldHRpbmdzIl0scXg9e2FwcHM6WyJhcHAtc3RvcmUiLCJzZXJ2aWNlcyJdLG5ldHdvcms6WyJwcm94eSIsImRvbWFpbnMiLCJkbnMtcmVjb3JkcyJdLHJlZ2lzdHJ5OlsicmVnaXN0cmllcyIsInRva2VucyJdfSxrY3Q9e2FwcHM6ImFwcC1zdG9yZSIsbmV0d29yazoicHJveHkiLHJlZ2lzdHJ5OiJyZWdpc3RyaWVzIn0seHNzPXsiYXBwLXN0b3JlIjp7dmlldzoiYXBwcyIsc3VidmlldzoiYXBwLXN0b3JlIn0sc2VydmljZXM6e3ZpZXc6ImFwcHMiLHN1YnZpZXc6InNlcnZpY2VzIn0scHJveHk6e3ZpZXc6Im5ldHdvcmsiLHN1YnZpZXc6InByb3h5In0sZG9tYWluczp7dmlldzoibmV0d29yayIsc3VidmlldzoiZG9tYWlucyJ9LCJkbnMtcmVjb3JkcyI6e3ZpZXc6Im5ldHdvcmsiLHN1YnZpZXc6ImRucy1yZWNvcmRzIn0scmVnaXN0cmllczp7dmlldzoicmVnaXN0cnkiLHN1YnZpZXc6InJlZ2lzdHJpZXMifSx0b2tlbnM6e3ZpZXc6InJlZ2lzdHJ5IixzdWJ2aWV3OiJ0b2tlbnMifX0seXNzPVsuLi5iemEsLi4uT2JqZWN0LmtleXMocXgpXTtpKHZ6YSwiaXNWYWxpZFZpZXciKTtpKHh6YSwiaXNWYWxpZFN1YnZpZXciKTtTY3Q9Y2xhc3N7c3RhdGlje2kodGhpcywiQXBwUm91dGVyIil9cm91dGVyO2luaXRpYWxpemVkPSExO3N1cHByZXNzU3RhdGVVcGRhdGU9ITE7Y29uc3RydWN0b3IoKXt0aGlzLnJvdXRlcj1uZXcgdnNzKHtkZWJ1ZzohMX0pfWluaXQoKXt0aGlzLmluaXRpYWxpemVkfHwodGhpcy5zZXR1cFJvdXRlcygpLHRoaXMuc2V0dXBTdGF0ZVN5bmMoKSx0aGlzLmhhbmRsZUluaXRpYWxSb3V0ZSgpLHRoaXMuaW5pdGlhbGl6ZWQ9ITApfXNldHVwUm91dGVzKCl7Zm9yKGxldCBlIG9mIGJ6YSl0aGlzLnJvdXRlci5vbihgLyR7ZX1gLGFzeW5jKCk9Pnt0aGlzLnVwZGF0ZVZpZXdTdGF0ZShlLG51bGwpfSk7Zm9yKGxldCBlIG9mIE9iamVjdC5rZXlzKHF4KSl7dGhpcy5yb3V0ZXIub24oYC8ke2V9YCxhc3luYygpPT57dGhpcy5uYXZpZ2F0ZVRvKGAvJHtlfS8ke2tjdFtlXX1gKX0pO2ZvcihsZXQgdCBvZiBxeFtlXSl0aGlzLnJvdXRlci5vbihgLyR7ZX0vJHt0fWAsYXN5bmMoKT0+e3RoaXMudXBkYXRlVmlld1N0YXRlKGUsdCl9KX10aGlzLnJvdXRlci5vbigiLyIsYXN5bmMoKT0+e3RoaXMubmF2aWdhdGVUbygiL2Rhc2hib2FyZCIpfSl9c2V0dXBTdGF0ZVN5bmMoKXttYy5zZWxlY3QoKS5zdWJzY3JpYmUoZT0+e2lmKHRoaXMuc3VwcHJlc3NTdGF0ZVVwZGF0ZSlyZXR1cm47bGV0IHQ9d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLGE9ZS5hY3RpdmVTdWJ2aWV3P2AvJHtlLmFjdGl2ZVZpZXd9LyR7ZS5hY3RpdmVTdWJ2aWV3fWA6YC8ke2UuYWN0aXZlVmlld31gO3QhPT1hJiYodGhpcy5zdXBwcmVzc1N0YXRlVXBkYXRlPSEwLHRoaXMucm91dGVyLnB1c2hVcmwoYSksdGhpcy5zdXBwcmVzc1N0YXRlVXBkYXRlPSExKX0pfWhhbmRsZUluaXRpYWxSb3V0ZSgpe2xldCBlPXdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtpZighZXx8ZT09PSIvIil7dGhpcy5yb3V0ZXIucHVzaFVybCgiL2Rhc2hib2FyZCIpO3JldHVybn1sZXQgdD1lLnNwbGl0KCIvIikuZmlsdGVyKEJvb2xlYW4pLGE9dFswXSxyPXRbMV07aWYoIXZ6YShhKSl7dGhpcy5yb3V0ZXIucHVzaFVybCgiL2Rhc2hib2FyZCIpO3JldHVybn1xeFthXT9yJiZ4emEoYSxyKT90aGlzLnVwZGF0ZVZpZXdTdGF0ZShhLHIpOnRoaXMucm91dGVyLnB1c2hVcmwoYC8ke2F9LyR7a2N0W2FdfWApOnRoaXMudXBkYXRlVmlld1N0YXRlKGEsbnVsbCl9dXBkYXRlVmlld1N0YXRlKGUsdCl7dGhpcy5zdXBwcmVzc1N0YXRlVXBkYXRlPSEwO2xldCBhPW1jLmdldFN0YXRlKCk7KGEuYWN0aXZlVmlldyE9PWV8fGEuYWN0aXZlU3VidmlldyE9PXQpJiZtYy5zZXRTdGF0ZSh7Li4uYSxhY3RpdmVWaWV3OmUsYWN0aXZlU3Vidmlldzp0fSksdGhpcy5zdXBwcmVzc1N0YXRlVXBkYXRlPSExfW5hdmlnYXRlVG8oZSl7dGhpcy5yb3V0ZXIucHVzaFVybChlKX1uYXZpZ2F0ZVRvVmlldyhlLHQpe2xldCBhPWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9ccysvZywiLSIpLHI9dD8udG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9ccysvZywiLSIpO2lmKCF2emEoYSkpe2xldCBuPXhzc1thXTtpZihuKXt0aGlzLm5hdmlnYXRlVG9WaWV3KG4udmlldyxuLnN1YnZpZXcpO3JldHVybn10aGlzLm5hdmlnYXRlVG8oIi9kYXNoYm9hcmQiKTtyZXR1cm59ciYmeHphKGEscik/dGhpcy5uYXZpZ2F0ZVRvKGAvJHthfS8ke3J9YCk6cXhbYV0/dGhpcy5uYXZpZ2F0ZVRvKGAvJHthfS8ke2tjdFthXX1gKTp0aGlzLm5hdmlnYXRlVG8oYC8ke2F9YCl9Z2V0Q3VycmVudFZpZXcoKXtsZXQgZT1tYy5nZXRTdGF0ZSgpO3JldHVybiBlLmFjdGl2ZVN1YnZpZXc/YCR7ZS5hY3RpdmVWaWV3fS8ke2UuYWN0aXZlU3Vidmlld31gOmUuYWN0aXZlVmlld31kZXN0cm95KCl7dGhpcy5yb3V0ZXIuZGVzdHJveSgpLHRoaXMuaW5pdGlhbGl6ZWQ9ITF9fSxkbD1uZXcgU2N0fSk7dmFyIEN6YT17fTt5dChDemEse09iVmlld0Rhc2hib2FyZDooKT0+Q2N0fSk7ZnVuY3Rpb24gd3phKHMpe3JldHVybiFzfHxzPT09MD8wOk1hdGgubWluKE1hdGguZmxvb3IoTWF0aC5sb2cocykvTWF0aC5sb2coMTAyNCkpLHl6YS5sZW5ndGgtMSl9ZnVuY3Rpb24gRTJlKHMsZSl7aWYoKCFzfHxzPT09MCkmJmU9PT12b2lkIDApcmV0dXJuIjAgQiI7bGV0IHQ9ZT8/d3phKHMpO3JldHVybmAkeyhzL01hdGgucG93KDEwMjQsdCkpLnRvRml4ZWQoMSl9ICR7eXphW3RdfWB9dmFyIGt6YSxTemEsX3phLE16YSx6emEsczEsX2N0LE1jdCx6Y3QseXphLHMwLENjdCxUY3Q9Zyhhc3luYygpPT57bGwoKTtCMigpO2F3YWl0IGExKCk7YXdhaXQgZzcoKTtwZSgpO3l6YT1bIkIiLCJLQiIsIk1CIiwiR0IiLCJUQiJdO2kod3phLCJnZXRCeXRlVW5pdEluZGV4Iik7aShFMmUsImZvcm1hdEJ5dGVzIiksenphPVtuZSgib2Itdmlldy1kYXNoYm9hcmQiKV07czA9Y2xhc3MgczAgZXh0ZW5kcyhNemE9d2UsX3phPVtZKCldLFN6YT1bWSgpXSxremE9W1koKV0sTXphKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCk7ZWEodGhpcyxfY3QsaXQoczEsOCx0aGlzLHtzdGF0dXM6bnVsbH0pKSxpdChzMSwxMSx0aGlzKTtlYSh0aGlzLE1jdCxpdChzMSwxMix0aGlzLHtzZXJ2aWNlczpbXSxjdXJyZW50U2VydmljZTpudWxsLGN1cnJlbnRTZXJ2aWNlTG9nczpbXSxjdXJyZW50U2VydmljZVN0YXRzOm51bGwscGxhdGZvcm1TZXJ2aWNlczpbXSxjdXJyZW50UGxhdGZvcm1TZXJ2aWNlOm51bGwsY3VycmVudFBsYXRmb3JtU2VydmljZVN0YXRzOm51bGwsY3VycmVudFBsYXRmb3JtU2VydmljZUxvZ3M6W119KSksaXQoczEsMTUsdGhpcyk7ZWEodGhpcyx6Y3QsaXQoczEsMTYsdGhpcyx7dGFyZ2V0czpbXSxzdGF0czpudWxsLHRyYWZmaWNTdGF0czpudWxsLGRuc1JlY29yZHM6W10sZG9tYWluczpbXSxnYXRld2F5RG9tYWluczpbXSxnYXRld2F5RG5zUmVjb3JkczpbXSxjZXJ0aWZpY2F0ZXM6W119KSksaXQoczEsMTksdGhpcyk7bGV0IHQ9YTAuc2VsZWN0KG49Pm4pLnN1YnNjcmliZShuPT57dGhpcy5zeXN0ZW1TdGF0ZT1ufSk7dGhpcy5yeFN1YnNjcmlwdGlvbnMucHVzaCh0KTtsZXQgYT1ZdC5zZWxlY3Qobj0+bikuc3Vic2NyaWJlKG49Pnt0aGlzLnNlcnZpY2VzU3RhdGU9bn0pO3RoaXMucnhTdWJzY3JpcHRpb25zLnB1c2goYSk7bGV0IHI9WmEuc2VsZWN0KG49Pm4pLnN1YnNjcmliZShuPT57dGhpcy5uZXR3b3JrU3RhdGU9bn0pO3RoaXMucnhTdWJzY3JpcHRpb25zLnB1c2gocil9YXN5bmMgY29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLGF3YWl0IFByb21pc2UuYWxsKFthMC5kaXNwYXRjaEFjdGlvbihIeCxudWxsKSxZdC5kaXNwYXRjaEFjdGlvbih6MmUsbnVsbCksWXQuZGlzcGF0Y2hBY3Rpb24oQzJlLG51bGwpLFphLmRpc3BhdGNoQWN0aW9uKHlKLG51bGwpLFphLmRpc3BhdGNoQWN0aW9uKHdKLG51bGwpLFphLmRpc3BhdGNoQWN0aW9uKCQyZSxudWxsKV0pfXJlbmRlcigpe2xldCB0PXRoaXMuc3lzdGVtU3RhdGUuc3RhdHVzLGE9dGhpcy5zZXJ2aWNlc1N0YXRlLnNlcnZpY2VzLHI9dGhpcy5zZXJ2aWNlc1N0YXRlLnBsYXRmb3JtU2VydmljZXMsbj10aGlzLm5ldHdvcmtTdGF0ZS5zdGF0cyxvPXRoaXMubmV0d29ya1N0YXRlLnRyYWZmaWNTdGF0cyxsPXRoaXMubmV0d29ya1N0YXRlLmNlcnRpZmljYXRlcyxwPW8/LnN0YXR1c0NvdW50c3x8e30sZD1hLmZpbHRlcihmPT5mLnN0YXR1cz09PSJydW5uaW5nIikubGVuZ3RoLHU9YS5maWx0ZXIoZj0+Zi5zdGF0dXM9PT0ic3RvcHBlZCIpLmxlbmd0aCxjPXd6YSh0Py5kb2NrZXI/Lm1lbW9yeVRvdGFsfHx0Py5kb2NrZXI/Lm1lbW9yeVVzYWdlfHwwKSxiPWwuZmlsdGVyKGY9PmYuaXNWYWxpZCkubGVuZ3RoLHY9bC5maWx0ZXIoZj0+Zi5pc1ZhbGlkJiZmLmV4cGlyZXNBdCYmZi5leHBpcmVzQXQtRGF0ZS5ub3coKTw3MjAqNjAqNjAqMWUzKS5sZW5ndGgseD1sLmZpbHRlcihmPT4hZi5pc1ZhbGlkKS5sZW5ndGgsbT17Y2x1c3Rlcjp7dG90YWxTZXJ2aWNlczphLmxlbmd0aCxydW5uaW5nOmQsc3RvcHBlZDp1LGRvY2tlclN0YXR1czp0Py5kb2NrZXI/LnJ1bm5pbmc/InJ1bm5pbmciOiJzdG9wcGVkIn0scmVzb3VyY2VVc2FnZTp7Y3B1OnQ/LmRvY2tlcj8uY3B1VXNhZ2V8fDAsbWVtb3J5VXNlZDpFMmUodD8uZG9ja2VyPy5tZW1vcnlVc2FnZXx8MCxjKSxtZW1vcnlUb3RhbDpFMmUodD8uZG9ja2VyPy5tZW1vcnlUb3RhbHx8MCxjKSxuZXR3b3JrSW46RTJlKHQ/LmRvY2tlcj8ubmV0d29ya0lufHwwKSxuZXR3b3JrT3V0OkUyZSh0Py5kb2NrZXI/Lm5ldHdvcmtPdXR8fDApLHRvcENvbnN1bWVyczpbXX0scGxhdGZvcm1TZXJ2aWNlczpyLmZpbHRlcihmPT5mLnN0YXR1cz09PSJydW5uaW5nInx8Zi5zdGF0dXM9PT0ic3RhcnRpbmcifHxmLnN0YXR1cz09PSJzdG9wcGluZyJ8fGYuaXNDb3JlKS5tYXAoZj0+KHtuYW1lOmYuZGlzcGxheU5hbWUsc3RhdHVzOmYuc3RhdHVzPT09InJ1bm5pbmciPyJSdW5uaW5nIjpmLnN0YXR1cz09PSJzdGFydGluZyI/IlN0YXJ0aW5nLi4uIjpmLnN0YXR1cz09PSJzdG9wcGluZyI/IlN0b3BwaW5nLi4uIjoiU3RvcHBlZCIscnVubmluZzpmLnN0YXR1cz09PSJydW5uaW5nIn0pKSx0cmFmZmljOntyZXF1ZXN0czpvPy5yZXF1ZXN0Q291bnR8fDAsZXJyb3JzOm8/LmVycm9yQ291bnR8fDAsZXJyb3JQZXJjZW50Om8/LmVycm9yUmF0ZXx8MCxhdmdSZXNwb25zZTpvPy5hdmdSZXNwb25zZVRpbWV8fDAscmVxUGVyTWluOm8/LnJlcXVlc3RzUGVyTWludXRlfHwwLHN0YXR1czJ4eDpwWyIyeHgiXXx8MCxzdGF0dXMzeHg6cFsiM3h4Il18fDAsc3RhdHVzNHh4OnBbIjR4eCJdfHwwLHN0YXR1czV4eDpwWyI1eHgiXXx8MH0scHJveHk6e2h0dHBQb3J0OlN0cmluZyhuPy5wcm94eT8uaHR0cFBvcnR8fDgwKSxodHRwc1BvcnQ6U3RyaW5nKG4/LnByb3h5Py5odHRwc1BvcnR8fDQ0MyksaHR0cEFjdGl2ZTpuPy5wcm94eT8ucnVubmluZ3x8ITEsaHR0cHNBY3RpdmU6bj8ucHJveHk/LnJ1bm5pbmd8fCExLHJvdXRlQ291bnQ6U3RyaW5nKG4/LnByb3h5Py5yb3V0ZXN8fDApfSxjZXJ0aWZpY2F0ZXM6e3ZhbGlkOmIsZXhwaXJpbmc6dixleHBpcmVkOnh9LGRuc0NvbmZpZ3VyZWQ6dD8uZG5zPy5jb25maWd1cmVkfHwhMSxhY21lQ29uZmlndXJlZDp0Py5zc2w/LmNvbmZpZ3VyZWR8fCExLHF1aWNrQWN0aW9uczpbe2xhYmVsOiJEZXBsb3kgU2VydmljZSIsaWNvbjoibHVjaWRlOlBsdXMiLHByaW1hcnk6ITB9LHtsYWJlbDoiQWRkIERvbWFpbiIsaWNvbjoibHVjaWRlOkdsb2JlIn0se2xhYmVsOiJWaWV3IExvZ3MiLGljb246Imx1Y2lkZTpGaWxlVGV4dCJ9XX07cmV0dXJuIHdgCiAgICAgIDxvYi1zZWN0aW9uaGVhZGluZz5EYXNoYm9hcmQ8L29iLXNlY3Rpb25oZWFkaW5nPgogICAgICA8ZGl2IGNsYXNzPSJkYXNoYm9hcmQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzZWN0aW9uIj4KICAgICAgICAgIDxoMiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+Q2x1c3RlciBPdmVydmlldzwvaDI+CiAgICAgICAgICA8c3otc3RhdHVzLWdyaWQtY2x1c3RlciAuc3RhdHM9JHttLmNsdXN0ZXJ9Pjwvc3otc3RhdHVzLWdyaWQtY2x1c3Rlcj4KICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzZWN0aW9uIj4KICAgICAgICAgIDxoMiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+U2VydmljZXMgJiBSZXNvdXJjZXM8L2gyPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VydmljZXMtZ3JpZCI+CiAgICAgICAgICAgIDxzei1yZXNvdXJjZS11c2FnZS1jYXJkIC5kYXRhPSR7bS5yZXNvdXJjZVVzYWdlfT48L3N6LXJlc291cmNlLXVzYWdlLWNhcmQ+CiAgICAgICAgICAgIDxzei1wbGF0Zm9ybS1zZXJ2aWNlcy1jYXJkCiAgICAgICAgICAgICAgLnNlcnZpY2VzPSR7bS5wbGF0Zm9ybVNlcnZpY2VzfQogICAgICAgICAgICAgIEBzZXJ2aWNlLWNsaWNrPSR7Zj0+dGhpcy5oYW5kbGVQbGF0Zm9ybVNlcnZpY2VDbGljayhmKX0KICAgICAgICAgICAgPjwvc3otcGxhdGZvcm0tc2VydmljZXMtY2FyZD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNlY3Rpb24iPgogICAgICAgICAgPGgyIGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5OZXR3b3JrICYgVHJhZmZpYzwvaDI+CiAgICAgICAgICA8c3otc3RhdHVzLWdyaWQtbmV0d29yawogICAgICAgICAgICAudHJhZmZpYz0ke20udHJhZmZpY30KICAgICAgICAgICAgLnByb3h5PSR7bS5wcm94eX0KICAgICAgICAgICAgLmNlcnRpZmljYXRlcz0ke20uY2VydGlmaWNhdGVzfQogICAgICAgICAgPjwvc3otc3RhdHVzLWdyaWQtbmV0d29yaz4KICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzZWN0aW9uIj4KICAgICAgICAgIDxoMiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+SW5mcmFzdHJ1Y3R1cmU8L2gyPgogICAgICAgICAgPHN6LXN0YXR1cy1ncmlkLWluZnJhCiAgICAgICAgICAgID9kbnNDb25maWd1cmVkPSR7bS5kbnNDb25maWd1cmVkfQogICAgICAgICAgICA/YWNtZUNvbmZpZ3VyZWQ9JHttLmFjbWVDb25maWd1cmVkfQogICAgICAgICAgICAuYWN0aW9ucz0ke20ucXVpY2tBY3Rpb25zfQogICAgICAgICAgICBAYWN0aW9uLWNsaWNrPSR7Zj0+dGhpcy5oYW5kbGVRdWlja0FjdGlvbihmKX0KICAgICAgICAgID48L3N6LXN0YXR1cy1ncmlkLWluZnJhPgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgPC9kaXY+CiAgICBgfWhhbmRsZVF1aWNrQWN0aW9uKHQpe2xldCBhPXQuZGV0YWlsPy5hY3Rpb258fHQuZGV0YWlsPy5sYWJlbDthPT09IkRlcGxveSBTZXJ2aWNlIj9kbC5uYXZpZ2F0ZVRvVmlldygic2VydmljZXMiKTphPT09IkFkZCBEb21haW4iJiZkbC5uYXZpZ2F0ZVRvVmlldygibmV0d29yayIpfWhhbmRsZVBsYXRmb3JtU2VydmljZUNsaWNrKHQpe2xldCBhPXQuZGV0YWlsPy5uYW1lLHI9dGhpcy5zZXJ2aWNlc1N0YXRlLnBsYXRmb3JtU2VydmljZXMuZmluZChuPT5uLmRpc3BsYXlOYW1lPT09YSk7ciYmKFl0LnNldFN0YXRlKHsuLi5ZdC5nZXRTdGF0ZSgpLGN1cnJlbnRQbGF0Zm9ybVNlcnZpY2U6cn0pLGRsLm5hdmlnYXRlVG9WaWV3KCJzZXJ2aWNlcyIpKX19O3MxPVJpKE16YSksX2N0PW5ldyBXZWFrTWFwLE1jdD1uZXcgV2Vha01hcCx6Y3Q9bmV3IFdlYWtNYXAsUnQoczEsNCwic3lzdGVtU3RhdGUiLF96YSxzMCxfY3QpLFJ0KHMxLDQsInNlcnZpY2VzU3RhdGUiLFN6YSxzMCxNY3QpLFJ0KHMxLDQsIm5ldHdvcmtTdGF0ZSIsa3phLHMwLHpjdCksczA9UnQoczEsMCwiT2JWaWV3RGFzaGJvYXJkIix6emEsczApLGkoczAsIk9iVmlld0Rhc2hib2FyZCIpLHZpKHMwLCJzdHlsZXMiLFtoLmRlZmF1bHRTdHlsZXMseW8sSmAKICAgICAgLmRhc2hib2FyZCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMjRweDsKICAgICAgfQoKICAgICAgLnNlY3Rpb24gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgfQoKICAgICAgLnNlY3Rpb24tdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzE4MTgxYiIsIiNmYWZhZmEiKX07CiAgICAgICAgbWFyZ2luOiAwIDAgMTJweDsKICAgICAgfQoKICAgICAgLnNlcnZpY2VzLWdyaWQgewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CiAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoOwogICAgICB9CgogICAgICAuc2VydmljZXMtZ3JpZCA+ICogewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgICAgICAgLnNlcnZpY2VzLWdyaWQgewogICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOwogICAgICAgIH0KICAgICAgfQogICAgYF0pLGl0KHMxLDEsczApO0NjdD1zMH0pO3ZhciBIemE9e307eXQoSHphLHtPYlZpZXdBcHBTdG9yZTooKT0+QmN0fSk7dmFyIFR6YSwkemEsRHphLEx6YSxFemEsUHphLEl6YSxBemEsTnphLFJ6YSxPemEsRnphLEJ6YSxKYSwkY3QsRGN0LExjdCxFY3QsUGN0LEljdCxBY3QsTmN0LFJjdCxPY3QsRmN0LHdvLEJjdCxxemE9Zyhhc3luYygpPT57bGwoKTtCMigpO2F3YWl0IGExKCk7RngoKTthd2FpdCBnNygpO3BlKCk7QnphPVtuZSgib2Itdmlldy1hcHBzdG9yZSIpXTt3bz1jbGFzcyB3byBleHRlbmRzKEZ6YT13ZSxPemE9W1koKV0sUnphPVtZKCldLE56YT1bWSgpXSxBemE9W1koKV0sSXphPVtZKCldLFB6YT1bWSgpXSxFemE9W1koKV0sTHphPVtZKCldLER6YT1bWSgpXSwkemE9W1koKV0sVHphPVtZKCldLEZ6YSl7Y29uc3RydWN0b3IoKXtzdXBlcigpO2VhKHRoaXMsJGN0LGl0KEphLDgsdGhpcyx7YXBwczpbXSx1cGdyYWRlYWJsZVNlcnZpY2VzOltdLHVwZ3JhZGVPcGVyYXRpb25zOltdfSkpLGl0KEphLDExLHRoaXMpO2VhKHRoaXMsRGN0LGl0KEphLDEyLHRoaXMsImdyaWQiKSksaXQoSmEsMTUsdGhpcyk7ZWEodGhpcyxMY3QsaXQoSmEsMTYsdGhpcyxudWxsKSksaXQoSmEsMTksdGhpcyk7ZWEodGhpcyxFY3QsaXQoSmEsMjAsdGhpcyxudWxsKSksaXQoSmEsMjMsdGhpcyk7ZWEodGhpcyxQY3QsaXQoSmEsMjQsdGhpcyxudWxsKSksaXQoSmEsMjcsdGhpcyk7ZWEodGhpcyxJY3QsaXQoSmEsMjgsdGhpcywiIikpLGl0KEphLDMxLHRoaXMpO2VhKHRoaXMsQWN0LGl0KEphLDMyLHRoaXMsW10pKSxpdChKYSwzNSx0aGlzKTtlYSh0aGlzLE5jdCxpdChKYSwzNix0aGlzLCIiKSksaXQoSmEsMzksdGhpcyk7ZWEodGhpcyxSY3QsaXQoSmEsNDAsdGhpcywiIikpLGl0KEphLDQzLHRoaXMpO2VhKHRoaXMsT2N0LGl0KEphLDQ0LHRoaXMsITEpKSxpdChKYSw0Nyx0aGlzKTtlYSh0aGlzLEZjdCxpdChKYSw0OCx0aGlzLCExKSksaXQoSmEsNTEsdGhpcyk7bGV0IHQ9Y2wuc2VsZWN0KGE9PmEpLnN1YnNjcmliZShhPT57dGhpcy5hcHBTdG9yZVN0YXRlPWF9KTt0aGlzLnJ4U3Vic2NyaXB0aW9ucy5wdXNoKHQpfWFzeW5jIGNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSxhd2FpdCBQcm9taXNlLmFsbChbY2wuZGlzcGF0Y2hBY3Rpb24oZnphLG51bGwpLGNsLmRpc3BhdGNoQWN0aW9uKEwyZSxudWxsKV0pfXJlbmRlcigpe3JldHVybiB0aGlzLmN1cnJlbnRWaWV3PT09ImRldGFpbCI/dGhpcy5yZW5kZXJEZXRhaWxWaWV3KCk6dGhpcy5yZW5kZXJHcmlkVmlldygpfXJlbmRlckdyaWRWaWV3KCl7bGV0IHQ9dGhpcy5hcHBTdG9yZVN0YXRlLmFwcHMubWFwKGE9Pih7aWQ6YS5pZCxuYW1lOmEubmFtZSxkZXNjcmlwdGlvbjphLmRlc2NyaXB0aW9uLGNhdGVnb3J5OmEuY2F0ZWdvcnksaWNvbk5hbWU6YS5pY29uTmFtZSxpY29uVXJsOmEuaWNvblVybCxpbWFnZToiIixwb3J0OjB9KSk7cmV0dXJuIHdgCiAgICAgIDxvYi1zZWN0aW9uaGVhZGluZz5BcHAgU3RvcmU8L29iLXNlY3Rpb25oZWFkaW5nPgogICAgICAke3RoaXMucmVuZGVyVXBncmFkZU9wZXJhdGlvbnMoKX0KICAgICAgJHt0Lmxlbmd0aD09PTA/d2A8ZGl2IGNsYXNzPSJsb2FkaW5nLXNwaW5uZXIiPkxvYWRpbmcgYXBwIHRlbXBsYXRlcy4uLjwvZGl2PmA6d2AKICAgICAgICAgIDxzei1hcHAtc3RvcmUtdmlldwogICAgICAgICAgICAuYXBwcz0ke3R9CiAgICAgICAgICAgIEB2aWV3LWFwcD0ke2E9PnRoaXMuaGFuZGxlVmlld0RldGFpbHMoYSl9CiAgICAgICAgICAgIEBkZXBsb3ktYXBwPSR7YT0+dGhpcy5oYW5kbGVBcHBDbGljayhhKX0KICAgICAgICAgID48L3N6LWFwcC1zdG9yZS12aWV3PgogICAgICAgIGB9CiAgICBgfXJlbmRlclVwZ3JhZGVPcGVyYXRpb25zKCl7bGV0IHQ9dGhpcy5hcHBTdG9yZVN0YXRlLnVwZ3JhZGVPcGVyYXRpb25zLmZpbHRlcihhPT5hLnN0YXR1cz09PSJydW5uaW5nInx8YS5zdGF0dXM9PT0iZmFpbGVkIikuc2xpY2UoMCwzKTtyZXR1cm4gdC5sZW5ndGg9PT0wPyIiOndgCiAgICAgIDxkaXYgY2xhc3M9ImRldGFpbC1jYXJkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWxhYmVsIj5SZWNlbnQgVXBncmFkZSBPcGVyYXRpb25zPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9vdHByaW50LWxpc3QiPgogICAgICAgICAgJHt0Lm1hcChhPT53YAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290cHJpbnQtaXRlbSI+CiAgICAgICAgICAgICAgPHNwYW4+JHthLnNlcnZpY2VOYW1lfTogJHthLmZyb21WZXJzaW9ufSAmcmFycjsgJHthLnRhcmdldFZlcnNpb259PC9zcGFuPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmb290cHJpbnQtbWV0YSI+JHthLnN0YXR1c30gLyAke2Euc3RlcH08L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYCl9CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJEZXRhaWxWaWV3KCl7aWYodGhpcy5sb2FkaW5nKXJldHVybiB3YAogICAgICAgIDxvYi1zZWN0aW9uaGVhZGluZz5BcHAgU3RvcmU8L29iLXNlY3Rpb25oZWFkaW5nPgogICAgICAgIDxkaXYgY2xhc3M9ImxvYWRpbmctc3Bpbm5lciI+TG9hZGluZyBhcHAgZGV0YWlscy4uLjwvZGl2PgogICAgICBgO2xldCB0PXRoaXMuc2VsZWN0ZWRBcHAsYT10aGlzLnNlbGVjdGVkQXBwTWV0YSxyPXRoaXMuc2VsZWN0ZWRBcHBDb25maWc7aWYoIXR8fCFyKXJldHVybiB3YAogICAgICAgIDxvYi1zZWN0aW9uaGVhZGluZz5BcHAgU3RvcmU8L29iLXNlY3Rpb25oZWFkaW5nPgogICAgICAgIDxkaXYgY2xhc3M9ImxvYWRpbmctc3Bpbm5lciI+QXBwIG5vdCBmb3VuZC48L2Rpdj4KICAgICAgYDtsZXQgbj1yLnBsYXRmb3JtUmVxdWlyZW1lbnRzfHx7fSxvPU9iamVjdC52YWx1ZXMobikuc29tZShCb29sZWFuKSxsPXttb25nb2RiOiJNb25nb0RCIixzMzoiUzMgKE1pbklPKSIsY2xpY2tob3VzZToiQ2xpY2tIb3VzZSIscmVkaXM6IlJlZGlzIixtYXJpYWRiOiJNYXJpYURCIn07cmV0dXJuIHdgCiAgICAgIDxvYi1zZWN0aW9uaGVhZGluZz5BcHAgU3RvcmU8L29iLXNlY3Rpb25oZWFkaW5nPgogICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXNlY29uZGFyeSIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDE2cHg7IiBAY2xpY2s9JHsoKT0+e3RoaXMuY3VycmVudFZpZXc9ImdyaWQifX0+CiAgICAgICAgJmxhcnI7IEJhY2sgdG8gQXBwIFN0b3JlCiAgICAgIDwvYnV0dG9uPgoKICAgICAgPCEtLSBIZWFkZXIgLS0+CiAgICAgIDxkaXYgY2xhc3M9ImRldGFpbC1jYXJkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJkZXRhaWwtaGVhZGVyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImRldGFpbC1pY29uIj4keyh0Lm5hbWV8fCI/IilbMF0udG9VcHBlckNhc2UoKX08L2Rpdj4KICAgICAgICAgIDxkaXYgc3R5bGU9ImZsZXg6IDE7Ij4KICAgICAgICAgICAgPGgyIGNsYXNzPSJkZXRhaWwtdGl0bGUiPiR7dC5uYW1lfTwvaDI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkZXRhaWwtY2F0ZWdvcnkiPiR7dC5jYXRlZ29yeX08L3NwYW4+CiAgICAgICAgICAgIDxwIGNsYXNzPSJkZXRhaWwtZGVzY3JpcHRpb24iPiR7dC5kZXNjcmlwdGlvbn08L3A+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRldGFpbC1tZXRhIj4KICAgICAgICAgICAgICAke2E/Lm1haW50YWluZXI/d2A8c3Bhbj5NYWludGFpbmVyOiA8c3Ryb25nPiR7YS5tYWludGFpbmVyfTwvc3Ryb25nPjwvc3Bhbj5gOiIifQogICAgICAgICAgICAgICR7YT8ubGlua3M/T2JqZWN0LmVudHJpZXMoYS5saW5rcykubWFwKChbcCxkXSk9PndgPGEgaHJlZj0iJHtkfSIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPiR7cH08L2E+YCk6IiJ9CiAgICAgICAgICAgICAgJHt0LnRhZ3M/Lmxlbmd0aD93YDxzcGFuPlRhZ3M6ICR7dC50YWdzLmpvaW4oIiwgIil9PC9zcGFuPmA6IiJ9CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPCEtLSBQbGF0Zm9ybSBTZXJ2aWNlcyAtLT4KICAgICAgJHtvP3dgCiAgICAgICAgPGRpdiBjbGFzcz0iZGV0YWlsLWNhcmQiPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1sYWJlbCI+UGxhdGZvcm0gU2VydmljZXM8L2Rpdj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICR7T2JqZWN0LmVudHJpZXMobikuZmlsdGVyKChbcCxkXSk9PmQpLm1hcCgoW3BdKT0+d2A8c3BhbiBjbGFzcz0iYmFkZ2UiPiR7bFtwXXx8cH08L3NwYW4+YCl9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZTogMTJweDsgY29sb3I6IHZhcigtLWNpLXNoYWRlLTQsICM3MTcxN2EpOyBtYXJnaW4tdG9wOiA4cHg7Ij4KICAgICAgICAgICAgVGhlc2UgcGxhdGZvcm0gc2VydmljZXMgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHByb3Zpc2lvbmVkIHdoZW4geW91IGRlcGxveS4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICBgOiIifQoKICAgICAgJHt0aGlzLnJlbmRlckRlcGxveW1lbnRGb290cHJpbnQocil9CgogICAgICA8IS0tIFZlcnNpb24gJiBJbWFnZSAtLT4KICAgICAgPGRpdiBjbGFzcz0iZGV0YWlsLWNhcmQiPgogICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tbGFiZWwiPlZlcnNpb248L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJzaW9uLXJvdyI+CiAgICAgICAgICA8c2VsZWN0IGNsYXNzPSJ2ZXJzaW9uLXNlbGVjdCIgQGNoYW5nZT0ke3A9PnRoaXMuaGFuZGxlVmVyc2lvbkNoYW5nZShwLnRhcmdldC52YWx1ZSl9PgogICAgICAgICAgICAkeyhhPy52ZXJzaW9uc3x8W3RoaXMuc2VsZWN0ZWRWZXJzaW9uXSkubWFwKHA9PndgPG9wdGlvbiB2YWx1ZT0iJHtwfSIgP3NlbGVjdGVkPSR7cD09PXRoaXMuc2VsZWN0ZWRWZXJzaW9ufT4ke3B9JHtwPT09dC5sYXRlc3RWZXJzaW9uPyIgKGxhdGVzdCkiOiIifTwvb3B0aW9uPmApfQogICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iaW1hZ2UtdGFnIj4ke3IuaW1hZ2V9PC9zcGFuPgogICAgICAgICAgJHtyLm1pbk9uZWJveFZlcnNpb24/d2A8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB4OyBjb2xvcjogdmFyKC0tY2ktc2hhZGUtNCwgIzcxNzE3YSk7Ij5SZXF1aXJlcyBvbmVib3ggJmdlOyAke3IubWluT25lYm94VmVyc2lvbn08L3NwYW4+YDoiIn0KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8IS0tIEVudmlyb25tZW50IFZhcmlhYmxlcyAtLT4KICAgICAgJHt0aGlzLmVkaXRhYmxlRW52VmFycy5sZW5ndGg+MD93YAogICAgICAgIDxkaXYgY2xhc3M9ImRldGFpbC1jYXJkIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tbGFiZWwiPkVudmlyb25tZW50IFZhcmlhYmxlczwvZGl2PgogICAgICAgICAgPHRhYmxlIGNsYXNzPSJlbnYtdGFibGUiPgogICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDogMzAlOyI+VmFyaWFibGU8L3RoPgogICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDogNDAlOyI+VmFsdWU8L3RoPgogICAgICAgICAgICAgICAgPHRoPkRlc2NyaXB0aW9uPC90aD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgJHt0aGlzLmVkaXRhYmxlRW52VmFycy5tYXAoKHAsZCk9PndgCiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZW52LWtleSI+JHtwLmtleX08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgJHtwLnJlcXVpcmVkP3dgPHNwYW4gY2xhc3M9ImVudi1iYWRnZSByZXF1aXJlZCI+cmVxdWlyZWQ8L3NwYW4+YDoiIn0KICAgICAgICAgICAgICAgICAgICAke3AucGxhdGZvcm1JbmplY3RlZD93YDxzcGFuIGNsYXNzPSJlbnYtYmFkZ2UgYXV0byI+YXV0bzwvc3Bhbj5gOiIifQogICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0CiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZW52LWlucHV0IgogICAgICAgICAgICAgICAgICAgICAgdHlwZT0idGV4dCIKICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZT0ke3AudmFsdWV9CiAgICAgICAgICAgICAgICAgICAgICA/ZGlzYWJsZWQ9JHtwLnBsYXRmb3JtSW5qZWN0ZWR8fCF0aGlzLmRlcGxveU1vZGV9CiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj0ke3AucGxhdGZvcm1JbmplY3RlZD8iQXV0by1pbmplY3RlZCBieSBwbGF0Zm9ybSI6IkVudGVyIHZhbHVlLi4uIn0KICAgICAgICAgICAgICAgICAgICAgIEBpbnB1dD0ke3U9PnRoaXMuaGFuZGxlRW52VmFyQ2hhbmdlKGQsdS50YXJnZXQudmFsdWUpfQogICAgICAgICAgICAgICAgICAgIC8+CiAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz0iZW52LWRlc2MiPiR7cC5kZXNjcmlwdGlvbnx8IiJ9PC9zcGFuPjwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIGApfQogICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2Rpdj4KICAgICAgYDoiIn0KCiAgICAgIDwhLS0gRGVwbG95IHNlY3Rpb24gKG9ubHkgaW4gZGVwbG95IG1vZGUpIG9yIGFjdGlvbiBidXR0b24gKHZpZXcgbW9kZSkgLS0+CiAgICAgICR7dGhpcy5kZXBsb3lNb2RlP3dgCiAgICAgICAgPGRpdiBjbGFzcz0iZGV0YWlsLWNhcmQiPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1sYWJlbCI+U2VydmljZSBOYW1lPC9kaXY+CiAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgY2xhc3M9Im5hbWUtaW5wdXQiCiAgICAgICAgICAgIHR5cGU9InRleHQiCiAgICAgICAgICAgIC52YWx1ZT0ke3RoaXMuc2VydmljZU5hbWV9CiAgICAgICAgICAgIHBsYWNlaG9sZGVyPSJlLmcuIG15LWdob3N0LWJsb2ciCiAgICAgICAgICAgIEBpbnB1dD0ke3A9Pnt0aGlzLnNlcnZpY2VOYW1lPXAudGFyZ2V0LnZhbHVlfX0KICAgICAgICAgIC8+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJmb250LXNpemU6IDEycHg7IGNvbG9yOiB2YXIoLS1jaS1zaGFkZS00LCAjNzE3MTdhKTsgbWFyZ2luLXRvcDogNnB4OyI+CiAgICAgICAgICAgIExvd2VyY2FzZSBsZXR0ZXJzLCBudW1iZXJzLCBhbmQgaHlwaGVucyBvbmx5LgogICAgICAgICAgPC9kaXY+CgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1sYWJlbCIgc3R5bGU9Im1hcmdpbi10b3A6IDE4cHg7Ij5Eb21haW48L2Rpdj4KICAgICAgICAgIDxpbnB1dAogICAgICAgICAgICBjbGFzcz0ibmFtZS1pbnB1dCIKICAgICAgICAgICAgdHlwZT0idGV4dCIKICAgICAgICAgICAgLnZhbHVlPSR7dGhpcy5zZXJ2aWNlRG9tYWlufQogICAgICAgICAgICBwbGFjZWhvbGRlcj0iZS5nLiBjbG91ZGx5LmV4YW1wbGUuY29tIgogICAgICAgICAgICBAaW5wdXQ9JHtwPT50aGlzLmhhbmRsZVNlcnZpY2VEb21haW5DaGFuZ2UocC50YXJnZXQudmFsdWUpfQogICAgICAgICAgLz4KICAgICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZTogMTJweDsgY29sb3I6IHZhcigtLWNpLXNoYWRlLTQsICM3MTcxN2EpOyBtYXJnaW4tdG9wOiA2cHg7Ij4KICAgICAgICAgICAgT25lYm94IHJvdXRlcyB0aGlzIGRvbWFpbiB0byB0aGUgZGVwbG95ZWQgYXBwLiBSZXF1aXJlZCB3aGVuIHRoZSBhcHAgdXNlcyBTRVJWSUNFX0RPTUFJTi4KICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICR7dGhpcy5yZW5kZXJEZXBsb3lDb25maXJtYXRpb24ocil9CgogICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9ucy1yb3ciPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXNlY29uZGFyeSIgQGNsaWNrPSR7KCk9Pnt0aGlzLmN1cnJlbnRWaWV3PSJncmlkIn19PkNhbmNlbDwvYnV0dG9uPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiIEBjbGljaz0keygpPT50aGlzLmhhbmRsZURlcGxveSgpfT4KICAgICAgICAgICAgICBEZXBsb3kgdiR7dGhpcy5zZWxlY3RlZFZlcnNpb259CiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIGA6d2AKICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb25zLXJvdyIgc3R5bGU9Im1hcmdpbi10b3A6IDhweDsiPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zZWNvbmRhcnkiIEBjbGljaz0keygpPT57dGhpcy5jdXJyZW50Vmlldz0iZ3JpZCJ9fT4KICAgICAgICAgICAgJmxhcnI7IEJhY2sKICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IiBAY2xpY2s9JHsoKT0+e3RoaXMuZGVwbG95TW9kZT0hMH19PgogICAgICAgICAgICBEZXBsb3kgdGhpcyBBcHAKICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICBgfQogICAgYH1yZW5kZXJEZXBsb3ltZW50Rm9vdHByaW50KHQpe2xldCBhPXRoaXMuZ2V0Q29uZmlnVm9sdW1lcyh0KSxyPXQucHVibGlzaGVkUG9ydHN8fFtdO3JldHVybiBhLmxlbmd0aD09PTAmJnIubGVuZ3RoPT09MD8iIjp3YAogICAgICA8ZGl2IGNsYXNzPSJkZXRhaWwtY2FyZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1sYWJlbCI+RGVwbG95bWVudCBGb290cHJpbnQ8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJmb290cHJpbnQtbGlzdCI+CiAgICAgICAgICAke2EubWFwKG49PndgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3RwcmludC1pdGVtIj4KICAgICAgICAgICAgICA8c3Bhbj5Wb2x1bWUgbW91bnQ8L3NwYW4+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZvb3RwcmludC1tZXRhIj4KICAgICAgICAgICAgICAgICR7bi5zb3VyY2V8fG4ubmFtZXx8Im1hbmFnZWQgdm9sdW1lIn06JHtuLm1vdW50UGF0aH0ke24ucmVhZE9ubHk/IjpybyI6IiJ9CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIGApfQogICAgICAgICAgJHtyLm1hcChuPT53YAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290cHJpbnQtaXRlbSI+CiAgICAgICAgICAgICAgPHNwYW4+UHVibGlzaGVkIGhvc3QgcG9ydDwvc3Bhbj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZm9vdHByaW50LW1ldGEiPiR7dGhpcy5mb3JtYXRQdWJsaXNoZWRQb3J0KG4pfTwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgKX0KICAgICAgICA8L2Rpdj4KICAgICAgICAke3IubGVuZ3RoPjA/d2AKICAgICAgICAgIDxkaXYgY2xhc3M9ImV4cG9zdXJlLXdhcm5pbmciPgogICAgICAgICAgICBUaGlzIGFwcCBwdWJsaXNoZXMgcmF3IGhvc3QgcG9ydHMgb3V0c2lkZSB0aGUgSFRUUCBwcm94eS4gQ29uZmlybSBmaXJld2FsbCBhbmQgbmV0d29yayBwb2xpY3kgYmVmb3JlIGRlcGxveWluZy4KICAgICAgICAgIDwvZGl2PgogICAgICAgIGA6IiJ9CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJEZXBsb3lDb25maXJtYXRpb24odCl7bGV0IGE9dGhpcy5nZXRDb25maWdWb2x1bWVzKHQpLHI9dC5wdWJsaXNoZWRQb3J0c3x8W107cmV0dXJuIGEubGVuZ3RoPT09MCYmci5sZW5ndGg9PT0wPyIiOndgCiAgICAgIDxkaXYgY2xhc3M9ImV4cG9zdXJlLXdhcm5pbmciPgogICAgICAgIERlcGxveWluZyB0aGlzIGFwcCB3aWxsIGNyZWF0ZSAke2EubGVuZ3RofSBwZXJzaXN0ZW50IHZvbHVtZShzKQogICAgICAgICR7ci5sZW5ndGg+MD93YGFuZCBleHBvc2UgJHtyLmxlbmd0aH0gaG9zdCBwb3J0IGRlY2xhcmF0aW9uKHMpYDoiIn0uCiAgICAgIDwvZGl2PgogICAgYH1nZXRDb25maWdWb2x1bWVzKHQpe3JldHVybih0LnZvbHVtZXN8fFtdKS5tYXAoYT0+dHlwZW9mIGE9PSJzdHJpbmciP3ttb3VudFBhdGg6YX06YSkuZmlsdGVyKGE9PiEhYS5tb3VudFBhdGgpfWZvcm1hdFB1Ymxpc2hlZFBvcnQodCl7bGV0IGE9dC5wcm90b2NvbHx8InRjcCIscj10LnRhcmdldFBvcnRFbmQ/YCR7dC50YXJnZXRQb3J0fS0ke3QudGFyZ2V0UG9ydEVuZH1gOlN0cmluZyh0LnRhcmdldFBvcnQpLG49dC5wdWJsaXNoZWRQb3J0fHx0LnRhcmdldFBvcnQsbz10LnB1Ymxpc2hlZFBvcnRFbmR8fCh0LnRhcmdldFBvcnRFbmQ/bisodC50YXJnZXRQb3J0RW5kLXQudGFyZ2V0UG9ydCk6dm9pZCAwKSxsPW8/YCR7bn0tJHtvfWA6U3RyaW5nKG4pO3JldHVybmAke3QuaG9zdElwfHwiMC4wLjAuMCJ9OiR7bH0vJHthfSAtPiAke3J9LyR7YX1gfWFzeW5jIGhhbmRsZVZpZXdEZXRhaWxzKHQpe2xldCBhPXQuZGV0YWlsPy5hcHA7aWYoIWEpcmV0dXJuO2xldCByPXRoaXMuYXBwU3RvcmVTdGF0ZS5hcHBzLmZpbmQobj0+bi5pZD09PWEuaWQpO3ImJih0aGlzLmRlcGxveU1vZGU9ITEsdGhpcy5zZWxlY3RlZEFwcD1yLHRoaXMuc2VsZWN0ZWRWZXJzaW9uPXIubGF0ZXN0VmVyc2lvbix0aGlzLnNlcnZpY2VOYW1lPXIuaWQsdGhpcy5sb2FkaW5nPSEwLHRoaXMuY3VycmVudFZpZXc9ImRldGFpbCIsYXdhaXQgdGhpcy5mZXRjaFZlcnNpb25Db25maWcoci5pZCxyLmxhdGVzdFZlcnNpb24pLHRoaXMubG9hZGluZz0hMSl9YXN5bmMgaGFuZGxlQXBwQ2xpY2sodCl7bGV0IGE9dC5kZXRhaWw/LmFwcDtpZighYSlyZXR1cm47bGV0IHI9dGhpcy5hcHBTdG9yZVN0YXRlLmFwcHMuZmluZChuPT5uLmlkPT09YS5pZCk7ciYmKHRoaXMuZGVwbG95TW9kZT0hMCx0aGlzLnNlbGVjdGVkQXBwPXIsdGhpcy5zZWxlY3RlZFZlcnNpb249ci5sYXRlc3RWZXJzaW9uLHRoaXMuc2VydmljZU5hbWU9ci5pZCx0aGlzLmxvYWRpbmc9ITAsdGhpcy5jdXJyZW50Vmlldz0iZGV0YWlsIixhd2FpdCB0aGlzLmZldGNoVmVyc2lvbkNvbmZpZyhyLmlkLHIubGF0ZXN0VmVyc2lvbiksdGhpcy5sb2FkaW5nPSExKX1hc3luYyBoYW5kbGVWZXJzaW9uQ2hhbmdlKHQpeyF0aGlzLnNlbGVjdGVkQXBwfHx0PT09dGhpcy5zZWxlY3RlZFZlcnNpb258fCh0aGlzLnNlbGVjdGVkVmVyc2lvbj10LHRoaXMubG9hZGluZz0hMCxhd2FpdCB0aGlzLmZldGNoVmVyc2lvbkNvbmZpZyh0aGlzLnNlbGVjdGVkQXBwLmlkLHQpLHRoaXMubG9hZGluZz0hMSl9YXN5bmMgZmV0Y2hWZXJzaW9uQ29uZmlnKHQsYSl7dHJ5e2xldCByPVFpLmdldFN0YXRlKCkuaWRlbnRpdHk7aWYoIXIpcmV0dXJuO2xldCBvPWF3YWl0IG5ldyBndC5wbHVnaW5zLnR5cGVkcmVxdWVzdC5UeXBlZFJlcXVlc3QoIi90eXBlZHJlcXVlc3QiLCJnZXRBcHBTdG9yZUNvbmZpZyIpLmZpcmUoe2lkZW50aXR5OnIsYXBwSWQ6dCx2ZXJzaW9uOmF9KTt0aGlzLnNlbGVjdGVkQXBwTWV0YT1vLmFwcE1ldGEsdGhpcy5zZWxlY3RlZEFwcENvbmZpZz1vLmNvbmZpZyx0aGlzLmVkaXRhYmxlRW52VmFycz0oby5jb25maWcuZW52VmFyc3x8W10pLm1hcChsPT4oe2tleTpsLmtleSx2YWx1ZTpsLnZhbHVlfHwiIixkZXNjcmlwdGlvbjpsLmRlc2NyaXB0aW9ufHwiIixyZXF1aXJlZDpsLnJlcXVpcmVkLHBsYXRmb3JtSW5qZWN0ZWQ6bC52YWx1ZT8uaW5jbHVkZXMoIiR7Iil8fCExfSkpLHRoaXMuc2VydmljZURvbWFpbj0iIn1jYXRjaChyKXtjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gZmV0Y2ggYXBwIGNvbmZpZzoiLHIpfX1oYW5kbGVFbnZWYXJDaGFuZ2UodCxhKXtsZXQgcj1bLi4udGhpcy5lZGl0YWJsZUVudlZhcnNdO3JbdF09ey4uLnJbdF0sdmFsdWU6YX0sdGhpcy5lZGl0YWJsZUVudlZhcnM9cn1oYW5kbGVTZXJ2aWNlRG9tYWluQ2hhbmdlKHQpe3RoaXMuc2VydmljZURvbWFpbj10aGlzLm5vcm1hbGl6ZURvbWFpbih0KX1ub3JtYWxpemVEb21haW4odCl7cmV0dXJuIHQudHJpbSgpLnJlcGxhY2UoL15odHRwcz86XC9cLy8sIiIpLnJlcGxhY2UoL1wvJC8sIiIpfWFzeW5jIGhhbmRsZURlcGxveSgpe2xldCB0PXRoaXMuc2VsZWN0ZWRBcHAsYT10aGlzLnNlbGVjdGVkQXBwQ29uZmlnO2lmKCF0fHwhYSlyZXR1cm47bGV0IHI9dGhpcy5lZGl0YWJsZUVudlZhcnMuZmlsdGVyKGw9PmwucmVxdWlyZWQmJiFsLnBsYXRmb3JtSW5qZWN0ZWQmJiFsLnZhbHVlLnRyaW0oKSk7aWYoci5sZW5ndGg+MCl7Y29uc29sZS5lcnJvcihgTWlzc2luZyByZXF1aXJlZCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6ICR7ci5tYXAobD0+bC5rZXkpLmpvaW4oIiwgIil9YCk7cmV0dXJufWlmKChhLmVudlZhcnN8fFtdKS5zb21lKGw9PmwudmFsdWU/LmluY2x1ZGVzKCIke1NFUlZJQ0VfRE9NQUlOfSIpKSYmIXRoaXMuc2VydmljZURvbWFpbil7Y29uc29sZS5lcnJvcigiQSBkb21haW4gaXMgcmVxdWlyZWQgZm9yIHRoaXMgYXBwLiIpO3JldHVybn1sZXQgbz17fTtmb3IobGV0IGwgb2YgdGhpcy5lZGl0YWJsZUVudlZhcnMpbC5rZXkmJmwudmFsdWUmJihvW2wua2V5XT1sLnZhbHVlKTt0cnl7bGV0IGw9UWkuZ2V0U3RhdGUoKS5pZGVudGl0eTtpZighbClyZXR1cm47YXdhaXQgbmV3IGd0LnBsdWdpbnMudHlwZWRyZXF1ZXN0LlR5cGVkUmVxdWVzdCgiL3R5cGVkcmVxdWVzdCIsImluc3RhbGxBcHBTdG9yZUFwcCIpLmZpcmUoe2lkZW50aXR5OmwsaW5zdGFsbDp7YXBwSWQ6dC5pZCx2ZXJzaW9uOnRoaXMuc2VsZWN0ZWRWZXJzaW9uLHNlcnZpY2VOYW1lOnRoaXMuc2VydmljZU5hbWV8fHQuaWQsZG9tYWluOnRoaXMuc2VydmljZURvbWFpbnx8dm9pZCAwLGVudlZhcnM6b319KSxzZXRUaW1lb3V0KCgpPT57ZGwubmF2aWdhdGVUb1ZpZXcoInNlcnZpY2VzIil9LDApfWNhdGNoKGwpe2NvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBkZXBsb3kgZnJvbSBBcHAgU3RvcmU6IixsKX19fTtKYT1SaShGemEpLCRjdD1uZXcgV2Vha01hcCxEY3Q9bmV3IFdlYWtNYXAsTGN0PW5ldyBXZWFrTWFwLEVjdD1uZXcgV2Vha01hcCxQY3Q9bmV3IFdlYWtNYXAsSWN0PW5ldyBXZWFrTWFwLEFjdD1uZXcgV2Vha01hcCxOY3Q9bmV3IFdlYWtNYXAsUmN0PW5ldyBXZWFrTWFwLE9jdD1uZXcgV2Vha01hcCxGY3Q9bmV3IFdlYWtNYXAsUnQoSmEsNCwiYXBwU3RvcmVTdGF0ZSIsT3phLHdvLCRjdCksUnQoSmEsNCwiY3VycmVudFZpZXciLFJ6YSx3byxEY3QpLFJ0KEphLDQsInNlbGVjdGVkQXBwIixOemEsd28sTGN0KSxSdChKYSw0LCJzZWxlY3RlZEFwcE1ldGEiLEF6YSx3byxFY3QpLFJ0KEphLDQsInNlbGVjdGVkQXBwQ29uZmlnIixJemEsd28sUGN0KSxSdChKYSw0LCJzZWxlY3RlZFZlcnNpb24iLFB6YSx3byxJY3QpLFJ0KEphLDQsImVkaXRhYmxlRW52VmFycyIsRXphLHdvLEFjdCksUnQoSmEsNCwic2VydmljZU5hbWUiLEx6YSx3byxOY3QpLFJ0KEphLDQsInNlcnZpY2VEb21haW4iLER6YSx3byxSY3QpLFJ0KEphLDQsImxvYWRpbmciLCR6YSx3byxPY3QpLFJ0KEphLDQsImRlcGxveU1vZGUiLFR6YSx3byxGY3QpLHdvPVJ0KEphLDAsIk9iVmlld0FwcFN0b3JlIixCemEsd28pLGkod28sIk9iVmlld0FwcFN0b3JlIiksdmkod28sInN0eWxlcyIsW2guZGVmYXVsdFN0eWxlcyx5byxKYAogICAgICAuZGV0YWlsLWNhcmQgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNpLXNoYWRlLTEsICMwOTA5MGIpOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNpLXNoYWRlLTIsICMyNzI3MmEpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgIH0KCiAgICAgIC5kZXRhaWwtaGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICAgIGdhcDogMTZweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgICB9CgogICAgICAuZGV0YWlsLWljb24gewogICAgICAgIHdpZHRoOiA2NHB4OwogICAgICAgIGhlaWdodDogNjRweDsKICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNpLXNoYWRlLTIsICMyNzI3MmEpOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBmb250LXNpemU6IDI4cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICBjb2xvcjogdmFyKC0tY2ktc2hhZGUtNSwgI2ExYTFhYSk7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIH0KCiAgICAgIC5kZXRhaWwtdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMjRweDsKICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIGNvbG9yOiB2YXIoLS1jaS1zaGFkZS03LCAjZTRlNGU3KTsKICAgICAgICBtYXJnaW46IDAgMCA0cHggMDsKICAgICAgfQoKICAgICAgLmRldGFpbC1jYXRlZ29yeSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHBhZGRpbmc6IDJweCAxMHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OTlweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaS1zaGFkZS0yLCAjMjcyNzJhKTsKICAgICAgICBjb2xvcjogdmFyKC0tY2ktc2hhZGUtNSwgI2ExYTFhYSk7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICB9CgogICAgICAuZGV0YWlsLWRlc2NyaXB0aW9uIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY29sb3I6IHZhcigtLWNpLXNoYWRlLTUsICNhMWExYWEpOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICB9CgogICAgICAuZGV0YWlsLW1ldGEgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgIG1hcmdpbi10b3A6IDhweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6IHZhcigtLWNpLXNoYWRlLTQsICM3MTcxN2EpOwogICAgICB9CgogICAgICAuZGV0YWlsLW1ldGEgYSB7CiAgICAgICAgY29sb3I6IHZhcigtLWNpLXNoYWRlLTUsICNhMWExYWEpOwogICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgfQoKICAgICAgLmRldGFpbC1tZXRhIGE6aG92ZXIgewogICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogICAgICB9CgogICAgICAuc2VjdGlvbi1sYWJlbCB7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6IHZhcigtLWNpLXNoYWRlLTUsICNhMWExYWEpOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgICB9CgogICAgICAuYmFkZ2UgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiA0cHg7CiAgICAgICAgcGFkZGluZzogNHB4IDEwcHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoNTksIDEzMCwgMjQ2LCAwLjE1KTsKICAgICAgICBjb2xvcjogIzYwYTVmYTsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDZweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiA2cHg7CiAgICAgIH0KCiAgICAgIC52ZXJzaW9uLXJvdyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMTZweDsKICAgICAgfQoKICAgICAgLnZlcnNpb24tc2VsZWN0IHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaS1zaGFkZS0yLCAjMjcyNzJhKTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaS1zaGFkZS0zLCAjM2YzZjQ2KTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgY29sb3I6IHZhcigtLWNpLXNoYWRlLTcsICNlNGU0ZTcpOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KCiAgICAgIC5pbWFnZS10YWcgewogICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGNvbG9yOiB2YXIoLS1jaS1zaGFkZS01LCAjYTFhMWFhKTsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaS1zaGFkZS0yLCAjMjcyNzJhKTsKICAgICAgICBwYWRkaW5nOiA0cHggOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgfQoKICAgICAgLmVudi10YWJsZSB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKICAgICAgfQoKICAgICAgLmVudi10YWJsZSB0aCB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjb2xvcjogdmFyKC0tY2ktc2hhZGUtNCwgIzcxNzE3YSk7CiAgICAgICAgcGFkZGluZzogOHB4IDhweCA4cHggMDsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tY2ktc2hhZGUtMiwgIzI3MjcyYSk7CiAgICAgIH0KCiAgICAgIC5lbnYtdGFibGUgdGQgewogICAgICAgIHBhZGRpbmc6IDZweCA4cHggNnB4IDA7CiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgICAgfQoKICAgICAgLmVudi1pbnB1dCB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2ktc2hhZGUtMiwgIzI3MjcyYSk7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2ktc2hhZGUtMywgIzNmM2Y0Nik7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIHBhZGRpbmc6IDZweCA4cHg7CiAgICAgICAgY29sb3I6IHZhcigtLWNpLXNoYWRlLTcsICNlNGU0ZTcpOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgIC5lbnYtaW5wdXQ6ZGlzYWJsZWQgewogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgICB9CgogICAgICAuZW52LWtleSB7CiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6IHZhcigtLWNpLXNoYWRlLTYsICNkNGQ0ZDgpOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgIH0KCiAgICAgIC5lbnYtZGVzYyB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1jaS1zaGFkZS00LCAjNzE3MTdhKTsKICAgICAgfQoKICAgICAgLmVudi1iYWRnZSB7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIHBhZGRpbmc6IDFweCA2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgIG1hcmdpbi1sZWZ0OiA2cHg7CiAgICAgIH0KCiAgICAgIC5lbnYtYmFkZ2UucmVxdWlyZWQgewogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjM5LCA2OCwgNjgsIDAuMTUpOwogICAgICAgIGNvbG9yOiAjZjg3MTcxOwogICAgICB9CgogICAgICAuZW52LWJhZGdlLmF1dG8gewogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMzQsIDE5NywgOTQsIDAuMTUpOwogICAgICAgIGNvbG9yOiAjNGFkZTgwOwogICAgICB9CgogICAgICAubmFtZS1pbnB1dCB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2ktc2hhZGUtMiwgIzI3MjcyYSk7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2ktc2hhZGUtMywgIzNmM2Y0Nik7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIHBhZGRpbmc6IDEwcHggMTRweDsKICAgICAgICBjb2xvcjogdmFyKC0tY2ktc2hhZGUtNywgI2U0ZTRlNyk7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIHdpZHRoOiAzMDBweDsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAuYWN0aW9ucy1yb3cgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgbWFyZ2luLXRvcDogMjRweDsKICAgICAgfQoKICAgICAgLmJ0biB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBwYWRkaW5nOiAxMHB4IDIwcHg7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAyMDBtcyBlYXNlOwogICAgICB9CgogICAgICAuYnRuOmhvdmVyIHsgb3BhY2l0eTogMC45OyB9CgogICAgICAuYnRuLXByaW1hcnkgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNpLXNoYWRlLTcsICNlNGU0ZTcpOwogICAgICAgIGNvbG9yOiB2YXIoLS1jaS1zaGFkZS0wLCAjMDkwOTBiKTsKICAgICAgfQoKICAgICAgLmJ0bi1zZWNvbmRhcnkgewogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNpLXNoYWRlLTIsICMyNzI3MmEpOwogICAgICAgIGNvbG9yOiB2YXIoLS1jaS1zaGFkZS02LCAjZDRkNGQ4KTsKICAgICAgfQoKICAgICAgLmxvYWRpbmctc3Bpbm5lciB7CiAgICAgICAgcGFkZGluZzogMzJweDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgY29sb3I6IHZhcigtLWNpLXNoYWRlLTQsICM3MTcxN2EpOwogICAgICB9CgogICAgICAuZm9vdHByaW50LWxpc3QgewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgIH0KCiAgICAgIC5mb290cHJpbnQtaXRlbSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgIHBhZGRpbmc6IDEwcHggMTJweDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaS1zaGFkZS0yLCAjMjcyNzJhKTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGNvbG9yOiB2YXIoLS1jaS1zaGFkZS02LCAjZDRkNGQ4KTsKICAgICAgfQoKICAgICAgLmZvb3RwcmludC1tZXRhIHsKICAgICAgICBjb2xvcjogdmFyKC0tY2ktc2hhZGUtNCwgIzcxNzE3YSk7CiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgfQoKICAgICAgLmV4cG9zdXJlLXdhcm5pbmcgewogICAgICAgIG1hcmdpbi10b3A6IDEwcHg7CiAgICAgICAgY29sb3I6ICNmYmJmMjQ7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICAgIH0KICAgIGBdKSxpdChKYSwxLHdvKTtCY3Q9d299KTt2YXIgd3NzLFAyZSxqemE9ZygoKT0+e2xsKCk7RngoKTt3c3M9RzMuZG9tdG9vbHMsUDJlPWNsYXNze2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zZXJ2aWNlTmFtZT1lO3RoaXMuaWRlbnRpdHk9dCx0aGlzLnJlZ2lzdGVyUHJvY2Vzc1NvY2tldEhhbmRsZXJzKCl9c2VydmljZU5hbWU7c3RhdGlje2kodGhpcywiQmFja2VuZEV4ZWN1dGlvbkVudmlyb25tZW50Iil9dHlwZT0iYmFja2VuZCI7X3JlYWR5PSExO2lkZW50aXR5O3Byb2Nlc3NSb3V0ZXI9bmV3IGd0LnBsdWdpbnMudHlwZWRyZXF1ZXN0LlR5cGVkUm91dGVyO3Byb2Nlc3NTb2NrZXQ9bnVsbDtwcm9jZXNzU29ja2V0UHJvbWlzZT1udWxsO3Byb2Nlc3NTdGF0ZXM9bmV3IE1hcDtnZXQgcmVhZHkoKXtyZXR1cm4gdGhpcy5fcmVhZHl9YXN5bmMgaW5pdCgpe2lmKCEoYXdhaXQgdGhpcy5maXJlUmVxdWVzdCgid29ya3NwYWNlRXhpc3RzIix7cGF0aDoiLyJ9KSkuZXhpc3RzKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IGFjY2VzcyBjb250YWluZXIgZmlsZXN5c3RlbSBmb3Igc2VydmljZTogJHt0aGlzLnNlcnZpY2VOYW1lfWApO3RoaXMuX3JlYWR5PSEwfWFzeW5jIGRlc3Ryb3koKXtmb3IobGV0IGUgb2YgQXJyYXkuZnJvbSh0aGlzLnByb2Nlc3NTdGF0ZXMua2V5cygpKSlhd2FpdCB0aGlzLmtpbGxQcm9jZXNzKGUpLmNhdGNoKCgpPT57fSk7YXdhaXQgdGhpcy5wcm9jZXNzU29ja2V0Py5zdG9wKCkuY2F0Y2goKCk9Pnt9KSx0aGlzLnByb2Nlc3NTb2NrZXQ9bnVsbCx0aGlzLnByb2Nlc3NTb2NrZXRQcm9taXNlPW51bGwsdGhpcy5fcmVhZHk9ITF9YXN5bmMgcmVhZEZpbGUoZSl7cmV0dXJuKGF3YWl0IHRoaXMuZmlyZVJlcXVlc3QoIndvcmtzcGFjZVJlYWRGaWxlIix7cGF0aDplfSkpLmNvbnRlbnR9YXN5bmMgd3JpdGVGaWxlKGUsdCl7YXdhaXQgdGhpcy5maXJlUmVxdWVzdCgid29ya3NwYWNlV3JpdGVGaWxlIix7cGF0aDplLGNvbnRlbnQ6dH0pfWFzeW5jIHJlYWREaXIoZSl7cmV0dXJuKGF3YWl0IHRoaXMuZmlyZVJlcXVlc3QoIndvcmtzcGFjZVJlYWREaXIiLHtwYXRoOmV9KSkuZW50cmllc31hc3luYyBta2RpcihlKXthd2FpdCB0aGlzLmZpcmVSZXF1ZXN0KCJ3b3Jrc3BhY2VNa2RpciIse3BhdGg6ZX0pfWFzeW5jIHJtKGUsdCl7YXdhaXQgdGhpcy5maXJlUmVxdWVzdCgid29ya3NwYWNlUm0iLHtwYXRoOmUscmVjdXJzaXZlOnQ/LnJlY3Vyc2l2ZX0pfWFzeW5jIGV4aXN0cyhlKXtyZXR1cm4oYXdhaXQgdGhpcy5maXJlUmVxdWVzdCgid29ya3NwYWNlRXhpc3RzIix7cGF0aDplfSkpLmV4aXN0c313YXRjaChlLHQsYSl7cmV0dXJue3N0b3A6aSgoKT0+e30sInN0b3AiKX19YXN5bmMgc3Bhd24oZSx0KXtsZXQgYT1hd2FpdCB0aGlzLmVuc3VyZVByb2Nlc3NTb2NrZXQoKSxyPWNyeXB0by5yYW5kb21VVUlEKCk7YXdhaXQgYS5zZXRUYWcoYHdvcmtzcGFjZVByb2Nlc3M6JHtyfWAsITApO2xldCBuPWkoKCk9Pnt9LCJyZXNvbHZlRXhpdCIpLG89bmV3IFByb21pc2UoZD0+e249ZH0pLGw9bmV3IFJlYWRhYmxlU3RyZWFtKHtzdGFydDppKGQ9Pnt0aGlzLnByb2Nlc3NTdGF0ZXMuc2V0KHIse291dHB1dENvbnRyb2xsZXI6ZCxyZXNvbHZlRXhpdDpufSl9LCJzdGFydCIpLGNhbmNlbDppKGFzeW5jKCk9Pnthd2FpdCB0aGlzLmtpbGxQcm9jZXNzKHIpLmNhdGNoKCgpPT57fSl9LCJjYW5jZWwiKX0pO3RyeXthd2FpdCBhLmNyZWF0ZVR5cGVkUmVxdWVzdCgid29ya3NwYWNlU3RhcnRQcm9jZXNzIikuZmlyZSh7aWRlbnRpdHk6dGhpcy5pZGVudGl0eSxzZXJ2aWNlTmFtZTp0aGlzLnNlcnZpY2VOYW1lLHByb2Nlc3NJZDpyLGNvbW1hbmQ6ZSxhcmdzOnR9KX1jYXRjaChkKXtsZXQgdT10aGlzLnByb2Nlc3NTdGF0ZXMuZ2V0KHIpO3RoaXMucHJvY2Vzc1N0YXRlcy5kZWxldGUociksYXdhaXQgYS5yZW1vdmVUYWcoYHdvcmtzcGFjZVByb2Nlc3M6JHtyfWApLmNhdGNoKCgpPT57fSk7dHJ5e3U/Lm91dHB1dENvbnRyb2xsZXIuZXJyb3IoZCl9Y2F0Y2h7fXRocm93IGR9bGV0IHA9bmV3IFdyaXRhYmxlU3RyZWFtKHt3cml0ZTppKGFzeW5jIGQ9Pnthd2FpdCBhLmNyZWF0ZVR5cGVkUmVxdWVzdCgid29ya3NwYWNlUHJvY2Vzc0lucHV0IikuZmlyZSh7aWRlbnRpdHk6dGhpcy5pZGVudGl0eSxwcm9jZXNzSWQ6cixpbnB1dDpkfSl9LCJ3cml0ZSIpLGFib3J0OmkoYXN5bmMoKT0+e2F3YWl0IHRoaXMua2lsbFByb2Nlc3MocikuY2F0Y2goKCk9Pnt9KX0sImFib3J0Iil9KTtyZXR1cm57b3V0cHV0OmwsaW5wdXQ6cCxleGl0Om8sa2lsbDppKCgpPT57dGhpcy5raWxsUHJvY2VzcyhyKX0sImtpbGwiKX19YXN5bmMgZ2V0U2hlbGxDb21tYW5kKCl7cmV0dXJuKGF3YWl0IHRoaXMuZmlyZVJlcXVlc3QoIndvcmtzcGFjZUdldFNoZWxsQ29tbWFuZCIse30pKS5zaGVsbENvbW1hbmR9cmVnaXN0ZXJQcm9jZXNzU29ja2V0SGFuZGxlcnMoKXt0aGlzLnByb2Nlc3NSb3V0ZXIuYWRkVHlwZWRIYW5kbGVyKG5ldyBndC5wbHVnaW5zLnR5cGVkcmVxdWVzdC5UeXBlZEhhbmRsZXIoInB1c2hXb3Jrc3BhY2VQcm9jZXNzT3V0cHV0Iixhc3luYyBlPT4odGhpcy5wcm9jZXNzU3RhdGVzLmdldChlLnByb2Nlc3NJZCk/Lm91dHB1dENvbnRyb2xsZXIuZW5xdWV1ZShlLm91dHB1dCkse30pKSksdGhpcy5wcm9jZXNzUm91dGVyLmFkZFR5cGVkSGFuZGxlcihuZXcgZ3QucGx1Z2lucy50eXBlZHJlcXVlc3QuVHlwZWRIYW5kbGVyKCJwdXNoV29ya3NwYWNlUHJvY2Vzc0V4aXQiLGFzeW5jIGU9Pih0aGlzLmNvbXBsZXRlUHJvY2Vzc1N0YXRlKGUucHJvY2Vzc0lkLGUuZXhpdENvZGUpLGF3YWl0IHRoaXMucHJvY2Vzc1NvY2tldD8ucmVtb3ZlVGFnKGB3b3Jrc3BhY2VQcm9jZXNzOiR7ZS5wcm9jZXNzSWR9YCkuY2F0Y2goKCk9Pnt9KSx7fSkpKX1hc3luYyBlbnN1cmVQcm9jZXNzU29ja2V0KCl7cmV0dXJuIHRoaXMucHJvY2Vzc1NvY2tldD90aGlzLnByb2Nlc3NTb2NrZXQ6KHRoaXMucHJvY2Vzc1NvY2tldFByb21pc2V8fCh0aGlzLnByb2Nlc3NTb2NrZXRQcm9taXNlPVF1LlR5cGVkU29ja2V0LmNyZWF0ZUNsaWVudCh0aGlzLnByb2Nlc3NSb3V0ZXIsUXUuVHlwZWRTb2NrZXQudXNlV2luZG93TG9jYXRpb25PcmlnaW5VcmwoKSx7YXV0b1JlY29ubmVjdDohMH0pKSx0aGlzLnByb2Nlc3NTb2NrZXQ9YXdhaXQgdGhpcy5wcm9jZXNzU29ja2V0UHJvbWlzZSx0aGlzLnByb2Nlc3NTb2NrZXQpfWNvbXBsZXRlUHJvY2Vzc1N0YXRlKGUsdCl7bGV0IGE9dGhpcy5wcm9jZXNzU3RhdGVzLmdldChlKTtpZihhKXt0cnl7YS5vdXRwdXRDb250cm9sbGVyLmNsb3NlKCl9Y2F0Y2h7fWEucmVzb2x2ZUV4aXQodCksdGhpcy5wcm9jZXNzU3RhdGVzLmRlbGV0ZShlKX19YXN5bmMga2lsbFByb2Nlc3MoZSl7bGV0IHQ9dGhpcy5wcm9jZXNzU29ja2V0O3QmJihhd2FpdCB0LmNyZWF0ZVR5cGVkUmVxdWVzdCgid29ya3NwYWNlS2lsbFByb2Nlc3MiKS5maXJlKHtpZGVudGl0eTp0aGlzLmlkZW50aXR5LHByb2Nlc3NJZDplfSkuY2F0Y2goKCk9Pnt9KSx0aGlzLmNvbXBsZXRlUHJvY2Vzc1N0YXRlKGUsLTEpLGF3YWl0IHQucmVtb3ZlVGFnKGB3b3Jrc3BhY2VQcm9jZXNzOiR7ZX1gKS5jYXRjaCgoKT0+e30pKX1hc3luYyBmaXJlUmVxdWVzdChlLHQpe3JldHVybiBhd2FpdCBuZXcgd3NzLnBsdWdpbnMudHlwZWRyZXF1ZXN0LlR5cGVkUmVxdWVzdCgiL3R5cGVkcmVxdWVzdCIsZSkuZmlyZSh7aWRlbnRpdHk6dGhpcy5pZGVudGl0eSxzZXJ2aWNlTmFtZTp0aGlzLnNlcnZpY2VOYW1lLC4uLnR9KX19fSk7dmFyIHRDYT17fTt5dCh0Q2Ese09iVmlld1NlcnZpY2VzOigpPT5ZY3R9KTtmdW5jdGlvbiBJMmUocyl7aWYoIXN8fHM9PT0wKXJldHVybiIwIEIiO2xldCBlPVsiQiIsIktCIiwiTUIiLCJHQiIsIlRCIl0sdD0xMDI0LGE9TWF0aC5mbG9vcihNYXRoLmxvZyhzKS9NYXRoLmxvZyh0KSk7cmV0dXJuYCR7KHMvTWF0aC5wb3codCxhKSkudG9GaXhlZCgxKX0gJHtlW2FdfWB9ZnVuY3Rpb24ga3NzKHMpe2xldCBlPXMubGFzdEluZGV4T2YoIjoiKSx0PXMubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4gZT50JiZlPjA/e3JlcG9zaXRvcnk6cy5zdWJzdHJpbmcoMCxlKSx0YWc6cy5zdWJzdHJpbmcoZSsxKX06e3JlcG9zaXRvcnk6cyx0YWc6ImxhdGVzdCJ9fWZ1bmN0aW9uIFZ6YShzKXtzd2l0Y2gocyl7Y2FzZSJydW5uaW5nIjpyZXR1cm4icnVubmluZyI7Y2FzZSJzdGFydGluZyI6cmV0dXJuInN0YXJ0aW5nIjtjYXNlImZhaWxlZCI6cmV0dXJuImVycm9yIjtkZWZhdWx0OnJldHVybiJzdG9wcGVkIn19ZnVuY3Rpb24gU3NzKHMpe2xldCBlPWtzcyhzLmltYWdlKTtyZXR1cm57bmFtZTpzLm5hbWUsc3RhdHVzOlZ6YShzLnN0YXR1cyksaW1hZ2U6cy5pbWFnZSxwb3J0OnMucG9ydCxkb21haW46cy5kb21haW58fG51bGwsY29udGFpbmVySWQ6cy5jb250YWluZXJJRHx8IiIsY3JlYXRlZDpzLmNyZWF0ZWRBdD9uZXcgRGF0ZShzLmNyZWF0ZWRBdCkudG9Mb2NhbGVTdHJpbmcoKToiLSIsdXBkYXRlZDpzLnVwZGF0ZWRBdD9uZXcgRGF0ZShzLnVwZGF0ZWRBdCkudG9Mb2NhbGVTdHJpbmcoKToiLSIscmVnaXN0cnk6cy51c2VPbmVib3hSZWdpc3RyeT8iT25lYm94IFJlZ2lzdHJ5IjpzLnJlZ2lzdHJ5fHwiRG9ja2VyIEh1YiIscmVwb3NpdG9yeTpzLnJlZ2lzdHJ5UmVwb3NpdG9yeXx8ZS5yZXBvc2l0b3J5LHRhZzpzLnJlZ2lzdHJ5SW1hZ2VUYWd8fGUudGFnfX1mdW5jdGlvbiBfc3Mocyl7cmV0dXJue2NwdTpzLmNwdVBlcmNlbnQsbWVtb3J5OkkyZShzLm1lbW9yeVVzZWQpLG1lbW9yeUxpbWl0OkkyZShzLm1lbW9yeUxpbWl0KSxuZXR3b3JrSW46STJlKHMubmV0d29ya1J4KSxuZXR3b3JrT3V0OkkyZShzLm5ldHdvcmtUeCl9fWZ1bmN0aW9uIE1zcyhzKXtyZXR1cm4gQXJyYXkuaXNBcnJheShzKT9zLm1hcChlPT57bGV0IHQ9ZS50aW1lc3RhbXA/dHlwZW9mIGUudGltZXN0YW1wPT0ibnVtYmVyIj9uZXcgRGF0ZShlLnRpbWVzdGFtcCkudG9JU09TdHJpbmcoKTpTdHJpbmcoZS50aW1lc3RhbXApOm5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxhPWUubWVzc2FnZXx8U3RyaW5nKGUpLHI9ZS5sZXZlbHx8ImluZm8iO3JldHVybnt0aW1lc3RhbXA6dCxtZXNzYWdlOmEsbGV2ZWw6cn19KTp0eXBlb2Ygcz09InN0cmluZyImJnMudHJpbSgpP3Muc3BsaXQoYApgKS5maWx0ZXIoZT0+ZS50cmltKCkpLm1hcChlPT57bGV0IHQ9ZS5tYXRjaCgvXihcZHs0fS1cZHsyfS1cZHsyfVRbXGQ6Ll0rWj8pXHMrKC4qKS8pLGE9dD90WzFdOm5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxyPXQ/dFsyXTplLG49ci50b0xvd2VyQ2FzZSgpLG89bi5pbmNsdWRlcygiZXJyb3IiKXx8bi5pbmNsdWRlcygiZmF0YWwiKT8iZXJyb3IiOm4uaW5jbHVkZXMoIndhcm4iKT8id2FybiI6ImluZm8iO3JldHVybnt0aW1lc3RhbXA6YSxtZXNzYWdlOnIsbGV2ZWw6b319KTpbXX12YXIgVXphLFd6YSxHemEsS3phLFl6YSxaemEsWHphLFF6YSxKemEsZUNhLGVpLEhjdCxxY3QsamN0LFZjdCxVY3QsV2N0LEdjdCxLY3QsenNzLHVsLFljdCxaY3Q9Zyhhc3luYygpPT57bGwoKTtCMigpO2F3YWl0IGExKCk7RngoKTtqemEoKTtwZSgpO2koSTJlLCJmb3JtYXRCeXRlcyIpO2koa3NzLCJwYXJzZUltYWdlU3RyaW5nIik7aShWemEsIm1hcFN0YXR1cyIpO2koU3NzLCJ0b1NlcnZpY2VEZXRhaWwiKTtpKF9zcywidG9TZXJ2aWNlU3RhdHMiKTtpKE1zcywicGFyc2VMb2dzIik7enNzPXtjcHU6MCxtZW1vcnk6IjAgQiIsbWVtb3J5TGltaXQ6IjAgQiIsbmV0d29ya0luOiIwIEIiLG5ldHdvcmtPdXQ6IjAgQiJ9O2VDYT1bbmUoIm9iLXZpZXctc2VydmljZXMiKV07dWw9Y2xhc3MgdWwgZXh0ZW5kcyhKemE9d2UsUXphPVtZKCldLFh6YT1bWSgpXSxaemE9W1koKV0sWXphPVtZKCldLEt6YT1bWSgpXSxHemE9W1koKV0sV3phPVtZKCldLFV6YT1bWSgpXSxKemEpe2NvbnN0cnVjdG9yKCl7c3VwZXIoKTtlYSh0aGlzLEhjdCxpdChlaSw4LHRoaXMse3NlcnZpY2VzOltdLGN1cnJlbnRTZXJ2aWNlOm51bGwsY3VycmVudFNlcnZpY2VMb2dzOltdLGN1cnJlbnRTZXJ2aWNlU3RhdHM6bnVsbCxwbGF0Zm9ybVNlcnZpY2VzOltdLGN1cnJlbnRQbGF0Zm9ybVNlcnZpY2U6bnVsbCxjdXJyZW50UGxhdGZvcm1TZXJ2aWNlU3RhdHM6bnVsbCxjdXJyZW50UGxhdGZvcm1TZXJ2aWNlTG9nczpbXX0pKSxpdChlaSwxMSx0aGlzKTtlYSh0aGlzLHFjdCxpdChlaSwxMix0aGlzLHtiYWNrdXBzOltdLHNjaGVkdWxlczpbXX0pKSxpdChlaSwxNSx0aGlzKTtlYSh0aGlzLGpjdCxpdChlaSwxNix0aGlzLCJsaXN0IikpLGl0KGVpLDE5LHRoaXMpO2VhKHRoaXMsVmN0LGl0KGVpLDIwLHRoaXMsIiIpKSxpdChlaSwyMyx0aGlzKTtlYSh0aGlzLFVjdCxpdChlaSwyNCx0aGlzLCIiKSksaXQoZWksMjcsdGhpcyk7ZWEodGhpcyxXY3QsaXQoZWksMjgsdGhpcywhMSkpLGl0KGVpLDMxLHRoaXMpO2VhKHRoaXMsR2N0LGl0KGVpLDMyLHRoaXMsbnVsbCkpLGl0KGVpLDM1LHRoaXMpO2VhKHRoaXMsS2N0LGl0KGVpLDM2LHRoaXMse2FwcHM6W10sdXBncmFkZWFibGVTZXJ2aWNlczpbXSx1cGdyYWRlT3BlcmF0aW9uczpbXX0pKSxpdChlaSwzOSx0aGlzKTtsZXQgdD1ZdC5zZWxlY3Qobj0+bikuc3Vic2NyaWJlKG49Pnt0aGlzLnNlcnZpY2VzU3RhdGU9bn0pO3RoaXMucnhTdWJzY3JpcHRpb25zLnB1c2godCk7bGV0IGE9SDIuc2VsZWN0KG49Pm4pLnN1YnNjcmliZShuPT57dGhpcy5iYWNrdXBzU3RhdGU9bn0pO3RoaXMucnhTdWJzY3JpcHRpb25zLnB1c2goYSk7bGV0IHI9Y2wuc2VsZWN0KG49Pm4pLnN1YnNjcmliZShuPT57dGhpcy5hcHBTdG9yZVN0YXRlPW59KTt0aGlzLnJ4U3Vic2NyaXB0aW9ucy5wdXNoKHIpfWFzeW5jIGNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSxhd2FpdCBQcm9taXNlLmFsbChbWXQuZGlzcGF0Y2hBY3Rpb24oejJlLG51bGwpLFl0LmRpc3BhdGNoQWN0aW9uKEMyZSxudWxsKSxjbC5kaXNwYXRjaEFjdGlvbihtemEsbnVsbCksY2wuZGlzcGF0Y2hBY3Rpb24oTDJlLG51bGwpXSk7bGV0IHQ9WXQuZ2V0U3RhdGUoKTtpZih0LmN1cnJlbnRQbGF0Zm9ybVNlcnZpY2Upe2xldCBhPXQuY3VycmVudFBsYXRmb3JtU2VydmljZS50eXBlO1l0LnNldFN0YXRlKHsuLi5ZdC5nZXRTdGF0ZSgpLGN1cnJlbnRQbGF0Zm9ybVNlcnZpY2U6bnVsbH0pLHRoaXMubmF2aWdhdGVUb1BsYXRmb3JtRGV0YWlsKGEpfX1yZW5kZXIoKXtzd2l0Y2godGhpcy5jdXJyZW50Vmlldyl7Y2FzZSJjcmVhdGUiOnJldHVybiB0aGlzLnJlbmRlckNyZWF0ZVZpZXcoKTtjYXNlImRldGFpbCI6cmV0dXJuIHRoaXMucmVuZGVyRGV0YWlsVmlldygpO2Nhc2UiYmFja3VwcyI6cmV0dXJuIHRoaXMucmVuZGVyQmFja3Vwc1ZpZXcoKTtjYXNlInBsYXRmb3JtLWRldGFpbCI6cmV0dXJuIHRoaXMucmVuZGVyUGxhdGZvcm1EZXRhaWxWaWV3KCk7ZGVmYXVsdDpyZXR1cm4gdGhpcy5yZW5kZXJMaXN0VmlldygpfX1yZW5kZXJMaXN0Vmlldygpe2xldCB0PXRoaXMuc2VydmljZXNTdGF0ZS5zZXJ2aWNlcy5tYXAobD0+KHtuYW1lOmwubmFtZSxpbWFnZTpsLmltYWdlLGRvbWFpbjpsLmRvbWFpbnx8bnVsbCxzdGF0dXM6VnphKGwuc3RhdHVzKX0pKSxhPWkobD0+e3N3aXRjaChsKXtjYXNlInJ1bm5pbmciOnJldHVybiJSdW5uaW5nIjtjYXNlInN0b3BwZWQiOnJldHVybiJTdG9wcGVkIjtjYXNlInN0YXJ0aW5nIjpyZXR1cm4iU3RhcnRpbmcuLi4iO2Nhc2Uic3RvcHBpbmciOnJldHVybiJTdG9wcGluZy4uLiI7Y2FzZSJmYWlsZWQiOnJldHVybiJGYWlsZWQiO2Nhc2Uibm90LWRlcGxveWVkIjpyZXR1cm4iTm90IERlcGxveWVkIjtkZWZhdWx0OnJldHVybiBsfX0sImRpc3BsYXlTdGF0dXMiKSxyPXRoaXMuc2VydmljZXNTdGF0ZS5wbGF0Zm9ybVNlcnZpY2VzLmZpbHRlcihsPT5sLnN0YXR1cz09PSJydW5uaW5nInx8bC5zdGF0dXM9PT0ic3RhcnRpbmcifHxsLnN0YXR1cz09PSJzdG9wcGluZyJ8fGwuaXNDb3JlKSxuPXRoaXMuc2VydmljZXNTdGF0ZS5wbGF0Zm9ybVNlcnZpY2VzLmZpbHRlcihsPT4hbC5pc0NvcmUmJihsLnN0YXR1cz09PSJub3QtZGVwbG95ZWQifHxsLnN0YXR1cz09PSJzdG9wcGVkInx8bC5zdGF0dXM9PT0iZmFpbGVkIikpLG89ci5tYXAobD0+KHtuYW1lOmwuZGlzcGxheU5hbWUsc3RhdHVzOmEobC5zdGF0dXMpLHJ1bm5pbmc6bC5zdGF0dXM9PT0icnVubmluZyIsdHlwZTpsLnR5cGV9KSk7cmV0dXJuIHdgCiAgICAgIDxvYi1zZWN0aW9uaGVhZGluZz5TZXJ2aWNlczwvb2Itc2VjdGlvbmhlYWRpbmc+CiAgICAgIDxkaXYgY2xhc3M9InBhZ2UtYWN0aW9ucyI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZGVwbG95LWJ1dHRvbiIgQGNsaWNrPSR7KCk9Pnt0aGlzLmN1cnJlbnRWaWV3PSJjcmVhdGUifX0+CiAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+CiAgICAgICAgICAgIDxsaW5lIHgxPSIxMiIgeTE9IjUiIHgyPSIxMiIgeTI9IjE5Ij48L2xpbmU+CiAgICAgICAgICAgIDxsaW5lIHgxPSI1IiB5MT0iMTIiIHgyPSIxOSIgeTI9IjEyIj48L2xpbmU+CiAgICAgICAgICA8L3N2Zz4KICAgICAgICAgIERlcGxveSBTZXJ2aWNlCiAgICAgICAgPC9idXR0b24+CiAgICAgIDwvZGl2PgogICAgICA8c3otc2VydmljZXMtbGlzdC12aWV3CiAgICAgICAgLnNlcnZpY2VzPSR7dH0KICAgICAgICBAc2VydmljZS1jbGljaz0ke2w9Pnt0aGlzLnNlbGVjdGVkU2VydmljZU5hbWU9bC5kZXRhaWwubmFtZXx8bC5kZXRhaWwuc2VydmljZT8ubmFtZSxZdC5kaXNwYXRjaEFjdGlvbihLTWEse25hbWU6dGhpcy5zZWxlY3RlZFNlcnZpY2VOYW1lfSksWXQuZGlzcGF0Y2hBY3Rpb24oSk1hLHtuYW1lOnRoaXMuc2VsZWN0ZWRTZXJ2aWNlTmFtZX0pLFl0LmRpc3BhdGNoQWN0aW9uKGV6YSx7bmFtZTp0aGlzLnNlbGVjdGVkU2VydmljZU5hbWV9KSx0aGlzLmN1cnJlbnRWaWV3PSJkZXRhaWwifX0KICAgICAgICBAc2VydmljZS1hY3Rpb249JHtsPT50aGlzLmhhbmRsZVNlcnZpY2VBY3Rpb24obCl9CiAgICAgID48L3N6LXNlcnZpY2VzLWxpc3Qtdmlldz4KICAgICAgPG9iLXNlY3Rpb25oZWFkaW5nIHN0eWxlPSJtYXJnaW4tdG9wOiAzMnB4OyI+UGxhdGZvcm0gU2VydmljZXM8L29iLXNlY3Rpb25oZWFkaW5nPgogICAgICA8ZGl2IHN0eWxlPSJtYXgtd2lkdGg6IDUwMHB4OyI+CiAgICAgICAgJHtvLmxlbmd0aD4wP3dgCiAgICAgICAgICA8c3otcGxhdGZvcm0tc2VydmljZXMtY2FyZAogICAgICAgICAgICAuc2VydmljZXM9JHtvfQogICAgICAgICAgICBAc2VydmljZS1jbGljaz0ke2w9PntsZXQgcD1sLmRldGFpbC50eXBlfHx0aGlzLnNlcnZpY2VzU3RhdGUucGxhdGZvcm1TZXJ2aWNlcy5maW5kKGQ9PmQuZGlzcGxheU5hbWU9PT1sLmRldGFpbC5uYW1lKT8udHlwZTtwJiZ0aGlzLm5hdmlnYXRlVG9QbGF0Zm9ybURldGFpbChwKX19CiAgICAgICAgICA+PC9zei1wbGF0Zm9ybS1zZXJ2aWNlcy1jYXJkPgogICAgICAgIGA6IiJ9CiAgICAgICAgJHtuLmxlbmd0aD4wP3dgCiAgICAgICAgICA8ZGl2IHN0eWxlPSIKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2ktc2hhZGUtMSwgIzA5MDkwYik7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNpLXNoYWRlLTIsICMyNzI3MmEpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHg7CiAgICAgICAgICAgIG1hcmdpbi10b3A6ICR7by5sZW5ndGg+MD8iMTJweCI6IjAifTsKICAgICAgICAgICAgb3BhY2l0eTogMC41OwogICAgICAgICAgIj4KICAgICAgICAgICAgPGRpdiBzdHlsZT0iZm9udC1zaXplOiAxM3B4OyBjb2xvcjogdmFyKC0tY2ktc2hhZGUtNCwgIzcxNzE3YSk7IG1hcmdpbi1ib3R0b206IDEycHg7Ij5BdmFpbGFibGUg4oCUIG5vdCBpbiB1c2U8L2Rpdj4KICAgICAgICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAxMnB4OyI+CiAgICAgICAgICAgICAgJHtuLm1hcChsPT53YAogICAgICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICBzdHlsZT0iZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtczogY2VudGVyOyBwYWRkaW5nOiA4cHggMDsgY3Vyc29yOiBwb2ludGVyOyB0cmFuc2l0aW9uOiBvcGFjaXR5IDIwMG1zIGVhc2U7IgogICAgICAgICAgICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy5uYXZpZ2F0ZVRvUGxhdGZvcm1EZXRhaWwobC50eXBlKX0KICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAxMHB4OyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0id2lkdGg6IDhweDsgaGVpZ2h0OiA4cHg7IGJvcmRlci1yYWRpdXM6IDUwJTsgYmFja2dyb3VuZDogdmFyKC0tY2ktc2hhZGUtMywgIzNmM2Y0Nik7IGZsZXgtc2hyaW5rOiAwOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6IHZhcigtLWNpLXNoYWRlLTQsICM3MTcxN2EpOyI+JHtsLmRpc3BsYXlOYW1lfTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzcHg7IGNvbG9yOiB2YXIoLS1jaS1zaGFkZS0zLCAjM2YzZjQ2KTsiPiR7YShsLnN0YXR1cyl9PC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgYCl9CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgYDoiIn0KICAgICAgPC9kaXY+CiAgICBgfWFzeW5jIGRlcGxveUZyb21UZW1wbGF0ZSh0KXtsZXQgYT10LmlkfHx0Lm5hbWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXmEtejAtOS1dL2csIi0iKSxyPXt9O2lmKHQuZW52VmFycylmb3IobGV0IG8gb2YgdC5lbnZWYXJzKW8ua2V5JiZvLnZhbHVlJiYocltvLmtleV09by52YWx1ZSk7bGV0IG49e25hbWU6YSxpbWFnZTp0LmltYWdlLHBvcnQ6dC5wb3J0fHw4MCxlbnZWYXJzOnIsZW5hYmxlTW9uZ29EQjp0LmVuYWJsZU1vbmdvREJ8fCExLGVuYWJsZVMzOnQuZW5hYmxlUzN8fCExLGVuYWJsZUNsaWNrSG91c2U6dC5lbmFibGVDbGlja0hvdXNlfHwhMSxlbmFibGVSZWRpczp0LmVuYWJsZVJlZGlzfHwhMSxlbmFibGVNYXJpYURCOnQuZW5hYmxlTWFyaWFEQnx8ITF9O2F3YWl0IFl0LmRpc3BhdGNoQWN0aW9uKGZjdCx7Y29uZmlnOm59KSx0aGlzLnBlbmRpbmdUZW1wbGF0ZT1udWxsLHRoaXMuY3VycmVudFZpZXc9Imxpc3QifXJlbmRlckNyZWF0ZVZpZXcoKXtpZih0aGlzLnBlbmRpbmdUZW1wbGF0ZSl7bGV0IHQ9dGhpcy5wZW5kaW5nVGVtcGxhdGU7cmV0dXJuIHdgCiAgICAgICAgPG9iLXNlY3Rpb25oZWFkaW5nPkRlcGxveSAke3QubmFtZX08L29iLXNlY3Rpb25oZWFkaW5nPgogICAgICAgIDxkaXYgc3R5bGU9Im1heC13aWR0aDogNjAwcHg7IG1hcmdpbjogMCBhdXRvOyI+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kOiB2YXIoLS1jaS1zaGFkZS0xLCAjMDkwOTBiKTsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2ktc2hhZGUtMiwgIzI3MjcyYSk7IGJvcmRlci1yYWRpdXM6IDhweDsgcGFkZGluZzogMjRweDsgbWFyZ2luLWJvdHRvbTogMTZweDsiPgogICAgICAgICAgICA8aDMgc3R5bGU9Im1hcmdpbjogMCAwIDhweCAwOyBmb250LXNpemU6IDE4cHg7Ij4ke3QubmFtZX08L2gzPgogICAgICAgICAgICA8cCBzdHlsZT0ibWFyZ2luOiAwIDAgMTZweCAwOyBjb2xvcjogdmFyKC0tY2ktc2hhZGUtNSwgI2ExYTFhYSk7IGZvbnQtc2l6ZTogMTRweDsiPiR7dC5kZXNjcmlwdGlvbn08L3A+CiAgICAgICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjsgZ2FwOiAxMnB4OyBmb250LXNpemU6IDEzcHg7Ij4KICAgICAgICAgICAgICA8ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogdmFyKC0tY2ktc2hhZGUtNSwgI2ExYTFhYSk7Ij5JbWFnZTo8L3NwYW4+IDxzdHJvbmc+JHt0LmltYWdlfTwvc3Ryb25nPjwvZGl2PgogICAgICAgICAgICAgIDxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiB2YXIoLS1jaS1zaGFkZS01LCAjYTFhMWFhKTsiPlBvcnQ6PC9zcGFuPiA8c3Ryb25nPiR7dC5wb3J0fTwvc3Ryb25nPjwvZGl2PgogICAgICAgICAgICAgIDxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiB2YXIoLS1jaS1zaGFkZS01LCAjYTFhMWFhKTsiPlNlcnZpY2UgTmFtZTo8L3NwYW4+IDxzdHJvbmc+JHt0LmlkfTwvc3Ryb25nPjwvZGl2PgogICAgICAgICAgICAgIDxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiB2YXIoLS1jaS1zaGFkZS01LCAjYTFhMWFhKTsiPkNhdGVnb3J5Ojwvc3Bhbj4gPHN0cm9uZz4ke3QuY2F0ZWdvcnl9PC9zdHJvbmc+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAke3QuZW5hYmxlTW9uZ29EQnx8dC5lbmFibGVTM3x8dC5lbmFibGVDbGlja0hvdXNlfHx0LmVuYWJsZVJlZGlzfHx0LmVuYWJsZU1hcmlhREI/d2AKICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOiAxMnB4OyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiB2YXIoLS1jaS1zaGFkZS01LCAjYTFhMWFhKTsiPgogICAgICAgICAgICAgICAgUGxhdGZvcm0gU2VydmljZXM6CiAgICAgICAgICAgICAgICAke3QuZW5hYmxlTW9uZ29EQj93YDxzcGFuIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDhweDsiPk1vbmdvREI8L3NwYW4+YDoiIn0KICAgICAgICAgICAgICAgICR7dC5lbmFibGVTMz93YDxzcGFuIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDhweDsiPlMzPC9zcGFuPmA6IiJ9CiAgICAgICAgICAgICAgICAke3QuZW5hYmxlQ2xpY2tIb3VzZT93YDxzcGFuIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDhweDsiPkNsaWNrSG91c2U8L3NwYW4+YDoiIn0KICAgICAgICAgICAgICAgICR7dC5lbmFibGVSZWRpcz93YDxzcGFuIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDhweDsiPlJlZGlzPC9zcGFuPmA6IiJ9CiAgICAgICAgICAgICAgICAke3QuZW5hYmxlTWFyaWFEQj93YDxzcGFuIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDhweDsiPk1hcmlhREI8L3NwYW4+YDoiIn0KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYDoiIn0KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTogZmxleDsgZ2FwOiAxMnB4OyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOyI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImRlcGxveS1idXR0b24iIHN0eWxlPSJiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2ktc2hhZGUtMiwgIzI3MjcyYSk7IGNvbG9yOiBpbmhlcml0OyIgQGNsaWNrPSR7KCk9Pnt0aGlzLnBlbmRpbmdUZW1wbGF0ZT1udWxsLHRoaXMuY3VycmVudFZpZXc9Imxpc3QifX0+Q2FuY2VsPC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImRlcGxveS1idXR0b24iIEBjbGljaz0keygpPT50aGlzLmRlcGxveUZyb21UZW1wbGF0ZSh0KX0+RGVwbG95ICR7dC5uYW1lfTwvYnV0dG9uPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIGB9cmV0dXJuIHdgCiAgICAgIDxvYi1zZWN0aW9uaGVhZGluZz5DcmVhdGUgU2VydmljZTwvb2Itc2VjdGlvbmhlYWRpbmc+CiAgICAgIDxzei1zZXJ2aWNlLWNyZWF0ZS12aWV3CiAgICAgICAgLnJlZ2lzdHJpZXM9JHtbXX0KICAgICAgICBAY3JlYXRlLXNlcnZpY2U9JHthc3luYyB0PT57bGV0IGE9dC5kZXRhaWwscj17bmFtZTphLm5hbWUsaW1hZ2U6YS5pbWFnZSxwb3J0OmEucG9ydHM/LlswXT8uY29udGFpbmVyUG9ydD9wYXJzZUludChhLnBvcnRzWzBdLmNvbnRhaW5lclBvcnQsMTApOjgwLGVudlZhcnM6YS5lbnZWYXJzPy5yZWR1Y2UoKG4sbyk9PihvLmtleSYmKG5bby5rZXldPW8udmFsdWUpLG4pLHt9KSxlbmFibGVNb25nb0RCOmEuZW5hYmxlTW9uZ29EQnx8ITEsZW5hYmxlUzM6YS5lbmFibGVTM3x8ITEsZW5hYmxlQ2xpY2tIb3VzZTphLmVuYWJsZUNsaWNrSG91c2V8fCExLGVuYWJsZVJlZGlzOmEuZW5hYmxlUmVkaXN8fCExLGVuYWJsZU1hcmlhREI6YS5lbmFibGVNYXJpYURCfHwhMX07YXdhaXQgWXQuZGlzcGF0Y2hBY3Rpb24oZmN0LHtjb25maWc6cn0pLHRoaXMuY3VycmVudFZpZXc9Imxpc3QifX0KICAgICAgICBAY2FuY2VsPSR7KCk9Pnt0aGlzLmN1cnJlbnRWaWV3PSJsaXN0In19CiAgICAgID48L3N6LXNlcnZpY2UtY3JlYXRlLXZpZXc+CiAgICBgfXJlbmRlckRldGFpbFZpZXcoKXtsZXQgdD10aGlzLnNlcnZpY2VzU3RhdGUuY3VycmVudFNlcnZpY2UsYT10P1Nzcyh0KTpudWxsLHI9dGhpcy5zZXJ2aWNlc1N0YXRlLmN1cnJlbnRTZXJ2aWNlU3RhdHM/X3NzKHRoaXMuc2VydmljZXNTdGF0ZS5jdXJyZW50U2VydmljZVN0YXRzKTp6c3Msbj1Nc3ModGhpcy5zZXJ2aWNlc1N0YXRlLmN1cnJlbnRTZXJ2aWNlTG9ncyksbz10P3RoaXMuYXBwU3RvcmVTdGF0ZS51cGdyYWRlYWJsZVNlcnZpY2VzLmZpbmQoZD0+ZC5zZXJ2aWNlTmFtZT09PXQubmFtZSk6bnVsbCxsPXQ/dGhpcy5hcHBTdG9yZVN0YXRlLnVwZ3JhZGVPcGVyYXRpb25zLmZpbmQoZD0+ZC5zZXJ2aWNlTmFtZT09PXQubmFtZSYmZC5zdGF0dXM9PT0icnVubmluZyIpOm51bGwscD10P3RoaXMuYXBwU3RvcmVTdGF0ZS51cGdyYWRlT3BlcmF0aW9ucy5maW5kKGQ9PmQuc2VydmljZU5hbWU9PT10Lm5hbWUpOm51bGw7cmV0dXJuIHdgCiAgICAgIDxvYi1zZWN0aW9uaGVhZGluZz5TZXJ2aWNlIERldGFpbHM8L29iLXNlY3Rpb25oZWFkaW5nPgogICAgICAke2w/dGhpcy5yZW5kZXJVcGdyYWRlT3BlcmF0aW9uKGwpOiIifQogICAgICAkeyFsJiZwPy5zdGF0dXM9PT0iZmFpbGVkIj90aGlzLnJlbmRlclVwZ3JhZGVPcGVyYXRpb24ocCk6IiJ9CiAgICAgICR7bz93YAogICAgICAgIDxkaXYgc3R5bGU9IgogICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSg1OSwgMTMwLCAyNDYsIDAuMSksIHJnYmEoMTM5LCA5MiwgMjQ2LCAwLjEpKTsKICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNTksIDEzMCwgMjQ2LCAwLjMpOwogICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAiPgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBzdHlsZT0iZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogdmFyKC0tY2ktc2hhZGUtNywgI2U0ZTRlNyk7Ij4KICAgICAgICAgICAgICBVcGRhdGUgYXZhaWxhYmxlOiB2JHtvLmN1cnJlbnRWZXJzaW9ufSAmcmFycjsgdiR7by5sYXRlc3RWZXJzaW9ufQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBzdHlsZT0iZm9udC1zaXplOiAxMnB4OyBjb2xvcjogdmFyKC0tY2ktc2hhZGUtNCwgIzcxNzE3YSk7IG1hcmdpbi10b3A6IDRweDsiPgogICAgICAgICAgICAgICR7by5oYXNNaWdyYXRpb24/Ik1pZ3JhdGlvbiBzY3JpcHQgYXZhaWxhYmxlIjoiQ29uZmlnLW9ubHkgdXBncmFkZSJ9CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgIGNsYXNzPSJkZXBsb3ktYnV0dG9uIgogICAgICAgICAgICBzdHlsZT0icGFkZGluZzogOHB4IDE2cHg7IGZvbnQtc2l6ZTogMTNweDsiCiAgICAgICAgICAgID9kaXNhYmxlZD0keyEhbH0KICAgICAgICAgICAgQGNsaWNrPSR7YXN5bmMoKT0+e2F3YWl0IGNsLmRpc3BhdGNoQWN0aW9uKGd6YSx7c2VydmljZU5hbWU6by5zZXJ2aWNlTmFtZSx0YXJnZXRWZXJzaW9uOm8ubGF0ZXN0VmVyc2lvbn0pfX0KICAgICAgICAgID4ke2w/IlVwZ3JhZGluZy4uLiI6IlVwZ3JhZGUifTwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICBgOiIifQogICAgICA8c3otc2VydmljZS1kZXRhaWwtdmlldwogICAgICAgIC5zZXJ2aWNlPSR7YX0KICAgICAgICAubG9ncz0ke259CiAgICAgICAgLnN0YXRzPSR7cn0KICAgICAgICBAYmFjaz0keygpPT57dGhpcy5jdXJyZW50Vmlldz0ibGlzdCJ9fQogICAgICAgIEBzZXJ2aWNlLWFjdGlvbj0ke2Q9PnRoaXMuaGFuZGxlU2VydmljZUFjdGlvbihkKX0KICAgICAgICBAcmVxdWVzdC13b3Jrc3BhY2U9JHthc3luYyBkPT57bGV0IHU9ZC5kZXRhaWw/LnNlcnZpY2U/Lm5hbWV8fHRoaXMuc2VsZWN0ZWRTZXJ2aWNlTmFtZSxjPVFpLmdldFN0YXRlKCkuaWRlbnRpdHk7aWYoISghdXx8IWMpKXRyeXtsZXQgYj1uZXcgUDJlKHUsYyk7YXdhaXQgYi5pbml0KCk7bGV0IHY9dGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCJzei1zZXJ2aWNlLWRldGFpbC12aWV3Iik7diYmKHYud29ya3NwYWNlRW52aXJvbm1lbnQ9YiksdGhpcy53b3Jrc3BhY2VPcGVuPSEwLHRoaXMuY2xhc3NMaXN0LmFkZCgid29ya3NwYWNlLW1vZGUiKX1jYXRjaChiKXtjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gb3BlbiB3b3Jrc3BhY2U6IixiKX19fQogICAgICAgIEBiYWNrPSR7KCk9Pnt0aGlzLndvcmtzcGFjZU9wZW49ITEsdGhpcy5jbGFzc0xpc3QucmVtb3ZlKCJ3b3Jrc3BhY2UtbW9kZSIpLHRoaXMuY3VycmVudFZpZXc9Imxpc3QifX0KICAgICAgPjwvc3otc2VydmljZS1kZXRhaWwtdmlldz4KICAgIGB9cmVuZGVyVXBncmFkZU9wZXJhdGlvbih0KXtsZXQgYT10LnN0YXR1cz09PSJmYWlsZWQiPyIjZjg3MTcxIjoiIzYwYTVmYSI7cmV0dXJuIHdgCiAgICAgIDxkaXYgc3R5bGU9IgogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNpLXNoYWRlLTEsICMwOTA5MGIpOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7YX07CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgICAgIj4KICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGdhcDogMTZweDsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7Ij4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6IHZhcigtLWNpLXNoYWRlLTcsICNlNGU0ZTcpOyI+CiAgICAgICAgICAgICAgVXBncmFkZSAke3QuZnJvbVZlcnNpb259ICZyYXJyOyAke3QudGFyZ2V0VmVyc2lvbn06ICR7dC5zdGVwfQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBzdHlsZT0iZm9udC1zaXplOiAxMnB4OyBjb2xvcjogdmFyKC0tY2ktc2hhZGUtNCwgIzcxNzE3YSk7IG1hcmdpbi10b3A6IDRweDsiPgogICAgICAgICAgICAgICR7dC5zdGF0dXM9PT0icnVubmluZyI/Ik9wZXJhdGlvbiBpcyBydW5uaW5nIGluIHRoZSBiYWNrZ3JvdW5kLiI6dC5lcnJvcnx8Ik9wZXJhdGlvbiBmaW5pc2hlZC4ifQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJweDsgY29sb3I6ICR7YX07IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGxldHRlci1zcGFjaW5nOiAwLjA0ZW07Ij4KICAgICAgICAgICAgJHt0LnN0YXR1c30KICAgICAgICAgIDwvc3Bhbj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IHN0eWxlPSIKICAgICAgICAgIG1hcmdpbi10b3A6IDEycHg7CiAgICAgICAgICBwYWRkaW5nOiAxMHB4IDEycHg7CiAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaS1zaGFkZS0wLCAjMDMwMzA1KTsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICAgIGNvbG9yOiB2YXIoLS1jaS1zaGFkZS01LCAjYTFhMWFhKTsKICAgICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgICBsaW5lLWhlaWdodDogMS41OwogICAgICAgICAgbWF4LWhlaWdodDogMTMwcHg7CiAgICAgICAgICBvdmVyZmxvdzogYXV0bzsKICAgICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKICAgICAgICAiPiR7dC5wcm9ncmVzc0xpbmVzLnNsaWNlKC04KS5qb2luKGAKYCl9PC9kaXY+CiAgICAgICAgJHt0Lndhcm5pbmdzLmxlbmd0aD4wP3dgCiAgICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOiAxMHB4OyBjb2xvcjogI2ZiYmYyNDsgZm9udC1zaXplOiAxMnB4OyI+CiAgICAgICAgICAgICR7dC53YXJuaW5ncy5qb2luKCIgfCAiKX0KICAgICAgICAgIDwvZGl2PgogICAgICAgIGA6IiJ9CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJCYWNrdXBzVmlldygpe3JldHVybiB3YAogICAgICA8b2Itc2VjdGlvbmhlYWRpbmc+QmFja3Vwczwvb2Itc2VjdGlvbmhlYWRpbmc+CiAgICAgIDxzei1zZXJ2aWNlcy1iYWNrdXBzLXZpZXcKICAgICAgICAuc2NoZWR1bGVzPSR7dGhpcy5iYWNrdXBzU3RhdGUuc2NoZWR1bGVzfQogICAgICAgIC5iYWNrdXBzPSR7dGhpcy5iYWNrdXBzU3RhdGUuYmFja3Vwc30KICAgICAgICBAY3JlYXRlLXNjaGVkdWxlPSR7dD0+e0gyLmRpc3BhdGNoQWN0aW9uKGx6YSx7Y29uZmlnOnQuZGV0YWlsfSl9fQogICAgICAgIEBydW4tbm93PSR7dD0+e0gyLmRpc3BhdGNoQWN0aW9uKGN6YSx7c2NoZWR1bGVJZDp0LmRldGFpbC5zY2hlZHVsZUlkfSl9fQogICAgICAgIEBkZWxldGUtYmFja3VwPSR7dD0+e0gyLmRpc3BhdGNoQWN0aW9uKG56YSx7YmFja3VwSWQ6dC5kZXRhaWwuYmFja3VwSWR9KX19CiAgICAgID48L3N6LXNlcnZpY2VzLWJhY2t1cHMtdmlldz4KICAgIGB9bmF2aWdhdGVUb1BsYXRmb3JtRGV0YWlsKHQpe3RoaXMuY3VycmVudFZpZXc9Imxpc3QiLHRoaXMuc2VsZWN0ZWRQbGF0Zm9ybVR5cGU9dCxZdC5zZXRTdGF0ZSh7Li4uWXQuZ2V0U3RhdGUoKSxjdXJyZW50UGxhdGZvcm1TZXJ2aWNlU3RhdHM6bnVsbCxjdXJyZW50UGxhdGZvcm1TZXJ2aWNlTG9nczpbXX0pO2xldCBhPXQ7WXQuZGlzcGF0Y2hBY3Rpb24oVDJlLHtzZXJ2aWNlVHlwZTphfSksWXQuZGlzcGF0Y2hBY3Rpb24odHphLHtzZXJ2aWNlVHlwZTphfSkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dGhpcy5jdXJyZW50Vmlldz0icGxhdGZvcm0tZGV0YWlsIn0pfXJlbmRlclBsYXRmb3JtRGV0YWlsVmlldygpe2xldCB0PXRoaXMuc2VydmljZXNTdGF0ZS5wbGF0Zm9ybVNlcnZpY2VzLmZpbmQocD0+cC50eXBlPT09dGhpcy5zZWxlY3RlZFBsYXRmb3JtVHlwZSksYT10aGlzLnNlcnZpY2VzU3RhdGUuY3VycmVudFBsYXRmb3JtU2VydmljZVN0YXRzLHI9e2NwdTphP01hdGgucm91bmQoYS5jcHVQZXJjZW50KTowLG1lbW9yeTphP01hdGgucm91bmQoYS5tZW1vcnlQZXJjZW50KTowLHN0b3JhZ2U6MCxjb25uZWN0aW9uczp2b2lkIDB9LG89dD97bW9uZ29kYjp7aG9zdDoib25lYm94LW1vbmdvZGIiLHBvcnQ6MjcwMTcsdmVyc2lvbjoiNC40Iixjb25maWc6e2VuZ2luZToiV2lyZWRUaWdlciIsYXV0aEVuYWJsZWQ6ITB9fSxtaW5pbzp7aG9zdDoib25lYm94LW1pbmlvIixwb3J0OjllMyx2ZXJzaW9uOiJsYXRlc3QiLGNvbmZpZzp7Y29uc29sZVBvcnQ6OTAwMSxyZWdpb246InVzLWVhc3QtMSJ9fSxjbGlja2hvdXNlOntob3N0OiJvbmVib3gtY2xpY2tob3VzZSIscG9ydDo4MTIzLHZlcnNpb246ImxhdGVzdCIsY29uZmlnOntuYXRpdmVQb3J0OjllMyxodHRwUG9ydDo4MTIzfX0sc21hcnRwcm94eTp7aG9zdDoib25lYm94LXNtYXJ0cHJveHkiLHBvcnQ6ODAsdmVyc2lvbjoibGF0ZXN0Iixjb25maWc6e2h0dHBzUG9ydDo0NDMsYWRtaW5BcGk6MjAxOX19LG1hcmlhZGI6e2hvc3Q6Im9uZWJveC1tYXJpYWRiIixwb3J0OjMzMDYsdmVyc2lvbjoiMTEiLGNvbmZpZzp7ZW5naW5lOiJJbm5vREIiLGF1dGhFbmFibGVkOiEwfX0scmVkaXM6e2hvc3Q6Im9uZWJveC1yZWRpcyIscG9ydDo2Mzc5LHZlcnNpb246IjctYWxwaW5lIixjb25maWc6e2FwcGVuZG9ubHk6ITAsbWF4RGF0YWJhc2VzOjE2fX19W3QudHlwZV18fHtob3N0OiJ1bmtub3duIixwb3J0OjAsdmVyc2lvbjoiIixjb25maWc6e319Ontob3N0OiIiLHBvcnQ6MCx2ZXJzaW9uOiIiLGNvbmZpZzp7fX0sbD1pKHA9Pntzd2l0Y2gocCl7Y2FzZSJydW5uaW5nIjpyZXR1cm4icnVubmluZyI7Y2FzZSJmYWlsZWQiOnJldHVybiJlcnJvciI7ZGVmYXVsdDpyZXR1cm4ic3RvcHBlZCJ9fSwibWFwUGxhdGZvcm1TdGF0dXMiKTtyZXR1cm4gd2AKICAgICAgPG9iLXNlY3Rpb25oZWFkaW5nPlBsYXRmb3JtIFNlcnZpY2U8L29iLXNlY3Rpb25oZWFkaW5nPgogICAgICA8ZGl2IGNsYXNzPSJwYWdlLWFjdGlvbnMiIHN0eWxlPSJqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7Ij4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJkZXBsb3ktYnV0dG9uIiBzdHlsZT0iYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNpLXNoYWRlLTIsICMyNzI3MmEpOyBjb2xvcjogaW5oZXJpdDsiIEBjbGljaz0keygpPT57dGhpcy5jdXJyZW50Vmlldz0ibGlzdCJ9fT4KICAgICAgICAgICZsYXJyOyBCYWNrIHRvIFNlcnZpY2VzCiAgICAgICAgPC9idXR0b24+CiAgICAgIDwvZGl2PgogICAgICA8c3otcGxhdGZvcm0tc2VydmljZS1kZXRhaWwtdmlldwogICAgICAgIC5zZXJ2aWNlPSR7dD97aWQ6dC50eXBlLG5hbWU6dC5kaXNwbGF5TmFtZSx0eXBlOnQudHlwZSxzdGF0dXM6bCh0LnN0YXR1cyksdmVyc2lvbjpvLnZlcnNpb24saG9zdDpvLmhvc3QscG9ydDpvLnBvcnQsY29uZmlnOm8uY29uZmlnLG1ldHJpY3M6cn06bnVsbH0KICAgICAgICAubG9ncz0ke3RoaXMuc2VydmljZXNTdGF0ZS5jdXJyZW50UGxhdGZvcm1TZXJ2aWNlTG9ncy5tYXAocD0+KHt0aW1lc3RhbXA6bmV3IERhdGUocC50aW1lc3RhbXApLnRvSVNPU3RyaW5nKCksbGV2ZWw6cC5sZXZlbCxtZXNzYWdlOnAubWVzc2FnZX0pKX0KICAgICAgICBAYmFjaz0keygpPT57dGhpcy5jdXJyZW50Vmlldz0ibGlzdCJ9fQogICAgICAgIEBzdGFydD0ke2FzeW5jKCk9Pnthd2FpdCBZdC5kaXNwYXRjaEFjdGlvbihtY3Qse3NlcnZpY2VUeXBlOnRoaXMuc2VsZWN0ZWRQbGF0Zm9ybVR5cGV9KSxZdC5kaXNwYXRjaEFjdGlvbihUMmUse3NlcnZpY2VUeXBlOnRoaXMuc2VsZWN0ZWRQbGF0Zm9ybVR5cGV9KX19CiAgICAgICAgQHN0b3A9JHthc3luYygpPT57YXdhaXQgWXQuZGlzcGF0Y2hBY3Rpb24oZ2N0LHtzZXJ2aWNlVHlwZTp0aGlzLnNlbGVjdGVkUGxhdGZvcm1UeXBlfSl9fQogICAgICAgIEByZXN0YXJ0PSR7YXN5bmMoKT0+e2F3YWl0IFl0LmRpc3BhdGNoQWN0aW9uKGdjdCx7c2VydmljZVR5cGU6dGhpcy5zZWxlY3RlZFBsYXRmb3JtVHlwZX0pLGF3YWl0IFl0LmRpc3BhdGNoQWN0aW9uKG1jdCx7c2VydmljZVR5cGU6dGhpcy5zZWxlY3RlZFBsYXRmb3JtVHlwZX0pLFl0LmRpc3BhdGNoQWN0aW9uKFQyZSx7c2VydmljZVR5cGU6dGhpcy5zZWxlY3RlZFBsYXRmb3JtVHlwZX0pfX0KICAgICAgPjwvc3otcGxhdGZvcm0tc2VydmljZS1kZXRhaWwtdmlldz4KICAgIGB9YXN5bmMgaGFuZGxlU2VydmljZUFjdGlvbih0KXtsZXQgYT10LmRldGFpbC5hY3Rpb24scj10LmRldGFpbC5zZXJ2aWNlPy5uYW1lfHx0LmRldGFpbC5uYW1lfHx0aGlzLnNlbGVjdGVkU2VydmljZU5hbWU7c3dpdGNoKGEpe2Nhc2Uic3RhcnQiOmF3YWl0IFl0LmRpc3BhdGNoQWN0aW9uKFpNYSx7bmFtZTpyfSk7YnJlYWs7Y2FzZSJzdG9wIjphd2FpdCBZdC5kaXNwYXRjaEFjdGlvbihYTWEse25hbWU6cn0pO2JyZWFrO2Nhc2UicmVzdGFydCI6YXdhaXQgWXQuZGlzcGF0Y2hBY3Rpb24oUU1hLHtuYW1lOnJ9KTticmVhaztjYXNlImRlbGV0ZSI6YXdhaXQgWXQuZGlzcGF0Y2hBY3Rpb24oWU1hLHtuYW1lOnJ9KSx0aGlzLmN1cnJlbnRWaWV3PSJsaXN0IjticmVha319fTtlaT1SaShKemEpLEhjdD1uZXcgV2Vha01hcCxxY3Q9bmV3IFdlYWtNYXAsamN0PW5ldyBXZWFrTWFwLFZjdD1uZXcgV2Vha01hcCxVY3Q9bmV3IFdlYWtNYXAsV2N0PW5ldyBXZWFrTWFwLEdjdD1uZXcgV2Vha01hcCxLY3Q9bmV3IFdlYWtNYXAsUnQoZWksNCwic2VydmljZXNTdGF0ZSIsUXphLHVsLEhjdCksUnQoZWksNCwiYmFja3Vwc1N0YXRlIixYemEsdWwscWN0KSxSdChlaSw0LCJjdXJyZW50VmlldyIsWnphLHVsLGpjdCksUnQoZWksNCwic2VsZWN0ZWRTZXJ2aWNlTmFtZSIsWXphLHVsLFZjdCksUnQoZWksNCwic2VsZWN0ZWRQbGF0Zm9ybVR5cGUiLEt6YSx1bCxVY3QpLFJ0KGVpLDQsIndvcmtzcGFjZU9wZW4iLEd6YSx1bCxXY3QpLFJ0KGVpLDQsInBlbmRpbmdUZW1wbGF0ZSIsV3phLHVsLEdjdCksUnQoZWksNCwiYXBwU3RvcmVTdGF0ZSIsVXphLHVsLEtjdCksdWw9UnQoZWksMCwiT2JWaWV3U2VydmljZXMiLGVDYSx1bCksaSh1bCwiT2JWaWV3U2VydmljZXMiKSx2aSh1bCwic3R5bGVzIixbaC5kZWZhdWx0U3R5bGVzLHlvLEpgCiAgICAgIC5wYWdlLWFjdGlvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICB9CgogICAgICAuZGVwbG95LWJ1dHRvbiB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBwYWRkaW5nOiAxMHB4IDIwcHg7CiAgICAgICAgYmFja2dyb3VuZDogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiI2ZhZmFmYSIsIiMxODE4MWIiKX07CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAyMDBtcyBlYXNlOwogICAgICB9CgogICAgICAuZGVwbG95LWJ1dHRvbjpob3ZlciB7CiAgICAgICAgb3BhY2l0eTogMC45OwogICAgICB9CgogICAgICAuZGVwbG95LWJ1dHRvbiBzdmcgewogICAgICAgIHdpZHRoOiAxNnB4OwogICAgICAgIGhlaWdodDogMTZweDsKICAgICAgfQoKICAgICAgOmhvc3QoLndvcmtzcGFjZS1tb2RlKSB7CiAgICAgICAgbWF4LXdpZHRoOiBub25lOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgfQoKICAgICAgOmhvc3QoLndvcmtzcGFjZS1tb2RlKSBvYi1zZWN0aW9uaGVhZGluZyB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgYF0pLGl0KGVpLDEsdWwpO1ljdD11bH0pO3ZhciBuQ2E9e307eXQobkNhLHtPYlZpZXdOZXR3b3JrOigpPT5lMXR9KTt2YXIgYUNhLHNDYSxpQ2EsckNhLG9DYSxpMSxYY3QsUWN0LEpjdCxpMCxlMXQsdDF0PWcoYXN5bmMoKT0+e2xsKCk7QjIoKTthd2FpdCBhMSgpO3BlKCk7b0NhPVtuZSgib2Itdmlldy1uZXR3b3JrIildO2kwPWNsYXNzIGkwIGV4dGVuZHMockNhPXdlLGlDYT1bWSgpXSxzQ2E9W1koKV0sYUNhPVtZKCldLHJDYSl7Y29uc3RydWN0b3IoKXtzdXBlcigpO2VhKHRoaXMsWGN0LGl0KGkxLDgsdGhpcyx7dGFyZ2V0czpbXSxzdGF0czpudWxsLHRyYWZmaWNTdGF0czpudWxsLGRuc1JlY29yZHM6W10sZG9tYWluczpbXSxnYXRld2F5RG9tYWluczpbXSxnYXRld2F5RG5zUmVjb3JkczpbXSxjZXJ0aWZpY2F0ZXM6W119KSksaXQoaTEsMTEsdGhpcyk7ZWEodGhpcyxRY3QsaXQoaTEsMTIsdGhpcywicHJveHkiKSksaXQoaTEsMTUsdGhpcyk7ZWEodGhpcyxKY3QsaXQoaTEsMTYsdGhpcywiIikpLGl0KGkxLDE5LHRoaXMpO2xldCB0PVphLnNlbGVjdChhPT5hKS5zdWJzY3JpYmUoYT0+e3RoaXMubmV0d29ya1N0YXRlPWF9KTt0aGlzLnJ4U3Vic2NyaXB0aW9ucy5wdXNoKHQpfWFzeW5jIGNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSxhd2FpdCBQcm9taXNlLmFsbChbWmEuZGlzcGF0Y2hBY3Rpb24oYmN0LG51bGwpLFphLmRpc3BhdGNoQWN0aW9uKHlKLG51bGwpLFphLmRpc3BhdGNoQWN0aW9uKHdKLG51bGwpLFphLmRpc3BhdGNoQWN0aW9uKGF6YSxudWxsKSxaYS5kaXNwYXRjaEFjdGlvbih2Y3QsbnVsbCksWmEuZGlzcGF0Y2hBY3Rpb24oJDJlLG51bGwpXSl9cmVuZGVyKCl7c3dpdGNoKHRoaXMuY3VycmVudFRhYil7Y2FzZSJkbnMiOnJldHVybiB0aGlzLnJlbmRlckRuc1ZpZXcoKTtjYXNlImRvbWFpbnMiOnJldHVybiB0aGlzLnJlbmRlckRvbWFpbnNWaWV3KCk7Y2FzZSJkb21haW4tZGV0YWlsIjpyZXR1cm4gdGhpcy5yZW5kZXJEb21haW5EZXRhaWxWaWV3KCk7ZGVmYXVsdDpyZXR1cm4gdGhpcy5yZW5kZXJQcm94eVZpZXcoKX19cmVuZGVyUHJveHlWaWV3KCl7bGV0IHQ9dGhpcy5uZXR3b3JrU3RhdGUuc3RhdHM7cmV0dXJuIHdgCiAgICAgIDxvYi1zZWN0aW9uaGVhZGluZz5OZXR3b3JrPC9vYi1zZWN0aW9uaGVhZGluZz4KICAgICAgPHN6LW5ldHdvcmstcHJveHktdmlldwogICAgICAgIC5wcm94eVN0YXR1cz0ke3Q/LnByb3h5Py5ydW5uaW5nPyJydW5uaW5nIjoic3RvcHBlZCJ9CiAgICAgICAgLnJvdXRlQ291bnQ9JHtTdHJpbmcodD8ucHJveHk/LnJvdXRlc3x8MCl9CiAgICAgICAgLmNlcnRpZmljYXRlQ291bnQ9JHtTdHJpbmcodD8ucHJveHk/LmNlcnRpZmljYXRlc3x8MCl9CiAgICAgICAgLnRhcmdldENvdW50PSR7U3RyaW5nKHRoaXMubmV0d29ya1N0YXRlLnRhcmdldHMubGVuZ3RoKX0KICAgICAgICAudGFyZ2V0cz0ke3RoaXMubmV0d29ya1N0YXRlLnRhcmdldHMubWFwKGE9Pih7dHlwZTphLnR5cGUsbmFtZTphLm5hbWUsZG9tYWluOmEuZG9tYWluLHRhcmdldDpgJHthLnRhcmdldEhvc3R9OiR7YS50YXJnZXRQb3J0fWAsc3RhdHVzOmEuc3RhdHVzfSkpfQogICAgICAgIC5sb2dzPSR7W119CiAgICAgICAgQHJlZnJlc2g9JHsoKT0+e1phLmRpc3BhdGNoQWN0aW9uKGJjdCxudWxsKSxaYS5kaXNwYXRjaEFjdGlvbih5SixudWxsKX19CiAgICAgID48L3N6LW5ldHdvcmstcHJveHktdmlldz4KICAgIGB9cmVuZGVyRG5zVmlldygpe3JldHVybiB3YAogICAgICA8b2Itc2VjdGlvbmhlYWRpbmc+RE5TIFJlY29yZHM8L29iLXNlY3Rpb25oZWFkaW5nPgogICAgICA8c3otbmV0d29yay1kbnMtdmlldwogICAgICAgIC5yZWNvcmRzPSR7dGhpcy5uZXR3b3JrU3RhdGUuZG5zUmVjb3Jkc30KICAgICAgICBAc3luYz0keygpPT57WmEuZGlzcGF0Y2hBY3Rpb24oc3phLG51bGwpfX0KICAgICAgICBAZGVsZXRlPSR7dD0+e2NvbnNvbGUubG9nKCJEZWxldGUgRE5TIHJlY29yZDoiLHQuZGV0YWlsKX19CiAgICAgID48L3N6LW5ldHdvcmstZG5zLXZpZXc+CiAgICBgfXJlbmRlckRvbWFpbnNWaWV3KCl7bGV0IHQ9dGhpcy5uZXR3b3JrU3RhdGUuY2VydGlmaWNhdGVzO3JldHVybiB3YAogICAgICA8b2Itc2VjdGlvbmhlYWRpbmc+RG9tYWluczwvb2Itc2VjdGlvbmhlYWRpbmc+CiAgICAgIDxzei1uZXR3b3JrLWRvbWFpbnMtdmlldwogICAgICAgIC5kb21haW5zPSR7dGhpcy5uZXR3b3JrU3RhdGUuZG9tYWlucy5tYXAoYT0+e2xldCByPXQuZmluZChvPT5vLmNlcnREb21haW49PT1hLmRvbWFpbiksbj0icGVuZGluZyI7cmV0dXJuIHImJihyLmlzVmFsaWQ/ci5leHBpcmVzQXQmJnIuZXhwaXJlc0F0LURhdGUubm93KCk8NzIwKjYwKjYwKjFlMz9uPSJleHBpcmluZyI6bj0idmFsaWQiOm49ImV4cGlyZWQiKSx7ZG9tYWluOmEuZG9tYWluLHByb3ZpZGVyOiJjbG91ZGZsYXJlIixzZXJ2aWNlQ291bnQ6YS5zZXJ2aWNlcz8ubGVuZ3RofHwwLGNlcnRpZmljYXRlU3RhdHVzOm59fSl9CiAgICAgICAgQHN5bmM9JHsoKT0+e1phLmRpc3BhdGNoQWN0aW9uKHZjdCxudWxsKX19CiAgICAgICAgQHZpZXc9JHthPT57dGhpcy5zZWxlY3RlZERvbWFpbj1hLmRldGFpbC5kb21haW58fGEuZGV0YWlsLHRoaXMuY3VycmVudFRhYj0iZG9tYWluLWRldGFpbCJ9fQogICAgICA+PC9zei1uZXR3b3JrLWRvbWFpbnMtdmlldz4KICAgIGB9cmVuZGVyRG9tYWluRGV0YWlsVmlldygpe2xldCB0PXRoaXMubmV0d29ya1N0YXRlLmRvbWFpbnMuZmluZChyPT5yLmRvbWFpbj09PXRoaXMuc2VsZWN0ZWREb21haW4pLGE9dGhpcy5uZXR3b3JrU3RhdGUuY2VydGlmaWNhdGVzLmZpbmQocj0+ci5jZXJ0RG9tYWluPT09dGhpcy5zZWxlY3RlZERvbWFpbik7cmV0dXJuIHdgCiAgICAgIDxvYi1zZWN0aW9uaGVhZGluZz5Eb21haW4gRGV0YWlsczwvb2Itc2VjdGlvbmhlYWRpbmc+CiAgICAgIDxzei1kb21haW4tZGV0YWlsLXZpZXcKICAgICAgICAuZG9tYWluPSR7dD97aWQ6dGhpcy5zZWxlY3RlZERvbWFpbixuYW1lOnRoaXMuc2VsZWN0ZWREb21haW4sc3RhdHVzOiJhY3RpdmUiLHZlcmlmaWVkOiEwLGNyZWF0ZWRBdDoiIn06bnVsbH0KICAgICAgICAuY2VydGlmaWNhdGU9JHthP3tpZDphLmRvbWFpbklkLGRvbWFpbjphLmNlcnREb21haW4saXNzdWVyOiJMZXQncyBFbmNyeXB0Iix2YWxpZEZyb206YS5pc3N1ZWRBdD9uZXcgRGF0ZShhLmlzc3VlZEF0KS50b0lTT1N0cmluZygpOiIiLHZhbGlkVW50aWw6YS5leHBpcmVzQXQ/bmV3IERhdGUoYS5leHBpcmVzQXQpLnRvSVNPU3RyaW5nKCk6IiIsZGF5c1JlbWFpbmluZzphLmV4cGlyZXNBdD9NYXRoLmZsb29yKChhLmV4cGlyZXNBdC1EYXRlLm5vdygpKS8oMTQ0MCo2MCoxZTMpKTowLHN0YXR1czphLmlzVmFsaWQ/InZhbGlkIjoiZXhwaXJlZCIsYXV0b1JlbmV3OiEwfTpudWxsfQogICAgICAgIC5kbnNSZWNvcmRzPSR7dGhpcy5uZXR3b3JrU3RhdGUuZG5zUmVjb3Jkcy5maWx0ZXIocj0+ci5kb21haW4/LmluY2x1ZGVzKHRoaXMuc2VsZWN0ZWREb21haW4pKS5tYXAocj0+KHtpZDpyLmlkfHwiIix0eXBlOnIudHlwZSxuYW1lOnIuZG9tYWluLHZhbHVlOnIudmFsdWUsdHRsOjM2MDB9KSl9CiAgICAgICAgQHJlbmV3LWNlcnRpZmljYXRlPSR7KCk9PntaYS5kaXNwYXRjaEFjdGlvbihpemEse2RvbWFpbjp0aGlzLnNlbGVjdGVkRG9tYWlufSl9fQogICAgICA+PC9zei1kb21haW4tZGV0YWlsLXZpZXc+CiAgICBgfX07aTE9UmkockNhKSxYY3Q9bmV3IFdlYWtNYXAsUWN0PW5ldyBXZWFrTWFwLEpjdD1uZXcgV2Vha01hcCxSdChpMSw0LCJuZXR3b3JrU3RhdGUiLGlDYSxpMCxYY3QpLFJ0KGkxLDQsImN1cnJlbnRUYWIiLHNDYSxpMCxRY3QpLFJ0KGkxLDQsInNlbGVjdGVkRG9tYWluIixhQ2EsaTAsSmN0KSxpMD1SdChpMSwwLCJPYlZpZXdOZXR3b3JrIixvQ2EsaTApLGkoaTAsIk9iVmlld05ldHdvcmsiKSx2aShpMCwic3R5bGVzIixbaC5kZWZhdWx0U3R5bGVzLHlvLEpgYF0pLGl0KGkxLDEsaTApO2UxdD1pMH0pO3ZhciB1Q2E9e307eXQodUNhLHtPYlZpZXdEb21haW5zOigpPT5zMXR9KTt2YXIgbENhLGNDYSxkQ2EsangsYTF0LEM0LHMxdCxwQ2E9Zyhhc3luYygpPT57QjIoKTtsbCgpO2F3YWl0IGExKCk7cGUoKTtkQ2E9W25lKCJvYi12aWV3LWRvbWFpbnMiKV07QzQ9Y2xhc3MgQzQgZXh0ZW5kcyhjQ2E9d2UsbENhPVtZKCldLGNDYSl7Y29uc3RydWN0b3IoKXtzdXBlcigpO2VhKHRoaXMsYTF0LGl0KGp4LDgsdGhpcyx7dGFyZ2V0czpbXSxzdGF0czpudWxsLHRyYWZmaWNTdGF0czpudWxsLGRuc1JlY29yZHM6W10sZG9tYWluczpbXSxnYXRld2F5RG9tYWluczpbXSxnYXRld2F5RG5zUmVjb3JkczpbXSxjZXJ0aWZpY2F0ZXM6W119KSksaXQoangsMTEsdGhpcyk7bGV0IHQ9WmEuc2VsZWN0KGE9PmEpLnN1YnNjcmliZShhPT57dGhpcy5uZXR3b3JrU3RhdGU9YX0pO3RoaXMucnhTdWJzY3JpcHRpb25zLnB1c2godCl9YXN5bmMgY29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLGF3YWl0IFphLmRpc3BhdGNoQWN0aW9uKHhjdCxudWxsKX1yZW5kZXIoKXtsZXQgdD10aGlzLm5ldHdvcmtTdGF0ZS5nYXRld2F5RG9tYWlucztyZXR1cm4gd2AKICAgICAgPG9iLXNlY3Rpb25oZWFkaW5nPkRvbWFpbnM8L29iLXNlY3Rpb25oZWFkaW5nPgogICAgICA8ZGl2IGNsYXNzPSJtdXRlZCIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDE2cHg7Ij4KICAgICAgICBEb21haW5zIGFyZSBtYW5hZ2VkIGluIGRjcm91dGVyLiBPbmVib3ggc2hvd3MgZ2F0ZXdheSB2aXNpYmlsaXR5IGZvciBkZXBsb3llZCBzZXJ2aWNlcy4KICAgICAgPC9kaXY+CiAgICAgICR7dC5sZW5ndGg/d2AKICAgICAgICAgICAgPGRlZXMtdGFibGUKICAgICAgICAgICAgICAuaGVhZGluZzE9JHsiR2F0ZXdheSBEb21haW5zIn0KICAgICAgICAgICAgICAuaGVhZGluZzI9JHsiRG9tYWlucyBpbXBvcnRlZCBmcm9tIGRjcm91dGVyIGdhdGV3YXkgdmlzaWJpbGl0eSJ9CiAgICAgICAgICAgICAgLmRhdGE9JHt0fQogICAgICAgICAgICAgIC5zaG93Q29sdW1uRmlsdGVycz0keyEwfQogICAgICAgICAgICAgIC5kaXNwbGF5RnVuY3Rpb249JHthPT4oe0RvbWFpbjp3YAogICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvbWFpbiI+JHthLm5hbWV9PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgJHthLnByb3ZpZGVySWQ/d2A8ZGl2IGNsYXNzPSJtdXRlZCI+UHJvdmlkZXI6ICR7YS5wcm92aWRlcklkfTwvZGl2PmA6IiJ9CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgYCxTb3VyY2U6d2A8c3BhbiBjbGFzcz0iYmFkZ2UiPiR7YS5zb3VyY2V8fCJkY3JvdXRlciJ9PC9zcGFuPmAsQXV0aG9yaXRhdGl2ZTphLmF1dGhvcml0YXRpdmU/IlllcyI6Ik5vIixTZXJ2aWNlczphLnNlcnZpY2VDb3VudHx8MH0pfQogICAgICAgICAgICAgIC5kYXRhQWN0aW9ucz0ke1t7bmFtZToiUmVmcmVzaCIsaWNvbk5hbWU6Imx1Y2lkZTpyb3RhdGVDdyIsdHlwZTpbImhlYWRlciJdLGFjdGlvbkZ1bmM6aShhc3luYygpPT57YXdhaXQgWmEuZGlzcGF0Y2hBY3Rpb24oeGN0LG51bGwpfSwiYWN0aW9uRnVuYyIpfSx7bmFtZToiTWFuYWdlIGluIGRjcm91dGVyIixpY29uTmFtZToibHVjaWRlOmV4dGVybmFsTGluayIsdHlwZTpbImluUm93IiwiY29udGV4dG1lbnUiXSxhY3Rpb25SZWxldmFuY3lDaGVja0Z1bmM6aShhPT4hIWEubWFuYWdlVXJsLCJhY3Rpb25SZWxldmFuY3lDaGVja0Z1bmMiKSxhY3Rpb25GdW5jOmkoYXN5bmMgYT0+e2EuaXRlbS5tYW5hZ2VVcmwmJmdsb2JhbFRoaXMub3BlbihhLml0ZW0ubWFuYWdlVXJsLCJfYmxhbmsiLCJub29wZW5lciIpfSwiYWN0aW9uRnVuYyIpfV19CiAgICAgICAgICAgID48L2RlZXMtdGFibGU+CiAgICAgICAgICBgOndgPGRpdiBjbGFzcz0iZW1wdHkiPk5vIGdhdGV3YXkgZG9tYWlucyBmb3VuZC4gQ29uZmlndXJlIGEgZGNyb3V0ZXIgZ2F0ZXdheSBpbiBTZXR0aW5ncy48L2Rpdj5gfQogICAgYH19O2p4PVJpKGNDYSksYTF0PW5ldyBXZWFrTWFwLFJ0KGp4LDQsIm5ldHdvcmtTdGF0ZSIsbENhLEM0LGExdCksQzQ9UnQoangsMCwiT2JWaWV3RG9tYWlucyIsZENhLEM0KSxpKEM0LCJPYlZpZXdEb21haW5zIiksdmkoQzQsInN0eWxlcyIsW2guZGVmYXVsdFN0eWxlcyx5byxKYAogICAgICAuZG9tYWluIHsgZm9udC13ZWlnaHQ6IDYwMDsgfQogICAgICAubXV0ZWQgeyBjb2xvcjogdmFyKC0tY2ktc2hhZGUtNSwgIzcxNzE3YSk7IGZvbnQtc2l6ZTogMTNweDsgfQogICAgICAuYmFkZ2UgeyBib3JkZXItcmFkaXVzOiA5OTlweDsgcGFkZGluZzogM3B4IDhweDsgYmFja2dyb3VuZDogdmFyKC0tY2ktc2hhZGUtMSwgI2Y0ZjRmNSk7IGZvbnQtc2l6ZTogMTJweDsgfQogICAgICAuZW1wdHkgeyBwYWRkaW5nOiAzMnB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGNvbG9yOiB2YXIoLS1jaS1zaGFkZS01LCAjNzE3MTdhKTsgfQogICAgYF0pLGl0KGp4LDEsQzQpO3MxdD1DNH0pO3ZhciBnQ2E9e307eXQoZ0NhLHtPYlZpZXdEbnNSZWNvcmRzOigpPT5yMXR9KTt2YXIgaENhLGZDYSxtQ2EsVngsaTF0LFQ0LHIxdCxiQ2E9Zyhhc3luYygpPT57QjIoKTtsbCgpO2F3YWl0IGExKCk7YXdhaXQgZzcoKTtwZSgpO21DYT1bbmUoIm9iLXZpZXctZG5zLXJlY29yZHMiKV07VDQ9Y2xhc3MgVDQgZXh0ZW5kcyhmQ2E9d2UsaENhPVtZKCldLGZDYSl7Y29uc3RydWN0b3IoKXtzdXBlcigpO2VhKHRoaXMsaTF0LGl0KFZ4LDgsdGhpcyx7dGFyZ2V0czpbXSxzdGF0czpudWxsLHRyYWZmaWNTdGF0czpudWxsLGRuc1JlY29yZHM6W10sZG9tYWluczpbXSxnYXRld2F5RG9tYWluczpbXSxnYXRld2F5RG5zUmVjb3JkczpbXSxjZXJ0aWZpY2F0ZXM6W119KSksaXQoVngsMTEsdGhpcyk7bGV0IHQ9WmEuc2VsZWN0KGE9PmEpLnN1YnNjcmliZShhPT57dGhpcy5uZXR3b3JrU3RhdGU9YX0pO3RoaXMucnhTdWJzY3JpcHRpb25zLnB1c2godCl9YXN5bmMgY29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLGF3YWl0IFphLmRpc3BhdGNoQWN0aW9uKHljdCxudWxsKX1yZW5kZXIoKXtsZXQgdD10aGlzLm5ldHdvcmtTdGF0ZS5nYXRld2F5RG5zUmVjb3JkcztyZXR1cm4gd2AKICAgICAgPG9iLXNlY3Rpb25oZWFkaW5nPkROUyBSZWNvcmRzPC9vYi1zZWN0aW9uaGVhZGluZz4KICAgICAgJHt0Lmxlbmd0aD93YAogICAgICAgICAgICA8ZGVlcy10YWJsZQogICAgICAgICAgICAgIC5oZWFkaW5nMT0keyJHYXRld2F5IEROUyBSZWNvcmRzIn0KICAgICAgICAgICAgICAuaGVhZGluZzI9JHsiRE5TIHJlY29yZHMgcHVibGlzaGVkIHRocm91Z2ggZGNyb3V0ZXIgZm9yIE9uZWJveCBzZXJ2aWNlcyJ9CiAgICAgICAgICAgICAgLmRhdGE9JHt0fQogICAgICAgICAgICAgIC5zaG93Q29sdW1uRmlsdGVycz0keyEwfQogICAgICAgICAgICAgIC5kaXNwbGF5RnVuY3Rpb249JHthPT4oe05hbWU6d2AKICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lIj4ke2EubmFtZX08L2Rpdj4KICAgICAgICAgICAgICAgICAgICAke2EuZG9tYWluTmFtZT93YDxkaXYgY2xhc3M9Im11dGVkIj4ke2EuZG9tYWluTmFtZX08L2Rpdj5gOiIifQogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIGAsVHlwZTp3YDxzcGFuIGNsYXNzPSJiYWRnZSI+JHthLnR5cGV9PC9zcGFuPmAsVmFsdWU6d2A8c3BhbiBjbGFzcz0idmFsdWUiPiR7YS52YWx1ZXx8Ii0ifTwvc3Bhbj5gLFN0YXR1czp3YDxzcGFuIGNsYXNzPSR7YS5zdGF0dXM9PT0ibWlzc2luZyI/Im1pc3NpbmciOiIifT4ke2Euc3RhdHVzfTwvc3Bhbj5gLFNlcnZpY2U6YS5zZXJ2aWNlTmFtZXx8YS5hcHBJZHx8Ii0ifSl9CiAgICAgICAgICAgICAgLmRhdGFBY3Rpb25zPSR7W3tuYW1lOiJSZWZyZXNoIixpY29uTmFtZToibHVjaWRlOnJvdGF0ZUN3Iix0eXBlOlsiaGVhZGVyIl0sYWN0aW9uRnVuYzppKGFzeW5jKCk9Pnthd2FpdCBaYS5kaXNwYXRjaEFjdGlvbih5Y3QsbnVsbCl9LCJhY3Rpb25GdW5jIil9LHtuYW1lOiJWaWV3IHNlcnZpY2UiLGljb25OYW1lOiJsdWNpZGU6Ym94ZXMiLHR5cGU6WyJpblJvdyIsImNvbnRleHRtZW51Il0sYWN0aW9uRnVuYzppKGFzeW5jKCk9PntkbC5uYXZpZ2F0ZVRvVmlldygic2VydmljZXMiKX0sImFjdGlvbkZ1bmMiKX0se25hbWU6Ik1hbmFnZSBpbiBkY3JvdXRlciIsaWNvbk5hbWU6Imx1Y2lkZTpleHRlcm5hbExpbmsiLHR5cGU6WyJpblJvdyIsImNvbnRleHRtZW51Il0sYWN0aW9uUmVsZXZhbmN5Q2hlY2tGdW5jOmkoYT0+ISFhLm1hbmFnZVVybCwiYWN0aW9uUmVsZXZhbmN5Q2hlY2tGdW5jIiksYWN0aW9uRnVuYzppKGFzeW5jIGE9PnthLml0ZW0ubWFuYWdlVXJsJiZnbG9iYWxUaGlzLm9wZW4oYS5pdGVtLm1hbmFnZVVybCwiX2JsYW5rIiwibm9vcGVuZXIiKX0sImFjdGlvbkZ1bmMiKX1dfQogICAgICAgICAgICA+PC9kZWVzLXRhYmxlPgogICAgICAgICAgYDp3YDxkaXYgY2xhc3M9ImVtcHR5Ij5ObyBnYXRld2F5IEROUyByZWNvcmRzIGZvdW5kLiBDb25maWd1cmUgYSBkY3JvdXRlciBnYXRld2F5IGluIFNldHRpbmdzLjwvZGl2PmB9CiAgICBgfX07Vng9UmkoZkNhKSxpMXQ9bmV3IFdlYWtNYXAsUnQoVngsNCwibmV0d29ya1N0YXRlIixoQ2EsVDQsaTF0KSxUND1SdChWeCwwLCJPYlZpZXdEbnNSZWNvcmRzIixtQ2EsVDQpLGkoVDQsIk9iVmlld0Ruc1JlY29yZHMiKSx2aShUNCwic3R5bGVzIixbaC5kZWZhdWx0U3R5bGVzLHlvLEpgCiAgICAgIC5uYW1lIHsgZm9udC13ZWlnaHQ6IDYwMDsgfQogICAgICAudmFsdWUgeyBmb250LWZhbWlseTogbW9ub3NwYWNlOyBjb2xvcjogdmFyKC0tY2ktc2hhZGUtNSwgIzcxNzE3YSk7IG92ZXJmbG93LXdyYXA6IGFueXdoZXJlOyB9CiAgICAgIC5tdXRlZCB7IGNvbG9yOiB2YXIoLS1jaS1zaGFkZS01LCAjNzE3MTdhKTsgZm9udC1zaXplOiAxM3B4OyB9CiAgICAgIC5iYWRnZSB7IGJvcmRlci1yYWRpdXM6IDk5OXB4OyBwYWRkaW5nOiAzcHggOHB4OyBiYWNrZ3JvdW5kOiB2YXIoLS1jaS1zaGFkZS0xLCAjZjRmNGY1KTsgZm9udC1zaXplOiAxMnB4OyB9CiAgICAgIC5taXNzaW5nIHsgY29sb3I6ICNkYzI2MjY7IH0KICAgICAgLmVtcHR5IHsgcGFkZGluZzogMzJweDsgdGV4dC1hbGlnbjogY2VudGVyOyBjb2xvcjogdmFyKC0tY2ktc2hhZGUtNSwgIzcxNzE3YSk7IH0KICAgIGBdKSxpdChWeCwxLFQ0KTtyMXQ9VDR9KTt2YXIga0NhPXt9O3l0KGtDYSx7T2JWaWV3UmVnaXN0cmllczooKT0+bDF0fSk7dmFyIHZDYSx4Q2EseUNhLHdDYSx0cCxvMXQsbjF0LGFwLGwxdCxjMXQ9Zyhhc3luYygpPT57bGwoKTtCMigpO2F3YWl0IGExKCk7YXdhaXQgZzcoKTtwZSgpO3dDYT1bbmUoIm9iLXZpZXctcmVnaXN0cmllcyIpXTthcD1jbGFzcyBhcCBleHRlbmRzKHlDYT13ZSx4Q2E9W1koKV0sdkNhPVtZKCldLHlDYSl7Y29uc3RydWN0b3IoKXtzdXBlcigpO2VhKHRoaXMsbzF0LGl0KHRwLDgsdGhpcyx7dG9rZW5zOltdLHJlZ2lzdHJ5U3RhdHVzOm51bGx9KSksaXQodHAsMTEsdGhpcyk7ZWEodGhpcyxuMXQsaXQodHAsMTIsdGhpcywib25lYm94IikpLGl0KHRwLDE1LHRoaXMpO2xldCB0PXEyLnNlbGVjdChhPT5hKS5zdWJzY3JpYmUoYT0+e3RoaXMucmVnaXN0cmllc1N0YXRlPWF9KTt0aGlzLnJ4U3Vic2NyaXB0aW9ucy5wdXNoKHQpfWFzeW5jIGNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSxhd2FpdCBxMi5kaXNwYXRjaEFjdGlvbihEMmUsbnVsbCl9cmVuZGVyKCl7cmV0dXJuIHRoaXMuY3VycmVudFRhYj09PSJleHRlcm5hbCI/dGhpcy5yZW5kZXJFeHRlcm5hbFZpZXcoKTp0aGlzLnJlbmRlck9uZWJveFZpZXcoKX1yZW5kZXJPbmVib3hWaWV3KCl7cmV0dXJuIHdgCiAgICAgIDxvYi1zZWN0aW9uaGVhZGluZz5SZWdpc3RyaWVzPC9vYi1zZWN0aW9uaGVhZGluZz4KICAgICAgPHN6LXJlZ2lzdHJ5LWFkdmVydGlzZW1lbnQKICAgICAgICAuc3RhdHVzPSR7InJ1bm5pbmcifQogICAgICAgIC5yZWdpc3RyeVVybD0keyJsb2NhbGhvc3Q6NTAwMCJ9CiAgICAgICAgQG1hbmFnZS10b2tlbnM9JHsoKT0+e2RsLm5hdmlnYXRlVG9WaWV3KCJ0b2tlbnMiKX19CiAgICAgID48L3N6LXJlZ2lzdHJ5LWFkdmVydGlzZW1lbnQ+CiAgICBgfXJlbmRlckV4dGVybmFsVmlldygpe3JldHVybiB3YAogICAgICA8b2Itc2VjdGlvbmhlYWRpbmc+RXh0ZXJuYWwgUmVnaXN0cmllczwvb2Itc2VjdGlvbmhlYWRpbmc+CiAgICAgIDxzei1yZWdpc3RyeS1leHRlcm5hbC12aWV3CiAgICAgICAgLnJlZ2lzdHJpZXM9JHtbXX0KICAgICAgICBAYWRkPSR7dD0+e2NvbnNvbGUubG9nKCJBZGQgZXh0ZXJuYWwgcmVnaXN0cnk6Iix0LmRldGFpbCl9fQogICAgICA+PC9zei1yZWdpc3RyeS1leHRlcm5hbC12aWV3PgogICAgYH19O3RwPVJpKHlDYSksbzF0PW5ldyBXZWFrTWFwLG4xdD1uZXcgV2Vha01hcCxSdCh0cCw0LCJyZWdpc3RyaWVzU3RhdGUiLHhDYSxhcCxvMXQpLFJ0KHRwLDQsImN1cnJlbnRUYWIiLHZDYSxhcCxuMXQpLGFwPVJ0KHRwLDAsIk9iVmlld1JlZ2lzdHJpZXMiLHdDYSxhcCksaShhcCwiT2JWaWV3UmVnaXN0cmllcyIpLHZpKGFwLCJzdHlsZXMiLFtoLmRlZmF1bHRTdHlsZXMseW8sSmBgXSksaXQodHAsMSxhcCk7bDF0PWFwfSk7dmFyIHpDYT17fTt5dCh6Q2Ese09iVmlld1Rva2VuczooKT0+dTF0fSk7dmFyIFNDYSxfQ2EsTUNhLFV4LGQxdCwkNCx1MXQscDF0PWcoYXN5bmMoKT0+e2xsKCk7QjIoKTthd2FpdCBhMSgpO3BlKCk7TUNhPVtuZSgib2Itdmlldy10b2tlbnMiKV07JDQ9Y2xhc3MgJDQgZXh0ZW5kcyhfQ2E9d2UsU0NhPVtZKCldLF9DYSl7Y29uc3RydWN0b3IoKXtzdXBlcigpO2VhKHRoaXMsZDF0LGl0KFV4LDgsdGhpcyx7dG9rZW5zOltdLHJlZ2lzdHJ5U3RhdHVzOm51bGx9KSksaXQoVXgsMTEsdGhpcyk7bGV0IHQ9cTIuc2VsZWN0KGE9PmEpLnN1YnNjcmliZShhPT57dGhpcy5yZWdpc3RyaWVzU3RhdGU9YX0pO3RoaXMucnhTdWJzY3JpcHRpb25zLnB1c2godCl9YXN5bmMgY29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLGF3YWl0IHEyLmRpc3BhdGNoQWN0aW9uKEQyZSxudWxsKX1yZW5kZXIoKXtsZXQgdD10aGlzLnJlZ2lzdHJpZXNTdGF0ZS50b2tlbnMuZmlsdGVyKHI9PnIudHlwZT09PSJnbG9iYWwiKSxhPXRoaXMucmVnaXN0cmllc1N0YXRlLnRva2Vucy5maWx0ZXIocj0+ci50eXBlPT09ImNpIik7cmV0dXJuIHdgCiAgICAgIDxvYi1zZWN0aW9uaGVhZGluZz5Ub2tlbnM8L29iLXNlY3Rpb25oZWFkaW5nPgogICAgICA8c3otdG9rZW5zLXZpZXcKICAgICAgICAuZ2xvYmFsVG9rZW5zPSR7dC5tYXAocj0+KHtpZDpyLmlkLG5hbWU6ci5uYW1lLHR5cGU6Imdsb2JhbCIsY3JlYXRlZEF0OnIuY3JlYXRlZEF0LGxhc3RVc2VkOnIubGFzdFVzZWR9KSl9CiAgICAgICAgLmNpVG9rZW5zPSR7YS5tYXAocj0+KHtpZDpyLmlkLG5hbWU6ci5uYW1lLHR5cGU6ImNpIixzZXJ2aWNlOnIuc2VydmljZSxjcmVhdGVkQXQ6ci5jcmVhdGVkQXQsbGFzdFVzZWQ6ci5sYXN0VXNlZH0pKX0KICAgICAgICBAY3JlYXRlPSR7cj0+e3EyLmRpc3BhdGNoQWN0aW9uKHJ6YSx7dG9rZW46e25hbWU6YG5ldy0ke3IuZGV0YWlsLnR5cGV9LXRva2VuYCx0eXBlOnIuZGV0YWlsLnR5cGUscGVybWlzc2lvbnM6WyJwdWxsIl19fSl9fQogICAgICAgIEBkZWxldGU9JHtyPT57cTIuZGlzcGF0Y2hBY3Rpb24ob3phLHt0b2tlbklkOnIuZGV0YWlsLmlkfHxyLmRldGFpbC50b2tlbklkfSl9fQogICAgICA+PC9zei10b2tlbnMtdmlldz4KICAgIGB9fTtVeD1SaShfQ2EpLGQxdD1uZXcgV2Vha01hcCxSdChVeCw0LCJyZWdpc3RyaWVzU3RhdGUiLFNDYSwkNCxkMXQpLCQ0PVJ0KFV4LDAsIk9iVmlld1Rva2VucyIsTUNhLCQ0KSxpKCQ0LCJPYlZpZXdUb2tlbnMiKSx2aSgkNCwic3R5bGVzIixbaC5kZWZhdWx0U3R5bGVzLHlvLEpgYF0pLGl0KFV4LDEsJDQpO3UxdD0kNH0pO3ZhciBMQ2E9e307eXQoTENhLHtPYlZpZXdTZXR0aW5nczooKT0+bTF0fSk7dmFyIENDYSxUQ2EsJENhLERDYSxzcCxoMXQsZjF0LGlwLG0xdCxnMXQ9Zyhhc3luYygpPT57bGwoKTtCMigpO2F3YWl0IGExKCk7cGUoKTtEQ2E9W25lKCJvYi12aWV3LXNldHRpbmdzIildO2lwPWNsYXNzIGlwIGV4dGVuZHMoJENhPXdlLFRDYT1bWSgpXSxDQ2E9W1koKV0sJENhKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCk7ZWEodGhpcyxoMXQsaXQoc3AsOCx0aGlzLHtzZXR0aW5nczpudWxsLGJhY2t1cFBhc3N3b3JkQ29uZmlndXJlZDohMSxtYW5hZ2VkRGNSb3V0ZXJTdGF0dXM6bnVsbH0pKSxpdChzcCwxMSx0aGlzKTtlYSh0aGlzLGYxdCxpdChzcCwxMix0aGlzLHtpZGVudGl0eTpudWxsLGlzTG9nZ2VkSW46ITF9KSksaXQoc3AsMTUsdGhpcyk7bGV0IHQ9c28uc2VsZWN0KHI9PnIpLnN1YnNjcmliZShyPT57dGhpcy5zZXR0aW5nc1N0YXRlPXJ9KTt0aGlzLnJ4U3Vic2NyaXB0aW9ucy5wdXNoKHQpO2xldCBhPVFpLnNlbGVjdChyPT5yKS5zdWJzY3JpYmUocj0+e3RoaXMubG9naW5TdGF0ZT1yfSk7dGhpcy5yeFN1YnNjcmlwdGlvbnMucHVzaChhKX1hc3luYyBjb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksYXdhaXQgc28uZGlzcGF0Y2hBY3Rpb24od2N0LG51bGwpfXJlbmRlcigpe3JldHVybiB3YAogICAgICA8b2Itc2VjdGlvbmhlYWRpbmc+U2V0dGluZ3M8L29iLXNlY3Rpb25oZWFkaW5nPgogICAgICAke3RoaXMucmVuZGVyQWRtaW5VaVNldHRpbmdzKCl9CiAgICAgICR7dGhpcy5yZW5kZXJFeHRlcm5hbEdhdGV3YXlTZXR0aW5ncygpfQogICAgICA8c3otc2V0dGluZ3MtdmlldwogICAgICAgIC5zZXR0aW5ncz0ke3RoaXMuc2V0dGluZ3NTdGF0ZS5zZXR0aW5nc3x8e2RhcmtNb2RlOiEwLGNsb3VkZmxhcmVUb2tlbjoiIixjbG91ZGZsYXJlWm9uZUlkOiIiLGFkbWluVWlEb21haW46IiIsZGNyb3V0ZXJNb2RlOiJtYW5hZ2VkIixkY3JvdXRlck1hbmFnZWRJbWFnZToiY29kZS5mb3NzLmdsb2JhbC9zZXJ2ZS56b25lL2Rjcm91dGVyOmxhdGVzdCIsZGNyb3V0ZXJNYW5hZ2VkT3BzUG9ydDozMzAwLGRjcm91dGVyTWFuYWdlZEh0dHBQb3J0OjgwLGRjcm91dGVyTWFuYWdlZEh0dHBzUG9ydDo0NDMsZGNyb3V0ZXJNYW5hZ2VkRGF0YURpcjoiLi8ubm9naXQvZGNyb3V0ZXItZGF0YSIsZGNyb3V0ZXJHYXRld2F5Q2xpZW50SWQ6IiIsZGNyb3V0ZXJXb3JrSG9zdGVySWQ6IiIsYXV0b1JlbmV3Q2VydHM6ITEscmVuZXdhbFRocmVzaG9sZDozMCxhY21lRW1haWw6IiIsaHR0cFBvcnQ6ODAsaHR0cHNQb3J0OjQ0Myxmb3JjZUh0dHBzOiExfX0KICAgICAgICAuY3VycmVudFVzZXI9JHt0aGlzLmxvZ2luU3RhdGUuaWRlbnRpdHk/LnVzZXJuYW1lfHwiYWRtaW4ifQogICAgICAgIEBzZXR0aW5nLWNoYW5nZT0ke3Q9PntsZXR7a2V5OmEsdmFsdWU6cn09dC5kZXRhaWw7c28uZGlzcGF0Y2hBY3Rpb24oa0ose3NldHRpbmdzOntbYV06cn19KX19CiAgICAgICAgQHNhdmU9JHt0PT57c28uZGlzcGF0Y2hBY3Rpb24oa0ose3NldHRpbmdzOnQuZGV0YWlsfSl9fQogICAgICAgIEBjaGFuZ2UtcGFzc3dvcmQ9JHt0PT57Y29uc29sZS5sb2coIkNoYW5nZSBwYXNzd29yZCByZXF1ZXN0ZWQ6Iix0LmRldGFpbCl9fQogICAgICAgIEByZXNldD0keygpPT57c28uZGlzcGF0Y2hBY3Rpb24od2N0LG51bGwpfX0KICAgICAgPjwvc3otc2V0dGluZ3Mtdmlldz4KICAgIGB9cmVuZGVyQWRtaW5VaVNldHRpbmdzKCl7bGV0IHQ9dGhpcy5zZXR0aW5nc1N0YXRlLnNldHRpbmdzO3JldHVybiB3YAogICAgICA8ZGVlcy10aWxlPgogICAgICAgIDxkaXYgc2xvdD0iaGVhZGVyIiBjbGFzcz0iZ2F0ZXdheS1oZWFkZXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZ2F0ZXdheS1oZWFkaW5nIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdhdGV3YXktdGl0bGUiPk9uZWJveCBBZG1pbiBVSTwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdhdGV3YXktc3VidGl0bGUiPkNvbmZpZ3VyZSB0aGUgcHVibGljIGhvc3RuYW1lIGZvciB0aGlzIE9uZWJveCBkYXNoYm9hcmQ8L3NwYW4+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJnYXRld2F5LWNvbnRlbnQiPgogICAgICAgICAgJHt0aGlzLnJlbmRlckdhdGV3YXlJbnB1dCgiYWRtaW5VaURvbWFpbiIsIkFkbWluIFVJIERvbWFpbiIsdD8uYWRtaW5VaURvbWFpbnx8IiIsIkV4YW1wbGU6IG9uZWJveC5leGFtcGxlLmNvbS4gTGVhdmUgZW1wdHkgdG8gZGlzYWJsZSB0aGUgcHVibGljIEFkbWluIFVJIHJvdXRlLiIpfQogICAgICAgICAgJHt0aGlzLnJlbmRlckdhdGV3YXlSZWFkb25seSgiTG9jYWwgVGFyZ2V0IiwiT25lYm94IE9wc1NlcnZlciBvbiBwb3J0IDMwMDAiLCJUaGUgZXh0ZXJuYWwgZ2F0ZXdheSBmb3J3YXJkcyB0byBTbWFydFByb3h5LCB3aGljaCBmb3J3YXJkcyB0aGlzIGhvc3RuYW1lIHRvIHRoZSBPbmVib3ggQWRtaW4gVUkuIil9CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBzbG90PSJmb290ZXIiIGNsYXNzPSJnYXRld2F5LWZvb3RlciI+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJ0aWxlLWJ1dHRvbiBwcmltYXJ5IiB0eXBlPSJidXR0b24iIEBjbGljaz0keygpPT50aGlzLnNhdmVBZG1pblVpU2V0dGluZ3MoKX0+CiAgICAgICAgICAgIFNhdmUgQWRtaW4gVUkgRG9tYWluCiAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kZWVzLXRpbGU+CiAgICBgfXJlbmRlckV4dGVybmFsR2F0ZXdheVNldHRpbmdzKCl7bGV0IHQ9dGhpcy5zZXR0aW5nc1N0YXRlLnNldHRpbmdzLGE9dD8uZGNyb3V0ZXJNb2RlfHwibWFuYWdlZCI7cmV0dXJuIHdgCiAgICAgIDxkZWVzLXRpbGU+CiAgICAgICAgPGRpdiBzbG90PSJoZWFkZXIiIGNsYXNzPSJnYXRld2F5LWhlYWRlciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJnYXRld2F5LWhlYWRpbmciPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2F0ZXdheS10aXRsZSI+ZGNyb3V0ZXIgR2F0ZXdheTwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdhdGV3YXktc3VidGl0bGUiPlJ1biBhIGxvY2FsIG1hbmFnZWQgZGNyb3V0ZXIgb3IgZGVsZWdhdGUgcm91dGluZyB0byBhbiBleHRlcm5hbCBkY3JvdXRlcjwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImdhdGV3YXktbW9kZS1yb3ciPgogICAgICAgICAgJHt0aGlzLnJlbmRlck1vZGVCdXR0b24oIm1hbmFnZWQiLCJNYW5hZ2VkIExvY2FsIixhKX0KICAgICAgICAgICR7dGhpcy5yZW5kZXJNb2RlQnV0dG9uKCJleHRlcm5hbCIsIkV4dGVybmFsIGRjcm91dGVyIixhKX0KICAgICAgICAgICR7dGhpcy5yZW5kZXJNb2RlQnV0dG9uKCJkaXNhYmxlZCIsIkRpc2FibGVkIixhKX0KICAgICAgICA8L2Rpdj4KICAgICAgICAke2E9PT0ibWFuYWdlZCI/dGhpcy5yZW5kZXJNYW5hZ2VkR2F0ZXdheVN0YXR1cygpOm51bGx9CiAgICAgICAgPGRpdiBjbGFzcz0iZ2F0ZXdheS1jb250ZW50Ij4KICAgICAgICAgICR7YT09PSJtYW5hZ2VkIj93YAogICAgICAgICAgICAke3RoaXMucmVuZGVyR2F0ZXdheUlucHV0KCJkY3JvdXRlck1hbmFnZWRJbWFnZSIsImRjcm91dGVyIEltYWdlIix0Py5kY3JvdXRlck1hbmFnZWRJbWFnZXx8ImNvZGUuZm9zcy5nbG9iYWwvc2VydmUuem9uZS9kY3JvdXRlcjpsYXRlc3QiLCJPQ0kgaW1hZ2UgdXNlZCBmb3IgdGhlIG1hbmFnZWQgbG9jYWwgZ2F0ZXdheS4iKX0KICAgICAgICAgICAgJHt0aGlzLnJlbmRlckdhdGV3YXlJbnB1dCgiZGNyb3V0ZXJNYW5hZ2VkRGF0YURpciIsIkRhdGEgRGlyZWN0b3J5Iix0Py5kY3JvdXRlck1hbmFnZWREYXRhRGlyfHwiLi8ubm9naXQvZGNyb3V0ZXItZGF0YSIsIkhvc3QgZGlyZWN0b3J5IG1vdW50ZWQgaW50byB0aGUgZGNyb3V0ZXIgY29udGFpbmVyLiIpfQogICAgICAgICAgICAke3RoaXMucmVuZGVyR2F0ZXdheUlucHV0KCJkY3JvdXRlck1hbmFnZWRPcHNQb3J0IiwiTG9jYWwgT3BzIFBvcnQiLFN0cmluZyh0Py5kY3JvdXRlck1hbmFnZWRPcHNQb3J0fHwzMzAwKSwiQm91bmQgdG8gMTI3LjAuMC4xIGZvciBPbmVib3ggdG8gY2FsbCBkY3JvdXRlciBBUElzLiIpfQogICAgICAgICAgICAke3RoaXMucmVuZGVyR2F0ZXdheUlucHV0KCJkY3JvdXRlck1hbmFnZWRIdHRwUG9ydCIsIlB1YmxpYyBIVFRQIFBvcnQiLFN0cmluZyh0Py5kY3JvdXRlck1hbmFnZWRIdHRwUG9ydHx8ODApLCJIb3N0IHBvcnQgb3duZWQgYnkgZGNyb3V0ZXIgZm9yIEhUVFAgaW5ncmVzcy4iKX0KICAgICAgICAgICAgJHt0aGlzLnJlbmRlckdhdGV3YXlJbnB1dCgiZGNyb3V0ZXJNYW5hZ2VkSHR0cHNQb3J0IiwiUHVibGljIEhUVFBTIFBvcnQiLFN0cmluZyh0Py5kY3JvdXRlck1hbmFnZWRIdHRwc1BvcnR8fDQ0MyksIkhvc3QgcG9ydCBvd25lZCBieSBkY3JvdXRlciBmb3IgSFRUUFMgaW5ncmVzcy4iKX0KICAgICAgICAgICAgJHt0aGlzLnJlbmRlckdhdGV3YXlSZWFkb25seSgiR2F0ZXdheSBDbGllbnQgSUQiLHQ/LmRjcm91dGVyR2F0ZXdheUNsaWVudElkfHx0Py5kY3JvdXRlcldvcmtIb3N0ZXJJZHx8IkNyZWF0ZWQgd2hlbiBtYW5hZ2VkIGRjcm91dGVyIHN0YXJ0cyIsIkRpYWdub3N0aWMgb25seS4gT25lYm94IG1hbmFnZXMgdGhpcyBsb2NhbCBjbGllbnQgYXV0b21hdGljYWxseS4iKX0KICAgICAgICAgIGA6YT09PSJleHRlcm5hbCI/d2AKICAgICAgICAgICAgJHt0aGlzLnJlbmRlckdhdGV3YXlJbnB1dCgiZGNyb3V0ZXJHYXRld2F5VXJsIiwiR2F0ZXdheSBVUkwiLHQ/LmRjcm91dGVyR2F0ZXdheVVybHx8IiIsIkJhc2UgVVJMIG9mIHRoZSBkY3JvdXRlciBPcHNTZXJ2ZXIuIil9CiAgICAgICAgICAgICR7dGhpcy5yZW5kZXJHYXRld2F5SW5wdXQoImRjcm91dGVyR2F0ZXdheUFwaVRva2VuIiwiQVBJIFRva2VuIix0Py5kY3JvdXRlckdhdGV3YXlBcGlUb2tlbnx8IiIsIlJlcXVpcmVzIGdhdGV3YXktY2xpZW50IGFjY2VzcyBpbiBkY3JvdXRlci4iLCEwKX0KICAgICAgICAgICAgJHt0aGlzLnJlbmRlckdhdGV3YXlSZWFkb25seSgiR2F0ZXdheSBDbGllbnQgSUQiLHQ/LmRjcm91dGVyR2F0ZXdheUNsaWVudElkfHx0Py5kY3JvdXRlcldvcmtIb3N0ZXJJZHx8IkRlcml2ZWQgZnJvbSB0b2tlbiIsIkNvbmZpZ3VyZSB0aGlzIGluIGRjcm91dGVyIEdhdGV3YXkgQ2xpZW50cywgbm90IGluIE9uZWJveC4iKX0KICAgICAgICAgICAgJHt0aGlzLnJlbmRlckdhdGV3YXlJbnB1dCgiZGNyb3V0ZXJUYXJnZXRIb3N0IiwiVGFyZ2V0IEhvc3QiLHQ/LmRjcm91dGVyVGFyZ2V0SG9zdHx8IiIsIkRlZmF1bHRzIHRvIHRoZSBjb25maWd1cmVkIHNlcnZlciBJUCB3aGVuIGVtcHR5LiIpfQogICAgICAgICAgICAke3RoaXMucmVuZGVyR2F0ZXdheUlucHV0KCJkY3JvdXRlclRhcmdldFBvcnQiLCJUYXJnZXQgUG9ydCIsU3RyaW5nKHQ/LmRjcm91dGVyVGFyZ2V0UG9ydHx8ODApLCJJbnRlcm5hbCBIVFRQIHBvcnQgZGNyb3V0ZXIgZm9yd2FyZHMgdG8uIil9CiAgICAgICAgICBgOndgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImdhdGV3YXktZGlzYWJsZWQiPmRjcm91dGVyIHJvdXRlIGRlbGVnYXRpb24gaXMgZGlzYWJsZWQuIE9uZWJveCB3aWxsIGtlZXAgdXNpbmcgaXRzIGxvY2FsIFNtYXJ0UHJveHkgZGlyZWN0bHkuPC9kaXY+CiAgICAgICAgICBgfQogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgc2xvdD0iZm9vdGVyIiBjbGFzcz0iZ2F0ZXdheS1mb290ZXIiPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idGlsZS1idXR0b24gcHJpbWFyeSIgdHlwZT0iYnV0dG9uIiBAY2xpY2s9JHsoKT0+dGhpcy5zYXZlRXh0ZXJuYWxHYXRld2F5U2V0dGluZ3MoKX0+CiAgICAgICAgICAgIFNhdmUgZGNyb3V0ZXIgU2V0dGluZ3MKICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICA8L2RlZXMtdGlsZT4KICAgIGB9cmVuZGVyTW9kZUJ1dHRvbih0LGEscil7cmV0dXJuIHdgCiAgICAgIDxidXR0b24KICAgICAgICBjbGFzcz0iZ2F0ZXdheS1tb2RlLWJ1dHRvbiAke3I9PT10PyJhY3RpdmUiOiIifSIKICAgICAgICBAY2xpY2s9JHsoKT0+dGhpcy51cGRhdGVHYXRld2F5RHJhZnQoImRjcm91dGVyTW9kZSIsdCl9CiAgICAgID4ke2F9PC9idXR0b24+CiAgICBgfXJlbmRlck1hbmFnZWRHYXRld2F5U3RhdHVzKCl7bGV0IHQ9dGhpcy5zZXR0aW5nc1N0YXRlLm1hbmFnZWREY1JvdXRlclN0YXR1cyxhPXQ/LnJ1bm5pbmc/dC5oZWFsdGh5PyJSdW5uaW5nIjoiU3RhcnRpbmciOiJTdG9wcGVkIjtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iZ2F0ZXdheS1zdGF0dXMtcm93Ij4KICAgICAgICA8ZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZ2F0ZXdheS1zdGF0dXMtbGFiZWwiPk1hbmFnZWQgZGNyb3V0ZXI8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImdhdGV3YXktc3RhdHVzLXZhbHVlIj4ke2F9JHt0Py5nYXRld2F5VXJsP2AgYXQgJHt0LmdhdGV3YXlVcmx9YDoiIn08L2Rpdj4KICAgICAgICAgICR7dD8ubWVzc2FnZT93YDxkaXYgY2xhc3M9ImdhdGV3YXktc3RhdHVzLWVycm9yIj4ke3QubWVzc2FnZX08L2Rpdj5gOm51bGx9CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZ2F0ZXdheS1hY3Rpb25zIj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiAudGV4dD0keyJTdGFydCJ9IC50eXBlPSR7ImRlZmF1bHQifSBAY2xpY2s9JHsoKT0+c28uZGlzcGF0Y2hBY3Rpb24odXphLG51bGwpfT48L2RlZXMtYnV0dG9uPgogICAgICAgICAgPGRlZXMtYnV0dG9uIC50ZXh0PSR7IlJlc3RhcnQifSAudHlwZT0keyJkZWZhdWx0In0gQGNsaWNrPSR7KCk9PnNvLmRpc3BhdGNoQWN0aW9uKGh6YSxudWxsKX0+PC9kZWVzLWJ1dHRvbj4KICAgICAgICAgIDxkZWVzLWJ1dHRvbiAudGV4dD0keyJTdG9wIn0gLnR5cGU9JHsiZGVmYXVsdCJ9IEBjbGljaz0keygpPT5zby5kaXNwYXRjaEFjdGlvbihwemEsbnVsbCl9PjwvZGVlcy1idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJHYXRld2F5SW5wdXQodCxhLHIsbixvPSExKXtyZXR1cm4gd2AKICAgICAgPGRpdiBjbGFzcz0iZ2F0ZXdheS1maWVsZCAke3Q9PT0iZGNyb3V0ZXJHYXRld2F5VXJsInx8dD09PSJhZG1pblVpRG9tYWluIj8iZnVsbCI6IiJ9Ij4KICAgICAgICA8ZGVlcy1pbnB1dC10ZXh0CiAgICAgICAgICAua2V5PSR7dH0KICAgICAgICAgIC5sYWJlbD0ke2F9CiAgICAgICAgICAudmFsdWU9JHtyfQogICAgICAgICAgLmRlc2NyaXB0aW9uPSR7bn0KICAgICAgICAgIC5pc1Bhc3N3b3JkQm9vbD0ke299CiAgICAgICAgICBAaW5wdXQ9JHtsPT50aGlzLnVwZGF0ZUdhdGV3YXlEcmFmdCh0LGwudGFyZ2V0LnZhbHVlKX0KICAgICAgICA+PC9kZWVzLWlucHV0LXRleHQ+CiAgICAgIDwvZGl2PgogICAgYH1yZW5kZXJHYXRld2F5UmVhZG9ubHkodCxhLHIpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJnYXRld2F5LXJlYWRvbmx5Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJnYXRld2F5LXJlYWRvbmx5LWxhYmVsIj4ke3R9PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZ2F0ZXdheS1yZWFkb25seS12YWx1ZSI+JHthfTwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImdhdGV3YXktcmVhZG9ubHktaGludCI+JHtyfTwvZGl2PgogICAgICA8L2Rpdj4KICAgIGB9dXBkYXRlR2F0ZXdheURyYWZ0KHQsYSl7bGV0IHI9dGhpcy5zZXR0aW5nc1N0YXRlLnNldHRpbmdzfHx7fSxvPW5ldyBTZXQoWyJkY3JvdXRlclRhcmdldFBvcnQiLCJkY3JvdXRlck1hbmFnZWRPcHNQb3J0IiwiZGNyb3V0ZXJNYW5hZ2VkSHR0cFBvcnQiLCJkY3JvdXRlck1hbmFnZWRIdHRwc1BvcnQiXSkuaGFzKHQpP051bWJlcihhKXx8MDphO3RoaXMuc2V0dGluZ3NTdGF0ZT17Li4udGhpcy5zZXR0aW5nc1N0YXRlLHNldHRpbmdzOnsuLi5yLFt0XTpvfX19YXN5bmMgc2F2ZUV4dGVybmFsR2F0ZXdheVNldHRpbmdzKCl7bGV0IHQ9dGhpcy5zZXR0aW5nc1N0YXRlLnNldHRpbmdzO3QmJihhd2FpdCBzby5kaXNwYXRjaEFjdGlvbihrSix7c2V0dGluZ3M6e2Rjcm91dGVyTW9kZTp0LmRjcm91dGVyTW9kZXx8Im1hbmFnZWQiLGRjcm91dGVyTWFuYWdlZEltYWdlOnQuZGNyb3V0ZXJNYW5hZ2VkSW1hZ2V8fCJjb2RlLmZvc3MuZ2xvYmFsL3NlcnZlLnpvbmUvZGNyb3V0ZXI6bGF0ZXN0IixkY3JvdXRlck1hbmFnZWRPcHNQb3J0Ok51bWJlcih0LmRjcm91dGVyTWFuYWdlZE9wc1BvcnQpfHwzMzAwLGRjcm91dGVyTWFuYWdlZEh0dHBQb3J0Ok51bWJlcih0LmRjcm91dGVyTWFuYWdlZEh0dHBQb3J0KXx8ODAsZGNyb3V0ZXJNYW5hZ2VkSHR0cHNQb3J0Ok51bWJlcih0LmRjcm91dGVyTWFuYWdlZEh0dHBzUG9ydCl8fDQ0MyxkY3JvdXRlck1hbmFnZWREYXRhRGlyOnQuZGNyb3V0ZXJNYW5hZ2VkRGF0YURpcnx8Ii4vLm5vZ2l0L2Rjcm91dGVyLWRhdGEiLGRjcm91dGVyR2F0ZXdheVVybDp0LmRjcm91dGVyR2F0ZXdheVVybHx8IiIsZGNyb3V0ZXJHYXRld2F5QXBpVG9rZW46dC5kY3JvdXRlckdhdGV3YXlBcGlUb2tlbnx8IiIsZGNyb3V0ZXJUYXJnZXRIb3N0OnQuZGNyb3V0ZXJUYXJnZXRIb3N0fHwiIixkY3JvdXRlclRhcmdldFBvcnQ6TnVtYmVyKHQuZGNyb3V0ZXJUYXJnZXRQb3J0KXx8ODB9fSksYXdhaXQgc28uZGlzcGF0Y2hBY3Rpb24oZHphLG51bGwpKX1hc3luYyBzYXZlQWRtaW5VaVNldHRpbmdzKCl7bGV0IHQ9dGhpcy5zZXR0aW5nc1N0YXRlLnNldHRpbmdzO3QmJmF3YWl0IHNvLmRpc3BhdGNoQWN0aW9uKGtKLHtzZXR0aW5nczp7YWRtaW5VaURvbWFpbjp0LmFkbWluVWlEb21haW58fCIifX0pfX07c3A9UmkoJENhKSxoMXQ9bmV3IFdlYWtNYXAsZjF0PW5ldyBXZWFrTWFwLFJ0KHNwLDQsInNldHRpbmdzU3RhdGUiLFRDYSxpcCxoMXQpLFJ0KHNwLDQsImxvZ2luU3RhdGUiLENDYSxpcCxmMXQpLGlwPVJ0KHNwLDAsIk9iVmlld1NldHRpbmdzIixEQ2EsaXApLGkoaXAsIk9iVmlld1NldHRpbmdzIiksdmkoaXAsInN0eWxlcyIsW2guZGVmYXVsdFN0eWxlcyx5byxKYAogICAgICBkZWVzLXRpbGUgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgIH0KCiAgICAgIC5nYXRld2F5LWhlYWRlciB7CiAgICAgICAgaGVpZ2h0OiAzNnB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiAwIDE2cHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgLmdhdGV3YXktaGVhZGluZyB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTsKICAgICAgICBnYXA6IDhweDsKICAgICAgICBtaW4td2lkdGg6IDA7CiAgICAgIH0KCiAgICAgIC5nYXRld2F5LXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTsKICAgICAgICBjb2xvcjogdmFyKC0tZGVlcy1jb2xvci10ZXh0LXNlY29uZGFyeSk7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICB9CgogICAgICAuZ2F0ZXdheS1zdWJ0aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgfQoKICAgICAgLmdhdGV3YXktY29udGVudCB7CiAgICAgICAgcGFkZGluZzogMjBweDsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTsKICAgICAgICBnYXA6IDE2cHg7CiAgICAgIH0KCiAgICAgIC5nYXRld2F5LW1vZGUtcm93LAogICAgICAuZ2F0ZXdheS1zdGF0dXMtcm93IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMTJweDsKICAgICAgICBwYWRkaW5nOiAxNnB4IDIwcHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZjRmNGY1IiwiIzI3MjcyYSIpfTsKICAgICAgfQoKICAgICAgLmdhdGV3YXktbW9kZS1yb3cgewogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgfQoKICAgICAgLmdhdGV3YXktbW9kZS1idXR0b24gewogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7aC5iZFRoZW1lKCIjZDRkNGQ4IiwiIzNmM2Y0NiIpfTsKICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZmZmZmZiIsIiMxODE4MWIiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjM2YzZjQ2IiwiI2Q0ZDRkOCIpfTsKICAgICAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgICAgICBmb250OiBpbmhlcml0OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQoKICAgICAgLmdhdGV3YXktbW9kZS1idXR0b24uYWN0aXZlIHsKICAgICAgICBib3JkZXItY29sb3I6ICR7aC5iZFRoZW1lKCIjMjU2M2ViIiwiIzYwYTVmYSIpfTsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2VmZjZmZiIsIiMxNzI1NTQiKX07CiAgICAgICAgY29sb3I6ICR7aC5iZFRoZW1lKCIjMWQ0ZWQ4IiwiI2JmZGJmZSIpfTsKICAgICAgfQoKICAgICAgLmdhdGV3YXktc3RhdHVzLWxhYmVsIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgIGNvbG9yOiAke2guYmRUaGVtZSgiIzcxNzE3YSIsIiNhMWExYWEiKX07CiAgICAgIH0KCiAgICAgIC5nYXRld2F5LXN0YXR1cy12YWx1ZSB7CiAgICAgICAgbWFyZ2luLXRvcDogNHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICB9CgogICAgICAuZ2F0ZXdheS1zdGF0dXMtZXJyb3IsCiAgICAgIC5nYXRld2F5LWRpc2FibGVkIHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiNiOTFjMWMiLCIjZmNhNWE1Iil9OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgfQoKICAgICAgLmdhdGV3YXktZGlzYWJsZWQgewogICAgICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7CiAgICAgIH0KCiAgICAgIC5nYXRld2F5LWFjdGlvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgIH0KCiAgICAgIC5nYXRld2F5LWZpZWxkLmZ1bGwgewogICAgICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7CiAgICAgIH0KCiAgICAgIC5nYXRld2F5LXJlYWRvbmx5IHsKICAgICAgICBwYWRkaW5nOiAxMHB4IDEycHg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtoLmJkVGhlbWUoIiNlNGU0ZTciLCIjMjcyNzJhIil9OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiI2ZhZmFmYSIsIiMxODE4MWIiKX07CiAgICAgIH0KCiAgICAgIC5nYXRld2F5LXJlYWRvbmx5LWxhYmVsIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM1MjUyNWIiLCIjZDRkNGQ4Iil9OwogICAgICB9CgogICAgICAuZ2F0ZXdheS1yZWFkb25seS12YWx1ZSB7CiAgICAgICAgbWFyZ2luLXRvcDogNHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiMxODE4MWIiLCIjZmFmYWZhIil9OwogICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDsKICAgICAgfQoKICAgICAgLmdhdGV3YXktcmVhZG9ubHktaGludCB7CiAgICAgICAgbWFyZ2luLXRvcDogNHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoIiM3MTcxN2EiLCIjYTFhMWFhIil9OwogICAgICB9CgogICAgICBkZWVzLWlucHV0LXRleHQgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAuZ2F0ZXdheS1mb290ZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAwOwogICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAudGlsZS1idXR0b24gewogICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCB2YXIoLS1kZWVzLWNvbG9yLWJvcmRlci1zdWJ0bGUpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtbXV0ZWQpOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNnB4OwogICAgICB9CgogICAgICAudGlsZS1idXR0b246Zmlyc3QtY2hpbGQgewogICAgICAgIGJvcmRlci1sZWZ0OiBub25lOwogICAgICB9CgogICAgICAudGlsZS1idXR0b246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRlZXMtY29sb3ItaG92ZXIpOwogICAgICAgIGNvbG9yOiB2YXIoLS1kZWVzLWNvbG9yLXRleHQtcHJpbWFyeSk7CiAgICAgIH0KCiAgICAgIC50aWxlLWJ1dHRvbi5wcmltYXJ5IHsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTcuMiA5MS4yJSA1OS44JSkiLCJoc2woMjEzLjEgOTMuOSUgNjcuOCUpIil9OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIH0KCiAgICAgIC50aWxlLWJ1dHRvbi5wcmltYXJ5OmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAke2guYmRUaGVtZSgiaHNsKDIxNy4yIDkxLjIlIDU5LjglIC8gMC4wOCkiLCJoc2woMjEzLjEgOTMuOSUgNjcuOCUgLyAwLjA4KSIpfTsKICAgICAgICBjb2xvcjogJHtoLmJkVGhlbWUoImhzbCgyMTcuMiA5MS4yJSA1MCUpIiwiaHNsKDIxMy4xIDkzLjklIDc1JSkiKX07CiAgICAgIH0KCiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3MDBweCkgewogICAgICAgIC5nYXRld2F5LWNvbnRlbnQgewogICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CiAgICAgICAgfQoKICAgICAgICAuZ2F0ZXdheS1zdGF0dXMtcm93IHsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICB9CiAgICAgIH0KICAgIGBdKSxpdChzcCwxLGlwKTttMXQ9aXB9KTtsbCgpO2F3YWl0IGExKCk7RngoKTthd2FpdCBnNygpO3BlKCk7dmFyIFBDYSxJQ2EsQUNhLE5DYSxSQ2EsT0NhLEZDYSxCQ2EseXIsYjF0LHYxdCx4MXQseTF0LHcxdCxrMXQ7QkNhPVtuZSgib2ItYXBwLXNoZWxsIildO3ZhciBnYz1jbGFzcyBnYyBleHRlbmRzKEZDYT13ZSxPQ2E9W1koKV0sUkNhPVtZKCldLE5DYT1bWSgpXSxBQ2E9W1koKV0sSUNhPVtZKCldLFBDYT1bWSgpXSxGQ2Epe2NvbnN0cnVjdG9yKCl7c3VwZXIoKTtlYSh0aGlzLGIxdCxpdCh5ciw4LHRoaXMse2lkZW50aXR5Om51bGwsaXNMb2dnZWRJbjohMX0pKSxpdCh5ciwxMSx0aGlzKTtlYSh0aGlzLHYxdCxpdCh5ciwxMix0aGlzLHthY3RpdmVWaWV3OiJkYXNoYm9hcmQiLGFjdGl2ZVN1YnZpZXc6bnVsbCxhdXRvUmVmcmVzaDohMCxyZWZyZXNoSW50ZXJ2YWw6M2U0fSkpLGl0KHlyLDE1LHRoaXMpO2VhKHRoaXMseDF0LGl0KHlyLDE2LHRoaXMse3N0YXR1czpudWxsfSkpLGl0KHlyLDE5LHRoaXMpO2VhKHRoaXMseTF0LGl0KHlyLDIwLHRoaXMsW10pKSxpdCh5ciwyMyx0aGlzKTtlYSh0aGlzLHcxdCxpdCh5ciwyNCx0aGlzLCExKSksaXQoeXIsMjcsdGhpcyk7ZWEodGhpcyxrMXQsaXQoeXIsMjgsdGhpcywiIikpLGl0KHlyLDMxLHRoaXMpO3ZpKHRoaXMsInZpZXdUYWJzIixbe3NsdWc6ImRhc2hib2FyZCIsbmFtZToiRGFzaGJvYXJkIixpY29uTmFtZToibHVjaWRlOmxheW91dERhc2hib2FyZCIsZWxlbWVudDooYXN5bmMoKT0+KGF3YWl0IFRjdCgpLnRoZW4oKCk9PkN6YSkpLk9iVmlld0Rhc2hib2FyZCkoKX0se3NsdWc6ImFwcHMiLG5hbWU6IkFwcHMiLGljb25OYW1lOiJsdWNpZGU6c3RvcmUiLHN1YlZpZXdzOlt7c2x1ZzoiYXBwLXN0b3JlIixuYW1lOiJBcHAgU3RvcmUiLGljb25OYW1lOiJsdWNpZGU6c3RvcmUiLGVsZW1lbnQ6KGFzeW5jKCk9Pihhd2FpdCBxemEoKS50aGVuKCgpPT5IemEpKS5PYlZpZXdBcHBTdG9yZSkoKX0se3NsdWc6InNlcnZpY2VzIixuYW1lOiJTZXJ2aWNlcyIsaWNvbk5hbWU6Imx1Y2lkZTpib3hlcyIsZWxlbWVudDooYXN5bmMoKT0+KGF3YWl0IFpjdCgpLnRoZW4oKCk9PnRDYSkpLk9iVmlld1NlcnZpY2VzKSgpfV19LHtzbHVnOiJuZXR3b3JrIixuYW1lOiJOZXR3b3JrIixpY29uTmFtZToibHVjaWRlOm5ldHdvcmsiLHN1YlZpZXdzOlt7c2x1ZzoicHJveHkiLG5hbWU6IlByb3h5IixpY29uTmFtZToibHVjaWRlOnJvdXRlIixlbGVtZW50Oihhc3luYygpPT4oYXdhaXQgdDF0KCkudGhlbigoKT0+bkNhKSkuT2JWaWV3TmV0d29yaykoKX0se3NsdWc6ImRvbWFpbnMiLG5hbWU6IkRvbWFpbnMiLGljb25OYW1lOiJsdWNpZGU6Z2xvYmUiLGVsZW1lbnQ6KGFzeW5jKCk9Pihhd2FpdCBwQ2EoKS50aGVuKCgpPT51Q2EpKS5PYlZpZXdEb21haW5zKSgpfSx7c2x1ZzoiZG5zLXJlY29yZHMiLG5hbWU6IkROUyBSZWNvcmRzIixpY29uTmFtZToibHVjaWRlOmxpc3RUcmVlIixlbGVtZW50Oihhc3luYygpPT4oYXdhaXQgYkNhKCkudGhlbigoKT0+Z0NhKSkuT2JWaWV3RG5zUmVjb3JkcykoKX1dfSx7c2x1ZzoicmVnaXN0cnkiLG5hbWU6IlJlZ2lzdHJ5IixpY29uTmFtZToibHVjaWRlOnBhY2thZ2UiLHN1YlZpZXdzOlt7c2x1ZzoicmVnaXN0cmllcyIsbmFtZToiUmVnaXN0cmllcyIsaWNvbk5hbWU6Imx1Y2lkZTpwYWNrYWdlIixlbGVtZW50Oihhc3luYygpPT4oYXdhaXQgYzF0KCkudGhlbigoKT0+a0NhKSkuT2JWaWV3UmVnaXN0cmllcykoKX0se3NsdWc6InRva2VucyIsbmFtZToiVG9rZW5zIixpY29uTmFtZToibHVjaWRlOmtleSIsZWxlbWVudDooYXN5bmMoKT0+KGF3YWl0IHAxdCgpLnRoZW4oKCk9PnpDYSkpLk9iVmlld1Rva2VucykoKX1dfSx7c2x1Zzoic2V0dGluZ3MiLG5hbWU6IlNldHRpbmdzIixpY29uTmFtZToibHVjaWRlOnNldHRpbmdzIixlbGVtZW50Oihhc3luYygpPT4oYXdhaXQgZzF0KCkudGhlbigoKT0+TENhKSkuT2JWaWV3U2V0dGluZ3MpKCl9XSk7dmkodGhpcywicmVzb2x2ZWRWaWV3VGFicyIsW10pO3ZpKHRoaXMsInN1cHByZXNzZWRVcGRhdGVWZXJzaW9uIiwiIik7dmkodGhpcywidXBncmFkZUZsb3dSdW5uaW5nIiwhMSk7ZG9jdW1lbnQudGl0bGU9Ik9uZWJveCI7bGV0IHQ9UWkuc2VsZWN0KG49Pm4pLnN1YnNjcmliZShuPT57dGhpcy5sb2dpblN0YXRlPW4sdGhpcy51cGRhdGVHbG9iYWxNZXNzYWdlcygpLG4uaXNMb2dnZWRJbiYmYTAuZGlzcGF0Y2hBY3Rpb24oSHgsbnVsbCl9KTt0aGlzLnJ4U3Vic2NyaXB0aW9ucy5wdXNoKHQpO2xldCBhPWEwLnNlbGVjdChuPT5uKS5zdWJzY3JpYmUobj0+e3RoaXMuc3lzdGVtU3RhdGU9bix0aGlzLnVwZGF0ZUdsb2JhbE1lc3NhZ2VzKCl9KTt0aGlzLnJ4U3Vic2NyaXB0aW9ucy5wdXNoKGEpO2xldCByPW1jLnNlbGVjdChuPT5uKS5zdWJzY3JpYmUobj0+e3RoaXMudWlTdGF0ZT1uLHRoaXMuc3luY0FwcGRhc2hWaWV3KG4uYWN0aXZlVmlldyxuLmFjdGl2ZVN1YnZpZXcpfSk7dGhpcy5yeFN1YnNjcmlwdGlvbnMucHVzaChyKX1hc3luYyByZXNvbHZlVmlld1RhYnModCl7cmV0dXJuIFByb21pc2UuYWxsKHQubWFwKGFzeW5jIGE9PntsZXQgcj17c2x1ZzphLnNsdWcsbmFtZTphLm5hbWUsaWNvbk5hbWU6YS5pY29uTmFtZX07cmV0dXJuIGEuZWxlbWVudCYmKHIuZWxlbWVudD1hd2FpdCBhLmVsZW1lbnQpLGEuc3ViVmlld3MmJihyLnN1YlZpZXdzPWF3YWl0IHRoaXMucmVzb2x2ZVZpZXdUYWJzKGEuc3ViVmlld3MpKSxyfSkpfXNsdWdGb3IodCl7cmV0dXJuIHQuc2x1Zz8/dC5uYW1lLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXHMrL2csIi0iKX1maW5kUGFyZW50KHQpe3JldHVybiB0aGlzLnJlc29sdmVkVmlld1RhYnMuZmluZChhPT5hLnN1YlZpZXdzPy5pbmNsdWRlcyh0KSl9ZmluZFZpZXdCeVNsdWcodCxhKXtsZXQgcj10aGlzLnJlc29sdmVkVmlld1RhYnMuZmluZChuPT50aGlzLnNsdWdGb3Iobik9PT10KTtpZihyKXJldHVybiBhJiZyLnN1YlZpZXdzP3Iuc3ViVmlld3MuZmluZChuPT50aGlzLnNsdWdGb3Iobik9PT1hKT8/cjpyfWdldCBjdXJyZW50Vmlld1RhYigpe2lmKHRoaXMucmVzb2x2ZWRWaWV3VGFicy5sZW5ndGghPT0wKXJldHVybiB0aGlzLmZpbmRWaWV3QnlTbHVnKHRoaXMudWlTdGF0ZS5hY3RpdmVWaWV3LHRoaXMudWlTdGF0ZS5hY3RpdmVTdWJ2aWV3KT8/dGhpcy5yZXNvbHZlZFZpZXdUYWJzWzBdfXJlbmRlcigpe3JldHVybiB3YAogICAgICA8ZGl2IGNsYXNzPSJtYWluY29udGFpbmVyIj4KICAgICAgICA8ZGVlcy1zaW1wbGUtbG9naW4gbmFtZT0iT25lYm94Ij4KICAgICAgICAgIDxkZWVzLXNpbXBsZS1hcHBkYXNoCiAgICAgICAgICAgIG5hbWU9Ik9uZWJveCIKICAgICAgICAgICAgLnZpZXdUYWJzPSR7dGhpcy5yZXNvbHZlZFZpZXdUYWJzfQogICAgICAgICAgICAuc2VsZWN0ZWRWaWV3PSR7dGhpcy5jdXJyZW50Vmlld1RhYn0KICAgICAgICAgICAgLmdsb2JhbE1lc3NhZ2VzPSR7dGhpcy5nbG9iYWxNZXNzYWdlc30KICAgICAgICAgID4KICAgICAgICAgIDwvZGVlcy1zaW1wbGUtYXBwZGFzaD4KICAgICAgICA8L2RlZXMtc2ltcGxlLWxvZ2luPgogICAgICA8L2Rpdj4KICAgIGB9YXN5bmMgZmlyc3RVcGRhdGVkKCl7dGhpcy5yZXNvbHZlZFZpZXdUYWJzPWF3YWl0IHRoaXMucmVzb2x2ZVZpZXdUYWJzKHRoaXMudmlld1RhYnMpLHRoaXMucmVxdWVzdFVwZGF0ZSgpLGF3YWl0IHRoaXMudXBkYXRlQ29tcGxldGU7bGV0IHQ9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoImRlZXMtc2ltcGxlLWxvZ2luIik7dCYmdC5hZGRFdmVudExpc3RlbmVyKCJsb2dpbiIsbj0+e3RoaXMubG9naW4obi5kZXRhaWwuZGF0YS51c2VybmFtZSxuLmRldGFpbC5kYXRhLnBhc3N3b3JkKX0pO2xldCBhPXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCJkZWVzLXNpbXBsZS1hcHBkYXNoIik7aWYoYSYmKGEuYWRkRXZlbnRMaXN0ZW5lcigidmlldy1zZWxlY3QiLG49PntsZXQgbz1uLmRldGFpbC52aWV3LGw9dGhpcy5maW5kUGFyZW50KG8pLHA9bWMuZ2V0U3RhdGUoKTtpZihsKXtsZXQgZD10aGlzLnNsdWdGb3IobCksdT10aGlzLnNsdWdGb3Iobyk7aWYocC5hY3RpdmVWaWV3PT09ZCYmcC5hY3RpdmVTdWJ2aWV3PT09dSlyZXR1cm47ZGwubmF2aWdhdGVUb1ZpZXcoZCx1KX1lbHNle2xldCBkPXRoaXMuc2x1Z0ZvcihvKTtpZihwLmFjdGl2ZVZpZXc9PT1kJiYhcC5hY3RpdmVTdWJ2aWV3KXJldHVybjtkbC5uYXZpZ2F0ZVRvVmlldyhkKX19KSxhLmFkZEV2ZW50TGlzdGVuZXIoImxvZ291dCIsYXN5bmMoKT0+e2F3YWl0IFFpLmRpc3BhdGNoQWN0aW9uKE0yZSxudWxsKX0pKSxhJiZ0aGlzLnJlc29sdmVkVmlld1RhYnMubGVuZ3RoPjApe2xldCBuPW1jLmdldFN0YXRlKCksbz10aGlzLmZpbmRWaWV3QnlTbHVnKG4uYWN0aXZlVmlldyxuLmFjdGl2ZVN1YnZpZXcpfHx0aGlzLnJlc29sdmVkVmlld1RhYnNbMF07YXdhaXQgYS5sb2FkVmlldyhvKX1sZXQgcj1RaS5nZXRTdGF0ZSgpO2lmKHIuaWRlbnRpdHk/Lmp3dClpZihyLmlkZW50aXR5LmV4cGlyZXNBdD5EYXRlLm5vdygpKXt0aGlzLmxvZ2luU3RhdGU9cix0JiZhd2FpdCB0LnN3aXRjaFRvU2xvdHRlZENvbnRlbnQoKTt0cnl7bGV0IG89YXdhaXQgbmV3IGd0LnBsdWdpbnMudHlwZWRyZXF1ZXN0LlR5cGVkUmVxdWVzdCgiL3R5cGVkcmVxdWVzdCIsImdldFN5c3RlbVN0YXR1cyIpLmZpcmUoe2lkZW50aXR5OnIuaWRlbnRpdHl9KTthMC5zZXRTdGF0ZSh7c3RhdHVzOm8uc3RhdHVzfSl9Y2F0Y2gobil7Y29uc29sZS53YXJuKCJTdG9yZWQgc2Vzc2lvbiBpbnZhbGlkLCByZXR1cm5pbmcgdG8gbG9naW46IixuKSxhd2FpdCBRaS5kaXNwYXRjaEFjdGlvbihNMmUsbnVsbCksdCYmd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpfX1lbHNlIGF3YWl0IFFpLmRpc3BhdGNoQWN0aW9uKE0yZSxudWxsKX1hc3luYyBsb2dpbih0LGEpe2xldCByPWF3YWl0IHRoaXMuZG9tdG9vbHNQcm9taXNlLG49dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoImRlZXMtc2ltcGxlLWxvZ2luIiksbz1uPy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCJkZWVzLWZvcm0iKTtvJiZvLnNldFN0YXR1cygicGVuZGluZyIsIkxvZ2dpbmcgaW4uLi4iKSwoYXdhaXQgUWkuZGlzcGF0Y2hBY3Rpb24oR01hLHt1c2VybmFtZTp0LHBhc3N3b3JkOmF9KSkuaWRlbnRpdHk/KG8mJm8uc2V0U3RhdHVzKCJzdWNjZXNzIiwiTG9nZ2VkIGluISIpLG4mJmF3YWl0IG4uc3dpdGNoVG9TbG90dGVkQ29udGVudCgpLGF3YWl0IGEwLmRpc3BhdGNoQWN0aW9uKEh4LG51bGwpKTpvJiYoby5zZXRTdGF0dXMoImVycm9yIiwiTG9naW4gZmFpbGVkISIpLGF3YWl0IHIuY29udmVuaWVuY2Uuc21hcnRkZWxheS5kZWxheUZvcigyZTMpLG8ucmVzZXQoKSl9dXBkYXRlR2xvYmFsTWVzc2FnZXMoKXtsZXQgdD10aGlzLnN5c3RlbVN0YXRlLnN0YXR1cz8ub25lYm94LnVwZGF0ZTtpZighdGhpcy5sb2dpblN0YXRlLmlzTG9nZ2VkSW58fCF0Py51cGRhdGVBdmFpbGFibGV8fCF0LmxhdGVzdFZlcnNpb258fHQubGF0ZXN0VmVyc2lvbj09PXRoaXMuc3VwcHJlc3NlZFVwZGF0ZVZlcnNpb24pe3RoaXMuZ2xvYmFsTWVzc2FnZXM9W107cmV0dXJufXRoaXMuZ2xvYmFsTWVzc2FnZXM9W3tpZDpgb25lYm94LXVwZGF0ZS0ke3QubGF0ZXN0VmVyc2lvbn1gLHR5cGU6ImluZm8iLGljb246Imx1Y2lkZTpkb3dubG9hZCIsbWVzc2FnZTpgT25lYm94ICR7dC5sYXRlc3RWZXJzaW9ufSBpcyBhdmFpbGFibGUuIEN1cnJlbnQgdmVyc2lvbjogJHt0LmN1cnJlbnRWZXJzaW9ufS5gLGRpc21pc3NpYmxlOiExLGFjdGlvbnM6W3tuYW1lOiJVcGRhdGUgTm93IixpY29uTmFtZToibHVjaWRlOmRvd25sb2FkIixhY3Rpb246aSgoKT0+dGhpcy5zdGFydE9uZWJveFVwZ3JhZGVGbG93KCksImFjdGlvbiIpfSx7bmFtZToiUmVsZWFzZSBOb3RlcyIsaWNvbk5hbWU6Imx1Y2lkZTpmaWxlVGV4dCIsYWN0aW9uOmkoKCk9PnRoaXMub3BlblVwZGF0ZVVybCh0LmNoYW5nZWxvZ1VybHx8dC5yZWxlYXNlVXJsKSwiYWN0aW9uIil9LHtuYW1lOiJMYXRlciIsaWNvbk5hbWU6Imx1Y2lkZTpjbG9jayIsYWN0aW9uOmkoKCk9Pnt0aGlzLnN1cHByZXNzZWRVcGRhdGVWZXJzaW9uPXQubGF0ZXN0VmVyc2lvbnx8IiIsdGhpcy51cGRhdGVHbG9iYWxNZXNzYWdlcygpfSwiYWN0aW9uIil9XX1dfWFzeW5jIHN0YXJ0T25lYm94VXBncmFkZUZsb3coKXtpZih0aGlzLnVwZ3JhZGVGbG93UnVubmluZylyZXR1cm47bGV0IHQ9UWkuZ2V0U3RhdGUoKS5pZGVudGl0eSxhPXRoaXMuc3lzdGVtU3RhdGUuc3RhdHVzPy5vbmVib3gudXBkYXRlO2lmKCF0fHwhYT8ubGF0ZXN0VmVyc2lvbilyZXR1cm47dGhpcy51cGdyYWRlRmxvd1J1bm5pbmc9ITA7bGV0IHI9YXdhaXQgZFEuRGVlc1VwZGF0ZXIuY3JlYXRlQW5kU2hvdyh7Y3VycmVudFZlcnNpb246YS5jdXJyZW50VmVyc2lvbix1cGRhdGVkVmVyc2lvbjphLmxhdGVzdFZlcnNpb24sbW9yZUluZm9Vcmw6YS5yZWxlYXNlVXJsLGNoYW5nZWxvZ1VybDphLmNoYW5nZWxvZ1VybCxzdWNjZXNzQWN0aW9uOiJyZWxvYWQiLHN1Y2Nlc3NEZWxheU1zOjNlNCxzdWNjZXNzQWN0aW9uTGFiZWw6IlJlbG9hZGluZyBPbmVib3ggVUkifSk7dHJ5e3IudXBkYXRlUHJvZ3Jlc3Moe3BlcmNlbnRhZ2U6MTAsaW5kZXRlcm1pbmF0ZTohMCxzdGF0dXNUZXh0OiJSZXF1ZXN0aW5nIHVwZ3JhZGUuLi4iLHRlcm1pbmFsTGluZXM6WyJSZXF1ZXN0aW5nIE9uZWJveCB1cGdyYWRlIl19KTtsZXQgbz1hd2FpdCBuZXcgZ3QucGx1Z2lucy50eXBlZHJlcXVlc3QuVHlwZWRSZXF1ZXN0KCIvdHlwZWRyZXF1ZXN0Iiwic3RhcnRPbmVib3hVcGdyYWRlIikuZmlyZSh7aWRlbnRpdHk6dH0pO2lmKCFvLnVwZ3JhZGUuYWNjZXB0ZWQpe3IubWFya1VwZGF0ZUVycm9yKG8udXBncmFkZS5tZXNzYWdlKSxhd2FpdCB0aGlzLmRlbGF5KDVlMyksYXdhaXQgci5kZXN0cm95KCk7cmV0dXJufXIuYXBwZW5kUHJvZ3Jlc3NMaW5lKG8udXBncmFkZS5tZXNzYWdlKSxvLnVwZ3JhZGUucGlkJiZyLmFwcGVuZFByb2dyZXNzTGluZShgVXBncmFkZSBwcm9jZXNzIFBJRDogJHtvLnVwZ3JhZGUucGlkfWApLG8udXBncmFkZS5sb2dQYXRoJiZyLmFwcGVuZFByb2dyZXNzTGluZShgVXBncmFkZSBsb2c6ICR7by51cGdyYWRlLmxvZ1BhdGh9YCksci51cGRhdGVQcm9ncmVzcyh7cGVyY2VudGFnZTo0NSxpbmRldGVybWluYXRlOiEwLHN0YXR1c1RleHQ6Ikluc3RhbGxlciBzdGFydGVkLi4uIn0pLGF3YWl0IHRoaXMud2FpdEZvck9uZWJveFVwZ3JhZGUocixvLnVwZ3JhZGUudGFyZ2V0VmVyc2lvbix0KSxhd2FpdCByLm1hcmtVcGRhdGVSZWFkeSgpfWNhdGNoKG4pe3IubWFya1VwZGF0ZUVycm9yKHRoaXMuZ2V0RXJyb3JNZXNzYWdlKG4pKSxhd2FpdCB0aGlzLmRlbGF5KDVlMyksYXdhaXQgci5kZXN0cm95KCl9ZmluYWxseXt0aGlzLnVwZ3JhZGVGbG93UnVubmluZz0hMX19YXN5bmMgd2FpdEZvck9uZWJveFVwZ3JhZGUodCxhLHIpe2xldCBuPXRoaXMubm9ybWFsaXplVmVyc2lvbihhKSxvPURhdGUubm93KCkrOWU0LGw9MDtmb3IodC5hcHBlbmRQcm9ncmVzc0xpbmUoIldhaXRpbmcgZm9yIE9uZWJveCB0byByZXN0YXJ0IHdpdGggdGhlIG5ldyB2ZXJzaW9uIik7RGF0ZS5ub3coKTxvOyl7YXdhaXQgdGhpcy5kZWxheSg1ZTMpLGwrKzt0cnl7bGV0IGQ9YXdhaXQgbmV3IGd0LnBsdWdpbnMudHlwZWRyZXF1ZXN0LlR5cGVkUmVxdWVzdCgiL3R5cGVkcmVxdWVzdCIsImdldFN5c3RlbVN0YXR1cyIpLmZpcmUoe2lkZW50aXR5OnJ9KSx1PXRoaXMubm9ybWFsaXplVmVyc2lvbihkLnN0YXR1cy5vbmVib3gudmVyc2lvbik7aWYodC5hcHBlbmRQcm9ncmVzc0xpbmUoYE9uZWJveCBBUEkgYW5zd2VyZWQgd2l0aCAke3V9YCksdT09PW4pe3QudXBkYXRlUHJvZ3Jlc3Moe3BlcmNlbnRhZ2U6MTAwLGluZGV0ZXJtaW5hdGU6ITEsc3RhdHVzVGV4dDpgT25lYm94ICR7bn0gaXMgb25saW5lLmB9KTtyZXR1cm59fWNhdGNoe3QuYXBwZW5kUHJvZ3Jlc3NMaW5lKCJPbmVib3ggQVBJIGlzIHJlc3RhcnRpbmcuLi4iKX10LnVwZGF0ZVByb2dyZXNzKHtwZXJjZW50YWdlOk1hdGgubWluKDk1LDQ1K2wqNSksaW5kZXRlcm1pbmF0ZTohMCxzdGF0dXNUZXh0OmBXYWl0aW5nIGZvciBPbmVib3ggJHtufS4uLmB9KX10LmFwcGVuZFByb2dyZXNzTGluZSgiVGltZWQgb3V0IHdhaXRpbmcgZm9yIHRoZSB2ZXJzaW9uIGNoZWNrOyByZWxvYWRpbmcgdGhlIFVJIGFueXdheSIpfW9wZW5VcGRhdGVVcmwodCl7d2luZG93Lm9wZW4odCwiX2JsYW5rIiwibm9vcGVuZXIsbm9yZWZlcnJlciIpfWFzeW5jIGRlbGF5KHQpe2F3YWl0KGF3YWl0IHRoaXMuZG9tdG9vbHNQcm9taXNlKS5jb252ZW5pZW5jZS5zbWFydGRlbGF5LmRlbGF5Rm9yKHQpfWdldEVycm9yTWVzc2FnZSh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIEVycm9yP3QubWVzc2FnZTpTdHJpbmcodCl9bm9ybWFsaXplVmVyc2lvbih0KXtsZXQgYT10LnRyaW0oKTtyZXR1cm4gYS5zdGFydHNXaXRoKCJ2Iik/YTpgdiR7YX1gfXN5bmNBcHBkYXNoVmlldyh0LGEpe2xldCByPXRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcigiZGVlcy1zaW1wbGUtYXBwZGFzaCIpO2lmKCFyfHx0aGlzLnJlc29sdmVkVmlld1RhYnMubGVuZ3RoPT09MClyZXR1cm47bGV0IG49dGhpcy5maW5kVmlld0J5U2x1Zyh0LGEpOyFufHxyLnNlbGVjdGVkVmlldz09PW58fHIubG9hZFZpZXcobil9fTt5cj1SaShGQ2EpLGIxdD1uZXcgV2Vha01hcCx2MXQ9bmV3IFdlYWtNYXAseDF0PW5ldyBXZWFrTWFwLHkxdD1uZXcgV2Vha01hcCx3MXQ9bmV3IFdlYWtNYXAsazF0PW5ldyBXZWFrTWFwLFJ0KHlyLDQsImxvZ2luU3RhdGUiLE9DYSxnYyxiMXQpLFJ0KHlyLDQsInVpU3RhdGUiLFJDYSxnYyx2MXQpLFJ0KHlyLDQsInN5c3RlbVN0YXRlIixOQ2EsZ2MseDF0KSxSdCh5ciw0LCJnbG9iYWxNZXNzYWdlcyIsQUNhLGdjLHkxdCksUnQoeXIsNCwibG9naW5Mb2FkaW5nIixJQ2EsZ2MsdzF0KSxSdCh5ciw0LCJsb2dpbkVycm9yIixQQ2EsZ2MsazF0KSxnYz1SdCh5ciwwLCJPYkFwcFNoZWxsIixCQ2EsZ2MpLGkoZ2MsIk9iQXBwU2hlbGwiKSx2aShnYywic3R5bGVzIixbaC5kZWZhdWx0U3R5bGVzLEpgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KICAgICAgLm1haW5jb250YWluZXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwdmg7CiAgICAgIH0KICAgIGBdKSxpdCh5ciwxLGdjKTt2YXIgRUNhPWdjO0IyKCk7VGN0KCk7WmN0KCk7dDF0KCk7YzF0KCk7cDF0KCk7ZzF0KCk7bGwoKTtwZSgpO2F3YWl0IGc3KCk7ZGwuaW5pdCgpLEczLnJlbmRlcih3YAogIDxvYi1hcHAtc2hlbGw+PC9vYi1hcHAtc2hlbGw+CmAsZG9jdW1lbnQuYm9keSk7Ci8qISBCdW5kbGVkIGxpY2Vuc2UgaW5mb3JtYXRpb246CgpAbGl0L3JlYWN0aXZlLWVsZW1lbnQvY3NzLXRhZy5qczoKICAoKioKICAgKiBAbGljZW5zZQogICAqIENvcHlyaWdodCAyMDE5IEdvb2dsZSBMTEMKICAgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlCiAgICopCgpAbGl0L3JlYWN0aXZlLWVsZW1lbnQvcmVhY3RpdmUtZWxlbWVudC5qczoKbGl0LWh0bWwvbGl0LWh0bWwuanM6CmxpdC1lbGVtZW50L2xpdC1lbGVtZW50LmpzOgpAbGl0L3JlYWN0aXZlLWVsZW1lbnQvZGVjb3JhdG9ycy9wcm9wZXJ0eS5qczoKbGl0LWh0bWwvZGlyZWN0aXZlLmpzOgpsaXQtaHRtbC9kaXJlY3RpdmVzL3Vuc2FmZS1odG1sLmpzOgpAbGl0L3JlYWN0aXZlLWVsZW1lbnQvZGVjb3JhdG9ycy9jdXN0b20tZWxlbWVudC5qczoKQGxpdC9yZWFjdGl2ZS1lbGVtZW50L2RlY29yYXRvcnMvc3RhdGUuanM6CkBsaXQvcmVhY3RpdmUtZWxlbWVudC9kZWNvcmF0b3JzL2V2ZW50LW9wdGlvbnMuanM6CkBsaXQvcmVhY3RpdmUtZWxlbWVudC9kZWNvcmF0b3JzL2Jhc2UuanM6CkBsaXQvcmVhY3RpdmUtZWxlbWVudC9kZWNvcmF0b3JzL3F1ZXJ5LmpzOgpAbGl0L3JlYWN0aXZlLWVsZW1lbnQvZGVjb3JhdG9ycy9xdWVyeS1hbGwuanM6CkBsaXQvcmVhY3RpdmUtZWxlbWVudC9kZWNvcmF0b3JzL3F1ZXJ5LWFzeW5jLmpzOgpAbGl0L3JlYWN0aXZlLWVsZW1lbnQvZGVjb3JhdG9ycy9xdWVyeS1hc3NpZ25lZC1ub2Rlcy5qczoKbGl0LWh0bWwvYXN5bmMtZGlyZWN0aXZlLmpzOgpsaXQtaHRtbC9kaXJlY3RpdmVzL3VudGlsLmpzOgpsaXQtaHRtbC9kaXJlY3RpdmVzL2FzeW5jLXJlcGxhY2UuanM6CmxpdC1odG1sL2RpcmVjdGl2ZXMvYXN5bmMtYXBwZW5kLmpzOgpsaXQtaHRtbC9kaXJlY3RpdmVzL3JlcGVhdC5qczoKICAoKioKICAgKiBAbGljZW5zZQogICAqIENvcHlyaWdodCAyMDE3IEdvb2dsZSBMTEMKICAgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlCiAgICopCgpsaXQtaHRtbC9pcy1zZXJ2ZXIuanM6CiAgKCoqCiAgICogQGxpY2Vuc2UKICAgKiBDb3B5cmlnaHQgMjAyMiBHb29nbGUgTExDCiAgICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQogICAqKQoKc3dlZXQtc2Nyb2xsL3N3ZWV0LXNjcm9sbC5qczoKICAoKiEgQHByZXNlcnZlIHN3ZWV0LXNjcm9sbCB2NC4wLjAgLSB0c3V5b3NoaXdhZGEgfCBNSVQgTGljZW5zZSAqKQogICgqISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZQogICAgICB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZQogICAgICBMaWNlbnNlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogIAogICAgICBUSElTIENPREUgSVMgUFJPVklERUQgT04gQU4gKkFTIElTKiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCiAgICAgIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04gQU5ZIElNUExJRUQKICAgICAgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIFRJVExFLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwKICAgICAgTUVSQ0hBTlRBQkxJVFkgT1IgTk9OLUlORlJJTkdFTUVOVC4KICAKICAgICAgU2VlIHRoZSBBcGFjaGUgVmVyc2lvbiAyLjAgTGljZW5zZSBmb3Igc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zCiAgICAgIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKikKCmxpdC1odG1sL3N0YXRpYy5qczoKbGl0LWh0bWwvZGlyZWN0aXZlLWhlbHBlcnMuanM6CiAgKCoqCiAgICogQGxpY2Vuc2UKICAgKiBDb3B5cmlnaHQgMjAyMCBHb29nbGUgTExDCiAgICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQogICAqKQoKQGxpdC9yZWFjdGl2ZS1lbGVtZW50L2RlY29yYXRvcnMvcXVlcnktYXNzaWduZWQtZWxlbWVudHMuanM6CmxpdC1odG1sL2RpcmVjdGl2ZXMvcHJpdmF0ZS1hc3luYy1oZWxwZXJzLmpzOgpsaXQtaHRtbC9kaXJlY3RpdmVzL2tleWVkLmpzOgogICgqKgogICAqIEBsaWNlbnNlCiAgICogQ29weXJpZ2h0IDIwMjEgR29vZ2xlIExMQwogICAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UKICAgKikKCkBmb3J0YXdlc29tZS9mb250YXdlc29tZS1zdmctY29yZS9pbmRleC5tanM6CkBmb3J0YXdlc29tZS9mcmVlLWJyYW5kcy1zdmctaWNvbnMvaW5kZXgubWpzOgpAZm9ydGF3ZXNvbWUvZnJlZS1yZWd1bGFyLXN2Zy1pY29ucy9pbmRleC5tanM6CkBmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucy9pbmRleC5tanM6CiAgKCohCiAgICogRm9udCBBd2Vzb21lIEZyZWUgNy4yLjAgYnkgQGZvbnRhd2Vzb21lIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20KICAgKiBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIChJY29uczogQ0MgQlkgNC4wLCBGb250czogU0lMIE9GTCAxLjEsIENvZGU6IE1JVCBMaWNlbnNlKQogICAqIENvcHlyaWdodCAyMDI2IEZvbnRpY29ucywgSW5jLgogICAqKQoKbHVjaWRlL2Rpc3QvZXNtL2RlZmF1bHRBdHRyaWJ1dGVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2NyZWF0ZUVsZW1lbnQubWpzOgpsdWNpZGUvZGlzdC9lc20vc2hhcmVkL3NyYy91dGlscy9oYXNBMTF5UHJvcC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9zaGFyZWQvc3JjL3V0aWxzL21lcmdlQ2xhc3Nlcy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9zaGFyZWQvc3JjL3V0aWxzL3RvQ2FtZWxDYXNlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL3NoYXJlZC9zcmMvdXRpbHMvdG9QYXNjYWxDYXNlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL3JlcGxhY2VFbGVtZW50Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2EtYXJyb3ctZG93bi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9hLWFycm93LXVwLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2EtbGFyZ2Utc21hbGwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYWNjZXNzaWJpbGl0eS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9hY3Rpdml0eS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9haXItdmVudC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9haXJwbGF5Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2FsYXJtLWNsb2NrLWNoZWNrLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2FsYXJtLWNsb2NrLW1pbnVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2FsYXJtLWNsb2NrLW9mZi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9hbGFybS1jbG9jay1wbHVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2FsYXJtLWNsb2NrLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2FsYXJtLXNtb2tlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2FsYnVtLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2FsaWduLWNlbnRlci1ob3Jpem9udGFsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2FsaWduLWNlbnRlci12ZXJ0aWNhbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9hbGlnbi1lbmQtaG9yaXpvbnRhbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9hbGlnbi1ob3Jpem9udGFsLWRpc3RyaWJ1dGUtY2VudGVyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2FsaWduLWVuZC12ZXJ0aWNhbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9hbGlnbi1ob3Jpem9udGFsLWRpc3RyaWJ1dGUtZW5kLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2FsaWduLWhvcml6b250YWwtZGlzdHJpYnV0ZS1zdGFydC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9hbGlnbi1ob3Jpem9udGFsLWp1c3RpZnktY2VudGVyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2FsaWduLWhvcml6b250YWwtanVzdGlmeS1lbmQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYWxpZ24taG9yaXpvbnRhbC1qdXN0aWZ5LXN0YXJ0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2FsaWduLWhvcml6b250YWwtc3BhY2UtYXJvdW5kLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2FsaWduLXN0YXJ0LWhvcml6b250YWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYWxpZ24tc3RhcnQtdmVydGljYWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYWxpZ24taG9yaXpvbnRhbC1zcGFjZS1iZXR3ZWVuLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2FsaWduLXZlcnRpY2FsLWRpc3RyaWJ1dGUtY2VudGVyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2FsaWduLXZlcnRpY2FsLWRpc3RyaWJ1dGUtZW5kLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2FsaWduLXZlcnRpY2FsLWRpc3RyaWJ1dGUtc3RhcnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYWxpZ24tdmVydGljYWwtanVzdGlmeS1jZW50ZXIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYWxpZ24tdmVydGljYWwtanVzdGlmeS1lbmQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYWxpZ24tdmVydGljYWwtanVzdGlmeS1zdGFydC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9hbGlnbi12ZXJ0aWNhbC1zcGFjZS1hcm91bmQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYWxpZ24tdmVydGljYWwtc3BhY2UtYmV0d2Vlbi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9hbWJ1bGFuY2UubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYW1wZXJzYW5kcy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9hbXBlcnNhbmQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYW1waG9yYS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9hbmNob3IubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYW5ncnkubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYW5ub3llZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9hbnRlbm5hLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2FudmlsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2FwZXJ0dXJlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2FwcC13aW5kb3ctbWFjLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2FwcC13aW5kb3cubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYXJjaGl2ZS1yZXN0b3JlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2FwcGxlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2FyY2hpdmUteC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9hcm1jaGFpci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9hcmNoaXZlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Fycm93LWJpZy1kb3duLWRhc2gubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYXJyb3ctYmlnLWRvd24ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYXJyb3ctYmlnLWxlZnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYXJyb3ctYmlnLWxlZnQtZGFzaC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9hcnJvdy1iaWctcmlnaHQtZGFzaC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9hcnJvdy1iaWctcmlnaHQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYXJyb3ctYmlnLXVwLWRhc2gubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYXJyb3ctYmlnLXVwLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Fycm93LWRvd24tMC0xLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Fycm93LWRvd24tMS0wLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Fycm93LWRvd24tZnJvbS1saW5lLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Fycm93LWRvd24tYS16Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Fycm93LWRvd24tbGVmdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9hcnJvdy1kb3duLW5hcnJvdy13aWRlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Fycm93LWRvd24tcmlnaHQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYXJyb3ctZG93bi10by1kb3QubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYXJyb3ctZG93bi11cC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9hcnJvdy1kb3duLXRvLWxpbmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYXJyb3ctZG93bi13aWRlLW5hcnJvdy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9hcnJvdy1kb3duLXotYS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9hcnJvdy1kb3duLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Fycm93LWxlZnQtZnJvbS1saW5lLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Fycm93LWxlZnQtcmlnaHQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYXJyb3ctbGVmdC10by1saW5lLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Fycm93LXJpZ2h0LWZyb20tbGluZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9hcnJvdy1sZWZ0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Fycm93LXJpZ2h0LWxlZnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYXJyb3ctcmlnaHQtdG8tbGluZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9hcnJvdy1yaWdodC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9hcnJvdy11cC0xLTAubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYXJyb3ctdXAtMC0xLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Fycm93LXVwLWEtei5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9hcnJvdy11cC1kb3duLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Fycm93LXVwLWZyb20tZG90Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Fycm93LXVwLWZyb20tbGluZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9hcnJvdy11cC1sZWZ0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Fycm93LXVwLW5hcnJvdy13aWRlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Fycm93LXVwLXJpZ2h0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Fycm93LXVwLXdpZGUtbmFycm93Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Fycm93LXVwLXRvLWxpbmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYXJyb3ctdXAubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYXJyb3ctdXAtei1hLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2FzdGVyaXNrLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Fycm93cy11cC1mcm9tLWxpbmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYXN0cm9pZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9hdC1zaWduLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2F0b20ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYXVkaW8tbGluZXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYXVkaW8td2F2ZWZvcm0ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYXdhcmQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYXhlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JhYnkubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYXhpcy0zZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9iYWNrcGFjay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9iYWRnZS1hbGVydC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9iYWRnZS1jZW50Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JhZGdlLWNoZWNrLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JhZGdlLWRvbGxhci1zaWduLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JhZGdlLWV1cm8ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYmFkZ2UtaW5kaWFuLXJ1cGVlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JhZGdlLWluZm8ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYmFkZ2UtamFwYW5lc2UteWVuLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JhZGdlLW1pbnVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JhZGdlLXBlcmNlbnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYmFkZ2UtcGx1cy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9iYWRnZS1wb3VuZC1zdGVybGluZy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9iYWRnZS1xdWVzdGlvbi1tYXJrLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JhZGdlLXN3aXNzLWZyYW5jLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JhZGdlLXJ1c3NpYW4tcnVibGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYmFkZ2UtdHVya2lzaC1saXJhLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JhZGdlLXgubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYmFkZ2UubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYmFnZ2FnZS1jbGFpbS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9iYW4ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYmFsbG9vbi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9iYW5hbmEubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYmFuZGFnZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9iYW5rbm90ZS1hcnJvdy11cC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9iYW5rbm90ZS1hcnJvdy1kb3duLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Jhbmtub3RlLXgubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYmFua25vdGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYmFyY29kZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9iYXJyZWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYmFzZWxpbmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYmF0aC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9iYXR0ZXJ5LWNoYXJnaW5nLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JhdHRlcnktZnVsbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9iYXR0ZXJ5LWxvdy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9iYXR0ZXJ5LW1lZGl1bS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9iYXR0ZXJ5LXBsdXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYmF0dGVyeS13YXJuaW5nLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JhdHRlcnkubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYmVhbi1vZmYubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYmVha2VyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JlZC1kb3VibGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYmVhbi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9iZWQtc2luZ2xlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JlZWYtb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JlZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9iZWVmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JlZXItb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JlZXIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYmVsbC1jaGVjay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9iZWxsLWRvdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9iZWxsLWVsZWN0cmljLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JlbGwtb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JlbGwtbWludXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYmVsbC1wbHVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JlbGwtcmluZy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9iZWxsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JldHdlZW4taG9yaXpvbnRhbC1lbmQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYmV0d2Vlbi1ob3Jpem9udGFsLXN0YXJ0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JldHdlZW4tdmVydGljYWwtZW5kLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JldHdlZW4tdmVydGljYWwtc3RhcnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYmljZXBzLWZsZXhlZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9iaWtlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JpbmFyeS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9iaW5vY3VsYXJzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Jpb2hhemFyZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9iaXJkLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JpcmRob3VzZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9iaXRjb2luLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JsZW5kLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JsaW5kcy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ibG9ja3MubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYmx1ZXRvb3RoLWNvbm5lY3RlZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ibHVldG9vdGgtb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JsdWV0b290aC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ibHVldG9vdGgtc2VhcmNoaW5nLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JvbGQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYm9tYi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ib2x0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JvbmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYm9vay1hLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Jvb2stYWxlcnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYm9vay1hdWRpby5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ib29rLWNoZWNrLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Jvb2stY29weS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ib29rLWRhc2hlZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ib29rLWRvd24ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYm9vay1oZWFkcGhvbmVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Jvb2staGVhcnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYm9vay1pbWFnZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ib29rLWtleS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ib29rLW1hcmtlZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ib29rLWxvY2subWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYm9vay1taW51cy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ib29rLW9wZW4tY2hlY2subWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYm9vay1vcGVuLXRleHQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYm9vay1zZWFyY2gubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYm9vay1vcGVuLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Jvb2stcGx1cy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ib29rLXRleHQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYm9vay11cC0yLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Jvb2stdXAubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYm9vay10eXBlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Jvb2stdXNlci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ib29rLXgubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYm9vay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ib29rbWFyay1jaGVjay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ib29rbWFyay1taW51cy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ib29rbWFyay1vZmYubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYm9va21hcmstcGx1cy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ib29rbWFyay14Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Jvb2ttYXJrLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Jvb20tYm94Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JvdC1tZXNzYWdlLXNxdWFyZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ib3Qtb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JvdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ib3ctYXJyb3cubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYm90dGxlLXdpbmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYm94Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JveGVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JyYWNlcy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9icmFja2V0cy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9icmFpbi1jaXJjdWl0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JyYWluLWNvZy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9icmljay13YWxsLWZpcmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYnJhaW4ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYnJpY2std2FsbC1zaGllbGQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYnJpY2std2FsbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9icmllZmNhc2UtYnVzaW5lc3MubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYnJpZWZjYXNlLWNvbnZleW9yLWJlbHQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYnJpZWZjYXNlLW1lZGljYWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYnJpZWZjYXNlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JyaW5nLXRvLWZyb250Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JydXNoLWNsZWFuaW5nLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2JydXNoLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2J1Zy1vZmYubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYnViYmxlcy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9idWctcGxheS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9idWcubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYnVpbGRpbmcubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYnVpbGRpbmctMi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9idXMtZnJvbnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvYnVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NhYmxlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NhYmxlLWNhci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jYWtlLXNsaWNlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Nha2UubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2FsZW5kYXItMS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jYWxjdWxhdG9yLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NhbGVuZGFyLWFycm93LWRvd24ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2FsZW5kYXItYXJyb3ctdXAubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2FsZW5kYXItY2hlY2stMi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jYWxlbmRhci1jaGVjay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jYWxlbmRhci1jbG9jay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jYWxlbmRhci1jb2cubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2FsZW5kYXItZGF5cy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jYWxlbmRhci1mb2xkLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NhbGVuZGFyLW1pbnVzLTIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2FsZW5kYXItaGVhcnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2FsZW5kYXItb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NhbGVuZGFyLW1pbnVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NhbGVuZGFyLXBsdXMtMi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jYWxlbmRhci1yYW5nZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jYWxlbmRhci1wbHVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NhbGVuZGFyLXNlYXJjaC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jYWxlbmRhci1zeW5jLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NhbGVuZGFyLXgtMi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jYWxlbmRhci14Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NhbGVuZGFyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NhbGVuZGFycy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jYW1lcmEtb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NhbWVyYS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jYW5keS1jYW5lLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NhbmR5Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NhbmR5LW9mZi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jYW5uYWJpcy1vZmYubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2FubmFiaXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2FwdGlvbnMtb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NhcHRpb25zLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Nhci1mcm9udC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jYXIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2FyLXRheGktZnJvbnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2FyYXZhbi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jYXJkLXNpbS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jYXJyb3QubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2FzZS1sb3dlci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jYXNlLXNlbnNpdGl2ZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jYXNlLXVwcGVyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Nhc3NldHRlLXRhcGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2FzdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jYXN0bGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2F0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NjdHYtb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NjdHYubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2hhcnQtYXJlYS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaGFydC1iYXItYmlnLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NoYXJ0LWJhci1kZWNyZWFzaW5nLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NoYXJ0LWJhci1pbmNyZWFzaW5nLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NoYXJ0LWJhci1zdGFja2VkLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NoYXJ0LWJhci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaGFydC1jYW5kbGVzdGljay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaGFydC1jb2x1bW4tYmlnLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NoYXJ0LWNvbHVtbi1kZWNyZWFzaW5nLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NoYXJ0LWNvbHVtbi1pbmNyZWFzaW5nLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NoYXJ0LWNvbHVtbi1zdGFja2VkLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NoYXJ0LWNvbHVtbi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaGFydC1nYW50dC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaGFydC1saW5lLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NoYXJ0LW5ldHdvcmsubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2hhcnQtbm8tYXhlcy1jb2x1bW4tZGVjcmVhc2luZy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaGFydC1uby1heGVzLWNvbHVtbi1pbmNyZWFzaW5nLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NoYXJ0LW5vLWF4ZXMtY29sdW1uLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NoYXJ0LW5vLWF4ZXMtY29tYmluZWQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2hhcnQtbm8tYXhlcy1nYW50dC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaGFydC1waWUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2hhcnQtc2NhdHRlci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaGFydC1zcGxpbmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2hlY2stY2hlY2subWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2hlY2stbGluZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaGVjay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaGVmLWhhdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaGVycnkubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2hlc3Mta2luZy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaGVzcy1iaXNob3AubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2hlc3Mta25pZ2h0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NoZXNzLXBhd24ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2hlc3Mtcm9vay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaGV2cm9uLWRvd24ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2hlc3MtcXVlZW4ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2hldnJvbi1maXJzdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaGV2cm9uLWxhc3QubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2hldnJvbi1sZWZ0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NoZXZyb24tcmlnaHQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2hldnJvbi11cC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaGV2cm9ucy1kb3duLXVwLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NoZXZyb25zLWRvd24ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2hldnJvbnMtbGVmdC1yaWdodC1lbGxpcHNpcy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaGV2cm9ucy1sZWZ0LXJpZ2h0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NoZXZyb25zLWxlZnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2hldnJvbnMtcmlnaHQtbGVmdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaGV2cm9ucy1yaWdodC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaGV2cm9ucy11cC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaGV2cm9ucy11cC1kb3duLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NodXJjaC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaWdhcmV0dGUtb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NpZ2FyZXR0ZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaXJjbGUtYWxlcnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2lyY2xlLWFycm93LWRvd24ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2lyY2xlLWFycm93LWxlZnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2lyY2xlLWFycm93LW91dC1kb3duLWxlZnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2lyY2xlLWFycm93LW91dC1kb3duLXJpZ2h0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NpcmNsZS1hcnJvdy1vdXQtdXAtbGVmdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaXJjbGUtYXJyb3ctb3V0LXVwLXJpZ2h0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NpcmNsZS1hcnJvdy1yaWdodC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaXJjbGUtYXJyb3ctdXAubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2lyY2xlLWNoZWNrLWJpZy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaXJjbGUtY2hlY2subWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2lyY2xlLWNoZXZyb24tbGVmdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaXJjbGUtY2hldnJvbi1kb3duLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NpcmNsZS1jaGV2cm9uLXJpZ2h0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NpcmNsZS1jaGV2cm9uLXVwLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NpcmNsZS1kYXNoZWQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2lyY2xlLWRpdmlkZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaXJjbGUtZG9sbGFyLXNpZ24ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2lyY2xlLWRvdC1kYXNoZWQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2lyY2xlLWVsbGlwc2lzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NpcmNsZS1kb3QubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2lyY2xlLWVxdWFsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NpcmNsZS1mYWRpbmctYXJyb3ctdXAubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2lyY2xlLWZhZGluZy1wbHVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NpcmNsZS1nYXVnZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaXJjbGUtbWludXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2lyY2xlLW9mZi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaXJjbGUtcGFya2luZy1vZmYubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2lyY2xlLXBhcmtpbmcubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2lyY2xlLXBhdXNlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NpcmNsZS1wZXJjZW50Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NpcmNsZS1wbGF5Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NpcmNsZS1waWxlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NpcmNsZS1wbHVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NpcmNsZS1wb3VuZC1zdGVybGluZy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaXJjbGUtcG93ZXIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2lyY2xlLXF1ZXN0aW9uLW1hcmsubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2lyY2xlLXNsYXNoLTIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2lyY2xlLXNsYXNoLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NpcmNsZS1zbWFsbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaXJjbGUtc3Rhci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaXJjbGUtc3RvcC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaXJjbGUtdXNlci1yb3VuZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaXJjbGUtdXNlci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaXJjbGUteC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaXJjbGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2lyY3VpdC1ib2FyZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jaXRydXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2xhcHBlcmJvYXJkLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NsaXBib2FyZC1jaGVjay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jbGlwYm9hcmQtY2xvY2subWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2xpcGJvYXJkLWNvcHkubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2xpcGJvYXJkLWxpc3QubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2xpcGJvYXJkLW1pbnVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NsaXBib2FyZC1wYXN0ZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jbGlwYm9hcmQtcGVuLWxpbmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2xpcGJvYXJkLXBlbi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jbGlwYm9hcmQtcGx1cy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jbGlwYm9hcmQtdHlwZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jbGlwYm9hcmQteC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jbG9jay0xLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NsaXBib2FyZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jbG9jay0xMC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jbG9jay0xMS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jbG9jay0xMi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jbG9jay0yLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Nsb2NrLTMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2xvY2stNC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jbG9jay01Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Nsb2NrLTYubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2xvY2stOC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jbG9jay03Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Nsb2NrLTkubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2xvY2stYWxlcnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2xvY2stYXJyb3ctZG93bi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jbG9jay1hcnJvdy11cC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jbG9jay1jaGVjay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jbG9jay1mYWRpbmcubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2xvY2stcGx1cy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jbG9jay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jbG9zZWQtY2FwdGlvbi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jbG91ZC1hbGVydC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jbG91ZC1iYWNrdXAubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2xvdWQtY2hlY2subWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2xvdWQtY29nLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Nsb3VkLWRvd25sb2FkLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Nsb3VkLWRyaXp6bGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2xvdWQtaGFpbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jbG91ZC1mb2cubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2xvdWQtbGlnaHRuaW5nLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Nsb3VkLW1vb24tcmFpbi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jbG91ZC1tb29uLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Nsb3VkLXJhaW4td2luZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jbG91ZC1vZmYubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2xvdWQtcmFpbi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jbG91ZC1zbm93Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Nsb3VkLXN1bi1yYWluLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Nsb3VkLXN5bmMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2xvdWQtc3VuLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Nsb3VkLXVwbG9hZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jbG91ZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jbG91ZHkubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY2xvdmVyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NsdWIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY29kZS14bWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY29kZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jb2ZmZWUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY29nLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NvaW5zLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NvbHVtbnMtMi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jb2x1bW5zLTMtY29nLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NvbHVtbnMtMy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jb2x1bW5zLTQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY29tYmluZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jb21tYW5kLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NvbXBhc3MubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY29tcG9uZW50Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NvbXB1dGVyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NvbmNpZXJnZS1iZWxsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NvbmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY29uc3RydWN0aW9uLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NvbnRhY3Qtcm91bmQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY29udGFjdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jb250YWluZXIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY29udHJhc3QubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY29va2llLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Nvb2tpbmctcG90Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NvcHktY2hlY2subWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY29weS1taW51cy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jb3B5LXBsdXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY29weS1zbGFzaC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jb3B5LXgubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY29weS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jb3B5bGVmdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jb3B5cmlnaHQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY29ybmVyLWRvd24tbGVmdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jb3JuZXItZG93bi1yaWdodC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jb3JuZXItbGVmdC1kb3duLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Nvcm5lci1sZWZ0LXVwLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Nvcm5lci1yaWdodC1kb3duLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Nvcm5lci1yaWdodC11cC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jb3JuZXItdXAtbGVmdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jb3JuZXItdXAtcmlnaHQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY3B1Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2NyZWF0aXZlLWNvbW1vbnMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY3JlZGl0LWNhcmQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY3JvaXNzYW50Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Nyb3AubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY3Jvc3MubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvY3Jvc3NoYWlyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Nyb3duLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2N1Ym9pZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jdXAtc29kYS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jdXJyZW5jeS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9jeWxpbmRlci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9kYW0ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZGF0YWJhc2UtYmFja3VwLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2RhdGFiYXNlLXphcC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9kYXRhYmFzZS1zZWFyY2gubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZGF0YWJhc2UubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZGVjaW1hbHMtYXJyb3ctbGVmdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9kZWNpbWFscy1hcnJvdy1yaWdodC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9kZWxldGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZGVzc2VydC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9kaWFtZXRlci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9kaWFtb25kLW1pbnVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2RpYW1vbmQtcGVyY2VudC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9kaWFtb25kLXBsdXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZGlhbW9uZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9kaWNlLTEubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZGljZS0yLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2RpY2UtMy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9kaWNlLTQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZGljZS01Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2RpY2UtNi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9kaWZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2RpY2VzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Rpc2MtMi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9kaXNjLTMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZGlzYy1hbGJ1bS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9kaXZpZGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZGlzYy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9kbmEtb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2RuYS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9kb2NrLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2RvbGxhci1zaWduLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2RvZy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9kb251dC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9kb29yLWNsb3NlZC1sb2NrZWQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZG9vci1jbG9zZWQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZG9vci1vcGVuLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2RvdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9kb3dubG9hZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9kcmFmdGluZy1jb21wYXNzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2RyaWxsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2RyYW1hLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Ryb25lLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Ryb3BsZXQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZHJvcGxldC1vZmYubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZHJvcGxldHMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZHJ1bS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9kcnVtc3RpY2subWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZHVtYmJlbGwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZWFyLW9mZi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9lYXIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZWFydGgtbG9jay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9lYXJ0aC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9lY2xpcHNlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2VnZy1mcmllZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9lZ2cubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZWdnLW9mZi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9lbGxpcHNlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2VsbGlwc2lzLXZlcnRpY2FsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2VxdWFsLWFwcHJveGltYXRlbHkubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZWxsaXBzaXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZXF1YWwtbm90Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2VxdWFsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2VyYXNlci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ldGhlcm5ldC1wb3J0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2V1cm8ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZXYtY2hhcmdlci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9leHBhbmQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZXh0ZXJuYWwtbGluay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9leWUtY2xvc2VkLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2V5ZS1vZmYubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZXllLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZhY3RvcnkubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZmFuLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Zhc3QtZm9yd2FyZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9mZWF0aGVyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZlcnJpcy13aGVlbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9mZW5jZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9maWxlLWFyY2hpdmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZmlsZS1heGlzLTNkLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZpbGUtYmFkZ2UubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZmlsZS1ib3gubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZmlsZS1icmFjZXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZmlsZS1jaGFydC1jb2x1bW4taW5jcmVhc2luZy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9maWxlLWJyYWNlcy1jb3JuZXIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZmlsZS1jaGFydC1jb2x1bW4ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZmlsZS1jaGFydC1saW5lLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZpbGUtY2hhcnQtcGllLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZpbGUtY2hlY2stY29ybmVyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZpbGUtY2hlY2subWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZmlsZS1jbG9jay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9maWxlLWNvZGUtY29ybmVyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZpbGUtY29kZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9maWxlLWNvZy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9maWxlLWRpZmYubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZmlsZS1kaWdpdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9maWxlLWRvd24ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZmlsZS1leGNsYW1hdGlvbi1wb2ludC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9maWxlLWhlYWRwaG9uZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9maWxlLWhlYXJ0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZpbGUtaW1hZ2UubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZmlsZS1pbnB1dC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9maWxlLWtleS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9maWxlLWxvY2subWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZmlsZS1taW51cy1jb3JuZXIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZmlsZS1taW51cy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9maWxlLW11c2ljLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZpbGUtb3V0cHV0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZpbGUtcGVuLWxpbmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZmlsZS1wbGF5Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZpbGUtcGVuLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZpbGUtcGx1cy1jb3JuZXIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZmlsZS1wbHVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZpbGUtcXVlc3Rpb24tbWFyay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9maWxlLXNjYW4ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZmlsZS1zZWFyY2gtY29ybmVyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZpbGUtc2VhcmNoLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZpbGUtc2lnbmFsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZpbGUtc2xpZGVycy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9maWxlLXNwcmVhZHNoZWV0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZpbGUtc3ltbGluay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9maWxlLXN0YWNrLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZpbGUtdGVybWluYWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZmlsZS10ZXh0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZpbGUtdHlwZS1jb3JuZXIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZmlsZS10eXBlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZpbGUtdXAubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZmlsZS11c2VyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZpbGUtdm9sdW1lLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZpbGUtdmlkZW8tY2FtZXJhLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZpbGUteC1jb3JuZXIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZmlsZS14Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZpbGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZmlsbS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9maWxlcy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9maW5nZXJwcmludC1wYXR0ZXJuLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZpcmUtZXh0aW5ndWlzaGVyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Zpc2gtc3ltYm9sLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Zpc2gtb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Zpc2gubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZmlzaGluZy1ob29rLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZsYWctb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Zpc2hpbmctcm9kLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZsYWctdHJpYW5nbGUtbGVmdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9mbGFnLXRyaWFuZ2xlLXJpZ2h0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZsYWcubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZmxhbWUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZmxhc2hsaWdodC1vZmYubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZmxhbWUta2luZGxpbmcubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZmxhc2hsaWdodC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9mbGFzay1jb25pY2FsLW9mZi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9mbGFzay1jb25pY2FsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZsYXNrLXJvdW5kLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZsaXAtaG9yaXpvbnRhbC0yLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZsaXAtdmVydGljYWwtMi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9mbG93ZXItMi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9mb2N1cy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9mb2xkLWhvcml6b250YWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZmxvd2VyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZvbGRlci1hcmNoaXZlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZvbGRlci1ib29rbWFyay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9mb2xkLXZlcnRpY2FsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZvbGRlci1jaGVjay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9mb2xkZXItY2xvc2VkLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZvbGRlci1jb2RlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZvbGRlci1jb2cubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZm9sZGVyLWNsb2NrLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZvbGRlci1kb3QubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZm9sZGVyLWRvd24ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZm9sZGVyLWdpdC0yLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZvbGRlci1naXQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZm9sZGVyLWhlYXJ0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZvbGRlci1rYW5iYW4ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZm9sZGVyLWtleS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9mb2xkZXItaW5wdXQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZm9sZGVyLWxvY2subWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZm9sZGVyLW9wZW4tZG90Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZvbGRlci1vcGVuLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZvbGRlci1taW51cy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9mb2xkZXItb3V0cHV0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZvbGRlci1wZW4ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZm9sZGVyLXBsdXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZm9sZGVyLXJvb3QubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZm9sZGVyLXNlYXJjaC0yLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZvbGRlci1zZWFyY2gubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZm9sZGVyLXN5bWxpbmsubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZm9sZGVyLXRyZWUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZm9sZGVyLXN5bmMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZm9sZGVyLXVwLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZvbGRlci14Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZvbGRlci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9mb2xkZXJzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Zvb3RwcmludHMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZm9ya2xpZnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZm9ybS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9mb3J3YXJkLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ZyYW1lLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Zyb3duLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Z1ZWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZnVsbHNjcmVlbi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9mdW5uZWwtcGx1cy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9mdW5uZWwteC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9nYWxsZXJ5LWhvcml6b250YWwtZW5kLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2Z1bm5lbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9nYWxsZXJ5LWhvcml6b250YWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZ2FsbGVyeS10aHVtYm5haWxzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2dhbGxlcnktdmVydGljYWwtZW5kLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2dhbGxlcnktdmVydGljYWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZ2FtZXBhZC0yLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2dhbWVwYWQtZGlyZWN0aW9uYWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZ2FtZXBhZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9nYXVnZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9nYXZlbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9nZW0ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZ2hvc3QubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZ2VvcmdpYW4tbGFyaS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9naXQtYnJhbmNoLW1pbnVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2dpZnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZ2l0LWJyYW5jaC1wbHVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2dpdC1icmFuY2gubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZ2l0LWNvbW1pdC1ob3Jpem9udGFsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2dpdC1jb21taXQtdmVydGljYWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZ2l0LWNvbXBhcmUtYXJyb3dzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2dpdC1jb21wYXJlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2dpdC1mb3JrLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2dpdC1ncmFwaC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9naXQtbWVyZ2UubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZ2l0LW1lcmdlLWNvbmZsaWN0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2dpdC1wdWxsLXJlcXVlc3QtYXJyb3cubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZ2l0LXB1bGwtcmVxdWVzdC1jbG9zZWQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZ2l0LXB1bGwtcmVxdWVzdC1jcmVhdGUtYXJyb3cubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZ2l0LXB1bGwtcmVxdWVzdC1jcmVhdGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZ2l0LXB1bGwtcmVxdWVzdC1kcmFmdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9naXQtcHVsbC1yZXF1ZXN0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2dsYXNzLXdhdGVyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2dsYXNzZXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZ2xvYmUtbG9jay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9nbG9iZS14Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2dsb2JlLW9mZi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9nbG9iZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9nb2FsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2dwdS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ncmFkdWF0aW9uLWNhcC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ncmFwZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ncmlkLTJ4Mi1jaGVjay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ncmlkLTJ4Mi1wbHVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2dyaWQtMngyLXgubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZ3JpZC0yeDIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZ3JpZC0zeDIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZ3JpZC0zeDMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZ3JpcC1ob3Jpem9udGFsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2dyaXAtdmVydGljYWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvZ3JpcC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ncm91cC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ndWl0YXIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaGFtLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2hhbWJ1cmdlci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9oYW1tZXIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaGFuZC1jb2lucy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9oYW5kLWZpc3QubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaGFuZC1ncmFiLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2hhbmQtaGVhcnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaGFuZC1oZWxwaW5nLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2hhbmQtbWV0YWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaGFuZC1wbGF0dGVyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2hhbmQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaGFuZGJhZy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9oYW5kc2hha2UubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaGFyZC1kcml2ZS1kb3dubG9hZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9oYXJkLWRyaXZlLXVwbG9hZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9oYXJkLWhhdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9oYXJkLWRyaXZlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2hhc2gubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaGF0LWdsYXNzZXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaGF6ZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9oZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9oZG1pLXBvcnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaGVhZGluZy0xLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2hlYWRpbmctMi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9oZWFkaW5nLTMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaGVhZGluZy00Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2hlYWRpbmctNS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9oZWFkaW5nLTYubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaGVhZGluZy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9oZWFkcGhvbmUtb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2hlYWRzZXQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaGVhZHBob25lcy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9oZWFydC1jcmFjay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9oZWFydC1oYW5kc2hha2UubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaGVhcnQtbWludXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaGVhcnQtb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2hlYXJ0LXBsdXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaGVhcnQtcHVsc2UubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaGVhcnQteC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9oZWFydC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9oZWF0ZXIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaGVsaWNvcHRlci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9oZXhhZ29uLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2hpZ2hsaWdodGVyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2hpc3RvcnkubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaG9wLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2hvcC1vZmYubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaG9zcGl0YWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaG90ZWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaG91cmdsYXNzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2hvdXNlLWhlYXJ0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2hvdXNlLXBsdWcubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaG91c2Utd2lmaS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ob3VzZS1wbHVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2hvdXNlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ljZS1jcmVhbS1ib3dsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ljZS1jcmVhbS1jb25lLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2lkLWNhcmQtbGFueWFyZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9pZC1jYXJkLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ltYWdlLWRvd24ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaW1hZ2UtbWludXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaW1hZ2Utb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ltYWdlLXBsYXkubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaW1hZ2UtcGx1cy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9pbWFnZS11cC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9pbWFnZS11cHNjYWxlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ltYWdlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2ltYWdlcy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9pbXBvcnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaW5ib3gubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaW5kaWFuLXJ1cGVlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2luZmluaXR5Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2luZm8ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaW5zcGVjdGlvbi1wYW5lbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9pdGFsaWMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvaXRlcmF0aW9uLWNjdy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9pdGVyYXRpb24tY3cubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvamFwYW5lc2UteWVuLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2pveXN0aWNrLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2thbmJhbi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9rYXlhay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9rZXktc3F1YXJlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2tleS1yb3VuZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9rZXkubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMva2V5Ym9hcmQtbXVzaWMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMva2V5Ym9hcmQtb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2tleWJvYXJkLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2xhbXAtY2VpbGluZy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9sYW1wLWRlc2subWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbGFtcC1mbG9vci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9sYW1wLXdhbGwtZG93bi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9sYW1wLXdhbGwtdXAubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbGFtcC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9sYW5kLXBsb3QubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbGFuZG1hcmsubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbGFuZ3VhZ2VzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2xhcHRvcC1taW5pbWFsLWNoZWNrLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2xhcHRvcC1taW5pbWFsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2xhcHRvcC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9sYXNzby1zZWxlY3QubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbGF1Z2gubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbGFzc28ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbGF5ZXJzLTIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbGF5ZXJzLW1pbnVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2xheWVycy1wbHVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2xheW91dC1kYXNoYm9hcmQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbGF5ZXJzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2xheW91dC1ncmlkLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2xheW91dC1saXN0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2xheW91dC1wYW5lbC1sZWZ0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2xheW91dC10ZW1wbGF0ZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9sYXlvdXQtcGFuZWwtdG9wLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2xlYWYubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbGVhZnktZ3JlZW4ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbGVjdGVybi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9sZW5zLWNvbmNhdmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbGVucy1jb252ZXgubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbGlicmFyeS1iaWcubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbGlicmFyeS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9saWZlLWJ1b3kubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbGlnYXR1cmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbGlnaHRidWxiLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2xpZ2h0YnVsYi1vZmYubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbGluZS1kb3QtcmlnaHQtaG9yaXpvbnRhbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9saW5lLXN0eWxlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2xpbmUtc3F1aWdnbGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbGluay0yLW9mZi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9saW5rLTIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbGluay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9saXN0LWNoZWNrLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2xpc3QtY2hlY2tzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2xpc3QtY2hldnJvbnMtZG93bi11cC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9saXN0LWNoZXZyb25zLXVwLWRvd24ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbGlzdC1jb2xsYXBzZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9saXN0LWVuZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9saXN0LWZpbHRlci1wbHVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2xpc3QtZmlsdGVyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2xpc3QtaW5kZW50LWRlY3JlYXNlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2xpc3QtaW5kZW50LWluY3JlYXNlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2xpc3QtbWludXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbGlzdC1tdXNpYy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9saXN0LW9yZGVyZWQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbGlzdC1wbHVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2xpc3QtcmVzdGFydC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9saXN0LXN0YXJ0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2xpc3QtdG9kby5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9saXN0LXRyZWUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbGlzdC12aWRlby5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9saXN0LXgubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbGlzdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9sb2FkZXItY2lyY2xlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2xvYWRlci1waW53aGVlbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9sb2FkZXIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbG9jYXRlLWZpeGVkLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2xvY2F0ZS1vZmYubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbG9jYXRlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2xvY2sta2V5aG9sZS1vcGVuLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2xvY2sta2V5aG9sZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9sb2NrLW9wZW4ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbG9jay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9sb2ctaW4ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbG9nLW91dC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9sb2dzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2xvbGxpcG9wLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL2x1Z2dhZ2UubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWFpbC1jaGVjay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tYWduZXQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWFpbC1taW51cy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tYWlsLW9wZW4ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWFpbC1wbHVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21haWwtcXVlc3Rpb24tbWFyay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tYWlsLXNlYXJjaC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tYWlsLXdhcm5pbmcubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWFpbC14Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21haWxib3gubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWFpbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tYWlscy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tYXAtbWludXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWFwLXBpbi1jaGVjay1pbnNpZGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWFwLXBpbi1jaGVjay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tYXAtcGluLWhvdXNlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21hcC1waW4tbWludXMtaW5zaWRlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21hcC1waW4tbWludXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWFwLXBpbi1vZmYubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWFwLXBpbi1wZW4ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWFwLXBpbi1wbHVzLWluc2lkZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tYXAtcGluLXBsdXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWFwLXBpbi1zZWFyY2gubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWFwLXBpbi14Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21hcC1waW4teC1pbnNpZGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWFwLXBpbi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tYXAtcGlubmVkLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21hcC1wbHVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21hcC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tYXJzLXN0cm9rZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tYXJzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21hcnRpbmkubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWF4aW1pemUtMi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tYXhpbWl6ZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tZWRhbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tZWdhcGhvbmUtb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21lZ2FwaG9uZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tZWgubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWVtb3J5LXN0aWNrLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21lbnUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWVyZ2UubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWVzc2FnZS1jaXJjbGUtY2hlY2subWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWVzc2FnZS1jaXJjbGUtY29kZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tZXNzYWdlLWNpcmNsZS1kYXNoZWQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWVzc2FnZS1jaXJjbGUtaGVhcnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWVzc2FnZS1jaXJjbGUtbW9yZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tZXNzYWdlLWNpcmNsZS1vZmYubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWVzc2FnZS1jaXJjbGUtcGx1cy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tZXNzYWdlLWNpcmNsZS1xdWVzdGlvbi1tYXJrLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21lc3NhZ2UtY2lyY2xlLXJlcGx5Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21lc3NhZ2UtY2lyY2xlLXdhcm5pbmcubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWVzc2FnZS1jaXJjbGUteC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tZXNzYWdlLWNpcmNsZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tZXNzYWdlLXNxdWFyZS1jb2RlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21lc3NhZ2Utc3F1YXJlLWNoZWNrLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21lc3NhZ2Utc3F1YXJlLWRhc2hlZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tZXNzYWdlLXNxdWFyZS1kaWZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21lc3NhZ2Utc3F1YXJlLWRvdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tZXNzYWdlLXNxdWFyZS1oZWFydC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tZXNzYWdlLXNxdWFyZS1sb2NrLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21lc3NhZ2Utc3F1YXJlLW1vcmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWVzc2FnZS1zcXVhcmUtb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21lc3NhZ2Utc3F1YXJlLXBsdXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWVzc2FnZS1zcXVhcmUtcXVvdGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWVzc2FnZS1zcXVhcmUtcmVwbHkubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWVzc2FnZS1zcXVhcmUtc2hhcmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWVzc2FnZS1zcXVhcmUtdGV4dC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tZXNzYWdlLXNxdWFyZS13YXJuaW5nLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21lc3NhZ2Utc3F1YXJlLXgubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWVzc2FnZS1zcXVhcmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWVzc2FnZXMtc3F1YXJlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21ldHJvbm9tZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9taWMtb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21pYy12b2NhbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9taWMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWljcm9jaGlwLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21pY3Jvc2NvcGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWljcm93YXZlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21pbGVzdG9uZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9taWxrLW9mZi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9taWxrLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21pbmltaXplLTIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWluaW1pemUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWludXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbWlycm9yLXJlY3Rhbmd1bGFyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21pcnJvci1yb3VuZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tb25pdG9yLWNoZWNrLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21vbml0b3ItY2xvdWQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbW9uaXRvci1jb2cubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbW9uaXRvci1kb3QubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbW9uaXRvci1vZmYubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbW9uaXRvci1kb3duLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21vbml0b3ItcGF1c2UubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbW9uaXRvci1wbGF5Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21vbml0b3Itc21hcnRwaG9uZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tb25pdG9yLXNwZWFrZXIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbW9uaXRvci11cC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tb25pdG9yLXN0b3AubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbW9uaXRvci14Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21vbml0b3IubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbW9vbi1zdGFyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21vb24ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbW90b3JiaWtlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21vdW50YWluLXNub3cubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbW91bnRhaW4ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbW91c2UtbGVmdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tb3VzZS1vZmYubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbW91c2UtcG9pbnRlci0yLW9mZi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tb3VzZS1wb2ludGVyLTIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbW91c2UtcG9pbnRlci1iYW4ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbW91c2UtcG9pbnRlci1jbGljay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tb3VzZS1wb2ludGVyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21vdXNlLXJpZ2h0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21vdXNlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21vdmUtM2QubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbW92ZS1kaWFnb25hbC0yLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21vdmUtZGlhZ29uYWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbW92ZS1kb3duLWxlZnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbW92ZS1kb3duLXJpZ2h0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21vdmUtZG93bi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tb3ZlLWhvcml6b250YWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbW92ZS1sZWZ0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21vdmUtcmlnaHQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbW92ZS11cC1sZWZ0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21vdmUtdXAtcmlnaHQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbW92ZS11cC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tb3ZlLXZlcnRpY2FsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL21vdmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbXVzaWMtMi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9tdXNpYy00Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL211c2ljLTMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbXVzaWMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbmF2aWdhdGlvbi0yLW9mZi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9uYXZpZ2F0aW9uLTIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbmF2aWdhdGlvbi1vZmYubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbmF2aWdhdGlvbi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9uZXR3b3JrLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL25ld3NwYXBlci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9uZmMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbm9uLWJpbmFyeS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ub3RlYm9vay1wZW4ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbm90ZWJvb2stdGV4dC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9ub3RlYm9vay10YWJzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL25vdGVib29rLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL25vdGVwYWQtdGV4dC1kYXNoZWQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbm90ZXBhZC10ZXh0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL251dC1vZmYubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvbnV0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL29jdGFnb24tYWxlcnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvb2N0YWdvbi1taW51cy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9vY3RhZ29uLXBhdXNlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL29jdGFnb24ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvb2N0YWdvbi14Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL29tZWdhLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL29wdGlvbi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9vcmJpdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9vcmlnYW1pLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BhY2thZ2UtMi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9wYWNrYWdlLWNoZWNrLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BhY2thZ2UtbWludXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcGFja2FnZS1vcGVuLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BhY2thZ2UtcGx1cy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9wYWNrYWdlLXNlYXJjaC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9wYWNrYWdlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BhY2thZ2UteC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9wYWludC1idWNrZXQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcGFpbnQtcm9sbGVyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BhaW50YnJ1c2gtdmVydGljYWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcGFpbnRicnVzaC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9wYWxldHRlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BhbmVsLWJvdHRvbS1jbG9zZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9wYW5kYS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9wYW5lbC1ib3R0b20tZGFzaGVkLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BhbmVsLWJvdHRvbS1vcGVuLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BhbmVsLWJvdHRvbS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9wYW5lbC1sZWZ0LWNsb3NlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BhbmVsLWxlZnQtZGFzaGVkLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BhbmVsLWxlZnQtb3Blbi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9wYW5lbC1sZWZ0LXJpZ2h0LWRhc2hlZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9wYW5lbC1sZWZ0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BhbmVsLXJpZ2h0LWNsb3NlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BhbmVsLXJpZ2h0LWRhc2hlZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9wYW5lbC1yaWdodC1vcGVuLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BhbmVsLXRvcC1ib3R0b20tZGFzaGVkLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BhbmVsLXJpZ2h0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BhbmVsLXRvcC1jbG9zZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9wYW5lbC10b3AtZGFzaGVkLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BhbmVsLXRvcC1vcGVuLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BhbmVsLXRvcC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9wYW5lbHMtbGVmdC1ib3R0b20ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcGFuZWxzLXJpZ2h0LWJvdHRvbS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9wYW5lbHMtdG9wLWxlZnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcGFwZXJjbGlwLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BhcmVudGhlc2VzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BhcmtpbmctbWV0ZXIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcGF1c2UubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcGFydHktcG9wcGVyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3Bhdy1wcmludC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9wYy1jYXNlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3Blbi1saW5lLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3Blbi1vZmYubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcGVuLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3Blbi10b29sLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BlbmNpbC1saW5lLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BlbmNpbC1vZmYubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcGVuY2lsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BlbmNpbC1ydWxlci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9wZW50YWdvbi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9wZXJjZW50Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BlcnNvbi1zdGFuZGluZy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9waGlsaXBwaW5lLXBlc28ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcGhvbmUtY2FsbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9waG9uZS1mb3J3YXJkZWQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcGhvbmUtaW5jb21pbmcubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcGhvbmUtbWlzc2VkLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3Bob25lLW9mZi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9waG9uZS1vdXRnb2luZy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9waS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9waG9uZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9waWFuby5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9waWNrYXhlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BpY3R1cmUtaW4tcGljdHVyZS0yLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BpY3R1cmUtaW4tcGljdHVyZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9waWdneS1iYW5rLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BpbGNyb3ctbGVmdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9waWxjcm93LXJpZ2h0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BpbGNyb3cubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcGlsbC1ib3R0bGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcGluLW9mZi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9waWxsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3Bpbi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9waXBldHRlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BpenphLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BsYW5lLWxhbmRpbmcubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcGxhbmUtdGFrZW9mZi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9wbGFuZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9wbGF5Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BsdWctMi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9wbHVnLXphcC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9wbHVnLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BsdXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcG9ja2V0LWtuaWZlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BvZGNhc3QubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcG9pbnRlci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9wb2ludGVyLW9mZi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9wb3Bjb3JuLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BvcHNpY2xlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3BvdW5kLXN0ZXJsaW5nLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3Bvd2VyLW9mZi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9wb3dlci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9wcmVzZW50YXRpb24ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcHJpbnRlci14Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3ByaW50ZXItY2hlY2subWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcHJpbnRlci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9wcm9wb3J0aW9ucy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9wdXp6bGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcHJvamVjdG9yLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3B5cmFtaWQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcXVvdGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcXItY29kZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9yYWRhci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9yYWJiaXQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcmFkaWF0aW9uLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3JhZGljYWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcmFkaW8tb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3JhZGlvLXJlY2VpdmVyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3JhZGlvLXRvd2VyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3JhZGlvLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3JhZGl1cy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9yYWluYm93Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3JhdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9yYXRpby5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9yZWNlaXB0LWNlbnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcmVjZWlwdC1ldXJvLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3JlY2VpcHQtaW5kaWFuLXJ1cGVlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3JlY2VpcHQtcG91bmQtc3RlcmxpbmcubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcmVjZWlwdC1qYXBhbmVzZS15ZW4ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcmVjZWlwdC1ydXNzaWFuLXJ1YmxlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3JlY2VpcHQtdGV4dC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9yZWNlaXB0LXN3aXNzLWZyYW5jLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3JlY2VpcHQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcmVjZWlwdC10dXJraXNoLWxpcmEubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcmVjdGFuZ2xlLWNpcmNsZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9yZWN0YW5nbGUtZWxsaXBzaXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcmVjdGFuZ2xlLWdvZ2dsZXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcmVjdGFuZ2xlLWhvcml6b250YWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcmVjdGFuZ2xlLXZlcnRpY2FsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3JlY3ljbGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcmVkby0yLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3JlZG8tZG90Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3JlZG8ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcmVmcmVzaC1jY3ctZG90Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3JlZnJlc2gtY2N3Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3JlZnJlc2gtY3ctb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3JlZnJlc2gtY3cubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcmVmcmlnZXJhdG9yLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3JlZ2V4Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3JlbW92ZS1mb3JtYXR0aW5nLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3JlcGVhdC0yLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3JlcGVhdC0xLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3JlcGVhdC1vZmYubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcmVwZWF0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3JlcGxhY2UtYWxsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3JlcGxhY2UubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcmVwbHktYWxsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3JlcGx5Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3JpYmJvbi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9yZXdpbmQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcm9hZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9yb2NrZXQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcm9ja2luZy1jaGFpci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9yb2xsZXItY29hc3Rlci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9yb3NlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3JvdGF0ZS0zZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9yb3RhdGUtY2N3LWtleS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9yb3RhdGUtY2N3LXNxdWFyZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9yb3RhdGUtY2N3Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3JvdGF0ZS1jdy1zcXVhcmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcm90YXRlLWN3Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3JvdXRlLW9mZi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9yb3V0ZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9yb3V0ZXIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcm93cy0yLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3Jvd3MtMy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9yb3dzLTQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvcnNzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3J1bGVyLWRpbWVuc2lvbi1saW5lLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3J1bGVyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3J1c3NpYW4tcnVibGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2FpbGJvYXQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2FsYWQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2FuZHdpY2gubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2F0ZWxsaXRlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NhdGVsbGl0ZS1kaXNoLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NhdWRpLXJpeWFsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NhdmUtb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NhdmUtYWxsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NhdmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2NhbGUtM2QubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2NhbGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2Nhbi1iYXJjb2RlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NjYWxpbmcubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2Nhbi1leWUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2Nhbi1mYWNlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NjYW4taGVhcnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2Nhbi1saW5lLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NjYW4tcXItY29kZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zY2FuLXNlYXJjaC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zY2FuLXRleHQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2Nhbi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zY2hvb2wubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2Npc3NvcnMtbGluZS1kYXNoZWQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2Npc3NvcnMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2Nvb3Rlci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zY3JlZW4tc2hhcmUtb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NjcmVlbi1zaGFyZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zY3JvbGwtdGV4dC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zY3JvbGwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2VhcmNoLWFsZXJ0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NlYXJjaC1jaGVjay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zZWFyY2gtY29kZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zZWFyY2gtc2xhc2gubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2VhcmNoLXgubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2VhcmNoLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NlY3Rpb24ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2VuZC1ob3Jpem9udGFsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NlbmQtdG8tYmFjay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zZW5kLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NlcGFyYXRvci1ob3Jpem9udGFsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NlcGFyYXRvci12ZXJ0aWNhbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zZXJ2ZXItY29nLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NlcnZlci1jcmFzaC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zZXJ2ZXItb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NlcnZlci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zZXR0aW5ncy0yLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NoYXBlcy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zZXR0aW5ncy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zaGFyZS0yLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NoYXJlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NoZWxsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NoZWV0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NoZWx2aW5nLXVuaXQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2hpZWxkLWFsZXJ0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NoaWVsZC1iYW4ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2hpZWxkLWNoZWNrLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NoaWVsZC1jb2ctY29ybmVyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NoaWVsZC1lbGxpcHNpcy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zaGllbGQtY29nLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NoaWVsZC1oYWxmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NoaWVsZC1taW51cy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zaGllbGQtb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NoaWVsZC1wbHVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NoaWVsZC1xdWVzdGlvbi1tYXJrLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NoaWVsZC11c2VyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NoaWVsZC14Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NoaWVsZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zaGlwLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NoaXAtd2hlZWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2hpcnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2hvcHBpbmctYmFnLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3Nob3BwaW5nLWJhc2tldC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zaG9wcGluZy1jYXJ0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3Nob3ZlbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zaG93ZXItaGVhZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zaHJlZGRlci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zaHJpbmsubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2hyaW1wLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NocnViLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NodWZmbGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2lnbWEubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2lnbmFsLWhpZ2gubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2lnbmFsLWxvdy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zaWduYWwtbWVkaXVtLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NpZ25hbC16ZXJvLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NpZ25hbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zaWduYXR1cmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2lnbnBvc3QtYmlnLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NpZ25wb3N0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NpcmVuLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NraXAtYmFjay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9za2lwLWZvcndhcmQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2t1bGwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2xhc2gubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc2xpZGVycy1ob3Jpem9udGFsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NsaWNlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NsaWRlcnMtdmVydGljYWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc21hcnRwaG9uZS1jaGFyZ2luZy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zbWFydHBob25lLW5mYy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zbWlsZS1wbHVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NtYXJ0cGhvbmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc21pbGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc25haWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc25vd2ZsYWtlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NvYXAtZGlzcGVuc2VyLWRyb3BsZXQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc29mYS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zb2xhci1wYW5lbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zb3VwLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NwYWNlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NwYWRlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NwYXJrbGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3BhcmtsZXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3BlYWtlci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcGVlY2gubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3BlbGwtY2hlY2subWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3BlbGwtY2hlY2stMi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcGxpbmUtcG9pbnRlci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcGxpbmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3BsaXQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3Bvb2wubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3BvcnQtc2hvZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcHJheS1jYW4ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3Byb3V0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3Nwb3RsaWdodC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtYWN0aXZpdHkubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3F1YXJlLWFycm93LWRvd24tbGVmdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtYXJyb3ctZG93bi1yaWdodC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtYXJyb3ctZG93bi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtYXJyb3ctbGVmdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtYXJyb3ctb3V0LWRvd24tbGVmdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtYXJyb3ctb3V0LWRvd24tcmlnaHQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3F1YXJlLWFycm93LW91dC11cC1sZWZ0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NxdWFyZS1hcnJvdy1vdXQtdXAtcmlnaHQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3F1YXJlLWFycm93LXJpZ2h0LWVudGVyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NxdWFyZS1hcnJvdy1yaWdodC1leGl0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NxdWFyZS1hcnJvdy1yaWdodC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtYXJyb3ctdXAtbGVmdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtYXJyb3ctdXAtcmlnaHQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3F1YXJlLWFycm93LXVwLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NxdWFyZS1hc3Rlcmlzay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtYm90dG9tLWRhc2hlZC1zY2lzc29ycy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtY2VudGVybGluZS1kYXNoZWQtaG9yaXpvbnRhbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtY2VudGVybGluZS1kYXNoZWQtdmVydGljYWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3F1YXJlLWNoYXJ0LWdhbnR0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NxdWFyZS1jaGVjay1iaWcubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3F1YXJlLWNoZWNrLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NxdWFyZS1jaGV2cm9uLWRvd24ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3F1YXJlLWNoZXZyb24tbGVmdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtY2hldnJvbi1yaWdodC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtY2hldnJvbi11cC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtY29kZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtZGFzaGVkLWJvdHRvbS1jb2RlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NxdWFyZS1kYXNoZWQtYm90dG9tLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NxdWFyZS1kYXNoZWQta2FuYmFuLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NxdWFyZS1kYXNoZWQtbW91c2UtcG9pbnRlci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtZGFzaGVkLXRleHQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3F1YXJlLWRhc2hlZC10b3Atc29saWQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3F1YXJlLWRhc2hlZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtZG90Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NxdWFyZS1kaXZpZGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3F1YXJlLWVxdWFsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NxdWFyZS1mdW5jdGlvbi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtbGlicmFyeS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtbS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUta2FuYmFuLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NxdWFyZS1tZW51Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NxdWFyZS1taW51cy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtbW91c2UtcG9pbnRlci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtcGFya2luZy1vZmYubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3F1YXJlLXBhcmtpbmcubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3F1YXJlLXBlbi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtcGVyY2VudC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtcGF1c2UubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3F1YXJlLXBpLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NxdWFyZS1waWxjcm93Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NxdWFyZS1wbHVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NxdWFyZS1wbGF5Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NxdWFyZS1wb3dlci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtcmFkaWNhbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtcm91bmQtY29ybmVyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NxdWFyZS1zaWdtYS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtc2Npc3NvcnMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3F1YXJlLXNsYXNoLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NxdWFyZS1zcGxpdC1ob3Jpem9udGFsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NxdWFyZS1zcGxpdC12ZXJ0aWNhbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtc3F1YXJlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NxdWFyZS1zdGFjay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtc3Rhci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtc3RvcC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmUtdGVybWluYWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3F1YXJlLXVzZXItcm91bmQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3F1YXJlLXgubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3F1YXJlLXVzZXIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3F1YXJlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NxdWFyZXMtZXhjbHVkZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmVzLWludGVyc2VjdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zcXVhcmVzLXN1YnRyYWN0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NxdWFyZXMtdW5pdGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3F1aXJjbGUtZGFzaGVkLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NxdWlyY2xlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3NxdWlycmVsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3N0YW1wLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3N0YXItaGFsZi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zdGFyLW9mZi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zdGFyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3N0ZXAtYmFjay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zdGVwLWZvcndhcmQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3RpY2tlci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zdGV0aG9zY29wZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zdGlja3ktbm90ZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zdG9yZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zdHJldGNoLWhvcml6b250YWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3RvbmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3RyZXRjaC12ZXJ0aWNhbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zdHJpa2V0aHJvdWdoLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3N1YnNjcmlwdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy9zdW4tZGltLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3N1bi1tZWRpdW0ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3VuLW1vb24ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3VuLXNub3cubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3VuLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3N1bnJpc2UubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3Vuc2V0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3N1cGVyc2NyaXB0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3N3YXRjaC1ib29rLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3N3aXNzLWZyYW5jLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3N3aXRjaC1jYW1lcmEubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3dvcmQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvc3dvcmRzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3N5cmluZ2UubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdGFibGUtMi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90YWJsZS1jZWxscy1tZXJnZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90YWJsZS1jZWxscy1zcGxpdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90YWJsZS1jb2x1bW5zLXNwbGl0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3RhYmxlLW9mLWNvbnRlbnRzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3RhYmxlLXByb3BlcnRpZXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdGFibGUtcm93cy1zcGxpdC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90YWJsZXQtc21hcnRwaG9uZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90YWJsZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90YWJsZXQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdGFibGV0cy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90YWcubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdGFncy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90YWxseS0xLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3RhbGx5LTIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdGFsbHktMy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90YWxseS00Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3RhbmdlbnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdGFsbHktNS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90YXJnZXQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdGVsZXNjb3BlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3RlbnQtdHJlZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90ZW50Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3Rlcm1pbmFsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3Rlc3QtdHViZS1kaWFnb25hbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90ZXN0LXR1YmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdGV4dC1hbGlnbi1jZW50ZXIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdGVzdC10dWJlcy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90ZXh0LWFsaWduLWVuZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90ZXh0LWFsaWduLWp1c3RpZnkubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdGV4dC1hbGlnbi1zdGFydC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90ZXh0LWN1cnNvci1pbnB1dC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90ZXh0LWN1cnNvci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90ZXh0LWluaXRpYWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdGV4dC1xdW90ZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90ZXh0LXNlYXJjaC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90ZXh0LXdyYXAubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdGhlYXRlci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90aGVybW9tZXRlci1zbm93Zmxha2UubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdGhlcm1vbWV0ZXItc3VuLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3RoZXJtb21ldGVyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3RodW1icy1kb3duLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3RodW1icy11cC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90aWNrZXQtY2hlY2subWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdGlja2V0LW1pbnVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3RpY2tldC1wZXJjZW50Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3RpY2tldC1wbHVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3RpY2tldC1zbGFzaC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90aWNrZXQteC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90aWNrZXQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdGlja2V0cy1wbGFuZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90aWNrZXRzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3RpbWVsaW5lLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3RpbWVyLW9mZi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90aW1lci1yZXNldC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90aW1lci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90b2lsZXQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdG9nZ2xlLWxlZnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdG9nZ2xlLXJpZ2h0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3Rvb2wtY2FzZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90b29sYm94Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3RvcnVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3RvdWNocGFkLW9mZi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90b3JuYWRvLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3RvdWNocGFkLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3Rvd2VsLXJhY2subWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdG93ZXItY29udHJvbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90b3ktYnJpY2subWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdHJhY3Rvci5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90cmFmZmljLWNvbmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdHJhaW4tZnJvbnQtdHVubmVsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3RyYWluLWZyb250Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3RyYWluLXRyYWNrLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3RyYW0tZnJvbnQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdHJhbnNnZW5kZXIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdHJhc2gtMi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90cmFzaC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90cmVlLWRlY2lkdW91cy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90cmVlLXBhbG0ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdHJlZS1waW5lLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3RyZWVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3RyZW5kaW5nLWRvd24ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdHJlbmRpbmctdXAtZG93bi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90cmVuZGluZy11cC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90cmlhbmdsZS1hbGVydC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90cmlhbmdsZS1kYXNoZWQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdHJpYW5nbGUtcmlnaHQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdHJpYW5nbGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdHJvcGh5Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3RydWNrLWVsZWN0cmljLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3RydWNrLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3R1cmtpc2gtbGlyYS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90dXJudGFibGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdHVydGxlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3R2LW1pbmltYWwtcGxheS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90di1taW5pbWFsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3R2Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3R5cGUtb3V0bGluZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy90eXBlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3VtYnJlbGxhLW9mZi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy91bWJyZWxsYS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy91bmRlcmxpbmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdW5kby0yLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3VuZG8tZG90Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3VuZG8ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdW5mb2xkLWhvcml6b250YWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdW5mb2xkLXZlcnRpY2FsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3VuaXZlcnNpdHkubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdW5ncm91cC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy91bmxpbmstMi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy91bnBsdWcubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdW5saW5rLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3VwbG9hZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy91c2IubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdXNlci1jaGVjay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy91c2VyLWNvZy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy91c2VyLWtleS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy91c2VyLWxvY2subWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdXNlci1taW51cy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy91c2VyLXBlbi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy91c2VyLXBsdXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdXNlci1yb3VuZC1jaGVjay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy91c2VyLXJvdW5kLWNvZy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy91c2VyLXJvdW5kLWtleS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy91c2VyLXJvdW5kLW1pbnVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3VzZXItcm91bmQtcGVuLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3VzZXItcm91bmQtcGx1cy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy91c2VyLXJvdW5kLXNlYXJjaC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy91c2VyLXJvdW5kLXgubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdXNlci1yb3VuZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy91c2VyLXNlYXJjaC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy91c2VyLXN0YXIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdXNlci14Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3VzZXIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdXNlcnMtcm91bmQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdXNlcnMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdXRlbnNpbHMtY3Jvc3NlZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy91dGVuc2lscy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy92YW4ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdXRpbGl0eS1wb2xlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3ZhcmlhYmxlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3ZhdWx0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3ZlY3Rvci1zcXVhcmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdmVnYW4ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdmVuZXRpYW4tbWFzay5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy92ZW51cy1hbmQtbWFycy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy92ZW51cy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy92aWJyYXRlLW9mZi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy92aWJyYXRlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3ZpZGVvLW9mZi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy92aWRlby5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy92aWRlb3RhcGUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvdmlldy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy92b2xsZXliYWxsLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3ZvaWNlbWFpbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy92b2x1bWUtMS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy92b2x1bWUtMi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy92b2x1bWUtb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3ZvbHVtZS14Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3ZvbHVtZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy92b3RlLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3dhbGxldC1jYXJkcy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy93YWxsZXQtbWluaW1hbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy93YWxsZXQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvd2FsbHBhcGVyLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3dhbmQtc3BhcmtsZXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvd2FuZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy93YXJlaG91c2UubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvd2F0Y2gubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvd2FzaGluZy1tYWNoaW5lLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3dhdmVzLWFycm93LWRvd24ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvd2F2ZXMtYXJyb3ctdXAubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvd2F2ZXMtaG9yaXpvbnRhbC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy93YXZlcy1sYWRkZXIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvd2F2ZXMtdmVydGljYWwubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvd2F5cG9pbnRzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3dlYmNhbS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy93ZWJob29rLW9mZi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy93ZWJob29rLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3dlaWdodC10aWxkZS5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy93ZWlnaHQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvd2hlYXQtb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3doZWF0Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3dob2xlLXdvcmQubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvd2lmaS1jb2cubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvd2lmaS1oaWdoLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3dpZmktbG93Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3dpZmktb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3dpZmktcGVuLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3dpZmktc3luYy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy93aWZpLXplcm8ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvd2luZC1hcnJvdy1kb3duLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3dpZmkubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvd2luZC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy93aW5lLW9mZi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy93b3JtLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3dvcmtmbG93Lm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3dpbmUubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvd3JlbmNoLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3gtbGluZS10b3AubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMveC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy96YXAtb2ZmLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3phcC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy96b2RpYWMtYXF1YXJpdXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvem9kaWFjLWFyaWVzLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3pvZGlhYy1jYW5jZXIubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvem9kaWFjLWNhcHJpY29ybi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy96b2RpYWMtZ2VtaW5pLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3pvZGlhYy1sZW8ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvem9kaWFjLWxpYnJhLm1qczoKbHVjaWRlL2Rpc3QvZXNtL2ljb25zL3pvZGlhYy1vcGhpdWNodXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvem9kaWFjLXBpc2Nlcy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy96b2RpYWMtc2NvcnBpby5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy96b2RpYWMtc2FnaXR0YXJpdXMubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvem9kaWFjLXRhdXJ1cy5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy96b2RpYWMtdmlyZ28ubWpzOgpsdWNpZGUvZGlzdC9lc20vaWNvbnMvem9vbS1pbi5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29ucy96b29tLW91dC5tanM6Cmx1Y2lkZS9kaXN0L2VzbS9pY29uc0FuZEFsaWFzZXMubWpzOgpsdWNpZGUvZGlzdC9lc20vbHVjaWRlLm1qczoKICAoKioKICAgKiBAbGljZW5zZSBsdWNpZGUgdjEuMTQuMCAtIElTQwogICAqCiAgICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgSVNDIGxpY2Vuc2UuCiAgICogU2VlIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuCiAgICopCgppYmFudG9vbHMvanNuZXh0L2liYW50b29scy5qczoKICAoKiEKICAgKiBAbGljZW5zZQogICAqIENvcHlyaWdodCBTYcWhYSBKb3ZhbmnEhwogICAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNb3ppbGxhIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDIuMCBvciB0aGUgTUlUIGxpY2Vuc2UsCiAgICogYXQgeW91ciBvcHRpb24uIFRoaXMgZmlsZSBtYXkgbm90IGJlIGNvcGllZCwgbW9kaWZpZWQsIG9yIGRpc3RyaWJ1dGVkCiAgICogZXhjZXB0IGFjY29yZGluZyB0byB0aG9zZSB0ZXJtcy4KICAgKiBTUERYLUZpbGVDb3B5cmlnaHRUZXh0OiBTYcWhYSBKb3ZhbmnEhwogICAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgb3IgTVBMLzIuMAogICAqKQogICgqKgogICAqIFZhbGlkYXRpb24sIGV4dHJhY3Rpb24gYW5kIGNyZWF0aW9uIG9mIElCQU4sIEJCQU4sIEJJQy9TV0lGVCBudW1iZXJzIHBsdXMgc29tZSBvdGhlciBoZWxwZnVsIHN0dWZmCiAgICogQHBhY2thZ2UgRG9jdW1lbnRhdGlvbgogICAqIEBhdXRob3IgU2HFoWEgSm92YW5pxIcKICAgKiBAbW9kdWxlIGliYW50b29scwogICAqIEB2ZXJzaW9uIDQuNS40CiAgICogQGxpY2Vuc2UgTUlUIG9yIE1QTC0yLjAKICAgKiBAcHJlZmVycmVkCiAgICopCiovCi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJ1bmRsZS5qcy5tYXAK" }, { "path": "index.html", "contentBase64": "PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhCiAgICAgIG5hbWU9InZpZXdwb3J0IgogICAgICBjb250ZW50PSJ1c2VyLXNjYWxhYmxlPTAsIGluaXRpYWwtc2NhbGU9MSwgbWF4aW11bS1zY2FsZT0xLCBtaW5pbXVtLXNjYWxlPTEsIHdpZHRoPWRldmljZS13aWR0aCwgaGVpZ2h0PWRldmljZS1oZWlnaHQiCiAgICAvPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+CiAgICA8bWV0YSBuYW1lPSJ0aGVtZS1jb2xvciIgY29udGVudD0iIzAwMDAwMCIgLz4KICAgIDx0aXRsZT5PbmVib3g8L3RpdGxlPgogICAgPGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2Fzc2V0YnJva2VyLmxvc3NsZXNzLm9uZS8iIGNyb3Nzb3JpZ2luPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Fzc2V0YnJva2VyLmxvc3NsZXNzLm9uZS9mb250cy9mb250cy5jc3MiPgogICAgPHN0eWxlPgogICAgICBodG1sIHsKICAgICAgICAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsKICAgICAgICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7CiAgICAgIH0KICAgICAgYm9keSB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGJhY2tncm91bmQ6ICMwMDA7CiAgICAgICAgbWFyZ2luOiAwcHg7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPG5vc2NyaXB0PgogICAgICA8cCBzdHlsZT0iY29sb3I6ICNmZmY7IHRleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luLXRvcDogMTAwcHg7Ij4KICAgICAgICBKYXZhU2NyaXB0IGlzIHJlcXVpcmVkIHRvIHJ1biB0aGUgT25lYm94IGRhc2hib2FyZC4KICAgICAgPC9wPgogICAgPC9ub3NjcmlwdD4KICA8L2JvZHk+CiAgPHNjcmlwdCBkZWZlciB0eXBlPSJtb2R1bGUiIHNyYz0iL2J1bmRsZS5qcyI+PC9zY3JpcHQ+CjwvaHRtbD4K" } ];